diff --git a/.cargo/config.toml b/.cargo/config.toml new file mode 100644 index 0000000000..ce0aa30cbe --- /dev/null +++ b/.cargo/config.toml @@ -0,0 +1,5 @@ +[alias] +t = ["nextest", "run", "--workspace"] + +[build] +rustflags = ["--cfg", "tokio_unstable"] diff --git a/.config/deny.toml b/.cargo/deny.toml similarity index 73% rename from .config/deny.toml rename to .cargo/deny.toml index 26a61084e8..3c4c8b444b 100644 --- a/.config/deny.toml +++ b/.cargo/deny.toml @@ -1,5 +1,17 @@ [licenses] -allow = ["Apache-2.0", "MIT", "MPL-2.0", "Unicode-3.0"] +allow = [ + "Apache-2.0 WITH LLVM-exception", + "Apache-2.0", + "BSD-3-Clause", + "CC0-1.0", + "CDLA-Permissive-2.0", + "ISC", + "MIT", + "MPL-2.0", + "OpenSSL", + "Unicode-3.0", + "Zlib", +] [licenses.private] ignore = true diff --git a/.config/rustfmt.toml b/.cargo/rustfmt.toml similarity index 94% rename from .config/rustfmt.toml rename to .cargo/rustfmt.toml index 85ee115daf..48e433df88 100644 --- a/.config/rustfmt.toml +++ b/.cargo/rustfmt.toml @@ -12,5 +12,4 @@ reorder_impl_items = true style_edition = "2024" use_field_init_shorthand = true use_try_shorthand = true -where_single_line = true wrap_comments = true diff --git a/.dockerignore b/.dockerignore index b91760ac52..f8e411e9bb 100644 --- a/.dockerignore +++ b/.dockerignore @@ -9,7 +9,5 @@ build_docs/** **/*Dockerfile blueprints/local .git -!gen-ts-api/node_modules -!gen-ts-api/dist/** -!gen-go-api/ .venv +target diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000000..f57d2e2c41 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,9 @@ +packages/client-*/** linguist-generated +web/packages/lex/* linguist-vendored +web/packages/node-domexception/* linguist-vendored +web/packages/formdata-polyfill/* linguist-vendored +web/packages/sfe/vendored/* linguist-vendored +website/vendored/* linguist-vendored +website/docs/** linguist-documentation +website/integrations/** linguist-documentation +website/api/** linguist-documentation diff --git a/.github/actions/cherry-pick/action.yml b/.github/actions/cherry-pick/action.yml index 334e3fc0f1..7c11a2c6e6 100644 --- a/.github/actions/cherry-pick/action.yml +++ b/.github/actions/cherry-pick/action.yml @@ -115,20 +115,13 @@ runs: shell: bash env: GITHUB_TOKEN: ${{ inputs.token }} + PR_NUMBER: ${{ steps.should_run.outputs.pr_number }} + REASON: ${{ steps.should_run.outputs.reason }} run: | set -e -o pipefail - PR_NUMBER="${{ steps.should_run.outputs.pr_number }}" - - # Get PR details - PR_DATA=$(gh api repos/${{ github.repository }}/pulls/$PR_NUMBER) - PR_TITLE=$(echo "$PR_DATA" | jq -r '.title') - PR_AUTHOR=$(echo "$PR_DATA" | jq -r '.user.login') - - echo "pr_title=$PR_TITLE" >> $GITHUB_OUTPUT - echo "pr_author=$PR_AUTHOR" >> $GITHUB_OUTPUT # Determine which labels to process - if [ "${{ steps.should_run.outputs.reason }}" = "label_added_to_merged_pr" ]; then + if [ "${REASON}" = "label_added_to_merged_pr" ]; then # Only process the specific label that was just added if [ "${{ github.event_name }}" = "issues" ]; then LABEL_NAME="${{ github.event.label.name }}" @@ -152,13 +145,13 @@ runs: shell: bash env: GITHUB_TOKEN: ${{ inputs.token }} + PR_NUMBER: '${{ steps.should_run.outputs.pr_number }}' + COMMIT_SHA: '${{ steps.should_run.outputs.merge_commit_sha }}' + PR_TITLE: ${{ github.event.pull_request.title }} + PR_AUTHOR: ${{ github.event.pull_request.user.login }} + LABELS: '${{ steps.pr_details.outputs.labels }}' run: | set -e -o pipefail - PR_NUMBER='${{ steps.should_run.outputs.pr_number }}' - COMMIT_SHA='${{ steps.should_run.outputs.merge_commit_sha }}' - PR_TITLE='${{ steps.pr_details.outputs.pr_title }}' - PR_AUTHOR='${{ steps.pr_details.outputs.pr_author }}' - LABELS='${{ steps.pr_details.outputs.labels }}' echo "Processing PR #$PR_NUMBER (reason: ${{ steps.should_run.outputs.reason }})" echo "Found backport labels: $LABELS" diff --git a/.github/actions/docker-push-variables/action.yml b/.github/actions/docker-push-variables/action.yml index 661e91c396..2b1fc9ce26 100644 --- a/.github/actions/docker-push-variables/action.yml +++ b/.github/actions/docker-push-variables/action.yml @@ -54,10 +54,6 @@ outputs: runs: using: "composite" steps: - - name: Setup authentik env - uses: ./.github/actions/setup - with: - dependencies: "python" - name: Generate config id: ev shell: bash @@ -68,4 +64,4 @@ runs: PR_HEAD_SHA: ${{ github.event.pull_request.head.sha }} REF: ${{ github.ref }} run: | - uv run python3 ${{ github.action_path }}/push_vars.py + python3 ${{ github.action_path }}/push_vars.py diff --git a/.github/actions/docker-push-variables/push_vars.py b/.github/actions/docker-push-variables/push_vars.py index c3f91f9fd8..7e3420dc6f 100644 --- a/.github/actions/docker-push-variables/push_vars.py +++ b/.github/actions/docker-push-variables/push_vars.py @@ -2,10 +2,19 @@ import os from json import dumps +from pathlib import Path from sys import exit as sysexit from time import time +from typing import Any -from authentik import authentik_version + +def authentik_version() -> str: + init = Path(__file__).parent.parent.parent.parent / "authentik" / "__init__.py" + with open(init) as f: + content = f.read() + locals: dict[str, Any] = {} + exec(content, None, locals) # nosec + return str(locals["VERSION"]) def must_or_fail(input: str | None, error: str) -> str: @@ -97,6 +106,7 @@ if os.getenv("RELEASE", "false").lower() == "true": image_build_args = [f"VERSION={os.getenv('REF')}"] else: image_build_args = [f"GIT_BUILD_HASH={sha}"] +image_build_args_str = "\n".join(image_build_args) with open(os.environ["GITHUB_OUTPUT"], "a+", encoding="utf-8") as _output: print(f"shouldPush={str(should_push).lower()}", file=_output) @@ -109,4 +119,4 @@ with open(os.environ["GITHUB_OUTPUT"], "a+", encoding="utf-8") as _output: print(f"imageMainTag={image_main_tag}", file=_output) print(f"imageMainName={image_tags[0]}", file=_output) print(f"cacheTo={cache_to}", file=_output) - print(f"imageBuildArgs={"\n".join(image_build_args)}", file=_output) + print(f"imageBuildArgs={image_build_args_str}", file=_output) diff --git a/.github/actions/setup-node/action.yml b/.github/actions/setup-node/action.yml new file mode 100644 index 0000000000..fe7985f379 --- /dev/null +++ b/.github/actions/setup-node/action.yml @@ -0,0 +1,77 @@ +name: "Setup Node.js and NPM" +description: "Sets up Node.js with a specific NPM version via Corepack" +inputs: + working-directory: + description: "Path to the working directory containing the package.json file" + required: false + default: "." + dependencies: + required: false + description: "List of dependencies to setup" + default: "monorepo,working-directory" + node-version-file: + description: "Path to file containing the Node.js version" + required: false + default: "package.json" + cache-dependency-path: + description: "Path to dependency lock file for caching" + required: false + default: "package-lock.json" + cache: + description: "Package manager to cache" + default: "npm" + registry-url: + description: "npm registry URL" + default: "https://registry.npmjs.org" + +runs: + using: "composite" + steps: + - name: Setup Node.js (Corepack bootstrap) + uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v4 + with: + node-version-file: ${{ inputs.node-version-file }} + registry-url: ${{ inputs.registry-url }} + cache: ${{ inputs.cache }} + cache-dependency-path: | + ${{ inputs.cache-dependency-path }} + ${{ inputs.working-directory }}/${{ inputs.cache-dependency-path }} + + - name: Install Corepack + working-directory: ${{ github.workspace}} + shell: bash + run: | #shell + node ./scripts/node/setup-corepack.mjs --force + corepack enable + - name: Lint Node.js and NPM versions + shell: bash + run: node ./scripts/node/lint-runtime.mjs + - name: Setup Node.js (Monorepo Root) + uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v4 + with: + node-version-file: ${{ inputs.node-version-file }} + registry-url: ${{ inputs.registry-url }} + - name: Install monorepo dependencies + if: ${{ contains(inputs.dependencies, 'monorepo') }} + shell: bash + run: | #shell + node ./scripts/node/lint-lockfile.mjs + corepack npm ci + - name: Setup Node.js (Working Directory) + if: ${{ contains(inputs.dependencies, 'working-directory') }} + uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v4 + with: + node-version-file: ${{ inputs.working-directory }}/${{ inputs.node-version-file }} + registry-url: ${{ inputs.registry-url }} + + - name: Install working directory dependencies + if: ${{ contains(inputs.dependencies, 'working-directory') }} + shell: bash + run: | # shell + corepack install + + echo "node version: $(node --version)" + echo "npm version: $(corepack npm --version)" + + node ./scripts/node/lint-lockfile.mjs ${{ inputs.working-directory }} + corepack npm ci --prefix ${{ inputs.working-directory }} diff --git a/.github/actions/setup/action.yml b/.github/actions/setup/action.yml index e57c0c7d52..c5ac75a478 100644 --- a/.github/actions/setup/action.yml +++ b/.github/actions/setup/action.yml @@ -8,71 +8,75 @@ inputs: postgresql_version: description: "Optional postgresql image tag" default: "16" + working-directory: + description: | + Optional working directory if this repo isn't in the root of the actions workspace. + When set, needs to contain a trailing slash + default: "" runs: using: "composite" steps: - - name: Install apt deps & cleanup + - name: Cleanup apt + if: ${{ contains(inputs.dependencies, 'system') || contains(inputs.dependencies, 'python') }} + shell: bash + run: sudo apt-get remove --purge man-db + - name: Install apt deps + if: ${{ contains(inputs.dependencies, 'system') || contains(inputs.dependencies, 'python') }} + uses: gerlero/apt-install@f4fa5265092af9e750549565d28c99aec7189639 + with: + packages: libpq-dev openssl libxmlsec1-dev pkg-config gettext libclang-dev libkadm5clnt-mit12 libkadm5clnt7t64-heimdal libkrb5-dev krb5-kdc krb5-user krb5-admin-server + update: true + upgrade: false + install-recommends: false + - name: Make space on disk if: ${{ contains(inputs.dependencies, 'system') || contains(inputs.dependencies, 'python') }} shell: bash run: | - sudo apt-get remove --purge man-db - sudo apt-get update - sudo apt-get install --no-install-recommends -y libpq-dev openssl libxmlsec1-dev pkg-config gettext krb5-multidev libkrb5-dev heimdal-multidev libclang-dev krb5-kdc krb5-user krb5-admin-server - sudo rm -rf /usr/local/lib/android + sudo mkdir -p /tmp/empty/ + sudo rsync -a --delete /tmp/empty/ /usr/local/lib/android/ - name: Install uv if: ${{ contains(inputs.dependencies, 'python') }} - uses: astral-sh/setup-uv@37802adc94f370d6bfd71619e3f0bf239e1f3b78 # v5 + uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v5 with: enable-cache: true - name: Setup python if: ${{ contains(inputs.dependencies, 'python') }} uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v5 with: - python-version-file: "pyproject.toml" + python-version-file: "${{ inputs.working-directory }}pyproject.toml" - name: Install Python deps if: ${{ contains(inputs.dependencies, 'python') }} shell: bash - run: uv sync --all-extras --dev --frozen + working-directory: ${{ inputs.working-directory }} + run: uv sync --all-extras --dev --locked - name: Setup rust (stable) if: ${{ contains(inputs.dependencies, 'rust') && !contains(inputs.dependencies, 'rust-nightly') }} - uses: actions-rust-lang/setup-rust-toolchain@150fca883cd4034361b621bd4e6a9d34e5143606 # v1 + uses: actions-rust-lang/setup-rust-toolchain@46268bd060767258de96ed93c1251119784f2ab6 # v1 + with: + rustflags: "" - name: Setup rust (nightly) if: ${{ contains(inputs.dependencies, 'rust-nightly') }} - uses: actions-rust-lang/setup-rust-toolchain@150fca883cd4034361b621bd4e6a9d34e5143606 # v1 + uses: actions-rust-lang/setup-rust-toolchain@46268bd060767258de96ed93c1251119784f2ab6 # v1 with: toolchain: nightly components: rustfmt + rustflags: "" - name: Setup rust dependencies if: ${{ contains(inputs.dependencies, 'rust') }} - uses: taiki-e/install-action@42721ded7ddc3cd90f687527e8602066e4e1ff3a # v2 + uses: taiki-e/install-action@ec28e287910af896fd98e04056d31fa68607e7ad # v2 with: tool: cargo-deny cargo-machete cargo-llvm-cov nextest - - name: Setup node (web) + - name: Setup node (root, web) if: ${{ contains(inputs.dependencies, 'node') }} - uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v4 + uses: ./.github/actions/setup-node with: - node-version-file: web/package.json - cache: "npm" - cache-dependency-path: web/package-lock.json - registry-url: "https://registry.npmjs.org" - - name: Setup node (root) - if: ${{ contains(inputs.dependencies, 'node') }} - uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v4 - with: - node-version-file: package.json - cache: "npm" - cache-dependency-path: package-lock.json - registry-url: "https://registry.npmjs.org" - - name: Install Node deps - if: ${{ contains(inputs.dependencies, 'node') }} - shell: bash - run: npm ci + working-directory: web - name: Setup go if: ${{ contains(inputs.dependencies, 'go') }} - uses: actions/setup-go@4b73464bb391d4059bd26b0524d20df3927bd417 # v5 + uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v5 with: - go-version-file: "go.mod" + go-version-file: "${{ inputs.working-directory }}go.mod" - name: Setup docker cache if: ${{ contains(inputs.dependencies, 'runtime') }} uses: AndreKurait/docker-cache@0fe76702a40db986d9663c24954fc14c6a6031b7 @@ -81,13 +85,15 @@ runs: - name: Setup dependencies if: ${{ contains(inputs.dependencies, 'runtime') }} shell: bash + working-directory: ${{ inputs.working-directory }} run: | export PSQL_TAG=${{ inputs.postgresql_version }} - docker compose -f .github/actions/setup/compose.yml up -d - cd web && npm ci + docker compose -f .github/actions/setup/compose.yml up -d --wait + corepack npm ci --prefix web - name: Generate config if: ${{ contains(inputs.dependencies, 'python') }} shell: uv run python {0} + working-directory: ${{ inputs.working-directory }} run: | from authentik.lib.generators import generate_id from yaml import safe_dump diff --git a/.github/actions/setup/compose.yml b/.github/actions/setup/compose.yml index fc2f65e75b..ce905a0b7e 100644 --- a/.github/actions/setup/compose.yml +++ b/.github/actions/setup/compose.yml @@ -2,14 +2,20 @@ services: postgresql: image: docker.io/library/postgres:${PSQL_TAG:-16} volumes: - - db-data:/var/lib/postgresql/data + - db-data:/var/lib/postgresql command: "-c log_statement=all" environment: POSTGRES_USER: authentik POSTGRES_PASSWORD: "EK-5jnKfjrGRm<77" POSTGRES_DB: authentik + PGDATA: /var/lib/postgresql/data/pgdata ports: - 5432:5432 + healthcheck: + test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB} -h 127.0.0.1"] + interval: 1s + timeout: 5s + retries: 60 restart: always s3: container_name: s3 diff --git a/.github/actions/test-results/action.yml b/.github/actions/test-results/action.yml index 253624b6e0..c5fb631ad6 100644 --- a/.github/actions/test-results/action.yml +++ b/.github/actions/test-results/action.yml @@ -10,12 +10,12 @@ inputs: runs: using: "composite" steps: - - uses: codecov/codecov-action@1af58845a975a7985b0beb0cbe6fbbb71a41dbad # v5 + - uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2 # v5 with: files: ${{ inputs.files }} flags: ${{ inputs.flags }} use_oidc: true - - uses: codecov/codecov-action@1af58845a975a7985b0beb0cbe6fbbb71a41dbad # v5 + - uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2 # v5 with: files: ${{ inputs.files }} flags: ${{ inputs.flags }} diff --git a/.github/codecov.yml b/.github/codecov.yml index 8db67faf6f..821178a861 100644 --- a/.github/codecov.yml +++ b/.github/codecov.yml @@ -1,3 +1,6 @@ +codecov: + notify: + wait_for_ci: true coverage: status: project: @@ -8,3 +11,6 @@ coverage: threshold: 1% comment: after_n_builds: 3 +ignore: + - packages/client-rust + - packages/client-ts diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 46697a6dc1..089f27fbd0 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -20,6 +20,8 @@ updates: prefix: "ci:" labels: - dependencies + cooldown: + default-days: 3 #endregion @@ -35,11 +37,44 @@ updates: prefix: "core:" labels: - dependencies + cooldown: + default-days: 7 + semver-major-days: 14 + semver-patch-days: 3 + exclude: + - "golang.org/x/crypto" + - "golang.org/x/net" + - "github.com/golang-jwt/jwt/*" + - "github.com/coreos/go-oidc/*" + - "github.com/go-ldap/ldap/*" #endregion #region Rust + - package-ecosystem: cargo + directory: "/" + schedule: + interval: daily + time: "04:00" + open-pull-requests-limit: 10 + commit-message: + prefix: "core:" + labels: + - dependencies + cooldown: + default-days: 7 + semver-major-days: 14 + semver-patch-days: 3 + exclude: + - aws-lc-fips-sys + - aws-lc-rs + - aws-lc-sys + - rustls + - rustls-pki-types + - rustls-platform-verifier + - rustls-webpki + - package-ecosystem: rust-toolchain directory: "/" schedule: @@ -50,6 +85,8 @@ updates: prefix: "core:" labels: - dependencies + cooldown: + default-days: 3 #endregion @@ -68,6 +105,10 @@ updates: open-pull-requests-limit: 10 commit-message: prefix: "web:" + cooldown: + default-days: 7 + semver-major-days: 14 + semver-patch-days: 3 groups: sentry: patterns: @@ -131,6 +172,10 @@ updates: open-pull-requests-limit: 10 commit-message: prefix: "core, web:" + cooldown: + default-days: 7 + semver-major-days: 14 + semver-patch-days: 3 groups: sentry: patterns: @@ -189,6 +234,10 @@ updates: prefix: "website:" labels: - dependencies + cooldown: + default-days: 7 + semver-major-days: 14 + semver-patch-days: 3 groups: docusaurus: patterns: @@ -227,6 +276,10 @@ updates: prefix: "lifecycle/aws:" labels: - dependencies + cooldown: + default-days: 7 + semver-major-days: 14 + semver-patch-days: 3 #endregion @@ -242,6 +295,18 @@ updates: prefix: "core:" labels: - dependencies + cooldown: + default-days: 7 + semver-major-days: 14 + semver-patch-days: 3 + exclude: + - "django" + - "cryptography" + - "pyjwt" + - "xmlsec" + - "lxml" + - "psycopg" + - "pyopenssl" #endregion @@ -259,10 +324,14 @@ updates: prefix: "core:" labels: - dependencies + cooldown: + default-days: 3 - package-ecosystem: docker-compose directories: + - /packages/client-go + - /packages/client-rust + - /packages/client-ts # - /scripts # Maybe - - /scripts/api - /tests/e2e schedule: interval: daily @@ -272,5 +341,7 @@ updates: prefix: "core:" labels: - dependencies + cooldown: + default-days: 3 #endregion diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 2cc26c16be..9de701ee5d 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -26,7 +26,7 @@ REPLACE ME If an API change has been made -- [ ] The API schema has been updated (`make gen-build`) +- [ ] The API schema and clients have been updated (`make gen`) If changes to the frontend have been made diff --git a/.github/workflows/_reusable-docker-build-single.yml b/.github/workflows/_reusable-docker-build-single.yml index f6de59e1b6..d718765c38 100644 --- a/.github/workflows/_reusable-docker-build-single.yml +++ b/.github/workflows/_reusable-docker-build-single.yml @@ -56,31 +56,29 @@ jobs: release: ${{ inputs.release }} - name: Login to Docker Hub if: ${{ inputs.registry_dockerhub }} - uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2 # v4.0.0 + uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v4.1.0 with: username: ${{ secrets.DOCKER_CORP_USERNAME }} password: ${{ secrets.DOCKER_CORP_PASSWORD }} - name: Login to GitHub Container Registry if: ${{ inputs.registry_ghcr }} - uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2 # v4.0.0 + uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v4.1.0 with: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} - - uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v5 + - uses: ./.github/actions/setup-node with: - node-version-file: web/package.json - cache: "npm" - cache-dependency-path: web/package-lock.json + working-directory: web + dependencies: "monorepo" - uses: actions/setup-go@4b73464bb391d4059bd26b0524d20df3927bd417 # v6 with: go-version-file: "go.mod" - name: Generate API Clients run: | make gen-client-ts - make gen-client-go - name: Build Docker Image - uses: docker/build-push-action@d08e5c354a6adb9ed34480a06d141179aa583294 # v7.0.0 + uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f # v7.1.0 id: push with: context: . diff --git a/.github/workflows/_reusable-docker-build.yml b/.github/workflows/_reusable-docker-build.yml index ad8ba1bbc9..d5938db12b 100644 --- a/.github/workflows/_reusable-docker-build.yml +++ b/.github/workflows/_reusable-docker-build.yml @@ -79,18 +79,18 @@ jobs: image-name: ${{ inputs.image_name }} - name: Login to Docker Hub if: ${{ inputs.registry_dockerhub }} - uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2 # v4.0.0 + uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v4.1.0 with: username: ${{ secrets.DOCKER_CORP_USERNAME }} password: ${{ secrets.DOCKER_CORP_PASSWORD }} - name: Login to GitHub Container Registry if: ${{ inputs.registry_ghcr }} - uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2 # v4.0.0 + uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v4.1.0 with: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} - - uses: int128/docker-manifest-create-action@8aac06098a12365ccdf99372dcfb453ccce8a0b0 # v2 + - uses: int128/docker-manifest-create-action@fa55f72001a6c74b0f4997dca65c70d334905180 # v2 id: build with: tags: ${{ matrix.tag }} diff --git a/.github/workflows/api-ts-publish.yml b/.github/workflows/api-ts-publish.yml deleted file mode 100644 index 2f34abfdd6..0000000000 --- a/.github/workflows/api-ts-publish.yml +++ /dev/null @@ -1,66 +0,0 @@ ---- -name: API - Publish Typescript client - -on: - push: - branches: [main] - paths: - - "schema.yml" - workflow_dispatch: - -permissions: - # Required for NPM OIDC trusted publisher - id-token: write - contents: read - -jobs: - build: - runs-on: ubuntu-latest - steps: - - id: generate_token - uses: actions/create-github-app-token@f8d387b68d61c58ab83c6c016672934102569859 # v2 - with: - app-id: ${{ secrets.GH_APP_ID }} - private-key: ${{ secrets.GH_APP_PRIVATE_KEY }} - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v5 - with: - token: ${{ steps.generate_token.outputs.token }} - - uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v5 - with: - node-version-file: web/package.json - registry-url: "https://registry.npmjs.org" - - name: Generate API Client - run: make gen-client-ts - - name: Publish package - working-directory: gen-ts-api/ - run: | - npm i - npm publish --tag generated - - name: Upgrade /web - working-directory: web - run: | - export VERSION=`node -e 'console.log(require("../gen-ts-api/package.json").version)'` - npm i @goauthentik/api@$VERSION - - name: Upgrade /web/packages/sfe - working-directory: web/packages/sfe - run: | - export VERSION=`node -e 'console.log(require("../gen-ts-api/package.json").version)'` - npm i @goauthentik/api@$VERSION - - uses: peter-evans/create-pull-request@c0f553fe549906ede9cf27b5156039d195d2ece0 # v7 - id: cpr - with: - token: ${{ steps.generate_token.outputs.token }} - branch: update-web-api-client - commit-message: "web: bump API Client version" - title: "web: bump API Client version" - body: "web: bump API Client version" - delete-branch: true - signoff: true - # ID from https://api.github.com/users/authentik-automation[bot] - author: authentik-automation[bot] <135050075+authentik-automation[bot]@users.noreply.github.com> - labels: dependencies - - uses: peter-evans/enable-pull-request-automerge@a660677d5469627102a1c1e11409dd063606628d # v3 - with: - token: ${{ steps.generate_token.outputs.token }} - pull-request-number: ${{ steps.cpr.outputs.pull-request-number }} - merge-method: squash diff --git a/.github/workflows/ci-api-docs.yml b/.github/workflows/ci-api-docs.yml index 4d5365834f..949ef023e5 100644 --- a/.github/workflows/ci-api-docs.yml +++ b/.github/workflows/ci-api-docs.yml @@ -22,26 +22,20 @@ jobs: - prettier-check steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v5 - - name: Install Dependencies - working-directory: website/ - run: npm ci + - uses: ./.github/actions/setup-node + with: + working-directory: website - name: Lint - working-directory: website/ - run: npm run ${{ matrix.command }} + run: corepack npm run ${{ matrix.command }} --prefix website build: runs-on: ubuntu-latest steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v5 - - uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v5 + - uses: ./.github/actions/setup-node with: - node-version-file: website/package.json - cache: "npm" - cache-dependency-path: website/package-lock.json - - working-directory: website/ - name: Install Dependencies - run: npm ci - - uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v4 + working-directory: website + - uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v4 with: path: | ${{ github.workspace }}/website/api/.docusaurus @@ -54,8 +48,8 @@ jobs: working-directory: website env: NODE_ENV: production - run: npm run build -w api - - uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v4 + run: corepack npm run build -w api + - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v4 with: name: api-docs path: website/api/build @@ -71,11 +65,9 @@ jobs: with: name: api-docs path: website/api/build - - uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v5 + - uses: ./.github/actions/setup-node with: - node-version-file: website/package.json - cache: "npm" - cache-dependency-path: website/package-lock.json + working-directory: website - name: Deploy Netlify (Production) working-directory: website/api if: github.event_name == 'push' && github.ref == 'refs/heads/main' diff --git a/.github/workflows/ci-aws-cfn.yml b/.github/workflows/ci-aws-cfn.yml index 5d8c655908..8696655d73 100644 --- a/.github/workflows/ci-aws-cfn.yml +++ b/.github/workflows/ci-aws-cfn.yml @@ -24,14 +24,9 @@ jobs: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v5 - name: Setup authentik env uses: ./.github/actions/setup - - uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v5 + - uses: ./.github/actions/setup-node with: - node-version-file: lifecycle/aws/package.json - cache: "npm" - cache-dependency-path: lifecycle/aws/package-lock.json - - working-directory: lifecycle/aws/ - run: | - npm ci + working-directory: lifecycle/aws - name: Check changes have been applied run: | uv run make aws-cfn diff --git a/.github/workflows/ci-docs.yml b/.github/workflows/ci-docs.yml index 83cb20e356..425473d33b 100644 --- a/.github/workflows/ci-docs.yml +++ b/.github/workflows/ci-docs.yml @@ -24,46 +24,34 @@ jobs: - prettier-check steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v5 - - name: Install dependencies - working-directory: website/ - run: npm ci + - uses: ./.github/actions/setup-node + with: + working-directory: website - name: Lint - working-directory: website/ - run: npm run ${{ matrix.command }} + run: corepack npm run ${{ matrix.command }} --prefix website build-docs: runs-on: ubuntu-latest env: NODE_ENV: production steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v5 - - uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v5 + - uses: ./.github/actions/setup-node + name: Setup Node.js with: - node-version-file: website/package.json - cache: "npm" - cache-dependency-path: website/package-lock.json - - working-directory: website/ - name: Install Dependencies - run: npm ci + working-directory: website - name: Build Documentation via Docusaurus - working-directory: website/ - run: npm run build + run: corepack npm run build --prefix website build-integrations: runs-on: ubuntu-latest env: NODE_ENV: production steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v5 - - uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v5 + - uses: ./.github/actions/setup-node with: - node-version-file: website/package.json - cache: "npm" - cache-dependency-path: website/package-lock.json - - working-directory: website/ - name: Install Dependencies - run: npm ci + working-directory: website - name: Build Integrations via Docusaurus - working-directory: website/ - run: npm run build -w integrations + run: corepack npm run build -w integrations --prefix website build-container: runs-on: ubuntu-latest permissions: @@ -89,14 +77,14 @@ jobs: image-name: ghcr.io/goauthentik/dev-docs - name: Login to Container Registry if: ${{ steps.ev.outputs.shouldPush == 'true' }} - uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2 # v4.0.0 + uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v4.1.0 with: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} - name: Build Docker Image id: push - uses: docker/build-push-action@d08e5c354a6adb9ed34480a06d141179aa583294 # v7.0.0 + uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f # v7.1.0 with: tags: ${{ steps.ev.outputs.imageTags }} file: website/Dockerfile diff --git a/.github/workflows/ci-main-daily.yml b/.github/workflows/ci-main-daily.yml index cab8db5f56..0ad124293b 100644 --- a/.github/workflows/ci-main-daily.yml +++ b/.github/workflows/ci-main-daily.yml @@ -20,13 +20,19 @@ jobs: version: - docs - version-2025-12 - - version-2025-10 + - version-2026-2 steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v5 - run: | + set -euo pipefail current="$(pwd)" dir="/tmp/authentik/${{ matrix.version }}" + # 2025.12 still serves the legacy docker-compose filename; newer sites use compose.yml. + compose_path="compose.yml" + if [ "${{ matrix.version }}" = "version-2025-12" ]; then + compose_path="docker-compose.yml" + fi mkdir -p "${dir}/lifecycle/container" cd "${dir}" - wget "https://${{ matrix.version }}.goauthentik.io/docker-compose.yml" -O "${dir}/lifecycle/container/compose.yml" + wget "https://${{ matrix.version }}.goauthentik.io/${compose_path}" -O "${dir}/lifecycle/container/compose.yml" "${current}/scripts/test_docker.sh" diff --git a/.github/workflows/ci-main.yml b/.github/workflows/ci-main.yml index 1c2ff1bf65..60ea365cc8 100644 --- a/.github/workflows/ci-main.yml +++ b/.github/workflows/ci-main.yml @@ -16,7 +16,6 @@ env: POSTGRES_DB: authentik POSTGRES_USER: authentik POSTGRES_PASSWORD: "EK-5jnKfjrGRm<77" - RUSTFLAGS: "-Dwarnings" permissions: # Needed for checkout @@ -59,16 +58,22 @@ jobs: dependencies: ${{ matrix.deps }} - name: run job run: make ci-lint-${{ matrix.job }} - test-gen-build: + test-gen: runs-on: ubuntu-latest steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v5 + with: + ref: ${{ github.event.pull_request.head.sha }} - name: Setup authentik env uses: ./.github/actions/setup + with: + dependencies: "system,python,go,node,runtime,rust-nightly" - name: generate schema run: make migrate gen-build + - name: generate API clients + run: make gen-clients - name: ensure schema is up-to-date - run: git diff --exit-code -- schema.yml blueprints/schema.json + run: git diff --exit-code -- schema.yml blueprints/schema.json packages/client-go packages/client-rust packages/client-ts test-migrations: runs-on: ubuntu-latest steps: @@ -104,8 +109,13 @@ jobs: - name: checkout stable run: | set -e -o pipefail + cp -R .github .. cp -R scripts .. + + mkdir -p ../packages + cp -R packages/logger-js ../packages/logger-js + # Previous stable tag prev_stable=$(git tag --sort=version:refname | grep '^version/' | grep -vE -- '-rc[0-9]+$' | tail -n1) # Current version family based on @@ -113,16 +123,22 @@ jobs: if [[ -n $current_version_family ]]; then prev_stable="version/${current_version_family}" fi + echo "::notice::Checking out ${prev_stable} as stable version..." git checkout ${prev_stable} - rm -rf .github/ scripts/ + + rm -rf .github/ scripts/ packages/logger-js/ mv ../.github ../scripts . + mv ../packages/logger-js ./packages/ - name: Setup authentik env (stable) uses: ./.github/actions/setup with: postgresql_version: ${{ matrix.psql }} - name: run migrations to stable - run: uv run python -m lifecycle.migrate + run: | + docker ps + docker logs setup-postgresql-1 + uv run python -m lifecycle.migrate - name: checkout current code run: | set -x @@ -191,6 +207,7 @@ jobs: - name: run integration run: | uv run coverage run manage.py test tests/integration + uv run coverage combine uv run coverage xml - uses: ./.github/actions/test-results if: ${{ always() }} @@ -206,47 +223,63 @@ jobs: job: - name: proxy glob: tests/e2e/test_provider_proxy* + profiles: selenium - name: oauth glob: tests/e2e/test_provider_oauth2* tests/e2e/test_source_oauth* + profiles: selenium - name: oauth-oidc glob: tests/e2e/test_provider_oidc* + profiles: selenium - name: saml glob: tests/e2e/test_provider_saml* tests/e2e/test_source_saml* + profiles: selenium - name: ldap glob: tests/e2e/test_provider_ldap* tests/e2e/test_source_ldap* + - name: rac + glob: tests/e2e/test_provider_rac* + profiles: selenium - name: ws-fed glob: tests/e2e/test_provider_ws_fed* + profiles: selenium - name: radius glob: tests/e2e/test_provider_radius* - name: scim glob: tests/e2e/test_source_scim* - name: flows glob: tests/e2e/test_flows* + profiles: selenium - name: endpoints glob: tests/e2e/test_endpoints_* + profiles: selenium steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v5 - name: Setup authentik env uses: ./.github/actions/setup - - name: Setup e2e env (chrome, etc) + - name: Setup e2e env + env: + COMPOSE_PROFILES: ${{ matrix.job.profiles }} run: | docker compose -f tests/e2e/compose.yml up -d --quiet-pull + - uses: ./.github/actions/setup-node - id: cache-web - uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v4 + uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v4 + if: contains(matrix.job.profiles, 'selenium') with: path: web/dist key: ${{ runner.os }}-web-${{ hashFiles('web/package-lock.json', 'package-lock.json', 'web/src/**', 'web/packages/sfe/src/**') }}-b - name: prepare web ui - if: steps.cache-web.outputs.cache-hit != 'true' + if: steps.cache-web.outputs.cache-hit != 'true' && contains(matrix.job.profiles, 'selenium') working-directory: web + env: + NODE_ENV: "production" run: | - npm ci - make -C .. gen-client-ts - npm run build - npm run build:sfe + corepack npm ci + corepack npm run build + corepack npm run build:sfe - name: run e2e run: | uv run coverage run manage.py test ${{ matrix.job.glob }} + uv run coverage combine uv run coverage xml - uses: ./.github/actions/test-results if: ${{ always() }} @@ -260,43 +293,54 @@ jobs: fail-fast: false matrix: job: - - name: basic - glob: tests/openid_conformance/test_basic.py - - name: implicit - glob: tests/openid_conformance/test_implicit.py + - name: oidc_basic + glob: tests/openid_conformance/test_oidc_basic.py + - name: oidc_implicit + glob: tests/openid_conformance/test_oidc_implicit.py + - name: oidc_rp-initiated + glob: tests/openid_conformance/test_oidc_rp_initiated.py + - name: oidc_frontchannel + glob: tests/openid_conformance/test_oidc_frontchannel.py + - name: oidc_backchannel + glob: tests/openid_conformance/test_oidc_backchannel.py + - name: ssf_transmitter + glob: tests/openid_conformance/test_ssf_transmitter.py steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v5 - name: Setup authentik env uses: ./.github/actions/setup - name: Setup e2e env (chrome, etc) + env: + COMPOSE_PROFILES: selenium run: | docker compose -f tests/e2e/compose.yml up -d --quiet-pull - name: Setup conformance suite run: | docker compose -f tests/openid_conformance/compose.yml up -d --quiet-pull - id: cache-web - uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v4 + uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v4 with: path: web/dist key: ${{ runner.os }}-web-${{ hashFiles('web/package-lock.json', 'web/src/**', 'web/packages/sfe/src/**') }}-b - name: prepare web ui if: steps.cache-web.outputs.cache-hit != 'true' - working-directory: web + env: + NODE_ENV: "production" run: | - npm ci - make -C .. gen-client-ts - npm run build - npm run build:sfe + corepack npm ci --prefix web + corepack npm run build --prefix web + corepack npm run build:sfe --prefix web - name: run conformance run: | uv run coverage run manage.py test ${{ matrix.job.glob }} + uv run coverage combine uv run coverage xml - uses: ./.github/actions/test-results if: ${{ always() }} with: flags: conformance - if: ${{ !cancelled() }} - uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0 + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: name: conformance-certification-${{ matrix.job.name }} path: tests/openid_conformance/exports/ @@ -308,7 +352,7 @@ jobs: - name: Setup authentik env uses: ./.github/actions/setup with: - dependencies: rust + dependencies: rust,runtime - name: run tests run: | cargo llvm-cov --no-report nextest --workspace @@ -319,7 +363,7 @@ jobs: files: target/llvm-cov-target/rust.json flags: rust - if: ${{ !cancelled() }} - uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0 + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: name: test-rust path: target/llvm-cov-target/rust.json @@ -327,7 +371,7 @@ jobs: if: always() needs: - lint - - test-gen-build + - test-gen - test-migrations - test-migrations-from-stable - test-unittest diff --git a/.github/workflows/ci-outpost.yml b/.github/workflows/ci-outpost.yml index c0eca9c44d..59c03ec860 100644 --- a/.github/workflows/ci-outpost.yml +++ b/.github/workflows/ci-outpost.yml @@ -22,7 +22,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v5 - - uses: actions/setup-go@4b73464bb391d4059bd26b0524d20df3927bd417 # v6 + - uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6 with: go-version-file: "go.mod" - name: Prepare and generate API @@ -31,8 +31,6 @@ jobs: mkdir -p web/dist mkdir -p website/help touch web/dist/test website/help/test - - name: Generate API - run: make gen-client-go - name: golangci-lint uses: golangci/golangci-lint-action@1e7e51e771db61008b38414a730f564565cf7c20 # v8 with: @@ -43,13 +41,11 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v5 - - uses: actions/setup-go@4b73464bb391d4059bd26b0524d20df3927bd417 # v6 + - uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6 with: go-version-file: "go.mod" - name: Setup authentik env uses: ./.github/actions/setup - - name: Generate API - run: make gen-client-go - name: prepare database run: | uv run make migrate @@ -102,16 +98,14 @@ jobs: image-name: ghcr.io/goauthentik/dev-${{ matrix.type }} - name: Login to Container Registry if: ${{ steps.ev.outputs.shouldPush == 'true' }} - uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2 # v4.0.0 + uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v4.1.0 with: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} - - name: Generate API - run: make gen-client-go - name: Build Docker Image id: push - uses: docker/build-push-action@d08e5c354a6adb9ed34480a06d141179aa583294 # v7.0.0 + uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f # v7.1.0 with: tags: ${{ steps.ev.outputs.imageTags }} file: lifecycle/container/${{ matrix.type }}.Dockerfile @@ -148,21 +142,14 @@ jobs: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v5 with: ref: ${{ github.event.pull_request.head.sha }} - - uses: actions/setup-go@4b73464bb391d4059bd26b0524d20df3927bd417 # v6 + - uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6 with: go-version-file: "go.mod" - - uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v5 + - uses: ./.github/actions/setup-node with: - node-version-file: web/package.json - cache: "npm" - cache-dependency-path: web/package-lock.json - - name: Generate API - run: make gen-client-go + working-directory: web - name: Build web - working-directory: web/ - run: | - npm ci - npm run build-proxy + run: corepack npm run build-proxy --prefix web - name: Build outpost run: | set -x diff --git a/.github/workflows/ci-web.yml b/.github/workflows/ci-web.yml index 5cee6ea2a6..6d111fce63 100644 --- a/.github/workflows/ci-web.yml +++ b/.github/workflows/ci-web.yml @@ -15,52 +15,34 @@ on: jobs: lint: runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - command: - - lint - - lint:lockfile - - tsc - - prettier-check - project: - - web - include: - - command: tsc - project: web - - command: lit-analyse - project: web + timeout-minutes: 15 steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v5 - - uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v5 + - uses: ./.github/actions/setup-node with: - node-version-file: ${{ matrix.project }}/package.json - cache: "npm" - cache-dependency-path: ${{ matrix.project }}/package-lock.json - - working-directory: ${{ matrix.project }}/ - run: | - npm ci - - name: Generate API - run: make gen-client-ts + working-directory: web - name: Lint - working-directory: ${{ matrix.project }}/ - run: npm run ${{ matrix.command }} + run: corepack npm run lint-check --prefix web + - name: Check types + run: corepack npm run tsc --prefix web + - name: Check formatting + run: corepack npm run prettier-check --prefix web + - name: Lit analyse + run: corepack npm run lit-analyse --prefix web + build: runs-on: ubuntu-latest + timeout-minutes: 15 steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v5 - - uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v5 + - uses: ./.github/actions/setup-node with: - node-version-file: web/package.json - cache: "npm" - cache-dependency-path: web/package-lock.json - - working-directory: web/ - run: npm ci - - name: Generate API - run: make gen-client-ts + working-directory: web - name: build + env: + NODE_ENV: "production" working-directory: web/ - run: npm run build + run: corepack npm run build ci-web-mark: if: always() needs: @@ -75,17 +57,12 @@ jobs: needs: - ci-web-mark runs-on: ubuntu-latest + timeout-minutes: 30 steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v5 - - uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v5 + - uses: ./.github/actions/setup-node with: - node-version-file: web/package.json - cache: "npm" - cache-dependency-path: web/package-lock.json - - working-directory: web/ - run: npm ci - - name: Generate API - run: make gen-client-ts + working-directory: web - name: test working-directory: web/ - run: npm run test || exit 0 + run: corepack npm run test || exit 0 diff --git a/.github/workflows/gen-image-compress.yml b/.github/workflows/gen-image-compress.yml index 3dc48e75cb..6a888bd0a9 100644 --- a/.github/workflows/gen-image-compress.yml +++ b/.github/workflows/gen-image-compress.yml @@ -29,20 +29,20 @@ jobs: github.event.pull_request.head.repo.full_name == github.repository) steps: - id: generate_token - uses: actions/create-github-app-token@f8d387b68d61c58ab83c6c016672934102569859 # v2 + uses: actions/create-github-app-token@1b10c78c7865c340bc4f6099eb2f838309f1e8c3 # v2 with: app-id: ${{ secrets.GH_APP_ID }} - private-key: ${{ secrets.GH_APP_PRIVATE_KEY }} + private-key: ${{ secrets.GH_APP_PRIV_KEY }} - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v5 with: token: ${{ steps.generate_token.outputs.token }} - name: Compress images id: compress - uses: calibreapp/image-actions@03c976c29803442fc4040a9de5509669e7759b81 # main + uses: calibreapp/image-actions@e2cc8db5d49c849e00844dfebf01438318e96fa2 # main with: GITHUB_TOKEN: ${{ steps.generate_token.outputs.token }} compressOnly: ${{ github.event_name != 'pull_request' }} - - uses: peter-evans/create-pull-request@c0f553fe549906ede9cf27b5156039d195d2ece0 # v7 + - uses: peter-evans/create-pull-request@5f6978faf089d4d20b00c7766989d076bb2fc7f1 # v7 if: "${{ github.event_name != 'pull_request' && steps.compress.outputs.markdown != '' }}" id: cpr with: diff --git a/.github/workflows/gen-update-webauthn-mds.yml b/.github/workflows/gen-update-webauthn-mds.yml index 9d65df39b5..6f937ff72e 100644 --- a/.github/workflows/gen-update-webauthn-mds.yml +++ b/.github/workflows/gen-update-webauthn-mds.yml @@ -16,17 +16,17 @@ jobs: runs-on: ubuntu-latest steps: - id: generate_token - uses: actions/create-github-app-token@f8d387b68d61c58ab83c6c016672934102569859 # v2 + uses: actions/create-github-app-token@1b10c78c7865c340bc4f6099eb2f838309f1e8c3 # v2 with: app-id: ${{ secrets.GH_APP_ID }} - private-key: ${{ secrets.GH_APP_PRIVATE_KEY }} + private-key: ${{ secrets.GH_APP_PRIV_KEY }} - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v5 with: token: ${{ steps.generate_token.outputs.token }} - name: Setup authentik env uses: ./.github/actions/setup - run: uv run ak update_webauthn_mds - - uses: peter-evans/create-pull-request@c0f553fe549906ede9cf27b5156039d195d2ece0 # v7 + - uses: peter-evans/create-pull-request@5f6978faf089d4d20b00c7766989d076bb2fc7f1 # v7 id: cpr with: token: ${{ steps.generate_token.outputs.token }} diff --git a/.github/workflows/gh-cherry-pick.yml b/.github/workflows/gh-cherry-pick.yml index 4bae20d786..6f1af0bf6d 100644 --- a/.github/workflows/gh-cherry-pick.yml +++ b/.github/workflows/gh-cherry-pick.yml @@ -10,11 +10,11 @@ jobs: steps: - id: app-token name: Generate app token - uses: actions/create-github-app-token@f8d387b68d61c58ab83c6c016672934102569859 # v2 + uses: actions/create-github-app-token@1b10c78c7865c340bc4f6099eb2f838309f1e8c3 # v2 if: ${{ env.GH_APP_ID != '' }} with: app-id: ${{ secrets.GH_APP_ID }} - private-key: ${{ secrets.GH_APP_PRIVATE_KEY }} + private-key: ${{ secrets.GH_APP_PRIV_KEY }} env: GH_APP_ID: ${{ secrets.GH_APP_ID }} - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v5 diff --git a/.github/workflows/gh-ghcr-retention.yml b/.github/workflows/gh-ghcr-retention.yml index 9807d22ccb..687afab607 100644 --- a/.github/workflows/gh-ghcr-retention.yml +++ b/.github/workflows/gh-ghcr-retention.yml @@ -16,10 +16,10 @@ jobs: runs-on: ubuntu-latest steps: - id: generate_token - uses: actions/create-github-app-token@f8d387b68d61c58ab83c6c016672934102569859 # v2 + uses: actions/create-github-app-token@1b10c78c7865c340bc4f6099eb2f838309f1e8c3 # v2 with: app-id: ${{ secrets.GH_APP_ID }} - private-key: ${{ secrets.GH_APP_PRIVATE_KEY }} + private-key: ${{ secrets.GH_APP_PRIV_KEY }} - name: Delete 'dev' containers older than a week uses: snok/container-retention-policy@3b0972b2276b171b212f8c4efbca59ebba26eceb # v3.0.1 with: diff --git a/.github/workflows/packages-npm-publish.yml b/.github/workflows/packages-npm-publish.yml index 96dec932e4..5f97c5b465 100644 --- a/.github/workflows/packages-npm-publish.yml +++ b/.github/workflows/packages-npm-publish.yml @@ -35,22 +35,19 @@ jobs: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v5 with: fetch-depth: 2 - - uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v5 + - uses: ./.github/actions/setup-node with: - node-version-file: ${{ matrix.package }}/package.json - registry-url: "https://registry.npmjs.org" + working-directory: ${{ matrix.package }} - name: Get changed files id: changed-files - uses: tj-actions/changed-files@22103cc46bda19c2b464ffe86db46df6922fd323 # 24d32ffd492484c1d75e0c0b894501ddb9d30d62 + uses: tj-actions/changed-files@9426d40962ed5378910ee2e21d5f8c6fcbf2dd96 # 24d32ffd492484c1d75e0c0b894501ddb9d30d62 with: files: | ${{ matrix.package }}/package.json - - name: Install Dependencies - run: npm ci - name: Publish package if: steps.changed-files.outputs.any_changed == 'true' working-directory: ${{ matrix.package }} run: | - npm ci - npm run build - npm publish + corepack npm ci + corepack npm run build + corepack npm publish diff --git a/.github/workflows/qa-codeql.yml b/.github/workflows/qa-codeql.yml index 660375840e..3534b4c82a 100644 --- a/.github/workflows/qa-codeql.yml +++ b/.github/workflows/qa-codeql.yml @@ -28,10 +28,10 @@ jobs: - name: Setup authentik env uses: ./.github/actions/setup - name: Initialize CodeQL - uses: github/codeql-action/init@v4 + uses: github/codeql-action/init@v4.35.4 with: languages: ${{ matrix.language }} - name: Autobuild - uses: github/codeql-action/autobuild@v4 + uses: github/codeql-action/autobuild@v4.35.4 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v4 + uses: github/codeql-action/analyze@v4.35.4 diff --git a/.github/workflows/release-branch-off.yml b/.github/workflows/release-branch-off.yml index a83fd60210..9a6601b20f 100644 --- a/.github/workflows/release-branch-off.yml +++ b/.github/workflows/release-branch-off.yml @@ -5,7 +5,7 @@ on: workflow_dispatch: inputs: next_version: - description: Next major version (for example, if releasing 2042.2, this is 2042.4) + description: Next version (for example, if you're currently releasing 2026.5, then enter 2026.8) required: true type: string @@ -29,10 +29,10 @@ jobs: steps: - id: app-token name: Generate app token - uses: actions/create-github-app-token@f8d387b68d61c58ab83c6c016672934102569859 # v2 + uses: actions/create-github-app-token@1b10c78c7865c340bc4f6099eb2f838309f1e8c3 # v2 with: app-id: ${{ secrets.GH_APP_ID }} - private-key: ${{ secrets.GH_APP_PRIVATE_KEY }} + private-key: ${{ secrets.GH_APP_PRIV_KEY }} - name: Checkout main uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v5 with: @@ -57,10 +57,10 @@ jobs: runs-on: ubuntu-latest steps: - id: generate_token - uses: actions/create-github-app-token@f8d387b68d61c58ab83c6c016672934102569859 # v2 + uses: actions/create-github-app-token@1b10c78c7865c340bc4f6099eb2f838309f1e8c3 # v2 with: app-id: ${{ secrets.GH_APP_ID }} - private-key: ${{ secrets.GH_APP_PRIVATE_KEY }} + private-key: ${{ secrets.GH_APP_PRIV_KEY }} - name: Checkout main uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v5 with: @@ -68,12 +68,16 @@ jobs: token: ${{ steps.generate_token.outputs.token }} - name: Setup authentik env uses: ./.github/actions/setup + with: + dependencies: "system,python,go,node,runtime,rust-nightly" - name: Run migrations run: make migrate - name: Bump version run: "make bump version=${{ inputs.next_version }}.0-rc1" + - name: Re-generate API Clients + run: make gen - name: Create pull request - uses: peter-evans/create-pull-request@c0f553fe549906ede9cf27b5156039d195d2ece0 # v7 + uses: peter-evans/create-pull-request@5f6978faf089d4d20b00c7766989d076bb2fc7f1 # v7 with: token: ${{ steps.generate_token.outputs.token }} branch: release-bump-${{ inputs.next_version }} diff --git a/.github/workflows/release-publish.yml b/.github/workflows/release-publish.yml index c615628ee7..fb72ef6fb7 100644 --- a/.github/workflows/release-publish.yml +++ b/.github/workflows/release-publish.yml @@ -44,14 +44,14 @@ jobs: with: image-name: ghcr.io/goauthentik/docs - name: Login to GitHub Container Registry - uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2 # v4.0.0 + uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v4.1.0 with: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} - name: Build Docker Image id: push - uses: docker/build-push-action@d08e5c354a6adb9ed34480a06d141179aa583294 # v7.0.0 + uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f # v7.1.0 with: tags: ${{ steps.ev.outputs.imageTags }} file: website/Dockerfile @@ -84,14 +84,12 @@ jobs: - rac steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v5 - - uses: actions/setup-go@4b73464bb391d4059bd26b0524d20df3927bd417 # v6 + - uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6 with: go-version-file: "go.mod" - - uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v5 + - uses: ./.github/actions/setup-node with: - node-version-file: web/package.json - cache: "npm" - cache-dependency-path: web/package-lock.json + working-directory: web - name: Set up QEMU uses: docker/setup-qemu-action@ce360397dd3f832beb865e1373c09c0e9f86d70a # v4.0.0 - name: Set up Docker Buildx @@ -103,23 +101,19 @@ jobs: DOCKER_USERNAME: ${{ secrets.DOCKER_CORP_USERNAME }} with: image-name: ghcr.io/goauthentik/${{ matrix.type }},authentik/${{ matrix.type }} - - name: Generate API Clients - run: | - make gen-client-ts - make gen-client-go - name: Docker Login Registry - uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2 # v4.0.0 + uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v4.1.0 with: username: ${{ secrets.DOCKER_CORP_USERNAME }} password: ${{ secrets.DOCKER_CORP_PASSWORD }} - name: Login to GitHub Container Registry - uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2 # v4.0.0 + uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v4.1.0 with: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} - name: Build Docker Image - uses: docker/build-push-action@d08e5c354a6adb9ed34480a06d141179aa583294 # v7.0.0 + uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f # v7.1.0 id: push with: push: true @@ -152,22 +146,12 @@ jobs: goarch: [amd64, arm64] steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v5 - - uses: actions/setup-go@4b73464bb391d4059bd26b0524d20df3927bd417 # v6 + - uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6 with: go-version-file: "go.mod" - - uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v5 + - uses: ./.github/actions/setup-node with: - node-version-file: web/package.json - cache: "npm" - cache-dependency-path: web/package-lock.json - - name: Install web dependencies - working-directory: web/ - run: | - npm ci - - name: Generate API Clients - run: | - make gen-client-ts - make gen-client-go + working-directory: web - name: Build web working-directory: web/ run: | @@ -199,7 +183,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v5 - - uses: aws-actions/configure-aws-credentials@8df5847569e6427dd6c4fb1cf565c83acfa8afa7 # v6.0.0 + - uses: aws-actions/configure-aws-credentials@d979d5b3a71173a29b74b5b88418bfda9437d885 # v6.1.1 with: role-to-assume: "arn:aws:iam::016170277896:role/github_goauthentik_authentik" aws-region: ${{ env.AWS_REGION }} @@ -244,7 +228,7 @@ jobs: container=$(docker container create ${{ steps.ev.outputs.imageMainName }}) docker cp ${container}:web/ . - name: Create a Sentry.io release - uses: getsentry/action-release@dab6548b3c03c4717878099e43782cf5be654289 # v3 + uses: getsentry/action-release@5657c9e888b4e2cc85f4d29143ea4131fde4a73a # v3 continue-on-error: true env: SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} diff --git a/.github/workflows/release-tag.yml b/.github/workflows/release-tag.yml index d1e191c637..3adb29de5c 100644 --- a/.github/workflows/release-tag.yml +++ b/.github/workflows/release-tag.yml @@ -67,10 +67,10 @@ jobs: steps: - id: app-token name: Generate app token - uses: actions/create-github-app-token@f8d387b68d61c58ab83c6c016672934102569859 # v2 + uses: actions/create-github-app-token@1b10c78c7865c340bc4f6099eb2f838309f1e8c3 # v2 with: app-id: ${{ secrets.GH_APP_ID }} - private-key: ${{ secrets.GH_APP_PRIVATE_KEY }} + private-key: ${{ secrets.GH_APP_PRIV_KEY }} - id: get-user-id name: Get GitHub app user ID run: echo "user-id=$(gh api "/users/${{ steps.app-token.outputs.app-slug }}[bot]" --jq .id)" >> "$GITHUB_OUTPUT" @@ -82,10 +82,14 @@ jobs: token: "${{ steps.app-token.outputs.token }}" - name: Setup authentik env uses: ./.github/actions/setup + with: + dependencies: "system,python,go,node,runtime,rust-nightly" - name: Run migrations run: make migrate - name: Bump version run: "make bump version=${{ inputs.version }}" + - name: Re-generate API Clients + run: make gen - name: Commit and push run: | # ID from https://api.github.com/users/authentik-automation[bot] @@ -96,7 +100,7 @@ jobs: git tag "version/${{ inputs.version }}" HEAD -m "version/${{ inputs.version }}" git push --follow-tags - name: Create Release - uses: softprops/action-gh-release@153bb8e04406b158c6c84fc1615b65b24149a1fe # v2.6.1 + uses: softprops/action-gh-release@b4309332981a82ec1c5618f44dd2e27cc8bfbfda # v3.0.0 with: token: "${{ steps.app-token.outputs.token }}" tag_name: "version/${{ inputs.version }}" @@ -115,10 +119,10 @@ jobs: steps: - id: app-token name: Generate app token - uses: actions/create-github-app-token@f8d387b68d61c58ab83c6c016672934102569859 # v2 + uses: actions/create-github-app-token@1b10c78c7865c340bc4f6099eb2f838309f1e8c3 # v2 with: app-id: ${{ secrets.GH_APP_ID }} - private-key: ${{ secrets.GH_APP_PRIVATE_KEY }} + private-key: ${{ secrets.GH_APP_PRIV_KEY }} repositories: helm - id: get-user-id name: Get GitHub app user ID @@ -137,7 +141,7 @@ jobs: sed -E -i 's/[0-9]{4}\.[0-9]{1,2}\.[0-9]+$/${{ inputs.version }}/' charts/authentik/Chart.yaml ./scripts/helm-docs.sh - name: Create pull request - uses: peter-evans/create-pull-request@c0f553fe549906ede9cf27b5156039d195d2ece0 # v7 + uses: peter-evans/create-pull-request@5f6978faf089d4d20b00c7766989d076bb2fc7f1 # v7 with: token: "${{ steps.app-token.outputs.token }}" branch: bump-${{ inputs.version }} @@ -157,10 +161,10 @@ jobs: steps: - id: app-token name: Generate app token - uses: actions/create-github-app-token@f8d387b68d61c58ab83c6c016672934102569859 # v2 + uses: actions/create-github-app-token@1b10c78c7865c340bc4f6099eb2f838309f1e8c3 # v2 with: app-id: ${{ secrets.GH_APP_ID }} - private-key: ${{ secrets.GH_APP_PRIVATE_KEY }} + private-key: ${{ secrets.GH_APP_PRIV_KEY }} repositories: version - id: get-user-id name: Get GitHub app user ID @@ -196,7 +200,7 @@ jobs: '.stable.version = $version | .stable.changelog = $changelog | .stable.changelog_url = $changelog_url | .stable.reason = $reason' version.json > version.new.json mv version.new.json version.json - name: Create pull request - uses: peter-evans/create-pull-request@c0f553fe549906ede9cf27b5156039d195d2ece0 # v7 + uses: peter-evans/create-pull-request@5f6978faf089d4d20b00c7766989d076bb2fc7f1 # v7 with: token: "${{ steps.app-token.outputs.token }}" branch: bump-${{ inputs.version }} diff --git a/.github/workflows/repo-stale.yml b/.github/workflows/repo-stale.yml index 036baaa989..334db17a2d 100644 --- a/.github/workflows/repo-stale.yml +++ b/.github/workflows/repo-stale.yml @@ -15,10 +15,10 @@ jobs: runs-on: ubuntu-latest steps: - id: generate_token - uses: actions/create-github-app-token@f8d387b68d61c58ab83c6c016672934102569859 # v2 + uses: actions/create-github-app-token@1b10c78c7865c340bc4f6099eb2f838309f1e8c3 # v2 with: app-id: ${{ secrets.GH_APP_ID }} - private-key: ${{ secrets.GH_APP_PRIVATE_KEY }} + private-key: ${{ secrets.GH_APP_PRIV_KEY }} - uses: actions/stale@b5d41d4e1d5dceea10e7104786b73624c18a190f # v10 with: repo-token: ${{ steps.generate_token.outputs.token }} @@ -27,8 +27,6 @@ jobs: exempt-issue-labels: pinned,security,pr_wanted,enhancement,bug/confirmed,enhancement/confirmed,question,status/reviewing stale-issue-label: status/stale stale-issue-message: > - This issue has been automatically marked as stale because it has not had - recent activity. It will be closed if no further activity occurs. Thank you - for your contributions. + This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions. # Don't stale PRs, so only apply to PRs with a non-existent label only-pr-labels: foo diff --git a/.github/workflows/translation-extract-compile.yml b/.github/workflows/translation-extract-compile.yml index 84f63a96e3..375da6a363 100644 --- a/.github/workflows/translation-extract-compile.yml +++ b/.github/workflows/translation-extract-compile.yml @@ -21,10 +21,10 @@ jobs: steps: - id: generate_token if: ${{ github.event_name != 'pull_request' }} - uses: actions/create-github-app-token@f8d387b68d61c58ab83c6c016672934102569859 # v2 + uses: actions/create-github-app-token@1b10c78c7865c340bc4f6099eb2f838309f1e8c3 # v2 with: app-id: ${{ secrets.GH_APP_ID }} - private-key: ${{ secrets.GH_APP_PRIVATE_KEY }} + private-key: ${{ secrets.GH_APP_PRIV_KEY }} - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v5 if: ${{ github.event_name != 'pull_request' }} with: @@ -33,8 +33,6 @@ jobs: if: ${{ github.event_name == 'pull_request' }} - name: Setup authentik env uses: ./.github/actions/setup - - name: Generate API - run: make gen-client-ts - name: run extract run: | uv run make i18n-extract @@ -44,7 +42,7 @@ jobs: make web-check-compile - name: Create Pull Request if: ${{ github.event_name != 'pull_request' }} - uses: peter-evans/create-pull-request@c0f553fe549906ede9cf27b5156039d195d2ece0 # v7 + uses: peter-evans/create-pull-request@5f6978faf089d4d20b00c7766989d076bb2fc7f1 # v7 with: token: ${{ steps.generate_token.outputs.token }} branch: extract-compile-backend-translation diff --git a/.gitignore b/.gitignore index 01c20f85f1..59e5f7ad7d 100644 --- a/.gitignore +++ b/.gitignore @@ -14,6 +14,8 @@ media # Node node_modules +corepack.tgz +.corepack .cspellcache cspell-report.* @@ -220,7 +222,6 @@ media/ *mmdb .idea/ -/gen-*/ data/ # Local Netlify folder @@ -230,6 +231,11 @@ source_docs/ ### Golang ### /vendor/ +server +proxy +ldap +rac +radius ### Docker ### tests/openid_conformance/exports/*.zip diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000000..a44e24ed90 --- /dev/null +++ b/.npmrc @@ -0,0 +1,20 @@ +# Block lifecycle scripts (preinstall/install/postinstall/prepare) from dependencies. +# This neutralizes the dominant npm supply-chain attack vector. +# +# Packages that legitimately need a build step (e.g. esbuild, chromedriver, tree-sitter) +# must be rebuilt explicitly: +# +# npm rebuild --foreground-scripts esbuild chromedriver tree-sitter tree-sitter-json +ignore-scripts=true + +# Fail fast if the active Node/npm doesn't match the "engines" field. +engine-strict=true + +# Pin exact versions so `npm install ` writes "1.2.3" not "^1.2.3". +save-exact=true + +# Surface CVE warnings during install; doesn't block. +audit=true + +# Suppress funding banners. +fund=false diff --git a/.prettierignore b/.prettierignore index e1206e8f75..129a5f75a0 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,6 +1,7 @@ # Prettier Ignorefile ## Static Files +CODEOWNERS **/LICENSE authentik/stages/**/* diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 7704f91467..11ab39939d 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -17,6 +17,6 @@ "ms-python.vscode-pylance", "redhat.vscode-yaml", "Tobermory.es6-string-html", - "unifiedjs.vscode-mdx", + "unifiedjs.vscode-mdx" ] } diff --git a/.vscode/settings.json b/.vscode/settings.json index 2b5db32790..9bac8ca8ee 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -20,6 +20,9 @@ }, "todo-tree.tree.showCountsInTree": true, "todo-tree.tree.showBadges": true, + "yaml.format.printWidth": 200, + "yaml.format.singleQuote": true, + "yaml.format.bracketSpacing": false, "yaml.customTags": [ "!Condition sequence", "!Context scalar", @@ -38,10 +41,10 @@ "!AtIndex scalar", "!ParseJSON scalar" ], - "typescript.preferences.importModuleSpecifier": "non-relative", - "typescript.preferences.importModuleSpecifierEnding": "index", - "typescript.tsdk": "./node_modules/typescript/lib", - "typescript.enablePromptUseWorkspaceTsdk": true, + "js/ts.preferences.importModuleSpecifier": "non-relative", + "js/ts.preferences.importModuleSpecifierEnding": "index", + "js/ts.tsdk.path": "./node_modules/typescript/lib", + "js/ts.tsdk.promptToUseWorkspaceVersion": true, "yaml.schemas": { "./blueprints/schema.json": "blueprints/**/*.yaml" }, @@ -57,5 +60,13 @@ "go.testEnvVars": { "WORKSPACE_DIR": "${workspaceFolder}" }, - "github-actions.workflows.pinned.workflows": [".github/workflows/ci-main.yml"] + "github-actions.workflows.pinned.workflows": [".github/workflows/ci-main.yml"], + "search.exclude": { + "**/*.code-search": true, + "**/bower_components": true, + "**/node_modules": true, + "**/playwright-report/**": true, + "**/website/**/build": true, + "**/client-*": true + } } diff --git a/CODEOWNERS b/CODEOWNERS index ffb2bffde4..355eb3a11e 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -14,9 +14,10 @@ pyproject.toml @goauthentik/backend uv.lock @goauthentik/backend Cargo.toml @goauthentik/backend Cargo.lock @goauthentik/backend +build.rs @goauthentik/backend go.mod @goauthentik/backend go.sum @goauthentik/backend -.config/ @goauthentik/backend +.cargo/ @goauthentik/backend rust-toolchain.toml @goauthentik/backend # Infrastructure .github/ @goauthentik/infrastructure @@ -27,14 +28,19 @@ Makefile @goauthentik/infrastructure .editorconfig @goauthentik/infrastructure CODEOWNERS @goauthentik/infrastructure # Backend packages +packages/ak-* @goauthentik/backend +packages/client-rust @goauthentik/backend packages/django-channels-postgres @goauthentik/backend packages/django-postgres-cache @goauthentik/backend packages/django-dramatiq-postgres @goauthentik/backend # Web packages +.npmrc @goauthentik/frontend +tsconfig.json @goauthentik/frontend package.json @goauthentik/frontend package-lock.json @goauthentik/frontend packages/package.json @goauthentik/frontend packages/package-lock.json @goauthentik/frontend +packages/client-ts @goauthentik/frontend packages/docusaurus-config @goauthentik/frontend packages/esbuild-plugin-live-reload @goauthentik/frontend packages/eslint-config @goauthentik/frontend diff --git a/Cargo.lock b/Cargo.lock index 7e04eb34d8..e23add50cf 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,6 +2,21 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "addr2line" +version = "0.25.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b5d307320b3181d6d7954e663bd7c774a838b8220fe0593c86d9fb09f498b4b" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + [[package]] name = "aho-corasick" version = "1.1.4" @@ -11,6 +26,21 @@ dependencies = [ "memchr", ] +[[package]] +name = "allocator-api2" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + [[package]] name = "anstream" version = "1.0.0" @@ -47,7 +77,7 @@ version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc" dependencies = [ - "windows-sys", + "windows-sys 0.61.2", ] [[package]] @@ -58,14 +88,488 @@ checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d" dependencies = [ "anstyle", "once_cell_polyfill", - "windows-sys", + "windows-sys 0.61.2", +] + +[[package]] +name = "anyhow" +version = "1.0.102" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" + +[[package]] +name = "arc-swap" +version = "1.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a3a1fd6f75306b68087b831f025c712524bcb19aad54e557b1129cfa0a2b207" +dependencies = [ + "rustversion", +] + +[[package]] +name = "argh" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "211818e820cda9ca6f167a64a5c808837366a6dfd807157c64c1304c486cd033" +dependencies = [ + "argh_derive", + "argh_shared", +] + +[[package]] +name = "argh_derive" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c442a9d18cef5dde467405d27d461d080d68972d6d0dfd0408265b6749ec427d" +dependencies = [ + "argh_shared", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "argh_shared" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5ade012bac4db278517a0132c8c10c6427025868dca16c801087c28d5a411f1" +dependencies = [ + "serde", +] + +[[package]] +name = "arraydeque" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d902e3d592a523def97af8f317b08ce16b7ab854c1985a0c671e6f15cebc236" + +[[package]] +name = "async-trait" +version = "0.1.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "atoi" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f28d99ec8bfea296261ca1af174f24225171fea9664ba9003cbebee704810528" +dependencies = [ + "num-traits", +] + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "authentik" +version = "2026.8.0-rc1" +dependencies = [ + "arc-swap", + "argh", + "authentik-axum", + "authentik-common", + "axum", + "color-eyre", + "eyre", + "hyper-unix-socket", + "hyper-util", + "metrics", + "metrics-exporter-prometheus", + "nix 0.31.2", + "pyo3", + "pyo3-build-config", + "sqlx", + "tokio", + "tracing", + "uuid", + "which", +] + +[[package]] +name = "authentik-axum" +version = "2026.8.0-rc1" +dependencies = [ + "authentik-common", + "axum", + "axum-server", + "client-ip", + "durstr", + "eyre", + "forwarded-header-value", + "futures", + "pin-project-lite", + "tokio", + "tokio-rustls", + "tower", + "tower-http", + "tracing", +] + +[[package]] +name = "authentik-client" +version = "2026.8.0-rc1" +dependencies = [ + "aws-lc-rs", + "reqwest", + "reqwest-middleware", + "rustls", + "serde", + "serde_json", + "serde_repr", + "serde_with", + "url", + "uuid", +] + +[[package]] +name = "authentik-common" +version = "2026.8.0-rc1" +dependencies = [ + "arc-swap", + "authentik-client", + "aws-lc-rs", + "axum-server", + "config", + "console-subscriber", + "eyre", + "glob", + "ipnet", + "json-subscriber", + "nix 0.31.2", + "notify", + "pin-project-lite", + "reqwest", + "reqwest-middleware", + "rustls", + "sentry", + "serde", + "serde_json", + "sqlx", + "tempfile", + "thiserror 2.0.18", + "time", + "tokio", + "tokio-retry2", + "tokio-util", + "tracing", + "tracing-error", + "tracing-subscriber", + "url", +] + +[[package]] +name = "autocfg" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" + +[[package]] +name = "aws-lc-fips-sys" +version = "0.13.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8bce4948d2520386c6d92a6ea2d472300257702242e5a1d01d6add52bd2e7c1" +dependencies = [ + "bindgen", + "cc", + "cmake", + "dunce", + "fs_extra", + "regex", +] + +[[package]] +name = "aws-lc-rs" +version = "1.16.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ec6fb3fe69024a75fa7e1bfb48aa6cf59706a101658ea01bfd33b2b248a038f" +dependencies = [ + "aws-lc-fips-sys", + "aws-lc-sys", + "untrusted 0.7.1", + "zeroize", +] + +[[package]] +name = "aws-lc-sys" +version = "0.40.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f50037ee5e1e41e7b8f9d161680a725bd1626cb6f8c7e901f91f942850852fe7" +dependencies = [ + "cc", + "cmake", + "dunce", + "fs_extra", +] + +[[package]] +name = "axum" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31b698c5f9a010f6573133b09e0de5408834d0c82f8d7475a89fc1867a71cd90" +dependencies = [ + "axum-core", + "axum-macros", + "base64 0.22.1", + "bytes", + "form_urlencoded", + "futures-util", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-util", + "itoa", + "matchit", + "memchr", + "mime", + "percent-encoding", + "pin-project-lite", + "serde_core", + "serde_json", + "serde_path_to_error", + "serde_urlencoded", + "sha1", + "sync_wrapper", + "tokio", + "tokio-tungstenite", + "tower", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "axum-core" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08c78f31d7b1291f7ee735c1c6780ccde7785daae9a9206026862dab7d8792d1" +dependencies = [ + "bytes", + "futures-core", + "http", + "http-body", + "http-body-util", + "mime", + "pin-project-lite", + "sync_wrapper", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "axum-macros" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7aa268c23bfbbd2c4363b9cd302a4f504fb2a9dfe7e3451d66f35dd392e20aca" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "axum-server" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1df331683d982a0b9492b38127151e6453639cd34926eb9c07d4cd8c6d22bfc" +dependencies = [ + "arc-swap", + "bytes", + "either", + "fs-err", + "http", + "http-body", + "hyper", + "hyper-util", + "pin-project-lite", + "rustls", + "rustls-pki-types", + "tokio", + "tokio-rustls", + "tower-service", +] + +[[package]] +name = "backtrace" +version = "0.3.76" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb531853791a215d7c62a30daf0dde835f381ab5de4589cfe7c649d2cbe92bd6" +dependencies = [ + "addr2line", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", + "windows-link", +] + +[[package]] +name = "base64" +version = "0.21.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "base64ct" +version = "1.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2af50177e190e07a26ab74f8b1efbfe2ef87da2116221318cb1c2e82baf7de06" + +[[package]] +name = "bindgen" +version = "0.72.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895" +dependencies = [ + "bitflags 2.11.0", + "cexpr", + "clang-sys", + "itertools", + "log", + "prettyplease", + "proc-macro2", + "quote", + "regex", + "rustc-hash", + "shlex", + "syn", +] + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af" +dependencies = [ + "serde_core", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "block2" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdeb9d870516001442e364c5220d3574d2da8dc765554b4a617230d33fa58ef5" +dependencies = [ + "objc2", +] + +[[package]] +name = "bumpalo" +version = "3.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" + +[[package]] +name = "cc" +version = "1.2.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a0dd1ca384932ff3641c8718a02769f1698e7563dc6974ffd03346116310423" +dependencies = [ + "find-msvc-tools", + "jobserver", + "libc", + "shlex", +] + +[[package]] +name = "cesu8" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" + +[[package]] +name = "cexpr" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" +dependencies = [ + "nom", +] + +[[package]] +name = "cfg-if" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" + +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + +[[package]] +name = "chrono" +version = "0.4.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c673075a2e0e5f4a1dde27ce9dee1ea4558c7ffe648f576438a20ca1d2acc4b0" +dependencies = [ + "iana-time-zone", + "num-traits", + "serde", + "windows-link", +] + +[[package]] +name = "clang-sys" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" +dependencies = [ + "glob", + "libc", + "libloading", ] [[package]] name = "clap" -version = "4.6.0" +version = "4.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b193af5b67834b676abd72466a96c1024e6a6ad978a1f484bd90b85c94041351" +checksum = "1ddb117e43bbf7dacf0a4190fef4d345b9bad68dfc649cb349e7d17d28428e51" dependencies = [ "clap_builder", "clap_derive", @@ -85,9 +589,9 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.6.0" +version = "4.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1110bd8a634a1ab8cb04345d8d878267d57c3cf1b38d91b71af6686408bbca6a" +checksum = "f2ce8604710f6733aa641a2b3731eaa1e8b3d9973d5e3565da11800813f997a9" dependencies = [ "heck", "proc-macro2", @@ -101,6 +605,52 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9" +[[package]] +name = "client-ip" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39d2056bf065c8b4bce5a8898d40e175211ff4410add2a84d695845d3937c729" +dependencies = [ + "forwarded-header-value", + "http", +] + +[[package]] +name = "cmake" +version = "0.1.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75443c44cd6b379beb8c5b45d85d0773baf31cce901fe7bb252f4eff3008ef7d" +dependencies = [ + "cc", +] + +[[package]] +name = "color-eyre" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5920befb47832a6d61ee3a3a846565cfa39b331331e68a3b1d1116630f2f26d" +dependencies = [ + "backtrace", + "color-spantrace", + "eyre", + "indenter", + "once_cell", + "owo-colors", + "tracing-error", +] + +[[package]] +name = "color-spantrace" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8b88ea9df13354b55bc7234ebcce36e6ef896aca2e42a15de9e10edce01b427" +dependencies = [ + "once_cell", + "owo-colors", + "tracing-core", + "tracing-error", +] + [[package]] name = "colorchoice" version = "1.0.5" @@ -113,7 +663,256 @@ version = "3.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "faf9468729b8cbcea668e36183cb69d317348c2e08e994829fb56ebfdfbaac34" dependencies = [ - "windows-sys", + "windows-sys 0.61.2", +] + +[[package]] +name = "combine" +version = "4.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" +dependencies = [ + "bytes", + "memchr", +] + +[[package]] +name = "concurrent-queue" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "config" +version = "0.15.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e68cfe19cd7d23ffde002c24ffa5cda73931913ef394d5eaaa32037dc940c0c" +dependencies = [ + "pathdiff", + "serde_core", + "serde_json", + "winnow", + "yaml-rust2", +] + +[[package]] +name = "console-api" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8599749b6667e2f0c910c1d0dff6901163ff698a52d5a39720f61b5be4b20d3" +dependencies = [ + "futures-core", + "prost", + "prost-types", + "tonic", + "tonic-prost", + "tracing-core", +] + +[[package]] +name = "console-subscriber" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb4915b7d8dd960457a1b6c380114c2944f728e7c65294ab247ae6b6f1f37592" +dependencies = [ + "console-api", + "crossbeam-channel", + "crossbeam-utils", + "futures-task", + "hdrhistogram", + "humantime", + "hyper-util", + "prost", + "prost-types", + "serde", + "serde_json", + "thread_local", + "tokio", + "tokio-stream", + "tonic", + "tracing", + "tracing-core", + "tracing-subscriber", +] + +[[package]] +name = "const-oid" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" + +[[package]] +name = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crc" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5eb8a2a1cd12ab0d987a5d5e825195d372001a4094a0376319d5a0ad71c1ba0d" +dependencies = [ + "crc-catalog", +] + +[[package]] +name = "crc-catalog" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" + +[[package]] +name = "crc32fast" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-queue" +version = "0.3.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f58bbc28f91df819d0aa2a2c00cd19754769c2fad90579b3592b1c9ba7a3115" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" + +[[package]] +name = "crypto-common" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "data-encoding" +version = "2.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7a1e2f27636f116493b8b860f5546edb47c8d8f8ea73e1d2a20be88e28d1fea" + +[[package]] +name = "debugid" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef552e6f588e446098f6ba40d89ac146c8c7b64aade83c051ee00bb5d2bc18d" +dependencies = [ + "serde", + "uuid", +] + +[[package]] +name = "der" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" +dependencies = [ + "const-oid", + "pem-rfc7468", + "zeroize", +] + +[[package]] +name = "deranged" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c" +dependencies = [ + "powerfmt", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "const-oid", + "crypto-common", + "subtle", +] + +[[package]] +name = "dispatch2" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e0e367e4e7da84520dedcac1901e4da967309406d1e51017ae1abfb97adbd38" +dependencies = [ + "bitflags 2.11.0", + "objc2", +] + +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn", ] [[package]] @@ -133,6 +932,88 @@ version = "0.15.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" +[[package]] +name = "dunce" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" + +[[package]] +name = "durstr" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10f06c73c39c1530f8356f1da74713d41cfada2c59a042cfcb675ba33de396da" +dependencies = [ + "thiserror 2.0.18", +] + +[[package]] +name = "either" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" +dependencies = [ + "serde", +] + +[[package]] +name = "encoding_rs" +version = "0.8.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "errno" +version = "0.3.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" +dependencies = [ + "libc", + "windows-sys 0.61.2", +] + +[[package]] +name = "etcetera" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "136d1b5283a1ab77bd9257427ffd09d8667ced0570b6f938942bc7568ed5b943" +dependencies = [ + "cfg-if", + "home", + "windows-sys 0.48.0", +] + +[[package]] +name = "event-listener" +version = "5.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "evmap" +version = "11.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b8874945f036109c72242964c1174cf99434e30cfa45bf45fedc983f50046f8" +dependencies = [ + "hashbag", + "left-right", + "smallvec", +] + [[package]] name = "eyre" version = "0.6.12" @@ -143,30 +1024,1383 @@ dependencies = [ "once_cell", ] +[[package]] +name = "fastrand" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" + +[[package]] +name = "find-msvc-tools" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" + +[[package]] +name = "findshlibs" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40b9e59cd0f7e0806cca4be089683ecb6434e602038df21fe6bf6711b2f07f64" +dependencies = [ + "cc", + "lazy_static", + "libc", + "winapi", +] + +[[package]] +name = "flate2" +version = "1.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "flume" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da0e4dd2a88388a1f4ccc7c9ce104604dab68d9f408dc34cd45823d5a9069095" +dependencies = [ + "futures-core", + "futures-sink", + "spin", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + +[[package]] +name = "foldhash" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" + +[[package]] +name = "form_urlencoded" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "forwarded-header-value" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8835f84f38484cc86f110a805655697908257fb9a7af005234060891557198e9" +dependencies = [ + "nonempty", + "thiserror 1.0.69", +] + +[[package]] +name = "fs-err" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73fde052dbfc920003cfd2c8e2c6e6d4cc7c1091538c3a24226cec0665ab08c0" +dependencies = [ + "autocfg", + "tokio", +] + +[[package]] +name = "fs_extra" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" + +[[package]] +name = "fsevent-sys" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76ee7a02da4d231650c7cea31349b889be2f45ddb3ef3032d2ec8185f6313fd2" +dependencies = [ + "libc", +] + +[[package]] +name = "futures" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b147ee9d1f6d097cef9ce628cd2ee62288d963e16fb287bd9286455b241382d" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d" + +[[package]] +name = "futures-executor" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf29c38818342a3b26b5b923639e7b1f4a61fc5e76102d4b1981c6dc7a7579d" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-intrusive" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d930c203dd0b6ff06e0201a4a2fe9149b43c684fd4420555b26d21b1a02956f" +dependencies = [ + "futures-core", + "lock_api", + "parking_lot", +] + +[[package]] +name = "futures-io" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718" + +[[package]] +name = "futures-macro" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "futures-sink" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893" + +[[package]] +name = "futures-task" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" + +[[package]] +name = "futures-util" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "slab", +] + +[[package]] +name = "generator" +version = "0.8.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52f04ae4152da20c76fe800fa48659201d5cf627c5149ca0b707b69d7eef6cf9" +dependencies = [ + "cc", + "cfg-if", + "libc", + "log", + "rustversion", + "windows-link", + "windows-result", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi", + "wasm-bindgen", +] + +[[package]] +name = "getrandom" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "r-efi 5.3.0", + "wasip2", + "wasm-bindgen", +] + +[[package]] +name = "getrandom" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555" +dependencies = [ + "cfg-if", + "libc", + "r-efi 6.0.0", + "wasip2", + "wasip3", +] + +[[package]] +name = "gimli" +version = "0.32.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e629b9b98ef3dd8afe6ca2bd0f89306cec16d43d907889945bc5d6687f2f13c7" + +[[package]] +name = "glob" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" + +[[package]] +name = "h2" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f44da3a8150a6703ed5d34e164b875fd14c2cdab9af1252a9a1020bde2bdc54" +dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http", + "indexmap", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "hashbag" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7040a10f52cba493ddb09926e15d10a9d8a28043708a405931fe4c6f19fac064" + +[[package]] +name = "hashbrown" +version = "0.15.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash 0.1.5", +] + +[[package]] +name = "hashbrown" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" +dependencies = [ + "foldhash 0.2.0", +] + +[[package]] +name = "hashlink" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1" +dependencies = [ + "hashbrown 0.15.5", +] + +[[package]] +name = "hdrhistogram" +version = "7.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "765c9198f173dd59ce26ff9f95ef0aafd0a0fe01fb9d72841bc5066a4c06511d" +dependencies = [ + "base64 0.21.7", + "byteorder", + "flate2", + "nom", + "num-traits", +] + [[package]] name = "heck" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "hkdf" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" +dependencies = [ + "hmac", +] + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest", +] + +[[package]] +name = "home" +version = "0.5.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc627f471c528ff0c4a49e1d5e60450c8f6461dd6d10ba9dcd3a61d3dff7728d" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "hostname" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "617aaa3557aef3810a6369d0a99fac8a080891b68bd9f9812a1eeda0c0730cbd" +dependencies = [ + "cfg-if", + "libc", + "windows-link", +] + +[[package]] +name = "http" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a" +dependencies = [ + "bytes", + "itoa", +] + +[[package]] +name = "http-body" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http", +] + +[[package]] +name = "http-body-util" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" +dependencies = [ + "bytes", + "futures-core", + "http", + "http-body", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "humantime" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "135b12329e5e3ce057a9f972339ea52bc954fe1e9358ef27f95e89716fbc5424" + +[[package]] +name = "hyper" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6299f016b246a94207e63da54dbe807655bf9e00044f73ded42c3ac5305fbcca" +dependencies = [ + "atomic-waker", + "bytes", + "futures-channel", + "futures-core", + "h2", + "http", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "smallvec", + "tokio", + "want", +] + +[[package]] +name = "hyper-rustls" +version = "0.27.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" +dependencies = [ + "http", + "hyper", + "hyper-util", + "rustls", + "rustls-pki-types", + "tokio", + "tokio-rustls", + "tower-service", +] + +[[package]] +name = "hyper-timeout" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b90d566bffbce6a75bd8b09a05aa8c2cb1fabb6cb348f8840c9e4c90a0d83b0" +dependencies = [ + "hyper", + "hyper-util", + "pin-project-lite", + "tokio", + "tower-service", +] + +[[package]] +name = "hyper-unix-socket" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88978f1d73da0eb87d86555fcc40cbdd87bc86eb6525710b89db8c9278ec6a59" +dependencies = [ + "bytes", + "hyper", + "hyper-util", + "pin-project-lite", + "tokio", + "tower-service", +] + +[[package]] +name = "hyper-util" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0" +dependencies = [ + "base64 0.22.1", + "bytes", + "futures-channel", + "futures-util", + "http", + "http-body", + "hyper", + "ipnet", + "libc", + "percent-encoding", + "pin-project-lite", + "socket2", + "system-configuration", + "tokio", + "tower-service", + "tracing", + "windows-registry", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.65" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "log", + "wasm-bindgen", + "windows-core", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "icu_collections" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" +dependencies = [ + "displaydoc", + "potential_utf", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locale_core" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_normalizer" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" +dependencies = [ + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" + +[[package]] +name = "icu_properties" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "020bfc02fe870ec3a66d93e677ccca0562506e5872c650f893269e08615d74ec" +dependencies = [ + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "zerotrie", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "616c294cf8d725c6afcd8f55abc17c56464ef6211f9ed59cccffe534129c77af" + +[[package]] +name = "icu_provider" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" +dependencies = [ + "displaydoc", + "icu_locale_core", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", +] + +[[package]] +name = "id-arena" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954" + +[[package]] +name = "idna" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + [[package]] name = "indenter" version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "964de6e86d545b246d84badc0fef527924ace5134f30641c203ef52ba83f58d5" +[[package]] +name = "indexmap" +version = "2.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" +dependencies = [ + "equivalent", + "hashbrown 0.16.1", + "serde", + "serde_core", +] + +[[package]] +name = "inotify" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd5b3eaf1a28b758ac0faa5a4254e8ab2705605496f1b1f3fbbc3988ad73d199" +dependencies = [ + "bitflags 2.11.0", + "inotify-sys", + "libc", +] + +[[package]] +name = "inotify-sys" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e05c02b5e89bff3b946cedeca278abc628fe811e604f027c45a8aa3cf793d0eb" +dependencies = [ + "libc", +] + +[[package]] +name = "ipnet" +version = "2.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d98f6fed1fde3f8c21bc40a1abb88dd75e67924f9cffc3ef95607bad8017f8e2" +dependencies = [ + "serde", +] + [[package]] name = "is_terminal_polyfill" version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" + +[[package]] +name = "jni" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" +dependencies = [ + "cesu8", + "cfg-if", + "combine", + "jni-sys 0.3.1", + "log", + "thiserror 1.0.69", + "walkdir", + "windows-sys 0.45.0", +] + +[[package]] +name = "jni-sys" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41a652e1f9b6e0275df1f15b32661cf0d4b78d4d87ddec5e0c3c20f097433258" +dependencies = [ + "jni-sys 0.4.1", +] + +[[package]] +name = "jni-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6377a88cb3910bee9b0fa88d4f42e1d2da8e79915598f65fb0c7ee14c878af2" +dependencies = [ + "jni-sys-macros", +] + +[[package]] +name = "jni-sys-macros" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264" +dependencies = [ + "quote", + "syn", +] + +[[package]] +name = "jobserver" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" +dependencies = [ + "getrandom 0.3.4", + "libc", +] + +[[package]] +name = "js-sys" +version = "0.3.91" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b49715b7073f385ba4bc528e5747d02e66cb39c6146efb66b781f131f0fb399c" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "json-subscriber" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ace9335c952ff02bc93370d5bf93383f311607de1e83fb5db51628edd0bbe300" +dependencies = [ + "serde", + "serde_json", + "tracing", + "tracing-core", + "tracing-serde", + "tracing-subscriber", + "uuid", +] + +[[package]] +name = "kqueue" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eac30106d7dce88daf4a3fcb4879ea939476d5074a9b7ddd0fb97fa4bed5596a" +dependencies = [ + "kqueue-sys", + "libc", +] + +[[package]] +name = "kqueue-sys" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed9625ffda8729b85e45cf04090035ac368927b8cebc34898e7c120f52e4838b" +dependencies = [ + "bitflags 1.3.2", + "libc", +] + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" +dependencies = [ + "spin", +] + +[[package]] +name = "leb128fmt" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" + +[[package]] +name = "left-right" +version = "0.11.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f0c21e4c8ff95f487fb34e6f9182875f42c84cef966d29216bf115d9bba835a" +dependencies = [ + "crossbeam-utils", + "loom", + "slab", +] + +[[package]] +name = "libc" +version = "0.2.183" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5b646652bf6661599e1da8901b3b9522896f01e736bad5f723fe7a3a27f899d" + +[[package]] +name = "libloading" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55" +dependencies = [ + "cfg-if", + "windows-link", +] + +[[package]] +name = "libm" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" + +[[package]] +name = "libredox" +version = "0.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ddbf48fd451246b1f8c2610bd3b4ac0cc6e149d89832867093ab69a17194f08" +dependencies = [ + "bitflags 2.11.0", + "libc", + "plain", + "redox_syscall 0.7.3", +] + +[[package]] +name = "libsqlite3-sys" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e99fb7a497b1e3339bc746195567ed8d3e24945ecd636e3619d20b9de9e9149" +dependencies = [ + "pkg-config", + "vcpkg", +] + +[[package]] +name = "linux-raw-sys" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" + +[[package]] +name = "litemap" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" + +[[package]] +name = "lock_api" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" +dependencies = [ + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" + +[[package]] +name = "loom" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "419e0dc8046cb947daa77eb95ae174acfbddb7673b4151f56d1eed8e93fbfaca" +dependencies = [ + "cfg-if", + "generator", + "scoped-tls", + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "lru-slab" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" + +[[package]] +name = "matchers" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9" +dependencies = [ + "regex-automata", +] + +[[package]] +name = "matchit" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3" + +[[package]] +name = "md-5" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" +dependencies = [ + "cfg-if", + "digest", +] + [[package]] name = "memchr" version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" +[[package]] +name = "metrics" +version = "0.24.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff56c2e7dce6bd462e3b8919986a617027481b1dcc703175b58cf9dd98a2f071" +dependencies = [ + "portable-atomic", + "rapidhash", +] + +[[package]] +name = "metrics-exporter-prometheus" +version = "0.18.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1db0d8f1fc9e62caebd0319e11eaec5822b0186c171568f0480b46a0137f9108" +dependencies = [ + "base64 0.22.1", + "evmap", + "indexmap", + "metrics", + "metrics-util", + "quanta", + "thiserror 2.0.18", +] + +[[package]] +name = "metrics-util" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdfb1365fea27e6dd9dc1dbc19f570198bc86914533ad639dae939635f096be4" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", + "hashbrown 0.16.1", + "metrics", + "quanta", + "rand 0.9.4", + "rand_xoshiro", + "sketches-ddsketch", +] + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "mime_guess" +version = "2.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" +dependencies = [ + "mime", + "unicase", +] + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "miniz_oxide" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" +dependencies = [ + "adler2", + "simd-adler32", +] + +[[package]] +name = "mio" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50b7e5b27aa02a74bac8c3f23f448f8d87ff11f92d3aac1a6ed369ee08cc56c1" +dependencies = [ + "libc", + "log", + "wasi", + "windows-sys 0.61.2", +] + +[[package]] +name = "nix" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6" +dependencies = [ + "bitflags 2.11.0", + "cfg-if", + "cfg_aliases", + "libc", +] + +[[package]] +name = "nix" +version = "0.31.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d6d0705320c1e6ba1d912b5e37cf18071b6c2e9b7fa8215a1e8a7651966f5d3" +dependencies = [ + "bitflags 2.11.0", + "cfg-if", + "cfg_aliases", + "libc", +] + +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "nonempty" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9e591e719385e6ebaeb5ce5d3887f7d5676fceca6411d1925ccc95745f3d6f7" + +[[package]] +name = "notify" +version = "8.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d3d07927151ff8575b7087f245456e549fea62edf0ec4e565a5ee50c8402bc3" +dependencies = [ + "bitflags 2.11.0", + "fsevent-sys", + "inotify", + "kqueue", + "libc", + "log", + "mio", + "notify-types", + "walkdir", + "windows-sys 0.60.2", +] + +[[package]] +name = "notify-types" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42b8cfee0e339a0337359f3c88165702ac6e600dc01c0cc9579a92d62b08477a" +dependencies = [ + "bitflags 2.11.0", +] + +[[package]] +name = "nu-ansi-term" +version = "0.50.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "num-bigint-dig" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e661dda6640fad38e827a6d4a310ff4763082116fe217f279885c97f511bb0b7" +dependencies = [ + "lazy_static", + "libm", + "num-integer", + "num-iter", + "num-traits", + "rand 0.8.6", + "smallvec", + "zeroize", +] + +[[package]] +name = "num-conv" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf97ec579c3c42f953ef76dbf8d55ac91fb219dde70e49aa4a6b7d74e9919050" + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-iter" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", + "libm", +] + +[[package]] +name = "num_threads" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9" +dependencies = [ + "libc", +] + +[[package]] +name = "objc2" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a12a8ed07aefc768292f076dc3ac8c48f3781c8f2d5851dd3d98950e8c5a89f" +dependencies = [ + "objc2-encode", +] + +[[package]] +name = "objc2-cloud-kit" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73ad74d880bb43877038da939b7427bba67e9dd42004a18b809ba7d87cee241c" +dependencies = [ + "bitflags 2.11.0", + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-core-data" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b402a653efbb5e82ce4df10683b6b28027616a2715e90009947d50b8dd298fa" +dependencies = [ + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-core-foundation" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" +dependencies = [ + "bitflags 2.11.0", + "dispatch2", + "objc2", +] + +[[package]] +name = "objc2-core-graphics" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e022c9d066895efa1345f8e33e584b9f958da2fd4cd116792e15e07e4720a807" +dependencies = [ + "bitflags 2.11.0", + "dispatch2", + "objc2", + "objc2-core-foundation", + "objc2-io-surface", +] + +[[package]] +name = "objc2-core-image" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5d563b38d2b97209f8e861173de434bd0214cf020e3423a52624cd1d989f006" +dependencies = [ + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-core-location" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca347214e24bc973fc025fd0d36ebb179ff30536ed1f80252706db19ee452009" +dependencies = [ + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-core-text" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cde0dfb48d25d2b4862161a4d5fcc0e3c24367869ad306b0c9ec0073bfed92d" +dependencies = [ + "bitflags 2.11.0", + "objc2", + "objc2-core-foundation", + "objc2-core-graphics", +] + +[[package]] +name = "objc2-encode" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33" + +[[package]] +name = "objc2-foundation" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272" +dependencies = [ + "bitflags 2.11.0", + "block2", + "libc", + "objc2", + "objc2-core-foundation", +] + +[[package]] +name = "objc2-io-surface" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "180788110936d59bab6bd83b6060ffdfffb3b922ba1396b312ae795e1de9d81d" +dependencies = [ + "bitflags 2.11.0", + "objc2", + "objc2-core-foundation", +] + +[[package]] +name = "objc2-quartz-core" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96c1358452b371bf9f104e21ec536d37a650eb10f7ee379fff67d2e08d537f1f" +dependencies = [ + "bitflags 2.11.0", + "objc2", + "objc2-core-foundation", + "objc2-foundation", +] + +[[package]] +name = "objc2-ui-kit" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d87d638e33c06f577498cbcc50491496a3ed4246998a7fbba7ccb98b1e7eab22" +dependencies = [ + "bitflags 2.11.0", + "block2", + "objc2", + "objc2-cloud-kit", + "objc2-core-data", + "objc2-core-foundation", + "objc2-core-graphics", + "objc2-core-image", + "objc2-core-location", + "objc2-core-text", + "objc2-foundation", + "objc2-quartz-core", + "objc2-user-notifications", +] + +[[package]] +name = "objc2-user-notifications" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9df9128cbbfef73cda168416ccf7f837b62737d748333bfe9ab71c245d76613e" +dependencies = [ + "objc2", + "objc2-foundation", +] + +[[package]] +name = "object" +version = "0.37.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff76201f031d8863c38aa7f905eca4f53abbfa15f609db4277d44cd8938f33fe" +dependencies = [ + "memchr", +] + [[package]] name = "once_cell" version = "1.21.4" @@ -179,6 +2413,183 @@ version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" +[[package]] +name = "openssl-probe" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c87def4c32ab89d880effc9e097653c8da5d6ef28e6b539d313baaacfbafcbe" + +[[package]] +name = "os_info" +version = "3.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4022a17595a00d6a369236fdae483f0de7f0a339960a53118b818238e132224" +dependencies = [ + "android_system_properties", + "log", + "nix 0.30.1", + "objc2", + "objc2-foundation", + "objc2-ui-kit", + "serde", + "windows-sys 0.61.2", +] + +[[package]] +name = "owo-colors" +version = "4.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d211803b9b6b570f68772237e415a029d5a50c65d382910b879fb19d3271f94d" + +[[package]] +name = "parking" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" + +[[package]] +name = "parking_lot" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall 0.5.18", + "smallvec", + "windows-link", +] + +[[package]] +name = "pathdiff" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" + +[[package]] +name = "pem-rfc7468" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" +dependencies = [ + "base64ct", +] + +[[package]] +name = "percent-encoding" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" + +[[package]] +name = "pin-project" +version = "1.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1749c7ed4bcaf4c3d0a3efc28538844fb29bcdd7d2b67b2be7e20ba861ff517" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b20ed30f105399776b9c883e68e536ef602a16ae6f596d2c473591d6ad64c6" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" + +[[package]] +name = "pkcs1" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8ffb9f10fa047879315e6625af03c164b16962a5368d724ed16323b68ace47f" +dependencies = [ + "der", + "pkcs8", + "spki", +] + +[[package]] +name = "pkcs8" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +dependencies = [ + "der", + "spki", +] + +[[package]] +name = "pkg-config" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" + +[[package]] +name = "plain" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" + +[[package]] +name = "portable-atomic" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49" + +[[package]] +name = "potential_utf" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" +dependencies = [ + "zerovec", +] + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "prettyplease" +version = "0.2.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" +dependencies = [ + "proc-macro2", + "syn", +] + [[package]] name = "proc-macro2" version = "1.0.106" @@ -188,6 +2599,167 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "prost" +version = "0.14.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2ea70524a2f82d518bce41317d0fae74151505651af45faf1ffbd6fd33f0568" +dependencies = [ + "bytes", + "prost-derive", +] + +[[package]] +name = "prost-derive" +version = "0.14.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27c6023962132f4b30eb4c172c91ce92d933da334c59c23cddee82358ddafb0b" +dependencies = [ + "anyhow", + "itertools", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "prost-types" +version = "0.14.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8991c4cbdb8bc5b11f0b074ffe286c30e523de90fee5ba8132f1399f23cb3dd7" +dependencies = [ + "prost", +] + +[[package]] +name = "pyo3" +version = "0.28.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91fd8e38a3b50ed1167fb981cd6fd60147e091784c427b8f7183a7ee32c31c12" +dependencies = [ + "libc", + "once_cell", + "portable-atomic", + "pyo3-build-config", + "pyo3-ffi", + "pyo3-macros", +] + +[[package]] +name = "pyo3-build-config" +version = "0.28.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e368e7ddfdeb98c9bca7f8383be1648fd84ab466bf2bc015e94008db6d35611e" +dependencies = [ + "target-lexicon", +] + +[[package]] +name = "pyo3-ffi" +version = "0.28.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f29e10af80b1f7ccaf7f69eace800a03ecd13e883acfacc1e5d0988605f651e" +dependencies = [ + "libc", + "pyo3-build-config", +] + +[[package]] +name = "pyo3-macros" +version = "0.28.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df6e520eff47c45997d2fc7dd8214b25dd1310918bbb2642156ef66a67f29813" +dependencies = [ + "proc-macro2", + "pyo3-macros-backend", + "quote", + "syn", +] + +[[package]] +name = "pyo3-macros-backend" +version = "0.28.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4cdc218d835738f81c2338f822078af45b4afdf8b2e33cbb5916f108b813acb" +dependencies = [ + "heck", + "proc-macro2", + "pyo3-build-config", + "quote", + "syn", +] + +[[package]] +name = "quanta" +version = "0.12.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3ab5a9d756f0d97bdc89019bd2e4ea098cf9cde50ee7564dde6b81ccc8f06c7" +dependencies = [ + "crossbeam-utils", + "libc", + "once_cell", + "raw-cpuid", + "wasi", + "web-sys", + "winapi", +] + +[[package]] +name = "quinn" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20" +dependencies = [ + "bytes", + "cfg_aliases", + "pin-project-lite", + "quinn-proto", + "quinn-udp", + "rustc-hash", + "rustls", + "socket2", + "thiserror 2.0.18", + "tokio", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-proto" +version = "0.11.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "434b42fec591c96ef50e21e886936e66d3cc3f737104fdb9b737c40ffb94c098" +dependencies = [ + "aws-lc-rs", + "bytes", + "getrandom 0.3.4", + "lru-slab", + "rand 0.9.4", + "ring", + "rustc-hash", + "rustls", + "rustls-pki-types", + "slab", + "thiserror 2.0.18", + "tinyvec", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-udp" +version = "0.5.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd" +dependencies = [ + "cfg_aliases", + "libc", + "once_cell", + "socket2", + "tracing", + "windows-sys 0.60.2", +] + [[package]] name = "quote" version = "1.0.45" @@ -197,6 +2769,122 @@ dependencies = [ "proc-macro2", ] +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + +[[package]] +name = "r-efi" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" + +[[package]] +name = "rand" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ca0ecfa931c29007047d1bc58e623ab12e5590e8c7cc53200d5202b69266d8a" +dependencies = [ + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44c5af06bb1b7d3216d91932aed5265164bf384dc89cd6ba05cf59a35f5f76ea" +dependencies = [ + "rand_chacha 0.9.0", + "rand_core 0.9.5", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.5", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.17", +] + +[[package]] +name = "rand_core" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" +dependencies = [ + "getrandom 0.3.4", +] + +[[package]] +name = "rand_xoshiro" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f703f4665700daf5512dcca5f43afa6af89f09db47fb56be587f80636bda2d41" +dependencies = [ + "rand_core 0.9.5", +] + +[[package]] +name = "rapidhash" +version = "4.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e48930979c155e2f33aa36ab3119b5ee81332beb6482199a8ecd6029b80b59" +dependencies = [ + "rustversion", +] + +[[package]] +name = "raw-cpuid" +version = "11.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "498cd0dc59d73224351ee52a95fee0f1a617a2eae0e7d9d720cc622c73a54186" +dependencies = [ + "bitflags 2.11.0", +] + +[[package]] +name = "redox_syscall" +version = "0.5.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" +dependencies = [ + "bitflags 2.11.0", +] + +[[package]] +name = "redox_syscall" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce70a74e890531977d37e532c34d45e9055d2409ed08ddba14529471ed0be16" +dependencies = [ + "bitflags 2.11.0", +] + [[package]] name = "regex" version = "1.12.3" @@ -226,12 +2914,836 @@ version = "0.8.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" +[[package]] +name = "reqwest" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62e0021ea2c22aed41653bc7e1419abb2c97e038ff2c33d0e1309e49a97deec0" +dependencies = [ + "base64 0.22.1", + "bytes", + "encoding_rs", + "futures-channel", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-rustls", + "hyper-util", + "js-sys", + "log", + "mime", + "mime_guess", + "percent-encoding", + "pin-project-lite", + "quinn", + "rustls", + "rustls-pki-types", + "rustls-platform-verifier", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "tokio", + "tokio-rustls", + "tokio-util", + "tower", + "tower-http", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "wasm-streams", + "web-sys", +] + +[[package]] +name = "reqwest-middleware" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "199dda04a536b532d0cc04d7979e39b1c763ea749bf91507017069c00b96056f" +dependencies = [ + "anyhow", + "async-trait", + "http", + "reqwest", + "serde", + "thiserror 2.0.18", + "tower-service", +] + +[[package]] +name = "ring" +version = "0.17.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" +dependencies = [ + "cc", + "cfg-if", + "getrandom 0.2.17", + "libc", + "untrusted 0.9.0", + "windows-sys 0.52.0", +] + +[[package]] +name = "rsa" +version = "0.9.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8573f03f5883dcaebdfcf4725caa1ecb9c15b2ef50c43a07b816e06799bb12d" +dependencies = [ + "const-oid", + "digest", + "num-bigint-dig", + "num-integer", + "num-traits", + "pkcs1", + "pkcs8", + "rand_core 0.6.4", + "signature", + "spki", + "subtle", + "zeroize", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b50b8869d9fc858ce7266cce0194bd74df58b9d0e3f6df3a9fc8eb470d95c09d" + +[[package]] +name = "rustc-hash" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" + +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver", +] + +[[package]] +name = "rustix" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" +dependencies = [ + "bitflags 2.11.0", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.61.2", +] + +[[package]] +name = "rustls" +version = "0.23.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef86cd5876211988985292b91c96a8f2d298df24e75989a43a3c73f2d4d8168b" +dependencies = [ + "aws-lc-rs", + "log", + "once_cell", + "ring", + "rustls-pki-types", + "rustls-webpki", + "subtle", + "zeroize", +] + +[[package]] +name = "rustls-native-certs" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "612460d5f7bea540c490b2b6395d8e34a953e52b491accd6c86c8164c5932a63" +dependencies = [ + "openssl-probe", + "rustls-pki-types", + "schannel", + "security-framework", +] + +[[package]] +name = "rustls-pki-types" +version = "1.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be040f8b0a225e40375822a563fa9524378b9d63112f53e19ffff34df5d33fdd" +dependencies = [ + "web-time", + "zeroize", +] + +[[package]] +name = "rustls-platform-verifier" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d99feebc72bae7ab76ba994bb5e121b8d83d910ca40b36e0921f53becc41784" +dependencies = [ + "core-foundation 0.10.1", + "core-foundation-sys", + "jni", + "log", + "once_cell", + "rustls", + "rustls-native-certs", + "rustls-platform-verifier-android", + "rustls-webpki", + "security-framework", + "security-framework-sys", + "webpki-root-certs", + "windows-sys 0.61.2", +] + +[[package]] +name = "rustls-platform-verifier-android" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f87165f0995f63a9fbeea62b64d10b4d9d8e78ec6d7d51fb2125fda7bb36788f" + +[[package]] +name = "rustls-webpki" +version = "0.103.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61c429a8649f110dddef65e2a5ad240f747e85f7758a6bccc7e5777bd33f756e" +dependencies = [ + "aws-lc-rs", + "ring", + "rustls-pki-types", + "untrusted 0.9.0", +] + +[[package]] +name = "rustversion" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" + +[[package]] +name = "ryu" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "schannel" +version = "0.1.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91c1b7e4904c873ef0710c1f407dde2e6287de2bebc1bbbf7d430bb7cbffd939" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "scoped-tls" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "security-framework" +version = "3.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7f4bc775c73d9a02cde8bf7b2ec4c9d12743edf609006c7facc23998404cd1d" +dependencies = [ + "bitflags 2.11.0", + "core-foundation 0.10.1", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce2691df843ecc5d231c0b14ece2acc3efb62c0a398c7e1d875f3983ce020e3" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "semver" +version = "1.0.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" + +[[package]] +name = "sentry" +version = "0.48.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b93b3e19f45495ddd41d8222a152c48c84f6ba45abe9c69e2527e9cdea29bb5b" +dependencies = [ + "cfg_aliases", + "httpdate", + "reqwest", + "rustls", + "sentry-backtrace", + "sentry-contexts", + "sentry-core", + "sentry-debug-images", + "sentry-panic", + "sentry-tower", + "sentry-tracing", + "tokio", + "ureq", +] + +[[package]] +name = "sentry-backtrace" +version = "0.48.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc84c325ace9ca2388e510fe7d6672b5d60cd8b3bd0eb4bb4ee8314c323cd686" +dependencies = [ + "backtrace", + "regex", + "sentry-core", +] + +[[package]] +name = "sentry-contexts" +version = "0.48.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "896c1ab62dbfe1746fb262bbf72e6feb2fb9dfb2c14709077bf71beb532e44b2" +dependencies = [ + "hostname", + "libc", + "os_info", + "rustc_version", + "sentry-core", + "uname", +] + +[[package]] +name = "sentry-core" +version = "0.48.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5f5abf20c42cb1593ec1638976e2647da55f79bccac956444c1707b6cce259a" +dependencies = [ + "rand 0.9.4", + "sentry-types", + "serde", + "serde_json", + "url", +] + +[[package]] +name = "sentry-debug-images" +version = "0.48.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b88bbe6a760d5724bb40689827e82e8db1e275947df2c59abe171bfc30bb671" +dependencies = [ + "findshlibs", + "sentry-core", +] + +[[package]] +name = "sentry-panic" +version = "0.48.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0260dcb52562b6a79ae7702312a26dba94b79fb5baee7301087529e5ca4e872e" +dependencies = [ + "sentry-backtrace", + "sentry-core", +] + +[[package]] +name = "sentry-tower" +version = "0.48.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d669616d5d5279b5712febfc80c343acc3695e499de0d101ed70fceacadf37f2" +dependencies = [ + "sentry-core", + "tower-layer", + "tower-service", +] + +[[package]] +name = "sentry-tracing" +version = "0.48.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1c035f3a0a8671ae1a231c5b457abb68b71acba2bf3054dab2a09a9d4ea487e" +dependencies = [ + "bitflags 2.11.0", + "sentry-backtrace", + "sentry-core", + "tracing-core", + "tracing-subscriber", +] + +[[package]] +name = "sentry-types" +version = "0.48.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82d8e81058ec155992191f61c7b29bfa7b2cf12012131e7cdc0678020898a7c9" +dependencies = [ + "debugid", + "hex", + "rand 0.9.4", + "serde", + "serde_json", + "thiserror 2.0.18", + "time", + "url", + "uuid", +] + +[[package]] +name = "serde" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.149" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" +dependencies = [ + "itoa", + "memchr", + "serde", + "serde_core", + "zmij", +] + +[[package]] +name = "serde_path_to_error" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10a9ff822e371bb5403e391ecd83e182e0e77ba7f6fe0160b795797109d1b457" +dependencies = [ + "itoa", + "serde", + "serde_core", +] + +[[package]] +name = "serde_repr" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_with" +version = "3.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f05839ce67618e14a09b286535c0d9c94e85ef25469b0e13cb4f844e5593eb19" +dependencies = [ + "base64 0.22.1", + "chrono", + "hex", + "serde_core", + "serde_json", + "time", +] + +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sha2" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "signal-hook-registry" +version = "1.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b" +dependencies = [ + "errno", + "libc", +] + +[[package]] +name = "signature" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +dependencies = [ + "digest", + "rand_core 0.6.4", +] + +[[package]] +name = "simd-adler32" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "703d5c7ef118737c72f1af64ad2f6f8c5e1921f818cdcb97b8fe6fc69bf66214" + +[[package]] +name = "sketches-ddsketch" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c6f73aeb92d671e0cc4dca167e59b2deb6387c375391bc99ee743f326994a2b" + +[[package]] +name = "slab" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" + +[[package]] +name = "smallvec" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" +dependencies = [ + "serde", +] + +[[package]] +name = "socket2" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a766e1110788c36f4fa1c2b71b387a7815aa65f88ce0229841826633d93723e" +dependencies = [ + "libc", + "windows-sys 0.61.2", +] + +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" +dependencies = [ + "lock_api", +] + +[[package]] +name = "spki" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +dependencies = [ + "base64ct", + "der", +] + +[[package]] +name = "sqlx" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fefb893899429669dcdd979aff487bd78f4064e5e7907e4269081e0ef7d97dc" +dependencies = [ + "sqlx-core", + "sqlx-macros", + "sqlx-mysql", + "sqlx-postgres", + "sqlx-sqlite", +] + +[[package]] +name = "sqlx-core" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee6798b1838b6a0f69c007c133b8df5866302197e404e8b6ee8ed3e3a5e68dc6" +dependencies = [ + "base64 0.22.1", + "bytes", + "chrono", + "crc", + "crossbeam-queue", + "either", + "event-listener", + "futures-core", + "futures-intrusive", + "futures-io", + "futures-util", + "hashbrown 0.15.5", + "hashlink", + "indexmap", + "ipnet", + "log", + "memchr", + "once_cell", + "percent-encoding", + "rustls", + "serde", + "serde_json", + "sha2", + "smallvec", + "thiserror 2.0.18", + "tokio", + "tokio-stream", + "tracing", + "url", + "uuid", + "webpki-roots 0.26.11", +] + +[[package]] +name = "sqlx-macros" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2d452988ccaacfbf5e0bdbc348fb91d7c8af5bee192173ac3636b5fb6e6715d" +dependencies = [ + "proc-macro2", + "quote", + "sqlx-core", + "sqlx-macros-core", + "syn", +] + +[[package]] +name = "sqlx-macros-core" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19a9c1841124ac5a61741f96e1d9e2ec77424bf323962dd894bdb93f37d5219b" +dependencies = [ + "dotenvy", + "either", + "heck", + "hex", + "once_cell", + "proc-macro2", + "quote", + "serde", + "serde_json", + "sha2", + "sqlx-core", + "sqlx-mysql", + "sqlx-postgres", + "sqlx-sqlite", + "syn", + "tokio", + "url", +] + +[[package]] +name = "sqlx-mysql" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa003f0038df784eb8fecbbac13affe3da23b45194bd57dba231c8f48199c526" +dependencies = [ + "atoi", + "base64 0.22.1", + "bitflags 2.11.0", + "byteorder", + "bytes", + "chrono", + "crc", + "digest", + "dotenvy", + "either", + "futures-channel", + "futures-core", + "futures-io", + "futures-util", + "generic-array", + "hex", + "hkdf", + "hmac", + "itoa", + "log", + "md-5", + "memchr", + "once_cell", + "percent-encoding", + "rand 0.8.6", + "rsa", + "serde", + "sha1", + "sha2", + "smallvec", + "sqlx-core", + "stringprep", + "thiserror 2.0.18", + "tracing", + "uuid", + "whoami", +] + +[[package]] +name = "sqlx-postgres" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db58fcd5a53cf07c184b154801ff91347e4c30d17a3562a635ff028ad5deda46" +dependencies = [ + "atoi", + "base64 0.22.1", + "bitflags 2.11.0", + "byteorder", + "chrono", + "crc", + "dotenvy", + "etcetera", + "futures-channel", + "futures-core", + "futures-util", + "hex", + "hkdf", + "hmac", + "home", + "ipnet", + "itoa", + "log", + "md-5", + "memchr", + "once_cell", + "rand 0.8.6", + "serde", + "serde_json", + "sha2", + "smallvec", + "sqlx-core", + "stringprep", + "thiserror 2.0.18", + "tracing", + "uuid", + "whoami", +] + +[[package]] +name = "sqlx-sqlite" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2d12fe70b2c1b4401038055f90f151b78208de1f9f89a7dbfd41587a10c3eea" +dependencies = [ + "atoi", + "chrono", + "flume", + "futures-channel", + "futures-core", + "futures-executor", + "futures-intrusive", + "futures-util", + "libsqlite3-sys", + "log", + "percent-encoding", + "serde", + "serde_urlencoded", + "sqlx-core", + "thiserror 2.0.18", + "tracing", + "url", + "uuid", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" + +[[package]] +name = "stringprep" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b4df3d392d81bd458a8a621b8bffbd2302a12ffe288a9d931670948749463b1" +dependencies = [ + "unicode-bidi", + "unicode-normalization", + "unicode-properties", +] + [[package]] name = "strsim" version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + [[package]] name = "syn" version = "2.0.117" @@ -243,24 +3755,973 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "sync_wrapper" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +dependencies = [ + "futures-core", +] + +[[package]] +name = "synstructure" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "system-configuration" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a13f3d0daba03132c0aa9767f98351b3488edc2c100cda2d2ec2b04f3d8d3c8b" +dependencies = [ + "bitflags 2.11.0", + "core-foundation 0.9.4", + "system-configuration-sys", +] + +[[package]] +name = "system-configuration-sys" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "target-lexicon" +version = "0.13.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adb6935a6f5c20170eeceb1a3835a49e12e19d792f6dd344ccc76a985ca5a6ca" + +[[package]] +name = "tempfile" +version = "3.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" +dependencies = [ + "fastrand", + "getrandom 0.4.2", + "once_cell", + "rustix", + "windows-sys 0.61.2", +] + +[[package]] +name = "thiserror" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" +dependencies = [ + "thiserror-impl 2.0.18", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "thread_local" +version = "1.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "time" +version = "0.3.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "743bd48c283afc0388f9b8827b976905fb217ad9e647fae3a379a9283c4def2c" +dependencies = [ + "deranged", + "itoa", + "libc", + "num-conv", + "num_threads", + "powerfmt", + "serde_core", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca" + +[[package]] +name = "time-macros" +version = "0.2.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e70e4c5a0e0a8a4823ad65dfe1a6930e4f4d756dcd9dd7939022b5e8c501215" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tinystr" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869" +dependencies = [ + "displaydoc", + "zerovec", +] + +[[package]] +name = "tinyvec" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e61e67053d25a4e82c844e8424039d9745781b3fc4f32b8d55ed50f5f667ef3" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.52.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fc7f01b389ac15039e4dc9531aa973a135d7a4135281b12d7c1bc79fd57fffe" +dependencies = [ + "bytes", + "libc", + "mio", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "tracing", + "windows-sys 0.61.2", +] + +[[package]] +name = "tokio-macros" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "385a6cb71ab9ab790c5fe8d67f1645e6c450a7ce006a33de03daa956cf70a496" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tokio-retry2" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0266d56e57e6b29becbfce5daa6add8730941ca8192ddd7c24d25bf90c32a743" +dependencies = [ + "pin-project", + "tokio", +] + +[[package]] +name = "tokio-rustls" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" +dependencies = [ + "rustls", + "tokio", +] + +[[package]] +name = "tokio-stream" +version = "0.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32da49809aab5c3bc678af03902d4ccddea2a87d028d86392a4b1560c6906c70" +dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tokio-tungstenite" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f72a05e828585856dacd553fba484c242c46e391fb0e58917c942ee9202915c" +dependencies = [ + "futures-util", + "log", + "tokio", + "tungstenite", +] + +[[package]] +name = "tokio-util" +version = "0.7.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098" +dependencies = [ + "bytes", + "futures-core", + "futures-io", + "futures-sink", + "futures-util", + "hashbrown 0.15.5", + "pin-project-lite", + "slab", + "tokio", +] + +[[package]] +name = "tonic" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fec7c61a0695dc1887c1b53952990f3ad2e3a31453e1f49f10e75424943a93ec" +dependencies = [ + "async-trait", + "axum", + "base64 0.22.1", + "bytes", + "h2", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-timeout", + "hyper-util", + "percent-encoding", + "pin-project", + "socket2", + "sync_wrapper", + "tokio", + "tokio-stream", + "tower", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tonic-prost" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a55376a0bbaa4975a3f10d009ad763d8f4108f067c7c2e74f3001fb49778d309" +dependencies = [ + "bytes", + "prost", + "tonic", +] + +[[package]] +name = "tower" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4" +dependencies = [ + "futures-core", + "futures-util", + "indexmap", + "pin-project-lite", + "slab", + "sync_wrapper", + "tokio", + "tokio-util", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower-http" +version = "0.6.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68d6fdd9f81c2819c9a8b0e0cd91660e7746a8e6ea2ba7c6b2b057985f6bcb51" +dependencies = [ + "bitflags 2.11.0", + "bytes", + "futures-util", + "http", + "http-body", + "pin-project-lite", + "tokio", + "tower", + "tower-layer", + "tower-service", + "url", +] + +[[package]] +name = "tower-layer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + +[[package]] +name = "tower-service" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + +[[package]] +name = "tracing" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" +dependencies = [ + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tracing-core" +version = "0.1.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-error" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b1581020d7a273442f5b45074a6a57d5757ad0a47dac0e9f0bd57b81936f3db" +dependencies = [ + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-serde" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "704b1aeb7be0d0a84fc9828cae51dab5970fee5088f83d1dd7ee6f6246fc6ff1" +dependencies = [ + "serde", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb7f578e5945fb242538965c2d0b04418d38ec25c79d160cd279bf0731c8d319" +dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex-automata", + "serde", + "serde_json", + "sharded-slab", + "smallvec", + "thread_local", + "time", + "tracing", + "tracing-core", + "tracing-log", + "tracing-serde", +] + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + +[[package]] +name = "tungstenite" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c01152af293afb9c7c2a57e4b559c5620b421f6d133261c60dd2d0cdb38e6b8" +dependencies = [ + "bytes", + "data-encoding", + "http", + "httparse", + "log", + "rand 0.9.4", + "sha1", + "thiserror 2.0.18", +] + +[[package]] +name = "typenum" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" + +[[package]] +name = "uname" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b72f89f0ca32e4db1c04e2a72f5345d59796d4866a1ee0609084569f73683dc8" +dependencies = [ + "libc", +] + +[[package]] +name = "unicase" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbc4bc3a9f746d862c45cb89d705aa10f187bb96c76001afab07a0d35ce60142" + +[[package]] +name = "unicode-bidi" +version = "0.3.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5" + [[package]] name = "unicode-ident" version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" +[[package]] +name = "unicode-normalization" +version = "0.1.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fd4f6878c9cb28d874b009da9e8d183b5abc80117c40bbd187a1fde336be6e8" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-properties" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7df058c713841ad818f1dc5d3fd88063241cc61f49f5fbea4b951e8cf5a8d71d" + +[[package]] +name = "unicode-xid" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" + +[[package]] +name = "untrusted" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" + +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[package]] +name = "ureq" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dea7109cdcd5864d4eeb1b58a1648dc9bf520360d7af16ec26d0a9354bafcfc0" +dependencies = [ + "base64 0.22.1", + "log", + "percent-encoding", + "rustls", + "rustls-pki-types", + "ureq-proto", + "utf8-zero", + "webpki-roots 1.0.6", +] + +[[package]] +name = "ureq-proto" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e994ba84b0bd1b1b0cf92878b7ef898a5c1760108fe7b6010327e274917a808c" +dependencies = [ + "base64 0.22.1", + "http", + "httparse", + "log", +] + +[[package]] +name = "url" +version = "2.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", + "serde_derive", +] + +[[package]] +name = "utf8-zero" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8c0a043c9540bae7c578c88f91dda8bd82e59ae27c21baca69c8b191aaf5a6e" + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + [[package]] name = "utf8parse" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" +[[package]] +name = "uuid" +version = "1.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddd74a9687298c6858e9b88ec8935ec45d22e8fd5e6394fa1bd4e99a87789c76" +dependencies = [ + "getrandom 0.4.2", + "js-sys", + "serde_core", + "wasm-bindgen", +] + +[[package]] +name = "valuable" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "wasip2" +version = "1.0.2+wasi-0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5" +dependencies = [ + "wit-bindgen", +] + +[[package]] +name = "wasip3" +version = "0.4.0+wasi-0.3.0-rc-2026-01-06" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5" +dependencies = [ + "wit-bindgen", +] + +[[package]] +name = "wasite" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b" + +[[package]] +name = "wasm-bindgen" +version = "0.2.114" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6532f9a5c1ece3798cb1c2cfdba640b9b3ba884f5db45973a6f442510a87d38e" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9c5522b3a28661442748e09d40924dfb9ca614b21c00d3fd135720e48b67db8" +dependencies = [ + "cfg-if", + "futures-util", + "js-sys", + "once_cell", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.114" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18a2d50fcf105fb33bb15f00e7a77b772945a2ee45dcf454961fd843e74c18e6" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.114" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03ce4caeaac547cdf713d280eda22a730824dd11e6b8c3ca9e42247b25c631e3" +dependencies = [ + "bumpalo", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.114" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75a326b8c223ee17883a4251907455a2431acc2791c98c26279376490c378c16" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "wasm-encoder" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319" +dependencies = [ + "leb128fmt", + "wasmparser", +] + +[[package]] +name = "wasm-metadata" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909" +dependencies = [ + "anyhow", + "indexmap", + "wasm-encoder", + "wasmparser", +] + +[[package]] +name = "wasm-streams" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d1ec4f6517c9e11ae630e200b2b65d193279042e28edd4a2cda233e46670bbb" +dependencies = [ + "futures-util", + "js-sys", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "wasmparser" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" +dependencies = [ + "bitflags 2.11.0", + "hashbrown 0.15.5", + "indexmap", + "semver", +] + +[[package]] +name = "web-sys" +version = "0.3.91" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "854ba17bb104abfb26ba36da9729addc7ce7f06f5c0f90f3c391f8461cca21f9" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "web-time" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webpki-root-certs" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "804f18a4ac2676ffb4e8b5b5fa9ae38af06df08162314f96a68d2a363e21a8ca" +dependencies = [ + "rustls-pki-types", +] + +[[package]] +name = "webpki-roots" +version = "0.26.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9" +dependencies = [ + "webpki-roots 1.0.6", +] + +[[package]] +name = "webpki-roots" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22cfaf3c063993ff62e73cb4311efde4db1efb31ab78a3e5c457939ad5cc0bed" +dependencies = [ + "rustls-pki-types", +] + +[[package]] +name = "which" +version = "8.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81995fafaaaf6ae47a7d0cc83c67caf92aeb7e5331650ae6ff856f7c0c60c459" +dependencies = [ + "libc", +] + +[[package]] +name = "whoami" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d4a4db5077702ca3015d3d02d74974948aba2ad9e12ab7df718ee64ccd7e97d" +dependencies = [ + "libredox", + "wasite", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows-core" +version = "0.62.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-link", + "windows-result", + "windows-strings", +] + +[[package]] +name = "windows-implement" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "windows-interface" +version = "0.59.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "windows-link" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" +[[package]] +name = "windows-registry" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02752bf7fbdcce7f2a27a742f798510f3e5ad88dbe84871e5168e2120c3d5720" +dependencies = [ + "windows-link", + "windows-result", + "windows-strings", +] + +[[package]] +name = "windows-result" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-strings" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-sys" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +dependencies = [ + "windows-targets 0.42.2", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +dependencies = [ + "windows-targets 0.53.5", +] + [[package]] name = "windows-sys" version = "0.61.2" @@ -269,3 +4730,469 @@ checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" dependencies = [ "windows-link", ] + +[[package]] +name = "windows-targets" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +dependencies = [ + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm 0.52.6", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.53.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" +dependencies = [ + "windows-link", + "windows_aarch64_gnullvm 0.53.1", + "windows_aarch64_msvc 0.53.1", + "windows_i686_gnu 0.53.1", + "windows_i686_gnullvm 0.53.1", + "windows_i686_msvc 0.53.1", + "windows_x86_64_gnu 0.53.1", + "windows_x86_64_gnullvm 0.53.1", + "windows_x86_64_msvc 0.53.1", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" + +[[package]] +name = "windows_i686_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" + +[[package]] +name = "windows_i686_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_i686_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" + +[[package]] +name = "winnow" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09dac053f1cd375980747450bfc7250c264eaae0583872e845c0c7cd578872b5" +dependencies = [ + "memchr", +] + +[[package]] +name = "wit-bindgen" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" +dependencies = [ + "wit-bindgen-rust-macro", +] + +[[package]] +name = "wit-bindgen-core" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc" +dependencies = [ + "anyhow", + "heck", + "wit-parser", +] + +[[package]] +name = "wit-bindgen-rust" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21" +dependencies = [ + "anyhow", + "heck", + "indexmap", + "prettyplease", + "syn", + "wasm-metadata", + "wit-bindgen-core", + "wit-component", +] + +[[package]] +name = "wit-bindgen-rust-macro" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a" +dependencies = [ + "anyhow", + "prettyplease", + "proc-macro2", + "quote", + "syn", + "wit-bindgen-core", + "wit-bindgen-rust", +] + +[[package]] +name = "wit-component" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2" +dependencies = [ + "anyhow", + "bitflags 2.11.0", + "indexmap", + "log", + "serde", + "serde_derive", + "serde_json", + "wasm-encoder", + "wasm-metadata", + "wasmparser", + "wit-parser", +] + +[[package]] +name = "wit-parser" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736" +dependencies = [ + "anyhow", + "id-arena", + "indexmap", + "log", + "semver", + "serde", + "serde_derive", + "serde_json", + "unicode-xid", + "wasmparser", +] + +[[package]] +name = "writeable" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" + +[[package]] +name = "yaml-rust2" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2462ea039c445496d8793d052e13787f2b90e750b833afee748e601c17621ed9" +dependencies = [ + "arraydeque", + "encoding_rs", + "hashlink", +] + +[[package]] +name = "yoke" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954" +dependencies = [ + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "zerocopy" +version = "0.8.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efbb2a062be311f2ba113ce66f697a4dc589f85e78a4aea276200804cea0ed87" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e8bc7269b54418e7aeeef514aa68f8690b8c0489a06b0136e5f57c4c5ccab89" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "zerofrom" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "zeroize" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" + +[[package]] +name = "zerotrie" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + +[[package]] +name = "zerovec" +version = "0.11.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "zmij" +version = "1.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" diff --git a/Cargo.toml b/Cargo.toml index 47987f7b26..8f2f98f24f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,9 +1,16 @@ [workspace] -members = ["website/scripts/docsmg"] +members = [ + "packages/ak-axum", + "packages/ak-common", + "packages/client-rust", + "website/scripts/docsmg", +] resolver = "3" [workspace.package] +version = "2026.8.0-rc1" authors = ["authentik Team "] +description = "Making authentication simple." edition = "2024" readme = "README.md" homepage = "https://goauthentik.io" @@ -12,18 +19,105 @@ license-file = "LICENSE" publish = false [workspace.dependencies] -clap = { version = "4.5.59", features = ["derive", "env"] } -colored = "3.1.1" -dotenvy = "0.15.7" -eyre = "0.6.12" -regex = "1.12.3" +arc-swap = "= 1.9.1" +argh = "= 0.1.19" +axum-server = { version = "= 0.8.0", features = ["tls-rustls-no-provider"] } +aws-lc-rs = { version = "= 1.16.3", features = ["fips"] } +axum = { version = "= 0.8.9", features = ["http2", "macros", "ws"] } +clap = { version = "= 4.6.1", features = ["derive", "env"] } +client-ip = { version = "0.2.1", features = ["forwarded-header"] } +color-eyre = "= 0.6.5" +colored = "= 3.1.1" +config-rs = { package = "config", version = "= 0.15.22", default-features = false, features = [ + "json", + "yaml", +] } +console-subscriber = "= 0.5.0" +dotenvy = "= 0.15.7" +durstr = "= 0.5.1" +eyre = "= 0.6.12" +forwarded-header-value = "= 0.1.1" +futures = "= 0.3.32" +glob = "= 0.3.3" +hyper-unix-socket = "= 0.6.1" +hyper-util = "= 0.1.20" +ipnet = { version = "= 2.12.0", features = ["serde"] } +json-subscriber = "= 0.2.8" +metrics = "= 0.24.5" +metrics-exporter-prometheus = { version = "= 0.18.3", default-features = false } +nix = { version = "= 0.31.2", features = ["hostname", "signal"] } +notify = "= 8.2.0" +pin-project-lite = "= 0.2.17" +pyo3 = "= 0.28.3" +pyo3-build-config = "= 0.28.3" +regex = "= 1.12.3" +reqwest = { version = "= 0.13.3", features = [ + "form", + "json", + "multipart", + "query", + "rustls", + "stream", +] } +reqwest-middleware = { version = "= 0.5.1", features = [ + "form", + "json", + "multipart", + "query", + "rustls", +] } +rustls = { version = "= 0.23.40", features = ["fips"] } +sentry = { version = "= 0.48.1", default-features = false, features = [ + "backtrace", + "contexts", + "debug-images", + "panic", + "rustls", + "reqwest", + "tower", + "tracing", +] } +serde = { version = "= 1.0.228", features = ["derive"] } +serde_json = "= 1.0.149" +serde_repr = "= 0.1.20" +serde_with = { version = "= 3.19.0", default-features = false, features = [ + "base64", +] } +sqlx = { version = "= 0.8.6", default-features = false, features = [ + "runtime-tokio", + "tls-rustls-aws-lc-rs", + "postgres", + "derive", + "macros", + "uuid", + "chrono", + "ipnet", + "json", +] } +tempfile = "= 3.27.0" +thiserror = "= 2.0.18" +time = { version = "= 0.3.47", features = ["macros"] } +tokio = { version = "= 1.52.3", features = ["full", "tracing"] } +tokio-retry2 = "= 0.9.1" +tokio-rustls = "= 0.26.4" +tokio-util = { version = "= 0.7.18", features = ["full"] } +tower = "= 0.5.3" +tower-http = { version = "= 0.6.10", features = ["timeout"] } +tracing = "= 0.1.44" +tracing-error = "= 0.2.1" +tracing-subscriber = { version = "= 0.3.23", features = [ + "env-filter", + "json", + "local-time", + "tracing-log", +] } +url = "= 2.5.8" +uuid = { version = "= 1.23.1", features = ["serde", "v4"] } +which = "= 8.0.2" -[profile.dev.package.backtrace] -opt-level = 3 - -[profile.release] -lto = true -debug = 2 +ak-axum = { package = "authentik-axum", version = "2026.8.0-rc1", path = "./packages/ak-axum" } +ak-client = { package = "authentik-client", version = "2026.8.0-rc1", path = "./packages/client-rust" } +ak-common = { package = "authentik-common", version = "2026.8.0-rc1", path = "./packages/ak-common", default-features = false } [workspace.lints.rust] ambiguous_negative_literals = "warn" @@ -60,12 +154,20 @@ perf = { priority = -1, level = "warn" } style = { priority = -1, level = "warn" } suspicious = { priority = -1, level = "warn" } ### and disable the ones we don't want +### cargo group +multiple_crate_versions = "allow" ### pedantic group +missing_errors_doc = "allow" +missing_panics_doc = "allow" +must_use_candidate = "allow" redundant_closure_for_method_calls = "allow" +struct_field_names = "allow" too_many_lines = "allow" ### nursery -redundant_pub_crate = "allow" +missing_const_for_fn = "allow" option_if_let_else = "allow" +redundant_pub_crate = "allow" +significant_drop_tightening = "allow" ### restriction group allow_attributes = "warn" allow_attributes_without_reason = "warn" @@ -78,7 +180,6 @@ create_dir = "warn" dbg_macro = "warn" default_numeric_fallback = "warn" disallowed_script_idents = "warn" -doc_paragraphs_missing_punctuation = "warn" empty_drop = "warn" empty_enum_variants_with_brackets = "warn" empty_structs_with_brackets = "warn" @@ -131,3 +232,58 @@ unused_trait_names = "warn" unwrap_in_result = "warn" unwrap_used = "warn" verbose_file_reads = "warn" + +[profile.dev.package.backtrace] +opt-level = 3 + +[profile.dev] +panic = "abort" + +[profile.release] +debug = 2 +lto = "fat" +# Because of the async runtime, we want to die straightaway if we panic. +panic = "abort" +strip = true + +[package] +name = "authentik" +version.workspace = true +authors.workspace = true +edition.workspace = true +readme.workspace = true +homepage.workspace = true +repository.workspace = true +license-file.workspace = true +publish.workspace = true + +[features] +default = ["core", "proxy"] +core = ["ak-common/core", "dep:pyo3", "dep:sqlx"] +proxy = ["ak-common/proxy"] + +[build-dependencies] +pyo3-build-config.workspace = true + +[dependencies] +ak-axum.workspace = true +ak-common.workspace = true +arc-swap.workspace = true +argh.workspace = true +axum.workspace = true +color-eyre.workspace = true +eyre.workspace = true +hyper-unix-socket.workspace = true +hyper-util.workspace = true +metrics.workspace = true +metrics-exporter-prometheus.workspace = true +nix.workspace = true +pyo3 = { workspace = true, optional = true } +sqlx = { workspace = true, optional = true } +tokio.workspace = true +tracing.workspace = true +uuid.workspace = true +which.workspace = true + +[lints] +workspace = true diff --git a/Makefile b/Makefile index 769bfc7226..5b041602e2 100644 --- a/Makefile +++ b/Makefile @@ -15,10 +15,6 @@ else SED_INPLACE = sed -i endif -GEN_API_TS = gen-ts-api -GEN_API_PY = gen-py-api -GEN_API_GO = gen-go-api - BREW_LDFLAGS := BREW_CPPFLAGS := BREW_PKG_CONFIG_PATH := @@ -78,13 +74,16 @@ rust-test: ## Run the Rust tests test: ## Run the server tests and produce a coverage report (locally) $(UV) run coverage run manage.py test --keepdb $(or $(filter-out $@,$(MAKECMDGOALS)),authentik) + $(UV) run coverage combine $(UV) run coverage html $(UV) run coverage report -lint-fix: ## Lint and automatically fix errors in the python source code. Reports spelling errors. +lint-fix-rust: + $(CARGO) +nightly fmt --all -- --config-path "${PWD}/.cargo/rustfmt.toml" + +lint-fix: lint-fix-rust ## Lint and automatically fix errors in the python source code. Reports spelling errors. $(UV) run black $(PY_SOURCES) $(UV) run ruff check --fix $(PY_SOURCES) - $(CARGO) +nightly fmt --all -- --config-path .config/rustfmt.toml lint-spellcheck: ## Reports spelling errors. npm run lint:spellcheck @@ -107,14 +106,15 @@ migrate: ## Run the Authentik Django server's migrations i18n-extract: core-i18n-extract web-i18n-extract ## Extract strings that require translation into files to send to a translation service -aws-cfn: - cd lifecycle/aws && npm i && $(UV) run npm run aws-cfn +aws-cfn: node-install + corepack npm install --prefix lifecycle/aws + $(UV) run corepack npm run aws-cfn --prefix lifecycle/aws -run-server: ## Run the main authentik server process - $(UV) run ak server +run: ## Run the main authentik server and worker processes + $(UV) run ak allinone -run-worker: ## Run the main authentik worker process - $(UV) run ak worker +run-watch: ## Run the authentik server and worker, with auto reloading + watchexec --on-busy-update=restart --stop-signal=SIGINT --exts py,rs,go --no-meta --notify -- $(UV) run ak allinone core-i18n-extract: $(UV) run ak makemessages \ @@ -122,12 +122,11 @@ core-i18n-extract: --no-obsolete \ --ignore web \ --ignore internal \ - --ignore ${GEN_API_TS} \ - --ignore ${GEN_API_GO} \ + --ignore packages/client-ts \ --ignore website \ -l en -install: node-install docs-install core-install ## Install all requires dependencies for `node`, `docs` and `core` +install: node-install web-install core-install ## Install all requires dependencies for `node`, `web` and `core` dev-drop-db: $(eval pg_user := $(shell $(UV) run python -m authentik.lib.config postgresql.user 2>/dev/null)) @@ -146,8 +145,14 @@ dev-create-db: dev-reset: dev-drop-db dev-create-db migrate ## Drop and restore the Authentik PostgreSQL instance to a "fresh install" state. update-test-mmdb: ## Update test GeoIP and ASN Databases - curl -L https://raw.githubusercontent.com/maxmind/MaxMind-DB/refs/heads/main/test-data/GeoLite2-ASN-Test.mmdb -o ${PWD}/tests/GeoLite2-ASN-Test.mmdb - curl -L https://raw.githubusercontent.com/maxmind/MaxMind-DB/refs/heads/main/test-data/GeoLite2-City-Test.mmdb -o ${PWD}/tests/GeoLite2-City-Test.mmdb + curl \ + -L \ + -o ${PWD}/tests/geoip/GeoLite2-ASN-Test.mmdb \ + https://raw.githubusercontent.com/maxmind/MaxMind-DB/refs/heads/main/test-data/GeoLite2-ASN-Test.mmdb + curl \ + -L \ + -o ${PWD}/tests/geoip/GeoLite2-City-Test.mmdb \ + https://raw.githubusercontent.com/maxmind/MaxMind-DB/refs/heads/main/test-data/GeoLite2-City-Test.mmdb bump: ## Bump authentik version. Usage: make bump version=20xx.xx.xx ifndef version @@ -156,6 +161,7 @@ endif $(eval current_version := $(shell cat ${PWD}/internal/constants/VERSION)) $(SED_INPLACE) 's/^version = ".*"/version = "$(version)"/' ${PWD}/pyproject.toml $(SED_INPLACE) 's/^VERSION = ".*"/VERSION = "$(version)"/' ${PWD}/authentik/__init__.py + $(SED_INPLACE) "s/version = \"${current_version}\"/version = \"$(version)\"/" ${PWD}/Cargo.toml ${PWD}/Cargo.lock $(MAKE) gen-build gen-compose aws-cfn $(SED_INPLACE) "s/\"${current_version}\"/\"$(version)\"/" ${PWD}/package.json ${PWD}/package-lock.json ${PWD}/web/package.json ${PWD}/web/package-lock.json echo -n $(version) > ${PWD}/internal/constants/VERSION @@ -189,7 +195,7 @@ gen-changelog: ## (Release) generate the changelog based from the commits since gen-diff: ## (Release) generate the changelog diff between the current schema and the last version $(eval last_version := $(shell git tag --list 'version/*' --sort 'version:refname' | grep -vE 'rc\d+$$' | tail -1)) git show ${last_version}:schema.yml > schema-old.yml - docker compose -f scripts/api/compose.yml run --rm --user "${UID}:${GID}" diff \ + docker compose -f scripts/compose.yml run --rm --user "${UID}:${GID}" diff \ --markdown \ /local/diff.md \ /local/schema-old.yml \ @@ -199,88 +205,79 @@ gen-diff: ## (Release) generate the changelog diff between the current schema a $(SED_INPLACE) 's/}/}/g' diff.md npx prettier --write diff.md -gen-clean-ts: ## Remove generated API client for TypeScript - rm -rf ${PWD}/${GEN_API_TS}/ - rm -rf ${PWD}/web/node_modules/@goauthentik/api/ +gen-client-go: ## Build and install the authentik API for Golang + $(UV) run make -C "${PWD}/packages/client-go" build -gen-clean-py: ## Remove generated API client for Python - rm -rf ${PWD}/${GEN_API_PY} +gen-client-rust: ## Build and install the authentik API for Rust + $(UV) run make -C "${PWD}/packages/client-rust" build version=${NPM_VERSION} + make lint-fix-rust -gen-clean-go: ## Remove generated API client for Go - rm -rf ${PWD}/${GEN_API_GO} +gen-client-ts: ## Build and install the authentik API for Typescript into the authentik UI Application + make -C "${PWD}/packages/client-ts" build + npm --prefix web install -gen-clean: gen-clean-ts gen-clean-go gen-clean-py ## Remove generated API clients +_gen-clients: gen-client-go gen-client-rust gen-client-ts +gen-clients: ## Build and install API clients used by authentik + $(MAKE) _gen-clients -j -gen-client-ts: gen-clean-ts ## Build and install the authentik API for Typescript into the authentik UI Application - docker compose -f scripts/api/compose.yml run --rm --user "${UID}:${GID}" gen \ - generate \ - -i /local/schema.yml \ - -g typescript-fetch \ - -o /local/${GEN_API_TS} \ - -c /local/scripts/api/ts-config.yaml \ - --additional-properties=npmVersion=${NPM_VERSION} \ - --git-repo-id authentik \ - --git-user-id goauthentik - - cd ${PWD}/${GEN_API_TS} && npm i - cd ${PWD}/${GEN_API_TS} && npm link - cd ${PWD}/web && npm link @goauthentik/api - -gen-client-py: gen-clean-py ## Build and install the authentik API for Python - mkdir -p ${PWD}/${GEN_API_PY} - git clone --depth 1 https://github.com/goauthentik/client-python.git ${PWD}/${GEN_API_PY} - cp ${PWD}/schema.yml ${PWD}/${GEN_API_PY} - make -C ${PWD}/${GEN_API_PY} build version=${NPM_VERSION} - -gen-client-go: gen-clean-go ## Build and install the authentik API for Golang - mkdir -p ${PWD}/${GEN_API_GO} - git clone --depth 1 https://github.com/goauthentik/client-go.git ${PWD}/${GEN_API_GO} - cp ${PWD}/schema.yml ${PWD}/${GEN_API_GO} - make -C ${PWD}/${GEN_API_GO} build version=${NPM_VERSION} - go mod edit -replace goauthentik.io/api/v3=./${GEN_API_GO} +gen: gen-build gen-clients ## Build and install API schema and clients used by authentik gen-dev-config: ## Generate a local development config file $(UV) run scripts/generate_config.py -gen: gen-build gen-client-ts - ######################### ## Node.js ######################### -node-install: ## Install the necessary libraries to build Node.js packages - npm ci - npm ci --prefix web +# Packages whose install/postinstall scripts are required for correct +# operation (binary downloads, native bindings). The root .npmrc sets +# `ignore-scripts=true` to block dependency lifecycle scripts by default; +# this list is rebuilt explicitly with scripts re-enabled. Audit any +# additions: each entry runs arbitrary code at install time. +TRUSTED_INSTALL_SCRIPTS := esbuild chromedriver tree-sitter tree-sitter-json + +node-preinstall: ## Install corepack and lint the runtime to ensure the correct Node.js version is being used before installing dependencies. + node ./scripts/node/setup-corepack.mjs + node ./scripts/node/lint-runtime.mjs + +node-install: node-preinstall ## Install the necessary libraries to build Node.js packages + corepack npm ci ######################### ## Web ######################### +web-install: ## Install the necessary libraries to build the Authentik UI + corepack npm ci --prefix web + +web-postinstall: ## Trigger postinstall scripts for packages with native bindings or binary downloads, which are blocked by default for security reasons. + corepack npm rebuild --prefix web --ignore-scripts=false --foreground-scripts $(TRUSTED_INSTALL_SCRIPTS) + web-build: node-install ## Build the Authentik UI - npm run --prefix web build + corepack npm run --prefix web build web: web-lint-fix web-lint web-check-compile ## Automatically fix formatting issues in the Authentik UI source code, lint the code, and compile it web-test: ## Run tests for the Authentik UI - npm run --prefix web test + corepack npm run --prefix web test web-watch: ## Build and watch the Authentik UI for changes, updating automatically - npm run --prefix web watch + corepack npm run --prefix web watch web-storybook-watch: ## Build and run the storybook documentation server - npm run --prefix web storybook + corepack npm run --prefix web storybook web-lint-fix: - npm run --prefix web prettier + corepack npm run --prefix web prettier web-lint: - npm run --prefix web lint - npm run --prefix web lit-analyse + corepack npm run --prefix web lint + corepack npm run --prefix web lit-analyse web-check-compile: - npm run --prefix web tsc + corepack npm run --prefix web tsc web-i18n-extract: - npm run --prefix web extract-locales + corepack npm run --prefix web extract-locales ######################### ## Docs @@ -288,42 +285,42 @@ web-i18n-extract: docs: docs-lint-fix docs-build ## Automatically fix formatting issues in the Authentik docs source code, lint the code, and compile it -docs-install: - npm ci --prefix website +docs-install: node-install ## Install the necessary libraries to build the Authentik documentation + corepack npm ci --prefix website docs-lint-fix: lint-spellcheck - npm run --prefix website prettier + corepack npm run --prefix website prettier docs-build: - npm run --prefix website build + node ./scripts/node/lint-runtime.mjs website + corepack npm run --prefix website build docs-watch: ## Build and watch the topics documentation - npm run --prefix website start + corepack npm run --prefix website start integrations: docs-lint-fix integrations-build ## Fix formatting issues in the integrations source code, lint the code, and compile it integrations-build: - npm run --prefix website -w integrations build + corepack npm run --prefix website -w integrations build integrations-watch: ## Build and watch the Integrations documentation - npm run --prefix website -w integrations start + corepack npm run --prefix website -w integrations start docs-api-build: - npm run --prefix website -w api build + corepack npm run --prefix website -w api build docs-api-watch: ## Build and watch the API documentation - npm run --prefix website -w api build:api - npm run --prefix website -w api start + corepack npm run --prefix website -w api generate + corepack npm run --prefix website -w api start docs-api-clean: ## Clean generated API documentation - npm run --prefix website -w api build:api:clean + corepack npm run --prefix website -w api build:api:clean ######################### ## Docker ######################### docker: ## Build a docker image of the current source tree - mkdir -p ${GEN_API_TS} DOCKER_BUILDKIT=1 docker build . -f lifecycle/container/Dockerfile --progress plain --tag ${DOCKER_IMAGE} test-docker: @@ -359,18 +356,19 @@ ci-lint-pending-migrations: ci--meta-debug $(UV) run ak makemigrations --check ci-lint-cargo-deny: ci--meta-debug - $(CARGO) deny --locked --workspace check --config .config/deny.toml + $(CARGO) deny --locked --workspace check --config "${PWD}/.cargo/deny.toml" ci-lint-cargo-machete: ci--meta-debug $(CARGO) machete ci-lint-rustfmt: ci--meta-debug - $(CARGO) +nightly fmt --all --check -- --config-path .config/rustfmt.toml + $(CARGO) +nightly fmt --all --check -- --config-path "${PWD}/.cargo/rustfmt.toml" ci-lint-clippy: ci--meta-debug - $(CARGO) clippy -- -D warnings + $(CARGO) clippy --workspace -- -D warnings ci-test: ci--meta-debug - $(UV) run coverage run manage.py test --keepdb authentik + $(UV) run coverage run manage.py test --keepdb --parallel auto authentik + $(UV) run coverage combine $(UV) run coverage report $(UV) run coverage xml diff --git a/SECURITY.md b/SECURITY.md index 9c54d9b8d7..7148e39050 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -18,10 +18,10 @@ Even if the issue is not a CVE, we still greatly appreciate your help in hardeni (.x being the latest patch release for each version) -| Version | Supported | -| ---------- | ---------- | -| 2025.12.x | ✅ | -| 2026.2.x | ✅ | +| Version | Supported | +| --------- | --------- | +| 2025.12.x | ✅ | +| 2026.2.x | ✅ | ## Reporting a Vulnerability @@ -60,6 +60,40 @@ authentik reserves the right to reclassify CVSS as necessary. To determine sever | 7.0 – 8.9 | High | | 9.0 – 10.0 | Critical | +## Intended functionality + +The following capabilities are part of intentional system design and should not be reported as security vulnerabilities: + +- Expressions (property mappings/policies/prompts) can execute arbitrary Python code without safeguards. + +This is expected behavior. Any user with permission to create or modify objects containing expression fields can write code that is executed within authentik. If a vulnerability allows a user without the required permissions to write or modify code and have it executed, that would be a valid security report. + +However, the fact that expressions are executed as part of normal operations is not considered a privilege escalation or security vulnerability. + +- Blueprints can access all files on the filesystem. + +This access is intentional to allow legitimate configuration and deployment tasks. It does not represent a security problem by itself. + +- Importing blueprints allows arbitrary modification of application objects. + +This is intended functionality. This behavior reflects the privileged design of blueprint imports. It is "exploitable" when importing blueprints from untrusted sources without reviewing the blueprint beforehand. However, any method to create, modify or execute blueprints without the required permissions would be a valid security report. + +- Flow imports may contain objects other than flows (such as policies, users, groups, etc.) + +This is expected behavior as flow imports are blueprint files. + +- Prompt HTML is not escaped. + +Prompts intentionally allow raw HTML, including script tags, so they can be used to create interactive or customized user interface elements. Because of this, scripts within prompts may affect or interact with the surrounding page as designed. + +- Open redirects that do not include tokens or other sensitive information are not considered a security vulnerability. + +Redirects that only change navigation flow and do not expose session tokens, API keys, or other confidential data are considered acceptable and do not require reporting. + +- Outgoing network requests are not filtered. + +The destinations of outgoing network requests (HTTP, TCP, etc.) made by authentik to configurable endpoints through objects such as OAuth Sources, SSO Providers, and others are not validated. Depending on your threat model, these requests should be restricted at the network level using appropriate firewall or network policies. + ## Disclosure process 1. Report from Github or Issue is reported via Email as listed above. diff --git a/authentik/__init__.py b/authentik/__init__.py index 02c6b21c4f..df8599dabc 100644 --- a/authentik/__init__.py +++ b/authentik/__init__.py @@ -3,7 +3,7 @@ from functools import lru_cache from os import environ -VERSION = "2026.5.0-rc1" +VERSION = "2026.8.0-rc1" ENV_GIT_HASH_KEY = "GIT_BUILD_HASH" diff --git a/authentik/admin/api/meta.py b/authentik/admin/api/meta.py index bdece26f5c..434006e9c9 100644 --- a/authentik/admin/api/meta.py +++ b/authentik/admin/api/meta.py @@ -8,8 +8,8 @@ from rest_framework.response import Response from rest_framework.viewsets import ViewSet from authentik.core.api.utils import PassiveSerializer +from authentik.lib.api import Models from authentik.lib.utils.reflection import get_apps -from authentik.policies.event_matcher.models import model_choices class AppSerializer(PassiveSerializer): @@ -42,6 +42,6 @@ class ModelViewSet(ViewSet): def list(self, request: Request) -> Response: """Read-only view list all installed models""" data = [] - for name, label in model_choices(): + for name, label in Models.choices: data.append({"name": name, "label": label}) return Response(AppSerializer(data, many=True).data) diff --git a/authentik/admin/files/backends/base.py b/authentik/admin/files/backends/base.py index db1c0ba820..2a542303c1 100644 --- a/authentik/admin/files/backends/base.py +++ b/authentik/admin/files/backends/base.py @@ -106,6 +106,7 @@ class Backend: self, name: str, request: HttpRequest | None = None, + use_cache: bool = True, ) -> dict[str, str] | None: """ Get URLs for each theme variant when filename contains %(theme)s. @@ -121,7 +122,7 @@ class Backend: return None return { - theme: self.file_url(substitute_theme(name, theme), request, use_cache=True) + theme: self.file_url(substitute_theme(name, theme), request, use_cache=use_cache) for theme in get_valid_themes() } diff --git a/authentik/admin/files/backends/passthrough.py b/authentik/admin/files/backends/passthrough.py index 6101ecaa11..036a7565fc 100644 --- a/authentik/admin/files/backends/passthrough.py +++ b/authentik/admin/files/backends/passthrough.py @@ -51,6 +51,7 @@ class PassthroughBackend(Backend): self, name: str, request: HttpRequest | None = None, + use_cache: bool = True, ) -> dict[str, str] | None: """Support themed URLs for external URLs with %(theme)s placeholder. diff --git a/authentik/admin/files/backends/s3.py b/authentik/admin/files/backends/s3.py index f50f43b073..2a867a3a58 100644 --- a/authentik/admin/files/backends/s3.py +++ b/authentik/admin/files/backends/s3.py @@ -1,7 +1,7 @@ from collections.abc import Generator, Iterator from contextlib import contextmanager from tempfile import SpooledTemporaryFile -from urllib.parse import urlsplit +from urllib.parse import urlsplit, urlunsplit import boto3 from botocore.config import Config @@ -164,16 +164,19 @@ class S3Backend(ManageableBackend): ) def _file_url(name: str, request: HttpRequest | None) -> str: + client = self.client params = { "Bucket": self.bucket_name, "Key": f"{self.base_path}/{name}", } - url = self.client.generate_presigned_url( - "get_object", - Params=params, - ExpiresIn=expires_in, - HttpMethod="GET", + operation_name = "GetObject" + operation_model = client.meta.service_model.operation_model(operation_name) + request_dict = client._convert_to_request_dict( + params, + operation_model, + endpoint_url=client.meta.endpoint_url, + context={"is_presign_request": True}, ) # Support custom domain for S3-compatible storage (so not AWS) @@ -183,9 +186,8 @@ class S3Backend(ManageableBackend): CONFIG.get(f"storage.{self.name}.custom_domain", None), ) if custom_domain: - parsed = urlsplit(url) scheme = "https" if use_https else "http" - path = parsed.path + path = request_dict["url_path"] # When using path-style addressing, the presigned URL contains the bucket # name in the path (e.g., /bucket-name/key). Since custom_domain must @@ -200,9 +202,22 @@ class S3Backend(ManageableBackend): if not path.startswith("/"): path = f"/{path}" - url = f"{scheme}://{custom_domain}{path}?{parsed.query}" + custom_base = urlsplit(f"{scheme}://{custom_domain}") - return url + # Sign the final public URL instead of signing the internal S3 endpoint and + # rewriting it afterwards. Presigned SigV4 URLs include the host header in the + # canonical request, so post-sign host changes break strict backends like RustFS. + public_path = f"{custom_base.path.rstrip('/')}{path}" if custom_base.path else path + request_dict["url_path"] = public_path + request_dict["url"] = urlunsplit( + (custom_base.scheme, custom_base.netloc, public_path, "", "") + ) + + return client._request_signer.generate_presigned_url( + request_dict, + operation_name, + expires_in=expires_in, + ) if use_cache: return self._cache_get_or_set(name, request, _file_url, expires_in) diff --git a/authentik/admin/files/backends/tests/test_s3_backend.py b/authentik/admin/files/backends/tests/test_s3_backend.py index 769d886f40..23aa8ddfb9 100644 --- a/authentik/admin/files/backends/tests/test_s3_backend.py +++ b/authentik/admin/files/backends/tests/test_s3_backend.py @@ -1,4 +1,5 @@ from unittest import skipUnless +from urllib.parse import parse_qs, urlsplit from botocore.exceptions import UnsupportedSignatureVersionError from django.test import TestCase @@ -168,6 +169,44 @@ class TestS3Backend(FileTestS3BackendMixin, TestCase): f"URL: {url}", ) + @CONFIG.patch("storage.s3.secure_urls", False) + @CONFIG.patch("storage.s3.addressing_style", "path") + def test_file_url_custom_domain_resigns_for_custom_host(self): + """Test presigned URLs are signed for the custom domain host. + + Host-changing custom domains must produce a signature query string for + the public host, not reuse the internal endpoint signature. + """ + bucket_name = self.media_s3_bucket_name + key_name = "application-icons/test.svg" + custom_domain = f"files.example.test:8020/{bucket_name}" + + endpoint_signed_url = self.media_s3_backend.client.generate_presigned_url( + "get_object", + Params={ + "Bucket": bucket_name, + "Key": f"{self.media_s3_backend.base_path}/{key_name}", + }, + ExpiresIn=900, + HttpMethod="GET", + ) + + with CONFIG.patch("storage.media.s3.custom_domain", custom_domain): + custom_url = self.media_s3_backend.file_url(key_name, use_cache=False) + + endpoint_parts = urlsplit(endpoint_signed_url) + custom_parts = urlsplit(custom_url) + + self.assertEqual(custom_parts.scheme, "http") + self.assertEqual(custom_parts.netloc, "files.example.test:8020") + self.assertEqual(parse_qs(custom_parts.query)["X-Amz-SignedHeaders"], ["host"]) + self.assertNotEqual( + custom_parts.query, + endpoint_parts.query, + "Custom-domain URLs must be signed for the public host, not reuse the endpoint " + "signature query string.", + ) + def test_themed_urls_without_theme_variable(self): """Test themed_urls returns None when filename has no %(theme)s""" result = self.media_s3_backend.themed_urls("logo.png") diff --git a/authentik/admin/files/manager.py b/authentik/admin/files/manager.py index 960b1280c4..1d3cf3e383 100644 --- a/authentik/admin/files/manager.py +++ b/authentik/admin/files/manager.py @@ -74,6 +74,10 @@ class FileManager: ) -> str: """ Get URL for accessing the file. + + Set ``use_cache=False`` when the caller needs a fresh signed URL instead + of a cached one, for example when serializing flow/login payloads that + may be refreshed after the previous JWT has expired. """ if not name: return "" @@ -83,7 +87,7 @@ class FileManager: for backend in self.backends: if backend.supports_file(name): - return backend.file_url(name, request) + return backend.file_url(name, request, use_cache=use_cache) LOGGER.warning(f"Could not find file backend for file: {name}") return "" @@ -92,10 +96,14 @@ class FileManager: self, name: str | None, request: HttpRequest | Request | None = None, + use_cache: bool = True, ) -> dict[str, str] | None: """ Get URLs for each theme variant when filename contains %(theme)s. + ``use_cache`` has the same semantics as ``file_url()`` and allows + callers to force regeneration of expiring signed URLs. + Returns dict mapping theme to URL if %(theme)s present, None otherwise. """ if not name: @@ -106,7 +114,7 @@ class FileManager: for backend in self.backends: if backend.supports_file(name): - return backend.themed_urls(name, request) + return backend.themed_urls(name, request, use_cache=use_cache) return None diff --git a/authentik/admin/files/tests/test_manager.py b/authentik/admin/files/tests/test_manager.py index bc89d5ea18..647c46c539 100644 --- a/authentik/admin/files/tests/test_manager.py +++ b/authentik/admin/files/tests/test_manager.py @@ -1,6 +1,7 @@ """Test file service layer""" from unittest import skipUnless +from unittest.mock import Mock from urllib.parse import urlparse from django.http import HttpRequest @@ -53,6 +54,19 @@ class TestResolveFileUrlBasic(TestCase): result = manager.file_url("/static/authentik/sources/icon.svg") self.assertEqual(result, "/static/authentik/sources/icon.svg") + def test_file_url_forwards_use_cache(self): + """Test file_url forwards use_cache to backend.""" + manager = FileManager(FileUsage.MEDIA) + backend = Mock() + backend.supports_file.return_value = True + backend.file_url.return_value = "/files/media/public/test.png?token=fresh" + manager.backends = [backend] + + result = manager.file_url("test.png", use_cache=False) + + self.assertEqual(result, "/files/media/public/test.png?token=fresh") + backend.file_url.assert_called_once_with("test.png", None, use_cache=False) + class TestResolveFileUrlFileBackend(FileTestFileBackendMixin, TestCase): def test_resolve_storage_file(self): diff --git a/authentik/api/authentication.py b/authentik/api/authentication.py index cc0b1323f6..d1ea694103 100644 --- a/authentik/api/authentication.py +++ b/authentik/api/authentication.py @@ -42,11 +42,29 @@ def validate_auth(header: bytes, format="bearer") -> str | None: return auth_credentials -class IPCUser(AnonymousUser): +class VirtualUser(AnonymousUser): + is_active = True + + @property + def type(self): + return UserTypes.INTERNAL_SERVICE_ACCOUNT + + @property + def is_anonymous(self): + return False + + @property + def is_authenticated(self): + return True + + def all_roles(self): + return [] + + +class IPCUser(VirtualUser): """'Virtual' user for IPC communication between authentik core and the authentik router""" username = "authentik:system" - is_active = True is_superuser = True @property @@ -62,17 +80,6 @@ class IPCUser(AnonymousUser): def has_module_perms(self, module): return True - @property - def is_anonymous(self): - return False - - @property - def is_authenticated(self): - return True - - def all_roles(self): - return [] - class TokenAuthentication(BaseAuthentication): """Token-based authentication using HTTP Bearer authentication""" @@ -106,14 +113,14 @@ class TokenAuthentication(BaseAuthentication): if not auth_credentials: return None # first, check traditional tokens - key_token = Token.filter_not_expired( + key_token = Token.objects.filter( key=auth_credentials, intent=TokenIntents.INTENT_API ).first() if key_token: CTX_AUTH_VIA.set("api_token") return key_token.user, key_token # then try to auth via JWT - jwt_token = AccessToken.filter_not_expired( + jwt_token = AccessToken.objects.filter( token=auth_credentials, _scope__icontains=SCOPE_AUTHENTIK_API ).first() if jwt_token: diff --git a/authentik/api/ordering.py b/authentik/api/ordering.py new file mode 100644 index 0000000000..3b10d5c33a --- /dev/null +++ b/authentik/api/ordering.py @@ -0,0 +1,36 @@ +from django.db.models import F, QuerySet +from rest_framework.filters import OrderingFilter +from rest_framework.request import Request +from rest_framework.views import APIView + + +class NullsAwareOrderingFilter(OrderingFilter): + """OrderingFilter that sorts NULL values consistently. + + For any nullable field, NULLs are treated as the smallest possible value: + - ascending → NULLs appear first (nulls_first=True) + - descending → NULLs appear last (nulls_last=True) + """ + + def _nullable_field_names(self, queryset: QuerySet) -> set[str]: + return {f.name for f in queryset.model._meta.get_fields() if hasattr(f, "null") and f.null} + + def filter_queryset(self, request: Request, queryset: QuerySet, view: APIView): + queryset = super().filter_queryset(request, queryset, view) + ordering = queryset.query.order_by + if not ordering: + return queryset + nullable = self._nullable_field_names(queryset) + new_ordering = [] + changed = False + for term in ordering: + name = term.lstrip("-") + if name in nullable: + changed = True + if term.startswith("-"): + new_ordering.append(F(name).desc(nulls_last=True)) + else: + new_ordering.append(F(name).asc(nulls_first=True)) + else: + new_ordering.append(term) + return queryset.order_by(*new_ordering) if changed else queryset diff --git a/authentik/api/pagination.py b/authentik/api/pagination.py index b259920773..abd481fede 100644 --- a/authentik/api/pagination.py +++ b/authentik/api/pagination.py @@ -1,10 +1,18 @@ """Pagination which includes total pages and current page""" +from typing import TYPE_CHECKING + from drf_spectacular.plumbing import build_object_type from rest_framework import pagination from rest_framework.response import Response -from authentik.api.v3.schema.response import PAGINATION +from authentik.api.search.ql import QLSearch +from authentik.api.v3.schema.pagination import PAGINATION +from authentik.api.v3.schema.search import AUTOCOMPLETE_SCHEMA + +if TYPE_CHECKING: + from django.db.models import QuerySet + from rest_framework.request import Request class Pagination(pagination.PageNumberPagination): @@ -13,14 +21,14 @@ class Pagination(pagination.PageNumberPagination): page_query_param = "page" page_size_query_param = "page_size" - def get_page_size(self, request): + def get_page_size(self, request: Request) -> int: if self.page_size_query_param in request.query_params: page_size = super().get_page_size(request) if page_size is not None: return min(super().get_page_size(request), request.tenant.pagination_max_page_size) return request.tenant.pagination_default_page_size - def get_paginated_response(self, data): + def get_paginated_response(self, data) -> Response: previous_page_number = 0 if self.page.has_previous(): previous_page_number = self.page.previous_page_number() @@ -39,16 +47,33 @@ class Pagination(pagination.PageNumberPagination): "end_index": self.page.end_index(), }, "results": data, + "autocomplete": self.get_autocomplete(), } ) + def paginate_queryset(self, queryset: QuerySet, request: Request, view=None): + self.view = view + return super().paginate_queryset(queryset, request, view) + + def get_autocomplete(self): + schema = QLSearch().get_schema(self.request, self.view) + introspections = {} + if hasattr(self.view, "get_ql_fields"): + from authentik.api.search.schema import AKQLSchemaSerializer + + introspections = AKQLSchemaSerializer().serialize( + schema(self.page.paginator.object_list.model) + ) + return introspections + def get_paginated_response_schema(self, schema): return build_object_type( properties={ "pagination": PAGINATION.ref, "results": schema, + "autocomplete": AUTOCOMPLETE_SCHEMA.ref, }, - required=["pagination", "results"], + required=["pagination", "results", "autocomplete"], ) diff --git a/authentik/api/schema.py b/authentik/api/schema.py deleted file mode 100644 index da8c88122d..0000000000 --- a/authentik/api/schema.py +++ /dev/null @@ -1,103 +0,0 @@ -"""Error Response schema, from https://github.com/axnsan12/drf-yasg/issues/224""" - -from collections.abc import Callable -from typing import Any - -from drf_spectacular.generators import SchemaGenerator -from drf_spectacular.plumbing import ResolvedComponent -from drf_spectacular.renderers import OpenApiJsonRenderer -from drf_spectacular.settings import spectacular_settings -from structlog.stdlib import get_logger - -from authentik.api.apps import AuthentikAPIConfig -from authentik.api.v3.schema.query import QUERY_PARAMS -from authentik.api.v3.schema.response import ( - GENERIC_ERROR, - GENERIC_ERROR_RESPONSE, - PAGINATION, - VALIDATION_ERROR, - VALIDATION_ERROR_RESPONSE, -) - -LOGGER = get_logger() - - -def preprocess_schema_exclude_non_api(endpoints: list[tuple[str, Any, Any, Callable]], **kwargs): - """Filter out all API Views which are not mounted under /api""" - return [ - (path, path_regex, method, callback) - for path, path_regex, method, callback in endpoints - if path.startswith("/" + AuthentikAPIConfig.mountpoint) - ] - - -def postprocess_schema_register( - result: dict[str, Any], generator: SchemaGenerator, **kwargs -) -> dict[str, Any]: - """Register custom schema components""" - LOGGER.debug("Registering custom schemas") - generator.registry.register_on_missing(PAGINATION) - generator.registry.register_on_missing(GENERIC_ERROR) - generator.registry.register_on_missing(GENERIC_ERROR_RESPONSE) - generator.registry.register_on_missing(VALIDATION_ERROR) - generator.registry.register_on_missing(VALIDATION_ERROR_RESPONSE) - for query in QUERY_PARAMS.values(): - generator.registry.register_on_missing(query) - return result - - -def postprocess_schema_responses( - result: dict[str, Any], generator: SchemaGenerator, **kwargs -) -> dict[str, Any]: - """Default error responses""" - LOGGER.debug("Adding default error responses") - for path in result["paths"].values(): - for method in path.values(): - method["responses"].setdefault("400", VALIDATION_ERROR_RESPONSE.ref) - method["responses"].setdefault("403", GENERIC_ERROR_RESPONSE.ref) - - result["components"] = generator.registry.build(spectacular_settings.APPEND_COMPONENTS) - - # This is a workaround for authentik/stages/prompt/stage.py - # since the serializer PromptChallengeResponse - # accepts dynamic keys - for component in result["components"]["schemas"]: - if component == "PromptChallengeResponseRequest": - comp = result["components"]["schemas"][component] - comp["additionalProperties"] = {} - return result - - -def postprocess_schema_query_params( - result: dict[str, Any], generator: SchemaGenerator, **kwargs -) -> dict[str, Any]: - """Optimize pagination parameters, instead of redeclaring parameters for each endpoint - declare them globally and refer to them""" - LOGGER.debug("Deduplicating query parameters") - for path in result["paths"].values(): - for method in path.values(): - for idx, param in enumerate(method.get("parameters", [])): - if param["name"] not in QUERY_PARAMS: - continue - method["parameters"][idx] = QUERY_PARAMS[param["name"]].ref - return result - - -def postprocess_schema_remove_unused( - result: dict[str, Any], generator: SchemaGenerator, **kwargs -) -> dict[str, Any]: - """Remove unused components""" - # To check if the schema is used, render it to JSON and then substring check that - # less efficient than walking through the tree but a lot simpler and no - # possibility that we miss something - raw = OpenApiJsonRenderer().render(result, renderer_context={}).decode() - count = 0 - for key in result["components"][ResolvedComponent.SCHEMA].keys(): - schema_usages = raw.count(f"#/components/{ResolvedComponent.SCHEMA}/{key}") - if schema_usages >= 1: - continue - del generator.registry[(key, ResolvedComponent.SCHEMA)] - count += 1 - LOGGER.debug("Removing unused components", count=count) - result["components"] = generator.registry.build(spectacular_settings.APPEND_COMPONENTS) - return result diff --git a/authentik/enterprise/search/__init__.py b/authentik/api/search/__init__.py similarity index 100% rename from authentik/enterprise/search/__init__.py rename to authentik/api/search/__init__.py diff --git a/authentik/enterprise/search/fields.py b/authentik/api/search/fields.py similarity index 100% rename from authentik/enterprise/search/fields.py rename to authentik/api/search/fields.py diff --git a/authentik/enterprise/search/ql.py b/authentik/api/search/ql.py similarity index 83% rename from authentik/enterprise/search/ql.py rename to authentik/api/search/ql.py index 8d9d0fe50a..405e6b8d9c 100644 --- a/authentik/enterprise/search/ql.py +++ b/authentik/api/search/ql.py @@ -1,25 +1,17 @@ """DjangoQL search""" -from django.apps import apps from django.db.models import QuerySet from djangoql.ast import Name from djangoql.exceptions import DjangoQLError from djangoql.queryset import apply_search from djangoql.schema import DjangoQLSchema -from drf_spectacular.plumbing import ResolvedComponent, build_object_type from rest_framework.filters import SearchFilter from rest_framework.request import Request from structlog.stdlib import get_logger -from authentik.enterprise.search.fields import JSONSearchField +from authentik.api.search.fields import JSONSearchField LOGGER = get_logger() -AUTOCOMPLETE_SCHEMA = ResolvedComponent( - name="Autocomplete", - object="Autocomplete", - type=ResolvedComponent.SCHEMA, - schema=build_object_type(additionalProperties={}), -) class BaseSchema(DjangoQLSchema): @@ -48,10 +40,6 @@ class QLSearch(SearchFilter): super().__init__() self._fallback = SearchFilter() - @property - def enabled(self): - return apps.get_app_config("authentik_enterprise").enabled() - def get_search_terms(self, request: Request) -> str: """Search terms are set by a ?search=... query parameter, and may be comma and/or whitespace delimited.""" @@ -73,7 +61,7 @@ class QLSearch(SearchFilter): def filter_queryset(self, request: Request, queryset: QuerySet, view) -> QuerySet: search_query = self.get_search_terms(request) schema = self.get_schema(request, view) - if len(search_query) == 0 or not self.enabled: + if len(search_query) == 0: return self._fallback.filter_queryset(request, queryset, view) try: return apply_search(queryset, search_query, schema=schema) diff --git a/authentik/enterprise/search/schema.py b/authentik/api/search/schema.py similarity index 66% rename from authentik/enterprise/search/schema.py rename to authentik/api/search/schema.py index a0f57de894..31d801b5be 100644 --- a/authentik/enterprise/search/schema.py +++ b/authentik/api/search/schema.py @@ -1,8 +1,6 @@ from djangoql.serializers import DjangoQLSchemaSerializer -from drf_spectacular.generators import SchemaGenerator -from authentik.enterprise.search.fields import JSONSearchField -from authentik.enterprise.search.ql import AUTOCOMPLETE_SCHEMA +from authentik.api.search.fields import JSONSearchField class AKQLSchemaSerializer(DjangoQLSchemaSerializer): @@ -20,9 +18,3 @@ class AKQLSchemaSerializer(DjangoQLSchemaSerializer): if isinstance(field, JSONSearchField): result["relation"] = field.relation() return result - - -def postprocess_schema_search_autocomplete(result, generator: SchemaGenerator, **kwargs): - generator.registry.register_on_missing(AUTOCOMPLETE_SCHEMA) - - return result diff --git a/authentik/api/tests/test_ordering.py b/authentik/api/tests/test_ordering.py new file mode 100644 index 0000000000..207698fd81 --- /dev/null +++ b/authentik/api/tests/test_ordering.py @@ -0,0 +1,59 @@ +from django.db.models import OrderBy +from django.test import TestCase +from rest_framework.request import Request +from rest_framework.test import APIRequestFactory + +from authentik.api.ordering import NullsAwareOrderingFilter +from authentik.core.models import Token, User + + +class MockView: + ordering_fields = "__all__" + ordering = None + + +class TestNullsAwareOrderingFilter(TestCase): + + def setUp(self): + self.filter = NullsAwareOrderingFilter() + self.view = MockView() + factory = APIRequestFactory() + self._req = lambda ordering: Request(factory.get("/", {"ordering": ordering})) + + def _order_by(self, model, ordering): + qs = model.objects.all() + return self.filter.filter_queryset(self._req(ordering), qs, self.view).query.order_by + + def test_nullable_asc_nulls_first(self): + """Ascending sort on a nullable field rewrites to nulls_first=True.""" + (expr,) = self._order_by(User, "last_login") + self.assertIsInstance(expr, OrderBy) + self.assertFalse(expr.descending) + self.assertTrue(expr.nulls_first) + + def test_nullable_desc_nulls_last(self): + """Descending sort on a nullable field rewrites to nulls_last=True.""" + (expr,) = self._order_by(User, "-last_login") + self.assertIsInstance(expr, OrderBy) + self.assertTrue(expr.descending) + self.assertTrue(expr.nulls_last) + + def test_non_nullable_passes_through(self): + """Non-nullable fields are left as plain string terms.""" + (expr,) = self._order_by(User, "username") + self.assertEqual(expr, "username") + + def test_mixed_ordering(self): + """Only nullable terms are rewritten; non-nullable terms pass through unchanged.""" + first, second = self._order_by(User, "username,-last_login") + self.assertEqual(first, "username") + self.assertIsInstance(second, OrderBy) + self.assertTrue(second.descending) + self.assertTrue(second.nulls_last) + + def test_expires_nullable(self): + """expires on ExpiringModel is nullable and is rewritten correctly.""" + (expr,) = self._order_by(Token, "-expires") + self.assertIsInstance(expr, OrderBy) + self.assertTrue(expr.descending) + self.assertTrue(expr.nulls_last) diff --git a/authentik/enterprise/search/tests.py b/authentik/api/tests/test_search.py similarity index 93% rename from authentik/enterprise/search/tests.py rename to authentik/api/tests/test_search.py index 55d4fbef19..a56b2a45bb 100644 --- a/authentik/enterprise/search/tests.py +++ b/authentik/api/tests/test_search.py @@ -1,5 +1,4 @@ from json import loads -from unittest.mock import PropertyMock, patch from urllib.parse import urlencode from django.urls import reverse @@ -8,10 +7,6 @@ from rest_framework.test import APITestCase from authentik.core.tests.utils import create_test_admin_user -@patch( - "authentik.enterprise.audit.middleware.EnterpriseAuditMiddleware.enabled", - PropertyMock(return_value=True), -) class QLTest(APITestCase): def setUp(self): diff --git a/authentik/api/tests/test_viewsets.py b/authentik/api/tests/test_viewsets.py index da16e801c9..fa61aa3e57 100644 --- a/authentik/api/tests/test_viewsets.py +++ b/authentik/api/tests/test_viewsets.py @@ -1,31 +1,73 @@ """authentik API Modelviewset tests""" from collections.abc import Callable +from urllib.parse import urlencode from django.test import TestCase from rest_framework.viewsets import ModelViewSet, ReadOnlyModelViewSet +from authentik.admin.api.version_history import VersionHistoryViewSet from authentik.api.v3.urls import router +from authentik.core.tests.utils import RequestFactory, create_test_admin_user +from authentik.lib.generators import generate_id +from authentik.tenants.api.domains import DomainViewSet +from authentik.tenants.api.tenants import TenantViewSet +from authentik.tenants.utils import get_current_tenant class TestModelViewSets(TestCase): """Test Viewset""" + def setUp(self): + self.user = create_test_admin_user() + self.factory = RequestFactory() -def viewset_tester_factory(test_viewset: type[ModelViewSet]) -> Callable: + +def viewset_tester_factory(test_viewset: type[ModelViewSet], full=True) -> dict[str, Callable]: """Test Viewset""" - def tester(self: TestModelViewSets): - self.assertIsNotNone(getattr(test_viewset, "search_fields", None)) + def test_attrs(self: TestModelViewSets) -> None: + """Test attributes we require on all viewsets""" self.assertIsNotNone(getattr(test_viewset, "ordering", None)) + self.assertIsNotNone(getattr(test_viewset, "search_fields", None)) filterset_class = getattr(test_viewset, "filterset_class", None) if not filterset_class: self.assertIsNotNone(getattr(test_viewset, "filterset_fields", None)) - return tester + def test_ordering(self: TestModelViewSets) -> None: + """Test that all ordering fields are correct""" + view = test_viewset.as_view({"get": "list"}) + for ordering_field in test_viewset.ordering: + with self.subTest(ordering_field): + req = self.factory.get( + f"/?{urlencode({'ordering': ordering_field}, doseq=True)}", user=self.user + ) + req.tenant = get_current_tenant() + res = view(req) + self.assertEqual(res.status_code, 200) + + def test_search(self: TestModelViewSets) -> None: + """Test that search fields are correct""" + view = test_viewset.as_view({"get": "list"}) + req = self.factory.get( + f"/?{urlencode({'search': generate_id()}, doseq=True)}", user=self.user + ) + req.tenant = get_current_tenant() + res = view(req) + self.assertEqual(res.status_code, 200) + + cases = { + "attrs": test_attrs, + } + if full: + cases["ordering"] = test_ordering + cases["search"] = test_search + return cases for _, viewset, _ in router.registry: if not issubclass(viewset, ModelViewSet | ReadOnlyModelViewSet): continue - setattr(TestModelViewSets, f"test_viewset_{viewset.__name__}", viewset_tester_factory(viewset)) + full = viewset not in [VersionHistoryViewSet, DomainViewSet, TenantViewSet] + for test, case in viewset_tester_factory(viewset, full=full).items(): + setattr(TestModelViewSets, f"test_viewset_{viewset.__name__}_{test}", case) diff --git a/authentik/api/v3/schema/cleanup.py b/authentik/api/v3/schema/cleanup.py new file mode 100644 index 0000000000..1675b10ef2 --- /dev/null +++ b/authentik/api/v3/schema/cleanup.py @@ -0,0 +1,75 @@ +"""Error Response schema, from https://github.com/axnsan12/drf-yasg/issues/224""" + +from collections.abc import Callable +from typing import Any + +from drf_spectacular.contrib.django_filters import ( + DjangoFilterExtension as BaseDjangoFilterExtension, +) +from drf_spectacular.generators import SchemaGenerator +from drf_spectacular.plumbing import ( + ResolvedComponent, + follow_field_source, +) +from drf_spectacular.renderers import OpenApiJsonRenderer +from drf_spectacular.settings import spectacular_settings +from structlog.stdlib import get_logger + +from authentik.api.apps import AuthentikAPIConfig + +LOGGER = get_logger() + + +def preprocess_schema_exclude_non_api(endpoints: list[tuple[str, Any, Any, Callable]], **kwargs): + """Filter out all API Views which are not mounted under /api""" + return [ + (path, path_regex, method, callback) + for path, path_regex, method, callback in endpoints + if path.startswith("/" + AuthentikAPIConfig.mountpoint) + ] + + +def postprocess_schema_remove_unused( + result: dict[str, Any], generator: SchemaGenerator, **kwargs +) -> dict[str, Any]: + """Remove unused components""" + # To check if the schema is used, render it to JSON and then substring check that + # less efficient than walking through the tree but a lot simpler and no + # possibility that we miss something + raw = OpenApiJsonRenderer().render(result, renderer_context={}).decode() + count = 0 + for key in result["components"][ResolvedComponent.SCHEMA].keys(): + schema_usages = raw.count(f"#/components/{ResolvedComponent.SCHEMA}/{key}") + if schema_usages >= 1: + continue + del generator.registry[(key, ResolvedComponent.SCHEMA)] + count += 1 + LOGGER.debug("Removing unused components", count=count) + result["components"] = generator.registry.build(spectacular_settings.APPEND_COMPONENTS) + return result + + +class DjangoFilterExtension(BaseDjangoFilterExtension): + """ + From https://github.com/netbox-community/netbox/pull/21521: + + Overrides drf-spectacular's DjangoFilterExtension to fix a regression in v0.29.0 where + _get_model_field() incorrectly double-appends to_field_name when field_name already ends + with that value (e.g. field_name='tags__slug', to_field_name='slug' produces the invalid + path ['tags', 'slug', 'slug']). This caused hundreds of spurious warnings during schema + generation for filters such as TagFilter, TenancyFilterSet.tenant, and OwnerFilterMixin.owner. + + See: https://github.com/netbox-community/netbox/issues/20787 + https://github.com/tfranzel/drf-spectacular/issues/1475 + """ + + priority = 1 + + def _get_model_field(self, filter_field, model): + if not filter_field.field_name: + return None + path = filter_field.field_name.split("__") + to_field_name = filter_field.extra.get("to_field_name") + if to_field_name is not None and path[-1] != to_field_name: + path.append(to_field_name) + return follow_field_source(model, path, emit_warnings=False) diff --git a/authentik/api/v3/schema/enum.py b/authentik/api/v3/schema/enum.py new file mode 100644 index 0000000000..710cb222a3 --- /dev/null +++ b/authentik/api/v3/schema/enum.py @@ -0,0 +1,287 @@ +"""Error Response schema, from https://github.com/axnsan12/drf-yasg/issues/224""" + +import functools +import inspect +import re +from collections import defaultdict +from enum import Enum + +from django.db.models import Choices +from django.utils.translation import get_language +from drf_spectacular.drainage import error, warn +from drf_spectacular.hooks import postprocess_schema_enum_id_removal +from drf_spectacular.plumbing import ( + ResolvedComponent, + deep_import_string, + list_hash, + safe_ref, +) +from drf_spectacular.settings import spectacular_settings +from inflection import camelize +from structlog.stdlib import get_logger + +LOGGER = get_logger() + + +# See https://github.com/tfranzel/drf-spectacular/blob/master/drf_spectacular/hooks.py +# and https://github.com/tfranzel/drf-spectacular/issues/520 +def postprocess_schema_enums(result, generator, **kwargs): # noqa: PLR0912, PLR0915 + """ + simple replacement of Enum/Choices that globally share the same name and have + the same choices. Aids client generation to not generate a separate enum for + every occurrence. only takes effect when replacement is guaranteed to be correct. + """ + + def is_enum_prop(prop_schema): + return ( + "enum" in prop_schema + or prop_schema.get("type") == "array" + and "enum" in prop_schema.get("items", {}) + ) + + def iter_field_schemas(): + def iter_prop_containers(schema, component_name=None): + if not component_name: + for _component_name, _schema in schema.items(): + if spectacular_settings.COMPONENT_SPLIT_PATCH: + _component_name = re.sub("^Patched(.+)", r"\1", _component_name) + if spectacular_settings.COMPONENT_SPLIT_REQUEST: + _component_name = re.sub("(.+)Request$", r"\1", _component_name) + yield from iter_prop_containers(_schema, _component_name) + elif isinstance(schema, list): + for item in schema: + yield from iter_prop_containers(item, component_name) + elif isinstance(schema, dict): + if schema.get("properties"): + yield component_name, schema["properties"] + yield from iter_prop_containers(schema.get("oneOf", []), component_name) + yield from iter_prop_containers(schema.get("allOf", []), component_name) + yield from iter_prop_containers(schema.get("anyOf", []), component_name) + + def iter_path_parameters(): + for path in result.get("paths", {}).values(): + for operation in path.values(): + for parameter in operation.get("parameters", []): + parameter_schema = parameter.get("schema", {}) + if is_enum_prop(parameter_schema): + # Move description into enum schema + if "description" in parameter: + parameter_schema["description"] = parameter.pop("description") + if "name" not in parameter: + continue + yield "", {parameter["name"]: parameter_schema} + + component_schemas = result.get("components", {}).get("schemas", {}) + + yield from iter_prop_containers(component_schemas) + yield from iter_path_parameters() + + def create_enum_component(name, schema): + component = ResolvedComponent( + name=name, + type=ResolvedComponent.SCHEMA, + schema=schema, + object=name, + ) + generator.registry.register_on_missing(component) + return component + + def extract_hash(schema): + if "x-spec-enum-id" in schema: + # try to use the injected enum hash first as it generated from (name, value) tuples, + # which prevents collisions on choice sets only differing in labels not values. + return schema["x-spec-enum-id"] + else: + # fall back to actual list hashing when we encounter enums not generated by us. + # remove blank/null entry for hashing. will be reconstructed in the last step + return list_hash([(i, i) for i in schema["enum"] if i not in ("", None)]) + + overrides = load_enum_name_overrides() + + prop_hash_mapping = defaultdict(set) + hash_name_mapping = defaultdict(set) + # collect all enums, their names and choice sets + for component_name, props in iter_field_schemas(): + for prop_name, prop_schema in props.items(): + _prop_schema = prop_schema + if prop_schema.get("type") == "array": + _prop_schema = prop_schema.get("items", {}) + if "enum" not in _prop_schema: + continue + + prop_enum_cleaned_hash = extract_hash(_prop_schema) + prop_hash_mapping[prop_name].add(prop_enum_cleaned_hash) + hash_name_mapping[prop_enum_cleaned_hash].add((component_name, prop_name)) + + # get the suffix to be used for enums from settings + enum_suffix = spectacular_settings.ENUM_SUFFIX + + # traverse all enum properties and generate a name for the choice set. naming collisions + # are resolved and a warning is emitted. giving a choice set multiple names is technically + # correct but potentially unwanted. also emit a warning there to make the user aware. + enum_name_mapping = {} + for prop_name, prop_hash_set in prop_hash_mapping.items(): + for prop_hash in prop_hash_set: + if prop_hash in overrides: + enum_name = overrides[prop_hash] + elif len(prop_hash_set) == 1: + # prop_name has been used exclusively for one choice set (best case) + enum_name = f"{camelize(prop_name)}{enum_suffix}" + elif len(hash_name_mapping[prop_hash]) == 1: + # prop_name has multiple choice sets, but each one limited to one component only + component_name, _ = next(iter(hash_name_mapping[prop_hash])) + enum_name = f"{camelize(component_name)}{camelize(prop_name)}{enum_suffix}" + else: + enum_name = f"{camelize(prop_name)}{prop_hash[:3].capitalize()}{enum_suffix}" + warn( + f"enum naming encountered a non-optimally resolvable collision for fields " + f'named "{prop_name}". The same name has been used for multiple choice sets ' + f'in multiple components. The collision was resolved with "{enum_name}". ' + f"add an entry to ENUM_NAME_OVERRIDES to fix the naming." + ) + if enum_name_mapping.get(prop_hash, enum_name) != enum_name: + warn( + f"encountered multiple names for the same choice set ({enum_name}). This " + f"may be unwanted even though the generated schema is technically correct. " + f"Add an entry to ENUM_NAME_OVERRIDES to fix the naming." + ) + del enum_name_mapping[prop_hash] + else: + enum_name_mapping[prop_hash] = enum_name + enum_name_mapping[(prop_hash, prop_name)] = enum_name + + # replace all enum occurrences with a enum schema component. cut out the + # enum, replace it with a reference and add a corresponding component. + for _, props in iter_field_schemas(): + for prop_name, _prop_schema in props.items(): + prop_schema = _prop_schema + is_array = prop_schema.get("type") == "array" + if is_array: + prop_schema = prop_schema.get("items", {}) + + if "enum" not in prop_schema: + continue + + prop_enum_original_list = prop_schema["enum"] + prop_schema["enum"] = [i for i in prop_schema["enum"] if i not in ["", None]] + prop_hash = extract_hash(prop_schema) + # when choice sets are reused under multiple names, the generated name cannot be + # resolved from the hash alone. fall back to prop_name and hash for resolution. + enum_name = enum_name_mapping.get(prop_hash) or enum_name_mapping[prop_hash, prop_name] + + # split property into remaining property and enum component parts + enum_schema = {k: v for k, v in prop_schema.items() if k in ["type", "enum"]} + prop_schema = { + k: v for k, v in prop_schema.items() if k not in ["type", "enum", "x-spec-enum-id"] + } + + # separate actual description from name-value tuples + if spectacular_settings.ENUM_GENERATE_CHOICE_DESCRIPTION: + if prop_schema.get("description", "").startswith("*"): + enum_schema["description"] = prop_schema.pop("description") + elif "\n\n*" in prop_schema.get("description", ""): + _, _, post = prop_schema["description"].partition("\n\n*") + enum_schema["description"] = "*" + post + + components = [create_enum_component(enum_name, schema=enum_schema)] + if spectacular_settings.ENUM_ADD_EXPLICIT_BLANK_NULL_CHOICE: + if "" in prop_enum_original_list: + components.append( + create_enum_component(f"Blank{enum_suffix}", schema={"enum": [""]}) + ) + if None in prop_enum_original_list: + if spectacular_settings.OAS_VERSION.startswith("3.1"): + components.append( + create_enum_component(f"Null{enum_suffix}", schema={"type": "null"}) + ) + else: + components.append( + create_enum_component(f"Null{enum_suffix}", schema={"enum": [None]}) + ) + + # undo OAS 3.1 type list NULL construction as we cover + # this in a separate component already + if spectacular_settings.OAS_VERSION.startswith("3.1") and isinstance( + enum_schema["type"], list + ): + enum_schema["type"] = [t for t in enum_schema["type"] if t != "null"][0] + + if len(components) == 1: + prop_schema.update(components[0].ref) + else: + prop_schema.update({"oneOf": [c.ref for c in components]}) + + patch_target = props[prop_name] # noqa: PLR1733 + if is_array: + patch_target = patch_target["items"] + + # Replace existing schema information with reference + patch_target.clear() + patch_target.update(safe_ref(prop_schema)) + + # sort again with additional components + result["components"] = generator.registry.build(spectacular_settings.APPEND_COMPONENTS) + + # remove remaining ids that were not part of this hook (operation parameters mainly) + postprocess_schema_enum_id_removal(result, generator) + + return result + + +# Fixed version of `load_enum_name_overrides()` with a LRU cache based on language +# *and* enum overrides. +# Without this, API generation breaks if there is more than 1 API present (such as in split APIs) +# Original source: drf-spectacular/drf_spectacular/plumbing.py +def load_enum_name_overrides(): + cache_key = get_language() or "" + + for k, v in sorted(spectacular_settings.ENUM_NAME_OVERRIDES.items()): + cache_key += f";{k}:{v}" + + return _load_enum_name_overrides(cache_key) + + +# Original source: drf-spectacular/drf_spectacular/plumbing.py +# Only change: cache_key argument instead of language. +@functools.lru_cache +def _load_enum_name_overrides(cache_key): + overrides = {} + for name, _choices in spectacular_settings.ENUM_NAME_OVERRIDES.items(): + choices = _choices + if isinstance(choices, str): + choices = deep_import_string(choices) + if not choices: + warn( + f"unable to load choice override for {name} from ENUM_NAME_OVERRIDES. " + f"please check module path string." + ) + continue + if inspect.isclass(choices) and issubclass(choices, Choices): + choices = choices.choices + if inspect.isclass(choices) and issubclass(choices, Enum): + choices = [(c.value, c.name) for c in choices] + normalized_choices = [] + for choice in choices: + # Allow None values in the simple values list case + if isinstance(choice, str) or choice is None: + # TODO warning + normalized_choices.append((choice, choice)) # simple choice list + elif isinstance(choice[1], (list, tuple)): + normalized_choices.extend(choice[1]) # categorized nested choices + else: + normalized_choices.append(choice) # normal 2-tuple form + + # Get all of choice values that should be used in the hash, blank and + # None values get excluded in the post-processing hook for enum overrides, + # so we do the same here to ensure the hashes match + hashable_values = [ + (value, label) for value, label in normalized_choices if value not in ["", None] + ] + overrides[list_hash(hashable_values)] = name + + if len(spectacular_settings.ENUM_NAME_OVERRIDES) != len(overrides): + error( + "ENUM_NAME_OVERRIDES has duplication issues. Encountered multiple names " + "for the same choice set. Enum naming might be unexpected." + ) + return overrides diff --git a/authentik/api/v3/schema/pagination.py b/authentik/api/v3/schema/pagination.py new file mode 100644 index 0000000000..fd43d4007a --- /dev/null +++ b/authentik/api/v3/schema/pagination.py @@ -0,0 +1,32 @@ +from drf_spectacular.plumbing import ( + ResolvedComponent, + build_basic_type, + build_object_type, +) +from drf_spectacular.types import OpenApiTypes + +PAGINATION = ResolvedComponent( + name="Pagination", + type=ResolvedComponent.SCHEMA, + object="Pagination", + schema=build_object_type( + properties={ + "next": build_basic_type(OpenApiTypes.NUMBER), + "previous": build_basic_type(OpenApiTypes.NUMBER), + "count": build_basic_type(OpenApiTypes.NUMBER), + "current": build_basic_type(OpenApiTypes.NUMBER), + "total_pages": build_basic_type(OpenApiTypes.NUMBER), + "start_index": build_basic_type(OpenApiTypes.NUMBER), + "end_index": build_basic_type(OpenApiTypes.NUMBER), + }, + required=[ + "next", + "previous", + "count", + "current", + "total_pages", + "start_index", + "end_index", + ], + ), +) diff --git a/authentik/api/v3/schema/query.py b/authentik/api/v3/schema/query.py index c7150218bb..3eeb10064b 100644 --- a/authentik/api/v3/schema/query.py +++ b/authentik/api/v3/schema/query.py @@ -1,10 +1,17 @@ +from typing import Any + from django.utils.translation import gettext_lazy as _ +from drf_spectacular.generators import SchemaGenerator from drf_spectacular.plumbing import ( ResolvedComponent, build_basic_type, build_parameter_type, ) from drf_spectacular.types import OpenApiTypes +from structlog.stdlib import get_logger + +LOGGER = get_logger() + QUERY_PARAMS = { "ordering": ResolvedComponent( @@ -63,3 +70,18 @@ QUERY_PARAMS = { ), ), } + + +def postprocess_schema_query_params( + result: dict[str, Any], generator: SchemaGenerator, **kwargs +) -> dict[str, Any]: + """Optimize pagination parameters, instead of redeclaring parameters for each endpoint + declare them globally and refer to them""" + LOGGER.debug("Deduplicating query parameters") + for path in result["paths"].values(): + for method in path.values(): + for idx, param in enumerate(method.get("parameters", [])): + if param["name"] not in QUERY_PARAMS: + continue + method["parameters"][idx] = QUERY_PARAMS[param["name"]].ref + return result diff --git a/authentik/api/v3/schema/response.py b/authentik/api/v3/schema/response.py index ee7e0e3fe2..d51e5d46e7 100644 --- a/authentik/api/v3/schema/response.py +++ b/authentik/api/v3/schema/response.py @@ -1,12 +1,22 @@ +from typing import Any + from django.utils.translation import gettext_lazy as _ +from drf_spectacular.generators import SchemaGenerator from drf_spectacular.plumbing import ( ResolvedComponent, build_array_type, build_basic_type, build_object_type, ) +from drf_spectacular.settings import spectacular_settings from drf_spectacular.types import OpenApiTypes from rest_framework.settings import api_settings +from structlog.stdlib import get_logger + +from authentik.api.v3.schema.pagination import PAGINATION +from authentik.api.v3.schema.query import QUERY_PARAMS + +LOGGER = get_logger() GENERIC_ERROR = ResolvedComponent( name="GenericError", @@ -57,28 +67,40 @@ VALIDATION_ERROR_RESPONSE = ResolvedComponent( "description": "", }, ) -PAGINATION = ResolvedComponent( - name="Pagination", - type=ResolvedComponent.SCHEMA, - object="Pagination", - schema=build_object_type( - properties={ - "next": build_basic_type(OpenApiTypes.NUMBER), - "previous": build_basic_type(OpenApiTypes.NUMBER), - "count": build_basic_type(OpenApiTypes.NUMBER), - "current": build_basic_type(OpenApiTypes.NUMBER), - "total_pages": build_basic_type(OpenApiTypes.NUMBER), - "start_index": build_basic_type(OpenApiTypes.NUMBER), - "end_index": build_basic_type(OpenApiTypes.NUMBER), - }, - required=[ - "next", - "previous", - "count", - "current", - "total_pages", - "start_index", - "end_index", - ], - ), -) + + +def postprocess_schema_register( + result: dict[str, Any], generator: SchemaGenerator, **kwargs +) -> dict[str, Any]: + """Register custom schema components""" + LOGGER.debug("Registering custom schemas") + generator.registry.register_on_missing(PAGINATION) + generator.registry.register_on_missing(GENERIC_ERROR) + generator.registry.register_on_missing(GENERIC_ERROR_RESPONSE) + generator.registry.register_on_missing(VALIDATION_ERROR) + generator.registry.register_on_missing(VALIDATION_ERROR_RESPONSE) + for query in QUERY_PARAMS.values(): + generator.registry.register_on_missing(query) + return result + + +def postprocess_schema_responses( + result: dict[str, Any], generator: SchemaGenerator, **kwargs +) -> dict[str, Any]: + """Default error responses""" + LOGGER.debug("Adding default error responses") + for path in result["paths"].values(): + for method in path.values(): + method["responses"].setdefault("400", VALIDATION_ERROR_RESPONSE.ref) + method["responses"].setdefault("403", GENERIC_ERROR_RESPONSE.ref) + + result["components"] = generator.registry.build(spectacular_settings.APPEND_COMPONENTS) + + # This is a workaround for authentik/stages/prompt/stage.py + # since the serializer PromptChallengeResponse + # accepts dynamic keys + for component in result["components"]["schemas"]: + if component == "PromptChallengeResponseRequest": + comp = result["components"]["schemas"][component] + comp["additionalProperties"] = {} + return result diff --git a/authentik/api/v3/schema/search.py b/authentik/api/v3/schema/search.py new file mode 100644 index 0000000000..e64593581c --- /dev/null +++ b/authentik/api/v3/schema/search.py @@ -0,0 +1,20 @@ +from typing import TYPE_CHECKING + +from drf_spectacular.plumbing import ResolvedComponent, build_object_type + +if TYPE_CHECKING: + from drf_spectacular.generators import SchemaGenerator + + +AUTOCOMPLETE_SCHEMA = ResolvedComponent( + name="Autocomplete", + object="Autocomplete", + type=ResolvedComponent.SCHEMA, + schema=build_object_type(additionalProperties={}), +) + + +def postprocess_schema_search_autocomplete(result, generator: SchemaGenerator, **kwargs): + generator.registry.register_on_missing(AUTOCOMPLETE_SCHEMA) + + return result diff --git a/authentik/blueprints/api.py b/authentik/blueprints/api.py index 33578e2043..cd5860297f 100644 --- a/authentik/blueprints/api.py +++ b/authentik/blueprints/api.py @@ -1,24 +1,74 @@ """Serializer mixin for managed models""" +from json import JSONDecodeError, loads +from typing import cast + +from django.conf import settings +from django.core.files.uploadedfile import InMemoryUploadedFile from django.utils.translation import gettext_lazy as _ from drf_spectacular.utils import extend_schema, inline_serializer from rest_framework.decorators import action -from rest_framework.exceptions import ValidationError -from rest_framework.fields import CharField, DateTimeField +from rest_framework.exceptions import PermissionDenied, ValidationError +from rest_framework.fields import ( + BooleanField, + CharField, + DateTimeField, + FileField, +) +from rest_framework.parsers import MultiPartParser from rest_framework.request import Request from rest_framework.response import Response from rest_framework.serializers import ListSerializer from rest_framework.viewsets import ModelViewSet +from authentik.api.validation import validate from authentik.blueprints.models import BlueprintInstance +from authentik.blueprints.v1.common import Blueprint from authentik.blueprints.v1.importer import Importer from authentik.blueprints.v1.oci import OCI_PREFIX from authentik.blueprints.v1.tasks import apply_blueprint, blueprints_find_dict from authentik.core.api.used_by import UsedByMixin from authentik.core.api.utils import JSONDictField, ModelSerializer, PassiveSerializer +from authentik.core.models import User +from authentik.events.logs import LogEventSerializer from authentik.rbac.decorators import permission_required +def get_blueprints(): + if settings.DEBUG: + return blueprints_find_dict() + return blueprints_find_dict.send().get_result(block=True) + + +class BlueprintUploadSerializer(PassiveSerializer): + """Serializer to upload file""" + + file = FileField(required=False) + path = CharField(required=False) + context = CharField(required=False, allow_blank=True) + + def validate_path(self, path: str) -> str: + """Ensure the path (if set) specified is retrievable""" + if path == "": + return path + files: list[dict] = get_blueprints() + if path not in [file["path"] for file in files]: + raise ValidationError(_("Blueprint file does not exist")) + return path + + def validate_context(self, context: str) -> dict: + """Parse context as a JSON object""" + if not context: + return {} + try: + parsed = loads(context) + except JSONDecodeError as exc: + raise ValidationError(_("Context must be valid JSON")) from exc + if not isinstance(parsed, dict): + raise ValidationError(_("Context must be a JSON object")) + return parsed + + class ManagedSerializer: """Managed Serializer""" @@ -39,7 +89,7 @@ class BlueprintInstanceSerializer(ModelSerializer): """Ensure the path (if set) specified is retrievable""" if path == "" or path.startswith(OCI_PREFIX): return path - files: list[dict] = blueprints_find_dict.send().get_result(block=True) + files: list[dict] = get_blueprints() if path not in [file["path"] for file in files]: raise ValidationError(_("Blueprint file does not exist")) return path @@ -88,6 +138,33 @@ class BlueprintInstanceSerializer(ModelSerializer): } +def check_blueprint_perms(blueprint: Blueprint, user: User, explicit_action: str | None = None): + """Check for individual permissions for each model in a blueprint""" + for entry in blueprint.iter_entries(): + full_model = entry.get_model(blueprint) + app, __, model = full_model.partition(".") + perms = [ + f"{app}.add_{model}", + f"{app}.change_{model}", + f"{app}.delete_{model}", + ] + if explicit_action: + perms = [f"{app}.{explicit_action}_{model}"] + for perm in perms: + if not user.has_perm(perm): + raise PermissionDenied( + { + entry.id: _( + "User lacks permission to create {model}".format_map( + { + "model": full_model, + } + ) + ) + } + ) + + class BlueprintInstanceViewSet(UsedByMixin, ModelViewSet): """Blueprint instances""" @@ -97,6 +174,12 @@ class BlueprintInstanceViewSet(UsedByMixin, ModelViewSet): filterset_fields = ["name", "path"] ordering = ["name"] + class BlueprintImportResultSerializer(PassiveSerializer): + """Logs of an attempted blueprint import""" + + logs = LogEventSerializer(many=True, read_only=True) + success = BooleanField(read_only=True) + @extend_schema( responses={ 200: ListSerializer( @@ -115,7 +198,7 @@ class BlueprintInstanceViewSet(UsedByMixin, ModelViewSet): @action(detail=False, pagination_class=None, filter_backends=[]) def available(self, request: Request) -> Response: """Get blueprints""" - files: list[dict] = blueprints_find_dict.send().get_result(block=True) + files: list[dict] = get_blueprints() return Response(files) @permission_required("authentik_blueprints.view_blueprintinstance") @@ -131,3 +214,43 @@ class BlueprintInstanceViewSet(UsedByMixin, ModelViewSet): blueprint = self.get_object() apply_blueprint.send_with_options(args=(blueprint.pk,), rel_obj=blueprint) return self.retrieve(request, *args, **kwargs) + + @extend_schema( + request={"multipart/form-data": BlueprintUploadSerializer}, + responses={200: BlueprintImportResultSerializer}, + ) + @action(url_path="import", detail=False, methods=["POST"], parser_classes=(MultiPartParser,)) + @validate( + BlueprintUploadSerializer, + ) + def import_(self, request: Request, body: BlueprintUploadSerializer) -> Response: + """Import blueprint from .yaml file and apply it once, without creating an instance""" + string_contents = "" + if body.validated_data.get("file"): + file = cast(InMemoryUploadedFile, body.validated_data["file"]) + string_contents = file.read().decode() + elif body.validated_data.get("path"): + string_contents = BlueprintInstance( + path=body.validated_data.get("path") + ).retrieve_file() + else: + raise ValidationError("Either path or file must be set") + context = body.validated_data.get("context") or {} + importer = Importer.from_string(string_contents, context) + + check_blueprint_perms(importer.blueprint, request.user) + + valid, logs = importer.validate() + + import_response = self.BlueprintImportResultSerializer( + data={ + "logs": [LogEventSerializer(log).data for log in logs], + "success": valid, + } + ) + import_response.is_valid(raise_exception=True) + + if valid: + import_response.initial_data["success"] = importer.apply() + import_response.is_valid() + return Response(data=import_response.initial_data, status=200) diff --git a/authentik/blueprints/apps.py b/authentik/blueprints/apps.py index a0a7919961..fcf95b617d 100644 --- a/authentik/blueprints/apps.py +++ b/authentik/blueprints/apps.py @@ -3,7 +3,6 @@ import traceback from collections.abc import Callable from importlib import import_module -from inspect import ismethod from django.apps import AppConfig from django.conf import settings @@ -72,12 +71,19 @@ class ManagedAppConfig(AppConfig): def _reconcile(self, prefix: str) -> None: for meth_name in dir(self): - meth = getattr(self, meth_name) - if not ismethod(meth): + # Check the attribute on the class to avoid evaluating @property descriptors. + # Using getattr(self, ...) on a @property would evaluate it, which can trigger + # expensive side effects (e.g. tenant_schedule_specs iterating all providers + # and running PolicyEngine queries for every user). + class_attr = getattr(type(self), meth_name, None) + if class_attr is None or isinstance(class_attr, property): continue - category = getattr(meth, "_authentik_managed_reconcile", None) + if not callable(class_attr): + continue + category = getattr(class_attr, "_authentik_managed_reconcile", None) if category != prefix: continue + meth = getattr(self, meth_name) name = meth_name.replace(prefix, "") try: self.logger.debug("Starting reconciler", name=name) diff --git a/authentik/blueprints/management/commands/apply_blueprint.py b/authentik/blueprints/management/commands/apply_blueprint.py index b996c5ebae..3563e2d7f9 100644 --- a/authentik/blueprints/management/commands/apply_blueprint.py +++ b/authentik/blueprints/management/commands/apply_blueprint.py @@ -1,5 +1,6 @@ """Apply blueprint from commandline""" +from argparse import ArgumentParser from sys import exit as sys_exit from django.core.management.base import BaseCommand, no_translations @@ -31,5 +32,5 @@ class Command(BaseCommand): sys_exit(1) importer.apply() - def add_arguments(self, parser): + def add_arguments(self, parser: ArgumentParser): parser.add_argument("blueprints", nargs="+", type=str) diff --git a/authentik/blueprints/tests/test_v1_api.py b/authentik/blueprints/tests/test_v1_api.py index f4e6d0fb0c..a889ac6a3e 100644 --- a/authentik/blueprints/tests/test_v1_api.py +++ b/authentik/blueprints/tests/test_v1_api.py @@ -1,14 +1,19 @@ """Test blueprints v1 api""" -from json import loads +from json import dumps, loads from tempfile import NamedTemporaryFile, mkdtemp +from django.core.files.uploadedfile import SimpleUploadedFile from django.urls import reverse from rest_framework.test import APITestCase from yaml import dump from authentik.core.tests.utils import create_test_admin_user +from authentik.flows.models import Flow from authentik.lib.config import CONFIG +from authentik.lib.generators import generate_id +from authentik.stages.invitation.models import InvitationStage +from authentik.stages.user_write.models import UserWriteStage TMP = mkdtemp("authentik-blueprints") @@ -80,3 +85,121 @@ class TestBlueprintsV1API(APITestCase): res.content.decode(), {"content": ["Failed to validate blueprint", "- Invalid blueprint version"]}, ) + + def test_api_import_with_context(self): + """Test that the import endpoint applies the supplied context to the real blueprint""" + slug = f"invitation-enrollment-{generate_id()}" + flow_name = f"Invitation Enrollment {generate_id()}" + stage_name = f"invitation-stage-{generate_id()}" + user_type = "internal" + continue_without_invitation = True + + res = self.client.post( + reverse("authentik_api:blueprintinstance-import-"), + data={ + "path": "example/flows-invitation-enrollment-minimal.yaml", + "context": dumps( + { + "flow_slug": slug, + "flow_name": flow_name, + "stage_name": stage_name, + "continue_flow_without_invitation": continue_without_invitation, + "user_type": user_type, + } + ), + }, + format="multipart", + ) + self.assertEqual(res.status_code, 200) + self.assertTrue(res.json()["success"]) + + flow = Flow.objects.get(slug=slug) + self.assertEqual(flow.name, flow_name) + self.assertEqual(flow.title, flow_name) + + invitation_stage = InvitationStage.objects.get(name=stage_name) + self.assertEqual( + invitation_stage.continue_flow_without_invitation, + continue_without_invitation, + ) + + user_write_stage = UserWriteStage.objects.get( + name=f"invitation-enrollment-user-write-{slug}" + ) + self.assertEqual(user_write_stage.user_type, user_type) + self.assertEqual(user_write_stage.user_path_template, f"users/{user_type}") + + def test_api_import_blank_path(self): + """Validator returns empty path unchanged (covers api.py:53).""" + with NamedTemporaryFile(mode="w+", suffix=".yaml") as file: + file.write(dump({"version": 1, "entries": []})) + file.flush() + file.seek(0) + res = self.client.post( + reverse("authentik_api:blueprintinstance-import-"), + data={"path": "", "file": file}, + format="multipart", + ) + self.assertEqual(res.status_code, 200) + + def test_api_import_invalid_blueprint_returns_result_payload(self): + """Invalid blueprint content returns a result payload instead of a 400 response.""" + file = SimpleUploadedFile("invalid-blueprint.yaml", b'{"version": 3}') + + res = self.client.post( + reverse("authentik_api:blueprintinstance-import-"), + data={"file": file}, + format="multipart", + ) + + self.assertEqual(res.status_code, 200) + self.assertFalse(res.json()["success"]) + self.assertGreater(len(res.json()["logs"]), 0) + + def test_api_import_unknown_path(self): + """Path not in available blueprints is rejected (covers api.py:56).""" + res = self.client.post( + reverse("authentik_api:blueprintinstance-import-"), + data={"path": "does/not/exist.yaml"}, + format="multipart", + ) + self.assertEqual(res.status_code, 400) + self.assertIn("Blueprint file does not exist", res.content.decode()) + + def test_api_import_blank_context(self): + """Blank context is normalized to empty dict (covers api.py:62).""" + res = self.client.post( + reverse("authentik_api:blueprintinstance-import-"), + data={ + "path": "example/flows-invitation-enrollment-minimal.yaml", + "context": "", + }, + format="multipart", + ) + self.assertEqual(res.status_code, 200) + + def test_api_import_invalid_json_context(self): + """Malformed JSON context raises ValidationError (covers api.py:65-66).""" + res = self.client.post( + reverse("authentik_api:blueprintinstance-import-"), + data={ + "path": "example/flows-invitation-enrollment-minimal.yaml", + "context": "{not json", + }, + format="multipart", + ) + self.assertEqual(res.status_code, 400) + self.assertIn("Context must be valid JSON", res.content.decode()) + + def test_api_import_non_object_context(self): + """JSON context that isn't an object is rejected (covers api.py:68).""" + res = self.client.post( + reverse("authentik_api:blueprintinstance-import-"), + data={ + "path": "example/flows-invitation-enrollment-minimal.yaml", + "context": "[1, 2, 3]", + }, + format="multipart", + ) + self.assertEqual(res.status_code, 400) + self.assertIn("Context must be a JSON object", res.content.decode()) diff --git a/authentik/blueprints/tests/test_v1_conditions.py b/authentik/blueprints/tests/test_v1_conditions.py index 8dd79563e1..83b544d107 100644 --- a/authentik/blueprints/tests/test_v1_conditions.py +++ b/authentik/blueprints/tests/test_v1_conditions.py @@ -1,8 +1,11 @@ """Test blueprints v1""" +from unittest.mock import patch + from django.test import TransactionTestCase from authentik.blueprints.v1.importer import Importer +from authentik.enterprise.license import LicenseKey from authentik.flows.models import Flow from authentik.lib.generators import generate_id from authentik.lib.tests.utils import load_fixture @@ -42,3 +45,45 @@ class TestBlueprintsV1Conditions(TransactionTestCase): # Ensure objects do not exist self.assertFalse(Flow.objects.filter(slug=flow_slug1)) self.assertFalse(Flow.objects.filter(slug=flow_slug2)) + + def test_enterprise_license_context_unlicensed(self): + """Test enterprise license context defaults to a false boolean when unlicensed.""" + license_key = LicenseKey("test", 0, "Test license", 0, 0) + + with patch("authentik.enterprise.license.LicenseKey.get_total", return_value=license_key): + importer = Importer.from_string(""" +version: 1 +entries: + - identifiers: + name: enterprise-test + slug: enterprise-test + model: authentik_flows.flow + conditions: + - !Context goauthentik.io/enterprise/licensed + attrs: + designation: stage_configuration + title: foo +""") + + self.assertIs(importer.blueprint.context["goauthentik.io/enterprise/licensed"], False) + + def test_enterprise_license_context_licensed(self): + """Test enterprise license context defaults to a true boolean when licensed.""" + license_key = LicenseKey("test", 253402300799, "Test license", 1000, 1000) + + with patch("authentik.enterprise.license.LicenseKey.get_total", return_value=license_key): + importer = Importer.from_string(""" +version: 1 +entries: + - identifiers: + name: enterprise-test + slug: enterprise-test + model: authentik_flows.flow + conditions: + - !Context goauthentik.io/enterprise/licensed + attrs: + designation: stage_configuration + title: foo +""") + + self.assertIs(importer.blueprint.context["goauthentik.io/enterprise/licensed"], True) diff --git a/authentik/blueprints/v1/importer.py b/authentik/blueprints/v1/importer.py index ed43187961..4e66d7d293 100644 --- a/authentik/blueprints/v1/importer.py +++ b/authentik/blueprints/v1/importer.py @@ -146,9 +146,7 @@ class Importer: try: from authentik.enterprise.license import LicenseKey - context["goauthentik.io/enterprise/licensed"] = ( - LicenseKey.get_total().status().is_valid, - ) + context["goauthentik.io/enterprise/licensed"] = LicenseKey.get_total().status().is_valid except ModuleNotFoundError: pass return context diff --git a/authentik/brands/api.py b/authentik/brands/api.py index a642347cde..96833ad49f 100644 --- a/authentik/brands/api.py +++ b/authentik/brands/api.py @@ -64,6 +64,7 @@ class BrandSerializer(ModelSerializer): "flow_unenrollment", "flow_user_settings", "flow_device_code", + "flow_lockdown", "default_application", "web_certificate", "client_certificates", @@ -117,6 +118,7 @@ class CurrentBrandSerializer(PassiveSerializer): flow_unenrollment = CharField(source="flow_unenrollment.slug", required=False) flow_user_settings = CharField(source="flow_user_settings.slug", required=False) flow_device_code = CharField(source="flow_device_code.slug", required=False) + flow_lockdown = CharField(source="flow_lockdown.slug", required=False) default_locale = CharField(read_only=True) flags = SerializerMethodField() @@ -154,6 +156,7 @@ class BrandViewSet(UsedByMixin, ModelViewSet): "flow_unenrollment", "flow_user_settings", "flow_device_code", + "flow_lockdown", "web_certificate", "client_certificates", ] diff --git a/authentik/brands/migrations/0012_brand_flow_lockdown.py b/authentik/brands/migrations/0012_brand_flow_lockdown.py new file mode 100644 index 0000000000..deaf9b1326 --- /dev/null +++ b/authentik/brands/migrations/0012_brand_flow_lockdown.py @@ -0,0 +1,25 @@ +# Generated by Django 5.2.12 on 2026-03-14 02:58 + +import django.db.models.deletion +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("authentik_brands", "0011_alter_brand_branding_default_flow_background_and_more"), + ("authentik_flows", "0031_alter_flow_layout"), + ] + + operations = [ + migrations.AddField( + model_name="brand", + name="flow_lockdown", + field=models.ForeignKey( + null=True, + on_delete=django.db.models.deletion.SET_NULL, + related_name="brand_lockdown", + to="authentik_flows.flow", + ), + ), + ] diff --git a/authentik/brands/models.py b/authentik/brands/models.py index 190b921336..94c772767a 100644 --- a/authentik/brands/models.py +++ b/authentik/brands/models.py @@ -58,6 +58,9 @@ class Brand(SerializerModel): flow_device_code = models.ForeignKey( Flow, null=True, on_delete=models.SET_NULL, related_name="brand_device_code" ) + flow_lockdown = models.ForeignKey( + Flow, null=True, on_delete=models.SET_NULL, related_name="brand_lockdown" + ) default_application = models.ForeignKey( "authentik_core.Application", @@ -101,13 +104,23 @@ class Brand(SerializerModel): """Get themed URLs for branding_favicon if it contains %(theme)s""" return get_file_manager(FileUsage.MEDIA).themed_urls(self.branding_favicon) - def branding_default_flow_background_url(self) -> str: + def branding_default_flow_background_url(self, request=None, use_cache: bool = True) -> str: """Get branding_default_flow_background URL""" - return get_file_manager(FileUsage.MEDIA).file_url(self.branding_default_flow_background) + return get_file_manager(FileUsage.MEDIA).file_url( + self.branding_default_flow_background, + request, + use_cache=use_cache, + ) - def branding_default_flow_background_themed_urls(self) -> dict[str, str] | None: + def branding_default_flow_background_themed_urls( + self, request=None, use_cache: bool = True + ) -> dict[str, str] | None: """Get themed URLs for branding_default_flow_background if it contains %(theme)s""" - return get_file_manager(FileUsage.MEDIA).themed_urls(self.branding_default_flow_background) + return get_file_manager(FileUsage.MEDIA).themed_urls( + self.branding_default_flow_background, + request, + use_cache=use_cache, + ) @property def serializer(self) -> type[Serializer]: diff --git a/authentik/brands/tests.py b/authentik/brands/tests.py index 41fcd98040..337c304794 100644 --- a/authentik/brands/tests.py +++ b/authentik/brands/tests.py @@ -20,11 +20,16 @@ class TestBrands(APITestCase): def setUp(self): super().setUp() - self.default_flags = {} - for flag in Flag.available(visibility="public"): - self.default_flags[flag().key] = flag.get() Brand.objects.all().delete() + @property + def default_flags(self) -> dict[str, object]: + """Get current public flags. + + Some tests define temporary Flag subclasses, so this can't be cached in setUp. + """ + return {flag().key: flag.get() for flag in Flag.available(visibility="public")} + def test_current_brand(self): """Test Current brand API""" brand = create_test_brand() diff --git a/authentik/common/oauth/constants.py b/authentik/common/oauth/constants.py index cc4d5309d3..d7aaf48f8d 100644 --- a/authentik/common/oauth/constants.py +++ b/authentik/common/oauth/constants.py @@ -5,6 +5,7 @@ from django.utils.translation import gettext_lazy as _ GRANT_TYPE_AUTHORIZATION_CODE = "authorization_code" GRANT_TYPE_IMPLICIT = "implicit" +GRANT_TYPE_HYBRID = "hybrid" GRANT_TYPE_REFRESH_TOKEN = "refresh_token" # nosec GRANT_TYPE_CLIENT_CREDENTIALS = "client_credentials" GRANT_TYPE_PASSWORD = "password" # nosec @@ -21,6 +22,9 @@ PROMPT_CONSENT = "consent" PROMPT_LOGIN = "login" PLAN_CONTEXT_OIDC_LOGOUT_IFRAME_SESSIONS = "goauthentik.io/providers/oauth2/iframe_sessions" +PLAN_CONTEXT_POST_LOGOUT_REDIRECT_URI = "goauthentik.io/providers/oauth2/post_logout_redirect_uri" + +OAUTH2_BINDING = "redirect" SCOPE_OPENID = "openid" SCOPE_OPENID_PROFILE = "profile" @@ -37,6 +41,9 @@ TOKEN_TYPE = "Bearer" # nosec SCOPE_AUTHENTIK_API = "goauthentik.io/api" +# URI schemes that are forbidden for redirect URIs +FORBIDDEN_URI_SCHEMES = {"javascript", "data", "vbscript"} + # Read/write full user (including email) SCOPE_GITHUB_USER = "user" # Read user (without email) diff --git a/authentik/common/saml/constants.py b/authentik/common/saml/constants.py index a2342ba056..ff4898d70c 100644 --- a/authentik/common/saml/constants.py +++ b/authentik/common/saml/constants.py @@ -30,6 +30,8 @@ SAML_BINDING_REDIRECT = "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" SAML_STATUS_SUCCESS = "urn:oasis:names:tc:SAML:2.0:status:Success" +DEFAULT_ISSUER = "authentik" + DSA_SHA1 = "http://www.w3.org/2000/09/xmldsig#dsa-sha1" RSA_SHA1 = "http://www.w3.org/2000/09/xmldsig#rsa-sha1" # https://datatracker.ietf.org/doc/html/rfc4051#section-2.3.2 diff --git a/authentik/core/api/application_entitlements.py b/authentik/core/api/application_entitlements.py index 9e3b02fa6d..fd1c60cb5b 100644 --- a/authentik/core/api/application_entitlements.py +++ b/authentik/core/api/application_entitlements.py @@ -47,7 +47,8 @@ class ApplicationEntitlementViewSet(UsedByMixin, ModelViewSet): search_fields = [ "pbm_uuid", "name", - "app", + "app__name", + "app__slug", "attributes", ] filterset_fields = [ diff --git a/authentik/core/api/applications.py b/authentik/core/api/applications.py index 6c442ce431..3903a9b01d 100644 --- a/authentik/core/api/applications.py +++ b/authentik/core/api/applications.py @@ -25,6 +25,7 @@ from authentik.core.api.providers import ProviderSerializer from authentik.core.api.used_by import UsedByMixin from authentik.core.api.users import UserSerializer from authentik.core.api.utils import ModelSerializer, ThemedUrlsSerializer +from authentik.core.apps import AppAccessWithoutBindings from authentik.core.models import Application, User from authentik.events.logs import LogEventSerializer, capture_logs from authentik.policies.api.exec import PolicyTestResultSerializer @@ -35,9 +36,13 @@ from authentik.rbac.filters import ObjectFilter LOGGER = get_logger() -def user_app_cache_key(user_pk: str, page_number: int | None = None) -> str: +def user_app_cache_key( + user_pk: str, page_number: int | None = None, only_with_launch_url: bool = False +) -> str: """Cache key where application list for user is saved""" key = f"{CACHE_PREFIX}app_access/{user_pk}" + if only_with_launch_url: + key += "/launch" if page_number: key += f"/{page_number}" return key @@ -47,7 +52,12 @@ class ApplicationSerializer(ModelSerializer): """Application Serializer""" launch_url = SerializerMethodField() - provider_obj = ProviderSerializer(source="get_provider", required=False, read_only=True) + provider_obj = ProviderSerializer( + source="get_provider", + required=False, + read_only=True, + allow_null=True, + ) backchannel_providers_obj = ProviderSerializer( source="backchannel_providers", required=False, read_only=True, many=True ) @@ -110,6 +120,7 @@ class ApplicationSerializer(ModelSerializer): "meta_publisher", "policy_engine_mode", "group", + "meta_hide", ] extra_kwargs = { "backchannel_providers": {"required": False}, @@ -163,6 +174,7 @@ class ApplicationViewSet(UsedByMixin, ModelViewSet): request.user = user for application in paginated_apps: engine = PolicyEngine(application, request.user, request) + engine.empty_result = AppAccessWithoutBindings.get() engine.build() if engine.passing: applications.append(application) @@ -220,6 +232,7 @@ class ApplicationViewSet(UsedByMixin, ModelViewSet): if not for_user: raise ValidationError({"for_user": "User not found"}) engine = PolicyEngine(application, for_user, request) + engine.empty_result = AppAccessWithoutBindings.get() engine.use_cache = False with capture_logs() as logs: engine.build() @@ -266,11 +279,17 @@ class ApplicationViewSet(UsedByMixin, ModelViewSet): if superuser_full_list and request.user.is_superuser: return super().list(request) - only_with_launch_url = str( - request.query_params.get("only_with_launch_url", "false") - ).lower() + only_with_launch_url = ( + str(request.query_params.get("only_with_launch_url", "false")).lower() + ) == "true" queryset = self._filter_queryset_for_list(self.get_queryset()) + queryset = queryset.exclude(meta_hide=True) + if only_with_launch_url: + # Pre-filter at DB level to skip expensive per-app policy evaluation + # for apps that can never appear in the launcher (no meta_launch_url + # and no provider, so no possible launch URL). + queryset = queryset.exclude(meta_launch_url="", provider__isnull=True) paginator: Pagination = self.paginator paginated_apps = paginator.paginate_queryset(queryset, request) @@ -287,7 +306,6 @@ class ApplicationViewSet(UsedByMixin, ModelViewSet): except ValueError as exc: raise ValidationError from exc allowed_applications = self._get_allowed_applications(paginated_apps, user=for_user) - allowed_applications = self._expand_applications(allowed_applications) serializer = self.get_serializer(allowed_applications, many=True) return self.get_paginated_response(serializer.data) @@ -297,19 +315,26 @@ class ApplicationViewSet(UsedByMixin, ModelViewSet): allowed_applications = self._get_allowed_applications(paginated_apps) if should_cache: allowed_applications = cache.get( - user_app_cache_key(self.request.user.pk, paginator.page.number) + user_app_cache_key( + self.request.user.pk, paginator.page.number, only_with_launch_url + ) ) - if not allowed_applications: + if allowed_applications: + # Re-fetch cached applications since pickled instances lose prefetched + # relationships, causing N+1 queries during serialization + allowed_applications = self._expand_applications(allowed_applications) + else: LOGGER.debug("Caching allowed application list", page=paginator.page.number) allowed_applications = self._get_allowed_applications(paginated_apps) cache.set( - user_app_cache_key(self.request.user.pk, paginator.page.number), + user_app_cache_key( + self.request.user.pk, paginator.page.number, only_with_launch_url + ), allowed_applications, timeout=86400, ) - allowed_applications = self._expand_applications(allowed_applications) - if only_with_launch_url == "true": + if only_with_launch_url: allowed_applications = self._filter_applications_with_launch_url(allowed_applications) serializer = self.get_serializer(allowed_applications, many=True) diff --git a/authentik/core/api/authenticated_sessions.py b/authentik/core/api/authenticated_sessions.py index 449c15ace0..733e0988b6 100644 --- a/authentik/core/api/authenticated_sessions.py +++ b/authentik/core/api/authenticated_sessions.py @@ -32,19 +32,19 @@ from authentik.rbac.decorators import permission_required class UserAgentDeviceDict(TypedDict): """User agent device""" - brand: str + brand: str | None = None family: str - model: str + model: str | None = None class UserAgentOSDict(TypedDict): """User agent os""" family: str - major: str - minor: str - patch: str - patch_minor: str + major: str | None = None + minor: str | None = None + patch: str | None = None + patch_minor: str | None = None class UserAgentBrowserDict(TypedDict): diff --git a/authentik/core/api/groups.py b/authentik/core/api/groups.py index 8675ccdf41..fa2ef052e9 100644 --- a/authentik/core/api/groups.py +++ b/authentik/core/api/groups.py @@ -7,6 +7,7 @@ from django.http import Http404 from django.utils.translation import gettext as _ from django_filters.filters import CharFilter, ModelMultipleChoiceFilter from django_filters.filterset import FilterSet +from djangoql.schema import BoolField, StrField from drf_spectacular.utils import ( OpenApiParameter, OpenApiResponse, @@ -18,13 +19,16 @@ from rest_framework.authentication import SessionAuthentication from rest_framework.decorators import action from rest_framework.fields import CharField, IntegerField, SerializerMethodField from rest_framework.permissions import IsAuthenticated -from rest_framework.relations import PrimaryKeyRelatedField +from rest_framework.relations import ManyRelatedField, PrimaryKeyRelatedField from rest_framework.request import Request from rest_framework.response import Response from rest_framework.serializers import ListSerializer, ValidationError from rest_framework.viewsets import ModelViewSet from authentik.api.authentication import TokenAuthentication +from authentik.api.search.fields import ( + JSONSearchField, +) from authentik.api.validation import validate from authentik.core.api.used_by import UsedByMixin from authentik.core.api.utils import JSONDictField, ModelSerializer, PassiveSerializer @@ -33,6 +37,77 @@ from authentik.endpoints.connectors.agent.auth import AgentAuth from authentik.rbac.api.roles import RoleSerializer from authentik.rbac.decorators import permission_required + +class BulkManyRelatedField(ManyRelatedField): + """ManyRelatedField that validates all PKs in a single query instead of one per PK.""" + + def to_internal_value(self, data): + if isinstance(data, str) or not hasattr(data, "__iter__"): + self.fail("not_a_list", input_type=type(data).__name__) + if not self.allow_empty and len(data) == 0: + self.fail("empty") + + child = self.child_relation + pk_field = child.pk_field + # Coerce PKs through pk_field if defined + pk_map = {} + for item in data: + if isinstance(item, bool): + self.fail("incorrect_type", data_type=type(item).__name__) + pk = pk_field.to_internal_value(item) if pk_field else item + pk_map[pk] = item # map coerced PK -> original value for error reporting + + queryset = child.get_queryset() + # Use count to validate all PKs exist in a single query + found_count = queryset.filter(pk__in=pk_map.keys()).count() + if found_count < len(pk_map): + # Some PKs not found — fall back to per-PK checks for error reporting. + # This only runs when there's an actual validation error (rare path). + for pk, original in pk_map.items(): + if not queryset.filter(pk=pk).exists(): + child.fail("does_not_exist", pk_value=original) + + # Return raw PKs — Django's M2M set() accepts both objects and PKs, + # using get_prep_value() for type coercion. This avoids loading all + # objects into memory and avoids triggering post_init signals. + return list(pk_map.keys()) + + def to_representation(self, iterable): + # For non-prefetched querysets, get PKs directly without loading model instances. + # When prefetched, _result_cache is a list (possibly empty); when not, it's None. + if hasattr(iterable, "values_list") and getattr(iterable, "_result_cache", None) is None: + return list(iterable.values_list("pk", flat=True)) + return super().to_representation(iterable) + + +class BulkPrimaryKeyRelatedField(PrimaryKeyRelatedField): + """PrimaryKeyRelatedField that uses bulk validation when many=True.""" + + @classmethod + def many_init(cls, *args, **kwargs): + allow_empty = kwargs.pop("allow_empty", None) + max_length = kwargs.pop("max_length", None) + min_length = kwargs.pop("min_length", None) + child_relation = cls(*args, **kwargs) + list_kwargs = { + "child_relation": child_relation, + } + if allow_empty is not None: + list_kwargs["allow_empty"] = allow_empty + if max_length is not None: + list_kwargs["max_length"] = max_length + if min_length is not None: + list_kwargs["min_length"] = min_length + list_kwargs.update( + { + key: value + for key, value in kwargs.items() + if key in ("required", "default", "source") + } + ) + return BulkManyRelatedField(**list_kwargs) + + PARTIAL_USER_SERIALIZER_MODEL_FIELDS = [ "pk", "username", @@ -75,6 +150,7 @@ class GroupSerializer(ModelSerializer): """Group Serializer""" attributes = JSONDictField(required=False) + users = BulkPrimaryKeyRelatedField(queryset=User.objects.all(), many=True, default=list) parents = PrimaryKeyRelatedField(queryset=Group.objects.all(), many=True, required=False) parents_obj = SerializerMethodField(allow_null=True) children_obj = SerializerMethodField(allow_null=True) @@ -170,6 +246,25 @@ class GroupSerializer(ModelSerializer): ) return superuser + def validate_users(self, users: list) -> list: + """Require add_user_to_group permission when adding new members via group PATCH.""" + request: Request = self.context.get("request", None) + if not request: + return users + if not self.instance: + return users + # BulkManyRelatedField returns raw PKs, not model instances + current_user_pks = set(self.instance.users.values_list("pk", flat=True)) + new_users = [u for u in users if u not in current_user_pks] + if not new_users: + return users + has_perm = request.user.has_perm( + "authentik_core.add_user_to_group" + ) or request.user.has_perm("authentik_core.add_user_to_group", self.instance) + if not has_perm: + raise ValidationError(_("User does not have permission to add members to this group.")) + return users + class Meta: model = Group fields = [ @@ -189,9 +284,6 @@ class GroupSerializer(ModelSerializer): "children_obj", ] extra_kwargs = { - "users": { - "default": list, - }, "children": { "required": False, "default": list, @@ -221,6 +313,7 @@ class GroupFilter(FilterSet): members_by_pk = ModelMultipleChoiceFilter( field_name="users", queryset=User.objects.all(), + distinct=False, ) def filter_attributes(self, queryset, name, value): @@ -265,12 +358,6 @@ class GroupViewSet(UsedByMixin, ModelViewSet): ] def get_ql_fields(self): - from djangoql.schema import BoolField, StrField - - from authentik.enterprise.search.fields import ( - JSONSearchField, - ) - return [ StrField(Group, "name"), BoolField(Group, "is_superuser", nullable=True), @@ -278,7 +365,8 @@ class GroupViewSet(UsedByMixin, ModelViewSet): ] def get_queryset(self): - base_qs = Group.objects.all().prefetch_related("roles") + # Always prefetch parents and children since their PKs are always serialized + base_qs = Group.objects.all().prefetch_related("roles", "parents", "children") if self.serializer_class(context={"request": self.request})._should_include_users: # Only fetch fields needed by PartialUserSerializer to reduce DB load and instantiation @@ -289,16 +377,9 @@ class GroupViewSet(UsedByMixin, ModelViewSet): queryset=User.objects.all().only(*PARTIAL_USER_SERIALIZER_MODEL_FIELDS), ) ) - else: - base_qs = base_qs.prefetch_related( - Prefetch("users", queryset=User.objects.all().only("id")) - ) - - if self.serializer_class(context={"request": self.request})._should_include_children: - base_qs = base_qs.prefetch_related("children") - - if self.serializer_class(context={"request": self.request})._should_include_parents: - base_qs = base_qs.prefetch_related("parents") + # When include_users=false, skip users prefetch entirely. + # BulkManyRelatedField.to_representation will use values_list to get PKs + # directly without loading User instances into memory. return base_qs diff --git a/authentik/core/api/tokens.py b/authentik/core/api/tokens.py index 1df2cfb9a4..8529c677e1 100644 --- a/authentik/core/api/tokens.py +++ b/authentik/core/api/tokens.py @@ -124,7 +124,7 @@ class TokenViewSet(UsedByMixin, ModelViewSet): """Token Viewset""" lookup_field = "identifier" - queryset = Token.objects.all() + queryset = Token.objects.including_expired().all() serializer_class = TokenSerializer search_fields = [ "identifier", diff --git a/authentik/core/api/transactional_applications.py b/authentik/core/api/transactional_applications.py index b9311fee54..2491f2eacb 100644 --- a/authentik/core/api/transactional_applications.py +++ b/authentik/core/api/transactional_applications.py @@ -2,9 +2,8 @@ from django.apps import apps from django.db.models import Model -from django.utils.translation import gettext as _ from drf_spectacular.utils import PolymorphicProxySerializer, extend_schema, extend_schema_field -from rest_framework.exceptions import PermissionDenied, ValidationError +from rest_framework.exceptions import ValidationError from rest_framework.fields import BooleanField, CharField, ChoiceField, DictField, ListField from rest_framework.permissions import IsAuthenticated from rest_framework.request import Request @@ -13,6 +12,7 @@ from rest_framework.views import APIView from yaml import ScalarNode from authentik.api.validation import validate +from authentik.blueprints.api import check_blueprint_perms from authentik.blueprints.v1.common import ( Blueprint, BlueprintEntry, @@ -165,21 +165,7 @@ class TransactionalApplicationView(APIView): def put(self, request: Request, body: TransactionApplicationSerializer) -> Response: """Convert data into a blueprint, validate it and apply it""" blueprint: Blueprint = body.validated_data - for entry in blueprint.entries: - full_model = entry.get_model(blueprint) - app, __, model = full_model.partition(".") - if not request.user.has_perm(f"{app}.add_{model}"): - raise PermissionDenied( - { - entry.id: _( - "User lacks permission to create {model}".format_map( - { - "model": full_model, - } - ) - ) - } - ) + check_blueprint_perms(blueprint, request.user, explicit_action="add") importer = Importer(blueprint, {}) applied = importer.apply() response = {"applied": False, "logs": []} diff --git a/authentik/core/api/users.py b/authentik/core/api/users.py index 8041017431..2c769e47ce 100644 --- a/authentik/core/api/users.py +++ b/authentik/core/api/users.py @@ -6,6 +6,7 @@ from typing import Any from django.contrib.auth import update_session_auth_hash from django.contrib.auth.models import AnonymousUser, Permission +from django.db.models import Exists, OuterRef, Prefetch, Q from django.db.transaction import atomic from django.db.utils import IntegrityError from django.urls import reverse_lazy @@ -13,6 +14,7 @@ from django.utils.http import urlencode from django.utils.text import slugify from django.utils.timezone import now from django.utils.translation import gettext as _ +from django.utils.translation import gettext_lazy from django_filters.filters import ( BooleanFilter, CharFilter, @@ -22,6 +24,7 @@ from django_filters.filters import ( UUIDFilter, ) from django_filters.filterset import FilterSet +from djangoql.schema import BoolField, StrField from drf_spectacular.types import OpenApiTypes from drf_spectacular.utils import ( OpenApiParameter, @@ -55,6 +58,10 @@ from rest_framework.viewsets import ModelViewSet from structlog.stdlib import get_logger from authentik.api.authentication import TokenAuthentication +from authentik.api.search.fields import ( + ChoiceSearchField, + JSONSearchField, +) from authentik.api.validation import validate from authentik.blueprints.v1.importer import SERIALIZER_CONTEXT_BLUEPRINT from authentik.brands.models import Brand @@ -100,6 +107,10 @@ from authentik.stages.email.utils import TemplateEmailMessage LOGGER = get_logger() +INVALID_PASSWORD_HASH_MESSAGE = gettext_lazy( + "Invalid password hash format. Must be a valid Django password hash." +) + class ParamUserSerializer(PassiveSerializer): """Partial serializer for query parameters to select a user""" @@ -126,7 +137,7 @@ class PartialGroupSerializer(ModelSerializer): class UserSerializer(ModelSerializer): """User Serializer""" - is_superuser = BooleanField(read_only=True) + is_superuser = SerializerMethodField() avatar = SerializerMethodField() attributes = JSONDictField(required=False) groups = PrimaryKeyRelatedField( @@ -163,6 +174,14 @@ class UserSerializer(ModelSerializer): return True return str(request.query_params.get("include_roles", "true")).lower() == "true" + @extend_schema_field(BooleanField) + def get_is_superuser(self, instance: User) -> bool: + """Use annotation if available to avoid N+1 query""" + ann = getattr(instance, "_annotated_is_superuser", None) + if ann is not None: + return ann + return instance.is_superuser + @extend_schema_field(PartialGroupSerializer(many=True)) def get_groups_obj(self, instance: User) -> list[PartialGroupSerializer] | None: if not self._should_include_groups: @@ -176,47 +195,79 @@ class UserSerializer(ModelSerializer): return RoleSerializer(instance.roles, many=True).data def __init__(self, *args, **kwargs): + """Setting password and permissions directly is allowed only in blueprints.""" super().__init__(*args, **kwargs) if SERIALIZER_CONTEXT_BLUEPRINT in self.context: self.fields["password"] = CharField(required=False, allow_null=True) + self.fields["password_hash"] = CharField(required=False, allow_null=True) self.fields["permissions"] = ListField( required=False, child=ChoiceField(choices=get_permission_choices()), ) def create(self, validated_data: dict) -> User: - """If this serializer is used in the blueprint context, we allow for - directly setting a password. However should be done via the `set_password` - method instead of directly setting it like rest_framework.""" - password = validated_data.pop("password", None) - perms_qs = Permission.objects.filter( - codename__in=[x.split(".")[1] for x in validated_data.pop("permissions", [])] - ).values_list("content_type__app_label", "codename") - perms_list = [f"{ct}.{name}" for ct, name in list(perms_qs)] + """Create a user, with blueprint-only password and permission writes.""" + is_blueprint = SERIALIZER_CONTEXT_BLUEPRINT in self.context + if is_blueprint: + password = validated_data.pop("password", None) + password_hash = validated_data.pop("password_hash", None) + permissions = validated_data.pop("permissions", []) + self._validate_password_inputs(password, password_hash) + instance: User = super().create(validated_data) - self._set_password(instance, password) - instance.assign_perms_to_managed_role(perms_list) + if is_blueprint: + self._set_password(instance, password, password_hash) + perms_qs = Permission.objects.filter( + codename__in=[permission.split(".")[1] for permission in permissions] + ).values_list("content_type__app_label", "codename") + perms_list = [f"{ct}.{name}" for ct, name in perms_qs] + instance.assign_perms_to_managed_role(perms_list) + self._ensure_password_not_empty(instance) return instance def update(self, instance: User, validated_data: dict) -> User: - """Same as `create` above, set the password directly if we're in a blueprint - context""" - password = validated_data.pop("password", None) - perms_qs = Permission.objects.filter( - codename__in=[x.split(".")[1] for x in validated_data.pop("permissions", [])] - ).values_list("content_type__app_label", "codename") - perms_list = [f"{ct}.{name}" for ct, name in list(perms_qs)] + """Update a user, with blueprint-only password and permission writes.""" + is_blueprint = SERIALIZER_CONTEXT_BLUEPRINT in self.context + if is_blueprint: + password = validated_data.pop("password", None) + password_hash = validated_data.pop("password_hash", None) + permissions = validated_data.pop("permissions", []) + self._validate_password_inputs(password, password_hash) + instance = super().update(instance, validated_data) - self._set_password(instance, password) - instance.assign_perms_to_managed_role(perms_list) + if is_blueprint: + self._set_password(instance, password, password_hash) + perms_qs = Permission.objects.filter( + codename__in=[permission.split(".")[1] for permission in permissions] + ).values_list("content_type__app_label", "codename") + perms_list = [f"{ct}.{name}" for ct, name in perms_qs] + instance.assign_perms_to_managed_role(perms_list) + self._ensure_password_not_empty(instance) return instance - def _set_password(self, instance: User, password: str | None): - """Set password of user if we're in a blueprint context, and if it's an empty - string then use an unusable password""" - if SERIALIZER_CONTEXT_BLUEPRINT in self.context and password: + def _validate_password_inputs(self, password: str | None, password_hash: str | None): + """Validate mutually-exclusive password inputs before any model mutation.""" + if password is not None and password_hash is not None: + raise ValidationError(_("Cannot set both password and password_hash. Use only one.")) + if password_hash is None: + return + try: + User.validate_password_hash(password_hash) + except ValueError as exc: + LOGGER.warning("Failed to identify password hash format", exc_info=exc) + raise ValidationError(INVALID_PASSWORD_HASH_MESSAGE) from exc + + def _set_password(self, instance: User, password: str | None, password_hash: str | None = None): + """Set password from plain text or hash.""" + if password_hash is not None: + instance.set_password_from_hash(password_hash) + instance.save() + elif password: instance.set_password(password) instance.save() + + def _ensure_password_not_empty(self, instance: User): + """Store an explicit unusable password instead of an empty password field.""" if len(instance.password) == 0: instance.set_unusable_password() instance.save() @@ -246,6 +297,36 @@ class UserSerializer(ModelSerializer): raise ValidationError(_("Setting a user to internal service account is not allowed.")) return user_type + def validate_groups(self, groups: list) -> list: + """Require enable_group_superuser permission when adding a user to a superuser group.""" + request: Request = self.context.get("request", None) + if not request: + return groups + current_groups = set(self.instance.groups.all()) if self.instance else set() + for group in groups: + if not group.is_superuser: + continue + if group in current_groups: + continue + if not request.user.has_perm("authentik_core.enable_group_superuser"): + raise ValidationError( + _("User does not have permission to add members to a superuser group.") + ) + return groups + + def validate_roles(self, roles: list) -> list: + """Require change_role permission when assigning new roles to a user.""" + request: Request = self.context.get("request", None) + if not request: + return roles + current_roles = set(self.instance.roles.all()) if self.instance else set() + new_roles = [r for r in roles if r not in current_roles] + if not new_roles: + return roles + if not request.user.has_perm("authentik_rbac.change_role"): + raise ValidationError(_("User does not have permission to assign roles.")) + return roles + def validate(self, attrs: dict) -> dict: if self.instance and self.instance.type == UserTypes.INTERNAL_SERVICE_ACCOUNT: raise ValidationError(_("Can't modify internal service account users")) @@ -385,6 +466,12 @@ class UserPasswordSetSerializer(PassiveSerializer): password = CharField(required=True) +class UserPasswordHashSetSerializer(PassiveSerializer): + """Payload to set a users' password hash directly""" + + password = CharField(required=True) + + class UserServiceAccountSerializer(PassiveSerializer): """Payload to create a service account""" @@ -506,6 +593,9 @@ class UsersFilter(FilterSet): class UserViewSet( + ConditionalInheritance( + "authentik.enterprise.stages.account_lockdown.api.UserAccountLockdownMixin" + ), ConditionalInheritance("authentik.enterprise.reports.api.reports.ExportMixin"), UsedByMixin, ModelViewSet, @@ -524,13 +614,6 @@ class UserViewSet( ] def get_ql_fields(self): - from djangoql.schema import BoolField, StrField - - from authentik.enterprise.search.fields import ( - ChoiceSearchField, - JSONSearchField, - ) - return [ StrField(User, "username"), StrField(User, "name"), @@ -543,10 +626,30 @@ class UserViewSet( def get_queryset(self): base_qs = User.objects.all().exclude_anonymous() + # Always prefetch groups since group PKs are always serialized. + # Use full prefetch when include_groups=true (for groups_obj), ID-only otherwise. if self.serializer_class(context={"request": self.request})._should_include_groups: base_qs = base_qs.prefetch_related("groups") + else: + base_qs = base_qs.prefetch_related( + Prefetch("groups", queryset=Group.objects.all().only("group_uuid")) + ) if self.serializer_class(context={"request": self.request})._should_include_roles: base_qs = base_qs.prefetch_related("roles") + else: + base_qs = base_qs.prefetch_related( + Prefetch("roles", queryset=Role.objects.all().only("uuid")) + ) + # Annotate is_superuser to avoid N+1 query per user + base_qs = base_qs.annotate( + _annotated_is_superuser=Exists( + Group.objects.filter( + is_superuser=True, + ).filter( + Q(users=OuterRef("pk")) | Q(descendant_nodes__descendant__users=OuterRef("pk")) + ) + ) + ) return base_qs @extend_schema( @@ -715,6 +818,11 @@ class UserViewSet( self.request.session.modified = True return Response(serializer.initial_data) + def _update_session_hash_after_password_change(self, request: Request, user: User): + if user.pk == request.user.pk and SESSION_KEY_IMPERSONATE_USER not in self.request.session: + LOGGER.debug("Updating session hash after password change") + update_session_auth_hash(self.request, user) + @permission_required("authentik_core.reset_user_password") @extend_schema( request=UserPasswordSetSerializer, @@ -738,9 +846,45 @@ class UserViewSet( except (ValidationError, IntegrityError) as exc: LOGGER.debug("Failed to set password", exc=exc) return Response(status=400) - if user.pk == request.user.pk and SESSION_KEY_IMPERSONATE_USER not in self.request.session: - LOGGER.debug("Updating session hash after password change") - update_session_auth_hash(self.request, user) + self._update_session_hash_after_password_change(request, user) + return Response(status=204) + + @permission_required("authentik_core.reset_user_password") + @extend_schema( + request=UserPasswordHashSetSerializer, + responses={ + 204: OpenApiResponse(description="Successfully changed password"), + 400: OpenApiResponse(description="Bad request"), + }, + ) + @action( + detail=True, + methods=["POST"], + permission_classes=[IsAuthenticated], + ) + @validate(UserPasswordHashSetSerializer) + def set_password_hash( + self, request: Request, pk: int, body: UserPasswordHashSetSerializer + ) -> Response: + """Set a user's password from a pre-hashed Django password value. + + Submit the Django password hash in the shared ``password`` request field. + + This updates authentik's local password verifier only. It does not attempt + to propagate the password change to LDAP or Kerberos because no raw password + is available from the request payload. + """ + user: User = self.get_object() + try: + user.set_password_from_hash(body.validated_data["password"], request=request) + user.save() + except ValueError as exc: + LOGGER.debug("Failed to set password hash", exc=exc) + return Response(data={"password": [INVALID_PASSWORD_HASH_MESSAGE]}, status=400) + except (ValidationError, IntegrityError) as exc: + LOGGER.debug("Failed to set password hash", exc=exc) + return Response(status=400) + self._update_session_hash_after_password_change(request, user) return Response(status=204) @permission_required("authentik_core.reset_user_password") diff --git a/authentik/core/apps.py b/authentik/core/apps.py index 392980a035..9693eeaf89 100644 --- a/authentik/core/apps.py +++ b/authentik/core/apps.py @@ -1,7 +1,26 @@ """authentik core app config""" +from django.utils.translation import gettext_lazy as _ + from authentik.blueprints.apps import ManagedAppConfig from authentik.tasks.schedules.common import ScheduleSpec +from authentik.tenants.flags import Flag + + +class Setup(Flag[bool], key="setup"): + + default = False + visibility = "system" + + +class AppAccessWithoutBindings(Flag[bool], key="core_default_app_access"): + + default = True + visibility = "none" + description = _( + "Configure if applications without any policy/group/user bindings " + "should be accessible to any user." + ) class AuthentikCoreConfig(ManagedAppConfig): @@ -13,6 +32,10 @@ class AuthentikCoreConfig(ManagedAppConfig): mountpoint = "" default = True + def import_related(self): + super().import_related() + self.import_module("authentik.core.setup.signals") + @ManagedAppConfig.reconcile_tenant def source_inbuilt(self): """Reconcile inbuilt source""" diff --git a/authentik/core/auth.py b/authentik/core/auth.py index e63c40a336..448a704c63 100644 --- a/authentik/core/auth.py +++ b/authentik/core/auth.py @@ -81,7 +81,7 @@ class TokenBackend(InbuiltBackend): User().set_password(password, request=request) return None - tokens = Token.filter_not_expired( + tokens = Token.objects.filter( user=user, key=password, intent=TokenIntents.INTENT_APP_PASSWORD ) if not tokens.exists(): diff --git a/authentik/core/management/commands/hash_password.py b/authentik/core/management/commands/hash_password.py new file mode 100644 index 0000000000..165a0970a5 --- /dev/null +++ b/authentik/core/management/commands/hash_password.py @@ -0,0 +1,28 @@ +"""Hash password using Django's password hashers""" + +from django.contrib.auth.hashers import make_password +from django.core.management.base import BaseCommand, CommandError + + +class Command(BaseCommand): + """Hash a password using Django's password hashers""" + + help = "Hash a password for use with AUTHENTIK_BOOTSTRAP_PASSWORD_HASH" + + def add_arguments(self, parser): + parser.add_argument( + "password", + type=str, + help="Password to hash", + ) + + def handle(self, *args, **options): + password = options["password"] + + if not password: + raise CommandError("Password cannot be empty") + try: + hashed = make_password(password) + self.stdout.write(hashed) + except ValueError as exc: + raise CommandError(f"Error hashing password: {exc}") from exc diff --git a/authentik/core/migrations/0058_setup.py b/authentik/core/migrations/0058_setup.py new file mode 100644 index 0000000000..07009cc3e0 --- /dev/null +++ b/authentik/core/migrations/0058_setup.py @@ -0,0 +1,61 @@ +# Generated by Django 5.2.13 on 2026-04-21 18:49 +from django.apps.registry import Apps + +from django.db.backends.base.schema import BaseDatabaseSchemaEditor + +from django.db import migrations + + +def check_is_already_setup(apps: Apps, schema_editor: BaseDatabaseSchemaEditor): + from django.conf import settings + from authentik.flows.models import FlowAuthenticationRequirement + + VersionHistory = apps.get_model("authentik_admin", "VersionHistory") + Flow = apps.get_model("authentik_flows", "Flow") + User = apps.get_model("authentik_core", "User") + + db_alias = schema_editor.connection.alias + + # Upgrading from a previous version + if not settings.TEST and VersionHistory.objects.using(db_alias).count() > 1: + return True + # OOBE flow sets itself to this authentication requirement once finished + if ( + Flow.objects.using(db_alias) + .filter( + slug="initial-setup", authentication=FlowAuthenticationRequirement.REQUIRE_SUPERUSER + ) + .exists() + ): + return True + # non-akadmin and non-guardian anonymous user exist + if ( + User.objects.using(db_alias) + .exclude(username="akadmin") + .exclude(username="AnonymousUser") + .exists() + ): + return True + return False + + +def update_setup_flag(apps: Apps, schema_editor: BaseDatabaseSchemaEditor): + from authentik.core.apps import Setup + from authentik.tenants.utils import get_current_tenant + + is_already_setup = check_is_already_setup(apps, schema_editor) + if is_already_setup: + tenant = get_current_tenant() + tenant.flags[Setup().key] = True + tenant.save() + + +class Migration(migrations.Migration): + + dependencies = [ + ("authentik_core", "0057_remove_user_groups_remove_user_user_permissions_and_more"), + # 0024_flow_authentication adds the `authentication` field. + ("authentik_flows", "0024_flow_authentication"), + ] + + operations = [migrations.RunPython(update_setup_flag, migrations.RunPython.noop)] diff --git a/authentik/core/migrations/0059_add_application_meta_hide.py b/authentik/core/migrations/0059_add_application_meta_hide.py new file mode 100644 index 0000000000..331639f2bf --- /dev/null +++ b/authentik/core/migrations/0059_add_application_meta_hide.py @@ -0,0 +1,33 @@ +# Generated by Django 5.2.12 on 2026-04-09 18:04 + +from django.apps.registry import Apps +from django.db import migrations, models +from django.db.backends.base.schema import BaseDatabaseSchemaEditor + + +def migrate_blank_launch_url(apps: Apps, schema_editor: BaseDatabaseSchemaEditor): + db_alias = schema_editor.connection.alias + Application = apps.get_model("authentik_core", "Application") + + Application.objects.using(db_alias).filter(meta_launch_url="blank://blank").update( + meta_hide=True, meta_launch_url="" + ) + + +class Migration(migrations.Migration): + + dependencies = [ + ("authentik_core", "0058_setup"), + ] + + operations = [ + migrations.AddField( + model_name="application", + name="meta_hide", + field=models.BooleanField( + default=False, + help_text="Hide this application from the user's My applications page.", + ), + ), + migrations.RunPython(migrate_blank_launch_url, migrations.RunPython.noop), + ] diff --git a/authentik/core/models.py b/authentik/core/models.py index 7c826e230d..d549ae7471 100644 --- a/authentik/core/models.py +++ b/authentik/core/models.py @@ -2,7 +2,7 @@ import re import traceback -from datetime import datetime, timedelta +from datetime import datetime from enum import StrEnum from hashlib import sha256 from typing import Any, Self @@ -10,13 +10,13 @@ from uuid import uuid4 import pgtrigger from deepmerge import always_merger -from django.contrib.auth.hashers import check_password +from django.contrib.auth.hashers import check_password, identify_hasher from django.contrib.auth.models import AbstractUser, Permission from django.contrib.auth.models import UserManager as DjangoUserManager from django.contrib.sessions.base_session import AbstractBaseSession from django.core.validators import validate_slug from django.db import models -from django.db.models import Q, QuerySet, options +from django.db.models import Manager, Q, QuerySet, options from django.http import HttpRequest from django.utils.functional import cached_property from django.utils.timezone import now @@ -45,6 +45,7 @@ from authentik.lib.models import ( SerializerModel, ) from authentik.lib.utils.inheritance import get_deepest_child +from authentik.lib.utils.reflection import class_to_path from authentik.lib.utils.time import timedelta_from_string from authentik.policies.models import PolicyBindingModel from authentik.rbac.models import Role @@ -517,7 +518,7 @@ class User(SerializerModel, AttributesMixin, AbstractUser): @property def ak_groups(self): """This is a proxy for a renamed, deprecated field.""" - from authentik.events.models import Event, EventAction + from authentik.events.models import Event deprecation = "authentik.core.models.User.ak_groups" replacement = "authentik.core.models.User.groups" @@ -544,21 +545,9 @@ class User(SerializerModel, AttributesMixin, AbstractUser): cause=cause, stacktrace=stacktrace, ) - if not Event.filter_not_expired( - action=EventAction.CONFIGURATION_WARNING, - context__deprecation=deprecation, - context__cause=cause, - ).exists(): - event = Event.new( - EventAction.CONFIGURATION_WARNING, - deprecation=deprecation, - replacement=replacement, - message=message_event, - cause=cause, - ) - event.expires = datetime.now() + timedelta(days=30) - event.save() - + Event.log_deprecation( + deprecation, message=message_event, cause=cause, replacement=replacement + ) return self.groups def set_password(self, raw_password, signal=True, sender=None, request=None): @@ -571,6 +560,33 @@ class User(SerializerModel, AttributesMixin, AbstractUser): self.password_change_date = now() return super().set_password(raw_password) + @staticmethod + def validate_password_hash(password_hash: str): + """Validate that the value is a recognized Django password hash.""" + identify_hasher(password_hash) # Raises ValueError if invalid + + def set_password_from_hash(self, password_hash: str, signal=True, sender=None, request=None): + """Set password directly from a pre-hashed value. + + Unlike set_password(), this does not hash the input again. The provided value + must already be a valid Django password hash, and it is stored directly on the + user after validation. + + Because no raw password is available, downstream password sync integrations + such as LDAP and Kerberos cannot be updated from this code path. + + Raises ValueError if the hash format is not recognized. + """ + self.validate_password_hash(password_hash) + if self.pk and signal: + from authentik.core.signals import password_hash_changed + + if not sender: + sender = self + password_hash_changed.send(sender=sender, user=self, request=request) + self.password = password_hash + self.password_change_date = now() + def check_password(self, raw_password: str) -> bool: """ Return a boolean of whether the raw_password was correct. Handles @@ -746,6 +762,9 @@ class Application(SerializerModel, PolicyBindingModel): meta_icon = FileField(default="", blank=True) meta_description = models.TextField(default="", blank=True) meta_publisher = models.TextField(default="", blank=True) + meta_hide = models.BooleanField( + default=False, help_text=_("Hide this application from the user's My applications page.") + ) objects = ApplicationQuerySet.as_manager() @@ -801,17 +820,21 @@ class Application(SerializerModel, PolicyBindingModel): def get_provider(self) -> Provider | None: """Get casted provider instance. Needs Application queryset with_provider""" + if hasattr(self, "_cached_provider"): + return self._cached_provider if not self.provider: + self._cached_provider = None return None - return get_deepest_child(self.provider) + self._cached_provider = get_deepest_child(self.provider) + return self._cached_provider def backchannel_provider_for[T: Provider](self, provider_type: type[T], **kwargs) -> T | None: """Get Backchannel provider for a specific type""" - providers = self.backchannel_providers.filter( + provider: BackchannelProvider | None = self.backchannel_providers.filter( **{f"{provider_type._meta.model_name}__isnull": False}, **kwargs, - ) - return getattr(providers.first(), provider_type._meta.model_name) + ).first() + return getattr(provider, provider_type._meta.model_name) if provider else None def __str__(self): return str(self.name) @@ -962,21 +985,34 @@ class Source(ManagedModel, SerializerModel, PolicyBindingModel): objects = InheritanceManager() + def get_icon_url(self, request=None, use_cache: bool = True) -> str | None: + """Get the URL to the source icon.""" + if not self.icon: + return None + return get_file_manager(FileUsage.MEDIA).file_url(self.icon, request, use_cache=use_cache) + @property def icon_url(self) -> str | None: """Get the URL to the source icon""" + return self.get_icon_url() + + def get_icon_themed_urls( + self, + request=None, + use_cache: bool = True, + ) -> dict[str, str] | None: + """Get themed URLs for icon if it contains %(theme)s.""" if not self.icon: return None - - return get_file_manager(FileUsage.MEDIA).file_url(self.icon) + return get_file_manager(FileUsage.MEDIA).themed_urls( + self.icon, + request, + use_cache=use_cache, + ) @property def icon_themed_urls(self) -> dict[str, str] | None: - """Get themed URLs for icon if it contains %(theme)s""" - if not self.icon: - return None - - return get_file_manager(FileUsage.MEDIA).themed_urls(self.icon) + return self.get_icon_themed_urls() def get_user_path(self) -> str: """Get user path, fallback to default for formatting errors""" @@ -1096,12 +1132,24 @@ class GroupSourceConnection(SerializerModel, CreatedUpdatedModel): unique_together = (("group", "source"),) +class ExpiringManager(Manager): + """Manager for expiring objects which filters out expired objects by default""" + + def get_queryset(self): + return QuerySet(self.model, using=self._db).exclude(expires__lt=now(), expiring=True) + + def including_expired(self): + return QuerySet(self.model, using=self._db) + + class ExpiringModel(models.Model): """Base Model which can expire, and is automatically cleaned up.""" expires = models.DateTimeField(default=None, null=True) expiring = models.BooleanField(default=True) + objects = ExpiringManager() + class Meta: abstract = True indexes = [ @@ -1125,7 +1173,23 @@ class ExpiringModel(models.Model): def filter_not_expired(cls, **kwargs) -> QuerySet[Self]: """Filer for tokens which are not expired yet or are not expiring, and match filters in `kwargs`""" - for obj in cls.objects.filter(**kwargs).filter(Q(expires__lt=now(), expiring=True)): + from authentik.events.models import Event + + deprecation_id = f"{class_to_path(cls)}.filter_not_expired" + + Event.log_deprecation( + deprecation_id, + message=( + ".filter_not_expired() is deprecated as the default lookup now excludes " + "expired objects." + ), + ) + + for obj in ( + cls.objects.including_expired() + .filter(**kwargs) + .filter(Q(expires__lt=now(), expiring=True)) + ): obj.delete() return cls.objects.filter(**kwargs) diff --git a/authentik/core/sessions.py b/authentik/core/sessions.py index 4bec11e7e8..1286640278 100644 --- a/authentik/core/sessions.py +++ b/authentik/core/sessions.py @@ -72,6 +72,7 @@ class SessionStore(SessionBase): # and their descriptors fail to initialize (e.g., missing storage) # TypeError - can happen with incompatible pickled objects # If any of these happen, just return an empty dictionary (an empty session) + LOGGER.warning("Failed to decode session data", exc_info=True) pass return {} diff --git a/packages/django-dramatiq-postgres/django_dramatiq_postgres/management/__init__.py b/authentik/core/setup/__init__.py similarity index 100% rename from packages/django-dramatiq-postgres/django_dramatiq_postgres/management/__init__.py rename to authentik/core/setup/__init__.py diff --git a/authentik/core/setup/signals.py b/authentik/core/setup/signals.py new file mode 100644 index 0000000000..cd910761c6 --- /dev/null +++ b/authentik/core/setup/signals.py @@ -0,0 +1,42 @@ +from os import getenv + +from django.dispatch import receiver +from structlog.stdlib import get_logger + +from authentik.blueprints.models import BlueprintInstance +from authentik.blueprints.v1.importer import Importer +from authentik.core.apps import Setup +from authentik.root.signals import post_startup +from authentik.tenants.models import Tenant + +BOOTSTRAP_BLUEPRINT = "system/bootstrap.yaml" + +LOGGER = get_logger() + + +@receiver(post_startup) +def post_startup_setup_bootstrap(sender, **_): + if ( + not getenv("AUTHENTIK_BOOTSTRAP_PASSWORD") + and not getenv("AUTHENTIK_BOOTSTRAP_PASSWORD_HASH") + and not getenv("AUTHENTIK_BOOTSTRAP_TOKEN") + ): + return + LOGGER.info("Configuring authentik through bootstrap environment variables") + content = BlueprintInstance(path=BOOTSTRAP_BLUEPRINT).retrieve() + # If we have bootstrap credentials set, run bootstrap tasks outside of main server + # sync, so that we can sure the first start actually has working bootstrap + # credentials + for tenant in Tenant.objects.filter(ready=True): + if Setup.get(tenant=tenant): + LOGGER.info("Tenant is already setup, skipping", tenant=tenant.schema_name) + continue + with tenant: + importer = Importer.from_string(content) + valid, logs = importer.validate() + if not valid: + LOGGER.warning("Blueprint invalid", tenant=tenant.schema_name) + for log in logs: + log.log() + importer.apply() + Setup.set(True, tenant=tenant) diff --git a/authentik/core/setup/views.py b/authentik/core/setup/views.py new file mode 100644 index 0000000000..a61c5b6e83 --- /dev/null +++ b/authentik/core/setup/views.py @@ -0,0 +1,80 @@ +from functools import lru_cache +from http import HTTPMethod, HTTPStatus + +from django.contrib.staticfiles import finders +from django.db import transaction +from django.http import HttpRequest, HttpResponse +from django.shortcuts import redirect +from django.urls import reverse +from django.views import View +from structlog.stdlib import get_logger + +from authentik.blueprints.models import BlueprintInstance +from authentik.core.apps import Setup +from authentik.flows.models import Flow, FlowAuthenticationRequirement, in_memory_stage +from authentik.flows.planner import FlowPlanner +from authentik.flows.stage import StageView + +LOGGER = get_logger() +FLOW_CONTEXT_START_BY = "goauthentik.io/core/setup/started-by" + + +@lru_cache +def read_static(path: str) -> str | None: + result = finders.find(path) + if not result: + return None + with open(result, encoding="utf8") as _file: + return _file.read() + + +class SetupView(View): + + setup_flow_slug = "initial-setup" + + def dispatch(self, request: HttpRequest, *args, **kwargs): + if request.method != HTTPMethod.HEAD and Setup.get(): + return redirect(reverse("authentik_core:root-redirect")) + return super().dispatch(request, *args, **kwargs) + + def head(self, request: HttpRequest, *args, **kwargs): + if Setup.get(): + return HttpResponse(status=HTTPStatus.SERVICE_UNAVAILABLE) + if not Flow.objects.filter(slug=self.setup_flow_slug).exists(): + return HttpResponse(status=HTTPStatus.SERVICE_UNAVAILABLE) + return HttpResponse(status=HTTPStatus.OK) + + def get(self, request: HttpRequest): + flow = Flow.objects.filter(slug=self.setup_flow_slug).first() + if not flow: + LOGGER.info("Setup flow does not exist yet, waiting for worker to finish") + return HttpResponse( + read_static("dist/standalone/loading/startup.html"), + status=HTTPStatus.SERVICE_UNAVAILABLE, + ) + planner = FlowPlanner(flow) + plan = planner.plan(request, {FLOW_CONTEXT_START_BY: "setup"}) + plan.append_stage(in_memory_stage(PostSetupStageView)) + return plan.to_redirect(request, flow) + + +class PostSetupStageView(StageView): + """Run post-setup tasks""" + + def post(self, request: HttpRequest, *args, **kwargs) -> HttpResponse: + """Wrapper when this stage gets hit with a post request""" + return self.get(request, *args, **kwargs) + + def get(self, requeset: HttpRequest, *args, **kwargs): + with transaction.atomic(): + # Remember we're setup + Setup.set(True) + # Disable OOBE Blueprints + BlueprintInstance.objects.filter( + **{"metadata__labels__blueprints.goauthentik.io/system-oobe": "true"} + ).update(enabled=False) + # Make flow inaccessible + Flow.objects.filter(slug="initial-setup").update( + authentication=FlowAuthenticationRequirement.REQUIRE_SUPERUSER + ) + return self.executor.stage_ok() diff --git a/authentik/core/signals.py b/authentik/core/signals.py index 90c1216310..7d604c32e6 100644 --- a/authentik/core/signals.py +++ b/authentik/core/signals.py @@ -1,6 +1,5 @@ """authentik core signals""" -from asgiref.sync import async_to_sync from channels.layers import get_channel_layer from django.contrib.auth.signals import user_logged_in from django.core.cache import cache @@ -24,7 +23,10 @@ from authentik.root.ws.consumer import build_device_group # Arguments: user: User, password: str password_changed = Signal() -# Arguments: credentials: dict[str, any], request: HttpRequest, stage: Stage +# Arguments: user: User, request: HttpRequest | None +password_hash_changed = Signal() +# Arguments: credentials: dict[str, any], request: HttpRequest, +# stage: Stage, context: dict[str, any] login_failed = Signal() LOGGER = get_logger() @@ -56,7 +58,7 @@ def user_logged_in_session(sender, request: HttpRequest, user: User, **_): layer = get_channel_layer() device_cookie = request.COOKIES.get("authentik_device") if device_cookie: - async_to_sync(layer.group_send)( + layer.group_send_blocking( build_device_group(device_cookie), {"type": "event.session.authenticated"}, ) diff --git a/authentik/core/tasks.py b/authentik/core/tasks.py index 999c68c9c9..1741630bba 100644 --- a/authentik/core/tasks.py +++ b/authentik/core/tasks.py @@ -27,7 +27,10 @@ def clean_expired_models(): for cls in ExpiringModel.__subclasses__(): cls: ExpiringModel objects = ( - cls.objects.all().exclude(expiring=False).exclude(expiring=True, expires__gt=now()) + cls.objects.including_expired() + .all() + .exclude(expiring=False) + .exclude(expiring=True, expires__gt=now()) ) amount = objects.count() for obj in chunked_queryset(objects): diff --git a/authentik/core/templates/login/base_full.html b/authentik/core/templates/login/base_full.html index 1e55116354..f3554446e8 100644 --- a/authentik/core/templates/login/base_full.html +++ b/authentik/core/templates/login/base_full.html @@ -12,7 +12,7 @@ {% block head %} diff --git a/authentik/core/tests/test_applications_api.py b/authentik/core/tests/test_applications_api.py index 29f972fbe3..a753a731f5 100644 --- a/authentik/core/tests/test_applications_api.py +++ b/authentik/core/tests/test_applications_api.py @@ -129,6 +129,7 @@ class TestApplicationsAPI(APITestCase): "meta_icon_url": None, "meta_icon_themed_urls": None, "meta_description": "", + "meta_hide": False, "meta_publisher": "", "policy_engine_mode": "any", }, @@ -187,12 +188,14 @@ class TestApplicationsAPI(APITestCase): "meta_icon_url": None, "meta_icon_themed_urls": None, "meta_description": "", + "meta_hide": False, "meta_publisher": "", "policy_engine_mode": "any", }, { "launch_url": None, "meta_description": "", + "meta_hide": False, "meta_icon": "", "meta_icon_url": None, "meta_icon_themed_urls": None, diff --git a/authentik/core/tests/test_groups_api.py b/authentik/core/tests/test_groups_api.py index dc650628bf..95fe761e8f 100644 --- a/authentik/core/tests/test_groups_api.py +++ b/authentik/core/tests/test_groups_api.py @@ -158,3 +158,58 @@ class TestGroupsAPI(APITestCase): data={"name": generate_id(), "is_superuser": True}, ) self.assertEqual(res.status_code, 201) + + def test_patch_users_no_perm(self): + """PATCH group with new users without add_user_to_group must be rejected.""" + group = Group.objects.create(name=generate_id()) + self.login_user.assign_perms_to_managed_role("authentik_core.view_group", group) + self.login_user.assign_perms_to_managed_role("authentik_core.change_group", group) + self.client.force_login(self.login_user) + res = self.client.patch( + reverse("authentik_api:group-detail", kwargs={"pk": group.pk}), + data={"users": [self.user.pk]}, + content_type="application/json", + ) + self.assertEqual(res.status_code, 400) + + def test_patch_users_with_global_perm(self): + """PATCH group with new users with global add_user_to_group must succeed.""" + group = Group.objects.create(name=generate_id()) + self.login_user.assign_perms_to_managed_role("authentik_core.view_group", group) + self.login_user.assign_perms_to_managed_role("authentik_core.change_group", group) + self.login_user.assign_perms_to_managed_role("authentik_core.add_user_to_group") + self.client.force_login(self.login_user) + res = self.client.patch( + reverse("authentik_api:group-detail", kwargs={"pk": group.pk}), + data={"users": [self.user.pk]}, + content_type="application/json", + ) + self.assertEqual(res.status_code, 200) + + def test_patch_users_with_obj_perm(self): + """PATCH group with new users with object-level add_user_to_group must succeed.""" + group = Group.objects.create(name=generate_id()) + self.login_user.assign_perms_to_managed_role("authentik_core.view_group", group) + self.login_user.assign_perms_to_managed_role("authentik_core.change_group", group) + self.login_user.assign_perms_to_managed_role("authentik_core.add_user_to_group", group) + self.client.force_login(self.login_user) + res = self.client.patch( + reverse("authentik_api:group-detail", kwargs={"pk": group.pk}), + data={"users": [self.user.pk]}, + content_type="application/json", + ) + self.assertEqual(res.status_code, 200) + + def test_patch_existing_users_no_perm(self): + """PATCH group keeping existing membership without add_user_to_group must succeed.""" + group = Group.objects.create(name=generate_id()) + group.users.add(self.user) + self.login_user.assign_perms_to_managed_role("authentik_core.view_group", group) + self.login_user.assign_perms_to_managed_role("authentik_core.change_group", group) + self.client.force_login(self.login_user) + res = self.client.patch( + reverse("authentik_api:group-detail", kwargs={"pk": group.pk}), + data={"users": [self.user.pk]}, + content_type="application/json", + ) + self.assertEqual(res.status_code, 200) diff --git a/authentik/core/tests/test_hash_password_command.py b/authentik/core/tests/test_hash_password_command.py new file mode 100644 index 0000000000..6b165b8acd --- /dev/null +++ b/authentik/core/tests/test_hash_password_command.py @@ -0,0 +1,28 @@ +"""Tests for hash_password management command.""" + +from io import StringIO + +from django.contrib.auth.hashers import check_password +from django.core.management import call_command +from django.core.management.base import CommandError +from django.test import TestCase + + +class TestHashPasswordCommand(TestCase): + """Test hash_password management command.""" + + def test_hash_password(self): + """Test hashing a password.""" + out = StringIO() + call_command("hash_password", "test123", stdout=out) + hashed = out.getvalue().strip() + + self.assertTrue(hashed.startswith("pbkdf2_sha256$")) + self.assertTrue(check_password("test123", hashed)) + + def test_hash_password_empty_fails(self): + """Test that empty password raises error.""" + with self.assertRaises(CommandError) as ctx: + call_command("hash_password", "") + + self.assertIn("Password cannot be empty", str(ctx.exception)) diff --git a/authentik/core/tests/test_interface_views.py b/authentik/core/tests/test_interface_views.py index 00bb215ed3..86bd23631e 100644 --- a/authentik/core/tests/test_interface_views.py +++ b/authentik/core/tests/test_interface_views.py @@ -4,6 +4,7 @@ from django.test import TestCase from django.urls import reverse from authentik.brands.models import Brand +from authentik.core.apps import Setup from authentik.core.models import Application, UserTypes from authentik.core.tests.utils import create_test_brand, create_test_user @@ -12,6 +13,7 @@ class TestInterfaceRedirects(TestCase): """Test RootRedirectView and BrandDefaultRedirectView redirect logic by user type""" def setUp(self): + Setup.set(True) self.app = Application.objects.create(name="test-app", slug="test-app") self.brand: Brand = create_test_brand(default_application=self.app) diff --git a/authentik/core/tests/test_models.py b/authentik/core/tests/test_models.py index 91d9467fa9..6542211eae 100644 --- a/authentik/core/tests/test_models.py +++ b/authentik/core/tests/test_models.py @@ -2,6 +2,7 @@ from collections.abc import Callable from datetime import timedelta +from unittest.mock import patch from django.test import RequestFactory, TestCase from django.utils.timezone import now @@ -9,6 +10,9 @@ from freezegun import freeze_time from guardian.shortcuts import get_anonymous_user from authentik.core.models import Provider, Source, Token +from authentik.events.models import Event, EventAction +from authentik.flows.models import Flow +from authentik.lib.generators import generate_id from authentik.lib.utils.reflection import all_subclasses @@ -29,6 +33,74 @@ class TestModels(TestCase): freeze.tick(timedelta(seconds=1)) self.assertFalse(token.is_expired) + def test_filter_not_expired_warning(self): + """Test filter_not_expired's deprecation message""" + id = generate_id() + Token.objects.create( + expires=now() - timedelta(hours=1), + expiring=True, + user=get_anonymous_user(), + identifier=id, + ) + self.assertFalse(Token.filter_not_expired(identifier=id).exists()) + event = Event.objects.filter(action=EventAction.CONFIGURATION_WARNING).first() + self.assertIsNotNone(event) + self.assertEqual( + event.context["deprecation"], "authentik.core.models.Token.filter_not_expired" + ) + + @patch("authentik.core.models.get_file_manager") + def test_source_icon_url_can_bypass_cache(self, get_file_manager): + request = RequestFactory().get("/") + manager = get_file_manager.return_value + manager.file_url.return_value = "/files/media/public/source-icons/icon.svg?token=fresh" + + source = Source(icon="source-icons/icon.svg") + + self.assertEqual( + source.get_icon_url(request, use_cache=False), + "/files/media/public/source-icons/icon.svg?token=fresh", + ) + manager.file_url.assert_called_once_with( + "source-icons/icon.svg", + request, + use_cache=False, + ) + + @patch("authentik.flows.models.get_file_manager") + def test_flow_background_urls_can_bypass_cache(self, get_file_manager): + request = RequestFactory().get("/") + manager = get_file_manager.return_value + manager.file_url.return_value = "/files/media/public/background.svg?token=fresh" + manager.themed_urls.return_value = { + "light": "/files/media/public/background-light.svg?token=fresh", + "dark": "/files/media/public/background-dark.svg?token=fresh", + } + + flow = Flow(background="background-%(theme)s.svg") + + self.assertEqual( + flow.background_url(request, use_cache=False), + "/files/media/public/background.svg?token=fresh", + ) + self.assertEqual( + flow.background_themed_urls(request, use_cache=False), + { + "light": "/files/media/public/background-light.svg?token=fresh", + "dark": "/files/media/public/background-dark.svg?token=fresh", + }, + ) + manager.file_url.assert_called_once_with( + "background-%(theme)s.svg", + request, + use_cache=False, + ) + manager.themed_urls.assert_called_once_with( + "background-%(theme)s.svg", + request, + use_cache=False, + ) + def source_tester_factory(test_model: type[Source]) -> Callable: """Test source""" diff --git a/authentik/core/tests/test_setup.py b/authentik/core/tests/test_setup.py new file mode 100644 index 0000000000..e8303ecc87 --- /dev/null +++ b/authentik/core/tests/test_setup.py @@ -0,0 +1,174 @@ +from http import HTTPStatus +from os import environ + +from django.contrib.auth.hashers import make_password +from django.urls import reverse + +from authentik.blueprints.tests import apply_blueprint +from authentik.core.apps import Setup +from authentik.core.models import Token, TokenIntents, User +from authentik.flows.models import Flow +from authentik.flows.tests import FlowTestCase +from authentik.lib.generators import generate_id +from authentik.root.signals import post_startup, pre_startup +from authentik.tenants.flags import patch_flag + + +class TestSetup(FlowTestCase): + def tearDown(self): + environ.pop("AUTHENTIK_BOOTSTRAP_PASSWORD", None) + environ.pop("AUTHENTIK_BOOTSTRAP_PASSWORD_HASH", None) + environ.pop("AUTHENTIK_BOOTSTRAP_TOKEN", None) + + @patch_flag(Setup, True) + def test_setup(self): + """Test existing instance""" + res = self.client.get(reverse("authentik_core:root-redirect")) + self.assertEqual(res.status_code, HTTPStatus.FOUND) + self.assertRedirects( + res, + reverse("authentik_flows:default-authentication") + "?next=/", + fetch_redirect_response=False, + ) + + res = self.client.head(reverse("authentik_core:setup")) + self.assertEqual(res.status_code, HTTPStatus.SERVICE_UNAVAILABLE) + + res = self.client.get(reverse("authentik_core:setup")) + self.assertEqual(res.status_code, HTTPStatus.FOUND) + self.assertRedirects( + res, + reverse("authentik_core:root-redirect"), + fetch_redirect_response=False, + ) + + @patch_flag(Setup, False) + def test_not_setup_no_flow(self): + """Test case on initial startup; setup flag is not set and oobe flow does + not exist yet""" + Flow.objects.filter(slug="initial-setup").delete() + res = self.client.get(reverse("authentik_core:root-redirect")) + self.assertEqual(res.status_code, HTTPStatus.FOUND) + self.assertRedirects(res, reverse("authentik_core:setup"), fetch_redirect_response=False) + # Flow does not exist, hence 503 + res = self.client.get(reverse("authentik_core:setup")) + self.assertEqual(res.status_code, HTTPStatus.SERVICE_UNAVAILABLE) + res = self.client.head(reverse("authentik_core:setup")) + self.assertEqual(res.status_code, HTTPStatus.SERVICE_UNAVAILABLE) + + @patch_flag(Setup, False) + @apply_blueprint("default/flow-oobe.yaml") + def test_not_setup(self): + """Test case for when worker comes up, and has created flow""" + res = self.client.get(reverse("authentik_core:root-redirect")) + self.assertEqual(res.status_code, HTTPStatus.FOUND) + self.assertRedirects(res, reverse("authentik_core:setup"), fetch_redirect_response=False) + # Flow does not exist, hence 503 + res = self.client.head(reverse("authentik_core:setup")) + self.assertEqual(res.status_code, HTTPStatus.OK) + res = self.client.get(reverse("authentik_core:setup")) + self.assertEqual(res.status_code, HTTPStatus.FOUND) + self.assertRedirects( + res, + reverse("authentik_core:if-flow", kwargs={"flow_slug": "initial-setup"}), + fetch_redirect_response=False, + ) + + @apply_blueprint("default/flow-oobe.yaml") + @apply_blueprint("system/bootstrap.yaml") + def test_setup_flow_full(self): + """Test full setup flow""" + Setup.set(False) + + res = self.client.get(reverse("authentik_core:setup")) + self.assertEqual(res.status_code, HTTPStatus.FOUND) + self.assertRedirects( + res, + reverse("authentik_core:if-flow", kwargs={"flow_slug": "initial-setup"}), + fetch_redirect_response=False, + ) + + res = self.client.get( + reverse("authentik_api:flow-executor", kwargs={"flow_slug": "initial-setup"}), + ) + self.assertEqual(res.status_code, HTTPStatus.OK) + self.assertStageResponse(res, component="ak-stage-prompt") + + pw = generate_id() + res = self.client.post( + reverse("authentik_api:flow-executor", kwargs={"flow_slug": "initial-setup"}), + { + "email": f"{generate_id()}@t.goauthentik.io", + "password": pw, + "password_repeat": pw, + "component": "ak-stage-prompt", + }, + ) + self.assertEqual(res.status_code, HTTPStatus.FOUND) + + res = self.client.get( + reverse("authentik_api:flow-executor", kwargs={"flow_slug": "initial-setup"}), + ) + self.assertEqual(res.status_code, HTTPStatus.FOUND) + + res = self.client.get( + reverse("authentik_api:flow-executor", kwargs={"flow_slug": "initial-setup"}), + ) + self.assertEqual(res.status_code, HTTPStatus.FOUND) + + res = self.client.get( + reverse("authentik_api:flow-executor", kwargs={"flow_slug": "initial-setup"}), + ) + self.assertEqual(res.status_code, HTTPStatus.OK) + + self.assertTrue(Setup.get()) + user = User.objects.get(username="akadmin") + self.assertTrue(user.check_password(pw)) + + @patch_flag(Setup, False) + @apply_blueprint("default/flow-oobe.yaml") + @apply_blueprint("system/bootstrap.yaml") + def test_setup_flow_direct(self): + """Test setup flow, directly accessing the flow""" + res = self.client.get( + reverse("authentik_api:flow-executor", kwargs={"flow_slug": "initial-setup"}) + ) + self.assertStageResponse( + res, + component="ak-stage-access-denied", + error_message="Access the authentik setup by navigating to http://testserver/", + ) + + def test_setup_bootstrap_env(self): + """Test setup with env vars""" + User.objects.filter(username="akadmin").delete() + Setup.set(False) + + environ["AUTHENTIK_BOOTSTRAP_PASSWORD"] = generate_id() + environ["AUTHENTIK_BOOTSTRAP_TOKEN"] = generate_id() + pre_startup.send(sender=self) + post_startup.send(sender=self) + + self.assertTrue(Setup.get()) + user = User.objects.get(username="akadmin") + self.assertTrue(user.check_password(environ["AUTHENTIK_BOOTSTRAP_PASSWORD"])) + + token = Token.objects.filter(identifier="authentik-bootstrap-token").first() + self.assertEqual(token.intent, TokenIntents.INTENT_API) + self.assertEqual(token.key, environ["AUTHENTIK_BOOTSTRAP_TOKEN"]) + + def test_setup_bootstrap_env_password_hash(self): + """Test setup with password hash env var""" + User.objects.filter(username="akadmin").delete() + Setup.set(False) + + password = generate_id() + password_hash = make_password(password) + environ["AUTHENTIK_BOOTSTRAP_PASSWORD_HASH"] = password_hash + pre_startup.send(sender=self) + post_startup.send(sender=self) + + self.assertTrue(Setup.get()) + user = User.objects.get(username="akadmin") + self.assertEqual(user.password, password_hash) + self.assertTrue(user.check_password(password)) diff --git a/authentik/core/tests/test_token_api.py b/authentik/core/tests/test_token_api.py index cf93a16825..5354ecae84 100644 --- a/authentik/core/tests/test_token_api.py +++ b/authentik/core/tests/test_token_api.py @@ -173,7 +173,7 @@ class TestTokenAPI(APITestCase): def test_list(self): """Test Token List (Test normal authentication)""" - Token.objects.all().delete() + Token.objects.including_expired().all().delete() token_should: Token = Token.objects.create( identifier="test", expiring=False, user=self.user ) @@ -185,7 +185,7 @@ class TestTokenAPI(APITestCase): def test_list_with_permission(self): """Test Token List (Test with `view_token` permission)""" - Token.objects.all().delete() + Token.objects.including_expired().all().delete() token_should: Token = Token.objects.create( identifier="test", expiring=False, user=self.user ) diff --git a/authentik/core/tests/test_token_auth.py b/authentik/core/tests/test_token_auth.py index 41629a0839..9e6f56f7d9 100644 --- a/authentik/core/tests/test_token_auth.py +++ b/authentik/core/tests/test_token_auth.py @@ -1,6 +1,9 @@ """Test token auth""" +from datetime import timedelta + from django.test import TestCase +from django.utils.timezone import now from authentik.core.auth import TokenBackend from authentik.core.models import Token, TokenIntents, User @@ -28,6 +31,15 @@ class TestTokenAuth(TestCase): TokenBackend().authenticate(self.request, "test-user", self.token.key), self.user ) + def test_token_auth_expired(self): + """Test auth with token""" + self.token.expiring = True + self.token.expires = now() - timedelta(hours=1) + self.token.save() + self.assertEqual( + TokenBackend().authenticate(self.request, "test-user", self.token.key), None + ) + def test_token_auth_none(self): """Test auth with token (non-existent user)""" self.assertIsNone( diff --git a/authentik/core/tests/test_users.py b/authentik/core/tests/test_users.py index 8900058e48..fd4b2b2d5c 100644 --- a/authentik/core/tests/test_users.py +++ b/authentik/core/tests/test_users.py @@ -1,8 +1,15 @@ """user tests""" -from django.test.testcases import TestCase +from unittest.mock import patch +from django.contrib.auth.hashers import make_password +from django.test.testcases import TestCase +from rest_framework.exceptions import ValidationError + +from authentik.blueprints.v1.importer import SERIALIZER_CONTEXT_BLUEPRINT +from authentik.core.api.users import UserSerializer from authentik.core.models import User +from authentik.core.signals import password_changed, password_hash_changed from authentik.events.models import Event from authentik.lib.generators import generate_id @@ -33,3 +40,99 @@ class TestUsers(TestCase): self.assertEqual(Event.objects.count(), 1) user.ak_groups.all() self.assertEqual(Event.objects.count(), 1) + + def test_set_password_from_hash_signal_skips_source_sync_receivers(self): + """Test hash password updates do not expose a raw password to sync receivers.""" + user = User.objects.create( + username=generate_id(), + attributes={"distinguishedName": "cn=test,ou=users,dc=example,dc=com"}, + ) + password_changed_captured = [] + password_hash_changed_captured = [] + dispatch_uid = generate_id() + hash_dispatch_uid = generate_id() + + def password_changed_receiver(sender, **kwargs): + password_changed_captured.append(kwargs) + + def password_hash_changed_receiver(sender, **kwargs): + password_hash_changed_captured.append(kwargs) + + password_changed.connect(password_changed_receiver, dispatch_uid=dispatch_uid) + password_hash_changed.connect( + password_hash_changed_receiver, dispatch_uid=hash_dispatch_uid + ) + try: + with ( + patch( + "authentik.sources.ldap.signals.LDAPSource.objects.filter" + ) as ldap_sources_filter, + patch( + "authentik.sources.kerberos.signals." + "UserKerberosSourceConnection.objects.select_related" + ) as kerberos_connections_select, + ): + user.set_password_from_hash(make_password("new-password")) # nosec + user.save() + finally: + password_changed.disconnect(dispatch_uid=dispatch_uid) + password_hash_changed.disconnect(dispatch_uid=hash_dispatch_uid) + + self.assertEqual(password_changed_captured, []) + self.assertEqual(len(password_hash_changed_captured), 1) + ldap_sources_filter.assert_not_called() + kerberos_connections_select.assert_not_called() + + +class TestUserSerializerPasswordHash(TestCase): + """Test UserSerializer password_hash support in blueprint context.""" + + def test_password_hash_sets_password_directly(self): + """Test a valid password hash is stored without re-hashing.""" + password = "test-password-123" # nosec + password_hash = make_password(password) + serializer = UserSerializer( + data={ + "username": generate_id(), + "name": "Test User", + "password_hash": password_hash, + }, + context={SERIALIZER_CONTEXT_BLUEPRINT: True}, + ) + + self.assertTrue(serializer.is_valid(), serializer.errors) + user = serializer.save() + + self.assertEqual(user.password, password_hash) + self.assertTrue(user.check_password(password)) + self.assertIsNotNone(user.password_change_date) + + def test_password_hash_rejects_invalid_format(self): + """Test invalid password hash values are rejected.""" + serializer = UserSerializer( + data={ + "username": generate_id(), + "name": "Test User", + "password_hash": "not-a-valid-hash", + }, + context={SERIALIZER_CONTEXT_BLUEPRINT: True}, + ) + + self.assertTrue(serializer.is_valid(), serializer.errors) + with self.assertRaises(ValidationError) as ctx: + serializer.save() + + self.assertIn("Invalid password hash format", str(ctx.exception)) + + def test_password_hash_ignored_outside_blueprint_context(self): + """Test password_hash is not accepted by the regular serializer.""" + serializer = UserSerializer( + data={ + "username": generate_id(), + "name": "Test User", + "password_hash": make_password("test"), # nosec + } + ) + + self.assertTrue(serializer.is_valid(), serializer.errors) + self.assertNotIn("password_hash", serializer.validated_data) diff --git a/authentik/core/tests/test_users_api.py b/authentik/core/tests/test_users_api.py index ef7069827f..1b49cb1d37 100644 --- a/authentik/core/tests/test_users_api.py +++ b/authentik/core/tests/test_users_api.py @@ -3,6 +3,7 @@ from datetime import datetime, timedelta from json import loads +from django.contrib.auth.hashers import make_password from django.urls.base import reverse from django.utils.timezone import now from rest_framework.test import APITestCase @@ -11,6 +12,7 @@ from authentik.brands.models import Brand from authentik.core.models import ( USER_ATTRIBUTE_TOKEN_EXPIRING, AuthenticatedSession, + Group, Session, Token, User, @@ -24,8 +26,12 @@ from authentik.core.tests.utils import ( ) from authentik.flows.models import FlowAuthenticationRequirement, FlowDesignation from authentik.lib.generators import generate_id, generate_key +from authentik.rbac.models import Role from authentik.stages.email.models import EmailStage +INVALID_PASSWORD_HASH = "not-a-valid-hash" +INVALID_PASSWORD_HASH_ERROR = "Invalid password hash format. Must be a valid Django password hash." + class TestUsersAPI(APITestCase): """Test Users API""" @@ -34,6 +40,20 @@ class TestUsersAPI(APITestCase): self.admin = create_test_admin_user() self.user = create_test_user() + def _set_password_hash(self, user: User, password_hash: str, client=None): + return (client or self.client).post( + reverse("authentik_api:user-set-password-hash", kwargs={"pk": user.pk}), + data={"password": password_hash}, + ) + + def _assert_password_hash_set( + self, user: User, password: str, password_hash: str, response + ) -> None: + self.assertEqual(response.status_code, 204, response.data) + user.refresh_from_db() + self.assertEqual(user.password, password_hash) + self.assertTrue(user.check_password(password)) + def test_filter_type(self): """Test API filtering by type""" self.client.force_login(self.admin) @@ -113,6 +133,26 @@ class TestUsersAPI(APITestCase): self.assertEqual(response.status_code, 400) self.assertJSONEqual(response.content, {"password": ["This field may not be blank."]}) + def test_set_password_hash(self): + """Test setting a user's password from a hash.""" + self.client.force_login(self.admin) + password = generate_key() + password_hash = make_password(password) + response = self._set_password_hash(self.user, password_hash) + + self._assert_password_hash_set(self.user, password, password_hash, response) + + def test_set_password_hash_invalid(self): + """Test invalid password hashes are rejected.""" + self.client.force_login(self.admin) + response = self._set_password_hash(self.user, INVALID_PASSWORD_HASH) + + self.assertEqual(response.status_code, 400) + self.assertJSONEqual( + response.content, + {"password": [INVALID_PASSWORD_HASH_ERROR]}, + ) + def test_recovery(self): """Test user recovery link""" flow = create_test_flow( @@ -261,6 +301,29 @@ class TestUsersAPI(APITestCase): self.assertTrue(token_filter.exists()) self.assertTrue(token_filter.first().expiring) + def test_service_account_set_password_hash(self): + """Service account password hash can be set through the API.""" + self.client.force_login(self.admin) + response = self.client.post( + reverse("authentik_api:user-service-account"), + data={ + "name": "test-sa", + "create_group": False, + }, + ) + self.assertEqual(response.status_code, 200, response.data) + body = loads(response.content) + + user = User.objects.get(pk=body["user_pk"]) + self.assertEqual(user.type, UserTypes.SERVICE_ACCOUNT) + self.assertFalse(user.has_usable_password()) + + password = generate_key() + password_hash = make_password(password) + response = self._set_password_hash(user, password_hash) + + self._assert_password_hash_set(user, password, password_hash, response) + def test_service_account_no_expire(self): """Service account creation without token expiration""" self.client.force_login(self.admin) @@ -878,3 +941,79 @@ class TestUsersAPI(APITestCase): self.assertIn(user2.pk, pks) # Verify user2 comes before user1 in descending order self.assertLess(pks.index(user2.pk), pks.index(user1.pk)) + + +class TestUsersAPIGroupRoleValidation(APITestCase): + """Test that PATCH /api/v3/core/users/{pk}/ enforces group and role permission checks.""" + + def setUp(self) -> None: + self.actor = create_test_user() + self.target = create_test_user() + + def _patch(self, data: dict): + self.client.force_login(self.actor) + return self.client.patch( + reverse("authentik_api:user-detail", kwargs={"pk": self.target.pk}), + data=data, + content_type="application/json", + ) + + def test_patch_superuser_group_no_perm(self): + """Assigning a superuser group without enable_group_superuser must be rejected.""" + self.actor.assign_perms_to_managed_role("authentik_core.view_user") + self.actor.assign_perms_to_managed_role("authentik_core.change_user", self.target) + group = Group.objects.create(name=generate_id(), is_superuser=True) + res = self._patch({"groups": [str(group.pk)]}) + self.assertEqual(res.status_code, 400) + + def test_patch_superuser_group_with_perm(self): + """Assigning a superuser group with enable_group_superuser must succeed.""" + self.actor.assign_perms_to_managed_role("authentik_core.view_user") + self.actor.assign_perms_to_managed_role("authentik_core.change_user", self.target) + self.actor.assign_perms_to_managed_role("authentik_core.enable_group_superuser") + group = Group.objects.create(name=generate_id(), is_superuser=True) + res = self._patch({"groups": [str(group.pk)]}) + self.assertEqual(res.status_code, 200) + + def test_patch_non_superuser_group_no_perm(self): + """Assigning a non-superuser group without special permission must succeed.""" + self.actor.assign_perms_to_managed_role("authentik_core.view_user") + self.actor.assign_perms_to_managed_role("authentik_core.change_user", self.target) + group = Group.objects.create(name=generate_id(), is_superuser=False) + res = self._patch({"groups": [str(group.pk)]}) + self.assertEqual(res.status_code, 200) + + def test_patch_existing_superuser_group_no_perm(self): + """Keeping an existing superuser group membership without the permission must succeed.""" + self.actor.assign_perms_to_managed_role("authentik_core.view_user") + self.actor.assign_perms_to_managed_role("authentik_core.change_user", self.target) + group = Group.objects.create(name=generate_id(), is_superuser=True) + self.target.groups.add(group) + res = self._patch({"groups": [str(group.pk)]}) + self.assertEqual(res.status_code, 200) + + def test_patch_role_no_perm(self): + """Assigning a new role without change_role must be rejected.""" + self.actor.assign_perms_to_managed_role("authentik_core.view_user") + self.actor.assign_perms_to_managed_role("authentik_core.change_user", self.target) + role = Role.objects.create(name=generate_id()) + res = self._patch({"roles": [str(role.pk)]}) + self.assertEqual(res.status_code, 400) + + def test_patch_role_with_perm(self): + """Assigning a new role with change_role must succeed.""" + self.actor.assign_perms_to_managed_role("authentik_core.view_user") + self.actor.assign_perms_to_managed_role("authentik_core.change_user", self.target) + self.actor.assign_perms_to_managed_role("authentik_rbac.change_role") + role = Role.objects.create(name=generate_id()) + res = self._patch({"roles": [str(role.pk)]}) + self.assertEqual(res.status_code, 200) + + def test_patch_existing_role_no_perm(self): + """Keeping an existing role without change_role must succeed.""" + self.actor.assign_perms_to_managed_role("authentik_core.view_user") + self.actor.assign_perms_to_managed_role("authentik_core.change_user", self.target) + role = Role.objects.create(name=generate_id()) + self.target.roles.add(role) + res = self._patch({"roles": [str(role.pk)]}) + self.assertEqual(res.status_code, 200) diff --git a/authentik/core/urls.py b/authentik/core/urls.py index 7a97c1f379..704ddacc85 100644 --- a/authentik/core/urls.py +++ b/authentik/core/urls.py @@ -1,7 +1,6 @@ """authentik URL Configuration""" from django.conf import settings -from django.contrib.auth.decorators import login_required from django.urls import path from authentik.core.api.application_entitlements import ApplicationEntitlementViewSet @@ -19,6 +18,7 @@ from authentik.core.api.sources import ( from authentik.core.api.tokens import TokenViewSet from authentik.core.api.transactional_applications import TransactionalApplicationView from authentik.core.api.users import UserViewSet +from authentik.core.setup.views import SetupView from authentik.core.views.apps import RedirectToAppLaunch from authentik.core.views.debug import AccessDeniedView from authentik.core.views.interface import ( @@ -35,7 +35,7 @@ from authentik.tenants.channels import TenantsAwareMiddleware urlpatterns = [ path( "", - login_required(RootRedirectView.as_view()), + RootRedirectView.as_view(), name="root-redirect", ), path( @@ -62,6 +62,11 @@ urlpatterns = [ FlowInterfaceView.as_view(), name="if-flow", ), + path( + "setup", + SetupView.as_view(), + name="setup", + ), # Fallback for WS path("ws/outpost//", InterfaceView.as_view(template_name="if/admin.html")), path( diff --git a/authentik/core/views/interface.py b/authentik/core/views/interface.py index ac0c6893fd..6751ddac47 100644 --- a/authentik/core/views/interface.py +++ b/authentik/core/views/interface.py @@ -3,6 +3,7 @@ from json import dumps from typing import Any +from django.contrib.auth.mixins import AccessMixin from django.http import HttpRequest from django.http.response import HttpResponse from django.shortcuts import redirect @@ -14,12 +15,13 @@ from authentik.admin.tasks import LOCAL_VERSION from authentik.api.v3.config import ConfigView from authentik.brands.api import CurrentBrandSerializer from authentik.brands.models import Brand +from authentik.core.apps import Setup from authentik.core.models import UserTypes from authentik.lib.config import CONFIG from authentik.policies.denied import AccessDeniedResponse -class RootRedirectView(RedirectView): +class RootRedirectView(AccessMixin, RedirectView): """Root redirect view, redirect to brand's default application if set""" pattern_name = "authentik_core:if-user" @@ -40,6 +42,10 @@ class RootRedirectView(RedirectView): return None def dispatch(self, request: HttpRequest, *args: Any, **kwargs: Any) -> HttpResponse: + if not Setup.get(): + return redirect("authentik_core:setup") + if not request.user.is_authenticated: + return self.handle_no_permission() if redirect_response := RootRedirectView().redirect_to_app(request): return redirect_response return super().dispatch(request, *args, **kwargs) diff --git a/authentik/crypto/tasks.py b/authentik/crypto/tasks.py index daf104b01a..8476cdc3e5 100644 --- a/authentik/crypto/tasks.py +++ b/authentik/crypto/tasks.py @@ -114,15 +114,16 @@ def certificate_discovery(): discovered = 0 for file in glob(CONFIG.get("cert_discovery_dir") + "/**", recursive=True): path = Path(file) - if not path.exists(): - continue - if path.is_dir(): + if not path.exists() or path.is_dir(): continue # For certbot setups, we want to ignore archive. if "archive" in file: continue - # Support certbot's directory structure - if path.name in ["fullchain.pem", "privkey.pem"]: + # Handle additionalOutputFormats from cert-manager gracefully + if path.name in ["ca.crt", "tls-combined.pem", "key.der"]: + continue + # Support certbot & kubernetes.io/tls directory structure + if path.name in ["fullchain.pem", "privkey.pem", "tls.crt", "tls.key"]: cert_name = path.parent.name else: cert_name = path.name.replace(path.suffix, "") diff --git a/authentik/crypto/tests.py b/authentik/crypto/tests.py index 110aa695d3..e5f35e9f90 100644 --- a/authentik/crypto/tests.py +++ b/authentik/crypto/tests.py @@ -355,6 +355,16 @@ class TestCrypto(APITestCase): subject_alt_names=[], validity_days=3, ) + + name3 = generate_id() + builder3 = CertificateBuilder(name3) + with self.assertRaises(ValueError): + builder3.save() + builder3.build( + subject_alt_names=[], + validity_days=3, + ) + with TemporaryDirectory() as temp_dir: with open(f"{temp_dir}/foo.pem", "w+", encoding="utf-8") as _cert: _cert.write(builder.certificate) @@ -365,6 +375,8 @@ class TestCrypto(APITestCase): _cert.write(builder2.certificate) with open(f"{temp_dir}/foo.bar/privkey.pem", "w+", encoding="utf-8") as _key: _key.write(builder2.private_key) + with open(f"{temp_dir}/tls-combined.pem", "w+", encoding="utf-8") as _cert: + _cert.write(builder3.certificate) with CONFIG.patch("cert_discovery_dir", temp_dir): certificate_discovery.send() keypair: CertificateKeyPair = CertificateKeyPair.objects.filter( @@ -376,6 +388,9 @@ class TestCrypto(APITestCase): self.assertTrue( CertificateKeyPair.objects.filter(managed=MANAGED_DISCOVERED % "foo.bar").exists() ) + self.assertFalse( + CertificateKeyPair.objects.filter(managed=MANAGED_DISCOVERED % "tls-combined").exists() + ) def test_discovery_updating_same_private_key(self): """Test certificate discovery updating certs with matching private keys""" diff --git a/authentik/endpoints/api/devices.py b/authentik/endpoints/api/devices.py index 1ac84b8ad2..77c3fcad3a 100644 --- a/authentik/endpoints/api/devices.py +++ b/authentik/endpoints/api/devices.py @@ -97,7 +97,7 @@ class DeviceViewSet( def summary(self, request: Request) -> Response: delta = now() - timedelta(hours=24) unreachable = ( - Device.filter_not_expired() + Device.objects.all() .annotate( latest_snapshot=Subquery( DeviceFactSnapshot.objects.filter(connection__device=OuterRef("pk")) @@ -110,7 +110,7 @@ class DeviceViewSet( .count() ) data = { - "total_count": Device.filter_not_expired().count(), + "total_count": Device.objects.all().count(), "unreachable_count": unreachable, # Currently not supported "outdated_agent_count": 0, diff --git a/authentik/endpoints/connectors/agent/api/connectors.py b/authentik/endpoints/connectors/agent/api/connectors.py index b77a60be77..9c62448cad 100644 --- a/authentik/endpoints/connectors/agent/api/connectors.py +++ b/authentik/endpoints/connectors/agent/api/connectors.py @@ -7,7 +7,7 @@ from drf_spectacular.utils import OpenApiParameter, OpenApiResponse, extend_sche from rest_framework.decorators import action from rest_framework.exceptions import PermissionDenied, ValidationError from rest_framework.fields import ChoiceField -from rest_framework.permissions import IsAuthenticated +from rest_framework.permissions import AllowAny, IsAuthenticated from rest_framework.relations import PrimaryKeyRelatedField from rest_framework.request import Request from rest_framework.response import Response @@ -44,7 +44,6 @@ from authentik.stages.password.stage import PLAN_CONTEXT_METHOD, PLAN_CONTEXT_ME class AgentConnectorSerializer(ConnectorSerializer): - class Meta(ConnectorSerializer.Meta): model = AgentConnector fields = ConnectorSerializer.Meta.fields + [ @@ -63,9 +62,10 @@ class AgentConnectorSerializer(ConnectorSerializer): class MDMConfigSerializer(PassiveSerializer): - platform = ChoiceField(choices=OSFamily.choices) - enrollment_token = PrimaryKeyRelatedField(queryset=EnrollmentToken.objects.all()) + enrollment_token = PrimaryKeyRelatedField( + queryset=EnrollmentToken.objects.including_expired().all() + ) def validate_platform(self, platform: OSFamily) -> OSFamily: if platform not in [OSFamily.iOS, OSFamily.macOS, OSFamily.windows]: @@ -87,7 +87,6 @@ class AgentConnectorViewSet( UsedByMixin, ModelViewSet, ): - queryset = AgentConnector.objects.all() serializer_class = AgentConnectorSerializer search_fields = ["name"] @@ -119,6 +118,8 @@ class AgentConnectorViewSet( methods=["POST"], detail=False, authentication_classes=[AgentEnrollmentAuth], + # Permissions are handled via AgentEnrollmentAuth + permission_classes=[AllowAny], ) def enroll(self, request: Request): token: EnrollmentToken = request.auth @@ -136,7 +137,7 @@ class AgentConnectorViewSet( device=device, connector=token.connector, ) - DeviceToken.objects.filter(device=connection).delete() + DeviceToken.objects.including_expired().filter(device=connection).delete() token = DeviceToken.objects.create(device=connection, expiring=False) return Response( { @@ -149,7 +150,13 @@ class AgentConnectorViewSet( request=OpenApiTypes.NONE, responses=AgentConfigSerializer(), ) - @action(methods=["GET"], detail=False, authentication_classes=[AgentAuth]) + @action( + methods=["GET"], + detail=False, + authentication_classes=[AgentAuth], + # Permissions are handled via AgentAuth + permission_classes=[AllowAny], + ) def agent_config(self, request: Request): token: DeviceToken = request.auth connector: AgentConnector = token.device.connector.agentconnector @@ -163,7 +170,13 @@ class AgentConnectorViewSet( request=DeviceFacts(), responses={204: OpenApiResponse(description="Successfully checked in")}, ) - @action(methods=["POST"], detail=False, authentication_classes=[AgentAuth]) + @action( + methods=["POST"], + detail=False, + authentication_classes=[AgentAuth], + # Permissions are handled via AgentAuth + permission_classes=[AllowAny], + ) def check_in(self, request: Request): token: DeviceToken = request.auth data = DeviceFacts(data=request.data) diff --git a/authentik/endpoints/connectors/agent/api/enrollment_tokens.py b/authentik/endpoints/connectors/agent/api/enrollment_tokens.py index 7adccb6c1e..4f04d942d7 100644 --- a/authentik/endpoints/connectors/agent/api/enrollment_tokens.py +++ b/authentik/endpoints/connectors/agent/api/enrollment_tokens.py @@ -18,7 +18,10 @@ from authentik.rbac.decorators import permission_required class EnrollmentTokenSerializer(ModelSerializer): device_group_obj = DeviceAccessGroupSerializer( - source="device_group", read_only=True, required=False + source="device_group", + read_only=True, + required=False, + allow_null=True, ) def __init__(self, *args, **kwargs) -> None: diff --git a/authentik/endpoints/connectors/agent/auth.py b/authentik/endpoints/connectors/agent/auth.py index 91349c0461..550e635427 100644 --- a/authentik/endpoints/connectors/agent/auth.py +++ b/authentik/endpoints/connectors/agent/auth.py @@ -1,5 +1,6 @@ from typing import Any +from django.db.models import Model from django.http import HttpRequest from django.utils.timezone import now from drf_spectacular.extensions import OpenApiAuthenticationExtension @@ -9,7 +10,7 @@ from rest_framework.exceptions import PermissionDenied from rest_framework.request import Request from structlog.stdlib import get_logger -from authentik.api.authentication import IPCUser, validate_auth +from authentik.api.authentication import VirtualUser, validate_auth from authentik.core.middleware import CTX_AUTH_VIA from authentik.core.models import User from authentik.crypto.apps import MANAGED_KEY @@ -25,18 +26,29 @@ LOGGER = get_logger() PLATFORM_ISSUER = "goauthentik.io/platform" -class DeviceUser(IPCUser): +class DeviceUser(VirtualUser): + username = "authentik:endpoints:device" + def has_perm(self, perm: str, obj: Model | None = None) -> bool: + if perm in [ + "authentik_core.view_user", + "authentik_core.view_group", + ]: + return True + return False + class AgentEnrollmentAuth(BaseAuthentication): def authenticate(self, request: Request) -> tuple[User, Any] | None: auth = get_authorization_header(request) key = validate_auth(auth) - token = EnrollmentToken.filter_not_expired(key=key).first() + token = EnrollmentToken.objects.filter(key=key).first() if not token: raise PermissionDenied() + if not token.connector.enabled: + raise PermissionDenied() CTX_AUTH_VIA.set("endpoint_token_enrollment") return (DeviceUser(), token) @@ -48,9 +60,11 @@ class AgentAuth(BaseAuthentication): key = validate_auth(auth, format="bearer+agent") if not key: return None - device_token = DeviceToken.filter_not_expired(key=key).first() + device_token = DeviceToken.objects.filter(key=key).first() if not device_token: raise PermissionDenied() + if not device_token.device.connector.enabled: + raise PermissionDenied() if device_token.device.device.is_expired: raise PermissionDenied() CTX_AUTH_VIA.set("endpoint_token") @@ -87,7 +101,7 @@ class DeviceAuthFedAuthentication(BaseAuthentication): if not raw_token: LOGGER.warning("Missing token") return None - device = Device.filter_not_expired(name=request.query_params.get("device")).first() + device = Device.objects.filter(name=request.query_params.get("device")).first() if not device: LOGGER.warning("Couldn't find device") return None diff --git a/authentik/endpoints/connectors/agent/controller.py b/authentik/endpoints/connectors/agent/controller.py index 4dc698db64..ef144e522c 100644 --- a/authentik/endpoints/connectors/agent/controller.py +++ b/authentik/endpoints/connectors/agent/controller.py @@ -138,13 +138,7 @@ class AgentConnectorController(BaseController[AgentConnector]): "AllowDeviceIdentifiersInAttestation": True, "AuthenticationMethod": "UserSecureEnclaveKey", "EnableAuthorization": True, - "EnableCreateUserAtLogin": True, - "FileVaultPolicy": ["RequireAuthentication"], - "LoginPolicy": ["RequireAuthentication"], - "NewUserAuthorizationMode": "Standard", - "UnlockPolicy": ["RequireAuthentication"], "UseSharedDeviceKeys": True, - "UserAuthorizationMode": "Standard", }, }, ], diff --git a/authentik/endpoints/connectors/agent/migrations/0005_appleindependentsecureenclave.py b/authentik/endpoints/connectors/agent/migrations/0005_appleindependentsecureenclave.py new file mode 100644 index 0000000000..4df761805f --- /dev/null +++ b/authentik/endpoints/connectors/agent/migrations/0005_appleindependentsecureenclave.py @@ -0,0 +1,54 @@ +# Generated by Django 5.2.12 on 2026-03-06 14:38 + +import django.db.models.deletion +import uuid +from django.conf import settings +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ( + "authentik_endpoints_connectors_agent", + "0004_agentconnector_challenge_idle_timeout_and_more", + ), + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ] + + operations = [ + migrations.CreateModel( + name="AppleIndependentSecureEnclave", + fields=[ + ("created", models.DateTimeField(auto_now_add=True)), + ("last_updated", models.DateTimeField(auto_now=True)), + ( + "name", + models.CharField( + help_text="The human-readable name of this device.", max_length=64 + ), + ), + ( + "confirmed", + models.BooleanField(default=True, help_text="Is this device ready for use?"), + ), + ("last_used", models.DateTimeField(null=True)), + ("uuid", models.UUIDField(default=uuid.uuid4, primary_key=True, serialize=False)), + ("apple_secure_enclave_key", models.TextField()), + ("apple_enclave_key_id", models.TextField()), + ("device_type", models.TextField()), + ( + "user", + models.ForeignKey( + help_text="The user that this device belongs to.", + on_delete=django.db.models.deletion.CASCADE, + to=settings.AUTH_USER_MODEL, + ), + ), + ], + options={ + "verbose_name": "Apple Independent Secure Enclave", + "verbose_name_plural": "Apple Independent Secure Enclaves", + }, + ), + ] diff --git a/authentik/endpoints/connectors/agent/models.py b/authentik/endpoints/connectors/agent/models.py index 6a2d81c228..95be2dd055 100644 --- a/authentik/endpoints/connectors/agent/models.py +++ b/authentik/endpoints/connectors/agent/models.py @@ -19,6 +19,7 @@ from authentik.flows.stage import StageView from authentik.lib.generators import generate_key from authentik.lib.models import InternallyManagedMixin, SerializerModel from authentik.lib.utils.time import timedelta_string_validator +from authentik.stages.authenticator.models import Device as Authenticator if TYPE_CHECKING: from authentik.endpoints.connectors.agent.controller import AgentConnectorController @@ -172,3 +173,17 @@ class AppleNonce(InternallyManagedMixin, ExpiringModel): class Meta(ExpiringModel.Meta): verbose_name = _("Apple Nonce") verbose_name_plural = _("Apple Nonces") + + +class AppleIndependentSecureEnclave(Authenticator): + """A device-independent secure enclave key, used by Tap-to-login""" + + uuid = models.UUIDField(primary_key=True, default=uuid4) + + apple_secure_enclave_key = models.TextField() + apple_enclave_key_id = models.TextField() + device_type = models.TextField() + + class Meta: + verbose_name = _("Apple Independent Secure Enclave") + verbose_name_plural = _("Apple Independent Secure Enclaves") diff --git a/authentik/endpoints/connectors/agent/stage.py b/authentik/endpoints/connectors/agent/stage.py index f30f4b9421..e6c2e6f2c0 100644 --- a/authentik/endpoints/connectors/agent/stage.py +++ b/authentik/endpoints/connectors/agent/stage.py @@ -53,11 +53,11 @@ class EndpointAgentChallengeResponse(ChallengeResponse): except PyJWTError as exc: self.stage.logger.warning("Could not parse response", exc=exc) raise ValidationError("Invalid challenge response") from None - device = Device.filter_not_expired(identifier=raw["iss"]).first() + device = Device.objects.filter(identifier=raw["iss"]).first() if not device: self.stage.logger.warning("Could not find device for challenge") raise ValidationError("Invalid challenge response") - for token in DeviceToken.filter_not_expired( + for token in DeviceToken.objects.filter( device__device=device, device__connector=self.stage.executor.current_stage.connector, ).values_list("key", flat=True): diff --git a/authentik/endpoints/connectors/agent/tests/test_agent_api.py b/authentik/endpoints/connectors/agent/tests/test_agent_api.py index c817e811ef..17758729b8 100644 --- a/authentik/endpoints/connectors/agent/tests/test_agent_api.py +++ b/authentik/endpoints/connectors/agent/tests/test_agent_api.py @@ -58,6 +58,16 @@ class TestAgentAPI(APITestCase): ) self.assertEqual(response.status_code, 200) + def test_enroll_disabled(self): + self.connector.enabled = False + self.connector.save() + response = self.client.post( + reverse("authentik_api:agentconnector-enroll"), + data={"device_serial": generate_id(), "device_name": "bar"}, + HTTP_AUTHORIZATION=f"Bearer {self.token.key}", + ) + self.assertEqual(response.status_code, 403) + def test_enroll_token_delete(self): response = self.client.post( reverse("authentik_api:agentconnector-enroll"), @@ -79,7 +89,7 @@ class TestAgentAPI(APITestCase): HTTP_AUTHORIZATION=f"Bearer {self.token.key}", ) self.assertEqual(response.status_code, 200) - device = Device.filter_not_expired(identifier=ident).first() + device = Device.objects.filter(identifier=ident).first() self.assertIsNotNone(device) self.assertEqual(device.access_group, device_group) @@ -94,7 +104,7 @@ class TestAgentAPI(APITestCase): HTTP_AUTHORIZATION=f"Bearer {self.token.key}", ) self.assertEqual(response.status_code, 403) - self.assertFalse(Device.filter_not_expired(identifier=dev_id).exists()) + self.assertFalse(Device.objects.filter(identifier=dev_id).exists()) @reconcile_app("authentik_crypto") def test_config(self): @@ -104,6 +114,16 @@ class TestAgentAPI(APITestCase): ) self.assertEqual(response.status_code, 200) + @reconcile_app("authentik_crypto") + def test_config_disabled(self): + self.connector.enabled = False + self.connector.save() + response = self.client.get( + reverse("authentik_api:agentconnector-agent-config"), + HTTP_AUTHORIZATION=f"Bearer+agent {self.device_token.key}", + ) + self.assertEqual(response.status_code, 403) + def test_check_in(self): response = self.client.post( reverse("authentik_api:agentconnector-check-in"), @@ -112,6 +132,16 @@ class TestAgentAPI(APITestCase): ) self.assertEqual(response.status_code, 204) + def test_check_in_disabled(self): + self.connector.enabled = False + self.connector.save() + response = self.client.post( + reverse("authentik_api:agentconnector-check-in"), + data=CHECK_IN_DATA_VALID, + HTTP_AUTHORIZATION=f"Bearer+agent {self.device_token.key}", + ) + self.assertEqual(response.status_code, 403) + def test_check_in_token_expired(self): self.device_token.expiring = True self.device_token.expires = now() - timedelta(hours=1) @@ -193,3 +223,17 @@ class TestAgentAPI(APITestCase): data={"platform": OSFamily.macOS, "enrollment_token": self.token.pk}, ) self.assertEqual(res.status_code, 200) + + def test_users_list(self): + response = self.client.get( + reverse("authentik_api:user-list"), + HTTP_AUTHORIZATION=f"Bearer+agent {self.device_token.key}", + ) + self.assertEqual(response.status_code, 200) + + def test_other_api_forbidden(self): + response = self.client.get( + reverse("authentik_api:application-list"), + HTTP_AUTHORIZATION=f"Bearer+agent {self.device_token.key}", + ) + self.assertEqual(response.status_code, 403) diff --git a/authentik/endpoints/models.py b/authentik/endpoints/models.py index 56ea5f9f5f..f24192da78 100644 --- a/authentik/endpoints/models.py +++ b/authentik/endpoints/models.py @@ -54,7 +54,7 @@ class Device(InternallyManagedMixin, ExpiringModel, AttributesMixin, PolicyBindi def facts(self) -> DeviceFactSnapshot: data = {} last_updated = datetime.fromtimestamp(0, UTC) - for snapshot_data, snapshort_created in DeviceFactSnapshot.filter_not_expired( + for snapshot_data, snapshort_created in DeviceFactSnapshot.objects.filter( snapshot_id__in=Subquery( DeviceFactSnapshot.objects.filter( connection__connector=OuterRef("connection__connector"), connection__device=self diff --git a/authentik/endpoints/stage.py b/authentik/endpoints/stage.py index 502335e69b..1cd318774e 100644 --- a/authentik/endpoints/stage.py +++ b/authentik/endpoints/stage.py @@ -1,4 +1,4 @@ -from authentik.endpoints.models import EndpointStage, StageMode +from authentik.endpoints.models import Connector, EndpointStage, StageMode from authentik.flows.stage import StageView PLAN_CONTEXT_ENDPOINT_CONNECTOR = "endpoint_connector" @@ -8,7 +8,10 @@ class EndpointStageView(StageView): def _get_inner(self) -> StageView | None: stage: EndpointStage = self.executor.current_stage - inner_stage: type[StageView] | None = stage.connector.stage + connector: Connector = stage.connector + if not connector.enabled: + return None + inner_stage: type[StageView] | None = connector.stage if not inner_stage: return None return inner_stage(self.executor, request=self.request) diff --git a/authentik/endpoints/tasks.py b/authentik/endpoints/tasks.py index 893e9732b5..53566b06b5 100644 --- a/authentik/endpoints/tasks.py +++ b/authentik/endpoints/tasks.py @@ -17,7 +17,7 @@ def endpoints_sync(connector_pk: Any): connector: Connector | None = ( Connector.objects.filter(pk=connector_pk).select_subclasses().first() ) - if not connector: + if not connector or not connector.enabled: return controller = connector.controller ctrl = controller(connector) diff --git a/authentik/endpoints/tests/test_api.py b/authentik/endpoints/tests/test_api.py index 247e001850..97eed903cb 100644 --- a/authentik/endpoints/tests/test_api.py +++ b/authentik/endpoints/tests/test_api.py @@ -1,10 +1,12 @@ +from unittest.mock import PropertyMock, patch + from django.urls import reverse from rest_framework.test import APITestCase from authentik.core.tests.utils import create_test_admin_user from authentik.endpoints.connectors.agent.models import AgentConnector +from authentik.endpoints.controller import BaseController from authentik.endpoints.models import StageMode -from authentik.enterprise.endpoints.connectors.fleet.models import FleetConnector from authentik.lib.generators import generate_id @@ -25,16 +27,22 @@ class TestAPI(APITestCase): ) self.assertEqual(res.status_code, 201) - def test_endpoint_stage_fleet(self): - connector = FleetConnector.objects.create(name=generate_id()) - res = self.client.post( - reverse("authentik_api:stages-endpoint-list"), - data={ - "name": generate_id(), - "connector": str(connector.pk), - "mode": StageMode.REQUIRED, - }, - ) + def test_endpoint_stage_agent_no_stage(self): + connector = AgentConnector.objects.create(name=generate_id()) + + class controller(BaseController): + def capabilities(self): + return [] + + with patch.object(AgentConnector, "controller", PropertyMock(return_value=controller)): + res = self.client.post( + reverse("authentik_api:stages-endpoint-list"), + data={ + "name": generate_id(), + "connector": str(connector.pk), + "mode": StageMode.REQUIRED, + }, + ) self.assertEqual(res.status_code, 400) self.assertJSONEqual( res.content, {"connector": ["Selected connector is not compatible with this stage."]} diff --git a/authentik/enterprise/audit/apps.py b/authentik/enterprise/audit/apps.py index a584afe479..bf3550c9f2 100644 --- a/authentik/enterprise/audit/apps.py +++ b/authentik/enterprise/audit/apps.py @@ -1,6 +1,7 @@ """Enterprise app config""" from django.conf import settings +from django.utils.translation import gettext_lazy as _ from authentik.enterprise.apps import EnterpriseConfig from authentik.tenants.flags import Flag @@ -9,6 +10,9 @@ from authentik.tenants.flags import Flag class AuditIncludeExpandedDiff(Flag[bool], key="enterprise_audit_include_expanded_diff"): default = False visibility = "none" + description = _( + "Include additional information in audit logs, may incur a performance penalty." + ) class AuthentikEnterpriseAuditConfig(EnterpriseConfig): diff --git a/authentik/enterprise/endpoints/connectors/agent/api/connectors.py b/authentik/enterprise/endpoints/connectors/agent/api/connectors.py index 330a2abb13..f4a2635dc0 100644 --- a/authentik/enterprise/endpoints/connectors/agent/api/connectors.py +++ b/authentik/enterprise/endpoints/connectors/agent/api/connectors.py @@ -2,6 +2,7 @@ from django.urls import reverse from drf_spectacular.types import OpenApiTypes from drf_spectacular.utils import extend_schema from rest_framework.decorators import action +from rest_framework.permissions import AllowAny from rest_framework.request import Request from rest_framework.response import Response from structlog.stdlib import get_logger @@ -25,7 +26,13 @@ class AgentConnectorViewSetMixin: request=OpenApiTypes.NONE, responses=AgentAuthenticationResponse(), ) - @action(methods=["POST"], detail=False, authentication_classes=[AgentAuth]) + @action( + methods=["POST"], + detail=False, + authentication_classes=[AgentAuth], + # Permissions are handled via AgentAuth + permission_classes=[AllowAny], + ) @enterprise_action def auth_ia(self, request: Request) -> Response: token: DeviceToken = request.auth diff --git a/authentik/enterprise/endpoints/connectors/agent/api/secure_enclave.py b/authentik/enterprise/endpoints/connectors/agent/api/secure_enclave.py new file mode 100644 index 0000000000..b2149ea9c9 --- /dev/null +++ b/authentik/enterprise/endpoints/connectors/agent/api/secure_enclave.py @@ -0,0 +1,28 @@ +from rest_framework.viewsets import ModelViewSet + +from authentik.core.api.used_by import UsedByMixin +from authentik.core.api.utils import ModelSerializer +from authentik.endpoints.connectors.agent.models import AppleIndependentSecureEnclave + + +class AppleIndependentSecureEnclaveSerializer(ModelSerializer): + class Meta: + model = AppleIndependentSecureEnclave + fields = [ + "uuid", + "user", + "apple_secure_enclave_key", + "apple_enclave_key_id", + "device_type", + ] + + +class AppleIndependentSecureEnclaveViewSet(UsedByMixin, ModelViewSet): + queryset = AppleIndependentSecureEnclave.objects.all() + serializer_class = AppleIndependentSecureEnclaveSerializer + search_fields = [ + "name", + "user__name", + ] + ordering = ["uuid"] + filterset_fields = ["user", "apple_enclave_key_id"] diff --git a/authentik/enterprise/endpoints/connectors/agent/tests/test_apple_token.py b/authentik/enterprise/endpoints/connectors/agent/tests/test_apple_token.py index 724f57c4cf..3e708cb929 100644 --- a/authentik/enterprise/endpoints/connectors/agent/tests/test_apple_token.py +++ b/authentik/enterprise/endpoints/connectors/agent/tests/test_apple_token.py @@ -11,6 +11,7 @@ from authentik.endpoints.connectors.agent.models import ( AgentConnector, AgentDeviceConnection, AgentDeviceUserBinding, + AppleIndependentSecureEnclave, AppleNonce, DeviceToken, EnrollmentToken, @@ -25,7 +26,7 @@ class TestAppleToken(TestCase): def setUp(self): self.apple_sign_key = create_test_cert(PrivateKeyAlg.ECDSA) - sign_key_pem = self.apple_sign_key.public_key.public_bytes( + self.sign_key_pem = self.apple_sign_key.public_key.public_bytes( encoding=serialization.Encoding.PEM, format=serialization.PublicFormat.SubjectPublicKeyInfo, ).decode() @@ -50,7 +51,7 @@ class TestAppleToken(TestCase): device=self.device, connector=self.connector, apple_sign_key_id=self.apple_sign_key.kid, - apple_signing_key=sign_key_pem, + apple_signing_key=self.sign_key_pem, apple_encryption_key=self.enc_pub, ) self.user = create_test_user() @@ -59,7 +60,7 @@ class TestAppleToken(TestCase): user=self.user, order=0, apple_enclave_key_id=self.apple_sign_key.kid, - apple_secure_enclave_key=sign_key_pem, + apple_secure_enclave_key=self.sign_key_pem, ) self.device_token = DeviceToken.objects.create(device=self.connection) @@ -113,3 +114,62 @@ class TestAppleToken(TestCase): ).first() self.assertIsNotNone(event) self.assertEqual(event.context["device"]["name"], self.device.name) + + @reconcile_app("authentik_crypto") + def test_token_independent(self): + nonce = generate_id() + + AgentDeviceUserBinding.objects.all().delete() + AppleIndependentSecureEnclave.objects.create( + user=self.user, + apple_enclave_key_id=self.apple_sign_key.kid, + apple_secure_enclave_key=self.sign_key_pem, + ) + + AppleNonce.objects.create( + device_token=self.device_token, + nonce=nonce, + ) + embedded = encode( + {"iss": str(self.connector.pk), "aud": str(self.device.pk), "request_nonce": nonce}, + self.apple_sign_key.private_key, + headers={ + "kid": self.apple_sign_key.kid, + }, + algorithm=JWTAlgorithms.from_private_key(self.apple_sign_key.private_key), + ) + assertion = encode( + { + "iss": str(self.connector.pk), + "aud": "http://testserver/endpoints/agent/psso/token/", + "request_nonce": nonce, + "assertion": embedded, + "jwe_crypto": { + "apv": ( + "AAAABUFwcGxlAAAAQQTFgZOospN6KbkhXhx1lfa-AKYxjEfJhTJrkpdEY_srMmkPzS7VN0Bzt2AtNBEXE" + "aphDONiP2Mq6Oxytv5JKOxHAAAAJDgyOThERkY5LTVFMUUtNEUwMS04OEUwLUI3QkQzOUM4QjA3Qw" + ) + }, + }, + self.apple_sign_key.private_key, + headers={ + "kid": self.apple_sign_key.kid, + }, + algorithm=JWTAlgorithms.from_private_key(self.apple_sign_key.private_key), + ) + res = self.client.post( + reverse("authentik_enterprise_endpoints_connectors_agent:psso-token"), + data={ + "assertion": assertion, + "platform_sso_version": "1.0", + "grant_type": "urn:ietf:params:oauth:grant-type:jwt-bearer", + }, + ) + + self.assertEqual(res.status_code, 200) + event = Event.objects.filter( + action=EventAction.LOGIN, + app="authentik.endpoints.connectors.agent", + ).first() + self.assertIsNotNone(event) + self.assertEqual(event.context["device"]["name"], self.device.name) diff --git a/authentik/enterprise/endpoints/connectors/agent/urls.py b/authentik/enterprise/endpoints/connectors/agent/urls.py index 743586ff14..22a88a7f4d 100644 --- a/authentik/enterprise/endpoints/connectors/agent/urls.py +++ b/authentik/enterprise/endpoints/connectors/agent/urls.py @@ -1,5 +1,8 @@ from django.urls import path +from authentik.enterprise.endpoints.connectors.agent.api.secure_enclave import ( + AppleIndependentSecureEnclaveViewSet, +) from authentik.enterprise.endpoints.connectors.agent.views.apple_jwks import AppleJWKSView from authentik.enterprise.endpoints.connectors.agent.views.apple_nonce import NonceView from authentik.enterprise.endpoints.connectors.agent.views.apple_register import ( @@ -23,6 +26,7 @@ urlpatterns = [ ] api_urlpatterns = [ + ("endpoints/agents/psso/ise", AppleIndependentSecureEnclaveViewSet), path( "endpoints/agents/psso/register/device/", RegisterDeviceView.as_view(), diff --git a/authentik/enterprise/endpoints/connectors/agent/views/apple_nonce.py b/authentik/enterprise/endpoints/connectors/agent/views/apple_nonce.py index a4fad6c4d3..728809cecf 100644 --- a/authentik/enterprise/endpoints/connectors/agent/views/apple_nonce.py +++ b/authentik/enterprise/endpoints/connectors/agent/views/apple_nonce.py @@ -17,7 +17,7 @@ class NonceView(View): def post(self, request: HttpRequest, *args, **kwargs): raw_token = unquote(self.request.POST.get("x-ak-device-token")) - device_token = DeviceToken.filter_not_expired(key=raw_token).first() + device_token = DeviceToken.objects.filter(key=raw_token).first() if not device_token: return HttpResponseBadRequest() nonce = AppleNonce.objects.create( diff --git a/authentik/enterprise/endpoints/connectors/agent/views/apple_register.py b/authentik/enterprise/endpoints/connectors/agent/views/apple_register.py index 7f926245d6..55b5b7cd97 100644 --- a/authentik/enterprise/endpoints/connectors/agent/views/apple_register.py +++ b/authentik/enterprise/endpoints/connectors/agent/views/apple_register.py @@ -106,7 +106,7 @@ class RegisterUserView(APIView): def post(self, request: Request, body: AgentPSSOUserRegistration) -> Response: device_token: DeviceToken = request.auth conn: AgentDeviceConnection = device_token.device - user_token = DeviceAuthenticationToken.filter_not_expired( + user_token = DeviceAuthenticationToken.objects.filter( device=conn.device, token=body.validated_data["user_auth"], device_token=device_token, diff --git a/authentik/enterprise/endpoints/connectors/agent/views/apple_token.py b/authentik/enterprise/endpoints/connectors/agent/views/apple_token.py index 77bb03005d..61acfe4417 100644 --- a/authentik/enterprise/endpoints/connectors/agent/views/apple_token.py +++ b/authentik/enterprise/endpoints/connectors/agent/views/apple_token.py @@ -19,6 +19,7 @@ from authentik.endpoints.connectors.agent.models import ( AgentConnector, AgentDeviceConnection, AgentDeviceUserBinding, + AppleIndependentSecureEnclave, AppleNonce, DeviceAuthenticationToken, ) @@ -96,14 +97,16 @@ class TokenView(View): self.remote_nonce = decoded.get("nonce") # Check that the nonce hasn't been used before - nonce = AppleNonce.filter_not_expired(nonce=decoded["request_nonce"]).first() + nonce = AppleNonce.objects.filter(nonce=decoded["request_nonce"]).first() if not nonce: raise ValidationError("Invalid nonce") self.nonce = nonce nonce.delete() return decoded - def validate_embedded_assertion(self, assertion: str) -> tuple[AgentDeviceUserBinding, dict]: + def validate_embedded_assertion( + self, assertion: str + ) -> tuple[AgentDeviceUserBinding | AppleIndependentSecureEnclave, dict]: """Decode an embedded assertion and validate it by looking up the matching device user""" decode_unvalidated = get_unverified_header(assertion) expected_kid = decode_unvalidated["kid"] @@ -112,8 +115,13 @@ class TokenView(View): target=self.device_connection.device, apple_enclave_key_id=expected_kid ).first() if not device_user: - LOGGER.warning("Could not find device user binding for user") - raise ValidationError("Invalid request") + independent_user = AppleIndependentSecureEnclave.objects.filter( + apple_enclave_key_id=expected_kid + ).first() + if not independent_user: + LOGGER.warning("Could not find device user binding or independent enclave for user") + raise ValidationError("Invalid request") + device_user = independent_user decoded: dict[str, Any] = decode( assertion, device_user.apple_secure_enclave_key, diff --git a/authentik/enterprise/endpoints/connectors/agent/views/auth_interactive.py b/authentik/enterprise/endpoints/connectors/agent/views/auth_interactive.py index 6032520708..c243a063bb 100644 --- a/authentik/enterprise/endpoints/connectors/agent/views/auth_interactive.py +++ b/authentik/enterprise/endpoints/connectors/agent/views/auth_interactive.py @@ -3,6 +3,7 @@ from hmac import compare_digest from django.http import Http404, HttpRequest, HttpResponse, HttpResponseBadRequest, QueryDict +from authentik.common.oauth.constants import QS_LOGIN_HINT from authentik.endpoints.connectors.agent.auth import ( agent_auth_issue_token, check_device_policies, @@ -14,7 +15,7 @@ from authentik.enterprise.policy import EnterprisePolicyAccessView from authentik.flows.exceptions import FlowNonApplicableException from authentik.flows.models import in_memory_stage from authentik.flows.planner import PLAN_CONTEXT_DEVICE, FlowPlanner -from authentik.flows.stage import StageView +from authentik.flows.stage import PLAN_CONTEXT_PENDING_USER_IDENTIFIER, StageView from authentik.providers.oauth2.utils import HttpResponseRedirectScheme QS_AGENT_IA_TOKEN = "ak-auth-ia-token" # nosec @@ -29,7 +30,7 @@ class AgentInteractiveAuth(EnterprisePolicyAccessView): def resolve_provider_application(self): auth_token = ( - DeviceAuthenticationToken.filter_not_expired(identifier=self.kwargs["token_uuid"]) + DeviceAuthenticationToken.objects.filter(identifier=self.kwargs["token_uuid"]) .prefetch_related() .first() ) @@ -64,14 +65,14 @@ class AgentInteractiveAuth(EnterprisePolicyAccessView): planner = FlowPlanner(self.connector.authorization_flow) planner.allow_empty_flows = True + context = { + PLAN_CONTEXT_DEVICE: self.device, + PLAN_CONTEXT_DEVICE_AUTH_TOKEN: self.auth_token, + } + if QS_LOGIN_HINT in request.GET: + context[PLAN_CONTEXT_PENDING_USER_IDENTIFIER] = request.GET[QS_LOGIN_HINT] try: - plan = planner.plan( - self.request, - { - PLAN_CONTEXT_DEVICE: self.device, - PLAN_CONTEXT_DEVICE_AUTH_TOKEN: self.auth_token, - }, - ) + plan = planner.plan(self.request, context) except FlowNonApplicableException: return self.handle_no_permission_authenticated() plan.append_stage(in_memory_stage(AgentAuthFulfillmentStage)) @@ -84,7 +85,6 @@ class AgentInteractiveAuth(EnterprisePolicyAccessView): class AgentAuthFulfillmentStage(StageView): - def get(self, request: HttpRequest, *args, **kwargs) -> HttpResponse: device: Device = self.executor.plan.context.pop(PLAN_CONTEXT_DEVICE) auth_token: DeviceAuthenticationToken = self.executor.plan.context.pop( diff --git a/authentik/enterprise/endpoints/connectors/fleet/controller.py b/authentik/enterprise/endpoints/connectors/fleet/controller.py index f6647872ce..06d715c5e1 100644 --- a/authentik/enterprise/endpoints/connectors/fleet/controller.py +++ b/authentik/enterprise/endpoints/connectors/fleet/controller.py @@ -1,11 +1,15 @@ import re +from plistlib import loads from typing import Any +from cryptography.hazmat.primitives import serialization +from cryptography.x509 import load_der_x509_certificate from django.db import transaction from requests import RequestException from rest_framework.exceptions import ValidationError from authentik.core.models import User +from authentik.crypto.models import CertificateKeyPair from authentik.endpoints.controller import BaseController, Capabilities, ConnectorSyncException from authentik.endpoints.facts import ( DeviceFacts, @@ -44,7 +48,7 @@ class FleetController(BaseController[DBC]): return "fleetdm.com" def capabilities(self) -> list[Capabilities]: - return [Capabilities.ENROLL_AUTOMATIC_API] + return [Capabilities.STAGE_ENDPOINTS, Capabilities.ENROLL_AUTOMATIC_API] def _url(self, path: str) -> str: return f"{self.connector.url}{path}" @@ -76,8 +80,44 @@ class FleetController(BaseController[DBC]): except RequestException as exc: raise ConnectorSyncException(exc) from exc + @property + def mtls_ca_managed(self) -> str: + return f"goauthentik.io/endpoints/connectors/fleet/{self.connector.pk}" + + def _sync_mtls_ca(self): + """Sync conditional access Root CA for mTLS""" + try: + # Fleet doesn't have an API to just get the Conditional Access Root CA Cert (yet), + # hence we fetch the apple config profile and extract it + res = self._session.get(self._url("/api/v1/fleet/conditional_access/idp/apple/profile")) + res.raise_for_status() + profile = loads(res.text).get("PayloadContent", []) + raw_cert = None + for payload in profile: + if payload.get("PayloadIdentifier", "") != "com.fleetdm.conditional-access-ca": + continue + raw_cert = payload.get("PayloadContent") + if not raw_cert: + raise ConnectorSyncException("Failed to get conditional acccess CA") + except RequestException as exc: + raise ConnectorSyncException(exc) from exc + cert = load_der_x509_certificate(raw_cert) + CertificateKeyPair.objects.update_or_create( + managed=self.mtls_ca_managed, + defaults={ + "name": f"Fleet Endpoint connector {self.connector.name}", + "certificate_data": cert.public_bytes( + encoding=serialization.Encoding.PEM, + ).decode("utf-8"), + }, + ) + @transaction.atomic def sync_endpoints(self) -> None: + try: + self._sync_mtls_ca() + except ConnectorSyncException as exc: + self.logger.warning("Failed to sync conditional access CA", exc=exc) for host in self._paginate_hosts(): serial = host["hardware_serial"] device, _ = Device.objects.get_or_create( @@ -198,6 +238,8 @@ class FleetController(BaseController[DBC]): for policy in host.get("policies", []) ], "agent_version": fleet_version, + # Host UUID is required for conditional access matching + "uuid": host.get("uuid", "").lower(), }, }, } diff --git a/authentik/enterprise/endpoints/connectors/fleet/models.py b/authentik/enterprise/endpoints/connectors/fleet/models.py index 56fc0390d2..7a8bc8569e 100644 --- a/authentik/enterprise/endpoints/connectors/fleet/models.py +++ b/authentik/enterprise/endpoints/connectors/fleet/models.py @@ -51,6 +51,12 @@ class FleetConnector(Connector): def component(self) -> str: return "ak-endpoints-connector-fleet-form" + @property + def stage(self): + from authentik.enterprise.endpoints.connectors.fleet.stage import FleetStageView + + return FleetStageView + class Meta: verbose_name = _("Fleet Connector") verbose_name_plural = _("Fleet Connectors") diff --git a/authentik/enterprise/endpoints/connectors/fleet/stage.py b/authentik/enterprise/endpoints/connectors/fleet/stage.py new file mode 100644 index 0000000000..d7eb100bf8 --- /dev/null +++ b/authentik/enterprise/endpoints/connectors/fleet/stage.py @@ -0,0 +1,51 @@ +from cryptography.x509 import ( + Certificate, + Extension, + SubjectAlternativeName, + UniformResourceIdentifier, +) +from rest_framework.exceptions import PermissionDenied + +from authentik.crypto.models import CertificateKeyPair, fingerprint_sha256 +from authentik.endpoints.models import Device, EndpointStage, StageMode +from authentik.enterprise.endpoints.connectors.fleet.models import FleetConnector +from authentik.enterprise.stages.mtls.stage import PLAN_CONTEXT_CERTIFICATE, MTLSStageView +from authentik.flows.planner import PLAN_CONTEXT_DEVICE + +FLEET_CONDITIONAL_ACCESS_URI_PREFIX = "urn:device:apple:uuid:" + + +class FleetStageView(MTLSStageView): + def get_authorities(self): + stage: EndpointStage = self.executor.current_stage + connector = FleetConnector.objects.filter(pk=stage.connector_id).first() + controller = connector.controller(connector) + kp = CertificateKeyPair.objects.filter(managed=controller.mtls_ca_managed).first() + return [kp] if kp else None + + def lookup_device(self, cert: Certificate, mode: StageMode): + san_ext: Extension[SubjectAlternativeName] = cert.extensions.get_extension_for_oid( + SubjectAlternativeName.oid + ) + raw_values = san_ext.value.get_values_for_type(UniformResourceIdentifier) + values = [x.removeprefix(FLEET_CONDITIONAL_ACCESS_URI_PREFIX).lower() for x in raw_values] + self.logger.debug("Looking for devices with uuid", fleet_device_uuid=values) + device = Device.objects.filter( + **{"deviceconnection__devicefactsnapshot__data__vendor__fleetdm.com__uuid__in": values} + ).first() + if not device and mode == StageMode.REQUIRED: + raise PermissionDenied("Failed to find device") + self.executor.plan.context[PLAN_CONTEXT_DEVICE] = device + self.executor.plan.context[PLAN_CONTEXT_CERTIFICATE] = self._cert_to_dict(cert) + return self.executor.stage_ok() + + def dispatch(self, request, *args, **kwargs): + stage: EndpointStage = self.executor.current_stage + try: + cert = self.get_cert(stage.mode) + if not cert: + return self.executor.stage_ok() + self.logger.debug("Received certificate", cert=fingerprint_sha256(cert)) + return self.lookup_device(cert, stage.mode) + except PermissionDenied as exc: + return self.executor.stage_invalid(error_message=exc.detail) diff --git a/authentik/enterprise/endpoints/connectors/fleet/tests/fixtures/cond_acc_host.pem b/authentik/enterprise/endpoints/connectors/fleet/tests/fixtures/cond_acc_host.pem new file mode 100644 index 0000000000..95d1c20859 --- /dev/null +++ b/authentik/enterprise/endpoints/connectors/fleet/tests/fixtures/cond_acc_host.pem @@ -0,0 +1,23 @@ +-----BEGIN CERTIFICATE----- +MIIDwDCCAqigAwIBAgIBBDANBgkqhkiG9w0BAQsFADBpMQkwBwYDVQQGEwAxJDAi +BgNVBAoTG0xvY2FsIGNlcnRpZmljYXRlIGF1dGhvcml0eTEQMA4GA1UECxMHU0NF +UCBDQTEkMCIGA1UEAxMbRmxlZXQgY29uZGl0aW9uYWwgYWNjZXNzIENBMB4XDTI2 +MDMxODExMTc1NFoXDTI3MDQyMDExMjc1NFowLDEqMCgGA1UEAxMhRmxlZXQgY29u +ZGl0aW9uYWwgYWNjZXNzIGZvciBPa3RhMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEA3xuKxQQ8JSA4qCJ6RfOB7tbQurhwXiaJSLUDG7R5ncdRcd9LH/9y +5ZyI5kQACOwfICHmv02zR4/CrurfzXabo3CCpvcMdS7JI/FzP1GIIZ5RsR7oPFC6 +JJg3m5BHuoHsUtCD7w0D52WiE7XVfbw47h2ChKmGMhkSrBvQnp3dHFEt8ntbl1/q +zCSuQaLeR2sQFurBDVBdinEgsvb1YHaYHi4tdFx5joG64Q/nJXyA2OM4hO9uBF+G +c4UVTzubx5sxwONcPhC9H+eLMpF1VHeU9gAGBlruVusUEYDmlqYQuA+bW5fTr4Zd +ZmJ5e+CzzUBYHduAML9a5S+1jbxSPZFBSwIDAQABo4GvMIGsMA4GA1UdDwEB/wQE +AwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAjAdBgNVHQ4EFgQUPrc1+LvbR9WoJIWZ +7YQa/3IX2w8wHwYDVR0jBBgwFoAUfl92kU2qcH4e+hypez4kEnqMbk4wRQYDVR0R +BD4wPIY6dXJuOmRldmljZTphcHBsZTp1dWlkOjVCRjQyMkQ2LTZFQUItNTE1Ni1B +QzVBLTlFQURDOTUyNDcxMzANBgkqhkiG9w0BAQsFAAOCAQEAGfxJ/u4271tnUUTB +J39YU6z2Ciav+9G3BtbvxBXI57Po7zCE6Z1sVkvYq6Xd0CcItPWRjbSPEy78ZzS0 +By+gPy5fkKc8HHJ5I1wK890xbLBUS1P4EbdVBzI9ggouEa3B2asE10asnzLoKE4C +0FYWQwrzCsso8yxsJj1S8RKtd6MMbCis/9OQSC8om2tu6cLO+OftVn5DHtNWFidw +tAl/oHn2cZPUfZGpJGrHNZlp5w1c1dYfQeiPayoQIbsF+8eMV424G76z/8UPhMBs +R23LByv4TlUOPAGn2TRa2WtLIXs7FgqXRIFW4CjsPsEpXSVNlkYcn/VHY7Jl13zz +CRQ1Pg== +-----END CERTIFICATE----- diff --git a/authentik/enterprise/endpoints/connectors/fleet/tests/fixtures/cond_acc_profile.mobileconfig b/authentik/enterprise/endpoints/connectors/fleet/tests/fixtures/cond_acc_profile.mobileconfig new file mode 100644 index 0000000000..75e400478b --- /dev/null +++ b/authentik/enterprise/endpoints/connectors/fleet/tests/fixtures/cond_acc_profile.mobileconfig @@ -0,0 +1,46 @@ + + + + + PayloadContent + + + + PayloadCertificateFileName + conditional_access_ca.der + PayloadContent + MIIDjzCCAnegAwIBAgIBATANBgkqhkiG9w0BAQsFADBpMQkwBwYDVQQGEwAxJDAiBgNVBAoTG0xvY2FsIGNlcnRpZmljYXRlIGF1dGhvcml0eTEQMA4GA1UECxMHU0NFUCBDQTEkMCIGA1UEAxMbRmxlZXQgY29uZGl0aW9uYWwgYWNjZXNzIENBMB4XDTI1MTIwOTEyMjI1MVoXDTM1MTIwOTEyMjI1MVowaTEJMAcGA1UEBhMAMSQwIgYDVQQKExtMb2NhbCBjZXJ0aWZpY2F0ZSBhdXRob3JpdHkxEDAOBgNVBAsTB1NDRVAgQ0ExJDAiBgNVBAMTG0ZsZWV0IGNvbmRpdGlvbmFsIGFjY2VzcyBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANrgCcpzQci2UhH+Dn0eHopnnbx3HbMabMCHXm6xteMVFLrdQJDTFrZCQzcexUgbpPJ0az6mn4szo+E3stn0y2PPWsiAiVhFwp5M9HwNg18rPgDmITv2pM3l/hlEsfggjq6TEVO2gRcq4NujEGagcYX6kp6nWxh6bbRngQ/hlK6mXItWV3x0G9eTcbFObwZhbuC2dNbccytdqbVEIpBjp6fftQnQwAaUVjoyZBFlf1C1cDV4+1jpaVsIj11U1olA33GJCHcZQ4CJEsgh8yiSsvkH5RNf94CGINB5ixsMfppjSXV/vNkWDKEfmUXW2q4ft7KK/L/SRq8QSB4VqTAp2GsCAwEAAaNCMEAwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFH5fdpFNqnB+HvocqXs+JBJ6jG5OMA0GCSqGSIb3DQEBCwUAA4IBAQAJr4bTGlrANoHStu4Y+OXjGbEQjZOe546Bcln4eWrEB16eaVzfKuZgjJYdcOmp36/v34QY/OCXEIsixrBU5aW/Sr53IK6UQSZV3O3xbBc4Aert7AbeJ4NVGZyelfVQo/5G0qM6k9p0+zpIZqNAzFbhcSPIzuE7ig2OGsFoQU+bXhzk09bsZ+u4BXibzVNfMuMG+DHNv0PRjll272nEPI3bGwHF5tdrnfJG6e9t+qK9j9UqmSlBknHQJNeU5o8IDcmWYjWtOuBzecYsg8pZzXabJqlHTBIz/h7waRe7jtrK+XopK3jghRf9JTL+i0Y8NbVjoNkIoS3xMeRhnNbR9lw1 + PayloadDescription + Fleet conditional access CA certificate + PayloadDisplayName + Fleet conditional access CA + PayloadIdentifier + com.fleetdm.conditional-access-ca + PayloadType + com.apple.security.root + PayloadUUID + ef1b2231-ad80-5511-9893-1f9838295147 + PayloadVersion + 1 + + + PayloadDescription + Configures SCEP enrollment for Okta conditional access + PayloadDisplayName + Fleet conditional access for Okta + PayloadIdentifier + com.fleetdm.conditional-access-okta + PayloadOrganization + Fleet Device Management + PayloadRemovalDisallowed + + PayloadScope + User + PayloadType + Configuration + PayloadUUID + 6fa509a3-feca-56f7-a283-d6a81c733ed2 + PayloadVersion + 1 + + diff --git a/authentik/enterprise/endpoints/connectors/fleet/tests/fixtures/host_macos.json b/authentik/enterprise/endpoints/connectors/fleet/tests/fixtures/host_macos.json index fad990794a..270174e3f9 100644 --- a/authentik/enterprise/endpoints/connectors/fleet/tests/fixtures/host_macos.json +++ b/authentik/enterprise/endpoints/connectors/fleet/tests/fixtures/host_macos.json @@ -1,27 +1,27 @@ { - "created_at": "2025-06-25T22:21:35Z", - "updated_at": "2025-12-20T11:42:09Z", + "created_at": "2026-02-18T16:31:34Z", + "updated_at": "2026-03-18T11:29:18Z", "software": null, - "software_updated_at": "2025-10-22T02:24:25Z", - "id": 1, - "detail_updated_at": "2025-10-23T23:30:31Z", - "label_updated_at": "2025-10-23T23:30:31Z", - "policy_updated_at": "2025-10-23T23:02:11Z", - "last_enrolled_at": "2025-06-25T22:21:37Z", - "seen_time": "2025-10-23T23:59:08Z", + "software_updated_at": "2026-03-18T11:29:17Z", + "id": 19, + "detail_updated_at": "2026-03-18T11:29:18Z", + "label_updated_at": "2026-03-18T11:29:18Z", + "policy_updated_at": "2026-03-18T11:29:18Z", + "last_enrolled_at": "2026-02-18T16:31:45Z", + "seen_time": "2026-03-18T11:31:34Z", "refetch_requested": false, "hostname": "jens-mac-vm.local", - "uuid": "C8B98348-A0A6-5838-A321-57B59D788269", + "uuid": "5BF422D6-6EAB-5156-AC5A-9EADC9524713", "platform": "darwin", - "osquery_version": "5.19.0", + "osquery_version": "5.21.0", "orbit_version": null, "fleet_desktop_version": null, "scripts_enabled": null, - "os_version": "macOS 26.0.1", - "build": "25A362", + "os_version": "macOS 26.3", + "build": "25D125", "platform_like": "darwin", "code_name": "", - "uptime": 256356000000000, + "uptime": 653014000000000, "memory": 4294967296, "cpu_type": "arm64e", "cpu_subtype": "ARM64E", @@ -31,38 +31,41 @@ "hardware_vendor": "Apple Inc.", "hardware_model": "VirtualMac2,1", "hardware_version": "", - "hardware_serial": "Z5DDF07GK6", + "hardware_serial": "ZV35VFDD50", "computer_name": "jens-mac-vm", + "timezone": null, "public_ip": "92.116.179.252", - "primary_ip": "192.168.85.3", - "primary_mac": "e6:9d:21:c2:2f:19", + "primary_ip": "192.168.64.7", + "primary_mac": "5e:72:1c:89:98:29", "distributed_interval": 10, "config_tls_refresh": 60, "logger_tls_period": 10, - "team_id": 2, + "team_id": 5, "pack_stats": null, - "team_name": "prod", - "gigs_disk_space_available": 23.82, - "percent_disk_space_available": 37, + "team_name": "dev", + "gigs_disk_space_available": 16.52, + "percent_disk_space_available": 26, "gigs_total_disk_space": 62.83, "gigs_all_disk_space": null, "issues": { "failing_policies_count": 1, - "critical_vulnerabilities_count": 2, - "total_issues_count": 3 + "critical_vulnerabilities_count": 0, + "total_issues_count": 1 }, "device_mapping": null, "mdm": { "enrollment_status": "On (manual)", "dep_profile_error": false, - "server_url": "https://fleet.beryjuio-home.k8s.beryju.io/mdm/apple/mdm", + "server_url": "https://fleet.beryjuio-prod.k8s.beryju.io/mdm/apple/mdm", "name": "Fleet", "encryption_key_available": false, "connected_to_fleet": true }, "refetch_critical_queries_until": null, - "last_restarted_at": "2025-10-21T00:17:55Z", - "status": "offline", + "last_restarted_at": "2026-03-10T22:05:44.00887Z", + "status": "online", "display_text": "jens-mac-vm.local", - "display_name": "jens-mac-vm" + "display_name": "jens-mac-vm", + "fleet_id": 5, + "fleet_name": "dev" } diff --git a/authentik/enterprise/endpoints/connectors/fleet/tests/test_connector.py b/authentik/enterprise/endpoints/connectors/fleet/tests/test_connector.py index 8cf03c2494..025c140990 100644 --- a/authentik/enterprise/endpoints/connectors/fleet/tests/test_connector.py +++ b/authentik/enterprise/endpoints/connectors/fleet/tests/test_connector.py @@ -21,12 +21,19 @@ TEST_HOST = {"hosts": [TEST_HOST_UBUNTU, TEST_HOST_MACOS, TEST_HOST_WINDOWS, TES class TestFleetConnector(APITestCase): def setUp(self): self.connector = FleetConnector.objects.create( - name=generate_id(), url="http://localhost", token=generate_id() + name=generate_id(), + url="http://localhost", + token=generate_id(), + map_teams_access_group=True, ) def test_sync(self): controller = self.connector.controller(self.connector) with Mocker() as mock: + mock.get( + "http://localhost/api/v1/fleet/conditional_access/idp/apple/profile", + text=load_fixture("fixtures/cond_acc_profile.mobileconfig"), + ) mock.get( "http://localhost/api/v1/fleet/hosts?order_key=hardware_serial&page=0&per_page=50&device_mapping=true&populate_software=true&populate_users=true", json=TEST_HOST, @@ -40,6 +47,9 @@ class TestFleetConnector(APITestCase): identifier="VMware-56 4d 4a 5a b0 22 7b d7-9b a5 0b dc 8f f2 3b 60" ).first() self.assertIsNotNone(device) + group = device.access_group + self.assertIsNotNone(group) + self.assertEqual(group.name, "prod") self.assertEqual( device.cached_facts.data, { @@ -50,7 +60,13 @@ class TestFleetConnector(APITestCase): "version": "24.04.3 LTS", }, "disks": [], - "vendor": {"fleetdm.com": {"policies": [], "agent_version": ""}}, + "vendor": { + "fleetdm.com": { + "policies": [], + "agent_version": "", + "uuid": "5a4a4d56-22b0-d77b-9ba5-0bdc8ff23b60", + } + }, "network": {"hostname": "ubuntu-desktop", "interfaces": []}, "hardware": { "model": "VMware20,1", @@ -72,6 +88,10 @@ class TestFleetConnector(APITestCase): self.connector.save() controller = self.connector.controller(self.connector) with Mocker() as mock: + mock.get( + "http://localhost/api/v1/fleet/conditional_access/idp/apple/profile", + text=load_fixture("fixtures/cond_acc_profile.mobileconfig"), + ) mock.get( "http://localhost/api/v1/fleet/hosts?order_key=hardware_serial&page=0&per_page=50&device_mapping=true&populate_software=true&populate_users=true", json=TEST_HOST, @@ -81,11 +101,13 @@ class TestFleetConnector(APITestCase): json={"hosts": []}, ) controller.sync_endpoints() - self.assertEqual(mock.call_count, 2) + self.assertEqual(mock.call_count, 3) self.assertEqual(mock.request_history[0].method, "GET") self.assertEqual(mock.request_history[0].headers["foo"], "bar") self.assertEqual(mock.request_history[1].method, "GET") self.assertEqual(mock.request_history[1].headers["foo"], "bar") + self.assertEqual(mock.request_history[2].method, "GET") + self.assertEqual(mock.request_history[2].headers["foo"], "bar") def test_map_host_linux(self): controller = self.connector.controller(self.connector) @@ -128,6 +150,6 @@ class TestFleetConnector(APITestCase): "arch": "arm64e", "family": OSFamily.macOS, "name": "macOS", - "version": "26.0.1", + "version": "26.3", }, ) diff --git a/authentik/enterprise/endpoints/connectors/fleet/tests/test_stage.py b/authentik/enterprise/endpoints/connectors/fleet/tests/test_stage.py new file mode 100644 index 0000000000..9ecbf2f5a5 --- /dev/null +++ b/authentik/enterprise/endpoints/connectors/fleet/tests/test_stage.py @@ -0,0 +1,84 @@ +from json import loads +from ssl import PEM_FOOTER, PEM_HEADER + +from django.urls import reverse +from requests_mock import Mocker + +from authentik.core.tests.utils import ( + create_test_flow, +) +from authentik.endpoints.models import Device, EndpointStage, StageMode +from authentik.enterprise.endpoints.connectors.fleet.models import FleetConnector +from authentik.enterprise.stages.mtls.stage import PLAN_CONTEXT_CERTIFICATE +from authentik.flows.models import FlowDesignation, FlowStageBinding +from authentik.flows.planner import PLAN_CONTEXT_DEVICE +from authentik.flows.tests import FlowTestCase +from authentik.lib.generators import generate_id +from authentik.lib.tests.utils import load_fixture + + +class FleetConnectorStageTests(FlowTestCase): + def setUp(self): + super().setUp() + self.connector = FleetConnector.objects.create( + name=generate_id(), url="http://localhost", token=generate_id() + ) + + controller = self.connector.controller(self.connector) + with Mocker() as mock: + mock.get( + "http://localhost/api/v1/fleet/conditional_access/idp/apple/profile", + text=load_fixture("fixtures/cond_acc_profile.mobileconfig"), + ) + mock.get( + "http://localhost/api/v1/fleet/hosts?order_key=hardware_serial&page=0&per_page=50&device_mapping=true&populate_software=true&populate_users=true", + json={"hosts": [loads(load_fixture("fixtures/host_macos.json"))]}, + ) + mock.get( + "http://localhost/api/v1/fleet/hosts?order_key=hardware_serial&page=1&per_page=50&device_mapping=true&populate_software=true&populate_users=true", + json={"hosts": []}, + ) + controller.sync_endpoints() + + self.flow = create_test_flow(FlowDesignation.AUTHENTICATION) + self.stage = EndpointStage.objects.create( + name=generate_id(), + mode=StageMode.REQUIRED, + connector=self.connector, + ) + + self.binding = FlowStageBinding.objects.create(target=self.flow, stage=self.stage, order=0) + + self.host_cert = load_fixture("fixtures/cond_acc_host.pem") + + def _format_traefik(self, cert: str | None = None): + cert = cert if cert else self.host_cert + return cert.replace(PEM_HEADER, "").replace(PEM_FOOTER, "").replace("\n", "") + + def test_assoc(self): + dev = Device.objects.get(identifier="ZV35VFDD50") + with self.assertFlowFinishes() as plan: + res = self.client.get( + reverse("authentik_api:flow-executor", kwargs={"flow_slug": self.flow.slug}), + headers={"X-Forwarded-TLS-Client-Cert": self._format_traefik()}, + ) + self.assertEqual(res.status_code, 200) + plan = plan() + self.assertEqual(plan.context[PLAN_CONTEXT_DEVICE], dev) + self.assertEqual( + plan.context[PLAN_CONTEXT_CERTIFICATE]["subject"], + "CN=Fleet conditional access for Okta", + ) + + def test_assoc_not_found(self): + dev = Device.objects.get(identifier="ZV35VFDD50") + dev.delete() + with self.assertFlowFinishes() as plan: + res = self.client.get( + reverse("authentik_api:flow-executor", kwargs={"flow_slug": self.flow.slug}), + headers={"X-Forwarded-TLS-Client-Cert": self._format_traefik()}, + ) + self.assertEqual(res.status_code, 200) + self.assertStageResponse(res, self.flow, component="ak-stage-access-denied") + plan = plan() + self.assertNotIn(PLAN_CONTEXT_DEVICE, plan.context) diff --git a/authentik/enterprise/lifecycle/api/iterations.py b/authentik/enterprise/lifecycle/api/iterations.py index e195103e6b..08a115a54e 100644 --- a/authentik/enterprise/lifecycle/api/iterations.py +++ b/authentik/enterprise/lifecycle/api/iterations.py @@ -1,7 +1,6 @@ from datetime import datetime -from django.db.models import BooleanField as ModelBooleanField -from django.db.models import Case, Q, Value, When +from django.db.models import Exists, OuterRef, Q, Subquery from django_filters.rest_framework import BooleanFilter, FilterSet from drf_spectacular.utils import extend_schema from rest_framework.decorators import action @@ -14,7 +13,7 @@ from rest_framework.viewsets import GenericViewSet from authentik.core.api.utils import ModelSerializer from authentik.enterprise.api import EnterpriseRequiredMixin from authentik.enterprise.lifecycle.api.reviews import ReviewSerializer -from authentik.enterprise.lifecycle.models import LifecycleIteration, ReviewState +from authentik.enterprise.lifecycle.models import LifecycleIteration, LifecycleRule, ReviewState from authentik.enterprise.lifecycle.utils import ( ContentTypeField, ReviewerGroupSerializer, @@ -26,20 +25,25 @@ from authentik.enterprise.lifecycle.utils import ( from authentik.lib.utils.time import timedelta_from_string +class RelatedRuleSerializer(EnterpriseRequiredMixin, ModelSerializer): + reviewer_groups = ReviewerGroupSerializer(many=True, read_only=True) + min_reviewers = IntegerField(read_only=True) + reviewers = ReviewerUserSerializer(many=True, read_only=True) + + class Meta: + model = LifecycleRule + fields = ["id", "name", "reviewer_groups", "min_reviewers", "reviewers"] + + class LifecycleIterationSerializer(EnterpriseRequiredMixin, ModelSerializer): content_type = ContentTypeField() object_verbose = SerializerMethodField() + rule = RelatedRuleSerializer(read_only=True) object_admin_url = SerializerMethodField(read_only=True) grace_period_end = SerializerMethodField(read_only=True) reviews = ReviewSerializer(many=True, read_only=True, source="review_set.all") user_can_review = SerializerMethodField(read_only=True) - reviewer_groups = ReviewerGroupSerializer( - many=True, read_only=True, source="rule.reviewer_groups" - ) - min_reviewers = IntegerField(read_only=True, source="rule.min_reviewers") - reviewers = ReviewerUserSerializer(many=True, read_only=True, source="rule.reviewers") - next_review_date = SerializerMethodField(read_only=True) class Meta: @@ -55,10 +59,8 @@ class LifecycleIterationSerializer(EnterpriseRequiredMixin, ModelSerializer): "grace_period_end", "next_review_date", "reviews", + "rule", "user_can_review", - "reviewer_groups", - "min_reviewers", - "reviewers", ] read_only_fields = fields @@ -88,43 +90,55 @@ class IterationViewSet(EnterpriseRequiredMixin, CreateModelMixin, GenericViewSet queryset = LifecycleIteration.objects.all() serializer_class = LifecycleIterationSerializer ordering = ["-opened_on"] - ordering_fields = ["state", "content_type__model", "opened_on", "grace_period_end"] + ordering_fields = [ + "state", + "content_type__model", + "rule__name", + "opened_on", + "grace_period_end", + ] filterset_class = LifecycleIterationFilterSet def get_queryset(self): user = self.request.user return self.queryset.annotate( - user_is_reviewer=Case( - When( - Q(rule__reviewers=user) - | Q(rule__reviewer_groups__in=user.groups.all().with_ancestors()), - then=Value(True), - ), - default=Value(False), - output_field=ModelBooleanField(), + user_is_reviewer=Exists( + LifecycleRule.objects.filter( + pk=OuterRef("rule_id"), + ).filter( + Q(reviewers=user) | Q(reviewer_groups__in=user.groups.all().with_ancestors()) + ) ) - ).distinct() + ) + @extend_schema( + operation_id="lifecycle_iterations_list_latest", + responses={200: LifecycleIterationSerializer(many=True)}, + ) @action( detail=False, + pagination_class=None, methods=["get"], url_path=r"latest/(?P[^/]+)/(?P[^/]+)", ) - def latest_iteration(self, request: Request, content_type: str, object_id: str) -> Response: + def latest_iterations(self, request: Request, content_type: str, object_id: str) -> Response: ct = parse_content_type(content_type) - try: - obj = ( - self.get_queryset() - .filter( - content_type__app_label=ct["app_label"], - content_type__model=ct["model"], - object_id=object_id, - ) - .latest("opened_on") + latest_ids_subquery = ( + LifecycleIteration.objects.filter( + rule=OuterRef("rule"), + content_type__app_label=ct["app_label"], + content_type__model=ct["model"], + object_id=object_id, ) - except LifecycleIteration.DoesNotExist: - return Response(status=404) - serializer = self.get_serializer(obj) + .order_by("-opened_on") + .values("id")[:1] + ) + latest_per_rule = LifecycleIteration.objects.filter( + content_type__app_label=ct["app_label"], + content_type__model=ct["model"], + object_id=object_id, + ).filter(id=Subquery(latest_ids_subquery)) + serializer = self.get_serializer(latest_per_rule, many=True) return Response(serializer.data) @extend_schema( diff --git a/authentik/enterprise/lifecycle/api/rules.py b/authentik/enterprise/lifecycle/api/rules.py index 905f41ac38..982a40ad3f 100644 --- a/authentik/enterprise/lifecycle/api/rules.py +++ b/authentik/enterprise/lifecycle/api/rules.py @@ -84,23 +84,6 @@ class LifecycleRuleSerializer(EnterpriseRequiredMixin, ModelSerializer): raise ValidationError( {"grace_period": _("Grace period must be shorter than the interval.")} ) - if "content_type" in attrs or "object_id" in attrs: - content_type = attrs.get("content_type", getattr(self.instance, "content_type", None)) - object_id = attrs.get("object_id", getattr(self.instance, "object_id", None)) - if content_type is not None and object_id is None: - existing = LifecycleRule.objects.filter( - content_type=content_type, object_id__isnull=True - ) - if self.instance: - existing = existing.exclude(pk=self.instance.pk) - if existing.exists(): - raise ValidationError( - { - "content_type": _( - "Only one type-wide rule for each object type is allowed." - ) - } - ) return attrs diff --git a/authentik/enterprise/lifecycle/migrations/0003_remove_lifecyclerule_uniq_lifecycle_rule_ct_null_object_and_more.py b/authentik/enterprise/lifecycle/migrations/0003_remove_lifecyclerule_uniq_lifecycle_rule_ct_null_object_and_more.py new file mode 100644 index 0000000000..b2a23d0de3 --- /dev/null +++ b/authentik/enterprise/lifecycle/migrations/0003_remove_lifecyclerule_uniq_lifecycle_rule_ct_null_object_and_more.py @@ -0,0 +1,21 @@ +# Generated by Django 5.2.11 on 2026-03-05 11:27 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ("authentik_lifecycle", "0002_alter_lifecycleiteration_opened_on"), + ] + + operations = [ + migrations.RemoveConstraint( + model_name="lifecyclerule", + name="uniq_lifecycle_rule_ct_null_object", + ), + migrations.AlterUniqueTogether( + name="lifecyclerule", + unique_together=set(), + ), + ] diff --git a/authentik/enterprise/lifecycle/models.py b/authentik/enterprise/lifecycle/models.py index 6f0daf0781..9a4e195588 100644 --- a/authentik/enterprise/lifecycle/models.py +++ b/authentik/enterprise/lifecycle/models.py @@ -56,14 +56,6 @@ class LifecycleRule(SerializerModel): class Meta: indexes = [models.Index(fields=["content_type"])] - unique_together = [["content_type", "object_id"]] - constraints = [ - models.UniqueConstraint( - fields=["content_type"], - condition=Q(object_id__isnull=True), - name="uniq_lifecycle_rule_ct_null_object", - ) - ] @property def serializer(self) -> type[BaseSerializer]: @@ -82,12 +74,6 @@ class LifecycleRule(SerializerModel): qs = self.content_type.get_all_objects_for_this_type() if self.object_id: qs = qs.filter(pk=self.object_id) - else: - qs = qs.exclude( - pk__in=LifecycleRule.objects.filter( - content_type=self.content_type, object_id__isnull=False - ).values_list(Cast("object_id", output_field=self._get_pk_field()), flat=True) - ) return qs def _get_stale_iterations(self) -> QuerySet[LifecycleIteration]: @@ -107,8 +93,7 @@ class LifecycleRule(SerializerModel): def _get_newly_due_objects(self) -> QuerySet: recent_iteration_ids = LifecycleIteration.objects.filter( - content_type=self.content_type, - object_id__isnull=False, + rule=self, opened_on__gte=start_of_day( timezone.now() + timedelta(days=1) - timedelta_from_string(self.interval) ), @@ -214,9 +199,15 @@ class LifecycleIteration(SerializerModel, ManagedModel): } def initialize(self): + if (self.content_type.app_label, self.content_type.model) == ("authentik_core", "group"): + object_label = self.object.name + elif (self.content_type.app_label, self.content_type.model) == ("authentik_rbac", "role"): + object_label = self.object.name + else: + object_label = str(self.object) event = Event.new( EventAction.REVIEW_INITIATED, - message=_(f"Access review is due for {self.content_type.name} {str(self.object)}"), + message=_(f"Access review is due for {self.content_type.name.lower()} {object_label}"), **self._get_event_args(), ) event.save() diff --git a/authentik/enterprise/lifecycle/signals.py b/authentik/enterprise/lifecycle/signals.py index c51104ec86..6ece1a45f5 100644 --- a/authentik/enterprise/lifecycle/signals.py +++ b/authentik/enterprise/lifecycle/signals.py @@ -3,6 +3,7 @@ from django.db.models.signals import post_save, pre_delete from django.dispatch import receiver from authentik.enterprise.lifecycle.models import LifecycleRule, ReviewState +from authentik.tasks.schedules.models import Schedule @receiver(post_save, sender=LifecycleRule) @@ -11,7 +12,9 @@ def post_rule_save(sender, instance: LifecycleRule, created: bool, **_): apply_lifecycle_rule.send_with_options( args=(instance.id,), - rel_obj=instance, + rel_obj=Schedule.objects.get( + actor_name="authentik.enterprise.lifecycle.tasks.apply_lifecycle_rules" + ), ) diff --git a/authentik/enterprise/lifecycle/tasks.py b/authentik/enterprise/lifecycle/tasks.py index fb2c79cd61..be45694a19 100644 --- a/authentik/enterprise/lifecycle/tasks.py +++ b/authentik/enterprise/lifecycle/tasks.py @@ -4,14 +4,17 @@ from dramatiq import actor from authentik.core.models import User from authentik.enterprise.lifecycle.models import LifecycleRule from authentik.events.models import Event, Notification, NotificationTransport +from authentik.tasks.schedules.models import Schedule -@actor(description=_("Dispatch tasks to validate lifecycle rules.")) +@actor(description=_("Dispatch tasks to apply lifecycle rules.")) def apply_lifecycle_rules(): for rule in LifecycleRule.objects.all(): apply_lifecycle_rule.send_with_options( args=(rule.id,), - rel_obj=rule, + rel_obj=Schedule.objects.get( + actor_name="authentik.enterprise.lifecycle.tasks.apply_lifecycle_rules" + ), ) diff --git a/authentik/enterprise/lifecycle/tests/test_api.py b/authentik/enterprise/lifecycle/tests/test_api.py index 67838e7b76..456f2d8818 100644 --- a/authentik/enterprise/lifecycle/tests/test_api.py +++ b/authentik/enterprise/lifecycle/tests/test_api.py @@ -1,3 +1,4 @@ +from django.apps import apps from django.contrib.contenttypes.models import ContentType from django.urls import reverse from rest_framework.test import APITestCase @@ -19,6 +20,11 @@ class TestLifecycleRuleAPI(APITestCase): self.content_type = ContentType.objects.get_for_model(Application) self.reviewer_group = Group.objects.create(name=generate_id()) + @classmethod + def setUpTestData(cls): + config = apps.get_app_config("authentik_tasks_schedules") + config._on_startup_callback(None) + def test_list_rules(self): rule = LifecycleRule.objects.create( name=generate_id(), @@ -190,6 +196,11 @@ class TestIterationAPI(APITestCase): self.reviewer_group = Group.objects.create(name=generate_id()) self.reviewer_group.users.add(self.user) + @classmethod + def setUpTestData(cls): + config = apps.get_app_config("authentik_tasks_schedules") + config._on_startup_callback(None) + def test_open_iterations(self): rule = LifecycleRule.objects.create( name=generate_id(), @@ -231,7 +242,7 @@ class TestIterationAPI(APITestCase): response = self.client.get( reverse( - "authentik_api:lifecycleiteration-latest-iteration", + "authentik_api:lifecycleiteration-latest-iterations", kwargs={ "content_type": f"{self.content_type.app_label}.{self.content_type.model}", "object_id": str(self.app.pk), @@ -239,19 +250,20 @@ class TestIterationAPI(APITestCase): ) ) self.assertEqual(response.status_code, 200) - self.assertEqual(response.data["object_id"], str(self.app.pk)) + self.assertEqual(len(response.data), 1) + self.assertEqual(response.data[0]["object_id"], str(self.app.pk)) def test_latest_iteration_not_found(self): response = self.client.get( reverse( - "authentik_api:lifecycleiteration-latest-iteration", + "authentik_api:lifecycleiteration-latest-iterations", kwargs={ "content_type": f"{self.content_type.app_label}.{self.content_type.model}", "object_id": "00000000-0000-0000-0000-000000000000", }, ) ) - self.assertEqual(response.status_code, 404) + self.assertEqual(response.data, []) def test_iteration_includes_user_can_review(self): rule = LifecycleRule.objects.create( @@ -279,6 +291,11 @@ class TestReviewAPI(APITestCase): self.reviewer_group = Group.objects.create(name=generate_id()) self.reviewer_group.users.add(self.user) + @classmethod + def setUpTestData(cls): + config = apps.get_app_config("authentik_tasks_schedules") + config._on_startup_callback(None) + def test_create_review(self): rule = LifecycleRule.objects.create( name=generate_id(), diff --git a/authentik/enterprise/lifecycle/tests/test_models.py b/authentik/enterprise/lifecycle/tests/test_models.py index 0936c93362..7a8ccdf2fe 100644 --- a/authentik/enterprise/lifecycle/tests/test_models.py +++ b/authentik/enterprise/lifecycle/tests/test_models.py @@ -2,6 +2,7 @@ import datetime as dt from datetime import timedelta from unittest.mock import patch +from django.apps import apps from django.contrib.contenttypes.models import ContentType from django.test import RequestFactory, TestCase from django.utils import timezone @@ -29,6 +30,11 @@ class TestLifecycleModels(TestCase): def setUp(self): self.factory = RequestFactory() + @classmethod + def setUpTestData(cls): + config = apps.get_app_config("authentik_tasks_schedules") + config._on_startup_callback(None) + def _get_request(self): return self.factory.get("/") @@ -438,31 +444,6 @@ class TestLifecycleModels(TestCase): self.assertIn(app_one, objects) self.assertIn(app_two, objects) - def test_rule_type_excludes_objects_with_specific_rules(self): - app_with_rule = Application.objects.create(name=generate_id(), slug=generate_id()) - app_without_rule = Application.objects.create(name=generate_id(), slug=generate_id()) - content_type = ContentType.objects.get_for_model(Application) - - # Create a specific rule for app_with_rule - LifecycleRule.objects.create( - name=generate_id(), - content_type=content_type, - object_id=str(app_with_rule.pk), - interval="days=30", - ) - - # Create a type-level rule - type_rule = LifecycleRule.objects.create( - name=generate_id(), - content_type=content_type, - object_id=None, - interval="days=60", - ) - - objects = list(type_rule.get_objects()) - self.assertNotIn(app_with_rule, objects) - self.assertIn(app_without_rule, objects) - def test_rule_type_apply_creates_iterations_for_all_objects(self): app_one = Application.objects.create(name=generate_id(), slug=generate_id()) app_two = Application.objects.create(name=generate_id(), slug=generate_id()) @@ -669,6 +650,73 @@ class TestLifecycleModels(TestCase): self.assertIn(explicit_reviewer, reviewers) self.assertIn(group_member, reviewers) + def test_multiple_rules_same_object_create_separate_iterations(self): + """Two rules targeting the same object each create their own iteration.""" + obj = Application.objects.create(name=generate_id(), slug=generate_id()) + content_type = ContentType.objects.get_for_model(obj) + + rule_one = self._create_rule_for_object(obj, interval="days=30", grace_period="days=10") + rule_two = self._create_rule_for_object(obj, interval="days=60", grace_period="days=20") + + iterations = LifecycleIteration.objects.filter( + content_type=content_type, object_id=str(obj.pk) + ) + self.assertEqual(iterations.count(), 2) + + iter_one = iterations.get(rule=rule_one) + iter_two = iterations.get(rule=rule_two) + self.assertEqual(iter_one.state, ReviewState.PENDING) + self.assertEqual(iter_two.state, ReviewState.PENDING) + self.assertNotEqual(iter_one.pk, iter_two.pk) + + def test_multiple_rules_same_object_reviewed_independently(self): + """Reviewing one rule's iteration does not affect the other rule's iteration.""" + obj = Application.objects.create(name=generate_id(), slug=generate_id()) + content_type = ContentType.objects.get_for_model(obj) + + reviewer = create_test_user() + + rule_one = self._create_rule_for_object(obj, min_reviewers=1) + rule_two = self._create_rule_for_object(obj, min_reviewers=1) + + group = Group.objects.create(name=generate_id()) + group.users.add(reviewer) + rule_one.reviewer_groups.add(group) + rule_two.reviewer_groups.add(group) + + iter_one = LifecycleIteration.objects.get( + content_type=content_type, object_id=str(obj.pk), rule=rule_one + ) + iter_two = LifecycleIteration.objects.get( + content_type=content_type, object_id=str(obj.pk), rule=rule_two + ) + + request = self._get_request() + + # Review only rule_one's iteration + Review.objects.create(iteration=iter_one, reviewer=reviewer) + iter_one.on_review(request) + + iter_one.refresh_from_db() + iter_two.refresh_from_db() + self.assertEqual(iter_one.state, ReviewState.REVIEWED) + self.assertEqual(iter_two.state, ReviewState.PENDING) + + def test_type_rule_and_object_rule_both_create_iterations(self): + """A type-level rule and an object-level rule both create iterations for the same object.""" + obj = Application.objects.create(name=generate_id(), slug=generate_id()) + content_type = ContentType.objects.get_for_model(obj) + + object_rule = self._create_rule_for_object(obj, interval="days=30") + type_rule = self._create_rule_for_type(Application, interval="days=60") + + iterations = LifecycleIteration.objects.filter( + content_type=content_type, object_id=str(obj.pk) + ) + self.assertEqual(iterations.count(), 2) + self.assertTrue(iterations.filter(rule=object_rule).exists()) + self.assertTrue(iterations.filter(rule=type_rule).exists()) + class TestLifecycleDateBoundaries(TestCase): """Verify that start_of_day normalization ensures correct overdue/due @@ -679,6 +727,11 @@ class TestLifecycleDateBoundaries(TestCase): ensures that the boundary is always at midnight, so millisecond variations in task execution time do not affect results.""" + @classmethod + def setUpTestData(cls): + config = apps.get_app_config("authentik_tasks_schedules") + config._on_startup_callback(None) + def _create_rule_and_iteration(self, grace_period="days=1", interval="days=365"): app = Application.objects.create(name=generate_id(), slug=generate_id()) content_type = ContentType.objects.get_for_model(Application) diff --git a/authentik/enterprise/providers/scim/api.py b/authentik/enterprise/providers/scim/api.py index ba065304cf..6f9ab2d5ed 100644 --- a/authentik/enterprise/providers/scim/api.py +++ b/authentik/enterprise/providers/scim/api.py @@ -1,14 +1,72 @@ +from datetime import datetime + +from django.urls import reverse from django.utils.translation import gettext as _ from rest_framework.exceptions import ValidationError from authentik.enterprise.license import LicenseKey -from authentik.providers.scim.models import SCIMAuthenticationMode +from authentik.providers.scim.models import SCIMAuthenticationMode, SCIMProvider +from authentik.sources.oauth.models import UserOAuthSourceConnection class SCIMProviderSerializerMixin: + def _get_token(self, instance: SCIMProvider) -> UserOAuthSourceConnection | None: + user = instance.auth_oauth_user + conn = UserOAuthSourceConnection.objects.filter( + user=user, source=instance.auth_oauth + ).first() + return conn + + def get_auth_oauth_token_last_updated(self, instance: SCIMProvider) -> datetime | None: + conn = self._get_token(instance) + return conn.last_updated if conn else None + + def get_auth_oauth_token_expires(self, instance: SCIMProvider) -> datetime | None: + conn = self._get_token(instance) + return conn.expires if conn else None + + def get_auth_oauth_url_callback(self, instance: SCIMProvider) -> str | None: + if ( + instance.auth_mode + in [ + SCIMAuthenticationMode.TOKEN, + SCIMAuthenticationMode.OAUTH_SILENT, + ] + or not instance.backchannel_application + ): + return None + relative_url = reverse( + "authentik_enterprise_providers_scim:callback", + kwargs={"application_slug": instance.backchannel_application.slug}, + ) + if "request" not in self.context: + return relative_url + return self.context["request"].build_absolute_uri(relative_url) + + def get_auth_oauth_url_start(self, instance: SCIMProvider) -> str | None: + if ( + instance.auth_mode + in [ + SCIMAuthenticationMode.TOKEN, + SCIMAuthenticationMode.OAUTH_SILENT, + ] + or not instance.backchannel_application + ): + return None + relative_url = reverse( + "authentik_enterprise_providers_scim:start", + kwargs={"application_slug": instance.backchannel_application.slug}, + ) + if "request" not in self.context: + return relative_url + return self.context["request"].build_absolute_uri(relative_url) + def validate_auth_mode(self, auth_mode: SCIMAuthenticationMode) -> SCIMAuthenticationMode: - if auth_mode == SCIMAuthenticationMode.OAUTH: + if auth_mode in [ + SCIMAuthenticationMode.OAUTH_SILENT, + SCIMAuthenticationMode.OAUTH_INTERACTIVE, + ]: if not LicenseKey.cached_summary().status.is_valid: raise ValidationError(_("Enterprise is required to use the OAuth mode.")) return auth_mode diff --git a/authentik/enterprise/providers/scim/apps.py b/authentik/enterprise/providers/scim/apps.py index 032d1e77ee..8e064fe237 100644 --- a/authentik/enterprise/providers/scim/apps.py +++ b/authentik/enterprise/providers/scim/apps.py @@ -7,3 +7,4 @@ class AuthentikEnterpriseProviderSCIMConfig(EnterpriseConfig): label = "authentik_enterprise_providers_scim" verbose_name = "authentik Enterprise.Providers.SCIM" default = True + mountpoint = "application/scim/" diff --git a/authentik/enterprise/providers/scim/auth_oauth2.py b/authentik/enterprise/providers/scim/auth_oauth2.py index a5ab7dae96..60df576d39 100644 --- a/authentik/enterprise/providers/scim/auth_oauth2.py +++ b/authentik/enterprise/providers/scim/auth_oauth2.py @@ -1,12 +1,14 @@ from datetime import timedelta -from typing import TYPE_CHECKING +from typing import TYPE_CHECKING, Any from django.utils.timezone import now from requests import Request, RequestException from structlog.stdlib import get_logger +from authentik.common.oauth.constants import GRANT_TYPE_PASSWORD, GRANT_TYPE_REFRESH_TOKEN from authentik.providers.scim.clients.exceptions import SCIMRequestException -from authentik.sources.oauth.clients.oauth2 import OAuth2Client +from authentik.providers.scim.models import SCIMAuthenticationMode +from authentik.sources.oauth.clients.base import BaseOAuthClient from authentik.sources.oauth.models import OAuthSource, UserOAuthSourceConnection if TYPE_CHECKING: @@ -18,23 +20,26 @@ class SCIMOAuthException(SCIMRequestException): class SCIMOAuthAuth: - def __init__(self, provider: SCIMProvider): self.provider = provider self.user = provider.auth_oauth_user self.logger = get_logger().bind() self.connection = self.get_connection() - def retrieve_token(self): - if not self.provider.auth_oauth: - return None + def retrieve_token(self, conn: UserOAuthSourceConnection | None) -> dict[str, Any]: source: OAuthSource = self.provider.auth_oauth - client = OAuth2Client(source, None) + client: BaseOAuthClient = source.source_type.callback_view(request=None).get_client(source) access_token_url = source.source_type.access_token_url or "" if source.source_type.urls_customizable and source.access_token_url: access_token_url = source.access_token_url data = client.get_access_token_args(None, None) - data["grant_type"] = "password" + if self.provider.auth_mode == SCIMAuthenticationMode.OAUTH_SILENT: + data["grant_type"] = GRANT_TYPE_PASSWORD + elif self.provider.auth_mode == SCIMAuthenticationMode.OAUTH_INTERACTIVE: + data["grant_type"] = GRANT_TYPE_REFRESH_TOKEN + if not conn: + raise SCIMOAuthException(None, "Could not refresh SCIM OAuth token") + data["refresh_token"] = conn.refresh_token data.update(self.provider.auth_oauth_params) try: response = client.do_request( @@ -54,12 +59,14 @@ class SCIMOAuthAuth: raise SCIMOAuthException(exc.response, message="Failed to get OAuth token") from exc def get_connection(self): - token = UserOAuthSourceConnection.objects.filter( - source=self.provider.auth_oauth, user=self.user, expires__gt=now() + if not self.provider.auth_oauth: + return None + conn = UserOAuthSourceConnection.objects.filter( + source=self.provider.auth_oauth, user=self.user ).first() - if token and token.access_token: - return token - token = self.retrieve_token() + if conn and conn.access_token and conn.expires > now(): + return conn + token = self.retrieve_token(conn) access_token = token["access_token"] expires_in = int(token.get("expires_in", 0)) token, _ = UserOAuthSourceConnection.objects.update_or_create( @@ -67,7 +74,10 @@ class SCIMOAuthAuth: user=self.user, defaults={ "access_token": access_token, + "refresh_token": token.get("refresh_token"), "expires": now() + timedelta(seconds=expires_in), + # When using `update_or_create`, `last_updated` is not updated + "last_updated": now(), }, ) return token diff --git a/authentik/enterprise/providers/scim/signals.py b/authentik/enterprise/providers/scim/signals.py index d150da2178..c6d159bc52 100644 --- a/authentik/enterprise/providers/scim/signals.py +++ b/authentik/enterprise/providers/scim/signals.py @@ -14,7 +14,10 @@ def scim_provider_post_save(sender: type[Model], instance: SCIMProvider, created """Create service account before provider is saved""" identifier = f"ak-providers-scim-{instance.pk}" with audit_ignore(): - if instance.auth_mode == SCIMAuthenticationMode.OAUTH: + if instance.auth_mode in [ + SCIMAuthenticationMode.OAUTH_SILENT, + SCIMAuthenticationMode.OAUTH_INTERACTIVE, + ]: user, user_created = User.objects.update_or_create( username=identifier, defaults={ diff --git a/packages/django-dramatiq-postgres/django_dramatiq_postgres/management/commands/__init__.py b/authentik/enterprise/providers/scim/tests/__init__.py similarity index 100% rename from packages/django-dramatiq-postgres/django_dramatiq_postgres/management/commands/__init__.py rename to authentik/enterprise/providers/scim/tests/__init__.py diff --git a/authentik/enterprise/providers/scim/tests/test_api.py b/authentik/enterprise/providers/scim/tests/test_api.py new file mode 100644 index 0000000000..900a6b206f --- /dev/null +++ b/authentik/enterprise/providers/scim/tests/test_api.py @@ -0,0 +1,73 @@ +"""SCIM OAuth tests""" + +from unittest.mock import MagicMock, PropertyMock, patch + +from django.urls import reverse +from rest_framework.test import APITestCase + +from authentik.core.tests.utils import create_test_admin_user +from authentik.enterprise.license import LicenseKey +from authentik.enterprise.models import License +from authentik.enterprise.tests.test_license import expiry_valid +from authentik.lib.generators import generate_id +from authentik.sources.oauth.models import OAuthSource + + +class TestSCIMOAuthAPI(APITestCase): + """SCIM User tests""" + + def setUp(self): + self.source = OAuthSource.objects.create( + name=generate_id(), + slug=generate_id(), + access_token_url="http://localhost/token", # nosec + consumer_key=generate_id(), + consumer_secret=generate_id(), + provider_type="openidconnect", + ) + + @patch( + "authentik.enterprise.license.LicenseKey.validate", + MagicMock( + return_value=LicenseKey( + aud="", + exp=expiry_valid, + name=generate_id(), + internal_users=100, + external_users=100, + ) + ), + ) + def test_api_create(self): + License.objects.create(key=generate_id()) + self.client.force_login(create_test_admin_user()) + res = self.client.post( + reverse("authentik_api:scimprovider-list"), + { + "name": generate_id(), + "url": "http://localhost", + "auth_mode": "oauth", + "auth_oauth": str(self.source.pk), + }, + ) + self.assertEqual(res.status_code, 201) + + @patch( + "authentik.enterprise.models.LicenseUsageStatus.is_valid", + PropertyMock(return_value=False), + ) + def test_api_create_no_license(self): + self.client.force_login(create_test_admin_user()) + res = self.client.post( + reverse("authentik_api:scimprovider-list"), + { + "name": generate_id(), + "url": "http://localhost", + "auth_mode": "oauth", + "auth_oauth": str(self.source.pk), + }, + ) + self.assertEqual(res.status_code, 400) + self.assertJSONEqual( + res.content, {"auth_mode": ["Enterprise is required to use the OAuth mode."]} + ) diff --git a/authentik/enterprise/providers/scim/tests/test_auth.py b/authentik/enterprise/providers/scim/tests/test_auth.py new file mode 100644 index 0000000000..1ea0687fb2 --- /dev/null +++ b/authentik/enterprise/providers/scim/tests/test_auth.py @@ -0,0 +1,100 @@ +"""SCIM OAuth tests""" + +from requests_mock import Mocker +from rest_framework.test import APITestCase + +from authentik.blueprints.tests import apply_blueprint +from authentik.core.models import Application, Group, User +from authentik.lib.generators import generate_id +from authentik.providers.scim.models import SCIMAuthenticationMode, SCIMMapping, SCIMProvider +from authentik.sources.oauth.models import OAuthSource +from authentik.tenants.models import Tenant + + +class TestSCIMOAuthAuth(APITestCase): + """SCIM User tests""" + + @apply_blueprint("system/providers-scim.yaml") + def setUp(self) -> None: + # Delete all users and groups as the mocked HTTP responses only return one ID + # which will cause errors with multiple users + Tenant.objects.update(avatars="none") + User.objects.all().exclude_anonymous().delete() + Group.objects.all().delete() + self.source = OAuthSource.objects.create( + name=generate_id(), + slug=generate_id(), + access_token_url="http://localhost/token", # nosec + consumer_key=generate_id(), + consumer_secret=generate_id(), + provider_type="openidconnect", + ) + self.provider = SCIMProvider.objects.create( + name=generate_id(), + url="https://localhost", + auth_mode=SCIMAuthenticationMode.OAUTH_SILENT, + auth_oauth=self.source, + auth_oauth_params={ + "foo": "bar", + }, + exclude_users_service_account=True, + ) + self.app: Application = Application.objects.create( + name=generate_id(), + slug=generate_id(), + ) + self.app.backchannel_providers.add(self.provider) + self.provider.property_mappings.add( + SCIMMapping.objects.get(managed="goauthentik.io/providers/scim/user") + ) + self.provider.property_mappings_group.add( + SCIMMapping.objects.get(managed="goauthentik.io/providers/scim/group") + ) + + @Mocker() + def test_user_create(self, mock: Mocker): + """Test user creation""" + scim_id = generate_id() + token = generate_id() + mock.post("http://localhost/token", json={"access_token": token, "expires_in": 3600}) + mock.get( + "https://localhost/ServiceProviderConfig", + json={}, + ) + mock.post( + "https://localhost/Users", + json={ + "id": scim_id, + }, + ) + uid = generate_id() + user = User.objects.create( + username=uid, + name=f"{uid} {uid}", + email=f"{uid}@goauthentik.io", + ) + self.assertEqual(mock.call_count, 3) + self.assertEqual(mock.request_history[1].method, "GET") + self.assertEqual(mock.request_history[2].method, "POST") + self.assertJSONEqual( + mock.request_history[2].body, + { + "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"], + "active": True, + "emails": [ + { + "primary": True, + "type": "other", + "value": f"{uid}@goauthentik.io", + } + ], + "externalId": user.uid, + "name": { + "familyName": uid, + "formatted": f"{uid} {uid}", + "givenName": uid, + }, + "displayName": f"{uid} {uid}", + "userName": uid, + }, + ) diff --git a/authentik/enterprise/providers/scim/tests.py b/authentik/enterprise/providers/scim/tests/test_token.py similarity index 50% rename from authentik/enterprise/providers/scim/tests.py rename to authentik/enterprise/providers/scim/tests/test_token.py index 0680c53d0f..1693ca195a 100644 --- a/authentik/enterprise/providers/scim/tests.py +++ b/authentik/enterprise/providers/scim/tests/test_token.py @@ -2,7 +2,7 @@ from base64 import b64encode from datetime import timedelta -from unittest.mock import MagicMock, PropertyMock, patch +from urllib.parse import parse_qs, urlencode, urlparse from django.urls import reverse from django.utils.timezone import now @@ -11,17 +11,14 @@ from rest_framework.test import APITestCase from authentik.blueprints.tests import apply_blueprint from authentik.core.models import Application, Group, User -from authentik.core.tests.utils import create_test_admin_user -from authentik.enterprise.license import LicenseKey -from authentik.enterprise.models import License -from authentik.enterprise.tests.test_license import expiry_valid from authentik.lib.generators import generate_id from authentik.providers.scim.models import SCIMAuthenticationMode, SCIMMapping, SCIMProvider from authentik.sources.oauth.models import OAuthSource, UserOAuthSourceConnection from authentik.tenants.models import Tenant +from tests.live import create_test_admin_user -class SCIMOAuthTests(APITestCase): +class TestSCIMOAuthToken(APITestCase): """SCIM User tests""" @apply_blueprint("system/providers-scim.yaml") @@ -42,7 +39,7 @@ class SCIMOAuthTests(APITestCase): self.provider = SCIMProvider.objects.create( name=generate_id(), url="https://localhost", - auth_mode=SCIMAuthenticationMode.OAUTH, + auth_mode=SCIMAuthenticationMode.OAUTH_SILENT, auth_oauth=self.source, auth_oauth_params={ "foo": "bar", @@ -60,8 +57,9 @@ class SCIMOAuthTests(APITestCase): self.provider.property_mappings_group.add( SCIMMapping.objects.get(managed="goauthentik.io/providers/scim/group") ) + self.admin = create_test_admin_user() - def test_retrieve_token(self): + def test_retrieve_token_silent(self): """Test token retrieval""" with Mocker() as mocker: token = generate_id() @@ -86,6 +84,44 @@ class SCIMOAuthTests(APITestCase): ) self.assertEqual(mocker.request_history[0].body, "grant_type=password&foo=bar") + def test_retrieve_token_interactive(self): + """Test token retrieval""" + self.provider.auth_mode = SCIMAuthenticationMode.OAUTH_INTERACTIVE + self.provider.save() + refresh_token = generate_id() + access_token = generate_id() + UserOAuthSourceConnection.objects.create( + user=self.provider.auth_oauth_user, + source=self.source, + refresh_token=refresh_token, + access_token=access_token, + ) + with Mocker() as mocker: + token = generate_id() + mocker.post("http://localhost/token", json={"access_token": token, "expires_in": 3600}) + self.provider.scim_auth() + conn = UserOAuthSourceConnection.objects.filter( + source=self.source, + user=self.provider.auth_oauth_user, + ).first() + self.assertIsNotNone(conn) + self.assertTrue(conn.is_valid) + auth = ( + b64encode( + b":".join((self.source.consumer_key.encode(), self.source.consumer_secret.encode())) + ) + .strip() + .decode() + ) + self.assertEqual( + mocker.request_history[0].headers["Authorization"], + f"Basic {auth}", + ) + self.assertEqual( + mocker.request_history[0].body, + f"grant_type=refresh_token&refresh_token={refresh_token}&foo=bar", + ) + def test_existing_token(self): """Test existing token""" UserOAuthSourceConnection.objects.create( @@ -98,96 +134,54 @@ class SCIMOAuthTests(APITestCase): self.provider.scim_auth() self.assertEqual(len(mocker.request_history), 0) - @Mocker() - def test_user_create(self, mock: Mocker): - """Test user creation""" - scim_id = generate_id() - token = generate_id() - mock.post("http://localhost/token", json={"access_token": token, "expires_in": 3600}) - mock.get( - "https://localhost/ServiceProviderConfig", - json={}, - ) - mock.post( - "https://localhost/Users", - json={ - "id": scim_id, - }, - ) - uid = generate_id() - user = User.objects.create( - username=uid, - name=f"{uid} {uid}", - email=f"{uid}@goauthentik.io", - ) - self.assertEqual(mock.call_count, 3) - self.assertEqual(mock.request_history[1].method, "GET") - self.assertEqual(mock.request_history[2].method, "POST") - self.assertJSONEqual( - mock.request_history[2].body, - { - "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"], - "active": True, - "emails": [ - { - "primary": True, - "type": "other", - "value": f"{uid}@goauthentik.io", - } - ], - "externalId": user.uid, - "name": { - "familyName": uid, - "formatted": f"{uid} {uid}", - "givenName": uid, + def test_interactive_start(self): + self.client.force_login(self.admin) + res = self.client.get( + reverse( + "authentik_enterprise_providers_scim:start", + kwargs={ + "application_slug": self.app.slug, }, - "displayName": f"{uid} {uid}", - "userName": uid, - }, - ) - - @patch( - "authentik.enterprise.license.LicenseKey.validate", - MagicMock( - return_value=LicenseKey( - aud="", - exp=expiry_valid, - name=generate_id(), - internal_users=100, - external_users=100, ) - ), - ) - def test_api_create(self): - License.objects.create(key=generate_id()) - self.client.force_login(create_test_admin_user()) - res = self.client.post( - reverse("authentik_api:scimprovider-list"), - { - "name": generate_id(), - "url": "http://localhost", - "auth_mode": "oauth", - "auth_oauth": str(self.source.pk), - }, ) - self.assertEqual(res.status_code, 201) + self.assertEqual(res.status_code, 302) + query = parse_qs(urlparse(res.url).query) + self.assertEqual(query["client_id"], [self.source.consumer_key]) + self.assertEqual( + query["redirect_uri"], + [f"http://testserver/application/scim/{self.app.slug}/oauth2/callback/"], + ) + self.assertEqual(query["response_type"], ["code"]) - @patch( - "authentik.enterprise.models.LicenseUsageStatus.is_valid", - PropertyMock(return_value=False), - ) - def test_api_create_no_license(self): - self.client.force_login(create_test_admin_user()) - res = self.client.post( - reverse("authentik_api:scimprovider-list"), - { - "name": generate_id(), - "url": "http://localhost", - "auth_mode": "oauth", - "auth_oauth": str(self.source.pk), - }, - ) - self.assertEqual(res.status_code, 400) - self.assertJSONEqual( - res.content, {"auth_mode": ["Enterprise is required to use the OAuth mode."]} + def test_interactive_callback(self): + self.client.force_login(self.admin) + res = self.client.get( + reverse( + "authentik_enterprise_providers_scim:start", + kwargs={ + "application_slug": self.app.slug, + }, + ) ) + self.assertEqual(res.status_code, 302) + query = parse_qs(urlparse(res.url).query) + + with Mocker() as mock: + token = generate_id() + mock.post("http://localhost/token", json={"access_token": token, "expires_in": 3600}) + + res = self.client.get( + reverse( + "authentik_enterprise_providers_scim:callback", + kwargs={ + "application_slug": self.app.slug, + }, + ) + + "?" + + urlencode({"state": query["state"][0], "code": generate_id()}) + ) + self.assertEqual(res.status_code, 302) + + conn = UserOAuthSourceConnection.objects.filter(source=self.source).first() + self.assertIsNotNone(conn) + self.assertTrue(conn.is_valid) diff --git a/authentik/enterprise/providers/scim/urls.py b/authentik/enterprise/providers/scim/urls.py new file mode 100644 index 0000000000..f51998dcb5 --- /dev/null +++ b/authentik/enterprise/providers/scim/urls.py @@ -0,0 +1,10 @@ +from django.urls import path + +from authentik.enterprise.providers.scim.views import SCIMOAuthStart, SCIMRedirectCallback + +urlpatterns = [ + path("/oauth2/start/", SCIMOAuthStart.as_view(), name="start"), + path( + "/oauth2/callback/", SCIMRedirectCallback.as_view(), name="callback" + ), +] diff --git a/authentik/enterprise/providers/scim/views.py b/authentik/enterprise/providers/scim/views.py new file mode 100644 index 0000000000..91db2377ba --- /dev/null +++ b/authentik/enterprise/providers/scim/views.py @@ -0,0 +1,70 @@ +from datetime import timedelta + +from django.core.exceptions import PermissionDenied +from django.http import HttpRequest +from django.shortcuts import redirect +from django.urls import reverse +from django.utils.timezone import now + +from authentik.core.models import Application +from authentik.providers.scim.models import SCIMProvider +from authentik.sources.oauth.clients.base import BaseOAuthClient +from authentik.sources.oauth.models import OAuthSource, UserOAuthSourceConnection +from authentik.sources.oauth.types.registry import RequestKind, registry +from authentik.sources.oauth.views.callback import OAuthCallback +from authentik.sources.oauth.views.redirect import OAuthRedirect + + +class SCIMOAuthViewMixin: + + provider: SCIMProvider + + def get_client(self, source: OAuthSource, **kwargs) -> BaseOAuthClient: + source: OAuthSource = self.provider.auth_oauth + source_cls = registry.find(source.provider_type, kind=RequestKind.CALLBACK) + if not source_cls.client_class: + return super().get_client(source, **kwargs) + return source_cls.client_class(source, self.request, **kwargs) + + def _get_scim_provider(self, app_slug: str): + app = Application.objects.filter(slug=app_slug).first() + if not app: + return None + provider = SCIMProvider.objects.filter(backchannel_application=app) + return provider.first() + + def dispatch(self, request: HttpRequest, application_slug: str): + if not request.user.is_authenticated: + raise PermissionDenied() + provider = self._get_scim_provider(application_slug) + if not provider or not provider.auth_oauth: + raise PermissionDenied() + if not request.user.has_perm( + "authentik_providers_scim.change_scimprovider", + provider, + ): + raise PermissionDenied() + self.provider = provider + return super().dispatch(request, source_slug=provider.auth_oauth.slug) + + +class SCIMOAuthStart(SCIMOAuthViewMixin, OAuthRedirect): + + def get_callback_url(self, source: OAuthSource): + return reverse("authentik_enterprise_providers_scim:callback", kwargs=self.kwargs) + + +class SCIMRedirectCallback(SCIMOAuthViewMixin, OAuthCallback): + + def redirect_flow_manager(self, client: BaseOAuthClient): + expires_in = int(self.token.get("expires_in", 0)) + UserOAuthSourceConnection.objects.update_or_create( + source=self.provider.auth_oauth, + user=self.provider.auth_oauth_user, + defaults={ + "access_token": self.token.get("access_token"), + "refresh_token": self.token.get("refresh_token"), + "expires": now() + timedelta(seconds=expires_in), + }, + ) + return redirect("authentik_core:if-admin") diff --git a/authentik/enterprise/providers/ssf/api/providers.py b/authentik/enterprise/providers/ssf/api/providers.py index ad1dfefda6..74f7162790 100644 --- a/authentik/enterprise/providers/ssf/api/providers.py +++ b/authentik/enterprise/providers/ssf/api/providers.py @@ -18,6 +18,10 @@ class SSFProviderSerializer(EnterpriseRequiredMixin, ProviderSerializer): ssf_url = SerializerMethodField() token_obj = TokenSerializer(source="token", required=False, read_only=True) + oidc_auth_providers_obj = ProviderSerializer( + read_only=True, source="oidc_auth_providers", many=True + ) + def get_ssf_url(self, instance: SSFProvider) -> str | None: request: Request = self._context.get("request") if not request: @@ -45,8 +49,10 @@ class SSFProviderSerializer(EnterpriseRequiredMixin, ProviderSerializer): "signing_key", "token_obj", "oidc_auth_providers", + "oidc_auth_providers_obj", "ssf_url", "event_retention", + "push_verify_certificates", ] extra_kwargs = {} @@ -54,7 +60,7 @@ class SSFProviderSerializer(EnterpriseRequiredMixin, ProviderSerializer): class SSFProviderViewSet(UsedByMixin, ModelViewSet): """SSFProvider Viewset""" - queryset = SSFProvider.objects.all() + queryset = SSFProvider.objects.all().prefetch_related("oidc_auth_providers") serializer_class = SSFProviderSerializer filterset_fields = { "application": ["isnull"], diff --git a/authentik/enterprise/providers/ssf/api/streams.py b/authentik/enterprise/providers/ssf/api/streams.py index cd44c6aabf..b98ef948e5 100644 --- a/authentik/enterprise/providers/ssf/api/streams.py +++ b/authentik/enterprise/providers/ssf/api/streams.py @@ -1,6 +1,7 @@ """SSF Stream API Views""" -from rest_framework.viewsets import ReadOnlyModelViewSet +from rest_framework import mixins +from rest_framework.viewsets import GenericViewSet from authentik.core.api.utils import ModelSerializer from authentik.enterprise.providers.ssf.api.providers import SSFProviderSerializer @@ -16,6 +17,7 @@ class SSFStreamSerializer(ModelSerializer): model = Stream fields = [ "pk", + "status", "provider", "provider_obj", "delivery_method", @@ -27,7 +29,12 @@ class SSFStreamSerializer(ModelSerializer): ] -class SSFStreamViewSet(ReadOnlyModelViewSet): +class SSFStreamViewSet( + mixins.RetrieveModelMixin, + mixins.DestroyModelMixin, + mixins.ListModelMixin, + GenericViewSet, +): """SSFStream Viewset""" queryset = Stream.objects.all() diff --git a/authentik/enterprise/providers/ssf/migrations/0002_ssfprovider_push_verify_certificates_and_more.py b/authentik/enterprise/providers/ssf/migrations/0002_ssfprovider_push_verify_certificates_and_more.py new file mode 100644 index 0000000000..19dbf6444e --- /dev/null +++ b/authentik/enterprise/providers/ssf/migrations/0002_ssfprovider_push_verify_certificates_and_more.py @@ -0,0 +1,149 @@ +# Generated by Django 5.2.12 on 2026-04-04 16:58 + +from django.db import migrations, models +import django.contrib.postgres.fields + + +class Migration(migrations.Migration): + + dependencies = [ + ("authentik_providers_ssf", "0001_initial"), + ] + + operations = [ + migrations.AddField( + model_name="ssfprovider", + name="push_verify_certificates", + field=models.BooleanField(default=True), + ), + migrations.AddField( + model_name="stream", + name="authorization_header", + field=models.TextField(default=None, null=True), + ), + migrations.AddField( + model_name="stream", + name="status", + field=models.TextField( + choices=[("enabled", "Enabled"), ("paused", "Paused"), ("disabled", "Disabled")], + default="enabled", + ), + ), + migrations.AlterField( + model_name="stream", + name="delivery_method", + field=models.TextField( + choices=[ + ("https://schemas.openid.net/secevent/risc/delivery-method/push", "Risc Push"), + ("https://schemas.openid.net/secevent/risc/delivery-method/poll", "Risc Poll"), + ("urn:ietf:rfc:8935", "SSF RFC Push"), + ("urn:ietf:rfc:8936", "SSF RFC Pull"), + ] + ), + ), + migrations.AlterField( + model_name="stream", + name="events_requested", + field=django.contrib.postgres.fields.ArrayField( + base_field=models.TextField( + choices=[ + ( + "https://schemas.openid.net/secevent/caep/event-type/session-revoked", + "Caep Session Revoked", + ), + ( + "https://schemas.openid.net/secevent/caep/event-type/token-claims-change", + "Caep Token Claims Change", + ), + ( + "https://schemas.openid.net/secevent/caep/event-type/credential-change", + "Caep Credential Change", + ), + ( + "https://schemas.openid.net/secevent/caep/event-type/assurance-level-change", + "Caep Assurance Level Change", + ), + ( + "https://schemas.openid.net/secevent/caep/event-type/device-compliance-change", + "Caep Device Compliance Change", + ), + ( + "https://schemas.openid.net/secevent/caep/event-type/session-established", + "Caep Session Established", + ), + ( + "https://schemas.openid.net/secevent/caep/event-type/session-presented", + "Caep Session Presented", + ), + ( + "https://schemas.openid.net/secevent/caep/event-type/risk-level-change", + "Caep Risk Level Change", + ), + ( + "https://schemas.openid.net/secevent/ssf/event-type/verification", + "Set Verification", + ), + ] + ), + default=list, + size=None, + ), + ), + migrations.AlterField( + model_name="stream", + name="status", + field=models.TextField( + choices=[ + ("enabled", "Enabled"), + ("paused", "Paused"), + ("disabled", "Disabled"), + ("disabled_deleted", "Disabled Deleted"), + ], + default="enabled", + ), + ), + migrations.AlterField( + model_name="streamevent", + name="type", + field=models.TextField( + choices=[ + ( + "https://schemas.openid.net/secevent/caep/event-type/session-revoked", + "Caep Session Revoked", + ), + ( + "https://schemas.openid.net/secevent/caep/event-type/token-claims-change", + "Caep Token Claims Change", + ), + ( + "https://schemas.openid.net/secevent/caep/event-type/credential-change", + "Caep Credential Change", + ), + ( + "https://schemas.openid.net/secevent/caep/event-type/assurance-level-change", + "Caep Assurance Level Change", + ), + ( + "https://schemas.openid.net/secevent/caep/event-type/device-compliance-change", + "Caep Device Compliance Change", + ), + ( + "https://schemas.openid.net/secevent/caep/event-type/session-established", + "Caep Session Established", + ), + ( + "https://schemas.openid.net/secevent/caep/event-type/session-presented", + "Caep Session Presented", + ), + ( + "https://schemas.openid.net/secevent/caep/event-type/risk-level-change", + "Caep Risk Level Change", + ), + ( + "https://schemas.openid.net/secevent/ssf/event-type/verification", + "Set Verification", + ), + ] + ), + ), + ] diff --git a/authentik/enterprise/providers/ssf/models.py b/authentik/enterprise/providers/ssf/models.py index dabeacba3a..77b7b1454b 100644 --- a/authentik/enterprise/providers/ssf/models.py +++ b/authentik/enterprise/providers/ssf/models.py @@ -24,8 +24,31 @@ class EventTypes(models.TextChoices): """SSF Event types supported by authentik""" CAEP_SESSION_REVOKED = "https://schemas.openid.net/secevent/caep/event-type/session-revoked" + """https://openid.net/specs/openid-caep-1_0-final.html#section-3.1""" + CAEP_TOKEN_CLAIMS_CHANGE = ( + "https://schemas.openid.net/secevent/caep/event-type/token-claims-change" + ) + """https://openid.net/specs/openid-caep-1_0-final.html#section-3.2""" CAEP_CREDENTIAL_CHANGE = "https://schemas.openid.net/secevent/caep/event-type/credential-change" + """https://openid.net/specs/openid-caep-1_0-final.html#section-3.3""" + CAEP_ASSURANCE_LEVEL_CHANGE = ( + "https://schemas.openid.net/secevent/caep/event-type/assurance-level-change" + ) + """https://openid.net/specs/openid-caep-1_0-final.html#section-3.4""" + CAEP_DEVICE_COMPLIANCE_CHANGE = ( + "https://schemas.openid.net/secevent/caep/event-type/device-compliance-change" + ) + """https://openid.net/specs/openid-caep-1_0-final.html#section-3.5""" + CAEP_SESSION_ESTABLISHED = ( + "https://schemas.openid.net/secevent/caep/event-type/session-established" + ) + """https://openid.net/specs/openid-caep-1_0-final.html#section-3.6""" + CAEP_SESSION_PRESENTED = "https://schemas.openid.net/secevent/caep/event-type/session-presented" + """https://openid.net/specs/openid-caep-1_0-final.html#section-3.7""" + CAEP_RISK_LEVEL_CHANGE = "https://schemas.openid.net/secevent/caep/event-type/risk-level-change" + """https://openid.net/specs/openid-caep-1_0-final.html#section-3.8""" SET_VERIFICATION = "https://schemas.openid.net/secevent/ssf/event-type/verification" + """https://openid.net/specs/openid-sharedsignals-framework-1_0.html#section-8.1.4.1""" class DeliveryMethods(models.TextChoices): @@ -33,6 +56,8 @@ class DeliveryMethods(models.TextChoices): RISC_PUSH = "https://schemas.openid.net/secevent/risc/delivery-method/push" RISC_POLL = "https://schemas.openid.net/secevent/risc/delivery-method/poll" + RFC_PUSH = "urn:ietf:rfc:8935", _("SSF RFC Push") + RFC_PULL = "urn:ietf:rfc:8936", _("SSF RFC Pull") class SSFEventStatus(models.TextChoices): @@ -43,6 +68,15 @@ class SSFEventStatus(models.TextChoices): SENT = "sent" +class StreamStatus(models.TextChoices): + """SSF Stream status""" + + ENABLED = "enabled" + PAUSED = "paused" + DISABLED = "disabled" + DISABLED_DELETED = "disabled_deleted" + + class SSFProvider(TasksModel, BackchannelProvider): """Shared Signals Framework provider to allow applications to receive user events from authentik.""" @@ -54,6 +88,8 @@ class SSFProvider(TasksModel, BackchannelProvider): help_text=_("Key used to sign the SSF Events."), ) + push_verify_certificates = models.BooleanField(default=True) + oidc_auth_providers = models.ManyToManyField(OAuth2Provider, blank=True, default=None) token = models.ForeignKey(Token, on_delete=models.CASCADE, null=True, default=None) @@ -106,10 +142,14 @@ class Stream(models.Model): """SSF Stream""" uuid = models.UUIDField(default=uuid4, primary_key=True, editable=False) + + status = models.TextField(choices=StreamStatus.choices, default=StreamStatus.ENABLED) + provider = models.ForeignKey(SSFProvider, on_delete=models.CASCADE) delivery_method = models.TextField(choices=DeliveryMethods.choices) endpoint_url = models.TextField(null=True) + authorization_header = models.TextField(null=True, default=None) events_requested = ArrayField(models.TextField(choices=EventTypes.choices), default=list) format = models.TextField() @@ -146,7 +186,7 @@ class Stream(models.Model): } def encode(self, data: dict) -> str: - headers = {} + headers = {"typ": "secevent+jwt"} if self.provider.signing_key: headers["kid"] = self.provider.signing_key.kid key, alg = self.provider.jwt_key diff --git a/authentik/enterprise/providers/ssf/signals.py b/authentik/enterprise/providers/ssf/signals.py index 0a1ac35c31..aaaa336d65 100644 --- a/authentik/enterprise/providers/ssf/signals.py +++ b/authentik/enterprise/providers/ssf/signals.py @@ -12,7 +12,7 @@ from authentik.core.models import ( User, UserTypes, ) -from authentik.core.signals import password_changed +from authentik.core.signals import password_changed, password_hash_changed from authentik.enterprise.providers.ssf.models import ( EventTypes, SSFProvider, @@ -84,14 +84,13 @@ def ssf_user_session_delete_session_revoked(sender, instance: AuthenticatedSessi ) -@receiver(password_changed) -def ssf_password_changed_cred_change(sender, user: User, password: str | None, **_): +def _send_password_credential_change(user: User, change_type: str): """Credential change trigger (password changed)""" send_ssf_events( EventTypes.CAEP_CREDENTIAL_CHANGE, { "credential_type": "password", - "change_type": "revoke" if password is None else "update", + "change_type": change_type, }, sub_id={ "format": "complex", @@ -103,6 +102,16 @@ def ssf_password_changed_cred_change(sender, user: User, password: str | None, * ) +@receiver(password_hash_changed) +@receiver(password_changed) +def ssf_password_changed_cred_change(signal, sender, user: User, password: str | None = None, **_): + """Credential change trigger (password changed)""" + if signal is password_hash_changed: + _send_password_credential_change(user, "update") + return + _send_password_credential_change(user, "revoke" if password is None else "update") + + device_type_map = { StaticDevice: "pin", TOTPDevice: "pin", diff --git a/authentik/enterprise/providers/ssf/tasks.py b/authentik/enterprise/providers/ssf/tasks.py index 94894a48cf..47fca246b9 100644 --- a/authentik/enterprise/providers/ssf/tasks.py +++ b/authentik/enterprise/providers/ssf/tasks.py @@ -8,6 +8,7 @@ from dramatiq.actor import actor from requests.exceptions import RequestException from structlog.stdlib import get_logger +from authentik.core.apps import AppAccessWithoutBindings from authentik.core.models import User from authentik.enterprise.providers.ssf.models import ( DeliveryMethods, @@ -15,6 +16,7 @@ from authentik.enterprise.providers.ssf.models import ( SSFEventStatus, Stream, StreamEvent, + StreamStatus, ) from authentik.lib.utils.http import get_http_session from authentik.lib.utils.time import timedelta_from_string @@ -68,6 +70,7 @@ def _check_app_access(stream: Stream, event_data: dict) -> bool: if not user: return True engine = PolicyEngine(stream.provider.backchannel_application, user) + engine.empty_result = AppAccessWithoutBindings.get() engine.use_cache = False engine.build() return engine.passing @@ -86,23 +89,42 @@ def send_ssf_event(stream_uuid: UUID, event_data: dict[str, Any]): self.set_uid(event.pk) if event.status == SSFEventStatus.SENT: return - if stream.delivery_method != DeliveryMethods.RISC_PUSH: + if stream.delivery_method not in [DeliveryMethods.RISC_PUSH, DeliveryMethods.RFC_PUSH]: return + headers = {"Content-Type": "application/secevent+jwt", "Accept": "application/json"} + if stream.authorization_header: + headers["Authorization"] = stream.authorization_header try: response = session.post( event.stream.endpoint_url, data=event.stream.encode(event.payload), - headers={"Content-Type": "application/secevent+jwt", "Accept": "application/json"}, + headers=headers, + verify=stream.provider.push_verify_certificates, + timeout=180, ) response.raise_for_status() event.status = SSFEventStatus.SENT event.save() - return + self.info("Event successfully sent", status=response.status_code) + # Cleanup, if we were the last pending message for this stream and it has been deleted + # (status=StreamStatus.DISABLED_DELETED), then we can delete the stream + if ( + not StreamEvent.objects.filter( + stream=stream, + status__in=[SSFEventStatus.PENDING_FAILED, SSFEventStatus.PENDING_NEW], + ).exists() + and stream.status == StreamStatus.DISABLED_DELETED + ): + LOGGER.info( + "Deleting inactive stream as all pending messages were sent.", stream=stream + ) + self.info("Deleting inactive stream as all pending messages were sent.") + stream.delete() except RequestException as exc: - LOGGER.warning("Failed to send SSF event", exc=exc) + LOGGER.warning("Failed to send SSF event", exc=exc, stream=stream) attrs = {} - if exc.response: + if exc.response is not None: attrs["response"] = { "content": exc.response.text, "status": exc.response.status_code, @@ -111,5 +133,6 @@ def send_ssf_event(stream_uuid: UUID, event_data: dict[str, Any]): self.warning("Failed to send request", **attrs) # Re-up the expiry of the stream event event.expires = now() + timedelta_from_string(event.stream.provider.event_retention) + self.info(f"Event will be re-sent at {event.expires}") event.status = SSFEventStatus.PENDING_FAILED event.save() diff --git a/authentik/enterprise/providers/ssf/tests/test_auth.py b/authentik/enterprise/providers/ssf/tests/test_auth.py new file mode 100644 index 0000000000..6946ea4eeb --- /dev/null +++ b/authentik/enterprise/providers/ssf/tests/test_auth.py @@ -0,0 +1,170 @@ +import json +from dataclasses import asdict + +from django.urls import reverse +from django.utils import timezone +from rest_framework.test import APITestCase + +from authentik.core.models import Application, Token, TokenIntents +from authentik.core.tests.utils import ( + create_test_admin_user, + create_test_cert, + create_test_flow, + create_test_user, +) +from authentik.enterprise.providers.ssf.models import ( + SSFEventStatus, + SSFProvider, + Stream, + StreamEvent, +) +from authentik.lib.generators import generate_id +from authentik.providers.oauth2.id_token import IDToken +from authentik.providers.oauth2.models import AccessToken, OAuth2Provider + + +class TestSSFAuth(APITestCase): + def setUp(self): + self.application = Application.objects.create(name=generate_id(), slug=generate_id()) + self.provider = SSFProvider.objects.create( + name=generate_id(), + signing_key=create_test_cert(), + backchannel_application=self.application, + ) + + def test_stream_add_token(self): + """test stream add (token auth)""" + res = self.client.post( + reverse( + "authentik_providers_ssf:stream", + kwargs={"application_slug": self.application.slug}, + ), + data={ + "iss": "https://authentik.company/.well-known/ssf-configuration/foo/5", + "aud": ["https://app.authentik.company"], + "delivery": { + "method": "https://schemas.openid.net/secevent/risc/delivery-method/push", + "endpoint_url": "https://app.authentik.company", + }, + "events_requested": [ + "https://schemas.openid.net/secevent/caep/event-type/credential-change", + "https://schemas.openid.net/secevent/caep/event-type/session-revoked", + ], + "format": "iss_sub", + }, + HTTP_AUTHORIZATION=f"Bearer {self.provider.token.key}", + ) + self.assertEqual(res.status_code, 201) + stream = Stream.objects.filter(provider=self.provider).first() + self.assertIsNotNone(stream) + event = StreamEvent.objects.filter(stream=stream).first() + self.assertIsNotNone(event) + self.assertEqual(event.status, SSFEventStatus.PENDING_FAILED) + self.assertEqual( + event.payload["events"], + {"https://schemas.openid.net/secevent/ssf/event-type/verification": {}}, + ) + + def test_stream_add_oidc(self): + """test stream add (oidc auth)""" + provider = OAuth2Provider.objects.create( + name=generate_id(), + authorization_flow=create_test_flow(), + ) + self.application.provider = provider + self.application.save() + user = create_test_admin_user() + token = AccessToken.objects.create( + provider=provider, + user=user, + token=generate_id(), + auth_time=timezone.now(), + _scope="openid user profile", + _id_token=json.dumps( + asdict( + IDToken("foo", "bar"), + ) + ), + ) + + res = self.client.post( + reverse( + "authentik_providers_ssf:stream", + kwargs={"application_slug": self.application.slug}, + ), + data={ + "iss": "https://authentik.company/.well-known/ssf-configuration/foo/5", + "aud": ["https://app.authentik.company"], + "delivery": { + "method": "https://schemas.openid.net/secevent/risc/delivery-method/push", + "endpoint_url": "https://app.authentik.company", + }, + "events_requested": [ + "https://schemas.openid.net/secevent/caep/event-type/credential-change", + "https://schemas.openid.net/secevent/caep/event-type/session-revoked", + ], + "format": "iss_sub", + }, + HTTP_AUTHORIZATION=f"Bearer {token.token}", + ) + self.assertEqual(res.status_code, 201) + stream = Stream.objects.filter(provider=self.provider).first() + self.assertIsNotNone(stream) + event = StreamEvent.objects.filter(stream=stream).first() + self.assertIsNotNone(event) + self.assertEqual(event.status, SSFEventStatus.PENDING_FAILED) + self.assertEqual( + event.payload["events"], + {"https://schemas.openid.net/secevent/ssf/event-type/verification": {}}, + ) + + def test_token_invalid(self): + res = self.client.post( + reverse( + "authentik_providers_ssf:stream", + kwargs={"application_slug": self.application.slug}, + ), + data={ + "iss": "https://authentik.company/.well-known/ssf-configuration/foo/5", + "aud": ["https://app.authentik.company"], + "delivery": { + "method": "https://schemas.openid.net/secevent/risc/delivery-method/push", + "endpoint_url": "https://app.authentik.company", + }, + "events_requested": [ + "https://schemas.openid.net/secevent/caep/event-type/credential-change", + "https://schemas.openid.net/secevent/caep/event-type/session-revoked", + ], + "format": "iss_sub", + }, + HTTP_AUTHORIZATION=f"Bearer {self.provider.token.key}a", + ) + # Response code needs to be 401 according to spec + self.assertEqual(res.status_code, 401) + + def test_token_unrelated(self): + token = Token.objects.create( + identifier=generate_id(), user=create_test_user(), intent=TokenIntents.INTENT_API + ) + res = self.client.post( + reverse( + "authentik_providers_ssf:stream", + kwargs={"application_slug": self.application.slug}, + ), + data={ + "iss": "https://authentik.company/.well-known/ssf-configuration/foo/5", + "aud": ["https://app.authentik.company"], + "delivery": { + "method": "https://schemas.openid.net/secevent/risc/delivery-method/push", + "endpoint_url": "https://app.authentik.company", + }, + "events_requested": [ + "https://schemas.openid.net/secevent/caep/event-type/credential-change", + "https://schemas.openid.net/secevent/caep/event-type/session-revoked", + ], + "format": "iss_sub", + }, + HTTP_AUTHORIZATION=f"Bearer {token.key}", + ) + # Response code needs to be 401 according to spec + self.assertEqual(res.status_code, 401) diff --git a/authentik/enterprise/providers/ssf/tests/test_config.py b/authentik/enterprise/providers/ssf/tests/test_config.py index 4487a00fa3..f9ebfd7bff 100644 --- a/authentik/enterprise/providers/ssf/tests/test_config.py +++ b/authentik/enterprise/providers/ssf/tests/test_config.py @@ -44,3 +44,15 @@ class TestConfiguration(APITestCase): self.assertEqual(res.status_code, 200) content = json.loads(res.content) self.assertEqual(content["spec_version"], "1_0-ID2") + + def test_config_not_found(self): + """test SSF configuration (authenticated)""" + self.provider.delete() + res = self.client.get( + reverse( + "authentik_providers_ssf:configuration", + kwargs={"application_slug": self.application.slug}, + ), + HTTP_AUTHORIZATION=f"Bearer {self.provider.token.key}", + ) + self.assertEqual(res.status_code, 404) diff --git a/authentik/enterprise/providers/ssf/tests/test_signals.py b/authentik/enterprise/providers/ssf/tests/test_signals.py index 72c5423d3d..5bf1454a85 100644 --- a/authentik/enterprise/providers/ssf/tests/test_signals.py +++ b/authentik/enterprise/providers/ssf/tests/test_signals.py @@ -1,5 +1,6 @@ from uuid import uuid4 +from django.contrib.auth.hashers import make_password from django.urls import reverse from rest_framework.test import APITestCase @@ -52,6 +53,21 @@ class TestSignals(APITestCase): ) self.assertEqual(res.status_code, 201, res.content) + def _assert_password_credential_change(self, user, change_type: str): + stream = Stream.objects.filter(provider=self.provider).first() + self.assertIsNotNone(stream) + event = StreamEvent.objects.filter(stream=stream).first() + self.assertIsNotNone(event) + self.assertEqual(event.status, SSFEventStatus.PENDING_FAILED) + event_payload = event.payload["events"][ + "https://schemas.openid.net/secevent/caep/event-type/credential-change" + ] + self.assertEqual(event_payload["change_type"], change_type) + self.assertEqual(event_payload["credential_type"], "password") + self.assertEqual(event.payload["sub_id"]["format"], "complex") + self.assertEqual(event.payload["sub_id"]["user"]["format"], "email") + self.assertEqual(event.payload["sub_id"]["user"]["email"], user.email) + def test_signal_logout(self): """Test user logout""" user = create_test_user() @@ -79,19 +95,25 @@ class TestSignals(APITestCase): user.set_password(generate_id()) user.save() - stream = Stream.objects.filter(provider=self.provider).first() - self.assertIsNotNone(stream) - event = StreamEvent.objects.filter(stream=stream).first() - self.assertIsNotNone(event) - self.assertEqual(event.status, SSFEventStatus.PENDING_FAILED) - event_payload = event.payload["events"][ - "https://schemas.openid.net/secevent/caep/event-type/credential-change" - ] - self.assertEqual(event_payload["change_type"], "update") - self.assertEqual(event_payload["credential_type"], "password") - self.assertEqual(event.payload["sub_id"]["format"], "complex") - self.assertEqual(event.payload["sub_id"]["user"]["format"], "email") - self.assertEqual(event.payload["sub_id"]["user"]["email"], user.email) + self._assert_password_credential_change(user, "update") + + def test_signal_password_change_from_hash(self): + """Test user password change from a pre-hashed password.""" + user = create_test_user() + self.client.force_login(user) + user.set_password_from_hash(make_password(generate_id())) + user.save() + + self._assert_password_credential_change(user, "update") + + def test_signal_password_revoke(self): + """Test explicit password revoke.""" + user = create_test_user() + self.client.force_login(user) + user.set_password(None) + user.save() + + self._assert_password_credential_change(user, "revoke") def test_signal_authenticator_added(self): """Test authenticator creation signal""" diff --git a/authentik/enterprise/providers/ssf/tests/test_stream.py b/authentik/enterprise/providers/ssf/tests/test_stream.py index f849561ef4..dba7d41e71 100644 --- a/authentik/enterprise/providers/ssf/tests/test_stream.py +++ b/authentik/enterprise/providers/ssf/tests/test_stream.py @@ -1,21 +1,18 @@ -import json -from dataclasses import asdict +from uuid import uuid4 from django.urls import reverse -from django.utils import timezone from rest_framework.test import APITestCase from authentik.core.models import Application -from authentik.core.tests.utils import create_test_admin_user, create_test_cert, create_test_flow +from authentik.core.tests.utils import create_test_cert from authentik.enterprise.providers.ssf.models import ( SSFEventStatus, SSFProvider, Stream, StreamEvent, + StreamStatus, ) from authentik.lib.generators import generate_id -from authentik.providers.oauth2.id_token import IDToken -from authentik.providers.oauth2.models import AccessToken, OAuth2Provider class TestStream(APITestCase): @@ -57,7 +54,7 @@ class TestStream(APITestCase): self.assertEqual(event.status, SSFEventStatus.PENDING_FAILED) self.assertEqual( event.payload["events"], - {"https://schemas.openid.net/secevent/ssf/event-type/verification": {"state": None}}, + {"https://schemas.openid.net/secevent/ssf/event-type/verification": {}}, ) def test_stream_add_poll(self): @@ -87,29 +84,71 @@ class TestStream(APITestCase): {"delivery": {"method": ["Polling for SSF events is not currently supported."]}}, ) - def test_stream_add_oidc(self): - """test stream add (oidc auth)""" - provider = OAuth2Provider.objects.create( - name=generate_id(), - authorization_flow=create_test_flow(), - ) - self.application.provider = provider - self.application.save() - user = create_test_admin_user() - token = AccessToken.objects.create( - provider=provider, - user=user, - token=generate_id(), - auth_time=timezone.now(), - _scope="openid user profile", - _id_token=json.dumps( - asdict( - IDToken("foo", "bar"), - ) + def test_stream_delete(self): + """delete stream""" + stream = Stream.objects.create(provider=self.provider) + res = self.client.delete( + reverse( + "authentik_providers_ssf:stream", + kwargs={"application_slug": self.application.slug}, ), + HTTP_AUTHORIZATION=f"Bearer {self.provider.token.key}", ) + self.assertEqual(res.status_code, 204) + stream.refresh_from_db() + self.assertEqual(stream.status, StreamStatus.DISABLED_DELETED) - res = self.client.post( + def test_stream_get(self): + """get stream""" + Stream.objects.create(provider=self.provider) + res = self.client.get( + reverse( + "authentik_providers_ssf:stream", + kwargs={"application_slug": self.application.slug}, + ), + HTTP_AUTHORIZATION=f"Bearer {self.provider.token.key}", + ) + self.assertEqual(res.status_code, 200) + + def test_stream_get_filter_query(self): + """get stream""" + other_stream = Stream.objects.create(provider=self.provider) + stream = Stream.objects.create(provider=self.provider) + res = self.client.get( + reverse( + "authentik_providers_ssf:stream", + kwargs={"application_slug": self.application.slug}, + ) + + f"?stream_id={stream.pk}", + HTTP_AUTHORIZATION=f"Bearer {self.provider.token.key}", + ) + self.assertEqual(res.status_code, 200) + self.assertIn(str(stream.pk), res.content.decode()) + self.assertNotIn(str(other_stream.pk), res.content.decode()) + + def test_stream_patch(self): + """patch stream""" + other_stream = Stream.objects.create(provider=self.provider) + stream = Stream.objects.create(provider=self.provider) + res = self.client.patch( + reverse( + "authentik_providers_ssf:stream", + kwargs={"application_slug": self.application.slug}, + ), + data={ + "delivery": {"endpoint_url": "https://localhost"}, + "stream_id": str(stream.pk), + }, + HTTP_AUTHORIZATION=f"Bearer {self.provider.token.key}", + ) + self.assertEqual(res.status_code, 200) + self.assertIn(str(stream.pk), res.content.decode()) + self.assertNotIn(str(other_stream.pk), res.content.decode()) + + def test_stream_put(self): + """put stream""" + stream = Stream.objects.create(provider=self.provider) + res = self.client.put( reverse( "authentik_providers_ssf:stream", kwargs={"application_slug": self.application.slug}, @@ -126,29 +165,86 @@ class TestStream(APITestCase): "https://schemas.openid.net/secevent/caep/event-type/session-revoked", ], "format": "iss_sub", + "stream_id": str(stream.pk), }, - HTTP_AUTHORIZATION=f"Bearer {token.token}", - ) - self.assertEqual(res.status_code, 201) - stream = Stream.objects.filter(provider=self.provider).first() - self.assertIsNotNone(stream) - event = StreamEvent.objects.filter(stream=stream).first() - self.assertIsNotNone(event) - self.assertEqual(event.status, SSFEventStatus.PENDING_FAILED) - self.assertEqual( - event.payload["events"], - {"https://schemas.openid.net/secevent/ssf/event-type/verification": {"state": None}}, + HTTP_AUTHORIZATION=f"Bearer {self.provider.token.key}", ) + self.assertEqual(res.status_code, 200) + self.assertIn(str(stream.pk), res.content.decode()) + stream.refresh_from_db() + self.assertEqual(stream.aud, ["https://app.authentik.company"]) - def test_stream_delete(self): - """delete stream""" + def test_stream_verify(self): + """Test stream verify""" stream = Stream.objects.create(provider=self.provider) - res = self.client.delete( + res = self.client.post( reverse( - "authentik_providers_ssf:stream", + "authentik_providers_ssf:stream-verify", kwargs={"application_slug": self.application.slug}, ), + data={ + "stream_id": str(stream.pk), + }, HTTP_AUTHORIZATION=f"Bearer {self.provider.token.key}", ) self.assertEqual(res.status_code, 204) - self.assertFalse(Stream.objects.filter(pk=stream.pk).exists()) + + def test_stream_status(self): + """Test stream status""" + stream = Stream.objects.create(provider=self.provider) + res = self.client.get( + reverse( + "authentik_providers_ssf:stream-status", + kwargs={"application_slug": self.application.slug}, + ), + data={ + "stream_id": str(stream.pk), + }, + HTTP_AUTHORIZATION=f"Bearer {self.provider.token.key}", + ) + self.assertEqual(res.status_code, 200) + self.assertJSONEqual( + res.content, + { + "stream_id": str(stream.pk), + "status": str(stream.status), + }, + ) + + def test_stream_status_not_found(self): + """Test stream status""" + Stream.objects.create(provider=self.provider) + res = self.client.get( + reverse( + "authentik_providers_ssf:stream-status", + kwargs={"application_slug": self.application.slug}, + ), + data={ + "stream_id": str(uuid4()), + }, + HTTP_AUTHORIZATION=f"Bearer {self.provider.token.key}", + ) + self.assertEqual(res.status_code, 404) + + def test_stream_status_update(self): + stream = Stream.objects.create(provider=self.provider) + res = self.client.post( + reverse( + "authentik_providers_ssf:stream-status", + kwargs={"application_slug": self.application.slug}, + ), + data={ + "stream_id": str(stream.pk), + "status": StreamStatus.DISABLED, + }, + HTTP_AUTHORIZATION=f"Bearer {self.provider.token.key}", + ) + self.assertEqual(res.status_code, 200) + stream.refresh_from_db() + self.assertJSONEqual( + res.content, + { + "stream_id": str(stream.pk), + "status": str(stream.status), + }, + ) diff --git a/authentik/enterprise/providers/ssf/tests/test_tasks.py b/authentik/enterprise/providers/ssf/tests/test_tasks.py new file mode 100644 index 0000000000..1deebca18f --- /dev/null +++ b/authentik/enterprise/providers/ssf/tests/test_tasks.py @@ -0,0 +1,123 @@ +from jwt import decode_complete +from requests_mock import Mocker +from rest_framework.test import APITestCase + +from authentik.core.models import Application +from authentik.core.tests.utils import create_test_cert +from authentik.enterprise.providers.ssf.models import ( + DeliveryMethods, + EventTypes, + SSFProvider, + Stream, + StreamStatus, +) +from authentik.enterprise.providers.ssf.tasks import send_ssf_event +from authentik.lib.generators import generate_id +from authentik.tasks.models import TaskLog + + +class TestTasks(APITestCase): + def setUp(self): + self.application = Application.objects.create(name=generate_id(), slug=generate_id()) + self.provider = SSFProvider.objects.create( + name=generate_id(), + signing_key=create_test_cert(), + backchannel_application=self.application, + ) + + def test_push_simple(self): + stream = Stream.objects.create( + provider=self.provider, + delivery_method=DeliveryMethods.RFC_PUSH, + endpoint_url="http://localhost/ssf-push", + ) + event_data = stream.prepare_event_payload( + EventTypes.SET_VERIFICATION, + {}, + sub_id={"format": "opaque", "id": str(stream.uuid)}, + ) + with Mocker() as mocker: + mocker.post("http://localhost/ssf-push", status_code=202) + send_ssf_event.send_with_options( + args=(stream.pk, event_data), rel_obj=stream.provider + ).get_result(block=True, timeout=1) + self.assertEqual( + mocker.request_history[0].headers["Content-Type"], "application/secevent+jwt" + ) + jwt = decode_complete(mocker.request_history[0].body, options={"verify_signature": False}) + self.assertEqual(jwt["header"]["typ"], "secevent+jwt") + self.assertEqual(jwt["payload"]["events"][EventTypes.SET_VERIFICATION], {}) + + def test_push_auth(self): + auth = generate_id() + stream = Stream.objects.create( + provider=self.provider, + delivery_method=DeliveryMethods.RFC_PUSH, + endpoint_url="http://localhost/ssf-push", + authorization_header=auth, + ) + event_data = stream.prepare_event_payload( + EventTypes.SET_VERIFICATION, + {}, + sub_id={"format": "opaque", "id": str(stream.uuid)}, + ) + with Mocker() as mocker: + mocker.post("http://localhost/ssf-push", status_code=202) + send_ssf_event.send_with_options( + args=(stream.pk, event_data), rel_obj=stream.provider + ).get_result(block=True, timeout=1) + self.assertEqual(mocker.request_history[0].headers["Authorization"], auth) + self.assertEqual( + mocker.request_history[0].headers["Content-Type"], "application/secevent+jwt" + ) + jwt = decode_complete(mocker.request_history[0].body, options={"verify_signature": False}) + self.assertEqual(jwt["header"]["typ"], "secevent+jwt") + self.assertEqual(jwt["payload"]["events"][EventTypes.SET_VERIFICATION], {}) + + def test_push_stream_disable(self): + auth = generate_id() + stream = Stream.objects.create( + provider=self.provider, + delivery_method=DeliveryMethods.RFC_PUSH, + endpoint_url="http://localhost/ssf-push", + authorization_header=auth, + status=StreamStatus.DISABLED_DELETED, + ) + event_data = stream.prepare_event_payload( + EventTypes.SET_VERIFICATION, + {}, + sub_id={"format": "opaque", "id": str(stream.uuid)}, + ) + with Mocker() as mocker: + mocker.post("http://localhost/ssf-push", status_code=202) + send_ssf_event.send_with_options( + args=(stream.pk, event_data), rel_obj=stream.provider + ).get_result(block=True, timeout=1) + jwt = decode_complete(mocker.request_history[0].body, options={"verify_signature": False}) + self.assertEqual(jwt["header"]["typ"], "secevent+jwt") + self.assertEqual(jwt["payload"]["events"][EventTypes.SET_VERIFICATION], {}) + self.assertFalse(Stream.objects.filter(pk=stream.pk).exists()) + + def test_push_error(self): + stream = Stream.objects.create( + provider=self.provider, + delivery_method=DeliveryMethods.RFC_PUSH, + endpoint_url="http://localhost/ssf-push", + ) + event_data = stream.prepare_event_payload( + EventTypes.SET_VERIFICATION, + {}, + sub_id={"format": "opaque", "id": str(stream.uuid)}, + ) + with Mocker() as mocker: + mocker.post("http://localhost/ssf-push", text="error", status_code=400) + send_ssf_event.send_with_options( + args=(stream.pk, event_data), rel_obj=stream.provider + ).get_result(block=True, timeout=1) + logs = ( + TaskLog.objects.filter(task__actor_name=send_ssf_event.actor_name) + .order_by("timestamp") + .filter(event="Failed to send request") + .first() + ) + self.assertEqual(logs.attributes, {"response": {"status": 400, "content": "error"}}) diff --git a/authentik/enterprise/providers/ssf/urls.py b/authentik/enterprise/providers/ssf/urls.py index 26734913d5..0940aed321 100644 --- a/authentik/enterprise/providers/ssf/urls.py +++ b/authentik/enterprise/providers/ssf/urls.py @@ -6,7 +6,11 @@ from authentik.enterprise.providers.ssf.api.providers import SSFProviderViewSet from authentik.enterprise.providers.ssf.api.streams import SSFStreamViewSet from authentik.enterprise.providers.ssf.views.configuration import ConfigurationView from authentik.enterprise.providers.ssf.views.jwks import JWKSview -from authentik.enterprise.providers.ssf.views.stream import StreamView +from authentik.enterprise.providers.ssf.views.stream import ( + StreamStatusView, + StreamVerifyView, + StreamView, +) urlpatterns = [ path( @@ -24,6 +28,16 @@ urlpatterns = [ StreamView.as_view(), name="stream", ), + path( + "application/ssf//stream/verify/", + StreamVerifyView.as_view(), + name="stream-verify", + ), + path( + "application/ssf//stream/status/", + StreamStatusView.as_view(), + name="stream-status", + ), ] api_urlpatterns = [ diff --git a/authentik/enterprise/providers/ssf/views/auth.py b/authentik/enterprise/providers/ssf/views/auth.py index c455193bc4..0385ea7385 100644 --- a/authentik/enterprise/providers/ssf/views/auth.py +++ b/authentik/enterprise/providers/ssf/views/auth.py @@ -25,7 +25,7 @@ class SSFTokenAuth(BaseAuthentication): def check_token(self, key: str) -> Token | None: """Check that a token exists, is not expired, and is assigned to the correct provider""" - token = Token.filter_not_expired(key=key, intent=TokenIntents.INTENT_API).first() + token = Token.objects.filter(key=key, intent=TokenIntents.INTENT_API).first() if not token: return None provider: SSFProvider = token.ssfprovider_set.first() @@ -39,7 +39,7 @@ class SSFTokenAuth(BaseAuthentication): """Check JWT-based authentication, this supports tokens issued either by providers configured directly in the provider, and by providers assigned to the application that the SSF provider is a backchannel provider of.""" - token = AccessToken.filter_not_expired(token=jwt, revoked=False).first() + token = AccessToken.objects.filter(token=jwt, revoked=False).first() if not token: return None ssf_provider = SSFProvider.objects.filter( @@ -64,3 +64,7 @@ class SSFTokenAuth(BaseAuthentication): if jwt_token: return (jwt_token.user, token) return None + + # Required to correctly propagate a 401 header which the SSF spec requires + def authenticate_header(self, request): + return "SSF" diff --git a/authentik/enterprise/providers/ssf/views/base.py b/authentik/enterprise/providers/ssf/views/base.py index 927f9fa2a5..2ff472904c 100644 --- a/authentik/enterprise/providers/ssf/views/base.py +++ b/authentik/enterprise/providers/ssf/views/base.py @@ -1,10 +1,10 @@ -from django.http import HttpRequest +from django.http import Http404, HttpRequest from rest_framework.permissions import IsAuthenticated from rest_framework.views import APIView from structlog.stdlib import BoundLogger, get_logger from authentik.core.models import Application -from authentik.enterprise.providers.ssf.models import SSFProvider +from authentik.enterprise.providers.ssf.models import SSFProvider, Stream, StreamStatus from authentik.enterprise.providers.ssf.views.auth import SSFTokenAuth @@ -21,3 +21,18 @@ class SSFView(APIView): def get_authenticators(self): return [SSFTokenAuth(self)] + + +class SSFStreamView(SSFView): + def get_object(self) -> Stream: + streams = Stream.objects.filter(provider=self.provider).exclude( + status=StreamStatus.DISABLED_DELETED + ) + if "stream_id" in self.request.query_params: + streams = streams.filter(pk=self.request.query_params["stream_id"]) + if "stream_id" in self.request.data: + streams = streams.filter(pk=self.request.data["stream_id"]) + stream = streams.first() + if not stream: + raise Http404() + return stream diff --git a/authentik/enterprise/providers/ssf/views/configuration.py b/authentik/enterprise/providers/ssf/views/configuration.py index 4cdcaa98bf..ea671c012c 100644 --- a/authentik/enterprise/providers/ssf/views/configuration.py +++ b/authentik/enterprise/providers/ssf/views/configuration.py @@ -47,9 +47,23 @@ class ConfigurationView(SSFView): }, ) ), - "delivery_methods_supported": [ - DeliveryMethods.RISC_PUSH, - ], + "verification_endpoint": self.request.build_absolute_uri( + reverse( + "authentik_providers_ssf:stream-verify", + kwargs={ + "application_slug": application.slug, + }, + ) + ), + "status_endpoint": self.request.build_absolute_uri( + reverse( + "authentik_providers_ssf:stream-status", + kwargs={ + "application_slug": application.slug, + }, + ) + ), + "delivery_methods_supported": [DeliveryMethods.RISC_PUSH, DeliveryMethods.RFC_PUSH], "authorization_schemes": [{"spec_urn": "urn:ietf:rfc:6749"}], } return JsonResponse(data) diff --git a/authentik/enterprise/providers/ssf/views/stream.py b/authentik/enterprise/providers/ssf/views/stream.py index a4ea3f2ca7..d143568847 100644 --- a/authentik/enterprise/providers/ssf/views/stream.py +++ b/authentik/enterprise/providers/ssf/views/stream.py @@ -1,4 +1,6 @@ -from django.http import HttpRequest +from uuid import uuid4 + +from django.http import Http404, HttpRequest from django.urls import reverse from rest_framework.exceptions import PermissionDenied, ValidationError from rest_framework.fields import CharField, ChoiceField, ListField, SerializerMethodField @@ -13,9 +15,10 @@ from authentik.enterprise.providers.ssf.models import ( EventTypes, SSFProvider, Stream, + StreamStatus, ) from authentik.enterprise.providers.ssf.tasks import send_ssf_events -from authentik.enterprise.providers.ssf.views.base import SSFView +from authentik.enterprise.providers.ssf.views.base import SSFStreamView LOGGER = get_logger() @@ -23,6 +26,7 @@ LOGGER = get_logger() class StreamDeliverySerializer(PassiveSerializer): method = ChoiceField(choices=[(x.value, x.value) for x in DeliveryMethods]) endpoint_url = CharField(required=False) + authorization_header = CharField(required=False) def validate_method(self, method: DeliveryMethods): """Currently only push is supported""" @@ -31,7 +35,7 @@ class StreamDeliverySerializer(PassiveSerializer): return method def validate(self, attrs: dict) -> dict: - if attrs["method"] == DeliveryMethods.RISC_PUSH: + if attrs.get("method") in [DeliveryMethods.RISC_PUSH, DeliveryMethods.RFC_PUSH]: if not attrs.get("endpoint_url"): raise ValidationError("Endpoint URL is required when using push.") return attrs @@ -42,8 +46,8 @@ class StreamSerializer(ModelSerializer): events_requested = ListField( child=ChoiceField(choices=[(x.value, x.value) for x in EventTypes]) ) - format = CharField() - aud = ListField(child=CharField()) + format = CharField(default="iss_sub") + aud = ListField(child=CharField(), allow_empty=True, default=list) def create(self, validated_data): provider: SSFProvider = validated_data["provider"] @@ -58,15 +62,19 @@ class StreamSerializer(ModelSerializer): ) # Ensure that streams always get SET verification events sent to them validated_data["events_requested"].append(EventTypes.SET_VERIFICATION) + stream_id = uuid4() + default_aud = f"goauthentik.io/providers/ssf/{str(stream_id)}" return super().create( { "delivery_method": validated_data["delivery"]["method"], "endpoint_url": validated_data["delivery"].get("endpoint_url"), + "authorization_header": validated_data["delivery"].get("authorization_header"), "format": validated_data["format"], "provider": validated_data["provider"], "events_requested": validated_data["events_requested"], - "aud": validated_data["aud"], + "aud": validated_data["aud"] or [default_aud], "iss": iss, + "pk": stream_id, } ) @@ -98,10 +106,21 @@ class StreamResponseSerializer(PassiveSerializer): } def get_events_supported(self, instance: Stream) -> list[str]: - return [x.value for x in EventTypes] + return [ + EventTypes.CAEP_SESSION_REVOKED, + EventTypes.CAEP_CREDENTIAL_CHANGE, + EventTypes.SET_VERIFICATION, + ] -class StreamView(SSFView): +class StreamView(SSFStreamView): + + def get(self, request: Request, *args, **kwargs): + stream = self.get_object() + return Response( + StreamResponseSerializer(instance=stream, context={"request": request}).data + ) + @validate(StreamSerializer) def post(self, request: Request, *args, body: StreamSerializer, **kwargs) -> Response: if not request.user.has_perm("authentik_providers_ssf.add_stream", self.provider): @@ -109,21 +128,88 @@ class StreamView(SSFView): "User does not have permission to create stream for this provider." ) instance: Stream = body.save(provider=self.provider) + + LOGGER.info("Sending verification event", stream=instance) send_ssf_events( EventTypes.SET_VERIFICATION, - { - "state": None, - }, + {}, stream_filter={"pk": instance.uuid}, + request=request, sub_id={"format": "opaque", "id": str(instance.uuid)}, ) response = StreamResponseSerializer(instance=instance, context={"request": request}).data return Response(response, status=201) + def patch(self, request: Request, *args, **kwargs) -> Response: + stream = self.get_object() + serializer = StreamSerializer(stream, data=request.data, partial=True) + serializer.is_valid(raise_exception=True) + serializer.save() + response = StreamResponseSerializer( + instance=serializer.instance, context={"request": request} + ).data + return Response(response, status=200) + + def put(self, request: Request, *args, **kwargs) -> Response: + stream = self.get_object() + serializer = StreamSerializer(stream, data=request.data) + serializer.is_valid(raise_exception=True) + serializer.save() + response = StreamResponseSerializer( + instance=serializer.instance, context={"request": request} + ).data + return Response(response, status=200) + def delete(self, request: Request, *args, **kwargs) -> Response: - streams = Stream.objects.filter(provider=self.provider) - # Technically this parameter is required by the spec... - if "stream_id" in request.query_params: - streams = streams.filter(stream_id=request.query_params["stream_id"]) - streams.delete() + stream = self.get_object() + if stream.status == StreamStatus.DISABLED_DELETED: + raise Http404 + stream.status = StreamStatus.DISABLED_DELETED + stream.save() return Response(status=204) + + +class StreamVerifyView(SSFStreamView): + + def post(self, request: Request, *args, **kwargs): + stream = self.get_object() + state = request.data.get("state", None) + send_ssf_events( + EventTypes.SET_VERIFICATION, + { + "state": state, + }, + stream_filter={"pk": stream.uuid}, + request=request, + sub_id={"format": "opaque", "id": str(stream.uuid)}, + ) + return Response(status=204) + + +class StreamStatusView(SSFStreamView): + + class StreamStatusSerializer(PassiveSerializer): + stream_id = CharField() + status = ChoiceField(choices=StreamStatus.choices) + + def get(self, request: Request, *args, **kwargs): + stream = self.get_object() + return Response( + { + "stream_id": str(stream.pk), + "status": str(stream.status), + } + ) + + def post(self, request: Request, *args, **kwargs): + stream = self.get_object() + serializer = self.StreamStatusSerializer(stream, data=request.data) + serializer.is_valid(raise_exception=True) + stream.status = serializer.validated_data["status"] + stream.save() + return Response( + { + "stream_id": str(stream.pk), + "status": str(stream.status), + } + ) diff --git a/authentik/enterprise/providers/ws_federation/processors/sign_in.py b/authentik/enterprise/providers/ws_federation/processors/sign_in.py index d9388e0191..7c4d310c02 100644 --- a/authentik/enterprise/providers/ws_federation/processors/sign_in.py +++ b/authentik/enterprise/providers/ws_federation/processors/sign_in.py @@ -1,4 +1,5 @@ from dataclasses import dataclass +from urllib.parse import urlparse from django.http import HttpRequest from django.shortcuts import get_object_or_404 @@ -55,7 +56,9 @@ class SignInRequest: _, provider = req.get_app_provider() if not req.wreply: req.wreply = provider.acs_url - if not req.wreply.startswith(provider.acs_url): + reply = urlparse(req.wreply) + configured = urlparse(provider.acs_url) + if not (reply[:2] == configured[:2] and reply.path.startswith(configured.path)): raise ValueError("Invalid wreply") return req diff --git a/authentik/enterprise/providers/ws_federation/processors/sign_out.py b/authentik/enterprise/providers/ws_federation/processors/sign_out.py index 97514b1a5b..1446627f69 100644 --- a/authentik/enterprise/providers/ws_federation/processors/sign_out.py +++ b/authentik/enterprise/providers/ws_federation/processors/sign_out.py @@ -1,4 +1,5 @@ from dataclasses import dataclass +from urllib.parse import urlparse from django.http import HttpRequest from django.shortcuts import get_object_or_404 @@ -32,7 +33,9 @@ class SignOutRequest: _, provider = req.get_app_provider() if not req.wreply: req.wreply = provider.acs_url - if not req.wreply.startswith(provider.acs_url): + reply = urlparse(req.wreply) + configured = urlparse(provider.acs_url) + if not (reply[:2] == configured[:2] and reply.path.startswith(configured.path)): raise ValueError("Invalid wreply") return req diff --git a/authentik/enterprise/providers/ws_federation/tests/test_sign_in.py b/authentik/enterprise/providers/ws_federation/tests/test_sign_in.py index 803a9717dd..066e3135f7 100644 --- a/authentik/enterprise/providers/ws_federation/tests/test_sign_in.py +++ b/authentik/enterprise/providers/ws_federation/tests/test_sign_in.py @@ -27,12 +27,27 @@ class TestWSFedSignIn(TestCase): name=generate_id(), authorization_flow=self.flow, signing_kp=self.cert, + acs_url="https://t.goauthentik.io", + audience="foo", ) self.app = Application.objects.create( name=generate_id(), slug=generate_id(), provider=self.provider ) self.factory = RequestFactory() + def test_wreply(self): + request = self.factory.get( + "/?wreply=https://t.goauthentik.io/foo&wa=wsignin1.0&wtrealm=foo", + user=get_anonymous_user(), + ) + SignInRequest.parse(request) + with self.assertRaises(ValueError): + request = self.factory.get( + "/?wreply=https://t.goauthentik.io.invalid.com&wa=wsignin1.0&wtrealm=foo", + user=get_anonymous_user(), + ) + SignInRequest.parse(request) + def test_token_gen(self): request = self.factory.get("/", user=get_anonymous_user()) proc = SignInProcessor( diff --git a/authentik/enterprise/search/apps.py b/authentik/enterprise/search/apps.py deleted file mode 100644 index 0fc58b0b86..0000000000 --- a/authentik/enterprise/search/apps.py +++ /dev/null @@ -1,12 +0,0 @@ -"""Enterprise app config""" - -from authentik.enterprise.apps import EnterpriseConfig - - -class AuthentikEnterpriseSearchConfig(EnterpriseConfig): - """Enterprise app config""" - - name = "authentik.enterprise.search" - label = "authentik_search" - verbose_name = "authentik Enterprise.Search" - default = True diff --git a/authentik/enterprise/search/pagination.py b/authentik/enterprise/search/pagination.py deleted file mode 100644 index ab5015b550..0000000000 --- a/authentik/enterprise/search/pagination.py +++ /dev/null @@ -1,51 +0,0 @@ -from rest_framework.response import Response - -from authentik.api.pagination import Pagination -from authentik.enterprise.search.ql import AUTOCOMPLETE_SCHEMA, QLSearch - - -class AutocompletePagination(Pagination): - - def paginate_queryset(self, queryset, request, view=None): - self.view = view - return super().paginate_queryset(queryset, request, view) - - def get_autocomplete(self): - schema = QLSearch().get_schema(self.request, self.view) - introspections = {} - if hasattr(self.view, "get_ql_fields"): - from authentik.enterprise.search.schema import AKQLSchemaSerializer - - introspections = AKQLSchemaSerializer().serialize( - schema(self.page.paginator.object_list.model) - ) - return introspections - - def get_paginated_response(self, data): - previous_page_number = 0 - if self.page.has_previous(): - previous_page_number = self.page.previous_page_number() - next_page_number = 0 - if self.page.has_next(): - next_page_number = self.page.next_page_number() - return Response( - { - "pagination": { - "next": next_page_number, - "previous": previous_page_number, - "count": self.page.paginator.count, - "current": self.page.number, - "total_pages": self.page.paginator.num_pages, - "start_index": self.page.start_index(), - "end_index": self.page.end_index(), - }, - "results": data, - "autocomplete": self.get_autocomplete(), - } - ) - - def get_paginated_response_schema(self, schema): - final_schema = super().get_paginated_response_schema(schema) - final_schema["properties"]["autocomplete"] = AUTOCOMPLETE_SCHEMA.ref - final_schema["required"].append("autocomplete") - return final_schema diff --git a/authentik/enterprise/search/settings.py b/authentik/enterprise/search/settings.py deleted file mode 100644 index 5fc821ca2c..0000000000 --- a/authentik/enterprise/search/settings.py +++ /dev/null @@ -1,20 +0,0 @@ -SPECTACULAR_SETTINGS = { - "POSTPROCESSING_HOOKS": [ - "authentik.api.schema.postprocess_schema_register", - "authentik.api.schema.postprocess_schema_responses", - "authentik.api.schema.postprocess_schema_query_params", - "authentik.api.schema.postprocess_schema_remove_unused", - "authentik.enterprise.search.schema.postprocess_schema_search_autocomplete", - "drf_spectacular.hooks.postprocess_schema_enums", - ], -} - -REST_FRAMEWORK = { - "DEFAULT_PAGINATION_CLASS": "authentik.enterprise.search.pagination.AutocompletePagination", - "DEFAULT_FILTER_BACKENDS": [ - "authentik.enterprise.search.ql.QLSearch", - "authentik.rbac.filters.ObjectFilter", - "django_filters.rest_framework.DjangoFilterBackend", - "rest_framework.filters.OrderingFilter", - ], -} diff --git a/authentik/enterprise/settings.py b/authentik/enterprise/settings.py index 849cb43aa8..d6cc407a5d 100644 --- a/authentik/enterprise/settings.py +++ b/authentik/enterprise/settings.py @@ -14,7 +14,7 @@ TENANT_APPS = [ "authentik.enterprise.providers.ssf", "authentik.enterprise.providers.ws_federation", "authentik.enterprise.reports", - "authentik.enterprise.search", + "authentik.enterprise.stages.account_lockdown", "authentik.enterprise.stages.authenticator_endpoint_gdtc", "authentik.enterprise.stages.mtls", "authentik.enterprise.stages.source", diff --git a/authentik/enterprise/stages/account_lockdown/__init__.py b/authentik/enterprise/stages/account_lockdown/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/authentik/enterprise/stages/account_lockdown/api.py b/authentik/enterprise/stages/account_lockdown/api.py new file mode 100644 index 0000000000..d7f5afd00d --- /dev/null +++ b/authentik/enterprise/stages/account_lockdown/api.py @@ -0,0 +1,141 @@ +"""Account Lockdown Stage API Views""" + +from django.utils.translation import gettext as _ +from drf_spectacular.utils import OpenApiExample, OpenApiResponse, extend_schema +from rest_framework.decorators import action +from rest_framework.exceptions import ValidationError +from rest_framework.permissions import IsAuthenticated +from rest_framework.request import Request +from rest_framework.response import Response +from rest_framework.serializers import PrimaryKeyRelatedField +from rest_framework.viewsets import ModelViewSet +from structlog.stdlib import get_logger + +from authentik.api.validation import validate +from authentik.core.api.used_by import UsedByMixin +from authentik.core.api.utils import LinkSerializer, PassiveSerializer +from authentik.core.models import ( + User, +) +from authentik.enterprise.api import EnterpriseRequiredMixin, enterprise_action +from authentik.enterprise.stages.account_lockdown.models import AccountLockdownStage +from authentik.enterprise.stages.account_lockdown.stage import ( + can_lock_user, + get_lockdown_target_users, +) +from authentik.flows.api.stages import StageSerializer +from authentik.flows.exceptions import EmptyFlowException, FlowNonApplicableException +from authentik.flows.planner import PLAN_CONTEXT_PENDING_USER, FlowPlanner + +LOGGER = get_logger() + + +class AccountLockdownStageSerializer(EnterpriseRequiredMixin, StageSerializer): + """AccountLockdownStage Serializer""" + + class Meta: + model = AccountLockdownStage + fields = StageSerializer.Meta.fields + [ + "deactivate_user", + "set_unusable_password", + "delete_sessions", + "revoke_tokens", + "self_service_completion_flow", + ] + + +class AccountLockdownStageViewSet(UsedByMixin, ModelViewSet): + """AccountLockdownStage Viewset""" + + queryset = AccountLockdownStage.objects.all() + serializer_class = AccountLockdownStageSerializer + filterset_fields = "__all__" + ordering = ["name"] + search_fields = ["name"] + + +class UserAccountLockdownSerializer(PassiveSerializer): + """Choose the target account before starting the lockdown flow.""" + + user = PrimaryKeyRelatedField( + queryset=get_lockdown_target_users(), + required=False, + allow_null=True, + help_text=_("User to lock. If omitted, locks the current user (self-service)."), + ) + + +class UserAccountLockdownMixin: + """Enterprise account-lockdown API actions for UserViewSet.""" + + def _create_lockdown_flow_url(self, request: Request, user: User) -> str: + """Create a flow URL for account lockdown. + + The request body selects the target before the flow starts. The API + pre-plans the lockdown flow with the target as the pending user, so the + account lockdown stage can use the normal flow context. + """ + flow = request._request.brand.flow_lockdown + if flow is None: + raise ValidationError({"non_field_errors": [_("No lockdown flow configured.")]}) + planner = FlowPlanner(flow) + planner.use_cache = False + try: + plan = planner.plan(request._request, {PLAN_CONTEXT_PENDING_USER: user}) + except EmptyFlowException, FlowNonApplicableException: + raise ValidationError( + {"non_field_errors": [_("Lockdown flow is not applicable.")]} + ) from None + return plan.to_redirect(request._request, flow).url + + @extend_schema( + description=_("Choose the target account, then return a flow link."), + request=UserAccountLockdownSerializer, + responses={ + "200": OpenApiResponse( + response=LinkSerializer, + examples=[ + OpenApiExample( + "Lockdown flow URL", + value={ + "link": "https://example.invalid/if/flow/default-account-lockdown/", + }, + response_only=True, + status_codes=["200"], + ) + ], + ), + "400": OpenApiResponse( + description=_("No lockdown flow configured or the flow is not applicable") + ), + "403": OpenApiResponse( + description=_("Permission denied (when targeting another user)") + ), + }, + ) + @action( + detail=False, + methods=["POST"], + permission_classes=[IsAuthenticated], + url_path="account_lockdown", + ) + @validate(UserAccountLockdownSerializer) + @enterprise_action + def account_lockdown(self, request: Request, body: UserAccountLockdownSerializer) -> Response: + """Trigger account lockdown for a user. + + If no user is specified, locks the current user (self-service). + When targeting another user, admin permissions are required. + + Returns a flow link for the frontend to follow. The flow is pre-planned + with the target user as pending user for the lockdown stage. + """ + user = body.validated_data.get("user") or request.user + + if not can_lock_user(request.user, user): + LOGGER.debug("Permission denied for account lockdown", user=request.user) + self.permission_denied(request) + + flow_url = self._create_lockdown_flow_url(request, user) + LOGGER.debug("Returning lockdown flow URL", flow_url=flow_url, user=user.username) + return Response({"link": flow_url}) diff --git a/authentik/enterprise/stages/account_lockdown/apps.py b/authentik/enterprise/stages/account_lockdown/apps.py new file mode 100644 index 0000000000..c3060cc5cf --- /dev/null +++ b/authentik/enterprise/stages/account_lockdown/apps.py @@ -0,0 +1,12 @@ +"""authentik account lockdown stage app config""" + +from authentik.enterprise.apps import EnterpriseConfig + + +class AuthentikEnterpriseStageAccountLockdownConfig(EnterpriseConfig): + """authentik account lockdown stage config""" + + name = "authentik.enterprise.stages.account_lockdown" + label = "authentik_stages_account_lockdown" + verbose_name = "authentik Enterprise.Stages.Account Lockdown" + default = True diff --git a/authentik/enterprise/stages/account_lockdown/migrations/0001_initial.py b/authentik/enterprise/stages/account_lockdown/migrations/0001_initial.py new file mode 100644 index 0000000000..390af91557 --- /dev/null +++ b/authentik/enterprise/stages/account_lockdown/migrations/0001_initial.py @@ -0,0 +1,74 @@ +# Generated by Django 5.2.13 on 2026-04-19 21:56 + +import django.db.models.deletion +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ("authentik_flows", "0031_alter_flow_layout"), + ] + + operations = [ + migrations.CreateModel( + name="AccountLockdownStage", + fields=[ + ( + "stage_ptr", + models.OneToOneField( + auto_created=True, + on_delete=django.db.models.deletion.CASCADE, + parent_link=True, + primary_key=True, + serialize=False, + to="authentik_flows.stage", + ), + ), + ( + "deactivate_user", + models.BooleanField( + default=True, + help_text="Deactivate the user account (set is_active to False)", + ), + ), + ( + "set_unusable_password", + models.BooleanField( + default=True, help_text="Set an unusable password for the user" + ), + ), + ( + "delete_sessions", + models.BooleanField( + default=True, help_text="Delete all active sessions for the user" + ), + ), + ( + "revoke_tokens", + models.BooleanField( + default=True, + help_text="Revoke all tokens for the user (API, app password, recovery, verification, OAuth)", + ), + ), + ( + "self_service_completion_flow", + models.ForeignKey( + blank=True, + help_text="Flow to redirect users to after self-service lockdown. This flow should not require authentication since the user's session is deleted.", + null=True, + on_delete=django.db.models.deletion.SET_NULL, + related_name="account_lockdown_stages", + to="authentik_flows.flow", + ), + ), + ], + options={ + "verbose_name": "Account Lockdown Stage", + "verbose_name_plural": "Account Lockdown Stages", + }, + bases=("authentik_flows.stage",), + ), + ] diff --git a/authentik/enterprise/stages/account_lockdown/migrations/__init__.py b/authentik/enterprise/stages/account_lockdown/migrations/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/authentik/enterprise/stages/account_lockdown/models.py b/authentik/enterprise/stages/account_lockdown/models.py new file mode 100644 index 0000000000..3da03ed851 --- /dev/null +++ b/authentik/enterprise/stages/account_lockdown/models.py @@ -0,0 +1,62 @@ +"""Account lockdown stage models""" + +from django.db import models +from django.utils.translation import gettext_lazy as _ +from django.views import View +from rest_framework.serializers import BaseSerializer + +from authentik.flows.models import Stage + + +class AccountLockdownStage(Stage): + """Lock down a target user account.""" + + deactivate_user = models.BooleanField( + default=True, + help_text=_("Deactivate the user account (set is_active to False)"), + ) + set_unusable_password = models.BooleanField( + default=True, + help_text=_("Set an unusable password for the user"), + ) + delete_sessions = models.BooleanField( + default=True, + help_text=_("Delete all active sessions for the user"), + ) + revoke_tokens = models.BooleanField( + default=True, + help_text=_( + "Revoke all tokens for the user (API, app password, recovery, verification, OAuth)" + ), + ) + self_service_completion_flow = models.ForeignKey( + "authentik_flows.Flow", + on_delete=models.SET_NULL, + null=True, + blank=True, + related_name="account_lockdown_stages", + help_text=_( + "Flow to redirect users to after self-service lockdown. " + "This flow should not require authentication since the user's session is deleted." + ), + ) + + @property + def serializer(self) -> type[BaseSerializer]: + from authentik.enterprise.stages.account_lockdown.api import AccountLockdownStageSerializer + + return AccountLockdownStageSerializer + + @property + def view(self) -> type[View]: + from authentik.enterprise.stages.account_lockdown.stage import AccountLockdownStageView + + return AccountLockdownStageView + + @property + def component(self) -> str: + return "ak-stage-account-lockdown-form" + + class Meta: + verbose_name = _("Account Lockdown Stage") + verbose_name_plural = _("Account Lockdown Stages") diff --git a/authentik/enterprise/stages/account_lockdown/stage.py b/authentik/enterprise/stages/account_lockdown/stage.py new file mode 100644 index 0000000000..282d2cfec6 --- /dev/null +++ b/authentik/enterprise/stages/account_lockdown/stage.py @@ -0,0 +1,345 @@ +"""Account lockdown stage logic""" + +from django.apps import apps +from django.core.exceptions import FieldDoesNotExist +from django.db.models import Model, QuerySet +from django.db.models.query_utils import Q +from django.db.transaction import atomic +from django.http import HttpRequest, HttpResponse, HttpResponseRedirect +from django.urls import reverse +from django.utils.translation import gettext_lazy as _ +from dramatiq.actor import Actor +from dramatiq.composition import group +from dramatiq.results.errors import ResultTimeout + +from authentik.core.models import ( + AuthenticatedSession, + ExpiringModel, + Session, + Token, + User, + UserTypes, +) +from authentik.enterprise.stages.account_lockdown.models import AccountLockdownStage +from authentik.events.models import Event, EventAction +from authentik.flows.stage import StageView +from authentik.lib.sync.outgoing.models import OutgoingSyncProvider +from authentik.lib.sync.outgoing.signals import sync_outgoing_inhibit_dispatch +from authentik.lib.utils.reflection import class_to_path +from authentik.lib.utils.time import timedelta_from_string +from authentik.stages.prompt.stage import PLAN_CONTEXT_PROMPT + +PLAN_CONTEXT_LOCKDOWN_REASON = "lockdown_reason" +LOCKDOWN_EVENT_ACTION_ID = "account_lockdown" + +TARGET_REQUIRED_MESSAGE = _("No target user specified for account lockdown") +PERMISSION_DENIED_MESSAGE = _("You do not have permission to lock down this account.") +ACCOUNT_LOCKDOWN_FAILED_MESSAGE = _("Account lockdown failed for this account.") +SELF_SERVICE_COMPLETION_FLOW_REQUIRED_MESSAGE = _( + "Self-service account lockdown requires a completion flow." +) + + +def get_lockdown_target_users() -> QuerySet[User]: + """Return users that can be targeted by account lockdown.""" + return User.objects.exclude_anonymous().exclude(type=UserTypes.INTERNAL_SERVICE_ACCOUNT) + + +def _get_model_field(model: type[Model], field_name: str): + """Get a model field by name, if present.""" + try: + return model._meta.get_field(field_name) + except FieldDoesNotExist: + return None + + +def _has_user_field(model: type[Model]) -> bool: + """Check if a model has a direct user foreign key.""" + field = _get_model_field(model, "user") + return bool(field and getattr(field, "remote_field", None) and field.remote_field.model is User) + + +def _has_authenticated_session_field(model: type[Model]) -> bool: + """Check if a model is linked to an authenticated session.""" + field = _get_model_field(model, "session") + return bool( + field + and getattr(field, "remote_field", None) + and field.remote_field.model is AuthenticatedSession + ) + + +def _has_provider_field(model: type[Model]) -> bool: + """Check if a model is linked to a provider.""" + return _get_model_field(model, "provider") is not None + + +def get_lockdown_token_models() -> tuple[type[Model], ...]: + """Return token, grant, and provider session models removed by account lockdown.""" + token_models: list[type[Model]] = [] + for model in apps.get_models(): + if model._meta.abstract or not issubclass(model, ExpiringModel): + continue + if model is Token: + token_models.append(model) + elif _has_user_field(model) and ( + _has_provider_field(model) or _has_authenticated_session_field(model) + ): + token_models.append(model) + elif _has_authenticated_session_field(model): + token_models.append(model) + return tuple(token_models) + + +def get_lockdown_token_queryset(model: type[Model], user: User) -> QuerySet: + """Return account lockdown artifacts for a model and user.""" + manager = model.objects.including_expired() + if _has_user_field(model): + return manager.filter(user=user) + return manager.filter(session__user=user) + + +def can_lock_user(actor, user: User) -> bool: + """Check whether the actor may lock the target user.""" + if not actor.is_authenticated: + return False + if user.pk == actor.pk: + return True + return actor.has_perm("authentik_core.change_user", user) + + +def get_outgoing_sync_tasks() -> tuple[tuple[type[OutgoingSyncProvider], Actor], ...]: + """Return outgoing sync provider types and their direct sync tasks.""" + from authentik.enterprise.providers.google_workspace.models import GoogleWorkspaceProvider + from authentik.enterprise.providers.google_workspace.tasks import google_workspace_sync_direct + from authentik.enterprise.providers.microsoft_entra.models import MicrosoftEntraProvider + from authentik.enterprise.providers.microsoft_entra.tasks import microsoft_entra_sync_direct + from authentik.providers.scim.models import SCIMProvider + from authentik.providers.scim.tasks import scim_sync_direct + + return ( + (SCIMProvider, scim_sync_direct), + (GoogleWorkspaceProvider, google_workspace_sync_direct), + (MicrosoftEntraProvider, microsoft_entra_sync_direct), + ) + + +class AccountLockdownStageView(StageView): + """Execute account lockdown actions on the target user.""" + + def is_self_service(self, request: HttpRequest, user: User) -> bool: + """Check whether the currently authenticated user is locking their own account.""" + return request.user.is_authenticated and user.pk == request.user.pk + + def get_reason(self) -> str: + """Get the lockdown reason from the plan context. + + Priority: + 1. prompt_data[PLAN_CONTEXT_LOCKDOWN_REASON] + 2. PLAN_CONTEXT_LOCKDOWN_REASON (explicitly set) + 3. Empty string as fallback + """ + prompt_data = self.executor.plan.context.get(PLAN_CONTEXT_PROMPT, {}) + if PLAN_CONTEXT_LOCKDOWN_REASON in prompt_data: + return prompt_data[PLAN_CONTEXT_LOCKDOWN_REASON] + return self.executor.plan.context.get(PLAN_CONTEXT_LOCKDOWN_REASON, "") + + def _apply_lockdown_actions(self, stage: AccountLockdownStage, user: User) -> None: + """Apply the configured account changes to the target user.""" + if stage.deactivate_user: + user.is_active = False + if stage.set_unusable_password: + user.set_unusable_password() + if stage.deactivate_user: + with sync_outgoing_inhibit_dispatch(): + user.save() + return + user.save() + + def _sync_deactivated_user_to_outgoing_providers(self, user: User) -> None: + """Synchronize a deactivated user to outgoing sync providers.""" + messages = [] + wait_timeout = 0 + model = class_to_path(User) + provider_filter = Q(backchannel_application__isnull=False) | Q(application__isnull=False) + + for provider_model, task_sync_direct in get_outgoing_sync_tasks(): + for provider in provider_model.objects.filter(provider_filter): + time_limit = int( + timedelta_from_string(provider.sync_page_timeout).total_seconds() * 1000 + ) + messages.append( + task_sync_direct.message_with_options( + args=(model, user.pk, provider.pk), + rel_obj=provider, + time_limit=time_limit, + uid=f"{provider.name}:user:{user.pk}:direct", + ) + ) + wait_timeout += time_limit + + if not messages: + return + try: + group(messages).run().wait(timeout=wait_timeout) + except ResultTimeout: + self.logger.warning( + "Timed out waiting for outgoing sync tasks; tasks remain queued", + user=user.username, + timeout=wait_timeout, + ) + + def _get_lockdown_artifact_querysets( + self, stage: AccountLockdownStage, user: User + ) -> tuple[QuerySet, ...]: + """Return the configured sessions and tokens targeted by lockdown.""" + querysets: list[QuerySet] = [] + if stage.delete_sessions: + querysets.append(Session.objects.filter(authenticatedsession__user=user)) + if stage.revoke_tokens: + querysets.extend( + get_lockdown_token_queryset(model, user) for model in get_lockdown_token_models() + ) + return tuple(querysets) + + def _delete_lockdown_artifacts(self, stage: AccountLockdownStage, user: User) -> None: + """Delete sessions and tokens selected by the lockdown configuration.""" + for queryset in self._get_lockdown_artifact_querysets(stage, user): + queryset.delete() + + def _has_lockdown_artifacts(self, stage: AccountLockdownStage, user: User) -> bool: + """Check whether there are still sessions or tokens to remove.""" + return any( + queryset.exists() for queryset in self._get_lockdown_artifact_querysets(stage, user) + ) + + def _emit_lockdown_event(self, request: HttpRequest, user: User, reason: str) -> None: + """Emit the audit event for a completed lockdown.""" + # Emit the audit event after the transaction commits. If event creation + # fails here, dispatch() would otherwise treat the whole lockdown as + # failed even though the account changes have already been committed. + try: + Event.new( + EventAction.USER_WRITE, + action_id=LOCKDOWN_EVENT_ACTION_ID, + reason=reason, + affected_user=user.username, + ).from_http(request) + except Exception as exc: # noqa: BLE001 + # Event emission should not make the lockdown itself fail. + self.logger.warning( + "Failed to emit account lockdown event", + user=user.username, + exc=exc, + ) + + def _lockdown_user( + self, + request: HttpRequest, + stage: AccountLockdownStage, + user: User, + reason: str, + ) -> None: + """Execute lockdown actions on a single user.""" + with atomic(): + user = User.objects.get(pk=user.pk) + self._apply_lockdown_actions(stage, user) + self._delete_lockdown_artifacts(stage, user) + + # These additional checks/deletes are done to prevent a timing attack that creates tokens + # with a compromised token that is simultaneously being deleted. + while self._has_lockdown_artifacts(stage, user): + with atomic(): + self._delete_lockdown_artifacts(stage, user) + + if stage.deactivate_user: + try: + self._sync_deactivated_user_to_outgoing_providers(user) + except Exception as exc: # noqa: BLE001 + # Local lockdown has already committed. Provider sync failures + # must not reopen access or mark the lockdown itself as failed. + self.logger.warning( + "Failed to sync account lockdown deactivation to outgoing providers", + user=user.username, + exc=exc, + ) + self._emit_lockdown_event(request, user, reason) + + def dispatch(self, request: HttpRequest) -> HttpResponse: + """Execute account lockdown actions.""" + self.request = request + stage: AccountLockdownStage = self.executor.current_stage + + pending_user = self.get_pending_user() + if not pending_user.is_authenticated: + self.logger.warning("No target user found for account lockdown") + return self.executor.stage_invalid(TARGET_REQUIRED_MESSAGE) + user = get_lockdown_target_users().filter(pk=pending_user.pk).first() + if user is None: + self.logger.warning("Target user is not eligible for account lockdown") + return self.executor.stage_invalid(TARGET_REQUIRED_MESSAGE) + if not can_lock_user(request.user, user): + self.logger.warning( + "Permission denied for account lockdown", + actor=getattr(request.user, "username", None), + target=user.username, + ) + return self.executor.stage_invalid(PERMISSION_DENIED_MESSAGE) + + reason = self.get_reason() + self_service = self.is_self_service(request, user) + if self_service and stage.delete_sessions and not stage.self_service_completion_flow: + self.logger.warning("No completion flow configured for self-service account lockdown") + return self.executor.stage_invalid(SELF_SERVICE_COMPLETION_FLOW_REQUIRED_MESSAGE) + + self.logger.info( + "Executing account lockdown", + user=user.username, + reason=reason, + self_service=self_service, + deactivate_user=stage.deactivate_user, + set_unusable_password=stage.set_unusable_password, + delete_sessions=stage.delete_sessions, + revoke_tokens=stage.revoke_tokens, + ) + + try: + self._lockdown_user(request, stage, user, reason) + self.logger.info("Account lockdown completed", user=user.username) + except Exception as exc: # noqa: BLE001 + # Convert unexpected lockdown errors to a flow-stage failure instead + # of leaking an exception through the flow executor. + self.logger.warning("Account lockdown failed", user=user.username, exc=exc) + return self.executor.stage_invalid(ACCOUNT_LOCKDOWN_FAILED_MESSAGE) + + if self_service: + if stage.delete_sessions: + return self._self_service_completion_response(request) + return self.executor.stage_ok() + + return self.executor.stage_ok() + + def _self_service_completion_response(self, request: HttpRequest) -> HttpResponse: + """Redirect to completion flow after self-service lockdown. + + Since all sessions are deleted, the user cannot continue in the flow. + Redirect them to an unauthenticated completion flow that shows the + lockdown message. + + We use a direct HTTP redirect instead of a challenge because the + flow executor's challenge handling may try to access the session + which we just deleted. + """ + stage: AccountLockdownStage = self.executor.current_stage + completion_flow = stage.self_service_completion_flow + if completion_flow: + # Flush the current request's session to prevent Django's session + # middleware from trying to save a deleted session + if hasattr(request, "session"): + request.session.flush() + redirect_to = reverse( + "authentik_core:if-flow", + kwargs={"flow_slug": completion_flow.slug}, + ) + return HttpResponseRedirect(redirect_to) + return self.executor.stage_invalid(SELF_SERVICE_COMPLETION_FLOW_REQUIRED_MESSAGE) diff --git a/authentik/enterprise/stages/account_lockdown/tests/__init__.py b/authentik/enterprise/stages/account_lockdown/tests/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/authentik/enterprise/stages/account_lockdown/tests/test_api.py b/authentik/enterprise/stages/account_lockdown/tests/test_api.py new file mode 100644 index 0000000000..60e3724c48 --- /dev/null +++ b/authentik/enterprise/stages/account_lockdown/tests/test_api.py @@ -0,0 +1,148 @@ +"""Test Users Account Lockdown API""" + +from json import loads +from unittest.mock import MagicMock, patch +from urllib.parse import urlparse + +from django.urls import reverse +from rest_framework.test import APITestCase + +from authentik.core.tests.utils import ( + create_test_brand, + create_test_flow, + create_test_user, +) +from authentik.enterprise.stages.account_lockdown.models import AccountLockdownStage +from authentik.flows.models import FlowDesignation, FlowStageBinding +from authentik.flows.planner import PLAN_CONTEXT_PENDING_USER +from authentik.flows.views.executor import SESSION_KEY_PLAN +from authentik.lib.generators import generate_id + +# Patch for enterprise license check +patch_license = patch( + "authentik.enterprise.models.LicenseUsageStatus.is_valid", + MagicMock(return_value=True), +) + + +@patch_license +class AccountLockdownAPITestCase(APITestCase): + """Shared helpers for account lockdown API tests.""" + + def setUp(self) -> None: + self.lockdown_flow = create_test_flow(FlowDesignation.STAGE_CONFIGURATION) + self.lockdown_stage = AccountLockdownStage.objects.create(name=generate_id()) + FlowStageBinding.objects.create( + target=self.lockdown_flow, + stage=self.lockdown_stage, + order=0, + ) + self.brand = create_test_brand() + self.brand.flow_lockdown = self.lockdown_flow + self.brand.save() + + def create_user_with_email(self): + """Create a regular user with a unique email address.""" + user = create_test_user() + user.email = f"{generate_id()}@test.com" + user.save() + return user + + def assert_redirect_targets(self, response, user): + """Assert that a response contains a pre-planned lockdown flow link for a user.""" + self.assertEqual(response.status_code, 200) + body = loads(response.content) + self.assertIn(self.lockdown_flow.slug, body["link"]) + self.assertEqual(urlparse(body["link"]).query, "") + plan = self.client.session[SESSION_KEY_PLAN] + self.assertEqual(plan.context[PLAN_CONTEXT_PENDING_USER].pk, user.pk) + + def assert_no_flow_configured(self, response): + """Assert that the API reports a missing lockdown flow.""" + self.assertEqual(response.status_code, 400) + body = loads(response.content) + self.assertIn("No lockdown flow configured", body["non_field_errors"][0]) + + +@patch_license +class TestUsersAccountLockdownAPI(AccountLockdownAPITestCase): + """Test Users Account Lockdown API""" + + def setUp(self) -> None: + super().setUp() + self.actor = create_test_user() + self.user = self.create_user_with_email() + + def test_account_lockdown_with_change_user_returns_redirect(self): + """Test that account lockdown allows users with change_user permission.""" + self.actor.assign_perms_to_managed_role("authentik_core.change_user", self.user) + self.client.force_login(self.actor) + + response = self.client.post( + reverse("authentik_api:user-account-lockdown"), + data={"user": self.user.pk}, + format="json", + ) + + self.assert_redirect_targets(response, self.user) + + def test_account_lockdown_no_flow_configured(self): + """Test account lockdown when no flow is configured""" + self.brand.flow_lockdown = None + self.brand.save() + self.actor.assign_perms_to_managed_role("authentik_core.change_user", self.user) + self.client.force_login(self.actor) + + response = self.client.post( + reverse("authentik_api:user-account-lockdown"), + data={"user": self.user.pk}, + format="json", + ) + + self.assert_no_flow_configured(response) + + def test_account_lockdown_unauthenticated(self): + """Test account lockdown requires authentication""" + response = self.client.post( + reverse("authentik_api:user-account-lockdown"), + data={"user": self.user.pk}, + format="json", + ) + + self.assertEqual(response.status_code, 403) + + def test_account_lockdown_without_change_user_denied(self): + """Test account lockdown denies users without change_user permission.""" + self.client.force_login(self.actor) + + response = self.client.post( + reverse("authentik_api:user-account-lockdown"), + data={"user": self.user.pk}, + format="json", + ) + + self.assertEqual(response.status_code, 403) + + def test_account_lockdown_self_returns_redirect(self): + """Test successful self-service account lockdown returns a direct redirect.""" + self.client.force_login(self.user) + + response = self.client.post( + reverse("authentik_api:user-account-lockdown"), + data={}, + format="json", + ) + + self.assert_redirect_targets(response, self.user) + + def test_account_lockdown_self_target_without_change_user_returns_redirect(self): + """Test self-service does not require change_user permission.""" + self.client.force_login(self.user) + + response = self.client.post( + reverse("authentik_api:user-account-lockdown"), + data={"user": self.user.pk}, + format="json", + ) + + self.assert_redirect_targets(response, self.user) diff --git a/authentik/enterprise/stages/account_lockdown/tests/test_blueprint.py b/authentik/enterprise/stages/account_lockdown/tests/test_blueprint.py new file mode 100644 index 0000000000..bd8772f9b3 --- /dev/null +++ b/authentik/enterprise/stages/account_lockdown/tests/test_blueprint.py @@ -0,0 +1,46 @@ +"""Tests for the packaged account-lockdown blueprint.""" + +from unittest.mock import patch + +from django.test import TransactionTestCase + +from authentik.blueprints.models import BlueprintInstance +from authentik.blueprints.v1.importer import Importer +from authentik.blueprints.v1.tasks import blueprints_find, check_blueprint_v1_file +from authentik.enterprise.license import LicenseKey +from authentik.flows.models import Flow + +BLUEPRINT_PATH = "example/flow-default-account-lockdown.yaml" + + +class TestAccountLockdownBlueprint(TransactionTestCase): + """Test the packaged account-lockdown blueprint behavior.""" + + def test_blueprint_is_not_auto_instantiated(self): + """Test the packaged blueprint is opt-in and skipped by discovery.""" + BlueprintInstance.objects.filter(path=BLUEPRINT_PATH).delete() + blueprint = next(item for item in blueprints_find() if item.path == BLUEPRINT_PATH) + + check_blueprint_v1_file(blueprint) + + self.assertFalse(BlueprintInstance.objects.filter(path=BLUEPRINT_PATH).exists()) + + def test_blueprint_requires_licensed_context(self): + """Test manual import only creates flows when enterprise is licensed.""" + content = BlueprintInstance(path=BLUEPRINT_PATH).retrieve() + license_key = LicenseKey("test", 253402300799, "Test license", 1000, 1000) + + with patch("authentik.enterprise.license.LicenseKey.get_total", return_value=license_key): + importer = Importer.from_string(content, {"goauthentik.io/enterprise/licensed": False}) + valid, logs = importer.validate() + self.assertTrue(valid, logs) + self.assertTrue(importer.apply()) + self.assertFalse(Flow.objects.filter(slug="default-account-lockdown").exists()) + self.assertFalse(Flow.objects.filter(slug="default-account-lockdown-complete").exists()) + + importer = Importer.from_string(content, {"goauthentik.io/enterprise/licensed": True}) + valid, logs = importer.validate() + self.assertTrue(valid, logs) + self.assertTrue(importer.apply()) + self.assertTrue(Flow.objects.filter(slug="default-account-lockdown").exists()) + self.assertTrue(Flow.objects.filter(slug="default-account-lockdown-complete").exists()) diff --git a/authentik/enterprise/stages/account_lockdown/tests/test_stage.py b/authentik/enterprise/stages/account_lockdown/tests/test_stage.py new file mode 100644 index 0000000000..9bbccddd4f --- /dev/null +++ b/authentik/enterprise/stages/account_lockdown/tests/test_stage.py @@ -0,0 +1,627 @@ +"""Account lockdown stage tests""" + +import json +from dataclasses import asdict +from threading import Event as ThreadEvent +from threading import Thread +from types import SimpleNamespace +from unittest.mock import MagicMock, patch + +from django.db import connection +from django.http import HttpResponse +from django.test import TransactionTestCase +from django.urls import reverse +from django.utils import timezone +from dramatiq.results.errors import ResultTimeout + +from authentik.core.models import AuthenticatedSession, Session, Token, TokenIntents +from authentik.core.tests.utils import ( + RequestFactory, + create_test_admin_user, + create_test_cert, + create_test_flow, + create_test_user, +) +from authentik.enterprise.stages.account_lockdown.models import AccountLockdownStage +from authentik.enterprise.stages.account_lockdown.stage import ( + LOCKDOWN_EVENT_ACTION_ID, + PLAN_CONTEXT_LOCKDOWN_REASON, + AccountLockdownStageView, + can_lock_user, +) +from authentik.events.models import Event, EventAction +from authentik.flows.markers import StageMarker +from authentik.flows.models import FlowDesignation, FlowStageBinding +from authentik.flows.planner import PLAN_CONTEXT_PENDING_USER, FlowPlan +from authentik.flows.tests import FlowTestCase +from authentik.lib.generators import generate_id +from authentik.lib.utils.reflection import class_to_path +from authentik.providers.oauth2.id_token import IDToken +from authentik.providers.oauth2.models import ( + AccessToken, + AuthorizationCode, + DeviceToken, + OAuth2Provider, + RedirectURI, + RedirectURIMatchingMode, + RefreshToken, +) +from authentik.providers.saml.models import SAMLProvider, SAMLSession +from authentik.stages.prompt.stage import PLAN_CONTEXT_PROMPT + +patch_enterprise_enabled = patch( + "authentik.enterprise.apps.AuthentikEnterpriseConfig.check_enabled", + return_value=True, +) + + +class AccountLockdownStageTestMixin: + """Shared setup helpers for account lockdown stage tests.""" + + @classmethod + def setUpClass(cls): + cls.patch_enterprise_enabled = patch_enterprise_enabled.start() + cls.patch_event_dispatch = patch("authentik.events.tasks.event_trigger_dispatch.send") + cls.patch_event_dispatch.start() + super().setUpClass() + + @classmethod + def tearDownClass(cls): + cls.patch_event_dispatch.stop() + patch_enterprise_enabled.stop() + super().tearDownClass() + + def setUp(self): + super().setUp() + self.user = create_test_admin_user() + self.target_user = create_test_admin_user() + self.flow = create_test_flow(FlowDesignation.STAGE_CONFIGURATION) + self.stage = AccountLockdownStage.objects.create( + name="lockdown", + ) + self.binding = FlowStageBinding.objects.create(target=self.flow, stage=self.stage, order=0) + self.request_factory = RequestFactory() + + def make_stage_view(self, plan: FlowPlan): + def _stage_ok(): + return HttpResponse(status=204) + + def _stage_invalid(_error_message=None): + return HttpResponse(status=400) + + return AccountLockdownStageView( + SimpleNamespace( + plan=plan, + current_stage=self.stage, + current_binding=self.binding, + flow=self.flow, + stage_ok=_stage_ok, + stage_invalid=_stage_invalid, + ) + ) + + def make_request(self, *, user=None, query=None): + return self.request_factory.post( + reverse("authentik_api:flow-executor", kwargs={"flow_slug": self.flow.slug}), + query_params=query or {}, + user=user, + ) + + def get_lockdown_event(self): + """Return the account-lockdown user-write event.""" + return Event.objects.filter( + action=EventAction.USER_WRITE, + context__action_id=LOCKDOWN_EVENT_ACTION_ID, + ).first() + + +class TestAccountLockdownStage(AccountLockdownStageTestMixin, FlowTestCase): + """Account lockdown stage tests""" + + def test_lockdown_no_target(self): + """Test lockdown stage with no pending user fails""" + plan = FlowPlan(flow_pk=self.flow.pk.hex, bindings=[self.binding], markers=[StageMarker()]) + view = self.make_stage_view(plan) + + response = view.dispatch(self.make_request()) + + self.assertEqual(response.status_code, 400) + + def test_lockdown_with_pending_user(self): + """Test lockdown stage with a pending target user.""" + self.target_user.is_active = True + self.target_user.save() + + plan = FlowPlan(flow_pk=self.flow.pk.hex, bindings=[self.binding], markers=[StageMarker()]) + plan.context[PLAN_CONTEXT_LOCKDOWN_REASON] = "Security incident" + plan.context[PLAN_CONTEXT_PENDING_USER] = self.target_user + view = self.make_stage_view(plan) + request = self.make_request(user=self.user) + + self.assertTrue(can_lock_user(request.user, self.target_user)) + response = view.dispatch(request) + + self.target_user.refresh_from_db() + self.assertFalse(self.target_user.is_active) + self.assertFalse(self.target_user.has_usable_password()) + self.assertEqual(response.status_code, 204) + + # Check event was created + event = self.get_lockdown_event() + self.assertIsNotNone(event) + self.assertEqual(event.context["action_id"], LOCKDOWN_EVENT_ACTION_ID) + self.assertEqual(event.context["reason"], "Security incident") + self.assertEqual(event.context["affected_user"], self.target_user.username) + + def test_lockdown_with_pending_user_reason(self): + """Test lockdown stage with a pending target and explicit reason.""" + self.target_user.is_active = True + self.target_user.save() + + plan = FlowPlan(flow_pk=self.flow.pk.hex, bindings=[self.binding], markers=[StageMarker()]) + plan.context[PLAN_CONTEXT_LOCKDOWN_REASON] = "Compromised account" + plan.context[PLAN_CONTEXT_PENDING_USER] = self.target_user + view = self.make_stage_view(plan) + request = self.make_request(user=self.user) + + self.assertTrue(can_lock_user(request.user, self.target_user)) + response = view.dispatch(request) + + self.target_user.refresh_from_db() + self.assertFalse(self.target_user.is_active) + self.assertEqual(response.status_code, 204) + + def test_lockdown_reason_from_prompt(self): + """Test lockdown stage reads the reason from prompt data.""" + self.target_user.is_active = True + self.target_user.save() + + plan = FlowPlan(flow_pk=self.flow.pk.hex, bindings=[self.binding], markers=[StageMarker()]) + plan.context[PLAN_CONTEXT_PROMPT] = { + PLAN_CONTEXT_LOCKDOWN_REASON: "User requested lockdown", + } + view = self.make_stage_view(plan) + request = self.make_request(user=self.user) + view._lockdown_user(request, self.stage, self.target_user, view.get_reason()) + + event = self.get_lockdown_event() + self.assertIsNotNone(event) + self.assertEqual(event.context["reason"], "User requested lockdown") + + def test_lockdown_event_failure_does_not_fail_self_service(self): + """Test lockdown still succeeds when event emission fails.""" + self.stage.delete_sessions = False + self.stage.save() + + self.target_user.is_active = True + self.target_user.save() + + plan = FlowPlan(flow_pk=self.flow.pk.hex, bindings=[self.binding], markers=[StageMarker()]) + plan.context[PLAN_CONTEXT_PENDING_USER] = self.target_user + view = self.make_stage_view(plan) + request = self.make_request(user=self.target_user) + + original_event_new = Event.new + + def _event_new_side_effect(action, *args, **kwargs): + if ( + action == EventAction.USER_WRITE + and kwargs.get("action_id") == LOCKDOWN_EVENT_ACTION_ID + ): + raise RuntimeError("simulated event failure") + return original_event_new(action, *args, **kwargs) + + with patch( + "authentik.enterprise.stages.account_lockdown.stage.Event.new", + side_effect=_event_new_side_effect, + ): + view._lockdown_user(request, self.stage, self.target_user, view.get_reason()) + + self.target_user.refresh_from_db() + self.assertFalse(self.target_user.is_active) + + def test_dispatch_records_success_when_event_emission_fails(self): + """Test dispatch still completes if event emission fails.""" + self.stage.delete_sessions = False + self.stage.save() + + self.target_user.is_active = True + self.target_user.save() + + plan = FlowPlan(flow_pk=self.flow.pk.hex, bindings=[self.binding], markers=[StageMarker()]) + plan.context[PLAN_CONTEXT_PENDING_USER] = self.target_user + view = self.make_stage_view(plan) + request = self.make_request( + user=self.target_user, + ) + + original_event_new = Event.new + + def _event_new_side_effect(action, *args, **kwargs): + if ( + action == EventAction.USER_WRITE + and kwargs.get("action_id") == LOCKDOWN_EVENT_ACTION_ID + ): + raise RuntimeError("simulated event failure") + return original_event_new(action, *args, **kwargs) + + with patch( + "authentik.enterprise.stages.account_lockdown.stage.Event.new", + side_effect=_event_new_side_effect, + ): + response = view.dispatch(request) + + self.target_user.refresh_from_db() + self.assertFalse(self.target_user.is_active) + self.assertEqual(response.status_code, 204) + + def test_lockdown_self_service_redirects_to_completion_flow(self): + """Test self-service lockdown redirects to completion flow when sessions are deleted.""" + completion_flow = create_test_flow(FlowDesignation.STAGE_CONFIGURATION) + self.stage.self_service_completion_flow = completion_flow + self.stage.save() + + self.target_user.is_active = True + self.target_user.save() + + plan = FlowPlan(flow_pk=self.flow.pk.hex, bindings=[self.binding], markers=[StageMarker()]) + view = self.make_stage_view(plan) + request = self.make_request(user=self.target_user) + view._lockdown_user(request, self.stage, self.target_user, view.get_reason()) + response = view._self_service_completion_response(request) + + self.assertEqual(response.status_code, 302) + self.assertEqual( + response.url, + reverse("authentik_core:if-flow", kwargs={"flow_slug": completion_flow.slug}), + ) + + def test_lockdown_self_service_requires_completion_flow(self): + """Test self-service lockdown fails before deleting sessions without a completion flow.""" + self.stage.self_service_completion_flow = None + self.stage.save() + + self.target_user.is_active = True + self.target_user.save() + + plan = FlowPlan(flow_pk=self.flow.pk.hex, bindings=[self.binding], markers=[StageMarker()]) + plan.context[PLAN_CONTEXT_PENDING_USER] = self.target_user + view = self.make_stage_view(plan) + request = self.make_request(user=self.target_user) + + response = view.dispatch(request) + + self.assertEqual(response.status_code, 400) + self.target_user.refresh_from_db() + self.assertTrue(self.target_user.is_active) + + def test_lockdown_denies_other_user_without_permission(self): + """Test lockdown stage rejects non-self requests without change_user permission.""" + actor = create_test_user() + + plan = FlowPlan(flow_pk=self.flow.pk.hex, bindings=[self.binding], markers=[StageMarker()]) + plan.context[PLAN_CONTEXT_PENDING_USER] = self.target_user + view = self.make_stage_view(plan) + request = self.make_request(user=actor) + + self.assertFalse(can_lock_user(request.user, self.target_user)) + response = view.dispatch(request) + self.assertEqual(response.status_code, 400) + + def test_lockdown_revokes_tokens(self): + """Test lockdown stage revokes tokens""" + Token.objects.create( + user=self.target_user, + identifier="test-token", + intent=TokenIntents.INTENT_API, + key=generate_id(), + expiring=False, + ) + self.assertEqual(Token.objects.filter(user=self.target_user).count(), 1) + + plan = FlowPlan(flow_pk=self.flow.pk.hex, bindings=[self.binding], markers=[StageMarker()]) + view = self.make_stage_view(plan) + view._lockdown_user(self.make_request(user=self.user), self.stage, self.target_user, "") + + self.assertEqual(Token.objects.filter(user=self.target_user).count(), 0) + + def test_lockdown_revokes_provider_tokens(self): + """Test lockdown stage revokes provider tokens and sessions.""" + oauth_provider = OAuth2Provider.objects.create( + name=generate_id(), + authorization_flow=create_test_flow(), + redirect_uris=[ + RedirectURI(RedirectURIMatchingMode.STRICT, "http://testserver/callback") + ], + signing_key=create_test_cert(), + ) + saml_provider = SAMLProvider.objects.create( + name=generate_id(), + authorization_flow=create_test_flow(), + acs_url="https://sp.example.com/acs", + issuer_override="https://idp.example.com", + ) + session = Session.objects.create( + session_key=generate_id(), + expires=timezone.now() + timezone.timedelta(hours=1), + last_ip="127.0.0.1", + ) + auth_session = AuthenticatedSession.objects.create( + session=session, + user=self.target_user, + ) + grant_kwargs = { + "provider": oauth_provider, + "user": self.target_user, + "auth_time": timezone.now(), + "_scope": "openid profile", + "expiring": False, + } + token_kwargs = grant_kwargs | {"_id_token": json.dumps(asdict(IDToken("foo", "bar")))} + AuthorizationCode.objects.create( + code=generate_id(), + session=auth_session, + **grant_kwargs, + ) + AccessToken.objects.create( + token=generate_id(), + session=auth_session, + **token_kwargs, + ) + RefreshToken.objects.create( + token=generate_id(), + session=auth_session, + **token_kwargs, + ) + DeviceToken.objects.create( + provider=oauth_provider, + user=self.target_user, + session=auth_session, + _scope="openid profile", + expiring=False, + ) + SAMLSession.objects.create( + provider=saml_provider, + user=self.target_user, + session=auth_session, + session_index=generate_id(), + name_id=self.target_user.email, + expires=timezone.now() + timezone.timedelta(hours=1), + expiring=True, + ) + + plan = FlowPlan(flow_pk=self.flow.pk.hex, bindings=[self.binding], markers=[StageMarker()]) + view = self.make_stage_view(plan) + view._lockdown_user(self.make_request(user=self.user), self.stage, self.target_user, "") + + self.assertEqual(AuthorizationCode.objects.filter(user=self.target_user).count(), 0) + self.assertEqual(AccessToken.objects.filter(user=self.target_user).count(), 0) + self.assertEqual(RefreshToken.objects.filter(user=self.target_user).count(), 0) + self.assertEqual(DeviceToken.objects.filter(user=self.target_user).count(), 0) + self.assertEqual(SAMLSession.objects.filter(user=self.target_user).count(), 0) + + def test_lockdown_selective_actions(self): + """Test lockdown stage with selective actions""" + self.stage.deactivate_user = True + self.stage.set_unusable_password = False + self.stage.delete_sessions = False + self.stage.revoke_tokens = False + self.stage.save() + + self.target_user.is_active = True + self.target_user.set_password("testpassword") + self.target_user.save() + + Token.objects.create( + user=self.target_user, + identifier="test-token", + intent=TokenIntents.INTENT_API, + key=generate_id(), + expiring=False, + ) + + plan = FlowPlan(flow_pk=self.flow.pk.hex, bindings=[self.binding], markers=[StageMarker()]) + view = self.make_stage_view(plan) + view._lockdown_user(self.make_request(user=self.user), self.stage, self.target_user, "") + + self.target_user.refresh_from_db() + # User should be deactivated + self.assertFalse(self.target_user.is_active) + # Password should still be usable + self.assertTrue(self.target_user.has_usable_password()) + # Token should still exist + self.assertEqual(Token.objects.filter(user=self.target_user).count(), 1) + + def test_lockdown_no_actions(self): + """Test lockdown stage with all actions disabled""" + self.stage.deactivate_user = False + self.stage.set_unusable_password = False + self.stage.delete_sessions = False + self.stage.revoke_tokens = False + self.stage.save() + + self.target_user.is_active = True + self.target_user.set_password("testpassword") + self.target_user.save() + + plan = FlowPlan(flow_pk=self.flow.pk.hex, bindings=[self.binding], markers=[StageMarker()]) + view = self.make_stage_view(plan) + view._lockdown_user(self.make_request(user=self.user), self.stage, self.target_user, "") + + self.target_user.refresh_from_db() + # User should still be active + self.assertTrue(self.target_user.is_active) + # Password should still be usable + self.assertTrue(self.target_user.has_usable_password()) + # Event should still be created + event = self.get_lockdown_event() + self.assertIsNotNone(event) + + def test_lockdown_deactivation_inhibits_signal_dispatch_until_after_commit(self): + """Test lockdown queues explicit outgoing syncs after the deactivation transaction.""" + plan = FlowPlan(flow_pk=self.flow.pk.hex, bindings=[self.binding], markers=[StageMarker()]) + view = self.make_stage_view(plan) + + with ( + patch( + "authentik.enterprise.stages.account_lockdown.stage.sync_outgoing_inhibit_dispatch" + ) as inhibit, + patch.object(view, "_sync_deactivated_user_to_outgoing_providers") as sync_outgoing, + ): + view._lockdown_user(self.make_request(user=self.user), self.stage, self.target_user, "") + + inhibit.assert_called_once() + sync_outgoing.assert_called_once() + synced_user = sync_outgoing.call_args.args[0] + self.assertEqual(synced_user.pk, self.target_user.pk) + self.assertFalse(synced_user.is_active) + + def test_lockdown_waits_for_direct_outgoing_provider_syncs(self): + """Test direct outgoing sync tasks are enqueued and waited on.""" + plan = FlowPlan(flow_pk=self.flow.pk.hex, bindings=[self.binding], markers=[StageMarker()]) + view = self.make_stage_view(plan) + provider = SimpleNamespace(name="outgoing", pk=1, sync_page_timeout="seconds=5") + task_sync_direct = MagicMock() + task_sync_direct.message_with_options.return_value = "direct-message" + provider_model = SimpleNamespace( + objects=SimpleNamespace(filter=MagicMock(return_value=[provider])) + ) + task_group = MagicMock() + + with ( + patch( + "authentik.enterprise.stages.account_lockdown.stage.get_outgoing_sync_tasks", + return_value=((provider_model, task_sync_direct),), + ), + patch( + "authentik.enterprise.stages.account_lockdown.stage.group", + return_value=task_group, + ) as task_group_cls, + ): + view._sync_deactivated_user_to_outgoing_providers(self.target_user) + + task_sync_direct.message_with_options.assert_called_once_with( + args=(class_to_path(type(self.target_user)), self.target_user.pk, provider.pk), + rel_obj=provider, + time_limit=5000, + uid=f"{provider.name}:user:{self.target_user.pk}:direct", + ) + task_group_cls.assert_called_once_with(["direct-message"]) + task_group.run.return_value.wait.assert_called_once_with(timeout=5000) + + def test_lockdown_outgoing_provider_sync_timeout_leaves_tasks_running(self): + """Test timeout while waiting for direct outgoing syncs does not fail lockdown.""" + plan = FlowPlan(flow_pk=self.flow.pk.hex, bindings=[self.binding], markers=[StageMarker()]) + view = self.make_stage_view(plan) + provider = SimpleNamespace(name="outgoing", pk=1, sync_page_timeout="seconds=5") + task_sync_direct = MagicMock() + task_sync_direct.message_with_options.return_value = "direct-message" + provider_model = SimpleNamespace( + objects=SimpleNamespace(filter=MagicMock(return_value=[provider])) + ) + task_group = MagicMock() + task_group.run.return_value.wait.side_effect = ResultTimeout("timed out") + + with ( + patch( + "authentik.enterprise.stages.account_lockdown.stage.get_outgoing_sync_tasks", + return_value=((provider_model, task_sync_direct),), + ), + patch( + "authentik.enterprise.stages.account_lockdown.stage.group", + return_value=task_group, + ), + ): + view._sync_deactivated_user_to_outgoing_providers(self.target_user) + + task_group.run.assert_called_once_with() + task_group.run.return_value.wait.assert_called_once_with(timeout=5000) + + def test_lockdown_outgoing_provider_sync_failure_does_not_fail_lockdown(self): + """Test completed local lockdown still emits an event if outgoing sync fails.""" + plan = FlowPlan(flow_pk=self.flow.pk.hex, bindings=[self.binding], markers=[StageMarker()]) + view = self.make_stage_view(plan) + + with patch.object( + view, + "_sync_deactivated_user_to_outgoing_providers", + side_effect=ValueError("sync failed"), + ): + view._lockdown_user(self.make_request(user=self.user), self.stage, self.target_user, "") + + self.target_user.refresh_from_db() + self.assertFalse(self.target_user.is_active) + event = self.get_lockdown_event() + self.assertIsNotNone(event) + + +class TestAccountLockdownStageConcurrency(AccountLockdownStageTestMixin, TransactionTestCase): + """Account lockdown concurrency tests.""" + + def test_lockdown_retries_when_another_transaction_recreates_a_token(self): + """Lockdown should remove a token recreated before the retry check runs.""" + Token.objects.create( + user=self.target_user, + identifier=f"initial-token-{generate_id()}", + intent=TokenIntents.INTENT_API, + key=generate_id(), + expiring=False, + ) + + plan = FlowPlan(flow_pk=self.flow.pk.hex, bindings=[self.binding], markers=[StageMarker()]) + view = self.make_stage_view(plan) + original_has_artifacts = view._has_lockdown_artifacts + target_user = self.target_user + thread_ready = ThreadEvent() + start_create = ThreadEvent() + thread_done = ThreadEvent() + thread_errors = [] + + class TokenCreatorThread(Thread): + __test__ = False + + def run(self): + try: + thread_ready.set() + if not start_create.wait(timeout=5): + thread_errors.append("timed out waiting to recreate token") + return + Token.objects.create( + user=target_user, + identifier=f"concurrent-token-{generate_id()}", + intent=TokenIntents.INTENT_API, + key=generate_id(), + expiring=False, + ) + except Exception as exc: # noqa: BLE001 + thread_errors.append(exc) + finally: + thread_done.set() + connection.close() + + def has_artifacts_after_concurrent_create(stage, user): + if not start_create.is_set(): + start_create.set() + self.assertTrue( + thread_done.wait(timeout=30), + ( + "Concurrent token creation did not complete " + f"before retry check: {thread_errors}" + ), + ) + return original_has_artifacts(stage, user) + + creator = TokenCreatorThread() + with patch.object( + view, "_has_lockdown_artifacts", side_effect=has_artifacts_after_concurrent_create + ): + creator.start() + self.assertTrue( + thread_ready.wait(timeout=5), + "Concurrent token creation thread did not start", + ) + view._lockdown_user(self.make_request(user=self.user), self.stage, self.target_user, "") + creator.join() + + self.assertEqual(thread_errors, []) + self.assertEqual(Token.objects.filter(user=self.target_user).count(), 0) diff --git a/authentik/enterprise/stages/account_lockdown/urls.py b/authentik/enterprise/stages/account_lockdown/urls.py new file mode 100644 index 0000000000..6c656c1ef3 --- /dev/null +++ b/authentik/enterprise/stages/account_lockdown/urls.py @@ -0,0 +1,5 @@ +"""API URLs""" + +from authentik.enterprise.stages.account_lockdown.api import AccountLockdownStageViewSet + +api_urlpatterns = [("stages/account_lockdown", AccountLockdownStageViewSet)] diff --git a/authentik/enterprise/stages/mtls/stage.py b/authentik/enterprise/stages/mtls/stage.py index 421db4e2d6..c28b1e04eb 100644 --- a/authentik/enterprise/stages/mtls/stage.py +++ b/authentik/enterprise/stages/mtls/stage.py @@ -15,6 +15,7 @@ from cryptography.x509 import ( ) from cryptography.x509.verification import PolicyBuilder, Store, VerificationError from django.utils.translation import gettext_lazy as _ +from rest_framework.exceptions import PermissionDenied from authentik.brands.models import Brand from authentik.core.models import User @@ -25,7 +26,6 @@ from authentik.enterprise.stages.mtls.models import ( MutualTLSStage, UserAttributes, ) -from authentik.flows.challenge import AccessDeniedChallenge from authentik.flows.models import FlowDesignation from authentik.flows.planner import PLAN_CONTEXT_PENDING_USER from authentik.flows.stage import ChallengeStageView @@ -102,7 +102,7 @@ class MTLSStageView(ChallengeStageView): return [] certs = [] for cert in ftcc_raw.split(","): - certs.extend(self.__parse_single_cert(cert, ParseOptions.UNQUOTE, ParseOptions.FORMAT)) + certs.extend(self.__parse_single_cert(cert, ParseOptions.FORMAT)) return certs def _parse_cert_outpost(self) -> list[Certificate]: @@ -217,8 +217,7 @@ class MTLSStageView(ChallengeStageView): return None return str(_cert_attr[0]) - def dispatch(self, request, *args, **kwargs): - stage: MutualTLSStage = self.executor.current_stage + def get_cert(self, mode: StageMode): certs = [ *self._parse_cert_xfcc(), *self._parse_cert_nginx(), @@ -228,21 +227,26 @@ class MTLSStageView(ChallengeStageView): authorities = self.get_authorities() if not authorities: self.logger.warning("No Certificate authority found") - if stage.mode == StageMode.OPTIONAL: - return self.executor.stage_ok() - if stage.mode == StageMode.REQUIRED: - return super().dispatch(request, *args, **kwargs) + if mode == StageMode.OPTIONAL: + return None + if mode == StageMode.REQUIRED: + raise PermissionDenied("Unknown error") cert = self.validate_cert(authorities, certs) - if not cert and stage.mode == StageMode.REQUIRED: + if not cert and mode == StageMode.REQUIRED: self.logger.warning("Client certificate required but no certificates given") - return super().dispatch( - request, - *args, - error_message=_("Certificate required but no certificate was given."), - **kwargs, - ) - if not cert and stage.mode == StageMode.OPTIONAL: + raise PermissionDenied(str(_("Certificate required but no certificate was given."))) + if not cert and mode == StageMode.OPTIONAL: self.logger.info("No certificate given, continuing") + return None + return cert + + def dispatch(self, request, *args, **kwargs): + stage: MutualTLSStage = self.executor.current_stage + try: + cert = self.get_cert(stage.mode) + except PermissionDenied as exc: + return self.executor.stage_invalid(error_message=exc.detail) + if not cert: return self.executor.stage_ok() self.logger.debug("Received certificate", cert=fingerprint_sha256(cert)) existing_user = self.check_if_user(cert) @@ -251,15 +255,5 @@ class MTLSStageView(ChallengeStageView): elif existing_user: self.auth_user(existing_user, cert) else: - return super().dispatch( - request, *args, error_message=_("No user found for certificate."), **kwargs - ) + return self.executor.stage_invalid(_("No user found for certificate.")) return self.executor.stage_ok() - - def get_challenge(self, *args, error_message: str | None = None, **kwargs): - return AccessDeniedChallenge( - data={ - "component": "ak-stage-access-denied", - "error_message": str(error_message or "Unknown error"), - } - ) diff --git a/authentik/enterprise/stages/mtls/tests/test_stage.py b/authentik/enterprise/stages/mtls/tests/test_stage.py index 615f544be4..78cba887f8 100644 --- a/authentik/enterprise/stages/mtls/tests/test_stage.py +++ b/authentik/enterprise/stages/mtls/tests/test_stage.py @@ -53,7 +53,7 @@ class MTLSStageTests(FlowTestCase): def _format_traefik(self, cert: str | None = None): cert = cert if cert else self.client_cert - return quote_plus(cert.replace(PEM_HEADER, "").replace(PEM_FOOTER, "").replace("\n", "")) + return cert.replace(PEM_HEADER, "").replace(PEM_FOOTER, "").replace("\n", "") def test_parse_xfcc(self): """Test authentik Proxy/Envoy's XFCC format""" diff --git a/authentik/events/api/events.py b/authentik/events/api/events.py index 104d3a1192..84733ecb0a 100644 --- a/authentik/events/api/events.py +++ b/authentik/events/api/events.py @@ -9,30 +9,52 @@ from django.db.models import DateTimeField as DjangoDateTimeField from django.db.models.fields.json import KeyTextTransform, KeyTransform from django.db.models.functions import TruncHour from django.db.models.query_utils import Q +from django.utils.text import slugify from django.utils.timezone import now +from djangoql.schema import DateTimeField as QLDateTimeFIeld +from djangoql.schema import IntField, StrField from drf_spectacular.types import OpenApiTypes from drf_spectacular.utils import OpenApiParameter, extend_schema from guardian.shortcuts import get_objects_for_user from rest_framework.decorators import action -from rest_framework.fields import ChoiceField, DateTimeField, DictField, IntegerField +from rest_framework.fields import ( + CharField, + ChoiceField, + DateTimeField, + DictField, + IntegerField, + ListField, +) from rest_framework.request import Request from rest_framework.response import Response from rest_framework.viewsets import ModelViewSet +from authentik.api.search.fields import ChoiceSearchField, JSONSearchField +from authentik.api.validation import validate from authentik.core.api.object_types import TypeCreateSerializer from authentik.core.api.utils import ModelSerializer, PassiveSerializer from authentik.events.models import Event, EventAction from authentik.lib.utils.reflection import ConditionalInheritance +from authentik.lib.utils.time import timedelta_from_string, timedelta_string_validator + +AGGR_MAX_AGE = timedelta(days=90) class EventVolumeSerializer(PassiveSerializer): - """Count of events of action created on day""" + """Count of events of action created on day for a single event action""" action = ChoiceField(choices=EventAction.choices) time = DateTimeField() count = IntegerField() +class EventStatsSerializer(PassiveSerializer): + """Count of unique users in events and aggregated counts per specified deltas""" + + unique_users = IntegerField() + count_step = DictField() + + class EventSerializer(ModelSerializer): """Event Serializer""" @@ -84,6 +106,11 @@ class EventsFilter(django_filters.FilterSet): lookup_expr="authorized_application__pk", label="Context Authorized application", ) + context_device = django_filters.CharFilter( + field_name="context", + lookup_expr="device__pk", + label="Context Device Primary Key", + ) action = django_filters.CharFilter( field_name="action", lookup_expr="icontains", @@ -123,6 +150,16 @@ class EventViewSet( ): """Event Read-Only Viewset""" + class EventVolumeParameters(PassiveSerializer): + history_days = IntegerField(default=7, required=False) + + class EventStatsParameters(PassiveSerializer): + count_steps = ListField( + child=CharField(validators=[timedelta_string_validator]), + required=True, + help_text="Timedelta, format of 'weeks=3;days=2;hours=3,seconds=2'", + ) + queryset = Event.objects.all() serializer_class = EventSerializer ordering = ["-created"] @@ -137,10 +174,6 @@ class EventViewSet( filterset_class = EventsFilter def get_ql_fields(self): - from djangoql.schema import DateTimeField, IntField, StrField - - from authentik.enterprise.search.fields import ChoiceSearchField, JSONSearchField - return [ ChoiceSearchField(Event, "action"), StrField(Event, "event_uuid"), @@ -182,7 +215,7 @@ class EventViewSet( ), ), ), - DateTimeField(Event, "created", suggest_options=True), + QLDateTimeFIeld(Event, "created", suggest_options=True), ] @extend_schema( @@ -225,24 +258,16 @@ class EventViewSet( @extend_schema( responses={200: EventVolumeSerializer(many=True)}, - parameters=[ - OpenApiParameter( - "history_days", - type=OpenApiTypes.NUMBER, - location=OpenApiParameter.QUERY, - required=False, - default=7, - ), - ], + parameters=[EventVolumeParameters], ) @action(detail=False, methods=["GET"], pagination_class=None) - def volume(self, request: Request) -> Response: + @validate(EventVolumeParameters, "query") + def volume(self, request: Request, query: EventVolumeParameters) -> Response: """Get event volume for specified filters and timeframe""" queryset: QuerySet[Event] = self.filter_queryset(self.get_queryset()) - delta = timedelta(days=7) - time_delta = request.query_params.get("history_days", 7) - if time_delta: - delta = timedelta(days=min(int(time_delta), 60)) + delta = timedelta(days=query.validated_data.get("history_days", 7)) + if delta.total_seconds() > AGGR_MAX_AGE.total_seconds(): + delta = AGGR_MAX_AGE return Response( queryset.filter(created__gte=now() - delta) .annotate(hour=TruncHour("created")) @@ -257,6 +282,40 @@ class EventViewSet( .order_by("time", "action") ) + @extend_schema( + responses={200: EventStatsSerializer()}, + parameters=[EventStatsParameters], + filters=True, + ) + @action(detail=False, methods=["GET"], pagination_class=None) + @validate(EventStatsParameters, "query") + def stats(self, request: Request, query: EventStatsParameters) -> Response: + """Get event stats for specified filters and count steps""" + _now = now() + aggrs = { + "unique_users": Count("user__pk", distinct=True), + } + largest_delta = 0 + for step in query.validated_data.get("count_steps"): + delta = timedelta_from_string(step) + if delta.total_seconds() > AGGR_MAX_AGE.total_seconds(): + delta = AGGR_MAX_AGE + largest_delta = max(largest_delta, delta.total_seconds()) + aggrs[slugify(step).replace("-", "_")] = Count( + "event_uuid", filter=Q(created__gte=_now - delta) + ) + data = ( + self.filter_queryset(self.get_queryset()) + .filter(created__gte=now() - timedelta(days=60)) + .aggregate(**aggrs) + ) + return Response( + { + "unique_users": data.pop("unique_users"), + "count_step": data, + } + ) + @extend_schema(responses={200: TypeCreateSerializer(many=True)}) @action(detail=False, pagination_class=None, filter_backends=[]) def actions(self, request: Request) -> Response: diff --git a/authentik/events/api/notification_rules.py b/authentik/events/api/notification_rules.py index 8af00d09d3..a793cda476 100644 --- a/authentik/events/api/notification_rules.py +++ b/authentik/events/api/notification_rules.py @@ -11,7 +11,9 @@ from authentik.events.models import NotificationRule class NotificationRuleSerializer(ModelSerializer): """NotificationRule Serializer""" - destination_group_obj = GroupSerializer(read_only=True, source="destination_group") + destination_group_obj = GroupSerializer( + read_only=True, source="destination_group", required=False, allow_null=True + ) class Meta: model = NotificationRule diff --git a/authentik/events/middleware.py b/authentik/events/middleware.py index 7d13c0e6d9..4aadc0d709 100644 --- a/authentik/events/middleware.py +++ b/authentik/events/middleware.py @@ -13,6 +13,7 @@ from django.core.exceptions import SuspiciousOperation from django.db.models import Model from django.db.models.signals import m2m_changed, post_save, pre_delete from django.http import HttpRequest, HttpResponse +from django_postgres_cache.models import CacheEntry from structlog.stdlib import BoundLogger, get_logger from authentik.blueprints.v1.importer import excluded_models @@ -31,6 +32,7 @@ IGNORED_MODELS = tuple( Notification, StaticToken, Session, + CacheEntry, ) ) diff --git a/authentik/events/migrations/0018_event_authentik_e_user_pk__idx.py b/authentik/events/migrations/0018_event_authentik_e_user_pk__idx.py new file mode 100644 index 0000000000..e7af42c106 --- /dev/null +++ b/authentik/events/migrations/0018_event_authentik_e_user_pk__idx.py @@ -0,0 +1,17 @@ +# Generated by Django 5.2.12 on 2026-04-09 16:03 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("authentik_events", "0017_notificationtransport_webhook_ca"), + ] + + operations = [ + migrations.AddIndex( + model_name="event", + index=models.Index(models.F("user__pk"), name="authentik_e_user_pk__idx"), + ), + ] diff --git a/authentik/events/models.py b/authentik/events/models.py index e0020f833d..3e130f18a3 100644 --- a/authentik/events/models.py +++ b/authentik/events/models.py @@ -8,10 +8,10 @@ from inspect import currentframe from typing import Any from uuid import uuid4 -from asgiref.sync import async_to_sync from channels.layers import get_channel_layer from django.apps import apps from django.db import models +from django.db.models import Q from django.http import HttpRequest from django.http.request import QueryDict from django.utils.timezone import now @@ -250,6 +250,28 @@ class Event(SerializerModel, ExpiringModel): self.save() return self + @staticmethod + def log_deprecation( + identifier: str, message: str, cause: str | None = None, expiry_days=30, **kwargs + ): + query = Q( + action=EventAction.CONFIGURATION_WARNING, + context__deprecation=identifier, + ) + if cause: + query &= Q(context__cause=cause) + if Event.objects.filter(query).exists(): + return + event = Event.new( + EventAction.CONFIGURATION_WARNING, + deprecation=identifier, + message=message, + cause=cause, + **kwargs, + ) + event.expires = now() + timedelta(days=expiry_days) + event.save() + def save(self, *args, **kwargs): if self._state.adding: LOGGER.info( @@ -298,6 +320,10 @@ class Event(SerializerModel, ExpiringModel): models.F("context__authorized_application"), name="authentik_e_ctx_app__idx", ), + models.Index( + models.F("user__pk"), + name="authentik_e_user_pk__idx", + ), ] @@ -383,7 +409,7 @@ class NotificationTransport(TasksModel, SerializerModel): ) notification.save() layer = get_channel_layer() - async_to_sync(layer.group_send)( + layer.group_send_blocking( build_user_group(notification.user), { "type": "event.notification", @@ -433,7 +459,7 @@ class NotificationTransport(TasksModel, SerializerModel): response.raise_for_status() except RequestException as exc: raise NotificationTransportError( - exc.response.text if exc.response else str(exc) + exc.response.text if exc.response is not None else str(exc) ) from exc return [ response.status_code, @@ -496,7 +522,7 @@ class NotificationTransport(TasksModel, SerializerModel): response = get_http_session().post(self.webhook_url, json=body) response.raise_for_status() except RequestException as exc: - text = exc.response.text if exc.response else str(exc) + text = exc.response.text if exc.response is not None else str(exc) raise NotificationTransportError(text) from exc return [ response.status_code, diff --git a/authentik/events/signals.py b/authentik/events/signals.py index 7b1d9ca419..b4291672d3 100644 --- a/authentik/events/signals.py +++ b/authentik/events/signals.py @@ -11,7 +11,7 @@ from django.http import HttpRequest from rest_framework.request import Request from authentik.core.models import AuthenticatedSession, User -from authentik.core.signals import login_failed, password_changed +from authentik.core.signals import login_failed, password_changed, password_hash_changed from authentik.events.models import Event, EventAction from authentik.flows.models import Stage from authentik.flows.planner import ( @@ -93,11 +93,13 @@ def on_login_failed( credentials: dict[str, str], request: HttpRequest, stage: Stage | None = None, + context: dict[str, Any] | None = None, **kwargs, ): """Failed Login, authentik custom event""" user = User.objects.filter(username=credentials.get("username")).first() - Event.new(EventAction.LOGIN_FAILED, **credentials, stage=stage, **kwargs).from_http( + context = context or {} + Event.new(EventAction.LOGIN_FAILED, **credentials, stage=stage, **context).from_http( request, user ) @@ -110,8 +112,15 @@ def on_invitation_used(sender, request: HttpRequest, invitation: Invitation, **_ ) +@receiver(password_hash_changed) @receiver(password_changed) -def on_password_changed(sender, user: User, password: str, request: HttpRequest | None, **_): +def on_password_changed( + sender, + user: User, + password: str | None = None, + request: HttpRequest | None = None, + **_, +): """Log password change""" Event.new(EventAction.PASSWORD_SET).from_http(request, user=user) diff --git a/authentik/events/tests/test_api.py b/authentik/events/tests/test_api.py index 51028c8a8f..b99e57697f 100644 --- a/authentik/events/tests/test_api.py +++ b/authentik/events/tests/test_api.py @@ -1,8 +1,12 @@ """Event API tests""" +from datetime import timedelta from json import loads from django.urls import reverse +from django.utils.datastructures import MultiValueDict +from django.utils.http import urlencode +from django.utils.timezone import now from rest_framework.test import APITestCase from authentik.core.tests.utils import create_test_admin_user @@ -91,3 +95,52 @@ class TestEventsAPI(APITestCase): }, ) self.assertEqual(response.status_code, 400) + + def test_volume(self): + Event.objects.all().delete() + Event.new(EventAction.LOGIN).set_user(self.user).save() + evt = Event.new(EventAction.LOGIN).set_user(self.user) + evt.created = now() - timedelta(days=6) + evt.save() + res = self.client.get( + reverse("authentik_api:event-volume") + + "?" + + urlencode( + { + "action": EventAction.LOGIN, + } + ) + ) + self.assertEqual(res.status_code, 200) + data = loads(res.content) + self.assertEqual(len(data), 1) + + def test_stats(self): + Event.objects.all().delete() + Event.new(EventAction.LOGIN).set_user(self.user).save() + evt = Event.new(EventAction.LOGIN).set_user(self.user) + evt.created = now() - timedelta(days=6) + evt.save() + res = self.client.get( + reverse("authentik_api:event-stats") + + "?" + + urlencode( + MultiValueDict({"count_steps": ["hours=24", "days=7", "days=240"]}), doseq=True + ) + ) + self.assertEqual(res.status_code, 200, res.content) + self.assertJSONEqual( + res.content, {"unique_users": 1, "count_step": {"hours24": 2, "days7": 2, "days240": 2}} + ) + + def test_stats_invalid(self): + res = self.client.get( + reverse("authentik_api:event-stats") + + "?" + + urlencode({"count_steps": "24d"}, doseq=True) + ) + self.assertEqual(res.status_code, 400) + self.assertJSONEqual( + res.content, + {"count_steps": {"0": ["24d is not in the correct format of 'hours=3;minutes=1'."]}}, + ) diff --git a/authentik/events/tests/test_event.py b/authentik/events/tests/test_event.py index 65244f9dfe..345d78052d 100644 --- a/authentik/events/tests/test_event.py +++ b/authentik/events/tests/test_event.py @@ -2,6 +2,7 @@ from urllib.parse import urlencode +from django.contrib.auth.hashers import make_password from django.contrib.contenttypes.models import ContentType from django.test import RequestFactory, TestCase from django.views.debug import SafeExceptionReporterFilter @@ -10,7 +11,7 @@ from guardian.shortcuts import get_anonymous_user from authentik.brands.models import Brand from authentik.core.models import Group, User from authentik.core.tests.utils import create_test_user -from authentik.events.models import Event +from authentik.events.models import Event, EventAction from authentik.flows.planner import PLAN_CONTEXT_PENDING_USER, FlowPlan from authentik.flows.views.executor import QS_QUERY, SESSION_KEY_PLAN from authentik.lib.generators import generate_id @@ -207,3 +208,20 @@ class TestEvents(TestCase): "username": user.username, }, ) + + def test_invalid_string(self): + """Test creating an event with invalid unicode string data""" + event = Event.new("unittest", foo="foo bar \u0000 baz") + event.save() + self.assertEqual(event.context["foo"], "foo bar baz") + + def test_password_set_signal_on_set_password_from_hash(self): + """Changing password from hash should still emit an audit event.""" + user = create_test_user() + old_count = Event.objects.filter(action=EventAction.PASSWORD_SET, user__pk=user.pk).count() + + user.set_password_from_hash(make_password(generate_id())) + user.save() + + new_count = Event.objects.filter(action=EventAction.PASSWORD_SET, user__pk=user.pk).count() + self.assertEqual(new_count, old_count + 1) diff --git a/authentik/events/utils.py b/authentik/events/utils.py index 2c7fcb47e6..526e7cd9b6 100644 --- a/authentik/events/utils.py +++ b/authentik/events/utils.py @@ -36,6 +36,10 @@ ALLOWED_SPECIAL_KEYS = re.compile( ) +def cleanse_str(raw: Any) -> str: + return str(raw).replace("\u0000", "") + + def cleanse_item(key: str, value: Any) -> Any: """Cleanse a single item""" if isinstance(value, dict): @@ -66,7 +70,7 @@ def cleanse_dict(source: dict[Any, Any]) -> dict[Any, Any]: def model_to_dict(model: Model) -> dict[str, Any]: """Convert model to dict""" - name = str(model) + name = cleanse_str(model) if hasattr(model, "name"): name = model.name return { @@ -133,11 +137,11 @@ def sanitize_item(value: Any) -> Any: # noqa: PLR0911, PLR0912 if isinstance(value, ASN): return ASN_CONTEXT_PROCESSOR.asn_to_dict(value) if isinstance(value, Path): - return str(value) + return cleanse_str(value) if isinstance(value, Exception): - return str(value) + return cleanse_str(value) if isinstance(value, YAMLTag): - return str(value) + return cleanse_str(value) if isinstance(value, Enum): return value.value if isinstance(value, type): @@ -161,7 +165,7 @@ def sanitize_item(value: Any) -> Any: # noqa: PLR0911, PLR0912 raise ValueError("JSON can't represent timezone-aware times.") return value.isoformat() if isinstance(value, timedelta): - return str(value.total_seconds()) + return cleanse_str(value.total_seconds()) if callable(value): return { "type": "callable", @@ -174,8 +178,8 @@ def sanitize_item(value: Any) -> Any: # noqa: PLR0911, PLR0912 try: return DjangoJSONEncoder().default(value) except TypeError: - return str(value) - return str(value) + return cleanse_str(value) + return cleanse_str(value) def sanitize_dict(source: dict[Any, Any]) -> dict[Any, Any]: diff --git a/authentik/flows/api/flows.py b/authentik/flows/api/flows.py index 3eb6eea6f7..ef6d897e90 100644 --- a/authentik/flows/api/flows.py +++ b/authentik/flows/api/flows.py @@ -7,15 +7,18 @@ from django.utils.translation import gettext as _ from drf_spectacular.types import OpenApiTypes from drf_spectacular.utils import OpenApiResponse, extend_schema from rest_framework.decorators import action -from rest_framework.fields import BooleanField, FileField, ReadOnlyField, SerializerMethodField -from rest_framework.parsers import MultiPartParser +from rest_framework.fields import ( + BooleanField, + FileField, + ReadOnlyField, + SerializerMethodField, +) from rest_framework.request import Request from rest_framework.response import Response from rest_framework.viewsets import ModelViewSet from structlog.stdlib import get_logger from authentik.blueprints.v1.exporter import FlowExporter -from authentik.blueprints.v1.importer import Importer from authentik.core.api.used_by import UsedByMixin from authentik.core.api.utils import ( CacheSerializer, @@ -24,7 +27,6 @@ from authentik.core.api.utils import ( PassiveSerializer, ThemedUrlsSerializer, ) -from authentik.events.logs import LogEventSerializer from authentik.flows.api.flows_diagram import FlowDiagram, FlowDiagramSerializer from authentik.flows.exceptions import FlowNonApplicableException from authentik.flows.models import Flow @@ -106,13 +108,6 @@ class FlowSetSerializer(FlowSerializer): ] -class FlowImportResultSerializer(PassiveSerializer): - """Logs of an attempted flow import""" - - logs = LogEventSerializer(many=True, read_only=True) - success = BooleanField(read_only=True) - - class FlowViewSet(UsedByMixin, ModelViewSet): """Flow Viewset""" @@ -146,59 +141,6 @@ class FlowViewSet(UsedByMixin, ModelViewSet): LOGGER.debug("Cleared flow cache", keys=len(keys)) return Response(status=204) - @permission_required( - None, - [ - "authentik_flows.add_flow", - "authentik_flows.change_flow", - "authentik_flows.add_flowstagebinding", - "authentik_flows.change_flowstagebinding", - "authentik_flows.add_stage", - "authentik_flows.change_stage", - "authentik_policies.add_policy", - "authentik_policies.change_policy", - "authentik_policies.add_policybinding", - "authentik_policies.change_policybinding", - "authentik_stages_prompt.add_prompt", - "authentik_stages_prompt.change_prompt", - ], - ) - @extend_schema( - request={"multipart/form-data": FlowUploadSerializer}, - responses={ - 204: FlowImportResultSerializer, - 400: FlowImportResultSerializer, - }, - ) - @action(url_path="import", detail=False, methods=["POST"], parser_classes=(MultiPartParser,)) - def import_flow(self, request: Request) -> Response: - """Import flow from .yaml file""" - import_response = FlowImportResultSerializer( - data={ - "logs": [], - "success": False, - } - ) - import_response.is_valid() - file = request.FILES.get("file", None) - if not file: - return Response(data=import_response.initial_data, status=400) - - importer = Importer.from_string(file.read().decode()) - valid, logs = importer.validate() - import_response.initial_data["logs"] = [LogEventSerializer(log).data for log in logs] - import_response.initial_data["success"] = valid - import_response.is_valid() - if not valid: - return Response(data=import_response.initial_data, status=200) - - successful = importer.apply() - import_response.initial_data["success"] = successful - import_response.is_valid() - if not successful: - return Response(data=import_response.initial_data, status=200) - return Response(data=import_response.initial_data, status=200) - @permission_required( "authentik_flows.export_flow", [ diff --git a/authentik/flows/apps.py b/authentik/flows/apps.py index 31a2e03f68..4339fa792d 100644 --- a/authentik/flows/apps.py +++ b/authentik/flows/apps.py @@ -1,5 +1,6 @@ """authentik flows app config""" +from django.utils.translation import gettext_lazy as _ from prometheus_client import Gauge, Histogram from authentik.blueprints.apps import ManagedAppConfig @@ -27,12 +28,15 @@ class RefreshOtherFlowsAfterAuthentication(Flag[bool], key="flows_refresh_others default = False visibility = "public" + description = _("Refresh other tabs after successful authentication.") + deprecated = True class ContinuousLogin(Flag[bool], key="flows_continuous_login"): default = False visibility = "public" + description = _("Upon successful authentication, re-start authentication in other open tabs.") class AuthentikFlowsConfig(ManagedAppConfig): diff --git a/authentik/flows/exceptions.py b/authentik/flows/exceptions.py index 81b9793507..0c65f93052 100644 --- a/authentik/flows/exceptions.py +++ b/authentik/flows/exceptions.py @@ -11,6 +11,10 @@ class FlowNonApplicableException(SentryIgnoredException): policy_result: PolicyResult | None = None + def __init__(self, policy_result: PolicyResult | None = None, *args): + super().__init__(*args) + self.policy_result = policy_result + @property def messages(self) -> str: """Get messages from policy result, fallback to generic reason""" diff --git a/authentik/flows/migrations/0027_auto_20231028_1424.py b/authentik/flows/migrations/0027_auto_20231028_1424.py index a46aec0a35..466cf24593 100644 --- a/authentik/flows/migrations/0027_auto_20231028_1424.py +++ b/authentik/flows/migrations/0027_auto_20231028_1424.py @@ -42,6 +42,7 @@ class Migration(migrations.Migration): ("require_superuser", "Require Superuser"), ("require_redirect", "Require Redirect"), ("require_outpost", "Require Outpost"), + ("require_token", "Require Token"), ], default="none", help_text="Required level of authentication and authorization to access a flow.", diff --git a/authentik/flows/models.py b/authentik/flows/models.py index 5db9114e73..dfedaa6ed7 100644 --- a/authentik/flows/models.py +++ b/authentik/flows/models.py @@ -40,6 +40,7 @@ class FlowAuthenticationRequirement(models.TextChoices): REQUIRE_SUPERUSER = "require_superuser" REQUIRE_REDIRECT = "require_redirect" REQUIRE_OUTPOST = "require_outpost" + REQUIRE_TOKEN = "require_token" class NotConfiguredAction(models.TextChoices): @@ -185,25 +186,47 @@ class Flow(SerializerModel, PolicyBindingModel): help_text=_("Required level of authentication and authorization to access a flow."), ) - def background_url(self, request: HttpRequest | None = None) -> str: + def background_url( + self, + request: HttpRequest | None = None, + use_cache: bool = True, + ) -> str: """Get the URL to the background image""" if not self.background: if request: - return request.brand.branding_default_flow_background_url() + return request.brand.branding_default_flow_background_url( + request, + use_cache=use_cache, + ) return ( CONFIG.get("web.path", "/")[:-1] + "/static/dist/assets/images/flow_background.jpg" ) - return get_file_manager(FileUsage.MEDIA).file_url(self.background, request) + return get_file_manager(FileUsage.MEDIA).file_url( + self.background, + request, + use_cache=use_cache, + ) - def background_themed_urls(self, request: HttpRequest | None = None) -> dict[str, str] | None: + def background_themed_urls( + self, + request: HttpRequest | None = None, + use_cache: bool = True, + ) -> dict[str, str] | None: """Get themed URLs for background if it contains %(theme)s""" if not self.background: if request: - return request.brand.branding_default_flow_background_themed_urls() + return request.brand.branding_default_flow_background_themed_urls( + request, + use_cache=use_cache, + ) return None - return get_file_manager(FileUsage.MEDIA).themed_urls(self.background, request) + return get_file_manager(FileUsage.MEDIA).themed_urls( + self.background, + request, + use_cache=use_cache, + ) stages = models.ManyToManyField(Stage, through="FlowStageBinding", blank=True) diff --git a/authentik/flows/planner.py b/authentik/flows/planner.py index d81eff4d7d..61c2c13f40 100644 --- a/authentik/flows/planner.py +++ b/authentik/flows/planner.py @@ -5,6 +5,7 @@ from typing import TYPE_CHECKING, Any from django.core.cache import cache from django.http import HttpRequest, HttpResponse +from django.utils.translation import gettext as _ from sentry_sdk import start_span from sentry_sdk.tracing import Span from structlog.stdlib import BoundLogger, get_logger @@ -26,6 +27,7 @@ from authentik.lib.config import CONFIG from authentik.lib.utils.urls import redirect_with_qs from authentik.outposts.models import Outpost from authentik.policies.engine import PolicyEngine +from authentik.policies.types import PolicyResult from authentik.root.middleware import ClientIPMiddleware if TYPE_CHECKING: @@ -226,6 +228,15 @@ class FlowPlanner: and context.get(PLAN_CONTEXT_IS_REDIRECTED) is None ): raise FlowNonApplicableException() + if ( + self.flow.authentication == FlowAuthenticationRequirement.REQUIRE_TOKEN + and context.get(PLAN_CONTEXT_IS_RESTORED) is None + ): + raise FlowNonApplicableException( + PolicyResult( + False, _("This link is invalid or has expired. Please request a new one.") + ) + ) outpost_user = ClientIPMiddleware.get_outpost_user(request) if self.flow.authentication == FlowAuthenticationRequirement.REQUIRE_OUTPOST: if not outpost_user: @@ -273,9 +284,7 @@ class FlowPlanner: engine.build() result = engine.result if not result.passing: - exc = FlowNonApplicableException() - exc.policy_result = result - raise exc + raise FlowNonApplicableException(result) # User is passing so far, check if we have a cached plan cached_plan_key = cache_key(self.flow, user) cached_plan = cache.get(cached_plan_key, None) diff --git a/authentik/flows/stage.py b/authentik/flows/stage.py index 634fd79991..cc14bbc89b 100644 --- a/authentik/flows/stage.py +++ b/authentik/flows/stage.py @@ -15,6 +15,7 @@ from rest_framework.request import Request from sentry_sdk import start_span from structlog.stdlib import BoundLogger, get_logger +from authentik.common.oauth.constants import PLAN_CONTEXT_POST_LOGOUT_REDIRECT_URI from authentik.core.models import Application, User from authentik.flows.challenge import ( AccessDeniedChallenge, @@ -193,12 +194,14 @@ class ChallengeStageView(StageView): if not hasattr(challenge, "initial_data"): challenge.initial_data = {} if "flow_info" not in challenge.initial_data: + # Flow payloads can outlive the previous signed media JWT, so + # refreshes must mint fresh URLs instead of reusing cached ones. flow_info = ContextualFlowInfo( data={ "title": self.format_title(), - "background": self.executor.flow.background_url(self.request), + "background": self.executor.flow.background_url(use_cache=False), "background_themed_urls": self.executor.flow.background_themed_urls( - self.request + use_cache=False, ), "cancel_url": self.cancel_url, "layout": self.executor.flow.layout, @@ -300,7 +303,24 @@ class SessionEndStage(ChallengeStageView): that the user is likely to take after signing out of a provider.""" def get_challenge(self, *args, **kwargs) -> Challenge: + # Check for OIDC post_logout_redirect_uri in context + post_logout_redirect_uri = self.executor.plan.context.get( + PLAN_CONTEXT_POST_LOGOUT_REDIRECT_URI + ) + + if post_logout_redirect_uri: + self.logger.debug( + "SessionEndStage redirecting to post_logout_redirect_uri", + redirect_url=post_logout_redirect_uri, + ) + return RedirectChallenge( + data={ + "to": post_logout_redirect_uri, + }, + ) + if not self.request.user.is_authenticated: + # User is logged out with no redirect URI - go to default return RedirectChallenge( data={ "to": reverse("authentik_core:root-redirect"), diff --git a/authentik/flows/templates/if/flow-sfe.html b/authentik/flows/templates/if/flow-sfe.html index 39f528d416..311b3f139e 100644 --- a/authentik/flows/templates/if/flow-sfe.html +++ b/authentik/flows/templates/if/flow-sfe.html @@ -23,7 +23,7 @@ height: 100%; } body { - background-image: url("{{ flow_background_url }}"); + background-image: url("{{ flow_background_url|iriencode|safe }}"); background-repeat: no-repeat; background-size: cover; } diff --git a/authentik/flows/templates/if/flow.html b/authentik/flows/templates/if/flow.html index 5ac7d926e0..848e535040 100644 --- a/authentik/flows/templates/if/flow.html +++ b/authentik/flows/templates/if/flow.html @@ -25,6 +25,8 @@ window.authentik.flow = { "layout": "{{ flow.layout }}", + "background": "{{ flow.background }}", + "title": "{{ flow.title }}", }; {% endblock %} @@ -37,7 +39,7 @@ {% endblock %} @@ -45,33 +47,23 @@ {% block body %} - -
-
-
-
-
- -
-
- - -
-
-
- + + + + + {% endblock %} diff --git a/authentik/flows/tests/test_executor.py b/authentik/flows/tests/test_executor.py index 117e866758..28b1a03414 100644 --- a/authentik/flows/tests/test_executor.py +++ b/authentik/flows/tests/test_executor.py @@ -1,5 +1,6 @@ """flow views tests""" +from datetime import timedelta from unittest.mock import MagicMock, PropertyMock, patch from urllib.parse import urlencode @@ -7,6 +8,7 @@ from django.http import HttpRequest, HttpResponse from django.test import override_settings from django.test.client import RequestFactory from django.urls import reverse +from django.utils.timezone import now from rest_framework.exceptions import ParseError from authentik.core.models import Group, User @@ -17,6 +19,7 @@ from authentik.flows.models import ( FlowDeniedAction, FlowDesignation, FlowStageBinding, + FlowToken, InvalidResponseAction, ) from authentik.flows.planner import FlowPlan, FlowPlanner @@ -24,6 +27,7 @@ from authentik.flows.stage import PLAN_CONTEXT_PENDING_USER_IDENTIFIER, StageVie from authentik.flows.tests import FlowTestCase from authentik.flows.views.executor import ( NEXT_ARG_NAME, + QS_KEY_TOKEN, QS_QUERY, SESSION_KEY_PLAN, FlowExecutorView, @@ -740,3 +744,77 @@ class TestFlowExecutor(FlowTestCase): "title": flow.title, }, ) + + @patch( + "authentik.flows.views.executor.to_stage_response", + TO_STAGE_RESPONSE_MOCK, + ) + def test_expired_flow_token(self): + """Test that an expired flow token shows an appropriate error message""" + flow = create_test_flow( + FlowDesignation.RECOVERY, + authentication=FlowAuthenticationRequirement.REQUIRE_TOKEN, + ) + user = create_test_user() + plan = FlowPlan(flow_pk=flow.pk.hex, bindings=[], markers=[]) + + token = FlowToken.objects.create( + user=user, + identifier=generate_id(), + flow=flow, + _plan=FlowToken.pickle(plan), + expires=now() - timedelta(hours=1), + ) + + url = reverse("authentik_api:flow-executor", kwargs={"flow_slug": flow.slug}) + response = self.client.get( + url + f"?{urlencode({QS_QUERY: urlencode({QS_KEY_TOKEN: token.key})})}" + ) + self.assertStageResponse( + response, + flow, + component="ak-stage-access-denied", + error_message="This link is invalid or has expired. Please request a new one.", + ) + + @patch( + "authentik.flows.views.executor.to_stage_response", + TO_STAGE_RESPONSE_MOCK, + ) + def test_invalid_flow_token_require_token(self): + """Test that an invalid/nonexistent token on a REQUIRE_TOKEN flow shows error""" + flow = create_test_flow( + FlowDesignation.RECOVERY, + authentication=FlowAuthenticationRequirement.REQUIRE_TOKEN, + ) + + url = reverse("authentik_api:flow-executor", kwargs={"flow_slug": flow.slug}) + response = self.client.get( + url + f"?{urlencode({QS_QUERY: urlencode({QS_KEY_TOKEN: 'invalid-token'})})}" + ) + self.assertStageResponse( + response, + flow, + component="ak-stage-access-denied", + error_message="This link is invalid or has expired. Please request a new one.", + ) + + @patch( + "authentik.flows.views.executor.to_stage_response", + TO_STAGE_RESPONSE_MOCK, + ) + def test_no_token_require_token(self): + """Test that accessing a REQUIRE_TOKEN flow without any token shows error""" + flow = create_test_flow( + FlowDesignation.RECOVERY, + authentication=FlowAuthenticationRequirement.REQUIRE_TOKEN, + ) + + url = reverse("authentik_api:flow-executor", kwargs={"flow_slug": flow.slug}) + response = self.client.get(url) + self.assertStageResponse( + response, + flow, + component="ak-stage-access-denied", + error_message="This link is invalid or has expired. Please request a new one.", + ) diff --git a/authentik/flows/tests/test_inspector.py b/authentik/flows/tests/test_inspector.py index 37bd8f0974..2bf3dc2b6e 100644 --- a/authentik/flows/tests/test_inspector.py +++ b/authentik/flows/tests/test_inspector.py @@ -33,7 +33,7 @@ class TestFlowInspector(APITestCase): FlowStageBinding.objects.create( target=flow, stage=ident_stage, - order=1, + order=0, invalid_response_action=InvalidResponseAction.RESTART_WITH_CONTEXT, ) dummy_stage = DummyStage.objects.create(name=generate_id()) diff --git a/authentik/flows/tests/test_planner.py b/authentik/flows/tests/test_planner.py index d0e16990b6..dc15dbae9a 100644 --- a/authentik/flows/tests/test_planner.py +++ b/authentik/flows/tests/test_planner.py @@ -26,6 +26,7 @@ from authentik.flows.models import ( ) from authentik.flows.planner import ( PLAN_CONTEXT_IS_REDIRECTED, + PLAN_CONTEXT_IS_RESTORED, PLAN_CONTEXT_PENDING_USER, FlowPlanner, cache_key, @@ -129,6 +130,22 @@ class TestFlowPlanner(TestCase): planner.allow_empty_flows = True planner.plan(request) + def test_authentication_require_token(self): + """Test flow authentication (require_token)""" + flow = create_test_flow() + flow.authentication = FlowAuthenticationRequirement.REQUIRE_TOKEN + request = self.request_factory.get( + reverse("authentik_api:flow-executor", kwargs={"flow_slug": flow.slug}), + ) + planner = FlowPlanner(flow) + planner.allow_empty_flows = True + + with self.assertRaises(FlowNonApplicableException): + planner.plan(request) + + context = {PLAN_CONTEXT_IS_RESTORED: True} + planner.plan(request, context) + @patch( "authentik.policies.engine.PolicyEngine.result", POLICY_RETURN_FALSE, diff --git a/authentik/flows/tests/test_stage_views.py b/authentik/flows/tests/test_stage_views.py index a9ec1e8a4a..458d237803 100644 --- a/authentik/flows/tests/test_stage_views.py +++ b/authentik/flows/tests/test_stage_views.py @@ -1,12 +1,19 @@ """stage view tests""" from collections.abc import Callable +from unittest.mock import patch from django.test import RequestFactory, TestCase +from django.urls import reverse +from authentik.core.tests.utils import RequestFactory as AuthentikRequestFactory +from authentik.core.tests.utils import create_test_flow +from authentik.flows.models import Flow, FlowStageBinding from authentik.flows.stage import StageView from authentik.flows.views.executor import FlowExecutorView from authentik.lib.utils.reflection import all_subclasses +from authentik.stages.dummy.models import DummyStage +from authentik.stages.dummy.stage import DummyStageView class TestViews(TestCase): @@ -15,6 +22,67 @@ class TestViews(TestCase): def setUp(self) -> None: self.factory = RequestFactory() self.exec = FlowExecutorView(request=self.factory.get("/")) + self.authentik_factory = AuthentikRequestFactory() + + def test_challenge_stage_flow_info_uses_relative_background(self): + """Test challenge flow info keeps background URLs app-relative.""" + flow = create_test_flow() + stage = DummyStage.objects.create(name="dummy") + FlowStageBinding.objects.create(target=flow, stage=stage, order=0) + request = self.authentik_factory.get("/") + + executor = FlowExecutorView(flow=flow, request=request) + executor.current_stage = stage + + view = DummyStageView(executor) + view.request = request + + challenge = view._get_challenge() + + self.assertEqual( + challenge.initial_data["flow_info"]["background"], + "/static/dist/assets/images/flow_background.jpg", + ) + + def test_flow_interface_css_background_preserves_presigned_url_query(self): + """Test flow CSS keeps signed URL query separators intact.""" + flow = create_test_flow() + background_url = ( + "https://s3.ca-central-1.amazonaws.com/example/media/public/background.png" + "?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=credential" + "&X-Amz-Signature=signature" + ) + + with patch.object(Flow, "background_url", return_value=background_url): + response = self.client.get( + reverse("authentik_core:if-flow", kwargs={"flow_slug": flow.slug}) + ) + + self.assertContains( + response, + f'--ak-global--background-image: url("{background_url}");', + html=False, + ) + + def test_flow_sfe_css_background_preserves_presigned_url_query(self): + """Test SFE flow CSS keeps signed URL query separators intact.""" + flow = create_test_flow() + background_url = ( + "https://s3.ca-central-1.amazonaws.com/example/media/public/background.png" + "?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=credential" + "&X-Amz-Signature=signature" + ) + + with patch.object(Flow, "background_url", return_value=background_url): + response = self.client.get( + reverse("authentik_core:if-flow", kwargs={"flow_slug": flow.slug}) + "?sfe" + ) + + self.assertContains( + response, + f'background-image: url("{background_url}");', + html=False, + ) def view_tester_factory(view_class: type[StageView]) -> Callable: diff --git a/authentik/flows/views/executor.py b/authentik/flows/views/executor.py index 17e2cacce9..0b2ebdefdb 100644 --- a/authentik/flows/views/executor.py +++ b/authentik/flows/views/executor.py @@ -62,6 +62,7 @@ from authentik.policies.engine import PolicyEngine LOGGER = get_logger() # Argument used to redirect user after login NEXT_ARG_NAME = "next" + SESSION_KEY_PLAN = "authentik/flows/plan" SESSION_KEY_GET = "authentik/flows/get" SESSION_KEY_POST = "authentik/flows/post" @@ -134,7 +135,7 @@ class FlowExecutorView(APIView): def _check_flow_token(self, key: str) -> FlowPlan | None: """Check if the user is using a flow token to restore a plan""" - token: FlowToken | None = FlowToken.filter_not_expired(key=key).first() + token: FlowToken | None = FlowToken.objects.filter(key=key).first() if not token: return None plan = None diff --git a/authentik/flows/views/inspector.py b/authentik/flows/views/inspector.py index d252bce2db..8a196a14d2 100644 --- a/authentik/flows/views/inspector.py +++ b/authentik/flows/views/inspector.py @@ -71,7 +71,11 @@ class FlowInspectorView(APIView): flow: Flow _logger: BoundLogger - permission_classes = [IsAuthenticated] + + def get_permissions(self): + if settings.DEBUG: + return [] + return [IsAuthenticated()] def setup(self, request: HttpRequest, flow_slug: str): super().setup(request, flow_slug=flow_slug) diff --git a/authentik/lib/api.py b/authentik/lib/api.py new file mode 100644 index 0000000000..e677cf8872 --- /dev/null +++ b/authentik/lib/api.py @@ -0,0 +1,32 @@ +from django.apps.registry import apps +from django.db.models import TextChoices +from django.utils.encoding import force_str + +from authentik.blueprints.v1.importer import is_model_allowed +from authentik.blueprints.v1.meta.registry import BaseMetaModel + + +def app_choices() -> TextChoices: + """Get a list of all installed applications that create events. + Returns a list of tuples containing (dotted.app.path, name)""" + choices = {} + for app in apps.get_app_configs(): + if app.label.startswith("authentik"): + choices[app.name] = (app.name, force_str(app.verbose_name)) + return TextChoices("Apps", choices) + + +def model_choices() -> TextChoices: + """Get a list of all installed models + Returns a list of tuples containing (dotted.model.path, name)""" + choices = {} + for model in apps.get_models(): + if not is_model_allowed(model) or issubclass(model, BaseMetaModel): + continue + name = f"{model._meta.app_label}.{model._meta.model_name}" + choices[name] = (name, force_str(model._meta.verbose_name)) + return TextChoices("Models", choices) + + +Apps = app_choices() +Models = model_choices() diff --git a/authentik/lib/config.py b/authentik/lib/config.py index 7345c5e1cd..ba5da03093 100644 --- a/authentik/lib/config.py +++ b/authentik/lib/config.py @@ -423,4 +423,5 @@ if __name__ == "__main__": if len(argv) < 2: # noqa: PLR2004 print(dumps(CONFIG.raw, indent=4, cls=AttrEncoder)) else: - print(CONFIG.get(argv[-1])) + for arg in argv[1:]: + print(CONFIG.get(arg)) diff --git a/authentik/lib/default.yml b/authentik/lib/default.yml index 0b3afcba9f..cfbb9c68ba 100644 --- a/authentik/lib/default.yml +++ b/authentik/lib/default.yml @@ -22,6 +22,7 @@ postgresql: port: 5432 password: "env://POSTGRES_PASSWORD" sslmode: disable + conn_health_checks: false use_pool: False test: name: test_authentik @@ -46,6 +47,7 @@ listen: - "[::]:9300" debug: 0.0.0.0:9900 debug_py: 0.0.0.0:9901 + debug_tokio: "[::]:6669" trusted_proxy_cidrs: - 127.0.0.0/8 - 10.0.0.0/8 @@ -72,6 +74,19 @@ log_level: info log: http_headers: - User-Agent + rust_log: + "console_subscriber": info + "h2": info + "hyper_util": warn + "mio": info + "notify": info + "reqwest": info + "runtime": info + "rustls": info + "sqlx": info + "sqlx_postgres": info + "tokio": info + "tungstenite": info sessions: unauthenticated_age: days=1 @@ -143,8 +158,7 @@ tenants: blueprints_dir: /blueprints web: - # No default here as it's set dynamically - # workers: 2 + workers: 2 threads: 4 path: / timeout_http_read_header: 5s diff --git a/authentik/lib/sync/outgoing/models.py b/authentik/lib/sync/outgoing/models.py index 88e62e2d06..91a839d8ad 100644 --- a/authentik/lib/sync/outgoing/models.py +++ b/authentik/lib/sync/outgoing/models.py @@ -1,3 +1,4 @@ +import math from typing import Any, Self import pglock @@ -68,7 +69,12 @@ class OutgoingSyncProvider(ScheduledModel, Model): return Paginator(self.get_object_qs(type), self.sync_page_size) def get_object_sync_time_limit_ms[T: User | Group](self, type: type[T]) -> int: - num_pages: int = self.get_paginator(type).num_pages + # Use a simple COUNT(*) on the model instead of materializing get_object_qs(), + # which for some providers (e.g. SCIM) runs PolicyEngine per-user and is + # extremely expensive. The time limit is an upper-bound estimate, so using + # the total count (without policy filtering) is a safe overestimate. + total_count = type.objects.count() + num_pages = math.ceil(total_count / self.sync_page_size) if total_count > 0 else 1 page_timeout_ms = timedelta_from_string(self.sync_page_timeout).total_seconds() * 1000 return int(num_pages * page_timeout_ms * 1.5) diff --git a/authentik/lib/tests/utils.py b/authentik/lib/tests/utils.py index caf3a6793a..1154e547d8 100644 --- a/authentik/lib/tests/utils.py +++ b/authentik/lib/tests/utils.py @@ -4,12 +4,15 @@ from inspect import currentframe from pathlib import Path -def load_fixture(path: str, **kwargs) -> str: +def load_fixture(path: str, path_only=False, **kwargs) -> str: """Load fixture, optionally formatting it with kwargs""" current = currentframe() parent = current.f_back calling_file_path = parent.f_globals["__file__"] - with open(Path(calling_file_path).resolve().parent / Path(path), encoding="utf-8") as _fixture: + fixture_path = Path(calling_file_path).resolve().parent / Path(path) + if path_only: + return fixture_path + with open(fixture_path, encoding="utf-8") as _fixture: fixture = _fixture.read() try: return fixture % kwargs diff --git a/authentik/lib/utils/db.py b/authentik/lib/utils/db.py index ef72d76652..9d40bea795 100644 --- a/authentik/lib/utils/db.py +++ b/authentik/lib/utils/db.py @@ -14,7 +14,16 @@ def chunked_queryset[T: Model](queryset: QuerySet[T], chunk_size: int = 1_000) - def get_chunks(qs: QuerySet) -> Generator[QuerySet[T]]: qs = qs.order_by("pk") pks = qs.values_list("pk", flat=True) - start_pk = pks[0] + # The outer queryset.exists() guard can race with a concurrent + # transaction that deletes the last matching row (or with a + # different isolation-level snapshot), so by the time this + # generator starts iterating the queryset may be empty and + # pks[0] would raise IndexError and crash the caller. Using + # .first() returns None on an empty queryset, which we bail + # out on cleanly. See goauthentik/authentik#21643. + start_pk = pks.first() + if start_pk is None: + return while True: try: end_pk = pks.filter(pk__gte=start_pk)[chunk_size] diff --git a/authentik/outposts/controllers/base.py b/authentik/outposts/controllers/base.py index 03b5afaaf0..8d837a73f4 100644 --- a/authentik/outposts/controllers/base.py +++ b/authentik/outposts/controllers/base.py @@ -58,6 +58,9 @@ class BaseController: self.connection = connection self.logger = get_logger() self.deployment_ports = [] + self.metrics_ports = [ + DeploymentPort(9300, "http-metrics", "tcp"), + ] def up(self): """Called by scheduled task to reconcile deployment/service/etc""" diff --git a/authentik/outposts/controllers/k8s/base.py b/authentik/outposts/controllers/k8s/base.py index f6dd4f6f49..1be2a8b3b4 100644 --- a/authentik/outposts/controllers/k8s/base.py +++ b/authentik/outposts/controllers/k8s/base.py @@ -1,10 +1,12 @@ """Base Kubernetes Reconciler""" import re +import ssl from dataclasses import asdict from json import dumps from typing import TYPE_CHECKING, TypeVar +import urllib3 from dacite.core import from_dict from django.http import HttpResponseNotFound from django.utils.text import slugify @@ -41,7 +43,11 @@ class KubernetesObjectReconciler[T]: def __init__(self, controller: KubernetesController): self.controller = controller self.namespace = controller.outpost.config.kubernetes_namespace + self.kubernetes_disable_x509_strict = ( + controller.outpost.config.kubernetes_disable_x509_strict + ) self.logger = get_logger().bind(type=self.__class__.__name__) + self.api_client = self.k8s_client() def get_patch(self): """Get any patches that apply to this CRD""" @@ -92,7 +98,7 @@ class KubernetesObjectReconciler[T]: reference = self.get_reference_object() patch = self.get_patch() try: - json = ApiClient().sanitize_for_serialization(reference) + json = self.api_client.sanitize_for_serialization(reference) # Custom objects will not be known to the clients openapi types except AttributeError: json = asdict(reference) @@ -106,7 +112,7 @@ class KubernetesObjectReconciler[T]: mock_response.data = dumps(ref) try: - result = ApiClient().deserialize(mock_response, reference.__class__.__name__) + result = self.api_client.deserialize(mock_response, reference.__class__.__name__) # Custom objects will not be known to the clients openapi types except AttributeError: result = from_dict(reference.__class__, data=ref) @@ -185,8 +191,10 @@ class KubernetesObjectReconciler[T]: patch = self.get_patch() if patch is not None: - current_json = ApiClient().sanitize_for_serialization(current) - + try: + current_json = self.api_client.sanitize_for_serialization(current) + except AttributeError: + current_json = asdict(current) try: if apply_patch(current_json, patch) != current_json: raise NeedsUpdate() @@ -224,3 +232,26 @@ class KubernetesObjectReconciler[T]: }, **kwargs, ) + + def k8s_client(self) -> ApiClient: + """Get Kubernetes API client""" + api_client = ApiClient() + if self.kubernetes_disable_x509_strict: + self.logger.warning("Disabling strict X.509 certificate verification") + # Relax OpenSSL TLS validation to support legacy root CA certificates + # (e.g. from Kubernetes <= 1.16) which may not satisfy the stricter + # VERIFY_X509_STRICT flags enforced by default in Python 3.13+. + # See https://github.com/kubernetes-client/python/issues/2394 + ctx = ssl.create_default_context() + ctx.verify_flags = ctx.verify_flags & ~ssl.VERIFY_X509_STRICT + + # We need to recreate the pool manager with the new SSL context + # We try to preserve existing pool manager arguments + pool_args = api_client.rest_client.pool_manager.connection_pool_kw + + api_client.rest_client.pool_manager = urllib3.PoolManager( + num_pools=4, + ssl_context=ctx, + **pool_args, + ) + return api_client diff --git a/authentik/outposts/controllers/k8s/service.py b/authentik/outposts/controllers/k8s/service.py index 44bfd57396..446cf9caf7 100644 --- a/authentik/outposts/controllers/k8s/service.py +++ b/authentik/outposts/controllers/k8s/service.py @@ -2,7 +2,7 @@ from typing import TYPE_CHECKING -from kubernetes.client import CoreV1Api, V1Service, V1ServicePort, V1ServiceSpec +from kubernetes.client import CoreV1Api, V1ObjectMeta, V1Service, V1ServicePort, V1ServiceSpec from authentik.outposts.controllers.base import FIELD_MANAGER from authentik.outposts.controllers.k8s.base import KubernetesObjectReconciler @@ -84,3 +84,47 @@ class ServiceReconciler(KubernetesObjectReconciler[V1Service]): reference, field_manager=FIELD_MANAGER, ) + + +class MetricsServiceReconciler(ServiceReconciler): + @property + def noop(self) -> bool: + return self.is_embedded + + @staticmethod + def reconciler_name() -> str: + return "service-metrics" + + @property + def name(self): + name_suffix = "-metrics" + name = super().name + return name[: 63 - len(name_suffix)] + name_suffix + + def get_object_meta(self, **kwargs) -> V1ObjectMeta: + meta: V1ObjectMeta = super().get_object_meta(**kwargs) + meta.labels["goauthentik.io/service-type"] = "metrics" + return meta + + def get_reference_object(self) -> V1Service: + """Get deployment object for outpost""" + meta = self.get_object_meta(name=self.name) + ports = [] + for port in self.controller.metrics_ports: + ports.append( + V1ServicePort( + name=port.name, + port=port.port, + protocol=port.protocol.upper(), + target_port=port.inner_port or port.port, + ) + ) + selector_labels = DeploymentReconciler(self.controller).get_pod_meta() + return V1Service( + metadata=meta, + spec=V1ServiceSpec( + ports=ports, + selector=selector_labels, + type="ClusterIP", + ), + ) diff --git a/authentik/outposts/controllers/k8s/service_monitor.py b/authentik/outposts/controllers/k8s/service_monitor.py index 1856e61c3f..12e8c4f661 100644 --- a/authentik/outposts/controllers/k8s/service_monitor.py +++ b/authentik/outposts/controllers/k8s/service_monitor.py @@ -8,6 +8,8 @@ from kubernetes.client import ApiextensionsV1Api, CustomObjectsApi from authentik.outposts.controllers.base import FIELD_MANAGER from authentik.outposts.controllers.k8s.base import KubernetesObjectReconciler +from authentik.outposts.controllers.k8s.service import MetricsServiceReconciler +from authentik.outposts.controllers.k8s.triggers import NeedsUpdate if TYPE_CHECKING: from authentik.outposts.controllers.kubernetes import KubernetesController @@ -55,6 +57,10 @@ class PrometheusServiceMonitor: metadata: PrometheusServiceMonitorMetadata spec: PrometheusServiceMonitorSpec + def to_dict(self): + """`to_dict` to conform to how the kubernetes client converts objects to dicts""" + return asdict(self) + CRD_NAME = "servicemonitors.monitoring.coreos.com" CRD_GROUP = "monitoring.coreos.com" @@ -74,6 +80,11 @@ class PrometheusServiceMonitorReconciler(KubernetesObjectReconciler[PrometheusSe def reconciler_name() -> str: return "prometheus servicemonitor" + def reconcile(self, current: PrometheusServiceMonitor, reference: PrometheusServiceMonitor): + if current.spec.selector.matchLabels != reference.spec.selector.matchLabels: + raise NeedsUpdate() + super().reconcile(current, reference) + @property def noop(self) -> bool: if not self._crd_exists(): @@ -108,7 +119,9 @@ class PrometheusServiceMonitorReconciler(KubernetesObjectReconciler[PrometheusSe ) ], selector=PrometheusServiceMonitorSpecSelector( - matchLabels=self.get_object_meta(name=self.name).labels, + matchLabels=MetricsServiceReconciler(self.controller) + .get_object_meta(name=self.name) + .labels, ), ), ) diff --git a/authentik/outposts/controllers/kubernetes.py b/authentik/outposts/controllers/kubernetes.py index 77082c3b4f..f7a2b15857 100644 --- a/authentik/outposts/controllers/kubernetes.py +++ b/authentik/outposts/controllers/kubernetes.py @@ -18,7 +18,7 @@ from authentik.outposts.controllers.base import BaseClient, BaseController, Cont from authentik.outposts.controllers.k8s.base import KubernetesObjectReconciler from authentik.outposts.controllers.k8s.deployment import DeploymentReconciler from authentik.outposts.controllers.k8s.secret import SecretReconciler -from authentik.outposts.controllers.k8s.service import ServiceReconciler +from authentik.outposts.controllers.k8s.service import MetricsServiceReconciler, ServiceReconciler from authentik.outposts.controllers.k8s.service_monitor import PrometheusServiceMonitorReconciler from authentik.outposts.models import ( KubernetesServiceConnection, @@ -74,6 +74,7 @@ class KubernetesController(BaseController): SecretReconciler.reconciler_name(): SecretReconciler, DeploymentReconciler.reconciler_name(): DeploymentReconciler, ServiceReconciler.reconciler_name(): ServiceReconciler, + MetricsServiceReconciler.reconciler_name(): MetricsServiceReconciler, PrometheusServiceMonitorReconciler.reconciler_name(): ( PrometheusServiceMonitorReconciler ), @@ -82,6 +83,7 @@ class KubernetesController(BaseController): SecretReconciler.reconciler_name(), DeploymentReconciler.reconciler_name(), ServiceReconciler.reconciler_name(), + MetricsServiceReconciler.reconciler_name(), PrometheusServiceMonitorReconciler.reconciler_name(), ] diff --git a/authentik/outposts/models.py b/authentik/outposts/models.py index 3d0258e9cc..c322c6b023 100644 --- a/authentik/outposts/models.py +++ b/authentik/outposts/models.py @@ -81,6 +81,7 @@ class OutpostConfig: kubernetes_disabled_components: list[str] = field(default_factory=list) kubernetes_image_pull_secrets: list[str] = field(default_factory=list) kubernetes_json_patches: dict[str, list[dict[str, Any]]] | None = field(default=None) + kubernetes_disable_x509_strict: bool = field(default=False) class OutpostModel(Model): @@ -403,7 +404,7 @@ class Outpost(ScheduledModel, SerializerModel, ManagedModel): def token(self) -> Token: """Get/create token for auto-generated user""" managed = f"goauthentik.io/outpost/{self.token_identifier}" - tokens = Token.filter_not_expired( + tokens = Token.objects.filter( identifier=self.token_identifier, intent=TokenIntents.INTENT_API, managed=managed, diff --git a/authentik/outposts/tests/test_controller_k8s.py b/authentik/outposts/tests/test_controller_k8s.py index cfd116ffe3..be5d9edaf1 100644 --- a/authentik/outposts/tests/test_controller_k8s.py +++ b/authentik/outposts/tests/test_controller_k8s.py @@ -1,11 +1,16 @@ """Kubernetes controller tests""" +from unittest.mock import MagicMock, patch + from django.test import TestCase +from kubernetes.client import ApiClient +from yaml import SafeLoader, load_all from authentik.blueprints.tests import reconcile_app from authentik.lib.generators import generate_id from authentik.outposts.apps import MANAGED_OUTPOST from authentik.outposts.controllers.k8s.deployment import DeploymentReconciler +from authentik.outposts.controllers.k8s.service_monitor import PrometheusServiceMonitorReconciler from authentik.outposts.controllers.kubernetes import KubernetesController from authentik.outposts.models import KubernetesServiceConnection, Outpost, OutpostType @@ -28,7 +33,7 @@ class KubernetesControllerTests(TestCase): self.integration, # Pass something not-none as client so we don't # attempt to connect to K8s as that's not needed - client=self, + client=ApiClient(), ) rec = DeploymentReconciler(controller) self.assertEqual(rec.name, "ak-outpost-authentik-embedded-outpost") @@ -42,3 +47,18 @@ class KubernetesControllerTests(TestCase): controller.outpost.config = _cfg self.assertEqual(rec.name, f"outpost-{controller.outpost.uuid.hex}") self.assertLess(len(rec.name), 64) + + def test_static(self): + self.controller = KubernetesController( + self.outpost, + self.integration, + # Pass something not-none as client so we don't + # attempt to connect to K8s as that's not needed + client=ApiClient(), + ) + with patch.object( + PrometheusServiceMonitorReconciler, "_crd_exists", MagicMock(return_value=True) + ): + manifest = self.controller.get_static_deployment() + manifests = list(load_all(manifest, Loader=SafeLoader)) + self.assertEqual(len(manifests), 5) diff --git a/authentik/policies/api/bindings.py b/authentik/policies/api/bindings.py index 855ab1e532..4ed89e2f08 100644 --- a/authentik/policies/api/bindings.py +++ b/authentik/policies/api/bindings.py @@ -57,9 +57,11 @@ class PolicyBindingSerializer(ModelSerializer): required=True, ) - policy_obj = PolicySerializer(required=False, read_only=True, source="policy") - group_obj = PartialGroupSerializer(required=False, read_only=True, source="group") - user_obj = PartialUserSerializer(required=False, read_only=True, source="user") + policy_obj = PolicySerializer(required=False, allow_null=True, read_only=True, source="policy") + group_obj = PartialGroupSerializer( + required=False, allow_null=True, read_only=True, source="group" + ) + user_obj = PartialUserSerializer(required=False, allow_null=True, read_only=True, source="user") class Meta: model = PolicyBinding diff --git a/authentik/policies/apps.py b/authentik/policies/apps.py index 8821ecf358..70b4b2bebd 100644 --- a/authentik/policies/apps.py +++ b/authentik/policies/apps.py @@ -1,4 +1,4 @@ -"""Authentik policies app config +"""authentik policies app config Every system policy should be its own Django app under the `policies` app. For example: The 'dummy' policy is available at `authentik.policies.dummy`. @@ -38,4 +38,3 @@ class AuthentikPoliciesConfig(ManagedAppConfig): label = "authentik_policies" verbose_name = "authentik Policies" default = True - mountpoint = "policy/" diff --git a/authentik/policies/event_matcher/api.py b/authentik/policies/event_matcher/api.py index 866067322c..d37220e505 100644 --- a/authentik/policies/event_matcher/api.py +++ b/authentik/policies/event_matcher/api.py @@ -6,8 +6,9 @@ from rest_framework.fields import ChoiceField from rest_framework.viewsets import ModelViewSet from authentik.core.api.used_by import UsedByMixin +from authentik.lib.api import app_choices, model_choices from authentik.policies.api.policies import PolicySerializer -from authentik.policies.event_matcher.models import EventMatcherPolicy, app_choices, model_choices +from authentik.policies.event_matcher.models import EventMatcherPolicy class EventMatcherPolicySerializer(PolicySerializer): @@ -39,18 +40,14 @@ class EventMatcherPolicySerializer(PolicySerializer): and attrs["client_ip"] == "" and attrs["app"] == "" and attrs["model"] == "" + and attrs["query"] == "" ): raise ValidationError(_("At least one criteria must be set.")) return super().validate(attrs) class Meta: model = EventMatcherPolicy - fields = PolicySerializer.Meta.fields + [ - "action", - "client_ip", - "app", - "model", - ] + fields = PolicySerializer.Meta.fields + ["action", "client_ip", "app", "model", "query"] class EventMatcherPolicyViewSet(UsedByMixin, ModelViewSet): diff --git a/authentik/policies/event_matcher/migrations/0027_eventmatcherpolicy_query.py b/authentik/policies/event_matcher/migrations/0027_eventmatcherpolicy_query.py new file mode 100644 index 0000000000..a694d35b43 --- /dev/null +++ b/authentik/policies/event_matcher/migrations/0027_eventmatcherpolicy_query.py @@ -0,0 +1,18 @@ +# Generated by Django 5.2.12 on 2026-04-12 19:06 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("authentik_policies_event_matcher", "0026_alter_eventmatcherpolicy_action"), + ] + + operations = [ + migrations.AddField( + model_name="eventmatcherpolicy", + name="query", + field=models.TextField(default=None, null=True), + ), + ] diff --git a/authentik/policies/event_matcher/models.py b/authentik/policies/event_matcher/models.py index 223b428995..ef38aafd1f 100644 --- a/authentik/policies/event_matcher/models.py +++ b/authentik/policies/event_matcher/models.py @@ -2,14 +2,13 @@ from itertools import chain -from django.apps import apps from django.db import models from django.utils.translation import gettext as _ +from djangoql.queryset import apply_search from rest_framework.serializers import BaseSerializer from structlog.stdlib import get_logger -from authentik.blueprints.v1.importer import is_model_allowed -from authentik.blueprints.v1.meta.registry import BaseMetaModel +from authentik.api.search.ql import BaseSchema from authentik.events.models import Event, EventAction from authentik.policies.models import Policy from authentik.policies.types import PolicyRequest, PolicyResult @@ -17,31 +16,13 @@ from authentik.policies.types import PolicyRequest, PolicyResult LOGGER = get_logger() -def app_choices() -> list[tuple[str, str]]: - """Get a list of all installed applications that create events. - Returns a list of tuples containing (dotted.app.path, name)""" - choices = [] - for app in apps.get_app_configs(): - if app.label.startswith("authentik"): - choices.append((app.name, app.verbose_name)) - return choices - - -def model_choices() -> list[tuple[str, str]]: - """Get a list of all installed models - Returns a list of tuples containing (dotted.model.path, name)""" - choices = [] - for model in apps.get_models(): - if not is_model_allowed(model) or issubclass(model, BaseMetaModel): - continue - name = f"{model._meta.app_label}.{model._meta.model_name}" - choices.append((name, model._meta.verbose_name)) - return choices - - class EventMatcherPolicy(Policy): """Passes when Event matches selected criteria.""" + query = models.TextField( + null=True, + default=None, + ) action = models.TextField( choices=EventAction.choices, null=True, @@ -94,6 +75,7 @@ class EventMatcherPolicy(Policy): matches: list[PolicyResult] = [] messages = [] checks = [ + self.passes_query, self.passes_action, self.passes_client_ip, self.passes_app, @@ -115,6 +97,20 @@ class EventMatcherPolicy(Policy): result.source_results = matches return result + def passes_query(self, request: PolicyRequest, event: Event) -> PolicyResult | None: + """Check AKQL query""" + if not self.query: + return None + from authentik.events.api.events import EventViewSet + + class InlineSchema(BaseSchema): + def get_fields(self, model): + return EventViewSet().get_ql_fields() + + print(Event.objects.filter(pk=event.pk)) + qs = apply_search(Event.objects.filter(pk=event.pk), self.query, InlineSchema) + return PolicyResult(qs.exists(), "Query matched.") + def passes_action(self, request: PolicyRequest, event: Event) -> PolicyResult | None: """Check if `self.action` matches""" if self.action is None: diff --git a/authentik/policies/event_matcher/tests.py b/authentik/policies/event_matcher/tests.py index 07922190c9..cc20b13243 100644 --- a/authentik/policies/event_matcher/tests.py +++ b/authentik/policies/event_matcher/tests.py @@ -101,3 +101,14 @@ class TestEventMatcherPolicy(TestCase): policy: EventMatcherPolicy = EventMatcherPolicy.objects.create(client_ip="1.2.3.4") response = policy.passes(request) self.assertFalse(response.passing) + + def test_match_query(self): + """Test match query""" + event = Event.new(EventAction.LOGIN) + event.save() + request = PolicyRequest(get_anonymous_user()) + request.context["event"] = event + policy: EventMatcherPolicy = EventMatcherPolicy.objects.create(query='action = "login"') + response = policy.passes(request) + self.assertTrue(response.passing) + self.assertTupleEqual(response.messages, ("Query matched.",)) diff --git a/authentik/policies/reputation/api.py b/authentik/policies/reputation/api.py index b0af68b60e..29c9abb936 100644 --- a/authentik/policies/reputation/api.py +++ b/authentik/policies/reputation/api.py @@ -79,7 +79,7 @@ class ReputationViewSet( ): """Reputation Viewset""" - queryset = Reputation.objects.all() + queryset = Reputation.objects.including_expired().all() serializer_class = ReputationSerializer search_fields = ["identifier", "ip", "score"] filterset_class = ReputationFilter diff --git a/authentik/policies/reputation/migrations/0011_alter_reputation_managers.py b/authentik/policies/reputation/migrations/0011_alter_reputation_managers.py new file mode 100644 index 0000000000..abc790de40 --- /dev/null +++ b/authentik/policies/reputation/migrations/0011_alter_reputation_managers.py @@ -0,0 +1,17 @@ +# Generated by Django 5.2.9 on 2025-12-06 00:00 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ("authentik_policies_reputation", "0010_alter_reputation_managers"), + ] + + operations = [ + migrations.AlterModelManagers( + name="reputation", + managers=[], + ), + ] diff --git a/authentik/policies/reputation/models.py b/authentik/policies/reputation/models.py index cdb5a263e3..83fe099880 100644 --- a/authentik/policies/reputation/models.py +++ b/authentik/policies/reputation/models.py @@ -8,7 +8,6 @@ from django.db.models import Sum from django.db.models.query_utils import Q from django.utils.timezone import now from django.utils.translation import gettext as _ -from psqlextra.manager import PostgresManager from rest_framework.serializers import BaseSerializer from structlog import get_logger @@ -72,8 +71,6 @@ class ReputationPolicy(Policy): class Reputation(InternallyManagedMixin, ExpiringModel, SerializerModel): """Reputation for user and or IP.""" - objects = PostgresManager() - reputation_uuid = models.UUIDField(primary_key=True, unique=True, default=uuid4) identifier = models.TextField() diff --git a/authentik/policies/reputation/signals.py b/authentik/policies/reputation/signals.py index c9429fdb58..d22b46d5c7 100644 --- a/authentik/policies/reputation/signals.py +++ b/authentik/policies/reputation/signals.py @@ -6,6 +6,7 @@ from django.db.models.functions import Greatest, Least from django.dispatch import receiver from django.http import HttpRequest from psqlextra.query import ConflictAction +from psqlextra.util import postgres_manager from structlog.stdlib import get_logger from authentik.core.signals import login_failed @@ -25,23 +26,24 @@ def update_score(request: HttpRequest, identifier: str, amount: int): tenant = getattr(request, "tenant", get_current_tenant()) amount = max(tenant.reputation_lower_limit, min(tenant.reputation_upper_limit, amount)) - reputation = Reputation.objects.on_conflict( - ["ip", "identifier"], - ConflictAction.UPDATE, - update_values=dict( - score=Greatest( - tenant.reputation_lower_limit, - Least(tenant.reputation_upper_limit, F("score") + amount), + with postgres_manager(Reputation) as manager: + reputation = manager.on_conflict( + ["ip", "identifier"], + ConflictAction.UPDATE, + update_values=dict( + score=Greatest( + tenant.reputation_lower_limit, + Least(tenant.reputation_upper_limit, F("score") + amount), + ), ), - ), - ).insert_and_get( - ip=remote_ip, - identifier=identifier, - score=amount, - ip_geo_data=GEOIP_CONTEXT_PROCESSOR.city_dict(remote_ip) or {}, - ip_asn_data=ASN_CONTEXT_PROCESSOR.asn_dict(remote_ip) or {}, - expires=reputation_expiry(), - ) + ).insert_and_get( + ip=remote_ip, + identifier=identifier, + score=amount, + ip_geo_data=GEOIP_CONTEXT_PROCESSOR.city_dict(remote_ip) or {}, + ip_asn_data=ASN_CONTEXT_PROCESSOR.asn_dict(remote_ip) or {}, + expires=reputation_expiry(), + ) LOGGER.info("Updated score", amount=reputation.score, for_user=identifier, for_ip=remote_ip) diff --git a/authentik/policies/templates/policies/buffer.html b/authentik/policies/templates/policies/buffer.html deleted file mode 100644 index 5438f96106..0000000000 --- a/authentik/policies/templates/policies/buffer.html +++ /dev/null @@ -1,121 +0,0 @@ -{% extends 'login/base_full.html' %} - -{% load static %} -{% load i18n %} - -{% block head %} -{{ block.super }} - -{% endblock %} - -{% block title %} -{% trans 'Waiting for authentication...' %} - {{ brand.branding_title }} -{% endblock %} - -{% block card_title %} -{% trans 'Waiting for authentication...' %} -{% endblock %} - -{% block card %} -
- {% if auth_req_method == "post" %} - {% for key, value in auth_req_body.items %} - - {% endfor %} - {% endif %} -
-
-
- - - - - -
-

- {% trans "You're already authenticating in another tab. This page will refresh once authentication is completed." %} -

-
-
- -
-{% endblock %} diff --git a/authentik/policies/urls.py b/authentik/policies/urls.py index 522f79fc2e..b8b5ba9191 100644 --- a/authentik/policies/urls.py +++ b/authentik/policies/urls.py @@ -1,14 +1,7 @@ """API URLs""" -from django.urls import path - from authentik.policies.api.bindings import PolicyBindingViewSet from authentik.policies.api.policies import PolicyViewSet -from authentik.policies.views import BufferView - -urlpatterns = [ - path("buffer", BufferView.as_view(), name="buffer"), -] api_urlpatterns = [ ("policies/all", PolicyViewSet), diff --git a/authentik/policies/views.py b/authentik/policies/views.py index ff78e89706..39db1f0242 100644 --- a/authentik/policies/views.py +++ b/authentik/policies/views.py @@ -4,13 +4,12 @@ from typing import Any from django.contrib import messages from django.contrib.auth.mixins import AccessMixin -from django.http import Http404, HttpRequest, HttpResponse, QueryDict -from django.urls import reverse -from django.utils.http import urlencode +from django.http import Http404, HttpRequest, HttpResponse from django.utils.translation import gettext as _ -from django.views.generic.base import TemplateView, View +from django.views.generic.base import View from structlog.stdlib import get_logger +from authentik.core.apps import AppAccessWithoutBindings from authentik.core.models import Application, Provider, User from authentik.flows.exceptions import EmptyFlowException, FlowNonApplicableException from authentik.flows.models import Flow, FlowDesignation @@ -30,9 +29,6 @@ from authentik.policies.models import PolicyBindingModel from authentik.policies.types import PolicyRequest, PolicyResult LOGGER = get_logger() -QS_BUFFER_ID = "af_bf_id" -QS_SKIP_BUFFER = "skip_buffer" -SESSION_KEY_BUFFER = "authentik/policies/pav_buffer/%s" class RequestValidationError(SentryIgnoredException): @@ -46,12 +42,6 @@ class RequestValidationError(SentryIgnoredException): self.response = response -class BaseMixin: - """Base Mixin class, used to annotate View Member variables""" - - request: HttpRequest - - class PolicyAccessView(AccessMixin, View): """Mixin class for usage in Authorization views. Provider functions to check application access, etc""" @@ -146,6 +136,7 @@ class PolicyAccessView(AccessMixin, View): policy_engine = PolicyEngine( pbm or self.application, user or self.request.user, self.request ) + policy_engine.empty_result = AppAccessWithoutBindings.get() policy_engine.use_cache = False policy_engine.request = self.modify_policy_request(policy_engine.request) policy_engine.build() @@ -162,30 +153,3 @@ class PolicyAccessView(AccessMixin, View): for message in result.messages: messages.error(self.request, _(message)) return result - - -def url_with_qs(url: str, **kwargs): - """Update/set querystring of `url` with the parameters in `kwargs`. Original query string - parameters are retained""" - if "?" not in url: - return url + f"?{urlencode(kwargs)}" - url, _, qs = url.partition("?") - qs = QueryDict(qs, mutable=True) - qs.update(kwargs) - return url + f"?{urlencode(qs.items())}" - - -class BufferView(TemplateView): - """Buffer view""" - - template_name = "policies/buffer.html" - - def get_context_data(self, **kwargs): - buf_id = self.request.GET.get(QS_BUFFER_ID) - buffer: dict = self.request.session.get(SESSION_KEY_BUFFER % buf_id) - kwargs["auth_req_method"] = buffer["method"] - kwargs["auth_req_body"] = buffer["body"] - kwargs["auth_req_url"] = url_with_qs(buffer["url"], **{QS_SKIP_BUFFER: True}) - kwargs["check_auth_url"] = reverse("authentik_api:user-me") - kwargs["continue_url"] = url_with_qs(buffer["url"], **{QS_BUFFER_ID: buf_id}) - return super().get_context_data(**kwargs) diff --git a/authentik/providers/ldap/api.py b/authentik/providers/ldap/api.py index 93b66eeea0..228a2b729e 100644 --- a/authentik/providers/ldap/api.py +++ b/authentik/providers/ldap/api.py @@ -17,6 +17,7 @@ from rest_framework.viewsets import GenericViewSet, ModelViewSet from authentik.core.api.providers import ProviderSerializer from authentik.core.api.used_by import UsedByMixin from authentik.core.api.utils import ModelSerializer, PassiveSerializer +from authentik.core.apps import AppAccessWithoutBindings from authentik.core.models import Application from authentik.policies.api.exec import PolicyTestResultSerializer from authentik.policies.engine import PolicyEngine @@ -153,6 +154,7 @@ class LDAPOutpostConfigViewSet(ListModelMixin, GenericViewSet): provider = get_object_or_404(LDAPProvider, pk=pk) application = get_object_or_404(Application, slug=request.query_params["app_slug"]) engine = PolicyEngine(application, request.user, request) + engine.empty_result = AppAccessWithoutBindings.get() engine.use_cache = False engine.build() result = engine.result diff --git a/authentik/providers/oauth2/api/providers.py b/authentik/providers/oauth2/api/providers.py index 89ca25509e..1d547d85c5 100644 --- a/authentik/providers/oauth2/api/providers.py +++ b/authentik/providers/oauth2/api/providers.py @@ -27,6 +27,7 @@ from authentik.providers.oauth2.models import ( AccessToken, OAuth2Provider, RedirectURIMatchingMode, + RedirectURIType, ScopeMapping, ) from authentik.rbac.decorators import permission_required @@ -37,6 +38,9 @@ class RedirectURISerializer(PassiveSerializer): matching_mode = ChoiceField(choices=RedirectURIMatchingMode.choices) url = CharField() + redirect_uri_type = ChoiceField( + choices=RedirectURIType.choices, default=RedirectURIType.AUTHORIZATION, required=False + ) class OAuth2ProviderSerializer(ProviderSerializer): @@ -61,6 +65,7 @@ class OAuth2ProviderSerializer(ProviderSerializer): fields = ProviderSerializer.Meta.fields + [ "authorization_flow", "client_type", + "grant_types", "client_id", "client_secret", "access_code_validity", diff --git a/authentik/providers/oauth2/api/tokens.py b/authentik/providers/oauth2/api/tokens.py index ba77860573..2c7f772439 100644 --- a/authentik/providers/oauth2/api/tokens.py +++ b/authentik/providers/oauth2/api/tokens.py @@ -9,10 +9,10 @@ from rest_framework.fields import CharField, ListField, SerializerMethodField from rest_framework.filters import OrderingFilter, SearchFilter from rest_framework.viewsets import GenericViewSet +from authentik.core.api.providers import ProviderSerializer from authentik.core.api.used_by import UsedByMixin from authentik.core.api.users import UserSerializer from authentik.core.api.utils import MetaNameSerializer, ModelSerializer -from authentik.providers.oauth2.api.providers import OAuth2ProviderSerializer from authentik.providers.oauth2.models import AccessToken, AuthorizationCode, RefreshToken @@ -20,7 +20,7 @@ class ExpiringBaseGrantModelSerializer(ModelSerializer, MetaNameSerializer): """Serializer for BaseGrantModel and ExpiringBaseGrant""" user = UserSerializer() - provider = OAuth2ProviderSerializer() + provider = ProviderSerializer() scope = ListField(child=CharField()) class Meta: @@ -62,7 +62,7 @@ class AuthorizationCodeViewSet( ): """AuthorizationCode Viewset""" - queryset = AuthorizationCode.objects.all() + queryset = AuthorizationCode.objects.including_expired().all() serializer_class = ExpiringBaseGrantModelSerializer filterset_fields = ["user", "provider"] ordering = ["provider", "expires"] @@ -88,7 +88,7 @@ class RefreshTokenViewSet( ): """RefreshToken Viewset""" - queryset = RefreshToken.objects.all() + queryset = RefreshToken.objects.including_expired().all() serializer_class = TokenModelSerializer filterset_fields = ["user", "provider"] ordering = ["provider", "expires"] @@ -114,7 +114,7 @@ class AccessTokenViewSet( ): """AccessToken Viewset""" - queryset = AccessToken.objects.all() + queryset = AccessToken.objects.including_expired().all() serializer_class = TokenModelSerializer filterset_fields = ["user", "provider"] ordering = ["provider", "expires"] diff --git a/authentik/providers/oauth2/errors.py b/authentik/providers/oauth2/errors.py index cc258ddcd1..2443580f1a 100644 --- a/authentik/providers/oauth2/errors.py +++ b/authentik/providers/oauth2/errors.py @@ -7,7 +7,7 @@ from django.http import HttpRequest, HttpResponse, HttpResponseRedirect from authentik.events.models import Event, EventAction from authentik.lib.sentry import SentryIgnoredException from authentik.lib.views import bad_request_message -from authentik.providers.oauth2.models import GrantTypes, RedirectURI +from authentik.providers.oauth2.models import GrantType, RedirectURI class OAuth2Error(SentryIgnoredException): @@ -182,7 +182,7 @@ class AuthorizeError(OAuth2Error): # See: # http://openid.net/specs/openid-connect-core-1_0.html#ImplicitAuthError fragment_or_query = ( - "#" if self.grant_type in [GrantTypes.IMPLICIT, GrantTypes.HYBRID] else "?" + "#" if self.grant_type in [GrantType.IMPLICIT, GrantType.HYBRID] else "?" ) uri = ( @@ -225,7 +225,7 @@ class TokenError(OAuth2Error): ), } - def __init__(self, error): + def __init__(self, error: str): super().__init__() self.error = error self.description = self.errors[error] diff --git a/authentik/providers/oauth2/migrations/0032_oauth2provider_grant_types.py b/authentik/providers/oauth2/migrations/0032_oauth2provider_grant_types.py new file mode 100644 index 0000000000..852b062514 --- /dev/null +++ b/authentik/providers/oauth2/migrations/0032_oauth2provider_grant_types.py @@ -0,0 +1,69 @@ +# Generated by Django 5.2.11 on 2026-02-17 11:04 + +import django.contrib.postgres.fields +from django.db import migrations, models + + +def migrate_default_grant_types(): + from authentik.providers.oauth2.models import GrantType + + return [ + GrantType.AUTHORIZATION_CODE, + GrantType.HYBRID, + GrantType.IMPLICIT, + GrantType.CLIENT_CREDENTIALS, + GrantType.PASSWORD, + GrantType.DEVICE_CODE, + GrantType.REFRESH_TOKEN, + ] + + +class Migration(migrations.Migration): + + dependencies = [ + ( + "authentik_providers_oauth2", + "0031_remove_oauth2provider_backchannel_logout_uri_and_more", + ), + ] + + operations = [ + migrations.AddField( + model_name="oauth2provider", + name="grant_types", + field=django.contrib.postgres.fields.ArrayField( + base_field=models.TextField( + choices=[ + ("authorization_code", "Authorization Code"), + ("implicit", "Implicit"), + ("hybrid", "Hybrid"), + ("refresh_token", "Refresh Token"), + ("client_credentials", "Client Credentials"), + ("password", "Password"), + ("urn:ietf:params:oauth:grant-type:device_code", "Device Code"), + ] + ), + default=migrate_default_grant_types, + size=None, + ), + ), + migrations.AlterField( + model_name="oauth2provider", + name="grant_types", + field=django.contrib.postgres.fields.ArrayField( + base_field=models.TextField( + choices=[ + ("authorization_code", "Authorization Code"), + ("implicit", "Implicit"), + ("hybrid", "Hybrid"), + ("refresh_token", "Refresh Token"), + ("client_credentials", "Client Credentials"), + ("password", "Password"), + ("urn:ietf:params:oauth:grant-type:device_code", "Device Code"), + ] + ), + default=list, + size=None, + ), + ), + ] diff --git a/authentik/providers/oauth2/models.py b/authentik/providers/oauth2/models.py index 07aaf284f2..b46be9bc93 100644 --- a/authentik/providers/oauth2/models.py +++ b/authentik/providers/oauth2/models.py @@ -19,6 +19,7 @@ from cryptography.hazmat.primitives.asymmetric.rsa import RSAPrivateKey from cryptography.hazmat.primitives.asymmetric.types import PrivateKeyTypes from dacite import Config from dacite.core import from_dict +from django.contrib.postgres.fields import ArrayField from django.contrib.postgres.indexes import HashIndex from django.db import models from django.http import HttpRequest @@ -33,7 +34,16 @@ from rest_framework.serializers import Serializer from structlog.stdlib import get_logger from authentik.brands.models import WebfingerProvider -from authentik.common.oauth.constants import SubModes +from authentik.common.oauth.constants import ( + GRANT_TYPE_AUTHORIZATION_CODE, + GRANT_TYPE_CLIENT_CREDENTIALS, + GRANT_TYPE_DEVICE_CODE, + GRANT_TYPE_HYBRID, + GRANT_TYPE_IMPLICIT, + GRANT_TYPE_PASSWORD, + GRANT_TYPE_REFRESH_TOKEN, + SubModes, +) from authentik.core.models import ( AuthenticatedSession, ExpiringModel, @@ -58,7 +68,7 @@ def generate_client_secret() -> str: return generate_id(128) -class ClientTypes(models.TextChoices): +class ClientType(models.TextChoices): """Confidential clients are capable of maintaining the confidentiality of their credentials. Public clients are incapable.""" @@ -66,12 +76,16 @@ class ClientTypes(models.TextChoices): PUBLIC = "public", _("Public") -class GrantTypes(models.TextChoices): +class GrantType(models.TextChoices): """OAuth2 Grant types we support""" - AUTHORIZATION_CODE = "authorization_code" - IMPLICIT = "implicit" - HYBRID = "hybrid" + AUTHORIZATION_CODE = GRANT_TYPE_AUTHORIZATION_CODE + IMPLICIT = GRANT_TYPE_IMPLICIT + HYBRID = GRANT_TYPE_HYBRID + REFRESH_TOKEN = GRANT_TYPE_REFRESH_TOKEN + CLIENT_CREDENTIALS = GRANT_TYPE_CLIENT_CREDENTIALS + PASSWORD = GRANT_TYPE_PASSWORD + DEVICE_CODE = GRANT_TYPE_DEVICE_CODE class ResponseMode(models.TextChoices): @@ -97,6 +111,11 @@ class RedirectURIMatchingMode(models.TextChoices): REGEX = "regex", _("Regular Expression URL matching") +class RedirectURIType(models.TextChoices): + AUTHORIZATION = "authorization", _("Authorization") + LOGOUT = "logout", _("Logout") + + class OAuth2LogoutMethod(models.TextChoices): """OAuth2/OIDC Logout methods""" @@ -110,6 +129,7 @@ class RedirectURI: matching_mode: RedirectURIMatchingMode url: str + redirect_uri_type: RedirectURIType = RedirectURIType.AUTHORIZATION class ResponseTypes(models.TextChoices): @@ -182,14 +202,15 @@ class OAuth2Provider(WebfingerProvider, Provider): client_type = models.CharField( max_length=30, - choices=ClientTypes.choices, - default=ClientTypes.CONFIDENTIAL, + choices=ClientType.choices, + default=ClientType.CONFIDENTIAL, verbose_name=_("Client Type"), help_text=_( "Confidential clients are capable of maintaining the confidentiality " "of their credentials. Public clients are incapable" ), ) + grant_types = ArrayField(models.TextField(choices=GrantType.choices), default=list) client_id = models.CharField( max_length=255, unique=True, @@ -220,7 +241,6 @@ class OAuth2Provider(WebfingerProvider, Provider): "Frontchannel uses iframes in your browser" ), ) - include_claims_in_id_token = models.BooleanField( default=True, verbose_name=_("Include claims in id_token"), @@ -343,7 +363,12 @@ class OAuth2Provider(WebfingerProvider, Provider): from_dict( RedirectURI, entry, - config=Config(type_hooks={RedirectURIMatchingMode: RedirectURIMatchingMode}), + config=Config( + type_hooks={ + RedirectURIMatchingMode: RedirectURIMatchingMode, + RedirectURIType: RedirectURIType, + } + ), ) ) return uris @@ -355,10 +380,24 @@ class OAuth2Provider(WebfingerProvider, Provider): cleansed.append(asdict(entry)) self._redirect_uris = cleansed + @property + def authorization_redirect_uris(self) -> list[RedirectURI]: + return [ + uri + for uri in self.redirect_uris + if uri.redirect_uri_type == RedirectURIType.AUTHORIZATION + ] + + @property + def post_logout_redirect_uris(self) -> list[RedirectURI]: + return [ + uri for uri in self.redirect_uris if uri.redirect_uri_type == RedirectURIType.LOGOUT + ] + @property def launch_url(self) -> str | None: """Guess launch_url based on first redirect_uri""" - redirects = self.redirect_uris + redirects = self.authorization_redirect_uris if len(redirects) < 1: return None main_url = redirects[0].url diff --git a/authentik/providers/oauth2/signals.py b/authentik/providers/oauth2/signals.py index dfd0606ea7..5a04100d3b 100644 --- a/authentik/providers/oauth2/signals.py +++ b/authentik/providers/oauth2/signals.py @@ -1,13 +1,13 @@ -from urllib.parse import parse_qs, urlencode, urlparse, urlunparse - from django.db.models.signals import post_save, pre_delete from django.dispatch import receiver from structlog.stdlib import get_logger -from authentik.common.oauth.constants import PLAN_CONTEXT_OIDC_LOGOUT_IFRAME_SESSIONS +from authentik.common.oauth.constants import ( + OAUTH2_BINDING, + PLAN_CONTEXT_OIDC_LOGOUT_IFRAME_SESSIONS, +) from authentik.core.models import AuthenticatedSession, User from authentik.flows.models import in_memory_stage -from authentik.outposts.tasks import hash_session_key from authentik.providers.iframe_logout import IframeLogoutStageView from authentik.providers.oauth2.models import ( AccessToken, @@ -16,6 +16,7 @@ from authentik.providers.oauth2.models import ( RefreshToken, ) from authentik.providers.oauth2.tasks import backchannel_logout_notification_dispatch +from authentik.providers.oauth2.utils import build_frontchannel_logout_url from authentik.stages.user_logout.models import UserLogoutStage from authentik.stages.user_logout.stage import flow_pre_user_logout @@ -51,43 +52,22 @@ def handle_flow_pre_user_logout(sender, request, user, executor, **kwargs): LOGGER.debug("No sessions requiring IFrame frontchannel logout") return + session_key = auth_session.session.session_key if auth_session.session else None oidc_sessions = [] for token in oidc_access_tokens: - # Parse the logout URI and add query parameters - parsed_url = urlparse(token.provider.logout_uri) - - query_params = {} - query_params["iss"] = token.provider.get_issuer(request) - if auth_session.session: - query_params["sid"] = hash_session_key(auth_session.session.session_key) - - # Combine existing query params with new ones - if parsed_url.query: - existing_params = parse_qs(parsed_url.query, keep_blank_values=True) - for key, value in existing_params.items(): - if key not in query_params: - query_params[key] = value[0] if len(value) == 1 else value - - # Build the final URL with query parameters - logout_url = urlunparse( - ( - parsed_url.scheme, - parsed_url.netloc, - parsed_url.path, - parsed_url.params, - urlencode(query_params), - parsed_url.fragment, + logout_url = build_frontchannel_logout_url(token.provider, request, session_key) + if logout_url: + oidc_sessions.append( + { + "url": logout_url, + "provider_name": token.provider.name, + "binding": OAUTH2_BINDING, + "provider_type": ( + f"{token.provider._meta.app_label}.{token.provider._meta.model_name}" + ), + } ) - ) - - logout_data = { - "url": logout_url, - "provider_name": token.provider.name, - "binding": "redirect", - "provider_type": "oidc", - } - oidc_sessions.append(logout_data) if oidc_sessions: executor.plan.context[PLAN_CONTEXT_OIDC_LOGOUT_IFRAME_SESSIONS] = oidc_sessions @@ -139,6 +119,6 @@ def user_deactivated(sender, instance: User, **_): """Remove user tokens when deactivated""" if instance.is_active: return - AccessToken.objects.filter(user=instance).delete() - RefreshToken.objects.filter(user=instance).delete() - DeviceToken.objects.filter(user=instance).delete() + AccessToken.objects.including_expired().filter(user=instance).delete() + RefreshToken.objects.including_expired().filter(user=instance).delete() + DeviceToken.objects.including_expired().filter(user=instance).delete() diff --git a/authentik/providers/oauth2/tests/test_authorize.py b/authentik/providers/oauth2/tests/test_authorize.py index 8fec6585df..0789f2fa96 100644 --- a/authentik/providers/oauth2/tests/test_authorize.py +++ b/authentik/providers/oauth2/tests/test_authorize.py @@ -22,7 +22,7 @@ from authentik.providers.oauth2.errors import AuthorizeError, ClientIdError, Red from authentik.providers.oauth2.models import ( AccessToken, AuthorizationCode, - GrantTypes, + GrantType, OAuth2Provider, RedirectURI, RedirectURIMatchingMode, @@ -41,12 +41,34 @@ class TestAuthorize(OAuthTestCase): super().setUp() self.factory = RequestFactory() + def test_disallowed_grant_type(self): + """Test with disallowed grant type""" + OAuth2Provider.objects.create( + name=generate_id(), + client_id="test", + grant_types=[], + authorization_flow=create_test_flow(), + redirect_uris=[RedirectURI(RedirectURIMatchingMode.STRICT, "http://local.invalid/Foo")], + ) + with self.assertRaises(AuthorizeError) as cm: + request = self.factory.get( + "/", + data={ + "response_type": "code", + "client_id": "test", + "redirect_uri": "http://local.invalid/Foo", + }, + ) + OAuthAuthorizationParams.from_request(request) + self.assertEqual(cm.exception.error, "invalid_request") + def test_invalid_grant_type(self): """Test with invalid grant type""" OAuth2Provider.objects.create( name=generate_id(), client_id="test", authorization_flow=create_test_flow(), + grant_types=[GrantType.AUTHORIZATION_CODE], redirect_uris=[RedirectURI(RedirectURIMatchingMode.STRICT, "http://local.invalid/Foo")], ) with self.assertRaises(AuthorizeError) as cm: @@ -74,6 +96,7 @@ class TestAuthorize(OAuthTestCase): client_id="test", authorization_flow=create_test_flow(), redirect_uris=[RedirectURI(RedirectURIMatchingMode.STRICT, "http://local.invalid/Foo")], + grant_types=[GrantType.AUTHORIZATION_CODE], ) with self.assertRaises(AuthorizeError) as cm: request = self.factory.get( @@ -141,26 +164,6 @@ class TestAuthorize(OAuthTestCase): OAuthAuthorizationParams.from_request(request) self.assertEqual(cm.exception.cause, "redirect_uri_forbidden_scheme") - def test_invalid_redirect_uri_empty(self): - """test missing/invalid redirect URI""" - provider = OAuth2Provider.objects.create( - name=generate_id(), - client_id="test", - authorization_flow=create_test_flow(), - redirect_uris=[], - ) - request = self.factory.get( - "/", - data={ - "response_type": "code", - "client_id": "test", - "redirect_uri": "+", - }, - ) - OAuthAuthorizationParams.from_request(request) - provider.refresh_from_db() - self.assertEqual(provider.redirect_uris, [RedirectURI(RedirectURIMatchingMode.STRICT, "+")]) - def test_invalid_redirect_uri_regex(self): """test missing/invalid redirect URI""" OAuth2Provider.objects.create( @@ -208,6 +211,7 @@ class TestAuthorize(OAuthTestCase): client_id="test", authorization_flow=create_test_flow(), redirect_uris=[RedirectURI(RedirectURIMatchingMode.REGEX, ".+")], + grant_types=[GrantType.AUTHORIZATION_CODE], ) request = self.factory.get( "/", @@ -226,6 +230,7 @@ class TestAuthorize(OAuthTestCase): name=generate_id(), client_id="test", authorization_flow=create_test_flow(), + grant_types=[GrantType.AUTHORIZATION_CODE], redirect_uris=[RedirectURI(RedirectURIMatchingMode.STRICT, "http://local.invalid/Foo")], ) provider.property_mappings.set( @@ -247,12 +252,14 @@ class TestAuthorize(OAuthTestCase): ) self.assertEqual( OAuthAuthorizationParams.from_request(request).grant_type, - GrantTypes.AUTHORIZATION_CODE, + GrantType.AUTHORIZATION_CODE, ) self.assertEqual( OAuthAuthorizationParams.from_request(request).redirect_uri, "http://local.invalid/Foo", ) + provider.grant_types = [GrantType.IMPLICIT] + provider.save() request = self.factory.get( "/", data={ @@ -266,7 +273,7 @@ class TestAuthorize(OAuthTestCase): ) self.assertEqual( OAuthAuthorizationParams.from_request(request).grant_type, - GrantTypes.IMPLICIT, + GrantType.IMPLICIT, ) # Implicit without openid scope with self.assertRaises(AuthorizeError) as cm: @@ -281,8 +288,10 @@ class TestAuthorize(OAuthTestCase): ) self.assertEqual( OAuthAuthorizationParams.from_request(request).grant_type, - GrantTypes.IMPLICIT, + GrantType.IMPLICIT, ) + provider.grant_types = [GrantType.HYBRID] + provider.save() request = self.factory.get( "/", data={ @@ -294,7 +303,7 @@ class TestAuthorize(OAuthTestCase): }, ) self.assertEqual( - OAuthAuthorizationParams.from_request(request).grant_type, GrantTypes.HYBRID + OAuthAuthorizationParams.from_request(request).grant_type, GrantType.HYBRID ) with self.assertRaises(AuthorizeError) as cm: request = self.factory.get( @@ -317,6 +326,7 @@ class TestAuthorize(OAuthTestCase): authorization_flow=flow, redirect_uris=[RedirectURI(RedirectURIMatchingMode.STRICT, "foo://localhost")], access_code_validity="seconds=100", + grant_types=[GrantType.AUTHORIZATION_CODE], ) Application.objects.create(name="app", slug="app", provider=provider) state = generate_id() @@ -353,6 +363,7 @@ class TestAuthorize(OAuthTestCase): authorization_flow=flow, redirect_uris=[RedirectURI(RedirectURIMatchingMode.STRICT, "http://localhost")], signing_key=self.keypair, + grant_types=[GrantType.IMPLICIT], ) provider.property_mappings.set( ScopeMapping.objects.filter( @@ -394,7 +405,7 @@ class TestAuthorize(OAuthTestCase): "nonce": generate_id(), }, ) - token: AccessToken = AccessToken.objects.filter(user=user).first() + token = AccessToken.objects.filter(user=user).first() expires = timedelta_from_string(provider.access_token_validity).total_seconds() self.assertEqual( response.url, @@ -424,6 +435,7 @@ class TestAuthorize(OAuthTestCase): redirect_uris=[RedirectURI(RedirectURIMatchingMode.STRICT, "http://localhost")], signing_key=self.keypair, encryption_key=self.keypair, + grant_types=[GrantType.IMPLICIT], ) provider.property_mappings.set( ScopeMapping.objects.filter( @@ -466,7 +478,7 @@ class TestAuthorize(OAuthTestCase): }, ) self.assertEqual(response.status_code, 302) - token: AccessToken = AccessToken.objects.filter(user=user).first() + token = AccessToken.objects.filter(user=user).first() expires = timedelta_from_string(provider.access_token_validity).total_seconds() jwt = self.validate_jwe(token, provider) self.assertEqual(jwt["amr"], ["pwd"]) @@ -486,6 +498,7 @@ class TestAuthorize(OAuthTestCase): authorization_flow=flow, redirect_uris=[RedirectURI(RedirectURIMatchingMode.STRICT, "http://localhost")], signing_key=self.keypair, + grant_types=[GrantType.AUTHORIZATION_CODE], ) Application.objects.create(name="app", slug="app", provider=provider) state = generate_id() @@ -535,6 +548,7 @@ class TestAuthorize(OAuthTestCase): authorization_flow=flow, redirect_uris=[RedirectURI(RedirectURIMatchingMode.STRICT, "http://localhost")], signing_key=self.keypair, + grant_types=[GrantType.IMPLICIT], ) provider.property_mappings.set( ScopeMapping.objects.filter( @@ -565,7 +579,7 @@ class TestAuthorize(OAuthTestCase): response = self.client.get( reverse("authentik_api:flow-executor", kwargs={"flow_slug": flow.slug}), ) - token: AccessToken = AccessToken.objects.filter(user=user).first() + token = AccessToken.objects.filter(user=user).first() self.assertIsNotNone(token) self.assertJSONEqual( response.content.decode(), @@ -592,6 +606,7 @@ class TestAuthorize(OAuthTestCase): authorization_flow=flow, redirect_uris=[RedirectURI(RedirectURIMatchingMode.STRICT, "http://localhost")], signing_key=self.keypair, + grant_types=[GrantType.AUTHORIZATION_CODE], ) app = Application.objects.create(name=generate_id(), slug=generate_id(), provider=provider) state = generate_id() @@ -632,6 +647,7 @@ class TestAuthorize(OAuthTestCase): name=generate_id(), client_id="test", authorization_flow=create_test_flow(), + grant_types=[GrantType.IMPLICIT], redirect_uris=[RedirectURI(RedirectURIMatchingMode.STRICT, "http://localhost")], ) request = self.factory.get( @@ -655,6 +671,7 @@ class TestAuthorize(OAuthTestCase): client_id="test", authorization_flow=create_test_flow(), redirect_uris=[RedirectURI(RedirectURIMatchingMode.STRICT, "http://localhost")], + grant_types=[GrantType.IMPLICIT], ) provider.property_mappings.set( ScopeMapping.objects.filter( @@ -687,6 +704,7 @@ class TestAuthorize(OAuthTestCase): authorization_flow=flow, redirect_uris=[RedirectURI(RedirectURIMatchingMode.STRICT, "foo://localhost")], access_code_validity="seconds=100", + grant_types=[GrantType.AUTHORIZATION_CODE], ) Application.objects.create(name="app", slug="app", provider=provider) state = generate_id() @@ -717,6 +735,7 @@ class TestAuthorize(OAuthTestCase): authorization_flow=flow, redirect_uris=[RedirectURI(RedirectURIMatchingMode.STRICT, "foo://localhost")], access_code_validity="seconds=100", + grant_types=[GrantType.AUTHORIZATION_CODE], ) Application.objects.create(name="app", slug="app", provider=provider) state = generate_id() @@ -756,6 +775,7 @@ class TestAuthorize(OAuthTestCase): authentication_flow=auth_flow, redirect_uris=[RedirectURI(RedirectURIMatchingMode.STRICT, "foo://localhost")], access_code_validity="seconds=100", + grant_types=[GrantType.AUTHORIZATION_CODE], ) Application.objects.create(name="app", slug="app", provider=provider) state = generate_id() @@ -782,6 +802,7 @@ class TestAuthorize(OAuthTestCase): authorization_flow=flow, redirect_uris=[RedirectURI(RedirectURIMatchingMode.STRICT, "foo://localhost")], access_code_validity="seconds=100", + grant_types=[GrantType.AUTHORIZATION_CODE], ) Application.objects.create(name="app", slug="app", provider=provider) state = generate_id() diff --git a/authentik/providers/oauth2/tests/test_backchannel_logout.py b/authentik/providers/oauth2/tests/test_backchannel_logout.py index 84684b6e24..9a9f90624e 100644 --- a/authentik/providers/oauth2/tests/test_backchannel_logout.py +++ b/authentik/providers/oauth2/tests/test_backchannel_logout.py @@ -4,22 +4,19 @@ from unittest.mock import Mock, patch import jwt from django.test import RequestFactory -from django.utils import timezone from dramatiq.results.errors import ResultFailure from requests import Response from requests.exceptions import HTTPError, Timeout -from authentik.core.models import Application, AuthenticatedSession, Session +from authentik.core.models import Application from authentik.core.tests.utils import create_test_admin_user, create_test_flow from authentik.lib.generators import generate_id from authentik.providers.oauth2.id_token import hash_session_key from authentik.providers.oauth2.models import ( - AccessToken, OAuth2LogoutMethod, OAuth2Provider, RedirectURI, RedirectURIMatchingMode, - RefreshToken, ) from authentik.providers.oauth2.tasks import send_backchannel_logout_request from authentik.providers.oauth2.tests.utils import OAuthTestCase @@ -45,52 +42,6 @@ class TestBackChannelLogout(OAuthTestCase): self.app.provider = self.provider self.app.save() - def _create_session(self, session_key=None): - """Create a session with the given key or a generated one""" - session_key = session_key or f"session-{generate_id()}" - session = Session.objects.create( - session_key=session_key, - expires=timezone.now() + timezone.timedelta(hours=1), - last_ip="255.255.255.255", - ) - auth_session = AuthenticatedSession.objects.create( - session=session, - user=self.user, - ) - return auth_session - - def _create_token( - self, provider, user, session=None, token_type="access", token_id=None - ): # nosec - """Create a token of the specified type""" - token_id = token_id or f"{token_type}-token-{generate_id()}" - kwargs = { - "provider": provider, - "user": user, - "session": session, - "token": token_id, - "_id_token": "{}", - "auth_time": timezone.now(), - } - - if token_type == "access": # nosec - return AccessToken.objects.create(**kwargs) - else: # refresh - return RefreshToken.objects.create(**kwargs) - - def _create_provider(self, name=None): - """Create an OAuth2 provider""" - name = name or f"provider-{generate_id()}" - provider = OAuth2Provider.objects.create( - name=name, - authorization_flow=create_test_flow(), - redirect_uris=[ - RedirectURI(RedirectURIMatchingMode.STRICT, f"http://{name}/callback"), - ], - signing_key=self.keypair, - ) - return provider - def _create_logout_token( self, provider: OAuth2Provider | None = None, diff --git a/authentik/providers/oauth2/tests/test_device_backchannel.py b/authentik/providers/oauth2/tests/test_device_backchannel.py index 1e75b7f8ef..85413fefb2 100644 --- a/authentik/providers/oauth2/tests/test_device_backchannel.py +++ b/authentik/providers/oauth2/tests/test_device_backchannel.py @@ -6,10 +6,11 @@ from urllib.parse import quote from django.urls import reverse +from authentik.blueprints.tests import apply_blueprint from authentik.core.models import Application from authentik.core.tests.utils import create_test_flow from authentik.lib.generators import generate_id -from authentik.providers.oauth2.models import OAuth2Provider +from authentik.providers.oauth2.models import DeviceToken, GrantType, OAuth2Provider, ScopeMapping from authentik.providers.oauth2.tests.utils import OAuthTestCase @@ -21,6 +22,7 @@ class TesOAuth2DeviceBackchannel(OAuthTestCase): name=generate_id(), client_id="test", authorization_flow=create_test_flow(), + grant_types=[GrantType.DEVICE_CODE], ) self.application = Application.objects.create( name=generate_id(), @@ -41,6 +43,21 @@ class TesOAuth2DeviceBackchannel(OAuthTestCase): reverse("authentik_providers_oauth2:device"), ) self.assertEqual(res.status_code, 400) + + def test_backchannel_invalid_no_grant(self): + """Test backchannel""" + self.provider.grant_types = [] + self.provider.save() + res = self.client.post( + reverse("authentik_providers_oauth2:device"), + data={ + "client_id": "test", + }, + ) + self.assertEqual(res.status_code, 400) + + def test_backchannel_invalid_no_app(self): + """Test backchannel""" # test without application self.application.provider = None self.application.save() @@ -110,3 +127,57 @@ class TesOAuth2DeviceBackchannel(OAuthTestCase): self.assertEqual(res.status_code, 200) body = loads(res.content.decode()) self.assertEqual(body["expires_in"], 60) + + @apply_blueprint("system/providers-oauth2.yaml") + def test_backchannel_scopes(self): + """Test backchannel""" + self.provider.property_mappings.set( + ScopeMapping.objects.filter( + managed__in=[ + "goauthentik.io/providers/oauth2/scope-openid", + "goauthentik.io/providers/oauth2/scope-email", + "goauthentik.io/providers/oauth2/scope-profile", + ] + ) + ) + creds = b64encode(f"{self.provider.client_id}:".encode()).decode() + res = self.client.post( + reverse("authentik_providers_oauth2:device"), + HTTP_AUTHORIZATION=f"Basic {creds}", + data={"scope": "openid email"}, + ) + self.assertEqual(res.status_code, 200) + body = loads(res.content.decode()) + self.assertEqual(body["expires_in"], 60) + token = DeviceToken.objects.filter(device_code=body["device_code"]).first() + self.assertIsNotNone(token) + self.assertEqual(len(token.scope), 2) + self.assertIn("openid", token.scope) + self.assertIn("email", token.scope) + + @apply_blueprint("system/providers-oauth2.yaml") + def test_backchannel_scopes_extra(self): + """Test backchannel""" + self.provider.property_mappings.set( + ScopeMapping.objects.filter( + managed__in=[ + "goauthentik.io/providers/oauth2/scope-openid", + "goauthentik.io/providers/oauth2/scope-email", + "goauthentik.io/providers/oauth2/scope-profile", + ] + ) + ) + creds = b64encode(f"{self.provider.client_id}:".encode()).decode() + res = self.client.post( + reverse("authentik_providers_oauth2:device"), + HTTP_AUTHORIZATION=f"Basic {creds}", + data={"scope": "openid email foo"}, + ) + self.assertEqual(res.status_code, 200) + body = loads(res.content.decode()) + self.assertEqual(body["expires_in"], 60) + token = DeviceToken.objects.filter(device_code=body["device_code"]).first() + self.assertIsNotNone(token) + self.assertEqual(len(token.scope), 2) + self.assertIn("openid", token.scope) + self.assertIn("email", token.scope) diff --git a/authentik/providers/oauth2/tests/test_device_init.py b/authentik/providers/oauth2/tests/test_device_init.py index 8c5ac0a31d..5d0ee7b8f8 100644 --- a/authentik/providers/oauth2/tests/test_device_init.py +++ b/authentik/providers/oauth2/tests/test_device_init.py @@ -9,7 +9,7 @@ from authentik.core.models import Application, Group from authentik.core.tests.utils import create_test_admin_user, create_test_brand, create_test_flow from authentik.lib.generators import generate_id from authentik.policies.models import PolicyBinding -from authentik.providers.oauth2.models import DeviceToken, OAuth2Provider +from authentik.providers.oauth2.models import DeviceToken, GrantType, OAuth2Provider from authentik.providers.oauth2.tests.utils import OAuthTestCase from authentik.providers.oauth2.views.device_init import QS_KEY_CODE @@ -22,6 +22,7 @@ class TesOAuth2DeviceInit(OAuthTestCase): name=generate_id(), client_id="test", authorization_flow=create_test_flow(), + grant_types=[GrantType.DEVICE_CODE], ) self.application = Application.objects.create( name=generate_id(), diff --git a/authentik/providers/oauth2/tests/test_end_session.py b/authentik/providers/oauth2/tests/test_end_session.py new file mode 100644 index 0000000000..22a2ca7803 --- /dev/null +++ b/authentik/providers/oauth2/tests/test_end_session.py @@ -0,0 +1,291 @@ +"""Test OAuth2 End Session (RP-Initiated Logout) implementation""" + +from django.test import RequestFactory +from django.urls import reverse + +from authentik.core.models import Application +from authentik.core.tests.utils import create_test_admin_user, create_test_brand, create_test_flow +from authentik.lib.generators import generate_id +from authentik.providers.oauth2.models import ( + OAuth2Provider, + RedirectURI, + RedirectURIMatchingMode, + RedirectURIType, +) +from authentik.providers.oauth2.tests.utils import OAuthTestCase +from authentik.providers.oauth2.views.end_session import EndSessionView + + +class TestEndSessionView(OAuthTestCase): + """Test EndSessionView validation""" + + def setUp(self) -> None: + super().setUp() + self.user = create_test_admin_user() + self.invalidation_flow = create_test_flow() + self.app = Application.objects.create(name=generate_id(), slug="test-app") + self.provider = OAuth2Provider.objects.create( + name=generate_id(), + authorization_flow=create_test_flow(), + invalidation_flow=self.invalidation_flow, + redirect_uris=[ + RedirectURI( + RedirectURIMatchingMode.STRICT, + "http://testserver/callback", + RedirectURIType.AUTHORIZATION, + ), + RedirectURI( + RedirectURIMatchingMode.STRICT, + "http://testserver/logout", + RedirectURIType.LOGOUT, + ), + RedirectURI( + RedirectURIMatchingMode.REGEX, + r"https://.*\.example\.com/logout", + RedirectURIType.LOGOUT, + ), + ], + ) + self.app.provider = self.provider + self.app.save() + # Ensure brand has an invalidation flow + self.brand = create_test_brand() + self.brand.flow_invalidation = self.invalidation_flow + self.brand.save() + + def _id_token_hint(self, host: str) -> str: + """Issue a valid id_token_hint for the test provider under the given host.""" + return self.provider.encode( + { + "iss": f"http://{host}/application/o/{self.app.slug}/", + "aud": self.provider.client_id, + "sub": str(self.user.pk), + } + ) + + def test_post_logout_redirect_uri_strict_match(self): + """Test strict URI matching redirects to flow""" + self.client.force_login(self.user) + response = self.client.get( + reverse( + "authentik_providers_oauth2:end-session", + kwargs={"application_slug": self.app.slug}, + ), + { + "post_logout_redirect_uri": "http://testserver/logout", + "id_token_hint": self._id_token_hint(self.brand.domain), + }, + HTTP_HOST=self.brand.domain, + ) + # Should redirect to the invalidation flow + self.assertEqual(response.status_code, 302) + self.assertIn(self.invalidation_flow.slug, response.url) + + def test_post_logout_redirect_uri_strict_no_match(self): + """Test strict URI not matching returns an error and does not start logout flow. + + Required by OIDC RP-Initiated Logout 1.0: on an unregistered + post_logout_redirect_uri, the OP MUST NOT redirect and MUST NOT proceed with + logout that targets the RP. + """ + self.client.force_login(self.user) + invalid_uri = "http://testserver/other" + response = self.client.get( + reverse( + "authentik_providers_oauth2:end-session", + kwargs={"application_slug": self.app.slug}, + ), + { + "post_logout_redirect_uri": invalid_uri, + "id_token_hint": self._id_token_hint(self.brand.domain), + }, + HTTP_HOST=self.brand.domain, + ) + self.assertEqual(response.status_code, 400) + self.assertNotIn(invalid_uri, response.content.decode()) + + def test_post_logout_redirect_uri_regex_match(self): + """Test regex URI matching redirects to flow""" + self.client.force_login(self.user) + response = self.client.get( + reverse( + "authentik_providers_oauth2:end-session", + kwargs={"application_slug": self.app.slug}, + ), + { + "post_logout_redirect_uri": "https://app.example.com/logout", + "id_token_hint": self._id_token_hint(self.brand.domain), + }, + HTTP_HOST=self.brand.domain, + ) + # Should redirect to the invalidation flow + self.assertEqual(response.status_code, 302) + self.assertIn(self.invalidation_flow.slug, response.url) + + def test_post_logout_redirect_uri_regex_no_match(self): + """Test regex URI not matching returns an error and does not start logout flow.""" + self.client.force_login(self.user) + invalid_uri = "https://malicious.com/logout" + response = self.client.get( + reverse( + "authentik_providers_oauth2:end-session", + kwargs={"application_slug": self.app.slug}, + ), + { + "post_logout_redirect_uri": invalid_uri, + "id_token_hint": self._id_token_hint(self.brand.domain), + }, + HTTP_HOST=self.brand.domain, + ) + self.assertEqual(response.status_code, 400) + self.assertNotIn(invalid_uri, response.content.decode()) + + def test_state_parameter_appended_to_uri(self): + """Test state parameter is appended to validated redirect URI""" + factory = RequestFactory() + request = factory.get( + "/end-session/", + { + "post_logout_redirect_uri": "http://testserver/logout", + "state": "test-state-123", + "id_token_hint": self._id_token_hint("testserver"), + }, + ) + request.user = self.user + request.brand = self.brand + + view = EndSessionView() + view.request = request + view.kwargs = {"application_slug": self.app.slug} + view.resolve_provider_application() + view.validate() + + self.assertIn("state=test-state-123", view.post_logout_redirect_uri) + + def test_post_method(self): + """Test POST requests work same as GET""" + self.client.force_login(self.user) + response = self.client.post( + reverse( + "authentik_providers_oauth2:end-session", + kwargs={"application_slug": self.app.slug}, + ), + { + "post_logout_redirect_uri": "http://testserver/logout", + "state": "xyz789", + "id_token_hint": self._id_token_hint(self.brand.domain), + }, + HTTP_HOST=self.brand.domain, + ) + self.assertEqual(response.status_code, 302) + + +class TestEndSessionAPI(OAuthTestCase): + """Test End Session API functionality""" + + def setUp(self) -> None: + super().setUp() + self.user = create_test_admin_user() + self.client.force_login(self.user) + + def test_post_logout_redirect_uris_create(self): + """Test creating provider with post_logout redirect_uris""" + response = self.client.post( + reverse("authentik_api:oauth2provider-list"), + data={ + "name": generate_id(), + "authorization_flow": create_test_flow().pk, + "invalidation_flow": create_test_flow().pk, + "redirect_uris": [ + { + "matching_mode": "strict", + "url": "http://testserver/callback", + "redirect_uri_type": "authorization", + }, + { + "matching_mode": "strict", + "url": "http://testserver/logout", + "redirect_uri_type": "logout", + }, + { + "matching_mode": "regex", + "url": "https://.*\\.example\\.com/logout", + "redirect_uri_type": "logout", + }, + ], + }, + content_type="application/json", + ) + self.assertEqual(response.status_code, 201) + provider_data = response.json() + post_logout_uris = [ + u for u in provider_data["redirect_uris"] if u["redirect_uri_type"] == "logout" + ] + self.assertEqual(len(post_logout_uris), 2) + + def test_post_logout_redirect_uris_invalid_regex(self): + """Test that invalid regex patterns are rejected""" + response = self.client.post( + reverse("authentik_api:oauth2provider-list"), + data={ + "name": generate_id(), + "authorization_flow": create_test_flow().pk, + "invalidation_flow": create_test_flow().pk, + "redirect_uris": [ + { + "matching_mode": "strict", + "url": "http://testserver/callback", + "redirect_uri_type": "authorization", + }, + { + "matching_mode": "regex", + "url": "**invalid**", + "redirect_uri_type": "logout", + }, + ], + }, + content_type="application/json", + ) + self.assertEqual(response.status_code, 400) + self.assertIn("redirect_uris", response.json()) + + def test_post_logout_redirect_uris_update(self): + """Test updating redirect_uris with logout type""" + # First create a provider + provider = OAuth2Provider.objects.create( + name=generate_id(), + authorization_flow=create_test_flow(), + redirect_uris=[ + RedirectURI( + RedirectURIMatchingMode.STRICT, + "http://testserver/callback", + RedirectURIType.AUTHORIZATION, + ), + ], + ) + + # Update with post_logout redirect URIs + response = self.client.patch( + reverse("authentik_api:oauth2provider-detail", kwargs={"pk": provider.pk}), + data={ + "redirect_uris": [ + { + "matching_mode": "strict", + "url": "http://testserver/callback", + "redirect_uri_type": "authorization", + }, + { + "matching_mode": "strict", + "url": "http://testserver/logout", + "redirect_uri_type": "logout", + }, + ], + }, + content_type="application/json", + ) + self.assertEqual(response.status_code, 200) + + # Verify the update + provider.refresh_from_db() + self.assertEqual(len(provider.post_logout_redirect_uris), 1) + self.assertEqual(provider.post_logout_redirect_uris[0].url, "http://testserver/logout") diff --git a/authentik/providers/oauth2/tests/test_introspect.py b/authentik/providers/oauth2/tests/test_introspect.py index 5758fac6c1..bceb00de08 100644 --- a/authentik/providers/oauth2/tests/test_introspect.py +++ b/authentik/providers/oauth2/tests/test_introspect.py @@ -14,6 +14,7 @@ from authentik.lib.generators import generate_id from authentik.providers.oauth2.id_token import IDToken from authentik.providers.oauth2.models import ( AccessToken, + ClientType, OAuth2Provider, RedirectURI, RedirectURIMatchingMode, @@ -43,7 +44,7 @@ class TesOAuth2Introspection(OAuthTestCase): def test_introspect_refresh(self): """Test introspect""" - token: RefreshToken = RefreshToken.objects.create( + token = RefreshToken.objects.create( provider=self.provider, user=self.user, token=generate_id(), @@ -75,7 +76,7 @@ class TesOAuth2Introspection(OAuthTestCase): def test_introspect_access(self): """Test introspect""" - token: AccessToken = AccessToken.objects.create( + token = AccessToken.objects.create( provider=self.provider, user=self.user, token=generate_id(), @@ -130,7 +131,7 @@ class TesOAuth2Introspection(OAuthTestCase): ) auth = b64encode(f"{provider.client_id}:{provider.client_secret}".encode()).decode() - token: AccessToken = AccessToken.objects.create( + token = AccessToken.objects.create( provider=self.provider, user=self.user, token=generate_id(), @@ -169,3 +170,76 @@ class TesOAuth2Introspection(OAuthTestCase): "active": False, }, ) + + def test_introspect_provider_public(self): + """Test introspect""" + self.provider.client_type = ClientType.PUBLIC + self.provider.save() + token = AccessToken.objects.create( + provider=self.provider, + user=self.user, + token=generate_id(), + auth_time=timezone.now(), + _scope="openid user profile", + _id_token=json.dumps( + asdict( + IDToken("foo", "bar"), + ) + ), + ) + res = self.client.post( + reverse("authentik_providers_oauth2:token-introspection"), + HTTP_AUTHORIZATION=f"Basic {self.auth}", + data={"token": token.token}, + ) + self.assertEqual(res.status_code, 200) + self.assertJSONEqual( + res.content.decode(), + { + "active": False, + }, + ) + + def test_introspect_provider_fed(self): + """Test introspect with federation. self.provider is a confidential + client and other_provider is a public client.""" + other_provider = OAuth2Provider.objects.create( + name=generate_id(), + authorization_flow=create_test_flow(), + redirect_uris=[RedirectURI(RedirectURIMatchingMode.STRICT, "")], + signing_key=create_test_cert(), + client_type=ClientType.PUBLIC, + ) + Application.objects.create(name=generate_id(), slug=generate_id(), provider=other_provider) + + other_provider.jwt_federation_providers.add(self.provider) + + token = AccessToken.objects.create( + provider=other_provider, + user=self.user, + token=generate_id(), + auth_time=timezone.now(), + _scope="openid user profile", + _id_token=json.dumps( + asdict( + IDToken("foo", "bar"), + ) + ), + ) + res = self.client.post( + reverse("authentik_providers_oauth2:token-introspection"), + HTTP_AUTHORIZATION=f"Basic {self.auth}", + data={"token": token.token}, + ) + self.assertEqual(res.status_code, 200) + self.assertJSONEqual( + res.content.decode(), + { + "acr": ACR_AUTHENTIK_DEFAULT, + "sub": "bar", + "iss": "foo", + "active": True, + "client_id": other_provider.client_id, + "scope": " ".join(token.scope), + }, + ) diff --git a/authentik/providers/oauth2/tests/test_revoke.py b/authentik/providers/oauth2/tests/test_revoke.py index 8469dd175d..18fa7ef57d 100644 --- a/authentik/providers/oauth2/tests/test_revoke.py +++ b/authentik/providers/oauth2/tests/test_revoke.py @@ -13,7 +13,7 @@ from authentik.lib.generators import generate_id from authentik.providers.oauth2.id_token import IDToken from authentik.providers.oauth2.models import ( AccessToken, - ClientTypes, + ClientType, DeviceToken, OAuth2Provider, RedirectURI, @@ -46,7 +46,7 @@ class TesOAuth2Revoke(OAuthTestCase): def test_revoke_refresh(self): """Test revoke""" - token: RefreshToken = RefreshToken.objects.create( + token = RefreshToken.objects.create( provider=self.provider, user=self.user, token=generate_id(), @@ -69,7 +69,7 @@ class TesOAuth2Revoke(OAuthTestCase): def test_revoke_access(self): """Test revoke""" - token: AccessToken = AccessToken.objects.create( + token = AccessToken.objects.create( provider=self.provider, user=self.user, token=generate_id(), @@ -105,7 +105,19 @@ class TesOAuth2Revoke(OAuthTestCase): """Test revoke (invalid auth)""" res = self.client.post( reverse("authentik_providers_oauth2:token-revoke"), - HTTP_AUTHORIZATION="Basic fqewr", + HTTP_AUTHORIZATION="Basic aaa", + data={ + "token": generate_id(), + }, + ) + self.assertEqual(res.status_code, 401) + + def test_revoke_invalid_auth_secret(self): + """Test revoke (invalid secret)""" + invalid_auth = b64encode(f"{self.provider.client_id}:aaa".encode()).decode() + res = self.client.post( + reverse("authentik_providers_oauth2:token-revoke"), + HTTP_AUTHORIZATION=f"Basic {invalid_auth}", data={ "token": generate_id(), }, @@ -114,9 +126,9 @@ class TesOAuth2Revoke(OAuthTestCase): def test_revoke_public(self): """Test revoke public client""" - self.provider.client_type = ClientTypes.PUBLIC + self.provider.client_type = ClientType.PUBLIC self.provider.save() - token: AccessToken = AccessToken.objects.create( + token = AccessToken.objects.create( provider=self.provider, user=self.user, token=generate_id(), @@ -155,7 +167,7 @@ class TesOAuth2Revoke(OAuthTestCase): ), ) self.client.logout() - self.assertEqual(AccessToken.objects.all().count(), 0) + self.assertEqual(AccessToken.objects.including_expired().all().count(), 0) def test_revoke_session_delete(self): """Test revoke on logout""" @@ -180,7 +192,7 @@ class TesOAuth2Revoke(OAuthTestCase): ), ) session.delete() - self.assertEqual(AccessToken.objects.all().count(), 0) + self.assertEqual(AccessToken.objects.including_expired().all().count(), 0) def test_revoke_user_deactivated(self): """Test revoke on logout""" @@ -217,6 +229,77 @@ class TesOAuth2Revoke(OAuthTestCase): self.user.is_active = False self.user.save() - self.assertEqual(AccessToken.objects.all().count(), 0) - self.assertEqual(RefreshToken.objects.all().count(), 0) - self.assertEqual(DeviceToken.objects.all().count(), 0) + self.assertEqual(AccessToken.objects.including_expired().all().count(), 0) + self.assertEqual(RefreshToken.objects.including_expired().all().count(), 0) + self.assertEqual(DeviceToken.objects.including_expired().all().count(), 0) + + def test_revoke_provider_fed(self): + """Test revoke with federation. self.provider is a confidential + client and other_provider is a public client.""" + other_provider = OAuth2Provider.objects.create( + name=generate_id(), + authorization_flow=create_test_flow(), + redirect_uris=[RedirectURI(RedirectURIMatchingMode.STRICT, "")], + signing_key=create_test_cert(), + client_type=ClientType.PUBLIC, + ) + Application.objects.create(name=generate_id(), slug=generate_id(), provider=other_provider) + + other_provider.jwt_federation_providers.add(self.provider) + + token = AccessToken.objects.create( + provider=other_provider, + user=self.user, + token=generate_id(), + auth_time=timezone.now(), + _scope="openid user profile", + _id_token=json.dumps( + asdict( + IDToken("foo", "bar"), + ) + ), + ) + res = self.client.post( + reverse("authentik_providers_oauth2:token-revoke"), + HTTP_AUTHORIZATION=f"Basic {self.auth}", + data={"token": token.token}, + ) + self.assertEqual(res.status_code, 200) + self.assertJSONEqual(res.content.decode(), {}) + + def test_revoke_provider_fed_public(self): + """Test revoke with federation. self.provider is a public + client and other_provider is a public client.""" + self.provider.client_type = ClientType.PUBLIC + self.provider.save() + other_provider = OAuth2Provider.objects.create( + name=generate_id(), + authorization_flow=create_test_flow(), + redirect_uris=[RedirectURI(RedirectURIMatchingMode.STRICT, "")], + signing_key=create_test_cert(), + client_type=ClientType.PUBLIC, + ) + Application.objects.create(name=generate_id(), slug=generate_id(), provider=other_provider) + + other_provider.jwt_federation_providers.add(self.provider) + + token = AccessToken.objects.create( + provider=other_provider, + user=self.user, + token=generate_id(), + auth_time=timezone.now(), + _scope="openid user profile", + _id_token=json.dumps( + asdict( + IDToken("foo", "bar"), + ) + ), + ) + auth_public = b64encode(f"{self.provider.client_id}:{generate_id()}".encode()).decode() + res = self.client.post( + reverse("authentik_providers_oauth2:token-revoke"), + HTTP_AUTHORIZATION=f"Basic {auth_public}", + data={"token": token.token}, + ) + self.assertEqual(res.status_code, 200) + self.assertTrue(AccessToken.objects.filter(token=token.token).exists()) diff --git a/authentik/providers/oauth2/tests/test_token.py b/authentik/providers/oauth2/tests/test_token.py index 0aed466f74..3c7463449d 100644 --- a/authentik/providers/oauth2/tests/test_token.py +++ b/authentik/providers/oauth2/tests/test_token.py @@ -1,12 +1,15 @@ """Test token view""" from base64 import b64encode +from datetime import timedelta from json import dumps from urllib.parse import quote from django.test import RequestFactory from django.urls import reverse from django.utils import timezone +from django.utils.timezone import now +from freezegun import freeze_time from authentik.blueprints.tests import apply_blueprint from authentik.common.oauth.constants import ( @@ -22,6 +25,7 @@ from authentik.providers.oauth2.errors import TokenError from authentik.providers.oauth2.models import ( AccessToken, AuthorizationCode, + GrantType, OAuth2Provider, RedirectURI, RedirectURIMatchingMode, @@ -41,11 +45,39 @@ class TestToken(OAuthTestCase): self.factory = RequestFactory() self.app = Application.objects.create(name=generate_id(), slug="test") + def test_invalid_grant_type(self): + """test request param""" + provider = OAuth2Provider.objects.create( + name=generate_id(), + authorization_flow=create_test_flow(), + grant_types=[], + redirect_uris=[RedirectURI(RedirectURIMatchingMode.STRICT, "http://TestServer")], + signing_key=self.keypair, + ) + header = b64encode(f"{provider.client_id}:{provider.client_secret}".encode()).decode() + user = create_test_admin_user() + code = AuthorizationCode.objects.create( + code="foobar", provider=provider, user=user, auth_time=timezone.now() + ) + request = self.factory.post( + "/", + data={ + "grant_type": GRANT_TYPE_AUTHORIZATION_CODE, + "code": code.code, + "redirect_uri": "http://TestServer", + }, + HTTP_AUTHORIZATION=f"Basic {header}", + ) + with self.assertRaises(TokenError) as cm: + TokenParams.parse(request, provider, provider.client_id, provider.client_secret) + self.assertEqual(cm.exception.cause, "grant_type_not_configured") + def test_request_auth_code(self): """test request param""" provider = OAuth2Provider.objects.create( name=generate_id(), authorization_flow=create_test_flow(), + grant_types=[GrantType.AUTHORIZATION_CODE], redirect_uris=[RedirectURI(RedirectURIMatchingMode.STRICT, "http://TestServer")], signing_key=self.keypair, ) @@ -73,6 +105,7 @@ class TestToken(OAuthTestCase): provider = OAuth2Provider.objects.create( name=generate_id(), authorization_flow=create_test_flow(), + grant_types=[GrantType.REFRESH_TOKEN], redirect_uris=[RedirectURI(RedirectURIMatchingMode.STRICT, "http://testserver")], signing_key=self.keypair, ) @@ -94,12 +127,13 @@ class TestToken(OAuthTestCase): provider = OAuth2Provider.objects.create( name=generate_id(), authorization_flow=create_test_flow(), + grant_types=[GrantType.REFRESH_TOKEN], redirect_uris=[RedirectURI(RedirectURIMatchingMode.STRICT, "http://local.invalid")], signing_key=self.keypair, ) header = b64encode(f"{provider.client_id}:{provider.client_secret}".encode()).decode() user = create_test_admin_user() - token: RefreshToken = RefreshToken.objects.create( + token = RefreshToken.objects.create( provider=provider, user=user, token=generate_id(), @@ -136,6 +170,7 @@ class TestToken(OAuthTestCase): provider = OAuth2Provider.objects.create( name=generate_id(), authorization_flow=create_test_flow(), + grant_types=[GrantType.AUTHORIZATION_CODE], redirect_uris=[RedirectURI(RedirectURIMatchingMode.STRICT, "http://local.invalid")], signing_key=self.keypair, ) @@ -156,7 +191,7 @@ class TestToken(OAuthTestCase): }, HTTP_AUTHORIZATION=f"Basic {header}", ) - access: AccessToken = AccessToken.objects.filter(user=user, provider=provider).first() + access = AccessToken.objects.filter(user=user, provider=provider).first() self.assertJSONEqual( response.content.decode(), { @@ -176,6 +211,7 @@ class TestToken(OAuthTestCase): provider = OAuth2Provider.objects.create( name=generate_id(), authorization_flow=create_test_flow(), + grant_types=[GrantType.AUTHORIZATION_CODE], redirect_uris=[RedirectURI(RedirectURIMatchingMode.STRICT, "http://local.invalid")], signing_key=self.keypair, encryption_key=self.keypair, @@ -198,7 +234,7 @@ class TestToken(OAuthTestCase): HTTP_AUTHORIZATION=f"Basic {header}", ) self.assertEqual(response.status_code, 200) - access: AccessToken = AccessToken.objects.filter(user=user, provider=provider).first() + access = AccessToken.objects.filter(user=user, provider=provider).first() self.validate_jwe(access, provider) @apply_blueprint("system/providers-oauth2.yaml") @@ -207,6 +243,7 @@ class TestToken(OAuthTestCase): provider = OAuth2Provider.objects.create( name=generate_id(), authorization_flow=create_test_flow(), + grant_types=[GrantType.REFRESH_TOKEN], redirect_uris=[RedirectURI(RedirectURIMatchingMode.STRICT, "http://local.invalid")], signing_key=self.keypair, ) @@ -225,7 +262,7 @@ class TestToken(OAuthTestCase): self.app.save() header = b64encode(f"{provider.client_id}:{provider.client_secret}".encode()).decode() user = create_test_admin_user() - token: RefreshToken = RefreshToken.objects.create( + token = RefreshToken.objects.create( provider=provider, user=user, token=generate_id(), @@ -245,10 +282,8 @@ class TestToken(OAuthTestCase): ) self.assertEqual(response["Access-Control-Allow-Credentials"], "true") self.assertEqual(response["Access-Control-Allow-Origin"], "http://local.invalid") - access: AccessToken = AccessToken.objects.filter(user=user, provider=provider).first() - refresh: RefreshToken = RefreshToken.objects.filter( - user=user, provider=provider, revoked=False - ).first() + access = AccessToken.objects.filter(user=user, provider=provider).first() + refresh = RefreshToken.objects.filter(user=user, provider=provider, revoked=False).first() self.assertJSONEqual( response.content.decode(), { @@ -270,6 +305,7 @@ class TestToken(OAuthTestCase): provider = OAuth2Provider.objects.create( name=generate_id(), authorization_flow=create_test_flow(), + grant_types=[GrantType.REFRESH_TOKEN], redirect_uris=[RedirectURI(RedirectURIMatchingMode.STRICT, "http://local.invalid")], signing_key=self.keypair, ) @@ -285,7 +321,7 @@ class TestToken(OAuthTestCase): ) header = b64encode(f"{provider.client_id}:{provider.client_secret}".encode()).decode() user = create_test_admin_user() - token: RefreshToken = RefreshToken.objects.create( + token = RefreshToken.objects.create( provider=provider, user=user, token=generate_id(), @@ -303,10 +339,8 @@ class TestToken(OAuthTestCase): HTTP_AUTHORIZATION=f"Basic {header}", HTTP_ORIGIN="http://another.invalid", ) - access: AccessToken = AccessToken.objects.filter(user=user, provider=provider).first() - refresh: RefreshToken = RefreshToken.objects.filter( - user=user, provider=provider, revoked=False - ).first() + access = AccessToken.objects.filter(user=user, provider=provider).first() + refresh = RefreshToken.objects.filter(user=user, provider=provider, revoked=False).first() self.assertNotIn("Access-Control-Allow-Credentials", response) self.assertNotIn("Access-Control-Allow-Origin", response) self.assertJSONEqual( @@ -329,6 +363,7 @@ class TestToken(OAuthTestCase): provider = OAuth2Provider.objects.create( name=generate_id(), authorization_flow=create_test_flow(), + grant_types=[GrantType.REFRESH_TOKEN], redirect_uris=[RedirectURI(RedirectURIMatchingMode.STRICT, "http://testserver")], signing_key=self.keypair, ) @@ -347,7 +382,7 @@ class TestToken(OAuthTestCase): self.app.save() header = b64encode(f"{provider.client_id}:{provider.client_secret}".encode()).decode() user = create_test_admin_user() - token: RefreshToken = RefreshToken.objects.create( + token = RefreshToken.objects.create( provider=provider, user=user, token=generate_id(), @@ -365,9 +400,7 @@ class TestToken(OAuthTestCase): }, HTTP_AUTHORIZATION=f"Basic {header}", ) - new_token: RefreshToken = ( - RefreshToken.objects.filter(user=user).exclude(pk=token.pk).first() - ) + new_token = RefreshToken.objects.filter(user=user).exclude(pk=token.pk).first() # Post again with initial token -> get new refresh token # and revoke old one response = self.client.post( @@ -395,10 +428,15 @@ class TestToken(OAuthTestCase): @apply_blueprint("system/providers-oauth2.yaml") def test_refresh_token_view_threshold(self): - """test request param""" + """refresh token threshold + + threshold set to 1 hour, refresh token expires in 2 hours. + First request should not return a new refresh token, second request + has a fake time 1 hours in the future which should return a new access token""" provider = OAuth2Provider.objects.create( name=generate_id(), authorization_flow=create_test_flow(), + grant_types=[GrantType.REFRESH_TOKEN], redirect_uris=[RedirectURI(RedirectURIMatchingMode.STRICT, "http://local.invalid")], signing_key=self.keypair, refresh_token_threshold="hours=1", # nosec @@ -418,13 +456,14 @@ class TestToken(OAuthTestCase): self.app.save() header = b64encode(f"{provider.client_id}:{provider.client_secret}".encode()).decode() user = create_test_admin_user() - token: RefreshToken = RefreshToken.objects.create( + token = RefreshToken.objects.create( provider=provider, user=user, token=generate_id(), _id_token=dumps({}), auth_time=timezone.now(), _scope="offline_access", + expires=now() + timedelta(hours=2), ) response = self.client.post( reverse("authentik_providers_oauth2:token"), @@ -436,9 +475,7 @@ class TestToken(OAuthTestCase): HTTP_AUTHORIZATION=f"Basic {header}", HTTP_ORIGIN="http://local.invalid", ) - self.assertEqual(response["Access-Control-Allow-Credentials"], "true") - self.assertEqual(response["Access-Control-Allow-Origin"], "http://local.invalid") - access: AccessToken = AccessToken.objects.filter(user=user, provider=provider).first() + access = AccessToken.objects.filter(user=user, provider=provider).first() self.assertJSONEqual( response.content.decode(), { @@ -453,6 +490,34 @@ class TestToken(OAuthTestCase): ) self.validate_jwt(access, provider) + with freeze_time(now() + timedelta(hours=1, minutes=10)): + response = self.client.post( + reverse("authentik_providers_oauth2:token"), + data={ + "grant_type": GRANT_TYPE_REFRESH_TOKEN, + "refresh_token": token.token, + "redirect_uri": "http://local.invalid", + }, + HTTP_AUTHORIZATION=f"Basic {header}", + HTTP_ORIGIN="http://local.invalid", + ) + access = AccessToken.objects.filter(user=user, provider=provider).first() + refresh = RefreshToken.objects.filter(user=user, provider=provider).last() + self.assertJSONEqual( + response.content.decode(), + { + "access_token": access.token, + "token_type": TOKEN_TYPE, + "expires_in": 3600, + "id_token": provider.encode( + access.id_token.to_dict(), + ), + "scope": "offline_access", + "refresh_token": refresh.token, + }, + ) + self.validate_jwt(access, provider) + @apply_blueprint("system/providers-oauth2.yaml") def test_scope_claim_override_via_property_mapping(self): """Test that property mappings can override the scope claim in access tokens. @@ -469,6 +534,7 @@ class TestToken(OAuthTestCase): provider = OAuth2Provider.objects.create( name=generate_id(), authorization_flow=create_test_flow(), + grant_types=[GrantType.AUTHORIZATION_CODE], redirect_uris=[RedirectURI(RedirectURIMatchingMode.STRICT, "http://local.invalid")], signing_key=self.keypair, include_claims_in_id_token=True, @@ -500,7 +566,7 @@ class TestToken(OAuthTestCase): ) self.assertEqual(response.status_code, 200) - access: AccessToken = AccessToken.objects.filter(user=user, provider=provider).first() + access = AccessToken.objects.filter(user=user, provider=provider).first() jwt_data = self.validate_jwt(access, provider) # The scope should be the custom value from the property mapping, diff --git a/authentik/providers/oauth2/tests/test_token_cc_jwt_provider.py b/authentik/providers/oauth2/tests/test_token_cc_jwt_provider.py index 9f37e0a419..c6850e80a9 100644 --- a/authentik/providers/oauth2/tests/test_token_cc_jwt_provider.py +++ b/authentik/providers/oauth2/tests/test_token_cc_jwt_provider.py @@ -22,6 +22,7 @@ from authentik.lib.generators import generate_id from authentik.policies.models import PolicyBinding from authentik.providers.oauth2.models import ( AccessToken, + GrantType, OAuth2Provider, RedirectURI, RedirectURIMatchingMode, @@ -55,6 +56,7 @@ class TestTokenClientCredentialsJWTProvider(OAuthTestCase): authorization_flow=create_test_flow(), redirect_uris=[RedirectURI(RedirectURIMatchingMode.STRICT, "http://testserver")], signing_key=self.cert, + grant_types=[GrantType.CLIENT_CREDENTIALS], ) self.provider.jwt_federation_providers.add(self.other_provider) self.provider.property_mappings.set(ScopeMapping.objects.all()) diff --git a/authentik/providers/oauth2/tests/test_token_cc_jwt_source.py b/authentik/providers/oauth2/tests/test_token_cc_jwt_source.py index e9612cc56f..bc5ceca62b 100644 --- a/authentik/providers/oauth2/tests/test_token_cc_jwt_source.py +++ b/authentik/providers/oauth2/tests/test_token_cc_jwt_source.py @@ -20,6 +20,7 @@ from authentik.core.tests.utils import create_test_cert, create_test_flow from authentik.lib.generators import generate_id from authentik.policies.models import PolicyBinding from authentik.providers.oauth2.models import ( + GrantType, OAuth2Provider, RedirectURI, RedirectURIMatchingMode, @@ -68,6 +69,7 @@ class TestTokenClientCredentialsJWTSource(OAuthTestCase): authorization_flow=create_test_flow(), redirect_uris=[RedirectURI(RedirectURIMatchingMode.STRICT, "http://testserver")], signing_key=self.cert, + grant_types=[GrantType.CLIENT_CREDENTIALS], ) self.provider.jwt_federation_sources.add(self.source) self.provider.property_mappings.set(ScopeMapping.objects.all()) diff --git a/authentik/providers/oauth2/tests/test_token_cc_standard.py b/authentik/providers/oauth2/tests/test_token_cc_standard.py index 79c7a46eb6..95f0e3703b 100644 --- a/authentik/providers/oauth2/tests/test_token_cc_standard.py +++ b/authentik/providers/oauth2/tests/test_token_cc_standard.py @@ -21,6 +21,7 @@ from authentik.policies.models import PolicyBinding from authentik.providers.oauth2.errors import TokenError from authentik.providers.oauth2.models import ( AccessToken, + GrantType, OAuth2Provider, RedirectURI, RedirectURIMatchingMode, @@ -41,6 +42,7 @@ class TestTokenClientCredentialsStandard(OAuthTestCase): authorization_flow=create_test_flow(), redirect_uris=[RedirectURI(RedirectURIMatchingMode.STRICT, "http://testserver")], signing_key=create_test_cert(), + grant_types=[GrantType.CLIENT_CREDENTIALS, GrantType.PASSWORD], ) self.provider.property_mappings.set(ScopeMapping.objects.all()) self.app = Application.objects.create(name="test", slug="test", provider=self.provider) diff --git a/authentik/providers/oauth2/tests/test_token_cc_standard_compat.py b/authentik/providers/oauth2/tests/test_token_cc_standard_compat.py index 32c41360a9..a186af3133 100644 --- a/authentik/providers/oauth2/tests/test_token_cc_standard_compat.py +++ b/authentik/providers/oauth2/tests/test_token_cc_standard_compat.py @@ -22,6 +22,7 @@ from authentik.core.tests.utils import create_test_admin_user, create_test_cert, from authentik.policies.models import PolicyBinding from authentik.providers.oauth2.errors import TokenError from authentik.providers.oauth2.models import ( + GrantType, OAuth2Provider, RedirectURI, RedirectURIMatchingMode, @@ -42,6 +43,7 @@ class TestTokenClientCredentialsStandardCompat(OAuthTestCase): authorization_flow=create_test_flow(), redirect_uris=[RedirectURI(RedirectURIMatchingMode.STRICT, "http://testserver")], signing_key=create_test_cert(), + grant_types=[GrantType.CLIENT_CREDENTIALS, GrantType.PASSWORD], ) self.provider.property_mappings.set(ScopeMapping.objects.all()) self.app = Application.objects.create(name="test", slug="test", provider=self.provider) diff --git a/authentik/providers/oauth2/tests/test_token_cc_user_pw.py b/authentik/providers/oauth2/tests/test_token_cc_user_pw.py index 6540865b7a..38d9849e4d 100644 --- a/authentik/providers/oauth2/tests/test_token_cc_user_pw.py +++ b/authentik/providers/oauth2/tests/test_token_cc_user_pw.py @@ -25,6 +25,7 @@ from authentik.core.tests.utils import ( from authentik.policies.models import PolicyBinding from authentik.providers.oauth2.errors import TokenError from authentik.providers.oauth2.models import ( + GrantType, OAuth2Provider, RedirectURI, RedirectURIMatchingMode, @@ -45,6 +46,7 @@ class TestTokenClientCredentialsUserNamePassword(OAuthTestCase): authorization_flow=create_test_flow(), redirect_uris=[RedirectURI(RedirectURIMatchingMode.STRICT, "http://testserver")], signing_key=create_test_cert(), + grant_types=[GrantType.CLIENT_CREDENTIALS, GrantType.PASSWORD], ) self.provider.property_mappings.set(ScopeMapping.objects.all()) self.app = Application.objects.create(name="test", slug="test", provider=self.provider) diff --git a/authentik/providers/oauth2/tests/test_token_device.py b/authentik/providers/oauth2/tests/test_token_device.py index 0a02ffdf7e..fa252a62ca 100644 --- a/authentik/providers/oauth2/tests/test_token_device.py +++ b/authentik/providers/oauth2/tests/test_token_device.py @@ -17,6 +17,7 @@ from authentik.lib.generators import generate_code_fixed_length, generate_id from authentik.providers.oauth2.models import ( AccessToken, DeviceToken, + GrantType, OAuth2Provider, RedirectURI, RedirectURIMatchingMode, @@ -37,6 +38,7 @@ class TestTokenDeviceCode(OAuthTestCase): authorization_flow=create_test_flow(), redirect_uris=[RedirectURI(RedirectURIMatchingMode.STRICT, "http://testserver")], signing_key=create_test_cert(), + grant_types=[GrantType.DEVICE_CODE], ) self.provider.property_mappings.set(ScopeMapping.objects.all()) self.app = Application.objects.create(name="test", slug="test", provider=self.provider) @@ -48,6 +50,7 @@ class TestTokenDeviceCode(OAuthTestCase): reverse("authentik_providers_oauth2:token"), data={ "client_id": self.provider.client_id, + "client_secret": self.provider.client_secret, "grant_type": GRANT_TYPE_DEVICE_CODE, }, ) @@ -66,6 +69,7 @@ class TestTokenDeviceCode(OAuthTestCase): reverse("authentik_providers_oauth2:token"), data={ "client_id": self.provider.client_id, + "client_secret": self.provider.client_secret, "grant_type": GRANT_TYPE_DEVICE_CODE, "device_code": device_token.device_code, }, @@ -74,6 +78,26 @@ class TestTokenDeviceCode(OAuthTestCase): body = loads(res.content.decode()) self.assertEqual(body["error"], "authorization_pending") + def test_code_no_auth(self): + """Test code with user""" + device_token = DeviceToken.objects.create( + provider=self.provider, + user_code=generate_code_fixed_length(), + device_code=generate_id(), + user=self.user, + ) + res = self.client.post( + reverse("authentik_providers_oauth2:token"), + data={ + "client_id": self.provider.client_id, + "grant_type": GRANT_TYPE_DEVICE_CODE, + "device_code": device_token.device_code, + }, + ) + self.assertEqual(res.status_code, 400) + body = loads(res.content.decode()) + self.assertEqual(body["error"], "invalid_client") + def test_code(self): """Test code with user""" device_token = DeviceToken.objects.create( @@ -86,6 +110,7 @@ class TestTokenDeviceCode(OAuthTestCase): reverse("authentik_providers_oauth2:token"), data={ "client_id": self.provider.client_id, + "client_secret": self.provider.client_secret, "grant_type": GRANT_TYPE_DEVICE_CODE, "device_code": device_token.device_code, }, @@ -105,6 +130,7 @@ class TestTokenDeviceCode(OAuthTestCase): reverse("authentik_providers_oauth2:token"), data={ "client_id": self.provider.client_id, + "client_secret": self.provider.client_secret, "grant_type": GRANT_TYPE_DEVICE_CODE, "device_code": device_token.device_code, "scope": f"{SCOPE_OPENID} {SCOPE_OPENID_EMAIL} invalid", diff --git a/authentik/providers/oauth2/tests/test_token_pkce.py b/authentik/providers/oauth2/tests/test_token_pkce.py index 7ffc1d6607..019f7fcd9a 100644 --- a/authentik/providers/oauth2/tests/test_token_pkce.py +++ b/authentik/providers/oauth2/tests/test_token_pkce.py @@ -11,6 +11,7 @@ from authentik.core.tests.utils import create_test_admin_user, create_test_flow from authentik.lib.generators import generate_id from authentik.providers.oauth2.models import ( AuthorizationCode, + GrantType, OAuth2Provider, RedirectURI, RedirectURIMatchingMode, @@ -37,6 +38,7 @@ class TestTokenPKCE(OAuthTestCase): authorization_flow=flow, redirect_uris=[RedirectURI(RedirectURIMatchingMode.STRICT, "foo://localhost")], access_code_validity="seconds=100", + grant_types=[GrantType.AUTHORIZATION_CODE], ) Application.objects.create(name="app", slug="app", provider=provider) state = generate_id() @@ -95,6 +97,7 @@ class TestTokenPKCE(OAuthTestCase): authorization_flow=flow, redirect_uris=[RedirectURI(RedirectURIMatchingMode.STRICT, "foo://localhost")], access_code_validity="seconds=100", + grant_types=[GrantType.AUTHORIZATION_CODE], ) Application.objects.create(name="app", slug="app", provider=provider) state = generate_id() @@ -151,6 +154,7 @@ class TestTokenPKCE(OAuthTestCase): authorization_flow=flow, redirect_uris=[RedirectURI(RedirectURIMatchingMode.STRICT, "foo://localhost")], access_code_validity="seconds=100", + grant_types=[GrantType.AUTHORIZATION_CODE], ) Application.objects.create(name="app", slug="app", provider=provider) state = generate_id() @@ -196,6 +200,7 @@ class TestTokenPKCE(OAuthTestCase): authorization_flow=flow, redirect_uris=[RedirectURI(RedirectURIMatchingMode.STRICT, "foo://localhost")], access_code_validity="seconds=100", + grant_types=[GrantType.AUTHORIZATION_CODE], ) Application.objects.create(name="app", slug="app", provider=provider) state = generate_id() diff --git a/authentik/providers/oauth2/tests/test_userinfo.py b/authentik/providers/oauth2/tests/test_userinfo.py index 4cc87d88c2..ca034c147a 100644 --- a/authentik/providers/oauth2/tests/test_userinfo.py +++ b/authentik/providers/oauth2/tests/test_userinfo.py @@ -40,7 +40,7 @@ class TestUserinfo(OAuthTestCase): self.app.provider = self.provider self.app.save() self.user = create_test_admin_user() - self.token: AccessToken = AccessToken.objects.create( + self.token = AccessToken.objects.create( provider=self.provider, user=self.user, token=generate_id(), diff --git a/authentik/providers/oauth2/utils.py b/authentik/providers/oauth2/utils.py index e7e820430a..b30f8f8499 100644 --- a/authentik/providers/oauth2/utils.py +++ b/authentik/providers/oauth2/utils.py @@ -7,7 +7,7 @@ from binascii import Error from hashlib import sha256 from hmac import compare_digest from typing import Any -from urllib.parse import unquote, urlparse +from urllib.parse import parse_qs, unquote, urlencode, urlparse, urlunparse from django.http import HttpRequest, HttpResponse, JsonResponse from django.http.response import HttpResponseRedirect @@ -267,3 +267,32 @@ def create_logout_token( payload["sid"] = hash_session_key(session_key) # Encode the token return provider.encode(payload, jwt_type="logout+jwt") + + +def build_frontchannel_logout_url( + provider: OAuth2Provider, + request: HttpRequest, + session_key: str | None = None, +) -> str | None: + """Build frontchannel logout URL with iss and sid parameters. + + Returns None if provider doesn't have a logout_uri configured. + """ + if not provider.logout_uri: + return None + + parsed_url = urlparse(provider.logout_uri) + + query_params = {"iss": provider.get_issuer(request)} + if session_key: + query_params["sid"] = hash_session_key(session_key) + + # Preserve existing query params + if parsed_url.query: + existing_params = parse_qs(parsed_url.query, keep_blank_values=True) + for key, value in existing_params.items(): + if key not in query_params: + query_params[key] = value[0] if len(value) == 1 else value + + parsed_url = parsed_url._replace(query=urlencode(query_params)) + return urlunparse(parsed_url) diff --git a/authentik/providers/oauth2/views/authorize.py b/authentik/providers/oauth2/views/authorize.py index 3a8aee4820..0a62f7a668 100644 --- a/authentik/providers/oauth2/views/authorize.py +++ b/authentik/providers/oauth2/views/authorize.py @@ -18,6 +18,7 @@ from django.utils.translation import gettext as _ from structlog.stdlib import get_logger from authentik.common.oauth.constants import ( + FORBIDDEN_URI_SCHEMES, PKCE_METHOD_PLAIN, PKCE_METHOD_S256, PROMPT_CONSENT, @@ -56,9 +57,8 @@ from authentik.providers.oauth2.id_token import IDToken from authentik.providers.oauth2.models import ( AccessToken, AuthorizationCode, - GrantTypes, + GrantType, OAuth2Provider, - RedirectURI, RedirectURIMatchingMode, ResponseMode, ResponseTypes, @@ -78,7 +78,6 @@ PLAN_CONTEXT_PARAMS = "goauthentik.io/providers/oauth2/params" SESSION_KEY_LAST_LOGIN_UID = "authentik/providers/oauth2/last_login_uid" ALLOWED_PROMPT_PARAMS = {PROMPT_NONE, PROMPT_CONSENT, PROMPT_LOGIN} -FORBIDDEN_URI_SCHEMES = {"javascript", "data", "vbscript"} @dataclass(slots=True) @@ -165,45 +164,40 @@ class OAuthAuthorizationParams: """Check grant""" # Determine which flow to use. if self.response_type in [ResponseTypes.CODE]: - self.grant_type = GrantTypes.AUTHORIZATION_CODE + self.grant_type = GrantType.AUTHORIZATION_CODE elif self.response_type in [ ResponseTypes.ID_TOKEN, ResponseTypes.ID_TOKEN_TOKEN, ]: - self.grant_type = GrantTypes.IMPLICIT + self.grant_type = GrantType.IMPLICIT elif self.response_type in [ ResponseTypes.CODE_TOKEN, ResponseTypes.CODE_ID_TOKEN, ResponseTypes.CODE_ID_TOKEN_TOKEN, ]: - self.grant_type = GrantTypes.HYBRID - + self.grant_type = GrantType.HYBRID # Grant type validation. if not self.grant_type: LOGGER.warning("Invalid response type", type=self.response_type) raise AuthorizeError(self.redirect_uri, "unsupported_response_type", "", self.state) + if self.grant_type not in self.provider.grant_types: + LOGGER.warning("Invalid grant_type for provider", grant_type=self.grant_type) + raise AuthorizeError(self.redirect_uri, "invalid_request", self.grant_type, self.state) + if self.response_mode not in ResponseMode.values: self.response_mode = ResponseMode.QUERY - if self.grant_type in [GrantTypes.IMPLICIT, GrantTypes.HYBRID]: + if self.grant_type in [GrantType.IMPLICIT, GrantType.HYBRID]: self.response_mode = ResponseMode.FRAGMENT def check_redirect_uri(self): """Redirect URI validation.""" - allowed_redirect_urls = self.provider.redirect_uris + allowed_redirect_urls = self.provider.authorization_redirect_uris if not self.redirect_uri: LOGGER.warning("Missing redirect uri.") raise RedirectUriError("", allowed_redirect_urls).with_cause("redirect_uri_missing") - if len(allowed_redirect_urls) < 1: - LOGGER.info("Setting redirect for blank redirect_uris", redirect=self.redirect_uri) - self.provider.redirect_uris = [ - RedirectURI(RedirectURIMatchingMode.STRICT, self.redirect_uri) - ] - self.provider.save() - allowed_redirect_urls = self.provider.redirect_uris - match_found = False for allowed in allowed_redirect_urls: if allowed.matching_mode == RedirectURIMatchingMode.STRICT: @@ -255,7 +249,7 @@ class OAuthAuthorizationParams: ) self.scope = self.scope.intersection(default_scope_names) if SCOPE_OPENID not in self.scope and ( - self.grant_type == GrantTypes.HYBRID + self.grant_type == GrantType.HYBRID or self.response_type in [ResponseTypes.ID_TOKEN, ResponseTypes.ID_TOKEN_TOKEN] ): LOGGER.warning("Missing 'openid' scope.") @@ -606,8 +600,8 @@ class OAuthFulfillmentStage(StageView): code = None if self.params.grant_type in [ - GrantTypes.AUTHORIZATION_CODE, - GrantTypes.HYBRID, + GrantType.AUTHORIZATION_CODE, + GrantType.HYBRID, ]: code = self.params.create_code(self.request) code.save() @@ -622,7 +616,7 @@ class OAuthFulfillmentStage(StageView): if self.params.response_mode == ResponseMode.FRAGMENT: query_fragment = {} - if self.params.grant_type in [GrantTypes.AUTHORIZATION_CODE]: + if self.params.grant_type in [GrantType.AUTHORIZATION_CODE]: query_fragment["code"] = code.code query_fragment["state"] = [str(self.params.state) if self.params.state else ""] else: @@ -636,7 +630,7 @@ class OAuthFulfillmentStage(StageView): if self.params.response_mode == ResponseMode.FORM_POST: post_params = {} - if self.params.grant_type in [GrantTypes.AUTHORIZATION_CODE]: + if self.params.grant_type in [GrantType.AUTHORIZATION_CODE]: post_params["code"] = code.code post_params["state"] = [str(self.params.state) if self.params.state else ""] else: @@ -705,7 +699,7 @@ class OAuthFulfillmentStage(StageView): token.save() # Code parameter must be present if it's Hybrid Flow. - if self.params.grant_type == GrantTypes.HYBRID: + if self.params.grant_type == GrantType.HYBRID: query_fragment["code"] = code.code query_fragment["token_type"] = TOKEN_TYPE diff --git a/authentik/providers/oauth2/views/device_backchannel.py b/authentik/providers/oauth2/views/device_backchannel.py index d8e73f9894..6248041bc3 100644 --- a/authentik/providers/oauth2/views/device_backchannel.py +++ b/authentik/providers/oauth2/views/device_backchannel.py @@ -15,7 +15,7 @@ from authentik.core.models import Application from authentik.lib.config import CONFIG from authentik.lib.utils.time import timedelta_from_string from authentik.providers.oauth2.errors import DeviceCodeError -from authentik.providers.oauth2.models import DeviceToken, OAuth2Provider +from authentik.providers.oauth2.models import DeviceToken, GrantType, OAuth2Provider, ScopeMapping from authentik.providers.oauth2.utils import TokenResponse, extract_client_auth from authentik.providers.oauth2.views.device_init import QS_KEY_CODE @@ -28,7 +28,7 @@ class DeviceView(View): client_id: str provider: OAuth2Provider - scopes: list[str] = [] + scopes: set[str] = [] def parse_request(self): """Parse incoming request""" @@ -42,9 +42,25 @@ class DeviceView(View): _ = provider.application except Application.DoesNotExist: raise DeviceCodeError("invalid_client") from None + if GrantType.DEVICE_CODE not in provider.grant_types: + raise DeviceCodeError("invalid_client") self.provider = provider self.client_id = client_id - self.scopes = self.request.POST.get("scope", "").split(" ") + + scopes_to_check = set(self.request.POST.get("scope", "").split()) + default_scope_names = set( + ScopeMapping.objects.filter(provider__in=[self.provider]).values_list( + "scope_name", flat=True + ) + ) + self.scopes = scopes_to_check + if not scopes_to_check.issubset(default_scope_names): + LOGGER.info( + "Application requested scopes not configured, setting to overlap", + scope_allowed=default_scope_names, + scope_given=self.scopes, + ) + self.scopes = self.scopes.intersection(default_scope_names) def dispatch(self, request: HttpRequest, *args, **kwargs) -> HttpResponse: throttle = AnonRateThrottle() diff --git a/authentik/providers/oauth2/views/end_session.py b/authentik/providers/oauth2/views/end_session.py index c793565310..8eb55a44dd 100644 --- a/authentik/providers/oauth2/views/end_session.py +++ b/authentik/providers/oauth2/views/end_session.py @@ -1,20 +1,47 @@ """oauth2 provider end_session Views""" +from re import fullmatch +from urllib.parse import quote, urlparse + from django.http import Http404, HttpRequest, HttpResponse from django.shortcuts import get_object_or_404 +from jwt import PyJWTError +from jwt import decode as jwt_decode -from authentik.core.models import Application +from authentik.common.oauth.constants import ( + FORBIDDEN_URI_SCHEMES, + OAUTH2_BINDING, + PLAN_CONTEXT_OIDC_LOGOUT_IFRAME_SESSIONS, + PLAN_CONTEXT_POST_LOGOUT_REDIRECT_URI, +) +from authentik.core.models import Application, AuthenticatedSession from authentik.flows.models import Flow, in_memory_stage -from authentik.flows.planner import PLAN_CONTEXT_APPLICATION, FlowPlanner +from authentik.flows.planner import ( + PLAN_CONTEXT_APPLICATION, + FlowPlanner, +) from authentik.flows.stage import SessionEndStage from authentik.flows.views.executor import SESSION_KEY_PLAN +from authentik.lib.views import bad_request_message from authentik.policies.views import PolicyAccessView +from authentik.providers.iframe_logout import IframeLogoutStageView +from authentik.providers.oauth2.errors import TokenError +from authentik.providers.oauth2.models import ( + AccessToken, + JWTAlgorithms, + OAuth2LogoutMethod, + OAuth2Provider, + RedirectURIMatchingMode, +) +from authentik.providers.oauth2.tasks import send_backchannel_logout_request +from authentik.providers.oauth2.utils import build_frontchannel_logout_url class EndSessionView(PolicyAccessView): - """Redirect to application's provider's invalidation flow""" + """OIDC RP-Initiated Logout endpoint""" flow: Flow + post_logout_redirect_uri: str | None def resolve_provider_application(self): self.application = get_object_or_404(Application, slug=self.kwargs["application_slug"]) @@ -25,6 +52,66 @@ class EndSessionView(PolicyAccessView): if not self.flow: raise Http404 + def validate(self): + # Parse end session parameters + query_dict = self.request.POST if self.request.method == "POST" else self.request.GET + state = query_dict.get("state") + request_redirect_uri = query_dict.get("post_logout_redirect_uri") + id_token_hint = query_dict.get("id_token_hint") + self.post_logout_redirect_uri = None + + # OIDC Certification: Verify id_token_hint. If invalid or missing, throw an error + if id_token_hint: + # Load a fresh provider instance that's not part of the flow + # since it'll have the cryptography Certificate that can't be pickled + provider = OAuth2Provider.objects.get(pk=self.provider.pk) + key, alg = provider.jwt_key + if alg != JWTAlgorithms.HS256: + key = provider.signing_key.public_key + try: + jwt_decode( + id_token_hint, + key, + algorithms=[alg], + audience=provider.client_id, + issuer=provider.get_issuer(self.request), + # ID Tokens are short-lived; a logout request arriving + # after expiry is still legitimate and must succeed. + options={"verify_exp": False}, + ) + except PyJWTError: + raise TokenError("invalid_request").with_cause( + "id_token_hint_decode_failed" + ) from None + + # Validate post_logout_redirect_uri against registered URIs + if request_redirect_uri: + # OIDC Certification: id_token_hint required with post_logout_redirect_uri + if not id_token_hint: + raise TokenError("invalid_request").with_cause("id_token_hint_missing") + if urlparse(request_redirect_uri).scheme in FORBIDDEN_URI_SCHEMES: + raise TokenError("invalid_request").with_cause("post_logout_redirect_uri") + for allowed in self.provider.post_logout_redirect_uris: + if allowed.matching_mode == RedirectURIMatchingMode.STRICT: + if request_redirect_uri == allowed.url: + self.post_logout_redirect_uri = request_redirect_uri + break + elif allowed.matching_mode == RedirectURIMatchingMode.REGEX: + if fullmatch(allowed.url, request_redirect_uri): + self.post_logout_redirect_uri = request_redirect_uri + break + # OIDC Certification: OP MUST NOT perform post-logout redirection + # if the supplied URI does not exactly match a registered one + if self.post_logout_redirect_uri is None: + raise TokenError("invalid_request").with_cause("invalid_post_logout_redirect_uri") + + # Append state to the redirect URI if both are present + if self.post_logout_redirect_uri and state: + separator = "&" if "?" in self.post_logout_redirect_uri else "?" + self.post_logout_redirect_uri = ( + f"{self.post_logout_redirect_uri}{separator}state={quote(state, safe='')}" + ) + # If IFrame provider logout happens when a saml provider has redirect # logout enabled, the flow won't make it back without this dispatch def dispatch(self, request: HttpRequest, *args, **kwargs) -> HttpResponse: @@ -37,18 +124,87 @@ class EndSessionView(PolicyAccessView): "Logout successful", content_type="text/html", status=200 ) - # Otherwise, continue with normal policy checks return super().dispatch(request, *args, **kwargs) def get(self, request: HttpRequest, *args, **kwargs) -> HttpResponse: """Dispatch the flow planner for the invalidation flow""" + try: + self.validate() + except TokenError as exc: + return bad_request_message( + self.request, + exc.description, + ) planner = FlowPlanner(self.flow) planner.allow_empty_flows = True - plan = planner.plan( - request, - { - PLAN_CONTEXT_APPLICATION: self.application, - }, + + context = { + PLAN_CONTEXT_APPLICATION: self.application, + } + + auth_session = AuthenticatedSession.from_request(request, request.user) + + if self.post_logout_redirect_uri: + context[PLAN_CONTEXT_POST_LOGOUT_REDIRECT_URI] = self.post_logout_redirect_uri + + session_key = ( + auth_session.session.session_key if auth_session and auth_session.session else None ) + + frontchannel_logout_url = None + if self.provider.logout_method == OAuth2LogoutMethod.FRONTCHANNEL: + frontchannel_logout_url = build_frontchannel_logout_url( + self.provider, request, session_key + ) + + if ( + self.provider.logout_method == OAuth2LogoutMethod.BACKCHANNEL + and self.provider.logout_uri + ): + access_token = AccessToken.objects.filter( + user=request.user, + provider=self.provider, + session=auth_session, + ).first() + if access_token and access_token.id_token: + send_backchannel_logout_request.send( + self.provider.pk, + access_token.id_token.iss, + access_token.id_token.sub, + session_key, + ) + # Delete the token to prevent duplicate backchannel logout + # when UserLogoutStage triggers the session deletion signal + access_token.delete() + + if frontchannel_logout_url: + context[PLAN_CONTEXT_OIDC_LOGOUT_IFRAME_SESSIONS] = [ + { + "url": frontchannel_logout_url, + "provider_name": self.provider.name, + "binding": OAUTH2_BINDING, + "provider_type": ( + f"{self.provider._meta.app_label}.{self.provider._meta.model_name}" + ), + } + ] + + access_tokens = AccessToken.objects.filter( + user=request.user, + provider=self.provider, + ) + if auth_session: + access_tokens = access_tokens.filter(session=auth_session) + access_tokens.delete() + + plan = planner.plan(request, context) + + if frontchannel_logout_url: + plan.insert_stage(in_memory_stage(IframeLogoutStageView)) + plan.append_stage(in_memory_stage(SessionEndStage)) return plan.to_redirect(self.request, self.flow) + + def post(self, request: HttpRequest, *args, **kwargs) -> HttpResponse: + """Handle POST requests for logout (same as GET per OIDC spec)""" + return self.get(request, *args, **kwargs) diff --git a/authentik/providers/oauth2/views/introspection.py b/authentik/providers/oauth2/views/introspection.py index 9eaf973fa4..15e822de5e 100644 --- a/authentik/providers/oauth2/views/introspection.py +++ b/authentik/providers/oauth2/views/introspection.py @@ -2,6 +2,7 @@ from dataclasses import dataclass, field +from django.db.models import Q from django.http import HttpRequest, HttpResponse from django.utils.decorators import method_decorator from django.views import View @@ -10,7 +11,7 @@ from structlog.stdlib import get_logger from authentik.providers.oauth2.errors import TokenIntrospectionError from authentik.providers.oauth2.id_token import IDToken -from authentik.providers.oauth2.models import AccessToken, OAuth2Provider, RefreshToken +from authentik.providers.oauth2.models import AccessToken, ClientType, OAuth2Provider, RefreshToken from authentik.providers.oauth2.utils import TokenResponse, authenticate_provider LOGGER = get_logger() @@ -33,10 +34,7 @@ class TokenIntrospectionParams: self.id_token = self.token.id_token if not self.token.id_token: - LOGGER.debug( - "token not an authentication token", - token=self.token, - ) + LOGGER.debug("token not an authentication token", token=self.token) raise TokenIntrospectionError() @staticmethod @@ -45,14 +43,23 @@ class TokenIntrospectionParams: raw_token = request.POST.get("token") provider = authenticate_provider(request) if not provider: + LOGGER.info("Failed to authenticate introspection request") + raise TokenIntrospectionError + if provider.client_type != ClientType.CONFIDENTIAL: + LOGGER.info("Introspection request from public provider, denying.") raise TokenIntrospectionError - access_token = AccessToken.objects.filter(token=raw_token, provider=provider).first() + query = Q( + Q(provider=provider) | Q(provider__jwt_federation_providers__in=[provider]), + token=raw_token, + ) + + access_token = AccessToken.objects.filter(query).first() if access_token: - return TokenIntrospectionParams(access_token, provider) - refresh_token = RefreshToken.objects.filter(token=raw_token, provider=provider).first() + return TokenIntrospectionParams(access_token, access_token.provider) + refresh_token = RefreshToken.objects.filter(query).first() if refresh_token: - return TokenIntrospectionParams(refresh_token, provider) + return TokenIntrospectionParams(refresh_token, refresh_token.provider) LOGGER.debug("Token does not exist", token=raw_token) raise TokenIntrospectionError() diff --git a/authentik/providers/oauth2/views/provider.py b/authentik/providers/oauth2/views/provider.py index b16113a60b..b1009cf6c5 100644 --- a/authentik/providers/oauth2/views/provider.py +++ b/authentik/providers/oauth2/views/provider.py @@ -74,6 +74,8 @@ class ProviderInfoView(View): ), "backchannel_logout_supported": True, "backchannel_logout_session_supported": True, + "frontchannel_logout_supported": True, + "frontchannel_logout_session_supported": True, "response_types_supported": [ ResponseTypes.CODE, ResponseTypes.ID_TOKEN, diff --git a/authentik/providers/oauth2/views/token.py b/authentik/providers/oauth2/views/token.py index 3b62e8e9e9..f280817e97 100644 --- a/authentik/providers/oauth2/views/token.py +++ b/authentik/providers/oauth2/views/token.py @@ -33,6 +33,7 @@ from authentik.common.oauth.constants import ( SCOPE_OFFLINE_ACCESS, TOKEN_TYPE, ) +from authentik.core.apps import AppAccessWithoutBindings from authentik.core.middleware import CTX_AUTH_VIA from authentik.core.models import ( USER_ATTRIBUTE_EXPIRES, @@ -57,7 +58,7 @@ from authentik.providers.oauth2.id_token import IDToken from authentik.providers.oauth2.models import ( AccessToken, AuthorizationCode, - ClientTypes, + ClientType, DeviceToken, OAuth2Provider, RedirectURIMatchingMode, @@ -147,6 +148,7 @@ class TokenParams: ): user = self.user if self.user else get_anonymous_user() engine = PolicyEngine(app, user, request) + engine.empty_result = AppAccessWithoutBindings.get() # Don't cache as for client_credentials flows the user will not be set # so we'll get generic cache results engine.use_cache = False @@ -163,8 +165,20 @@ class TokenParams: raise TokenError("invalid_grant") def __post_init__(self, raw_code: str, raw_token: str, request: HttpRequest): - if self.grant_type in [GRANT_TYPE_AUTHORIZATION_CODE, GRANT_TYPE_REFRESH_TOKEN]: - if self.provider.client_type == ClientTypes.CONFIDENTIAL and not compare_digest( + if self.grant_type not in self.provider.grant_types: + LOGGER.warning("Invalid grant_type for provider", grant_type=self.grant_type) + raise TokenError("invalid_grant").with_cause("grant_type_not_configured") + + # Confidential clients MUST authenticate to the token endpoint per + # RFC 6749 §2.3.1. The device code grant (RFC 8628 §3.4) inherits + # that requirement - the device_code alone is not a substitute for + # client credentials. + if self.grant_type in [ + GRANT_TYPE_AUTHORIZATION_CODE, + GRANT_TYPE_REFRESH_TOKEN, + GRANT_TYPE_DEVICE_CODE, + ]: + if self.provider.client_type == ClientType.CONFIDENTIAL and not compare_digest( self.provider.client_secret, self.client_secret ): LOGGER.warning( @@ -239,7 +253,7 @@ class TokenParams: raise TokenError("invalid_grant") def __check_redirect_uri(self, request: HttpRequest): - allowed_redirect_urls = self.provider.redirect_uris + allowed_redirect_urls = self.provider.authorization_redirect_uris # At this point, no provider should have a blank redirect_uri, in case they do # this will check an empty array and raise an error @@ -341,7 +355,7 @@ class TokenParams: user = User.objects.filter(username=username, is_active=True).first() if not user: raise TokenError("invalid_grant") - token: Token = Token.filter_not_expired( + token: Token = Token.objects.filter( key=password, intent=TokenIntents.INTENT_APP_PASSWORD, user=user ).first() if not token or token.user.uid != user.uid: @@ -596,10 +610,10 @@ class TokenView(View): if not self.provider: LOGGER.warning("OAuth2Provider does not exist", client_id=client_id) raise TokenError("invalid_client") - CTX_AUTH_VIA.set("oauth_client_secret") self.params = self.params_class.parse( request, self.provider, client_id, client_secret ) + CTX_AUTH_VIA.set("oauth_client_secret") with start_span( op="authentik.providers.oauth2.post.response", @@ -717,7 +731,7 @@ class TokenView(View): refresh_token_threshold = timedelta_from_string(self.provider.refresh_token_threshold) if ( refresh_token_threshold.total_seconds() == 0 - or (now - self.params.refresh_token.expires) > refresh_token_threshold + or (self.params.refresh_token.expires - now) < refresh_token_threshold ): refresh_token_expiry = now + timedelta_from_string(self.provider.refresh_token_validity) refresh_token = RefreshToken( diff --git a/authentik/providers/oauth2/views/token_revoke.py b/authentik/providers/oauth2/views/token_revoke.py index 52729b0c0d..a100c520ac 100644 --- a/authentik/providers/oauth2/views/token_revoke.py +++ b/authentik/providers/oauth2/views/token_revoke.py @@ -2,6 +2,7 @@ from dataclasses import dataclass +from django.db.models import Q from django.http import Http404, HttpRequest, HttpResponse from django.utils.decorators import method_decorator from django.views import View @@ -9,7 +10,7 @@ from django.views.decorators.csrf import csrf_exempt from structlog.stdlib import get_logger from authentik.providers.oauth2.errors import TokenRevocationError -from authentik.providers.oauth2.models import AccessToken, ClientTypes, OAuth2Provider, RefreshToken +from authentik.providers.oauth2.models import AccessToken, ClientType, OAuth2Provider, RefreshToken from authentik.providers.oauth2.utils import ( TokenResponse, authenticate_provider, @@ -32,15 +33,27 @@ class TokenRevocationParams: raw_token = request.POST.get("token") provider, _, _ = provider_from_request(request) - if provider and provider.client_type == ClientTypes.CONFIDENTIAL: + if provider and provider.client_type == ClientType.CONFIDENTIAL: provider = authenticate_provider(request) if not provider: raise TokenRevocationError("invalid_client") + # By default clients can only revoke their own tokens + query = Q(provider=provider, token=raw_token) + if provider.client_type == ClientType.CONFIDENTIAL: + provider = authenticate_provider(request) + if not provider: + raise TokenRevocationError("invalid_client") + # If the request is authenticated by a confidential provider, it can also + # revoke federated tokens + query = Q( + Q(provider=provider) | Q(provider__jwt_federation_providers__in=[provider]), + token=raw_token, + ) - access_token = AccessToken.objects.filter(token=raw_token).first() + access_token = AccessToken.objects.filter(query).first() if access_token: return TokenRevocationParams(access_token, provider) - refresh_token = RefreshToken.objects.filter(token=raw_token).first() + refresh_token = RefreshToken.objects.filter(query).first() if refresh_token: return TokenRevocationParams(refresh_token, provider) LOGGER.debug("Token does not exist", token=raw_token) diff --git a/authentik/providers/proxy/controllers/k8s/traefik_3.py b/authentik/providers/proxy/controllers/k8s/traefik_3.py index 70c39466e7..ae483f7fff 100644 --- a/authentik/providers/proxy/controllers/k8s/traefik_3.py +++ b/authentik/providers/proxy/controllers/k8s/traefik_3.py @@ -27,6 +27,8 @@ class TraefikMiddlewareSpecForwardAuth: trustForwardHeader: bool = field(default=True) + maxResponseBodySize: int = field(default=1024 * 1024 * 4) + @dataclass(slots=True) class TraefikMiddlewareSpec: @@ -140,6 +142,7 @@ class Traefik3MiddlewareReconciler(KubernetesObjectReconciler[TraefikMiddleware] ], authResponseHeadersRegex="", trustForwardHeader=True, + maxResponseBodySize=1024 * 1024 * 4, ) ), ) diff --git a/authentik/providers/proxy/controllers/kubernetes.py b/authentik/providers/proxy/controllers/kubernetes.py index 43c00a53c5..c69e7b591d 100644 --- a/authentik/providers/proxy/controllers/kubernetes.py +++ b/authentik/providers/proxy/controllers/kubernetes.py @@ -15,7 +15,6 @@ class ProxyKubernetesController(KubernetesController): super().__init__(outpost, connection) self.deployment_ports = [ DeploymentPort(9000, "http", "tcp"), - DeploymentPort(9300, "http-metrics", "tcp"), DeploymentPort(9443, "https", "tcp"), ] self.reconcilers[IngressReconciler.reconciler_name()] = IngressReconciler diff --git a/authentik/providers/proxy/models.py b/authentik/providers/proxy/models.py index 7651bf84b1..3d9f175dfe 100644 --- a/authentik/providers/proxy/models.py +++ b/authentik/providers/proxy/models.py @@ -16,7 +16,8 @@ from authentik.crypto.models import CertificateKeyPair from authentik.lib.models import DomainlessURLValidator, InternallyManagedMixin from authentik.outposts.models import OutpostModel from authentik.providers.oauth2.models import ( - ClientTypes, + ClientType, + GrantType, OAuth2Provider, RedirectURI, RedirectURIMatchingMode, @@ -161,7 +162,12 @@ class ProxyProvider(OutpostModel, OAuth2Provider): def set_oauth_defaults(self): """Ensure all OAuth2-related settings are correct""" - self.client_type = ClientTypes.CONFIDENTIAL + self.grant_types = [ + GrantType.AUTHORIZATION_CODE, + GrantType.CLIENT_CREDENTIALS, + GrantType.PASSWORD, + ] + self.client_type = ClientType.CONFIDENTIAL self.signing_key = None self.include_claims_in_id_token = True scopes = ScopeMapping.objects.filter( diff --git a/authentik/providers/proxy/tests.py b/authentik/providers/proxy/tests.py index 25d555f34e..6888229a8d 100644 --- a/authentik/providers/proxy/tests.py +++ b/authentik/providers/proxy/tests.py @@ -9,7 +9,7 @@ from authentik.core.models import Application from authentik.core.tests.utils import create_test_admin_user, create_test_cert, create_test_flow from authentik.lib.generators import generate_id from authentik.outposts.models import Outpost, OutpostType -from authentik.providers.oauth2.models import ClientTypes +from authentik.providers.oauth2.models import ClientType from authentik.providers.proxy.models import ProxyMode, ProxyProvider @@ -96,7 +96,7 @@ class ProxyProviderTests(APITestCase): ) self.assertEqual(response.status_code, 201) provider: ProxyProvider = ProxyProvider.objects.get(name=name) - self.assertEqual(provider.client_type, ClientTypes.CONFIDENTIAL) + self.assertEqual(provider.client_type, ClientType.CONFIDENTIAL) def test_update_defaults(self): """Test create""" @@ -114,8 +114,8 @@ class ProxyProviderTests(APITestCase): ) self.assertEqual(response.status_code, 201) provider: ProxyProvider = ProxyProvider.objects.get(name=name) - self.assertEqual(provider.client_type, ClientTypes.CONFIDENTIAL) - provider.client_type = ClientTypes.PUBLIC + self.assertEqual(provider.client_type, ClientType.CONFIDENTIAL) + provider.client_type = ClientType.PUBLIC provider.save() response = self.client.put( reverse("authentik_api:proxyprovider-detail", kwargs={"pk": provider.pk}), @@ -130,7 +130,7 @@ class ProxyProviderTests(APITestCase): ) self.assertEqual(response.status_code, 200) provider: ProxyProvider = ProxyProvider.objects.get(name=name) - self.assertEqual(provider.client_type, ClientTypes.CONFIDENTIAL) + self.assertEqual(provider.client_type, ClientType.CONFIDENTIAL) def test_sa_fetch(self): """Test fetching the outpost config as the service account""" diff --git a/authentik/providers/rac/api/connection_tokens.py b/authentik/providers/rac/api/connection_tokens.py index 87bf6aaa41..bb325d0680 100644 --- a/authentik/providers/rac/api/connection_tokens.py +++ b/authentik/providers/rac/api/connection_tokens.py @@ -40,7 +40,9 @@ class ConnectionTokenViewSet( ): """ConnectionToken Viewset""" - queryset = ConnectionToken.objects.all().select_related("session", "endpoint") + queryset = ( + ConnectionToken.objects.including_expired().all().select_related("session", "endpoint") + ) serializer_class = ConnectionTokenSerializer filterset_fields = ["endpoint", "session__user", "provider"] search_fields = ["endpoint__name", "provider__name"] diff --git a/authentik/providers/rac/consumer_client.py b/authentik/providers/rac/consumer_client.py index 33616fa3d3..779536dfd4 100644 --- a/authentik/providers/rac/consumer_client.py +++ b/authentik/providers/rac/consumer_client.py @@ -85,7 +85,7 @@ class RACClientConsumer(AsyncWebsocketConsumer): def init_outpost_connection(self): """Initialize guac connection settings""" self.token = ( - ConnectionToken.filter_not_expired( + ConnectionToken.objects.filter( token=self.scope["url_route"]["kwargs"]["token"], session__session__session_key=self.scope["session"].session_key, ) diff --git a/authentik/providers/rac/signals.py b/authentik/providers/rac/signals.py index fe4f190e45..a120802a9d 100644 --- a/authentik/providers/rac/signals.py +++ b/authentik/providers/rac/signals.py @@ -1,6 +1,5 @@ """RAC Signals""" -from asgiref.sync import async_to_sync from channels.layers import get_channel_layer from django.core.cache import cache from django.db.models.signals import post_delete, post_save, pre_delete @@ -18,7 +17,7 @@ from authentik.providers.rac.models import ConnectionToken, Endpoint @receiver(pre_delete, sender=AuthenticatedSession) def user_session_deleted(sender, instance: AuthenticatedSession, **_): layer = get_channel_layer() - async_to_sync(layer.group_send)( + layer.group_send_blocking( build_rac_client_group_session(instance.session.session_key), {"type": "event.disconnect", "reason": "session_logout"}, ) @@ -28,7 +27,7 @@ def user_session_deleted(sender, instance: AuthenticatedSession, **_): def pre_delete_connection_token_disconnect(sender, instance: ConnectionToken, **_): """Disconnect session when connection token is deleted""" layer = get_channel_layer() - async_to_sync(layer.group_send)( + layer.group_send_blocking( build_rac_client_group_token(instance.token), {"type": "event.disconnect", "reason": "token_delete"}, ) diff --git a/authentik/providers/rac/views.py b/authentik/providers/rac/views.py index 334edba760..3ffd7e23e2 100644 --- a/authentik/providers/rac/views.py +++ b/authentik/providers/rac/views.py @@ -68,7 +68,7 @@ class RACInterface(InterfaceView): def dispatch(self, request: HttpRequest, *args: Any, **kwargs: Any) -> HttpResponse: # Early sanity check to ensure token still exists - token = ConnectionToken.filter_not_expired( + token = ConnectionToken.objects.filter( token=self.kwargs["token"], session__session__session_key=request.session.session_key, ).first() @@ -101,7 +101,7 @@ class RACFinalStage(RedirectStage): if not passing.passing: return self.executor.stage_invalid(", ".join(passing.messages)) # Check if we're already at the maximum connection limit - all_tokens = ConnectionToken.filter_not_expired( + all_tokens = ConnectionToken.objects.filter( endpoint=self.endpoint, ) if self.endpoint.maximum_connections > -1: diff --git a/authentik/providers/radius/api/providers.py b/authentik/providers/radius/api/providers.py index 9a12650587..0a60784e22 100644 --- a/authentik/providers/radius/api/providers.py +++ b/authentik/providers/radius/api/providers.py @@ -18,6 +18,7 @@ from rest_framework.viewsets import GenericViewSet, ModelViewSet from authentik.core.api.providers import ProviderSerializer from authentik.core.api.used_by import UsedByMixin from authentik.core.api.utils import ModelSerializer, PassiveSerializer +from authentik.core.apps import AppAccessWithoutBindings from authentik.core.expression.exceptions import PropertyMappingExpressionException from authentik.core.models import Application from authentik.events.models import Event, EventAction @@ -169,6 +170,7 @@ class RadiusOutpostConfigViewSet(ListModelMixin, GenericViewSet): provider = get_object_or_404(RadiusProvider, pk=pk) application = get_object_or_404(Application, slug=request.query_params["app_slug"]) engine = PolicyEngine(application, request.user, request) + engine.empty_result = AppAccessWithoutBindings.get() engine.use_cache = False engine.build() result = engine.result diff --git a/authentik/providers/saml/api/providers.py b/authentik/providers/saml/api/providers.py index 0fbc987570..bac8ce1a5a 100644 --- a/authentik/providers/saml/api/providers.py +++ b/authentik/providers/saml/api/providers.py @@ -24,7 +24,11 @@ from rest_framework.viewsets import ModelViewSet from structlog.stdlib import get_logger from authentik.api.validation import validate -from authentik.common.saml.constants import SAML_BINDING_POST, SAML_BINDING_REDIRECT +from authentik.common.saml.constants import ( + DEFAULT_ISSUER, + SAML_BINDING_POST, + SAML_BINDING_REDIRECT, +) from authentik.core.api.providers import ProviderSerializer from authentik.core.api.used_by import UsedByMixin from authentik.core.api.utils import PassiveSerializer, PropertyMappingPreviewSerializer @@ -55,7 +59,13 @@ class SAMLProviderSerializer(ProviderSerializer): """SAMLProvider Serializer""" url_download_metadata = SerializerMethodField() + url_issuer = SerializerMethodField() + # Unified SAML endpoint (primary) + url_unified = SerializerMethodField() + url_unified_init = SerializerMethodField() + + # Legacy endpoints (for backward compatibility) url_sso_post = SerializerMethodField() url_sso_redirect = SerializerMethodField() url_sso_init = SerializerMethodField() @@ -85,6 +95,53 @@ class SAMLProviderSerializer(ProviderSerializer): + "?download" ) + def get_url_issuer(self, instance: SAMLProvider) -> str: + """Get Issuer/EntityID URL""" + if instance.issuer_override: + return instance.issuer_override + if "request" not in self._context: + return DEFAULT_ISSUER + request: HttpRequest = self._context["request"]._request + try: + return request.build_absolute_uri( + reverse( + "authentik_providers_saml:metadata-download", + kwargs={"application_slug": instance.application.slug}, + ) + ) + except Provider.application.RelatedObjectDoesNotExist: + return DEFAULT_ISSUER + + def get_url_unified(self, instance: SAMLProvider) -> str: + """Get unified SAML endpoint URL (handles SSO and SLO)""" + if "request" not in self._context: + return "" + request: HttpRequest = self._context["request"]._request + try: + return request.build_absolute_uri( + reverse( + "authentik_providers_saml:base", + kwargs={"application_slug": instance.application.slug}, + ) + ) + except Provider.application.RelatedObjectDoesNotExist: + return "-" + + def get_url_unified_init(self, instance: SAMLProvider) -> str: + """Get IdP-initiated SAML URL""" + if "request" not in self._context: + return "" + request: HttpRequest = self._context["request"]._request + try: + return request.build_absolute_uri( + reverse( + "authentik_providers_saml:init", + kwargs={"application_slug": instance.application.slug}, + ) + ) + except Provider.application.RelatedObjectDoesNotExist: + return "-" + def get_url_sso_post(self, instance: SAMLProvider) -> str: """Get SSO Post URL""" if "request" not in self._context: @@ -198,7 +255,7 @@ class SAMLProviderSerializer(ProviderSerializer): "acs_url", "sls_url", "audience", - "issuer", + "issuer_override", "assertion_valid_not_before", "assertion_valid_not_on_or_after", "session_valid_not_on_or_after", @@ -220,6 +277,9 @@ class SAMLProviderSerializer(ProviderSerializer): "default_relay_state", "default_name_id_policy", "url_download_metadata", + "url_issuer", + "url_unified", + "url_unified_init", "url_sso_post", "url_sso_redirect", "url_sso_init", @@ -232,8 +292,8 @@ class SAMLProviderSerializer(ProviderSerializer): class SAMLMetadataSerializer(PassiveSerializer): """SAML Provider Metadata serializer""" - metadata = CharField(read_only=True) - download_url = CharField(read_only=True, required=False) + metadata = CharField() + download_url = CharField(required=False, allow_null=True) class SAMLProviderImportSerializer(PassiveSerializer): @@ -315,7 +375,7 @@ class SAMLProviderViewSet(UsedByMixin, ModelViewSet): return response return Response({"metadata": metadata}, content_type="application/json") except Provider.application.RelatedObjectDoesNotExist: - return Response({"metadata": ""}, content_type="application/json") + raise Http404 from None @permission_required( None, diff --git a/authentik/providers/saml/migrations/0022_remove_samlprovider_issuer_and_more.py b/authentik/providers/saml/migrations/0022_remove_samlprovider_issuer_and_more.py new file mode 100644 index 0000000000..aa38866566 --- /dev/null +++ b/authentik/providers/saml/migrations/0022_remove_samlprovider_issuer_and_more.py @@ -0,0 +1,34 @@ +# Generated by Django 5.2.11 on 2026-02-24 06:03 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("authentik_providers_saml", "0021_samlprovider_sign_logout_response"), + ] + + operations = [ + migrations.RenameField( + model_name="samlprovider", + old_name="issuer", + new_name="issuer_override", + ), + migrations.AlterField( + model_name="samlprovider", + name="issuer_override", + field=models.TextField( + blank=True, + default="", + help_text="Also known as EntityID. Providing a value overrides the default issuer generated by authentik.", + ), + ), + migrations.AddField( + model_name="samlsession", + name="issuer", + field=models.TextField( + default=None, help_text="SAML Issuer used for this session", null=True + ), + ), + ] diff --git a/authentik/providers/saml/models.py b/authentik/providers/saml/models.py index eeb91fc5b9..7be7d8852e 100644 --- a/authentik/providers/saml/models.py +++ b/authentik/providers/saml/models.py @@ -77,7 +77,14 @@ class SAMLProvider(Provider): "no audience restriction will be added." ), ) - issuer = models.TextField(help_text=_("Also known as EntityID"), default="authentik") + issuer_override = models.TextField( + blank=True, + default="", + help_text=_( + "Also known as EntityID. Providing a value overrides the default issuer " + "generated by authentik." + ), + ) sls_url = models.TextField( blank=True, validators=[DomainlessURLValidator(schemes=("http", "https"))], @@ -234,7 +241,7 @@ class SAMLProvider(Provider): """Use IDP-Initiated SAML flow as launch URL""" try: return reverse( - "authentik_providers_saml:sso-init", + "authentik_providers_saml:init", kwargs={"application_slug": self.application.slug}, ) except Provider.application.RelatedObjectDoesNotExist: @@ -318,6 +325,9 @@ class SAMLSession(InternallyManagedMixin, SerializerModel, ExpiringModel): session_index = models.TextField(help_text=_("SAML SessionIndex for this session")) name_id = models.TextField(help_text=_("SAML NameID value for this session")) name_id_format = models.TextField(default="", blank=True, help_text=_("SAML NameID format")) + issuer = models.TextField( + default=None, null=True, help_text=_("SAML Issuer used for this session") + ) created = models.DateTimeField(auto_now_add=True) @property diff --git a/authentik/providers/saml/processors/assertion.py b/authentik/providers/saml/processors/assertion.py index 9cdbe2c344..bc2dca59bd 100644 --- a/authentik/providers/saml/processors/assertion.py +++ b/authentik/providers/saml/processors/assertion.py @@ -6,6 +6,7 @@ from types import GeneratorType import xmlsec from django.http import HttpRequest +from django.urls import reverse from django.utils.timezone import now from lxml import etree # nosec from lxml.etree import Element, SubElement, _Element # nosec @@ -63,6 +64,7 @@ class AssertionProcessor: session_index: str name_id: str name_id_format: str + issuer: str session_not_on_or_after_datetime: datetime def __init__(self, provider: SAMLProvider, request: HttpRequest, auth_n_request: AuthNRequest): @@ -137,10 +139,24 @@ class AssertionProcessor: continue return attribute_statement + def _get_issuer_value(self) -> str: + """Get issuer value, with fallback to generated URL if empty""" + # If user has set an override issuer, use it + if self.provider.issuer_override: + return self.provider.issuer_override + + return self.http_request.build_absolute_uri( + reverse( + "authentik_providers_saml:metadata-download", + kwargs={"application_slug": self.provider.application.slug}, + ) + ) + def get_issuer(self) -> Element: """Get Issuer Element""" issuer = Element(f"{{{NS_SAML_ASSERTION}}}Issuer", nsmap=NS_MAP) - issuer.text = self.provider.issuer + self.issuer = self._get_issuer_value() + issuer.text = self.issuer return issuer def get_assertion_auth_n_statement(self) -> Element: diff --git a/authentik/providers/saml/processors/logout_request.py b/authentik/providers/saml/processors/logout_request.py index 1f7114db1f..5b8d529059 100644 --- a/authentik/providers/saml/processors/logout_request.py +++ b/authentik/providers/saml/processors/logout_request.py @@ -8,6 +8,7 @@ from lxml import etree # nosec from lxml.etree import Element, _Element from authentik.common.saml.constants import ( + DEFAULT_ISSUER, DIGEST_ALGORITHM_TRANSLATION_MAP, NS_MAP, NS_SAML_ASSERTION, @@ -33,11 +34,12 @@ class LogoutRequestProcessor: name_id_format: str session_index: str | None relay_state: str | None + issuer: str | None _issue_instant: str _request_id: str - def __init__( + def __init__( # noqa: PLR0913 self, provider: SAMLProvider, user: User | None, @@ -46,6 +48,7 @@ class LogoutRequestProcessor: name_id_format: str = SAML_NAME_ID_FORMAT_EMAIL, session_index: str | None = None, relay_state: str | None = None, + issuer: str | None = None, ): self.provider = provider self.user = user @@ -54,14 +57,23 @@ class LogoutRequestProcessor: self.name_id_format = name_id_format self.session_index = session_index self.relay_state = relay_state + self.issuer = issuer self._issue_instant = get_time_string() self._request_id = get_random_id() + def _get_issuer_value(self) -> str: + """Get issuer value from session, with fallback to provider""" + if self.issuer: + return self.issuer + if self.provider.issuer_override: + return self.provider.issuer_override + return DEFAULT_ISSUER + def get_issuer(self) -> Element: """Get Issuer element""" issuer = Element(f"{{{NS_SAML_ASSERTION}}}Issuer") - issuer.text = self.provider.issuer + issuer.text = self._get_issuer_value() return issuer def get_name_id(self) -> Element: diff --git a/authentik/providers/saml/processors/logout_response_processor.py b/authentik/providers/saml/processors/logout_response_processor.py index d97ad54eb9..e47b30804a 100644 --- a/authentik/providers/saml/processors/logout_response_processor.py +++ b/authentik/providers/saml/processors/logout_response_processor.py @@ -8,6 +8,7 @@ from lxml import etree from lxml.etree import Element, SubElement from authentik.common.saml.constants import ( + DEFAULT_ISSUER, DIGEST_ALGORITHM_TRANSLATION_MAP, NS_MAP, NS_SAML_ASSERTION, @@ -28,27 +29,38 @@ class LogoutResponseProcessor: logout_request: LogoutRequest destination: str | None relay_state: str | None + issuer: str | None _issue_instant: str _response_id: str - def __init__( + def __init__( # noqa: PLR0913 self, provider: SAMLProvider, logout_request: LogoutRequest, destination: str | None = None, relay_state: str | None = None, + issuer: str | None = None, ): self.provider = provider self.logout_request = logout_request self.destination = destination self.relay_state = relay_state or (logout_request.relay_state if logout_request else None) + self.issuer = issuer self._issue_instant = get_time_string() self._response_id = get_random_id() + def _get_issuer_value(self) -> str: + """Get issuer value from session, with fallback to provider""" + if self.issuer: + return self.issuer + if self.provider.issuer_override: + return self.provider.issuer_override + return DEFAULT_ISSUER + def get_issuer(self) -> Element: """Get Issuer element""" issuer = Element(f"{{{NS_SAML_ASSERTION}}}Issuer") - issuer.text = self.provider.issuer + issuer.text = self._get_issuer_value() return issuer def build(self, status: str = "Success") -> Element: diff --git a/authentik/providers/saml/processors/metadata.py b/authentik/providers/saml/processors/metadata.py index f7e694045d..bda36cf930 100644 --- a/authentik/providers/saml/processors/metadata.py +++ b/authentik/providers/saml/processors/metadata.py @@ -40,6 +40,19 @@ class MetadataProcessor: self.force_binding = None self.xml_id = "_" + sha256(f"{provider.name}-{provider.pk}".encode("ascii")).hexdigest() + def _get_issuer_value(self) -> str: + """Get issuer value, with fallback to generated URL if empty""" + # If user has set an override issuer, use it + if self.provider.issuer_override: + return self.provider.issuer_override + + return self.http_request.build_absolute_uri( + reverse( + "authentik_providers_saml:metadata-download", + kwargs={"application_slug": self.provider.application.slug}, + ) + ) + # Using type unions doesn't work with cython types (which is what lxml is) def get_signing_key_descriptor(self) -> Element | None: """Get Signing KeyDescriptor, if enabled for the provider""" @@ -68,54 +81,35 @@ class MetadataProcessor: element.text = name_id_format yield element + def _get_unified_url(self) -> str: + """Get the unified SAML endpoint URL""" + return self.http_request.build_absolute_uri( + reverse( + "authentik_providers_saml:base", + kwargs={"application_slug": self.provider.application.slug}, + ) + ) + def get_sso_bindings(self) -> Iterator[Element]: - """Get all Bindings supported""" - binding_url_map = { - (SAML_BINDING_REDIRECT, "SingleSignOnService"): self.http_request.build_absolute_uri( - reverse( - "authentik_providers_saml:sso-redirect", - kwargs={"application_slug": self.provider.application.slug}, - ) - ), - (SAML_BINDING_POST, "SingleSignOnService"): self.http_request.build_absolute_uri( - reverse( - "authentik_providers_saml:sso-post", - kwargs={"application_slug": self.provider.application.slug}, - ) - ), - } - for binding_svc, url in binding_url_map.items(): - binding, svc = binding_svc + """Get all SSO Bindings - both point to unified endpoint""" + unified_url = self._get_unified_url() + for binding in [SAML_BINDING_REDIRECT, SAML_BINDING_POST]: if self.force_binding and self.force_binding != binding: continue - element = Element(f"{{{NS_SAML_METADATA}}}{svc}") + element = Element(f"{{{NS_SAML_METADATA}}}SingleSignOnService") element.attrib["Binding"] = binding - element.attrib["Location"] = url + element.attrib["Location"] = unified_url yield element def get_slo_bindings(self) -> Iterator[Element]: - """Get all Bindings supported""" - binding_url_map = { - (SAML_BINDING_REDIRECT, "SingleLogoutService"): self.http_request.build_absolute_uri( - reverse( - "authentik_providers_saml:slo-redirect", - kwargs={"application_slug": self.provider.application.slug}, - ) - ), - (SAML_BINDING_POST, "SingleLogoutService"): self.http_request.build_absolute_uri( - reverse( - "authentik_providers_saml:slo-post", - kwargs={"application_slug": self.provider.application.slug}, - ) - ), - } - for binding_svc, url in binding_url_map.items(): - binding, svc = binding_svc + """Get all SLO Bindings - both point to unified endpoint""" + unified_url = self._get_unified_url() + for binding in [SAML_BINDING_REDIRECT, SAML_BINDING_POST]: if self.force_binding and self.force_binding != binding: continue - element = Element(f"{{{NS_SAML_METADATA}}}{svc}") + element = Element(f"{{{NS_SAML_METADATA}}}SingleLogoutService") element.attrib["Binding"] = binding - element.attrib["Location"] = url + element.attrib["Location"] = unified_url yield element def _prepare_signature(self, entity_descriptor: _Element): @@ -189,7 +183,7 @@ class MetadataProcessor: """Build full EntityDescriptor""" entity_descriptor = Element(f"{{{NS_SAML_METADATA}}}EntityDescriptor", nsmap=NS_MAP) entity_descriptor.attrib["ID"] = self.xml_id - entity_descriptor.attrib["entityID"] = self.provider.issuer + entity_descriptor.attrib["entityID"] = self._get_issuer_value() if self.provider.signing_kp: self._prepare_signature(entity_descriptor) diff --git a/authentik/providers/saml/processors/metadata_parser.py b/authentik/providers/saml/processors/metadata_parser.py index eae12a3244..28491fb8e7 100644 --- a/authentik/providers/saml/processors/metadata_parser.py +++ b/authentik/providers/saml/processors/metadata_parser.py @@ -51,7 +51,6 @@ class ServiceProviderMetadata: provider = SAMLProvider.objects.create( name=name, authorization_flow=authorization_flow, invalidation_flow=invalidation_flow ) - provider.issuer = self.entity_id provider.sp_binding = self.acs_binding provider.acs_url = self.acs_location provider.default_name_id_policy = self.name_id_policy diff --git a/authentik/providers/saml/signals.py b/authentik/providers/saml/signals.py index 5a52ebe60d..6c71deba5c 100644 --- a/authentik/providers/saml/signals.py +++ b/authentik/providers/saml/signals.py @@ -4,7 +4,6 @@ from django.db.models.signals import post_save, pre_delete from django.dispatch import receiver from django.http import HttpRequest from django.urls import reverse -from django.utils import timezone from structlog.stdlib import get_logger from authentik.core.models import AuthenticatedSession, User @@ -47,8 +46,6 @@ def handle_saml_iframe_pre_user_logout( SAMLSession.objects.filter( session=auth_session, user=user, - expires__gt=timezone.now(), - expiring=True, provider__logout_method=SAMLLogoutMethods.FRONTCHANNEL_IFRAME, ) .exclude(provider__sls_url="") @@ -78,6 +75,7 @@ def handle_saml_iframe_pre_user_logout( name_id_format=session.name_id_format, session_index=session.session_index, relay_state=relay_state, + issuer=session.issuer, ) if session.provider.sls_binding == SAMLBindings.POST: @@ -137,8 +135,6 @@ def handle_flow_pre_user_logout( SAMLSession.objects.filter( session=auth_session, user=user, - expires__gt=timezone.now(), - expiring=True, provider__logout_method=SAMLLogoutMethods.FRONTCHANNEL_NATIVE, ) .exclude(provider__sls_url="") @@ -168,6 +164,7 @@ def handle_flow_pre_user_logout( name_id_format=session.name_id_format, session_index=session.session_index, relay_state=relay_state, + issuer=session.issuer, ) if session.provider.sls_binding == SAMLBindings.POST: @@ -229,6 +226,7 @@ def user_session_deleted_saml_logout(sender, instance: AuthenticatedSession, **_ name_id=saml_session.name_id, name_id_format=saml_session.name_id_format, session_index=saml_session.session_index, + issuer=saml_session.issuer, ) @@ -262,4 +260,5 @@ def user_deactivated_saml_logout(sender, instance: User, **kwargs): name_id=saml_session.name_id, name_id_format=saml_session.name_id_format, session_index=saml_session.session_index, + issuer=saml_session.issuer, ) diff --git a/authentik/providers/saml/tasks.py b/authentik/providers/saml/tasks.py index 84b87d20b0..6fd328c55f 100644 --- a/authentik/providers/saml/tasks.py +++ b/authentik/providers/saml/tasks.py @@ -22,6 +22,7 @@ def send_saml_logout_request( name_id: str, name_id_format: str, session_index: str, + issuer: str, ): """Send SAML LogoutRequest to a Service Provider using session data""" provider = SAMLProvider.objects.filter(pk=provider_pk).first() @@ -47,6 +48,7 @@ def send_saml_logout_request( name_id=name_id, name_id_format=name_id_format, session_index=session_index, + issuer=issuer, ) return send_post_logout_request(provider, processor) @@ -89,6 +91,7 @@ def send_saml_logout_response( sls_url: str, logout_request_id: str | None = None, relay_state: str | None = None, + issuer: str | None = None, ): """Send SAML LogoutResponse to a Service Provider using backchannel (server-to-server)""" provider = SAMLProvider.objects.filter(pk=provider_pk).first() @@ -119,6 +122,7 @@ def send_saml_logout_response( logout_request=logout_request, destination=sls_url, relay_state=relay_state, + issuer=issuer, ) encoded_response = processor.encode_post() diff --git a/authentik/providers/saml/tests/test_api.py b/authentik/providers/saml/tests/test_api.py index a723f13fd1..22170b4636 100644 --- a/authentik/providers/saml/tests/test_api.py +++ b/authentik/providers/saml/tests/test_api.py @@ -157,7 +157,7 @@ class TestSAMLProviderAPI(APITestCase): response = self.client.get( reverse("authentik_api:samlprovider-metadata", kwargs={"pk": provider.pk}), ) - self.assertEqual(200, response.status_code) + self.assertEqual(404, response.status_code) response = self.client.get( reverse("authentik_api:samlprovider-metadata", kwargs={"pk": "abc"}), ) diff --git a/authentik/providers/saml/tests/test_auth_n_request.py b/authentik/providers/saml/tests/test_auth_n_request.py index 5cc19fd1bb..38152c729d 100644 --- a/authentik/providers/saml/tests/test_auth_n_request.py +++ b/authentik/providers/saml/tests/test_auth_n_request.py @@ -15,6 +15,7 @@ from authentik.common.saml.constants import ( SAML_NAME_ID_FORMAT_EMAIL, SAML_NAME_ID_FORMAT_UNSPECIFIED, ) +from authentik.core.models import Application from authentik.core.tests.utils import ( RequestFactory, create_test_admin_user, @@ -97,6 +98,11 @@ class TestAuthNRequest(TestCase): ) self.provider.property_mappings.set(SAMLPropertyMapping.objects.all()) self.provider.save() + Application.objects.create( + name="test-app", + slug="test-app", + provider=self.provider, + ) self.source = SAMLSource.objects.create( slug="provider", issuer="authentik", @@ -526,7 +532,7 @@ class TestAuthNRequest(TestCase): authorization_flow=create_test_flow(), acs_url="https://10.120.20.200/saml-sp/SAML2/POST", audience="https://10.120.20.200/saml-sp/SAML2/POST", - issuer="https://10.120.20.200/saml-sp/SAML2/POST", + issuer_override="https://10.120.20.200/saml-sp/SAML2/POST", signing_kp=static_keypair, verification_kp=static_keypair, ) @@ -547,7 +553,7 @@ class TestAuthNRequest(TestCase): "saml/acs/2d737f96-55fb-4035-953e-5e24134eb778" ), audience="https://10.120.20.200/saml-sp/SAML2/POST", - issuer="https://10.120.20.200/saml-sp/SAML2/POST", + issuer_override="https://10.120.20.200/saml-sp/SAML2/POST", signing_kp=create_test_cert(), ) parsed_request = AuthNRequestParser(provider).parse(POST_REQUEST) diff --git a/authentik/providers/saml/tests/test_idp_logout.py b/authentik/providers/saml/tests/test_idp_logout.py index 1f49843305..c9631899cd 100644 --- a/authentik/providers/saml/tests/test_idp_logout.py +++ b/authentik/providers/saml/tests/test_idp_logout.py @@ -5,6 +5,10 @@ from unittest.mock import Mock from django.test import RequestFactory, TestCase +from authentik.common.oauth.constants import ( + OAUTH2_BINDING, + PLAN_CONTEXT_OIDC_LOGOUT_IFRAME_SESSIONS, +) from authentik.common.saml.constants import ( RSA_SHA256, SAML_NAME_ID_FORMAT_EMAIL, @@ -17,6 +21,7 @@ from authentik.providers.iframe_logout import ( IframeLogoutChallenge, IframeLogoutStageView, ) +from authentik.providers.oauth2.models import OAuth2Provider from authentik.providers.saml.models import SAMLLogoutMethods, SAMLProvider from authentik.providers.saml.native_logout import ( NativeLogoutChallenge, @@ -42,7 +47,7 @@ class TestNativeLogoutStageView(TestCase): authorization_flow=self.flow, acs_url="https://sp1.example.com/acs", sls_url="https://sp1.example.com/sls", - issuer="https://idp.example.com", + issuer_override="https://idp.example.com", sp_binding="redirect", sls_binding="redirect", logout_method=SAMLLogoutMethods.FRONTCHANNEL_NATIVE, @@ -53,7 +58,7 @@ class TestNativeLogoutStageView(TestCase): authorization_flow=self.flow, acs_url="https://sp2.example.com/acs", sls_url="https://sp2.example.com/sls", - issuer="https://idp.example.com", + issuer_override="https://idp.example.com", sp_binding="post", sls_binding="post", logout_method=SAMLLogoutMethods.FRONTCHANNEL_NATIVE, @@ -213,7 +218,7 @@ class TestIframeLogoutStageView(TestCase): authorization_flow=self.flow, acs_url="https://sp1.example.com/acs", sls_url="https://sp1.example.com/sls", - issuer="https://idp.example.com", + issuer_override="https://idp.example.com", sp_binding="redirect", sls_binding="redirect", logout_method="frontchannel_iframe", @@ -224,7 +229,7 @@ class TestIframeLogoutStageView(TestCase): authorization_flow=self.flow, acs_url="https://sp2.example.com/acs", sls_url="https://sp2.example.com/sls", - issuer="https://idp.example.com", + issuer_override="https://idp.example.com", sp_binding="post", sls_binding="post", logout_method="frontchannel_iframe", @@ -295,14 +300,14 @@ class TestIframeLogoutStageView(TestCase): }, ] # OIDC sessions (pre-processed) - from authentik.common.oauth.constants import PLAN_CONTEXT_OIDC_LOGOUT_IFRAME_SESSIONS - plan.context[PLAN_CONTEXT_OIDC_LOGOUT_IFRAME_SESSIONS] = [ { "url": "https://oidc.example.com/logout?iss=authentik&sid=abc123", "provider_name": "oidc-provider", - "binding": "redirect", - "provider_type": "oidc", + "binding": OAUTH2_BINDING, + "provider_type": ( + f"{OAuth2Provider._meta.app_label}" f".{OAuth2Provider._meta.model_name}" + ), }, ] stage_view = IframeLogoutStageView( @@ -367,7 +372,7 @@ class TestIdPLogoutIntegration(FlowTestCase): authorization_flow=self.flow, acs_url="https://sp.example.com/acs", sls_url="https://sp.example.com/sls", - issuer="https://idp.example.com", + issuer_override="https://idp.example.com", sp_binding="redirect", sls_binding="redirect", signing_kp=self.keypair, diff --git a/authentik/providers/saml/tests/test_logout_processor_and_parser.py b/authentik/providers/saml/tests/test_logout_processor_and_parser.py index 954bb55179..4a35676fcc 100644 --- a/authentik/providers/saml/tests/test_logout_processor_and_parser.py +++ b/authentik/providers/saml/tests/test_logout_processor_and_parser.py @@ -28,7 +28,7 @@ class TestLogoutIntegration(TestCase): authorization_flow=self.flow, acs_url="https://sp.example.com/acs", sls_url="https://sp.example.com/sls", - issuer="https://idp.example.com", + issuer_override="https://idp.example.com", sp_binding="redirect", sls_binding="redirect", signature_algorithm=RSA_SHA256, @@ -57,7 +57,7 @@ class TestLogoutIntegration(TestCase): parsed = self.parser.parse(encoded) # Verify all fields match - self.assertEqual(parsed.issuer, self.provider.issuer) + self.assertEqual(parsed.issuer, self.provider.issuer_override) self.assertEqual(parsed.name_id, "test@example.com") self.assertEqual(parsed.name_id_format, SAML_NAME_ID_FORMAT_EMAIL) self.assertEqual(parsed.session_index, "test-session-123") @@ -72,7 +72,7 @@ class TestLogoutIntegration(TestCase): parsed = self.parser.parse_detached(encoded) # Verify all fields match - self.assertEqual(parsed.issuer, self.provider.issuer) + self.assertEqual(parsed.issuer, self.provider.issuer_override) self.assertEqual(parsed.name_id, "test@example.com") self.assertEqual(parsed.name_id_format, SAML_NAME_ID_FORMAT_EMAIL) self.assertEqual(parsed.session_index, "test-session-123") @@ -106,7 +106,7 @@ class TestLogoutIntegration(TestCase): parsed = parser.parse(encoded) # Verify all fields match - self.assertEqual(parsed.issuer, self.provider.issuer) + self.assertEqual(parsed.issuer, self.provider.issuer_override) self.assertEqual(parsed.name_id, "signed@example.com") self.assertEqual(parsed.name_id_format, SAML_NAME_ID_FORMAT_EMAIL) self.assertEqual(parsed.session_index, "signed-session-456") @@ -125,7 +125,7 @@ class TestLogoutIntegration(TestCase): parsed = self.parser.parse_detached(saml_request) # Verify parsing succeeded - self.assertEqual(parsed.issuer, self.provider.issuer) + self.assertEqual(parsed.issuer, self.provider.issuer_override) self.assertEqual(parsed.name_id, "test@example.com") self.assertEqual(parsed.name_id_format, SAML_NAME_ID_FORMAT_EMAIL) @@ -164,7 +164,7 @@ class TestLogoutIntegration(TestCase): # Parse the SAMLRequest (unsigned XML) parsed = self.parser.parse_detached(params["SAMLRequest"][0]) - self.assertEqual(parsed.issuer, self.provider.issuer) + self.assertEqual(parsed.issuer, self.provider.issuer_override) def test_form_data_can_be_parsed(self): """Test that form data generates parseable POST request""" @@ -175,7 +175,7 @@ class TestLogoutIntegration(TestCase): parsed = self.parser.parse(form_data["SAMLRequest"]) # Verify parsing succeeded - self.assertEqual(parsed.issuer, self.provider.issuer) + self.assertEqual(parsed.issuer, self.provider.issuer_override) self.assertEqual(parsed.name_id, "test@example.com") self.assertEqual(parsed.name_id_format, SAML_NAME_ID_FORMAT_EMAIL) self.assertEqual(parsed.session_index, "test-session-123") @@ -244,4 +244,4 @@ class TestLogoutIntegration(TestCase): # But same issuer self.assertEqual(parsed1.issuer, parsed2.issuer) - self.assertEqual(parsed1.issuer, self.provider.issuer) + self.assertEqual(parsed1.issuer, self.provider.issuer_override) diff --git a/authentik/providers/saml/tests/test_logout_request_processor.py b/authentik/providers/saml/tests/test_logout_request_processor.py index c73e53402b..f47483e2c0 100644 --- a/authentik/providers/saml/tests/test_logout_request_processor.py +++ b/authentik/providers/saml/tests/test_logout_request_processor.py @@ -35,7 +35,7 @@ class TestLogoutRequestProcessor(TestCase): authorization_flow=self.flow, acs_url="https://sp.example.com/acs", sls_url="https://sp.example.com/sls", - issuer="https://idp.example.com", + issuer_override="https://idp.example.com", sp_binding="redirect", sls_binding="redirect", signature_algorithm=RSA_SHA256, diff --git a/authentik/providers/saml/tests/test_logout_response_processor.py b/authentik/providers/saml/tests/test_logout_response_processor.py index 0503020423..88efd8086e 100644 --- a/authentik/providers/saml/tests/test_logout_response_processor.py +++ b/authentik/providers/saml/tests/test_logout_response_processor.py @@ -1,7 +1,7 @@ """logout response tests""" from defusedxml import ElementTree -from django.test import TestCase +from django.test import RequestFactory, TestCase from authentik.blueprints.tests import apply_blueprint from authentik.common.saml.constants import ( @@ -9,10 +9,13 @@ from authentik.common.saml.constants import ( NS_SAML_PROTOCOL, NS_SIGNATURE, ) +from authentik.core.models import Application from authentik.core.tests.utils import create_test_cert, create_test_flow +from authentik.lib.generators import generate_id from authentik.providers.saml.models import SAMLPropertyMapping, SAMLProvider from authentik.providers.saml.processors.logout_request_parser import LogoutRequest from authentik.providers.saml.processors.logout_response_processor import LogoutResponseProcessor +from authentik.providers.saml.processors.metadata import MetadataProcessor class TestLogoutResponse(TestCase): @@ -21,6 +24,7 @@ class TestLogoutResponse(TestCase): @apply_blueprint("system/providers-saml.yaml") def setUp(self): cert = create_test_cert() + self.factory = RequestFactory() self.provider: SAMLProvider = SAMLProvider.objects.create( authorization_flow=create_test_flow(), acs_url="http://testserver/source/saml/provider/acs/", @@ -30,17 +34,31 @@ class TestLogoutResponse(TestCase): ) self.provider.property_mappings.set(SAMLPropertyMapping.objects.all()) self.provider.save() + self.application = Application.objects.create( + name=generate_id(), + slug=generate_id(), + provider=self.provider, + ) def test_build_response(self): - """Test building a LogoutResponse""" + """Test building a LogoutResponse uses the generated issuer from the assertion""" + # Generate the issuer the same way the assertion/metadata processors would + request = self.factory.get("/") + metadata_processor = MetadataProcessor(self.provider, request) + generated_issuer = metadata_processor._get_issuer_value() + logout_request = LogoutRequest( id="test-request-id", issuer="test-sp", relay_state="test-relay-state", ) + # Pass the generated issuer as if it came from SAMLSession.issuer processor = LogoutResponseProcessor( - self.provider, logout_request, destination=self.provider.sls_url + self.provider, + logout_request, + destination=self.provider.sls_url, + issuer=generated_issuer, ) response_xml = processor.build_response(status="Success") @@ -51,9 +69,9 @@ class TestLogoutResponse(TestCase): self.assertEqual(root.attrib["Destination"], self.provider.sls_url) self.assertEqual(root.attrib["InResponseTo"], "test-request-id") - # Check Issuer + # Check Issuer matches the generated issuer from the assertion processor issuer = root.find(f"{{{NS_SAML_ASSERTION}}}Issuer") - self.assertEqual(issuer.text, self.provider.issuer) + self.assertEqual(issuer.text, generated_issuer) # Check Status status = root.find(f".//{{{NS_SAML_PROTOCOL}}}StatusCode") diff --git a/authentik/providers/saml/tests/test_metadata.py b/authentik/providers/saml/tests/test_metadata.py index ab70f7f09a..7f66a9d7b8 100644 --- a/authentik/providers/saml/tests/test_metadata.py +++ b/authentik/providers/saml/tests/test_metadata.py @@ -85,7 +85,6 @@ class TestServiceProviderMetadataParser(TestCase): metadata = ServiceProviderMetadataParser().parse(load_fixture("fixtures/simple.xml")) provider = metadata.to_provider("test", self.flow, self.flow) self.assertEqual(provider.acs_url, "http://localhost:8080/saml/acs") - self.assertEqual(provider.issuer, "http://localhost:8080/saml/metadata") self.assertEqual(provider.sp_binding, SAMLBindings.POST) self.assertEqual(provider.default_name_id_policy, SAMLNameIDPolicy.EMAIL) self.assertEqual( @@ -99,7 +98,6 @@ class TestServiceProviderMetadataParser(TestCase): metadata = ServiceProviderMetadataParser().parse(load_fixture("fixtures/cert.xml")) provider = metadata.to_provider("test", self.flow, self.flow) self.assertEqual(provider.acs_url, "http://localhost:8080/apps/user_saml/saml/acs") - self.assertEqual(provider.issuer, "http://localhost:8080/apps/user_saml/saml/metadata") self.assertEqual(provider.sp_binding, SAMLBindings.POST) self.assertEqual( provider.verification_kp.certificate_data, load_fixture("fixtures/cert.pem") diff --git a/authentik/providers/saml/tests/test_models_session.py b/authentik/providers/saml/tests/test_models_session.py index be53d87575..53a859bff9 100644 --- a/authentik/providers/saml/tests/test_models_session.py +++ b/authentik/providers/saml/tests/test_models_session.py @@ -32,7 +32,7 @@ class TestSAMLSessionModel(TestCase): name="test-provider", authorization_flow=self.flow, acs_url="https://sp.example.com/acs", - issuer="https://idp.example.com", + issuer_override="https://idp.example.com", ) # Create another provider for testing @@ -40,7 +40,7 @@ class TestSAMLSessionModel(TestCase): name="test-provider-2", authorization_flow=self.flow, acs_url="https://sp2.example.com/acs", - issuer="https://idp2.example.com", + issuer_override="https://idp2.example.com", ) # Create a session first (using authentik's custom Session model) @@ -72,6 +72,7 @@ class TestSAMLSessionModel(TestCase): name_id_format=self.name_id_format, expires=self.expires, expiring=True, + issuer="authentik", ) # Verify the session was created @@ -100,6 +101,7 @@ class TestSAMLSessionModel(TestCase): name_id_format=self.name_id_format, expires=self.expires, expiring=True, + issuer="authentik", ) # Try to create another session with same session_index and provider @@ -113,6 +115,7 @@ class TestSAMLSessionModel(TestCase): name_id_format=self.name_id_format, expires=self.expires, expiring=True, + issuer="authentik", ) def test_cascade_deletion_user(self): @@ -127,6 +130,7 @@ class TestSAMLSessionModel(TestCase): name_id_format=self.name_id_format, expires=self.expires, expiring=True, + issuer="authentik", ) # Verify session exists @@ -150,6 +154,7 @@ class TestSAMLSessionModel(TestCase): name_id_format=self.name_id_format, expires=self.expires, expiring=True, + issuer="authentik", ) # Verify session exists @@ -173,6 +178,7 @@ class TestSAMLSessionModel(TestCase): name_id_format=self.name_id_format, expires=self.expires, expiring=True, + issuer="authentik", ) # Verify session exists @@ -196,6 +202,7 @@ class TestSAMLSessionModel(TestCase): name_id_format=self.name_id_format, expires=self.expires, expiring=True, + issuer="authentik", ) # Create second session with different provider @@ -208,6 +215,7 @@ class TestSAMLSessionModel(TestCase): name_id_format=self.name_id_format, expires=self.expires, expiring=True, + issuer="authentik", ) # Verify both sessions exist @@ -229,6 +237,7 @@ class TestSAMLSessionModel(TestCase): name_id_format=self.name_id_format, expires=future_time, expiring=True, + issuer="authentik", ) # Verify expiry time @@ -248,6 +257,7 @@ class TestSAMLSessionModel(TestCase): name_id_format=self.name_id_format, expires=past_time, expiring=True, + issuer="authentik", ) # Check if marked as expired @@ -265,6 +275,7 @@ class TestSAMLSessionModel(TestCase): name_id_format="", # Blank format expires=self.expires, expiring=True, + issuer="authentik", ) # Verify it was created successfully @@ -283,6 +294,7 @@ class TestSAMLSessionModel(TestCase): name_id_format=self.name_id_format, expires=self.expires, expiring=True, + issuer="authentik", ) session2 = SAMLSession.objects.create( @@ -294,6 +306,7 @@ class TestSAMLSessionModel(TestCase): name_id_format=self.name_id_format, expires=self.expires, expiring=True, + issuer="authentik", ) # Query by provider @@ -316,6 +329,7 @@ class TestSAMLSessionModel(TestCase): name_id_format=self.name_id_format, expires=self.expires, expiring=True, + issuer="authentik", ) # Check serializer property @@ -334,6 +348,7 @@ class TestSAMLSessionModel(TestCase): name_id_format=self.name_id_format, expires=self.expires, expiring=True, + issuer="authentik", ) # Verify sessions exist diff --git a/authentik/providers/saml/tests/test_schema.py b/authentik/providers/saml/tests/test_schema.py index 0d4ca5b2f1..01c3a9b1dc 100644 --- a/authentik/providers/saml/tests/test_schema.py +++ b/authentik/providers/saml/tests/test_schema.py @@ -7,6 +7,7 @@ from guardian.shortcuts import get_anonymous_user from lxml import etree # nosec from authentik.blueprints.tests import apply_blueprint +from authentik.core.models import Application from authentik.core.tests.utils import RequestFactory, create_test_cert, create_test_flow from authentik.lib.xml import lxml_from_string from authentik.providers.saml.models import SAMLPropertyMapping, SAMLProvider @@ -30,6 +31,11 @@ class TestSchema(TestCase): ) self.provider.property_mappings.set(SAMLPropertyMapping.objects.all()) self.provider.save() + Application.objects.create( + name="test-app", + slug="test-app", + provider=self.provider, + ) self.source = SAMLSource.objects.create( slug="provider", issuer="authentik", diff --git a/authentik/providers/saml/tests/test_tasks.py b/authentik/providers/saml/tests/test_tasks.py index 0201cec56d..a0e77a10f9 100644 --- a/authentik/providers/saml/tests/test_tasks.py +++ b/authentik/providers/saml/tests/test_tasks.py @@ -28,7 +28,7 @@ class TestSendSamlLogoutResponse(TestCase): authorization_flow=self.flow, acs_url="https://sp.example.com/acs", sls_url="https://sp.example.com/sls", - issuer="https://idp.example.com", + issuer_override="https://idp.example.com", signing_kp=self.cert, ) @@ -137,7 +137,7 @@ class TestSendSamlLogoutRequest(TestCase): authorization_flow=self.flow, acs_url="https://sp.example.com/acs", sls_url="https://sp.example.com/sls", - issuer="https://idp.example.com", + issuer_override="https://idp.example.com", signing_kp=self.cert, ) @@ -155,6 +155,7 @@ class TestSendSamlLogoutRequest(TestCase): name_id="test@example.com", name_id_format=SAML_NAME_ID_FORMAT_EMAIL, session_index="test-session-123", + issuer="https://idp.example.com", ) self.assertTrue(result) @@ -179,6 +180,7 @@ class TestSendSamlLogoutRequest(TestCase): name_id="test@example.com", name_id_format=SAML_NAME_ID_FORMAT_EMAIL, session_index="test-session-123", + issuer="https://idp.example.com", ) self.assertFalse(result) @@ -198,6 +200,7 @@ class TestSendSamlLogoutRequest(TestCase): name_id="test@example.com", name_id_format=SAML_NAME_ID_FORMAT_EMAIL, session_index="test-session-123", + issuer="https://idp.example.com", ) @@ -214,7 +217,7 @@ class TestSendPostLogoutRequest(TestCase): authorization_flow=self.flow, acs_url="https://sp.example.com/acs", sls_url="https://sp.example.com/sls", - issuer="https://idp.example.com", + issuer_override="https://idp.example.com", signing_kp=self.cert, ) diff --git a/authentik/providers/saml/tests/test_views_sp_slo.py b/authentik/providers/saml/tests/test_views_sp_slo.py index c24e61f9f0..c2baef5d8b 100644 --- a/authentik/providers/saml/tests/test_views_sp_slo.py +++ b/authentik/providers/saml/tests/test_views_sp_slo.py @@ -40,7 +40,7 @@ class TestSPInitiatedSLOViews(TestCase): invalidation_flow=self.invalidation_flow, acs_url="https://sp.example.com/acs", sls_url="https://sp.example.com/sls", - issuer="https://idp.example.com", + issuer_override="https://idp.example.com", sp_binding="redirect", sls_binding="redirect", ) @@ -90,35 +90,36 @@ class TestSPInitiatedSLOViews(TestCase): # Verify logout request was stored in plan context self.assertIn("authentik/providers/saml/logout_request", view.plan_context) logout_request = view.plan_context["authentik/providers/saml/logout_request"] - self.assertEqual(logout_request.issuer, self.provider.issuer) + self.assertEqual(logout_request.issuer, self.provider.issuer_override) self.assertEqual(logout_request.session_index, "test-session-123") - def test_redirect_view_handles_logout_response_with_relay_state(self): - """Test that redirect view handles logout response with RelayState""" - # Use raw URL (no encoding needed) - relay_state = "https://idp.example.com/flow/return" + def test_redirect_view_handles_logout_response_with_plan_context(self): + """Test that redirect view always redirects to plan context URL, ignoring RelayState""" + plan_relay_state = "https://idp.example.com/flow/return" # Create request with SAML logout response request = self.factory.get( f"/slo/redirect/{self.application.slug}/", { "SAMLResponse": "dummy-response", - "RelayState": relay_state, + "RelayState": "https://somewhere-else.example.com/return", }, ) - request.session = {} + plan = FlowPlan(flow_pk="test-flow") + plan.context[PLAN_CONTEXT_SAML_RELAY_STATE] = plan_relay_state + request.session = {SESSION_KEY_PLAN: plan} request.brand = self.brand view = SPInitiatedSLOBindingRedirectView() view.setup(request, application_slug=self.application.slug) response = view.dispatch(request, application_slug=self.application.slug) - # Should redirect to relay state URL + # Should redirect to plan context URL, not the request's RelayState self.assertEqual(response.status_code, 302) - self.assertEqual(response.url, relay_state) + self.assertEqual(response.url, plan_relay_state) - def test_redirect_view_handles_logout_response_plain_relay_state(self): - """Test that redirect view handles logout response with plain RelayState""" + def test_redirect_view_ignores_relay_state_without_plan(self): + """Test that redirect view ignores RelayState and falls back to root when no plan context""" relay_state = "https://sp.example.com/plain" # Create request with SAML logout response @@ -136,9 +137,9 @@ class TestSPInitiatedSLOViews(TestCase): view.setup(request, application_slug=self.application.slug) response = view.dispatch(request, application_slug=self.application.slug) - # Should redirect to plain relay state + # Should ignore relay_state and redirect to root (no plan context) self.assertEqual(response.status_code, 302) - self.assertEqual(response.url, relay_state) + self.assertEqual(response.url, reverse("authentik_core:root-redirect")) def test_redirect_view_handles_logout_response_no_relay_state_with_plan_context(self): """Test that redirect view uses plan context fallback when no RelayState""" @@ -227,32 +228,33 @@ class TestSPInitiatedSLOViews(TestCase): # Verify logout request was stored in plan context self.assertIn("authentik/providers/saml/logout_request", view.plan_context) logout_request = view.plan_context["authentik/providers/saml/logout_request"] - self.assertEqual(logout_request.issuer, self.provider.issuer) + self.assertEqual(logout_request.issuer, self.provider.issuer_override) self.assertEqual(logout_request.session_index, "test-session-123") - def test_post_view_handles_logout_response_with_relay_state(self): - """Test that POST view handles logout response with RelayState""" - # Use raw URL (no encoding needed) - relay_state = "https://idp.example.com/flow/return" + def test_post_view_handles_logout_response_with_plan_context(self): + """Test that POST view always redirects to plan context URL, ignoring RelayState""" + plan_relay_state = "https://idp.example.com/flow/return" # Create POST request with SAML logout response request = self.factory.post( f"/slo/post/{self.application.slug}/", { "SAMLResponse": "dummy-response", - "RelayState": relay_state, + "RelayState": "https://somewhere-else.example.com/return", }, ) - request.session = {} + plan = FlowPlan(flow_pk="test-flow") + plan.context[PLAN_CONTEXT_SAML_RELAY_STATE] = plan_relay_state + request.session = {SESSION_KEY_PLAN: plan} request.brand = self.brand view = SPInitiatedSLOBindingPOSTView() view.setup(request, application_slug=self.application.slug) response = view.dispatch(request, application_slug=self.application.slug) - # Should redirect to relay state URL + # Should redirect to plan context URL, not the request's RelayState self.assertEqual(response.status_code, 302) - self.assertEqual(response.url, relay_state) + self.assertEqual(response.url, plan_relay_state) def test_post_view_handles_logout_response_no_relay_state_with_plan_context(self): """Test that POST view uses plan context fallback when no RelayState""" @@ -394,7 +396,7 @@ class TestSPInitiatedSLOViews(TestCase): authorization_flow=self.flow, acs_url="https://sp2.example.com/acs", sls_url="https://sp2.example.com/sls", - issuer="https://idp2.example.com", + issuer_override="https://idp2.example.com", invalidation_flow=None, # No invalidation flow ) @@ -419,7 +421,7 @@ class TestSPInitiatedSLOViews(TestCase): view.resolve_provider_application() def test_relay_state_decoding_failure(self): - """Test handling of RelayState that's a path""" + """Test that arbitrary path RelayState is ignored and redirects to root""" # Create request with relay state that is a path request = self.factory.get( f"/slo/redirect/{self.application.slug}/", @@ -435,9 +437,73 @@ class TestSPInitiatedSLOViews(TestCase): view.setup(request, application_slug=self.application.slug) response = view.dispatch(request, application_slug=self.application.slug) - # Should treat it as plain URL and redirect to it + # Should ignore relay_state and redirect to root (no plan context) self.assertEqual(response.status_code, 302) - self.assertEqual(response.url, "/some/invalid/path") + self.assertEqual(response.url, reverse("authentik_core:root-redirect")) + + def test_redirect_view_blocks_external_relay_state(self): + """Test that redirect view ignores external malicious URL and redirects to root""" + request = self.factory.get( + f"/slo/redirect/{self.application.slug}/", + { + "SAMLResponse": "dummy-response", + "RelayState": "https://evil.com/phishing", + }, + ) + request.session = {} + request.brand = self.brand + + view = SPInitiatedSLOBindingRedirectView() + view.setup(request, application_slug=self.application.slug) + response = view.dispatch(request, application_slug=self.application.slug) + + # Should ignore relay_state and redirect to root (no plan context) + self.assertEqual(response.status_code, 302) + self.assertEqual(response.url, reverse("authentik_core:root-redirect")) + + def test_redirect_view_ignores_relay_state_uses_plan_context(self): + """Test that redirect view always uses plan context URL regardless of RelayState""" + plan_relay_state = "https://authentik.example.com/if/flow/logout/" + + request = self.factory.get( + f"/slo/redirect/{self.application.slug}/", + { + "SAMLResponse": "dummy-response", + "RelayState": "https://evil.com/phishing", + }, + ) + plan = FlowPlan(flow_pk="test-flow") + plan.context[PLAN_CONTEXT_SAML_RELAY_STATE] = plan_relay_state + request.session = {SESSION_KEY_PLAN: plan} + request.brand = self.brand + + view = SPInitiatedSLOBindingRedirectView() + view.setup(request, application_slug=self.application.slug) + response = view.dispatch(request, application_slug=self.application.slug) + + # Should always use plan context value, ignoring malicious RelayState + self.assertEqual(response.status_code, 302) + self.assertEqual(response.url, plan_relay_state) + + def test_post_view_ignores_external_relay_state(self): + """Test that POST view ignores external RelayState and redirects to root""" + request = self.factory.post( + f"/slo/post/{self.application.slug}/", + { + "SAMLResponse": "dummy-response", + "RelayState": "https://evil.com/phishing", + }, + ) + request.session = {} + request.brand = self.brand + + view = SPInitiatedSLOBindingPOSTView() + view.setup(request, application_slug=self.application.slug) + response = view.dispatch(request, application_slug=self.application.slug) + + # Should ignore relay_state and redirect to root (no plan context) + self.assertEqual(response.status_code, 302) + self.assertEqual(response.url, reverse("authentik_core:root-redirect")) class TestSPInitiatedSLOLogoutMethods(TestCase): @@ -458,7 +524,7 @@ class TestSPInitiatedSLOLogoutMethods(TestCase): invalidation_flow=self.invalidation_flow, acs_url="https://sp.example.com/acs", sls_url="https://sp.example.com/sls", - issuer="https://idp.example.com", + issuer_override="https://idp.example.com", sp_binding="redirect", sls_binding="redirect", signing_kp=self.cert, @@ -648,7 +714,7 @@ class TestSPInitiatedSLOLogoutMethods(TestCase): invalidation_flow=self.invalidation_flow, acs_url="https://sp.example.com/acs", sls_url="", # No SLS URL - issuer="https://idp.example.com", + issuer_override="https://idp.example.com", ) app_no_sls = Application.objects.create( diff --git a/authentik/providers/saml/urls.py b/authentik/providers/saml/urls.py index cf02bd9c48..e92c89d87e 100644 --- a/authentik/providers/saml/urls.py +++ b/authentik/providers/saml/urls.py @@ -4,13 +4,26 @@ from django.urls import path from authentik.providers.saml.api.property_mappings import SAMLPropertyMappingViewSet from authentik.providers.saml.api.providers import SAMLProviderViewSet -from authentik.providers.saml.views import metadata, sso +from authentik.providers.saml.views import metadata, sso, unified from authentik.providers.saml.views.sp_slo import ( SPInitiatedSLOBindingPOSTView, SPInitiatedSLOBindingRedirectView, ) urlpatterns = [ + # Unified Endpoint - handles SSO and SLO based on message type + path( + "/", + unified.SAMLUnifiedView.as_view(), + name="base", + ), + # IdP-initiated + path( + "/init/", + sso.SAMLSSOBindingInitView.as_view(), + name="init", + ), + # LEGACY Endpoints (backward compatibility) # SSO Bindings path( "/sso/binding/redirect/", diff --git a/authentik/providers/saml/views/flows.py b/authentik/providers/saml/views/flows.py index 494f443aa5..aaaf873c21 100644 --- a/authentik/providers/saml/views/flows.py +++ b/authentik/providers/saml/views/flows.py @@ -1,7 +1,5 @@ """authentik SAML IDP Views""" -from datetime import datetime, timedelta - from django.core.validators import URLValidator from django.http import HttpRequest, HttpResponse from django.http.response import HttpResponseBadRequest @@ -83,6 +81,7 @@ class SAMLFlowFinalView(ChallengeStageView): "session": auth_session, "name_id": processor.name_id, "name_id_format": processor.name_id_format, + "issuer": processor.issuer, "expires": processor.session_not_on_or_after_datetime, "expiring": True, }, @@ -122,20 +121,14 @@ class SAMLFlowFinalView(ChallengeStageView): }, ) if provider.sp_binding == SAMLBindings.REDIRECT: - if not Event.filter_not_expired( - action=EventAction.CONFIGURATION_WARNING, - context__deprecation=DEPRECATION_SP_BINDING_REDIRECT, - ).exists(): - event = Event.new( - EventAction.CONFIGURATION_WARNING, - deprecation=DEPRECATION_SP_BINDING_REDIRECT, - message=( - "Redirect binding for Service Provider binding is deprecated " - "and will be removed in a future version. Use Post binding instead." - ), - ) - event.expires = datetime.now() + timedelta(days=30) - event.save() + Event.log_deprecation( + DEPRECATION_SP_BINDING_REDIRECT, + ( + "Redirect binding for Service Provider binding is deprecated " + "and will be removed in a future version. Use Post binding instead." + ), + cause=provider, + ) url_args = { REQUEST_KEY_SAML_RESPONSE: deflate_and_base64_encode(response), } diff --git a/authentik/providers/saml/views/sp_slo.py b/authentik/providers/saml/views/sp_slo.py index 9c232c4100..fe49f68404 100644 --- a/authentik/providers/saml/views/sp_slo.py +++ b/authentik/providers/saml/views/sp_slo.py @@ -41,6 +41,24 @@ from authentik.providers.saml.views.flows import ( LOGGER = get_logger() +def _get_redirect_url(request: HttpRequest, relay_state: str = "") -> str: + """Get the safe redirect URL from the plan context, logging a warning if the + incoming relay_state doesn't match the stored value.""" + stored_relay_state = "" + if SESSION_KEY_PLAN in request.session: + plan: FlowPlan = request.session[SESSION_KEY_PLAN] + stored_relay_state = plan.context.get(PLAN_CONTEXT_SAML_RELAY_STATE, "") + + if relay_state and relay_state != stored_relay_state: + LOGGER.warning( + "SAML logout relay_state mismatch, possible open redirect attempt", + received_relay_state=relay_state, + stored_relay_state=stored_relay_state, + ) + + return stored_relay_state + + class SPInitiatedSLOView(PolicyAccessView): """Handle SP-initiated SAML Single Logout requests""" @@ -89,12 +107,25 @@ class SPInitiatedSLOView(PolicyAccessView): # Store relay state for the logout response plan.context[PLAN_CONTEXT_SAML_RELAY_STATE] = relay_state + # Look up the session issuer to use in the logout response + auth_session = AuthenticatedSession.from_request(request, request.user) + session_issuer = None + if auth_session: + saml_session = SAMLSession.objects.filter( + session=auth_session, + user=request.user, + provider=self.provider, + ).first() + if saml_session: + session_issuer = saml_session.issuer + if self.provider.logout_method == SAMLLogoutMethods.FRONTCHANNEL_NATIVE: # Native mode - user will be redirected/posted away from authentik processor = LogoutResponseProcessor( self.provider, logout_request, destination=self.provider.sls_url, + issuer=session_issuer, ) if self.provider.sls_binding == SAMLBindings.POST: @@ -134,6 +165,7 @@ class SPInitiatedSLOView(PolicyAccessView): sls_url=self.provider.sls_url, logout_request_id=logout_request.id if logout_request else None, relay_state=relay_state, + issuer=session_issuer, ) LOGGER.debug( @@ -150,6 +182,7 @@ class SPInitiatedSLOView(PolicyAccessView): self.provider, logout_request, destination=self.provider.sls_url, + issuer=session_issuer, ) logout_response = processor.build_response() @@ -203,17 +236,9 @@ class SPInitiatedSLOBindingRedirectView(SPInitiatedSLOView): # IDP SLO, so we want to redirect to our next provider if REQUEST_KEY_SAML_RESPONSE in request.GET: relay_state = request.GET.get(REQUEST_KEY_RELAY_STATE, "") - if relay_state: - return redirect(relay_state) - - # No RelayState provided, try to get return URL from plan context - if SESSION_KEY_PLAN in request.session: - plan: FlowPlan = request.session[SESSION_KEY_PLAN] - relay_state = plan.context.get(PLAN_CONTEXT_SAML_RELAY_STATE) - if relay_state: - return redirect(relay_state) - - # No relay state and no plan context - redirect to root + redirect_url = _get_redirect_url(request, relay_state) + if redirect_url: + return redirect(redirect_url) return redirect("authentik_core:root-redirect") # For SAML logout requests, use the parent dispatch with auth checks @@ -254,17 +279,9 @@ class SPInitiatedSLOBindingPOSTView(SPInitiatedSLOView): # IDP SLO, so we want to redirect to our next provider if REQUEST_KEY_SAML_RESPONSE in request.POST: relay_state = request.POST.get(REQUEST_KEY_RELAY_STATE, "") - if relay_state: - return redirect(relay_state) - - # No RelayState provided, try to get return URL from plan context - if SESSION_KEY_PLAN in request.session: - plan: FlowPlan = request.session[SESSION_KEY_PLAN] - relay_state = plan.context.get(PLAN_CONTEXT_SAML_RELAY_STATE) - if relay_state: - return redirect(relay_state) - - # No relay state and no plan context - redirect to root + redirect_url = _get_redirect_url(request, relay_state) + if redirect_url: + return redirect(redirect_url) return redirect("authentik_core:root-redirect") # For SAML logout requests, use the parent dispatch with auth checks diff --git a/authentik/providers/saml/views/unified.py b/authentik/providers/saml/views/unified.py new file mode 100644 index 0000000000..056df08ae3 --- /dev/null +++ b/authentik/providers/saml/views/unified.py @@ -0,0 +1,118 @@ +"""Unified SAML endpoint - handles SSO and SLO based on message type""" + +from base64 import b64decode + +from defusedxml.lxml import fromstring +from django.http import HttpRequest, HttpResponse +from django.utils.decorators import method_decorator +from django.views import View +from django.views.decorators.clickjacking import xframe_options_sameorigin +from django.views.decorators.csrf import csrf_exempt +from structlog.stdlib import get_logger + +from authentik.common.saml.constants import NS_MAP +from authentik.flows.views.executor import SESSION_KEY_POST +from authentik.lib.views import bad_request_message +from authentik.providers.saml.utils.encoding import decode_base64_and_inflate +from authentik.providers.saml.views.flows import ( + REQUEST_KEY_SAML_REQUEST, + REQUEST_KEY_SAML_RESPONSE, +) +from authentik.providers.saml.views.sp_slo import ( + SPInitiatedSLOBindingPOSTView, + SPInitiatedSLOBindingRedirectView, +) +from authentik.providers.saml.views.sso import ( + SAMLSSOBindingPOSTView, + SAMLSSOBindingRedirectView, +) + +LOGGER = get_logger() + +# SAML message type constants +SAML_MESSAGE_TYPE_AUTHN_REQUEST = "AuthnRequest" +SAML_MESSAGE_TYPE_LOGOUT_REQUEST = "LogoutRequest" + + +def detect_saml_message_type(saml_request: str, is_post_binding: bool) -> str | None: + """Parse SAML request to determine if AuthnRequest or LogoutRequest.""" + try: + if is_post_binding: + decoded_xml = b64decode(saml_request.encode()) + else: + decoded_xml = decode_base64_and_inflate(saml_request) + + root = fromstring(decoded_xml) + if len(root.xpath("//samlp:AuthnRequest", namespaces=NS_MAP)): + return SAML_MESSAGE_TYPE_AUTHN_REQUEST + if len(root.xpath("//samlp:LogoutRequest", namespaces=NS_MAP)): + return SAML_MESSAGE_TYPE_LOGOUT_REQUEST + return None + except Exception: # noqa: BLE001 + return None + + +@method_decorator(xframe_options_sameorigin, name="dispatch") +@method_decorator(csrf_exempt, name="dispatch") +class SAMLUnifiedView(View): + """Unified SAML endpoint - handles SSO and SLO based on message type. + + The operation type is determined by parsing + the incoming SAML message: + - AuthnRequest -> SSO flow (delegates to SAMLSSOBindingRedirectView/POSTView) + - LogoutRequest -> SLO flow (delegates to SPInitiatedSLOBindingRedirectView/POSTView) + - LogoutResponse -> SLO completion (delegates to SPInitiatedSLOBindingRedirectView/POSTView) + """ + + def dispatch(self, request: HttpRequest, application_slug: str) -> HttpResponse: + """Route the request based on SAML message type.""" + # ak user was not logged in, redirected to login, and is back w POST payload in session + if SESSION_KEY_POST in request.session: + return self._delegate_to_sso(request, application_slug, is_post_binding=True) + + # Determine binding from HTTP method + is_post_binding = request.method == "POST" + data = request.POST if is_post_binding else request.GET + + # LogoutResponse - delegate to SLO view (handles it in dispatch) + if REQUEST_KEY_SAML_RESPONSE in data: + return self._delegate_to_slo(request, application_slug, is_post_binding) + + # Check for SAML request + if REQUEST_KEY_SAML_REQUEST not in data: + LOGGER.info("SAML payload missing") + return bad_request_message(request, "The SAML request payload is missing.") + + # Detect message type and delegate + saml_request = data[REQUEST_KEY_SAML_REQUEST] + message_type = detect_saml_message_type(saml_request, is_post_binding) + + if message_type == SAML_MESSAGE_TYPE_AUTHN_REQUEST: + return self._delegate_to_sso(request, application_slug, is_post_binding) + elif message_type == SAML_MESSAGE_TYPE_LOGOUT_REQUEST: + return self._delegate_to_slo(request, application_slug, is_post_binding) + else: + LOGGER.warning("Unknown SAML message type", message_type=message_type) + return bad_request_message( + request, f"Unsupported SAML message type: {message_type or 'unknown'}" + ) + + def _delegate_to_sso( + self, request: HttpRequest, application_slug: str, is_post_binding: bool + ) -> HttpResponse: + """Delegate to the appropriate SSO view.""" + if is_post_binding: + view = SAMLSSOBindingPOSTView.as_view() + else: + view = SAMLSSOBindingRedirectView.as_view() + return view(request, application_slug=application_slug) + + def _delegate_to_slo( + self, request: HttpRequest, application_slug: str, is_post_binding: bool + ) -> HttpResponse: + """Delegate to the appropriate SLO view.""" + if is_post_binding: + view = SPInitiatedSLOBindingPOSTView.as_view() + else: + view = SPInitiatedSLOBindingRedirectView.as_view() + return view(request, application_slug=application_slug) diff --git a/authentik/providers/scim/api/providers.py b/authentik/providers/scim/api/providers.py index a931836b7b..f4120d363c 100644 --- a/authentik/providers/scim/api/providers.py +++ b/authentik/providers/scim/api/providers.py @@ -1,5 +1,6 @@ """SCIM Provider API Views""" +from rest_framework.fields import SerializerMethodField from rest_framework.viewsets import ModelViewSet from authentik.core.api.providers import ProviderSerializer @@ -16,6 +17,11 @@ class SCIMProviderSerializer( ): """SCIMProvider Serializer""" + auth_oauth_token_last_updated = SerializerMethodField() + auth_oauth_token_expires = SerializerMethodField() + auth_oauth_url_callback = SerializerMethodField() + auth_oauth_url_start = SerializerMethodField() + class Meta: model = SCIMProvider fields = [ @@ -35,6 +41,10 @@ class SCIMProviderSerializer( "auth_mode", "auth_oauth", "auth_oauth_params", + "auth_oauth_token_last_updated", + "auth_oauth_token_expires", + "auth_oauth_url_callback", + "auth_oauth_url_start", "compatibility_mode", "service_provider_config_cache_timeout", "exclude_users_service_account", diff --git a/authentik/providers/scim/clients/base.py b/authentik/providers/scim/clients/base.py index 89b17e356f..4192906462 100644 --- a/authentik/providers/scim/clients/base.py +++ b/authentik/providers/scim/clients/base.py @@ -97,6 +97,9 @@ class SCIMClient[TModel: "Model", TConnection: "Model", TSchema: "BaseModel"]( if cached_config is not None: return cached_config + if self.provider.compatibility_mode == SCIMCompatibilityMode.VCENTER: + return default_config + # Attempt to fetch from remote path = "/ServiceProviderConfig" if self.provider.compatibility_mode == SCIMCompatibilityMode.SALESFORCE: diff --git a/authentik/providers/scim/clients/groups.py b/authentik/providers/scim/clients/groups.py index 8cd62c49fc..6616ce15dc 100644 --- a/authentik/providers/scim/clients/groups.py +++ b/authentik/providers/scim/clients/groups.py @@ -54,6 +54,13 @@ class SCIMGroupClient(SCIMClient[Group, SCIMProviderGroup, SCIMGroupSchema]): ["group", "provider", "connection"], ) + def _create_group_member(self, id: str) -> GroupMember: + member = GroupMember(value=id) + # https://developer.webex.com/admin/docs/api/v1/scim-2-groups/create-a-group + if self.provider.compatibility_mode == SCIMCompatibilityMode.WEBEX: + member.type = "user" + return member + def to_schema(self, obj: Group, connection: SCIMProviderGroup) -> SCIMGroupSchema: """Convert authentik user into SCIM""" raw_scim_group = super().to_schema(obj, connection) @@ -77,9 +84,7 @@ class SCIMGroupClient(SCIMClient[Group, SCIMProviderGroup, SCIMGroupSchema]): members = [] for user in connections: members.append( - GroupMember( - value=user.scim_id, - ) + self._create_group_member(user.scim_id), ) if members: scim_group.members = members @@ -322,7 +327,7 @@ class SCIMGroupClient(SCIMClient[Group, SCIMProviderGroup, SCIMGroupSchema]): op=PatchOp.add, path="members", value=[ - GroupMember(value=x).model_dump( + self._create_group_member(x).model_dump( mode="json", exclude_unset=True, ) @@ -335,7 +340,7 @@ class SCIMGroupClient(SCIMClient[Group, SCIMProviderGroup, SCIMGroupSchema]): op=PatchOp.remove, path="members", value=[ - GroupMember(value=x).model_dump( + self._create_group_member(x).model_dump( mode="json", exclude_unset=True, ) @@ -363,7 +368,7 @@ class SCIMGroupClient(SCIMClient[Group, SCIMProviderGroup, SCIMGroupSchema]): op=PatchOp.add, path="members", value=[ - GroupMember(value=x).model_dump( + self._create_group_member(x).model_dump( mode="json", exclude_unset=True, ) @@ -391,7 +396,7 @@ class SCIMGroupClient(SCIMClient[Group, SCIMProviderGroup, SCIMGroupSchema]): op=PatchOp.remove, path="members", value=[ - GroupMember(value=x).model_dump( + self._create_group_member(x).model_dump( mode="json", exclude_unset=True, ) diff --git a/authentik/providers/scim/migrations/0019_scimprovider_group_filters_and_more.py b/authentik/providers/scim/migrations/0019_scimprovider_group_filters_and_more.py index 5c42f36194..6c0407edca 100644 --- a/authentik/providers/scim/migrations/0019_scimprovider_group_filters_and_more.py +++ b/authentik/providers/scim/migrations/0019_scimprovider_group_filters_and_more.py @@ -84,4 +84,34 @@ class Migration(migrations.Migration): to="authentik_core.group", ), ), + migrations.AlterField( + model_name="scimprovider", + name="compatibility_mode", + field=models.CharField( + choices=[ + ("default", "Default"), + ("aws", "AWS"), + ("slack", "Slack"), + ("sfdc", "Salesforce"), + ("webex", "Webex"), + ("vcenter", "vCenter"), + ], + default="default", + help_text="Alter authentik behavior for vendor-specific SCIM implementations.", + max_length=30, + verbose_name="SCIM Compatibility Mode", + ), + ), + migrations.AlterField( + model_name="scimprovider", + name="auth_mode", + field=models.TextField( + choices=[ + ("token", "Token"), + ("oauth", "OAuth (Silent)"), + ("oauth_interactive", "OAuth (interactive)"), + ], + default="token", + ), + ), ] diff --git a/authentik/providers/scim/models.py b/authentik/providers/scim/models.py index 0339b3d776..3fe265f1ac 100644 --- a/authentik/providers/scim/models.py +++ b/authentik/providers/scim/models.py @@ -12,6 +12,7 @@ from requests.auth import AuthBase from rest_framework.serializers import Serializer from structlog.stdlib import get_logger +from authentik.core.apps import AppAccessWithoutBindings from authentik.core.models import BackchannelProvider, Group, PropertyMapping, User, UserTypes from authentik.lib.models import InternallyManagedMixin, SerializerModel from authentik.lib.sync.outgoing.base import BaseOutgoingSyncClient @@ -71,7 +72,8 @@ class SCIMAuthenticationMode(models.TextChoices): """SCIM authentication modes""" TOKEN = "token", _("Token") - OAUTH = "oauth", _("OAuth") + OAUTH_SILENT = "oauth", _("OAuth (Silent)") + OAUTH_INTERACTIVE = "oauth_interactive", _("OAuth (interactive)") class SCIMCompatibilityMode(models.TextChoices): @@ -81,6 +83,8 @@ class SCIMCompatibilityMode(models.TextChoices): AWS = "aws", _("AWS") SLACK = "slack", _("Slack") SALESFORCE = "sfdc", _("Salesforce") + WEBEX = "webex", _("Webex") + VCENTER = "vcenter", _("vCenter") class SCIMProvider(OutgoingSyncProvider, BackchannelProvider): @@ -141,7 +145,10 @@ class SCIMProvider(OutgoingSyncProvider, BackchannelProvider): ) def scim_auth(self) -> AuthBase: - if self.auth_mode == SCIMAuthenticationMode.OAUTH: + if self.auth_mode in [ + SCIMAuthenticationMode.OAUTH_SILENT, + SCIMAuthenticationMode.OAUTH_INTERACTIVE, + ]: try: from authentik.enterprise.providers.scim.auth_oauth2 import SCIMOAuthAuth @@ -193,13 +200,14 @@ class SCIMProvider(OutgoingSyncProvider, BackchannelProvider): # Filter users by their access to the backchannel application if an application is set # This handles both policy bindings and group_filters if self.backchannel_application: - base = base.filter( - pk__in=[ - user.pk - for user in base - if PolicyEngine(self.backchannel_application, user, None).build().passing - ] - ) + pks = [] + for user in base: + engine = PolicyEngine(self.backchannel_application, user, None) + engine.empty_result = AppAccessWithoutBindings.get() + engine.build() + if engine.passing: + pks.append(user.pk) + base = base.filter(pk__in=pks) return base.order_by("pk") if type == Group: diff --git a/authentik/providers/scim/tests/test_membership.py b/authentik/providers/scim/tests/test_membership.py index 3e570bfcfd..abcee92acd 100644 --- a/authentik/providers/scim/tests/test_membership.py +++ b/authentik/providers/scim/tests/test_membership.py @@ -7,7 +7,7 @@ from authentik.blueprints.tests import apply_blueprint from authentik.core.models import Application, Group, User from authentik.lib.generators import generate_id from authentik.providers.scim.clients.schema import ServiceProviderConfiguration -from authentik.providers.scim.models import SCIMMapping, SCIMProvider +from authentik.providers.scim.models import SCIMCompatibilityMode, SCIMMapping, SCIMProvider from authentik.providers.scim.tasks import scim_sync from authentik.tenants.models import Tenant @@ -26,12 +26,13 @@ class SCIMMembershipTests(TestCase): Tenant.objects.update(avatars="none") @apply_blueprint("system/providers-scim.yaml") - def configure(self) -> None: + def configure(self, **kwargs) -> None: """Configure provider""" self.provider: SCIMProvider = SCIMProvider.objects.create( name=generate_id(), url="https://localhost", token=generate_id(), + **kwargs, ) self.app: Application = Application.objects.create( name=generate_id(), @@ -353,3 +354,113 @@ class SCIMMembershipTests(TestCase): ] }, ) + + def test_member_add_save_compat_webex(self): + """Test member add + save""" + config = ServiceProviderConfiguration.default() + + config.patch.supported = True + user_scim_id = generate_id() + group_scim_id = generate_id() + uid = generate_id() + group = Group.objects.create( + name=uid, + ) + + user = User.objects.create(username=generate_id()) + + # Test initial sync of group creation + with Mocker() as mocker: + mocker.get( + "https://localhost/ServiceProviderConfig", + json=config.model_dump(), + ) + mocker.post( + "https://localhost/Users", + json={ + "id": user_scim_id, + }, + ) + mocker.post( + "https://localhost/Groups", + json={ + "id": group_scim_id, + }, + ) + + self.configure(compatibility_mode=SCIMCompatibilityMode.WEBEX) + scim_sync.send(self.provider.pk) + + self.assertEqual(mocker.call_count, 3) + self.assertEqual(mocker.request_history[0].method, "GET") + self.assertEqual(mocker.request_history[1].method, "POST") + self.assertEqual(mocker.request_history[2].method, "POST") + self.assertJSONEqual( + mocker.request_history[1].body, + { + "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"], + "emails": [], + "active": True, + "externalId": user.uid, + "name": {"familyName": " ", "formatted": " ", "givenName": ""}, + "displayName": "", + "userName": user.username, + }, + ) + self.assertJSONEqual( + mocker.request_history[2].body, + { + "schemas": ["urn:ietf:params:scim:schemas:core:2.0:Group"], + "externalId": str(group.pk), + "displayName": group.name, + }, + ) + + with Mocker() as mocker: + mocker.get( + "https://localhost/ServiceProviderConfig", + json=config.model_dump(), + ) + mocker.get( + f"https://localhost/Groups/{group_scim_id}", + json={}, + ) + mocker.patch( + f"https://localhost/Groups/{group_scim_id}", + json={}, + ) + group.users.add(user) + group.save() + self.assertEqual(mocker.call_count, 3) + self.assertEqual(mocker.request_history[0].method, "PATCH") + self.assertEqual(mocker.request_history[1].method, "PATCH") + self.assertEqual(mocker.request_history[2].method, "GET") + self.assertJSONEqual( + mocker.request_history[0].body, + { + "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"], + "Operations": [ + { + "op": "add", + "path": "members", + "value": [{"value": user_scim_id, "type": "user"}], + } + ], + }, + ) + self.assertJSONEqual( + mocker.request_history[1].body, + { + "Operations": [ + { + "op": "replace", + "value": { + "id": group_scim_id, + "displayName": group.name, + "schemas": ["urn:ietf:params:scim:schemas:core:2.0:Group"], + "externalId": str(group.pk), + }, + } + ] + }, + ) diff --git a/authentik/rbac/api/rbac.py b/authentik/rbac/api/rbac.py index e670d65add..fa7e6d2346 100644 --- a/authentik/rbac/api/rbac.py +++ b/authentik/rbac/api/rbac.py @@ -19,8 +19,8 @@ from rest_framework.permissions import IsAuthenticated from rest_framework.viewsets import ReadOnlyModelViewSet from authentik.core.api.utils import ModelSerializer, PassiveSerializer +from authentik.lib.api import model_choices from authentik.lib.validators import RequiredTogetherValidator -from authentik.policies.event_matcher.models import model_choices from authentik.rbac.models import Role diff --git a/authentik/rbac/api/rbac_assigned_by_roles.py b/authentik/rbac/api/rbac_assigned_by_roles.py index 2aaf14d4b0..939380194c 100644 --- a/authentik/rbac/api/rbac_assigned_by_roles.py +++ b/authentik/rbac/api/rbac_assigned_by_roles.py @@ -16,7 +16,7 @@ from rest_framework.response import Response from rest_framework.viewsets import GenericViewSet from authentik.core.api.utils import ModelSerializer, PassiveSerializer -from authentik.policies.event_matcher.models import model_choices +from authentik.lib.api import model_choices from authentik.rbac.api.rbac import PermissionAssignResultSerializer, PermissionAssignSerializer from authentik.rbac.decorators import permission_required from authentik.rbac.models import Role diff --git a/authentik/rbac/migrations/0010_remove_role_group_alter_role_name.py b/authentik/rbac/migrations/0010_remove_role_group_alter_role_name.py index 194fa3bc5a..95e5cfea0f 100644 --- a/authentik/rbac/migrations/0010_remove_role_group_alter_role_name.py +++ b/authentik/rbac/migrations/0010_remove_role_group_alter_role_name.py @@ -6,6 +6,7 @@ from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ + ("authentik_core", "0056_user_roles"), # must run before group field is removed ("authentik_rbac", "0009_remove_initialpermissions_mode"), ] diff --git a/authentik/rbac/tests/test_api_permissions_roles.py b/authentik/rbac/tests/test_api_permissions_roles.py index 0ad0014500..92308de24c 100644 --- a/authentik/rbac/tests/test_api_permissions_roles.py +++ b/authentik/rbac/tests/test_api_permissions_roles.py @@ -49,6 +49,7 @@ class TestRBACPermissionRoles(APITestCase): self.assertJSONEqual( res.content, { + "autocomplete": {}, "pagination": { "next": 0, "previous": 0, diff --git a/authentik/recovery/management/commands/create_admin_group.py b/authentik/recovery/management/commands/create_admin_group.py index 979717877e..e5720e7a55 100644 --- a/authentik/recovery/management/commands/create_admin_group.py +++ b/authentik/recovery/management/commands/create_admin_group.py @@ -1,5 +1,7 @@ """authentik recovery create_admin_group""" +from argparse import ArgumentParser + from django.utils.translation import gettext as _ from authentik.core.models import User @@ -12,7 +14,7 @@ class Command(TenantCommand): help = _("Create admin group if the default group gets deleted.") - def add_arguments(self, parser): + def add_arguments(self, parser: ArgumentParser): parser.add_argument("user", action="store", help="User to add to the admin group.") def handle_per_tenant(self, *args, **options): diff --git a/authentik/recovery/views.py b/authentik/recovery/views.py index bb1bbdfa50..584b15c526 100644 --- a/authentik/recovery/views.py +++ b/authentik/recovery/views.py @@ -19,7 +19,7 @@ class UseTokenView(View): """Check if token exists, log user in and delete token.""" with transaction.atomic(): tokens = ( - Token.filter_not_expired(key=key, intent=TokenIntents.INTENT_RECOVERY) + Token.objects.filter(key=key, intent=TokenIntents.INTENT_RECOVERY) .select_for_update() .select_related("user") ) diff --git a/authentik/root/middleware.py b/authentik/root/middleware.py index 0f07168b0b..e3b99426ab 100644 --- a/authentik/root/middleware.py +++ b/authentik/root/middleware.py @@ -221,7 +221,7 @@ class ClientIPMiddleware: return None delegated_ip = request.META[self.outpost_remote_ip_header] token = ( - Token.filter_not_expired( + Token.objects.filter( key=request.META.get(self.outpost_token_header), intent=TokenIntents.INTENT_API ) .select_related("user") diff --git a/authentik/root/monitoring.py b/authentik/root/monitoring.py index 890e3d6061..15e461cff9 100644 --- a/authentik/root/monitoring.py +++ b/authentik/root/monitoring.py @@ -1,10 +1,5 @@ """Metrics view""" -from hmac import compare_digest -from pathlib import Path -from tempfile import gettempdir - -from django.conf import settings from django.db import connections from django.db.utils import OperationalError from django.dispatch import Signal @@ -18,18 +13,8 @@ monitoring_set = Signal() class MetricsView(View): """Wrapper around ExportToDjangoView with authentication, accessed by the authentik router""" - def __init__(self, **kwargs): - _tmp = Path(gettempdir()) - with open(_tmp / "authentik-core-metrics.key") as _f: - self.monitoring_key = _f.read() - def get(self, request: HttpRequest) -> HttpResponse: """Check for HTTP-Basic auth""" - auth_header = request.META.get("HTTP_AUTHORIZATION", "") - auth_type, _, given_credentials = auth_header.partition(" ") - authed = auth_type == "Bearer" and compare_digest(given_credentials, self.monitoring_key) - if not authed and not settings.DEBUG: - return HttpResponse(status=401) monitoring_set.send_robust(self) return ExportToDjangoView(request) diff --git a/authentik/root/settings.py b/authentik/root/settings.py index 072d4f4b5a..c7ddb0c0e1 100644 --- a/authentik/root/settings.py +++ b/authentik/root/settings.py @@ -171,49 +171,57 @@ SPECTACULAR_SETTINGS = { "url": "https://github.com/goauthentik/authentik/blob/main/LICENSE", }, "ENUM_NAME_OVERRIDES": { + "AppEnum": "authentik.lib.api.Apps", + "AuthenticationEnum": "authentik.flows.models.FlowAuthenticationRequirement", + "ConsentModeEnum": "authentik.stages.consent.models.ConsentMode", "CountryCodeEnum": "django_countries.countries", "DeviceClassesEnum": "authentik.stages.authenticator_validate.models.DeviceClasses", + "DeviceFactsOSFamily": "authentik.endpoints.facts.OSFamily", "EventActions": "authentik.events.models.EventAction", "FlowDesignationEnum": "authentik.flows.models.FlowDesignation", "FlowLayoutEnum": "authentik.flows.models.FlowLayout", "LDAPAPIAccessMode": "authentik.providers.ldap.models.APIAccessMode", + "ModelEnum": "authentik.lib.api.Models", "OutgoingSyncDeleteAction": "authentik.lib.sync.outgoing.models.OutgoingSyncDeleteAction", + "PKCEMethodEnum": "authentik.sources.oauth.models.PKCEMethod", "PolicyEngineMode": "authentik.policies.models.PolicyEngineMode", "PromptTypeEnum": "authentik.stages.prompt.models.FieldTypes", "ProxyMode": "authentik.providers.proxy.models.ProxyMode", - "TaskAggregatedStatusEnum": "authentik.tasks.models.TaskStatus", - "SAMLNameIDPolicyEnum": "authentik.sources.saml.models.SAMLNameIDPolicy", + "RedirectURITypeEnum": "authentik.providers.oauth2.models.RedirectURIType", "SAMLBindingsEnum": "authentik.providers.saml.models.SAMLBindings", + "SAMLLogoutMethods": "authentik.providers.saml.models.SAMLLogoutMethods", + "SAMLNameIDPolicyEnum": "authentik.sources.saml.models.SAMLNameIDPolicy", + "SCIMAuthenticationModeEnum": "authentik.providers.scim.models.SCIMAuthenticationMode", + "StageModeEnum": "authentik.endpoints.models.StageMode", + "TaskAggregatedStatusEnum": "authentik.tasks.models.TaskStatus", + "TaskStatusEnum": "django_dramatiq_postgres.models.TaskState", + "TransportModeEnum": "authentik.events.models.TransportMode", "UserTypeEnum": "authentik.core.models.UserTypes", "UserVerificationEnum": "authentik.stages.authenticator_webauthn.models.UserVerification", "WebAuthnHintEnum": "authentik.stages.authenticator_webauthn.models.WebAuthnHint", - "SCIMAuthenticationModeEnum": "authentik.providers.scim.models.SCIMAuthenticationMode", - "PKCEMethodEnum": "authentik.sources.oauth.models.PKCEMethod", - "DeviceFactsOSFamily": "authentik.endpoints.facts.OSFamily", - "StageModeEnum": "authentik.endpoints.models.StageMode", - "SAMLLogoutMethods": "authentik.providers.saml.models.SAMLLogoutMethods", }, "ENUM_ADD_EXPLICIT_BLANK_NULL_CHOICE": False, "ENUM_GENERATE_CHOICE_DESCRIPTION": False, "PREPROCESSING_HOOKS": [ - "authentik.api.schema.preprocess_schema_exclude_non_api", + "authentik.api.v3.schema.cleanup.preprocess_schema_exclude_non_api", ], "POSTPROCESSING_HOOKS": [ - "authentik.api.schema.postprocess_schema_register", - "authentik.api.schema.postprocess_schema_responses", - "authentik.api.schema.postprocess_schema_query_params", - "authentik.api.schema.postprocess_schema_remove_unused", - "drf_spectacular.hooks.postprocess_schema_enums", + "authentik.api.v3.schema.response.postprocess_schema_register", + "authentik.api.v3.schema.response.postprocess_schema_responses", + "authentik.api.v3.schema.query.postprocess_schema_query_params", + "authentik.api.v3.schema.cleanup.postprocess_schema_remove_unused", + "authentik.api.v3.schema.search.postprocess_schema_search_autocomplete", + "authentik.api.v3.schema.enum.postprocess_schema_enums", ], } REST_FRAMEWORK = { "DEFAULT_PAGINATION_CLASS": "authentik.api.pagination.Pagination", "DEFAULT_FILTER_BACKENDS": [ + "authentik.api.search.ql.QLSearch", "authentik.rbac.filters.ObjectFilter", "django_filters.rest_framework.DjangoFilterBackend", - "rest_framework.filters.OrderingFilter", - "rest_framework.filters.SearchFilter", + "authentik.api.ordering.NullsAwareOrderingFilter", ], "DEFAULT_PERMISSION_CLASSES": ("authentik.rbac.permissions.ObjectPermissions",), "DEFAULT_AUTHENTICATION_CLASSES": ( @@ -440,8 +448,6 @@ DRAMATIQ = { ("authentik.tasks.middleware.TaskLogMiddleware", {}), ("authentik.tasks.middleware.LoggingMiddleware", {}), ("authentik.tasks.middleware.DescriptionMiddleware", {}), - ("authentik.tasks.middleware.WorkerHealthcheckMiddleware", {}), - ("authentik.tasks.middleware.WorkerStatusMiddleware", {}), ( "authentik.tasks.middleware.MetricsMiddleware", { diff --git a/authentik/root/test_plugin.py b/authentik/root/test_plugin.py index 64057f6aac..c15ea705a3 100644 --- a/authentik/root/test_plugin.py +++ b/authentik/root/test_plugin.py @@ -1,12 +1,15 @@ import math from os import environ from ssl import OPENSSL_VERSION +from time import monotonic +from typing import TextIO import pytest from cryptography.hazmat.backends.openssl.backend import backend +from pytest import Config, Item, TerminalReporter from authentik import authentik_full_version -from tests.e2e.utils import get_local_ip +from tests.decorators import get_local_ip IS_CI = "CI" in environ @@ -29,7 +32,7 @@ def pytest_report_header(*_, **__): ] -def pytest_collection_modifyitems(config: pytest.Config, items: list[pytest.Item]) -> None: +def pytest_collection_modifyitems(config: Config, items: list[Item]) -> None: current_id = int(environ.get("CI_RUN_ID", "0")) - 1 total_ids = int(environ.get("CI_TOTAL_RUNS", "0")) @@ -44,3 +47,38 @@ def pytest_collection_modifyitems(config: pytest.Config, items: list[pytest.Item config.hook.pytest_deselected(items=deselected_items) items[:] = items[start:end] print(f" Executing {start} - {end} tests") + + +@pytest.hookimpl(trylast=True) +def pytest_configure(config: Config): + # Replace the default terminal reporter + reporter = config.pluginmanager.get_plugin("terminalreporter") + if reporter: + config.pluginmanager.unregister(reporter) + config.pluginmanager.register( + RelativeTimeTerminalReporter(config), + "terminalreporter", + ) + + +class RelativeTimeTerminalReporter(TerminalReporter): + _start_time: None | float + + def __init__(self, config: Config, file: TextIO | None = None): + super().__init__(config, file) + self._start_time = None + + def pytest_runtest_logstart(self, nodeid, location): + # Set start time on the first test + if self._start_time is None: + self._start_time = monotonic() + super().pytest_runtest_logstart(nodeid, location) + + def _locationline(self, nodeid, fspath, lineno, domain): + original = super()._locationline(nodeid, fspath, lineno, domain) + if self._start_time is None: + return original + elapsed = monotonic() - self._start_time + minutes, seconds = divmod(elapsed, 60) + timestamp = f"{int(minutes):02d}:{seconds:06.3f}" + return f"[+{timestamp}] {original}" diff --git a/authentik/root/test_runner.py b/authentik/root/test_runner.py index 9cfc0d7652..56b2642330 100644 --- a/authentik/root/test_runner.py +++ b/authentik/root/test_runner.py @@ -69,8 +69,8 @@ class PytestTestRunner(DiscoverRunner): # pragma: no cover # Test-specific configuration test_config = { - "events.context_processors.geoip": "tests/GeoLite2-City-Test.mmdb", - "events.context_processors.asn": "tests/GeoLite2-ASN-Test.mmdb", + "events.context_processors.geoip": "tests/geoip/GeoLite2-City-Test.mmdb", + "events.context_processors.asn": "tests/geoip/GeoLite2-ASN-Test.mmdb", "blueprints_dir": "./blueprints", "outposts.container_image_base": f"ghcr.io/goauthentik/dev-%(type)s:{get_docker_tag()}", "tenants.enabled": False, diff --git a/authentik/root/tests/test_views.py b/authentik/root/tests/test_views.py index f574a9ba50..d069bc5ac1 100644 --- a/authentik/root/tests/test_views.py +++ b/authentik/root/tests/test_views.py @@ -1,9 +1,5 @@ """root tests""" -from pathlib import Path -from secrets import token_urlsafe -from tempfile import gettempdir - from django.test import TransactionTestCase from django.urls import reverse @@ -11,26 +7,9 @@ from django.urls import reverse class TestRoot(TransactionTestCase): """Test root application""" - def setUp(self): - _tmp = Path(gettempdir()) - self.token = token_urlsafe(32) - with open(_tmp / "authentik-core-metrics.key", "w") as _f: - _f.write(self.token) - - def tearDown(self): - _tmp = Path(gettempdir()) - (_tmp / "authentik-core-metrics.key").unlink() - - def test_monitoring_error(self): - """Test monitoring without any credentials""" - response = self.client.get(reverse("metrics")) - self.assertEqual(response.status_code, 401) - - def test_monitoring_ok(self): + def test_monitoring(self): """Test monitoring with credentials""" - auth_headers = {"HTTP_AUTHORIZATION": f"Bearer {self.token}"} - response = self.client.get(reverse("metrics"), **auth_headers) - self.assertEqual(response.status_code, 200) + self.assertEqual(self.client.get(reverse("metrics")).status_code, 200) def test_monitoring_live(self): """Test LiveView""" diff --git a/authentik/sources/kerberos/models.py b/authentik/sources/kerberos/models.py index 24eda20283..07ef0d5af6 100644 --- a/authentik/sources/kerberos/models.py +++ b/authentik/sources/kerberos/models.py @@ -168,7 +168,7 @@ class KerberosSource(IncomingSyncSource): } ), name=self.name, - icon_url=self.icon_url, + icon_url=self.get_icon_url(request, use_cache=False) or self.icon_url, promoted=self.promoted, ) diff --git a/authentik/sources/ldap/api/__init__.py b/authentik/sources/ldap/api/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/authentik/sources/ldap/api/connections.py b/authentik/sources/ldap/api/connections.py new file mode 100644 index 0000000000..b3ffca7d51 --- /dev/null +++ b/authentik/sources/ldap/api/connections.py @@ -0,0 +1,42 @@ +"""Source API Views""" + +from rest_framework.viewsets import ModelViewSet + +from authentik.core.api.groups import PartialUserSerializer +from authentik.core.api.sources import ( + GroupSourceConnectionSerializer, + GroupSourceConnectionViewSet, + UserSourceConnectionSerializer, + UserSourceConnectionViewSet, +) +from authentik.core.api.users import PartialGroupSerializer +from authentik.sources.ldap.models import ( + GroupLDAPSourceConnection, + UserLDAPSourceConnection, +) + + +class UserLDAPSourceConnectionSerializer(UserSourceConnectionSerializer): + user_obj = PartialUserSerializer(source="user", read_only=True) + + class Meta(UserSourceConnectionSerializer.Meta): + model = UserLDAPSourceConnection + fields = UserSourceConnectionSerializer.Meta.fields + ["user_obj"] + + +class UserLDAPSourceConnectionViewSet(UserSourceConnectionViewSet, ModelViewSet): + queryset = UserLDAPSourceConnection.objects.all() + serializer_class = UserLDAPSourceConnectionSerializer + + +class GroupLDAPSourceConnectionSerializer(GroupSourceConnectionSerializer): + group_obj = PartialGroupSerializer(source="group", read_only=True) + + class Meta(GroupSourceConnectionSerializer.Meta): + model = GroupLDAPSourceConnection + fields = GroupSourceConnectionSerializer.Meta.fields + ["group_obj"] + + +class GroupLDAPSourceConnectionViewSet(GroupSourceConnectionViewSet, ModelViewSet): + queryset = GroupLDAPSourceConnection.objects.all() + serializer_class = GroupLDAPSourceConnectionSerializer diff --git a/authentik/sources/ldap/api/property_mappings.py b/authentik/sources/ldap/api/property_mappings.py new file mode 100644 index 0000000000..62bf578fcc --- /dev/null +++ b/authentik/sources/ldap/api/property_mappings.py @@ -0,0 +1,32 @@ +from rest_framework.viewsets import ModelViewSet + +from authentik.core.api.property_mappings import PropertyMappingFilterSet, PropertyMappingSerializer +from authentik.core.api.used_by import UsedByMixin +from authentik.sources.ldap.models import ( + LDAPSourcePropertyMapping, +) + + +class LDAPSourcePropertyMappingSerializer(PropertyMappingSerializer): + """LDAP PropertyMapping Serializer""" + + class Meta: + model = LDAPSourcePropertyMapping + fields = PropertyMappingSerializer.Meta.fields + + +class LDAPSourcePropertyMappingFilter(PropertyMappingFilterSet): + """Filter for LDAPSourcePropertyMapping""" + + class Meta(PropertyMappingFilterSet.Meta): + model = LDAPSourcePropertyMapping + + +class LDAPSourcePropertyMappingViewSet(UsedByMixin, ModelViewSet): + """LDAP PropertyMapping Viewset""" + + queryset = LDAPSourcePropertyMapping.objects.all() + serializer_class = LDAPSourcePropertyMappingSerializer + filterset_class = LDAPSourcePropertyMappingFilter + search_fields = ["name"] + ordering = ["name"] diff --git a/authentik/sources/ldap/api.py b/authentik/sources/ldap/api/sources.py similarity index 80% rename from authentik/sources/ldap/api.py rename to authentik/sources/ldap/api/sources.py index 9731734467..443bd2ee14 100644 --- a/authentik/sources/ldap/api.py +++ b/authentik/sources/ldap/api/sources.py @@ -13,23 +13,15 @@ from rest_framework.request import Request from rest_framework.response import Response from rest_framework.viewsets import ModelViewSet -from authentik.core.api.property_mappings import PropertyMappingFilterSet, PropertyMappingSerializer from authentik.core.api.sources import ( - GroupSourceConnectionSerializer, - GroupSourceConnectionViewSet, SourceSerializer, - UserSourceConnectionSerializer, - UserSourceConnectionViewSet, ) from authentik.core.api.used_by import UsedByMixin from authentik.crypto.models import CertificateKeyPair from authentik.lib.sync.api import SyncStatusSerializer from authentik.rbac.filters import ObjectFilter from authentik.sources.ldap.models import ( - GroupLDAPSourceConnection, LDAPSource, - LDAPSourcePropertyMapping, - UserLDAPSourceConnection, ) from authentik.sources.ldap.tasks import CACHE_KEY_STATUS, SYNC_CLASSES, ldap_sync from authentik.tasks.models import Task, TaskStatus @@ -217,55 +209,10 @@ class LDAPSourceViewSet(UsedByMixin, ModelViewSet): for sync_class in SYNC_CLASSES: class_name = sync_class.name() all_objects.setdefault(class_name, []) - for page in sync_class(source).get_objects(size_limit=10): + for page in sync_class(source, Task()).get_objects(size_limit=10): for obj in page: obj: dict obj.pop("raw_attributes", None) obj.pop("raw_dn", None) all_objects[class_name].append(obj) return Response(data=all_objects) - - -class LDAPSourcePropertyMappingSerializer(PropertyMappingSerializer): - """LDAP PropertyMapping Serializer""" - - class Meta: - model = LDAPSourcePropertyMapping - fields = PropertyMappingSerializer.Meta.fields - - -class LDAPSourcePropertyMappingFilter(PropertyMappingFilterSet): - """Filter for LDAPSourcePropertyMapping""" - - class Meta(PropertyMappingFilterSet.Meta): - model = LDAPSourcePropertyMapping - - -class LDAPSourcePropertyMappingViewSet(UsedByMixin, ModelViewSet): - """LDAP PropertyMapping Viewset""" - - queryset = LDAPSourcePropertyMapping.objects.all() - serializer_class = LDAPSourcePropertyMappingSerializer - filterset_class = LDAPSourcePropertyMappingFilter - search_fields = ["name"] - ordering = ["name"] - - -class UserLDAPSourceConnectionSerializer(UserSourceConnectionSerializer): - class Meta(UserSourceConnectionSerializer.Meta): - model = UserLDAPSourceConnection - - -class UserLDAPSourceConnectionViewSet(UserSourceConnectionViewSet, ModelViewSet): - queryset = UserLDAPSourceConnection.objects.all() - serializer_class = UserLDAPSourceConnectionSerializer - - -class GroupLDAPSourceConnectionSerializer(GroupSourceConnectionSerializer): - class Meta(GroupSourceConnectionSerializer.Meta): - model = GroupLDAPSourceConnection - - -class GroupLDAPSourceConnectionViewSet(GroupSourceConnectionViewSet, ModelViewSet): - queryset = GroupLDAPSourceConnection.objects.all() - serializer_class = GroupLDAPSourceConnectionSerializer diff --git a/authentik/sources/ldap/models.py b/authentik/sources/ldap/models.py index 1e83982eb4..05492a363a 100644 --- a/authentik/sources/ldap/models.py +++ b/authentik/sources/ldap/models.py @@ -12,7 +12,13 @@ from django.db import connection, models from django.templatetags.static import static from django.utils.translation import gettext_lazy as _ from ldap3 import ALL, NONE, RANDOM, Connection, Server, ServerPool, Tls -from ldap3.core.exceptions import LDAPException, LDAPInsufficientAccessRightsResult, LDAPSchemaError +from ldap3.core.exceptions import ( + LDAPAdminLimitExceededResult, + LDAPAttributeError, + LDAPException, + LDAPInsufficientAccessRightsResult, + LDAPSchemaError, +) from rest_framework.serializers import Serializer from structlog.stdlib import get_logger @@ -31,6 +37,7 @@ from authentik.tasks.schedules.common import ScheduleSpec LDAP_TIMEOUT = 15 LDAP_UNIQUENESS = "ldap_uniq" +"""Deprecated, don't use""" LDAP_DISTINGUISHED_NAME = "distinguishedName" LOGGER = get_logger() @@ -159,7 +166,7 @@ class LDAPSource(IncomingSyncSource): @property def serializer(self) -> type[Serializer]: - from authentik.sources.ldap.api import LDAPSourceSerializer + from authentik.sources.ldap.api.sources import LDAPSourceSerializer return LDAPSourceSerializer @@ -192,6 +199,7 @@ class LDAPSource(IncomingSyncSource): def update_properties_with_uniqueness_field(self, properties, dn, ldap, **kwargs): properties.setdefault("attributes", {})[LDAP_DISTINGUISHED_NAME] = dn + # TODO: Remove after 2026.5, still stored for legacy if self.object_uniqueness_field in ldap: properties["attributes"][LDAP_UNIQUENESS] = flatten( ldap.get(self.object_uniqueness_field) @@ -276,10 +284,17 @@ class LDAPSource(IncomingSyncSource): successful = conn.bind() if successful: return conn - except (LDAPSchemaError, LDAPInsufficientAccessRightsResult) as exc: - # Schema error, so try connecting without schema info + except ( + LDAPSchemaError, + LDAPInsufficientAccessRightsResult, + LDAPAdminLimitExceededResult, + LDAPAttributeError, + ) as exc: + # Schema error or rate limit during schema fetch, retry without schema info # See https://github.com/goauthentik/authentik/issues/4590 # See also https://github.com/goauthentik/authentik/issues/3399 + # LDAPAdminLimitExceededResult: Google Secure LDAP rate-limits schema queries + # LDAPAttributeError: Google Secure LDAP returns unsupported attrs in schema if server_kwargs.get("get_info", ALL) == NONE: LOGGER.warning("Failed to connect after schema downgrade", source=self, exc=exc) raise exc @@ -356,7 +371,7 @@ class LDAPSourcePropertyMapping(PropertyMapping): @property def serializer(self) -> type[Serializer]: - from authentik.sources.ldap.api import LDAPSourcePropertyMappingSerializer + from authentik.sources.ldap.api.property_mappings import LDAPSourcePropertyMappingSerializer return LDAPSourcePropertyMappingSerializer @@ -377,7 +392,7 @@ class UserLDAPSourceConnection(UserSourceConnection): @property def serializer(self) -> type[Serializer]: - from authentik.sources.ldap.api import ( + from authentik.sources.ldap.api.connections import ( UserLDAPSourceConnectionSerializer, ) @@ -400,7 +415,7 @@ class GroupLDAPSourceConnection(GroupSourceConnection): @property def serializer(self) -> type[Serializer]: - from authentik.sources.ldap.api import ( + from authentik.sources.ldap.api.connections import ( GroupLDAPSourceConnectionSerializer, ) diff --git a/authentik/sources/ldap/sync/base.py b/authentik/sources/ldap/sync/base.py index 931313caed..650b711edc 100644 --- a/authentik/sources/ldap/sync/base.py +++ b/authentik/sources/ldap/sync/base.py @@ -7,9 +7,15 @@ from ldap3 import DEREF_ALWAYS, SUBTREE, Connection from structlog.stdlib import BoundLogger, get_logger from authentik.core.sources.mapper import SourceMapper +from authentik.core.sources.matcher import SourceMatcher from authentik.lib.config import CONFIG from authentik.lib.sync.mapper import PropertyMappingManager -from authentik.sources.ldap.models import LDAPSource, flatten +from authentik.sources.ldap.models import ( + GroupLDAPSourceConnection, + LDAPSource, + UserLDAPSourceConnection, + flatten, +) from authentik.tasks.models import Task @@ -28,6 +34,9 @@ class BaseLDAPSynchronizer: self._task = task self._connection = source.connection() self._logger = get_logger().bind(source=source, syncer=self.__class__.__name__) + self.matcher = SourceMatcher( + self._source, UserLDAPSourceConnection, GroupLDAPSourceConnection + ) @staticmethod def name() -> str: diff --git a/authentik/sources/ldap/sync/groups.py b/authentik/sources/ldap/sync/groups.py index 9382cd4d38..c250817fdd 100644 --- a/authentik/sources/ldap/sync/groups.py +++ b/authentik/sources/ldap/sync/groups.py @@ -12,8 +12,10 @@ from authentik.core.expression.exceptions import ( ) from authentik.core.models import Group from authentik.core.sources.mapper import SourceMapper +from authentik.core.sources.matcher import Action from authentik.events.models import Event, EventAction from authentik.lib.sync.outgoing.exceptions import StopSync +from authentik.lib.utils.errors import exception_to_dict from authentik.sources.ldap.models import ( LDAP_UNIQUENESS, GroupLDAPSourceConnection, @@ -88,33 +90,55 @@ class GroupLDAPSynchronizer(BaseLDAPSynchronizer): if "users" in defaults: del defaults["users"] parent = defaults.pop("parent", None) - group, created = Group.update_or_create_attributes( - { - f"attributes__{LDAP_UNIQUENESS}": uniq, - }, - defaults, - ) + action, connection = self.matcher.get_group_action(uniq, defaults) + + created = False + if action == Action.ENROLL: + # Legacy fallback, in case the group only has an `ldap_uniq` attribute set, but + # no source connection exists yet + legacy_group = Group.objects.filter( + **{ + f"attributes__{LDAP_UNIQUENESS}": uniq, + } + ).first() + if legacy_group and LDAP_UNIQUENESS in legacy_group.attributes: + connection = GroupLDAPSourceConnection( + source=self._source, + group=legacy_group, + identifier=legacy_group.attributes.get(LDAP_UNIQUENESS), + ) + group = legacy_group + # Switch the action to update the attributes + action = Action.AUTH + else: + group = Group.objects.create(**defaults) + created = True + connection.group = group + connection.save() + + if action in (Action.AUTH, Action.LINK): + group = connection.group + group.update_attributes(defaults) + elif action == Action.DENY: + continue + if parent: group.parents.add(parent) self._logger.debug("Created group with attributes", **defaults) - if not GroupLDAPSourceConnection.objects.filter( - source=self._source, identifier=uniq - ): - GroupLDAPSourceConnection.objects.create( - source=self._source, group=group, identifier=uniq - ) except SkipObjectException: continue except PropertyMappingExpressionException as exc: raise StopSync(exc, None, exc.mapping) from exc except (IntegrityError, FieldError, TypeError, AttributeError) as exc: + self._logger.debug("failed to create group", exc=exc) Event.new( EventAction.CONFIGURATION_ERROR, message=( - f"Failed to create group: {str(exc)} " - "To merge new group with existing group, set the groups's " - f"Attribute '{LDAP_UNIQUENESS}' to '{uniq}'" + "Failed to create group; " + "To merge new group with existing group, connect it via the LDAP Source's " + "'Synced Groups' tab." ), + exception=exception_to_dict(exc), source=self._source, dn=group_dn, ).save() diff --git a/authentik/sources/ldap/sync/membership.py b/authentik/sources/ldap/sync/membership.py index 9fcb3cae6e..7b4fd8df12 100644 --- a/authentik/sources/ldap/sync/membership.py +++ b/authentik/sources/ldap/sync/membership.py @@ -8,7 +8,11 @@ from ldap3 import SUBTREE from ldap3.utils.conv import escape_filter_chars from authentik.core.models import Group, User -from authentik.sources.ldap.models import LDAP_DISTINGUISHED_NAME, LDAP_UNIQUENESS, LDAPSource +from authentik.sources.ldap.models import ( + LDAP_DISTINGUISHED_NAME, + GroupLDAPSourceConnection, + LDAPSource, +) from authentik.sources.ldap.sync.base import BaseLDAPSynchronizer from authentik.tasks.models import Task @@ -104,7 +108,9 @@ class MembershipLDAPSynchronizer(BaseLDAPSynchronizer): return None group_uniq = group_uniq[0] if group_uniq not in self.group_cache: - groups = Group.objects.filter(**{f"attributes__{LDAP_UNIQUENESS}": group_uniq}) + groups = GroupLDAPSourceConnection.objects.filter(identifier=group_uniq).select_related( + "group" + ) if not groups.exists(): if self._source.sync_groups: self._task.info( @@ -112,5 +118,5 @@ class MembershipLDAPSynchronizer(BaseLDAPSynchronizer): group=group_dn, ) return None - self.group_cache[group_uniq] = groups.first() + self.group_cache[group_uniq] = groups.first().group return self.group_cache[group_uniq] diff --git a/authentik/sources/ldap/sync/users.py b/authentik/sources/ldap/sync/users.py index a23e456f1a..6c6b3ac439 100644 --- a/authentik/sources/ldap/sync/users.py +++ b/authentik/sources/ldap/sync/users.py @@ -12,8 +12,10 @@ from authentik.core.expression.exceptions import ( ) from authentik.core.models import User from authentik.core.sources.mapper import SourceMapper +from authentik.core.sources.matcher import Action from authentik.events.models import Event, EventAction from authentik.lib.sync.outgoing.exceptions import StopSync +from authentik.lib.utils.errors import exception_to_dict from authentik.sources.ldap.models import ( LDAP_UNIQUENESS, LDAPSource, @@ -86,27 +88,50 @@ class UserLDAPSynchronizer(BaseLDAPSynchronizer): self._logger.debug("Writing user with attributes", **defaults) if "username" not in defaults: raise IntegrityError("Username was not set by propertymappings") - ak_user, created = User.update_or_create_attributes( - {f"attributes__{LDAP_UNIQUENESS}": uniq}, defaults - ) - if not UserLDAPSourceConnection.objects.filter( - source=self._source, identifier=uniq - ): - UserLDAPSourceConnection.objects.create( - source=self._source, user=ak_user, identifier=uniq - ) + action, connection = self.matcher.get_user_action(uniq, defaults) + created = False + if action == Action.ENROLL: + # Legacy fallback, in case the user only has an `ldap_uniq` attribute set, but + # no source connection exists yet + legacy_user = User.objects.filter( + **{ + f"attributes__{LDAP_UNIQUENESS}": uniq, + } + ).first() + if legacy_user and LDAP_UNIQUENESS in legacy_user.attributes: + connection = UserLDAPSourceConnection( + source=self._source, + user=legacy_user, + identifier=legacy_user.attributes.get(LDAP_UNIQUENESS), + ) + ak_user = legacy_user + # Switch the action to update the attributes + action = Action.AUTH + else: + ak_user = User.objects.create(**defaults) + created = True + connection.user = ak_user + connection.save() + + if action in (Action.AUTH, Action.LINK): + ak_user = connection.user + ak_user.update_attributes(defaults) + elif action == Action.DENY: + continue except PropertyMappingExpressionException as exc: raise StopSync(exc, None, exc.mapping) from exc except SkipObjectException: continue except (IntegrityError, FieldError, TypeError, AttributeError) as exc: + self._logger.debug("failed to create user", exc=exc) Event.new( EventAction.CONFIGURATION_ERROR, message=( - f"Failed to create user: {str(exc)} " - "To merge new user with existing user, set the user's " - f"Attribute '{LDAP_UNIQUENESS}' to '{uniq}'" + "Failed to create user; " + "To merge new user with existing user, connect it via the LDAP Source's " + "'Synced Users' tab." ), + exception=exception_to_dict(exc), source=self._source, dn=user_dn, ).save() diff --git a/authentik/sources/ldap/tasks.py b/authentik/sources/ldap/tasks.py index 2b6ecaa4a0..760027817a 100644 --- a/authentik/sources/ldap/tasks.py +++ b/authentik/sources/ldap/tasks.py @@ -27,7 +27,7 @@ from authentik.tasks.middleware import CurrentTask from authentik.tasks.models import Task LOGGER = get_logger() -SYNC_CLASSES = [ +SYNC_CLASSES: list[type[BaseLDAPSynchronizer]] = [ UserLDAPSynchronizer, GroupLDAPSynchronizer, MembershipLDAPSynchronizer, diff --git a/authentik/sources/ldap/tests/fixtures/ms_ad_2025/entries.json b/authentik/sources/ldap/tests/fixtures/ms_ad_2025/entries.json new file mode 100644 index 0000000000..7ff0a2bb66 --- /dev/null +++ b/authentik/sources/ldap/tests/fixtures/ms_ad_2025/entries.json @@ -0,0 +1,21716 @@ +{ + "entries": [ + { + "attributes": { + "auditingPolicy": "\u0000\u0001", + "creationTime": "2026-03-31 12:51:23.126764+00:00", + "dSASignature": { + "encoded": "AQAAACgAAAAAAAAAAAAAAAAAAAAAAAAA/O0fiiOl10y3omRuVKP1Jw==", + "encoding": "base64" + }, + "dSCorePropagationData": [ + "1601-01-01 00:00:00+00:00" + ], + "dc": "t", + "distinguishedName": "DC=t,DC=goauthentik,DC=io", + "fSMORoleOwner": "CN=NTDS Settings,CN=AK-DC,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "forceLogoff": -9223372036854775808, + "gPLink": "[LDAP://CN={31B2F340-016D-11D2-945F-00C04FB984F9},CN=Policies,CN=System,DC=t,DC=goauthentik,DC=io;0]", + "instanceType": 5, + "isCriticalSystemObject": true, + "lockOutObservationWindow": "0:10:00", + "lockoutDuration": "0:10:00", + "lockoutThreshold": 0, + "masteredBy": [ + "CN=NTDS Settings,CN=AK-DC,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "maxPwdAge": "42 days, 0:00:00", + "minPwdAge": "1 day, 0:00:00", + "minPwdLength": 7, + "modifiedCount": 1, + "modifiedCountAtLastProm": 0, + "ms-DS-MachineAccountQuota": 10, + "msDS-AllUsersTrustQuota": 1000, + "msDS-Behavior-Version": 10, + "msDS-ExpirePasswordsOnSmartCardOnlyAccounts": true, + "msDS-IsDomainFor": [ + "CN=NTDS Settings,CN=AK-DC,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "msDS-NcType": 0, + "msDS-PerUserTrustQuota": 1, + "msDS-PerUserTrustTombstonesQuota": 10, + "msDs-masteredBy": [ + "CN=NTDS Settings,CN=AK-DC,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "nTMixedDomain": 0, + "name": "t", + "nextRid": 1001, + "objectCategory": "CN=Domain-DNS,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "domain", + "domainDNS" + ], + "objectGUID": "{268e31bb-cb88-47f8-b9ce-5093cae4ecbd}", + "objectSid": "S-1-5-21-1955698215-2946288202-2760262721", + "otherWellKnownObjects": [ + "B:32:683A24E2E8164BD3AF86AC3C2CF3F981:CN=Keys,DC=t,DC=goauthentik,DC=io", + "B:32:1EB93889E40C45DF9F0C64D23BBB6237:CN=Managed Service Accounts,DC=t,DC=goauthentik,DC=io" + ], + "pwdHistoryLength": 24, + "pwdProperties": 1, + "rIDManagerReference": "CN=RID Manager$,CN=System,DC=t,DC=goauthentik,DC=io", + "serverState": 1, + "subRefs": [ + "DC=ForestDnsZones,DC=t,DC=goauthentik,DC=io", + "DC=DomainDnsZones,DC=t,DC=goauthentik,DC=io", + "CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "systemFlags": -1946157056, + "uASCompat": 0, + "uSNChanged": 20515, + "uSNCreated": 4099, + "wellKnownObjects": [ + "B:32:6227F0AF1FC2410D8E3BB10615BB5B0F:CN=NTDS Quotas,DC=t,DC=goauthentik,DC=io", + "B:32:F4BE92A4C777485E878E9421D53087DB:CN=Microsoft,CN=Program Data,DC=t,DC=goauthentik,DC=io", + "B:32:09460C08AE1E4A4EA0F64AEE7DAA1E5A:CN=Program Data,DC=t,DC=goauthentik,DC=io", + "B:32:22B70C67D56E4EFB91E9300FCA3DC1AA:CN=ForeignSecurityPrincipals,DC=t,DC=goauthentik,DC=io", + "B:32:18E2EA80684F11D2B9AA00C04F79F805:CN=Deleted Objects,DC=t,DC=goauthentik,DC=io", + "B:32:2FBAC1870ADE11D297C400C04FD8D5CD:CN=Infrastructure,DC=t,DC=goauthentik,DC=io", + "B:32:AB8153B7768811D1ADED00C04FD8D5CD:CN=LostAndFound,DC=t,DC=goauthentik,DC=io", + "B:32:AB1D30F3768811D1ADED00C04FD8D5CD:CN=System,DC=t,DC=goauthentik,DC=io", + "B:32:A361B2FFFFD211D1AA4B00C04FD7D83A:OU=Domain Controllers,DC=t,DC=goauthentik,DC=io", + "B:32:AA312825768811D1ADED00C04FD8D5CD:CN=Computers,DC=t,DC=goauthentik,DC=io", + "B:32:A9D1CA15768811D1ADED00C04FD8D5CD:CN=Users,DC=t,DC=goauthentik,DC=io" + ], + "whenChanged": "2026-03-31 14:25:53+00:00", + "whenCreated": "2026-03-31 12:04:57+00:00" + }, + "dn": "DC=t,DC=goauthentik,DC=io", + "raw": { + "auditingPolicy": [ + "\u0000\u0001" + ], + "creationTime": [ + "134194350831267651" + ], + "dSASignature": [ + { + "encoded": "AQAAACgAAAAAAAAAAAAAAAAAAAAAAAAA/O0fiiOl10y3omRuVKP1Jw==", + "encoding": "base64" + } + ], + "dSCorePropagationData": [ + "16010101000000.0Z" + ], + "dc": [ + "t" + ], + "distinguishedName": [ + "DC=t,DC=goauthentik,DC=io" + ], + "fSMORoleOwner": [ + "CN=NTDS Settings,CN=AK-DC,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "forceLogoff": [ + "-9223372036854775808" + ], + "gPLink": [ + "[LDAP://CN={31B2F340-016D-11D2-945F-00C04FB984F9},CN=Policies,CN=System,DC=t,DC=goauthentik,DC=io;0]" + ], + "instanceType": [ + "5" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "lockOutObservationWindow": [ + "-6000000000" + ], + "lockoutDuration": [ + "-6000000000" + ], + "lockoutThreshold": [ + "0" + ], + "masteredBy": [ + "CN=NTDS Settings,CN=AK-DC,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "maxPwdAge": [ + "-36288000000000" + ], + "minPwdAge": [ + "-864000000000" + ], + "minPwdLength": [ + "7" + ], + "modifiedCount": [ + "1" + ], + "modifiedCountAtLastProm": [ + "0" + ], + "ms-DS-MachineAccountQuota": [ + "10" + ], + "msDS-AllUsersTrustQuota": [ + "1000" + ], + "msDS-Behavior-Version": [ + "10" + ], + "msDS-ExpirePasswordsOnSmartCardOnlyAccounts": [ + "TRUE" + ], + "msDS-IsDomainFor": [ + "CN=NTDS Settings,CN=AK-DC,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "msDS-NcType": [ + "0" + ], + "msDS-PerUserTrustQuota": [ + "1" + ], + "msDS-PerUserTrustTombstonesQuota": [ + "10" + ], + "msDs-masteredBy": [ + "CN=NTDS Settings,CN=AK-DC,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "nTMixedDomain": [ + "0" + ], + "name": [ + "t" + ], + "nextRid": [ + "1001" + ], + "objectCategory": [ + "CN=Domain-DNS,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "domain", + "domainDNS" + ], + "objectGUID": [ + { + "encoded": "uzGOJojL+Ee5zlCTyuTsvQ==", + "encoding": "base64" + } + ], + "objectSid": [ + { + "encoded": "AQQAAAAAAAUVAAAAJ5aRdErKnK9BRIak", + "encoding": "base64" + } + ], + "otherWellKnownObjects": [ + "B:32:683A24E2E8164BD3AF86AC3C2CF3F981:CN=Keys,DC=t,DC=goauthentik,DC=io", + "B:32:1EB93889E40C45DF9F0C64D23BBB6237:CN=Managed Service Accounts,DC=t,DC=goauthentik,DC=io" + ], + "pwdHistoryLength": [ + "24" + ], + "pwdProperties": [ + "1" + ], + "rIDManagerReference": [ + "CN=RID Manager$,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "serverState": [ + "1" + ], + "subRefs": [ + "DC=ForestDnsZones,DC=t,DC=goauthentik,DC=io", + "DC=DomainDnsZones,DC=t,DC=goauthentik,DC=io", + "CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "systemFlags": [ + "-1946157056" + ], + "uASCompat": [ + "0" + ], + "uSNChanged": [ + "20515" + ], + "uSNCreated": [ + "4099" + ], + "wellKnownObjects": [ + "B:32:6227F0AF1FC2410D8E3BB10615BB5B0F:CN=NTDS Quotas,DC=t,DC=goauthentik,DC=io", + "B:32:F4BE92A4C777485E878E9421D53087DB:CN=Microsoft,CN=Program Data,DC=t,DC=goauthentik,DC=io", + "B:32:09460C08AE1E4A4EA0F64AEE7DAA1E5A:CN=Program Data,DC=t,DC=goauthentik,DC=io", + "B:32:22B70C67D56E4EFB91E9300FCA3DC1AA:CN=ForeignSecurityPrincipals,DC=t,DC=goauthentik,DC=io", + "B:32:18E2EA80684F11D2B9AA00C04F79F805:CN=Deleted Objects,DC=t,DC=goauthentik,DC=io", + "B:32:2FBAC1870ADE11D297C400C04FD8D5CD:CN=Infrastructure,DC=t,DC=goauthentik,DC=io", + "B:32:AB8153B7768811D1ADED00C04FD8D5CD:CN=LostAndFound,DC=t,DC=goauthentik,DC=io", + "B:32:AB1D30F3768811D1ADED00C04FD8D5CD:CN=System,DC=t,DC=goauthentik,DC=io", + "B:32:A361B2FFFFD211D1AA4B00C04FD7D83A:OU=Domain Controllers,DC=t,DC=goauthentik,DC=io", + "B:32:AA312825768811D1ADED00C04FD8D5CD:CN=Computers,DC=t,DC=goauthentik,DC=io", + "B:32:A9D1CA15768811D1ADED00C04FD8D5CD:CN=Users,DC=t,DC=goauthentik,DC=io" + ], + "whenChanged": [ + "20260331142553.0Z" + ], + "whenCreated": [ + "20260331120457.0Z" + ] + } + }, + { + "attributes": { + "cn": "Users", + "dSCorePropagationData": [ + "2026-03-31 14:25:53+00:00", + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:04:16+00:00" + ], + "description": [ + "Default container for upgraded user accounts" + ], + "distinguishedName": "CN=Users,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "isCriticalSystemObject": true, + "name": "Users", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{fcdfd33c-e465-4bc6-a02f-dd33f7238ed7}", + "showInAdvancedViewOnly": false, + "systemFlags": -1946157056, + "uSNChanged": 5672, + "uSNCreated": 5672, + "whenChanged": "2026-03-31 12:05:03+00:00", + "whenCreated": "2026-03-31 12:05:03+00:00" + }, + "dn": "CN=Users,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "Users" + ], + "dSCorePropagationData": [ + "20260331142553.0Z", + "20260331120814.0Z", + "16010101000416.0Z" + ], + "description": [ + "Default container for upgraded user accounts" + ], + "distinguishedName": [ + "CN=Users,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "Users" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "PNPf/GXkxkugL90z9yOO1w==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "FALSE" + ], + "systemFlags": [ + "-1946157056" + ], + "uSNChanged": [ + "5672" + ], + "uSNCreated": [ + "5672" + ], + "whenChanged": [ + "20260331120503.0Z" + ], + "whenCreated": [ + "20260331120503.0Z" + ] + } + }, + { + "attributes": { + "cn": "Computers", + "dSCorePropagationData": [ + "2026-03-31 14:25:53+00:00", + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:04:16+00:00" + ], + "description": [ + "Default container for upgraded computer accounts" + ], + "distinguishedName": "CN=Computers,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "isCriticalSystemObject": true, + "name": "Computers", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{c1bf1ed2-02b2-4fcf-a10e-c6391f594315}", + "showInAdvancedViewOnly": false, + "systemFlags": -1946157056, + "uSNChanged": 5673, + "uSNCreated": 5673, + "whenChanged": "2026-03-31 12:05:03+00:00", + "whenCreated": "2026-03-31 12:05:03+00:00" + }, + "dn": "CN=Computers,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "Computers" + ], + "dSCorePropagationData": [ + "20260331142553.0Z", + "20260331120814.0Z", + "16010101000416.0Z" + ], + "description": [ + "Default container for upgraded computer accounts" + ], + "distinguishedName": [ + "CN=Computers,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "Computers" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "0h6/wbICz0+hDsY5H1lDFQ==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "FALSE" + ], + "systemFlags": [ + "-1946157056" + ], + "uSNChanged": [ + "5673" + ], + "uSNCreated": [ + "5673" + ], + "whenChanged": [ + "20260331120503.0Z" + ], + "whenCreated": [ + "20260331120503.0Z" + ] + } + }, + { + "attributes": { + "dSCorePropagationData": [ + "2026-03-31 14:25:53+00:00", + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:04:16+00:00" + ], + "description": [ + "Default container for domain controllers" + ], + "distinguishedName": "OU=Domain Controllers,DC=t,DC=goauthentik,DC=io", + "gPLink": "[LDAP://CN={6AC1786C-016F-11D2-945F-00C04fB984F9},CN=Policies,CN=System,DC=t,DC=goauthentik,DC=io;0]", + "instanceType": 4, + "isCriticalSystemObject": true, + "name": "Domain Controllers", + "objectCategory": "CN=Organizational-Unit,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "organizationalUnit" + ], + "objectGUID": "{193553be-3303-4e91-958b-9d3c15f70f2c}", + "ou": [ + "Domain Controllers" + ], + "showInAdvancedViewOnly": false, + "systemFlags": -1946157056, + "uSNChanged": 5816, + "uSNCreated": 5816, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "OU=Domain Controllers,DC=t,DC=goauthentik,DC=io", + "raw": { + "dSCorePropagationData": [ + "20260331142553.0Z", + "20260331120814.0Z", + "16010101000416.0Z" + ], + "description": [ + "Default container for domain controllers" + ], + "distinguishedName": [ + "OU=Domain Controllers,DC=t,DC=goauthentik,DC=io" + ], + "gPLink": [ + "[LDAP://CN={6AC1786C-016F-11D2-945F-00C04fB984F9},CN=Policies,CN=System,DC=t,DC=goauthentik,DC=io;0]" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "Domain Controllers" + ], + "objectCategory": [ + "CN=Organizational-Unit,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "organizationalUnit" + ], + "objectGUID": [ + { + "encoded": "vlM1GQMzkU6Vi508FfcPLA==", + "encoding": "base64" + } + ], + "ou": [ + "Domain Controllers" + ], + "showInAdvancedViewOnly": [ + "FALSE" + ], + "systemFlags": [ + "-1946157056" + ], + "uSNChanged": [ + "5816" + ], + "uSNCreated": [ + "5816" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "System", + "dSCorePropagationData": [ + "2026-03-31 14:25:53+00:00", + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:04:16+00:00" + ], + "description": [ + "Builtin system settings" + ], + "distinguishedName": "CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "isCriticalSystemObject": true, + "name": "System", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{7509a38a-cacb-4b9b-a646-f8943db91402}", + "showInAdvancedViewOnly": true, + "systemFlags": -1946157056, + "uSNChanged": 5674, + "uSNCreated": 5674, + "whenChanged": "2026-03-31 12:05:03+00:00", + "whenCreated": "2026-03-31 12:05:03+00:00" + }, + "dn": "CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "System" + ], + "dSCorePropagationData": [ + "20260331142553.0Z", + "20260331120814.0Z", + "16010101000416.0Z" + ], + "description": [ + "Builtin system settings" + ], + "distinguishedName": [ + "CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "System" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "iqMJdcvKm0umRviUPbkUAg==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "systemFlags": [ + "-1946157056" + ], + "uSNChanged": [ + "5674" + ], + "uSNCreated": [ + "5674" + ], + "whenChanged": [ + "20260331120503.0Z" + ], + "whenCreated": [ + "20260331120503.0Z" + ] + } + }, + { + "attributes": { + "cn": "LostAndFound", + "dSCorePropagationData": [ + "2026-03-31 14:25:53+00:00", + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:04:16+00:00" + ], + "description": [ + "Default container for orphaned objects" + ], + "distinguishedName": "CN=LostAndFound,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "isCriticalSystemObject": true, + "name": "LostAndFound", + "objectCategory": "CN=Lost-And-Found,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "lostAndFound" + ], + "objectGUID": "{ced3fbb8-87fa-4e06-8258-a73ab16493bf}", + "showInAdvancedViewOnly": true, + "systemFlags": -1946157056, + "uSNChanged": 5670, + "uSNCreated": 5670, + "whenChanged": "2026-03-31 12:05:03+00:00", + "whenCreated": "2026-03-31 12:05:03+00:00" + }, + "dn": "CN=LostAndFound,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "LostAndFound" + ], + "dSCorePropagationData": [ + "20260331142553.0Z", + "20260331120814.0Z", + "16010101000416.0Z" + ], + "description": [ + "Default container for orphaned objects" + ], + "distinguishedName": [ + "CN=LostAndFound,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "LostAndFound" + ], + "objectCategory": [ + "CN=Lost-And-Found,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "lostAndFound" + ], + "objectGUID": [ + { + "encoded": "uPvTzvqHBk6CWKc6sWSTvw==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "systemFlags": [ + "-1946157056" + ], + "uSNChanged": [ + "5670" + ], + "uSNCreated": [ + "5670" + ], + "whenChanged": [ + "20260331120503.0Z" + ], + "whenCreated": [ + "20260331120503.0Z" + ] + } + }, + { + "attributes": { + "cn": "Infrastructure", + "dSCorePropagationData": [ + "2026-03-31 14:25:53+00:00", + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:04:16+00:00" + ], + "distinguishedName": "CN=Infrastructure,DC=t,DC=goauthentik,DC=io", + "fSMORoleOwner": "CN=NTDS Settings,CN=AK-DC,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "isCriticalSystemObject": true, + "name": "Infrastructure", + "objectCategory": "CN=Infrastructure-Update,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "infrastructureUpdate" + ], + "objectGUID": "{4c395e72-36c6-4bca-9652-d927fdcb2bee}", + "showInAdvancedViewOnly": true, + "systemFlags": -1946157056, + "uSNChanged": 5817, + "uSNCreated": 5817, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=Infrastructure,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "Infrastructure" + ], + "dSCorePropagationData": [ + "20260331142553.0Z", + "20260331120814.0Z", + "16010101000416.0Z" + ], + "distinguishedName": [ + "CN=Infrastructure,DC=t,DC=goauthentik,DC=io" + ], + "fSMORoleOwner": [ + "CN=NTDS Settings,CN=AK-DC,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "Infrastructure" + ], + "objectCategory": [ + "CN=Infrastructure-Update,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "infrastructureUpdate" + ], + "objectGUID": [ + { + "encoded": "cl45TMY2ykuWUtkn/csr7g==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "systemFlags": [ + "-1946157056" + ], + "uSNChanged": [ + "5817" + ], + "uSNCreated": [ + "5817" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "ForeignSecurityPrincipals", + "dSCorePropagationData": [ + "2026-03-31 14:25:53+00:00", + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:04:16+00:00" + ], + "description": [ + "Default container for security identifiers (SIDs) associated with objects from external, trusted domains" + ], + "distinguishedName": "CN=ForeignSecurityPrincipals,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "isCriticalSystemObject": true, + "name": "ForeignSecurityPrincipals", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{46adfe49-d2a5-40ad-ad1e-d95c7291249d}", + "showInAdvancedViewOnly": false, + "systemFlags": -1946157056, + "uSNChanged": 5818, + "uSNCreated": 5818, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=ForeignSecurityPrincipals,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "ForeignSecurityPrincipals" + ], + "dSCorePropagationData": [ + "20260331142553.0Z", + "20260331120814.0Z", + "16010101000416.0Z" + ], + "description": [ + "Default container for security identifiers (SIDs) associated with objects from external, trusted domains" + ], + "distinguishedName": [ + "CN=ForeignSecurityPrincipals,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "ForeignSecurityPrincipals" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "Sf6tRqXSrUCtHtlccpEknQ==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "FALSE" + ], + "systemFlags": [ + "-1946157056" + ], + "uSNChanged": [ + "5818" + ], + "uSNCreated": [ + "5818" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "Program Data", + "dSCorePropagationData": [ + "2026-03-31 14:25:53+00:00", + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:04:16+00:00" + ], + "description": [ + "Default location for storage of application data." + ], + "distinguishedName": "CN=Program Data,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "Program Data", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{e65bc73e-d57e-40f0-bdf4-95f11b12ec6f}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5819, + "uSNCreated": 5819, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=Program Data,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "Program Data" + ], + "dSCorePropagationData": [ + "20260331142553.0Z", + "20260331120814.0Z", + "16010101000416.0Z" + ], + "description": [ + "Default location for storage of application data." + ], + "distinguishedName": [ + "CN=Program Data,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "Program Data" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "Psdb5n7V8EC99JXxGxLsbw==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5819" + ], + "uSNCreated": [ + "5819" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "Microsoft", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "description": [ + "Default location for storage of Microsoft application data." + ], + "distinguishedName": "CN=Microsoft,CN=Program Data,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "Microsoft", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{581d1719-e588-48ce-ae84-a0a83f62e961}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5820, + "uSNCreated": 5820, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=Microsoft,CN=Program Data,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "Microsoft" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "description": [ + "Default location for storage of Microsoft application data." + ], + "distinguishedName": [ + "CN=Microsoft,CN=Program Data,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "Microsoft" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "GRcdWIjlzkiuhKCoP2LpYQ==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5820" + ], + "uSNCreated": [ + "5820" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "NTDS Quotas", + "dSCorePropagationData": [ + "2026-03-31 14:25:53+00:00", + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:04:16+00:00" + ], + "description": [ + "Quota specifications container" + ], + "distinguishedName": "CN=NTDS Quotas,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "isCriticalSystemObject": true, + "msDS-TombstoneQuotaFactor": 100, + "name": "NTDS Quotas", + "objectCategory": "CN=ms-DS-Quota-Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "msDS-QuotaContainer" + ], + "objectGUID": "{79120bb7-b23c-48ed-8134-fdd55ba54cee}", + "showInAdvancedViewOnly": true, + "systemFlags": -2147483648, + "uSNChanged": 5821, + "uSNCreated": 5821, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=NTDS Quotas,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "NTDS Quotas" + ], + "dSCorePropagationData": [ + "20260331142553.0Z", + "20260331120814.0Z", + "16010101000416.0Z" + ], + "description": [ + "Quota specifications container" + ], + "distinguishedName": [ + "CN=NTDS Quotas,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "msDS-TombstoneQuotaFactor": [ + "100" + ], + "name": [ + "NTDS Quotas" + ], + "objectCategory": [ + "CN=ms-DS-Quota-Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "msDS-QuotaContainer" + ], + "objectGUID": [ + { + "encoded": "twsSeTyy7UiBNP3VW6VM7g==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "systemFlags": [ + "-2147483648" + ], + "uSNChanged": [ + "5821" + ], + "uSNCreated": [ + "5821" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "Managed Service Accounts", + "dSCorePropagationData": [ + "2026-03-31 14:25:53+00:00", + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:04:16+00:00" + ], + "description": [ + "Default container for managed service accounts" + ], + "distinguishedName": "CN=Managed Service Accounts,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "Managed Service Accounts", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{b244a2b3-ecf3-46ff-a937-b9131719b1c0}", + "showInAdvancedViewOnly": false, + "uSNChanged": 5822, + "uSNCreated": 5822, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=Managed Service Accounts,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "Managed Service Accounts" + ], + "dSCorePropagationData": [ + "20260331142553.0Z", + "20260331120814.0Z", + "16010101000416.0Z" + ], + "description": [ + "Default container for managed service accounts" + ], + "distinguishedName": [ + "CN=Managed Service Accounts,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "Managed Service Accounts" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "s6JEsvPs/0apN7kTFxmxwA==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "FALSE" + ], + "uSNChanged": [ + "5822" + ], + "uSNCreated": [ + "5822" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "Keys", + "dSCorePropagationData": [ + "2026-03-31 14:25:53+00:00", + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:00+00:00" + ], + "description": [ + "Default container for key objects" + ], + "distinguishedName": "CN=Keys,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "Keys", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{ef334309-9e1c-4035-b695-b8859fa71fe1}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5824, + "uSNCreated": 5824, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=Keys,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "Keys" + ], + "dSCorePropagationData": [ + "20260331142553.0Z", + "20260331120814.0Z", + "16010101000000.0Z" + ], + "description": [ + "Default container for key objects" + ], + "distinguishedName": [ + "CN=Keys,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "Keys" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "CUMz7xyeNUC2lbiFn6cf4Q==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5824" + ], + "uSNCreated": [ + "5824" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "WinsockServices", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=WinsockServices,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "isCriticalSystemObject": true, + "name": "WinsockServices", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{eed6de46-c95d-4ba8-aa1f-9c270d0303e8}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5675, + "uSNCreated": 5675, + "whenChanged": "2026-03-31 12:05:03+00:00", + "whenCreated": "2026-03-31 12:05:03+00:00" + }, + "dn": "CN=WinsockServices,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "WinsockServices" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=WinsockServices,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "WinsockServices" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "Rt7W7l3JqEuqH5wnDQMD6A==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5675" + ], + "uSNCreated": [ + "5675" + ], + "whenChanged": [ + "20260331120503.0Z" + ], + "whenCreated": [ + "20260331120503.0Z" + ] + } + }, + { + "attributes": { + "cn": "RpcServices", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=RpcServices,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "isCriticalSystemObject": true, + "name": "RpcServices", + "objectCategory": "CN=Rpc-Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container", + "rpcContainer" + ], + "objectGUID": "{f2333b25-50e0-42fc-a5c1-c77da936fdec}", + "showInAdvancedViewOnly": true, + "systemFlags": -1946157056, + "uSNChanged": 5676, + "uSNCreated": 5676, + "whenChanged": "2026-03-31 12:05:03+00:00", + "whenCreated": "2026-03-31 12:05:03+00:00" + }, + "dn": "CN=RpcServices,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "RpcServices" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=RpcServices,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "RpcServices" + ], + "objectCategory": [ + "CN=Rpc-Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container", + "rpcContainer" + ], + "objectGUID": [ + { + "encoded": "JTsz8uBQ/EKlwcd9qTb97A==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "systemFlags": [ + "-1946157056" + ], + "uSNChanged": [ + "5676" + ], + "uSNCreated": [ + "5676" + ], + "whenChanged": [ + "20260331120503.0Z" + ], + "whenCreated": [ + "20260331120503.0Z" + ] + } + }, + { + "attributes": { + "cn": "FileLinks", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=FileLinks,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "isCriticalSystemObject": true, + "name": "FileLinks", + "objectCategory": "CN=File-Link-Tracking,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "fileLinkTracking" + ], + "objectGUID": "{5c3be452-1b00-48e4-892d-e9350874812a}", + "showInAdvancedViewOnly": true, + "systemFlags": -1946157056, + "uSNChanged": 5677, + "uSNCreated": 5677, + "whenChanged": "2026-03-31 12:05:03+00:00", + "whenCreated": "2026-03-31 12:05:03+00:00" + }, + "dn": "CN=FileLinks,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "FileLinks" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=FileLinks,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "FileLinks" + ], + "objectCategory": [ + "CN=File-Link-Tracking,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "fileLinkTracking" + ], + "objectGUID": [ + { + "encoded": "UuQ7XAAb5EiJLek1CHSBKg==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "systemFlags": [ + "-1946157056" + ], + "uSNChanged": [ + "5677" + ], + "uSNCreated": [ + "5677" + ], + "whenChanged": [ + "20260331120503.0Z" + ], + "whenCreated": [ + "20260331120503.0Z" + ] + } + }, + { + "attributes": { + "cn": "VolumeTable", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:00+00:00" + ], + "distinguishedName": "CN=VolumeTable,CN=FileLinks,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "isCriticalSystemObject": true, + "name": "VolumeTable", + "objectCategory": "CN=Link-Track-Volume-Table,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "fileLinkTracking", + "linkTrackVolumeTable" + ], + "objectGUID": "{bd584a7b-c5eb-4855-bd39-93ee8561021a}", + "showInAdvancedViewOnly": true, + "systemFlags": -1946157056, + "uSNChanged": 5678, + "uSNCreated": 5678, + "whenChanged": "2026-03-31 12:05:03+00:00", + "whenCreated": "2026-03-31 12:05:03+00:00" + }, + "dn": "CN=VolumeTable,CN=FileLinks,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "VolumeTable" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000000.0Z" + ], + "distinguishedName": [ + "CN=VolumeTable,CN=FileLinks,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "VolumeTable" + ], + "objectCategory": [ + "CN=Link-Track-Volume-Table,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "fileLinkTracking", + "linkTrackVolumeTable" + ], + "objectGUID": [ + { + "encoded": "e0pYvevFVUi9OZPuhWECGg==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "systemFlags": [ + "-1946157056" + ], + "uSNChanged": [ + "5678" + ], + "uSNCreated": [ + "5678" + ], + "whenChanged": [ + "20260331120503.0Z" + ], + "whenCreated": [ + "20260331120503.0Z" + ] + } + }, + { + "attributes": { + "cn": "ObjectMoveTable", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=ObjectMoveTable,CN=FileLinks,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "isCriticalSystemObject": true, + "name": "ObjectMoveTable", + "objectCategory": "CN=Link-Track-Object-Move-Table,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "fileLinkTracking", + "linkTrackObjectMoveTable" + ], + "objectGUID": "{b4f531ff-c626-4f60-8db3-4e98729eb60c}", + "showInAdvancedViewOnly": true, + "systemFlags": -1946157056, + "uSNChanged": 5679, + "uSNCreated": 5679, + "whenChanged": "2026-03-31 12:05:03+00:00", + "whenCreated": "2026-03-31 12:05:03+00:00" + }, + "dn": "CN=ObjectMoveTable,CN=FileLinks,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "ObjectMoveTable" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=ObjectMoveTable,CN=FileLinks,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "ObjectMoveTable" + ], + "objectCategory": [ + "CN=Link-Track-Object-Move-Table,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "fileLinkTracking", + "linkTrackObjectMoveTable" + ], + "objectGUID": [ + { + "encoded": "/zH1tCbGYE+Ns06Ycp62DA==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "systemFlags": [ + "-1946157056" + ], + "uSNChanged": [ + "5679" + ], + "uSNCreated": [ + "5679" + ], + "whenChanged": [ + "20260331120503.0Z" + ], + "whenCreated": [ + "20260331120503.0Z" + ] + } + }, + { + "attributes": { + "cn": "Default Domain Policy", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=Default Domain Policy,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "isCriticalSystemObject": true, + "name": "Default Domain Policy", + "objectCategory": "CN=Domain-Policy,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "leaf", + "domainPolicy" + ], + "objectGUID": "{cfa30761-0ead-41fc-baa6-e1c03daebe2e}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5680, + "uSNCreated": 5680, + "whenChanged": "2026-03-31 12:05:03+00:00", + "whenCreated": "2026-03-31 12:05:03+00:00" + }, + "dn": "CN=Default Domain Policy,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "Default Domain Policy" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=Default Domain Policy,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "Default Domain Policy" + ], + "objectCategory": [ + "CN=Domain-Policy,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "leaf", + "domainPolicy" + ], + "objectGUID": [ + { + "encoded": "YQejz60O/EG6puHAPa6+Lg==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5680" + ], + "uSNCreated": [ + "5680" + ], + "whenChanged": [ + "20260331120503.0Z" + ], + "whenCreated": [ + "20260331120503.0Z" + ] + } + }, + { + "attributes": { + "cn": "AppCategories", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=AppCategories,CN=Default Domain Policy,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "isCriticalSystemObject": true, + "name": "AppCategories", + "objectCategory": "CN=Class-Store,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "classStore" + ], + "objectGUID": "{9210b1fd-c4ea-4afd-9e18-9a3086c48109}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5681, + "uSNCreated": 5681, + "whenChanged": "2026-03-31 12:05:03+00:00", + "whenCreated": "2026-03-31 12:05:03+00:00" + }, + "dn": "CN=AppCategories,CN=Default Domain Policy,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "AppCategories" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=AppCategories,CN=Default Domain Policy,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "AppCategories" + ], + "objectCategory": [ + "CN=Class-Store,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "classStore" + ], + "objectGUID": [ + { + "encoded": "/bEQkurE/UqeGJowhsSBCQ==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5681" + ], + "uSNCreated": [ + "5681" + ], + "whenChanged": [ + "20260331120503.0Z" + ], + "whenCreated": [ + "20260331120503.0Z" + ] + } + }, + { + "attributes": { + "cn": "Meetings", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=Meetings,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "isCriticalSystemObject": true, + "name": "Meetings", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{23e1c5d7-d396-4b71-b2cf-dc9064e35ede}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5682, + "uSNCreated": 5682, + "whenChanged": "2026-03-31 12:05:03+00:00", + "whenCreated": "2026-03-31 12:05:03+00:00" + }, + "dn": "CN=Meetings,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "Meetings" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=Meetings,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "Meetings" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "18XhI5bTcUuyz9yQZONe3g==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5682" + ], + "uSNCreated": [ + "5682" + ], + "whenChanged": [ + "20260331120503.0Z" + ], + "whenCreated": [ + "20260331120503.0Z" + ] + } + }, + { + "attributes": { + "cn": "Policies", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=Policies,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "isCriticalSystemObject": true, + "name": "Policies", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{0b8ebb17-0f73-42ec-a65d-2534cae4dfcf}", + "showInAdvancedViewOnly": true, + "systemFlags": -1946157056, + "uSNChanged": 5683, + "uSNCreated": 5683, + "whenChanged": "2026-03-31 12:05:03+00:00", + "whenCreated": "2026-03-31 12:05:03+00:00" + }, + "dn": "CN=Policies,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "Policies" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=Policies,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "Policies" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "F7uOC3MP7EKmXSU0yuTfzw==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "systemFlags": [ + "-1946157056" + ], + "uSNChanged": [ + "5683" + ], + "uSNCreated": [ + "5683" + ], + "whenChanged": [ + "20260331120503.0Z" + ], + "whenCreated": [ + "20260331120503.0Z" + ] + } + }, + { + "attributes": { + "cn": "{31B2F340-016D-11D2-945F-00C04FB984F9}", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:00+00:00" + ], + "displayName": "Default Domain Policy", + "distinguishedName": "CN={31B2F340-016D-11D2-945F-00C04FB984F9},CN=Policies,CN=System,DC=t,DC=goauthentik,DC=io", + "flags": 0, + "gPCFileSysPath": "\\\\t.goauthentik.io\\sysvol\\t.goauthentik.io\\Policies\\{31B2F340-016D-11D2-945F-00C04FB984F9}", + "gPCFunctionalityVersion": 2, + "gPCMachineExtensionNames": "[{35378EAC-683F-11D2-A89A-00C04FBBCFA2}{53D6AB1B-2488-11D1-A28C-00C04FB94F17}][{827D319E-6EAC-11D2-A4EA-00C04F79F83A}{803E14A0-B4FB-11D0-A0D0-00A0C90F574B}][{B1BE8D72-6EAC-11D2-A4EA-00C04F79F83A}{53D6AB1B-2488-11D1-A28C-00C04FB94F17}]", + "instanceType": 4, + "isCriticalSystemObject": true, + "name": "{31B2F340-016D-11D2-945F-00C04FB984F9}", + "objectCategory": "CN=Group-Policy-Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container", + "groupPolicyContainer" + ], + "objectGUID": "{991935e0-10ac-458b-b06b-f244a4759ce1}", + "showInAdvancedViewOnly": true, + "systemFlags": -1946157056, + "uSNChanged": 16423, + "uSNCreated": 5684, + "versionNumber": 5, + "whenChanged": "2026-03-31 12:50:27+00:00", + "whenCreated": "2026-03-31 12:05:03+00:00" + }, + "dn": "CN={31B2F340-016D-11D2-945F-00C04FB984F9},CN=Policies,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "{31B2F340-016D-11D2-945F-00C04FB984F9}" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000000.0Z" + ], + "displayName": [ + "Default Domain Policy" + ], + "distinguishedName": [ + "CN={31B2F340-016D-11D2-945F-00C04FB984F9},CN=Policies,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "flags": [ + "0" + ], + "gPCFileSysPath": [ + "\\\\t.goauthentik.io\\sysvol\\t.goauthentik.io\\Policies\\{31B2F340-016D-11D2-945F-00C04FB984F9}" + ], + "gPCFunctionalityVersion": [ + "2" + ], + "gPCMachineExtensionNames": [ + "[{35378EAC-683F-11D2-A89A-00C04FBBCFA2}{53D6AB1B-2488-11D1-A28C-00C04FB94F17}][{827D319E-6EAC-11D2-A4EA-00C04F79F83A}{803E14A0-B4FB-11D0-A0D0-00A0C90F574B}][{B1BE8D72-6EAC-11D2-A4EA-00C04F79F83A}{53D6AB1B-2488-11D1-A28C-00C04FB94F17}]" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "{31B2F340-016D-11D2-945F-00C04FB984F9}" + ], + "objectCategory": [ + "CN=Group-Policy-Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container", + "groupPolicyContainer" + ], + "objectGUID": [ + { + "encoded": "4DUZmawQi0Wwa/JEpHWc4Q==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "systemFlags": [ + "-1946157056" + ], + "uSNChanged": [ + "16423" + ], + "uSNCreated": [ + "5684" + ], + "versionNumber": [ + "5" + ], + "whenChanged": [ + "20260331125027.0Z" + ], + "whenCreated": [ + "20260331120503.0Z" + ] + } + }, + { + "attributes": { + "cn": "User", + "dSCorePropagationData": [ + "1601-01-01 00:00:00+00:00" + ], + "distinguishedName": "CN=User,CN={31B2F340-016D-11D2-945F-00C04FB984F9},CN=Policies,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "isCriticalSystemObject": true, + "name": "User", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{80c2cb4f-6d35-47a7-82fb-fdb8d1340c8f}", + "showInAdvancedViewOnly": true, + "systemFlags": -1946157056, + "uSNChanged": 5685, + "uSNCreated": 5685, + "whenChanged": "2026-03-31 12:05:03+00:00", + "whenCreated": "2026-03-31 12:05:03+00:00" + }, + "dn": "CN=User,CN={31B2F340-016D-11D2-945F-00C04FB984F9},CN=Policies,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "User" + ], + "dSCorePropagationData": [ + "16010101000000.0Z" + ], + "distinguishedName": [ + "CN=User,CN={31B2F340-016D-11D2-945F-00C04FB984F9},CN=Policies,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "User" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "T8vCgDVtp0eC+/240TQMjw==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "systemFlags": [ + "-1946157056" + ], + "uSNChanged": [ + "5685" + ], + "uSNCreated": [ + "5685" + ], + "whenChanged": [ + "20260331120503.0Z" + ], + "whenCreated": [ + "20260331120503.0Z" + ] + } + }, + { + "attributes": { + "cn": "Machine", + "dSCorePropagationData": [ + "1601-01-01 00:00:00+00:00" + ], + "distinguishedName": "CN=Machine,CN={31B2F340-016D-11D2-945F-00C04FB984F9},CN=Policies,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "isCriticalSystemObject": true, + "name": "Machine", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{43ea1523-ddd2-427e-869a-dbe0b0a60074}", + "showInAdvancedViewOnly": true, + "systemFlags": -1946157056, + "uSNChanged": 5686, + "uSNCreated": 5686, + "whenChanged": "2026-03-31 12:05:03+00:00", + "whenCreated": "2026-03-31 12:05:03+00:00" + }, + "dn": "CN=Machine,CN={31B2F340-016D-11D2-945F-00C04FB984F9},CN=Policies,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "Machine" + ], + "dSCorePropagationData": [ + "16010101000000.0Z" + ], + "distinguishedName": [ + "CN=Machine,CN={31B2F340-016D-11D2-945F-00C04FB984F9},CN=Policies,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "Machine" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "IxXqQ9LdfkKGmtvgsKYAdA==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "systemFlags": [ + "-1946157056" + ], + "uSNChanged": [ + "5686" + ], + "uSNCreated": [ + "5686" + ], + "whenChanged": [ + "20260331120503.0Z" + ], + "whenCreated": [ + "20260331120503.0Z" + ] + } + }, + { + "attributes": { + "cn": "{6AC1786C-016F-11D2-945F-00C04fB984F9}", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:00+00:00" + ], + "displayName": "Default Domain Controllers Policy", + "distinguishedName": "CN={6AC1786C-016F-11D2-945F-00C04fB984F9},CN=Policies,CN=System,DC=t,DC=goauthentik,DC=io", + "flags": 0, + "gPCFileSysPath": "\\\\t.goauthentik.io\\sysvol\\t.goauthentik.io\\Policies\\{6AC1786C-016F-11D2-945F-00C04fB984F9}", + "gPCFunctionalityVersion": 2, + "gPCMachineExtensionNames": "[{827D319E-6EAC-11D2-A4EA-00C04F79F83A}{803E14A0-B4FB-11D0-A0D0-00A0C90F574B}]", + "instanceType": 4, + "isCriticalSystemObject": true, + "name": "{6AC1786C-016F-11D2-945F-00C04fB984F9}", + "objectCategory": "CN=Group-Policy-Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container", + "groupPolicyContainer" + ], + "objectGUID": "{8a821b86-c0bb-4d59-a360-52688dc410b8}", + "showInAdvancedViewOnly": true, + "systemFlags": -1946157056, + "uSNChanged": 16419, + "uSNCreated": 5687, + "versionNumber": 2, + "whenChanged": "2026-03-31 12:49:10+00:00", + "whenCreated": "2026-03-31 12:05:03+00:00" + }, + "dn": "CN={6AC1786C-016F-11D2-945F-00C04fB984F9},CN=Policies,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "{6AC1786C-016F-11D2-945F-00C04fB984F9}" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000000.0Z" + ], + "displayName": [ + "Default Domain Controllers Policy" + ], + "distinguishedName": [ + "CN={6AC1786C-016F-11D2-945F-00C04fB984F9},CN=Policies,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "flags": [ + "0" + ], + "gPCFileSysPath": [ + "\\\\t.goauthentik.io\\sysvol\\t.goauthentik.io\\Policies\\{6AC1786C-016F-11D2-945F-00C04fB984F9}" + ], + "gPCFunctionalityVersion": [ + "2" + ], + "gPCMachineExtensionNames": [ + "[{827D319E-6EAC-11D2-A4EA-00C04F79F83A}{803E14A0-B4FB-11D0-A0D0-00A0C90F574B}]" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "{6AC1786C-016F-11D2-945F-00C04fB984F9}" + ], + "objectCategory": [ + "CN=Group-Policy-Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container", + "groupPolicyContainer" + ], + "objectGUID": [ + { + "encoded": "hhuCirvAWU2jYFJojcQQuA==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "systemFlags": [ + "-1946157056" + ], + "uSNChanged": [ + "16419" + ], + "uSNCreated": [ + "5687" + ], + "versionNumber": [ + "2" + ], + "whenChanged": [ + "20260331124910.0Z" + ], + "whenCreated": [ + "20260331120503.0Z" + ] + } + }, + { + "attributes": { + "cn": "User", + "dSCorePropagationData": [ + "1601-01-01 00:00:00+00:00" + ], + "distinguishedName": "CN=User,CN={6AC1786C-016F-11D2-945F-00C04fB984F9},CN=Policies,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "isCriticalSystemObject": true, + "name": "User", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{56df49ad-1f93-42ab-aea1-940304ae7a79}", + "showInAdvancedViewOnly": true, + "systemFlags": -1946157056, + "uSNChanged": 5688, + "uSNCreated": 5688, + "whenChanged": "2026-03-31 12:05:03+00:00", + "whenCreated": "2026-03-31 12:05:03+00:00" + }, + "dn": "CN=User,CN={6AC1786C-016F-11D2-945F-00C04fB984F9},CN=Policies,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "User" + ], + "dSCorePropagationData": [ + "16010101000000.0Z" + ], + "distinguishedName": [ + "CN=User,CN={6AC1786C-016F-11D2-945F-00C04fB984F9},CN=Policies,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "User" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "rUnfVpMfq0KuoZQDBK56eQ==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "systemFlags": [ + "-1946157056" + ], + "uSNChanged": [ + "5688" + ], + "uSNCreated": [ + "5688" + ], + "whenChanged": [ + "20260331120503.0Z" + ], + "whenCreated": [ + "20260331120503.0Z" + ] + } + }, + { + "attributes": { + "cn": "Machine", + "dSCorePropagationData": [ + "1601-01-01 00:00:00+00:00" + ], + "distinguishedName": "CN=Machine,CN={6AC1786C-016F-11D2-945F-00C04fB984F9},CN=Policies,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "isCriticalSystemObject": true, + "name": "Machine", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{ce3ab68a-9044-4589-8c5a-3cd8ab80905c}", + "showInAdvancedViewOnly": true, + "systemFlags": -1946157056, + "uSNChanged": 5689, + "uSNCreated": 5689, + "whenChanged": "2026-03-31 12:05:03+00:00", + "whenCreated": "2026-03-31 12:05:03+00:00" + }, + "dn": "CN=Machine,CN={6AC1786C-016F-11D2-945F-00C04fB984F9},CN=Policies,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "Machine" + ], + "dSCorePropagationData": [ + "16010101000000.0Z" + ], + "distinguishedName": [ + "CN=Machine,CN={6AC1786C-016F-11D2-945F-00C04fB984F9},CN=Policies,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "Machine" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "irY6zkSQiUWMWjzYq4CQXA==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "systemFlags": [ + "-1946157056" + ], + "uSNChanged": [ + "5689" + ], + "uSNCreated": [ + "5689" + ], + "whenChanged": [ + "20260331120503.0Z" + ], + "whenCreated": [ + "20260331120503.0Z" + ] + } + }, + { + "attributes": { + "cn": "RAS and IAS Servers Access Check", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=RAS and IAS Servers Access Check,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "isCriticalSystemObject": true, + "name": "RAS and IAS Servers Access Check", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{98de756e-4853-46c1-93d6-54432b22373b}", + "showInAdvancedViewOnly": true, + "systemFlags": -1946157056, + "uSNChanged": 5690, + "uSNCreated": 5690, + "whenChanged": "2026-03-31 12:05:03+00:00", + "whenCreated": "2026-03-31 12:05:03+00:00" + }, + "dn": "CN=RAS and IAS Servers Access Check,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "RAS and IAS Servers Access Check" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=RAS and IAS Servers Access Check,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "RAS and IAS Servers Access Check" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "bnXemFNIwUaT1lRDKyI3Ow==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "systemFlags": [ + "-1946157056" + ], + "uSNChanged": [ + "5690" + ], + "uSNCreated": [ + "5690" + ], + "whenChanged": [ + "20260331120503.0Z" + ], + "whenCreated": [ + "20260331120503.0Z" + ] + } + }, + { + "attributes": { + "cn": "File Replication Service", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=File Replication Service,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "isCriticalSystemObject": true, + "name": "File Replication Service", + "objectCategory": "CN=NTFRS-Settings,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "applicationSettings", + "nTFRSSettings" + ], + "objectGUID": "{07031b89-781a-4e69-82b4-a73b5fe49833}", + "showInAdvancedViewOnly": true, + "systemFlags": -1946157056, + "uSNChanged": 5691, + "uSNCreated": 5691, + "whenChanged": "2026-03-31 12:05:03+00:00", + "whenCreated": "2026-03-31 12:05:03+00:00" + }, + "dn": "CN=File Replication Service,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "File Replication Service" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=File Replication Service,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "File Replication Service" + ], + "objectCategory": [ + "CN=NTFRS-Settings,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "applicationSettings", + "nTFRSSettings" + ], + "objectGUID": [ + { + "encoded": "iRsDBxp4aU6CtKc7X+SYMw==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "systemFlags": [ + "-1946157056" + ], + "uSNChanged": [ + "5691" + ], + "uSNCreated": [ + "5691" + ], + "whenChanged": [ + "20260331120503.0Z" + ], + "whenCreated": [ + "20260331120503.0Z" + ] + } + }, + { + "attributes": { + "cn": "Dfs-Configuration", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=Dfs-Configuration,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "isCriticalSystemObject": true, + "name": "Dfs-Configuration", + "objectCategory": "CN=Dfs-Configuration,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "dfsConfiguration" + ], + "objectGUID": "{fea9f608-0bf7-4067-909b-a31133667bfe}", + "showInAdvancedViewOnly": false, + "uSNChanged": 5692, + "uSNCreated": 5692, + "whenChanged": "2026-03-31 12:05:03+00:00", + "whenCreated": "2026-03-31 12:05:03+00:00" + }, + "dn": "CN=Dfs-Configuration,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "Dfs-Configuration" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=Dfs-Configuration,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "Dfs-Configuration" + ], + "objectCategory": [ + "CN=Dfs-Configuration,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "dfsConfiguration" + ], + "objectGUID": [ + { + "encoded": "CPap/vcLZ0CQm6MRM2Z7/g==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "FALSE" + ], + "uSNChanged": [ + "5692" + ], + "uSNCreated": [ + "5692" + ], + "whenChanged": [ + "20260331120503.0Z" + ], + "whenCreated": [ + "20260331120503.0Z" + ] + } + }, + { + "attributes": { + "cn": "IP Security", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "isCriticalSystemObject": true, + "name": "IP Security", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{21ed4f11-1304-4db7-91b9-f995c18f4a45}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5693, + "uSNCreated": 5693, + "whenChanged": "2026-03-31 12:05:03+00:00", + "whenCreated": "2026-03-31 12:05:03+00:00" + }, + "dn": "CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "IP Security" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "IP Security" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "EU/tIQQTt02RufmVwY9KRQ==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5693" + ], + "uSNCreated": [ + "5693" + ], + "whenChanged": [ + "20260331120503.0Z" + ], + "whenCreated": [ + "20260331120503.0Z" + ] + } + }, + { + "attributes": { + "cn": "ipsecPolicy{72385230-70FA-11D1-864C-14A300000000}", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "description": [ + "For all IP traffic, always request security using Kerberos trust. Allow unsecured communication with clients that do not respond to request." + ], + "distinguishedName": "CN=ipsecPolicy{72385230-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "ipsecData": { + "encoded": "YyEgIkxP0RGGOwCgJI0wIQQAAAAwKgAAAA==", + "encoding": "base64" + }, + "ipsecDataType": 598, + "ipsecID": "{72385230-70FA-11D1-864C-14A300000000}", + "ipsecISAKMPReference": "CN=ipsecISAKMPPolicy{72385231-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io", + "ipsecNFAReference": [ + "CN=ipsecNFA{594272E2-071D-11D3-AD22-0060B0ECCA17},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io", + "CN=ipsecNFA{59319BE2-5EE3-11D2-ACE8-0060B0ECCA17},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io", + "CN=ipsecNFA{72385232-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "ipsecName": "Server (Request Security)", + "isCriticalSystemObject": true, + "name": "ipsecPolicy{72385230-70FA-11D1-864C-14A300000000}", + "objectCategory": "CN=Ipsec-Policy,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "ipsecBase", + "ipsecPolicy" + ], + "objectGUID": "{df1abeff-471c-4150-9f7d-000686d7cfe0}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5694, + "uSNCreated": 5694, + "whenChanged": "2026-03-31 12:05:03+00:00", + "whenCreated": "2026-03-31 12:05:03+00:00" + }, + "dn": "CN=ipsecPolicy{72385230-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "ipsecPolicy{72385230-70FA-11D1-864C-14A300000000}" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "description": [ + "For all IP traffic, always request security using Kerberos trust. Allow unsecured communication with clients that do not respond to request." + ], + "distinguishedName": [ + "CN=ipsecPolicy{72385230-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "ipsecData": [ + { + "encoded": "YyEgIkxP0RGGOwCgJI0wIQQAAAAwKgAAAA==", + "encoding": "base64" + } + ], + "ipsecDataType": [ + "598" + ], + "ipsecID": [ + "{72385230-70FA-11D1-864C-14A300000000}" + ], + "ipsecISAKMPReference": [ + "CN=ipsecISAKMPPolicy{72385231-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "ipsecNFAReference": [ + "CN=ipsecNFA{594272E2-071D-11D3-AD22-0060B0ECCA17},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io", + "CN=ipsecNFA{59319BE2-5EE3-11D2-ACE8-0060B0ECCA17},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io", + "CN=ipsecNFA{72385232-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "ipsecName": [ + "Server (Request Security)" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "ipsecPolicy{72385230-70FA-11D1-864C-14A300000000}" + ], + "objectCategory": [ + "CN=Ipsec-Policy,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "ipsecBase", + "ipsecPolicy" + ], + "objectGUID": [ + { + "encoded": "/74a3xxHUEGffQAGhtfP4A==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5694" + ], + "uSNCreated": [ + "5694" + ], + "whenChanged": [ + "20260331120503.0Z" + ], + "whenCreated": [ + "20260331120503.0Z" + ] + } + }, + { + "attributes": { + "cn": "ipsecISAKMPPolicy{72385231-70FA-11D1-864C-14A300000000}", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=ipsecISAKMPPolicy{72385231-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "ipsecData": { + "encoded": "uCDcgMgu0RGongCgJI0wIUABAABo0hlRHQfTEa0iAGCw7MoXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAADNzQMAAABAAAAACAAAAAIAAABAAAAAAAAAAAAAAAAAAAAAAAAAAADNzc0CAAAAAAAAAAAAAACAcAAAzc3NzQAAzc0DAAAAQAAAAAgAAAABAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAzc3NAgAAAAAAAAAAAAAAgHAAAM3Nzc0AAM3NAQAAAEAAAAAIAAAAAgAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAM3NzQEAAAAAAAAAAAAAAIBwAADNzc3NAADNzQEAAABAAAAACAAAAAEAAABAAAAAAAAAAAAAAAAAAAAAAAAAAADNzc0BAAAAAAAAAAAAAACAcAAAzc3NzQA=", + "encoding": "base64" + }, + "ipsecDataType": 598, + "ipsecID": "{72385231-70FA-11D1-864C-14A300000000}", + "ipsecOwnersReference": [ + "CN=ipsecPolicy{72385230-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "isCriticalSystemObject": true, + "name": "ipsecISAKMPPolicy{72385231-70FA-11D1-864C-14A300000000}", + "objectCategory": "CN=Ipsec-ISAKMP-Policy,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "ipsecBase", + "ipsecISAKMPPolicy" + ], + "objectGUID": "{23e07c66-b009-4464-895e-8ea8a0ffea29}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5695, + "uSNCreated": 5695, + "whenChanged": "2026-03-31 12:05:03+00:00", + "whenCreated": "2026-03-31 12:05:03+00:00" + }, + "dn": "CN=ipsecISAKMPPolicy{72385231-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "ipsecISAKMPPolicy{72385231-70FA-11D1-864C-14A300000000}" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=ipsecISAKMPPolicy{72385231-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "ipsecData": [ + { + "encoded": "uCDcgMgu0RGongCgJI0wIUABAABo0hlRHQfTEa0iAGCw7MoXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAADNzQMAAABAAAAACAAAAAIAAABAAAAAAAAAAAAAAAAAAAAAAAAAAADNzc0CAAAAAAAAAAAAAACAcAAAzc3NzQAAzc0DAAAAQAAAAAgAAAABAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAzc3NAgAAAAAAAAAAAAAAgHAAAM3Nzc0AAM3NAQAAAEAAAAAIAAAAAgAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAM3NzQEAAAAAAAAAAAAAAIBwAADNzc3NAADNzQEAAABAAAAACAAAAAEAAABAAAAAAAAAAAAAAAAAAAAAAAAAAADNzc0BAAAAAAAAAAAAAACAcAAAzc3NzQA=", + "encoding": "base64" + } + ], + "ipsecDataType": [ + "598" + ], + "ipsecID": [ + "{72385231-70FA-11D1-864C-14A300000000}" + ], + "ipsecOwnersReference": [ + "CN=ipsecPolicy{72385230-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "ipsecISAKMPPolicy{72385231-70FA-11D1-864C-14A300000000}" + ], + "objectCategory": [ + "CN=Ipsec-ISAKMP-Policy,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "ipsecBase", + "ipsecISAKMPPolicy" + ], + "objectGUID": [ + { + "encoded": "ZnzgIwmwZESJXo6ooP/qKQ==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5695" + ], + "uSNCreated": [ + "5695" + ], + "whenChanged": [ + "20260331120503.0Z" + ], + "whenCreated": [ + "20260331120503.0Z" + ] + } + }, + { + "attributes": { + "cn": "ipsecNFA{72385232-70FA-11D1-864C-14A300000000}", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "description": [ + "For all IP traffic, always request security using Kerberos trust. Allow unsecured communication with clients that do not respond to request." + ], + "distinguishedName": "CN=ipsecNFA{72385232-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "ipsecData": { + "encoded": "AKy7EY1J0RGGOQCgJI0wISoAAAABAAAABQAAAAIAAAAAAP3///8CAAAAAAAAAAAAAAAAAAEAAAACAAAAAAAA", + "encoding": "base64" + }, + "ipsecDataType": 598, + "ipsecFilterReference": [ + "CN=ipsecFilter{7238523A-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "ipsecID": "{72385232-70FA-11D1-864C-14A300000000}", + "ipsecName": "Request Security (Optional) Rule", + "ipsecNegotiationPolicyReference": "CN=ipsecNegotiationPolicy{72385233-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io", + "ipsecOwnersReference": [ + "CN=ipsecPolicy{72385230-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "isCriticalSystemObject": true, + "name": "ipsecNFA{72385232-70FA-11D1-864C-14A300000000}", + "objectCategory": "CN=Ipsec-NFA,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "ipsecBase", + "ipsecNFA" + ], + "objectGUID": "{9100c454-8a21-4e04-b32e-289d80877566}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5696, + "uSNCreated": 5696, + "whenChanged": "2026-03-31 12:05:03+00:00", + "whenCreated": "2026-03-31 12:05:03+00:00" + }, + "dn": "CN=ipsecNFA{72385232-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "ipsecNFA{72385232-70FA-11D1-864C-14A300000000}" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "description": [ + "For all IP traffic, always request security using Kerberos trust. Allow unsecured communication with clients that do not respond to request." + ], + "distinguishedName": [ + "CN=ipsecNFA{72385232-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "ipsecData": [ + { + "encoded": "AKy7EY1J0RGGOQCgJI0wISoAAAABAAAABQAAAAIAAAAAAP3///8CAAAAAAAAAAAAAAAAAAEAAAACAAAAAAAA", + "encoding": "base64" + } + ], + "ipsecDataType": [ + "598" + ], + "ipsecFilterReference": [ + "CN=ipsecFilter{7238523A-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "ipsecID": [ + "{72385232-70FA-11D1-864C-14A300000000}" + ], + "ipsecName": [ + "Request Security (Optional) Rule" + ], + "ipsecNegotiationPolicyReference": [ + "CN=ipsecNegotiationPolicy{72385233-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "ipsecOwnersReference": [ + "CN=ipsecPolicy{72385230-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "ipsecNFA{72385232-70FA-11D1-864C-14A300000000}" + ], + "objectCategory": [ + "CN=Ipsec-NFA,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "ipsecBase", + "ipsecNFA" + ], + "objectGUID": [ + { + "encoded": "VMQAkSGKBE6zLiidgId1Zg==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5696" + ], + "uSNCreated": [ + "5696" + ], + "whenChanged": [ + "20260331120503.0Z" + ], + "whenCreated": [ + "20260331120503.0Z" + ] + } + }, + { + "attributes": { + "cn": "ipsecNFA{59319BE2-5EE3-11D2-ACE8-0060B0ECCA17}", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=ipsecNFA{59319BE2-5EE3-11D2-ACE8-0060B0ECCA17},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "ipsecData": { + "encoded": "AKy7EY1J0RGGOQCgJI0wISoAAAABAAAABQAAAAIAAAAAAP3///8CAAAAAAAAAAAAAAAAAAEAAAACAAAAAAAA", + "encoding": "base64" + }, + "ipsecDataType": 598, + "ipsecID": "{59319BE2-5EE3-11D2-ACE8-0060B0ECCA17}", + "ipsecNegotiationPolicyReference": "CN=ipsecNegotiationPolicy{59319BDF-5EE3-11D2-ACE8-0060B0ECCA17},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io", + "ipsecOwnersReference": [ + "CN=ipsecPolicy{72385230-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "isCriticalSystemObject": true, + "name": "ipsecNFA{59319BE2-5EE3-11D2-ACE8-0060B0ECCA17}", + "objectCategory": "CN=Ipsec-NFA,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "ipsecBase", + "ipsecNFA" + ], + "objectGUID": "{fa6dfb28-87ee-4733-941f-ab99438c78e6}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5697, + "uSNCreated": 5697, + "whenChanged": "2026-03-31 12:05:03+00:00", + "whenCreated": "2026-03-31 12:05:03+00:00" + }, + "dn": "CN=ipsecNFA{59319BE2-5EE3-11D2-ACE8-0060B0ECCA17},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "ipsecNFA{59319BE2-5EE3-11D2-ACE8-0060B0ECCA17}" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=ipsecNFA{59319BE2-5EE3-11D2-ACE8-0060B0ECCA17},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "ipsecData": [ + { + "encoded": "AKy7EY1J0RGGOQCgJI0wISoAAAABAAAABQAAAAIAAAAAAP3///8CAAAAAAAAAAAAAAAAAAEAAAACAAAAAAAA", + "encoding": "base64" + } + ], + "ipsecDataType": [ + "598" + ], + "ipsecID": [ + "{59319BE2-5EE3-11D2-ACE8-0060B0ECCA17}" + ], + "ipsecNegotiationPolicyReference": [ + "CN=ipsecNegotiationPolicy{59319BDF-5EE3-11D2-ACE8-0060B0ECCA17},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "ipsecOwnersReference": [ + "CN=ipsecPolicy{72385230-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "ipsecNFA{59319BE2-5EE3-11D2-ACE8-0060B0ECCA17}" + ], + "objectCategory": [ + "CN=Ipsec-NFA,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "ipsecBase", + "ipsecNFA" + ], + "objectGUID": [ + { + "encoded": "KPtt+u6HM0eUH6uZQ4x45g==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5697" + ], + "uSNCreated": [ + "5697" + ], + "whenChanged": [ + "20260331120503.0Z" + ], + "whenCreated": [ + "20260331120503.0Z" + ] + } + }, + { + "attributes": { + "cn": "ipsecNFA{594272E2-071D-11D3-AD22-0060B0ECCA17}", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "description": [ + "Permit unsecure ICMP packets to pass through." + ], + "distinguishedName": "CN=ipsecNFA{594272E2-071D-11D3-AD22-0060B0ECCA17},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "ipsecData": { + "encoded": "AKy7EY1J0RGGOQCgJI0wISoAAAABAAAABQAAAAIAAAAAAP3///8CAAAAAAAAAAAAAAAAAAEAAAACAAAAAAAA", + "encoding": "base64" + }, + "ipsecDataType": 598, + "ipsecFilterReference": [ + "CN=ipsecFilter{72385235-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "ipsecID": "{594272E2-071D-11D3-AD22-0060B0ECCA17}", + "ipsecName": "Permit unsecure ICMP packets to pass through.", + "ipsecNegotiationPolicyReference": "CN=ipsecNegotiationPolicy{7238523B-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io", + "ipsecOwnersReference": [ + "CN=ipsecPolicy{72385230-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "isCriticalSystemObject": true, + "name": "ipsecNFA{594272E2-071D-11D3-AD22-0060B0ECCA17}", + "objectCategory": "CN=Ipsec-NFA,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "ipsecBase", + "ipsecNFA" + ], + "objectGUID": "{293bccf9-183d-4e76-ba36-56d3fad481e7}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5698, + "uSNCreated": 5698, + "whenChanged": "2026-03-31 12:05:03+00:00", + "whenCreated": "2026-03-31 12:05:03+00:00" + }, + "dn": "CN=ipsecNFA{594272E2-071D-11D3-AD22-0060B0ECCA17},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "ipsecNFA{594272E2-071D-11D3-AD22-0060B0ECCA17}" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "description": [ + "Permit unsecure ICMP packets to pass through." + ], + "distinguishedName": [ + "CN=ipsecNFA{594272E2-071D-11D3-AD22-0060B0ECCA17},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "ipsecData": [ + { + "encoded": "AKy7EY1J0RGGOQCgJI0wISoAAAABAAAABQAAAAIAAAAAAP3///8CAAAAAAAAAAAAAAAAAAEAAAACAAAAAAAA", + "encoding": "base64" + } + ], + "ipsecDataType": [ + "598" + ], + "ipsecFilterReference": [ + "CN=ipsecFilter{72385235-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "ipsecID": [ + "{594272E2-071D-11D3-AD22-0060B0ECCA17}" + ], + "ipsecName": [ + "Permit unsecure ICMP packets to pass through." + ], + "ipsecNegotiationPolicyReference": [ + "CN=ipsecNegotiationPolicy{7238523B-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "ipsecOwnersReference": [ + "CN=ipsecPolicy{72385230-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "ipsecNFA{594272E2-071D-11D3-AD22-0060B0ECCA17}" + ], + "objectCategory": [ + "CN=Ipsec-NFA,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "ipsecBase", + "ipsecNFA" + ], + "objectGUID": [ + { + "encoded": "+cw7KT0Ydk66NlbT+tSB5w==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5698" + ], + "uSNCreated": [ + "5698" + ], + "whenChanged": [ + "20260331120503.0Z" + ], + "whenCreated": [ + "20260331120503.0Z" + ] + } + }, + { + "attributes": { + "cn": "ipsecNegotiationPolicy{72385233-70FA-11D1-864C-14A300000000}", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "description": [ + "Accepts unsecured communication, but requests clients to establish trust and security methods. Will communicate insecurely to untrusted clients if they do not respond to request." + ], + "distinguishedName": "CN=ipsecNegotiationPolicy{72385233-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io", + "iPSECNegotiationPolicyAction": "{3F91A81A-7647-11D1-864D-D46A00000000}", + "iPSECNegotiationPolicyType": "{62F49E10-6C37-11D1-864C-14A300000000}", + "instanceType": 4, + "ipsecData": { + "encoded": "uSDcgMgu0RGongCgJI0wIZQBAAAFAAAAhAMAAKCGAQAAAAAAAAAAAAEAAAADAAAAAgAAAAIAAABAAAAACAAAAFwAUwBlAHIAdgBpAGMAZQBzAFwAUABvAGwAaQBjAHkAQQBnAGUAbgCEAwAAoIYBAAAAAAAAAAAAAQAAAAEAAAACAAAAAgAAAEAAAAAIAAAAAAAAAFX0sjdcAEwAbwBjABUADwABAAgAIAJlACACZQBYxHYF+M54BSwBAACghgEAAAAAAAAAAAABAAAAAgAAAAAAAAABAAAAQAAAAAgAAAAtADkAQQBDADEALQA0AEQANgBEAC0AQQAxAEIAMAAtADEANQA4ADcALAEAAKCGAQAAAAAAAAAAAAEAAAABAAAAAAAAAAEAAABAAAAACAAAAGUAdABcAFMAZQByAHYAaQBjAGUAcwBcAFAAbwBsAGkAYwB5AEEAZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAgAAAEAAAAAIAAAANgBDAC0AMwBCADkANwAtADQANQA1ADIALQA4AEUANAA1AC0AOQA5AAA=", + "encoding": "base64" + }, + "ipsecDataType": 598, + "ipsecID": "{72385233-70FA-11D1-864C-14A300000000}", + "ipsecName": "Request Security (Optional)", + "ipsecOwnersReference": [ + "CN=ipsecNFA{72385232-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "isCriticalSystemObject": true, + "name": "ipsecNegotiationPolicy{72385233-70FA-11D1-864C-14A300000000}", + "objectCategory": "CN=Ipsec-Negotiation-Policy,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "ipsecBase", + "ipsecNegotiationPolicy" + ], + "objectGUID": "{ed6926b1-3371-4285-9467-3c09ed343402}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5711, + "uSNCreated": 5711, + "whenChanged": "2026-03-31 12:05:03+00:00", + "whenCreated": "2026-03-31 12:05:03+00:00" + }, + "dn": "CN=ipsecNegotiationPolicy{72385233-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "ipsecNegotiationPolicy{72385233-70FA-11D1-864C-14A300000000}" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "description": [ + "Accepts unsecured communication, but requests clients to establish trust and security methods. Will communicate insecurely to untrusted clients if they do not respond to request." + ], + "distinguishedName": [ + "CN=ipsecNegotiationPolicy{72385233-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "iPSECNegotiationPolicyAction": [ + "{3F91A81A-7647-11D1-864D-D46A00000000}" + ], + "iPSECNegotiationPolicyType": [ + "{62F49E10-6C37-11D1-864C-14A300000000}" + ], + "instanceType": [ + "4" + ], + "ipsecData": [ + { + "encoded": "uSDcgMgu0RGongCgJI0wIZQBAAAFAAAAhAMAAKCGAQAAAAAAAAAAAAEAAAADAAAAAgAAAAIAAABAAAAACAAAAFwAUwBlAHIAdgBpAGMAZQBzAFwAUABvAGwAaQBjAHkAQQBnAGUAbgCEAwAAoIYBAAAAAAAAAAAAAQAAAAEAAAACAAAAAgAAAEAAAAAIAAAAAAAAAFX0sjdcAEwAbwBjABUADwABAAgAIAJlACACZQBYxHYF+M54BSwBAACghgEAAAAAAAAAAAABAAAAAgAAAAAAAAABAAAAQAAAAAgAAAAtADkAQQBDADEALQA0AEQANgBEAC0AQQAxAEIAMAAtADEANQA4ADcALAEAAKCGAQAAAAAAAAAAAAEAAAABAAAAAAAAAAEAAABAAAAACAAAAGUAdABcAFMAZQByAHYAaQBjAGUAcwBcAFAAbwBsAGkAYwB5AEEAZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAgAAAEAAAAAIAAAANgBDAC0AMwBCADkANwAtADQANQA1ADIALQA4AEUANAA1AC0AOQA5AAA=", + "encoding": "base64" + } + ], + "ipsecDataType": [ + "598" + ], + "ipsecID": [ + "{72385233-70FA-11D1-864C-14A300000000}" + ], + "ipsecName": [ + "Request Security (Optional)" + ], + "ipsecOwnersReference": [ + "CN=ipsecNFA{72385232-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "ipsecNegotiationPolicy{72385233-70FA-11D1-864C-14A300000000}" + ], + "objectCategory": [ + "CN=Ipsec-Negotiation-Policy,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "ipsecBase", + "ipsecNegotiationPolicy" + ], + "objectGUID": [ + { + "encoded": "sSZp7XEzhUKUZzwJ7TQ0Ag==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5711" + ], + "uSNCreated": [ + "5711" + ], + "whenChanged": [ + "20260331120503.0Z" + ], + "whenCreated": [ + "20260331120503.0Z" + ] + } + }, + { + "attributes": { + "cn": "ipsecFilter{7238523A-70FA-11D1-864C-14A300000000}", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "description": [ + "Matches all IP packets from this computer to any other computer, except broadcast, multicast, Kerberos, RSVP and ISAKMP (IKE)." + ], + "distinguishedName": "CN=ipsecFilter{7238523A-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "ipsecData": { + "encoded": "tSDcgMgu0RGongCgJI0wIUoAAAABAAAAAgAAAAAAAgAAAAAAAgAAAAAA3ZsxWeNe0hGs6ABgsOzKFwEAAAAAAAAA/////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", + "encoding": "base64" + }, + "ipsecDataType": 598, + "ipsecID": "{7238523A-70FA-11D1-864C-14A300000000}", + "ipsecName": "All IP Traffic", + "ipsecOwnersReference": [ + "CN=ipsecNFA{72385232-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io", + "CN=ipsecNFA{7238523E-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "isCriticalSystemObject": true, + "name": "ipsecFilter{7238523A-70FA-11D1-864C-14A300000000}", + "objectCategory": "CN=Ipsec-Filter,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "ipsecBase", + "ipsecFilter" + ], + "objectGUID": "{e0dfbd1b-04aa-4e9f-97e5-127b53b05a3b}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5714, + "uSNCreated": 5714, + "whenChanged": "2026-03-31 12:05:03+00:00", + "whenCreated": "2026-03-31 12:05:03+00:00" + }, + "dn": "CN=ipsecFilter{7238523A-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "ipsecFilter{7238523A-70FA-11D1-864C-14A300000000}" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "description": [ + "Matches all IP packets from this computer to any other computer, except broadcast, multicast, Kerberos, RSVP and ISAKMP (IKE)." + ], + "distinguishedName": [ + "CN=ipsecFilter{7238523A-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "ipsecData": [ + { + "encoded": "tSDcgMgu0RGongCgJI0wIUoAAAABAAAAAgAAAAAAAgAAAAAAAgAAAAAA3ZsxWeNe0hGs6ABgsOzKFwEAAAAAAAAA/////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", + "encoding": "base64" + } + ], + "ipsecDataType": [ + "598" + ], + "ipsecID": [ + "{7238523A-70FA-11D1-864C-14A300000000}" + ], + "ipsecName": [ + "All IP Traffic" + ], + "ipsecOwnersReference": [ + "CN=ipsecNFA{72385232-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io", + "CN=ipsecNFA{7238523E-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "ipsecFilter{7238523A-70FA-11D1-864C-14A300000000}" + ], + "objectCategory": [ + "CN=Ipsec-Filter,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "ipsecBase", + "ipsecFilter" + ], + "objectGUID": [ + { + "encoded": "G73f4KoEn06X5RJ7U7BaOw==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5714" + ], + "uSNCreated": [ + "5714" + ], + "whenChanged": [ + "20260331120503.0Z" + ], + "whenCreated": [ + "20260331120503.0Z" + ] + } + }, + { + "attributes": { + "cn": "ipsecNegotiationPolicy{59319BDF-5EE3-11D2-ACE8-0060B0ECCA17}", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=ipsecNegotiationPolicy{59319BDF-5EE3-11D2-ACE8-0060B0ECCA17},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io", + "iPSECNegotiationPolicyAction": "{8A171DD3-77E3-11D1-8659-A04F00000000}", + "iPSECNegotiationPolicyType": "{62F49E13-6C37-11D1-864C-14A300000000}", + "instanceType": 4, + "ipsecData": { + "encoded": "uSDcgMgu0RGongCgJI0wIeQBAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAgAAAAIAAABAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAABAAAAAgAAAEAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAIAAAACAAAAQAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAQAAAAIAAABAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAQAAAEAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAAAAAABAAAAQAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", + "encoding": "base64" + }, + "ipsecDataType": 598, + "ipsecID": "{59319BDF-5EE3-11D2-ACE8-0060B0ECCA17}", + "ipsecOwnersReference": [ + "CN=ipsecNFA{59319BE2-5EE3-11D2-ACE8-0060B0ECCA17},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "isCriticalSystemObject": true, + "name": "ipsecNegotiationPolicy{59319BDF-5EE3-11D2-ACE8-0060B0ECCA17}", + "objectCategory": "CN=Ipsec-Negotiation-Policy,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "ipsecBase", + "ipsecNegotiationPolicy" + ], + "objectGUID": "{d5452cf1-f0e3-4b64-9be8-f2fe78183572}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5708, + "uSNCreated": 5708, + "whenChanged": "2026-03-31 12:05:03+00:00", + "whenCreated": "2026-03-31 12:05:03+00:00" + }, + "dn": "CN=ipsecNegotiationPolicy{59319BDF-5EE3-11D2-ACE8-0060B0ECCA17},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "ipsecNegotiationPolicy{59319BDF-5EE3-11D2-ACE8-0060B0ECCA17}" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=ipsecNegotiationPolicy{59319BDF-5EE3-11D2-ACE8-0060B0ECCA17},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "iPSECNegotiationPolicyAction": [ + "{8A171DD3-77E3-11D1-8659-A04F00000000}" + ], + "iPSECNegotiationPolicyType": [ + "{62F49E13-6C37-11D1-864C-14A300000000}" + ], + "instanceType": [ + "4" + ], + "ipsecData": [ + { + "encoded": "uSDcgMgu0RGongCgJI0wIeQBAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAgAAAAIAAABAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAABAAAAAgAAAEAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAIAAAACAAAAQAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAQAAAAIAAABAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAQAAAEAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAAAAAABAAAAQAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", + "encoding": "base64" + } + ], + "ipsecDataType": [ + "598" + ], + "ipsecID": [ + "{59319BDF-5EE3-11D2-ACE8-0060B0ECCA17}" + ], + "ipsecOwnersReference": [ + "CN=ipsecNFA{59319BE2-5EE3-11D2-ACE8-0060B0ECCA17},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "ipsecNegotiationPolicy{59319BDF-5EE3-11D2-ACE8-0060B0ECCA17}" + ], + "objectCategory": [ + "CN=Ipsec-Negotiation-Policy,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "ipsecBase", + "ipsecNegotiationPolicy" + ], + "objectGUID": [ + { + "encoded": "8SxF1ePwZEub6PL+eBg1cg==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5708" + ], + "uSNCreated": [ + "5708" + ], + "whenChanged": [ + "20260331120503.0Z" + ], + "whenCreated": [ + "20260331120503.0Z" + ] + } + }, + { + "attributes": { + "cn": "ipsecNegotiationPolicy{7238523B-70FA-11D1-864C-14A300000000}", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "description": [ + "Permit unsecured IP packets to pass through." + ], + "distinguishedName": "CN=ipsecNegotiationPolicy{7238523B-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io", + "iPSECNegotiationPolicyAction": "{8A171DD2-77E3-11D1-8659-A04F00000000}", + "iPSECNegotiationPolicyType": "{62F49E10-6C37-11D1-864C-14A300000000}", + "instanceType": 4, + "ipsecData": { + "encoded": "uSDcgMgu0RGongCgJI0wIQQAAAAAAAAAAA==", + "encoding": "base64" + }, + "ipsecDataType": 598, + "ipsecID": "{7238523B-70FA-11D1-864C-14A300000000}", + "ipsecName": "Permit", + "ipsecOwnersReference": [ + "CN=ipsecNFA{594272E2-071D-11D3-AD22-0060B0ECCA17},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io", + "CN=ipsecNFA{594272FD-071D-11D3-AD22-0060B0ECCA17},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "isCriticalSystemObject": true, + "name": "ipsecNegotiationPolicy{7238523B-70FA-11D1-864C-14A300000000}", + "objectCategory": "CN=Ipsec-Negotiation-Policy,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "ipsecBase", + "ipsecNegotiationPolicy" + ], + "objectGUID": "{52038fb3-2864-40ea-8a3c-8892ecdba708}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5713, + "uSNCreated": 5713, + "whenChanged": "2026-03-31 12:05:03+00:00", + "whenCreated": "2026-03-31 12:05:03+00:00" + }, + "dn": "CN=ipsecNegotiationPolicy{7238523B-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "ipsecNegotiationPolicy{7238523B-70FA-11D1-864C-14A300000000}" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "description": [ + "Permit unsecured IP packets to pass through." + ], + "distinguishedName": [ + "CN=ipsecNegotiationPolicy{7238523B-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "iPSECNegotiationPolicyAction": [ + "{8A171DD2-77E3-11D1-8659-A04F00000000}" + ], + "iPSECNegotiationPolicyType": [ + "{62F49E10-6C37-11D1-864C-14A300000000}" + ], + "instanceType": [ + "4" + ], + "ipsecData": [ + { + "encoded": "uSDcgMgu0RGongCgJI0wIQQAAAAAAAAAAA==", + "encoding": "base64" + } + ], + "ipsecDataType": [ + "598" + ], + "ipsecID": [ + "{7238523B-70FA-11D1-864C-14A300000000}" + ], + "ipsecName": [ + "Permit" + ], + "ipsecOwnersReference": [ + "CN=ipsecNFA{594272E2-071D-11D3-AD22-0060B0ECCA17},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io", + "CN=ipsecNFA{594272FD-071D-11D3-AD22-0060B0ECCA17},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "ipsecNegotiationPolicy{7238523B-70FA-11D1-864C-14A300000000}" + ], + "objectCategory": [ + "CN=Ipsec-Negotiation-Policy,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "ipsecBase", + "ipsecNegotiationPolicy" + ], + "objectGUID": [ + { + "encoded": "s48DUmQo6kCKPIiS7NunCA==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5713" + ], + "uSNCreated": [ + "5713" + ], + "whenChanged": [ + "20260331120503.0Z" + ], + "whenCreated": [ + "20260331120503.0Z" + ] + } + }, + { + "attributes": { + "cn": "ipsecFilter{72385235-70FA-11D1-864C-14A300000000}", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "description": [ + "Matches all ICMP packets between this computer and any other computer." + ], + "distinguishedName": "CN=ipsecFilter{72385235-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "ipsecData": { + "encoded": "tSDcgMgu0RGongCgJI0wIVIAAAABAAAAAgAAAAAAAgAAAAAACgAAAEkAQwBNAFAAAABj0hlRHQfTEa0iAGCw7MoXAQAAAAAAAAD/////AAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAA==", + "encoding": "base64" + }, + "ipsecDataType": 598, + "ipsecID": "{72385235-70FA-11D1-864C-14A300000000}", + "ipsecName": "All ICMP Traffic", + "ipsecOwnersReference": [ + "CN=ipsecNFA{594272E2-071D-11D3-AD22-0060B0ECCA17},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io", + "CN=ipsecNFA{594272FD-071D-11D3-AD22-0060B0ECCA17},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "isCriticalSystemObject": true, + "name": "ipsecFilter{72385235-70FA-11D1-864C-14A300000000}", + "objectCategory": "CN=Ipsec-Filter,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "ipsecBase", + "ipsecFilter" + ], + "objectGUID": "{c16be712-9b0a-4603-8f1c-0f50acb5f68c}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5715, + "uSNCreated": 5715, + "whenChanged": "2026-03-31 12:05:03+00:00", + "whenCreated": "2026-03-31 12:05:03+00:00" + }, + "dn": "CN=ipsecFilter{72385235-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "ipsecFilter{72385235-70FA-11D1-864C-14A300000000}" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "description": [ + "Matches all ICMP packets between this computer and any other computer." + ], + "distinguishedName": [ + "CN=ipsecFilter{72385235-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "ipsecData": [ + { + "encoded": "tSDcgMgu0RGongCgJI0wIVIAAAABAAAAAgAAAAAAAgAAAAAACgAAAEkAQwBNAFAAAABj0hlRHQfTEa0iAGCw7MoXAQAAAAAAAAD/////AAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAA==", + "encoding": "base64" + } + ], + "ipsecDataType": [ + "598" + ], + "ipsecID": [ + "{72385235-70FA-11D1-864C-14A300000000}" + ], + "ipsecName": [ + "All ICMP Traffic" + ], + "ipsecOwnersReference": [ + "CN=ipsecNFA{594272E2-071D-11D3-AD22-0060B0ECCA17},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io", + "CN=ipsecNFA{594272FD-071D-11D3-AD22-0060B0ECCA17},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "ipsecFilter{72385235-70FA-11D1-864C-14A300000000}" + ], + "objectCategory": [ + "CN=Ipsec-Filter,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "ipsecBase", + "ipsecFilter" + ], + "objectGUID": [ + { + "encoded": "EudrwQqbA0aPHA9QrLX2jA==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5715" + ], + "uSNCreated": [ + "5715" + ], + "whenChanged": [ + "20260331120503.0Z" + ], + "whenCreated": [ + "20260331120503.0Z" + ] + } + }, + { + "attributes": { + "cn": "ipsecPolicy{72385236-70FA-11D1-864C-14A300000000}", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "description": [ + "Communicate normally (unsecured). Use the default response rule to negotiate with servers that request security. Only the requested protocol and port traffic with that server is secured." + ], + "distinguishedName": "CN=ipsecPolicy{72385236-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "ipsecData": { + "encoded": "YyEgIkxP0RGGOwCgJI0wIQQAAAAwKgAAAA==", + "encoding": "base64" + }, + "ipsecDataType": 598, + "ipsecID": "{72385236-70FA-11D1-864C-14A300000000}", + "ipsecISAKMPReference": "CN=ipsecISAKMPPolicy{72385237-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io", + "ipsecNFAReference": [ + "CN=ipsecNFA{59319C04-5EE3-11D2-ACE8-0060B0ECCA17},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "ipsecName": "Client (Respond Only)", + "isCriticalSystemObject": true, + "name": "ipsecPolicy{72385236-70FA-11D1-864C-14A300000000}", + "objectCategory": "CN=Ipsec-Policy,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "ipsecBase", + "ipsecPolicy" + ], + "objectGUID": "{7dec01ee-0a9b-425f-8c7a-1354d5ae56e7}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5699, + "uSNCreated": 5699, + "whenChanged": "2026-03-31 12:05:03+00:00", + "whenCreated": "2026-03-31 12:05:03+00:00" + }, + "dn": "CN=ipsecPolicy{72385236-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "ipsecPolicy{72385236-70FA-11D1-864C-14A300000000}" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "description": [ + "Communicate normally (unsecured). Use the default response rule to negotiate with servers that request security. Only the requested protocol and port traffic with that server is secured." + ], + "distinguishedName": [ + "CN=ipsecPolicy{72385236-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "ipsecData": [ + { + "encoded": "YyEgIkxP0RGGOwCgJI0wIQQAAAAwKgAAAA==", + "encoding": "base64" + } + ], + "ipsecDataType": [ + "598" + ], + "ipsecID": [ + "{72385236-70FA-11D1-864C-14A300000000}" + ], + "ipsecISAKMPReference": [ + "CN=ipsecISAKMPPolicy{72385237-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "ipsecNFAReference": [ + "CN=ipsecNFA{59319C04-5EE3-11D2-ACE8-0060B0ECCA17},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "ipsecName": [ + "Client (Respond Only)" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "ipsecPolicy{72385236-70FA-11D1-864C-14A300000000}" + ], + "objectCategory": [ + "CN=Ipsec-Policy,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "ipsecBase", + "ipsecPolicy" + ], + "objectGUID": [ + { + "encoded": "7gHsfZsKX0KMehNU1a5W5w==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5699" + ], + "uSNCreated": [ + "5699" + ], + "whenChanged": [ + "20260331120503.0Z" + ], + "whenCreated": [ + "20260331120503.0Z" + ] + } + }, + { + "attributes": { + "cn": "ipsecISAKMPPolicy{72385237-70FA-11D1-864C-14A300000000}", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=ipsecISAKMPPolicy{72385237-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "ipsecData": { + "encoded": "uCDcgMgu0RGongCgJI0wIUABAABz7EFfHQfTEa0iAGCw7MoXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAADNzQMAAABAAAAACAAAAAIAAABAAAAAAAAAAAAAAAAAAAAAAAAAAADNzc0CAAAAAAAAAAAAAACAcAAAzc3NzQAAzc0DAAAAQAAAAAgAAAABAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAzc3NAgAAAAAAAAAAAAAAgHAAAM3Nzc0AAM3NAQAAAEAAAAAIAAAAAgAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAM3NzQEAAAAAAAAAAAAAAIBwAADNzc3NAADNzQEAAABAAAAACAAAAAEAAABAAAAAAAAAAAAAAAAAAAAAAAAAAADNzc0BAAAAAAAAAAAAAACAcAAAzc3NzQA=", + "encoding": "base64" + }, + "ipsecDataType": 598, + "ipsecID": "{72385237-70FA-11D1-864C-14A300000000}", + "ipsecOwnersReference": [ + "CN=ipsecPolicy{72385236-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "isCriticalSystemObject": true, + "name": "ipsecISAKMPPolicy{72385237-70FA-11D1-864C-14A300000000}", + "objectCategory": "CN=Ipsec-ISAKMP-Policy,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "ipsecBase", + "ipsecISAKMPPolicy" + ], + "objectGUID": "{a445164e-baa0-47b3-95fa-80081c3bd061}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5700, + "uSNCreated": 5700, + "whenChanged": "2026-03-31 12:05:03+00:00", + "whenCreated": "2026-03-31 12:05:03+00:00" + }, + "dn": "CN=ipsecISAKMPPolicy{72385237-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "ipsecISAKMPPolicy{72385237-70FA-11D1-864C-14A300000000}" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=ipsecISAKMPPolicy{72385237-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "ipsecData": [ + { + "encoded": "uCDcgMgu0RGongCgJI0wIUABAABz7EFfHQfTEa0iAGCw7MoXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAADNzQMAAABAAAAACAAAAAIAAABAAAAAAAAAAAAAAAAAAAAAAAAAAADNzc0CAAAAAAAAAAAAAACAcAAAzc3NzQAAzc0DAAAAQAAAAAgAAAABAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAzc3NAgAAAAAAAAAAAAAAgHAAAM3Nzc0AAM3NAQAAAEAAAAAIAAAAAgAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAM3NzQEAAAAAAAAAAAAAAIBwAADNzc3NAADNzQEAAABAAAAACAAAAAEAAABAAAAAAAAAAAAAAAAAAAAAAAAAAADNzc0BAAAAAAAAAAAAAACAcAAAzc3NzQA=", + "encoding": "base64" + } + ], + "ipsecDataType": [ + "598" + ], + "ipsecID": [ + "{72385237-70FA-11D1-864C-14A300000000}" + ], + "ipsecOwnersReference": [ + "CN=ipsecPolicy{72385236-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "ipsecISAKMPPolicy{72385237-70FA-11D1-864C-14A300000000}" + ], + "objectCategory": [ + "CN=Ipsec-ISAKMP-Policy,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "ipsecBase", + "ipsecISAKMPPolicy" + ], + "objectGUID": [ + { + "encoded": "ThZFpKC6s0eV+oAIHDvQYQ==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5700" + ], + "uSNCreated": [ + "5700" + ], + "whenChanged": [ + "20260331120503.0Z" + ], + "whenCreated": [ + "20260331120503.0Z" + ] + } + }, + { + "attributes": { + "cn": "ipsecNFA{59319C04-5EE3-11D2-ACE8-0060B0ECCA17}", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=ipsecNFA{59319C04-5EE3-11D2-ACE8-0060B0ECCA17},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "ipsecData": { + "encoded": "AKy7EY1J0RGGOQCgJI0wISoAAAABAAAABQAAAAIAAAAAAP3///8CAAAAAAAAAAAAAAAAAAEAAAACAAAAAAAA", + "encoding": "base64" + }, + "ipsecDataType": 598, + "ipsecID": "{59319C04-5EE3-11D2-ACE8-0060B0ECCA17}", + "ipsecNegotiationPolicyReference": "CN=ipsecNegotiationPolicy{59319C01-5EE3-11D2-ACE8-0060B0ECCA17},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io", + "ipsecOwnersReference": [ + "CN=ipsecPolicy{72385236-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "isCriticalSystemObject": true, + "name": "ipsecNFA{59319C04-5EE3-11D2-ACE8-0060B0ECCA17}", + "objectCategory": "CN=Ipsec-NFA,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "ipsecBase", + "ipsecNFA" + ], + "objectGUID": "{d235ca75-04d6-4d60-8b1f-a3b198a642ad}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5701, + "uSNCreated": 5701, + "whenChanged": "2026-03-31 12:05:03+00:00", + "whenCreated": "2026-03-31 12:05:03+00:00" + }, + "dn": "CN=ipsecNFA{59319C04-5EE3-11D2-ACE8-0060B0ECCA17},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "ipsecNFA{59319C04-5EE3-11D2-ACE8-0060B0ECCA17}" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=ipsecNFA{59319C04-5EE3-11D2-ACE8-0060B0ECCA17},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "ipsecData": [ + { + "encoded": "AKy7EY1J0RGGOQCgJI0wISoAAAABAAAABQAAAAIAAAAAAP3///8CAAAAAAAAAAAAAAAAAAEAAAACAAAAAAAA", + "encoding": "base64" + } + ], + "ipsecDataType": [ + "598" + ], + "ipsecID": [ + "{59319C04-5EE3-11D2-ACE8-0060B0ECCA17}" + ], + "ipsecNegotiationPolicyReference": [ + "CN=ipsecNegotiationPolicy{59319C01-5EE3-11D2-ACE8-0060B0ECCA17},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "ipsecOwnersReference": [ + "CN=ipsecPolicy{72385236-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "ipsecNFA{59319C04-5EE3-11D2-ACE8-0060B0ECCA17}" + ], + "objectCategory": [ + "CN=Ipsec-NFA,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "ipsecBase", + "ipsecNFA" + ], + "objectGUID": [ + { + "encoded": "dco10tYEYE2LH6OxmKZCrQ==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5701" + ], + "uSNCreated": [ + "5701" + ], + "whenChanged": [ + "20260331120503.0Z" + ], + "whenCreated": [ + "20260331120503.0Z" + ] + } + }, + { + "attributes": { + "cn": "ipsecNegotiationPolicy{59319C01-5EE3-11D2-ACE8-0060B0ECCA17}", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=ipsecNegotiationPolicy{59319C01-5EE3-11D2-ACE8-0060B0ECCA17},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io", + "iPSECNegotiationPolicyAction": "{8A171DD3-77E3-11D1-8659-A04F00000000}", + "iPSECNegotiationPolicyType": "{62F49E13-6C37-11D1-864C-14A300000000}", + "instanceType": 4, + "ipsecData": { + "encoded": "uSDcgMgu0RGongCgJI0wIeQBAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAgAAAAIAAABAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAABAAAAAgAAAEAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAIAAAACAAAAQAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAQAAAAIAAABAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAQAAAEAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAAAAAABAAAAQAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", + "encoding": "base64" + }, + "ipsecDataType": 598, + "ipsecID": "{59319C01-5EE3-11D2-ACE8-0060B0ECCA17}", + "ipsecOwnersReference": [ + "CN=ipsecNFA{59319C04-5EE3-11D2-ACE8-0060B0ECCA17},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "isCriticalSystemObject": true, + "name": "ipsecNegotiationPolicy{59319C01-5EE3-11D2-ACE8-0060B0ECCA17}", + "objectCategory": "CN=Ipsec-Negotiation-Policy,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "ipsecBase", + "ipsecNegotiationPolicy" + ], + "objectGUID": "{4a4efabe-db2b-4318-bb43-953309daec2b}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5710, + "uSNCreated": 5710, + "whenChanged": "2026-03-31 12:05:03+00:00", + "whenCreated": "2026-03-31 12:05:03+00:00" + }, + "dn": "CN=ipsecNegotiationPolicy{59319C01-5EE3-11D2-ACE8-0060B0ECCA17},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "ipsecNegotiationPolicy{59319C01-5EE3-11D2-ACE8-0060B0ECCA17}" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=ipsecNegotiationPolicy{59319C01-5EE3-11D2-ACE8-0060B0ECCA17},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "iPSECNegotiationPolicyAction": [ + "{8A171DD3-77E3-11D1-8659-A04F00000000}" + ], + "iPSECNegotiationPolicyType": [ + "{62F49E13-6C37-11D1-864C-14A300000000}" + ], + "instanceType": [ + "4" + ], + "ipsecData": [ + { + "encoded": "uSDcgMgu0RGongCgJI0wIeQBAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAgAAAAIAAABAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAABAAAAAgAAAEAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAIAAAACAAAAQAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAQAAAAIAAABAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAQAAAEAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAAAAAABAAAAQAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", + "encoding": "base64" + } + ], + "ipsecDataType": [ + "598" + ], + "ipsecID": [ + "{59319C01-5EE3-11D2-ACE8-0060B0ECCA17}" + ], + "ipsecOwnersReference": [ + "CN=ipsecNFA{59319C04-5EE3-11D2-ACE8-0060B0ECCA17},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "ipsecNegotiationPolicy{59319C01-5EE3-11D2-ACE8-0060B0ECCA17}" + ], + "objectCategory": [ + "CN=Ipsec-Negotiation-Policy,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "ipsecBase", + "ipsecNegotiationPolicy" + ], + "objectGUID": [ + { + "encoded": "vvpOSivbGEO7Q5UzCdrsKw==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5710" + ], + "uSNCreated": [ + "5710" + ], + "whenChanged": [ + "20260331120503.0Z" + ], + "whenCreated": [ + "20260331120503.0Z" + ] + } + }, + { + "attributes": { + "cn": "ipsecPolicy{7238523C-70FA-11D1-864C-14A300000000}", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "description": [ + "For all IP traffic, always require security using Kerberos trust. Do NOT allow unsecured communication with untrusted clients." + ], + "distinguishedName": "CN=ipsecPolicy{7238523C-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "ipsecData": { + "encoded": "YyEgIkxP0RGGOwCgJI0wIQQAAAAwKgAAAA==", + "encoding": "base64" + }, + "ipsecDataType": 598, + "ipsecID": "{7238523C-70FA-11D1-864C-14A300000000}", + "ipsecISAKMPReference": "CN=ipsecISAKMPPolicy{7238523D-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io", + "ipsecNFAReference": [ + "CN=ipsecNFA{594272FD-071D-11D3-AD22-0060B0ECCA17},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io", + "CN=ipsecNFA{59319BF3-5EE3-11D2-ACE8-0060B0ECCA17},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io", + "CN=ipsecNFA{7238523E-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "ipsecName": "Secure Server (Require Security)", + "isCriticalSystemObject": true, + "name": "ipsecPolicy{7238523C-70FA-11D1-864C-14A300000000}", + "objectCategory": "CN=Ipsec-Policy,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "ipsecBase", + "ipsecPolicy" + ], + "objectGUID": "{556b7f79-05ff-463c-ae0c-efb913a65832}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5702, + "uSNCreated": 5702, + "whenChanged": "2026-03-31 12:05:03+00:00", + "whenCreated": "2026-03-31 12:05:03+00:00" + }, + "dn": "CN=ipsecPolicy{7238523C-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "ipsecPolicy{7238523C-70FA-11D1-864C-14A300000000}" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "description": [ + "For all IP traffic, always require security using Kerberos trust. Do NOT allow unsecured communication with untrusted clients." + ], + "distinguishedName": [ + "CN=ipsecPolicy{7238523C-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "ipsecData": [ + { + "encoded": "YyEgIkxP0RGGOwCgJI0wIQQAAAAwKgAAAA==", + "encoding": "base64" + } + ], + "ipsecDataType": [ + "598" + ], + "ipsecID": [ + "{7238523C-70FA-11D1-864C-14A300000000}" + ], + "ipsecISAKMPReference": [ + "CN=ipsecISAKMPPolicy{7238523D-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "ipsecNFAReference": [ + "CN=ipsecNFA{594272FD-071D-11D3-AD22-0060B0ECCA17},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io", + "CN=ipsecNFA{59319BF3-5EE3-11D2-ACE8-0060B0ECCA17},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io", + "CN=ipsecNFA{7238523E-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "ipsecName": [ + "Secure Server (Require Security)" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "ipsecPolicy{7238523C-70FA-11D1-864C-14A300000000}" + ], + "objectCategory": [ + "CN=Ipsec-Policy,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "ipsecBase", + "ipsecPolicy" + ], + "objectGUID": [ + { + "encoded": "eX9rVf8FPEauDO+5E6ZYMg==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5702" + ], + "uSNCreated": [ + "5702" + ], + "whenChanged": [ + "20260331120503.0Z" + ], + "whenCreated": [ + "20260331120503.0Z" + ] + } + }, + { + "attributes": { + "cn": "ipsecISAKMPPolicy{7238523D-70FA-11D1-864C-14A300000000}", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=ipsecISAKMPPolicy{7238523D-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "ipsecData": { + "encoded": "uCDcgMgu0RGongCgJI0wIUABAAD5ckJZHQfTEa0iAGCw7MoXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAADNzQMAAABAAAAACAAAAAIAAABAAAAAAAAAAAAAAAAAAAAAAAAAAADNzc0CAAAAAAAAAAAAAACAcAAAzc3NzQAAzc0DAAAAQAAAAAgAAAABAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAzc3NAgAAAAAAAAAAAAAAgHAAAM3Nzc0AAM3NAQAAAEAAAAAIAAAAAgAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAM3NzQEAAAAAAAAAAAAAAIBwAADNzc3NAADNzQEAAABAAAAACAAAAAEAAABAAAAAAAAAAAAAAAAAAAAAAAAAAADNzc0BAAAAAAAAAAAAAACAcAAAzc3NzQA=", + "encoding": "base64" + }, + "ipsecDataType": 598, + "ipsecID": "{7238523D-70FA-11D1-864C-14A300000000}", + "ipsecOwnersReference": [ + "CN=ipsecPolicy{7238523C-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "isCriticalSystemObject": true, + "name": "ipsecISAKMPPolicy{7238523D-70FA-11D1-864C-14A300000000}", + "objectCategory": "CN=Ipsec-ISAKMP-Policy,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "ipsecBase", + "ipsecISAKMPPolicy" + ], + "objectGUID": "{26779bc3-7aa3-4600-a320-a489e550e691}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5703, + "uSNCreated": 5703, + "whenChanged": "2026-03-31 12:05:03+00:00", + "whenCreated": "2026-03-31 12:05:03+00:00" + }, + "dn": "CN=ipsecISAKMPPolicy{7238523D-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "ipsecISAKMPPolicy{7238523D-70FA-11D1-864C-14A300000000}" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=ipsecISAKMPPolicy{7238523D-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "ipsecData": [ + { + "encoded": "uCDcgMgu0RGongCgJI0wIUABAAD5ckJZHQfTEa0iAGCw7MoXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAADNzQMAAABAAAAACAAAAAIAAABAAAAAAAAAAAAAAAAAAAAAAAAAAADNzc0CAAAAAAAAAAAAAACAcAAAzc3NzQAAzc0DAAAAQAAAAAgAAAABAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAzc3NAgAAAAAAAAAAAAAAgHAAAM3Nzc0AAM3NAQAAAEAAAAAIAAAAAgAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAM3NzQEAAAAAAAAAAAAAAIBwAADNzc3NAADNzQEAAABAAAAACAAAAAEAAABAAAAAAAAAAAAAAAAAAAAAAAAAAADNzc0BAAAAAAAAAAAAAACAcAAAzc3NzQA=", + "encoding": "base64" + } + ], + "ipsecDataType": [ + "598" + ], + "ipsecID": [ + "{7238523D-70FA-11D1-864C-14A300000000}" + ], + "ipsecOwnersReference": [ + "CN=ipsecPolicy{7238523C-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "ipsecISAKMPPolicy{7238523D-70FA-11D1-864C-14A300000000}" + ], + "objectCategory": [ + "CN=Ipsec-ISAKMP-Policy,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "ipsecBase", + "ipsecISAKMPPolicy" + ], + "objectGUID": [ + { + "encoded": "w5t3JqN6AEajIKSJ5VDmkQ==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5703" + ], + "uSNCreated": [ + "5703" + ], + "whenChanged": [ + "20260331120503.0Z" + ], + "whenCreated": [ + "20260331120503.0Z" + ] + } + }, + { + "attributes": { + "cn": "ipsecNFA{7238523E-70FA-11D1-864C-14A300000000}", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "description": [ + "Accepts unsecured communication, but always requires clients to establish trust and security methods. Will NOT communicate with untrusted clients." + ], + "distinguishedName": "CN=ipsecNFA{7238523E-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "ipsecData": { + "encoded": "AKy7EY1J0RGGOQCgJI0wISoAAAABAAAABQAAAAIAAAAAAP3///8CAAAAAAAAAAAAAAAAAAEAAAACAAAAAAAA", + "encoding": "base64" + }, + "ipsecDataType": 598, + "ipsecFilterReference": [ + "CN=ipsecFilter{7238523A-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "ipsecID": "{7238523E-70FA-11D1-864C-14A300000000}", + "ipsecName": "Require Security", + "ipsecNegotiationPolicyReference": "CN=ipsecNegotiationPolicy{7238523F-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io", + "ipsecOwnersReference": [ + "CN=ipsecPolicy{7238523C-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "isCriticalSystemObject": true, + "name": "ipsecNFA{7238523E-70FA-11D1-864C-14A300000000}", + "objectCategory": "CN=Ipsec-NFA,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "ipsecBase", + "ipsecNFA" + ], + "objectGUID": "{3250ef2c-8a26-4295-b84e-166d47220fe8}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5704, + "uSNCreated": 5704, + "whenChanged": "2026-03-31 12:05:03+00:00", + "whenCreated": "2026-03-31 12:05:03+00:00" + }, + "dn": "CN=ipsecNFA{7238523E-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "ipsecNFA{7238523E-70FA-11D1-864C-14A300000000}" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "description": [ + "Accepts unsecured communication, but always requires clients to establish trust and security methods. Will NOT communicate with untrusted clients." + ], + "distinguishedName": [ + "CN=ipsecNFA{7238523E-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "ipsecData": [ + { + "encoded": "AKy7EY1J0RGGOQCgJI0wISoAAAABAAAABQAAAAIAAAAAAP3///8CAAAAAAAAAAAAAAAAAAEAAAACAAAAAAAA", + "encoding": "base64" + } + ], + "ipsecDataType": [ + "598" + ], + "ipsecFilterReference": [ + "CN=ipsecFilter{7238523A-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "ipsecID": [ + "{7238523E-70FA-11D1-864C-14A300000000}" + ], + "ipsecName": [ + "Require Security" + ], + "ipsecNegotiationPolicyReference": [ + "CN=ipsecNegotiationPolicy{7238523F-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "ipsecOwnersReference": [ + "CN=ipsecPolicy{7238523C-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "ipsecNFA{7238523E-70FA-11D1-864C-14A300000000}" + ], + "objectCategory": [ + "CN=Ipsec-NFA,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "ipsecBase", + "ipsecNFA" + ], + "objectGUID": [ + { + "encoded": "LO9QMiaKlUK4ThZtRyIP6A==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5704" + ], + "uSNCreated": [ + "5704" + ], + "whenChanged": [ + "20260331120503.0Z" + ], + "whenCreated": [ + "20260331120503.0Z" + ] + } + }, + { + "attributes": { + "cn": "ipsecNFA{59319BF3-5EE3-11D2-ACE8-0060B0ECCA17}", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=ipsecNFA{59319BF3-5EE3-11D2-ACE8-0060B0ECCA17},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "ipsecData": { + "encoded": "AKy7EY1J0RGGOQCgJI0wISoAAAABAAAABQAAAAIAAAAAAP3///8CAAAAAAAAAAAAAAAAAAEAAAACAAAAAAAA", + "encoding": "base64" + }, + "ipsecDataType": 598, + "ipsecID": "{59319BF3-5EE3-11D2-ACE8-0060B0ECCA17}", + "ipsecNegotiationPolicyReference": "CN=ipsecNegotiationPolicy{59319BF0-5EE3-11D2-ACE8-0060B0ECCA17},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io", + "ipsecOwnersReference": [ + "CN=ipsecPolicy{7238523C-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "isCriticalSystemObject": true, + "name": "ipsecNFA{59319BF3-5EE3-11D2-ACE8-0060B0ECCA17}", + "objectCategory": "CN=Ipsec-NFA,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "ipsecBase", + "ipsecNFA" + ], + "objectGUID": "{e3efabeb-b5df-4041-831a-4cfadb72eb17}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5705, + "uSNCreated": 5705, + "whenChanged": "2026-03-31 12:05:03+00:00", + "whenCreated": "2026-03-31 12:05:03+00:00" + }, + "dn": "CN=ipsecNFA{59319BF3-5EE3-11D2-ACE8-0060B0ECCA17},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "ipsecNFA{59319BF3-5EE3-11D2-ACE8-0060B0ECCA17}" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=ipsecNFA{59319BF3-5EE3-11D2-ACE8-0060B0ECCA17},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "ipsecData": [ + { + "encoded": "AKy7EY1J0RGGOQCgJI0wISoAAAABAAAABQAAAAIAAAAAAP3///8CAAAAAAAAAAAAAAAAAAEAAAACAAAAAAAA", + "encoding": "base64" + } + ], + "ipsecDataType": [ + "598" + ], + "ipsecID": [ + "{59319BF3-5EE3-11D2-ACE8-0060B0ECCA17}" + ], + "ipsecNegotiationPolicyReference": [ + "CN=ipsecNegotiationPolicy{59319BF0-5EE3-11D2-ACE8-0060B0ECCA17},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "ipsecOwnersReference": [ + "CN=ipsecPolicy{7238523C-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "ipsecNFA{59319BF3-5EE3-11D2-ACE8-0060B0ECCA17}" + ], + "objectCategory": [ + "CN=Ipsec-NFA,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "ipsecBase", + "ipsecNFA" + ], + "objectGUID": [ + { + "encoded": "66vv49+1QUCDGkz623LrFw==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5705" + ], + "uSNCreated": [ + "5705" + ], + "whenChanged": [ + "20260331120503.0Z" + ], + "whenCreated": [ + "20260331120503.0Z" + ] + } + }, + { + "attributes": { + "cn": "ipsecNFA{594272FD-071D-11D3-AD22-0060B0ECCA17}", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "description": [ + "Permit unsecure ICMP packets to pass through." + ], + "distinguishedName": "CN=ipsecNFA{594272FD-071D-11D3-AD22-0060B0ECCA17},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "ipsecData": { + "encoded": "AKy7EY1J0RGGOQCgJI0wISoAAAABAAAABQAAAAIAAAAAAP3///8CAAAAAAAAAAAAAAAAAAEAAAACAAAAAAAA", + "encoding": "base64" + }, + "ipsecDataType": 598, + "ipsecFilterReference": [ + "CN=ipsecFilter{72385235-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "ipsecID": "{594272FD-071D-11D3-AD22-0060B0ECCA17}", + "ipsecName": "Permit unsecure ICMP packets to pass through.", + "ipsecNegotiationPolicyReference": "CN=ipsecNegotiationPolicy{7238523B-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io", + "ipsecOwnersReference": [ + "CN=ipsecPolicy{7238523C-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "isCriticalSystemObject": true, + "name": "ipsecNFA{594272FD-071D-11D3-AD22-0060B0ECCA17}", + "objectCategory": "CN=Ipsec-NFA,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "ipsecBase", + "ipsecNFA" + ], + "objectGUID": "{c9cc1012-55a9-4cc4-91cb-a97c7be05e42}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5707, + "uSNCreated": 5707, + "whenChanged": "2026-03-31 12:05:03+00:00", + "whenCreated": "2026-03-31 12:05:03+00:00" + }, + "dn": "CN=ipsecNFA{594272FD-071D-11D3-AD22-0060B0ECCA17},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "ipsecNFA{594272FD-071D-11D3-AD22-0060B0ECCA17}" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "description": [ + "Permit unsecure ICMP packets to pass through." + ], + "distinguishedName": [ + "CN=ipsecNFA{594272FD-071D-11D3-AD22-0060B0ECCA17},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "ipsecData": [ + { + "encoded": "AKy7EY1J0RGGOQCgJI0wISoAAAABAAAABQAAAAIAAAAAAP3///8CAAAAAAAAAAAAAAAAAAEAAAACAAAAAAAA", + "encoding": "base64" + } + ], + "ipsecDataType": [ + "598" + ], + "ipsecFilterReference": [ + "CN=ipsecFilter{72385235-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "ipsecID": [ + "{594272FD-071D-11D3-AD22-0060B0ECCA17}" + ], + "ipsecName": [ + "Permit unsecure ICMP packets to pass through." + ], + "ipsecNegotiationPolicyReference": [ + "CN=ipsecNegotiationPolicy{7238523B-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "ipsecOwnersReference": [ + "CN=ipsecPolicy{7238523C-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "ipsecNFA{594272FD-071D-11D3-AD22-0060B0ECCA17}" + ], + "objectCategory": [ + "CN=Ipsec-NFA,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "ipsecBase", + "ipsecNFA" + ], + "objectGUID": [ + { + "encoded": "EhDMyalVxEyRy6l8e+BeQg==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5707" + ], + "uSNCreated": [ + "5707" + ], + "whenChanged": [ + "20260331120503.0Z" + ], + "whenCreated": [ + "20260331120503.0Z" + ] + } + }, + { + "attributes": { + "cn": "ipsecNegotiationPolicy{7238523F-70FA-11D1-864C-14A300000000}", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "description": [ + "Accepts unsecured communication, but always requires clients to establish trust and security methods. Will NOT communicate with untrusted clients." + ], + "distinguishedName": "CN=ipsecNegotiationPolicy{7238523F-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io", + "iPSECNegotiationPolicyAction": "{3F91A81A-7647-11D1-864D-D46A00000000}", + "iPSECNegotiationPolicyType": "{62F49E10-6C37-11D1-864C-14A300000000}", + "instanceType": 4, + "ipsecData": { + "encoded": "uSDcgMgu0RGongCgJI0wIUQBAAAEAAAAhAMAAKCGAQAAAAAAAAAAAAEAAAADAAAAAgAAAAIAAABAAAAACAAAAHUAcgByAGUAbgB0AEMAbwBuAHQAcgBvAGwAUwBlAHQAXABTAGUAcgCEAwAAoIYBAAAAAAAAAAAAAQAAAAMAAAABAAAAAgAAAEAAAAAIAAAAcABzAGUAYwBOAEYAQQB7ADcAMgAzADgANQAyADMARQAtADcAMABGAIQDAACghgEAAAAAAAAAAAABAAAAAQAAAAIAAAACAAAAQAAAAAgAAABsAGkAYwB5AFwATABvAGMAYQBsAFwAaQBwAHMAZQBjAE4ARgBBAHsAhAMAAKCGAQAAAAAAAAAAAAEAAAABAAAAAQAAAAIAAABAAAAACAAAAGUAYwBOAEYAQQB7AEIARgBDADcAQwAzADUAQQAtAEIANQA5ADIALQAA", + "encoding": "base64" + }, + "ipsecDataType": 598, + "ipsecID": "{7238523F-70FA-11D1-864C-14A300000000}", + "ipsecName": "Require Security", + "ipsecOwnersReference": [ + "CN=ipsecNFA{7238523E-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "isCriticalSystemObject": true, + "name": "ipsecNegotiationPolicy{7238523F-70FA-11D1-864C-14A300000000}", + "objectCategory": "CN=Ipsec-Negotiation-Policy,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "ipsecBase", + "ipsecNegotiationPolicy" + ], + "objectGUID": "{8e4ef0d0-fddf-4e57-b38c-74e2f109aab9}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5712, + "uSNCreated": 5712, + "whenChanged": "2026-03-31 12:05:03+00:00", + "whenCreated": "2026-03-31 12:05:03+00:00" + }, + "dn": "CN=ipsecNegotiationPolicy{7238523F-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "ipsecNegotiationPolicy{7238523F-70FA-11D1-864C-14A300000000}" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "description": [ + "Accepts unsecured communication, but always requires clients to establish trust and security methods. Will NOT communicate with untrusted clients." + ], + "distinguishedName": [ + "CN=ipsecNegotiationPolicy{7238523F-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "iPSECNegotiationPolicyAction": [ + "{3F91A81A-7647-11D1-864D-D46A00000000}" + ], + "iPSECNegotiationPolicyType": [ + "{62F49E10-6C37-11D1-864C-14A300000000}" + ], + "instanceType": [ + "4" + ], + "ipsecData": [ + { + "encoded": "uSDcgMgu0RGongCgJI0wIUQBAAAEAAAAhAMAAKCGAQAAAAAAAAAAAAEAAAADAAAAAgAAAAIAAABAAAAACAAAAHUAcgByAGUAbgB0AEMAbwBuAHQAcgBvAGwAUwBlAHQAXABTAGUAcgCEAwAAoIYBAAAAAAAAAAAAAQAAAAMAAAABAAAAAgAAAEAAAAAIAAAAcABzAGUAYwBOAEYAQQB7ADcAMgAzADgANQAyADMARQAtADcAMABGAIQDAACghgEAAAAAAAAAAAABAAAAAQAAAAIAAAACAAAAQAAAAAgAAABsAGkAYwB5AFwATABvAGMAYQBsAFwAaQBwAHMAZQBjAE4ARgBBAHsAhAMAAKCGAQAAAAAAAAAAAAEAAAABAAAAAQAAAAIAAABAAAAACAAAAGUAYwBOAEYAQQB7AEIARgBDADcAQwAzADUAQQAtAEIANQA5ADIALQAA", + "encoding": "base64" + } + ], + "ipsecDataType": [ + "598" + ], + "ipsecID": [ + "{7238523F-70FA-11D1-864C-14A300000000}" + ], + "ipsecName": [ + "Require Security" + ], + "ipsecOwnersReference": [ + "CN=ipsecNFA{7238523E-70FA-11D1-864C-14A300000000},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "ipsecNegotiationPolicy{7238523F-70FA-11D1-864C-14A300000000}" + ], + "objectCategory": [ + "CN=Ipsec-Negotiation-Policy,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "ipsecBase", + "ipsecNegotiationPolicy" + ], + "objectGUID": [ + { + "encoded": "0PBOjt/9V06zjHTi8QmquQ==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5712" + ], + "uSNCreated": [ + "5712" + ], + "whenChanged": [ + "20260331120503.0Z" + ], + "whenCreated": [ + "20260331120503.0Z" + ] + } + }, + { + "attributes": { + "cn": "ipsecNegotiationPolicy{59319BF0-5EE3-11D2-ACE8-0060B0ECCA17}", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=ipsecNegotiationPolicy{59319BF0-5EE3-11D2-ACE8-0060B0ECCA17},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io", + "iPSECNegotiationPolicyAction": "{8A171DD3-77E3-11D1-8659-A04F00000000}", + "iPSECNegotiationPolicyType": "{62F49E13-6C37-11D1-864C-14A300000000}", + "instanceType": 4, + "ipsecData": { + "encoded": "uSDcgMgu0RGongCgJI0wIeQBAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAgAAAAIAAABAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAABAAAAAgAAAEAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAIAAAACAAAAQAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAQAAAAIAAABAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAQAAAEAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAAAAAABAAAAQAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", + "encoding": "base64" + }, + "ipsecDataType": 598, + "ipsecID": "{59319BF0-5EE3-11D2-ACE8-0060B0ECCA17}", + "ipsecOwnersReference": [ + "CN=ipsecNFA{59319BF3-5EE3-11D2-ACE8-0060B0ECCA17},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "isCriticalSystemObject": true, + "name": "ipsecNegotiationPolicy{59319BF0-5EE3-11D2-ACE8-0060B0ECCA17}", + "objectCategory": "CN=Ipsec-Negotiation-Policy,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "ipsecBase", + "ipsecNegotiationPolicy" + ], + "objectGUID": "{b983452e-013d-46fc-a002-08d1bc727308}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5709, + "uSNCreated": 5709, + "whenChanged": "2026-03-31 12:05:03+00:00", + "whenCreated": "2026-03-31 12:05:03+00:00" + }, + "dn": "CN=ipsecNegotiationPolicy{59319BF0-5EE3-11D2-ACE8-0060B0ECCA17},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "ipsecNegotiationPolicy{59319BF0-5EE3-11D2-ACE8-0060B0ECCA17}" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=ipsecNegotiationPolicy{59319BF0-5EE3-11D2-ACE8-0060B0ECCA17},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "iPSECNegotiationPolicyAction": [ + "{8A171DD3-77E3-11D1-8659-A04F00000000}" + ], + "iPSECNegotiationPolicyType": [ + "{62F49E13-6C37-11D1-864C-14A300000000}" + ], + "instanceType": [ + "4" + ], + "ipsecData": [ + { + "encoded": "uSDcgMgu0RGongCgJI0wIeQBAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAgAAAAIAAABAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAABAAAAAgAAAEAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAIAAAACAAAAQAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAQAAAAIAAABAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAQAAAEAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAAAAAABAAAAQAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", + "encoding": "base64" + } + ], + "ipsecDataType": [ + "598" + ], + "ipsecID": [ + "{59319BF0-5EE3-11D2-ACE8-0060B0ECCA17}" + ], + "ipsecOwnersReference": [ + "CN=ipsecNFA{59319BF3-5EE3-11D2-ACE8-0060B0ECCA17},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "ipsecNegotiationPolicy{59319BF0-5EE3-11D2-ACE8-0060B0ECCA17}" + ], + "objectCategory": [ + "CN=Ipsec-Negotiation-Policy,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "ipsecBase", + "ipsecNegotiationPolicy" + ], + "objectGUID": [ + { + "encoded": "LkWDuT0B/EagAgjRvHJzCA==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5709" + ], + "uSNCreated": [ + "5709" + ], + "whenChanged": [ + "20260331120503.0Z" + ], + "whenCreated": [ + "20260331120503.0Z" + ] + } + }, + { + "attributes": { + "cn": "ipsecNFA{6A1F5C6F-72B7-11D2-ACF0-0060B0ECCA17}", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "description": [ + "Version Information Object" + ], + "distinguishedName": "CN=ipsecNFA{6A1F5C6F-72B7-11D2-ACF0-0060B0ECCA17},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "ipsecData": { + "encoded": "b1wfardy0hGs8ABgsOzKF1AAAAAAAAEApmamNhoAAABXAGkAbgBkAG8AdwBzACAAMgAwADAAMAAAABwAAABBAGQAbQBpAG4AaQBzAHQAcgBhAHQAbwByAAAABgAAAA0ACgAAAACsuxGNSdERhjkAoCSNMCEqAAAAAQAAAAUAAAACAAAAAAD9////AgAAAAAAAAAAAAAAAAABAAAAAgAAAAAAAA==", + "encoding": "base64" + }, + "ipsecDataType": 598, + "ipsecID": "{6A1F5C6F-72B7-11D2-ACF0-0060B0ECCA17}", + "ipsecName": "Version Information Object", + "isCriticalSystemObject": true, + "name": "ipsecNFA{6A1F5C6F-72B7-11D2-ACF0-0060B0ECCA17}", + "objectCategory": "CN=Ipsec-NFA,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "ipsecBase", + "ipsecNFA" + ], + "objectGUID": "{dec62f67-a119-4c7b-b889-37151aa836f0}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5706, + "uSNCreated": 5706, + "whenChanged": "2026-03-31 12:05:03+00:00", + "whenCreated": "2026-03-31 12:05:03+00:00" + }, + "dn": "CN=ipsecNFA{6A1F5C6F-72B7-11D2-ACF0-0060B0ECCA17},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "ipsecNFA{6A1F5C6F-72B7-11D2-ACF0-0060B0ECCA17}" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "description": [ + "Version Information Object" + ], + "distinguishedName": [ + "CN=ipsecNFA{6A1F5C6F-72B7-11D2-ACF0-0060B0ECCA17},CN=IP Security,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "ipsecData": [ + { + "encoded": "b1wfardy0hGs8ABgsOzKF1AAAAAAAAEApmamNhoAAABXAGkAbgBkAG8AdwBzACAAMgAwADAAMAAAABwAAABBAGQAbQBpAG4AaQBzAHQAcgBhAHQAbwByAAAABgAAAA0ACgAAAACsuxGNSdERhjkAoCSNMCEqAAAAAQAAAAUAAAACAAAAAAD9////AgAAAAAAAAAAAAAAAAABAAAAAgAAAAAAAA==", + "encoding": "base64" + } + ], + "ipsecDataType": [ + "598" + ], + "ipsecID": [ + "{6A1F5C6F-72B7-11D2-ACF0-0060B0ECCA17}" + ], + "ipsecName": [ + "Version Information Object" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "ipsecNFA{6A1F5C6F-72B7-11D2-ACF0-0060B0ECCA17}" + ], + "objectCategory": [ + "CN=Ipsec-NFA,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "ipsecBase", + "ipsecNFA" + ], + "objectGUID": [ + { + "encoded": "Zy/G3hmhe0y4iTcVGqg28A==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5706" + ], + "uSNCreated": [ + "5706" + ], + "whenChanged": [ + "20260331120503.0Z" + ], + "whenCreated": [ + "20260331120503.0Z" + ] + } + }, + { + "attributes": { + "cn": "AdminSDHolder", + "dSCorePropagationData": [ + "2026-03-31 16:06:33+00:00", + "2026-03-31 15:06:33+00:00", + "2026-03-31 14:06:33+00:00", + "2026-03-31 13:06:33+00:00", + "1601-01-01 00:00:00+00:00" + ], + "distinguishedName": "CN=AdminSDHolder,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "isCriticalSystemObject": true, + "name": "AdminSDHolder", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{df4b1097-17e2-4b9a-999e-704e0e1e33e1}", + "showInAdvancedViewOnly": true, + "systemFlags": -1946157056, + "uSNChanged": 12774, + "uSNCreated": 5716, + "whenChanged": "2026-03-31 12:23:23+00:00", + "whenCreated": "2026-03-31 12:05:03+00:00" + }, + "dn": "CN=AdminSDHolder,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "AdminSDHolder" + ], + "dSCorePropagationData": [ + "20260331160633.0Z", + "20260331150633.0Z", + "20260331140633.0Z", + "20260331130633.0Z", + "16010101000000.0Z" + ], + "distinguishedName": [ + "CN=AdminSDHolder,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "AdminSDHolder" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "lxBL3+IXmkuZnnBODh4z4Q==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "systemFlags": [ + "-1946157056" + ], + "uSNChanged": [ + "12774" + ], + "uSNCreated": [ + "5716" + ], + "whenChanged": [ + "20260331122323.0Z" + ], + "whenCreated": [ + "20260331120503.0Z" + ] + } + }, + { + "attributes": { + "cn": "ComPartitions", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=ComPartitions,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "isCriticalSystemObject": true, + "name": "ComPartitions", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{51dd398d-07dd-48dc-83c7-a0d9ca21e1be}", + "showInAdvancedViewOnly": true, + "systemFlags": -1946157056, + "uSNChanged": 5717, + "uSNCreated": 5717, + "whenChanged": "2026-03-31 12:05:03+00:00", + "whenCreated": "2026-03-31 12:05:03+00:00" + }, + "dn": "CN=ComPartitions,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "ComPartitions" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=ComPartitions,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "ComPartitions" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "jTndUd0H3EiDx6DZyiHhvg==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "systemFlags": [ + "-1946157056" + ], + "uSNChanged": [ + "5717" + ], + "uSNCreated": [ + "5717" + ], + "whenChanged": [ + "20260331120503.0Z" + ], + "whenCreated": [ + "20260331120503.0Z" + ] + } + }, + { + "attributes": { + "cn": "ComPartitionSets", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=ComPartitionSets,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "isCriticalSystemObject": true, + "name": "ComPartitionSets", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{740cd5ab-aa21-40b1-8f32-28f77728e976}", + "showInAdvancedViewOnly": true, + "systemFlags": -1946157056, + "uSNChanged": 5718, + "uSNCreated": 5718, + "whenChanged": "2026-03-31 12:05:03+00:00", + "whenCreated": "2026-03-31 12:05:03+00:00" + }, + "dn": "CN=ComPartitionSets,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "ComPartitionSets" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=ComPartitionSets,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "ComPartitionSets" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "q9UMdCGqsUCPMij3dyjpdg==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "systemFlags": [ + "-1946157056" + ], + "uSNChanged": [ + "5718" + ], + "uSNCreated": [ + "5718" + ], + "whenChanged": [ + "20260331120503.0Z" + ], + "whenCreated": [ + "20260331120503.0Z" + ] + } + }, + { + "attributes": { + "cn": "WMIPolicy", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:00+00:00" + ], + "distinguishedName": "CN=WMIPolicy,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "WMIPolicy", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{b17b9085-33c2-4433-9013-d6bff70c0d5d}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5719, + "uSNCreated": 5719, + "whenChanged": "2026-03-31 12:05:03+00:00", + "whenCreated": "2026-03-31 12:05:03+00:00" + }, + "dn": "CN=WMIPolicy,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "WMIPolicy" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000000.0Z" + ], + "distinguishedName": [ + "CN=WMIPolicy,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "WMIPolicy" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "hZB7scIzM0SQE9a/9wwNXQ==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5719" + ], + "uSNCreated": [ + "5719" + ], + "whenChanged": [ + "20260331120503.0Z" + ], + "whenCreated": [ + "20260331120503.0Z" + ] + } + }, + { + "attributes": { + "cn": "PolicyTemplate", + "dSCorePropagationData": [ + "1601-01-01 00:00:00+00:00" + ], + "distinguishedName": "CN=PolicyTemplate,CN=WMIPolicy,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "PolicyTemplate", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{eaa9509b-eec5-4645-ae7c-b4afda56aa3c}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5720, + "uSNCreated": 5720, + "whenChanged": "2026-03-31 12:05:03+00:00", + "whenCreated": "2026-03-31 12:05:03+00:00" + }, + "dn": "CN=PolicyTemplate,CN=WMIPolicy,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "PolicyTemplate" + ], + "dSCorePropagationData": [ + "16010101000000.0Z" + ], + "distinguishedName": [ + "CN=PolicyTemplate,CN=WMIPolicy,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "PolicyTemplate" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "m1Cp6sXuRUaufLSv2laqPA==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5720" + ], + "uSNCreated": [ + "5720" + ], + "whenChanged": [ + "20260331120503.0Z" + ], + "whenCreated": [ + "20260331120503.0Z" + ] + } + }, + { + "attributes": { + "cn": "SOM", + "dSCorePropagationData": [ + "1601-01-01 00:00:00+00:00" + ], + "distinguishedName": "CN=SOM,CN=WMIPolicy,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "SOM", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{9ed65938-01fa-4262-812c-62861a9ea5b2}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5721, + "uSNCreated": 5721, + "whenChanged": "2026-03-31 12:05:03+00:00", + "whenCreated": "2026-03-31 12:05:03+00:00" + }, + "dn": "CN=SOM,CN=WMIPolicy,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "SOM" + ], + "dSCorePropagationData": [ + "16010101000000.0Z" + ], + "distinguishedName": [ + "CN=SOM,CN=WMIPolicy,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "SOM" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "OFnWnvoBYkKBLGKGGp6lsg==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5721" + ], + "uSNCreated": [ + "5721" + ], + "whenChanged": [ + "20260331120503.0Z" + ], + "whenCreated": [ + "20260331120503.0Z" + ] + } + }, + { + "attributes": { + "cn": "PolicyType", + "dSCorePropagationData": [ + "1601-01-01 00:00:00+00:00" + ], + "distinguishedName": "CN=PolicyType,CN=WMIPolicy,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "PolicyType", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{57a315cb-11b4-4594-a225-ee48608178d2}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5722, + "uSNCreated": 5722, + "whenChanged": "2026-03-31 12:05:03+00:00", + "whenCreated": "2026-03-31 12:05:03+00:00" + }, + "dn": "CN=PolicyType,CN=WMIPolicy,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "PolicyType" + ], + "dSCorePropagationData": [ + "16010101000000.0Z" + ], + "distinguishedName": [ + "CN=PolicyType,CN=WMIPolicy,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "PolicyType" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "yxWjV7QRlEWiJe5IYIF40g==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5722" + ], + "uSNCreated": [ + "5722" + ], + "whenChanged": [ + "20260331120503.0Z" + ], + "whenCreated": [ + "20260331120503.0Z" + ] + } + }, + { + "attributes": { + "cn": "WMIGPO", + "dSCorePropagationData": [ + "1601-01-01 00:00:00+00:00" + ], + "distinguishedName": "CN=WMIGPO,CN=WMIPolicy,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "WMIGPO", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{410a33e8-db2c-43c9-945c-fa9a9d5d66bd}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5723, + "uSNCreated": 5723, + "whenChanged": "2026-03-31 12:05:03+00:00", + "whenCreated": "2026-03-31 12:05:03+00:00" + }, + "dn": "CN=WMIGPO,CN=WMIPolicy,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "WMIGPO" + ], + "dSCorePropagationData": [ + "16010101000000.0Z" + ], + "distinguishedName": [ + "CN=WMIGPO,CN=WMIPolicy,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "WMIGPO" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "6DMKQSzbyUOUXPqanV1mvQ==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5723" + ], + "uSNCreated": [ + "5723" + ], + "whenChanged": [ + "20260331120503.0Z" + ], + "whenCreated": [ + "20260331120503.0Z" + ] + } + }, + { + "attributes": { + "cn": "DomainUpdates", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "DomainUpdates", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{da7b06e3-3d7e-4e30-a121-4c3d856f3018}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5724, + "uSNCreated": 5724, + "whenChanged": "2026-03-31 12:05:03+00:00", + "whenCreated": "2026-03-31 12:05:03+00:00" + }, + "dn": "CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "DomainUpdates" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "DomainUpdates" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "4wZ72n49ME6hIUw9hW8wGA==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5724" + ], + "uSNCreated": [ + "5724" + ], + "whenChanged": [ + "20260331120503.0Z" + ], + "whenCreated": [ + "20260331120503.0Z" + ] + } + }, + { + "attributes": { + "cn": "Operations", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "Operations", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{0665b656-372a-41ae-b246-86698e1adbc3}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5725, + "uSNCreated": 5725, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "Operations" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "Operations" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "VrZlBio3rkGyRoZpjhrbww==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5725" + ], + "uSNCreated": [ + "5725" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "ab402345-d3c3-455d-9ff7-40268a1099b6", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=ab402345-d3c3-455d-9ff7-40268a1099b6,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "ab402345-d3c3-455d-9ff7-40268a1099b6", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{f58a8ecd-822c-4a86-8a57-032080e34ca7}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5726, + "uSNCreated": 5726, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=ab402345-d3c3-455d-9ff7-40268a1099b6,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "ab402345-d3c3-455d-9ff7-40268a1099b6" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=ab402345-d3c3-455d-9ff7-40268a1099b6,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "ab402345-d3c3-455d-9ff7-40268a1099b6" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "zY6K9SyChkqKVwMggONMpw==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5726" + ], + "uSNCreated": [ + "5726" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "bab5f54d-06c8-48de-9b87-d78b796564e4", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=bab5f54d-06c8-48de-9b87-d78b796564e4,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "bab5f54d-06c8-48de-9b87-d78b796564e4", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{859808d0-7ef7-4b42-bd40-61079b27332a}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5727, + "uSNCreated": 5727, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=bab5f54d-06c8-48de-9b87-d78b796564e4,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "bab5f54d-06c8-48de-9b87-d78b796564e4" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=bab5f54d-06c8-48de-9b87-d78b796564e4,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "bab5f54d-06c8-48de-9b87-d78b796564e4" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "0AiYhfd+Qku9QGEHmyczKg==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5727" + ], + "uSNCreated": [ + "5727" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "f3dd09dd-25e8-4f9c-85df-12d6d2f2f2f5", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=f3dd09dd-25e8-4f9c-85df-12d6d2f2f2f5,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "f3dd09dd-25e8-4f9c-85df-12d6d2f2f2f5", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{6a0c2d58-a248-466f-8512-b5697ecaf4c8}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5728, + "uSNCreated": 5728, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=f3dd09dd-25e8-4f9c-85df-12d6d2f2f2f5,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "f3dd09dd-25e8-4f9c-85df-12d6d2f2f2f5" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=f3dd09dd-25e8-4f9c-85df-12d6d2f2f2f5,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "f3dd09dd-25e8-4f9c-85df-12d6d2f2f2f5" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "WC0Makiib0aFErVpfsr0yA==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5728" + ], + "uSNCreated": [ + "5728" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "2416c60a-fe15-4d7a-a61e-dffd5df864d3", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=2416c60a-fe15-4d7a-a61e-dffd5df864d3,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "2416c60a-fe15-4d7a-a61e-dffd5df864d3", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{a2dab28b-8446-4b0e-af3a-32ec8a5ae5bd}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5729, + "uSNCreated": 5729, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=2416c60a-fe15-4d7a-a61e-dffd5df864d3,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "2416c60a-fe15-4d7a-a61e-dffd5df864d3" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=2416c60a-fe15-4d7a-a61e-dffd5df864d3,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "2416c60a-fe15-4d7a-a61e-dffd5df864d3" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "i7LaokaEDkuvOjLsilrlvQ==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5729" + ], + "uSNCreated": [ + "5729" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "7868d4c8-ac41-4e05-b401-776280e8e9f1", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=7868d4c8-ac41-4e05-b401-776280e8e9f1,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "7868d4c8-ac41-4e05-b401-776280e8e9f1", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{e6a68292-57fe-4c22-afaf-a49d2906e13f}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5730, + "uSNCreated": 5730, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=7868d4c8-ac41-4e05-b401-776280e8e9f1,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "7868d4c8-ac41-4e05-b401-776280e8e9f1" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=7868d4c8-ac41-4e05-b401-776280e8e9f1,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "7868d4c8-ac41-4e05-b401-776280e8e9f1" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "koKm5v5XIkyvr6SdKQbhPw==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5730" + ], + "uSNCreated": [ + "5730" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "860c36ed-5241-4c62-a18b-cf6ff9994173", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=860c36ed-5241-4c62-a18b-cf6ff9994173,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "860c36ed-5241-4c62-a18b-cf6ff9994173", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{d96aa2b1-b8fb-44c3-91ac-d7f1c2bd2f51}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5731, + "uSNCreated": 5731, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=860c36ed-5241-4c62-a18b-cf6ff9994173,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "860c36ed-5241-4c62-a18b-cf6ff9994173" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=860c36ed-5241-4c62-a18b-cf6ff9994173,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "860c36ed-5241-4c62-a18b-cf6ff9994173" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "saJq2fu4w0SRrNfxwr0vUQ==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5731" + ], + "uSNCreated": [ + "5731" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "0e660ea3-8a5e-4495-9ad7-ca1bd4638f9e", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=0e660ea3-8a5e-4495-9ad7-ca1bd4638f9e,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "0e660ea3-8a5e-4495-9ad7-ca1bd4638f9e", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{663ea72e-a055-4589-9b62-a6fd4f3b8da4}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5732, + "uSNCreated": 5732, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=0e660ea3-8a5e-4495-9ad7-ca1bd4638f9e,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "0e660ea3-8a5e-4495-9ad7-ca1bd4638f9e" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=0e660ea3-8a5e-4495-9ad7-ca1bd4638f9e,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "0e660ea3-8a5e-4495-9ad7-ca1bd4638f9e" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "Lqc+ZlWgiUWbYqb9TzuNpA==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5732" + ], + "uSNCreated": [ + "5732" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "a86fe12a-0f62-4e2a-b271-d27f601f8182", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=a86fe12a-0f62-4e2a-b271-d27f601f8182,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "a86fe12a-0f62-4e2a-b271-d27f601f8182", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{549833c1-bbfc-443e-9a1d-df8ca4bc4d54}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5733, + "uSNCreated": 5733, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=a86fe12a-0f62-4e2a-b271-d27f601f8182,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "a86fe12a-0f62-4e2a-b271-d27f601f8182" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=a86fe12a-0f62-4e2a-b271-d27f601f8182,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "a86fe12a-0f62-4e2a-b271-d27f601f8182" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "wTOYVPy7PkSaHd+MpLxNVA==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5733" + ], + "uSNCreated": [ + "5733" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "d85c0bfd-094f-4cad-a2b5-82ac9268475d", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=d85c0bfd-094f-4cad-a2b5-82ac9268475d,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "d85c0bfd-094f-4cad-a2b5-82ac9268475d", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{15e0394e-6965-4cea-96c9-277ad1e527b2}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5734, + "uSNCreated": 5734, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=d85c0bfd-094f-4cad-a2b5-82ac9268475d,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "d85c0bfd-094f-4cad-a2b5-82ac9268475d" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=d85c0bfd-094f-4cad-a2b5-82ac9268475d,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "d85c0bfd-094f-4cad-a2b5-82ac9268475d" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "TjngFWVp6kyWySd60eUnsg==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5734" + ], + "uSNCreated": [ + "5734" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "6ada9ff7-c9df-45c1-908e-9fef2fab008a", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=6ada9ff7-c9df-45c1-908e-9fef2fab008a,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "6ada9ff7-c9df-45c1-908e-9fef2fab008a", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{8dae5f4e-66b3-4ffe-83d1-ca8a17dfaeb3}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5735, + "uSNCreated": 5735, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=6ada9ff7-c9df-45c1-908e-9fef2fab008a,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "6ada9ff7-c9df-45c1-908e-9fef2fab008a" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=6ada9ff7-c9df-45c1-908e-9fef2fab008a,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "6ada9ff7-c9df-45c1-908e-9fef2fab008a" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "Tl+ujbNm/k+D0cqKF9+usw==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5735" + ], + "uSNCreated": [ + "5735" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "10b3ad2a-6883-4fa7-90fc-6377cbdc1b26", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=10b3ad2a-6883-4fa7-90fc-6377cbdc1b26,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "10b3ad2a-6883-4fa7-90fc-6377cbdc1b26", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{f2c4e39b-4d4d-492f-b00d-2010512c16b6}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5736, + "uSNCreated": 5736, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=10b3ad2a-6883-4fa7-90fc-6377cbdc1b26,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "10b3ad2a-6883-4fa7-90fc-6377cbdc1b26" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=10b3ad2a-6883-4fa7-90fc-6377cbdc1b26,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "10b3ad2a-6883-4fa7-90fc-6377cbdc1b26" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "m+PE8k1NL0mwDSAQUSwWtg==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5736" + ], + "uSNCreated": [ + "5736" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "98de1d3e-6611-443b-8b4e-f4337f1ded0b", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=98de1d3e-6611-443b-8b4e-f4337f1ded0b,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "98de1d3e-6611-443b-8b4e-f4337f1ded0b", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{e7a84de3-b43b-42c5-bc04-f98c848ffcc6}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5737, + "uSNCreated": 5737, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=98de1d3e-6611-443b-8b4e-f4337f1ded0b,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "98de1d3e-6611-443b-8b4e-f4337f1ded0b" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=98de1d3e-6611-443b-8b4e-f4337f1ded0b,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "98de1d3e-6611-443b-8b4e-f4337f1ded0b" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "402o5zu0xUK8BPmMhI/8xg==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5737" + ], + "uSNCreated": [ + "5737" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "f607fd87-80cf-45e2-890b-6cf97ec0e284", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=f607fd87-80cf-45e2-890b-6cf97ec0e284,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "f607fd87-80cf-45e2-890b-6cf97ec0e284", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{a84a604c-e017-412d-b1e8-e5c1abf6cba9}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5738, + "uSNCreated": 5738, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=f607fd87-80cf-45e2-890b-6cf97ec0e284,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "f607fd87-80cf-45e2-890b-6cf97ec0e284" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=f607fd87-80cf-45e2-890b-6cf97ec0e284,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "f607fd87-80cf-45e2-890b-6cf97ec0e284" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "TGBKqBfgLUGx6OXBq/bLqQ==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5738" + ], + "uSNCreated": [ + "5738" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "9cac1f66-2167-47ad-a472-2a13251310e4", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=9cac1f66-2167-47ad-a472-2a13251310e4,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "9cac1f66-2167-47ad-a472-2a13251310e4", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{bd91571f-ecb7-44e2-92fb-71a45834a921}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5739, + "uSNCreated": 5739, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=9cac1f66-2167-47ad-a472-2a13251310e4,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "9cac1f66-2167-47ad-a472-2a13251310e4" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=9cac1f66-2167-47ad-a472-2a13251310e4,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "9cac1f66-2167-47ad-a472-2a13251310e4" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "H1eRvbfs4kSS+3GkWDSpIQ==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5739" + ], + "uSNCreated": [ + "5739" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "6ff880d6-11e7-4ed1-a20f-aac45da48650", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=6ff880d6-11e7-4ed1-a20f-aac45da48650,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "6ff880d6-11e7-4ed1-a20f-aac45da48650", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{8ebde66a-f185-4cfa-b90e-4650a436d1fd}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5740, + "uSNCreated": 5740, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=6ff880d6-11e7-4ed1-a20f-aac45da48650,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "6ff880d6-11e7-4ed1-a20f-aac45da48650" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=6ff880d6-11e7-4ed1-a20f-aac45da48650,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "6ff880d6-11e7-4ed1-a20f-aac45da48650" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "aua9joXx+ky5DkZQpDbR/Q==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5740" + ], + "uSNCreated": [ + "5740" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "446f24ea-cfd5-4c52-8346-96e170bcb912", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=446f24ea-cfd5-4c52-8346-96e170bcb912,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "446f24ea-cfd5-4c52-8346-96e170bcb912", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{2419a494-d305-449e-870b-1fb5493eb701}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5741, + "uSNCreated": 5741, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=446f24ea-cfd5-4c52-8346-96e170bcb912,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "446f24ea-cfd5-4c52-8346-96e170bcb912" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=446f24ea-cfd5-4c52-8346-96e170bcb912,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "446f24ea-cfd5-4c52-8346-96e170bcb912" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "lKQZJAXTnkSHCx+1ST63AQ==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5741" + ], + "uSNCreated": [ + "5741" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "51cba88b-99cf-4e16-bef2-c427b38d0767", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=51cba88b-99cf-4e16-bef2-c427b38d0767,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "51cba88b-99cf-4e16-bef2-c427b38d0767", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{152aba0a-7299-4e86-af0b-6f95ef68768d}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5742, + "uSNCreated": 5742, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=51cba88b-99cf-4e16-bef2-c427b38d0767,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "51cba88b-99cf-4e16-bef2-c427b38d0767" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=51cba88b-99cf-4e16-bef2-c427b38d0767,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "51cba88b-99cf-4e16-bef2-c427b38d0767" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "CroqFZlyhk6vC2+V72h2jQ==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5742" + ], + "uSNCreated": [ + "5742" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "a3dac986-80e7-4e59-a059-54cb1ab43cb9", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=a3dac986-80e7-4e59-a059-54cb1ab43cb9,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "a3dac986-80e7-4e59-a059-54cb1ab43cb9", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{cc4373e9-f002-4e82-9a84-267d7213799e}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5743, + "uSNCreated": 5743, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=a3dac986-80e7-4e59-a059-54cb1ab43cb9,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "a3dac986-80e7-4e59-a059-54cb1ab43cb9" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=a3dac986-80e7-4e59-a059-54cb1ab43cb9,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "a3dac986-80e7-4e59-a059-54cb1ab43cb9" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "6XNDzALwgk6ahCZ9chN5ng==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5743" + ], + "uSNCreated": [ + "5743" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "293f0798-ea5c-4455-9f5d-45f33a30703b", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=293f0798-ea5c-4455-9f5d-45f33a30703b,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "293f0798-ea5c-4455-9f5d-45f33a30703b", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{0344e9a3-1dd2-4589-a79b-9478010cac5d}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5744, + "uSNCreated": 5744, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=293f0798-ea5c-4455-9f5d-45f33a30703b,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "293f0798-ea5c-4455-9f5d-45f33a30703b" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=293f0798-ea5c-4455-9f5d-45f33a30703b,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "293f0798-ea5c-4455-9f5d-45f33a30703b" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "o+lEA9IdiUWnm5R4AQysXQ==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5744" + ], + "uSNCreated": [ + "5744" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "5c82b233-75fc-41b3-ac71-c69592e6bf15", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=5c82b233-75fc-41b3-ac71-c69592e6bf15,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "5c82b233-75fc-41b3-ac71-c69592e6bf15", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{a7ce1908-7a3d-47e3-8fb6-c0525a17e3ed}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5745, + "uSNCreated": 5745, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=5c82b233-75fc-41b3-ac71-c69592e6bf15,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "5c82b233-75fc-41b3-ac71-c69592e6bf15" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=5c82b233-75fc-41b3-ac71-c69592e6bf15,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "5c82b233-75fc-41b3-ac71-c69592e6bf15" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "CBnOpz1640ePtsBSWhfj7Q==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5745" + ], + "uSNCreated": [ + "5745" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "7ffef925-405b-440a-8d58-35e8cd6e98c3", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=7ffef925-405b-440a-8d58-35e8cd6e98c3,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "7ffef925-405b-440a-8d58-35e8cd6e98c3", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{293749db-e9ea-4d51-a0e7-706ed59821e7}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5746, + "uSNCreated": 5746, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=7ffef925-405b-440a-8d58-35e8cd6e98c3,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "7ffef925-405b-440a-8d58-35e8cd6e98c3" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=7ffef925-405b-440a-8d58-35e8cd6e98c3,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "7ffef925-405b-440a-8d58-35e8cd6e98c3" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "20k3KerpUU2g53Bu1Zgh5w==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5746" + ], + "uSNCreated": [ + "5746" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "4dfbb973-8a62-4310-a90c-776e00f83222", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=4dfbb973-8a62-4310-a90c-776e00f83222,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "4dfbb973-8a62-4310-a90c-776e00f83222", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{1106b4c4-ffcb-4526-a95a-d0b15ea2d07e}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5747, + "uSNCreated": 5747, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=4dfbb973-8a62-4310-a90c-776e00f83222,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "4dfbb973-8a62-4310-a90c-776e00f83222" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=4dfbb973-8a62-4310-a90c-776e00f83222,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "4dfbb973-8a62-4310-a90c-776e00f83222" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "xLQGEcv/JkWpWtCxXqLQfg==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5747" + ], + "uSNCreated": [ + "5747" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "8437C3D8-7689-4200-BF38-79E4AC33DFA0", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=8437C3D8-7689-4200-BF38-79E4AC33DFA0,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "8437C3D8-7689-4200-BF38-79E4AC33DFA0", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{bcb281cb-0841-4d95-970b-ad5be54c6358}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5748, + "uSNCreated": 5748, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=8437C3D8-7689-4200-BF38-79E4AC33DFA0,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "8437C3D8-7689-4200-BF38-79E4AC33DFA0" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=8437C3D8-7689-4200-BF38-79E4AC33DFA0,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "8437C3D8-7689-4200-BF38-79E4AC33DFA0" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "y4GyvEEIlU2XC61b5UxjWA==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5748" + ], + "uSNCreated": [ + "5748" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "7cfb016c-4f87-4406-8166-bd9df943947f", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=7cfb016c-4f87-4406-8166-bd9df943947f,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "7cfb016c-4f87-4406-8166-bd9df943947f", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{fee8e960-500e-43ea-9c3f-9cce13edb3fc}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5749, + "uSNCreated": 5749, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=7cfb016c-4f87-4406-8166-bd9df943947f,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "7cfb016c-4f87-4406-8166-bd9df943947f" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=7cfb016c-4f87-4406-8166-bd9df943947f,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "7cfb016c-4f87-4406-8166-bd9df943947f" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "YOno/g5Q6kOcP5zOE+2z/A==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5749" + ], + "uSNCreated": [ + "5749" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "f7ed4553-d82b-49ef-a839-2f38a36bb069", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=f7ed4553-d82b-49ef-a839-2f38a36bb069,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "f7ed4553-d82b-49ef-a839-2f38a36bb069", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{0f44d294-a921-46eb-b58d-454c3d71107e}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5750, + "uSNCreated": 5750, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=f7ed4553-d82b-49ef-a839-2f38a36bb069,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "f7ed4553-d82b-49ef-a839-2f38a36bb069" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=f7ed4553-d82b-49ef-a839-2f38a36bb069,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "f7ed4553-d82b-49ef-a839-2f38a36bb069" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "lNJEDyGp60a1jUVMPXEQfg==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5750" + ], + "uSNCreated": [ + "5750" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "8ca38317-13a4-4bd4-806f-ebed6acb5d0c", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=8ca38317-13a4-4bd4-806f-ebed6acb5d0c,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "8ca38317-13a4-4bd4-806f-ebed6acb5d0c", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{1d02ed52-54e9-4587-8c2a-eb067380746e}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5751, + "uSNCreated": 5751, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=8ca38317-13a4-4bd4-806f-ebed6acb5d0c,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "8ca38317-13a4-4bd4-806f-ebed6acb5d0c" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=8ca38317-13a4-4bd4-806f-ebed6acb5d0c,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "8ca38317-13a4-4bd4-806f-ebed6acb5d0c" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "Uu0CHelUh0WMKusGc4B0bg==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5751" + ], + "uSNCreated": [ + "5751" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "3c784009-1f57-4e2a-9b04-6915c9e71961", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=3c784009-1f57-4e2a-9b04-6915c9e71961,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "3c784009-1f57-4e2a-9b04-6915c9e71961", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{3e3452e6-0b14-40d9-a4f3-0df4acbeb01a}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5752, + "uSNCreated": 5752, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=3c784009-1f57-4e2a-9b04-6915c9e71961,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "3c784009-1f57-4e2a-9b04-6915c9e71961" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=3c784009-1f57-4e2a-9b04-6915c9e71961,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "3c784009-1f57-4e2a-9b04-6915c9e71961" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "5lI0PhQL2UCk8w30rL6wGg==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5752" + ], + "uSNCreated": [ + "5752" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "6bcd5678-8314-11d6-977b-00c04f613221", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=6bcd5678-8314-11d6-977b-00c04f613221,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "6bcd5678-8314-11d6-977b-00c04f613221", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{f6a64e81-5ab5-4670-818c-a4513e2c919e}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5753, + "uSNCreated": 5753, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=6bcd5678-8314-11d6-977b-00c04f613221,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "6bcd5678-8314-11d6-977b-00c04f613221" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=6bcd5678-8314-11d6-977b-00c04f613221,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "6bcd5678-8314-11d6-977b-00c04f613221" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "gU6m9rVacEaBjKRRPiyRng==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5753" + ], + "uSNCreated": [ + "5753" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "6bcd5679-8314-11d6-977b-00c04f613221", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=6bcd5679-8314-11d6-977b-00c04f613221,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "6bcd5679-8314-11d6-977b-00c04f613221", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{64a7dddf-9961-4ab8-af9e-d6622fecc507}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5754, + "uSNCreated": 5754, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=6bcd5679-8314-11d6-977b-00c04f613221,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "6bcd5679-8314-11d6-977b-00c04f613221" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=6bcd5679-8314-11d6-977b-00c04f613221,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "6bcd5679-8314-11d6-977b-00c04f613221" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "392nZGGZuEqvntZiL+zFBw==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5754" + ], + "uSNCreated": [ + "5754" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "6bcd567a-8314-11d6-977b-00c04f613221", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=6bcd567a-8314-11d6-977b-00c04f613221,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "6bcd567a-8314-11d6-977b-00c04f613221", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{95db88d5-a9ca-4d73-88ed-bf39ce9624b6}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5755, + "uSNCreated": 5755, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=6bcd567a-8314-11d6-977b-00c04f613221,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "6bcd567a-8314-11d6-977b-00c04f613221" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=6bcd567a-8314-11d6-977b-00c04f613221,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "6bcd567a-8314-11d6-977b-00c04f613221" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "1Yjblcqpc02I7b85zpYktg==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5755" + ], + "uSNCreated": [ + "5755" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "6bcd567b-8314-11d6-977b-00c04f613221", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=6bcd567b-8314-11d6-977b-00c04f613221,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "6bcd567b-8314-11d6-977b-00c04f613221", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{662f6904-02bd-430b-a2ab-89e21e377320}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5756, + "uSNCreated": 5756, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=6bcd567b-8314-11d6-977b-00c04f613221,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "6bcd567b-8314-11d6-977b-00c04f613221" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=6bcd567b-8314-11d6-977b-00c04f613221,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "6bcd567b-8314-11d6-977b-00c04f613221" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "BGkvZr0CC0Oiq4niHjdzIA==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5756" + ], + "uSNCreated": [ + "5756" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "6bcd567c-8314-11d6-977b-00c04f613221", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=6bcd567c-8314-11d6-977b-00c04f613221,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "6bcd567c-8314-11d6-977b-00c04f613221", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{9e86a68a-45a2-4c37-96f6-fef6a37c690e}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5757, + "uSNCreated": 5757, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=6bcd567c-8314-11d6-977b-00c04f613221,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "6bcd567c-8314-11d6-977b-00c04f613221" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=6bcd567c-8314-11d6-977b-00c04f613221,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "6bcd567c-8314-11d6-977b-00c04f613221" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "iqaGnqJFN0yW9v72o3xpDg==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5757" + ], + "uSNCreated": [ + "5757" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "6bcd567d-8314-11d6-977b-00c04f613221", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=6bcd567d-8314-11d6-977b-00c04f613221,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "6bcd567d-8314-11d6-977b-00c04f613221", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{bdb0a4a7-b01a-46f4-88ce-c1c11e2be6a3}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5758, + "uSNCreated": 5758, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=6bcd567d-8314-11d6-977b-00c04f613221,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "6bcd567d-8314-11d6-977b-00c04f613221" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=6bcd567d-8314-11d6-977b-00c04f613221,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "6bcd567d-8314-11d6-977b-00c04f613221" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "p6SwvRqw9EaIzsHBHivmow==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5758" + ], + "uSNCreated": [ + "5758" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "6bcd567e-8314-11d6-977b-00c04f613221", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=6bcd567e-8314-11d6-977b-00c04f613221,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "6bcd567e-8314-11d6-977b-00c04f613221", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{4d286089-fc83-4839-9ce1-777a5f191e21}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5759, + "uSNCreated": 5759, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=6bcd567e-8314-11d6-977b-00c04f613221,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "6bcd567e-8314-11d6-977b-00c04f613221" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=6bcd567e-8314-11d6-977b-00c04f613221,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "6bcd567e-8314-11d6-977b-00c04f613221" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "iWAoTYP8OUic4Xd6XxkeIQ==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5759" + ], + "uSNCreated": [ + "5759" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "6bcd567f-8314-11d6-977b-00c04f613221", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=6bcd567f-8314-11d6-977b-00c04f613221,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "6bcd567f-8314-11d6-977b-00c04f613221", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{b491ec43-21f1-4357-9747-06f9a545d89a}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5760, + "uSNCreated": 5760, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=6bcd567f-8314-11d6-977b-00c04f613221,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "6bcd567f-8314-11d6-977b-00c04f613221" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=6bcd567f-8314-11d6-977b-00c04f613221,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "6bcd567f-8314-11d6-977b-00c04f613221" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "Q+yRtPEhV0OXRwb5pUXYmg==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5760" + ], + "uSNCreated": [ + "5760" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "6bcd5680-8314-11d6-977b-00c04f613221", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=6bcd5680-8314-11d6-977b-00c04f613221,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "6bcd5680-8314-11d6-977b-00c04f613221", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{afceebff-d016-4360-ad4b-a1b6999dd175}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5761, + "uSNCreated": 5761, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=6bcd5680-8314-11d6-977b-00c04f613221,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "6bcd5680-8314-11d6-977b-00c04f613221" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=6bcd5680-8314-11d6-977b-00c04f613221,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "6bcd5680-8314-11d6-977b-00c04f613221" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "/+vOrxbQYEOtS6G2mZ3RdQ==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5761" + ], + "uSNCreated": [ + "5761" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "6bcd5681-8314-11d6-977b-00c04f613221", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=6bcd5681-8314-11d6-977b-00c04f613221,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "6bcd5681-8314-11d6-977b-00c04f613221", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{af3a7a55-254a-4f73-92e8-940810e348ec}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5762, + "uSNCreated": 5762, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=6bcd5681-8314-11d6-977b-00c04f613221,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "6bcd5681-8314-11d6-977b-00c04f613221" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=6bcd5681-8314-11d6-977b-00c04f613221,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "6bcd5681-8314-11d6-977b-00c04f613221" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "VXo6r0olc0+S6JQIEONI7A==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5762" + ], + "uSNCreated": [ + "5762" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "6bcd5682-8314-11d6-977b-00c04f613221", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=6bcd5682-8314-11d6-977b-00c04f613221,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "6bcd5682-8314-11d6-977b-00c04f613221", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{7c03a99d-f9f7-432b-8b98-1df45ff22296}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5763, + "uSNCreated": 5763, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=6bcd5682-8314-11d6-977b-00c04f613221,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "6bcd5682-8314-11d6-977b-00c04f613221" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=6bcd5682-8314-11d6-977b-00c04f613221,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "6bcd5682-8314-11d6-977b-00c04f613221" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "nakDfPf5K0OLmB30X/Iilg==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5763" + ], + "uSNCreated": [ + "5763" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "6bcd5683-8314-11d6-977b-00c04f613221", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=6bcd5683-8314-11d6-977b-00c04f613221,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "6bcd5683-8314-11d6-977b-00c04f613221", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{250b5dac-1d65-4c3b-af85-5609ad7d0925}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5764, + "uSNCreated": 5764, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=6bcd5683-8314-11d6-977b-00c04f613221,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "6bcd5683-8314-11d6-977b-00c04f613221" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=6bcd5683-8314-11d6-977b-00c04f613221,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "6bcd5683-8314-11d6-977b-00c04f613221" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "rF0LJWUdO0yvhVYJrX0JJQ==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5764" + ], + "uSNCreated": [ + "5764" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "6bcd5684-8314-11d6-977b-00c04f613221", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=6bcd5684-8314-11d6-977b-00c04f613221,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "6bcd5684-8314-11d6-977b-00c04f613221", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{bba833df-feac-46bd-a882-97f4846027d8}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5765, + "uSNCreated": 5765, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=6bcd5684-8314-11d6-977b-00c04f613221,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "6bcd5684-8314-11d6-977b-00c04f613221" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=6bcd5684-8314-11d6-977b-00c04f613221,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "6bcd5684-8314-11d6-977b-00c04f613221" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "3zOou6z+vUaogpf0hGAn2A==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5765" + ], + "uSNCreated": [ + "5765" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "6bcd5685-8314-11d6-977b-00c04f613221", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=6bcd5685-8314-11d6-977b-00c04f613221,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "6bcd5685-8314-11d6-977b-00c04f613221", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{40a6f22f-5206-4cb2-bb68-8739f4579329}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5766, + "uSNCreated": 5766, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=6bcd5685-8314-11d6-977b-00c04f613221,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "6bcd5685-8314-11d6-977b-00c04f613221" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=6bcd5685-8314-11d6-977b-00c04f613221,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "6bcd5685-8314-11d6-977b-00c04f613221" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "L/KmQAZSsky7aIc59FeTKQ==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5766" + ], + "uSNCreated": [ + "5766" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "6bcd5686-8314-11d6-977b-00c04f613221", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=6bcd5686-8314-11d6-977b-00c04f613221,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "6bcd5686-8314-11d6-977b-00c04f613221", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{82df95d3-fa38-4804-a9fc-1f9514d0bd5a}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5767, + "uSNCreated": 5767, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=6bcd5686-8314-11d6-977b-00c04f613221,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "6bcd5686-8314-11d6-977b-00c04f613221" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=6bcd5686-8314-11d6-977b-00c04f613221,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "6bcd5686-8314-11d6-977b-00c04f613221" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "05Xfgjj6BEip/B+VFNC9Wg==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5767" + ], + "uSNCreated": [ + "5767" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "6bcd5687-8314-11d6-977b-00c04f613221", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=6bcd5687-8314-11d6-977b-00c04f613221,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "6bcd5687-8314-11d6-977b-00c04f613221", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{88e85b0e-8861-4a04-b809-62caf1576da5}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5768, + "uSNCreated": 5768, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=6bcd5687-8314-11d6-977b-00c04f613221,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "6bcd5687-8314-11d6-977b-00c04f613221" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=6bcd5687-8314-11d6-977b-00c04f613221,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "6bcd5687-8314-11d6-977b-00c04f613221" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "DlvoiGGIBEq4CWLK8VdtpQ==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5768" + ], + "uSNCreated": [ + "5768" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "6bcd5688-8314-11d6-977b-00c04f613221", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=6bcd5688-8314-11d6-977b-00c04f613221,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "6bcd5688-8314-11d6-977b-00c04f613221", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{ab221510-f9d1-454a-aaaa-54fa483a5d69}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5769, + "uSNCreated": 5769, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=6bcd5688-8314-11d6-977b-00c04f613221,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "6bcd5688-8314-11d6-977b-00c04f613221" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=6bcd5688-8314-11d6-977b-00c04f613221,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "6bcd5688-8314-11d6-977b-00c04f613221" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "EBUiq9H5SkWqqlT6SDpdaQ==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5769" + ], + "uSNCreated": [ + "5769" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "6bcd5689-8314-11d6-977b-00c04f613221", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=6bcd5689-8314-11d6-977b-00c04f613221,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "6bcd5689-8314-11d6-977b-00c04f613221", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{46c18e42-edbf-4645-b511-219e2facd0b1}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5770, + "uSNCreated": 5770, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=6bcd5689-8314-11d6-977b-00c04f613221,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "6bcd5689-8314-11d6-977b-00c04f613221" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=6bcd5689-8314-11d6-977b-00c04f613221,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "6bcd5689-8314-11d6-977b-00c04f613221" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "Qo7BRr/tRUa1ESGeL6zQsQ==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5770" + ], + "uSNCreated": [ + "5770" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "6bcd568a-8314-11d6-977b-00c04f613221", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=6bcd568a-8314-11d6-977b-00c04f613221,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "6bcd568a-8314-11d6-977b-00c04f613221", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{04a6131a-6317-4761-9eed-c933f9e774c1}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5771, + "uSNCreated": 5771, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=6bcd568a-8314-11d6-977b-00c04f613221,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "6bcd568a-8314-11d6-977b-00c04f613221" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=6bcd568a-8314-11d6-977b-00c04f613221,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "6bcd568a-8314-11d6-977b-00c04f613221" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "GhOmBBdjYUee7ckz+ed0wQ==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5771" + ], + "uSNCreated": [ + "5771" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "6bcd568b-8314-11d6-977b-00c04f613221", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=6bcd568b-8314-11d6-977b-00c04f613221,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "6bcd568b-8314-11d6-977b-00c04f613221", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{f3c3495f-6183-4a7c-a778-1a19b93073c2}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5772, + "uSNCreated": 5772, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=6bcd568b-8314-11d6-977b-00c04f613221,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "6bcd568b-8314-11d6-977b-00c04f613221" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=6bcd568b-8314-11d6-977b-00c04f613221,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "6bcd568b-8314-11d6-977b-00c04f613221" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "X0nD84NhfEqneBoZuTBzwg==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5772" + ], + "uSNCreated": [ + "5772" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "6bcd568c-8314-11d6-977b-00c04f613221", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=6bcd568c-8314-11d6-977b-00c04f613221,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "6bcd568c-8314-11d6-977b-00c04f613221", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{de91bd78-6665-459b-8bbe-19ac7e4ee59b}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5773, + "uSNCreated": 5773, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=6bcd568c-8314-11d6-977b-00c04f613221,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "6bcd568c-8314-11d6-977b-00c04f613221" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=6bcd568c-8314-11d6-977b-00c04f613221,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "6bcd568c-8314-11d6-977b-00c04f613221" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "eL2R3mVmm0WLvhmsfk7lmw==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5773" + ], + "uSNCreated": [ + "5773" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "6bcd568d-8314-11d6-977b-00c04f613221", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=6bcd568d-8314-11d6-977b-00c04f613221,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "6bcd568d-8314-11d6-977b-00c04f613221", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{f3a4f45d-ba56-4107-a785-cdbe3d456509}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5774, + "uSNCreated": 5774, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=6bcd568d-8314-11d6-977b-00c04f613221,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "6bcd568d-8314-11d6-977b-00c04f613221" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=6bcd568d-8314-11d6-977b-00c04f613221,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "6bcd568d-8314-11d6-977b-00c04f613221" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "XfSk81a6B0Gnhc2+PUVlCQ==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5774" + ], + "uSNCreated": [ + "5774" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "3051c66f-b332-4a73-9a20-2d6a7d6e6a1c", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=3051c66f-b332-4a73-9a20-2d6a7d6e6a1c,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "3051c66f-b332-4a73-9a20-2d6a7d6e6a1c", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{97cca3ce-3742-4672-969b-d63652baf6e3}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5775, + "uSNCreated": 5775, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=3051c66f-b332-4a73-9a20-2d6a7d6e6a1c,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "3051c66f-b332-4a73-9a20-2d6a7d6e6a1c" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=3051c66f-b332-4a73-9a20-2d6a7d6e6a1c,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "3051c66f-b332-4a73-9a20-2d6a7d6e6a1c" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "zqPMl0I3ckaWm9Y2Urr24w==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5775" + ], + "uSNCreated": [ + "5775" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "3e4f4182-ac5d-4378-b760-0eab2de593e2", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=3e4f4182-ac5d-4378-b760-0eab2de593e2,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "3e4f4182-ac5d-4378-b760-0eab2de593e2", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{c0080ade-0452-4150-8066-6bd21d611be9}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5776, + "uSNCreated": 5776, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=3e4f4182-ac5d-4378-b760-0eab2de593e2,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "3e4f4182-ac5d-4378-b760-0eab2de593e2" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=3e4f4182-ac5d-4378-b760-0eab2de593e2,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "3e4f4182-ac5d-4378-b760-0eab2de593e2" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "3goIwFIEUEGAZmvSHWEb6Q==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5776" + ], + "uSNCreated": [ + "5776" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "c4f17608-e611-11d6-9793-00c04f613221", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=c4f17608-e611-11d6-9793-00c04f613221,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "c4f17608-e611-11d6-9793-00c04f613221", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{77120859-fcb3-492b-b628-68c4186c5c2d}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5777, + "uSNCreated": 5777, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=c4f17608-e611-11d6-9793-00c04f613221,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "c4f17608-e611-11d6-9793-00c04f613221" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=c4f17608-e611-11d6-9793-00c04f613221,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "c4f17608-e611-11d6-9793-00c04f613221" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "WQgSd7P8K0m2KGjEGGxcLQ==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5777" + ], + "uSNCreated": [ + "5777" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "13d15cf0-e6c8-11d6-9793-00c04f613221", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=13d15cf0-e6c8-11d6-9793-00c04f613221,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "13d15cf0-e6c8-11d6-9793-00c04f613221", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{8134a8de-7a83-4c84-94f9-14208f1a65f6}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5778, + "uSNCreated": 5778, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=13d15cf0-e6c8-11d6-9793-00c04f613221,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "13d15cf0-e6c8-11d6-9793-00c04f613221" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=13d15cf0-e6c8-11d6-9793-00c04f613221,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "13d15cf0-e6c8-11d6-9793-00c04f613221" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "3qg0gYN6hEyU+RQgjxpl9g==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5778" + ], + "uSNCreated": [ + "5778" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "8ddf6913-1c7b-4c59-a5af-b9ca3b3d2c4c", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=8ddf6913-1c7b-4c59-a5af-b9ca3b3d2c4c,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "8ddf6913-1c7b-4c59-a5af-b9ca3b3d2c4c", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{1e85a98c-1b25-4b05-b763-8910e7a592c4}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5779, + "uSNCreated": 5779, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=8ddf6913-1c7b-4c59-a5af-b9ca3b3d2c4c,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "8ddf6913-1c7b-4c59-a5af-b9ca3b3d2c4c" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=8ddf6913-1c7b-4c59-a5af-b9ca3b3d2c4c,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "8ddf6913-1c7b-4c59-a5af-b9ca3b3d2c4c" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "jKmFHiUbBUu3Y4kQ56WSxA==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5779" + ], + "uSNCreated": [ + "5779" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "dda1d01d-4bd7-4c49-a184-46f9241b560e", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=dda1d01d-4bd7-4c49-a184-46f9241b560e,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "dda1d01d-4bd7-4c49-a184-46f9241b560e", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{68e05556-121c-4661-ac5d-cb67ecdfbdca}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5780, + "uSNCreated": 5780, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=dda1d01d-4bd7-4c49-a184-46f9241b560e,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "dda1d01d-4bd7-4c49-a184-46f9241b560e" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=dda1d01d-4bd7-4c49-a184-46f9241b560e,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "dda1d01d-4bd7-4c49-a184-46f9241b560e" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "VlXgaBwSYUasXctn7N+9yg==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5780" + ], + "uSNCreated": [ + "5780" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "a1789bfb-e0a2-4739-8cc0-e77d892d080a", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=a1789bfb-e0a2-4739-8cc0-e77d892d080a,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "a1789bfb-e0a2-4739-8cc0-e77d892d080a", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{dc233a10-46ae-4881-95e1-d312902c7721}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5781, + "uSNCreated": 5781, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=a1789bfb-e0a2-4739-8cc0-e77d892d080a,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "a1789bfb-e0a2-4739-8cc0-e77d892d080a" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=a1789bfb-e0a2-4739-8cc0-e77d892d080a,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "a1789bfb-e0a2-4739-8cc0-e77d892d080a" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "EDoj3K5GgUiV4dMSkCx3IQ==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5781" + ], + "uSNCreated": [ + "5781" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "61b34cb0-55ee-4be9-b595-97810b92b017", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=61b34cb0-55ee-4be9-b595-97810b92b017,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "61b34cb0-55ee-4be9-b595-97810b92b017", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{d0e5ac8f-4bd9-4144-a090-0a5b6e39c13d}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5782, + "uSNCreated": 5782, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=61b34cb0-55ee-4be9-b595-97810b92b017,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "61b34cb0-55ee-4be9-b595-97810b92b017" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=61b34cb0-55ee-4be9-b595-97810b92b017,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "61b34cb0-55ee-4be9-b595-97810b92b017" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "j6zl0NlLREGgkApbbjnBPQ==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5782" + ], + "uSNCreated": [ + "5782" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "57428d75-bef7-43e1-938b-2e749f5a8d56", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=57428d75-bef7-43e1-938b-2e749f5a8d56,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "57428d75-bef7-43e1-938b-2e749f5a8d56", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{062e3611-fd8b-4ef0-9c8b-919a02b920f1}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5783, + "uSNCreated": 5783, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=57428d75-bef7-43e1-938b-2e749f5a8d56,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "57428d75-bef7-43e1-938b-2e749f5a8d56" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=57428d75-bef7-43e1-938b-2e749f5a8d56,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "57428d75-bef7-43e1-938b-2e749f5a8d56" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "ETYuBov98E6ci5GaArkg8Q==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5783" + ], + "uSNCreated": [ + "5783" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "ebad865a-d649-416f-9922-456b53bbb5b8", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=ebad865a-d649-416f-9922-456b53bbb5b8,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "ebad865a-d649-416f-9922-456b53bbb5b8", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{691ffbbe-31e9-48a7-94b2-6184c4c85833}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5784, + "uSNCreated": 5784, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=ebad865a-d649-416f-9922-456b53bbb5b8,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "ebad865a-d649-416f-9922-456b53bbb5b8" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=ebad865a-d649-416f-9922-456b53bbb5b8,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "ebad865a-d649-416f-9922-456b53bbb5b8" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "vvsfaekxp0iUsmGExMhYMw==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5784" + ], + "uSNCreated": [ + "5784" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "0b7fb422-3609-4587-8c2e-94b10f67d1bf", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=0b7fb422-3609-4587-8c2e-94b10f67d1bf,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "0b7fb422-3609-4587-8c2e-94b10f67d1bf", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{6be965a4-45ab-4832-ab82-2d8893351d2e}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5785, + "uSNCreated": 5785, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=0b7fb422-3609-4587-8c2e-94b10f67d1bf,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "0b7fb422-3609-4587-8c2e-94b10f67d1bf" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=0b7fb422-3609-4587-8c2e-94b10f67d1bf,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "0b7fb422-3609-4587-8c2e-94b10f67d1bf" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "pGXpa6tFMkirgi2IkzUdLg==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5785" + ], + "uSNCreated": [ + "5785" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "2951353e-d102-4ea5-906c-54247eeec741", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=2951353e-d102-4ea5-906c-54247eeec741,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "2951353e-d102-4ea5-906c-54247eeec741", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{64140021-0781-483b-9836-9e195ec7e84b}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5786, + "uSNCreated": 5786, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=2951353e-d102-4ea5-906c-54247eeec741,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "2951353e-d102-4ea5-906c-54247eeec741" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=2951353e-d102-4ea5-906c-54247eeec741,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "2951353e-d102-4ea5-906c-54247eeec741" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "IQAUZIEHO0iYNp4ZXsfoSw==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5786" + ], + "uSNCreated": [ + "5786" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "71482d49-8870-4cb3-a438-b6fc9ec35d70", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=71482d49-8870-4cb3-a438-b6fc9ec35d70,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "71482d49-8870-4cb3-a438-b6fc9ec35d70", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{7adc262e-e709-40a6-a819-71a2528f35c2}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5787, + "uSNCreated": 5787, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=71482d49-8870-4cb3-a438-b6fc9ec35d70,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "71482d49-8870-4cb3-a438-b6fc9ec35d70" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=71482d49-8870-4cb3-a438-b6fc9ec35d70,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "71482d49-8870-4cb3-a438-b6fc9ec35d70" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "LibcegnnpkCoGXGiUo81wg==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5787" + ], + "uSNCreated": [ + "5787" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "aed72870-bf16-4788-8ac7-22299c8207f1", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=aed72870-bf16-4788-8ac7-22299c8207f1,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "aed72870-bf16-4788-8ac7-22299c8207f1", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{ec99aed1-0ce7-4cf8-b490-6abc1ffd9d8b}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5788, + "uSNCreated": 5788, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=aed72870-bf16-4788-8ac7-22299c8207f1,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "aed72870-bf16-4788-8ac7-22299c8207f1" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=aed72870-bf16-4788-8ac7-22299c8207f1,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "aed72870-bf16-4788-8ac7-22299c8207f1" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "0a6Z7OcM+Ey0kGq8H/2diw==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5788" + ], + "uSNCreated": [ + "5788" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "f58300d1-b71a-4DB6-88a1-a8b9538beaca", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=f58300d1-b71a-4DB6-88a1-a8b9538beaca,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "f58300d1-b71a-4DB6-88a1-a8b9538beaca", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{8b0e4019-90ed-4b77-bdd8-73affa0e8c49}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5789, + "uSNCreated": 5789, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=f58300d1-b71a-4DB6-88a1-a8b9538beaca,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "f58300d1-b71a-4DB6-88a1-a8b9538beaca" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=f58300d1-b71a-4DB6-88a1-a8b9538beaca,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "f58300d1-b71a-4DB6-88a1-a8b9538beaca" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "GUAOi+2Qd0u92HOv+g6MSQ==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5789" + ], + "uSNCreated": [ + "5789" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "231fb90b-c92a-40c9-9379-bacfc313a3e3", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=231fb90b-c92a-40c9-9379-bacfc313a3e3,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "231fb90b-c92a-40c9-9379-bacfc313a3e3", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{f6b083f6-df3f-474a-8dae-525c43d7b627}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5790, + "uSNCreated": 5790, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=231fb90b-c92a-40c9-9379-bacfc313a3e3,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "231fb90b-c92a-40c9-9379-bacfc313a3e3" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=231fb90b-c92a-40c9-9379-bacfc313a3e3,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "231fb90b-c92a-40c9-9379-bacfc313a3e3" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "9oOw9j/fSkeNrlJcQ9e2Jw==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5790" + ], + "uSNCreated": [ + "5790" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "4aaabc3a-c416-4b9c-a6bb-4b453ab1c1f0", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=4aaabc3a-c416-4b9c-a6bb-4b453ab1c1f0,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "4aaabc3a-c416-4b9c-a6bb-4b453ab1c1f0", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{2515c4db-0b4e-4578-96c1-a793edc2091d}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5791, + "uSNCreated": 5791, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=4aaabc3a-c416-4b9c-a6bb-4b453ab1c1f0,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "4aaabc3a-c416-4b9c-a6bb-4b453ab1c1f0" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=4aaabc3a-c416-4b9c-a6bb-4b453ab1c1f0,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "4aaabc3a-c416-4b9c-a6bb-4b453ab1c1f0" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "28QVJU4LeEWWwaeT7cIJHQ==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5791" + ], + "uSNCreated": [ + "5791" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "9738c400-7795-4d6e-b19d-c16cd6486166", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=9738c400-7795-4d6e-b19d-c16cd6486166,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "9738c400-7795-4d6e-b19d-c16cd6486166", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{bf818bd1-8496-49c9-a307-71336b02363e}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5792, + "uSNCreated": 5792, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=9738c400-7795-4d6e-b19d-c16cd6486166,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "9738c400-7795-4d6e-b19d-c16cd6486166" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=9738c400-7795-4d6e-b19d-c16cd6486166,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "9738c400-7795-4d6e-b19d-c16cd6486166" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "0YuBv5aEyUmjB3EzawI2Pg==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5792" + ], + "uSNCreated": [ + "5792" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "de10d491-909f-4fb0-9abb-4b7865c0fe80", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=de10d491-909f-4fb0-9abb-4b7865c0fe80,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "de10d491-909f-4fb0-9abb-4b7865c0fe80", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{2d92a707-be77-455a-a0bf-d38c41923a53}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5793, + "uSNCreated": 5793, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=de10d491-909f-4fb0-9abb-4b7865c0fe80,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "de10d491-909f-4fb0-9abb-4b7865c0fe80" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=de10d491-909f-4fb0-9abb-4b7865c0fe80,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "de10d491-909f-4fb0-9abb-4b7865c0fe80" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "B6eSLXe+WkWgv9OMQZI6Uw==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5793" + ], + "uSNCreated": [ + "5793" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "b96ed344-545a-4172-aa0c-68118202f125", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=b96ed344-545a-4172-aa0c-68118202f125,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "b96ed344-545a-4172-aa0c-68118202f125", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{c37370ae-89a3-4e62-8c9a-f1be8913cfd6}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5794, + "uSNCreated": 5794, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=b96ed344-545a-4172-aa0c-68118202f125,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "b96ed344-545a-4172-aa0c-68118202f125" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=b96ed344-545a-4172-aa0c-68118202f125,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "b96ed344-545a-4172-aa0c-68118202f125" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "rnBzw6OJYk6MmvG+iRPP1g==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5794" + ], + "uSNCreated": [ + "5794" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "4c93ad42-178a-4275-8600-16811d28f3aa", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=4c93ad42-178a-4275-8600-16811d28f3aa,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "4c93ad42-178a-4275-8600-16811d28f3aa", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{89ad692d-6914-4423-baeb-f4e0d13f6bd7}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5795, + "uSNCreated": 5795, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=4c93ad42-178a-4275-8600-16811d28f3aa,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "4c93ad42-178a-4275-8600-16811d28f3aa" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=4c93ad42-178a-4275-8600-16811d28f3aa,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "4c93ad42-178a-4275-8600-16811d28f3aa" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "LWmtiRRpI0S66/Tg0T9r1w==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5795" + ], + "uSNCreated": [ + "5795" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "c88227bc-fcca-4b58-8d8a-cd3d64528a02", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=c88227bc-fcca-4b58-8d8a-cd3d64528a02,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "c88227bc-fcca-4b58-8d8a-cd3d64528a02", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{fbd7afa3-0b10-4545-a9c5-bbece5aecc60}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5796, + "uSNCreated": 5796, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=c88227bc-fcca-4b58-8d8a-cd3d64528a02,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "c88227bc-fcca-4b58-8d8a-cd3d64528a02" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=c88227bc-fcca-4b58-8d8a-cd3d64528a02,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "c88227bc-fcca-4b58-8d8a-cd3d64528a02" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "o6/X+xALRUWpxbvs5a7MYA==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5796" + ], + "uSNCreated": [ + "5796" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "5e1574f6-55df-493e-a671-aaeffca6a100", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=5e1574f6-55df-493e-a671-aaeffca6a100,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "5e1574f6-55df-493e-a671-aaeffca6a100", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{9aec578a-2415-4e06-97ff-3678a498e8f4}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5797, + "uSNCreated": 5797, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=5e1574f6-55df-493e-a671-aaeffca6a100,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "5e1574f6-55df-493e-a671-aaeffca6a100" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=5e1574f6-55df-493e-a671-aaeffca6a100,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "5e1574f6-55df-493e-a671-aaeffca6a100" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "ilfsmhUkBk6X/zZ4pJjo9A==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5797" + ], + "uSNCreated": [ + "5797" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "d262aae8-41f7-48ed-9f35-56bbb677573d", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=d262aae8-41f7-48ed-9f35-56bbb677573d,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "d262aae8-41f7-48ed-9f35-56bbb677573d", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{97e94c19-c9a0-4823-ac00-b01c01132e29}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5798, + "uSNCreated": 5798, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=d262aae8-41f7-48ed-9f35-56bbb677573d,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "d262aae8-41f7-48ed-9f35-56bbb677573d" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=d262aae8-41f7-48ed-9f35-56bbb677573d,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "d262aae8-41f7-48ed-9f35-56bbb677573d" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "GUzpl6DJI0isALAcARMuKQ==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5798" + ], + "uSNCreated": [ + "5798" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "82112ba0-7e4c-4a44-89d9-d46c9612bf91", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=82112ba0-7e4c-4a44-89d9-d46c9612bf91,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "82112ba0-7e4c-4a44-89d9-d46c9612bf91", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{a39d7e3f-71e1-4111-a9e5-89c4ee5beb74}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5799, + "uSNCreated": 5799, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=82112ba0-7e4c-4a44-89d9-d46c9612bf91,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "82112ba0-7e4c-4a44-89d9-d46c9612bf91" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=82112ba0-7e4c-4a44-89d9-d46c9612bf91,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "82112ba0-7e4c-4a44-89d9-d46c9612bf91" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "P36do+FxEUGp5YnE7lvrdA==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5799" + ], + "uSNCreated": [ + "5799" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "c3c927a6-cc1d-47c0-966b-be8f9b63d991", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=c3c927a6-cc1d-47c0-966b-be8f9b63d991,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "c3c927a6-cc1d-47c0-966b-be8f9b63d991", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{a98e7942-db3b-4083-b819-05b461b97354}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5800, + "uSNCreated": 5800, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=c3c927a6-cc1d-47c0-966b-be8f9b63d991,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "c3c927a6-cc1d-47c0-966b-be8f9b63d991" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=c3c927a6-cc1d-47c0-966b-be8f9b63d991,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "c3c927a6-cc1d-47c0-966b-be8f9b63d991" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "QnmOqTvbg0C4GQW0YblzVA==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5800" + ], + "uSNCreated": [ + "5800" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "54afcfb9-637a-4251-9f47-4d50e7021211", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=54afcfb9-637a-4251-9f47-4d50e7021211,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "54afcfb9-637a-4251-9f47-4d50e7021211", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{5644aceb-76d0-4e13-98d1-e193468c0b17}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5801, + "uSNCreated": 5801, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=54afcfb9-637a-4251-9f47-4d50e7021211,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "54afcfb9-637a-4251-9f47-4d50e7021211" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=54afcfb9-637a-4251-9f47-4d50e7021211,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "54afcfb9-637a-4251-9f47-4d50e7021211" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "66xEVtB2E06Y0eGTRowLFw==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5801" + ], + "uSNCreated": [ + "5801" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "f4728883-84dd-483c-9897-274f2ebcf11e", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=f4728883-84dd-483c-9897-274f2ebcf11e,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "f4728883-84dd-483c-9897-274f2ebcf11e", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{a6b0b67e-233b-453d-8d5c-d513a164e555}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5802, + "uSNCreated": 5802, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=f4728883-84dd-483c-9897-274f2ebcf11e,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "f4728883-84dd-483c-9897-274f2ebcf11e" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=f4728883-84dd-483c-9897-274f2ebcf11e,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "f4728883-84dd-483c-9897-274f2ebcf11e" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "frawpjsjPUWNXNUToWTlVQ==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5802" + ], + "uSNCreated": [ + "5802" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "ff4f9d27-7157-4cb0-80a9-5d6f2b14c8ff", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=ff4f9d27-7157-4cb0-80a9-5d6f2b14c8ff,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "ff4f9d27-7157-4cb0-80a9-5d6f2b14c8ff", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{863a6d60-6853-45ef-b129-5d6492dcbe2b}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5803, + "uSNCreated": 5803, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=ff4f9d27-7157-4cb0-80a9-5d6f2b14c8ff,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "ff4f9d27-7157-4cb0-80a9-5d6f2b14c8ff" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=ff4f9d27-7157-4cb0-80a9-5d6f2b14c8ff,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "ff4f9d27-7157-4cb0-80a9-5d6f2b14c8ff" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "YG06hlNo70WxKV1kkty+Kw==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5803" + ], + "uSNCreated": [ + "5803" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "83C53DA7-427E-47A4-A07A-A324598B88F7", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=83C53DA7-427E-47A4-A07A-A324598B88F7,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "83C53DA7-427E-47A4-A07A-A324598B88F7", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{4f393159-b8de-4577-b150-194f0530b931}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5804, + "uSNCreated": 5804, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=83C53DA7-427E-47A4-A07A-A324598B88F7,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "83C53DA7-427E-47A4-A07A-A324598B88F7" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=83C53DA7-427E-47A4-A07A-A324598B88F7,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "83C53DA7-427E-47A4-A07A-A324598B88F7" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "WTE5T964d0WxUBlPBTC5MQ==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5804" + ], + "uSNCreated": [ + "5804" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "C81FC9CC-0130-4FD1-B272-634D74818133", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=C81FC9CC-0130-4FD1-B272-634D74818133,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "C81FC9CC-0130-4FD1-B272-634D74818133", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{6ae3c3aa-db80-4173-92b8-7e836d848175}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5805, + "uSNCreated": 5805, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=C81FC9CC-0130-4FD1-B272-634D74818133,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "C81FC9CC-0130-4FD1-B272-634D74818133" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=C81FC9CC-0130-4FD1-B272-634D74818133,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "C81FC9CC-0130-4FD1-B272-634D74818133" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "qsPjaoDbc0GSuH6DbYSBdQ==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5805" + ], + "uSNCreated": [ + "5805" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "E5F9E791-D96D-4FC9-93C9-D53E1DC439BA", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=E5F9E791-D96D-4FC9-93C9-D53E1DC439BA,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "E5F9E791-D96D-4FC9-93C9-D53E1DC439BA", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{664de97c-39fd-45c2-a02c-fb835ffdcdf3}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5806, + "uSNCreated": 5806, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=E5F9E791-D96D-4FC9-93C9-D53E1DC439BA,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "E5F9E791-D96D-4FC9-93C9-D53E1DC439BA" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=E5F9E791-D96D-4FC9-93C9-D53E1DC439BA,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "E5F9E791-D96D-4FC9-93C9-D53E1DC439BA" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "fOlNZv05wkWgLPuDX/3N8w==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5806" + ], + "uSNCreated": [ + "5806" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "e6d5fd00-385d-4e65-b02d-9da3493ed850", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=e6d5fd00-385d-4e65-b02d-9da3493ed850,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "e6d5fd00-385d-4e65-b02d-9da3493ed850", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{3eec2e52-8c73-44f7-9bd2-38b777134617}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5807, + "uSNCreated": 5807, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=e6d5fd00-385d-4e65-b02d-9da3493ed850,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "e6d5fd00-385d-4e65-b02d-9da3493ed850" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=e6d5fd00-385d-4e65-b02d-9da3493ed850,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "e6d5fd00-385d-4e65-b02d-9da3493ed850" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "Ui7sPnOM90Sb0ji3dxNGFw==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5807" + ], + "uSNCreated": [ + "5807" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "3a6b3fbf-3168-4312-a10d-dd5b3393952d", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=3a6b3fbf-3168-4312-a10d-dd5b3393952d,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "3a6b3fbf-3168-4312-a10d-dd5b3393952d", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{a045ff89-f10e-43de-8b8e-e5f800ffa36a}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5808, + "uSNCreated": 5808, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=3a6b3fbf-3168-4312-a10d-dd5b3393952d,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "3a6b3fbf-3168-4312-a10d-dd5b3393952d" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=3a6b3fbf-3168-4312-a10d-dd5b3393952d,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "3a6b3fbf-3168-4312-a10d-dd5b3393952d" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "if9FoA7x3kOLjuX4AP+jag==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5808" + ], + "uSNCreated": [ + "5808" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "7F950403-0AB3-47F9-9730-5D7B0269F9BD", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=7F950403-0AB3-47F9-9730-5D7B0269F9BD,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "7F950403-0AB3-47F9-9730-5D7B0269F9BD", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{02c46391-4b3c-4ca7-9abf-e3f7d1b98aa0}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5809, + "uSNCreated": 5809, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=7F950403-0AB3-47F9-9730-5D7B0269F9BD,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "7F950403-0AB3-47F9-9730-5D7B0269F9BD" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=7F950403-0AB3-47F9-9730-5D7B0269F9BD,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "7F950403-0AB3-47F9-9730-5D7B0269F9BD" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "kWPEAjxLp0yav+P30bmKoA==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5809" + ], + "uSNCreated": [ + "5809" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "434bb40d-dbc9-4fe7-81d4-d57229f7b080", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=434bb40d-dbc9-4fe7-81d4-d57229f7b080,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "434bb40d-dbc9-4fe7-81d4-d57229f7b080", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{4447a744-cd0b-4ea6-b7b8-8f324f87fb08}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5810, + "uSNCreated": 5810, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=434bb40d-dbc9-4fe7-81d4-d57229f7b080,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "434bb40d-dbc9-4fe7-81d4-d57229f7b080" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=434bb40d-dbc9-4fe7-81d4-d57229f7b080,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "434bb40d-dbc9-4fe7-81d4-d57229f7b080" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "RKdHRAvNpk63uI8yT4f7CA==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5810" + ], + "uSNCreated": [ + "5810" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "A0C238BA-9E30-4EE6-80A6-43F731E9A5CD", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=A0C238BA-9E30-4EE6-80A6-43F731E9A5CD,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "A0C238BA-9E30-4EE6-80A6-43F731E9A5CD", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{9d8b04ff-c612-4260-a170-fba58410bd3a}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5811, + "uSNCreated": 5811, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=A0C238BA-9E30-4EE6-80A6-43F731E9A5CD,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "A0C238BA-9E30-4EE6-80A6-43F731E9A5CD" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=A0C238BA-9E30-4EE6-80A6-43F731E9A5CD,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "A0C238BA-9E30-4EE6-80A6-43F731E9A5CD" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "/wSLnRLGYEKhcPulhBC9Og==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5811" + ], + "uSNCreated": [ + "5811" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "Windows2003Update", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=Windows2003Update,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "Windows2003Update", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{acb819fa-dc1d-4ab3-94dc-b588e7d28486}", + "revision": 9, + "showInAdvancedViewOnly": true, + "uSNChanged": 5812, + "uSNCreated": 5812, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=Windows2003Update,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "Windows2003Update" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=Windows2003Update,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "Windows2003Update" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "+hm4rB3cs0qU3LWI59KEhg==", + "encoding": "base64" + } + ], + "revision": [ + "9" + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5812" + ], + "uSNCreated": [ + "5812" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "ActiveDirectoryUpdate", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=ActiveDirectoryUpdate,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "ActiveDirectoryUpdate", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{63ddd512-f44a-4ef8-8a78-8c0145bb8548}", + "revision": 18, + "showInAdvancedViewOnly": true, + "uSNChanged": 5813, + "uSNCreated": 5813, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=ActiveDirectoryUpdate,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "ActiveDirectoryUpdate" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=ActiveDirectoryUpdate,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "ActiveDirectoryUpdate" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "EtXdY0r0+E6KeIwBRbuFSA==", + "encoding": "base64" + } + ], + "revision": [ + "18" + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5813" + ], + "uSNCreated": [ + "5813" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "Password Settings Container", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=Password Settings Container,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "Password Settings Container", + "objectCategory": "CN=ms-DS-Password-Settings-Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "msDS-PasswordSettingsContainer" + ], + "objectGUID": "{58e8136b-f19b-4def-9b9f-65a4d6115886}", + "showInAdvancedViewOnly": true, + "systemFlags": -1946157056, + "uSNChanged": 5814, + "uSNCreated": 5814, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=Password Settings Container,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "Password Settings Container" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=Password Settings Container,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "Password Settings Container" + ], + "objectCategory": [ + "CN=ms-DS-Password-Settings-Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "msDS-PasswordSettingsContainer" + ], + "objectGUID": [ + { + "encoded": "axPoWJvx702bn2Wk1hFYhg==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "systemFlags": [ + "-1946157056" + ], + "uSNChanged": [ + "5814" + ], + "uSNCreated": [ + "5814" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "PSPs", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=PSPs,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "PSPs", + "objectCategory": "CN=ms-Imaging-PSPs,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container", + "msImaging-PSPs" + ], + "objectGUID": "{123fcd7e-01cc-4266-a6c9-702ecc25a799}", + "uSNChanged": 5815, + "uSNCreated": 5815, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=PSPs,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "PSPs" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=PSPs,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "PSPs" + ], + "objectCategory": [ + "CN=ms-Imaging-PSPs,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container", + "msImaging-PSPs" + ], + "objectGUID": [ + { + "encoded": "fs0/EswBZkKmyXAuzCWnmQ==", + "encoding": "base64" + } + ], + "uSNChanged": [ + "5815" + ], + "uSNCreated": [ + "5815" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "TPM Devices", + "dSCorePropagationData": [ + "2026-03-31 14:25:53+00:00", + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:04:16+00:00" + ], + "distinguishedName": "CN=TPM Devices,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "TPM Devices", + "objectCategory": "CN=ms-TPM-Information-Objects-Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "msTPM-InformationObjectsContainer" + ], + "objectGUID": "{9e6f8506-bebd-47df-9d09-af96517aeb78}", + "showInAdvancedViewOnly": true, + "uSNChanged": 5823, + "uSNCreated": 5823, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=TPM Devices,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "TPM Devices" + ], + "dSCorePropagationData": [ + "20260331142553.0Z", + "20260331120814.0Z", + "16010101000416.0Z" + ], + "distinguishedName": [ + "CN=TPM Devices,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "TPM Devices" + ], + "objectCategory": [ + "CN=ms-TPM-Information-Objects-Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "msTPM-InformationObjectsContainer" + ], + "objectGUID": [ + { + "encoded": "BoVvnr2+30edCa+WUXrreA==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "5823" + ], + "uSNCreated": [ + "5823" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "accountExpires": "1601-01-01 00:00:00+00:00", + "adminCount": 1, + "badPasswordTime": "1601-01-01 00:00:00+00:00", + "badPwdCount": 0, + "cn": "Administrator", + "codePage": 0, + "countryCode": 0, + "dSCorePropagationData": [ + "2026-03-31 12:23:23+00:00", + "2026-03-31 12:23:23+00:00", + "2026-03-31 12:08:14+00:00", + "1601-01-01 18:12:16+00:00" + ], + "description": [ + "Built-in account for administering the computer/domain" + ], + "distinguishedName": "CN=Administrator,CN=Users,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "isCriticalSystemObject": true, + "lastLogoff": "1601-01-01 00:00:00+00:00", + "lastLogon": "2026-03-31 12:55:20.149899+00:00", + "lastLogonTimestamp": "2026-03-31 12:19:34.954643+00:00", + "logonCount": 3, + "logonHours": { + "encoded": "////////////////////////////", + "encoding": "base64" + }, + "memberOf": [ + "CN=Group Policy Creator Owners,CN=Users,DC=t,DC=goauthentik,DC=io", + "CN=Domain Admins,CN=Users,DC=t,DC=goauthentik,DC=io", + "CN=Enterprise Admins,CN=Users,DC=t,DC=goauthentik,DC=io", + "CN=Schema Admins,CN=Users,DC=t,DC=goauthentik,DC=io", + "CN=Administrators,CN=Builtin,DC=t,DC=goauthentik,DC=io" + ], + "name": "Administrator", + "objectCategory": "CN=Person,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "person", + "organizationalPerson", + "user" + ], + "objectGUID": "{8839c1b6-a25c-4337-8591-fbd0d21f77d8}", + "objectSid": "S-1-5-21-1955698215-2946288202-2760262721-500", + "primaryGroupID": 513, + "pwdLastSet": "2026-03-31 12:35:58.762314+00:00", + "sAMAccountName": "Administrator", + "sAMAccountType": 805306368, + "uSNChanged": 12800, + "uSNCreated": 8196, + "userAccountControl": 512, + "whenChanged": "2026-03-31 12:35:58+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=Administrator,CN=Users,DC=t,DC=goauthentik,DC=io", + "raw": { + "accountExpires": [ + "0" + ], + "adminCount": [ + "1" + ], + "badPasswordTime": [ + "0" + ], + "badPwdCount": [ + "0" + ], + "cn": [ + "Administrator" + ], + "codePage": [ + "0" + ], + "countryCode": [ + "0" + ], + "dSCorePropagationData": [ + "20260331122323.0Z", + "20260331122323.0Z", + "20260331120814.0Z", + "16010101181216.0Z" + ], + "description": [ + "Built-in account for administering the computer/domain" + ], + "distinguishedName": [ + "CN=Administrator,CN=Users,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "lastLogoff": [ + "0" + ], + "lastLogon": [ + "134194353201498977" + ], + "lastLogonTimestamp": [ + "134194331749546438" + ], + "logonCount": [ + "3" + ], + "logonHours": [ + { + "encoded": "////////////////////////////", + "encoding": "base64" + } + ], + "memberOf": [ + "CN=Group Policy Creator Owners,CN=Users,DC=t,DC=goauthentik,DC=io", + "CN=Domain Admins,CN=Users,DC=t,DC=goauthentik,DC=io", + "CN=Enterprise Admins,CN=Users,DC=t,DC=goauthentik,DC=io", + "CN=Schema Admins,CN=Users,DC=t,DC=goauthentik,DC=io", + "CN=Administrators,CN=Builtin,DC=t,DC=goauthentik,DC=io" + ], + "name": [ + "Administrator" + ], + "objectCategory": [ + "CN=Person,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "person", + "organizationalPerson", + "user" + ], + "objectGUID": [ + { + "encoded": "tsE5iFyiN0OFkfvQ0h932A==", + "encoding": "base64" + } + ], + "objectSid": [ + { + "encoded": "AQUAAAAAAAUVAAAAJ5aRdErKnK9BRIak9AEAAA==", + "encoding": "base64" + } + ], + "primaryGroupID": [ + "513" + ], + "pwdLastSet": [ + "134194341587623128" + ], + "sAMAccountName": [ + "Administrator" + ], + "sAMAccountType": [ + "805306368" + ], + "uSNChanged": [ + "12800" + ], + "uSNCreated": [ + "8196" + ], + "userAccountControl": [ + "512" + ], + "whenChanged": [ + "20260331123558.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "accountExpires": "9999-12-31 23:59:59.999999+00:00", + "badPasswordTime": "1601-01-01 00:00:00+00:00", + "badPwdCount": 0, + "cn": "Guest", + "codePage": 0, + "countryCode": 0, + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "description": [ + "Built-in account for guest access to the computer/domain" + ], + "distinguishedName": "CN=Guest,CN=Users,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "isCriticalSystemObject": true, + "lastLogoff": "1601-01-01 00:00:00+00:00", + "lastLogon": "1601-01-01 00:00:00+00:00", + "logonCount": 0, + "memberOf": [ + "CN=Guests,CN=Builtin,DC=t,DC=goauthentik,DC=io" + ], + "name": "Guest", + "objectCategory": "CN=Person,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "person", + "organizationalPerson", + "user" + ], + "objectGUID": "{c12acb1b-31a6-4611-8be6-b60e496b23e9}", + "objectSid": "S-1-5-21-1955698215-2946288202-2760262721-501", + "primaryGroupID": 514, + "pwdLastSet": "1601-01-01 00:00:00+00:00", + "sAMAccountName": "Guest", + "sAMAccountType": 805306368, + "uSNChanged": 8197, + "uSNCreated": 8197, + "userAccountControl": 66082, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=Guest,CN=Users,DC=t,DC=goauthentik,DC=io", + "raw": { + "accountExpires": [ + "9223372036854775807" + ], + "badPasswordTime": [ + "0" + ], + "badPwdCount": [ + "0" + ], + "cn": [ + "Guest" + ], + "codePage": [ + "0" + ], + "countryCode": [ + "0" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "description": [ + "Built-in account for guest access to the computer/domain" + ], + "distinguishedName": [ + "CN=Guest,CN=Users,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "lastLogoff": [ + "0" + ], + "lastLogon": [ + "0" + ], + "logonCount": [ + "0" + ], + "memberOf": [ + "CN=Guests,CN=Builtin,DC=t,DC=goauthentik,DC=io" + ], + "name": [ + "Guest" + ], + "objectCategory": [ + "CN=Person,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "person", + "organizationalPerson", + "user" + ], + "objectGUID": [ + { + "encoded": "G8sqwaYxEUaL5rYOSWsj6Q==", + "encoding": "base64" + } + ], + "objectSid": [ + { + "encoded": "AQUAAAAAAAUVAAAAJ5aRdErKnK9BRIak9QEAAA==", + "encoding": "base64" + } + ], + "primaryGroupID": [ + "514" + ], + "pwdLastSet": [ + "0" + ], + "sAMAccountName": [ + "Guest" + ], + "sAMAccountType": [ + "805306368" + ], + "uSNChanged": [ + "8197" + ], + "uSNCreated": [ + "8197" + ], + "userAccountControl": [ + "66082" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "Builtin", + "creationTime": "2026-03-06 21:05:35.751724+00:00", + "dSCorePropagationData": [ + "2026-03-31 14:25:53+00:00", + "2026-03-31 12:08:13+00:00", + "1601-01-01 00:04:16+00:00" + ], + "distinguishedName": "CN=Builtin,DC=t,DC=goauthentik,DC=io", + "forceLogoff": -9223372036854775808, + "instanceType": 4, + "isCriticalSystemObject": true, + "lockOutObservationWindow": "0:10:00", + "lockoutDuration": "0:10:00", + "lockoutThreshold": 0, + "maxPwdAge": "42 days, 22:47:31.743744", + "minPwdAge": "0:00:00", + "minPwdLength": 0, + "modifiedCount": 153, + "modifiedCountAtLastProm": 0, + "name": "Builtin", + "nextRid": 1000, + "objectCategory": "CN=Builtin-Domain,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "builtinDomain" + ], + "objectGUID": "{55b477b0-89ad-43e5-9de6-438de319ee37}", + "objectSid": "S-1-5-32", + "pwdHistoryLength": 0, + "pwdProperties": 1, + "serverState": 1, + "showInAdvancedViewOnly": false, + "systemFlags": -1946157056, + "uASCompat": 0, + "uSNChanged": 8199, + "uSNCreated": 8199, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=Builtin,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "Builtin" + ], + "creationTime": [ + "134173047357517242" + ], + "dSCorePropagationData": [ + "20260331142553.0Z", + "20260331120813.0Z", + "16010101000416.0Z" + ], + "distinguishedName": [ + "CN=Builtin,DC=t,DC=goauthentik,DC=io" + ], + "forceLogoff": [ + "-9223372036854775808" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "lockOutObservationWindow": [ + "-6000000000" + ], + "lockoutDuration": [ + "-6000000000" + ], + "lockoutThreshold": [ + "0" + ], + "maxPwdAge": [ + "-37108517437440" + ], + "minPwdAge": [ + "0" + ], + "minPwdLength": [ + "0" + ], + "modifiedCount": [ + "153" + ], + "modifiedCountAtLastProm": [ + "0" + ], + "name": [ + "Builtin" + ], + "nextRid": [ + "1000" + ], + "objectCategory": [ + "CN=Builtin-Domain,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "builtinDomain" + ], + "objectGUID": [ + { + "encoded": "sHe0Va2J5UOd5kON4xnuNw==", + "encoding": "base64" + } + ], + "objectSid": [ + "\u0001\u0001\u0000\u0000\u0000\u0000\u0000\u0005 \u0000\u0000\u0000" + ], + "pwdHistoryLength": [ + "0" + ], + "pwdProperties": [ + "1" + ], + "serverState": [ + "1" + ], + "showInAdvancedViewOnly": [ + "FALSE" + ], + "systemFlags": [ + "-1946157056" + ], + "uASCompat": [ + "0" + ], + "uSNChanged": [ + "8199" + ], + "uSNCreated": [ + "8199" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "adminCount": 1, + "cn": "Administrators", + "dSCorePropagationData": [ + "2026-03-31 12:23:23+00:00", + "2026-03-31 12:08:13+00:00", + "1601-01-01 00:04:16+00:00" + ], + "description": [ + "Administrators have complete and unrestricted access to the computer/domain" + ], + "distinguishedName": "CN=Administrators,CN=Builtin,DC=t,DC=goauthentik,DC=io", + "groupType": -2147483643, + "instanceType": 4, + "isCriticalSystemObject": true, + "member": [ + "CN=Domain Admins,CN=Users,DC=t,DC=goauthentik,DC=io", + "CN=Enterprise Admins,CN=Users,DC=t,DC=goauthentik,DC=io", + "CN=Administrator,CN=Users,DC=t,DC=goauthentik,DC=io" + ], + "name": "Administrators", + "objectCategory": "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "group" + ], + "objectGUID": "{59ba3d2b-e08c-406f-95c8-0d41ba71acb0}", + "objectSid": "S-1-5-32-544", + "sAMAccountName": "Administrators", + "sAMAccountType": 536870912, + "systemFlags": -1946157056, + "uSNChanged": 12785, + "uSNCreated": 8200, + "whenChanged": "2026-03-31 12:23:23+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=Administrators,CN=Builtin,DC=t,DC=goauthentik,DC=io", + "raw": { + "adminCount": [ + "1" + ], + "cn": [ + "Administrators" + ], + "dSCorePropagationData": [ + "20260331122323.0Z", + "20260331120813.0Z", + "16010101000416.0Z" + ], + "description": [ + "Administrators have complete and unrestricted access to the computer/domain" + ], + "distinguishedName": [ + "CN=Administrators,CN=Builtin,DC=t,DC=goauthentik,DC=io" + ], + "groupType": [ + "-2147483643" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "member": [ + "CN=Domain Admins,CN=Users,DC=t,DC=goauthentik,DC=io", + "CN=Enterprise Admins,CN=Users,DC=t,DC=goauthentik,DC=io", + "CN=Administrator,CN=Users,DC=t,DC=goauthentik,DC=io" + ], + "name": [ + "Administrators" + ], + "objectCategory": [ + "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "group" + ], + "objectGUID": [ + { + "encoded": "Kz26WYzgb0CVyA1BunGssA==", + "encoding": "base64" + } + ], + "objectSid": [ + "\u0001\u0002\u0000\u0000\u0000\u0000\u0000\u0005 \u0000\u0000\u0000 \u0002\u0000\u0000" + ], + "sAMAccountName": [ + "Administrators" + ], + "sAMAccountType": [ + "536870912" + ], + "systemFlags": [ + "-1946157056" + ], + "uSNChanged": [ + "12785" + ], + "uSNCreated": [ + "8200" + ], + "whenChanged": [ + "20260331122323.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "Users", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "description": [ + "Users are prevented from making accidental or intentional system-wide changes and can run most applications" + ], + "distinguishedName": "CN=Users,CN=Builtin,DC=t,DC=goauthentik,DC=io", + "groupType": -2147483643, + "instanceType": 4, + "isCriticalSystemObject": true, + "member": [ + "CN=Domain Users,CN=Users,DC=t,DC=goauthentik,DC=io", + "CN=S-1-5-11,CN=ForeignSecurityPrincipals,DC=t,DC=goauthentik,DC=io", + "CN=S-1-5-4,CN=ForeignSecurityPrincipals,DC=t,DC=goauthentik,DC=io" + ], + "name": "Users", + "objectCategory": "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "group" + ], + "objectGUID": "{99167da1-7dcc-4029-bf81-df645e6e26c0}", + "objectSid": "S-1-5-32-545", + "sAMAccountName": "Users", + "sAMAccountType": 536870912, + "systemFlags": -1946157056, + "uSNChanged": 12381, + "uSNCreated": 8204, + "whenChanged": "2026-03-31 12:08:13+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=Users,CN=Builtin,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "Users" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "description": [ + "Users are prevented from making accidental or intentional system-wide changes and can run most applications" + ], + "distinguishedName": [ + "CN=Users,CN=Builtin,DC=t,DC=goauthentik,DC=io" + ], + "groupType": [ + "-2147483643" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "member": [ + "CN=Domain Users,CN=Users,DC=t,DC=goauthentik,DC=io", + "CN=S-1-5-11,CN=ForeignSecurityPrincipals,DC=t,DC=goauthentik,DC=io", + "CN=S-1-5-4,CN=ForeignSecurityPrincipals,DC=t,DC=goauthentik,DC=io" + ], + "name": [ + "Users" + ], + "objectCategory": [ + "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "group" + ], + "objectGUID": [ + { + "encoded": "oX0Wmcx9KUC/gd9kXm4mwA==", + "encoding": "base64" + } + ], + "objectSid": [ + "\u0001\u0002\u0000\u0000\u0000\u0000\u0000\u0005 \u0000\u0000\u0000!\u0002\u0000\u0000" + ], + "sAMAccountName": [ + "Users" + ], + "sAMAccountType": [ + "536870912" + ], + "systemFlags": [ + "-1946157056" + ], + "uSNChanged": [ + "12381" + ], + "uSNCreated": [ + "8204" + ], + "whenChanged": [ + "20260331120813.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "S-1-5-4", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=S-1-5-4,CN=ForeignSecurityPrincipals,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "memberOf": [ + "CN=Users,CN=Builtin,DC=t,DC=goauthentik,DC=io" + ], + "name": "S-1-5-4", + "objectCategory": "CN=Foreign-Security-Principal,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "foreignSecurityPrincipal" + ], + "objectGUID": "{6033408c-8ee6-4b70-a0ce-7ac4ea68bce2}", + "objectSid": "S-1-5-4", + "showInAdvancedViewOnly": true, + "uSNChanged": 8205, + "uSNCreated": 8205, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=S-1-5-4,CN=ForeignSecurityPrincipals,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "S-1-5-4" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=S-1-5-4,CN=ForeignSecurityPrincipals,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "memberOf": [ + "CN=Users,CN=Builtin,DC=t,DC=goauthentik,DC=io" + ], + "name": [ + "S-1-5-4" + ], + "objectCategory": [ + "CN=Foreign-Security-Principal,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "foreignSecurityPrincipal" + ], + "objectGUID": [ + { + "encoded": "jEAzYOaOcEugznrE6mi84g==", + "encoding": "base64" + } + ], + "objectSid": [ + "\u0001\u0001\u0000\u0000\u0000\u0000\u0000\u0005\u0004\u0000\u0000\u0000" + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "8205" + ], + "uSNCreated": [ + "8205" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "S-1-5-11", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=S-1-5-11,CN=ForeignSecurityPrincipals,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "memberOf": [ + "CN=Pre-Windows 2000 Compatible Access,CN=Builtin,DC=t,DC=goauthentik,DC=io", + "CN=Users,CN=Builtin,DC=t,DC=goauthentik,DC=io" + ], + "name": "S-1-5-11", + "objectCategory": "CN=Foreign-Security-Principal,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "foreignSecurityPrincipal" + ], + "objectGUID": "{23da3b4c-fe69-4f55-ad40-7920a31adc3f}", + "objectSid": "S-1-5-11", + "showInAdvancedViewOnly": true, + "uSNChanged": 8206, + "uSNCreated": 8206, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=S-1-5-11,CN=ForeignSecurityPrincipals,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "S-1-5-11" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=S-1-5-11,CN=ForeignSecurityPrincipals,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "memberOf": [ + "CN=Pre-Windows 2000 Compatible Access,CN=Builtin,DC=t,DC=goauthentik,DC=io", + "CN=Users,CN=Builtin,DC=t,DC=goauthentik,DC=io" + ], + "name": [ + "S-1-5-11" + ], + "objectCategory": [ + "CN=Foreign-Security-Principal,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "foreignSecurityPrincipal" + ], + "objectGUID": [ + { + "encoded": "TDvaI2n+VU+tQHkgoxrcPw==", + "encoding": "base64" + } + ], + "objectSid": [ + "\u0001\u0001\u0000\u0000\u0000\u0000\u0000\u0005\u000b\u0000\u0000\u0000" + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "8206" + ], + "uSNCreated": [ + "8206" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "Guests", + "dSCorePropagationData": [ + "2026-03-31 12:08:13+00:00", + "1601-01-01 00:00:01+00:00" + ], + "description": [ + "Guests have the same access as members of the Users group by default, except for the Guest account which is further restricted" + ], + "distinguishedName": "CN=Guests,CN=Builtin,DC=t,DC=goauthentik,DC=io", + "groupType": -2147483643, + "instanceType": 4, + "isCriticalSystemObject": true, + "member": [ + "CN=Domain Guests,CN=Users,DC=t,DC=goauthentik,DC=io", + "CN=Guest,CN=Users,DC=t,DC=goauthentik,DC=io" + ], + "name": "Guests", + "objectCategory": "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "group" + ], + "objectGUID": "{f5f1e5cf-f00f-4cb7-b795-dd39366fb047}", + "objectSid": "S-1-5-32-546", + "sAMAccountName": "Guests", + "sAMAccountType": 536870912, + "systemFlags": -1946157056, + "uSNChanged": 12383, + "uSNCreated": 8211, + "whenChanged": "2026-03-31 12:08:13+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=Guests,CN=Builtin,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "Guests" + ], + "dSCorePropagationData": [ + "20260331120813.0Z", + "16010101000001.0Z" + ], + "description": [ + "Guests have the same access as members of the Users group by default, except for the Guest account which is further restricted" + ], + "distinguishedName": [ + "CN=Guests,CN=Builtin,DC=t,DC=goauthentik,DC=io" + ], + "groupType": [ + "-2147483643" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "member": [ + "CN=Domain Guests,CN=Users,DC=t,DC=goauthentik,DC=io", + "CN=Guest,CN=Users,DC=t,DC=goauthentik,DC=io" + ], + "name": [ + "Guests" + ], + "objectCategory": [ + "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "group" + ], + "objectGUID": [ + { + "encoded": "z+Xx9Q/wt0y3ld05Nm+wRw==", + "encoding": "base64" + } + ], + "objectSid": [ + "\u0001\u0002\u0000\u0000\u0000\u0000\u0000\u0005 \u0000\u0000\u0000\"\u0002\u0000\u0000" + ], + "sAMAccountName": [ + "Guests" + ], + "sAMAccountType": [ + "536870912" + ], + "systemFlags": [ + "-1946157056" + ], + "uSNChanged": [ + "12383" + ], + "uSNCreated": [ + "8211" + ], + "whenChanged": [ + "20260331120813.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "adminCount": 1, + "cn": "Print Operators", + "dSCorePropagationData": [ + "2026-03-31 12:23:23+00:00", + "2026-03-31 12:08:13+00:00", + "1601-01-01 00:04:16+00:00" + ], + "description": [ + "Members can administer printers installed on domain controllers" + ], + "distinguishedName": "CN=Print Operators,CN=Builtin,DC=t,DC=goauthentik,DC=io", + "groupType": -2147483643, + "instanceType": 4, + "isCriticalSystemObject": true, + "name": "Print Operators", + "objectCategory": "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "group" + ], + "objectGUID": "{5442c8df-374e-4d40-8bce-44eac4ecbad2}", + "objectSid": "S-1-5-32-550", + "sAMAccountName": "Print Operators", + "sAMAccountType": 536870912, + "systemFlags": -1946157056, + "uSNChanged": 12793, + "uSNCreated": 8214, + "whenChanged": "2026-03-31 12:23:23+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=Print Operators,CN=Builtin,DC=t,DC=goauthentik,DC=io", + "raw": { + "adminCount": [ + "1" + ], + "cn": [ + "Print Operators" + ], + "dSCorePropagationData": [ + "20260331122323.0Z", + "20260331120813.0Z", + "16010101000416.0Z" + ], + "description": [ + "Members can administer printers installed on domain controllers" + ], + "distinguishedName": [ + "CN=Print Operators,CN=Builtin,DC=t,DC=goauthentik,DC=io" + ], + "groupType": [ + "-2147483643" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "Print Operators" + ], + "objectCategory": [ + "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "group" + ], + "objectGUID": [ + { + "encoded": "38hCVE43QE2LzkTqxOy60g==", + "encoding": "base64" + } + ], + "objectSid": [ + "\u0001\u0002\u0000\u0000\u0000\u0000\u0000\u0005 \u0000\u0000\u0000&\u0002\u0000\u0000" + ], + "sAMAccountName": [ + "Print Operators" + ], + "sAMAccountType": [ + "536870912" + ], + "systemFlags": [ + "-1946157056" + ], + "uSNChanged": [ + "12793" + ], + "uSNCreated": [ + "8214" + ], + "whenChanged": [ + "20260331122323.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "adminCount": 1, + "cn": "Backup Operators", + "dSCorePropagationData": [ + "2026-03-31 12:23:23+00:00", + "2026-03-31 12:08:13+00:00", + "1601-01-01 00:04:16+00:00" + ], + "description": [ + "Backup Operators can override security restrictions for the sole purpose of backing up or restoring files" + ], + "distinguishedName": "CN=Backup Operators,CN=Builtin,DC=t,DC=goauthentik,DC=io", + "groupType": -2147483643, + "instanceType": 4, + "isCriticalSystemObject": true, + "name": "Backup Operators", + "objectCategory": "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "group" + ], + "objectGUID": "{d48213da-2904-4cf0-b697-6050c6f0badf}", + "objectSid": "S-1-5-32-551", + "sAMAccountName": "Backup Operators", + "sAMAccountType": 536870912, + "systemFlags": -1946157056, + "uSNChanged": 12791, + "uSNCreated": 8215, + "whenChanged": "2026-03-31 12:23:23+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=Backup Operators,CN=Builtin,DC=t,DC=goauthentik,DC=io", + "raw": { + "adminCount": [ + "1" + ], + "cn": [ + "Backup Operators" + ], + "dSCorePropagationData": [ + "20260331122323.0Z", + "20260331120813.0Z", + "16010101000416.0Z" + ], + "description": [ + "Backup Operators can override security restrictions for the sole purpose of backing up or restoring files" + ], + "distinguishedName": [ + "CN=Backup Operators,CN=Builtin,DC=t,DC=goauthentik,DC=io" + ], + "groupType": [ + "-2147483643" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "Backup Operators" + ], + "objectCategory": [ + "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "group" + ], + "objectGUID": [ + { + "encoded": "2hOC1AQp8Ey2l2BQxvC63w==", + "encoding": "base64" + } + ], + "objectSid": [ + "\u0001\u0002\u0000\u0000\u0000\u0000\u0000\u0005 \u0000\u0000\u0000'\u0002\u0000\u0000" + ], + "sAMAccountName": [ + "Backup Operators" + ], + "sAMAccountType": [ + "536870912" + ], + "systemFlags": [ + "-1946157056" + ], + "uSNChanged": [ + "12791" + ], + "uSNCreated": [ + "8215" + ], + "whenChanged": [ + "20260331122323.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "adminCount": 1, + "cn": "Replicator", + "dSCorePropagationData": [ + "2026-03-31 12:23:23+00:00", + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:04:16+00:00" + ], + "description": [ + "Supports file replication in a domain" + ], + "distinguishedName": "CN=Replicator,CN=Builtin,DC=t,DC=goauthentik,DC=io", + "groupType": -2147483643, + "instanceType": 4, + "isCriticalSystemObject": true, + "name": "Replicator", + "objectCategory": "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "group" + ], + "objectGUID": "{864f67d9-4bae-4ec8-b86e-45208497fb3d}", + "objectSid": "S-1-5-32-552", + "sAMAccountName": "Replicator", + "sAMAccountType": 536870912, + "systemFlags": -1946157056, + "uSNChanged": 12789, + "uSNCreated": 8216, + "whenChanged": "2026-03-31 12:23:23+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=Replicator,CN=Builtin,DC=t,DC=goauthentik,DC=io", + "raw": { + "adminCount": [ + "1" + ], + "cn": [ + "Replicator" + ], + "dSCorePropagationData": [ + "20260331122323.0Z", + "20260331120814.0Z", + "16010101000416.0Z" + ], + "description": [ + "Supports file replication in a domain" + ], + "distinguishedName": [ + "CN=Replicator,CN=Builtin,DC=t,DC=goauthentik,DC=io" + ], + "groupType": [ + "-2147483643" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "Replicator" + ], + "objectCategory": [ + "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "group" + ], + "objectGUID": [ + { + "encoded": "2WdPhq5LyE64bkUghJf7PQ==", + "encoding": "base64" + } + ], + "objectSid": [ + "\u0001\u0002\u0000\u0000\u0000\u0000\u0000\u0005 \u0000\u0000\u0000(\u0002\u0000\u0000" + ], + "sAMAccountName": [ + "Replicator" + ], + "sAMAccountType": [ + "536870912" + ], + "systemFlags": [ + "-1946157056" + ], + "uSNChanged": [ + "12789" + ], + "uSNCreated": [ + "8216" + ], + "whenChanged": [ + "20260331122323.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "Remote Desktop Users", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "description": [ + "Members in this group are granted the right to logon remotely" + ], + "distinguishedName": "CN=Remote Desktop Users,CN=Builtin,DC=t,DC=goauthentik,DC=io", + "groupType": -2147483643, + "instanceType": 4, + "isCriticalSystemObject": true, + "name": "Remote Desktop Users", + "objectCategory": "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "group" + ], + "objectGUID": "{759a4ca8-5b63-43f6-bed1-8366c27460ad}", + "objectSid": "S-1-5-32-555", + "sAMAccountName": "Remote Desktop Users", + "sAMAccountType": 536870912, + "systemFlags": -1946157056, + "uSNChanged": 8217, + "uSNCreated": 8217, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=Remote Desktop Users,CN=Builtin,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "Remote Desktop Users" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "description": [ + "Members in this group are granted the right to logon remotely" + ], + "distinguishedName": [ + "CN=Remote Desktop Users,CN=Builtin,DC=t,DC=goauthentik,DC=io" + ], + "groupType": [ + "-2147483643" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "Remote Desktop Users" + ], + "objectCategory": [ + "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "group" + ], + "objectGUID": [ + { + "encoded": "qEyadWNb9kO+0YNmwnRgrQ==", + "encoding": "base64" + } + ], + "objectSid": [ + "\u0001\u0002\u0000\u0000\u0000\u0000\u0000\u0005 \u0000\u0000\u0000+\u0002\u0000\u0000" + ], + "sAMAccountName": [ + "Remote Desktop Users" + ], + "sAMAccountType": [ + "536870912" + ], + "systemFlags": [ + "-1946157056" + ], + "uSNChanged": [ + "8217" + ], + "uSNCreated": [ + "8217" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "Network Configuration Operators", + "dSCorePropagationData": [ + "2026-03-31 12:08:13+00:00", + "1601-01-01 00:00:01+00:00" + ], + "description": [ + "Members in this group can have some administrative privileges to manage configuration of networking features" + ], + "distinguishedName": "CN=Network Configuration Operators,CN=Builtin,DC=t,DC=goauthentik,DC=io", + "groupType": -2147483643, + "instanceType": 4, + "isCriticalSystemObject": true, + "name": "Network Configuration Operators", + "objectCategory": "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "group" + ], + "objectGUID": "{d533ba81-b227-44cb-bc40-0f12c9cd1395}", + "objectSid": "S-1-5-32-556", + "sAMAccountName": "Network Configuration Operators", + "sAMAccountType": 536870912, + "systemFlags": -1946157056, + "uSNChanged": 8218, + "uSNCreated": 8218, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=Network Configuration Operators,CN=Builtin,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "Network Configuration Operators" + ], + "dSCorePropagationData": [ + "20260331120813.0Z", + "16010101000001.0Z" + ], + "description": [ + "Members in this group can have some administrative privileges to manage configuration of networking features" + ], + "distinguishedName": [ + "CN=Network Configuration Operators,CN=Builtin,DC=t,DC=goauthentik,DC=io" + ], + "groupType": [ + "-2147483643" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "Network Configuration Operators" + ], + "objectCategory": [ + "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "group" + ], + "objectGUID": [ + { + "encoded": "gboz1Seyy0S8QA8Syc0TlQ==", + "encoding": "base64" + } + ], + "objectSid": [ + "\u0001\u0002\u0000\u0000\u0000\u0000\u0000\u0005 \u0000\u0000\u0000,\u0002\u0000\u0000" + ], + "sAMAccountName": [ + "Network Configuration Operators" + ], + "sAMAccountType": [ + "536870912" + ], + "systemFlags": [ + "-1946157056" + ], + "uSNChanged": [ + "8218" + ], + "uSNCreated": [ + "8218" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "Performance Monitor Users", + "dSCorePropagationData": [ + "2026-03-31 12:08:13+00:00", + "1601-01-01 00:00:01+00:00" + ], + "description": [ + "Members of this group can access performance counter data locally and remotely" + ], + "distinguishedName": "CN=Performance Monitor Users,CN=Builtin,DC=t,DC=goauthentik,DC=io", + "groupType": -2147483643, + "instanceType": 4, + "isCriticalSystemObject": true, + "name": "Performance Monitor Users", + "objectCategory": "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "group" + ], + "objectGUID": "{e892e0ce-6342-4b8c-86d4-e7fe9c5ae924}", + "objectSid": "S-1-5-32-558", + "sAMAccountName": "Performance Monitor Users", + "sAMAccountType": 536870912, + "systemFlags": -1946157056, + "uSNChanged": 8219, + "uSNCreated": 8219, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=Performance Monitor Users,CN=Builtin,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "Performance Monitor Users" + ], + "dSCorePropagationData": [ + "20260331120813.0Z", + "16010101000001.0Z" + ], + "description": [ + "Members of this group can access performance counter data locally and remotely" + ], + "distinguishedName": [ + "CN=Performance Monitor Users,CN=Builtin,DC=t,DC=goauthentik,DC=io" + ], + "groupType": [ + "-2147483643" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "Performance Monitor Users" + ], + "objectCategory": [ + "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "group" + ], + "objectGUID": [ + { + "encoded": "zuCS6EJjjEuG1Of+nFrpJA==", + "encoding": "base64" + } + ], + "objectSid": [ + "\u0001\u0002\u0000\u0000\u0000\u0000\u0000\u0005 \u0000\u0000\u0000.\u0002\u0000\u0000" + ], + "sAMAccountName": [ + "Performance Monitor Users" + ], + "sAMAccountType": [ + "536870912" + ], + "systemFlags": [ + "-1946157056" + ], + "uSNChanged": [ + "8219" + ], + "uSNCreated": [ + "8219" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "Performance Log Users", + "dSCorePropagationData": [ + "2026-03-31 12:08:13+00:00", + "1601-01-01 00:00:01+00:00" + ], + "description": [ + "Members of this group may schedule logging of performance counters, enable trace providers, and collect event traces both locally and via remote access to this computer" + ], + "distinguishedName": "CN=Performance Log Users,CN=Builtin,DC=t,DC=goauthentik,DC=io", + "groupType": -2147483643, + "instanceType": 4, + "isCriticalSystemObject": true, + "name": "Performance Log Users", + "objectCategory": "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "group" + ], + "objectGUID": "{9179cf74-2ccb-4b1d-9151-c46322b2865d}", + "objectSid": "S-1-5-32-559", + "sAMAccountName": "Performance Log Users", + "sAMAccountType": 536870912, + "systemFlags": -1946157056, + "uSNChanged": 8220, + "uSNCreated": 8220, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=Performance Log Users,CN=Builtin,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "Performance Log Users" + ], + "dSCorePropagationData": [ + "20260331120813.0Z", + "16010101000001.0Z" + ], + "description": [ + "Members of this group may schedule logging of performance counters, enable trace providers, and collect event traces both locally and via remote access to this computer" + ], + "distinguishedName": [ + "CN=Performance Log Users,CN=Builtin,DC=t,DC=goauthentik,DC=io" + ], + "groupType": [ + "-2147483643" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "Performance Log Users" + ], + "objectCategory": [ + "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "group" + ], + "objectGUID": [ + { + "encoded": "dM95kcssHUuRUcRjIrKGXQ==", + "encoding": "base64" + } + ], + "objectSid": [ + "\u0001\u0002\u0000\u0000\u0000\u0000\u0000\u0005 \u0000\u0000\u0000/\u0002\u0000\u0000" + ], + "sAMAccountName": [ + "Performance Log Users" + ], + "sAMAccountType": [ + "536870912" + ], + "systemFlags": [ + "-1946157056" + ], + "uSNChanged": [ + "8220" + ], + "uSNCreated": [ + "8220" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "Distributed COM Users", + "dSCorePropagationData": [ + "2026-03-31 12:08:13+00:00", + "1601-01-01 00:00:01+00:00" + ], + "description": [ + "Members are allowed to launch, activate and use Distributed COM objects on this machine." + ], + "distinguishedName": "CN=Distributed COM Users,CN=Builtin,DC=t,DC=goauthentik,DC=io", + "groupType": -2147483643, + "instanceType": 4, + "isCriticalSystemObject": true, + "name": "Distributed COM Users", + "objectCategory": "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "group" + ], + "objectGUID": "{9ab647b3-41b5-4d56-911c-f89e2ab7833a}", + "objectSid": "S-1-5-32-562", + "sAMAccountName": "Distributed COM Users", + "sAMAccountType": 536870912, + "systemFlags": -1946157056, + "uSNChanged": 8221, + "uSNCreated": 8221, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=Distributed COM Users,CN=Builtin,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "Distributed COM Users" + ], + "dSCorePropagationData": [ + "20260331120813.0Z", + "16010101000001.0Z" + ], + "description": [ + "Members are allowed to launch, activate and use Distributed COM objects on this machine." + ], + "distinguishedName": [ + "CN=Distributed COM Users,CN=Builtin,DC=t,DC=goauthentik,DC=io" + ], + "groupType": [ + "-2147483643" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "Distributed COM Users" + ], + "objectCategory": [ + "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "group" + ], + "objectGUID": [ + { + "encoded": "s0e2mrVBVk2RHPieKreDOg==", + "encoding": "base64" + } + ], + "objectSid": [ + "\u0001\u0002\u0000\u0000\u0000\u0000\u0000\u0005 \u0000\u0000\u00002\u0002\u0000\u0000" + ], + "sAMAccountName": [ + "Distributed COM Users" + ], + "sAMAccountType": [ + "536870912" + ], + "systemFlags": [ + "-1946157056" + ], + "uSNChanged": [ + "8221" + ], + "uSNCreated": [ + "8221" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "IIS_IUSRS", + "dSCorePropagationData": [ + "2026-03-31 12:08:13+00:00", + "1601-01-01 00:00:01+00:00" + ], + "description": [ + "Built-in group used by Internet Information Services." + ], + "distinguishedName": "CN=IIS_IUSRS,CN=Builtin,DC=t,DC=goauthentik,DC=io", + "groupType": -2147483643, + "instanceType": 4, + "isCriticalSystemObject": true, + "member": [ + "CN=S-1-5-17,CN=ForeignSecurityPrincipals,DC=t,DC=goauthentik,DC=io" + ], + "name": "IIS_IUSRS", + "objectCategory": "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "group" + ], + "objectGUID": "{44c029dd-6b12-49df-a05c-38e98cf546d2}", + "objectSid": "S-1-5-32-568", + "sAMAccountName": "IIS_IUSRS", + "sAMAccountType": 536870912, + "systemFlags": -1946157056, + "uSNChanged": 8225, + "uSNCreated": 8222, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=IIS_IUSRS,CN=Builtin,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "IIS_IUSRS" + ], + "dSCorePropagationData": [ + "20260331120813.0Z", + "16010101000001.0Z" + ], + "description": [ + "Built-in group used by Internet Information Services." + ], + "distinguishedName": [ + "CN=IIS_IUSRS,CN=Builtin,DC=t,DC=goauthentik,DC=io" + ], + "groupType": [ + "-2147483643" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "member": [ + "CN=S-1-5-17,CN=ForeignSecurityPrincipals,DC=t,DC=goauthentik,DC=io" + ], + "name": [ + "IIS_IUSRS" + ], + "objectCategory": [ + "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "group" + ], + "objectGUID": [ + { + "encoded": "3SnARBJr30mgXDjpjPVG0g==", + "encoding": "base64" + } + ], + "objectSid": [ + "\u0001\u0002\u0000\u0000\u0000\u0000\u0000\u0005 \u0000\u0000\u00008\u0002\u0000\u0000" + ], + "sAMAccountName": [ + "IIS_IUSRS" + ], + "sAMAccountType": [ + "536870912" + ], + "systemFlags": [ + "-1946157056" + ], + "uSNChanged": [ + "8225" + ], + "uSNCreated": [ + "8222" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "S-1-5-17", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=S-1-5-17,CN=ForeignSecurityPrincipals,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "memberOf": [ + "CN=IIS_IUSRS,CN=Builtin,DC=t,DC=goauthentik,DC=io" + ], + "name": "S-1-5-17", + "objectCategory": "CN=Foreign-Security-Principal,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "foreignSecurityPrincipal" + ], + "objectGUID": "{bd15e028-9d09-4946-92c9-121a7aa3424c}", + "objectSid": "S-1-5-17", + "showInAdvancedViewOnly": true, + "uSNChanged": 8223, + "uSNCreated": 8223, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=S-1-5-17,CN=ForeignSecurityPrincipals,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "S-1-5-17" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=S-1-5-17,CN=ForeignSecurityPrincipals,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "memberOf": [ + "CN=IIS_IUSRS,CN=Builtin,DC=t,DC=goauthentik,DC=io" + ], + "name": [ + "S-1-5-17" + ], + "objectCategory": [ + "CN=Foreign-Security-Principal,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "foreignSecurityPrincipal" + ], + "objectGUID": [ + { + "encoded": "KOAVvQmdRkmSyRIaeqNCTA==", + "encoding": "base64" + } + ], + "objectSid": [ + "\u0001\u0001\u0000\u0000\u0000\u0000\u0000\u0005\u0011\u0000\u0000\u0000" + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "8223" + ], + "uSNCreated": [ + "8223" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "Cryptographic Operators", + "dSCorePropagationData": [ + "2026-03-31 12:08:13+00:00", + "1601-01-01 00:00:01+00:00" + ], + "description": [ + "Members are authorized to perform cryptographic operations." + ], + "distinguishedName": "CN=Cryptographic Operators,CN=Builtin,DC=t,DC=goauthentik,DC=io", + "groupType": -2147483643, + "instanceType": 4, + "isCriticalSystemObject": true, + "name": "Cryptographic Operators", + "objectCategory": "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "group" + ], + "objectGUID": "{b8893ebf-e06f-458d-92f2-538cfc66365f}", + "objectSid": "S-1-5-32-569", + "sAMAccountName": "Cryptographic Operators", + "sAMAccountType": 536870912, + "systemFlags": -1946157056, + "uSNChanged": 8226, + "uSNCreated": 8226, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=Cryptographic Operators,CN=Builtin,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "Cryptographic Operators" + ], + "dSCorePropagationData": [ + "20260331120813.0Z", + "16010101000001.0Z" + ], + "description": [ + "Members are authorized to perform cryptographic operations." + ], + "distinguishedName": [ + "CN=Cryptographic Operators,CN=Builtin,DC=t,DC=goauthentik,DC=io" + ], + "groupType": [ + "-2147483643" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "Cryptographic Operators" + ], + "objectCategory": [ + "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "group" + ], + "objectGUID": [ + { + "encoded": "vz6JuG/gjUWS8lOM/GY2Xw==", + "encoding": "base64" + } + ], + "objectSid": [ + "\u0001\u0002\u0000\u0000\u0000\u0000\u0000\u0005 \u0000\u0000\u00009\u0002\u0000\u0000" + ], + "sAMAccountName": [ + "Cryptographic Operators" + ], + "sAMAccountType": [ + "536870912" + ], + "systemFlags": [ + "-1946157056" + ], + "uSNChanged": [ + "8226" + ], + "uSNCreated": [ + "8226" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "Event Log Readers", + "dSCorePropagationData": [ + "2026-03-31 12:08:13+00:00", + "1601-01-01 00:00:01+00:00" + ], + "description": [ + "Members of this group can read event logs from local machine" + ], + "distinguishedName": "CN=Event Log Readers,CN=Builtin,DC=t,DC=goauthentik,DC=io", + "groupType": -2147483643, + "instanceType": 4, + "isCriticalSystemObject": true, + "name": "Event Log Readers", + "objectCategory": "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "group" + ], + "objectGUID": "{c7e5ebb9-7a25-4345-be5b-ba00a105c2b6}", + "objectSid": "S-1-5-32-573", + "sAMAccountName": "Event Log Readers", + "sAMAccountType": 536870912, + "systemFlags": -1946157056, + "uSNChanged": 8227, + "uSNCreated": 8227, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=Event Log Readers,CN=Builtin,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "Event Log Readers" + ], + "dSCorePropagationData": [ + "20260331120813.0Z", + "16010101000001.0Z" + ], + "description": [ + "Members of this group can read event logs from local machine" + ], + "distinguishedName": [ + "CN=Event Log Readers,CN=Builtin,DC=t,DC=goauthentik,DC=io" + ], + "groupType": [ + "-2147483643" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "Event Log Readers" + ], + "objectCategory": [ + "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "group" + ], + "objectGUID": [ + { + "encoded": "uevlxyV6RUO+W7oAoQXCtg==", + "encoding": "base64" + } + ], + "objectSid": [ + "\u0001\u0002\u0000\u0000\u0000\u0000\u0000\u0005 \u0000\u0000\u0000=\u0002\u0000\u0000" + ], + "sAMAccountName": [ + "Event Log Readers" + ], + "sAMAccountType": [ + "536870912" + ], + "systemFlags": [ + "-1946157056" + ], + "uSNChanged": [ + "8227" + ], + "uSNCreated": [ + "8227" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "Certificate Service DCOM Access", + "dSCorePropagationData": [ + "2026-03-31 12:08:13+00:00", + "1601-01-01 00:00:01+00:00" + ], + "description": [ + "Members of this group are allowed to connect to Certification Authorities in the enterprise" + ], + "distinguishedName": "CN=Certificate Service DCOM Access,CN=Builtin,DC=t,DC=goauthentik,DC=io", + "groupType": -2147483643, + "instanceType": 4, + "isCriticalSystemObject": true, + "name": "Certificate Service DCOM Access", + "objectCategory": "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "group" + ], + "objectGUID": "{0d0b0f73-1952-458c-9153-f47002daf07d}", + "objectSid": "S-1-5-32-574", + "sAMAccountName": "Certificate Service DCOM Access", + "sAMAccountType": 536870912, + "systemFlags": -1946157056, + "uSNChanged": 8228, + "uSNCreated": 8228, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=Certificate Service DCOM Access,CN=Builtin,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "Certificate Service DCOM Access" + ], + "dSCorePropagationData": [ + "20260331120813.0Z", + "16010101000001.0Z" + ], + "description": [ + "Members of this group are allowed to connect to Certification Authorities in the enterprise" + ], + "distinguishedName": [ + "CN=Certificate Service DCOM Access,CN=Builtin,DC=t,DC=goauthentik,DC=io" + ], + "groupType": [ + "-2147483643" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "Certificate Service DCOM Access" + ], + "objectCategory": [ + "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "group" + ], + "objectGUID": [ + { + "encoded": "cw8LDVIZjEWRU/RwAtrwfQ==", + "encoding": "base64" + } + ], + "objectSid": [ + "\u0001\u0002\u0000\u0000\u0000\u0000\u0000\u0005 \u0000\u0000\u0000>\u0002\u0000\u0000" + ], + "sAMAccountName": [ + "Certificate Service DCOM Access" + ], + "sAMAccountType": [ + "536870912" + ], + "systemFlags": [ + "-1946157056" + ], + "uSNChanged": [ + "8228" + ], + "uSNCreated": [ + "8228" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "RDS Remote Access Servers", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "description": [ + "Servers in this group enable users of RemoteApp programs and personal virtual desktops access to these resources. In Internet-facing deployments, these servers are typically deployed in an edge network. This group needs to be populated on servers running RD Connection Broker. RD Gateway servers and RD Web Access servers used in the deployment need to be in this group." + ], + "distinguishedName": "CN=RDS Remote Access Servers,CN=Builtin,DC=t,DC=goauthentik,DC=io", + "groupType": -2147483643, + "instanceType": 4, + "isCriticalSystemObject": true, + "name": "RDS Remote Access Servers", + "objectCategory": "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "group" + ], + "objectGUID": "{e719a0a2-fae3-435e-8804-e614848b3cb7}", + "objectSid": "S-1-5-32-575", + "sAMAccountName": "RDS Remote Access Servers", + "sAMAccountType": 536870912, + "systemFlags": -1946157056, + "uSNChanged": 8229, + "uSNCreated": 8229, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=RDS Remote Access Servers,CN=Builtin,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "RDS Remote Access Servers" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "description": [ + "Servers in this group enable users of RemoteApp programs and personal virtual desktops access to these resources. In Internet-facing deployments, these servers are typically deployed in an edge network. This group needs to be populated on servers running RD Connection Broker. RD Gateway servers and RD Web Access servers used in the deployment need to be in this group." + ], + "distinguishedName": [ + "CN=RDS Remote Access Servers,CN=Builtin,DC=t,DC=goauthentik,DC=io" + ], + "groupType": [ + "-2147483643" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "RDS Remote Access Servers" + ], + "objectCategory": [ + "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "group" + ], + "objectGUID": [ + { + "encoded": "oqAZ5+P6XkOIBOYUhIs8tw==", + "encoding": "base64" + } + ], + "objectSid": [ + "\u0001\u0002\u0000\u0000\u0000\u0000\u0000\u0005 \u0000\u0000\u0000?\u0002\u0000\u0000" + ], + "sAMAccountName": [ + "RDS Remote Access Servers" + ], + "sAMAccountType": [ + "536870912" + ], + "systemFlags": [ + "-1946157056" + ], + "uSNChanged": [ + "8229" + ], + "uSNCreated": [ + "8229" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "RDS Endpoint Servers", + "dSCorePropagationData": [ + "2026-03-31 12:08:13+00:00", + "1601-01-01 00:00:01+00:00" + ], + "description": [ + "Servers in this group run virtual machines and host sessions where users RemoteApp programs and personal virtual desktops run. This group needs to be populated on servers running RD Connection Broker. RD Session Host servers and RD Virtualization Host servers used in the deployment need to be in this group." + ], + "distinguishedName": "CN=RDS Endpoint Servers,CN=Builtin,DC=t,DC=goauthentik,DC=io", + "groupType": -2147483643, + "instanceType": 4, + "isCriticalSystemObject": true, + "name": "RDS Endpoint Servers", + "objectCategory": "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "group" + ], + "objectGUID": "{b309d07b-0ac2-4968-b935-d7e1e95dc023}", + "objectSid": "S-1-5-32-576", + "sAMAccountName": "RDS Endpoint Servers", + "sAMAccountType": 536870912, + "systemFlags": -1946157056, + "uSNChanged": 8230, + "uSNCreated": 8230, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=RDS Endpoint Servers,CN=Builtin,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "RDS Endpoint Servers" + ], + "dSCorePropagationData": [ + "20260331120813.0Z", + "16010101000001.0Z" + ], + "description": [ + "Servers in this group run virtual machines and host sessions where users RemoteApp programs and personal virtual desktops run. This group needs to be populated on servers running RD Connection Broker. RD Session Host servers and RD Virtualization Host servers used in the deployment need to be in this group." + ], + "distinguishedName": [ + "CN=RDS Endpoint Servers,CN=Builtin,DC=t,DC=goauthentik,DC=io" + ], + "groupType": [ + "-2147483643" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "RDS Endpoint Servers" + ], + "objectCategory": [ + "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "group" + ], + "objectGUID": [ + { + "encoded": "e9AJs8IKaEm5Ndfh6V3AIw==", + "encoding": "base64" + } + ], + "objectSid": [ + "\u0001\u0002\u0000\u0000\u0000\u0000\u0000\u0005 \u0000\u0000\u0000@\u0002\u0000\u0000" + ], + "sAMAccountName": [ + "RDS Endpoint Servers" + ], + "sAMAccountType": [ + "536870912" + ], + "systemFlags": [ + "-1946157056" + ], + "uSNChanged": [ + "8230" + ], + "uSNCreated": [ + "8230" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "RDS Management Servers", + "dSCorePropagationData": [ + "2026-03-31 12:08:13+00:00", + "1601-01-01 00:00:01+00:00" + ], + "description": [ + "Servers in this group can perform routine administrative actions on servers running Remote Desktop Services. This group needs to be populated on all servers in a Remote Desktop Services deployment. The servers running the RDS Central Management service must be included in this group." + ], + "distinguishedName": "CN=RDS Management Servers,CN=Builtin,DC=t,DC=goauthentik,DC=io", + "groupType": -2147483643, + "instanceType": 4, + "isCriticalSystemObject": true, + "name": "RDS Management Servers", + "objectCategory": "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "group" + ], + "objectGUID": "{50aa859d-693a-4558-b7f9-dcc8d3b9ce85}", + "objectSid": "S-1-5-32-577", + "sAMAccountName": "RDS Management Servers", + "sAMAccountType": 536870912, + "systemFlags": -1946157056, + "uSNChanged": 8231, + "uSNCreated": 8231, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=RDS Management Servers,CN=Builtin,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "RDS Management Servers" + ], + "dSCorePropagationData": [ + "20260331120813.0Z", + "16010101000001.0Z" + ], + "description": [ + "Servers in this group can perform routine administrative actions on servers running Remote Desktop Services. This group needs to be populated on all servers in a Remote Desktop Services deployment. The servers running the RDS Central Management service must be included in this group." + ], + "distinguishedName": [ + "CN=RDS Management Servers,CN=Builtin,DC=t,DC=goauthentik,DC=io" + ], + "groupType": [ + "-2147483643" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "RDS Management Servers" + ], + "objectCategory": [ + "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "group" + ], + "objectGUID": [ + { + "encoded": "nYWqUDppWEW3+dzI07nOhQ==", + "encoding": "base64" + } + ], + "objectSid": [ + "\u0001\u0002\u0000\u0000\u0000\u0000\u0000\u0005 \u0000\u0000\u0000A\u0002\u0000\u0000" + ], + "sAMAccountName": [ + "RDS Management Servers" + ], + "sAMAccountType": [ + "536870912" + ], + "systemFlags": [ + "-1946157056" + ], + "uSNChanged": [ + "8231" + ], + "uSNCreated": [ + "8231" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "Hyper-V Administrators", + "dSCorePropagationData": [ + "2026-03-31 12:08:13+00:00", + "1601-01-01 00:00:01+00:00" + ], + "description": [ + "Members of this group have complete and unrestricted access to all features of Hyper-V." + ], + "distinguishedName": "CN=Hyper-V Administrators,CN=Builtin,DC=t,DC=goauthentik,DC=io", + "groupType": -2147483643, + "instanceType": 4, + "isCriticalSystemObject": true, + "name": "Hyper-V Administrators", + "objectCategory": "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "group" + ], + "objectGUID": "{5fa64a7c-4e6e-4234-a0a9-42132c34c578}", + "objectSid": "S-1-5-32-578", + "sAMAccountName": "Hyper-V Administrators", + "sAMAccountType": 536870912, + "systemFlags": -1946157056, + "uSNChanged": 8232, + "uSNCreated": 8232, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=Hyper-V Administrators,CN=Builtin,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "Hyper-V Administrators" + ], + "dSCorePropagationData": [ + "20260331120813.0Z", + "16010101000001.0Z" + ], + "description": [ + "Members of this group have complete and unrestricted access to all features of Hyper-V." + ], + "distinguishedName": [ + "CN=Hyper-V Administrators,CN=Builtin,DC=t,DC=goauthentik,DC=io" + ], + "groupType": [ + "-2147483643" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "Hyper-V Administrators" + ], + "objectCategory": [ + "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "group" + ], + "objectGUID": [ + { + "encoded": "fEqmX25ONEKgqUITLDTFeA==", + "encoding": "base64" + } + ], + "objectSid": [ + "\u0001\u0002\u0000\u0000\u0000\u0000\u0000\u0005 \u0000\u0000\u0000B\u0002\u0000\u0000" + ], + "sAMAccountName": [ + "Hyper-V Administrators" + ], + "sAMAccountType": [ + "536870912" + ], + "systemFlags": [ + "-1946157056" + ], + "uSNChanged": [ + "8232" + ], + "uSNCreated": [ + "8232" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "Access Control Assistance Operators", + "dSCorePropagationData": [ + "2026-03-31 12:08:13+00:00", + "1601-01-01 00:00:01+00:00" + ], + "description": [ + "Members of this group can remotely query authorization attributes and permissions for resources on this computer." + ], + "distinguishedName": "CN=Access Control Assistance Operators,CN=Builtin,DC=t,DC=goauthentik,DC=io", + "groupType": -2147483643, + "instanceType": 4, + "isCriticalSystemObject": true, + "name": "Access Control Assistance Operators", + "objectCategory": "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "group" + ], + "objectGUID": "{50c80a24-3060-4de6-a486-7965d170df42}", + "objectSid": "S-1-5-32-579", + "sAMAccountName": "Access Control Assistance Operators", + "sAMAccountType": 536870912, + "systemFlags": -1946157056, + "uSNChanged": 8233, + "uSNCreated": 8233, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=Access Control Assistance Operators,CN=Builtin,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "Access Control Assistance Operators" + ], + "dSCorePropagationData": [ + "20260331120813.0Z", + "16010101000001.0Z" + ], + "description": [ + "Members of this group can remotely query authorization attributes and permissions for resources on this computer." + ], + "distinguishedName": [ + "CN=Access Control Assistance Operators,CN=Builtin,DC=t,DC=goauthentik,DC=io" + ], + "groupType": [ + "-2147483643" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "Access Control Assistance Operators" + ], + "objectCategory": [ + "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "group" + ], + "objectGUID": [ + { + "encoded": "JArIUGAw5k2khnll0XDfQg==", + "encoding": "base64" + } + ], + "objectSid": [ + "\u0001\u0002\u0000\u0000\u0000\u0000\u0000\u0005 \u0000\u0000\u0000C\u0002\u0000\u0000" + ], + "sAMAccountName": [ + "Access Control Assistance Operators" + ], + "sAMAccountType": [ + "536870912" + ], + "systemFlags": [ + "-1946157056" + ], + "uSNChanged": [ + "8233" + ], + "uSNCreated": [ + "8233" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "Remote Management Users", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "description": [ + "Members of this group can access WMI resources over management protocols (such as WS-Management via the Windows Remote Management service). This applies only to WMI namespaces that grant access to the user." + ], + "distinguishedName": "CN=Remote Management Users,CN=Builtin,DC=t,DC=goauthentik,DC=io", + "groupType": -2147483643, + "instanceType": 4, + "isCriticalSystemObject": true, + "name": "Remote Management Users", + "objectCategory": "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "group" + ], + "objectGUID": "{95ac7def-4b70-4c1b-92f5-0464aefcdda7}", + "objectSid": "S-1-5-32-580", + "sAMAccountName": "Remote Management Users", + "sAMAccountType": 536870912, + "systemFlags": -1946157056, + "uSNChanged": 8234, + "uSNCreated": 8234, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=Remote Management Users,CN=Builtin,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "Remote Management Users" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "description": [ + "Members of this group can access WMI resources over management protocols (such as WS-Management via the Windows Remote Management service). This applies only to WMI namespaces that grant access to the user." + ], + "distinguishedName": [ + "CN=Remote Management Users,CN=Builtin,DC=t,DC=goauthentik,DC=io" + ], + "groupType": [ + "-2147483643" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "Remote Management Users" + ], + "objectCategory": [ + "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "group" + ], + "objectGUID": [ + { + "encoded": "732slXBLG0yS9QRkrvzdpw==", + "encoding": "base64" + } + ], + "objectSid": [ + "\u0001\u0002\u0000\u0000\u0000\u0000\u0000\u0005 \u0000\u0000\u0000D\u0002\u0000\u0000" + ], + "sAMAccountName": [ + "Remote Management Users" + ], + "sAMAccountType": [ + "536870912" + ], + "systemFlags": [ + "-1946157056" + ], + "uSNChanged": [ + "8234" + ], + "uSNCreated": [ + "8234" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "Storage Replica Administrators", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "description": [ + "Members of this group have complete and unrestricted access to all features of Storage Replica." + ], + "distinguishedName": "CN=Storage Replica Administrators,CN=Builtin,DC=t,DC=goauthentik,DC=io", + "groupType": -2147483643, + "instanceType": 4, + "isCriticalSystemObject": true, + "name": "Storage Replica Administrators", + "objectCategory": "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "group" + ], + "objectGUID": "{3ccc0e75-5d8f-4b52-898a-852bb8c474c1}", + "objectSid": "S-1-5-32-582", + "sAMAccountName": "Storage Replica Administrators", + "sAMAccountType": 536870912, + "systemFlags": -1946157056, + "uSNChanged": 8235, + "uSNCreated": 8235, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=Storage Replica Administrators,CN=Builtin,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "Storage Replica Administrators" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "description": [ + "Members of this group have complete and unrestricted access to all features of Storage Replica." + ], + "distinguishedName": [ + "CN=Storage Replica Administrators,CN=Builtin,DC=t,DC=goauthentik,DC=io" + ], + "groupType": [ + "-2147483643" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "Storage Replica Administrators" + ], + "objectCategory": [ + "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "group" + ], + "objectGUID": [ + { + "encoded": "dQ7MPI9dUkuJioUruMR0wQ==", + "encoding": "base64" + } + ], + "objectSid": [ + "\u0001\u0002\u0000\u0000\u0000\u0000\u0000\u0005 \u0000\u0000\u0000F\u0002\u0000\u0000" + ], + "sAMAccountName": [ + "Storage Replica Administrators" + ], + "sAMAccountType": [ + "536870912" + ], + "systemFlags": [ + "-1946157056" + ], + "uSNChanged": [ + "8235" + ], + "uSNCreated": [ + "8235" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "OpenSSH Users", + "dSCorePropagationData": [ + "2026-03-31 12:08:13+00:00", + "1601-01-01 00:00:01+00:00" + ], + "description": [ + "Members of this group may connect to this computer using SSH." + ], + "distinguishedName": "CN=OpenSSH Users,CN=Builtin,DC=t,DC=goauthentik,DC=io", + "groupType": -2147483643, + "instanceType": 4, + "isCriticalSystemObject": true, + "name": "OpenSSH Users", + "objectCategory": "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "group" + ], + "objectGUID": "{95d810e5-7a57-4660-927a-d07e4ee30de6}", + "objectSid": "S-1-5-32-585", + "sAMAccountName": "OpenSSH Users", + "sAMAccountType": 536870912, + "systemFlags": -1946157056, + "uSNChanged": 8236, + "uSNCreated": 8236, + "whenChanged": "2026-03-31 12:05:04+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=OpenSSH Users,CN=Builtin,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "OpenSSH Users" + ], + "dSCorePropagationData": [ + "20260331120813.0Z", + "16010101000001.0Z" + ], + "description": [ + "Members of this group may connect to this computer using SSH." + ], + "distinguishedName": [ + "CN=OpenSSH Users,CN=Builtin,DC=t,DC=goauthentik,DC=io" + ], + "groupType": [ + "-2147483643" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "OpenSSH Users" + ], + "objectCategory": [ + "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "group" + ], + "objectGUID": [ + { + "encoded": "5RDYlVd6YEaSetB+TuMN5g==", + "encoding": "base64" + } + ], + "objectSid": [ + "\u0001\u0002\u0000\u0000\u0000\u0000\u0000\u0005 \u0000\u0000\u0000I\u0002\u0000\u0000" + ], + "sAMAccountName": [ + "OpenSSH Users" + ], + "sAMAccountType": [ + "536870912" + ], + "systemFlags": [ + "-1946157056" + ], + "uSNChanged": [ + "8236" + ], + "uSNCreated": [ + "8236" + ], + "whenChanged": [ + "20260331120504.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "cn": "Server", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=Server,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "isCriticalSystemObject": true, + "name": "Server", + "objectCategory": "CN=Sam-Server,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "securityObject", + "samServer" + ], + "objectGUID": "{949ad68f-6cb1-47f3-b5e5-73da0628671f}", + "revision": 65545, + "samDomainUpdates": { + "encoded": "/v9/", + "encoding": "base64" + }, + "showInAdvancedViewOnly": true, + "systemFlags": -1946157056, + "uSNChanged": 12586, + "uSNCreated": 8237, + "whenChanged": "2026-03-31 12:13:23+00:00", + "whenCreated": "2026-03-31 12:05:04+00:00" + }, + "dn": "CN=Server,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "Server" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=Server,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "Server" + ], + "objectCategory": [ + "CN=Sam-Server,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "securityObject", + "samServer" + ], + "objectGUID": [ + { + "encoded": "j9aalLFs80e15XPaBihnHw==", + "encoding": "base64" + } + ], + "revision": [ + "65545" + ], + "samDomainUpdates": [ + { + "encoded": "/v9/", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "systemFlags": [ + "-1946157056" + ], + "uSNChanged": [ + "12586" + ], + "uSNCreated": [ + "8237" + ], + "whenChanged": [ + "20260331121323.0Z" + ], + "whenCreated": [ + "20260331120504.0Z" + ] + } + }, + { + "attributes": { + "accountExpires": "9999-12-31 23:59:59.999999+00:00", + "badPasswordTime": "1601-01-01 00:00:00+00:00", + "badPwdCount": 0, + "cn": "AK-DC", + "codePage": 0, + "countryCode": 0, + "dNSHostName": "ak-dc.t.goauthentik.io", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=AK-DC,OU=Domain Controllers,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "isCriticalSystemObject": true, + "lastLogoff": "1601-01-01 00:00:00+00:00", + "lastLogon": "2026-03-31 13:51:30.711479+00:00", + "lastLogonTimestamp": "2026-03-31 12:08:53.719910+00:00", + "localPolicyFlags": 0, + "logonCount": 14, + "msDFSR-ComputerReferenceBL": [ + "CN=AK-DC,CN=Topology,CN=Domain System Volume,CN=DFSR-GlobalSettings,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "msDS-GenerationId": { + "encoded": "KYa0YG5O6UU=", + "encoding": "base64" + }, + "msDS-SupportedEncryptionTypes": 28, + "name": "AK-DC", + "objectCategory": "CN=Computer,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "person", + "organizationalPerson", + "user", + "computer" + ], + "objectGUID": "{e68f67d3-9773-4618-b687-a53eca32a95d}", + "objectSid": "S-1-5-21-1955698215-2946288202-2760262721-1001", + "operatingSystem": "Windows Server 2025 Standard Evaluation", + "operatingSystemVersion": "10.0 (26100)", + "primaryGroupID": 516, + "pwdLastSet": "2026-03-31 12:08:13.711060+00:00", + "rIDSetReferences": [ + "CN=RID Set,CN=AK-DC,OU=Domain Controllers,DC=t,DC=goauthentik,DC=io" + ], + "sAMAccountName": "AK-DC$", + "sAMAccountType": 805306369, + "serverReferenceBL": [ + "CN=AK-DC,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "servicePrincipalName": [ + "Dfsr-12F9A27C-BF97-4787-9364-D31B6C55EB04/ak-dc.t.goauthentik.io", + "ldap/ak-dc.t.goauthentik.io/ForestDnsZones.t.goauthentik.io", + "ldap/ak-dc.t.goauthentik.io/DomainDnsZones.t.goauthentik.io", + "TERMSRV/AK-DC", + "TERMSRV/ak-dc.t.goauthentik.io", + "DNS/ak-dc.t.goauthentik.io", + "GC/ak-dc.t.goauthentik.io/t.goauthentik.io", + "RestrictedKrbHost/ak-dc.t.goauthentik.io", + "RestrictedKrbHost/AK-DC", + "RPC/8a1fedfc-a523-4cd7-b7a2-646e54a3f527._msdcs.t.goauthentik.io", + "HOST/AK-DC/AK-TEST", + "HOST/ak-dc.t.goauthentik.io/AK-TEST", + "HOST/AK-DC", + "HOST/ak-dc.t.goauthentik.io", + "HOST/ak-dc.t.goauthentik.io/t.goauthentik.io", + "E3514235-4B06-11D1-AB04-00C04FC2DCD2/8a1fedfc-a523-4cd7-b7a2-646e54a3f527/t.goauthentik.io", + "ldap/AK-DC/AK-TEST", + "ldap/8a1fedfc-a523-4cd7-b7a2-646e54a3f527._msdcs.t.goauthentik.io", + "ldap/ak-dc.t.goauthentik.io/AK-TEST", + "ldap/AK-DC", + "ldap/ak-dc.t.goauthentik.io", + "ldap/ak-dc.t.goauthentik.io/t.goauthentik.io" + ], + "uSNChanged": 12769, + "uSNCreated": 12293, + "userAccountControl": 532480, + "whenChanged": "2026-03-31 12:18:30+00:00", + "whenCreated": "2026-03-31 12:08:13+00:00" + }, + "dn": "CN=AK-DC,OU=Domain Controllers,DC=t,DC=goauthentik,DC=io", + "raw": { + "accountExpires": [ + "9223372036854775807" + ], + "badPasswordTime": [ + "0" + ], + "badPwdCount": [ + "0" + ], + "cn": [ + "AK-DC" + ], + "codePage": [ + "0" + ], + "countryCode": [ + "0" + ], + "dNSHostName": [ + "ak-dc.t.goauthentik.io" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=AK-DC,OU=Domain Controllers,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "lastLogoff": [ + "0" + ], + "lastLogon": [ + "134194386907114806" + ], + "lastLogonTimestamp": [ + "134194325337199110" + ], + "localPolicyFlags": [ + "0" + ], + "logonCount": [ + "14" + ], + "msDFSR-ComputerReferenceBL": [ + "CN=AK-DC,CN=Topology,CN=Domain System Volume,CN=DFSR-GlobalSettings,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "msDS-GenerationId": [ + { + "encoded": "KYa0YG5O6UU=", + "encoding": "base64" + } + ], + "msDS-SupportedEncryptionTypes": [ + "28" + ], + "name": [ + "AK-DC" + ], + "objectCategory": [ + "CN=Computer,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "person", + "organizationalPerson", + "user", + "computer" + ], + "objectGUID": [ + { + "encoded": "02eP5nOXGEa2h6U+yjKpXQ==", + "encoding": "base64" + } + ], + "objectSid": [ + { + "encoded": "AQUAAAAAAAUVAAAAJ5aRdErKnK9BRIak6QMAAA==", + "encoding": "base64" + } + ], + "operatingSystem": [ + "Windows Server 2025 Standard Evaluation" + ], + "operatingSystemVersion": [ + "10.0 (26100)" + ], + "primaryGroupID": [ + "516" + ], + "pwdLastSet": [ + "134194324937110596" + ], + "rIDSetReferences": [ + "CN=RID Set,CN=AK-DC,OU=Domain Controllers,DC=t,DC=goauthentik,DC=io" + ], + "sAMAccountName": [ + "AK-DC$" + ], + "sAMAccountType": [ + "805306369" + ], + "serverReferenceBL": [ + "CN=AK-DC,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "servicePrincipalName": [ + "Dfsr-12F9A27C-BF97-4787-9364-D31B6C55EB04/ak-dc.t.goauthentik.io", + "ldap/ak-dc.t.goauthentik.io/ForestDnsZones.t.goauthentik.io", + "ldap/ak-dc.t.goauthentik.io/DomainDnsZones.t.goauthentik.io", + "TERMSRV/AK-DC", + "TERMSRV/ak-dc.t.goauthentik.io", + "DNS/ak-dc.t.goauthentik.io", + "GC/ak-dc.t.goauthentik.io/t.goauthentik.io", + "RestrictedKrbHost/ak-dc.t.goauthentik.io", + "RestrictedKrbHost/AK-DC", + "RPC/8a1fedfc-a523-4cd7-b7a2-646e54a3f527._msdcs.t.goauthentik.io", + "HOST/AK-DC/AK-TEST", + "HOST/ak-dc.t.goauthentik.io/AK-TEST", + "HOST/AK-DC", + "HOST/ak-dc.t.goauthentik.io", + "HOST/ak-dc.t.goauthentik.io/t.goauthentik.io", + "E3514235-4B06-11D1-AB04-00C04FC2DCD2/8a1fedfc-a523-4cd7-b7a2-646e54a3f527/t.goauthentik.io", + "ldap/AK-DC/AK-TEST", + "ldap/8a1fedfc-a523-4cd7-b7a2-646e54a3f527._msdcs.t.goauthentik.io", + "ldap/ak-dc.t.goauthentik.io/AK-TEST", + "ldap/AK-DC", + "ldap/ak-dc.t.goauthentik.io", + "ldap/ak-dc.t.goauthentik.io/t.goauthentik.io" + ], + "uSNChanged": [ + "12769" + ], + "uSNCreated": [ + "12293" + ], + "userAccountControl": [ + "532480" + ], + "whenChanged": [ + "20260331121830.0Z" + ], + "whenCreated": [ + "20260331120813.0Z" + ] + } + }, + { + "attributes": { + "accountExpires": "9999-12-31 23:59:59.999999+00:00", + "adminCount": 1, + "badPasswordTime": "1601-01-01 00:00:00+00:00", + "badPwdCount": 0, + "cn": "krbtgt", + "codePage": 0, + "countryCode": 0, + "dSCorePropagationData": [ + "2026-03-31 12:23:23+00:00", + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:04:16+00:00" + ], + "description": [ + "Key Distribution Center Service Account" + ], + "distinguishedName": "CN=krbtgt,CN=Users,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "isCriticalSystemObject": true, + "lastLogoff": "1601-01-01 00:00:00+00:00", + "lastLogon": "1601-01-01 00:00:00+00:00", + "logonCount": 0, + "memberOf": [ + "CN=Denied RODC Password Replication Group,CN=Users,DC=t,DC=goauthentik,DC=io" + ], + "msDS-SupportedEncryptionTypes": 0, + "name": "krbtgt", + "objectCategory": "CN=Person,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "person", + "organizationalPerson", + "user" + ], + "objectGUID": "{fe39f546-eec6-466d-8d5e-c71d0375d20e}", + "objectSid": "S-1-5-21-1955698215-2946288202-2760262721-502", + "primaryGroupID": 513, + "pwdLastSet": "2026-03-31 12:08:13.815458+00:00", + "sAMAccountName": "krbtgt", + "sAMAccountType": 805306368, + "servicePrincipalName": [ + "kadmin/changepw" + ], + "showInAdvancedViewOnly": true, + "uSNChanged": 12794, + "uSNCreated": 12324, + "userAccountControl": 514, + "whenChanged": "2026-03-31 12:23:23+00:00", + "whenCreated": "2026-03-31 12:08:13+00:00" + }, + "dn": "CN=krbtgt,CN=Users,DC=t,DC=goauthentik,DC=io", + "raw": { + "accountExpires": [ + "9223372036854775807" + ], + "adminCount": [ + "1" + ], + "badPasswordTime": [ + "0" + ], + "badPwdCount": [ + "0" + ], + "cn": [ + "krbtgt" + ], + "codePage": [ + "0" + ], + "countryCode": [ + "0" + ], + "dSCorePropagationData": [ + "20260331122323.0Z", + "20260331120814.0Z", + "16010101000416.0Z" + ], + "description": [ + "Key Distribution Center Service Account" + ], + "distinguishedName": [ + "CN=krbtgt,CN=Users,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "lastLogoff": [ + "0" + ], + "lastLogon": [ + "0" + ], + "logonCount": [ + "0" + ], + "memberOf": [ + "CN=Denied RODC Password Replication Group,CN=Users,DC=t,DC=goauthentik,DC=io" + ], + "msDS-SupportedEncryptionTypes": [ + "0" + ], + "name": [ + "krbtgt" + ], + "objectCategory": [ + "CN=Person,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "person", + "organizationalPerson", + "user" + ], + "objectGUID": [ + { + "encoded": "RvU5/sbubUaNXscdA3XSDg==", + "encoding": "base64" + } + ], + "objectSid": [ + { + "encoded": "AQUAAAAAAAUVAAAAJ5aRdErKnK9BRIak9gEAAA==", + "encoding": "base64" + } + ], + "primaryGroupID": [ + "513" + ], + "pwdLastSet": [ + "134194324938154600" + ], + "sAMAccountName": [ + "krbtgt" + ], + "sAMAccountType": [ + "805306368" + ], + "servicePrincipalName": [ + "kadmin/changepw" + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "12794" + ], + "uSNCreated": [ + "12324" + ], + "userAccountControl": [ + "514" + ], + "whenChanged": [ + "20260331122323.0Z" + ], + "whenCreated": [ + "20260331120813.0Z" + ] + } + }, + { + "attributes": { + "cn": "Domain Computers", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "description": [ + "All workstations and servers joined to the domain" + ], + "distinguishedName": "CN=Domain Computers,CN=Users,DC=t,DC=goauthentik,DC=io", + "groupType": -2147483646, + "instanceType": 4, + "isCriticalSystemObject": true, + "name": "Domain Computers", + "objectCategory": "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "group" + ], + "objectGUID": "{225bd7fc-1056-429d-8678-23872e95b951}", + "objectSid": "S-1-5-21-1955698215-2946288202-2760262721-515", + "sAMAccountName": "Domain Computers", + "sAMAccountType": 268435456, + "uSNChanged": 12332, + "uSNCreated": 12330, + "whenChanged": "2026-03-31 12:08:13+00:00", + "whenCreated": "2026-03-31 12:08:13+00:00" + }, + "dn": "CN=Domain Computers,CN=Users,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "Domain Computers" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "description": [ + "All workstations and servers joined to the domain" + ], + "distinguishedName": [ + "CN=Domain Computers,CN=Users,DC=t,DC=goauthentik,DC=io" + ], + "groupType": [ + "-2147483646" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "Domain Computers" + ], + "objectCategory": [ + "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "group" + ], + "objectGUID": [ + { + "encoded": "/NdbIlYQnUKGeCOHLpW5UQ==", + "encoding": "base64" + } + ], + "objectSid": [ + { + "encoded": "AQUAAAAAAAUVAAAAJ5aRdErKnK9BRIakAwIAAA==", + "encoding": "base64" + } + ], + "sAMAccountName": [ + "Domain Computers" + ], + "sAMAccountType": [ + "268435456" + ], + "uSNChanged": [ + "12332" + ], + "uSNCreated": [ + "12330" + ], + "whenChanged": [ + "20260331120813.0Z" + ], + "whenCreated": [ + "20260331120813.0Z" + ] + } + }, + { + "attributes": { + "adminCount": 1, + "cn": "Domain Controllers", + "dSCorePropagationData": [ + "2026-03-31 12:23:23+00:00", + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:04:16+00:00" + ], + "description": [ + "All domain controllers in the domain" + ], + "distinguishedName": "CN=Domain Controllers,CN=Users,DC=t,DC=goauthentik,DC=io", + "groupType": -2147483646, + "instanceType": 4, + "isCriticalSystemObject": true, + "memberOf": [ + "CN=Denied RODC Password Replication Group,CN=Users,DC=t,DC=goauthentik,DC=io" + ], + "name": "Domain Controllers", + "objectCategory": "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "group" + ], + "objectGUID": "{f03be17d-7f43-4570-9dac-4ff93f152152}", + "objectSid": "S-1-5-21-1955698215-2946288202-2760262721-516", + "sAMAccountName": "Domain Controllers", + "sAMAccountType": 268435456, + "uSNChanged": 12796, + "uSNCreated": 12333, + "whenChanged": "2026-03-31 12:23:23+00:00", + "whenCreated": "2026-03-31 12:08:13+00:00" + }, + "dn": "CN=Domain Controllers,CN=Users,DC=t,DC=goauthentik,DC=io", + "raw": { + "adminCount": [ + "1" + ], + "cn": [ + "Domain Controllers" + ], + "dSCorePropagationData": [ + "20260331122323.0Z", + "20260331120814.0Z", + "16010101000416.0Z" + ], + "description": [ + "All domain controllers in the domain" + ], + "distinguishedName": [ + "CN=Domain Controllers,CN=Users,DC=t,DC=goauthentik,DC=io" + ], + "groupType": [ + "-2147483646" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "memberOf": [ + "CN=Denied RODC Password Replication Group,CN=Users,DC=t,DC=goauthentik,DC=io" + ], + "name": [ + "Domain Controllers" + ], + "objectCategory": [ + "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "group" + ], + "objectGUID": [ + { + "encoded": "feE78EN/cEWdrE/5PxUhUg==", + "encoding": "base64" + } + ], + "objectSid": [ + { + "encoded": "AQUAAAAAAAUVAAAAJ5aRdErKnK9BRIakBAIAAA==", + "encoding": "base64" + } + ], + "sAMAccountName": [ + "Domain Controllers" + ], + "sAMAccountType": [ + "268435456" + ], + "uSNChanged": [ + "12796" + ], + "uSNCreated": [ + "12333" + ], + "whenChanged": [ + "20260331122323.0Z" + ], + "whenCreated": [ + "20260331120813.0Z" + ] + } + }, + { + "attributes": { + "adminCount": 1, + "cn": "Schema Admins", + "dSCorePropagationData": [ + "2026-03-31 12:23:23+00:00", + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:04:16+00:00" + ], + "description": [ + "Designated administrators of the schema" + ], + "distinguishedName": "CN=Schema Admins,CN=Users,DC=t,DC=goauthentik,DC=io", + "groupType": -2147483640, + "instanceType": 4, + "isCriticalSystemObject": true, + "member": [ + "CN=Administrator,CN=Users,DC=t,DC=goauthentik,DC=io" + ], + "memberOf": [ + "CN=Denied RODC Password Replication Group,CN=Users,DC=t,DC=goauthentik,DC=io" + ], + "name": "Schema Admins", + "objectCategory": "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "group" + ], + "objectGUID": "{c2755608-8b42-4aa3-b508-01a0caae7c82}", + "objectSid": "S-1-5-21-1955698215-2946288202-2760262721-518", + "sAMAccountName": "Schema Admins", + "sAMAccountType": 268435456, + "uSNChanged": 12775, + "uSNCreated": 12336, + "whenChanged": "2026-03-31 12:23:23+00:00", + "whenCreated": "2026-03-31 12:08:13+00:00" + }, + "dn": "CN=Schema Admins,CN=Users,DC=t,DC=goauthentik,DC=io", + "raw": { + "adminCount": [ + "1" + ], + "cn": [ + "Schema Admins" + ], + "dSCorePropagationData": [ + "20260331122323.0Z", + "20260331120814.0Z", + "16010101000416.0Z" + ], + "description": [ + "Designated administrators of the schema" + ], + "distinguishedName": [ + "CN=Schema Admins,CN=Users,DC=t,DC=goauthentik,DC=io" + ], + "groupType": [ + "-2147483640" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "member": [ + "CN=Administrator,CN=Users,DC=t,DC=goauthentik,DC=io" + ], + "memberOf": [ + "CN=Denied RODC Password Replication Group,CN=Users,DC=t,DC=goauthentik,DC=io" + ], + "name": [ + "Schema Admins" + ], + "objectCategory": [ + "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "group" + ], + "objectGUID": [ + { + "encoded": "CFZ1wkKLo0q1CAGgyq58gg==", + "encoding": "base64" + } + ], + "objectSid": [ + { + "encoded": "AQUAAAAAAAUVAAAAJ5aRdErKnK9BRIakBgIAAA==", + "encoding": "base64" + } + ], + "sAMAccountName": [ + "Schema Admins" + ], + "sAMAccountType": [ + "268435456" + ], + "uSNChanged": [ + "12775" + ], + "uSNCreated": [ + "12336" + ], + "whenChanged": [ + "20260331122323.0Z" + ], + "whenCreated": [ + "20260331120813.0Z" + ] + } + }, + { + "attributes": { + "adminCount": 1, + "cn": "Enterprise Admins", + "dSCorePropagationData": [ + "2026-03-31 12:23:23+00:00", + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:04:16+00:00" + ], + "description": [ + "Designated administrators of the enterprise" + ], + "distinguishedName": "CN=Enterprise Admins,CN=Users,DC=t,DC=goauthentik,DC=io", + "groupType": -2147483640, + "instanceType": 4, + "isCriticalSystemObject": true, + "member": [ + "CN=Administrator,CN=Users,DC=t,DC=goauthentik,DC=io" + ], + "memberOf": [ + "CN=Denied RODC Password Replication Group,CN=Users,DC=t,DC=goauthentik,DC=io", + "CN=Administrators,CN=Builtin,DC=t,DC=goauthentik,DC=io" + ], + "name": "Enterprise Admins", + "objectCategory": "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "group" + ], + "objectGUID": "{79411a32-2e20-47fe-b701-96a29ae797c3}", + "objectSid": "S-1-5-21-1955698215-2946288202-2760262721-519", + "sAMAccountName": "Enterprise Admins", + "sAMAccountType": 268435456, + "uSNChanged": 12776, + "uSNCreated": 12339, + "whenChanged": "2026-03-31 12:23:23+00:00", + "whenCreated": "2026-03-31 12:08:13+00:00" + }, + "dn": "CN=Enterprise Admins,CN=Users,DC=t,DC=goauthentik,DC=io", + "raw": { + "adminCount": [ + "1" + ], + "cn": [ + "Enterprise Admins" + ], + "dSCorePropagationData": [ + "20260331122323.0Z", + "20260331120814.0Z", + "16010101000416.0Z" + ], + "description": [ + "Designated administrators of the enterprise" + ], + "distinguishedName": [ + "CN=Enterprise Admins,CN=Users,DC=t,DC=goauthentik,DC=io" + ], + "groupType": [ + "-2147483640" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "member": [ + "CN=Administrator,CN=Users,DC=t,DC=goauthentik,DC=io" + ], + "memberOf": [ + "CN=Denied RODC Password Replication Group,CN=Users,DC=t,DC=goauthentik,DC=io", + "CN=Administrators,CN=Builtin,DC=t,DC=goauthentik,DC=io" + ], + "name": [ + "Enterprise Admins" + ], + "objectCategory": [ + "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "group" + ], + "objectGUID": [ + { + "encoded": "MhpBeSAu/ke3AZaimueXww==", + "encoding": "base64" + } + ], + "objectSid": [ + { + "encoded": "AQUAAAAAAAUVAAAAJ5aRdErKnK9BRIakBwIAAA==", + "encoding": "base64" + } + ], + "sAMAccountName": [ + "Enterprise Admins" + ], + "sAMAccountType": [ + "268435456" + ], + "uSNChanged": [ + "12776" + ], + "uSNCreated": [ + "12339" + ], + "whenChanged": [ + "20260331122323.0Z" + ], + "whenCreated": [ + "20260331120813.0Z" + ] + } + }, + { + "attributes": { + "cn": "Cert Publishers", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "description": [ + "Members of this group are permitted to publish certificates to the directory" + ], + "distinguishedName": "CN=Cert Publishers,CN=Users,DC=t,DC=goauthentik,DC=io", + "groupType": -2147483644, + "instanceType": 4, + "isCriticalSystemObject": true, + "memberOf": [ + "CN=Denied RODC Password Replication Group,CN=Users,DC=t,DC=goauthentik,DC=io" + ], + "name": "Cert Publishers", + "objectCategory": "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "group" + ], + "objectGUID": "{a7050df0-0860-4f21-842a-118ecb37bc33}", + "objectSid": "S-1-5-21-1955698215-2946288202-2760262721-517", + "sAMAccountName": "Cert Publishers", + "sAMAccountType": 536870912, + "uSNChanged": 12344, + "uSNCreated": 12342, + "whenChanged": "2026-03-31 12:08:13+00:00", + "whenCreated": "2026-03-31 12:08:13+00:00" + }, + "dn": "CN=Cert Publishers,CN=Users,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "Cert Publishers" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "description": [ + "Members of this group are permitted to publish certificates to the directory" + ], + "distinguishedName": [ + "CN=Cert Publishers,CN=Users,DC=t,DC=goauthentik,DC=io" + ], + "groupType": [ + "-2147483644" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "memberOf": [ + "CN=Denied RODC Password Replication Group,CN=Users,DC=t,DC=goauthentik,DC=io" + ], + "name": [ + "Cert Publishers" + ], + "objectCategory": [ + "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "group" + ], + "objectGUID": [ + { + "encoded": "8A0Fp2AIIU+EKhGOyze8Mw==", + "encoding": "base64" + } + ], + "objectSid": [ + { + "encoded": "AQUAAAAAAAUVAAAAJ5aRdErKnK9BRIakBQIAAA==", + "encoding": "base64" + } + ], + "sAMAccountName": [ + "Cert Publishers" + ], + "sAMAccountType": [ + "536870912" + ], + "uSNChanged": [ + "12344" + ], + "uSNCreated": [ + "12342" + ], + "whenChanged": [ + "20260331120813.0Z" + ], + "whenCreated": [ + "20260331120813.0Z" + ] + } + }, + { + "attributes": { + "adminCount": 1, + "cn": "Domain Admins", + "dSCorePropagationData": [ + "2026-03-31 12:23:23+00:00", + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:04:16+00:00" + ], + "description": [ + "Designated administrators of the domain" + ], + "distinguishedName": "CN=Domain Admins,CN=Users,DC=t,DC=goauthentik,DC=io", + "groupType": -2147483646, + "instanceType": 4, + "isCriticalSystemObject": true, + "member": [ + "CN=Administrator,CN=Users,DC=t,DC=goauthentik,DC=io" + ], + "memberOf": [ + "CN=Denied RODC Password Replication Group,CN=Users,DC=t,DC=goauthentik,DC=io", + "CN=Administrators,CN=Builtin,DC=t,DC=goauthentik,DC=io" + ], + "name": "Domain Admins", + "objectCategory": "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "group" + ], + "objectGUID": "{123fb2b8-2f75-4cf0-b3d1-c34941daabdb}", + "objectSid": "S-1-5-21-1955698215-2946288202-2760262721-512", + "sAMAccountName": "Domain Admins", + "sAMAccountType": 268435456, + "uSNChanged": 12782, + "uSNCreated": 12345, + "whenChanged": "2026-03-31 12:23:23+00:00", + "whenCreated": "2026-03-31 12:08:13+00:00" + }, + "dn": "CN=Domain Admins,CN=Users,DC=t,DC=goauthentik,DC=io", + "raw": { + "adminCount": [ + "1" + ], + "cn": [ + "Domain Admins" + ], + "dSCorePropagationData": [ + "20260331122323.0Z", + "20260331120814.0Z", + "16010101000416.0Z" + ], + "description": [ + "Designated administrators of the domain" + ], + "distinguishedName": [ + "CN=Domain Admins,CN=Users,DC=t,DC=goauthentik,DC=io" + ], + "groupType": [ + "-2147483646" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "member": [ + "CN=Administrator,CN=Users,DC=t,DC=goauthentik,DC=io" + ], + "memberOf": [ + "CN=Denied RODC Password Replication Group,CN=Users,DC=t,DC=goauthentik,DC=io", + "CN=Administrators,CN=Builtin,DC=t,DC=goauthentik,DC=io" + ], + "name": [ + "Domain Admins" + ], + "objectCategory": [ + "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "group" + ], + "objectGUID": [ + { + "encoded": "uLI/EnUv8Eyz0cNJQdqr2w==", + "encoding": "base64" + } + ], + "objectSid": [ + { + "encoded": "AQUAAAAAAAUVAAAAJ5aRdErKnK9BRIakAAIAAA==", + "encoding": "base64" + } + ], + "sAMAccountName": [ + "Domain Admins" + ], + "sAMAccountType": [ + "268435456" + ], + "uSNChanged": [ + "12782" + ], + "uSNCreated": [ + "12345" + ], + "whenChanged": [ + "20260331122323.0Z" + ], + "whenCreated": [ + "20260331120813.0Z" + ] + } + }, + { + "attributes": { + "cn": "Domain Users", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "description": [ + "All domain users" + ], + "distinguishedName": "CN=Domain Users,CN=Users,DC=t,DC=goauthentik,DC=io", + "groupType": -2147483646, + "instanceType": 4, + "isCriticalSystemObject": true, + "memberOf": [ + "CN=Users,CN=Builtin,DC=t,DC=goauthentik,DC=io" + ], + "name": "Domain Users", + "objectCategory": "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "group" + ], + "objectGUID": "{05f60d2d-d5e1-46fd-9818-0bebfc2e53de}", + "objectSid": "S-1-5-21-1955698215-2946288202-2760262721-513", + "sAMAccountName": "Domain Users", + "sAMAccountType": 268435456, + "uSNChanged": 12350, + "uSNCreated": 12348, + "whenChanged": "2026-03-31 12:08:13+00:00", + "whenCreated": "2026-03-31 12:08:13+00:00" + }, + "dn": "CN=Domain Users,CN=Users,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "Domain Users" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "description": [ + "All domain users" + ], + "distinguishedName": [ + "CN=Domain Users,CN=Users,DC=t,DC=goauthentik,DC=io" + ], + "groupType": [ + "-2147483646" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "memberOf": [ + "CN=Users,CN=Builtin,DC=t,DC=goauthentik,DC=io" + ], + "name": [ + "Domain Users" + ], + "objectCategory": [ + "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "group" + ], + "objectGUID": [ + { + "encoded": "LQ32BeHV/UaYGAvr/C5T3g==", + "encoding": "base64" + } + ], + "objectSid": [ + { + "encoded": "AQUAAAAAAAUVAAAAJ5aRdErKnK9BRIakAQIAAA==", + "encoding": "base64" + } + ], + "sAMAccountName": [ + "Domain Users" + ], + "sAMAccountType": [ + "268435456" + ], + "uSNChanged": [ + "12350" + ], + "uSNCreated": [ + "12348" + ], + "whenChanged": [ + "20260331120813.0Z" + ], + "whenCreated": [ + "20260331120813.0Z" + ] + } + }, + { + "attributes": { + "cn": "Domain Guests", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "description": [ + "All domain guests" + ], + "distinguishedName": "CN=Domain Guests,CN=Users,DC=t,DC=goauthentik,DC=io", + "groupType": -2147483646, + "instanceType": 4, + "isCriticalSystemObject": true, + "memberOf": [ + "CN=Guests,CN=Builtin,DC=t,DC=goauthentik,DC=io" + ], + "name": "Domain Guests", + "objectCategory": "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "group" + ], + "objectGUID": "{caf9a89b-12de-49af-a6e6-9c827bcf1c5e}", + "objectSid": "S-1-5-21-1955698215-2946288202-2760262721-514", + "sAMAccountName": "Domain Guests", + "sAMAccountType": 268435456, + "uSNChanged": 12353, + "uSNCreated": 12351, + "whenChanged": "2026-03-31 12:08:13+00:00", + "whenCreated": "2026-03-31 12:08:13+00:00" + }, + "dn": "CN=Domain Guests,CN=Users,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "Domain Guests" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "description": [ + "All domain guests" + ], + "distinguishedName": [ + "CN=Domain Guests,CN=Users,DC=t,DC=goauthentik,DC=io" + ], + "groupType": [ + "-2147483646" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "memberOf": [ + "CN=Guests,CN=Builtin,DC=t,DC=goauthentik,DC=io" + ], + "name": [ + "Domain Guests" + ], + "objectCategory": [ + "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "group" + ], + "objectGUID": [ + { + "encoded": "m6j5yt4Sr0mm5pyCe88cXg==", + "encoding": "base64" + } + ], + "objectSid": [ + { + "encoded": "AQUAAAAAAAUVAAAAJ5aRdErKnK9BRIakAgIAAA==", + "encoding": "base64" + } + ], + "sAMAccountName": [ + "Domain Guests" + ], + "sAMAccountType": [ + "268435456" + ], + "uSNChanged": [ + "12353" + ], + "uSNCreated": [ + "12351" + ], + "whenChanged": [ + "20260331120813.0Z" + ], + "whenCreated": [ + "20260331120813.0Z" + ] + } + }, + { + "attributes": { + "cn": "Group Policy Creator Owners", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "description": [ + "Members in this group can modify group policy for the domain" + ], + "distinguishedName": "CN=Group Policy Creator Owners,CN=Users,DC=t,DC=goauthentik,DC=io", + "groupType": -2147483646, + "instanceType": 4, + "isCriticalSystemObject": true, + "member": [ + "CN=Administrator,CN=Users,DC=t,DC=goauthentik,DC=io" + ], + "memberOf": [ + "CN=Denied RODC Password Replication Group,CN=Users,DC=t,DC=goauthentik,DC=io" + ], + "name": "Group Policy Creator Owners", + "objectCategory": "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "group" + ], + "objectGUID": "{562e360c-3d4a-48c6-b32c-6475e33a9c47}", + "objectSid": "S-1-5-21-1955698215-2946288202-2760262721-520", + "sAMAccountName": "Group Policy Creator Owners", + "sAMAccountType": 268435456, + "uSNChanged": 12391, + "uSNCreated": 12354, + "whenChanged": "2026-03-31 12:08:13+00:00", + "whenCreated": "2026-03-31 12:08:13+00:00" + }, + "dn": "CN=Group Policy Creator Owners,CN=Users,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "Group Policy Creator Owners" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "description": [ + "Members in this group can modify group policy for the domain" + ], + "distinguishedName": [ + "CN=Group Policy Creator Owners,CN=Users,DC=t,DC=goauthentik,DC=io" + ], + "groupType": [ + "-2147483646" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "member": [ + "CN=Administrator,CN=Users,DC=t,DC=goauthentik,DC=io" + ], + "memberOf": [ + "CN=Denied RODC Password Replication Group,CN=Users,DC=t,DC=goauthentik,DC=io" + ], + "name": [ + "Group Policy Creator Owners" + ], + "objectCategory": [ + "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "group" + ], + "objectGUID": [ + { + "encoded": "DDYuVko9xkizLGR14zqcRw==", + "encoding": "base64" + } + ], + "objectSid": [ + { + "encoded": "AQUAAAAAAAUVAAAAJ5aRdErKnK9BRIakCAIAAA==", + "encoding": "base64" + } + ], + "sAMAccountName": [ + "Group Policy Creator Owners" + ], + "sAMAccountType": [ + "268435456" + ], + "uSNChanged": [ + "12391" + ], + "uSNCreated": [ + "12354" + ], + "whenChanged": [ + "20260331120813.0Z" + ], + "whenCreated": [ + "20260331120813.0Z" + ] + } + }, + { + "attributes": { + "cn": "RAS and IAS Servers", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "description": [ + "Servers in this group can access remote access properties of users" + ], + "distinguishedName": "CN=RAS and IAS Servers,CN=Users,DC=t,DC=goauthentik,DC=io", + "groupType": -2147483644, + "instanceType": 4, + "isCriticalSystemObject": true, + "name": "RAS and IAS Servers", + "objectCategory": "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "group" + ], + "objectGUID": "{cb258c22-36d0-48ee-81ff-a500cdaf9977}", + "objectSid": "S-1-5-21-1955698215-2946288202-2760262721-553", + "sAMAccountName": "RAS and IAS Servers", + "sAMAccountType": 536870912, + "uSNChanged": 12359, + "uSNCreated": 12357, + "whenChanged": "2026-03-31 12:08:13+00:00", + "whenCreated": "2026-03-31 12:08:13+00:00" + }, + "dn": "CN=RAS and IAS Servers,CN=Users,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "RAS and IAS Servers" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "description": [ + "Servers in this group can access remote access properties of users" + ], + "distinguishedName": [ + "CN=RAS and IAS Servers,CN=Users,DC=t,DC=goauthentik,DC=io" + ], + "groupType": [ + "-2147483644" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "RAS and IAS Servers" + ], + "objectCategory": [ + "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "group" + ], + "objectGUID": [ + { + "encoded": "Iowly9A27kiB/6UAza+Zdw==", + "encoding": "base64" + } + ], + "objectSid": [ + { + "encoded": "AQUAAAAAAAUVAAAAJ5aRdErKnK9BRIakKQIAAA==", + "encoding": "base64" + } + ], + "sAMAccountName": [ + "RAS and IAS Servers" + ], + "sAMAccountType": [ + "536870912" + ], + "uSNChanged": [ + "12359" + ], + "uSNCreated": [ + "12357" + ], + "whenChanged": [ + "20260331120813.0Z" + ], + "whenCreated": [ + "20260331120813.0Z" + ] + } + }, + { + "attributes": { + "adminCount": 1, + "cn": "Server Operators", + "dSCorePropagationData": [ + "2026-03-31 12:23:23+00:00", + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:04:16+00:00" + ], + "description": [ + "Members can administer domain servers" + ], + "distinguishedName": "CN=Server Operators,CN=Builtin,DC=t,DC=goauthentik,DC=io", + "groupType": -2147483643, + "instanceType": 4, + "isCriticalSystemObject": true, + "name": "Server Operators", + "objectCategory": "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "group" + ], + "objectGUID": "{67ae01b7-ff9f-402d-a2d8-4bc04841d54b}", + "objectSid": "S-1-5-32-549", + "sAMAccountName": "Server Operators", + "sAMAccountType": 536870912, + "systemFlags": -1946157056, + "uSNChanged": 12787, + "uSNCreated": 12360, + "whenChanged": "2026-03-31 12:23:23+00:00", + "whenCreated": "2026-03-31 12:08:13+00:00" + }, + "dn": "CN=Server Operators,CN=Builtin,DC=t,DC=goauthentik,DC=io", + "raw": { + "adminCount": [ + "1" + ], + "cn": [ + "Server Operators" + ], + "dSCorePropagationData": [ + "20260331122323.0Z", + "20260331120814.0Z", + "16010101000416.0Z" + ], + "description": [ + "Members can administer domain servers" + ], + "distinguishedName": [ + "CN=Server Operators,CN=Builtin,DC=t,DC=goauthentik,DC=io" + ], + "groupType": [ + "-2147483643" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "Server Operators" + ], + "objectCategory": [ + "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "group" + ], + "objectGUID": [ + { + "encoded": "twGuZ5//LUCi2EvASEHVSw==", + "encoding": "base64" + } + ], + "objectSid": [ + "\u0001\u0002\u0000\u0000\u0000\u0000\u0000\u0005 \u0000\u0000\u0000%\u0002\u0000\u0000" + ], + "sAMAccountName": [ + "Server Operators" + ], + "sAMAccountType": [ + "536870912" + ], + "systemFlags": [ + "-1946157056" + ], + "uSNChanged": [ + "12787" + ], + "uSNCreated": [ + "12360" + ], + "whenChanged": [ + "20260331122323.0Z" + ], + "whenCreated": [ + "20260331120813.0Z" + ] + } + }, + { + "attributes": { + "adminCount": 1, + "cn": "Account Operators", + "dSCorePropagationData": [ + "2026-03-31 12:23:23+00:00", + "2026-03-31 12:08:13+00:00", + "1601-01-01 00:04:16+00:00" + ], + "description": [ + "Members can administer domain user and group accounts" + ], + "distinguishedName": "CN=Account Operators,CN=Builtin,DC=t,DC=goauthentik,DC=io", + "groupType": -2147483643, + "instanceType": 4, + "isCriticalSystemObject": true, + "name": "Account Operators", + "objectCategory": "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "group" + ], + "objectGUID": "{0a7f2b7c-524d-4c86-9dd8-f836e881ded9}", + "objectSid": "S-1-5-32-548", + "sAMAccountName": "Account Operators", + "sAMAccountType": 536870912, + "systemFlags": -1946157056, + "uSNChanged": 12786, + "uSNCreated": 12363, + "whenChanged": "2026-03-31 12:23:23+00:00", + "whenCreated": "2026-03-31 12:08:13+00:00" + }, + "dn": "CN=Account Operators,CN=Builtin,DC=t,DC=goauthentik,DC=io", + "raw": { + "adminCount": [ + "1" + ], + "cn": [ + "Account Operators" + ], + "dSCorePropagationData": [ + "20260331122323.0Z", + "20260331120813.0Z", + "16010101000416.0Z" + ], + "description": [ + "Members can administer domain user and group accounts" + ], + "distinguishedName": [ + "CN=Account Operators,CN=Builtin,DC=t,DC=goauthentik,DC=io" + ], + "groupType": [ + "-2147483643" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "Account Operators" + ], + "objectCategory": [ + "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "group" + ], + "objectGUID": [ + { + "encoded": "fCt/Ck1Shkyd2Pg26IHe2Q==", + "encoding": "base64" + } + ], + "objectSid": [ + "\u0001\u0002\u0000\u0000\u0000\u0000\u0000\u0005 \u0000\u0000\u0000$\u0002\u0000\u0000" + ], + "sAMAccountName": [ + "Account Operators" + ], + "sAMAccountType": [ + "536870912" + ], + "systemFlags": [ + "-1946157056" + ], + "uSNChanged": [ + "12786" + ], + "uSNCreated": [ + "12363" + ], + "whenChanged": [ + "20260331122323.0Z" + ], + "whenCreated": [ + "20260331120813.0Z" + ] + } + }, + { + "attributes": { + "cn": "Pre-Windows 2000 Compatible Access", + "dSCorePropagationData": [ + "2026-03-31 12:08:13+00:00", + "1601-01-01 00:00:01+00:00" + ], + "description": [ + "A backward compatibility group which allows read access on all users and groups in the domain" + ], + "distinguishedName": "CN=Pre-Windows 2000 Compatible Access,CN=Builtin,DC=t,DC=goauthentik,DC=io", + "groupType": -2147483643, + "instanceType": 4, + "isCriticalSystemObject": true, + "member": [ + "CN=S-1-5-11,CN=ForeignSecurityPrincipals,DC=t,DC=goauthentik,DC=io" + ], + "name": "Pre-Windows 2000 Compatible Access", + "objectCategory": "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "group" + ], + "objectGUID": "{21a78753-efb4-4a8b-b03f-80d5b12be875}", + "objectSid": "S-1-5-32-554", + "sAMAccountName": "Pre-Windows 2000 Compatible Access", + "sAMAccountType": 536870912, + "systemFlags": -1946157056, + "uSNChanged": 12393, + "uSNCreated": 12366, + "whenChanged": "2026-03-31 12:08:13+00:00", + "whenCreated": "2026-03-31 12:08:13+00:00" + }, + "dn": "CN=Pre-Windows 2000 Compatible Access,CN=Builtin,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "Pre-Windows 2000 Compatible Access" + ], + "dSCorePropagationData": [ + "20260331120813.0Z", + "16010101000001.0Z" + ], + "description": [ + "A backward compatibility group which allows read access on all users and groups in the domain" + ], + "distinguishedName": [ + "CN=Pre-Windows 2000 Compatible Access,CN=Builtin,DC=t,DC=goauthentik,DC=io" + ], + "groupType": [ + "-2147483643" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "member": [ + "CN=S-1-5-11,CN=ForeignSecurityPrincipals,DC=t,DC=goauthentik,DC=io" + ], + "name": [ + "Pre-Windows 2000 Compatible Access" + ], + "objectCategory": [ + "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "group" + ], + "objectGUID": [ + { + "encoded": "U4enIbTvi0qwP4DVsSvodQ==", + "encoding": "base64" + } + ], + "objectSid": [ + "\u0001\u0002\u0000\u0000\u0000\u0000\u0000\u0005 \u0000\u0000\u0000*\u0002\u0000\u0000" + ], + "sAMAccountName": [ + "Pre-Windows 2000 Compatible Access" + ], + "sAMAccountType": [ + "536870912" + ], + "systemFlags": [ + "-1946157056" + ], + "uSNChanged": [ + "12393" + ], + "uSNCreated": [ + "12366" + ], + "whenChanged": [ + "20260331120813.0Z" + ], + "whenCreated": [ + "20260331120813.0Z" + ] + } + }, + { + "attributes": { + "cn": "Incoming Forest Trust Builders", + "dSCorePropagationData": [ + "2026-03-31 12:08:13+00:00", + "1601-01-01 00:00:01+00:00" + ], + "description": [ + "Members of this group can create incoming, one-way trusts to this forest" + ], + "distinguishedName": "CN=Incoming Forest Trust Builders,CN=Builtin,DC=t,DC=goauthentik,DC=io", + "groupType": -2147483643, + "instanceType": 4, + "isCriticalSystemObject": true, + "name": "Incoming Forest Trust Builders", + "objectCategory": "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "group" + ], + "objectGUID": "{6e4045cf-c619-4bb0-ab89-3c83265f3ef6}", + "objectSid": "S-1-5-32-557", + "sAMAccountName": "Incoming Forest Trust Builders", + "sAMAccountType": 536870912, + "systemFlags": -1946157056, + "uSNChanged": 12371, + "uSNCreated": 12369, + "whenChanged": "2026-03-31 12:08:13+00:00", + "whenCreated": "2026-03-31 12:08:13+00:00" + }, + "dn": "CN=Incoming Forest Trust Builders,CN=Builtin,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "Incoming Forest Trust Builders" + ], + "dSCorePropagationData": [ + "20260331120813.0Z", + "16010101000001.0Z" + ], + "description": [ + "Members of this group can create incoming, one-way trusts to this forest" + ], + "distinguishedName": [ + "CN=Incoming Forest Trust Builders,CN=Builtin,DC=t,DC=goauthentik,DC=io" + ], + "groupType": [ + "-2147483643" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "Incoming Forest Trust Builders" + ], + "objectCategory": [ + "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "group" + ], + "objectGUID": [ + { + "encoded": "z0VAbhnGsEuriTyDJl8+9g==", + "encoding": "base64" + } + ], + "objectSid": [ + "\u0001\u0002\u0000\u0000\u0000\u0000\u0000\u0005 \u0000\u0000\u0000-\u0002\u0000\u0000" + ], + "sAMAccountName": [ + "Incoming Forest Trust Builders" + ], + "sAMAccountType": [ + "536870912" + ], + "systemFlags": [ + "-1946157056" + ], + "uSNChanged": [ + "12371" + ], + "uSNCreated": [ + "12369" + ], + "whenChanged": [ + "20260331120813.0Z" + ], + "whenCreated": [ + "20260331120813.0Z" + ] + } + }, + { + "attributes": { + "cn": "Windows Authorization Access Group", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "description": [ + "Members of this group have access to the computed tokenGroupsGlobalAndUniversal attribute on User objects" + ], + "distinguishedName": "CN=Windows Authorization Access Group,CN=Builtin,DC=t,DC=goauthentik,DC=io", + "groupType": -2147483643, + "instanceType": 4, + "isCriticalSystemObject": true, + "member": [ + "CN=S-1-5-9,CN=ForeignSecurityPrincipals,DC=t,DC=goauthentik,DC=io" + ], + "name": "Windows Authorization Access Group", + "objectCategory": "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "group" + ], + "objectGUID": "{1d17d8ca-d17c-4e68-b76a-45131e8d933f}", + "objectSid": "S-1-5-32-560", + "sAMAccountName": "Windows Authorization Access Group", + "sAMAccountType": 536870912, + "systemFlags": -1946157056, + "uSNChanged": 12396, + "uSNCreated": 12372, + "whenChanged": "2026-03-31 12:08:13+00:00", + "whenCreated": "2026-03-31 12:08:13+00:00" + }, + "dn": "CN=Windows Authorization Access Group,CN=Builtin,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "Windows Authorization Access Group" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "description": [ + "Members of this group have access to the computed tokenGroupsGlobalAndUniversal attribute on User objects" + ], + "distinguishedName": [ + "CN=Windows Authorization Access Group,CN=Builtin,DC=t,DC=goauthentik,DC=io" + ], + "groupType": [ + "-2147483643" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "member": [ + "CN=S-1-5-9,CN=ForeignSecurityPrincipals,DC=t,DC=goauthentik,DC=io" + ], + "name": [ + "Windows Authorization Access Group" + ], + "objectCategory": [ + "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "group" + ], + "objectGUID": [ + { + "encoded": "ytgXHXzRaE63akUTHo2TPw==", + "encoding": "base64" + } + ], + "objectSid": [ + "\u0001\u0002\u0000\u0000\u0000\u0000\u0000\u0005 \u0000\u0000\u00000\u0002\u0000\u0000" + ], + "sAMAccountName": [ + "Windows Authorization Access Group" + ], + "sAMAccountType": [ + "536870912" + ], + "systemFlags": [ + "-1946157056" + ], + "uSNChanged": [ + "12396" + ], + "uSNCreated": [ + "12372" + ], + "whenChanged": [ + "20260331120813.0Z" + ], + "whenCreated": [ + "20260331120813.0Z" + ] + } + }, + { + "attributes": { + "cn": "Terminal Server License Servers", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "description": [ + "Members of this group can update user accounts in Active Directory with information about license issuance, for the purpose of tracking and reporting TS Per User CAL usage" + ], + "distinguishedName": "CN=Terminal Server License Servers,CN=Builtin,DC=t,DC=goauthentik,DC=io", + "groupType": -2147483643, + "instanceType": 4, + "isCriticalSystemObject": true, + "name": "Terminal Server License Servers", + "objectCategory": "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "group" + ], + "objectGUID": "{d814e18c-cb6a-4ed4-839a-299c57c9f340}", + "objectSid": "S-1-5-32-561", + "sAMAccountName": "Terminal Server License Servers", + "sAMAccountType": 536870912, + "systemFlags": -1946157056, + "uSNChanged": 12377, + "uSNCreated": 12375, + "whenChanged": "2026-03-31 12:08:13+00:00", + "whenCreated": "2026-03-31 12:08:13+00:00" + }, + "dn": "CN=Terminal Server License Servers,CN=Builtin,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "Terminal Server License Servers" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "description": [ + "Members of this group can update user accounts in Active Directory with information about license issuance, for the purpose of tracking and reporting TS Per User CAL usage" + ], + "distinguishedName": [ + "CN=Terminal Server License Servers,CN=Builtin,DC=t,DC=goauthentik,DC=io" + ], + "groupType": [ + "-2147483643" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "Terminal Server License Servers" + ], + "objectCategory": [ + "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "group" + ], + "objectGUID": [ + { + "encoded": "jOEU2GrL1E6DmimcV8nzQA==", + "encoding": "base64" + } + ], + "objectSid": [ + "\u0001\u0002\u0000\u0000\u0000\u0000\u0000\u0005 \u0000\u0000\u00001\u0002\u0000\u0000" + ], + "sAMAccountName": [ + "Terminal Server License Servers" + ], + "sAMAccountType": [ + "536870912" + ], + "systemFlags": [ + "-1946157056" + ], + "uSNChanged": [ + "12377" + ], + "uSNCreated": [ + "12375" + ], + "whenChanged": [ + "20260331120813.0Z" + ], + "whenCreated": [ + "20260331120813.0Z" + ] + } + }, + { + "attributes": { + "cn": "S-1-5-9", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=S-1-5-9,CN=ForeignSecurityPrincipals,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "memberOf": [ + "CN=Windows Authorization Access Group,CN=Builtin,DC=t,DC=goauthentik,DC=io" + ], + "name": "S-1-5-9", + "objectCategory": "CN=Foreign-Security-Principal,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "foreignSecurityPrincipal" + ], + "objectGUID": "{6e3436e6-60b4-4770-9fb7-a7cf4e709483}", + "objectSid": "S-1-5-9", + "showInAdvancedViewOnly": true, + "uSNChanged": 12394, + "uSNCreated": 12394, + "whenChanged": "2026-03-31 12:08:13+00:00", + "whenCreated": "2026-03-31 12:08:13+00:00" + }, + "dn": "CN=S-1-5-9,CN=ForeignSecurityPrincipals,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "S-1-5-9" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=S-1-5-9,CN=ForeignSecurityPrincipals,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "memberOf": [ + "CN=Windows Authorization Access Group,CN=Builtin,DC=t,DC=goauthentik,DC=io" + ], + "name": [ + "S-1-5-9" + ], + "objectCategory": [ + "CN=Foreign-Security-Principal,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "foreignSecurityPrincipal" + ], + "objectGUID": [ + { + "encoded": "5jY0brRgcEeft6fPTnCUgw==", + "encoding": "base64" + } + ], + "objectSid": [ + "\u0001\u0001\u0000\u0000\u0000\u0000\u0000\u0005\t\u0000\u0000\u0000" + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "12394" + ], + "uSNCreated": [ + "12394" + ], + "whenChanged": [ + "20260331120813.0Z" + ], + "whenCreated": [ + "20260331120813.0Z" + ] + } + }, + { + "attributes": { + "cn": "6E157EDF-4E72-4052-A82A-EC3F91021A22", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "distinguishedName": "CN=6E157EDF-4E72-4052-A82A-EC3F91021A22,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "6E157EDF-4E72-4052-A82A-EC3F91021A22", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{d97baae3-50ed-4662-8e00-d05d3542ebcb}", + "showInAdvancedViewOnly": true, + "uSNChanged": 12397, + "uSNCreated": 12397, + "whenChanged": "2026-03-31 12:08:13+00:00", + "whenCreated": "2026-03-31 12:08:13+00:00" + }, + "dn": "CN=6E157EDF-4E72-4052-A82A-EC3F91021A22,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "6E157EDF-4E72-4052-A82A-EC3F91021A22" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "distinguishedName": [ + "CN=6E157EDF-4E72-4052-A82A-EC3F91021A22,CN=Operations,CN=DomainUpdates,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "6E157EDF-4E72-4052-A82A-EC3F91021A22" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "46p72e1QYkaOANBdNULryw==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "12397" + ], + "uSNCreated": [ + "12397" + ], + "whenChanged": [ + "20260331120813.0Z" + ], + "whenCreated": [ + "20260331120813.0Z" + ] + } + }, + { + "attributes": { + "cn": "Allowed RODC Password Replication Group", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "description": [ + "Members in this group can have their passwords replicated to all read-only domain controllers in the domain" + ], + "distinguishedName": "CN=Allowed RODC Password Replication Group,CN=Users,DC=t,DC=goauthentik,DC=io", + "groupType": -2147483644, + "instanceType": 4, + "isCriticalSystemObject": true, + "name": "Allowed RODC Password Replication Group", + "objectCategory": "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "group" + ], + "objectGUID": "{1e12c0c0-0402-4c8b-ad0c-1ad82fa5fb66}", + "objectSid": "S-1-5-21-1955698215-2946288202-2760262721-571", + "sAMAccountName": "Allowed RODC Password Replication Group", + "sAMAccountType": 536870912, + "uSNChanged": 12404, + "uSNCreated": 12402, + "whenChanged": "2026-03-31 12:08:13+00:00", + "whenCreated": "2026-03-31 12:08:13+00:00" + }, + "dn": "CN=Allowed RODC Password Replication Group,CN=Users,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "Allowed RODC Password Replication Group" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "description": [ + "Members in this group can have their passwords replicated to all read-only domain controllers in the domain" + ], + "distinguishedName": [ + "CN=Allowed RODC Password Replication Group,CN=Users,DC=t,DC=goauthentik,DC=io" + ], + "groupType": [ + "-2147483644" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "Allowed RODC Password Replication Group" + ], + "objectCategory": [ + "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "group" + ], + "objectGUID": [ + { + "encoded": "wMASHgIEi0ytDBrYL6X7Zg==", + "encoding": "base64" + } + ], + "objectSid": [ + { + "encoded": "AQUAAAAAAAUVAAAAJ5aRdErKnK9BRIakOwIAAA==", + "encoding": "base64" + } + ], + "sAMAccountName": [ + "Allowed RODC Password Replication Group" + ], + "sAMAccountType": [ + "536870912" + ], + "uSNChanged": [ + "12404" + ], + "uSNCreated": [ + "12402" + ], + "whenChanged": [ + "20260331120813.0Z" + ], + "whenCreated": [ + "20260331120813.0Z" + ] + } + }, + { + "attributes": { + "cn": "Denied RODC Password Replication Group", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "description": [ + "Members in this group cannot have their passwords replicated to any read-only domain controllers in the domain" + ], + "distinguishedName": "CN=Denied RODC Password Replication Group,CN=Users,DC=t,DC=goauthentik,DC=io", + "groupType": -2147483644, + "instanceType": 4, + "isCriticalSystemObject": true, + "member": [ + "CN=Read-only Domain Controllers,CN=Users,DC=t,DC=goauthentik,DC=io", + "CN=Group Policy Creator Owners,CN=Users,DC=t,DC=goauthentik,DC=io", + "CN=Domain Admins,CN=Users,DC=t,DC=goauthentik,DC=io", + "CN=Cert Publishers,CN=Users,DC=t,DC=goauthentik,DC=io", + "CN=Enterprise Admins,CN=Users,DC=t,DC=goauthentik,DC=io", + "CN=Schema Admins,CN=Users,DC=t,DC=goauthentik,DC=io", + "CN=Domain Controllers,CN=Users,DC=t,DC=goauthentik,DC=io", + "CN=krbtgt,CN=Users,DC=t,DC=goauthentik,DC=io" + ], + "name": "Denied RODC Password Replication Group", + "objectCategory": "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "group" + ], + "objectGUID": "{d7c92bf9-9367-4b35-aa43-63504a7b51d3}", + "objectSid": "S-1-5-21-1955698215-2946288202-2760262721-572", + "sAMAccountName": "Denied RODC Password Replication Group", + "sAMAccountType": 536870912, + "uSNChanged": 12433, + "uSNCreated": 12405, + "whenChanged": "2026-03-31 12:08:13+00:00", + "whenCreated": "2026-03-31 12:08:13+00:00" + }, + "dn": "CN=Denied RODC Password Replication Group,CN=Users,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "Denied RODC Password Replication Group" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "description": [ + "Members in this group cannot have their passwords replicated to any read-only domain controllers in the domain" + ], + "distinguishedName": [ + "CN=Denied RODC Password Replication Group,CN=Users,DC=t,DC=goauthentik,DC=io" + ], + "groupType": [ + "-2147483644" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "member": [ + "CN=Read-only Domain Controllers,CN=Users,DC=t,DC=goauthentik,DC=io", + "CN=Group Policy Creator Owners,CN=Users,DC=t,DC=goauthentik,DC=io", + "CN=Domain Admins,CN=Users,DC=t,DC=goauthentik,DC=io", + "CN=Cert Publishers,CN=Users,DC=t,DC=goauthentik,DC=io", + "CN=Enterprise Admins,CN=Users,DC=t,DC=goauthentik,DC=io", + "CN=Schema Admins,CN=Users,DC=t,DC=goauthentik,DC=io", + "CN=Domain Controllers,CN=Users,DC=t,DC=goauthentik,DC=io", + "CN=krbtgt,CN=Users,DC=t,DC=goauthentik,DC=io" + ], + "name": [ + "Denied RODC Password Replication Group" + ], + "objectCategory": [ + "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "group" + ], + "objectGUID": [ + { + "encoded": "+SvJ12eTNUuqQ2NQSntR0w==", + "encoding": "base64" + } + ], + "objectSid": [ + { + "encoded": "AQUAAAAAAAUVAAAAJ5aRdErKnK9BRIakPAIAAA==", + "encoding": "base64" + } + ], + "sAMAccountName": [ + "Denied RODC Password Replication Group" + ], + "sAMAccountType": [ + "536870912" + ], + "uSNChanged": [ + "12433" + ], + "uSNCreated": [ + "12405" + ], + "whenChanged": [ + "20260331120813.0Z" + ], + "whenCreated": [ + "20260331120813.0Z" + ] + } + }, + { + "attributes": { + "adminCount": 1, + "cn": "Read-only Domain Controllers", + "dSCorePropagationData": [ + "2026-03-31 12:23:23+00:00", + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:04:16+00:00" + ], + "description": [ + "Members of this group are Read-Only Domain Controllers in the domain" + ], + "distinguishedName": "CN=Read-only Domain Controllers,CN=Users,DC=t,DC=goauthentik,DC=io", + "groupType": -2147483646, + "instanceType": 4, + "isCriticalSystemObject": true, + "memberOf": [ + "CN=Denied RODC Password Replication Group,CN=Users,DC=t,DC=goauthentik,DC=io" + ], + "name": "Read-only Domain Controllers", + "objectCategory": "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "group" + ], + "objectGUID": "{45257a89-b84b-4938-b2f5-2b0a6d33a012}", + "objectSid": "S-1-5-21-1955698215-2946288202-2760262721-521", + "sAMAccountName": "Read-only Domain Controllers", + "sAMAccountType": 268435456, + "uSNChanged": 12797, + "uSNCreated": 12419, + "whenChanged": "2026-03-31 12:23:23+00:00", + "whenCreated": "2026-03-31 12:08:13+00:00" + }, + "dn": "CN=Read-only Domain Controllers,CN=Users,DC=t,DC=goauthentik,DC=io", + "raw": { + "adminCount": [ + "1" + ], + "cn": [ + "Read-only Domain Controllers" + ], + "dSCorePropagationData": [ + "20260331122323.0Z", + "20260331120814.0Z", + "16010101000416.0Z" + ], + "description": [ + "Members of this group are Read-Only Domain Controllers in the domain" + ], + "distinguishedName": [ + "CN=Read-only Domain Controllers,CN=Users,DC=t,DC=goauthentik,DC=io" + ], + "groupType": [ + "-2147483646" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "memberOf": [ + "CN=Denied RODC Password Replication Group,CN=Users,DC=t,DC=goauthentik,DC=io" + ], + "name": [ + "Read-only Domain Controllers" + ], + "objectCategory": [ + "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "group" + ], + "objectGUID": [ + { + "encoded": "iXolRUu4OEmy9SsKbTOgEg==", + "encoding": "base64" + } + ], + "objectSid": [ + { + "encoded": "AQUAAAAAAAUVAAAAJ5aRdErKnK9BRIakCQIAAA==", + "encoding": "base64" + } + ], + "sAMAccountName": [ + "Read-only Domain Controllers" + ], + "sAMAccountType": [ + "268435456" + ], + "uSNChanged": [ + "12797" + ], + "uSNCreated": [ + "12419" + ], + "whenChanged": [ + "20260331122323.0Z" + ], + "whenCreated": [ + "20260331120813.0Z" + ] + } + }, + { + "attributes": { + "cn": "Enterprise Read-only Domain Controllers", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "description": [ + "Members of this group are Read-Only Domain Controllers in the enterprise" + ], + "distinguishedName": "CN=Enterprise Read-only Domain Controllers,CN=Users,DC=t,DC=goauthentik,DC=io", + "groupType": -2147483640, + "instanceType": 4, + "isCriticalSystemObject": true, + "name": "Enterprise Read-only Domain Controllers", + "objectCategory": "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "group" + ], + "objectGUID": "{229ca5a6-3785-44bb-8e43-ecca54d8394a}", + "objectSid": "S-1-5-21-1955698215-2946288202-2760262721-498", + "sAMAccountName": "Enterprise Read-only Domain Controllers", + "sAMAccountType": 268435456, + "uSNChanged": 12431, + "uSNCreated": 12429, + "whenChanged": "2026-03-31 12:08:13+00:00", + "whenCreated": "2026-03-31 12:08:13+00:00" + }, + "dn": "CN=Enterprise Read-only Domain Controllers,CN=Users,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "Enterprise Read-only Domain Controllers" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "description": [ + "Members of this group are Read-Only Domain Controllers in the enterprise" + ], + "distinguishedName": [ + "CN=Enterprise Read-only Domain Controllers,CN=Users,DC=t,DC=goauthentik,DC=io" + ], + "groupType": [ + "-2147483640" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "Enterprise Read-only Domain Controllers" + ], + "objectCategory": [ + "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "group" + ], + "objectGUID": [ + { + "encoded": "pqWcIoU3u0SOQ+zKVNg5Sg==", + "encoding": "base64" + } + ], + "objectSid": [ + { + "encoded": "AQUAAAAAAAUVAAAAJ5aRdErKnK9BRIak8gEAAA==", + "encoding": "base64" + } + ], + "sAMAccountName": [ + "Enterprise Read-only Domain Controllers" + ], + "sAMAccountType": [ + "268435456" + ], + "uSNChanged": [ + "12431" + ], + "uSNCreated": [ + "12429" + ], + "whenChanged": [ + "20260331120813.0Z" + ], + "whenCreated": [ + "20260331120813.0Z" + ] + } + }, + { + "attributes": { + "cn": "Cloneable Domain Controllers", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "description": [ + "Members of this group that are domain controllers may be cloned." + ], + "distinguishedName": "CN=Cloneable Domain Controllers,CN=Users,DC=t,DC=goauthentik,DC=io", + "groupType": -2147483646, + "instanceType": 4, + "isCriticalSystemObject": true, + "name": "Cloneable Domain Controllers", + "objectCategory": "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "group" + ], + "objectGUID": "{1042120c-369e-4fab-bcb9-bf007ac4c37f}", + "objectSid": "S-1-5-21-1955698215-2946288202-2760262721-522", + "sAMAccountName": "Cloneable Domain Controllers", + "sAMAccountType": 268435456, + "uSNChanged": 12442, + "uSNCreated": 12440, + "whenChanged": "2026-03-31 12:08:13+00:00", + "whenCreated": "2026-03-31 12:08:13+00:00" + }, + "dn": "CN=Cloneable Domain Controllers,CN=Users,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "Cloneable Domain Controllers" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "description": [ + "Members of this group that are domain controllers may be cloned." + ], + "distinguishedName": [ + "CN=Cloneable Domain Controllers,CN=Users,DC=t,DC=goauthentik,DC=io" + ], + "groupType": [ + "-2147483646" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "Cloneable Domain Controllers" + ], + "objectCategory": [ + "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "group" + ], + "objectGUID": [ + { + "encoded": "DBJCEJ42q0+8ub8AesTDfw==", + "encoding": "base64" + } + ], + "objectSid": [ + { + "encoded": "AQUAAAAAAAUVAAAAJ5aRdErKnK9BRIakCgIAAA==", + "encoding": "base64" + } + ], + "sAMAccountName": [ + "Cloneable Domain Controllers" + ], + "sAMAccountType": [ + "268435456" + ], + "uSNChanged": [ + "12442" + ], + "uSNCreated": [ + "12440" + ], + "whenChanged": [ + "20260331120813.0Z" + ], + "whenCreated": [ + "20260331120813.0Z" + ] + } + }, + { + "attributes": { + "cn": "Protected Users", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "description": [ + "Members of this group are afforded additional protections against authentication security threats. See http://go.microsoft.com/fwlink/?LinkId=298939 for more information." + ], + "distinguishedName": "CN=Protected Users,CN=Users,DC=t,DC=goauthentik,DC=io", + "groupType": -2147483646, + "instanceType": 4, + "isCriticalSystemObject": true, + "name": "Protected Users", + "objectCategory": "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "group" + ], + "objectGUID": "{70dcf625-c73f-4ba0-85d9-23110f2b94f6}", + "objectSid": "S-1-5-21-1955698215-2946288202-2760262721-525", + "sAMAccountName": "Protected Users", + "sAMAccountType": 268435456, + "uSNChanged": 12447, + "uSNCreated": 12445, + "whenChanged": "2026-03-31 12:08:13+00:00", + "whenCreated": "2026-03-31 12:08:13+00:00" + }, + "dn": "CN=Protected Users,CN=Users,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "Protected Users" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "description": [ + "Members of this group are afforded additional protections against authentication security threats. See http://go.microsoft.com/fwlink/?LinkId=298939 for more information." + ], + "distinguishedName": [ + "CN=Protected Users,CN=Users,DC=t,DC=goauthentik,DC=io" + ], + "groupType": [ + "-2147483646" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "Protected Users" + ], + "objectCategory": [ + "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "group" + ], + "objectGUID": [ + { + "encoded": "JfbccD/HoEuF2SMRDyuU9g==", + "encoding": "base64" + } + ], + "objectSid": [ + { + "encoded": "AQUAAAAAAAUVAAAAJ5aRdErKnK9BRIakDQIAAA==", + "encoding": "base64" + } + ], + "sAMAccountName": [ + "Protected Users" + ], + "sAMAccountType": [ + "268435456" + ], + "uSNChanged": [ + "12447" + ], + "uSNCreated": [ + "12445" + ], + "whenChanged": [ + "20260331120813.0Z" + ], + "whenCreated": [ + "20260331120813.0Z" + ] + } + }, + { + "attributes": { + "adminCount": 1, + "cn": "Key Admins", + "dSCorePropagationData": [ + "2026-03-31 12:23:23+00:00", + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:04:16+00:00" + ], + "description": [ + "Members of this group can perform administrative actions on key objects within the domain." + ], + "distinguishedName": "CN=Key Admins,CN=Users,DC=t,DC=goauthentik,DC=io", + "groupType": -2147483646, + "instanceType": 4, + "isCriticalSystemObject": true, + "name": "Key Admins", + "objectCategory": "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "group" + ], + "objectGUID": "{d5316775-1d9f-4b82-9d83-323d1998b447}", + "objectSid": "S-1-5-21-1955698215-2946288202-2760262721-526", + "sAMAccountName": "Key Admins", + "sAMAccountType": 268435456, + "uSNChanged": 12777, + "uSNCreated": 12450, + "whenChanged": "2026-03-31 12:23:23+00:00", + "whenCreated": "2026-03-31 12:08:13+00:00" + }, + "dn": "CN=Key Admins,CN=Users,DC=t,DC=goauthentik,DC=io", + "raw": { + "adminCount": [ + "1" + ], + "cn": [ + "Key Admins" + ], + "dSCorePropagationData": [ + "20260331122323.0Z", + "20260331120814.0Z", + "16010101000416.0Z" + ], + "description": [ + "Members of this group can perform administrative actions on key objects within the domain." + ], + "distinguishedName": [ + "CN=Key Admins,CN=Users,DC=t,DC=goauthentik,DC=io" + ], + "groupType": [ + "-2147483646" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "Key Admins" + ], + "objectCategory": [ + "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "group" + ], + "objectGUID": [ + { + "encoded": "dWcx1Z8dgkudgzI9GZi0Rw==", + "encoding": "base64" + } + ], + "objectSid": [ + { + "encoded": "AQUAAAAAAAUVAAAAJ5aRdErKnK9BRIakDgIAAA==", + "encoding": "base64" + } + ], + "sAMAccountName": [ + "Key Admins" + ], + "sAMAccountType": [ + "268435456" + ], + "uSNChanged": [ + "12777" + ], + "uSNCreated": [ + "12450" + ], + "whenChanged": [ + "20260331122323.0Z" + ], + "whenCreated": [ + "20260331120813.0Z" + ] + } + }, + { + "attributes": { + "adminCount": 1, + "cn": "Enterprise Key Admins", + "dSCorePropagationData": [ + "2026-03-31 12:23:23+00:00", + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:04:16+00:00" + ], + "description": [ + "Members of this group can perform administrative actions on key objects within the forest." + ], + "distinguishedName": "CN=Enterprise Key Admins,CN=Users,DC=t,DC=goauthentik,DC=io", + "groupType": -2147483640, + "instanceType": 4, + "isCriticalSystemObject": true, + "name": "Enterprise Key Admins", + "objectCategory": "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "group" + ], + "objectGUID": "{ee54f6df-df98-48fd-8894-9e42e682ee44}", + "objectSid": "S-1-5-21-1955698215-2946288202-2760262721-527", + "sAMAccountName": "Enterprise Key Admins", + "sAMAccountType": 268435456, + "uSNChanged": 12783, + "uSNCreated": 12453, + "whenChanged": "2026-03-31 12:23:23+00:00", + "whenCreated": "2026-03-31 12:08:13+00:00" + }, + "dn": "CN=Enterprise Key Admins,CN=Users,DC=t,DC=goauthentik,DC=io", + "raw": { + "adminCount": [ + "1" + ], + "cn": [ + "Enterprise Key Admins" + ], + "dSCorePropagationData": [ + "20260331122323.0Z", + "20260331120814.0Z", + "16010101000416.0Z" + ], + "description": [ + "Members of this group can perform administrative actions on key objects within the forest." + ], + "distinguishedName": [ + "CN=Enterprise Key Admins,CN=Users,DC=t,DC=goauthentik,DC=io" + ], + "groupType": [ + "-2147483640" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "Enterprise Key Admins" + ], + "objectCategory": [ + "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "group" + ], + "objectGUID": [ + { + "encoded": "3/ZU7pjf/UiIlJ5C5oLuRA==", + "encoding": "base64" + } + ], + "objectSid": [ + { + "encoded": "AQUAAAAAAAUVAAAAJ5aRdErKnK9BRIakDwIAAA==", + "encoding": "base64" + } + ], + "sAMAccountName": [ + "Enterprise Key Admins" + ], + "sAMAccountType": [ + "268435456" + ], + "uSNChanged": [ + "12783" + ], + "uSNCreated": [ + "12453" + ], + "whenChanged": [ + "20260331122323.0Z" + ], + "whenCreated": [ + "20260331120813.0Z" + ] + } + }, + { + "attributes": { + "cn": "Forest Trust Accounts", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "description": [ + "All forest trust accounts in the forest." + ], + "distinguishedName": "CN=Forest Trust Accounts,CN=Users,DC=t,DC=goauthentik,DC=io", + "groupType": -2147483646, + "instanceType": 4, + "isCriticalSystemObject": true, + "name": "Forest Trust Accounts", + "objectCategory": "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "group" + ], + "objectGUID": "{e5f37e98-1a06-4e8a-80d7-37262204d012}", + "objectSid": "S-1-5-21-1955698215-2946288202-2760262721-528", + "sAMAccountName": "Forest Trust Accounts", + "sAMAccountType": 268435456, + "uSNChanged": 12471, + "uSNCreated": 12469, + "whenChanged": "2026-03-31 12:08:13+00:00", + "whenCreated": "2026-03-31 12:08:13+00:00" + }, + "dn": "CN=Forest Trust Accounts,CN=Users,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "Forest Trust Accounts" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "description": [ + "All forest trust accounts in the forest." + ], + "distinguishedName": [ + "CN=Forest Trust Accounts,CN=Users,DC=t,DC=goauthentik,DC=io" + ], + "groupType": [ + "-2147483646" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "Forest Trust Accounts" + ], + "objectCategory": [ + "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "group" + ], + "objectGUID": [ + { + "encoded": "mH7z5QYaik6A1zcmIgTQEg==", + "encoding": "base64" + } + ], + "objectSid": [ + { + "encoded": "AQUAAAAAAAUVAAAAJ5aRdErKnK9BRIakEAIAAA==", + "encoding": "base64" + } + ], + "sAMAccountName": [ + "Forest Trust Accounts" + ], + "sAMAccountType": [ + "268435456" + ], + "uSNChanged": [ + "12471" + ], + "uSNCreated": [ + "12469" + ], + "whenChanged": [ + "20260331120813.0Z" + ], + "whenCreated": [ + "20260331120813.0Z" + ] + } + }, + { + "attributes": { + "cn": "External Trust Accounts", + "dSCorePropagationData": [ + "2026-03-31 12:08:14+00:00", + "1601-01-01 00:00:01+00:00" + ], + "description": [ + "All external trust accounts in the domain." + ], + "distinguishedName": "CN=External Trust Accounts,CN=Users,DC=t,DC=goauthentik,DC=io", + "groupType": -2147483646, + "instanceType": 4, + "isCriticalSystemObject": true, + "name": "External Trust Accounts", + "objectCategory": "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "group" + ], + "objectGUID": "{d2048b68-33b5-40e4-b00b-43ae4b9a6438}", + "objectSid": "S-1-5-21-1955698215-2946288202-2760262721-529", + "sAMAccountName": "External Trust Accounts", + "sAMAccountType": 268435456, + "uSNChanged": 12474, + "uSNCreated": 12472, + "whenChanged": "2026-03-31 12:08:13+00:00", + "whenCreated": "2026-03-31 12:08:13+00:00" + }, + "dn": "CN=External Trust Accounts,CN=Users,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "External Trust Accounts" + ], + "dSCorePropagationData": [ + "20260331120814.0Z", + "16010101000001.0Z" + ], + "description": [ + "All external trust accounts in the domain." + ], + "distinguishedName": [ + "CN=External Trust Accounts,CN=Users,DC=t,DC=goauthentik,DC=io" + ], + "groupType": [ + "-2147483646" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "External Trust Accounts" + ], + "objectCategory": [ + "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "group" + ], + "objectGUID": [ + { + "encoded": "aIsE0rUz5ECwC0OuS5pkOA==", + "encoding": "base64" + } + ], + "objectSid": [ + { + "encoded": "AQUAAAAAAAUVAAAAJ5aRdErKnK9BRIakEQIAAA==", + "encoding": "base64" + } + ], + "sAMAccountName": [ + "External Trust Accounts" + ], + "sAMAccountType": [ + "268435456" + ], + "uSNChanged": [ + "12474" + ], + "uSNCreated": [ + "12472" + ], + "whenChanged": [ + "20260331120813.0Z" + ], + "whenCreated": [ + "20260331120813.0Z" + ] + } + }, + { + "attributes": { + "cn": "RID Manager$", + "dSCorePropagationData": [ + "1601-01-01 00:00:00+00:00" + ], + "distinguishedName": "CN=RID Manager$,CN=System,DC=t,DC=goauthentik,DC=io", + "fSMORoleOwner": "CN=NTDS Settings,CN=AK-DC,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "isCriticalSystemObject": true, + "name": "RID Manager$", + "objectCategory": "CN=RID-Manager,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "rIDManager" + ], + "objectGUID": "{fb486341-4198-4c13-bf00-a70d1d516a88}", + "rIDAvailablePool": 4611686014132422209, + "showInAdvancedViewOnly": true, + "systemFlags": -1946157056, + "uSNChanged": 12492, + "uSNCreated": 12487, + "whenChanged": "2026-03-31 12:08:53+00:00", + "whenCreated": "2026-03-31 12:08:53+00:00" + }, + "dn": "CN=RID Manager$,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "RID Manager$" + ], + "dSCorePropagationData": [ + "16010101000000.0Z" + ], + "distinguishedName": [ + "CN=RID Manager$,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "fSMORoleOwner": [ + "CN=NTDS Settings,CN=AK-DC,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "name": [ + "RID Manager$" + ], + "objectCategory": [ + "CN=RID-Manager,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "rIDManager" + ], + "objectGUID": [ + { + "encoded": "QWNI+5hBE0y/AKcNHVFqiA==", + "encoding": "base64" + } + ], + "rIDAvailablePool": [ + "4611686014132422209" + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "systemFlags": [ + "-1946157056" + ], + "uSNChanged": [ + "12492" + ], + "uSNCreated": [ + "12487" + ], + "whenChanged": [ + "20260331120853.0Z" + ], + "whenCreated": [ + "20260331120853.0Z" + ] + } + }, + { + "attributes": { + "cn": "RID Set", + "dSCorePropagationData": [ + "1601-01-01 00:00:00+00:00" + ], + "distinguishedName": "CN=RID Set,CN=AK-DC,OU=Domain Controllers,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "RID Set", + "objectCategory": "CN=RID-Set,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "rIDSet" + ], + "objectGUID": "{dfd8eb2b-7662-4382-8404-779c97d052de}", + "rIDAllocationPool": 6871947674701, + "rIDNextRID": 1114, + "rIDPreviousAllocationPool": 6871947674701, + "rIDUsedPool": 0, + "showInAdvancedViewOnly": true, + "uSNChanged": 12493, + "uSNCreated": 12490, + "whenChanged": "2026-03-31 12:08:53+00:00", + "whenCreated": "2026-03-31 12:08:53+00:00" + }, + "dn": "CN=RID Set,CN=AK-DC,OU=Domain Controllers,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "RID Set" + ], + "dSCorePropagationData": [ + "16010101000000.0Z" + ], + "distinguishedName": [ + "CN=RID Set,CN=AK-DC,OU=Domain Controllers,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "RID Set" + ], + "objectCategory": [ + "CN=RID-Set,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "rIDSet" + ], + "objectGUID": [ + { + "encoded": "K+vY32J2gkOEBHecl9BS3g==", + "encoding": "base64" + } + ], + "rIDAllocationPool": [ + "6871947674701" + ], + "rIDNextRID": [ + "1114" + ], + "rIDPreviousAllocationPool": [ + "6871947674701" + ], + "rIDUsedPool": [ + "0" + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "12493" + ], + "uSNCreated": [ + "12490" + ], + "whenChanged": [ + "20260331120853.0Z" + ], + "whenCreated": [ + "20260331120853.0Z" + ] + } + }, + { + "attributes": { + "cn": "DnsAdmins", + "dSCorePropagationData": [ + "1601-01-01 00:00:00+00:00" + ], + "description": [ + "DNS Administrators Group" + ], + "distinguishedName": "CN=DnsAdmins,CN=Users,DC=t,DC=goauthentik,DC=io", + "groupType": -2147483644, + "instanceType": 4, + "name": "DnsAdmins", + "objectCategory": "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "group" + ], + "objectGUID": "{ebcb0828-77e5-4bdd-b4ae-8b2d81327824}", + "objectSid": "S-1-5-21-1955698215-2946288202-2760262721-1102", + "sAMAccountName": "DnsAdmins", + "sAMAccountType": 536870912, + "uSNChanged": 12499, + "uSNCreated": 12497, + "whenChanged": "2026-03-31 12:08:53+00:00", + "whenCreated": "2026-03-31 12:08:53+00:00" + }, + "dn": "CN=DnsAdmins,CN=Users,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "DnsAdmins" + ], + "dSCorePropagationData": [ + "16010101000000.0Z" + ], + "description": [ + "DNS Administrators Group" + ], + "distinguishedName": [ + "CN=DnsAdmins,CN=Users,DC=t,DC=goauthentik,DC=io" + ], + "groupType": [ + "-2147483644" + ], + "instanceType": [ + "4" + ], + "name": [ + "DnsAdmins" + ], + "objectCategory": [ + "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "group" + ], + "objectGUID": [ + { + "encoded": "KAjL6+V33Uu0rostgTJ4JA==", + "encoding": "base64" + } + ], + "objectSid": [ + { + "encoded": "AQUAAAAAAAUVAAAAJ5aRdErKnK9BRIakTgQAAA==", + "encoding": "base64" + } + ], + "sAMAccountName": [ + "DnsAdmins" + ], + "sAMAccountType": [ + "536870912" + ], + "uSNChanged": [ + "12499" + ], + "uSNCreated": [ + "12497" + ], + "whenChanged": [ + "20260331120853.0Z" + ], + "whenCreated": [ + "20260331120853.0Z" + ] + } + }, + { + "attributes": { + "cn": "DnsUpdateProxy", + "dSCorePropagationData": [ + "1601-01-01 00:00:00+00:00" + ], + "description": [ + "DNS clients who are permitted to perform dynamic updates on behalf of some other clients (such as DHCP servers)." + ], + "distinguishedName": "CN=DnsUpdateProxy,CN=Users,DC=t,DC=goauthentik,DC=io", + "groupType": -2147483646, + "instanceType": 4, + "name": "DnsUpdateProxy", + "objectCategory": "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "group" + ], + "objectGUID": "{7e859819-427d-4472-b722-a56bf419b5d1}", + "objectSid": "S-1-5-21-1955698215-2946288202-2760262721-1103", + "sAMAccountName": "DnsUpdateProxy", + "sAMAccountType": 268435456, + "uSNChanged": 12502, + "uSNCreated": 12502, + "whenChanged": "2026-03-31 12:08:53+00:00", + "whenCreated": "2026-03-31 12:08:53+00:00" + }, + "dn": "CN=DnsUpdateProxy,CN=Users,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "DnsUpdateProxy" + ], + "dSCorePropagationData": [ + "16010101000000.0Z" + ], + "description": [ + "DNS clients who are permitted to perform dynamic updates on behalf of some other clients (such as DHCP servers)." + ], + "distinguishedName": [ + "CN=DnsUpdateProxy,CN=Users,DC=t,DC=goauthentik,DC=io" + ], + "groupType": [ + "-2147483646" + ], + "instanceType": [ + "4" + ], + "name": [ + "DnsUpdateProxy" + ], + "objectCategory": [ + "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "group" + ], + "objectGUID": [ + { + "encoded": "GZiFfn1CckS3IqVr9Bm10Q==", + "encoding": "base64" + } + ], + "objectSid": [ + { + "encoded": "AQUAAAAAAAUVAAAAJ5aRdErKnK9BRIakTwQAAA==", + "encoding": "base64" + } + ], + "sAMAccountName": [ + "DnsUpdateProxy" + ], + "sAMAccountType": [ + "268435456" + ], + "uSNChanged": [ + "12502" + ], + "uSNCreated": [ + "12502" + ], + "whenChanged": [ + "20260331120853.0Z" + ], + "whenCreated": [ + "20260331120853.0Z" + ] + } + }, + { + "attributes": { + "cn": "MicrosoftDNS", + "dSCorePropagationData": [ + "2026-03-31 12:08:53+00:00", + "2026-03-31 12:08:53+00:00", + "2026-03-31 12:08:53+00:00", + "2026-03-31 12:08:53+00:00", + "1601-01-01 00:00:00+00:00" + ], + "displayName": "DNS Servers", + "distinguishedName": "CN=MicrosoftDNS,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "MicrosoftDNS", + "objectCategory": "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "container" + ], + "objectGUID": "{2116744f-dccf-407b-8863-39d5c9964460}", + "showInAdvancedViewOnly": true, + "uSNChanged": 12510, + "uSNCreated": 12505, + "whenChanged": "2026-03-31 12:08:53+00:00", + "whenCreated": "2026-03-31 12:08:53+00:00" + }, + "dn": "CN=MicrosoftDNS,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "MicrosoftDNS" + ], + "dSCorePropagationData": [ + "20260331120853.0Z", + "20260331120853.0Z", + "20260331120853.0Z", + "20260331120853.0Z", + "16010101000000.0Z" + ], + "displayName": [ + "DNS Servers" + ], + "distinguishedName": [ + "CN=MicrosoftDNS,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "MicrosoftDNS" + ], + "objectCategory": [ + "CN=Container,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "container" + ], + "objectGUID": [ + { + "encoded": "T3QWIc/ce0CIYznVyZZEYA==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "12510" + ], + "uSNCreated": [ + "12505" + ], + "whenChanged": [ + "20260331120853.0Z" + ], + "whenCreated": [ + "20260331120853.0Z" + ] + } + }, + { + "attributes": { + "cn": "Zone", + "dSCorePropagationData": [ + "2026-03-31 12:08:53+00:00", + "2026-03-31 12:08:53+00:00", + "1601-01-01 00:00:00+00:00" + ], + "dc": "RootDNSServers", + "distinguishedName": "DC=RootDNSServers,CN=MicrosoftDNS,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "RootDNSServers", + "objectCategory": "CN=Dns-Zone,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "dnsZone" + ], + "objectGUID": "{3614657d-d5e5-4b51-85d0-e532dcdc764a}", + "showInAdvancedViewOnly": true, + "uSNChanged": 12513, + "uSNCreated": 12511, + "whenChanged": "2026-03-31 12:08:53+00:00", + "whenCreated": "2026-03-31 12:08:53+00:00" + }, + "dn": "DC=RootDNSServers,CN=MicrosoftDNS,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "Zone" + ], + "dSCorePropagationData": [ + "20260331120853.0Z", + "20260331120853.0Z", + "16010101000000.0Z" + ], + "dc": [ + "RootDNSServers" + ], + "distinguishedName": [ + "DC=RootDNSServers,CN=MicrosoftDNS,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "RootDNSServers" + ], + "objectCategory": [ + "CN=Dns-Zone,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "dnsZone" + ], + "objectGUID": [ + { + "encoded": "fWUUNuXVUUuF0OUy3Nx2Sg==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "12513" + ], + "uSNCreated": [ + "12511" + ], + "whenChanged": [ + "20260331120853.0Z" + ], + "whenCreated": [ + "20260331120853.0Z" + ] + } + }, + { + "attributes": { + "dSCorePropagationData": [ + "1601-01-01 00:00:00+00:00" + ], + "dc": "@", + "distinguishedName": "DC=@,DC=RootDNSServers,CN=MicrosoftDNS,CN=System,DC=t,DC=goauthentik,DC=io", + "dnsRecord": [ + "\u0016\u0000\u0002\u0000\u0005\b\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0014\u0003\u0001m\froot-servers\u0003net\u0000", + "\u0016\u0000\u0002\u0000\u0005\b\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0014\u0003\u0001k\froot-servers\u0003net\u0000", + "\u0016\u0000\u0002\u0000\u0005\b\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0014\u0003\u0001a\froot-servers\u0003net\u0000", + "\u0016\u0000\u0002\u0000\u0005\b\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0014\u0003\u0001g\froot-servers\u0003net\u0000", + "\u0016\u0000\u0002\u0000\u0005\b\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0014\u0003\u0001e\froot-servers\u0003net\u0000", + "\u0016\u0000\u0002\u0000\u0005\b\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0014\u0003\u0001h\froot-servers\u0003net\u0000", + "\u0016\u0000\u0002\u0000\u0005\b\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0014\u0003\u0001c\froot-servers\u0003net\u0000", + "\u0016\u0000\u0002\u0000\u0005\b\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0014\u0003\u0001l\froot-servers\u0003net\u0000", + "\u0016\u0000\u0002\u0000\u0005\b\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0014\u0003\u0001i\froot-servers\u0003net\u0000", + "\u0016\u0000\u0002\u0000\u0005\b\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0014\u0003\u0001b\froot-servers\u0003net\u0000", + "\u0016\u0000\u0002\u0000\u0005\b\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0014\u0003\u0001f\froot-servers\u0003net\u0000", + "\u0016\u0000\u0002\u0000\u0005\b\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0014\u0003\u0001d\froot-servers\u0003net\u0000", + "\u0016\u0000\u0002\u0000\u0005\b\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0014\u0003\u0001j\froot-servers\u0003net\u0000" + ], + "instanceType": 4, + "name": "@", + "objectCategory": "CN=Dns-Node,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "dnsNode" + ], + "objectGUID": "{db34266a-0dab-49fb-b0e6-60e9d9057e68}", + "showInAdvancedViewOnly": true, + "uSNChanged": 12514, + "uSNCreated": 12514, + "whenChanged": "2026-03-31 12:08:53+00:00", + "whenCreated": "2026-03-31 12:08:53+00:00" + }, + "dn": "DC=@,DC=RootDNSServers,CN=MicrosoftDNS,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "dSCorePropagationData": [ + "16010101000000.0Z" + ], + "dc": [ + "@" + ], + "distinguishedName": [ + "DC=@,DC=RootDNSServers,CN=MicrosoftDNS,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "dnsRecord": [ + "\u0016\u0000\u0002\u0000\u0005\b\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0014\u0003\u0001m\froot-servers\u0003net\u0000", + "\u0016\u0000\u0002\u0000\u0005\b\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0014\u0003\u0001k\froot-servers\u0003net\u0000", + "\u0016\u0000\u0002\u0000\u0005\b\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0014\u0003\u0001a\froot-servers\u0003net\u0000", + "\u0016\u0000\u0002\u0000\u0005\b\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0014\u0003\u0001g\froot-servers\u0003net\u0000", + "\u0016\u0000\u0002\u0000\u0005\b\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0014\u0003\u0001e\froot-servers\u0003net\u0000", + "\u0016\u0000\u0002\u0000\u0005\b\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0014\u0003\u0001h\froot-servers\u0003net\u0000", + "\u0016\u0000\u0002\u0000\u0005\b\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0014\u0003\u0001c\froot-servers\u0003net\u0000", + "\u0016\u0000\u0002\u0000\u0005\b\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0014\u0003\u0001l\froot-servers\u0003net\u0000", + "\u0016\u0000\u0002\u0000\u0005\b\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0014\u0003\u0001i\froot-servers\u0003net\u0000", + "\u0016\u0000\u0002\u0000\u0005\b\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0014\u0003\u0001b\froot-servers\u0003net\u0000", + "\u0016\u0000\u0002\u0000\u0005\b\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0014\u0003\u0001f\froot-servers\u0003net\u0000", + "\u0016\u0000\u0002\u0000\u0005\b\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0014\u0003\u0001d\froot-servers\u0003net\u0000", + "\u0016\u0000\u0002\u0000\u0005\b\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0014\u0003\u0001j\froot-servers\u0003net\u0000" + ], + "instanceType": [ + "4" + ], + "name": [ + "@" + ], + "objectCategory": [ + "CN=Dns-Node,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "dnsNode" + ], + "objectGUID": [ + { + "encoded": "aiY026sN+0mw5mDp2QV+aA==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "12514" + ], + "uSNCreated": [ + "12514" + ], + "whenChanged": [ + "20260331120853.0Z" + ], + "whenCreated": [ + "20260331120853.0Z" + ] + } + }, + { + "attributes": { + "dNSTombstoned": false, + "dSCorePropagationData": [ + "1601-01-01 00:00:00+00:00" + ], + "dc": "j.root-servers.net", + "distinguishedName": "DC=j.root-servers.net,DC=RootDNSServers,CN=MicrosoftDNS,CN=System,DC=t,DC=goauthentik,DC=io", + "dnsRecord": [ + "\u0010\u0000\u001c\u0000\u0005\b\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000 \u0001\u0005\u0003\f'\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0002\u00000" + ], + "instanceType": 4, + "name": "j.root-servers.net", + "objectCategory": "CN=Dns-Node,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "dnsNode" + ], + "objectGUID": "{20538aef-90c9-4bfd-84fb-bd1abdf07f0a}", + "showInAdvancedViewOnly": true, + "uSNChanged": 12516, + "uSNCreated": 12515, + "whenChanged": "2026-03-31 12:08:53+00:00", + "whenCreated": "2026-03-31 12:08:53+00:00" + }, + "dn": "DC=j.root-servers.net,DC=RootDNSServers,CN=MicrosoftDNS,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "dNSTombstoned": [ + "FALSE" + ], + "dSCorePropagationData": [ + "16010101000000.0Z" + ], + "dc": [ + "j.root-servers.net" + ], + "distinguishedName": [ + "DC=j.root-servers.net,DC=RootDNSServers,CN=MicrosoftDNS,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "dnsRecord": [ + "\u0010\u0000\u001c\u0000\u0005\b\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000 \u0001\u0005\u0003\f'\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0002\u00000" + ], + "instanceType": [ + "4" + ], + "name": [ + "j.root-servers.net" + ], + "objectCategory": [ + "CN=Dns-Node,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "dnsNode" + ], + "objectGUID": [ + { + "encoded": "74pTIMmQ/UuE+70avfB/Cg==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "12516" + ], + "uSNCreated": [ + "12515" + ], + "whenChanged": [ + "20260331120853.0Z" + ], + "whenCreated": [ + "20260331120853.0Z" + ] + } + }, + { + "attributes": { + "dNSTombstoned": false, + "dSCorePropagationData": [ + "1601-01-01 00:00:00+00:00" + ], + "dc": "d.root-servers.net", + "distinguishedName": "DC=d.root-servers.net,DC=RootDNSServers,CN=MicrosoftDNS,CN=System,DC=t,DC=goauthentik,DC=io", + "dnsRecord": [ + "\u0010\u0000\u001c\u0000\u0005\b\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000 \u0001\u0005\u0000\u0000-\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\r" + ], + "instanceType": 4, + "name": "d.root-servers.net", + "objectCategory": "CN=Dns-Node,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "dnsNode" + ], + "objectGUID": "{4458c1f7-bdc2-4b4d-aad9-248ccae1c332}", + "showInAdvancedViewOnly": true, + "uSNChanged": 12518, + "uSNCreated": 12517, + "whenChanged": "2026-03-31 12:08:53+00:00", + "whenCreated": "2026-03-31 12:08:53+00:00" + }, + "dn": "DC=d.root-servers.net,DC=RootDNSServers,CN=MicrosoftDNS,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "dNSTombstoned": [ + "FALSE" + ], + "dSCorePropagationData": [ + "16010101000000.0Z" + ], + "dc": [ + "d.root-servers.net" + ], + "distinguishedName": [ + "DC=d.root-servers.net,DC=RootDNSServers,CN=MicrosoftDNS,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "dnsRecord": [ + "\u0010\u0000\u001c\u0000\u0005\b\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000 \u0001\u0005\u0000\u0000-\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\r" + ], + "instanceType": [ + "4" + ], + "name": [ + "d.root-servers.net" + ], + "objectCategory": [ + "CN=Dns-Node,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "dnsNode" + ], + "objectGUID": [ + { + "encoded": "98FYRMK9TUuq2SSMyuHDMg==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "12518" + ], + "uSNCreated": [ + "12517" + ], + "whenChanged": [ + "20260331120853.0Z" + ], + "whenCreated": [ + "20260331120853.0Z" + ] + } + }, + { + "attributes": { + "dNSTombstoned": false, + "dSCorePropagationData": [ + "1601-01-01 00:00:00+00:00" + ], + "dc": "f.root-servers.net", + "distinguishedName": "DC=f.root-servers.net,DC=RootDNSServers,CN=MicrosoftDNS,CN=System,DC=t,DC=goauthentik,DC=io", + "dnsRecord": [ + "\u0010\u0000\u001c\u0000\u0005\b\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000 \u0001\u0005\u0000\u0000/\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u000f" + ], + "instanceType": 4, + "name": "f.root-servers.net", + "objectCategory": "CN=Dns-Node,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "dnsNode" + ], + "objectGUID": "{a8a897c7-c3b0-4ba0-b207-9dadbad61f47}", + "showInAdvancedViewOnly": true, + "uSNChanged": 12520, + "uSNCreated": 12519, + "whenChanged": "2026-03-31 12:08:53+00:00", + "whenCreated": "2026-03-31 12:08:53+00:00" + }, + "dn": "DC=f.root-servers.net,DC=RootDNSServers,CN=MicrosoftDNS,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "dNSTombstoned": [ + "FALSE" + ], + "dSCorePropagationData": [ + "16010101000000.0Z" + ], + "dc": [ + "f.root-servers.net" + ], + "distinguishedName": [ + "DC=f.root-servers.net,DC=RootDNSServers,CN=MicrosoftDNS,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "dnsRecord": [ + "\u0010\u0000\u001c\u0000\u0005\b\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000 \u0001\u0005\u0000\u0000/\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u000f" + ], + "instanceType": [ + "4" + ], + "name": [ + "f.root-servers.net" + ], + "objectCategory": [ + "CN=Dns-Node,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "dnsNode" + ], + "objectGUID": [ + { + "encoded": "x5eoqLDDoEuyB52tutYfRw==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "12520" + ], + "uSNCreated": [ + "12519" + ], + "whenChanged": [ + "20260331120853.0Z" + ], + "whenCreated": [ + "20260331120853.0Z" + ] + } + }, + { + "attributes": { + "dNSTombstoned": false, + "dSCorePropagationData": [ + "1601-01-01 00:00:00+00:00" + ], + "dc": "b.root-servers.net", + "distinguishedName": "DC=b.root-servers.net,DC=RootDNSServers,CN=MicrosoftDNS,CN=System,DC=t,DC=goauthentik,DC=io", + "dnsRecord": [ + { + "encoded": "EAAcAAUIAAAAAAAAAAAAAAAAAAAAAAAAKAEBuAAQAAAAAAAAAAAACw==", + "encoding": "base64" + } + ], + "instanceType": 4, + "name": "b.root-servers.net", + "objectCategory": "CN=Dns-Node,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "dnsNode" + ], + "objectGUID": "{5b587f13-b749-4ef8-916b-fd6daefd770b}", + "showInAdvancedViewOnly": true, + "uSNChanged": 12522, + "uSNCreated": 12521, + "whenChanged": "2026-03-31 12:08:53+00:00", + "whenCreated": "2026-03-31 12:08:53+00:00" + }, + "dn": "DC=b.root-servers.net,DC=RootDNSServers,CN=MicrosoftDNS,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "dNSTombstoned": [ + "FALSE" + ], + "dSCorePropagationData": [ + "16010101000000.0Z" + ], + "dc": [ + "b.root-servers.net" + ], + "distinguishedName": [ + "DC=b.root-servers.net,DC=RootDNSServers,CN=MicrosoftDNS,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "dnsRecord": [ + { + "encoded": "EAAcAAUIAAAAAAAAAAAAAAAAAAAAAAAAKAEBuAAQAAAAAAAAAAAACw==", + "encoding": "base64" + } + ], + "instanceType": [ + "4" + ], + "name": [ + "b.root-servers.net" + ], + "objectCategory": [ + "CN=Dns-Node,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "dnsNode" + ], + "objectGUID": [ + { + "encoded": "E39YW0m3+E6Ra/1trv13Cw==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "12522" + ], + "uSNCreated": [ + "12521" + ], + "whenChanged": [ + "20260331120853.0Z" + ], + "whenCreated": [ + "20260331120853.0Z" + ] + } + }, + { + "attributes": { + "dNSTombstoned": false, + "dSCorePropagationData": [ + "1601-01-01 00:00:00+00:00" + ], + "dc": "i.root-servers.net", + "distinguishedName": "DC=i.root-servers.net,DC=RootDNSServers,CN=MicrosoftDNS,CN=System,DC=t,DC=goauthentik,DC=io", + "dnsRecord": [ + { + "encoded": "EAAcAAUIAAAAAAAAAAAAAAAAAAAAAAAAIAEH/gAAAAAAAAAAAAAAUw==", + "encoding": "base64" + } + ], + "instanceType": 4, + "name": "i.root-servers.net", + "objectCategory": "CN=Dns-Node,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "dnsNode" + ], + "objectGUID": "{822f0c8e-010b-4cc0-af64-4fc9d3eb8e32}", + "showInAdvancedViewOnly": true, + "uSNChanged": 12524, + "uSNCreated": 12523, + "whenChanged": "2026-03-31 12:08:53+00:00", + "whenCreated": "2026-03-31 12:08:53+00:00" + }, + "dn": "DC=i.root-servers.net,DC=RootDNSServers,CN=MicrosoftDNS,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "dNSTombstoned": [ + "FALSE" + ], + "dSCorePropagationData": [ + "16010101000000.0Z" + ], + "dc": [ + "i.root-servers.net" + ], + "distinguishedName": [ + "DC=i.root-servers.net,DC=RootDNSServers,CN=MicrosoftDNS,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "dnsRecord": [ + { + "encoded": "EAAcAAUIAAAAAAAAAAAAAAAAAAAAAAAAIAEH/gAAAAAAAAAAAAAAUw==", + "encoding": "base64" + } + ], + "instanceType": [ + "4" + ], + "name": [ + "i.root-servers.net" + ], + "objectCategory": [ + "CN=Dns-Node,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "dnsNode" + ], + "objectGUID": [ + { + "encoded": "jgwvggsBwEyvZE/J0+uOMg==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "12524" + ], + "uSNCreated": [ + "12523" + ], + "whenChanged": [ + "20260331120853.0Z" + ], + "whenCreated": [ + "20260331120853.0Z" + ] + } + }, + { + "attributes": { + "dNSTombstoned": false, + "dSCorePropagationData": [ + "1601-01-01 00:00:00+00:00" + ], + "dc": "l.root-servers.net", + "distinguishedName": "DC=l.root-servers.net,DC=RootDNSServers,CN=MicrosoftDNS,CN=System,DC=t,DC=goauthentik,DC=io", + "dnsRecord": [ + { + "encoded": "EAAcAAUIAAAAAAAAAAAAAAAAAAAAAAAAIAEFAACfAAAAAAAAAAAAQg==", + "encoding": "base64" + } + ], + "instanceType": 4, + "name": "l.root-servers.net", + "objectCategory": "CN=Dns-Node,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "dnsNode" + ], + "objectGUID": "{556a07ec-4126-499b-afd0-b4854fb15836}", + "showInAdvancedViewOnly": true, + "uSNChanged": 12526, + "uSNCreated": 12525, + "whenChanged": "2026-03-31 12:08:53+00:00", + "whenCreated": "2026-03-31 12:08:53+00:00" + }, + "dn": "DC=l.root-servers.net,DC=RootDNSServers,CN=MicrosoftDNS,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "dNSTombstoned": [ + "FALSE" + ], + "dSCorePropagationData": [ + "16010101000000.0Z" + ], + "dc": [ + "l.root-servers.net" + ], + "distinguishedName": [ + "DC=l.root-servers.net,DC=RootDNSServers,CN=MicrosoftDNS,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "dnsRecord": [ + { + "encoded": "EAAcAAUIAAAAAAAAAAAAAAAAAAAAAAAAIAEFAACfAAAAAAAAAAAAQg==", + "encoding": "base64" + } + ], + "instanceType": [ + "4" + ], + "name": [ + "l.root-servers.net" + ], + "objectCategory": [ + "CN=Dns-Node,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "dnsNode" + ], + "objectGUID": [ + { + "encoded": "7AdqVSZBm0mv0LSFT7FYNg==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "12526" + ], + "uSNCreated": [ + "12525" + ], + "whenChanged": [ + "20260331120853.0Z" + ], + "whenCreated": [ + "20260331120853.0Z" + ] + } + }, + { + "attributes": { + "dNSTombstoned": false, + "dSCorePropagationData": [ + "1601-01-01 00:00:00+00:00" + ], + "dc": "c.root-servers.net", + "distinguishedName": "DC=c.root-servers.net,DC=RootDNSServers,CN=MicrosoftDNS,CN=System,DC=t,DC=goauthentik,DC=io", + "dnsRecord": [ + "\u0010\u0000\u001c\u0000\u0005\b\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000 \u0001\u0005\u0000\u0000\u0002\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\f" + ], + "instanceType": 4, + "name": "c.root-servers.net", + "objectCategory": "CN=Dns-Node,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "dnsNode" + ], + "objectGUID": "{6545f81e-9e4d-4a14-be2f-1395eae245f1}", + "showInAdvancedViewOnly": true, + "uSNChanged": 12528, + "uSNCreated": 12527, + "whenChanged": "2026-03-31 12:08:53+00:00", + "whenCreated": "2026-03-31 12:08:53+00:00" + }, + "dn": "DC=c.root-servers.net,DC=RootDNSServers,CN=MicrosoftDNS,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "dNSTombstoned": [ + "FALSE" + ], + "dSCorePropagationData": [ + "16010101000000.0Z" + ], + "dc": [ + "c.root-servers.net" + ], + "distinguishedName": [ + "DC=c.root-servers.net,DC=RootDNSServers,CN=MicrosoftDNS,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "dnsRecord": [ + "\u0010\u0000\u001c\u0000\u0005\b\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000 \u0001\u0005\u0000\u0000\u0002\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\f" + ], + "instanceType": [ + "4" + ], + "name": [ + "c.root-servers.net" + ], + "objectCategory": [ + "CN=Dns-Node,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "dnsNode" + ], + "objectGUID": [ + { + "encoded": "HvhFZU2eFEq+LxOV6uJF8Q==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "12528" + ], + "uSNCreated": [ + "12527" + ], + "whenChanged": [ + "20260331120853.0Z" + ], + "whenCreated": [ + "20260331120853.0Z" + ] + } + }, + { + "attributes": { + "dNSTombstoned": false, + "dSCorePropagationData": [ + "1601-01-01 00:00:00+00:00" + ], + "dc": "h.root-servers.net", + "distinguishedName": "DC=h.root-servers.net,DC=RootDNSServers,CN=MicrosoftDNS,CN=System,DC=t,DC=goauthentik,DC=io", + "dnsRecord": [ + "\u0010\u0000\u001c\u0000\u0005\b\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000 \u0001\u0005\u0000\u0000\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000S" + ], + "instanceType": 4, + "name": "h.root-servers.net", + "objectCategory": "CN=Dns-Node,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "dnsNode" + ], + "objectGUID": "{70cfeb55-7d9d-4855-b3aa-28c6cb2647fb}", + "showInAdvancedViewOnly": true, + "uSNChanged": 12530, + "uSNCreated": 12529, + "whenChanged": "2026-03-31 12:08:53+00:00", + "whenCreated": "2026-03-31 12:08:53+00:00" + }, + "dn": "DC=h.root-servers.net,DC=RootDNSServers,CN=MicrosoftDNS,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "dNSTombstoned": [ + "FALSE" + ], + "dSCorePropagationData": [ + "16010101000000.0Z" + ], + "dc": [ + "h.root-servers.net" + ], + "distinguishedName": [ + "DC=h.root-servers.net,DC=RootDNSServers,CN=MicrosoftDNS,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "dnsRecord": [ + "\u0010\u0000\u001c\u0000\u0005\b\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000 \u0001\u0005\u0000\u0000\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000S" + ], + "instanceType": [ + "4" + ], + "name": [ + "h.root-servers.net" + ], + "objectCategory": [ + "CN=Dns-Node,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "dnsNode" + ], + "objectGUID": [ + { + "encoded": "VevPcJ19VUizqijGyyZH+w==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "12530" + ], + "uSNCreated": [ + "12529" + ], + "whenChanged": [ + "20260331120853.0Z" + ], + "whenCreated": [ + "20260331120853.0Z" + ] + } + }, + { + "attributes": { + "dNSTombstoned": false, + "dSCorePropagationData": [ + "1601-01-01 00:00:00+00:00" + ], + "dc": "e.root-servers.net", + "distinguishedName": "DC=e.root-servers.net,DC=RootDNSServers,CN=MicrosoftDNS,CN=System,DC=t,DC=goauthentik,DC=io", + "dnsRecord": [ + { + "encoded": "EAAcAAUIAAAAAAAAAAAAAAAAAAAAAAAAIAEFAACoAAAAAAAAAAAADg==", + "encoding": "base64" + } + ], + "instanceType": 4, + "name": "e.root-servers.net", + "objectCategory": "CN=Dns-Node,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "dnsNode" + ], + "objectGUID": "{4348c41e-97c4-46b7-9610-be815e7f20e8}", + "showInAdvancedViewOnly": true, + "uSNChanged": 12532, + "uSNCreated": 12531, + "whenChanged": "2026-03-31 12:08:53+00:00", + "whenCreated": "2026-03-31 12:08:53+00:00" + }, + "dn": "DC=e.root-servers.net,DC=RootDNSServers,CN=MicrosoftDNS,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "dNSTombstoned": [ + "FALSE" + ], + "dSCorePropagationData": [ + "16010101000000.0Z" + ], + "dc": [ + "e.root-servers.net" + ], + "distinguishedName": [ + "DC=e.root-servers.net,DC=RootDNSServers,CN=MicrosoftDNS,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "dnsRecord": [ + { + "encoded": "EAAcAAUIAAAAAAAAAAAAAAAAAAAAAAAAIAEFAACoAAAAAAAAAAAADg==", + "encoding": "base64" + } + ], + "instanceType": [ + "4" + ], + "name": [ + "e.root-servers.net" + ], + "objectCategory": [ + "CN=Dns-Node,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "dnsNode" + ], + "objectGUID": [ + { + "encoded": "HsRIQ8SXt0aWEL6BXn8g6A==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "12532" + ], + "uSNCreated": [ + "12531" + ], + "whenChanged": [ + "20260331120853.0Z" + ], + "whenCreated": [ + "20260331120853.0Z" + ] + } + }, + { + "attributes": { + "dNSTombstoned": false, + "dSCorePropagationData": [ + "1601-01-01 00:00:00+00:00" + ], + "dc": "g.root-servers.net", + "distinguishedName": "DC=g.root-servers.net,DC=RootDNSServers,CN=MicrosoftDNS,CN=System,DC=t,DC=goauthentik,DC=io", + "dnsRecord": [ + "\u0010\u0000\u001c\u0000\u0005\b\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000 \u0001\u0005\u0000\u0000\u0012\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\r\r" + ], + "instanceType": 4, + "name": "g.root-servers.net", + "objectCategory": "CN=Dns-Node,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "dnsNode" + ], + "objectGUID": "{bc0bf0ba-5e24-4f72-a2ce-4c2ee1437ddb}", + "showInAdvancedViewOnly": true, + "uSNChanged": 12534, + "uSNCreated": 12533, + "whenChanged": "2026-03-31 12:08:53+00:00", + "whenCreated": "2026-03-31 12:08:53+00:00" + }, + "dn": "DC=g.root-servers.net,DC=RootDNSServers,CN=MicrosoftDNS,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "dNSTombstoned": [ + "FALSE" + ], + "dSCorePropagationData": [ + "16010101000000.0Z" + ], + "dc": [ + "g.root-servers.net" + ], + "distinguishedName": [ + "DC=g.root-servers.net,DC=RootDNSServers,CN=MicrosoftDNS,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "dnsRecord": [ + "\u0010\u0000\u001c\u0000\u0005\b\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000 \u0001\u0005\u0000\u0000\u0012\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\r\r" + ], + "instanceType": [ + "4" + ], + "name": [ + "g.root-servers.net" + ], + "objectCategory": [ + "CN=Dns-Node,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "dnsNode" + ], + "objectGUID": [ + { + "encoded": "uvALvCReck+izkwu4UN92w==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "12534" + ], + "uSNCreated": [ + "12533" + ], + "whenChanged": [ + "20260331120853.0Z" + ], + "whenCreated": [ + "20260331120853.0Z" + ] + } + }, + { + "attributes": { + "dNSTombstoned": false, + "dSCorePropagationData": [ + "1601-01-01 00:00:00+00:00" + ], + "dc": "a.root-servers.net", + "distinguishedName": "DC=a.root-servers.net,DC=RootDNSServers,CN=MicrosoftDNS,CN=System,DC=t,DC=goauthentik,DC=io", + "dnsRecord": [ + { + "encoded": "EAAcAAUIAAAAAAAAAAAAAAAAAAAAAAAAIAEFA7o+AAAAAAAAAAIAMA==", + "encoding": "base64" + } + ], + "instanceType": 4, + "name": "a.root-servers.net", + "objectCategory": "CN=Dns-Node,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "dnsNode" + ], + "objectGUID": "{8b8525e5-ade3-40b1-aeae-bc9b884734c3}", + "showInAdvancedViewOnly": true, + "uSNChanged": 12536, + "uSNCreated": 12535, + "whenChanged": "2026-03-31 12:08:53+00:00", + "whenCreated": "2026-03-31 12:08:53+00:00" + }, + "dn": "DC=a.root-servers.net,DC=RootDNSServers,CN=MicrosoftDNS,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "dNSTombstoned": [ + "FALSE" + ], + "dSCorePropagationData": [ + "16010101000000.0Z" + ], + "dc": [ + "a.root-servers.net" + ], + "distinguishedName": [ + "DC=a.root-servers.net,DC=RootDNSServers,CN=MicrosoftDNS,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "dnsRecord": [ + { + "encoded": "EAAcAAUIAAAAAAAAAAAAAAAAAAAAAAAAIAEFA7o+AAAAAAAAAAIAMA==", + "encoding": "base64" + } + ], + "instanceType": [ + "4" + ], + "name": [ + "a.root-servers.net" + ], + "objectCategory": [ + "CN=Dns-Node,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "dnsNode" + ], + "objectGUID": [ + { + "encoded": "5SWFi+OtsUCurrybiEc0ww==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "12536" + ], + "uSNCreated": [ + "12535" + ], + "whenChanged": [ + "20260331120853.0Z" + ], + "whenCreated": [ + "20260331120853.0Z" + ] + } + }, + { + "attributes": { + "dNSTombstoned": false, + "dSCorePropagationData": [ + "1601-01-01 00:00:00+00:00" + ], + "dc": "k.root-servers.net", + "distinguishedName": "DC=k.root-servers.net,DC=RootDNSServers,CN=MicrosoftDNS,CN=System,DC=t,DC=goauthentik,DC=io", + "dnsRecord": [ + { + "encoded": "EAAcAAUIAAAAAAAAAAAAAAAAAAAAAAAAIAEH/QAAAAAAAAAAAAAAAQ==", + "encoding": "base64" + } + ], + "instanceType": 4, + "name": "k.root-servers.net", + "objectCategory": "CN=Dns-Node,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "dnsNode" + ], + "objectGUID": "{b4c9b921-50e4-46df-9015-d60f3b8d5be9}", + "showInAdvancedViewOnly": true, + "uSNChanged": 12538, + "uSNCreated": 12537, + "whenChanged": "2026-03-31 12:08:53+00:00", + "whenCreated": "2026-03-31 12:08:53+00:00" + }, + "dn": "DC=k.root-servers.net,DC=RootDNSServers,CN=MicrosoftDNS,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "dNSTombstoned": [ + "FALSE" + ], + "dSCorePropagationData": [ + "16010101000000.0Z" + ], + "dc": [ + "k.root-servers.net" + ], + "distinguishedName": [ + "DC=k.root-servers.net,DC=RootDNSServers,CN=MicrosoftDNS,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "dnsRecord": [ + { + "encoded": "EAAcAAUIAAAAAAAAAAAAAAAAAAAAAAAAIAEH/QAAAAAAAAAAAAAAAQ==", + "encoding": "base64" + } + ], + "instanceType": [ + "4" + ], + "name": [ + "k.root-servers.net" + ], + "objectCategory": [ + "CN=Dns-Node,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "dnsNode" + ], + "objectGUID": [ + { + "encoded": "IbnJtORQ30aQFdYPO41b6Q==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "12538" + ], + "uSNCreated": [ + "12537" + ], + "whenChanged": [ + "20260331120853.0Z" + ], + "whenCreated": [ + "20260331120853.0Z" + ] + } + }, + { + "attributes": { + "dNSTombstoned": false, + "dSCorePropagationData": [ + "1601-01-01 00:00:00+00:00" + ], + "dc": "m.root-servers.net", + "distinguishedName": "DC=m.root-servers.net,DC=RootDNSServers,CN=MicrosoftDNS,CN=System,DC=t,DC=goauthentik,DC=io", + "dnsRecord": [ + { + "encoded": "EAAcAAUIAAAAAAAAAAAAAAAAAAAAAAAAIAENwwAAAAAAAAAAAAAANQ==", + "encoding": "base64" + } + ], + "instanceType": 4, + "name": "m.root-servers.net", + "objectCategory": "CN=Dns-Node,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "dnsNode" + ], + "objectGUID": "{4d9b4635-66ca-4a74-9401-dea2b184c6c3}", + "showInAdvancedViewOnly": true, + "uSNChanged": 12540, + "uSNCreated": 12539, + "whenChanged": "2026-03-31 12:08:53+00:00", + "whenCreated": "2026-03-31 12:08:53+00:00" + }, + "dn": "DC=m.root-servers.net,DC=RootDNSServers,CN=MicrosoftDNS,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "dNSTombstoned": [ + "FALSE" + ], + "dSCorePropagationData": [ + "16010101000000.0Z" + ], + "dc": [ + "m.root-servers.net" + ], + "distinguishedName": [ + "DC=m.root-servers.net,DC=RootDNSServers,CN=MicrosoftDNS,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "dnsRecord": [ + { + "encoded": "EAAcAAUIAAAAAAAAAAAAAAAAAAAAAAAAIAENwwAAAAAAAAAAAAAANQ==", + "encoding": "base64" + } + ], + "instanceType": [ + "4" + ], + "name": [ + "m.root-servers.net" + ], + "objectCategory": [ + "CN=Dns-Node,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "dnsNode" + ], + "objectGUID": [ + { + "encoded": "NUabTcpmdEqUAd6isYTGww==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "12540" + ], + "uSNCreated": [ + "12539" + ], + "whenChanged": [ + "20260331120853.0Z" + ], + "whenCreated": [ + "20260331120853.0Z" + ] + } + }, + { + "attributes": { + "cn": "DFSR-GlobalSettings", + "dSCorePropagationData": [ + "1601-01-01 00:00:00+00:00" + ], + "distinguishedName": "CN=DFSR-GlobalSettings,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "msDFSR-Flags": 48, + "name": "DFSR-GlobalSettings", + "objectCategory": "CN=ms-DFSR-GlobalSettings,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "msDFSR-GlobalSettings" + ], + "objectGUID": "{9006707c-67fe-4981-95ab-9c24b8cec9f5}", + "showInAdvancedViewOnly": true, + "uSNChanged": 12588, + "uSNCreated": 12587, + "whenChanged": "2026-03-31 12:13:29+00:00", + "whenCreated": "2026-03-31 12:13:29+00:00" + }, + "dn": "CN=DFSR-GlobalSettings,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "DFSR-GlobalSettings" + ], + "dSCorePropagationData": [ + "16010101000000.0Z" + ], + "distinguishedName": [ + "CN=DFSR-GlobalSettings,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "msDFSR-Flags": [ + "48" + ], + "name": [ + "DFSR-GlobalSettings" + ], + "objectCategory": [ + "CN=ms-DFSR-GlobalSettings,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "msDFSR-GlobalSettings" + ], + "objectGUID": [ + { + "encoded": "fHAGkP5ngUmVq5wkuM7J9Q==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "12588" + ], + "uSNCreated": [ + "12587" + ], + "whenChanged": [ + "20260331121329.0Z" + ], + "whenCreated": [ + "20260331121329.0Z" + ] + } + }, + { + "attributes": { + "cn": "Domain System Volume", + "dSCorePropagationData": [ + "1601-01-01 00:00:00+00:00" + ], + "distinguishedName": "CN=Domain System Volume,CN=DFSR-GlobalSettings,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "msDFSR-ReplicationGroupType": 1, + "name": "Domain System Volume", + "objectCategory": "CN=ms-DFSR-ReplicationGroup,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "msDFSR-ReplicationGroup" + ], + "objectGUID": "{8c193814-1aca-4685-8f2d-8dc68dca8a2f}", + "showInAdvancedViewOnly": true, + "uSNChanged": 12589, + "uSNCreated": 12589, + "whenChanged": "2026-03-31 12:13:29+00:00", + "whenCreated": "2026-03-31 12:13:29+00:00" + }, + "dn": "CN=Domain System Volume,CN=DFSR-GlobalSettings,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "Domain System Volume" + ], + "dSCorePropagationData": [ + "16010101000000.0Z" + ], + "distinguishedName": [ + "CN=Domain System Volume,CN=DFSR-GlobalSettings,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "msDFSR-ReplicationGroupType": [ + "1" + ], + "name": [ + "Domain System Volume" + ], + "objectCategory": [ + "CN=ms-DFSR-ReplicationGroup,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "msDFSR-ReplicationGroup" + ], + "objectGUID": [ + { + "encoded": "FDgZjMoahUaPLY3GjcqKLw==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "12589" + ], + "uSNCreated": [ + "12589" + ], + "whenChanged": [ + "20260331121329.0Z" + ], + "whenCreated": [ + "20260331121329.0Z" + ] + } + }, + { + "attributes": { + "cn": "Content", + "dSCorePropagationData": [ + "1601-01-01 00:00:00+00:00" + ], + "distinguishedName": "CN=Content,CN=Domain System Volume,CN=DFSR-GlobalSettings,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "Content", + "objectCategory": "CN=ms-DFSR-Content,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "msDFSR-Content" + ], + "objectGUID": "{8682ed09-2bd9-480b-85aa-45705cea1f7d}", + "showInAdvancedViewOnly": true, + "uSNChanged": 12590, + "uSNCreated": 12590, + "whenChanged": "2026-03-31 12:13:29+00:00", + "whenCreated": "2026-03-31 12:13:29+00:00" + }, + "dn": "CN=Content,CN=Domain System Volume,CN=DFSR-GlobalSettings,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "Content" + ], + "dSCorePropagationData": [ + "16010101000000.0Z" + ], + "distinguishedName": [ + "CN=Content,CN=Domain System Volume,CN=DFSR-GlobalSettings,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "Content" + ], + "objectCategory": [ + "CN=ms-DFSR-Content,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "msDFSR-Content" + ], + "objectGUID": [ + { + "encoded": "Ce2ChtkrC0iFqkVwXOoffQ==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "12590" + ], + "uSNCreated": [ + "12590" + ], + "whenChanged": [ + "20260331121329.0Z" + ], + "whenCreated": [ + "20260331121329.0Z" + ] + } + }, + { + "attributes": { + "cn": "SYSVOL Share", + "dSCorePropagationData": [ + "1601-01-01 00:00:00+00:00" + ], + "distinguishedName": "CN=SYSVOL Share,CN=Content,CN=Domain System Volume,CN=DFSR-GlobalSettings,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "msDFSR-DirectoryFilter": "DO_NOT_REMOVE_NtFrs_PreInstall_Directory,NtFrs_PreExisting___See_EventLog", + "msDFSR-FileFilter": "~*,*.TMP,*.BAK", + "name": "SYSVOL Share", + "objectCategory": "CN=ms-DFSR-ContentSet,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "msDFSR-ContentSet" + ], + "objectGUID": "{1abc8a38-40d6-4d16-9fa6-885ec2862e2a}", + "showInAdvancedViewOnly": true, + "uSNChanged": 12591, + "uSNCreated": 12591, + "whenChanged": "2026-03-31 12:13:29+00:00", + "whenCreated": "2026-03-31 12:13:29+00:00" + }, + "dn": "CN=SYSVOL Share,CN=Content,CN=Domain System Volume,CN=DFSR-GlobalSettings,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "SYSVOL Share" + ], + "dSCorePropagationData": [ + "16010101000000.0Z" + ], + "distinguishedName": [ + "CN=SYSVOL Share,CN=Content,CN=Domain System Volume,CN=DFSR-GlobalSettings,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "msDFSR-DirectoryFilter": [ + "DO_NOT_REMOVE_NtFrs_PreInstall_Directory,NtFrs_PreExisting___See_EventLog" + ], + "msDFSR-FileFilter": [ + "~*,*.TMP,*.BAK" + ], + "name": [ + "SYSVOL Share" + ], + "objectCategory": [ + "CN=ms-DFSR-ContentSet,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "msDFSR-ContentSet" + ], + "objectGUID": [ + { + "encoded": "OIq8GtZAFk2fpohewoYuKg==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "12591" + ], + "uSNCreated": [ + "12591" + ], + "whenChanged": [ + "20260331121329.0Z" + ], + "whenCreated": [ + "20260331121329.0Z" + ] + } + }, + { + "attributes": { + "cn": "Topology", + "dSCorePropagationData": [ + "1601-01-01 00:00:00+00:00" + ], + "distinguishedName": "CN=Topology,CN=Domain System Volume,CN=DFSR-GlobalSettings,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "Topology", + "objectCategory": "CN=ms-DFSR-Topology,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "msDFSR-Topology" + ], + "objectGUID": "{7ae366da-fbd4-4ab5-aca6-5c2b41a5bdd7}", + "showInAdvancedViewOnly": true, + "uSNChanged": 12592, + "uSNCreated": 12592, + "whenChanged": "2026-03-31 12:13:29+00:00", + "whenCreated": "2026-03-31 12:13:29+00:00" + }, + "dn": "CN=Topology,CN=Domain System Volume,CN=DFSR-GlobalSettings,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "Topology" + ], + "dSCorePropagationData": [ + "16010101000000.0Z" + ], + "distinguishedName": [ + "CN=Topology,CN=Domain System Volume,CN=DFSR-GlobalSettings,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "Topology" + ], + "objectCategory": [ + "CN=ms-DFSR-Topology,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "msDFSR-Topology" + ], + "objectGUID": [ + { + "encoded": "2mbjetT7tUqsplwrQaW91w==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "12592" + ], + "uSNCreated": [ + "12592" + ], + "whenChanged": [ + "20260331121329.0Z" + ], + "whenCreated": [ + "20260331121329.0Z" + ] + } + }, + { + "attributes": { + "cn": "AK-DC", + "dSCorePropagationData": [ + "1601-01-01 00:00:00+00:00" + ], + "distinguishedName": "CN=AK-DC,CN=Topology,CN=Domain System Volume,CN=DFSR-GlobalSettings,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "msDFSR-ComputerReference": "CN=AK-DC,OU=Domain Controllers,DC=t,DC=goauthentik,DC=io", + "msDFSR-MemberReferenceBL": [ + "CN=Domain System Volume,CN=DFSR-LocalSettings,CN=AK-DC,OU=Domain Controllers,DC=t,DC=goauthentik,DC=io" + ], + "name": "AK-DC", + "objectCategory": "CN=ms-DFSR-Member,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "msDFSR-Member" + ], + "objectGUID": "{a5f6aead-c06b-4a5e-aeb2-c625cb97d4ae}", + "serverReference": "CN=NTDS Settings,CN=AK-DC,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "showInAdvancedViewOnly": true, + "uSNChanged": 12595, + "uSNCreated": 12595, + "whenChanged": "2026-03-31 12:13:29+00:00", + "whenCreated": "2026-03-31 12:13:29+00:00" + }, + "dn": "CN=AK-DC,CN=Topology,CN=Domain System Volume,CN=DFSR-GlobalSettings,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "AK-DC" + ], + "dSCorePropagationData": [ + "16010101000000.0Z" + ], + "distinguishedName": [ + "CN=AK-DC,CN=Topology,CN=Domain System Volume,CN=DFSR-GlobalSettings,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "msDFSR-ComputerReference": [ + "CN=AK-DC,OU=Domain Controllers,DC=t,DC=goauthentik,DC=io" + ], + "msDFSR-MemberReferenceBL": [ + "CN=Domain System Volume,CN=DFSR-LocalSettings,CN=AK-DC,OU=Domain Controllers,DC=t,DC=goauthentik,DC=io" + ], + "name": [ + "AK-DC" + ], + "objectCategory": [ + "CN=ms-DFSR-Member,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "msDFSR-Member" + ], + "objectGUID": [ + { + "encoded": "ra72pWvAXkqussYly5fUrg==", + "encoding": "base64" + } + ], + "serverReference": [ + "CN=NTDS Settings,CN=AK-DC,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "12595" + ], + "uSNCreated": [ + "12595" + ], + "whenChanged": [ + "20260331121329.0Z" + ], + "whenCreated": [ + "20260331121329.0Z" + ] + } + }, + { + "attributes": { + "cn": "DFSR-LocalSettings", + "dSCorePropagationData": [ + "2026-03-31 12:13:29+00:00", + "1601-01-01 00:00:00+00:00" + ], + "distinguishedName": "CN=DFSR-LocalSettings,CN=AK-DC,OU=Domain Controllers,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "msDFSR-Flags": 48, + "msDFSR-Version": "1.0.0.0", + "name": "DFSR-LocalSettings", + "objectCategory": "CN=ms-DFSR-LocalSettings,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "msDFSR-LocalSettings" + ], + "objectGUID": "{ac0be2df-4b87-4593-a79e-3d098a61c932}", + "showInAdvancedViewOnly": true, + "uSNChanged": 12770, + "uSNCreated": 12596, + "whenChanged": "2026-03-31 12:18:30+00:00", + "whenCreated": "2026-03-31 12:13:29+00:00" + }, + "dn": "CN=DFSR-LocalSettings,CN=AK-DC,OU=Domain Controllers,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "DFSR-LocalSettings" + ], + "dSCorePropagationData": [ + "20260331121329.0Z", + "16010101000000.0Z" + ], + "distinguishedName": [ + "CN=DFSR-LocalSettings,CN=AK-DC,OU=Domain Controllers,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "msDFSR-Flags": [ + "48" + ], + "msDFSR-Version": [ + "1.0.0.0" + ], + "name": [ + "DFSR-LocalSettings" + ], + "objectCategory": [ + "CN=ms-DFSR-LocalSettings,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "msDFSR-LocalSettings" + ], + "objectGUID": [ + { + "encoded": "3+ILrIdLk0Wnnj0JimHJMg==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "12770" + ], + "uSNCreated": [ + "12596" + ], + "whenChanged": [ + "20260331121830.0Z" + ], + "whenCreated": [ + "20260331121329.0Z" + ] + } + }, + { + "attributes": { + "cn": "Domain System Volume", + "dSCorePropagationData": [ + "1601-01-01 00:00:00+00:00" + ], + "distinguishedName": "CN=Domain System Volume,CN=DFSR-LocalSettings,CN=AK-DC,OU=Domain Controllers,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "msDFSR-MemberReference": "CN=AK-DC,CN=Topology,CN=Domain System Volume,CN=DFSR-GlobalSettings,CN=System,DC=t,DC=goauthentik,DC=io", + "msDFSR-ReplicationGroupGuid": { + "encoded": "FDgZjMoahUaPLY3GjcqKLw==", + "encoding": "base64" + }, + "name": "Domain System Volume", + "objectCategory": "CN=ms-DFSR-Subscriber,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "msDFSR-Subscriber" + ], + "objectGUID": "{3e150088-43b9-4dbd-b3ce-811259a65167}", + "showInAdvancedViewOnly": true, + "uSNChanged": 12599, + "uSNCreated": 12599, + "whenChanged": "2026-03-31 12:13:29+00:00", + "whenCreated": "2026-03-31 12:13:29+00:00" + }, + "dn": "CN=Domain System Volume,CN=DFSR-LocalSettings,CN=AK-DC,OU=Domain Controllers,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "Domain System Volume" + ], + "dSCorePropagationData": [ + "16010101000000.0Z" + ], + "distinguishedName": [ + "CN=Domain System Volume,CN=DFSR-LocalSettings,CN=AK-DC,OU=Domain Controllers,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "msDFSR-MemberReference": [ + "CN=AK-DC,CN=Topology,CN=Domain System Volume,CN=DFSR-GlobalSettings,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "msDFSR-ReplicationGroupGuid": [ + { + "encoded": "FDgZjMoahUaPLY3GjcqKLw==", + "encoding": "base64" + } + ], + "name": [ + "Domain System Volume" + ], + "objectCategory": [ + "CN=ms-DFSR-Subscriber,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "msDFSR-Subscriber" + ], + "objectGUID": [ + { + "encoded": "iAAVPrlDvU2zzoESWaZRZw==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "12599" + ], + "uSNCreated": [ + "12599" + ], + "whenChanged": [ + "20260331121329.0Z" + ], + "whenCreated": [ + "20260331121329.0Z" + ] + } + }, + { + "attributes": { + "cn": "SYSVOL Subscription", + "dSCorePropagationData": [ + "1601-01-01 00:00:00+00:00" + ], + "distinguishedName": "CN=SYSVOL Subscription,CN=Domain System Volume,CN=DFSR-LocalSettings,CN=AK-DC,OU=Domain Controllers,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "msDFSR-ContentSetGuid": { + "encoded": "OIq8GtZAFk2fpohewoYuKg==", + "encoding": "base64" + }, + "msDFSR-Enabled": true, + "msDFSR-Options": 0, + "msDFSR-ReadOnly": false, + "msDFSR-ReplicationGroupGuid": { + "encoded": "FDgZjMoahUaPLY3GjcqKLw==", + "encoding": "base64" + }, + "msDFSR-RootPath": "C:\\WINDOWS\\SYSVOL\\domain", + "msDFSR-StagingPath": "C:\\WINDOWS\\SYSVOL\\staging areas\\t.goauthentik.io", + "name": "SYSVOL Subscription", + "objectCategory": "CN=ms-DFSR-Subscription,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "msDFSR-Subscription" + ], + "objectGUID": "{ebb4cbeb-661d-4caf-aa1b-cb3693ba4145}", + "showInAdvancedViewOnly": true, + "uSNChanged": 12771, + "uSNCreated": 12600, + "whenChanged": "2026-03-31 12:18:30+00:00", + "whenCreated": "2026-03-31 12:13:29+00:00" + }, + "dn": "CN=SYSVOL Subscription,CN=Domain System Volume,CN=DFSR-LocalSettings,CN=AK-DC,OU=Domain Controllers,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "SYSVOL Subscription" + ], + "dSCorePropagationData": [ + "16010101000000.0Z" + ], + "distinguishedName": [ + "CN=SYSVOL Subscription,CN=Domain System Volume,CN=DFSR-LocalSettings,CN=AK-DC,OU=Domain Controllers,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "msDFSR-ContentSetGuid": [ + { + "encoded": "OIq8GtZAFk2fpohewoYuKg==", + "encoding": "base64" + } + ], + "msDFSR-Enabled": [ + "TRUE" + ], + "msDFSR-Options": [ + "0" + ], + "msDFSR-ReadOnly": [ + "FALSE" + ], + "msDFSR-ReplicationGroupGuid": [ + { + "encoded": "FDgZjMoahUaPLY3GjcqKLw==", + "encoding": "base64" + } + ], + "msDFSR-RootPath": [ + "C:\\WINDOWS\\SYSVOL\\domain" + ], + "msDFSR-StagingPath": [ + "C:\\WINDOWS\\SYSVOL\\staging areas\\t.goauthentik.io" + ], + "name": [ + "SYSVOL Subscription" + ], + "objectCategory": [ + "CN=ms-DFSR-Subscription,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "msDFSR-Subscription" + ], + "objectGUID": [ + { + "encoded": "68u06x1mr0yqG8s2k7pBRQ==", + "encoding": "base64" + } + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "12771" + ], + "uSNCreated": [ + "12600" + ], + "whenChanged": [ + "20260331121830.0Z" + ], + "whenCreated": [ + "20260331121329.0Z" + ] + } + }, + { + "attributes": { + "cn": "BCKUPKEY_d89d59cb-a731-4c99-b244-b1cc404001aa Secret", + "dSCorePropagationData": [ + "1601-01-01 00:00:00+00:00" + ], + "distinguishedName": "CN=BCKUPKEY_d89d59cb-a731-4c99-b244-b1cc404001aa Secret,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "isCriticalSystemObject": true, + "lastSetTime": 134194346097088475, + "name": "BCKUPKEY_d89d59cb-a731-4c99-b244-b1cc404001aa Secret", + "objectCategory": "CN=Secret,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "leaf", + "secret" + ], + "objectGUID": "{897eadc7-6cc6-4c28-8e8e-919500f992d6}", + "priorSetTime": 134194346097001462, + "showInAdvancedViewOnly": true, + "uSNChanged": 16399, + "uSNCreated": 16397, + "whenChanged": "2026-03-31 12:43:29+00:00", + "whenCreated": "2026-03-31 12:43:29+00:00" + }, + "dn": "CN=BCKUPKEY_d89d59cb-a731-4c99-b244-b1cc404001aa Secret,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "BCKUPKEY_d89d59cb-a731-4c99-b244-b1cc404001aa Secret" + ], + "dSCorePropagationData": [ + "16010101000000.0Z" + ], + "distinguishedName": [ + "CN=BCKUPKEY_d89d59cb-a731-4c99-b244-b1cc404001aa Secret,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "lastSetTime": [ + "134194346097088475" + ], + "name": [ + "BCKUPKEY_d89d59cb-a731-4c99-b244-b1cc404001aa Secret" + ], + "objectCategory": [ + "CN=Secret,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "leaf", + "secret" + ], + "objectGUID": [ + { + "encoded": "x61+icZsKEyOjpGVAPmS1g==", + "encoding": "base64" + } + ], + "priorSetTime": [ + "134194346097001462" + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "16399" + ], + "uSNCreated": [ + "16397" + ], + "whenChanged": [ + "20260331124329.0Z" + ], + "whenCreated": [ + "20260331124329.0Z" + ] + } + }, + { + "attributes": { + "cn": "BCKUPKEY_P Secret", + "dSCorePropagationData": [ + "1601-01-01 00:00:00+00:00" + ], + "distinguishedName": "CN=BCKUPKEY_P Secret,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "isCriticalSystemObject": true, + "lastSetTime": 134194346097123274, + "name": "BCKUPKEY_P Secret", + "objectCategory": "CN=Secret,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "leaf", + "secret" + ], + "objectGUID": "{4495ac65-910b-4026-b7ed-7b3ca38230ea}", + "priorSetTime": 134194346097105878, + "showInAdvancedViewOnly": true, + "uSNChanged": 16402, + "uSNCreated": 16400, + "whenChanged": "2026-03-31 12:43:29+00:00", + "whenCreated": "2026-03-31 12:43:29+00:00" + }, + "dn": "CN=BCKUPKEY_P Secret,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "BCKUPKEY_P Secret" + ], + "dSCorePropagationData": [ + "16010101000000.0Z" + ], + "distinguishedName": [ + "CN=BCKUPKEY_P Secret,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "lastSetTime": [ + "134194346097123274" + ], + "name": [ + "BCKUPKEY_P Secret" + ], + "objectCategory": [ + "CN=Secret,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "leaf", + "secret" + ], + "objectGUID": [ + { + "encoded": "ZayVRAuRJkC37Xs8o4Iw6g==", + "encoding": "base64" + } + ], + "priorSetTime": [ + "134194346097105878" + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "16402" + ], + "uSNCreated": [ + "16400" + ], + "whenChanged": [ + "20260331124329.0Z" + ], + "whenCreated": [ + "20260331124329.0Z" + ] + } + }, + { + "attributes": { + "cn": "BCKUPKEY_d1ea4c59-5126-4fcd-a052-fe0c52097145 Secret", + "dSCorePropagationData": [ + "1601-01-01 00:00:00+00:00" + ], + "distinguishedName": "CN=BCKUPKEY_d1ea4c59-5126-4fcd-a052-fe0c52097145 Secret,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "isCriticalSystemObject": true, + "lastSetTime": 134194346097993236, + "name": "BCKUPKEY_d1ea4c59-5126-4fcd-a052-fe0c52097145 Secret", + "objectCategory": "CN=Secret,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "leaf", + "secret" + ], + "objectGUID": "{0fece778-edca-4d7b-97aa-83e29bb58d71}", + "priorSetTime": 134194346097975839, + "showInAdvancedViewOnly": true, + "uSNChanged": 16405, + "uSNCreated": 16403, + "whenChanged": "2026-03-31 12:43:29+00:00", + "whenCreated": "2026-03-31 12:43:29+00:00" + }, + "dn": "CN=BCKUPKEY_d1ea4c59-5126-4fcd-a052-fe0c52097145 Secret,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "BCKUPKEY_d1ea4c59-5126-4fcd-a052-fe0c52097145 Secret" + ], + "dSCorePropagationData": [ + "16010101000000.0Z" + ], + "distinguishedName": [ + "CN=BCKUPKEY_d1ea4c59-5126-4fcd-a052-fe0c52097145 Secret,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "lastSetTime": [ + "134194346097993236" + ], + "name": [ + "BCKUPKEY_d1ea4c59-5126-4fcd-a052-fe0c52097145 Secret" + ], + "objectCategory": [ + "CN=Secret,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "leaf", + "secret" + ], + "objectGUID": [ + { + "encoded": "eOfsD8rte02XqoPim7WNcQ==", + "encoding": "base64" + } + ], + "priorSetTime": [ + "134194346097975839" + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "16405" + ], + "uSNCreated": [ + "16403" + ], + "whenChanged": [ + "20260331124329.0Z" + ], + "whenCreated": [ + "20260331124329.0Z" + ] + } + }, + { + "attributes": { + "cn": "BCKUPKEY_PREFERRED Secret", + "dSCorePropagationData": [ + "1601-01-01 00:00:00+00:00" + ], + "distinguishedName": "CN=BCKUPKEY_PREFERRED Secret,CN=System,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "isCriticalSystemObject": true, + "lastSetTime": 134194346098028048, + "name": "BCKUPKEY_PREFERRED Secret", + "objectCategory": "CN=Secret,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "leaf", + "secret" + ], + "objectGUID": "{d2ac965e-e005-4fd0-89ad-cb44195f1894}", + "priorSetTime": 134194346098010654, + "showInAdvancedViewOnly": true, + "uSNChanged": 16408, + "uSNCreated": 16406, + "whenChanged": "2026-03-31 12:43:29+00:00", + "whenCreated": "2026-03-31 12:43:29+00:00" + }, + "dn": "CN=BCKUPKEY_PREFERRED Secret,CN=System,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "BCKUPKEY_PREFERRED Secret" + ], + "dSCorePropagationData": [ + "16010101000000.0Z" + ], + "distinguishedName": [ + "CN=BCKUPKEY_PREFERRED Secret,CN=System,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "isCriticalSystemObject": [ + "TRUE" + ], + "lastSetTime": [ + "134194346098028048" + ], + "name": [ + "BCKUPKEY_PREFERRED Secret" + ], + "objectCategory": [ + "CN=Secret,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "leaf", + "secret" + ], + "objectGUID": [ + { + "encoded": "Xpas0gXg0E+JrctEGV8YlA==", + "encoding": "base64" + } + ], + "priorSetTime": [ + "134194346098010654" + ], + "showInAdvancedViewOnly": [ + "TRUE" + ], + "uSNChanged": [ + "16408" + ], + "uSNCreated": [ + "16406" + ], + "whenChanged": [ + "20260331124329.0Z" + ], + "whenCreated": [ + "20260331124329.0Z" + ] + } + }, + { + "attributes": { + "dSCorePropagationData": [ + "2026-03-31 14:47:33+00:00", + "1601-01-01 00:00:00+00:00" + ], + "distinguishedName": "OU=ak-test,DC=t,DC=goauthentik,DC=io", + "instanceType": 4, + "name": "ak-test", + "objectCategory": "CN=Organizational-Unit,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "organizationalUnit" + ], + "objectGUID": "{6b009d34-a61b-4006-99da-952a06c976dc}", + "ou": [ + "ak-test" + ], + "uSNChanged": 20546, + "uSNCreated": 20545, + "whenChanged": "2026-03-31 14:47:33+00:00", + "whenCreated": "2026-03-31 14:47:33+00:00" + }, + "dn": "OU=ak-test,DC=t,DC=goauthentik,DC=io", + "raw": { + "dSCorePropagationData": [ + "20260331144733.0Z", + "16010101000000.0Z" + ], + "distinguishedName": [ + "OU=ak-test,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "name": [ + "ak-test" + ], + "objectCategory": [ + "CN=Organizational-Unit,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "organizationalUnit" + ], + "objectGUID": [ + { + "encoded": "NJ0AaxumBkCZ2pUqBsl23A==", + "encoding": "base64" + } + ], + "ou": [ + "ak-test" + ], + "uSNChanged": [ + "20546" + ], + "uSNCreated": [ + "20545" + ], + "whenChanged": [ + "20260331144733.0Z" + ], + "whenCreated": [ + "20260331144733.0Z" + ] + } + }, + { + "attributes": { + "accountExpires": "9999-12-31 23:59:59.999999+00:00", + "badPasswordTime": "1601-01-01 00:00:00+00:00", + "badPwdCount": 0, + "cn": "Deactivated Account", + "codePage": 0, + "countryCode": 0, + "dSCorePropagationData": [ + "1601-01-01 00:00:00+00:00" + ], + "distinguishedName": "CN=Deactivated Account,OU=ak-test,DC=t,DC=goauthentik,DC=io", + "givenName": "Deactivated", + "instanceType": 4, + "lastLogoff": "1601-01-01 00:00:00+00:00", + "lastLogon": "1601-01-01 00:00:00+00:00", + "logonCount": 0, + "name": "Deactivated Account", + "objectCategory": "CN=Person,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "person", + "organizationalPerson", + "user" + ], + "objectGUID": "{466c33da-6f75-4362-beb1-f02d282ae2e6}", + "objectSid": "S-1-5-21-1955698215-2946288202-2760262721-1111", + "primaryGroupID": 513, + "pwdLastSet": "1601-01-01 00:00:00+00:00", + "sAMAccountName": "deactivated.a", + "sAMAccountType": 805306368, + "sn": "Account", + "uSNChanged": 20563, + "uSNCreated": 20562, + "userAccountControl": 514, + "userPrincipalName": "deactivated.a@t.goauthentik.io", + "whenChanged": "2026-03-31 14:57:08+00:00", + "whenCreated": "2026-03-31 14:57:08+00:00" + }, + "dn": "CN=Deactivated Account,OU=ak-test,DC=t,DC=goauthentik,DC=io", + "raw": { + "accountExpires": [ + "9223372036854775807" + ], + "badPasswordTime": [ + "0" + ], + "badPwdCount": [ + "0" + ], + "cn": [ + "Deactivated Account" + ], + "codePage": [ + "0" + ], + "countryCode": [ + "0" + ], + "dSCorePropagationData": [ + "16010101000000.0Z" + ], + "distinguishedName": [ + "CN=Deactivated Account,OU=ak-test,DC=t,DC=goauthentik,DC=io" + ], + "givenName": [ + "Deactivated" + ], + "instanceType": [ + "4" + ], + "lastLogoff": [ + "0" + ], + "lastLogon": [ + "0" + ], + "logonCount": [ + "0" + ], + "name": [ + "Deactivated Account" + ], + "objectCategory": [ + "CN=Person,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "person", + "organizationalPerson", + "user" + ], + "objectGUID": [ + { + "encoded": "2jNsRnVvYkO+sfAtKCri5g==", + "encoding": "base64" + } + ], + "objectSid": [ + { + "encoded": "AQUAAAAAAAUVAAAAJ5aRdErKnK9BRIakVwQAAA==", + "encoding": "base64" + } + ], + "primaryGroupID": [ + "513" + ], + "pwdLastSet": [ + "0" + ], + "sAMAccountName": [ + "deactivated.a" + ], + "sAMAccountType": [ + "805306368" + ], + "sn": [ + "Account" + ], + "uSNChanged": [ + "20563" + ], + "uSNCreated": [ + "20562" + ], + "userAccountControl": [ + "514" + ], + "userPrincipalName": [ + "deactivated.a@t.goauthentik.io" + ], + "whenChanged": [ + "20260331145708.0Z" + ], + "whenCreated": [ + "20260331145708.0Z" + ] + } + }, + { + "attributes": { + "cn": "Test Group", + "dSCorePropagationData": [ + "1601-01-01 00:00:00+00:00" + ], + "distinguishedName": "CN=Test Group,OU=ak-test,DC=t,DC=goauthentik,DC=io", + "groupType": -2147483646, + "instanceType": 4, + "name": "Test Group", + "objectCategory": "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "group" + ], + "objectGUID": "{c7faf12c-dc10-4a44-ab64-a6783a0574d2}", + "objectSid": "S-1-5-21-1955698215-2946288202-2760262721-1112", + "sAMAccountName": "Test Group", + "sAMAccountType": 268435456, + "uSNChanged": 20569, + "uSNCreated": 20565, + "whenChanged": "2026-03-31 14:57:47+00:00", + "whenCreated": "2026-03-31 14:57:47+00:00" + }, + "dn": "CN=Test Group,OU=ak-test,DC=t,DC=goauthentik,DC=io", + "raw": { + "cn": [ + "Test Group" + ], + "dSCorePropagationData": [ + "16010101000000.0Z" + ], + "distinguishedName": [ + "CN=Test Group,OU=ak-test,DC=t,DC=goauthentik,DC=io" + ], + "groupType": [ + "-2147483646" + ], + "instanceType": [ + "4" + ], + "name": [ + "Test Group" + ], + "objectCategory": [ + "CN=Group,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "group" + ], + "objectGUID": [ + { + "encoded": "LPH6xxDcREqrZKZ4OgV00g==", + "encoding": "base64" + } + ], + "objectSid": [ + { + "encoded": "AQUAAAAAAAUVAAAAJ5aRdErKnK9BRIakWAQAAA==", + "encoding": "base64" + } + ], + "sAMAccountName": [ + "Test Group" + ], + "sAMAccountType": [ + "268435456" + ], + "uSNChanged": [ + "20569" + ], + "uSNCreated": [ + "20565" + ], + "whenChanged": [ + "20260331145747.0Z" + ], + "whenCreated": [ + "20260331145747.0Z" + ] + } + }, + { + "attributes": { + "accountExpires": "9999-12-31 23:59:59.999999+00:00", + "badPasswordTime": "1601-01-01 00:00:00+00:00", + "badPwdCount": 0, + "cn": "Erin M. Hagens", + "codePage": 0, + "countryCode": 0, + "dSCorePropagationData": [ + "1601-01-01 00:00:00+00:00" + ], + "distinguishedName": "CN=Erin M. Hagens,OU=ak-test,DC=t,DC=goauthentik,DC=io", + "givenName": "Erin M.", + "instanceType": 4, + "lastLogoff": "1601-01-01 00:00:00+00:00", + "lastLogon": "1601-01-01 00:00:00+00:00", + "logonCount": 0, + "name": "Erin M. Hagens", + "objectCategory": "CN=Person,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "objectClass": [ + "top", + "person", + "organizationalPerson", + "user" + ], + "objectGUID": "{f342ff34-2a21-4f77-92be-af5774d7fbe4}", + "objectSid": "S-1-5-21-1955698215-2946288202-2760262721-1114", + "primaryGroupID": 513, + "pwdLastSet": "1601-01-01 00:00:00+00:00", + "sAMAccountName": "erin.h", + "sAMAccountType": 805306368, + "sn": "Hagens", + "uSNChanged": 20592, + "uSNCreated": 20591, + "userAccountControl": 544, + "userPrincipalName": "erin.h@t.goauthentik.io", + "whenChanged": "2026-03-31 15:58:25+00:00", + "whenCreated": "2026-03-31 15:58:25+00:00" + }, + "dn": "CN=Erin M. Hagens,OU=ak-test,DC=t,DC=goauthentik,DC=io", + "raw": { + "accountExpires": [ + "9223372036854775807" + ], + "badPasswordTime": [ + "0" + ], + "badPwdCount": [ + "0" + ], + "cn": [ + "Erin M. Hagens" + ], + "codePage": [ + "0" + ], + "countryCode": [ + "0" + ], + "dSCorePropagationData": [ + "16010101000000.0Z" + ], + "distinguishedName": [ + "CN=Erin M. Hagens,OU=ak-test,DC=t,DC=goauthentik,DC=io" + ], + "givenName": [ + "Erin M." + ], + "instanceType": [ + "4" + ], + "lastLogoff": [ + "0" + ], + "lastLogon": [ + "0" + ], + "logonCount": [ + "0" + ], + "name": [ + "Erin M. Hagens" + ], + "objectCategory": [ + "CN=Person,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "person", + "organizationalPerson", + "user" + ], + "objectGUID": [ + { + "encoded": "NP9C8yEqd0+Svq9XdNf75A==", + "encoding": "base64" + } + ], + "objectSid": [ + { + "encoded": "AQUAAAAAAAUVAAAAJ5aRdErKnK9BRIakWgQAAA==", + "encoding": "base64" + } + ], + "primaryGroupID": [ + "513" + ], + "pwdLastSet": [ + "0" + ], + "sAMAccountName": [ + "erin.h" + ], + "sAMAccountType": [ + "805306368" + ], + "sn": [ + "Hagens" + ], + "uSNChanged": [ + "20592" + ], + "uSNCreated": [ + "20591" + ], + "userAccountControl": [ + "544" + ], + "userPrincipalName": [ + "erin.h@t.goauthentik.io" + ], + "whenChanged": [ + "20260331155825.0Z" + ], + "whenCreated": [ + "20260331155825.0Z" + ] + } + } + ] +} \ No newline at end of file diff --git a/authentik/sources/ldap/tests/fixtures/ms_ad_2025/info.json b/authentik/sources/ldap/tests/fixtures/ms_ad_2025/info.json new file mode 100644 index 0000000000..690d6bb35a --- /dev/null +++ b/authentik/sources/ldap/tests/fixtures/ms_ad_2025/info.json @@ -0,0 +1,154 @@ +{ + "raw": { + "altServer": [], + "configurationNamingContext": [ + "CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "currentTime": [ + "20260331161910.0Z" + ], + "defaultNamingContext": [ + "DC=t,DC=goauthentik,DC=io" + ], + "dnsHostName": [ + "ak-dc.t.goauthentik.io" + ], + "domainControllerFunctionality": [ + "10" + ], + "domainFunctionality": [ + "10" + ], + "dsServiceName": [ + "CN=NTDS Settings,CN=AK-DC,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "forestFunctionality": [ + "10" + ], + "highestCommittedUSN": [ + "20594" + ], + "isGlobalCatalogReady": [ + "TRUE" + ], + "isSynchronized": [ + "TRUE" + ], + "ldapServiceName": [ + "t.goauthentik.io:ak-dc$@T.GOAUTHENTIK.IO" + ], + "namingContexts": [ + "DC=t,DC=goauthentik,DC=io", + "CN=Configuration,DC=t,DC=goauthentik,DC=io", + "CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "DC=DomainDnsZones,DC=t,DC=goauthentik,DC=io", + "DC=ForestDnsZones,DC=t,DC=goauthentik,DC=io" + ], + "rootDomainNamingContext": [ + "DC=t,DC=goauthentik,DC=io" + ], + "schemaNamingContext": [ + "CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "serverName": [ + "CN=AK-DC,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "subschemaSubentry": [ + "CN=Aggregate,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "supportedCapabilities": [ + "1.2.840.113556.1.4.800", + "1.2.840.113556.1.4.1670", + "1.2.840.113556.1.4.1791", + "1.2.840.113556.1.4.1935", + "1.2.840.113556.1.4.2080", + "1.2.840.113556.1.4.2237" + ], + "supportedControl": [ + "1.2.840.113556.1.4.319", + "1.2.840.113556.1.4.801", + "1.2.840.113556.1.4.473", + "1.2.840.113556.1.4.528", + "1.2.840.113556.1.4.417", + "1.2.840.113556.1.4.619", + "1.2.840.113556.1.4.841", + "1.2.840.113556.1.4.529", + "1.2.840.113556.1.4.805", + "1.2.840.113556.1.4.521", + "1.2.840.113556.1.4.970", + "1.2.840.113556.1.4.1338", + "1.2.840.113556.1.4.474", + "1.2.840.113556.1.4.1339", + "1.2.840.113556.1.4.1340", + "1.2.840.113556.1.4.1413", + "2.16.840.1.113730.3.4.9", + "2.16.840.1.113730.3.4.10", + "1.2.840.113556.1.4.1504", + "1.2.840.113556.1.4.1852", + "1.2.840.113556.1.4.802", + "1.2.840.113556.1.4.1907", + "1.2.840.113556.1.4.1948", + "1.2.840.113556.1.4.1974", + "1.2.840.113556.1.4.1341", + "1.2.840.113556.1.4.2026", + "1.2.840.113556.1.4.2064", + "1.2.840.113556.1.4.2065", + "1.2.840.113556.1.4.2066", + "1.2.840.113556.1.4.2090", + "1.2.840.113556.1.4.2205", + "1.2.840.113556.1.4.2204", + "1.2.840.113556.1.4.2206", + "1.2.840.113556.1.4.2211", + "1.2.840.113556.1.4.2239", + "1.2.840.113556.1.4.2255", + "1.2.840.113556.1.4.2256", + "1.2.840.113556.1.4.2309", + "1.2.840.113556.1.4.2330", + "1.2.840.113556.1.4.2354" + ], + "supportedExtension": [ + "1.3.6.1.4.1.1466.20037", + "1.3.6.1.4.1.1466.101.119.1", + "1.2.840.113556.1.4.1781", + "1.3.6.1.4.1.4203.1.11.3", + "1.2.840.113556.1.4.2212" + ], + "supportedFeatures": [], + "supportedLDAPPolicies": [ + "MaxPoolThreads", + "MaxPercentDirSyncRequests", + "MaxDatagramRecv", + "MaxReceiveBuffer", + "InitRecvTimeout", + "MaxConnections", + "MaxConnIdleTime", + "MaxPageSize", + "MaxBatchReturnMessages", + "MaxQueryDuration", + "MaxDirSyncDuration", + "MaxTempTableSize", + "MaxResultSetSize", + "MinResultSets", + "MaxResultSetsPerConn", + "MaxNotificationPerConn", + "MaxValRange", + "MaxValRangeTransitive", + "ThreadMemoryLimit", + "SystemMemoryLimitPercent", + "SecurityDescriptorWarningSize" + ], + "supportedLDAPVersion": [ + "3", + "2" + ], + "supportedSASLMechanisms": [ + "GSSAPI", + "GSS-SPNEGO", + "EXTERNAL", + "DIGEST-MD5" + ], + "vendorName": [], + "vendorVersion": [] + }, + "type": "DsaInfo" +} \ No newline at end of file diff --git a/authentik/sources/ldap/tests/fixtures/ms_ad_2025/schema.json b/authentik/sources/ldap/tests/fixtures/ms_ad_2025/schema.json new file mode 100644 index 0000000000..8dddae5b71 --- /dev/null +++ b/authentik/sources/ldap/tests/fixtures/ms_ad_2025/schema.json @@ -0,0 +1,2110 @@ +{ + "raw": { + "attributeTypes": [ + "( 1.2.840.113556.1.4.149 NAME 'attributeSecurityGUID' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1703 NAME 'msDS-FilterContainers' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.655 NAME 'legacyExchangeDN' SYNTAX '1.2.840.113556.1.4.905' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.21 NAME 'cOMProgID' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.2147 NAME 'msDNS-PropagationTime' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.6.18.1.301 NAME 'msSFU30KeyAttributes' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.686 NAME 'domainID' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' SINGLE-VALUE )", + "( 1.2.840.113556.1.6.13.3.23 NAME 'msDFSR-ReplicationGroupGuid' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.818 NAME 'productCode' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.3.6.1.1.1.1.18 NAME 'oncRpcNumber' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.221 NAME 'sAMAccountName' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.375 NAME 'systemFlags' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.814 NAME 'msiScript' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.880 NAME 'fRSTimeLastCommand' SYNTAX '1.3.6.1.4.1.1466.115.121.1.53' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1850 NAME 'msDS-TopQuotaUsage' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.2052 NAME 'msDS-OIDToGroupLinkBl' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.965 NAME 'mSMQSiteName' SYNTAX '1.2.840.113556.1.4.905' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1373 NAME 'mS-SQL-Clustered' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.624 NAME 'ipsecOwnersReference' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' )", + "( 1.2.840.113556.1.4.1353 NAME 'localizationDisplayId' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1637 NAME 'msWMI-StringValidValues' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.2103 NAME 'msDS-MembersOfResourcePropertyList' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' )", + "( 1.2.840.113556.1.4.480 NAME 'defaultGroup' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.55 NAME 'dBCSPwd' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1330 NAME 'pKICriticalExtensions' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.93 NAME 'pwdProperties' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1840 NAME 'msDS-ObjectReference' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' )", + "( 1.2.840.113556.1.2.7 NAME 'subRefs' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.845 NAME 'msiScriptName' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2242 NAME 'msDS-MaximumRegistrationInactivityPeriod' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 0.9.2342.19200300.100.1.7 NAME 'photo' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' )", + "( 1.2.840.113556.1.4.713 NAME 'optionsLocation' SYNTAX '1.3.6.1.4.1.1466.115.121.1.44' )", + "( 1.2.840.113556.1.4.942 NAME 'mSMQVersion' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2310 NAME 'msDS-ExternalDirectoryObjectId' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2138 NAME 'msDNS-NSEC3Iterations' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.471 NAME 'trustParent' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1237 NAME 'mSMQRoutingService' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.649 NAME 'primaryInternationalISDNNumber' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1627 NAME 'msWMI-ID' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2006 NAME 'msTSExpireDate4' SYNTAX '1.3.6.1.4.1.1466.115.121.1.24' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2003 NAME 'msTSExpireDate3' SYNTAX '1.3.6.1.4.1.1466.115.121.1.24' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2000 NAME 'msTSExpireDate2' SYNTAX '1.3.6.1.4.1.1466.115.121.1.24' SINGLE-VALUE )", + "( 0.9.2342.19200300.100.1.12 NAME 'documentTitle' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113549.1.9.8 NAME 'unstructuredAddress' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.6.18.1.340 NAME 'msSFU30Domains' SYNTAX '1.3.6.1.4.1.1466.115.121.1.26' )", + "( 1.2.840.113556.1.4.2069 NAME 'msDS-EnabledFeatureBL' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' NO-USER-MODIFICATION )", + "( 1.3.6.1.1.1.1.6 NAME 'shadowMin' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1412 NAME 'primaryGroupToken' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.358 NAME 'netbootInitialization' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2136 NAME 'msDNS-NSEC3HashAlgorithm' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.2.1 NAME 'instanceType' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.846 NAME 'msiScriptSize' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.6.13.3.20 NAME 'msDFSR-RdcMinFileSizeInKb' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.663 NAME 'partialAttributeDeletionList' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.2078 NAME 'msTSSecondaryDesktopBL' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.1995 NAME 'msTSManagingLS' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.371 NAME 'rIDAllocationPool' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.677 NAME 'replTopologyStayOfExecution' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.3 NAME 'replPropertyMetaData' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.2036 NAME 'msDFS-Commentv2' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.329 NAME 'versionNumberLo' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.234 NAME 'printEndTime' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1673 NAME 'msPKI-OID-User-Notice' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.684 NAME 'certificateAuthorityObject' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.290 NAME 'printNumberUp' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1625 NAME 'msWMI-ClassDefinition' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1784 NAME 'msDS-LogonTimeSyncInterval' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1910 NAME 'unixUserPassword' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' )", + "( 1.2.840.113556.1.4.129 NAME 'trustAuthIncoming' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1319 NAME 'aCSNonReservedTokenSize' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1628 NAME 'msWMI-IntDefault' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1249 NAME 'proxiedObjectName' SYNTAX '1.2.840.113556.1.4.903' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.2173 NAME 'msKds-PublicKeyLength' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 2.5.4.27 NAME 'destinationIndicator' SYNTAX '1.3.6.1.4.1.1466.115.121.1.44' )", + "( 1.2.840.113556.1.4.2187 NAME 'msDS-ValueTypeReference' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.897 NAME 'aCSMaxAggregatePeakRatePerUser' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1335 NAME 'pKIEnrollmentAccess' SYNTAX '1.2.840.113556.1.4.907' )", + "( 1.2.840.113556.1.4.1708 NAME 'msDS-ReplValueMetaData' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.1690 NAME 'adminMultiselectPropertyPages' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 2.5.4.35 NAME 'userPassword' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' )", + "( 1.2.840.113556.1.4.2200 NAME 'msDS-GroupMSAMembership' SYNTAX '1.2.840.113556.1.4.907' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.500 NAME 'fRSServiceCommand' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 2.16.840.1.113730.3.1.1 NAME 'carLicense' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.2038 NAME 'msDFS-TargetListv2' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.6.13.3.27 NAME 'msDFSR-DeletedSizeInMb' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1648 NAME 'msWMI-TargetPath' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.3.6.1.1.1.1.5 NAME 'shadowLastChange' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1793 NAME 'msDS-NonMembers' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' )", + "( 1.3.6.1.1.1.1.22 NAME 'macAddress' SYNTAX '1.3.6.1.4.1.1466.115.121.1.26' )", + "( 1.2.840.113556.1.4.265 NAME 'notes' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2274 NAME 'msDS-CloudIssuerPublicCertificates' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' )", + "( 1.2.840.113556.1.4.1982 NAME 'msTSMaxConnectionTime' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1959 NAME 'msDS-isGC' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2315 NAME 'msDS-KeyId' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1424 NAME 'msCOM-PartitionSetLink' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.516 NAME 'serverReferenceBL' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.1977 NAME 'msTSHomeDirectory' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1369 NAME 'mS-SQL-ServiceAccount' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.530 NAME 'nonSecurityMember' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' )", + "( 1.2.840.113556.1.4.506 NAME 'objectCount' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1386 NAME 'mS-SQL-GPSLongitude' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1437 NAME 'msPKI-Supersede-Templates' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.1707 NAME 'msDS-ReplAttributeMetaData' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.652 NAME 'assistant' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1644 NAME 'msWMI-SourceOrganization' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1443 NAME 'msDS-Site-Affinity' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' )", + "( 1.2.840.113556.1.4.286 NAME 'printRateUnit' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1444 NAME 'msDS-Preferred-GC-Site' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.589 NAME 'meetingBandwidth' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' )", + "( 1.2.840.113556.1.4.1706 NAME 'msDS-NCReplOutboundNeighbors' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.1709 NAME 'msDS-HasInstantiatedNCs' SYNTAX '1.2.840.113556.1.4.903' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.79 NAME 'minPwdLength' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1952 NAME 'ms-net-ieee-80211-GP-PolicyData' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.865 NAME 'pekList' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 2.5.4.26 NAME 'registeredAddress' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' )", + "( 1.2.840.113556.1.4.2179 NAME 'msKds-CreateTime' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2149 NAME 'msDNS-NSEC3CurrentSalt' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1815 NAME 'msDS-TasksForAzRoleBL' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.2148 NAME 'msDNS-NSEC3UserSalt' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2197 NAME 'msDS-ManagedPasswordId' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.1407 NAME 'mS-SQL-ThirdParty' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.510 NAME 'serviceBindingInformation' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.1416 NAME 'mSMQSiteNameEx' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1426 NAME 'msCOM-UserPartitionSetLink' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2374 NAME 'msDS-SupersededManagedAccountLinkBL' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1303 NAME 'tokenGroupsNoGCAcceptable' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' )", + "( 1.2.840.113556.1.2.596 NAME 'msExchHouseIdentifier' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2233 NAME 'msDS-cloudExtensionAttribute20' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.335 NAME 'currentLocation' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 0.9.2342.19200300.100.1.20 NAME 'homePhone' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1441 NAME 'msDS-Cached-Membership' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.6.13.3.14 NAME 'msDFSR-Schedule' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.622 NAME 'ipsecDataType' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.645 NAME 'userCert' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.367 NAME 'rpcNsCodeset' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.223 NAME 'serverName' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.950 NAME 'mSMQServices' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2250 NAME 'msDS-DeviceOSVersion' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.332 NAME 'birthLocation' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1440 NAME 'msDs-Schema-Extensions' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.1348 NAME 'gPCMachineExtensionNames' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1833 NAME 'msDS-ExternalKey' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.858 NAME 'netbootTools' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.1717 NAME 'msDS-AdditionalDnsHostName' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.770 NAME 'aCSEnableACSService' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.170 NAME 'systemOnly' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.32 NAME 'domainPolicyObject' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.766 NAME 'aCSAllocableRSVPBandwidth' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.2.9 NAME 'helpData32' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1805 NAME 'msDS-AzGenerateAudits' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.276 NAME 'driverVersion' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1317 NAME 'aCSMinimumDelayVariation' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.302 NAME 'sAMAccountType' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.2.610 NAME 'employeeNumber' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.2.30 NAME 'attributeID' SYNTAX '1.3.6.1.4.1.1466.115.121.1.38' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.2322 NAME 'msDS-CustomKeyInformation' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.3.6.1.4.1.1466.101.119.3 NAME 'entryTTL' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1843 NAME 'msDRM-IdentityCertificate' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' )", + "( 1.2.840.113556.1.6.13.3.103 NAME 'msDFSR-ComputerReferenceBL' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' )", + "( 1.2.840.113556.1.4.1989 NAME 'msTSWorkDirectory' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1674 NAME 'msPKI-Certificate-Application-Policy' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.716 NAME 'mscopeId' SYNTAX '1.3.6.1.4.1.1466.115.121.1.44' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.514 NAME 'physicalLocationObject' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.570 NAME 'meetingProtocol' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.2.370 NAME 'objectClassCategory' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.6.13.3.15 NAME 'msDFSR-Keywords' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.812 NAME 'createWizardExt' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.61 NAME 'lockOutObservationWindow' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.750 NAME 'groupType' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1459 NAME 'msDS-Behavior-Version' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.937 NAME 'mSMQSignKey' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.913 NAME 'allowedAttributes' SYNTAX '1.3.6.1.4.1.1466.115.121.1.38' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.2.120 NAME 'uSNChanged' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.340 NAME 'rightsGuid' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.2.277 NAME 'otherHomePhone' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.1309 NAME 'mSMQInterval2' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1439 NAME 'msPKI-Certificate-Policy' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.1308 NAME 'mSMQInterval1' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1383 NAME 'mS-SQL-ConnectionURL' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2176 NAME 'msKds-Version' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.859 NAME 'netbootLocallyInstalledOSes' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.967 NAME 'mSMQSignCertificatesMig' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2232 NAME 'msDS-cloudExtensionAttribute19' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2231 NAME 'msDS-cloudExtensionAttribute18' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2230 NAME 'msDS-cloudExtensionAttribute17' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2229 NAME 'msDS-cloudExtensionAttribute16' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2228 NAME 'msDS-cloudExtensionAttribute15' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2227 NAME 'msDS-cloudExtensionAttribute14' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2226 NAME 'msDS-cloudExtensionAttribute13' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2225 NAME 'msDS-cloudExtensionAttribute12' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2142 NAME 'msDNS-SecureDelegationPollingPeriod' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2224 NAME 'msDS-cloudExtensionAttribute11' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.718 NAME 'dhcpProperties' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' )", + "( 1.2.840.113556.1.4.2223 NAME 'msDS-cloudExtensionAttribute10' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.157 NAME 'serverRole' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1394 NAME 'mS-SQL-AllowAnonymousSubscription' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.563 NAME 'shellPropertyPages' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.1315 NAME 'aCSMinimumPolicedSize' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.273 NAME 'printStatus' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.644 NAME 'showInAddressBook' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' )", + "( 1.2.840.113556.1.4.626 NAME 'ipsecISAKMPReference' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1925 NAME 'msDS-hasFullReplicaNCs' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.940 NAME 'mSMQCSPName' SYNTAX '1.2.840.113556.1.4.905' SINGLE-VALUE )", + "( 1.2.840.113556.1.6.13.3.30 NAME 'msDFSR-MinDurationCacheInMin' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.243 NAME 'printColor' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2193 NAME 'msDS-TDOIngressBL' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' NO-USER-MODIFICATION )", + "( 1.3.6.1.1.1.1.1 NAME 'gidNumber' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1993 NAME 'msTSExpireDate' SYNTAX '1.3.6.1.4.1.1466.115.121.1.24' SINGLE-VALUE )", + "( 2.5.4.2 NAME 'knowledgeInformation' SYNTAX '1.2.840.113556.1.4.905' )", + "( 1.2.840.113556.1.4.908 NAME 'extendedClassInfo' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.953 NAME 'mSMQSiteID' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2040 NAME 'msDFS-LinkSecurityDescriptorv2' SYNTAX '1.2.840.113556.1.4.907' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1343 NAME 'dSUIAdminNotification' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.1700 NAME 'msTAPI-ConferenceBlob' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.486 NAME 'fRSWorkingPath' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.62 NAME 'scriptPath' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1810 NAME 'msDS-TasksForAzTask' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' )", + "( 1.2.840.113556.1.6.13.3.31 NAME 'msDFSR-MaxAgeInCacheInMin' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.19 NAME 'cOMClassID' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 2.16.840.1.113730.3.1.216 NAME 'userPKCS12' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' )", + "( 1.2.840.113556.1.4.108 NAME 'remoteSourceType' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.704 NAME 'dhcpServers' SYNTAX '1.3.6.1.4.1.1466.115.121.1.44' )", + "( 1.2.840.113556.1.4.876 NAME 'fRSMemberReferenceBL' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.2261 NAME 'msDS-DeviceLocation' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.82 NAME 'moniker' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' )", + "( 1.2.840.113556.1.4.289 NAME 'printMediaReady' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.3.6.1.1.1.1.17 NAME 'ipProtocolNumber' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1209 NAME 'shortServerName' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.910 NAME 'fromEntry' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.636 NAME 'privilegeAttributes' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2352 NAME 'msDS-SourceAnchor' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2025 NAME 'msDS-IsUserCachableAtRodc' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1715 NAME 'msDS-SPNSuffixes' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.562 NAME 'adminPropertyPages' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 0.9.2342.19200300.100.1.10 NAME 'manager' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' SINGLE-VALUE )", + "( 2.5.4.49 NAME 'distinguishedName' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.1356 NAME 'validAccesses' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2053 NAME 'msImaging-PSPIdentifier' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.459 NAME 'machineWidePolicy' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' )", + "( 1.2.840.113556.1.4.1403 NAME 'mS-SQL-AllowKnownPullSubscription' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.283 NAME 'assetNumber' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.885 NAME 'terminalServer' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2012 NAME 'msDS-MinimumPasswordAge' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.6.13.3.7 NAME 'msDFSR-ConflictPath' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1831 NAME 'msDS-ByteArray' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' )", + "( 1.2.840.113556.1.4.135 NAME 'trustAuthOutgoing' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2258 NAME 'msDS-RegisteredOwner' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.608 NAME 'queryPolicyBL' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.109 NAME 'replicaSource' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.2296 NAME 'msDS-AssignedAuthNPolicyBL' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.2.402 NAME 'helpData16' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.232 NAME 'defaultPriority' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1388 NAME 'mS-SQL-Version' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.364 NAME 'operatingSystemVersion' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2284 NAME 'msDS-ServiceTGTLifetime' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1460 NAME 'msDS-User-Account-Control-Computed' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.75 NAME 'maxRenewAge' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.285 NAME 'printRate' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.2.615 NAME 'personalTitle' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.911 NAME 'allowedChildClasses' SYNTAX '1.3.6.1.4.1.1466.115.121.1.38' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.1225 NAME 'mSMQPrevSiteGates' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' )", + "( 1.2.840.113556.1.4.2372 NAME 'msDS-DelegatedMSAState' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2131 NAME 'msDNS-SignWithNSEC3' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2007 NAME 'msTSLicenseVersion4' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 0.9.2342.19200300.100.1.13 NAME 'documentVersion' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 0.9.2342.19200300.100.1.3 NAME 'mail' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2004 NAME 'msTSLicenseVersion3' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2001 NAME 'msTSLicenseVersion2' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.507 NAME 'volumeCount' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.137 NAME 'uNCName' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2022 NAME 'msDS-ResultantPSO' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.168 NAME 'modifiedCount' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1809 NAME 'msDS-OperationsForAzTaskBL' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.2318 NAME 'msDS-KeyPrincipal' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.328 NAME 'versionNumberHi' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2099 NAME 'msDS-ClaimAttributeSource' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.754 NAME 'rpcNsEntryFlags' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.778 NAME 'aCSDSBMDeadTime' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.917 NAME 'mSMQQueueType' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.326 NAME 'packageName' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.422 NAME 'domainPolicyReference' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2241 NAME 'msDS-RegistrationQuota' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.6.13.3.3 NAME 'msDFSR-RootPath' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2317 NAME 'msDS-KeyUsage' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1817 NAME 'msDS-AzApplicationVersion' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.2.436 NAME 'directReports' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.240 NAME 'printOrientationsSupported' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.574 NAME 'meetingLanguage' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.43 NAME 'fRSVersionGUID' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 2.5.4.30 NAME 'supportedApplicationContext' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' )", + "( 1.2.840.113556.1.2.26 NAME 'rDNAttID' SYNTAX '1.3.6.1.4.1.1466.115.121.1.38' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.1409 NAME 'masteredBy' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.752 NAME 'userSharedFolderOther' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.2199 NAME 'msDS-ManagedPasswordInterval' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.1932 NAME 'msDS-IsFullReplicaFor' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.6.13.3.22 NAME 'msDFSR-RootFence' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.789 NAME 'transportDLLName' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.499 NAME 'contextMenu' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.202 NAME 'auditingPolicy' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.6.13.3.11 NAME 'msDFSR-TombstoneExpiryInMin' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1364 NAME 'mS-SQL-RegisteredOwner' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 0.9.2342.19200300.100.1.8 NAME 'userClass' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.775 NAME 'aCSMaxSizeOfRSVPLogFile' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.144 NAME 'operatorCount' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1238 NAME 'mSMQDsService' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1984 NAME 'msTSReconnectionAction' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2286 NAME 'msDS-AssignedAuthNPolicySiloBL' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.2180 NAME 'msImaging-ThumbprintHash' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.68 NAME 'machineArchitecture' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' )", + "( 1.2.840.113556.1.4.1311 NAME 'printDuplexSupported' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1795 NAME 'msDS-AzDomainTimeout' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1992 NAME 'msTSProperty02' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.583 NAME 'meetingURL' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.1991 NAME 'msTSProperty01' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.635 NAME 'privilegeValue' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2100 NAME 'msDS-ClaimTypeAppliesToClass' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' )", + "( 1.2.840.113556.1.2.115 NAME 'invocationId' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.2288 NAME 'msDS-AuthNPolicySiloMembersBL' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.1681 NAME 'msWMI-intFlags4' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1680 NAME 'msWMI-intFlags3' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1679 NAME 'msWMI-intFlags2' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1678 NAME 'msWMI-intFlags1' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.6.13.3.100 NAME 'msDFSR-MemberReference' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.100 NAME 'priorValue' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1379 NAME 'mS-SQL-Vines' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1377 NAME 'mS-SQL-TCPIP' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2172 NAME 'msKds-SecretAgreementParam' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2222 NAME 'msDS-cloudExtensionAttribute9' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2221 NAME 'msDS-cloudExtensionAttribute8' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2220 NAME 'msDS-cloudExtensionAttribute7' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2219 NAME 'msDS-cloudExtensionAttribute6' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2218 NAME 'msDS-cloudExtensionAttribute5' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.661 NAME 'isDefunct' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2217 NAME 'msDS-cloudExtensionAttribute4' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.653 NAME 'managedBy' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2216 NAME 'msDS-cloudExtensionAttribute3' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2215 NAME 'msDS-cloudExtensionAttribute2' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2214 NAME 'msDS-cloudExtensionAttribute1' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.588 NAME 'meetingEndTime' SYNTAX '1.3.6.1.4.1.1466.115.121.1.53' )", + "( 1.2.840.113556.1.4.498 NAME 'creationWizard' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1915 NAME 'msRADIUS-FramedIpv6Prefix' SYNTAX '1.3.6.1.4.1.1466.115.121.1.26' SINGLE-VALUE )", + "( 1.2.840.113556.1.6.13.3.12 NAME 'msDFSR-FileFilter' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 2.5.4.24 NAME 'x121Address' SYNTAX '1.3.6.1.4.1.1466.115.121.1.36' )", + "( 1.2.840.113556.1.4.637 NAME 'privilegeHolder' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' )", + "( 1.2.840.113556.1.2.214 NAME 'originalDisplayTableMSDOS' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.211 NAME 'schedule' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1228 NAME 'mSMQDsServices' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.64 NAME 'logonHours' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.883 NAME 'msRRASVendorAttributeEntry' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.58 NAME 'localeID' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' )", + "( 1.2.840.113556.1.4.97 NAME 'preferredOU' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2033 NAME 'msDFS-NamespaceIdentityGUIDv2' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1334 NAME 'pKIDefaultCSPs' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.1411 NAME 'ms-DS-MachineAccountQuota' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.891 NAME 'gPLink' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.2.617 NAME 'homePostalAddress' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.320 NAME 'implementedCategories' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' )", + "( 1.2.840.113556.1.2.19 NAME 'uSNCreated' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.651 NAME 'otherMailbox' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.6.18.1.345 NAME 'msSFU30NSMAPFieldPosition' SYNTAX '1.3.6.1.4.1.1466.115.121.1.26' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.618 NAME 'wellKnownObjects' SYNTAX '1.2.840.113556.1.4.903' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.2160 NAME 'msDS-ClaimIsSingleValued' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.6.13.3.1 NAME 'msDFSR-Version' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.874 NAME 'fRSFlags' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1713 NAME 'MSMQ-SecuredSource' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2371 NAME 'msDS-SupersededServiceAccountState' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.825 NAME 'enrollmentProviders' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.666 NAME 'syncAttributes' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.665 NAME 'syncMembership' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' )", + "( 1.2.840.113556.1.4.2344 NAME 'msDS-ExpirePasswordsOnSmartCardOnlyAccounts' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.48 NAME 'keywords' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.2169 NAME 'msKds-KDFAlgorithmID' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.370 NAME 'rIDAvailablePool' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.214 NAME 'nextLevelStore' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1145 NAME 'msRADIUSCallbackNumber' SYNTAX '1.3.6.1.4.1.1466.115.121.1.26' SINGLE-VALUE )", + "( 1.2.840.113556.1.6.18.1.303 NAME 'msSFU30IntraFieldSeparator' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.346 NAME 'desktopProfile' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.20 NAME 'cOMInterfaceID' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.279 NAME 'printMinXExtent' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1213 NAME 'assocNTAccount' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.671 NAME 'msiFileList' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.2032 NAME 'msDFS-GenerationGUIDv2' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2279 NAME 'msDS-UserTGTLifetime' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.6.13.3.10 NAME 'msDFSR-ReplicationGroupType' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1790 NAME 'msDS-PerUserTrustTombstonesQuota' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1124 NAME 'msNPCallingStationID' SYNTAX '1.3.6.1.4.1.1466.115.121.1.26' )", + "( 0.9.2342.19200300.100.1.2 NAME 'textEncodedORAddress' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.487 NAME 'fRSRootPath' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1807 NAME 'msDS-MembersForAzRoleBL' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.1823 NAME 'msieee80211-ID' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.791 NAME 'transportType' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.674 NAME 'rootTrust' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' )", + "( 1.2.840.113556.1.4.1641 NAME 'msWMI-PropertyName' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.2.25 NAME 'mayContain' SYNTAX '1.3.6.1.4.1.1466.115.121.1.38' )", + "( 1.2.840.113556.1.4.1438 NAME 'msPKI-RA-Policies' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.769 NAME 'aCSEventLogLevel' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.3.6.1.1.1.1.0 NAME 'uidNumber' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.3.6.1.1.1.1.9 NAME 'shadowInactive' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.945 NAME 'mSMQSiteGates' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' )", + "( 2.5.4.25 NAME 'internationalISDNNumber' SYNTAX '1.3.6.1.4.1.1466.115.121.1.36' )", + "( 1.2.840.113556.1.4.1979 NAME 'msTSAllowLogon' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.274 NAME 'printSpooling' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.242 NAME 'printCollate' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1345 NAME 'dSUIShellMaximum' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.693 NAME 'pendingCACertificates' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2257 NAME 'msDS-DeviceObjectVersion' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.852 NAME 'netbootCurrentClientCount' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.534 NAME 'fRSLevelLimit' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1685 NAME 'msWMI-Parm4' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1684 NAME 'msWMI-Parm3' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1988 NAME 'msTSDefaultToMainPrinter' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1913 NAME 'msRADIUS-FramedInterfaceId' SYNTAX '1.3.6.1.4.1.1466.115.121.1.26' SINGLE-VALUE )", + "( 1.2.840.113556.1.2.353 NAME 'displayNamePrintable' SYNTAX '1.3.6.1.4.1.1466.115.121.1.44' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1696 NAME 'lastLogonTimestamp' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1683 NAME 'msWMI-Parm2' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.330 NAME 'lastUpdateSequence' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.696 NAME 'currentParentCA' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' )", + "( 1.2.840.113556.1.4.689 NAME 'cRLObject' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1682 NAME 'msWMI-Parm1' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.2.22 NAME 'governsID' SYNTAX '1.3.6.1.4.1.1466.115.121.1.38' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.1632 NAME 'msWMI-Int8Default' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.169 NAME 'logonCount' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.772 NAME 'aCSPolicyName' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 2.5.4.38 NAME 'authorityRevocationList' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' )", + "( 1.2.840.113556.1.4.1212 NAME 'isEphemeral' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.324 NAME 'packageType' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1435 NAME 'msPKI-Template-Minor-Revision' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2010 NAME 'msTSLSProperty02' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.1961 NAME 'msDS-SiteName' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2009 NAME 'msTSLSProperty01' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.1336 NAME 'replInterval' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2066 NAME 'msDS-RequiredDomainBehaviorVersion' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.2185 NAME 'msDS-GeoCoordinatesLongitude' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2182 NAME 'msDS-AllowedToActOnBehalfOfOtherIdentity' SYNTAX '1.2.840.113556.1.4.907' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.3.6.1.1.1.1.11 NAME 'shadowFlag' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.6.13.3.8 NAME 'msDFSR-ConflictSizeInMb' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.357 NAME 'nTMixedDomain' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2191 NAME 'msDS-IngressClaimsTransformationPolicy' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1892 NAME 'msPKIRoamingTimeStamp' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2174 NAME 'msKds-PrivateKeyLength' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.2.324 NAME 'addressEntryDisplayTable' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.218 NAME 'applicationName' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1318 NAME 'aCSNonReservedPeakRate' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2023 NAME 'msDS-PasswordSettingsPrecedence' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.99 NAME 'priorSetTime' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.914 NAME 'allowedAttributesEffective' SYNTAX '1.3.6.1.4.1.1466.115.121.1.38' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.271 NAME 'printOwner' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1996 NAME 'msDS-UserPasswordExpiryTimeComputed' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.930 NAME 'mSMQServiceType' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1780 NAME 'hideFromAB' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.578 NAME 'meetingContactInfo' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2348 NAME 'msDS-UserAllowedNTLMNetworkAuthentication' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2020 NAME 'msDS-PSOAppliesTo' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' )", + "( 1.2.840.113556.1.4.1944 NAME 'msDS-PhoneticDepartment' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1792 NAME 'msDS-AzLDAPQuery' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.251 NAME 'cOMTreatAsClassId' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.14 NAME 'builtinModifiedCount' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.3.6.1.1.1.1.7 NAME 'shadowMax' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.325 NAME 'setupCommand' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1647 NAME 'msWMI-TargetObject' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' )", + "( 1.2.840.113556.1.4.420 NAME 'publicKeyPolicy' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1714 NAME 'MSMQ-MulticastAddress' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1677 NAME 'msWMI-Genus' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2281 NAME 'msDS-ComputerTGTLifetime' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1671 NAME 'msPKI-OID-Attribute' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2308 NAME 'msDS-DeviceMDMStatus' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.2.36 NAME 'dMDLocation' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.810 NAME 'createDialog' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2140 NAME 'msDNS-DSRecordSetTTL' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1358 NAME 'schemaInfo' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.1624 NAME 'msWMI-ChangeDate' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1975 NAME 'msDS-RevealedListBL' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.1962 NAME 'msDS-PromotionSettings' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.229 NAME 'driverName' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.378 NAME 'dnsAllowDynamic' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1246 NAME 'interSiteTopologyGenerator' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.817 NAME 'localizedDescription' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.2235 NAME 'msDS-ReplValueMetaDataExt' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.1933 NAME 'msDS-IsDomainFor' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.2213 NAME 'msDS-RIDPoolAllocationEnabled' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.73 NAME 'lockoutThreshold' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.50 NAME 'lastContentIndexed' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.824 NAME 'signatureAlgorithms' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.860 NAME 'netbootServer' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' SINGLE-VALUE )", + "( 1.2.840.113556.1.6.13.3.40 NAME 'msDFSR-StagingCleanupTriggerInPercent' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1695 NAME 'msMQ-Recipient-FormatName' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1966 NAME 'msTPM-OwnerInformation' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.156 NAME 'comment' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.650 NAME 'mhsORAddress' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.929 NAME 'mSMQInRoutingServers' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' )", + "( 1.2.840.113556.1.4.1787 NAME 'msDS-AllowedToDelegateTo' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.1389 NAME 'mS-SQL-Language' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.6.13.3.18 NAME 'msDFSR-ContentSetGuid' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.2.8 NAME 'possSuperiors' SYNTAX '1.3.6.1.4.1.1466.115.121.1.38' )", + "( 1.2.840.113556.1.4.912 NAME 'allowedChildClassesEffective' SYNTAX '1.3.6.1.4.1.1466.115.121.1.38' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.2132 NAME 'msDNS-NSEC3OptOut' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.136 NAME 'trustType' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1879 NAME 'msDS-SourceObjectDN' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.533 NAME 'fRSReplicaSetGUID' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1434 NAME 'msPKI-Template-Schema-Version' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.241 NAME 'printMaxCopies' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.961 NAME 'mSMQSiteForeign' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' )", + "( 1.2.840.113556.1.4.1808 NAME 'msDS-OperationsForAzTask' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' )", + "( 1.2.840.113556.1.4.1242 NAME 'dNReferenceUpdate' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' NO-USER-MODIFICATION )", + "( 0.9.2342.19200300.100.1.5 NAME 'drink' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.1923 NAME 'msDS-KrbTgtLink' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1402 NAME 'mS-SQL-Publisher' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2018 NAME 'msDS-LockoutDuration' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.688 NAME 'cAWEBURL' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.3.6.1.1.1.1.23 NAME 'bootParameter' SYNTAX '1.3.6.1.4.1.1466.115.121.1.26' )", + "( 1.2.840.113556.1.4.536 NAME 'fRSExtensions' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.233 NAME 'printStartTime' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1788 NAME 'msDS-PerUserTrustQuota' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.159 NAME 'accountExpires' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.3.6.1.1.1.1.14 NAME 'nisNetgroupTriple' SYNTAX '1.3.6.1.4.1.1466.115.121.1.26' )", + "( 1.2.840.113556.1.4.1390 NAME 'mS-SQL-Description' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.224 NAME 'defaultSecurityDescriptor' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113549.1.9.2 NAME 'unstructuredName' SYNTAX '1.3.6.1.4.1.1466.115.121.1.26' )", + "( 1.2.840.113556.1.4.695 NAME 'pendingParentCA' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' )", + "( 1.2.840.113556.1.4.1375 NAME 'mS-SQL-MultiProtocol' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2152 NAME 'msAuthz-LastEffectiveSecurityPolicy' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.56 NAME 'localPolicyFlags' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1392 NAME 'mS-SQL-InformationDirectory' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2159 NAME 'msDS-ClaimIsValueSpaceRestricted' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.708 NAME 'dhcpSites' SYNTAX '1.3.6.1.4.1.1466.115.121.1.44' )", + "( 1.2.840.113556.1.4.717 NAME 'dhcpState' SYNTAX '1.3.6.1.4.1.1466.115.121.1.44' )", + "( 1.2.840.113556.1.4.762 NAME 'aCSServiceType' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.132 NAME 'trustDirection' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.312 NAME 'rpcNsObjectID' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.1395 NAME 'mS-SQL-Alias' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 2.5.18.2 NAME 'modifyTimeStamp' SYNTAX '1.3.6.1.4.1.1466.115.121.1.24' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.2366 NAME 'msDS-preferredDataLocation' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2145 NAME 'msDNS-DNSKEYRecords' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' )", + "( 1.2.840.113556.1.4.301 NAME 'wbemPath' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 2.5.4.0 NAME 'objectClass' SYNTAX '1.3.6.1.4.1.1466.115.121.1.38' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.6.13.3.21 NAME 'msDFSR-DfsPath' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1429 NAME 'msPKI-RA-Signature' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1699 NAME 'msTAPI-ProtocolId' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2086 NAME 'msSPP-PhoneLicense' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.120 NAME 'schemaFlagsEx' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.1945 NAME 'msDS-PhoneticCompanyName' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.916 NAME 'canonicalName' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.702 NAME 'dhcpObjName' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2238 NAME 'msds-memberTransitive' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.133 NAME 'trustPartner' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.927 NAME 'mSMQSites' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' )", + "( 1.2.840.113556.1.4.867 NAME 'altSecurityIdentities' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.615 NAME 'shellContextMenu' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.866 NAME 'pekKeyChangeInterval' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2046 NAME 'addressBookRoots2' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' )", + "( 1.2.840.113556.1.4.27 NAME 'currentValue' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.166 NAME 'groupMembershipSAM' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1926 NAME 'msDS-NeverRevealGroup' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' )", + "( 1.2.840.113556.1.6.13.3.28 NAME 'msDFSR-ReadOnly' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1314 NAME 'aCSMaximumSDUSize' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.457 NAME 'localPolicyReference' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1189 NAME 'msRASSavedCallbackNumber' SYNTAX '1.3.6.1.4.1.1466.115.121.1.26' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1918 NAME 'msRADIUS-SavedFramedIpv6Route' SYNTAX '1.3.6.1.4.1.1466.115.121.1.26' )", + "( 2.5.21.2 NAME 'dITContentRules' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.895 NAME 'transportAddressAttribute' SYNTAX '1.3.6.1.4.1.1466.115.121.1.38' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1418 NAME 'tokenGroupsGlobalAndUniversal' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' )", + "( 1.2.840.113556.1.4.850 NAME 'netbootLimitClients' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 2.16.840.1.113730.3.1.2 NAME 'departmentNumber' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.944 NAME 'mSMQSite2' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.943 NAME 'mSMQSite1' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1664 NAME 'msDS-Replication-Notify-Subsequent-DSA-Delay' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.537 NAME 'dynamicLDAPServer' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2249 NAME 'msDS-DeviceOSType' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.35 NAME 'employeeID' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2137 NAME 'msDNS-NSEC3RandomSaltLength' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2151 NAME 'msAuthz-ProposedSecurityPolicy' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.2.267 NAME 'uSNDSALastObjRemoved' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.963 NAME 'mSMQQueueJournalQuota' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.607 NAME 'queryPolicyObject' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1978 NAME 'msTSHomeDrive' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.2.593 NAME 'msExchLabeledURI' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.1329 NAME 'pKIMaxIssuingDepth' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2061 NAME 'msDS-EnabledFeature' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.278 NAME 'printMaxYExtent' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.16 NAME 'codePage' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1802 NAME 'msDS-AzBizRuleLanguage' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.363 NAME 'operatingSystem' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.761 NAME 'aCSMaxDurationPerFlow' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.921 NAME 'mSMQJournalQuota' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2106 NAME 'msSPP-CSVLKPartialProductKey' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1190 NAME 'msRASSavedFramedIPAddress' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2171 NAME 'msKds-SecretAgreementAlgorithmID' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.703 NAME 'dhcpObjDescription' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.890 NAME 'uPNSuffixes' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.1720 NAME 'msDS-ReplicationEpoch' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.3.6.1.1.1.1.24 NAME 'bootFile' SYNTAX '1.3.6.1.4.1.1466.115.121.1.26' )", + "( 1.2.840.113556.1.4.614 NAME 'adminContextMenu' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.2.231 NAME 'oMSyntax' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.8 NAME 'userAccountControl' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.621 NAME 'ipsecID' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.511 NAME 'flatName' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.784 NAME 'aCSIdentityName' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.15 NAME 'msiScriptPath' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.125 NAME 'supplementalCredentials' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' )", + "( 1.2.840.113556.1.4.2287 NAME 'msDS-AuthNPolicySiloMembers' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' )", + "( 1.2.840.113556.1.4.199 NAME 'serviceInstanceVersion' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1347 NAME 'sPNMappings' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.933 NAME 'mSMQComputerType' SYNTAX '1.2.840.113556.1.4.905' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.780 NAME 'aCSNonReservedTxLimit' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1227 NAME 'mSMQRoutingServices' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2074 NAME 'msTSPrimaryDesktopBL' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' NO-USER-MODIFICATION )", + "( 2.5.18.1 NAME 'createTimeStamp' SYNTAX '1.3.6.1.4.1.1466.115.121.1.24' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.3.6.1.1.1.1.19 NAME 'ipHostNumber' SYNTAX '1.3.6.1.4.1.1466.115.121.1.26' )", + "( 1.2.840.113556.1.4.1130 NAME 'msNPSavedCallingStationID' SYNTAX '1.3.6.1.4.1.1466.115.121.1.26' )", + "( 1.2.840.113556.1.4.700 NAME 'dhcpFlags' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.629 NAME 'ipsecFilterReference' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' )", + "( 1.2.840.113556.1.4.40 NAME 'fromServer' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.568 NAME 'meetingKeyword' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.2178 NAME 'msKds-UseStartTime' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1321 NAME 'aCSNonReservedMinPolicedSize' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.246 NAME 'printLanguage' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.2.54 NAME 'tombstoneLifetime' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.765 NAME 'aCSPermissionBits' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.3.6.1.1.1.1.8 NAME 'shadowWarning' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1398 NAME 'mS-SQL-LastBackupDate' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2 NAME 'objectGUID' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.2.146 NAME 'company' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1710 NAME 'msDS-AllowedDNSSuffixes' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.1841 NAME 'msDS-ObjectReferenceBL' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' NO-USER-MODIFICATION )", + "( 2.5.4.8 NAME 'st' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.6.18.1.341 NAME 'msSFU30YpServers' SYNTAX '1.3.6.1.4.1.1466.115.121.1.26' )", + "( 2.5.4.4 NAME 'sn' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.707 NAME 'dhcpRanges' SYNTAX '1.3.6.1.4.1.1466.115.121.1.44' )", + "( 1.2.840.113556.1.4.282 NAME 'printMemory' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.924 NAME 'mSMQPrivacyLevel' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.333 NAME 'oMTIndxGuid' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.205 NAME 'pKTGuid' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2251 NAME 'msDS-DevicePhysicalIDs' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.1410 NAME 'mS-DS-CreatorSID' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.345 NAME 'groupPriority' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.2030 NAME 'msDFS-SchemaMajorVersion' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.513 NAME 'siteObjectBL' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.87 NAME 'nETBIOSName' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2175 NAME 'msKds-RootKeyData' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.2.24 NAME 'mustContain' SYNTAX '1.3.6.1.4.1.1466.115.121.1.38' )", + "( 2.5.4.51 NAME 'houseIdentifier' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.3.6.1.1.1.1.26 NAME 'nisMapName' SYNTAX '1.3.6.1.4.1.1466.115.121.1.26' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1917 NAME 'msRADIUS-FramedIpv6Route' SYNTAX '1.3.6.1.4.1.1466.115.121.1.26' )", + "( 1.2.840.113556.1.6.18.1.307 NAME 'msSFU30MasterServerName' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.98 NAME 'primaryGroupID' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1837 NAME 'msDs-masteredBy' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.200 NAME 'controlAccessRights' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' )", + "( 1.2.840.113556.1.4.1158 NAME 'msRADIUSFramedRoute' SYNTAX '1.3.6.1.4.1.1466.115.121.1.26' )", + "( 1.2.840.113556.1.4.107 NAME 'remoteSource' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1971 NAME 'msDS-LastFailedInteractiveLogonTime' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.1958 NAME 'msDS-AuthenticatedAtDC' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' )", + "( 2.5.4.5 NAME 'serialNumber' SYNTAX '1.3.6.1.4.1.1466.115.121.1.44' )", + "( 1.2.840.113556.1.4.509 NAME 'serviceClassName' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2050 NAME 'msPKI-CredentialRoamingTokens' SYNTAX '1.2.840.113556.1.4.903' )", + "( 1.2.840.113556.1.4.2008 NAME 'msTSManagingLS4' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2005 NAME 'msTSManagingLS3' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2002 NAME 'msTSManagingLS2' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1363 NAME 'mS-SQL-Name' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 0.9.2342.19200300.100.1.41 NAME 'mobile' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2108 NAME 'msTPM-OwnerInformationTemp' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.886 NAME 'purportedSearch' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1384 NAME 'mS-SQL-PublicationURL' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2271 NAME 'msDS-CloudIsManaged' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.41 NAME 'generatedConnection' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.864 NAME 'netbootSCPBL' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.1396 NAME 'mS-SQL-Size' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.115 NAME 'rpcNsInterfaceID' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 0.9.2342.19200300.100.1.56 NAME 'documentPublisher' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.619 NAME 'dNSHostName' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2273 NAME 'msDS-CloudAnchor' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.939 NAME 'mSMQNameStyle' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.882 NAME 'fRSVersion' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.777 NAME 'aCSDSBMRefresh' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.80 NAME 'minTicketAge' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1310 NAME 'mSMQSiteGatesMig' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' )", + "( 1.2.840.113556.1.4.83 NAME 'monikerDisplayName' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.2150 NAME 'msAuthz-EffectiveSecurityPolicy' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.2.15 NAME 'hasPartialReplicaNCs' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.2194 NAME 'msDS-TDOEgressBL' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.1811 NAME 'msDS-TasksForAzTaskBL' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.1987 NAME 'msTSConnectPrinterDrives' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1953 NAME 'ms-net-ieee-80211-GP-PolicyReserved' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1313 NAME 'aCSMaxTokenBucketPerFlow' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.579 NAME 'meetingOwner' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.12 NAME 'badPwdCount' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.39 NAME 'forceLogoff' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.2.326 NAME 'perRecipDialogDisplayTable' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.51 NAME 'lastLogoff' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1796 NAME 'msDS-AzScriptEngineCacheMax' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2269 NAME 'msDS-IssuerPublicCertificates' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' )", + "( 1.2.840.113556.1.4.1639 NAME 'msWMI-Name' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.4 NAME 'replUpToDateVector' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.470 NAME 'trustAttributes' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.515 NAME 'serverReference' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' SINGLE-VALUE )", + "( 1.2.840.113556.1.6.18.1.308 NAME 'msSFU30OrderNumber' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1669 NAME 'msDS-Approx-Immed-Subordinates' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.2141 NAME 'msDNS-SignatureInceptionOffset' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2186 NAME 'msDS-IsPossibleValuesPresent' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.78 NAME 'minPwdAge' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.6.18.1.339 NAME 'msSFU30NisDomain' SYNTAX '1.3.6.1.4.1.1466.115.121.1.26' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1701 NAME 'msTAPI-IpAddress' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.249 NAME 'cOMCLSID' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.774 NAME 'aCSMaxNoOfLogFiles' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.494 NAME 'siteServer' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' )", + "( 1.2.840.113556.1.4.849 NAME 'netbootAllowNewClients' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1931 NAME 'msDS-KrbTgtLinkBl' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.1789 NAME 'msDS-AllUsersTrustQuota' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2156 NAME 'msAuthz-MemberRulesInCentralAccessPolicyBL' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' )", + "( 1.2.840.113556.1.4.721 NAME 'ipPhone' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.2.613 NAME 'employeeType' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1634 NAME 'msWMI-Int8Min' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2248 NAME 'msDS-IsEnabled' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1950 NAME 'msDS-AzGenericData' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1646 NAME 'msWMI-TargetNameSpace' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.816 NAME 'fileExtPriority' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.712 NAME 'optionDescription' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.321 NAME 'requiredCategories' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' )", + "( 1.2.840.113556.1.2.255 NAME 'addressSyntax' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2110 NAME 'msTPM-TpmInformationForComputerBL' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.1785 NAME 'msIIS-FTPRoot' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.518 NAME 'defaultHidingValue' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.946 NAME 'mSMQCost' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 2.5.4.44 NAME 'generationQualifier' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.681 NAME 'indexedScopes' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.3.6.1.1.1.1.27 NAME 'nisMapEntry' SYNTAX '1.3.6.1.4.1.1466.115.121.1.26' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1865 NAME 'msDS-PrincipalName' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2073 NAME 'msTSPrimaryDesktop' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.697 NAME 'cACertificateDN' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1354 NAME 'scopeFlags' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1942 NAME 'msDS-PhoneticFirstName' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.3.6.1.1.1.1.21 NAME 'ipNetmaskNumber' SYNTAX '1.3.6.1.4.1.1466.115.121.1.26' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1997 NAME 'msDS-HABSeniorityIndex' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1307 NAME 'accountNameHistory' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.893 NAME 'gPCFunctionalityVersion' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2203 NAME 'msDS-parentdistname' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.1687 NAME 'extraColumns' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.1834 NAME 'msDS-ExternalStore' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.1983 NAME 'msTSMaxIdleTime' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.687 NAME 'cAConnect' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2048 NAME 'templateRoots2' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' )", + "( 1.2.840.113556.1.4.154 NAME 'serverState' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1224 NAME 'parentGUID' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.926 NAME 'mSMQTransactional' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.925 NAME 'mSMQOwnerID' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2035 NAME 'msDFS-Ttlv2' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.150 NAME 'adminCount' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2041 NAME 'msDFS-LinkIdentityGUIDv2' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.490 NAME 'fRSDSPoll' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2015 NAME 'msDS-PasswordComplexityEnabled' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.105 NAME 'remoteServerName' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.531 NAME 'nonSecurityMemberBL' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' NO-USER-MODIFICATION )", + "( 2.16.840.1.113730.3.1.36 NAME 'thumbnailLogo' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.586 NAME 'meetingRecurrence' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1643 NAME 'msWMI-QueryLanguage' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.962 NAME 'mSMQQueueQuota' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1415 NAME 'mSMQLabelEx' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.2.16 NAME 'nCName' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.2170 NAME 'msKds-KDFParam' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.567 NAME 'meetingDescription' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1704 NAME 'msDS-NCReplCursors' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 2.5.4.23 NAME 'facsimileTelephoneNumber' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.851 NAME 'netbootMaxClients' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2016 NAME 'msDS-PasswordReversibleEncryptionEnabled' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1635 NAME 'msWMI-Int8ValidValues' SYNTAX '1.2.840.113556.1.4.906' )", + "( 1.2.840.113556.1.4.719 NAME 'dhcpMaxKey' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1835 NAME 'msDS-Integer' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' )", + "( 1.2.840.113556.1.4.1208 NAME 'aNR' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1393 NAME 'mS-SQL-Database' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 0.9.2342.19200300.100.1.42 NAME 'pager' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1914 NAME 'msRADIUS-SavedFramedInterfaceId' SYNTAX '1.3.6.1.4.1.1466.115.121.1.26' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1391 NAME 'mS-SQL-Type' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.566 NAME 'meetingName' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.123 NAME 'serviceClassInfo' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' )", + "( 1.2.840.113556.1.4.26 NAME 'creationTime' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.103 NAME 'proxyLifetime' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.660 NAME 'treeName' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.892 NAME 'gPOptions' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.923 NAME 'mSMQAuthenticate' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1432 NAME 'msPKI-Certificate-Name-Flag' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.206 NAME 'pKT' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.287 NAME 'printNetworkAddress' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1431 NAME 'msPKI-Private-Key-Flag' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1346 NAME 'templateRoots' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' )", + "( 1.2.840.113556.1.4.657 NAME 'serviceDNSName' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.868 NAME 'isCriticalSystemObject' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.2.301 NAME 'garbageCollPeriod' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.288 NAME 'printMACAddress' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1304 NAME 'sDRightsEffective' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.2.380 NAME 'extendedCharsAllowed' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.86 NAME 'userWorkstations' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1360 NAME 'mS-DS-ConsistencyGuid' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1712 NAME 'msPKI-OIDLocalizedName' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 2.5.21.5 NAME 'attributeTypes' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.31 NAME 'fRSReplicaSetType' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.3.6.1.4.1.250.1.57 NAME 'labeledURI' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.341 NAME 'appliesTo' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 2.5.4.11 NAME 'ou' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.2293 NAME 'msDS-ServiceAuthNPolicy' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' SINGLE-VALUE )", + "( 1.2.840.113556.1.6.18.1.346 NAME 'msSFU30PosixMember' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' )", + "( 1.2.840.113556.1.4.1973 NAME 'msDS-FailedInteractiveLogonCountAtLastSuccessfulLogon' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 2.5.18.10 NAME 'subSchemaSubEntry' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.2262 NAME 'msDS-ApproximateLastLogonTimeStamp' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.222 NAME 'location' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.854 NAME 'netbootAnswerOnlyValidClients' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1949 NAME 'msDS-AzObjectGuid' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 2.16.840.1.113730.3.1.34 NAME 'middleName' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2325 NAME 'msDS-DeviceTrustType' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2158 NAME 'msDS-ClaimSourceType' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 0.9.2342.19200300.100.1.6 NAME 'roomNumber' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.706 NAME 'dhcpMask' SYNTAX '1.3.6.1.4.1.1466.115.121.1.44' )", + "( 1.2.840.113556.1.4.2109 NAME 'msTPM-TpmInformationForComputer' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2376 NAME 'msDS-ManagedAccountPrecededByLinkBL' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.623 NAME 'ipsecData' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1171 NAME 'msRADIUSServiceType' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1999 NAME 'msFVE-KeyPackage' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.705 NAME 'dhcpSubnets' SYNTAX '1.3.6.1.4.1.1466.115.121.1.44' )", + "( 1.2.840.113556.1.4.2347 NAME 'msds-tokenGroupNamesNoGCAcceptable' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.1968 NAME 'msDS-NC-RO-Replica-Locations-BL' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' )", + "( 1.2.840.113556.1.4.36 NAME 'enabledConnection' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.472 NAME 'domainCrossRef' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.52 NAME 'lastLogon' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.28 NAME 'dnsRoot' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.966 NAME 'mSMQDigestsMig' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' )", + "( 1.2.840.113556.1.4.2328 NAME 'msDS-KeyCredentialLink' SYNTAX '1.2.840.113556.1.4.903' )", + "( 1.2.840.113556.1.4.878 NAME 'fRSPrimaryMember' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1848 NAME 'msDS-QuotaEffective' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1372 NAME 'mS-SQL-UnicodeSortOrder' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.639 NAME 'isMemberOfPartialAttributeSet' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.2.464 NAME 'wWWHomePage' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.711 NAME 'superScopeDescription' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.1631 NAME 'msWMI-IntValidValues' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' )", + "( 1.3.6.1.1.1.1.2 NAME 'gecos' SYNTAX '1.3.6.1.4.1.1466.115.121.1.26' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2063 NAME 'msDS-OptionalFeatureFlags' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.2375 NAME 'msDS-ManagedAccountPrecededByLink' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.38 NAME 'flags' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1240 NAME 'netbootSIFFile' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.690 NAME 'cAUsages' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 0.9.2342.19200300.100.1.60 NAME 'jpegPhoto' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' )", + "( 1.2.840.113556.1.4.2104 NAME 'msDS-MembersOfResourcePropertyListBL' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' )", + "( 1.2.840.113556.1.4.66 NAME 'lSACreationTime' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.709 NAME 'dhcpReservations' SYNTAX '1.3.6.1.4.1.1466.115.121.1.44' )", + "( 1.2.840.113556.1.4.934 NAME 'mSMQForeign' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1963 NAME 'msDS-SupportedEncryptionTypes' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1401 NAME 'mS-SQL-Keywords' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.2324 NAME 'msDS-ShadowPrincipalSid' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1705 NAME 'msDS-NCReplInboundNeighbors' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.2128 NAME 'msDNS-KeymasterZones' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 2.5.4.19 NAME 'physicalDeliveryOfficeName' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1694 NAME 'gPCWQLFilter' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.195 NAME 'systemPossSuperiors' SYNTAX '1.3.6.1.4.1.1466.115.121.1.38' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.2.218 NAME 'oMObjectClass' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.1226 NAME 'mSMQDependentClientServices' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1676 NAME 'msWMI-Class' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2144 NAME 'msDNS-SigningKeys' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' )", + "( 1.2.840.113556.1.4.1630 NAME 'msWMI-IntMin' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.372 NAME 'rIDPreviousAllocationPool' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.848 NAME 'appSchemaVersion' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1981 NAME 'msTSMaxDisconnectionTime' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1645 NAME 'msWMI-TargetClass' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.535 NAME 'fRSRootSecurity' SYNTAX '1.2.840.113556.1.4.907' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1423 NAME 'msCOM-PartitionLink' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' )", + "( 2.5.4.32 NAME 'owner' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1436 NAME 'msPKI-Cert-Template-OID' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1716 NAME 'msDS-IntId' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.2321 NAME 'msDS-ComputerSID' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.6.18.1.309 NAME 'msSFU30Name' SYNTAX '1.3.6.1.4.1.1466.115.121.1.26' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.254 NAME 'cOMTypelibId' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.1642 NAME 'msWMI-Query' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.155 NAME 'uASCompat' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1623 NAME 'msWMI-Author' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1964 NAME 'msFVE-RecoveryPassword' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 0.9.2342.19200300.100.1.37 NAME 'associatedDomain' SYNTAX '1.3.6.1.4.1.1466.115.121.1.26' )", + "( 1.2.840.113556.1.4.764 NAME 'aCSPriority' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.571 NAME 'meetingType' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.783 NAME 'defaultObjectCategory' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1365 NAME 'mS-SQL-Contact' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.679 NAME 'creator' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 2.5.4.39 NAME 'certificateRevocationList' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.699 NAME 'dhcpType' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1405 NAME 'mS-SQL-AllowQueuedUpdatingSubscription' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.915 NAME 'possibleInferiors' SYNTAX '1.3.6.1.4.1.1466.115.121.1.38' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.2234 NAME 'netbootDUID' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.899 NAME 'aCSEnableRSVPAccounting' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.881 NAME 'fRSTimeLastConfigChange' SYNTAX '1.3.6.1.4.1.1466.115.121.1.53' SINGLE-VALUE )", + "( 0.9.2342.19200300.100.1.55 NAME 'audio' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' )", + "( 1.3.6.1.1.1.1.13 NAME 'memberNisNetgroup' SYNTAX '1.3.6.1.4.1.1466.115.121.1.26' )", + "( 1.2.840.113556.1.4.898 NAME 'aCSNonReservedTxSize' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.771 NAME 'servicePrincipalName' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.1820 NAME 'msDS-HasDomainNCs' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.2070 NAME 'msTSEndpointData' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.620 NAME 'ipsecName' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.458 NAME 'qualityOfService' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2042 NAME 'msDFS-ShortNameLinkPathv2' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1688 NAME 'msDS-Security-Group-Extra-Classes' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.2289 NAME 'msDS-UserAuthNPolicy' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' SINGLE-VALUE )", + "( 1.2.840.113556.1.2.83 NAME 'repsTo' SYNTAX 'OctetString' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.1357 NAME 'dSCorePropagationData' SYNTAX '1.3.6.1.4.1.1466.115.121.1.24' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.2196 NAME 'msDS-ManagedPassword' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.647 NAME 'otherMobile' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.2072 NAME 'msTSEndpointPlugin' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.749 NAME 'url' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.701 NAME 'dhcpIdentification' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.122 NAME 'serviceClassID' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2058 NAME 'isRecycled' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.213 NAME 'defaultClassStore' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' )", + "( 1.2.840.113556.1.4.2252 NAME 'msDS-DeviceID' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.633 NAME 'policyReplicationFlags' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1693 NAME 'msFRS-Hub-Member' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1328 NAME 'pKIKeyUsage' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.2.459 NAME 'networkAddress' SYNTAX '1.2.840.113556.1.4.905' )", + "( 1.2.840.113556.1.4.1786 NAME 'msIIS-FTPDir' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.806 NAME 'treatAsLeaf' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.820 NAME 'bridgeheadServerListBL' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' NO-USER-MODIFICATION )", + "( 0.9.2342.19200300.100.1.15 NAME 'documentLocation' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.6.13.3.36 NAME 'msDFSR-OnDemandExclusionDirectoryFilter' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.640 NAME 'partialAttributeSet' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.853 NAME 'netbootAnswerRequests' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 2.5.4.31 NAME 'member' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' )", + "( 1.2.840.113556.1.6.18.1.323 NAME 'msSFU30Aliases' SYNTAX '1.3.6.1.4.1.1466.115.121.1.26' )", + "( 1.2.840.113556.1.4.1243 NAME 'mSMQQueueNameExt' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1370 NAME 'mS-SQL-CharacterSet' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1622 NAME 'msDS-Entry-Time-To-Die' SYNTAX '1.3.6.1.4.1.1466.115.121.1.24' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.2.460 NAME 'lDAPDisplayName' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2031 NAME 'msDFS-SchemaMinorVersion' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.3.6.1.1.1.1.12 NAME 'memberUid' SYNTAX '1.3.6.1.4.1.1466.115.121.1.26' )", + "( 1.2.840.113556.1.4.1800 NAME 'msDS-AzOperationID' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.322 NAME 'categoryId' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.60 NAME 'lockoutDuration' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.870 NAME 'frsComputerReferenceBL' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' NO-USER-MODIFICATION )", + "( 2.5.4.45 NAME 'x500uniqueIdentifier' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' )", + "( 1.2.840.113556.1.6.13.3.25 NAME 'msDFSR-Priority' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.847 NAME 'installUiLevel' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1842 NAME 'msDs-MaxValues' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 2.5.4.9 NAME 'street' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2154 NAME 'msAuthz-CentralAccessPolicyID' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.2.3 NAME 'whenChanged' SYNTAX '1.3.6.1.4.1.1466.115.121.1.24' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.1433 NAME 'msPKI-Minimal-Key-Size' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1814 NAME 'msDS-TasksForAzRole' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' )", + "( 1.2.840.113556.1.6.13.3.101 NAME 'msDFSR-ComputerReference' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.580 NAME 'meetingIP' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.539 NAME 'initialAuthIncoming' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.356 NAME 'foreignIdentifier' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.565 NAME 'meetingID' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.3.6.1.1.1.1.3 NAME 'unixHomeDirectory' SYNTAX '1.3.6.1.4.1.1466.115.121.1.26' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1721 NAME 'msDS-UpdateScript' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.557 NAME 'parentCA' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.255 NAME 'vendor' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.900 NAME 'aCSRSVPAccountFilesLocation' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1320 NAME 'aCSNonReservedMaxSDUSize' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1956 NAME 'ms-net-ieee-8023-GP-PolicyReserved' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.773 NAME 'aCSRSVPLogFilesLocation' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.951 NAME 'mSMQQMID' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.2.102 NAME 'memberOf' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.1397 NAME 'mS-SQL-CreationDate' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2146 NAME 'msDNS-ParentHasSecureDelegation' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.113 NAME 'rpcNsBindings' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.656 NAME 'userPrincipalName' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1934 NAME 'msDS-IsPartialReplicaFor' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.2167 NAME 'msDS-PrimaryComputer' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' )", + "( 1.2.840.113556.1.2.469 NAME 'USNIntersite' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1803 NAME 'msDS-AzLastImportedBizRulePath' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2295 NAME 'msDS-AssignedAuthNPolicy' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' SINGLE-VALUE )", + "( 2.5.4.13 NAME 'description' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.922 NAME 'mSMQLabel' SYNTAX '1.2.840.113556.1.4.905' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2024 NAME 'msDS-NcType' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.2011 NAME 'msDS-MaximumPasswordAge' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2291 NAME 'msDS-ComputerAuthNPolicy' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1832 NAME 'msDS-DateTime' SYNTAX '1.3.6.1.4.1.1466.115.121.1.24' )", + "( 1.2.840.113556.1.2.281 NAME 'nTSecurityDescriptor' SYNTAX '1.2.840.113556.1.4.907' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.722 NAME 'otherIpPhone' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.1368 NAME 'mS-SQL-Build' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.219 NAME 'iconPath' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.1417 NAME 'mSMQComputerTypeEx' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 0.9.2342.19200300.100.1.38 NAME 'associatedName' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' )", + "( 1.2.840.113556.1.4.1986 NAME 'msTSConnectClientDrives' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2285 NAME 'msDS-AssignedAuthNPolicySilo' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1638 NAME 'msWMI-Mof' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.314 NAME 'rpcNsTransferSyntax' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1702 NAME 'msDS-TrustForestTrustInfo' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.2.557 NAME 'Enabled' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.2.21 NAME 'subClassOf' SYNTAX '1.3.6.1.4.1.1466.115.121.1.38' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 0.9.2342.19200300.100.1.44 NAME 'uniqueIdentifier' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.1845 NAME 'msDS-QuotaAmount' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1119 NAME 'msNPAllowDialin' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.2.33 NAME 'isSingleValued' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.782 NAME 'objectCategory' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2177 NAME 'msKds-DomainID' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2195 NAME 'msDS-AppliesToResourceTypes' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.152 NAME 'groupAttributes' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.334 NAME 'volTableIdxGUID' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.272 NAME 'printNotify' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.2.334 NAME 'searchFlags' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2298 NAME 'msDS-AuthNPolicySiloEnforced' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1428 NAME 'msCOM-ObjectId' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.2.400 NAME 'addressEntryDisplayTableMSDOS' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.81 NAME 'modifiedCountAtLastProm' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.71 NAME 'machineRole' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1123 NAME 'msNPCalledStationID' SYNTAX '1.3.6.1.4.1.1466.115.121.1.26' )", + "( 1.2.840.113556.1.4.654 NAME 'managedObjects' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.638 NAME 'isPrivilegeHolder' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.197 NAME 'systemMustContain' SYNTAX '1.3.6.1.4.1.1466.115.121.1.38' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.91 NAME 'otherLoginWorkstations' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.6.13.3.32 NAME 'msDFSR-DisablePacketPrivacy' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2377 NAME 'msDS-JetGetRecordSize3' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2297 NAME 'msDS-AuthNPolicyEnforced' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.576 NAME 'meetingMaxParticipants' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2349 NAME 'msDS-ServiceAllowedNTLMNetworkAuthentication' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.3.6.1.1.1.1.4 NAME 'loginShell' SYNTAX '1.3.6.1.4.1.1466.115.121.1.26' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.779 NAME 'aCSCacheTimeout' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.751 NAME 'userSharedFolder' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.6.18.1.342 NAME 'msSFU30MaxGidNumber' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1380 NAME 'mS-SQL-Status' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.13 NAME 'builtinCreationTime' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.277 NAME 'printMaxXExtent' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.230 NAME 'printSeparatorFile' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1387 NAME 'mS-SQL-GPSHeight' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2054 NAME 'msImaging-PSPString' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.235 NAME 'printFormName' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 2.5.4.20 NAME 'telephoneNumber' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1621 NAME 'msDS-Other-Settings' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.6.18.1.304 NAME 'msSFU30SearchAttributes' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 2.5.21.9 NAME 'structuralObjectClass' SYNTAX '1.3.6.1.4.1.1466.115.121.1.38' )", + "( 1.2.840.113556.1.4.659 NAME 'serviceDNSNameType' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.902 NAME 'aCSMaxSizeOfRSVPAccountFile' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.569 NAME 'meetingLocation' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.261 NAME 'division' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1640 NAME 'msWMI-NormalizedClass' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.300 NAME 'printerName' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1960 NAME 'msDS-isRODC' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.268 NAME 'eFSPolicy' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' )", + "( 1.2.840.113556.1.4.1824 NAME 'msDS-AzMajorVersion' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2134 NAME 'msDNS-DSRecordAlgorithms' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.270 NAME 'printShareName' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.1400 NAME 'mS-SQL-Applications' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.1312 NAME 'aCSServerList' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.1376 NAME 'mS-SQL-SPX' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.368 NAME 'rIDManagerReference' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.1371 NAME 'mS-SQL-SortOrder' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.2.118 NAME 'otherPager' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.1894 NAME 'msPKIAccountCredentials' SYNTAX '1.2.840.113556.1.4.903' )", + "( 1.2.840.113556.1.6.13.3.16 NAME 'msDFSR-Flags' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1301 NAME 'tokenGroups' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' )", + "( 1.2.840.113556.1.4.1626 NAME 'msWMI-CreationDate' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.2.14 NAME 'hasMasterNCs' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.153 NAME 'rid' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2084 NAME 'msSPP-ConfirmationId' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.6.13.3.2 NAME 'msDFSR-Extension' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1846 NAME 'msDS-DefaultQuota' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.2.35 NAME 'rangeUpper' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1633 NAME 'msWMI-Int8Max' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.2.48 NAME 'isDeleted' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.1327 NAME 'pKIDefaultKeySpec' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1408 NAME 'mS-DS-ReplicatesNCReason' SYNTAX '1.2.840.113556.1.4.903' )", + "( 1.2.840.113556.1.4.1816 NAME 'msDS-AzClassId' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2088 NAME 'msSPP-IssuanceLicense' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1672 NAME 'msPKI-OID-CPS' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.590 NAME 'meetingBlob' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.72 NAME 'marshalledInterface' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' )", + "( 1.2.840.113556.1.4.1385 NAME 'mS-SQL-GPSLatitude' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2097 NAME 'msDS-ClaimPossibleValues' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.6.13.3.26 NAME 'msDFSR-DeletedPath' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1826 NAME 'msDS-RetiredReplNCSignatures' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.2143 NAME 'msDNS-SigningKeyDescriptors' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' )", + "( 1.2.840.113556.1.4.491 NAME 'fRSFaultCondition' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2278 NAME 'msDS-UserAllowedToAuthenticateFrom' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2017 NAME 'msDS-LockoutObservationWindow' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2130 NAME 'msDNS-IsSigned' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2057 NAME 'msDS-HostServiceAccountBL' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' )", + "( 1.2.840.113556.1.4.683 NAME 'cRLPartitionedRevocationList' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.481 NAME 'schemaUpdate' SYNTAX '1.3.6.1.4.1.1466.115.121.1.24' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1332 NAME 'pKIOverlapPeriod' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.692 NAME 'previousCACertificates' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.573 NAME 'meetingApplication' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.1849 NAME 'msDS-QuotaUsed' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.3.6.1.1.1.1.20 NAME 'ipNetworkNumber' SYNTAX '1.3.6.1.4.1.1466.115.121.1.26' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.517 NAME 'ipsecPolicyReference' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1822 NAME 'msieee80211-DataType' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.664 NAME 'syncWithObject' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2183 NAME 'msDS-GeoCoordinatesAltitude' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.284 NAME 'bytesPerMinute' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.139 NAME 'profilePath' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 2.5.4.40 NAME 'crossCertificatePair' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' )", + "( 1.2.840.113556.1.4.1929 NAME 'msDS-SecondaryKrbTgtNumber' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.2350 NAME 'msDS-StrongNTLMPolicy' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2294 NAME 'msDS-ServiceAuthNPolicyBL' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.1414 NAME 'dNSTombstoned' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.2.104 NAME 'ownerBL' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.1930 NAME 'msDS-RevealedDSAs' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.2240 NAME 'msDS-IssuerCertificates' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' )", + "( 1.2.840.113556.1.4.1692 NAME 'msFRS-Topology-Pref' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.158 NAME 'domainReplica' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.2.2 NAME 'whenCreated' SYNTAX '1.3.6.1.4.1.1466.115.121.1.24' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.76 NAME 'maxStorage' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.484 NAME 'fRSDirectoryFilter' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1916 NAME 'msRADIUS-SavedFramedIpv6Prefix' SYNTAX '1.3.6.1.4.1.1466.115.121.1.26' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2087 NAME 'msSPP-ConfigLicense' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.627 NAME 'ipsecNFAReference' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' )", + "( 1.2.840.113556.1.2.351 NAME 'auxiliaryClass' SYNTAX '1.3.6.1.4.1.1466.115.121.1.38' )", + "( 1.2.840.113556.1.2.50 NAME 'linkID' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.1718 NAME 'msDS-AdditionalSamAccountName' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.6.13.3.35 NAME 'msDFSR-OnDemandExclusionFileFilter' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.577 NAME 'meetingOriginator' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.2.169 NAME 'showInAdvancedViewOnly' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.582 NAME 'meetingAdvertiseScope' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 0.9.2342.19200300.100.1.48 NAME 'buildingName' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.2181 NAME 'msImaging-HashAlgorithm' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2101 NAME 'msDS-ClaimSharesPossibleValuesWith' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.24 NAME 'contentIndexingAllowed' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.6.13.3.39 NAME 'msDFSR-CommonStagingSizeInMb' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2135 NAME 'msDNS-RFC5011KeyRollovers' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.682 NAME 'friendlyNames' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.2071 NAME 'msTSEndpointType' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2263 NAME 'msDS-RegisteredUsers' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' )", + "( 1.2.840.113556.1.4.2062 NAME 'msDS-OptionalFeatureGUID' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.767 NAME 'aCSMaxPeakBandwidth' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 2.5.4.28 NAME 'preferredDeliveryMethod' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' )", + "( 1.2.840.113556.1.4.919 NAME 'mSMQQuota' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.327 NAME 'packageFlags' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.382 NAME 'dnsRecord' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' )", + "( 1.2.840.113556.1.4.755 NAME 'domainIdentifier' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.872 NAME 'fRSControlInboundBacklog' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.928 NAME 'mSMQOutRoutingServers' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' )", + "( 1.2.840.113556.1.4.768 NAME 'aCSEnableRSVPMessageLogging' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.585 NAME 'meetingIsEncrypted' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.2.34 NAME 'rangeLower' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2316 NAME 'msDS-KeyMaterial' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1361 NAME 'mS-DS-ConsistencyChildCount' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2192 NAME 'msDS-EgressClaimsTransformationPolicy' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2292 NAME 'msDS-ComputerAuthNPolicyBL' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.843 NAME 'lDAPAdminLimits' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.1847 NAME 'msDS-TombstoneQuotaFactor' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1355 NAME 'queryFilter' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 2.5.4.16 NAME 'postalAddress' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.307 NAME 'options' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.2.74 NAME 'dSASignature' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.380 NAME 'dnsSecureSecondaries' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' )", + "( 1.2.840.113556.1.4.634 NAME 'privilegeDisplayName' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.2.598 NAME 'dmdName' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1399 NAME 'mS-SQL-LastDiagnosticDate' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2280 NAME 'msDS-ComputerAllowedToAuthenticateTo' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.2.350 NAME 'addressType' SYNTAX '1.2.840.113556.1.4.905' SINGLE-VALUE )", + "( 1.2.840.113556.1.6.13.3.38 NAME 'msDFSR-CommonStagingPath' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2320 NAME 'msDS-DeviceDN' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.672 NAME 'categories' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.1675 NAME 'msPKI-RA-Application-Policies' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.1244 NAME 'addressBookRoots' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' )", + "( 1.2.840.113556.1.4.336 NAME 'volTableGUID' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.65 NAME 'logonWorkstation' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2153 NAME 'msAuthz-ResourceCondition' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2314 NAME 'msDS-IsCompliant' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.6.13.3.34 NAME 'msDFSR-DefaultCompressionExclusionFilter' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.756 NAME 'aCSTimeOfDay' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2276 NAME 'msDS-SyncServerUrl' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.710 NAME 'superScopes' SYNTAX '1.3.6.1.4.1.1466.115.121.1.44' )", + "( 1.2.840.113556.1.2.210 NAME 'proxyAddresses' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.6.18.1.348 NAME 'msSFU30NetgroupHostAtDomain' SYNTAX '1.3.6.1.4.1.1466.115.121.1.26' )", + "( 1.2.840.113556.1.4.1306 NAME 'dNSProperty' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' )", + "( 1.2.840.113556.1.2.141 NAME 'department' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.871 NAME 'fRSControlDataCreation' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.253 NAME 'cOMOtherProgId' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.1337 NAME 'mSMQUserSid' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 0.9.2342.19200300.100.1.14 NAME 'documentAuthor' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' )", + "( 2.5.4.37 NAME 'cACertificate' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' )", + "( 1.2.840.113556.1.4.698 NAME 'dhcpUniqueKey' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1980 NAME 'msTSRemoteControl' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 0.9.2342.19200300.100.1.9 NAME 'host' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.2081 NAME 'msSPP-CSVLKSkuId' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.483 NAME 'fRSFileFilter' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2168 NAME 'msDS-IsPrimaryComputerFor' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' )", + "( 1.2.840.113556.1.4.74 NAME 'maxPwdAge' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1374 NAME 'mS-SQL-NamedPipe' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1972 NAME 'msDS-FailedInteractiveLogonCount' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.1649 NAME 'msWMI-TargetType' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.668 NAME 'domainCAs' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' )", + "( 1.2.840.113556.1.4.2021 NAME 'msDS-PSOApplied' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.25 NAME 'countryCode' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.160 NAME 'lmPwdHistory' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' )", + "( 1.2.840.113556.1.4.275 NAME 'printKeepPrintedJobs' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2014 NAME 'msDS-PasswordHistoryLength' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1836 NAME 'msDS-hasMasterNCs' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.1813 NAME 'msDS-OperationsForAzRoleBL' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.2.212 NAME 'dSHeuristics' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.877 NAME 'fRSPartnerAuthLevel' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.2.13 NAME 'displayName' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.269 NAME 'linkTrackSecret' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1239 NAME 'mSMQDependentClientService' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.238 NAME 'printMaxResolutionSupported' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.2.325 NAME 'perMsgDialogDisplayTable' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.819 NAME 'bridgeheadTransportList' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' )", + "( 1.2.840.113556.1.4.540 NAME 'initialAuthOutgoing' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.2.523 NAME 'proxyGenerationEnabled' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.760 NAME 'aCSAggregateTokenRatePerUser' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.381 NAME 'dnsNotifySecondaries' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' )", + "( 2.5.4.21 NAME 'telexNumber' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' )", + "( 1.2.840.113556.1.4.117 NAME 'rpcNsPriority' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' )", + "( 1.2.840.113556.1.6.18.1.300 NAME 'msSFU30SearchContainer' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.960 NAME 'mSMQNt4Stub' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' )", + "( 1.2.840.113556.1.4.844 NAME 'lDAPIPDenyList' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' )", + "( 1.2.840.113556.1.4.918 NAME 'mSMQJournal' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.6.18.1.343 NAME 'msSFU30MaxUidNumber' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1442 NAME 'msDS-Cached-Membership-Time-Stamp' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1458 NAME 'msDS-Auxiliary-Classes' SYNTAX '1.3.6.1.4.1.1466.115.121.1.38' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.821 NAME 'siteList' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' )", + "( 1.2.840.113556.1.4.1782 NAME 'msDS-KeyVersionNumber' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 2.5.4.50 NAME 'uniqueMember' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' )", + "( 1.2.840.113556.1.4.1797 NAME 'msDS-AzScriptTimeout' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1812 NAME 'msDS-OperationsForAzRole' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' )", + "( 1.2.840.113556.1.4.809 NAME 'remoteStorageGUID' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2319 NAME 'msDS-KeyPrincipalBL' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.231 NAME 'priority' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.6.13.3.37 NAME 'msDFSR-Options2' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2083 NAME 'msSPP-InstallationId' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 2.5.4.58 NAME 'attributeCertificateAttribute' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' )", + "( 1.2.840.113556.1.6.18.1.302 NAME 'msSFU30FieldSeparator' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.532 NAME 'superiorDNSRoot' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.822 NAME 'siteLinkList' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' )", + "( 1.2.840.113556.1.4.1366 NAME 'mS-SQL-Location' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.94 NAME 'ntPwdHistory' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' )", + "( 1.2.840.113556.1.4.1 NAME 'name' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.1629 NAME 'msWMI-IntMax' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.118 NAME 'rpcNsProfileEntry' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2049 NAME 'msDS-BridgeHeadServersUsed' SYNTAX '1.2.840.113556.1.4.903' )", + "( 1.2.840.113556.1.4.1969 NAME 'samDomainUpdates' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.889 NAME 'additionalTrustedServiceNames' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.77 NAME 'maxTicketAge' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1661 NAME 'msDS-NC-Replica-Locations' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' )", + "( 1.2.840.113556.1.4.1783 NAME 'msDS-ExecuteScriptPassword' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.2.49 NAME 'mAPIID' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.6.13.3.9 NAME 'msDFSR-Enabled' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.250 NAME 'cOMUniqueLIBID' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 2.5.4.18 NAME 'postOfficeBox' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.2067 NAME 'msDS-LastKnownRDN' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.1344 NAME 'dSUIAdminMaximum' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1153 NAME 'msRADIUSFramedIPAddress' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1799 NAME 'msDS-AzScopeName' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2013 NAME 'msDS-MinimumPasswordLength' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.114 NAME 'rpcNsGroup' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.365 NAME 'operatingSystemServicePack' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.146 NAME 'objectSid' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.6.13.3.6 NAME 'msDFSR-StagingSizeInMb' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 2.5.21.6 NAME 'objectClasses' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.1191 NAME 'msRASSavedFramedRoute' SYNTAX '1.3.6.1.4.1.1466.115.121.1.26' )", + "( 1.2.840.113556.1.4.1698 NAME 'msTAPI-uid' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.2.256 NAME 'streetAddress' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2329 NAME 'msDS-KeyCredentialLink-BL' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' )", + "( 1.2.840.113556.1.4.1965 NAME 'msFVE-RecoveryGuid' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2166 NAME 'msDS-GenerationId' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.1359 NAME 'otherWellKnownObjects' SYNTAX '1.2.840.113556.1.4.903' )", + "( 1.2.840.113556.1.4.1940 NAME 'msDS-RevealedList' SYNTAX '1.2.840.113556.1.4.904' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.2282 NAME 'msDS-ServiceAllowedToAuthenticateTo' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.379 NAME 'dnsAllowXFR' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.628 NAME 'ipsecNegotiationPolicyReference' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2346 NAME 'msds-tokenGroupNamesGlobalAndUniversal' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.1976 NAME 'msTSProfilePath' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2076 NAME 'msPKI-Enrollment-Servers' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 2.5.4.53 NAME 'deltaRevocationList' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' )", + "( 1.2.840.113556.1.2.18 NAME 'otherTelephone' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.2077 NAME 'msPKI-Site-Name' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1316 NAME 'aCSMinimumLatency' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2157 NAME 'msDS-ClaimSource' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1970 NAME 'msDS-LastSuccessfulInteractiveLogonTime' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.280 NAME 'printMinYExtent' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.415 NAME 'operatingSystemHotfix' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.6.18.1.306 NAME 'msSFU30MapFilter' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.610 NAME 'classDisplayName' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.1381 NAME 'mS-SQL-LastUpdatedDate' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1957 NAME 'msDS-AuthenticatedToAccountlist' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.1825 NAME 'msDS-AzMinorVersion' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2198 NAME 'msDS-ManagedPasswordPreviousId' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.2068 NAME 'msDS-DeletedObjectLifetime' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2095 NAME 'msDS-IsUsedAsResourceSecurityAttribute' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.786 NAME 'mailAddress' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.373 NAME 'rIDUsedPool' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.6.13.3.19 NAME 'msDFSR-RdcEnabled' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.44 NAME 'homeDirectory' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.538 NAME 'prefixMap' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.2034 NAME 'msDFS-LastModifiedv2' SYNTAX '1.3.6.1.4.1.1466.115.121.1.24' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2155 NAME 'msAuthz-MemberRulesInCentralAccessPolicy' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' )", + "( 1.2.840.113556.1.4.947 NAME 'mSMQSignCertificates' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.714 NAME 'dhcpOptions' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' )", + "( 1.2.840.113556.1.4.2060 NAME 'msDS-LocalEffectiveRecycleTime' SYNTAX '1.3.6.1.4.1.1466.115.121.1.24' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.675 NAME 'catalogs' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.134 NAME 'trustPosixOffset' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1404 NAME 'mS-SQL-AllowImmediateUpdatingSubscription' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2047 NAME 'globalAddressList2' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' )", + "( 1.2.840.113556.1.2.135 NAME 'cost' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1331 NAME 'pKIExpirationPeriod' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 0.9.2342.19200300.100.1.45 NAME 'organizationalStatus' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 2.5.4.15 NAME 'businessCategory' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.6.13.3.4 NAME 'msDFSR-RootSizeInMb' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.869 NAME 'frsComputerReference' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1893 NAME 'msPKIDPAPIMasterKeys' SYNTAX '1.2.840.113556.1.4.903' )", + "( 1.2.840.113556.1.4.1430 NAME 'msPKI-Enrollment-Flag' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.45 NAME 'homeDrive' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2085 NAME 'msSPP-OnlineLicense' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2378 NAME 'msDS-JetDBPageSize' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.196 NAME 'systemMayContain' SYNTAX '1.3.6.1.4.1.1466.115.121.1.38' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.90 NAME 'unicodePwd' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.763 NAME 'aCSTotalNoOfFlows' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1806 NAME 'msDS-MembersForAzRole' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' )", + "( 1.2.840.113556.1.4.873 NAME 'fRSControlOutboundBacklog' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.89 NAME 'nTGroupMembers' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' )", + "( 1.2.840.113556.1.4.815 NAME 'canUpgradeScript' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.96 NAME 'pwdLastSet' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.228 NAME 'portName' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.1821 NAME 'msieee80211-Data' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.720 NAME 'dhcpUpdateTime' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 2.5.4.33 NAME 'roleOccupant' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' )", + "( 1.2.840.113556.1.4.1818 NAME 'msDS-AzTaskIsRoleDefinition' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.3.6.1.1.1.1.16 NAME 'ipServiceProtocol' SYNTAX '1.3.6.1.4.1.1466.115.121.1.26' )", + "( 1.2.840.113556.1.4.488 NAME 'fRSStagingPath' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 0.9.2342.19200300.100.1.25 NAME 'dc' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.502 NAME 'timeVolChange' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.303 NAME 'notificationList' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.952 NAME 'mSMQMigrated' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2290 NAME 'msDS-UserAuthNPolicyBL' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.53 NAME 'lastSetTime' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.894 NAME 'gPCFileSysPath' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 2.5.4.22 NAME 'teletexTerminalIdentifier' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' )", + "( 1.2.840.113556.1.2.471 NAME 'schemaVersion' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' )", + "( 1.2.840.113556.1.2.91 NAME 'repsFrom' SYNTAX 'OctetString' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.6.13.3.5 NAME 'msDFSR-StagingPath' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.3.6.1.1.1.1.15 NAME 'ipServicePort' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.781 NAME 'lastKnownParent' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' SINGLE-VALUE )", + "( 2.5.4.43 NAME 'initials' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.901 NAME 'aCSMaxNoOfAccountFiles' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1928 NAME 'msDS-RevealOnDemandGroup' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' )", + "( 1.2.840.113556.1.4.1689 NAME 'msDS-Non-Security-Group-Extra-Classes' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.344 NAME 'groupsToIgnore' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.896 NAME 'uSNSource' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.964 NAME 'mSMQNt4Flags' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2102 NAME 'msDS-ClaimSharesPossibleValuesWithBL' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' )", + "( 2.5.4.29 NAME 'presentationAddress' SYNTAX '1.3.6.1.4.1.1466.115.121.1.43' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2051 NAME 'msDS-OIDToGroupLink' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.369 NAME 'fSMORoleOwner' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1954 NAME 'ms-net-ieee-8023-GP-PolicyGUID' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.648 NAME 'primaryTelexNumber' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2283 NAME 'msDS-ServiceAllowedToAuthenticateFrom' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 2.5.4.12 NAME 'title' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 0.9.2342.19200300.100.1.1 NAME 'uid' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.1247 NAME 'interSiteTopologyRenew' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1697 NAME 'msDS-Settings' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.247 NAME 'printAttributes' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2188 NAME 'msDS-ValueTypeReferenceBL' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.2133 NAME 'msDNS-MaintainTrustAnchor' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.6.18.1.324 NAME 'msSFU30KeyValues' SYNTAX '1.3.6.1.4.1.1466.115.121.1.26' )", + "( 1.2.840.113556.1.4.1378 NAME 'mS-SQL-AppleTalk' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1663 NAME 'msDS-Replication-Notify-First-DSA-Delay' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.121 NAME 'securityIdentifier' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.748 NAME 'attributeDisplayNames' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 2.16.840.1.113730.3.1.35 NAME 'thumbnailPhoto' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2082 NAME 'msSPP-KMSIds' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' )", + "( 1.2.840.113556.1.4.758 NAME 'aCSMaxTokenRatePerFlow' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.2.121 NAME 'uSNLastObjRem' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.875 NAME 'fRSMemberReference' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1349 NAME 'gPCUserExtensionNames' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.138 NAME 'userParameters' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 2.5.4.36 NAME 'userCertificate' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' )", + "( 1.2.840.113556.1.6.13.3.102 NAME 'msDFSR-MemberReferenceBL' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' )", + "( 1.2.840.113556.1.2.131 NAME 'co' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 2.5.4.3 NAME 'cn' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.936 NAME 'mSMQEncryptKey' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.2.226 NAME 'adminDescription' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 2.5.4.34 NAME 'seeAlso' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' )", + "( 1.2.840.113556.1.2.444 NAME 'msExchAssistantName' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.667 NAME 'syncWithSID' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1998 NAME 'msFVE-VolumeGuid' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2107 NAME 'msTPM-SrkPubThumbprint' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.2.81 NAME 'info' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1686 NAME 'msWMI-ScopeGuid' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.151 NAME 'oEMInformation' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.935 NAME 'mSMQOSType' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.374 NAME 'rIDNextRID' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.2039 NAME 'msDFS-LinkPathv2' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2353 NAME 'msDS-ObjectSoa' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2323 NAME 'msDS-KeyApproximateLastLogonTimeStamp' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.141 NAME 'versionNumber' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.505 NAME 'oMTGuid' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.88 NAME 'nextRid' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2037 NAME 'msDFS-Propertiesv2' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.1994 NAME 'msTSLicenseVersion' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 2.16.840.1.113730.3.140 NAME 'userSMIMECertificate' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' )", + "( 1.2.840.113556.1.4.1985 NAME 'msTSBrokenConnectionAction' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.281 NAME 'printStaplingSupported' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.6.13.3.17 NAME 'msDFSR-Options' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.485 NAME 'fRSUpdateTimeout' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1967 NAME 'msDS-NC-RO-Replica-Locations' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' )", + "( 1.2.840.113556.1.4.1819 NAME 'msDS-AzApplicationData' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.6.18.1.347 NAME 'msSFU30PosixMemberOf' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' )", + "( 1.2.840.113556.1.4.1425 NAME 'msCOM-UserLink' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.6.13.3.24 NAME 'msDFSR-DfsLinkTarget' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.512 NAME 'siteObject' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.584 NAME 'meetingRating' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.1794 NAME 'msDS-NonMembersBL' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.776 NAME 'aCSDSBMPriority' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.520 NAME 'machinePasswordChangeInterval' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.669 NAME 'rIDSetReferences' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.941 NAME 'mSMQLongLived' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1241 NAME 'netbootMirrorDataFile' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.6.18.1.305 NAME 'msSFU30ResultAttributes' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.2236 NAME 'msds-memberOfTransitive' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.1427 NAME 'msCOM-DefaultPartitionLink' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.519 NAME 'lastBackupRestorationTime' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.337 NAME 'currMachineId' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.2.32 NAME 'attributeSyntax' SYNTAX '1.3.6.1.4.1.1466.115.121.1.38' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.362 NAME 'siteGUID' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.823 NAME 'certificateTemplates' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 2.16.840.1.113730.3.1.39 NAME 'preferredLanguage' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.6.18.1.352 NAME 'msSFU30CryptMethod' SYNTAX '1.3.6.1.4.1.1466.115.121.1.26' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1946 NAME 'msDS-PhoneticDisplayName' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 2.5.4.14 NAME 'searchGuide' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' )", + "( 1.2.840.113556.1.4.2270 NAME 'msDS-IsManaged' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.581 NAME 'meetingScope' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.673 NAME 'retiredReplDSASignatures' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.855 NAME 'netbootNewMachineNamingPolicy' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.1245 NAME 'globalAddressList' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' )", + "( 1.2.840.113556.1.2.227 NAME 'extensionName' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.884 NAME 'msRRASAttribute' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.6.18.1.349 NAME 'msSFU30NetgroupUserAtDomain' SYNTAX '1.3.6.1.4.1.1466.115.121.1.26' )", + "( 1.2.840.113556.1.4.680 NAME 'queryPoint' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.888 NAME 'iPSECNegotiationPolicyAction' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.6.13.3.29 NAME 'msDFSR-CachePolicy' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.299 NAME 'printMediaSupported' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.503 NAME 'timeRefresh' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.11 NAME 'authenticationOptions' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.198 NAME 'systemAuxiliaryClass' SYNTAX '1.3.6.1.4.1.1466.115.121.1.38' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.857 NAME 'netbootIntelliMirrorOSes' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.1406 NAME 'mS-SQL-AllowSnapshotFilesFTPDownloading' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1333 NAME 'pKIExtendedKeyUsage' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.2019 NAME 'msDS-LockoutThreshold' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1844 NAME 'msDS-QuotaTrustee' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.6.18.1.350 NAME 'msSFU30IsValidContainer' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.359 NAME 'netbootGUID' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1719 NAME 'msDS-DnsRootAlias' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.909 NAME 'extendedAttributeInfo' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' NO-USER-MODIFICATION )", + "( 1.3.6.1.1.1.1.10 NAME 'shadowExpire' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1248 NAME 'interSiteTopologyFailover' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2275 NAME 'msDS-CloudIsEnabled' SYNTAX '1.3.6.1.4.1.1466.115.121.1.7' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.887 NAME 'iPSECNegotiationPolicyType' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2059 NAME 'msDS-LocalEffectiveDeletionTime' SYNTAX '1.3.6.1.4.1.1466.115.121.1.24' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.587 NAME 'meetingStartTime' SYNTAX '1.3.6.1.4.1.1466.115.121.1.53' )", + "( 1.2.840.113556.1.4.2345 NAME 'msds-tokenGroupNames' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' NO-USER-MODIFICATION )", + "( 2.5.4.17 NAME 'postalCode' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.2.445 NAME 'originalDisplayTable' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1990 NAME 'msTSInitialProgram' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.662 NAME 'lockoutTime' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 0.9.2342.19200300.100.1.21 NAME 'secretary' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' )", + "( 1.2.840.113556.1.4.95 NAME 'pwdHistoryLength' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.759 NAME 'aCSMaxPeakBandwidthPerFlow' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.753 NAME 'nameServiceFlags' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.694 NAME 'previousParentCA' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' )", + "( 1.2.840.113556.1.4.142 NAME 'winsockAddresses' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' )", + "( 1.2.840.113556.1.4.2075 NAME 'msTSSecondaryDesktops' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' )", + "( 1.2.840.113556.1.4.2105 NAME 'msSPP-CSVLKPid' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.49 NAME 'badPasswordTime' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2184 NAME 'msDS-GeoCoordinatesLatitude' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2079 NAME 'msDS-RequiredForestBehaviorVersion' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.1955 NAME 'ms-net-ieee-8023-GP-PolicyData' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.237 NAME 'printBinNames' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.1382 NAME 'mS-SQL-InformationURL' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.6.13.3.13 NAME 'msDFSR-DirectoryFilter' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.148 NAME 'schemaIDGUID' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.2189 NAME 'msDS-TransformationRules' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2373 NAME 'msDS-SupersededManagedAccountLink' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' SINGLE-VALUE )", + "( 2.5.4.10 NAME 'o' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.504 NAME 'seqNotification' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 2.5.4.7 NAME 'l' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.57 NAME 'defaultLocalPolicyObject' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1801 NAME 'msDS-AzBizRule' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.948 NAME 'mSMQDigests' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' )", + "( 1.2.840.113556.1.2.327 NAME 'helpFileName' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.421 NAME 'domainWidePolicy' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' )", + "( 2.5.4.6 NAME 'c' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2139 NAME 'msDNS-DNSKEYRecordSetTTL' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 0.9.2342.19200300.100.1.11 NAME 'documentIdentifier' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.609 NAME 'sIDHistory' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' )", + "( 1.2.840.113556.1.4.1711 NAME 'msDS-SDReferenceDomain' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1367 NAME 'mS-SQL-Memory' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.715 NAME 'dhcpClasses' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' )", + "( 1.2.840.113556.1.4.1305 NAME 'moveTreeState' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' )", + "( 1.2.840.113556.1.4.757 NAME 'aCSDirection' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.631 NAME 'printPagesPerMinute' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.145 NAME 'revision' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.646 NAME 'otherFacsimileTelephoneNumber' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )", + "( 1.2.840.113556.1.4.1798 NAME 'msDS-AzApplicationName' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.366 NAME 'rpcNsAnnotation' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2190 NAME 'msDS-TransformationRulesCompiled' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.4.1636 NAME 'msWMI-StringDefault' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.813 NAME 'upgradeProductCode' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' )", + "( 1.2.840.113556.1.4.1951 NAME 'ms-net-ieee-80211-GP-PolicyGUID' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2098 NAME 'msDS-ClaimValueType' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.2.194 NAME 'adminDisplayName' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.879 NAME 'fRSServiceCommandStatus' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.361 NAME 'netbootMachineFilePath' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.67 NAME 'lSAModifiedCount' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.920 NAME 'mSMQBasePriority' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2277 NAME 'msDS-UserAllowedToAuthenticateTo' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2056 NAME 'msDS-HostServiceAccount' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' )", + "( 1.2.840.113556.1.4.1943 NAME 'msDS-PhoneticLastName' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.2055 NAME 'msDS-USNLastSyncSuccess' SYNTAX '1.2.840.113556.1.4.906' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.101 NAME 'privateKey' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 2.5.4.42 NAME 'givenName' SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.685 NAME 'parentCACertificateChain' SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.1924 NAME 'msDS-RevealedUsers' SYNTAX '1.2.840.113556.1.4.903' NO-USER-MODIFICATION )", + "( 1.2.840.113556.1.2.76 NAME 'objectVersion' SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )", + "( 1.2.840.113556.1.4.856 NAME 'netbootNewMachineOU' SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' SINGLE-VALUE )" + ], + "cn": [ + "Aggregate" + ], + "createTimestamp": [], + "dITContentRules": [ + "( 1.2.840.113556.1.6.13.4.6 NAME 'msDFSR-Content' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 2.5.6.14 NAME 'device' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ) MAY (uid $ manager $ ipHostNumber $ macAddress $ bootParameter $ bootFile ))", + "( 1.2.840.113556.1.5.205 NAME 'msWMI-IntRangeParam' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.5 NAME 'samServer' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.196 NAME 'msPKI-Enterprise-Oid' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.7000.53 NAME 'crossRefContainer' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.3.6.1.1.1.2.7 NAME 'ipNetwork' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 2.5.6.5 NAME 'organizationalUnit' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.152 NAME 'intellimirrorGroup' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.253 NAME 'msFVE-RecoveryInformation' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.262 NAME 'msImaging-PSPs' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.299 NAME 'msDS-ShadowPrincipal' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.251 NAME 'ms-net-ieee-80211-GroupPolicy' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.138 NAME 'aCSSubnet' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.43 NAME 'fTDfs' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.27 NAME 'rpcEntry')", + "( 1.2.840.113556.1.5.85 NAME 'dnsZone' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.4.2163 NAME 'msAuthz-CentralAccessRule' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.194 NAME 'msCOM-PartitionSet' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.242 NAME 'msDS-QuotaContainer' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.281 NAME 'msDS-ClaimsTransformationPolicies' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.146 NAME 'remoteStorageServicePoint' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.2 NAME 'samDomainBase')", + "( 1.2.840.113556.1.5.132 NAME 'dHCPClass' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.283 NAME 'msDS-CloudExtensions')", + "( 1.2.840.113556.1.5.89 NAME 'nTFRSSettings' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.24 NAME 'remoteMailRecipient' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ) MUST (cn ) MAY (telephoneNumber $ userCertificate $ info $ garbageCollPeriod $ msExchAssistantName $ msExchLabeledURI $ showInAddressBook $ userCert $ legacyExchangeDN $ msDS-PhoneticDisplayName $ msDS-GeoCoordinatesAltitude $ msDS-GeoCoordinatesLatitude $ msDS-GeoCoordinatesLongitude $ msDS-ExternalDirectoryObjectId $ userSMIMECertificate $ textEncodedORAddress $ secretary $ labeledURI ))", + "( 1.2.840.113556.1.5.221 NAME 'msTAPI-RtConference' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.201 NAME 'msWMI-SimplePolicyTemplate' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.6.18.2.212 NAME 'msSFU30NetId' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.49 NAME 'packageRegistration' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.139 NAME 'lostAndFound' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.14 NAME 'connectionPoint')", + "( 1.2.840.113556.1.5.6 NAME 'securityPrincipal')", + "( 1.2.840.113556.1.5.147 NAME 'siteLink' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.255 NAME 'msDS-PasswordSettings' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.4.2162 NAME 'msAuthz-CentralAccessRules' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.30 NAME 'serviceInstance' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.156 NAME 'rRASAdministrationDictionary' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.4.2164 NAME 'msAuthz-CentralAccessPolicy' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 2.16.840.1.113730.3.2.2 NAME 'inetOrgPerson' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ) MUST (objectSid $ sAMAccountName ) MAY (info $ garbageCollPeriod $ msExchAssistantName $ msExchLabeledURI $ securityIdentifier $ supplementalCredentials $ rid $ sAMAccountType $ sIDHistory $ showInAddressBook $ userCert $ legacyExchangeDN $ altSecurityIdentities $ tokenGroups $ tokenGroupsNoGCAcceptable $ accountNameHistory $ tokenGroupsGlobalAndUniversal $ msDS-KeyVersionNumber $ unixUserPassword $ msDS-GeoCoordinatesAltitude $ msDS-GeoCoordinatesLatitude $ msDS-GeoCoordinatesLongitude $ msDS-cloudExtensionAttribute1 $ msDS-cloudExtensionAttribute2 $ msDS-cloudExtensionAttribute3 $ msDS-cloudExtensionAttribute4 $ msDS-cloudExtensionAttribute5 $ msDS-cloudExtensionAttribute6 $ msDS-cloudExtensionAttribute7 $ msDS-cloudExtensionAttribute8 $ msDS-cloudExtensionAttribute9 $ msDS-cloudExtensionAttribute10 $ msDS-cloudExtensionAttribute11 $ msDS-cloudExtensionAttribute12 $ msDS-cloudExtensionAttribute13 $ msDS-cloudExtensionAttribute14 $ msDS-cloudExtensionAttribute15 $ msDS-cloudExtensionAttribute16 $ msDS-cloudExtensionAttribute17 $ msDS-cloudExtensionAttribute18 $ msDS-cloudExtensionAttribute19 $ msDS-cloudExtensionAttribute20 $ msDS-ExternalDirectoryObjectId $ msds-tokenGroupNames $ msds-tokenGroupNamesGlobalAndUniversal $ msds-tokenGroupNamesNoGCAcceptable $ textEncodedORAddress $ uidNumber $ gidNumber $ gecos $ unixHomeDirectory $ loginShell $ shadowLastChange $ shadowMin $ shadowMax $ shadowWarning $ shadowInactive $ shadowExpire $ shadowFlag ))", + "( 1.2.840.113556.1.5.52 NAME 'fileLinkTracking' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.18 NAME 'domainPolicy' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.6.18.2.216 NAME 'msSFU30NetworkUser' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 0.9.2342.19200300.100.4.19 NAME 'simpleSecurityObject')", + "( 1.2.840.113556.1.5.177 NAME 'pKICertificateTemplate' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.293 NAME 'msDS-AuthNPolicies' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.6.13.4.2 NAME 'msDFSR-Subscriber' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.31 NAME 'site' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.222 NAME 'msTAPI-RtPerson' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.68 NAME 'applicationSiteSettings')", + "( 1.2.840.113556.1.3.14 NAME 'attributeSchema' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.267 NAME 'msSPP-ActivationObject' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.220 NAME 'msDS-App-Configuration' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.3.23 NAME 'container' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.6.13.4.10 NAME 'msDFSR-Connection' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.207 NAME 'msWMI-UintRangeParam' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.23 NAME 'printQueue' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.260 NAME 'msDFS-DeletedLinkv2' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.140 NAME 'interSiteTransportContainer' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.130 NAME 'indexServerCatalog' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.98 NAME 'ipsecPolicy' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 2.5.6.0 NAME 'top')", + "( 1.2.840.113556.1.5.36 NAME 'volume' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.236 NAME 'msDS-AzOperation' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 2.5.6.9 NAME 'groupOfNames' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.12 NAME 'configuration' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.78 NAME 'licensingSiteSettings' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.69 NAME 'nTDSSiteSettings' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.269 NAME 'msDS-ClaimTypePropertyBase')", + "( 1.2.840.113556.1.5.273 NAME 'msDS-ResourceProperty' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.239 NAME 'msDS-AzRole' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.3.6.1.1.1.2.12 NAME 'bootableDevice')", + "( 1.2.840.113556.1.5.294 NAME 'msDS-AuthNPolicy' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.86 NAME 'dnsNode' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.210 NAME 'msWMI-StringSetParam' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.264 NAME 'msDS-ManagedServiceAccount' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ) MUST (objectSid $ sAMAccountName ) MAY (info $ garbageCollPeriod $ msExchAssistantName $ msExchLabeledURI $ securityIdentifier $ supplementalCredentials $ rid $ sAMAccountType $ sIDHistory $ showInAddressBook $ userCert $ legacyExchangeDN $ altSecurityIdentities $ tokenGroups $ tokenGroupsNoGCAcceptable $ accountNameHistory $ tokenGroupsGlobalAndUniversal $ msDS-KeyVersionNumber $ unixUserPassword $ msDS-GeoCoordinatesAltitude $ msDS-GeoCoordinatesLatitude $ msDS-GeoCoordinatesLongitude $ msDS-cloudExtensionAttribute1 $ msDS-cloudExtensionAttribute2 $ msDS-cloudExtensionAttribute3 $ msDS-cloudExtensionAttribute4 $ msDS-cloudExtensionAttribute5 $ msDS-cloudExtensionAttribute6 $ msDS-cloudExtensionAttribute7 $ msDS-cloudExtensionAttribute8 $ msDS-cloudExtensionAttribute9 $ msDS-cloudExtensionAttribute10 $ msDS-cloudExtensionAttribute11 $ msDS-cloudExtensionAttribute12 $ msDS-cloudExtensionAttribute13 $ msDS-cloudExtensionAttribute14 $ msDS-cloudExtensionAttribute15 $ msDS-cloudExtensionAttribute16 $ msDS-cloudExtensionAttribute17 $ msDS-cloudExtensionAttribute18 $ msDS-cloudExtensionAttribute19 $ msDS-cloudExtensionAttribute20 $ msDS-ExternalDirectoryObjectId $ msds-tokenGroupNames $ msds-tokenGroupNamesGlobalAndUniversal $ msds-tokenGroupNamesNoGCAcceptable $ textEncodedORAddress $ uidNumber $ gidNumber $ gecos $ unixHomeDirectory $ loginShell $ shadowLastChange $ shadowMin $ shadowMax $ shadowWarning $ shadowInactive $ shadowExpire $ shadowFlag $ ipHostNumber ))", + "( 1.2.840.113556.1.5.15 NAME 'contact' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ) MAY (userCertificate $ info $ garbageCollPeriod $ msExchAssistantName $ msExchLabeledURI $ showInAddressBook $ userCert $ legacyExchangeDN $ msDS-GeoCoordinatesAltitude $ msDS-GeoCoordinatesLatitude $ msDS-GeoCoordinatesLongitude $ msDS-ExternalDirectoryObjectId $ userSMIMECertificate $ textEncodedORAddress $ secretary $ labeledURI ))", + "( 1.3.6.1.1.1.2.0 NAME 'posixAccount')", + "( 1.2.840.113556.1.5.266 NAME 'msSPP-ActivationObjectsContainer' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.217 NAME 'msWMI-ObjectEncoding' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.33 NAME 'storage' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.67 NAME 'domainDNS' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ) MAY (cACertificate $ builtinCreationTime $ builtinModifiedCount $ creationTime $ domainPolicyObject $ forceLogoff $ defaultLocalPolicyObject $ lockoutDuration $ lockOutObservationWindow $ lSACreationTime $ lSAModifiedCount $ lockoutThreshold $ maxPwdAge $ minPwdAge $ minPwdLength $ modifiedCountAtLastProm $ nETBIOSName $ nextRid $ pwdProperties $ pwdHistoryLength $ privateKey $ replicaSource $ objectSid $ oEMInformation $ serverState $ uASCompat $ serverRole $ domainReplica $ modifiedCount $ controlAccessRights $ auditingPolicy $ eFSPolicy $ desktopProfile $ nTMixedDomain $ rIDManagerReference $ treeName $ pekList $ pekKeyChangeInterval $ gPLink $ gPOptions $ ms-DS-MachineAccountQuota $ msDS-LogonTimeSyncInterval $ msDS-PerUserTrustQuota $ msDS-AllUsersTrustQuota $ msDS-PerUserTrustTombstonesQuota ))", + "( 1.2.840.113556.1.5.92 NAME 'linkTrackVolEntry' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.3.6.1.1.1.2.11 NAME 'ieee802Device')", + "( 0.9.2342.19200300.100.4.17 NAME 'domainRelatedObject')", + "( 1.2.840.113556.1.5.235 NAME 'msDS-AzApplication' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.107 NAME 'sitesContainer' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.263 NAME 'msImaging-PostScanProcess' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.240 NAME 'msieee80211-Policy' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.95 NAME 'subnetContainer' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.297 NAME 'msDS-KeyCredential' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 0.9.2342.19200300.100.4.6 NAME 'document' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 2.5.6.6 NAME 'person' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.274 NAME 'msDS-ResourcePropertyList' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.270 NAME 'msDS-ClaimTypes' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.3.6.1.1.1.2.1 NAME 'shadowAccount')", + "( 1.2.840.113556.1.5.179 NAME 'mSMQMigratedUser' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.185 NAME 'mS-SQL-OLAPServer' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.3.6.1.4.1.1466.101.119.2 NAME 'dynamicObject')", + "( 1.2.840.113556.1.5.155 NAME 'nTFRSSubscriber' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.129 NAME 'rIDSet' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.3.58 NAME 'addressTemplate' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.154 NAME 'nTFRSSubscriptions' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.7000.47 NAME 'nTDSDSA' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.175 NAME 'infrastructureUpdate' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.6.18.2.215 NAME 'msSFU30DomainInfo' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.213 NAME 'msWMI-Som' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.82 NAME 'rpcProfile' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.164 NAME 'mSMQSiteLink' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.184 NAME 'mS-SQL-SQLServer' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.106 NAME 'queryPolicy' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.162 NAME 'mSMQConfiguration' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.257 NAME 'msDFS-NamespaceAnchor' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.6.13.4.7 NAME 'msDFSR-ContentSet' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.276 NAME 'msTPM-InformationObjectsContainer' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.209 NAME 'msWMI-RealRangeParam' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 2.5.6.7 NAME 'organizationalPerson' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.176 NAME 'msExchConfigurationContainer' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.278 NAME 'msKds-ProvRootKey' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.238 NAME 'msDS-AzTask' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.282 NAME 'msDS-GroupManagedServiceAccount' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ) MUST (objectSid $ sAMAccountName ) MAY (info $ garbageCollPeriod $ msExchAssistantName $ msExchLabeledURI $ securityIdentifier $ supplementalCredentials $ rid $ sAMAccountType $ sIDHistory $ showInAddressBook $ userCert $ legacyExchangeDN $ altSecurityIdentities $ tokenGroups $ tokenGroupsNoGCAcceptable $ accountNameHistory $ tokenGroupsGlobalAndUniversal $ msDS-KeyVersionNumber $ unixUserPassword $ msDS-GeoCoordinatesAltitude $ msDS-GeoCoordinatesLatitude $ msDS-GeoCoordinatesLongitude $ msDS-cloudExtensionAttribute1 $ msDS-cloudExtensionAttribute2 $ msDS-cloudExtensionAttribute3 $ msDS-cloudExtensionAttribute4 $ msDS-cloudExtensionAttribute5 $ msDS-cloudExtensionAttribute6 $ msDS-cloudExtensionAttribute7 $ msDS-cloudExtensionAttribute8 $ msDS-cloudExtensionAttribute9 $ msDS-cloudExtensionAttribute10 $ msDS-cloudExtensionAttribute11 $ msDS-cloudExtensionAttribute12 $ msDS-cloudExtensionAttribute13 $ msDS-cloudExtensionAttribute14 $ msDS-cloudExtensionAttribute15 $ msDS-cloudExtensionAttribute16 $ msDS-cloudExtensionAttribute17 $ msDS-cloudExtensionAttribute18 $ msDS-cloudExtensionAttribute19 $ msDS-cloudExtensionAttribute20 $ msDS-ExternalDirectoryObjectId $ msds-tokenGroupNames $ msds-tokenGroupNamesGlobalAndUniversal $ msds-tokenGroupNamesNoGCAcceptable $ textEncodedORAddress $ uidNumber $ gidNumber $ gecos $ unixHomeDirectory $ loginShell $ shadowLastChange $ shadowMin $ shadowMax $ shadowWarning $ shadowInactive $ shadowExpire $ shadowFlag $ ipHostNumber ))", + "( 1.3.6.1.1.1.2.9 NAME 'nisMap' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.3.6.1.1.1.2.10 NAME 'nisObject' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.277 NAME 'msKds-ProvServerConfiguration' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.6.18.2.217 NAME 'msSFU30NISMapConfig' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.7000.48 NAME 'serversContainer' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.90 NAME 'linkTrackVolumeTable' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.188 NAME 'mS-SQL-SQLDatabase' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.211 NAME 'msWMI-PolicyType' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.183 NAME 'dSUISettings' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.157 NAME 'groupPolicyContainer' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.3 NAME 'samDomain' MAY (forceLogoff $ objectSid $ oEMInformation $ serverState $ uASCompat $ serverRole $ domainReplica $ modifiedCount ))", + "( 1.2.840.113556.1.5.234 NAME 'msDS-AzAdminManager' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.214 NAME 'msWMI-Rule' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.254 NAME 'nTDSDSARO' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.286 NAME 'msDS-Device' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.34 NAME 'trustedDomain' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 0.9.2342.19200300.100.4.7 NAME 'room' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 2.5.6.4 NAME 'organization' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.272 NAME 'msDS-ClaimType' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.300 NAME 'dnsZoneScopeContainer' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.3.6.1.1.1.2.3 NAME 'ipService' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.3.6.1.1.1.2.4 NAME 'ipProtocol' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.80 NAME 'rpcGroup' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.17 NAME 'server' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.28 NAME 'secret' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.163 NAME 'mSMQEnterpriseSettings' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.202 NAME 'msWMI-MergeablePolicyTemplate' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.195 NAME 'msPKI-Key-Recovery-Agent' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ) MUST (objectSid $ sAMAccountName ) MAY (info $ garbageCollPeriod $ msExchAssistantName $ msExchLabeledURI $ securityIdentifier $ supplementalCredentials $ rid $ sAMAccountType $ sIDHistory $ showInAddressBook $ userCert $ legacyExchangeDN $ altSecurityIdentities $ tokenGroups $ tokenGroupsNoGCAcceptable $ accountNameHistory $ tokenGroupsGlobalAndUniversal $ msDS-KeyVersionNumber $ unixUserPassword $ msDS-GeoCoordinatesAltitude $ msDS-GeoCoordinatesLatitude $ msDS-GeoCoordinatesLongitude $ msDS-cloudExtensionAttribute1 $ msDS-cloudExtensionAttribute2 $ msDS-cloudExtensionAttribute3 $ msDS-cloudExtensionAttribute4 $ msDS-cloudExtensionAttribute5 $ msDS-cloudExtensionAttribute6 $ msDS-cloudExtensionAttribute7 $ msDS-cloudExtensionAttribute8 $ msDS-cloudExtensionAttribute9 $ msDS-cloudExtensionAttribute10 $ msDS-cloudExtensionAttribute11 $ msDS-cloudExtensionAttribute12 $ msDS-cloudExtensionAttribute13 $ msDS-cloudExtensionAttribute14 $ msDS-cloudExtensionAttribute15 $ msDS-cloudExtensionAttribute16 $ msDS-cloudExtensionAttribute17 $ msDS-cloudExtensionAttribute18 $ msDS-cloudExtensionAttribute19 $ msDS-cloudExtensionAttribute20 $ msDS-ExternalDirectoryObjectId $ msds-tokenGroupNames $ msds-tokenGroupNamesGlobalAndUniversal $ msds-tokenGroupNamesNoGCAcceptable $ textEncodedORAddress $ uidNumber $ gidNumber $ gecos $ unixHomeDirectory $ loginShell $ shadowLastChange $ shadowMin $ shadowMax $ shadowWarning $ shadowInactive $ shadowExpire $ shadowFlag ))", + "( 0.9.2342.19200300.100.4.18 NAME 'friendlyCountry' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.258 NAME 'msDFS-Namespacev2' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.96 NAME 'subnet' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.216 NAME 'applicationVersion' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 2.5.6.10 NAME 'residentialPerson' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 2.5.6.19 NAME 'cRLDistributionPoint' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.137 NAME 'aCSPolicy' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.77 NAME 'controlAccessRight' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.219 NAME 'msMQ-Group' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.8 NAME 'group' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ) MUST (cn $ objectSid $ sAMAccountName ) MAY (telephoneNumber $ userPassword $ userCertificate $ info $ garbageCollPeriod $ msExchAssistantName $ msExchLabeledURI $ securityIdentifier $ supplementalCredentials $ rid $ sAMAccountType $ sIDHistory $ showInAddressBook $ userCert $ legacyExchangeDN $ altSecurityIdentities $ tokenGroups $ tokenGroupsNoGCAcceptable $ accountNameHistory $ tokenGroupsGlobalAndUniversal $ msDS-KeyVersionNumber $ unixUserPassword $ msDS-PhoneticDisplayName $ msDS-GeoCoordinatesAltitude $ msDS-GeoCoordinatesLatitude $ msDS-GeoCoordinatesLongitude $ msDS-ExternalDirectoryObjectId $ msds-tokenGroupNames $ msds-tokenGroupNamesGlobalAndUniversal $ msds-tokenGroupNamesNoGCAcceptable $ userSMIMECertificate $ textEncodedORAddress $ secretary $ labeledURI $ gidNumber $ memberUid ))", + "( 1.2.840.113556.1.6.23.2 NAME 'msPrint-ConnectionPolicy' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.3.11 NAME 'crossRef' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.6.13.4.9 NAME 'msDFSR-Member' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.3.59 NAME 'displayTemplate' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.3.13 NAME 'classSchema' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.200 NAME 'msWMI-PolicyTemplate' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.165 NAME 'mSMQSettings' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.3.6.1.1.1.2.5 NAME 'oncRpc' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.126 NAME 'serviceConnectionPoint' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.4 NAME 'builtinDomain' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ) MAY (creationTime $ forceLogoff $ lockoutDuration $ lockOutObservationWindow $ lockoutThreshold $ maxPwdAge $ minPwdAge $ minPwdLength $ modifiedCountAtLastProm $ nextRid $ pwdProperties $ pwdHistoryLength $ objectSid $ oEMInformation $ serverState $ uASCompat $ serverRole $ domainReplica $ modifiedCount ))", + "( 1.2.840.113556.1.5.241 NAME 'msDS-AppData' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.73 NAME 'rpcServerElement' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.150 NAME 'rRASAdministrationConnectionPoint' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.191 NAME 'aCSResourceLimits' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 2.5.6.3 NAME 'locality' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.3.6.1.1.1.2.6 NAME 'ipHost')", + "( 1.2.840.113556.1.5.298 NAME 'msDS-ShadowPrincipalContainer' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.301 NAME 'dnsZoneScope' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.275 NAME 'msTPM-InformationObject' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.289 NAME 'msDS-DeviceContainer' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.4.2129 NAME 'msDNS-ServerSettings' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.76 NAME 'foreignSecurityPrincipal' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.44 NAME 'classStore' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 0.9.2342.19200300.100.4.5 NAME 'account' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.26 NAME 'rpcProfileElement' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.215 NAME 'msWMI-WMIGPO' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.243 NAME 'msDS-QuotaControl' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.256 NAME 'msDS-PasswordSettingsContainer' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.187 NAME 'mS-SQL-SQLPublication' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.9 NAME 'user' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ) MUST (objectSid $ sAMAccountName ) MAY (info $ garbageCollPeriod $ msExchAssistantName $ msExchLabeledURI $ securityIdentifier $ supplementalCredentials $ rid $ sAMAccountType $ sIDHistory $ showInAddressBook $ userCert $ legacyExchangeDN $ altSecurityIdentities $ tokenGroups $ tokenGroupsNoGCAcceptable $ accountNameHistory $ tokenGroupsGlobalAndUniversal $ msDS-KeyVersionNumber $ unixUserPassword $ msDS-GeoCoordinatesAltitude $ msDS-GeoCoordinatesLatitude $ msDS-GeoCoordinatesLongitude $ msDS-cloudExtensionAttribute1 $ msDS-cloudExtensionAttribute2 $ msDS-cloudExtensionAttribute3 $ msDS-cloudExtensionAttribute4 $ msDS-cloudExtensionAttribute5 $ msDS-cloudExtensionAttribute6 $ msDS-cloudExtensionAttribute7 $ msDS-cloudExtensionAttribute8 $ msDS-cloudExtensionAttribute9 $ msDS-cloudExtensionAttribute10 $ msDS-cloudExtensionAttribute11 $ msDS-cloudExtensionAttribute12 $ msDS-cloudExtensionAttribute13 $ msDS-cloudExtensionAttribute14 $ msDS-cloudExtensionAttribute15 $ msDS-cloudExtensionAttribute16 $ msDS-cloudExtensionAttribute17 $ msDS-cloudExtensionAttribute18 $ msDS-cloudExtensionAttribute19 $ msDS-cloudExtensionAttribute20 $ msDS-ExternalDirectoryObjectId $ msds-tokenGroupNames $ msds-tokenGroupNamesGlobalAndUniversal $ msds-tokenGroupNamesNoGCAcceptable $ textEncodedORAddress $ uidNumber $ gidNumber $ gecos $ unixHomeDirectory $ loginShell $ shadowLastChange $ shadowMin $ shadowMax $ shadowWarning $ shadowInactive $ shadowExpire $ shadowFlag ))", + "( 1.2.840.113556.1.5.259 NAME 'msDFS-Linkv2' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.141 NAME 'interSiteTransport' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.6.13.4.4 NAME 'msDFSR-GlobalSettings' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.29 NAME 'serviceClass' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.189 NAME 'mS-SQL-OLAPDatabase' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 2.5.6.16 NAME 'certificationAuthority' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.104 NAME 'meeting' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.287 NAME 'msDS-DeviceRegistrationServiceContainer' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.71 NAME 'nTDSConnection' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.291 NAME 'msDS-AuthNPolicySilos' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.218 NAME 'msMQ-Custom-Recipient' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.72 NAME 'nTDSService' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.3.9 NAME 'dMD' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.280 NAME 'msDS-ClaimsTransformationPolicyType' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 0.9.2342.19200300.100.4.14 NAME 'rFC822LocalPart' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.190 NAME 'mS-SQL-OLAPCube' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.208 NAME 'msWMI-UintSetParam' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.3.6.1.1.1.2.2 NAME 'posixGroup')", + "( 2.5.6.17 NAME 'groupOfUniqueNames' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.252 NAME 'ms-net-ieee-8023-GroupPolicy' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.119 NAME 'ipsecNegotiationPolicy' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.292 NAME 'msDS-AuthNPolicySilo' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.121 NAME 'ipsecNFA' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.42 NAME 'dfsConfiguration' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 0.9.2342.19200300.100.4.9 NAME 'documentSeries' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.271 NAME 'msDS-ResourceProperties' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.91 NAME 'linkTrackObjectMoveTable' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.136 NAME 'rpcContainer' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.83 NAME 'rIDManager' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.206 NAME 'msWMI-IntSetParam' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.6.13.4.5 NAME 'msDFSR-ReplicationGroup' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.125 NAME 'addressBookContainer' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.7000.49 NAME 'applicationSettings')", + "( 1.2.840.113556.1.5.265 NAME 'msDS-OptionalFeature' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.94 NAME 'serviceAdministrationPoint' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.102 NAME 'nTFRSReplicaSet' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.203 NAME 'msWMI-RangeParam' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.7000.56 NAME 'ipsecBase')", + "( 1.2.840.113556.1.6.13.4.3 NAME 'msDFSR-Subscription' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.223 NAME 'msPKI-PrivateKeyRecoveryAgent' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.178 NAME 'pKIEnrollmentService' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.6.18.2.211 NAME 'msSFU30MailAliases' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.53 NAME 'typeLibrary' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.6.13.4.8 NAME 'msDFSR-Topology' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.237 NAME 'msDS-AzScope' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.74 NAME 'categoryRegistration' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.11 NAME 'comConnectionPoint' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.93 NAME 'linkTrackOMTEntry' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.10 NAME 'classRegistration' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.148 NAME 'siteLinkBridge' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.81 NAME 'rpcServer' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.302 NAME 'msDS-DelegatedManagedServiceAccount' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ) MUST (objectSid $ sAMAccountName ) MAY (info $ garbageCollPeriod $ msExchAssistantName $ msExchLabeledURI $ securityIdentifier $ supplementalCredentials $ rid $ sAMAccountType $ sIDHistory $ showInAddressBook $ userCert $ legacyExchangeDN $ altSecurityIdentities $ tokenGroups $ tokenGroupsNoGCAcceptable $ accountNameHistory $ tokenGroupsGlobalAndUniversal $ msDS-KeyVersionNumber $ unixUserPassword $ msDS-GeoCoordinatesAltitude $ msDS-GeoCoordinatesLatitude $ msDS-GeoCoordinatesLongitude $ msDS-cloudExtensionAttribute1 $ msDS-cloudExtensionAttribute2 $ msDS-cloudExtensionAttribute3 $ msDS-cloudExtensionAttribute4 $ msDS-cloudExtensionAttribute5 $ msDS-cloudExtensionAttribute6 $ msDS-cloudExtensionAttribute7 $ msDS-cloudExtensionAttribute8 $ msDS-cloudExtensionAttribute9 $ msDS-cloudExtensionAttribute10 $ msDS-cloudExtensionAttribute11 $ msDS-cloudExtensionAttribute12 $ msDS-cloudExtensionAttribute13 $ msDS-cloudExtensionAttribute14 $ msDS-cloudExtensionAttribute15 $ msDS-cloudExtensionAttribute16 $ msDS-cloudExtensionAttribute17 $ msDS-cloudExtensionAttribute18 $ msDS-cloudExtensionAttribute19 $ msDS-cloudExtensionAttribute20 $ msDS-ExternalDirectoryObjectId $ msds-tokenGroupNames $ msds-tokenGroupNamesGlobalAndUniversal $ msds-tokenGroupNamesNoGCAcceptable $ textEncodedORAddress $ uidNumber $ gidNumber $ gecos $ unixHomeDirectory $ loginShell $ shadowLastChange $ shadowMin $ shadowMax $ shadowWarning $ shadowInactive $ shadowExpire $ shadowFlag $ ipHostNumber ))", + "( 1.2.840.113556.1.3.46 NAME 'mailRecipient')", + "( 1.2.840.113556.1.5.1 NAME 'securityObject')", + "( 1.2.840.113556.1.5.20 NAME 'leaf')", + "( 1.2.840.113556.1.5.151 NAME 'intellimirrorSCP' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.6.13.4.1 NAME 'msDFSR-LocalSettings' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.186 NAME 'mS-SQL-SQLRepository' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 2.5.6.8 NAME 'organizationalRole' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 2.5.20.1 NAME 'subSchema' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.284 NAME 'msDS-DeviceRegistrationService' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.84 NAME 'displaySpecifier' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.212 NAME 'msWMI-ShadowObject' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.59 NAME 'fileLinkTrackingEntry' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.4.2161 NAME 'msAuthz-CentralAccessPolicies' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.161 NAME 'mSMQQueue' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.193 NAME 'msCOM-Partition' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.118 NAME 'ipsecFilter' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 2.5.6.2 NAME 'country' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.97 NAME 'physicalLocation' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.3.30 NAME 'computer' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ) MUST (objectSid $ sAMAccountName ) MAY (info $ garbageCollPeriod $ msExchAssistantName $ msExchLabeledURI $ securityIdentifier $ supplementalCredentials $ rid $ sAMAccountType $ sIDHistory $ showInAddressBook $ userCert $ legacyExchangeDN $ altSecurityIdentities $ tokenGroups $ tokenGroupsNoGCAcceptable $ accountNameHistory $ tokenGroupsGlobalAndUniversal $ msDS-KeyVersionNumber $ unixUserPassword $ msDS-GeoCoordinatesAltitude $ msDS-GeoCoordinatesLatitude $ msDS-GeoCoordinatesLongitude $ msDS-cloudExtensionAttribute1 $ msDS-cloudExtensionAttribute2 $ msDS-cloudExtensionAttribute3 $ msDS-cloudExtensionAttribute4 $ msDS-cloudExtensionAttribute5 $ msDS-cloudExtensionAttribute6 $ msDS-cloudExtensionAttribute7 $ msDS-cloudExtensionAttribute8 $ msDS-cloudExtensionAttribute9 $ msDS-cloudExtensionAttribute10 $ msDS-cloudExtensionAttribute11 $ msDS-cloudExtensionAttribute12 $ msDS-cloudExtensionAttribute13 $ msDS-cloudExtensionAttribute14 $ msDS-cloudExtensionAttribute15 $ msDS-cloudExtensionAttribute16 $ msDS-cloudExtensionAttribute17 $ msDS-cloudExtensionAttribute18 $ msDS-cloudExtensionAttribute19 $ msDS-cloudExtensionAttribute20 $ msDS-ExternalDirectoryObjectId $ msds-tokenGroupNames $ msds-tokenGroupNamesGlobalAndUniversal $ msds-tokenGroupNamesNoGCAcceptable $ textEncodedORAddress $ uidNumber $ gidNumber $ gecos $ unixHomeDirectory $ loginShell $ shadowLastChange $ shadowMin $ shadowMax $ shadowWarning $ shadowInactive $ shadowExpire $ shadowFlag $ ipHostNumber ))", + "( 1.3.6.1.1.1.2.8 NAME 'nisNetgroup' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.153 NAME 'nTFRSMember' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 2.5.6.12 NAME 'applicationEntity' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 2.5.6.11 NAME 'applicationProcess' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.279 NAME 'msDS-ValueType' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.204 NAME 'msWMI-UnknownRangeParam' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.66 NAME 'domain')", + "( 2.5.6.13 NAME 'dSA' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))", + "( 1.2.840.113556.1.5.120 NAME 'ipsecISAKMPPolicy' AUX ( mailRecipient $ posixGroup $ ipHost $ samDomain $ dynamicObject $ shadowAccount $ domainRelatedObject $ ieee802Device $ posixAccount $ bootableDevice $ simpleSecurityObject $ securityPrincipal $ msDS-CloudExtensions $ samDomainBase ))" + ], + "dITStructureRules": [], + "dSCorePropagationData": [ + "16010101000000.0Z" + ], + "distinguishedName": [ + "CN=Aggregate,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "instanceType": [ + "4" + ], + "ldapSyntaxes": [], + "matchingRuleUse": [], + "matchingRules": [], + "modifyTimeStamp": [ + "20260331135133.0Z" + ], + "name": [ + "Aggregate" + ], + "nameForms": [], + "objectCategory": [ + "CN=SubSchema,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io" + ], + "objectClass": [ + "top", + "subSchema" + ], + "objectClasses": [ + "( 1.2.840.113556.1.6.13.4.6 NAME 'msDFSR-Content' SUP top STRUCTURAL MAY (msDFSR-Extension $ msDFSR-Flags $ msDFSR-Options $ msDFSR-Options2 ) )", + "( 2.5.6.14 NAME 'device' SUP top STRUCTURAL MUST (cn ) MAY (serialNumber $ l $ o $ ou $ owner $ seeAlso $ msSFU30Name $ msSFU30Aliases $ msSFU30NisDomain $ nisMapName ) )", + "( 1.2.840.113556.1.5.205 NAME 'msWMI-IntRangeParam' SUP msWMI-RangeParam STRUCTURAL MUST (msWMI-IntDefault ) MAY (msWMI-IntMax $ msWMI-IntMin ) )", + "( 1.2.840.113556.1.5.5 NAME 'samServer' SUP securityObject STRUCTURAL MAY (samDomainUpdates ) )", + "( 1.2.840.113556.1.5.196 NAME 'msPKI-Enterprise-Oid' SUP top STRUCTURAL MAY (msPKI-Cert-Template-OID $ msPKI-OID-Attribute $ msPKI-OID-CPS $ msPKI-OID-User-Notice $ msPKI-OIDLocalizedName $ msDS-OIDToGroupLink ) )", + "( 1.2.840.113556.1.5.7000.53 NAME 'crossRefContainer' SUP top STRUCTURAL MAY (uPNSuffixes $ msDS-Behavior-Version $ msDS-SPNSuffixes $ msDS-UpdateScript $ msDS-ExecuteScriptPassword $ msDS-EnabledFeature ) )", + "( 1.3.6.1.1.1.2.7 NAME 'ipNetwork' SUP top STRUCTURAL MUST (cn $ ipNetworkNumber ) MAY (l $ description $ uid $ manager $ msSFU30Name $ msSFU30Aliases $ msSFU30NisDomain $ ipNetmaskNumber $ nisMapName ) )", + "( 2.5.6.5 NAME 'organizationalUnit' SUP top STRUCTURAL MUST (ou ) MAY (c $ l $ st $ street $ searchGuide $ businessCategory $ postalAddress $ postalCode $ postOfficeBox $ physicalDeliveryOfficeName $ telephoneNumber $ telexNumber $ teletexTerminalIdentifier $ facsimileTelephoneNumber $ x121Address $ internationalISDNNumber $ registeredAddress $ destinationIndicator $ preferredDeliveryMethod $ seeAlso $ userPassword $ co $ countryCode $ desktopProfile $ defaultGroup $ managedBy $ uPNSuffixes $ gPLink $ gPOptions $ msCOM-UserPartitionSetLink $ thumbnailLogo ) )", + "( 1.2.840.113556.1.5.152 NAME 'intellimirrorGroup' SUP top STRUCTURAL )", + "( 1.2.840.113556.1.5.253 NAME 'msFVE-RecoveryInformation' SUP top STRUCTURAL MUST (msFVE-RecoveryPassword $ msFVE-RecoveryGuid ) MAY (msFVE-VolumeGuid $ msFVE-KeyPackage ) )", + "( 1.2.840.113556.1.5.262 NAME 'msImaging-PSPs' SUP container STRUCTURAL )", + "( 1.2.840.113556.1.5.299 NAME 'msDS-ShadowPrincipal' SUP top STRUCTURAL MUST (msDS-ShadowPrincipalSid ) MAY (member ) )", + "( 1.2.840.113556.1.5.251 NAME 'ms-net-ieee-80211-GroupPolicy' SUP top STRUCTURAL MAY (ms-net-ieee-80211-GP-PolicyGUID $ ms-net-ieee-80211-GP-PolicyData $ ms-net-ieee-80211-GP-PolicyReserved ) )", + "( 1.2.840.113556.1.5.138 NAME 'aCSSubnet' SUP top STRUCTURAL MAY (aCSMaxTokenRatePerFlow $ aCSMaxPeakBandwidthPerFlow $ aCSMaxDurationPerFlow $ aCSAllocableRSVPBandwidth $ aCSMaxPeakBandwidth $ aCSEnableRSVPMessageLogging $ aCSEventLogLevel $ aCSEnableACSService $ aCSRSVPLogFilesLocation $ aCSMaxNoOfLogFiles $ aCSMaxSizeOfRSVPLogFile $ aCSDSBMPriority $ aCSDSBMRefresh $ aCSDSBMDeadTime $ aCSCacheTimeout $ aCSNonReservedTxLimit $ aCSNonReservedTxSize $ aCSEnableRSVPAccounting $ aCSRSVPAccountFilesLocation $ aCSMaxNoOfAccountFiles $ aCSMaxSizeOfRSVPAccountFile $ aCSServerList $ aCSNonReservedPeakRate $ aCSNonReservedTokenSize $ aCSNonReservedMaxSDUSize $ aCSNonReservedMinPolicedSize ) )", + "( 1.2.840.113556.1.5.43 NAME 'fTDfs' SUP top STRUCTURAL MUST (remoteServerName $ pKTGuid $ pKT ) MAY (keywords $ uNCName $ managedBy ) )", + "( 1.2.840.113556.1.5.27 NAME 'rpcEntry' SUP connectionPoint ABSTRACT )", + "( 1.2.840.113556.1.5.85 NAME 'dnsZone' SUP top STRUCTURAL MUST (dc ) MAY (dnsAllowDynamic $ dnsAllowXFR $ dnsSecureSecondaries $ dnsNotifySecondaries $ managedBy $ dNSProperty $ msDNS-IsSigned $ msDNS-SignWithNSEC3 $ msDNS-NSEC3OptOut $ msDNS-MaintainTrustAnchor $ msDNS-DSRecordAlgorithms $ msDNS-RFC5011KeyRollovers $ msDNS-NSEC3HashAlgorithm $ msDNS-NSEC3RandomSaltLength $ msDNS-NSEC3Iterations $ msDNS-DNSKEYRecordSetTTL $ msDNS-DSRecordSetTTL $ msDNS-SignatureInceptionOffset $ msDNS-SecureDelegationPollingPeriod $ msDNS-SigningKeyDescriptors $ msDNS-SigningKeys $ msDNS-DNSKEYRecords $ msDNS-ParentHasSecureDelegation $ msDNS-PropagationTime $ msDNS-NSEC3UserSalt $ msDNS-NSEC3CurrentSalt ) )", + "( 1.2.840.113556.1.4.2163 NAME 'msAuthz-CentralAccessRule' SUP top STRUCTURAL MAY (Enabled $ msAuthz-EffectiveSecurityPolicy $ msAuthz-ProposedSecurityPolicy $ msAuthz-LastEffectiveSecurityPolicy $ msAuthz-ResourceCondition $ msAuthz-MemberRulesInCentralAccessPolicyBL ) )", + "( 1.2.840.113556.1.5.194 NAME 'msCOM-PartitionSet' SUP top STRUCTURAL MAY (msCOM-PartitionLink $ msCOM-DefaultPartitionLink $ msCOM-ObjectId ) )", + "( 1.2.840.113556.1.5.242 NAME 'msDS-QuotaContainer' SUP top STRUCTURAL MUST (cn ) MAY (msDS-DefaultQuota $ msDS-TombstoneQuotaFactor $ msDS-QuotaEffective $ msDS-QuotaUsed $ msDS-TopQuotaUsage ) )", + "( 1.2.840.113556.1.5.281 NAME 'msDS-ClaimsTransformationPolicies' SUP top STRUCTURAL )", + "( 1.2.840.113556.1.5.146 NAME 'remoteStorageServicePoint' SUP serviceAdministrationPoint STRUCTURAL MAY (remoteStorageGUID ) )", + "( 1.2.840.113556.1.5.2 NAME 'samDomainBase' SUP top AUXILIARY MAY (nTSecurityDescriptor $ creationTime $ forceLogoff $ lockoutDuration $ lockOutObservationWindow $ lockoutThreshold $ maxPwdAge $ minPwdAge $ minPwdLength $ modifiedCountAtLastProm $ nextRid $ pwdProperties $ pwdHistoryLength $ revision $ objectSid $ oEMInformation $ serverState $ uASCompat $ serverRole $ domainReplica $ modifiedCount ) )", + "( 1.2.840.113556.1.5.132 NAME 'dHCPClass' SUP top STRUCTURAL MUST (dhcpUniqueKey $ dhcpType $ dhcpFlags $ dhcpIdentification ) MAY (networkAddress $ dhcpObjName $ dhcpObjDescription $ dhcpServers $ dhcpSubnets $ dhcpMask $ dhcpRanges $ dhcpSites $ dhcpReservations $ superScopes $ superScopeDescription $ optionDescription $ optionsLocation $ dhcpOptions $ dhcpClasses $ mscopeId $ dhcpState $ dhcpProperties $ dhcpMaxKey $ dhcpUpdateTime ) )", + "( 1.2.840.113556.1.5.283 NAME 'msDS-CloudExtensions' SUP top AUXILIARY MAY (msDS-cloudExtensionAttribute1 $ msDS-cloudExtensionAttribute2 $ msDS-cloudExtensionAttribute3 $ msDS-cloudExtensionAttribute4 $ msDS-cloudExtensionAttribute5 $ msDS-cloudExtensionAttribute6 $ msDS-cloudExtensionAttribute7 $ msDS-cloudExtensionAttribute8 $ msDS-cloudExtensionAttribute9 $ msDS-cloudExtensionAttribute10 $ msDS-cloudExtensionAttribute11 $ msDS-cloudExtensionAttribute12 $ msDS-cloudExtensionAttribute13 $ msDS-cloudExtensionAttribute14 $ msDS-cloudExtensionAttribute15 $ msDS-cloudExtensionAttribute16 $ msDS-cloudExtensionAttribute17 $ msDS-cloudExtensionAttribute18 $ msDS-cloudExtensionAttribute19 $ msDS-cloudExtensionAttribute20 ) )", + "( 1.2.840.113556.1.5.89 NAME 'nTFRSSettings' SUP applicationSettings STRUCTURAL MAY (fRSExtensions $ managedBy ) )", + "( 1.2.840.113556.1.5.24 NAME 'remoteMailRecipient' SUP top STRUCTURAL MAY (remoteSource $ remoteSourceType $ managedBy ) )", + "( 1.2.840.113556.1.5.221 NAME 'msTAPI-RtConference' SUP top STRUCTURAL MUST (msTAPI-uid ) MAY (msTAPI-ProtocolId $ msTAPI-ConferenceBlob ) )", + "( 1.2.840.113556.1.5.201 NAME 'msWMI-SimplePolicyTemplate' SUP msWMI-PolicyTemplate STRUCTURAL MUST (msWMI-TargetObject ) )", + "( 1.2.840.113556.1.6.18.2.212 NAME 'msSFU30NetId' SUP top STRUCTURAL MAY (msSFU30Name $ msSFU30KeyValues $ msSFU30NisDomain $ nisMapName ) )", + "( 1.2.840.113556.1.5.49 NAME 'packageRegistration' SUP top STRUCTURAL MAY (msiScriptPath $ cOMClassID $ cOMInterfaceID $ cOMProgID $ localeID $ machineArchitecture $ iconPath $ cOMTypelibId $ vendor $ packageType $ setupCommand $ packageName $ packageFlags $ versionNumberHi $ versionNumberLo $ lastUpdateSequence $ managedBy $ msiFileList $ categories $ upgradeProductCode $ msiScript $ canUpgradeScript $ fileExtPriority $ productCode $ msiScriptName $ msiScriptSize $ installUiLevel ) )", + "( 1.2.840.113556.1.5.139 NAME 'lostAndFound' SUP top STRUCTURAL MAY (moveTreeState ) )", + "( 1.2.840.113556.1.5.14 NAME 'connectionPoint' SUP leaf ABSTRACT MUST (cn ) MAY (keywords $ managedBy $ msDS-Settings ) )", + "( 1.2.840.113556.1.5.6 NAME 'securityPrincipal' SUP top AUXILIARY MUST (objectSid $ sAMAccountName ) MAY (nTSecurityDescriptor $ securityIdentifier $ supplementalCredentials $ rid $ sAMAccountType $ sIDHistory $ altSecurityIdentities $ tokenGroups $ tokenGroupsNoGCAcceptable $ accountNameHistory $ tokenGroupsGlobalAndUniversal $ msDS-KeyVersionNumber $ msds-tokenGroupNames $ msds-tokenGroupNamesGlobalAndUniversal $ msds-tokenGroupNamesNoGCAcceptable ) )", + "( 1.2.840.113556.1.5.147 NAME 'siteLink' SUP top STRUCTURAL MUST (siteList ) MAY (cost $ schedule $ options $ replInterval ) )", + "( 1.2.840.113556.1.5.255 NAME 'msDS-PasswordSettings' SUP top STRUCTURAL MUST (msDS-MaximumPasswordAge $ msDS-MinimumPasswordAge $ msDS-MinimumPasswordLength $ msDS-PasswordHistoryLength $ msDS-PasswordComplexityEnabled $ msDS-PasswordReversibleEncryptionEnabled $ msDS-LockoutObservationWindow $ msDS-LockoutDuration $ msDS-LockoutThreshold $ msDS-PasswordSettingsPrecedence ) MAY (msDS-PSOAppliesTo ) )", + "( 1.2.840.113556.1.4.2162 NAME 'msAuthz-CentralAccessRules' SUP top STRUCTURAL )", + "( 1.2.840.113556.1.5.30 NAME 'serviceInstance' SUP connectionPoint STRUCTURAL MUST (displayName $ serviceClassID ) MAY (winsockAddresses $ serviceInstanceVersion ) )", + "( 1.2.840.113556.1.5.156 NAME 'rRASAdministrationDictionary' SUP top STRUCTURAL MAY (msRRASVendorAttributeEntry ) )", + "( 1.2.840.113556.1.4.2164 NAME 'msAuthz-CentralAccessPolicy' SUP top STRUCTURAL MAY (msAuthz-CentralAccessPolicyID $ msAuthz-MemberRulesInCentralAccessPolicy ) )", + "( 2.16.840.1.113730.3.2.2 NAME 'inetOrgPerson' SUP user STRUCTURAL MAY (o $ businessCategory $ userCertificate $ givenName $ initials $ x500uniqueIdentifier $ displayName $ employeeNumber $ employeeType $ homePostalAddress $ userSMIMECertificate $ uid $ mail $ roomNumber $ photo $ manager $ homePhone $ secretary $ mobile $ pager $ audio $ jpegPhoto $ carLicense $ departmentNumber $ preferredLanguage $ userPKCS12 $ labeledURI ) )", + "( 1.2.840.113556.1.5.52 NAME 'fileLinkTracking' SUP top STRUCTURAL )", + "( 1.2.840.113556.1.5.18 NAME 'domainPolicy' SUP leaf STRUCTURAL MAY (authenticationOptions $ forceLogoff $ defaultLocalPolicyObject $ lockoutDuration $ lockOutObservationWindow $ lockoutThreshold $ maxPwdAge $ maxRenewAge $ maxTicketAge $ minPwdAge $ minPwdLength $ minTicketAge $ pwdProperties $ pwdHistoryLength $ proxyLifetime $ eFSPolicy $ publicKeyPolicy $ domainWidePolicy $ domainPolicyReference $ qualityOfService $ ipsecPolicyReference $ managedBy $ domainCAs ) )", + "( 1.2.840.113556.1.6.18.2.216 NAME 'msSFU30NetworkUser' SUP top STRUCTURAL MAY (msSFU30Name $ msSFU30KeyValues $ msSFU30NisDomain $ nisMapName ) )", + "( 0.9.2342.19200300.100.4.19 NAME 'simpleSecurityObject' SUP top AUXILIARY MAY (userPassword ) )", + "( 1.2.840.113556.1.5.177 NAME 'pKICertificateTemplate' SUP top STRUCTURAL MAY (displayName $ flags $ pKIDefaultKeySpec $ pKIKeyUsage $ pKIMaxIssuingDepth $ pKICriticalExtensions $ pKIExpirationPeriod $ pKIOverlapPeriod $ pKIExtendedKeyUsage $ pKIDefaultCSPs $ pKIEnrollmentAccess $ msPKI-RA-Signature $ msPKI-Enrollment-Flag $ msPKI-Private-Key-Flag $ msPKI-Certificate-Name-Flag $ msPKI-Minimal-Key-Size $ msPKI-Template-Schema-Version $ msPKI-Template-Minor-Revision $ msPKI-Cert-Template-OID $ msPKI-Supersede-Templates $ msPKI-RA-Policies $ msPKI-Certificate-Policy $ msPKI-Certificate-Application-Policy $ msPKI-RA-Application-Policies ) )", + "( 1.2.840.113556.1.5.293 NAME 'msDS-AuthNPolicies' SUP top STRUCTURAL )", + "( 1.2.840.113556.1.6.13.4.2 NAME 'msDFSR-Subscriber' SUP top STRUCTURAL MUST (msDFSR-ReplicationGroupGuid $ msDFSR-MemberReference ) MAY (msDFSR-Extension $ msDFSR-Flags $ msDFSR-Options $ msDFSR-Options2 ) )", + "( 1.2.840.113556.1.5.31 NAME 'site' SUP top STRUCTURAL MAY (location $ notificationList $ managedBy $ gPLink $ gPOptions $ mSMQSiteID $ mSMQNt4Stub $ mSMQSiteForeign $ mSMQInterval1 $ mSMQInterval2 $ msDS-BridgeHeadServersUsed ) )", + "( 1.2.840.113556.1.5.222 NAME 'msTAPI-RtPerson' SUP top STRUCTURAL MAY (msTAPI-uid $ msTAPI-IpAddress ) )", + "( 1.2.840.113556.1.5.68 NAME 'applicationSiteSettings' SUP top ABSTRACT MAY (applicationName $ notificationList ) )", + "( 1.2.840.113556.1.3.14 NAME 'attributeSchema' SUP top STRUCTURAL MUST (cn $ attributeID $ attributeSyntax $ isSingleValued $ oMSyntax $ lDAPDisplayName $ schemaIDGUID ) MAY (rangeLower $ rangeUpper $ mAPIID $ linkID $ oMObjectClass $ searchFlags $ extendedCharsAllowed $ schemaFlagsEx $ attributeSecurityGUID $ systemOnly $ classDisplayName $ isMemberOfPartialAttributeSet $ isDefunct $ isEphemeral $ msDs-Schema-Extensions $ msDS-IntId ) )", + "( 1.2.840.113556.1.5.267 NAME 'msSPP-ActivationObject' SUP top STRUCTURAL MUST (msSPP-CSVLKSkuId $ msSPP-KMSIds $ msSPP-CSVLKPid $ msSPP-CSVLKPartialProductKey ) MAY (msSPP-InstallationId $ msSPP-ConfirmationId $ msSPP-OnlineLicense $ msSPP-PhoneLicense $ msSPP-ConfigLicense $ msSPP-IssuanceLicense ) )", + "( 1.2.840.113556.1.5.220 NAME 'msDS-App-Configuration' SUP applicationSettings STRUCTURAL MAY (owner $ keywords $ managedBy $ msDS-ByteArray $ msDS-DateTime $ msDS-Integer $ msDS-ObjectReference ) )", + "( 1.2.840.113556.1.3.23 NAME 'container' SUP top STRUCTURAL MUST (cn ) MAY (schemaVersion $ defaultClassStore $ msDS-ObjectReference ) )", + "( 1.2.840.113556.1.6.13.4.10 NAME 'msDFSR-Connection' SUP top STRUCTURAL MUST (fromServer ) MAY (msDFSR-Extension $ msDFSR-Enabled $ msDFSR-Schedule $ msDFSR-Keywords $ msDFSR-Flags $ msDFSR-Options $ msDFSR-RdcEnabled $ msDFSR-RdcMinFileSizeInKb $ msDFSR-Priority $ msDFSR-DisablePacketPrivacy $ msDFSR-Options2 ) )", + "( 1.2.840.113556.1.5.207 NAME 'msWMI-UintRangeParam' SUP msWMI-RangeParam STRUCTURAL MUST (msWMI-IntDefault ) MAY (msWMI-IntMax $ msWMI-IntMin ) )", + "( 1.2.840.113556.1.5.23 NAME 'printQueue' SUP connectionPoint STRUCTURAL MUST (uNCName $ versionNumber $ serverName $ printerName $ shortServerName ) MAY (location $ portName $ driverName $ printSeparatorFile $ priority $ defaultPriority $ printStartTime $ printEndTime $ printFormName $ printBinNames $ printMaxResolutionSupported $ printOrientationsSupported $ printMaxCopies $ printCollate $ printColor $ printLanguage $ printAttributes $ printShareName $ printOwner $ printNotify $ printStatus $ printSpooling $ printKeepPrintedJobs $ driverVersion $ printMaxXExtent $ printMaxYExtent $ printMinXExtent $ printMinYExtent $ printStaplingSupported $ printMemory $ assetNumber $ bytesPerMinute $ printRate $ printRateUnit $ printNetworkAddress $ printMACAddress $ printMediaReady $ printNumberUp $ printMediaSupported $ operatingSystem $ operatingSystemVersion $ operatingSystemServicePack $ operatingSystemHotfix $ physicalLocationObject $ printPagesPerMinute $ printDuplexSupported ) )", + "( 1.2.840.113556.1.5.260 NAME 'msDFS-DeletedLinkv2' SUP top STRUCTURAL MUST (msDFS-NamespaceIdentityGUIDv2 $ msDFS-LastModifiedv2 $ msDFS-LinkPathv2 $ msDFS-LinkIdentityGUIDv2 ) MAY (msDFS-Commentv2 $ msDFS-ShortNameLinkPathv2 ) )", + "( 1.2.840.113556.1.5.140 NAME 'interSiteTransportContainer' SUP top STRUCTURAL )", + "( 1.2.840.113556.1.5.130 NAME 'indexServerCatalog' SUP connectionPoint STRUCTURAL MUST (creator ) MAY (uNCName $ queryPoint $ indexedScopes $ friendlyNames ) )", + "( 1.2.840.113556.1.5.98 NAME 'ipsecPolicy' SUP ipsecBase STRUCTURAL MAY (ipsecISAKMPReference $ ipsecNFAReference ) )", + "( 2.5.6.0 NAME 'top' ABSTRACT MUST (objectClass $ instanceType $ nTSecurityDescriptor $ objectCategory ) MAY (cn $ description $ distinguishedName $ whenCreated $ whenChanged $ subRefs $ displayName $ uSNCreated $ isDeleted $ dSASignature $ objectVersion $ repsTo $ repsFrom $ memberOf $ ownerBL $ uSNChanged $ uSNLastObjRem $ showInAdvancedViewOnly $ adminDisplayName $ proxyAddresses $ adminDescription $ extensionName $ uSNDSALastObjRemoved $ displayNamePrintable $ directReports $ wWWHomePage $ USNIntersite $ name $ objectGUID $ replPropertyMetaData $ replUpToDateVector $ flags $ revision $ wbemPath $ fSMORoleOwner $ systemFlags $ siteObjectBL $ serverReferenceBL $ nonSecurityMemberBL $ queryPolicyBL $ wellKnownObjects $ isPrivilegeHolder $ partialAttributeSet $ managedObjects $ partialAttributeDeletionList $ url $ lastKnownParent $ bridgeheadServerListBL $ netbootSCPBL $ isCriticalSystemObject $ frsComputerReferenceBL $ fRSMemberReferenceBL $ uSNSource $ fromEntry $ allowedChildClasses $ allowedChildClassesEffective $ allowedAttributes $ allowedAttributesEffective $ possibleInferiors $ canonicalName $ proxiedObjectName $ sDRightsEffective $ dSCorePropagationData $ otherWellKnownObjects $ mS-DS-ConsistencyGuid $ mS-DS-ConsistencyChildCount $ masteredBy $ msCOM-PartitionSetLink $ msCOM-UserLink $ msDS-Approx-Immed-Subordinates $ msDS-NCReplCursors $ msDS-NCReplInboundNeighbors $ msDS-NCReplOutboundNeighbors $ msDS-ReplAttributeMetaData $ msDS-ReplValueMetaData $ msDS-NonMembersBL $ msDS-MembersForAzRoleBL $ msDS-OperationsForAzTaskBL $ msDS-TasksForAzTaskBL $ msDS-OperationsForAzRoleBL $ msDS-TasksForAzRoleBL $ msDs-masteredBy $ msDS-ObjectReferenceBL $ msDS-PrincipalName $ msDS-RevealedDSAs $ msDS-KrbTgtLinkBl $ msDS-IsFullReplicaFor $ msDS-IsDomainFor $ msDS-IsPartialReplicaFor $ msDS-AuthenticatedToAccountlist $ msDS-NC-RO-Replica-Locations-BL $ msDS-RevealedListBL $ msDS-PSOApplied $ msDS-NcType $ msDS-OIDToGroupLinkBl $ msDS-HostServiceAccountBL $ isRecycled $ msDS-LocalEffectiveDeletionTime $ msDS-LocalEffectiveRecycleTime $ msDS-LastKnownRDN $ msDS-EnabledFeatureBL $ msDS-ClaimSharesPossibleValuesWithBL $ msDS-MembersOfResourcePropertyListBL $ msDS-IsPrimaryComputerFor $ msDS-ValueTypeReferenceBL $ msDS-TDOIngressBL $ msDS-TDOEgressBL $ msDS-parentdistname $ msDS-ReplValueMetaDataExt $ msds-memberOfTransitive $ msds-memberTransitive $ msDS-CloudAnchor $ msDS-SourceAnchor $ msDS-ObjectSoa $ msDS-SupersededManagedAccountLinkBL $ msDS-ManagedAccountPrecededByLinkBL $ msDS-JetGetRecordSize3 $ structuralObjectClass $ createTimeStamp $ modifyTimeStamp $ subSchemaSubEntry $ msSFU30PosixMemberOf $ msDFSR-MemberReferenceBL $ msDFSR-ComputerReferenceBL ) )", + "( 1.2.840.113556.1.5.36 NAME 'volume' SUP connectionPoint STRUCTURAL MUST (uNCName ) MAY (contentIndexingAllowed $ lastContentIndexed ) )", + "( 1.2.840.113556.1.5.236 NAME 'msDS-AzOperation' SUP top STRUCTURAL MUST (msDS-AzOperationID ) MAY (description $ msDS-AzApplicationData $ msDS-AzObjectGuid $ msDS-AzGenericData ) )", + "( 2.5.6.9 NAME 'groupOfNames' SUP top STRUCTURAL MUST (cn $ member ) MAY (o $ ou $ businessCategory $ owner $ seeAlso ) )", + "( 1.2.840.113556.1.5.12 NAME 'configuration' SUP top STRUCTURAL MUST (cn ) MAY (gPLink $ gPOptions $ msDS-USNLastSyncSuccess ) )", + "( 1.2.840.113556.1.5.78 NAME 'licensingSiteSettings' SUP applicationSiteSettings STRUCTURAL MAY (siteServer ) )", + "( 1.2.840.113556.1.5.69 NAME 'nTDSSiteSettings' SUP applicationSiteSettings STRUCTURAL MAY (schedule $ options $ queryPolicyObject $ managedBy $ interSiteTopologyGenerator $ interSiteTopologyRenew $ interSiteTopologyFailover $ msDS-Preferred-GC-Site ) )", + "( 1.2.840.113556.1.5.269 NAME 'msDS-ClaimTypePropertyBase' SUP top ABSTRACT MAY (Enabled $ msDS-ClaimPossibleValues $ msDS-ClaimSharesPossibleValuesWith ) )", + "( 1.2.840.113556.1.5.273 NAME 'msDS-ResourceProperty' SUP msDS-ClaimTypePropertyBase STRUCTURAL MUST (msDS-ValueTypeReference ) MAY (msDS-IsUsedAsResourceSecurityAttribute $ msDS-AppliesToResourceTypes ) )", + "( 1.2.840.113556.1.5.239 NAME 'msDS-AzRole' SUP top STRUCTURAL MAY (description $ msDS-MembersForAzRole $ msDS-OperationsForAzRole $ msDS-TasksForAzRole $ msDS-AzApplicationData $ msDS-AzObjectGuid $ msDS-AzGenericData ) )", + "( 1.3.6.1.1.1.2.12 NAME 'bootableDevice' SUP top AUXILIARY MAY (cn $ bootParameter $ bootFile ) )", + "( 1.2.840.113556.1.5.294 NAME 'msDS-AuthNPolicy' SUP top STRUCTURAL MAY (msDS-UserAllowedToAuthenticateTo $ msDS-UserAllowedToAuthenticateFrom $ msDS-UserTGTLifetime $ msDS-ComputerAllowedToAuthenticateTo $ msDS-ComputerTGTLifetime $ msDS-ServiceAllowedToAuthenticateTo $ msDS-ServiceAllowedToAuthenticateFrom $ msDS-ServiceTGTLifetime $ msDS-UserAuthNPolicyBL $ msDS-ComputerAuthNPolicyBL $ msDS-ServiceAuthNPolicyBL $ msDS-AssignedAuthNPolicyBL $ msDS-AuthNPolicyEnforced $ msDS-UserAllowedNTLMNetworkAuthentication $ msDS-ServiceAllowedNTLMNetworkAuthentication $ msDS-StrongNTLMPolicy ) )", + "( 1.2.840.113556.1.5.86 NAME 'dnsNode' SUP top STRUCTURAL MUST (dc ) MAY (dnsRecord $ dNSProperty $ dNSTombstoned ) )", + "( 1.2.840.113556.1.5.210 NAME 'msWMI-StringSetParam' SUP msWMI-RangeParam STRUCTURAL MUST (msWMI-StringDefault ) MAY (msWMI-StringValidValues ) )", + "( 1.2.840.113556.1.5.264 NAME 'msDS-ManagedServiceAccount' SUP computer STRUCTURAL )", + "( 1.2.840.113556.1.5.15 NAME 'contact' SUP organizationalPerson STRUCTURAL MUST (cn ) MAY (notes $ msDS-SourceObjectDN $ msDS-preferredDataLocation ) )", + "( 1.3.6.1.1.1.2.0 NAME 'posixAccount' SUP top AUXILIARY MAY (cn $ description $ userPassword $ homeDirectory $ unixUserPassword $ uid $ uidNumber $ gidNumber $ gecos $ unixHomeDirectory $ loginShell ) )", + "( 1.2.840.113556.1.5.266 NAME 'msSPP-ActivationObjectsContainer' SUP top STRUCTURAL )", + "( 1.2.840.113556.1.5.217 NAME 'msWMI-ObjectEncoding' SUP top STRUCTURAL MUST (msWMI-ID $ msWMI-TargetObject $ msWMI-Class $ msWMI-Genus $ msWMI-intFlags1 $ msWMI-intFlags2 $ msWMI-intFlags3 $ msWMI-intFlags4 $ msWMI-Parm1 $ msWMI-Parm2 $ msWMI-Parm3 $ msWMI-Parm4 $ msWMI-ScopeGuid ) )", + "( 1.2.840.113556.1.5.33 NAME 'storage' SUP connectionPoint STRUCTURAL MAY (moniker $ monikerDisplayName $ iconPath ) )", + "( 1.2.840.113556.1.5.67 NAME 'domainDNS' SUP domain STRUCTURAL MAY (managedBy $ msDS-Behavior-Version $ msDS-AllowedDNSSuffixes $ msDS-USNLastSyncSuccess $ msDS-EnabledFeature $ msDS-ExpirePasswordsOnSmartCardOnlyAccounts ) )", + "( 1.2.840.113556.1.5.92 NAME 'linkTrackVolEntry' SUP leaf STRUCTURAL MAY (linkTrackSecret $ volTableIdxGUID $ volTableGUID $ currMachineId $ timeVolChange $ timeRefresh $ seqNotification $ objectCount ) )", + "( 1.3.6.1.1.1.2.11 NAME 'ieee802Device' SUP top AUXILIARY MAY (cn $ macAddress ) )", + "( 0.9.2342.19200300.100.4.17 NAME 'domainRelatedObject' SUP top AUXILIARY MAY (associatedDomain ) )", + "( 1.2.840.113556.1.5.235 NAME 'msDS-AzApplication' SUP top STRUCTURAL MAY (description $ msDS-AzApplicationName $ msDS-AzGenerateAudits $ msDS-AzClassId $ msDS-AzApplicationVersion $ msDS-AzApplicationData $ msDS-AzObjectGuid $ msDS-AzGenericData ) )", + "( 1.2.840.113556.1.5.107 NAME 'sitesContainer' SUP top STRUCTURAL )", + "( 1.2.840.113556.1.5.263 NAME 'msImaging-PostScanProcess' SUP top STRUCTURAL MUST (displayName $ msImaging-PSPIdentifier ) MAY (serverName $ msImaging-PSPString ) )", + "( 1.2.840.113556.1.5.240 NAME 'msieee80211-Policy' SUP top STRUCTURAL MAY (msieee80211-Data $ msieee80211-DataType $ msieee80211-ID ) )", + "( 1.2.840.113556.1.5.95 NAME 'subnetContainer' SUP top STRUCTURAL )", + "( 1.2.840.113556.1.5.297 NAME 'msDS-KeyCredential' SUP top STRUCTURAL MUST (msDS-KeyId ) MAY (msDS-DeviceID $ msDS-KeyMaterial $ msDS-KeyUsage $ msDS-KeyPrincipal $ msDS-DeviceDN $ msDS-ComputerSID $ msDS-CustomKeyInformation $ msDS-KeyApproximateLastLogonTimeStamp ) )", + "( 0.9.2342.19200300.100.4.6 NAME 'document' SUP top STRUCTURAL MAY (cn $ l $ o $ ou $ description $ seeAlso $ documentIdentifier $ documentTitle $ documentVersion $ documentAuthor $ documentLocation $ documentPublisher ) )", + "( 2.5.6.6 NAME 'person' SUP top STRUCTURAL MUST (cn ) MAY (sn $ serialNumber $ telephoneNumber $ seeAlso $ userPassword $ attributeCertificateAttribute ) )", + "( 1.2.840.113556.1.5.274 NAME 'msDS-ResourcePropertyList' SUP top STRUCTURAL MAY (msDS-MembersOfResourcePropertyList ) )", + "( 1.2.840.113556.1.5.270 NAME 'msDS-ClaimTypes' SUP top STRUCTURAL )", + "( 1.3.6.1.1.1.2.1 NAME 'shadowAccount' SUP top AUXILIARY MAY (description $ userPassword $ uid $ shadowLastChange $ shadowMin $ shadowMax $ shadowWarning $ shadowInactive $ shadowExpire $ shadowFlag ) )", + "( 1.2.840.113556.1.5.179 NAME 'mSMQMigratedUser' SUP top STRUCTURAL MAY (objectSid $ mSMQSignCertificates $ mSMQDigests $ mSMQDigestsMig $ mSMQSignCertificatesMig $ mSMQUserSid ) )", + "( 1.2.840.113556.1.5.185 NAME 'mS-SQL-OLAPServer' SUP serviceConnectionPoint STRUCTURAL MAY (mS-SQL-Name $ mS-SQL-RegisteredOwner $ mS-SQL-Contact $ mS-SQL-Build $ mS-SQL-ServiceAccount $ mS-SQL-Status $ mS-SQL-InformationURL $ mS-SQL-PublicationURL $ mS-SQL-Version $ mS-SQL-Language $ mS-SQL-Keywords ) )", + "( 1.3.6.1.4.1.1466.101.119.2 NAME 'dynamicObject' SUP top AUXILIARY MAY (msDS-Entry-Time-To-Die $ entryTTL ) )", + "( 1.2.840.113556.1.5.155 NAME 'nTFRSSubscriber' SUP top STRUCTURAL MUST (fRSRootPath $ fRSStagingPath ) MAY (schedule $ fRSUpdateTimeout $ fRSFaultCondition $ fRSServiceCommand $ fRSExtensions $ fRSFlags $ fRSMemberReference $ fRSServiceCommandStatus $ fRSTimeLastCommand $ fRSTimeLastConfigChange ) )", + "( 1.2.840.113556.1.5.129 NAME 'rIDSet' SUP top STRUCTURAL MUST (rIDAllocationPool $ rIDPreviousAllocationPool $ rIDUsedPool $ rIDNextRID ) )", + "( 1.2.840.113556.1.3.58 NAME 'addressTemplate' SUP displayTemplate STRUCTURAL MUST (displayName ) MAY (addressSyntax $ perMsgDialogDisplayTable $ perRecipDialogDisplayTable $ addressType $ proxyGenerationEnabled ) )", + "( 1.2.840.113556.1.5.154 NAME 'nTFRSSubscriptions' SUP top STRUCTURAL MAY (fRSWorkingPath $ fRSExtensions $ fRSVersion ) )", + "( 1.2.840.113556.1.5.7000.47 NAME 'nTDSDSA' SUP applicationSettings STRUCTURAL MAY (hasMasterNCs $ hasPartialReplicaNCs $ dMDLocation $ invocationId $ networkAddress $ options $ fRSRootPath $ serverReference $ lastBackupRestorationTime $ queryPolicyObject $ managedBy $ retiredReplDSASignatures $ msDS-Behavior-Version $ msDS-HasInstantiatedNCs $ msDS-ReplicationEpoch $ msDS-HasDomainNCs $ msDS-RetiredReplNCSignatures $ msDS-hasMasterNCs $ msDS-RevealedUsers $ msDS-hasFullReplicaNCs $ msDS-NeverRevealGroup $ msDS-RevealOnDemandGroup $ msDS-isGC $ msDS-isRODC $ msDS-SiteName $ msDS-IsUserCachableAtRodc $ msDS-EnabledFeature $ msDS-JetDBPageSize ) )", + "( 1.2.840.113556.1.5.175 NAME 'infrastructureUpdate' SUP top STRUCTURAL MAY (dNReferenceUpdate ) )", + "( 1.2.840.113556.1.6.18.2.215 NAME 'msSFU30DomainInfo' SUP top STRUCTURAL MAY (msSFU30SearchContainer $ msSFU30MasterServerName $ msSFU30OrderNumber $ msSFU30Domains $ msSFU30YpServers $ msSFU30MaxGidNumber $ msSFU30MaxUidNumber $ msSFU30IsValidContainer $ msSFU30CryptMethod ) )", + "( 1.2.840.113556.1.5.213 NAME 'msWMI-Som' SUP top STRUCTURAL MUST (msWMI-ID $ msWMI-Name ) MAY (msWMI-Author $ msWMI-ChangeDate $ msWMI-CreationDate $ msWMI-SourceOrganization $ msWMI-intFlags1 $ msWMI-intFlags2 $ msWMI-intFlags3 $ msWMI-intFlags4 $ msWMI-Parm1 $ msWMI-Parm2 $ msWMI-Parm3 $ msWMI-Parm4 ) )", + "( 1.2.840.113556.1.5.82 NAME 'rpcProfile' SUP rpcEntry STRUCTURAL )", + "( 1.2.840.113556.1.5.164 NAME 'mSMQSiteLink' SUP top STRUCTURAL MUST (mSMQSite1 $ mSMQSite2 $ mSMQCost ) MAY (mSMQSiteGates $ mSMQSiteGatesMig ) )", + "( 1.2.840.113556.1.5.184 NAME 'mS-SQL-SQLServer' SUP serviceConnectionPoint STRUCTURAL MAY (mS-SQL-Name $ mS-SQL-RegisteredOwner $ mS-SQL-Contact $ mS-SQL-Location $ mS-SQL-Memory $ mS-SQL-Build $ mS-SQL-ServiceAccount $ mS-SQL-CharacterSet $ mS-SQL-SortOrder $ mS-SQL-UnicodeSortOrder $ mS-SQL-Clustered $ mS-SQL-NamedPipe $ mS-SQL-MultiProtocol $ mS-SQL-SPX $ mS-SQL-TCPIP $ mS-SQL-AppleTalk $ mS-SQL-Vines $ mS-SQL-Status $ mS-SQL-LastUpdatedDate $ mS-SQL-InformationURL $ mS-SQL-GPSLatitude $ mS-SQL-GPSLongitude $ mS-SQL-GPSHeight $ mS-SQL-Keywords ) )", + "( 1.2.840.113556.1.5.106 NAME 'queryPolicy' SUP top STRUCTURAL MAY (lDAPAdminLimits $ lDAPIPDenyList ) )", + "( 1.2.840.113556.1.5.162 NAME 'mSMQConfiguration' SUP top STRUCTURAL MAY (mSMQQuota $ mSMQJournalQuota $ mSMQOwnerID $ mSMQSites $ mSMQOutRoutingServers $ mSMQInRoutingServers $ mSMQServiceType $ mSMQComputerType $ mSMQForeign $ mSMQOSType $ mSMQEncryptKey $ mSMQSignKey $ mSMQDependentClientServices $ mSMQRoutingServices $ mSMQDsServices $ mSMQComputerTypeEx ) )", + "( 1.2.840.113556.1.5.257 NAME 'msDFS-NamespaceAnchor' SUP top STRUCTURAL MUST (msDFS-SchemaMajorVersion ) )", + "( 1.2.840.113556.1.6.13.4.7 NAME 'msDFSR-ContentSet' SUP top STRUCTURAL MAY (description $ msDFSR-Extension $ msDFSR-RootSizeInMb $ msDFSR-StagingSizeInMb $ msDFSR-ConflictSizeInMb $ msDFSR-FileFilter $ msDFSR-DirectoryFilter $ msDFSR-Flags $ msDFSR-Options $ msDFSR-DfsPath $ msDFSR-Priority $ msDFSR-DeletedSizeInMb $ msDFSR-DefaultCompressionExclusionFilter $ msDFSR-OnDemandExclusionFileFilter $ msDFSR-OnDemandExclusionDirectoryFilter $ msDFSR-Options2 ) )", + "( 1.2.840.113556.1.5.276 NAME 'msTPM-InformationObjectsContainer' SUP top STRUCTURAL MUST (cn ) )", + "( 1.2.840.113556.1.5.209 NAME 'msWMI-RealRangeParam' SUP msWMI-RangeParam STRUCTURAL MUST (msWMI-Int8Default ) MAY (msWMI-Int8Max $ msWMI-Int8Min ) )", + "( 2.5.6.7 NAME 'organizationalPerson' SUP person STRUCTURAL MAY (c $ l $ st $ street $ o $ ou $ title $ postalAddress $ postalCode $ postOfficeBox $ physicalDeliveryOfficeName $ telexNumber $ teletexTerminalIdentifier $ facsimileTelephoneNumber $ x121Address $ internationalISDNNumber $ registeredAddress $ destinationIndicator $ preferredDeliveryMethod $ givenName $ initials $ generationQualifier $ houseIdentifier $ otherTelephone $ otherPager $ co $ department $ company $ streetAddress $ otherHomePhone $ msExchHouseIdentifier $ personalTitle $ homePostalAddress $ countryCode $ employeeID $ comment $ division $ otherFacsimileTelephoneNumber $ otherMobile $ primaryTelexNumber $ primaryInternationalISDNNumber $ mhsORAddress $ otherMailbox $ assistant $ ipPhone $ otherIpPhone $ msDS-AllowedToDelegateTo $ msDS-PhoneticFirstName $ msDS-PhoneticLastName $ msDS-PhoneticDepartment $ msDS-PhoneticCompanyName $ msDS-PhoneticDisplayName $ msDS-HABSeniorityIndex $ msDS-AllowedToActOnBehalfOfOtherIdentity $ mail $ manager $ homePhone $ mobile $ pager $ middleName $ thumbnailPhoto $ thumbnailLogo ) )", + "( 1.2.840.113556.1.5.176 NAME 'msExchConfigurationContainer' SUP container STRUCTURAL MAY (addressBookRoots $ globalAddressList $ templateRoots $ addressBookRoots2 $ globalAddressList2 $ templateRoots2 ) )", + "( 1.2.840.113556.1.5.278 NAME 'msKds-ProvRootKey' SUP top STRUCTURAL MUST (cn $ msKds-KDFAlgorithmID $ msKds-SecretAgreementAlgorithmID $ msKds-PublicKeyLength $ msKds-PrivateKeyLength $ msKds-RootKeyData $ msKds-Version $ msKds-DomainID $ msKds-UseStartTime $ msKds-CreateTime ) MAY (msKds-KDFParam $ msKds-SecretAgreementParam ) )", + "( 1.2.840.113556.1.5.238 NAME 'msDS-AzTask' SUP top STRUCTURAL MAY (description $ msDS-AzBizRule $ msDS-AzBizRuleLanguage $ msDS-AzLastImportedBizRulePath $ msDS-OperationsForAzTask $ msDS-TasksForAzTask $ msDS-AzTaskIsRoleDefinition $ msDS-AzApplicationData $ msDS-AzObjectGuid $ msDS-AzGenericData ) )", + "( 1.2.840.113556.1.5.282 NAME 'msDS-GroupManagedServiceAccount' SUP computer STRUCTURAL MUST (msDS-ManagedPasswordInterval ) MAY (msDS-ManagedPassword $ msDS-ManagedPasswordId $ msDS-ManagedPasswordPreviousId $ msDS-GroupMSAMembership ) )", + "( 1.3.6.1.1.1.2.9 NAME 'nisMap' SUP top STRUCTURAL MUST (cn $ nisMapName ) MAY (description ) )", + "( 1.3.6.1.1.1.2.10 NAME 'nisObject' SUP top STRUCTURAL MUST (cn $ nisMapName $ nisMapEntry ) MAY (description $ msSFU30Name $ msSFU30NisDomain ) )", + "( 1.2.840.113556.1.5.277 NAME 'msKds-ProvServerConfiguration' SUP top STRUCTURAL MUST (msKds-Version ) MAY (msKds-KDFAlgorithmID $ msKds-KDFParam $ msKds-SecretAgreementAlgorithmID $ msKds-SecretAgreementParam $ msKds-PublicKeyLength $ msKds-PrivateKeyLength ) )", + "( 1.2.840.113556.1.6.18.2.217 NAME 'msSFU30NISMapConfig' SUP top STRUCTURAL MAY (msSFU30KeyAttributes $ msSFU30FieldSeparator $ msSFU30IntraFieldSeparator $ msSFU30SearchAttributes $ msSFU30ResultAttributes $ msSFU30MapFilter $ msSFU30NSMAPFieldPosition ) )", + "( 1.2.840.113556.1.5.7000.48 NAME 'serversContainer' SUP top STRUCTURAL )", + "( 1.2.840.113556.1.5.90 NAME 'linkTrackVolumeTable' SUP fileLinkTracking STRUCTURAL )", + "( 1.2.840.113556.1.5.188 NAME 'mS-SQL-SQLDatabase' SUP top STRUCTURAL MAY (mS-SQL-Name $ mS-SQL-Contact $ mS-SQL-Status $ mS-SQL-InformationURL $ mS-SQL-Description $ mS-SQL-Alias $ mS-SQL-Size $ mS-SQL-CreationDate $ mS-SQL-LastBackupDate $ mS-SQL-LastDiagnosticDate $ mS-SQL-Applications $ mS-SQL-Keywords ) )", + "( 1.2.840.113556.1.5.211 NAME 'msWMI-PolicyType' SUP top STRUCTURAL MUST (msWMI-ID $ msWMI-TargetObject ) MAY (msWMI-Author $ msWMI-ChangeDate $ msWMI-CreationDate $ msWMI-SourceOrganization $ msWMI-intFlags1 $ msWMI-intFlags2 $ msWMI-intFlags3 $ msWMI-intFlags4 $ msWMI-Parm1 $ msWMI-Parm2 $ msWMI-Parm3 $ msWMI-Parm4 ) )", + "( 1.2.840.113556.1.5.183 NAME 'dSUISettings' SUP top STRUCTURAL MAY (dSUIAdminNotification $ dSUIAdminMaximum $ dSUIShellMaximum $ msDS-Security-Group-Extra-Classes $ msDS-Non-Security-Group-Extra-Classes $ msDS-FilterContainers ) )", + "( 1.2.840.113556.1.5.157 NAME 'groupPolicyContainer' SUP container STRUCTURAL MAY (flags $ versionNumber $ gPCFunctionalityVersion $ gPCFileSysPath $ gPCMachineExtensionNames $ gPCUserExtensionNames $ gPCWQLFilter ) )", + "( 1.2.840.113556.1.5.3 NAME 'samDomain' SUP top AUXILIARY MAY (description $ cACertificate $ builtinCreationTime $ builtinModifiedCount $ creationTime $ domainPolicyObject $ defaultLocalPolicyObject $ lockoutDuration $ lockOutObservationWindow $ lSACreationTime $ lSAModifiedCount $ lockoutThreshold $ maxPwdAge $ minPwdAge $ minPwdLength $ modifiedCountAtLastProm $ nETBIOSName $ nextRid $ pwdProperties $ pwdHistoryLength $ privateKey $ replicaSource $ controlAccessRights $ auditingPolicy $ eFSPolicy $ desktopProfile $ nTMixedDomain $ rIDManagerReference $ treeName $ pekList $ pekKeyChangeInterval $ gPLink $ gPOptions $ ms-DS-MachineAccountQuota $ msDS-LogonTimeSyncInterval $ msDS-PerUserTrustQuota $ msDS-AllUsersTrustQuota $ msDS-PerUserTrustTombstonesQuota ) )", + "( 1.2.840.113556.1.5.234 NAME 'msDS-AzAdminManager' SUP top STRUCTURAL MAY (description $ msDS-AzDomainTimeout $ msDS-AzScriptEngineCacheMax $ msDS-AzScriptTimeout $ msDS-AzGenerateAudits $ msDS-AzApplicationData $ msDS-AzMajorVersion $ msDS-AzMinorVersion $ msDS-AzObjectGuid $ msDS-AzGenericData ) )", + "( 1.2.840.113556.1.5.214 NAME 'msWMI-Rule' SUP top STRUCTURAL MUST (msWMI-Query $ msWMI-QueryLanguage $ msWMI-TargetNameSpace ) )", + "( 1.2.840.113556.1.5.254 NAME 'nTDSDSARO' SUP nTDSDSA STRUCTURAL )", + "( 1.2.840.113556.1.5.286 NAME 'msDS-Device' SUP top STRUCTURAL MUST (displayName $ altSecurityIdentities $ msDS-IsEnabled $ msDS-DeviceID ) MAY (msDS-DeviceOSType $ msDS-DeviceOSVersion $ msDS-DevicePhysicalIDs $ msDS-DeviceObjectVersion $ msDS-RegisteredOwner $ msDS-ApproximateLastLogonTimeStamp $ msDS-RegisteredUsers $ msDS-IsManaged $ msDS-CloudIsManaged $ msDS-CloudAnchor $ msDS-DeviceMDMStatus $ msDS-IsCompliant $ msDS-ComputerSID $ msDS-DeviceTrustType $ msDS-KeyCredentialLink ) )", + "( 1.2.840.113556.1.5.34 NAME 'trustedDomain' SUP leaf STRUCTURAL MAY (securityIdentifier $ trustAuthIncoming $ trustDirection $ trustPartner $ trustPosixOffset $ trustAuthOutgoing $ trustType $ trustAttributes $ domainCrossRef $ flatName $ initialAuthIncoming $ initialAuthOutgoing $ domainIdentifier $ additionalTrustedServiceNames $ mS-DS-CreatorSID $ msDS-TrustForestTrustInfo $ msDS-SupportedEncryptionTypes $ msDS-IngressClaimsTransformationPolicy $ msDS-EgressClaimsTransformationPolicy ) )", + "( 0.9.2342.19200300.100.4.7 NAME 'room' SUP top STRUCTURAL MUST (cn ) MAY (description $ telephoneNumber $ seeAlso $ location $ roomNumber ) )", + "( 2.5.6.4 NAME 'organization' SUP top STRUCTURAL MUST (o ) MAY (l $ st $ street $ searchGuide $ businessCategory $ postalAddress $ postalCode $ postOfficeBox $ physicalDeliveryOfficeName $ telephoneNumber $ telexNumber $ teletexTerminalIdentifier $ facsimileTelephoneNumber $ x121Address $ internationalISDNNumber $ registeredAddress $ destinationIndicator $ preferredDeliveryMethod $ seeAlso $ userPassword ) )", + "( 1.2.840.113556.1.5.272 NAME 'msDS-ClaimType' SUP msDS-ClaimTypePropertyBase STRUCTURAL MAY (msDS-ClaimValueType $ msDS-ClaimAttributeSource $ msDS-ClaimTypeAppliesToClass $ msDS-ClaimSource $ msDS-ClaimSourceType $ msDS-ClaimIsValueSpaceRestricted $ msDS-ClaimIsSingleValued ) )", + "( 1.2.840.113556.1.5.300 NAME 'dnsZoneScopeContainer' SUP top STRUCTURAL )", + "( 1.3.6.1.1.1.2.3 NAME 'ipService' SUP top STRUCTURAL MUST (cn $ ipServicePort $ ipServiceProtocol ) MAY (description $ msSFU30Name $ msSFU30Aliases $ msSFU30NisDomain $ nisMapName ) )", + "( 1.3.6.1.1.1.2.4 NAME 'ipProtocol' SUP top STRUCTURAL MUST (cn $ ipProtocolNumber ) MAY (description $ msSFU30Name $ msSFU30Aliases $ msSFU30NisDomain $ nisMapName ) )", + "( 1.2.840.113556.1.5.80 NAME 'rpcGroup' SUP rpcEntry STRUCTURAL MAY (rpcNsGroup $ rpcNsObjectID ) )", + "( 1.2.840.113556.1.5.17 NAME 'server' SUP top STRUCTURAL MAY (serialNumber $ serverReference $ dNSHostName $ managedBy $ mailAddress $ bridgeheadTransportList $ msDS-isGC $ msDS-isRODC $ msDS-SiteName $ msDS-IsUserCachableAtRodc ) )", + "( 1.2.840.113556.1.5.28 NAME 'secret' SUP leaf STRUCTURAL MAY (currentValue $ lastSetTime $ priorSetTime $ priorValue ) )", + "( 1.2.840.113556.1.5.163 NAME 'mSMQEnterpriseSettings' SUP top STRUCTURAL MAY (mSMQNameStyle $ mSMQCSPName $ mSMQLongLived $ mSMQVersion $ mSMQInterval1 $ mSMQInterval2 ) )", + "( 1.2.840.113556.1.5.202 NAME 'msWMI-MergeablePolicyTemplate' SUP msWMI-PolicyTemplate STRUCTURAL )", + "( 1.2.840.113556.1.5.195 NAME 'msPKI-Key-Recovery-Agent' SUP user STRUCTURAL )", + "( 0.9.2342.19200300.100.4.18 NAME 'friendlyCountry' SUP country STRUCTURAL MUST (co ) )", + "( 1.2.840.113556.1.5.258 NAME 'msDFS-Namespacev2' SUP top STRUCTURAL MUST (msDFS-SchemaMajorVersion $ msDFS-SchemaMinorVersion $ msDFS-GenerationGUIDv2 $ msDFS-NamespaceIdentityGUIDv2 $ msDFS-LastModifiedv2 $ msDFS-Ttlv2 $ msDFS-Propertiesv2 $ msDFS-TargetListv2 ) MAY (msDFS-Commentv2 ) )", + "( 1.2.840.113556.1.5.96 NAME 'subnet' SUP top STRUCTURAL MAY (location $ siteObject $ physicalLocationObject ) )", + "( 1.2.840.113556.1.5.216 NAME 'applicationVersion' SUP applicationSettings STRUCTURAL MAY (owner $ keywords $ versionNumber $ vendor $ versionNumberHi $ versionNumberLo $ managedBy $ appSchemaVersion ) )", + "( 2.5.6.10 NAME 'residentialPerson' SUP person STRUCTURAL MAY (l $ st $ street $ ou $ title $ businessCategory $ postalAddress $ postalCode $ postOfficeBox $ physicalDeliveryOfficeName $ telexNumber $ teletexTerminalIdentifier $ facsimileTelephoneNumber $ x121Address $ internationalISDNNumber $ registeredAddress $ destinationIndicator $ preferredDeliveryMethod ) )", + "( 2.5.6.19 NAME 'cRLDistributionPoint' SUP top STRUCTURAL MUST (cn ) MAY (authorityRevocationList $ certificateRevocationList $ deltaRevocationList $ cRLPartitionedRevocationList $ certificateAuthorityObject ) )", + "( 1.2.840.113556.1.5.137 NAME 'aCSPolicy' SUP top STRUCTURAL MAY (aCSTimeOfDay $ aCSDirection $ aCSMaxTokenRatePerFlow $ aCSMaxPeakBandwidthPerFlow $ aCSAggregateTokenRatePerUser $ aCSMaxDurationPerFlow $ aCSServiceType $ aCSTotalNoOfFlows $ aCSPriority $ aCSPermissionBits $ aCSIdentityName $ aCSMaxAggregatePeakRatePerUser $ aCSMaxTokenBucketPerFlow $ aCSMaximumSDUSize $ aCSMinimumPolicedSize $ aCSMinimumLatency $ aCSMinimumDelayVariation ) )", + "( 1.2.840.113556.1.5.77 NAME 'controlAccessRight' SUP top STRUCTURAL MAY (rightsGuid $ appliesTo $ localizationDisplayId $ validAccesses ) )", + "( 1.2.840.113556.1.5.219 NAME 'msMQ-Group' SUP top STRUCTURAL MUST (member ) )", + "( 1.2.840.113556.1.5.8 NAME 'group' SUP top STRUCTURAL MUST (groupType ) MAY (member $ nTGroupMembers $ operatorCount $ adminCount $ groupAttributes $ groupMembershipSAM $ controlAccessRights $ desktopProfile $ nonSecurityMember $ managedBy $ primaryGroupToken $ msDS-AzLDAPQuery $ msDS-NonMembers $ msDS-AzBizRule $ msDS-AzBizRuleLanguage $ msDS-AzLastImportedBizRulePath $ msDS-AzApplicationData $ msDS-AzObjectGuid $ msDS-AzGenericData $ msDS-PrimaryComputer $ msDS-preferredDataLocation $ mail $ msSFU30Name $ msSFU30NisDomain $ msSFU30PosixMember ) )", + "( 1.2.840.113556.1.6.23.2 NAME 'msPrint-ConnectionPolicy' SUP top STRUCTURAL MUST (cn ) MAY (uNCName $ serverName $ printAttributes $ printerName ) )", + "( 1.2.840.113556.1.3.11 NAME 'crossRef' SUP top STRUCTURAL MUST (cn $ nCName $ dnsRoot ) MAY (Enabled $ nETBIOSName $ nTMixedDomain $ trustParent $ superiorDNSRoot $ rootTrust $ msDS-Behavior-Version $ msDS-NC-Replica-Locations $ msDS-Replication-Notify-First-DSA-Delay $ msDS-Replication-Notify-Subsequent-DSA-Delay $ msDS-SDReferenceDomain $ msDS-DnsRootAlias $ msDS-NC-RO-Replica-Locations ) )", + "( 1.2.840.113556.1.6.13.4.9 NAME 'msDFSR-Member' SUP top STRUCTURAL MUST (msDFSR-ComputerReference ) MAY (serverReference $ msDFSR-Extension $ msDFSR-Keywords $ msDFSR-Flags $ msDFSR-Options $ msDFSR-Options2 ) )", + "( 1.2.840.113556.1.3.59 NAME 'displayTemplate' SUP top STRUCTURAL MUST (cn ) MAY (helpData32 $ originalDisplayTableMSDOS $ addressEntryDisplayTable $ helpFileName $ addressEntryDisplayTableMSDOS $ helpData16 $ originalDisplayTable ) )", + "( 1.2.840.113556.1.3.13 NAME 'classSchema' SUP top STRUCTURAL MUST (cn $ subClassOf $ governsID $ objectClassCategory $ schemaIDGUID $ defaultObjectCategory ) MAY (possSuperiors $ mustContain $ mayContain $ rDNAttID $ auxiliaryClass $ lDAPDisplayName $ schemaFlagsEx $ systemOnly $ systemPossSuperiors $ systemMayContain $ systemMustContain $ systemAuxiliaryClass $ defaultSecurityDescriptor $ defaultHidingValue $ classDisplayName $ isDefunct $ msDs-Schema-Extensions $ msDS-IntId ) )", + "( 1.2.840.113556.1.5.200 NAME 'msWMI-PolicyTemplate' SUP top STRUCTURAL MUST (msWMI-ID $ msWMI-Name $ msWMI-NormalizedClass $ msWMI-TargetClass $ msWMI-TargetNameSpace $ msWMI-TargetPath ) MAY (msWMI-Author $ msWMI-ChangeDate $ msWMI-CreationDate $ msWMI-SourceOrganization $ msWMI-TargetType $ msWMI-intFlags1 $ msWMI-intFlags2 $ msWMI-intFlags3 $ msWMI-intFlags4 $ msWMI-Parm1 $ msWMI-Parm2 $ msWMI-Parm3 $ msWMI-Parm4 ) )", + "( 1.2.840.113556.1.5.165 NAME 'mSMQSettings' SUP top STRUCTURAL MAY (mSMQOwnerID $ mSMQServices $ mSMQQMID $ mSMQMigrated $ mSMQNt4Flags $ mSMQSiteName $ mSMQRoutingService $ mSMQDsService $ mSMQDependentClientService $ mSMQSiteNameEx ) )", + "( 1.3.6.1.1.1.2.5 NAME 'oncRpc' SUP top STRUCTURAL MUST (cn $ oncRpcNumber ) MAY (description $ msSFU30Name $ msSFU30Aliases $ msSFU30NisDomain $ nisMapName ) )", + "( 1.2.840.113556.1.5.126 NAME 'serviceConnectionPoint' SUP connectionPoint STRUCTURAL MAY (versionNumber $ vendor $ versionNumberHi $ versionNumberLo $ serviceClassName $ serviceBindingInformation $ serviceDNSName $ serviceDNSNameType $ appSchemaVersion ) )", + "( 1.2.840.113556.1.5.4 NAME 'builtinDomain' SUP top STRUCTURAL )", + "( 1.2.840.113556.1.5.241 NAME 'msDS-AppData' SUP applicationSettings STRUCTURAL MAY (owner $ keywords $ managedBy $ msDS-ByteArray $ msDS-DateTime $ msDS-Integer $ msDS-ObjectReference ) )", + "( 1.2.840.113556.1.5.73 NAME 'rpcServerElement' SUP rpcEntry STRUCTURAL MUST (rpcNsBindings $ rpcNsInterfaceID $ rpcNsTransferSyntax ) )", + "( 1.2.840.113556.1.5.150 NAME 'rRASAdministrationConnectionPoint' SUP serviceAdministrationPoint STRUCTURAL MAY (msRRASAttribute ) )", + "( 1.2.840.113556.1.5.191 NAME 'aCSResourceLimits' SUP top STRUCTURAL MAY (aCSMaxTokenRatePerFlow $ aCSMaxPeakBandwidthPerFlow $ aCSServiceType $ aCSAllocableRSVPBandwidth $ aCSMaxPeakBandwidth ) )", + "( 2.5.6.3 NAME 'locality' SUP top STRUCTURAL MUST (l ) MAY (st $ street $ searchGuide $ seeAlso ) )", + "( 1.3.6.1.1.1.2.6 NAME 'ipHost' SUP top AUXILIARY MAY (cn $ l $ description $ uid $ manager $ ipHostNumber ) )", + "( 1.2.840.113556.1.5.298 NAME 'msDS-ShadowPrincipalContainer' SUP container STRUCTURAL )", + "( 1.2.840.113556.1.5.301 NAME 'dnsZoneScope' SUP top STRUCTURAL MUST (dc ) MAY (managedBy $ dNSProperty ) )", + "( 1.2.840.113556.1.5.275 NAME 'msTPM-InformationObject' SUP top STRUCTURAL MUST (msTPM-OwnerInformation ) MAY (msTPM-SrkPubThumbprint $ msTPM-OwnerInformationTemp ) )", + "( 1.2.840.113556.1.5.289 NAME 'msDS-DeviceContainer' SUP top STRUCTURAL )", + "( 1.2.840.113556.1.4.2129 NAME 'msDNS-ServerSettings' SUP top STRUCTURAL MAY (msDNS-KeymasterZones ) )", + "( 1.2.840.113556.1.5.76 NAME 'foreignSecurityPrincipal' SUP top STRUCTURAL MUST (objectSid ) MAY (foreignIdentifier ) )", + "( 1.2.840.113556.1.5.44 NAME 'classStore' SUP top STRUCTURAL MAY (versionNumber $ nextLevelStore $ lastUpdateSequence $ appSchemaVersion ) )", + "( 0.9.2342.19200300.100.4.5 NAME 'account' SUP top STRUCTURAL MAY (l $ o $ ou $ description $ seeAlso $ uid $ host ) )", + "( 1.2.840.113556.1.5.26 NAME 'rpcProfileElement' SUP rpcEntry STRUCTURAL MUST (rpcNsInterfaceID $ rpcNsPriority ) MAY (rpcNsProfileEntry $ rpcNsAnnotation ) )", + "( 1.2.840.113556.1.5.215 NAME 'msWMI-WMIGPO' SUP top STRUCTURAL MUST (msWMI-TargetClass ) MAY (msWMI-intFlags1 $ msWMI-intFlags2 $ msWMI-intFlags3 $ msWMI-intFlags4 $ msWMI-Parm1 $ msWMI-Parm2 $ msWMI-Parm3 $ msWMI-Parm4 ) )", + "( 1.2.840.113556.1.5.243 NAME 'msDS-QuotaControl' SUP top STRUCTURAL MUST (cn $ msDS-QuotaTrustee $ msDS-QuotaAmount ) )", + "( 1.2.840.113556.1.5.256 NAME 'msDS-PasswordSettingsContainer' SUP top STRUCTURAL )", + "( 1.2.840.113556.1.5.187 NAME 'mS-SQL-SQLPublication' SUP top STRUCTURAL MAY (mS-SQL-Name $ mS-SQL-Status $ mS-SQL-Description $ mS-SQL-Type $ mS-SQL-Database $ mS-SQL-AllowAnonymousSubscription $ mS-SQL-Publisher $ mS-SQL-AllowKnownPullSubscription $ mS-SQL-AllowImmediateUpdatingSubscription $ mS-SQL-AllowQueuedUpdatingSubscription $ mS-SQL-AllowSnapshotFilesFTPDownloading $ mS-SQL-ThirdParty ) )", + "( 1.2.840.113556.1.5.9 NAME 'user' SUP organizationalPerson STRUCTURAL MAY (o $ businessCategory $ userCertificate $ givenName $ initials $ x500uniqueIdentifier $ displayName $ networkAddress $ employeeNumber $ employeeType $ homePostalAddress $ userAccountControl $ badPwdCount $ codePage $ homeDirectory $ homeDrive $ badPasswordTime $ lastLogoff $ lastLogon $ dBCSPwd $ localeID $ scriptPath $ logonHours $ logonWorkstation $ maxStorage $ userWorkstations $ unicodePwd $ otherLoginWorkstations $ ntPwdHistory $ pwdLastSet $ preferredOU $ primaryGroupID $ userParameters $ profilePath $ operatorCount $ adminCount $ accountExpires $ lmPwdHistory $ groupMembershipSAM $ logonCount $ controlAccessRights $ defaultClassStore $ groupsToIgnore $ groupPriority $ desktopProfile $ dynamicLDAPServer $ userPrincipalName $ lockoutTime $ userSharedFolder $ userSharedFolderOther $ servicePrincipalName $ aCSPolicyName $ terminalServer $ mSMQSignCertificates $ mSMQDigests $ mSMQDigestsMig $ mSMQSignCertificatesMig $ msNPAllowDialin $ msNPCallingStationID $ msNPSavedCallingStationID $ msRADIUSCallbackNumber $ msRADIUSFramedIPAddress $ msRADIUSFramedRoute $ msRADIUSServiceType $ msRASSavedCallbackNumber $ msRASSavedFramedIPAddress $ msRASSavedFramedRoute $ mS-DS-CreatorSID $ msCOM-UserPartitionSetLink $ msDS-Cached-Membership $ msDS-Cached-Membership-Time-Stamp $ msDS-Site-Affinity $ msDS-User-Account-Control-Computed $ lastLogonTimestamp $ msIIS-FTPRoot $ msIIS-FTPDir $ msDRM-IdentityCertificate $ msDS-SourceObjectDN $ msPKIRoamingTimeStamp $ msPKIDPAPIMasterKeys $ msPKIAccountCredentials $ msRADIUS-FramedInterfaceId $ msRADIUS-SavedFramedInterfaceId $ msRADIUS-FramedIpv6Prefix $ msRADIUS-SavedFramedIpv6Prefix $ msRADIUS-FramedIpv6Route $ msRADIUS-SavedFramedIpv6Route $ msDS-SecondaryKrbTgtNumber $ msDS-AuthenticatedAtDC $ msDS-SupportedEncryptionTypes $ msDS-LastSuccessfulInteractiveLogonTime $ msDS-LastFailedInteractiveLogonTime $ msDS-FailedInteractiveLogonCount $ msDS-FailedInteractiveLogonCountAtLastSuccessfulLogon $ msTSProfilePath $ msTSHomeDirectory $ msTSHomeDrive $ msTSAllowLogon $ msTSRemoteControl $ msTSMaxDisconnectionTime $ msTSMaxConnectionTime $ msTSMaxIdleTime $ msTSReconnectionAction $ msTSBrokenConnectionAction $ msTSConnectClientDrives $ msTSConnectPrinterDrives $ msTSDefaultToMainPrinter $ msTSWorkDirectory $ msTSInitialProgram $ msTSProperty01 $ msTSProperty02 $ msTSExpireDate $ msTSLicenseVersion $ msTSManagingLS $ msDS-UserPasswordExpiryTimeComputed $ msTSExpireDate2 $ msTSLicenseVersion2 $ msTSManagingLS2 $ msTSExpireDate3 $ msTSLicenseVersion3 $ msTSManagingLS3 $ msTSExpireDate4 $ msTSLicenseVersion4 $ msTSManagingLS4 $ msTSLSProperty01 $ msTSLSProperty02 $ msDS-ResultantPSO $ msPKI-CredentialRoamingTokens $ msTSPrimaryDesktop $ msTSSecondaryDesktops $ msDS-PrimaryComputer $ msDS-SyncServerUrl $ msDS-AssignedAuthNPolicySilo $ msDS-AuthNPolicySiloMembersBL $ msDS-AssignedAuthNPolicy $ msDS-KeyPrincipalBL $ msDS-KeyCredentialLink $ msDS-preferredDataLocation $ msDS-SupersededServiceAccountState $ msDS-SupersededManagedAccountLink $ userSMIMECertificate $ uid $ mail $ roomNumber $ photo $ manager $ homePhone $ secretary $ mobile $ pager $ audio $ jpegPhoto $ carLicense $ departmentNumber $ preferredLanguage $ userPKCS12 $ labeledURI $ msSFU30Name $ msSFU30NisDomain ) )", + "( 1.2.840.113556.1.5.259 NAME 'msDFS-Linkv2' SUP top STRUCTURAL MUST (msDFS-GenerationGUIDv2 $ msDFS-NamespaceIdentityGUIDv2 $ msDFS-LastModifiedv2 $ msDFS-Ttlv2 $ msDFS-Propertiesv2 $ msDFS-TargetListv2 $ msDFS-LinkPathv2 $ msDFS-LinkIdentityGUIDv2 ) MAY (msDFS-Commentv2 $ msDFS-LinkSecurityDescriptorv2 $ msDFS-ShortNameLinkPathv2 ) )", + "( 1.2.840.113556.1.5.141 NAME 'interSiteTransport' SUP top STRUCTURAL MUST (transportDLLName $ transportAddressAttribute ) MAY (options $ replInterval ) )", + "( 1.2.840.113556.1.6.13.4.4 NAME 'msDFSR-GlobalSettings' SUP top STRUCTURAL MAY (msDFSR-Extension $ msDFSR-Flags $ msDFSR-Options $ msDFSR-Options2 ) )", + "( 1.2.840.113556.1.5.29 NAME 'serviceClass' SUP leaf STRUCTURAL MUST (displayName $ serviceClassID ) MAY (serviceClassInfo ) )", + "( 1.2.840.113556.1.5.189 NAME 'mS-SQL-OLAPDatabase' SUP top STRUCTURAL MAY (mS-SQL-Name $ mS-SQL-Contact $ mS-SQL-Status $ mS-SQL-LastUpdatedDate $ mS-SQL-InformationURL $ mS-SQL-ConnectionURL $ mS-SQL-PublicationURL $ mS-SQL-Description $ mS-SQL-Type $ mS-SQL-Size $ mS-SQL-LastBackupDate $ mS-SQL-Applications $ mS-SQL-Keywords ) )", + "( 2.5.6.16 NAME 'certificationAuthority' SUP top STRUCTURAL MUST (cn $ cACertificate $ authorityRevocationList $ certificateRevocationList ) MAY (searchGuide $ teletexTerminalIdentifier $ supportedApplicationContext $ crossCertificatePair $ deltaRevocationList $ domainPolicyObject $ parentCA $ dNSHostName $ parentCACertificateChain $ domainID $ cAConnect $ cAWEBURL $ cRLObject $ cAUsages $ previousCACertificates $ pendingCACertificates $ previousParentCA $ pendingParentCA $ currentParentCA $ cACertificateDN $ certificateTemplates $ signatureAlgorithms $ enrollmentProviders ) )", + "( 1.2.840.113556.1.5.104 NAME 'meeting' SUP top STRUCTURAL MUST (meetingName ) MAY (meetingID $ meetingDescription $ meetingKeyword $ meetingLocation $ meetingProtocol $ meetingType $ meetingApplication $ meetingLanguage $ meetingMaxParticipants $ meetingOriginator $ meetingContactInfo $ meetingOwner $ meetingIP $ meetingScope $ meetingAdvertiseScope $ meetingURL $ meetingRating $ meetingIsEncrypted $ meetingRecurrence $ meetingStartTime $ meetingEndTime $ meetingBandwidth $ meetingBlob ) )", + "( 1.2.840.113556.1.5.287 NAME 'msDS-DeviceRegistrationServiceContainer' SUP top STRUCTURAL )", + "( 1.2.840.113556.1.5.71 NAME 'nTDSConnection' SUP leaf STRUCTURAL MUST (enabledConnection $ fromServer $ options ) MAY (generatedConnection $ schedule $ transportType $ mS-DS-ReplicatesNCReason ) )", + "( 1.2.840.113556.1.5.291 NAME 'msDS-AuthNPolicySilos' SUP top STRUCTURAL )", + "( 1.2.840.113556.1.5.218 NAME 'msMQ-Custom-Recipient' SUP top STRUCTURAL MAY (msMQ-Recipient-FormatName ) )", + "( 1.2.840.113556.1.5.72 NAME 'nTDSService' SUP top STRUCTURAL MAY (tombstoneLifetime $ dSHeuristics $ garbageCollPeriod $ replTopologyStayOfExecution $ sPNMappings $ msDS-Other-Settings $ msDS-DeletedObjectLifetime ) )", + "( 1.2.840.113556.1.3.9 NAME 'dMD' SUP top STRUCTURAL MUST (cn ) MAY (dmdName $ schemaUpdate $ prefixMap $ schemaInfo $ msDs-Schema-Extensions $ msDS-IntId $ msDS-USNLastSyncSuccess ) )", + "( 1.2.840.113556.1.5.280 NAME 'msDS-ClaimsTransformationPolicyType' SUP top STRUCTURAL MAY (msDS-TransformationRules $ msDS-TransformationRulesCompiled ) )", + "( 0.9.2342.19200300.100.4.14 NAME 'rFC822LocalPart' SUP domain STRUCTURAL MAY (cn $ sn $ street $ description $ postalAddress $ postalCode $ postOfficeBox $ physicalDeliveryOfficeName $ telephoneNumber $ telexNumber $ teletexTerminalIdentifier $ facsimileTelephoneNumber $ x121Address $ internationalISDNNumber $ registeredAddress $ destinationIndicator $ preferredDeliveryMethod $ seeAlso ) )", + "( 1.2.840.113556.1.5.190 NAME 'mS-SQL-OLAPCube' SUP top STRUCTURAL MAY (mS-SQL-Name $ mS-SQL-Contact $ mS-SQL-Status $ mS-SQL-LastUpdatedDate $ mS-SQL-InformationURL $ mS-SQL-PublicationURL $ mS-SQL-Description $ mS-SQL-Size $ mS-SQL-Keywords ) )", + "( 1.2.840.113556.1.5.208 NAME 'msWMI-UintSetParam' SUP msWMI-RangeParam STRUCTURAL MUST (msWMI-IntDefault ) MAY (msWMI-IntValidValues ) )", + "( 1.3.6.1.1.1.2.2 NAME 'posixGroup' SUP top AUXILIARY MAY (cn $ description $ userPassword $ unixUserPassword $ gidNumber $ memberUid ) )", + "( 2.5.6.17 NAME 'groupOfUniqueNames' SUP top STRUCTURAL MUST (cn $ uniqueMember ) MAY (o $ ou $ description $ businessCategory $ owner $ seeAlso ) )", + "( 1.2.840.113556.1.5.252 NAME 'ms-net-ieee-8023-GroupPolicy' SUP top STRUCTURAL MAY (ms-net-ieee-8023-GP-PolicyGUID $ ms-net-ieee-8023-GP-PolicyData $ ms-net-ieee-8023-GP-PolicyReserved ) )", + "( 1.2.840.113556.1.5.119 NAME 'ipsecNegotiationPolicy' SUP ipsecBase STRUCTURAL MAY (iPSECNegotiationPolicyType $ iPSECNegotiationPolicyAction ) )", + "( 1.2.840.113556.1.5.292 NAME 'msDS-AuthNPolicySilo' SUP top STRUCTURAL MAY (msDS-AssignedAuthNPolicySiloBL $ msDS-AuthNPolicySiloMembers $ msDS-UserAuthNPolicy $ msDS-ComputerAuthNPolicy $ msDS-ServiceAuthNPolicy $ msDS-AuthNPolicySiloEnforced ) )", + "( 1.2.840.113556.1.5.121 NAME 'ipsecNFA' SUP ipsecBase STRUCTURAL MAY (ipsecNegotiationPolicyReference $ ipsecFilterReference ) )", + "( 1.2.840.113556.1.5.42 NAME 'dfsConfiguration' SUP top STRUCTURAL )", + "( 0.9.2342.19200300.100.4.9 NAME 'documentSeries' SUP top STRUCTURAL MUST (cn ) MAY (l $ o $ ou $ description $ telephoneNumber $ seeAlso ) )", + "( 1.2.840.113556.1.5.271 NAME 'msDS-ResourceProperties' SUP top STRUCTURAL )", + "( 1.2.840.113556.1.5.91 NAME 'linkTrackObjectMoveTable' SUP fileLinkTracking STRUCTURAL )", + "( 1.2.840.113556.1.5.136 NAME 'rpcContainer' SUP container STRUCTURAL MAY (nameServiceFlags ) )", + "( 1.2.840.113556.1.5.83 NAME 'rIDManager' SUP top STRUCTURAL MUST (rIDAvailablePool ) MAY (msDS-RIDPoolAllocationEnabled ) )", + "( 1.2.840.113556.1.5.206 NAME 'msWMI-IntSetParam' SUP msWMI-RangeParam STRUCTURAL MUST (msWMI-IntDefault ) MAY (msWMI-IntValidValues ) )", + "( 1.2.840.113556.1.6.13.4.5 NAME 'msDFSR-ReplicationGroup' SUP top STRUCTURAL MUST (msDFSR-ReplicationGroupType ) MAY (description $ msDFSR-Version $ msDFSR-Extension $ msDFSR-RootSizeInMb $ msDFSR-StagingSizeInMb $ msDFSR-ConflictSizeInMb $ msDFSR-TombstoneExpiryInMin $ msDFSR-FileFilter $ msDFSR-DirectoryFilter $ msDFSR-Schedule $ msDFSR-Flags $ msDFSR-Options $ msDFSR-DeletedSizeInMb $ msDFSR-DefaultCompressionExclusionFilter $ msDFSR-OnDemandExclusionFileFilter $ msDFSR-OnDemandExclusionDirectoryFilter $ msDFSR-Options2 ) )", + "( 1.2.840.113556.1.5.125 NAME 'addressBookContainer' SUP top STRUCTURAL MUST (displayName ) MAY (purportedSearch ) )", + "( 1.2.840.113556.1.5.7000.49 NAME 'applicationSettings' SUP top ABSTRACT MAY (applicationName $ notificationList $ msDS-Settings ) )", + "( 1.2.840.113556.1.5.265 NAME 'msDS-OptionalFeature' SUP top STRUCTURAL MUST (msDS-OptionalFeatureGUID $ msDS-OptionalFeatureFlags ) MAY (msDS-RequiredDomainBehaviorVersion $ msDS-RequiredForestBehaviorVersion ) )", + "( 1.2.840.113556.1.5.94 NAME 'serviceAdministrationPoint' SUP serviceConnectionPoint STRUCTURAL )", + "( 1.2.840.113556.1.5.102 NAME 'nTFRSReplicaSet' SUP top STRUCTURAL MAY (fRSReplicaSetType $ fRSVersionGUID $ schedule $ fRSFileFilter $ fRSDirectoryFilter $ fRSDSPoll $ fRSServiceCommand $ fRSReplicaSetGUID $ fRSLevelLimit $ fRSRootSecurity $ fRSExtensions $ managedBy $ fRSFlags $ fRSPartnerAuthLevel $ fRSPrimaryMember $ msFRS-Topology-Pref $ msFRS-Hub-Member ) )", + "( 1.2.840.113556.1.5.203 NAME 'msWMI-RangeParam' SUP top STRUCTURAL MUST (msWMI-PropertyName $ msWMI-TargetClass $ msWMI-TargetType ) )", + "( 1.2.840.113556.1.5.7000.56 NAME 'ipsecBase' SUP top ABSTRACT MAY (ipsecName $ ipsecID $ ipsecDataType $ ipsecData $ ipsecOwnersReference ) )", + "( 1.2.840.113556.1.6.13.4.3 NAME 'msDFSR-Subscription' SUP top STRUCTURAL MUST (msDFSR-ContentSetGuid $ msDFSR-ReplicationGroupGuid ) MAY (msDFSR-Extension $ msDFSR-RootPath $ msDFSR-RootSizeInMb $ msDFSR-StagingPath $ msDFSR-StagingSizeInMb $ msDFSR-ConflictPath $ msDFSR-ConflictSizeInMb $ msDFSR-Enabled $ msDFSR-Flags $ msDFSR-Options $ msDFSR-RootFence $ msDFSR-DfsLinkTarget $ msDFSR-DeletedPath $ msDFSR-DeletedSizeInMb $ msDFSR-ReadOnly $ msDFSR-CachePolicy $ msDFSR-MinDurationCacheInMin $ msDFSR-MaxAgeInCacheInMin $ msDFSR-OnDemandExclusionFileFilter $ msDFSR-OnDemandExclusionDirectoryFilter $ msDFSR-Options2 $ msDFSR-StagingCleanupTriggerInPercent ) )", + "( 1.2.840.113556.1.5.223 NAME 'msPKI-PrivateKeyRecoveryAgent' SUP top STRUCTURAL MUST (userCertificate ) )", + "( 1.2.840.113556.1.5.178 NAME 'pKIEnrollmentService' SUP top STRUCTURAL MAY (cACertificate $ dNSHostName $ cACertificateDN $ certificateTemplates $ signatureAlgorithms $ enrollmentProviders $ msPKI-Enrollment-Servers $ msPKI-Site-Name ) )", + "( 1.2.840.113556.1.6.18.2.211 NAME 'msSFU30MailAliases' SUP top STRUCTURAL MAY (msSFU30Name $ msSFU30Aliases $ msSFU30NisDomain $ nisMapName ) )", + "( 1.2.840.113556.1.5.53 NAME 'typeLibrary' SUP top STRUCTURAL MAY (cOMClassID $ cOMInterfaceID $ cOMUniqueLIBID ) )", + "( 1.2.840.113556.1.6.13.4.8 NAME 'msDFSR-Topology' SUP top STRUCTURAL MAY (msDFSR-Extension $ msDFSR-Flags $ msDFSR-Options $ msDFSR-Options2 ) )", + "( 1.2.840.113556.1.5.237 NAME 'msDS-AzScope' SUP top STRUCTURAL MUST (msDS-AzScopeName ) MAY (description $ msDS-AzApplicationData $ msDS-AzObjectGuid $ msDS-AzGenericData ) )", + "( 1.2.840.113556.1.5.74 NAME 'categoryRegistration' SUP leaf STRUCTURAL MAY (localeID $ categoryId $ managedBy $ localizedDescription ) )", + "( 1.2.840.113556.1.5.11 NAME 'comConnectionPoint' SUP connectionPoint STRUCTURAL MUST (cn ) MAY (marshalledInterface $ moniker $ monikerDisplayName ) )", + "( 1.2.840.113556.1.5.93 NAME 'linkTrackOMTEntry' SUP leaf STRUCTURAL MAY (birthLocation $ oMTIndxGuid $ currentLocation $ timeRefresh $ oMTGuid ) )", + "( 1.2.840.113556.1.5.10 NAME 'classRegistration' SUP leaf STRUCTURAL MAY (cOMInterfaceID $ cOMProgID $ cOMCLSID $ cOMTreatAsClassId $ cOMOtherProgId $ implementedCategories $ requiredCategories $ managedBy ) )", + "( 1.2.840.113556.1.5.148 NAME 'siteLinkBridge' SUP top STRUCTURAL MUST (siteLinkList ) )", + "( 1.2.840.113556.1.5.81 NAME 'rpcServer' SUP rpcEntry STRUCTURAL MAY (rpcNsObjectID $ rpcNsCodeset $ rpcNsEntryFlags ) )", + "( 1.2.840.113556.1.5.302 NAME 'msDS-DelegatedManagedServiceAccount' SUP computer STRUCTURAL MUST (msDS-ManagedPasswordInterval $ msDS-DelegatedMSAState ) MAY (msDS-ManagedPassword $ msDS-ManagedPasswordId $ msDS-ManagedPasswordPreviousId $ msDS-GroupMSAMembership $ msDS-ManagedAccountPrecededByLink ) )", + "( 1.2.840.113556.1.3.46 NAME 'mailRecipient' SUP top AUXILIARY MUST (cn ) MAY (telephoneNumber $ userCertificate $ info $ garbageCollPeriod $ msExchAssistantName $ msExchLabeledURI $ showInAddressBook $ userCert $ legacyExchangeDN $ msDS-PhoneticDisplayName $ msDS-GeoCoordinatesAltitude $ msDS-GeoCoordinatesLatitude $ msDS-GeoCoordinatesLongitude $ msDS-ExternalDirectoryObjectId $ userSMIMECertificate $ textEncodedORAddress $ secretary $ labeledURI ) )", + "( 1.2.840.113556.1.5.1 NAME 'securityObject' SUP top ABSTRACT MUST (cn ) )", + "( 1.2.840.113556.1.5.20 NAME 'leaf' SUP top ABSTRACT )", + "( 1.2.840.113556.1.5.151 NAME 'intellimirrorSCP' SUP serviceAdministrationPoint STRUCTURAL MAY (netbootMachineFilePath $ netbootAllowNewClients $ netbootLimitClients $ netbootMaxClients $ netbootCurrentClientCount $ netbootAnswerRequests $ netbootAnswerOnlyValidClients $ netbootNewMachineNamingPolicy $ netbootNewMachineOU $ netbootIntelliMirrorOSes $ netbootTools $ netbootLocallyInstalledOSes $ netbootServer ) )", + "( 1.2.840.113556.1.6.13.4.1 NAME 'msDFSR-LocalSettings' SUP top STRUCTURAL MAY (msDFSR-Version $ msDFSR-Extension $ msDFSR-Flags $ msDFSR-Options $ msDFSR-Options2 $ msDFSR-CommonStagingPath $ msDFSR-CommonStagingSizeInMb $ msDFSR-StagingCleanupTriggerInPercent ) )", + "( 1.2.840.113556.1.5.186 NAME 'mS-SQL-SQLRepository' SUP top STRUCTURAL MAY (mS-SQL-Name $ mS-SQL-Contact $ mS-SQL-Build $ mS-SQL-Status $ mS-SQL-Version $ mS-SQL-Description $ mS-SQL-InformationDirectory ) )", + "( 2.5.6.8 NAME 'organizationalRole' SUP top STRUCTURAL MUST (cn ) MAY (l $ st $ street $ ou $ postalAddress $ postalCode $ postOfficeBox $ physicalDeliveryOfficeName $ telephoneNumber $ telexNumber $ teletexTerminalIdentifier $ facsimileTelephoneNumber $ x121Address $ internationalISDNNumber $ registeredAddress $ destinationIndicator $ preferredDeliveryMethod $ roleOccupant $ seeAlso ) )", + "( 2.5.20.1 NAME 'subSchema' SUP top STRUCTURAL MAY (extendedClassInfo $ extendedAttributeInfo $ dITContentRules $ attributeTypes $ objectClasses $ modifyTimeStamp ) )", + "( 1.2.840.113556.1.5.284 NAME 'msDS-DeviceRegistrationService' SUP top STRUCTURAL MUST (msDS-IsEnabled $ msDS-DeviceLocation ) MAY (msDS-IssuerCertificates $ msDS-RegistrationQuota $ msDS-MaximumRegistrationInactivityPeriod $ msDS-IssuerPublicCertificates $ msDS-CloudIssuerPublicCertificates $ msDS-CloudIsEnabled ) )", + "( 1.2.840.113556.1.5.84 NAME 'displaySpecifier' SUP top STRUCTURAL MAY (iconPath $ creationWizard $ contextMenu $ adminPropertyPages $ shellPropertyPages $ classDisplayName $ adminContextMenu $ shellContextMenu $ attributeDisplayNames $ treatAsLeaf $ createDialog $ createWizardExt $ scopeFlags $ queryFilter $ extraColumns $ adminMultiselectPropertyPages ) )", + "( 1.2.840.113556.1.5.212 NAME 'msWMI-ShadowObject' SUP top STRUCTURAL MUST (msWMI-TargetObject ) )", + "( 1.2.840.113556.1.5.59 NAME 'fileLinkTrackingEntry' SUP top STRUCTURAL )", + "( 1.2.840.113556.1.4.2161 NAME 'msAuthz-CentralAccessPolicies' SUP top STRUCTURAL )", + "( 1.2.840.113556.1.5.161 NAME 'mSMQQueue' SUP top STRUCTURAL MAY (mSMQQueueType $ mSMQJournal $ mSMQBasePriority $ mSMQLabel $ mSMQAuthenticate $ mSMQPrivacyLevel $ mSMQOwnerID $ mSMQTransactional $ mSMQQueueQuota $ mSMQQueueJournalQuota $ mSMQQueueNameExt $ mSMQLabelEx $ MSMQ-SecuredSource $ MSMQ-MulticastAddress ) )", + "( 1.2.840.113556.1.5.193 NAME 'msCOM-Partition' SUP top STRUCTURAL MAY (msCOM-ObjectId ) )", + "( 1.2.840.113556.1.5.118 NAME 'ipsecFilter' SUP ipsecBase STRUCTURAL )", + "( 2.5.6.2 NAME 'country' SUP top STRUCTURAL MUST (c ) MAY (searchGuide $ co ) )", + "( 1.2.840.113556.1.5.97 NAME 'physicalLocation' SUP locality STRUCTURAL MAY (managedBy ) )", + "( 1.2.840.113556.1.3.30 NAME 'computer' SUP user STRUCTURAL MAY (cn $ networkAddress $ localPolicyFlags $ defaultLocalPolicyObject $ machineRole $ location $ netbootInitialization $ netbootGUID $ netbootMachineFilePath $ siteGUID $ operatingSystem $ operatingSystemVersion $ operatingSystemServicePack $ operatingSystemHotfix $ volumeCount $ physicalLocationObject $ dNSHostName $ policyReplicationFlags $ managedBy $ rIDSetReferences $ catalogs $ netbootSIFFile $ netbootMirrorDataFile $ msDS-AdditionalDnsHostName $ msDS-AdditionalSamAccountName $ msDS-ExecuteScriptPassword $ msDS-KrbTgtLink $ msDS-RevealedUsers $ msDS-NeverRevealGroup $ msDS-RevealOnDemandGroup $ msDS-RevealedList $ msDS-AuthenticatedAtDC $ msDS-isGC $ msDS-isRODC $ msDS-SiteName $ msDS-PromotionSettings $ msTPM-OwnerInformation $ msTSProperty01 $ msTSProperty02 $ msDS-IsUserCachableAtRodc $ msDS-HostServiceAccount $ msTSEndpointData $ msTSEndpointType $ msTSEndpointPlugin $ msTSPrimaryDesktopBL $ msTSSecondaryDesktopBL $ msTPM-TpmInformationForComputer $ msDS-GenerationId $ msImaging-ThumbprintHash $ msImaging-HashAlgorithm $ netbootDUID $ msSFU30Name $ msSFU30Aliases $ msSFU30NisDomain $ nisMapName ) )", + "( 1.3.6.1.1.1.2.8 NAME 'nisNetgroup' SUP top STRUCTURAL MUST (cn ) MAY (description $ msSFU30Name $ msSFU30NisDomain $ msSFU30NetgroupHostAtDomain $ msSFU30NetgroupUserAtDomain $ memberNisNetgroup $ nisNetgroupTriple $ nisMapName ) )", + "( 1.2.840.113556.1.5.153 NAME 'nTFRSMember' SUP top STRUCTURAL MAY (fRSUpdateTimeout $ fRSServiceCommand $ serverReference $ fRSRootSecurity $ fRSExtensions $ frsComputerReference $ fRSControlDataCreation $ fRSControlInboundBacklog $ fRSControlOutboundBacklog $ fRSFlags $ fRSPartnerAuthLevel ) )", + "( 2.5.6.12 NAME 'applicationEntity' SUP top STRUCTURAL MUST (cn $ presentationAddress ) MAY (l $ o $ ou $ supportedApplicationContext $ seeAlso ) )", + "( 2.5.6.11 NAME 'applicationProcess' SUP top STRUCTURAL MUST (cn ) MAY (l $ ou $ seeAlso ) )", + "( 1.2.840.113556.1.5.279 NAME 'msDS-ValueType' SUP top STRUCTURAL MUST (msDS-ClaimValueType $ msDS-ClaimIsValueSpaceRestricted $ msDS-ClaimIsSingleValued $ msDS-IsPossibleValuesPresent ) )", + "( 1.2.840.113556.1.5.204 NAME 'msWMI-UnknownRangeParam' SUP msWMI-RangeParam STRUCTURAL MUST (msWMI-NormalizedClass $ msWMI-TargetObject ) )", + "( 1.2.840.113556.1.5.66 NAME 'domain' SUP top ABSTRACT MUST (dc ) )", + "( 2.5.6.13 NAME 'dSA' SUP applicationEntity STRUCTURAL MAY (knowledgeInformation ) )", + "( 1.2.840.113556.1.5.120 NAME 'ipsecISAKMPPolicy' SUP ipsecBase STRUCTURAL )" + ], + "objectGUID": [ + { + "encoded": "g5gwX0fZm06Tax3QJvt0zw==", + "encoding": "base64" + } + ], + "systemFlags": [ + "134217728" + ], + "uSNChanged": [ + "5" + ], + "uSNCreated": [ + "5" + ], + "whenChanged": [ + "20230721160305.0Z" + ], + "whenCreated": [ + "20230721160305.0Z" + ] + }, + "schema_entry": "CN=Aggregate,CN=Schema,CN=Configuration,DC=t,DC=goauthentik,DC=io", + "type": "SchemaInfo" +} \ No newline at end of file diff --git a/authentik/sources/ldap/tests/fixtures/ms_ad_2025/setup.ps1 b/authentik/sources/ldap/tests/fixtures/ms_ad_2025/setup.ps1 new file mode 100644 index 0000000000..16191a6daa --- /dev/null +++ b/authentik/sources/ldap/tests/fixtures/ms_ad_2025/setup.ps1 @@ -0,0 +1,38 @@ +$root = "dc=t,dc=goauthentik,dc=io" +$domain = "t.goauthentik.io" + +$rootOU = New-ADOrganizationalUnit ` + -Name "ak-test" ` + -Path $root ` + -PassThru + +$userErinH = New-ADUser ` + -GivenName "Erin M." ` + -Surname "Hagens" ` + -Name "Erin M. Hagens" ` + -UserPrincipalName "erin.h@$domain" ` + -SamAccountName "erin.h" ` + -PasswordNotRequired $true ` + -Path $rootOU.DistinguishedName ` + -Enabled $true ` + -PassThru + +New-ADUser ` + -GivenName "Deactivated" ` + -Surname "Account" ` + -Name "Deactivated Account" ` + -UserPrincipalName "deactivated.a@$domain" ` + -SamAccountName "deactivated.a" ` + -Enabled $false ` + -Path $rootOU.DistinguishedName + +$groupTest = New-ADGroup ` + -Name "Test Group" ` + -Path $rootOU.DistinguishedName ` + -GroupCategory Security ` + -GroupScope Global ` + -PassThru + +Add-ADGroupMember ` + -Identity $groupTest ` + -Members $userErinH diff --git a/authentik/sources/ldap/tests/fixtures/ms_ad_2025/update.py b/authentik/sources/ldap/tests/fixtures/ms_ad_2025/update.py new file mode 100644 index 0000000000..76ccb585ab --- /dev/null +++ b/authentik/sources/ldap/tests/fixtures/ms_ad_2025/update.py @@ -0,0 +1,27 @@ +import ssl +from getpass import getpass +from pathlib import Path +from sys import argv + +from ldap3 import ALL, ALL_ATTRIBUTES, Connection, Server, Tls + +if __name__ == "__main__": + server = argv[1] + user = argv[2] + password = getpass() + + output_dir = Path(__file__).parent + + server = Server(server, get_info=ALL, tls=Tls(validate=ssl.CERT_NONE), use_ssl=True) + connection = Connection(server, user, password, raise_exceptions=True) + connection.bind() + + server.info.to_file(str(output_dir / "info.json")) + server.schema.to_file(str(output_dir / "schema.json")) + + if connection.search( + server.info.naming_contexts[0], "(objectclass=*)", attributes=ALL_ATTRIBUTES + ): + connection.response_to_file(str(output_dir / "entries.json"), raw=True) + + connection.unbind() diff --git a/authentik/sources/ldap/tests/mock_ad.py b/authentik/sources/ldap/tests/mock_ad.py index 9c0be2109c..4221ae69fa 100644 --- a/authentik/sources/ldap/tests/mock_ad.py +++ b/authentik/sources/ldap/tests/mock_ad.py @@ -1,102 +1,26 @@ """ldap testing utils""" -from ldap3 import MOCK_SYNC, OFFLINE_AD_2012_R2, Connection, Server +from ldap3 import MOCK_SYNC, Connection, Server +from ldap3.strategy.mockSync import MockSyncStrategy -from authentik.sources.ldap.sync.vendor.ms_ad import UserAccountControl +from authentik.lib.generators import generate_id +from authentik.lib.tests.utils import load_fixture -def mock_ad_connection(password: str) -> Connection: +def mock_ad_connection() -> Connection: """Create mock AD connection""" - server = Server("my_fake_server", get_info=OFFLINE_AD_2012_R2) - _pass = "foo" # noqa # nosec + server = Server.from_definition( + "my_fake_server", + dsa_info=load_fixture("fixtures/ms_ad_2025/info.json"), + dsa_schema=load_fixture("fixtures/ms_ad_2025/schema.json"), + ) connection = Connection( server, - user="cn=my_user,dc=goauthentik,dc=io", - password=_pass, + user="cn=ak-service-account,dc=t,dc=goauthentik,dc=io", + password=generate_id(), client_strategy=MOCK_SYNC, ) - # Entry for password checking - connection.strategy.add_entry( - "cn=user,ou=users,dc=goauthentik,dc=io", - { - "name": "test-user", - "objectSid": "unique-test-group", - "objectClass": "person", - "displayName": "Erin M. Hagens", - "sAMAccountName": "sAMAccountName", - "distinguishedName": "cn=user,ou=users,dc=goauthentik,dc=io", - }, - ) - connection.strategy.add_entry( - "cn=group1,ou=groups,dc=goauthentik,dc=io", - { - "name": "test-group", - "objectSid": "unique-test-group", - "objectClass": "group", - "distinguishedName": "cn=group1,ou=groups,dc=goauthentik,dc=io", - "member": ["cn=user,ou=users,dc=goauthentik,dc=io"], - }, - ) - # Group without SID - connection.strategy.add_entry( - "cn=group2,ou=groups,dc=goauthentik,dc=io", - { - "name": "test-group", - "objectClass": "group", - "distinguishedName": "cn=group2,ou=groups,dc=goauthentik,dc=io", - }, - ) - connection.strategy.add_entry( - "cn=user0,ou=foo,ou=users,dc=goauthentik,dc=io", - { - "userPassword": password, - "sAMAccountName": "user0_sn", - "name": "user0_sn", - "revision": 0, - "objectSid": "user0", - "objectClass": "person", - "distinguishedName": "cn=user0,ou=foo,ou=users,dc=goauthentik,dc=io", - "userAccountControl": ( - UserAccountControl.ACCOUNTDISABLE + UserAccountControl.NORMAL_ACCOUNT - ), - }, - ) - # User without SID - connection.strategy.add_entry( - "cn=user1,ou=users,dc=goauthentik,dc=io", - { - "userPassword": "test1111", - "sAMAccountName": "user2_sn", - "name": "user1_sn", - "revision": 0, - "objectClass": "person", - "distinguishedName": "cn=user1,ou=users,dc=goauthentik,dc=io", - }, - ) - # Duplicate users - connection.strategy.add_entry( - "cn=user2,ou=users,dc=goauthentik,dc=io", - { - "userPassword": "test2222", - "sAMAccountName": "user2_sn", - "name": "user2_sn", - "revision": 0, - "objectSid": "unique-test2222", - "objectClass": "person", - "distinguishedName": "cn=user2,ou=users,dc=goauthentik,dc=io", - }, - ) - connection.strategy.add_entry( - "cn=user3,ou=users,dc=goauthentik,dc=io", - { - "userPassword": "test2222", - "sAMAccountName": "user2_sn", - "name": "user2_sn", - "revision": 0, - "objectSid": "unique-test2222", - "objectClass": "person", - "distinguishedName": "cn=user3,ou=users,dc=goauthentik,dc=io", - }, - ) + strategy: MockSyncStrategy = connection.strategy + strategy.entries_from_json(load_fixture("fixtures/ms_ad_2025/entries.json", path_only=True)) connection.bind() return connection diff --git a/authentik/sources/ldap/tests/test_api.py b/authentik/sources/ldap/tests/test_api.py index 887beebf79..a6fdf3c373 100644 --- a/authentik/sources/ldap/tests/test_api.py +++ b/authentik/sources/ldap/tests/test_api.py @@ -1,13 +1,19 @@ """LDAP Source API tests""" +from json import loads +from unittest.mock import MagicMock, patch + +from django.db.models import Q +from django.urls import reverse from rest_framework.exceptions import ErrorDetail from rest_framework.test import APITestCase -from authentik.lib.generators import generate_id, generate_key -from authentik.sources.ldap.api import LDAPSourceSerializer -from authentik.sources.ldap.models import LDAPSource - -LDAP_PASSWORD = generate_key() +from authentik.blueprints.tests import apply_blueprint +from authentik.core.tests.utils import create_test_admin_user +from authentik.lib.generators import generate_id +from authentik.sources.ldap.api.sources import LDAPSourceSerializer +from authentik.sources.ldap.models import LDAPSource, LDAPSourcePropertyMapping +from authentik.sources.ldap.tests.mock_ad import mock_ad_connection class LDAPAPITests(APITestCase): @@ -21,7 +27,7 @@ class LDAPAPITests(APITestCase): "slug": " foo", "server_uri": "ldaps://1.2.3.4", "bind_cn": "", - "bind_password": LDAP_PASSWORD, + "bind_password": generate_id(), "base_dn": "dc=foo", "sync_users_password": True, } @@ -36,7 +42,7 @@ class LDAPAPITests(APITestCase): slug=generate_id(), server_uri="ldaps://1.2.3.4", bind_cn="", - bind_password=LDAP_PASSWORD, + bind_password=generate_id(), base_dn="dc=foo", sync_users_password=True, ) @@ -46,7 +52,7 @@ class LDAPAPITests(APITestCase): "slug": generate_id(), "server_uri": "ldaps://1.2.3.4", "bind_cn": "", - "bind_password": LDAP_PASSWORD, + "bind_password": generate_id(), "base_dn": "dc=foo", "sync_users_password": True, } @@ -72,7 +78,7 @@ class LDAPAPITests(APITestCase): "slug": " foo", "server_uri": "ldaps://1.2.3.4", "bind_cn": "", - "bind_password": LDAP_PASSWORD, + "bind_password": generate_id(), "base_dn": "dc=foo", "sync_users": True, "user_property_mappings": [], @@ -88,10 +94,39 @@ class LDAPAPITests(APITestCase): "slug": " foo", "server_uri": "ldaps://1.2.3.4", "bind_cn": "", - "bind_password": LDAP_PASSWORD, + "bind_password": generate_id(), "base_dn": "dc=foo", "sync_groups": True, "group_property_mappings": [], } ) self.assertFalse(serializer.is_valid()) + + @apply_blueprint("system/sources-ldap.yaml") + def test_sync_debug(self): + user = create_test_admin_user() + self.client.force_login(user) + + source: LDAPSource = LDAPSource.objects.create( + name=generate_id(), + slug=generate_id(), + base_dn="dc=goauthentik,dc=io", + additional_user_dn="ou=users", + additional_group_dn="ou=groups", + ) + source.user_property_mappings.set( + LDAPSourcePropertyMapping.objects.filter( + Q(managed__startswith="goauthentik.io/sources/ldap/default") + | Q(managed__startswith="goauthentik.io/sources/ldap/ms") + ) + ) + connection = MagicMock(return_value=mock_ad_connection()) + with patch("authentik.sources.ldap.models.LDAPSource.connection", connection): + res = self.client.get( + reverse("authentik_api:ldapsource-debug", kwargs={"slug": source.slug}) + ) + self.assertEqual(res.status_code, 200) + body = loads(res.content.decode()) + self.assertIn("users", body) + self.assertIn("groups", body) + self.assertIn("membership", body) diff --git a/authentik/sources/ldap/tests/test_auth.py b/authentik/sources/ldap/tests/test_auth.py index def896ab4d..f032fc51d1 100644 --- a/authentik/sources/ldap/tests/test_auth.py +++ b/authentik/sources/ldap/tests/test_auth.py @@ -33,13 +33,17 @@ class LDAPSyncTests(TestCase): def test_auth_direct_user_ad(self): """Test direct auth""" + self.source.base_dn = "dc=t,dc=goauthentik,dc=io" + self.source.additional_user_dn = "" + self.source.additional_group_dn = "" + self.source.save() self.source.user_property_mappings.set( LDAPSourcePropertyMapping.objects.filter( Q(managed__startswith="goauthentik.io/sources/ldap/default-") | Q(managed__startswith="goauthentik.io/sources/ldap/ms-") ) ) - raw_conn = mock_ad_connection(LDAP_PASSWORD) + raw_conn = mock_ad_connection() bind_mock = Mock(wraps=raw_conn.bind) raw_conn.bind = bind_mock connection = MagicMock(return_value=raw_conn) @@ -47,16 +51,16 @@ class LDAPSyncTests(TestCase): user_sync = UserLDAPSynchronizer(self.source, Task()) user_sync.sync_full() - user = User.objects.get(username="user0_sn") + user = User.objects.get(username="erin.h") # auth_user_by_bind = Mock(return_value=user) backend = LDAPBackend() self.assertEqual( - backend.authenticate(None, username="user0_sn", password=LDAP_PASSWORD), + backend.authenticate(None, username="erin.h", password=LDAP_PASSWORD), user, ) connection.assert_called_with( connection_kwargs={ - "user": "cn=user0,ou=foo,ou=users,dc=goauthentik,dc=io", + "user": "CN=Erin M. Hagens,OU=ak-test,DC=t,DC=goauthentik,DC=io", "password": LDAP_PASSWORD, } ) @@ -64,18 +68,22 @@ class LDAPSyncTests(TestCase): def test_auth_synced_user_ad(self): """Test Cached auth""" + self.source.base_dn = "dc=t,dc=goauthentik,dc=io" + self.source.additional_user_dn = "" + self.source.additional_group_dn = "" + self.source.save() self.source.user_property_mappings.set( LDAPSourcePropertyMapping.objects.filter( Q(managed__startswith="goauthentik.io/sources/ldap/default-") | Q(managed__startswith="goauthentik.io/sources/ldap/ms-") ) ) - connection = MagicMock(return_value=mock_ad_connection(LDAP_PASSWORD)) + connection = MagicMock(return_value=mock_ad_connection()) with patch("authentik.sources.ldap.models.LDAPSource.connection", connection): user_sync = UserLDAPSynchronizer(self.source, Task()) user_sync.sync_full() - user = User.objects.get(username="user0_sn") + user = User.objects.get(username="erin.h") auth_user_by_bind = Mock(return_value=user) with patch( "authentik.sources.ldap.auth.LDAPBackend.auth_user_by_bind", @@ -83,7 +91,7 @@ class LDAPSyncTests(TestCase): ): backend = LDAPBackend() self.assertEqual( - backend.authenticate(None, username="user0_sn", password=LDAP_PASSWORD), + backend.authenticate(None, username="erin.h", password=LDAP_PASSWORD), user, ) diff --git a/authentik/sources/ldap/tests/test_password.py b/authentik/sources/ldap/tests/test_password.py index 94417e31e4..3b3e2cdee8 100644 --- a/authentik/sources/ldap/tests/test_password.py +++ b/authentik/sources/ldap/tests/test_password.py @@ -5,13 +5,11 @@ from unittest.mock import MagicMock, patch from django.test import TestCase from authentik.core.models import User -from authentik.lib.generators import generate_key from authentik.sources.ldap.models import LDAPSource, LDAPSourcePropertyMapping from authentik.sources.ldap.password import LDAPPasswordChanger from authentik.sources.ldap.tests.mock_ad import mock_ad_connection -LDAP_PASSWORD = generate_key() -LDAP_CONNECTION_PATCH = MagicMock(return_value=mock_ad_connection(LDAP_PASSWORD)) +LDAP_CONNECTION_PATCH = MagicMock(return_value=mock_ad_connection()) class LDAPPasswordTests(TestCase): @@ -21,9 +19,9 @@ class LDAPPasswordTests(TestCase): self.source = LDAPSource.objects.create( name="ldap", slug="ldap", - base_dn="dc=goauthentik,dc=io", - additional_user_dn="ou=users", - additional_group_dn="ou=groups", + base_dn="dc=t,dc=goauthentik,dc=io", + additional_user_dn="", + additional_group_dn="", ) self.source.user_property_mappings.set(LDAPSourcePropertyMapping.objects.all()) self.source.save() @@ -42,7 +40,9 @@ class LDAPPasswordTests(TestCase): pwc = LDAPPasswordChanger(self.source) user = User.objects.create( username="test", - attributes={"distinguishedName": "cn=user,ou=users,dc=goauthentik,dc=io"}, + attributes={ + "distinguishedName": "CN=Erin M. Hagens,OU=ak-test,DC=t,DC=goauthentik,DC=io" + }, ) self.assertFalse(pwc.ad_password_complexity("test", user)) # 1 category self.assertFalse(pwc.ad_password_complexity("test1", user)) # 2 categories diff --git a/authentik/sources/ldap/tests/test_sync.py b/authentik/sources/ldap/tests/test_sync.py index 991b7e625c..83e10cff55 100644 --- a/authentik/sources/ldap/tests/test_sync.py +++ b/authentik/sources/ldap/tests/test_sync.py @@ -54,12 +54,16 @@ class LDAPSyncTests(TestCase): def test_sync_missing_page(self): """Test sync with missing page""" - connection = MagicMock(return_value=mock_ad_connection(LDAP_PASSWORD)) + connection = MagicMock(return_value=mock_ad_connection()) with patch("authentik.sources.ldap.models.LDAPSource.connection", connection): ldap_sync_page.send(self.source.pk, class_to_path(UserLDAPSynchronizer), "foo") def test_sync_error(self): """Test user sync""" + self.source.base_dn = "dc=t,dc=goauthentik,dc=io" + self.source.additional_user_dn = "" + self.source.additional_group_dn = "" + self.source.save() self.source.user_property_mappings.set( LDAPSourcePropertyMapping.objects.filter( Q(managed__startswith="goauthentik.io/sources/ldap/default") @@ -72,7 +76,7 @@ class LDAPSyncTests(TestCase): ) self.source.user_property_mappings.set([mapping]) self.source.save() - connection = MagicMock(return_value=mock_ad_connection(LDAP_PASSWORD)) + connection = MagicMock(return_value=mock_ad_connection()) with patch("authentik.sources.ldap.models.LDAPSource.connection", connection): user_sync = UserLDAPSynchronizer(self.source, Task()) with self.assertRaises(StopSync): @@ -101,7 +105,7 @@ class LDAPSyncTests(TestCase): ) ) self.source.user_property_mappings.add(none, byte_mapping) - connection = MagicMock(return_value=mock_ad_connection(LDAP_PASSWORD)) + connection = MagicMock(return_value=mock_ad_connection()) # we basically just test that the mappings don't throw errors with patch("authentik.sources.ldap.models.LDAPSource.connection", connection): @@ -110,36 +114,108 @@ class LDAPSyncTests(TestCase): def test_sync_users_ad(self): """Test user sync""" + self.source.base_dn = "dc=t,dc=goauthentik,dc=io" + self.source.additional_user_dn = "" + self.source.additional_group_dn = "" + self.source.save() self.source.user_property_mappings.set( LDAPSourcePropertyMapping.objects.filter( Q(managed__startswith="goauthentik.io/sources/ldap/default") | Q(managed__startswith="goauthentik.io/sources/ldap/ms") ) ) - connection = MagicMock(return_value=mock_ad_connection(LDAP_PASSWORD)) + connection = MagicMock(return_value=mock_ad_connection()) # Create the user beforehand so we can set attributes and check they aren't removed user = User.objects.create( - username="user0_sn", + username="erin.h", attributes={ - "ldap_uniq": ( - "S-117-6648368-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-" - "0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-" - "0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-" - "0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0" - ), "foo": "bar", }, ) + UserLDAPSourceConnection.objects.create( + user=user, + source=self.source, + identifier="S-1-5-21-1955698215-2946288202-2760262721-1114", + ) with patch("authentik.sources.ldap.models.LDAPSource.connection", connection): user_sync = UserLDAPSynchronizer(self.source, Task()) user_sync.sync_full() - user = User.objects.filter(username="user0_sn").first() + + user.refresh_from_db() + self.assertEqual(user.name, "Erin M. Hagens") self.assertEqual(user.attributes["foo"], "bar") - self.assertFalse(user.is_active) - self.assertEqual(user.path, "goauthentik.io/sources/ldap/users/foo") - self.assertFalse(User.objects.filter(username="user1_sn").exists()) + self.assertTrue(user.is_active) + self.assertEqual(user.path, "goauthentik.io/sources/ldap/ak-test") + + deactivated = User.objects.filter(username="deactivated.a").first() + self.assertIsNotNone(deactivated) + self.assertFalse(deactivated.is_active) + + def test_sync_ad_legacy(self): + """Test user sync""" + self.source.base_dn = "dc=t,dc=goauthentik,dc=io" + self.source.additional_user_dn = "" + self.source.additional_group_dn = "" + self.source.save() + self.source.user_property_mappings.set( + LDAPSourcePropertyMapping.objects.filter( + Q(managed__startswith="goauthentik.io/sources/ldap/default") + | Q(managed__startswith="goauthentik.io/sources/ldap/ms") + ) + ) + self.source.group_property_mappings.set( + LDAPSourcePropertyMapping.objects.filter( + managed="goauthentik.io/sources/ldap/default-name" + ) + ) + connection = MagicMock(return_value=mock_ad_connection()) + + # Create the user beforehand so we can set attributes and check they aren't removed + user = User.objects.create( + username="erin.h", + attributes={ + "ldap_uniq": "S-1-5-21-1955698215-2946288202-2760262721-1114", + "foo": "bar", + }, + ) + group = Group.objects.create( + name="Administrators", attributes={"ldap_uniq": "S-1-5-32-544", "foo": "bar"} + ) + + with patch("authentik.sources.ldap.models.LDAPSource.connection", connection): + user_sync = UserLDAPSynchronizer(self.source, Task()) + user_sync.sync_full() + group_sync = GroupLDAPSynchronizer(self.source, Task()) + group_sync.sync_full() + + user.refresh_from_db() + group.refresh_from_db() + + self.assertEqual(user.name, "Erin M. Hagens") + self.assertEqual(user.attributes["foo"], "bar") + self.assertTrue(user.is_active) + self.assertEqual(user.path, "goauthentik.io/sources/ldap/ak-test") + self.assertTrue( + UserLDAPSourceConnection.objects.filter( + source=self.source, + user=user, + identifier="S-1-5-21-1955698215-2946288202-2760262721-1114", + ).exists() + ) + + deactivated = User.objects.filter(username="deactivated.a").first() + self.assertIsNotNone(deactivated) + self.assertFalse(deactivated.is_active) + + self.assertEqual(group.name, "Administrators") + self.assertTrue( + GroupLDAPSourceConnection.objects.filter( + source=self.source, group=group, identifier="S-1-5-32-544" + ).exists() + ) + self.assertEqual(group.attributes["foo"], "bar") def test_sync_users_openldap(self): """Test user sync""" @@ -213,6 +289,10 @@ class LDAPSyncTests(TestCase): def test_sync_groups_ad(self): """Test group sync""" + self.source.base_dn = "dc=t,dc=goauthentik,dc=io" + self.source.additional_user_dn = "" + self.source.additional_group_dn = "" + self.source.save() self.source.user_property_mappings.set( LDAPSourcePropertyMapping.objects.filter( Q(managed__startswith="goauthentik.io/sources/ldap/default") @@ -224,7 +304,7 @@ class LDAPSyncTests(TestCase): managed="goauthentik.io/sources/ldap/default-name" ) ) - connection = MagicMock(return_value=mock_ad_connection(LDAP_PASSWORD)) + connection = MagicMock(return_value=mock_ad_connection()) with patch("authentik.sources.ldap.models.LDAPSource.connection", connection): _user = create_test_admin_user() parent_group = Group.objects.get(name=_user.username) @@ -234,7 +314,7 @@ class LDAPSyncTests(TestCase): group_sync.sync_full() membership_sync = MembershipLDAPSynchronizer(self.source, Task()) membership_sync.sync_full() - group: Group = Group.objects.filter(name="test-group").first() + group: Group = Group.objects.filter(name="Test Group").first() self.assertIsNotNone(group) self.assertEqual(group.parents.first(), parent_group) @@ -346,7 +426,7 @@ class LDAPSyncTests(TestCase): ) ) self.source.save() - connection = MagicMock(return_value=mock_ad_connection(LDAP_PASSWORD)) + connection = MagicMock(return_value=mock_ad_connection()) with patch("authentik.sources.ldap.models.LDAPSource.connection", connection): ldap_sync.send(self.source.pk) diff --git a/authentik/sources/ldap/urls.py b/authentik/sources/ldap/urls.py index bd5cbcfd3f..e35f07e32f 100644 --- a/authentik/sources/ldap/urls.py +++ b/authentik/sources/ldap/urls.py @@ -1,11 +1,11 @@ """API URLs""" -from authentik.sources.ldap.api import ( +from authentik.sources.ldap.api.connections import ( GroupLDAPSourceConnectionViewSet, - LDAPSourcePropertyMappingViewSet, - LDAPSourceViewSet, UserLDAPSourceConnectionViewSet, ) +from authentik.sources.ldap.api.property_mappings import LDAPSourcePropertyMappingViewSet +from authentik.sources.ldap.api.sources import LDAPSourceViewSet api_urlpatterns = [ ("propertymappings/source/ldap", LDAPSourcePropertyMappingViewSet), diff --git a/authentik/sources/oauth/api/source.py b/authentik/sources/oauth/api/source.py index 805de67c65..0075efd46c 100644 --- a/authentik/sources/oauth/api/source.py +++ b/authentik/sources/oauth/api/source.py @@ -17,7 +17,7 @@ from authentik.core.api.sources import SourceSerializer from authentik.core.api.used_by import UsedByMixin from authentik.core.api.utils import PassiveSerializer from authentik.lib.utils.http import get_http_session -from authentik.sources.oauth.models import OAuthSource +from authentik.sources.oauth.models import OAuthSource, PKCEMethod from authentik.sources.oauth.types.registry import SourceType, registry @@ -59,7 +59,11 @@ class OAuthSourceSerializer(SourceSerializer): def validate(self, attrs: dict) -> dict: session = get_http_session() - source_type = registry.find_type(attrs["provider_type"]) + provider_type_name = attrs.get( + "provider_type", + self.instance.provider_type if self.instance else None, + ) + source_type = registry.find_type(provider_type_name) well_known = attrs.get("oidc_well_known_url") or source_type.oidc_well_known_url inferred_oidc_jwks_url = None @@ -69,7 +73,7 @@ class OAuthSourceSerializer(SourceSerializer): well_known_config = session.get(well_known) well_known_config.raise_for_status() except RequestException as exc: - text = exc.response.text if exc.response else str(exc) + text = exc.response.text if exc.response is not None else str(exc) raise ValidationError({"oidc_well_known_url": text}) from None config = well_known_config.json() if "issuer" not in config: @@ -79,13 +83,24 @@ class OAuthSourceSerializer(SourceSerializer): "authorization_url": "authorization_endpoint", "access_token_url": "token_endpoint", "profile_url": "userinfo_endpoint", - "pkce": "code_challenge_methods_supported", } for ak_key, oidc_key in field_map.items(): # Don't overwrite user-set values if ak_key in attrs and attrs[ak_key]: continue attrs[ak_key] = config.get(oidc_key, "") + # code_challenge_methods_supported is a list per RFC 8414, not a + # single method. Pick one (prefer S256, the RFC-recommended method) + # rather than letting the list round-trip into the pkce TextField + # and later str() into the authorize URL as "['plain', 'S256']". + if not attrs.get("pkce"): + supported_methods = config.get("code_challenge_methods_supported") or [] + attrs["pkce"] = PKCEMethod.NONE + if isinstance(supported_methods, list): + if PKCEMethod.S256 in supported_methods: + attrs["pkce"] = PKCEMethod.S256 + elif PKCEMethod.PLAIN in supported_methods: + attrs["pkce"] = PKCEMethod.PLAIN inferred_oidc_jwks_url = config.get("jwks_uri", "") # Prefer user-entered URL to inferred URL to default URL @@ -96,21 +111,20 @@ class OAuthSourceSerializer(SourceSerializer): jwks_config = session.get(jwks_url) jwks_config.raise_for_status() except RequestException as exc: - text = exc.response.text if exc.response else str(exc) + text = exc.response.text if exc.response is not None else str(exc) raise ValidationError({"oidc_jwks_url": text}) from None config = jwks_config.json() attrs["oidc_jwks"] = config - provider_type = registry.find_type(attrs.get("provider_type", "")) for url in [ "authorization_url", "access_token_url", "profile_url", ]: - if getattr(provider_type, url, None) is None: + if getattr(source_type, url, None) is None: if url not in attrs: raise ValidationError( - f"{url} is required for provider {provider_type.verbose_name}" + f"{url} is required for provider {source_type.verbose_name}" ) return attrs diff --git a/authentik/sources/oauth/clients/base.py b/authentik/sources/oauth/clients/base.py index a580786e32..5a7dcd3c2a 100644 --- a/authentik/sources/oauth/clients/base.py +++ b/authentik/sources/oauth/clients/base.py @@ -47,7 +47,7 @@ class BaseOAuthClient: self.logger.warning( "Unable to fetch user profile", exc=exc, - response=exc.response.text if exc.response else str(exc), + response=exc.response.text if exc.response is not None else str(exc), ) return None return response.json() diff --git a/authentik/sources/oauth/clients/oauth1.py b/authentik/sources/oauth/clients/oauth1.py index 2617556dd8..6e26cce677 100644 --- a/authentik/sources/oauth/clients/oauth1.py +++ b/authentik/sources/oauth/clients/oauth1.py @@ -45,7 +45,7 @@ class OAuthClient(BaseOAuthClient): LOGGER.warning( "Unable to fetch access token", exc=exc, - response=exc.response.text if exc.response else str(exc), + response=exc.response.text if exc.response is not None else str(exc), ) return None return self.parse_raw_token(response.text) @@ -67,7 +67,7 @@ class OAuthClient(BaseOAuthClient): response.raise_for_status() except RequestException as exc: raise OAuthSourceException( - exc.response.text if exc.response else str(exc), + exc.response.text if exc.response is not None else str(exc), ) from exc return response.text diff --git a/authentik/sources/oauth/clients/oauth2.py b/authentik/sources/oauth/clients/oauth2.py index 807287ce99..6375c89e9b 100644 --- a/authentik/sources/oauth/clients/oauth2.py +++ b/authentik/sources/oauth/clients/oauth2.py @@ -121,7 +121,7 @@ class OAuth2Client(BaseOAuthClient): LOGGER.warning( "Unable to fetch access token", exc=exc, - response=exc.response.text if exc.response else str(exc), + response=exc.response.text if exc.response is not None else str(exc), ) return None return response.json() @@ -202,7 +202,7 @@ class UserprofileHeaderAuthClient(OAuth2Client): LOGGER.warning( "Unable to fetch user profile from profile_url", exc=exc, - response=exc.response.text if exc.response else str(exc), + response=exc.response.text if exc.response is not None else str(exc), ) return None return response.json() diff --git a/authentik/sources/oauth/models.py b/authentik/sources/oauth/models.py index fd8b83e483..3e57e0e4d8 100644 --- a/authentik/sources/oauth/models.py +++ b/authentik/sources/oauth/models.py @@ -136,7 +136,7 @@ class OAuthSource(NonCreatableType, Source): return UILoginButton( name=self.name, challenge=provider.login_challenge(self, request), - icon_url=self.icon_url, + icon_url=self.get_icon_url(request, use_cache=False) or self.icon_url, promoted=self.promoted, ) diff --git a/authentik/sources/oauth/tasks.py b/authentik/sources/oauth/tasks.py index 1d898a8c4a..28b623c10e 100644 --- a/authentik/sources/oauth/tasks.py +++ b/authentik/sources/oauth/tasks.py @@ -27,7 +27,7 @@ def update_well_known_jwks(): well_known_config = session.get(source.oidc_well_known_url) well_known_config.raise_for_status() except RequestException as exc: - text = exc.response.text if exc.response else str(exc) + text = exc.response.text if exc.response is not None else str(exc) LOGGER.warning("Failed to update well_known", source=source, exc=exc, text=text) self.info(f"Failed to update OIDC configuration for {source.slug}") continue @@ -65,7 +65,7 @@ def update_well_known_jwks(): jwks_config = session.get(source.oidc_jwks_url) jwks_config.raise_for_status() except RequestException as exc: - text = exc.response.text if exc.response else str(exc) + text = exc.response.text if exc.response is not None else str(exc) LOGGER.warning("Failed to update JWKS", source=source, exc=exc, text=text) self.info(f"Failed to update JWKS for {source.slug}") continue diff --git a/authentik/sources/oauth/tests/test_api.py b/authentik/sources/oauth/tests/test_api.py new file mode 100644 index 0000000000..0452bbe8bb --- /dev/null +++ b/authentik/sources/oauth/tests/test_api.py @@ -0,0 +1,31 @@ +from django.urls import reverse +from rest_framework.test import APITestCase + +from authentik.core.tests.utils import create_test_admin_user +from authentik.lib.generators import generate_id +from authentik.sources.oauth.models import OAuthSource + + +class TestOAuthSourceAPI(APITestCase): + def setUp(self): + self.source = OAuthSource.objects.create( + name=generate_id(), + slug=generate_id(), + provider_type="openidconnect", + authorization_url="", + profile_url="", + consumer_key=generate_id(), + ) + self.user = create_test_admin_user() + + def test_patch_no_type(self): + self.client.force_login(self.user) + res = self.client.patch( + reverse("authentik_api:oauthsource-detail", kwargs={"slug": self.source.slug}), + { + "authorization_url": f"https://{generate_id()}", + "profile_url": f"https://{generate_id()}", + "access_token_url": f"https://{generate_id()}", + }, + ) + self.assertEqual(res.status_code, 200) diff --git a/authentik/sources/oauth/tests/test_views.py b/authentik/sources/oauth/tests/test_views.py index ebc4a4efa3..e75885f542 100644 --- a/authentik/sources/oauth/tests/test_views.py +++ b/authentik/sources/oauth/tests/test_views.py @@ -79,6 +79,7 @@ class TestOAuthSource(APITestCase): "token_endpoint": "http://mock/oauth/token", "userinfo_endpoint": "http://mock/oauth/userinfo", "jwks_uri": "http://mock/oauth/discovery/keys", + "code_challenge_methods_supported": ["S256"], } jwks_config = {"keys": []} with Mocker() as mocker: @@ -109,6 +110,7 @@ class TestOAuthSource(APITestCase): serializer.validated_data["oidc_jwks_url"], "http://mock/oauth/discovery/keys" ) self.assertEqual(serializer.validated_data["oidc_jwks"], jwks_config) + self.assertEqual(serializer.validated_data["pkce"], PKCEMethod.S256) def test_api_validate_openid_connect_invalid(self): """Test API validation (with OIDC endpoints)""" diff --git a/authentik/sources/oauth/types/entra_id.py b/authentik/sources/oauth/types/entra_id.py index 890476d902..06bd182531 100644 --- a/authentik/sources/oauth/types/entra_id.py +++ b/authentik/sources/oauth/types/entra_id.py @@ -41,7 +41,7 @@ class EntraIDClient(UserprofileHeaderAuthClient): LOGGER.warning( "Unable to fetch user profile", exc=exc, - response=exc.response.text if exc.response else str(exc), + response=exc.response.text if exc.response is not None else str(exc), ) return None profile_data["raw_groups"] = group_response.json() diff --git a/authentik/sources/oauth/types/registry.py b/authentik/sources/oauth/types/registry.py index d501ffb2e1..2f5657f7cb 100644 --- a/authentik/sources/oauth/types/registry.py +++ b/authentik/sources/oauth/types/registry.py @@ -1,6 +1,5 @@ """Source type manager""" -from collections.abc import Callable from enum import Enum from typing import Any @@ -114,7 +113,7 @@ class SourceTypeRegistry: ) return found_type - def find(self, type_name: str, kind: RequestKind) -> Callable: + def find(self, type_name: str, kind: RequestKind) -> type[OAuthCallback | OAuthRedirect]: """Find fitting Source Type""" found_type = self.find_type(type_name) if kind == RequestKind.CALLBACK: diff --git a/authentik/sources/oauth/views/callback.py b/authentik/sources/oauth/views/callback.py index bfc098a171..839ca81c02 100644 --- a/authentik/sources/oauth/views/callback.py +++ b/authentik/sources/oauth/views/callback.py @@ -15,6 +15,7 @@ from structlog.stdlib import get_logger from authentik.core.sources.flow_manager import SourceFlowManager from authentik.events.models import Event, EventAction +from authentik.sources.oauth.clients.base import BaseOAuthClient from authentik.sources.oauth.models import ( GroupOAuthSourceConnection, OAuthSource, @@ -29,7 +30,7 @@ class OAuthCallback(OAuthClientMixin, View): "Base OAuth callback view." source: OAuthSource - token: dict | None = None + token: dict[str, Any] | None = None def dispatch(self, request: HttpRequest, *_, **kwargs) -> HttpResponse: """View Get handler""" @@ -49,20 +50,31 @@ class OAuthCallback(OAuthClientMixin, View): if "error" in self.token: return self.handle_login_failure(self.token["error"]) # Fetch profile info + try: + res = self.redirect_flow_manager(client) + except ValueError as exc: + # if we're authenticated and not in a source stage and this new flag is enabled, + # just continue + if self.request.user.is_authenticated: + pass + return self.handle_login_failure(exc.args[0]) + return res + + def redirect_flow_manager(self, client: BaseOAuthClient) -> HttpResponse: try: raw_info = client.get_profile_info(self.token) if raw_info is None: - return self.handle_login_failure("Could not retrieve profile.") + raise ValueError("Could not retrieve profile.") except JSONDecodeError as exc: Event.new( EventAction.CONFIGURATION_ERROR, message="Failed to JSON-decode profile.", raw_profile=exc.doc, ).from_http(self.request) - return self.handle_login_failure("Could not retrieve profile.") + raise ValueError("Could not retrieve profile.") from None identifier = self.get_user_id(info=raw_info) if identifier is None: - return self.handle_login_failure("Could not determine id.") + raise ValueError("Could not determine id.") sfm = OAuthSourceFlowManager( source=self.source, request=self.request, @@ -94,7 +106,7 @@ class OAuthCallback(OAuthClientMixin, View): def get_user_id(self, info: dict[str, Any]) -> str | None: """Return unique identifier from the profile info.""" if "id" in info: - return info["id"] + return str(info["id"]) return None def handle_login_failure(self, reason: str) -> HttpResponse: diff --git a/authentik/sources/plex/models.py b/authentik/sources/plex/models.py index 519ccea704..660ffff3f6 100644 --- a/authentik/sources/plex/models.py +++ b/authentik/sources/plex/models.py @@ -116,7 +116,7 @@ class PlexSource(ScheduledModel, Source): "slug": self.slug, } ), - icon_url=self.icon_url, + icon_url=self.get_icon_url(request, use_cache=False) or self.icon_url, name=self.name, promoted=self.promoted, ) diff --git a/authentik/sources/saml/api/source.py b/authentik/sources/saml/api/source.py index d327712981..b5bebef993 100644 --- a/authentik/sources/saml/api/source.py +++ b/authentik/sources/saml/api/source.py @@ -40,6 +40,7 @@ class SAMLSourceSerializer(SourceSerializer): "sso_url", "slo_url", "allow_idp_initiated", + "force_authn", "name_id_policy", "binding_type", "verification_kp", @@ -74,6 +75,7 @@ class SAMLSourceViewSet(UsedByMixin, ModelViewSet): "sso_url", "slo_url", "allow_idp_initiated", + "force_authn", "name_id_policy", "binding_type", "verification_kp", diff --git a/authentik/sources/saml/migrations/0022_samlsource_force_authn.py b/authentik/sources/saml/migrations/0022_samlsource_force_authn.py new file mode 100644 index 0000000000..06038cf1f3 --- /dev/null +++ b/authentik/sources/saml/migrations/0022_samlsource_force_authn.py @@ -0,0 +1,21 @@ +# Generated by Django 5.1.12 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("authentik_sources_saml", "0021_samlsource_signed_assertion_and_more"), + ] + + operations = [ + migrations.AddField( + model_name="samlsource", + name="force_authn", + field=models.BooleanField( + default=False, + help_text="When enabled, the IdP will re-authenticate the user even if a session exists.", + ), + ), + ] diff --git a/authentik/sources/saml/models.py b/authentik/sources/saml/models.py index fc4618d709..614b7d1069 100644 --- a/authentik/sources/saml/models.py +++ b/authentik/sources/saml/models.py @@ -116,6 +116,12 @@ class SAMLSource(Source): "as no validation of the request ID is done." ), ) + force_authn = models.BooleanField( + default=False, + help_text=_( + "When enabled, the IdP will re-authenticate the user even if a session exists." + ), + ) name_id_policy = models.TextField( choices=SAMLNameIDPolicy.choices, default=SAMLNameIDPolicy.PERSISTENT, @@ -278,7 +284,7 @@ class SAMLSource(Source): } ), name=self.name, - icon_url=self.icon_url, + icon_url=self.get_icon_url(request, use_cache=False) or self.icon_url, promoted=self.promoted, ) diff --git a/authentik/sources/saml/processors/request.py b/authentik/sources/saml/processors/request.py index 0c8bf4e962..2742e57e17 100644 --- a/authentik/sources/saml/processors/request.py +++ b/authentik/sources/saml/processors/request.py @@ -67,6 +67,8 @@ class RequestProcessor: auth_n_request.attrib["IssueInstant"] = self.issue_instant auth_n_request.attrib["ProtocolBinding"] = SAML_BINDING_POST auth_n_request.attrib["Version"] = "2.0" + if self.source.force_authn: + auth_n_request.attrib["ForceAuthn"] = "true" # Create issuer object auth_n_request.append(self.get_issuer()) diff --git a/authentik/sources/saml/processors/response.py b/authentik/sources/saml/processors/response.py index 5180763ce1..5f215d1f80 100644 --- a/authentik/sources/saml/processors/response.py +++ b/authentik/sources/saml/processors/response.py @@ -1,6 +1,7 @@ """authentik saml source processor""" from base64 import b64decode +from datetime import UTC, datetime from time import mktime from typing import TYPE_CHECKING @@ -40,6 +41,7 @@ from authentik.sources.saml.exceptions import ( InvalidSignature, MismatchedRequestID, MissingSAMLResponse, + SAMLException, UnsupportedNameIDFormat, ) from authentik.sources.saml.models import ( @@ -95,6 +97,7 @@ class ResponseProcessor: self._verify_request_id() self._verify_status() + self._verify_conditions() def _decrypt_response(self): """Decrypt SAMLResponse EncryptedAssertion Element""" @@ -126,6 +129,20 @@ class ResponseProcessor: ) self._assertion = decrypted_assertion + def _verify_conditions(self): + conditions = self.get_assertion().find(f"{{{NS_SAML_ASSERTION}}}Conditions") + if conditions is None: + return + _now = now() + before = conditions.attrib.get("NotBefore") + if before: + if datetime.fromisoformat(before).replace(tzinfo=UTC) > _now: + raise SAMLException("Assertion is not valid yet or expired.") + on_or_after = conditions.attrib.get("NotOnOrAfter") + if on_or_after: + if datetime.fromisoformat(on_or_after).replace(tzinfo=UTC) < _now: + raise SAMLException("Assertion is not valid yet or expired.") + def _verify_signature(self, signature_node: _Element): """Verify a single signature node""" xmlsec.tree.add_ids(self._root, ["ID"]) @@ -215,10 +232,9 @@ class ResponseProcessor: user has an attribute that refers to our Source for cleanup. The user is also deleted on logout and periodically.""" # Create a temporary User - name_id = self._get_name_id() - username = name_id.text + name_id_el, name_id = self._get_name_id() # trim username to ensure it is max 150 chars - username = f"ak-{username[: USERNAME_MAX_LENGTH - 14]}-transient" + username = f"ak-{name_id[: USERNAME_MAX_LENGTH - 14]}-transient" expiry = mktime( (now() + timedelta_from_string(self._source.temporary_user_delete_after)).timetuple() ) @@ -234,20 +250,18 @@ class ResponseProcessor: }, path=self._source.get_user_path(), ) - LOGGER.debug("Created temporary user for NameID Transient", username=name_id.text) + LOGGER.debug("Created temporary user for NameID Transient", username=name_id) user.set_unusable_password() user.save() - UserSAMLSourceConnection.objects.create( - source=self._source, user=user, identifier=name_id.text - ) + UserSAMLSourceConnection.objects.create(source=self._source, user=user, identifier=name_id) return SAMLSourceFlowManager( source=self._source, request=self._http_request, - identifier=str(name_id.text), + identifier=str(name_id), user_info={ "root": self._root, "assertion": self.get_assertion(), - "name_id": name_id, + "name_id": name_id_el, }, policy_context={}, ) @@ -258,7 +272,7 @@ class ResponseProcessor: return self._assertion return self._root.find(f"{{{NS_SAML_ASSERTION}}}Assertion") - def _get_name_id(self) -> Element: + def _get_name_id(self) -> tuple[Element, str]: """Get NameID Element""" assertion = self.get_assertion() if assertion is None: @@ -269,12 +283,11 @@ class ResponseProcessor: name_id = subject.find(f"{{{NS_SAML_ASSERTION}}}NameID") if name_id is None: raise ValueError("NameID element not found") - return name_id + return name_id, "".join(name_id.itertext()) def _get_name_id_filter(self) -> dict[str, str]: """Returns the subject's NameID as a Filter for the `User`""" - name_id_el = self._get_name_id() - name_id = name_id_el.text + name_id_el, name_id = self._get_name_id() if not name_id: raise UnsupportedNameIDFormat("Subject's NameID is empty.") _format = name_id_el.attrib["Format"] @@ -295,26 +308,26 @@ class ResponseProcessor: def prepare_flow_manager(self) -> SourceFlowManager: """Prepare flow plan depending on whether or not the user exists""" - name_id = self._get_name_id() + name_id_el, name_id = self._get_name_id() # Sanity check, show a warning if NameIDPolicy doesn't match what we go - if self._source.name_id_policy != name_id.attrib["Format"]: + if self._source.name_id_policy != name_id_el.attrib["Format"]: LOGGER.warning( "NameID from IdP doesn't match our policy", expected=self._source.name_id_policy, - got=name_id.attrib["Format"], + got=name_id_el.attrib["Format"], ) # transient NameIDs are handled separately as they don't have to go through flows. - if name_id.attrib["Format"] == SAML_NAME_ID_FORMAT_TRANSIENT: + if name_id_el.attrib["Format"] == SAML_NAME_ID_FORMAT_TRANSIENT: return self._handle_name_id_transient() return SAMLSourceFlowManager( source=self._source, request=self._http_request, - identifier=str(name_id.text), + identifier=str(name_id), user_info={ "root": self._root, "assertion": self.get_assertion(), - "name_id": name_id, + "name_id": name_id_el, }, policy_context={ "saml_response": etree.tostring(self._root), diff --git a/authentik/sources/saml/tests/test_property_mappings.py b/authentik/sources/saml/tests/test_property_mappings.py index d7a51b6b39..dee422e746 100644 --- a/authentik/sources/saml/tests/test_property_mappings.py +++ b/authentik/sources/saml/tests/test_property_mappings.py @@ -4,6 +4,7 @@ from base64 import b64encode from defusedxml.lxml import fromstring from django.test import TestCase +from freezegun import freeze_time from authentik.common.saml.constants import NS_SAML_ASSERTION from authentik.core.tests.utils import RequestFactory, create_test_flow @@ -34,6 +35,7 @@ class TestPropertyMappings(TestCase): pre_authentication_flow=create_test_flow(), ) + @freeze_time("2022-10-14T14:15:00") def test_user_base_properties(self): """Test user base properties""" properties = self.source.get_base_user_properties( @@ -61,6 +63,7 @@ class TestPropertyMappings(TestCase): properties = self.source.get_base_group_properties(root=ROOT, group_id=group_id) self.assertEqual(properties, {"name": group_id}) + @freeze_time("2022-10-14T14:15:00") def test_user_property_mappings(self): """Test user property mappings""" self.source.user_property_mappings.add( @@ -94,6 +97,7 @@ class TestPropertyMappings(TestCase): }, ) + @freeze_time("2022-10-14T14:15:00") def test_group_property_mappings(self): """Test group property mappings""" self.source.group_property_mappings.add( diff --git a/authentik/sources/saml/tests/test_request.py b/authentik/sources/saml/tests/test_request.py new file mode 100644 index 0000000000..9e185d3af6 --- /dev/null +++ b/authentik/sources/saml/tests/test_request.py @@ -0,0 +1,35 @@ +"""SAML Source AuthnRequest tests""" + +from django.test import RequestFactory, TestCase + +from authentik.core.tests.utils import create_test_flow +from authentik.lib.generators import generate_id +from authentik.sources.saml.models import SAMLSource +from authentik.sources.saml.processors.request import RequestProcessor + + +class TestRequestProcessor(TestCase): + """Test SAML AuthnRequest generation""" + + def setUp(self): + self.factory = RequestFactory() + self.source = SAMLSource.objects.create( + name=generate_id(), + slug=generate_id(), + issuer="authentik", + sso_url="https://idp.example.com/sso", + pre_authentication_flow=create_test_flow(), + ) + + def test_force_authn_flag(self): + """Test that ForceAuthn attribute is set when force_authn is True""" + self.source.force_authn = True + self.source.save() + + request = self.factory.get("/") + request.session = {} + + processor = RequestProcessor(self.source, request, "") + auth_n = processor.get_auth_n() + + self.assertEqual(auth_n.attrib.get("ForceAuthn"), "true") diff --git a/authentik/sources/saml/tests/test_response.py b/authentik/sources/saml/tests/test_response.py index f448e351d9..fbf3542e62 100644 --- a/authentik/sources/saml/tests/test_response.py +++ b/authentik/sources/saml/tests/test_response.py @@ -3,6 +3,7 @@ from base64 import b64encode from django.test import TestCase +from freezegun import freeze_time from authentik.core.tests.utils import RequestFactory, create_test_cert, create_test_flow from authentik.crypto.models import CertificateKeyPair @@ -46,6 +47,7 @@ class TestResponseProcessor(TestCase): ): ResponseProcessor(self.source, request).parse() + @freeze_time("2022-10-14T14:15:00") def test_success(self): """Test success""" request = self.factory.post( @@ -72,6 +74,7 @@ class TestResponseProcessor(TestCase): }, ) + @freeze_time("2022-10-14T14:16:40Z") def test_success_with_status_message_and_detail(self): """Test success with StatusMessage and StatusDetail present (should not raise error)""" request = self.factory.post( @@ -88,6 +91,7 @@ class TestResponseProcessor(TestCase): sfm = parser.prepare_flow_manager() self.assertEqual(sfm.user_properties["username"], "jens@goauthentik.io") + @freeze_time("2022-10-14T14:16:40Z") def test_error_with_message_and_detail(self): """Test error status with StatusMessage and StatusDetail includes both in error""" request = self.factory.post( @@ -105,6 +109,7 @@ class TestResponseProcessor(TestCase): self.assertIn("User account is disabled", str(ctx.exception)) self.assertIn("Authentication failed", str(ctx.exception)) + @freeze_time("2024-08-07T15:48:09.325Z") def test_encrypted_correct(self): """Test encrypted""" key = load_fixture("fixtures/encrypted-key.pem") @@ -142,6 +147,7 @@ class TestResponseProcessor(TestCase): with self.assertRaises(InvalidEncryption): parser.parse() + @freeze_time("2022-10-14T14:16:40Z") def test_verification_assertion(self): """Test verifying signature inside assertion""" key = load_fixture("fixtures/signature_cert.pem") @@ -164,6 +170,7 @@ class TestResponseProcessor(TestCase): parser = ResponseProcessor(self.source, request) parser.parse() + @freeze_time("2014-07-17T01:02:18Z") def test_verification_assertion_duplicate(self): """Test verifying signature inside assertion, where the response has another assertion before our signed assertion""" @@ -186,9 +193,35 @@ class TestResponseProcessor(TestCase): parser = ResponseProcessor(self.source, request) parser.parse() - self.assertNotEqual(parser._get_name_id().text, "bad") - self.assertEqual(parser._get_name_id().text, "_ce3d2948b4cf20146dee0a0b3dd6f69b6cf86f62d7") + self.assertNotEqual(parser._get_name_id()[1], "bad") + self.assertEqual(parser._get_name_id()[1], "_ce3d2948b4cf20146dee0a0b3dd6f69b6cf86f62d7") + @freeze_time("2022-10-14T14:15:00") + def test_name_id_comment(self): + """Test comment in name ID""" + fixture = load_fixture("fixtures/response_signed_assertion_dup.xml") + fixture = fixture.replace( + "_ce3d2948b4cf20146dee0a0b3dd6f69b6cf86f62d7", + "_ce3d2948b4cf20146dee0a0b3dd6f69b6cf86f62d7", + ) + key = load_fixture("fixtures/signature_cert.pem") + kp = CertificateKeyPair.objects.create( + name=generate_id(), + certificate_data=key, + ) + self.source.verification_kp = kp + self.source.signed_assertion = True + self.source.signed_response = False + request = self.factory.post( + "/", + data={"SAMLResponse": b64encode(fixture.encode()).decode()}, + ) + + parser = ResponseProcessor(self.source, request) + parser.parse() + self.assertEqual(parser._get_name_id()[1], "_ce3d2948b4cf20146dee0a0b3dd6f69b6cf86f62d7") + + @freeze_time("2014-07-17T01:02:18Z") def test_verification_response(self): """Test verifying signature inside response""" key = load_fixture("fixtures/signature_cert.pem") @@ -211,6 +244,7 @@ class TestResponseProcessor(TestCase): parser = ResponseProcessor(self.source, request) parser.parse() + @freeze_time("2024-01-18T06:20:48Z") def test_verification_response_and_assertion(self): """Test verifying signature inside response and assertion""" key = load_fixture("fixtures/signature_cert.pem") @@ -257,6 +291,7 @@ class TestResponseProcessor(TestCase): with self.assertRaisesMessage(InvalidSignature, ""): parser.parse() + @freeze_time("2022-10-14T14:15:00") def test_verification_no_signature(self): """Test rejecting response without signature when signed_assertion is True""" key = load_fixture("fixtures/signature_cert.pem") @@ -303,6 +338,7 @@ class TestResponseProcessor(TestCase): with self.assertRaisesMessage(InvalidSignature, ""): parser.parse() + @freeze_time("2025-10-30T05:45:47.619Z") def test_signed_encrypted_response(self): """Test signed & encrypted response""" verification_key = load_fixture("fixtures/signature_cert2.pem") @@ -330,6 +366,7 @@ class TestResponseProcessor(TestCase): parser = ResponseProcessor(self.source, request) parser.parse() + @freeze_time("2026-01-21T14:23") def test_transient(self): """Test SAML transient NameID""" verification_key = load_fixture("fixtures/signature_cert2.pem") diff --git a/authentik/sources/saml/tests/test_views.py b/authentik/sources/saml/tests/test_views.py index 542e6d10d1..291cfea8a6 100644 --- a/authentik/sources/saml/tests/test_views.py +++ b/authentik/sources/saml/tests/test_views.py @@ -4,6 +4,7 @@ from base64 import b64encode from django.test import RequestFactory, TestCase from django.urls import reverse +from freezegun import freeze_time from authentik.core.tests.utils import create_test_flow from authentik.flows.planner import PLAN_CONTEXT_REDIRECT, FlowPlan @@ -26,6 +27,7 @@ class TestViews(TestCase): pre_authentication_flow=create_test_flow(), ) + @freeze_time("2022-10-14T14:15:00") def test_enroll(self): """Enroll""" flow = create_test_flow() @@ -52,6 +54,7 @@ class TestViews(TestCase): plan: FlowPlan = self.client.session.get(SESSION_KEY_PLAN) self.assertIsNotNone(plan) + @freeze_time("2022-10-14T14:15:00") def test_enroll_redirect(self): """Enroll when attempting to access a provider""" initial_redirect = f"http://{generate_id()}" diff --git a/authentik/sources/scim/views/v2/auth.py b/authentik/sources/scim/views/v2/auth.py index 85eae42fa8..b8b34f4a76 100644 --- a/authentik/sources/scim/views/v2/auth.py +++ b/authentik/sources/scim/views/v2/auth.py @@ -33,7 +33,7 @@ class SCIMTokenAuth(BaseAuthentication): def check_token(self, key: str, source_slug: str) -> Token | None: """Check that a token exists, is not expired, and is assigned to the correct source""" - token = Token.filter_not_expired(key=key, intent=TokenIntents.INTENT_API).first() + token = Token.objects.filter(key=key, intent=TokenIntents.INTENT_API).first() if not token: return None source: SCIMSource = token.scimsource_set.first() diff --git a/authentik/sources/telegram/models.py b/authentik/sources/telegram/models.py index 711b80d283..f7ad5c7247 100644 --- a/authentik/sources/telegram/models.py +++ b/authentik/sources/telegram/models.py @@ -66,7 +66,7 @@ class TelegramSource(Source): } ), name=self.name, - icon_url=self.icon_url, + icon_url=self.get_icon_url(request, use_cache=False) or self.icon_url, promoted=self.promoted, ) diff --git a/authentik/stages/authenticator/models.py b/authentik/stages/authenticator/models.py index 22b0f1d69b..428623f4f0 100644 --- a/authentik/stages/authenticator/models.py +++ b/authentik/stages/authenticator/models.py @@ -389,17 +389,19 @@ class ThrottlingMixin(models.Model): """Check if throttling is enabled""" return self.get_throttle_factor() > 0 - def get_throttle_factor(self): # pragma: no cover + def get_throttle_factor(self) -> float: # pragma: no cover """ - This must be implemented to return the throttle factor. + Returns the throttling factor. + """ + return getattr(self, "_throttle_factor", 1.0) + + def set_throttle_factor(self, throttle_factor: float) -> None: + """ + Sets the throttle factor to use. Call this to override the default value of 1. The number of seconds required between verification attempts will be :math:`c2^{n-1}` where `c` is this factor and `n` is the number of previous failures. A factor of 1 translates to delays of 1, 2, 4, 8, etc. seconds. A factor of 0 disables the throttling. - - Normally this is just a wrapper for a plugin-specific setting like - :setting:`OTP_EMAIL_THROTTLE_FACTOR`. - """ - raise NotImplementedError() + self._throttle_factor = throttle_factor diff --git a/authentik/stages/authenticator/tests.py b/authentik/stages/authenticator/tests.py index 5e17eb0360..0819344226 100644 --- a/authentik/stages/authenticator/tests.py +++ b/authentik/stages/authenticator/tests.py @@ -6,7 +6,6 @@ from threading import Thread from django.contrib.auth.models import AnonymousUser from django.db import connection from django.test import TestCase, TransactionTestCase -from django.test.utils import override_settings from django.utils import timezone from freezegun import freeze_time @@ -110,8 +109,24 @@ class ThrottlingTestMixin: self.assertEqual(verify_is_allowed3, True) self.assertEqual(data3, None) + def test_set_throttle_factor_is_reflected(self): + """`set_throttle_factor` must drive `get_throttle_factor`.""" + self.device.set_throttle_factor(5.5) + self.assertEqual(self.device.get_throttle_factor(), 5.5) + self.device.set_throttle_factor(0) + self.assertEqual(self.device.get_throttle_factor(), 0) + + def test_throttling_disabled_by_factor_zero(self): + """Setting the throttle factor to 0 must actually disable throttling. + + A failed attempt followed by a successful one must succeed. The lockout + path must not kick in when the factor is 0. + """ + self.device.set_throttle_factor(0) + self.assertFalse(self.device.verify_token(self.invalid_token())) + self.assertTrue(self.device.verify_token(self.valid_token())) + -@override_settings(OTP_STATIC_THROTTLE_FACTOR=0) class APITestCase(TestCase): """Test API""" @@ -119,6 +134,7 @@ class APITestCase(TestCase): self.alice = create_test_admin_user("alice") self.bob = create_test_admin_user("bob") device = self.alice.staticdevice_set.create() + device.set_throttle_factor(0) self.valid = generate_id(length=16) device.token_set.create(token=self.valid) @@ -138,6 +154,8 @@ class APITestCase(TestCase): verified = verify_token(self.alice, device.persistent_id, "bogus") self.assertIsNone(verified) + self.alice.staticdevice_set.get().throttle_reset() + verified = verify_token(self.alice, device.persistent_id, self.valid) self.assertIsNotNone(verified) @@ -146,11 +164,12 @@ class APITestCase(TestCase): verified = match_token(self.alice, "bogus") self.assertIsNone(verified) + self.alice.staticdevice_set.get().throttle_reset() + verified = match_token(self.alice, self.valid) self.assertEqual(verified, self.alice.staticdevice_set.first()) -@override_settings(OTP_STATIC_THROTTLE_FACTOR=0) class ConcurrencyTestCase(TransactionTestCase): """Test concurrent verifications""" diff --git a/authentik/stages/authenticator_email/migrations/0003_emaildevice_throttling_failure_count_and_more.py b/authentik/stages/authenticator_email/migrations/0003_emaildevice_throttling_failure_count_and_more.py new file mode 100644 index 0000000000..e8aa61b70a --- /dev/null +++ b/authentik/stages/authenticator_email/migrations/0003_emaildevice_throttling_failure_count_and_more.py @@ -0,0 +1,33 @@ +# Generated by Django 5.2.12 on 2026-04-02 15:14 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ( + "authentik_stages_authenticator_email", + "0002_alter_authenticatoremailstage_friendly_name", + ), + ] + + operations = [ + migrations.AddField( + model_name="emaildevice", + name="throttling_failure_count", + field=models.PositiveIntegerField( + default=0, help_text="Number of successive failed attempts." + ), + ), + migrations.AddField( + model_name="emaildevice", + name="throttling_failure_timestamp", + field=models.DateTimeField( + blank=True, + default=None, + help_text="A timestamp of the last failed verification attempt. Null if last attempt succeeded.", + null=True, + ), + ), + ] diff --git a/authentik/stages/authenticator_email/models.py b/authentik/stages/authenticator_email/models.py index 01c74c6345..cf88da18b9 100644 --- a/authentik/stages/authenticator_email/models.py +++ b/authentik/stages/authenticator_email/models.py @@ -14,7 +14,7 @@ from authentik.flows.models import ConfigurableStage, FriendlyNamedStage, Stage from authentik.lib.config import CONFIG from authentik.lib.models import SerializerModel from authentik.lib.utils.time import timedelta_string_validator -from authentik.stages.authenticator.models import SideChannelDevice +from authentik.stages.authenticator.models import SideChannelDevice, ThrottlingMixin from authentik.stages.email.models import EmailTemplates from authentik.stages.email.utils import TemplateEmailMessage @@ -116,7 +116,7 @@ class AuthenticatorEmailStage(ConfigurableStage, FriendlyNamedStage, Stage): verbose_name_plural = _("Email Authenticator Setup Stages") -class EmailDevice(SerializerModel, SideChannelDevice): +class EmailDevice(SerializerModel, ThrottlingMixin, SideChannelDevice): """Email Device""" user = models.ForeignKey(get_user_model(), on_delete=models.CASCADE) @@ -130,6 +130,20 @@ class EmailDevice(SerializerModel, SideChannelDevice): return EmailDeviceSerializer + def verify_token(self, token: str) -> bool: + verify_allowed, _ = self.verify_is_allowed() + if verify_allowed: + verified = super().verify_token(token) + + if verified: + self.throttle_reset() + else: + self.throttle_increment() + else: + verified = False + + return verified + def _compose_email(self) -> TemplateEmailMessage: try: pending_user = self.user diff --git a/authentik/stages/authenticator_email/tests.py b/authentik/stages/authenticator_email/tests.py index 6bdf91766e..0457252763 100644 --- a/authentik/stages/authenticator_email/tests.py +++ b/authentik/stages/authenticator_email/tests.py @@ -8,6 +8,7 @@ from django.core.mail.backends.locmem import EmailBackend from django.core.mail.backends.smtp import EmailBackend as SMTPEmailBackend from django.db.utils import IntegrityError from django.template.exceptions import TemplateDoesNotExist +from django.test import TestCase from django.urls import reverse from django.utils.timezone import now @@ -16,6 +17,7 @@ from authentik.flows.models import FlowStageBinding from authentik.flows.tests import FlowTestCase from authentik.lib.config import CONFIG from authentik.lib.utils.email import mask_email +from authentik.stages.authenticator.tests import ThrottlingTestMixin from authentik.stages.authenticator_email.api import ( AuthenticatorEmailStageSerializer, EmailDeviceSerializer, @@ -79,6 +81,7 @@ class TestAuthenticatorEmailStage(FlowTestCase): self.assertFalse(self.device.verify_token("000000")) # Verify correct token (should clear token after verification) + self.device.throttle_reset(commit=False) self.assertTrue(self.device.verify_token(token)) self.assertIsNone(self.device.token) @@ -329,3 +332,27 @@ class TestAuthenticatorEmailStage(FlowTestCase): # Test AuthenticatorEmailStage send method self.stage.send(self.device) self.assertEqual(len(mail.outbox), 1) + + +class TestEmailDeviceThrottling(ThrottlingTestMixin, TestCase): + def setUp(self): + super().setUp() + flow = create_test_flow() + user = create_test_user() + stage = AuthenticatorEmailStage.objects.create( + name="email-authenticator-throttle", + use_global_settings=True, + from_address="test@authentik.local", + configure_flow=flow, + token_expiry="minutes=30", + ) # nosec + self.device = EmailDevice.objects.create( + user=user, stage=stage, email="throttle@authentik.local" + ) + self.device.generate_token() + + def valid_token(self): + return self.device.token + + def invalid_token(self): + return "000000" if self.device.token != "000000" else "111111" diff --git a/authentik/stages/authenticator_sms/migrations/0009_smsdevice_throttling_failure_count_and_more.py b/authentik/stages/authenticator_sms/migrations/0009_smsdevice_throttling_failure_count_and_more.py new file mode 100644 index 0000000000..e83f7760e5 --- /dev/null +++ b/authentik/stages/authenticator_sms/migrations/0009_smsdevice_throttling_failure_count_and_more.py @@ -0,0 +1,30 @@ +# Generated by Django 5.2.12 on 2026-04-16 17:28 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("authentik_stages_authenticator_sms", "0008_alter_authenticatorsmsstage_friendly_name"), + ] + + operations = [ + migrations.AddField( + model_name="smsdevice", + name="throttling_failure_count", + field=models.PositiveIntegerField( + default=0, help_text="Number of successive failed attempts." + ), + ), + migrations.AddField( + model_name="smsdevice", + name="throttling_failure_timestamp", + field=models.DateTimeField( + blank=True, + default=None, + help_text="A timestamp of the last failed verification attempt. Null if last attempt succeeded.", + null=True, + ), + ), + ] diff --git a/authentik/stages/authenticator_sms/models.py b/authentik/stages/authenticator_sms/models.py index 62a5930b0a..60b0c623e7 100644 --- a/authentik/stages/authenticator_sms/models.py +++ b/authentik/stages/authenticator_sms/models.py @@ -20,7 +20,7 @@ from authentik.events.utils import sanitize_item from authentik.flows.models import ConfigurableStage, FriendlyNamedStage, Stage from authentik.lib.models import SerializerModel from authentik.lib.utils.http import get_http_session -from authentik.stages.authenticator.models import SideChannelDevice +from authentik.stages.authenticator.models import SideChannelDevice, ThrottlingMixin LOGGER = get_logger() @@ -197,7 +197,7 @@ def hash_phone_number(phone_number: str) -> str: return "hash:" + sha256(phone_number.encode()).hexdigest() -class SMSDevice(SerializerModel, SideChannelDevice): +class SMSDevice(SerializerModel, ThrottlingMixin, SideChannelDevice): """SMS Device""" user = models.ForeignKey(get_user_model(), on_delete=models.CASCADE) @@ -224,11 +224,19 @@ class SMSDevice(SerializerModel, SideChannelDevice): return SMSDeviceSerializer - def verify_token(self, token): - valid = super().verify_token(token) - if valid: - self.save() - return valid + def verify_token(self, token: str) -> bool: + verify_allowed, _ = self.verify_is_allowed() + if verify_allowed: + verified = super().verify_token(token) + + if verified: + self.throttle_reset() + else: + self.throttle_increment() + else: + verified = False + + return verified def __str__(self): return str(self.name) or str(self.user_id) diff --git a/authentik/stages/authenticator_sms/tests.py b/authentik/stages/authenticator_sms/tests.py index f6bcd23bf9..b7c944e31f 100644 --- a/authentik/stages/authenticator_sms/tests.py +++ b/authentik/stages/authenticator_sms/tests.py @@ -3,6 +3,7 @@ from unittest.mock import MagicMock, patch from urllib.parse import parse_qsl +from django.test import TestCase from django.urls import reverse from requests_mock import Mocker @@ -12,6 +13,7 @@ from authentik.flows.planner import FlowPlan from authentik.flows.tests import FlowTestCase from authentik.flows.views.executor import SESSION_KEY_PLAN from authentik.lib.generators import generate_id +from authentik.stages.authenticator.tests import ThrottlingTestMixin from authentik.stages.authenticator_sms.models import ( AuthenticatorSMSStage, SMSDevice, @@ -357,3 +359,30 @@ class AuthenticatorSMSStageTests(FlowTestCase): }, phone_number_required=False, ) + + +class TestSMSDeviceThrottling(ThrottlingTestMixin, TestCase): + """Test ThrottlingMixin behaviour on SMSDevice.verify_token""" + + def setUp(self): + super().setUp() + flow = create_test_flow() + user = create_test_admin_user() + stage = AuthenticatorSMSStage.objects.create( + flow=flow, + name="sms-throttle", + provider=SMSProviders.GENERIC, + from_number="1234", + ) + self.device = SMSDevice.objects.create( + user=user, + stage=stage, + phone_number="+15551230001", + ) + self.device.generate_token() + + def valid_token(self): + return self.device.token + + def invalid_token(self): + return "000000" if self.device.token != "000000" else "111111" diff --git a/authentik/stages/authenticator_static/models.py b/authentik/stages/authenticator_static/models.py index 72776db689..139c4af167 100644 --- a/authentik/stages/authenticator_static/models.py +++ b/authentik/stages/authenticator_static/models.py @@ -3,7 +3,6 @@ from base64 import b32encode from os import urandom -from django.conf import settings from django.core.validators import MaxValueValidator from django.db import models from django.utils.translation import gettext_lazy as _ @@ -78,9 +77,6 @@ class StaticDevice(SerializerModel, ThrottlingMixin, Device): return StaticDeviceSerializer - def get_throttle_factor(self): - return getattr(settings, "OTP_STATIC_THROTTLE_FACTOR", 1) - def verify_token(self, token): verify_allowed, _ = self.verify_is_allowed() if verify_allowed: diff --git a/authentik/stages/authenticator_static/tests.py b/authentik/stages/authenticator_static/tests.py index d002e5c040..dbcfa4bd94 100644 --- a/authentik/stages/authenticator_static/tests.py +++ b/authentik/stages/authenticator_static/tests.py @@ -1,6 +1,5 @@ """Test Static API""" -from django.test.utils import override_settings from django.urls import reverse from rest_framework.test import APITestCase @@ -44,9 +43,6 @@ class DeviceTest(TestCase): str(device) -@override_settings( - OTP_STATIC_THROTTLE_FACTOR=1, -) class ThrottlingTestCase(ThrottlingTestMixin, TestCase): """Test static device throttling""" diff --git a/authentik/stages/authenticator_totp/models.py b/authentik/stages/authenticator_totp/models.py index 6a7d2adb67..19ab84ff57 100644 --- a/authentik/stages/authenticator_totp/models.py +++ b/authentik/stages/authenticator_totp/models.py @@ -194,9 +194,6 @@ class TOTPDevice(SerializerModel, ThrottlingMixin, Device): return verified - def get_throttle_factor(self): - return getattr(settings, "OTP_TOTP_THROTTLE_FACTOR", 1) - @property def config_url(self): """ diff --git a/authentik/stages/authenticator_totp/tests.py b/authentik/stages/authenticator_totp/tests.py index b5185d9396..ba5a028197 100644 --- a/authentik/stages/authenticator_totp/tests.py +++ b/authentik/stages/authenticator_totp/tests.py @@ -63,11 +63,14 @@ class TOTPDeviceMixin: @override_settings( OTP_TOTP_SYNC=False, - OTP_TOTP_THROTTLE_FACTOR=0, ) class TOTPTest(TOTPDeviceMixin, TestCase): """TOTP tests""" + def setUp(self): + super().setUp() + self.device.set_throttle_factor(0) + def test_default_key(self): """Ensure default_key is valid""" device = self.alice.totpdevice_set.create() @@ -190,9 +193,6 @@ class TOTPTest(TOTPDeviceMixin, TestCase): self.assertEqual(params["image"][0], image_url) -@override_settings( - OTP_TOTP_THROTTLE_FACTOR=1, -) class ThrottlingTestCase(TOTPDeviceMixin, ThrottlingTestMixin, TestCase): """Test TOTP Throttling""" diff --git a/authentik/stages/authenticator_validate/api.py b/authentik/stages/authenticator_validate/api.py index 8f3a82dd65..56c7b2510a 100644 --- a/authentik/stages/authenticator_validate/api.py +++ b/authentik/stages/authenticator_validate/api.py @@ -39,6 +39,10 @@ class AuthenticatorValidateStageSerializer(StageSerializer): "webauthn_hints", "webauthn_allowed_device_types", "webauthn_allowed_device_types_obj", + "email_otp_throttling_factor", + "sms_otp_throttling_factor", + "totp_otp_throttling_factor", + "static_otp_throttling_factor", ] diff --git a/authentik/stages/authenticator_validate/challenge.py b/authentik/stages/authenticator_validate/challenge.py index 18679e545f..bcfc3f9e86 100644 --- a/authentik/stages/authenticator_validate/challenge.py +++ b/authentik/stages/authenticator_validate/challenge.py @@ -3,6 +3,7 @@ from typing import TYPE_CHECKING from urllib.parse import urlencode +from django.db import transaction from django.http import HttpRequest from django.http.response import Http404 from django.shortcuts import get_object_or_404 @@ -29,8 +30,8 @@ from authentik.flows.stage import StageView from authentik.lib.utils.email import mask_email from authentik.lib.utils.time import timedelta_from_string from authentik.root.middleware import ClientIPMiddleware -from authentik.stages.authenticator import match_token -from authentik.stages.authenticator.models import Device +from authentik.stages.authenticator import devices_for_user +from authentik.stages.authenticator.models import Device, ThrottlingMixin from authentik.stages.authenticator_duo.models import AuthenticatorDuoStage, DuoDevice from authentik.stages.authenticator_email.models import EmailDevice from authentik.stages.authenticator_sms.models import SMSDevice @@ -38,6 +39,7 @@ from authentik.stages.authenticator_validate.models import AuthenticatorValidate from authentik.stages.authenticator_webauthn.models import UserVerification, WebAuthnDevice from authentik.stages.authenticator_webauthn.stage import PLAN_CONTEXT_WEBAUTHN_CHALLENGE from authentik.stages.authenticator_webauthn.utils import get_origin, get_rp_id +from authentik.stages.password.stage import PLAN_CONTEXT_METHOD_ARGS LOGGER = get_logger() if TYPE_CHECKING: @@ -142,14 +144,31 @@ def select_challenge_email(request: HttpRequest, device: EmailDevice): def validate_challenge_code(code: str, stage_view: StageView, user: User) -> Device: """Validate code-based challenges. We test against every device, on purpose, as the user mustn't choose between totp and static devices.""" - device = match_token(user, code) + + with transaction.atomic(): + for device in devices_for_user(user, for_verify=True): + if isinstance(device, ThrottlingMixin): + throttling_factor = stage_view.executor.current_stage.get_throttling_factor( + DeviceClasses.from_model_label(device.model_label()) + ) + if throttling_factor is not None: + device.set_throttle_factor(throttling_factor) + if device.verify_token(code): + break + else: + device = None + if not device: login_failed.send( sender=__name__, credentials={"username": user.username}, request=stage_view.request, stage=stage_view.executor.current_stage, - device_class=DeviceClasses.TOTP.value, + context={ + PLAN_CONTEXT_METHOD_ARGS: { + "device_class": DeviceClasses.TOTP.value, + } + }, ) raise ValidationError( _("Invalid Token. Please ensure the time on your device is accurate and try again.") @@ -221,9 +240,13 @@ def validate_challenge_webauthn( credentials={"username": user.username}, request=stage_view.request, stage=stage_view.executor.current_stage, - device=device, - device_class=DeviceClasses.WEBAUTHN.value, - device_type=device.device_type, + context={ + PLAN_CONTEXT_METHOD_ARGS: { + "device": device, + "device_class": DeviceClasses.WEBAUTHN.value, + "device_type": device.device_type, + }, + }, ) raise ValidationError("Assertion failed") from exc @@ -273,8 +296,12 @@ def validate_challenge_duo(device_pk: int, stage_view: StageView, user: User) -> credentials={"username": user.username}, request=stage_view.request, stage=stage_view.executor.current_stage, - device_class=DeviceClasses.DUO.value, - duo_response=response, + context={ + PLAN_CONTEXT_METHOD_ARGS: { + "device_class": DeviceClasses.DUO.value, + "duo_response": response, + } + }, ) raise ValidationError("Duo denied access", code="denied") return device diff --git a/authentik/stages/authenticator_validate/migrations/0016_authenticatorvalidatestage_email_otp_throttling_factor_and_more.py b/authentik/stages/authenticator_validate/migrations/0016_authenticatorvalidatestage_email_otp_throttling_factor_and_more.py new file mode 100644 index 0000000000..88f5de337c --- /dev/null +++ b/authentik/stages/authenticator_validate/migrations/0016_authenticatorvalidatestage_email_otp_throttling_factor_and_more.py @@ -0,0 +1,36 @@ +# Generated by Django 5.2.12 on 2026-04-16 16:33 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ( + "authentik_stages_authenticator_validate", + "0015_authenticatorvalidatestage_webauthn_hints", + ), + ] + + operations = [ + migrations.AddField( + model_name="authenticatorvalidatestage", + name="email_otp_throttling_factor", + field=models.FloatField(default=1), + ), + migrations.AddField( + model_name="authenticatorvalidatestage", + name="sms_otp_throttling_factor", + field=models.FloatField(default=1), + ), + migrations.AddField( + model_name="authenticatorvalidatestage", + name="static_otp_throttling_factor", + field=models.FloatField(default=1), + ), + migrations.AddField( + model_name="authenticatorvalidatestage", + name="totp_otp_throttling_factor", + field=models.FloatField(default=1), + ), + ] diff --git a/authentik/stages/authenticator_validate/models.py b/authentik/stages/authenticator_validate/models.py index b979220579..0d19f25bf0 100644 --- a/authentik/stages/authenticator_validate/models.py +++ b/authentik/stages/authenticator_validate/models.py @@ -22,6 +22,12 @@ class DeviceClasses(models.TextChoices): SMS = "sms", _("SMS") EMAIL = "email", _("Email") + @staticmethod + def from_model_label(model_label: str) -> DeviceClasses: + return getattr( + DeviceClasses, model_label.rsplit(".", maxsplit=1)[-1][: -len("device")].upper() + ) + def default_device_classes() -> list: """By default, accept all device classes""" @@ -82,6 +88,11 @@ class AuthenticatorValidateStage(Stage): "authentik_stages_authenticator_webauthn.WebAuthnDeviceType", blank=True ) + email_otp_throttling_factor = models.FloatField(default=1) + sms_otp_throttling_factor = models.FloatField(default=1) + totp_otp_throttling_factor = models.FloatField(default=1) + static_otp_throttling_factor = models.FloatField(default=1) + @property def serializer(self) -> type[BaseSerializer]: from authentik.stages.authenticator_validate.api import AuthenticatorValidateStageSerializer @@ -98,6 +109,17 @@ class AuthenticatorValidateStage(Stage): def component(self) -> str: return "ak-stage-authenticator-validate-form" + def get_throttling_factor(self, device_class: DeviceClasses) -> float | None: + if device_class == DeviceClasses.EMAIL: + return self.email_otp_throttling_factor + elif device_class == DeviceClasses.SMS: + return self.sms_otp_throttling_factor + elif device_class == DeviceClasses.TOTP: + return self.totp_otp_throttling_factor + elif device_class == DeviceClasses.STATIC: + return self.static_otp_throttling_factor + return None + class Meta: verbose_name = _("Authenticator Validation Stage") verbose_name_plural = _("Authenticator Validation Stages") diff --git a/authentik/stages/authenticator_validate/tests/test_throttling.py b/authentik/stages/authenticator_validate/tests/test_throttling.py new file mode 100644 index 0000000000..6638fc2a15 --- /dev/null +++ b/authentik/stages/authenticator_validate/tests/test_throttling.py @@ -0,0 +1,247 @@ +from django.test import TestCase +from django.test.client import RequestFactory +from django.urls.base import reverse +from rest_framework.exceptions import ValidationError + +from authentik.core.tests.utils import create_test_admin_user, create_test_flow +from authentik.flows.models import FlowStageBinding +from authentik.flows.stage import StageView +from authentik.flows.tests import FlowTestCase +from authentik.flows.views.executor import FlowExecutorView +from authentik.lib.generators import generate_id +from authentik.stages.authenticator_email.models import AuthenticatorEmailStage, EmailDevice +from authentik.stages.authenticator_sms.models import ( + AuthenticatorSMSStage, + SMSDevice, + SMSProviders, +) +from authentik.stages.authenticator_validate.challenge import validate_challenge_code +from authentik.stages.authenticator_validate.models import ( + AuthenticatorValidateStage, + DeviceClasses, +) +from authentik.stages.identification.models import IdentificationStage, UserFields + + +class DeviceClassesHelperTests(TestCase): + """Tests for the DeviceClasses.from_model_label helper.""" + + def test_from_model_label_all_classes(self): + cases = { + "authentik_stages_authenticator_email.emaildevice": DeviceClasses.EMAIL, + "authentik_stages_authenticator_sms.smsdevice": DeviceClasses.SMS, + "authentik_stages_authenticator_totp.totpdevice": DeviceClasses.TOTP, + "authentik_stages_authenticator_static.staticdevice": DeviceClasses.STATIC, + "authentik_stages_authenticator_duo.duodevice": DeviceClasses.DUO, + "authentik_stages_authenticator_webauthn.webauthndevice": DeviceClasses.WEBAUTHN, + } + for label, expected in cases.items(): + with self.subTest(label=label): + self.assertEqual(DeviceClasses.from_model_label(label), expected) + + +class AuthenticatorValidateStageFactorTests(TestCase): + """Tests for AuthenticatorValidateStage.get_throttling_factor.""" + + def test_per_class_factors_returned(self): + stage = AuthenticatorValidateStage.objects.create( + name=generate_id(), + email_otp_throttling_factor=5, + sms_otp_throttling_factor=6, + totp_otp_throttling_factor=7, + static_otp_throttling_factor=8, + ) + self.assertEqual(stage.get_throttling_factor(DeviceClasses.EMAIL), 5) + self.assertEqual(stage.get_throttling_factor(DeviceClasses.SMS), 6) + self.assertEqual(stage.get_throttling_factor(DeviceClasses.TOTP), 7) + self.assertEqual(stage.get_throttling_factor(DeviceClasses.STATIC), 8) + + def test_no_factor_for_webauthn_or_duo(self): + stage = AuthenticatorValidateStage.objects.create(name=generate_id()) + self.assertIsNone(stage.get_throttling_factor(DeviceClasses.WEBAUTHN)) + self.assertIsNone(stage.get_throttling_factor(DeviceClasses.DUO)) + + +class ValidateChallengeCodeThrottlingTests(FlowTestCase): + """Tests for validate_challenge_code throttling behavior.""" + + def setUp(self) -> None: + super().setUp() + self.user = create_test_admin_user() + self.request_factory = RequestFactory() + self.email_stage = AuthenticatorEmailStage.objects.create( + name="email-stage-validate-throttle", + use_global_settings=True, + from_address="test@authentik.local", + token_expiry="minutes=30", + ) # nosec + self.sms_stage = AuthenticatorSMSStage.objects.create( + name="sms-stage-validate-throttle", + provider=SMSProviders.GENERIC, + from_number="1234", + ) + + def _validate_stage(self, **factors) -> AuthenticatorValidateStage: + return AuthenticatorValidateStage.objects.create( + name=generate_id(), + device_classes=[ + DeviceClasses.EMAIL, + DeviceClasses.SMS, + DeviceClasses.TOTP, + DeviceClasses.STATIC, + ], + **factors, + ) + + def _stage_view(self, validate_stage: AuthenticatorValidateStage) -> StageView: + request = self.request_factory.get("/") + return StageView(FlowExecutorView(current_stage=validate_stage), request=request) + + def _email_device(self, email: str = "throttle@authentik.local") -> EmailDevice: + return EmailDevice.objects.create( + user=self.user, + stage=self.email_stage, + confirmed=True, + email=email, + ) + + def _sms_device(self, phone_number: str = "+15551230101") -> SMSDevice: + return SMSDevice.objects.create( + user=self.user, + stage=self.sms_stage, + confirmed=True, + phone_number=phone_number, + ) + + def test_stage_factor_applied_to_email_device(self): + """The stage's email_otp_throttling_factor is pushed onto the device before verify.""" + stage = self._validate_stage(email_otp_throttling_factor=3) + device = self._email_device() + device.generate_token() + with self.assertRaises(ValidationError): + validate_challenge_code("000000", self._stage_view(stage), self.user) + device.refresh_from_db() + self.assertEqual(device.throttling_failure_count, 1) + # verify_is_allowed must compute the delay using factor=3 (3 * 2^0 = 3s). + device.set_throttle_factor(3) + allowed, data = device.verify_is_allowed() + self.assertFalse(allowed) + required = data["locked_until"] - device.throttling_failure_timestamp + self.assertAlmostEqual(required.total_seconds(), 3, places=3) + + def test_factor_zero_disables_throttling_end_to_end(self): + """With email_otp_throttling_factor=0, repeated failures do not lock the device.""" + stage = self._validate_stage(email_otp_throttling_factor=0) + device = self._email_device() + device.generate_token() + token = device.token + for _ in range(10): + with self.assertRaises(ValidationError): + validate_challenge_code("000000", self._stage_view(stage), self.user) + matched = validate_challenge_code(token, self._stage_view(stage), self.user) + self.assertEqual(matched.pk, device.pk) + + def test_lockout_persists_across_calls(self): + """ + A correct token on the second call is still blocked and does not increment the counter. + """ + stage = self._validate_stage(email_otp_throttling_factor=1) + device = self._email_device() + device.generate_token() + token = device.token + invalid_token = "000000" if token != "000000" else "111111" # nosec + with self.assertRaises(ValidationError): + validate_challenge_code(invalid_token, self._stage_view(stage), self.user) + # Immediately try with the correct token: lockout still active, attempt must be rejected. + with self.assertRaises(ValidationError): + validate_challenge_code(token, self._stage_view(stage), self.user) + device.refresh_from_db() + # Token wasn't consumed (verification never ran), and counter didn't get incremented. + self.assertEqual(device.token, token) + self.assertEqual(device.throttling_failure_count, 1) + + +class ValidateStageThrottlingFlowTests(FlowTestCase): + """End-to-end lockout behavior through the flow executor HTTP API.""" + + def setUp(self) -> None: + super().setUp() + self.user = create_test_admin_user() + self.email_stage = AuthenticatorEmailStage.objects.create( + name="email-stage-flow-throttle", + use_global_settings=True, + from_address="test@authentik.local", + token_expiry="minutes=30", + ) # nosec + self.ident_stage = IdentificationStage.objects.create( + name=generate_id(), + user_fields=[UserFields.USERNAME], + ) + self.validate_stage = AuthenticatorValidateStage.objects.create( + name=generate_id(), + device_classes=[DeviceClasses.EMAIL], + email_otp_throttling_factor=1, + ) + self.flow = create_test_flow() + FlowStageBinding.objects.create(target=self.flow, stage=self.ident_stage, order=0) + FlowStageBinding.objects.create(target=self.flow, stage=self.validate_stage, order=1) + + def _identify(self): + response = self.client.post( + reverse("authentik_api:flow-executor", kwargs={"flow_slug": self.flow.slug}), + {"uid_field": self.user.username}, + follow=True, + ) + self.assertEqual(response.status_code, 200) + + def _select_email(self, device: EmailDevice): + self.client.post( + reverse("authentik_api:flow-executor", kwargs={"flow_slug": self.flow.slug}), + { + "component": "ak-stage-authenticator-validate", + "selected_challenge": { + "device_class": "email", + "device_uid": str(device.pk), + "challenge": {}, + "last_used": None, + }, + }, + ) + + def test_bad_code_then_correct_code_is_still_blocked(self): + """After a bad code over HTTP, a subsequent correct code is still rejected + because the lockout persists in the database.""" + device = EmailDevice.objects.create( + user=self.user, + confirmed=True, + stage=self.email_stage, + email="throttle-flow@authentik.local", + ) + self._identify() + self._select_email(device) + # Server generated and stored the token - grab it from DB. + device.refresh_from_db() + token = device.token + # First attempt: bad code - must increment the DB counter. + self.client.post( + reverse("authentik_api:flow-executor", kwargs={"flow_slug": self.flow.slug}), + {"component": "ak-stage-authenticator-validate", "code": "000000"}, + ) + device.refresh_from_db() + self.assertEqual(device.throttling_failure_count, 1) + self.assertEqual(device.token, token) + # Second attempt with the correct token - still blocked. + response = self.client.post( + reverse("authentik_api:flow-executor", kwargs={"flow_slug": self.flow.slug}), + {"component": "ak-stage-authenticator-validate", "code": token}, + ) + self.assertStageResponse( + response, + flow=self.flow, + component="ak-stage-authenticator-validate", + ) + device.refresh_from_db() + # Counter wasn't incremented on a blocked attempt + self.assertEqual(device.throttling_failure_count, 1) + # Token wasn't consumed. + self.assertEqual(device.token, token) diff --git a/authentik/stages/authenticator_webauthn/api/stages.py b/authentik/stages/authenticator_webauthn/api/stages.py index 497f1046f9..d03f490c6f 100644 --- a/authentik/stages/authenticator_webauthn/api/stages.py +++ b/authentik/stages/authenticator_webauthn/api/stages.py @@ -26,6 +26,7 @@ class AuthenticatorWebAuthnStageSerializer(StageSerializer): "hints", "device_type_restrictions", "device_type_restrictions_obj", + "prevent_duplicate_devices", "max_attempts", ] diff --git a/authentik/stages/authenticator_webauthn/mds/aaguid.json b/authentik/stages/authenticator_webauthn/mds/aaguid.json index 43a0c0f65a..ef0b784b96 100644 --- a/authentik/stages/authenticator_webauthn/mds/aaguid.json +++ b/authentik/stages/authenticator_webauthn/mds/aaguid.json @@ -194,5 +194,10 @@ }, "70617373-7761-6c6c-6669-646f32303236": { "name": "Passwall" + }, + "c9cadfc9-89a9-489e-a25a-c7e86a4d5f15": { + "name": "Burp Suite Navigation Recorder", + "icon_dark": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIHZpZXdCb3g9IjAgMCAxNSAxNSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxyZWN0IHg9IjAuNSIgeT0iMC41IiB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHJ4PSIyLjEwMTA2IiBmaWxsPSIjRkY2NjMzIi8+CiAgICA8cGF0aCBkPSJNOC4wMTAyOCAxMi41SDYuOTg5NzJWMTAuOTA1N0w4LjM2NTM0IDkuMTE4OUg2Ljk4OTcyVjYuOTUxNDFINC41TDYuOTg5NzIgMy43MTU4NVYyLjVIOC4wMTAyOFY0LjA5NDI3TDYuNjM2NzggNS44ODExSDguMDEwMjhWOC4wNDg1OUgxMC41TDguMDEwMjggMTEuMjg0MVYxMi41WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg==", + "icon_light": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIHZpZXdCb3g9IjAgMCAxNSAxNSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxyZWN0IHg9IjAuNSIgeT0iMC41IiB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHJ4PSIyLjEwMTA2IiBmaWxsPSIjRkY2NjMzIi8+CiAgICA8cGF0aCBkPSJNOC4wMTAyOCAxMi41SDYuOTg5NzJWMTAuOTA1N0w4LjM2NTM0IDkuMTE4OUg2Ljk4OTcyVjYuOTUxNDFINC41TDYuOTg5NzIgMy43MTU4NVYyLjVIOC4wMTAyOFY0LjA5NDI3TDYuNjM2NzggNS44ODExSDguMDEwMjhWOC4wNDg1OUgxMC41TDguMDEwMjggMTEuMjg0MVYxMi41WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg==" } } diff --git a/authentik/stages/authenticator_webauthn/mds/blob.jwt b/authentik/stages/authenticator_webauthn/mds/blob.jwt index 1fd639442f..1ace339cb4 100644 --- a/authentik/stages/authenticator_webauthn/mds/blob.jwt +++ b/authentik/stages/authenticator_webauthn/mds/blob.jwt @@ -1 +1 @@ -eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsIng1YyI6WyJNSUlIRnpDQ0JmK2dBd0lCQWdJTVY5ZWtlaG9QU0FZa3JhV1NNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1HSXhDekFKQmdOVkJBWVRBa0pGTVJrd0Z3WURWUVFLRXhCSGJHOWlZV3hUYVdkdUlHNTJMWE5oTVRnd05nWURWUVFERXk5SGJHOWlZV3hUYVdkdUlFVjRkR1Z1WkdWa0lGWmhiR2xrWVhScGIyNGdRMEVnTFNCVFNFRXlOVFlnTFNCSE16QWVGdzB5TlRBM01qVXlNRFF3TXpkYUZ3MHlOakE0TWpZeU1EUXdNelphTUlIU01SMHdHd1lEVlFRUERCUlFjbWwyWVhSbElFOXlaMkZ1YVhwaGRHbHZiakVRTUE0R0ExVUVCUk1ITXpRMU5ESTROREVUTUJFR0N5c0dBUVFCZ2pjOEFnRURFd0pWVXpFYk1Ca0dDeXNHQVFRQmdqYzhBZ0VDRXdwRFlXeHBabTl5Ym1saE1Rc3dDUVlEVlFRR0V3SlZVekVQTUEwR0ExVUVDQk1HVDNKbFoyOXVNUkl3RUFZRFZRUUhFd2xDWldGMlpYSjBiMjR4SERBYUJnTlZCQW9URTBaSlJFOGdRVXhNU1VGT1EwVXNJRWxPUXk0eEhUQWJCZ05WQkFNVEZHMWtjeTVtYVdSdllXeHNhV0Z1WTJVdWIzSm5NSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQTZBc2tvUTBiRnA5M0pRUWRwMWI4bkZDbUI2N2RUTlVwdHdrS3RuSGowWTE4RFdvcEg4Q0tPUk0xTGpBSHlqTVRQb09HWGI1L3J0MXdEZk9LYjBjaHFTRzlsbHJCenAvTjBCdUxMMFpGeVpFQVl0NHRoOFkwT29jM0ZRdFhaOTlUNkhOVytmbVhhTGJZeHhuR25zeEF4alZRbUh3Q1pCbngrV1BLZ2k2QnFhWWNZMDVNOHV6V2tnU3AxbkU0akQrSlE5SE4wSFNGaHpIZTNMVzR2MHRoMkp6MU9RbU1od2lhMFNEL1Y2WVhJcWtYa3FtbUZlbmhDZlNHKy9MaUxnV3htZUl3QXBKNW9lMTBEdm1pSlllYWFGa2diRWMvYjcvNlBNYWE0WC8wYVpaMUo3QzBFSHZuNWxVSGI4aGZCYnpHaHNCS09wUVcxdU9oaUsreUk5b0tRUUlEQVFBQm80SURXakNDQTFZd0RnWURWUjBQQVFIL0JBUURBZ1dnTUF3R0ExVWRFd0VCL3dRQ01BQXdnWllHQ0NzR0FRVUZCd0VCQklHSk1JR0dNRWNHQ0NzR0FRVUZCekFDaGp0b2RIUndPaTh2YzJWamRYSmxMbWRzYjJKaGJITnBaMjR1WTI5dEwyTmhZMlZ5ZEM5bmMyVjRkR1Z1WkhaaGJITm9ZVEpuTTNJekxtTnlkREE3QmdnckJnRUZCUWN3QVlZdmFIUjBjRG92TDI5amMzQXlMbWRzYjJKaGJITnBaMjR1WTI5dEwyZHpaWGgwWlc1a2RtRnNjMmhoTW1jemNqTXdWUVlEVlIwZ0JFNHdUREJCQmdrckJnRUVBYUF5QVFFd05EQXlCZ2dyQmdFRkJRY0NBUlltYUhSMGNITTZMeTkzZDNjdVoyeHZZbUZzYzJsbmJpNWpiMjB2Y21Wd2IzTnBkRzl5ZVM4d0J3WUZaNEVNQVFFd1JRWURWUjBmQkQ0d1BEQTZvRGlnTm9ZMGFIUjBjRG92TDJOeWJDNW5iRzlpWVd4emFXZHVMbU52YlM5bmN5OW5jMlY0ZEdWdVpIWmhiSE5vWVRKbk0zSXpMbU55YkRBZkJnTlZIUkVFR0RBV2doUnRaSE11Wm1sa2IyRnNiR2xoYm1ObExtOXlaekFkQmdOVkhTVUVGakFVQmdnckJnRUZCUWNEQVFZSUt3WUJCUVVIQXdJd0h3WURWUjBqQkJnd0ZvQVUzYlBuYmFndTZNVk9iczkwNW5VOGxCWE82QjB3SFFZRFZSME9CQllFRk1hTjRYMWI5QUh1V0RQSksxQVlkZzJNUUdoeE1JSUJmUVlLS3dZQkJBSFdlUUlFQWdTQ0FXMEVnZ0ZwQVdjQWR3Q3NxekJ3Yk92c2hESDBFOUwwa1Y4UkhrSWtRN0h5cG94UFBDczdweDRDd3dBQUFaaERVUXMxQUFBRUF3QklNRVlDSVFDN1lFc2lqTmJzSldpbHh6K2p1dStWa2VZWmtYczlCQ0pkZjVNZ2RuOWJnZ0loQU5USVdGV1p2MFVIbENJcFljK1hzLzlFV3d0R2U2UUFlY1UyaVR5R3Uwc2NBSFVBeXpqM0ZZbDhoS0ZFWDF2QjNmdkpidkthV2MxSENta0ZoYkRMRk1NVVdPY0FBQUdZUTFFS2JnQUFCQU1BUmpCRUFpQkM4TkhlZVFOY082QlVheVBjWVRGT1RkTmFxcjNONHZiYktIdTdrUEd4L0FJZ0x4RGl0Q1ZscjRVaWRYOHRnNmVkRVRyNWdLTEFnaW1IUXpWS09PdzhTZnNBZFFEQ01YNVhSUm1qUmU1L09ONnlrRUhyeDhJaFdpSy9mOVcxclhhYTJRNVN6UUFBQVpoRFVRcndBQUFFQXdCR01FUUNJRE9Jd3JhNG1NRCswR3Z0V0U4U1hHZDlHclRTb3JidUVLVkdreHIrUE5Tb0FpQmdOOWVCMTJqWGhWclhJNEROeHdDQVpJWThMLzc5VUNmQmFHcmRJdkpzNXpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQXB1NVdHQTRBSWNzSlpFZkE2OTg1bW9SNHg5V1ZSNTNraGl3OENVOExWNS9qd2h0bXhkTW5xRnRGMWw4eXZBR1RXTGpOZGgzWWt2emFCTTVQRzFXQ0xDTUFGMFRHdlFvNDhiNDNaYnBYcmt2VFREYzJZRXRBbVVFdnZhU3lCL1B3eUVBdnBTb25ha2t0ZzBtVUtYb3pPUGxXaHNqNnBOTHBOeVJaZFZHRUljeHpsbzVwSlg2QzV1UEpZM1FtQVhkUkZBRWU4YzN1YTZlNEpTU3NTTVNwZjUzQUROcDJMenZMc3FURTBudXdEWlc0ZXA0N1A4MXFncTlPN3gxMXV1MnNCYU80Z1I3QnZ1bXBTSmY0VmlMNTl1dWhvc2ExVkxpOVgrZU9qZEF1dkYySXVCVlN5SlBBNUk0TWNlY2dCOEZWMkJnRzFIbkFzeDc4bWluenlvQm55QT09IiwiTUlJRVlUQ0NBMG1nQXdJQkFnSU9TS1FDM1NlU0RhSUlOSjNSbVhzd0RRWUpLb1pJaHZjTkFRRUxCUUF3VERFZ01CNEdBMVVFQ3hNWFIyeHZZbUZzVTJsbmJpQlNiMjkwSUVOQklDMGdVak14RXpBUkJnTlZCQW9UQ2tkc2IySmhiRk5wWjI0eEV6QVJCZ05WQkFNVENrZHNiMkpoYkZOcFoyNHdIaGNOTVRZd09USXhNREF3TURBd1doY05Nall3T1RJeE1EQXdNREF3V2pCaU1Rc3dDUVlEVlFRR0V3SkNSVEVaTUJjR0ExVUVDaE1RUjJ4dlltRnNVMmxuYmlCdWRpMXpZVEU0TURZR0ExVUVBeE12UjJ4dlltRnNVMmxuYmlCRmVIUmxibVJsWkNCV1lXeHBaR0YwYVc5dUlFTkJJQzBnVTBoQk1qVTJJQzBnUnpNd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUUNyYXdOblZOWGNFZnZGb2hQQmpCa24zQkIwNG1HRFBmcU8yNCtsRCtTcHZrWS9BcjVFcEFrY0pqT2ZSMGlCRlloV044MEh6cFhZeTJ0SUE3bWJYcEt1MkpwbVlkVTF4Y29RcFFLMHVqRS93ZSt2RUR5anlqbXRmNzZMTHFiT2Z1cTN4WmJTcVVxQVkrTU92QTY3bm5wZGF3dmtIZ0pCRlZQbnh1aTQ1WEg0QndUd2J0RHVjeCtNbzdFSzRtUzBUaStQMU56QVJ4Rk5DVUZNOFd4YzMyd3hYS2ZmNldVNFRicVV4L1VKbTQ4NXR0a0ZxdTBPeDR3VFVVYm4wdXV6Szd5VjNZOTg2RXRHemhLQnJhTUgzNk1la1NZbEU0NzNHcUhldFJpOXFiTkc1cE0rK1NhK1dqUjlFMWUwWXdzMTZDR3FzbVZLd0FxZzR1YzQzZUJURlVoVkFnTUJBQUdqZ2dFcE1JSUJKVEFPQmdOVkhROEJBZjhFQkFNQ0FRWXdFZ1lEVlIwVEFRSC9CQWd3QmdFQi93SUJBREFkQmdOVkhRNEVGZ1FVM2JQbmJhZ3U2TVZPYnM5MDVuVThsQlhPNkIwd0h3WURWUjBqQkJnd0ZvQVVqL0JMZjZndVJTU3VUVkQ2WTVxTDN1TGRHN3d3UGdZSUt3WUJCUVVIQVFFRU1qQXdNQzRHQ0NzR0FRVUZCekFCaGlKb2RIUndPaTh2YjJOemNESXVaMnh2WW1Gc2MybG5iaTVqYjIwdmNtOXZkSEl6TURZR0ExVWRId1F2TUMwd0s2QXBvQ2VHSldoMGRIQTZMeTlqY213dVoyeHZZbUZzYzJsbmJpNWpiMjB2Y205dmRDMXlNeTVqY213d1J3WURWUjBnQkVBd1BqQThCZ1JWSFNBQU1EUXdNZ1lJS3dZQkJRVUhBZ0VXSm1oMGRIQnpPaTh2ZDNkM0xtZHNiMkpoYkhOcFoyNHVZMjl0TDNKbGNHOXphWFJ2Y25rdk1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQlZhSnpsMEovaTB6VVYzOGlNWElRK1EveWh0K0paWjVEVzFvdEdMNU9ZVjBMWjZaRTZ4aCtXdXZXSko0aHJEYmhmbzZraFVFYUZ0UlVudXJxenV0dlZ5V2dXOG1zbm9QMGd0TVpPMTFjd1BVTVV1VVY4aUd5SU91SUIwZmxvNkcrWGJWNzRTWnVSNXY1UkFncWdHWHVjWVVQWld2djlBZnpNTVFoUlFrci9NTy9XUjJYU2RpQnJYSG9ETDJ4azREbWpBNEs2aVBJKzErcU1oeXJrVU0vMlpFZEE4bGRxd2w4blFEa0tTN3ZxNnNVWjVMUFZkZnB4SlpadTVKQmo0eTdGTkZUVlcxT01sQ1V2d3Q1SDhhRmdCTUxGaWs5eHFLNkpGSHBZeFltZjR0MnNMTHhOMExsQ3RoSkVhYnZwMTBabE90ZnU4aEw1Z0NYY3hud0d4elNiIl19.eyJsZWdhbEhlYWRlciI6IlJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgQkxPQiBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLyIsIm5vIjoyMzUsIm5leHRVcGRhdGUiOiIyMDI2LTA0LTAxIiwiZW50cmllcyI6W3siYWFndWlkIjoiZmNiMWJjYjQtZjM3MC0wNzhjLTY5OTMtYmMyNGQwYWUzZmJlIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiJmY2IxYmNiNC1mMzcwLTA3OGMtNjk5My1iYzI0ZDBhZTNmYmUiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiTGVkZ2VyIE5hbm8gWCBGSURPMiBBdXRoZW50aWNhdG9yIn0sImRlc2NyaXB0aW9uIjoiTGVkZ2VyIE5hbm8gWCBGSURPMiBBdXRoZW50aWNhdG9yIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEwNjA1LCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NmsxX2VjZHNhX3NoYTI1Nl9yYXciLCJlZDI1NTE5X2VkZHNhX3NoYTUxMl9yYXciLCJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfaW50ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MTAsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6MywiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2ludGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjMsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6WyJhbnkiLCJoYXJkd2FyZSJdLCJ0Y0Rpc3BsYXlDb250ZW50VHlwZSI6InRleHQvcGxhaW4iLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQmdUQ0NBU2NDRkZNMVFDRFhnMTIyRjljdldGVm1xZUdYM3RRV01Bb0dDQ3FHU000OUJBTUNNRU14Q3pBSkJnTlZCQVlUQWtaU01ROHdEUVlEVlFRS0RBWk1aV1JuWlhJeEl6QWhCZ05WQkFNTUdreGxaR2RsY2lCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVOQk1CNFhEVEkwTURVek1ERTBNVGswTUZvWERUTTBNRFV5T0RFME1UazBNRm93UXpFTE1Ba0dBMVVFQmhNQ1JsSXhEekFOQmdOVkJBb01Ca3hsWkdkbGNqRWpNQ0VHQTFVRUF3d2FUR1ZrWjJWeUlFWkpSRThnUVhSMFpYTjBZWFJwYjI0Z1EwRXdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBVEs3blh5SDRwZ04zVE13Q1dTb01EUmU0RVY4SmwzWHp1aGljWi8yZ3ZoK3p6M1dtVzBPWi9FY1JZRUE4RjI2Y2VldU1jZDIxV1FSUktXcGpXRCtKV2lNQW9HQ0NxR1NNNDlCQU1DQTBnQU1FVUNJUUQ4SiswL2I4UGVZakZSUVlrVVJjcWhheDI3b2x3MWpZL3Bic2toQnVScDRBSWdPQUhiNm4rN2ZOZmZ5b3hwZUNxM1ZaN0Ixak4zd3FtUE5mbmFlQWpkb1hzPSIsIk1JSUJnVENDQVNjQ0ZCbG8wczVRWUZkWGJmdXNSZFFlb0xYNlFlbmxNQW9HQ0NxR1NNNDlCQU1DTUVNeEN6QUpCZ05WQkFZVEFrWlNNUTh3RFFZRFZRUUtEQVpNWldSblpYSXhJekFoQmdOVkJBTU1Ha3hsWkdkbGNpQkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFTkJNQjRYRFRJek1ESXlNekV3TXpNd09Gb1hEVE16TURJeU1ERXdNek13T0Zvd1F6RUxNQWtHQTFVRUJoTUNSbEl4RHpBTkJnTlZCQW9NQmt4bFpHZGxjakVqTUNFR0ExVUVBd3dhVEdWa1oyVnlJRVpKUkU4Z1FYUjBaWE4wWVhScGIyNGdRMEV3V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVRLN25YeUg0cGdOM1RNd0NXU29NRFJlNEVWOEpsM1h6dWhpY1ovMmd2aCt6ejNXbVcwT1ovRWNSWUVBOEYyNmNlZXVNY2QyMVdRUlJLV3BqV0QrSldpTUFvR0NDcUdTTTQ5QkFNQ0EwZ0FNRVVDSVFDd2NzSHVMOFpGTDNGTnlVL0RPUW4zYm14MDhsbm4wTzVSa3RMYk9ub1BIUUlnT0VpNkltQVoxODFxOFJKaUwwaGJ3N1pxdXVuaVJxNmZqV2pHb0J1MU1vbz0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBU1lBQUFFQUNBWUFBQUFlTWR2eEFBQUFBWE5TUjBJQXJzNGM2UUFBQUlSbFdFbG1UVTBBS2dBQUFBZ0FCUUVTQUFNQUFBQUJBQUVBQUFFYUFBVUFBQUFCQUFBQVNnRWJBQVVBQUFBQkFBQUFVZ0VvQUFNQUFBQUJBQUlBQUlkcEFBUUFBQUFCQUFBQVdnQUFBQUFBQUFFc0FBQUFBUUFBQVN3QUFBQUJBQU9nQVFBREFBQUFBUUFCQUFDZ0FnQUVBQUFBQVFBQUFTYWdBd0FFQUFBQUFRQUFBUUFBQUFBQWU2U0Nrd0FBQUFsd1NGbHpBQUF1SXdBQUxpTUJlS1UvZGdBQUFWbHBWRmgwV0UxTU9tTnZiUzVoWkc5aVpTNTRiWEFBQUFBQUFEeDRPbmh0Y0cxbGRHRWdlRzFzYm5NNmVEMGlZV1J2WW1VNmJuTTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlsaE5VQ0JEYjNKbElEWXVNQzR3SWo0S0lDQWdQSEprWmpwU1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJajRLSUNBZ0lDQWdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlLSUNBZ0lDQWdJQ0FnSUNBZ2VHMXNibk02ZEdsbVpqMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzkwYVdabUx6RXVNQzhpUGdvZ0lDQWdJQ0FnSUNBOGRHbG1aanBQY21sbGJuUmhkR2x2Ymo0eFBDOTBhV1ptT2s5eWFXVnVkR0YwYVc5dVBnb2dJQ0FnSUNBOEwzSmtaanBFWlhOamNtbHdkR2x2Ymo0S0lDQWdQQzl5WkdZNlVrUkdQZ284TDNnNmVHMXdiV1YwWVQ0S0dWN2hCd0FBRDY1SlJFRlVlQUh0M0x1T0pHY1ZCL0JkOW1JSE5oTGlJaE9RT0VhQ0NEa2lJQ05HNGczOENqd0pDUWxDQkFTSUJONkNoQWdKSkVSaUpBdlpBb3l4ZkZudmhlL3M5SkZxZTN0bXVrOS9wNmQ2NTFmU04xVmRWZWRVemE5cS9sMjk5c3lkTzNmdXZEL0dzekdlYk9heGJLelg0TkhtK3Z4cXpHTjZjREh6ZFNGd2Y3UDg4ekdQZXpuTjNOZnJ2YS9qMmp6ZFhLOVB2eklXVEFRSUVGaVZnR0JhMWVWd01nUUloSUJnY2g4UUlMQTZBY0cwdWt2aWhBZ1FFRXp1QVFJRVZpY2dtRlozU1p3UUFRS0N5VDFBZ01EcUJBVFQ2aTZKRXlKQVFEQzVCd2dRV0oyQVlGcmRKWEZDQkFnSUp2Y0FBUUtyRXhCTXE3c2tUb2dBQWNIa0hyZ3RBdkZMb3FZekVSQk1aM0toRnFkNWQ3T2M4OFVtaTVjSWhCV3ZTM0RXdURyL1BNUXg1K2FkNkJpOXcydlRPK2VIZDdnOUZXbVVmMDdqOW56bk4vK2RIdlZHRU1YeDk1aStQVVpjdkgyZm9QS0NSLzFQeC9qakdHK09FWC9UNmFnVEd2V21xd1hDL3Q0WS94a2pybDE0NS9VWWk2WWhrQ1p2amVWdmpQRjRzMjdNVEUwQ2NRL0dnODdIWTN4L2pOK1BFVk9zM3pjVGN0L1Baand4L1dVYytMMDRBOVBKQmZJSDhPUUhYdmtCOHdiLzV6alBHS2JUQ2p3ODluQXpndW1OelVuRXljUVRrNmxmSUFJcG5uQmptSFlMUkRqRko0QVlzV3pxRjRpL3B2cjVHSmtKNVNQT0NLWU1vNWpuY3ZtRUZCS1lLQ0M4SjJMdTBTby9zc1ZINTZPbWZmOU42YWlES0NaQTRGWUpaRUNWdjJuQlZLWlRTSUJBbDRCZzZwTFZsd0NCc29CZ0t0TXBKRUNnUzBBd2RjbnFTNEJBV1VBd2xla1VFaURRSlNDWXVtVDFKVUNnTENDWXluUUtDUkRvRWhCTVhiTDZFaUJRRmhCTVpUcUZCQWgwQ1FpbUxsbDlDUkFvQ3dpbU1wMUNBZ1M2QkFSVGw2eStCQWlVQlFSVG1VNGhBUUpkQW9LcFMxWmZBZ1RLQW9LcFRLZVFBSUV1QWNIVUphc3ZBUUpsQWNGVXBsTklnRUNYZ0dEcWt0V1hBSUd5Z0dBcTB5a2tRS0JMUURCMXllcExnRUJaUURDVjZSUVNJTkFsSUppNlpQVWxRS0FzSUpqS2RBb0pFT2dTRUV4ZHN2b1NJRkFXRUV4bE9vVUVDSFFKQ0tZdVdYMEpFQ2dMQ0tZeW5VSUNCTG9FQkZPWHJMNEVDSlFGQkZPWlRpRUJBbDBDZ3FsTFZsOENCTW9DZ3FsTXA1QUFnUzRCd2RRbHF5OEJBbVVCd1ZTbVUwaUFRSmVBWU9xUzFaY0FnYktBWUNyVEtTUkFvRXRBTUhYSjZrdUFRRmxBTUpYcEZCSWcwQ1VnbUxwazlTVkFvQ3dnbU1wMENna1E2QklRVEYyeStoSWdVQllRVEdVNmhRUUlkQWtJcGk1WmZRa1FLQXNJcGpLZFFnSUV1Z1FFVTVlc3ZnUUlsQVVFVTVsT0lRRUNYUUtDcVV0V1h3SUV5Z0tDcVV5bmtBQ0JMZ0hCMUNXckx3RUNaUUhCVktaVFNJQkFsOEQ5MGZqTFRmTkhZMzV2akdlYjEzZDNMQy9YeFc0UEYvdkVhOVBwQk9KYVBCZ2pyOWNoUjg3cm1OZitrRnI3RXJoT0lPN0p2TGZ5L3N4N0xtcVh5OHZYc2UvelRJb3YzNHd0WTNyOVluYncxL2poTUoxV0lDOXN2Sm1ZQ0t4RklPN0xtQ0pYanNtRnIwYURYNDhSNFJRMytiNGY3VElGNCtBZmpCRlRycnQ0NVd1WFFJYlN0OFlCZmp6RzQ4V0JjbHVzeXB0a2VWMXllMXozLzQ3eGh6R2VqbUVpTUVNZzc2Vi9qMmEvM1RTTSt5L3Z4ZXVPRWZ0R0JuMXgzWTc3YnQvM3dQdjJzOS9sQXZGeE82WWZqUkVYc2pvK0hMWHhVVHdtMSsvQ3dkZmpCYWJjUy9IT0dRbDFUTE5JeWZqaE1KMVdJSitVNHJOOFhMOTlyMkZjcjNqUy9XZ00xMjBnbUtZSzVEMlZiNkNWNXM4aW1QSWR0OUlnYXZKRXF2WHFqaE9JRzJEZlVGcnV0Ky9IOXVQT1R2VnRGY2lQZGFYdlA0T3BWS3hvVlFMTDBMbnF4SEsvbkYrMXIyMEVxZ0pIUGJCNDE2eXlxeU5Bb0UxQU1MWFJha3lBUUZWQU1GWGwxQkVnMENZZ21OcG9OU1pBb0NvZ21LcHk2Z2dRYUJNUVRHMjBHaE1nVUJVUVRGVTVkUVFJdEFrSXBqWmFqUWtRcUFvSXBxcWNPZ0lFMmdRRVV4dXR4Z1FJVkFVRVUxVk9IUUVDYlFLQ3FZMVdZd0lFcWdLQ3FTcW5qZ0NCTmdIQjFFYXJNUUVDVlFIQlZKVlRSNEJBbTRCZ2FxUFZtQUNCcW9CZ3FzcXBJMENnVFVBd3RkRnFUSUJBVlVBd1ZlWFVFU0RRSmlDWTJtZzFKa0NnS2lDWXFuTHFDQkJvRXhCTWJiUWFFeUJRRlJCTVZUbDFCQWkwQ1FpbU5scU5DUkNvQ2dpbXFwdzZBZ1RhQkFSVEc2M0dCQWhVQlFSVFZVNGRBUUp0QW9LcGpWWmpBZ1NxQW9LcEtxZU9BSUUyQWNIVVJxc3hBUUpWQWNGVWxWTkhnRUNiZ0dCcW85V1lBSUdxZ0dDcXlxa2pRS0JOUURDMTBXcE1nRUJWUURCVjVkUVJJTkFtSUpqYWFEVW1RS0FxSUppcWN1b0lFR2dURUV4dHRCb1RJRkFWRUV4Vk9YVUVDTFFKQ0tZMldvMEpFS2dLQ0thcW5Eb0NCTm9FQkZNYnJjWUVDRlFGQkZOVlRoMEJBbTBDZ3FtTlZtTUNCS29DZ3FrcXA0NEFnVFlCd2RSR3F6RUJBbFVCd1ZTVlUwZUFRSnVBWUdxajFaZ0FnYXFBWUtyS3FTTkFvRTFBTUxYUmFreUFRRlZBTUZYbDFCRWcwQ1lnbU5wb05TWkFvQ29nbUtweTZnZ1FhQk1RVEcyMEdoTWdVQlVRVEZVNWRRUUl0QWtJcGpaYWpRa1FxQW9JcHFxY09nSUUyZ1FFVXh1dHhnUUlWQVVFVTFWT0hRRUNiUUtDcVkxV1l3SUVxZ0tDcVNxbmpnQ0JOZ0hCMUVhck1RRUNWUUhCVkpWVFI0QkFtNEJnYXFQVm1BQ0Jxb0JncXNxcEkwQ2dUVUF3dGRGcVRJQkFWVUF3VmVYVUVTRFFKaUNZMm1nMUprQ2dLaUNZcW5McUNCQm9FeEJNYmJRYUV5QlFGUkJNVlRsMUJBaTBDUWltTmxxTkNSQ29DZ2ltcXB3NkFnVGFCQVJURzYzR0JBaFVCUVJUVlU0ZEFRSnRBb0twalZaakFnU3FBb0twS3FlT0FJRTJBY0hVUnFzeEFRSlZBY0ZVbFZOSGdFQ2JnR0JxbzlXWUFJR3FnR0NxeXFralFLQk5RREMxMFdwTWdFQlZRREJWNWRRUklOQW1JSmphYURVbVFLQXFJSmlxY3VvSUVHZ1RFRXh0dEJvVElGQVZFRXhWT1hVRUNMUUpDS1kyV28wSkVLZ0tDS2FxbkRvQ0JOb0U3cmQxMXZnY0JPTDZQeG5qM2hqUHp1R0VEenpIcDJQL0dLWXpFeEJNWjNiQkpweHVCbEFFMG1lYmZxL3lEKy9kOFQzbTl6eUJUNHRUQ0FpbVV5aXY2eGp4Z3hyVG0yUDhaSXd2eDRpUDlLL1NEMjk4TDYrTjhhY3gvajZHY0JvSUpnS2RBdkd4SzZZZmpoRS9nUEhrRTA4OHNienZPSFQvZmZ1dWJiK2ZEWk9ZSGx6TWZEMFhBVTlNNTNLbDVwNW5QalZsUU9YckNKYVlkcjJPYmNzbmoxek9mWjhYN3ZpeTdKazljcmZjRnErWGZYSy8zTDdjbHJVNVgrNlR5NC9IeG5oaStpSjNNajh2QWNGMFh0ZHI5dG5HRC96eWgzNjVITWRhdnM3bG5HOXZqOWU3cHF2MlgyNWIxdWI2bkMrM2JTOHY5OG5sL0svTitYcTd4dXVWQ3dpbWxWK2c1dE43Vlg5d1g5WHZxL2wyV0UvN2ZHZFp6eGs1RXdMSENlVEh1ZU82cUw1UkFjRjBvL3dPM2lEZ2Fha0I5ZFF0QmRPcHhSMnZXOEFUVTdmd0Nmb0xwaE1nTzhSSkJUd3huWlM3NTJDQ3FjZFZWd0lFamhBUVRFZmdLVjJsZ0k5eXE3d3NoNTJVWURyTXk5N3JGL0JSYnYzWDZOb3pqUCtQNmRnTDZSM3FXdWJXSGZpL3lCc2VURjQwdVlsWFIrV0tKNmFidUdROXg4d2Z4cHpuVVM3N1FkM2VML2VQK1hMYmNqbTM1YnJMNXRrcnR4LzZlbGtYeTh2WDJTdm55KzI1WDg1ekgvTXpFNGduSmhmeHpDN2E1blR6bDNsem50L0Y5anZWOXV2TDlzdjFNVi9XTEpjdjI1Yjc1RHg3VlY4djY1YkwyWGM1WDI3UDVZZWJIZnp5N2xMcXRNdEg1VXBjeU4rTjhkWVlqOGFJSjZoREdrYXd2VHZHWHplMThVdWhwbDZCdUdaeGpiNDJ4Zy9HaUw4dUVGUCtVRjY4dXQxZjR6Nk1YK0w5OHhqdmpaRm1ZOUhVS0JCdmtuRS92ajNHTHpmSE9TUlBZdC9vOFhuVWZqeEdyS2lPZDZMSm1MYmZ1Uy9XK3RvaElJVDJWMlcxdjlXeGUrWVQ2dmRHbzJxZVBLK0xKNTZQeG9nL0dwWlBUR1B4MmltS1k0b1RpVDh4WVRxdFFQakhENXczZzZ2ZDQ4bkpVL3pWUmpPM1ppN0VVMU0reWVlNmZZNFQrMFltZlJKZllzUVU4MzMvTVh4NU1POUl6L2xPL2lXdWdUZUZrN003NEI0Q3l6Zk51RS8zellqYzkvNitRYlRIdWRpRkFBRUNjd1FFMHh4SFhRZ1FtQ2dnbUNaaWFrV0F3QndCd1RUSFVSY0NCQ1lLQ0thSm1Gb1JJREJIUURETmNkU0ZBSUdKQW9KcElxWldCQWpNRVJCTWN4eDFJVUJnb29CZ21vaXBGUUVDY3dRRTB4eEhYUWdRbUNnZ21DWmlha1dBd0J3QndUVEhVUmNDQkNZS0NLYUptRm9SSURCSFFERE5jZFNGQUlHSkFvSnBJcVpXQkFqTUVSQk1jeHgxSVVCZ29vQmdtb2lwRlFFQ2N3UUUweHhIWFFnUW1DZ2dtQ1ppYWtXQXdCd0J3VFRIVVJjQ0JDWUtDS2FKbUZvUklEQkhRREROY2RTRkFJR0pBb0pwSXFaV0JBak1FUkJNY3h4MUlVQmdvb0JnbW9pcEZRRUNjd1FFMHh4SFhRZ1FtQ2dnbUNaaWFrV0F3QndCd1RUSFVSY0NCQ1lLQ0thSm1Gb1JJREJIUURETmNkU0ZBSUdKQW9KcElxWldCQWpNRVJCTWN4eDFJVUJnb29CZ21vaXBGUUVDY3dRRTB4eEhYUWdRbUNnZ21DWmlha1dBd0J3QndUVEhVUmNDQkNZS0NLYUptRm9SSURCSFFERE5jZFNGQUlHSkFvSnBJcVpXQkFqTUVSQk1jeHgxSVVCZ29vQmdtb2lwRlFFQ2N3UUUweHhIWFFnUW1DZ2dtQ1ppYWtXQXdCd0J3VFRIVVJjQ0JDWUtDS2FKbUZvUklEQkhRREROY2RTRkFJR0pBb0pwSXFaV0JBak1FUkJNY3h4MUlVQmdvb0JnbW9pcEZRRUNjd1FFMHh4SFhRZ1FtQ2h3ZjBLdkRMZDdFM3Bwc2IvQXM3SHIwLzEzdjVWN3hyMTU5MVorNXpmelRVZWVQQjdqNkN5WUVVeWZiQXdlM1l6RnJUNXEvTkJGUUpsZUZnZ2J3ZjJ5UytlYUo1dm1IeDk3a0JuQjlNNDRpWWRqdkRGR25KaDNxSUhRT0VVUVBSamovVEgrTm9ad0dnaGJVNXE4UGRaL1o0d3Z4M0JmYmlGTmZobjNaZVRKLzhiNDdvemVjWU5IMHdpVm1Cdm5ZZkNiY2ExaWlwQXl2U2lRYjdpL0dLdmR6K2RqRUUrNGNiMCt6UXY0NG1VOTdGVmUrTU9xN0YwUmlIZjllUGVQSjlRdktnMXVXVTMrODBMTVo5enJ0NHl2L08zR2ZYclVFK3FNaTVVbmtQUHQ3eWFDSzdmbGNzeGppdlc1N3ZtS0hWOTJiYzkxeXo3TDB0d2U2NWJMK1hxNWJ5eHZuOS8yOW5pZHg0cmw3Zk5lSGlPWHQrZmJQZUoxVE10alg2elp2UzczemYxem5qWG1Md3VrVWN5WHkzbHRvaUtXWThydHkyMFhXMTc4dXR3Lzk4MzVjcy90ZGZrNjUxZnRtOXRpMzV6aS9QTDF2dWVhdFljY00ydHluclU1ei9VeDM3VnV1YjI4UENPWTR1QUp0ZXRFbHR0eU9lZlgxVjYyUGV0enZuM2M1ZnJsOG1YOXNuNTczMXkvcTI2NTc2N2xYSmZ6WFQydTZuL2Qvc3RheTljTFhIWWRsdXYzTVYvdW44czVYNTdGOXJwOG5mT3I5czF0Mi90ZTl6cnJ0dWZiZGJGOTE3cnR1dVYrdS9iZnRXNVhqNFBYNVgvcVA3aFFBUUVDQkxvRUJGT1hyTDRFQ0pRRkJGT1pUaUVCQWwwQ2dxbExWbDhDQk1vQ2dxbE1wNUFBZ1M0QndkUWxxeThCQW1VQndWU21VMGlBUUplQVlPcVMxWmNBZ2JLQVlDclQzVmhoMi8vVWRtUGZrUU1UMkJLSS8vTTcvelJFenJkMjhYSmxBdkhMMW5IZDR0Y0JURmNMcEZIYzIrN3ZxNjNXc0RXdVYvd3RwNmR4ZzcrK09hTlp2NTZ5YVdmV0pQRGFwbS84SXEvcGFvSDh5d3RwZHZYZXRxNUY0UFVJbzM5c3p1YnpNZmZSYmkyWDV2THppTDhRK1BVeFB0enNrazhGbDFmY3ZpMXA4cS94cmNkOS9jRVljYS83R0R3UVZqemxFOU9uL3dlYmEwVjVVNldKcWdBQUFBQkpSVTVFcmtKZ2dnPT0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCJdLCJleHRlbnNpb25zIjpbImhtYWMtc2VjcmV0IiwidHhBdXRoU2ltcGxlIl0sImFhZ3VpZCI6ImZjYjFiY2I0ZjM3MDA3OGM2OTkzYmMyNGQwYWUzZmJlIiwib3B0aW9ucyI6eyJyayI6dHJ1ZSwiY2xpZW50UGluIjp0cnVlLCJ1cCI6dHJ1ZSwidXYiOnRydWV9LCJtYXhNc2dTaXplIjoxMDI0LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxXX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMy0wOS0xOCJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjMtMDktMTgifSx7ImFhZ3VpZCI6IjZlOGQxZWFlLThkNDAtNGMyNS1iY2Y4LTQ2MzM5NTlhZmM3MSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiNmU4ZDFlYWUtOGQ0MC00YzI1LWJjZjgtNDYzMzk1OWFmYzcxIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlZlcmlkaXVtIGlPUyBTREsifSwiZGVzY3JpcHRpb24iOiJWZXJpZGl1bSBpT1MgU0RLIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIiwiYmFEZXNjIjp7InNlbGZBdHRlc3RlZEZSUiI6MC4wLCJzZWxmQXR0ZXN0ZWRGQVIiOjJFLTA2LCJpQVBBUlRocmVzaG9sZCI6MC4wLCJtYXhUZW1wbGF0ZXMiOjUsIm1heFJldHJpZXMiOjUsImJsb2NrU2xvd2Rvd24iOjB9fV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwidGVlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbInRlZSJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVsZXNzIiwiYmx1ZXRvb3RoIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDR0RDQ0FiNmdBd0lCQWdJVUx1TEp5bHZKcUs4SkV6emVhV1RZb2NIYWV1TXdDZ1lJS29aSXpqMEVBd0l3ZkRFTE1Ba0dBMVVFQmhNQ1ZWTXhFVEFQQmdOVkJBZ01DRTVsZHlCWmIzSnJNUkV3RHdZRFZRUUhEQWhPWlhjZ1dXOXlhekVWTUJNR0ExVUVDZ3dNVm1WeWFXUnBkVzBnVEZSRU1STXdFUVlEVlFRTERBcFdaWEpwWkdsMWJVbEVNUnN3R1FZRFZRUUREQkpXWlhKcFpHbDFiVWxFSUZKUFQxUWdRMEV3SUJjTk1qRXdPREV5TVRJd05qTTFXaGdQTWpBMU1UQXpNRGd4TWpBMk16VmFNSUdITVFzd0NRWURWUVFHRXdKVlV6RVJNQThHQTFVRUNBd0lUbVYzSUZsdmNtc3hFVEFQQmdOVkJBY01DRTVsZHlCWmIzSnJNUlV3RXdZRFZRUUtEQXhXWlhKcFpHbDFiU0JNVkVReEV6QVJCZ05WQkFzTUNsWmxjbWxrYVhWdFNVUXhKakFrQmdOVkJBTU1IVlpsY21sa2FYVnRTVVFnUVhSMFpYTjBZWFJwYjI0Z1NYTnpkV1Z5TUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFRlY3Q1QxWTUwWVV0RHM1bkNmdnBZMzhMN0lLd0hoaDFFQ0V0ekZHZ0pxTXJXYzlPQ3hFUnVyYmpsdzFlbnljY3I0WURQbkR2K3l2czZjSThZUlozU3FNUU1BNHdEQVlEVlIwVEJBVXdBd0VCL3pBS0JnZ3Foa2pPUFFRREFnTklBREJGQWlFQWlKdjN3SFVxeXVKMGNBdDkyOW1xQWFQekZoamhuYXlzcWpOdHhLcFV6QmNDSUVRWFI3czg2TzZCbkJIMzBJV3VXTHh1dC90c2hpYVQ2RXUwTmtoNkhkNjEiXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZ0NBWUFBQUVFZlVwaUFBQUFCR2RCVFVFQUFMR1BDL3hoQlFBQUFDQmpTRkpOQUFCNkpnQUFnSVFBQVBvQUFBQ0E2QUFBZFRBQUFPcGdBQUE2bUFBQUYzQ2N1bEU4QUFBQWVHVllTV1pOVFFBcUFBQUFDQUFGQVJJQUF3QUFBQUVBQVFBQUFSb0FCUUFBQUFFQUFBQktBUnNBQlFBQUFBRUFBQUJTQVNnQUF3QUFBQUVBQWdBQWgya0FCQUFBQUFFQUFBQmFBQUFBQUFBQUFFZ0FBQUFCQUFBQVNBQUFBQUVBQXFBQ0FBUUFBQUFCQUFBQUlLQURBQVFBQUFBQkFBQUFJQUFBQUFBUWRJZENBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBQ1ptbFVXSFJZVFV3NlkyOXRMbUZrYjJKbExuaHRjQUFBQUFBQVBIZzZlRzF3YldWMFlTQjRiV3h1Y3pwNFBTSmhaRzlpWlRwdWN6cHRaWFJoTHlJZ2VEcDRiWEIwYXowaVdFMVFJRU52Y21VZ05pNHdMakFpUGdvZ0lDQThjbVJtT2xKRVJpQjRiV3h1Y3pweVpHWTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5MekU1T1Rrdk1ESXZNakl0Y21SbUxYTjViblJoZUMxdWN5TWlQZ29nSUNBZ0lDQThjbVJtT2tSbGMyTnlhWEIwYVc5dUlISmtaanBoWW05MWREMGlJZ29nSUNBZ0lDQWdJQ0FnSUNCNGJXeHVjenAwYVdabVBTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM1JwWm1Zdk1TNHdMeUlLSUNBZ0lDQWdJQ0FnSUNBZ2VHMXNibk02WlhocFpqMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzlsZUdsbUx6RXVNQzhpUGdvZ0lDQWdJQ0FnSUNBOGRHbG1aanBQY21sbGJuUmhkR2x2Ymo0eFBDOTBhV1ptT2s5eWFXVnVkR0YwYVc5dVBnb2dJQ0FnSUNBZ0lDQThkR2xtWmpwU1pYTnZiSFYwYVc5dVZXNXBkRDR5UEM5MGFXWm1PbEpsYzI5c2RYUnBiMjVWYm1sMFBnb2dJQ0FnSUNBZ0lDQThaWGhwWmpwUWFYaGxiRmxFYVcxbGJuTnBiMjQrT1RZOEwyVjRhV1k2VUdsNFpXeFpSR2x0Wlc1emFXOXVQZ29nSUNBZ0lDQWdJQ0E4WlhocFpqcFFhWGhsYkZoRWFXMWxibk5wYjI0K09UWThMMlY0YVdZNlVHbDRaV3hZUkdsdFpXNXphVzl1UGdvZ0lDQWdJQ0FnSUNBOFpYaHBaanBEYjJ4dmNsTndZV05sUGpFOEwyVjRhV1k2UTI5c2IzSlRjR0ZqWlQ0S0lDQWdJQ0FnUEM5eVpHWTZSR1Z6WTNKcGNIUnBiMjQrQ2lBZ0lEd3ZjbVJtT2xKRVJqNEtQQzk0T25odGNHMWxkR0UrQ3JPdGxsRUFBQWJPU1VSQlZGZ0p0UmRyYkpOVjlONzdmVis3N2duYlNGeWM0T2ptZzJpTURqRktvc0FZQkh5QlkyRDhZV0tNemhCK09GOXMrMk14eWpBaUd2OU5Rd3d4TVhFUEVnenZEWXJBRWpRYm9BTXh0TjBZUTUzUXRkMnJhL3M5cnVmYzlpdnQxcTZRd0czUzc5NTdudmVjYzg4NWw1RFpobjE3bTBhWEgra2FJSno4ZVBXc3Z3bVI1YUF2SFBFT0JKdVkxVVpjNzc5QWt6aFV2dDJpeEhkS2Q3WGFyQ0VhcE1zUGQvSnJselJpVEUwUXltaWpmUFhjS0NlY1UwOVRiUnc3aVUvaW9uekhYZzVxZExxY3E2c3JZZ0JhdnFQakNEZU1haE5SSm9US1ZaMWRmTEEzUUxnQjNBMERZRnoxTkcyMElCSnpybDVaTnRqai94S0JsTEYrVCtTaVpBSk5Mck4rMDJwYXNhUDlDeTVaUGdBZGtrZGxTNDh5TnZsZnhBZ0ZDWlU0WVN0UG5PS1ZMUzJLaVJZWUdRZ2pVQXhRbUs0NDNLa1RTV0pYenZrZW9Cci9Dd0FNZ1ZTU2lYdnJlc280NTJUb25HOE1nSmROSUtGVWRaZXBRcnc4MEJQZ2trVHprUW9BbkZIalJWZEQ3UUd4TnYvc3pSMGN2QnN4MTRuZnRNZE1SSm8rWCtad3lrTTUvb2RrVzBHZlVIZzZRc3AxYmF1RSsrWE43ZGVHRk84VVVmVStIVUtFVlhVZWR3b0NoeU10TXpqQ3BvcW5iQm9jQTJ6Qzd5V1V4TzBQQVlkQmE4eVg4L0tZT2pyK09NbFdMcEJmQ0RuaFdLN1ptOXN4OWxRUUVQZURFSVovbkdnUW9HNFI5WlR6K1J6c1R5VkdBbGVELzQ1NXRSS3VhM0hjK0lRU25kbHlKUjRPM2xjNlZUaU1RbVFDM3VTVVR2WC81cytTRmNaQVlrbWN3SnhRa0VmcFBrL0RodlhtbGpzMlljNDFxOHFHem80T3l6SUZUanpSS3hyTHlpYWV4ZzFzem9EUG1raHNNc0h2VFFLSFE2NndQRkpKc25QUDhGRHdFM2ZES3g4bkl0NlZ1WDE3KzdxMHJrc3JNZVp1OE5BZmxKS0cyMklncnBYRFlWVHMvSm1EOFI4RVg4bzNiWkJXWkF3QWt1MjJSNTlqU3RaeEl4d0VyeE1EaU0rejJsWXVRalFUZlhuMlkzdUliaHdYbHhtY2FucU0rUXFQUGJQTTZZeUhaaEtqVmpQK084YTVwbTVLZ3NVV2pERGxKSXNZemRPQmVONHlsMVpjOGRVaENIODlHencrTTV5QmlJbEk1TWE3SzQ1MlljWUF1MFNEYWN4ZnRGbFNjb1l4S1FQeGRHTWJFTkt3WjNuTEJNaVFPTXVxbkNjeFpEbms1UE1RNFR1NWxqS0hxSlJKekZXL2xwYUc4L3RvVlplVEc1b0dnaUVGU2l3MGVINGlpMmdxM3FRVWR1R1FCbGszaFBlenFCYnFHOVVBSWtJTjZyNkJYLzFaUk5mUVJUT0lxV0xGNi9wbWpCaFE0SUloSXBVbDR2T00zWmowYWZNWU9qVDVRaUdPdU1Jc0VzblBMZlNHY0NOeHlGZk9YTmRoWXg0ZUljVlFLYUhqcnZvMVJRUlRXbHNkNGlZTkprbmtDV29GTDhWVWlrUFI4SlR1ZGpkdEtCSjdiUnRuRU9NK0s1a3MraE10Q21VWGpZTEc0OHlXUTJUR24vVFlqUzJJbEhuRXptMXYzbnNGeXlvU1lPck9UQmgxeGEzZzNSRWM3Q042djYxVHk3ODVhQ1dUVTYyUXNSODJBL0dPQ0VqSkpIWWZFVGEyb0xnVzhsQ1FoTlVRK09jbGlMN1J1NllBbmhhRmxybXN4U0RVV2ZIMUlXNVEvUWR3c1lXckVRTTZBaEd5V0VWdVBhY2h4MWxHb3QvOUM0czJZenhJQ2htR3VyblVDTVp5QWljb09jNkZMZTN1enNWVjJwUVdSMDB6d1FQRXpQeVBaYVFjNnNUdm1NR2d4dTNraG01RTgwbnFUSVljbVRVWWRxMDRlb3hMcXY2cUthSTJ3Vy9tM3ZTdmFXSk1YblkzM1k1bHdtRHNFcHh1VVRRRGNyd0ZxVjBNTklJZnRsUFFWNHIwWUJqOCsxWGRaM2pWMGE3OS9ybHpoVlVxZTNxU2N6QVdORWMwZndYdUwxNEN2aDJxMkhVQW1QRjZJeExtY0dMa20vbjZRVnZDSUxkaFI4SHdCTkMvWW1wazZ2ZzRwSGRlVFpTc0FEVHF3VGtqZ1plRnBnUUV3eWdmV2FMWXJSMjdoVkRLVDBQODNCUHRONFdKTThXUzBFNnk1WUpJdXQ4SWVBdmNqVFdMVTJscjBVUENLQXBuckszNjFHa1NHQno5eWR2ZnRwVGxrVko5eWxEalRXNm0wNktwb1Znd2E0N0MxYkFQMHUzcmwrdlhIQ1pveVl1TGhNSXpGUUNETWtVaVdrUVBldDNqa1VuZlNKRWswMXFtRUs1UFRZSWQwZ2RVMUZyaVg0TzZJek9MbFVJdC9zNzEzdG90YUdsczRRVVVXZ3NUVnlnZ0tnRzRBMzdxeEkxUTRFWi9NQWZja2cvOU5nSGhpSXZ0WGFhQkdGQjZjbVJvT3dZNGxWK0RKMVdQdUNIYnRpRVQzbHUzR0Z2VnBDRXpDWXJobEQ1KzNUV3VoaWEwUXRuQ3NLNmg2Y0RGU2JqcEZpbzhLUlIwTEFUaE5pZ3NueUppL0pac1RGMkZUR2JNZFhya3c3OHZqRmwwUXk2RXA0bUtqeW9RbnltZzBJUllhUEVCMWlzeGFhSDdvM1YwVHIvM2N6T3hZYzQzaGN6MlpmTksvUHM4alRWWldTb3JoT0xhaVV4QkF4UVE5MU1DQTVVcThBcWtWS2N5ZXdjS05YVTMxRHhkTXBrM2hEaENLQWJlYlF6V1d4ZlZ0TThlSEhOdHJYa2VtUkxaOGdaWVZCZkNPQmV0a1ZDTTBZTTJiYUlRK2hKTFFZRjNEOGdSbHNLWHdtM0l6SXhxdmkwWGZOWlJBZytrL2ZoSUVsUUphVGN6bDF2RCtCOWNNQTdneXF2dVRRQUFBQUJKUlU1RXJrSmdnZz09IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiRklET18yXzAiXSwiZXh0ZW5zaW9ucyI6W10sImFhZ3VpZCI6IjZlOGQxZWFlOGQ0MDRjMjViY2Y4NDYzMzk1OWFmYzcxIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJ1diI6dHJ1ZX0sIm1heE1zZ1NpemUiOjEyMDAsInBpblV2QXV0aFByb3RvY29scyI6WzFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjE2LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjEyOCwidHJhbnNwb3J0cyI6WyJibGUiLCJ3aXJlbGVzcyJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XSwiZmlybXdhcmVWZXJzaW9uIjoxfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTA3LTE0IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjF9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDctMjgifSx7ImFhZ3VpZCI6ImU4YjdmNGEyLWMzZDUtZTZmNy04OTBhLWIxYzJkM2U0ZjU2NyIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiZThiN2Y0YTItYzNkNS1lNmY3LTg5MGEtYjFjMmQzZTRmNTY3IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlNoZXJsb2NrZWQgUGFzc2tleSBQcm92aWRlciAoaU9TKSJ9LCJkZXNjcmlwdGlvbiI6IlNoZXJsb2NrZWQgUGFzc2tleSBQcm92aWRlciAoaU9TKSAtIFN0YXNod29yZCBJbmMuIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX3N1cnJvZ2F0ZSJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJzb2Z0d2FyZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJzb2Z0d2FyZSJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJpbnRlcm5hbCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOltdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFFQUFBQUJBQ0FJQUFBQWxDK2FKQUFBT2JVbEVRVlI0MnUyYWEzQmRWM1hIZjJ2dmMrNVR1cElzVzdMbGwrellzYkdKYldJN3I0WVFRbHhlZ1hwaUF0Tk8yNW0yekVEcGxNNlFLZVZSUWg4d01DMmwwNkVRS0cybmRLYlRoclNFRmtKbzg0TFlJU2FKN2RqRWlXM1ppaCt5WlVuV1cxZjMzblBPM3FzZnpwVmpFMHF1WlFXYUdjNGNmYmhIKyt6elgzdTkvbXZ0TGR1L2svQnF2Z0wwVlkwZnc2djhldFZyNEpVVVFCQUF0UDczQ2drdzk3QXhnb0pYbkFLSVlBV2gvdkQvcndaRUVLZzVhZzRqNUFQeUZpRHlUTWNrbnNDUUQ1QTVGV1BPTkdDRlNrTGlXZEhDbGs1WjN5NkxpaFJERWFnbURGYjB5Q2hQRCtqekkrcVVZb2pxM0N5ZGJQL1A1UEp0Um9TSmlGV3R2T2RLYzEyWDVPeFBIcW53N0RtOTk0anU3dGRDaUpVNVVNWGxtcEFJQ3VXSU8xYkxiNjQzNTZHUDF6Z3pwYU0xdk5LY1lWRlJPZ29JWERWZnJwb3YzejJ1WDludkkwL0dYSzRNbDIxQ1NqWGhnNjh6YjErWmhod09EdXY5dmZxaklSMnRFVHRBclpIbWtGVnQvSEszdVdtSkNMeWxXNVkxbXovOWdaOU95TmpMa2tHMjN4ZlBQZ3NLa3hFZmVKM1p2c3A0SlhKODlZQi80QVdmZUhJQmdhbUhVY0FwMVFTbmJPNlVEMTV0dXBvRWVHNVlQL3FZRThGY1JwZzFsK08xa3hIYmxrdUt2aHp6OFozdXZoNmZEeWhsQ0FSVi9Nd3RVQXhweWJCdlFPOTgxUFdNS3JDdVhkNjMwWlFqakZ3T2xWQm1jWXNTTzlwenZIZURUWUYrWnJmYlA2anpjM2lQOCtoTFhrbWZsekpNMVBqa0xqYzRqU3B2VzJrMmQwbzV3c0Rza0poWkcwODU1dTByVFZzT0ViNXh4TzgrbzIwNVl2OHlMeWFlUXNDNWFiNjQxNlVXOXA2MWhzdEkxYlBVZ1BNMGg5eXlYQlJHcXZ6SFlkOGM0bHhEN3lhZVVvYmRwM1h2V1FVMmRNaXFWcWttQ0xQVHdLeTBWazFZM1NhTG1rUmc1eWsvUEUxb0xqYWI4eW5pd2l4dzhYLy91OWVyWW9Xck82V1dZR2ExbE1Ic01sZmk2RzZSRk53ekF4cWs2Q0VOS1lCWC9BeGxTTm1SWEVDSHZDZHJPRFNzaVJJSXE5ckV5aXlOYUpZbWhOYlJwRXZySEVGS2hCTEdhNHpYcURrc0ZBSUtBYUVoOFV6VkdLOHlIWU5paE5Bd1d1R0JZMTZndStVbENueEZOYUFRR0hwSFZVQ1YyOWVZWndiYzhEVFpnR1V0c242K3JHbW5xMWxhcytRQ0FXS25reEZueXh3YjFZTkRlblJVeDZ2a0E3S1dMejd0OS9icm02OHcrWURZSVRLTFJQYjFlSFlNb3BydzJWdnNoZzRCVGsvcXZyTzZyRVZlMHk2aGZSbmhUNHpwWXlmMW9SZDgveFROV2FvSkdUdDdYalJiQVNCeUxDank2WnR0Vi9PUHIxc2xabkJhUnlxVVkxVEpCN1RtNkNoS0tmdmltUEVhLzNYRTMzZkkxeHo1Z01UUFp2a0IyWDVQUE90VVVFMW96ZkdlZFdaTGx6Um5KWFk4ZjA1M252UTlJenBTb1pyZ0ZRVWpaQ3d0V1ZhMHlwWXV1WDZKV1ZDb1QzSjhUTC93bEQ4d29DM1pldlh6TXhGQTYrV2lFU0pISmFFMVN6RkQ3Qml1NEpXc0pUQllVK2NJYWFxT1BaSERlZG9MM05KdGRxd3o3Zmw2YXZ2YnA5ejlSN1NVdzJ0OThrdGdOR3ZmZGRjc1dKQlhZa2VpWkN5RmdOaFJqb2s4dVlDc3hRaFdpQnpsbUdwTTdGQWxOT1FEY2dHMWhHZk82czZUdmkzSGlqWUJybDlpSXNlZWZpMWNPcnUzYTNmY2RhbldQMWtqRzdDd2lVTEFSSTFLVERiQXBLUlNVVVdFeVlqMlBKc1d5cHAyNlNoS1lHUXFZcUtHVjdJQitZRHBpRWVQYXlWbXkyTHh5cFl1R2F2cWdRSHlZVDJsdkZMMVFDMWh4enJ6dHRXeW9DaGVPVEdtOXh6MHUwOXBNWU9ma2JBUzgrNTE1bzcxcGlWWGZ5dHluSm5VUFdmMDRWN3RHZEZDU01hU3NkenpySitzNlowM1dLLzgzbFo3Y3N3ZEhOSkNlQWtSNlJJMFlJVHBpQTljWTM1dGcybkpTV0FJTFF1S2NuTzM2Wi9TUTBOa0xRSlRFWGVzTSsvZGJISVhMSTQxdE9aazNRTFpkb1Zwei9QY29KWWpRa01oNU1CWnFnbGJGNHNSMW5mSVE4ZlUrVXZnbUhidDdYYzFpSDRxNXJvbDhyNnRObVgvMyszeFp5ZFoyaUpHMkxqUVBOTHJxd25lTTcvQXgyNnkxbENPK2FkOS9sdUgvWUVCQnFjMEg5S1NFMnRZTTErdVhTclBEakJRSm1QSmgrenQxeVVsVnJSSktTdkE3bFBhdUNGZGlnOG9mM2lqblpjWDRGUGZjLy8ySTMzMEJjMkhYTlVwR1V2dmlQYWN3eXVidStTV2xVYUVmOTdudjdiUG55dHphRWgvMktlUDlPcnhVZTF1azFKV1duTHkrbTZ6cjE4SHB1cE9mMkJBMzdqQzVBT3VtQ2VQbi9BVE5XeGpzY2cwU0QvTEVWdTY1TXI1SXNLdUUvckVTVjNVUkZQSWszMmFCc3A1ZVVrOU9EY1RTYzVNYUM2Z09VTnJqclljS0k4YzB6KzQzKzA4cmtBcHkxMXZ0SzFaYWdsWnk3a3k5ejdyUmNpSHZHVzFxY1FZbWJ1Q0p1VThiN3JDcE5YdE41L3pHWXYzUkk0YmxrbktMSWJLS2hBSWZlUDE4VHZXbTg0aTB6SGpWY2FyR0tFbFIrTDQxUGZxTW5RVStkMXJiRFZHUFUwaER4L3pRMlVVYmxwaFdyTWtybEVONkUrL1JUVnl1cUNvR3hZS2NHUklEdy81ZktDVldKZVV1RzJOQVFhbWRPOXBuN09hdFhwbzBPODdveUtzNzVTN2Z5WDQzRnZ0eDk1Z2Jsd21sVWlqUkVPak9hdWYzNVdjR2xkVmJsb2hyMXRFT2RLTTFkRnAzWFhjQ3l4c1l1MENxckVhOUdYaG1VWjRXNVN3YXA2a01mSEpQbDlMQ0F5Vm1GdXZrSHdJY08rUC9NZzBhVlZnRFgvOWVOSTdVcmVUTmZQbERTdk1KMjZ4SDczWkdpRjJaQ3psaUg5ODJxWGs1N2ExSnEyaFE4T1RmZldTOUtwT2svaUdNckpwaFBjbmpsWHQ5ZG1lSDlUUWtEanlBZGN1TlFyRDA3cnpCVjhNOFI1Vk1vYVJNaDkrSVBuN3A5eVRwL1RJT1UxSnp1dTd6WjAzMmlqQmVab3lQTlduUjRjVjJMVElkQmFKRXJLVzQ2TTZXbEZnVmJ1a2ZZMjU4QUZGWUhGSmdLbUlzeE1hR3FLRWhVMnlwRVVFOXZmcnlQbVNFcnduWTBrYzkrejNuM3d3K2RDM2t6dS9uZlNOcXlvM2RwdnJsMG01UmlCVVkzNTR5Z1BOV1ZiT2sxU3JFeFg2SndFNm1zaUhlRDhYR2xBbE1MVG1CSmlzNlZSRVlFZzhIVVhTVkhYMG5MNVk2V3FkdlJsb3lWSUl5VmtPOU92bmQ3ckVvM0R6U3BQS2FZV2o1K3FoZmtsSm5DTTFzT0d5QWswWktRUTRSUzYvcUUvUnBGaHJNVW1DS043VGxLa2IxVVMxSG5aK3JHeDN2dDRMYXN2VE02UW54MVJnVWJOa0xjNWhZYXhTbDdxVUUxVkVVYVVTQTRTRzBLRCtKZDJBV2ZlRjlIeEFuZm10RnlScExxYkFBdDVmMEcvVEY0ZGRsRi8xSmUwZy9iOCtmRGxPckRoSE5RYklCNFFXVll3d1VhM1AzWmFmTWRZWnAzZWVyS1ZjUXhXQjRUS3Y3WlJscmFKd2VseXJNVmJ3bnBaY3ZRcWJxR3E2L0VZb1psTHlwMUhTVUx2T05KTEZuR2RrV2xOZGx6SWtqdEF3T0tuVE1XbkVPUDhsSTVScnJKd25mM0ZiY0VPM3BMQitxVnMrZEpOTjJ5cVBIUFZXUUVrY1Y4eEV0dE5qbW9vVUd0b0xxYk14SFRYVTlHMmdnaEJVNlJ0VElCL1NWWkxUNDlxVVpYQ1NrNk82cGtNMmRKbjVSVmVPc0liRTBacm5qMisxN1VXNWExdHdabHdWRnJmVWdUNTR4RDkxVW9zWm5DY2JjTzB5QTB6VjZCM1dURURzYU0yeHFDVEEyVWtxTVUyWmwrZlZEVGl4SnhCNmh1b3p2WGFoSkE0clZHT2VPTzRGV25Kc3U5Sk1WZXV0SWVmWWZhSnU2bDB0Y2g3OUE4LzdMenptY2dFR3BtcHNYaXlyRndpdy80dy9PMEhXVW90Wk9aTXVlNGE4Y3cwMUcxKytvRkVsRzNCc1dJZkwybDZVYTVhWmY5bmpZMGNoNU9Fai9sMGJiVEhESFJ2dHJsN3RuOUJpaHNqeE40KzVSNC82bTFhYVpXMEM5STNwcmhmOHZ0T2FEd2lFMkpFTCtPMXJiVnIrZnZ1Z040SkE0cmx1ZWQwWUQ1elI4NG5sY2sxSUlUU01UTEczVDdldGtlNTJ1V3FSN0RtbHBSd0RFM3g5bi91ZDYyeFRsbys4eVg3a1cwbTVSakZMYURqWXIvdjdYTm9qaWgyQnBTbWNhUUxFZkd5YjdaNG53SzVldi9lVU51ZW94WFFVdVdHRlVUZzFxa2NHTlJjMG1NZ2FpYUZLWUhqb3NFOTllc2RHcTRyM05HZjV4bjcvVEo4Q3F4ZklaMjRMT3B0bHRFenNhTTdRVnFDWW9aaWhyVUJ6QnErTVZ3Z01IOTltYjE1bGdITmx2WHVYeTg0WTFWdGZZMXJ6Q0R6UzQ2Y2FyZ2ZzMm5kOG9oRUJNcGErTVY3YlpSYVdaRkZKVG83cTRRR0tHYnhuOTNHL2VhbHBLMGg3VVc1WmJieHlha3hIcDZuR1JBbTFoR3BFSlNaanVYR2wrYU5iN1lhdXV1L2U5UjEzZW94Q1NDV21xOFNIM2hpRWxva2FYL2krUytOdlkzMmhyMGFORjhUckZzcm50Z2ZBOExSKzhOK1R5U3E1c0I0dVBueHJjUFhTK2tmUFRlbSswOW96cUNQVDZwV1d2S3hzbDQyTEpYVUo0UFM0ZnZaL1hNK1FObWR4U2puaTA3Y0ZXNVlKOEE5UHVIL2Q0MXZ6T045UWcwaTIvMTNVWURLMmh2RUt2LzhHKzg2ckRQQk1uMzc4VzBsZ3lWaXFDYXJzMkdSMmJMS2wzRStiSkhZOGVNaC83VWszVWFVcGc4SkltZmZmYU45OXRRR09ET3FkOXlYQnBXd2IyYlczZmFMeDBSbkwzbE82ZGJtWlY1U0ZKVmsrVHg0N3FzNlREMEhZYzFJZjcvVVRWUW9aS1dZa3NCZnRMSjBlMCsvMTZOMDczZjBIUFZBSWNaNnhhWDdqR3ZQclc2MVhxakYvY3I4YnI5QmcvSm5Sd0ZlaXhnVXdRaTFoZnBQODFlMjJ2U2pBM3BQNkZ3OGxJOU9VY2hpaEVsT055WWNzTE1taUVxVzhHR0dxcGdPVDlJL3JSSldNcFpBQktFY0E3NzNCM3I3SnBOdVlmL1pBOG5pdmxuSTRmd2tha08xZnZnUUJVa01xUjNUUGt6OS9wNTFmRk9Ec2hINTVwM3VpVjQyaEVOYkpkdVNJM2N3T2pSQVlza0c5Wkt2RVZCT3U3SkQzdjk1dVdDenBkczVmUHVnZU91UmI4cGVHZmpZQ3BGUytITEdvUlQ3NlpydTZvKzVvangvejM5enZuK3ZYS0NHMGhPbEd0OVRQcGpoUDdJZ2NWbGplTG05YmI5NnkzbVFEZ1BFS24zc3cyWDFjWjRFZWtPMTMxMmF6eTIzcUxkSGZ1dDYrWThPTHhuNndYNTk4d1QvWHIvMFRXcTVwN09xREN4bFowTVNWbldicmN0bTB0QTRkZVBxRS85TDMzZWt4YmM3TkJ2M3NCVUF4QnVjcFIyeGVKcis2MVc1Y2NsSHNHSy9vV0lWS2hFSXVvSlNuTlMvMmdpRW5SL1RlUGU3aHc5NEl1YURSb1BtVEJQalNyQVM0NEhCV2VsWmcwMUp6NjJ2TXBpWFNWdnhwUUtZam51LzNqeDcyUCtqMVUxV2FjaStwY242V3gyMFVuRklJVWRoendqOTEzQzlvWW5XbnViSkRsc3lUZVFYSlorcGJsMk1WUFRPbXh3YjE4SUNlR1ZmbktXUW96ZFpzTHRiQUYydk14WlZXakxHamx1QThSZ2d0MWlEZ2xOamhQU0prQXpKQmZTTjVqbzZjemRGRUthREFFR1lRcVo4b3F6Y2dERmxiUHhxVnNzQTV2T2I0MUdMOUpKeSsvTU81RStBWEIxOS92dGN2ems3L3ZLLy9CV1dEYlFCZVFxTnBBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiRklET18yXzAiXSwiZXh0ZW5zaW9ucyI6W10sImFhZ3VpZCI6ImU4YjdmNGEyYzNkNWU2Zjc4OTBhYjFjMmQzZTRmNTY3Iiwib3B0aW9ucyI6eyJwbGF0Ijp0cnVlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsInV2IjpmYWxzZX0sIm1heE1zZ1NpemUiOjEyMDAsInBpblV2QXV0aFByb3RvY29scyI6W10sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6MTYsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4LCJ0cmFuc3BvcnRzIjpbImludGVybmFsIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN31dfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTEyLTEwIn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0xMi0xMCJ9LHsiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbImE2YjFhZTA4MjNhN2U2YTdiMGUwYTUzZjJiNmE3ZGI5ODg0OGE2MWYiXSwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiYTZiMWFlMDgyM2E3ZTZhN2IwZTBhNTNmMmI2YTdkYjk4ODQ4YTYxZiJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiWXViaUtleSA1IFNlcmllcyJ9LCJkZXNjcmlwdGlvbiI6Ill1YmlLZXkgNSBTZXJpZXMiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2LCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjJ9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50IiwicmVtb3RlX2hhbmRsZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURTakNDQWpLZ0F3SUJBZ0lVVG5iYkdJUjJOSHZ6cUlLRkFlUXdHMVhCaXMwd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JCSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVFZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU9zWGozazA0QmFuNFRZZHRaS3FEL09QSnh5RHlhUG1DQlVGVWlhWklnVHRlWm5qM1gyNURoZ3BaWlhzQzREMHlkSWNybEE2d05VSW5PUkwvTDl6QmJURUlNQVZNR282ZzdVS0FtYjJNRjZBSGJuaFlKZDllaWt1cFZOV1NoSE5ZTmM0R0JkTzFZTjZBZlVxdkpoSGJlM1Y0U05NUG1CUkVLSlBWejdUaHdnbWdnVGU4V3MySzAvd3NxdjJ3U0U3cGJDQnNVWmhJWDUxYlpNM3BxRHdKUFRtUkZFdnQwLzZ0RzVlTzhGM2oxNE9YcWZFaG1qbjFWdnhLRFlRT0xaQXhDd3dnQzBQNENkZld2M3k4UFNSOEkzNTRoTzFZK0d6Tmp2SXFYMzhOS0x5d3VJWUhGZXJPeE5seEVNQnZGaFlCdVJ1WUFra2dVYVBxTjZVQmhzSUxyc0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ0NvUkhoaXlObmJuWFJXSUw2WkJYb0JYOVlUTUI4R0ExVWRJd1FZTUJhQUZDQW9VQ0VicEZwYjZGUExuWjNGNVB4c0wzb2ZNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUNRRmFmSkkxLzVXZzlDRUVpbUUxUlA1NFJnUXdUTlRPT1FzTEFDVGUrckl0bEZRekM5WkRoclY4Mjh5WDdqenkrQUFzcDNpeks3VDF0aDJkbDdtK3R1MHN3MlBhL29sYzAybnQ2UHlJdzM0OGdhSHpoSTErMEtFNDVxeHZGRGVMMmxNeGJQZkNZdnlFRWFZemppUUVMVTU5NTFwWEdXeUtNYS80Zkx0TytaS09YaE11VmVxNHJYRFBJNTRXNkpIT2lBYWlLZGl3KzVlM2Mya3QvakZJUXRNNnZNWGc5TE5GemRqRVROdDIwVlg5UWV2UnBGWmZ1Y01HOXdDYVFEb0ZsUHpwVE1KS2hQZXYvaW1KbVpZaEtmcjBsTGNlbXRxakl4TEFvcVpkT1lmSEJnNit2QWNkUEkvaWF1R3BVQXY3WCtVS05tRHdqWjJCYUg0c0x3aEIybSIsIk1JSURQakNDQWlhZ0F3SUJBZ0lVWHplaUVESkVPVHQxNEY1bjBvNlpmL2JCd2lVd0RRWUpLb1pJaHZjTkFRRU5CUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTVo2L1R4TThySVQrRWFvUHZHODFvbnRNT28vMm1RMlJCd0pIUzBRWmN4VmFOWHZsMTJMVWhCWjVMbWlCU2NJWmQxUm54MW9kNTg1aCsvZGhLN2hFbTdKQUFMa0tLdHMxZk81M0tHTkxadWp6NWgzd0duY3I0aHlLRjBHNzRiL1UzSzloRTVtR05ENnpxWWNoQ1JBSGZyWU1ZUkRGNFlMMFg0RDVuR2R4dnBwQXk2bmtFbXRXbU1ud08zaTBUQXVjc3JiRTQ4NUh2R000cjBWcGdWZEpwdmdRamlUSkNUSXErRDM1aHd0VDhRREl2K25HdnBjeWk1d2NJZkNrenlDaW1KdWtoWXk2S29xTk1LUUVkcE5pU092V3lETVRNdDFid0N2RXpwdzkxdSttc1V0NHJqMGVmbk85czBaT3dkd01SRG5INHhnVWw1Wkx3cnJQa2ZDMS8wQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQjhHQTFVZEl3UVlNQmFBRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRTXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJEUVVBQTRJQkFRQzNJVy9zZ0I5cFo4YXBKTmp4dUdvWCtGa0lMa3Mwd01OcmRYTC9jb1V2c3JoenN2bDZtZVBNcmJHSkJ5SjFYbnF1QjVzZ2NSRU5GeGRRRm1hM21pbzhVcGYxb3dNMVpyZVhySjBtQURHMkJwbHFiSm54aXlZYStSMTFyZUlGVFdlSWhNTmNaS3NEWnJGQXlQdUZqQ1dTUXZKbU5XZTltRlJZRmdOaFhKS2tYSWI1SDFYZ0VEbHdpZWRZUk03Vm9sQk5sbGQ2cFJGS2xYOHVzdDZPVE1PZUFEbDJ4TkYwbTFMVGhTZGV1WHZEeUMxZzkrSUxmejNTNk9JWWdjM2lyb1JjRkQzNTRnN3JLZnU2N3FGQXc5Z0M0eWkweEJUUHJZOTVyaDQvSHFhVVlDQS9MOGxkUms2SDdYazM1RCtXVnBtcTJTaC94VDVIaUZ1aGY0d0piMGJLIiwiTUlJRFNEQ0NBakNnQXdJQkFnSVVVY21NWHpSSUZPZ0dUSzBUYjNnRXVaWVprQkl3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRRG01NTViV1k5V1crdE9ZMHJJV0hsZGgrYU5hbm9DWkNGaDdHazNZWnJRbVBVdzBoa1NHNnFZSFF0UCtmWnlTMzNWRXJ2ZytCUXFubXVtZ05oZnhGcmt3RVpFTGVpZEJjQzhDNEFnNG5xcWlQV3B6c3ZJMTdOY3hZbEluTE5MRmNaWS8rZ09pTjZaT1RpaE81L3ZCWk1iajlyaWFBY3FsaVltTkdKUGdUY01HYUVBeU16RU1OeTJubTZFcCtwalA1YUY2Z2kyMXQvVVFGc3VKMWoyUmoveW5NL1NkUnQrZWNhbDVPWW90eEhrRmJMOXZ2djJBMk92NUlUWkNsdzRiT1M5bnB5cFFpbU9aNVFBWXl0bVlhUXBXbC9wTVl6NnpTajhScWtWRE5FSkdxTmZUS0EyaXZMWXdYNmxTdHRNUGFwZzBKODRsOVgwdm9WTi9GcFM0VkNWQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJRZ0tGQWhHNlJhVytoVHk1MmR4ZVQ4YkM5Nkh6QWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQVlNemdMckpMSXIwT292UW5BWnJSSUd1YWJpSFNVS1NtYkxSV3BSa1dlQXRzQ2hERUhwWGNKL2JnRE5LWVdvSHFROHhSVWpCNEN5ZXBZZXZjM1lsckc4bzd6SHhwZlZjYW9MNVNldUprekh4S240YlRhU3A5K012d2FtbnA2NGtaTWlOYkZMa25mUDlrWUtvUkhrTVdoZVJKMVVzUDF6NFNjbWtDZUlMZnNNczZ2cW92cWpXQ2xGc0pwQmNzbHVZSFdGN2JCSjFuNFJ3ZytBVEVvcFk0SWdHdjZadndjK0E5citBVDJocXBvU2tZb0FsK0FOWXdnc2xPZjlzSmUwVitUQTlZWS9VbGFCbVBQVGQwLy9yOXd2Y2VQV1prUGpLb0FDL3pVTmhmRGJoNExWOEdIczNseVgyWG9tTC9MTmM4Sll6eUlhREVoR1F2ZW9QaGgvdHIxZz09IiwiTUlJRFNEQ0NBakNnQXdJQkFnSVVEcUVSdys0Um5HU2dneGdVZXdKRkVQRFJaM1l3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRREk3WG5IK1p2RHdNQ1FVOE04WmVWNXFzY3VibHZWWWFhUnQzWWJheG45Z29kTHg1c3dIMGxYcmRnamg1aDdGcFZnQ2dZWVg3RTRibDF2YnpVTGVtck1XVDhOM1dNR1VlOFFBSmJCZWlvVjdXL0UraFRaUC8wU0tKVmEzZXdLQm82VUxlTW5mUVpEclZPUkFrOHdUTHEydjVMbGo1dk1qN0p0T290S2E5SjduSFM4a0xtelhYU2FqMFN3RVBoNU9BWlVUTlY0enMxYnZvVEFRUVdyTDQvSjlRdUt0NldDRkU1blVOaVJRY0ViVkY4bWxxSzJieDJ6Nm9rVmx0eURWTEN4WWJwVVRFTHZZMXVzUjNEVEdQVW9JQ2xPbTRjcnB3bkRSTFZIdmpZZVBHQkIvL3BFeXp4QS9nY1NjeGp3YUgxWlV3OWJuU2JIeXVyS3FiVGExS3ZqQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJUcXQwS1FuZ3g3WkhyYlZId0R1bnhPbjlpaFlUQWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQXFRYUNXTXhUR3FWVlg3U2s3a2tKbVV1ZVRTWUt1VTYrS0JCU2d3SVJubHc5SzdIZTFJcHhaMGhkd3BQTmlrS2ptY3lGZ0ZQemhJbXdISmd4eHVUOTBQdzN2WU9kY0pKTmt0RGczNVBYT2Z6U24xNWNGQXgxUk8wbVBUbUliOGRYaUVXT3B6b1h2ZHdYRE00MVphQ0RZTVQ3dzRJUXRNeXZFN3hVQlpxMmJqdEFucS9ORFVBN2JlNEg4SDNpcEMrLytOS2xVcmNVaCtqNDhLNjdXSTB1MW02RmVRdWVCQTduMDZqODI1cnFEcXNhTHM5VGI3S0FIQXc4UG1yV2FOUEcya2pLZXJ4UEVmZWNpdmxGYXdwMlJXWnZ4clZ0bjNUVjJTQnh5Q0pDa1hzTkQwNWRDRXJWSFNKSXMrQmR0VFZOWTlBd3R5UG1ueWIwdjRtU1R6dldkdz09IiwiTUlJRFNqQ0NBaktnQXdJQkFnSVVSMzhtcTI2U2Yyc3pWVjJCZEc2V0VON2t1V1V3RFFZSktvWklodmNOQVFFTEJRQXdMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3SUJjTk1qUXhNakF4TURBd01EQXdXaGdQT1RrNU9URXlNekV5TXpVNU5UbGFNQ1l4SkRBaUJnTlZCQU1NRzFsMVltbGpieUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRUlnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTlkwV2I5b1BvUm9Lb1F5V1BhSnB6MTF2cldUZzZ6VHRtTmoyVm9LUm55dktHUnFwemI4M3c1bDZZQTk2VVlrWUJEUVAwaWxPMkRQZTZ3V3FWUjV6RGZSemRjSDhiaCtMN2RHR3ZhZTZoUlRaaGtGa0NwWERzNEhjY2tuckRmOEZDbEo3SGUzOUpmNDIvRzFRbTJ6ejlXV21yUFh0Z2lLL3gwNUdqc1FmR3VERzF6ZjVRVFVVaWU4bHd5bUszVGZkT3ZOZWVKQUFQZTJwbjdJdGZSYityVnJOV2lEemxSbjJ2Tm5aMndQbzR3SC9XSjZkaFhaRytyTVdUK2E2Qm9jZzFVZkl3NmtkdW5HNGJUcFp6c3ZhY0ZZeVIwbXBmK0RlT25wU1dBbXl3SldIdlRsZjJZWHhGeWVYY1RBQ2RRbGNNTkdKMlZoWlE0OHh0UDUvUkJQLzhrQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZDaHk0Mm9raXFjVFMxaXFhL0hSV2prQm40SC9NQjhHQTFVZEl3UVlNQmFBRk9xM1FwQ2VESHRrZXR0VWZBTzZmRTZmMktGaE1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQW4rUkhJUGJ0TUVETmRUMWc4SC9SaXRBa1VkTGdBdDF0V0dXbmxqOWtuYnY0LzRHbFg3QzlwNDVlZlBPOS9hWkw2T1YxWFJLQmk2S210Qlc1SzdudVlFbk14LzVCcUJTYkxUN3JoZHVDNDlUQmVNYjlQSGRYc1RsU1ZOWWVmcjFkR2lkcjRqMHhWQlFMYjFya25EQWJkV0R6S2Z2bmF5S084RnJ3ZTdIeDg0M01HL3JKK2MwWHJ1VXZiZlZUQ0hMaUlXaE03b05EaEw4eG9iNnhVbzlLTEtjU0wrSXRZc08zLzlXYjhROUdqc3FMNEZYc0RjRzFTYVloN0twZnVNbU9peHF6SlpPMm5JaWNQWVJnMUkyU3VpVWZZTzcwdG1kSGNibCtrU1FtU1l0N3JxNHZpSUxnMkd4M2o5cklUdVdUamJhVWFTU1F4Z09tTVNIdXl6TUFDIl0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWZDQVlBQUFDR1ZzK01BQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBSFlZQUFCMkdBVjJpRTRFQUFBYk5TVVJCVkZoSHBWZDdUTlYxRkQvM2Q1OXdlUVNJZ1M5QVFBWGNGTEFRWmk5ZnBlVnoxdFkvV1RacjVXeHBjN1c1a25MYTVqSTNaODVzclMybk0yc2p0V3daUzdJVUg0SDR4Q25FUXg0REFaRjc0Vjd1czg4NXY5L2xJbkJ2VkovQjRQdjludS81bnUvNW52TTU1NmZ6QS9RdjBIYi9JclgzVkZLUG80NWNubTRpblVJV1l3TEZSbVpRVXV3akZHL04xaVJIaDFFWjBOUlZSdWRxdDFCZCsyblNLeVMvT2h5czArbGszZS8za1E5cXZENFpVdGE0VlZTVXVZMGVpcHlpVGhBZm9jb09SVmdEdXV3M3FLUmlBZDNyYmNFdGpUallJb2Y2V2FIc0NtelZQV0NNeCtjZ2g4dExxV01LYU1Xc1VqTHFvMlJ0SklRMG9Pem1lcnBRdTRlc1pnc09Oa0d4SDdkMGtkdlRUMTdzNE9NVTdWSThaaGpnR2FNK0FxOWlFTnU4UGlmMXVkejA3TXd2S1dmOEdsVm9DRVkwNFBDNVdkVGFYWUZiUjh2TnZMNSszS2dmYjV4Tk15YTlSYW1KaXluYU1sR1RWdEZscjZiYTl1K3BxbkVYNHVNdVJSZ2pTWUVock43dXRGRmU2bHFhbDdOZmt3NWltQUdIeW5QcGJrOFZtWTB4c3RucHRsRkNWQ1l0elR1Qk44M1FwTUxqVHRldmRQelNVbko3ZThta2p4WjM5ZlhiS0RmbGRacWJ2VStUVWdHbkJWRjZmUTJpUEhnNFcxNlVXVXd2emJrMTZzTVpFK1BuMHB2ejdKU2V1QXllczhsY3BDbWFLdW8vcCtxV3IyVWN3SUFIV3J2UDBZRXpoWEF0TEFic3NIaHA3aUdhbXZ5aWpQOHJ5cXJYVVdYOVhvb3d4eUF1Zk5CcnA0M1BPQkZYWmxrZjhNRFJpcWNweW93QXdwdXoyeCtmV3Z6L0R0ZGU5c21zenlndGNSNkMxd2JkekJsNk9scTVXTllZNG9HYXRoSk1ya1RFeDBqQVJTSEFWcys1cllrUU5YYitRZ2ZQTHNRNmdYeUluc3JlUWZtcG03UlZGWWZMODZuMWZpVU9rWXZTaGtVUHh2YnVrem95NksxaWhNMWhvM1h6VzZFdlNmWEErZHBpV0dhV2QrZG9Yekx6bUd3S1lGTENBc1JBbFBCQWhNbENGWFU3dEJVVlByOEhnVmNKSFdxK0YwMHBscitETVRkclA0enZ4WTExa05NaHhUK1NlVEdnK2Q0VjVMUUppdHlVR0pOQjhWRlpzamdZQlpNL0lJL1hDVGtqMHF5RE9wRjJBVlExN0NJalVwL0RuVDFVa0w1RjVnZGorc1Mxd2cxZ0UzZ2lnbTYwZkNYelNuUFhieUFQYklYditJRHBFMTZUaGFISVM5c2t5aGxtTUU1RjNjZnFBS2hxMkMwRTVQSDFnWWFYYUxQRGtaRzBIREpPbktXSHA1MUkwejVTT3V4OGUxV0F1WnpkSFFyVGtwOFRtalhvSStsYTB3R1pzenVicWJPM2lmUTZBL1c3dlZTWXNWM21SMEpLd2tLYzRXSGlCa21SOEkzQ0NnSTg3b09MNHF6VDVQK1JVSkJlakVPZ0FQSzhoWVB6YXRNK2VJVHAySU85eVRRbWVyb21QUnh4MXF4QWNzaWxlL3ViU2VFYmNXUUdZRUNnaGNMWTJIeUtqb2dqSDI1aE1wanBVdjFPdWdsaTRlaDJlUncwTzMyYkpqa3l1Q2dOemcwdnpsWU1TaVNzMHVvbzRNRzdoTU9qQ0VhWDF5RkUwblN2akJ6dVRuRXBLODZaOElvcUZBSXVidzhrZzlBckVhUkVXU1pJK2pINFhicDZnOUU5RW5KVDNvYVJ6RE4rTVVKQlFESG41NmE4b1VtRUJ1c094QnMvTjUrdEpFYlBrQUZEajhVR3ZPcy9JV3ZjU2dsR0JodlM3L0ZUWWZwV0dZZERZOGZQQXhXU0EzNXNUQzRwNCtMbTRBYXFJb1BlUXRmdWZLNkpoMFpoeGxic1VYT1NtWE5pZkQ1WlRBa3lEb2ZiYmNjbHhuQThXTkFxeENiUk55a2hYeFFwYUR3NjdmWFVZYnNpRzBLaHR2Mm9lSXZoOHJoUU1ZT2NFQXFYRy9lSSt6bmdPYzV5eHI4cTgySUFNMWMvRkxGT3BscXU1ZUZRWHJNWnpHY1ZDalliTFdHNUk0QlQxZXVScmxieHROT3RNaXREREVoTFhJSXluQUF2dU9FV0UzWDNOZEFmdDk0VmdhRzQyWElRdDBaWDZQZUNFL3FRRmU5cks2SHg3WVU1MEt2SDdmVzRmUytxN0tLQkp4c2dnQlg1cFNBR2gxaklyVmg1elE2dzNSZmFhaEJYbS9hQ2JDWlRqQ1VGVVR5V1pxVzlwNjJNakpQWFZxT3JQZ01PNE52NzRHa2Yrb3dmdE5WQkRRbmpGSnFIU3cxN3BYdmhXVzVLWnFlL1E0OU4vVVNUQ0FWV29RWEZJSEJIWFhlM0ZQclVEc3VHRG10Ri9oSEtUSHBla3hoaUFPUEkrU0pxNlM2SEY0STlZV3prQkpUbzQ2aVVNeldwOFBpci9SaWR1THhLWXNTa3NWOHZMbE9RdmhHWDJZbFIwT0JoQmpDK3UvZ0VjdlkwQXBLN1lrNDFOeGpQU1FuV0ZIVEY2NlVyamdldkI4Q3U1YStsMnZZU1JQdHVWRG83M2hoZE1TSG5VWDd0VGpzVlpHeEFsL1dwdGlPSUVRMWduTDI5bVg2L3RSMXRtbGtZajhXNFgrQ1NqV2NVREdZMU5wUy9DN2hTS3FpTUxNL2wyUW1TV1o3M0RkeitnaW84QkNFTllQUTQ2cW5rendYVWJxdkJreGpVUXNXZlpGZ2J1bzNyQWYrd043ak9POTAreW54NFBpM0wrMG5ZTDFTY2hEVWdBUDRnUFYvN0lkMXErMUhTaG11R2tJcVdSUGd5eE1GcVA4SGZqVG5qWHdZNWJRZmJKY3Q2T0l6S2dNSG90Ri9IZTFlZ3NheEhTcUc2d2ZkbVE1eDhOeVRGRnFCY3AyaVNvd0hSM3lrNSszNmhGN3ZYQUFBQUFFbEZUa1N1UW1DQyJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTEyLTIyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZdWJpS2V5IDUgU2VyaWVzIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVMkYxMDAwMjAyNDEyMjIwMDUiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMi0yMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzZ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDItMDYifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyIxNDM0ZDJmMjc3ZmU0NzljMzVkZGY2YWE0ZDA4YTA3Y2JjZTk5ZGQ3Il0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjE0MzRkMmYyNzdmZTQ3OWMzNWRkZjZhYTRkMDhhMDdjYmNlOTlkZDciXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ik5FT1dBVkUgV2lua2VvIEZJRE8yIn0sImRlc2NyaXB0aW9uIjoiTkVPV0FWRSBXaW5rZW8gRklETzIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MiwicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUVPRENDQTkyZ0F3SUJBZ0lEQUluQk1Bb0dDQ3FHU000OUJBTUNNSHN4Q3pBSkJnTlZCQVlUQWtaU01STXdFUVlEVlFRS0V3cERaWEowUlhWeWIzQmxNUmN3RlFZRFZRUUxFdzR3TURBeUlEUXpOREl3TWpFNE1ERWtNQ0lHQTFVRUF4TWJRMlZ5ZEVWMWNtOXdaU0JGYkd4cGNIUnBZeUJTYjI5MElFTkJNUmd3RmdZRFZRUmhFdzlPVkZKR1VpMDBNelF5TURJeE9EQXdIaGNOTVRnd01qSXlNak13TURBd1doY05Namd3TVRJeE1qTXdNREF3V2pCME1Rc3dDUVlEVlFRR0V3SkdVakVUTUJFR0ExVUVDaE1LUTJWeWRFVjFjbTl3WlRFWE1CVUdBMVVFQ3hNT01EQXdNaUEwTXpReU1ESXhPREF4SFRBYkJnTlZCQU1URkVObGNuUkZkWEp2Y0dVZ1NXUmxZM2x6SUVOQk1SZ3dGZ1lEVlFSaEV3OU9WRkpHVWkwME16UXlNREl4T0RBd1dUQVRCZ2NxaGtqT1BRSUJCZ2dxaGtqT1BRTUJCd05DQUFTTFZMKzFTVEp2YUVSTzVXQ1IrakdjQXhMdm1QQkRpWlkxTmdGRklocFg2T0FaQXBRWW10NnhTaDc0U3dNK21qZ25zU0VjYzRBMlVmMTM5RmdaNHJwWW80SUNWVENDQWxFd0V3WURWUjBqQkF3d0NvQUlUWjAxdEd1QlBMb3dTZ1lJS3dZQkJRVUhBUUVFUGpBOE1Eb0dDQ3NHQVFVRkJ6QUNoaTVvZEhSd09pOHZkM2QzTG1ObGNuUmxkWEp2Y0dVdVpuSXZjbVZtWlhKbGJtTmxMMlZqWDNKdmIzUXVZM0owTUZNR0ExVWRJQVJNTUVvd1NBWUpLb0Y2QVdrcEFRRUFNRHN3T1FZSUt3WUJCUVVIQWdFV0xXaDBkSEJ6T2k4dmQzZDNMbU5sY25SbGRYSnZjR1V1Wm5JdlkyaGhhVzVsTFdSbExXTnZibVpwWVc1alpUQ0NBV0FHQTFVZEh3U0NBVmN3Z2dGVE1EK2dQYUE3aGpsb2RIUndPaTh2ZDNkM0xtTmxjblJsZFhKdmNHVXVabkl2Y21WbVpYSmxibU5sTDJObGNuUmxkWEp2Y0dWZlpXTmZjbTl2ZEM1amNtd3dnWWFnZ1lPZ2dZQ0dmbXhrWVhBNkx5OXNZM0l4TG1ObGNuUmxkWEp2Y0dVdVpuSXZZMjQ5UTJWeWRFVjFjbTl3WlNVeU1FVnNiR2x3ZEdsakpUSXdVbTl2ZENVeU1FTkJMRzkxUFRBd01ESWxNakEwTXpReU1ESXhPREFzYnoxRFpYSjBSWFZ5YjNCbExHTTlSbEkvWTJWeWRHbG1hV05oZEdWU1pYWnZZMkYwYVc5dVRHbHpkRENCaHFDQmc2Q0JnSVorYkdSaGNEb3ZMMnhqY2pJdVkyVnlkR1YxY205d1pTNW1jaTlqYmoxRFpYSjBSWFZ5YjNCbEpUSXdSV3hzYVhCMGFXTWxNakJTYjI5MEpUSXdRMEVzYjNVOU1EQXdNaVV5TURRek5ESXdNakU0TUN4dlBVTmxjblJGZFhKdmNHVXNZejFHVWo5alpYSjBhV1pwWTJGMFpWSmxkbTlqWVhScGIyNU1hWE4wTUJFR0ExVWREZ1FLQkFoRGFRYmhURnRqY2pBT0JnTlZIUThCQWY4RUJBTUNBUVl3RWdZRFZSMFRBUUgvQkFnd0JnRUIvd0lCQURBS0JnZ3Foa2pPUFFRREFnTkpBREJHQWlFQW9FZXBITUM1WDlqQkthR3BoY0tqaWRoaU4rWm56N3YzUzNoYzMxL0F1bnNDSVFES3FvZ0syU1pPWFpjdnZIQ0I2VVFTYUEwbkxuNFJVd3kxZ3VEaXZiWmJ3Zz09IiwiTUlJQ0hUQ0NBY0tnQXdJQkFnSUNkZFV3Q2dZSUtvWkl6ajBFQXdJd2V6RUxNQWtHQTFVRUJoTUNSbEl4RXpBUkJnTlZCQW9UQ2tObGNuUkZkWEp2Y0dVeEZ6QVZCZ05WQkFzVERqQXdNRElnTkRNME1qQXlNVGd3TVNRd0lnWURWUVFERXh0RFpYSjBSWFZ5YjNCbElFVnNiR2x3ZEdsaklGSnZiM1FnUTBFeEdEQVdCZ05WQkdFVEQwNVVVa1pTTFRRek5ESXdNakU0TURBZUZ3MHhPREF4TWpJeU16QXdNREJhRncweU9EQXhNakl5TXpBd01EQmFNSHN4Q3pBSkJnTlZCQVlUQWtaU01STXdFUVlEVlFRS0V3cERaWEowUlhWeWIzQmxNUmN3RlFZRFZRUUxFdzR3TURBeUlEUXpOREl3TWpFNE1ERWtNQ0lHQTFVRUF4TWJRMlZ5ZEVWMWNtOXdaU0JGYkd4cGNIUnBZeUJTYjI5MElFTkJNUmd3RmdZRFZRUmhFdzlPVkZKR1VpMDBNelF5TURJeE9EQXdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBVHoyak5hS09LL01LZFcyZm1lMXRxNkdSRXVQdXVLVzlIZ1dZZ01Scmp2WlVUT3FMQU5KM01kNUhxdjFFTjF6TWQ0bFd0eWZ6UmxhN3J2NUFSQm9Pb1Rvell3TkRBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUJFR0ExVWREZ1FLQkFoTm5UVzBhNEU4dWpBT0JnTlZIUThCQWY4RUJBTUNBUVl3Q2dZSUtvWkl6ajBFQXdJRFNRQXdSZ0loQU1yaGI4U21mTkxlTE5nYUFWbVE2QU9NaUxOTFZIWDBrRlVPODBDblQzOEVBaUVBek5BZ3Y0ZEgrSERoWlNnWldKaWFQdS9uZlpUZXVHeTRNeWRQTXE1dXJzND0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZ0NBSUFBQUQ4R08yakFBQUNxVWxFUVZSSXgyUDgvLzgvQXkwQkV3T053YWdGcEZsdzhjS0Zpckl5UjN0N1MxT3owS0RnQmZQbS8vejVrM2l6dm4zOWxwK1RhMnRsdFdUUklvVG9meGhZdFhLbGxwcTZzcndDQWlrb1JJVkh2SDM3OWo5eDROU3BVMEF0UUkxVzVoWndRYWdQenA4N1YxMVppWEF2SXhqOVp6aDU0a1JOWlJXUlB2ajk2eGNET00wek1US2lCOUc4dVhQLy9mc0hORlJBU0xDK3NYSG03Tmx1YnU0UW0zYnQzTGx1N1ZwaUxHQ0VtY3VJYWNHWlU2ZkI0Y1dRWDFBUUd4L243T0l5YWVvVWJWMGRpSXZhbWx1ZVBYdEdVU1QvK2czMkhTT0Rob1lHUklTRmhhV3BwWVdWbFJVbytPSGpoNmI2Qm9vc2dIdnF6NTgvY0RsOWZmM003Q3dJZTgrZTNhdFhycVFnbWVJb2tES3pzL1gxOUVHeS94azZPem9mUDNwRVdVYkRzQVlZUkMzdGJSd2NIRUQyaC9mdjYycHFDUmVPakNUbVpFMHRyWnk4WEFqNzhLRkR5NVl1SmQ1MFZBc1ljZXBLVFU4M05qV0JxT251N0h4dy93RStPLzdqc2dDMzE1bVptUnVibTluWjJZRnF2bnorMGxCZmh6T2cvcU83bFFtL0IrRUFtSHdMaW9vZ0NvNGNPcnhrMFdJaVBVRWdrcEZCVW5LeW1aazVoTjNUMVhYM3poMWlZb0tKY0RUQkE0cUZ1Ym10bFl1YkM4aisrdlZyVFZVMXFIUWh6UWVNQkh5aHJLeGNXRndNVVhuNjFLbjVjK2RTdjhKSlNFeTB0ckdHc0NmMDk5KzZkUXN1eGNMQ0NySDdQNUlyU1lnRGVLRlMzOVRFeDhzSFpILy85cjJ1R2hGUU42NWZoMlZQTm9xcVRDVWxwZUt5VW1neGZQcE1TV0VSTUFNdVg3YXN2N2NYSXFpbHJZWHdGcnhlZy9xT3VHWlNkRXpNM3QxN0RoMDZDUFQwcGswYk4yM2NDSTlGWUtaSno4aEU5OEhmZjM4aEREWTJkaUw5MGRIZHBhdXJpeGF3ckN5c3JlM3R1bnE2aUxUWDBOQUFUb0lzVHg0L3RuZHdpSXlPQXRZRXhGakF6YzN0NCtzTEpMOTkvUW9zRTBWRlJlM3M3UnRibW9HVkZVcWNqVFlkaDc4RkFJaEJMbE5kN2p1MUFBQUFBRWxGVGtTdVFtQ0MifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiTk9UX0ZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjEtMDktMjEifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIxLTA5LTIxIn0seyJhYWd1aWQiOiI5ZWI3ZWFiYy05ZGI1LTQ5YTEtYjZjMy01NTVhODAyMDkzZjQiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjllYjdlYWJjLTlkYjUtNDlhMS1iNmMzLTU1NWE4MDIwOTNmNCIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IDUgU2VyaWVzIHdpdGggTkZDIDkzZjQifSwiZGVzY3JpcHRpb24iOiJZdWJpS2V5IDUgU2VyaWVzIHdpdGggTkZDIEtWWlI1NyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzYsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfSx7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDM4NHIxX2VjZHNhX3NoYTM4NF9yYXciLCJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyIsImVkMjU1MTlfZWRkc2Ffc2hhNTEyX3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRFNqQ0NBaktnQXdJQkFnSVVSMzhtcTI2U2Yyc3pWVjJCZEc2V0VON2t1V1V3RFFZSktvWklodmNOQVFFTEJRQXdMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3SUJjTk1qUXhNakF4TURBd01EQXdXaGdQT1RrNU9URXlNekV5TXpVNU5UbGFNQ1l4SkRBaUJnTlZCQU1NRzFsMVltbGpieUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRUlnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTlkwV2I5b1BvUm9Lb1F5V1BhSnB6MTF2cldUZzZ6VHRtTmoyVm9LUm55dktHUnFwemI4M3c1bDZZQTk2VVlrWUJEUVAwaWxPMkRQZTZ3V3FWUjV6RGZSemRjSDhiaCtMN2RHR3ZhZTZoUlRaaGtGa0NwWERzNEhjY2tuckRmOEZDbEo3SGUzOUpmNDIvRzFRbTJ6ejlXV21yUFh0Z2lLL3gwNUdqc1FmR3VERzF6ZjVRVFVVaWU4bHd5bUszVGZkT3ZOZWVKQUFQZTJwbjdJdGZSYityVnJOV2lEemxSbjJ2Tm5aMndQbzR3SC9XSjZkaFhaRytyTVdUK2E2Qm9jZzFVZkl3NmtkdW5HNGJUcFp6c3ZhY0ZZeVIwbXBmK0RlT25wU1dBbXl3SldIdlRsZjJZWHhGeWVYY1RBQ2RRbGNNTkdKMlZoWlE0OHh0UDUvUkJQLzhrQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZDaHk0Mm9raXFjVFMxaXFhL0hSV2prQm40SC9NQjhHQTFVZEl3UVlNQmFBRk9xM1FwQ2VESHRrZXR0VWZBTzZmRTZmMktGaE1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQW4rUkhJUGJ0TUVETmRUMWc4SC9SaXRBa1VkTGdBdDF0V0dXbmxqOWtuYnY0LzRHbFg3QzlwNDVlZlBPOS9hWkw2T1YxWFJLQmk2S210Qlc1SzdudVlFbk14LzVCcUJTYkxUN3JoZHVDNDlUQmVNYjlQSGRYc1RsU1ZOWWVmcjFkR2lkcjRqMHhWQlFMYjFya25EQWJkV0R6S2Z2bmF5S084RnJ3ZTdIeDg0M01HL3JKK2MwWHJ1VXZiZlZUQ0hMaUlXaE03b05EaEw4eG9iNnhVbzlLTEtjU0wrSXRZc08zLzlXYjhROUdqc3FMNEZYc0RjRzFTYVloN0twZnVNbU9peHF6SlpPMm5JaWNQWVJnMUkyU3VpVWZZTzcwdG1kSGNibCtrU1FtU1l0N3JxNHZpSUxnMkd4M2o5cklUdVdUamJhVWFTU1F4Z09tTVNIdXl6TUFDIiwiTUlJRFBqQ0NBaWFnQXdJQkFnSVVYemVpRURKRU9UdDE0RjVuMG82WmYvYkJ3aVV3RFFZSktvWklodmNOQVFFTkJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNWjYvVHhNOHJJVCtFYW9Qdkc4MW9udE1Pby8ybVEyUkJ3SkhTMFFaY3hWYU5YdmwxMkxVaEJaNUxtaUJTY0laZDFSbngxb2Q1ODVoKy9kaEs3aEVtN0pBQUxrS0t0czFmTzUzS0dOTFp1ano1aDN3R25jcjRoeUtGMEc3NGIvVTNLOWhFNW1HTkQ2enFZY2hDUkFIZnJZTVlSREY0WUwwWDRENW5HZHh2cHBBeTZua0VtdFdtTW53TzNpMFRBdWNzcmJFNDg1SHZHTTRyMFZwZ1ZkSnB2Z1FqaVRKQ1RJcStEMzVod3RUOFFESXYrbkd2cGN5aTV3Y0lmQ2t6eUNpbUp1a2hZeTZLb3FOTUtRRWRwTmlTT3ZXeURNVE10MWJ3Q3ZFenB3OTF1K21zVXQ0cmowZWZuTzlzMFpPd2R3TVJEbkg0eGdVbDVaTHdyclBrZkMxLzBDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01COEdBMVVkSXdRWU1CYUFGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFNd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkRRVUFBNElCQVFDM0lXL3NnQjlwWjhhcEpOanh1R29YK0ZrSUxrczB3TU5yZFhML2NvVXZzcmh6c3ZsNm1lUE1yYkdKQnlKMVhucXVCNXNnY1JFTkZ4ZFFGbWEzbWlvOFVwZjFvd00xWnJlWHJKMG1BREcyQnBscWJKbnhpeVlhK1IxMXJlSUZUV2VJaE1OY1pLc0RackZBeVB1RmpDV1NRdkptTldlOW1GUllGZ05oWEpLa1hJYjVIMVhnRURsd2llZFlSTTdWb2xCTmxsZDZwUkZLbFg4dXN0Nk9UTU9lQURsMnhORjBtMUxUaFNkZXVYdkR5QzFnOStJTGZ6M1M2T0lZZ2MzaXJvUmNGRDM1NGc3cktmdTY3cUZBdzlnQzR5aTB4QlRQclk5NXJoNC9IcWFVWUNBL0w4bGRSazZIN1hrMzVEK1dWcG1xMlNoL3hUNUhpRnVoZjR3SmIwYksiLCJNSUlEU0RDQ0FqQ2dBd0lCQWdJVVVjbU1YelJJRk9nR1RLMFRiM2dFdVpZWmtCSXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFEbTU1NWJXWTlXVyt0T1kwcklXSGxkaCthTmFub0NaQ0ZoN0drM1laclFtUFV3MGhrU0c2cVlIUXRQK2ZaeVMzM1ZFcnZnK0JRcW5tdW1nTmhmeEZya3dFWkVMZWlkQmNDOEM0QWc0bnFxaVBXcHpzdkkxN05jeFlsSW5MTkxGY1pZLytnT2lONlpPVGloTzUvdkJaTWJqOXJpYUFjcWxpWW1OR0pQZ1RjTUdhRUF5TXpFTU55Mm5tNkVwK3BqUDVhRjZnaTIxdC9VUUZzdUoxajJSai95bk0vU2RSdCtlY2FsNU9Zb3R4SGtGYkw5dnZ2MkEyT3Y1SVRaQ2x3NGJPUzlucHlwUWltT1o1UUFZeXRtWWFRcFdsL3BNWXo2elNqOFJxa1ZETkVKR3FOZlRLQTJpdkxZd1g2bFN0dE1QYXBnMEo4NGw5WDB2b1ZOL0ZwUzRWQ1ZBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlFnS0ZBaEc2UmFXK2hUeTUyZHhlVDhiQzk2SHpBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBWU16Z0xySkxJcjBPb3ZRbkFaclJJR3VhYmlIU1VLU21iTFJXcFJrV2VBdHNDaERFSHBYY0ovYmdETktZV29IcVE4eFJVakI0Q3llcFlldmMzWWxyRzhvN3pIeHBmVmNhb0w1U2V1Smt6SHhLbjRiVGFTcDkrTXZ3YW1ucDY0a1pNaU5iRkxrbmZQOWtZS29SSGtNV2hlUkoxVXNQMXo0U2Nta0NlSUxmc01zNnZxb3ZxaldDbEZzSnBCY3NsdVlIV0Y3YkJKMW40UndnK0FURW9wWTRJZ0d2Nlp2d2MrQTlyK0FUMmhxcG9Ta1lvQWwrQU5Zd2dzbE9mOXNKZTBWK1RBOVlZL1VsYUJtUFBUZDAvL3I5d3ZjZVBXWmtQaktvQUMvelVOaGZEYmg0TFY4R0hzM2x5WDJYb21ML0xOYzhKWXp5SWFERWhHUXZlb1BoaC90cjFnPT0iLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVRuYmJHSVIyTkh2enFJS0ZBZVF3RzFYQmlzMHdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFRWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPc1hqM2swNEJhbjRUWWR0WktxRC9PUEp4eUR5YVBtQ0JVRlVpYVpJZ1R0ZVpuajNYMjVEaGdwWlpYc0M0RDB5ZEljcmxBNndOVUluT1JML0w5ekJiVEVJTUFWTUdvNmc3VUtBbWIyTUY2QUhibmhZSmQ5ZWlrdXBWTldTaEhOWU5jNEdCZE8xWU42QWZVcXZKaEhiZTNWNFNOTVBtQlJFS0pQVno3VGh3Z21nZ1RlOFdzMkswL3dzcXYyd1NFN3BiQ0JzVVpoSVg1MWJaTTNwcUR3SlBUbVJGRXZ0MC82dEc1ZU84RjNqMTRPWHFmRWhtam4xVnZ4S0RZUU9MWkF4Q3d3Z0MwUDRDZGZXdjN5OFBTUjhJMzU0aE8xWStHek5qdklxWDM4TktMeXd1SVlIRmVyT3hObHhFTUJ2RmhZQnVSdVlBa2tnVWFQcU42VUJoc0lMcnNDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNDb1JIaGl5Tm5iblhSV0lMNlpCWG9CWDlZVE1COEdBMVVkSXdRWU1CYUFGQ0FvVUNFYnBGcGI2RlBMblozRjVQeHNMM29mTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFDUUZhZkpJMS81V2c5Q0VFaW1FMVJQNTRSZ1F3VE5UT09Rc0xBQ1RlK3JJdGxGUXpDOVpEaHJWODI4eVg3anp5K0FBc3AzaXpLN1QxdGgyZGw3bSt0dTBzdzJQYS9vbGMwMm50NlB5SXczNDhnYUh6aEkxKzBLRTQ1cXh2RkRlTDJsTXhiUGZDWXZ5RUVhWXpqaVFFTFU1OTUxcFhHV3lLTWEvNGZMdE8rWktPWGhNdVZlcTRyWERQSTU0VzZKSE9pQWFpS2Rpdys1ZTNjMmt0L2pGSVF0TTZ2TVhnOUxORnpkakVUTnQyMFZYOVFldlJwRlpmdWNNRzl3Q2FRRG9GbFB6cFRNSktoUGV2L2ltSm1aWWhLZnIwbExjZW10cWpJeExBb3FaZE9ZZkhCZzYrdkFjZFBJL2lhdUdwVUF2N1grVUtObUR3aloyQmFINHNMd2hCMm0iLCJNSUlEU0RDQ0FqQ2dBd0lCQWdJVURxRVJ3KzRSbkdTZ2d4Z1Vld0pGRVBEUlozWXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFESTdYbkgrWnZEd01DUVU4TThaZVY1cXNjdWJsdlZZYWFSdDNZYmF4bjlnb2RMeDVzd0gwbFhyZGdqaDVoN0ZwVmdDZ1lZWDdFNGJsMXZielVMZW1yTVdUOE4zV01HVWU4UUFKYkJlaW9WN1cvRStoVFpQLzBTS0pWYTNld0tCbzZVTGVNbmZRWkRyVk9SQWs4d1RMcTJ2NUxsajV2TWo3SnRPb3RLYTlKN25IUzhrTG16WFhTYWowU3dFUGg1T0FaVVROVjR6czFidm9UQVFRV3JMNC9KOVF1S3Q2V0NGRTVuVU5pUlFjRWJWRjhtbHFLMmJ4Mno2b2tWbHR5RFZMQ3hZYnBVVEVMdlkxdXNSM0RUR1BVb0lDbE9tNGNycHduRFJMVkh2alllUEdCQi8vcEV5enhBL2djU2N4andhSDFaVXc5Ym5TYkh5dXJLcWJUYTFLdmpBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlRxdDBLUW5neDdaSHJiVkh3RHVueE9uOWloWVRBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBcVFhQ1dNeFRHcVZWWDdTazdra0ptVXVlVFNZS3VVNitLQkJTZ3dJUm5sdzlLN0hlMUlweFowaGR3cFBOaWtLam1jeUZnRlB6aEltd0hKZ3h4dVQ5MFB3M3ZZT2RjSkpOa3REZzM1UFhPZnpTbjE1Y0ZBeDFSTzBtUFRtSWI4ZFhpRVdPcHpvWHZkd1hETTQxWmFDRFlNVDd3NElRdE15dkU3eFVCWnEyYmp0QW5xL05EVUE3YmU0SDhIM2lwQysvK05LbFVyY1VoK2o0OEs2N1dJMHUxbTZGZVF1ZUJBN24wNmo4MjVycURxc2FMczlUYjdLQUhBdzhQbXJXYU5QRzJraktlcnhQRWZlY2l2bEZhd3AyUldadnhyVnRuM1RWMlNCeHlDSkNrWHNORDA1ZENFclZIU0pJcytCZHRUVk5ZOUF3dHlQbW55YjB2NG1TVHp2V2R3PT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZkNBWUFBQUNHVnMrTUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFIWVlBQUIyR0FWMmlFNEVBQUFiTlNVUkJWRmhIcFZkN1ROVjFGRC8zZDU5d2VRU0lnUzlBUUFYY0ZMQVFaaTlmcGVWejF0WS9XVFpyNVd4cGM3VzVrbkxhNWpJM1o4NXNyUzJuTTJzanRXd1pTN0lVSDRINHhDbkVReDREQVpGNzRWN3VzODg1djkvbEluQnZWSi9CNFB2OW51LzVudS81bnZNNTU2ZnpBL1F2MEhiL0lyWDNWRktQbzQ1Y25tNGluVUlXWXdMRlJtWlFVdXdqRkcvTjFpUkhoMUVaME5SVlJ1ZHF0MUJkKzJuU0t5Uy9PaHlzMCtsazNlLzNrUTlxdkQ0WlV0YTRWVlNVdVkwZWlweWlUaEFmb2NvT1JWZ0R1dXczcUtSaUFkM3JiY0V0alRqWUlvZjZXYUhzQ216VlBXQ014K2NnaDh0THFXTUthTVdzVWpMcW8yUnRKSVEwb096bWVycFF1NGVzWmdzT05rR3hIN2Qwa2R2VFQxN3M0T01VN1ZJOFpoamdHYU0rQXE5aUVOdThQaWYxdWR6MDdNd3ZLV2Y4R2xWb0NFWTA0UEM1V2RUYVhZRmJSOHZOdkw1KzNLZ2ZiNXhOTXlhOVJhbUppeW5hTWxHVFZ0RmxyNmJhOXUrcHFuRVg0dU11UlJnalNZRWhyTjd1dEZGZTZscWFsN05ma3c1aW1BR0h5blBwYms4Vm1ZMHhzdG5wdGxGQ1ZDWXR6VHVCTjgzUXBNTGpUdGV2ZFB6U1VuSjdlOG1ranhaMzlmWGJLRGZsZFpxYnZVK1RVZ0duQlZGNmZRMmlQSGc0VzE2VVdVd3Z6YmsxNnNNWkUrUG4wcHZ6N0pTZXVBeWVzOGxjcENtYUt1by9wK3FXcjJVY3dJQUhXcnZQMFlFemhYQXRMQWJzc0hocDdpR2FtdnlpalA4cnlxclhVV1g5WG9vd3h5QXVmTkJycDQzUE9CRlhabGtmOE1EUmlxY3B5b3dBd3B1ejJ4K2ZXdnovRHRkZTlzbXN6eWd0Y1I2QzF3YmR6Qmw2T2xxNVdOWVk0b0dhdGhKTXJrVEV4MGpBUlNIQVZzKzVyWWtRTlhiK1FnZlBMc1E2Z1h5SW5zcmVRZm1wbTdSVkZZZkw4Nm4xZmlVT2tZdlNoa1VQeHZidWt6b3k2SzFpaE0xaG8zWHpXNkV2U2ZYQStkcGlXR2FXZCtkb1h6THptR3dLWUZMQ0FzUkFsUEJBaE1sQ0ZYVTd0QlVWUHI4SGdWY0pIV3ErRjAwcGxyK0RNVGRyUDR6dnhZMTFrTk1oeFQrU2VUR2crZDRWNUxRSml0eVVHSk5COFZGWnNqZ1lCWk0vSUkvWENUa2owcXlET3BGMkFWUTE3Q0lqVXAvRG5UMVVrTDVGNWdkaitzUzF3ZzFnRTNnaWdtNjBmQ1h6U25QWGJ5QVBiSVh2K0lEcEUxNlRoYUhJUzlza3lobG1NRTVGM2NmcUFLaHEyQzBFNVBIMWdZYVhhTFBEa1pHMEhESk9uS1dIcDUxSTB6NVNPdXg4ZTFXQXVaemRIUXJUa3A4VG1qWG9JK2xhMHdHWnN6dWJxYk8zaWZRNkEvVzd2VlNZc1YzbVIwSkt3a0tjNFdIaUJrbVI4STNDQ2dJODdvT0w0cXpUNVArUlVKQmVqRU9nQVBLOGhZUHphdE0rZUlUcDJJTzl5VFFtZXJvbVBSeHgxcXhBY3NpbGUvdWJTZUViY1dRR1lFQ2doY0xZMkh5S2pvZ2pIMjVoTXBqcFV2MU91Z2xpNGVoMmVSdzBPMzJiSmpreXVDZ056ZzB2emxZTVNpU3MwdW9vNE1HN2hNT2pDRWFYMXlGRTBuU3ZqQnp1VG5FcEs4Nlo4SW9xRkFJdWJ3OGtnOUFyRWFSRVdTWkkrakg0WGJwNmc5RTlFbkpUM29hUnpETitNVUpCUURIbjU2YThvVW1FQnVzT3hCcy9ONSt0SkViUGtBRkRqOFVHdk9zL0lXdmNTZ2xHQmh2UzcvRlRZZnBXR1lkRFk4ZlBBeFdTQTM1c1RDNHA0K0xtNEFhcUlvUGVRdGZ1Zks2SmgwWmh4bGJzVVhPU21YTmlmRDVaVEFreURvZmJiY2NseG5BOFdOQXF4Q2JSTnlraFh4UXBhRHc2N2ZYVVlic2lHMEtodHYyb2VJdmg4cmhRTVlPY0VBcVhHL2VJK3puZ09jNXl4cjhxODJJQU0xYy9GTEZPcGxxdTVlRlFYck1aekdjVkNqWWJMV0c1STRCVDFldVJybGJ4dE5PdE1pdERERWhMWElJeW5BQXZ1T0VXRTNYM05kQWZ0OTRWZ2FHNDJYSVF0MFpYNlBlQ0UvcVFGZTlySzZIeDdZVTUwS3ZIN2ZXNGZTK3E3S0tCSnhzZ2dCWDVwU0FHaDFqSXJWaDV6UTZ3M1JmYWFoQlhtL2FDYkNaVGpDVUZVVHlXWnFXOXA2Mk1qSlBYVnFPclBnTU80TnY3NEdrZitvd2Z0TlZCRFFuakZKcUhTdzE3cFh2aFdXNUtacWUvUTQ5Ti9VU1RDQVZXb1FYRklIQkhYWGUzRlByVURzdUdEbXRGL2hIS1RIcGVreGhpQU9QSStTSnE2UzZIRjRJOVlXemtCSlRvNDZpVU16V3A4UGlyL1JpZHVMeEtZc1Nrc1Y4dkxsT1F2aEdYMllsUjBPQmhCakMrdS9nRWN2WTBBcEs3WWs0MU54alBTUW5XRkhURjY2VXJqZ2V2QjhDdTVhK2wydllTUlB0dVZEbzczaGhkTVNIblVYN3RUanNWWkd4QWwvV3B0aU9JRVExZ25MMjltWDYvdFIxdG1sa1lqOFc0WCtDU2pXY1VER1kxTnBTL0M3aFNLcWlNTE0vbDJRbVNXWjczRGR6K2dpbzhCQ0VOWVBRNDZxbmt6d1hVYnF2Qmt4alVRc1dmWkZnYnVvM3JBZit3TjdqT085MCt5bng0UGkzTCswbllMMVNjaERVZ0FQNGdQVi83SWQxcSsxSFNobXVHa0lxV1JQZ3l4TUZxUDhIZmpUbmpYd1k1YlFmYkpjdDZPSXpLZ01Ib3RGL0hlMWVnc2F4SFNxRzZ3ZmRtUTV4OE55VEZGcUJjcDJpU293SFIzeWs1KzM2aEY3dlhBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMV9QUkUiLCJGSURPXzJfMSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJsYXJnZUJsb2JLZXkiLCJjcmVkQmxvYiIsIm1pblBpbkxlbmd0aCJdLCJhYWd1aWQiOiI5ZWI3ZWFiYzlkYjU0OWExYjZjMzU1NWE4MDIwOTNmNCIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImxhcmdlQmxvYnMiOnRydWUsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjp0cnVlLCJhbHdheXNVdiI6ZmFsc2V9LCJtYXhNc2dTaXplIjoxNTM2LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjgsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4LCJ0cmFuc3BvcnRzIjpbIm5mYyIsInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi04fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotMzV9XSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5Ijo0MDk2LCJtaW5QSU5MZW5ndGgiOjQsImZpcm13YXJlVmVyc2lvbiI6MzI5NDc2LCJtYXhDcmVkQmxvYkxlbmd0aCI6MzIsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjoxLCJyZW1haW5pbmdEaXNjb3ZlcmFibGVDcmVkZW50aWFscyI6MTAwfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDYtMjEiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2LCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ill1YmlLZXkgNSBTZXJpZXMgd2l0aCBORkMgS1ZaUjU3IiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNTA2MjEwMDMiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wNi0yMSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzZ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDYtMTkifSx7ImFhZ3VpZCI6IjRkNDExOTBjLTdiZWItNGE4NC04MDE4LWFkZjI2NWE2MzUyZCIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiNGQ0MTE5MGMtN2JlYi00YTg0LTgwMTgtYWRmMjY1YTYzNTJkIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlRoYWxlcyBJRFByaW1lIEZJRE8gQmlvIn0sImRlc2NyaXB0aW9uIjoiVGhhbGVzIElEUHJpbWUgRklETyBCaW8iLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MiwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9LHsibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MTAsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6MCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjowLCJibG9ja1Nsb3dkb3duIjowfX0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDNlRDQ0FkR2dBd0lCQWdJSkFKYlR5cnUxWC9JUE1BMEdDU3FHU0liM0RRRUJDd1VBTUNNeElUQWZCZ05WQkFNTUdFZGxiV0ZzZEc4Z1RYVnNkR2xCY0hBZ1JrbEVUeUJEUVRBZUZ3MHhPREEyTVRJeE5EUTFOVEJhRncweU9EQTJNRGt4TkRRMU5UQmFNQ014SVRBZkJnTlZCQU1NR0VkbGJXRnNkRzhnVFhWc2RHbEJjSEFnUmtsRVR5QkRRVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNVmpLSFdwYkQ3VFNsTXhvY2pUbDZuSWY3eDMyUG1zUTl6R3VMR0dxQTBVUVpvSXEzWEx6TDZMWVV2SjVBNWcwdXlGR2xsSEVmR0FLckVhQ1E4RlZ2UFMvVWgwRnlmeldoUkF6aVRTaWpqTUlJVmpqalV2OW05dkZtY1hTY2dIaWc3T2R6ODg1OFYwa3JOSDk5cUdtM3dqZ2FPZXJUV210K2pYQ1VmbjAxSWtUUHd4RzJIbGdFZDQ1ak5MU1Y3Vm9vbCtLZThFMmtpNGxFa1RlSHpib3VsUjVHVWJwM25NaTdFNDdWTVFhM2JOd256V0Jic2FCU1NRaExrM201SGFLaGh4YTZ3SkRLNDdOaU1Da0NrZElIdVdTUUxWQWZtODVVQU9OdEVPUHdpME91SzNxYmU4eUtPRkdmMEtoQjVNTWVBeW03TVYvTTRXMGE0OW9nUEQ5cE1DQXdFQUFhTWdNQjR3REFZRFZSMFRCQVV3QXdFQi96QU9CZ05WSFE4QkFmOEVCQU1DQW9Rd0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFKV3o1eExNazVXTlliQWI2eU94RUNCb1oyV2VCL3FsNFZKM08vMy90TnN4T1luekxlV281NDB6UWg5ckFtYXh6N2V1bUJsc2tNcTR5R1BTTlhCOXljV0dIZ2tjQ2VTek4yd3Y4Q0l6REJzMm9CWmpUTms2NUxCWkRzc1RPQnRNVy8rdVRGSFFmYnVPM0lTTGhJMERYZlJFaTlORE0zamZrMTF4SGNzZmgyUk1WK1FkTmZ3VmFaWnJDcStvdUcrRXZrdjdLcXErb3l1MFZGTS90ejY4VEdsNnlsaFBGUjFxaDl3dHRwVmpBT09DRVFDTHFQMmRQMjhsd1lCeUNxSFFxVkh3YnVqdi9MWmpabktXM0xZbmRaaXhQUFNSQ0pzc0REd0p2aC9mNm5UeGc5WkUrL0pjWXJlNUNhSThuelZIYVNPQ2pOSjdGelVMRzY0SmlXT3ZRNTA9IiwiTUlJRGRUQ0NBbDJnQXdJQkFnSUpBSUNVVHZrZ3RqNUNNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1GRXhDekFKQmdOVkJBWVRBa1pTTVF3d0NnWURWUVFLREFORVNWTXhDekFKQmdOVkJBc01Ba05UTVNjd0pRWURWUVFEREI1SFpXMWhiSFJ2SUUxMWJIUnBRWEJ3SUVaSlJFOGdVM1ZpWTJFZ1EwRXdIaGNOTWpBd056QTNNVFF6TnpFNFdoY05NekF3TnpBMU1UUXpOekU0V2pCUk1Rc3dDUVlEVlFRR0V3SkdVakVNTUFvR0ExVUVDZ3dEUkVsVE1Rc3dDUVlEVlFRTERBSkRVekVuTUNVR0ExVUVBd3dlUjJWdFlXeDBieUJOZFd4MGFVRndjQ0JHU1VSUElGTjFZbU5oSUVOQk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBdkFLT2VxQzUvcDBEMWlzQ1lLUUpsVlVPckI2STdETG9jdW5FL1JtOGR1R1RieXhRaHQzQ2JGVlR2M04yTHAyZmJqeGxJKzNzT1NHazMzRlRZa1RxeGNkSklySjdTc2tCY1VTTnJmS09hUVQvNktRY1A0Q203Vis2NTVUcStUV3h5eFdRaER5Z3QxNXFvUDdNdUs2YlQ5U3dwQ2pwZktoYU1TbXlRYU1vVWNSQWJMcWR6QkNhYzBoekIrWmUrZ3FKbG5XVjlVYVNJMnJGc1Z1SDRaRTBjUk8rTU9wYUxnTS9zMjQ4bkdHSHAyMmV3U1FmYm5QYUJiYjhpcXlBUCtjdTUyR0xzVXBLUkplYkUrUjYrUE1ROUpDZFdlUVpSM0RrZlNpZGt2M21jYjRqcTFpSXRhK01xS2hSbndyZlhoOTExS1dMbllBbDlFTkNoTFgwYzZTajFRSURBUUFCbzFBd1RqQWRCZ05WSFE0RUZnUVVXTHZoUkJVUG44dUxJZjY4K2d2L05aSXdHU0l3SHdZRFZSMGpCQmd3Rm9BVVdMdmhSQlVQbjh1TElmNjgrZ3YvTlpJd0dTSXdEQVlEVlIwVEJBVXdBd0VCL3pBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQUZMckRoYWVnZUtIeFlqSDNFUDN2VUJLaG56TTIwNkFTeGdlWUNPMkVjOXBPbFlKYWVxRkUrc1VhbVVWL3B3akRscU5hU2dGZ3k3VHdlWWt2T21NbjRxU2NzSHF2SjN6R09BaWFmd2FoMXZVSGZDbFhSOCtheE8yaUdPVUYwSktyWjlZWWpiQWE1LzRIQ2x2N2pGUE9kTVdUT1F5bmdvaUhBczNqa3VZanBDTEZsQjRWT2kzZDF3akExcG5UZEJLa0FiN3Q4blR2dysvWGJGdmNRYTczVkg3c2p2b0JxRDNmZE1mUmN1VnE0cVVadFpUNmNHYWdUSEQ2MVR0cWg5b01DWlhjRGJSMVBHWm5OYnF5Y3NXUERJSzBucG1LMy8zbGZWOGMrWnNyeTZlMTcwbWZKTVpwN084bTZDU3o2L1ZMSyt5REpkNzg0MXdwbWVLVGY2SW5aQT09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQVF3QUFBQWdDQVlBQUFEbmxVWnFBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRW5RQUFCSjBBZDVtSDNnQUFBQVpkRVZZZEZOdlpuUjNZWEpsQUhCaGFXNTBMbTVsZENBMExqQXVNakh4SUdtVkFBQUsxRWxFUVZSNFh1MWREWEFjWlJtK05PQWZLb2c2V08wUWNyZVgzTzcxUjQxb0hkU3FxREFPZzMrY1lFWEJvbFhSVEVuMjIwdGFLVGM2NG1nQnF6QmlFVVZwQmRxaXd3aHFTZElTMnVwWVNndlJ0cFRTY2tsald6SGFnanBTUmRyNHZMdHZqcnZrMjd2ZHZkMUxqbjdQekROM3QvZCs3L3QrZjgvKzc4YUswTkRhYXIycU9kWFpvcVd5SDlSMGEwRmN0NjdXZEhHVFpvalZDY1BxU2VqVzFvUXVIc095L2VCVHNEbU0vNTRaVDlqK0xXR0lnN0RmQi9zQmNEUHNmNFhmUDhYM2IydUcxWkhRelU4bVV1S2R5V1RIbTVxYWNpL2pIQUtCeWlmMGJCcitMd2FYSVBZUGtNZHFmTDhYZFdwbHMxQUEzMS9Rak93OThMOFM5YjhCWElSMituRGM2RG96bHNrMHNsbmtRTXhrUEdYTzlFSnRWbllHRjRzVXlWbmQ4VVRhZXA4YncrNkxha0JqNWl6ZGJOSlMxcnhFV255V3hnMzZFbVBkV29QUERlamY3ZUFUR01zSGFEelR1QzZoYmowTi9wWG1Bc3J1Z3MwV0xQOE51QkpqWkptV0VsY2wwOW1QSjFKbVcwdEw1K3VpSEJ1R2tYc2xqWDg3bmk0RXpWbms5QXZrc1FuNTdFU2RockI4Qk11UGpPV1AvLzRPSHNSL2U3RDhZZFRsZnRSaEZmZ2RMRzlIdTF3QWZ6cjU1akFPa2lRS2h2VmJHQjZDMC8vaSsyaU5lUng4RmdudlJmeGZhaW56U2s3TkUwaUlVUGJmNDN3V21OVE5kN0JwS0VBN0xaZkZBWTl6cDN5WlRTTURpUVZpL1UrU2c1UVlBSWZPbUcyZXdzVWpBL3JoVzdMNEJlcm1qOWgwVW9CMk9CK1RaVFc0Qi9rOE95Ry95Q2lPb1cxSVlINkg4WFB6OUxiY0t6aWxRR2hwTVp2aFp5SEd3RzNnNDJCazg1WjhvOTBHOFgwTmlTczFJdjJRR2s4S2RXc3p0NHNuSVA4UnFSOW1EUVhESWRaU2JCb1owSWwzUzJPWFpYWXBGNDhNVTE0d25LMWJlVzQxcEwzRkVRQ0psUFZXdERHMmZ1eVZyTlIzdEJUZFNqQjhZcklGb3lWdG5vMk9DekJneEROQkI2cFhLTUh3eGlEOWdLM0tjNlBja3ZCR0pSaStNY21DMFlENGZkSzRYb2g5Vy9ZVENaUmdlS052d2Noa0d0RzJlMlcrYWtzbEdMNHhtWUpCYXhscFRJK2tOUlFkbUdSM29VTUpoamY2RlF3NmNDcnpVM3RDTUxEV3VRc2QzUitBdzNLbkJRNUt5bmpoamR4T25uRGlDRVp1R2pyc1lXbE1KdHBpV1VLM0JtVC9GZkV1ZGhnNlVQZTZGZ3owYlI2ZmE2TW1uWTNrbER3aGFZakxVVTZlczI3dDBnenptN1ZnVXU5NkQ2ZmtIeENhNjJVVkdDTXE4ZzAyalJRbmltQm9SdllpYVR3bTJudGZXOXZDazdXMGRZSHMvd0oxNjNrNmVNWnVRMFc5Q3diRzlLMXNPcVdBdklVMFg1dGlEWnROYlNqQmNHRUVndEhXZHN2SjhFMm5BdVV4aWJwNWhXTTkyb0RmMnliOFgwS3gzckVORjBvd29nSG0waEpwdmphVllQakNpU0FZaWJUMWVXa3NKaWJDay9QbTVVNWljOHJ4UXBsZE1SUHA3SGxzSGhxVVlFUURKUmdoNHNVdUdIU1JEK3BJVitUSjR4SDFMRzlkakNIVGlNbFI0VmlHMkU3SFJiaEFLRkNDRVEyVVlJU0lGN3Rnb0oyejBqaE10SE9lamwyd2VRRlkvbEdaZlNuRmZEWVBCVW93b2tIQ01CZEw4N1dwQk1NWEtncUdJUzV2VHB0bmgwWFUrMDVabkFKREZBekQ2RGdkL3A2V3htSEdEZkZGTmgrSDBRYjB3YU95TW1PRStPVU5JL2NTTGxBMTZsMHcwRjY3NDdxNHBScEdjZHFhN2t1UjVVdEVINDVnRG13S2kvRFpqOC83SUVTMzRyT3plYWFZeldsVWgzb1JqSm96Uk1Hb09BRU5hMGkyZFRHR2VFcDhURkptUER2WXZHclV1MkNFUWJxaGtzT0ZCc3lsaTJXeGFzVGo2TmQxMnBzWHY1N1RDUVlsR0M0TVNUQmFXNjAzb28xZGI2cXpxVnRmWW5NNTZBcEJ3OW94b1Z3Uk1ZbEdOSzM5MVZ5aUtpakJpRVl3bWxQZExiSll0U1RhN3FIaUErdStvUVREaFNFSkJ0cHZoZFQvR0hXeHY5eld4UmkwdFBpRXRId0p4YlZzWGhXVVlFUWpHSFJ3R3VPaDBnVjVrVE9lTWkvaGhQeERDWVlMUXhDTXMxcXRWZ3p1OHJldnB5eVBqd0h3c3BWaC9TdVZXaktkQ3dTR0VveW9CQU81cDgzM29wK2VrOFdzRmRGK3dhOFNWb0xod2hBRUEzN1dUUEJiUkhUY0FleEd2SlROSGZRTU5jZjZCcytQOWVibnhmcWVQSldYMmtDWnpIZ2ZFeGpDR1FJbEdORUpCc0YrRUpFdWRzdmkxb2JpVDV5S2Y5U05ZT2pXWmpUeWZhSFJ1ZDlBSG90WXBXQTROeHFKWTFMZlROVDVLMndlaTYwZk1pQVVENEtqQmZibWo4YjY4c3RqMnc3YUQycWhmVS8weHk2WnJ6SFMycXVscFRObCt3eUl1aGNNakJVNjYxUU5tMmN1UG9QRFJZVFJCanBiUjJNQU9WOUhaek9ROTgvdy9mWXdpUEh0ZmplMGJ2MkZrL0NQZWhHTU9yc09vL0x0NjdvMVhEZ1Z1aUUvQndMeGp4S3hLT1hHMk02ZHRpMzZ3OE9SZG5HUDdUY2drRnVkQzhiVXZBNmpsa2lrTzgrVHRnMklNWFNZemZ4RENZWUxxeEFNTDdldm83N3R0bkYvLzBuWWt0Z2hFWWx4SExxYXpKMnRqRXFiczlpeVNXWG4ydjREUUFsRy9hT3NZQmpXQVRiekR5VVlMZ3dzR0xscEtMdFY2cE5KSFZaNFlITGYvbmZKQldJQ2gySGRRRVhpNmV3bE1yOGxkSjVIWXR2N2hSS00ra2M1d1VENzdHVXovMUNDNGNLQWd1SHA5R2RLWE1YbUVJeDh1MFFjWFBqWWErMHltVXdqMnV0eHFlOGlvbzRYMnZZK29RU2ovbEZobCtTUGJPWWZTakJjR0VBdzZIb0s3QTZVbmNpbzU4R21wc3RlZUIxRDc5Qlg1ZUlnNGYzRHAzT3BHT0xNbC9rZnh4Mnh6RnJmajhWWGdsSC9xTEJMc29YTi9FTUpoZ3NEQ0VZaVZmNzJkV2JwSmR3OSs4NlJpc040OWc3dWgzVmhGNFBGNlFtSi8xTHExZ0l1NGhtVkJBTVQ5dTd4NzB3SmcvVFlmVTZoTEpSZ1ZFYUZYWklIMk13L2xHQzQwS2Rneko1dG5nS2ZCNlMrbVBqLzBJd1pIUy9uSWc1R1J4c2hCZ05Ta1NqbFlpNVJBUHJ1VWxtY1ltSnkvWG5HM0hFeEs2RGlGa1pFeEJqWXlDbVVSU1hCUUR1UG9BNWJvMmJTeUw2ZFUvSUUzaXFVbmdZTm0yZ0QxN04wK0c4VnArUWZTakJjNkZNdzRycGxTZjBVRVRGTk5pOUZ6L0RNV0cvK2lFUWtIUGJtTjhTMmJadDQrYmh6ajBuNUozaUJkRnMxbC9BRTFMMnVCYU5XVE9yaUE1eVNKeUR2NzhyODFKeWVyeTZXUUFtR0MzMElSdE9jM0dsb3A4TlNQMlBVeFZObDEvVHI4cTJ4dnZ4NjhQa2lzZmduZmw4ZjZ4OTBmUVVsNG41R0dxK1l1amh5NXF6dTEzQ1JpbENDNFkxMUtSajBXa2d0Ri93bVJTVVlMdlFoR0Y0bUdBYUxZUFB5MkRnMFBkWXo5SDdzcHN5TjlReFVmQzBpWGZ5RlB0b25pMWxNR3F4Y3BDS1VZSGhqM1FrR3hDS3BXKy9tZElKQkNZWUxQUW9HdllRYTl1WGY3MWxwNjZKS2xIdDgvUXNVUiswWFRYdUFFZ3h2ckEvQm9MZnIyUWZIci9HemxlbUtLU01ZdW5rSFRTekVsTDQrc0ZhQ2dmbytCKzdXak96bjJMUXNuTmNHaUQxVVR1YlBvZG5GNXBHQXpwZ2d2dXRXQnVyNkg3dE91cmlVaTVRRlhTV0tNdC9IQk41RWF5WFVyK3c5TWNFcGp2R0s0dmZJYndWZHc4SXBsQVdOQlpTNUR2V2hONVhuNGVkb3FkOG9pRnl4MndrK2l1LzBJdWlsOUt3VFRza1Q0bWx4RHRyelJtNVhqUFVvMnBYZTZHNDlnanh2dytmQ2hOR2hjZmh3UUM5amFUTEVHOXhvR0ZlV3ZpWStVdVNtMlErY29YZHk2TllpTk93eVZQckhHQmgzSm96dVVDc2VUNW1YUWZGL2poZy94T2ZYTmQyOGdqbzBhSDNwTEFsTk5HZHRMNVlpNTV2UWdiZWo0KzZnLzlnc01xQU9IM0hhU2Z3RWJYY0R2bWVUaHZVcFRlOTZ5NFF6TTc2UW05WTBaOUZwZFBjbTZ2TnBzQXQ5c3R4cE8rdlg0RWJFMjBvVENjc0dTb25sK0IvZjZXYS9WY1Y1MGFTUHg3dE9EZUVCeGcxMHh5K2Rrb1hnZkFneEZpRGUxOUFPMzBNL3JFUU85eUxtQTRpL0JiKzNsK2Jua1BJSE40UHJVTCsxK0Z3QjIydmhveDFpZjFHODFYcGJ2QTI1WmpLK3IybHhSMjRhMWQ4UlB6RWZ1d29XY3NFV2lKTXpZaitJM3crVnRLc2hIZ0gvQVBaU25xalR6Zmk4eGg2N3VuVXVQZHJBMjhOeFlySC9BejN0STRqNStUT0xBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMSIsIkZJRE9fMl8xX1BSRSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiNGQ0MTE5MGM3YmViNGE4NDgwMThhZGYyNjVhNjM1MmQiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsInV2IjpmYWxzZSwicGluVXZBdXRoVG9rZW4iOnRydWUsIm5vTWNHYVBlcm1pc3Npb25zV2l0aENsaWVudFBpbiI6ZmFsc2UsImJpb0Vucm9sbCI6ZmFsc2UsInVzZXJWZXJpZmljYXRpb25NZ210UHJldmlldyI6dHJ1ZSwidXZCaW9FbnJvbGwiOnRydWUsImNyZWRNZ210Ijp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOnRydWV9LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxLDJdLCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjk2LCJ0cmFuc3BvcnRzIjpbIm5mYyJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XSwicHJlZmVycmVkUGxhdGZvcm1VdkF0dGVtcHRzIjozLCJ1dk1vZGFsaXR5IjoyLCJjZXJ0aWZpY2F0aW9ucyI6e30sInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjozMn19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTA4LTA2IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiVGhhbGVzIElEUHJpbWUgRklETyBCaW8iLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI0MDgwNjAwMiIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIzLTEyLTI4IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiVGhhbGVzIElEUHJpbWUgRklETyBCaW8iLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDIzMTIyODAwMiIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIzLTEyLTI4IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDctMjgifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyJmNGI2NGE2OGMzMzRlOTAxYjhlMjNjNmU2NmU2ODY2YzMxOTMxZjVkIiwiZDVkYjRkZDQ4ZmU0NmFmZDhhZjhmMWY3Y2ZiZGVlNjE2NDBiYmJjYyIsIjM5ZDExY2IxZDZkYThmNjQ2ZjU4NGVlYTE4NDEzM2EwM2Q4NWEyY2MiLCI1NTQ2NGQ1YmVhODRlNzA3MzA3NGIyMWQxMjA0OTM0MzU4YzdkYjRkIl0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbImY0YjY0YTY4YzMzNGU5MDFiOGUyM2M2ZTY2ZTY4NjZjMzE5MzFmNWQiLCJkNWRiNGRkNDhmZTQ2YWZkOGFmOGYxZjdjZmJkZWU2MTY0MGJiYmNjIiwiMzlkMTFjYjFkNmRhOGY2NDZmNTg0ZWVhMTg0MTMzYTAzZDg1YTJjYyIsIjU1NDY0ZDViZWE4NGU3MDczMDc0YjIxZDEyMDQ5MzQzNThjN2RiNGQiXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkZlaXRpYW4gZVBhc3MgRklETy1ORkMgU2VjdXJpdHkgS2V5In0sImRlc2NyaXB0aW9uIjoiRmVpdGlhbiBlUGFzcyBGSURPLU5GQyBTZWN1cml0eSBLZXkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCIsInJlbW90ZV9oYW5kbGUiXSwiaXNLZXlSZXN0cmljdGVkIjp0cnVlLCJpc0ZyZXNoVXNlclZlcmlmaWNhdGlvblJlcXVpcmVkIjp0cnVlLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlCZmpDQ0FTV2dBd0lCQWdJQkFUQUtCZ2dxaGtqT1BRUURBakFYTVJVd0V3WURWUVFEREF4R1ZDQkdTVVJQSURBeU1EQXdJQmNOTVRZd05UQXhNREF3TURBd1doZ1BNakExTURBMU1ERXdNREF3TURCYU1CY3hGVEFUQmdOVkJBTU1ERVpVSUVaSlJFOGdNREl3TURCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQk5CbXJScVZPeHp0VEpWTjE5dnRkcWNMN3RLUWVvbDJubk0yL3lZZ3Zrc1pucjUwU0tiVmdJRWt6SFFWT3U4MExWRUUzbFZoZU8xSGpnZ3hBbFQ2bzRXallEQmVNQjBHQTFVZERnUVdCQlJKRldRdDFidkczak02WGdtVi9JY2pOdE8vQ3pBZkJnTlZIU01FR0RBV2dCUkpGV1F0MWJ2RzNqTTZYZ21WL0ljak50Ty9DekFNQmdOVkhSTUVCVEFEQVFIL01BNEdBMVVkRHdFQi93UUVBd0lCQmpBS0JnZ3Foa2pPUFFRREFnTkhBREJFQWlBd2ZQcWdJV0lVQitRQkJhVkdzZEh5MHM1Uk14bGt6cFNYL3pTeVRabVVwUUlnQjJ3SjZuWlJNOG9YL25BNDNSaDZTSm92TTJYd0NDSC8vK0xpckJBYkIwTT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBRkFBQUFBVUNBTUFBQUF0QmtybEFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFCSFpwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFBRHcvZUhCaFkydGxkQ0JpWldkcGJqMGk3N3UvSWlCcFpEMGlWelZOTUUxd1EyVm9hVWg2Y21WVGVrNVVZM3ByWXpsa0lqOCtJRHg0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJa0ZrYjJKbElGaE5VQ0JEYjNKbElEVXVOaTFqTURFMElEYzVMakUxTmpjNU55d2dNakF4TkM4d09DOHlNQzB3T1RvMU16b3dNaUFnSUNBZ0lDQWdJajRnUEhKa1pqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWo0Z1BISmtaanBFWlhOamNtbHdkR2x2YmlCeVpHWTZZV0p2ZFhROUlpSWdlRzFzYm5NNmVHMXdQU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2SWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhodGJHNXpPbkJvYjNSdmMyaHZjRDBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5d2FHOTBiM05vYjNBdk1TNHdMeUlnZUcxc2JuTTZlRzF3VFUwOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXRiUzhpSUhodGJHNXpPbk4wVW1WbVBTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZjMVI1Y0dVdlVtVnpiM1Z5WTJWU1pXWWpJaUI0YlhBNlEzSmxZWFJ2Y2xSdmIydzlJa0ZrYjJKbElGQm9iM1J2YzJodmNDQkRReUF5TURFMElDaE5ZV05wYm5SdmMyZ3BJaUI0YlhBNlEzSmxZWFJsUkdGMFpUMGlNakF4TmkweE1pMHpNRlF4TkRvek16b3dPQ3N3T0Rvd01DSWdlRzF3T2sxdlpHbG1lVVJoZEdVOUlqSXdNVFl0TVRJdE16QlVNRGM2TXpFNk5Ua3JNRGc2TURBaUlIaHRjRHBOWlhSaFpHRjBZVVJoZEdVOUlqSXdNVFl0TVRJdE16QlVNRGM2TXpFNk5Ua3JNRGc2TURBaUlHUmpPbVp2Y20xaGREMGlhVzFoWjJVdmNHNW5JaUJ3YUc5MGIzTm9iM0E2U0dsemRHOXllVDBpTWpBeE5pMHhNaTB6TUZReE5Ub3pNRG95Tnlzd09Eb3dNQ1lqZURrNzVwYUg1THUySU9hY3F1YWdoK21pbUMweElPVzNzdWFKaytXOGdDWWplRUU3SWlCNGJYQk5UVHBKYm5OMFlXNWpaVWxFUFNKNGJYQXVhV2xrT2pKRk56RkNSa1pEUXpZM1JqRXhSVFk1TnpoRVFUbERRa0kyTkRZelJqa3dJaUI0YlhCTlRUcEViMk4xYldWdWRFbEVQU0o0YlhBdVpHbGtPakpGTnpGQ1JrWkVRelkzUmpFeFJUWTVOemhFUVRsRFFrSTJORFl6Umprd0lqNGdQSGh0Y0UxTk9rUmxjbWwyWldSR2NtOXRJSE4wVW1WbU9tbHVjM1JoYm1ObFNVUTlJbmh0Y0M1cGFXUTZNa1UzTVVKR1JrRkROamRHTVRGRk5qazNPRVJCT1VOQ1FqWTBOak5HT1RBaUlITjBVbVZtT21SdlkzVnRaVzUwU1VROUluaHRjQzVrYVdRNk1rVTNNVUpHUmtKRE5qZEdNVEZGTmprM09FUkJPVU5DUWpZME5qTkdPVEFpTHo0Z1BDOXlaR1k2UkdWelkzSnBjSFJwYjI0K0lEd3ZjbVJtT2xKRVJqNGdQQzk0T25odGNHMWxkR0UrSUR3L2VIQmhZMnRsZENCbGJtUTlJbklpUHo0NzdKWEZBQUFBWUZCTVZFWC8vLzhFVnFJWFphdkcyT29xY0xHMnpPT2t3dDBCU0p0cWxjWFY0dSthdXRsV2hiems3UFVBTVk5SGNyS2p0TmJxOGZlQWw4YUJvc3p6OXZwZGpzR0dxdEYzbjh1VHNOU1pwYzZKc05UNSt2MHhZS251OFBmZjUvTDQ4ZmcvZnJpY3pKZ1lBQUFEQUVsRVFWUjQya1JVQ1piRElBakZYWk9ZMVRhdE5jMzliemtzU1ljM3I0TUU0Zk1CQWFENnpsOHkvOVRPZ2V0OGQ1amZONzhid00vZERDUnBSNTIxelhmb2pISjA1SUl5aEJBVVNWQU9OZEd6Qll0MmY3S0ZyZmtKYUFrSGg5RlpoY0RYSFJrVEtvOU1MaWhHYWF2SW1uVjNxeUVYMEVwcmd6LzREd1VEN2tDSFJuZDhRRk40M0dvNFVWbUREZ3phNHcyN29pemRBMitjSyt1dVVwampvMit4d2MvNDJXNTB4NUxHWWVEQnNSMEhWSXg1eDhpRjYwQ2JsYlRFRWtGcjI3Yk5EQlVWU3ExT0tWUGJFNjJiM0VIOEZxQmc1T09PRXVjMnQ4WkppcU1PdUdwK2NLamc3d1ZHY2VvenFONHB4Z1ZQUWtqRllnYlZKS0RVaERDallyYXdQNXE0RVRnQzlmSU1SSHRpdHBRY0N2Sk9FTGNiTXNRZ25jaVJrbGpweVFqdkc0NGpxQlVFVEZpQmkxUEVJeWVrT3pzVytUeTVjTEhvczVSK2RNUzFMdFNTeGYzZ1FIY3pSMkNJNGdNTnBXNElSQTFRTWE2dEo0K0M2dUh1R0U4bU5ESXlGcWcvT1AvTU1VdWVTNklxOFM5MGRBZUJKU0V5L3FLa0srQk53ejhjWVk0amI1SjZ1NGlXQ0kyQjFaNTZMVzVrRWM0aGtkTXBzdlVDNTU4NVNYMFF1YmNnTnF5ZmdERkVjVHQrNDAvMFM1Tngwd2FDdzNPS2tjT2JBNUluMEFZcDAxcGpqdzJuNjI2VURqdEh3YTI4aUh1VEtxdHJ2K3JlVzQxTlo2aUdscjd1dUxKQ2ZrRnRjdGNHMDRzZ20xZU5TK1phRG5wYVRFckdveVg1SksyaU16OHhzMG5Pd1dHY1BETjQ5cWFDZDRiekpvekRabS9hQksrRW96THcrWGhOQmlZd0hmMHNpT3UxWFBrRy96S3d2cVlLY2ZTd0RFY0gvb1VlMDdlcy9XUThySXlnMkRPWGo4dGprWmR1REIvYjhoekRsbE1NT0NTNUJFbmQ1MzRmOHRpM1VaYzRrTXMzeEx5YWZNU3NKaGRHOFhQcWpOazV0QWdPMjVmZUtDaG5WZERqL0owRk1rT3NVL3hNQnYwd0ZoWWVFR2ZWSDEzZnVEVTB5REZMYTRmYzdSbldIQmZ1VEZWMnRFbU53YWRjN2FjM1VZMmpmQmw3SFQzNmZlMzRpUU81bU5DRkZCVzA3S2pQZ3FoT0xVMDF2WjhQdWVaMkpDbEZaTjhqa1VzNjl1a2E5ZVBwNitFZkw0QUY1K055d1NiaXJIdGNCOE1sL2drd0FFamtLNjRLakhQZUFBQUFBRWxGVGtTdVFtQ0MifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMC0xMS0xOSIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiRmVpdGlhbiBlUGFzcyBGSURPLU5GQyBTZWN1cml0eSBLZXkiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlUyRjEwMDAyMDE1MTIyMTAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4wLjEiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMC4xIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDE4LTExLTA4IiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJGZWl0aWFuIGVQYXNzIEZJRE8tTkZDIFNlY3VyaXR5IEtleSIsImNlcnRpZmljYXRlTnVtYmVyIjoiVTJGMTAwMDIwMTUxMjIxMDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjAuMSIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4wLjEifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIwLTExLTE5In0seyJhYWd1aWQiOiIyNzcyY2U5My1lYjRiLTQwOTAtOGI3My0zMzBmNDg0NzdkNzMiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjI3NzJjZTkzLWViNGItNDA5MC04YjczLTMzMGY0ODQ3N2Q3MyIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJTZWN1cml0eSBLZXkgTkZDIGJ5IFl1YmljbyAtIEVudGVycHJpc2UgRWRpdGlvbiBQcmV2aWV3In0sImRlc2NyaXB0aW9uIjoiU2VjdXJpdHkgS2V5IE5GQyBieSBZdWJpY28gLSBFbnRlcnByaXNlIEVkaXRpb24gUHJldmlldyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzIsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfSx7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDM4NHIxX2VjZHNhX3NoYTM4NF9yYXciLCJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyIsImVkMjU1MTlfZWRkc2Ffc2hhNTEyX3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo2LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NiwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURLakNDQWhLZ0F3SUJBZ0lVZWYrVnZIa2NUUW5FRCsrd0pNL0l4elNVTGswd0RRWUpLb1pJaHZjTkFRRUxCUUF3SmpFa01DSUdBMVVFQXd3YldYVmlhV052SURJd01qTWdSa2xFVHlCUWNtVjJhV1YzSUVOQk1CNFhEVEl6TURreU5URXhNekkwTVZvWERUSTBNVEl6TVRFeE16STBNVm93SmpFa01DSUdBMVVFQXd3YldYVmlhV052SURJd01qTWdSa2xFVHlCUWNtVjJhV1YzSUVOQk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBb3VGTVRPS2FFMFl0ZXhPb2lzU3hwK0ViaTVJQTRlc0VTY3gxNmx6UWRxVjYvZVo4Mkt0SmVOWEV1TmtCVlpEcGMzMmdTdHV4TEJIOG1nc29IQkZhaTJEa2pmQm41cWJ3Ui9jNStzbmx3WnZqZ1ZBMGh6S3c5Q3dBZUF3UkQ1a3JXdDg4L0NWeUNrTWNnTFNHd1pzL3JqN0YvTHMzRWJnN01xTGJiUUo5Q296YmJMZEpVWUlIY1BwU1pQdG9NclpiNEd2bmk2aVZTOVV2Q0tncHFjNkxHUm1vWUdHNFpSM2xHSi9YUVpmdStHZUpXNjdpaW1Nai95b1hPd3h1Y3hpdlpIRms2Y1FTZ3d1d2lvZU5tNHd2azgzTGhTdVdjdGYya0F5UWNaN2tVbnBOZWUrZDRNZ3JtR1U0WE1GTGlUZ3V0YUIrZTlWOGQ1SlRrVU9IaUx6dGtRSURBUUFCbzFBd1RqQWRCZ05WSFE0RUZnUVVNNVNCNWJIclYranBJT01kSmw3dTdiY25UWTh3SHdZRFZSMGpCQmd3Rm9BVU01U0I1YkhyVitqcElPTWRKbDd1N2JjblRZOHdEQVlEVlIwVEJBVXdBd0VCL3pBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQUNvd1IzS1RMZmlkSnlRRk5xRUZmVXJmWjlhYTllZ3BPUXROUkpkTFN0SjZ4dTJXZkx3dkc0b2pHSmxCS05uZmE1REljeVFZZi84cUo0ZWxpQVZlTlh1WW1lTW1nTmdaWnl1WTZHMXlXQ0QyVjNzRDZaNHVqM1NiYURPSGozZ0h2c3pnUWhyaFQxaC9wdUhRa242K2hZS0FwNzdrTTdJYzZBWi9SRmJqcG1MTGsyRDBzRTFselQvMDJpK0JoN004c21haURaOSsrSkd6eGVTdW44VzFIbGVaVW0ycUtHbVJhNFhQZHJ5VDd4NktHVUduVTRhM2JwVW1WZVk5clEvc2ZNZDVaVG9vKzN1bkZXRHpvVlYydk51OCsrVkxDOXpvNDBGYUtRTHI5VkFKREo0eUxFTlI3S3JtVjhMMGNDWEtKR1pXQVd0RzVSR1RtSEloZCtuQjQxZz09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWZDQVlBQUFDR1ZzK01BQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBSFlZQUFCMkdBVjJpRTRFQUFBYk5TVVJCVkZoSHBWZDdUTlYxRkQvM2Q1OXdlUVNJZ1M5QVFBWGNGTEFRWmk5ZnBlVnoxdFkvV1RacjVXeHBjN1c1a25MYTVqSTNaODVzclMybk0yc2p0V3daUzdJVUg0SDR4Q25FUXg0REFaRjc0Vjd1czg4NXY5L2xJbkJ2VkovQjRQdjludS81bnUvNW52TTU1NmZ6QS9RdjBIYi9JclgzVkZLUG80NWNubTRpblVJV1l3TEZSbVpRVXV3akZHL04xaVJIaDFFWjBOUlZSdWRxdDFCZCsyblNLeVMvT2h5czArbGszZS8za1E5cXZENFpVdGE0VlZTVXVZMGVpcHlpVGhBZm9jb09SVmdEdXV3M3FLUmlBZDNyYmNFdGpUallJb2Y2V2FIc0NtelZQV0NNeCtjZ2g4dExxV01LYU1Xc1VqTHFvMlJ0SklRMG9Pem1lcnBRdTRlc1pnc09Oa0d4SDdkMGtkdlRUMTdzNE9NVTdWSThaaGpnR2FNK0FxOWlFTnU4UGlmMXVkejA3TXd2S1dmOEdsVm9DRVkwNFBDNVdkVGFYWUZiUjh2TnZMNSszS2dmYjV4Tk15YTlSYW1KaXluYU1sR1RWdEZscjZiYTl1K3BxbkVYNHVNdVJSZ2pTWUVock43dXRGRmU2bHFhbDdOZmt3NWltQUdIeW5QcGJrOFZtWTB4c3RucHRsRkNWQ1l0elR1Qk44M1FwTUxqVHRldmRQelNVbko3ZThta2p4WjM5ZlhiS0RmbGRacWJ2VStUVWdHbkJWRjZmUTJpUEhnNFcxNlVXVXd2emJrMTZzTVpFK1BuMHB2ejdKU2V1QXllczhsY3BDbWFLdW8vcCtxV3IyVWN3SUFIV3J2UDBZRXpoWEF0TEFic3NIaHA3aUdhbXZ5aWpQOHJ5cXJYVVdYOVhvb3d4eUF1Zk5CcnA0M1BPQkZYWmxrZjhNRFJpcWNweW93QXdwdXoyeCtmV3Z6L0R0ZGU5c21zenlndGNSNkMxd2JkekJsNk9scTVXTllZNG9HYXRoSk1ya1RFeDBqQVJTSEFWcys1cllrUU5YYitRZ2ZQTHNRNmdYeUluc3JlUWZtcG03UlZGWWZMODZuMWZpVU9rWXZTaGtVUHh2YnVrem95NksxaWhNMWhvM1h6VzZFdlNmWEErZHBpV0dhV2QrZG9Yekx6bUd3S1lGTENBc1JBbFBCQWhNbENGWFU3dEJVVlByOEhnVmNKSFdxK0YwMHBscitETVRkclA0enZ4WTExa05NaHhUK1NlVEdnK2Q0VjVMUUppdHlVR0pOQjhWRlpzamdZQlpNL0lJL1hDVGtqMHF5RE9wRjJBVlExN0NJalVwL0RuVDFVa0w1RjVnZGorc1Mxd2cxZ0UzZ2lnbTYwZkNYelNuUFhieUFQYklYditJRHBFMTZUaGFISVM5c2t5aGxtTUU1RjNjZnFBS2hxMkMwRTVQSDFnWWFYYUxQRGtaRzBIREpPbktXSHA1MUkwejVTT3V4OGUxV0F1WnpkSFFyVGtwOFRtalhvSStsYTB3R1pzenVicWJPM2lmUTZBL1c3dlZTWXNWM21SMEpLd2tLYzRXSGlCa21SOEkzQ0NnSTg3b09MNHF6VDVQK1JVSkJlakVPZ0FQSzhoWVB6YXRNK2VJVHAySU85eVRRbWVyb21QUnh4MXF4QWNzaWxlL3ViU2VFYmNXUUdZRUNnaGNMWTJIeUtqb2dqSDI1aE1wanBVdjFPdWdsaTRlaDJlUncwTzMyYkpqa3l1Q2dOemcwdnpsWU1TaVNzMHVvbzRNRzdoTU9qQ0VhWDF5RkUwblN2akJ6dVRuRXBLODZaOElvcUZBSXVidzhrZzlBckVhUkVXU1pJK2pINFhicDZnOUU5RW5KVDNvYVJ6RE4rTVVKQlFESG41NmE4b1VtRUJ1c094QnMvTjUrdEpFYlBrQUZEajhVR3ZPcy9JV3ZjU2dsR0JodlM3L0ZUWWZwV0dZZERZOGZQQXhXU0EzNXNUQzRwNCtMbTRBYXFJb1BlUXRmdWZLNkpoMFpoeGxic1VYT1NtWE5pZkQ1WlRBa3lEb2ZiYmNjbHhuQThXTkFxeENiUk55a2hYeFFwYUR3NjdmWFVZYnNpRzBLaHR2Mm9lSXZoOHJoUU1ZT2NFQXFYRy9lSSt6bmdPYzV5eHI4cTgySUFNMWMvRkxGT3BscXU1ZUZRWHJNWnpHY1ZDalliTFdHNUk0QlQxZXVScmxieHROT3RNaXREREVoTFhJSXluQUF2dU9FV0UzWDNOZEFmdDk0VmdhRzQyWElRdDBaWDZQZUNFL3FRRmU5cks2SHg3WVU1MEt2SDdmVzRmUytxN0tLQkp4c2dnQlg1cFNBR2gxaklyVmg1elE2dzNSZmFhaEJYbS9hQ2JDWlRqQ1VGVVR5V1pxVzlwNjJNakpQWFZxT3JQZ01PNE52NzRHa2Yrb3dmdE5WQkRRbmpGSnFIU3cxN3BYdmhXVzVLWnFlL1E0OU4vVVNUQ0FWV29RWEZJSEJIWFhlM0ZQclVEc3VHRG10Ri9oSEtUSHBla3hoaUFPUEkrU0pxNlM2SEY0STlZV3prQkpUbzQ2aVVNeldwOFBpci9SaWR1THhLWXNTa3NWOHZMbE9RdmhHWDJZbFIwT0JoQmpDK3UvZ0VjdlkwQXBLN1lrNDFOeGpQU1FuV0ZIVEY2NlVyamdldkI4Q3U1YStsMnZZU1JQdHVWRG83M2hoZE1TSG5VWDd0VGpzVlpHeEFsL1dwdGlPSUVRMWduTDI5bVg2L3RSMXRtbGtZajhXNFgrQ1NqV2NVREdZMU5wUy9DN2hTS3FpTUxNL2wyUW1TV1o3M0RkeitnaW84QkNFTllQUTQ2cW5rendYVWJxdkJreGpVUXNXZlpGZ2J1bzNyQWYrd043ak9POTAreW54NFBpM0wrMG5ZTDFTY2hEVWdBUDRnUFYvN0lkMXErMUhTaG11R2tJcVdSUGd5eE1GcVA4SGZqVG5qWHdZNWJRZmJKY3Q2T0l6S2dNSG90Ri9IZTFlZ3NheEhTcUc2d2ZkbVE1eDhOeVRGRnFCY3AyaVNvd0hSM3lrNSszNmhGN3ZYQUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzFfUFJFIiwiRklET18yXzEiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwibGFyZ2VCbG9iS2V5IiwiY3JlZEJsb2IiLCJtaW5QaW5MZW5ndGgiXSwiYWFndWlkIjoiMjc3MmNlOTNlYjRiNDA5MDhiNzMzMzBmNDg0NzdkNzMiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJsYXJnZUJsb2JzIjp0cnVlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6dHJ1ZSwiYWx3YXlzVXYiOmZhbHNlfSwibWF4TXNnU2l6ZSI6MTI4MCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0Ijo4LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjEyOCwidHJhbnNwb3J0cyI6WyJuZmMiLCJ1c2IiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotOH0seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTM1fV0sIm1heFNlcmlhbGl6ZWRMYXJnZUJsb2JBcnJheSI6NDA5NiwibWluUElOTGVuZ3RoIjo2LCJmaXJtd2FyZVZlcnNpb24iOjMyOTQ3MiwibWF4Q3JlZEJsb2JMZW5ndGgiOjMyLCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6MSwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjEwMH19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0wNC0wNyJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjQtMDQtMDcifSx7ImFhZ3VpZCI6IjZkYWU0M2JlLWFmOWMtNDE3Yi04YjlmLTFiNjExMTY4ZWM2MCIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiNmRhZTQzYmUtYWY5Yy00MTdiLThiOWYtMWI2MTExNjhlYzYwIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkRhcHBsZSBBdXRoZW50aWNhdG9yIGZyb20gRGFwcGxlIFNlY3VyaXR5IEluYy4ifSwiZGVzY3JpcHRpb24iOiJEYXBwbGUgQXV0aGVudGljYXRvciBmcm9tIERhcHBsZSBTZWN1cml0eSBJbmMuIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfSx7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19zdXJyb2dhdGUiLCJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJzb2Z0d2FyZSJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJpbnRlcm5hbCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQzlUQ0NBcHVnQXdJQkFnSVVYMVFaS1B6dVhsd3FVRFBYS0ltcnBiOVUraWN3Q2dZSUtvWkl6ajBFQXdJd2Z6RUxNQWtHQTFVRUJoTUNWVk14RVRBUEJnTlZCQWdNQ0VOdmJHOXlZV1J2TVJNd0VRWURWUVFIREFwRFpXNTBaVzV1YVdGc01SMHdHd1lEVlFRS0RCUkVZWEJ3YkdVZ1UyVmpkWEpwZEhrZ1NXNWpMakVRTUE0R0ExVUVDd3dIVW05dmRDQkRRVEVYTUJVR0ExVUVBd3dPUkdGd2NHeGxJRkp2YjNRZ1EwRXdIaGNOTWpRd05qSTNNakkwTVRBeVdoY05NelF3TmpJMU1qSTBNVEF5V2pCL01Rc3dDUVlEVlFRR0V3SlZVekVSTUE4R0ExVUVDQXdJUTI5c2IzSmhaRzh4RXpBUkJnTlZCQWNNQ2tObGJuUmxibTVwWVd3eEhUQWJCZ05WQkFvTUZFUmhjSEJzWlNCVFpXTjFjbWwwZVNCSmJtTXVNUkF3RGdZRFZRUUxEQWRTYjI5MElFTkJNUmN3RlFZRFZRUUREQTVFWVhCd2JHVWdVbTl2ZENCRFFUQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJESmIyS0lRUUVvOGRRaWVOQi9EWk9PSkhNKzA1ajBWdmIxRVl4V1g3R3VXb2xOMkoxWjVhQzBod0did00rczkxdkxtUkNic21rK0dGNWQ5a0xjeEtrU2pnZlF3Z2ZFd0hRWURWUjBPQkJZRUZKOGJSdUY2eklYWW96eUtva0FmZVJJRXRVY1RNSUcrQmdOVkhTTUVnYll3Z2JPQUZKOGJSdUY2eklYWW96eUtva0FmZVJJRXRVY1RvWUdFcElHQk1IOHhDekFKQmdOVkJBWVRBbFZUTVJFd0R3WURWUVFJREFoRGIyeHZjbUZrYnpFVE1CRUdBMVVFQnd3S1EyVnVkR1Z1Ym1saGJERWRNQnNHQTFVRUNnd1VSR0Z3Y0d4bElGTmxZM1Z5YVhSNUlFbHVZeTR4RURBT0JnTlZCQXNNQjFKdmIzUWdRMEV4RnpBVkJnTlZCQU1NRGtSaGNIQnNaU0JTYjI5MElFTkJnaFJmVkJrby9PNWVYQ3BRTTljb2lhdWx2MVQ2SnpBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUFvR0NDcUdTTTQ5QkFNQ0EwZ0FNRVVDSUQ3bG45WmdMOXV2TXAwL2xLdEsrcjJSOWlwM09teUFnUGZibVBkU3JsVkdBaUVBM3lFNlprZzQ1b1lHN04rZ1J1TjU5OVYzdkdHM1d6OUpWQmZtUlJLa1BVcz0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBR0FBQUFCdUNBWUFBQURZa2haSUFBQUFDWEJJV1hNQUFBc1NBQUFMRWdIUzNYNzhBQUFnQUVsRVFWUjRuTlM5ZVhoYjVabncvYk5sU1paa0xiWXM3N0xsVGQ0ZEo4NW1KeUhPUWpZU0lBRUNsQzZVRmtxWktXM2ZkS0V0YmFFd1ROOFphS2NiN1pTV0ZscjJocVVKRUxLUmhNVE80aVRlRjNtM1pIbVJKV3VYTGRuTzk0ZWtFNXZRVHQ5TzI1bnZ2aTVmY2FSem52T2MrMzd1ZlhITWxTdFgrRjhHaHNoUDNaLzQzZ2swL1puLy8vOEs0djZuTjdBQTd2YTZmTjlMVUN2MGYrMENEb2VyR1poS1NsS2ZCRTRRSm96emI3Uy92d3ZFL0MvZ0FJM0g3VHVxVkNtcUYzNTRycjZGT0ZFY3hwSWNsQ29GSC81dVZXM2xYN1M0enh1d0IyZENIeVJxVlc4QmIvSy9qQ0QvMHdUUU9CeXVscVFrdFI1Zy95dEhlTy9kZWc2L1d5OWNzR1Y3TGIvODdYY0I2R3p2WjkrRFQ5TFIxZ2ZBZHg2L24zdnUzUTNBaUdXQzExNCtqRXF0b0t3c245THkvR3NJQjJFdVNVcFMveGI0TGY4TGlQRS9TUUFCK1ozdC9UejY4TTg1Vzk4Q2dGYWhwRWlYVHYyZ0NZRFdudGRScWhSVUdtL0I3ZklLQzVTVzUvUE9zYWZwYk8vbjl0MWZYZlRkcnRKcSttS2RsSmJuVTFOYnlaYnR0ZGNReE9Gd25VaEtVditJTUdmOGo4RC9sQTdRT08zdWppU3RPdjNJb1FiMlBmZ2ticGNYclVLSjNlZkI3dk5RNy9OUWF6Q3labU0xU3BXQy9hOGNXWVJnZ0hzL2ZUTUF2LzdsRzdoZFhxb3lERFJaQndFNDBIRVJnSTYyUHY3dzhtRWdUTEFINzl2TGtyVmxwR2ZxU0VwUzF3RjFQbS9BcmtpUWZZVXdWL3hESWZZZi9VREN5Ry9UYUZYcEFPMXRmUUppUDdkNnMzQ1JWcUdrSWoyYlcrKzRIb0QzRm9nbHZVWUx3TGFicndNUVJGWVUrYlVHbzNETlF1aG82K05mdnZOTGRxNzdQUGZkL1NqMXh5OEJvRWlRYVlIZmhFS3pmdUNSdjkyci90ZndqK2FBc05qUnFqT2pIOXgxMTNZa3JWN3NEaWZPZ0UrNDBPN3o4RkxIV2I2eDVLdFlMUk5jUE5VcWZMZDNTUTJ0Y2dleWhQaVA1QXdBczlQK2tSdUlmbjc0M1hvbW1xMU1pZ0xjODduZDNQbXg3Y2dVOFRMZ3V6NXY0Si8vVVJ6eGorUUFqZFB1Ymt0S1V1djN2M0tFTzNaL2xTT0hHdENsYTlueGhhMTRndE1jN1dsZGRNT3R0NGRQLzhIOUo5REtFOUFxbE9nMVdwNDZlWkRiN3RnQ3dHc1I4UUpoenRoUnNsVFFIUjhGbXdyTDJWUllEb1E1eG1JZTUzc1AvNEpWUysvaVp6OTRDYmpLRVc2SHA1MndUL0ozZzMrVUV0WTRiYTRlalU2ZHZQK1ZJK3g3OEVrQVZPb0UzbjduSitnTE1uank0VjlSTWFYaDhhT3ZJeE5McURVWStlS3ovMFJpaXBxMXl6L0o1clJpbWthR2FMSU9rcVZQNVhUajg0eFlKbGhUL1lsRkQzcDQ4eDZlYXp4NURRZnNLcTBtU1o1QXc1QUprMjMwSXplcFZTZ3BMVFJ3OHoxYnVTVkNmQUNQMi9kL2xTckZRMzlqbkFEL0dBN1FPQnl1Rm8xT25YejhRSU9BZkFDM3k4c1BIbjZXZ0crYXozM3RUazY0KzVnbmpLeVpOQW1KS1dxT0hHckFZaDdudHhkT0NqTCt6bzl0QitDZGw5Ni81bUdQSDMzOUk4WFBnWTZMdk5iY2dOM24rVWo5QUdHeDkwRlRLLy81MkF2Yzk3SHZNbWFkQkVDcFVudzk0SjgyOFhmZ2hyODNBVFRPQ1ZkZlVwSmEvKzRicDdqbnM0OHMrdkt1Wld0WkxjL20zNy8vVzVRcUJaOTg2RFptUmZNbzg1UFlldnQ2WUxHSWljTGVPOFBpNS9WWGovekpCMnNWU2tIVVJNRWZDa0pNVFBqZkQ4RkNvc3hmdWNMaFkyZDU0SmJ2OE93emJ3QWdrOGNYQm9PaFR1RG12K1RGLzFMNGV4SWdmUEpUMUVuN1h6bEM3MHZOYUJWS0FLb3lET2cxV2p3ekFUUXlPYy8rOGcyT0hHcWdwQ3lQY3gwdmMvZS8za1hkOVN2d3VIME1OZzRJQ3o1UXU0VWZQUEE1ZE9sYVdzNTAwRGxzNW9IYUxSLzU4SzNHSlNnazhkZDhidmQ1aEQxRVFTNldZRWhNQWNDb1MwY3VsZ0J3cWIrUDd6MzhDKzdZL1ZVQzNta2tFbkU4OEliYjVmMi9md3NFd2QrUEFCcVh6ZFdibEtUV256aDRsbS92K3pGUG5UeUkzZWVoTHIrVXo5ZGVqOWxwNTQvdEYzbjg2T3NBN0h2d1NUeHUzNkpGenRhM0xFSlUvYUFKU1hrU0FEOTk1alVBUkxHeGZQZjZXd1hpUnFGMWJBaGZjUG9qTjJmM2VXaXlEZ29jNGc4RitXQ2dFNEJraFpLVzBXRWd6RVZ5c1lTejlTMnNXbllYdlYxREFLalVDVjhMK0tkZit1OGdLQXAvRHdKb0hBNVhpMXFuMWpZZGEyWDR0WGIyVnRVSVgvWk9qdkg0MGRlNXBYSVZIMXUyVnBEWDZoZ3B4OTQ3dTJpaHNmNXh6Z3laMkxkK0oxcUZrbjdmSkR0dnFXTjB4Q2JZL2htcVJOSlZHdUhVNmpWYWpMcDAraWJIT2RiVEpxd1YvVDRLdFFZangzcmFCRzZNUXZjQ0JaMmJwQ05EbmNSblYyM2c1b0psbkhyOFBRN3VQd0dBVEI1L2g4Zmx1d1JvL2p2SStsdjdBUnFuemRXVHRNRGErZkRKekU1TXBuN1F4RjNMMXFLS2x3dWZyOHN0d1hTdUIyN2JKSHkyYWRsU25vOTdnMEJFWmtmTjBnTi91S3A4di9IT3RRZnhvNnljcWt3RE1yRkVJRXEzYlpSYWcxRXdXUitvM2NMVDlZZkRJWkNJbUJwdzJBQm9IVFhUYXg5SEswK0FwbnBDZ1NDN1A3NEZwVnF4Tk9DYmJwUXA0cGZ6VjhhVi9wWWNJRmc3QzVGLys1THc2VitWWFlCZW94Vk8yRFBuanZQVXlZUEN6WTJXUGpaa2xTeGE4RXFXako3Sk1aNnVQNHpkNXhGcy83N1RQWXV1MjdkK0oxOWF0NE5hZ3hHejA4NmVpcFhzS2cwSFYvOXB6UlpXWlJkUVAyaWlOc2RJWVhLYWNKOC9lRlVaajN0ZDZEWGFSVDVFTkN5eU5ET1h1dnhTN0g0dkp0c29YOTczRkU5ODR4Y0F5QlR4K1g3ZjlBWCtTazc0V3hGQTQ1eDBkVVdkckgwUFBvbGVvMlZueVRMaGdnMEZaWHl1WmpPZlc3Mlp1MWVzRjE0dUNuYS9sMUhQNGtPVW1aWENyUkdrYjZ4WlJrbFpIaGZPdG1FZUhoT3UwV3UwcENTb2FCZ3lDYWZhTmUzSHFFdG5VMkU1NTRiN2FJM0k5TWVPdms3UFpQamVxQjZJd29tK2prWDcrYzliN3hWKy8wWERFZmEzbkZ2MHZiSXZ4TE5QdkF5QVhCRmZNRDVtZi82dlFaem9rVWNlK1d2dVd3Z2FoOFBWa3FoVlp3elc5L0gxTC8wQTkzUUFveTZEUWwwYVB6M3pIay90K2dTdk5EVWdpWXZqZUc4N2wwWUdCTGtiQTRUbTV3aUVnaFF0eldmMWhxVUFqSFdPa3FCVFVyTm1DWDI5WnY3dHNRZVJhUlg4OE45L3gzdW56d3NQejBuVTBUdzZ6T1dSQVFLaElQNVFrUFl4Q3cxREptYm41eGllc24yazJSbUZXb09SZmV0M0VoOG5abFYySVkyV2ZnQ2tjV0oyRkM5RkdoZkg0SlR0V3NURnhsQVdxOE15TVVsQmRSNEpDZklpbnkrUUxwR0lEMTV6OForQi95NEJoSkR5K2ZjdTBmQ3IwK3dxcmFacndrcS9mWnpPQ1N0RnVnd0ErdXpqTkZtSG1MOHlqMUlhejFmcWRqRTlPMHR3YmhhNzM4dTYzQksrOXQzUElOY3EyTFAxaTlUdlA0dkY2V0J0M1RKMjNWeUhUQnNPSmQ5Mzk2T0NlSkZMcFB6VG1xMGtTT0s1WU81RHExQ3l1M3dGbDBiQ3BxdDdPa0JvZnU0ak43NXYvVTRhaHNMaXBtSElSSmZOeWtWem4zRDloTmROMDhnZ2lYSUZacWRkRUcrMUJpTjNMVnZINEpTTlFsMDYzL3JOYjltd2JDazZndzZKUkx3Y0dPTC9JVVg2M3hGQkF2SVA3ai9CMno4K3hPbkJMbDV0YnFEV1lLVEdZQXlMR2IrSHpva1JUTFpSNUdJSldya1NSOERIOFo0MnpneDBZWWxZUWVicEtaS05LVmo3eCtocTcrZW1zaFhFWFhEUzIzelZEemdYeVJkMDI2d0VRa0hNVGp0ZmV1czVucTRQTzJ1QjRBeU41bjYwQ2lWR1hmcEhicnJXWUFSZ3dESEJ2dlU3QmMvWTd2TXM0cFJpWFFiR2xQRGgyVkJRUnJvNkVRanJqZThmZjVQNlFST3RvMmJXNUJhejQvWXZNZGdXRm5QQjZkQXpRTlZmaXNTL2xnTUU1TzkvNVFpUGZmM25tQ1pINlJ3ZllYWitEcGxZd3V6Y0hGa2FMVzFqWnVIa3BDazE3Q3FyNW1ESFJkckhMY1FBV1JvdHRZWWkyaXhENUdwVCtmSFRMOU16WUdIVTdTUkJLc1YwcnBjbFd5dVJTaVZvazlSMHY5UE9IVXRyVVVpa05GbUhGbTBxTkQvSG1NZkpwMWZVc2EyNGlqeHRLaGZNZmRkc3ZqeE5qMElTVDJWR05wMFRWaXd1QjNxTk5weVA4SWNqcXpVR0k1TStEK2VIZTlsUnZKUjBwWVl6ZzkyRTV1ZVFTNlRzS3EzRzRwekVHNXpCNnA3aTliZmU1OVAzM0lSVUxvMzF1bjNiSkZMSmovNWVCRmlFL0gwUFBra2dGQlJNeFJYNmZHNnJYRTEyWWpMVHN5RkJBVVpsODBMYlBEUS9CekV4WWZaMjJhbVQ1dExWTzBTL1k0SXhqNU1tNnhBRHRnbkdlOGJaZUdNdFlra2M2VzRwNzE1bzVLWExaNENyc1grakxwM3lORDBtMnlpN0sxWXlGZkJ4M3R6SHNITnkwZVpURXRTc3p5K2xaM0lVc1NpT0VmY1V5N1B5dUdUcFh5U3l4and1bkFFL2dWQ1E2L0pLZVBiQ0NlUVNLWGFmaDFYWkJRdzU3VnkwOUZPU21zbjI0aXBPOTNiU2VLR0RXKy9ZZ2tRcTBiZ20zWnA0dWZTOXZ6VUJORk9UN280a3JUcXo0MFFILy9uWUMrZzFXdlFhTFJxWm5KWFpCYWhsY3M0TWRERjNaWjZVQkxVZ1o2TUUwaXFVSkN1VXVLY0Q2RFZhSHQxNkc3ODZkeHl6MDA2emRZanFyRnk2SjZ6a2FsTUloSUs0cHdPMGRQZEJUQXlyYXl1WlQ1Ync1a3RIMkZKVWlVd3NRU1dWMFRKbXBuM01nc2syR2ptWmRwcEhCems3MUhQTkN6ajhYbnJ0NDVoc280aEZJdTVidllsOGJTcTk5bkZHWEE1cUk2SXpKVUZOVG1JeVZSa0dKdjBlSHFqZGdsd2lvY2s2eE9DVURXbGNITzdwQU11eWNqRWs2ampaMzBuQTRVY2RMNmQ4dVpGNHVYUTE4Qll3ZHMwbS9rb0NhS1ljN3RaRXJTcHoveXRIK0Q4UFBvbmQ3MFVhSjBZamszTjJxQmVUYlJUM2RJQisremdYelAwMERKbVFpeVhjdmJLT0ZmcDhMbHI2a1lzbEpFaGxPUHhlOHBKU2FUVDNDNDZUZXpwQXJjRklyY0hJenRKcUdpT25Fc0poaVpvMVN5aGRVa0JzVEN4ZGwvb29URTdqQ2l3U015YmJLRVc2REVwVHM3aGc3dU9MNjNhd05yZUlob2hIM1d3ZDVPUEwxcUdLbDlGbzdtUGM2eUpUbFVUYnVFVkFhbEZLQnFsS05TZjZPb1QxemcvM2NkVFVJbkRJdHFJcVpCSUphVW9OSi9yYW1idHlCYnZQZzhZZVMrMk9GVWprRWh3T1Y0MU1GditMUDRmVXYxUUphNmJzN283RUpGWFdrYmRPcysvQko3bDlTUTEybndkUlRDdzNsUzBYTGpRNzdmenJqanRabTFzTWdFd2lwVEk5QjJOeU9wc0xLNmpLTkhEUHlnMEFYSmRmd3U2SzVZdTg1YTRKS3c2ZmQxRk1QNnBRSC96c0UvZzhmblovZGh2RnkvSjV1djR3THpkZG02bzBPKzM0UXpNQVRBVjhpR0xEci9uVXlZUDRRMEVtL1I3a1lpbitVSkQ2UVJQdjk3VXo2cDRpVGFrSksrTmdrSXEwYkdIZEF4MFgwY2prK0VOQjlxM2Z5ZGMyM0VqRGtJbU9NUXROMWlHcXMvSlpuMWVDWEN3aFhpeW00L2VOQUNRbHFaY0FkLzg1eFA0bEhLQngybHc5aWNucTFLWmpyZno4MGQvaEN3WHhoMmJDS2NRWWtJa2xna0tVaXlVa3loTVlkVStSa3FCbWUzRVZrejQzYzFmbVNWTnBPRGZVdzltaEhwVHhjbTZ0WE1YdzFDUU92NWZaSy9NOFVMdUZ2S1FVU3RPeW1QQzY2UndmUWEvUjh0REdtekRaUnRtWVcwcWlTMFRtYWdORnF3dUo3L0xUTXo1S0lCUkVyOUh5OE9ZOUhPeTR4THE4WXQ1c3ZVQm9mbzVtNnhCbkJydUJzTDdJMTZaeWRyZ1hzOHN1K0NCRktSbFlYUTZtcHYyNHB3TmthWkxZMzNLT25hWExCTzZVeG9tWnV6S1B5VFpLZVZvMjU0ZDdjYzhFdUgvMVpySTBXbDY0ZkliVUJEVXBDV3JHUm16RXBTckl5azNEN3dsc0VFdkYzLzlyQ2FCeFRycTdORHAxU3NPN2pkejJpWWNZZHRwWm5wWFA3UHc4M3VBTVl4NG5DZEo0SGxpemxhTTlyYWhrY25JU2swbEpVR1B6dWpuUWNaRXhqNU56dzcwWWRlbTBqVnV3T08xNHBnTzRwZ05zTHF5Z2MySUV1VmhLYUg2V0Z5K2RwdEhTTDhqdk5LV0czc2xSTkRJRnMvUHpuRzNyd0Q3blozVnRKVEZwOFR6L3U0Tmg4MWFoRElzOGlaUzdWOVFSTHhiVE5tWmU5REoybjRjUmw0TzhwRlRLMC9Tb1pYTE1UanRUQVorZ2I3UUtKZFdaZWJTUFcxaWFZZUJUSzlaelk5bHlabVpuNmJPUHM3R2dIT2UwajkwVksybXlEcEdUcE9QY2NDOWZXTHVWbWRsWitoM2phT0lWdERYM2NQM2U2eEJMeGZIOEdkL2d6eEZBOEhEZmZlTVVKLy96ZmN3dUI0RlFrQ1VaT1p6b2F5Y1FDcUpWS0puMHVtbXlEcUtPbDNQUHlnMk1lYVpvdGc3UlBtNEJZSGY1U3BxdGczVGJScm1sWXFVZ3M0ZW5Ka2xXcURqVzA0clpaV2R6WVFYZE5pc0pVaG5GS1Jtc3pTMWl4QlZlYTNES2hzazJ5b0JqZ3BQSEc5bDk4MGJLcWdvaEpvWVVsNFJQVksvanVjYVRFVDFTeEFWejN6V1pzVzl2dVlYcjhrcDRzKzBDYXBsY2lQc0VRa0ZCdGhmcE1wand1ZkRPVE5Oa0hXTFU3V1JwcG9IQzVEUzh3V2xLVTdQb2lTandSbk1mUFpOampIdWNyTTByd1RVZG9OazZ4QWNEWFd6VWx4Q2pGcU12eU1EdjltOFdTOFgvK3Y5Q2dFV201c3YvL2diK1VKQUIrd1NoK2JsRjBjYmJxMnJ3Qkdjb1RzbkFQUjBnTmlhRzluSExvbXVhclVPRTV1ZUlBWEsxS2N6TWhnUjcrN09yTnRJeGJ1SCttdXY1d2FtM3FjN0tZMmZwTWw2NGRKcmczS3dRdTRtQ1hxTWxMeW1WMzc5K2lOdnUyTUw2RGN2NXpSdnY4SXYzM2hXdU9kYlRKaUQvMjV2M01Ecy9oOTNuSVJBS2twMm80MmhQSzJhbm5iMUxhZ2pOendsN0FiaDM5VVpVOFhLQ3MyR2ZZc0xyNW9LNWo5bjVlYzRNbW1nMDk1R20wdkJxY3dQWDVaY3c1bkZoOTN2cHQ0OXp4TlRDOTdidXBTeE56enRkbHdtTythbTdwUmF4VkN6aFQzREJSeEhnR2p0L1I4bFNSbHdPZGxlc3hPS3lDNVpKR0dKb0dSM0M3dmRpY2RycG5CamgyOWZmd3FIdVp1R0txZ3dEb2ZrNTNOTUJESWs2TmhXV01lWnhRVXdNUTFPVHpNeUdTRllvdVR3eXlMQnprbFA5NGVUSXJySnFicTVZU2V1WW1VQW9TRldHZ2ZJMFBjdXljbm12NVRKOXZXWjIzVnpIMWgxcmVPSDV0Nm5KS2tBalV6QzJJS2czNEppZ0tzT0F6ZWVtZGN4TTI3aVovN2pwVTVoc281enE3K1NKSFhkaXNvWDF5SXJzZk5ySExIaG1BdmhuUTlUbGw5SStiaUVRQ3VJTlRqUG1jU0tYU0NsUDFUUG1kYkUrcnhUM2RBQ1JTTVEzTnQ3RTZweENMbzhNTUJYdzgwRi9KMFhxTlBKek0wbk0xdUtlOHF5UXlxUS8rSzhJb0hIYTNXMkpXblhXd3VxRnpuRUxhU29OYTNPTE9OQitVV0RYcWd3RFJsMjZzTWtvcU9MbGpIbGRKQ3VVck04cjVmYXFHcVJ4WWxabEYzQ2twNVgzdXB1eCs3M0VBSGN1WGNQbGtVRk85SFVJOS8vTDlqdlliS3dnWFpYSTZZRXVZb2xoek9Oa2hUNmZQc2NFZmZaeEpyd3VTaVVwcENZbllxaklZVmwxQ1NjT25pVlRuWVRKTnNxbXduSUdIQk80cHdPMGpnN3p4WFhiVWNmTEtVckpJQ1ZCelh1bUZwSVVTbVptZzl4V3VaclEvRHd5c1lSYktsY2hFMHZ4VFB2SlNkUUo0bkpQeFVyc2ZpOWpIaWZ0NHhia0VpbW4ranNSaTBSc0tpeEhyOUdpa0VqNTVibmpERGdtSWpyRlQwMVNIdnAxZVVobFVoVndFaGo4VXdUUWVGMitKbFdpVW4vNm5RdmNmLy9qUUpqbDdYNHZacWVkM0tRVUp2MGU3UDV3R1dHQ05KNWxtYmswREpuWVZWck4vSlVyRWFTWHNOcGdSQ09UMDJNYjQ1SmxnRXgxRXF1eUM3ZzhNb0JDSXVYZVZadG9IN2R3eE5SQ2VacWVHb01SZFh6WTFBdUVndnpxM0hFT20xcm9tUnhETEJLeHJhaUtOOXJPTStGMWthRks1Tkd0dHlFV2lYandSejlqNjQ0MVZGVVg0NWh5OC9LN3h3ak56N0c5dUlyK0NDSUFkQWtxVlBFeU5QRnlYbTF1d09LMG80cVhzendyanlickVBbVNlTFlYVi9IajArL3lUdWRsQnFkc0F2SnJEVWJzZmk4UHJ0MU8xNFNWbUpnWUlLd3Z0aGlYWUo1eVVKS2F3ZERVSkRlVUxHWE00OFFmQ2pMbWNYS2l0Wlc5dXpjalU4dVltbkNteUJUeEwzNGtBWHlld0k4U1ZQSk5qaDRiejM3M1JkYm5sZEErWnVhckcyNmkwMmJGa0tpamFYUUlpVWlFM2UrbDFtQkVwMUJoOTN1cFNNOW1lM0VWNy9lMk0rQ1lvTkhjUjJWNkRzZDcyeENMNHFqS3pPSFZwZ2JjTXdFR3Btd3MxK2RSbEpMTzNQdzh2Wk5qbUoxMjJzY3MrRU5CN0Q0UEE0NEpJT3cxeHdCRktSbUxSTnFZeDBsWnFwNFhMNTlHSFMvbmorK2M0clk3dHJCbVV6VnQ5VjMwRG85d3dkd25lTndQMUc3QkdmQlJsWmxMYUc2T2JFMHlGOHg5ZUtZRHRJK1pjVTBIU0ZJazBEbHU1ZHp3VmUrNTFtREVId3J5bVpVYmVLV3BIbUppdUM2dm1NMkZGUlFtcHpIdWRkSm5INmRBbDBwd2JwYjJNUXV6OC9Oc0xDaG5TVVlPM3BrQXZaUGpKRXJsTEY5ZlNWeWNLRWNVSjNwOElRR2loVmtHWU1Eajl2SDFqLzhySHB1WHFZQ1B1SmhZU2xJenVHZ1pJRm1ocERvcmovRklqRWF2MFZLV3FzY1o4UEdIbG5BdTk4Tng5NzFMYWtoV0tNbEpUR2JDNTZGNVpKQ05oZVZDZ2w2clVLS1ZKMkN5aldMVXBXTngybG1aWFlBejRLZkpPb2hlbzhVZkNsS1ZrWVBaYVYrazJLTk8xNDFseS9uWm1mZUVNbmFyWllMZFd4NWtlMTdsSW1VY2hWMmwxWFRick1KYTBWeXhVWmVCeVdaZDlBNWFoWkpBY0lhOVZUVW9KRkwrMkg2UklsM1lTMzdoMG1uaGU1bEVDaUM4MC8rNTdnYVNJODVsbzdtZkk4UHRuR2g2THJyc2JoWlVZNHNlZWVRUm5BNzNzL0V5YWNrTHo3OU40N0VXdGhaVkNxZTViY3dzaUtEenc3MW9aQXJXNTVmd1Zsc2pwd2U3YVI0Tld6aFJ2YkF1cjRUaHFYQUFyQ1ExaytjYVQzRzBweFdUYlpRRWlaUXB2dytUelNwRUZaUGxTZ3AxNlNSSTR4bDFUeEV2RnBPVHFCUENHb0ZRTUt4SU13MENad0RNenMwSklXbjNkQURucUpQQ1BEMlZLNHJKTDlEejFoc25yc2tOYXhWS3hDSVJvcGhZUVZGSDk1Nm0xR0QzZXhibEQ3VHlCSzdMTHlGRGxVZ2dHR0pOYmpob09IL2xDc3N5Y3huek9BbUVncXpPS2VUV3l0V2NIKzdsd2JYYnVUVFNqeWNZNFB4d0w5bUpPdDVwdTBoWlJRSDVCWHBjVXg1SnZFejY2aUlDaUdKamZ5ZUtFNG0rOWJXZjBObzN3S24rVHNIR2p3RlVNam03U3F0cEg3ZFFuSkpKYVdvVy90bVFnT2lGVUp0anBOOCtUbG1hbnBuWkVOSTRNVEV4TVlJVEZJZ1VSd1ZDUVQ1WmZSMHhNYkFodnd4bHZJeWhxVWtVa25qQkNsb0lINjllSzRTd1ZUSTVhM09MNlJnZlFTeUtZMm1tSVh3eVhSTFV4Y2tzV1ZHTWFXU0V5eGU3RnExeGUxVU5hM09MZWVIU2FWWmxGL0RReHB1dytkeVVwR2JTTUdUaTBXMTdCYUlDZlBHNjdSaDFHV1NvRWprOTJNVnpqYWNZY0V4Z3NvM3lzV1ZyU1ZPcXNiZ2MzRmkySEswOGdYVjVKWHd3MEVsOG5JUlJ0NVBPaVJGU2xScDJsUzNqN0VnZlc3YlhJb3FOTFJERmlSNWJTSUFxVVp6b0FZL2J4L2UrL1F1cU1neW80bVhZL1Y3MEdpM3U2VUQ0WnliOGI1cFN6Y0hPeXd4UDJUNHkyMlJJMGxHVmFlRFN5QUJYZ0FmWGJjZVFxRU92MGRJK2J1R2hqVGRUbnBiRkpjc0FkeXl0cFdWMG1OYlJZVTcxZHpMbWNTNHlJUmRDdjMyY1d5cFdzYTE0Q2U5MFhoYjhBN2xFaWw2ajVZS2xuOU85blJ3L2ZaRTl0MnhpODdiVkZIblZ2TjE0QWIxR3k4ZVhyZU5RZHpQakhpZG1wNTNwMlJDajdpbm1yOHd6TURXSkpsNk9VaHBQdzFDUG9MamJ4OHlvNHhVODEzaVMzS1FVRXFUeDVHdlRTSkluY0tpN0dVZkF4NjdTYXA0NWU0elorWGxtNWtLODNYR0ovT1EwU2xJeU9kVGRURlZtRG5LeGxIZWFMbkxQZmJzUnhZbEVMSWlTaWg1NTVKSFZ3QjB0bDAwMEgydWxmZHpDN29vVnhNYUthQjBkRnBEc25nNXc3NnBONkJKVURFOU5Mbkplb2lBWFMxaWZYMHFHS3BGR1N6OHh3TXROOVRRTW1RU3YyRHN6elVYTEFQbkpxVHh6N2pnVFhoZmJpcXY0b0w5TFdFTWxreE1EcEtrMHVLY0QvTWRObjhMdTkvSnFjd01wQ1dvZVhMZWRneDNoMnY2b2lJcm1KT1o5c3d4WVJ0bXl2WmFra2hSZWZ1a1FQbjhBU1Z3Y3VnUVYyNHFyT05iVEpweDBxM3NLejNTQUxjWWwxT1dYRWdnRnVYZjFKZ0toR1paa0dIang4bWwybGxSVGtwcUoweDhnV1pHQVhDSkZxMGpnNDh2V2tpaFgwRDA1UnFZcWtlY2JUeEdhbjZNc0xZdXBnSS9PaVJHVzYvUEpWQ2Nobll0bDJYV1Z5TlF5Z0hIQ1RZU0lIbm5ra1R1QU9yRnZubFJ6REIzakZpd3VCLzMyOFd0TytIWDVKZWcxeWNUSFNaaVpDMTFEaE0zR0N0WVlpcWdmNnNZZm5PR2hqVGZSYkIwU1l2OTVTYW5Nek0zU05UR0MyV2xIcjlIeTdldHY0Zm5HVTh6T3pTRVdpUVF6TkRRL2gxZ1VSeUFVNUZCM3N5RC8zVE1CMnNjczEzQ0tVWmNPTVRGVVplVHc5cWtHbHBVYUtWbFdRRUZoTnEvdlA4YmdsQTMzVEFDNVdDSWNob1gzZGtUU3BvM21QZ3FUMHhtZW1rUWpVOUErYnNIcW1XS053Y2p2TDMxQWszVklTUDVyNVVxbUFqNnNiZ2VEVXpadXI2cmx1cndTNHNVU3BrTWh4cnd1VnVrTGFCa2RabkJxa3NxeUF0SUwwNWlhZE9sazh2aW5vd1NvQStwNitzMTg1ZCtmWmsvRlN2SzFxZFFQWGEyUGlUbzFDb2tVdVVUQ3VlRWVDclJwZ3BKN29IWUxhVW9OdVVrcHFHVUt5bEt6T043YnhnVnpIK01lSjU5Y2ZoMnJjd3I1UThzNUNwSlRCUmtyRnNXeEpDT2JpeU9EeE1URW9KTEtFTWZGa2F4UVVwNm1GOHpBaFlTZW5adkRQeHNta2xHWExueG45M3NGYmdBNGR1SUNkUnRYc0txMkVvdGxnbzYyUGdLaDRFY2lmOS82bmJ6YTNNQ1l4NGxLSmljMkppWWN6eWtzSnhDYVlkQmg0LzNlZGtMemMrR0VVb0lLNzh3MGgwMHRmSHBGSFIzakZyTFVXZzUxTitPYUR1Q2JtVVlWTHlOZm0wWlJTZ2FxZURueFlqRURUaHZydHEwZ1ZoU3Jqb3VZb3dJQmhvWkdlZjUzQjNFR2ZGUm41U0dORTVPcDFuSjdWUTN2ZGpjVENBVlJ4OHZaVWxUSkZXSjR0YmxCZUltbzdMNXNIZVJVZnllZEV5UDBUSTVoOTNzSnpjK1JxVTVDSFMvbjdGQVAvbENRN2NWVktLUlNESWs2Vm1jWDhrRkUvdWRwdzFIS2FDRE43dmN5N25HU3B0SXdPemNuV0N6SkNpVjVTYW5YeEhFV3dzeE1FUCt3bS9YYlY3SjU4eXJhejNVeGFGa2NWL3JQVysvbHRlWUdadWZuMFd1MGdpaUxFbkhVUGNWbVl5VkpjZ1Y5OW5FZzdId2xTS1dzMUJjZ2wwZ1ljN3NvU0U3amdybVBHT0RMMSswZ1RhVkJyOUZ5c3ErRDVmcDhadWZuR0hEWVNCQkpXYmRuTlhGeG9qZ2lldUNhMHNUVk9ZWGtKQ2JUTm1hbU5EV0w3TVJrQXNGd2NxUEpPb2paNlVBVEtTbmN0MzVuT0RvWnNWcTA4Z1FDb1NCSzZkV3FaS011bmVNOWJjVEhTYWpLTUxDcHNGeEl3TFNPRG5Pc3AxVklhMDc2UEFMbmhhdVVwWmlkZHFvaU5yOC9Xa0hodFAvSkZxUW95TVVTZkZZWHYvclJhM3pobTUvZ2EwL2N4OEJkajZLSmlSZnMvYy85NFJrZ25IQ0pWa3NzQkxQVHpsRlRDNW5xSk9HelRZWGxpR0pqeVUxS0lWT2R5T05IMzBDclVQTFZ1bDE0WjJiNDNjVlQ1Q1RxQ015R2NFNzdzYnFuR0pxeThVYmJlWmE3OHZCNGZDaVZDZ2o3WGswQ0I0eVl4L25ESzBmb25Sd2pPRGRMdzZDSkUzMGR2TnZWdEVnWFhMTDBjOUhTVDJoK2pvWWhFOUk0TVhHeHNleXVXQ2xVUUVTUnN6YTNpUHRycm1kMmZwN0s5R3pxaDB4Y3NQUnp2S2VWbHRGaEZCSXBGcGREOElJRG9TQ0I0SXpBTlhzcVYzS2lyME93OWFPZzEyZ3BUOU5qMUtXVHJ0SUk5MEk0UG5YdnFvMllKa2U1UERKSXc3a1d5aW9LV0ZWYlNXYTZqdmI2TG00b1hVWktna29RVzlFMTdUNFB0MVN1d2hWSnpBRGNXRmJOQndQZDFCcU1ERGdtTUNRbE16Yy9UN04xaUVQZHpiaW5BNVNuNlZtVlhVQndiaGFIMzBlNktwRk1WU0pxbVp5Zm5ua1BwVFFlczlQT056ZnRKck15SzFyajFBMmNpTDM2VXNuSXhSTDhvU0RUa1hEeDNraGRaelBXbWRJQUFDQUFTVVJCVkszQmlGd3NJVXVkeE1yc0F2WlcxZkt0VGVFR2FhMGlnZXpFWkg1eStoQlZHUVkyRjFidzdldjNBREEwTmNucGdXNE9kRnpFRjV4QkpwWmc5M25JMG1oWm5wVkhSWHEyUUt4bzJWODA3VGZpbm1KL3l6a2d6R2tmaHZwQkU4ZDYycWdmTkMwcUdUUzc3RHo3b1JhbGZROCt5WWhsZ3V0dldrdkdhZ1B2ZFRmajhIc0Z6bzZ1SnhOTGlJbFozT0IzcktlTkxjWUs5aTZwaVFUYzRqblIxOEVmMnh1cHlUSHkxSTJmNFBhcUd2cnRFMHo2UEVqRllzNFA5NUtoU21KMWR1R2lldE8zT3kvaEdBNnZQVzZkM0FZTGNzTHpWK2FGaDhyRlV1UmlDWG5hRkhhVlZwT2wxaUtUU0pGTHBQUk9qbkdndlpIbkw1NWF0RW1Bem9rUkJxWnNoT2JtV0p0YmpOM253Um53c20vOVRvSnpzMEtWbk4zdnBXUGN3cm5oWGdDQjBIcTFsbHFEa2ZZeEMzYWZSNmpULzNuOTRpNlpEUVZsUVBpMGY3ajYydTd6a0xPZzNQenVGZXNwVDh6Z3EvZi9Hd0RmZmV4KzRsTER5Wml5TkQxM3I2aTdXcUllRTROM1pnYWpMcDNsK3FzSEpFbWVnQzg0dzhPYjk2Q0tsd25pcXNrNlNPdm9NRjg1OEh1ZU9ubVEwTndzMXhkV29KRXBhTElPc3IvMTNDSml4c1dLYUdnSlIzMWo0MFFKc0VBSmQvWU84dFpyeHhHTFJMU1BXOWhhdklTeU5EM2ROaXQvYkw5SUlHS043Q3FyeGhjSzh0VzZYVnkyRHVId2V3VjJMVTdKWUgxZUNZWEo2WXk0N0xTTldmQ0ZncXpVNS9Qc2hSTTBXUWNqeUw2Q056aURWcDZBM2U4VkxKTm9GTEV3T1kyaEJZNWUxUHFJNW5DYkkvbm5hQ2pndzdEd3BadXNRK0gvKytlWXNFK3hhZXRxbGkwdllmRHNBQzNtUVFxU1UrbTJXYkg3UE16T3pUSG1kV0Z4MmtsSlVKTWdEZGNCRFU5TjhuYm5KY3JTOU9ScFUzbXZ1NFVFYVR4MnY1ZHRSVlcwamcwTCs3Z0NUSGhkdk41NlhsRG1jckdFbkNRZHhTa1pORmg2dVBXT0xTZ1VzaFRnMFVWS2VGVk9JUzNXSWZ5aElNM1dJUnFHZXBDTEpVSUh1bDZqcFgzTXdoZldiS1hSTW9BeE9RMmRRb1UvMU1hM04rL2g2ZnJEakh0Y3lNUVMvdGdlN2xRZmNkcDVMTklGSXhkTHFNekl3YWhMNS9HanJ3dkJxNFZqQ2V3K0Q2cDQyVFZCc2R5a0ZHSUllNmQvcnRnMkNwc0t5MmtZTkFuWG1wMTJmdkh6MTZoZVhjYjEyMnE0K2JOYnVmS3pXVjY2WEwvb1BuOG9LTlNCNmpVR3RoZFhVYWhMSnpRM3gyOGFUMkpNVHFNamttdmVXcndFVVd5TUlBSWJ6ZjEwakZtRWRscXRYRWwyWWpLKzREUjdsOVR3V3ZOWjlJWEppNTRuY0VCd2Fwb1VjOWowaWlxOWFLSjZ6T1BFcUV2bm9ZMDM4VjUzTTRlNm02bE16MmJRWWVQTVFCZXpjM05BRFBOWDVwbTdNcys3WFUzRUFOL2RlaXZObzFkUHgxM1ZhOG5YcHZLSDVyTWtTT01oSm9aZHBjdG9zZzZ4VWw5QWYrVEVmTGprTUZtaHhCZWNac0xuRnN6UmhYQmpXVGdYNFZoZ2txcmo1WmhkMTFwS3ZaZjYySGJqV2xhc3FjRFVPY1RGMWk2cU1neUxIRHV6MDA1NW1wNEpyd3RuSU1BN25aZkRKbXB3aGd4VkV0MjJVVUx6YzFTbTV6QTNQNDhxWHNhNHg4bFhOdXppeHRKcXFqSnpBVWlRaHNNa0RVTW1VaEpVT0tmOXJFNDBVSEd6VURyNm5FQ0FLKzRRdi9yTm04ek96elBoZFJHYW4rUDdOM3lNREhVU3pkWnd5ckU1d3M2QlNMSWhTNk1sUmFtbU5EV0xBeDBYR1hFNW1KMmZZMmxWRVluSmFqTGoxTFNQVy9CRVJKUS9GTVFaOEFzcHhrQndodW5aV1c0b1hjYjYvRkppaU1Ga0cwV3YwYks1c0lJSm4xczRCTkVEa2F0TnVjYjJOenZ0bEtSbUVpY1M0ZkNIWjBiWS9SN2Mwd0hCaVl6Q3BNdk42ZE5OM1BXcEcxaFdXODRmMzNnZjA4Z0llNWZVQ0tLdzFtQ2syemJLb01PR2U5cVBUQ0psek9Na2hyQ0lpZGFRdG85YnVHRHVZMC9GU3RUeGNwcXRRMlNvRTRtTGplV1ZwZ1lzTGdlbitqdHhUd2NZY1RtWThMcllXclNFZ2h0S285dDVTMURDQXc0YkJ6b3VMa29OeXNVU2hpTzE4Y3YxZVl2YVBzMU9POVZaZVd3c0tCTUdZd0RzcVZqRkQzNzVFRC81MWJkSVYybElWNm9CMkZKVWljazJTcTQyaFk4dFhTTlVJNHRpWWhHTFJMemNWTSt4U0tkOFZBRnI1UW5Ybk9DRlJXQlI4SWVDbk9qcklDSFNGUm4yVjhLbnYrc2oycFU2MnZyNDVZOWVSYUdVOGN4emp3QUlWZDNsNmRtc3pDN2docEtsVktUcnFkYm5jMGRWTFJBdU1qUFpSdGxjV0NHc1ZaNmVUWFppTXA2WkFMTVI4OVRzdEhQMzh2WENOWFg1cGF6UTU3TXVyMWhvU295Q1FJRFp1Vm5od3hxRGtTMUZsWFJOV0tsSXo2WXF3OENxN0VMc1BpOXlzVVRvUHZuKzhUZDU5UEFmRmkxb3pNcEVsaVJuM2hYa2RIOFhIV01XOXEzZlNiUWgvNDNXOC9pRE05d1lRV1NUZFpCL2YvOEE3L2UyQy9MYUh3clNPemttMUhwR0xSMnRRc2tSVTZ2dys0ZWRwNFVkTDFHNHZyRDhtZ1k5Z05ZM20yaHA3S0trTEkvdlBINC9BTGxKNFZiVi9TM25HSFU3eWRZazB6RnU0WS90NFVxM25TWExlR0xISFVJNS9DZVhYOGNYMW16RkZmQ1RwdFJRYXpCU25aWEgwWjQyVWlNSFR4dEpaQmwxNmF3eEZQUFpWUnZwYk8rL2xnRFJpOE12TWtTL2ZRSmRnZ3BYd0kvZDcrRm5aOTdqUU1kRnNqUmFpblFacENrMWZQdjZQYXpMTFdHNVB2eUFPNnBxc1lqRDRxSGhURE5IZThQbXFjazJpc1B2NVdzYmJxUTRKWk9UZlIxWVhZNUY5djBEdFZ2UWE3VDg2NDQ3eVZ4Z1JpN2tMcnZQZzhsbUJTQmVMTUhtZFYrRDJBKy9TMzFFRVVjVDU5RWlyZ01kRi9uNHg3NkZ4KzNqbm50M3MyVjdMZTFqRnZvalllNGpwaGJlN3J5TTNlY0plK01aQmh4K0w4K2VQeUVRMURzelRmdVloZSs4OXlvMm54djN0SjhNVlNKeXNZU2ZuRDRrS0dldFFzbjNqNytGM2VjbVhpeGRPRnhFSXhCQUkxZXd1M3dGRUhaOFNsSXlPV0lLbTF0bXA1M2wranpxOGtzeDJVWTUwSEdSRnk2ZDVyRWpyNk9SeWRsVHNRcVRiWlNaMlJCTFZvWWI3VnlXS2FveWN0aFdYTVdCam90TWVGMWtxWk5JVmlUUWF4OW4zT3RhaExBREhSZXgrencwVzRlNHBXSWxFUFpPbCt2emhSZlp1NlFHZnlRSU4rSzBDOG54RDBPNEVTUXN2cUoyZTlRY2xVbWtBZ0xkTGkvM2Z1b1JBSDc0azY4eUtRb2drMGpSeU9UWGNFMlRkWkFESFJlWm1RM3grVWh6K091dDUvbng2WGVSaXlXWWJLTjBSZzdIZENoSVpVYTIwQXYzelVnbjUvZVB2OFdqNzcyNmNOa3F3UXlkQ1lWNDhkSnBJRnpFR2dqT0NNV3JBT3Z6U2luVXBkTm5IMmVMc1pMbCtueTh3V2xPOW5Wd3lUTEEydHdpS3RLelNjOUxEU012UmtXVGRZaHZiTHc1WE8wUW5HRjZOa1I1V2piMzF5Z29Uc25nYUU4cldvV1Nxb3djR2daTjdLMnFFZks0OG9qWHZORGtqQVlBRFVuaGxPV2ZHcnJoRHdXRjc2SWRNd1hhVkFMQkdldytEMVdGNVppZGRveTZkQlMyZVg3NW8xZTU3NHQ3ZWY2RmYrRzI3VjhtSlVHTlVaZkIvcFp6Z3BpTDRzRWZDdkx6K3NOQ3diQjlnVWRkbTJNVTRrdHFtWUsxaG1MMkxsbk53WTVMYUJWS1pHSUpSYm9NTWhiRWxnUUNSR1BjRUFtcWlTVkM4R3RYYVRWTjFrR2FSb2F3K3p3Y05yVlFxTXRnMU8wUUVpTUF6b0NmVzdQdkFHRC84UStveXkrbFk4ekN5dXdDNXVibmViUHRBdldEM1dTcWs0aU5pUkdRVkpDY2huZG1tcll4QzZrSmFzeE9PN3NyVnFKVHFQamRwUSt1UWZEaDdoWWhnUGZuUnROVVpSandoMmFFOXFoTmhSVWM2TGdvUERkS3hNQ0xRWmFzS0daVmJTVmZmK2pUUFBLOVh3aTR5RkpyT1ROa0lsT2paU1J5TUNEYzZGR1hYMHBjcklpTGxuNmFySU84dDZCeW85SGN4MHA5UG9aSXNiRmVuVXhvZmhhejA0NDBUaXhjZDAxNXVsYWh4T0swaHhNT0VUa2EzZlN4M2xiOGtVelNRMisvd0tEREpqVE02VFZhakZsWnFIU3E4TVREV0JHYkN5dVltUXZSTVc3QjRmZHl0Q2Q4ZjdUM0Y2QXEzWURUNzJNcTRLUFIzSWNrTG53bVhyaDBtbjdIK0o5RXJ0bHBwMzdRdEtqTC9jTzlZVTNXUVFIWlpxZGQwQ2RSQ3lrYWdxZ2ZOSEh2M1kvaWNmdlllOThOckt5NWF1VzgydHpBUGN2WFU2aE5SUzZXaE1Qa1BnK25CN3F3dU95YzZHdm5RTWRGekU0N2hpVGRvdERJMC9XSCtmWDU5MmswOXpQcHZ4cXZHckJmZmE5Rm52Q213bkoybFZZdkt1ZFlHQ1Q3OExVYkNzcUlqWW5GN0xSVFYxREtpdFZoTTNWaTBJWStVU3VrQ1g5eStwQnczOEtUYTdLTllvbkk1ZWh6b3IyK1dybVNLMWVnUUpzcWZMYzhLNC9wdVZtV1orVnlvT01TZ2VBTWVvMzJtcjMrSlZDdHo2TXpFb1dGc0Q3NHpYZGY0c0VmZnBhZi9QcGJyRm4rU2R3dUwvKzBaZ3RYWUpGNUh1MnEvKzJGazBCWVFwU2taaElJQlNsTnllSzh1WmY2aUVqZFZGRE80MGRmWjl6alpDcmdFNVI4QkpxdTRZQzNPeThMMWNyKzBBeHlzUVM1V01MbmF6YnptWlViMkxkK0oxbnFKRmJvOC9udGhaUE1YNW1QWENmRnJRd0g5RTZlYStLRlM2ZjV6WVgzT2RUVlJGV0dnUi9kOUNua1lna2ZXN2FXUFJXcklyTGZBQ3llNDVDaDB1QVBCbW15RGhJVEExYjNGQkF1ZDlsUnNwUzRtRmpoeFdVUzZTSVJGQTFyUURpZjhGR21xa0NBckR5eUZuRFBydEpxZnZIYVd6ejd6QnNvVlFxZWlZektuQXI0NlZpUVJaT0xKY1NKUk93c3ZkcUVIczUrcFRMaWNoQ2NteVZMSFY3M3NtV0FrLzJkRWV0dEZKVTBIbjhvaUVvdCtEZk9SUnhnOTNtcHpBaDNoZ1NDTTF5UktWaVRXMHhoY2hvL2J6aTY2QVVPZFRYVFpCM2sxV1lKZ1ZDUUsxd0JYYmhBYVc0OFFGMStLZDIyVWZ5aElQbkpxYmhucHJrdXY1VE9jUXR2TzJ3RWdqT1lYWFp1TGwvSnpGeEk0QXFyMjBtUkxoMnpLOGhSVTZ0d1FzYzlUbDV1cWhjODVXZ1YzZUw5ZTFEcjh3R0U5dGVQMGhINzF1L2s1L1dIQll1b0t0TkF0ODFLVmFhQjd6MzhDNjdmc0lwVnRaVjg2YXVmWVA4ejd3aGlMWm96eUZJbkNldkx4UkxlYUQyUHlUYTZxRlZxVjJrMUJ6b3Uwak01aGx3c0VjWTB5TVVTU3NyeWhPc1djWURaWldlTm9ZaWRwZFZDa3FNMnh5aVlpTkdmSWwwNlpXbFovTXYyTzVpTUlNR1FxR05aVmJndFNlMk5KVGc3Uy8va21EQTR5ZXFld2ozdDU4eEFONjZBRDM4b3lNMWx5NW1MVkUyTFlrVlVaUmpZVnJSRWtMTTFDMDV2SUJRa0pVRUZoTVhod2xqK1FybDdNaUlxL0F1TWlvV3dxN1JhbUZHaGxTY0lscDdKTmlvUTY4NDdIc0xqOXZHbHIzeWNqWFVyQ0lTQzNGSzVpb2MzNzZIR1lHUi95emtPZFlVcnpaL1ljU2ZmM0xRYmhVUXFFQ29jSms4UTlpV1RTS25KQ2VkVTdsMHdHWElSQWNJbVVqaEtlVENpck5ia0ZwTVd5VGhGNGFHTk43RTBNNWVVQkRXcStIREJsdGxwNTZkbkRwR2FtOEpJeHdpdk5qVndvT01peTdKeStlYzFXNW4wZW9pTmlXSHZraHJxQ3NwNGVQTWVqTHAwTkRJRnA0ZE1IREcxMERGdW9USWpHNzFHUzc0MmJNcEd4OGxFRVRybWNiRXV0NFFpWGZxaVBTMTA2UDZyU09teG5sWXEwc05jdnRDTXJUVVlCWVJaek9OQ1pmalhuN3FmdGlrcjNiWlIzdTY4eElUWGhTaFd4Qk03N2dTZ2JjeU1NbDVHcGpxSmZldDNobWRrbEM2aktzUEEwZ1VpOXRYbUJ2UWFMYSszbmx1NG5VRkJCSWxpWTY5aFYvZTBuNGNQdmJLSTFSdk4vUXc2SnRBcWxDaWw4Y1RIaVNsSVR1TTdkNGVINTgyTys2a3JLS04xZEJqM2RJRDUrWG5PV1hwWmxtbmdTMitGNnlNRG9TQzNWOVh3VmxzajI0eVY1Q2VuOGMxM1hxSmgwTVQwYkdqUkhxTGhoWENwUnhCUmJBd1hod2NYSWU2Ykh4cFpvMVVvcWNrcDVHREhKUXFUMDloVHNZci8rLzViN0NxdHBuN0l4TkxNWEt6dXFXdUl0VkRoSDM2M250Lzkrbzk4NGpNMzh1WWZubUxqOVorakxaSWdBcWlQOUoyOTBYWkI4Sit1eXl1aExFMHZ0T1pXWlJqQ3ZvNWNpZGxwcDJsa2tQdHZ1MmtSQVFRTzhNNU1DNW1wS016T3ovUHR6WHV1eHJjVlN1b0h1K20xajFPWm5zUDNqdXpuN0hBUHl6SnpjU25ESWVMdXZtRjZiS1BFeDRtWm5nM3gyOGFUeU1VUzBsV0pRakJQcjlHU0lJbG5IaGljc3RFK1pzYW9TMmQ2TmlSWU5SOGVyS2NRUzdDNEhJaGlZeGVKcHFnRnREQkFCcEFVOFlTdnl5dkI3QXFYVUVaRjZmT05KNFVSQmQrT2NHUFR5Q0FwQ2VwRmE3ejZrd040Umx6a1ZScTQ1NzdkQXNFQmZuampKM2xpeHgyQ3MrZ1BCWG5xNUVGT1JYTFlKdHNvVDUwTTk2OXBaSEswQ2lWYmk2cFlscFc3NkJtTGRFQ1Vjbkt4aEVlMjNpWVVLOG5peE9nMVdtcHlDbG1aWFFEQU0rZU9vVlVvT2RiVHhxdk5EYWl5d3VOeUVyMXgxT1dYY2IyeE1oeElreXU1WU83amVFODdjbkZZU2NmRnhqTHA5OUEyT296WmFTYzBOMGVHS2xHdzdZMjZkQjdldklmL3VPbFR3dDZpNHVKWVR4dExNM1A1YXQyTkFJSTRVMHBsd3JWaEpJZFRwaGN0QXpnRGZqNjUvRG8rRFBGeFlwNXVPSUxGYVNjL09ZMmRwY3ZZVzFVanBEcTE4Z1IrOHZYd1ZNZnZQSFkvcGVYNU5JME1ZdFNsTStGMWt5Q1JvZGRvZVdMSG5VSTRJbHJISkl0WWRscUZFbTl3aGtCd2hqZmF6dE1jRXc2TlQ0NVBkY0dDaE15MHc4OVBuM2tOclVKSlNvS2Fuc2xSZWlmSHVHRHV3ejBUd095MDgwRHRGbm9teHhod1RQREVqanRwR0RJSnlaYlBmL2xPRXBQVlBQUDRpM3pRMzhuU3pMQVhLb21MNCt4UUQxMFRJd1JDUWZLU1VqblFjZkZxQnN6dnBTeE5UMDZpanJLMExLRVd5QnlwenN0UFRtVTJvcWlqWUVoTW9XM2NqTmtaYm5FMTJVYXhlcVkrTWowNTVuRXlQUnZDTXgxdU1Zcld1MEo0YXVPSnZnNVNWQnFtUTBFK0dPakNaQnVsSnNlSXcrK2xQRjNQVzVmUEkzSFBVNzJ4a3JwTkszanB4VU1raUtUME95WTQzdHZHTFJXcmlJc1ZzYVZvQ2FNZUp4TmVsNUMraFhCSnA5VTl4WXJzZkRZVWxMTmg2MG95aXpMd3VIMzlDVXI1cndRT2lLWUhBV0pqWW9RVFZaVmhvTlpnNUlrZGQvSjI1MldhUmdaWnJzL24zYTZtUmJvaHIwalBnTWxNY1VvbXhTbVpmUC80Vy96c3pHR0NzN1BDL1h1WDFHRDNoNThUUGQyYkN5dndCcWQ1dXY0d0Z5MzlmR2JWUnZ5aElJM212c2dRSmU4aWtRUHc0dVhUZEUyTThFRHRsbkExUTZRK1Azcml2bnpkRFJRc25Jd1ZDbEtWbWNOLzNQUXA3bDIxVVJqR1ozRTVNT3JTV1paaElGbWhFcXl2RnkrZnBuZHlqT2NiVDJIM2VlaS8wTWVGdzVmSnpFcmhxUjkvQlpOdGxOWUk5eVlybEl4NW5EeHo5aWgxK2FYWEZBbEU5eVFYUzNtNzh4SXh1bkRPSWpVaitWMzRrQ2U4Yi8xT3Z2bk9TNExqRU0yTitrTVN2dm5PUzN4ajA4MFVwMlFzOG13QndmeWNIUStna0VpcEh6S3h1MklGWmFsNldpSWIvWG45WWZ5aElGL2ZjQ056VjY3d3pYZGU0dDkyM2lWa3V0N3B2SXdoTVVYSW5qMjRianRhZVFMdFl4WmViYnBhaFJlMXIrMCtqOEJGZXJVV2FWeGMySDl3MmltT2pKbjU0YW0zaGV1UDlMUmhzbzJTbXFBUmlQSkdhM2p3VS9SZDRXbzJMS29qVnVqenVXRHVaL2p4NTNrNFU4MzEyMnJZOThXUDg5U1BmbzllbzhYcW51TGNjQzg5azJNNExwOWhYVzRSU3pJTVBIditmVUUvN1lwWVJVZDdXaWt1RlhSQUUzeElCM3pZbWpBNzdlR1pPaEYyYWhvWjVIeWtsR1J0YmhHYkN5dkN1bUY1V0FHZWJXemoxK2ZlSjBPbHdUc1RyZ082b1dRcHV5Sit4ZWFDY3M0T21sQktaV2dWU2k1WkJraVVKUWhSenZyQmJvSnpzOGpGRXQ3cHZNeFV3Q2VNSE5CcnRPeGRVa1BYeEloZ2IwY3RwQ2JySURsSk9xRW83SE4vZUlZZm5ub2J1SnBQR0lub2x6ZmF6bjlreUNKS3pJVjFSbmFmaDl5a2NGdnRtZTZPOEdRWTd6UmYrT1luS0MzUHg2aExqMHdKQ085alc5RVN0aGN2WlgvcitVV1ZHYWNIdW5uc3lINjJMSzllK0RjTW1tQ0JEb2hXeGkwRTkzUTR6VmFXbWtYN3VJWGV5VEZHWEE3a1lnbTd5cFpUWXlnS1d5WGJsNU5YbHNPdm45N1B5YVlXYnExY1RmMWdONDJXZnE3TEs4SHU4MFo2dEF5a3FSSjVyN3VKbHRGaDJzYk0zRks1a29yMGJJeTZkTVFpRWM2QW45bjVPWG9ueDJpeERwR20wakRnbUdCMmJvNjVLL05zTmxiU016bEdURXdNRDlSdXdUUTVLdFN0am5sYzNMZDZNMHBwdkpEZ1h3aDZqVmFvdUk2V3VaU2w2Vm1oenhmYXBLSjlFYk56Yy9oRFFScUdUSUxPc0UxTTRYUDVxYnQrSlhXYlZ2QnZUNy9BaWU2cjQzZXM3aW1hcklOMGpvOEE4TlNOWWROODc1SWFyZ0Nhd21RMjNWRER6RXh3Smk1TzlCWDRNMk1ybzJVVlN6SnloSlRjcnRKcWFneEdSdDFUS0tYeFBOZDRncldHWXZLS3duOTNaOUlVanZKMTI2eDhiY09OVFBsOWZQbXQ1NUJKcE9GWXZOL0R3NXYzY0tLdlhYak96K3VQTUhkbERxdmJpZDNud2FoTHh4RVpZKytQS08yYXpVYisyTjVJVHFLT1FZY05xOHNoNUdjWG5tQzVXRUtHS3BGTWRhS1FhOGhVSlRMaW5oSXlXMW5xSlBaVXJtS3JzWkpYbXh0b0dEUUoxUk4ydnhlakxwMFYrbncwTWpsSFRLMXNLQ2pqRDgxbkJTbHc5TTNUM0g3RFJrcldsL0RVajc4aUpIVGc2cFJGQ0l1eW82WldmRFBUZE51c25CbnM1cC91dkFzQTU1U25NVFV0YkdZdklzRENPWnBSZG82eWwxNmpKVTRrNHB2dnZDVEVZaXJTOUNUSzVHUVdoRVZDUWtreURKcG9HRFNoMXlTVGtxQWlTWjdBMHN4Y2xtWGxNalJsRXhJV1VXaXlEcktqWkNtaUdKR2dleGJDNjIzbitYcmRqV1JwdEZSbDV2RHNoWk44K2JvYmVLVzVZVkc2Y3QvNm5UeDE4aUFUWHBjZzBnTEJHVFlXaEl0cG8rRUhpOHRCb0srRHJjWktWRktaWU1OSFJ5QXZ5Y2poOGFPdjR3OEZrWXNsek15R1dKcVppMWdrd3VLeXN6UXpEK3NCRTZJVUdkZHZxK0h1VDkySTBhYmdZTVN5MjFWYXpjN1NaZnowekNFQmwyY2kvOWJVTGdFZ05VMHJKTklGSGFCTFVBbTJLeURrVGhkQ3VQNG5USnphSENQWmljbWtxUkt4bmczWDhYejM4YzlUV3A2UFB4VGt0eGRPa0tGS1pGVk9JVldaT1p3ZjdxVm5RWkw5Z2RvdDdDaFp5cWJDY200cVc0NC9GQzRKL095cWpZdWVhZmQ1K05yYkw1Q1NvT0pZVHhzalRqdnhFZ25WbVlzZG1pZ3huanA1a00vWGJrR3JVT0tQbExGOGVOeEJOUFZabm43MUwyWTFXUWM1UGRBbElEOFFuSWxrNXFSTStqeGhVOU80aFBkNzIvak03NTdtblI4ZkloUUk4cTFINzZOMWRseHdIaTlaQjNueXhBRmFSeGNQQ3NuU3B5NE13cDJJL2lMb2dKaVlHTDcrK00rQWNDZzNXYUhrdGlXckJTcUtSWEVDTnhRa3B4RWJFOFB4bmpZYUxmMjgyM0NPMVd1V2tKdWZ5VjJmdWdHVkpvSExGN3Z3K2dPY0hlN2xVRmN6S1FrcUpyeHVkcFlzNCt4d0QyS1JpTGxJZDNvTU1YUlBXTmxXWEVWc1RBeHBTZzEzVk5XaWlwZGZiU2VWU1BIT1RKT2lETGRJUlgwVEFhbCtyekF0SzArYktuVHZ0NCtaRnpWczErV1hrcXBVODJiYmhVWE5nQTl2M3NORnl3QW0yeWdQMUc1QkhTbkJ2MkRweHozdEQwdUQwU0doZ090c1p4ZHBNalZWNjhySUxNcmc5eSsvUzZZaWtVK3ZxTVBoOXk2cVJRTFlzbU1OVzdiWEVwd0p6WWppUlA4Yy9UeVdpRGJXcEtoWkhmbmJYQ2JiS0tsS0RVK2VPSGgxSnJQNmFtaGdpN0ZTcURZQTZPbTNzS1h1YzN6bGkwL2g4L2k1NTk3ZG5HbDhuclU3Vm1LUC9ERWVnSnpFWk00TjkxS2tTNmRoMEVSVmhvSGpQVzI4MGxUUHZ2VTdzVGp0UEYxL21Qb2hFNiszWGVCQXgwVWhKRkUvYUNJblVjYy9yOW1HMldsbmFhYUI3MjNkdTZoV3FYN0loRmFoNU9uNnc4U0xKVHk1NnhOc0xWcXl5T3JKVGt6bW5wVWJydUh3WnV1UVlIR051WjFjYjZ3SU8xUStEM2V2cUdOVFlRVjJuMmZSZlpJMkx3T05BNVNVNWZIZHgrNm55VHJJVXljUDByQWdwbGFRbklaY0xPRzIzZUVvYU1BLy9mWkN3b2dlZWVTUkxwZlRlM2Q4dkVSVFZsSEF3TWx3cDNoME5JMUtKaGNxNFRZVmxqUHVjVkpqTU5Jd1pPSXpxNktUcjBvUmkrSlF1RUhSUGNPd3gwSFIwbnlXcml0bit3MXJZU3FJMStibFZIOG5uNnZaek84dmZvQk1JbVZQeFVweWsxS1l2M0tGc2pROWtyZzRQdWp2b2tpWHdlNktGUlJvVTdtOXFwYTNPeThKQjZOaHFDYzhyMkhNVEhCdWx0N0pNZHpUQVhhVlZyT3BzSncwbFFhVGJaUlYyUVdJWW1NNTJ0T0tJOElkcW5nNXJhUERERTdaS0V2VHM2bXdITlBrS04vWmNpdlBuRDJLdys4bFY1dUNNK0RubGFaNlFmSEtKUklzVGdkakhpZDNWYStsTmlmOC9rZE1MWXkwbXFuZXVFUm9oYnA0dVpNMGxVYXd0dXJ5UzNFVDVPSHZoMnVQNG1YU2J3SmRDd2xBZkx6a09ZZkRkVmQyVHJwYW5weUFaR2lhNXBGQllhSnRGUEswS1ZpY2RtRUlScEk4Z1piUllSSWtVcVpuZzl4U3NZb082ekJIajU1anJzMEpLZkVVVithemZFc1Y0alE1NTgrMzBXc2RSUzJUUmF5WktUekJnTkNVTFJIRmNjSGNoMWdrSWwyWlNNTlFENDJXUG95NmRLb3ljNW4wZTRSUWRIYWlEcmxZSXBTd20yeWozTEcwbGhjdW5VWXVrZkxwRlJ0SWxDdDQ4ZEpwakxwMGJpaFp5bXlreXZwWVQ1c1FlOHJXSkhQbHlwVkZ3MTdOTGpzcW1aeFYyUVhjWEw2Q1Zka0ZtRjNoOXphN0hNSitBZm9ueGpsYjM4SmRuN3FCRFhVcjZMMzQvMVYzNVhGTm5lbjZRY2hPUWt6WVNSREtwZ0hDTG9KWU4xeHZ0VVZibDZLdDJsK3RNLzNkVmtmdDdlSjA2dlRPeks5ajIybG5iUFhXdHJZNjQzYkhzVzdWVzF5dzR3VWRCVkZSTkVMWUlRWVNraE95a0VDNGY1eWNqeVFzZ2t2dGZmN2paT0hrL1piemZ1Lzd2TTliZ3pJVlhlbzZUNUdCOHVaYTVDL0l3K1JwbWJEYkhUWmZYMStQbml1TVZvU054K1B1MU91TmhjcjBoSUJPVGcvSy8xbEovZ216Sno2ZG1Ja2pOOHZJZFphdkwvUm1FMjYzdFdKbWdoS21MaHYrY3Y0a0pzZU1RN1FnRUxlS2IrR0QzZnVRazVlSzFQU3hXTFc2QUh3MkJ3MTNtbEhicGtWaXFBeFo4aGlrUjBTajI5bURIUmZQRUNPVU5hbWg3YVRvNTgwb1grUkZ4ZU5hYXdNU1EyVjRPWHM2c2lOajZYb0V0NzAyMFNYVXB6RVpjVjNUZ0N2TmRkQlpPcUd6ZE9KTTlRMVVhaHJKTTJWUlNnNTY0S1FUN0hXM1FkbXNpSllHWS9Pc1JTaDFxWFdOQzQ0QTI5Y1B1OHArSkR1QzFXSEhLem41bUJtZlF2TEViZG9Pekk1V0lpUWxISEZKVVRqeVhURzZ1dXhJajRqR3ZNUk1URjg5RFVIQm8yRXlXUTV6dVJ3UFlwQzdXb3FOeCtQdTdOQlRoU2taQ1FFQndTS2kwWCtwc1FacXZSWW5ibFZnL2VTbkVPZ0tUOWZxMjhoZ3FOcGEwZFhqUUpRa0NCVXQ5YmpjcEVaT1ZBS09YTGlBclZ2M1FlekxRMnFPQWdscE1SaWZud1pmUnk5bWpFN0F2aXNsT0hDMUZDb1g0eGdBUG5uNlJTTE8wV2pRb2FHakhVdlRKcUxiNlVTVnRobGhJakYybC8ySWF5MTlkY3hNamxuVjNrckl2TlBqa2xHcjE1TDMwQm1wNlhRMUpJZUhNYU9Ec0wraWhGUmxWclRVSTFJY2lGcVhicW5XVEdGOFpDeHUzRzBpREhINCtDQjZkREM2ZWh3a0JjbG5zUkZvWXNFdThVVjZ0Z0xqbytOUSttTUZicmUxWXVMRVZFeGRuRWR2UDF4T0lieGtMTDMxZ213OEhtZW5RVWU5bUo2bEVNb2pRejM2T2s2UFM4TFYxZ1k0ZTUzUW1Bd2tMd29BMldOaXNUSnJLcmFWRklHeVdUSGV0UWNYMTl4RWJsUThGTDJCOE9INklqZzJCRUtSQUpQeU05RWhkZUsydWdIUFJLWVNqMFF1bHVMQTFWTDhmdTVTRDVIWDB2bzdxTlZyMGVOMHd1cXc0MEo5dFFkTjNlcDFhcVZYcUI5MEZoTkVQRDdTSXFKZzdLTHJ1WFRtVHBUV3EzQk9mWk9zT01hallrUmpHZjFRUHB0RHZDaW1wcXk4dVpab1ZUTTF6U1YxS3B3NmRSSHpDNllpSVRNVzRJN0NXR1VNa3FjbFFpWVBRYWZKVXNQbXNONkdGd1pTekxKeFZKZjBzZ0FBRFNWSlJFRlUrWnl2OUhwallVYVdJc0I5RUdyMVdtZzdqYkE0N0ZpVk5RVit2cjY0NjZxdFRRa2JnejFYemhNRFBKMllpVXBOSXozYnVIeUVDc1ZROWVpUSsyU2ZySEtFTEJqekZrNkZVK2lMaTJVM1FGRm12SktUajl0dHJUaDJzNHp3OW1uYVJ6aHFkTFJ4bHFaTmhMcWpqUVR1bUJYZ0hZN1dtQXhFRklUUDR1QUphVENwQng1TTFOdTkySy9kYkFMVlpTVVRqUWxPQW5SVTRGbGxOczVVOTUzcWZaM0FuUW8xbmw2U2o3U01jWmlRcTRSTVRxZFgyUnpXZWd4VHNneGd0aU8zbFNCdTZVV3RYZ3NSancrZDJZUno2aXJVNnJYSWlveUIxV0hIaXF6SitKc3JOUWNBVFVZZFZvNmY0bUlEdElBMXlnK3Z2UDA4aEJKL0hEdFlqTmJqS3V3NVdvUjRSVFRHcHNWaXlmT3p3ZWR4OGRuKzd6QmhUQnhhcVE3dzJHelNOS0hTVlZNQUFNc3lKdUZPV3l1aHJNakZVaFNtNTlGZW0wdm53dHVvR3BNQnRYb3RZZ05EWVhQWSt3MkErN1lIMEZzcTFXVWwzeVVYUzZFeEdjRm5jNUFmbDR5S2xqcWtSMFNqM1VLaHA3Y1hWb2NkUzlNbllrNWtNaTQzcVpHVTJSZENOM2RhZFd3MjYvbUJERDJVYXFLTjU3WVNLTFlERjRvclNGMFhBNmFhNXRqTmNoS2x0RHJzQ0JXS2NhN21KaXBhNjlGazBHRjJ3U1RNV0RnSkYwdXVZZFVMNzZLdXJoVVh5bStnOW53MVZKb1dUTWhXWXNLVEtYaHU2U3p3ckQ2NHJhb25zOWE3SnZqWXpYSVlyR1prUmRLbjdnWEo0M0cycGhLdlRweUZubDRuOFl3WXVHOW5mNWk3RkZLQkVMZTB6U2hJSGs5RVNOeU5QeENXcFUvQzVjWWFVTFkrcjYxYXAwR1F2d2lCQWpybjIyVFVvOE5xeGw4UC93OWUvVldmdmRsczFxdTREOWxLZWhCNDNKMEdIYlU4UFVzaENnd2RqY05IaXZ2TkhrWkFlMHBNSW54ODZHS1A2WEhKU0FnT1J5QmZDSTNkaEszZmJBS0h3OGFTZ28yZ0tETVJ3SlA3UzdEcjhFbjRWcHZoWkFOajAySXhOaThCVHo2Wmdhb2IxYmh5aDFhK1l2bjY0WmU1TTBrWmFhaElqTmZ5NWtCbk1lSEExVkpvT3lsY2JhbEhsU3Z6NW83VGR5b3hUNUhoWXVMcGNWM1RBS2xBaU1MMHZBRjFKd0I2UzN0OTBoelVkN1NEc2xseHlhMjNBQVBtMldGeDJKRVFGSTVhdlpab2JLemRTSHViRm91dGpjWHlLeHpNd01OdFpjaDBRSTJvT2xlRk9ZdldraGY0TERZeTVESFFVQjFZa1RVRmF2MWRmSFh4TEtRQ0lWWmxUVVdSNmhxbUZFN0MyZzNMY0hUUGFmejd1ajhTcGFuVWlDaFVOTmQ1c0JNbTVDcXhidU55MGpINzZ4Mkh3QzJqOE0zNXM4U0ZUQTJQQXAvTkhwS1lHK3VTakhFUDJERllsSktEOHVaYVZMdGlSSEt4RlBNVUdXaDNKV0VJYjhoMW44ejkvYVZnSlVycVZFUzVQVDRvekVOZkNLQW5vek9jaTMySHRqQ1hwc0l0OXVPTjRZcDMyN2g4enRkNnZiRXdjcHpNNDhIc2NQYkFiTzlDazFFUFdZQUVpaEFaaWxUWFlYWFlNV1owSUd6OFh2eHgyMFpZT20wNDkrZlRzRmhzU0F5VkVWVkY1b0hJdUhoMzFJMzQrLzRpY0cwK2RFdVRYQ1dpbm94RGkxNFBjd010ZGNua2lEM2xNejN4aDdsTFVkRlNoemxqVS92MUVLQzZyQkJ6QmVTZ1NkbXNVT3UxU0l1SVFxZUxzVGNqUGhrcXJhZUVXWTN1TGxxTWVuS3kxbGxNOE9kdzBkUHJKS3ZPMk51RlhmdC9ENUZJQUxQWnVwM05abjAybEdGSDJzeFRiR2lucXNTQm90Q0QrNHR3OE9Nam1CNlhoUGVMNkxvbmI4b2duOFhHaVpPZlkweVNITGYrZmhYL09ub1p2ajZqOE8zbGM4U3pzRGpzZUhQYU16aGVWUWFEMVFJcFg0aUtsanBJQlVJNC9IcXhhblVCMW01WUJnRFF0TFRqeS9mMzRNdC9IQi80N3R4QWs0eXZReEVxQTllUGhmTzF0d2Q5TDZOWHh4aWJ6MklqTnlvQkpYVzM3MG4wNHJQWUh1UmlwczI2eFdKcjQvTzU4YmhIZTZ1UnRqQXhpQU5GNHd4YW8yN2g0aGxZOCs0eTNOYjJ4ZStsZktFSDBUWi9hamJHSk1uUnFyNkwxOTc3RTlTNnV6aGVWUTVWV3lzU1ErVWttVjdXcEliQlNrY2NTWExFYkFKbDdNUW5XM1lqTC9NRkZKMHNSV2g0SURadGV3MzdEMjBoN3QxZ09IcXpEQmFISGVNall4RWtDQmp5dlF5ZGhJSEZZU2RVZW5kNDk2Wmszc3NZZjBLdWt2UzQ1L081aXpDTTNtTDMwMEhEeGhWd3YralFVNFZqVTJJQ3V2akE5OGZwZU12aXRGeHdmRm1rM0hQZm9TM2crWFB4OHFyTjhESDFvTk51ZzRRdmRKMmF1MGwwc2QwbGxwY1hQUmJUNDVMUlF1bXhKbWNHR2d6MEE1Q2l6RGo2WFRIVTErb1JweGdEWlZvQ1ZxMHVRR3BFRkhxMFZ2QkhzUWVWT3J2VVdJTmIydVloZnhBamFUWlF1eE9BWGlFU3ZqL1lmbjZEcXJTSUF2engzWWxQd2VHd1lhTE1IM0E0N0MrSFk4ejc3U0ZqNC9FNE8vVjZZMkZLeHRnQWVXUW9zcnZEMEdCb0o5VHhWYXNMTUh0ZUhvcUxMbUhycDN1aE1SbGdkdGpSYUtUcmpOTWlvc0QxWTZHNzEwbDBuVFZVQnhLQ3duQmQwd2lidzlGUHRjdWlNMlByOWdPZ0tET3lzNU1RbXhHREtjL2tZSlN0Qno3dDluNHgrTUVRSHhTRzlWUG1FZGVVc2xuUllqS2daNEFpY0lEV0xSVjRVZUc5c1d2ZjcvQkVyQnlkSm90YUtCTE1INjRoSDdTaE05R1ovdUh3ZWJ5MTdoUG96Q1lzenM3RGIvZTlBUTZmZzd6TUZ6QlI4Z1NKMHpOZzVBOEFFTTRtUXdXWnA4akFENnByNExIWUpCUEdRQllnZ2JYYkFZZGZMOVp1WEVhV3ZLcXFEdSsrL1JrdXVEb3RqUlRNMWpuVW5zOGs3Um5HT0pPcldQdmJsVmk0ZUFic1hRNDdtOE5LZ0pjODhWQjRHQjIxeVNBMDMyekdmMzkvRmk4dWZ3cWpROFQ0N09POTRGK2hJNUhKb1hKOGM2bVkvTUJNK1JQbzduRkNaekVoSVNoOHdBZWVNaXdTelZRSEVYY0Y2Q1pCUnB1Ri9DMlRoK0JQVzk4ZzFUbEZKMHV4ZWRNMk5EVjZsamZSMU1wNEQ2V3ZleUUxUEFxTlJwMUh1YW03VzhwbnNmSFNtb1ZZdjJrRjg1R1ZHR0VmK29mVjBwenVMeU1SeWR3dnZqcnJIY3lQVGNPT2k2ZHh1VkdOK0tBd0pBU0ZrOWt6TVNyQm93V0pOOXpMajRhNkpoVUlrVHN0RFcrKzl6SWlaTUV3VVdaODljVWhmUDNGSWZlYVhGcGl3TVVBOU9ZR01iTjdKR1ZPenk2WmlROC9YUThBTUp1dDJ3VUMzaStHL1dFWEhtWlBlYklTbUF1L21Qd2ZxRzdYNEU2N2h2RDhWMlJOSmpSMXFVQ0kzREh4WlB0WmtEd2VhcDBXVW9FL0tscnEreGtqTnlxZWxDOE5oclVibCtPbDFRVVFpZ1JvYnRMaTg0LzM0TkNCMDMwVm9LNTA0bENHdnRkMkZCOFVoZ1dMODdIbTE3UjdyTmNiaXlXU2dLbERHV2N3UE14dXFnYUpKRURab2FPSVh4b2NIa2dZQ1JVdGRhaG9xVU9scHRIRFZYV3Zhb3dOREVWRlN4MU8zNm5zVnlqTlJDZUhNajRBZkxKbE4vSW52SVNTRTVjUklRdkc3ejVlaTkwSFB5RDVicDNaQkNuZmYwQU9Kd09aV05xUGIrcCtuOHZYTFNER3QxaHNLb2trb0dESW14b0NEM01GTUNBcjRkcmxXNWovYjY4REFKNVNwS1BKUUhlc1kyWTg0RmsxNlk2QnRnbm11dnMrN0EzbWdjNW5zU0dVaWZHYjk5ZVFzTWJCL1VYWS9PdnRZSFg3RFBrZEE0RTVHUDdtL1RWWTZPcHI3SnI1QmJqUFhzTEFvK21vYlpCSUFwU0dOcXBkbVRrV1d6OS9Dd0Fkd2RSWlRJUllDOEJWdkNDZ1l6c3NOdEdhQTRBRVYyOTNwZzdaSGU2ejB4dk05emNhZExoWldZUEZCUnV4NGZXUDBOeWt4Y0xGTS9DL2wzZGgrUytmR2RUNFVvRVFVMklVL2E3bktST3gvOUFXWW55YnJXdXZhOXU1YitNRGoyWUZNQkFiMjR6VkFVRUIwdUpqRjJBOG9zWmIzKy8xK09FTTRmYWpjOGY2S1djTmh0VHdxSDR5OC9jQ244V0dVQ1RBMGxWUGVUd2ZObS9hNXBIeEErZ0JrUEFFSG1TdW1YTnk4ZEdmTnhCaWJVY0g5ZmJvMGFJQm0vS01GSTl5QUFDNkFWemxhS2tvNHRhNVd6aXo3VFMydXFqdDArT1NjZHAxM0YrVWtvUFNldFU5dFVDQnZsSlJwcEovT0Y2TGU1OENtVHdFNnpZdUp6UDVZc2sxckgvdHczNXVLMENmYnQzUEduYTd3OFptczViQ1RmLy9RZkV3R2pvUEJSdVB6L25hMEU2dGxDa2kvQ05rSVRoKy9KK2tnSnBocjBWTGd6RXRKZ24ybm02UzVXSllib3lBTndQM2hwdU1sdWU5NEZHeFFwbnh3NGtTWENpaDlVUlRNMmkyaGtqc2o1bzdqYUFvTStLRHdwQXhXWWtkMzc2SHlWTnBYU01UWlM3ajg3bVRBVng0bUFaNjFDdUFnVWRucHVMdFovdkY2V2tocUhDUGd3L2dTUmkrRjRZajRPR05GUy9PeC9wTks5eDUrLzFnb3N3ZkNFV0NONGY5cFNQQVR6VUFnTnNnbEorNmlnL2YrWkpVb3JoakpBYS9YM2ovandtNVN2Y0VDb0dKTXBjSlJZSm5NWUxRd2tqeEtMeWd3V0NRU0FLVWVyMnhNVDAvQlF0L05aL0VmdWFPU3lOKy82TTJQa0FMZ2pDUXlVUHczSktaSHE5YkxMWTJBQVZDa1NBVGo5RDR3RSs3QWhoNGJFZXF2UlVJRW9qd242ZitRU3RiZWFVb0dUQ2FSY041VUE4SE0rZms0cmtsTXpGamRsOXR0TG5UcWhQNDh6WmdoUEdjQjhIakdBQ0E3dEI2V3h3VUVNd2NqcGlZelZDRDhLQ1lrS3ZFekxtNW1EVm5JaUprd2VTNkszdjFCbjVDd3pONFhBTUF1SzJFcWh0cWJIbG5CODZVbG1PaE1odXRWTWREMllvVVNURlFKTVZnMXB4Y1RNaFY5bnZRR2d5bWcyS3hjQ3VHU0pvL2Fqek9BUUM4QW5nSDl4ZEJkYkVhLy9XM1BqZWI4ZnRUSTZJR0hSUkZVZ3hFSWdFVVNUR1FSWVlnTVpFMi9FQ2VqU3Q4OEMxb1gvNkJUckVQQTQ5N0FBQkFiS0xNcDRRaWdVZk1vZXFHR3BTeEUzNitmbkQyT3VGME9qMCtOSmlCdmFIWEd4dEhqUnIxTDdGWStGZlFNLzJ4RzkwZFA0Y0JZTERDM0duOVVPRFBrOTc3clFORHJ6ZGVkZGk3RzBKQ3BlV2dqVjJCbjVuQnZmRnpHZ0FHcWFEYmU2UU84cm9CbmpRLzc3Ly9YK0gvQUFLb3BaNlJUM0ZaQUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIkZJRE9fMl8wIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiXSwiYWFndWlkIjoiNmRhZTQzYmVhZjljNDE3YjhiOWYxYjYxMTE2OGVjNjAiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsInV2Ijp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6dHJ1ZX0sInRyYW5zcG9ydHMiOlsidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN31dLCJmaXJtd2FyZVZlcnNpb24iOjF9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiTk9UX0ZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMDYtMDUifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI0LTA2LTA1In0seyJhYWd1aWQiOiI1NjI2YmVkNC1lNzU2LTQzMGItYTdmZi1jYTc4YzhiMTI3MzgiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjU2MjZiZWQ0LWU3NTYtNDMwYi1hN2ZmLWNhNzhjOGIxMjczOCIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJWQUxNSURPIFBSTyBGSURPIn0sImRlc2NyaXB0aW9uIjoiVkFMTUlETyBQUk8gRklETyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH0seyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwiLCJiYURlc2MiOnsic2VsZkF0dGVzdGVkRlJSIjowLjAsInNlbGZBdHRlc3RlZEZBUiI6MC4wLCJpQVBBUlRocmVzaG9sZCI6MC4wLCJtYXhUZW1wbGF0ZXMiOjEyLCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVsZXNzIiwiYmx1ZXRvb3RoIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDS0RDQ0FjK2dBd0lCQWdJVUFVMzFXK0h6ZTI1OVhwR3RmaHFqczJTQUtEWXdDZ1lJS29aSXpqMEVBd0l3YWpFTE1Ba0dBMVVFQmhNQ1JsSXhFREFPQmdOVkJBb01CMVpCVEUxSlJFOHhMekF0QmdOVkJBc01KbEJ5YjJacFpHOGdRWFYwYUdWdWRHbGpZWFJ2Y2lCQmRIUmxjM1JoZEdsdmJpQlNiMjkwTVJnd0ZnWURWUVFEREE5M2QzY3VkbUZzYldsa2J5NWpiMjB3SGhjTk1qTXdOakl5TVRJeE5UQXpXaGNOTWpneE1qRXlNVEl4TlRBeldqQnFNUXN3Q1FZRFZRUUdFd0pHVWpFUU1BNEdBMVVFQ2d3SFZrRk1UVWxFVHpFdk1DMEdBMVVFQ3d3bVVISnZabWxrYnlCQmRYUm9aVzUwYVdOaGRHOXlJRUYwZEdWemRHRjBhVzl1SUZKdmIzUXhHREFXQmdOVkJBTU1EM2QzZHk1MllXeHRhV1J2TG1OdmJUQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJLN1cweC9UMGVKZWE2ZW1DMVJGU2s3eGJyV1JVd0RlQ09CNFVuRE1xaVlET2JJbVI0R2V0MXE1clhaYWlyRDNRdW9XNTFIZ1BmUjlxaHdlMVdFa0gyYWpVekJSTUIwR0ExVWREZ1FXQkJRK0gxR3l5c0JyRWljYXMyT0xXNWhpT1FNU0V6QWZCZ05WSFNNRUdEQVdnQlErSDFHeXlzQnJFaWNhczJPTFc1aGlPUU1TRXpBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUdHSXdQSEpxbFdXcU92RkxvY2YxUGQ2V0tiZHZCSWVuMkl2ZWQ1QTYxQXdBaUJDajJwZS81Y1hxUWJSajF0cXBRZGttaWlpY3B2OENPc29hbnVZZTJteURnPT0iLCJNSUlDSHpDQ0FjU2dBd0lCQWdJVVBUUWFURzZlT3dVVS9NV3ZuK1RKSUhNM2JIb3dDZ1lJS29aSXpqMEVBd0l3YWpFTE1Ba0dBMVVFQmhNQ1JsSXhFREFPQmdOVkJBb01CMVpCVEUxSlJFOHhMekF0QmdOVkJBc01KbEJ5YjJacFpHOGdRWFYwYUdWdWRHbGpZWFJ2Y2lCQmRIUmxjM1JoZEdsdmJpQlNiMjkwTVJnd0ZnWURWUVFEREE5M2QzY3VkbUZzYldsa2J5NWpiMjB3SGhjTk1qTXdOakl5TVRJeE5UQXpXaGNOTWpneE1qRXlNVEl4TlRBeldqQmxNUXN3Q1FZRFZRUUdFd0pHVWpFUU1BNEdBMVVFQ2d3SFZrRk1UVWxFVHpFcU1DZ0dBMVVFQ3d3aFVISnZabWxrYnlCQmRYUm9aVzUwYVdOaGRHOXlJRUYwZEdWemRHRjBhVzl1TVJnd0ZnWURWUVFEREE5M2QzY3VkbUZzYldsa2J5NWpiMjB3V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVFtTm1sb1N3TFREU2NKYTREd1Y3czJ0WDBCOFZXVVlxWitoNmZnWFh6MjRhUE1pcmZHV1YycEJqZXBSemUzRFkvZWlGTXpuYmV1SElaRERYWTJsanN2bzAwd1N6QUpCZ05WSFJNRUFqQUFNQjBHQTFVZERnUVdCQlRlTUFjM2FUZ1l6dVdKK21MYXByeEVGTFhYUERBZkJnTlZIU01FR0RBV2dCUStIMUd5eXNCckVpY2FzMk9MVzVoaU9RTVNFekFLQmdncWhrak9QUVFEQWdOSkFEQkdBaUVBL2FIY3V6bStFSGp5YkxoMURZbGZCWnF6dzdNeVNKNzVpam9LVFJIU096QUNJUUQ2bm9WbFdVTEQ5eGhhTlMvelVuSlhIYzkwRmpKZ2FhK05aQXc5V1JRY1hnPT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBTFFBQUFDMENBWUFBQUE5elFZeUFBQUFDWEJJV1hNQUFBN0RBQUFPd3dISGI2aGtBQUFBR1hSRldIUlRiMlowZDJGeVpRQjNkM2N1YVc1cmMyTmhjR1V1YjNKbm0rNDhHZ0FBRVVwSlJFRlVlSnp0bmNsekZGZWV4NytaV1d1bUZoQWd3T3lJVlNDMG1HazMzVjZ3M1Y2UWdabUo2SWk1ZEVSM2ROOTdUblBwNklubzJ4eG1KbWJtMW4vQTNEb21vczFpNHcwODdRV0hzUmFNaE5nc0pDT1FoVmdrVUdZdFdaVTVoMEpqbVZZcFM5SzNLak5mdnM4RmJJVytXYWkrZXZYZTcvMFc1ZHZmSDNRaGtRaUM2dmNMa0VpWVNFTkxoRUlhV2lJVTB0QVNvWkNHbGdpRk5MUkVLS1NoSlVJaERTMFJDbWxvaVZCSVEwdUVRaHBhSWhUUzBCS2hrSWFXQ0lVMHRFUW9wS0VsUWlFTkxSRUthV2lKVUVoRFM0UkNHbG9pRkxGYVBFVFI0bmptbjA1RE5WWlM5QXIzUmpIK1h6K25hRW5tcC9uWGYwUnkyN01VTGNlYXhwMS83WVpieUZQMEZxSW1LN1JidEdGZVBFUFRpNjNlZ3NUR2ZUUTl5UStKclZpUDVOWk9tcDdaZjdvbVpnWnF1T1V3ZTkrbTZobWRSNmw2a3U4eHVvNEJDczhhWnQ4cG1wWVhOVE8wUGZFTjhyZUhhSHI2Z1RlaHhKTTBQY2tURkFWNlJ6ZE5Mbjk3Q1BaMzEybDZYdFQwVUdqMm5xQnBxYWs2cFBlOFNOT1RsRWh1ZlJheGxSdG9lc3ozdkJKcWFtanI2ek53N1J4TnorZzhSdE9TbERDNmVGczV0NUNIZGVsOW1sNGwxTlRRVG5ZR21hR1BhWHFwSGM5QmExeEwwNHM2U2tLSDN2b3lUUzl6K1J5Y3pDT2FYaVhVUEE1dDlwN2tpU2txalBZalBMMklvN2U5QmlXaDAvU283M1dGMU56UTJlRUxLRXlOMC9TTXptT0FvdEQwb2d3emNsUjhkQmZabXhkb2VwVlMrNXRDMTRIVmQ1b21GMXU5R1ltTisybDZVU1hXdEFuSnplMDBQYlBuQk9BNE5MMUs4ZVhxMit3OUFiaThmNnpSSlErSHk4WG9Pc3I3cEhOZG1QMjhSV3N4K0dMb3d0UTRzamQ3YUhwNjIrdFE0aW1hWHVSUVZCakUySE51cEFlRkIyTTB2Y1hnVzNJUzg4Q2dKZzJrOXg2bTZVV04xUGEvZ2RhNGpxYm54MkZ3RnQ4TW5ibDhGazcyTVUyUEdUK05Hc3lmblpNellRMmVwZWt0RnQ4TTdkbzVXSmMrb09teFY1bW9vS2JxcUo5dW1Vc2Z3TFd6TkwzRjRtcytORDBtVGR3SFJnWDIrV09teGxmZFQrT3JvZk5qQTdBbmJ0RDBqRTdpU1QwaU1HUFBoWHVqeUk4TjBQU1dndThWSzh6d1Rtd1ZONVlxT3V3WS9relAyNERyN3d3cS93M2Q5dzdjWW9HbVozUytSZE1TSGFQck9POFR6U25DdXZndVIyc1orRzVveDN5QTdMVlBhWHA2Mit2VWZBUmhVYmw1TUpscm42UDQrQjVOYjZuNGJtaUFlemdzWll3ZHB1bUpTbXJISVdnTnpUUTlzOC9mdytBc2dUQjA1dHBuMU45dVhaWm5lY0k4RERyV05MSlhQNlBwTFlkQUdKcTkvMHB0TzBpdHVoQU5OZDFBcmZZeCswN0JMZG8wdmVVUURFT0RmRUpXRk9nZE1rKzZIUHFCTjZERUVqUTl2eEtSNWlNd2htYkhNR1dlZEhtWXBXdjUyNWRyV2dUclJXQU1EWEFQaDdHVnp5QzVwWU9tSndyeDV1MUliTmhMMC9NekVXaytBbVZvNjlMNzFEd0FXVVQ3MXpCengvMG9ndlVpVUlZdVpXcDlSTlBUOS85TXhxVG5vbXJRbWJIbnkyZHJYZ1RyUmFBTURiQmowbW5vKzE2aDZZV2Q5SzZmUXF0YlJkTUwybllEQ0tDaGN5TzkxR29IMlRMc2U1aGJzRklSN0ZjMFBSYUJNelJjRnlheGlEYTV0UXV4cG8wMHZiQ2k2bzFJN2ZvSlRjK3ZJbGd2Z21kb1BDbWlaZjJ3RkVYbVNRTXdPcnA1c1djZmkyQzlDS1NoaTQvdUlqdjhKVTFQN3p4SzdhWVpSb3dPM3RZcmUvTXIzNHBndlFqc3UweU5TYTlZaitUV0xwcGUyRWlzMzQzNCtsMDB2U0FlQm1jSnJLRXpsOC9Cc2Fab2VsRXVvbVVtYXprNUU1bkw1Mmg2YkFKcmFMZG9VNHRvOWRaWG9DU2pGNU5XdERpTUEyL1E5TmlYWDJ3Q2EyaWdHakhwbjlIMHdrSnE5L08wMlRaQXNMY2JRTUFObmI4ekJIdjhHazB2aXRzT1p1eTVjRzhVK1Z1WGFIclZJTkNHQmdDemo3Y2lKRGQzSU5hMGlhWVhkTFM2SnFSMkhxTHB6ZlJ3NStSVWcrQWIrdUs3dkFsS2lnS2pNem94YWIyakc0cEdtdHdYa0NKWUx3SnZhTWVhUnVicUp6UTlvK3M0b0FiK24wM0JhT2Y5OHJMTDVLcEZLTjVaNWtGRWEyaEdhdHRCbWw1UVNXeG9SWHpkVHBwZTBBK0RzNFRDME5ucjUxR2NucURwUlNGaGlabjNYQ1MzbXFnbW9UQTBYQWNtY2YrV2JuMEZhcXFlcGhjMEZDME9mZjlyTkQycm45c01xSnFFdzlDWTdmclBLYUpWNGttazk3OUswUW9pNmRiRFVQVkdtcDdaL3c1TnE5cUV4dENGKzdlUSs3YWZwaWZ5dG9OYUJEczJHS2dpV0M5Q1kyaUFlekJKYm01SGZNMVdtbDVRME9yWElOWHlIRTB2TElmQldVSmxhR3ZnUTdnNWk2YW5FOE5hUWNIb2ZJc1dsZ3hpRWF3WG9USzBtOC9BR3Z5UXBtZDBIaFV1SnExMzhMcXZaZ2E1WTBOcVFlamVUVzVNZWcxUzIzOUUwL09ieEtZMjZqYXExb1BuR1lUTzBMblJmdGlUSXpROWtRNkh6Tmd6ZS9SZXJRaWRvUUhBSXRhenBWdGZGaUltcmNTVDBQZnowbU90dmxQVTRhaTFJcFNHTm50UEFrNlJvcVhFRXREYmVKY1Fma0g5eFhUZFVNV2U1eEpLUXhkbjdpTnovVHhOVDRSdEJ6UDJIT1FpV0M5Q2FXaUFteWRkT2t4dG8rblZHbmJDVmRoaXozTUpyYUd6Vno2Qll6Nms2ZWtoSGpaa2RCMmpoUitkN0V5Z2kyQzlDSzJoM2FJTjgrSVptcDdSMFIzT21MU2lVQ2QvQmIwSTFvc1F2b1BmWS9ieVNvSktWOFkvcHVuVkNuWlpXWmkzRzBESURXMVBmSVA4blNHYUhqT09XeXVvc2VjQVRJSmRMcUUyTk1CZFVkSjdYNkttWFZhYlVtc0dYaHJzVE0rZmFWcCtFWHBEV3hmZmhXdm5LRnJzeFBocW8rOTdsZGM4eHluQzZnOStFYXdYb1RlMGs1MUJadWhqbWw2WXRoM00rSG5tNnFjb3p0eW42ZmxGNkEwTmNMY2RpUTJ0aUsvZFFkT3JGcVVHbEowMFBXWmMzMCtFTUhSMitBSUtVK00wdlREMGt6YTZqdEZhQkplS1lJTXhDWGE1Q0dGb3VBNHNZdGQvdmVNdFhvT1dhcUFvMEltL2RGWmZlSXBndlJERDBKZ3RvdVZraDJsMVRVanRDRzVNbWozNk9hamQrSmVDTUlZdVRJMGpOOUpMMDJQMlZHYkRmRzM1c1FIWUV6ZG9lbjRqaktFQmNreDZ6NHRROVJVMFBSWktRb2ZlZXBpbUYvYWJ3YWNSeXREVzRFZTBHamhGaTBOdmU1Mml4VVJ2ZTQwMlROUzFjOVNtOGtGQUtFT3ozNkFnOXBPbXhwNHZud3RkRWF3WFFoa2FJTWVrbjlsTGJYaTRYR0tyTmlHNXVaMm1GOFlpV0MrRU16VDdrR01RMndJc0Y2UHpLS0FvRksyd0ZzRjZJWnloQVc0WVN1ODRFb3lZdEtKU0wzek0zcE9oTElMMVFreERFeThLTktNSnFaMjhrY0pMSmRYeUkyaU42emhpcmdzcnBFV3dYZ2hwYUlkOGxjc3NRRjM2YXlCUGduMTRtNllYSklRME5NQk50bUdQUmxzc2Fxb082YjB2MGZSRVBBek9JcXloTTFjL3BjMEVVYlFZZFhqbFl0SGIzb0FTVDFHMFNrV3dIMU8wZ29pd2hpNU5iU0lXMFQ3N3R6U3RSVCtiR0ErM0xyMFg2aUpZTDhRMU5MZ2xSZkcxTzZnRDRDc2x0bm96RWh2MzAvUkV1K3ArR3FFTnpaNThhblRVL3Vhd3JvdjN5V0RmSFVaK2JKQ21GMFNFTmpUQVhaR01qbTRvc1FSTnp4TlZoZDV4aENZbit1b01STURRek1ZcHF0NkkxSzdheGFSVE93NUJxMS9ERVF2SkpOamxJcnloblp3SmEvQXNUYStXMnc1dUVld25RaFRCZWlHOG9RRnludlR1NTZIVnJhTHBsVU5OTnlDOTUwV2FYaFMyRzBCRURKMGI2ZUcxaDFVMTZPMXZjclFXUUQvd0ptMi9YcHg1Z096MXp5bGFRU2NTaG9icndpUVcwZGJpS3B3YWUrNC9MVXdSckJmUk1EU2VYUGM2bk95eStOb1dKSjdaUTlFcXI3K1hwaWRLejQxS2lJeWhpNC91SWp2OEpVMnZtbDMvcVpOZ2IxMkNmZmNtVFMvb1JNYlFBUGRncExjZnFVNU1tcnhIajhwaGNKWklHVG96OURFY2E1cWlwYVlia05yOVBFVnJMc3dvaW12bllBM3dCcFdHZ1VnWm1qM3F0eHJiRG00UmJQZ213UzZYU0JrYUlNZWtkLzRFV3YxcW1sN3BKdktuTkwyb2JUZUFDQm82ZjJjSTluZlhPV0xrL2E3UjBRMUZpMU8wUkMyQzlTSnloZ2E0WVN5ajh6aFJpeGZkRUxVSTFvdG9HcnIvSGJpRlBFVXIzcndOaVEydHk5WkpyTi9ONndFaWNCR3NGNUUwdEdOTkkzUDFFNW9lbytzL3N3RmpkdmlDc0VXd1hrVFMwQUE1Sm4zZ1RTang1SksvWDlIaTFKckZLQjRHWjRtc29iTTN6cU00UFVIUlVsTjFTTzkrWWNuZm45cnpBcTJxbkQxekpteEUxdEJ3SEpqRWhQZmxIT2lZc1dmcjZ6TkNGOEY2RVYxRFk3YnJ2MHZSU3UzOE1iU0c1a1YvWDJsYXdDSEthd0NpdmQwQUltN293djFieUgxN2tTT21xRERhRjEvL3AzZDAwM3JuMlhlSGtiOTltYUlWVmlKdGFJQmNSTnQxZk5IZFFabmRUVVh1aUZRcGtUZTBOZkFCM0p4RjBWcHNENDNFeG4yOG1Zamt4anBoSmZLR2R2TVpXSU84akRTanMvSVZsNXFJZENVYVJiQmVSTjdRQURrbVhXRWZPaVdXb001d01mdmtkZ09RaGdZQTVFYjdZVStPVUxRcTdSU2EzdnNTMUhRRDVabWxJdGp6Rksyd0l3MzlCSXZZOWIrU2JRY3pFU2xLUmJCZVNFTS93ZXc3VFN1aVRiVThCNjF4YmRtdmF3MXJrR3A1anZJc0lGcEZzRjVJUXoraCtIZ1MyUnVrajIyUGVTaEd4MXVBeXZuUlI2MEkxZ3RwNkRsUVk5S2R4OHJHcEhWaTdIbEd4cDUvZ0RUMEhESlgvZ0xIZkVqUmlxM2FoT1NtdHIvNi84bk5CeEJmczVYeUROZk9JVFB3RVVWTEZLU2g1K0FXYlpoZnYwZlRtKy9nUnowTUVrZEJpNEkwOUZPWVBXL1R0Tkp0ci8wZ0pxM0VrMGp2ZjVXbUgvVkVwUG1RaG40S2UrSUc4bmVHS0ZwcTBrQzY5ZkQvLzNlNjlXV29xWHFLZG1GcUhMbVJYb3FXU0VoRHp3UDljRGpQMzVkTEtmVTFla1d3WGtoRHo0TjE4VjI0ZG82aWxkcCtFRnJqT21nTnpVaHRPMGpSaE92QUluWlRGWWtBRExFT0hrNTJCcGtyLzh2SnRWRFVKemVIQ2kzMm5CMitnTUxVT0VWTE5LU2h5MkQybktBbEQ1V3k2amlWTVlBOERDNkVOSFFaWmxmQjJJcjF5OWFLTlcwa3ZLSVNVUytDOVVMdW9jdmhPdFNFSlJhbElsak8vbDVFcEtFWElJanR0R1NaMWNMSUxjY0NGQjdlUVc2a0YwbFdkR0taMkJQZklIK2JFeU9majBlMmlnZTUrZk5QNnVNdVZpWG4vK1YrbUZjd25WOTRiVXhxTG1LS0N6MEd4RlVYaVNvdHBkTFFIcGk5SndOajZHcXZ6bDlNYXZqdjRmazdRTDJ5M3Nhdld1YmY2cngvSjQ3VFk0dWJaaEJYZ2RWSkIrdlNEbmJVRjNGZ1pSRmI2cGIvYVNpM0hCNEVKbC9DS2NJaTVwbjRqZTBBNHhrVmZROWkrTk5vRXYvY3IrTjN2VG8rbjR6QldVWkFTQnJhZzZDTWRjaGMrWXZ3UmJCamxvby9YazNoWHdiU3VKZGRYRHVJV2FTaEt5QUljZDhvSFFhdlRtdjR3MFVkbzZhMjZPK1ZocTRBdjZ0Q2lqTVBrTDN4aFcvUDk0Tkh0b0ovRzB6aGZwbERham5rb2JCQ3pMNlRXUEhHYjMxNXR0VjNLclJGc01jMzVYRmtndzBBeUJVQnE2amdibGJGOVVjYXprL0d5a1pWQUdBNnIrQS9oOUw0UTNzR21sTFp4bHF1MEJYaVoyVzEyWGZLbCtjeWlLdUFFWE5oeEZ3MEpWMXMxQjEwTlJYd0QxdHorUGVESm43Wmtsc3doRGM2bytMY2Q1V3Z1OUxRRlZLY2VZRHN0YzlxL3R6OHJVdXdKOFVzZ3RVVTROWDFObjdYWmlHaGxsK0JUOXhLSUY5aFJFOGFlaEg0MFM0Z0NrV3cyK3NkL0dKNytaazNVM2tGQTFPVnJkTFMwSXNnYy9YVG1vYk9vbFFFKzhKYUc4MnA4c3Z3d01QS0loN1MwSXZCS2NMcTUzWDk5OElhL0RBWWx6bzFRRk9BZzZ1S1piOStaVm9hdWlyTTlQeTVaczhLUXZ5N2x1eG9LSC9vZnBpdkxId25EYjFJQ3ZkR2tSOGJxUDV6bmlSR1JZbkdlUG1Eb1ZWUVVLd2djaWNOdlFScXNYS1dVbGQ1VlM1aElCVXJ2d3E3QUd6SGU1V1dobDRDMXRmdlZYZlNsT3VFT3ZhOFZCNHZNTnhYVTBvcHFGNUlReThCSjJmQ0dqeGJOZjNzTjEraU9QMWQxZlNEeWtMWDNIVnhGNVhzb3FXaGwwZzF0eDFST3d6T2N1VlIrVmh6YzBwZWZWZVYzRWdQQ2cvRzZMcXpMUlNpaGxWUTBITy9mR2h1MzRySzBnNWtjdEpTY1YyTS84ZmYrLzBxaE9GUG93bFloZktiaW4wcnlzZW81eUpYYUludm5MbVR3RWZqOGJKZjMxTG5ZRmREWllhV0s3VEVOMjViS3Y1bk5JR3Y3aTlzdzU5dnlWZDBJQVNrb1NWVjVyYWw0c3Q3SlpzVlhjQXNLSmpJcUxqK1dNUE54NnBuUDZsRGEyeTByNnc4YlZjYVdsSlZ2cGlNNFl2SnBkbHNXNTJEMyt4Y0lEZzlEOUxRa2tDeXU3R0lmOXliWFRCUGVqNmtvU1dCUWxPQW94dnorTHZOZHNWbFYzT1JocFlFQWlQbTR0Q2FBcm8zNUxHNndrdVUrWkNHbGxTZGhPb2lyZ0o2clBSblFuVlJGeTkxVGxxZmR0RlNYMFJMdmJPa0ZmbHBsRzkvZnpCYUtWMFNvWkVYS3hLaGtJYVdDSVUwdEVRb3BLRWxRaUVOTFJFS2FXaUpVRWhEUzRSQ0dsb2lGTkxRRXFHUWhwWUl4ZjhCZlN3WGQ1UFZTVllBQUFBQVNVVk9SSzVDWUlJPSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIkZJRE9fMl8wIiwiRklET18yXzFfUFJFIiwiRklET18yXzEiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6IjU2MjZiZWQ0ZTc1NjQzMGJhN2ZmY2E3OGM4YjEyNzM4Iiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJ1diI6ZmFsc2UsInBpblV2QXV0aFRva2VuIjp0cnVlLCJiaW9FbnJvbGwiOmZhbHNlLCJ1dkJpb0Vucm9sbCI6dHJ1ZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwiYWx3YXlzVXYiOnRydWV9LCJtYXhNc2dTaXplIjoxMjAwLCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjIwLCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjEyOCwidHJhbnNwb3J0cyI6WyJibGUiXX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIzLTA4LTIzIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiVkFMTUlETyBQUk8gRklETyIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjMwODIzMDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjMtMDgtMjMiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MX1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNC0wMi0xNCJ9LHsiYWFndWlkIjoiMjYwZTMwMjEtNDgyZC00NDJkLTgzOGMtN2VkZmJlMTUzYjdlIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiIyNjBlMzAyMS00ODJkLTQ0MmQtODM4Yy03ZWRmYmUxNTNiN2UiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiRmVpdGlhbiBlUGFzcyBGSURPMi1ORkMgUGx1cyBBdXRoZW50aWNhdG9yIn0sImRlc2NyaXB0aW9uIjoiRmVpdGlhbiBlUGFzcyBGSURPMi1ORkMgUGx1cyBBdXRoZW50aWNhdG9yIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlCZmpDQ0FTV2dBd0lCQWdJQkFUQUtCZ2dxaGtqT1BRUURBakFYTVJVd0V3WURWUVFEREF4R1ZDQkdTVVJQSURBeU1EQXdJQmNOTVRZd05UQXhNREF3TURBd1doZ1BNakExTURBMU1ERXdNREF3TURCYU1CY3hGVEFUQmdOVkJBTU1ERVpVSUVaSlJFOGdNREl3TURCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQk5CbXJScVZPeHp0VEpWTjE5dnRkcWNMN3RLUWVvbDJubk0yL3lZZ3Zrc1pucjUwU0tiVmdJRWt6SFFWT3U4MExWRUUzbFZoZU8xSGpnZ3hBbFQ2bzRXallEQmVNQjBHQTFVZERnUVdCQlJKRldRdDFidkczak02WGdtVi9JY2pOdE8vQ3pBZkJnTlZIU01FR0RBV2dCUkpGV1F0MWJ2RzNqTTZYZ21WL0ljak50Ty9DekFNQmdOVkhSTUVCVEFEQVFIL01BNEdBMVVkRHdFQi93UUVBd0lCQmpBS0JnZ3Foa2pPUFFRREFnTkhBREJFQWlBd2ZQcWdJV0lVQitRQkJhVkdzZEh5MHM1Uk14bGt6cFNYL3pTeVRabVVwUUlnQjJ3SjZuWlJNOG9YL25BNDNSaDZTSm92TTJYd0NDSC8vK0xpckJBYkIwTT0iLCJNSUlCMkRDQ0FYNmdBd0lCQWdJUUZaOTd3czJKR1BFb2E1TkkrcDh6MWpBS0JnZ3Foa2pPUFFRREFqQkxNUXN3Q1FZRFZRUUdFd0pEVGpFZE1Cc0dBMVVFQ2d3VVJtVnBkR2xoYmlCVVpXTm9ibTlzYjJkcFpYTXhIVEFiQmdOVkJBTU1GRVpsYVhScFlXNGdSa2xFVHlCU2IyOTBJRU5CTUNBWERURTRNRFF3TVRBd01EQXdNRm9ZRHpJd05EZ3dNek14TWpNMU9UVTVXakJMTVFzd0NRWURWUVFHRXdKRFRqRWRNQnNHQTFVRUNnd1VSbVZwZEdsaGJpQlVaV05vYm05c2IyZHBaWE14SFRBYkJnTlZCQU1NRkVabGFYUnBZVzRnUmtsRVR5QlNiMjkwSUVOQk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRW5mQUtianZNWDFFeTFiNmsrV1FRZE5WTXQ5SmdHV3lKM1B2TTRCU0s1WHFUZm8rKzBvQWovNHRud3lJTDBIRkJSOVN0K2t0anFTWERmamlYQXVyczg2TkNNRUF3SFFZRFZSME9CQllFRk5HaG1FMkJmOE81YS9ZSFo3MVFFdjZRUmZGVU1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0RnWURWUjBQQVFIL0JBUURBZ0VHTUFvR0NDcUdTTTQ5QkFNQ0EwZ0FNRVVDSVFDM3NUMWxCakdlRit4S1RwelYxS1lVMmNrYWhUZDRtTEp5ellPaGFIdjRpZ0lnRDJKWWtmeUg1UTRCcG84cnJvTzBJdDdvWWpGMmtneS9lU1ozVTlHbGFxdz0iLCJNSUlCMkRDQ0FYNmdBd0lCQWdJUUdCVXJRYmREcm0yMEZabkRzWDJDQlRBS0JnZ3Foa2pPUFFRREFqQkxNUXN3Q1FZRFZRUUdFd0pWVXpFZE1Cc0dBMVVFQ2d3VVJtVnBkR2xoYmlCVVpXTm9ibTlzYjJkcFpYTXhIVEFiQmdOVkJBTU1GRVpsYVhScFlXNGdSa2xFVHlCU2IyOTBJRU5CTUNBWERURTRNRFF3TVRBd01EQXdNRm9ZRHpJd05EZ3dNek14TWpNMU9UVTVXakJMTVFzd0NRWURWUVFHRXdKVlV6RWRNQnNHQTFVRUNnd1VSbVZwZEdsaGJpQlVaV05vYm05c2IyZHBaWE14SFRBYkJnTlZCQU1NRkVabGFYUnBZVzRnUmtsRVR5QlNiMjkwSUVOQk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRXNGWUVFaGlKdXFxbk1nUWpTaWl2QmpWN0RHQ1RmNFhCQkgvQjd1dlpzS3hYU2hGMEw4dURJU1dVdmNFeGl4UnM2Z0Izb2xkU3Jqb3g2TDhUOTROT3pxTkNNRUF3SFFZRFZSME9CQllFRkV1OWh5WVJyUnlKendSWXZuRFNDSXhyRmlPM01BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0RnWURWUjBQQVFIL0JBUURBZ0VHTUFvR0NDcUdTTTQ5QkFNQ0EwZ0FNRVVDSURIU2IybWJOREFVTlh2cFBVMG9XS2VOeWUwZlEybDlEMDFBUjIrc0xaZGhBaUVBbzN3ejY4NElGTVZzQ0NSbXVKcXhINkZRUkVTTnFlenVvMUUrS2tHeFd1TT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBRkFBQUFBVUNBTUFBQUF0QmtybEFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFCSFpwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFBRHcvZUhCaFkydGxkQ0JpWldkcGJqMGk3N3UvSWlCcFpEMGlWelZOTUUxd1EyVm9hVWg2Y21WVGVrNVVZM3ByWXpsa0lqOCtJRHg0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJa0ZrYjJKbElGaE5VQ0JEYjNKbElEVXVOaTFqTURFMElEYzVMakUxTmpjNU55d2dNakF4TkM4d09DOHlNQzB3T1RvMU16b3dNaUFnSUNBZ0lDQWdJajRnUEhKa1pqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWo0Z1BISmtaanBFWlhOamNtbHdkR2x2YmlCeVpHWTZZV0p2ZFhROUlpSWdlRzFzYm5NNmVHMXdQU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2SWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhodGJHNXpPbkJvYjNSdmMyaHZjRDBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5d2FHOTBiM05vYjNBdk1TNHdMeUlnZUcxc2JuTTZlRzF3VFUwOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXRiUzhpSUhodGJHNXpPbk4wVW1WbVBTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZjMVI1Y0dVdlVtVnpiM1Z5WTJWU1pXWWpJaUI0YlhBNlEzSmxZWFJ2Y2xSdmIydzlJa0ZrYjJKbElGQm9iM1J2YzJodmNDQkRReUF5TURFMElDaE5ZV05wYm5SdmMyZ3BJaUI0YlhBNlEzSmxZWFJsUkdGMFpUMGlNakF4TmkweE1pMHpNRlF4TkRvek16b3dPQ3N3T0Rvd01DSWdlRzF3T2sxdlpHbG1lVVJoZEdVOUlqSXdNVFl0TVRJdE16QlVNRGM2TXpFNk5Ua3JNRGc2TURBaUlIaHRjRHBOWlhSaFpHRjBZVVJoZEdVOUlqSXdNVFl0TVRJdE16QlVNRGM2TXpFNk5Ua3JNRGc2TURBaUlHUmpPbVp2Y20xaGREMGlhVzFoWjJVdmNHNW5JaUJ3YUc5MGIzTm9iM0E2U0dsemRHOXllVDBpTWpBeE5pMHhNaTB6TUZReE5Ub3pNRG95Tnlzd09Eb3dNQ1lqZURrNzVwYUg1THUySU9hY3F1YWdoK21pbUMweElPVzNzdWFKaytXOGdDWWplRUU3SWlCNGJYQk5UVHBKYm5OMFlXNWpaVWxFUFNKNGJYQXVhV2xrT2pKRk56RkNSa1pEUXpZM1JqRXhSVFk1TnpoRVFUbERRa0kyTkRZelJqa3dJaUI0YlhCTlRUcEViMk4xYldWdWRFbEVQU0o0YlhBdVpHbGtPakpGTnpGQ1JrWkVRelkzUmpFeFJUWTVOemhFUVRsRFFrSTJORFl6Umprd0lqNGdQSGh0Y0UxTk9rUmxjbWwyWldSR2NtOXRJSE4wVW1WbU9tbHVjM1JoYm1ObFNVUTlJbmh0Y0M1cGFXUTZNa1UzTVVKR1JrRkROamRHTVRGRk5qazNPRVJCT1VOQ1FqWTBOak5HT1RBaUlITjBVbVZtT21SdlkzVnRaVzUwU1VROUluaHRjQzVrYVdRNk1rVTNNVUpHUmtKRE5qZEdNVEZGTmprM09FUkJPVU5DUWpZME5qTkdPVEFpTHo0Z1BDOXlaR1k2UkdWelkzSnBjSFJwYjI0K0lEd3ZjbVJtT2xKRVJqNGdQQzk0T25odGNHMWxkR0UrSUR3L2VIQmhZMnRsZENCbGJtUTlJbklpUHo0NzdKWEZBQUFBWUZCTVZFWC8vLzhFVnFJWFphdkcyT29xY0xHMnpPT2t3dDBCU0p0cWxjWFY0dSthdXRsV2hiems3UFVBTVk5SGNyS2p0TmJxOGZlQWw4YUJvc3p6OXZwZGpzR0dxdEYzbjh1VHNOU1pwYzZKc05UNSt2MHhZS251OFBmZjUvTDQ4ZmcvZnJpY3pKZ1lBQUFEQUVsRVFWUjQya1JVQ1piRElBakZYWk9ZMVRhdE5jMzliemtzU1ljM3I0TUU0Zk1CQWFENnpsOHkvOVRPZ2V0OGQ1amZONzhid00vZERDUnBSNTIxelhmb2pISjA1SUl5aEJBVVNWQU9OZEd6Qll0MmY3S0ZyZmtKYUFrSGg5RlpoY0RYSFJrVEtvOU1MaWhHYWF2SW1uVjNxeUVYMEVwcmd6LzREd1VEN2tDSFJuZDhRRk40M0dvNFVWbUREZ3phNHcyN29pemRBMitjSyt1dVVwampvMit4d2MvNDJXNTB4NUxHWWVEQnNSMEhWSXg1eDhpRjYwQ2JsYlRFRWtGcjI3Yk5EQlVWU3ExT0tWUGJFNjJiM0VIOEZxQmc1T09PRXVjMnQ4WkppcU1PdUdwK2NLamc3d1ZHY2VvenFONHB4Z1ZQUWtqRllnYlZKS0RVaERDallyYXdQNXE0RVRnQzlmSU1SSHRpdHBRY0N2Sk9FTGNiTXNRZ25jaVJrbGpweVFqdkc0NGpxQlVFVEZpQmkxUEVJeWVrT3pzVytUeTVjTEhvczVSK2RNUzFMdFNTeGYzZ1FIY3pSMkNJNGdNTnBXNElSQTFRTWE2dEo0K0M2dUh1R0U4bU5ESXlGcWcvT1AvTU1VdWVTNklxOFM5MGRBZUJKU0V5L3FLa0srQk53ejhjWVk0amI1SjZ1NGlXQ0kyQjFaNTZMVzVrRWM0aGtkTXBzdlVDNTU4NVNYMFF1YmNnTnF5ZmdERkVjVHQrNDAvMFM1Tngwd2FDdzNPS2tjT2JBNUluMEFZcDAxcGpqdzJuNjI2VURqdEh3YTI4aUh1VEtxdHJ2K3JlVzQxTlo2aUdscjd1dUxKQ2ZrRnRjdGNHMDRzZ20xZU5TK1phRG5wYVRFckdveVg1SksyaU16OHhzMG5Pd1dHY1BETjQ5cWFDZDRiekpvekRabS9hQksrRW96THcrWGhOQmlZd0hmMHNpT3UxWFBrRy96S3d2cVlLY2ZTd0RFY0gvb1VlMDdlcy9XUThySXlnMkRPWGo4dGprWmR1REIvYjhoekRsbE1NT0NTNUJFbmQ1MzRmOHRpM1VaYzRrTXMzeEx5YWZNU3NKaGRHOFhQcWpOazV0QWdPMjVmZUtDaG5WZERqL0owRk1rT3NVL3hNQnYwd0ZoWWVFR2ZWSDEzZnVEVTB5REZMYTRmYzdSbldIQmZ1VEZWMnRFbU53YWRjN2FjM1VZMmpmQmw3SFQzNmZlMzRpUU81bU5DRkZCVzA3S2pQZ3FoT0xVMDF2WjhQdWVaMkpDbEZaTjhqa1VzNjl1a2E5ZVBwNitFZkw0QUY1K055d1NiaXJIdGNCOE1sL2drd0FFamtLNjRLakhQZUFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xX1BSRSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiMjYwZTMwMjE0ODJkNDQyZDgzOGM3ZWRmYmUxNTNiN2UiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZX0sIm1heE1zZ1NpemUiOjEwMjQsInBpblV2QXV0aFByb3RvY29scyI6WzFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjYsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6OTYsInRyYW5zcG9ydHMiOlsibmZjIiwidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN31dfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTA3LTE5In1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNC0wNy0xOSJ9LHsiYWFndWlkIjoiOTVlNGQ1OGMtMDU2ZS00YTY1LTg2NmQtZjVhNjk2NTllODgwIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI5NWU0ZDU4Yy0wNTZlLTRhNjUtODY2ZC1mNWE2OTY1OWU4ODAiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiVHJ1VSBXaW5kb3dzIEF1dGhlbnRpY2F0b3IifSwiZGVzY3JpcHRpb24iOiJUcnVVIFdpbmRvd3MgQXV0aGVudGljYXRvciIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsic29mdHdhcmUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsic29mdHdhcmUiXSwiY3J5cHRvU3RyZW5ndGgiOjI1NiwiYXR0YWNobWVudEhpbnQiOlsiaW50ZXJuYWwiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNTekNDQWZLZ0F3SUJBZ0lVVzNYSzh5eXdiQVdsaWdsaXhJRjYzZHZxWXk4d0NnWUlLb1pJemowRUF3SXdmREVMTUFrR0ExVUVCaE1DVlZNeEVUQVBCZ05WQkFnTUNFTnZiRzl5WVdSdk1ROHdEUVlEVlFRSERBWkVaVzUyWlhJeEV6QVJCZ05WQkFvTUNsUnlkVlVzSUVsdVl5NHhJakFnQmdOVkJBc01HVUYxZEdobGJuUnBZMkYwYjNJZ1FYUjBaWE4wWVhScGIyNHhFREFPQmdOVkJBTU1CM1J5ZFhVdVlXa3dJQmNOTWpNeE1UQXpNakF6TmpVeFdoZ1BNakExTXpFd01qWXlNRE0yTlRGYU1Id3hDekFKQmdOVkJBWVRBbFZUTVJFd0R3WURWUVFJREFoRGIyeHZjbUZrYnpFUE1BMEdBMVVFQnd3R1JHVnVkbVZ5TVJNd0VRWURWUVFLREFwVWNuVlZMQ0JKYm1NdU1TSXdJQVlEVlFRTERCbEJkWFJvWlc1MGFXTmhkRzl5SUVGMGRHVnpkR0YwYVc5dU1SQXdEZ1lEVlFRRERBZDBjblYxTG1GcE1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRU5BdmJ0Y2NNcjdqL1NSV21xSUVaVFJXTkp5ajZtc1lyNWxHZUFnZFNHeUM5TzAzNTZSSWVjdWFWaU9xejBEeGdTMWYvNUtQYlpwMXQweUQyZlZSWDk2TlFNRTR3SFFZRFZSME9CQllFRkE1dEwxMGc4OHQycVhsUGxoSVNJMmRJemxhVk1COEdBMVVkSXdRWU1CYUFGQTV0TDEwZzg4dDJxWGxQbGhJU0kyZEl6bGFWTUF3R0ExVWRFd0VCL3dRQ01BQXdDZ1lJS29aSXpqMEVBd0lEUndBd1JBSWdYZnV2anNwKzR2NWlHT3FuZ1VnT2cxaG1iZ0ZQRk1nSWp5V3hDS3F3L2Q4Q0lGaW1MTlhMREl3QStvSWJQMXlPZnFFOHhrNnE3LzRMV09WWWtSQUxvQkMyIiwiTUlJQ2VEQ0NBaDJnQXdJQkFnSVVlaGRWakpKSkV5SzNDQUVTSFUzNVRHWSs3aVl3Q2dZSUtvWkl6ajBFQXdJd2dZOHhDekFKQmdOVkJBWVRBbFZUTVJFd0R3WURWUVFJREFoRGIyeHZjbUZrYnpFUE1BMEdBMVVFQnd3R1JHVnVkbVZ5TVJNd0VRWURWUVFLREFwVWNuVlZMQ0JKYm1NdU1SZ3dGZ1lEVlFRTERBOUZiblJsY25CeWFYTmxJRUYxZEdneEVEQU9CZ05WQkFNTUIzUnlkWFV1WVdreEd6QVpCZ2txaGtpRzl3MEJDUUVXREdsdVptOUFkSEoxZFM1aGFUQWdGdzB5TXpFeE1ESXhNelUzTkRCYUdBOHlNRFV6TVRBeU5URXpOVGMwTUZvd2dZOHhDekFKQmdOVkJBWVRBbFZUTVJFd0R3WURWUVFJREFoRGIyeHZjbUZrYnpFUE1BMEdBMVVFQnd3R1JHVnVkbVZ5TVJNd0VRWURWUVFLREFwVWNuVlZMQ0JKYm1NdU1SZ3dGZ1lEVlFRTERBOUZiblJsY25CeWFYTmxJRUYxZEdneEVEQU9CZ05WQkFNTUIzUnlkWFV1WVdreEd6QVpCZ2txaGtpRzl3MEJDUUVXREdsdVptOUFkSEoxZFM1aGFUQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJCcnZ0YW5seFhySmtTMlFWL0NIZHp1YnBDbS9xOE8weTZzMEc1RUMzRXlDL2ZBdlU4eUk0NytYdlpxT3ZyaVBLK29jUlNMeENhL3BmTW1YQ3ZoUWFvMmpVekJSTUIwR0ExVWREZ1FXQkJUNlQrUmJ1cE9ZUHc4YjJZeHdNL0NxK1diaGtUQWZCZ05WSFNNRUdEQVdnQlQ2VCtSYnVwT1lQdzhiMll4d00vQ3ErV2Joa1RBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUFvR0NDcUdTTTQ5QkFNQ0Ewa0FNRVlDSVFDaHl0MlVXQ2krQlpPcjFOalhwZ0c2c3g4S2xFZGtETFhaWTZ4NnZya09hQUloQUowVWZFUDRWNk0vYXFoWGI4RmJ3WEswbWVBY2E4SVZkREpub1NNcEJHd0kiXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFCQUFBQUFRQUNBWUFBQUIvSFN1REFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUYwS1NVUkJWSGdCN04xOWpKN2xmU2Y2QzJ6aUFZOWp4dUFaRDJhaFlDZm5uT2lrb0VRNVN1VklTYzdtbEtwTmxRcm5qelJVY2M1cVNWdXpsVFp3Q2xtcE1RMzBhQk96QmExV0hnbzUydFdNTmpRNjBsaU5EcEZLVHJwdFZwbTIyaW9SSk5MWnM0a2RVbUx3dk5nZWcyY2NEeTltbjk5amhoampsM2w1bnVlK3IvdjZmS1JaMDAxS3NabTVuL3Y2WHIrWHl6N3cwVjkvUFFFQUFBQ05kbmtDQUFBQUdrOEFBQUFBQUFVUUFBQUFBRUFCQkFBQUFBQlFBQUVBQUFBQUZFQUFBQUFBQUFVUUFBQUFBRUFCQkFBQUFBQlFBQUVBQUFBQUZFQUFBQUFBQUFVUUFBQUFBRUFCQkFBQUFBQlFBQUVBQUFBQUZFQUFBQUFBQUFVUUFBQUFBRUFCQkFBQUFBQlFBQUVBQUFBQUZFQUFBQUFBQUFVUUFBQUFBRUFCQkFBQUFBQlFBQUVBQUFBQUZFQUFBQUFBQUFVUUFBQUFBRUFCQkFBQUFBQlFBQUVBQUFBQUZFQUFBQUFBQUFVUUFBQUFBRUFCQkFBQUFBQlFBQUVBQUFBQUZFQUFBQUFBQUFVUUFBQUFBRUFCQkFBQUFBQlFBQUVBQUFBQUZFQUFBQUFBQUFVUUFBQUFBRUFCQkFBQUFBQlFBQUVBQUFBQUZFQUFBQUFBQUFVUUFBQUFBRUFCQkFBQUFBQlFBQUVBQUFBQUZFQUFBQUFBQUFVUUFBQUFBRUFCQkFBQUFBQlFBQUVBQUFBQUZFQUFBQUFBQUFVUUFBQUFBRUFCQkFBQUFBQlFBQUVBQUFBQUZFQUFBQUFBQUFVUUFBQUFBRUFCQkFBQUFBQlFBQUVBQUFBQUZFQUFBQUFBQUFVUUFBQUFBRUFCQkFBQUFBQlFBQUVBQUFBQUZFQUFBQUFBQUFVUUFBQUFBRUFCQkFBQUFBQlFBQUVBQUFBQUZFQUFBQUFBQUFVUUFBQUFBRUFCQkFBQUFBQlFBQUVBQUFBQUZFQUFBQUFBQUFVUUFBQUFBRUFCQkFBQUFBQlFBQUVBQUFBQUZFQUFBQUFBQUFVUUFBQUFBRUFCQkFBQUFBQlFBQUVBQUFBQUZFQUFBQUFBQUFVUUFBQUFBRUFCQkFBQUFBQlFBQUVBQUFBQUZFQUFBQUFBQUFVUUFBQUFBRUFCQkFBQUFBQlFBQUVBQUFBQUZFQUFBQUFBQUFVUUFBQUFBRUFCQkFBQUFBQlFBQUVBQUFBQUZFQUFBQUFBQUFVUUFBQUFBRUFCQkFBQUFBQlFBQUVBQUFBQUZFQUFBQUFBQUFVUUFBQUFBRUFCQkFBQUFBQlFBQUVBQUFBQUZFQUFBQUFBQUFVUUFBQUFBRUFCQkFBQUFBQlFBQUVBQUFBQUZFQUFBQUFBQUFVUUFBQUFBRUFCQkFBQUFBQlFBQUVBQUFBQUZFQUFBQUFBQUFVUUFBQUFBRUFCQkFBQUFBQlFBQUVBQUFBQUZFQUFBQUFBQUFVUUFBQUFBRUFCQkFBQUFBQlFBQUVBQUFBQUZFQUFBQUFBQUFVUUFBQUFBRUFCQkFBQUFBQlFBQUVBQUFBQUZFQUFBQUFBQUFWWW00REtmZWFhSTJsWDZ3c0FvRW5tVGwrZXhtYzNwZjJ0ci9ocm9GcVhmZUNqdi81NkFpcTM1WXBYMmtIQWJlOThNUUVBNU82cEZ6ZW1zV1BYcHNsWHJraEFQUWdBb0dhMnIxdElYN3J1VURzUUFBREl6ZE1ucjBwalI2OU56L3o4cWdUVWl3QUFhaW9xQWFJaVFCQUFBT1FnU3Z4SHBvZlNVeTl0VEVBOW1RRUFOUlVmbnBHYy8yb3JDREFmQUFDb0szMytrQThWQUpBQjh3RUFnRHFLY3YrSHBvYjErVU1tQkFDUWtSM3JUNlRkZzlQYUFnQ0FTaDA0MVpkR1pnYjErVU5tdEFCQVJpYm1ONlNKWnplWUR3QUFWQ0pLL0VlUGJrNzdad2NTa0I4QkFHUm9jVDZBdGdBQW9GZWl6eittKyt2emgzeHBBWURNUlJYQTdzM1RhVWYvaVFRQTBHblI1Ly9vekdBNnNOQ1hnTHdKQUtBaHRBVUFBSjBVZy8zMlRnN3I4NGNHRVFCQXcwUUlzSFBnV09xLy9IUUNBRmd1YS8yZ3VRUUEwRURXQmdJQUsvSFVpeHZUeU15UWd6ODBsQUFBR2l5Q2dEKzkvamx0QVFEQVJVV2Zmd3o0VSs0UHpTWUFnQUtZRHdBQW5FLzArY2ZCUHpZTUFjMW5EU0FVSUQ3VUorYjYwKzBEczJsWEt3Z0FBTXFtengvS3BBSUFDbU0rQUFDVUxTNEZvczgvYnYrQnNnZ0FvRkMzWEhreTNidmxzTFlBQUNpRVBuOUFBQUNGTXg4QUFKb3RTdnhIajI1TysyY0hFbEEyTXdDZ2NERWZJRzRDYnI5Nk51MGNPSllBZ09ZWWJkMzQ2L01IRnFrQUFONWtQZ0FBTkVPVSt6ODBOYXpQSDNnTEZRREFtK0lsWWUva2NIcW05ZEtnTFFBQTh2UG1aN2srZitBOFZBQUFGN1R6NnRsMCs4QXhRUUFBMU56aVdyOFk4Z2R3SVNvQWdBc2FQejZRSnViN3RRVUFRSTB0SHZ6MStRT1hvZ0lBV0pLb0F2akRvY1BwMXF0T0pnQ2dldGI2QWNzbEFBQ1d4ZHBBQUtoVzlQbVBUQSsxcS9RQWxrTUFBS3hJaEFDeE5yRC84dE1KQU9pK3hUNS9hLzJBbFJJQUFDdG1iU0FBOU1aVEwyNU1ZOGV1dGRZUFdCVUJBTEJxRVFUODZmWFBhUXNBZ0E3VDV3OTBrZ0FBNkJqekFRQ2dNNkxFUC9yOG4zcHBZd0xvRkdzQWdZNkpsNVNKdWY1MCs4QnMydFVLQWdDQTVkSG5EM1NUQ2dDZ0s4d0hBSURsaVhML2g2YUc5ZmtEWFNNQUFMcHF4L29UYWZmZ3RMWUFBTGlBQTZmNjBzak1vRDUvb091MEFBQmROVEcvSVUwOHU4RjhBQUE0UjVUNGp4N2RuUGJQRGlTQVhoQUFBRDBSOHdIaVprTmJBQUNrZHA5L1RQZlg1dy8wa2hZQW9PZWlDbUQzNXVtMG8vOUVBb0NTUkovL296T0Q2Y0JDWHdMb05RRUFVQmx0QVFDVUlnYjc3WjBjMXVjUFZFb0FBRlJ1c1MxQUVBQkEwMWpyQjlTSkFBQ29CV3NEQVdpYXAxN2NtRVptaGh6OGdkb1FBQUMxRWtIQWw2NDdsTGF2VzBnQWtLUG84NDhCZjhyOWdib1JBQUMxWkQ0QUFMbUpQdjg0K01mbUc0QTZFZ0FBdFJZaHdLN1dGd0RVbFQ1L0lCY0NBS0QyekFjQW9LNG01dnJiZmY1eCt3OVFkd0lBSUJzeEZ5RG1BMmdMQUtCcSt2eUJIQWtBZ095WUR3QkFWYUxFZi9UbzVyUi9kaUFCNUdadEFzaE1ERmVLRzVkZmJRVUI1Z01BMEN1anJSdC9mZjVBemxRQUFGa3pId0NBYm90eS80ZW1odlg1QTlsVEFRQmtMVjdHOWs0T3AyZGFMMmZhQWdEb3BEYy9ZL1Q1QXcyaEFnQm9GUE1CQUZpdHhiVitNZVFQb0VsVUFBQ05zamdmUUZzQUFDdXhlUERYNXc4MGtRb0FvTEdpQ21EMzV1bTBvLzlFQW9DTHNkWVBLSUVBQUdnOGJRRUFYRWowK1k5TUQ2V0orZjRFMEhRQ0FLQVlFUUxzSERpVytpOC9uUUFvMjJLZnY3VitRRWtFQUVCUnJBMEU0S2tYTjZheFk5ZGE2d2NVUndBQUZDbUNnRCs5L2psdEFRQUYwZWNQbEU0QUFCVE5mQUNBNW9zUy8ranpqMDB4QUNXekJoQW9XcndNVHN6MXA5c0hadE91VmhBQVFIUG84d2Q0S3hVQUFHOHdId0NnT2FMYy82R3BZWDMrQUdjUkFBQ2M0NVlyVDZaN3R4eldGZ0NRb1Rqdzc1MGMxdWNQY0I0Q0FJQUxNQjhBSUI5UjRqOTZkSFBhUHp1UUFEZy9Nd0FBTGlEbUE4UU4wdTFYejZhZEE4Y1NBUFVVZmY0eDNWK2ZQOERGcVFBQVdBTHpBUURxSi9yOEg1MFpUQWNXK2hJQWw2WUNBR0FKM3V3cGJiMXNhZ3NBcUpZK2Y0Q1ZVUUVBc0FJN3I1NU50dzhjRXdRQTlKQzFmZ0Nyb3dJQVlBWEdqdytraWZsK2JRRUFQZkxVaXh2VHlNeVFnei9BS3FnQUFGaWxxQUw0MG5XSDB2WjFDd21Bem9vKy94andwOXdmWVBVRUFBQWRZbTBnUU9kRW4zOGMvR01qQ3dDZElRQUE2TEFJQVhhMXZnQllQbjMrQU4wakFBRG9BbXNEQVpZdnl2MGZtaHB1My80RDBIa0NBSUF1aWlEZ1Q2OS9UbHNBd0VYbzh3Zm9EUUVBUUErWUR3RHdkbEhpUDNwMGM5by9PNUFBNkQ1ckFBRjZJSVpZeGMzV3I3YUNBUE1CQUZLN3p6OXUvZlg1QS9TT0NnQ0FIak1mQUNpWlBuK0E2Z2dBQUNxeVkvMkp0SHR3V2xzQVVJUTQ4TytkSE5ibkQxQWhMUUFBRlptWTM1QW1udDFnUGdEUWFJdHIvYUxjSDRCcUNRQUFLclk0SDBCYkFOQTArdndCNmtVTEFFQ05SQlhBN3MzVGFVZi9pUVNRSzJ2OUFPcEpBQUJRUTlvQ2dCeEZuLy9JOUZDYW1POVBBTlNQQUFDZ3hoYmJBZ1FCUUowdDl2bnZiMzBwOXdlb0x3RUFRTTFaR3dqVTJWTXZia3hqeDY2MTFnOGdBd0lBZ0V4RUVQQ2w2dzZsN2VzV0VrRFY5UGtENUVjQUFKQVo4d0dBS2tXSi8ralJ6V24vN0VBQ0lDOENBSUJNUlFpd3EvVUYwQ3VqclJ0L2ZmNEErUklBQUdUTWZBQ2dGNkxjLzZHcFlYMytBSmtUQUFBMFFNd0ZpUGtBMmdLQVRvb0QvOTdKWVgzK0FLa1pCQUFBRFdJK0FOQUordndCbW1sdEFxQXhubnBwWS91bTd2YXJaOVBPZ1dNSllMbkdaemUxcC92cjh3ZG9IaFVBQUExbFBnQ3dITkhuLytqTVlEcXcwSmNBYUNZVkFBQU45V2J2YnV1bFhsc0FjQ0g2L0FIS29RSUFvQkE3cjU1TnR3OGNFd1FBYlZIaUgrWCsxdm9CbEVNRkFFQWh4bzhQcEluNWZtMEJRSHJxeFkxcFpHYkl3UitnTUNvQUFBb1VWUUIvT0hRNDNYclZ5UVNVSS9yOFk4Q2ZjbitBTWdrQUFBcG1iU0NVSVc3NlI2YUgycHRDQUNpWEFBQ0FkZ2dRYXdQN0x6K2RnT2JRNXcvQTJRUUFBTFJaR3dqTkV1WCtEMDBOdDZmOEEwQVFBQUR3RmhFRS9PbjF6MmtMZ0V3ZE9OV1hSbVlHOWZrRDhEWUNBQURPeTN3QXlFdVUrSThlM1p6Mnp3NGtBRGdmYXdBQk9LOFlGall4MTU5dUg1aE51MXBCQUZCZjBlY2YwLzMxK1FOd01Tb0FBTGdrOHdHZ252VDVBN0FjQWdBQWx1eVdLMCttZTdjYzFoWUFGWXNELzk3SllYMytBQ3lMQUFDQVpUTWZBS3F4dU5Zdnl2MEJZTG5NQUFCZzJXSStRTnc4M243MWJObzVjQ3dCM2FmUEg0RFZVZ0VBd0txWUR3RGRGWDMrY2ZCWDdnL0FhcWtBQUdCVjN1eEZiaDFTdEFWQTU4VFAxc2owVUpxWTcwOEEwQWtxQUFEb3FKMVh6NmJiQjQ0SkFtQ0ZGdnY4OTdlK2xQc0QwRWsrVmFpZEtDTWVjbkNBYkkwZkgwajNITHFoUFNjQVdKNkp1ZjcwdS85NGsxNS95Rmk4eDJxTG82NThzbEE3VWZMNCtJMC9UYnV1T1pLQVBDMjJCZHp4N0xaMFlHRmRBaTR1K3Z6di90a05hYzhMMTdkL2ZvRDhyTC84ZFB2OTlmRWJueld6ZzlwYXMvV21kLzF4Z2hxWmV2V0t0R25OYSttM054MXRwNmZ6cDlla2d3dDlDY2pQWE92bjk4a1hCOUpVNjBDemJkMUM2bDl6T2dHL0VMZjhYejB5bVA3dDlKYjI1eCtRcHgzcjU5SURXdytsSGYxejZhOWZlcWNxT0dyTERBQnFxZi95MTlMWGJqN1krdlhNWVNGS0l2Zk5ETFVQRVVDK1lraWc2aDQ0WS9Ub3RmcjhJWE8zWEhVeTdkcDBwUDFyaUFxZWFJTlR5VU5kcVFDZ2xsNSsvZkwwanN0ZVQ3ZSs4VEM5NFIwdnA1MERzMm5MMmxmU2daZjcybFVCUUg2aUpQSmJyVnVScUFUWXZtNGhRWW1pM0Q4T0NCTnpHMXFmZDVjbElEOVI3dis1YTJmU3Z4eWFmTXZRMjlGam05TS96SzlQVUZjcUFLaTFyOTEwOEcyVHhDTlJqZUZJU3FzZ2J4RUFmT202UTdZRlVJdzNWMmJxRFlhc1JTVmJiTHRackZSZEZEL2pNZnNHNmt3QVFLM2RjdVhKOVBBL2VlNjgvMWw3UC9MTVlQc0dCY2hYelBxSTFnQkJBRTBWSmY2alJ6ZW4vYk1EQ2NoWGxQbmZPM1Q0Z3A5WEVmQzVvS0x1dEFCUWF6RVE2ZFpXQ0hDK0IyMlVFSDkwd3dsdEFaQzVHUEw1dC9NYjJnTURGOXQrb0NuR1p6ZWwrMSs0M3EwL1pDelcrajE0M2ZQdG0vOExEYk45NnNXTmFlell0UW5xVGdVQXRSZUgvMmdGdUpSb0MvakxWdXBxVUNEa0szN2VveHJBL21SeUYzMytqODRNcGdPMjJFQzJvcy8vczIrVSsxOUtsUDRiL0VjT1ZBQlFlM0VyR0QxVzc3bnk1eGY5NzBWWlZxeGVzVFlROGhVLzc5SFdjL0RVdXZRL1hYbksya0N5RXdlQVBhMGIvN2dKUFBiYTJnVGthV2ZyMEI5ci9XNVpRbVZhVlByODlZbDNKc2lCQ2dDeWNPNWF3RXM1OHdLMlZSQUFtVE1mZ0Z4RW4zOGNBcXoxZzd6RmdYLzN0ZE5wZTkrcEpmMzNyZjBqTnlvQXlFS3NCWHlsOVVMMWdmWHpTL3J2eDYzaGIxNTkzSHdBeU56aWZBQnJBNm16NlAzOVY4L2ZrUDdoNUhwci9TQlRaL2Y1YjFyNzZwTC85MFptaHN6NElDc3FBTWpLNHpjK203YXQ0QkFROHdGR2p4ck1Bam1MS29EZG02ZlRqdjRUQ2VvZyt2emo4OFhMUCtRcit2dy9PWERzdkd2OUxzWGFQM0lrQUNBckYxc0xlQ254a0k0WE5ldFpJRy9hQXFoYWxQaVBUQS81UElITXhlZko3c0dwWlIvOEY5MzlzeHNFZ0dSSEFFQjJIcjcrdVNVTlpMbVFBd3ZyMmdPYWJBdUF2QzF1Q3hBRTBDdjYvS0VaNGoxeTE2WWpxM3Fmak5hZnZWUERDWElqQUNBNzhiTC8ySTNQcmppdFhSUVA3dEZqMXdvQ0lHUFdCdElyVWU3L1VPdGwzNkF2eUZlVSs5L1Z1dkh2eEdlR3RYL2t5aEJBc2hOcnd0NXgyZXZwMWxXa3RtRjczMEo3YmVCbGwxMlcvdXVwS3hPUW44VzFnZDk2YVdQN0ptZlQydGNTZE5LQlUzM3BUdzVmMTE3ck4yZWdMR1FwRHY2ZjNuUTAvZEYxejZmM0xIRzYvOFhFWEtuNDdJRWNxUUFnUzh0ZEMzZ3A1Z05BTTVnUFFLZEVpZi9vMGMxcC8reEFBdklWNGZDOVE0Yzc5cmtRNzR5Lys0ODNhUU1pV3lvQXlGS3NCWng5ZFczN0JyOFRZc1ZZL0wyc0RZUzh4ZHJBL2NjM3RmOTZ0VlZDbEN2Ni9POS80WHJEdlNCajI5YWRTbDhjZnFHOTFpL2U4em9sMXY2cEhDVm5LZ0RJMm1vSEFsNkkrUUNRUC9NQldDNTkvcEMvS1BmL2JPdlpIMnY5T3MzYVA1cEFBRURXVnJNVzhGSzBCVUF6YkYrM2tMNTAzU0Z0QVZ4UVBPLzNUZzY3OFlmTTdXd2QraVA0N1ZTTDZMa00vcU1KdEFDUXRhbFhyMmkvMU1jTGZxY3R0Z1hFN2VIQmwvdFVBMENtanIyMnR0MFdFRC9EMjFyUGlrNldncEszNk9IOTgyUFh0TXY5NC9NRXlGTlVnMFpWNkVjM25HZ1BpdTZHcUE1MUtVUVRxQUFnZTUxYUMzZ3AyZ0lnZi9HOHVQM3EyZll0RVdXTFB2K284akxJQy9JMTFIcW0zemQwdUN2dG9HZUw1MFFNL25QN1R4T29BQ0I3blZvTGVDbXhObkRud0d5NkxKMFpOUGJ5NjVjbElDL3h2UGlIayt2YmF3T2pFcUFiMVVQVVcvVDVSN24va3k5ZTdUa09tVnBjNi9mQWRjLzNwTDByS29Xcy9hTXBWQURRQ0xFVzhMRWJmOXF6SGwvekFhQVpyQTBzUnp5M1I2YUgwc1I4ZndMeTFlMCsvM01aL0VmVENBQm9qQjNyVDZRSHRqNmZlaWsrRk80K2RJTzJBTWpjenF0bjJ4T2pCUUhORTZXN1VlNi92L1dsM0IveUZXWCt1ellkNlhxNS83bWlZc2lGRDAwaUFLQlJ1clVXOEZMTUI0RDhXUnZZUEJOei9lMmQzZnAySVYvUjUzL1g1cW4yWU9aZSsyN3JHUkpEUXFGSkJBQTBTamZYQWw1SzlCYnZueDFJbzBldlRVQytJZ2o0dzZIRFhaOHJRdmRFbjMrMGFWbnJCL21LUHY5UERoeHJWMmYxcXR6L1hOYiswVVNHQU5Jb3NjWXBQaVRlYytYUFU2L0ZJTUtvUG9qYncvbFdHQkNEQW9IOFJKZ1hRd0t0RGN4UGxQaC85Y2hnK3JmVFc2ejFnNHp0V0QrWEh0aDZxSDNyMzYyMWZwZGk3UjlOcFFLQXhvbUJnRis3K1dCbGFmR2laMW8zVUYrWkd0WVdBSm1MdG9DZEZkNUFzVFJSZmFYUEgvSldWWi8vdWVMVy81NURON2o5cDVGVUFOQTRMNzkrZVUvV0FsNUtsQkhIMnNBdGExOUpCMTd1YTFjRkFQbUpNdksvT2ZGT2F3TnJLc3I5NDBVOVZuUlo2d2Q1aW5ML3oxMDdrLzdsMEdRdGhySEc3QkF0UkRTVkNnQWE2MnMzSGF6TlJPOUlrUGNmMzVUR1p3Y1NrSzk0cHZ6cDljL1pGbEFEOFZ5TjZkeGUwaUZ2dTY0NVVtbWYvN21zL2FQcFZBRFFXTkdEZjl2R2VrenpqcHZERDZ5Zk54OEFNdGNlOXRrSzg4d0hxTTVpbi8vL2VmZzZmZjZRc1NqemorMU5WZmI1bjAvYy9udFBvOGtFQURSV3ZCamVldVhKV3QzVXhXRWhQdWkwQlVEZTR1VXdCZ1ZHeTVGdEFiMHpQcnVwdlpMTHJUL2tLOWI2UFhqZDgrMmIvN3FGcURINGIreVliVTQwbXhZQUdpME8vOUVLVUZmUkVqRCt4bTBpa0tkNHpzU2d3S2p3b1R1aXovL1JtY0Ywd0swY1pDdjYvRC83UnJsL1hWbjdSd2xVQU5Cb1VhNWIxVnJBcFhqUGxhZmFGUUhhQWlCZjhaeUpBWFN4K1NOS1dyVUZkRTY4aU85cDNmakhqZHl4MTlZbUlFK3hTU1hXK2xVOTNmOWlvc0xvcjArOE0wSFRxUUNnOGVxeUZ2QlN6cnpvYmhVRVFPYWlFaUFxQWd3S1hMbm84NCtYY1d2OUlHOXg0Tjk5N1hUYTNuY3ExWm0xZjVSRUJRQ05GejI2cjdSZUlHTUlYNTNGcmVGdlhuM2NmQURJWElSNGZ6dS93ZHJBRllvZTNILzEvQTNwSDA2dXQ5WVBNblYybi8rbXRhK211clAyajVLb0FLQVlqOS80Ykh0cWR5N0dqbDZiUm84YVJBTTVNeDlnNmFMUFA1NTdYc0loWDlIbi84bUJZN1ZhNjNjcDF2NVJHZ0VBeGJqbHlwUHA0WC95WE1wSmZDakZDL0ZUTDIxTVFMNjBCVnhZbFBpUFRBOTV6a0htNGptM2UzQXFtNFAvb3MvOTR5OXB2NlFvQWdDS0V2dG02enlBNWtJT0xLeHJEOEt5TFFEeXR2UHEyZmJObUNCQW56ODBSYnhYN2RwMEpNdjNxMmc1MmpzMW5LQWtBZ0NLRWkvZGo5MzRiSGJwOUtMNG9CbzlkcTBnQURLbUxlQk11ZjlEclpkdUE3Y2dYOUhudnl2elo1bTFmNVRJRUVDS0V1dTYzbkhaNituV0RGUHFzTDF2b2IwMmNNT2EwL3BrSVZPTGF3Ty85ZExHOW8zWnByV3ZwVkljT05XWC91VHdkZTIxZm5NR25VS1dvcy8vMDV1T3BudTNIRTd2cWZsMC80dUpPVXZ4TEliU3FBQ2dPTG1zQmJ3VTh3R2dHVXFZRHhBbC9xTkhONmY5c3dNSnlGZUVsdmNPSGM3K2VXWHdIeVZUQVVCeFlpM2c3S3RyMnpmcE9Zc1ZZL0Y3Mkw3dVZQci9UbDFwYlNCa0tvWlA3VCsrcWYzWHVWWW5YVXowK2QvL3d2V3FsaUJqY2ZDL3IzWHdqNUwvZVAvSVhhejlNL2lQVXFrQW9GaTVEZ1M4RVBNQklIOU5tZytnengveUYrWCtuMjA5azJKNGFWTkVLOUx2UHZkTENVb2xBS0JZT2E0RnZCUnRBZEFNMjljdHBDOWRkeWpMTXR0NER1MmRISGJqRDVuYjljYkJQL2VXeVhNWi9FZnB0QUJRcktsWHIyaS9YTWVMZGxNc3RnWEU3V0g4L243Mjhyb0U1T2ZZYTJ2YmJRRlIwYk90OVl6S29lUTIrdnovL05nMTZhSEo2OUxQWG5sSEF2SVUxWkZSSlJudkV6RTR1VW1pV3RJbENhVlRBVURSbWpJUThFSzBCVUQrSXFqODFWYW9GN2R4ZFJWOS9sRjlGQ0VBa0tkWTZ4ZDkvazFxanp4YjNQcmZjK2dHdC84VVR3VUFSWXVCZ0RtdkJieVVXQnU0YzJBMlhkYjY2OGxYcnpBb0VESVU2L0tpbkQ3V0JrWWxRSjJxbHFMUFA4cjluM3p4NnRiejlMSUU1R2R4cmQ4RDF6M2Y2RzBrNDhjM1dmc0hTUVVBdEtzQUhydnhwNDMrMEF2bUEwQXo3RmgvSXUwZW5LNzBtZVY1QXMyd2MrQlllL0JvVXlzaEYxbjdCNzhnQUlEVXpJR0FGeElmZ250ZTJHcjlEV1F1Wm4zRWkzc3ZnNEFvOFk5eS8vMnRMK1gra0s4bzg5KzE2VWhqeS8zUEZaVktBa3M0UXdzQXBETURBVzl0aFFCTnJ3SUlVVUw4bTFjZlQxdld2cElPdk55bkxRQXlGU0hlMzg1djZGbGJ3TVJjZjdyL2hldmJKYlRLL1NGUDdUNy9MWWZUbmRmT0ZQSE9FNzdiZW5iOVgwY0dFM0NHQ2dCNFEwbFZBR2VMTXQ3UjFoZVFyM2lSMzcxNU91M29QNUU2TGZyODR6bGhyUi9rSy9yOFB6bHdySkZyL1M3RjJqOTRLeFVBOElhb0FvZ1B4ZmRjK2ZOVWtpai9pMUxpcUFUUUZnQjVpa0dCZjMzaW5SMWRHeGdsL2w5dDNacjkyK2t0N2VjamtLZjRqUCtqNFJjYXVkYnZVcXo5ZzdkVEFRQm5hZnBhd0VzNXNMQXU3WG5oZW1zRElYTXhHMkRuS203Nm9pcEluei9rcmJRKy8zTlord2ZucHdJQXp0TDB0WUNYc21udGErMjFnZVlEUU42aVhQOXZUcnh6MmZNQm90dy9YcGoxK1VPK290ei84ME9UNmE3TjA4WDArWi9QeU15UTFpVTREeFVBY0I1ZnUrbGcwUithSVJMei9jYzNwZkhaZ1FUa0s1NWxmM3I5Y3hkOXBzWFBlMHpKOXJJTStTcTV6LzljMXY3QmhRa0E0RHhLSFFoNFB2WjlRek9jYjIxZ2xQaVBIdDJjOWd2NklHdFI1bi92ME9IaUx5OFc3WG4rK2pReDM1K0F0OU1DQU9kUjBsckFTNGtTNGhnY3BDMEE4aFpEUHFPcUowU2IwL2pzcHZaYVA3ZitrSzl0NjA2bEx3Ni9rSGExd3IxT0RQOXNnaGo4OS9YWmF4SndmaW9BNEFMaThCK3RBTHhWdEFTTXR3NFJCZ1ZDdnFJODJJQS95RmVVKzMrMmRlaVBjbi9leXRvL3VEZ1ZBSEFCYzIvY2RKYzZFUEJDM25QbHFYWkZnTFdCa0M4RC9pQmZzZUhqZ2EySGlwM3Vmekd4d1NTR21BSVhKdjZIaTRpK1dMZGtieGZWRWZkdU9keXVrUEFDQWdEZEY1KzNqOTN3MDdSNzgzVHhRLzdPSjI3OXYyVmVFVnlTQ2dDNGlGZ0wrRW9yQVBqQSt2bkUyMFcvWVF3V014OEFBTHBqcUJXNlAzamQ4KzArLzAxclgwMmNuN1Yvc0RTdU51RVN4bzhQcEdkTytrQzVtTnMydnBpZXVPbmdtU0ZFYmlVQVlOV2l6ejgrVngrLzhWblZkcGNRdC8rMkZjSFNDQUJnQ2FLbmpFdUxGV09QdFY1VW9pb0FBRmlaK0J4OTR1WUQ3YzlWd2ZxbDdYbGhhd0tXUmdBQVN4QWxaUk56OXNrdXhkbnpBWWFzVVFTQUpZdWIvb2V2ZjY3OU9lcmd2elN4OXM5UVlsaTZ0UWxZa3VndGl3OW1IOGhMRTBGQXRBWEVCL1Bvc1d1dERRU0FDNGpBUE1yOVZkQXQzOWd4Vlpxd0hJWUF3aExGV3NCM1hQYTZ0WURMdEwxdklkMjI4YVcwcnZWblp6Z1BBUHhDOVBsL2V0UFI5bzMvZS9wT0paYkgyajlZUGkwQXNBeXhGbkRTVGZheTlWLytXcnVQTWRvQzNHNEFRRW83MXMrMUIvenA4MStaZUI4Yk02TUpsazBBQU1zUVZRQStiRlp1Y1Q1QTlEZWFEd0JBaVJiNy9CL1llcWo5dWNqS2VCK0RsUkVBd0RMRm1obHJBVmNuWG41aVBzQzlRNGNGQVFBVUljcjk3OW84M1Q3OFcrdTNPZ2RPOVZuN0J5c2tBSUFWc0Jhd00yN2IrR0w3UldqbndHd0NnS2FLQVgreDF1LzJnV09KMWJ2L3NMVi9zRklDQUZpQkdHWW5lZTZNS0gvY3ZYbktmQUFBR2lkdSt1UHpUWjkvNThSMklmT1lZT1dzQVlRVkdwa2VURHY2VC9oQTc1REYrUUMzWEhuUzJrQUFzaGJ0YmZjTkhWYnEzMkh0d1gvVy9zR3FxQUNBRllxQmdPT3pteEtkRlcwQk1SOGdxZ0xNQndBZ0o0dDkvdkU1NXZEZmVWRjk2ZllmVmtjQUFLdGdMV0QzeEZ5QW1BK2dMUUNBSE93Y09LYlB2NHVzL1lQT0VBREFLa1FWd043SjRVUjNMTFlGUlAva3RuV25FZ0RVemVKYXY5MnRtMzl0Z2QzajhBK2RZUVlBckZJTUJJeTFnRXI5dWllQ2dNZHYvR2w3OEkvNUFBRFVnVDcvM3ZudVhML2h5OUFoS2dDZ0EvYk5EQ2E2YjNFK1FLeFRBb0FxUko5L2ZBNDlmdU96RHY4OTh1ak1VQUk2UXdBQUhYQndvYzlBd0I2S2RVcldCZ0xRYS9HNUUzMysxdnIxanJWLzBGa0NBT2lRc2FQWHBMblRmcVI2WlhFK3dHT3RHeGpiQWdEb3BzVSsvL2pjY2ZEdkhXdi9vUFBXYkwzcFhYK2NnRlY3K2ZYTDB5dXRBT0FENitjVHZiTnA3V3Z0alFGYjFyNlNEcnpjbCtaUHIwa0EwQWxSN3YvNW9jbjJhcjh0d3VhZUc1a1phczlhQWpySEVFRG9vUEhqQSszMVAxNFNlaS9tQThRTnpiZGUycGhHVFFvR1lCWGk0UC9KMXVkNWZLYTc4YTlHM1A0Yi9BZWRwMTRaT3N4YXdPcEU4R0krQUFDckVXRnlEUGpUNTErdGtXbUQvNkFiVkFCQWgxa0xXTDNGK1FBNytrK2tmVE5EMWdZQ2NFbmIxcDFxbC9yNy9LNWVEUDZibU85UFFPZGQ5b0dQL3ZyckNlaW9PSURHTFRUMUVDOFNvOGV1RlFRQThEWlI3di9aMW0xL2xQdFREM2M4dTgza2YrZ1NRd0NoQytiZUdFUjNxMXVFV3RqZXQ1QjI5TSsxQndUR3lrWUFDRHRiaC80SHRoNXk2MThqTWNkblltNURBcnJEREFEb2t2MnpBOVlDMXNoaVcwQlVaa1JyQUFEbGlnTi9mQjdzM2p5dHo3OUc0dGIvV3diL1FWZXBBSUF1c1Jhd252clhuRTRmM1hEQzJrQ0FBZzIxd3VBSHIzcys3WW9CZjJzYy9Pdkcyai9vUHRlVDBFV3hGakFHQWxJL3NUYndpZGJ0VDd3RURsbmJDTkJvMGVjZnovdDQ3aXYzcnlkci82QTNCQURRWlhiUzExdXNlWHI0K3Vlc0RRUm9xT2p6ZitMbUErM25QZlcxNTRXdENlZytBUUIwV1pTeVRjeFpaVk5uWjg4SFVBMEEwQXh4MHg4QnJ6Ny8rb3R0UFliMFFtK3NUVURYUlU5YnZJaDRBYW0zQ0FLaVBOVGFRSUI4UlpCNzErYXA5dllYOGpCMlRMVWs5SW9LQU9pQjZHc2JuOTJVeU1QWjh3RUF5TU5pbi8vak56N3I4SitSYUpXY0ZMaER6d2dBb0VkaUxhQVB1THhFdjJpMEJaZ1BBRkJ2TzliUHRRLys4ZHhXYlplUGVDOGFNeXNKZWtvQUFEMHlkM3FORDdrTUxjNEhlS3oxWW1rK0FFQzlMUGI1UDdEMVVQdDVUVjY4RjBIdkNRQ2doMks5amJXQWVkcSticUhkRm5EdjBHRkJBRURGb3R6L3JzM1Q3Y08vdFg1NU9uQ3F6OW8vcUlBQUFIck1Xc0M4eFh5QWVPSGNPVENiQU9pOTZQT1B0WDYzRHh4TDVPdit3OWIrUVJVRUFOQmpzUlpRNHAyM0tEUGR2WG5LZkFDQUhvcWIvbmp1NnZQUFgyemJNUmNKcW1FTklGUmdaSG93N2VnLzRRVW1jNHZ6QVc2NThxUzFnUUJkRW0xWDl3MGRWdXJmRU8zQmY5YitRV1ZVQUVBRllpQ2d0WUROc2JnMk1Lb0N6QWNBNkl6RlB2OTR2anI4TjBkVVFicjloK29JQUtBaTFnSTJUOHdGaVBrQTJnSUFWbWZud0RGOS9nMWs3UjlVVHdBQUZZa3FnTDJUdzRsbVdXd0wrSm9iSzRCbGkrZm1ZemY4Tk8xdTNmeHJrMnNlaDMrb25oa0FVS0VZQ0JockFSMFVteWVDZ0tnR2lFRkg1Z01BWEp3Ky8rYUx6ME5Ea0tGNktnQ2dZdnRtQmhQTnRUZ2ZZSmVwMVFCdkUzMys4WHg4L01abkhmNGJ6dUEvcUljMVcyOTYxeDhub0RLenI2MXRId3pmYytYUEU4MFZMN1lmM2ZCU21qKzlKaDFjNkVzQXBZdDVLVisrL21mcEErdm4wenN1ZXozUlhHNy9vVDVVQUVBTmpCMjlKczJkOXVQWWRHZlBCN0F0QUNoVkJLTFJJaFhQUTVWUnpXZnRIOVNMQ2dDb2daZGZ2enk5MGdvQTRoYUU1dXRmYzdxOU1XREwybGZTZ1pmNzJsVUJBRTBYd2VkZGc5UHQxWDViaEtERkdKa1phczg4QXVyQmxTUFV4UGh4YXdGTEUvTUJIci94cCszK1Y0Q21PcnZQMzVyVXNzUjdqZEovcUJjQkFOU0l0WURsNmIvOHRmU1oxb3R4dEFWNE1RYWFKc3I5NCtEL0dZTlFpelF5UFpTQWVyRUdFR3JFV3NCeUxjNEgyTkYvSXUyYkdiSTJFTWhhZkk3dDJuVEU1MW5CWXZEZnhIeC9BdXJsc2c5ODlOZU5YWVVhaVlOZzNBWlR0bmh4R2oxMnJTQUF5RXFVKzMrMmRkdC8rOEN4Uk5udWVIYWIxa2FvSVVNQW9XYm0zaGdJZDZ0Yms2SnQ3MXRJTy9ybnJBMEVzaEY5L245MDNmTnUvVW1qUjY5TkUzTWJFbEEvWmdCQURlMmZIYkFXa0xlc0RUUWZBS2lyT1BESGMwcWZQeUZ1L2ZmUGJrcEFQYWtBZ0JxeUZwQ3p4ZHJBcUFhd05oQ29rMWpyOTJEcnhqOXUvdU01QlNIVy92M1hVMWNtb0o1Y01VSk54VnJBR0FnSWkySnQ0Qk90VzdaNDJSNnlReHVveU9KYXYzZ2VLZmZuYk5iK1FmMEpBS0RHb29jT3poVmx0ZzlmLzV5MkFLRG5kZzRjUzAvY2ZLRDlISUp6M1hQb2hnVFVtd0FBYWl6V0FrN01XYUhEMjUwOUgyRGJ1bE1Kb0p2aXBqK0N4OTJicC9YNWMxNnh2Y2JVZjZpL3RRbW90ZWlsaXhjdkwxeWNUd1FCajkvNFUyc0RnYTZJZHFPN05rKzE1NURBeFl3ZFU3VUlPVkFCQURVWGFmcTRhYnBjd3RuekFRQldhN0hQLy9FYm4zWDQ1NUtpWmRIdFArUkJBQUFaaUxXQVBsaFppdWpMdFRZUVdJMTRmc1RCMzFvL2xpTGVUOGJNTElKc0NBQWdBM09uMTZTUjZjRUVTN0U0SCtDeDFndThiUUhBVWkzMitjZnpZNHRuQjB2azhBOTVNUU1BTWpFeHY2RzlGdERLSlpacSs3cUZkbHVBK1FEQXhVUzUvMTJEVXlxSFdMWURwL3FzL1lQTXFBQ0FqRmdMeUVyRWZJQzQxVE1mQURqYllwOS9yUFZ6K0djbDdqKzhOUUY1V2JQMXBuZjljUUt5TVBYcUZlMSt6UGRjK2ZNRXk5Ry81blM3ZWlSZTh1ZFByMGtIRi9vU1VLNTRIbng1NjgvYUEvN2VjZG5yQ1pZcnFzdmMva04rdEFCQVpzYU9YdE82MFQxdU1CTXJzamdmWUVmL2liUnZaa2hiQUJSbTI3cFQ2YTdOMDlySldKWDI0RDlyL3lCTEFnRElUQXdFakxXQXlybFpqYmoxaXkvekFhQU1VZTcvMmRibnh1MER4eEtzMXZqeFRiWVRRYWJNQUlBTVdRdElweXpPQjlEL0M4MjFzM1hvano1L2gzODZJZDQvNGowRXlKTUFBRElVVlFCN0o0Y1RkTUppVzhEWGJqclliZzBBbWlISy9CKzc0YWRwOStacGJXTjBqTFYva0RjdEFKQ3BaMzUrbGJXQWRGUUVBUTljOTd5MkFNamNVT3RuK2I2aHd6NGY2RGlEL3lCL0tnQWdZL3RtQmhOMFdyUUZQSEhUd2ZhY0NiZUdrSS9GdFg2UDMvaXN3ejlkWWZBZjVNOGFRTWpZN0d0cnJRV2thK0lBOGRFTkwxa2JDQm1JT1I1ZnZ2NW42UVByNTYzMW95dGlBUEZmbjNobkF2S21BZ0F5RjJzQjUwNzdVYVk3enA0UEVHWEZRTDFFVUJlRFBPUG5WTVVPM2RJZS9IZmM0RDlvQWhVQWtMbVhYNzg4dmRJS0FPTFdCN3FsZjgzcHRITmdObTFaKzBvNjhISmZ1eW9BcUU0RWNuY05UcWU3TmsrM2d6cm9wcEdab2Zic0lTQi9oZ0JDQTR5M1V2bmJOaDVQMjlZdEpPaW1tQSt3WThOY2V3WFVxRW5RMEhQUjUvL0pnV1B0bFg1dS9PbUZ1UDAzK0ErYVE5MHdOTVMrNmFFRXZkQi8rV3ZwTTljY2FiY0ZSTjh4MEJzNzFzKzFCL3g5eG9CT2VzamFZV2dXRlFEUUVOWUMwbXVMOHdFaUJQaksxTEMxZ2RBbDhWemZ0ZW1JNXpzOUYydi9sUDVEczF6MmdZLyt1bEd4MEJCeElIdXNkVHZrWm9ncXhJdmk2TEZyQlFIUUlWSHUvOW5XYlgrVSswTVY3bmgyVzdzRkFHZ09Rd0NoUWVaT3IybXZmN3JWTFJFVjJONjNrSGIwejZYTExyc3MvZGRUVnlaZzVYYTFEdjUvZE4zemJ2MnBUTXg1bVpqYmtJQm1NUU1BR2lhR3Mxa0xTRldpQ21YMzVpbnpBV0NGNHNBZlB6LzYvS2xTZSszZjdLWUVOSThLQUdnWWF3R3BnMWdiR05VQTFnYkMwc1JhdndkYk4vNXg4eDgvUDFDbFdQdW5rZ3VheVJCQWFLQllDN2lqLzRUU1VTb1hhd1BqYTN4Mm9QVjl1Y2w4QURpSFBuL3F4dG8vYURaMXd0QlFkclJUSnpzSFp0UEQxeituTFFET3NyTjE2SC9pNWdNTy85VEtQWWR1U0VCekNRQ2dvV0p0andTZk9sbGNHeGo5emFwVEtGbDgvMGNndG52enRENS9haVcydVpqNkQ4Mm1CUUFhYk96b3RlMVdBQytZMUVrRUFYSDRzVGFRMGtTZi8zMURod1ZnMUZJTUVCNDdwbm9RbWs0RkFEUllwUGpqcHZoU1V6RWI0SW1iRHA0WmVpYWtvc0dpenorK3p4Ky84Vm1IZjJvcjNoZmMva1B6Q1FDZzRXSXRvQTkwNml6V25UM1dPaGlaRDBBVHhmZDFIUHl0OWFQTzRqMWh6T3dnS0lJQUFCcHU3dlNhTkRJOW1LRE96cDRQRUdYU2tMdkZQdi80dnQ3aWU1cWFjL2lIY3BnQkFBV1ltTitRbmpsNWxkSlRhaThPU3RFV1lENEF1WXB5LzdzR3AxUzBrSTJuVHhvYURDVlJBUUNGc0JhUW5NUjhnTWR2L0dtN2J4cHlzTmpuSDJ2OUhQN0p5VU5Ud3drb3g1cXRONzNyanhQUWVGT3ZYdEh1UDMzUGxUOVBrSU4zWFBaNnUyb2xEbFB6cDlla2d3dDlDZW9vdmsrL3ZQVm5hVWYvWFB2N0ZuSVIxVlp1LzZFc1dnQ2dJR05IcjJuZHJCNDNpSXFzTE00SGlKV1crMmFHdEFWUUc5dlduVXAzYlo3V1hrV1cyb1AvclAyRDRnZ0FvQ0F4RUREVy9DaXJKa2R4dXhwZjVnTlF0U2ozLzJ6ck9Ycjd3TEVFdVJvL2J1MGZsTWdNQUNoTVRQcjFnVS9PWWo1QVRGZlhaMDBWZHJZTy9kSG43L0JQenVJOUlOWUVBK1VSQUVDQjlrNGErRVBlemw0YkdLMEIwRzFSNWgvZmI3czNUMnVqSW52Vy9rRzV0QUJBZ1o3NStWWFdBdElJRVFROGNOM3oyZ0xvbXFIVzk5aDlRNGM5TDJrTWcvK2diQ29Bb0ZCN3JmMmhRYUl0NEluVzdXek10NGdERzZ6V20ydjlXdDlYRHY4MGljRi9VRFpyQUtGUU1SRFFXa0NhSmc1cU1TalEya0JXSS9yOEg5aDZLSDFnL1h5Q0pvbEJ3SDk5NHAwSktKY0tBQ2hZckFXY08rMHhRTE9jUFI4ZzFyVEJVa1dBRkFNbTlmblRSTzNCZjhjTi9vUFNxUUNBZ3IzOCt1WHBsVllBNEphTEp1cGZjenI5NXRYSDA1YTFyNlFETC9lMXF3TGdmTnA5L3EzUTZNNXJaOW9CRWpUUnlNeFFld1lRVURaWGYxQzQ4ZFp0d01HRmRRbWE2dXo1QUhDMnhUNy94Mjk4dHQwNkFrMFZ0LzhHL3dGQkFBQ2tmZE5EQ1pydU02MkRYclFGM1BiT0Z4UHNXRC9YUHZqSDk0VnlmNXJPK2w5Z2tRQUFlSE10SURUZDRueUF4MW9IUDlzQ3lyVFk1eDlEL3BUN1U0SlkrNmYwSDFna0FBRGFZaTJnZ1lDVVl2dTZoWFpid0wxRGh3VUJoWWh5LzdzMlQ3Y1AvOWI2VVJKci80Q3plZHNIMnFJL01OWURRVWxpUHNDdVRXWURsT0N1d2FsMCs4Q3hCQ1VaUFhwdCsvTWRZSkVBQUhqVC90a0JWUUFBMEFEdHRYK0NmZUFjM3ZTQk44MmRYcE5HREFRRWdPeU50VzcvaGZyQXVUd1ZnTGVJTlVFR0FnSkF2cXo5QXk1RUFBQzhUZlFNQWdCNXV1ZlFEUW5nZkFRQXdOdkV1aUEzQndDUW4xajdaL0FmY0NFQ0FPQzg5QTRDUUY3aWM5dmFQK0Jpdk4wRDUyVXRJQURrSlQ2MzNmNERGeU1BQUM0bzFnSjZrUUNBK292UDZ6RXpmSUJMRUFBQUYzUm1MZUJnQWdEcXplRWZXQW9CQUhCUkUvTWJyQVVFZ0JwNytxVGh2Y0RTQ0FDQVM3SVdFQURxNjZHcDRRU3dGQUlBNEpKaUxhQ0JnQUJRUDliK0Fjc2hBQUNXWk96b05kWUNBa0NOdEFmL1dmc0hMSU8zZVdCSllpQ2dLZ0FBcUkveDQ5YitBY3NqQUFDV0xDWU1lOUVBZ09yRjUzR3M2d1ZZRGdFQXNDeDdKdzBhQW9DcVdmc0hySVFBQUZpV0dBaG9MU0FBVkNjRy8xbjdCNnlFQUFCWXRyM1dEUUZBWlF6K0ExWktBQUFzVy9RZEdnZ0lBTDBYbjcvbThRQXJKUUFBVnNSYVFBRG9yZmJnditNRy93RXI1KzBkV0pGWUN6aDJaSE1DQUhyRE5oNWd0UVFBd0lxTnQyNGhEaTZzU3dCQWQ4WEIzK0EvWUxVRUFNQ3E3SnNlU2dCQWQrMTVZV3NDV0MwQkFMQXExZ0lDUUhmRjJyK0RDMzBKWUxVRUFNQ3F4VnBBQXdFQm9EdXMvUU02eFJzN3NHcldBZ0pBZDR3YS9BZDBrQUFBNklqOXN3T3FBQUNnZytMZ0g1UC9BVHJGMnpyUUViRVdjTVJBUUFEb0dJZC9vTk1FQUVESHhIb2lBd0VCWVBXcy9RTzZRUUFBZE5TbzJ3b0FXTFY3RHQyUUFEcE5BQUIwVkt3RmRHTUJBQ3NYYS84TS9nTzZRUUFBZEZ6MExCb0lDQURMRjUrZjF2NEIzZUlOSGVnNGF3RUJZR1hpODlQdFA5QXRBZ0NnSzJJdG9CY1lBRmc2YS8rQWJoTUFBRjF4WmkzZ1lBSUFsc2JoSCtnMkFRRFFOUlB6RzZ3RkJJQWwrTzVjdnlHNlFOY0pBSUN1c2hZUUFDN3QwWm1oQk5CdEFnQ2dxMkl0b0lHQUFIQmgxdjRCdlNJQUFMcHU3T2cxMWdJQ3dIbTBCLzlaK3dmMGlEZHlvT3RpSUtBcUFBQjR1eGo4NS9ZZjZCVUJBTkFUWG5BQTRLM2ljOUhnUDZDWEJBQkF6K3lkSEU0QXdCa2owd2IvQWIwbEFBQjZKZ1lDV2dzSUFHY0cvMDNNOXllQVhoSUFBRDIxZDBvVkFBQVkvQWRVUVFBQTlGVDBPNDRlOWRJRFFMbEd6Y1VCS2lJQUFIcHUvK3lBdFlBQUZDa08vdDh5K0Erb2lEZHdvT2RpTGVEWWtjMEpBRXBqS3c1UUpRRUFVSW54NHdNR0FnSlFGR3YvZ0tvSkFJREttQVVBUUVuMnZMQTFBVlJKQUFCVXhscEFBRW9SYS84T0x2UWxnQ29KQUlCS3hWcEFBd0VCYURwci80QTY4TllOVkNyNkljZG5OeVVBYUNwci80QzZFQUFBbGJNV0VJQ21pb1AvbUprM1FFMTQ0d1lxRjJzQlI2YUhFZ0EwamNNL1VDY0NBS0FXWWkyU2dZQUFOTW1CVTMzVy9nRzFJZ0FBYXNOYVFBQ2E1UDdEMXY0QjlTSUFBR29qMWdLNktRR2dDV0x0bjhGL1FOMElBSUJhR1prZU5CQVFnS3kxQi85Wit3ZlVrTGRzb0ZaaUlLQzFnQURrTEtyWjNQNERkU1FBQUdvbjFnSjZjUUlnUjliK0FYVW1BQUJxSjZvQTlrNE9Kd0RJamNNL1VHY0NBS0NXWWlDZ3RZQUE1T1M3Yy8yRzJRSzFKZ0FBYW12ZnpHQUNnRnc4T2pPVUFPcE1BQURVMXNHRlBnTUJBY2lDdFg5QURnUUFRSzJOSGIzR1drQUFhczNhUHlBWDNxcUJXb3VCZ0dOSE5pY0FxS3NZL09mMkg4aUJBQUNvdmZIajFnSUNVRS94K1dUd0g1QUxBUUNRQldzQkFhaWprV21ELzRCOENBQ0FMRmdMQ0VEZHhPQy9pZm4rQkpBTEFRQ1FqYjFUcWdBQXFBK0QvNERjQ0FDQWJFU2Y1ZWhSTDFzQVZHL1U0RDhnUXdJQUlDdjdad2VzQlFTZ1VuSHcvNWJCZjBDR3ZFVURXYkVXRUlDcVdmc0g1RW9BQUdRbjFnSWFDQWhBRmF6OUEzSW1BQUN5WkJZQUFGWFk4OExXQkpBckFRQ1FwVmdMT0RGbjlSSUF2Uk5yL3c0dTlDV0FYQWtBZ0d5TnpBd1pDQWhBejFqN0IrVE9tek9RcmVqREhKL2RsQUNnMjZ6OUE1cEFBQUJrTGRZQ2VpRURvSnZpYzJiTTdCbWdBUVFBUU5iYWF3RzlsQUhRUlQ1bmdLWVFBQURaaTNWTTFnSUMwQTBIVHZWWit3YzBoZ0FBYUFSckFRSG9odnNQVy9zSE5JY0FBR2lFV0F2b2hnYUFUb3ExZitiTUFFMGlBQUFhWTJSNjBGcEFBRHFpUGZqUDJqK2dZYndwQTQwUkF3R3RCUVNnRTZLcXpPMC8wRFFDQUtCUnJBVUVZTFdzL1FPYVNnQUFORXBVQWV5ZEhFNEFzRklPLzBCVENRQ0F4b21CZ05ZQ0FyQVMzNTNyTjFRV2FDd0JBTkJJKzJZR0V3QXMxNk16UXdtZ3FRUUFRQ01kWE9nekVCQ0FaYkgyRDJnNkFRRFFXR05IcjdFV0VJQWxzZllQS0lFM1k2Q3hZaURnMkpITkNRQXVKUWIvdWYwSG1rNEFBRFRhK0hGckFRRzR1UGljTVBnUEtJRUFBR2c4YXdFQnVKaVJhWVAvZ0RJSUFJREdzeFlRZ0F1SndYOFQ4LzBKb0FRQ0FLQUllNmRVQVFEd2RnYi9BU1VSQUFCRmlQN08wYU5lOGdENGhWR0QvNERDQ0FDQVl1eWZIYkFXRUlDMk9QaC95K0Evb0REZWhJRmlXQXNJd0NKci80QVNDUUNBb3NSYVFBTUJBY3BtN1I5UUtnRUFVQnl6QUFES3R1ZUZyUW1nUkFJQW9EaXhGbkJpenNvbmdCTEYycitEQzMwSm9FUUNBS0JJSXpOREJnSUNGTWphUDZCazNuNkJJa1gvNS9qc3BnUkFPYXo5QTBvbkFBQ0tGV3NCdlFnQ2xDR2U5Mk5td0FDRkV3QUF4V3F2QmZReUNGQUV6M3NBQVFCUXVGZ0RaUzBnUUxNZE9OVm43UjlBRWdBQVdBc0kwSEQzSDdiMkR5QUlBSURpeFZwQU4wTUF6UlJyLzh4N0FUaERBQURRTWpJOWFDMGdRTU8wQi85Wit3ZndKbSs3QU9uTVFFQnJBUUdhSmFxNzNQNEQvSUlBQU9BTjFnSUNOSWUxZndCdkp3QUFlRU5VQWV5ZEhFNEE1TS9oSCtEdEJBQUFaNG1CZ05ZQ0F1VHR1M1A5aHJzQ25JY0FBT0FjKzJZR0V3RDVlblJtS0FId2RnSUFnSE1jWE9nekVCQWdVOWIrQVZ5WUFBRGdQTWFPWG1NdElFQm1yUDBEdURodnR3RG5FUU1CeDQ1c1RnRGtJd2IvdWYwSHVEQUJBTUFGakIrM0ZoQWdGL0c4TnZnUDRPSUVBQUFYWVMwZ1FCNUdwZzMrQTdnVUFRREFSVmdMQ0ZCL01maHZZcjQvQVhCeEFnQ0FTOWc3cFFvQW9NNE0vZ05ZR2dFQXdDVkVYK25vVVMrWEFIVTBhdkFmd0pJSkFBQ1dZUC9zZ0xXQUFEVVRCLy85czVzU0FFdmpiUlpnQ2F3RkJLaWZXUHNubkFWWU9rOU1nQ1dLdFlBR0FnTFVnN1YvQU1zbkFBQllCck1BQU9yaG5rTTNKQUNXUndBQXNBeXhGbkJpenFvcGdDckYyaitEL3dDV1R3QUFzRXdqTTBONlRnRXFaTzBmd01wNGd3VllwcmgxR2pkMUdxQVMxdjRCckp3QUFHQUZZaTJnRjFDQTNvcm43cGhaTEFBckpnQUFXSUgyV2tBdm9RQTk1YmtMc0RvQ0FJQVZpdlZUMWdJQzlNYUJVMzNXL2dHc2tnQUFZQldzQlFUb2pmc1BiMDBBckk0QUFHQVZZaTJnR3ltQTdyTDJENkF6QkFBQXF6UXlQV2d0SUVDWHRBZi9XZnNIMEJIZVdBRldLUVlDV2dzSTBCM2p4emU1L1Fmb0VBRUFRQWRZQ3dqUWVmRmNqZWNyQUowaEFBRG9nS2dDMkRzNW5BRG9IR3YvQURwTEFBRFFJVEVRMEZwQWdNNkl3WCtHckFKMGxnQUFvSVAyelF3bUFGYlA0RCtBemhNQUFIVFF3WVUrQXdFQlZzbmFQNER1RUFBQWROalkwV3VzQlFSWUlXdi9BTHJIR3lwQWg4VkF3TEVqbXhNQXl4ZUQvOXorQTNTSEFBQ2dDOGFQV3dzSXNGengzRFQ0RDZCN0JBQUFYV0l0SU1EeWpFd1BKUUM2UndBQTBDWFdBZ0lzWFF6K201anZUd0IwandBQW9JdjJUcWtDQUZnS2cvOEF1azhBQU5CRjBjODZldFJMTGNERmpCcjhCOUFUQWdDQUx0cy9PMkF0SU1BRnhNRi8vK3ltQkVEM2VTTUY2REpyQVFFdUxOYitDVWtCZXNQVEZxQUhZaTJnZ1lBQWIyWHRIMEJ2Q1FBQWVzUXNBSUMzdXVmUURRbUEzaEVBQVBSSXJBV2NtTFBpQ2lERTJqK0Qvd0I2U3dBQTBFTWpNME42WFFHU3RYOEFWZkFXQ3RCRGNkczFidG8xVURoci93Q3FJUUFBNkxGWUMrakZGeWhWUFAvR3pFUUJxSVFBQUtESDJtc0J2ZndDaGZMOEE2aU9BQUNnQXJIMnlscEFvRFJQdDU1NzF2NEJWRWNBQUZBUmF3R0IwancwTlp3QXFJNEFBS0Fpc1JiUVRSaFFDbXYvQUtvbkFBQ28wTWowb0xXQVFPTzFCLzlaK3dkUU9XK2RBQldLZ1lEV0FnSk5OMzU4azl0L2dCb1FBQUJVekZwQW9NbmkrUmJQT1FDcUp3QUFxRmhVQWV5ZE5CZ0xhQ1pyL3dEcVF3QUFVQU14RU5CYVFLQnBZdkNmWWFjQTlTRUFBS2lKZlRPRENhQkpEUDREcUJjQkFFQk5IRnpvTXhBUWFJeDRucGx2QWxBdkFnQ0FHaGs3ZW8yMWdFRDIyb1Avamh2OEIxQTMzaklCYWlRR0FvNGQyWndBY2hhRC85eitBOVNQQUFDZ1pzYVBXd3NJNUN1ZVh3Yi9BZFNUQUFDZ2hxd0ZCSExsK1FWUVh3SUFnQnF5RmhESVVhejlpK2NYQVBVa0FBQ29xYjFUYnRHQXZGajdCMUJ2QWdDQW1vbysydEdqWHFhQlBJd2EvQWRRZXdJQWdCcmJQenRnTFNCUWUrMjFmN09iRWdEMTVxMFNvTWFzQlFSeUVHdi9oSlVBOWVkSkRWQnpzUmJRUUVDZ3JxejlBOGlIQUFBZ0EyWUJBSFYxejZFYkVnQjVFQUFBWkNEV2FrM005U2VBT29tMWZ3Yi9BZVJEQUFDUWlaR1pJVDIyUUczRTg4amFQNEM4ZUpNRXlFVGNzbzJic2czVVJEeVAzUDRENUVVQUFKQ1JXQXZvaFJ1b1dqeUh4c3dtQWNpT0FBQWdJKzIxZ0Y2NmdZcDVEZ0hrU1FBQWtKbFl0MlV0SUZDVnAxdlBIMnYvQVBJa0FBRElrTFdBUUZVZW1ocE9BT1JKQUFDUW9WZ0w2QVlPNkRWci93RHlKZ0FBeU5USTlLQzFnRURQdEFmL1dmc0hrRFZ2amdDWmlvR0ExZ0lDdlRKKzNOby9nTndKQUFBeVppMGcwQXZ4bklubkRRQjVFd0FBWkN5cUFQWk9Hc2dGZEplMWZ3RE5JQUFBeUZ3TUJMUVdFT2lXR1B4bjZDaEFNd2dBQUJwZzM4eGdBdWdHZy84QW1rTUFBTkFBQnhmNkRBUUVPaTZlSythTUFEU0hBQUNnSWNhT1htTXRJTkF4N2NGL3h3MytBMmdTYjRvQURSRURBY2VPYkU0QW5SQ0QvOXorQXpTTEFBQ2dRY2FQV3dzSXJGNDhSd3orQTJnZUFRQkF3MWdMQ0t5VzV3aEFNd2tBQUJyR1drQmdOV0x0WHp4SEFHZ2VBUUJBQSsyZEdqWVFFRmdSYS84QW1zdmJJVUFEUmYrdXRZREFjbzBhL0FmUWFBSUFnSWJhUHp1Z0NnQllzdmJhUDhFaFFLTjVNd1JvS0dzQmdlV0l0WDlDUTRCbTg1UUhhTEJZQzJnZ0lIQXAxdjRCbEVFQUFOQncwZE1MY0RIM0hMb2hBZEI4QWdDQWhvdDFYaE56L1FuZ2ZHTHRuOEYvQUdVUUFBQVVZR1JtU0c4djhEYnhYTEQyRDZBYzNnWUJDbUF0SUhBKzhWeHcrdzlRRGdFQVFDRmlMYUFYZldCUlBBL0d6QWdCS0lvQUFLQVFzUlp3Wkhvd0FRU0hmNER5Q0FBQUNqSXh2OEZhUUNBOTNYb09XUHNIVUI0QkFFQmhyQVVFSHBvYVRnQ1VSd0FBVUpoWUMyZ2dJSlRMMmorQWNna0FBQW8wZHZRYWF3R2hRTzNCZjliK0FSVEwyeDlBZ1dJZ29Db0FLTS80Y1d2L0FFb21BQUFvbExXQVVKYjRlWStmZXdES0pRQUFLRlJVQWV5ZE5BZ01TbUh0SHdBQ0FJQ0N4VUJBYXdHaCtXTHduN1YvQUFnQUFBcTNiMll3QWMxbThCOEFRUUFBVUxpREMzMEdBa0tEeGMrM2VSOEFCQUVBQU5ZQ1FrTzFCLzhkTi9nUGdETzg3UUhRSGdnNGRtUnpBcG9sQnYrNS9RZGdrUUFBZ0xieDFpM2h3WVYxQ1dpR09QZ2IvQWZBMlFRQUFMeHAzL1JRQXByQm1rOEF6aVVBQU9CTjFnSkNNOFRhdi9oNUJvQ3pDUUFBZUl1OVU4TUdBa0xtclAwRDRIeTg0UUh3RnRFM2JDMGc1R3ZVNEQ4QUxrQUFBTURiN0o4ZFVBVUFHV3F2L1JQZ0FYQUIzdTRBZUJ0ckFTRlBzZlpQZUFmQWhmaUVBT0M4WWkyZ2dZQ1FEMnYvQUxnVUFRQUFGeFM5eEVBZTdqbDBRd0tBaXhFQUFIQkJzVVpzWXE0L0FmVVdhLzhNL2dQZ1VnUUFBRnpVeU15UW5tS29zZmo1dFBZUGdLWHdSZ2ZBUlZrTENQVVdQNTl1L3dGWUNnRUFBSmNVYXdFZE1LQis0dWR5ekt3T0FKWklBQURBSmNWYXdKSHB3UVRVaThNL0FNc2hBQUJnU1NibU4xZ0xDRFh5ZE92bjBkby9BSlpEQUFEQWtsa0xDUFh4ME5Sd0FvRGxFQUFBc0dTeEZ0QkFRS2lldFg4QXJJUUFBSUJsR1R0NmpiV0FVS0gyNEQ5ci93QllBVzl3QUN4TERBUlVCUURWR1Q5dTdSOEFLeU1BQUdEWnJBV0Vhc1RQWGZ6OEFjQktDQUFBV0xhb0F0ZzdhUUFaOUpxMWZ3Q3NoZ0FBZ0JXSmdZRFdBa0x2eE9BL2EvOEFXQTBCQUFBcnRtOW1NQUc5WWZBZkFLc2xBQUJneFE0dTlCa0lDRDBRUDJmbWJnQ3dXZ0lBQUZiRldrRG9ydmJnditNRy93R3dldDdZQUZpVkdBZzRkbVJ6QXJvakJ2KzUvUWVnRXdRQUFLemFlT3QyOHVEQ3VnUjBWaHo4RGY0RG9GTUVBQUIweEw3cG9RUjBsbldiQUhTU0FBQ0FqckFXRURvcjF2N0Z6eFVBZElvQUFJQ08yVHMxYkNBZ2RJaTFmd0IwbXJjMEFEb20rcFd0QllUVkd6WDRENEF1RUFBQTBGSDdad2RVQWNBcXROZitDZElBNkFKdmFBQjBsTFdBc0RxeDlrK0lCa0EzK0hRQm9PTmlMYUNCZ0xCODF2NEIwRTBDQUFDNklucVlnZVc1NTlBTkNRQzZSUUFBUUZmRStyS0p1ZjRFTEUycy9UUDRENEJ1RWdBQTBEVWpNME42bVdFSjR1ZkUyajhBdXMxYkdRQmRZeTBnTEUzOG5MajlCNkRiQkFBQWRGV3NCWFN3Z1F1TG40OHhNek1BNkFFQkFBQmRGV3NCUjZZSEUzQitEdjhBOUlvQUFJQ3VtNWpmWUMwZ25NZlRyWjhMYS84QTZCVUJBQUE5WVMwZ3ZOMURVOE1KQUhwRkFBQkFUOFJhUUFNQjRSZXMvUU9nMXdRQUFQVE0yTkZyckFXRTlNYmdQMnYvQU9neGIyRUE5RXdNQkZRRkFDbU5IN2YyRDREZUV3QUEwRk14OGR6Qmg1TEY5MytzeHdTQVhoTUFBTkJ6ZXljTlBxTmMxdjRCVUJVQkFBQTlGd01CclFXa1JESDR6OW8vQUtvaUFBQ2dFbnV0UDZOQUJ2OEJVQ1VCQUFDVmlENW9Bd0VwU1h5L20zOEJRSlVFQUFCVXhscEFTdEVlL0hmYzREOEFxdVd0QzRES3hGckFzU09iRXpTZDdSY0ExSUVBQUlCS2piZHVSUTh1ckV2UVZISHdOL2dQZ0RvUUFBQlF1WDNUUXdtYWFzOExXeE1BMUlFQUFJREtXUXRJVThYYXY0TUxmUWtBNmtBQUFFQXR4RnBBQXdGcEdtdi9BS2dUYjFvQTFJSzFnRFROcU1GL0FOU01BQUNBMnRnL082QUtnRWFJZzM5TS9nZUFPdkdXQlVCdHhGckFFUU1CYVFDSGZ3RHFTQUFBUUszRXVqUURBY21adFg4QTFKVUFBSURhR1hWN1NzYnVPWFJEQW9BNkVnQUFVRHV4RnRBTktqbUt0WDhHL3dGUVZ3SUFBR29wZXFnTkJDUW44ZjFxN1I4QWRlYk5Db0Jhc2hhUTNNVDNxOXQvQU9wTUFBQkFiY1ZhUUFjcWNtRHRId0E1RUFBQVVGdG4xZ0lPSnFnN2gzOEFjaUFBQUtEV0p1WTNXQXRJclgxM3J0L1FTZ0N5SUFBQW9QYXNCYVRPSHAwWlNnQ1FBd0VBQUxVWGF3RU5CS1NPclAwRElDY0NBQUN5TUhiMEdtc0JxWlgyNEQ5ci93RElpRGNwQUxJUUF3RlZBVkFuTWZqUDdUOEFPUkVBQUpBTkJ5N3FJcjRQRGY0RElEY0NBQUN5c25keU9FSFZyUDBESUVjQ0FBQ3lFZ01CclFXa1NqSDR6KzAvQURrU0FBQ1FuYjFUcWdDb2pzRi9BT1JLQUFCQWRxTC8ya0JBcWhEZmQrWlFBSkFyQVFBQVdiSVdrRjZMZy8vKzR3TUpBSExselFtQUxNVmF3TEVqbXhQMGlpMFVBT1JPQUFCQXRzWmJ0N0VIRjlZbDZEWnIvd0JvQWdFQUFGbmJOejJVb052MnZMQTFBVUR1QkFBQVpNMWFRTG90MXY0ZFhPaExBSkE3QVFBQTJZdTFnQVlDMGkzVy9nSFFGTjZXQU1pZXRZQjB5NmpCZndBMGlBQUFnRWJZUHp1Z0NvQ09pb04vVFA0SGdLYndwZ1JBSThSYXdCRURBZWtnaDM4QW1rWUFBRUJqeEpvMkF3SHBoQU9uK3F6OUE2QnhCQUFBTk1xb1cxczY0UDdEMXY0QjBEd0NBQUFhSmRZQ3VybGxOV0x0bjhGL0FEU1JBQUNBeG9uZWJRTUJXWW4yNEQ5ci93Qm9LRzlIQURTT3RZQ3NWRlNQdVAwSG9La0VBQUEwVXF3RmRKQmpPYXo5QTZEcEJBQUFOTktadFlDRENaYks0UitBcGhNQUFOQllFL01ickFWa1NiNDcxMjk0SkFDTkp3QUFvTkdzQldRcEhwMFpTZ0RRZEFJQUFCb3QxZ0lhQ01qRldQc0hRQ2tFQUFBMDN0alJhNndGNUx5cy9RT2dKTjZHQUdpOEdBaW9Db0R6aWNGL2J2OEJLSVVBQUlBaU9PaHhydmgrTVBnUGdKSUlBQUFveHQ3SjRRU0xScVlOL2dPZ0xBSUFBSW9SQXdHdEJTVEU0TCtKK2Y0RUFDVVJBQUJRbEwxVHFnQklCdjhCVUNRQkFBQkZpYjV2QXdITE5tb2VCQUNGRWdBQVVCeHJBY3NWQi85dkdmd0hRS0c4L1FCUW5GZ0xPSFprYzZJOHRrRUFVRElCQUFCRkdqOCtrQTR1ckV1VXc5by9BRW9uQUFDZ1dQdXNnU3ZLbmhlMkpnQW8yZG9FQUlXS3RZQmJybmdsMFh6ZmVuRmpPcmpRbHdDZ1pDb0FBQ2lha3ZBeVBOMEtld0NnZEFJQUFBQUFLSUFBQUFBQUFBb2dBQUFBQUlBQ0NBQUFBQUNnQUFJQUFBQUFLSUFBQUFBQUFBb2dBQUFBQUlBQ0NBQUFBQUNnQUFJQUFBQUFLSUFBQUFBQUFBb2dBQUFBQUlBQ0NBQUFBQUNnQUFJQUFBQUFLSUFBQUFBQUFBb2dBQUFBQUlBQ0NBQUFBQUNnQUFJQUFBQUFLSUFBQUFBQUFBb2dBQUFBQUlBQ0NBQUFBQUNnQUFJQUFBQUFLSUFBQUFBQUFBb2dBQUFBQUlBQ0NBQUFBQUNnQUFJQUFBQUFLSUFBQUFBQUFBb2dBQUFBQUlBQ0NBQUFBQUFTTko4QUFBQUFBQW9nQUFBQUFJQUNDQUFBQUFDZ0FBSUFBQUFBS0lBQUFBQUFBQW9nQUFBQUFJQUNDQUFBQUFDZ0FBSUFBQUFBS0lBQUFBQUFBQW9nQUFBQUFJQUNDQUFBQUFDZ0FBSUFBQUFBS0lBQUFBQUFBQW9nQUFBQUFJQUNDQUFBQUFDZ0FBSUFBQUFBS0lBQUFBQUFBQW9nQUFBQUFJQUNyRTBBQUVBdC9kVzcvLzlVaGE5TURxZHZ2YlF4bGVDMmpTK21lNGNPcHlyODB4Lzlqd2w2U1FVQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBV3dCcENlK3kvLzZadUovRDN3bFlmVGswLzlWV0o1SG4zNHk0bVVUc3pOcDdtNXVmWmZINTZhYXYvUGs1Tm5mbjJoOWV2aHFlbEVjMzE0eHdmVDNYZDlMbFhoOSs3K1FqbzhXY2IzMTZkMmZpTDlkdXVyQ3AvNDlEOUxBTlNQQUFDZ2g5NS82M3NUUy9PakF6OXBCd0kvYnYzNi9XZCswQW9HcHRPUER2NGtrYi8rL3Y0MHZHVW8wVjBiK3RmN2N3YmdMUVFBQU5UU3U3ZmYzUDQxUXBOUGZmTE1MV1lFQXQ5NytvZnRRT0Q3clY4RkFnQUFTeWNBQUNBYmNhUDVrUTk5c1AwVkRrOU90UU9CYno3MTdmUzlaMzZZQUFDNE1BRUFBTm1LOHVhUC8xcDhmYXdkQm54MTlJbFdJUEFETXdRQUFNNURBQUJBSTBRWXNPZSt6N2YvK3NtLy9IWXJEUGlhSUFBQTRDeldBQUxRT0ZFUjhJMC8vdzlwejcyZlQ4TkRnd2tBQUFFQUFBMG1DQUFBK0FVQkFBQ05GMEhBbnozeTVmVHgyejZXQUFCS0pRQUFvQWlMTXdJZWZmakxxZ0VBZ0NJSkFBQW95dnR2ZlcrN0d1RERPejZZQUFCS0lnQUFvRGhSRGZEUWcxOU1kKzY2SXdFQWxFSUFBRUN4N3R6MTZmVDUzWjlMQUFBbEVBQUFVTFRmL3VRbjJsc0NBQUNhVGdBQVFQRmlTOERlQjc2WUFBQ2FUQUFBQUMwZitkQUhWUUlBQUkwbUFBQ0FOMFFsZ01HQUFFQlRDUUFBNEN3eEdQQlRPMzhyQVFBMGpRQUFBTTRSSWNEdzBHQUNBR2dTQVFBQW5HTkQvL3IwMElPR0FnSUF6U0lBQUlEemVQZjJtOXVWQUFBQVRTRUFBSUFMaUZrQVdnRUFnS1lRQUFEQUJVUXJ3Sjc3N2s0QUFFMGdBQUNBaTNqL3JlOU43N3ZsdlFrQUlIY0NBQUM0aER0MzNaRUFBSEluQUFDQVMxQUZBQUEwZ1FBQUFKYmdJeC82WUFJQXlObmFCRURQUFBtWDMwNmxtWnVmVHlmbTV0THcwRkI3cUY1OHZXdjd0dmF2T2ZtTjIvNjM5TlhSSjFxL2wva0VBSkFqQVFBOTk3LzhyNytSY3ZCZi90TTNVeFcrT3ZxMTlpR0RabnBnN3lPSk05cEJ3TGFiV3pmcnY1TGVmOHYvM0E0RjZpeitlWC9qdG8rbHI0OS9Jd0VBNUVnQUFFQWw0aWI5KzgvOHNQMFZocmNNcFR0M2Zib1ZCcnkzL2RkMTlPRWR2eUlBQUFDeUpRQUFvQllPVDA2bEI3NXlwa0lpYnRvLzF3b0Q2aFlFeEREQXFBVFFCZ0FBNU1nUVFBQnE1NXRQZlR0OTR0UC9yTjBTVXplMkFRQUF1UklBQUZCYk1ROGpnb0NvRHFpTHFBSUFBTWlSQUFDQVdvdkQvKzk4N2cvU2p3NzhKTlhCKzI3NTVRUUFrQ01CQUFDMUZ6MzN2My8zRjJvUkFyeDcrODNaclRBRUFBZ0NBQUN5RUNIQUgrNzVrMW9NNE50UzB5MEZBQUFYSXdBQUlCdG5OZ1U4bktyMlAyeTdLUUVBNUVZQUFFQld2alB4OStsN1QvOHdWU25hQUFBQWNpTUFBQ0E3VmE4SDNMSmxTd0lBeUkwQUFJRHNmUCtaSDFaYUJYRGQwR0FDQU1pTkFBQ0FMSDFuNHU5U1ZXd0JBQUJ5SkFBQUlFc3hDNkFxdzdZQUFBQVpFZ0FBa0tYWUNCQmZBQUFzalFBQWdHejk2TUN6cVNyYUFBQ0EzQWdBQU1qV2lmbTVWSlYrQVFBQWtCa0JBQURaMGdJQUFMQjBBZ0FBQUFBb2dBQUFnR3laeGc4QXNIUUNBQUN5VldVTHdOemNmQUlBeUlrQUFJQnNWVmtCY0VJQUFBQmtSZ0FBUUxZMnJPOVBBQUFzalFBQWdHeGR0MlV3VmNIMkFRQWdSd0lBQUxLMG9YOTlldGYybTFNVkJBQUFRSTRFQUFCazZYMjN2RGRWNWFYNWt3a0FJRGNDQUFDeTlPRWR2NUtxOHVNREJ4TUFRRzRFQUFCa1ozaG9LSDM4MXo2V3F2S2pBejlKQUFDNUVRQUFrSjBxRC8vQkNrQUFJRWNDQUFDeUVyZi9kKzc2ZEtyUzk1LzVZUUlBeUkwQUFJQ3NWSDc0Zi9vSENRQWdSd0lBQUxKeDU2NDdLaS8vLzlGQi9mOEFRSjRFQUFCazRlTzNmYXp5Mi8vd045Lzkrd1FBa0NNQkFBQzFGNGYvUGZkOVBsVXRodi9wL3djQWNyVTJBVUNOUmRsL0hXNyt3L2NjL2dHQWpBa0FBS2lsbVBZZnQvN3Z2L1c5cVM2KytaZi9id0lBeUpVQUFJQmFXVnp6Vi9Xd3YzTWRucHhLMzVuUS93OEE1RXNBQUVEbE5xeGZuejc4b1Y5SnYzSGJ4MnAxNDM4MjVmOEFRTzRFQUFEMDFQRFFZTnJRMzUvZXZmM205TzV0TjZmM3RRNzg4ZGQxOTlYUnJ5VUFnSndKQUFCNjZCdFAvUHRVcXVFdFF5bFhUejcxN1hSNGNqb0JBT1JNQUFEUVF6a2Zna3ZtOWg4QWFJTExFd0J3UVhINGQvc1BBRFNCQUFBQUxpQW0vMzk5L0JzSkFLQUpCQUFBY0FFUDczczhuWmliVHdBQVRTQUFBSUR6aU5MLzcwejhmUUlBYUFvQkFBQ2NJMHIvdnpyNlJBSUFhQklCQUFDY0pRNy92M2YzRnhKQXlmclhuRTVBOHdnQUFPQU4wZThmaDM5VC80RzZtRHRkemV0Ni8rV3ZwVklNclgwbFZXSHU5Sm9FdlNZQUFJQTNPUHdEZFRQM1dqV0h4UDdMVlFCMDI5eHJqbUwwbnU4NkFHaDU0Q3VQcEI4ZitFa0NvS3dLZ0MxWFZGVUI0Q2hHNzYxTkFGQ3dLUHQvWk4vajZjbW52cDBBNnFhcVErSzJ2bE9wRkZ1cWFnRjRUUXNBdlNjQUFLQllpejMvYnY2QnVwcXY2SkM0NVlwWFV5bldyNm1tMm1IK2RSVUE5Sjd2T2dDS0ZOUCtmK2R6LzhMaEg2aTF5VmV2U0ZXSUZvQlM1Z0JzWDdlUXFqRDU4anNTOUpvQUFJRGlmUC9wSDdRTy8zOWc0QjlRZTFXV2lXOWIxL3cyZ0cwVkhmNURWZUVPWmRNQ0FFQlJIdDczZVByNitEY1MxWm1ibTB0VjZlL3ZiLzIvWlFRL0cvclhweXBFZFEyZE0vbHFkYS9yMi9vVzBqTS92eW8xMlphMUw2ZXFUTDNpS0VidnFRQUFvQWcvT3ZDVGRFZnIxdC9odjNwemMvT3BLdGNORGFaU25Bazd5TjE4aGJ2aXQ3K2orUlVBdDF6MTgxU1Z5VmRVQU5CN1lpY0FHaTBHL1gxOS9DL1NWMGVmU0ZEVnJYZ1Zob2VHVWhWT1ZCandOTkdCVTMycEtqczJ6TFd1cVZPamJhK3d6ZUhnUW5YL2JpbVhBQUNBeHZxYmliOVBqK3g3VEs5L3pid3dWZDIvaitFdDFSeUtTMUpsaTBjVHpWZTRLejRHQWQ1eTVjbkd0Z0cwZjM5WG5VeFZPTEN3TGtFVkJBQUFORTRNK1h1OGRlUC8vV2QrbU9Cc0pRVUE3OTUrYzZyQ1MvUFZIS2lhS3NyRTUxb2hRRlVUK2VPQTNOUUFZRWQvZFdIVmxBR0FWRVFBQUVBalJObnhkeWIrTGozNWw5OTI4Sys1S29mRVZWVVczMnZSNmxCVnU4UGs1R1Npc3lJRXFHcFYzVzN2ZkRHTkhiMDJOVkdWQVVDVnJSMlVUUUFBUU5aaXVGOGMvR080bjk3amZNUy9xeW9PcUZYZGl2ZmF1N2RWOS90OFFjdE54MFd2ZUZVQndKWXJYbWxrRzhCUTYvZTFvLzlFcXNwQkxRQlV4QllBQUxJV0pkME8vL21wcWs4OFFvZmhMYzNmQlBDdUNvTU9hd0E3citwKzhWM1hIRWxOYyt1VjFiYXFQSE95bklHazFJc0FBSUNzeFlIdWkvZmVuY2pManc0OG02cnkvbHZlbTVydS9iZjhjcXFLTUs3enFqNHN4aHlBdURGdmtzOVVHR3BFb0ROMzJqR01hdmpPQXlCN0gvblFCOU9uZHY1V0loOG41cXZydlMyaERlRGQyMjlLVmZueHdaOGtPbXZxbGJXVkh4aDNiV3BPRlVETU5kaFNZYUJ4VVA4L0ZSSUFBTkFJZCs3NmRCb2VhbjVwZDFQRTdJYXFmSGpIcjZRbWkwR0hWVzA3aU50L0ZRQ2ROM2Q2VGVXSHh0czJ2dGllQlpDN3FHVDRUTVV0RFUzZHFrQWVEQUVFS0VEMDVIYXpMemNPRzFXdlY0dFdnRDMzM1oxKy8rNHZKT3F2MGswQXJlL1Y5OTN5M3NadWkvandoejZZcXZMakF3Y1QzWEZnb2EreW5mV0w3dG84blQ3MzNDK2xuTVU4Z3kwVnR6TUlBS2lTQUFDZ0FFOCs5ZTMwMWRFblVyZThhOXZONld0Zi9YZXBhdSsvOWIzdFZvQ3ZqLzlGb3Q1K2RMQzZHUUFodmxlYUdnRDg1bTBmUzFYNWtmTC9ycG1ZNjA4N0I0NmxLbTNyTzVWMmI1NUtJek41cnRPTTB2LzRxbEwwLzhkYVI2aUtGZ0FBVmkxNmZyODYrclZVQjFvQjhoQVZBRldXaWpkMVprU1UvMWU1QWVCN1R6Y3pWS21EZ3pVWkhMZHpZTGJ5US9SS1JPbi83c0hxTjFSTXpHMUlVQ1VCQUFBZEVSVUdWZloxTDRwV2dJY2UvR0tpL2lZcmJBT0k3NVAzTlhBYlFBUmdWVklCMEQweEI2QXVxK04yRDA2bmJldE9wVnpFNGYvaDY1OUwvWmVmVGxXTFNnNm9rZ0FBZ0k3NTBsY2VTWFVRVTk2clBnaHhhZDk3NWdlcFNuZnV1aU0xU2R6K2YvelhxaXYvUHpOclpEclJQUlB6OVRnODlsLytXbnI0bi93c2l4Qmc4ZkJmZGQ5L2lOTC9nd3MyQUZBdEFRQUFIVk92Vm9BNzJyTUpxSy8vZHFENk9RQk5xZ0tvT3ZUNmJ4WFBkU2pCeEluKzJ1eVBYd3dCZHF5dmJxWG5wZFRwOEIrVS8xTUhBZ0FBT3FvdXJRRGgzeno0UisxU2IrcXBEa1A0N3Ivdjg0MzRIcW42OWovODUrLytYYUs3NnJBTzhHd1JBanl3OVZCN3NuN2RSRER4K0kzUDF1YndIL1lmSDBoUU5RRUFBQjFYbDFhQVdQZjJ6ei9UckRMdkp1bjJlc3FsaU8rUlQrMzhSTXJkbmxhUVViV3FXenBLTVhyMDJsUTNuMmtGQUhIVFBsU0R3L2I2eTArMzF4VkdNRkdIbnY5RlQ1Kzh5dlIvYWtFQUFFREgxYWtWNExjLytZbEdEbnRyaXUvVm9Bb2cya1Z5L2g2SmYvNW9aNmlTL3YvZWlSM3lkV2tET05zdFY1MU1UOXgwc0YwTlVFVVFFQWYvK0wvOXhNMEgwdTBWcjBzOG4yKzl0REZCSFFnQUFPaUtPclVDTktYTXU0bnFzall1dmtkeVhCOFpjeTdxTVBEeU94UEsvM3RwZkhaVHFxdkZhb0I3aHc3M0pBZzQrK0FmLzdmcmRPdS9LRzcrbnhJQVVCTUNBQUM2NWcvMy9FbWx1OTRYYVFXb3IvOWNrNE5qZkkvRStzaWNncUxvKzQ4NUYzWHdOOS85KzBUdjdKOGRxR1VWd0tMb3U3OXQ0NHZ0aW9BSUEyNTc1NHNkRFFQaTBCOS8vL2g3MS9uZ3YyaXNobTBibEd0dEFvQXVpYkxnYUFXNCs2N1BwYXBGSzBEY1V0Wmg4QnkvRUFGUlZBRlVYY0llWW4za293OS9PZjMrM1Yrb1JYQjFNWEg0LzdOSC9uVTd1S2hhL0p6N3VlcXRHQVlZVlFCMUhMNTNybWdOaUs5d1pnM2V1blJnb2ErOURpOUNqUGovbTdwQWIzeUVCakZvY01zVnI3YStYazdiM3JHUWJtMzl2ZW93YTJDcDNQNVROd0lBQUxycTYrUGZTQi9lOFN1MU9PREZEZTl2ZmZwL3IvM2hyalFSek5UaCt5TkVDUEFmSC85MzZmYysvNFYwZUtxZVBlMVI5aDgzLzNVNC9JYzZ6SEVvVVZRQjdCdzRWdXViNzNORlpVQjg3ZWl2NytyQVRuUDdUOTFvQVFDZzZ4N1krMGd0RHQxUjN2M0ZlKzlPMU1zM24vcDJyVUtaT0ZqLzJTTmZydVZnd0UvdC9LMzB0YS8rdTlvYy9zT2Z0MEkrZW0reENvRDZjdnRQSFFrQUFPaTZ4VmFBT3ZqSWh6N1lQa1JSSDNINHI5c1F1Y1VRSUNiczEwR1UvRWQ3d3QxMzNabnFKQVo5L3JnbXd6NUxWUGRaQUtWeiswOGRlV0lBMEJQUkNsQ1hpZTh4TlQzSGllOU45dVJmZmp2VlVYeXZmT09KZjU4K2Z0dkhVaFUyckYvZkRpSCtZK3ZXdnk1dEVtZjd1dHYvU2tVVndNaDBmYXBCK0lXblh0em85cDlhRWdBQTBETjFhZ1hZYzU5V2dEcUpJWEoxQ1lqT0ZkVUFlKzc3L0p0QlFCekt1MjN4NFA4WGYvNGYyaUZFSGJjVFJHWFBrMC9WTTdncFNSd3luemw1VmFJK292Ui83SmpiZitwSkFBQkF6OVNwRlNCdVU3VUMxRXZkRDVPTFFVQWN5dmZjKy9uMGtSMGY3R2dZRUZVcG45cjVpWGFwLzEvOVAvOTNiUS8raXh6KzYyUHYxTEJXZ0JxSjB2L0pDMncyZ0tyWkFnQkFUOVZwSzBBY3NMN3ozYit0N2JUMzBzUXd3TTlGZTBhTkJ0eWRUeHpLUC81ckgydC9oZWlEYjM4ZFBOTVBIMVV1RVhhZG1EOS90VXNjOURmMDk3YzNEdlMzL2w3djNuWnorK2VoN3IvdnM3bjlyNWYyamZPUnpXbjM0RlNpV2tyL3FUc0JBQUE5RjYwQXNXcXQ2dHZOeFZhQTJQdE9QVHcrK2tTNnYzWExucE00eU1kWFNlTHdmM2hTY0ZZbjQ4Y0gwcmErVSttMmQ3NllxRVlFTVNNelpqSlFiMnFGQU9pNXVyVUNSQ1VBOWZETjlzSFNMV2FkbmZuNWZTSlJQeVBUZzByUEt4SXRHUGNjdWtFckJyWG5PeFNBU3RScks4QWQ2VjNieXJyQnJiTXZmZVdSUkgwNS9OZFhiQVdJUTZnUW9QZjJIcjdPbnp0WkVBQUFVSm02YkFVSS8rYkJQNnIxd0xXUzFIa2pRT21pOUYvdmY3M0ZJWFRQQzF2ZFJQZlE2TkZyMDhSOGY0SWNlRElBVUprNnRRTEVBTFovL3BrN0V2VlFwM0NJTStMZlIxMStYcm00Z3d0OTZlNmZLVWZ2aFRqOHg5Ui95SVduQWdDVnFsTXJ3RzkvOGhQcGZiZFV2NTJBZW9WRG5CSC9QZ3oreTRjUW9Qc2Mvc21SSndJQWxhdlRiVzlNb05jS1VBOTFDb2RLRjJYLzhlK0R2QWdCdXNmaG4xeDVHZ0JRT2EwQVhNaTlleDYwRmFCaXFqSHlGaUhBNy83alRRYlVkZEMrbVNHSGY3SWxBQUNnRnJRQ2NENVJHZkovZlBGUHpBT29TUHk1Lzk3ZFgxRDZuN2s0L01kMmdJTUw2eElyRjVVVVVWR3hmM1lnUWE0RUFBRFVobFlBenVmSEIzK1NIdDczZUtMMzlQMDNSNFFBbi92SG05cWw2eXpmZ1ZObktpbWUrZmxWQ1hJbUFBQ2dOdXJXQ3ZERmUrOU8xTU0zbi9xMk12UWVpejl2ZmYvTkU2WHJleWVIdFFRc3cvanNwdlM3ei8yU1B6TWFRUUFBUUszVXFSWGdJeC82WVByVXp0OUsxTU5YUjU4UUF2UkkvRG5IbnpmTjlOUkxHOXN0QWZFckZ4WUgvaWo1SDVrWlROQVVBZ0FBYXFkT3JRQjM3dnAwR2g3eThsY1hRb0R1Yy9ndlF4eHVveEpBTmNENVJhdUVrbithU0FBQVFPM1VxUlVnNWdEc3VVOHJRSjBJQWJySDRiODhVUVZ3eDdQYjBzajBrQ0NnNWVtVFY3WC9QS0pWd3ZwRW1zaDNOUUMxVktkV2dQZmYrbDZ0QURVVGgxU0RBVHNyL2p3ZC9zczFmbnlnM1JZUU45OGxCZ0Z4OEk5eS8vZ3pFSVRRWkFJQUFHcExLd0FYRXlIUkhYZitRYnRpaEpWcnIvcjcvQmNNL0tOOThJMmI3emdFbDlBYUVEZjhUNzI0OGMyRHYzSi9TaUFBQUtDMjRtRDN3RmNlVG5XZ0ZhQ2VZa1hnNzkzOXI5S1BEdndrc1h6eDUvWTduL3NYNmZ2UDFLUGFobnFJZy85aWE4Q2U1N2MyYmxoZzNQYkhZTDg3ZnJJOTdaMGFkdkNuS0FJQUFHcnRPeE4vbi83bXUzK2Y2a0FyUUQxRlVQUTduL3NEY3dHVzZldmpmNUYrLys0dnRQNzhwaE5jeU1UOGhuWTFRSVFCOFdzY25uTVUvOXpSM3ZEcDF1OGpidnRqdFo4ZWYwcTBOZ0ZBelQyNDkrSFc0ZnMvdEcvaHEzYjNYWGVtN3ozOWcvYk5NL1VTL2V0UFB2Vlg2YzhlL3RkcGVNdFE0dndpTVBuU1Z4NXg2OCt5UkZYQTVDc2IyOVVBL1plZlRyZGNPWjkyYkpoTDI5YWRTdHZYTGFTNmlYL2VPUFQvb0hXN1B6RzN3V0VmM2lBQUFLRDJva2M1V2dFZWV2Q0xxUTcrellOLzFMNXhyc3Q4QW40aERyZWYrUFEvUzUvYStZbjAyNjB2UWNBdnhQZHIzUHBIcjcvdlhWWWpEdE5SR1JCZllURVEyTmEzMFByMVpPcGY4MXBQUTRFNDdCOVlXSmVtWG5sSGV1YmtsZW1abjY5MzRJY0xFQUFBa0lYRlZvQ1BmT2lEcVdweHFQem5uN2tqUFRKaUNuMWR4U0Uzdm1kaWVPUEhiL3RZS3QzM24vNUIrdExlUjVUNzB4WG5CZ0loUW9HaEsxNU9XOWEra3JhODQ1VTB0UGJWdFA3eTE5S1dLMTVwLytmbi9ucWh2Ky9jYTJ2YWZ4MkgvTVgvK1NjdnIydi91bmpvZDlpSHBSTUFBSkNOT3JVQy9QWW5QOUU2WVA2ZE11b2FPek5FOHBGMmEwQ3BRVUFjL0I5di9mNTluOUpyN2NQNlFsODYyUHBLQ2s2Z05zUmxBR1Jqc1JXZ0x1Ni83L08xQ0NPNHVNVWdJRm9Ebm56cTI0MWZHM2ltMVA4YjdkVitzU0hCNFIrQVJTb0FBTWhLbEhYSElhNE90N2xhQWZLeUdBU0UzMmg5Ly96bWJmODB2ZS9XWDA1TkViZjlmOVA2K2ZobTYrZERqejhBNXlNQUFDQTdqK3g3UEwzL2x2ZldZc0NiVm9BOHhTRTV2dUo3Nk1NN1BwZyswdnJLTVF5SVEvLzNXdDk3VC83bHQ5UGhLZjM5QUZ5Y0FBQXVvS29TVWJjMnplYjdxalBpOXhOcnpLSUV2dzd1L093ZDZkNHZQdWpuTjBQeE14bmw4dkVWWWNEN1dzRlNoQUh2M241ekxUY0l4RDl2Vk1IOHR3TS9TZis1RlR6NW5nTmdPUzc3d0VkLy9mVUVBTUJiUkFEdzdtMDNwZmZmK3N2dFg5KzFmVnRQWno3RVlmOUhyWU4rM094L3IzWFRIMVVtRHZ3QXJJWUFBQUJnaVNJQWVOZTJtOXUvUnBYQWh2NytORHcwK0dZd3NGZzFjTEhxZ1RqRXo4M050Zjg2RHZrdlRFNm51Zm41MXE5VDdmOHNEdjJUVTFNTyt3QjBuQUFBQUFBQUNtQU5JQUFBQUJSQUFBQUFBQUFGRUFBQUFBQkFBUVFBQUFBQVVBQUJBQUFBQUJSQUFBQUFBQUFGRUFBQUFBQkFBUVFBQUFBQVVBQUJBQUFBQUJSQUFBQUFBQUFGRUFBQUFBQkFBUVFBQUFBQVVBQUJBQUFBQUJSQUFBQUFBQUFGRUFBQUFBQkFBUVFBQUFBQVVBQUJBQUFBQUJSQUFBQUFBQUFGRUFBQUFBQkFBUVFBQUFBQVVBQUJBQUFBQUJSQUFBQUFBQUFGRUFBQUFBQkFBUVFBQUFBQVVBQUJBQUFBQUJSQUFBQUFBQUFGRUFBQUFBQkFBUVFBQUFBQVVBQUJBQUFBQUJSQUFBQUFBQUFGRUFBQUFBQkFBUVFBQUFBQVVBQUJBQUFBQUJSQUFBQUFBQUFGRUFBQUFBQkFBUVFBQUFBQVVBQUJBQUFBQUJSQUFBQUFBQUFGRUFBQUFBQkFBUVFBQUFBQVVBQUJBQUFBQUJSQUFBQUFBQUFGRUFBQUFBQkFBUVFBQUFBQVVBQUJBQUFBQUJSQUFBQUFBQUFGRUFBQUFBQkFBUVFBQUFBQVVBQUJBQUFBQUJSQUFBQUFBQUFGRUFBQUFBQkFBUVFBQUFBQVVBQUJBQUFBQUJSQUFBQUFBQUFGRUFBQUFBQkFBUVFBQUFBQVVBQUJBQUFBQUJSQUFBQUFBQUFGRUFBQUFBQkFBUVFBQUFBQVVBQUJBQUFBQUJSQUFBQUFBQUFGRUFBQUFBQkFBUVFBQUFBQVVBQUJBQUFBQUJSQUFBQUFBQUFGRUFBQUFBQkFBUVFBQUFBQVVBQUJBQUFBQUJSQUFBQUFBQUFGRUFBQUFBQkFBUVFBQUFBQVVBQUJBQUFBQUJSQUFBQUFBQUFGRUFBQUFBQkFBUVFBQUFBQVVBQUJBQUFBQUJSQUFBQUFBQUFGRUFBQUFBQkFBUVFBQUFBQVVBQUJBQUFBQUJSQUFBQUFBQUFGRUFBQUFBQkFBUVFBQUFBQVVBQUJBQUQvdlIwN0VBQUFBQUFRNUc4OXlJVVJBQUFEQWdBQUFBQUdCQUFBQUFBTUNBQUFBQUFZRUFBQUFBQXdJQUFBQUFCZ1FBQUFBQURBZ0FBQUFBQ0FBUUVBQUFBQUF3SUFBQUFBQmdRQUFBQUFEQWdBQUFBQUdCQUFBQUFBTUNBQUFBQUFZRUFBQUFBQXdJQUFBQUFBZ0FFQkFBQUFBQU1DQUFBQUFBWUVBQUFBQUF3SUFBQUFBQmdRQUFBQUFEQWdBQUFBQUdCQUFBQUFBTUNBQUFBQUFJQUJBUUFBQUFBREFnQUFBQUFHQkFBQUFBQU1DQUFBQUFBWUVBQUFBQUF3SUFBQUFBQmdJRFBJOHpTRmJibGNBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiRklET18yXzAiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6Ijk1ZTRkNThjMDU2ZTRhNjU4NjZkZjVhNjk2NTllODgwIiwib3B0aW9ucyI6eyJwbGF0Ijp0cnVlLCJyayI6dHJ1ZSwidXAiOnRydWUsInV2Ijp0cnVlfSwibWF4TXNnU2l6ZSI6MjA0OCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6MTAwLCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjEyOCwidHJhbnNwb3J0cyI6WyJpbnRlcm5hbCJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XSwiZmlybXdhcmVWZXJzaW9uIjoxfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIzLTExLTAxIn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMy0xMS0wMSJ9LHsiYWFndWlkIjoiOTA2MzZlMWYtZWY4Mi00M2JmLWJkY2YtNTI1NWYxMzlkMTJmIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI5MDYzNmUxZi1lZjgyLTQzYmYtYmRjZi01MjU1ZjEzOWQxMmYiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiWXViaUtleSBCaW8gU2VyaWVzIC0gTXVsdGktcHJvdG9jb2wgRWRpdGlvbiJ9LCJkZXNjcmlwdGlvbiI6Ill1YmlLZXkgQmlvIFNlcmllcyAtIE11bHRpLXByb3RvY29sIEVkaXRpb24iLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc0LCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX0seyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AzODRyMV9lY2RzYV9zaGEzODRfcmF3IiwiZWQyNTUxOV9lZGRzYV9zaGE1MTJfcmF3Iiwic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIiwiYmFEZXNjIjp7InNlbGZBdHRlc3RlZEZSUiI6MC4wLCJzZWxmQXR0ZXN0ZWRGQVIiOjAuMCwiaUFQQVJUaHJlc2hvbGQiOjAuMCwibWF4VGVtcGxhdGVzIjo1LCJtYXhSZXRyaWVzIjo1LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NiwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo2LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIiwiYmFEZXNjIjp7InNlbGZBdHRlc3RlZEZSUiI6MC4wLCJzZWxmQXR0ZXN0ZWRGQVIiOjAuMCwiaUFQQVJUaHJlc2hvbGQiOjAuMCwibWF4VGVtcGxhdGVzIjo1LCJtYXhSZXRyaWVzIjo1LCJibG9ja1Nsb3dkb3duIjowfX1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRE16Q0NBaHVnQXdJQkFnSVVTT0VqVGYvL3lxUmZQVzdRcThxdEl5Q3JBZzh3RFFZSktvWklodmNOQVFFTEJRQXdMekV0TUNzR0ExVUVBd3drV1hWaWFXTnZJRVpKUkU4Z1VtOXZkQ0JEUVNCVFpYSnBZV3dnTkRVd01qQXpOVFUyTUNBWERUSTBNRFV3TVRBd01EQXdNRm9ZRHpJd05qQXdORE13TURBd01EQXdXakF2TVMwd0t3WURWUVFERENSWmRXSnBZMjhnUmtsRVR5QlNiMjkwSUVOQklGTmxjbWxoYkNBME5UQXlNRE0xTlRZd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUUNkdmwyN3cyZ3UxZlBYZUVGYklkcXgwQmFsdlZEVldyUVBKN0hxdml1RXRaSGx4U0x4U0Z0Y1hwVG9sdkx2b2Y4ZjR0TWVyUVRrVkd6Y21Zem0xRUJUNElKdU1tb0VxZmtFRWhXcHNBRE1Gcmpaa3FsWlk5RXF4UXpMb1ZFRW9uRTVvR3hTZFZDeENjTElhY2tweVIvQ0NYdmoxQnQvaFRnRTloVGxGNHBScXhNa3gzcGxGN3k4ZERabFJIV3M3dmJuaG1CQ0dlSTBaUEVRNm5sMm1DZzJyNzRhZEYydTZLOXJyTGZoQkMzUUxFOEVQcmdxVXNJK2hrdXEydEs0TTJTTU9wOHVVVlZrcVVldTNoMGtyM1dWSTBXMDJwa2dyT2dpRktMRk5rU3JiWWhkak1CRGo1aXptcWZjOXhKUktvRFg2MTJxZDhaR1ZIcFQ1QVlGWCsxaEFnTUJBQUdqUlRCRE1CMEdBMVVkRGdRV0JCVFp5VTVEaVEvYTJVRWdFN3FCSzB6aElzUk5SakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VBTUE0R0ExVWREd0VCL3dRRUF3SUJCakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBWHZuQjRTTHVVSmZZTVNWR0Foc3NML1NtV2xpM0ZTY2NneHlkdktsQUNjaWRJSVdLUXFhM3EvUVNVRVF6QzlEZ0VmTWdyN2lDMUJrVFpiSUxib1Y2VVo1a25Oc3ZqRVpXdU1lb2dKOHRnWnMxaFZ2S3daaXp3SittRWNtc2poSXJCWXVvTDFUNnlyT0p2S0ZnMWp2K0N5NFp3QTlCcGsvVjNVT2lyMVZ5SzhkQ3R5SHU2dmZvc290QWRZeDhGQXVSMjQzZ1JUTVY2Sng4SmRpZzJKRElBUU1selZlRHBTVUhYL0sySFhSSHhId2ZnamJnVWpqQnUvNzJyOE9mZWh5aHpIWEkzSzhDRkZkZmxPKzhuRU9KSzN5OEYxaXZnUzV1Ti84U21jWXcvU1RRWXdocnhQdXd6M25QOGJhTXVtNEJCMm5uWW1wQjYwc1gzYmw1azhRVVN3PT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZkNBWUFBQUNHVnMrTUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFIWVlBQUIyR0FWMmlFNEVBQUFiTlNVUkJWRmhIcFZkN1ROVjFGRC8zZDU5d2VRU0lnUzlBUUFYY0ZMQVFaaTlmcGVWejF0WS9XVFpyNVd4cGM3VzVrbkxhNWpJM1o4NXNyUzJuTTJzanRXd1pTN0lVSDRINHhDbkVReDREQVpGNzRWN3VzODg1djkvbEluQnZWSi9CNFB2OW51LzVudS81bnZNNTU2ZnpBL1F2MEhiL0lyWDNWRktQbzQ1Y25tNGluVUlXWXdMRlJtWlFVdXdqRkcvTjFpUkhoMUVaME5SVlJ1ZHF0MUJkKzJuU0t5Uy9PaHlzMCtsazNlLzNrUTlxdkQ0WlV0YTRWVlNVdVkwZWlweWlUaEFmb2NvT1JWZ0R1dXczcUtSaUFkM3JiY0V0alRqWUlvZjZXYUhzQ216VlBXQ014K2NnaDh0THFXTUthTVdzVWpMcW8yUnRKSVEwb096bWVycFF1NGVzWmdzT05rR3hIN2Qwa2R2VFQxN3M0T01VN1ZJOFpoamdHYU0rQXE5aUVOdThQaWYxdWR6MDdNd3ZLV2Y4R2xWb0NFWTA0UEM1V2RUYVhZRmJSOHZOdkw1KzNLZ2ZiNXhOTXlhOVJhbUppeW5hTWxHVFZ0RmxyNmJhOXUrcHFuRVg0dU11UlJnalNZRWhyTjd1dEZGZTZscWFsN05ma3c1aW1BR0h5blBwYms4Vm1ZMHhzdG5wdGxGQ1ZDWXR6VHVCTjgzUXBNTGpUdGV2ZFB6U1VuSjdlOG1ranhaMzlmWGJLRGZsZFpxYnZVK1RVZ0duQlZGNmZRMmlQSGc0VzE2VVdVd3Z6YmsxNnNNWkUrUG4wcHZ6N0pTZXVBeWVzOGxjcENtYUt1by9wK3FXcjJVY3dJQUhXcnZQMFlFemhYQXRMQWJzc0hocDdpR2FtdnlpalA4cnlxclhVV1g5WG9vd3h5QXVmTkJycDQzUE9CRlhabGtmOE1EUmlxY3B5b3dBd3B1ejJ4K2ZXdnovRHRkZTlzbXN6eWd0Y1I2QzF3YmR6Qmw2T2xxNVdOWVk0b0dhdGhKTXJrVEV4MGpBUlNIQVZzKzVyWWtRTlhiK1FnZlBMc1E2Z1h5SW5zcmVRZm1wbTdSVkZZZkw4Nm4xZmlVT2tZdlNoa1VQeHZidWt6b3k2SzFpaE0xaG8zWHpXNkV2U2ZYQStkcGlXR2FXZCtkb1h6THptR3dLWUZMQ0FzUkFsUEJBaE1sQ0ZYVTd0QlVWUHI4SGdWY0pIV3ErRjAwcGxyK0RNVGRyUDR6dnhZMTFrTk1oeFQrU2VUR2crZDRWNUxRSml0eVVHSk5COFZGWnNqZ1lCWk0vSUkvWENUa2owcXlET3BGMkFWUTE3Q0lqVXAvRG5UMVVrTDVGNWdkaitzUzF3ZzFnRTNnaWdtNjBmQ1h6U25QWGJ5QVBiSVh2K0lEcEUxNlRoYUhJUzlza3lobG1NRTVGM2NmcUFLaHEyQzBFNVBIMWdZYVhhTFBEa1pHMEhESk9uS1dIcDUxSTB6NVNPdXg4ZTFXQXVaemRIUXJUa3A4VG1qWG9JK2xhMHdHWnN6dWJxYk8zaWZRNkEvVzd2VlNZc1YzbVIwSkt3a0tjNFdIaUJrbVI4STNDQ2dJODdvT0w0cXpUNVArUlVKQmVqRU9nQVBLOGhZUHphdE0rZUlUcDJJTzl5VFFtZXJvbVBSeHgxcXhBY3NpbGUvdWJTZUViY1dRR1lFQ2doY0xZMkh5S2pvZ2pIMjVoTXBqcFV2MU91Z2xpNGVoMmVSdzBPMzJiSmpreXVDZ056ZzB2emxZTVNpU3MwdW9vNE1HN2hNT2pDRWFYMXlGRTBuU3ZqQnp1VG5FcEs4Nlo4SW9xRkFJdWJ3OGtnOUFyRWFSRVdTWkkrakg0WGJwNmc5RTlFbkpUM29hUnpETitNVUpCUURIbjU2YThvVW1FQnVzT3hCcy9ONSt0SkViUGtBRkRqOFVHdk9zL0lXdmNTZ2xHQmh2UzcvRlRZZnBXR1lkRFk4ZlBBeFdTQTM1c1RDNHA0K0xtNEFhcUlvUGVRdGZ1Zks2SmgwWmh4bGJzVVhPU21YTmlmRDVaVEFreURvZmJiY2NseG5BOFdOQXF4Q2JSTnlraFh4UXBhRHc2N2ZYVVlic2lHMEtodHYyb2VJdmg4cmhRTVlPY0VBcVhHL2VJK3puZ09jNXl4cjhxODJJQU0xYy9GTEZPcGxxdTVlRlFYck1aekdjVkNqWWJMV0c1STRCVDFldVJybGJ4dE5PdE1pdERERWhMWElJeW5BQXZ1T0VXRTNYM05kQWZ0OTRWZ2FHNDJYSVF0MFpYNlBlQ0UvcVFGZTlySzZIeDdZVTUwS3ZIN2ZXNGZTK3E3S0tCSnhzZ2dCWDVwU0FHaDFqSXJWaDV6UTZ3M1JmYWFoQlhtL2FDYkNaVGpDVUZVVHlXWnFXOXA2Mk1qSlBYVnFPclBnTU80TnY3NEdrZitvd2Z0TlZCRFFuakZKcUhTdzE3cFh2aFdXNUtacWUvUTQ5Ti9VU1RDQVZXb1FYRklIQkhYWGUzRlByVURzdUdEbXRGL2hIS1RIcGVreGhpQU9QSStTSnE2UzZIRjRJOVlXemtCSlRvNDZpVU16V3A4UGlyL1JpZHVMeEtZc1Nrc1Y4dkxsT1F2aEdYMllsUjBPQmhCakMrdS9nRWN2WTBBcEs3WWs0MU54alBTUW5XRkhURjY2VXJqZ2V2QjhDdTVhK2wydllTUlB0dVZEbzczaGhkTVNIblVYN3RUanNWWkd4QWwvV3B0aU9JRVExZ25MMjltWDYvdFIxdG1sa1lqOFc0WCtDU2pXY1VER1kxTnBTL0M3aFNLcWlNTE0vbDJRbVNXWjczRGR6K2dpbzhCQ0VOWVBRNDZxbmt6d1hVYnF2Qmt4alVRc1dmWkZnYnVvM3JBZit3TjdqT085MCt5bng0UGkzTCswbllMMVNjaERVZ0FQNGdQVi83SWQxcSsxSFNobXVHa0lxV1JQZ3l4TUZxUDhIZmpUbmpYd1k1YlFmYkpjdDZPSXpLZ01Ib3RGL0hlMWVnc2F4SFNxRzZ3ZmRtUTV4OE55VEZGcUJjcDJpU293SFIzeWs1KzM2aEY3dlhBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiRklET18yXzAiLCJGSURPXzJfMV9QUkUiLCJGSURPXzJfMSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJsYXJnZUJsb2JLZXkiLCJjcmVkQmxvYiIsIm1pblBpbkxlbmd0aCJdLCJhYWd1aWQiOiI5MDYzNmUxZmVmODI0M2JmYmRjZjUyNTVmMTM5ZDEyZiIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwidXYiOmZhbHNlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibGFyZ2VCbG9icyI6dHJ1ZSwiYmlvRW5yb2xsIjpmYWxzZSwidXNlclZlcmlmaWNhdGlvbk1nbXRQcmV2aWV3IjpmYWxzZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOmZhbHNlLCJhbHdheXNVdiI6dHJ1ZX0sIm1heE1zZ1NpemUiOjEyODAsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6OCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoxMjgsInRyYW5zcG9ydHMiOlsidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN30seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTh9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi0zNX1dLCJtYXhTZXJpYWxpemVkTGFyZ2VCbG9iQXJyYXkiOjQwOTYsIm1pblBJTkxlbmd0aCI6NiwiZmlybXdhcmVWZXJzaW9uIjozMjk0NzQsIm1heENyZWRCbG9iTGVuZ3RoIjozMiwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjEsInByZWZlcnJlZFBsYXRmb3JtVXZBdHRlbXB0cyI6MywidXZNb2RhbGl0eSI6MiwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjEwMH19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTAyLTAxIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NCwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZdWJpS2V5IEJpbyBTZXJpZXMgLSBNdWx0aS1wcm90b2NvbCBFZGl0aW9uIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNTAyMDEwMDgiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0wOC0xMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzQsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWXViaUtleSBCaW8gU2VyaWVzIC0gTXVsdGktcHJvdG9jb2wgRWRpdGlvbiIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjQwODEyMDAyIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMDgtMTIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc0fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTAyLTA2In0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiNTFmZmFiMmUzMGE4N2NjZmRhNGNjYTEzZjVjMGEyM2E3MGI5MDc3MyJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyI1MWZmYWIyZTMwYTg3Y2NmZGE0Y2NhMTNmNWMwYTIzYTcwYjkwNzczIl0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJBcmN1bHVzIEZJRE8gMi4xIEtleSBDYXJkIn0sImRlc2NyaXB0aW9uIjoiQXJjdWx1cyBGSURPIDIuMSBLZXkgQ2FyZCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxMCwicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoyfSx7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjYsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo2LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDNURDQ0FvcWdBd0lCQWdJSkFKMW1nWCtUS2lIN01Bb0dDQ3FHU000OUJBTUNNSUdBTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNBd0tUbVYzSUVwbGNuTmxlVEVSTUE4R0ExVUVCd3dJVTI5dFpYSnpaWFF4RkRBU0JnTlZCQW9NQzBOdmJYQnZVMlZqZFhKbE1SQXdEZ1lEVlFRTERBZEJjbU4xYkhWek1TRXdId1lEVlFRRERCaERiMjF3YjFObFkzVnlaUzFHU1VSUExVTkJMVkp2YjNRd0lCY05Nak13TVRFek1UYzFOVE13V2hnUE1qQTFNekF4TURVeE56VTFNekJhTUlHQU1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQXdLVG1WM0lFcGxjbk5sZVRFUk1BOEdBMVVFQnd3SVUyOXRaWEp6WlhReEZEQVNCZ05WQkFvTUMwTnZiWEJ2VTJWamRYSmxNUkF3RGdZRFZRUUxEQWRCY21OMWJIVnpNU0V3SHdZRFZRUUREQmhEYjIxd2IxTmxZM1Z5WlMxR1NVUlBMVU5CTFZKdmIzUXdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUjNObHNscEVwWC9CaVo5UnBXRStxcm0ySVJNTGkzYmtzZGFIU3BBOCtvelVhRmF2VDRMMHBQU0xCaG5UUkYxNUNhVEhKTWNFVUd1Z3IveG9HVGRMTnBvNEhvTUlIbE1CMEdBMVVkRGdRV0JCUjR6NzhzVG1haXdIQncwZnpWNjZXNmZsLzlXRENCdFFZRFZSMGpCSUd0TUlHcWdCUjR6NzhzVG1haXdIQncwZnpWNjZXNmZsLzlXS0dCaHFTQmd6Q0JnREVMTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnTUNrNWxkeUJLWlhKelpYa3hFVEFQQmdOVkJBY01DRk52YldWeWMyVjBNUlF3RWdZRFZRUUtEQXREYjIxd2IxTmxZM1Z5WlRFUU1BNEdBMVVFQ3d3SFFYSmpkV3gxY3pFaE1COEdBMVVFQXd3WVEyOXRjRzlUWldOMWNtVXRSa2xFVHkxRFFTMVNiMjkwZ2drQW5XYUJmNU1xSWZzd0RBWURWUjBUQkFVd0F3RUIvekFLQmdncWhrak9QUVFEQWdOSUFEQkZBaUJwZUtGTnZ6RnZuK3pZOGNRZG1GR3J0bDAxSnh5bGxhdmxxeHV0YzJ4dFJnSWhBTzAxZUZzVXZURGRrVGVIbTllQXZ3TFA1dlhOSXJVM01PeGp3YUlsdGFPWSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFnQ0FZQUFBQnplbnIwQUFBQUFYTlNSMElBcnM0YzZRQUFBWEpKUkVGVVdFZkZsdHRxeENBUWhuOURZVnRUU3NtcDcvOTZTVGFGVWhkNkU1Y3hhOWxrbGVpWTJsenRnbzdmL0hNVUFEUU8vSVFRMERyY3BFZ0ZpSDF3NjJzeWdEWElCVGtNd0FVU0FuVU1RSUtWaEt1THp5NERJWjcvS3BhYWhDc0NoanVNSytzOFBsVnYrUG44Z3RDOGVtWUQwRVVJQWRuVVVNUEk3aVRCQUw2RFpkdmtBZkExa0g4RElLQ3lxd0JkNUZhZ2dPd3FrM1QyeTVJRDVyRkM0RW1XT0wwOHJ5S1NENEJrYjV1SGpNOE9vQVh5aGVDKy9GemVreHhxSEhsZHlOUEt2VTNsdFdzZmxnM3ErOS85OExlTnlBNFhyd0k1T3FHcCsxc0NXaUJhdmVpM1RjS1lLUmc4RGJjdG1NSkFrcGQxYmNyUzVFQXVCYXdLOUtCVjR6Sk5rUFc3NllpWU5kVDU3RjhVSEprU05JeGNsYUNHQ2NDOGdJZ1pxcWYvdHkvSWFoUW5UZDVsM2I1UFJLdEUxaENRYy9LakJ1YjArUHRXdXQyYXRsTXdOUUhqQURaeGxkMHlFeTQ5Znh1S0EzRG9rcnFNSkFQc3hpcmdRRVRCQkZoakhPRUI4RzQ1OGFKTWNYcjluaWhYS1JHd0FaRDdsc2NBQUFBQVNVVk9SSzVDWUlJPSJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIyLTExLTE1IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEwLCJ1cmwiOiJodHRwczovL3d3dy5nZXRhcmN1bHVzLmNvbS8iLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IkFyY3VsdXMgRklETzIvVTJGIENhcmQiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlUyRjEwMDAyMDIyMTExNTAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIyLTExLTE1IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEwfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIzLTAyLTIyIn0seyJhYWd1aWQiOiI5YzgzNTM0Ni03OTZiLTRjMjctODg5OC1kNjAzMmY1MTVjYzUiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjljODM1MzQ2LTc5NmItNGMyNy04ODk4LWQ2MDMyZjUxNWNjNSIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJDcnlwdG5veCBGSURPMiJ9LCJkZXNjcmlwdGlvbiI6IkNyeXB0bm94IEZJRE8yIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQ1FUQ0NBYUtnQXdJQkFnSUdBSUZEVVhRck1Bb0dDQ3FHU000OUJBTURNRTh4Q3pBSkJnTlZCQVlUQWtOSU1ROHdEUVlEVlFRSUV3WkhSVTVGVmtFeEZEQVNCZ05WQkFvVEMwTlNXVkJVVGs5WUlGTkJNUmt3RndZRFZRUURFeEJEVWxsUVZFNVBXQ0JTVDA5VUlFTkJNQjRYRFRJd01EWXhOREF3TURBd01Gb1hEVFE1TVRJeU9USXpOVGsxT1Zvd1Z6RUxNQWtHQTFVRUJoTUNRMGd4RHpBTkJnTlZCQWdUQmtkRlRrVldRVEVVTUJJR0ExVUVDaE1MUTFKWlVGUk9UMWdnVTBFeElUQWZCZ05WQkFNVEdFTlNXVkJVVGs5WUlFbE9WRVZTVFVWRVNVRlVSU0JEUVRCMk1CQUdCeXFHU000OUFnRUdCU3VCQkFBaUEySUFCR2hjaWt1UllnTmthazBwTzhYZ1BXd0c5UlpYTFFlcVFFdktIZkNuMzdnYVI1VTlyaHA0VzhKVGJmVTl0OENGZ0QwRHhOWEVKRTlLR05uTEF0TDcwOGhDSGVvNlM1b2V6bkdERm45SjgwYk83YmRTRFlIUzViemtFS1BMTnVhbVdLTkZNRU13RWdZRFZSMFRBUUgvQkFnd0JnRUIvd0lCQURBZEJnTlZIUTRFRmdRVWRyRXRVeVdhTXRwVkFRN0pHcVFwM2p6TlNoY3dEZ1lEVlIwUEFRSC9CQVFEQWdFR01Bb0dDQ3FHU000OUJBTURBNEdNQURDQmlBSkNBYldhL3hjS3g3S0Njb1VzcDhTVlpuV1N4RDhuOTFUcUNKS2FqczdrSkJ6MkR6dlpadFB4S3NNWTM4bEgvOE1ZVEMzd2xSd2RaYzVzNjFFaGxiZG5PZ3VCQWtJQkZtSkxzT1B5TVFXVXhtV2wyenVBUzdjdHFVMDNVNzRDM1VVSFNLREgzV1NKSCt5M2kvWHNDcy9GTStEay8zRmpPZ1FUeGlvYXFJYzNocndoUGxtb3JObz0iLCJNSUlDV1RDQ0FicWdBd0lCQWdJR0FJRkRVWFFwTUFvR0NDcUdTTTQ5QkFNRU1FOHhDekFKQmdOVkJBWVRBa05JTVE4d0RRWURWUVFJRXdaSFJVNUZWa0V4RkRBU0JnTlZCQW9UQzBOU1dWQlVUazlZSUZOQk1Sa3dGd1lEVlFRREV4QkRVbGxRVkU1UFdDQlNUMDlVSUVOQk1CNFhEVEl3TURZeE5EQXdNREF3TUZvWERUUTVNVEl6TURJek5UazFPVm93VHpFTE1Ba0dBMVVFQmhNQ1EwZ3hEekFOQmdOVkJBZ1RCa2RGVGtWV1FURVVNQklHQTFVRUNoTUxRMUpaVUZST1QxZ2dVMEV4R1RBWEJnTlZCQU1URUVOU1dWQlVUazlZSUZKUFQxUWdRMEV3Z1pzd0VBWUhLb1pJemowQ0FRWUZLNEVFQUNNRGdZWUFCQUVKdG1yTVljNDhuUFNwMFJSbUV3VDJVNWFxMEQxYjNVUkxwbUpQMjc3SW1FWEtFYmpWUUE4UDNVeVRkWmluRUxUUTVnNkUrbG5OM0doVVdpZjIvVm1TYlFEbnU5ZitlYnlJWmZCYWJvc0tLM1NRVnY0S211UDlwYjBmN1Aydk1QQVVGSk5adktlSDFEUHRhWmtGeWJNS1pzZzhDSkVzN0E5S1czUkkvOFFEcE4xbko2TS9NRDB3REFZRFZSMFRCQVV3QXdFQi96QWRCZ05WSFE0RUZnUVVVbmZMT0REYWt1MW84Q1N1d1dmV3lsajRPdkF3RGdZRFZSMFBBUUgvQkFRREFnRUdNQW9HQ0NxR1NNNDlCQU1FQTRHTUFEQ0JpQUpDQUtkOERlTmhiUGV5Zmg3VUQzTTlsUHA1YTc3TTFMbUMyTTJvN3pSaUhsZVB0K1hjci9JL3hHSzEyNGdFdUhqYk9meWFucmU2M0VNVHVWVzh0czVrUjkwNkFrSUJnU0loSm9FTmtNVkZiZU1SVURuRHRiditnS2kraHRxT1JHeXNpZDVzZzJWdkNYOVFmblVxQkt0WlZVQmVRVlBrM0U1R1VFYW1MazRqbGpkdmxER1NYcFU9Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUVBQUFBQkFDQU1BQUFDZHQ0SHNBQUFCaFdsRFExQkpRME1nVUhKdlptbHNaUUFBS00rVmtUMUl3MUFVaFU5YnhTSVZPNGlJT0dTb0xscVFLaUk0V1lVaVZDbTFRaFdYL05TMjBLUWhhWEZ4RkZ3TERxS0xmNHVqa3k0T0RxNU9naUtJazRPNzZLSWxucGVJTGRJT1BranVsOE85SisrZEIvalBTNnB1ZDR3RHVsR3gwb200bEYxZGs3cGVFRUlRM1JqRmpLemE1bXdxbFVUYjlYRVBuNmgzVWVHRi82MGVMV2VyZ0U4aUw2bW1WU0diNUtuTmlpbjRqTnluRm1TTmZFVWVzN2hCOHF2UUZZKy9CT2RkOW9jRlc1bjBIRGxDRHVlYldHbGl0V0RwNUVseVJOTU4rdnV6SG11Q3Q4Z3h2VlJWZi9ZcFRoaktHU3ZMUXVjemhBUVdzSWdVSkNpb29vZ1NLb2l5R2xTU2JzMUJoc1V2RzJsMng1bHhhNzlCMXk5RkY0VXVSYWljbVVjWk91ZUZEOFNkL00zYTNwaUllVTRoT25jK084N2JNTkMxQzlScmp2TjU3RGoxRXlEd0JGd2JqZm55RVREOVRyM1cwQ0tIUU84MmNISFQwSlE5NEhJSEdIZzBaVXYrdlMzKzI4dU5LeUJlcHc5QWhsa2xiNEg5QTJBa1Q2LzFOdWNNTnVmV3BxZmY3V21aSC9BTmhjdDBTT3doNXBBQUFBTEJVRXhVUmYvLy8vdjcrL0h4OGV6czdPdnI2KzN0N2ZUMDlQNysvdHpjM0oyZG5XbHBhVDQrUGlNakl4WVdGaEFRRUE4UER4RVJFUm9hR2lzckswNU9Ubng4ZkxXMXRkM2QzWUdCZ1FBQUFBZ0lDRWxKU2FLaW92RHc4TlRVMUZsWldRb0tDZ2NIQng0ZUhrTkRRMTVlWG0xdGJYQndjR3BxYWpzN094Y1hGd1VGQlJrWkdlbnA2V3RyYTJKaVlxeXNyT0xpNHZ6OC9ObloyWjZlbmxKU1VnME5EUk1URTR1TGkvYjI5clMwdEIwZEhRSUNBalkyTnFhbXB2UHo4Ky92NzlQVDA4M056ZGJXMXVYbDVmTHk4dXJxNnBHUmtTUWtKREV4TWN6TXpQMzkvWHA2ZWljbko2NnVycWVucDJOall5NHVMZ0VCQVFNREE3aTR1UG41K1pPVGt4UVVGQXdNREphV2xsZFhWM2w1ZWZYMTljdkx5MTlmWHdzTEN4Z1lHT1RrNU9ibTVsUlVWSEZ4Y2ZyNitrMU5UYnE2dWg4Zkg0T0RnNGlJaUg5L2YyZG5aejgvUHhJU0VvbUppZmYzOTQrUGo1U1VsRmhZV0NrcEtkcmEyakl5TW82T2p2ajQrTDYrdm1ob2FEUTBOTEd4c1gxOWZiYTJ0b1dGaFJVVkZaQ1FrTXJLeWhzYkc5dmIyems1T1lhR2hsTlRVekF3TUNFaElTVWxKVG82T21WbFphR2hvZWZuNStqbzZHQmdZSEp5Y2h3Y0hNSEJ3Y2ZIeDFCUVVJS0NnbHBhV3QvZjN6VTFOVlZWVlFRRUJGeGNYTzd1N3REUTBETXpNK0hoNGFDZ29FcEtTcnU3dTVLU2t0ZlgxOFRFeE1iR3h0N2Uza1JFUkZaV1ZxdXJxd2tKQ1plWGwzaDRlS2lvcUR3OFBMS3lzbzJOalNBZ0lGdGJXNysvdjBoSVNKaVltTTdPem5WMWRZeU1qSitmbjVxYW1rSkNRbEZSVWJ5OHZHRmhZUVlHQm5OemM4L1B6NFNFaE5IUjBiMjl2Wm1abWJtNXVkTFMwaVltSmkwdExRNE9EdURnNERjM043Q3dzTURBd0dabVppZ29LRVpHUnNuSnlUZzRPSldWbFV4TVRLU2twS09qb3lvcUtvZUhoK1BqNDZtcHFkWFYxVWRIUjhqSXlKdWJtMTFkWGJPenMzUjBkRzl2YjI1dWJyZTN0MFZGUlV0TFN5SWlJcVdscFVCQVFDckEzTllBQUFBSmNFaFpjd0FBTGlJQUFDNGlBYXJpM1pJQUFBVWhTVVJCVkZoSDdaZnJYNVJGRk1mUEl2Qlk0c3BsdGQ4YUFSb29peGNXeE5RSFVXUU5lU1RkWjExREFsY2x2THVTTjFiTkJBV0ZOTkhNdkpDM3NpUXZYZEFTTDVrbXBpbVcyVVZMeTdTc3pQNkt6ck1NK3FIUHN3djdwdDc0ZlRYem16UHpuRGt6Tytjc1BlUS93QkRVSVRna1ZCSzl3SkE2UHZKb3A3RE94aTdoRVpGUnBxNUJRbTR2M1I2TFJDdk0zUitQRm1OdEl6MFJFNnROaXV2Ujg4bjRoRjR4dlJNdFdqZkoxRWNZdEVGdzN6ZzJUK3pYUDdsbDg5YVUxQUZwckExOGFwQlEvQ0FOSGdMSTZVTXp1RzBkbGp3OGMwU1dUVnRvNU5QWnZNU29ISytSSDVUUjdHN3VNd2FpWVdQRzJzTlZudVRvbko0d3pra1VPdjVaSUcrQ01QUkJSajV2L2JrQ2tnb251bmp1ZmRSSnBzbEVVNHBVcU04WEMxczlCazNselUrVHFGdStGamJIOUtpRUdUTm56WjdUUlhQRVBiZUVEQzlZb000VHhqb1V6d2NXTENURFBJNll1cWgwb1pESnMzZ0plNCtsdzRsZU5IYnlmWnpTTWhXNWt5azZueDFOZjhucnFlSXBjWHJQSW5oNUdaQldicVVWSVZwWG42NFdyS3lna1pVY3FsS2VydVNzV2wxVlBlVGxOV3RmV2Nlak5ldGxxQnVVWmxOZE9yd0s4MGFLN2cxVTgyR1ZwTm9kV3ZpOHhCYTlKbEdCSGRoa0ZjWjY5QVZlSjlyTVlkaENsTGxWbTJnZU5YVmI5OGhhYmxuZVdMY1dXTFJkMk9xeHc0eWRIcG9BaE8waWFiY1pjRzBlMTN6eGd2cS95WWZDdDNzSXIreWJHTWh2VVRjMzh0ai9QUmJJbTk0V0E0enl6bEwySW0rdjZPcFNaOEc3VnRyblBlYjl0VGh3c1BVcjRIblBZWGxmdFBVeFFSMU1oUlo4NEtRVU44d2ZDdmsreXBoNnZ3K0xKeGVIREhRWStJaVVqeUVmRVhMN2FWQnhsR3J5VUNuUllCbXIvUjIzUHNlMGJ4OEhUcER5Q2N3VlFnMkFrM0NIY0Foamt5bEZ4bm9oQmtJWUZrbldRNmlTMkJmMVV5RUdnQzBQOHluTGhWTkVVeEZ1RTJvQTFKM0daM1JHUlNNcFlkZ3F4RUE0NjhBTStodzRSMEZsT0NuRVFNaVVNWlBPQThkcHV4c3hRZ3lFTHh6OFMxd01IQ0ZiR2FLRUdBZ2Nnd1Rhb2ZJcTBnVkVDakVRK0JTS2FJb0xFNG1LNE1vU2FpQms0NktrVk1NdWFTOUNxaEFEb1FoTmZXZytZaS9SNURoODZlL2g4a0VwTUU3N0xad2phUnZ3bFZBRFlMZ0R2YWhQR3RJbHlvbEQ5VWdodDUvaWkwanlTSWVoWGliNkdvamk1UGh2ckR0RVE1K1p3QmpLcVVWdkoyMi9BcHp5Q1AwK0tkK1l2eFZOWFdwYytLNlk4cUYrencrMEc3aGFJd2FhQ1cxczRsZTlRUFIwaVllNlgzdVYwOWpUalFPQkh0Y2ViTVA1d3dVdFRXQ1c2T3VTN0VaMk5LV3F5TjdGUHk2ZW9QNVlQeUtVTTZidGJHTVlwMmZqNkhBY1dDR01kYmtPeEV0U1A4QitnL1BjYkMyeE9TSXVwa2RPa3JYVytpMDBEMXJxOFkxekorU2ZxSVJMaE9uYWh4cjJQU2d4aktkK1pzVjZzNDFObkVtRDhSZkt1TXA1L0JoblorbkdyZHRWaVUwUlM4ZGUwOHF6dWdMcTZJYXJzTmxXbjkwT0pKNmxrcjdzODg1ZlcxL25Eck9hZmlPNnBmcmZoR0pTa1hpWmxLR0pYS2paU3l0YXFxSFF2ZkZjb1pnenljRGVjUWIzamZVT0orVVRDbVV0T2MwN3I4MGRjSFJ1L2ZMZmI2N1U0cEIwMEVNR0U0ODNDR05kckNZdVE3WWxFMVhjaWRCbXRlQ3dqN2VSdExlU2o3T24vNndqbmVEWWw5WHorZHYrMkxERzZKQmx1VGJwWm1NaDd5YmxOcnZWVk42eUw1ODBWUEVYVjE3bjI4U0UxS1ZjMG1wV0tyNGN3MFdHdktuT0svc250TkhJUzdqK0xNKzBOVjltWi9ENW8xZjRYcWxWWGR2NTB0eEkwSmJnNjdCZ1R0VEp1MnYrMGlMS0ozdXZUZThmRUx5bjhvQjNsa0F0dTcxWTU0bndoM1RwWHZ6ZjA3bldRdDZGdTh1bXRmL2ZSaXNVNjZBTWo5VnZhZk9RL3htaWZ3RGtuVTY1UHF2RFlnQUFBQUJKUlU1RXJrSmdnZz09IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiRklET18yXzAiLCJVMkZfVjIiXSwiZXh0ZW5zaW9ucyI6WyJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiI5YzgzNTM0Njc5NmI0YzI3ODg5OGQ2MDMyZjUxNWNjNSIsIm9wdGlvbnMiOnsicmsiOnRydWUsImNsaWVudFBpbiI6dHJ1ZSwidXAiOnRydWV9LCJtYXhNc2dTaXplIjo2MjksInBpblV2QXV0aFByb3RvY29scyI6WzFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjE2LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjQ4LCJ0cmFuc3BvcnRzIjpbIm5mYyJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIxLTAxLTAyIiwidXJsIjoid3d3LmNyeXB0bm94LmNoIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyMDA4MDMwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMy43IiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjMuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMS0wMS0wMiJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjEtMDEtMDIifSx7ImFhaWQiOiI0ZTRlIzQwMDUiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhaWQiOiI0ZTRlIzQwMDUiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiVG91Y2ggSUQsIEZhY2UgSUQsIG9yIFBhc3Njb2RlIn0sImRlc2NyaXB0aW9uIjoiVG91Y2ggSUQsIEZhY2UgSUQsIG9yIFBhc3Njb2RlIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjI1NiwicHJvdG9jb2xGYW1pbHkiOiJ1YWYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfSx7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsicnNhX2Vtc2FfcGtjczFfc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsicnNhXzIwNDhfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfc3Vycm9nYXRlIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2ludGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjUsImJsb2NrU2xvd2Rvd24iOjYwfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCIsImJhRGVzYyI6eyJzZWxmQXR0ZXN0ZWRGUlIiOjAuMCwic2VsZkF0dGVzdGVkRkFSIjowLjAsImlBUEFSVGhyZXNob2xkIjowLjAsIm1heFRlbXBsYXRlcyI6MCwibWF4UmV0cmllcyI6NSwiYmxvY2tTbG93ZG93biI6MH19XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJ0ZWUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsidGVlIl0sImF0dGFjaG1lbnRIaW50IjpbImludGVybmFsIl0sInRjRGlzcGxheSI6WyJhbnkiXSwidGNEaXNwbGF5Q29udGVudFR5cGUiOiJ0ZXh0L3BsYWluIiwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBRWdBQUFCSUNBWUFBQUJWN2JOSEFBQUFBWE5TUjBJQXJzNGM2UUFBQUJ4cFJFOVVBQUFBQWdBQUFBQUFBQUFrQUFBQUtBQUFBQ1FBQUFBa0FBQUZKYnVKMkVrQUFBVHhTVVJCVkhnQjdKWXhiaU5IRUVVRkoxNFlDNWpKQWdzbkhzT09IUEVBQzJoeUIrSU5OS0V6TW5TbXVjQmllUVB5Qm1MZ25MeUJlQVBTSjFqZWdINmY2aHFVeTlQYVhnMEpPK0FBWDkxZFZWMzkvNS9tUURmSDQvSG1pcndIVjNPK2NFR3VCbDBOeXY5OFNqNHQxeHQwdlVIWEczVFJYOEdnNWpjRG41OS9yTDRESDhBTWJCeFd6RnZ3RzNnLzhKaGhHa3MrVkxtYTF4Skg5QVRJaEdNaFpGN3oydk55L0V2aXc5ejlTc2FJck1HKzBKUSs4N1IzOHBYSER0Tlk0bUt1cHBRb29rWmdIb3hacy80RXB1RDJCU2l2T3RXYmFicDlvOUx6Yy94TDRzUGNMV0NJa0Fwc3dXY2dvYmQ5MjRpcnJuWVl4enB5TXZvT0xNQmY0RjgxY1kvV0pVYmthb1p0N21QalloSUEvZ1IzTG56RFdtYk13QXJzZ2QyTXZsSDVEV2hCWndoem1mVTcrTlgzN3B2bnhKZkVMMllReE4rREQwYVl1UVRKbEMzb002STBkbUQvSEZTdTl6dWI5NDBsUnVScUxtSVE1TDgxb2hJQzlQWWxyTlNFMGpyZHJGcG5NWDVqWjhZeEo3NGtmaEdEakNDa1p5Qm56STdjQWt6QkxhaHNuNDBwcm0rT3ZsMVBJR2ZjaXR3UHRpK09KVWJrYWk1aUVHVEhZTnNqNkRNeGllMitKVkhNUzJ2MjZUWk9nY3lOWnVsRjlQYk5pUytKbjkwZ1NPby9ZNUgxQW1UTUF4aDVBN1FHTlppQkZzekJCcXpTV3JFSnFQdyt6WW5kZ3gwNEJ2d1VhMHVNeU5XYzFTQ0l5cHhJK0pGWVphU1pqMEFEWkVTc2ZXbTlwMzRKYXV1bGtiVnVsRjZBN2QzNHZPWTU4U1h4WVpzZEV3aStkU1JGVnFRYlZ5SXhMVGdBRS9QYWNlOTdNNi9Bayt0YiszTkxqTWpWbk5PZ3BTTW9jN3J2Z2VaZzYvTFJtRFU1NGNIaE1jWFU2NWlCak9yTVlQNHAxVzMrVndaQjZ2dEVURUlreUp2VHNJNjNSalVMMFB0ZnRSZW51ZnFCS1hnQ2ZXYk5pWisrYjR3NlR6VzE5Y25kanBMNFdXNFFaR2FKVko4NVVaQ00rY2ZIMm9Sb2xEQ0RqOXVjbk14YWc5aDNTOHlidExROUpVYmthczVsa01pSmNHT2tORTh4RXlMemFzdHJaRDFLZFN2R1BiQmFQeDZJSzY5K25iSE1hN0FEc1hhY2VuZjFPZkVsOGNFR1FYQ2NTRDZhZU5ZaTU0bkhtMVdSWDRZYVg1K2J5eXp0cTVJSkkrYUwwRWMxWnRJdnFpc3hJbGN6YkRPSFEyWUc5RzJ3NnoxbTdnVkdjMVF2RWI3bU5mTlc0dlhRNnlIMDI3UHVibHRPZkVuOEhBYk5qUXlqelBIaW96bDYrOUVNMVN6QUhUaTkrV2ZaSitGVmlpdXZ1cmgzUTh4ZVRCUHlHK3RUWWtTdVpyQkJSa0pFd1RhUTdBUVRseGd2VUlMdlFmZW1tY3ZnR1dnVGF1dXZrWmpxbzFFNjAweGFNUGRudE5xWEUxOFNIN1pacDZjSFl0R2N4dVdXZ2ZpamlWSU44d25ZaHhvdlZQdXJWRHRpcnYwKzcwMWFoOXpiRWlOeU5XY3hDRUxSZ0ZaaTlKQ2JCY0tMNTh6ejM1NjlYbmljejIwdis2YWg3MFk1WWpMUTM3SW1KNzRrUHNnZ2lMd0JLK0NGZEFZUWIwTHVpYlg5SENSa0cvTHFvNXAxZ2hkcVoyaVA5WWo5VHdhUzkvRk5pUkc1bXFFR2ZZU01FZGZvelJtSDNKZk1VWDVzTjhSR1l2ZGdGM3A1a3hZaGQrcEJiSjNpLzZsQkcwY3Vtbk53T2QyRVRqeHpDVHc2K0wwVjhTVlE3em5RZWdTaUVWdG5vc3kxZnFjNDY3SEZjcmVqSkQ3MEJrbUVpRDA0c2lKMk1IS00wUnlKTnpFYXZUbHR5Rmxkby82cURmbDVpbmRtcEx6VnI3VXVNU0pYTTlTZ1B5QlFpYVFlNWczdzVraGdjMG8rNTVlc1RiUkdiMDdNK2JxdWovYUVIclg2RS9QNzl5bFdxelludmlRK3lDQ1JzQWNpODBCY04yZmk4bDVBTktjTmUvV1RlUUM3RUIrckg3RytuMVFWYWs5bnE3YkVpRnpOM3dBQUFQLy9YOUxsUHdBQUJQTkpSRUZVN1ZxN2ppTlZGQndrSkJDc3RCMFFFZXkySUdTRHpwYU1Ec25XTWNsMlNMQ1NIUkJzTnY0QXhEZ2lRbkwvd1hSQVBpM3hBVGI4Z1AwSDIzOHdWTFZQbWRvcno0TngwRzNKVjZvNTk5WTU1L3BVeloxWmFUVVh0N2UzRjAvRkJkYTNML01DV0FPM2hnL2ttZWZDZm1ZNTFxMkFMSExWUGJrc2FuWDNsbjFBa2ZSVWNWZHRmQlBjN0tuNjJQZGtjOWlNWWQ3WlFCSkI4VG1INDhMZWgwN05vZERPN3RnYnQrdmVmd05vdU81ZkhMaDNHMXhxWEk2K2ZFaURXaHVjQXE2QS9tVWNFUEdRT1RTQmdpWUE3eVhtUUJWUkJqSG1BZWNtOFprMFdmeU0zSkFHTlRITUJySGtNRnpZWjBBYk9RM0x3WHZ6RVBtZDdwSjhHYjJxdnkvV1VWdmJIVTF3TStOYWNrTWE5QjdEWEhJSUxaeExJQlh2NWxRSDhwWDE4eVhkWjQ1eWVYeVd6b3daVUNUOXo0WTA2RE1UeG9HYlpEZ092UVQwY21pT0M2SVpFOTNCaURQdm1RS1h3Qld3QWJ4SCswWFVlNzYvSytsNVBaaEJKcWpHVU9tcm9aQXBhN2l3WjQzRU1kS2NZcGU5L3l2cVNtQUZlUCtXWGVEOFhwbm1YRG1ZUVJqdXkyUm9DYUNZWGp4aURxeVR1by9NUVc0Q1VGUnI0R3VzZ0V6MlliOEU5Qm40TjdnM2lEWGkxc0hOakNzR015aUcyZGd3RlA2V1BCZjJITFN6UElYUXZGNDBZZ2xzQVFtOEt5NnNaeG4xcS9pTTNQdUQ0NzI2S3h2YUlBNi9BZHdZRHRqYWtCcjJpZ0s0a0dPZitNZkVOZXI3VjdtNzRiK3Z5VDE5VFhDOWlVTWI5RnlqWXFpN2pPSExtbGhkbllqcURRYVhzd1l4QTk0QVM4RE42NWpUUFlyZytDcFZWNUlQYnNIOW9BYkZNRDloSUg2SE5hVEhKZmk5S094VGMvYXZpbmVsQy9VbFFJTjFaM3VncHJWOHlUek81QXJ1eDJCUWJRTkt5QTI0a2dOeVljOVh3YUdWWjZ6NjVDNWY0ZHhFRGVQRWNnWE9idEsranpYUm8zdG53ZldSK3pFWVZHSklEWGlOZmNuQnRIQ2VBSjNWN00wQmx3R3BjYnFyWVo3M0lQSU84VnZkSFRudm53ZFhNbklOYmhDSHdQQy9BRG4zV2ppWGdBOVBnWHdKRldzUWFjNGFrUEJEc1dZdEYrcHVyTlpmbUg5R0ZiWFBHTGxHWWRCdWxGNUVBUkVMWUd0aUpId0ZybUF0WW1vT2pac0NlVVQxTUpiUlUyRXZma0dPQzF4cmZObVQ5bVUwQm1ISWYyeFFDV0hzeFd0bW5HbmkybXFaNzQyem1wbmxHL0k0NThhMVZyczF2aFN2T0NhRFNodVV4bXdBdm9wTXcySS9BVHBBQnU3TkFjZCtyMld1cjdOKzlYVUhPT1krRjY4NEdvTTRFQWI4RGJnQ0NnMFlQTVczZ0FReXVqbDE1Rnk0MStkeHo3N2Y3aFgzTjdsMGpjb2dIdzZDQzRBL0t1c1FMeUdNS3lCblBTSnJQTmUvSW5CdVVJWXpvYm8yZXVmR3ZTS1hydEVaaElGZkFWc2JYS0lZK1dxbUVvRjlsZFRObVFQblpud0libUsxVFhEcjRCWThIMXFqTTRoRFl1aFUrQWJjSmRDL2pxaVpoVGdhUnl3bEVQdTU1ZXFvcjQxamJ4N25hL1VkaXFNMEtBVDlEQUg4ZmZUR0I4YzVBeHBBeHFUbUZFbXVqSjdPZUpvekIvaWp1amZkUDBmNzBScWtBUlVwSkVTNTBOUWMxbXdCbWRlL0Rwd1h4alhZcys1UFJ0MS9WeHk5UVJEeEF2Z2Q2QUFKVjV4S0dISVV2YmFhVFhDRmNlemppL3BSZlEvRjBSdEVBUkNVQXplQWpPRStsempzYVVKbmVmNHlKNWNCYStOL3hmNEw5VDBtbm9SQkVnSnhyNEh2ZFdiRWVRYklPRVkzcDQwY3VlazNMMTUrNHIyUDJaK1VRUzRJZ3I4Qy9nZ0RaTkFHWjcyY3Y3Qy9CdDRDejczMy8reFAxaUNKaEhqK0dQMEFmQWQ4R3ZoYStXUGpZQVlkODhHbjBudlUvNVdjaXNoajVqd2I5TUNmLzV3Tk9odjA5RDhRNDQvbStRV2RYOUJ4TCtoZlV3VFl5UkNhclo4QUFBQUFTVVZPUks1Q1lJST0ifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiTk9UX0ZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMTgtMDUtMTkifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDE4LTA1LTE5In0seyJhYWd1aWQiOiJjM2Y0NzgwMi1kZTczLTRkZmMtYmEyMi02NzFmZTMzMDRmOTAiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6ImMzZjQ3ODAyLWRlNzMtNGRmYy1iYTIyLTY3MWZlMzMwNGY5MCIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJlVG9rZW4gRnVzaW9uIFMyIE5GQyBQSVYifSwiZGVzY3JpcHRpb24iOiJlVG9rZW4gRnVzaW9uIE5GQyBQSVYgRW50ZXJwcmlzZSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjo1LCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH0seyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sImlzS2V5UmVzdHJpY3RlZCI6dHJ1ZSwiaXNGcmVzaFVzZXJWZXJpZmljYXRpb25SZXF1aXJlZCI6dHJ1ZSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDNlRDQ0FkR2dBd0lCQWdJSkFKYlR5cnUxWC9JUE1BMEdDU3FHU0liM0RRRUJDd1VBTUNNeElUQWZCZ05WQkFNTUdFZGxiV0ZzZEc4Z1RYVnNkR2xCY0hBZ1JrbEVUeUJEUVRBZUZ3MHhPREEyTVRJeE5EUTFOVEJhRncweU9EQTJNRGt4TkRRMU5UQmFNQ014SVRBZkJnTlZCQU1NR0VkbGJXRnNkRzhnVFhWc2RHbEJjSEFnUmtsRVR5QkRRVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNVmpLSFdwYkQ3VFNsTXhvY2pUbDZuSWY3eDMyUG1zUTl6R3VMR0dxQTBVUVpvSXEzWEx6TDZMWVV2SjVBNWcwdXlGR2xsSEVmR0FLckVhQ1E4RlZ2UFMvVWgwRnlmeldoUkF6aVRTaWpqTUlJVmpqalV2OW05dkZtY1hTY2dIaWc3T2R6ODg1OFYwa3JOSDk5cUdtM3dqZ2FPZXJUV210K2pYQ1VmbjAxSWtUUHd4RzJIbGdFZDQ1ak5MU1Y3Vm9vbCtLZThFMmtpNGxFa1RlSHpib3VsUjVHVWJwM25NaTdFNDdWTVFhM2JOd256V0Jic2FCU1NRaExrM201SGFLaGh4YTZ3SkRLNDdOaU1Da0NrZElIdVdTUUxWQWZtODVVQU9OdEVPUHdpME91SzNxYmU4eUtPRkdmMEtoQjVNTWVBeW03TVYvTTRXMGE0OW9nUEQ5cE1DQXdFQUFhTWdNQjR3REFZRFZSMFRCQVV3QXdFQi96QU9CZ05WSFE4QkFmOEVCQU1DQW9Rd0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFKV3o1eExNazVXTlliQWI2eU94RUNCb1oyV2VCL3FsNFZKM08vMy90TnN4T1luekxlV281NDB6UWg5ckFtYXh6N2V1bUJsc2tNcTR5R1BTTlhCOXljV0dIZ2tjQ2VTek4yd3Y4Q0l6REJzMm9CWmpUTms2NUxCWkRzc1RPQnRNVy8rdVRGSFFmYnVPM0lTTGhJMERYZlJFaTlORE0zamZrMTF4SGNzZmgyUk1WK1FkTmZ3VmFaWnJDcStvdUcrRXZrdjdLcXErb3l1MFZGTS90ejY4VEdsNnlsaFBGUjFxaDl3dHRwVmpBT09DRVFDTHFQMmRQMjhsd1lCeUNxSFFxVkh3YnVqdi9MWmpabktXM0xZbmRaaXhQUFNSQ0pzc0REd0p2aC9mNm5UeGc5WkUrL0pjWXJlNUNhSThuelZIYVNPQ2pOSjdGelVMRzY0SmlXT3ZRNTA9IiwiTUlJRGRUQ0NBbDJnQXdJQkFnSUpBSUNVVHZrZ3RqNUNNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1GRXhDekFKQmdOVkJBWVRBa1pTTVF3d0NnWURWUVFLREFORVNWTXhDekFKQmdOVkJBc01Ba05UTVNjd0pRWURWUVFEREI1SFpXMWhiSFJ2SUUxMWJIUnBRWEJ3SUVaSlJFOGdVM1ZpWTJFZ1EwRXdIaGNOTWpBd056QTNNVFF6TnpFNFdoY05NekF3TnpBMU1UUXpOekU0V2pCUk1Rc3dDUVlEVlFRR0V3SkdVakVNTUFvR0ExVUVDZ3dEUkVsVE1Rc3dDUVlEVlFRTERBSkRVekVuTUNVR0ExVUVBd3dlUjJWdFlXeDBieUJOZFd4MGFVRndjQ0JHU1VSUElGTjFZbU5oSUVOQk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBdkFLT2VxQzUvcDBEMWlzQ1lLUUpsVlVPckI2STdETG9jdW5FL1JtOGR1R1RieXhRaHQzQ2JGVlR2M04yTHAyZmJqeGxJKzNzT1NHazMzRlRZa1RxeGNkSklySjdTc2tCY1VTTnJmS09hUVQvNktRY1A0Q203Vis2NTVUcStUV3h5eFdRaER5Z3QxNXFvUDdNdUs2YlQ5U3dwQ2pwZktoYU1TbXlRYU1vVWNSQWJMcWR6QkNhYzBoekIrWmUrZ3FKbG5XVjlVYVNJMnJGc1Z1SDRaRTBjUk8rTU9wYUxnTS9zMjQ4bkdHSHAyMmV3U1FmYm5QYUJiYjhpcXlBUCtjdTUyR0xzVXBLUkplYkUrUjYrUE1ROUpDZFdlUVpSM0RrZlNpZGt2M21jYjRqcTFpSXRhK01xS2hSbndyZlhoOTExS1dMbllBbDlFTkNoTFgwYzZTajFRSURBUUFCbzFBd1RqQWRCZ05WSFE0RUZnUVVXTHZoUkJVUG44dUxJZjY4K2d2L05aSXdHU0l3SHdZRFZSMGpCQmd3Rm9BVVdMdmhSQlVQbjh1TElmNjgrZ3YvTlpJd0dTSXdEQVlEVlIwVEJBVXdBd0VCL3pBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQUZMckRoYWVnZUtIeFlqSDNFUDN2VUJLaG56TTIwNkFTeGdlWUNPMkVjOXBPbFlKYWVxRkUrc1VhbVVWL3B3akRscU5hU2dGZ3k3VHdlWWt2T21NbjRxU2NzSHF2SjN6R09BaWFmd2FoMXZVSGZDbFhSOCtheE8yaUdPVUYwSktyWjlZWWpiQWE1LzRIQ2x2N2pGUE9kTVdUT1F5bmdvaUhBczNqa3VZanBDTEZsQjRWT2kzZDF3akExcG5UZEJLa0FiN3Q4blR2dysvWGJGdmNRYTczVkg3c2p2b0JxRDNmZE1mUmN1VnE0cVVadFpUNmNHYWdUSEQ2MVR0cWg5b01DWlhjRGJSMVBHWm5OYnF5Y3NXUERJSzBucG1LMy8zbGZWOGMrWnNyeTZlMTcwbWZKTVpwN084bTZDU3o2L1ZMSyt5REpkNzg0MXdwbWVLVGY2SW5aQT09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQVF3QUFBQWdDQVlBQUFEbmxVWnFBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRW5RQUFCSjBBZDVtSDNnQUFBQVpkRVZZZEZOdlpuUjNZWEpsQUhCaGFXNTBMbTVsZENBMExqQXVNakh4SUdtVkFBQUsxRWxFUVZSNFh1MWREWEFjWlJtK05PQWZLb2c2V08wUWNyZVgzTzcxUjQxb0hkU3FxREFPZzMrY1lFWEJvbFhSVEVuMjIwdGFLVGM2NG1nQnF6QmlFVVZwQmRxaXd3aHFTZElTMnVwWVNndlJ0cFRTY2tsald6SGFnanBTUmRyNHZMdHZqcnZrMjd2ZHZkMUxqbjdQekROM3QvZCs3L3QrZjgvKzc4YUswTkRhYXIycU9kWFpvcVd5SDlSMGEwRmN0NjdXZEhHVFpvalZDY1BxU2VqVzFvUXVIc095L2VCVHNEbU0vNTRaVDlqK0xXR0lnN0RmQi9zQmNEUHNmNFhmUDhYM2IydUcxWkhRelU4bVV1S2R5V1RIbTVxYWNpL2pIQUtCeWlmMGJCcitMd2FYSVBZUGtNZHFmTDhYZFdwbHMxQUEzMS9Rak93OThMOFM5YjhCWElSMituRGM2RG96bHNrMHNsbmtRTXhrUEdYTzlFSnRWbllHRjRzVXlWbmQ4VVRhZXA4YncrNkxha0JqNWl6ZGJOSlMxcnhFV255V3hnMzZFbVBkV29QUERlamY3ZUFUR01zSGFEelR1QzZoYmowTi9wWG1Bc3J1Z3MwV0xQOE51QkpqWkptV0VsY2wwOW1QSjFKbVcwdEw1K3VpSEJ1R2tYc2xqWDg3bmk0RXpWbms5QXZrc1FuNTdFU2RockI4Qk11UGpPV1AvLzRPSHNSL2U3RDhZZFRsZnRSaEZmZ2RMRzlIdTF3QWZ6cjU1akFPa2lRS2h2VmJHQjZDMC8vaSsyaU5lUng4RmdudlJmeGZhaW56U2s3TkUwaUlVUGJmNDN3V21OVE5kN0JwS0VBN0xaZkZBWTl6cDN5WlRTTURpUVZpL1UrU2c1UVlBSWZPbUcyZXdzVWpBL3JoVzdMNEJlcm1qOWgwVW9CMk9CK1RaVFc0Qi9rOE95Ry95Q2lPb1cxSVlINkg4WFB6OUxiY0t6aWxRR2hwTVp2aFp5SEd3RzNnNDJCazg1WjhvOTBHOFgwTmlTczFJdjJRR2s4S2RXc3p0NHNuSVA4UnFSOW1EUVhESWRaU2JCb1owSWwzUzJPWFpYWXBGNDhNVTE0d25LMWJlVzQxcEwzRkVRQ0psUFZXdERHMmZ1eVZyTlIzdEJUZFNqQjhZcklGb3lWdG5vMk9DekJneEROQkI2cFhLTUh3eGlEOWdLM0tjNlBja3ZCR0pSaStNY21DMFlENGZkSzRYb2g5Vy9ZVENaUmdlS052d2Noa0d0RzJlMlcrYWtzbEdMNHhtWUpCYXhscFRJK2tOUlFkbUdSM29VTUpoamY2RlF3NmNDcnpVM3RDTUxEV3VRc2QzUitBdzNLbkJRNUt5bmpoamR4T25uRGlDRVp1R2pyc1lXbE1KdHBpV1VLM0JtVC9GZkV1ZGhnNlVQZTZGZ3owYlI2ZmE2TW1uWTNrbER3aGFZakxVVTZlczI3dDBnenptN1ZnVXU5NkQ2ZmtIeENhNjJVVkdDTXE4ZzAyalJRbmltQm9SdllpYVR3bTJudGZXOXZDazdXMGRZSHMvd0oxNjNrNmVNWnVRMFc5Q3diRzlLMXNPcVdBdklVMFg1dGlEWnROYlNqQmNHRUVndEhXZHN2SjhFMm5BdVV4aWJwNWhXTTkyb0RmMnliOFgwS3gzckVORjBvd29nSG0waEpwdmphVllQakNpU0FZaWJUMWVXa3NKaWJDay9QbTVVNWljOHJ4UXBsZE1SUHA3SGxzSGhxVVlFUURKUmdoNHNVdUdIU1JEK3BJVitUSjR4SDFMRzlkakNIVGlNbFI0VmlHMkU3SFJiaEFLRkNDRVEyVVlJU0lGN3Rnb0oyejBqaE10SE9lamwyd2VRRlkvbEdaZlNuRmZEWVBCVW93b2tIQ01CZEw4N1dwQk1NWEtncUdJUzV2VHB0bmgwWFUrMDVabkFKREZBekQ2RGdkL3A2V3htSEdEZkZGTmgrSDBRYjB3YU95TW1PRStPVU5JL2NTTGxBMTZsMHcwRjY3NDdxNHBScEdjZHFhN2t1UjVVdEVINDVnRG13S2kvRFpqOC83SUVTMzRyT3plYWFZeldsVWgzb1JqSm96Uk1Hb09BRU5hMGkyZFRHR2VFcDhURkptUER2WXZHclV1MkNFUWJxaGtzT0ZCc3lsaTJXeGFzVGo2TmQxMnBzWHY1N1RDUVlsR0M0TVNUQmFXNjAzb28xZGI2cXpxVnRmWW5NNTZBcEJ3OW94b1Z3Uk1ZbEdOSzM5MVZ5aUtpakJpRVl3bWxQZExiSll0U1RhN3FIaUErdStvUVREaFNFSkJ0cHZoZFQvR0hXeHY5eld4UmkwdFBpRXRId0p4YlZzWGhXVVlFUWpHSFJ3R3VPaDBnVjVrVE9lTWkvaGhQeERDWVlMUXhDTXMxcXRWZ3p1OHJldnB5eVBqd0h3c3BWaC9TdVZXaktkQ3dTR0VveW9CQU81cDgzM29wK2VrOFdzRmRGK3dhOFNWb0xod2hBRUEzN1dUUEJiUkhUY0FleEd2SlROSGZRTU5jZjZCcytQOWVibnhmcWVQSldYMmtDWnpIZ2ZFeGpDR1FJbEdORUpCc0YrRUpFdWRzdmkxb2JpVDV5S2Y5U05ZT2pXWmpUeWZhSFJ1ZDlBSG90WXBXQTROeHFKWTFMZlROVDVLMndlaTYwZk1pQVVENEtqQmZibWo4YjY4c3RqMnc3YUQycWhmVS8weHk2WnJ6SFMycXVscFRObCt3eUl1aGNNakJVNjYxUU5tMmN1UG9QRFJZVFJCanBiUjJNQU9WOUhaek9ROTgvdy9mWXdpUEh0ZmplMGJ2MkZrL0NQZWhHTU9yc09vL0x0NjdvMVhEZ1Z1aUUvQndMeGp4S3hLT1hHMk02ZHRpMzZ3OE9SZG5HUDdUY2drRnVkQzhiVXZBNmpsa2lrTzgrVHRnMklNWFNZemZ4RENZWUxxeEFNTDdldm83N3R0bkYvLzBuWWt0Z2hFWWx4SExxYXpKMnRqRXFiczlpeVNXWG4ydjREUUFsRy9hT3NZQmpXQVRiekR5VVlMZ3dzR0xscEtMdFY2cE5KSFZaNFlITGYvbmZKQldJQ2gySGRRRVhpNmV3bE1yOGxkSjVIWXR2N2hSS00ra2M1d1VENzdHVXovMUNDNGNLQWd1SHA5R2RLWE1YbUVJeDh1MFFjWFBqWWErMHltVXdqMnV0eHFlOGlvbzRYMnZZK29RU2ovbEZobCtTUGJPWWZTakJjR0VBdzZIb0s3QTZVbmNpbzU4R21wc3RlZUIxRDc5Qlg1ZUlnNGYzRHAzT3BHT0xNbC9rZnh4Mnh6RnJmajhWWGdsSC9xTEJMc29YTi9FTUpoZ3NEQ0VZaVZmNzJkV2JwSmR3OSs4NlJpc040OWc3dWgzVmhGNFBGNlFtSi8xTHExZ0l1NGhtVkJBTVQ5dTd4NzB3SmcvVFlmVTZoTEpSZ1ZFYUZYWklIMk13L2xHQzQwS2Rneko1dG5nS2ZCNlMrbVBqLzBJd1pIUy9uSWc1R1J4c2hCZ05Ta1NqbFlpNVJBUHJ1VWxtY1ltSnkvWG5HM0hFeEs2RGlGa1pFeEJqWXlDbVVSU1hCUUR1UG9BNWJvMmJTeUw2ZFUvSUUzaXFVbmdZTm0yZ0QxN04wK0c4VnArUWZTakJjNkZNdzRycGxTZjBVRVRGTk5pOUZ6L0RNV0cvK2lFUWtIUGJtTjhTMmJadDQrYmh6ajBuNUozaUJkRnMxbC9BRTFMMnVCYU5XVE9yaUE1eVNKeUR2NzhyODFKeWVyeTZXUUFtR0MzMElSdE9jM0dsb3A4TlNQMlBVeFZObDEvVHI4cTJ4dnZ4NjhQa2lzZmduZmw4ZjZ4OTBmUVVsNG41R0dxK1l1amh5NXF6dTEzQ1JpbENDNFkxMUtSajBXa2d0Ri93bVJTVVlMdlFoR0Y0bUdBYUxZUFB5MkRnMFBkWXo5SDdzcHN5TjlReFVmQzBpWGZ5RlB0b25pMWxNR3F4Y3BDS1VZSGhqM1FrR3hDS3BXKy9tZElKQkNZWUxQUW9HdllRYTl1WGY3MWxwNjZKS2xIdDgvUXNVUiswWFRYdUFFZ3h2ckEvQm9MZnIyUWZIci9HemxlbUtLU01ZdW5rSFRTekVsTDQrc0ZhQ2dmbytCKzdXak96bjJMUXNuTmNHaUQxVVR1YlBvZG5GNXBHQXpwZ2d2dXRXQnVyNkg3dE91cmlVaTVRRlhTV0tNdC9IQk41RWF5WFVyK3c5TWNFcGp2R0s0dmZJYndWZHc4SXBsQVdOQlpTNUR2V2hONVhuNGVkb3FkOG9pRnl4MndrK2l1LzBJdWlsOUt3VFRza1Q0bWx4RHRyelJtNVhqUFVvMnBYZTZHNDlnanh2dytmQ2hOR2hjZmh3UUM5amFUTEVHOXhvR0ZlV3ZpWStVdVNtMlErY29YZHk2TllpTk93eVZQckhHQmgzSm96dVVDc2VUNW1YUWZGL2poZy94T2ZYTmQyOGdqbzBhSDNwTEFsTk5HZHRMNVlpNTV2UWdiZWo0KzZnLzlnc01xQU9IM0hhU2Z3RWJYY0R2bWVUaHZVcFRlOTZ5NFF6TTc2UW05WTBaOUZwZFBjbTZ2TnBzQXQ5c3R4cE8rdlg0RWJFMjBvVENjc0dTb25sK0IvZjZXYS9WY1Y1MGFTUHg3dE9EZUVCeGcxMHh5K2Rrb1hnZkFneEZpRGUxOUFPMzBNL3JFUU85eUxtQTRpL0JiKzNsK2Jua1BJSE40UHJVTCsxK0Z3QjIydmhveDFpZjFHODFYcGJ2QTI1WmpLK3IybHhSMjRhMWQ4UlB6RWZ1d29XY3NFV2lKTXpZaitJM3crVnRLc2hIZ0gvQVBaU25xalR6Zmk4eGg2N3VuVXVQZHJBMjhOeFlySC9BejN0STRqNStUT0xBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMSIsIkZJRE9fMl8xX1BSRSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJtaW5QaW5MZW5ndGgiXSwiYWFndWlkIjoiYzNmNDc4MDJkZTczNGRmY2JhMjI2NzFmZTMzMDRmOTAiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjp0cnVlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsIm5vTWNHYVBlcm1pc3Npb25zV2l0aENsaWVudFBpbiI6ZmFsc2UsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjp0cnVlLCJhbHdheXNVdiI6ZmFsc2V9LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjk2LCJ0cmFuc3BvcnRzIjpbIm5mYyIsInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XSwiZm9yY2VQSU5DaGFuZ2UiOmZhbHNlLCJtaW5QSU5MZW5ndGgiOjQsImZpcm13YXJlVmVyc2lvbiI6NSwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjQsInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjoxMDB9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiTk9UX0ZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMDYtMTIifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI0LTA2LTEyIn0seyJhYWd1aWQiOiIwZDliMmU1Ni01NjZiLWMzOTMtMjk0MC1mODIxYjdmMTVkNmQiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjBkOWIyZTU2LTU2NmItYzM5My0yOTQwLWY4MjFiN2YxNWQ2ZCIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJFeGNlbHNlY3UgZVNlY3UgRklETzIgUHJvIFNlY3VyaXR5IEtleSJ9LCJkZXNjcmlwdGlvbiI6IkV4Y2Vsc2VjdSBlU2VjdSBGSURPMiBQcm8gU2VjdXJpdHkgS2V5IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjI1NiwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9LHsibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyIsImVkMjU1MTlfZWRkc2Ffc2hhNTEyX3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsIm5mYyIsImJsdWV0b290aCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQ1NEQ0NBZTJnQXdJQkFnSUpBTTlSell1NEVJSWxNQW9HQ0NxR1NNNDlCQU1DTUg4eEN6QUpCZ05WQkFZVEFrTk9NU3d3S2dZRFZRUUtEQ05GZUdObGJITmxZM1VnUkdGMFlTQlVaV05vYm05c2IyZDVJRU52TGl3Z1RIUmtMakVlTUJ3R0ExVUVDd3dWUlhoalpXeHpaV04xSUVacFpHOGdVMlZ5ZG1WeU1TSXdJQVlEVlFRRERCbEZlR05sYkhObFkzVWdSbWxrYnlCU2IyOTBJRU5CSURBeU1DQVhEVEU1TVRBeU16QTVOVEEwTTFvWUR6SXdOVGt4TURFek1EazFNRFF6V2pCL01Rc3dDUVlEVlFRR0V3SkRUakVzTUNvR0ExVUVDZ3dqUlhoalpXeHpaV04xSUVSaGRHRWdWR1ZqYUc1dmJHOW5lU0JEYnk0c0lFeDBaQzR4SGpBY0JnTlZCQXNNRlVWNFkyVnNjMlZqZFNCR2FXUnZJRk5sY25abGNqRWlNQ0FHQTFVRUF3d1pSWGhqWld4elpXTjFJRVpwWkc4Z1VtOXZkQ0JEUVNBd01qQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJIbHEyalVRTWFsSGovQlJlUWVmR2l6NEV2WUp5RkxXUHo0UmZoSkdLcXFsKzhuOTZoVDFtNWdYb1R2b0xyalNVN1gwY0Jlb1RzZ2h5aDIyK3lyczQrU2pVREJPTUIwR0ExVWREZ1FXQkJRKzhTR1cyQlhicWIyZGNBT2lXSk9VK0dDc1BqQWZCZ05WSFNNRUdEQVdnQlErOFNHVzJCWGJxYjJkY0FPaVdKT1UrR0NzUGpBTUJnTlZIUk1FQlRBREFRSC9NQW9HQ0NxR1NNNDlCQU1DQTBrQU1FWUNJUURxOHhJVzBaSzV5ejNFQXptdXg4OExDVFlPMTU3ZlRmeU9pT3pDMkFEeWF3SWhBTzFQV1lsZUZnSC8zbXVEOGNCQU1yMTFmRUtkRi9BYUMxNmZ0eGFlek5YSCJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFJd0FBQUFZQ0FZQUFBQW9OeFZyQUFBQUNYQklXWE1BQUI3Q0FBQWV3Z0Z1MEhVK0FBQUZJR2xVV0hSWVRVdzZZMjl0TG1Ga2IySmxMbmh0Y0FBQUFBQUFQRDk0Y0dGamEyVjBJR0psWjJsdVBTTHZ1NzhpSUdsa1BTSlhOVTB3VFhCRFpXaHBTSHB5WlZONlRsUmplbXRqT1dRaVB6NGdQSGc2ZUcxd2JXVjBZU0I0Yld4dWN6cDRQU0poWkc5aVpUcHVjenB0WlhSaEx5SWdlRHA0YlhCMGF6MGlRV1J2WW1VZ1dFMVFJRU52Y21VZ05TNDJMV014TkRJZ056a3VNVFl3T1RJMExDQXlNREUzTHpBM0x6RXpMVEF4T2pBMk9qTTVJQ0FnSUNBZ0lDQWlQaUE4Y21SbU9sSkVSaUI0Yld4dWN6cHlaR1k5SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpFNU9Ua3ZNREl2TWpJdGNtUm1MWE41Ym5SaGVDMXVjeU1pUGlBOGNtUm1Pa1JsYzJOeWFYQjBhVzl1SUhKa1pqcGhZbTkxZEQwaUlpQjRiV3h1Y3pwNGJYQTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzhpSUhodGJHNXpPbVJqUFNKb2RIUndPaTh2Y0hWeWJDNXZjbWN2WkdNdlpXeGxiV1Z1ZEhNdk1TNHhMeUlnZUcxc2JuTTZjR2h2ZEc5emFHOXdQU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNCb2IzUnZjMmh2Y0M4eExqQXZJaUI0Yld4dWN6cDRiWEJOVFQwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOTRZWEF2TVM0d0wyMXRMeUlnZUcxc2JuTTZjM1JGZG5ROUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXpWSGx3WlM5U1pYTnZkWEpqWlVWMlpXNTBJeUlnZUcxd09rTnlaV0YwYjNKVWIyOXNQU0pCWkc5aVpTQlFhRzkwYjNOb2IzQWdRME1nS0ZkcGJtUnZkM01wSWlCNGJYQTZRM0psWVhSbFJHRjBaVDBpTWpBeE9DMHdOUzB5TTFReE5EbzBNRG8xTlNzd09Eb3dNQ0lnZUcxd09rMXZaR2xtZVVSaGRHVTlJakl3TVRrdE1EVXRNRFZVTURrNk16TTZORGNyTURnNk1EQWlJSGh0Y0RwTlpYUmhaR0YwWVVSaGRHVTlJakl3TVRrdE1EVXRNRFZVTURrNk16TTZORGNyTURnNk1EQWlJR1JqT21admNtMWhkRDBpYVcxaFoyVXZjRzVuSWlCd2FHOTBiM05vYjNBNlEyOXNiM0pOYjJSbFBTSXpJaUJ3YUc5MGIzTm9iM0E2U1VORFVISnZabWxzWlQwaWMxSkhRaUJKUlVNMk1UazJOaTB5TGpFaUlIaHRjRTFOT2tsdWMzUmhibU5sU1VROUluaHRjQzVwYVdRNk1qRTROV1l5WW1ZdE9EVm1PUzFqWmpRM0xXRmlPRGN0T1RGak0ySXpaakJpTnpobElpQjRiWEJOVFRwRWIyTjFiV1Z1ZEVsRVBTSmhaRzlpWlRwa2IyTnBaRHB3YUc5MGIzTm9iM0E2WldNeFpUZzNNakV0TnpNM1lTMHdOVFJsTFdFellUa3ROVEZrTVRNek5EWmxaVEk1SWlCNGJYQk5UVHBQY21sbmFXNWhiRVJ2WTNWdFpXNTBTVVE5SW5odGNDNWthV1E2TWpFNE5XWXlZbVl0T0RWbU9TMWpaalEzTFdGaU9EY3RPVEZqTTJJelpqQmlOemhsSWo0Z1BIaHRjRTFOT2tocGMzUnZjbmsrSUR4eVpHWTZVMlZ4UGlBOGNtUm1PbXhwSUhOMFJYWjBPbUZqZEdsdmJqMGlZM0psWVhSbFpDSWdjM1JGZG5RNmFXNXpkR0Z1WTJWSlJEMGllRzF3TG1scFpEb3lNVGcxWmpKaVppMDROV1k1TFdObU5EY3RZV0k0TnkwNU1XTXpZak5tTUdJM09HVWlJSE4wUlhaME9uZG9aVzQ5SWpJd01UZ3RNRFV0TWpOVU1UUTZOREE2TlRVck1EZzZNREFpSUhOMFJYWjBPbk52Wm5SM1lYSmxRV2RsYm5ROUlrRmtiMkpsSUZCb2IzUnZjMmh2Y0NCRFF5QW9WMmx1Wkc5M2N5a2lMejRnUEM5eVpHWTZVMlZ4UGlBOEwzaHRjRTFOT2tocGMzUnZjbmsrSUR3dmNtUm1Pa1JsYzJOeWFYQjBhVzl1UGlBOEwzSmtaanBTUkVZK0lEd3ZlRHA0YlhCdFpYUmhQaUE4UDNod1lXTnJaWFFnWlc1a1BTSnlJajgrLzBWeFJRQUFHZlZKUkVGVWFBWFZ3WGZjbjNWOTcvSFg1L3Y5WHRkdjNEczdKSkFJQVVMWUJabUNpbURWRGxmdHcyM0hxWXVxUFYwV3RkYldSNjNuVkcycm5yYU90c2hEclJVZlBSM1dXUzNLVmhBWllRb0VRa0xXbmR6ek42N3IrbjdlNTA0aUtOV084NTgrbjJudWlzUy9KM0c4WVplWjJaVEVJbUQ4NStST08wWlNVZmlISlA2Rkh5SUVXQmpBd3pOdzZvYkkzQ3lrQ0dhR0pOeWhMTVd3Z25yb3BOSklDQk5VY29vaTBPOGIreGZGNlBMQXFJTWNHb2QyVyt6WUQ5Rmc0OXJBZ2IxaTBUSlRIV0dDdW82VWhlRUpkaTltVnJTTjhjS1lxNDJkKzhTS0NTTzJnQXdkSUJRUVRQeDdabERWZGtrV2J6VFpjS1RJM2RodnZyR2x1ZU05ZDhVVFgwUnIram1veVlDUU9NU3NCTHBBQWpMUVJ4cGd4bytSQW1scjRvY0laaGVHa0Y1bEJwTDRyd2hJQ1hMRGZIK2dEeGVGa0hnQ0NlU3dmNzhoRXovS2pNUEVENUlnUlh1UnVmMjBwWUJaUTcyZjdTdEdIM1ltVHZ4Rk1oY2dBd2xpQVJMZ0dXd0dOQWZXUXF3bWhzaEJjbjRzR09BK2w4cUN4eG1RQlUzRFNaSWo4VjhUWUZDMGpZVUZiZTMxZFAyeTVaQXpUeEFTNU1aQWdQR2p6UUJCMVlEeEE5WlowS2ttY0VISW1jOTNMdmkzSGZISWtxWmVqVElnTUVBTzdsOG54azhoM1lMbjNZUTBqdXNNMUx5T0VNNUU0c2VDZ096L2xQWWNFSTl4UVR0eHhIZzNudWtZSUw1ckVkZ09DQ2o0ZmdZU3NSNXFSYWVqcTBKaXVxcDRnaFFOTHcxVjRzZUZBSzlGTXI1SFFMVGpRZ3liTWNpTmc3SG4xcFdYZk9PaDZzU0w4UGtqTVFkTFlHR2F3ZDdmSlhZdlIwV2ZFTUFDMUJXRTRsWjZDLzlNbWY2T2N1VHBTSUQ0a1dVRzBtN0V2ZW0yYmM1amhvMVlPeG1QT25NVHAyYUo3SUNCaVk4Si9UN1FBa1lBY1pBQVE4RW9jME8yeUxiUlVVTUNNNUNNZGh2MnpUbGtJL0pqUkdBUlFoSElqWGlNR2NkS0duZU0waktJT3g2cFYrL0xadWNqN3hBTVNQdm82eFY0OVFYU09Nek53OGdFZEZvd013TWpZNURTWHBybXJSVDZCNHhWaUI5ZEVrdHVKTnFPdEhjKzhKaitFRHBkMnhUYWpHZ0FHZU1nZC85bllFOEk0SUlRUUN3SmdJTUxYQkFObWd5U2tSMks0Tno5SUR3Nkx6WWZMUXJqeDRZWk5EWDBlazUzTENCeFNBcDJqcGxoZ2hZMXN6WngwMVhOQlhNRXRoQXFRQlc5NWgwMDZRdkVFYWhKdE11WFVNUVgwRlJYMDJwOWhDTE5vd0NlcnNmOFByQlYvS2ZFWWNaL256ak0rQUh1RUFML0lUbGdZTVpoQnE2YkVRdnBTVWRHSGxQVnhCVmpkbzZ5NFJJZ0VOc0VPNkpCbHBFQ1ZMVVRnaEZMUVRZY0l5TUtRWk1oRzFRTkZLWDQ1ajFpWXRKb0pVT1YrQ0VNR0FFQ01BK0kvdzhDWEdDQU8xamt2ODFZSXNnT0VvZUl3eXhBWFltNS9jNnFsWVpuYURKSDVjekpoSUJNbU9BaDMvamxnWFZXUXo2UllEQVlYc3RDL1JkMGxrTTVBdkkzVUhUZlJ3QnFmeDRqbzF1QkwySVI2Z0RaRzBJQUJPNFFJMkRnRGlZT3NRUnlrSU1aUDBqZ0dVTGljUllBZ1F2TU9FUUNNeWhhNEJua1BJRUVGcUJvUWE3QUhVSUVCRG5maWNqcHBFbHhpSURJbXM2WW5aa2JhREpZTUR6NzNjZ2ZtV2tDUllMSkNQMCtXQUFLSG1lQVpFZ1FBZ1Rqa05FMnBBZ1Nod2pJQW96amdaOUJPayt3enNCYzdBTytndmlreEtQOEp3UzRHREc0S0VYT0VxenF0UEFBM3pIakM0S3QvQmNFeTRKeDhXaWJNMkprS29vYWVBRDRDdUxiR0JRbHhCRWpaa0dmOVhWdG00aGdDSXpaditYRkR6MFlOcDZOTGF4RURtWG5zMHlaRXlvbzB4bkkvb2ljb2FraFJNQmVnM3dUVWtuMjFSZ25FOFFoclE0b2cyY0hiUWYyNHF3aTJIcVNCUnFCQURNZTV3NnBnTTRZREhxUUd6Q0RrQ0FWTU95QkhDd0FBZ0d4QURsNEJvc2NacUFNQ0dJTHdqaFVQYUZzd0E2QzdtRkptbmxVSE9RWldsMVdqNHl5UlVFZ2tCdGx5VDJ0cUFONzU0VzVzV1JDY0tyZ0RMRGpnT1VHQ29HZEdMY0MveXA0aEI5R0VPQ1lxWFo0Ylc3c1JkRjBGR2FHSUFNcFFzQ2VaWUZmTTdOM0NQN2FRSHdmQVRtclJQWkxyY2l2WUd5V1dWZUN0Wk1nbDVySzNwU2lQb2J6aDhDQTd5TWdpMUdaWGVwdXI0ekdwZzJyWWxuWEFqZVVoRHNQV2VUUExmTEgxVURhZm0rbUxveVJ0djNFWk5jbXF5eGFOQ0J1dlQ2ZXV3UHhNdFJ2NCtyUkc5eElNdWcwTU5RQkxOeFBhMlFMdVlGcUFNVG5BOC9ub0NJQXhpRWhndWNETFBZK1RqUDRFdU5qOStEV0o0UkFOWE02ZE4vQ3lMS3pXSndGYnlCRVFCQkxVSURGbVFkeFhVY3E3c1RDZ0dIL0tQcHp6NkF6ZWhJR05BMmtObmpld2ZiYlBzclk2dnRvVHo0ZmExNklCY2daV2lPUTYwZllmditIbUZoeEI5M1JuOFB6eTNEZGpyR2RKYW03TVhDUUJFWGtERFBHY2dVV3dYQUdmVjFmVzBCdWF5M3k4N2c5djkyMkV3MWJJVGN3Z1NBRlE4Smo0SDZaWFZGTEh3Qm0rUzRIQXJ4NDlUSjdSOWtLeHc4V3dRS1BrNkJzUVFHV3pkWVhvL0dqZFpPak1oODJEcE1nSmp0cDlVVDgzOTFrRitlR29rakNKYklNbHhCWXJuVmt1MnR2TXc5SG12SnJCUU9XT0ZBRVRsblZEaDlzV2JpZ2NjTk0xQm5Fa2lBa2tMRWhCSHQzR1d3Vm1kKzhkNXZ6eGUvRTlNeXo3Y3lMejRmcUVTaVYyVmxzK1B5ZVltMlBQay9GTXNnSERQb3pXSUNxZ203bkFUeS9nTms5cjZFb24wZDc5RWswRlljSUNBSEVFb0VQdjhxakQ3eVRWY2RkdzhSNFF6V0FMQkJnK1dGbUZyL0tiSE1GVStYekNBbXlnd1VvMHg3MlBmU1hQSERuMzdMbEtROWgxaWRFd0dGbTF5bzZ4N3lWc3Z0RzZoa3dvRFA2TmhabUxtZlp4aFlwWFl6WElBR0NhQ0M5aTE3OUZ6VFhRVHJoUXNwTjRJdmZBdVpaa3JwZGNaQ2dFMlZuZXpaY0ltSzBPbngxZHRiK0xqZTZlTlVLKzJEQ2pxOWRoQkMwNUFEU2lBWEtWalNhUmpRaXhHREhncjNUNEZuQXIwcDgyd1dkeUZ0YkkrRzNUVGJldUJBUWdCQU41UE1qTFQ1M3g0TzZldHNDKzg0L3dkWk9ZaTl0aU84eXk3Y2kzY2hCNHR4V3l6NFM0Y1FpUU9nNnZSNTdURnlWZ2p5WVhTUlkxUUFPZEdKOHFhUnJKUHRvVTNQUXVTbllGYVBSTm1XRGpERFlXZFYrdlJuWjRHd3oyMkJBTlpTVm5maXFvNDdsczVQT1ZmUExiTzJLVWR0TVgyQUdCUXc2RTljMGQrMWR4ZHJqTnRGT29EaENaLzk1N0hoZ0swZWZDNkVHNXg0R2k3OU9TaDhncEtjUi9kY291NmZRbjRmc2tDSlEvejNVYjJCcXpVNmFQb3dzTzViaDRBSmN1L0RtcTdRbkJ2U1paL3ZXdHpOMjdHbDBKemN5V0FUWjlWUnpiNmJkdm9iTjU0cWlCV3FnR29JaXRFZjNzT2ZBbXhpM1NMZDlLVlYvRjYzdVZ6ajZMSWpGT2xSZGdBVVFFQU1NcTN2SmRoVnIxa0p1TGNNbW40b3FvTDRaUElPUkdIQ0lHVk5FVGhKZ0J0bjl5OE1Ccng4ZHM3Y0ZoWGQyb2hnMmZtUE8rblNRM1F5MkQ5TmtVOWtwaTQyL29HeUZpOHBJa0F0dnhNU1luUitLK0FrTHpZdEcyM1pCdXd4dnl6MjE2MGFZUVpGQVVQVjcvcW1pc0Q5blZMZjErdlNuZTQ0c1FOWVZqZXp0cGZIVVJuNFRzTTRzdk0vRWlTSEJURi85aFVYNzA3S3RqNDYwMklYSU45elZiSjRhaSsvZmNuUzRzQnFJeGxXMFkzemR2Z1UrdW0zYWp6anRLUDRNYkZNdGtHbk9zNzgzaFBESkVPeFJTUmdjaVhnYnhrc0ZscUt0YUtmNHd2NVFWNTE2cko2MHlqbWgybTlZRUpUc2ZvOWUvOGg5QnphZXdSSHpVNFFDRkZxRThBYTh1b21pdUlXbUQ1NmhMTURpZzdSSEh1U1dhNy9Fc1A5UlRubjZzNGdHaS9XMXlONUlIT3lrTTdHTWhZVTNzN2o0VXNScWlsQWdQazZPdjA2NzNzdFI2MjhuaHh2STJraDMvQ2JtRjErTHVJM3hOZURoNlZUOVZ5R09SUGxtR3Y5VEpsYnR4SUQ1NFYvU2FqOFhmQ2R6ZXhleE50VFZXVVRmZ0JtWVFURG9EWGZRMHpZbVdwQTJub1A3Q2ZoZ0h5SGZqb21Ea2pqTXhQcEFPQTREejl3ZzhYN1YrcjJSVG56NVlxMEhkcy9sUHh3cDdUUEJtT083Z2tIbFhIdjN3LzZ4aVNuLytWTTJwYmRYcy9Za2oySTRFS0VLVzU1NlV2SGxtSmlvZW1vcmMwZ3JRUU9QSGhqNlcybnNiOHFDeDhVSU1SaTQ5dGRaZjFBVVhEQldwb21GU3I5bEZzNEpDQXZNN1pyMVMvdnpmSHpEZXNNTUVEUnV0ODczbXJjb3AvY0VXQjhEelhSUDkzL3FPaS9PUHpuOWFtdlVucnd3QzVnZTh0cGZCWHlOSjdvYjlEdVluV2pZYVo3RllyWk5NY05LMkpLQ2pWZG1kQm5BZ0JzZjBoSGIyTEx1ZGFRREkxUVZ5S0N6Nm1TT21mb2s3bitNL0V0NC9RaXRVZWlPZ3pjZzdXRFkrejF5UG9taVhFOWpmNGhwQjZiMXBIZzU0eXVmd1hBQVpoQU5YQytuYW00bDhCNjY0OUJLQjhnTE1OZDdKNVZ1bzRxUkVidU13Y0p2WTJFTWkxQ01Yb1NxRHRobHhBQWR6ZEkwZXlrNzMySTRuT091dTJIOTZ0Tlp0VHd4ckNBWXhBUUwrMi9Dck0vb2F1aFZUNlpWZEpodXJxZXRBM1FpT0tRVWplODZ4WXdwd1U3SHIyMG5lMHYyZEc0LzYrdnUvaXBnRzk5bGdGaGlITkk0dlVhNkhQZHY3aHZ3aWJGT09EVUJ1UkhqSXh5Ukhlb0dna0VNc0d0RzM4N0IzMWgyN0dvSkVPRFFiVU8zTXU3ZG5sblpFV1hCVkxzZE81WTVYaDVlb0NpS0NETnorVVBUKy96anJaU1F3SUE2dzlwSlp6RDBhd2Z6K2VlU2FTd21jcFhaTlRWcXA2OVpZYjhpQjgrT1I5NmRVdnhhTUVZbEdXQkxXSktCQTNKOTI0elRXT0tvWERTbks5dVlKQVFFZ3dQTjZOVzdlMnVnemRtUVFTd1I0TkR1Yk1iOXI4akZWcUkrQWZZWm90K0grbkQwYVN6NUJzcTMwQnZzZ3ZBTm1qM2dmaFJoK1RTaHVSSjVCWWlHQWhnaDZCNktCQWFzV0g0Nlg3L3ljMWpySyt4N0FEWSs4K1hFK0FjSXd3UmlTWVoyK1V0SVoxQTNNeFJoQW1remxuNmZiZHNhUkllaU9KV0RESkJEdzREMjJMY1k5bUIyRGtKNk1yUmdxbk16VFgyQWJCeVVrRmpTd3V4MENReWZqbTdQRGVOaDA2RFVGMXA5dlp6R3B1V0FRQVlaTU1BTTNDRUEzVFpRc0hXdTFzL1VNZi9WVWQxd1NiK0dRUTBHbUVHSVFBcGZmM1IvZnUzS0ZkemxBak5RZ0dZSUoyMkFacHY0ME9maHdqTUR6ejNkTHQyNXgrUm80K3JsdGl3UElYUzRwMTN5SjFQelJyc0ZxUVYxQXdaMFMyTTRCRWs3REpGbHJCaU54WXZQNTRWa1Zpek9pWkJzRWVtbmdMTUU0NEQ0bmhvb0RNN2lJQU9EeFdnVTBUaEpBdHdnd1pmakpYZHNEU2UyQ1BrSVZBTUJNQkRRRERra2RVN0V1dStpSHJ3YWVBbVRvemZnd0dJRnFJZjRCS1ZQMHg5QzVqcTh1WTVROEQzR0ljcFFsTkNkV01uZXZjdjQ5cmMreXJMT0lpdlhybUN5dUl6S0RSTmdQSzdKWGVCY3pNQWRzUHN4dTQyTlI0SDc4WlRoRk9vS01FRGc3R0IwZkNzUjJMdi9CSTVZdHhrTDhKMGJyNk8zUHhNTERrcGtEcHFrME9rZ1lyQ2pyV01qOSszUlRkTUxldlU0VEs4ZWc3SUZicEFOaEFoQldBTm1jTVJ5WTZTQS9vTFl2TXkzMXpsZTJXdTRoQ1hHWVdaUU5mNzMvWXBMeTVaMmxRRktqTkFDQmVoVjBDbUVBQWRpeVhuZGJucnAxdW5tajhwUnpsN2ZzbmJkd001NXYzcmRsdkRveVJzTUdqSFlBVFBUMEVxd2NzS3dFRkV3M0NDSFFJVFYwZXlpV3VBR0VVYktFSDdhQVFuTURBUU9HR0FzQ1lZQUE1UjlheWZZNlFsN3VtU1U3UnJtZUhCNy9hVGJCMVBkNTVCN0czRExZTHM1ckEwMkFVVFVnQXRTc1pIc0wyYlBnUnRvSEN4dkFGdERzSzBZTUhsY0MwOHJ5TDJFNmhxTDRxQVF1cmdtaVVYQnNQOHd2ZFlycVBiTXNuN2wxWno2SEZpMjVrSnkzc2hnSGtMZ0NRd1FJQ0FWc0RCN0xiM2VibGF0aFJCUFlYYmZDZzZ5Q0ZaQS81RTdHZTYrbmRGVFlNMkcweGxySDBOdjVnQlgvZU85UEh3M2RFWTVLQ2x3MExHQmNDb1lvSkZPUyt6Y21UKzlZNWUycjE1aGREdkcybkZqVUlFQkJwaGdVSXQyYVJ5NXlyaDl1NWp0aVJQVzhSeXY3SGZkaklCNFRERERHM3Y0emwzRGZXdW5qTkZXb2gyTUprTHRFSUVBOUlZd1ZqSys2YWo0ZitncW5MWkpOMlhGMXd6bWhSVlVETm5hVEFNbTZnWFJ6Qm10MHBBN1ZRMnJsaGMwYm1RWE1RblByT2tOT2M2Q2lJWUhXQkNxQk1rTVk0bUV4WUFsbzE5bDlUbXM3V2JUOWRBL1ZyVHQ5Qml0VzFYUXNReUo2NjVaUEhVSHpzOWlneEx4Qm95cmdRSTRIdlFCektad1FWbUE1RHk4NnlZcXdmSVdkT0lGTUhJQ3NkMERRVFZZaHpWWGdFMUJtQVZ6ekVhQUk0RWFZei9ZREtrNkZ6cFhjTUhQUGt6bktDQ3RwOW9mZVp5QXdDRnlpQWtDbWV5UjFMcWRYUFdZMlFObUo1REtoRHRZZ1BiWWtNWFovNHRGaUN1QUF6OUJNNFIrLzBZMm43T0xkY2RCS2prb3lRQmpNOUExUkJiVWl5eXVuN0M3amw0TFQxcGp6QzdBWUFobVBFRXdrS0JxSURzRUM3OEk5cWMxakVlRStCNTMwV21GWDE0Mm11NnFjLzZ3QXhsd0FRWUlxZ3hqSFZhODhxSnd4VW1yd21tUFBseS9lcW9kRHlTejVYVWpZbTNGaXJhV3orNFdRU0taRVZxZ2lzTUVUYU9Pakd5b2FIZkZjTkZHbEJrTExERUxnK3gvSGN3L1VnUTdLcnNpUWc0cVpIbTIwZTZXMlp4eFNMZHB2SjJkK3dyczlUbERMQTBHa1VVMWR6UVR1NkRpR0pMTlkzd1d0QTBNcFB1QlM4SE9CWUVFODR0L1F0SDZPS3VYUWY5UjhQWlRhWStzWXZiK0JZWXpNUEtrZlJUbFBtSThIeHpNUUFiMTRNc0V1NUpRM0lMN3k0aUQ4MGhqczdoVlRPOEI5MXRvdDJwU1RNaEFCalNRL1hNVTVWZkJkN000MkVJSWw3Rm01UnlqSlh6aXo2Q3V0dlBjTjJSNi9VVFRoOFg5SDZmVitSdXFHYUEvVHE1K2dsNEZxZlVOTHZ6NS9hUUNKQTVLSmxvVzdHUXpReEltWStqNjFvWWp1TmJOMkRjTEdKaUJlSndCSlRCMFFRclczYkRDL3FBc3dwdUd0U1hNT2NqRWZoa2RvQ1BBWFdQSExFdnZuZTlqY2o1aUFlZTdoS2hxZThieGE4TDdXdXZpS2ZmZG5SLys1ajM2MG5PZVRwaE1pZ3hBWUpWNGFveFdGb1RLbFVFR0JuSUkwWDdaakpjSFZBbWIyRC9qZnpiUnN1OG9XZCt6dXNrZ2kvWWcrNTJqSWQ2SkdXWVFnZXlCUFpYTzNkQU5Gd2ZSZFRFbStUdGFwUjhSeko2UjNlaDB3ZlkzZkdiZmViZGRjK3pMVmxGckk0T3FEV3FEd0FLZ0E4QmJ3ZjhuS1FWQzYxTlVNNTloMVNTME90QWZ2WmlpOVFKTXNMaHRHY2tnTm5OUS9qTEtkMEE4aDVBWHFQdC9EOTFQRUZPbUdYWUpjUmxpaVRhalpncjNhYkpkaC9ST3hHK2hQRVdJY3lpOEg1cDNJMStrYnFBLy9CM1dyb1U3YnpqQW8vZkQxQkd3N2JaUE02eU9wQ2pPb2FuK2xmN3NCMmxQUVFSNnUwOWdaT1JrSEREN0p0VVFxaUdQU1JhWURHWlBGb2Nad2t5cit4Vy9HUXdyakVJOHJoV01aWUtWd09kZGZNaGQ1OFRDM3JscU1weGZ1MmdhVVFTamN0MFdzRmNYMGl1YWFKZktSUmEwSXFObE4zNWc2UDZ6TG4wTzdDR0RvOEdlRVlNOW5SREc2TG5QenVjM2JaemlvZVpBWHFieHNLMVZoT1hEU3BqWkJhWENSOHowQm9jNWxyaXpQSnE5dlN6dDBpb1RPeTFqVUduMjBXbS91NzNCdHJmYTNEK1l0Wk96WURUWmEzcFZtQnMyOXJ1dGtzck1rQmhQUWIrNHZoMStUekJsQmxtNnk0eTNKMk9GMEJhTFJyMllTU1YzUGJqcUtWK2JtVnYzVThUZWtaZ0Q4ZG00MzAzT0VBT1kvUnVSNjJtMUN0QTgxWDRJVTlCVW15bGI3OGZLWmVRK0xIL3laUlREVzZtYi9lRFRpTGVUMnFNTUZvYk03eDZ5K2hUSWZqVFcvemd4bllzREZpNmlHWjZDNmQ5b3BZenh4elM2aW1ad0JHT2o5MU9IMi9EZ1pJZFcrZnNVNmUyME9yRG5vUk9wZFNXblBnM1diTnBIdHJleHNEQkNxelhIeUNRMERpSEIvUFJHeGlaWFlQVmVjdk1RTXI1ZkdoblYrb1Y1T3kxRURuRkEySEdsd2x1aUFjWmh4aUV1N1RYWmZVTEhoRUtYRTNoYTVheWlobWhHQTlSWi8rVEdiN2puNzhqOUVTeGVIQ3djRDJLWVJUQXJrb1hudVBqSkFIMkR0b0tsZ2lVeVdQUkxKenY2aDFnRUZxZlovOGgyL2MwSngzTnFVWkp5QTJaNmhkQVdJL3lyUkxkVDhFekhOc3VnMHpLaWFXZUtlZ25HTFFNcERPYTVjaVRZeWJVTGkyYmRNdjVHblhXaFlWZUR1bVoydHN4T0c0MUsyYUdXM1NEcEpSWTBJTmg1WUFnREJ3TDNySXI3RnFrNERVdGdCakcrbWV4M0luMFJNOGlDZmpOZ2NHREE3Q09RYTVDOWlGaThEMXRZajljZ1FXZmlFdXJwOStMVkg1SEN2Wmc1K0J6OVBpejBsN0dPWDREOEZocGJqc1FoUmlJVzc2WVovZ0lwM29YVVlNMzFwQkxtNTJGUVFYdHFQYTN3djVDL0ZET1ltWWJUbnYzYnhQWU9lZ3NmWWQyeE1Ld3lnMnFlbGoyYk9oK0w2eTlvdDBSYWZSRzVCdVZ2NEhvWXhQZEx1dzl3M25oYkhYY3dRSUlpUXBGZ1dBbDNzTUFROFlqZzlpYjdya1FZaVlVOUg3TjFMaEVFalhEUTlZdERmMzgwUHROcUJjOUFJKzBJMlg4cHBYQzVzR01kSVFseFNCU01HbENZTVdnMGJkYTh2b1UrN2Rud0RKMElldzdvWTJzYWY5cnFrZmh6dlZrbm04emd6R0RoVEFFUkVZTlJaZEVmYXV0WWwxZW54SFdHeUFmY0xkdGZ4ekY3VnRtMjgvcDlzU1NtWk9lNGN3NFlCemxHUHd0My81Y1F3cHN3dGcxckptSVJuaG1DZ2FBVEttWTBkZHZuOVR3b09Rdm1PVVJhVFF5WEkvOFk4RlZjRHpCMEdNNnZZemc0aGJYSFA1TW1QNU84V0JJVGg1aEJOUTkwZm9HeWZTR2V2d2kyQzI5RWQveEl5dllGREJlUEJrcENBbkdZWjdCNEZtWDdNOERsb09zdzdTYW1rcm4rTVhqOUZMcnBlZURIMFRpWWdXZG9qWGFvNi9jU2VEYkQzcTFrYjJpWHgrUDJYRktNaUo4bTJEaXhQQTAxNE54TXRsbU1KMGpiOXRuWlp4eG5ET2ZrQkJRQ3cyR2poY1ZLMDJXeW5nVmx5ZVl4VEhCY0N1RUNDNHpXV1ZuaTNtUzZyd2pjT1plNXZzcTZPc3IyU2VJeEJwaTRidUQ1eFFHN0xKbTkwTUZTTUNSd2lTTFNtNm4xand1VjNydXl4YzBza1VSck10RHBHaWRNc1pDQy9hcXl6d3E5TWtVcnpJMUdBb3hhMEU3YTQ1V3U3QS8xSjJQZGNEOENCS3BFdTlTT25NUEw5ODN6NXhOdFBTc1JHR1lvQWtqZ0VnbS9aOTlRSHk0amwzZUQ3UjlVam1BQ09CV0pROFRpUGx2KzJmdDEzQmJFNllRYUNEWHVodGthaXVMTm9OZVF3bjVHQ3FOWVBzbXlJOGFJUmFMdVE2NGJRaUVRaHhsZ0VleG9USy9qb0p5aDFZR1JTUmpNQzFFVEFrK2tRRXhiVUg0WGhCa0lzN2hLcHBZdncyd0VyMW5pbURXQUVTSU1lbUEyU296UFIvNThZb1FFdUFDRFlKY2dCM09XT0hBZFFmeDdhZlBxOE1GcVVaL0VhRUFLd1JaN2ZlWVhLeTBldWRLeUdwc2FWa3pHU050Z0JPVElwcHRHTTJBTEtYRUFtSGZSdUtCZ2lmRkVCbG42bHNQL2tPdUtZUGFVb2V1b0VHd1lwSHZxeHI5ZUs5emtNRFMrVHpTc01Eb0pBdXoyckRjT2gvbnZLc1ZuV05EeExRaVlwdDExaXpKZms3VFZ6REtQTVNBQUJpSHc0TjQ1dmVUaFBmNlRXOWJ5bExKZ3c2REN6TmlaVE5lWStIcVdIaExHOUVKTjNZaVU3TUJJYWE4UmdTQWxFb3RmcUo5MTgxMzk0MWZRN2IrU1FNWlZBWVprbUxXUnVoaHR5Z1FoMUJpTFZJc0RqRXhJZ1BORURRZ0RFcEFJQnJsdXlFMkRtVENXaUIrZ0pnQWRqQkhNRXBLSWNRajBhT29oWmc0WWp6R1d5SkFpVUNBSFVRTU5CMGtSY0VRYmJCYTRpUi9pL3dIM0Q1UE1wZDJ0NVFBQUFBQkpSVTVFcmtKZ2dnPT0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xX1BSRSIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsiY3JlZEJsb2IiLCJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwibGFyZ2VCbG9iS2V5IiwibWluUGluTGVuZ3RoIl0sImFhZ3VpZCI6IjBkOWIyZTU2NTY2YmMzOTMyOTQwZjgyMWI3ZjE1ZDZkIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibGFyZ2VCbG9icyI6dHJ1ZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOnRydWUsImFsd2F5c1V2IjpmYWxzZX0sIm1heE1zZ1NpemUiOjIwNDgsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6OCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjo5NiwidHJhbnNwb3J0cyI6WyJ1c2IiLCJuZmMiLCJibGUiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotOH1dLCJtYXhTZXJpYWxpemVkTGFyZ2VCbG9iQXJyYXkiOjIwNDgsImZvcmNlUElOQ2hhbmdlIjpmYWxzZSwibWluUElOTGVuZ3RoIjo0LCJmaXJtd2FyZVZlcnNpb24iOjI1NiwibWF4Q3JlZEJsb2JMZW5ndGgiOjMyLCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6NiwiY2VydGlmaWNhdGlvbnMiOnsiRklETyI6MX0sInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjo1MH19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDE5LTEyLTEwIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjI1NiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJFeGNlbHNlY3UgZVNlY3UgRklETzIgUHJvIFNlY3VyaXR5IEtleSIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMTkxMjEwMDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjEuMSIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4zIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDE5LTEyLTEwIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjI1Nn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMy0xMi0wOCJ9LHsiYWFndWlkIjoiMmJmZjg5ZjItMzIzYS00OGZjLWI3YzgtOWZmN2ZlODdjMDdlIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiIyYmZmODlmMi0zMjNhLTQ4ZmMtYjdjOC05ZmY3ZmU4N2MwN2UiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiRmVpdGlhbiBCaW9QYXNzIEZJRE8yIFBybyAoRW50ZXJwcmlzZSBQcm9maWxlKSJ9LCJkZXNjcmlwdGlvbiI6IkZlaXRpYW4gQmlvUGFzcyBGSURPMiBQcm8gKEVudGVycHJpc2UgUHJvZmlsZSkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9LHsibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUIyRENDQVg2Z0F3SUJBZ0lRQlRtazNad2lsRlhqc1p5d0hEbk1nREFLQmdncWhrak9QUVFEQWpCTE1Rc3dDUVlEVlFRR0V3SkRUakVkTUJzR0ExVUVDZ3dVUm1WcGRHbGhiaUJVWldOb2JtOXNiMmRwWlhNeEhUQWJCZ05WQkFNTUZFWmxhWFJwWVc0Z1JrbEVUeUJTYjI5MElFTkJNQ0FYRFRJeU1EWXdPREF3TURBd01Gb1lEekl3TlRJd05qQTNNak0xT1RVNVdqQkxNUXN3Q1FZRFZRUUdFd0pEVGpFZE1Cc0dBMVVFQ2d3VVJtVnBkR2xoYmlCVVpXTm9ibTlzYjJkcFpYTXhIVEFiQmdOVkJBTU1GRVpsYVhScFlXNGdSa2xFVHlCU2IyOTBJRU5CTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFbmZBS2Jqdk1YMUV5MWI2aytXUVFkTlZNdDlKZ0dXeUozUHZNNEJTSzVYcVRmbysrMG9Bai80dG53eUlMMEhGQlI5U3Qra3RqcVNYRGZqaVhBdXJzODZOQ01FQXdIUVlEVlIwT0JCWUVGTkdobUUyQmY4TzVhL1lIWjcxUUV2NlFSZkZVTUE4R0ExVWRFd0VCL3dRRk1BTUJBZjh3RGdZRFZSMFBBUUgvQkFRREFnRUdNQW9HQ0NxR1NNNDlCQU1DQTBnQU1FVUNJQnlSejRPQWxSWjlIejlLVjdnMlFOdEMwQzhKeEgveExKWThGWkVtdEozc0FpRUFzcmVUMCtlTmtOY1VqSTloNU9QQ29INk5tc09rZ3ZFQUJKWnJGMDdBRGtZPSIsIk1JSUIyRENDQVgrZ0F3SUJBZ0lSQU1zOFlYVkJvQk51WFVqcWZDb1g3eTR3Q2dZSUtvWkl6ajBFQXdJd1N6RUxNQWtHQTFVRUJoTUNWVk14SFRBYkJnTlZCQW9NRkVabGFYUnBZVzRnVkdWamFHNXZiRzluYVdWek1SMHdHd1lEVlFRRERCUkdaV2wwYVdGdUlFWkpSRThnUlVFZ1VtOXZkREFnRncweU16QXhNREV3TURBd01EQmFHQTh5TURVeU1USXpNVEl6TlRrMU9Wb3dTekVMTUFrR0ExVUVCaE1DVlZNeEhUQWJCZ05WQkFvTUZFWmxhWFJwWVc0Z1ZHVmphRzV2Ykc5bmFXVnpNUjB3R3dZRFZRUUREQlJHWldsMGFXRnVJRVpKUkU4Z1JVRWdVbTl2ZERCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQkQyTEhIQVFxWWJkUjFXWmx1ZXJ0TTMwcldob3JZYXZXbU1WYTRuZFg5UFp3dVJFcExRNG0xbkVscVFLTW5SRTgvNEMrUnF3aWF2K21wSTRreGQ1ZTV1alFqQkFNQjBHQTFVZERnUVdCQlMzWlpqeUdsaFo5OU4xdkxvVFBYVlVhNFpFWURBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUE0R0ExVWREd0VCL3dRRUF3SUJCakFLQmdncWhrak9QUVFEQWdOSEFEQkVBaUFvRCtSNmtvbElXYU5KejRoejAzRDNnZXMzR2JNQmpBV3BrT1VnOWF5Rmd3SWdiRXc3QVlTeWs2OE92eGdYZXpnbmRUUlRFdVNXVCtmZFJuTGFCTnNhVHcwPSIsIk1JSUIyVENDQVg2Z0F3SUJBZ0lRRlFOS1crN3piZy83ZCtsVHlySVd3REFLQmdncWhrak9QUVFEQWpCTE1Rc3dDUVlEVlFRR0V3SlZVekVkTUJzR0ExVUVDZ3dVUm1WcGRHbGhiaUJVWldOb2JtOXNiMmRwWlhNeEhUQWJCZ05WQkFNTUZFWmxhWFJwWVc0Z1JrbEVUeUJTYjI5MElFTkJNQ0FYRFRJeU1EWXdPREF3TURBd01Gb1lEekl3TlRJd05qQTNNak0xT1RVNVdqQkxNUXN3Q1FZRFZRUUdFd0pWVXpFZE1Cc0dBMVVFQ2d3VVJtVnBkR2xoYmlCVVpXTm9ibTlzYjJkcFpYTXhIVEFiQmdOVkJBTU1GRVpsYVhScFlXNGdSa2xFVHlCU2IyOTBJRU5CTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFc0ZZRUVoaUp1cXFuTWdRalNpaXZCalY3REdDVGY0WEJCSC9CN3V2WnNLeFhTaEYwTDh1RElTV1V2Y0V4aXhSczZnQjNvbGRTcmpveDZMOFQ5NE5PenFOQ01FQXdIUVlEVlIwT0JCWUVGRXU5aHlZUnJSeUp6d1JZdm5EU0NJeHJGaU8zTUE4R0ExVWRFd0VCL3dRRk1BTUJBZjh3RGdZRFZSMFBBUUgvQkFRREFnRUdNQW9HQ0NxR1NNNDlCQU1DQTBrQU1FWUNJUUNCME5GUVNOMHo0bFd6L3ljMzZld3JUQ3p0dEsvcUZ2bGFQT0toK1QxbzZ3SWhBUDBvS0tBK2NpY3NEeTNZM24rVmxQOGVCM1BCek1raHZXLzlJU1hDdytWQiJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFGQUFBQUFVQ0FNQUFBQXRCa3JsQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUJIWnBWRmgwV0UxTU9tTnZiUzVoWkc5aVpTNTRiWEFBQUFBQUFEdy9lSEJoWTJ0bGRDQmlaV2RwYmowaTc3dS9JaUJwWkQwaVZ6Vk5NRTF3UTJWb2FVaDZjbVZUZWs1VVkzcHJZemxrSWo4K0lEeDRPbmh0Y0cxbGRHRWdlRzFzYm5NNmVEMGlZV1J2WW1VNmJuTTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlrRmtiMkpsSUZoTlVDQkRiM0psSURVdU5pMWpNREUwSURjNUxqRTFOamM1Tnl3Z01qQXhOQzh3T0M4eU1DMHdPVG8xTXpvd01pQWdJQ0FnSUNBZ0lqNGdQSEprWmpwU1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJajRnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJZ2VHMXNibk02ZUcxd1BTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGh0Ykc1ek9uQm9iM1J2YzJodmNEMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzl3YUc5MGIzTm9iM0F2TVM0d0x5SWdlRzFzYm5NNmVHMXdUVTA5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5dGJTOGlJSGh0Ykc1ek9uTjBVbVZtUFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdmMxUjVjR1V2VW1WemIzVnlZMlZTWldZaklpQjRiWEE2UTNKbFlYUnZjbFJ2YjJ3OUlrRmtiMkpsSUZCb2IzUnZjMmh2Y0NCRFF5QXlNREUwSUNoTllXTnBiblJ2YzJncElpQjRiWEE2UTNKbFlYUmxSR0YwWlQwaU1qQXhOaTB4TWkwek1GUXhORG96TXpvd09Dc3dPRG93TUNJZ2VHMXdPazF2WkdsbWVVUmhkR1U5SWpJd01UWXRNVEl0TXpCVU1EYzZNekU2TlRrck1EZzZNREFpSUhodGNEcE5aWFJoWkdGMFlVUmhkR1U5SWpJd01UWXRNVEl0TXpCVU1EYzZNekU2TlRrck1EZzZNREFpSUdSak9tWnZjbTFoZEQwaWFXMWhaMlV2Y0c1bklpQndhRzkwYjNOb2IzQTZTR2x6ZEc5eWVUMGlNakF4TmkweE1pMHpNRlF4TlRvek1Eb3lOeXN3T0Rvd01DWWplRGs3NXBhSDVMdTJJT2FjcXVhZ2grbWltQzB4SU9XM3N1YUprK1c4Z0NZamVFRTdJaUI0YlhCTlRUcEpibk4wWVc1alpVbEVQU0o0YlhBdWFXbGtPakpGTnpGQ1JrWkRRelkzUmpFeFJUWTVOemhFUVRsRFFrSTJORFl6Umprd0lpQjRiWEJOVFRwRWIyTjFiV1Z1ZEVsRVBTSjRiWEF1Wkdsa09qSkZOekZDUmtaRVF6WTNSakV4UlRZNU56aEVRVGxEUWtJMk5EWXpSamt3SWo0Z1BIaHRjRTFOT2tSbGNtbDJaV1JHY205dElITjBVbVZtT21sdWMzUmhibU5sU1VROUluaHRjQzVwYVdRNk1rVTNNVUpHUmtGRE5qZEdNVEZGTmprM09FUkJPVU5DUWpZME5qTkdPVEFpSUhOMFVtVm1PbVJ2WTNWdFpXNTBTVVE5SW5odGNDNWthV1E2TWtVM01VSkdSa0pETmpkR01URkZOamszT0VSQk9VTkNRalkwTmpOR09UQWlMejRnUEM5eVpHWTZSR1Z6WTNKcGNIUnBiMjQrSUR3dmNtUm1PbEpFUmo0Z1BDOTRPbmh0Y0cxbGRHRStJRHcvZUhCaFkydGxkQ0JsYm1ROUluSWlQejQ3N0pYRkFBQUFZRkJNVkVYLy8vOEVWcUlYWmF2RzJPb3FjTEcyek9Pa3d0MEJTSnRxbGNYVjR1K2F1dGxXaGJ6azdQVUFNWTlIY3JLanROYnE4ZmVBbDhhQm9zeno5dnBkanNHR3F0RjNuOHVUc05TWnBjNkpzTlQ1K3YweFlLbnU4UGZmNS9MNDhmZy9mcmljekpnWUFBQURBRWxFUVZSNDJrUlVDWmJESUFqRlhaT1kxVGF0TmMzOWJ6a3NTWWMzcjRNRTRmTUJBYUQ2emw4eS85VE9nZXQ4ZDVqZk43OGJ3TS9kRENScFI1MjF6WGZvakhKMDVJSXloQkFVU1ZBT05kR3pCWXQyZjdLRnJma0phQWtIaDlGWmhjRFhIUmtUS285TUxpaEdhYXZJbW5WM3F5RVgwRXByZ3ovNER3VUQ3a0NIUm5kOFFGTjQzR280VVZtRERnemE0dzI3b2l6ZEEyK2NLK3V1VXBqam8yK3h3Yy80Mlc1MHg1TEdZZURCc1IwSFZJeDV4OGlGNjBDYmxiVEVFa0ZyMjdiTkRCVVZTcTFPS1ZQYkU2MmIzRUg4RnFCZzVPT09FdWMydDhaSmlxTU91R3ArY0tqZzd3VkdjZW96cU40cHhnVlBRa2pGWWdiVkpLRFVoRENqWXJhd1A1cTRFVGdDOWZJTVJIdGl0cFFjQ3ZKT0VMY2JNc1FnbmNpUmtsanB5UWp2RzQ0anFCVUVURmlCaTFQRUl5ZWtPenNXK1R5NWNMSG9zNVIrZE1TMUx0U1N4ZjNnUUhjelIyQ0k0Z01OcFc0SVJBMVFNYTZ0SjQrQzZ1SHVHRThtTkRJeUZxZy9PUC9NTVV1ZVM2SXE4UzkwZEFlQkpTRXkvcUtrSytCTnd6OGNZWTRqYjVKNnU0aVdDSTJCMVo1NkxXNWtFYzRoa2RNcHN2VUM1NTg1U1gwUXViY2dOcXlmZ0RGRWNUdCs0MC8wUzVOeDB3YUN3M09La2NPYkE1SW4wQVlwMDFwamp3Mm42MjZVRGp0SHdhMjhpSHVUS3F0cnYrcmVXNDFOWjZpR2xyN3V1TEpDZmtGdGN0Y0cwNHNnbTFlTlMrWmFEbnBhVEVyR295WDVKSzJpTXo4eHMwbk93V0djUERONDlxYUNkNGJ6Sm96RFptL2FCSytFb3pMdytYaE5CaVl3SGYwc2lPdTFYUGtHL3pLd3ZxWUtjZlN3REVjSC9vVWUwN2VzL1dROHJJeWcyRE9Yajh0amtaZHVEQi9iOGh6RGxsTU1PQ1M1QkVuZDUzNGY4dGkzVVpjNGtNczN4THlhZk1Tc0poZEc4WFBxak5rNXRBZ08yNWZlS0NoblZkRGovSjBGTWtPc1UveE1CdjB3RmhZZUVHZlZIMTNmdURVMHlERkxhNGZjN1JuV0hCZnVURlYydEVtTndhZGM3YWMzVVkyamZCbDdIVDM2ZmUzNGlRTzVtTkNGRkJXMDdLalBncWhPTFUwMXZaOFB1ZVoySkNsRlpOOGprVXM2OXVrYTllUHA2K0VmTDRBRjUrTnl3U2Jpckh0Y0I4TWwvZ2t3QUVqa0s2NEtqSFBlQUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzEiLCJGSURPXzJfMV9QUkUiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkQmxvYiIsImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJsYXJnZUJsb2JLZXkiLCJtaW5QaW5MZW5ndGgiXSwiYWFndWlkIjoiMmJmZjg5ZjIzMjNhNDhmY2I3Yzg5ZmY3ZmU4N2MwN2UiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsInV2IjpmYWxzZSwicGluVXZBdXRoVG9rZW4iOnRydWUsIm5vTWNHYVBlcm1pc3Npb25zV2l0aENsaWVudFBpbiI6ZmFsc2UsImxhcmdlQmxvYnMiOnRydWUsImVwIjpmYWxzZSwiYmlvRW5yb2xsIjpmYWxzZSwidXNlclZlcmlmaWNhdGlvbk1nbXRQcmV2aWV3IjpmYWxzZSwidXZCaW9FbnJvbGwiOnRydWUsImF1dGhuckNmZyI6dHJ1ZSwidXZBY2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOnRydWUsImFsd2F5c1V2IjpmYWxzZX0sIm1heE1zZ1NpemUiOjE0MDAsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6NiwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjo5NiwidHJhbnNwb3J0cyI6WyJ1c2IiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fV0sIm1heFNlcmlhbGl6ZWRMYXJnZUJsb2JBcnJheSI6MTAyNCwibWluUElOTGVuZ3RoIjo0LCJtYXhDcmVkQmxvYkxlbmd0aCI6MzIsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjozLCJwcmVmZXJyZWRQbGF0Zm9ybVV2QXR0ZW1wdHMiOjUsInV2TW9kYWxpdHkiOjIsInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjoxMjh9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0wOS0yNiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IkJpb1Bhc3MgRklETzIgUHJvIChFbnRlcnByaXNlIFByb2ZpbGUpIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNDA5MjYwMDIiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0wOS0yNiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI0LTExLTIwIn0seyJhYWd1aWQiOiJjNWVmNTVmZi1hZDlhLTRiOWYtYjU4MC1hZGViYWZlMDI2ZDAiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6ImM1ZWY1NWZmLWFkOWEtNGI5Zi1iNTgwLWFkZWJhZmUwMjZkMCIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IDUgU2VyaWVzIHdpdGggTGlnaHRuaW5nIn0sImRlc2NyaXB0aW9uIjoiWXViaUtleSA1IFNlcmllcyB3aXRoIExpZ2h0bmluZyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjg3MDYsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJlZDI1NTE5X2VkZHNhX3NoYTUxMl9yYXciLCJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9pbnRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURIakNDQWdhZ0F3SUJBZ0lFRzBCVDl6QU5CZ2txaGtpRzl3MEJBUXNGQURBdU1Td3dLZ1lEVlFRREV5TlpkV0pwWTI4Z1ZUSkdJRkp2YjNRZ1EwRWdVMlZ5YVdGc0lEUTFOekl3TURZek1UQWdGdzB4TkRBNE1ERXdNREF3TURCYUdBOHlNRFV3TURrd05EQXdNREF3TUZvd0xqRXNNQ29HQTFVRUF4TWpXWFZpYVdOdklGVXlSaUJTYjI5MElFTkJJRk5sY21saGJDQTBOVGN5TURBMk16RXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFDL2p3WXVoQlZscWFpWVdFTXNyV0Zpc2dKK1B0TTkxZVNycEk0VEs3VTUzbXdDSWF3U0RIeTh2VW1rNU4yS0FqOWFidlQ5TlA1U01TMWhRaTN1c3hvWUdvblhRZ2ZPNlpYeVVBOWErS0FrcWRGbkJubHl1Z1NlQ09lcDhFZFpGZnNhUkZ0TWprd3o1R2N6MlB5NHZJWXZDZE1IUHR3YXowYlZ1em5ldWVJRXo2VG5RakU2M1JkdDJ6YnduZWJ3VEc1WnliZVdTd2J6eStCSjM0WkhjVWhQQVk4OXlKUVh1RTBJek1aRmNFQmJQTlJiV0VDUktnanEvL3FUOW5tRE9GVmxTUkN0MndpcVBTemx1d24rditzdVFFQnNValRHTUVkMjV0S1hYVGtOVzIxd0lXYnhlU3lVb1RYd0x2R1M2eGx3UVNnTnBrMnFYWXdmOGlYZzdWV1pBZ01CQUFHalFqQkFNQjBHQTFVZERnUVdCQlFnSXZ6MGJOR0poamdwVG9rc3lLcFA5eHY5b0RBUEJnTlZIUk1FQ0RBR0FRSC9BZ0VBTUE0R0ExVWREd0VCL3dRRUF3SUJCakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBanZqdU9NRFNhK0pYRkNMeUJLc3ljWHRCVlpzSjRVZTNMYmFFc1BZNE1ZTi9oSVE1Wk01cDdFamZjbk1HNEN0WWtOc2ZOSGMwQWhCTGRxNDVyblQ4N3EvNk8zdlVFdE5NYWZiaFU2a3RoWDdZKzlYRk45TnBtWXhyK2VrVlk1eE94aThoOUpESWdvTVA0VkIxdVMwYXVuTDFJR3FyTm9vTDltbUZuTDJrTFZWZWU2L1ZSNkM1K0tTVENNQ1dwcE11SklaSUkydjlvNGRrb1o4WTdRUmpRbExmWXpkM3FHdEtidzd4YUYxVXNHLzV4VWIvQnR3YjJYMmc0SW5waUIveXQvM0NwUVhwaVdYL0s0bUJ2VUtpR24wNVpzcWVZMWd4NGcweExCcWNVOXBzbXlQeksrVnNndzJqZVJRNUpsS0R5cUUwaGViZkMxdHZGdTBDQ3JKRmN3PT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZkNBWUFBQUNHVnMrTUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFIWVlBQUIyR0FWMmlFNEVBQUFiTlNVUkJWRmhIcFZkN1ROVjFGRC8zZDU5d2VRU0lnUzlBUUFYY0ZMQVFaaTlmcGVWejF0WS9XVFpyNVd4cGM3VzVrbkxhNWpJM1o4NXNyUzJuTTJzanRXd1pTN0lVSDRINHhDbkVReDREQVpGNzRWN3VzODg1djkvbEluQnZWSi9CNFB2OW51LzVudS81bnZNNTU2ZnpBL1F2MEhiL0lyWDNWRktQbzQ1Y25tNGluVUlXWXdMRlJtWlFVdXdqRkcvTjFpUkhoMUVaME5SVlJ1ZHF0MUJkKzJuU0t5Uy9PaHlzMCtsazNlLzNrUTlxdkQ0WlV0YTRWVlNVdVkwZWlweWlUaEFmb2NvT1JWZ0R1dXczcUtSaUFkM3JiY0V0alRqWUlvZjZXYUhzQ216VlBXQ014K2NnaDh0THFXTUthTVdzVWpMcW8yUnRKSVEwb096bWVycFF1NGVzWmdzT05rR3hIN2Qwa2R2VFQxN3M0T01VN1ZJOFpoamdHYU0rQXE5aUVOdThQaWYxdWR6MDdNd3ZLV2Y4R2xWb0NFWTA0UEM1V2RUYVhZRmJSOHZOdkw1KzNLZ2ZiNXhOTXlhOVJhbUppeW5hTWxHVFZ0RmxyNmJhOXUrcHFuRVg0dU11UlJnalNZRWhyTjd1dEZGZTZscWFsN05ma3c1aW1BR0h5blBwYms4Vm1ZMHhzdG5wdGxGQ1ZDWXR6VHVCTjgzUXBNTGpUdGV2ZFB6U1VuSjdlOG1ranhaMzlmWGJLRGZsZFpxYnZVK1RVZ0duQlZGNmZRMmlQSGc0VzE2VVdVd3Z6YmsxNnNNWkUrUG4wcHZ6N0pTZXVBeWVzOGxjcENtYUt1by9wK3FXcjJVY3dJQUhXcnZQMFlFemhYQXRMQWJzc0hocDdpR2FtdnlpalA4cnlxclhVV1g5WG9vd3h5QXVmTkJycDQzUE9CRlhabGtmOE1EUmlxY3B5b3dBd3B1ejJ4K2ZXdnovRHRkZTlzbXN6eWd0Y1I2QzF3YmR6Qmw2T2xxNVdOWVk0b0dhdGhKTXJrVEV4MGpBUlNIQVZzKzVyWWtRTlhiK1FnZlBMc1E2Z1h5SW5zcmVRZm1wbTdSVkZZZkw4Nm4xZmlVT2tZdlNoa1VQeHZidWt6b3k2SzFpaE0xaG8zWHpXNkV2U2ZYQStkcGlXR2FXZCtkb1h6THptR3dLWUZMQ0FzUkFsUEJBaE1sQ0ZYVTd0QlVWUHI4SGdWY0pIV3ErRjAwcGxyK0RNVGRyUDR6dnhZMTFrTk1oeFQrU2VUR2crZDRWNUxRSml0eVVHSk5COFZGWnNqZ1lCWk0vSUkvWENUa2owcXlET3BGMkFWUTE3Q0lqVXAvRG5UMVVrTDVGNWdkaitzUzF3ZzFnRTNnaWdtNjBmQ1h6U25QWGJ5QVBiSVh2K0lEcEUxNlRoYUhJUzlza3lobG1NRTVGM2NmcUFLaHEyQzBFNVBIMWdZYVhhTFBEa1pHMEhESk9uS1dIcDUxSTB6NVNPdXg4ZTFXQXVaemRIUXJUa3A4VG1qWG9JK2xhMHdHWnN6dWJxYk8zaWZRNkEvVzd2VlNZc1YzbVIwSkt3a0tjNFdIaUJrbVI4STNDQ2dJODdvT0w0cXpUNVArUlVKQmVqRU9nQVBLOGhZUHphdE0rZUlUcDJJTzl5VFFtZXJvbVBSeHgxcXhBY3NpbGUvdWJTZUViY1dRR1lFQ2doY0xZMkh5S2pvZ2pIMjVoTXBqcFV2MU91Z2xpNGVoMmVSdzBPMzJiSmpreXVDZ056ZzB2emxZTVNpU3MwdW9vNE1HN2hNT2pDRWFYMXlGRTBuU3ZqQnp1VG5FcEs4Nlo4SW9xRkFJdWJ3OGtnOUFyRWFSRVdTWkkrakg0WGJwNmc5RTlFbkpUM29hUnpETitNVUpCUURIbjU2YThvVW1FQnVzT3hCcy9ONSt0SkViUGtBRkRqOFVHdk9zL0lXdmNTZ2xHQmh2UzcvRlRZZnBXR1lkRFk4ZlBBeFdTQTM1c1RDNHA0K0xtNEFhcUlvUGVRdGZ1Zks2SmgwWmh4bGJzVVhPU21YTmlmRDVaVEFreURvZmJiY2NseG5BOFdOQXF4Q2JSTnlraFh4UXBhRHc2N2ZYVVlic2lHMEtodHYyb2VJdmg4cmhRTVlPY0VBcVhHL2VJK3puZ09jNXl4cjhxODJJQU0xYy9GTEZPcGxxdTVlRlFYck1aekdjVkNqWWJMV0c1STRCVDFldVJybGJ4dE5PdE1pdERERWhMWElJeW5BQXZ1T0VXRTNYM05kQWZ0OTRWZ2FHNDJYSVF0MFpYNlBlQ0UvcVFGZTlySzZIeDdZVTUwS3ZIN2ZXNGZTK3E3S0tCSnhzZ2dCWDVwU0FHaDFqSXJWaDV6UTZ3M1JmYWFoQlhtL2FDYkNaVGpDVUZVVHlXWnFXOXA2Mk1qSlBYVnFPclBnTU80TnY3NEdrZitvd2Z0TlZCRFFuakZKcUhTdzE3cFh2aFdXNUtacWUvUTQ5Ti9VU1RDQVZXb1FYRklIQkhYWGUzRlByVURzdUdEbXRGL2hIS1RIcGVreGhpQU9QSStTSnE2UzZIRjRJOVlXemtCSlRvNDZpVU16V3A4UGlyL1JpZHVMeEtZc1Nrc1Y4dkxsT1F2aEdYMllsUjBPQmhCakMrdS9nRWN2WTBBcEs3WWs0MU54alBTUW5XRkhURjY2VXJqZ2V2QjhDdTVhK2wydllTUlB0dVZEbzczaGhkTVNIblVYN3RUanNWWkd4QWwvV3B0aU9JRVExZ25MMjltWDYvdFIxdG1sa1lqOFc0WCtDU2pXY1VER1kxTnBTL0M3aFNLcWlNTE0vbDJRbVNXWjczRGR6K2dpbzhCQ0VOWVBRNDZxbmt6d1hVYnF2Qmt4alVRc1dmWkZnYnVvM3JBZit3TjdqT085MCt5bng0UGkzTCswbllMMVNjaERVZ0FQNGdQVi83SWQxcSsxSFNobXVHa0lxV1JQZ3l4TUZxUDhIZmpUbmpYd1k1YlFmYkpjdDZPSXpLZ01Ib3RGL0hlMWVnc2F4SFNxRzZ3ZmRtUTV4OE55VEZGcUJjcDJpU293SFIzeWs1KzM2aEY3dlhBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMV9QUkUiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6ImM1ZWY1NWZmYWQ5YTRiOWZiNTgwYWRlYmFmZTAyNmQwIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6dHJ1ZSwidXAiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZX0sIm1heE1zZ1NpemUiOjEyMDAsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6OCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoxMjgsInRyYW5zcG9ydHMiOlsidXNiIiwibGlnaHRuaW5nIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN30seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTh9XSwibWluUElOTGVuZ3RoIjo0LCJmaXJtd2FyZVZlcnNpb24iOjMyODcwNn19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIwLTA1LTEyIiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZdWJpS2V5IDVDaSIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMTkxMDE3MDAzIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjEuMSIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4zIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIwLTA1LTEyIn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMC0wNS0xMiJ9LHsiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbImEyZWQ4YzNlM2UxYzk1ZGY5ZDg4YzVmOWNjZTRjNDhiZmQyYWNlZWEiLCI0OWNjMDRjZTMwMWI2ZDc2ZDc3MWZkOTBmOTQ4ZTZjNWI2MzAwMmI4Il0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbImEyZWQ4YzNlM2UxYzk1ZGY5ZDg4YzVmOWNjZTRjNDhiZmQyYWNlZWEiLCI0OWNjMDRjZTMwMWI2ZDc2ZDc3MWZkOTBmOTQ4ZTZjNWI2MzAwMmI4Il0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJGZWl0aWFuIGVQYXNzIEZJRE8tTkZDIChFbnRlcnByaXNlIFByb2ZpbGUpIChDVEFQMi4xLCBDVEFQMi4wLCAifSwiZGVzY3JpcHRpb24iOiJGZWl0aWFuIGVQYXNzIEZJRE8tTkZDIChFbnRlcnByaXNlIFByb2ZpbGUpIChDVEFQMi4xLCBDVEFQMi4wLCBVMkYpIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6Mn1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiLCJyZW1vdGVfaGFuZGxlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDWHpDQ0FjR2dBd0lCQWdJUVl6L1dxdVBHd2poeDlrWkd3OEF6dFRBS0JnZ3Foa2pPUFFRREJEQkxNUXN3Q1FZRFZRUUdFd0pWVXpFZE1Cc0dBMVVFQ2d3VVJtVnBkR2xoYmlCVVpXTm9ibTlzYjJkcFpYTXhIVEFiQmdOVkJBTU1GRVpGU1ZSSlFVNGdSa2xFVHlCRlFTQlNiMjkwTUNBWERUSTFNREV3TVRBd01EQXdNRm9ZRHpJeE1qUXhNak14TWpNMU9UVTVXakJMTVFzd0NRWURWUVFHRXdKVlV6RWRNQnNHQTFVRUNnd1VSbVZwZEdsaGJpQlVaV05vYm05c2IyZHBaWE14SFRBYkJnTlZCQU1NRkVaRlNWUkpRVTRnUmtsRVR5QkZRU0JTYjI5ME1JR2JNQkFHQnlxR1NNNDlBZ0VHQlN1QkJBQWpBNEdHQUFRQXdtL0hiTitpY25HbGxQaytqRTZXYUM0UFBnRXdUaUZ0djFITU5WSVBtNExOMkk0ODEzNVQvZTA4ZU95bTFDeXc3b0x1QUN6ajlocEhaNzEvK1JTR3B6SUJvcmVidEZPUzRoK014TXBFeUtSMVNaYjFlOGdBVDFLT21tcm9kd0VoaFBSaUNnYTY5eW9uWnJLN3hMZ1hPamE2dCtxR2NJR3BPWktwYVB6R2RUZFNUMVdqUWpCQU1CMEdBMVVkRGdRV0JCVGdSVzh5ZmpQZFZvV1d1ZStLM0JzK1h2YVVCREFQQmdOVkhSTUJBZjhFQlRBREFRSC9NQTRHQTFVZER3RUIvd1FFQXdJQkJqQUtCZ2dxaGtqT1BRUURCQU9CaXdBd2dZY0NRZ0VrdWMyK0Vud0gycEN3aERPWHpaSlIvVzZDbFE0ck54cUt6TjUvVE5NYWhLT1VnbUFEMS9XZWJqZDF5WGpIYmd2dG9kZk5tZm1XTm5NdlE5ZDEzb1NvalFKQkUwQkU4YkZUZ1diS2RVMUtraldIUEZ2bHhLeWREZ2Z0TFI1THJoVGVGVklmcUtHU2Zxejh1Z2dxRXlkUGF5OHVXTTVlR3k3RzdSUXllNXJ5VEo2V3hJQT0iLCJNSUlDV1RDQ0FidWdBd0lCQWdJUUthN3U1dTEzdlltTzZBNitrMmNoaFRBS0JnZ3Foa2pPUFFRREF6QkxNUXN3Q1FZRFZRUUdFd0pWVXpFZE1Cc0dBMVVFQ2d3VVJtVnBkR2xoYmlCVVpXTm9ibTlzYjJkcFpYTXhIVEFiQmdOVkJBTU1GRVpGU1ZSSlFVNGdSa2xFVHlCRlFTQlNiMjkwTUNBWERUSTFNREV3TVRBd01EQXdNRm9ZRHpJeE1EQXhNak14TWpNMU9UVTVXakJITVFzd0NRWURWUVFHRXdKVlV6RWRNQnNHQTFVRUNnd1VSbVZwZEdsaGJpQlVaV05vYm05c2IyZHBaWE14R1RBWEJnTlZCQU1NRUVaRlNWUkpRVTRnUlVFZ1EwRWdNREl3ZGpBUUJnY3Foa2pPUFFJQkJnVXJnUVFBSWdOaUFBUy9kWTlXVWlWaG9SNkE3cUdlY2pIZVN1dTlId2pIZEV0L2lPR2NQUGRTeWhsd2FqRFZGNjh0OXdNTjgvNXZsSWFlS08wclJuRlFubUdtbXVVb3VlclAyb1BKd0srVHVMZndEQWFycWJJSGpXUnNGdU95Yjl6NWZja2ZNZnoyUUVpalpqQmtNQjBHQTFVZERnUVdCQlNkUjVCRjdKeWdKT0FGL0tCK0xseUJNUVVCSWpBZkJnTlZIU01FR0RBV2dCVGdSVzh5ZmpQZFZvV1d1ZStLM0JzK1h2YVVCREFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VBTUE0R0ExVWREd0VCL3dRRUF3SUJCakFLQmdncWhrak9QUVFEQXdPQml3QXdnWWNDUWdIQnR3WkRoYU1OWHl3emI0aHZReDdMTmFRVzZLeHhETzM1WDAvQm8vT3IwR2hHdW9LaUtHbisycFBlNEx1U0tESDV3Nm42OEVrODNHcTU0dUg2SHVCNTlnSkJWNk11Mm9aZk5tVEcwSTh6NG5yME9sR25qTzNZRjQ2VGlGVW54MFhEYk9xaXNvQ3I3VHRGVmxJWGhtaW5QdzVUNDQ5eXFoZnB1RUJwUnFWbmR3NTlDVXM9IiwiTUlJQjJEQ0NBWCtnQXdJQkFnSVJBTXM4WVhWQm9CTnVYVWpxZkNvWDd5NHdDZ1lJS29aSXpqMEVBd0l3U3pFTE1Ba0dBMVVFQmhNQ1ZWTXhIVEFiQmdOVkJBb01GRVpsYVhScFlXNGdWR1ZqYUc1dmJHOW5hV1Z6TVIwd0d3WURWUVFEREJSR1pXbDBhV0Z1SUVaSlJFOGdSVUVnVW05dmREQWdGdzB5TXpBeE1ERXdNREF3TURCYUdBOHlNRFV5TVRJek1USXpOVGsxT1Zvd1N6RUxNQWtHQTFVRUJoTUNWVk14SFRBYkJnTlZCQW9NRkVabGFYUnBZVzRnVkdWamFHNXZiRzluYVdWek1SMHdHd1lEVlFRRERCUkdaV2wwYVdGdUlFWkpSRThnUlVFZ1VtOXZkREJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCRDJMSEhBUXFZYmRSMVdabHVlcnRNMzByV2hvcllhdldtTVZhNG5kWDlQWnd1UkVwTFE0bTFuRWxxUUtNblJFOC80QytScXdpYXYrbXBJNGt4ZDVlNXVqUWpCQU1CMEdBMVVkRGdRV0JCUzNaWmp5R2xoWjk5TjF2TG9UUFhWVWE0WkVZREFQQmdOVkhSTUJBZjhFQlRBREFRSC9NQTRHQTFVZER3RUIvd1FFQXdJQkJqQUtCZ2dxaGtqT1BRUURBZ05IQURCRUFpQW9EK1I2a29sSVdhTkp6NGh6MDNEM2dlczNHYk1CakFXcGtPVWc5YXlGZ3dJZ2JFdzdBWVN5azY4T3Z4Z1hlemduZFRSVEV1U1dUK2ZkUm5MYUJOc2FUdzA9Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUZBQUFBQVVDQU1BQUFBdEJrcmxBQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQkhacFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR3L2VIQmhZMnRsZENCaVpXZHBiajBpNzd1L0lpQnBaRDBpVnpWTk1FMXdRMlZvYVVoNmNtVlRlazVVWTNwcll6bGtJajgrSUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWtGa2IySmxJRmhOVUNCRGIzSmxJRFV1Tmkxak1ERTBJRGM1TGpFMU5qYzVOeXdnTWpBeE5DOHdPQzh5TUMwd09UbzFNem93TWlBZ0lDQWdJQ0FnSWo0Z1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNGdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlnZUcxc2JuTTZlRzF3UFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIaHRiRzV6T25Cb2IzUnZjMmh2Y0QwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOXdhRzkwYjNOb2IzQXZNUzR3THlJZ2VHMXNibk02ZUcxd1RVMDlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl0YlM4aUlIaHRiRzV6T25OMFVtVm1QU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2YzFSNWNHVXZVbVZ6YjNWeVkyVlNaV1lqSWlCNGJYQTZRM0psWVhSdmNsUnZiMnc5SWtGa2IySmxJRkJvYjNSdmMyaHZjQ0JEUXlBeU1ERTBJQ2hOWVdOcGJuUnZjMmdwSWlCNGJYQTZRM0psWVhSbFJHRjBaVDBpTWpBeE5pMHhNaTB6TUZReE5Eb3pNem93T0Nzd09Eb3dNQ0lnZUcxd09rMXZaR2xtZVVSaGRHVTlJakl3TVRZdE1USXRNekJVTURjNk16RTZOVGtyTURnNk1EQWlJSGh0Y0RwTlpYUmhaR0YwWVVSaGRHVTlJakl3TVRZdE1USXRNekJVTURjNk16RTZOVGtyTURnNk1EQWlJR1JqT21admNtMWhkRDBpYVcxaFoyVXZjRzVuSWlCd2FHOTBiM05vYjNBNlNHbHpkRzl5ZVQwaU1qQXhOaTB4TWkwek1GUXhOVG96TURveU55c3dPRG93TUNZamVEazc1cGFINUx1MklPYWNxdWFnaCttaW1DMHhJT1czc3VhSmsrVzhnQ1lqZUVFN0lpQjRiWEJOVFRwSmJuTjBZVzVqWlVsRVBTSjRiWEF1YVdsa09qSkZOekZDUmtaRFF6WTNSakV4UlRZNU56aEVRVGxEUWtJMk5EWXpSamt3SWlCNGJYQk5UVHBFYjJOMWJXVnVkRWxFUFNKNGJYQXVaR2xrT2pKRk56RkNSa1pFUXpZM1JqRXhSVFk1TnpoRVFUbERRa0kyTkRZelJqa3dJajRnUEhodGNFMU5Pa1JsY21sMlpXUkdjbTl0SUhOMFVtVm1PbWx1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2TWtVM01VSkdSa0ZETmpkR01URkZOamszT0VSQk9VTkNRalkwTmpOR09UQWlJSE4wVW1WbU9tUnZZM1Z0Wlc1MFNVUTlJbmh0Y0M1a2FXUTZNa1UzTVVKR1JrSkROamRHTVRGRk5qazNPRVJCT1VOQ1FqWTBOak5HT1RBaUx6NGdQQzl5WkdZNlJHVnpZM0pwY0hScGIyNCtJRHd2Y21SbU9sSkVSajRnUEM5NE9uaHRjRzFsZEdFK0lEdy9lSEJoWTJ0bGRDQmxibVE5SW5JaVB6NDc3SlhGQUFBQVlGQk1WRVgvLy84RVZxSVhaYXZHMk9vcWNMRzJ6T09rd3QwQlNKdHFsY1hWNHUrYXV0bFdoYnprN1BVQU1ZOUhjcktqdE5icThmZUFsOGFCb3N6ejl2cGRqc0dHcXRGM244dVRzTlNacGM2SnNOVDUrdjB4WUtudThQZmY1L0w0OGZnL2ZyaWN6SmdZQUFBREFFbEVRVlI0MmtSVUNaYkRJQWpGWFpPWTFUYXROYzM5Ynprc1NZYzNyNE1FNGZNQkFhRDZ6bDh5LzlUT2dldDhkNWpmTjc4YndNL2REQ1JwUjUyMXpYZm9qSEowNUlJeWhCQVVTVkFPTmRHekJZdDJmN0tGcmZrSmFBa0hoOUZaaGNEWEhSa1RLbzlNTGloR2FhdkltblYzcXlFWDBFcHJnei80RHdVRDdrQ0hSbmQ4UUZONDNHbzRVVm1ERGd6YTR3MjdvaXpkQTIrY0srdXVVcGpqbzIreHdjLzQyVzUweDVMR1llREJzUjBIVkl4NXg4aUY2MENibGJURUVrRnIyN2JOREJVVlNxMU9LVlBiRTYyYjNFSDhGcUJnNU9PT0V1YzJ0OFpKaXFNT3VHcCtjS2pnN3dWR2Nlb3pxTjRweGdWUFFrakZZZ2JWSktEVWhEQ2pZcmF3UDVxNEVUZ0M5ZklNUkh0aXRwUWNDdkpPRUxjYk1zUWduY2lSa2xqcHlRanZHNDRqcUJVRVRGaUJpMVBFSXlla096c1crVHk1Y0xIb3M1UitkTVMxTHRTU3hmM2dRSGN6UjJDSTRnTU5wVzRJUkExUU1hNnRKNCtDNnVIdUdFOG1OREl5RnFnL09QL01NVXVlUzZJcThTOTBkQWVCSlNFeS9xS2tLK0JOd3o4Y1lZNGpiNUo2dTRpV0NJMkIxWjU2TFc1a0VjNGhrZE1wc3ZVQzU1ODVTWDBRdWJjZ05xeWZnREZFY1R0KzQwLzBTNU54MHdhQ3czT0trY09iQTVJbjBBWXAwMXBqancybjYyNlVEanRId2EyOGlIdVRLcXRydityZVc0MU5aNmlHbHI3dXVMSkNma0Z0Y3RjRzA0c2dtMWVOUytaYURucGFURXJHb3lYNUpLMmlNejh4czBuT3dXR2NQRE40OXFhQ2Q0YnpKb3pEWm0vYUJLK0Vvekx3K1hoTkJpWXdIZjBzaU91MVhQa0cvekt3dnFZS2NmU3dERWNIL29VZTA3ZXMvV1E4ckl5ZzJET1hqOHRqa1pkdURCL2I4aHpEbGxNTU9DUzVCRW5kNTM0Zjh0aTNVWmM0a01zM3hMeWFmTVNzSmhkRzhYUHFqTms1dEFnTzI1ZmVLQ2huVmREai9KMEZNa09zVS94TUJ2MHdGaFllRUdmVkgxM2Z1RFUweURGTGE0ZmM3Um5XSEJmdVRGVjJ0RW1Od2FkYzdhYzNVWTJqZkJsN0hUMzZmZTM0aVFPNW1OQ0ZGQlcwN0tqUGdxaE9MVTAxdlo4UHVlWjJKQ2xGWk44amtVczY5dWthOWVQcDYrRWZMNEFGNStOeXdTYmlySHRjQjhNbC9na3dBRWprSzY0S2pIUGVBQUFBQUVsRlRrU3VRbUNDIn0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDMtMDMiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJlUGFzcyBGSURPLU5GQyBTZXJpZXMgKEVudGVycHJpc2UgUHJvZmlsZSkiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlUyRjEwMDAyMDI1MDMwMzAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTAzLTAzIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjF9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDQtMDgifSx7ImFhZ3VpZCI6IjIxOTRiNDI4LTkzOTctNDA0Ni04ZjM5LTAwN2ExNjA1YTQ4MiIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiMjE5NGI0MjgtOTM5Ny00MDQ2LThmMzktMDA3YTE2MDVhNDgyIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IklEUHJpbWUgOTMxIEZpZG8ifSwiZGVzY3JpcHRpb24iOiJJRFByaW1lIDkzMSBGaWRvIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MTAsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6MCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MTAsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6MCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUM2VENDQWRHZ0F3SUJBZ0lKQUpiVHlydTFYL0lQTUEwR0NTcUdTSWIzRFFFQkN3VUFNQ014SVRBZkJnTlZCQU1NR0VkbGJXRnNkRzhnVFhWc2RHbEJjSEFnUmtsRVR5QkRRVEFlRncweE9EQTJNVEl4TkRRMU5UQmFGdzB5T0RBMk1Ea3hORFExTlRCYU1DTXhJVEFmQmdOVkJBTU1HRWRsYldGc2RHOGdUWFZzZEdsQmNIQWdSa2xFVHlCRFFUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU1WaktIV3BiRDdUU2xNeG9jalRsNm5JZjd4MzJQbXNROXpHdUxHR3FBMFVRWm9JcTNYTHpMNkxZVXZKNUE1ZzB1eUZHbGxIRWZHQUtyRWFDUThGVnZQUy9VaDBGeWZ6V2hSQXppVFNpampNSUlWampqVXY5bTl2Rm1jWFNjZ0hpZzdPZHo4ODU4VjBrck5IOTlxR20zd2pnYU9lclRXbXQralhDVWZuMDFJa1RQd3hHMkhsZ0VkNDVqTkxTVjdWb29sK0tlOEUya2k0bEVrVGVIemJvdWxSNUdVYnAzbk1pN0U0N1ZNUWEzYk53bnpXQmJzYUJTU1FoTGszbTVIYUtoaHhhNndKREs0N05pTUNrQ2tkSUh1V1NRTFZBZm04NVVBT050RU9Qd2kwT3VLM3FiZTh5S09GR2YwS2hCNU1NZUF5bTdNVi9NNFcwYTQ5b2dQRDlwTUNBd0VBQWFNZ01CNHdEQVlEVlIwVEJBVXdBd0VCL3pBT0JnTlZIUThCQWY4RUJBTUNBb1F3RFFZSktvWklodmNOQVFFTEJRQURnZ0VCQUpXejV4TE1rNVdOWWJBYjZ5T3hFQ0JvWjJXZUIvcWw0VkozTy8zL3ROc3hPWW56TGVXbzU0MHpRaDlyQW1heHo3ZXVtQmxza01xNHlHUFNOWEI5eWNXR0hna2NDZVN6TjJ3djhDSXpEQnMyb0JaalROazY1TEJaRHNzVE9CdE1XLyt1VEZIUWZidU8zSVNMaEkwRFhmUkVpOU5ETTNqZmsxMXhIY3NmaDJSTVYrUWROZndWYVpackNxK291RytFdmt2N0txcStveXUwVkZNL3R6NjhUR2w2eWxoUEZSMXFoOXd0dHBWakFPT0NFUUNMcVAyZFAyOGx3WUJ5Q3FIUXFWSHdidWp2L0xaalpuS1czTFluZFppeFBQU1JDSnNzRER3SnZoL2Y2blR4ZzlaRSsvSmNZcmU1Q2FJOG56VkhhU09Dak5KN0Z6VUxHNjRKaVdPdlE1MD0iLCJNSUlEZFRDQ0FsMmdBd0lCQWdJSkFJQ1VUdmtndGo1Q01BMEdDU3FHU0liM0RRRUJDd1VBTUZFeEN6QUpCZ05WQkFZVEFrWlNNUXd3Q2dZRFZRUUtEQU5FU1ZNeEN6QUpCZ05WQkFzTUFrTlRNU2N3SlFZRFZRUUREQjVIWlcxaGJIUnZJRTExYkhScFFYQndJRVpKUkU4Z1UzVmlZMkVnUTBFd0hoY05NakF3TnpBM01UUXpOekU0V2hjTk16QXdOekExTVRRek56RTRXakJSTVFzd0NRWURWUVFHRXdKR1VqRU1NQW9HQTFVRUNnd0RSRWxUTVFzd0NRWURWUVFMREFKRFV6RW5NQ1VHQTFVRUF3d2VSMlZ0WVd4MGJ5Qk5kV3gwYVVGd2NDQkdTVVJQSUZOMVltTmhJRU5CTUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUF2QUtPZXFDNS9wMEQxaXNDWUtRSmxWVU9yQjZJN0RMb2N1bkUvUm04ZHVHVGJ5eFFodDNDYkZWVHYzTjJMcDJmYmp4bEkrM3NPU0drMzNGVFlrVHF4Y2RKSXJKN1Nza0JjVVNOcmZLT2FRVC82S1FjUDRDbTdWKzY1NVRxK1RXeHl4V1FoRHlndDE1cW9QN011SzZiVDlTd3BDanBmS2hhTVNteVFhTW9VY1JBYkxxZHpCQ2FjMGh6QitaZStncUpsbldWOVVhU0kyckZzVnVINFpFMGNSTytNT3BhTGdNL3MyNDhuR0dIcDIyZXdTUWZiblBhQmJiOGlxeUFQK2N1NTJHTHNVcEtSSmViRStSNitQTVE5SkNkV2VRWlIzRGtmU2lka3YzbWNiNGpxMWlJdGErTXFLaFJud3JmWGg5MTFLV0xuWUFsOUVOQ2hMWDBjNlNqMVFJREFRQUJvMUF3VGpBZEJnTlZIUTRFRmdRVVdMdmhSQlVQbjh1TElmNjgrZ3YvTlpJd0dTSXdId1lEVlIwakJCZ3dGb0FVV0x2aFJCVVBuOHVMSWY2OCtndi9OWkl3R1NJd0RBWURWUjBUQkFVd0F3RUIvekFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBRkxyRGhhZWdlS0h4WWpIM0VQM3ZVQktobnpNMjA2QVN4Z2VZQ08yRWM5cE9sWUphZXFGRStzVWFtVVYvcHdqRGxxTmFTZ0ZneTdUd2VZa3ZPbU1uNHFTY3NIcXZKM3pHT0FpYWZ3YWgxdlVIZkNsWFI4K2F4TzJpR09VRjBKS3JaOVlZamJBYTUvNEhDbHY3akZQT2RNV1RPUXluZ29pSEFzM2prdVlqcENMRmxCNFZPaTNkMXdqQTFwblRkQktrQWI3dDhuVHZ3Ky9YYkZ2Y1FhNzNWSDdzanZvQnFEM2ZkTWZSY3VWcTRxVVp0WlQ2Y0dhZ1RIRDYxVHRxaDlvTUNaWGNEYlIxUEdabk5icXljc1dQRElLMG5wbUszLzNsZlY4Yytac3J5NmUxNzBtZkpNWnA3TzhtNkNTejYvVkxLK3lESmQ3ODQxd3BtZUtUZjZJblpBPT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBUXdBQUFBZ0NBWUFBQURubFVacUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFFblFBQUJKMEFkNW1IM2dBQUFBWmRFVllkRk52Wm5SM1lYSmxBSEJoYVc1MExtNWxkQ0EwTGpBdU1qSHhJR21WQUFBSzFFbEVRVlI0WHUxZERYQWNaUm0rTk9BZktvZzZXTzBRY3JlWDNPNzFSNDFvSGRTcXFEQU9nMytjWUVYQm9sWFJURW4yMjB0YUtUYzY0bWdCcXpCaUVVVnBCZHFpd3docVNkSVMydXBZU2d2UnRwVFNja2xqV3pIYWdqcFNSZHI0dkx0dmpydmsyN3ZkdmQxTGpuN1B6RE4zdC9kKzcvdCtmOC8rNzhhSzBORGFhcjJxT2RYWm9xV3lIOVIwYTBGY3Q2N1dkSEdUWm9qVkNjUHFTZWpXMW9RdUhzT3kvZUJUc0RtTS81NFpUOWorTFdHSWc3RGZCL3NCY0RQc2Y0WGZQOFgzYjJ1RzFaSFF6VThtVXVLZHlXVEhtNXFhY2kvakhBS0J5aWYwYkJyK0x3YVhJUFlQa01kcWZMOFhkV3BsczFBQTMxL1FqT3c5OEw4UzliOEJYSVIyK25EYzZEb3psc2swc2xua1FNeGtQR1hPOUVKdFZuWUdGNHNVeVZuZDhVVGFlcDhidys2TGFrQmo1aXpkYk5KUzFyeEVXbnlXeGczNkVtUGRXb1BQRGVqZjdlQVRHTXNIYUR6VHVDNmhiajBOL3BYbUFzcnVnczBXTFA4TnVCSmpaSm1XRWxjbDA5bVBKMUptVzB0TDUrdWlIQnVHa1hzbGpYODduaTRFelZuazlBdmtzUW41N0VTZGhyQjhCTXVQak9XUC8vNE9Ic1IvZTdEOFlkVGxmdFJoRmZnZExHOUh1MXdBZnpyNTVqQU9raVFLaHZWYkdCNkMwLy9pKzJpTmVSeDhGZ252UmZ4ZmFpbnpTazdORTBpSVVQYmY0M3dXbU5UTmQ3QnBLRUE3TFpmRkFZOXpwM3laVFNNRGlRVmkvVStTZzVRWUFJZk9tRzJld3NVakEvcmhXN0w0QmVybWo5aDBVb0IyT0IrVFpUVzRCL2s4T3lHL3lDaU9vVzFJWUg2SDhYUHo5TGJjS3ppbFFHaHBNWnZoWnlIR3dHM2c0MkJrODVaOG85MEc4WDBOaVNzMUl2MlFHazhLZFdzenQ0c25JUDhScVI5bURRWERJZFpTYkJvWjBJbDNTMk9YWlhZcEY0OE1VMTR3bksxYmVXNDFwTDNGRVFDSmxQVld0REcyZnV5VnJOUjN0QlRkU2pCOFlySUZveVZ0bm8yT0N6Qmd4RE5CQjZwWEtNSHd4aUQ5Z0szS2M2UGNrdkJHSlJpK01jbUMwWUQ0ZmRLNFhvaDlXL1lUQ1pSZ2VLTnZ3Y2hrR3RHMmUyVytha3NsR0w0eG1ZSkJheGxwVEkra05SUWRtR1Izb1VNSmhqZjZGUXc2Y0NyelUzdENNTERXdVFzZDNSK0F3M0tuQlE1S3luamhqZHhPbm5EaUNFWnVHanJzWVdsTUp0cGlXVUszQm1UL0ZmRXVkaGc2VVBlNkZnejBiUjZmYTZNbW5ZM2tsRHdoYVlqTFVVNmVzMjd0MGd6em03VmdVdTk2RDZma0h4Q2E2MlVWR0NNcThnMDJqUlFuaW1Cb1J2WWlhVHdtMm50Zlc5dkNrN1cwZFlIcy93SjE2M2s2ZU1adVEwVzlDd2JHOUsxc09xV0F2SVUwWDV0aURadE5iU2pCY0dFRWd0SFdkc3ZKOEUybkF1VXhpYnA1aFdNOTJvRGYyeWI4WDBLeDNyRU5GMG93b2dIbTBoSnB2amFWWVBqQ2lTQVlpYlQxZVdrc0ppYkNrL1BtNVU1aWM4cnhRcGxkTVJQcDdIbHNIaHFVWUVRREpSZ2g0c1V1R0hTUkQrcElWK1RKNHhIMUxHOWRqQ0hUaU1sUjRWaUcyRTdIUmJoQUtGQ0NFUTJVWUlTSUY3dGdvSjJ6MGpoTXRIT2VqbDJ3ZVFGWS9sR1pmU25GZkRZUEJVb3dva0hDTUJkTDg3V3BCTU1YS2dxR0lTNXZUcHRuaDBYVSswNVpuQUpERkF6RDZEZ2QvcDZXeG1IR0RmRkZOaCtIMFFiMHdhT3lNbU9FK09VTkkvY1NMbEExNmwwdzBGNjc0N3E0cFJwR2NkcWE3a3VSNVV0RUg0NWdEbXdLaS9EWmo4LzdJRVMzNHJPemVhYVl6V2xVaDNvUmpKb3pSTUdvT0FFTmEwaTJkVEdHZUVwOFRGSm1QRHZZdkdyVXUyQ0VRYnFoa3NPRkJzeWxpMld4YXNUajZOZDEycHNYdjU3VENRWWxHQzRNU1RCYVc2MDNvbzFkYjZxenFWdGZZbk01NkFwQnc5b3hvVndSTVlsR05LMzkxVnlpS2lqQmlFWXdtbFBkTGJKWXRTVGE3cUhpQSt1K29RVERoU0VKQnRwdmhkVC9HSFd4djl6V3hSaTB0UGlFdEh3SnhiVnNYaFdVWUVRakdIUndHdU9oMGdWNWtUT2VNaS9oaFB4RENZWUxReENNczFxdFZnenU4cmV2cHl5UGp3SHdzcFZoL1N1VldqS2RDd1NHRW95b0JBTzVwODMzb3ArZWs4V3NGZEYrd2E4U1ZvTGh3aEFFQTM3V1RQQmJSSFRjQWV4R3ZKVE5IZlFNTmNmNkJzK1A5ZWJueGZxZVBKV1gya0NaekhnZkV4akNHUUlsR05FSkJzRitFSkV1ZHN2aTFvYmlUNXlLZjlTTllPaldaalR5ZmFIUnVkOUFIb3RZcFdBNE54cUpZMUxmVE5UNUsyd2VpNjBmTWlBVUQ0S2pCZmJtajhiNjhzdGoydzdhRDJxaGZVLzB4eTZacnpIUzJxdWxwVE5sK3d5SXVoY01qQlU2NjFRTm0yY3VQb1BEUllUUkJqcGJSMk1BT1Y5SFp6T1E5OC93L2ZZd2lQSHRmamUwYnYyRmsvQ1BlaEdNT3JzT28vTHQ2N28xWERnVnVpRS9Cd0x4anhLeEtPWEcyTTZkdGkzNnc4T1JkbkdQN1RjZ2tGdWRDOGJVdkE2amxraWtPOCtUdGcySU1YU1l6ZnhEQ1lZTHF4QU1MN2V2bzc3dHRuRi8vMG5Za3RnaEVZbHhITHFhekoydGpFcWJzOWl5U1dYbjJ2NERRQWxHL2FPc1lCaldBVGJ6RHlVWUxnd3NHTGxwS0x0VjZwTkpIVlo0WUhMZi9uZkpCV0lDaDJIZFFFWGk2ZXdsTXI4bGRKNUhZdHY3aFJLTStrYzV3VUQ3N0dVei8xQ0M0Y0tBZ3VIcDlHZEtYTVhtRUl4OHUwUWNYUGpZYSsweW1Vd2oydXR4cWU4aW9vNFgydlkrb1FTai9sRmhsK1NQYk9ZZlNqQmNHRUF3NkhvSzdBNlVuY2lvNThHbXBzdGVlQjFENzlCWDVlSWc0ZjNEcDNPcEdPTE1sL2tmeHgyeHpGcmZqOFZYZ2xIL3FMQkxzb1hOL0VNSmhnc0RDRVlpVmY3MmRXYnBKZHc5Kzg2UmlzTjQ5Zzd1aDNWaEY0UEY2UW1KLzFMcTFnSXU0aG1WQkFNVDl1N3g3MHdKZy9UWWZVNmhMSlJnVkVhRlhaSUgyTXcvbEdDNDBLZGd6SjV0bmdLZkI2UyttUGovMEl3WkhTL25JZzVHUnhzaEJnTlNrU2psWWk1UkFQcnVVbG1jWW1KeS9YbkczSEV4SzZEaUZrWkV4QmpZeUNtVVJTWEJRRHVQb0E1Ym8yYlN5TDZkVS9JRTNpcVVuZ1lObTJnRDE3TjArRzhWcCtRZlNqQmM2Rk13NHJwbFNmMFVFVEZOTmk5RnovRE1XRy8raUVRa0hQYm1OOFMyYlp0NCtiaHpqMG41SjNpQmRGczFsL0FFMUwydUJhTldUT3JpQTV5U0p5RHY3OHI4MUp5ZXJ5NldRQW1HQzMwSVJ0T2MzR2xvcDhOU1AyUFV4Vk5sMS9UcjhxMnh2dng2OFBraXNmZ25mbDhmNng5MGZRVWw0bjVHR3ErWXVqaHk1cXp1MTNDUmlsQ0M0WTExS1JqMFdrZ3RGL3dtUlNVWUx2UWhHRjRtR0FhTFlQUHkyRGcwUGRZejlIN3Nwc3lOOVF4VWZDMGlYZnlGUHRvbmkxbE1HcXhjcENLVVlIaGozUWtHeENLcFcrL21kSUpCQ1lZTFBRb0d2WVFhOXVYZjcxbHA2NkpLbEh0OC9Rc1VSKzBYVFh1QUVneHZyQS9Cb0xmcjJRZkhyL0d6bGVtS0tTTVl1bmtIVFN6RWxMNCtzRmFDZ2ZvK0IrN1dqT3puMkxRc25OY0dpRDFVVHViUG9kbkY1cEdBenBnZ3Z1dFdCdXI2SDd0T3VyaVVpNVFGWFNXS010L0hCTjVFYXlYVXIrdzlNY0VwanZHSzR2Zklid1ZkdzhJcGxBV05CWlM1RHZXaE41WG40ZWRvcWQ4b2lGeXgyd2sraXUvMEl1aWw5S3dUVHNrVDRtbHhEdHJ6Um01WGpQVW8ycFhlNkc0OWdqeHZ3K2ZDaE5HaGNmaHdRQzlqYVRMRUc5eG9HRmVXdmlZK1V1U20yUStjb1hkeTZOWWlOT3d5VlBySEdCaDNKb3p1VUNzZVQ1bVhRZkYvamhnL3hPZlhOZDI4Z2pvMGFIM3BMQWxOTkdkdEw1WWk1NXZRZ2JlajQrNmcvOWdzTXFBT0gzSGFTZndFYlhjRHZtZVRodlVwVGU5Nnk0UXpNNzZRbTlZMFo5RnBkUGNtNnZOcHNBdDlzdHhwTyt2WDRFYkUyMG9UQ2NzR1NvbmwrQi9mNldhL1ZjVjUwYVNQeDd0T0RlRUJ4ZzEweHkrZGtvWGdmQWd4RmlEZTE5QU8zME0vckVRTzl5TG1BNGkvQmIrM2wrYm5rUElITjRQclVMKzErRndCMjJ2aG94MWlmMUc4MVhwYnZBMjVaaksrcjJseFIyNGExZDhSUHpFZnV3b1djc0VXaUpNellqK0kzdytWdEtzaEhnSC9BUFpTbnFqVHpmaTh4aDY3dW5VdVBkckEyOE54WXJIL0F6M3RJNGo1K1RPTEFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCJdLCJleHRlbnNpb25zIjpbImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6IjIxOTRiNDI4OTM5NzQwNDY4ZjM5MDA3YTE2MDVhNDgyIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6dHJ1ZSwidXAiOnRydWV9LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fV19fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMi0wMS0wNiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IklEUHJpbWUgOTMxIEZpZG8iLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDIyMDEwNjAwMiIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIyLTAxLTA2IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjQtMDYtMTgifSx7ImFhZ3VpZCI6IjM5YTU2NDdlLTE4NTMtNDQ2Yy1hMWY2LWE3OWJhZTlmNWJjNyIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiMzlhNTY0N2UtMTg1My00NDZjLWExZjYtYTc5YmFlOWY1YmM3IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IklEbWVsb24gS2V5In0sImRlc2NyaXB0aW9uIjoiSURtZWxvbiBLZXkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MiwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJ2b2ljZXByaW50X2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmFjZXByaW50X2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJsb2NhdGlvbl9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXR0ZXJuX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZXllcHJpbnRfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJoYW5kcHJpbnRfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQnl6Q0NBWEdnQXdJQkFnSUpBTm1NTks2alZwdXVNQW9HQ0NxR1NNNDlCQU1DTUVFeEpEQWlCZ05WQkFvTUcxWmhibU52YzNseklFUmhkR0VnVTJWamRYSnBkSGtnU1c1akxqRVpNQmNHQTFVRUF3d1FWbUZ1WTI5emVYTWdVbTl2ZENCRFFUQWdGdzB5TWpFeU1UUXhPRFF4TURsYUdBOHlNRGN5TVRJd01URTROREV3T1Zvd1FURWtNQ0lHQTFVRUNnd2JWbUZ1WTI5emVYTWdSR0YwWVNCVFpXTjFjbWwwZVNCSmJtTXVNUmt3RndZRFZRUUREQkJXWVc1amIzTjVjeUJTYjI5MElFTkJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVhbFlnRW9wbktTY0FtK2Q5ZjFYcEdCM3pia1pDRDNoWkVLdXhUY2xwQllsajR5cE5SZzBnTVNhN2dlQmdkNm5jazUwWWFWaGR5NzV1SWMyd2JXWDh0Nk5RTUU0d0hRWURWUjBPQkJZRUZPeHlmMGNEczhZbCtWbldTWjF1WUpBS2tGZVZNQjhHQTFVZEl3UVlNQmFBRk94eWYwY0RzOFlsK1ZuV1NaMXVZSkFLa0ZlVk1Bd0dBMVVkRXdRRk1BTUJBZjh3Q2dZSUtvWkl6ajBFQXdJRFNBQXdSUUloQU8yWHVpUkRYeHkvVWtXaHN1WlFZTlVYZU9qMDhBZVRXQURBcVh2Y0EzMGhBaUJpMmNkR2Q2MVBOd0hEVFlqWFBlblBjRDhTMHJGVERuY05XZnMzRS9XRFhBPT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBZlFBQUFIMENBWUFBQURMMXQrS0FBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUJQNlNVUkJWSGdCN2QzZGJselhkUWZ3ZFNqSkxwbzJvTk1HL1VqUjBFVlM5SzdxRTBRQzhvbGV0TG5MWGEwWHFLMG5pUHdFY1o0Z01sQUV2YlF2aWw0Rm9WK2dwWU1VTmZ3aGoyeDltS0VzTVlvbFM1dzU1L1JzeXBQS01rbk5rRE56OWpubjl3TnNVUVI5WVV2bVgydnZ0ZGFPQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFGaVdJaUFqZDM3MG80MjEwNmRmS09yNFZoM0ZSa1M5RVN4QU1YcjBZNzNiL0UrLysrakRlaFRGMm01ZDE3dFZGRmVqYW42K1Z1M0dNOCtNbnJ0OGVUZUFUaEhvWk9ITzJiL2JpRC82MHMrS3YvaWJjOFV6endZdEs0cmRGUGpOSDZ5YTBDOUdkZk5YTmFuZWpEODR2U1hzSVU4Q25kYWxNSytqK3VXMEdpL1cvelNLci81VkNQWk1OV0ZmMVBWVzg4RldXZFZ2UkZHTm52djV6N2NDYUpWQXAzVzN6Lzd0K3djZHJRdjJEbms4NU12NmRaVThySjVBcDFWM3puN2pYSE5YL3N1anZrYXdkOVpXRWNWbUN2am4vdjNmTmdOWUtvRk9xKzZjL2ViUDZvZ1hadmxhd2Q1dHpUZWJ6WWkxeStXWnRUZWE2bjBVd0VJSmRGcDErK3czLzd2NTRldzgvNHhnNzRXdEtOWXVWNmZYWGhmdXNCZ0NuVlkxZ1g2bitXRTlqa0d3OTRQS0hSWkRvTk9xSnREck9DSEIzZytUeVNUZWYrZks1WjNiZDEvOXdlaXR6UURtSXRCcDFTSUNmVXF3ZDFNSzhvOXVmQlRiTjdlam5KU2ZmYmJZTEtLKy9PM1IyNjhHTUJPQlRxdE9jdVIrR01IZUhTbklyMzk0L2JFZy80S3RPdW9MM3gyOVk4NGRua0tnMDZyRFp0QVhRYkRuNis1djc4YVZkNjdFM3NPOW1iNCtWZXVuWXZ6eStkRm9GTUNCQkRxdFdtYWdUd24yZktRZ3YvN0I5ZmpkM2QvRi9PcmRNdXFYdno5Njk1VUF2a0NnMDZwVkJQcVVZRy9QeVlMODg1cHZXcU5Uc1hkZXRRNmZKOUJwMVNvRGZVcXdyODdEQncvamc5RUhjZWZqTzdGb1ZjVEwzeHU5ZlNtQWZRS2RWclVSNkwvM3g4L0YycC84ZVJSZituS3dXS2x6UFZYa3FYTjl1ZXJOMHpHK29Gb0hnVTdMV2czMHFTYlExNzc2TmNHK0FBZVBvQzFYT29JZlIzWGhCNk4zTndNR1RLRFRxaXdDZlVxd0gxc2JRZjRrUi9BTW5VQ25WVmtGK3BSZ244dk85czcrUFhsYlFmNjR6OGJiTGpaSDhKNXVaWEFFT3EzS010Q25CUHVSNXAwbFh4VmQ4QXlWUUtkVldRZjZWQXIyci94WkZGLytTckRZRWJSbEVlb01rVUNuVlowSTlLa3p6MGJSVk94cnozMDFocWdMUWY1NTlXNGRjZDdhV0laQ29OT3FUZ1g2MU1DQ1BjMlNwMzNydDM1eks3cW4zcTJpdXZDOTBYdXZCZlNjUUtkVm5RejBxWjRIKytwbXlaZXZpUEtGYjQvZTgzSWJ2U2JRYVZXbkEzMnFaOEdld3dqYU1naDErazZnMDZwZUJQcFV4NE85cjBIK3VFbFU1eTJnb2E4RU9xM3FWYUJQZFREWTB5eDV1aWZQYlFSdDhlcmQwekgrQjkzdjlKRkFwMVc5RFBTcERnUjc2bHkvK3Y3VitQVGVwekVVUnRyb3E5TUJMTWY0WWRRM3JrUzVjejI3WU8vZUNOcmkxQkVia3pqenMrYkQ4d0U5b2tLblZiMnUwSitVUWNVKzVDRC9vdnFWNzR6ZXVSalFFd0tkVmcwcTBLZGFDUFp1ejVJdlR4WGxEODJvMHhjQ25WWU5NdENuVmhEc1EraGNQeGxOY3ZTSE8zUm95eEx2MkFYNXJJcDE5K24waFFxZFZnMjZRbi9TZ2lyMmF4OWNFK1J6S3FPNitQM1J1NjhFZEpoQXAxVUMvUURIRFBiaHpKSXZnNk4zdXMrUk8rUm16cU40bmV1TDRPaWQ3bE9oMHlvVitndytxOWlMTDMwNWltZWUvZjJuQmZuaU9YcW55d1E2clJMb2MwakIzbFRyRDU3OTQ3aDZWWkF2eC83UisvUE4wZnR1UU1lc0JkQU42U2orTjlkaTg4MWZDZk9sMlQ5Ni8zRkFCd2wwNkpEM0hwU3hVNVp4djY2Q1pTbGUrcytOYjV3TDZCaUJEaDN5cTN1VC9SKzNTNTNzeTNRNkNsVTZuU1BRb1NPdVBpeDM3MVgxL3NjUDZqcHVWNU5nV1lwenFuUzZScUJEUjd6OWFibisrTTl2bFpPb29nNldRNVZPMXdoMDZJQzdaVFhhSG4vKzNyeHN3bnluVktVdmp5cWRiaEhvMEFHL3ZsZHVIUFQ1ZE96K3NGYWxMNHNxblM0UjZKQzVUOG82cmp3OGZDLzdSeHJrbGtpVlRuY0lkTWpjdExQOU1HbUU3VjVWV29TeUpLcDB1a0tnUThiMnEvTzk2cWxoZmJNY3IydVFXeFpWT3QwZzBDRmpOL2VheXJ1dTE1LzJkZU13eHJaTXFuUzZRS0JEeG41OXYzeHFtRS9kTHNzWWE1QmJrdUxjTHpjMlp2NjFnRFlJZE1oVVd2TTZYU1F6aXpURzlwdHE3QzU5U1NieHpJc0JHUlBva0ttbk5jTWQ1RzVWcnR2enZpejFTd0VaRStpUW9jZlh2TTVycHh3SHkxQ3NhNDRqWndJZE12VGttdGQ1cEFwZGc5eHlhSTRqWndJZE1uTjdVc1dUYTE3blpjLzcwcHpWSEVldUJEcGs1cTM3Wlp4VWFwQnJRbDJEM01JVjYrTTQ4eThCR1JMb2tKR25yWG1keDhmVlpOMFkyK0lWRWY4Y2tDR0JEaGs1VG1mN1VXN1k4NzRNanQzSmtrQ0hUQ3l5T3A5S0RYTEcyQmF0V0Mvam1YOEt5SXhBaDB4OHVMZllNSis2TWRtdjB0Mm5MMUFWOWJtQXpBaDB5TVFpbXVFT2t2YTgzNnJHam9nWHlEMDZPUkxva0lGNTE3ek9LKzE1TjhhMlNNWDZmMng4ODJ4QVJnUTZaR0RSelhCUFNtTnMyNlU5NzR0MEp1SmJBUmtSNk5DeVpWZm5VN3YydkM5WWNTNGdJd0lkV25ibHdYTHV6Zzlpei92aUZCcmp5SXhBaHhZdFlzM3JQRktGM2xUcXdTSVU2Nzk0L3ZtdkIyUkNvRU9MbHRYWmZwVDBacm9HdWNXbzZ6UG5BakloMEtFbHkxZ2tNNHV5cnRlOXhyWVlkZFE2M2NtR1FJZVdMTHV6L1NocGpNMmU5NU9yTmNhUkVZRU9MV2lyT3A5S1kyejJ2SjljWWE4N0dSSG8wSUpWZHJZZnhwNzN4YmdmWnpZQ01pRFFvUVh2WlJEb1NWT2xXelp6UXM5RzhmY0JHUkRvc0dLcldpUXppN0VHdVJQVEdFY3VCRHFzV0p2TmNBZTVWVTdzZVQ4WmdVNFdCRHFzVUU3VitWUnFrTnNwVmVrbklOREpna0NIRmNxaEdlNGc2ZGo5UVYyNVR6K1dZbDJuT3prUTZMQWkyM3VyWGZNNnIrM1NtK25IcGRPZEhBaDBXSkZjT3RzUGswYlk3bFdsS3YwWWRMcVRBNEVPSzlEMklwbFozV3lxZEExeTgyditpMjBFdEV5Z3d3cmsxdGwrbUhFVFRjYlk1bGRIdlJIUU1vRU9TOWFWNm56S252ZmpLSFM2MHpxQkRrdVdhMmY3WWRJWVczcGlOWmlIaGtKYUo5Qmh5WEp2aGp2STNhcGN0K2Q5ZG9VN2RESWcwR0dKY2x3a002dWRjaHpNN2hmUFAvLzFnQllKZEZpaXJqVERIU1JWNkJya1psZldwellDV2lUUVlVbTZYSjFQMmZNK3U3Vlkyd2hva1VDSEplbGFNOXhCVW9OY0Urb2E1R2JRL01GSFl4eXRFdWl3QkxtdmVaM0h4OVZrM1JqYjB4VlJDSFJhSmRCaENiclkyWDZVRytWZWNEVExaV2liUUljRjY5b2ltVm1rQmpsamJKQTNnUTRMMXVYTzlxUGNtT3hYNmU3VEQyRVduYllKZEZpZ1BsYm5VMm5QKzYzS0U2dVFLNEVPQzlTSHp2YWpwRDN2eHRnT1ZrZXhFZEFpZ1E0TDFMZG11Q2VsTWJidDBwNTN5SkZBaHdYcHd5S1pXZXphOHc1WkV1aXdJSDF0aGp1SVBlOWZwQ21PdGdsMFdJQ2hWT2RUcVVKdkt2VUE4aUhRWVFINjNneDNrUFJtdWdZNXlJZEFoeFBxMDVyWGVaUjF2ZTQxTnNpSFFJY1Q2bnRuKzFIU0dKczk3NUFIZ1E0bjBPZEZNck5JWTJ6MnZFTWVCRHFjd0pBNjJ3OWp6enZrUWFERE1RMjlPbjljVTZWYk5nTXRFK2h3VEc5OXFqcWZHbXVRZzlZSmREaW1EeDg2Wm43Y3JYSml6enUwU0tERE1ReHRrY3dzVW9QY1RqbmtLcjEyN1VDckJEb2NnMmE0ZzZWajl3ZDFOY2hncTZNUTZMUktvTU9jVk9kSDJ5NjltUTV0RU9nd0o4MXdSMHNqYlBlcWNvalZxZ3FkVmdsMG1FTmE4M3Bub2pwL21wdE5sVDYwQnJuQ0hUb3RFK2d3aHlHdmVaM0h1QWx6WTJ5d1dnSWRabVNSekh5R3R1ZTkrVGNkQmJSSW9NT01kTGJQSjQyeHBTZFdBMWdKZ1E0elVKMGZ6OTJxWEIvS252Y2lpbEZBaXdRNnpFQm4rL0h0bE9NWWdscFRIQzBUNkRBRGExNlBMMVhvUTJpUUsySnRGTkFpZ1E1UFlaSE15UTFoejNzZGc1eTlKeU1DSFo1Q005ekpwUWE1SnRSN0hYampLSDRiMENLQkRrZFFuUy9PeDlWa3ZjOWpiSDhZNDFGQWl3UTZIRUYxdmxnM3lyM29wM3IzL0dqa3lKMVdDWFE0UkZyenFqcGZyTlFnMThjeHR0cklHaGtRNkhDSS96V3F0aFEzSnZ0VmVxK3FXWHZjeVlGQWh3T2tSVExYOW95cUxVUGE4MzZyNnQwVHExc0JMUlBvY0FCMzU4dVY5cnozYVl6TkhuZHlJTkRoQ2RhOExsOGFZOXN1KzdQbjNWSVpjaURRNFFtcTg5WFk3ZEdlOTcyb3JnYTBUS0REWS9icXBuSWN1enRmbGI3c2VmL0gwVHZ1MEdtZFFJZkhwSjN0UnRWV0oxWG9UYVVlWFZacmlDTVRBaDBlNDdoOTlkS2I2UjF2a0JzRlpFQ2d3MmVzZVcxSFdkZnJYWDZOclZDaGt3bUJEcDlSbmJjbmpiRjFkODk3SWRESmdrQ0hzT2ExYldtTXJhdDczblc0a3d1QkRvMWYzVmVkdDYyYmU5N3JYUjN1NUVLZ00zaHBrWXhSdFR3MFZYclhsczBJYzdJaDBCazhkK2Y1R0hldlFVNmdrdzJCenFCWjg1cWZXK1drUTN2ZTF6WURNaUhRR1RUVmVYNVNnOXhPMlkxZmw5UHg4STJBVEFoMEJzdmRlYjdTc2Z1RHVzcjZQajF0aURzL0dua0huV3dJZEFZcmhibFJ0WHh0bDdtL21WNjdQeWNyQXAzQmN0eWV0elRDZHE4cXM2MkFpMWg3TFNBakFwMUJzdWExRzI0MlZYcXVEWEtUZVBobVFFWUVPb09rT3UrR2NSUG1PWTZ4cGZ2ekg0eEdvNENNQ0hRR3g1clhic2x4ejNzUjlXWkFaZ1E2ZzJQTmE3ZWtNYmIweEdwa3BJN2EvVG5aRWVnTWlsRzFicnBibGV2NTdIbXZkNzg3ZXRmOE9ka1I2QXlLdS9QdTJpbkhrWU02aXMyQURBbDBCc09hMTI1TEZYb09EWExOTjAzSDdXUkpvRE1ZcXZQdXkySFArNm5ZZXowZ1F3S2RRWEIzM2crcFFhNEo5ZFlhNUpvL1NyeG0zU3U1RXVnTWdqV3YvZkZ4TlZsdmE0ek5jVHM1RStnTWd1UDJmcmxSN3NYcTFidU8yOG1aUUtmM3JIbnRuOVFndCtveE5zZnQ1RTZnMDN1cTgzNjZNZG12MGxjWXNQWGxnSXdKZEhyTm10ZitTbnZlYjFXcmVXSzErUjAwc2t5RzNBbDBlczJhMTM1TGU5NVhNY1pXUkZ3T3lKeEFwN2VNcXZWZkdtUGJMcGUvNTMwU2U2OEdaRTZnMDF2dXpvZGhkOGw3M3V2bTd0eFRxWFNCUUtlWHJIa2RsdVh1ZWRjTVJ6Y0lkSHBKZFQ0c3FVSnZLdlZZTk0xd2RJbEFwM2ZjblE5VGVqTjkwUTF5elRmSVN3RWRJZERwSFd0ZWg2bXM2L1ZGdnNhV3F2TnZqOTdXREVkbkNIUjZ4M0g3Y0tVeHRrWHRlVmVkMHpVQ25WNng1blhZMGhqYkl2YThxODdwSW9GT3I2ak9XY1NlZDlVNVhTVFE2WTBQSDZyT2VhU3Awbys5YkVaMVRsY0pkSHJqclUvTm5mUEkrQVFOY3FwenVrcWcwd3RHMVhqU3JYSXk5NTUzMVRsZEp0RHBCWGZuUENrMXlPMlU4LzIrVUozVFpRS2R6clBtbGNPa1kvY0hkVFhqZlhxOXFUcW55d1E2bmFjNjV5amI1V3h2cGs5aWZDR2d3d1E2blphcTgydDc3czQ1WEJwaHUxZVZUNm5TcTFlOHFFYlhDWFE2TFRYQzdkVkcxVGphemFaS1A2eEJMalhDVFdMeTA0Q09FK2gwbXVOMlpqRnVZdnV3TWJiVUNLYzZwdzhFT3AxbHpTdnpPR2pQZXgzMVpZMXc5SVZBcDdOVTU4d2pqYkdsSjFhblAwOUg3VTNFdnh6UUV3S2RUckxtbGVPNFc1WHIwejN2ZFpRWEhiWFRKd0tkVHJMbWxlUGFLY2ZOMzZ0TDN4dTk5MXBBandoME9zZWFWMDdpWGxXTnZqTjYxMUU3dlNQUTZSeDM1eHhYWGNlb3FzYm5BM3BJb05NcDFyeHlFbFU5dVhqeG80OUdBVDBrME9rVTFUbkhWZGYxcFlzM2I3bzNwN2NFT3AyaE91ZTRxaXBlZWZIR05mZm05TnJwZ0k3NGNFK1lNNyttTXQ5NjZlYTFpd0U5cDBLbk05NjZMOUNaejZNbXVNa1BBd1pBb05NSjFyd3lyMmxIdXlZNGhrS2cwd21hNFppSE1HZUlCRHJaVTUwekQySE9VQWwwc25mbGdidHpaaVBNR1RLQlR0WnVUeXByWHBtSk1HZm9CRHBaMDluT0xOSm9takJuNkFRNjJiSklobGxVZFZ5dTduOGl6Qms4aTJYSWxzNTJuaWF0YzMzSkJqallKOURKa3VxY285UVJ1MVUxdVdBM08vdy9nVTZXckhubE1JL3V5eWMvZE1RT255ZlF5WkptT0E2U0hsbXhseDBPSnRCcFdiMys1R2Nza3VGSmFTU3RxT29YWHZybzJoc0JIRWlnMDdZdkJMcG1PQjZYR3QrcSs1Lzg5T0x1N200QWh4TG9aRVYxemxRZDlXWlZUaTY0SzRmWkNIU3lZczByS2NpTE1pNjk2SGdkNWlMUXljYjJuald2UTVidXlhT29McjE0L2ZxckFjeE5vTk95WXRSOEs5OUlINzJuT2gra1ZKRTNmNy84NGcxQkRpY2gwR2xadmQvb1pKSE04RGhhaDhVUzZMU3FpTmlxSTg3cWJCK0d0T0d0T1Z0L1JkYzZMSjVBcDIxYnF2TitTeUZlVkhHNUNmTFhWT093UEVWQWkrNmMzVmovcjArSzkvL24wOGw2MEJ2TmNmcFdVUldiS2NUL1ZZakRTZ2gwV3ZlVHIzM3RwVk94OXBPZ3M2WUJYdGZWVnZYZzN1dU8wMkgxQkRwWitPbGYvdldQaTZLK0ZHUnQvdzQ4NmxFUnhWWmROQ0UraWEzeXdTZHZDbkJvbjBBbkcwMmxmdlpVdmZaaUV4Um5tOEE0RzZ6RW8wYTFlQlRJUll5SzRyT2ZWN0ZibjZwSE1hbDNxMU5uM294N3V5UEJEUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCRDlIL0VEam1LaWxKYmFnQUFBQUJKUlU1RXJrSmdnZz09IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiRklET18yXzAiXSwiZXh0ZW5zaW9ucyI6WyJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiIzOWE1NjQ3ZTE4NTM0NDZjYTFmNmE3OWJhZTlmNWJjNyIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJ1cCI6dHJ1ZSwidXYiOnRydWV9LCJtYXhNc2dTaXplIjoyMDQ4fX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMTktMDItMTMiLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IlZhbmNvc3lzIEFuZHJvaWQgQXV0aGVudGljYXRvciIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMTkwMTA5MDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjAuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4wLjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMTktMDItMTMifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDE5LTAyLTEzIn0seyJhYWd1aWQiOiI2NjRkOWY2Ny04NGEyLTQxMmEtOWZmNy1iNGY3ZDhlZTZkMDUiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjY2NGQ5ZjY3LTg0YTItNDEyYS05ZmY3LWI0ZjdkOGVlNmQwNSIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJPcGVuU0sgYXV0aGVudGljYXRvciJ9LCJkZXNjcmlwdGlvbiI6Ik9wZW5TSyBhdXRoZW50aWNhdG9yIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3IiwiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX3N1cnJvZ2F0ZSJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUJHRENCd0FJSkFNOEEzZWhkcGlGdU1Bb0dDQ3FHU000OUJBTUNNQlF4RWpBUUJnTlZCQU1NQ1U5d1pXNVRTeUJEUVRBZ0Z3MHlNREE1TVRReE1qRXlOREJhR0E4eU1EZ3dNRGt4TkRFeU1USTBNRm93RkRFU01CQUdBMVVFQXd3SlQzQmxibE5MSUVOQk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRXMvNTRYL0k4eWRtWmdGVkVKNHlLbmxBNHVJSnJhbUFRY2MzZG8yeER6UkdjeERUenR0SWJkazRYWDJyejZhWkVUZVh0N0U4KzdITUxJNGtodUpwVVhqQUtCZ2dxaGtqT1BRUURBZ05IQURCRUFpQWhuVExYaXQ0R0pOSHFoOGgxREhOYjkwVjVPVzV2Um1PbDZsdkUvY1B6OVFJZ2IzZDNodUUzWWgweVEvSFF1SW82ZEhNK0YvNHRlYXpoSlpGMTVnWUx3Q2M9Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUVBQUFBQkFDQVlBQUFDcWFYSGVBQUFBQVhOU1IwSUFyczRjNlFBQUFFUmxXRWxtVFUwQUtnQUFBQWdBQVlkcEFBUUFBQUFCQUFBQUdnQUFBQUFBQTZBQkFBTUFBQUFCQUFFQUFLQUNBQVFBQUFBQkFBQUFRS0FEQUFRQUFBQUJBQUFBUUFBQUFBQkdVVUt3QUFBSVEwbEVRVlI0QWUxYUNWU1VWUlQra0dWWUJCUUZCWXpZRkpGTkxkUFFWa3N6ODVRbnN6Uk5iYVBOekRJME9hSUgyN1ZVVW5PcHpBcVhNSk5Jc3pLVFVFUVdSWEJuRXhSaVVZRVVCQVRzM2xmekp3M0xEUC9NTU9mTVBJL00rKzk3Ly8vdXZlKysrOTc5N2pPN1RnVkdYTG9Zc2V4Q2RKTUNUQlpnNUJvd0xRRWpOd0NZTE1Ca0FVYXVBZE1TTUhJRGdFVm5LcUM4L0FLT1poMkRvNk1EQWdNR3dNYmFXdS9zNkZVQlRVMU55TW5OUThiUlRQcWZoZUkvU3lTQnpjM040ZGV2THdhR0JHRmdjQkJjWEp5bE5sMVd6SFFkRFZiWDFDRHIySEVjSllFejZiZTZ1a1l0ZVZ4ZGV3dEZzRUw2K3ZxZ1N4ZmR1Q3VkS2FDZ3NCQ2J0MjdEbWV4YzhNekxLYmEydGdnT0NrRFlzek5nWm1ZbTUxTXE3K3BHclRSTWNYRUpUcDNPbGkwOGMxeERWcFI4S0JXNmdDNTBwZ0FWVlJzb1FXY0tjSGQzdzRqaHQ2Tjc5MjRHS3ZvL2JHbDFGK0MxZnU3OGVXSCtUZGViY09lSVVFeWZPaGtIazFPd0pYWTdPY0JxZzFPRzFoUndJQ2taMzhmRjQ4TEZTODJFZEhMcWprbVBUOERpaFJGNGI4bkg0TDNma0lyc0pjQ082Y3V2WXJEK2k0MHF3ck9nbHk1VllOV242NUdVZkFqaGI3d0dLeXNyUTVKZmZqaThhL2V2MlBmSC9uYUYyclk5am1hL0hBK1BHOXR1WDMxMmtMVUVybHk1Z3JqNEg5WG1OM2I3RGl4NEt4ejMzbjJIMnUrY3pzNUI5TW8xc0xTMDFNbGhTSllDMGc1bm9MNytXak5oK05BeWRzeG9NblZML0VUV2NhbWlRbXJQenk5QVpXVVYyQytvVy9oWTdLVERuVVNXRHlnb0tGU1JZL3BUazBrQm8zRC95SHZ3eW92UHE3U1hscFdyME5vaS9QWjdndkF0RGc0T2JYWHJjSnNzQmRUVjE2c003TzdtSnRGYURtaFVFMUhGeFgvU3FmR005SjZ5a3B5U2ltODJiUldQSGpmMVVaSzEraXRMQVQxYU1PV2tnNGNrQmhNU1ZaMmp1NXVyMU00N3lPNWY5aUF5NmwxOHNIUTU5dEpzSzB2aWdZTll1MzZEZFB6MTh2SlVObW4xVjVZUDRCZytmdWZ1Wmd6NStuaEx6elkyTmxLZEt3RUQrcU9KaE43eHcwNGgyUEVUSjBWNHJPejBWY3dXbkRoMVdnUThxV21IbFdUeEhCSWNLRDFyc3lKTEFSeS9lM3Q1SWkvL3JPREp4OXNMZ3dZR1MvemRlc3NneEd6K0ZvMk5qV0wvZjJMaUJQeElDdHV6ZDUvVTUvK1Z0UFFqL3lmQjM2OGZ1ams2cXRDMVFaQzFCSmlCWjUrZUJ0dC9aL3F4Ung5cHhwT0R2VDJHM3o0VUZoWVdDSHR1Qmk1ZnZneDJhcHFXVWFOR2F2cUsydjIxZ2djVUZKNFRoNkZwVXlhcERIemg0a1hVMXRhSzdXL2w2bldvcmF0VDZkTVd3Zk5tRHl4YThGWmJYV1MxYVVVQjdYR1FrWm1GNWRHcjIrdW0wczdneDhLSXVmRDB2Rm1sVFZzRTJVdEFIVWFDQXdNSTF2clBPYXJ6RHZjWk4zYU1Ub1huTWZTaUFNYnpYbmorR1hUcnByNGpHendvQk9NZmZvaDUxR25SaXdKWWdoNU9UcGozNXV0cWVmT2d3QUdFL3oydGRmeXZKVTNxeFFmY09IQVpIWVUvV2IyV2dKT2lHOGxTZlhqb01NeDRhZ3J0SE9ZU1RaY1Z2U3VBaGFtL2RnMmJ0OFRpOTRSRVNUWWJHMnRNZlhJU1FvZmRKdEgwVWVrVUJTZ0ZZK2c4OXJzNHVMbjF4cmdIeDhEZXZxdXlTVysvbmFvQXZVblp4a0I2YzRKdDhOQ3BUU1lGZEtyNkRXRHdEbHRBUTBNampoMC9pZlFqR1dCc1VGZmxmRkVST0RUT3l6c3JEVkZSVVluc25GenB1WjZBbVJNblQzVUljdTlRT013QnpvY2ZyU0RCcTJGSEdHQmxWUlZlQ251R1F1RVFpU2x0VkRacy9BYUhVdExnNFhHVFNMajA4L1hGckprdklqWDlNSUd4dTdCcXhWS0JLekFrbjV1WFQzSERQSTJIN1pBQ05tMk9GWmNab2lMbnc1b3VOVERhdS83empWaTI5SDFjcmIyS1Nwb2hPenM3bktWdGpwbm1DeERLd3RnQnp5QmpDVjI3MmxHSWZBV2xaV1hvNWVLQ016azU2RU9RV3E5ZUxpZ2ltQ3doOFFEbXo1MkRmbjE5VUZwYWhya1JDOG5xVGlnL0pYN2o0bmNpTStzNEl1Yk5hVFpPczA1dFBHaXNBQVkzK0ZiSDFNbVBDK0g1MjZQdkg0bWR1MzZtVkhpMlNJVEUwQ0hIeGJrbmVKbjhSUmpBNGtVUjRpajgrWWF2eFpMcDJjTkpvTVZSa1JISXpjOFgwRmNmeWlVMk5WMG53WXNvL0owdmhPRkxFeW1wYVhCM2R4VktXZmRwTkN5SVZrTEs0SktTbGk0czRkV1h3OUJSekZCakg4RDVQVmJDallFTkF4OGM4RlJWL1NVWTR6OEw1b2ZqbmFnRlFwQjlkT0xqbVU4OGtJUklva2RSbXN5MWQyLzhzbWV2Nk4vUTBJRFhYM3VGNkN5NG8xalAvRTFHbFk5a1pPTFYyZUdJWHJVR1pXUXB5b3NTZFlRcmZFYW03MGhvY2YvK2Z0SzRtbFkwVm9CQzhjODludHJhLzRBTkZvQVRvd3ByaFJpZkVTQ0ZRZ0dlUVI4dlR6THhjaFFTYU1MeC9TY0Vpa1JFTGhZbVhrYVpJalA2eDRVRjVzTG9FanMxTGd5dkxYbC9NZWJNbm9sR3NxYTMzMTBpbGcrMzhaaDMzVEVDMStsZnpML0lNZE0xTFJvdkFZWENTcGdiejh5d29VUEVlTXAxNmV2dFRldnhXRE1lS2lnUndpYlBDdUhabXpYekJWaFpXZ25HclNqYmMvS1VLaHpPSDJCSW5CTXJiRW4rTk1QZVhsNEllM21XQktKeUF1YkpTUlBGelpHUGxxOUVDRjJsR1hMTDRHWmpxL09nc1FMNG94TW5qTWV5NkZWWTk1azVuSjE3Q0pDVC9ZRHlMZ0RmNk5oRWZvQURITjZld3QrWUpZQU5QdXN6enMrTUpsSEsvQjVLa1hVeGE5a0kvZjM4c0dYcmQxaTZMQnBCZ1FHMDdlVUo2L0QyOWtUNjRRd3BWT2Eya2ZmZUpSSzBQQUZLSHRRUm52dVlMNktpYm1kbFAwNTQ4T1VsOXN4OEJ1QXMwQU9qN3hQTm5DM0twVDJiRVdFT2VSOThZSlRZSGkxcFdReTVkVEJLU2tweGx2b004UGNqd0hTWWdNbDV5ZkFkSUM0MU5WZmhSUkFZTzdYUTBLR0VKOWFKSmNST2RkcVV5WER1eWM2MUFUYTJOZ2p3N3kvZVlkU1ljVWN1Ympma0hRU2huVDlhRDRZUy90aVA3VHZpc2VMakQ5b1oyakNhVzdZL0dielprelB6OE5CTkdrc0dXNjIrcW5VTGFIVWtBMjNRdWdVWXFKeXRzbVZTUUt1cU1aSUdrd1VZeVVTM0txYkpBbHBWalpFMG1DekFTQ2E2VlRIL0Jub3kvMEtGN3crT0FBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJGSURPXzJfMCIsIlUyRl9WMiJdLCJleHRlbnNpb25zIjpbImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6IjY2NGQ5ZjY3ODRhMjQxMmE5ZmY3YjRmN2Q4ZWU2ZDA1Iiwib3B0aW9ucyI6eyJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWV9LCJtYXhNc2dTaXplIjoxMDI0LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxXX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIxLTAyLTA5IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiT3BlblNLIGF1dGhlbnRpY2F0b3IiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDIxMDIwOTAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4yIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjMifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjEtMDItMDkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MX1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNC0wMi0wOCJ9LHsiYWFndWlkIjoiMzc4OWRhOTEtZjk0My00NmJjLTk1YzMtNTBlYTIwMTJmMDNhIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiIzNzg5ZGE5MS1mOTQzLTQ2YmMtOTVjMy01MGVhMjAxMmYwM2EiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiTkVPV0FWRSBXaW5rZW8gRklETzIifSwiZGVzY3JpcHRpb24iOiJORU9XQVZFIFdpbmtlbyBGSURPMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQ0hUQ0NBY0tnQXdJQkFnSUNkZFV3Q2dZSUtvWkl6ajBFQXdJd2V6RUxNQWtHQTFVRUJoTUNSbEl4RXpBUkJnTlZCQW9UQ2tObGNuUkZkWEp2Y0dVeEZ6QVZCZ05WQkFzVERqQXdNRElnTkRNME1qQXlNVGd3TVNRd0lnWURWUVFERXh0RFpYSjBSWFZ5YjNCbElFVnNiR2x3ZEdsaklGSnZiM1FnUTBFeEdEQVdCZ05WQkdFVEQwNVVVa1pTTFRRek5ESXdNakU0TURBZUZ3MHhPREF4TWpJeU16QXdNREJhRncweU9EQXhNakl5TXpBd01EQmFNSHN4Q3pBSkJnTlZCQVlUQWtaU01STXdFUVlEVlFRS0V3cERaWEowUlhWeWIzQmxNUmN3RlFZRFZRUUxFdzR3TURBeUlEUXpOREl3TWpFNE1ERWtNQ0lHQTFVRUF4TWJRMlZ5ZEVWMWNtOXdaU0JGYkd4cGNIUnBZeUJTYjI5MElFTkJNUmd3RmdZRFZRUmhFdzlPVkZKR1VpMDBNelF5TURJeE9EQXdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBVHoyak5hS09LL01LZFcyZm1lMXRxNkdSRXVQdXVLVzlIZ1dZZ01Scmp2WlVUT3FMQU5KM01kNUhxdjFFTjF6TWQ0bFd0eWZ6UmxhN3J2NUFSQm9Pb1Rvell3TkRBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUJFR0ExVWREZ1FLQkFoTm5UVzBhNEU4dWpBT0JnTlZIUThCQWY4RUJBTUNBUVl3Q2dZSUtvWkl6ajBFQXdJRFNRQXdSZ0loQU1yaGI4U21mTkxlTE5nYUFWbVE2QU9NaUxOTFZIWDBrRlVPODBDblQzOEVBaUVBek5BZ3Y0ZEgrSERoWlNnWldKaWFQdS9uZlpUZXVHeTRNeWRQTXE1dXJzND0iLCJNSUlFT0RDQ0E5MmdBd0lCQWdJREFJbkJNQW9HQ0NxR1NNNDlCQU1DTUhzeEN6QUpCZ05WQkFZVEFrWlNNUk13RVFZRFZRUUtFd3BEWlhKMFJYVnliM0JsTVJjd0ZRWURWUVFMRXc0d01EQXlJRFF6TkRJd01qRTRNREVrTUNJR0ExVUVBeE1iUTJWeWRFVjFjbTl3WlNCRmJHeHBjSFJwWXlCU2IyOTBJRU5CTVJnd0ZnWURWUVJoRXc5T1ZGSkdVaTAwTXpReU1ESXhPREF3SGhjTk1UZ3dNakl5TWpNd01EQXdXaGNOTWpnd01USXhNak13TURBd1dqQjBNUXN3Q1FZRFZRUUdFd0pHVWpFVE1CRUdBMVVFQ2hNS1EyVnlkRVYxY205d1pURVhNQlVHQTFVRUN4TU9NREF3TWlBME16UXlNREl4T0RBeEhUQWJCZ05WQkFNVEZFTmxjblJGZFhKdmNHVWdTV1JsWTNseklFTkJNUmd3RmdZRFZRUmhFdzlPVkZKR1VpMDBNelF5TURJeE9EQXdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBU0xWTCsxU1RKdmFFUk81V0NSK2pHY0F4THZtUEJEaVpZMU5nRkZJaHBYNk9BWkFwUVltdDZ4U2g3NFN3TSttamduc1NFY2M0QTJVZjEzOUZnWjRycFlvNElDVlRDQ0FsRXdFd1lEVlIwakJBd3dDb0FJVFowMXRHdUJQTG93U2dZSUt3WUJCUVVIQVFFRVBqQThNRG9HQ0NzR0FRVUZCekFDaGk1b2RIUndPaTh2ZDNkM0xtTmxjblJsZFhKdmNHVXVabkl2Y21WbVpYSmxibU5sTDJWalgzSnZiM1F1WTNKME1GTUdBMVVkSUFSTU1Fb3dTQVlKS29GNkFXa3BBUUVBTURzd09RWUlLd1lCQlFVSEFnRVdMV2gwZEhCek9pOHZkM2QzTG1ObGNuUmxkWEp2Y0dVdVpuSXZZMmhoYVc1bExXUmxMV052Ym1acFlXNWpaVENDQVdBR0ExVWRId1NDQVZjd2dnRlRNRCtnUGFBN2hqbG9kSFJ3T2k4dmQzZDNMbU5sY25SbGRYSnZjR1V1Wm5JdmNtVm1aWEpsYm1ObEwyTmxjblJsZFhKdmNHVmZaV05mY205dmRDNWpjbXd3Z1lhZ2dZT2dnWUNHZm14a1lYQTZMeTlzWTNJeExtTmxjblJsZFhKdmNHVXVabkl2WTI0OVEyVnlkRVYxY205d1pTVXlNRVZzYkdsd2RHbGpKVEl3VW05dmRDVXlNRU5CTEc5MVBUQXdNRElsTWpBME16UXlNREl4T0RBc2J6MURaWEowUlhWeWIzQmxMR005UmxJL1kyVnlkR2xtYVdOaGRHVlNaWFp2WTJGMGFXOXVUR2x6ZERDQmhxQ0JnNkNCZ0laK2JHUmhjRG92TDJ4amNqSXVZMlZ5ZEdWMWNtOXdaUzVtY2k5amJqMURaWEowUlhWeWIzQmxKVEl3Uld4c2FYQjBhV01sTWpCU2IyOTBKVEl3UTBFc2IzVTlNREF3TWlVeU1EUXpOREl3TWpFNE1DeHZQVU5sY25SRmRYSnZjR1VzWXoxR1VqOWpaWEowYVdacFkyRjBaVkpsZG05allYUnBiMjVNYVhOME1CRUdBMVVkRGdRS0JBaERhUWJoVEZ0amNqQU9CZ05WSFE4QkFmOEVCQU1DQVFZd0VnWURWUjBUQVFIL0JBZ3dCZ0VCL3dJQkFEQUtCZ2dxaGtqT1BRUURBZ05KQURCR0FpRUFvRWVwSE1DNVg5akJLYUdwaGNLamlkaGlOK1puejd2M1MzaGMzMS9BdW5zQ0lRREtxb2dLMlNaT1haY3Z2SENCNlVRU2FBMG5MbjRSVXd5MWd1RGl2Ylpid2c9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFnQ0FJQUFBRDhHTzJqQUFBQ3FVbEVRVlJJeDJQOC8vOC9BeTBCRXdPTndhZ0ZwRmx3OGNLRmlySXlSM3Q3UzFPejBLRGdCZlBtLy96NWszaXp2bjM5bHArVGEydGx0V1RSSW9Ub2Z4aFl0WEtsbHBxNnNyd0NBaWtvUklWSHZIMzc5ajl4NE5TcFUwQXRRSTFXNWhad1FhZ1B6cDg3VjExWmlYQXZJeGo5WnpoNTRrUk5aUldSUHZqOTZ4Y0RPTTB6TVRLaUI5Rzh1WFAvL2ZzSE5GUkFTTEMrc1hIbTdObHVidTRRbTNidDNMbHU3VnBpTEdDRW1jdUlhY0daVTZmQjRjV1FYMUFRR3gvbjdPSXlhZW9VYlYwZGlJdmFtbHVlUFh0R1VTVC8rZzMySFNPRGhvWUdSSVNGaGFXcHBZV1ZsUlVvK09Iamg2YjZCb29zZ0h2cXo1OC9jRGw5ZmYzTTdDd0llOCtlM2F0WHJxUWdtZUlva0RLenMvWDE5RUd5L3hrNk96b2ZQM3BFV1ViRHNBWVlSQzN0YlJ3Y0hFRDJoL2Z2NjJwcUNSZU9qQ1RtWkUwdHJaeThYQWo3OEtGRHk1WXVKZDUwVkFzWWNlcEtUVTgzTmpXQnFPbnU3SHh3L3dFK08vN2pzZ0MzMTVtWm1SdWJtOW5aMllGcXZueiswbEJmaHpPZy9xTzdsUW0vQitFQW1Id0xpb29nQ280Y09yeGswV0lpUFVFZ2twRkJVbkt5bVprNWhOM1QxWFgzemgxaVlvS0pjRFRCQTRxRnVibXRsWXViQzhqKyt2VnJUVlUxcUhRaHpRZU1CSHlockt4Y1dGd01VWG42MUtuNWMrZFN2OEpKU0V5MHRyR0dzQ2YwOTkrNmRRc3V4Y0xDQ3JIN1A1SXJTWWdEZUtGUzM5VEV4OHNIWkgvLzlyMnVHaEZRTjY1ZmgyVlBOb3FxVENVbHBlS3lVbWd4ZlBwTVNXRVJNQU11WDdhc3Y3Y1hJcWlscllYd0ZyeGVnL3FPdUdaU2RFek0zdDE3RGgwNkNQVDBwazBiTjIzY0NJOUZZS1pKejhoRTk4SGZmMzhoRERZMmRpTDkwZEhkcGF1cml4YXdyQ3lzcmUzdHVucTZpTFRYME5BQVRvSXNUeDQvdG5kd2lJeU9BdFlFeEZqQXpjM3Q0K3NMSkw5OS9Rb3NFMFZGUmUzczdSdGJtb0dWRlVxY2pUWWRoNzhGQUloQkxsTmQ3anUxQUFBQUFFbEZUa1N1UW1DQyIsInN1cHBvcnRlZEV4dGVuc2lvbnMiOlt7ImlkIjoiaG1hYy1zZWNyZXQiLCJmYWlsX2lmX3Vua25vd24iOmZhbHNlfV0sImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIl0sImV4dGVuc2lvbnMiOlsiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiMzc4OWRhOTFmOTQzNDZiYzk1YzM1MGVhMjAxMmYwM2EiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjp0cnVlLCJ1cCI6dHJ1ZX0sIm1heE1zZ1NpemUiOjIwNDgsInBpblV2QXV0aFByb3RvY29scyI6WzFdLCJ0cmFuc3BvcnRzIjpbInVzYiJdLCJmaXJtd2FyZVZlcnNpb24iOjJ9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiTk9UX0ZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjEtMDktMjEifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIxLTA5LTIxIn0seyJhYWd1aWQiOiJmYTJiOTlkYy05ZTM5LTQyNTctOGY5Mi00YTMwZDIzYzQxMTgiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6ImZhMmI5OWRjLTllMzktNDI1Ny04ZjkyLTRhMzBkMjNjNDExOCIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IDUgU2VyaWVzIHdpdGggTkZDIn0sImRlc2NyaXB0aW9uIjoiWXViaUtleSA1IFNlcmllcyB3aXRoIE5GQyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjo1MDEwMCwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbImVkMjU1MTlfZWRkc2Ffc2hhNTEyX3JhdyIsInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlESGpDQ0FnYWdBd0lCQWdJRUcwQlQ5ekFOQmdrcWhraUc5dzBCQVFzRkFEQXVNU3d3S2dZRFZRUURFeU5aZFdKcFkyOGdWVEpHSUZKdmIzUWdRMEVnVTJWeWFXRnNJRFExTnpJd01EWXpNVEFnRncweE5EQTRNREV3TURBd01EQmFHQTh5TURVd01Ea3dOREF3TURBd01Gb3dMakVzTUNvR0ExVUVBeE1qV1hWaWFXTnZJRlV5UmlCU2IyOTBJRU5CSUZObGNtbGhiQ0EwTlRjeU1EQTJNekV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRQy9qd1l1aEJWbHFhaVlXRU1zcldGaXNnSitQdE05MWVTcnBJNFRLN1U1M213Q0lhd1NESHk4dlVtazVOMktBajlhYnZUOU5QNVNNUzFoUWkzdXN4b1lHb25YUWdmTzZaWHlVQTlhK0tBa3FkRm5Cbmx5dWdTZUNPZXA4RWRaRmZzYVJGdE1qa3d6NUdjejJQeTR2SVl2Q2RNSFB0d2F6MGJWdXpuZXVlSUV6NlRuUWpFNjNSZHQyemJ3bmVid1RHNVp5YmVXU3dienkrQkozNFpIY1VoUEFZODl5SlFYdUUwSXpNWkZjRUJiUE5SYldFQ1JLZ2pxLy9xVDlubURPRlZsU1JDdDJ3aXFQU3psdXduK3Yrc3VRRUJzVWpUR01FZDI1dEtYWFRrTlcyMXdJV2J4ZVN5VW9UWHdMdkdTNnhsd1FTZ05wazJxWFl3ZjhpWGc3VldaQWdNQkFBR2pRakJBTUIwR0ExVWREZ1FXQkJRZ0l2ejBiTkdKaGpncFRva3N5S3BQOXh2OW9EQVBCZ05WSFJNRUNEQUdBUUgvQWdFQU1BNEdBMVVkRHdFQi93UUVBd0lCQmpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQWp2anVPTURTYStKWEZDTHlCS3N5Y1h0QlZac0o0VWUzTGJhRXNQWTRNWU4vaElRNVpNNXA3RWpmY25NRzRDdFlrTnNmTkhjMEFoQkxkcTQ1cm5UODdxLzZPM3ZVRXROTWFmYmhVNmt0aFg3WSs5WEZOOU5wbVl4citla1ZZNXhPeGk4aDlKRElnb01QNFZCMXVTMGF1bkwxSUdxck5vb0w5bW1Gbkwya0xWVmVlNi9WUjZDNStLU1RDTUNXcHBNdUpJWklJMnY5bzRka29aOFk3UVJqUWxMZll6ZDNxR3RLYnc3eGFGMVVzRy81eFViL0J0d2IyWDJnNElucGlCL3l0LzNDcFFYcGlXWC9LNG1CdlVLaUduMDVac3FlWTFneDRnMHhMQnFjVTlwc215UHpLK1ZzZ3cyamVSUTVKbEtEeXFFMGhlYmZDMXR2RnUwQ0NySkZjdz09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWZDQVlBQUFDR1ZzK01BQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBSFlZQUFCMkdBVjJpRTRFQUFBYk5TVVJCVkZoSHBWZDdUTlYxRkQvM2Q1OXdlUVNJZ1M5QVFBWGNGTEFRWmk5ZnBlVnoxdFkvV1RacjVXeHBjN1c1a25MYTVqSTNaODVzclMybk0yc2p0V3daUzdJVUg0SDR4Q25FUXg0REFaRjc0Vjd1czg4NXY5L2xJbkJ2VkovQjRQdjludS81bnUvNW52TTU1NmZ6QS9RdjBIYi9JclgzVkZLUG80NWNubTRpblVJV1l3TEZSbVpRVXV3akZHL04xaVJIaDFFWjBOUlZSdWRxdDFCZCsyblNLeVMvT2h5czArbGszZS8za1E5cXZENFpVdGE0VlZTVXVZMGVpcHlpVGhBZm9jb09SVmdEdXV3M3FLUmlBZDNyYmNFdGpUallJb2Y2V2FIc0NtelZQV0NNeCtjZ2g4dExxV01LYU1Xc1VqTHFvMlJ0SklRMG9Pem1lcnBRdTRlc1pnc09Oa0d4SDdkMGtkdlRUMTdzNE9NVTdWSThaaGpnR2FNK0FxOWlFTnU4UGlmMXVkejA3TXd2S1dmOEdsVm9DRVkwNFBDNVdkVGFYWUZiUjh2TnZMNSszS2dmYjV4Tk15YTlSYW1KaXluYU1sR1RWdEZscjZiYTl1K3BxbkVYNHVNdVJSZ2pTWUVock43dXRGRmU2bHFhbDdOZmt3NWltQUdIeW5QcGJrOFZtWTB4c3RucHRsRkNWQ1l0elR1Qk44M1FwTUxqVHRldmRQelNVbko3ZThta2p4WjM5ZlhiS0RmbGRacWJ2VStUVWdHbkJWRjZmUTJpUEhnNFcxNlVXVXd2emJrMTZzTVpFK1BuMHB2ejdKU2V1QXllczhsY3BDbWFLdW8vcCtxV3IyVWN3SUFIV3J2UDBZRXpoWEF0TEFic3NIaHA3aUdhbXZ5aWpQOHJ5cXJYVVdYOVhvb3d4eUF1Zk5CcnA0M1BPQkZYWmxrZjhNRFJpcWNweW93QXdwdXoyeCtmV3Z6L0R0ZGU5c21zenlndGNSNkMxd2JkekJsNk9scTVXTllZNG9HYXRoSk1ya1RFeDBqQVJTSEFWcys1cllrUU5YYitRZ2ZQTHNRNmdYeUluc3JlUWZtcG03UlZGWWZMODZuMWZpVU9rWXZTaGtVUHh2YnVrem95NksxaWhNMWhvM1h6VzZFdlNmWEErZHBpV0dhV2QrZG9Yekx6bUd3S1lGTENBc1JBbFBCQWhNbENGWFU3dEJVVlByOEhnVmNKSFdxK0YwMHBscitETVRkclA0enZ4WTExa05NaHhUK1NlVEdnK2Q0VjVMUUppdHlVR0pOQjhWRlpzamdZQlpNL0lJL1hDVGtqMHF5RE9wRjJBVlExN0NJalVwL0RuVDFVa0w1RjVnZGorc1Mxd2cxZ0UzZ2lnbTYwZkNYelNuUFhieUFQYklYditJRHBFMTZUaGFISVM5c2t5aGxtTUU1RjNjZnFBS2hxMkMwRTVQSDFnWWFYYUxQRGtaRzBIREpPbktXSHA1MUkwejVTT3V4OGUxV0F1WnpkSFFyVGtwOFRtalhvSStsYTB3R1pzenVicWJPM2lmUTZBL1c3dlZTWXNWM21SMEpLd2tLYzRXSGlCa21SOEkzQ0NnSTg3b09MNHF6VDVQK1JVSkJlakVPZ0FQSzhoWVB6YXRNK2VJVHAySU85eVRRbWVyb21QUnh4MXF4QWNzaWxlL3ViU2VFYmNXUUdZRUNnaGNMWTJIeUtqb2dqSDI1aE1wanBVdjFPdWdsaTRlaDJlUncwTzMyYkpqa3l1Q2dOemcwdnpsWU1TaVNzMHVvbzRNRzdoTU9qQ0VhWDF5RkUwblN2akJ6dVRuRXBLODZaOElvcUZBSXVidzhrZzlBckVhUkVXU1pJK2pINFhicDZnOUU5RW5KVDNvYVJ6RE4rTVVKQlFESG41NmE4b1VtRUJ1c094QnMvTjUrdEpFYlBrQUZEajhVR3ZPcy9JV3ZjU2dsR0JodlM3L0ZUWWZwV0dZZERZOGZQQXhXU0EzNXNUQzRwNCtMbTRBYXFJb1BlUXRmdWZLNkpoMFpoeGxic1VYT1NtWE5pZkQ1WlRBa3lEb2ZiYmNjbHhuQThXTkFxeENiUk55a2hYeFFwYUR3NjdmWFVZYnNpRzBLaHR2Mm9lSXZoOHJoUU1ZT2NFQXFYRy9lSSt6bmdPYzV5eHI4cTgySUFNMWMvRkxGT3BscXU1ZUZRWHJNWnpHY1ZDalliTFdHNUk0QlQxZXVScmxieHROT3RNaXREREVoTFhJSXluQUF2dU9FV0UzWDNOZEFmdDk0VmdhRzQyWElRdDBaWDZQZUNFL3FRRmU5cks2SHg3WVU1MEt2SDdmVzRmUytxN0tLQkp4c2dnQlg1cFNBR2gxaklyVmg1elE2dzNSZmFhaEJYbS9hQ2JDWlRqQ1VGVVR5V1pxVzlwNjJNakpQWFZxT3JQZ01PNE52NzRHa2Yrb3dmdE5WQkRRbmpGSnFIU3cxN3BYdmhXVzVLWnFlL1E0OU4vVVNUQ0FWV29RWEZJSEJIWFhlM0ZQclVEc3VHRG10Ri9oSEtUSHBla3hoaUFPUEkrU0pxNlM2SEY0STlZV3prQkpUbzQ2aVVNeldwOFBpci9SaWR1THhLWXNTa3NWOHZMbE9RdmhHWDJZbFIwT0JoQmpDK3UvZ0VjdlkwQXBLN1lrNDFOeGpQU1FuV0ZIVEY2NlVyamdldkI4Q3U1YStsMnZZU1JQdHVWRG83M2hoZE1TSG5VWDd0VGpzVlpHeEFsL1dwdGlPSUVRMWduTDI5bVg2L3RSMXRtbGtZajhXNFgrQ1NqV2NVREdZMU5wUy9DN2hTS3FpTUxNL2wyUW1TV1o3M0RkeitnaW84QkNFTllQUTQ2cW5rendYVWJxdkJreGpVUXNXZlpGZ2J1bzNyQWYrd043ak9POTAreW54NFBpM0wrMG5ZTDFTY2hEVWdBUDRnUFYvN0lkMXErMUhTaG11R2tJcVdSUGd5eE1GcVA4SGZqVG5qWHdZNWJRZmJKY3Q2T0l6S2dNSG90Ri9IZTFlZ3NheEhTcUc2d2ZkbVE1eDhOeVRGRnFCY3AyaVNvd0hSM3lrNSszNmhGN3ZYQUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIl0sImV4dGVuc2lvbnMiOlsiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiZmEyYjk5ZGM5ZTM5NDI1NzhmOTI0YTMwZDIzYzQxMTgiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjp0cnVlLCJ1cCI6dHJ1ZX0sIm1heE1zZ1NpemUiOjEyMDAsInBpblV2QXV0aFByb3RvY29scyI6WzFdfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjAtMDUtMTIiLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ill1YmlLZXkgU2VyaWVzIDUgd2l0aCBORkMiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDE4MDkxODAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4xLjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMiJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMC0wNS0xMiJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjAtMDUtMTIifSx7ImFhZ3VpZCI6IjM0MWU0ZGE5LTNjMmUtODEwMy01YTlmLWFhZDg4NzEzNTIwMCIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiMzQxZTRkYTktM2MyZS04MTAzLTVhOWYtYWFkODg3MTM1MjAwIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkxlZGdlciBOYW5vIFMgRklETzIgQXV0aGVudGljYXRvciJ9LCJkZXNjcmlwdGlvbiI6IkxlZGdlciBOYW5vIFMgRklETzIgQXV0aGVudGljYXRvciIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxMDYwNSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZrMV9lY2RzYV9zaGEyNTZfcmF3Iiwic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciLCJlZDI1NTE5X2VkZHNhX3NoYTUxMl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9pbnRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjozLCJibG9ja1Nsb3dkb3duIjowfX0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9pbnRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjozLCJibG9ja1Nsb3dkb3duIjowfX1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOlsiYW55IiwiaGFyZHdhcmUiXSwidGNEaXNwbGF5Q29udGVudFR5cGUiOiJ0ZXh0L3BsYWluIiwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUJnVENDQVNjQ0ZCbG8wczVRWUZkWGJmdXNSZFFlb0xYNlFlbmxNQW9HQ0NxR1NNNDlCQU1DTUVNeEN6QUpCZ05WQkFZVEFrWlNNUTh3RFFZRFZRUUtEQVpNWldSblpYSXhJekFoQmdOVkJBTU1Ha3hsWkdkbGNpQkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFTkJNQjRYRFRJek1ESXlNekV3TXpNd09Gb1hEVE16TURJeU1ERXdNek13T0Zvd1F6RUxNQWtHQTFVRUJoTUNSbEl4RHpBTkJnTlZCQW9NQmt4bFpHZGxjakVqTUNFR0ExVUVBd3dhVEdWa1oyVnlJRVpKUkU4Z1FYUjBaWE4wWVhScGIyNGdRMEV3V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVRLN25YeUg0cGdOM1RNd0NXU29NRFJlNEVWOEpsM1h6dWhpY1ovMmd2aCt6ejNXbVcwT1ovRWNSWUVBOEYyNmNlZXVNY2QyMVdRUlJLV3BqV0QrSldpTUFvR0NDcUdTTTQ5QkFNQ0EwZ0FNRVVDSVFDd2NzSHVMOFpGTDNGTnlVL0RPUW4zYm14MDhsbm4wTzVSa3RMYk9ub1BIUUlnT0VpNkltQVoxODFxOFJKaUwwaGJ3N1pxdXVuaVJxNmZqV2pHb0J1MU1vbz0iLCJNSUlCZ1RDQ0FTY0NGRk0xUUNEWGcxMjJGOWN2V0ZWbXFlR1gzdFFXTUFvR0NDcUdTTTQ5QkFNQ01FTXhDekFKQmdOVkJBWVRBa1pTTVE4d0RRWURWUVFLREFaTVpXUm5aWEl4SXpBaEJnTlZCQU1NR2t4bFpHZGxjaUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRU5CTUI0WERUSTBNRFV6TURFME1UazBNRm9YRFRNME1EVXlPREUwTVRrME1Gb3dRekVMTUFrR0ExVUVCaE1DUmxJeER6QU5CZ05WQkFvTUJreGxaR2RsY2pFak1DRUdBMVVFQXd3YVRHVmtaMlZ5SUVaSlJFOGdRWFIwWlhOMFlYUnBiMjRnUTBFd1dUQVRCZ2NxaGtqT1BRSUJCZ2dxaGtqT1BRTUJCd05DQUFUSzduWHlINHBnTjNUTXdDV1NvTURSZTRFVjhKbDNYenVoaWNaLzJndmgrenozV21XME9aL0VjUllFQThGMjZjZWV1TWNkMjFXUVJSS1dwaldEK0pXaU1Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lRRDhKKzAvYjhQZVlqRlJRWWtVUmNxaGF4MjdvbHcxalkvcGJza2hCdVJwNEFJZ09BSGI2bis3Zk5mZnlveHBlQ3EzVlo3QjFqTjN3cW1QTmZuYWVBamRvWHM9Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQVNZQUFBRUFDQVlBQUFBZU1kdnhBQUFBQVhOU1IwSUFyczRjNlFBQUFJUmxXRWxtVFUwQUtnQUFBQWdBQlFFU0FBTUFBQUFCQUFFQUFBRWFBQVVBQUFBQkFBQUFTZ0ViQUFVQUFBQUJBQUFBVWdFb0FBTUFBQUFCQUFJQUFJZHBBQVFBQUFBQkFBQUFXZ0FBQUFBQUFBRXNBQUFBQVFBQUFTd0FBQUFCQUFPZ0FRQURBQUFBQVFBQkFBQ2dBZ0FFQUFBQUFRQUFBU2FnQXdBRUFBQUFBUUFBQVFBQUFBQUFlNlNDa3dBQUFBbHdTRmx6QUFBdUl3QUFMaU1CZUtVL2RnQUFBVmxwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFBRHg0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJbGhOVUNCRGIzSmxJRFl1TUM0d0lqNEtJQ0FnUEhKa1pqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWo0S0lDQWdJQ0FnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJS0lDQWdJQ0FnSUNBZ0lDQWdlRzFzYm5NNmRHbG1aajBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5MGFXWm1MekV1TUM4aVBnb2dJQ0FnSUNBZ0lDQThkR2xtWmpwUGNtbGxiblJoZEdsdmJqNHhQQzkwYVdabU9rOXlhV1Z1ZEdGMGFXOXVQZ29nSUNBZ0lDQThMM0prWmpwRVpYTmpjbWx3ZEdsdmJqNEtJQ0FnUEM5eVpHWTZVa1JHUGdvOEwzZzZlRzF3YldWMFlUNEtHVjdoQndBQUQ2NUpSRUZVZUFIdDNMdU9KR2NWQi9CZDltSUhOaExpSWhPUU9FYUNDRGtpSUNORzRnMzhDandKQ1FsQ0JBU0lCTjZDaEFnSkpFUmlKQXZaQW95eGZGbnZoZS9zOUpGcWUzdG11azkvcDZkNjUxZlNOMVZkVmVkVXphOXEvbDI5OXN5ZE8zZnV2RC9Hc3pHZWJPYXhiS3pYNE5IbSt2eHF6R042Y0RIemRTRndmN1A4OHpHUGV6bk4zTmZydmEvajJqemRYSzlQdnpJV1RBUUlFRmlWZ0dCYTFlVndNZ1FJaElCZ2NoOFFJTEE2QWNHMHVrdmloQWdRRUV6dUFRSUVWaWNnbUZaM1Nad1FBUUtDeVQxQWdNRHFCQVRUNmk2SkV5SkFRREM1QndnUVdKMkFZRnJkSlhGQ0JBZ0lKdmNBQVFLckV4Qk1xN3NrVG9nQUFjSGtIcmd0QXZGTG9xWXpFUkJNWjNLaEZxZDVkN09jODhVbWk1Y0loQld2UzNEV3VEci9QTVF4NSthZDZCaTl3MnZUTytlSGQ3ZzlGV21VZjA3ajluem5OLytkSHZWR0VNWHg5NWkrUFVaY3ZIMmZvUEtDUi8xUHgvampHRytPRVgvVDZhZ1RHdldtcXdYQy90NFkveGtqcmwxNDUvVVlpNlloa0NadmplVnZqUEY0czI3TVRFMENjUS9HZzg3SFkzeC9qTitQRVZPczN6Y1RjdC9QWmp3eC9XVWMrTDA0QTlQSkJmSUg4T1FIWHZrQjh3Yi81empQR0tiVENqdzg5bkF6Z3VtTnpVbkV5Y1FUazZsZklBSXBubkJqbUhZTFJEakZKNEFZc1d6cUY0aS9wdnI1R0prSjVTUE9DS1lNbzVqbmN2bUVGQktZS0NDOEoyTHUwU28vc3NWSDU2T21mZjlONmFpREtDWkE0RllKWkVDVnYybkJWS1pUU0lCQWw0Qmc2cExWbHdDQnNvQmdLdE1wSkVDZ1MwQXdkY25xUzRCQVdVQXdsZWtVRWlEUUpTQ1l1bVQxSlVDZ0xDQ1l5blFLQ1JEb0VoQk1YYkw2RWlCUUZoQk1aVHFGQkFoMENRaW1MbGw5Q1JBb0N3aW1NcDFDQWdTNkJBUlRsNnkrQkFpVUJRUlRtVTRoQVFKZEFvS3BTMVpmQWdUS0FvS3BUS2VRQUlFdUFjSFVKYXN2QVFKbEFjRlVwbE5JZ0VDWGdHRHFrdFdYQUlHeWdHQXEweWtrUUtCTFFEQjF5ZXBMZ0VCWlFEQ1Y2UlFTSU5BbElKaTZaUFVsUUtBc0lKaktkQW9KRU9nU0VFeGRzdm9TSUZBV0VFeGxPb1VFQ0hRSkNLWXVXWDBKRUNnTENLWXluVUlDQkxvRUJGT1hyTDRFQ0pRRkJGT1pUaUVCQWwwQ2dxbExWbDhDQk1vQ2dxbE1wNUFBZ1M0QndkUWxxeThCQW1VQndWU21VMGlBUUplQVlPcVMxWmNBZ2JLQVlDclRLU1JBb0V0QU1IWEo2a3VBUUZsQU1KWHBGQklnMENVZ21McGs5U1ZBb0N3Z21NcDBDZ2tRNkJJUVRGMnkraElnVUJZUVRHVTZoUVFJZEFrSXBpNVpmUWtRS0FzSXBqS2RRZ0lFdWdRRVU1ZXN2Z1FJbEFVRVU1bE9JUUVDWFFLQ3FVdFdYd0lFeWdLQ3FVeW5rQUNCTGdIQjFDV3JMd0VDWlFIQlZLWlRTSUJBbDhEOTBmakxUZk5IWTM1dmpHZWIxM2QzTEMvWHhXNFBGL3ZFYTlQcEJPSmFQQmdqcjljaFI4N3JtTmYra0ZyN0VyaE9JTzdKdkxmeS9zeDdMbXFYeTh2WHNlL3pUSW92MzR3dFkzcjlZbmJ3MS9qaE1KMVdJQzlzdkptWUNLeEZJTzdMbUNKWGpzbUZyMGFEWDQ4UjRSUTMrYjRmN1RJRjQrQWZqQkZUcnJ0NDVXdVhRSWJTdDhZQmZqekc0OFdCY2x1c3lwdGtlVjF5ZTF6My80N3hoekdlam1FaU1FTWc3NlYvajJhLzNUU00reS92eGV1T0VmdEdCbjF4M1k3N2J0LzN3UHYyczkvbEF2RnhPNllmalJFWHNqbytITFh4VVR3bTErL0N3ZGZqQmFiY1MvSE9HUWwxVExOSXlmamhNSjFXSUorVTRyTjhYTDk5cjJGY3IzalMvV2dNMTIwZ21LWUs1RDJWYjZDVjVzOGltUElkdDlJZ2F2SkVxdlhxamhPSUcyRGZVRnJ1dCsvSDl1UE9UdlZ0RmNpUGRhWHZQNE9wVkt4b1ZRTEwwTG5xeEhLL25GKzFyMjBFcWdKSFBiQjQxNnl5cXlOQW9FMUFNTFhSYWt5QVFGVkFNRlhsMUJFZzBDWWdtTnBvTlNaQW9Db2dtS3B5NmdnUWFCTVFURzIwR2hNZ1VCVVFURlU1ZFFRSXRBa0lwalphalFrUXFBb0lwcXFjT2dJRTJnUUVVeHV0eGdRSVZBVUVVMVZPSFFFQ2JRS0NxWTFXWXdJRXFnS0NxU3FuamdDQk5nSEIxRWFyTVFFQ1ZRSEJWSlZUUjRCQW00QmdhcVBWbUFDQnFvQmdxc3FwSTBDZ1RVQXd0ZEZxVElCQVZVQXdWZVhVRVNEUUppQ1kybWcxSmtDZ0tpQ1lxbkxxQ0JCb0V4Qk1iYlFhRXlCUUZSQk1WVGwxQkFpMENRaW1ObHFOQ1JDb0NnaW1xcHc2QWdUYUJBUlRHNjNHQkFoVUJRUlRWVTRkQVFKdEFvS3BqVlpqQWdTcUFvS3BLcWVPQUlFMkFjSFVScXN4QVFKVkFjRlVsVk5IZ0VDYmdHQnFvOVdZQUlHcWdHQ3F5cWtqUUtCTlFEQzEwV3BNZ0VCVlFEQlY1ZFFSSU5BbUlKamFhRFVtUUtBcUlKaXFjdW9JRUdnVEVFeHR0Qm9USUZBVkVFeFZPWFVFQ0xRSkNLWTJXbzBKRUtnS0NLYXFuRG9DQk5vRUJGTWJyY1lFQ0ZRRkJGTlZUaDBCQW0wQ2dxbU5WbU1DQktvQ2dxa3FwNDRBZ1RZQndkUkdxekVCQWxVQndWU1ZVMGVBUUp1QVlHcWoxWmdBZ2FxQVlLcktxU05Bb0UxQU1MWFJha3lBUUZWQU1GWGwxQkVnMENZZ21OcG9OU1pBb0NvZ21LcHk2Z2dRYUJNUVRHMjBHaE1nVUJVUVRGVTVkUVFJdEFrSXBqWmFqUWtRcUFvSXBxcWNPZ0lFMmdRRVV4dXR4Z1FJVkFVRVUxVk9IUUVDYlFLQ3FZMVdZd0lFcWdLQ3FTcW5qZ0NCTmdIQjFFYXJNUUVDVlFIQlZKVlRSNEJBbTRCZ2FxUFZtQUNCcW9CZ3FzcXBJMENnVFVBd3RkRnFUSUJBVlVBd1ZlWFVFU0RRSmlDWTJtZzFKa0NnS2lDWXFuTHFDQkJvRXhCTWJiUWFFeUJRRlJCTVZUbDFCQWkwQ1FpbU5scU5DUkNvQ2dpbXFwdzZBZ1RhQkFSVEc2M0dCQWhVQlFSVFZVNGRBUUp0QW9LcGpWWmpBZ1NxQW9LcEtxZU9BSUUyQWNIVVJxc3hBUUpWQWNGVWxWTkhnRUNiZ0dCcW85V1lBSUdxZ0dDcXlxa2pRS0JOUURDMTBXcE1nRUJWUURCVjVkUVJJTkFtSUpqYWFEVW1RS0FxSUppcWN1b0lFR2dURUV4dHRCb1RJRkFWRUV4Vk9YVUVDTFFKQ0tZMldvMEpFS2dLQ0thcW5Eb0NCTm9FN3JkMTF2Z2NCT0w2UHhuajNoalB6dUdFRHp6SHAyUC9HS1l6RXhCTVozYkJKcHh1QmxBRTBtZWJmcS95RCsvZDhUM205enlCVDR0VENBaW1VeWl2NnhqeGd4clRtMlA4Wkl3dng0aVA5Sy9TRDI5OEw2K044YWN4L2o2R2NCb0lKZ0tkQXZHeEs2WWZqaEUvZ1BIa0UwODhzYnp2T0hUL2ZmdXViYitmRFpPWUhsek1mRDBYQVU5TTUzS2w1cDVuUGpWbFFPWHJDSmFZZHIyT2Jjc25qMXpPZlo4WDd2aXk3Sms5Y3JmY0ZxK1hmWEsvM0w3Y2xyVTVYKzZUeTQvSHhuaGkraUozTWo4dkFjRjBYdGRyOXRuR0QvenloMzY1SE1kYXZzN2xuRzl2ajllN3BxdjJYMjViMXViNm5DKzNiUzh2OThubC9LL04rWHE3eHV1VkN3aW1sVitnNXRON1ZYOXdYOVh2cS9sMldFLzdmR2RaenhrNUV3TEhDZVRIdWVPNnFMNVJBY0Ywby93TzNpRGdhYWtCOWRRdEJkT3B4UjJ2VzhBVFU3ZndDZm9McGhNZ084UkpCVHd4blpTNzUyQ0NxY2RWVndJRWpoQVFURWZnS1YybGdJOXlxN3dzaDUyVVlEck15OTdyRi9CUmJ2M1g2Tm96alArUDZkZ0w2UjNxV3ViV0hmaS95QnNlVEY0MHVZbFhSK1dLSjZhYnVHUTl4OHdmeHB6blVTNzdRZDNlTC9lUCtYTGJjam0zNWJyTDV0a3J0eC82ZWxrWHk4dlgyU3ZueSsyNVg4NXpIL016RTRnbkpoZnh6QzdhNW5UemwzbHpudC9GOWp2Vjl1dkw5c3YxTVYvV0xKY3YyNWI3NUR4N1ZWOHY2NWJMMlhjNVgyN1A1WWViSGZ6eTdsTHF0TXRINVVwY3lOK044ZFlZajhhSUo2aERHa2F3dlR2R1h6ZTE4VXVocGw2QnVHWnhqYjQyeGcvR2lMOHVFRlArVUY2OHV0MWY0ejZNWCtMOTh4anZqWkZtWTlIVUtCQnZrbkUvdmozR0x6ZkhPU1JQWXQvbzhYblVmanhHcktpT2Q2TEptTGJmdVMvVyt0b2hJSVQyVjJXMXY5V3hlK1lUNnZkR28ycWVQSytMSjU2UHhvZy9HcFpQVEdQeDJpbUtZNG9UaVQ4eFlUcXRRUGpIRDV3M2c2dmQ0OG5KVS96VlJqTzNaaTdFVTFNK3llZTZmWTRUKzBZbWZSSmZZc1FVODMzL01YeDVNTzlJei9sTy9pV3VnVGVGazdNNzRCNEN5emZOdUUvM3pZamM5LzYrUWJUSHVkaUZBQUVDY3dRRTB4eEhYUWdRbUNnZ21DWmlha1dBd0J3QndUVEhVUmNDQkNZS0NLYUptRm9SSURCSFFERE5jZFNGQUlHSkFvSnBJcVpXQkFqTUVSQk1jeHgxSVVCZ29vQmdtb2lwRlFFQ2N3UUUweHhIWFFnUW1DZ2dtQ1ppYWtXQXdCd0J3VFRIVVJjQ0JDWUtDS2FKbUZvUklEQkhRREROY2RTRkFJR0pBb0pwSXFaV0JBak1FUkJNY3h4MUlVQmdvb0JnbW9pcEZRRUNjd1FFMHh4SFhRZ1FtQ2dnbUNaaWFrV0F3QndCd1RUSFVSY0NCQ1lLQ0thSm1Gb1JJREJIUURETmNkU0ZBSUdKQW9KcElxWldCQWpNRVJCTWN4eDFJVUJnb29CZ21vaXBGUUVDY3dRRTB4eEhYUWdRbUNnZ21DWmlha1dBd0J3QndUVEhVUmNDQkNZS0NLYUptRm9SSURCSFFERE5jZFNGQUlHSkFvSnBJcVpXQkFqTUVSQk1jeHgxSVVCZ29vQmdtb2lwRlFFQ2N3UUUweHhIWFFnUW1DZ2dtQ1ppYWtXQXdCd0J3VFRIVVJjQ0JDWUtDS2FKbUZvUklEQkhRREROY2RTRkFJR0pBb0pwSXFaV0JBak1FUkJNY3h4MUlVQmdvb0JnbW9pcEZRRUNjd1FFMHh4SFhRZ1FtQ2dnbUNaaWFrV0F3QndCd1RUSFVSY0NCQ1lLQ0thSm1Gb1JJREJIUURETmNkU0ZBSUdKQW9KcElxWldCQWpNRVJCTWN4eDFJVUJnb29CZ21vaXBGUUVDY3dRRTB4eEhYUWdRbUNod2YwS3ZETGQ3RTNwcHNiL0FzN0hyMC8xM3Y1Vjd4cjE1OTFaKzV6ZnpUVWVlUEI3ajZDeVlFVXlmYkF3ZTNZekZyVDVxL05CRlFKbGVGZ2did2YyeVMrZWFKNXZtSHg5N2tCbkI5TTQ0aVlkanZERkduSmgzcUlIUU9FVVFQUmpqL1RIK05vWndHZ2hiVTVxOFBkWi9aNHd2eDNCZmJpRk5maG4zWmVUSi84YjQ3b3plY1lOSDB3aVZtQnZuWWZDYmNhMWlpcEF5dlNpUWI3aS9HS3ZkeitkakVFKzRjYjArelF2NDRtVTk3RlZlK01PcTdGMFJpSGY5ZVBlUEo5UXZLZzF1V1UzKzgwTE1aOXpydDR5di9PM0dmWHJVRStxTWk1VW5rUFB0N3lhQ0s3Zmxjc3hqaXZXNTd2bUtIVjkyYmM5MXl6N0wwdHdlNjViTCtYcTVieXh2bjkvMjluaWR4NHJsN2ZOZUhpT1h0K2ZiUGVKMVRNdGpYNnpadlM3M3pmMXpualhtTHd1a1VjeVh5M2x0b2lLV1k4cnR5MjBYVzE3OHV0dy85ODM1Y3MvdGRmazY1MWZ0bTl0aTM1emkvUEwxdnVlYXRZY2NNMnR5bnJVNXovVXgzN1Z1dWIyOFBDT1k0dUFKdGV0RWx0dHlPZWZYMVY2MlBldHp2bjNjNWZybDhtWDlzbjU3MzF5L3EyNjU3NjdsWEpmelhUMnU2bi9kL3N0YXk5Y0xYSFlkbHV2M01WL3VuOHM1WDU3RjlycDhuZk9yOXMxdDIvdGU5enJydHVmYmRiRjkxN3J0dXVWK3UvYmZ0VzVYajRQWDVYL3FQN2hRQVFFQ0JMb0VCRk9Yckw0RUNKUUZCRk9aVGlFQkFsMENncWxMVmw4Q0JNb0NncWxNcDVBQWdTNEJ3ZFFscXk4QkFtVUJ3VlNtVTBpQVFKZUFZT3FTMVpjQWdiS0FZQ3JUM1ZoaDIvL1VkbVBma1FNVDJCS0kvL003L3pSRXpyZDI4WEpsQXZITDFuSGQ0dGNCVEZjTHBGSGMyKzd2cTYzV3NEV3VWL3d0cDZkeGc3KytPYU5adjU2eWFXZldKUERhcG0vOElxL3Bhb0g4eXd0cGR2WGV0cTVGNFBVSW8zOXN6dWJ6TWZmUmJpMlg1dkx6aUw4UStQVXhQdHpza2s4RmwxZmN2aTFwOHEveHJjZDkvY0VZY2EvN0dEd1FWanpsRTlPbi93ZWJhMFY1VTZXSnFnQUFBQUJKUlU1RXJrSmdnZz09IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiXSwiZXh0ZW5zaW9ucyI6WyJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiIzNDFlNGRhOTNjMmU4MTAzNWE5ZmFhZDg4NzEzNTIwMCIsIm9wdGlvbnMiOnsicmsiOnRydWUsImNsaWVudFBpbiI6dHJ1ZSwidXAiOnRydWUsInV2Ijp0cnVlfSwibWF4TXNnU2l6ZSI6MTAyNCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMV19fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiTk9UX0ZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMDEtMDQifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI0LTAxLTA0In0seyJhYWd1aWQiOiI2OTcwMGY3OS1kMWZiLTQ3MmUtYmQ5Yi1hM2EzYjlhOWVkYTAiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjY5NzAwZjc5LWQxZmItNDcyZS1iZDliLWEzYTNiOWE5ZWRhMCIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJQb25lIEJpb21ldHJpY3MgT0ZGUEFEIEF1dGhlbnRpY2F0b3IifSwiZGVzY3JpcHRpb24iOiJQb25lIEJpb21ldHJpY3MgT0ZGUEFEIEF1dGhlbnRpY2F0b3IiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MiwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9LHsibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyIsInJzYXNzYV9wc3Nfc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSIsImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbInNvZnR3YXJlIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImJsdWV0b290aCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQndEQ0NBV2VnQXdJQkFnSVVJRjJBaXd1aFFPVHVieFZ5ZzNYMTM0aVduUW93Q2dZSUtvWkl6ajBFQXdJd05qRVlNQllHQTFVRUF3d1BVRzl1WlNCQ2FXOXRaWFJ5YVdOek1Rc3dDUVlEVlFRR0V3Sk9UekVOTUFzR0ExVUVCd3dFVDNOc2J6QWVGdzB5TXpBek1qVXhOakU0TVRWYUZ3MHpNekF6TWpJeE5qRTRNVFZhTURZeEdEQVdCZ05WQkFNTUQxQnZibVVnUW1sdmJXVjBjbWxqY3pFTE1Ba0dBMVVFQmhNQ1RrOHhEVEFMQmdOVkJBY01CRTl6Ykc4d1dUQVRCZ2NxaGtqT1BRSUJCZ2dxaGtqT1BRTUJCd05DQUFRU0ttT1QzOU82eEFIbkZYeFVYRm90d3VyaG9aQXF5MThXcTdRSjJGRVVoK3lZY3huWk1xNDJMRlhtZFVIMkJQb2s3eFpJRFRxVXlqWndQTEY4OFN3Rm8xTXdVVEFkQmdOVkhRNEVGZ1FVVm5kTG9zalIrcHdLc2QxcmNBWjk0MUpyV04wd0h3WURWUjBqQkJnd0ZvQVVWbmRMb3NqUitwd0tzZDFyY0FaOTQxSnJXTjB3RHdZRFZSMFRBUUgvQkFVd0F3RUIvekFLQmdncWhrak9QUVFEQWdOSEFEQkVBaUJFWVlnNU5uU0I0QXdzMUV5ZWxrbVFqejZOZEY1WlJ4aEFNVnBvb2FydCt3SWdXVjVVZXlOM1hrak51NzlMZCt0MEwyejl4TVhKdDdOUlloRVBtTGdrZnd3PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFhTUFBQUdqQ0FZQUFBQ0JsWHIwQUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUhUbWxVV0hSWVRVdzZZMjl0TG1Ga2IySmxMbmh0Y0FBQUFBQUFQRDk0Y0dGamEyVjBJR0psWjJsdVBTTHZ1NzhpSUdsa1BTSlhOVTB3VFhCRFpXaHBTSHB5WlZONlRsUmplbXRqT1dRaVB6NGdQSGc2ZUcxd2JXVjBZU0I0Yld4dWN6cDRQU0poWkc5aVpUcHVjenB0WlhSaEx5SWdlRHA0YlhCMGF6MGlRV1J2WW1VZ1dFMVFJRU52Y21VZ09TNHdMV013TURBZ056a3VNVGN4WXpJM1ptRmlMQ0F5TURJeUx6QTRMekUyTFRJeU9qTTFPalF4SUNBZ0lDQWdJQ0FpUGlBOGNtUm1PbEpFUmlCNGJXeHVjenB5WkdZOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6RTVPVGt2TURJdk1qSXRjbVJtTFhONWJuUmhlQzF1Y3lNaVBpQThjbVJtT2tSbGMyTnlhWEIwYVc5dUlISmtaanBoWW05MWREMGlJaUI0Yld4dWN6cDRiWEJOVFQwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOTRZWEF2TVM0d0wyMXRMeUlnZUcxc2JuTTZjM1JTWldZOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXpWSGx3WlM5U1pYTnZkWEpqWlZKbFppTWlJSGh0Ykc1ek9uTjBSWFowUFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdmMxUjVjR1V2VW1WemIzVnlZMlZGZG1WdWRDTWlJSGh0Ykc1ek9uaHRjRDBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5NFlYQXZNUzR3THlJZ2VHMXNibk02WkdNOUltaDBkSEE2THk5d2RYSnNMbTl5Wnk5a1l5OWxiR1Z0Wlc1MGN5OHhMakV2SWlCNGJXeHVjenB3YUc5MGIzTm9iM0E5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmNHaHZkRzl6YUc5d0x6RXVNQzhpSUhodGNFMU5Pazl5YVdkcGJtRnNSRzlqZFcxbGJuUkpSRDBpZUcxd0xtUnBaRG8zWVdZM01qQXlOUzB5WkRKaExUWmpOR0V0T1dZeVpDMHhNakZpTWpGak9EVXdPRGNpSUhodGNFMU5Pa1J2WTNWdFpXNTBTVVE5SW1Ga2IySmxPbVJ2WTJsa09uQm9iM1J2YzJodmNEbzJNalpoTkRBMVpTMWlZVGxrTFRnMU5EQXRZVGN4WWkxa05HVmpPV00zTVRVeE5ESWlJSGh0Y0UxTk9rbHVjM1JoYm1ObFNVUTlJbmh0Y0M1cGFXUTZaakkwTkRJNU1EY3RaRFZpWlMwME1XVmtMV0kxWW1FdFpqbGxPV00zWXpreVlqVXpJaUI0YlhBNlEzSmxZWFJ2Y2xSdmIydzlJa0ZrYjJKbElGQm9iM1J2YzJodmNDQkRReUF5TURFMElDaFhhVzVrYjNkektTSWdlRzF3T2tOeVpXRjBaVVJoZEdVOUlqSXdNakl0TVRBdE1EWlVNVE02TVRnNk5UZ3JNREk2TURBaUlIaHRjRHBOYjJScFpubEVZWFJsUFNJeU1ESXlMVEV5TFRFMFZERXhPak14T2pJeEt6QXhPakF3SWlCNGJYQTZUV1YwWVdSaGRHRkVZWFJsUFNJeU1ESXlMVEV5TFRFMFZERXhPak14T2pJeEt6QXhPakF3SWlCa1l6cG1iM0p0WVhROUltbHRZV2RsTDNCdVp5SWdjR2h2ZEc5emFHOXdPa052Ykc5eVRXOWtaVDBpTXlJK0lEeDRiWEJOVFRwRVpYSnBkbVZrUm5KdmJTQnpkRkpsWmpwcGJuTjBZVzVqWlVsRVBTSjRiWEF1YVdsa09qWTJaRGhsWm1OaExUTXpOekl0TmpZME15MWlNamhoTFRVM1kyUXpPR0prTnpCaE1pSWdjM1JTWldZNlpHOWpkVzFsYm5SSlJEMGlZV1J2WW1VNlpHOWphV1E2Y0dodmRHOXphRzl3T2prek1tWmpObUU0TFdZd01qY3RNVEZsTkMxaU9UYzBMV1E1TW1OaVpHVTVabU5sTmlJdlBpQThlRzF3VFUwNlNHbHpkRzl5ZVQ0Z1BISmtaanBUWlhFK0lEeHlaR1k2YkdrZ2MzUkZkblE2WVdOMGFXOXVQU0p6WVhabFpDSWdjM1JGZG5RNmFXNXpkR0Z1WTJWSlJEMGllRzF3TG1scFpEb3lZbVl3TnpZek5DMDFNVGszTFRSbFlqWXRZbVkzWXkxbU9HWm1PVFprWVdKa01tUWlJSE4wUlhaME9uZG9aVzQ5SWpJd01qSXRNVEV0TUROVU1URTZOVGM2TXpNck1ERTZNREFpSUhOMFJYWjBPbk52Wm5SM1lYSmxRV2RsYm5ROUlrRmtiMkpsSUZCb2IzUnZjMmh2Y0NBeU5DNHdJQ2hOWVdOcGJuUnZjMmdwSWlCemRFVjJkRHBqYUdGdVoyVmtQU0l2SWk4K0lEeHlaR1k2YkdrZ2MzUkZkblE2WVdOMGFXOXVQU0p6WVhabFpDSWdjM1JGZG5RNmFXNXpkR0Z1WTJWSlJEMGllRzF3TG1scFpEcG1NalEwTWprd055MWtOV0psTFRReFpXUXRZalZpWVMxbU9XVTVZemRqT1RKaU5UTWlJSE4wUlhaME9uZG9aVzQ5SWpJd01qSXRNVEl0TVRSVU1URTZNekU2TWpFck1ERTZNREFpSUhOMFJYWjBPbk52Wm5SM1lYSmxRV2RsYm5ROUlrRmtiMkpsSUZCb2IzUnZjMmh2Y0NBeU5DNHdJQ2hOWVdOcGJuUnZjMmdwSWlCemRFVjJkRHBqYUdGdVoyVmtQU0l2SWk4K0lEd3ZjbVJtT2xObGNUNGdQQzk0YlhCTlRUcElhWE4wYjNKNVBpQThjR2h2ZEc5emFHOXdPa1J2WTNWdFpXNTBRVzVqWlhOMGIzSnpQaUE4Y21SbU9rSmhaejRnUEhKa1pqcHNhVDU0YlhBdVpHbGtPamM1TURZNE16QTBOek5DT0RFeFJVUkNSVE0xT0VNeU5FTkVSRGt5UXpFMVBDOXlaR1k2YkdrK0lEd3ZjbVJtT2tKaFp6NGdQQzl3YUc5MGIzTm9iM0E2Ukc5amRXMWxiblJCYm1ObGMzUnZjbk0rSUR3dmNtUm1Pa1JsYzJOeWFYQjBhVzl1UGlBOEwzSmtaanBTUkVZK0lEd3ZlRHA0YlhCdFpYUmhQaUE4UDNod1lXTnJaWFFnWlc1a1BTSnlJajgrOGJzRTJnQUFKYzlKUkVGVWVKenQzWG1ZWkdWaDcvRnZkZmZzS3pQRElEc0lTaElVOTJnQVJWRkFweFJjNG5LcG1FMU5ZdFRFdUdhOVJuTzlpVXRRRTYvR05ScFRlTjBpTGpXaUlKcGczQUlvSU9pTmpDeUR3ellETXoxN0wxWDNqN2RMaXBvNnA2dXE2OVJicCtyN2VaNStlcWI3TEcvTmRKOWZ2WHVoVnFzaGFmZ1ZMdDVjcVA5eDduTU5vSGJocGxvYnh4WHF4emRmTnVXV2pjZVBOZjM5RjMrdTMzL3V2cis0VDNPNU5Od0tocEdVallhSE90RDJRei9wdU1acjFUb01rTFRBYUR5bjhmaFduK0grVUtrMW5WZE5PSzVWV1dvTjU3VU1xS2J2SFJKYzlkZHNZQTBQdzBqcWtlYndhWFZJMDJkby9RQnVESitrQjNyek5SdVBhVDYzSGhhTkFUSFdjSHkxNGJ6YTNQZXFIQnBpamZjZUEyWWJ6bXUrWjNYdTgzalR0ZXIzcURZYzMxeHJxcXVmVjIzeHZWOEV0NkUwSEF3anFRdnpCRTl6NkxRS2g4YUg4RGozMXphYWowdTZUbk9BMUIvNmpUV1h4dUNCQndaUTQvZWJYMHR6Y05UUHFWK251VmFVZEozbW9KMXB1RWE5N05XNWo4WmdiQzVML1d1ekpMTnBMK2NNSTZsTmJkUjhHaCswOWMvTkQrVDZjV245TWZVSGYvTXZaM01mVE9NMW04T3BWUzBzN1h2MTBCbm5nV1dxbDZYYTlQZm1RQzF3ZjAycE1aeG1nUWtlR0RiTnRhZDZMYXNlc3ZXL042dVhjYmJoN3kzVkx0elVxamFsQVdZWVNXMW9DcUpXb2RUOGpyL3hhNDNuRkZyOHVUR1lhaTNPcS9MQWtLRGgrRlo5T1BWNzF3T3E4WHF6UERBTW04dlRxc1pVdjhjRUQydzZhMVd1Y1ZxSFVxc2FUejJBR3NPcHNmbXVYbDZhdmw1dGNWNHJoL1N0YVhBWlJsS0tGcldoNXIrUEpYeHVmdGpYdjk3NDhHNE9nZVp6VzlVNjZzYm5QamRlcTlVQWdjYVFxRFo4Ymp4MnZPR2M4YWI3TklaWDQwZGpEYWE1djRtbWV6WFhtdXJuMTJ0Tk0zUG5URFc4cHViQW1XbjZldVAzbTVzM0gvRFpRTXFIaWRnRmtBWlZRbTJvK1d1TnRZd3hEbjF3US9nOWEveGE0ME82TWFpYSsyV2FtOHpxNmcvNnhudlV2MTZ2RVUxd2FDQTAxNkthKzRBYUE0Nkc0OGNhcmxXL3owVERzZlY3TllkUi9UVTExbHdhYXovMW10SDQzSGtUYzM4KzJQRDk1dXMwaGxPMTZXdU54eDR5RWsrRHpacVIxQ1NoYjZoVjgxdFNFTlUvai9QQTBLaC9OTDRKbkdpNlZxdGFUV01ZMUlPbDNoeldxdittc1ZtdThjOXcvOE8vVmNBdGJycC8vZGo2ZGFibmptbDg2RGNIMUN5d2FPNXIwdzNIdFdwbXE5ZDI2bCtyLzMxNjdweURUY2ZYajBrNnJ6R1VtbXRIOWlFTnVMYkRxRkNZcis5MkJKUXJLNEhEZ1EzQWVtQVpzR2J1dXl1eHBqa3Nrc0tvK1hPcmdCcm4wSUNxZjczNXZGWWZOUTY5Wm5QZlRLc211Y2JSZEkxbGJqWHlyYm01cjNtT1VOSzk2dGRvckptMStsNDlGQnRyYW8yRElCcURvc29EYXpqMUFRcjF6NjIrM3VxY3h0Q2k0ZnBwZzBCNlpSYllQZmZuU1dBL3NHUHU0MjVLeGQxSko0NktkbkxHTUdwV3Jpd0NmZ1U0RFhnNGNESndBdkJnN2c4ZVNXclhidUJud0MzQUZ1QjY0RnJnUmtyRmd5bm5EUTNEcUIzbHloSEFtWE1mWndDUHdocU9wT3pOQXRjQi93bDhDN2lTVW5GYjNDSmx3ekJxcFZ3WkEzNE5lQWF3aVJBK2tqUUlyZ2UrTXZkeEphVmkya1RmM0RDTTZzcVZBbkE2OENMZ2VjQ1JjUXNrU2ZPNkIvZzM0RlBBdjFNcTVuWVFobUZVcmp3SStGM2dwY0NKa1VzalNkMjZIZmdJOEJGS3hhMnhDOU9wMFEyamN1VU00RFhBQmR3L2lrbVM4cTRHYkFZdW9sUzhJblpoMmpWYVlSU2E0aTRBM2tEb0U1S2tZWFlOOEE3ZzA0UGVoRGM2WVZTdVBCdDRFL0RJdUFXUnBMNzdNZkFXNEZPVWlnTzVpc0h3aDFHNWNqcHdFZkQ0MkVXUjV0RThHVFBwYytOazAxWkxFTkhpYXdQNHk2a0lmZ2k4amxMeDY3RUwwbXg0dzZoY09RNTRHMkYwbkNUcGZsOGdoTkpOc1F0U04zeGhWSzZNQTY4Ry9vYXdGSThrNlZCVHdGdUJ2NlZVbko3djRLd05WeGlWSzQ4Z0RHMThUTnlDU0ZKdTNBQzhoRkx4ZXpFTE1SeGhGRlpNZUFPaE51UXlQWkxVbVNyd3Q4QmZVeXJPekhkd0Z2SWZSdVhLTWNBbmdDZjMvK2FTTkZTK0I1UW9GYmYwKzhidDVFenpYaWVEbzF4NUdtRjB5SlBqRmtTU2hzTGpnV3NvVnk2SVhaQldCcTltRkNhdnZwSFErVGE0WVNsSitmVlc0RTM5V29nMWY4MTA1Y29TNE9QQUM3Ty9tU1NOdEFyd1FrckZ2Vm5mS0Y5aFZLNnNKNHlQUHlQYkcwbVM1dndBS0ZJcTNwSGxUZklUUm1HZ3doWEFRN0s3aVNTcGhhM0EyVmxPa3MzSEFJWnk1V1RndXhoRWtoVERzY0IzS0ZjZUhyTVFjY01vdlBncmdhT2psa09TUnRzRzRKdVVLOUhXK1l6WFRCZHFSTjhDanVqdGhTVkpYZG9KUElsUzhmcGVYblJ3bStuS2xXT0JiMklRU2RJZ1dRdGNRYm55MEg3ZnVQOWhWSzVzSUF4V3NHbE9rZ1pQZUVhWEszMTlSdmMzak1xVnBZVGgyeWYzOWI2U3BFNGNEVlFvVjFiMTY0YjlDNk93c3NLL0FLZjM3WjZTcEc0OUF2ak0zTlk5bWV0bnplZ3ZnT2YzOFg2U3BJVTVqN0NSYWViNk01cXVYRGtQMkV6c29lU1NwRzY4Z0ZMeE05MmVQQmdyTUlRdHduOElITmJkQlNSSmtlMEZIa3VwK0pOdVRvNC90RHUwTlpZeGlDUXB6MVlBbjV4YnpEb1RXVGViL1Jsd1pzYjNrQ1JsNzVHRXJTY3lrVjB6WGJueVdNS2FjMzBaaVNGSjZvdXpLUlcvMGNrSjhmcU15cFVKNENyQzBFQkowdkM0Q1RpTlVuRi91eWZFN0RONlBRYVJKQTJqazRHLzd2VkZlMTh6S2xjZUROd0laTmJSSlVtS2FoWjROS1hpZGUwY0hLdG05RTRNSWtrYVp1UEF1M3Q1d2Q2R1VibnlGT0E1UGIybUpHa1FQWVZ5cFdmUCs5NDEwNFcxNTY0aERQK1RKQTIvTGNBdlVTck9wQjNVNzJhNkYySVFTZElvT1FsNGFTOHUxSnVhVWJreUJ2d0krT1ZlRkVxU2xCdGJnWk1wRmFlU0R1aG56ZWdGR0VTU05JcU9CWDUzb1JmcFZSaTlzVWZYa1NUbHordm5Xc2k2dHZBd0tsZWVobjFGa2pUS0hndzhkeUVYNkVYTjZMVTl1SVlrS2Q4V2xBVUxHOEJRcnB4SUdOcTNnSjMzSkVsRDRwR1VpdGMyZjdFZkF4aCtGNE5Ja2hSMFBjeTcrNXBSMkRodkszQmt0emVYSkEyVlhjQ1J6U3Q2WjEwek9nZURTSkowdnpYQUJkMmN1SkF3ZXY0Q3pwVWtEYWV1c3FHN1pycHlaUkZ3RjNCWU56ZVZKQTJ0QThEaGxJcDc2bC9Jc3BudUtSaEVrcVJETFFVMmRYcFN0MkhVOFkwa1NTT2piMkgwakM3UGt5UU52NmZQYlN2VXRzN0RLR3dyL3RDT3o1TWtqWW9qZ0VkMWNrSTNOYU96dWpoSGtqUmFPc3FLYnNMbzlDN09rU1NObG82eW9wc3dPck9MY3lSSm82V2pyT2hzbmxHNXNnYlkyVVdoSkVtajUzaEt4ZHV5bUdmMDhPN0tJMGthUWFlMWUyQ25ZZFQyaFNWSkk4OHdraVJGbDFrWW5kemg4WktrMGRWMlpuUWFSaWQyZUx3a2FYUzFuUm50ajZhN2VQTTRZVFhXaVM0TEpVa2FQV3RxRjI2YW5PK2dUbXBHRDhJZ2tpUjE1dGgyRHVva2pEWjJXUkJKMHVocUt6czZDYU1OWFJaRWtqUzYyc3FPVHNKb2ZaY0ZrU1NOcnJheW81TXdXdDVsUVNSSm82dXQ3T2drakZaM1dSQkowdWhxS3p1NjNlbFZrcVNlNlNTTVZtWldDa25Tc0dvck96b0pJK2NZU1pJNjFWWjIyRXduU1lyT01KSWtSV2NZU1pLaU00d2tTZEVaUnBLazZBd2pTVkowaHBFa0tUckRTSklVbldFa1NZck9NSklrUldjWVNaS2lNNHdrU2RFWlJwS2s2QXdqU1ZKMGhwRWtLVHJEU0pJVW5XRWtTWXJPTUpJa1JXY1lTWktpTTR3a1NkRVpScEtrNkF3alNWSjBocEVrS1RyRFNKSVVuV0VrU1lyT01KSWtSV2NZU1pLaU00d2tTZEVaUnBLazZBd2pTVkowaHBFa0tUckRTSklVbldFa1NZck9NSklrUldjWVNaS2lNNHdrU2RFWlJwS2s2QXdqU1ZKMGhwRWtLVHJEU0pJVW5XRWtTWXJPTUpJa1JXY1lTWktpTTR3a1NkRVpScEtrNkF3alNWSjBocEVrS1RyRFNKSVVuV0VrU1lyT01KSWtSV2NZU1pLaU00d2tTZEVaUnBLazZBd2pTVkowaHBFa0tUckRTSklVbldFa1NZck9NSklrUldjWVNaS3kxRmJPR0VhU3BDd1Yyam5JTUpJa1pjbWFrU1FwSHd3alNWSjBocEVrS1V1MWRnNHlqQ1JKMFJsR2txUXNPWUJCa2hUZGVEc0hHVWFTcEN4TkZDN2VQTzljSThOSWtwUWxhMGFTcEh3d2pDUkpXYXEyYzVCaEpFbkswbXp0d2szenpqVXlqQ1JKV1pwcDV5RERTSktVSlp2cEpFbjVZQmhKa3JMa2ZrYVNwT2dNSTBsU1BoaEdrcVFzT1lCQmtoU2RZU1JKaXM3TjlTUkowVmt6a2lUbGcyRWtTWXJPTUpJa1JXY1lTWktpTTR3a1NkRVpScEtrNkF3alNWSjBocEVrS1RyRFNKSVVuV0VrU1lyT01KSWtSV2NZU1pLaU00d2tTZEVaUnBLazZBd2pTVkowaHBFa0ticUoyQVVZQkt2RzRYSEw0S1FsY1B4aU9HSVJMQzdBc2tMNC9tUVZwbXV3ZFFwdW1ZSWZIWUFiRHNCc1cvc1hTc3E3VmVOdytuTFlYUTNibGg2b3dsUU5abXF3ZDI3cnVQcjM5czg5TDlTWmtRMmpCeTJDNTZ5Qlo2NkdVNWQxWGtYY1U0WHY3SVhQNzRMTEp1SGdBUDd3ZmZ4NGVPaVNPUGZlUFF2bmJ1bnROZi91S0RoclpXK3YyWW5uM2d4M1RQZnVlaTlaRHk5ZDM3dnJRWGdJM2pNRC8zMFFydGtIVit5QkhUTzl2VWN2dk9WSU9HZFY4dmYzVk9FWlc4TERmaEFjdHdnK2RGeG41OHpVUWpCQmVFTUxzSG9zQk5hT1diaDNCbTZkZ21zUHdBLzJ3WFg3Mjl3U2RVaU5YQmlkdWhSZXZSSE9YUVdGQlZ4bjVWajRaVHBuVmZqRitjUzk4SUh0Y085c3o0cTZZRWRNd05HTDR0eDdkd1lOd0JzaXZoNkE4UjVmYi9WNE5xL25oTVh3dU9WUU9pdzgzTDZ4R3o2NEk3eDVHZ1JMeCtBRmEySDVQRDhqWjY2QWIrN3BTNUV5TVZFSU5TcTQvM1BkNm5FNGNURThaams4ZCs1cmQ4L0ExeWFoZkY5b2VSazFJOU5uZFBRaStPQ3g4SldUNEx3RkJsR3psV1B3OGczdzdZZkNxdzRQUDRUU0lCZ0Rucm9LUG5VQ2ZPeTR1R0ZlZC9iSytZTUk0Tmxyc2kvTElOazRBYit4TGp5ai91OEo4R3NyWXBlb3YwWWlqSDVySFZ4K01qeDlkYmIzV1Q0R3I5OFlmcGdldml6YmUwbWRPbnNWZkczdXpWaE1GN1FaTXVldURuMjNvK2owRmVFTnhQdVBoYU1HNEExRVB3eDFHQzBiZzM4OEJ2N21TRmpSeDFkNnloTDQvSW53L0xYOXU2ZlVqbFhqOElIajRNWHI0dHgvNVZnSXhYYVBmVnJrNEl5dHVCcStlbEwyYjZRSHdkQ0cwZm9KK0xjVDIzOFgxbWltRnRwdmI1NEtJK2p1bk82OFkzRnhBZjcrYVBpekkzcmJKQ2d0MUJqaERkcW1DQSs0YzFmRGtnNStJWjQ1QWcvaCthd1pEMTBNdy80c0djb0JET3NuUXB2cktXMk9KTnRmaGN0MnczL3NnYXYzaHhFdXphTjRGaFhDME85ZlhRNVBYaGsrMnVrYmV2bUcwR0g3cGpzNmZobVp1ZkVBdlBuT2JPL1J6MUZRMjJmZ0ZiZG5mNTk3K2pncTdiTTc0VE03T3p0bldRR09Xd3lQWFI1cUh5dFQzbXFPRWQ0czNYQWcvTHozUzZkdkRzOVpIVm8xOWc3NE1MT3I5clUzZUdsZk5ieWVkZU53OHBJUU5PMTYrWVl3S09tMTI0WnpXc25RaGRIU01mam9jZTBGMGJacGVOOTIrTGVkWVVSY211a2EvT1JBK1BpWGU4UElyaGV2ZzVldU8zU2tUTFBmV1JjZW1QOTRUOXN2STFPVHM0TXpzcW9YRHRhRzYvVUFiSjN1L2pWOTdON3d3SHZ4T3Zpanc1TkRhY1VZdlBWSStJMWJ1eTluSjlhT3d4TTc3SlJmVWdoTmRWL1lsVTJaZXVVZGQzZjMvM1hDWW5qS1N0aTBCaDYvZlA3am43c1c3cHFCdjcycjgzc051cUZxcGlzQTd6d0tIalhQNElHcFd2alBmT0pQUTdETUYwU3RiSitCZDkwTlovNDB2SXVkeitzM3d2a2pOanBJOGV5dHdqOXRoM051U2g4bS9LU1ZjRWFmUm0xdFd0MjZOZUcycWZTV2cyRWVWWGZMRlB6enZmRDhtK0hwVzJEejVQem52SHhEQ0xCaE0xUmg5SkwxOHovd3R4d00vK252Mzk2YldkTDN6Y0pyZmc2L3R6VlV3ZE5jZERROEpOSWtWSTJtbjAvRGhiZWtUOWJ0OWNUYkpFbS9tNVZKK1BKa2NyL3NrMVoyMXB5VlZ6Y2VnRC9ZQ2krNkJXNmZaM0wxUlVlSG11WXdHWm93ZXNnUytOTWowby81OWw2NDRHYTQ2V0R2NzMvcEpEenY1dlIyNDhVRitJZGpRditUMUMvM3pjS2ZwOVE4emxxWi9ZUHRpQWw0UWtJTjdLdVRvVC91dXduTlhJc0s4SXdSR3NqdzdiMWg5WW5MZHljZnMzNEMvbnllNTEzZURFVVlGWUIzSHAwK0orRTdlK0YzYmd2OUpWbTU0VUI0RjVyVzdIZnFVbmpsaHV6S0lMWHk5ZDN3Zy8ydHZ6ZFJnQ2RtM095emFYWHJoODIyNmZ2TGxkWXZOR3BOM0x0bTRXVmI0WE03azQ5NTBXSHdzS1Y5SzFMbWhpS01MbGlUM2s5MCszUm9SdHZmaHhFNU54NkFWMjVOUCtZUE5vUzE4YVIrU2h1ZGQxckdEN1ZucjIzOTljcGtXS3NONEN1VHlhTXdUMThSYWdPalpMWUdyOXNHVis5TFB1YU5RMVE3eW4wWVRSVFMvME5tYS9EeXJlR2RScjljc1NmMFNTVlpOZ2F2MjlpLzhrZ1FwaTRrT1daeGR2YzllbEh5bThWTEd6cnNkODdDdnllVWNReDQxZ2cxMWRYTjF1Q1BmNTY4RVBOWksrRzBJVm50SmZkaDlLelY2ZXR0ZlhnSFhKdlFQSkdsaSs0T2syYVRQSGROYUVlWCt1VzJxYkQxUVN2ck0rd3pTcHBiZFBmTW9lLzZ2NWpTVlBlc0VXdXFxN3R0S3YzTjdZc1A2MTlac3BUN01Fb2JDWFRQREZ3VWFXN1B3UnE4T2FYVGVLSVFiMGtXamE0WXE4b25oY2ptRmlQb3ZyWTd1UmJ3Mk9XRHNkQnJEQi9ZSG1xT3JaeS9KbjJDYzE3aytpWDgwdEwwQlVuZnQ3MC8vVVJKcnRpVDNHa004T3RyaDN0NUR3MmVmaTg4ZXRLU01HaW5sVlp6YXZaV3cvNWdyUlFJYTdXTm9yM1ZNQ2V5bFdVZHJQYzN5SElkUm1uclZ1MmVoWXZ2NjE5Wmt2eFRTdlg2cUpTMmRLblhGaFZnWFVMVGNGYXJ5NXlmOER1Nll3YitLNkZqL3NzcEV6K1RCa0tNZ2srbVBNK0dZVUhaWElmUmVTbGg5TmxkY1d0RmRaZnRUbC9UTE8wMVNMMzBtT1hKdi9CWk5kOGxEY20rZEhmeSttcVg3MDZlSHZHd3BXRUpuVkgwOCtua0FPOTBtYVZCbE5zd1dqdWV2djdjbHdka0xhdVpXaGl5bXVSWDIxaVBTdXFGczFQbUV0MmN3VVR3VTVlR1pycFcwbjQvcDJwaElteVNibGJpSHhaSm93M1hUOEF4T2U5UHkyMFlQVHJsSWI1ekZxNkpNSUl1eVdVcE02bFBXemE2RzRpcGYxYU13UXRUUmwxZGxjSHZTMUt0YU5jc2ZDOWw3Z3c0QVRiSjkxUCszZkkreER1M1lmVExLYldpYS9ZTjFoTHJWKzlMYnBOZlZJQVRSN1RaUWYzekp4dmhzSVRoMi91cVlRbWFYaXFRMGtTWE1ybTE3bHQ3azVzT0g3SWtERjRhUlQ5SldmUTI3ODJYdVEyajQxTCs0YTlOK1ErTFlVOFZmcGJTREpMbGhFUHBhYXZTcDBCY3NpdDUvbEczSHJVc2VSaDJwWTJWcWVkcjNrNGFHREhzZHM0bVQrRFArL2JrdVoxMm1kWSsycy9Od3RwMTYxUnkrM20vNTA0OGVqbDg1Nkc5dis2SGQ4QkhkdlQrdXZONTBFUTJyNmN5Q2Y4cjQwMElzelJSZ0Zkc0NMV2lwSGVkTTdYMEVaL2RTdXJYMlQwYmFqM3R1R1FubEJLYUZzOWZBMisvdTZ1aTVkNTlzNjFYTWQrWTI2ZDVrTnZpcjB5Wk1YN25QTXV2eC9EemxETDFleFh2eFlWc0FuQjFwQ1h0eHpONlBldHl1a1QvK29td01zbEwxc1B4ODlTNlA3UWo3S25UUzJOQU1TR01MdHZkL2k3QS83VXZyTkxRNmlGNzNHSjQ1REw0NFFEMURmZEwwbFkxWXpudmU4NXRHQzFKK1lmUGNtWHViaVhOS2dkWW5kdkdVbVhsL05YSmswVmJPVmlGNVdNaGZFNWEwdDVrNmg4ZGdML1BvSGJ4aEJYSjc5TFQ1aEExcXhJR01yd3NvWW54V1d0R000eVM1SDBWaHR5R1VkcS8rd0NOWGZpRnFiUkM1ZndkalhydnBDWEp6YnE5Y1BzMHZPUzJlWDR1dTVTMC9NK2VhdnBpcmExOEtTV016bDhEYjcwemVWTytZWlUwK2pibldaVGY4cWY5QUM0YndGZTFOQ1Z3ZGc5Z1RVN0Q2N3I5WVp2cnROMWZ1elZSU0Y0WjVSdTdPdysvSCs0UEM0VzJjc1JFV0s5dTFHVHhCbUlRRE9CanV6MXAveUZKUTFoalN0dUxwUmZibjB2em1hMkY5UnFmZDNONkgrWkNQSEZGOGhiaDdZeWlheVZ0SmUvbnJPM3VtbmsybnZER05xMHJJQTl5MjB5M1BXV0puVUVjS3AwMitxL2ZBeTcrK3lDODQ2N2VYL2VtU0tNWWQ4ekFuMjdyL1hXemVtRDNXeFhZdkN1c1lIOVRCaXN0TkVvYVJiZXZHaFlPN3NZWEorR1ZoN2YrM3ROWHdWOFdCbXRlWWRiV0pGUWgwcFlkeTRQY2h0SFdsQWRGMmpKQk1Zd0JwNlIwUnQvYTU0ZmV2VFB3MVpSVklmTG1RRzI0WGs4djFBaTdEbDg2Q1ovZDJaOWdYVktBY3hPYTZMNjVwL3U1VEQ4NUFQL3ZZT3ZmNi9VVG9UYjJ6UzZETG04bUNyQWg0YWw5dDJFVVI5cGNvc2NNV0R2eVNVdVNSN3JNMWdaelhwVGlldi8yRUxMdE9sQU5UZGM3WjBQdy9HaC84bUtqV1hucXF1U2Y4NnYzTFd6dHRHL3ZUWDZUK2N3MW94TkdKeXdPZ2RUS1R6T3U5V1l0dDJIMHc1UTFtazVaRWpvMzd4cVFkd3BucFN4UWVjT0J3VmhkWElQbC8yd2Z6Q2tLYWRKMll2MnJCNFdQTEd4YURYKytiWGc3OWh1bGJUbHp3NEN0UE5PcDNBNWd1UDVBK2cvZk9RTzBYRWphTmhGSlM4SkxlYkppTE42ZU9pdkg0TWtwYi9pR3lla0pXMFhzcVdiZkg1aTEzSWJSZEEyK2s3S3N5SXZXOXEwb3FVNVlESTlQYVRhODNMNE9EWUZ6VjZWUFJNL2FLR3dyc2JpUUhQaFg3bWwvWll0Qmxkc3dndlNob3FjdEM4dUZ4UGJpZGNuZjJ6NEQzN1ZtcENFUWUxdUhwNjRLdGJOaGR2YXE1R0h6dy9DbU50Zi9mWmRPcHMvUmVlM0cvcFdsbFkwVDhKc3BZZlQ1WGFNMUpGWERhZTE0ZXI5b1B5d2ZDNEUwekpKV290aGJUVi9oUEM4NkNhT0JXN1JtNTJ4NG9DYzVhMlZ5RzJzL3ZHWmpjdFBGYkEwK0dtR0ZhNm5YbnI0NmVZUlhQOFd1bldYcENTdmdjUW5OL1YvWTFmK1JrMW5vWkRUZEFQeTRIZXJETytBRmE1Ty8vM2RId1RrMzlYOTI4dU9XdzRVcE8ydCthWEo0SmxWcXRLWDExL3oyYlhCRkQ1dVFsbzdCRDA4Sk5hRm1UMWtKcThhSGIzbXRNZUJOQ1NNUmE4VFp0aVVMdWE0WlFaZ1FsOVozZE1KaStPc2orMWNlQ08yNjd6a20rZnRUTlhqSGlPN0ZvdUd5ZmdKK0xhSDFZZGRzNXd1anp1ZEFGYjZlRUc2TEN2Q01JV3lxKy8wTnlTdTRmMzVuL3VjWDFlVzZ6Nmp1ZjkrVlBzeTdkQmk4TUtXVzBrdUxDdkNQeDZSUDhQdndEdGpxUkZjTmdmTlhKejlFTnJleHZYZzMwcHJtMCtZNjVkRmpsc1ByRS9xK0QxVERFay9Eb3BNd0d0aXU5cTFUOE41NS9sUGVkaFE4SitNZjFFVUYrTUN4NlhNZWJqb0k3N0pXcENHUjl2QlBXK0IwSWY1alQzSWZ5WmtyMGhjbHpwTXpWOEFuajAvdWo3dm9udVFWemZOb0tNSUk0TDNiNFpxVWpiYkdnSGNkQTcrWE1DSmxvVFpNd01VbnBFLzhtNjdCSzIvUC8rcTZFb1RkZFpPMmNNaHkyc0pVRFNvSlFUZGVnR2NNMElUM2Jvd0Jyem9jUG5GODZDTnI1UWY3UXd2TE1CbUtaam9JelFGL2ZIc1lZWmRrRFBqTEI4RS9IWnU4MkdBM3psc0ZYemtwZlhJcndCdTNoY1VycFdHUVZpdjY4bVMyMHhiUytvbXpiZ0hKMHFPWHdSY2VISnJta3JhSzJERUR2NzgxLzVOY20rVitBRU9qVzZmZ3BiZk4vNSswYVRWODQrVFFNWmowenFNZHB5NkZqeDBISHpvdXJJV1g1bDEzaDlXVHBXR1JOcFE2cXlhNnVpdjNob2R5SzQ5ZFB2L3Y0eUJaWEFoenBDNCtBUzU1TUR3aVpiTCtnV29Jb241dk85TVBuZnlYRGVDV2RZZjYvajU0MWUxaEVFSGEzSWMxNC9BWFI4RExOOERuZHNJbHUrQ0cvZk52WWJ4K0FzNWVHUVpFL0dxYnE0UC82NzN3N2lIcWFKUk9YQXdQU3hqaHRXMDZyTktkcGRrYVhMbzdERTVxVmlBTU4vL2dBRFZqTFNtRWtObGJEVHRSSHo0Qkp5OEpLOFdjc1NKNXRmTkdrN05ocS9qdkQrbXFMWjJFVVc2YTlDcVRzT2MyK09DeDgyOUJ2bTQ4ekd4KzJYcTRkelpzYzN6VHdmRE9ZMTgxdkdzNWJCeU9Yd3kvc2pUc1M5UkpGZkdqTytETmR3NTRoNXZVb2JSYTBaZDI5ZWZuL2ZNN1c0Y1JoRzBsK2hsR2J6OHFCRTJTeFlVUVB0MzY4UUg0dzl0aHk1QU00MjVsS01NSTROLzN3SE51aHZjZEN3OXVjK2ZYZGVPaDFuTjJENVkybWE3Qlg5MEJGOSszOEd0Smd5WnRvdXNYKzdRMHpWWDd3b1p5RzFzOHhSNjVMTHlCN05kZVljZG50THQwRGZqNHZmRFdPNGQvNE5OUTlSazF1L0VBRkxmQXAzZjI5NzViRHNMemJqYUlOSngrYVdueXUveGJwdUQ2bEZHdHZWUWxMSVdUSk85empxN2VCOC84R2Z6UE80WS9pS0N6TU1ybDZrZDdxL0M2bjhOemI4NSs4Nm1EdGRBM2RONlcwTnduRGFOblJ4eTQwQ3hwaURma2QxdUpLL2JBaGJlRWxwMStCZnNneU5HWWs0VzVhaDlzMmhKR3JmemhodVQ1RWQzWVc0Vi91VGUwVVNlTjhKR0d4VE5UNXZIME80eXUyUjhtZmg3WG9wbnNsQ1h3MENYdzN3UGV6N0szQ3RmdWg2OU93bGQzaHdFZ28yaGt3Z2hDKyt2bHU4UEhTVXZDZklUelZvY2YyazRkcUlaSmZaL2ZHWDZBOWcxZ3ZmR3VHVmpUNGdmN25wd0c1dmFaMW92TDNwSFRYOTdKMmVURmNxc0QyaXh6eXBJdy82VlZ1VytkaXZQZy8vUk8rQjhKQXhuT1dObWJNdDA1RXdZaUxjU3FNU2dVb0ZhRDdiTnd6elQ4YkNvMDZ3L2c0NlB2Q3JWYWV6LzFoWXMzdnhONGJiYkZpZU93OFZCVE9ubEo2SWpjTURIM2d6UDMvVm5Db285M1RJZGZ1T3YydzNVSGhtL1NtU1JsNEQyMUN6ZTllcjZEMnFvWkZTN2VYQUJTbHY3TXQvdG00YkxkNFVPUzFIL3REbUFZNmpDU0pNWFZTUmpsYXA2UkpDay9obWJWYmtsU2ZyVWJSalZDUDc0a1NUMW5HRW1Tb21zcmpHb1hicXBoTTUwa0tTTkR2VGFkSkNrZjJncWp1WGxHdWRqUFNKS1VQdzd0bGlSRlp4aEprcUp6bnBFa0tUcUhka3VTb2pPTUpFblJPYzlJa2hSZEowTzduV2NrU2NwRUo2UHBSbXBYV0VsUy96aTBXNUlVbmNzQlNaS2k2MlEwWFRYTGdraVNSbGNuWVRTZFpVRWtTYU9yazZIZGhwRWtxVk50ZGZGMDBtZGtHRW1TT3RYek1MTFBTSkxVcVo2SGtTUkptWEJvdHlRcE9tdEdrcVRvM005SWtwU2x0c1liT0lCQmtwU2x0aW95aHBFa0tUcWI2U1JKMFRtQVFaSVVuV0VrU1lyT01KSWtSV2NZU1pLaU00d2tTZEVaUnBLazZBd2pTVkowaHBFa0tUckRTSklVbldFa1NZck9NSklrUldjWVNaS2lNNHdrU2RFWlJwS2s2QXdqU1ZKMGhwRWtLVHJEU0pJVW5XRWtTWXJPTUpJa1JXY1lTWktpTTR3a1NkRVpScEtrNkF3alNWSjBocEVrS1RyRFNKSVVuV0VrU1lyT01KSWtSV2NZU1pLaU00d2tTZEVaUnBLazZBd2pTVkowaHBFa0tUckRTSklVbldFa1NZck9NSklrUldjWVNaS2lNNHdrU2RFWlJwS2s2QXdqU1ZKMGhwRWtLVHJEU0pJVW5XRWtTWXJPTUpJa1JXY1lTWktpTTR3a1NkRVpScEtrNkF3alNWSjBocEVrS1RyRFNKSVVuV0VrU1lyT01KSWtSV2NZU1pLaU00d2tTZEVaUnBLazZBd2pTVkowaHBFa0tUckRTSklVbldFa1NZck9NSklrUldjWVNaS2lNNHdrU2RFWlJwS2s2QXdqU1ZKMGhwRWtLVHJEU0pJVW5XRWtTWXJPTUpJa1JXY1lTWktpTTR3a1NkRVpScEtrNkRvSm8xcG1wWkFrRGF1MnNxT1RNTnJWWlVFa1NhT3JyZXl3bVU2U0ZGMG5ZYlEzczFKSWtvWlZXOW5SU1JqdDY3SWdrcVRSMVZaMmRCSkdPN29zaUNScGRMV1ZIWWFSSkNsTFBRK2plN29zaUNScGRMV1ZIWjJFMFRhY2F5Uko2c3p0N1J6VWZoaVZpbE9FUUpJa3FSMTdLUlczdDNOZ3AvT01mdFpGWVNSSm82bnR6RENNSkVsWnlTeU1ydS93ZUVuUzZHbzdNem9ObytzNlBGNlNOTHJhemd6RFNKS1VsWXpDcUZTOEM5amFhV2trU1NObkYvRFRkZy91WnRYdS8remlIRW5TYVBrT3BXSzEzWU83Q2FOdmRYR09KR20wZEpRVmhwRWtLUXVaaDlGMXdCMWRuQ2RKR2cyN2dXOTNja0xuWVZRcTFvQkxPejVQa2pRcUxxZFVuTzdraEc2M0hkL2M1WG1TcE9IWGNVWjBHMGFYQWdlNlBGZVNOTHlxd0JjN1BhbTdNQ29WOTJEdFNKSjBxRzlTS3Q3ZDZVbmQxb3dBUHJPQWN5Vkp3Nm1yYkZoSUdIMkpNR0pDa2lTQUtlQ3ozWnpZZlJpVmludUJmKzM2ZkVuU3NQbGN1NXZwTlZ0SXpRamdJd3M4WDVJMFBMck9oSVdGVWFsNE5YRFZncTRoU1JvR1B3V3U2UGJraGRhTUFON1ZnMnRJa3ZMdDNYT0xJblNsRjJIMGFlQzJIbHhIa3BSUE80Qi9Yc2dGRmg1R3BlSU04SjRGWDBlU2xGZnZvMVRjdjVBTDlLSm1CUEIrNE00ZVhVdVNsQis3Z0lzV2VwSGVoRkZJeExmMTVGcVNwRHg1TjZYaXpvVmVwRmMxSTRBUDRKYmtralJLZHRDalFXeTlDNk5RTy9yTG5sMVBralRvM2tLcHVLc1hGK3BselFqZ0U4RDNlM3hOU2RMZytUSHd2bDVkckxkaEZNYVkvM0ZQcnlsSkdrUi9NamVhdWlkNlhUT0NVdkc3d0FmYlBMcnJDVktTcEdnK1RhbjQxVjVlc1BkaEZMd0IyTmJHY1FYQ1JreVNwSHk0Ri9palhsODBtekFLSFZxdjZLQU1CcElrNWNOcktSWHY2dlZGczZvWlFhbDRDZkN4RHNwaElFblNZTHVFVXZGaldWdzR1ekFLWGdWc2FmUFlNZXhEa3FSQnRRMTRhVllYenphTVNzVTl3RzhBMDIyZVVjTkFrcVJCVXdWK20xSnhSMVkzeUxwbVZCOWQ5NW8yajY0MzF4bElralE0M2tTcGVGbVdOOGcrakFCS3hmY1NKc1MyWXh5WXhVQ1NwRUh3UmVDdFdkK2tQMkVVL0Q1d2RadkhUbUFZU1ZKc1B3WitjeUdiNXJXcmYyRVUxcTU3Sm5Ccm0yYzRvRUdTNHJrTDJOU3J0ZWZtMDgrYUVaU0tkd0tiQ1B0ZnRLT1FZV2trU2EyRnlrT3BlRXUvYnRqZk1BSW9GVzhrQk5LQ2RnV1VKR1ZpR25nMnBlSlYvYnhwLzhNSW9GVDhOcUhKYmlySy9TVkpyVlNCWDZkVS9GcS9ieHduakFCS3hTdUE1OVArSEtRNis1RWtxZmVxaE1FS1g0eHg4MEt0MXQ2enZWRElxUHVtWEhrcThDVmdXVFkza0NUTll4cDRQcVhpRjdLNGVEczVFNjltVkZjcWZoMDRGNWpzNG14clNaSzBNUHVCWjJVVlJPMktIMFlBcGVLM2dET0JyUjJlNldnN1NlcmUzY0NUZTcwM1VUY0dJNHdBU3NYcmdTY0FQK2p5Q3RhU0pLbDlQd0dlUUtuNC9kZ0ZnVUVLSTRCU2NSdndKT0RUWFp4ZHJ5VzVGWVVrcGFzQXAxTXEzaHk3SUhYeEJ6QWtLVmRlQTd5ZHNGWmRONmJuemgyc3dKV2tlR3JBbTRHMzlHT0puMS9jdEkyY0dkd3dBaWhYbmdTVWdXTVdjSlVwUWlCTjlLUk1rcFJQZHdPL1JhbDRhYjl2bkkvUmRHbEt4ZjhBSGc1OGFnRlhXVXdJb2xrNm45TWtTY1BneThERFlnUlJ1d2E3WnRTb1hDa0I3d1kyOU9CcU5SeUpKMmx3OWVvWnRRdDRQZkRoZmpiTE5jdC9NMTJ6Y3VWdzRGMUFLWFpSSktuSGV2MG0rUkxnRlhNRHc2SWF2akNxSzFlZVJxZ2xuUnE1SkpJMGFHNENYa09wK0tYWUJhbkxmNTlSa2xMeGN1Q1J3Q3VCelBaa2w2UWMyUVc4QVRoMWtJS29YZm1zR1RVcVY5WUFmd0s4R2xnVHR6Q1MxSGQ3Z2ZjQzc2QlVITWczNThQYlROZEt1YklXZUMzd2g4QzZ1SVdScE14TkFoOEUza2FwdUQxMllkS01WaGpWbFNzcmdOOG0xSlpPaWxzWVNlcTUyNEIvQUQ1RXFkak5BdE45TjVwaFZGZXVqQUZQQTE0R1hBQXNpbHNnU2VyYUxHRUpudzhEbXlrVlp5T1hweU9qSFVhTnlwV053QXVCRndCbjRCd2pTZm53UGVBendDY0hZWWgydHd5alZzcVZvNEJmQjU0T1BCazM5Wk0wT0E0Q1Z3SmZBVDVIcVhocjVQTDBoR0UwbjNKbEtXR1Y4TE1JK3lrOURzTkpVdjhjQks0bUJOQ1Z3RGNvRmZmRkxWTHZHVWFkS2xjV0FROERIZ0djUmxnWDcyVGdXTHBmUFZ5U3FzRHR3QmJnT3VCNjRGcmdla3JGZ3pFTDFnK0dVYStVS3hPRWxjT1BCVFlDNndscjVDMEhWczRkdFFiN29xUlJ0WFB1ODE1Z0g3Q2RNQ0gvSHNJTzFsc3BGVWQyb2VhZWhwRWtTVm5KNTNKQWtxU2hZaGhKa3FJempDUkowUmxHa3FUb0RDTkpVblNHa1NRcE9zTklraFNkWVNSSmlzNHdraVJGOS84QlJ6c0MwaWFneEIwQUFBQUFTVVZPUks1Q1lJST0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJGSURPXzJfMCIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsiaG1hYy1zZWNyZXQiLCJjcmVkUHJvdGVjdCJdLCJhYWd1aWQiOiI2OTcwMGY3OWQxZmI0NzJlYmQ5YmEzYTNiOWE5ZWRhMCIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOnRydWUsInVwIjp0cnVlLCJ1diI6ZmFsc2UsInBpblV2QXV0aFRva2VuIjp0cnVlLCJhdXRobnJDZmciOnRydWUsInV2QWNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6dHJ1ZSwiYWx3YXlzVXYiOmZhbHNlfSwibWF4TXNnU2l6ZSI6MTAyNCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMSwyXSwidHJhbnNwb3J0cyI6WyJibGUiLCJuZmMiLCJ1c2IiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotMzd9XSwiZm9yY2VQSU5DaGFuZ2UiOnRydWUsIm1pblBJTkxlbmd0aCI6NCwiZmlybXdhcmVWZXJzaW9uIjoyLCJwcmVmZXJyZWRQbGF0Zm9ybVV2QXR0ZW1wdHMiOjgsInV2TW9kYWxpdHkiOjIwNTF9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMy0wNS0wMyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJ1cmwiOiJodHRwczovL3BvbmViaW9tZXRyaWNzLmNvbS8iLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IlBvbmUgQmlvbWV0cmljcyBPRkZQQUQgQXV0aGVudGljYXRvciIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjMwNTAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIzLTA1LTAzIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjF9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjMtMDctMTAifSx7ImFhZ3VpZCI6IjhkYTBlNGRjLTE2NGItNDU0ZS05NzJlLTg4ZjM2MmIyM2Q1OSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiOGRhMGU0ZGMtMTY0Yi00NTRlLTk3MmUtODhmMzYyYjIzZDU5IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkNhcmRPUyBGSURPMiBUb2tlbiJ9LCJkZXNjcmlwdGlvbiI6IkNhcmRPUyBGSURPMiBUb2tlbiIsImFsdGVybmF0aXZlRGVzY3JpcHRpb25zIjp7ImRlLURFIjoiQ2FyZE9TIEZJRE8yIFRva2VuIn0sImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH0seyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUJtekNDQVVHZ0F3SUJBZ0lKQUtJRm50RU9RMXRYTUFvR0NDcUdTTTQ5QkFNQ01GTXhDekFKQmdOVkJBWVRBa1JGTVE4d0RRWURWUVFLREFaRFlYSmtUMU14SWpBZ0JnTlZCQXNNR1VGMWRHaGxiblJwWTJGMGIzSWdRWFIwWlhOMFlYUnBiMjR4RHpBTkJnTlZCQU1NQmtOaGNtUlBVekFlRncweU5EQTJNRFF3T1RRd05UZGFGdzB6T1RBMk1ERXdPVFF3TlRkYU1GTXhDekFKQmdOVkJBWVRBa1JGTVE4d0RRWURWUVFLREFaRFlYSmtUMU14SWpBZ0JnTlZCQXNNR1VGMWRHaGxiblJwWTJGMGIzSWdRWFIwWlhOMFlYUnBiMjR4RHpBTkJnTlZCQU1NQmtOaGNtUlBVekJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCT3M1KzYzWDVtaVJuRFZxbkVJVUtkNCtLekorQVROL1Z4V2lCZ05tQU9PRW8xQU1WbnhCQUlmNC9haGo1Q3lwdURpTEZBY0NTdkxBTFQ0TG1JUWl2WDh3Q2dZSUtvWkl6ajBFQXdJRFNBQXdSUUlnSE1UNXltSUk1NVVyaCtKNWgwdkswR3A4TFZsclQ3QlJWN1BqSW9lM0QxNENJUURmQ1hnTUFHTnBHZm83NVdPV3FLcTh2V0l5TG0wdS9jVWx1dmRyTDdjWlN3PT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCwvOWovNEFBUVNrWkpSZ0FCQVFFQVlBQmdBQUQvNFFBaVJYaHBaZ0FBVFUwQUtnQUFBQWdBQVFFU0FBTUFBQUFCQUFFQUFBQUFBQUQvMndCREFBSUJBUUlCQVFJQ0FnSUNBZ0lDQXdVREF3TURBd1lFQkFNRkJ3WUhCd2NHQndjSUNRc0pDQWdLQ0FjSENnMEtDZ3NNREF3TUJ3a09EdzBNRGdzTURBei8yd0JEQVFJQ0FnTURBd1lEQXdZTUNBY0lEQXdNREF3TURBd01EQXdNREF3TURBd01EQXdNREF3TURBd01EQXdNREF3TURBd01EQXdNREF3TURBd01EQXdNREF6L3dBQVJDQUF5QURJREFTSUFBaEVCQXhFQi84UUFId0FBQVFVQkFRRUJBUUVBQUFBQUFBQUFBQUVDQXdRRkJnY0lDUW9MLzhRQXRSQUFBZ0VEQXdJRUF3VUZCQVFBQUFGOUFRSURBQVFSQlJJaE1VRUdFMUZoQnlKeEZES0JrYUVJSTBLeHdSVlMwZkFrTTJKeWdna0tGaGNZR1JvbEppY29LU28wTlRZM09EazZRMFJGUmtkSVNVcFRWRlZXVjFoWldtTmtaV1puYUdscWMzUjFkbmQ0ZVhxRGhJV0doNGlKaXBLVGxKV1dsNWlabXFLanBLV21wNmlwcXJLenRMVzJ0N2k1dXNMRHhNWEd4OGpKeXRMVDFOWFcxOWpaMnVIaTQrVGw1dWZvNmVyeDh2UDA5ZmIzK1BuNi84UUFId0VBQXdFQkFRRUJBUUVCQVFBQUFBQUFBQUVDQXdRRkJnY0lDUW9MLzhRQXRSRUFBZ0VDQkFRREJBY0ZCQVFBQVFKM0FBRUNBeEVFQlNFeEJoSkJVUWRoY1JNaU1vRUlGRUtSb2JIQkNTTXpVdkFWWW5MUkNoWWtOT0VsOFJjWUdSb21KeWdwS2pVMk56ZzVPa05FUlVaSFNFbEtVMVJWVmxkWVdWcGpaR1ZtWjJocGFuTjBkWFozZUhsNmdvT0VoWWFIaUltS2twT1VsWmFYbUptYW9xT2twYWFucUttcXNyTzB0YmEzdUxtNndzUEV4Y2JIeU1uSzB0UFUxZGJYMk5uYTR1UGs1ZWJuNk9ucTh2UDA5ZmIzK1BuNi85b0FEQU1CQUFJUkF4RUFQd0Q5L0tLSytWLzJwZER1UGpiKzJQNEcrR3VvYXhyT20rRmJ6Ulo5VnVvTk51VGJ0ZFRBekJkNTVCQThsTVpCeGxzWUxacmd6SEhQQzBsT01lWnRxS1Y3WGNta3J2b3RkZC9ROWpKTXFXUHhEcFRueVJqR1U1U3RlMFlSY25aYVhlbGtyclhkbytxS0svT3ZYTlAvQUdiL0FBL3IxL3B0eHF2eFphNDAyNmx0SnZMa0xLSkkzS05nN2VtUWZ3cXI1LzdOT2Y4QWtLZkYzL3ZvL3dEeE5mT1BpdXpzMVQvOEcvOEEyaDl4SHc2NWtwUitzV2V2KzdQci93QnhUOUhxSy9PRHdwYy9EdGYyZy9oZ1BoZmUrUHJpOGJ4SmJEVVJxalB0K3o3MXpqQUhHTjI3UEczT2VLL1Irdll5Zk4vcjhadmxTNVdsZFM1azdwUFIyWGV6MFBsK0orRzNsRXFTY3BQMmtXN1RoeVNWcE9Pc2VhVzlycDMxUVVVVVY3Ujh1RmZMSDdVbXNYWHdWL2JHOERmRXUrMFhXdFQ4SzJlaXo2WGR6YVpiRzRlMWxKbTI3eHdGQjg1Y0VrWncyTWtZUDFQWHovOEF0S2ZISHgxYS9ISHd2OE0vaDcvWWRqcm12V0V1cDNHcGFzanlRd1JKNW1GVlZ6OHg4cDhrcTNWUmdaTEw0dWZLSDFaT1RhYWxGeHNydm01bHlxMmw3dlRkZXFQcU9EM1YrdnVNSXFVWENvcDgwdVZLRGcrZDh5VGFzdFU3UFcyajJQTy9ncisyTDhLL2dQcC9pQzIwZlRQaWRjUitJdGF1TmR1VGVhWEc3Unp6S2l1cWJXWENBUnJnSEo2OG50Mm4vRHp2d0YvMEJQSG4vZ29IL3dBY3Fqb2VtL3RGK0o0N2x0TitKSHdxMUJiT2RyV2RyV0V6Q0NaY2JvMzJ3bmE0eU1xZVJrY2Mxb2Y4SUgrMDkvMFBIdzUvOEFuL0FQakZlRGg4Um1OT21vVVZMbFcxcVViZituVDYvRjRMSks5WjFjUTRPYjNieEVyL0FELzJjMHZBMy9CUkx3TDQ3OGI2VDRmZ3NmRmxsZTY1Y2kwdFh2ZE44cUpwRDBCTzhuazRHUURqUE9Ca2ozeXZsMXYyYWZqSjhRUGkzNEgxengzNHE4RzZocC9nN1UvN1FTT3dna2ptYjdwWlFQS1VIT3hSeVJqazg5RDlSVjcyVFZzWlVqUDYydG43cmNWRnRXVjlGS1hXNjNQa09Kc0xsZENkSlpaSk84VzVwU2MwcGN6U3RKd2hlOGJONmFOaFJSUlh0SHk0Vjh2L0FCYjF1ejhOL3dEQlRINGUzbW8zVnZZV2orRnA0bG51SkJGR1h6ZC9MdWJBenlPUGNlb3I2Z3JpL2k1OEEvQi94NDB1M3MvRjJnMmV0Uldiczl1MGhlT1dBdGdOc2tSbGRRMjFjZ0VBN1Z6bkFyemMxd2xURVVvcWxibWpLTWxlOW55dE96dGUxKzluNkh1OFBabFF3ZUpsTEVwOGs0VGcrV3phVTR1TjBtMG0xZTltMWZ1ajVyOEcvQy80ay9DTFV2RTBmZy80cS9DM1RkSzhRNjdkNjJZYmlWWnBBOHhBR1N5SEdFU01ZQnhrSDFyYysyL0hUL29zdndqL0FPK1kvd0Q0MVhjZjhPMnZnb2YrWkpYL0FNR3Q5LzhBSHFYL0FJZHMvQlgvQUtFbVAvd2FYMy94NnZuYWVTNCtuSGxwcEpkbFdxSmYra0gyOWJpakpxc3ZhVnBPVXRMdDRTZzI3SzJyZGJVOHZ1ZmpWOFhQaGw4V3ZoL3ArdWVQUEF2aW5UUEZXdVE2WmNRYVRieHM4YU82S3haZ3FsZUc0SVBVZHhrVjloMTQ3NE8vWUwrRS93QVAvRlZocldrK0VZYlhVOUxtVzV0Wld2N3VYeTVGT1ZiYThwVWtIQkdRY0VBOVFLOWlyMnNud21Lb0tmMW1WN3RXWE5LZGxaWDFrazlYcnNmS2NVWmxsMkxsU2VYd3R5eGFrL1p3cDh6NW0xN3NKU1dpc3IzdXdvb29yMmo1WUtLS0tBQ2lpaWdBb29vb0FLS0tLQVAvMlE9PSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIkZJRE9fMl8wIiwiRklET18yXzEiXSwiZXh0ZW5zaW9ucyI6WyJobWFjLXNlY3JldCIsImNyZWRQcm90ZWN0Il0sImFhZ3VpZCI6IjhkYTBlNGRjMTY0YjQ1NGU5NzJlODhmMzYyYjIzZDU5Iiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsIm5vTWNHYVBlcm1pc3Npb25zV2l0aENsaWVudFBpbiI6ZmFsc2UsImNyZWRNZ210Ijp0cnVlfSwibWF4TXNnU2l6ZSI6MTAyNCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMSwyXSwidHJhbnNwb3J0cyI6WyJ1c2IiLCJuZmMiXX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTEwLTAxIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiQ2FyZE9TIEZJRE8yIFRva2VuIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNDEwMDEwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMC0wMSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTAyLTE4In0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiYmY3YmNhYTBkMGM2MTg3YThjNmFiYmRkMTZhMTU2NDBlN2M3YmRlMiIsIjMwMTJiNjYwOTJhMTZkM2Q3Njg3MjQxNjM0YjIwYTNiZGUyNjM0ZTgiLCI3NTMzMDBkNjVkY2M3M2EzOWE3ZGIzMWVmMzA4ZGI5ZmEwYjU2NmFlIiwiOTg1NTJhZWE0NTYzNzBlMjJlMTkwMWUzMTgxNzM1OTE0MmI5Mjg4OCIsImI3NTNhMGU0NjBmYjJkYzdjN2M0ODdlMzVmMjRjZjYzYjA2NTM0N2MiLCJiNmQ0NGE0YjhkNGIwNDA3ODcyOTY5YjFmNmIyMjYzMDIxYmU2MjdlIiwiNmQ0OTFmMjIzYWY3M2NkZjgxNzg0YTZjMDg5MGY4YTFkNTI3YTEyYyJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyJiZjdiY2FhMGQwYzYxODdhOGM2YWJiZGQxNmExNTY0MGU3YzdiZGUyIiwiMzAxMmI2NjA5MmExNmQzZDc2ODcyNDE2MzRiMjBhM2JkZTI2MzRlOCIsIjc1MzMwMGQ2NWRjYzczYTM5YTdkYjMxZWYzMDhkYjlmYTBiNTY2YWUiLCI5ODU1MmFlYTQ1NjM3MGUyMmUxOTAxZTMxODE3MzU5MTQyYjkyODg4IiwiYjc1M2EwZTQ2MGZiMmRjN2M3YzQ4N2UzNWYyNGNmNjNiMDY1MzQ3YyIsImI2ZDQ0YTRiOGQ0YjA0MDc4NzI5NjliMWY2YjIyNjMwMjFiZTYyN2UiLCI2ZDQ5MWYyMjNhZjczY2RmODE3ODRhNmMwODkwZjhhMWQ1MjdhMTJjIl0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IDUgU2VyaWVzIHdpdGggTGlnaHRuaW5nIn0sImRlc2NyaXB0aW9uIjoiWXViaUtleSA1IFNlcmllcyB3aXRoIExpZ2h0bmluZyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyLCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50IiwicmVtb3RlX2hhbmRsZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURIakNDQWdhZ0F3SUJBZ0lFRzBCVDl6QU5CZ2txaGtpRzl3MEJBUXNGQURBdU1Td3dLZ1lEVlFRREV5TlpkV0pwWTI4Z1ZUSkdJRkp2YjNRZ1EwRWdVMlZ5YVdGc0lEUTFOekl3TURZek1UQWdGdzB4TkRBNE1ERXdNREF3TURCYUdBOHlNRFV3TURrd05EQXdNREF3TUZvd0xqRXNNQ29HQTFVRUF4TWpXWFZpYVdOdklGVXlSaUJTYjI5MElFTkJJRk5sY21saGJDQTBOVGN5TURBMk16RXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFDL2p3WXVoQlZscWFpWVdFTXNyV0Zpc2dKK1B0TTkxZVNycEk0VEs3VTUzbXdDSWF3U0RIeTh2VW1rNU4yS0FqOWFidlQ5TlA1U01TMWhRaTN1c3hvWUdvblhRZ2ZPNlpYeVVBOWErS0FrcWRGbkJubHl1Z1NlQ09lcDhFZFpGZnNhUkZ0TWprd3o1R2N6MlB5NHZJWXZDZE1IUHR3YXowYlZ1em5ldWVJRXo2VG5RakU2M1JkdDJ6YnduZWJ3VEc1WnliZVdTd2J6eStCSjM0WkhjVWhQQVk4OXlKUVh1RTBJek1aRmNFQmJQTlJiV0VDUktnanEvL3FUOW5tRE9GVmxTUkN0MndpcVBTemx1d24rditzdVFFQnNValRHTUVkMjV0S1hYVGtOVzIxd0lXYnhlU3lVb1RYd0x2R1M2eGx3UVNnTnBrMnFYWXdmOGlYZzdWV1pBZ01CQUFHalFqQkFNQjBHQTFVZERnUVdCQlFnSXZ6MGJOR0poamdwVG9rc3lLcFA5eHY5b0RBUEJnTlZIUk1FQ0RBR0FRSC9BZ0VBTUE0R0ExVWREd0VCL3dRRUF3SUJCakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBanZqdU9NRFNhK0pYRkNMeUJLc3ljWHRCVlpzSjRVZTNMYmFFc1BZNE1ZTi9oSVE1Wk01cDdFamZjbk1HNEN0WWtOc2ZOSGMwQWhCTGRxNDVyblQ4N3EvNk8zdlVFdE5NYWZiaFU2a3RoWDdZKzlYRk45TnBtWXhyK2VrVlk1eE94aThoOUpESWdvTVA0VkIxdVMwYXVuTDFJR3FyTm9vTDltbUZuTDJrTFZWZWU2L1ZSNkM1K0tTVENNQ1dwcE11SklaSUkydjlvNGRrb1o4WTdRUmpRbExmWXpkM3FHdEtidzd4YUYxVXNHLzV4VWIvQnR3YjJYMmc0SW5waUIveXQvM0NwUVhwaVdYL0s0bUJ2VUtpR24wNVpzcWVZMWd4NGcweExCcWNVOXBzbXlQeksrVnNndzJqZVJRNUpsS0R5cUUwaGViZkMxdHZGdTBDQ3JKRmN3PT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZkNBWUFBQUNHVnMrTUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFIWVlBQUIyR0FWMmlFNEVBQUFiTlNVUkJWRmhIcFZkN1ROVjFGRC8zZDU5d2VRU0lnUzlBUUFYY0ZMQVFaaTlmcGVWejF0WS9XVFpyNVd4cGM3VzVrbkxhNWpJM1o4NXNyUzJuTTJzanRXd1pTN0lVSDRINHhDbkVReDREQVpGNzRWN3VzODg1djkvbEluQnZWSi9CNFB2OW51LzVudS81bnZNNTU2ZnpBL1F2MEhiL0lyWDNWRktQbzQ1Y25tNGluVUlXWXdMRlJtWlFVdXdqRkcvTjFpUkhoMUVaME5SVlJ1ZHF0MUJkKzJuU0t5Uy9PaHlzMCtsazNlLzNrUTlxdkQ0WlV0YTRWVlNVdVkwZWlweWlUaEFmb2NvT1JWZ0R1dXczcUtSaUFkM3JiY0V0alRqWUlvZjZXYUhzQ216VlBXQ014K2NnaDh0THFXTUthTVdzVWpMcW8yUnRKSVEwb096bWVycFF1NGVzWmdzT05rR3hIN2Qwa2R2VFQxN3M0T01VN1ZJOFpoamdHYU0rQXE5aUVOdThQaWYxdWR6MDdNd3ZLV2Y4R2xWb0NFWTA0UEM1V2RUYVhZRmJSOHZOdkw1KzNLZ2ZiNXhOTXlhOVJhbUppeW5hTWxHVFZ0RmxyNmJhOXUrcHFuRVg0dU11UlJnalNZRWhyTjd1dEZGZTZscWFsN05ma3c1aW1BR0h5blBwYms4Vm1ZMHhzdG5wdGxGQ1ZDWXR6VHVCTjgzUXBNTGpUdGV2ZFB6U1VuSjdlOG1ranhaMzlmWGJLRGZsZFpxYnZVK1RVZ0duQlZGNmZRMmlQSGc0VzE2VVdVd3Z6YmsxNnNNWkUrUG4wcHZ6N0pTZXVBeWVzOGxjcENtYUt1by9wK3FXcjJVY3dJQUhXcnZQMFlFemhYQXRMQWJzc0hocDdpR2FtdnlpalA4cnlxclhVV1g5WG9vd3h5QXVmTkJycDQzUE9CRlhabGtmOE1EUmlxY3B5b3dBd3B1ejJ4K2ZXdnovRHRkZTlzbXN6eWd0Y1I2QzF3YmR6Qmw2T2xxNVdOWVk0b0dhdGhKTXJrVEV4MGpBUlNIQVZzKzVyWWtRTlhiK1FnZlBMc1E2Z1h5SW5zcmVRZm1wbTdSVkZZZkw4Nm4xZmlVT2tZdlNoa1VQeHZidWt6b3k2SzFpaE0xaG8zWHpXNkV2U2ZYQStkcGlXR2FXZCtkb1h6THptR3dLWUZMQ0FzUkFsUEJBaE1sQ0ZYVTd0QlVWUHI4SGdWY0pIV3ErRjAwcGxyK0RNVGRyUDR6dnhZMTFrTk1oeFQrU2VUR2crZDRWNUxRSml0eVVHSk5COFZGWnNqZ1lCWk0vSUkvWENUa2owcXlET3BGMkFWUTE3Q0lqVXAvRG5UMVVrTDVGNWdkaitzUzF3ZzFnRTNnaWdtNjBmQ1h6U25QWGJ5QVBiSVh2K0lEcEUxNlRoYUhJUzlza3lobG1NRTVGM2NmcUFLaHEyQzBFNVBIMWdZYVhhTFBEa1pHMEhESk9uS1dIcDUxSTB6NVNPdXg4ZTFXQXVaemRIUXJUa3A4VG1qWG9JK2xhMHdHWnN6dWJxYk8zaWZRNkEvVzd2VlNZc1YzbVIwSkt3a0tjNFdIaUJrbVI4STNDQ2dJODdvT0w0cXpUNVArUlVKQmVqRU9nQVBLOGhZUHphdE0rZUlUcDJJTzl5VFFtZXJvbVBSeHgxcXhBY3NpbGUvdWJTZUViY1dRR1lFQ2doY0xZMkh5S2pvZ2pIMjVoTXBqcFV2MU91Z2xpNGVoMmVSdzBPMzJiSmpreXVDZ056ZzB2emxZTVNpU3MwdW9vNE1HN2hNT2pDRWFYMXlGRTBuU3ZqQnp1VG5FcEs4Nlo4SW9xRkFJdWJ3OGtnOUFyRWFSRVdTWkkrakg0WGJwNmc5RTlFbkpUM29hUnpETitNVUpCUURIbjU2YThvVW1FQnVzT3hCcy9ONSt0SkViUGtBRkRqOFVHdk9zL0lXdmNTZ2xHQmh2UzcvRlRZZnBXR1lkRFk4ZlBBeFdTQTM1c1RDNHA0K0xtNEFhcUlvUGVRdGZ1Zks2SmgwWmh4bGJzVVhPU21YTmlmRDVaVEFreURvZmJiY2NseG5BOFdOQXF4Q2JSTnlraFh4UXBhRHc2N2ZYVVlic2lHMEtodHYyb2VJdmg4cmhRTVlPY0VBcVhHL2VJK3puZ09jNXl4cjhxODJJQU0xYy9GTEZPcGxxdTVlRlFYck1aekdjVkNqWWJMV0c1STRCVDFldVJybGJ4dE5PdE1pdERERWhMWElJeW5BQXZ1T0VXRTNYM05kQWZ0OTRWZ2FHNDJYSVF0MFpYNlBlQ0UvcVFGZTlySzZIeDdZVTUwS3ZIN2ZXNGZTK3E3S0tCSnhzZ2dCWDVwU0FHaDFqSXJWaDV6UTZ3M1JmYWFoQlhtL2FDYkNaVGpDVUZVVHlXWnFXOXA2Mk1qSlBYVnFPclBnTU80TnY3NEdrZitvd2Z0TlZCRFFuakZKcUhTdzE3cFh2aFdXNUtacWUvUTQ5Ti9VU1RDQVZXb1FYRklIQkhYWGUzRlByVURzdUdEbXRGL2hIS1RIcGVreGhpQU9QSStTSnE2UzZIRjRJOVlXemtCSlRvNDZpVU16V3A4UGlyL1JpZHVMeEtZc1Nrc1Y4dkxsT1F2aEdYMllsUjBPQmhCakMrdS9nRWN2WTBBcEs3WWs0MU54alBTUW5XRkhURjY2VXJqZ2V2QjhDdTVhK2wydllTUlB0dVZEbzczaGhkTVNIblVYN3RUanNWWkd4QWwvV3B0aU9JRVExZ25MMjltWDYvdFIxdG1sa1lqOFc0WCtDU2pXY1VER1kxTnBTL0M3aFNLcWlNTE0vbDJRbVNXWjczRGR6K2dpbzhCQ0VOWVBRNDZxbmt6d1hVYnF2Qmt4alVRc1dmWkZnYnVvM3JBZit3TjdqT085MCt5bng0UGkzTCswbllMMVNjaERVZ0FQNGdQVi83SWQxcSsxSFNobXVHa0lxV1JQZ3l4TUZxUDhIZmpUbmpYd1k1YlFmYkpjdDZPSXpLZ01Ib3RGL0hlMWVnc2F4SFNxRzZ3ZmRtUTV4OE55VEZGcUJjcDJpU293SFIzeWs1KzM2aEY3dlhBQUFBQUVsRlRrU3VRbUNDIn0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjAtMDUtMTIiLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ill1YmlLZXkgNUNpIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVMkYxMTAwMjAxOTEwMTcwMDciLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMS4xIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjMifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjAtMDUtMTIifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIwLTA1LTEyIn0seyJhYWd1aWQiOiI4OWIxOTAyOC0yNTZiLTQwMjUtODg3Mi0yNTUzNThkOTUwZTQiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6Ijg5YjE5MDI4LTI1NmItNDAyNS04ODcyLTI1NTM1OGQ5NTBlNCIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJTZW50cnkgRW50ZXJwcmlzZXMgQ1RBUDIgQXV0aGVudGljYXRvciJ9LCJkZXNjcmlwdGlvbiI6IlNlbnRyeSBFbnRlcnByaXNlcyBDVEFQMiBBdXRoZW50aWNhdG9yIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InZvaWNlcHJpbnRfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJibHVldG9vdGgiXSwidGNEaXNwbGF5IjpbImFueSIsImhhcmR3YXJlIl0sInRjRGlzcGxheUNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbiIsImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlGOURDQ0E5d0NDUURTYlBlUHY3ekdxakFOQmdrcWhraUc5dzBCQVFzRkFEQ0J1ekVVTUJJR0ExVUVBd3dMVTBWT1ZGSlpJRkpQVDFReExUQXJCZ2txaGtpRzl3MEJDUUVXSG0xaVpXNXVaWFIwUUhObGJuUnllV1Z1ZEdWeWNISnBjMlZ6TG1OdmJURWZNQjBHQTFVRUNnd1dVMlZ1ZEhKNUlFVnVkR1Z5Y0hKcGMyVnpJRTlTUnpFaU1DQUdBMVVFQ3d3WlFYVjBhR1Z1ZEdsallYUnZjaUJCZEhSbGMzUmhkR2x2YmpFTE1Ba0dBMVVFQmhNQ1ZWTXhDekFKQmdOVkJBZ01BbEJCTVJVd0V3WURWUVFIREF4WFpYTjBJRU5vWlhOMFpYSXdIaGNOTWpJd016RTJNVGMxTURNeFdoY05ORGt3T0RBeE1UYzFNRE14V2pDQnV6RVVNQklHQTFVRUF3d0xVMFZPVkZKWklGSlBUMVF4TFRBckJna3Foa2lHOXcwQkNRRVdIbTFpWlc1dVpYUjBRSE5sYm5SeWVXVnVkR1Z5Y0hKcGMyVnpMbU52YlRFZk1CMEdBMVVFQ2d3V1UyVnVkSEo1SUVWdWRHVnljSEpwYzJWeklFOVNSekVpTUNBR0ExVUVDd3daUVhWMGFHVnVkR2xqWVhSdmNpQkJkSFJsYzNSaGRHbHZiakVMTUFrR0ExVUVCaE1DVlZNeEN6QUpCZ05WQkFnTUFsQkJNUlV3RXdZRFZRUUhEQXhYWlhOMElFTm9aWE4wWlhJd2dnSWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUNEd0F3Z2dJS0FvSUNBUUNsWTVwdHRBMlJCNjhtRkk0OVIvcmxTRVhPNVVNdUdOY2p1aGIxdFZZb084VkxmbmpvWFMzRU0rSmhYN3kwV2x6VVQ4Mi9CZFFOaWttYTVoNnJqVDU2Z243dlo3d1l2NGRYS3ZZdXdrZFZuK2FuTkJjYUVSWXh5QkVGV1dncUxaN3FWblhJYVlLdnpwS3I1cElSU0ZhUWFLM3p1em0wcUM1alRMRWl0c2M1TmlNaG1lN2pPVUhyRGZMM1RyT2R0SnpXUjBkcWpGUWt0MjhOcHM4M3F5dXZ6YkFvTkJhclkzYUh6SDNlaGY4ZGc3a2ZGc0h2bWF2SXBTbTVuajJXSkVpM0srNzZyaGpoSExBblRubnRPK3A4NjFsWFVCOVpEMnhHcXNRbXNscEtNUkhWTHd2QlZoSXJKUzl0SllMUzlmZGF0NWlBSWhrQ0ZWVE5xdEFKRUFjK1F0WnF5bEpZdmN2K1ZyRDNsWU1JSTRqbjAzZ1BQemRrOHQxalBMZHcwSDRrN2tBcExlM1gzTUkxSU94ZG1zMk1tTnJ2TmJFOHF4ZmdReTNNdkhtVG1WVXdmZzdpN2Z6T0k4ckdIc3hsZG41WkVGZHJnRytveGk5NHFMTFpjVnA4bnZ3M1lCSW5wVXZQSlE4UVZVZVZWcHdRa2poWS9lODFYY2lkMndnaEFwZ201aEJKOFRmWW44ZGdEMDF2Yk4zalhNVE5uTCt1ck82UUczYlRHZ0dHNzRCZzc2VGdKbk9UZFlGWVlRYmk5eXFhSUYyUDVHZ0dVKzBSWjAxUVUyNWpuVEVGTlFxblVGMHRaRTJKSEFObit0cmtuRTdMMUd5RTlxdXBsTWthbTRodG1TdVQxc2pROGhBa2J1ZzA4ZEJiK2ZRZjhGUDhpb2tEYitPYStoM2JvUUlEQVFBQk1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQ0FRQ054ekllMVQ0V1hobjBGbHNiWmdTZS91RWQ1SHRSUDRXYVZzdUUwZTMwV3JVVk56VWFoVHlqOVRVVEpVQ1M3ZjRtcE5Ed25ObWR0b01lWUpuK0cxL2wwS0JpSldDMjBzY2gwcHlxZVZoYWRvMk84VzRXT2MvaVdHcmRGbmYxanB1d3lTbG0xSDZpNGQrL2ZKMlcwbEszQ2FQMFlGM3hTR1VyU1JKZzlhWkhvaHBONzlTWUZzbWozNHg4VytDa0ZtVFlRbzZhNlJOUytxalRDYURYUEhjdzRFRzBZZmpoZFVSTWk2UjdrcnZ4ZHVtYlBSdUJSc29OODZkWEtwWXV1S0RjUy9TWlF4Y2E5d0UzRWd4UmxDd0ZkUHJjMmVndHI1Q2JuVFptSGdCcDQ5eGEwbGlsYzJFSFFZeW1HTGsyU1htdnNLVEx4cnUvbGdWejhNdnl4ak1kdmFVS1ZGYWtJakROL2xWQVdaVFozbUU0RE0rMm9MQkdVQjdmcVdJRTlFVjVSQ0s3bzhIMTkrUWhVOHZzUDE0MlorS0ErcEVGSEV1V1oyb1U3eGo1UVNLMVB5b1NYM054dzFKQi9sTytDUElacmRkQ0xDcGdXZlg0WlQ0NjN4dG5aMUNpR3lNQ1VPaTNLT2lHTnMyU1NCalNZSU9kcGl2b09GR0EzYVVNb21IR1phcHBnb3RSS2VlbUtIZmRMclRCRldIdlFxQnllTVcxa05uRXFENTNGclMxK2EvcG5lY0poTGVvV25Pc280b29TdGtMaEFsZXVRVitqMlhCbXhKbnBaMjF3MzQ3aFVNZHlQOWY4WGNGZTZmOXkyVmtIelJDZWlZN0h0ZXVROTNZeFc4OGM0RWlyWGpoRitXZWQyZG40MTBtNVhkZkJNUGZhNjY4UmF1K3FnPT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBRUFBQUFCQUNBWUFBQUNxYVhIZUFBQUFBWE5TUjBJQXJzNGM2UUFBQU1abFdFbG1UVTBBS2dBQUFBZ0FCZ0VTQUFNQUFBQUJBQUVBQUFFYUFBVUFBQUFCQUFBQVZnRWJBQVVBQUFBQkFBQUFYZ0VvQUFNQUFBQUJBQUlBQUFFeEFBSUFBQUFWQUFBQVpvZHBBQVFBQUFBQkFBQUFmQUFBQUFBQUFBQklBQUFBQVFBQUFFZ0FBQUFCVUdsNFpXeHRZWFJ2Y2lCUWNtOGdNaTR6TGpZQUFBQUVrQVFBQWdBQUFCUUFBQUN5b0FFQUF3QUFBQUVBQVFBQW9BSUFCQUFBQUFFQUFBQkFvQU1BQkFBQUFBRUFBQUJBQUFBQUFESXdNakk2TURNNk1UZ2dNVFE2TURVNk1EWUFjMGZqeUFBQUFBbHdTRmx6QUFBTEV3QUFDeE1CQUpxY0dBQUFBN0JwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFBRHg0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJbGhOVUNCRGIzSmxJRFl1TUM0d0lqNEtJQ0FnUEhKa1pqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWo0S0lDQWdJQ0FnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJS0lDQWdJQ0FnSUNBZ0lDQWdlRzFzYm5NNmRHbG1aajBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5MGFXWm1MekV1TUM4aUNpQWdJQ0FnSUNBZ0lDQWdJSGh0Ykc1ek9tVjRhV1k5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdlpYaHBaaTh4TGpBdklnb2dJQ0FnSUNBZ0lDQWdJQ0I0Yld4dWN6cDRiWEE5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM4aVBnb2dJQ0FnSUNBZ0lDQThkR2xtWmpwWlVtVnpiMngxZEdsdmJqNDNNakF3TURBdk1UQXdNREE4TDNScFptWTZXVkpsYzI5c2RYUnBiMjQrQ2lBZ0lDQWdJQ0FnSUR4MGFXWm1PbGhTWlhOdmJIVjBhVzl1UGpjeU1EQXdNQzh4TURBd01Ed3ZkR2xtWmpwWVVtVnpiMngxZEdsdmJqNEtJQ0FnSUNBZ0lDQWdQSFJwWm1ZNlVtVnpiMngxZEdsdmJsVnVhWFErTWp3dmRHbG1aanBTWlhOdmJIVjBhVzl1Vlc1cGRENEtJQ0FnSUNBZ0lDQWdQSFJwWm1ZNlQzSnBaVzUwWVhScGIyNCtNVHd2ZEdsbVpqcFBjbWxsYm5SaGRHbHZiajRLSUNBZ0lDQWdJQ0FnUEdWNGFXWTZVR2w0Wld4WlJHbHRaVzV6YVc5dVBqWTBQQzlsZUdsbU9sQnBlR1ZzV1VScGJXVnVjMmx2Ymo0S0lDQWdJQ0FnSUNBZ1BHVjRhV1k2VUdsNFpXeFlSR2x0Wlc1emFXOXVQalkwUEM5bGVHbG1PbEJwZUdWc1dFUnBiV1Z1YzJsdmJqNEtJQ0FnSUNBZ0lDQWdQSGh0Y0RwTlpYUmhaR0YwWVVSaGRHVStNakF5TWkwd015MHhPRlF4TkRveE1Ub3pNUzB3TlRvd01Ed3ZlRzF3T2sxbGRHRmtZWFJoUkdGMFpUNEtJQ0FnSUNBZ0lDQWdQSGh0Y0RwRGNtVmhkR1ZFWVhSbFBqSXdNakl0TURNdE1UaFVNVFE2TURVNk1EWXRNRFU2TURBOEwzaHRjRHBEY21WaGRHVkVZWFJsUGdvZ0lDQWdJQ0FnSUNBOGVHMXdPa055WldGMGIzSlViMjlzUGxCcGVHVnNiV0YwYjNJZ1VISnZJREl1TXk0MlBDOTRiWEE2UTNKbFlYUnZjbFJ2YjJ3K0NpQWdJQ0FnSUR3dmNtUm1Pa1JsYzJOeWFYQjBhVzl1UGdvZ0lDQThMM0prWmpwU1JFWStDand2ZURwNGJYQnRaWFJoUGdxS1k3VmxBQUFFN1VsRVFWUjRBZTJWYjBqZFZSakh6M04rVisvVlhaMlZBMVBaREdTUndncER5RmVqUDh5Z0lNaEZGR1U1MklLVlNMVFZMR2lYaWpacXpTRldRMktRTk5aNjBZdU54ZGlZanY3UVFIdFJVN1laYWRaeW9HWmNONjk2cjcvejlIMnU5OXpkM2JTOTFwMGZuSHZPNy9sM251ZHpudk83U3JuSEVYQUVIQUZId0JGd0JCd0JSOEFSY0FRY0FVZkFFWEFFSEFGSHdCRndCQndCUjhBUmNBUWNBVWRBcVVqUGNPZ3JabThsczlDTEZjZEtFVWNpbXZ4ci9SZk85SGRIZWdaS0ZyTmJDVExLTGlMV1ZsbW5QWE1HOGx5TVJ6K28vcm9TVFhBQWhxZU5GMzRxOHVCZHM5ayt5L2s5RFlBL3JhaUlKN3dqclBoMnJmaDVaaDFqNGlNb3pvOEcxalFlWFAvWkZrV3FJZS9pdDdXeDhmSEpTQ1FTWDg2RjI5elRWMkEyb1g4MHhKMWVpZGxHcGR6bGxaazNnczFERzRocGIrSDhSUGZiM3pmdklGWTVtZ1AxNFR0SzJtd0FPek9JWlkwazNDeFoya2I4b0NQUjJ4alpzcVY4cmM5aWVoc0x1ditOYmUzU201dmIvSnJBbmFhVnREckdTai9uTlF3M0Vpa090dnoyWldneVZLcDI5L2ppaEtpNEFycmNCc0JHVmI3dnp4aklzOGFma2dSazE3TGtTYnM1NW1walRHdEtkMEtLU2NWOFFtVHl2cFF2NUJQUWw2VjhiOWpYTjJZYXVyVVlSNkdQMlR4bHhuNHQ0cE1wczV1cVlCNE40ZVAzOFllaFl4VzVtNGY2cEhoclNKR0JPQkZLUi8wb2ZnWm5WMlIxQ1BxcUlnckJvSEtXcUVLR0pscUhjWi80d0M0SDgwOVdsOUt2eFFmbUVuU3l2M1JGRFJJYnhWd015aUxMd1dDSkV5TXE5NG5xUkdhSUhwWjNqTHVSaEhTWXlCNVB5Y3JuaVdvZ3l6ZEtiVWVzT2F5RG1OZGhsbTVieFVTYnNFd2VwTWprU1FPQU1uRENhL2s4SHFLelNjMGlQNlFvQ2p2c3JRcXNXbXQ5VnRhNXpCZEN6SU15VU13Z3dPekZwcEtrYkY1cmRUTDd6QjJBTWk4NlBQR3BhUFFla0RvUHZ4RXladU9DR0JVU2pSY1FqWUhHM3lKRFlaUHlqakZ1YlFKS0ZRY1RpVklaZ0xvbUtUZUdZMXEvaHBnOWlEazhiOHdQbU1jQTlINDJwdEg2eWd4Lys3QS9GaTRyeExaTC91OTdWeTV2SlBhUHNxS3IxZ3RKSGthLzlnWkIzc3FRYUFQV2IyTHNGQmxzK2tIaVJWbkxnNk9aV2xndC9JNk9qc2FxaW9vMklkRmRTUEw5VE4zTjFpanNzQmRZS0FOck1mZm50UDVFUUdIOUVPQlhRMzRlU2V4Q0R2c0RnWUFGbnd5ZDdnQTB2Qi9TYUE4MnVyMjlYVm9uZVhwaWhTOSs0S09PenRaUWRHUUU0dS9pRkhveTZZMmZlZWJOT2N3RDJLVFhEaHo1VzFBSnBCaUN3SWZ2aGE3UDZtRi9TUkt6TVdRR0pNN3h2RDA0b1MyWjhwdXRBYXpXMDVwa0lFaVgyT2NwTlpIaGQxbldRRE9NUFc0b1h1VHBEa0NpLytUNlBnNlhLT0dGbnRuWDBmbnl2dmFETC9CYy9nZ0ZaODRaVm45b3JlcHg4enFESmk3M043a1oycVVQZDNTckJNdDRlSFo2K21RNEhNYTNqdGVqSTU2R0RrMXkvWWxHbzZQNXExY2YxNzQvVWxWVmxVN004N3h1WE5JbUFYTGRXazNnNmpXaHhmK3lNaFE1aVgyYjhQNjdsZUUwWDRHc0IrL2xHTCttNURNQ0ZYRjdyVjNtbkQ1bC9xS3lzSzI0SzNEVkt4aEdNenhXY1BGY0djN2xFQXI0eHFkRWk2ZHk5OE94SHJKbmR6UnZQWWs1TThITW1NdHFuUVpnczM3djlNOFBHTzJkd25XNnd2TlRkYXNHKzEvSFllekV5UjhhL0VWdDcreDhLV0Z0VjhMOEh3QzJxSGU2QjdhaGRmYmc5aHpZL2NpR2Q2MzhscG9qeC92eUl6MmMvazdjVXNXN1loMEJSOEFSY0FRY0FVZkFFWEFFSEFGSHdCRndCQndCUjhBUmNBUWNBVWZBRVhBRUhBRkhZTVVSK0JlcEZ0R2lMOExZbWdBQUFBQkpSVTVFcmtKZ2dnPT0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCJdLCJleHRlbnNpb25zIjpbImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6Ijg5YjE5MDI4MjU2YjQwMjU4ODcyMjU1MzU4ZDk1MGU0Iiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6dHJ1ZSwidXAiOnRydWV9LCJtYXhNc2dTaXplIjoxMjAwLCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxXX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMi0xMS0wOCJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjItMTEtMDgifSx7ImFhZ3VpZCI6IjRlNzY4ZjJjLTVmYWItNDhiMy1iMzAwLTIyMGViNDg3NzUyYiIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiNGU3NjhmMmMtNWZhYi00OGIzLWIzMDAtMjIwZWI0ODc3NTJiIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkhpZGVleiBLZXkgNCBGSURPMiBTREsifSwiZGVzY3JpcHRpb24iOiJIaWRlZXogS2V5IDQgRklETzIgU0RLIiwiYWx0ZXJuYXRpdmVEZXNjcmlwdGlvbnMiOnsidWstVUEiOiJGSURPMiBLZXkgU0RLIC0g0LLRltC0IEhpZGVleiJ9LCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiLCJibHVldG9vdGgiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNaRENDQWd1Z0F3SUJBZ0lVSXlsYlNFQUUxNXpTRXZ3RjByOEd3VWQvNW9Fd0NnWUlLb1pJemowRUF3SXdnWWN4RnpBVkJnTlZCQU1NRGtocFpHVmxlaUJTYjI5MElFTkJNUjh3SFFZSktvWklodmNOQVFrQkZoQnNaV2RoYkVCb2FXUmxaWG91WTI5dE1Sb3dHQVlEVlFRS0RCRklhV1JsWlhvZ1IzSnZkWEFnU1c1akxqRWlNQ0FHQTFVRUN3d1pRWFYwYUdWdWRHbGpZWFJ2Y2lCQmRIUmxjM1JoZEdsdmJqRUxNQWtHQTFVRUJoTUNWVk13SGhjTk1qRXdPREUyTVRjeU16RTRXaGNOTkRrd01UQXhNVGN5TXpFNFdqQ0JoekVYTUJVR0ExVUVBd3dPU0dsa1pXVjZJRkp2YjNRZ1EwRXhIekFkQmdrcWhraUc5dzBCQ1FFV0VHeGxaMkZzUUdocFpHVmxlaTVqYjIweEdqQVlCZ05WQkFvTUVVaHBaR1ZsZWlCSGNtOTFjQ0JKYm1NdU1TSXdJQVlEVlFRTERCbEJkWFJvWlc1MGFXTmhkRzl5SUVGMGRHVnpkR0YwYVc5dU1Rc3dDUVlEVlFRR0V3SlZVekJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCQXFsbUFNQXo0aDVJd2ZWWndTYjRqQWk1b3Q4NUZFMGJ1dUNLczRtZnVkMjFxc281cnB1S0g0M3NLcWJyTkZRU3R4NVJTQzlibUJxZFMybHljbDM1bGFqVXpCUk1CMEdBMVVkRGdRV0JCUldJaVJWV2F5WkJuSDVCbFRuUURpR3lRNk9MVEFmQmdOVkhTTUVHREFXZ0JSV0lpUlZXYXlaQm5INUJsVG5RRGlHeVE2T0xUQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01Bb0dDQ3FHU000OUJBTUNBMGNBTUVRQ0lFWlhoNzZYRmhMeEpJVDhGc0lvUUhUd2ZIQ0U4c1VzS3lQcmNMdi8zdG9NQWlCK3BqWTliSTZuS1Q2cUZ1cWdSbitiWEJBZE1lZy8ydlg4d0c0YUJ0b01BQT09IiwiTUlJQ01qQ0NBZG1nQXdJQkFnSUJBakFLQmdncWhrak9QUVFEQWpDQmh6RVhNQlVHQTFVRUF3d09TR2xrWldWNklGSnZiM1FnUTBFeEh6QWRCZ2txaGtpRzl3MEJDUUVXRUd4bFoyRnNRR2hwWkdWbGVpNWpiMjB4R2pBWUJnTlZCQW9NRVVocFpHVmxlaUJIY205MWNDQkpibU11TVNJd0lBWURWUVFMREJsQmRYUm9aVzUwYVdOaGRHOXlJRUYwZEdWemRHRjBhVzl1TVFzd0NRWURWUVFHRXdKVlV6QWVGdzB5TVRBNE1UWXhOekkwTURWYUZ3MDBPVEF4TURFeE56STBNRFZhTUlHTU1Sd3dHZ1lEVlFRRERCTklhV1JsWlhvZ1JrbEVUeUJTYjI5MElFTkJNUjh3SFFZSktvWklodmNOQVFrQkZoQnNaV2RoYkVCb2FXUmxaWG91WTI5dE1Sb3dHQVlEVlFRS0RCRklhV1JsWlhvZ1IzSnZkWEFnU1c1akxqRWlNQ0FHQTFVRUN3d1pRWFYwYUdWdWRHbGpZWFJ2Y2lCQmRIUmxjM1JoZEdsdmJqRUxNQWtHQTFVRUJoTUNWVk13V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVMwQWNUL2hSRlVibEZjSXA2Ymg0UDJaU3ExYWppVWFnaGVjOXVkU0ZHSW9VWjQwWTNJRVBsdGsyVHhid00vUnBXbUNGclpzQWRmeXgyMXJ2WWRwTDhSb3k4d0xUQU1CZ05WSFJNRUJUQURBUUgvTUIwR0ExVWREZ1FXQkJUbFo4RHYzcUFLZUtjMUMyT2lOdkh6R3FnMUpUQUtCZ2dxaGtqT1BRUURBZ05IQURCRUFpQUhwdHN4KzZHcXY2bmJhK2JUOWZXN244eHNmSDhSaElLOFZZRlBLRXNCWkFJZ1FoT1NEeGtEa2N5OW5iUFQ0eDBFbUREOVVzTDUwMXRrU3NjZldhMGFMYnc9Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUlBQUFBQ0FDQVlBQUFHME9WRmRBQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQXlScFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR3L2VIQmhZMnRsZENCaVpXZHBiajBpNzd1L0lpQnBaRDBpVnpWTk1FMXdRMlZvYVVoNmNtVlRlazVVWTNwcll6bGtJajgrSUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWtGa2IySmxJRmhOVUNCRGIzSmxJRFV1TXkxak1ERXhJRFkyTGpFME5UWTJNU3dnTWpBeE1pOHdNaTh3TmkweE5EbzFOam95TnlBZ0lDQWdJQ0FnSWo0Z1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNGdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlnZUcxc2JuTTZlRzF3UFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdklpQjRiV3h1Y3pwNGJYQk5UVDBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5NFlYQXZNUzR3TDIxdEx5SWdlRzFzYm5NNmMzUlNaV1k5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5elZIbHdaUzlTWlhOdmRYSmpaVkpsWmlNaUlIaHRjRHBEY21WaGRHOXlWRzl2YkQwaVFXUnZZbVVnVUdodmRHOXphRzl3SUVOVE5pQW9UV0ZqYVc1MGIzTm9LU0lnZUcxd1RVMDZTVzV6ZEdGdVkyVkpSRDBpZUcxd0xtbHBaRG94TWpGRE9VSTJPVFZCTURFeE1VVTFRa1JCUkVRd1FrSkZNVVpGUmpoR1JDSWdlRzF3VFUwNlJHOWpkVzFsYm5SSlJEMGllRzF3TG1ScFpEb3hNakZET1VJMlFUVkJNREV4TVVVMVFrUkJSRVF3UWtKRk1VWkZSamhHUkNJK0lEeDRiWEJOVFRwRVpYSnBkbVZrUm5KdmJTQnpkRkpsWmpwcGJuTjBZVzVqWlVsRVBTSjRiWEF1YVdsa09qRXlNVU01UWpZM05VRXdNVEV4UlRWQ1JFRkVSREJDUWtVeFJrVkdPRVpFSWlCemRGSmxaanBrYjJOMWJXVnVkRWxFUFNKNGJYQXVaR2xrT2pFeU1VTTVRalk0TlVFd01URXhSVFZDUkVGRVJEQkNRa1V4UmtWR09FWkVJaTgrSUR3dmNtUm1Pa1JsYzJOeWFYQjBhVzl1UGlBOEwzSmtaanBTUkVZK0lEd3ZlRHA0YlhCdFpYUmhQaUE4UDNod1lXTnJaWFFnWlc1a1BTSnlJajgrdnI1WElnQUFFLzlKUkVGVWVOcGlERGw2Z1FFUDRBTGlCQ0NlaGtzQkV3N3gvMUNzRGRXOEQwa01CYkJnMFFnQ0FrRDhFVW5jQ1VvL1JsTERpRzRBaWdRT0lJdWs5aThRTTZPN0FKOW1kSFgva2NQZ1B3bWFVUXhoSXRGbWRIQUZaQUEzRUo4aEVCdi9jY2pyZ0F5SUIySmpNbDBBRG9OcERCUUFGaUlDaXFBTFlHQWRpWmIvUjNZQkk1NkF3dXRDOUx4d2dBVGJQZEhEQU9ZS0pTQytoMGR6QUJDN0FQRmViSUhJaUpZdkNBWXNRQUF4RWlnUHdvSDRDeEJ2SlNVYS94TndFU08rQWdVNVN6T2lhY0xxUFNZMHpWWUVFZytHSVN4a1pHZEdwQXdHVHdmcFpKUUZjQmY4SjdNOEFPbjV4MFFndGNHd0U3RkpHUmZZUzJxOUFBTDlCTEwxVFBSQ0ZSMFVZVWtQeUNBTmlFOHdVVkNnZ29BbHNoZnFTQzFNa0wwQWNrVWpPV21CQ1Z0dFE0VHRqTGhpQVNTeEJ5ME5JR010OURBRENDQkM1UUU2K0F6RVBHaGkzNkR0Q0dTd0hJaWppSzFYR0loTXpmK2hsak9pWVc0MGZpY1FSNkxwU3lhM2dZTWM1b3hFSnJrS0xPcm40S3FpbWZCWURET0FpWUV5Z081d2tQbXF1QXBVRUJDbE1ITVI0NUJiUUx3ZHVVQitEY1RuZ2RpSWdmWUF1VlpnaFlXQUNCQjNrOUcwUU1hVHlYRE1MNUFEUXFHY1plUVVSVWdnaDV6bURSTTBIdzhZWUVKcmRGU1JFSS9tQkZJN1NZWDVRaWpkU29MalQ1RllQc0NBQ2JZcU9ZRkEvRklUbkliUzV0aHFvMVFhT3dLNWtEdUZyU1NjUTJRTGwxUWdCeld2SHoyNldBZ1VGdEpBL0FTTC9CMW90ajBHN2ROS1FodjhvS2hrSmFJNEpycVQ5QlJOSXlqRS9nQ3hDcDRtekZtMGhJWVhBQVFRcWUwQmxBWVYxS0x2UUx3ZmlPL1NvcHVJREh5QWVETUo1Y3QvWWhVU0FpZWdobTNHRWEvWTR2Y2ZVaE9Nb2hENGp5Vk55QkRiOXdHQ3E0UTYzTGhDb0FHTDVZeDRMQ2VVNHYrVDRvQWxRRnhQWmhtUDdwQUxoQnlCN2dBeklJNG1Zd1FKRnpERTBlckM2WUNUVkxTY0FVZjNGMjhubTlxVzR4cWdtSW92RGREQ2NuU3pzOUFkOEo4T2xxTTdvaDViZFV3dndBZk42bUFIYUE5QVUvQXpja2w0Z0lMVVRXbmFZV0tDOWdrb3RaemNCa3dmT2YyKzUxU0lnakpZRFl2c0FDNGlOVXZna2ZNaTBvd21tSjNJRHBoSHBPWWxlT1MyRVdrR082eDJSWFpBT0pHYVk2bVlHK1l6UWR0d2xCU3JETkRHS1RtNVlCb0x0RjMzbndxT0lCYnN3MWNiZnFGREllU0l6d0hjZEN3TjVaQWRnQnljTFRTMEZEbXFINk9Id0Njb1hVMm55Z2dqQ3ZpeE5SaG81UHZQdU5JQVJvT0J4aTBqdkMyaUR6VHFsaFBWTDJDRVJra1poUll6QS9GR2ZPVUdDNEdnQXJtOEU0dmNHaURleEFBWmNBUjF4MDJoUmJrNWpvS0hrZHl1R2E3QmloQW9wcmkwWkNJaDRZQndEeEZxclVucFRRRUVFQ1hqQThRQ0RTQXVoUGE0U0NscFFaUGpvTkhYUmJSMEhCT1Z6ZHZPZ0RtRWZKMEJNc1dGN3ZrU3BKamlCZUtYYVBLZ1Nub2hBL2FaSDZQQkVnQUZhQTd6d0tIdUk5U1R5T01wdldpTkFBazArVmw0N0QyTFpPY3ZlZ2VBSHBMbC9UalV2RVB6akFBWkxaMTBORE5XNEZESGl1U2VCN1FNZ01WUVN5NFM0V0JoR21UWFNDVHpGWENva1dmQXYzaUdyQUNvZ3hvWWc2MUZUV1NTcFRaNGlHU3ZINTdhbjJCQWtEcEVDUU84ZEdxOEV3TTJNK0NmWFBnUFRiMXhwS1NBWWh5R3dVSjlzSGdlbC91d2RXVC9FNXNDZGpOQVZpcWhCOVIvaHFFRGNLV0kvNFJhNCt2UlBHL0JRUDVDczhHYUluQ09FQWN5UU5hcGdjQk1xTWFURE1NRFlGczZnUkVBNjVBVVp6QU1Ud0R5MjJ3b3V4czVBSkM3NEVwMGNJZ250TEdFM0lwY1FhZEFTRVZxaXNNREFIa0lnSmJEQVREUGdzWXdCZEhrd3BIazk5QXBNRHhBQVdDSnBRcWtOZ2dqc1NCMXBsSEJxNC9lSVdOaUlHRnVuUUt3a3R3WW9ySTcwTWNUTkVFQjhCMkx3c0JCVW1qZG9ySjVMdGhhZ3Z1d0tGeEZvNFlKcVdNTDk2am9CbE1zWW51WWNGZ0NhaUZ5MGlBUURwQ2cxb3ZLOWgvRkl0YU5iZDBXREx5bFFaSjJST3ZqdTBGN2Mwb001QzFDSTZYd3c3YVk2UXI2eWpsa0FFb0J3VFRPNDd1aHZibjdOTGJuQW83SVFHa0pZdXNZclJrR3JiOVhXTVF1dzdJamNnQ0F0bHhaa1RBbU1CUUFxSE1uaWtWY0QxZHY4RGdEOXRtRm9SZ0lVNUU2ZHpockpHd0RJcWR3RkVSREtSRG1ZbW5TYjhMbUwwSnpVOWRBclNWOEF3cURFT3dDWWxkaTJ5R0VCa1cxY0F3b01BMVN6ejlHODN3ZG9RZ2pkVzRPdWNEVUhXU2VCMFdNREpySG13bHBZaUhSRWxnZ2dQcnVsN0RJZjRQbXRRME1rSzBCMUJ3OEJRM1ArVUlMTmkxcU5ibXBNVGs2ZzRIMGZZWFVCS0IxVDJSUGoxRWpMMmVnTldOcmFPaFpVSXRSR00wK2l1WUdXV2pneUZZRzdKdFJXS0J0ZjJkb1EwUUJxY1BGREMzQWJrSGJJcUNTL0RZOWtnOUFBUEt1TFNTTElBb2ZOYVJBSkJJU0k3c1FXa1NRSlVaSm1kM3dKYXhlSW9nc0VJd3VoRDBJMG9ORzBVTmxSUTlaVVlFUUJSS0lrUkhkeUNMeUlTcVFJZ3NpcU1nS29ZY1NwRkRyOUovaDM2WXp1N1A3ejZ5N2Z4LzhvTE96TzNPK25jdVpNMmZPaHVFZklLT1lmZ1cwUUVIaFB4RUJXSm1oTUNzekxvUXlhbW1NS1BOeER3NmVsMzcvamhpMkNWZ1pBMlRnRzIySHBJSHp2SXZ3cWxOc09VVGFHM3JHZCtvK2tTWmdNVlVXei9oczlNaUw1MERRWFU2Y2htM3d5SS81YnRMek82Tkd3SHlxV0k5R1hyR1Rpd3JMTjBkNkM2V3YwSGpHT2lydlhoUUlHRkVZRzJRMGcvdGV2a0EzNVNza2JkTU5sVVJFM1ZnUXNFZHpZYlNOOGh6dytmd1BORURuYUt4Q3o2YXlVZzB5QytDVWxlK1JaemVZOFhnZHBKZUVVK1pIamJVQXV1UzlzdGtDUmoyRXYwaHYzTFM3Yno4OTEydWpwQTlvejg4R0FXN043QWRWc01heVRuR1R5bm5ra3Vjb3JVK01FdUFtL0ZaSUhzUUlDK2dPTzgzbE91b1FyYWJHQU8yNFBXTmcvTWdndlNPTHViNkRGS2xqcWJTQVVSZFZOU3Ftc1hHMGVPTFE0bVc0Y1NQZ2lpTDlLU1RjNUtLRUtsREh0K2tOUWtBSjhQN3c2UDFmQ3RIRWZsQkh0Qm55UzhBekpnMUQ1cXlIYUFQcnVGWmhOZHF1UzhCRkpxMExOT01GUlFEWHFVdklPS05MZ093VC9BQVN4c2c0QVFkRmJudTl3NHNBMlZuaTNlL2Zjb2duYmpDSzJRWXZBdVRsNkhTSU43QTdOMHBwYlNvQ2prUkl5VEVKUEhaMld0SmNXUUlhMGxCNGdaMjBqaEJZSXhPUTY3aVlCZWtKWEVrS1UvczVtUUJ4T2hGUGZZeEErcUpZSHRzRUFjSTV1Z3orSDh6a1pvRUZJUlhlQVg4N1NtT012WlVodGdDeFd2eERRRzZJckxlUndQSjhqUEU4N29KOUw1UmxqcjgzaWFWa1ZVakNvNk5pdWFiOXdkWXM1SFFNTHhRdElJeW1WNjBwdkpjZElsWElEbURabVV5L0w3WlE4TlVBOTZ5MlVJOTUwdjl6TWlFWm5sMmd3bkNoUWUyRnJTRzB6R2xJd0VTUDlZQUpCU1FJaWtJZ1lFSW1vL2lzTWx4SUhrUURYRnk4REJHeDBZbDh3d1VIOWNBWU5sd1B6cWJ4NTFzSUE1YVpmeHJ3UHRPSHNibDRVZjFJd0F2bXdnekRoZmNFdU1mMDZUWE9zTk9IQkhBZnNxZzFYSGk1ei93SFF4b1hCcENBMjh5Rk9ndUY2ZTVFbzg3UVpManNRdFVGSklBN0h6elpBZ0hEOEcvUVR4bm9QbWZEOU43SXBOM3hlaXRJd2hjTGxSR2FKNTRUd3JDT1E0cFdhQkxjZUhMS3VSem1Cc0lXeTVWQzk3ZHJJUWl2UXFlVEFLNkpiSUgwUUwzYlJVRkFsK0o2ZmhvUWNNSnRuWkVwTlVrWjEyTXVmSTRpZlJkSEFMZXBXQnB6QXJoUW8wTmNGMEM4VkR6a2VJd0pXT1psRlBIYUdrUHNqYW53WnhYcHZXNEVkQ3R1YW80aEFadzJPMWMxQ3pneGhVbmJud1p2L3hQWHpUa0MraFhLeWFHWXYvMENOejFBQnVlYnZ5OG13blBPWFp1OUZDRU8yVXhhZXd3SWtKMjdNUHpmNVNBRS9JVGtoNUVFTmtaY2VNNjVxMFJIRlZZQjR3ZkluNlY2SFZIaHh6UENHZ2xyaTlHRm5aNWpSWmJzQmFuaXExL2hkUWxBMUVqTDQ4OFJFMzRodFFCZnd2c2hBSUV1Tk9zYy8rTVdkeldNN1VueUltcWhUeHpqbHErTlZiK1Zkd1lod0MxdXROK2hxVXZzOCtNZzFPUTE4QVRBSkxKUElPay9IT1hoZUNTOFd5NG9aaTVYQkQwNGlTUThoSVRmdmp6aTRrOTJYTWJ6Z1doOWZrN2EySHRITjhLZHFUeFNWR1pCd2t5R3ovRGpvb2R4UWdMdGI2UnljblFwSkQ3UE1haVJGL05WZ1BtTjE1UGdZZkV4M1FXQWViUFlHaGFGM1BlN3FOejZWQjlrYWdCN1RCWENwdmpPb3VEaU02ZkdmSmROaitBRDFIZXhrcFdnamtLdEMvR0JBZkhwNGNPbUdiVjVldnkrTkJ2TXBrWFdFcHErcGtKeUJ4aTcwbHNpREkvRTNnTHp1OE1zZmduUTNybUdXbEZGY1h4NTZGSmtKSVNhbU1aTkw1bWlmYkNJb3VncTlwS0V5cEl3QTgydWxOME1OQXNxK3hKaG9XQ1o1YU9YVnBiYUE3T1hrZDZNb3FMOEVKUm1ENU1rUDVRYTJBUExNc3pmUFd0M2h0T1ptVDJQTTJmbTNQMkhnOWR6WnZiTTNtdk43TDNXWHV1L0dzRWZVRytRemtNQ1padCtCcXVQbzY5K1R0QkZVNHRVWWlOS09yMytvUzkxTkhtditoQ2c4ZjVPUHpzc1gvcUZ3VEVGdkdkWU40aDFucUJQVkZvUi9jelVKbHFvTGNKNUtFYVhyZ2szUzBKS2s2eFJ5dm45dGFveHZ0K3orRDJvZ3owamdmQVBTWGx2cUw4dXNwZm9kM0hBMmhVSDNKdmFocmxQM2lEenhhNWlwMU1BQlF1SFR6MkR5THc0VjVLSG1XRXFUcFFLOFJCVEFIdGorOVNKY0p0K1ozNm5sTVdYQ2EvSml2QXVOWHBNZjk2VG5JWGpOMW9CbUpOZjlnelFsaFFHNkM5OXVrLzFDQlRpNlBVUjJsaXJGcWs1bjcvVG9CbHVyMUp3ZUZ6NzlEUUZZRFg4aFZSeUpKS1MxdktxblNYbE5DZUVkYXcrM1Qra2VNKzhEYTcxS0FSUDk2UHkvL2pTcU1ETGVFREhZcXNFMHlFVVdnRndVcjJ1SFlYaFkyU0N0dGkwbSs0Unhza3FqQ3pUdlBhcjByVjRGR0pad2piUFZvdmppTDV0ZWpXREFseXZIVG9rdFVOUGJJQ0w5MTYxV0hxcFNiY3laMnNYRk9JV2oxS3kvLzUrZ3ZZbVNhV1EvVlZGVkFERDZ2UmN6UE54VG96U3dlVHRjWDlXanBHVXNFUG5lNk1RU1FKTFRHcmhvaUlvZ0NsRUZ5ZkdlcVBhNFF3WVViVGJtc2pmY3A5SEdlSldMcHF0WTdzNmp3cXdUUHdMOFFVQjErZGdxZFNSK0VXYUh5dWtkcTFOVzB6UnNWNllCd1dZcWpkemM0enpHQUI4NVh1azU4SlVteVZmNE5zWTV6TDIxelJDQVNBMkphQjZWWVJ6V09FTzBnNC9LdzVlNFBBNlhjZm1xWWpuRWdtM1hXSzY5ZU1vQUY0ekNPUk9zenkrUzIzMFZpa3o2RG9FbzBNVklVcW00QWkxbHFiWFd3RkllVnhzZWV3RzdjaEYwdHhVTFBYQ01vbGVZNHUzeDZaNktBQlBMNXN3NTFvY2EraWlyM1F5VEFVYnhZNUMxNEFIanZLZC9kSlNnSGFkbzhLcXpiMGpkblRaRHZGZ0tJUnR3b0VvWDRxTC9LeWtDbkM1aEpjRS9GeVY0MUlubzB4Z0F1SnNQSVNFWW82TnF3Qmp4RDkvRlB3cTVZMGRxZ244NmVTU09WNVZSZWdNT1E1TzBORlJGWUNrL2FCeURjenZiR04rNCtUUWNDeFZSWGdnNEJoMkd0dHNGWUFkcnRkOEdqSUZ5emE0Y2M4ZDdsYlpyUFdSOHh1MkNvQXBVUjFxOVpaWVZxcHphRGdtcTZ5MlZuMC9UR3BRc1ZVckFBc0xMMGtHUVJVRGRESG9VQ3lRclhHS2xPTW5EQ0FNdlRoSUFhcm5FU0poZm5KaldWaFFnNmg2VjNXKzl6OWUvM0dIdmlhOFlGdVdPUHJmbTJoUVdPUGdPaDJxOWpJYktqaE9kcW5DSDI2aXZoSk1XODJYU3VRUllYaXZWQ3RBTFhPQ3NHa0NJajhwOENCQWp2dTRDandLaUZ0a2wvT2pBdmVkb0pwYTlOQ2RSZ0hNRkVDNmtsOVNheEhyU0pEa1lhSnZ1MklJM3d6ZWgxSUo1eTRpdC83NVB0K1BWVlAvUHdVSTh1SmRVTEJPODdTVHZwVm0vSDI3VGcwTEN6WVc0MEw2MUswQUpDb0crWXo1N2JpQ2RCalRaMFlkMjU4cjRhN3h2S0NmenZkQlZrSi9GSUJFeXVFQkJ3NE1hU2d2V0pmUmZiWkw5S0NOUm9DZDI2QzZkOGg4bUNsWjJqZWtzZkU1N3l5dit5eFpqS2JGWEZka2lUQWFmT1Erb0tTV1FOZ0NaMExPT3pzcTQrdVZhcGpNZVVPWTg2NDdNTFdrd2cvYkZqNVQ4czBmK25NRHJ2bDNqc2NEcXRDd1VpamQrWWtJSGhLRUF4YU5YcDNqRHJQUmtXVjBNYnVnbTNJOEhqYlRJUkZlQjFFQS9QMDJ4RGFUY3R4aHNvWm1abmk5amh5UFJZdmx3MHFVMTI0VWdJaWV6eXhPYU12NVdvQzN3R1VaWElkU0dCL2tlQnltaUE4N2JCWFlJK2l1SDhLcm9NdXk4WnR5dnZBeGNYUHYxcUh0OWRyMnh6a2ZnMDdMNHdnMlBWenlETncraTVNbVNQcFZ0dXFCY1Nxc2gxTm95K1QxVFN4QXZ5ZFora0tZOGplTFovWFBidDlheTR2Y0k4WEJiS25rNGVFWGg1RmpkOGk4U083ZU9aSk9abS9Xc0MwODlJSmFBZUtsaWNNanVNT3lBUXB4cmhPSFBBRTYzd1VXeDVHa2d4UHJlNm15LzJIdWVNenlZcnhhajNkam5odTBIdjA4YUhuc0FpUDhhZ1VBc0ZyWlZNMGlUT3hwTis2NXdXcXhTL0poaXB2bi9hTDZwTi9Fdm9JZ3BFbXozTmczSEl2RmY5Ky9sdi9pbnlBRk1QYTBiWldVUjZSMmtSR0hiSENEbExPMWJUQ3ZsbmxjQ2poNFRRVGJlNWlUUmVZWUUyRWFYdUgzVUFmTkc5ZXBjRzBBRStkQUo1UE1RTER1RnN0aklabnlaWEFKV3pqZ1dyVXBvOWhibGFDUGswM2RRWkN1YlgxdStBWUQ5d1ZzVm81NC81Nnd0QXpZSlR2UnlhaXU1cDZ0OEIrUzJnWFVJeXNBZ1BiTnhzZE1HRG1ldHBPY3JGTEhHV3JHMlpRR21uYjBNOGVtMFNnVU1lU1ZFV1FRUnFzTzF4OFpLWU9jekZJREtmZzJYbHBvOXVBYmZzYTI0YWdjUVZDWkVTRWN4dklGWVROeEJpT2M3QktEc0h5YnNpNHI5T0dMUkpJZGx5WnVxbXBsR0gzcmRqVlhIT0lCSG9hdzJBT2NkME1sSmdOcEVxSklBa2tJS0wwajVEak1sY2xPbHBGQjdFVllqWU9adXVqZUZmY2lhVkRGVWxXVGJkT2dqU1MySCs5ME1yVUdNUWpMQTM1ZnBHTytQT21GMGlTTHZsVnZhcW5QNzlSOFcrSmtHNG9ucFV5UEh5VDQyOU82V0QzbzRqdjFKdWY0S01sNkoyTmZRTDF6bzg5MGtLcmdEYktvRzBqdTRVWUp6cVRab3d2R2Jmcmg3NitsekVUV0RNQXZNbHl0SWo0ajlkK0JJUXZvUzlTa3JodXlMaHhKalp4Vmtxd2NDcG0vTzZWY3IyK25Mb0IycS9telIrcFBPWSt6QzRwNzZGZmdTeVphZW9qK1BVUk40TGlnNEJXVSt5OWxKWkJHVmc1RkdlREQ3ZW1SUmJ6bHlHaCtzUkVYYjJUWk9KeEp2ZlZ0d0hieTJ6MUk2TkR3dFdyZit6UksrSTFXQUMvWVJCb3ZsVWhjNXN2blJTTlhDdzZjWlN0MUxXVDZkNFVFUnlmM09BV294bGM2RjVZOGczYWhsTjJkZTNNczdMMDZyWjNudVcrY1pkTjF2Wkk3TkVQMWNMYWhpWW1ERUdHMHJyRDcxMUhBV0Nrd2tjQkJCSUhVajBVZXZGNUhqalREVzlZaEx2NEZNRmJCN28vL0pJVUFBQUFBU1VWT1JLNUNZSUkiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCJdLCJleHRlbnNpb25zIjpbImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6IjRlNzY4ZjJjNWZhYjQ4YjNiMzAwMjIwZWI0ODc3NTJiIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6dHJ1ZSwidXAiOnRydWV9LCJtYXhNc2dTaXplIjoyMDQ4LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxXSwiZmlybXdhcmVWZXJzaW9uIjoxfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjEtMDQtMDkiLCJ1cmwiOiJ3d3cuaGlkZWV6LmNvbSIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiRklETzIiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDIxMDQwOTAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4zIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjMifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjEtMDQtMDkifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIyLTA4LTAyIn0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiMTE5NTA0ZjUyMGJiNzY5YmRkZDg1NjIyZTcxZTc5MzdhNGJmNGJhMCJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyIxMTk1MDRmNTIwYmI3NjliZGRkODU2MjJlNzFlNzkzN2E0YmY0YmEwIl0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IDUgU2VyaWVzIHdpdGggTGlnaHRuaW5nIn0sImRlc2NyaXB0aW9uIjoiWXViaUtleSA1IFNlcmllcyB3aXRoIExpZ2h0bmluZyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzYsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6Mn1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiLCJyZW1vdGVfaGFuZGxlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRFNqQ0NBaktnQXdJQkFnSVVUbmJiR0lSMk5IdnpxSUtGQWVRd0cxWEJpczB3RFFZSktvWklodmNOQVFFTEJRQXdMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3SUJjTk1qUXhNakF4TURBd01EQXdXaGdQT1RrNU9URXlNekV5TXpVNU5UbGFNQ1l4SkRBaUJnTlZCQU1NRzFsMVltbGpieUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRUVnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBT3NYajNrMDRCYW40VFlkdFpLcUQvT1BKeHlEeWFQbUNCVUZVaWFaSWdUdGVabmozWDI1RGhncFpaWHNDNEQweWRJY3JsQTZ3TlVJbk9STC9MOXpCYlRFSU1BVk1HbzZnN1VLQW1iMk1GNkFIYm5oWUpkOWVpa3VwVk5XU2hITllOYzRHQmRPMVlONkFmVXF2SmhIYmUzVjRTTk1QbUJSRUtKUFZ6N1Rod2dtZ2dUZThXczJLMC93c3F2MndTRTdwYkNCc1VaaElYNTFiWk0zcHFEd0pQVG1SRkV2dDAvNnRHNWVPOEYzajE0T1hxZkVobWpuMVZ2eEtEWVFPTFpBeEN3d2dDMFA0Q2RmV3YzeThQU1I4STM1NGhPMVkrR3pOanZJcVgzOE5LTHl3dUlZSEZlck94Tmx4RU1CdkZoWUJ1UnVZQWtrZ1VhUHFONlVCaHNJTHJzQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZDQ29SSGhpeU5uYm5YUldJTDZaQlhvQlg5WVRNQjhHQTFVZEl3UVlNQmFBRkNBb1VDRWJwRnBiNkZQTG5aM0Y1UHhzTDNvZk1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQ1FGYWZKSTEvNVdnOUNFRWltRTFSUDU0UmdRd1ROVE9PUXNMQUNUZStySXRsRlF6QzlaRGhyVjgyOHlYN2p6eStBQXNwM2l6SzdUMXRoMmRsN20rdHUwc3cyUGEvb2xjMDJudDZQeUl3MzQ4Z2FIemhJMSswS0U0NXF4dkZEZUwybE14YlBmQ1l2eUVFYVl6amlRRUxVNTk1MXBYR1d5S01hLzRmTHRPK1pLT1hoTXVWZXE0clhEUEk1NFc2SkhPaUFhaUtkaXcrNWUzYzJrdC9qRklRdE02dk1YZzlMTkZ6ZGpFVE50MjBWWDlRZXZScEZaZnVjTUc5d0NhUURvRmxQenBUTUpLaFBldi9pbUptWlloS2ZyMGxMY2VtdHFqSXhMQW9xWmRPWWZIQmc2K3ZBY2RQSS9pYXVHcFVBdjdYK1VLTm1Ed2paMkJhSDRzTHdoQjJtIiwiTUlJRFNEQ0NBakNnQXdJQkFnSVVEcUVSdys0Um5HU2dneGdVZXdKRkVQRFJaM1l3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRREk3WG5IK1p2RHdNQ1FVOE04WmVWNXFzY3VibHZWWWFhUnQzWWJheG45Z29kTHg1c3dIMGxYcmRnamg1aDdGcFZnQ2dZWVg3RTRibDF2YnpVTGVtck1XVDhOM1dNR1VlOFFBSmJCZWlvVjdXL0UraFRaUC8wU0tKVmEzZXdLQm82VUxlTW5mUVpEclZPUkFrOHdUTHEydjVMbGo1dk1qN0p0T290S2E5SjduSFM4a0xtelhYU2FqMFN3RVBoNU9BWlVUTlY0enMxYnZvVEFRUVdyTDQvSjlRdUt0NldDRkU1blVOaVJRY0ViVkY4bWxxSzJieDJ6Nm9rVmx0eURWTEN4WWJwVVRFTHZZMXVzUjNEVEdQVW9JQ2xPbTRjcnB3bkRSTFZIdmpZZVBHQkIvL3BFeXp4QS9nY1NjeGp3YUgxWlV3OWJuU2JIeXVyS3FiVGExS3ZqQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJUcXQwS1FuZ3g3WkhyYlZId0R1bnhPbjlpaFlUQWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQXFRYUNXTXhUR3FWVlg3U2s3a2tKbVV1ZVRTWUt1VTYrS0JCU2d3SVJubHc5SzdIZTFJcHhaMGhkd3BQTmlrS2ptY3lGZ0ZQemhJbXdISmd4eHVUOTBQdzN2WU9kY0pKTmt0RGczNVBYT2Z6U24xNWNGQXgxUk8wbVBUbUliOGRYaUVXT3B6b1h2ZHdYRE00MVphQ0RZTVQ3dzRJUXRNeXZFN3hVQlpxMmJqdEFucS9ORFVBN2JlNEg4SDNpcEMrLytOS2xVcmNVaCtqNDhLNjdXSTB1MW02RmVRdWVCQTduMDZqODI1cnFEcXNhTHM5VGI3S0FIQXc4UG1yV2FOUEcya2pLZXJ4UEVmZWNpdmxGYXdwMlJXWnZ4clZ0bjNUVjJTQnh5Q0pDa1hzTkQwNWRDRXJWSFNKSXMrQmR0VFZOWTlBd3R5UG1ueWIwdjRtU1R6dldkdz09IiwiTUlJRFNEQ0NBakNnQXdJQkFnSVVVY21NWHpSSUZPZ0dUSzBUYjNnRXVaWVprQkl3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRRG01NTViV1k5V1crdE9ZMHJJV0hsZGgrYU5hbm9DWkNGaDdHazNZWnJRbVBVdzBoa1NHNnFZSFF0UCtmWnlTMzNWRXJ2ZytCUXFubXVtZ05oZnhGcmt3RVpFTGVpZEJjQzhDNEFnNG5xcWlQV3B6c3ZJMTdOY3hZbEluTE5MRmNaWS8rZ09pTjZaT1RpaE81L3ZCWk1iajlyaWFBY3FsaVltTkdKUGdUY01HYUVBeU16RU1OeTJubTZFcCtwalA1YUY2Z2kyMXQvVVFGc3VKMWoyUmoveW5NL1NkUnQrZWNhbDVPWW90eEhrRmJMOXZ2djJBMk92NUlUWkNsdzRiT1M5bnB5cFFpbU9aNVFBWXl0bVlhUXBXbC9wTVl6NnpTajhScWtWRE5FSkdxTmZUS0EyaXZMWXdYNmxTdHRNUGFwZzBKODRsOVgwdm9WTi9GcFM0VkNWQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJRZ0tGQWhHNlJhVytoVHk1MmR4ZVQ4YkM5Nkh6QWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQVlNemdMckpMSXIwT292UW5BWnJSSUd1YWJpSFNVS1NtYkxSV3BSa1dlQXRzQ2hERUhwWGNKL2JnRE5LWVdvSHFROHhSVWpCNEN5ZXBZZXZjM1lsckc4bzd6SHhwZlZjYW9MNVNldUprekh4S240YlRhU3A5K012d2FtbnA2NGtaTWlOYkZMa25mUDlrWUtvUkhrTVdoZVJKMVVzUDF6NFNjbWtDZUlMZnNNczZ2cW92cWpXQ2xGc0pwQmNzbHVZSFdGN2JCSjFuNFJ3ZytBVEVvcFk0SWdHdjZadndjK0E5citBVDJocXBvU2tZb0FsK0FOWXdnc2xPZjlzSmUwVitUQTlZWS9VbGFCbVBQVGQwLy9yOXd2Y2VQV1prUGpLb0FDL3pVTmhmRGJoNExWOEdIczNseVgyWG9tTC9MTmM4Sll6eUlhREVoR1F2ZW9QaGgvdHIxZz09IiwiTUlJRFBqQ0NBaWFnQXdJQkFnSVVYemVpRURKRU9UdDE0RjVuMG82WmYvYkJ3aVV3RFFZSktvWklodmNOQVFFTkJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNWjYvVHhNOHJJVCtFYW9Qdkc4MW9udE1Pby8ybVEyUkJ3SkhTMFFaY3hWYU5YdmwxMkxVaEJaNUxtaUJTY0laZDFSbngxb2Q1ODVoKy9kaEs3aEVtN0pBQUxrS0t0czFmTzUzS0dOTFp1ano1aDN3R25jcjRoeUtGMEc3NGIvVTNLOWhFNW1HTkQ2enFZY2hDUkFIZnJZTVlSREY0WUwwWDRENW5HZHh2cHBBeTZua0VtdFdtTW53TzNpMFRBdWNzcmJFNDg1SHZHTTRyMFZwZ1ZkSnB2Z1FqaVRKQ1RJcStEMzVod3RUOFFESXYrbkd2cGN5aTV3Y0lmQ2t6eUNpbUp1a2hZeTZLb3FOTUtRRWRwTmlTT3ZXeURNVE10MWJ3Q3ZFenB3OTF1K21zVXQ0cmowZWZuTzlzMFpPd2R3TVJEbkg0eGdVbDVaTHdyclBrZkMxLzBDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01COEdBMVVkSXdRWU1CYUFGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFNd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkRRVUFBNElCQVFDM0lXL3NnQjlwWjhhcEpOanh1R29YK0ZrSUxrczB3TU5yZFhML2NvVXZzcmh6c3ZsNm1lUE1yYkdKQnlKMVhucXVCNXNnY1JFTkZ4ZFFGbWEzbWlvOFVwZjFvd00xWnJlWHJKMG1BREcyQnBscWJKbnhpeVlhK1IxMXJlSUZUV2VJaE1OY1pLc0RackZBeVB1RmpDV1NRdkptTldlOW1GUllGZ05oWEpLa1hJYjVIMVhnRURsd2llZFlSTTdWb2xCTmxsZDZwUkZLbFg4dXN0Nk9UTU9lQURsMnhORjBtMUxUaFNkZXVYdkR5QzFnOStJTGZ6M1M2T0lZZ2MzaXJvUmNGRDM1NGc3cktmdTY3cUZBdzlnQzR5aTB4QlRQclk5NXJoNC9IcWFVWUNBL0w4bGRSazZIN1hrMzVEK1dWcG1xMlNoL3hUNUhpRnVoZjR3SmIwYksiLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVIzOG1xMjZTZjJzelZWMkJkRzZXRU43a3VXVXdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFSWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFOWTBXYjlvUG9Sb0tvUXlXUGFKcHoxMXZyV1RnNnpUdG1OajJWb0tSbnl2S0dScXB6YjgzdzVsNllBOTZVWWtZQkRRUDBpbE8yRFBlNndXcVZSNXpEZlJ6ZGNIOGJoK0w3ZEdHdmFlNmhSVFpoa0ZrQ3BYRHM0SGNja25yRGY4RkNsSjdIZTM5SmY0Mi9HMVFtMnp6OVdXbXJQWHRnaUsveDA1R2pzUWZHdURHMXpmNVFUVVVpZThsd3ltSzNUZmRPdk5lZUpBQVBlMnBuN0l0ZlJiK3JWck5XaUR6bFJuMnZObloyd1BvNHdIL1dKNmRoWFpHK3JNV1QrYTZCb2NnMVVmSXc2a2R1bkc0YlRwWnpzdmFjRll5UjBtcGYrRGVPbnBTV0FteXdKV0h2VGxmMllYeEZ5ZVhjVEFDZFFsY01OR0oyVmhaUTQ4eHRQNS9SQlAvOGtDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNoeTQyb2tpcWNUUzFpcWEvSFJXamtCbjRIL01COEdBMVVkSXdRWU1CYUFGT3EzUXBDZURIdGtldHRVZkFPNmZFNmYyS0ZoTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBbitSSElQYnRNRUROZFQxZzhIL1JpdEFrVWRMZ0F0MXRXR1dubGo5a25idjQvNEdsWDdDOXA0NWVmUE85L2FaTDZPVjFYUktCaTZLbXRCVzVLN251WUVuTXgvNUJxQlNiTFQ3cmhkdUM0OVRCZU1iOVBIZFhzVGxTVk5ZZWZyMWRHaWRyNGoweFZCUUxiMXJrbkRBYmRXRHpLZnZuYXlLTzhGcndlN0h4ODQzTUcvckorYzBYcnVVdmJmVlRDSExpSVdoTTdvTkRoTDh4b2I2eFVvOUtMS2NTTCtJdFlzTzMvOVdiOFE5R2pzcUw0RlhzRGNHMVNhWWg3S3BmdU1tT2l4cXpKWk8ybklpY1BZUmcxSTJTdWlVZllPNzB0bWRIY2JsK2tTUW1TWXQ3cnE0dmlJTGcyR3gzajlySVR1V1RqYmFVYVNTUXhnT21NU0h1eXpNQUMiXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZkNBWUFBQUNHVnMrTUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFIWVlBQUIyR0FWMmlFNEVBQUFiTlNVUkJWRmhIcFZkN1ROVjFGRC8zZDU5d2VRU0lnUzlBUUFYY0ZMQVFaaTlmcGVWejF0WS9XVFpyNVd4cGM3VzVrbkxhNWpJM1o4NXNyUzJuTTJzanRXd1pTN0lVSDRINHhDbkVReDREQVpGNzRWN3VzODg1djkvbEluQnZWSi9CNFB2OW51LzVudS81bnZNNTU2ZnpBL1F2MEhiL0lyWDNWRktQbzQ1Y25tNGluVUlXWXdMRlJtWlFVdXdqRkcvTjFpUkhoMUVaME5SVlJ1ZHF0MUJkKzJuU0t5Uy9PaHlzMCtsazNlLzNrUTlxdkQ0WlV0YTRWVlNVdVkwZWlweWlUaEFmb2NvT1JWZ0R1dXczcUtSaUFkM3JiY0V0alRqWUlvZjZXYUhzQ216VlBXQ014K2NnaDh0THFXTUthTVdzVWpMcW8yUnRKSVEwb096bWVycFF1NGVzWmdzT05rR3hIN2Qwa2R2VFQxN3M0T01VN1ZJOFpoamdHYU0rQXE5aUVOdThQaWYxdWR6MDdNd3ZLV2Y4R2xWb0NFWTA0UEM1V2RUYVhZRmJSOHZOdkw1KzNLZ2ZiNXhOTXlhOVJhbUppeW5hTWxHVFZ0RmxyNmJhOXUrcHFuRVg0dU11UlJnalNZRWhyTjd1dEZGZTZscWFsN05ma3c1aW1BR0h5blBwYms4Vm1ZMHhzdG5wdGxGQ1ZDWXR6VHVCTjgzUXBNTGpUdGV2ZFB6U1VuSjdlOG1ranhaMzlmWGJLRGZsZFpxYnZVK1RVZ0duQlZGNmZRMmlQSGc0VzE2VVdVd3Z6YmsxNnNNWkUrUG4wcHZ6N0pTZXVBeWVzOGxjcENtYUt1by9wK3FXcjJVY3dJQUhXcnZQMFlFemhYQXRMQWJzc0hocDdpR2FtdnlpalA4cnlxclhVV1g5WG9vd3h5QXVmTkJycDQzUE9CRlhabGtmOE1EUmlxY3B5b3dBd3B1ejJ4K2ZXdnovRHRkZTlzbXN6eWd0Y1I2QzF3YmR6Qmw2T2xxNVdOWVk0b0dhdGhKTXJrVEV4MGpBUlNIQVZzKzVyWWtRTlhiK1FnZlBMc1E2Z1h5SW5zcmVRZm1wbTdSVkZZZkw4Nm4xZmlVT2tZdlNoa1VQeHZidWt6b3k2SzFpaE0xaG8zWHpXNkV2U2ZYQStkcGlXR2FXZCtkb1h6THptR3dLWUZMQ0FzUkFsUEJBaE1sQ0ZYVTd0QlVWUHI4SGdWY0pIV3ErRjAwcGxyK0RNVGRyUDR6dnhZMTFrTk1oeFQrU2VUR2crZDRWNUxRSml0eVVHSk5COFZGWnNqZ1lCWk0vSUkvWENUa2owcXlET3BGMkFWUTE3Q0lqVXAvRG5UMVVrTDVGNWdkaitzUzF3ZzFnRTNnaWdtNjBmQ1h6U25QWGJ5QVBiSVh2K0lEcEUxNlRoYUhJUzlza3lobG1NRTVGM2NmcUFLaHEyQzBFNVBIMWdZYVhhTFBEa1pHMEhESk9uS1dIcDUxSTB6NVNPdXg4ZTFXQXVaemRIUXJUa3A4VG1qWG9JK2xhMHdHWnN6dWJxYk8zaWZRNkEvVzd2VlNZc1YzbVIwSkt3a0tjNFdIaUJrbVI4STNDQ2dJODdvT0w0cXpUNVArUlVKQmVqRU9nQVBLOGhZUHphdE0rZUlUcDJJTzl5VFFtZXJvbVBSeHgxcXhBY3NpbGUvdWJTZUViY1dRR1lFQ2doY0xZMkh5S2pvZ2pIMjVoTXBqcFV2MU91Z2xpNGVoMmVSdzBPMzJiSmpreXVDZ056ZzB2emxZTVNpU3MwdW9vNE1HN2hNT2pDRWFYMXlGRTBuU3ZqQnp1VG5FcEs4Nlo4SW9xRkFJdWJ3OGtnOUFyRWFSRVdTWkkrakg0WGJwNmc5RTlFbkpUM29hUnpETitNVUpCUURIbjU2YThvVW1FQnVzT3hCcy9ONSt0SkViUGtBRkRqOFVHdk9zL0lXdmNTZ2xHQmh2UzcvRlRZZnBXR1lkRFk4ZlBBeFdTQTM1c1RDNHA0K0xtNEFhcUlvUGVRdGZ1Zks2SmgwWmh4bGJzVVhPU21YTmlmRDVaVEFreURvZmJiY2NseG5BOFdOQXF4Q2JSTnlraFh4UXBhRHc2N2ZYVVlic2lHMEtodHYyb2VJdmg4cmhRTVlPY0VBcVhHL2VJK3puZ09jNXl4cjhxODJJQU0xYy9GTEZPcGxxdTVlRlFYck1aekdjVkNqWWJMV0c1STRCVDFldVJybGJ4dE5PdE1pdERERWhMWElJeW5BQXZ1T0VXRTNYM05kQWZ0OTRWZ2FHNDJYSVF0MFpYNlBlQ0UvcVFGZTlySzZIeDdZVTUwS3ZIN2ZXNGZTK3E3S0tCSnhzZ2dCWDVwU0FHaDFqSXJWaDV6UTZ3M1JmYWFoQlhtL2FDYkNaVGpDVUZVVHlXWnFXOXA2Mk1qSlBYVnFPclBnTU80TnY3NEdrZitvd2Z0TlZCRFFuakZKcUhTdzE3cFh2aFdXNUtacWUvUTQ5Ti9VU1RDQVZXb1FYRklIQkhYWGUzRlByVURzdUdEbXRGL2hIS1RIcGVreGhpQU9QSStTSnE2UzZIRjRJOVlXemtCSlRvNDZpVU16V3A4UGlyL1JpZHVMeEtZc1Nrc1Y4dkxsT1F2aEdYMllsUjBPQmhCakMrdS9nRWN2WTBBcEs3WWs0MU54alBTUW5XRkhURjY2VXJqZ2V2QjhDdTVhK2wydllTUlB0dVZEbzczaGhkTVNIblVYN3RUanNWWkd4QWwvV3B0aU9JRVExZ25MMjltWDYvdFIxdG1sa1lqOFc0WCtDU2pXY1VER1kxTnBTL0M3aFNLcWlNTE0vbDJRbVNXWjczRGR6K2dpbzhCQ0VOWVBRNDZxbmt6d1hVYnF2Qmt4alVRc1dmWkZnYnVvM3JBZit3TjdqT085MCt5bng0UGkzTCswbllMMVNjaERVZ0FQNGdQVi83SWQxcSsxSFNobXVHa0lxV1JQZ3l4TUZxUDhIZmpUbmpYd1k1YlFmYkpjdDZPSXpLZ01Ib3RGL0hlMWVnc2F4SFNxRzZ3ZmRtUTV4OE55VEZGcUJjcDJpU293SFIzeWs1KzM2aEY3dlhBQUFBQUVsRlRrU3VRbUNDIn0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMTItMjIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2LCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ill1YmlLZXkgNSBTZXJpZXMgd2l0aCBMaWdodG5pbmciLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlUyRjEwMDAyMDI0MTIyMjAwNyIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTEyLTIyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3Nn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wMi0wNiJ9LHsiYWFndWlkIjoiNDdhYjJmYjQtNjZhYy00MTg0LTlhZTEtODZiZTgxNDAxMmQ1IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI0N2FiMmZiNC02NmFjLTQxODQtOWFlMS04NmJlODE0MDEyZDUiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiU2VjdXJpdHkgS2V5IE5GQyBieSBZdWJpY28gLSBFbnRlcnByaXNlIEVkaXRpb24ifSwiZGVzY3JpcHRpb24iOiJTZWN1cml0eSBLZXkgTkZDIGJ5IFl1YmljbyAtIEVudGVycHJpc2UgRWRpdGlvbiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzMsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfSx7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDM4NHIxX2VjZHNhX3NoYTM4NF9yYXciLCJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyIsImVkMjU1MTlfZWRkc2Ffc2hhNTEyX3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NiwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NiwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURIakNDQWdhZ0F3SUJBZ0lFRzBCVDl6QU5CZ2txaGtpRzl3MEJBUXNGQURBdU1Td3dLZ1lEVlFRREV5TlpkV0pwWTI4Z1ZUSkdJRkp2YjNRZ1EwRWdVMlZ5YVdGc0lEUTFOekl3TURZek1UQWdGdzB4TkRBNE1ERXdNREF3TURCYUdBOHlNRFV3TURrd05EQXdNREF3TUZvd0xqRXNNQ29HQTFVRUF4TWpXWFZpYVdOdklGVXlSaUJTYjI5MElFTkJJRk5sY21saGJDQTBOVGN5TURBMk16RXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFDL2p3WXVoQlZscWFpWVdFTXNyV0Zpc2dKK1B0TTkxZVNycEk0VEs3VTUzbXdDSWF3U0RIeTh2VW1rNU4yS0FqOWFidlQ5TlA1U01TMWhRaTN1c3hvWUdvblhRZ2ZPNlpYeVVBOWErS0FrcWRGbkJubHl1Z1NlQ09lcDhFZFpGZnNhUkZ0TWprd3o1R2N6MlB5NHZJWXZDZE1IUHR3YXowYlZ1em5ldWVJRXo2VG5RakU2M1JkdDJ6YnduZWJ3VEc1WnliZVdTd2J6eStCSjM0WkhjVWhQQVk4OXlKUVh1RTBJek1aRmNFQmJQTlJiV0VDUktnanEvL3FUOW5tRE9GVmxTUkN0MndpcVBTemx1d24rditzdVFFQnNValRHTUVkMjV0S1hYVGtOVzIxd0lXYnhlU3lVb1RYd0x2R1M2eGx3UVNnTnBrMnFYWXdmOGlYZzdWV1pBZ01CQUFHalFqQkFNQjBHQTFVZERnUVdCQlFnSXZ6MGJOR0poamdwVG9rc3lLcFA5eHY5b0RBUEJnTlZIUk1FQ0RBR0FRSC9BZ0VBTUE0R0ExVWREd0VCL3dRRUF3SUJCakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBanZqdU9NRFNhK0pYRkNMeUJLc3ljWHRCVlpzSjRVZTNMYmFFc1BZNE1ZTi9oSVE1Wk01cDdFamZjbk1HNEN0WWtOc2ZOSGMwQWhCTGRxNDVyblQ4N3EvNk8zdlVFdE5NYWZiaFU2a3RoWDdZKzlYRk45TnBtWXhyK2VrVlk1eE94aThoOUpESWdvTVA0VkIxdVMwYXVuTDFJR3FyTm9vTDltbUZuTDJrTFZWZWU2L1ZSNkM1K0tTVENNQ1dwcE11SklaSUkydjlvNGRrb1o4WTdRUmpRbExmWXpkM3FHdEtidzd4YUYxVXNHLzV4VWIvQnR3YjJYMmc0SW5waUIveXQvM0NwUVhwaVdYL0s0bUJ2VUtpR24wNVpzcWVZMWd4NGcweExCcWNVOXBzbXlQeksrVnNndzJqZVJRNUpsS0R5cUUwaGViZkMxdHZGdTBDQ3JKRmN3PT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZkNBWUFBQUNHVnMrTUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFIWVlBQUIyR0FWMmlFNEVBQUFiTlNVUkJWRmhIcFZkN1ROVjFGRC8zZDU5d2VRU0lnUzlBUUFYY0ZMQVFaaTlmcGVWejF0WS9XVFpyNVd4cGM3VzVrbkxhNWpJM1o4NXNyUzJuTTJzanRXd1pTN0lVSDRINHhDbkVReDREQVpGNzRWN3VzODg1djkvbEluQnZWSi9CNFB2OW51LzVudS81bnZNNTU2ZnpBL1F2MEhiL0lyWDNWRktQbzQ1Y25tNGluVUlXWXdMRlJtWlFVdXdqRkcvTjFpUkhoMUVaME5SVlJ1ZHF0MUJkKzJuU0t5Uy9PaHlzMCtsazNlLzNrUTlxdkQ0WlV0YTRWVlNVdVkwZWlweWlUaEFmb2NvT1JWZ0R1dXczcUtSaUFkM3JiY0V0alRqWUlvZjZXYUhzQ216VlBXQ014K2NnaDh0THFXTUthTVdzVWpMcW8yUnRKSVEwb096bWVycFF1NGVzWmdzT05rR3hIN2Qwa2R2VFQxN3M0T01VN1ZJOFpoamdHYU0rQXE5aUVOdThQaWYxdWR6MDdNd3ZLV2Y4R2xWb0NFWTA0UEM1V2RUYVhZRmJSOHZOdkw1KzNLZ2ZiNXhOTXlhOVJhbUppeW5hTWxHVFZ0RmxyNmJhOXUrcHFuRVg0dU11UlJnalNZRWhyTjd1dEZGZTZscWFsN05ma3c1aW1BR0h5blBwYms4Vm1ZMHhzdG5wdGxGQ1ZDWXR6VHVCTjgzUXBNTGpUdGV2ZFB6U1VuSjdlOG1ranhaMzlmWGJLRGZsZFpxYnZVK1RVZ0duQlZGNmZRMmlQSGc0VzE2VVdVd3Z6YmsxNnNNWkUrUG4wcHZ6N0pTZXVBeWVzOGxjcENtYUt1by9wK3FXcjJVY3dJQUhXcnZQMFlFemhYQXRMQWJzc0hocDdpR2FtdnlpalA4cnlxclhVV1g5WG9vd3h5QXVmTkJycDQzUE9CRlhabGtmOE1EUmlxY3B5b3dBd3B1ejJ4K2ZXdnovRHRkZTlzbXN6eWd0Y1I2QzF3YmR6Qmw2T2xxNVdOWVk0b0dhdGhKTXJrVEV4MGpBUlNIQVZzKzVyWWtRTlhiK1FnZlBMc1E2Z1h5SW5zcmVRZm1wbTdSVkZZZkw4Nm4xZmlVT2tZdlNoa1VQeHZidWt6b3k2SzFpaE0xaG8zWHpXNkV2U2ZYQStkcGlXR2FXZCtkb1h6THptR3dLWUZMQ0FzUkFsUEJBaE1sQ0ZYVTd0QlVWUHI4SGdWY0pIV3ErRjAwcGxyK0RNVGRyUDR6dnhZMTFrTk1oeFQrU2VUR2crZDRWNUxRSml0eVVHSk5COFZGWnNqZ1lCWk0vSUkvWENUa2owcXlET3BGMkFWUTE3Q0lqVXAvRG5UMVVrTDVGNWdkaitzUzF3ZzFnRTNnaWdtNjBmQ1h6U25QWGJ5QVBiSVh2K0lEcEUxNlRoYUhJUzlza3lobG1NRTVGM2NmcUFLaHEyQzBFNVBIMWdZYVhhTFBEa1pHMEhESk9uS1dIcDUxSTB6NVNPdXg4ZTFXQXVaemRIUXJUa3A4VG1qWG9JK2xhMHdHWnN6dWJxYk8zaWZRNkEvVzd2VlNZc1YzbVIwSkt3a0tjNFdIaUJrbVI4STNDQ2dJODdvT0w0cXpUNVArUlVKQmVqRU9nQVBLOGhZUHphdE0rZUlUcDJJTzl5VFFtZXJvbVBSeHgxcXhBY3NpbGUvdWJTZUViY1dRR1lFQ2doY0xZMkh5S2pvZ2pIMjVoTXBqcFV2MU91Z2xpNGVoMmVSdzBPMzJiSmpreXVDZ056ZzB2emxZTVNpU3MwdW9vNE1HN2hNT2pDRWFYMXlGRTBuU3ZqQnp1VG5FcEs4Nlo4SW9xRkFJdWJ3OGtnOUFyRWFSRVdTWkkrakg0WGJwNmc5RTlFbkpUM29hUnpETitNVUpCUURIbjU2YThvVW1FQnVzT3hCcy9ONSt0SkViUGtBRkRqOFVHdk9zL0lXdmNTZ2xHQmh2UzcvRlRZZnBXR1lkRFk4ZlBBeFdTQTM1c1RDNHA0K0xtNEFhcUlvUGVRdGZ1Zks2SmgwWmh4bGJzVVhPU21YTmlmRDVaVEFreURvZmJiY2NseG5BOFdOQXF4Q2JSTnlraFh4UXBhRHc2N2ZYVVlic2lHMEtodHYyb2VJdmg4cmhRTVlPY0VBcVhHL2VJK3puZ09jNXl4cjhxODJJQU0xYy9GTEZPcGxxdTVlRlFYck1aekdjVkNqWWJMV0c1STRCVDFldVJybGJ4dE5PdE1pdERERWhMWElJeW5BQXZ1T0VXRTNYM05kQWZ0OTRWZ2FHNDJYSVF0MFpYNlBlQ0UvcVFGZTlySzZIeDdZVTUwS3ZIN2ZXNGZTK3E3S0tCSnhzZ2dCWDVwU0FHaDFqSXJWaDV6UTZ3M1JmYWFoQlhtL2FDYkNaVGpDVUZVVHlXWnFXOXA2Mk1qSlBYVnFPclBnTU80TnY3NEdrZitvd2Z0TlZCRFFuakZKcUhTdzE3cFh2aFdXNUtacWUvUTQ5Ti9VU1RDQVZXb1FYRklIQkhYWGUzRlByVURzdUdEbXRGL2hIS1RIcGVreGhpQU9QSStTSnE2UzZIRjRJOVlXemtCSlRvNDZpVU16V3A4UGlyL1JpZHVMeEtZc1Nrc1Y4dkxsT1F2aEdYMllsUjBPQmhCakMrdS9nRWN2WTBBcEs3WWs0MU54alBTUW5XRkhURjY2VXJqZ2V2QjhDdTVhK2wydllTUlB0dVZEbzczaGhkTVNIblVYN3RUanNWWkd4QWwvV3B0aU9JRVExZ25MMjltWDYvdFIxdG1sa1lqOFc0WCtDU2pXY1VER1kxTnBTL0M3aFNLcWlNTE0vbDJRbVNXWjczRGR6K2dpbzhCQ0VOWVBRNDZxbmt6d1hVYnF2Qmt4alVRc1dmWkZnYnVvM3JBZit3TjdqT085MCt5bng0UGkzTCswbllMMVNjaERVZ0FQNGdQVi83SWQxcSsxSFNobXVHa0lxV1JQZ3l4TUZxUDhIZmpUbmpYd1k1YlFmYkpjdDZPSXpLZ01Ib3RGL0hlMWVnc2F4SFNxRzZ3ZmRtUTV4OE55VEZGcUJjcDJpU293SFIzeWs1KzM2aEY3dlhBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMV9QUkUiLCJGSURPXzJfMSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJsYXJnZUJsb2JLZXkiLCJjcmVkQmxvYiIsIm1pblBpbkxlbmd0aCJdLCJhYWd1aWQiOiI0N2FiMmZiNDY2YWM0MTg0OWFlMTg2YmU4MTQwMTJkNSIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImxhcmdlQmxvYnMiOnRydWUsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjp0cnVlLCJhbHdheXNVdiI6ZmFsc2V9LCJtYXhNc2dTaXplIjoxMjgwLCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjgsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4LCJ0cmFuc3BvcnRzIjpbIm5mYyIsInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi04fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotMzV9XSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5Ijo0MDk2LCJtaW5QSU5MZW5ndGgiOjYsImZpcm13YXJlVmVyc2lvbiI6MzI5NDczLCJtYXhDcmVkQmxvYkxlbmd0aCI6MzIsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjoxLCJyZW1haW5pbmdEaXNjb3ZlcmFibGVDcmVkZW50aWFscyI6MTAwfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMTAtMTIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDczLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IlNlY3VyaXR5IEtleSBORkMgYnkgWXViaWNvIC0gRW50ZXJwcmlzZSBFZGl0aW9uIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNDEwMTIwMDUiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0wNi0wNCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzMsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiU2VjdXJpdHkgS2V5IE5GQyBieSBZdWJpY28gLSBFbnRlcnByaXNlIEVkaXRpb24iLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI0MDYwNDAwMiIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTA2LTA0IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3M31dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNC0xMS0xMiJ9LHsiYWFndWlkIjoiOTMxMzI3ZGQtYzg5Yi00MDZjLWE4MWUtZWQ3MDU4ZWYzNmM2IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI5MzEzMjdkZC1jODliLTQwNmMtYTgxZS1lZDcwNThlZjM2YzYiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiU3dpc3NiaXQgaVNoaWVsZCBLZXkgRklETzIifSwiZGVzY3JpcHRpb24iOiJTd2lzc2JpdCBpU2hpZWxkIEtleSBGSURPMiIsImFsdGVybmF0aXZlRGVzY3JpcHRpb25zIjp7ImRlLURFIjoiU3dpc3NiaXQgaVNoaWVsZCBLZXkgRklETzIifSwiYXV0aGVudGljYXRvclZlcnNpb24iOjUsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MTAsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6MCwiYmxvY2tTbG93ZG93biI6MH19XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNpVENDQWc2Z0F3SUJBZ0lVT2ttVTM1SWljWG9WUGpmdndwRzdNTjZ0SFBVd0NnWUlLb1pJemowRUF3TXdRekVMTUFrR0ExVUVCaE1DUkVVeEZEQVNCZ05WQkFvTUMxTjNhWE56WW1sMElFRkhNUjR3SEFZRFZRUUREQlZUZDJsemMySnBkQ0JHU1VSUElGSnZiM1FnUTBFd0lCY05NakV4TURBM01Ea3pNRFF5V2hnUE1qQTFNVEV3TURjd09UTXdOREphTUVNeEN6QUpCZ05WQkFZVEFrUkZNUlF3RWdZRFZRUUtEQXRUZDJsemMySnBkQ0JCUnpFZU1Cd0dBMVVFQXd3VlUzZHBjM05pYVhRZ1JrbEVUeUJTYjI5MElFTkJNSFl3RUFZSEtvWkl6ajBDQVFZRks0RUVBQ0lEWWdBRXRnT0M3SUt4aXBNSjdiVlBUVDgzT2U5MHh6SFBDZWJ4eUN0Zy9XcnNUclJhU25ZaWdtSkNCOC9qcUJONE9RRzJkWjVqY05zTDZTd0hvc1lEUkpjK08xems5aTVHRVpXZjNJcjk5MkE2ZHVNc3A1MWxxNGZBZ2EvVXpUTjkvRWJ6bzRIQU1JRzlNQjBHQTFVZERnUVdCQlRmeHpnOEdHellBaWRLTDYzdWhTaXJhWEpJS0RCK0JnTlZIU01FZHpCMWdCVGZ4emc4R0d6WUFpZEtMNjN1aFNpcmFYSklLS0ZIcEVVd1F6RUxNQWtHQTFVRUJoTUNSRVV4RkRBU0JnTlZCQW9NQzFOM2FYTnpZbWwwSUVGSE1SNHdIQVlEVlFRRERCVlRkMmx6YzJKcGRDQkdTVVJQSUZKdmIzUWdRMEdDRkRwSmxOK1NJbkY2RlQ0Mzc4S1J1ekRlclJ6MU1Bd0dBMVVkRXdRRk1BTUJBZjh3RGdZRFZSMFBBUUgvQkFRREFnRUdNQW9HQ0NxR1NNNDlCQU1EQTJrQU1HWUNNUURzdjRLNk5mSnZmdnpkME95Z3dKL0FCaUx0Z3RKV2hYVGVVbGx0ZHFhNFdzT005dHZ4NjM2djVGSXZaUmtLMVhvQ01RQ2RvUFErYTRmREJFaU51ajBXczMzdVVRaEdycHNlUERHZlZYbjRrRXBiVElCZU9kVkF4Ly9Uck1DL1NWYitic2c9Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQU5FQUFBRE1DQUlBQUFCaUVOSDlBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFBN0RBY2R2cUdRQUFDWnZTVVJCVkhoZTdaMEhkQnpWMVlEWERUZWFzU2syRUV3eFlNQ0FBUU9HbjBEb0VDZEFDS1lrUUNDaEJFaUFFRWdnaElRRUhBaWhkeExBWGJMYUZxMTY3NzJ2ZXU5OXAvZVoxWC9mekVwYTFnV0RaNldWOXQzekhSMGRnM1puMy92bXZ2dG01NzJ4ak9IQU1iV0JuY014MVhFZzUxUlZIWFVUTmMxdDlvS0t0K0x6SDQzTXV6bThkSDFFdzZsUm5TdHRneXNjN21OaWlXT2MxREZPRWpQYm9hQ3ZvY2RYMllkT2krcTRPTEwrMXZEU3h5TnozNDdQaXkyb3FHdnRjQk1FMk9MMTV0dGl2ODRKZ3REVzBaRlU1bm8zcmZ3Ulc4bDFZYVZydHBZZi9YWHRuRzF0bG1pM0pVNnlKSTlaVWpHaEJQUTQ5SHZVNk54dHJjZHNyVDE3ZThYMXUwc2V0eFYva0Y2ZVdsN2IyZFVsaXFMWG5nUEd2cDFqR01iVjFCcVdWZktjTmZmRzhOSXp3aHFPRHUrY3Y2ZlBFamxzaVNFc05zYmk0Q3l4dkk2QUNRMzA3bmF3cVBmQmdZamh3eUlHamc3ck9ITjMzUzFoSlgrMjVVZmxsdFczdEhNYzUzVm8vN0VQNXdpQ0tLMXYvaXk5OUtHb292VTd5bGZzYkpvVDFvY2tpNWVSNXZDTGpiWllTZlRHbUZBRCtoMmNpK1dRQ2VDRG5aMGIxbnZjenNaTGRwUTlHbFAwWldaWlpWTXJSVkZlay9ZVC9zNUJoZ1BoUGtncXZDdWlhTTN1K2tYaFBYT2lSaXhXR2drTzJKbHg0YkJ6b1FscHNWTElBVERCVU1KS3pZMGFXUkxlc3phczd0NDlCWitsRlZVMHRCdzQyMzNET1o3bmE1dmJQa3N2dVd0UDRTazdYZlBDK3kxeGVtNnpRMGFsOW5wN1RNZ0RWb0IyOFJKSXNpQzg3N1FkMWZkRkZueVZXZGJZMWdIekFhOVZlOFdrY3pEdmFPdm9oQnJ1b2FqQ004UHJGMFQySTVkaElJY1hoWmZHZ3lsbWI5QlFDOXBCY1M5QThsdXdwL2VjOE5ySFlncWljOHM2dTdvMVRmTzY5YzJZZE01TmtNbGxydWRpY2kvY1Zyb292QnZKQ3pVakpGSnNHK2JBZ0NIZ2lWT3d4SWxMd2pvM2JDOTUwWmFiVVZHM3Y4SnUwamxYUy90N2FlVTNoWlV1Mzk1Z2lSelNwd3NzcnRzd0J3ZUpNaFE0czJmZzJHMTFtOEpMUHNtb2FHanIyT2ZWazBubjdQbmxqMXFMejloVk55KzhEMmtMTlJ6ODlIOXBER1kvd01RQ1RTbkkrV0c5WisrcS9aMjlKS0dvY25CNDJLdVhUMHc2OTFaYzN2VmhKY3ZDTzlCZkdqVWNUbktZZ3dmVmRycDJObWI1N3JhYmR4ZTluNUJYMDlMdTFjc25KcDE3TkNMM3pHM2xoMFgwbzBvT0NidlhpMkl3QndhY0FYUGl4SVhodld1L0x2MWRkRjVLZFpOWEw1K1lkTzdtOE5LanY2NzFWbkl3WS9WN09Rem1ZSEF3NE55Y2lLRmp2cXE1TGJJc3ZMTERxNWRQVERxM1BxSisvczRPL2MvMGJ4cDhYd2lET1Vqcyt2QWE0MTZ3by8zeTZJYlBxd2U4ZXZuRXBIT25SbmVpTCs5dEU5ODA3UFZ5R015M1l0T3JPaGdubzBiUHRuVzk2M0o3OWZLSlNlZFcyZ2IxNnlPY2Zya0ZPNGY1WGhqeXhISVdwN2c2ZHVqTk9zYXJsMDlNT3JmQzRiWWtlOUJWRnI5WHdXQytLMDRCWEZybGRHK3A1NzE2K2NTa2M4ZkVrdWdlS2V3YzV0QnhpdURTQ1hIRTZ3MEh2Q1o4akpOQ3pvR2hmbitQd1h4WERPZmlxZGUrelRrOXoySG5NSWVPTjgrUnJ6WHM0KzRTN0J3bUFHRG5NRk1OZGc0ejFXRG5MTkVoajErREJKclFkYzVvN3FoOUVSbEt3T2VkWXUxbXVYT0dXUHZFVnpLLy94Uk56SmtnaHBnN2U0RlBaM3hNLzNZTEtMUFdPY01lUXlsMFFyc25tVkF0Q3JYN0FpdXh5RVlzdFJOSE9vaGxEbko1TEhXc2t6cmVTYTJNbzFiRlV5ZkdVeWVOYzNMQzdPR1VCUExrQkhKVkhIVk1MTG5FUnM2YnlwdlRacFZ6NDFscVVqajlGemlQNTFxUld3dDF0NDZLSlZjNFNmQnBkUUoxWmpLOUxwVytLSjIrUElPK0tvdStOcHU1SVllOUpZL2RsTS9lVnNEK3JJQzlzNUQ5ZVNGN2w4N21vbG5DM1VYc2ZjWG81Nlk4OXJJTUdoUmNiQ2U5amViWHBJRmc5amhucEM1SVl4R1F6TkR2TUhBc3NwRndIcDhVVDU2WlRLMVBvNi9Nb20vSVpVQ21lNHE1aDh2NEp5cjU1MnFFdjlRS3I5WUxielFLN3pRTEg3U0lIN2RLbjdWSi8ydVh2dTZRdG5WSzI3dWtIVjNTVHAxZHM0WGQzVkpranhUV0xjSG5mYUtTMjVqSkxJdlZuWU1HOUd2VlFEQWJuRE5PMFBHc05pK0dXR0tIVEVhZGxraXZUMk91elVHSjZwRnk5b1VhL3ZVRzRjTldFV1NLNkpHZEEwcnFrSkk3cXBZUWFpV2wxZEphRTZPMXNGbzdwM1Z3V2hlbjlmQmFyNkQxNmZUUExnWkZ6UzE3aGlSUG1Wdjl1Rlc4dllBN1BvNnlST21GaDEvYkJvSVo3TnlFYW5xSkJwWFprWGJ5NUhqcWdsVDYyaHhtY3hIM1pDWC9TcDN3Zm91NHJWTzA5MHNaUTBxeFc2bWwxVllXeVRRaWVTakZ3NnRqc21kczN5c3RReUFHQmMrZWJ2bVhKZHlKNEp4UjdQbzFjaUNZMmM3cHVRMFMyeEVPY25VaURXTUVGQ3QvckJiZWJSSER1MlZJWTJXRTJzUnFQV0NZN0tFVkQ2ZDZSTTBqYTJPcVo4emovV1FoSFpEQ3c3dWtYMkRudmgxdmVrTzVEUXFSdGNrVVZHbVBsTVBRS1c3dmxOS0dsR3BLaFpHUlZzQXRyTmFCb3BQVGRuWks5eFp6TUlIRnpoMFFQYjB0dEtIWi90Vlp6T1BsSEF5Z3puNmxpbFM3ZVkyUVljVDBRQ2JEOGEwQmxlc083TnlCOEE2bWJoaE1WempKOWVrMFRQaTNOQWpXWHJtR1VxRSt3MG50dXdaMjd0dlFuVnRnSTA2TUo2L1BZWjUzOFdIZGNnV2g5Z3Nvc1hrUEZNZDNDZXpjL2pFeVhCU3h4SWF1dE4xUndMN1JLS1FNeVoyOHBtRFpEaUd3Yy90SGQyNnBqVHczaFg2d2xQdXNWU3gycTZPU0J3dDNpSUdkMnhkZ213NWt1SFdwOU1ObDNMWU95VVdwM01GdXc0M2pRSUdkMnhkNmhsdHNKODVKb1VDNDdaMVNBNjNpNnMyc3dNNTlrL0VNZDVpVldKTk0zVi9LYmRXRms3Qnc1Z1YyN3B2b2s0YjVWdUxrQk9wbmhld25iV0l0em5CbUIzYnVtK2pPSFJ0SDNwakx2Tmtrd0tTQnc4S1pIZGk1Y1l4UkZjbzRHM2xST3YwbkY1ODJyTUFzMVhzb09Nd0w3Tnc0dW5BTHJNU3BpYWlNaStpUmU0VDliTEtONDlBQ096ZU9QcW91anlWdnlHWGViaGFyS0ZYR09TNHdnWjBiSjRxWVp5WE9TNlgvVU0wbEQ4ckRFczV4Z1lvZVh0dmRKZDBYMHM3cGxkemNhR0s1azl5VXovNnZYV3hqTlFWL2RSK3dHQlMxaUc0SjNiTVpIN0xPZWI5VUpTNUFTWTdQR0piWktmeDZDOTVKODZEYk9RRjRXd0RHZEZuekF0bDI5dEhNYUZzN3BidUx1SldoNnh4ODVpZ0NqdWEyZlBhek5xbVptYUtySTZMcW9XUVBET0w5Z3RiTm8vVVFyYXdHL2RISWFQVzBXZ3RRYW8xT05hVldrWk5Vemt6Z3lGMzZCMGtjVUxZMENqZm5zY2M2OWZVUWdGK1BCSUpnYzI1dURIRmVDZ1ZKTG5rd3NOZEhRR2RHR1JzUXdTMjFqRkF6aDVYNEFkbmFLKy9wbG5kM3lkczY1YTg2cEMvYXBVL2J4STlieFk5YXhBOWF4UGVieGZlYXhYZDEzdEdCS2M1TUJJNGNQZzU4aXIvV0NmZVZjT3ZUNlNNZG9ibldFRjBpY1I5dUo2L1BacUNiR3hnTlJyUUFCUXpaVUNsbURTdTd1NlYzVzhTWGE0V25xN2hIeXJrSFN6bVl4RzB1NU80czVHNHJZRGNWc0xmbU1iZmtNVGZsTWpmbU1qZmtNTmZuTU5kbEk2N1YrZEhNQkMzanpVV2Y0b3BNNXB3VSt2ZzQ4akRiWHQwUk9JTEZPZjJhM0x3WTlFM1hBeVdjdlU4ZUNVeVNnNG9OWHJtVVVIZDFTUys1aEx1TDJhdXptWFZwOUJsSmFIVTdsRFhIeDZGMS9DdWNGSHprbzRGWThpZ0hDV2tBT01LT2dMTmkxckRVVGk2MG9TOFk1L2gxUjBBSkZ1ZFFNWUhXcFY2VVRyOVVpNzdwQ3NRMU9SQU9LcmIwWWVYZmplSXZpcmtONmZSSjhlUVJEaElHZEVONnhNVG1NVVpON1V2RXJBTStGTFQ4MUF5cEV3U0xjK2pERThjNXFSL25zUiszU3MycytjTXFDRGNrZXRJR2xiL1hDVEJLUWxaRCszUkFjeHUyR2I4WXY0Y09FNS9hcnpzQ1NoQTVGMDJjbmtqL3BveUw2WlVIUlBPem5GdjI1STZvcjlVTDErVXdLMkpKMU9Mb1JQZHBlcjlEd2dTSW9IQU8ranNTaWpueW9qVG1aWmVRTTZKUVpsK1dnNUc2aGxJL2JKRTI1Yk1ueGxGejlYZWN0aE05eEFrZTV4YlpTSmhTd1J5K2xsSkZHQWpOQzlVekJvblQyaXMvWE1hdFRxVG13OXNaSTR2ZllXQ21odWwzYnR5QVpiSGs3UVhzcmk2NW16ZjVMaEpHUVJQVk54dkVIMll4aTIzZTJoSG50bWtqU0p5YkUwMmNHRTg5V01vNSt4WEM3S3NrZllJVzFTUC91b3cvUFpIU2MrcVV6OVF3dmt5L2MzcVNXMkFsejBxbWYxL0ZaNCtvZ3FscnVqeWVzVHBLZmJ0WnZENkhSVStRZ3JlRFNzN3ZHREJUU1pBNHQ4Uk9YcHhPLzZWV2dFSFExRnB1REVyRDNCSGxEOVg4ZWFrMGxJekcyL2tmQTJZcW1YN25JT3RFRTBjNXlLdXltSDgxQ2k3SzVKV3JidG5qNkpmdjEyL1hRWnMxZzNCNFlKMWVnc1M1RlU3eXBsem0vUmFoaVRIVE9VaVpYYnkyclZQYWxNZUMxcFBYUi95T0FUT1ZUTE56cUtKSFAxZnE5eTk5MFNhMmMyYk9XU1Z0ckk1V1AyZ1JyODVpRnFJWkt4WXVDQWdTNTA2T0p6Y1hzWkNRdWdVem5XUFZNU2dRdHpTS2wyYlFhRHQ2N0Z3d0VBVE9vU3NYcXhNb0tMbkN1K1UrVTcvMUloVlB6b2p5Y3Exd1lScU4zZzVmSlFrR2dzUzUweE9waDBxNXFCNTUwRlRuUm1WUDJwRHl4eHIrM0JRS3ZSMTJMaGlZZnVjaWtBZG5KRkdQbEhQV1BubklWT2VHSlUvaW9QeDBGWGQyOHZqVllMOER3RXc5UWVMY21pVHEwWExPWnJaejhHcHhBL0tUbGR5WjJMbmdJWGljZTZ3YzNSNXNybk13VWp2NzVTY3F1RFhZdWVCaDF1YzVjTzVKN0Z4UUVTUnpDS2puakxzMXpaMURESXVlK0FINWQzaHNEU3FDeExuVDlIbHJaSS9KZHdpUFNKNlVRZlJsNjFxWXQyTG5nb1FnY1c1MUF2WExFaTZzVys0VnpIU09rRDFadzhxTEx2NzgxUEhyYzc3dmpwa1dnc1M1aytPcHpVWGN0azZwaXpmemV3aEc4UlM3MVgvV0N4dlNHZnc5UkxBUUpNNmg3MXNMMkMvYXhUWlRkMFFYVlU4dHJiN2JMRjZWeGFCbHcrQWN2cEZwMmdrQzU5RFBGVTYwaDZ2cDk1V29uckZPWHR2YU1YNWZpWEh6SEU1MTAwdVFPSGUwZnYvY0d3RzRmdzVLdXRnKytVSDljWkhlNVY3WXVlbGxtcDBEOU55ejFJYnVFLzVybmZuM0NVdmFXT0dvK3FKTHVDaU5XWUx2RXc0R2dzUzVCVmJ5N0dUcW1XbytaMFFCUzh5TlZsYjdiN3QwUndGN0F0cE5rckJFNEZRM3JVeS9jOUQ5K3Jxdkh5U1FENWR4Q1FPeTZRdXEzYkluWTFoK3ljWEQ3QlV0aVFEbmNGVTNqUVNKYzhEeVdQTE9RamE4UitvVFRWN2ZLbXNlbUVsRTlraVBsSE5uSmRPTDRVMVJ0ak4ydmhuM3o4RDN3REFCWXZxZEE2Q3pJNG1sZHJSUitpZHRZaU9yU3FidUlReXZKV3Jvb3NuL090RGV1ZWNtVS9CZWh1aGU1d3dtek1QeUJaVGdjVzYrbGJ3MGcvNUhnMUJNS0d3QU5uV2xGVThscVg3VklUMVp5VjJkelp5ZVNCM25wR0R1TXQ4NGdDZzk1M2t4VXVDQm1maWZUV0pDL2UvS3hIbGk0TnV3d1VuUU9PZUdrZzZtRVU5Vjh2RUQ4b2pwOHdnOTJ6R0twNUhSNGdia3Q1ckZ4OHI1Vy9QWWk5T1kwNUI4NUpFT1lxRU5QU01BN2Y1bmRKNWYxODRJWm9SMndlTWNOTm1xT09ybmhlelhIVktucWF1L2ZBUG1KME9TVmtHcTlqNzV3eGJwTHk3aHNRcHVjeEhhdy9XSDJjeWxHY3lGYWN3NUtkU2FaR3AxSXRwNTg4UjRhbVVjZFh3Y0NWNGVxN1BDREtCNEJZN1JXYVp6dEFOeGxBN2EwMVBmMWhQdGhtbER1MkV1QVd6RVlodXh5RVlzdEtKblBTNndFcENoNThYczZ5U1p5TVRCYVdGUU9BZm9qUVhOZldVbTgzcURBSU5nNExaTWh4Zm1WTStnNEdsaXRCSzNtaklvdy9RQ3h0ejNXOFF0RGNMTHRjSnoxZnlURmR5dnl6Z28vdTR1OXU0dC9KTjg5c2Q1N0MxNTdNMjVpSnR5MFNiRDM1c2JjNW5yZ1J6bTJoenZIcjlYWnpFL3pHS3V5cVN2ektRM1p0S1haOUpRYVZ5YVRsK1NSbCtVUnE5UG95OUlvODVQcGM1Tm9kWW1VMmNsVVdja1VhY21VajlJb0ZicCs5R0N3V0RxSWp1eTBPdlp4SGlObmRzMzBDNVJjUHFTMEpTL3JlREFBMGJ4dm5WQUE4eUcybkZJUlB2ejE5Rm9BL1hjRVRWMVNISDJ5OUc5VWxpM3RMMEw2YWh2b0M1OTFDcDkyQ3A5MEFKMlN1KzFpSWZDdS9yKzVmOXBFdDlxRXYvZEtMN1pLUDZyVWR6U0tNTDU5czhHNGRVRzRlLzF3aXQxd2w5ckJjakVMN3FFUDdtRUYycjRQMWJ6ejFieHY2K0NVNEovdklML1RUbjNFSndZcGR6ZFJkd2RhTHR0OXBwc1prTTZ5dE0vU0VRV0xyYVIzcTBMZ2txK0lISXVHbDJsZzFIbXAvbG9vV3NucnltQkdtRDNFU0NmcUtIOTFFblpNeXFCaFo1K1Fldmh0UzVlYTljZkY5SENhSkFYb1J4czBLay9OT3BvaEl0QzFGQmF0VTRWcFZVU1NnV2hsQk5LR2FHVUVrcUpXeWwySzRXalNzR29raitxNUkwcTJTTks1ckNTUHFUQWlaRTBLRVB0NjBDbmh3eW5COVFrSDdXQ3RlTHoxZndEcGR5Tk9jeTZWQnBTSUxxNVlVSTd2MmFmRm9MRk9RQzBpMFJseW9aMCt0VTZBVnA1YWxKZFVJWEhnOUQwbjhZdmNESVlEK1VCWlAzRUVBQVZ5Z04waHNCa25GVFFTVElnb05PalNYL1dCUmdaM2kxREtuMjJtcit6a0lVeCt1UjRWQlJPNXJ6cFRYaEI1QndBSlVnMGNVb0Myb2d1dkZ2cU1YVk4vNndQYUN4Wjg0Q0lvR0EzcjlWU1dzYVFzcXRMZ2hQNDNtS1lvZE13ZDBFN3hFL01MWHhiZmlvSk91ZGdKbUdIbVFUOWozb2VCcGZBelNSQ0lYalYweWQ0aWtiVkhaMFNsSU13QVZxVGhIYUw5eWE4NmRJdXVKelRNLzk4OU4wcmRYOEpDMlVLMUZXbWZpVVJpa0hMSGloSlljRDlvRVY4cUpTN01JMyt4cTJFVTI5ZWNEbG5OQUY2dENGNVJRYjlXcjBBRlRSajlsZitvUmxnWGkydFFzVUMwOTRyTXBubHNSUWFadzN6Zkx0Z0NnZ3U1d3dpaVRsUmFJWEVQVVhzMWs2cFBRRFBKd25OZ1BJWUd0UGVwL3k1UnJncWEvd2hHVk9mN1lMUk9iMGhJTlZka0VvL1U4VW5EOGltNzJvZHNnRVQ0VjdCa3pRZ3YrUVMvaStMV2VhWWp0b3VHSjNUVHp0b2k2Tmp5ZXR5bVA4MGlaV2t5dUhaaEVrQjdUZ2dhSEg5OG5NMS9JWjArb2lKMnM2dkZ3SkhNRHBub0xmQzZnVHFubUx1cXc2cGtkYXdkV1lGVE1zNk9jM2FoM1p5T1RlRldtREZlYzVBUC9rV1c4bHpVdWpIS2ppWXcvYUpIbHpabVJXeU50YkthWEF5Lzd5UVBTbWVtZy9hVGRrSUc3ek82U01zTk1UaGRuSkRCdjE4alpBMHFQU0wrTXFKYWNHcmFNSDVsZ2J4Mm16RysrU01xUmxoZzljNUFKelRyeEl2aXlXaDRIMjVUa2dkVW9ZRGNHdGR5TWF3NUVrWVVINWZ5YTlOcGhmRTZOcE5RYW9MYXVjQVBkWEJmR0tGazd3MmgzbTFuczhZa29mTXZYVTloRVB4akRXejJ1ZHQwby96MkJWT2ZSdWhLZEF1MkowRGpJWkFUeFFtcjgybS8xYkhKdzhxZllMSDNHV3dJUnVzNnNrWVZwNnQ0dGVsMGd0dHhpTTBBcnlUMEF4d0R0Q2RteHRESE90RXo5dDh5U1hBVkI5bVhwTEphLzVETWVETWJXUzBUOXFrbitheng4VlJxS2tqc1hQQWVLcURVeEFHMlNzeUdEZ3Z3N3NsRjZYU2dYaHVmNGlGVy9MQTBQRk1GYjgyaGRhMzE4RE9HVUJiNk9aQnRqdktUcTVQb3g0dVpUOXJFNHRHMVNGOERlWFFBb2FMT2twN3IxbThKcHRkWXF6Q05GcmJyd3ZNWXNZNFo2QnJCeWZpWWh0eFpoSjFSeUh6ejNyQjJxdTRLQTNNd3pjRGZNL3dqSTJJbnVoZStkNWlibVU4TmM4UURqczNDYlNGZm12blFpdHhZang1UlNielNCbi9RWXNFb3dOTXdRZ1p6eTIrVDRqYVdJNyt4RkdZU1N3TzlFNUNNODg1d0RnTDBSRGdYbW9uejBxaWI4MWpuNjBXUG0wVDQvcVZja0p0NTdSaEVkMHhpelBmUVFhMFV5MnQvcWRKdkM0bjhOZUhaNlJ6Z09FYzBnNFNIbHAyZW00S2ZXTXU4NXN5RGtiYnJSMVM0b0JTU3FndHJEWWdlQ2pGSTZqb1doUzZySWN0M0U5MDg5ck9MdW0rWXZSVkdHcll3TTBrWnFwekV4am1SYUdseFVjNXlETVNxZi9MWkRZWHNrOVg4YTgxaUorMlNXSGRzck5mVGg5QzY2WktDYVdLVkdvcHRIeXJsVVByQzZHaGV3V3RYL0FNaUo1QjBRUFpjVVJDNndsZ0tnZkRORURxVURxMHZ1YkZGK2I3QWprWTRGUUVyNkkxTlRDNlNScGFaYVBxUzIrbVB1Q0RKdzBxMEc1bko5UG9CaWZzM0g2WlNIaEFORnJnRHVhdGlpUFBTcVkyWkREWDViSjNGSEFQbEhKUFZQRFAxL0N2MUFsYkdvUzNtOFFQVzhVdjJ0SGlQRGl6OS9SSVVEN2IrdVRZZmptaFgwNGFrRk1HMFdLK3pHRWxXeWQzV01rZlVZR0NVVVNoRzFIMGZTa20xQkpDaFJ4Y1JxaFFCbFFTYWhXcHVpZ1ZocllHR2lWbU9CTjZlRzFRMU55eXhxcWVLYnNXeENwamNHRC9iQkEyWk5DQi9jcC94anZueTRSOGVudk5zNks5bmxiRVVpZkhVekRKUFQrTnVqU0R2aXFMdmo2SHVUV1B1YTJBdmF1UXZhOFlHZm5yTXU3UmN2Q1MrMTBsOTB3VjkxdzEvM3cxLzJjWC82S0xmOG5Gdit6aVg2a1YvZ2JVSVY2dG4rUWYzeDNvVkdqcjF4dUVmelVJYnpRS2J6WUtieldKN3pTamhkWWZ0WXFmdDB0ZnRrdmJPNldJSHNuV0R4TWpHZEl6Sk9aZVhvUHNHTkQ4QjFrVzB2L0hiUktVZEl2dDJMbURaQ0xub2QwNjBBWW82RitpMFNVOXlIK0xiY1FSZHJRbkNOVElVUDhkNzBUcDhLUUV0UDNDNmtUcXRFUnFUUklGMlhGdE1uVk9DblZlQ3JVdUZlM1ZjRUVxZFdFcXRUNk51UWhJUjF5c2M4bjNCYkl2Y0drR2Mxa0djM2ttc3pHVGdhazMxQU0vekdaK2xNUGNrTXZjbk12OEpKKzVFODZIRWhiT0JFalBVTnBIOXNnbGJuVkExQUkzSzlKdklkWjJkY3UzRjdETFlCcGhOR1lndEp0Vnp2bWhDK2UxOENBeC9zUkFmeEVvRXlleEl1WWVHcEI5QVJpOGZJRlRZcUdOV0dRbmxqcUl3eDFRSGhETG5TVDB5cW1KMVBrcDlIWFp6RU9sM0w4YVJTaE1teGd0Y0xkTVEvM3E2SmNmS0dGUGpBdmtQZXV6MlRsZ1FpQmZzU0lOak0yTERwS0p2eklWMytQeEhoNmtad04wMlBOajBGMnJ5Mk9SZkpBSVllamYwU1hWMFNvWG1IUUhVeGtvWktIR09DT0o4dDdhQlBnMTZhRXp5NTM3Zmt5WU9sMTQvZE1aMXhGcTAzVXAxTU5sM0s0dXFZVlJBekczVUxTeGdsSGxoUnIwcUNwdzNYc0FmbzF6NkdEbmdvdDl5Z2Zhb2QyUGlTVldZbDBLRGJPYytINFphanZWN05zSTRlWEtTUlhtU1plbE0xRDdZdWRDRzhPL0NIU24valZaekw4YUE3WGF2SVpTWVRaOXRiNE1FVHNYOG9CMmU1QUVxeE9vQjBxNFBkMVNyNm5QNHpPaWdVWTNtTnlZTTc3aUdsS3MzMkVjT3RpNW1ZUmUyeDJsUDZkcVM2TlFUWnI4ekNDSUZrYjd0Rlg4U1I1ekF2UTRkZzZESkloQ2sxbVlWejVaeWNFYzAvVHJKaDJjOW1XN2RHY0JjMkxnN2huR3pzMGtqS291R2kwTjJWekU2by8xTnZuNUxkMjh0cjFUdXFlSVBUbHczL1JqNTJZWStuaTMxRTdlbE10ODBTNjFzS3BzNnV5MVY5REN1dVZmbG5DbkpJdzdCNkw3SGNNaGdwMmJZWUFCa1dpejc2c3ltYmVieENwUzVVMGRYdnNFTGFKSGZyQ1VnNWtLZGc2amc1eHp6NDBoTnFUUi82Z1RDa2NWMnRRckp2MmlGdFVyUDFUR25XbzRGNEdkdytqT3pZa2hMa2lsWDNJSldjTUtZZW8zRWxBZ1J2ZktENWR4cHlWaTV6QUd1blB3ODl3VTZybHFQblZRSGpWMWM3NUo1NUwwWmYzWU9jeUVjMnVUcVdlcStDVDBiRFJUeDFaaGZHdzFuTVAxSEdiQ2c3T1RxZDlYOG9uOThyRFp6a1gyeUwrQ09RU01yZGc1RE1Md0lJWlltMEk5WGNVbm1wM25ZTjY2cDF0K0FGOHJ3VXd5N2h6VWMzK281bFBNcnVkNmVXMVhsM3hmTWZjRDdCekdpKzRjekZ2UFQ2UC83Qkl5eko2M2RuSGF0azVwYzFFZ1Z4eGk1MllZdW5Oelk0aUwwK2xYNm9TOFVjWGNYWUxhV2UyLzdkTHRoZXhLL0gwcnhndHlqcGh2SlRkbU1XODBpZVdreWZlcE56UGFSNjNpcmZuTWNkRGp5TG05RHVEUXdjN05NSFRuRnRuSmEzT1pqMXZGQmthVlRMMmZxWTdXM200U3I4dGxsdVA3NXpBSUVBNDgwRGRZaHVGdlo1ZlV3MnRtS3VjWnF5TFYxeHVFSzdPWXlXZUMrUjNEb1lPZG0wbm96czJKSms1T0lCOHFZK01IWk5MVVlnNzBMWEdyZjNFSkY2Y3hTd08zT3hOMmJpYWhTN0RZUmw2WUNwTld2dEN0S0tZT3JKSytJOWd6VmZ3NXlmUkNZL3NJN0Z4SW8xZHlJQUZVOTV2eTJFOWF4V2JXNVAyVWFXVXNjVkQ1VFJtL09vR2FQejZPK3gvR29ZT2RteGtZQmtTZ2ZURE9UYUdmcnVKZ1lEWDNVUm1RTUlkRVQxU3Z2TG1ZQTYzbkdNTEIrL29keWFHRG5RdGVvTDhOb084aHcrbVBHRDNPU2QxUndQNjNYV3lnTmNIVWdWWDFqTFZ6MnBjZDBpMzU3T1NENTdCem9ZVmhteUZjQlBwbG1RTTlEK2pWZWlGdkJOMnFhZTVLQ0RDNG1sTGZiaGJoTFE2ejZXOGFDT0dBb0hOdTRzekdHRVFUODZLSnhWWmlaVHgxVFRZRFU0ZUVBYmxQTUg5bEsweUJzMGVVbDF6QytXbjBISmhBaElwemhtMlJ2cHZUekFvaTlzTDNQMDM4RHZpb0JpeXdvdjNMVG9vbkwwcWpmMTdFUWljbERzamR2Q2Ficnh4NnFLdTFWMzZrWEw5YkUvb0NuUFB0R2hNSkt1Zm1XZ25JNm92c3hCSTdPYXV3VGJMVXJ1TWdEM2VRVURZZDZTQ1BpaVdYeFpMTDQ4aGo0OGdUNHFrVDQ5RitlR3VTcUhOVHFFdlM2UjlsTS9jVXN5KzRlS2kwQ3R6S0lOcW14TnNwNWtZTG8zM1dKdjIwZ0QwdVR0OThMaFNjZzN4K3BJTTRKWkc2SUkyK0xKTytRdWZ5V2NIR0RNUVZtY3lWT3NZT2h6QlFYbWRzY3BqSGJNcG5iaTlrN3lwaWYxSEMvYXFVZTd5Q2Y3b0s3Zks1cFVINHFGVU03NUV5aDVWR1ZpTUR0dU1oZUZ4R3FIK3ZFeTdQWUE1M0dLT05md2VaUnJBNHAyL0Zla29pV3JiNVJDWDNjaDF2N0lRS3JUQUxlRlVIYmV4YWp6WjJCWlBlYUJUKzNTUzgweXkrM3lwKzNDcCszaVpDR3R2WkpVWDB5TFplT1dGQXlSaFdpa1lWRjRXZU96QWtlVGdWYVJHNFFGZm1CcFJIeXZqVEUrbkRBbmMxMkNBb25OUExPS2hkTGt5ajRmemUxUzFCTVZ2c1JoU09LZ1V6bjBLM1VvUlFpOTNlRGF6TENiV0NSTHRYMTR6dlh0M01hcUJYRjYvQi9HQklSRnUyYzZwSG1aS0hoa0wyaFBmOXVsUGFsTThlSFJ2SUhUWU5nc1U1Zlowd3pOTC8zU1JDa29jNWxLVHZYUStJc3d2alE4RWt3QUQ2MndEU21LWURsazJGYUQ1Qkt4NDRKVjZ0Rnk3Sm9OR3orUU1xSEJCVXprR0pBK1ZMQ3h1QVdSbU8vVWN2V3JzdlFSMEp4YlF4NXZoM2tMa0VsWE0vekdMZWF4SHJhRlUyOVFvN2pnTUVETi9scEFJbDV0Vlp6TkdCdTMvSmw2Qnk3cW9zQnNwcUtISE0zWU1EeC80Q1dubEUwcXg5S01tdFRxQVdRRjlnNTNBRU5GZ1ZrcHo2WnFOd1ZSYTlkT0k1SklCZkI1a0xkaTZVbzVOREt3dTlPMy9wdllDZHd4SEFJR1V0WTBoNW9VYTRKSjA1UEhDN3BPOE5kaTQwUTFEUlhTUXdZN3N4bHpuV1NhTEg4QnNEcTEvWEJBTHNYQWlHb25tYUdHMTdsM1IvQ1hkcUlqVXZadnpaYUg3OUVpQ3djNkVXaWdkdEdoelZJLysyZ2o4dmxkWWZZYWc3NTljcGdRTTdGMUtoalkzMThKNjRmdm01YW41REJzeFY5VnRJRFB3NkpYQmc1MEluSk0zVHlXdU9maG5tRFZkazBnRjgwczJCd2M2RlNJamFXQXVyUnZkS3oxYnpHek9aWmJIajh3YnNISGJPOUlBQ3ppMTVLZ2gxVzZmMFpBVjNTVG85K1IwWHREemcxeDJCQmpzM3UwUFcwSVhmdENIbFAwM2lQY1hzdWxUcUNJZTN3YWZCTmdQczNLd01hRDlHOGNEOHRNU3Q3dXFTLytRU2JzcGxUa21nRnRxbUw3MU5nSjJiZlNHb3lMWml0eHJlSmIxYUw5eFR6RjJjVGg4WFI4NkhwcDRZVW4zYmY0b0pLdWV1em1JK2FFSDdXMmxUY24vczdBZzRQU1VOZlZ0UHlKNWVRYXVuMVp3UlpYZVhCRDM2UUFtM01aTmVGVStpOUFhTkRMYjV0ZnkwRUZUT1haUEZmTmdpTmpFbWI4TXgrMExUOTdPQjBYTlU4dlR3V2lPamxSQnE4cUM4dTF0NnUxbDRyb2JmWE1SZW1jbWNsa2dkNmREdk5aOVl4ZWpYOHROQ1VEbTNNWU41clY2QTA3UlAwTnl5QnhpV1pqVWlZa2huVUdkQVFQVHA5QXJnazZlTDk4QWtvSjNUV2xtdGlVVnB6RVdwNVNSYVpwRStKRHY3NWJCdTZkTTJjVXVqOEV3MWYyOHhlMDAydlRhRlBzNEpwZHY0OWQ1cEgwejlDQXJuQVAyeHBPZWtVTDh1NHo1b0ZhTjY1ZGgraEsxdk5tUHRSY1QweXRHOWNsUVBJcUpiMnRNdFFicmExU1h0NkpTMmRrcGZkVWovYlJjL2F4TS9haEhmYXhGaCt2bDZnL2hLSGY5OERmOVVKZmRRR1hkWEVYdHpIbnRsRm5OZUtnMnpoR1d4cEhmaEZzeE1qZlJtbU9mWDROTklzRGdYVGN5TEllQTRMczlrN2l4aUh5N2pIaTFIZ0lLekdQaVlCcURPcjBxNUIwdTUrMHZZWDVhd2tLN3VMbUx2S21SL1ZzRGVWc0QrSkorOUpZKzlNWWU5TnB1OUtwTzVMSU5abjBhdlRhWmg2RnlWUUVIWEhPNUFGZHRjdlJtOUJLRnFFd1NMY3pIRW5CaGlzWjA0Tm80OEpaRTZJNGs2TXhteEptazJBeC9UNEhRZ2tRS0hUazFFaS9naFhmMGdnVHBKWDlPL01vNkM3am5PU2E3UWwvc2Y1U0FQdDVPTGJHaFlnQmJ6Nm1Xa05DL0JONWo2RVR6T0dVQTdBbkRLaGhUR3AwWkVmd052cnRvbklKYUIzNzhEZTdWcWNCRmN6a0Y3b2JOV1AxLzk5cElKYWZSTU5pSFpCRE5GTWorQ0xjOU50aVBtd1BpMTJ3d2k2SnpEekhxd2M1aXBCanVIbVdxd2M1aXA1cUNkbzdCekdITXduSXVuWG1zUXZYcjVoSTl6c2FRbFpjd1N5L3YvUFFielhRSG5VaURQRWE4ZjJMa1ZEcmNsMllPZHc1Z0FqSlpKbmxYTzBTMzF2RmN2bjVoMGJxVjFBT25wNEN4V3ltSWwvVjhGZ3prWXdCendKNVlEN1ZZN0J0K3NwYjE2K2NTa2M2ZEZkVmlpUmkwMkJnRi81dmRhR016QllLTXNOdHBpcHkyUkkydXRuZS9XakhyMThvbEo1eTdhVXpkL1J6djZNMGgxOEdlK0w0VEJIQ1JnbTRPMVJMc1AyOUcyTWFyK2krcCtyMTQrTWVuY3JlRWx5NzUyellrYXRzUkpGanZqLzFvWXpNSGdZQ3h4NHB5SXdSVmYxOXdSV1JwUjFlSFZ5eWNtbmZ0dFpPN1oyOG9XUnZSYjRpV2tLaTdwTU44VmNBYk1pUk1YaGZlZXQ3WDBtWmk4dE9wbXIxNCtNZW5jTy9GNU40YVZIQlBXZ1pJYy9DVWFYckYybUlNR2hBTm5kSE5XN0c3OWNWalJSNG41cnBaMnIxNCtNZW1jczZEeXQ3YVNzM2JYelEvdjlRcUxaeEtZZzhjUUxvWmNzTHZuM04ydVp4d2x5U1ZWUThNalhyMThZdEs1dXRhT0Q5UExidzByV2JHdHpoSXhhSW1YMFdRQ3B6ck1RVUdpSzd0UWxZWDNINyt0OXJidzRpK3lLcHM3dWlSSjh1cmxFNVBPRVNTWlZsNzdKMnZ1SlR0S2w0UjN3NmlNWGdWZnE4TjhLMkFJZU9JVUxISEM0V0VkRzNlVy9OV2VtMU5WVDlQN3VEZ0hNZW1jcXFvZG5WMlJPYVdQeGhTdURhczlMS0lQWlVzbm1LZGZPc0htWWZiR3FPSDBLOEFXRzdWd1Q4KzZzSnFuYklYMi9QS2VubDdQZnBiTlR6b0hJUWhDUTJ2N2w1bGw5MFlVbkxhamVrRjRIN3B1Z2k2ZFFHR0lhenZNWG9BVjRBWVk0aFFYaHZldTJWNzVZRlRCOXV5eWxvNHVVZHpITjYxR2ZNTTVDSlpsS3hwYVBrMHB1aSt5Y08zdXVxWGgzWE1qaDFIbWhOb09RUEpCemdQL2NOb0xTWXhoMUpndUdFcFlxWGxSdzRlSGRhMExxMzB3c3ZETGpPS2E1alpJWGw2ZjloWCt6a0ZRRkZYWjJQcFZadm1qMFlVYmRwUWV2N054YmxndnVvQUNGU0lZRFcrRGg5cVFCUTJtREJwTWpRSFF4c3piM2IxeVI4UEduYVZQV2d1M1o1ZTdXdG9aaHZHYXRKL1loM01RSE1jMXRMUkg1NWE5YU0vYnRLZjA3TEM2NVdIdGg0WDNXdllNV3FMZDNuZUZJUnlxUFV3SUllZ1pod0VINWtRTXdtQzZmSGZiT2J0cmI5c0RrNFk4cU9HYTJ6c1BuT0dNMkxkekVEQWVkM1YzcDFmV2ZaeFo4WlNqNU9hdzRyVmJTNWQvN1pxN3RRWGRDZ0JIa0R5Rzd2SEVoQTdRNDlEdmtjUHp0N1VjdTlWMTNyYXlXOE9LbjNhVWZKWlprVlZWMzlQVHM4OHJJM3ZIZnAyRDBEU05KTW42MXZiNG9vcjNFd3VlaXM3N2FVVFpaVkVOWjF1N1RuRU1ybks2VDNBU0oraHIwREd6SFFyNkducDh0V053cmJWelkxVDk3UkdsVDhma2Y1aVVuMVJjMmRUZUNmVVkyT0wxNXR2aVFNNFpJY3Z5NE9CZ2RWTnJTblZ6V0dYNzU5VUQ3N3JjYjlZeFcrcjUxNEFHOUNod3pPeW5ub2NlLzNjZDgyN042QmZWL1h1cTJ0TnFtbDNOclVORFE0cWllRjA1dVBoMjUzRGdNRGV3Y3ppbU5zYkcvaCs5UDcrS2ZLTytSZ0FBQUFCSlJVNUVya0pnZ2c9PSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiI5MzEzMjdkZGM4OWI0MDZjYTgxZWVkNzA1OGVmMzZjNiIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOnRydWUsInVwIjp0cnVlLCJ1diI6dHJ1ZX0sIm1heE1zZ1NpemUiOjEyMDAsInBpblV2QXV0aFByb3RvY29scyI6WzFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjE2LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjEyOCwidHJhbnNwb3J0cyI6WyJ1c2IiLCJuZmMiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotMjU3fV0sImZpcm13YXJlVmVyc2lvbiI6NX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIzLTA5LTEzIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjUsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiU3dpc3NiaXQgaVNoaWVsZCBLZXkgRklETzIiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDIzMDkxMzAwMiIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTAxLTE2IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjUsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiU3dpc3NiaXQgaVNoaWVsZCBLZXkgRklETzIiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDIzMDkxMzAwMiIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTAxLTE2IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjV9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjQtMDEtMTYifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyIwMTk4NTYzYzllZTg4MWJkMTk5YjQxMWI3YjM4YjYxYmI1NjBhNjQxIl0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjAxOTg1NjNjOWVlODgxYmQxOTliNDExYjdiMzhiNjFiYjU2MGE2NDEiXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlNlY3VyaXR5IEtleSBORkMgYnkgWXViaWNvIC0gRW50ZXJwcmlzZSBFZGl0aW9uIn0sImRlc2NyaXB0aW9uIjoiU2VjdXJpdHkgS2V5IE5GQyBieSBZdWJpY28gLSBFbnRlcnByaXNlIEVkaXRpb24iLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI4NzA3LCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50IiwicmVtb3RlX2hhbmRsZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJREhqQ0NBZ2FnQXdJQkFnSUVHMEJUOXpBTkJna3Foa2lHOXcwQkFRc0ZBREF1TVN3d0tnWURWUVFERXlOWmRXSnBZMjhnVlRKR0lGSnZiM1FnUTBFZ1UyVnlhV0ZzSURRMU56SXdNRFl6TVRBZ0Z3MHhOREE0TURFd01EQXdNREJhR0E4eU1EVXdNRGt3TkRBd01EQXdNRm93TGpFc01Db0dBMVVFQXhNaldYVmlhV052SUZVeVJpQlNiMjkwSUVOQklGTmxjbWxoYkNBME5UY3lNREEyTXpFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUUMvandZdWhCVmxxYWlZV0VNc3JXRmlzZ0orUHRNOTFlU3JwSTRUSzdVNTNtd0NJYXdTREh5OHZVbWs1TjJLQWo5YWJ2VDlOUDVTTVMxaFFpM3VzeG9ZR29uWFFnZk82Wlh5VUE5YStLQWtxZEZuQm5seXVnU2VDT2VwOEVkWkZmc2FSRnRNamt3ejVHY3oyUHk0dklZdkNkTUhQdHdhejBiVnV6bmV1ZUlFejZUblFqRTYzUmR0Mnpid25lYndURzVaeWJlV1N3Ynp5K0JKMzRaSGNVaFBBWTg5eUpRWHVFMEl6TVpGY0VCYlBOUmJXRUNSS2dqcS8vcVQ5bm1ET0ZWbFNSQ3Qyd2lxUFN6bHV3bit2K3N1UUVCc1VqVEdNRWQyNXRLWFhUa05XMjF3SVdieGVTeVVvVFh3THZHUzZ4bHdRU2dOcGsycVhZd2Y4aVhnN1ZXWkFnTUJBQUdqUWpCQU1CMEdBMVVkRGdRV0JCUWdJdnowYk5HSmhqZ3BUb2tzeUtwUDl4djlvREFQQmdOVkhSTUVDREFHQVFIL0FnRUFNQTRHQTFVZER3RUIvd1FFQXdJQkJqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFqdmp1T01EU2ErSlhGQ0x5QktzeWNYdEJWWnNKNFVlM0xiYUVzUFk0TVlOL2hJUTVaTTVwN0VqZmNuTUc0Q3RZa05zZk5IYzBBaEJMZHE0NXJuVDg3cS82TzN2VUV0Tk1hZmJoVTZrdGhYN1krOVhGTjlOcG1ZeHIrZWtWWTV4T3hpOGg5SkRJZ29NUDRWQjF1UzBhdW5MMUlHcXJOb29MOW1tRm5MMmtMVlZlZTYvVlI2QzUrS1NUQ01DV3BwTXVKSVpJSTJ2OW80ZGtvWjhZN1FSalFsTGZZemQzcUd0S2J3N3hhRjFVc0cvNXhVYi9CdHdiMlgyZzRJbnBpQi95dC8zQ3BRWHBpV1gvSzRtQnZVS2lHbjA1WnNxZVkxZ3g0ZzB4TEJxY1U5cHNteVB6SytWc2d3MmplUlE1SmxLRHlxRTBoZWJmQzF0dkZ1MENDckpGY3c9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFmQ0FZQUFBQ0dWcytNQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUhZWUFBQjJHQVYyaUU0RUFBQWJOU1VSQlZGaEhwVmQ3VE5WMUZELzNkNTl3ZVFTSWdTOUFRQVhjRkxBUVppOWZwZVZ6MXRZL1dUWnI1V3hwYzdXNWtuTGE1akkzWjg1c3JTMm5NMnNqdFd3WlM3SVVINEg0eENuRVF4NERBWkY3NFY3dXM4ODV2OS9sSW5CdlZKL0I0UHY5bnUvNW51LzVudk01NTZmekEvUXYwSGIvSXJYM1ZGS1BvNDVjbm00aW5VSVdZd0xGUm1aUVV1d2pGRy9OMWlSSGgxRVowTlJWUnVkcXQxQmQrMm5TS3lTL09oeXMwK2xrM2UvM2tROXF2RDRaVXRhNFZWU1V1WTBlaXB5aVRoQWZvY29PUlZnRHV1dzNxS1JpQWQzcmJjRXRqVGpZSW9mNldhSHNDbXpWUFdDTXgrY2doOHRMcVdNS2FNV3NVakxxbzJSdEpJUTBvT3ptZXJwUXU0ZXNaZ3NPTmtHeEg3ZDBrZHZUVDE3czRPTVU3Vkk4WmhqZ0dhTStBcTlpRU51OFBpZjF1ZHowN013dktXZjhHbFZvQ0VZMDRQQzVXZFRhWFlGYlI4dk52TDUrM0tnZmI1eE5NeWE5UmFtSml5bmFNbEdUVnRGbHI2YmE5dStwcW5FWDR1TXVSUmdqU1lFaHJON3V0RkZlNmxxYWw3TmZrdzVpbUFHSHluUHBiazhWbVkweHN0bnB0bEZDVkNZdHpUdUJOODNRcE1MalR0ZXZkUHpTVW5KN2U4bWtqeFozOWZYYktEZmxkWnFidlUrVFVnR25CVkY2ZlEyaVBIZzRXMTZVV1V3dnpiazE2c01aRStQbjBwdno3SlNldUF5ZXM4bGNwQ21hS3VvL3ArcVdyMlVjd0lBSFdydlAwWUV6aFhBdExBYnNzSGhwN2lHYW12eWlqUDhyeXFyWFVXWDlYb293eHlBdWZOQnJwNDNQT0JGWFpsa2Y4TURSaXFjcHlvd0F3cHV6MngrZld2ei9EdGRlOXNtc3p5Z3RjUjZDMXdiZHpCbDZPbHE1V05ZWTRvR2F0aEpNcmtURXgwakFSU0hBVnMrNXJZa1FOWGIrUWdmUExzUTZnWHlJbnNyZVFmbXBtN1JWRllmTDg2bjFmaVVPa1l2U2hrVVB4dmJ1a3pveTZLMWloTTFobzNYelc2RXZTZlhBK2RwaVdHYVdkK2RvWHpMem1Hd0tZRkxDQXNSQWxQQkFoTWxDRlhVN3RCVVZQcjhIZ1ZjSkhXcStGMDBwbHIrRE1UZHJQNHp2eFkxMWtOTWh4VCtTZVRHZytkNFY1TFFKaXR5VUdKTkI4VkZac2pnWUJaTS9JSS9YQ1RrajBxeURPcEYyQVZRMTdDSWpVcC9EblQxVWtMNUY1Z2RqK3NTMXdnMWdFM2dpZ202MGZDWHpTblBYYnlBUGJJWHYrSURwRTE2VGhhSElTOXNreWhsbU1FNUYzY2ZxQUtocTJDMEU1UEgxZ1lhWGFMUERrWkcwSERKT25LV0hwNTFJMHo1U091eDhlMVdBdVp6ZEhRclRrcDhUbWpYb0krbGEwd0dac3p1YnFiTzNpZlE2QS9XN3ZWU1lzVjNtUjBKS3drS2M0V0hpQmttUjhJM0NDZ0k4N29PTDRxelQ1UCtSVUpCZWpFT2dBUEs4aFlQemF0TStlSVRwMklPOXlUUW1lcm9tUFJ4eDFxeEFjc2lsZS91YlNlRWJjV1FHWUVDZ2hjTFkySHlLam9nakgyNWhNcGpwVXYxT3VnbGk0ZWgyZVJ3ME8zMmJKamt5dUNnTnpnMHZ6bFlNU2lTczB1b280TUc3aE1PakNFYVgxeUZFMG5TdmpCenVUbkVwSzg2WjhJb3FGQUl1Ync4a2c5QXJFYVJFV1NaSStqSDRYYnA2ZzlFOUVuSlQzb2FSekROK01VSkJRREhuNTZhOG9VbUVCdXNPeEJzL041K3RKRWJQa0FGRGo4VUd2T3MvSVd2Y1NnbEdCaHZTNy9GVFlmcFdHWWREWThmUEF4V1NBMzVzVEM0cDQrTG00QWFxSW9QZVF0ZnVmSzZKaDBaaHhsYnNVWE9TbVhOaWZENVpUQWt5RG9mYmJjY2x4bkE4V05BcXhDYlJOeWtoWHhRcGFEdzY3ZlhVWWJzaUcwS2h0djJvZUl2aDhyaFFNWU9jRUFxWEcvZUkrem5nT2M1eXhyOHE4MklBTTFjL0ZMRk9wbHF1NWVGUVhyTVp6R2NWQ2pZYkxXRzVJNEJUMWV1UnJsYnh0Tk90TWl0RERFaExYSUl5bkFBdnVPRVdFM1gzTmRBZnQ5NFZnYUc0MlhJUXQwWlg2UGVDRS9xUUZlOXJLNkh4N1lVNTBLdkg3Zlc0ZlMrcTdLS0JKeHNnZ0JYNXBTQUdoMWpJclZoNXpRNnczUmZhYWhCWG0vYUNiQ1pUakNVRlVUeVdacVc5cDYyTWpKUFhWcU9yUGdNTzROdjc0R2tmK293ZnROVkJEUW5qRkpxSFN3MTdwWHZoV1c1S1pxZS9RNDlOL1VTVENBVldvUVhGSUhCSFhYZTNGUHJVRHN1R0RtdEYvaEhLVEhwZWt4aGlBT1BJK1NKcTZTNkhGNEk5WVd6a0JKVG80NmlVTXpXcDhQaXIvUmlkdUx4S1lzU2tzVjh2TGxPUXZoR1gyWWxSME9CaEJqQyt1L2dFY3ZZMEFwSzdZazQxTnhqUFNRbldGSFRGNjZVcmpnZXZCOEN1NWErbDJ2WVNSUHR1VkRvNzNoaGRNU0huVVg3dFRqc1ZaR3hBbC9XcHRpT0lFUTFnbkwyOW1YNi90UjF0bWxrWWo4VzRYK0NTaldjVURHWTFOcFMvQzdoU0txaU1MTS9sMlFtU1daNzNEZHorZ2lvOEJDRU5ZUFE0NnFua3p3WFVicXZCa3hqVVFzV2ZaRmdidW8zckFmK3dON2pPTzkwK3lueDRQaTNMKzBuWUwxU2NoRFVnQVA0Z1BWLzdJZDFxKzFIU2htdUdrSXFXUlBneXhNRnFQOEhmalRualh3WTViUWZiSmN0Nk9JektnTUhvdEYvSGUxZWdzYXhIU3FHNndmZG1RNXg4TnlURkZxQmNwMmlTb3dIUjN5azUrMzZoRjd2WEFBQUFBRWxGVGtTdVFtQ0MifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMy0wMi0wMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjg3MDcsInVybCI6Imh0dHBzOi8vd3d3Lnl1Ymljby5jb20vIiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJTZWN1cml0eSBLZXkgTkZDIGJ5IFl1YmljbyAtIEVudGVycHJpc2UgRWRpdGlvbiIsImNlcnRpZmljYXRlTnVtYmVyIjoiVTJGMTAwMDIwMjMwMjAyMDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4zIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIzLTAyLTAyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyODcwN31dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMy0wMi0wOCJ9LHsiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjA0NmE3ZTIzMmMwMzE4OWRiYzJiOWI2YTc2NTcwMmI1MjY2NWJlMjEiLCJjMTBiYzRjNmY2MTRiNjMzNzFkOTI5NTk2ZWRlZGRlM2U0NTg0MDRkIiwiN2E4ZmUzN2E0MmJiZjJhNWIzZTY1NzRkNmYwNGJkYmM1NWU1OTA0NyIsIjc2ZTQ3YjQ3ZTMyODE0YWFhNmE4N2MyODBjZmNiZDUyNzg4MWE0MDQiLCI2Y2Q5OWQ4YjBhYmZhNmE0Mzc4MTM4YTE0NzVmN2U0NmRmMjE3YTI1Il0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjA0NmE3ZTIzMmMwMzE4OWRiYzJiOWI2YTc2NTcwMmI1MjY2NWJlMjEiLCJjMTBiYzRjNmY2MTRiNjMzNzFkOTI5NTk2ZWRlZGRlM2U0NTg0MDRkIiwiN2E4ZmUzN2E0MmJiZjJhNWIzZTY1NzRkNmYwNGJkYmM1NWU1OTA0NyIsIjc2ZTQ3YjQ3ZTMyODE0YWFhNmE4N2MyODBjZmNiZDUyNzg4MWE0MDQiLCI2Y2Q5OWQ4YjBhYmZhNmE0Mzc4MTM4YTE0NzVmN2U0NmRmMjE3YTI1Il0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJGZWl0aWFuIGVQYXNzIEZJRE8gU2VjdXJpdHkgS2V5In0sImRlc2NyaXB0aW9uIjoiRmVpdGlhbiBlUGFzcyBGSURPIFNlY3VyaXR5IEtleSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50IiwicmVtb3RlX2hhbmRsZSJdLCJpc0tleVJlc3RyaWN0ZWQiOnRydWUsImlzRnJlc2hVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZWQiOnRydWUsIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQmZqQ0NBU1dnQXdJQkFnSUJBVEFLQmdncWhrak9QUVFEQWpBWE1SVXdFd1lEVlFRRERBeEdWQ0JHU1VSUElEQXlNREF3SUJjTk1UWXdOVEF4TURBd01EQXdXaGdQTWpBMU1EQTFNREV3TURBd01EQmFNQmN4RlRBVEJnTlZCQU1NREVaVUlFWkpSRThnTURJd01EQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJOQm1yUnFWT3h6dFRKVk4xOXZ0ZHFjTDd0S1Flb2wybm5NMi95WWd2a3NabnI1MFNLYlZnSUVrekhRVk91ODBMVkVFM2xWaGVPMUhqZ2d4QWxUNm80V2pZREJlTUIwR0ExVWREZ1FXQkJSSkZXUXQxYnZHM2pNNlhnbVYvSWNqTnRPL0N6QWZCZ05WSFNNRUdEQVdnQlJKRldRdDFidkczak02WGdtVi9JY2pOdE8vQ3pBTUJnTlZIUk1FQlRBREFRSC9NQTRHQTFVZER3RUIvd1FFQXdJQkJqQUtCZ2dxaGtqT1BRUURBZ05IQURCRUFpQXdmUHFnSVdJVUIrUUJCYVZHc2RIeTBzNVJNeGxrenBTWC96U3lUWm1VcFFJZ0Iyd0o2blpSTThvWC9uQTQzUmg2U0pvdk0yWHdDQ0gvLytMaXJCQWJCME09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUZBQUFBQVVDQU1BQUFBdEJrcmxBQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQkhacFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR3L2VIQmhZMnRsZENCaVpXZHBiajBpNzd1L0lpQnBaRDBpVnpWTk1FMXdRMlZvYVVoNmNtVlRlazVVWTNwcll6bGtJajgrSUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWtGa2IySmxJRmhOVUNCRGIzSmxJRFV1Tmkxak1ERTBJRGM1TGpFMU5qYzVOeXdnTWpBeE5DOHdPQzh5TUMwd09UbzFNem93TWlBZ0lDQWdJQ0FnSWo0Z1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNGdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlnZUcxc2JuTTZlRzF3UFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIaHRiRzV6T25Cb2IzUnZjMmh2Y0QwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOXdhRzkwYjNOb2IzQXZNUzR3THlJZ2VHMXNibk02ZUcxd1RVMDlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl0YlM4aUlIaHRiRzV6T25OMFVtVm1QU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2YzFSNWNHVXZVbVZ6YjNWeVkyVlNaV1lqSWlCNGJYQTZRM0psWVhSdmNsUnZiMnc5SWtGa2IySmxJRkJvYjNSdmMyaHZjQ0JEUXlBeU1ERTBJQ2hOWVdOcGJuUnZjMmdwSWlCNGJYQTZRM0psWVhSbFJHRjBaVDBpTWpBeE5pMHhNaTB6TUZReE5Eb3pNem93T0Nzd09Eb3dNQ0lnZUcxd09rMXZaR2xtZVVSaGRHVTlJakl3TVRZdE1USXRNekJVTURjNk16RTZOVGtyTURnNk1EQWlJSGh0Y0RwTlpYUmhaR0YwWVVSaGRHVTlJakl3TVRZdE1USXRNekJVTURjNk16RTZOVGtyTURnNk1EQWlJR1JqT21admNtMWhkRDBpYVcxaFoyVXZjRzVuSWlCd2FHOTBiM05vYjNBNlNHbHpkRzl5ZVQwaU1qQXhOaTB4TWkwek1GUXhOVG96TURveU55c3dPRG93TUNZamVEazc1cGFINUx1MklPYWNxdWFnaCttaW1DMHhJT1czc3VhSmsrVzhnQ1lqZUVFN0lpQjRiWEJOVFRwSmJuTjBZVzVqWlVsRVBTSjRiWEF1YVdsa09qSkZOekZDUmtaRFF6WTNSakV4UlRZNU56aEVRVGxEUWtJMk5EWXpSamt3SWlCNGJYQk5UVHBFYjJOMWJXVnVkRWxFUFNKNGJYQXVaR2xrT2pKRk56RkNSa1pFUXpZM1JqRXhSVFk1TnpoRVFUbERRa0kyTkRZelJqa3dJajRnUEhodGNFMU5Pa1JsY21sMlpXUkdjbTl0SUhOMFVtVm1PbWx1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2TWtVM01VSkdSa0ZETmpkR01URkZOamszT0VSQk9VTkNRalkwTmpOR09UQWlJSE4wVW1WbU9tUnZZM1Z0Wlc1MFNVUTlJbmh0Y0M1a2FXUTZNa1UzTVVKR1JrSkROamRHTVRGRk5qazNPRVJCT1VOQ1FqWTBOak5HT1RBaUx6NGdQQzl5WkdZNlJHVnpZM0pwY0hScGIyNCtJRHd2Y21SbU9sSkVSajRnUEM5NE9uaHRjRzFsZEdFK0lEdy9lSEJoWTJ0bGRDQmxibVE5SW5JaVB6NDc3SlhGQUFBQVlGQk1WRVgvLy84RVZxSVhaYXZHMk9vcWNMRzJ6T09rd3QwQlNKdHFsY1hWNHUrYXV0bFdoYnprN1BVQU1ZOUhjcktqdE5icThmZUFsOGFCb3N6ejl2cGRqc0dHcXRGM244dVRzTlNacGM2SnNOVDUrdjB4WUtudThQZmY1L0w0OGZnL2ZyaWN6SmdZQUFBREFFbEVRVlI0MmtSVUNaYkRJQWpGWFpPWTFUYXROYzM5Ynprc1NZYzNyNE1FNGZNQkFhRDZ6bDh5LzlUT2dldDhkNWpmTjc4YndNL2REQ1JwUjUyMXpYZm9qSEowNUlJeWhCQVVTVkFPTmRHekJZdDJmN0tGcmZrSmFBa0hoOUZaaGNEWEhSa1RLbzlNTGloR2FhdkltblYzcXlFWDBFcHJnei80RHdVRDdrQ0hSbmQ4UUZONDNHbzRVVm1ERGd6YTR3MjdvaXpkQTIrY0srdXVVcGpqbzIreHdjLzQyVzUweDVMR1llREJzUjBIVkl4NXg4aUY2MENibGJURUVrRnIyN2JOREJVVlNxMU9LVlBiRTYyYjNFSDhGcUJnNU9PT0V1YzJ0OFpKaXFNT3VHcCtjS2pnN3dWR2Nlb3pxTjRweGdWUFFrakZZZ2JWSktEVWhEQ2pZcmF3UDVxNEVUZ0M5ZklNUkh0aXRwUWNDdkpPRUxjYk1zUWduY2lSa2xqcHlRanZHNDRqcUJVRVRGaUJpMVBFSXlla096c1crVHk1Y0xIb3M1UitkTVMxTHRTU3hmM2dRSGN6UjJDSTRnTU5wVzRJUkExUU1hNnRKNCtDNnVIdUdFOG1OREl5RnFnL09QL01NVXVlUzZJcThTOTBkQWVCSlNFeS9xS2tLK0JOd3o4Y1lZNGpiNUo2dTRpV0NJMkIxWjU2TFc1a0VjNGhrZE1wc3ZVQzU1ODVTWDBRdWJjZ05xeWZnREZFY1R0KzQwLzBTNU54MHdhQ3czT0trY09iQTVJbjBBWXAwMXBqancybjYyNlVEanRId2EyOGlIdVRLcXRydityZVc0MU5aNmlHbHI3dXVMSkNma0Z0Y3RjRzA0c2dtMWVOUytaYURucGFURXJHb3lYNUpLMmlNejh4czBuT3dXR2NQRE40OXFhQ2Q0YnpKb3pEWm0vYUJLK0Vvekx3K1hoTkJpWXdIZjBzaU91MVhQa0cvekt3dnFZS2NmU3dERWNIL29VZTA3ZXMvV1E4ckl5ZzJET1hqOHRqa1pkdURCL2I4aHpEbGxNTU9DUzVCRW5kNTM0Zjh0aTNVWmM0a01zM3hMeWFmTVNzSmhkRzhYUHFqTms1dEFnTzI1ZmVLQ2huVmREai9KMEZNa09zVS94TUJ2MHdGaFllRUdmVkgxM2Z1RFUweURGTGE0ZmM3Um5XSEJmdVRGVjJ0RW1Od2FkYzdhYzNVWTJqZkJsN0hUMzZmZTM0aVFPNW1OQ0ZGQlcwN0tqUGdxaE9MVTAxdlo4UHVlWjJKQ2xGWk44amtVczY5dWthOWVQcDYrRWZMNEFGNStOeXdTYmlySHRjQjhNbC9na3dBRWprSzY0S2pIUGVBQUFBQUVsRlRrU3VRbUNDIn0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMTgtMTEtMDEiLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6ImVQYXNzIEZJRE8gU2VjdXJpdHkgS2V5IiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVMkYxMDAwMjAxODAyMjgwMDciLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMC4xIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjEuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAxOC0xMS0wMSJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMTgtMTEtMDEifSx7ImFhZ3VpZCI6ImY4ZDVjNGU5LWU1MzktNGMwNi04NjYyLWVjMmE0MTU1YTU1NSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiZjhkNWM0ZTktZTUzOS00YzA2LTg2NjItZWMyYTQxNTVhNTU1IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlN0YXJTaWduIEtleSBGb2IifSwiZGVzY3JpcHRpb24iOiJTdGFyU2lnbiBLZXkgRm9iIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwiLCJiYURlc2MiOnsic2VsZkF0dGVzdGVkRlJSIjowLjAsInNlbGZBdHRlc3RlZEZBUiI6MkUtMDYsImlBUEFSVGhyZXNob2xkIjowLjAsIm1heFRlbXBsYXRlcyI6MjAsIm1heFJldHJpZXMiOjUwLCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJzb2Z0d2FyZSJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiLCJibHVldG9vdGgiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUJ0akNDQVZ1Z0F3SUJBZ0lCQVRBS0JnZ3Foa2pPUFFRREFqQktNUXN3Q1FZRFZRUUdFd0pFUlRFaE1COEdBMVVFQ2d3WVJ5dEVJRTF2WW1sc1pTQlRaV04xY21sMGVTQkhiV0pJTVJnd0ZnWURWUVFEREE5R1NVUlBJRkp2YjNRZ1EwRWdNREV3SGhjTk1qQXhNVEV5TURBd01EQXdXaGNOTkRBeE1URXlNREF3TURBd1dqQktNUXN3Q1FZRFZRUUdFd0pFUlRFaE1COEdBMVVFQ2d3WVJ5dEVJRTF2WW1sc1pTQlRaV04xY21sMGVTQkhiV0pJTVJnd0ZnWURWUVFEREE5R1NVUlBJRkp2YjNRZ1EwRWdNREV3V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVF3NmN5K3puTXlRNnB0ZDRKanF2bWE0ZThSZStacHBiOTBHcUt2c1JCbkY4V21NNXlaV0lPS2pRZ2ovOCszajlhdlcrU3lBYS8xTWF5d1FENkIwZzlhb3pJd01EQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01CMEdBMVVkRGdRV0JCU3NlcFd1dXhtRDBvOGoxWTI3OGJMVEdDWk52akFLQmdncWhrak9QUVFEQWdOSkFEQkdBaUVBdTMzU3AwRTdCRWRIb3pFR0FDbE5zYTB5UEI2c0VEb1E3VzRraXkwRFoxNENJUUNKTERUSkRBbld4bzMxenp2cld1SU50QnF5MDQ0K0dnRlA2K3dscUc2Nk53PT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBRkFBQUFCUUNBSUFBQUFCYzJYNkFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFBQjNSSlRVVUg0d0lVREMwRm9PVUhJQUFBQ2NkSlJFRlVlTnJ0bTJ0UVZOY2R3UC8vYys4K1dKYUNQQlkxQ2dzQ29wRE1hRDc0QU1Va2ltT25XbTN5SVoxcHE5aXBvN1pXbmFaTk0wMXNtN2JVcUtoa0xOWkhmTXkwSDRxdFZ1MVVNeU0wMGM0b2RzeE13VkNOR2xPRndRQnJXSjU3WCtmZkQrZnVnd1ZXTnNHbU5QY01IOWJMdVdmUDcvLytuNE5JUlBCRkdneStZTU1DdG9BdFlBdllBcmFBTFdBTDJBSzJnQzFnQzlnQ3RvQXRZQXVZQU1icUJJaUlIdE54a2xpV1FoOWlmZ3ZHK0xYNEZTSUNRQ0FRNk96b2FHdDcwTkhlM3RmZmp3Q0FHQ0VXSFB3QkRNUElMOGlmTldzV2hxY0JBQ2lxZXZyVUtZWU1CajhQdmh0ZVlmRG5JWE1CaUhqU2w1SW1aazd5WkhvOEhvOXNrOFdlRVRFR3NCeGJlSWg0NjlhdC9UVTE5UmZxZW5wNllNUXRSQTlWMDFaWFZNeWVQVHRLZ3FxaXZQU0RsK3l5L05rVml3Q0VLTlNTbHBiMmxSWEx2N051M2FSSmsrSTI2WkRHMzd0MmJmVTN2dm5jb21kTy9LRzJ0NmRIWW93aEN2a1JJdUNJQTBZUXNuak1JcWFKcHpHV0duRjlSQXIra3lFKzlQa083UDl0NmJ6NTM5dTQ4Y1BiZDJCa1QyVFJua0NFQUp6emZmdjJyVnp4MWI5ZnV1UjBPQngyT3lLYVRraUVpQ3kycW9saW1CWmgwRmtBeEhZUkFPSnhieFM3RlQ5Qk9ib1NFb0RvN1hQbm5uM20yWk1uVCtJSXppeEhpVitNaXRWci9sWmY3M0E0SWw4YkdCalFORTJTWlZtUzRGSEJURkZWWGRlRzkwSUt5MWRWVmZnVWNaRklLRURYZGNNd25FNm53K0VBSXNZWUFNZ1MyN3A1eTlXR3E5dmYyUDRJSHlZaVZWVXJ2clg2MHNXTFRxZVRpQUJSMWJSRWx5dG4yclNTK2ZQbnpKMlRsWk9UNUhhYkhqU3ltb2tvd1pVUU96cjBCd2JldVhneEtTa0pSeHNaUWhJalFBUWl2OTkvNTlidHk1Y3ZYN2x5NWFPN2R6Vk5zMGtTWTh5T2VQem9VUVNvM1A3cmFFT2o0T0NjRTlHMjE3YmxabVhuZVhPbVpYdnp2RGxUSmszKzdvYU5MUzB0dXE3VFdJenU3dTZzS1ZQRjRoTXpQRjFkWFdPeXJLWnBkMjdkL3RyS1ZWbVRuOGp6NW9pZm5LbFp4NDhlSXlJZU1STWlYenQ3K293bkxWM1FUc3Yyemlnb1BIUDZkSlJFeGhqNGswL0dCRGkwdDBNSERtWlBtUnBDbURyNWlldE4xeU5uaHZOd1lHQmdVZG1paDUyZDRva3N5NmZQbmlrb0xCU0dqV05VSlBUMDlCVFBMTEpKRWlMMjl2WGQrT0JtY2tyS1o2dzZ4TzQ0a1VnaEY5OTlkKzNxTmNKcmlLaWdzUERNWDg3S3dVUVlqdEovcWozUjF0b3FhQlZWUFhUa1NFRmhvWGdOeDdvMkVrdU95Y0toUlZqdzA4S3lzcDlzMjlZL01DQmswZHpjZk8zYXRaQjBUR0JGVVNvcksyMDJtM2o2L0FzdmxDNG9IYjhGYzhYYWlybno1akZFa1dWLzl0cTI2RHhjVjFmWDNkTnQycmFpZm4velpzNzVPS1VWTHJwMTY5YWUvbjVFbENXcHFhbXB1Ymw1RVBBN2RmVU91d01RRlUxYnZuSkZUbTZPeUdtUFk0UU0rVEgxRW1MNUJXVUw4L1B6UkRDenkzTGRoUXNBZ0lBbVZVTkRnM0FCU1pJMnJOL3cvOUVKYnQ2eVJkZDFSSlJrdWVIS0ZTRmpCZ0ErbjYrbHBVWElKaTB0TFM4LzcvR0ovNzlrMVVRQU1HL3VQSmZMSlo3ODY4WU5ZVjB5QUh4dzgyWWdFRWhJU0VBQVQ2Ykg0WERFRlVJTmJ2aTcvSStjTDhyTXZyNStJSE1tTXV6eWQvUFJTSllBRU54dXR3aXJvd3pkNlo2TWxOUUp2dllPQW5qWTZXdC84TEZuWXFZTUFIYy92Q3RDbEtIcnVUbTVraVRGSmM3V2x0YXlzaktudzRuUmpvUm1HUmlNRmdibmpER2JiSzd2Y2lZc0t5OG5BbVFZZW9zSCs0cVFyNHRxSWFBb3gzLy91d1dsY2VRT1NaTFMwek02UCs3Z3hEVk51M2YvdmdsOC8vNTl4aGdCcUpybTlYcmp0aC9PdFlBaUl4TTVJSWFkQmZ0Qk01SWlvcWFxbzlFdUkxQlZsWXo0RWdkakxITmk1dnVOalpJc2M0UDdPanZONXFHdnJ5OGtTN3ZkSG4vVVphSy9ReUllanNEUk1Sa1lpcUtOVVVqcndCSFJsQUFOanJLRE9saENRQUtNZTJQb2Nya0l3Q0FDSUhHQUlZZS9oQWdBalBqVEwrZGM1MXczREJZT2RRakJVd0RpRkxrRHpnMlVaUUt6ZStlYWhveHh6czBtRjJCb09qU0lBRURqQm8rL2oxUVV4V3k1RVlWTVpRQnd1OTJpajdiSk5wK3ZJOTVGRTkySjVVdVgydTEySUdJamh5NENJTTZCcUw2K1hsQ3BtdnJjNGlVTU1YYk9GOEpRTkRVdFBTM2VXTjNiMjhjUXhWRmtTbktLQ1R4bDZoVGhma3hpcmExdGp6d0hpeG9aR1JuSGpoOGJiZlBRMi9Oa1ViRWRtS2pZZCsydVNrNUp3VkdiYUZ6QWhtRzB0N2NEWXdqQUdFdExUemVCOC9NTEVCR0ptQ1RkdjNmUE1BeFpsdVBDam1ObTVHa2xBVU5rWTkrYm1PbzFkTjNmMVlXSVFPU3dPN3c1WHJPMG5ER2pNTkhsRWlkYTdlM3R2YjI5WTlYS2ZJNVZCeUsydExZK2ZQaFF4Q1pQcGljMU5SVUlHQUc0azVLeXZWNUIyT1gzdnhkc3BzYnBDS25xN2ZQbkZVVVIvRVhGeGVHWUR3QWxDMHM1NTRnb0ErellzWE84VjlIaTBHZC9UWTNEWmtNQVZkUG1sY3dYSHNYRTVjT1NKVXZGQVNLVHBQZWJtaTVkdkRUZW1VK2YrclBmMzgwWTQwVGNNSjVidkRoWURRQWdZa25KL0d5djF6QU1BTERiN2J1cnFzYTdWZGZVMU5obG1ZaTRZWlNYbDN1enM0VnRoeFBnTHlzckRTSVJOcTgyTlB6aTlkZWp3c0I0Q1ZlY2FQMzY5YmR1M21TTUVaSGtjTHp5NnF2aGU0L1E3TklGcFVWRlJRYm5SSlRvY3IxMTZLM3F2WHMvWFFMOEhHa0I0T2ZiZm5yK3IrZWNUaWZuWE5QMVJXVmx1ZE55aDdscWtXVjVWMVdWYUdnNDV6WloydjZyeWxkKytLT3VycTd4WXNhZEhSM3Ixbjc3OElFRHRtRERsNXljWExWN2QyUWxOK2h1YVdiUnpEMXZWcXVhS3BqZGJuZHRiVzNKbkxtSER4NE1LTXBZYlVzY2hwdGZPa2EyNC9mN3EzYnNYREMvcEs2dUxpRXhVZlNZbXE0ZlBub2tPU1U1MGlYRDU5SVV2TERadFdQbjNqMTdFbDB1a2FpSUtCQUlKS2RNZU9xcEo0dUxpek15TTFNbnBNbzJhZGpPNWhIZElaQ2lLRDkrK1dXSk1VUU1LTXJPWGJzY1RtZjhYa05Fb0d1YXorZDc4T0JCWTFQajlhYnJmYjI5cm9RRTh4QVBVVlhWSFR0M3Z2ajFGem5ua1JxT3ZoQVgyRFg3ZnZQRzl1MTJteTNZNG5DUnNYUmQ1NGJCaVlCekNOMTNVcWhTcEtIWlAzUTl6d0NJY3laSmRydmRESmlNQlFJQjBTZnpJY0lMWFRqUlNFMFNvc1NZeEZpSUo2UXpEbEQ5WnZYeUZTc2ludzhQSEJyL3VIcDEwNlpOLzc3N2tUc3hVZlJvWnRFYlhEV3NFaHhtUjBnWUZVdHcwRjhNREZIWktCU01GTmw3aVYyWUNLTFpKTTU3K25wblAvMzAzdXJxNmRPbkQzdDNPVHl3V0VMWDllbzkxWDg4VWR2VzFvWUFraVNaZjVNUVZpd043dkVqOEliQTRlZ09iMk9rd0VGbVR3QVl2dE0yZEYyUzVhbFpXUlZyMTY2dVdCTlRhaU1EUS9BQ3RmR2ZqU2RxYSt2cUx2aDhQbDNWek12eENDTVpadDl4cGhRY2Vtd2RvekdJbUd5ejJTWlBucnhzMlpkWFBiOHF2NkRBWnJPRmRqNXNYTURZUlVXVVZYUjJkdnE3L0lGQUFJQ0czOWxvRmZxb2k0TVlSK3pobldHQzA1bWFscG9TdW80YlREa3NNMXIvTTgwQ3RvQXRZQXZZQXJhQUxXQUwyQUsyZ0MxZ0M5Z0N0b0F0WUF2WUFyYUFMZUQvcWZFZmJtTWNWQ3A4Ykc4QUFBQUFTVVZPUks1Q1lJST0iLCJzdXBwb3J0ZWRFeHRlbnNpb25zIjpbeyJpZCI6ImhtYWMtc2VjcmV0IiwiZmFpbF9pZl91bmtub3duIjpmYWxzZX1dLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCJdLCJleHRlbnNpb25zIjpbImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6ImY4ZDVjNGU5ZTUzOTRjMDY4NjYyZWMyYTQxNTVhNTU1Iiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsInVwIjp0cnVlLCJ1diI6dHJ1ZX0sImZpcm13YXJlVmVyc2lvbiI6MX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMS0xMi0xMCJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjEtMTItMTAifSx7ImFhZ3VpZCI6ImI3ZDNmNjhlLTg4YTYtNDcxZS05ZWNmLTJkZjI2ZDA0MWVkZSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiYjdkM2Y2OGUtODhhNi00NzFlLTllY2YtMmRmMjZkMDQxZWRlIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlNlY3VyaXR5IEtleSBORkMgYnkgWXViaWNvIn0sImRlc2NyaXB0aW9uIjoiU2VjdXJpdHkgS2V5IE5GQyBieSBZdWJpY28iLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2LCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX0seyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbImVkMjU1MTlfZWRkc2Ffc2hhNTEyX3JhdyIsInNlY3AzODRyMV9lY2RzYV9zaGEzODRfcmF3Iiwic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURTakNDQWpLZ0F3SUJBZ0lVUjM4bXEyNlNmMnN6VlYyQmRHNldFTjdrdVdVd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVJZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU5ZMFdiOW9Qb1JvS29ReVdQYUpwejExdnJXVGc2elR0bU5qMlZvS1JueXZLR1JxcHpiODN3NWw2WUE5NlVZa1lCRFFQMGlsTzJEUGU2d1dxVlI1ekRmUnpkY0g4YmgrTDdkR0d2YWU2aFJUWmhrRmtDcFhEczRIY2NrbnJEZjhGQ2xKN0hlMzlKZjQyL0cxUW0yeno5V1dtclBYdGdpSy94MDVHanNRZkd1REcxemY1UVRVVWllOGx3eW1LM1RmZE92TmVlSkFBUGUycG43SXRmUmIrclZyTldpRHpsUm4ydk5uWjJ3UG80d0gvV0o2ZGhYWkcrck1XVCthNkJvY2cxVWZJdzZrZHVuRzRiVHBaenN2YWNGWXlSMG1wZitEZU9ucFNXQW15d0pXSHZUbGYyWVh4RnllWGNUQUNkUWxjTU5HSjJWaFpRNDh4dFA1L1JCUC84a0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ2h5NDJva2lxY1RTMWlxYS9IUldqa0JuNEgvTUI4R0ExVWRJd1FZTUJhQUZPcTNRcENlREh0a2V0dFVmQU82ZkU2ZjJLRmhNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUFuK1JISVBidE1FRE5kVDFnOEgvUml0QWtVZExnQXQxdFdHV25sajlrbmJ2NC80R2xYN0M5cDQ1ZWZQTzkvYVpMNk9WMVhSS0JpNkttdEJXNUs3bnVZRW5NeC81QnFCU2JMVDdyaGR1QzQ5VEJlTWI5UEhkWHNUbFNWTlllZnIxZEdpZHI0ajB4VkJRTGIxcmtuREFiZFdEektmdm5heUtPOEZyd2U3SHg4NDNNRy9ySitjMFhydVV2YmZWVENITGlJV2hNN29ORGhMOHhvYjZ4VW85S0xLY1NMK0l0WXNPMy85V2I4UTlHanNxTDRGWHNEY0cxU2FZaDdLcGZ1TW1PaXhxekpaTzJuSWljUFlSZzFJMlN1aVVmWU83MHRtZEhjYmwra1NRbVNZdDdycTR2aUlMZzJHeDNqOXJJVHVXVGpiYVVhU1NReGdPbU1TSHV5ek1BQyIsIk1JSURQakNDQWlhZ0F3SUJBZ0lVWHplaUVESkVPVHQxNEY1bjBvNlpmL2JCd2lVd0RRWUpLb1pJaHZjTkFRRU5CUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTVo2L1R4TThySVQrRWFvUHZHODFvbnRNT28vMm1RMlJCd0pIUzBRWmN4VmFOWHZsMTJMVWhCWjVMbWlCU2NJWmQxUm54MW9kNTg1aCsvZGhLN2hFbTdKQUFMa0tLdHMxZk81M0tHTkxadWp6NWgzd0duY3I0aHlLRjBHNzRiL1UzSzloRTVtR05ENnpxWWNoQ1JBSGZyWU1ZUkRGNFlMMFg0RDVuR2R4dnBwQXk2bmtFbXRXbU1ud08zaTBUQXVjc3JiRTQ4NUh2R000cjBWcGdWZEpwdmdRamlUSkNUSXErRDM1aHd0VDhRREl2K25HdnBjeWk1d2NJZkNrenlDaW1KdWtoWXk2S29xTk1LUUVkcE5pU092V3lETVRNdDFid0N2RXpwdzkxdSttc1V0NHJqMGVmbk85czBaT3dkd01SRG5INHhnVWw1Wkx3cnJQa2ZDMS8wQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQjhHQTFVZEl3UVlNQmFBRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRTXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJEUVVBQTRJQkFRQzNJVy9zZ0I5cFo4YXBKTmp4dUdvWCtGa0lMa3Mwd01OcmRYTC9jb1V2c3JoenN2bDZtZVBNcmJHSkJ5SjFYbnF1QjVzZ2NSRU5GeGRRRm1hM21pbzhVcGYxb3dNMVpyZVhySjBtQURHMkJwbHFiSm54aXlZYStSMTFyZUlGVFdlSWhNTmNaS3NEWnJGQXlQdUZqQ1dTUXZKbU5XZTltRlJZRmdOaFhKS2tYSWI1SDFYZ0VEbHdpZWRZUk03Vm9sQk5sbGQ2cFJGS2xYOHVzdDZPVE1PZUFEbDJ4TkYwbTFMVGhTZGV1WHZEeUMxZzkrSUxmejNTNk9JWWdjM2lyb1JjRkQzNTRnN3JLZnU2N3FGQXc5Z0M0eWkweEJUUHJZOTVyaDQvSHFhVVlDQS9MOGxkUms2SDdYazM1RCtXVnBtcTJTaC94VDVIaUZ1aGY0d0piMGJLIiwiTUlJRFNqQ0NBaktnQXdJQkFnSVVUbmJiR0lSMk5IdnpxSUtGQWVRd0cxWEJpczB3RFFZSktvWklodmNOQVFFTEJRQXdMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3SUJjTk1qUXhNakF4TURBd01EQXdXaGdQT1RrNU9URXlNekV5TXpVNU5UbGFNQ1l4SkRBaUJnTlZCQU1NRzFsMVltbGpieUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRUVnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBT3NYajNrMDRCYW40VFlkdFpLcUQvT1BKeHlEeWFQbUNCVUZVaWFaSWdUdGVabmozWDI1RGhncFpaWHNDNEQweWRJY3JsQTZ3TlVJbk9STC9MOXpCYlRFSU1BVk1HbzZnN1VLQW1iMk1GNkFIYm5oWUpkOWVpa3VwVk5XU2hITllOYzRHQmRPMVlONkFmVXF2SmhIYmUzVjRTTk1QbUJSRUtKUFZ6N1Rod2dtZ2dUZThXczJLMC93c3F2MndTRTdwYkNCc1VaaElYNTFiWk0zcHFEd0pQVG1SRkV2dDAvNnRHNWVPOEYzajE0T1hxZkVobWpuMVZ2eEtEWVFPTFpBeEN3d2dDMFA0Q2RmV3YzeThQU1I4STM1NGhPMVkrR3pOanZJcVgzOE5LTHl3dUlZSEZlck94Tmx4RU1CdkZoWUJ1UnVZQWtrZ1VhUHFONlVCaHNJTHJzQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZDQ29SSGhpeU5uYm5YUldJTDZaQlhvQlg5WVRNQjhHQTFVZEl3UVlNQmFBRkNBb1VDRWJwRnBiNkZQTG5aM0Y1UHhzTDNvZk1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQ1FGYWZKSTEvNVdnOUNFRWltRTFSUDU0UmdRd1ROVE9PUXNMQUNUZStySXRsRlF6QzlaRGhyVjgyOHlYN2p6eStBQXNwM2l6SzdUMXRoMmRsN20rdHUwc3cyUGEvb2xjMDJudDZQeUl3MzQ4Z2FIemhJMSswS0U0NXF4dkZEZUwybE14YlBmQ1l2eUVFYVl6amlRRUxVNTk1MXBYR1d5S01hLzRmTHRPK1pLT1hoTXVWZXE0clhEUEk1NFc2SkhPaUFhaUtkaXcrNWUzYzJrdC9qRklRdE02dk1YZzlMTkZ6ZGpFVE50MjBWWDlRZXZScEZaZnVjTUc5d0NhUURvRmxQenBUTUpLaFBldi9pbUptWlloS2ZyMGxMY2VtdHFqSXhMQW9xWmRPWWZIQmc2K3ZBY2RQSS9pYXVHcFVBdjdYK1VLTm1Ed2paMkJhSDRzTHdoQjJtIiwiTUlJRFNEQ0NBakNnQXdJQkFnSVVEcUVSdys0Um5HU2dneGdVZXdKRkVQRFJaM1l3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRREk3WG5IK1p2RHdNQ1FVOE04WmVWNXFzY3VibHZWWWFhUnQzWWJheG45Z29kTHg1c3dIMGxYcmRnamg1aDdGcFZnQ2dZWVg3RTRibDF2YnpVTGVtck1XVDhOM1dNR1VlOFFBSmJCZWlvVjdXL0UraFRaUC8wU0tKVmEzZXdLQm82VUxlTW5mUVpEclZPUkFrOHdUTHEydjVMbGo1dk1qN0p0T290S2E5SjduSFM4a0xtelhYU2FqMFN3RVBoNU9BWlVUTlY0enMxYnZvVEFRUVdyTDQvSjlRdUt0NldDRkU1blVOaVJRY0ViVkY4bWxxSzJieDJ6Nm9rVmx0eURWTEN4WWJwVVRFTHZZMXVzUjNEVEdQVW9JQ2xPbTRjcnB3bkRSTFZIdmpZZVBHQkIvL3BFeXp4QS9nY1NjeGp3YUgxWlV3OWJuU2JIeXVyS3FiVGExS3ZqQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJUcXQwS1FuZ3g3WkhyYlZId0R1bnhPbjlpaFlUQWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQXFRYUNXTXhUR3FWVlg3U2s3a2tKbVV1ZVRTWUt1VTYrS0JCU2d3SVJubHc5SzdIZTFJcHhaMGhkd3BQTmlrS2ptY3lGZ0ZQemhJbXdISmd4eHVUOTBQdzN2WU9kY0pKTmt0RGczNVBYT2Z6U24xNWNGQXgxUk8wbVBUbUliOGRYaUVXT3B6b1h2ZHdYRE00MVphQ0RZTVQ3dzRJUXRNeXZFN3hVQlpxMmJqdEFucS9ORFVBN2JlNEg4SDNpcEMrLytOS2xVcmNVaCtqNDhLNjdXSTB1MW02RmVRdWVCQTduMDZqODI1cnFEcXNhTHM5VGI3S0FIQXc4UG1yV2FOUEcya2pLZXJ4UEVmZWNpdmxGYXdwMlJXWnZ4clZ0bjNUVjJTQnh5Q0pDa1hzTkQwNWRDRXJWSFNKSXMrQmR0VFZOWTlBd3R5UG1ueWIwdjRtU1R6dldkdz09IiwiTUlJRFNEQ0NBakNnQXdJQkFnSVVVY21NWHpSSUZPZ0dUSzBUYjNnRXVaWVprQkl3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRRG01NTViV1k5V1crdE9ZMHJJV0hsZGgrYU5hbm9DWkNGaDdHazNZWnJRbVBVdzBoa1NHNnFZSFF0UCtmWnlTMzNWRXJ2ZytCUXFubXVtZ05oZnhGcmt3RVpFTGVpZEJjQzhDNEFnNG5xcWlQV3B6c3ZJMTdOY3hZbEluTE5MRmNaWS8rZ09pTjZaT1RpaE81L3ZCWk1iajlyaWFBY3FsaVltTkdKUGdUY01HYUVBeU16RU1OeTJubTZFcCtwalA1YUY2Z2kyMXQvVVFGc3VKMWoyUmoveW5NL1NkUnQrZWNhbDVPWW90eEhrRmJMOXZ2djJBMk92NUlUWkNsdzRiT1M5bnB5cFFpbU9aNVFBWXl0bVlhUXBXbC9wTVl6NnpTajhScWtWRE5FSkdxTmZUS0EyaXZMWXdYNmxTdHRNUGFwZzBKODRsOVgwdm9WTi9GcFM0VkNWQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJRZ0tGQWhHNlJhVytoVHk1MmR4ZVQ4YkM5Nkh6QWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQVlNemdMckpMSXIwT292UW5BWnJSSUd1YWJpSFNVS1NtYkxSV3BSa1dlQXRzQ2hERUhwWGNKL2JnRE5LWVdvSHFROHhSVWpCNEN5ZXBZZXZjM1lsckc4bzd6SHhwZlZjYW9MNVNldUprekh4S240YlRhU3A5K012d2FtbnA2NGtaTWlOYkZMa25mUDlrWUtvUkhrTVdoZVJKMVVzUDF6NFNjbWtDZUlMZnNNczZ2cW92cWpXQ2xGc0pwQmNzbHVZSFdGN2JCSjFuNFJ3ZytBVEVvcFk0SWdHdjZadndjK0E5citBVDJocXBvU2tZb0FsK0FOWXdnc2xPZjlzSmUwVitUQTlZWS9VbGFCbVBQVGQwLy9yOXd2Y2VQV1prUGpLb0FDL3pVTmhmRGJoNExWOEdIczNseVgyWG9tTC9MTmM4Sll6eUlhREVoR1F2ZW9QaGgvdHIxZz09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWZDQVlBQUFDR1ZzK01BQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBSFlZQUFCMkdBVjJpRTRFQUFBYk5TVVJCVkZoSHBWZDdUTlYxRkQvM2Q1OXdlUVNJZ1M5QVFBWGNGTEFRWmk5ZnBlVnoxdFkvV1RacjVXeHBjN1c1a25MYTVqSTNaODVzclMybk0yc2p0V3daUzdJVUg0SDR4Q25FUXg0REFaRjc0Vjd1czg4NXY5L2xJbkJ2VkovQjRQdjludS81bnUvNW52TTU1NmZ6QS9RdjBIYi9JclgzVkZLUG80NWNubTRpblVJV1l3TEZSbVpRVXV3akZHL04xaVJIaDFFWjBOUlZSdWRxdDFCZCsyblNLeVMvT2h5czArbGszZS8za1E5cXZENFpVdGE0VlZTVXVZMGVpcHlpVGhBZm9jb09SVmdEdXV3M3FLUmlBZDNyYmNFdGpUallJb2Y2V2FIc0NtelZQV0NNeCtjZ2g4dExxV01LYU1Xc1VqTHFvMlJ0SklRMG9Pem1lcnBRdTRlc1pnc09Oa0d4SDdkMGtkdlRUMTdzNE9NVTdWSThaaGpnR2FNK0FxOWlFTnU4UGlmMXVkejA3TXd2S1dmOEdsVm9DRVkwNFBDNVdkVGFYWUZiUjh2TnZMNSszS2dmYjV4Tk15YTlSYW1KaXluYU1sR1RWdEZscjZiYTl1K3BxbkVYNHVNdVJSZ2pTWUVock43dXRGRmU2bHFhbDdOZmt3NWltQUdIeW5QcGJrOFZtWTB4c3RucHRsRkNWQ1l0elR1Qk44M1FwTUxqVHRldmRQelNVbko3ZThta2p4WjM5ZlhiS0RmbGRacWJ2VStUVWdHbkJWRjZmUTJpUEhnNFcxNlVXVXd2emJrMTZzTVpFK1BuMHB2ejdKU2V1QXllczhsY3BDbWFLdW8vcCtxV3IyVWN3SUFIV3J2UDBZRXpoWEF0TEFic3NIaHA3aUdhbXZ5aWpQOHJ5cXJYVVdYOVhvb3d4eUF1Zk5CcnA0M1BPQkZYWmxrZjhNRFJpcWNweW93QXdwdXoyeCtmV3Z6L0R0ZGU5c21zenlndGNSNkMxd2JkekJsNk9scTVXTllZNG9HYXRoSk1ya1RFeDBqQVJTSEFWcys1cllrUU5YYitRZ2ZQTHNRNmdYeUluc3JlUWZtcG03UlZGWWZMODZuMWZpVU9rWXZTaGtVUHh2YnVrem95NksxaWhNMWhvM1h6VzZFdlNmWEErZHBpV0dhV2QrZG9Yekx6bUd3S1lGTENBc1JBbFBCQWhNbENGWFU3dEJVVlByOEhnVmNKSFdxK0YwMHBscitETVRkclA0enZ4WTExa05NaHhUK1NlVEdnK2Q0VjVMUUppdHlVR0pOQjhWRlpzamdZQlpNL0lJL1hDVGtqMHF5RE9wRjJBVlExN0NJalVwL0RuVDFVa0w1RjVnZGorc1Mxd2cxZ0UzZ2lnbTYwZkNYelNuUFhieUFQYklYditJRHBFMTZUaGFISVM5c2t5aGxtTUU1RjNjZnFBS2hxMkMwRTVQSDFnWWFYYUxQRGtaRzBIREpPbktXSHA1MUkwejVTT3V4OGUxV0F1WnpkSFFyVGtwOFRtalhvSStsYTB3R1pzenVicWJPM2lmUTZBL1c3dlZTWXNWM21SMEpLd2tLYzRXSGlCa21SOEkzQ0NnSTg3b09MNHF6VDVQK1JVSkJlakVPZ0FQSzhoWVB6YXRNK2VJVHAySU85eVRRbWVyb21QUnh4MXF4QWNzaWxlL3ViU2VFYmNXUUdZRUNnaGNMWTJIeUtqb2dqSDI1aE1wanBVdjFPdWdsaTRlaDJlUncwTzMyYkpqa3l1Q2dOemcwdnpsWU1TaVNzMHVvbzRNRzdoTU9qQ0VhWDF5RkUwblN2akJ6dVRuRXBLODZaOElvcUZBSXVidzhrZzlBckVhUkVXU1pJK2pINFhicDZnOUU5RW5KVDNvYVJ6RE4rTVVKQlFESG41NmE4b1VtRUJ1c094QnMvTjUrdEpFYlBrQUZEajhVR3ZPcy9JV3ZjU2dsR0JodlM3L0ZUWWZwV0dZZERZOGZQQXhXU0EzNXNUQzRwNCtMbTRBYXFJb1BlUXRmdWZLNkpoMFpoeGxic1VYT1NtWE5pZkQ1WlRBa3lEb2ZiYmNjbHhuQThXTkFxeENiUk55a2hYeFFwYUR3NjdmWFVZYnNpRzBLaHR2Mm9lSXZoOHJoUU1ZT2NFQXFYRy9lSSt6bmdPYzV5eHI4cTgySUFNMWMvRkxGT3BscXU1ZUZRWHJNWnpHY1ZDalliTFdHNUk0QlQxZXVScmxieHROT3RNaXREREVoTFhJSXluQUF2dU9FV0UzWDNOZEFmdDk0VmdhRzQyWElRdDBaWDZQZUNFL3FRRmU5cks2SHg3WVU1MEt2SDdmVzRmUytxN0tLQkp4c2dnQlg1cFNBR2gxaklyVmg1elE2dzNSZmFhaEJYbS9hQ2JDWlRqQ1VGVVR5V1pxVzlwNjJNakpQWFZxT3JQZ01PNE52NzRHa2Yrb3dmdE5WQkRRbmpGSnFIU3cxN3BYdmhXVzVLWnFlL1E0OU4vVVNUQ0FWV29RWEZJSEJIWFhlM0ZQclVEc3VHRG10Ri9oSEtUSHBla3hoaUFPUEkrU0pxNlM2SEY0STlZV3prQkpUbzQ2aVVNeldwOFBpci9SaWR1THhLWXNTa3NWOHZMbE9RdmhHWDJZbFIwT0JoQmpDK3UvZ0VjdlkwQXBLN1lrNDFOeGpQU1FuV0ZIVEY2NlVyamdldkI4Q3U1YStsMnZZU1JQdHVWRG83M2hoZE1TSG5VWDd0VGpzVlpHeEFsL1dwdGlPSUVRMWduTDI5bVg2L3RSMXRtbGtZajhXNFgrQ1NqV2NVREdZMU5wUy9DN2hTS3FpTUxNL2wyUW1TV1o3M0RkeitnaW84QkNFTllQUTQ2cW5rendYVWJxdkJreGpVUXNXZlpGZ2J1bzNyQWYrd043ak9POTAreW54NFBpM0wrMG5ZTDFTY2hEVWdBUDRnUFYvN0lkMXErMUhTaG11R2tJcVdSUGd5eE1GcVA4SGZqVG5qWHdZNWJRZmJKY3Q2T0l6S2dNSG90Ri9IZTFlZ3NheEhTcUc2d2ZkbVE1eDhOeVRGRnFCY3AyaVNvd0hSM3lrNSszNmhGN3ZYQUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzFfUFJFIiwiRklET18yXzEiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwibGFyZ2VCbG9iS2V5IiwiY3JlZEJsb2IiLCJtaW5QaW5MZW5ndGgiXSwiYWFndWlkIjoiYjdkM2Y2OGU4OGE2NDcxZTllY2YyZGYyNmQwNDFlZGUiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJsYXJnZUJsb2JzIjp0cnVlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6dHJ1ZSwiYWx3YXlzVXYiOmZhbHNlfSwibWF4TXNnU2l6ZSI6MTUzNiwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0Ijo4LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjEyOCwidHJhbnNwb3J0cyI6WyJuZmMiLCJ1c2IiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotOH0seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTM1fV0sIm1heFNlcmlhbGl6ZWRMYXJnZUJsb2JBcnJheSI6NDA5NiwibWluUElOTGVuZ3RoIjo0LCJmaXJtd2FyZVZlcnNpb24iOjMyOTQ3NiwibWF4Q3JlZEJsb2JMZW5ndGgiOjMyLCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6MSwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjEwMH19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTEyLTIyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJTZWN1cml0eSBLZXkgTkZDIGJ5IFl1YmljbyIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjQxMjIyMDA4IiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMTItMjIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTAxLTEwIn0seyJhYWd1aWQiOiI4ZDFiMWZjYi0zYzc2LTQ5YTktOTEyOS01NTE1YjM0NmFhMDIiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjhkMWIxZmNiLTNjNzYtNDlhOS05MTI5LTU1MTViMzQ2YWEwMiIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJJREVNSUEgSUQtT05FIENhcmQifSwiZGVzY3JpcHRpb24iOiJJREVNSUEgSUQtT05FIENhcmQiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6ODIsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfSx7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQ1V6Q0NBZm1nQXdJQkFnSUpBTDFmL3Z1MlhXdVJNQW9HQ0NxR1NNNDlCQU1DTUlHRU1Rc3dDUVlEVlFRR0V3SlZVekVSTUE4R0ExVUVDQXdJVm1seVoybHVhV0V4RHpBTkJnTlZCQWNNQmxKbGMzUnZiakVQTUEwR0ExVUVDZ3dHU1VSRlRVbEJNU0l3SUFZRFZRUUxEQmxCZFhSb1pXNTBhV05oZEc5eUlFRjBkR1Z6ZEdGMGFXOXVNUnd3R2dZRFZRUUREQk5KUkVWTlNVRWdSa2xFVHlCU2IyOTBJRU5CTUNBWERUSXpNRGt4TkRBMU16Z3dNMW9ZRHpJd05UTXdPVEEyTURVek9EQXpXakNCaERFTE1Ba0dBMVVFQmhNQ1ZWTXhFVEFQQmdOVkJBZ01DRlpwY21kcGJtbGhNUTh3RFFZRFZRUUhEQVpTWlhOMGIyNHhEekFOQmdOVkJBb01Ca2xFUlUxSlFURWlNQ0FHQTFVRUN3d1pRWFYwYUdWdWRHbGpZWFJ2Y2lCQmRIUmxjM1JoZEdsdmJqRWNNQm9HQTFVRUF3d1RTVVJGVFVsQklFWkpSRThnVW05dmRDQkRRVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCSGJUK1Jwa0FvOUVjTCtPZWxDajhoaWhuZkZVS0RPcE5zc2RySHdzZStxdUZZVjBITDlqd1FYTzM1NW1rSTRkaHAzVHNuYk1KMEFKOWpyNm83Qm9DRW1qVURCT01CMEdBMVVkRGdRV0JCUW5zNmFoeHMvL2dwYmE3WERaQk5zZ0RHMGxFREFmQmdOVkhTTUVHREFXZ0JRbnM2YWh4cy8vZ3BiYTdYRFpCTnNnREcwbEVEQU1CZ05WSFJNRUJUQURBUUgvTUFvR0NDcUdTTTQ5QkFNQ0EwZ0FNRVVDSVFEYlZNUXFXem56YjBlRVlXUWFRSW4wZGxZRG9XUUFiVUk0NmI5anNDMXVGZ0lnZCt4RTBydWZXLzduaktjMXFrc2kzVWhNb2pjRlpDKzNjTFRSaFdnS3hqVT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZ0NBSUFBQUQ4R08yakFBQUFDWEJJV1hNQUFDNGpBQUF1SXdGNHBUOTJBQUFLVDJsRFExQlFhRzkwYjNOb2IzQWdTVU5ESUhCeWIyWnBiR1VBQUhqYW5WTm5WRlBwRmozMzN2UkNTNGlBbEV0dlVoVUlJRkpDaTRBVWtTWXFJUWtRU29naG9ka1ZVY0VSUlVVRUc4aWdpQU9Pam9DTUZWRXNESW9LMkFma0lhS09nNk9JaXNyNzRYdWphOWE4OStiTi9yWFhQdWVzODUyenp3ZkFDQXlXU0ROUk5ZQU1xVUllRWVDRHg4VEc0ZVF1UUlFS0pIQUFFQWl6WkNGei9TTUJBUGgrUER3cklzQUh2Z0FCZU5NTENBREFUWnZBTUJ5SC93L3FRcGxjQVlDRUFjQjBrVGhMQ0lBVUFFQjZqa0ttQUVCR0FZQ2RtQ1pUQUtBRUFHRExZMkxqQUZBdEFHQW5mK2JUQUlDZCtKbDdBUUJibENFVkFhQ1JBQ0FUWlloRUFHZzdBS3pQVm9wRkFGZ3dBQlJtUzhRNUFOZ3RBREJKVjJaSUFMQzNBTURPRUF1eUFBZ01BREJSaUlVcEFBUjdBR0RJSXlONEFJU1pBQlJHOGxjODhTdXVFT2NxQUFCNG1iSTh1U1E1UllGYkNDMXhCMWRYTGg0b3pra1hLeFEyWVFKaG1rQXV3bm1aR1RLQk5BL2c4OHdBQUtDUkZSSGdnL1A5ZU00T3JzN09ObzYyRGw4dDZyOEcveUppWXVQKzVjK3JjRUFBQU9GMGZ0SCtMQyt6R29BN0JvQnQvcUlsN2dSb1hndWdkZmVMWnJJUFFMVUFvT25hVi9OdytINDhQRVdoa0xuWjJlWGs1TmhLeEVKYlljcFhmZjVud2wvQVYvMXMrWDQ4L1BmMTRMN2lKSUV5WFlGSEJQamd3c3owVEtVY3o1SUpoR0xjNW85SC9MY0wvL3dkMHlMRVNXSzVXQ29VNDFFU2NZNUVtb3p6TXFVaWlVS1NLY1VsMHY5azR0OHMrd00rM3pVQXNHbytBWHVSTGFoZFl3UDJTeWNRV0hUQTR2Y0FBUEs3YjhIVUtBZ0RnR2lENGM5My8rOC8vVWVnSlFDQVprbVNjUUFBWGtRa0xsVEtzei9IQ0FBQVJLQ0JLckJCRy9UQkdDekFCaHpCQmR6QkMveGdOb1JDSk1UQ1FoQkNDbVNBSEhKZ0theUNRaWlHemJBZEttQXYxRUFkTk1CUmFJYVRjQTR1d2xXNERqMXdEL3BoQ0o3QktMeUJDUVJCeUFnVFlTSGFpQUZpaWxnampnZ1htWVg0SWNGSUJCS0xKQ0RKaUJSUklrdVJOVWd4VW9wVUlGVklIZkk5Y2dJNWgxeEd1cEU3eUFBeWd2eUd2RWN4bElHeVVUM1VETFZEdWFnM0dvUkdvZ3ZRWkhReG1vOFdvSnZRY3JRYVBZdzJvZWZRcTJnUDJvOCtROGN3d09nWUJ6UEViREF1eHNOQ3NUZ3NDWk5qeTdFaXJBeXJ4aHF3VnF3RHU0bjFZOCt4ZHdRU2dVWEFDVFlFZDBJZ1lSNUJTRmhNV0U3WVNLZ2dIQ1EwRWRvSk53a0RoRkhDSnlLVHFFdTBKcm9SK2NRWVlqSXhoMWhJTENQV0VvOFRMeEI3aUVQRU55UVNpVU15SjdtUUFrbXhwRlRTRXRKRzBtNVNJK2tzcVpzMFNCb2prOG5hWkd1eUJ6bVVMQ0FyeUlYa25lVEQ1RFBrRytRaDhsc0tuV0pBY2FUNFUrSW9Vc3BxU2hubEVPVTA1UVpsbURKQlZhT2FVdDJvb1ZRUk5ZOWFRcTJodGxLdlVZZW9FelIxbWpuTmd4WkpTNld0b3BYVEdtZ1hhUGRwcitoMHVoSGRsUjVPbDlCWDBzdnBSK2lYNkFQMGR3d05oaFdEeDRobktCbWJHQWNZWnhsM0dLK1lUS1laMDRzWngxUXdOekhybU9lWkQ1bHZWVmdxdGlwOEZaSEtDcFZLbFNhVkd5b3ZWS21xcHFyZXFndFY4MVhMVkkrcFhsTjlya1pWTTFQanFRblVscXRWcXAxUTYxTWJVMmVwTzZpSHFtZW9iMVEvcEg1Wi9Za0dXY05NdzA5RHBGR2dzVi9qdk1ZZ0MyTVpzM2dzSVdzTnE0WjFnVFhFSnJITjJYeDJLcnVZL1IyN2l6MnFxYUU1UXpOS00xZXpVdk9VWmo4SDQ1aHgrSngwVGdubktLZVg4MzZLM2hUdktlSXBHNlkwVExreFpWeHJxcGFYbGxpclNLdFJxMGZydlRhdTdhZWRwcjFGdTFuN2dRNUJ4MG9uWENkSFo0L09CWjNuVTlsVDNhY0tweFpOUFRyMXJpNnFhNlVib2J0RWQ3OXVwKzZZbnI1ZWdKNU1iNmZlZWIzbitoeDlMLzFVL1czNnAvVkhERmdHc3d3a0J0c016aGc4eFRWeGJ6d2RMOGZiOFZGRFhjTkFRNlZobFdHWDRZU1J1ZEU4bzlWR2pVWVBqR25HWE9NazQyM0diY2FqSmdZbUlTWkxUZXBON3BwU1RibW1LYVk3VER0TXg4M016YUxOMXBrMW16MHgxekxubStlYjE1dmZ0MkJhZUZvc3RxaTJ1R1ZKc3VSYXBsbnV0cnh1aFZvNVdhVllWVnBkczBhdG5hMGwxcnV0dTZjUnA3bE9rMDZybnRabnc3RHh0c20ycWJjWnNPWFlCdHV1dG0yMmZXRm5ZaGRudDhXdXcrNlR2Wk45dW4yTi9UMEhEWWZaRHFzZFdoMStjN1J5RkRwV090NmF6cHp1UDMzRjlKYnBMMmRZenhEUDJEUGp0aFBMS2NScG5WT2IwMGRuRjJlNWM0UHppSXVKUzRMTExwYytMcHNieHQzSXZlUktkUFZ4WGVGNjB2V2RtN09id3UybzI2L3VOdTVwN29mY244dzBueW1lV1ROejBNUElRK0JSNWRFL0M1K1ZNR3Zmckg1UFEwK0JaN1huSXk5akw1RlhyZGV3dDZWM3F2ZGg3eGMrOWo1eW4rTSs0enczM2pMZVdWL01OOEMzeUxmTFQ4TnZubCtGMzBOL0kvOWsvM3IvMFFDbmdDVUJad09KZ1VHQld3TDcrSHA4SWIrT1B6cmJaZmF5MmUxQmpLQzVRUlZCajRLdGd1WEJyU0ZveU95UXJTSDM1NWpPa2M1cERvVlFmdWpXMEFkaDVtR0x3MzRNSjRXSGhWZUdQNDV3aUZnYTBUR1hOWGZSM0VOejMwVDZSSlpFM3B0bk1VODVyeTFLTlNvK3FpNXFQTm8zdWpTNlA4WXVabG5NMVZpZFdFbHNTeHc1TGlxdU5tNXN2dC84N2ZPSDRwM2lDK043RjVndnlGMXdlYUhPd3ZTRnB4YXBMaElzT3BaQVRJaE9PSlR3UVJBcXFCYU1KZklUZHlXT0NubkNIY0puSWkvUk50R0kyRU5jS2g1TzhrZ3FUWHFTN0pHOE5Ya2t4VE9sTE9XNWhDZXBrTHhNRFV6ZG16cWVGcHAySUcweVBUcTlNWU9Ta1pCeFFxb2hUWk8yWitwbjVtWjJ5NnhsaGJMK3hXNkx0eThlbFFmSmE3T1FyQVZaTFFxMlFxYm9WRm9vMXlvSHNtZGxWMmEvelluS09aYXJuaXZON2N5enl0dVFONXp2bi8vdEVzSVM0WksycFlaTFZ5MGRXT2E5ckdvNXNqeHhlZHNLNHhVRks0WldCcXc4dUlxMkttM1ZUNnZ0VjVldWZyMG1lazFyZ1Y3QnlvTEJ0UUZyNnd0VkN1V0ZmZXZjMSsxZFQxZ3ZXZCsxWWZxR25ScytGWW1LcmhUYkY1Y1ZmOWdvM0hqbEc0ZHZ5citaM0pTMHFhdkV1V1RQWnRKbTZlYmVMWjViRHBhcWwrYVhEbTROMmRxMERkOVd0TzMxOWtYYkw1Zk5LTnU3ZzdaRHVhTy9QTGk4WmFmSnpzMDdQMVNrVlBSVStsUTI3dExkdFdIWCtHN1I3aHQ3dlBZMDdOWGJXN3ozL1Q3SnZ0dFZBVlZOMVdiVlpmdEorN1AzUDY2SnF1bjRsdnR0WGExT2JYSHR4d1BTQS8wSEl3NjIxN25VMVIzU1BWUlNqOVlyNjBjT3h4KysvcDN2ZHkwTk5nMVZqWnpHNGlOd1JIbms2ZmNKMy9jZURUcmFkb3g3ck9FSDB4OTJIV2NkTDJwQ212S2FScHRUbXZ0YllsdTZUOHcrMGRicTNucjhSOXNmRDV3MFBGbDVTdk5VeVduYTZZTFRrMmZ5ejR5ZGxaMTlmaTc1M0dEYm9yWjc1MlBPMzJvUGIrKzZFSFRoMGtYL2krYzd2RHZPWFBLNGRQS3kyK1VUVjdoWG1xODZYMjNxZE9vOC9wUFRUOGU3bkx1YXJybGNhN251ZXIyMWUyYjM2UnVlTjg3ZDlMMTU4UmIvMXRXZU9UM2R2Zk42Yi9mRjkvWGZGdDErY2lmOXpzdTcyWGNuN3EyOFQ3eGY5RUR0UWRsRDNZZlZQMXYrM05qdjNIOXF3SGVnODlIY1IvY0doWVBQL3BIMWp3OURCWStaajh1R0RZYnJuamcrT1RuaVAzTDk2ZnluUTg5a3p5YWVGLzZpL3N1dUZ4WXZmdmpWNjlmTzBaalJvWmZ5bDVPL2JYeWwvZXJBNnhtdjI4YkN4aDYreVhnek1WNzBWdnZ0d1hmY2R4M3ZvOThQVCtSOElIOG8vMmo1c2ZWVDBLZjdreG1Uay84RUE1anovR016TGRzQUFBQWdZMGhTVFFBQWVpVUFBSUNEQUFENS93QUFnT2tBQUhVd0FBRHFZQUFBT3BnQUFCZHZrbC9GUmdBQUF0aEpSRUZVZU5yc2x0OUxrMUVZeDcvdk50ZTB2WE9rN3lTN3F5V0JZdm5qSWt0R1UwdkRDd2t0VjRLWHB2M3dCLzRCQmlJYS9RQzF3amtWVXhOc1V1dXV6ZDFrNmlCTEN4SUZ6Y0RYT1Rad1k4cjJzcjFycDR1WFp1b2dncnlKZlM4ZWVMNmM1M3c0NStFNUhJb1Fnb09VQ0Flc0dDQUdpQUVBeVg2TFpkbjE5WFdHWWRScTlUOGdrTjFxYTIwVkRsVlpjWlVRWXB1WktTMHRIVGNhOXl3ejZIdXJxNnMvenM2U1Aya1h3R0kyQXpqS3FIUTYzZnQzazRTUXBvWUdBTVdGUlh2S0xtb0xBQXdPRFB3ZG9MZEhEMkJrYU9oMzg0M0o1SEs1OXBUVjFkd0U4R3A4ZlArT1M0dEw1cmZtSDZHUWtPNzBvTHV6YzJqd3VTb3AyZEJyT0N5bms1S085UFgzWjJaa01Da3BxeXZmR0lZQmNMKzl3MnFkS0NvcUNnUUNBSGllRjJvZlAzeGtNcjFXMElyYXVscHRRWUhQN3dORjdlMkJObDhESU8zNENRQU5kK3U3dTdvQVNFQUJxS3VwSllSVTZhNERvR1h4cWFvVXBad1dBOWFKQ1VKSTRRVXRnRlBxa3duU1F3RDY5UHJvVnhRTUJ0dmIyaWlLZXREUndmTjhLQlRpT083Wms2Y0Erbm9OTE1zQ3lNbzh6Zm45SE1mbG5Na0NzTFM0T0QwMURVQjM5Um9oeE9sMHloTVM0aWlSM1c2UGJMc3pCM0Z4Y2JSQ1FRaFJKQ1pLSkJLeFdDeVR5ZVJ5R29CVUt2MHkveG1BVGxjcGk0K1h5V1FhalFhQXorZWJtcHdFVUY1UkRrQ2xVaFZxQzNnU25wK2JpejRIbk44UHdPLzNSNXhBZ012TnprNW1ra1dVQ01EcTZuZkJkemcyQkRDdFVBQndPbDIvZklkQWlnNElCb09SS0lqbmVRVk5iM20zaWkrWGlFSHArd3pwR2VsdXQvdWwwUWdnRUFpVVhTbTdkZWYydlphV3RMUzBoWVd2SCtZKzVaL055OG5OamY1VVNDU1NTSXc0NFhEWTRkaFFLcFhEdzhOaWlxcHZiQndkZVZGMW93b0F1N2FXbW5yTTBLUGYzdDYrVkZMYzFOeDhQdS9jNk5pWVNDU0tQc2tldDJkNWVkbmo4VVFjcjlkclg3ZTczWnRDeXJKclZxczFIQTRUUXBaWFZyeGVyK0M3TjkwV2k4Vm1zKzBmQ3lyMnE0Z0JZb0QvQVBCekFJNlZOcUdRUFVxbkFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsImNyZWRCbG9iIiwibWluUGluTGVuZ3RoIl0sImFhZ3VpZCI6IjhkMWIxZmNiM2M3NjQ5YTk5MTI5NTUxNWIzNDZhYTAyIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwiZXAiOmZhbHNlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOnRydWUsImFsd2F5c1V2IjpmYWxzZX0sIm1heE1zZ1NpemUiOjEwMjQsInBpblV2QXV0aFByb3RvY29scyI6WzEsMl0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6MTAsInRyYW5zcG9ydHMiOlsibmZjIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN31dLCJmb3JjZVBJTkNoYW5nZSI6ZmFsc2UsIm1pblBJTkxlbmd0aCI6NCwibWF4Q3JlZEJsb2JMZW5ndGgiOjMyLCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6MX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIzLTEwLTE5IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjgyLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IklERU1JQSBJRC1PTkUgQ2FyZCIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjMxMDE5MDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjMtMTAtMTkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6ODJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjMtMTItMDgifSx7ImFhZ3VpZCI6IjMwYjUwMzVlLWQyOTctNGZmNy0wMjBiLWFkZGM5NmJhNmE5OCIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiMzBiNTAzNWUtZDI5Ny00ZmY3LTAyMGItYWRkYzk2YmE2YTk4IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ik9uZVNwYW4gRElHSVBBU1MgRlg3In0sImRlc2NyaXB0aW9uIjoiT25lU3BhbiBESUdJUEFTUyBGWDciLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9LHsibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sImlzRnJlc2hVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZWQiOnRydWUsIm1hdGNoZXJQcm90ZWN0aW9uIjpbInNvZnR3YXJlIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNGRENDQWJxZ0F3SUJBZ0lFZUtXbHlUQUtCZ2dxaGtqT1BRUURBakJvTVFzd0NRWURWUVFHRXdKVlV6RVFNQTRHQTFVRUNoTUhUMjVsVTNCaGJqRWlNQ0FHQTFVRUN4TVpRWFYwYUdWdWRHbGpZWFJ2Y2lCQmRIUmxjM1JoZEdsdmJqRWpNQ0VHQTFVRUF4TWFUMjVsVTNCaGJpQkVTVWRKVUVGVFV5QkdXRGNnVERJZ1EwRXdJQmNOTWpReE1qRTRNVFV6TXpBNVdoZ1BNakExTkRFeU1Ua3hOVE16TURsYU1HZ3hDekFKQmdOVkJBWVRBbFZUTVJBd0RnWURWUVFLRXdkUGJtVlRjR0Z1TVNJd0lBWURWUVFMRXhsQmRYUm9aVzUwYVdOaGRHOXlJRUYwZEdWemRHRjBhVzl1TVNNd0lRWURWUVFERXhwUGJtVlRjR0Z1SUVSSlIwbFFRVk5USUVaWU55Qk1NaUJEUVRCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQkE0SlBTeWZjb3pSVFJrOHFyYnRhT2s5K0M1Y1IxTHJtTEdwQ2ZpaTIwUVZ2SXBjdWtwQ0lYT254akFJZWFwd1h6R0ZTUTJoSnN6eERCMmVXRmpjUmlTalVEQk9NQjBHQTFVZERnUVdCQlFDNTZIYzRiM2VVNVRGSm1vZHRHRlRMNmpKV3pBZkJnTlZIU01FR0RBV2dCUUM1NkhjNGIzZVU1VEZKbW9kdEdGVEw2akpXekFNQmdOVkhSTUVCVEFEQVFIL01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lRQzhXTTlYTE9EUVJEOFFmNTRWK0NnMm5Xa3huME81U2F4RmlCNG83eUxqS1FJZ1d2V0IrcGVXVFJyUWVNNngxak4wK2FUdjFORys4cVhubDlXVWV5M0JPVDA9Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQVFBQUFBQjdDQVlBQUFDYjRGN1FBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBTGlNQUFDNGpBWGlsUDNZQUFHMW5TVVJCVkhoZTdiMEpsR1pYZFI1Ni9ybkdydXA1bm1mTnNrQkNhQUtNQkFhQkpQd2liR0x6REg3RThVdGlPMzZ4MzBySWlwL2plSzNZV1hhZXM1N2pyQ1NlMW9vWE5ySkJJQWtKTUFpRVFBZ2hOSGVydTlYelhOVmQxVVBOLy9TKzc5dm4zT0VmcXFwYnJZRjJmVlg3UC9PNVo5cjc3SFB1dWZlNk9jeGhEdjl3a2ZIbUhPWXdod3ZFcWxXck92djYraGJSUGw2dmk1YzZNNWs2VGFDWXkrVTJ1WHhlRHYzbWNpNEhJMU1vMUd0VGxTdXkrU3g5aGF6QzRNWi90VnJkbnMwd3U2eERacGxzTmx2UEttckcxV3ExalFncDBVWHV6U0JPWmN2MlhIYlppdTN3T2VEcTlmUDFXdjNFMVBqWTRjSDlKMzduNEpmKzhveml0c0djQUpqRDJ3cDMzSEZIL3NpUkkrdEtwWktibkp3MFR3ejNFdjdBQ0hrd3dKWjhQbDhITXVTcWZDNFB4c25WYWE5TjFiWmxjam5qRlFEeCtVT2VjdFZhYlIwNHFkTkN3RlJnVkxnUmxrVllaVVhHWmZxZG1MZWVBUmlGbkZldjEycExjSzFsOUlPSktQQlhPRFBKSXB0TTBidjhmekRUQ0ZLQllCaXlhZzhFdGcxbUNZUEZvM3IxOWE2d2JxTmw2bW55N0JrMzhPcXVmN3YzQzMvMXV6NWFTelNXY3c0L3ZzaUFlVGpCTkdGd2NKQThzTWxjTVlyRm9zeXFxMjRHRXhYQ0RNVWYyc2hvNVhKNUxaaW9XMHhGZnRJUGZrR1lxWlpoU2xwQXQ0TEpIR1luNDh3SHd5ejNiZ0J6RlJuREdLbTdXZ1ZEQmthaXdiU01reVVUWmdybUh6T2JnWFlPL0dBR3hPNkxaU3hMMXpxVWpOOE96VUV0NGpaNG1iTk5udDY3VFdoTFpHKzZ4WlUyYlVVaW56UE04dkNRTy83Q2MwY3FQWVhOQi8veUx5Y1UwQUxKMXAxREM5eHd3dzBGd1BTNEJwdzdkMjQ5d295TDlGczBBOE8zV3E2dWdtMGUxRUF4VTJDcVRENVRyMWFxbkZVV2tZbU1vUUpqb2ZPcTliNXF2Ym95bXlIaldQZlFDdFpBa25vZlpzQ1ZTYVl3QmlQcjFEc3d5NjJsVGY0eXlFQWNTMklrOFhZcUxhanRRRU9BSDA3NlRTRUtJeExoS2Y4QTgwejdKMXhOWVI0cHorbG54SURZMmlaMjIweGl6Q0pLR2hlYzRQVWk3citBM0szdmNSMWJyNEFOaFZGNTZtN3E5Q2wzL0ljL2dIeDJIOXYzeGIvNkluMWJvVG0zT1FocjE2N3RXTEJvMFIvMGRIZjlESmhtdmpFUlE2ekpQQ1A1OWd0aGdCOFFac1NqSXoxVFlFQ24zSURjTFFhNjkyZ0tnZE44bXYwRDBpSGUxVDU2YTh3WWY4WWNERE5HWXdPR1NOYVlzOHo1TWtJWVJBUnJuM1MzUituOUgzVEZqZEFBSWtBQURBNjQ0MDkvejlYcXRVZjJmdUZ6ZC91QUpzenVDdjhBY2ZYVlYzOW0wZUxGLzMxcXFpeVZTcEJoOXJhRHMwMUErL2h0UTFLWVhhd0dUSnZvQXJ0KzF0Ri9qSWJVUlRYcTJ3ODlQL2RwbCsxZjRGMEE2alU1ZU5LZC9ONFRybHl2VFk1UG5WOXcvT0dIeDN4b0N0UWY1OUFDUGIwOTEyQ2Q2aW9WckpBck5TTzRxOVc2cU5hT2FxMnAzbzdRV1duaUdybVpYRVFvbktpVlh3TkZRSndtdWtDMHlyK1JoT1lBMUNCeDVlQU9ma2wzOEx1MDFCSlJlZDlzdENwaGdxaEtYaUJsZSthNVRDNFB3aEl6RUplWERLdTdVbWVoNXdQSXZDWG1CRUFiWU8zZVJlWVhnN1hxcURlTVprSWlucmR5T1RJOU1ZNVJsSHdHU3FhSnFWWGVDV3J6aDVTZ2dPQU9ma2wzOEx1MGFMeUNDRDlKYWgwSjFCYXRJamRRNDBWRXJhTkdkQkhJNU1IOFlQaE1sb3h2aEI5ZHp1T0QzbXpDbkFCb2d5eHZBWEZLYnV5Z1FBR3R3bHBRMHpnUWdUMWVEL2svNURScm11MWZxN1NYTTFyVlZpM1JxdDFGQ0orSkVua0ZKUDFpZXAxL25QM0Y4Tnd0Qm5GakdBWFFYUmxxVmZVNUFYRGg4QnBzMU1pTmYyeGNOZkRzL2tKWHAya09GNDlXN1htcGFUcTBpdCtlTG40Y0pPSkpxclFnenZoa2Vta0JudUFmWDgrdDJuVHZ4emZTMG9nNUFkQUcxV3IxTW1rYkRZQUV3cUJvcGlEVU9LZ2lBZmUySUp2ZDB0UXEzcHRKYXFZR3Z6ZUN3blZBY1UrbC9uZzd1YkZ0RkpQL1pzM1dzdTQyMkpyQTRNc1NtemF0ZlZkdmI5L0hjb1c4N24vWHF2WHRma0V2cUdFZy8yaEExZDlRcTljNlFuT2dQZXZaYkdGWkxsY3F6VzZ6cUVVemVxOFdJVzhpa2xlZlRVWGUydEplZXJ3WjlYbnIyNnovMXo5ckdrQUM0OGVPdUtFbnYra215MU91V3F1N21uUC9jOStEZi8wWkh4emhjdXR4WWMyYU5lK2J2N0R2YXhCOE9idUY1d2QvMmdCZ1MvbVpteEswcTZzSGJxNnRMclNKTHNzbWJZTWY5N3ErVGN2Zm9salRsYlQvMS85dGt3QVlPd29COE4xdnVLbXBLVmVwMVRpc1g5ejc0TjljNjRNalhKWkxnTzZlem8va3M3bmMxT1NrR29EMzhrV1FoblNYSXlxN2N0bW9JcXJxdGwrNVV1RUJDcThsOE9kQ2FEYTQySFRUNFVMeWJCWDNZbWdtSUE0YmNSWVVxN3h2SmlXTDBDcjhFbEkyVGRucENQRWJxV1dlbnZCamJkMmliNElMOCtDMnRmZjg3LzN5VE9DeUZBRFpYSFp6dVV3bTVuMzJCRUVQZ3BFbXhEZmlmcW0zNDRmMzd0UHJxdGRKWEtlQmRQeTNWYWRIWWJtTHBKQStTYTNpa1ZyRmZTTUk5Y0xnYkV1KzdybW9EUUsxeXV1TnBzWXlYR0pxcUhzclJyNTRBcE0za0NGMndDaG1zK09iNVVnZ2lubzU0WnBycm55NFdxMS91QWJWNTJMUjA5UHJpc1V1Q0pPOFNZVkxBbllJRE9iWDBQSnR2T2N3aHhodHhtSHZyLzBiREp6MHlCazllZ2hMZ01laDFVTFRyVmE1QjBEOEVwWUIvOTJzaHN0eXZGMTczZFVQbGFjcWQ5djYvK0xRM2Qzak9qdDdYYUZRa2tidytuRkpNcm04MGRCRWI3c1dtNkZBYjFWNWUzN2xOL0hyV2RrYm8wY091OVBmZTl6VklnR2dVNmYvWmUrWFB2K3JGc053bVFxQXE3NDhOVlg1eU92cGthNnViamR2M256WDBkR3Q1VUF6M3JqdVRndWNTM3dkbjkwbEwzMURocTg3L3haUzk1S1hPWW5YbWZrYldyYUFOaGZwL0dlLzNzVEpFZ0JQZlNzV0FHalBlaWJ6OTlBQTd2UlJoTXRUQUZ6ckJVQ0VXVllUMFJnekI3Vy9XQ3k1aFF1WFFBajBhMlBRMEw2YnA5TTJMR2ptSVRJYnhwL21Nc0tNMS9KQk0yUVRveUhpck5JMUZITEdORE5FbU5VMUx3SVhNdmhibG1HbXpyZ0FOT1VrajlubFgvZ24veUo1Z3h0VXh4TGdzQnVDQUtoWHlxN001MWxRVnNRNXNQZkJ6NiszZUlZTGFZTWZHMnpidnVYTDgvc1hmR1RwMHVWdWNuS2lpU2xTL1FZN21pWnlNSXd2eWpoeDhvUmJzM3E5VzdSb2ladVlpTituRUJnOW1XZnIvSk5oaE9VZEFZNjBNK0dDMVZ6K054a1JhQkkyRGZGVFNIaTFDUFdlY1VqN09ESFNUcmhhSm1xUGFhTXJzSDJNS0tUWjhvWWpYYlRtNjg0VTNncHhtdG5GYndSVDVUNzl5K0RrTkN1UFFBQlFBM0RWaEFDb3U3T2xVbjNKamdjZW1QTFJMazhCc0c3RDJvYzZTeDEzeit2cnM5MThlcUtCK05lK3hncU53TmRSTFZxODFNM3ZYNmhiaDJIM25PM01uVmZiT1E1K1RFbS9zQ3NiL05CQmFuanIzRWJoMGRxTTR4RWhUSUFSaGNnZXVSSUJhYlQybmo1ZDJndXVWbkVTWlNUa2F2QUxhQmRtL3RGUGhLYVlMZUtrNGRzNjhUdHRkR0RHTEJPQmJhclZBTjhiVFhHYkUwYytzNGdib0pBMndabGYrQXdIWlNxWUdzRHA3Mzg3TFFEZ242dm1GdTkrK0hPbkxGWm91Y3NNNnphc2ZxaWoySGwzWDE4L0JBRHY1eHVER2svT3JzcGpZMlB1M1BrUlMrdGJWdmR3NGVZZjh6WG1adjY4eFdmNWNyRG9hb2duSVpHRGtQRGhFaGplUDU4dnhISGd6MXVFZkp1ZHhhV0pxOERVOWVBWDNEbkU1UVZDUEw1eEtKdEJlcnVveXFBU3dzcWxUQ3VvT3Y0bmFZK3Q2Y0VzbDdjVFBqVGxsMFNUOXl3NHFHV01scDVXeHhtQnRKYThWU1pwUDdtYW92blVyWkszaEkrdjN4YVlkVDZHS0hxenBRbjFUMzRLditsMkdlRkp3S2NoQUNvVjdRRlVNVTZaUTdaU1g3WG5rYjg5YXJGbTNaby9YbGkzRGdLZ0l4WUE1QVpWTkppenFQYkF3SUNySWluM0FqZ0lDZ1V3TEppWVRNODh5WUJrTURJb2hZQUVBZ2xweGNnZytvbDRBTUg3ODlyVkdoOHpaa3dJZ0p6bHc3UlQ1VW05STBCNU1TZkdRVkZaNm9nSmNUMEtBenVvQkgvR1ovNk1tdEJBQ0taak9Wam1mRDd2aFkyVmdTYmpGb3Nkcmxnb3dxNFQwOGlyRXRXTndrc3RobmdFNDVWS0hTZ2ZTb1BycVF6d3B4QXlnV1oxWm5zUTRWcEVyREdZcVYvL2s3U25mdTAvc3BzdHRudVhkNXRuSEJUWjRwRFlDOWJnamtJVDRRay93dWVWOG8wTVdMeWQ4Q1dLSVdmczEyUkxHWEZvQ3JoK3l4RHYzLzFMdnhMMVVjRG84YU1RQU4rQkJsQnhGUzhBMkN2VmV1YU9BMS8rL0JNV0svVE9OT0E3OGNybHNyMzNyZ1dXZ2s1Nk0vRXplMHk1OWVQVjhSSlU3cWF5bExCZzRkc2hKMnMxaFpXeTJYcVpsakord1pDTk1LK0NPM1JvLzMvR2dMeXRyMysrR0l2VnRQYkJqLzFIRFNwdkliWVJSNDhkbFFEbzdPanlQajZ0b21WY0RnTStsODI3S2xRc01tRklydmZLaHR5alFXaHBEYlJrWEFtTVZ5cDFnVWx5aWw5RlI0MlBqN2p6NTRmZHhNUzRtSndYQzhrWWh3ekx0K0RTWDIvRDlVeE5acVdiR2tFWUZFeEg0VUxVVUJFeUpZc1RoSVFFR1FhR3RCajg1Y25zWU9CeUJXMUx2d1F4TThibHRiaWJ6SERtRVFraGVTRi9McmZnWnZ3QzJvZXZTMlR6MStxOGpzWE42OTJqcUhOSUF3dmRFTmk2ZmdYWFo3NFVRaFJhUVlzeHdZSkVLQ3VGRVAxNWdqTUlHK1pCUCtaQnZ4cUVMRTBUZEJSdWlmcWtFTnlocFFNUTE5dGl5NFdpT2VHRjVkaytVakprM2kvL1gvaE5sMy9zeEhFMzlJTWdBQ3BhQW5DWVZ0MHNCY0RQL2R3bi8vM3BVd00vbjh0bGVvdWw0a0swSFAvVmlYd3pqcjNOaGg0K2diZW8vL0ZqRFkrQ050UWhmVUZHOWxhQTFtUjBycW5ac2V4OERtYWJIUnM3TWM2QU5nN3dQYS90Y1dQajQ2NmZHZ0RpV295RUVKZ0ZZZ0hBTjBrbjBvQ255SllVQUdTNkt0WlhpYUhpSytEZHlYTGF4VDJ5TFFSQUZRTGdmQ1FBT0lBRlpKSE1uOWRtKytieU9UR1lCajJGQVBLaGxtS3pibFNDRm1BT2JaQU1nTjJXSzZZWldKdGJCUGFKdEJEMmhiK1N4VFZ0UXdKSC9tQnVMVm1DbGdRL2hETWtsTE1LRlpWcGpGbnRldXh2Q2tUV016QytqVHRyRTExVjVURm9mQ1Rpc3BocUorUkhnYU0yUnY1TXh6Nmp0c0wyTDBDN1kxMlFWUGtuODJ5UG1lUE1LaHZCSWtiUlo1MHVqZDUveXR1QXljNkRBRGdKQVJCcEFCY2hBUDdQZi9FckQ1OFpIUHB3WjJmUmRYWGE2OVJEUTBWb216cU4rRGFhUVFNWURUOGRVbG0zZDZRUVFwNTYraWszTkR6cytxRUJjTkJaa2NrNFpzNEdSNDhlUWNQVk5Oc29UU0laR1k0RGl3T0pnMDRkRjhMUjBFbW5Sa05vczhoT0RhQ3poUUNnQmpEa0JRQm5Oc1JuWm9vUjh2UUNBTzBuQWNBUFQ5Q05mRGhqYW9aWEhFbXFDSkUxbEdVNk5FVUpIbWJ5TjRyU0ZQZEN3SklHV3hzZ1FQc2RLSGZFV1BTajBBTXpzMlVpRFF4R3ptczltcVRBOUFGc0x6STQyNW1uNDZhbUppSGdHUWNDSE9uWnozMTlDNlNKd0VOcHd1V21SL3RZVVhsbmhFWFU3NnpUR0hKTGxybXVqMzBDOVUrM0lKY0F3ODg4NlFVQWxnQ29JMnZWS0FDc3RWcWdBNE96dTZzYlppY2FwVVBFUnVLYU9LTEM3S2lyc3l0Rm5GVzVucHlPT0xnanlwTktub0s3bWZLZXlLREdNa1N3eGVac1lMRXhRSkZYdkxZMnhnb0RrcFFDa2pUbHpqajBES01oR2hWTk1TOEt5Z1Y1VW1PZ3BLOWdScldCN1FVVGtDcmxSVjJXaVVoZUtJR0NENnNUS1BaTTBMUmdQaGF4N1I4eTVwNkpackZhb0txV0tyekZ5d2UreWp6c3dvZTdZRTdBajFTdVRGbDdlSm9Fdy9OaE1LYmxPL05LbmQydXE3dlh6WnUzMEMxWXVOUjF3RDAwUE9nT0hkNExJWHdlOFd3WndyWnI2T1VHaEJpTmhGOFlUYVNRUnRBWDQ0bC9pTlNlUWo3ZWpyRlp1dU5PdFpIMm55TENaSEpxd0RRbWRRelJ1a09tRVFBZDlhN09IdGZUMCtOS1dBZDN6SnE2WFNjYU15SzZrNVR3WTF3MnZNeUxvQktwUk9wS2tkUlcxRFdxYnJJTkJGcVMxQUx3WmtOemh6MU5aSDRqOWhzN1Fndi9CcVRhWFZCRVQrbEEraGpTK2FSZENjUUpFTWtZaGV0bUNnRnFEbVlhOHpDVHBsenBrZmE4Q0lSTVlySy90Ry9hY2FsZ21jVlh2QmhZb1NnUXVQbEtrMk94ZDk1OExCOUhzUVE4NUU2Y1BDcmh3ZlkyeHBzbElXZXdhT292K0RKQ1UveEFjYXcybE13dDR3cFhYKyt5OHhlaUdxaUxCRDdOdXB1Q0FEdS9mN2VyUVVoU0NHUVJCdjBKcVpyYmlubTF4Ty84aDk5L2FQVHMyTjJyVnkxeml4YnA4MmNldUhRcVZac3NFS2x0NWlrMHgwcjd3RFZ0UnMyQmYvb1hmK0wyN04zbDV2Y3ZNQ1pBSEN2enRCbDVXQnd1QWRoc1hSZ1VBWllUQ015dmI3bEI1YTVoZ0lSck1FSTBJR0drcnRad2FTNEJxR1Zsc3R6a3FtT2dOZXdCb05PWXI4bVdlSml6VmFtUlVNalpIa0JZU3RWdDF4NFZaUmlKZHgwaVFlVmpHUm9LRXhDODJ3UWJwdXRYaHNRbGpYOWJJRVNGMlRaT0N6Q0p0VGZTY1l6NXdkaXlWQmVTY1FPMFJ3RWhldjc4R1MwTnVKOFVyanM5NGpodFl6Y0VtSE0yZWNmSVFCdnZ1UDhYWU5wbkFnT29BUXo4NlB0dTdOQStqQjJNWUk0aDVNMmlZNlJXYXE2d2NkL0REeHp5MGRzMzBSLy95Zjk0YVBqaytidnZ1ZTh1dC8yS2JkNjNGVjVISzc5dXRHZzBlUDNpWno3dHZ2dmRKOTM4K1FzdWZoUHc2RkZrbFpIR0VpTWVjQklBV0lQV29KSkdBNk91cGpZN0FXdDB0WWJMU2dCQVk4cGtMbDRBY0tuRWNoZ1FWMHNWM3VwajJVd0k2RzRDTDU2NmZrTmhQR1lSQldBSlpGd0VtaE0xK2t5WExkdkFOQjFibzNQZlE0eDZnUVdhZlV3VEJLT2o1M1N0eFl1WFlxbHBkeVhhSWRINzB6a2FYRUNUeC9RbzNIQ1R5MTkvazNmRkdOUDNBQjUzbVdyWm1CL3RSZTRuSDBBYy9PbWVSeDc4UDN4VW9lMFNJRHlqUFRJeXJoM245cFI5QzZsRmVRcVlCVkdyNUV4OGNRZzVjTGlBRXJOTkNzbjh3YTJlUGJ3L2Z6eFJTSkFpbU4xVXMvWmdhSWpSZVBVb0pmS2xzQWhrMTBGc2I1Vy9YeExFRk1KaVFoUWp5N0kxTVd5NmNGQWNLUkRMWXVVUnpRalcxQlBiUEFneElNby9BbHVjYS9YRW4rK3JaZ29hVVRPMUMyTjdkSFhOa3pEbHNtQmt4QTZINFYrRXk2VVF2RVQ0aWNuS0VEemsxaCtjVFhGbm9JNE9sN3Z5T3FSS2c3ZHFoM2UrcUkwL01yODFsaG1veDhucVpJSDNDMU5BZHEzeGgzLzRSdy90ZkhubjNSLzc2WHZjN1hmY0lqOE5ITFBJenA2UUNkTFRSbzNFUWVmamtKaFlkZ3d4Y3pPUGdMZ29haFk1cllGWWEvM1I5SzBRM0dhM3VBRy8rdXUvNnI3Ly9lKzcrUXV3QkdBUCt2aUUwc3dDdWcxWXJidnVubmx5aC9RQmtRWVFsZ0FobU5YeXB2OXBTQW1nRER5QTAxbnExc0JpckpRR01HbDNBVUtieGZuNE9rUkxBTjVUejFzOHhORVNBSDgwN2ZZWEJyRVN3TGV6QzFFUUQ5cUY5L1FFdjFadEFxOG1YeDh2S29kK1d5QUthSTdSNkJOSFRZWllmU040cDBZTzZoQjIvYVhoY0ptajBNYWNad0VraWRLRzVBMlhqb3ZGdXhCVk56cHlWZytJY1Vrd2UzRDhlK3MwVUpRb1h2c0UrUnZlNWZMWDNlaGRNYzRkMk90T1AvYzAxdnkyK2NmWm4yUERlRFB6aVQxZmVmQnpQbXFFcUhxTitEZWYvWGNQUGZQMFUzZi96UDMzdXF1dXVsSVp6WTV3VVRJKzdDMkZnc2dQYmtodU96OXZKOVM0d1NhVG5acHlXMGRMNWN2RmJxVURhYWVlZjZwTnh2M1c3L3cvN3RubmZ1UVdZQWxnMTRuRCtCL0RIQ2t2RHdxQUNsWk1QYjE5Y2pmR2xBQ0FDczQ2Z2dzdENOWlV0K25hQ0VMNVhLWHM2bFArR1F3VXBsaUFBTUFTSUp2bHJhenBCUUREcVNsRWpOY2dBT1NIUEhVYWoyMER1N1doV3NWbDBRNzVLNitSdlhyb2dLdFBUcWdNbXZGMDI4em5pM3JVK1NtMDRTR1ZOMVVieHZmeENOb3kzVDB1RXhpQjE4SzFmV0VOTEQvU0NhaGY5ZGdSc3l0YnkxdDU2dC9pV1g4WldRd1BPRFJ4ZUR0aE03YWxiUlRzRmkrSzZIT1BvZlpDbVhuYk1POXZIUkxKTVJzRDZUWEdFSTUrT1RVMDRCYk9YK3g2ZS9uZXlEWklKRS9tbEFaQzdILzJ3QktrOVBGUE9hd2Z2WWVoT2pubGpqNytxS3VOblhjWmxORTBnSnEvLzE5LzlMV3ZmSm5mQjdTMVV3Snh6UnNRR29FSE1yaVRPSHZDUlZFQWt1MUlKeWtSQjlRYzNrQlcrSVNiSnNvRmlreVdFMkVVS3RIT3Q1b1VkbThqNUMxTGt2REQ5QkZGWG9iR1VaTUNCdENtTFM2M2FvM0xMbHNSVVU2MDNNeWx5MTEyOFJLWFhia2F0RWFwbExVdVlPVXptTHNkckJqdEMyTU1ZSUl4WGhjYlUwaFk5Sm9LcTBIY0JVMkFnbWhxMHRVbkpseDlaTlJoV25QUWJWMzl6TEJ6NDJPdXVPMEtMS2Q0TzVXYmlrakR2SGtIaE1KR2pNWjhjYTFWYTExOWZOelZ6NTZCMERqajNQQ3doRWQ5YU5qVmhrNGJuVDdscWdNbjFVZTVaU3VSbk1JeVdSZlVPOUhnN0FmcmIrc1Q4MFY4L012Rkh5c0N3djI0NEYwUFRTcXdlei9lQ3RORW8vd3RUSDFzdVFBOEhwMTFIY1djNis0c2lycEtCZGNKZDZtUWRTV0VGVDJWc0t6c0tJTHhRRFFYTDFqb1RwMCs2Y2JHSjFTMmxuKysvVmxYYnhqaHlvSDBxL0JBY3FiaU5GSnU3Y1ltNWlmT0hkenJhdU9qWElVcUh1dUhKaVIvak5jcm1WK0NSeFB6RTIwRlFOaUVJc055YlJFUkd6dWkwQUZ0U015ZXBNWTQ3Zk9RRmlFVGJsK1dNQ2hDWjRzVW5nenpIVXlEZGptOVgyUzJneEtsclcyUzVGYXNkRFV3VEJWcVYzVy9KOWdyQjE0RHdZUzdjbkNmcXg0K2lEeHMyR1VYTGJiRVFEcGI2N0paWVpxb0dFSWFRSUl2Ty9VRzE5M3JLaWVPdWZMeG8yNXF6NnV1TW5RS2ROcFZoays3NmxuVUFReE1xcHc3NjZybllEODE2TEpMbGxwNmxwM3R5SXhoaEw1M0VHeEtOelRvcWlQblhFMEVJVEk2Nm1vUUtMVFRYMkZqSTdwMlp2NThOSnd0V1VJL0J0STFXR1R2SHpFc1NTRUcyZmtEQ3VHcFNTSXhYdlNuL0JONUlweXFQQ3lvRWs4cThoQ1ZFZDArWTVuVXV1dzBLb1VnMjlmY1BSQ2lpeUFFVHA0ODVpWWhUQ1BHYlVmSlAzaVlZRWlHQi9LMktLQ1pjbHV2akdJSDRzbkwwU01ITmV1empDeS82a3k3eS96MjNxOTk2VEFzTGRGZUE2RDRBSkl6dXNqUDNrYU5ETjVBN0l5TG9uU0gyb3h2SFJqYzBleFBvdHRYT3BTYmJnUDhnaTFZWmdRYWtydTlWTzBqc0xFOW9IcG5NS3ZXQmdlOFJ5dll4Yko4SHFGY2R0V0QrMTFtMFJLcGNNbGlwSXNVcnBHNFZnSnRpeDlGaitzcU95cWNXYmpZVlU0UHVxbGRPMXg1OTA2VWhTOUxSU2piS2trK1BxbENabDJ3U1BWTWdvelBjRmVFZHNBN0xCQXFVWG9SSnhsZm1LUS9TNFcwRlN3L2NtdldLb3dNR2NYeC9aY2t5eVlSWmxuNm54aUt5L0JvckhoU0NrWmdNSzlsY2ZWSE80SjRDVEswb3RFektycWxwL1prZDFQQUpnd21BMG9yeXJqZTdtN1gyOVByVGtBSWNMd0d4bzVJbVprSlo0b1k1RVBzVHdIZVAwbm1GVkVXMTh3c1h3VmJHbE1RNGhVSWJvSDE4SFZFc1E2NTJ1VC9hd0d0TVkwR3dJd2dBTkJ4all3ZGF3TXhrMTRzcFlRRUdSelhsU2svTWo3SisvdkJZSEZnWnhoTnVYM0hzN005NE8wdDBRK2J4djhGbjliSWNkMjhHb08xQlhKUTZibWUxVHByT2tCMXppMWY2U3FRemxSSm1TYTNOdlZDbGdSQ2lkalZGNGRRbXBBVGRIYVh3VXhlUFhGY2JVUlBNOWxtakFEUWpQek5KSlgzditheWE5WXBDcGNBOU5QTUQ1TjFxaDA5REtzeEZ2MzRwejdBSHdjMVRmbUxsSTJyblQ5SGp1TzJlcHpPcDZWcE1OUFMrVEM1N1NmOVJ6OExDK09BOXRqZi9BeVdJdktUUHhuWDR0bVlZeDB0UHZlVzlNQVZ5d3VRU1cxcHhVbVJyNCt2dUhrOVhUd3c1NGF3N0FsTUdoRitZakltRjZNanRER2NIdlJOLzZYamtMTHJtbDdxSzR3Y09SVFAvZ0Nyd0dQaC8reW5mNmJ2OTMvbFh6L3o0S05QZnUyLy9kbmYvRGFDbUcwS2JRVUFtWW5nWjdGajFkOFlNOVlHR29WRElzeFRVeHBQd2I4dGhVN2hvSUpkRWw2ZFpFeHV6RS9UeDRIYk9wS21pZzdBSG15UkpSQitGTmZpcHdqQlZheGROZE0xckxjeWtQclVEdXJuTUpnYndZUVJ3Q2hMbDdrS3RRUzBqWHlnWXFPQUxqdXZyeUh1NjBGRG55Ynl6YTdiNENyN1hvT2ZlY2F0NGRIazlCN01jZ3pyU2JSdFpsNi9SaDhGR052WmRYVzdPdXBmTzR1NmVEQlY2Q090dmVtRC84Q1V2TDVNZ0p1UStmV2JsTXJhM3NJSnBxUE52SUk5amtORFVBREpVcWhjSVF4Z3ZPamFRS3FGNEdWNVd4aC9VV3Fsb1QrWmxNekQrLzE2cmdDSkF3TnlqT3NiRWpBdFhzSDF6K3QxSTZQbjNSUTBxNGpKUFpsYldVUmxzQ0FmNW4wVkx2L2dpSHdqVXZ4MXpaLzM0Mm0vOGVPSEVVTVZFTEVlOTc3dmcrNzJtKzdvVzcxNjA5VXJWNjI3czFEcytIZi8vRjkrTm5VR2dHZ3JBTmdvekN5Y0xXOVMrY2w0VGVRMWd3UUZ3ZEFZdDNWNlN1RFliUVBLKzdGaWdjbnBGd21CaEwrM1c3ZnlsM1V3bXlHWWphQi9vR0N0WTdBZXhJeTl3WHZSRXlyZ2lsVlkxMGNIcVpyaHMzRGNrVis0eU5WT3hjc0VCbFdQSG5MWkZhczV4WGlmUUVUUzNneU5pd1kwK3lFOS9qUDhzaEhiWStROG5IR2V0TXVsYVBGZkN0NVpQckRYNVZhdmsxUDlBVXNXV2hIM09peURrTmFJZmFKbGd1SXluRkdzWHhoWGczUnkwdFhPWU1iRUVvT3BGRWVHWE9ZUXJHWk1MNUlMaUN3K25jOWJMaVh4ZGcrVk1CSEY0UE1VVVhod0w0QXpmZzZNVCtJVGc5ejR0RzRpaWZuNWNnMFEyNEozb3dxRnZPdUdOdFBWMmVGT0Q1KzI2NFBFekdZRkdmUFNNK2t2eU51SGU5OWc4MGtpMG5oYXNweFJVaGcvTmVocTQyT3FBN1VBdHZVYWpLOVBmUFIrMTllL3dQWFBYK2o2NWk5eWk1ZXNjSVZTOFE5Ky9iTy9nOEVYbzcwR1FBYURhY3hQaGdkRGt4RURKWmg3NWhtZHdnQm1rbHJHQzRTTzhhWUdGVHZLTTd2QzZQYVZUZGw5bUxVWWUxMDFnUjlOdGRFc3dFaElnNy9heExpcll5Yk1vaUdKTE04VndLM2JhRE1nRDhGUmdScmRoS2twVjhPYVBOZGlMUmZBMGdkcUQ2c015MmtXSzNkQWJ0MTZWemw4SVBieGxpaFBXRGc0SThSSllXV2JnZEMvbFdPSG5WdXlUUDJkd1dDcVFkMnRUYUlPRE9jMVpkSXdleVFFTkg1OFByNWZyTzh3WHJnVVdvbjZlNVU2aGdvVnBjTVBiQ0VrR1pHK0ljUzdHRGZFeDQrbDkzYitSZUdLWVdIZVRnYmtyVk9HODJFalRuOGhqTEF4YVZvYzQxSXowTjBXMkRuVStxSFJqWStQdWdtMEM4dXBQMWFGUmZiRk5pdjlMVUNHOXlmTTI4TGp2emhPaGh2SWpOU0FNVXdvRkt3a2xwK3QvdkVQMytmNiszcGRaMWZKcUxQa3VydTczWkxGeTNvckU1UC90MDhxdEJVQWFnTWFnU25KNklIcGc1OXZHQk1HSmdqYUN3TUtrQVloa2lJT0VMTnprSWpaTlpoUU1mcHpRSVV3SDE4ZHluVGVWQVBRcms1dmhQa2d0RVZZTTBMZTFlTkhNV092MUlaWWR0bHl6T0J0TjFTVmI3YXYzMlVYTDFNNUtTd2F3VGpVQ2pMb0VNZVhZSmkzeXB3RSs5cnU1MmRjcVZUU3NlYisrWHhOZVFmUytGUWhUU0t0eW9DbEI2OFJuVHNnb2lUSlFSUW5ESzBpazFZTnhxeXJEWjF5bWY3NVdrNlFhZGtlYWtPMWMyaHZraVV6dXg4OGhMS040NHNvV0toZHJlS3RVVVVRRUJLaUt4NzdHQmFYUWR2bmVYM1VLeURFTXdzTk1yQ2l3ODdyb0oxRG1JNW9XeGd0c1J0MWhNV2VtVUM3aERhblhWRlpCb3haM2c3OGlYZTRqbHR2ZDEwd0M1M29OL1FMOCtONHowTnI0Q1B6Mmd0Z05zcUtlZkNYN1doKzh2S0d3bjFBSXNnUVBFSkMwaklJek1qZmlNdXRTV2hUQWdyRFZ1K0I1bmZYYmJkZ3pQQ0ZPa1pjeFJaTEJhemVlbER1N0tmLzVXLzlnYzFvUUhLYk80V2Izblh6SndaT250aXlmdDBhcUE5UVpYR0JxQU05QTZiOElnWTEvMEJ4ZUlMNEI5TVFhbVJRUjVqTi85SHFiZDQwU2VsVEJSTlFqdmo1N3ZlZWRNZVBId2Qvb2Vic1pCOHh6anNKNzVjMjNIbmV2a0lkU3dXMElEdDUweFl3MWFEdW5XdHpEV3BpRmxSbm5oZ01HWjdMaDVUT2I3dkNaYW42RDU2VStoM25HSU0rMmZLVUszRlRaM2hZZmh4b2VzUjFhZ0xDdE93V0xwanYzbkhETzkwZHQ3L0h2Zk1kTjdvcnJyaktYUW02OXRycjNkWFhYQXRwdmxUMTRhT3JCTzI2MXc4MU5yZG1uYXNlUEFCZnNBVXVadFZ1TGdjRDFKWU1RN3ZWL1ZGbU1qN2Zka1NUL3BsVnEzV1lLSU9CanRHdU94czVhQU84RTVEcG13OEJzVUJha21qaFlyc1N0Q2RyNzlEUFZrWmpISXlOOFhFSmxHeFByNlZEWHNvVEFqVFRUNExRSVNHL3dvWk5McjlvQ1pZTjBFQk9RN0R4alZEb1Y0SmpTUmNFc2V6aGFncWxIL1YzSUF3M2pUM1dFMlVwRk1EWXhid3JVcmhURzhFWVpwVVp4bmhoTXNzc1grbHlpeGNyVGg1TVZGaTR4T1ZRbHN3aUxHTlE3aHJibzdmUG5ZTm0wOXN6TDlvNE5NVDFiNDNaaFdldnZjRTVmeWd0b0lxeGVHN1BEbGlndGJCTlVkWVB2ZWNuM1oyMzNLZ2JXRWs2UFRqc1RwNDQ2VVpIemhjeTFja2QzL3ZPNHk4d2o3WWFBS3B1Smh0QmFudXJtYi9GcksrNHNUdWRKazBXbHRZS2t2c0ZVZHFFWDVLU2VTZnRFUnJhVm9PbENmUURjWVFFQXdSMkFsOGJBL0JBQzJldExEb2dCMllRcmNEZ0JXa1FZODJWWGJwY2d4YWp4N0tOYnFFaGd4YW9qNDJKV2NsUVlYRFN3bGVTMzNIN2U5MTk5OTBQcHI5UzcyU0lZUkg1RU5ENjlSdmMrKy84Z1B2b1IrOXpDemtRRmNiQ292NDhDOTRCd1VVZmVDbC9id1loYkdGbWovNFNkakdyWndRSmQvelZ1QVkrY3RoVmpoN1IrUVp1NlBIV1h1WFFmbGNtSFFUdGUwMGFTTWEvNG90NXhMRHJDbVFTQ0t3Szh6dHl5RldQSEhFMU1CQTFMSkxaZVIwc1l5RGtsSkxscHNVenY5bzZsVDlCSVFaNDcxQlhSUXRSbVEzOFRZdGtHR2Q5Rk1jVEl3U05VK01KeERpOEpValZ2d2ExdTd6ekpUZjF5b3R1YXNkTHJycDdoOHNjT2FDN0Jud1RsUlZUQldWbWdvb1JPK053N3hjSDBTOUo1bFh0dGlQcFZnbWpNc1lReDZVVjJYSzg4NVozMDlVRVpzVTY4SVVuVStYS2U3MzNORXNBWDREQVZDSXZCR0ptTXlGQWU4b3ZzcytDbEo3NUJnSEQ1VVFnZTV1Slh1cUF3ZGVPdURFamU5bnNWSmxqV0NlcmVWUWwycXl4U0drRVgxQm9ad0d6d2I0OWNNTThzTStJaDN3dzRGTzBhNmVyN3QwanhxaGlZTGNEcjBCdG9YYjJqRDl5YTU3ZFBUM3VveCs1MTIzZXNrM1hacm1sUlZtTXlFeGl5ZEtsN2tNZitvaGJ2ZHBPR2hMYXZPUkdJeE9BUXAyWklYZTQrL3I2c0M2MHR6d3BqRUZ5QWJCWXRXMm1sbGFIMlp3SG0ycmMvNERtd2owUXpzTDg2SVNJZGhDL1FrTTM2MDRoeVFHM0FEUGx1blhyM2ZMbEt5RGM0bjdocmRRS2hFaWRKeEpKZkNFcWxpektQMEY4LzJObHo2dkdhTHd6UTZGTW9KQms2bEJXUTZpRjFaVVVsb2I4bzcvUzhJY3VIMGN1Mm4yNlNKc0Y2ZllhaFRBUFIzSHZnOExwOUtER0tWWHdEQ1pLbG9nUG9oVkJmQm1KOHZId2wvQ3djcWdzOVBQK2NiRDNwelZKZkhVWjc4WkU5VFNVejU5VitSaUx2K3pibTdadmRMMllleHFwczRUSmhuRXdNYUZlMFVhZytiYkFqVGZlOUluQmdaTmJWcTllNlJZdlRpd0IyREF3WS9YZTNMTWpGRFhoRHBBdGRqWkFpYUk0WnNiWEQzc0JFaWErNDNhL3R0dTlocG1JOTJqVmFQcTN4Z3VkUHhOR01PdlVxbGdDS0E4QUE1dUhmeUNWZEl5V0E1RXFvUVlZL2t6OXhCL1VmakUyeXVRdjZVRUhTNCtZZkp2U21nMHV5L3UzZmtCVFZYM2ZlMy9TOWM2YkIwSElwN21ZaFdycklRK1ZYM1VBaFVkKzJmRnJJQUQ0L01Ja2x5aGdtbkJHbjh4TGNBL2hGcXhoYndWcEdYSDFOVzdMNXExcXM2RmhhRGd3bFQvS3dlY1ROTk54UTR6TEdlVEJ1eGRrVko0UXJKL0Z3T1Bzam56WkR5cWEvV0FHUlhvSTRiN0ZTOXdIN25pUHUvR2RON3VOR3plN0xWdTNhZW5DaDVST1FLUEtZQWxUUFhKUVpTUFlsdGFlZmp3bDh1TzFhcGp0cWxqdmNpK0EreElJc25ZZ1dHN2YyTjdIbDBuTkZQbUZPRFNZbHM4Q2NBbkFOYnlOWTA1QVh2WEh4TVJ5WkNIQXN0QzQ2bHhTblRpbU94Z3NJOGViU3NuNk0wdmtSNzl4Q0xGNUhDZUVCUUZtYVhER2J0cnN2elhBL05udDEzaEhqSkhEMExqUWQ3eGR5M0l2d3pMbDUrKzkxM0c3RWtQWFZRS2hhMCtjSEhaSG9HVk5RVUNOaloyZmV2cDdUL3d4ODJpckFTQS9GWWdaYythUFpteFNvMHJlcEFXa0tlV3ZSbzdKR2p0b0FJMnpQMmQyYWdCMjhNS0lIenFJWjN0cEFKd2w2QStUNjJqbUd4QUdra3k2T2JqYWt0VTVKa3NUUEhqN0w3dG1QYXdZUVFyeU1mQWprMEFtWWNDMUF6ZS9xTm95bGNXdHU2dXV1a2F6dVRFaXZEUnlNMjd3MUlEN3puZSs1ZjcyN3o3dlB2L0FYN3RISDMzWUhlWnRTQlhXRTBDdDU2YWJibVpDSk1jZzVxazdMRkhBVmRvdnVPZWVqN2xWbUpWZmVlVmw5OFFUait0OUNlTmc3TnR1dmNPOUYrdkdJRlNZWHFmZFdESUlHSzY3ZVpCSVlSQnMyYzR1UFUvQW1QVHpTUVRMZ240WmR5c1l2Z2ZDN08rLzhUWDMxNS83WCs3QkwvNmQyL1hxcSs3NjYzL0M5VjUxcmF0UW8yTFJyZmdweU12N2g3Wm1lYWdSMU02ZGxmYkVTMUlFaGV1RmEwZVFPMWprWTFtR0tHZzNqajJPTFk0Wm1oeWI4dU9ITk9oR05EN2ZVZWZKU1B5eFhVM0Q1Uk9nTnRsSVlQanh6K3ViQm12QzFLNW9ZMFRYaml6QjhCNzIzeDU4YndTTVVIUUIrWmZQbjFPcG1KcC82MVlzYzEyWTBqdkIxUjJnb2pjNzRRY1JpaVROVjJtckFXQXdmZUxVNE1DV1ZhdVd1OFdMRmxwbGtVRXowOHlXV09hMFh3b001MDlrTjFPK0RXbG9xaXdVVHI0VHJHT3NJM2JzMk9IMjc5OGZ6OTVBMUhpd3BCcXl3UlV3d3BrYy9aaDZLU2c5WU1sQVZkZEJHY3hNTWNPQ21vQ0FCbjgrbUpQcGd2cDk2cFRqRzMwNGFIaGI2ZmJiMzRQNlZOelUxSVFFSDZ1Nlo4OHU5N1d2UCtaT0RweDA0MWhiOG10RjU5SHBlMS9iNDBaR1I5ejY5UnV4akRabTVXRHY3MS9nVHB3NFlSdURLRmVHTHk3dDdYTWZ1TzAyVjRMVzhkQkREN3E5V0tLY2hpbzlPRGpnZHU5KzFmWDI5cnJObTdaQTR4bUJzQm1FeXI3SWJkcXcxWjA1YzhadHZBWmF3ckpsYm1sL254c2RIZFdMTk1tQStZMWJYQVl6NGJadDI3VlBzWGJ0T3UxVkRQTkJJQlM4dTd2WDNmeXVkN3ZkSjArNEhjZVB1YW5UUTBoL0hvTHJvRHMrTnU2R29VRlFqWDRQQk04cGxHWFowdVh1bHB0dmRWZGVlWTJiQjZFeFBEU2s5L2NSM08vZ0J1aU43N3hKR3NTcStmT2hoU3gzUThpTDZ1K0tsU3ZkZGRCb0J0R2UxRzZvY1d6ZHNsME1mSnFhUnFMOWt3S0NOam9MMUFJSzFIamc0TGhDSDdQdHFZMFV1SytEZk5DZ2ltdmp6aGdwakVIRjF4aTEvQ2VueW1wcm5pWGdzQkFpUzdDbVBSS3VCR0xmK3BKbExyZU9oNmQ4dWVtSDY1N2JzeFBMTVg1THduanpQZTk4aDd2amh1c1ZqMkFPSVQ0MWdNTkhqdWs5aXVpTFV6TnFBTjA5Zk9jZVB3SmhUTldLMnMzNGJRbU5GN3V0OFVqTVIrY01JRGwxT3hHTkhvZ3p2TFNCeEd3ZmlJTWttUHg4VnpDWkYyRWRvOStvMDBMSHhXNTJhQ1BCWHprRXNKZm9nN1NESisyaEhuUndRQ28yVzF0STUyQnVNUHU2amE0Q2RaSnBlQjNteTFldTFlc1ZQUWJNdXRML0ZHWit6dFNzcytXRWpKVTNmK3B1OTY1WE1adS9SQSs1dzlYVzhLeTlkOVZPSG5PcjE2L1hPdnk1NTM4RUJ1VWRCeXVnQmpUTTczMy91MnJuVFpzMnd5OHJacno5OWp2Y2h6LzhFWGZEbG0xdVVXZW51K2FhNjl4UGYrd2Z1Zm5jNUVRYjUwYk91WHQrK3VPWUpONnRzakxIZDkzOGJ2Y2hwT0d5aElLQ0wrRmNBMlplaWV0bklmQzRWT0dtMytsOHdWV1BIWmJnb3VENXFROSsyTjJCcGNJb3Y4UUU0WExWbFZlN2ozemtYdGZKOXhjQTczdmYreVZNcUswY1FydnhoYkx2MmJEZXJkdDJCYTVkYzMzeit0ejI3VmVpZlBlRDhUcmNnUVA3dGIveDN2ZSszMjFZdjBGTVNkSmo0eXlwbXB4dGI5b3QzNWJMWGZ0U3NhajFNUVVPRC9aMDl2UzZUajdGT1hEQ2xpWW9pMXBaRnRpUWpubDRwMzU0eTdZVFBNTzYwOHNDYVNHWU91SGhyVkd3UUk5QTVpVGxVaHZCQmpKOUhXUEZ1L1MvYVhYcWpJL3ZhUVA3TzREWkJyUVZBSmxzVHJuR0ROdE1wZ0tCMEJHTllVbUtaK3FrWDlwTlNpMEJwUHFENlJQTVR6VS9VdlZUUXNDWW4yK0cxU3psQllEYUJZMlpJbmFjeWpNZEJSV3VCVkJYcWRlTlovcERkTFZhQWduL0hOYnBUQXRKNXozcHpSbXowdzZTakdPZGk3b3o3czVYZDBndFRlVUZKRHZWQkVBeVJsMHp1bnp3dy9yT2g4UW5Bd3dPRHNadG9MaEUzZkhEcDV3cCtSVWxlNXlZcnpuRDdJSkIvL2tILzg0OStLVXZ1Rzk4OCt2YVo5aThlYXVhNVFZc0plYjM5YmtISC9vaWxpZmZGajM2bFlmZHloVXJzWlM1V25YNDduZS9vMlhKWFZnS2ZQTGpud0JUMytldXdTeWZ3N1hRaVNvZnh3M3ZlbkJwODUwbm4zRGZmdUpiN3RISEhrRWQ1bW1wd01wU3EvajYzMy9WUGY2dGI3Z2YvdkFIN3VHSEg4UU1OdUt1d0pKSng1SjlUWjUvL2xuMzJGY2ZjVDk0NXZ2dWthODhKTCt0VzdmTEpPT3oxbEg5RThUSmgyMUs1czF6MWtjOXRSK3hiTG1ySEQvaUc1eU42U2VHeUtTZjVjMzRGSHc4R3F3ekJTQXJHSDhRVjM4ZTVoVlpZOEJsLzAyVWFiajlaMUNJTHgvcUIzTVJOTFYyb0lJVGdVazkyZ3FBUXFHZzBjZUtKcGwwWmtMOGxFRHc2UnY5SWpkbmZpT3RwV1NTTVBOekxVWkJRT2IzZ3FDc3RUK1ozeGhmekEvR2p6UUJrSmdJaUR2S3pHVG56VVFDR28yMmlKZ1ZURDNVUW1DbVVWeW1ZWWhNd241bEJPS3VPNVlUZklRNEJBZDBZVTJ0OWdqbHc5KzVwbWNOa25zTFpoc2RHVkViS2p0LzdUQnpocEtFTkhSRktyQ0NhTGZaa2RmVUFNN1pkd1hZVGhRdUZRZ2t4dUtld3dSVVRYNXNsVmlKbVhFSVM0WVZFQWpid0dSa05HNHljdTI4QW1ITWQ5L2V2ZTV6V1B0LzYxdmZkSzhkM084V0xGM21ib1dxL2lGb0NyWTVDNkFjZS9lK0JyVVU2ajdMQk9MNURTNC9GbUlwa2dWRC9SQ2F5M25VazVyQnU5OTlLNVlONzBkWk1WTmpMT1FoaE1Wc3VONnhZOGVVSmZPZ0prRlZseTlNa1JmYnhyZXJxaTdRejdRQUVzY1pQVGgyeW1pVFduZTNxM0t6RVg1UjM3Q3QvWGkyL0hCbFBqQUVvWkhEdGZMY0xFVDcyY2F1aFVmWFN6aGlhN0JaV2N5dkdYWDBUVE9zN3doTGwzRnJsamNmRlo0SmJRVUExcHg1Wmh3emJZTFlJSkhiTXppbzFhd3V2NGI0SEdEQlR0T1dBSFNENFJOYVFLUUJpUG5COUVFTDRPeWYwZ1JNQ0FSaW5nUzdRTTNMenJwQUNyQk9ieWJlOTg2c1dlZnFmTEt0cDBkdng1RUpKb2tPc1hqaXdSWStBRk5GR2lGd3BZZHRHc0VTWDFZem85RGdyN1ErdlhZa05OaG9NUU9GTndJNFByaVh3YkJGUE0zby9jeGlkbDVuSVpZSUZLeFVrMWszcHVmWkIxNllmNkh2d29Eam5rVVhCdnE2Vld1MEQ4SGJmR3ZCakVlT0hCWURFNHpMbDV2dTJyM1RmUnNheE4rOCtJSjdlZDgrdHhUcjJSVytMQUxpV1pHdHpIVXdkQVdYNlVBN0ZpQmdidnZvZlZwK3JGeXp4cDFIM1AwUWpCUFVJTVQ0TUhoQWlNWENELy84ditVWDhzWWZIK0xpM2tWKzQyWlI0WXFyWFdIN1ZYcStQcnRsdTh0U3U0Ri9EWFhKUW12UkxVcWsxYmpFV0F5TWI3ZWxPVjZoOGlQUDB0WFh1Ukx5S202N0VyVGRGZmlDR0pUTmFnUFE0aDFtRFI3ZUUvQlZ2eUN3cnRabXJLM2gyRUQ4M0Vuc203eFNNOW9LQUtneUVxa1JnK05pWVNDa3FGRVl6T0NPbWIrWkF1TlRDTENoSTdjWVB3aUJKT09IV2QrRVFDQ21VVU96NWloM1lHb2pNUEFzaUFPWVpScWZHSXRvZ2labVJkckh3Rmg4ZjN5WmpNbzFXayszdlNLTEIyQTR3NUY0QnBOSGR6dTZrQ2V1cmJWaEtCZGIxM0NPdHcyRjJIUEY4Z1NUQ01rdU5hekcyamNGSk9kYU9VWUdhK0lEYm54czNGMnpmYnZyd2ZJZ3ZnUXRHWGNOQnpCVTlkMjdkOG1IN2NrK1l6aUtMSVMyRTR1aFhiakpPSVgrK09hT1Y5eGpVTmxKWDRYNi9jd3pQM0N2dlB3aU5KcHU5NDUzM3VnM0tIRVZ6S2FWeVhFM0FDMkNNN2ErdmlQVVVjOFZZaGhGQkhwV3JYSUxzUnc1ZjJyUWRaMDQ2cll2WHV4ZTJmR1MreHF1OGZKVFQ3cER6ejNqaW1SczFMUDg2c3ZTV09DVVBLQXNsSkFLRkFDNzdyendjSkUvczhGM0k1UjM3M0RsWFR2YzFLdXZ1TW1kcjdoeEh1elpzOU5WOXU3UjI1dzQ1am1XeFBBY2h4cW4xaFlFTlJCM1lLK3JJUzhlQmlvakR4NXg1bTFGTlNhSS9SMyt6Tk1qaENlOERDRmVURlcrc1luVmFTVDFVd3lXcnhVWU5ZMzRvbTBGQU5aRWV0NlR6QkFZbExOREVBaXlvL1J4V0tPQVFKVVRhVnU1WTdzMWNEQmo4b3dQdXdrQWtMLzlGMmIrMWhwQWVnbHdNY1RCeTN3bU1kQUNjVWFUT1k3Qmh6WGl1WmVmZHhNOENYZjhxS3NlUCthcUo5b1F6OCtmTzZOanJTcVgvdzNkTURESXo2dlNCMTNsUFRkdjJlcVc4SzA4UkxJSGZYZ0JndWZtcXhQM2h1VmYxeXlzbkZFSDhrQVpiZmlEQS90ZEY1anU3ZzkvMUYwSlZYbzVWTVhWcTllNjIyNjd3LzNFOVRkbzF0NkJ3YXMrUlZ0YkcrQ3kvcnFhV1VuOEIrM0E4bUFCbVBUV0ZTdGNQN1NiM25sOXVzLy8wWHZ2Yyt2V2I5QUc4blhYM2VEdXZlZGpiaE5tMVZXWWFUZldLdTc2MVN2Vlh3TjZrWXJOemx3NmZPQ3VEK29XNVZyTXZqOTEyM3QwdXUzWkh6MGp3Yzh4UVEyRmJiRU1iZjZUUDNtWEs1YUNkb1F4TklDMlE2R0N1cy95aVdDM0Q1NWlNbHUyUXJjd2RUd1pmYXFkZlZBR1l4Q2xZRWFXQmxKRWRlV0JKNDdYemg0ek5YYk50TGdaVjhTU0pvZjhzaGh2cG9YeHE4Lzh2cUd4RkdMckx3VkxybnA3cTRlNVFyc0hDc2o1OFd4Z3pWaFlrTXJydllEaGMzWXNuRWdrRjFobUh3MkliVzBGZ0FtWFJxWUdSVXljWlA3bXNKbVlYKzZVMy9SQ0lHZ0IxQUNpelVCcEEvSE1IKzhCQkVrWUd2WENDVDlXTHBwSjRpRGdtcDJERTVJWnNmV25Ka2Q0Ty9CWWE1Ym45d3U4ZTVDT3gvVStiL1hGL25aaTc2NDdQeWoxV2tqMDlDSUlrbzk4OUY3WHk5dVJDZkEySVc4ZEpzSEJ2eGV6KzFlLytxamE4MVl3L1QwZi9aajcwQWZ2ZGh2V2JjVHMrckkyM3RTZmRheC8wWDZzUHo4bnpVZFFlVTJXaW10cTVzOHFIangxMm4wYnMvOHlNTUhIUC82UDNTYys4VW4zN2x0dWQzdDI3M2I3OXUvVkxjYXZmZTFSVlllMytuN3EydXZjTGUrOHlVMUNhL3I2QzgvcjFwL1Z0UzdOWXhRTTk4RVBmQWlDNEtmRVVGLzcrcU82VmNsYmo0OC8vZzAwZDQvNzhJZnVjYmZkK2g2M0gvay8rK3d6N3B6Zmh6a3pQT1FHUVJQb2M3YU9XZ2lGUEhic3FEdHg0cmpMY0dPT2g1a2dpTGtSUnRKaEo4OFFSbmIySVE4eUJzNjRNcTdESlo3YVJXT1NtcUZFdE4wdHdESW1nenlsY2FBZUdzOW9YNm9oR2o4QlZrMjFtN2ZHbnA3MGF3RXBLQTJJcjJvTEpZMkE2K3JPaXJ3czdIVERPeHFJa0VMRmxNV2JIZzNPR0wvNXJ6LzcreTgrOSt4dmJObTB6bTNidXNXS2lkSXdZMk1RL3JQaWFUdWRjc25lNklaTkh1YU8wYW9Zc1Y5VWVPL24yNXovZEptRDhINVBmZi83N3ZrWFgzVGRHRGltenJhQVQ5SU9aOUhvbzZQY0JNT0FDQVZnbVdITlljMVhnZXJJbVlTM1N2bVpNNzA4QW9HS0dmK2trSmszeitXd1p1V3gyb0srbWRpalhXTitGRFJiS3JnUHZQOHVPd0hJSDZiM1pUeHpkaGdEZlZodDFvMWx4dEtsUy8ydU16ZWcrRjErWHFzT3h2aWhlL21sRjJHSEczNTVxT0tGVFZ0ZEJTcXU1WlZ4QzY3N0NkZUxKY3dVWmtUT3hCellPZW5PV1F4MHZ0VEM2VDcrRkw5WWhFRk85WmdNb0F4d2ZWNkw2K2NhNmdCMVN4dVlMTWM1bnB6ME14WHZKUEJ5L0toN045ZmFoL2REZTVvVWxkWnVjRFcrOVJoYXp5ZC8vbFB1MVZkM3V1OCs5UjJYNHlmak5tMXpFenRlVkRrQ09MdXlyaXk3dllMZCtoTWpTTXpLbWp0b1EvbU5yT2ZMbW95aXNjVTIySUIxL2NDSmVPTVdZQjNEakZnc1pOM0NlZDE2NFNmM21waVN5Ym1oV1Z1d0dIWEl1cW1qZk9FR2hZZWQyU2h0M09KeUVJajJJQmVFSlNjS0VMWFRzY21LZlpDR3drRHdaV21CVU13MDZLbGFSY2h0dThybGJuMi9keGxZenhOUGZ0TlZoZ2IxVXBBSzNKLzU2WHZkYjN6eUh5dmM5MWcwdzcrMFk3OTc0c21uTWE2SDNlbFRBeE4vK0I5L3F4dHRVQXZoeldCREl3Zk5nZzFrNm4rd2MrWm9DSXVJakI3YkZTNjN6YVF4aFRoR2JOQ2tGcURUZ09GdUFMV0F4Q25Bc0Rtb3BZQTBBbjhTVUkyTEg1cXRDRCtwUC9SR2t1QUZjUGFUSlFLUHNHcUR6SGR3MUluSmFPa2tFZW9jaEJoRWVpTlFBNFo3Kzl3UGZ2UkQ3eUo4SmhnTC9Ncnh1blViM1BvTkc4WDhoTXBwTmpyY2dkT24zWXN2dnVEOUdRSUdXYkhhYmp2Q3lVRlB5eEJtL0NOd0g4V1NoVzBWNXNGdy9vRDFHYU1LUEQ2bUp4KzVpWmtFMzNKY0gwRTlvQ2t3S1dmcHN6elk0NW1mak1Yck0xZWVSQnpEOVllSGhuV1FpZGZuT3B4UDl1VktIY2JBWkVSUUFldHBicEphT2ZHaktsZzlETEdwK3ZrZ1JabENuMk9KeFhjdTBoM0lZUUxncG1LTkI2TlM0UEtERWRCR3ZDRCtRLzJaa015cnNUaDRRdlhWK3lFdG1jdEI2OHJ6ZlpEUVVNS210ZDZXcEhGYXh0SVJBa0ozT1N6L0pFSzVBcVZCRCt1NVlEZEMyYVF4cGNIbENzdEJ3VzJObG5FNzl2cE5ac0JTbXNsUWc5bFF6OXdERHp3Z1Ixc0JJQW1DMUtiNkJ1WU16R3BtVWhESTNSQTN4Znl3eDh3UE01R09sTno5WjJPYTJ3NEJCWXJ2Q0FReXBrL2RGYWdrN2dLZy9EYW9XeEVqQkRKTDlFYzNtc2NHbzRVSW1JbjBFTS9KRTVZT2lCdlg0TDB0eitnaUhyRHl5Ymx3UkpkdWhmYUJ5YUJldi9UY0Q5M1RQM2dxTVh0NGhDd1NXVVdBMzZ1N2RycHZQdm1FeS9pTks1WmZkeVZRT0w2ZE53ayt5RU1CbG9kdzRPektzL24yK204RWdrTDdFSHdpancvdFpEQ29GVXlOZ3dJUXdvT2c4TkFtSEVlUmI0aW9yYUFaY1plOGZnYU1xWTA2VDhpN0J0VTh2M3FkR3hvYXdveDB4dVVvRU5GM2RXZ21VUjE5ZVNMQW4zbXJhSW9qRDduWjMzeXFrTUlaNmdnRGxUYTNkcDBkT2ZZZXZINmNLZDNVTHZqVUo0UXkreFo5d3Z5NHd4K3VVOTI3QzFyVUZxVmxuQ0kwR0c0aWt2bEpiS3N3dmxrT25tRW9UMDNhSlJxZ3k4K0FWbEc0ZjJRRlNxUFlhNjlyczdiRjB1d0V4cVZIcUNsSlZVRjY5WTJ5aWZOcXJ3R2dVb1JtZUZRc01IdmFER0ZzTUxNYjQ1UE1ibTRmbjI3YTVUYTdwV2wyTjVMVUxDOGNndVJOYWdsSllqNEdWYjJKVW44cUszeVRVV2pRejZ3K0VBTnExV294QlFwZ2pZc0JaSU1xalNnZFFVZVVPUURCVlJzK3JWMW0rWkVKK1pxdEk1eXA2NWpGbjNkZit0SVgzRkUrSGh2cWtlek5CSGk0NTZ0Zi9Zcjd6aFBmY3VXVHh5RkkrdTFqa1NoVEZnekcyWi9GU3hhUmRzNXNQTS9QWjlqdFBucXl4S0ZOUUN6cnlXTXFIK3ZKL1FTOTRneENPS29UNC9uMFNxUCtydXVkQkdVd24wSVZiTXNIbW5wWUN2VisrTnZmMU9aamJ1VWFWejErV0dPRVl5UGthNGJsbCtuczFIbytyb3JONGhwTGlvdDhEeC9VWVNzbTVFTkxQRzdNOW1ZWUlVTnBaQkdSK1ZGazdmU1R5dFEwWWZLclVCcXZJOUNHb0dId1FUQytyNkFHZTNuRTNnRklUWlFUa1drQk5Td0h1MXdQaEI3SElNdlhFbTI4cHdNZnJxcE9KTy91R0FvVW5PaS9NQTVQbkRydHpvMk91ekl1UDFsMjd2eDQzWjA2VjNQSGg2dHVlSVJmQ2pZdEIyWGVkLy85OTJ1V2FYWENRSGpYTGJmZU9YamkrQzM5L2IxdXdZTDVTbWpFTm94Tld2VG4vZGlvVVRqK0ZCN2lLc3pzRnNiNDhyVncvUWU3WWpTN2FjNUF4MCtjZEtkT25iSkhIK0VXdk5FYUZwaU13czB3TGp1Q0p4bUdyd1NySGoxcWJwQk9qMkZRNm9zODZJQ2tNR2paeno2Yzc4NHZna0h6NkxnQ3RJSEpvNGZjT0lRQ0J4TkJkZmsxUHRINDJoNTNGalBvS0dhZWM1aTF6MkxHNU1iV3dZTUgzRk5QZmRlOUJKWC92RDh3eEt3em95T3VnUFdwSEh5OFZwdEh1RjZxZll6SnFsRGJDK3MzNmtNZUZjYXQyeUJXZStHZmRaR2dIUnZSNjZqNG1DKzFIejRHclNiRmp3bG5DbVFLY0pzTitSRVVsb0hIVk10WU95dFBOYUsvUG9yRzY5ZkFSTmxWYTJUbm84QTExSTBRTTlIUC83RXVoYTNiZFE4L3V4d2FEcGNuWTlBVUJNV3d1ak5mYURjNVBxMEliU0svWXFXcjd0OW4wUUFFQzVaQ0Z0VXhwM3JXM0JUNmVncWNVNjd3WVNBS0F6QUsvQ2tJS21qandqWFhZeTIyd0Uzc2VBVXpmTVVFUUlnTG92Wlo3T3h5aTdGa0NIMWlWdzFYTnFSZE04Rmk4eE5mMmZXYm9OWDF5aDBCNDJmazRGNUlkUFlkeWduQnRXWDlkZkNlNTg2TVZOM0lXTlZOVE5hNVZlT0dzRVFjZ0REbnVKNFlHenY1OVBlZStLL01vcTBBdVBsbUNJQ1R4Mi9wNit2UjIyblViT3hBMmxJbURkcjVqei82MFROaHB6OHR3ZDRZdjlrT2twMStaby9JaHhrMWhIbmltMDlPUVJvV3dKaDBweEc3VXlFTjBjaU0zRnRRZXZRRDN3amtlR0t0V0pSNm5TVmhWaWowOTBFUzkyTnQyT3Y0a0pCVWIzUUVNdkE1TlVDakZRM1BNK2RYWHkvMWR4S3o5emcvMXBGS2s5RWRqZE9uQnQxUnpMcUhjZTI5UC9xaE8zTGtrRHVKSmNnVWxneWN2YWhlaDFHbHQvaFM5UVlUOEwwRUtMeHZFeklvaUNhSW1odEdOcGdVMHdSZmZjN3pBZlBuUTRWZUlpYlhzdzRMRnpxM0FFUVRkYzR1WDJIUDZQTmNBK3FyTi9md3MvRVFpaGtTMythRCtIeGx1Q3NXbEVhdlE5YzFyWEZSRXJzK0J5enp5a01GaHhDcWdxa2QycEp2R01ycWJVRCs3VUowTDFqa01rdVdJU1h5WWR1aDNXb0RkdGdvUU5YMy9jZTNGUmV2dm81VHVyMmViU0hyNCt1Rjh2RnRUU1RlR2NpaHZyVkN5VTBPbndGamNQWVBSR2JpR1FCdThLSE1DNWVnSFphNlNpYm5Lc1ZPVisyWjUycDlmQk1RaUdiZlFqZVZMN3JGSFNVOWo4QVRtbW13aEw2VEFBMkIyT25SNkdGdS9lSW51M1NGeTdBY0NYREp3bGVDMTdIc1JhT3FmZWREcTl2R1pZclhoam1tU0tjSEI5d3BhSDdqRU9qajQyTi8vNE9udnZNRjV0RmVBTHo3M1hjT25EaHhTOSs4SG93RCs4WWUrMUVtSTNoVG5hdC9DemQvczF2SHgzYis2VDlwdHhnTmR2Mm03WmFKcFoyQlRnNmdzaFFBQmI1dGg2bVpWd0lwUnhKeFhMdTFTQUdBaHU2ZkQ5VnlMZGF6UTVwZDVBbGk1MlJoNXNsNEdOUlNqY0g4dWZVYk1FZ0htcnBVb0NkNm54dGhwVVY4clZmV1RaMC80OFlnbmJtbkVjSDNQQTArOFVWbTBNWWJLR2diNGJ1SUdrMitubVJDYWl0MTNtdW5YMk1oZkw0RVArdFY0NWQ5dUtIRmwxeEEwUEJqSjFVUWQrbXJJTHE1ZWFuWkg5b0gxKy9VTFBoVUlJODE4M05pU2FKZ3BMcXV6NEloUDlaQW1sRlVEcmFiTHl1WnZyc2J5NnFqZXNjQU54ZjE5aDlvQnlKdTNrRTQ4Rk5yVmtlTWM3NnFqU2ZlMlA3S05zcFk0TXM3eU9nOGU4RVhvMml6TGhES1ZQZEVleFZhWW1ZWk5JWHpJNjdLalVTcS9OYTFhZUpWdVBlQjhURDV5c3V1Z2paZzJrQmx0Rk4zcllMWmY3R09NY2RMMEVZMGxKWGxUM2tGaDlWS3J1QUZ3WmYxVHdRR3NPOG5VWThLMmtvQ0FJVTljWHJBdmVjbmJyYmI1dHdURTAyNUlmVHpFTUxPOFR4S052OUhUejM1K0hQTWd3dkFscUJhSkJPWm1vckhtWU9tVi8yQ1AwMUpkVEtmeFluVy9kNnVkQ1J2ai9LUkdleElNNDFkMTB2WTQvVE5acExwQTZVZFNjUUJ5V0NmQmNXc1BSakNXMm5Ga3Q0TEdJamZ2S3RDdGVJdHBoclVQaklHdjVOWE8zblNaa3drVCtZcHlBUFhBbE56dHVMNlVnTmFTSTBHZ2VWZ2ZmamFMS3JNNW1kMURQbUdleFYxclAvcldQWlVkdTkwdVExaHNDU3Vuc2plckVoSHJRUHRacUJ2Q0RGSVRWNjczbFZlZXQ3ZUN3Zy9wUkZCWUltQ0cxclR6cGZkMURQZmQyVzJsekx3NUJGWlVVN2VEYW5zZnRVT1NHR05xKzhNMGd3MENjS3locmRjdVVTb1FsUGkyNEhDT0F2OUhBRmx6YTlaNXlxdnZLVGJyUmxvSVkxSXA4QU1mK2lBaEx1NVlrcUNXczNVQzgrNnFlZWYxZHVXa3pGVkZzeTA4K2YzNndRa0dTOElQVEYzb3U2R1prL0dTL3BHb1lsb1ZhcjZSTUtQNklDMnB3Tk1KR1IwQ2tMNDZaZWUxYmNLUmtiUFFSczU1MFpBUE1YS0NXWmljbng4UVUvdnd6NzVOSnVBZ0twSWhoSnpCZE1hUG1KK3o2Z1JzN2V3S3gzSjI2TjhaQWE3TVhiS3Jyek5Mak5waitLRmZCSW00c1FWOEpSQ0hKQ0trbkNvQTZGZTU2aCtVcXFqWVpHeDFNbzBFRm5YSXhFb0EyYStyTDZERnl0WUlWVEk1YVhhbG5lODVDcXY3YkpiYS9DMjBoQ3dxWjZ4V1p1WTBCdHgrS1dmdU0wUkgvK2hUYmp4eGxlUmErY2ZnOUp1TnphTW1BZ2FwZzEvRmp0SlpIb3lJUm0weGxkOXJWa3JmNmdmaUJBb0pPQVBrTndGOTE2RVJiTS9mVjNJYXhPOE14QmV2UjZndU5vd1FQMGdiQ3V2dk9pcUVCWmFPcWlkckszMDY4dkJkcFJXTW9tMk9ucElkekFzbzBiQ1R5RFVpeDlFemZPUUZ2TWc4YTZGcHh5ZjdhQjJ4MlVLNDBKdzg2dFJ0dkZHOXFtN0ZTdVd1eVZMbHJqQmswR1FCL2phK2t1bDBlQkJKK1BaVHlxWTFoeVl0enJNMjRFTWo2bHp5WEk3ZXM2SmltV0c5eVBmZmR3TkR3K0NUb25PZ01iUWgzemFGR1BtZjM3MnM3OW1SMCtCNlRVQURpd3dWQk96Y1FENlFVZVQvaEd6cCt5TWErRVd2OUh1ODJoanA1bTB5MHphSXpQNDB3d0R3OHdZWWRCWVNLQzBJd2w0Y0hPUDZpUjMyQUcrckpJemU2bzNFK2xRSEo5WFRTL05ERE5MUUFqbWw0S3JKNC9weUdzVktoeS8zWitGMnE3TzkzRUVPZ01CdlAyb0Y0LzZZNjhFNHpLZFpsSE1vRm1vZkJ6SXRZUDdYWEhqWnNpYUl1UlEzaWliMTIwL0VnL1g4Q1FaMTVFeTZRWXBuajlneEtmYnVGbVpPWDRNWVhtWEdZVTZqdnp5WEJJaERmTVRLWC83VkhrcjRsT0dnZVRHR3BxVWdZcFB0OE1Tb0FqdGh2c2lkanN1QitZTDVTTWhIVTJXRC9iZ3IveFJWdmwzZE9nRkhnNUxGdnBsUnNIVXBVNVhnR0JSbmYxbXJSN1pSVGhOSGg4dWxZcXVNSFRLZGE1YTVVcWRIWEFYWENmVzhwMThKMEJYcCt2WnNzMFZzSGJtK3dMME9mWVRSMTBudEN1bHk3TWNXYzMrZkJzd1ZlM1dzQTcwUEJ1NkU0aHRFUnE4SWljVDhnNVVBL0tvdDVhU2FBc0tKQXF3UXhoYnorOTZoUWQrM09uVDNBOGJnQlp3MXAwNU8zU3VzNmZ2UC9xa1F0czlnSnZlZGZPZHB3WUdidW5wN1hJTE1adUpiZlR2aHllWlQ0YTV4ZFN5MGpTN1lxVHNkTkptZmdwVGlxUmRrV0svcEoybXJHWlBtc0VmdjI1Z2NOQ2Roc3FvdDdLRU1QMTZwQnhKeEFGOHdLaUdXVXF2dytLcEwzWUFUNmhoa0hLZHFWa1I0S0RtWnFQTkNQSUNZTUVzS08xQnN6SFNlWEROcThNMVlLbzhtSWtkTmptTTlTaVdHZVdCRXloQnNuQlJobVpqWFZBdXZxWUtZbDJEai9leGVaOCt2MzZqY3hBNm5KakYxTWdYdWJzT1BwMkdOYUlZbnN5SDh2TVVJdU53aGd1TUx5YnpERVdHWVp6Q0tqQS9samNaYUI4S1E3d01oRXhwOHphWFFmdktqNHdZbUZFbUNlcTlaNDZRTHJvKzJxb0lCcXBqTUdlclBEdHZqeUhuQ3gwdVAzK2hjenF4Witwc05DTWpuSG1GQnVZdlZWNmRoRVNZN0d1Z21sT1lvdDFOUUNDUHNSSGQ2Y2dNRDVrZlAzR3VNSmFGWnlENDJXOElnVUxPRmRDMkhTdFd1Z0ptU1o0ZzVTbk43clViSFJaVnJnZy9QZWZQa3VFbjcycXV5TmUzblIxMksxZXRkRXVXTG5FbmptTjV3bVdRbFE3VWlJUS9ERmJGZkx4ZkF5ek1ReGI4c0c1YnI1SlhCR2FFc2sxZzdQQnVBTWNJUjlDUndaTnVHY2JwR01iZktOcjAzTGxoeksyVlgvN0QzLzEzMzdHRWhyWWFBR2RXTWdRWlNMTzJuMkhGZE5IczY4TzlHV1ovaFNsTmd6M2tvZmcrRDdsamU1USs4a3ZZYVlMc211M05BRFpFSUNIbENJaGp4VFowTXRTcUFnWkl1SlVtSUlBQ1FSdHlHSHp5UXBsNTZ5cmNEak95SGRncEhwZUZ5cXhkYjlZVEF5ZTdjcFVPQS9IRm4rWEtwQnNiSDNIajU0YTFqMEExdEIxWUpwbit5VUVlS3c0REpMdDhsUjFPZ3FEaGdJb0dGY3JPOTlqejlKb3hJNDhQbDhTRWdTbGpwazBRWjBkb0pRVnFGVmorTUswWWlrSU9xbWo5OUNtWFg3SEsvQ21BRklhclNnV0ZYWWRyZUxpSWJqS3hwZGUxK0lKTENJZ01WR25HUndTbHdYVGw4Z3pqSnA1UEp5aTl4WXRhUWU3WVZQMHdPL09GblJiRk5najFWdUZ6NTdRMFVBQ2pVK2lSRUFGRlFwa2dLQ0dzQ2xndkZ6dUtycU8vSHhvQUJFRGZZdGV6Zkwwcm5obUZOdERqK0VaakNnd0pBZ2pzQWxUK0l2cUEzNTZvbEt0UXI4ZWpJcVV0alVqNGVTdHFLMnNJYVU3bHc2R0poSWtuaVE1K3A0Q2JyeFNHYkd0YysrelltSHR5MXlzRDU4OE4vY1h3MmNIZnJreVYvK2tmL2Q1LytBdWZKRUo3RGVDbWQ5MDVTQTJndTlNdENCb0FRVWFVeVgvOXlJUzNHRkN1S0N6Mk4zZXdoM3k4SDkxMG1jV0h5ZElRMzJEWGFXL3kvWEJEUThPYXlZSmZNM3dhL1NiZ1BUaGdvVGRoOHVkcm5nRjFLSUVJM09sZnZOaVlrZjd5NGozajVNbkZxcXRBYzZoRGplUlpiVGMxb1oxMEhSc2Q0dHQ1ZUsrNXpGc3kraGhJR1hsbE1GdHJEWXUwY2NFU3d5RllvWXJyVVZUTWJMbk9UdTJTMS9oOWVKUWxTYm9OQ3NHUzNiaEZPL3RrU3FyUUxESWYvQ0Vzcm1kZ1QyVFl3Z2FrNFgxODFrRmxRWmlZQjFiT2lOeVFSRGxVS05RbElKa1BpeHVZVjlkQTRzTG03YTY2ZncvQ2tLbnk1V0VjRHRxc05nR3ozQnNBZ3hFcUM2NFp5bWV3TWNITXBWMVFZMW0vU2Q4bjBGTitQbHFJejJQQTFJNTRoNEszU1JuT0VHU3J0d0lYSUt4SzBBTEkzRzRTMnMwVlY3bmlvaVZnOEdWNmRWa2RBcHFDbTg4aFVKQXpIU2NpenY3OFN0TlM5Q2tQYlVVWEJtZ1RSVCtOU1BpRnlCNnAyQXF6ZGd5b29iNzZ0bVFDYk5mcTFKU3JvRXdvcFBxRFRUczhNZDc1eXNEcFgvenFuLzNYdjM3cXljZWZ0ZGhwdE5VQUFqanp0cDc1L1l4TE0ra09kczdrbXMxRFd0b1pSbnVjai9seDFtd0lhK1ZIRTJUWGFXKzJCNXZGS05pRTJEdENVR3RiUVFNVU13S1hBcnllbmtMRWpNYW41ZmhLTW5zc21lYUVHOXYzbXF1dFhldXlWMTdsc2pDcng0K2duS3dIRDVPQThjdVRFaFljWUx4dnpvTTBhVFFVRE9CN0JmaU5QdTVINkdPZFVLZFpkejlpb3RoS2liTHdGbDloM1VhWDdaNEhQN1pSa3ZuajRjVXc1ZFBWcFlGbkx6NjFPR0htTkZVZkRJbXc0ZzN2Y3NVYmI5YkhVUmhkL3VRUXBiRXNpR0JxUTVFcXZuYktLV1NacDJrS3VMQjloeEZoZVo1SFlGNUs1NjlQZ2wrVW1RRGhzWENSQkZJV1F0YVdNcVp0S0w2UHd4T0NlYjRyVVdtdGJEbVNzbE90VlpZaW1EbmYyK3R5QzNuT29ST0J2T1VMTGFKZVVkeFNBY3M5SktUV3NBQ3ovd3FVazh3ZkY4bnlOekxJeGJMQUV2c1NhVmNpRTRPUG4vUlZsTjMrN2tvRHVxaVJRV3ZqeDJiWVR0SndJRG16MmRyL2grQ0d6R08wMVFEZWVlT05kNTRhSExpRjc2dmpTVUIxa0ErTDdQaFI4OUh0UFdqYVlQUjJiL0pIOFdSVkpObERQTFBPenMveWIyOXkvVDg4ZEFhcUx0LzM3aE1Cc1ExSU9aTHdlWUhZa0dPYTVlandQZUxCMlVwSGc4R0lETk9HTmVMemxWRGdFcGdnek1BT25aSmZ2ZHJsdWNtSEFjU2p1dnJFR1A0b1BIallCSVZVT2ZYd0RXOWY4ZGdyWHl6UzJXMTJwaFYxUTRXRzZzOERSN2lNanVoeWhzYjZqOE5kRE9CblM4NmFQQWxKbFo0ellHN0pjcGZuam5GbHltVzZrUmVYQnIzelhKWnFOKy9IZytTbXlSbUdUOENCR1VOcmNFQkpDREIvNUZtNDRscTFqd2hsNHUxQWZlYUw2V242ZzFFNU1oVHpSWnc4bHlvSDlrbVFxem1abHhwVnJRMDMyZ3pDTGI5NXErTG53SkRVdExnMDBvRWVubkVnUWYybVdzOU52OEw4aGRBb1hsTzVJc1puNXI3a2NwZkxlbE5QRG5sUXVCU1hMSFVsck5zN2xpMkRIZW96Wm5zZW5tSjRqZ2U5a0FaemoxN0V3YVVaM1dUNlVvSExHS2pjdmYxUS9idjFHSGQ0YmtPWEpFVklPUUM0N2IrSklnUUhUTFBHb2NxZkpvVW52eEtNZmt1QzVlWXRTTDRxSElNSzFZOG13dFg5VzY4Y09MUHJsV2U4TzRXMkF1REdtMjZDQUJpOHBidXJBMHVBZnQrY0FBZHFaSVZOL3h6QTNoM3NGaUEva1NXSTdCYlgreVZOV1Z1RVJWNW1tYzZrQUJnYUhwWjZHUHlGaERXTk9DRFlOSWd3cUZJQ0lOVmRkYW5lSE9UWnZ2ajFYemxRT09DaTNYMHl3YncrTUtJTmRoNG1xZnFIaWNKK0IrMnFLZjc1em9ENitiTjI0RWlNa3JnbUJqZ3FKT0tET2ZuK0JSamNZRkpxSkloR1pyY1psWXpBYlFyYklDdENxOGlXTUtOUjh6aDVWT3Q0RGlTSHROeFU1RmxSTWtrR1N4SU5NQW9PTWlOdmZmRmF2TFNtU3lzR0xieU54ekpRS0RCTjlkaFJPNmpFNVk3eUJVSFlaS0haWktGeFpDcFZ0UTFmNEVFZGhXVVZjL29jalhuQllDZ3I3NUR3Q3p6MTRWT3VqcjdrUG9RT0ZrR1RxWndhVVB2eG9CTFg0dEpJMk43VUFwQ2VDSDJ1THNRUGhWSVdBcFdmTFhObm9EbWR4ZExwekNtWGc4bGxWSlhuT25od2kvc3cvQUFweWxLZW1IU2p1M2ZyekFQTG04OXlETEp0SUlTNXRFTGY4ZVV3QnRiQzE4V3NIcEhGQSs0VzRjRkxMdnpFdm9iZ2IwQnBSaUNVdGpTOERRb29kUGU2U2RTSGV4OWM3a1E4NGR3dEM3ZHYrYXVoVjE4Tlo1UWp0QlVBNzdqcHhqdFBEd3pld3RzaEN4WjRhY094eDUrRTNhNUIwK3dLNXovZDhtZndkSGJDdTJtTExXM0RaaktsQVF4REE4RGdVQzdtM1lDMFo4b0Zod1luQm9JRVFMb0hCRDdSeDhNcFBNVkdMWUJuNmtuNmNnelg4VmpUNjFBUWlPZjljendlQzBhWWVuV256ZlRVRkZEZXBBREl6b2M2Q3liVWhoN3ZQR0JKa1RvWXd6UHdJSnJjTE9PT1BEOVFxZ3dRbnp2NVpDS0NnNS9mSFJCaFpxdWZPZXNxUncrNnpMbGhVNWZKOEdKV1hBT3pyb1FBQlFNR0QrOGE1TmR0c3YwSUNncmt6MnpWSnNoWDJnRC9zQXppdXBrek1IZnZsUjc1NkxRaTg2R2IxeUlUd2MxYmlEelB6bzJzYUZjZHB1M013OTBGWVFxaFpsOWdOcTFENGJ3byt3US90bnppV2g3cmQ5UXRSNDFoM1FZSUNwU1YreXQrREZoWmtTZlNGelp1MXFsQUNpb08rRHpVZm9oaW56Yy9tWUdja1l6ZkNPQW01UlJmOFlYVjhSVDZ2c0psQ1YrVXdpVmRsVm9WNzl4a3Nlcmc4d2k4QmttWEJOUXE5a2RQK2lzd2lnQjRkK1NkRHVOZjBpK09Zdjc2NWZNWlhDcEN5N0l3QThjQ2hmSVVENlJCQzhod253Y1ZBMTkwMU9xNTFjTzdYbm5BUjQxZ282VVZ1SmVBdjNnZGJvMHZPeWhhMjZ0RGZCejZhVmJ6WVQ2TnJkOGI3VGI0WlliMFhtcWwxL3dNcHprOWhaY3ljRDJkZ28ySEJPaGhuc0VXUlVrNWtraTBNaUIxSENvMFo2V0FWQjRKY0kzS3dUZjE5Rk9ZdFFZeHk0SVprdGtoUG1xS1RESFlvWjd5NVJYVFFVblJ5VndxNkxncm1DVUgxZHBDZVBHNEFOellLdkhzZXdYdGNuQy9CSlROdEdRc3J1ZEp2RHRBSmpRN2wwMU14N2ZkNUtFMlJ3TVpQN3AxaG11VENmSlF6OHN2L0VnbkJEbHo4dHQ0SVQzM1Q1ak84aVdqSXdPc2tYZ0h4VTdvbGRRR0ROTVNoZldCc002dlhZZjErZ0V3bU8yL01FOHJieWl6bWFGSWRGTjRhSTNQalQ0Mm8wSklCdDJLUFF2aEJJRVhuUU5nK1RqMDJmYWVtQ2tma2E2ZU9PcW1vSEZNb0wzNFRBS1AwNDVERUZOMGRQRmhuR3BORzhOV0RpT3lVZEl0UDVsV2QvTkx4RW4rZVQvOHNCQXNjb1JHZjdQNk9NLzlnQTZqRUEvRWcwRkZMSXQ0TG9LZk5HUDdVTmlpZS8rM2pmZmNmNi9TSnVCemE4YW5mdkV6di8vcWpwZCtnenVrQ3hiMDJiQWlVOHBncS9HZlA2Mzh6SlNmSmVOdmsybi93UTE3YkdGUWsxdXhaV2xPa3pSSFJrWjFGNEF2WnFCUVlQd2swaTZneVFNTmc0WmpxK2wwVjJoMEF2bm50bXpURVZMTzVPekVBTm5VRVhJeUU2eVZyM0oxekNnOE5KTEhlajYvZVl1cjduaVpOWUJDWUErZlVOanBnUmZNWURwM0VDRnhYWUF1VWhhTTRqQ29zNlBudGN6SkwxMkI2UXRNeENQSVlDakc0cXpaMDl2bmVxNi8wVlZlMiswcVVHbXJsVW5FTjZha01BNkRUMjJIZnpKamdiZm93SUNRdXk2RG1iVjg4cGlybklHcUxjRkFEUU5wVnE5elpaNkJIenFsNmpLTXBqTGhQNWlkZ2x0YURqMVFIblVQTjBxNExJSmdxYjltUjNyRDJ0MHRoRUREMG9PZlgrUDFzMUM1MlFYaGlVenIzN3FiZ3NiQzd6L3dnbndGZXZpNkVoL1c0bnNaZVFyU05xYlI3MmliNHBidHVOWnVacUMyeTBQb2RlVFphNGpESFBIRHVwWjZ1bDNudGl2YzVJdlB1Y2t5TkFtRTZaMkVZRzYrZjdFSHpGK2U4bmVFQWxndWIyMkVScXdDRXpGVUIwTVkwUXFQdk0xWFRaa0MrOGxiQVZuaFVYL2ZoMTFtN1ViNUpjRzNQWjNaOFlLclFqRHo3VXNWYUY5NjNMbFdPNUlwMXEvYTk4QUQwYjN0NW10NTNQK3pQL3VmZHI3ODByL2l0K3JaNkJGUWliZ2FIc2s2QkZzaVVpcEZjM0F6ZkVOTkd5ZWdLV3VzMXpCUStTUmZpV2YzSlFBTXFmeW16WnlEbHh0NTJTWUJ3Q2ZoK01SYUJUT0U5NGthTVhTTUFJTm42TGtNeUtJamloQ2ttaUZYWXJaR2gxU2hEVkJyMFJPSEdUQXYxTlNwblh4MWx5OXZWTDQ0UDlyNHRGOE9qTWt2RWJPZU9USSt5cHJmdXQwT0FrR2dFQlFBL2R1dmNVWGtyWWQ2T0FDd0pzOVRBSUFKOUI1OHh1TjJPQmhUek05VGZqbW85WURlcXdpR3pLeGJqMlhMUzVwRmRGY0UxNjh0Vys3R1hubEpUQWIrUlRRVEROSUEyWGYxck9wbVRVRTNUUTVpZStGR0Z1VjNXTDl6aWNFNDJuTUFvMDYrL0tLNFVlL2FwL2FRNGExU0V3QVVrclJJRmVmeUJhNU9hR0o4clRtdm5lVjkraTFYdVBJckwwajRzQ3pVQ2pMKytReVdpL0tJdC80Nmk1d1ZUZk9rQUdiWXZIZmU1S29RU3VYekkrN3NHRDh1VTNlbGpwTHUvM2VVU2xpWllibmtZYUprZXFpNFZuRXp2VHY0K0FpMDJHL2tib2ExSStISG1uZlhPUmJ2K3prMGFGcVJaMDduOXUxeFl3ZGUwNE5DRlgxdXppK1A2cGxQN0h2b2djOVpUSXhSYnpaaDY3WXI3anA5YXZEZEhMam56cDEzZkRLT2c0S1BSL0tydWVRckZsb21TNlR5V3lkVHZkSlJUa2h5bW5aY2xBekErNjAwTWRDZ2l2RStkVkRMZEVJTkExQlVzSVl2RmpyRXhNVmloNmhVNmtSbmRKclowUVY3bDJZQjJqdjVUamtRSDhqZ3VvKzM0VGhnbXhxMmZUc0RpVUNPYkpEdEFmZ1dSNzZjYVNwN01LTkVjVnNMQU83ZWMxT1FhcnBVVlF4b2xzdGgvVnZZc0VsUDRHbUpnemJseVQ0K0dNU1hqRGJENXc2RE51NlFWL25DU3FaTHFOaGN4L1BZYmwzdnFVTmNETnF1TldDMFk3aStHSTk5aFpXdEx3dTZVWU9jd2dQczcvdURxam1HaE5vTXZRaEd6cUJmcUZMbUo4QjA2TWY4NW0xdVlzOHVWK1grQk9PaFVEcWVpMnRRMk5JcnREbUZrRjFYZ3dRd2Y3N2hwclFObWhHZm1VQWNNbXFGVHdSQ1MwR0xNRXZraTdTS2JFeWpmS2toY1NEREpLenVGc2k5aWlvZFdCZHozeVhmMTY4eisveCtRNFV6T1pkZUNJWlloeENnSUlBRDErQjQ1VmtBZmdSay9PeDVOekxKdlFvZUVlNTBYYnlEZ3pncVA4eEEwb0ptSUVUMGR0bjQ0OU9hMjZKNC82VGJvekd2ZEJ6WStjYytnQUIwaTVmQkx3M2VxVG0vYnpjMGdBblRaTlEzRkl6dTFUTjdkbjdUUjFQT0xmR1BQdjZ6dnpjMGVQbzN4OGJPdVRWcjFvTVo3ZmlvQ0kzR3djek9TNjV0V0RnWnl0YnNTZFArNVlnZ2Q5ckxJNlJMSXZhSWJNMFd0K1BWRjBVc005VkJ3Y1plRzhTQndhYTEwOUxsN3NTdVYzWGZtdUFPTlY5SWtWejdoK3Z5VnpaZjZEelVTYTI3eDhmQVhEa0lNTk1BMkU1OG9DaXpZSkdib21wT1FibGhpNXZDakJvR3RoQVZDZmxabHZZUUNnWTRuek5nSDJqZHpmVXo3SXhUMnJRTlN3T2I4ZmhSalc3TVpDWE1jTHdtRHlkeDlnenJhakVGcmtjaHlmUjhqcjFZN0ZSY1kxcUlkZml6L2ZqaEMwZlZ2SGVlcTJUcWJuVGZMaDFlNG1qaXBVMXo0TEtCQTZ5T3ZQbG9yV2tBYW4vVXhWY0I0TmpKdUs2VjYreHB3TUhqTHJOaWxSdDcvb2ZNRHVuWTFoQkpFQ3JNZ0M4cW9WdGxncjJDWlF6WDVZUTJBVkYvcnVrRjJFdlhYTyttWHZpUjY3anVIVzVxMXc3ZHlxTTJRSEM4OHRodmJ5Zlh4bUI2YUQ1OEVRanJXa2RGdUh6cUJPUGJlLzI5SUVxVVBJYjNTd1dsNDdHODN1Yi92ZHY3eXkycmR5ZmpONkNSUjJSbDR4S29jLzN1KzUxcitIeFlCY3ZUWTk5NFdKdkhmSTJlM211Z2tNeC8yZi9JRjM1VlZtQWFEV0RyWFZqTDNjSkhDcGN1WGFaT1U3SFJNT3dVZGhRSEZVK3pWYXBUVUtWSVdKOWh1YUJETU9VSkhZU2h5Y0V5T1RYZWdpYmNCRXgrRkpNMG1hSXgrTFdncVJaK1NoKzc3YzJucHpDNEllK2Iyek9CT0RBVkRRNTdUMTdHVFVJSWtLSFkwTG5sSzdSR2JZYUp0ZEF4dkYrTkVhYjcvZVpsZ3BOZ2ViUjNzR2dKMUxNUjNkUGxNL2VVMUtteUtrUDhLRk96YXplYng0c1JVWUtFUXBqNXdxN280K091d01kVk9kTjNkTHJDbWJOaUVqSTR0UTB5UFllQk5tb1JoOFNCeC9McDRGUFdubW5nUmNPTXdUamNQUytzM3l5TlpuTFBUbGRHRzFmUjMxcG5JejlxY2hRQzFQaXlXSEp3cWNHeG9YQUpBTk1DQWlQeVd2eTBGdzhHOGVUZitNdlBTOFZtZk52RXBick9vV21DaTgzQXZsUTlrQmMzRGZrd0R2ZDQyQTYyTVFrdEV2bFdCMDdvTFQvWjgyZjFYQUN2elNVSzFYZ0tPMVRkUWV5NU1vcENGbWMvVStNazQxUGJ6T2tPQVp1VUV4Qkp6WnR3SnlqNm95YUN2NFl3L2N1dURHWFM3WU1pTzM5b0RmWWtKZVBFYm5uUTVmaHRBMmtBRFU5VFV1TTV6MWV5UVJnYnovb0FsM2thR3NCajN0RmVBS3pmdUhGTHRWejVFUG0rcDVjZllUVEdGL08vbGVRSGJwbzRtOFhFVDFHZlBzMTd4SzBFUU93eFRSQUdCaGdCZzNSa1lFRFAxbXMzbjRkWUVtdkJHT3dLL2dLNEpoL0xaVndPZm1XSkFER1RsazYyNlZmQitqZUxHWnNxTmgrelJZQVlJQ292TEpvVlBQRWtHMS9DVVlYNkxIL2tyQUhBd2NBb1NLdjc3VkFKZVRTMnZHdW42OENBTDRJNW1aNTdPZHdNc3V5WW5qTWkxRjh3THUvNUUvYUtjZHNndEZkek1WLzhRTlhrWVp6SkUwZmQ1T21UYW1QR1VWMFFqOHUxRWdRTzNWWGUrZ01UOGNrNW5VTkErZmhRVmhFTUdMdlJSam5NdnFkT3VNbGpCMTBlL2NxbjhNaW9lY3pRdlBWY0xNR2VCM1BEVFdiWDNRVzRDOUNrK0lWZ01yL2R1YUIyWlhteklaZy9uOXpUd2daOXlQZ00xM0tUN2NHeUlxMitCb3kwQmZneER6YWprZTlMT3N4bUZFZndUbXQ3dGxkTE8xTEJ3bi9ZZlJwNUtVVCtDay82ZVh1U3ZHOGlYbkREREU0dTlmZ2dGY005MWFEWm5JZW14cVhSUlFtQXRldFdYNDAxMXoyVTV2TjZ1OUMweHZ3UmFZQmNQSkdaVy9rM0VhL1RSSnhkakZMTUQ2bEhrOS9ENDBFZzdZaEhGWThzQ1p0SGt3Y25jREFDekpIaElXMVNaYmxMelMvOFlJQXJBQzFLUmdwTWFpWWFtbzJQbVZqdnJoT1RzTHpHTExaK2hSMG16MjdyOVdHSXF6Y04wWSt6SDFXMWhueEozTjNXMjNMb0Q2anZVY1l3Nkt4UXVQYllpQjRDeWtLajRMNEptVHpjNG1OYXhpenFrZGNPTUEzRHFOeHdENERxUG84bjg1bnhNdVVZNUIrMU5HZ3BHV2g2cDQ2NDJ2blR1QXEwQWNRbnd4YUxZQ0F1YlpCL0ZWcGdyY2JkK1pwblZnNHRIdml4MTJSVElMQ2NaRlFKQXpBZVorMFNCRkFSNGR6djRUNEVUYzdJdXRXWTV6NFFtZGZJSHV1bFB4aWMreEVNWTF3eHNXa2hqRytQUUVOamdIL1VOcHpaWVkvYkNsNnd5bzkvTUxsRVlBTUZ2OGd1TjUzaHo3UXVVaFRPZmdoLzNtNy9kQ3V4N1A1ZmFRaHZSRzRMRGFhUndrSjhVdVJXN2hJQWRRcUFCRGkrenUvZERRczFLNHdoNzQ4MEtRRmd1YmJBTGJmZi91bUI0OGYrbE04NDgxTk1VZm5pbkdEMURobmVsYlFUc0tUakdScjk1TFovdWRLR3R4REpPRW03TnhoWHFpS2NIQkJrd2dBZkswYVRSd3hURit2dUpOVHowclUzdU1yUnd6cDZPL25TYzY3T2R3TTJRSDBTTEFHK1BPd3cyeEF6Yjd1ZmpzR01tYXdEMmtYbTBBRU1ZcXJlWkZJTEQydDdNcTBOWnFybzFHaTRjV2ZyZnc0MENoZmRDa1I1SmJSOE9HSGFrZTBCMkxWOVdaQVB6WEJlZzR4Rnh1TmFrYkM4d01DSVExQWRWM3RRbUNFZnBtV1pmSTFWVHFyU0RMY0l0cVFnR05kYmZIdnJSOWUxUGsrYUNvakNhTktOSHlRM1FXZW1MWDFpditEdkdTSnA4dkxJZ2t0VVc1cHdmNEpyWXI0bEYwSVk0YmFYWldrc3IxQnVFa0VQL2lmY01zeE0vZ1kvS3pjTks3ODVmWjFtZE1mWkdCSlhpUHg5YWZCVHYrVjlyb1lsV2hKVG1BU1BmK01SYlE1ellxa2lYN3RTNXRjT1BQS0ZQN0pZaWV3YWNjMmRkM2FQN3R2emZxN25pMTJsZXV2SFltSlVLdHlEdFU0UEtKV1FUaHZ4eFRNakk5QWRwMFZKLzFRM014MGRhZ1c3SVRVOUppWW1mQjI0Z3cweEQyU3p0ZnNtcDhxL1I3WFBiaDhsME9Cc0RUQVJHUTZNTVlxWnB0UTN6Mld3bnMvMTl0c0RMY2NPaXlGaUJqV0c1cURoNWN6dE43RWdmV2szTlJQeG1UZE1JakNvZFlNVkxCN2NYSWQ3aGlORHd4TGN4dUJXYlY2ZmNaVW5ld0RsSXZOcFY1K3pLTnlhV1l1ZHNOT2Z3c0xDK0VXamtMZitXQVRaZ3dtYi91V2phNWtwWTlaZ2ROV1FlU290VFZxU1p1eXZQNXBCZUN2TWR6UHFxcUVQazM3bVM3ZVprVHRBOFdJa1hieEd1VExocGlaSG9lbU0yZjVWZVVKQzFRUUFrNGNVM2d6WE40Zi9iNDVqRmJKNkVIRTlXL3VaS1YvK05DRXVSM1FWYjhFNGVmZDdYWDFEV2dCTURKMTJKNS80R3Bhc2s5RXRRSXdVVjh2VWYvbmd3dy8rTng4dHp1dHl3dHExcTM4QnM5dWZjK0NIeG03VHJnMklJekh0c21Xcm81a21ERWE2eVdUTWx4dFU3R3pPSUZMdFFjeUJBOExVZjdvc1Q4YlhialBkN0F5NWJRWU9jWmtmNzU5cjNZMmVZZWRZZnJ5TWZxT0JRRE5wRCtYU1pwNlkzb1NPN1BRWG1kdE0zZzNnU3RuSzFvaklwMFVZb1hxWUpZSlpXL25Eb1grcnQyeDBSM1p6eDNhakFGOU5JRjNuQU5YQnJCRVVxZ0Q4eEZFaldIZzZ3QmlaaDQxTVc2REFOYUVKNGM1eDRHUHBWMmw5ZXRndHJSem03Y3Vmcm1Pd0s2VEJMeGsvUmtNUjdUb0pQMW9yTjkvaEhGOEhINEFzUm80ZGNhZCs4Q1FDWXdIZ3hlay9PZkRJZy8vRHJLbXNMaDlJQU5RZ0FMREdGRE5OaTNSNGNIR3ppTHZpL0JZZlQ2T0pPZjA2UGR6YTRvODNaa2FyanB3SlRWRm1sVXBvTGhKOW1IcW13czcyQ204czNoNmxNRkJZOG53Snp3WHcxVis4VzJBbFJIK29vSTEyUTVxNWt3eHZZU2wvOWt2d1F4WnhMb1M1R3JJSGJEeVViN3JWWlhnTE9JR3orL2E0NFJlZmhRWXdnVEZic3lVQUk5ZXpkeHo0eWhlZXNGaU4xN2xNc0hiRDZsK29URmIrWEQxaTdYM0I2T0lHSGRKcTFsWkh0Y01GTnVFMDBXZlAzZzBJeVdaWlZ3MjJscmpvRXJ3NVNCV3V1YVJ2UnRuWmNyeURNQS9Md2I1NTgxMVBONWFIMHFRb0FJeXNKRFp1VWt3ZWlMbEVibXFOd2EyWWlKL0dUUFdhZXVmTnp2RzdGUW53Sk9Ed2l6L1VIa0NGUzAzbWpZeWd4MXk5NzVFdnZ1eWp2U2x0OXFaajgrWU52ekF5TXZyblZIZTFtWFVoOEMxQ0RZQ2R5dWYxclJObmlVU0x2aDUyU2c2RXR2bWt2T2xvS09jRkZQdHRnMWszV1RKaXU0ck9Pck1JczBtUjdKdFNzZE10V2J6Q0xWdTZWdThSREp1Uk1jUEh5N3lrYVJ1d3dTLzJWMTNBcWMwMU1oOUZTWURPOGV1dWRmVU5HOHpENCt5KzNlNk1OQUFLQUN3eEVSRlhtQ3JVZWhhLzl0aGZSWThGWDNnTC9SaUFBdUQ4eU1pZjIrdXZHcXM0dXlyejVKN2VYUWVaU1VGaVNMZCt5cFYwK0V2UVNLZG9nU2hDSEZPMkdSTVN6WkhpdE9td2R2N1RJWTZaU0RQNzVHMlJMc2JGWnNoMG9ZVm4xNmZ4bGRwYzgyS0xBbkFQWnVtU05XN0R1dTJ1RjlxQmJ2MTZ4cmE5SGpQRitEU1Rkcy84SmdSOGhnbWt2QklPV1pGZy9McHJJQUQ0dllJWUZBRERMLzBJTEQ4QkFjRDFQMk5uamg3NHlvTjhkRFRDN0ZydXh3d2JOcTM5MU9qNXNUL1R3UmJ2ZDZIZy9lMThqczhsOEJrRWZ1NzVVcU81WkpIUG05b3J5ZUdWdkhCcTJLWFFORWlSTEtSc05ZQXZESTNsZWQwWnRvVnlqbjlTc05rNFJuQ2JFWWVGV1R2MnJydmx5OWE1VlNzMjZrNExsNURHNkhiSEp6QitMQlJDT04waDMwU0RwdEJLRjh5NDhXdXZjclVXQXVBTUJVRFFBT0NIM0w5MjhDdGYrb0RGTUZ5Z2Z2empnWG45dmRlWHk1Vjd3cTJ4WnJUMFRJRTcrM29ld0M4alRFSmZJdkovZnNSNE0vWnZtZVpTazEzNGJRajJqU2YrKzNYMW0wZDIxNGN6ZXByc3JrbTRneEpUUGpxSG9WdXNtSFRHSjBiZDRPbGphR2NlZk9yUUpySjljWmduTEQzVGk5RHI2QWpyQzF5YjErQnhhbS9xSVN2bW4rVms1QittOHdlaDdPM09QQWhWZEpPTDU3dDZmL3BaZ01taFUyNWk4TGpqUjFwdGRLa3R2M3htejZ0ZlZRU1B5MUlBOU0rYnQ3NWFxWHljSGRrYW9VbmFFenMzdkdHSEE2QWxFMTB3SWVla20zL21tZlovUTZtaERFbGkzVnY1ejRxbXlmZjEwa1dWUzBrdWdscmxGUk5pTkZNTGY4N3U1ODRQdVluSlVkYzNiNUVZT0JZd1NkTklRb1orTWtONGJOZjJIZXlTaWtJd25SdWIxK25xL0lockF1T25CdHdrWHlQdU53Qjk5RDg1czJmWGk3SjV4TGxjUmxpN2R1VzdKcWZLVC9FenpwVE8wMVpTamRvTXZnaWxVT3d3cVJ2dEFjd1dsNmhaRzdLWlhhNlg2Tm9YREZ6M29zcjdabU9hVXZtZzlqR2FROW9NSDRGOFIrSFEwZEh0dG05OVIzUXlOUllvdEN1cUljb3JtV21yQzhEUE1wZjE1TXJGcnJvbGZSRG96SjZkN3R6T0YxMk43NTdndFZEUWFpNS8xZUdIL2k3MVd1Rld1Zi9ZWStYS2xadnJyckw3L0xsUnltTHZPeDBnWmIwdFlGNWZyK3NvZFV2Rm8wbzJPN1Jvemd0bzRVdlhHVzlndDg2UTlZVmYrUTBzNjhVaVVTU3p6cUtNaUJMSGpjZWM4V25kZFhmMXV1dXZmVGVFUU1IOFBlY0hUWURwVEJ0SWFnWUp1eTdRWUZjT3p1M3N6cnJSMVd0Z2kwZjdXUXFBWFMrNXFnUUFQREtaa2E3dTRzSWREenlRT3NjZThyamNrRnV4Y3RrREV4TVQ5K21WVXRPZ2RRUHdkVm85ZXZsSUZ1c3ZxbWR2T2xTd2krdWV0MCtuWG1CSjNvQ0N6ejdMaXl2cjlLa1k2cGtTRE4vUjBlbldyTFROdXNDb3FmUmc2aVNNMFJQMkNMU0hISndiWHJmT1phKzYxcnNBQkozWi9Zb2IyYk5EajFuYkE5YVp2ei80NkpmdXRBZ3gwbGU4ekxCaXpZcTdYYTEyZ3h4K0p6U0NkNWhodjVDMy9abGNiamwzWkRzN081ZTdldloydmNtMm9XT1N1TkFHVEhaODNJVnZMSnJMT010U1gwRGwwZ1AwN1FaZnRsa1VjZmExU01Sc2JZMFF6Y3N3K0ZRa2x3S3pRM3FFeUJWbEZlZVp1ZklhMTMvNys4M3RjZWJWVjl6bzNwMnVVcW5ZSFlCczV0OGZmT1JMdjJXaE1XWmYzMzlnMkxadDI0ZkhKeVllbHNvMmpRQ1lIcFl1bVRyZHBhMHdjNHhMZy9aMXVyRGFYa1RiWEVTU05Cb3pZSnZGZnJQSlBwMWlHaWpTTFBPT0FzMFN4NDFWYzZyK2ZCK2p2YnoxMHFDMC9XcTM2QU1mOVM3RG1aMHZ1OUg5dXlRQTlJaTZxOTk2Nk5HSHZ1dURJN3dGdXUyUEIycTFLYjU1UXgwWGI5cGNLSEdUSjAxdVJzSVZtNGlGdU5TRW56WVVsWDlXZjZqWGpOVHdsN3pHUlZCam01bC8wdDFNZHRqR3pFWjdJeVhUNmY1OGdwcmpKc3BXQytUamFnZmU0dUJIeExtRXIwd0w3a3RGeVRJYTJhUFpDQ1hHYTkybEg1azFqY3Z5TnVDbHdJSUZpd3JsU3ZsWGRRdW1vYkV2bEZLRHBKRlNmNGpla3Q2WXYxWlhTaEhLTjN0cVNKNUNZK0RybzhZLythTU1MZHRYak5yZ1J5YU4zQ0U4S1V3OEtWOW03ZTBFN0VSeWRrOVJGQUM3dkJKcEVjWmd6c3B5WHJSbW1RWS9hZGE1WVl1dUZXaDg0SVFybngxUzNYQ2hyeC82OGhmLzBrZFA0ZEtVNERMRTVzMmJOMHhNVHV5dFZtcGF0eGw4YzdWb3RiVFhqQkhlVkx5eGw1NG05MHQxWWM4L3lrLzJpS1UwMk0wcm1JblFoRi9DTi9adlFGUmNNS2JaWWRKQ3QveThtZldtQWhVcmtkZ2d2eVJDRktUaGR3MTRLSWpQbTF3S2xMWnNkd3VTU3dCVTdzd3JMN2l4SS90MEI2Q1d5Znp6UTQ5KytZOTlhQW9OcFp4RHdLcFZxeFpnOGg4Y0hSMXZYaVlsUjArYkZrd09pbFlEUkFqNU1JejJZQkpLMGlvUjRmMFZwd0hSb0V4QWpuYTV3ZGNIcE1OYitjZCtSTUxxRVlmSFliRmZFdWFWRExDSzZ4Yy9ZbEh2b01GWnVKblphZUpQam1ha0xoczVtcTg4YTVEcFpmaURPd215MTdQRnVjYVhhL0NEbTlyRytQaTRYc2d5YS9ock55UGpDdXMydUFVZnVzKzdBYlRIbVplZmMyUEhEbUlCbHFsbENtN0Yvb2NlYXZsQ250WjV6a0ZZczNiVkV4TVRVN2Z4MkdZS2ZzUzFHWGNBUXV5L05SSWp0bjBlczBlN2dkRWFsK0tLTVM1dGJzMndXaVRxQW11S0ZidzE4bXNSTG5mU2Z4cDc1UEplQWlxWjdERjFINFVQQ1ZieXVMMkZpVWQzZVl5WHdvQUJqRzhabVRYT2UyS2M3MnprY2Q1aWlBTERXd0xnYlBJTFNJVHhFL0Y5ZDMxRWRnR0ZPdk1LQmNBaFY4OWt2M1hnc1lmZTYwT2EwQ2IzT1JCYnQyN3RIWjhjLzZWNnRYbzlWb2d0Z2M1ZWhWYnNrYU5lenhodjIzQ3hYNCtVdy9WaHRsaEJpODFnQ09UN211VG1UeHhaUXl3NE02NFk0Z1drd2h1Z2ZGc2g0UjFiMjhSdFJNdTBBZFBrTWN2c1o0UEdyRUtEekh3Skg2Tk54T0FkTmJDNG1FWnNhcmIzSmhuZFJBRFViS2owZk1DSFlCaVhqVHFGR2pGOXpQeTBZWG1wMjRGZFhUWjBtaEN1cWQ5VzhDSE1iOFZxMS92K0Q1a2I0Q2JnbVplZWMrTW5qNkF3K2Z2M1AvYmxwbytDQnJUUGZ3NXZPMnphdEdrVkJwYzJKQ2J3aC84Mi9SZC93dzdSRjJjeXVVVlZuWWVxMnFHUVNxVXBYY054cVV3aFg5aUtFWjBKZ28rdkNXK0N2R0xSbU12bFZ0WXpiaDY5QWpQVjZyVnB4eGlZb1FnbTRjUHNpR2Q1cFJXdTF0eWF5V1EzSUswVzBYeHVvMUtwaklBQkR5Y3VsZ1VENmkwWnlGK1pJRTV5MDdzRWY5MlFOMEZKUVV4WEErQVhleWNjdkJEdFlsVHpwQlpBaHVjRFAzTHJZU0ZvQmp4TjZqVURwbU9LTVgwd3BxQ1hpclNHanpnREZHWEZLdGZ6dnArU20rQWJwcmtFR0I4OHRqK2ZyVzkvN2JISEV0LzJTMk1XbDVqREhDNC9RSmpPQTdRSUh4Z1kwRDRQbUhWeHFWUmFpUFY1bGw4Z0toUTYxcnFzNjhSc25TM21pdXVyOVdvSlFxWTdsODNlVnEzVy9OUWRpNGNBeVlXVUpkT2R5V1k2T2ZOVDdlZGRDSDdma0MrUG5kKy9DTUZwTnB3ZFV5WmlyVmpwZXQvN1FlK0FBSzFVM05rZEw3anl5TGxQdi9ibHYvMXo3OTBTczd2V0hPWXdoNHZHTmRkYzB6MHhNZEZKKzNobXZGZzlYLzBVdElSL2xjL2wrdnNoQUtnMXRNYzBZU0ZvR1FYQVhkNEJ4V3lxN003djN1RmNlZUxuZHo3d1YvL0xlN2ZFM0VHZ09jemhEY2FMTDc0NHVudjM3bE9rdzdzT0h3TitGN3g3RnhRRUxGdXFVQlRpdjJhTkl2aTFJTzBkR2Vud1Q5V29WaW5ySVNEb05LRHBNU2NBNWpDSHR3QW5UcHg0QnF6N24vVUpOcDBlQklHUjlmcHVIVTZLU1NjU1JSYW5tY2o0ek1lb3h1OHMrbys4eklRNUFUQ0hPYnhGeUdVeW4rZHI1aU5HRG9LZ2dlSTNDQ1VGUXhBV2lETTVZWi9GODZRUGdpS3ViZmxPanprQk1JYzV2RVZZdW5UcExuRCtzQmc3VU1UZ01hVm0vMGd3d0M4UXZ5eGRnU0RoZ3o4Z2ZoY1FBY2tiTkcweEp3RG1NSWUzQ004Kyt5dy9wZnhzck9JSHBrNHdlalRUSjRWQkExRnc4SnVIMUFBZ0FHcFRFN1kzTUtjQnpHRU9iMi9VcXRXQmVMWTNobTlrN2lTbHRJV0lzTzRuNDR2S3JqbzVhUUtnVXAveEx0K2NBSmpESE41QzFET1o0L0ZzRDJadVF5WVFnb0JJRXo4M3IzVi9HVm9BekJxV0FJeXZ6ODNQZ0RrQk1JYzV2SVhJMU92SDByTTltRHBKZ2NsRnJZU0NIYnZremo5ZkFFcm1EMHNBNkFYK0t1MHhKd0RtTUllM0ZMV3pzZXBQaWhsYkpLR1FwRWFoNEw4cXpVZU0rUUpRM2hIZ0dRQUtobGxnVGdETVlRNXZJYWlsazlFYlovZkEzR25oUUdvbEZLRHVUNDY3NnNTNHE0eVArVE1CM0FTY0dYTUNZQTV6ZUF2QnUvV3RHRG9jNnRIQkhyaGJVaEFXaUZNWkd4VlZJUUFjMDhFZmxwYnZBRWhpVGdETVlRNXZKY0RJa2JvZlVZdFpQMGtRR3lMdnJtSG1yNDZiQmxDYm12UUNBT2xxN3JDL1Nsdk1DWUE1ek9FdFJMbGNQakUxVmRiVGdhUnl1ZUxLRlppZStQN0FDdGI0Z1hoMG1MdjdwS0FKU09XdmxuVW53Q0dPdmdkWWR5OGNmT2UxdS94bDJtSk9BTXhoRG04aHdNREQrTldtbldiek9oazdwbW9OVEUvRzkxUUJvMGQyTHlCb2Q1NzVTYlZhL1pETDFUN2xmdnUzWjl3Sm5QR2d3QnptTUljM0RrdVhMdTNPRnJKM0ZyS0ZGaThJNUF4UE03NmZIMndabCtuUHVzeHlsd1VMSTA1KzgzYVh5V1hHYTVuc2prTE9mZU8xeHg0NzU2UE9ZUTV6bU1NYzVqQ0hPY3hoRG5PWXd4em1NSWQvOEhEdS93Yy8vRWY5MTNiRGxnQUFBQUJKUlU1RXJrSmdnZz09IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMV9QUkUiLCJGSURPXzJfMSJdLCJleHRlbnNpb25zIjpbInV2bSIsImNyZWRCbG9iIiwiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsImxhcmdlQmxvYktleSIsIm1pblBpbkxlbmd0aCJdLCJhYWd1aWQiOiIzMGI1MDM1ZWQyOTc0ZmY3MDIwYmFkZGM5NmJhNmE5OCIsIm9wdGlvbnMiOnsicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibGFyZ2VCbG9icyI6dHJ1ZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsImFsd2F5c1V2IjpmYWxzZX0sIm1heE1zZ1NpemUiOjc2MDksInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6OCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjozMjIsInRyYW5zcG9ydHMiOlsidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN31dLCJtYXhTZXJpYWxpemVkTGFyZ2VCbG9iQXJyYXkiOjIwMDgsIm1pblBJTkxlbmd0aCI6NCwibWF4Q3JlZEJsb2JMZW5ndGgiOjY0LCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6MTUsInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjoxMzl9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wOS0wMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ik9uZVNwYW4gRElHSVBBU1MgRlg3IiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNTA5MDIwMDIiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wOS0wMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTEwLTIxIn0seyJhYWd1aWQiOiI0NTRlNTM0Ni00OTQ0LTRmZmQtNmM5My04ZTkyNjcxOTNlOWEiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjQ1NGU1MzQ2LTQ5NDQtNGZmZC02YzkzLThlOTI2NzE5M2U5YSIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJFbnN1cml0eSBUaGluQyJ9LCJkZXNjcmlwdGlvbiI6IkVuc3VyaXR5IFRoaW5DIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwiLCJiYURlc2MiOnsic2VsZkF0dGVzdGVkRlJSIjowLjAsInNlbGZBdHRlc3RlZEZBUiI6MC4wLCJpQVBBUlRocmVzaG9sZCI6MC4wLCJtYXhUZW1wbGF0ZXMiOjAsIm1heFJldHJpZXMiOjUsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2ludGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRENUQ0NBZkdnQXdJQkFnSUpBTEtLajBzS1RYRGxNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1DRXhIekFkQmdOVkJBTU1Ga1Z1YzNWeWFYUjVJRlJvYVc1RElGSnZiM1FnUTBFd0lCY05NVGd3TnpJek1UTXpOekl4V2hnUE1qQTJPREEzTVRBeE16TTNNakZhTUNFeEh6QWRCZ05WQkFNTUZrVnVjM1Z5YVhSNUlGUm9hVzVESUZKdmIzUWdRMEV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRREVpWmg0dEljQVVQZlVrQ21YYk53V0RJRnZXeHhHUGhKcS8vRnMzdVBCQTRKUVVYaUFIV1VvZjBtTnhmVTM5eWZLMzkvMnlYZ09KNVFvWkd6cFFFR1N3NVNub3kwKzYxb2VJKzBJWGtBYU12ZlZ2dG1Ob08yT0pPNStBRHRsRHU2cmdKdVY2SXBMTFI1U0tYT1Uxek9QSFlyQVBzWXh2M1VMZzI2VzYzek1UcXBDTkNnNHB6d1pSeVhqY0xyVWVDekY0WGNmK3AvRzQyWmRHekJlWmM0eit5Y2NPTXhCeDR3c0djUGcxSEZ5elhsM0ptdHlnN3pVREVxYmplSDhOc3k5K2tUMzFtVlhvY2lnQjNoRzd3Y3RpSW42QTVsUEdNUEpvSTg0UlpkckIzZXM5UWxIWldTbnZkSkdlYUxuTzVYcTRtSWh1ZmJZNHMxVXEvcHZHc0FQQWdNQkFBR2pRakJBTUIwR0ExVWREZ1FXQkJTT0VuK1ZGaEkvWkdVVFNVZWhFeU9seHhGeEx6QVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUFNQXNHQTFVZER3UUVBd0lCQmpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQXJhRG84dW1yZWpYTllRNkJSQm40WHNEZWhEbGlqM0xBTk03Sjd0aW1hTk1mb3hhZHd5UzFudkE4ZTdjTzdPQXczaWVsWWpPNm9pU3B6VXN1NmVIMmxvWjBMSzBma29pYVpabkhLYi80Nm82bzk5NDdpOHR1QU95b1ZyR1B3OWMyOVZvSVFrRTNRai8wUEpabVUwWXViaWxSVU54NmxkSzI1YTBvL3E4bGs3QkwzMk5qV2RUektESlBnZEttcndsMW0zSzJlR212MlpJZ0FQNHBXVW1nMERGNFhTL0phbmtGaWJSWmhzNktnMFYwMkU5UGNiR3lYSW8raHhVOVFzampnSVB0RmlGOCtWdlFiUFRWZU0xWmMwQ3hQbTFYeDIya2kzSWVQcGFEaWd6UzBLZnhrNVJuRnRxWS9aT3lWdGFtL29BUDl0cS9NVGpFUXUxZmxycHBSUT09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUhvQUFBQ29DQVlBQUFBdnIvckFBQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBRzd0SlJFRlVlTnJzWFFtVVhGV1ovdTk5cjE1VmRWV3Y2ZTdzaEN3UW9peEJSQXlESWpDaURNSW9qcU9EeDhPTW82T2VNYWd6T3VOUk9SSkFuVUVjWjBaSTRJQU95TDRHU0F5TUhEaURKQ29nb0VDVHJST1NrSzJUVGkvVlZkMjF2UGZ1L1A5Ymt1N0tlNjlyZWJWMXZ3djNWTHJxMWExNzcvZi8zLzMvLzI1czQ2Wk5VSVUwa3pIMk9MNDJZYzVCa0NpRk1lOEZJUzZ2UnAvSVZXcVVnbms1NWtpQTc0VFVqWmxWNDRkNGxSb2tNR2NEWEk5TG1XcjlFQS82ZW5xa0FPZ0E2Q0JOcFNUWFNUMW8vTmFuWVAvcVZoOHJBZEFBMjlIRitEaStKcVlndzZqQTJESjhmUWh6eDNRSCtnaDJ4bWJETWhkaUtySm15c28xQmJvZU5FaXk4dFJMak5uS1ZIT0Y0blhZTVZNSjVNRHFudEpnMTJFYmVOQlIwNlB1UE9pdzZWRm51ZTQ3enMwU0w2UlRpN1hpQ3dYS3FkdzZGMHk1WWJTa0ZOZHJmT2VYSXpDVGxkc0E3RE45UXFENVlORGZmZ0RVSUVPTTNCQzE5Q3VRTXBYY3R5bW4wVk16V2hZQUhhVHBTTjN1Mmt3Y1RCTWhzK0Q0OVZZaHpIZGpUcGI0cTFUbUo2MXl4OCtvMFRLb1Z6RC9MZ0M2ZW9saTR6ZGdmcGZMNTArVkFmUXBtRzkyK1d3MTV0K0R1VFFxb081cTZEcm1FWS9QMVRMS1RudDhsbXpRL2dyRzZNQVlDMUlBZEpBQ29LdVpZaFZxbDVlQkdtMVk5NHExdGxnOXcwQVh0SnJIaXQwSzlDeEc2dHIyZU1NQ1ZIY0FxcHd0TG1PWXR6Z1lkRlR1dm5wM1IxazhEa0tTZ0NPR2JGd2tVRTZ2dnMxd1NsTzZCbEVsQkUyeURKcW1nNGhHZ1gvbTB3RFpMSFpiamJaTHVjOWVhZmp1MzF0dWxuRHdzVk9leFhyLzZtdFk0TmtPNVhLc1M4Yk50V0sxREs5eWxQZElCRmdvQkxuSDFnTHJPd1REdVF6b3VuNjBYbkw2enJzTXRSaFFjOUFSYTRJNEFxeXFLZ2dFWEgveFJZQkxMZ0Yrd1lmTURzL1YxZjY0c1FxVnF6ZUVHMFY0SUVZUURnTWNQQWk1Ly93dkEyajFUNjhEVDQzQjBHQS9xTWpLN0NoMXQ3UVlmMGhhRGxoVGt5RVpxTkxZWEd4dmJ5K3dPMjZIM0wzM2d2VGQ3d0kvYVFucVNxcTZrd05lYzlMVE9Ta0tpdm9ZaUowN1FiMWxOWWplSFNCQ0NEeEhrbXRyQmE3bkVGUDFxRVp6enc1RzdUWTZlWEFRMUd0WGdkaStIYUN6YzFyUEF0V2N0Z21QV015Z2ErMW5ONE8rOG1zQUJ3NEF4R09ta25KZXRJVjVESENpaDVFUmdCdC9ER3paTWhCL2V4VkFjM1AxcU53UHJhWU9RQ1BGWUNzcWovNzJvZjZzMnV5R0lJc0hIZ1R4NnF1Z3Yva0c4QmtkSnZ0TzBqKzhZQ2tpN1I0NEF2RE1NOEIrOUNPRE5nd0JxSGRhcGM0aG9TU2pjczhlNEZkL0RkaGRkd0VNRFprYVFMa1JoZ1lTVExTbzRmNzdBZjduVG9DMzNqSTF1OEM2ODZJb0F3ZDdhRzBGMkxvVjJQVTNtT04xcElwNzI4bUdLS2ErSkp5WTJjYU53RmF2QnI3eWFtTVlnbCtqc0g3eEh3RFdQZzZ3YlJ0QVY2Y3I1VG1XUzh5QS9VREdUOVdFaE5xT3RoSzc1MTRUOEdMNm91VEFBdjRRUTdENURSYlkxT0JLYXlVYUgyenRXbE93eU5va1lOd3lBZEhXQnV3M0x3Qzc4VVpnTi93QTJFc3ZtMEpLbjlIM3lSMjUvWFpnTi8wRTJFOStDcEJJbUozblZhNnRWWWNQRzJXU3RWc1ZRVWZOWmZmZEQremUrOHpmTDJHNEtHMmFrcVNZZm5ETE51RFhYdy82TmRlWTJrUDA2UGVZUmNEZ0VNRldyd0Y0K2lsZ3FJM2lpazhBbkh1dU9YdzRQVDh3QUp5ZVIzOFNCZ2NBV2xxTzFYdDhhbTgzS2Z6Sko0SGhtQWVubndZNjJSOXBsNE1JVUtBNUdrQUdDN3p6RHNDdVhTQldYWXVNMEdYV3hlKzJrMkNoeTh2dVJicSs1eDZUcWt2VmxRMno1aHBxM1kvdVZSdEtkQ2RLYUJZTkZvcVFNZXcwQmdKVVhZQmdIRUxjaktDWi8xdU5RbzBXUzVlQ3VPWjdKdmpPRFo2SFJrc1B2clk0MUFGVkRjNEZwNmxGSXhDQUFyUm1EYkIxNjAzTEVuMThReU1seVZzUVNlaHN6Uzhra1dGRzlaNk1uV3hocHVlb3JiTm1nYmdXd1o3WkRUQTY2dFQyR1ZZVWI3WkRhZTlnWFplQTA3RWZWQTcxSjJveFE4byt5amJZTnAwQ1dweUJobjV5ZmtSVFZ6VjhUSUsrZ1g2ME93dHhyNHFoY1pSd1RsU1dUSnIrblYrSk5KbEEzckFCYWJmRmJDaVZielhZTmR0K0ppK2llUVFjQ1laWHViYWRZajlIdEkydURTT2crL3BNVnZOeFRLYnhtTjEzbjJsTTh2S2dLaDlvMjYvYnNnWDRkZGViVWw2dWtVTGFTa2JVYmJjQnJGdFhsSFZaOVVTYXRuOC9ncjNLR0xzTlQ4UUg2NXJkLzRCaGZCbmwrOUIyZjJhdmJMQkpzOGthVDZkTGQxc0laREtVYmtXUW4xeG5Tbk85aHlLcDdXaVlzZStqWnZmM0h3czBsZWduQXhwZUJzajBiNS9HZlgrbkthbGlXN2VabWszV2VMSFNiUWRua0s3aFY3OHlqYWhHaU1MWk5HNkRmUkJwdkNsYW1zRFlkRTNqTS9jUEh2L25vOGxnSXRlTE5OdW04VUpCSmsxZWN5dXdKOWZYdnlZN0pkSmtvdkZWU09OOVJkQzRaWGlaTHRTOVpWblgxUVBhZHIySXhsZGRaNEpOaHBFYmxkbXpNT1JHM0dxTnljM3h4cHpJc0xXU0RMVHZmLy9ZbU8zVmR2cWNoSnJHNURKZHFPb0NiVGVBakFpS29CR1ZqWXpvQnBYUitKdWZTUWdVUllkYlZqY1dYVThXa1NPd3YzY05oWTBGL3EwN3RqMGMxdEVmRi9DTFh4d0xobkRlUUVDUGQ3M2VlQVBZODgvTHFMVzZNYUdRbnpublNGY1NlL2lSWTRHTnFaRENFWlBHTi81V1JsQzVTOXQxOXR4ekVydnpseWFMVlZEQUN3MllvRi9PNThrTXpwSTRwMFh6ODhFOHFYZnlzOEUwTExpNWVRRjBkVjBBdWk1UFhLQmhSRjZTOFBhdXA3Q1JTUUo5eWdCTnpkUzFMQXI3Zkd6N2hmaUdjaHlGTTU1RmVsOFB5ZVFRQ29OVW9HS09JRGE3ZENGNk5LRy9pc0QwNGIvRlpBR1R5VUtnS0pic1lrWGkzOEV2bk1PZ2hDMEtWSCtLSXc4TXVPbzlVdmVuZ0UreEJhbk1hanRONzlKRWluTlMwRmk5QXFUaURtVWk4Q1RLaUR1Q3ZBNFY2TjgwSVY0U0hoc1haTmV5T0YrQjJ2dmZXTit6eGd0cFNZbU1MVm1HYVprcTNIYk8yR1Zja2k1RHJOYmxkUDFiaVBUV2dzWm9aQUQ4RHI5R2xxUk40MEVPVW4wbnhPd3lSWkplVjBLaHYyYVRhVFR5UEdlYzNZUzgvL1dnNnhyTjJEZjRWZ25KMG9NcWd5NWs5bHRvRmFodDlod0ZHcm1lS2JLOENrbjc2OEZpdk1iMjdrS1NmSE5idlBsUVluVDBZVnJmTFd5cm16N2xZZVhDbG5qVHM0aDRRWFpHV1dOMmtFcTI3d3JwZDJzS09aM01adDZkVmRXZDlKZWNsU1VJTTliY0dvM2V3WVM3djhTT2FmNUc5QUNmeEw5M01mT3FnR0JKYUhVU0xRRnNRcDFjaGw3NUp4SE1VOTFBRi9nZld1YVJxQ3pma1ZQVlAwZGExMlV5MVdWRitTdk8yVUxOaGJKSi9WVmRmMWtWK3BlNXB2OEpyVWd0UUxkR3JqbkZOelQ5aDRMeDh4R1gyMlhPRnpqaEpneXJXcm9ncGlncmhLcHQ0bEdKSzRvc2ZWdTRnWXc1cDJsM2oycmErVmwwMEJGekxlanltcE40VnRXMFo0YXoyYk1SbDk5eWw0Z2FhWGFJUy84cVNieVpSeVMrQ0tuN1pDZktKcWQ4VE5PZTdVc212NGdXM0JnTFdMcCszQ2xpV1NFTzcwc2svbExWdFQ3WDllVWN6Z2ZHeitFNjQrYzV4Vml0S0ZnNmxjdXVSSjdQSUxXYk8vU0NQcTRmbzR6dzRMdy9vV2xmY3NlRnRRaUpYY2hEa25TdTdrRGJKQ0ZwVFYyZlVuTmJrZXdobGN0QklwT0JIRm5vUVYvWEZPU3Nwa01HTXhNTVdzTVIwRlY5QTJyMWRqZXRsaGxmZ0VyS0ZyczVaS3FtUDhHQjYrR1FBcHBPa3hzNkpGUU5SckxCWFdXMU5NZ3lta0M3Q2NkZk1yZ1FGeG4vRkRyY0o5empIelNiNUh4eWdEQTNVbTlweWxzaFlpd3REZnE3SnBwTTFuVktVNjJMS2RnRVZ6Z2o5QzF4Sm9IdUFyYnNIbUVSMENSSnVTYVhtUlVSQkV5cW5naXMxcERzRmlSSmUyaTA5elNsS0VES0FyQ3JaM3hKM2dzVG1KaEVTTXF1UkFCMjljYm5rdDB4UHlVdVNKWFQ1ckw5N25xclVKQ085YWVmZmNyclVmcUM1SC9pbFpERUlOVmZIL0pHcVdoQTEzVUlkQUQyTktEdUFPejY3Q3ZlNkEwSVFLNFRvQU93YXpNbTU2ZXFycXJuUWtESVB0Q3RnaWtyU1FWSGthaE9DbTFCOHFvVG5SdkNPV1M1Y1lJTGhMWENGdGxrckhvb3RPeVdWbnhadnlHc09sWXpWUTFvR1J0S2pkdlMyUW1TcnBkVWhtNTBGcGhybGQxMm91TG55L3FQR0FDbWpiMWo3aW1XeThGZ0pBS2JPMmRnL2R4RlEwT0FPdEpwV0RnMFpMU2hoMDdyTXhaaE1GZFY1Vmplc3Y1K285MDcydHRoT0J3R2lXYis2Q1F0VFllVEJ3WW1yVi9EQWMydERXQlBMVmtNUFYxZFJ1T0xUVFF6azhsbWpBMWtZVVVCdDVrYTZzamU5c093YUhBSXp1enJnekZaTnJSVmpLTkxxZy9WNFRmejU4T2UxaGJZMnRFQmlzZk1qOG9aZEkyT3d0SkQvWkNXSlhpbHU1dFdkcmp1Q2FRNmtEQy9nMldIRU5TZXJrNFlqRWFNdVdOaENjR2x2VHZnREt4ZnVrcGJsU3IrSzVMVmdZOHZQZG5vME9ac3RxVGdQQUhMaloyQ1NMV2NnOWVVSEFuVDIyMXQ4T3JzV1hEUjI3c01rR3g2VmpIM0lLdThqSi8xVzZmdnRVeHlQaHA5a2d3cHNHbmVYT1BBK2dqV2c0M2JCZUdXL2pCN3R0RldvdnBZTmplQklUYWcwRlBCeXc4ZzJDRzU0aE5EY3FYcG1qclhCamxLNTRCWFFYcnBkMmhNN1l2RjRQNVQzdzF6UnBKdy91N2RrRUZ0ZkdyUklrT0xxTE1WYTZ3Vmt4aEZ3aExZcUxXZHVOQVVVVlZYNFNkQjJiQjRzYkd6d21hZWhnU2E2SkdPQlg4Q1FkNW1nVnhWaTFhWVMyMG9IWXpINEplbm5XcThSK0JTM1hpTnR4M1pSaUFOWnlSa1oxaGdzMFlDbWhwQm5icjJsS1d3dllxYTdGV2ZTSlVGclJqV0l4cW4vam5UR3JNcjBWZThFaFVucVh3Y1FTWk5qdFFZNUhwUHRtSDROSUw5MnN5WkVDbjlESEd2VTI2NmZkVm8yMzE0dkVaMDNjaGdjNHZHS1MwdmpjYnBjdFJ2d2NUN1FKZ2xBSCtVL2F3c1dSYTJKa2NEVFM2SkRRMndzUitYOXgxR3NJc0lxakRZZ1YrOHFhTFVMVmwwdmRheXJnTzZMb1BHTVQreDRBUjRzYjBWbW54a1JOa1BrTWtIWFJ2UXRXL0RINFZNSDZCYkFWQmIzajg4RENrZkltaThYQWswL2VTVERPdTZLUURaSDljUXpQajRZM05udzBzZDdkQ2tsYitCbFpjamVWUWgwMCtlRVl6SkZRQ2IrdmhSQlB2bDlqYUlJZGpsYUhWSjFHMUh2TWJUZFFCeVpXaWM0dU9QenAxRFp4akFPUU9ETU9wZ29GSGYwOWdlSmh6Y050cVZJbWswZzdOKzhlS2p3WkFnVmRaQUMyTW1HcWZPWDNGa3dMcGhkZHdGbzBLSHc3RW0yRFJ6bnV1RWtWektEdzlFSXJDbGN3YkVBMDJ1bnV1Ri9iNStaamYwdHJlREZGWW1UTk1TSmdsOGIyOXJxK3NVY0ZGQUM0dTJOeXhlRkxoUU5hQnhNc20ydExWQU5CSTlibktGd0k1N2JHY3VDbWdDZWJzMWlSNHNENm9CalFOTmVlcm1sS3ZUcEl6SFZHdFJWamZOcTc0eWF5YWtRaUZqMGlKSWpTVWtCU1h5a2Y4MGN5YnN4bkVnRWhoZ1V4Tm80djlVU0lhZGJhM0doSDFBMjFNVWFESUVEc1ppOE1mdWJvaG93VEZqRFdtMUYrTldoU2hRY3V5dFZzelhXUTZkVmtGQnBJVmQvODRZNitYbWdyeEZhSWg4RDk4Ynpuc3VqcGxtYnphWCtGdVhZYjRVYy82RmwzUTEzNzlnVHVXOWZ5Ym1yMkVlekxlWHJIN1puL2Y4SE15cllPSTBvbE9pZGp5RWJYeW15UHJUL1V2WGczR1lQdVRHMVlldUcvcS9jaVkxcUlDcnF5U1FEMkh1dFk1WE9oSHozN2s4OTRRYjBQVGRTZFo3ZlFUemwxdyt1OVlCNk5NeFgrWHkvQjBPUU0vQy9JVkNHaHNLaGI0UURvZFB3L3ErT1g0Qm9uSHNJMDF3T0xlRkFQNW5seUk3eTVuVUlDM1dxd1QwK090ZmN3VSs1d2kyUjBwNGZPYlV6akdQNTUzcVdKQUZhOXhsZ3ZWc2JXMTlUSmJsNXBHUkVhQ2NTQ1NNM04vZkQ1bE14cWt0aFB5b1M3SEQwKzcrQTd1RFJCMjdoeGJZSjBVaWtaL3YzNy8vYi9CdlRiTnNJeFU5bm5nOERxanhSYldoSEkzbUFGVTdSREEwM1FTU1FFUXdQelZuenB3dlR6Q3FaQm4yN2RzSHVWeHVNb1lxelJoem9lN2RIdFJtMDFVN2pSRWVkTm5uVVE5dUdVUHBTbWkycVBPZ0QyMUJhbXRydTNsMGRQUmxwTzJYQ0dTNzNzWGVIRlV3ME1aWjBSTWxpQUE2RmJ4UG9LTDNWMkIyc3lESlNsd0QzdXZucVVXcFNvQlNKelNPZU9wOUNOenNmT0dqZnhQWW5aMmRqK0JueS9HWkFUTEc2UDEwT2cxTjFrNFQzNmhiUmVtWlA1S0VjL1lmZ05GalIwWUt5MVVZc1Y2ZE1sbXF2UjVGOTFyUEpEMHlhYjJtRjdaZnF4ek56OVRJWnVEWmJQYWZVR3RYT2xFeHRSczFlWDVIUndlNVhETDlUVURUV0YyTVZ2TkN0Wm44NkJPSGg2RUZMVDY5dUcydkVZL1B3ajczMjN1c29hSWI4OHdDY3hkMk1MMmVYQ3VWVmhTbEh6WDBWclNtZitNRUhvR0xMdGRGYUlsLzB6RHBjWHhHd1RCeW9lTjB3U0pCV3p6ZmhhYjkzR1N5Nm50N3RjTDNQUDBINWdGcldEbFlZRDVrdlY1Wks2TUxRV3dqNGp4eTVNaW5xZjV1bW8xVytBOVFLRDVJQUI4K2ZCZ0dCZ1lLdk9td0NLRHBwMm5XNm9ONzNvRVk3WWlzMG8yd1dwRWIyeG94VVJ2UjZDTFFEZzRQRDEvaHBxWDRIRWZYYWgwQ1Bvc0FKcjhhbnkrSXdvc3kzWWl5TzhmR0RLM1dBNUI5MVdvQ2k4QkQrbjRlcWZrN2J1RGgreTFkWFYwUFJxUFJFSDNQRHJENDdrY1QyQmZ0MmczWkN1NzhtMDRnandlYnJHZ0NiWEJ3OE1kb29LMXpHNi9Sdi83ZzdObXpyMjF1Ym1aMkVLVWlRTk5tOWhWNzl4bmpkcVVhTGFiWndnWXJRR0pvTm9LcEl0aWZ4L2NPdVkzWEtCVGZRYUEvT2pZMk5zRlY5QzFnWW04YS8vQ3VYVENxS1BCbWQ1ZXh6TFJPVWovbXZTVUdnazRFYythb3Bpa1dpeGxHRmpKYS85RFEwT1hvVnYxZXk1c2F0cFVBeC9YSGNKeGVpcC92UWRvWEpSL003cVhWQkhiZXRHVTlwSlhZMkVlaGhGT2RVQ05vaW5ObFBSaG1aR0RSZUoxS3BWNUU3VjNaM2QzOXMxemVkbHByYkk2Z2NmWVFXdXQvMXRMU29pSWpjSy83eTBxakdxakxBOWtQWXVPcFI3SWw1SUY2b1creXdPM0F5TjY5ZTlja2s4bEhuTndvYTlyeUhEVE12bzFDRWNXMkQvczJSdGQ1aWhZeVhybkZMZXFoQVJUUFJ1REd4N00xMU5ndm9xYnZjQnV2a2U2dlE4MitDWjlScHd2UStqZ3FibGlmT2hRS0dSWTR2U0lsQTFyZ09Gd1BYZUZsVk9PelYyR2I1MDRYb1BQSDNZWjFzeUtSQ05qeGZXb0gwdmZyQ1Bqbmk1MjFtaFpBTnlyWWRxUk1VWlR4Z1JJS3B0eUZZTjlSQ3RqVDR2YkJSZ1NiYUpzTU04cWszWllWcmlPRmZ3TUY0YTFpd2E0MTBQV0VRRjBKUFZFNEdXWGpoWlQraldBbisvdjdQMjU1Q2dXM3Jhekc2ZVBPMkN5eEF5VXZMWFRKa3A4Qm9BSy95NHVwdTh2enZKam5iYUNkK2lXZFRtOGZHUm41WEJGYUhTcTVZMmoycW9uQ2IrazBaSzBUaVZ3QTI0b3V3d3dIdDlzNFlqT2ZWb21pS0dEUTI5dDczQlFjalYwZEhSMGJGeTVjT0VOVlZlSFFXUW5YdzJBbkNhbGlQYTdCL0VPWDhNQ1F3ekR3S0piWkNjY3ZvMkw0L3JERDgyK0F1YVFxLzNrS2Nvd1VVMmNxRThmcmg1RFNmNDE5eENacEcxVWdVekxRRk9lK2NOOCs2R2x2ZzhHd0FpR1BVNUNMRFVaUXhTa1NsTCtxaElDMmZNVktCRGZHd0hzSmIzNGk2anhTakkxVjVQT0YyQjFEVlJtWGNrZ2Q1eDNzUTVHc2pBSGxsSU5VQXdPRThEMWxhQWhpd2FiNHFRMDBHV04waHNuRjcreUZKTzJaRHZxemJsUFpPeldJdnVlTWpzTEphRUR0aWNlTkdhMGdWZEVOSXd3S3VFT2tiS0RwUlB0dXRMNlhKQkx3ZGt0TEFMVFBJR2J6L0dqNm0yTU8wUzBFK0VwYm1pL1p0dDFZRE9LMU90ZVgrNk5Ia0xaWG9GSFcwOTRPQjlIM1V3S3dmVWthZ3JrNG5URk9URGI3bXRFRWgzR2ZoNVRKd0Jtb1hOVHZ6RHJjenl2KzVPc211ek9PSElHQk9YTUNoSHhRSGpyRytmMzc5OE9IRHh5WXFLbjJ2dy8zRy91ZGFIUEZzVU5xZkRxc1pyS3grcjJIRHRmanFwT0dvK3RSQytTTGR1K0dNUngvMDlpM1J6TkZ4aWpqdjFXL2Qyb1VJNGtmMjczSDJMWVRXT0NsZ1p5bVlYRGZmbk9sTFpkOFV4cGZnZFl0dyt5RVpOTFE4Q0FWMzMvbjd0MExGKzdaWTl5dG9mc1lJUEoxak5Zc29FL0hzZnJKQlF1Z09UREtpazRya0xKVjYyckVJdE04L05KRmNQeEdROXB5dWRuM0V3OVNLSW5MKzQvQVpyVEFkOGRqRU5HREVidVFJWS82N2RLZE80MlRBVXNFK256TWQ3cDg5clR2L0VxK0haMHd1R1I0T0RETWlvaEZ6RUFtbklkRFhobGtQZXJ4MlVCRkJsS2EyVHJ2d0VHSTVyU1NOK1A1TFNCMXVqelpTT1JLbllyRDNieEV4V3didlNLbE1zdS91eGdOQzdYSWlsTkRoVVZkZnB4blFlVVoxeFBTSG1QTTl0OTFvODFZSDlxMGVHYmZJZlJXS25kMlVNVktKdTBoNjdzMW00VlVVNU5CNTJJU3dTQW1tSlZNd1lxUkVUZ1B4NnFuOGIyZENBcFZNbEtzb0pHdmlab3lLNVdDaFVQRGNJRnhONlVNR3hZdGhFTlluOFBScUhHdGNLMGhwenVwVDhEMnRtVXlGYjJmc21JbGsydEFCN2QvZHRzMmVHRFpNa2lFdzBjdi9jeFBTVVdCbVNnVVp5TjluWTArSkFFZ0VQUVBxeG84Sm5INEk1YjFNcDI5VmVCdjAweGFOd0w4dnYwSDRPd0RCNHh6ckFsayt2MHIzOW9NdTFwYm9hZHpobkhrSlhWMEljZGVFZ3Rrck50cUNqMzAxcmd5MkxKWjh1L0N0S05mWjZFbVgvejJyc2E5aEpSU0JqdHh4bGdhUHJONUM0SjlpZ0dvbE5kZ0dzTXZSV0dZbXhpQitZbUVzZGsrTTI0SjBXZFJzeitBcjl2eHVaK0RlVGk1Y1IrMEMvMlNRL2V4M2gwd0Y3WGtCTHM4cXhPRkpRU3pVYWpvbUk1bFJ3WmdlM3NiL0c3T0hPTTZBN2Z6cm9udUYrRHo1OUowckJLQ3B4Y3RNbi9mb3c0aEJQZVRXN1lhSUwrdzRBUTRFSTlQdUFhQittWTVndndYTzNaVUplWlFVYUNaWlppMXA5UHd1VGQ3WEE4TWJjWFBxZU1TS0FqNVhVZHJodWhRa2c4Z0VIVElpRUJ3NUtFL2VCcFdyUm56M0Jtbjh1eGhnaklKd2l4cmZKenNXbUVDTEc3TkVNMURvWnpNeUtTSkJxb0hhWEwzNk9oeFlOTDNhY0VHMVVPdmdzMVE4Wk1EbWFVUlVZOXJBSEtXQmpPMzhkYktCbldUeXpZSjFkcWRPbG4zMlZUY25KMTg1YXl3cVJoVHJNQ0xRdTJ6WGhRRU5PemlpbXBWaWlCVy9vaElhNFdvSDFKN0ZGNGZOVUJZSFY2cy9WRnNiRUY0OVU4Vk5KcFhCZWdnZWZkUEZVTEZsUVU2aUhYWGpVTHdBT1Rwb2RrOEFMbk9Vb1g2amdjZ1R3OGE1d0hJMDRQR2ViMVdMRWorYWphdnR3b0Y2ZmdZaEIrcC9JQkpvTWxWMGVwQ05oaUtVb0ZtNEJ4R3RDZnhCWUljclBhc0R0aEhGMDY0QXk1WUtVQWJPK3RWVlI1VnRRbGxhM1NJR2I3UjVqQmhFS1JLZ2sxVHBRTEdjcXBqdjh1Y2g1dENJZEJkcUo2QWRyMWlRQlZpU1VMTnZjSzVkZmVFTGlBaVNhQUVTM2xyZ1RNcUdJZW9KRUNsQlpkaUlsbWo4aTN4T3ZtQTY3cSt3M0hXaURTWDg4dUZxakY5TEFOYU5nZGM0aENYWldoR3lRbk1yeG9pam9CbFZSVnlPU3VybW93TWZLWEhPQzV4MU5vWG5VWmlNckdpb2RBVjNWTG94SmltUXh4L29EMGNNYlJaRDZ6c21pYkNrODRnRTRvTXVvd01LMGtmQ2tuU3U5eHdRV1hlenhPNjlvSWJFYU5XUnlLeHlFM3A1bGdvR28vUlZUV0JKdGRKb3VHVXBqOTF6cG9WSlhTcnh5RTlvMWtobnVOTmpHOVRoYjdiVVJMd3k3SWtYWUdHMTA5UmlFSUJ5UFhGNENGZzhTWkpmb2h4dnRqanVZMWNpTjl5cG1scFZPMmIzUGlkd0c2VjVYOE1TOUw2TUJZb0lEQzI2OERib3Izdzc0MUswcVlvNXg4RnJ6TzZFVnZRdFNIMjdJa0xDYnEycUJMWmdsK2Y2UldKSVJzQWdmOWZmT1poSENpMk0xM1BCZDFlTFExRzN3cU5ib1RuZE96N0t4SHA4enlwbmR4alRYc3RtOHU5RHhGVjVhVFF5VzBhMHRUY1Y1dkQ0WWU5VEhUOFJFSE52d3dvRzdhY0ZDQlFMUU5zbkNGV1NFSy9XaDhlSGYwYzNjOGgwM0VZV2pvTmVpWURpWkhFbzlsTTVtZkJXVjZOTHhER1RUdXA1RmN5Mld4UEd0MndGRjF2cU5NU1Zsb0ZtYzBLYldDQWJoUy9PK2l1eHZhOU5FMWJOVGlTdkoyOEpHN2RmeUpQakc5cU9hSHJYMEQ2N2tkTDdodGUxOGdHcWY0MG1iQlNWZldyaU44YWM0OERtMmlZVGZERUdVTzNTM3dUdWYweUhXQmZRT1FOUU5WZ3pFRzhoaHA4ZGs1VmJ4RU85M203eFVwMHRLN1g0eGVYSXVCZndTLzJCWURYSjhpSTArdUkweWV5bXJZQy8vMEhOeHRyc21uS2xLcnJ0K0xyUFNnaTcwR3ArQWhxL0VsWVdJZmhyd2VwRmlsRFF5c3FYdy8rKyttY3J2ZWc3NU5tUjYrZWMwNy9MOEFBMXlRMjM1MVdZTjBBQUFBQVNVVk9SSzVDWUlJPSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIl0sImV4dGVuc2lvbnMiOlsiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiNDU0ZTUzNDY0OTQ0NGZmZDZjOTM4ZTkyNjcxOTNlOWEiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsInV2IjpmYWxzZX0sIm1heE1zZ1NpemUiOjEyMDAsInBpblV2QXV0aFByb3RvY29scyI6WzFdfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMTktMDYtMDUiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJFbnN1cml0eSBUaGluQyIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMTkwNjA1MDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjAuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDE5LTA2LTEwIiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJFbnN1cml0eSBUaGluQyBGSURPMiBCaW9tZXRyaWMgU2VjdXJpdHkgS2V5IiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAxOTA2MDUwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMy42IiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjAuMCJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjQtMDYtMTgifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyIyZTg2MjkzY2JkMDdkYjI0YzI3MGJlNTU0ZDkxMzU2M2Q2MDZmZDQ3Il0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjJlODYyOTNjYmQwN2RiMjRjMjcwYmU1NTRkOTEzNTYzZDYwNmZkNDciXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkFDUyBGSURPIEF1dGhlbnRpY2F0b3IifSwiZGVzY3JpcHRpb24iOiJBQ1MgRklETyBBdXRoZW50aWNhdG9yIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEwMDAwLCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9LHsibWFqb3IiOjEsIm1pbm9yIjoyfSx7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDUVRDQ0FlZWdBd0lCQWdJVUYvMHdUUFA2RkVxeHBzaWJKaUxGdERqNHFod3dDZ1lJS29aSXpqMEVBd0l3ZFRFTE1Ba0dBMVVFQmhNQ1NFc3hFakFRQmdOVkJBZ01DVWh2Ym1jZ1MyOXVaekVTTUJBR0ExVUVCd3dKU0c5dVp5QkxiMjVuTVNNd0lRWURWUVFLREJwQlpIWmhibU5sWkNCRFlYSmtJRk41YzNSbGJYTWdUSFJrTGpFWk1CY0dBMVVFQXd3UVFVTlRJRVpKUkU4Z1VtOXZkQ0JEUVRBZ0Z3MHlNakExTXpBd09USXpNelZhR0E4eU1EVXlNRFV5TWpBNU1qTXpOVm93ZFRFTE1Ba0dBMVVFQmhNQ1NFc3hFakFRQmdOVkJBZ01DVWh2Ym1jZ1MyOXVaekVTTUJBR0ExVUVCd3dKU0c5dVp5QkxiMjVuTVNNd0lRWURWUVFLREJwQlpIWmhibU5sWkNCRFlYSmtJRk41YzNSbGJYTWdUSFJrTGpFWk1CY0dBMVVFQXd3UVFVTlRJRVpKUkU4Z1VtOXZkQ0JEUVRCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQkJ3WWdLVndqQ1Y2K2x2N2ducEZFUnpVMnVORDhnZEVrUENOY3MvdkZEczJzSzQySnV4bmhGbklnTUIyRHlVMElyWElMamYvMlhUMFlTVGQxc1BpVFNhalV6QlJNQjBHQTFVZERnUVdCQlRuUWFycGRTdDRzaWQ3VmpmTklMSUhyYjJQb0RBZkJnTlZIU01FR0RBV2dCVG5RYXJwZFN0NHNpZDdWamZOSUxJSHJiMlBvREFQQmdOVkhSTUJBZjhFQlRBREFRSC9NQW9HQ0NxR1NNNDlCQU1DQTBnQU1FVUNJUURjb1hKM3J6Tk1BL2Zaa2gwOFBvRnJNeDQzR1lNaFpNZkxQdy8zTWZKcEdBSWdlY3RLd21KWU05SjhTWDh4L2FRVjRpR3ZLV29CZnIxWFBUQU1YT2hWRVlFPSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFEQUFBQUF3Q0FZQUFBQlhBdm1IQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQURzUUFBQTdFQVpVckRoc0FBQWljU1VSQlZHaEQxWmpQaTVWVkdNZjlDOW9iNkRKb0lRaTFpREJ3STVRZ0VVRWx0QkowWVNBR0V1UkNGQk14SWtsQ2F5RklRaWFLQlpVb2xZN1FOSk02M25HYWNhNmo0MHcwMDR6Qk1CTzZMRTduODl6N1BmTzg1ejN2dGRxNStITHVmWCtjOC9rKzV6blBPZmV1K1B1dnY4TGpMRFBRR2g0TzdmSHgwR29OcDg5VnRhMmRuSnlzYVhwNkttbHViajYxMHZ6OFhGaFlXQ2hxY1duUnRMUzRGQjQrZkJnZVBIeGc0ck1Yakw2VkRoNDgyRFhRQlU5R1lqdmViaWMxd1F1NEJBKzRQcy9PempiQ213Rm40cjhvR1JCMEo5b2RKZmgySFg0cWdpSVA3d1U4MEtYb2UzQ0Rmd1I0SG5XSm1lcHBvS04yRFg1NnFwd3l0QURQejNVaTN3c2U2UDhMN2xVeGtDc0hSM25VQmMxbnFRVHU0YjJKRXRTL2tRSlFOeERUaGJRcHdRTkg2K0hWQ3BydnRNeENEaytlTHk1Vm9YdVpLTTJBbmk4YWFNcDNnNDVwWTIwR2o0QlZ2dWZSOTlHV1BFaEp2VkxIOTBNd3Nobm9IWGtCZTNndkQ1N0RNMWd2YU5RTEhGWGhGMjJNWkNDSFJvQjZBVm1DejlORnN0TFlOVkNDeWErVnBPY0VUbjkrakVZRE9UaUw5OStDbDlJRzVYQ0tlSy9JVi9ybzl1dkhLaHBRbVFTeUdIR1g1N00vL0JCbVB2c3MzTnUxSzl6YnZEbmNXYmV1cHJzdnZKQTA4ZUpMWVdiMzd2RDdvVU5oNGNLRjhPZk1UQkc2Qk8vQnBab0JiVkMrWEdweG90bHIxOEwwL3YwR012ckVFMkYweFlvdyt1U1RCanI2OHN0aGRQdjJwRi8ydnhkdWZmeHg1Um9hZis2NU1QYjAwNTEzbzlxclY1djUrNmRPbVNFUExmQ1NBUXBIeFFEUlZWdUplRXlWWDgrZVRkQzBkL2JzQ2ExUFA3VWpTSDkvdjdXcVpENElEREkzVHdwT20raVA2OXJsaHo3L1BBenYzZHN4SHdPQm9lazMzd3ozdi8yMllxQUVUMXN4NE5PR0J4RGd0NTkvUHR4OTQvVXc4Y2t4Z3h3OGNzUWlPZkxzTTVZNjk2LzBkUWFMVWZNcDRNVVlYS2ZONzVIWGpBVURocTYrK3FvRjZ0YXFWV0VtenFDZ2xicTBCSVYza2dHQjB3cmU4am9LNk5ZMzM0U2JtelpaeDdmWHJBbDNQdmdnVEF4ZHQzc01US2VhK2c1VTNZU1hET203M2tWQURyZGFZWGpyVmh1UGxKc2ZHckxyWWhObk1wQkhIMEJldXZYZGQrSFdLNi9ZMUpMbll5ZE9kRSt1TFh1ZVRqMkk1QUVWZFYzejkyaHowYWMwRXROelpQMTZNd0lUMXhnWGtZcVZHWkF3d0lPMjZDSTRFU0RmQndZSERKejd5azhHRkFpdHBPOGVOci92eFhoTitRN1R6WmdKc0l3ZE9KQm1BQlVOTEk2TnBRVTcvdTY3dGtoSkZic1hCMUdOSjIybTMza25sVWhLbzhvaWZkNlBwbFZhS1oxTHNWOEJzMGgvalFIU1BjYk13ZWxmWW15cW1pM3lqejZ5NzJSTHhRQVA4cUtWdUZnUmJwNCtIUVpqMU1seHJpZjRLRUJaQzNUb3hUVUFTL2NJQ0FzZVU3VjdVVW9Sd1ZzYkt5QnNBcmFzaVAyd1J0aXZLZ1o0b2IxbGl6MHcxTmRudWM1MUgzWGdpVENSMThBM05tNE13dzZLNnFUUHJiVnJPL2RpbjNhdFd5clRQUmFxcnNWblZCQzhaQ0NaaU04UHZ2V1dQWnNNQU04bVJVZnRreWN0OGx3VHZEZUJBYWFmdFVGRVdCZDBadWE3Y0dqa3FhZlMvc0MwbXpFSGE4VWdpcG5HQ0NKZGMrQzh0VDBvbXVmZGlnR21sdHhYSjh2Z25kT2tGcUQwMjh4dmR2eG1VWlZTQ21EZ0Y3dDVUNThVQTkybjVqTXU0aDdQYXExNUNaNnFRNkFtdnpobDc4TlpNVUIwV09VMnFJdTRvcDZMUmNtdW1kSWpVekxRUFVxamhRamhuMmU5RWJUZnYvcXFDQzd4SFhoYU1vUjNMMTI2bEJtSUY0a1FEL2wwVWQ3bjhFM2dFdE9NQWZxMldjUkEvTXdCMEs4RmlVVXNlT1RCVS9Tak9CSHcvdm56NTVjTkFFd24xNDhlczVRd3lJYkk4N3hGbm9FeHdUcUl4bTJuZGtDYUFhQnpBY2FSNU9kWXBsa3I2a3NwcEdqN1ZtSmpaYXpLREdDQW1uemo3YmM3RzFVRHZFVGRaMUFxRFA5bWNGRGoyRkV4RU1GazRJKzQ0RWdUaVRNVzF5bUY3TzU2aDd3bTJrQXpBL1RyNFpVK21MOTh1Vy9aQUdsaXBURk9EUytYRFBDY1BrKzg5bHBuMFBqODVKVXJ0aEdsdEhDcFJZVUJ2clF2a0RJWVNIMUZFVlVmOGFtcFpRT2N2UmhqZk1NR1M1OUtGUUtZU3NMZ2JOdVBtZ0YrakhnWUw5S2lhWDNvcE5sMER3TUdua1VlZUJZOHMvcjl1WFAySExOYk1RQVkyeitkVFo4NVV3SDIwWmY0SlphaUhqV3ljcVhCRTVrSk5zSzRpSFVQYUFCSkVXWWx2MGNxQXNXN0hoeFoyc1J4TUNCNG5pTjFhd2JRNUxadDFqR2Jqd2N1aWZWQ0pBQ3pUcnNBV3FoODU1NmtVeXpQOEIwWXFRWWZVMU1uWVV1YmFQeml4WXNHenBpVkdjakJ5RTllcEVhVDMvbDloR21KSXFBS2s2dnBTS0NXZGFCZmJEazRsWXdGQy94UDhhY3MwQVNCZGppMnhSbEFYS05lMjNFaFRqRUx2UEo3MVlrYVg0T09jRUF6UTVMZ1U1WGh6d09uZS92MnBmRXdJSERTaTdMSmJ3Tm1UU1lxQmp5NE4wSmsyWjB0MTJQSDl1T2IzNnNONEJMd3RJTDJFYWYxYWNJWmlCU1oyTG5UOWhOTHFhTkg3WkRJdUJ5amxXNEdIMU1OZU5yR0ZNcEZCRzhlL3JEejY2aTc4REREYjFhT3lCNmVaeTF0M0ZGWUFqcHYwZFV2ejFrQkVEVENXTi9YWDF2SnhBRFFFdkExQTcyTUtGMFlsS204ZnVoOUd5enRvbEZzaEt3Wi9aWW1KZGl3dkRoSkVtbEUxTzJFMm4yZnZraVgvdVBIRFZyZ2dPYVJMeG9vUWF0TmNvdVZ5S2xqSFF1SW11VnJCSlBJYS85ZDR0bXJPM2FFSHc4ZnRsd0htQ3JERGl2QWxPL3hCNHl1U1J6NUg1bENUZkJlV3F3eXBDZ1J2WkxJWlNEUndPQ2dpZWNWREZwSnNGNkE2M015QUtEYUduaFVMM0JhNVRqU1FrVjVybnZaMy9rTzFndTRQRjJRNEFsRVpRWUVua2VlS3RSVTQvTktnL0lxa3g4SkpQMHpWNEh1YmxBRzNnTWVZWUMyWmtEZ2dzK2hVNFhwaXUrb1pNQWJFYlJhRDk2Qlg5NmNlc0VyOHZwY01mQW9lRW13QXZjMVh2S25TSzg2K0hMT0czZ0IzdjZQNmdLcnhRVFhpd2J5RFVxcG9xakxnSWRIQUtyTjFUUGZJelNSTDFXYUVyeGFGbi9OZ0FmM0ttMUtPVHpmYzNDVTU3dWlUaXZRa3BvaVR5dFZESlRBZ2JQSVp3WUVEMkFUdUlDYkJKVGFYTDNndVZjemtJTXJiWkFIeitIejFnczR0UWFxeUVjZysvYzVTeHN0VHI5STFRNE1EQ1pvcjBZREFzOXpIbFdpMzNPeGx2TWVLTFVsK2VpVDU1MjJtanBTTXNDSHgxTUh3ejhjZUh5N0VoUno1UUFBQUFCSlJVNUVya0pnZ2c9PSJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIyLTEyLTE1IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEwMDAwLCJ1cmwiOiJodHRwczovL3d3dy5hY3MuY29tLmhrLyIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiQUNTIEZJRE8gQXV0aGVudGljYXRvciIsImNlcnRpZmljYXRlTnVtYmVyIjoiVTJGMTAwMDIwMjIxMjE0MDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjItMTItMTUiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MTAwMDB9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjMtMTAtMTAifSx7ImFhZ3VpZCI6ImUxYTk2MTgzLTUwMTYtNGYyNC1iNTViLWUzYWUyMzYxNGNjNiIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiZTFhOTYxODMtNTAxNi00ZjI0LWI1NWItZTNhZTIzNjE0Y2M2IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkFUS2V5LlBybyBDVEFQMi4wIn0sImRlc2NyaXB0aW9uIjoiQVRLZXkuUHJvIENUQVAyLjAiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MTAwMTMsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJlZDI1NTE5X2VkZHNhX3NoYTUxMl9yYXciLCJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiXSwiaXNGcmVzaFVzZXJWZXJpZmljYXRpb25SZXF1aXJlZCI6dHJ1ZSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQnpEQ0NBWEdnQXdJQkFnSUJBVEFLQmdncWhrak9QUVFEQWpCaU1Rc3dDUVlEVlFRR0V3SlRSVEVTTUJBR0ExVUVDZ3dKUVZSTFpYbERRVEF3TVNJd0lBWURWUVFMREJsQmRYUm9aVzUwYVdOaGRHOXlJRUYwZEdWemRHRjBhVzl1TVJzd0dRWURWUVFERXhKQmRYUm9aVzUwY21WdVpDQkRRU0F3TURBd0lCY05NVFl3TWpJMk1EZ3hNVEEyV2hnUE1qQTFNREF5TWpVd09ERXhNRFphTUdJeEN6QUpCZ05WQkFZVEFsTkZNUkl3RUFZRFZRUUtEQWxCVkV0bGVVTkJNREF4SWpBZ0JnTlZCQXNNR1VGMWRHaGxiblJwWTJGMGIzSWdRWFIwWlhOMFlYUnBiMjR4R3pBWkJnTlZCQU1URWtGMWRHaGxiblJ5Wlc1a0lFTkJJREF3TURCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQkFKY1dxZUN4Z2E5S0piRk8yVFpkamNncnRaQWdmaThUWEt1K3Y1bGNSNWNlYjVHSll4eW9Damh1ZUVTTDNkZG1NSWtwR3loc0VFdGZGVXlCd3N5RlZDakZqQVVNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3Q2dZSUtvWkl6ajBFQXdJRFNRQXdSZ0loQUw0VGJQMDBzRU5iVEVYR29hZ002SGtsMlhJRHJ4Z0tiSHdvdy85R2liWVRBaUVBdWRJbTdFR3FmeWE4UXlnS2Nia1FmcXJ3ZWZZbkJ2WktJMHh3bi9rS1d4ND0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSllBQUFBOUNBSUFBQURBdUFlWUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFFblFBQUJKMEFkNW1IM2dBQUJHdVNVUkJWSGhlN1p3SmZCUFY5c2N6Uy9ZMDNSY28zWGNLQlZ3UkJIa2lUNThMcXh2Q0UzQXRvSUlDQlFUWjJnSXRVaWd0VkdpaEtQb1hBUit5eVBMaEFSWloxRWRWb1BvUXBLVzBCVnE2WmM5a2x2eFBNcmZRbGlaTmw3UVBQL2wrTG5UbW5EdVR5Znp1dmVmY20wa3dzOWtzY0hFdmc2Ty9MdTVaVUMvOHo0Qm5OTDhXWVlTSXQzWTdIR3NJZUg1TS9NNHN0Ty9DTmtqQ3N3UEhhbi81SFJmL3Iwakk2Z3orNDUvdC9ma2F0Ty9DTm1nZ3hYaHdITGJNTkdNMjBkMVRhRWFBV3k0RHd6RzRFdjdhWE5nSDljTENSOFpCTDhURUlqUEh5V0xDY1lMbytqUUhwRFBUdE83aUZVeEljbnFEMzh2UDl0NldnWHd1Yk5OVVFwRlFRRE9EcTg4U2NobnY3bUtveWx1bkF1NG5sWjR1Q1IybmVVWUtpckphUGRycGNqaWRBVzI1Y0pnV0p4VmRQWVEyb2h0ZitsN0ZOUys4NStsTUNWbURrVE9aT0JQRjBUU0hiQzZjVHFkSnFQL3ZsZTlrMGFmOEhqcnArK0JKWlQrbXBoNDVYRGlaVHBQd1l1SUNBaGViV1ZiQW1WbWpvV1N4YTFiZVJYU09oUHJpc3RvVHgzR0ZEQ01Jak1BSmhkdjFUZHRwalJhNVhUaVR6cEh3OHJTRkJPbUJZUmlyTjNJVUl5QXdBVTJYTHM1RWJoZk9wQk1rTkpUZHFENThoSkJLWUVMcE4vNDU1Y045elJSTktPVGxHNzVnOUs1NW50UHBCQWt2VFY5TWtBb0JKbUJZVFZUV29yRFVPYlN4RG9aVGpqSmVTM1o5MU9CME9pUWh6TU1OMTZ1cTl4M0NaVkpPYi9BWk1VS29kUE1ZZkw4aUtwNmphRkl1TDErL2phTk1xTFlMNTlBaENUR0I0TXJNRklJUXd6Yk5xR0p5Vi9EMnlEVUxHR005ZEVUSWFFclROL0pHRjA2aVF4SlNsYmVxZHU2M2RFR0QwWHZJTUdsSUlHLzNlZVp2c3NnWW1PQUxaZkt5TmZrY3pmQjJGODZnUXhKZVNVckRjRUlBaVNpdGp0bVlpcXhXSWxmT1pReHFnWkJnNjJyTDFteTIybHpybjA2aC9SSlMxYlZWbis4bDVGTE9TSGtNSENTUGkwUU9LNzdqbnBLRlJwcE5EQzVUbEdWc1pzMmNkZHgxMGZtMFg4S1NoUmxtTTJ2cGdpYjE3U2pZbUxDMEpNYWd3VWpDVkhtcll0MW55T3FpczJtbmhIUzk2bWIrTGtJdU16T01jc0FEc3FoUXFxb2FRdVB0WXJwVjYvWDRJOUtnWUFITEVWSlorYXBjMXpEcUpOb3BZY21TZFdZVERUa25ScExHNHJLVG52MS9DQjd5UThqUTIrVk0wT0F6SVk4eUtxMkF3SEVoYWFpb3VMN3BTM1N3aTA2bFBSSXlXdjNOM08zV2h6TXN6MHlaSWM2UkpDWVNOaThFQVNrTVZJQmFwRlIrYmNVbjZIZ1huVXJ6WjJlZ2J6MVNla0xrNzh1N1crVFNlMHV2WlgxQ2ttNW9INEhoTWduSUJWc2dLbWVnbXFXZ05GUFhPeWN6TVBFVnROOFNodUxTTXhGRDduNTJKamR2UzBIQkNZbFlyS2VvcFlzV1JrVTFTWjJha1p5Uyt1ZWZ4VUpTQ05kU3I2cC84SUVINWliTnJxbXBmU3R4dXFlN3U5RmtIRGp3NFhlbVRkMjlaKytPcjNiSTVRbzdtYktKTnZWTFNKZzFhMlp4Y2ZHc09mTzhQYjA0TTBlUVJPN0dIRlRETm5xOTRkMFpNK0ZPNEJoZVcxKy9NU2ZiMTlmZVhXMDNKUHJyTUdhVzVlclVQVjU2d2RySkdvQytKaUtydnR3dkVBbEJRRndzOWgzM3BPV0p3a1ozaHpQUmhqK3VvSjAyY3VIQ2hmM2ZIcERMNVZxZGJ1Wjc3eUJyU3lUTm5iOHBiN05jSm9jclVxblU4ZkZ4dTNac0J6dEZHZmZzM1J2Zzc2L1Q2aVJpQ1ZqK3ZIeGw3LzREbmg0ZVp0c2FHZzFHeWdSdFVSQWVIbjZocUVpajFwQWtXYTlTalJrOSt1bC9QTW5Yc2NYV3JaL3UzUG0xbTlMTmFLRHVHOURmU2ZvQmJaWVFsSXZkdGhydE5PVkcvZzVTNUc1bVdETFFJeTUvRmJKMkJpS3hXQ3FYUVdFRkhNUldaTDJMdWZQbTUrYm4rL2o2Z241d28vc1BTUGordTJPOEM3cUNWR281QTJjMnc5bkFJaFRDNkc2eDJKRVF3M0dSeEtJM2tKYWFNdVh0Ukg4UGQ1d2tsNmVsdFNvaHRDUlBIMitSVUtqUmFGTlNsaUNyRTJoYkxLUXAwOVhsNjB0WGJMaWFuRlgreWQzcFNjTzlZRm0wWVFXc3BhdHlyNlptbDhLeEdWdHMzckNPTVcvK3dvMTUrZDVlM3RiK3A0cUxpcjZ0WDR2bzlMcWF5bHRWbGxKdHA2anJWWHo5Y2MrUFZjamtMTWVLeGFMZmZ2KzlzTENRdDdmSTlxOTJsSlZYQ0lWQ2lxTDZEK2ozOEVNUElZY1RhSnVFRlJuNWx4WXN2dkxocW91TDVwRXlTMXQyQkFpUGRGWE5Id3MvdXJKZzFhVlpjMjd0T1lJY25jZUNoUi9sYk1yMThiSHFwMVpIaG9lZktEaUtmRGFZOWY3TTJwcWJaU1dYeW0yWHFodWxYMnpiaWc2QVY1azNSMVduZ3BkUVNHWEpLU3VSdFNYV1phOVhLT1R3eHV2cVZSOG16VUZXNTlBR0NTRUtsbWZrU1dRQmhFVHFIdjVnd0t0amtjTUJ3bExlbDdnRkVRbzNrY2p2cXZXajRFN3NpL01YZkpTVnM5SFgxd2R1cmxxdGpvdU9QbjJ5QVBsc0k1RklQRDA5bGU3dWRvcUhoNGRDb1VBSENBVFRwMC9ETVl6ak9KRkVldXJNcWVMaUV1Um95c0ZEaHkvK2NWa29FdEUwSFIwUjhkUlRyUXk1SGFRTkVwWm5mV2FxcmhJSUNjYW9Ea3R0VThzeUUySngwTXdwckZhTlNVVGFjK2RxRHAzb3JOVzJKVXVUY3padThyUEdQN1ZhQThscXdmRi9JMStMWUIxcVBXKys4WnBHcThOeFRDZ1VwNlYvakt4TldiczJTeWFYd2ZWQVBKNzF3UXhrZFJvT1M4aVp5ejdPSmFRS3M0bVJCb2NGdlB3TXNqdUVSYStnMmE4VENxV0E0d2lSdkxNZWpscXlOR1Z0OW5vZkgwdi8wMmcwOGJHeEorM0dQd3RtNjlXMGw2U2tPU2FqRVdaaWtCdnRQM0NndHJZR09SbzRmZWFIczcvK0F2TWZobUVDL1FOZUdmOHljamdOUnlVc3ovdlNXRkdPQ1VuYW9BNWIwcDZXSlZRcUE2ZSt3bW8xbUVTcytxbXc5dmdaNUdndnk5UFNJZVQ0ZUZ2aUg2VDcwVkZSUjQ0Y1JEN2JnSDRka2RERFhUbDJ6Q2lZOCtFNFRqUHN1cXdOeU5IQTJyV1pvQjgvSkNRbXZvV3N6c1FoQ1NHL0xGdTUwZElGYVVZYUdOUmp5dlBJMFVhQ2t0N0dZU29OSFZFbzR5TmlPOEFKeXpVdlg1bStLbjIxbDdjWFRFbWgvL1dPaXoxMjVKQ2QrY1p0WUJUbEI5S3FxcXBmejUwdit1MTNPK1g4K2FLU3E4MEQzc0w1ODNSYUxYUkVTRmkyL2QrWEVQQ1FReUFvS3ZyOXUrOVBTcVZTbG1YZFBaU3ZUWm1NSE03RUlRbXJ0bjZ0THltQjRaODFhRUkrbklhc2JVZnM0OVZ6eWdzc3hCS3B1UDc3MC9XbkxYbDVteUlUWkJOS043ZnM5VG5wcXpPOGZYMUFQeE5GeGNmRkhUNjRIeWJkcUpKajVPWnRHVERnZ1VGRGh3MGFZclBjUDNEUWpQZG5vd01hQ0k4SWYyem9FQ05GNFFTaFVxbnpObTlCRG9FZ015c0xqUHlvL3VxRUNmSXUrWUtZUTgyMmRIbU9VQ0kzTTR3NG9HZlB0KzJ0a0xWSzBQeEVIQ2JMSEllVDBwSkZhNUhWWVdSU2Fjcnl0T1FWSzcydDQ2ZkFiR1lvVSs3R0hKaUJvUnF0MGpDTUt1UUtIMzkvZno4LytHZXJCUGo3UVZhS0RtakVnZy9ucVZVcXpDeVFLMlNiOHBDRXBkZXVIVGh3U0M2VFFjb3FrWWluZGNrb0NyUXVZZVgyL2ZyTGx3VWlFYXZYQnMxNWd4L0gyZ2UwQmtsUGYvK0pZMWl0SHBkSjZvNmVVSjB0Y2p3eVdUVEQ4Q1BIanJrcEZOQWRlUXRHRW5PUzV2TVZIS0toMXh1TmhycTZPbFY5ZlgxZG5aMmkxN1h3UVBQRER6MlkwTGNQUlp1RXBMQzh2R0wzTjkrQUVjWUdtbVVnUm1wMXVyR2pSL241K2ZHVm5VM3J5OXcvOW4zSytPYzFET0tNVERxdzdDUnBYWjFxa1dOWUNLbjBnSGdwN3VVLzhKTE56TkJRV3ZGajlIQmNKT1NNbE9jVGcvc2R6RWNPMjh2Y3M1UG1mZkhsOXNaVE5KUEpSSnRveU4xQnhwcnE2cFJsUzZaUFRVUytscmg1NDJaVVhOK0FIdjU2clc3VXFKRWJzak5QbmpwMTdQaDNNRHRFTlZxQ3BwbklpUENYWG53QjdUZGl6Nzc5cjA1KzNjL1AxMmcweHNYRTdOdnpyOWo0Qk10WHpERk1yOU9kUEhFc0lqd0NWWFV5cmNTUDYvbTc2b3RPa1FJdlJxQ09tWjlzUnovQUxHQXQzOU5ub0RSWllHdUdOQ1RRNzhXbmIzNytMMElxdTNYb3NPYjhSYmVFV09SekRLMVcyeWMrZnRqUUlabVoyVW92RDA4dnIyVXB5MGNNSHg0ZEhZVnEyT1oyNkgxMDhHQW9hS2Z0akhydTJlQmVnUnFkWGl3V1h5NHVIajl4RXMwd2tNakF0VDA1NGdrNytqRU11LzJycndJQ0FtQkkwV2cxSnBvT0N3M3BsOUJQSkhJNEZqVEYzcWdJN3hiNlpVeEtXbFQ2Z3RqbEszck9mQjA1YkNEMDhoWDYrd2dEZkVsZkwyU3lRY2ppR2VMQVFLRy9yOFN2VjFuR25YVEFFZUFlQlFmMTJ2L04xeENRK3QzWHo2RFh3d0FoRWdxbnZONUZzZWMyNzc0elhhVzJyTGNST0ZiNDg4K2dId3hwRE0zTW5QRXVxdEVTSkduNUhZT1JZNTUvZHZTWWMrZk9VeFExYXN3TFViRzlZVWhBTmRvS25BNDRPM0RzZCtMWUFyZSs4RDkxczRvM1Fsam1OeHloV1ZYSGo0Ulh1VjFaZitYcVVVRlFnVExoT0JuMTI4VDNrZFZzbmpWbmJrQ3ZrTWpZK0tDd3lFR1BQZ1p2bTdlWGxwVUZCb2VGUmNaRXhNWjcrL1ZZOE5GaTNuNDNONjdmVUxqN3dCbDY5QXFkT3YwOVpPMFkwSUZDdzZQQ29tSWpZM3RIeE1URHlRTkR3a2VOR1lmY2RvbUs2NlAwOHIxMDZSSnNuengxV3Fyd0NJK01OUmdzaXdadHhWNHZ0S1FQRHRPc2FwdVNGQWNydytWQy9GdVhtU0VTb2QvSENlN1ZLelY1YVgyOUNud2VucDdaMlJ0KytzOVozdFVGQ0VueXRTbVROQ29OYkZ1ell6Tm84TUZNeDljOU1NcG8rVEF5TmpiR1RlRUdnMnA1UlRudnFLeXFndjlycW1zcXlwRUZLRHo3ODdMazFHMmZmd0Y1QURKWmFVbkMyK0dpNjJuMXBURXpoalc1NWttdi9uUEU4TC9wTkZwb0NSNWVuaFArT1FrNWJOR3hOZEptdlBmdU94S1pHTVlSMklZNzI3ZHZuNkZEaC9BdSs2QnJzTFpldlY1bk5Ca0pnb1FaVGxiMitsRG8xUEg5UHYxc0cveE5HUEFRVERHaERuVHVGMStaOE5MTEwzNzYyUmRlUGdHTlcyb0xFbHArdHFlN2FPMmw0WjNEeUl0MkdzamZzbGttazlFMERiTkRsVXJUU2xEczJCcHBNOXpkM1VORFFsbldFZ29nU005OGR6cHl0QVpjQThqSFQyY1hMbGlzcnEyYk5IR0NtNXNieE5lUTRGNkVVTGg5NTY3bm5udHUwS0NId1RobjNvZDd2OW03T2owdEppcHFTOTRuUXJGNDVPZzdIeE0xbDlBTU45RnUydWxVTU1zSTJlWTdMSk5KY3paa3ExUXF1SS91N3NvZHUzYnRQMkJ6c2RSeTc5Qm1KM0QwNlBGejV5K0FFdENBSXNNalJvOGFpUndPSUpmTFo4K2JIeDBiZi9IUzVkMjd2MTY1RWowT2IybU9GSlcxWnZWbitYbjc5dXhtYVByYkF3ZVUzbDQ5QTN1Q056ZzQyTWZiUzZYV25EbURGcG1iVGlwZ2tDTElIOE1mRTl6VjByc0NHT0xnOWQyVS9ETlViZUx2STRaUEdQL1NqbDI3UVVMSTF5ZS85c2Exa3NzeWFRdnJXNVorYk4xWXR5NDdkV1U2MUxmdXRZeVJNajQrYk5qV0xYbG8veTVXcEtkN0tKVm1nYVVMTGwyMEVGa2RRNmZWWmEvSkNBa05RZnNOUUVPRTl3OWhsZC9WNlEwVVJZTUZKcUM4QmFZeGtBUlREUkd4U1MrMEpCWTR4cGxvam1HN29kQ3M1UUYrakdoZk44bGVseGtZNEEvSktnNXpETEY0N0xoV1B1VmhPWTZHR1FETDJpbmdwcHMrUk5LWXdzS2ZmL3pwckVncWdYbzkvUU5lblRnUk9WcmkwT0hER3piYytaSVhORk5vU1RwOUM3L1N4TGZnMjBrZU5MSWU4TDVNcHF0WHIvSVdQYWpMc3YwVCt2TzdTRUtZajF1VW8weVczN0pqMk80cmNCa211QXlPc1Z3R2YyMEF3ekNRTEpnZ2l3ZXY3UitIeTkrU0IwMGJXaXZraXNjTENyTFgzM2xVRUpxMkNRNjJuTU1FWjdOWU9EUHJBSHlxMGlJcjBsWXBsVzV3cDdWNjNlVEprK3dzUFVJZmhTWTFmWHBpUWNFSlpOR29vWWxVVmxieXU0M1I2WFFtRmhyWG5hK0RMVnU4aU1Ed3pNeHMyRDU5K29lU1B5L1BUWnJ0NGVuT2U5RUMyNFd4aWJxaXl6Q1I1NjJPQTIvQTVoMXR6V3NIemtENWpCd2V0UVlOVGFuTFYzNnpkNTlVS29IaFpmT21qUWtKZlhqNzNheGF2V2JucnE4bFVnbThyNXFhMnUrUEhmWDJzYXd6VkZaVlB2N0VQN3k5dll3R3c5OUhqRWhKWHJKbHk5YnNuRThVYm5jVzdlNEcrdlNnUng1WjgzRTYybTlFY1hISmZROE85UEgxQVkyaHc1d3ZQQ3RYeUpHdkpkNmI4VUhSYjcvdDI3dGJyOU8rK2VhMEc3Y3FoWVFRSjdEUkkwZCs4UDZkZWNqU1pja0hEaDNHQ2NMVDNYM2ExTVJubjNtYXQvL3l5Ni9MVjZ5a0dBWVhZT05mZnJIeG1wOUZRaEN4b2RmKzFZRDdDK01xMnVsVTNuaHI2cmNIRHlvVUNyVmEvY1pyazFPVGx5RkhsMk9WME5wZDJvZjlZenR5NXY5bGJ0MnFqbzFQZ0drb0ROQW1paXI4NlV5WGZTNXhONVlXMnBHN2JQL1l2NlIrd0txTU5hU1F4REVNOGhFWTY3cFJQd0RGUWhlT1l6QWF3eU9pWmRaUHZpRDFPSDNpZUhoNE9PL3FGcHdTSi83YXdJUVNra2tJc2FEbHNLRkR1bGMvd05VTDIweXYwQWlSU0FRU3F1cFZSdzd0Njk5L0FISjBFNjVlMkRiU1Y2MnVLQzJycTYyL1huR2pUNS80YnRjUGNQWEN0bkh1M0htYW9hRUxNZ3diRmhyaXZLK2NPWTVMd25zZTEwQjZqeU1RL0QvZXhMZzhSLzRzUUFBQUFBQkpSVTVFcmtKZ2dnPT0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xX1BSRSJdLCJleHRlbnNpb25zIjpbImNyZWRCbG9iIiwiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiJlMWE5NjE4MzUwMTY0ZjI0YjU1YmUzYWUyMzYxNGNjNiIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwidXYiOnRydWUsImJpb0Vucm9sbCI6dHJ1ZSwidXNlclZlcmlmaWNhdGlvbk1nbXRQcmV2aWV3Ijp0cnVlLCJ1dkJpb0Vucm9sbCI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZX0sIm1heE1zZ1NpemUiOjIwNDgsInBpblV2QXV0aFByb3RvY29scyI6WzFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjIwLCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjEyOCwidHJhbnNwb3J0cyI6WyJ1c2IiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotOH1dLCJmaXJtd2FyZVZlcnNpb24iOjEwMDEzfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMTktMTAtMDkiLCJ1cmwiOiJodHRwczovL2F1dGhlbnRyZW5kLmNvbS9hdGtleS1wcm8vIiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJGSURPMiBBdXRoZW50aWNhdG9yIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAxOTEwMDgwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMS4xIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjMifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMTktMTAtMDkifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDE5LTEwLTA5In0seyJhYWd1aWQiOiI5ZmY0Y2M2NS02MTU0LTRmZmYtYmEwOS05ZTJhZjc4ODJhZDIiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjlmZjRjYzY1LTYxNTQtNGZmZi1iYTA5LTllMmFmNzg4MmFkMiIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJTZWN1cml0eSBLZXkgTkZDIGJ5IFl1YmljbyAtIEVudGVycHJpc2UgRWRpdGlvbiJ9LCJkZXNjcmlwdGlvbiI6IlNlY3VyaXR5IEtleSBORkMgYnkgWXViaWNvIC0gRW50ZXJwcmlzZSBFZGl0aW9uIChFbnRlcnByaXNlIFByb2ZpbGUpIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3MywicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9LHsibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJlZDI1NTE5X2VkZHNhX3NoYTUxMl9yYXciLCJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyIsInNlY3AzODRyMV9lY2RzYV9zaGEzODRfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NiwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo2LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRE16Q0NBaHVnQXdJQkFnSVVTT0VqVGYvL3lxUmZQVzdRcThxdEl5Q3JBZzh3RFFZSktvWklodmNOQVFFTEJRQXdMekV0TUNzR0ExVUVBd3drV1hWaWFXTnZJRVpKUkU4Z1VtOXZkQ0JEUVNCVFpYSnBZV3dnTkRVd01qQXpOVFUyTUNBWERUSTBNRFV3TVRBd01EQXdNRm9ZRHpJd05qQXdORE13TURBd01EQXdXakF2TVMwd0t3WURWUVFERENSWmRXSnBZMjhnUmtsRVR5QlNiMjkwSUVOQklGTmxjbWxoYkNBME5UQXlNRE0xTlRZd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUUNkdmwyN3cyZ3UxZlBYZUVGYklkcXgwQmFsdlZEVldyUVBKN0hxdml1RXRaSGx4U0x4U0Z0Y1hwVG9sdkx2b2Y4ZjR0TWVyUVRrVkd6Y21Zem0xRUJUNElKdU1tb0VxZmtFRWhXcHNBRE1Gcmpaa3FsWlk5RXF4UXpMb1ZFRW9uRTVvR3hTZFZDeENjTElhY2tweVIvQ0NYdmoxQnQvaFRnRTloVGxGNHBScXhNa3gzcGxGN3k4ZERabFJIV3M3dmJuaG1CQ0dlSTBaUEVRNm5sMm1DZzJyNzRhZEYydTZLOXJyTGZoQkMzUUxFOEVQcmdxVXNJK2hrdXEydEs0TTJTTU9wOHVVVlZrcVVldTNoMGtyM1dWSTBXMDJwa2dyT2dpRktMRk5rU3JiWWhkak1CRGo1aXptcWZjOXhKUktvRFg2MTJxZDhaR1ZIcFQ1QVlGWCsxaEFnTUJBQUdqUlRCRE1CMEdBMVVkRGdRV0JCVFp5VTVEaVEvYTJVRWdFN3FCSzB6aElzUk5SakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VBTUE0R0ExVWREd0VCL3dRRUF3SUJCakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBWHZuQjRTTHVVSmZZTVNWR0Foc3NML1NtV2xpM0ZTY2NneHlkdktsQUNjaWRJSVdLUXFhM3EvUVNVRVF6QzlEZ0VmTWdyN2lDMUJrVFpiSUxib1Y2VVo1a25Oc3ZqRVpXdU1lb2dKOHRnWnMxaFZ2S3daaXp3SittRWNtc2poSXJCWXVvTDFUNnlyT0p2S0ZnMWp2K0N5NFp3QTlCcGsvVjNVT2lyMVZ5SzhkQ3R5SHU2dmZvc290QWRZeDhGQXVSMjQzZ1JUTVY2Sng4SmRpZzJKRElBUU1selZlRHBTVUhYL0sySFhSSHhId2ZnamJnVWpqQnUvNzJyOE9mZWh5aHpIWEkzSzhDRkZkZmxPKzhuRU9KSzN5OEYxaXZnUzV1Ti84U21jWXcvU1RRWXdocnhQdXd6M25QOGJhTXVtNEJCMm5uWW1wQjYwc1gzYmw1azhRVVN3PT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZkNBWUFBQUNHVnMrTUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFIWVlBQUIyR0FWMmlFNEVBQUFiTlNVUkJWRmhIcFZkN1ROVjFGRC8zZDU5d2VRU0lnUzlBUUFYY0ZMQVFaaTlmcGVWejF0WS9XVFpyNVd4cGM3VzVrbkxhNWpJM1o4NXNyUzJuTTJzanRXd1pTN0lVSDRINHhDbkVReDREQVpGNzRWN3VzODg1djkvbEluQnZWSi9CNFB2OW51LzVudS81bnZNNTU2ZnpBL1F2MEhiL0lyWDNWRktQbzQ1Y25tNGluVUlXWXdMRlJtWlFVdXdqRkcvTjFpUkhoMUVaME5SVlJ1ZHF0MUJkKzJuU0t5Uy9PaHlzMCtsazNlLzNrUTlxdkQ0WlV0YTRWVlNVdVkwZWlweWlUaEFmb2NvT1JWZ0R1dXczcUtSaUFkM3JiY0V0alRqWUlvZjZXYUhzQ216VlBXQ014K2NnaDh0THFXTUthTVdzVWpMcW8yUnRKSVEwb096bWVycFF1NGVzWmdzT05rR3hIN2Qwa2R2VFQxN3M0T01VN1ZJOFpoamdHYU0rQXE5aUVOdThQaWYxdWR6MDdNd3ZLV2Y4R2xWb0NFWTA0UEM1V2RUYVhZRmJSOHZOdkw1KzNLZ2ZiNXhOTXlhOVJhbUppeW5hTWxHVFZ0RmxyNmJhOXUrcHFuRVg0dU11UlJnalNZRWhyTjd1dEZGZTZscWFsN05ma3c1aW1BR0h5blBwYms4Vm1ZMHhzdG5wdGxGQ1ZDWXR6VHVCTjgzUXBNTGpUdGV2ZFB6U1VuSjdlOG1ranhaMzlmWGJLRGZsZFpxYnZVK1RVZ0duQlZGNmZRMmlQSGc0VzE2VVdVd3Z6YmsxNnNNWkUrUG4wcHZ6N0pTZXVBeWVzOGxjcENtYUt1by9wK3FXcjJVY3dJQUhXcnZQMFlFemhYQXRMQWJzc0hocDdpR2FtdnlpalA4cnlxclhVV1g5WG9vd3h5QXVmTkJycDQzUE9CRlhabGtmOE1EUmlxY3B5b3dBd3B1ejJ4K2ZXdnovRHRkZTlzbXN6eWd0Y1I2QzF3YmR6Qmw2T2xxNVdOWVk0b0dhdGhKTXJrVEV4MGpBUlNIQVZzKzVyWWtRTlhiK1FnZlBMc1E2Z1h5SW5zcmVRZm1wbTdSVkZZZkw4Nm4xZmlVT2tZdlNoa1VQeHZidWt6b3k2SzFpaE0xaG8zWHpXNkV2U2ZYQStkcGlXR2FXZCtkb1h6THptR3dLWUZMQ0FzUkFsUEJBaE1sQ0ZYVTd0QlVWUHI4SGdWY0pIV3ErRjAwcGxyK0RNVGRyUDR6dnhZMTFrTk1oeFQrU2VUR2crZDRWNUxRSml0eVVHSk5COFZGWnNqZ1lCWk0vSUkvWENUa2owcXlET3BGMkFWUTE3Q0lqVXAvRG5UMVVrTDVGNWdkaitzUzF3ZzFnRTNnaWdtNjBmQ1h6U25QWGJ5QVBiSVh2K0lEcEUxNlRoYUhJUzlza3lobG1NRTVGM2NmcUFLaHEyQzBFNVBIMWdZYVhhTFBEa1pHMEhESk9uS1dIcDUxSTB6NVNPdXg4ZTFXQXVaemRIUXJUa3A4VG1qWG9JK2xhMHdHWnN6dWJxYk8zaWZRNkEvVzd2VlNZc1YzbVIwSkt3a0tjNFdIaUJrbVI4STNDQ2dJODdvT0w0cXpUNVArUlVKQmVqRU9nQVBLOGhZUHphdE0rZUlUcDJJTzl5VFFtZXJvbVBSeHgxcXhBY3NpbGUvdWJTZUViY1dRR1lFQ2doY0xZMkh5S2pvZ2pIMjVoTXBqcFV2MU91Z2xpNGVoMmVSdzBPMzJiSmpreXVDZ056ZzB2emxZTVNpU3MwdW9vNE1HN2hNT2pDRWFYMXlGRTBuU3ZqQnp1VG5FcEs4Nlo4SW9xRkFJdWJ3OGtnOUFyRWFSRVdTWkkrakg0WGJwNmc5RTlFbkpUM29hUnpETitNVUpCUURIbjU2YThvVW1FQnVzT3hCcy9ONSt0SkViUGtBRkRqOFVHdk9zL0lXdmNTZ2xHQmh2UzcvRlRZZnBXR1lkRFk4ZlBBeFdTQTM1c1RDNHA0K0xtNEFhcUlvUGVRdGZ1Zks2SmgwWmh4bGJzVVhPU21YTmlmRDVaVEFreURvZmJiY2NseG5BOFdOQXF4Q2JSTnlraFh4UXBhRHc2N2ZYVVlic2lHMEtodHYyb2VJdmg4cmhRTVlPY0VBcVhHL2VJK3puZ09jNXl4cjhxODJJQU0xYy9GTEZPcGxxdTVlRlFYck1aekdjVkNqWWJMV0c1STRCVDFldVJybGJ4dE5PdE1pdERERWhMWElJeW5BQXZ1T0VXRTNYM05kQWZ0OTRWZ2FHNDJYSVF0MFpYNlBlQ0UvcVFGZTlySzZIeDdZVTUwS3ZIN2ZXNGZTK3E3S0tCSnhzZ2dCWDVwU0FHaDFqSXJWaDV6UTZ3M1JmYWFoQlhtL2FDYkNaVGpDVUZVVHlXWnFXOXA2Mk1qSlBYVnFPclBnTU80TnY3NEdrZitvd2Z0TlZCRFFuakZKcUhTdzE3cFh2aFdXNUtacWUvUTQ5Ti9VU1RDQVZXb1FYRklIQkhYWGUzRlByVURzdUdEbXRGL2hIS1RIcGVreGhpQU9QSStTSnE2UzZIRjRJOVlXemtCSlRvNDZpVU16V3A4UGlyL1JpZHVMeEtZc1Nrc1Y4dkxsT1F2aEdYMllsUjBPQmhCakMrdS9nRWN2WTBBcEs3WWs0MU54alBTUW5XRkhURjY2VXJqZ2V2QjhDdTVhK2wydllTUlB0dVZEbzczaGhkTVNIblVYN3RUanNWWkd4QWwvV3B0aU9JRVExZ25MMjltWDYvdFIxdG1sa1lqOFc0WCtDU2pXY1VER1kxTnBTL0M3aFNLcWlNTE0vbDJRbVNXWjczRGR6K2dpbzhCQ0VOWVBRNDZxbmt6d1hVYnF2Qmt4alVRc1dmWkZnYnVvM3JBZit3TjdqT085MCt5bng0UGkzTCswbllMMVNjaERVZ0FQNGdQVi83SWQxcSsxSFNobXVHa0lxV1JQZ3l4TUZxUDhIZmpUbmpYd1k1YlFmYkpjdDZPSXpLZ01Ib3RGL0hlMWVnc2F4SFNxRzZ3ZmRtUTV4OE55VEZGcUJjcDJpU293SFIzeWs1KzM2aEY3dlhBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMV9QUkUiLCJGSURPXzJfMSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJsYXJnZUJsb2JLZXkiLCJjcmVkQmxvYiIsIm1pblBpbkxlbmd0aCJdLCJhYWd1aWQiOiI5ZmY0Y2M2NTYxNTQ0ZmZmYmEwOTllMmFmNzg4MmFkMiIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImxhcmdlQmxvYnMiOnRydWUsImVwIjpmYWxzZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOnRydWUsImFsd2F5c1V2IjpmYWxzZX0sIm1heE1zZ1NpemUiOjEyODAsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6OCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoxMjgsInRyYW5zcG9ydHMiOlsibmZjIiwidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN30seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTh9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi0zNX1dLCJtYXhTZXJpYWxpemVkTGFyZ2VCbG9iQXJyYXkiOjQwOTYsIm1pblBJTkxlbmd0aCI6NiwiZmlybXdhcmVWZXJzaW9uIjozMjk0NzMsIm1heENyZWRCbG9iTGVuZ3RoIjozMiwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjEsInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjoxMDB9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMC0xMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzMsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiU2VjdXJpdHkgS2V5IE5GQyBieSBZdWJpY28gLSBFbnRlcnByaXNlIEVkaXRpb24gKEVudGVycHJpc2UgUHJvZmlsZSkiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI0MTAxMjAwNiIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTEwLTEyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3M31dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNC0xMS0xMiJ9LHsiYWFndWlkIjoiNDU5OTA2MmUtNjkyNi00ZmU3LTk1NjYtOWU4ZmIxYWVkYWEwIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI0NTk5MDYyZS02OTI2LTRmZTctOTU2Ni05ZThmYjFhZWRhYTAiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiWXViaUtleSA1IFNlcmllcyAoRW50ZXJwcmlzZSBQcm9maWxlKSJ9LCJkZXNjcmlwdGlvbiI6Ill1YmlLZXkgNSBTZXJpZXMgKEVudGVycHJpc2UgUHJvZmlsZSkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2LCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX0seyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Iiwic2VjcDM4NHIxX2VjZHNhX3NoYTM4NF9yYXciLCJlZDI1NTE5X2VkZHNhX3NoYTUxMl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlEU0RDQ0FqQ2dBd0lCQWdJVURxRVJ3KzRSbkdTZ2d4Z1Vld0pGRVBEUlozWXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFESTdYbkgrWnZEd01DUVU4TThaZVY1cXNjdWJsdlZZYWFSdDNZYmF4bjlnb2RMeDVzd0gwbFhyZGdqaDVoN0ZwVmdDZ1lZWDdFNGJsMXZielVMZW1yTVdUOE4zV01HVWU4UUFKYkJlaW9WN1cvRStoVFpQLzBTS0pWYTNld0tCbzZVTGVNbmZRWkRyVk9SQWs4d1RMcTJ2NUxsajV2TWo3SnRPb3RLYTlKN25IUzhrTG16WFhTYWowU3dFUGg1T0FaVVROVjR6czFidm9UQVFRV3JMNC9KOVF1S3Q2V0NGRTVuVU5pUlFjRWJWRjhtbHFLMmJ4Mno2b2tWbHR5RFZMQ3hZYnBVVEVMdlkxdXNSM0RUR1BVb0lDbE9tNGNycHduRFJMVkh2alllUEdCQi8vcEV5enhBL2djU2N4andhSDFaVXc5Ym5TYkh5dXJLcWJUYTFLdmpBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlRxdDBLUW5neDdaSHJiVkh3RHVueE9uOWloWVRBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBcVFhQ1dNeFRHcVZWWDdTazdra0ptVXVlVFNZS3VVNitLQkJTZ3dJUm5sdzlLN0hlMUlweFowaGR3cFBOaWtLam1jeUZnRlB6aEltd0hKZ3h4dVQ5MFB3M3ZZT2RjSkpOa3REZzM1UFhPZnpTbjE1Y0ZBeDFSTzBtUFRtSWI4ZFhpRVdPcHpvWHZkd1hETTQxWmFDRFlNVDd3NElRdE15dkU3eFVCWnEyYmp0QW5xL05EVUE3YmU0SDhIM2lwQysvK05LbFVyY1VoK2o0OEs2N1dJMHUxbTZGZVF1ZUJBN24wNmo4MjVycURxc2FMczlUYjdLQUhBdzhQbXJXYU5QRzJraktlcnhQRWZlY2l2bEZhd3AyUldadnhyVnRuM1RWMlNCeHlDSkNrWHNORDA1ZENFclZIU0pJcytCZHRUVk5ZOUF3dHlQbW55YjB2NG1TVHp2V2R3PT0iLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVIzOG1xMjZTZjJzelZWMkJkRzZXRU43a3VXVXdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFSWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFOWTBXYjlvUG9Sb0tvUXlXUGFKcHoxMXZyV1RnNnpUdG1OajJWb0tSbnl2S0dScXB6YjgzdzVsNllBOTZVWWtZQkRRUDBpbE8yRFBlNndXcVZSNXpEZlJ6ZGNIOGJoK0w3ZEdHdmFlNmhSVFpoa0ZrQ3BYRHM0SGNja25yRGY4RkNsSjdIZTM5SmY0Mi9HMVFtMnp6OVdXbXJQWHRnaUsveDA1R2pzUWZHdURHMXpmNVFUVVVpZThsd3ltSzNUZmRPdk5lZUpBQVBlMnBuN0l0ZlJiK3JWck5XaUR6bFJuMnZObloyd1BvNHdIL1dKNmRoWFpHK3JNV1QrYTZCb2NnMVVmSXc2a2R1bkc0YlRwWnpzdmFjRll5UjBtcGYrRGVPbnBTV0FteXdKV0h2VGxmMllYeEZ5ZVhjVEFDZFFsY01OR0oyVmhaUTQ4eHRQNS9SQlAvOGtDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNoeTQyb2tpcWNUUzFpcWEvSFJXamtCbjRIL01COEdBMVVkSXdRWU1CYUFGT3EzUXBDZURIdGtldHRVZkFPNmZFNmYyS0ZoTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBbitSSElQYnRNRUROZFQxZzhIL1JpdEFrVWRMZ0F0MXRXR1dubGo5a25idjQvNEdsWDdDOXA0NWVmUE85L2FaTDZPVjFYUktCaTZLbXRCVzVLN251WUVuTXgvNUJxQlNiTFQ3cmhkdUM0OVRCZU1iOVBIZFhzVGxTVk5ZZWZyMWRHaWRyNGoweFZCUUxiMXJrbkRBYmRXRHpLZnZuYXlLTzhGcndlN0h4ODQzTUcvckorYzBYcnVVdmJmVlRDSExpSVdoTTdvTkRoTDh4b2I2eFVvOUtMS2NTTCtJdFlzTzMvOVdiOFE5R2pzcUw0RlhzRGNHMVNhWWg3S3BmdU1tT2l4cXpKWk8ybklpY1BZUmcxSTJTdWlVZllPNzB0bWRIY2JsK2tTUW1TWXQ3cnE0dmlJTGcyR3gzajlySVR1V1RqYmFVYVNTUXhnT21NU0h1eXpNQUMiLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVRuYmJHSVIyTkh2enFJS0ZBZVF3RzFYQmlzMHdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFRWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPc1hqM2swNEJhbjRUWWR0WktxRC9PUEp4eUR5YVBtQ0JVRlVpYVpJZ1R0ZVpuajNYMjVEaGdwWlpYc0M0RDB5ZEljcmxBNndOVUluT1JML0w5ekJiVEVJTUFWTUdvNmc3VUtBbWIyTUY2QUhibmhZSmQ5ZWlrdXBWTldTaEhOWU5jNEdCZE8xWU42QWZVcXZKaEhiZTNWNFNOTVBtQlJFS0pQVno3VGh3Z21nZ1RlOFdzMkswL3dzcXYyd1NFN3BiQ0JzVVpoSVg1MWJaTTNwcUR3SlBUbVJGRXZ0MC82dEc1ZU84RjNqMTRPWHFmRWhtam4xVnZ4S0RZUU9MWkF4Q3d3Z0MwUDRDZGZXdjN5OFBTUjhJMzU0aE8xWStHek5qdklxWDM4TktMeXd1SVlIRmVyT3hObHhFTUJ2RmhZQnVSdVlBa2tnVWFQcU42VUJoc0lMcnNDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNDb1JIaGl5Tm5iblhSV0lMNlpCWG9CWDlZVE1COEdBMVVkSXdRWU1CYUFGQ0FvVUNFYnBGcGI2RlBMblozRjVQeHNMM29mTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFDUUZhZkpJMS81V2c5Q0VFaW1FMVJQNTRSZ1F3VE5UT09Rc0xBQ1RlK3JJdGxGUXpDOVpEaHJWODI4eVg3anp5K0FBc3AzaXpLN1QxdGgyZGw3bSt0dTBzdzJQYS9vbGMwMm50NlB5SXczNDhnYUh6aEkxKzBLRTQ1cXh2RkRlTDJsTXhiUGZDWXZ5RUVhWXpqaVFFTFU1OTUxcFhHV3lLTWEvNGZMdE8rWktPWGhNdVZlcTRyWERQSTU0VzZKSE9pQWFpS2Rpdys1ZTNjMmt0L2pGSVF0TTZ2TVhnOUxORnpkakVUTnQyMFZYOVFldlJwRlpmdWNNRzl3Q2FRRG9GbFB6cFRNSktoUGV2L2ltSm1aWWhLZnIwbExjZW10cWpJeExBb3FaZE9ZZkhCZzYrdkFjZFBJL2lhdUdwVUF2N1grVUtObUR3aloyQmFINHNMd2hCMm0iLCJNSUlEU0RDQ0FqQ2dBd0lCQWdJVVVjbU1YelJJRk9nR1RLMFRiM2dFdVpZWmtCSXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFEbTU1NWJXWTlXVyt0T1kwcklXSGxkaCthTmFub0NaQ0ZoN0drM1laclFtUFV3MGhrU0c2cVlIUXRQK2ZaeVMzM1ZFcnZnK0JRcW5tdW1nTmhmeEZya3dFWkVMZWlkQmNDOEM0QWc0bnFxaVBXcHpzdkkxN05jeFlsSW5MTkxGY1pZLytnT2lONlpPVGloTzUvdkJaTWJqOXJpYUFjcWxpWW1OR0pQZ1RjTUdhRUF5TXpFTU55Mm5tNkVwK3BqUDVhRjZnaTIxdC9VUUZzdUoxajJSai95bk0vU2RSdCtlY2FsNU9Zb3R4SGtGYkw5dnZ2MkEyT3Y1SVRaQ2x3NGJPUzlucHlwUWltT1o1UUFZeXRtWWFRcFdsL3BNWXo2elNqOFJxa1ZETkVKR3FOZlRLQTJpdkxZd1g2bFN0dE1QYXBnMEo4NGw5WDB2b1ZOL0ZwUzRWQ1ZBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlFnS0ZBaEc2UmFXK2hUeTUyZHhlVDhiQzk2SHpBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBWU16Z0xySkxJcjBPb3ZRbkFaclJJR3VhYmlIU1VLU21iTFJXcFJrV2VBdHNDaERFSHBYY0ovYmdETktZV29IcVE4eFJVakI0Q3llcFlldmMzWWxyRzhvN3pIeHBmVmNhb0w1U2V1Smt6SHhLbjRiVGFTcDkrTXZ3YW1ucDY0a1pNaU5iRkxrbmZQOWtZS29SSGtNV2hlUkoxVXNQMXo0U2Nta0NlSUxmc01zNnZxb3ZxaldDbEZzSnBCY3NsdVlIV0Y3YkJKMW40UndnK0FURW9wWTRJZ0d2Nlp2d2MrQTlyK0FUMmhxcG9Ta1lvQWwrQU5Zd2dzbE9mOXNKZTBWK1RBOVlZL1VsYUJtUFBUZDAvL3I5d3ZjZVBXWmtQaktvQUMvelVOaGZEYmg0TFY4R0hzM2x5WDJYb21ML0xOYzhKWXp5SWFERWhHUXZlb1BoaC90cjFnPT0iLCJNSUlEUGpDQ0FpYWdBd0lCQWdJVVh6ZWlFREpFT1R0MTRGNW4wbzZaZi9iQndpVXdEUVlKS29aSWh2Y05BUUVOQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU1aNi9UeE04cklUK0Vhb1B2Rzgxb250TU9vLzJtUTJSQndKSFMwUVpjeFZhTlh2bDEyTFVoQlo1TG1pQlNjSVpkMVJueDFvZDU4NWgrL2RoSzdoRW03SkFBTGtLS3RzMWZPNTNLR05MWnVqejVoM3dHbmNyNGh5S0YwRzc0Yi9VM0s5aEU1bUdORDZ6cVljaENSQUhmcllNWVJERjRZTDBYNEQ1bkdkeHZwcEF5Nm5rRW10V21NbndPM2kwVEF1Y3NyYkU0ODVIdkdNNHIwVnBnVmRKcHZnUWppVEpDVElxK0QzNWh3dFQ4UURJdituR3ZwY3lpNXdjSWZDa3p5Q2ltSnVraFl5NktvcU5NS1FFZHBOaVNPdld5RE1UTXQxYndDdkV6cHc5MXUrbXNVdDRyajBlZm5POXMwWk93ZHdNUkRuSDR4Z1VsNVpMd3JyUGtmQzEvMENBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUI4R0ExVWRJd1FZTUJhQUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUU13RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCRFFVQUE0SUJBUUMzSVcvc2dCOXBaOGFwSk5qeHVHb1grRmtJTGtzMHdNTnJkWEwvY29VdnNyaHpzdmw2bWVQTXJiR0pCeUoxWG5xdUI1c2djUkVORnhkUUZtYTNtaW84VXBmMW93TTFacmVYckowbUFERzJCcGxxYkpueGl5WWErUjExcmVJRlRXZUloTU5jWktzRFpyRkF5UHVGakNXU1F2Sm1OV2U5bUZSWUZnTmhYSktrWEliNUgxWGdFRGx3aWVkWVJNN1ZvbEJObGxkNnBSRktsWDh1c3Q2T1RNT2VBRGwyeE5GMG0xTFRoU2RldVh2RHlDMWc5K0lMZnozUzZPSVlnYzNpcm9SY0ZEMzU0ZzdyS2Z1NjdxRkF3OWdDNHlpMHhCVFByWTk1cmg0L0hxYVVZQ0EvTDhsZFJrNkg3WGszNUQrV1ZwbXEyU2gveFQ1SGlGdWhmNHdKYjBiSyJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFmQ0FZQUFBQ0dWcytNQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUhZWUFBQjJHQVYyaUU0RUFBQWJOU1VSQlZGaEhwVmQ3VE5WMUZELzNkNTl3ZVFTSWdTOUFRQVhjRkxBUVppOWZwZVZ6MXRZL1dUWnI1V3hwYzdXNWtuTGE1akkzWjg1c3JTMm5NMnNqdFd3WlM3SVVINEg0eENuRVF4NERBWkY3NFY3dXM4ODV2OS9sSW5CdlZKL0I0UHY5bnUvNW51LzVudk01NTZmekEvUXYwSGIvSXJYM1ZGS1BvNDVjbm00aW5VSVdZd0xGUm1aUVV1d2pGRy9OMWlSSGgxRVowTlJWUnVkcXQxQmQrMm5TS3lTL09oeXMwK2xrM2UvM2tROXF2RDRaVXRhNFZWU1V1WTBlaXB5aVRoQWZvY29PUlZnRHV1dzNxS1JpQWQzcmJjRXRqVGpZSW9mNldhSHNDbXpWUFdDTXgrY2doOHRMcVdNS2FNV3NVakxxbzJSdEpJUTBvT3ptZXJwUXU0ZXNaZ3NPTmtHeEg3ZDBrZHZUVDE3czRPTVU3Vkk4WmhqZ0dhTStBcTlpRU51OFBpZjF1ZHowN013dktXZjhHbFZvQ0VZMDRQQzVXZFRhWFlGYlI4dk52TDUrM0tnZmI1eE5NeWE5UmFtSml5bmFNbEdUVnRGbHI2YmE5dStwcW5FWDR1TXVSUmdqU1lFaHJON3V0RkZlNmxxYWw3TmZrdzVpbUFHSHluUHBiazhWbVkweHN0bnB0bEZDVkNZdHpUdUJOODNRcE1MalR0ZXZkUHpTVW5KN2U4bWtqeFozOWZYYktEZmxkWnFidlUrVFVnR25CVkY2ZlEyaVBIZzRXMTZVV1V3dnpiazE2c01aRStQbjBwdno3SlNldUF5ZXM4bGNwQ21hS3VvL3ArcVdyMlVjd0lBSFdydlAwWUV6aFhBdExBYnNzSGhwN2lHYW12eWlqUDhyeXFyWFVXWDlYb293eHlBdWZOQnJwNDNQT0JGWFpsa2Y4TURSaXFjcHlvd0F3cHV6MngrZld2ei9EdGRlOXNtc3p5Z3RjUjZDMXdiZHpCbDZPbHE1V05ZWTRvR2F0aEpNcmtURXgwakFSU0hBVnMrNXJZa1FOWGIrUWdmUExzUTZnWHlJbnNyZVFmbXBtN1JWRllmTDg2bjFmaVVPa1l2U2hrVVB4dmJ1a3pveTZLMWloTTFobzNYelc2RXZTZlhBK2RwaVdHYVdkK2RvWHpMem1Hd0tZRkxDQXNSQWxQQkFoTWxDRlhVN3RCVVZQcjhIZ1ZjSkhXcStGMDBwbHIrRE1UZHJQNHp2eFkxMWtOTWh4VCtTZVRHZytkNFY1TFFKaXR5VUdKTkI4VkZac2pnWUJaTS9JSS9YQ1RrajBxeURPcEYyQVZRMTdDSWpVcC9EblQxVWtMNUY1Z2RqK3NTMXdnMWdFM2dpZ202MGZDWHpTblBYYnlBUGJJWHYrSURwRTE2VGhhSElTOXNreWhsbU1FNUYzY2ZxQUtocTJDMEU1UEgxZ1lhWGFMUERrWkcwSERKT25LV0hwNTFJMHo1U091eDhlMVdBdVp6ZEhRclRrcDhUbWpYb0krbGEwd0dac3p1YnFiTzNpZlE2QS9XN3ZWU1lzVjNtUjBKS3drS2M0V0hpQmttUjhJM0NDZ0k4N29PTDRxelQ1UCtSVUpCZWpFT2dBUEs4aFlQemF0TStlSVRwMklPOXlUUW1lcm9tUFJ4eDFxeEFjc2lsZS91YlNlRWJjV1FHWUVDZ2hjTFkySHlLam9nakgyNWhNcGpwVXYxT3VnbGk0ZWgyZVJ3ME8zMmJKamt5dUNnTnpnMHZ6bFlNU2lTczB1b280TUc3aE1PakNFYVgxeUZFMG5TdmpCenVUbkVwSzg2WjhJb3FGQUl1Ync4a2c5QXJFYVJFV1NaSStqSDRYYnA2ZzlFOUVuSlQzb2FSekROK01VSkJRREhuNTZhOG9VbUVCdXNPeEJzL041K3RKRWJQa0FGRGo4VUd2T3MvSVd2Y1NnbEdCaHZTNy9GVFlmcFdHWWREWThmUEF4V1NBMzVzVEM0cDQrTG00QWFxSW9QZVF0ZnVmSzZKaDBaaHhsYnNVWE9TbVhOaWZENVpUQWt5RG9mYmJjY2x4bkE4V05BcXhDYlJOeWtoWHhRcGFEdzY3ZlhVWWJzaUcwS2h0djJvZUl2aDhyaFFNWU9jRUFxWEcvZUkrem5nT2M1eXhyOHE4MklBTTFjL0ZMRk9wbHF1NWVGUVhyTVp6R2NWQ2pZYkxXRzVJNEJUMWV1UnJsYnh0Tk90TWl0RERFaExYSUl5bkFBdnVPRVdFM1gzTmRBZnQ5NFZnYUc0MlhJUXQwWlg2UGVDRS9xUUZlOXJLNkh4N1lVNTBLdkg3Zlc0ZlMrcTdLS0JKeHNnZ0JYNXBTQUdoMWpJclZoNXpRNnczUmZhYWhCWG0vYUNiQ1pUakNVRlVUeVdacVc5cDYyTWpKUFhWcU9yUGdNTzROdjc0R2tmK293ZnROVkJEUW5qRkpxSFN3MTdwWHZoV1c1S1pxZS9RNDlOL1VTVENBVldvUVhGSUhCSFhYZTNGUHJVRHN1R0RtdEYvaEhLVEhwZWt4aGlBT1BJK1NKcTZTNkhGNEk5WVd6a0JKVG80NmlVTXpXcDhQaXIvUmlkdUx4S1lzU2tzVjh2TGxPUXZoR1gyWWxSME9CaEJqQyt1L2dFY3ZZMEFwSzdZazQxTnhqUFNRbldGSFRGNjZVcmpnZXZCOEN1NWErbDJ2WVNSUHR1VkRvNzNoaGRNU0huVVg3dFRqc1ZaR3hBbC9XcHRpT0lFUTFnbkwyOW1YNi90UjF0bWxrWWo4VzRYK0NTaldjVURHWTFOcFMvQzdoU0txaU1MTS9sMlFtU1daNzNEZHorZ2lvOEJDRU5ZUFE0NnFua3p3WFVicXZCa3hqVVFzV2ZaRmdidW8zckFmK3dON2pPTzkwK3lueDRQaTNMKzBuWUwxU2NoRFVnQVA0Z1BWLzdJZDFxKzFIU2htdUdrSXFXUlBneXhNRnFQOEhmalRualh3WTViUWZiSmN0Nk9JektnTUhvdEYvSGUxZWdzYXhIU3FHNndmZG1RNXg4TnlURkZxQmNwMmlTb3dIUjN5azUrMzZoRjd2WEFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xX1BSRSIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsImxhcmdlQmxvYktleSIsImNyZWRCbG9iIiwibWluUGluTGVuZ3RoIl0sImFhZ3VpZCI6IjQ1OTkwNjJlNjkyNjRmZTc5NTY2OWU4ZmIxYWVkYWEwIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibGFyZ2VCbG9icyI6dHJ1ZSwiZXAiOmZhbHNlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6dHJ1ZSwiYWx3YXlzVXYiOmZhbHNlfSwibWF4TXNnU2l6ZSI6MTUzNiwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0Ijo4LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjEyOCwidHJhbnNwb3J0cyI6WyJ1c2IiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotOH0seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTM1fV0sIm1heFNlcmlhbGl6ZWRMYXJnZUJsb2JBcnJheSI6NDA5NiwibWluUElOTGVuZ3RoIjo0LCJmaXJtd2FyZVZlcnNpb24iOjMyOTQ3NiwibWF4Q3JlZEJsb2JMZW5ndGgiOjMyLCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6MSwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjEwMH19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTEyLTIyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZdWJpS2V5IDUgU2VyaWVzIChFbnRlcnByaXNlIFByb2ZpbGUpIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNDEyMjIwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMi0yMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzZ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDEtMTAifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyIzMjUyNmY3M2RmY2ExMmRhOWMxZDg3ZDZlMGFkYjY0ZTg0M2Y3M2RhIl0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjMyNTI2ZjczZGZjYTEyZGE5YzFkODdkNmUwYWRiNjRlODQzZjczZGEiXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlRydXN0S2V5IEczMjAgVTJGIEF1dGhlbnRpY2F0b3IifSwiZGVzY3JpcHRpb24iOiJUcnVzdEtleSBHMzIwIFUyRiBBdXRoZW50aWNhdG9yIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJyZW1vdGVfaGFuZGxlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjI1NiwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNwVENDQWtxZ0F3SUJBZ0lCQVRBS0JnZ3Foa2pPUFFRREFqQ0JyekVMTUFrR0ExVUVCaE1DUzFJeEVUQVBCZ05WQkFnTUNGTmxiM1ZzTFZOcE1STXdFUVlEVlFRSERBcEhZVzVuYm1GdExVZDFNUmN3RlFZRFZRUUtEQTVsVjBKTklFTnZMaXdnVEhSa0xqRWlNQ0FHQTFVRUN3d1pRWFYwYUdWdWRHbGpZWFJ2Y2lCQmRIUmxjM1JoZEdsdmJqRWNNQm9HQTFVRUF3d1RaVmRDVFNCRFFTQkRaWEowYVdacFkyRjBaVEVkTUJzR0NTcUdTSWIzRFFFSkFSWU9hVzVtYjBCbExYZGliUzVqYjIwd0hoY05NVGd3TnpBeU1EVXpNVE01V2hjTk1qTXdOekF4TURVek1UTTVXakNCcnpFTE1Ba0dBMVVFQmhNQ1MxSXhFVEFQQmdOVkJBZ01DRk5sYjNWc0xWTnBNUk13RVFZRFZRUUhEQXBIWVc1bmJtRnRMVWQxTVJjd0ZRWURWUVFLREE1bFYwSk5JRU52TGl3Z1RIUmtMakVpTUNBR0ExVUVDd3daUVhWMGFHVnVkR2xqWVhSdmNpQkJkSFJsYzNSaGRHbHZiakVjTUJvR0ExVUVBd3dUWlZkQ1RTQkRRU0JEWlhKMGFXWnBZMkYwWlRFZE1Cc0dDU3FHU0liM0RRRUpBUllPYVc1bWIwQmxMWGRpYlM1amIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUUlmcUhpc2kwb08vZXlPcVNhRHJyOWl0RzJJeW1Ca0huU0RHUUlJWW1UK3ZxQThBZ084MW1vbWMyTGQ1UEdwRU42bXVFNTR3UEhRanZjL3lDaWg4dTJvMVV3VXpBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQU1CMEdBMVVkRGdRV0JCUzNKL2Z4aUF2MjJpcmRCczk4U09EaEY3a1UvakFMQmdOVkhROEVCQU1DQVFZd0VRWUpZSVpJQVliNFFnRUJCQVFEQWdBSE1Bb0dDQ3FHU000OUJBTUNBMGtBTUVZQ0lRRGM0MUxGSzRMSkNCVTJWVktJejdaNnN4UGhVRWtoOG5MU0xLNklYZGtQNXdJaEFJZUtWT1pjaGFWTzVhRjdmYmRYb1NyY3l5MVlZZVVlUExvamNLSTlmWDg0IiwiTUlJQ2dqQ0NBaWlnQXdJQkFnSUJBVEFLQmdncWhrak9QUVFEQWpDQm5URUxNQWtHQTFVRUJoTUNTMUl4RGpBTUJnTlZCQWdNQlZObGIzVnNNUkF3RGdZRFZRUUhEQWRIWVc1bmJtRnRNUmN3RlFZRFZRUUtEQTVsVjBKTklFTnZMaXdnVEhSa0xqRVpNQmNHQTFVRUN3d1FRMlZ5ZEdsbWFXTmhkR1VnVlc1cGRERVpNQmNHQTFVRUF3d1FaVmRDVFNCRFpYSjBhV1pwWTJGMFpURWRNQnNHQ1NxR1NJYjNEUUVKQVJZT2FXNW1iMEJsTFhkaWJTNWpiMjB3SUJjTk1qTXdOekV4TURNME5qRTBXaGdQTWpBM016QTJNamd3TXpRMk1UUmFNSUdkTVFzd0NRWURWUVFHRXdKTFVqRU9NQXdHQTFVRUNBd0ZVMlZ2ZFd3eEVEQU9CZ05WQkFjTUIwZGhibWR1WVcweEZ6QVZCZ05WQkFvTURtVlhRazBnUTI4dUxDQk1kR1F1TVJrd0Z3WURWUVFMREJCRFpYSjBhV1pwWTJGMFpTQlZibWwwTVJrd0Z3WURWUVFEREJCbFYwSk5JRU5sY25ScFptbGpZWFJsTVIwd0d3WUpLb1pJaHZjTkFRa0JGZzVwYm1adlFHVXRkMkp0TG1OdmJUQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJBaCtvZUt5TFNnNzk3STZwSm9PdXYySzBiWWpLWUdRZWRJTVpBZ2hpWlA2K29Ed0NBN3pXYWlaell0M2s4YWtRM3FhNFRuakE4ZENPOXovSUtLSHk3YWpWVEJUTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0hRWURWUjBPQkJZRUZMY245L0dJQy9iYUt0MEd6M3hJNE9FWHVSVCtNQXNHQTFVZER3UUVBd0lCQmpBUkJnbGdoa2dCaHZoQ0FRRUVCQU1DQUFjd0NnWUlLb1pJemowRUF3SURTQUF3UlFJaEFOVm5KZGUvL3RCTHE4TUREaStTQWQ2VWRZSVpTbmc0UE1xbXlOcnZaajY0QWlBWDB4U3pBaEZhQ0NwL3VocFZnbmxGK1hCZ3J3QUlzb3RaR1RCNnJrQjMxQT09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUdZQUFBQTdDQVlBQUFDSnovOUxBQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQXlacFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR3L2VIQmhZMnRsZENCaVpXZHBiajBpNzd1L0lpQnBaRDBpVnpWTk1FMXdRMlZvYVVoNmNtVlRlazVVWTNwcll6bGtJajgrSUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWtGa2IySmxJRmhOVUNCRGIzSmxJRFV1Tmkxak1URXhJRGM1TGpFMU9ETXlOU3dnTWpBeE5TOHdPUzh4TUMwd01Ub3hNRG95TUNBZ0lDQWdJQ0FnSWo0Z1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNGdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlnZUcxc2JuTTZlRzF3UFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdklpQjRiV3h1Y3pwNGJYQk5UVDBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5NFlYQXZNUzR3TDIxdEx5SWdlRzFzYm5NNmMzUlNaV1k5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5elZIbHdaUzlTWlhOdmRYSmpaVkpsWmlNaUlIaHRjRHBEY21WaGRHOXlWRzl2YkQwaVFXUnZZbVVnVUdodmRHOXphRzl3SUVORElESXdNVFVnS0ZkcGJtUnZkM01wSWlCNGJYQk5UVHBKYm5OMFlXNWpaVWxFUFNKNGJYQXVhV2xrT2pZMU5EWTNSRVpHTlRBd1FqRXhSVFk1UmpFelJqVkJSamhHUWpnek9ETXlJaUI0YlhCTlRUcEViMk4xYldWdWRFbEVQU0o0YlhBdVpHbGtPalkxTkRZM1JUQXdOVEF3UWpFeFJUWTVSakV6UmpWQlJqaEdRamd6T0RNeUlqNGdQSGh0Y0UxTk9rUmxjbWwyWldSR2NtOXRJSE4wVW1WbU9tbHVjM1JoYm1ObFNVUTlJbmh0Y0M1cGFXUTZOalUwTmpkRVJrUTFNREJDTVRGRk5qbEdNVE5HTlVGR09FWkNPRE00TXpJaUlITjBVbVZtT21SdlkzVnRaVzUwU1VROUluaHRjQzVrYVdRNk5qVTBOamRFUmtVMU1EQkNNVEZGTmpsR01UTkdOVUZHT0VaQ09ETTRNeklpTHo0Z1BDOXlaR1k2UkdWelkzSnBjSFJwYjI0K0lEd3ZjbVJtT2xKRVJqNGdQQzk0T25odGNHMWxkR0UrSUR3L2VIQmhZMnRsZENCbGJtUTlJbklpUHo2WHFBU1hBQUFRYzBsRVFWUjQydXhjQjFoVXh4WWVsa1Y2RVFVUkJTbkNMa1FUamUwOUV4RUZOUzhHRTlUUFJJMUdBUnNvZG9vUk5BSVdFRFVXRkxHaWFOUWsxc1Jnd1FxYUtJalJwOUtMWWhEQktLRXFMTzhjbU0wYkxoZDJGMHRVZHI3dmZIUHY3Tnk1Yzg4L1owNlptVlVscjBHeU5ETzNhNjJ2ZnhpbytISHhrMXRFbVlqS1B3eElLOGo4Z0w0R3d1cy9nTVJaZDNPTFd6b3dxdjhnS1ArQzdDZWdVZGdQZlgxOVVsbFpxUXZYT2lBMXg1VVM4K29CMFlFc0JHZ0d2dC9jM0x4eWUvVE9IRjA5UGMxLzkrNWpWbDFWSllIeWY0SFVYR25Kd0FoZU1Tai9nUXgxaUxlcXFxckszUG56MG44K0VTczVzRysvYldwS2lwbjN6Sm5wdEUrUlVGY29UNXVEdnN2VUFRb0hlbDhwTVlvRFlnVFpHcUF4ZUcvL2puM0o5dWpvd3JUVVZJc0Z2bjRrTnplWGdPUVFBS2xzc0pPVDJ2MjgrMnBRYlM1SXpTb1pvQ0RRa1VCbVFFbEF2VTkrWVZXdEJFWStVTVpCdGhxb2picTZPbGtTSEh4bjBKREJuWmNHaHdpLzM3Ky9YdDFwWGw3a0V4ZVhsS0VmZlNTQzIxSWdPd0RuTGc4ZzlZQm0wbXdBWm8xeUttc2FFQXVnV0xpTVJsRDZmdkJCNGRWcjErNXJhV3VKQnc5MGFnQUtwczJSa1VTb0poUzVEQnQySDI2MWdkYnhnSUpBMytZQkJWTVEvTjVSS1RIOGdLaFN4UjZNek5YUjBTRnJOMnk0SlJhTDdBTytYa2hPbnpyVjVQTTllL1VpMFRHN0MzcDJmOSs0ckJTRmhyaUMxQndDaGx2QTlTYWdJVEs2Y0JDa1pyaFNZdXFEMGhXeVMzVHEwbmI1OU5PODM1SVNDL1B1M2JVZjVPUWtFeFJNVjY5Y0lZY1BIaklPQzEvNTM5cVJJMUJkNTd6cjFnSnFOSEJCeVFJYUJ2UTdVK1lLSUE1VFNrd2RJQnJVU1VSblVXaGtaRlMxZGNmMmRFMHRMYkhmZkIrU2VQV3FRdTJoVDNQcTdKbHFULy9nZ3NMZVgxYW82aHBhY3FwVVV4MFRDTkpSQmtEMGh1dkx6UGVnWHJLSDMwcGFyTVFBS1AwZ1N3WmFxS0tpSW5UejhNZytueEJmRVhjNlR2eng0Q0VLZzRMcHczNzlTUEtEaXZTS0liTk1lRUM1am40T01IMGVnb0lGa1A4R1dRUlRCNjIwSlMxU1lnQVFQY2hDZ2FiVTNsdFpsWU9qbVBlb3FLaXpMMGdKbU1JS3QyblN2ajN4WFJoUUZLL2JveWI1UVhsYnpzK1ZRTjhBaFFFUVZUeEdBZlluQlp0aHBBck41NlFXQXd5QThpa2RvYWFxUWlIeDhmVk5Hek4yakhsNDJFcjE2SjA3aVVRaVVhd1RLaXBrek5peGtoNmp2ZEszcER5MWZWcGR3NjF5RG1nU01EbE5obCtENFoxOXJNb0M2Z1BQU2Q3cXFRd0FNUUU2QUplSEVKVDN1blVyL3UzcWxSeGJrYTNOa0VHRDFIZHMzNjR3S0ZiV1ZpUmk1Kzc4aC8wOXl5SnVWWEpCZVVJbGNvQXNVT2lVaGpZNEcyZnJDZVQ1MWtvTWdJSDFKZ0tGQXhsb2FtcVNwY3VYMytubjBNOG1hTWtTVmJDaUZINHhTdHJVYWRPcWpBYU55OW1UV21ZdHFXbG85Z0pOQjJiZlY2UmRhbGFqQmFkSmkvNENFaXZhem1zdk1RQktaOGhPQTIxRlVCd0hPRDY4Y2kwcFgxSWpFUTl5Y200V0tOMjZkeWVSZTMvSXVXNzNlZlh1bEFhZzVBT05RRitrT2N5RVo3SWhXOHdVWWNSNjdWc2pNVFNJT0lkK3BLYUJnVUhOK28wUmR6cFpXTmg5N2VkUHpwODdwL0RMdExTMGlQZWMyUldWUFZ3TGpxYVhtUE5VaVFMeUFlWStmcDZQQXFsUm83R3pMa3l4QzdSNzdJMEdCa0RCU08wV29PNTRQM0xVcUh0QkljRmFlMkppRE1ORHcwaFpXWm5DTCtydjZFaStuUE4xeHFac0RZc25sZFhjZFNEVUg1T0JjV2RmMUljQk9IMGh1OGg4WXk3MWJVcmZPR0FBRUMzSUZnSE5SVFhRM3RUMDJkYnQyeklGQW9FSVRlRHJ5Y2tLdjZDMW9TR1o3NytnT0tXalExbjh2VElUSGtjeERNMWdZRmpGaS80NEFHZVQxSnluS1J6OW56Y0tHQUJsSUdTYmdhelJmSjNxNlprNVk2WjN1NGoxNjdVM1Jtd2sxVlZWQ2pmdU9udzRjWm80T3pVeXZjYTJ2S3FCdFpZSTVBR01TbjVaSHdmQUdFQjJCNmdkTXhCNndEdXZ2L2JBQUNDdHFiV0ZWaGV4c2JFcDNiRXIra0ZlWHA2Vm40OFB5Y3pJVkxqUkRoMDZFTDlGM3hTZVZ1c2l1RmxZWWNqNXVSd29BRU1xcjJMdEJNREJLSFFNVS9RclVOL1gzYmRCWU5DMHRFUHpOU0F3TU5WMXhIREwwR1hMMVdKMjcxYmN4Qk1JeVBnSkV5VDJ3eWRuYkV1cHRLbHFhQU5qRkhNS01DWHpWWDRrZ0lOS2Z5aFROQTM2c09sMUI4WU5UV0U5UFQyU21IeXQyR3VhcDk2SjJGaUZHeEtKeFdSdXdEZDUrMHJOREhLZVBOWG0vUHlJV25qUndKQWFva3h5QVlONkJxMGhCemQzOTV5aExpNmRScnE2a3BvYStmalhxbFVyNGpsOStsT3QvcVB6RHFTVld2STg5aDJRTndEeVVNbHVCWlUvYnJpRExCbVVmcXZ6Q2ZFWm16WkVXTXM3bGExY3Zhcm1pRWFmcXZzbHo5UTRQMkhvZlNvQThyT1N6YzMwL0xQdTV1SlM3UXFVRXZjSkU5dlA4L1dwYXR1MnJWd05iSTJLVW5HeDBzcmlGQ2RSbjBFSnlnc0l5U3hGUnk4MUpVWHJsNStQWndZc1hpUlhBN2R2M1NaRjV3NVlkOUJWSzJlS2NTWFRYTW5lRitkZ09tTzRDWGV6Z0NHUTd6bDFtb2s4b1JjTWFtNC9lQ3hyNFExVmRsRUx2VzZIbDZYc3Jjdzc0Y2p4SW5WYmE5SDBIWkdabTNPR1U4ZUYxRzNvMEtmZmluMlpBZlYyYytyWlFuWUN5SUFXZVVHZEdDakhWVkZjZE9NYU00VkE5MGpkY2tRVTFMM0gwei84Zm93emF0QWlESmQwZzdvRm5IcG9GTTBDMG1PS2crc0ZNV0ZLUTNNMnByS3lra3ozOGxKZEVoSk1ORFEwWkRLcHZMeWNSSWFHV0g1aXJadkxGSDhJNVA0U0IxVTJrQkZsT3ZwaS9YanFvSmZmaVRKY24rYURlZXBOcHZXd0RvYUxmcUxsR0pJeXBlVXNXV09VQ1NnUUp3MWdiaGNPczhXUWZVQWRXK2t6N2FVaExxWWV2bXMyQlo5dHZ5TmZkQmtSL1BOczNCbWpnZ2NQN25qUG1pa1hsODdFeFpGT2VRbHRkRnNKV0FrSkJSL0N1Qm5TSUFLS0Fzb0dlZ1pVQ1pRT3RBYklrSkZJTnZYa3RQRU9TaXhQOHowNDlWRGl4ck5xRTBiMVl5alhwTklvVFJzcHNDSnFhVXFURGdXV1RRTTVEclUwdmN1cGg1dExwTnV0MkkzMCtnMkFBYWxCVWZPcDljSW1UN0daNk81ZWJDc1N5Y1hRWlVGQjJyTzZhS1N3b1RLZ1ZRcUNnbEoyRThNMWRCUUxLWU53bE9JbzJZdjFnSGtacEc2SmdKZmgySDNtK2dSekxZWjM2REwzbjFISms0WnNwQnNHRFRqdFBZWjNQZ0ZLcGZFOU5tazBBY3paSm9DWlJIT01FNTVrMjJ0c1BRYlhYaTRXRlJXcHJnd05lN1IwK2JMYTVWOVpxYUNnZ0p5S1hpL3UxazZ6aUNrZUMxTGpMQ2NvZzJtOERzRkFTODhScUEwMVRLVEprYVBIcE1rVW5tOUgyOUhoU0VFbzFTOVNnNGVkVWp5WTZ4K0I4ZG1OQWNOYzkyYXVKV3pJQjk0dFlQcUlEUCtGRHhpb2h3SGRUK2d0VHAyVnJOcm1CUWFrQmo4Q283TFB0bTNaWW1GaTBqNXo5Smd4Y28zNDNkRzdpSXRHcmtRb3FBZmtKZ0JIUXdZb21uUkFTUHMwR3BoMERnaWpCbjh3VmU4MUFnejc0VitSdWdVeVRLajM0amh0OUtMdnRJS01IVFRoekRVWG1KRlFmdzlRRXAzV0NHM3pDK3ducHc5dDZEVktQaHQrc29mbjFaZytTamZPNytFWUdIcU5ybUFDT0JoREMwWGZ4bTNDaEhiei9Yemw4bTJ3L3ZMRmdVYnU3K2l4MjJSd0dsb280OUhSekh5Ymcwb1lQc0lOQ0RkWGZNc1ovWTBCSTZiNVZLWXNHaGhYUTVuRTFVZHVqR1VhRC9WK2JRS1lYclNQVW1uRC9RZzdnTTQzTVkwbEFHVXc5MEk2bGFvd2t2cUlNVFprVG1WL20yM1lNUGcyMnJISGY4bFF4TGNwUExmZnlsU25ubS9qQTFKajM4Umo3QzVMMUMzeFZJSkdVU25DSXhxamdIbVJURDFjTW1BWHZtemhvOUU2azFwSkNNZ1dlbjJOTTNMUklwcllpTFR3QVJOS2xUeWU3Y21qMXBNLzBPL1FsblVqd0Z3QVNxV21NanQ0K2xKVEdsTU1mRk1sQlZxYXRKb0VCcVNtUWpyNkZnVUVpSnljblBMN09UaklCYzdhTld1RTB5d3FXT1dNSXJ3UndHbE1XWWs0OHpsdTR2c1JLSWlhcGlMNGdBUHNBM0NQeXZvU1U0UW02UVRtL2lqVXlhSFhpU3lBbElHbTlCNUJQOHpwVDJ2T1Blb2Y5RmtXVWxkQW10RHE5S05UbzVDeEJIRlF4TkUrM21BSEJmcGN6SDBVVTEvMlZNYnhiZlpRMzBZUUJMNE5PcUR5K0RhYncwSXNQN2JXWlk5Uk9IQkdLWnVlTWRjcDhFRjlnTkJwREFRNkQ5VFkrZ2s3bmFIeWQyWHUxelBYaVJ3cmlsM1pYTVBUUGxkaS9tU3VjWk1JdTNKb3cweVJVdDJXUlBXalZMTFp1aVBwOVJXb0l3V05WZjdxOHU0clE5L21NZmcyeG1CNTNaNHgwMXR1MzhZeUw4RlFwNzV2RTBiUHR6U1lBWm5yUGpENkZnQ3BNOFpCTzZCeFFKMmJBS1lQTTlMUmJEL0ZTRmNtaDdrdXpCeS9nNmMvdk1CUWl5K0VVZHlZcENldG5Sc3gwWk01VTdZWlIxcTQvbzYyWE1DQTFEeUF6SmY2TnJidWt5WVYyOWpZeU8zYnpLenYyeGp5ek9lRUtuaFdhdkRqaTRFUkdVRDNxYzhTVFEwSk5sMm0vb2QwdXBTbURWVHBrMGFrUnVvOGJvSjZwWElBa3dqOXlLVkFzdnNHMHVoMHl6WGxUelVDak5TQ0t1VTRxbXpTVldRbkpxS2I4TGR2czJLNVhBK2hieE1IdnMyN1JocVBtT0p4SURWT0hIMlJTTzM2VEE3enJLanV3RlRFc1hJSVplcGx6bXZ4WFR0NXVoUFA0NXVzYTZUclhHRE1LS2t4RW9rT2IzZm93eDgwZ3ZBaE0vb1RtR2R2VUgrSFRmdmd1YitZZTFiNUN4VGF1MnhwWm81aERseTNFVjY4bEpDeGJ1MWE2Ky8yN0pVZEtRWG5kTWUrL1FYTDdob2JNOHZOT05MZTVlNk9vYVprVjZva05hbFNmRXo5a1p2d01VOTVmQ0Jrb2dXckE3akJRa1k1MnpPK1VoN1VlOWlJWDlXUkdkM2NsQS9QNWZNODA1WEcya3JoOXpSdW1JbjhmM2RvN1ppQ09zWE03MjJZS2U2WndwdktBUnowd3YxdFJhTFNmZDhmVUhkMkhDQUVLWkw1bkoyOUhabXdhazlhMUkwbjdCd1lCTUFFS29QOERWTnp6c2ZnZkpxSnZzM0oyTmlNZ0VYeSt6YVB6dTIzQk4rR2xSQmZtTkxzbEREd3pETE5lUWlrQm1OYXNiZ2tjRFg1V3Y3VVNaTk5MbDY0SVBNNVhMZlo5dU94cklDYjlkWnQwSE4yVkc3U2VINkpRU3NOVGNHOUZSVVZaT2IwR1lMZ3BTR0srVFpXdXZmazlHMlVFdE1NcVVGbkRuYzVHbngvOE9EdHk1Y1M3TUJhayt2WjFldldsZTZVdktkVjhsU2l3bGhSNHVmWlNRTlRZbjhhTm1uSEhRK29FNkh0UXkwQ0dBb09obXMydG0zYnR2ckNwWVN5WVI4UDFVMUxrM20raUJnYkc1TVZlNCtsaENTVnNXR1lYY0M4OGMwQVJKK0pZM0hUV1ZLM1dUM3RUWk9ZNXowY2kyc25sd29MQzFWWGg0Y1hCaTliS3JkdmszeHNyNmlyRE45R0RsQStvMTQzRnhUMENYQVJhdUNiQ01wekF3TzZSa0pqVGxWUmtac3R6Y3pNTWtkOThYblRMeFFJeUVRM04rSXh5YU9pL2QxTGVaeWZJNERaNm5JQVlnTDBBNms3ZFdiS0RUYlNhWEhMbTJ4UXZLaHovaGdHOEJXSnhTVjc5Ky9UY0I0d1VQaUl4N2ZCSmVvVllhR2tkZXZXNlYrTkc5OHhKenRibzZQbnVsc2FsbDNaNVFBOGtyRzRFVUN3djI0MHBLUFArUm5ETm5nMDhHQ0x0Y3A0RXA2cHowcTVjMGZuMU1tVDZRc0RBdXI5aU50b1o4K2RTdzRmTy9yWDBjTkhjZ1k0OU8rTW9HQlk0ODh6TWY1VStVdVRQd0FnNGdGRmV1UndDdzhvT0tYYXZ5Mmd2RENKb1ZMekVXVEhwYjdOWkhjUGs0VDQrTnIvaGxrV3VvS1VsWmFtZUV4MHMzNzQ4Q0dHUlRCa2psSVdnbXMrd1BUYWplMGNwWTM2b1FaK3EzZmtrUE5hWElUQ1krYm5sZVp5MCtCZ3RQUnpKMmZuZ29CRmdjWUo4UW5FZGNUd1FwKzU4NTRlUFhKRXFndHdBY3dEQUxuQm1hS1F1ZXdDRlBvMjE2bUVjUDhrRG9GRjIzekp5emlKOWpZQ1kwSjlHMzNRTmFubFplWFYzdE9uMjVXVTFQNmxDMGFCOGY5bTFnTW8xVHhURmVvWkRJOUxvN2U0SEl1R0FQZThKdjZwZ2pzQThydlN3V3lHYjhNcHhnTTNVd0NRSEJuV1ZqQUZqeThoVUtpOHZuMWIvc1h2VlFPREJnV3VSZUJxSXBwbXN3R1FYWEw2SldnUTRHNFc3bUlZYm9iRGsyaFp5cERNODRHRGU2dHcvZGtmUUZFb3pFSTNCNTVrUWpWekFKQ2R5bGpaYTVBQW5CaXFXL0FrV2dGcGdlbC9BZ3dBbmJZcVE4cmd0TThBQUFBQVNVVk9SSzVDWUlJPSJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIwLTEyLTIxIiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJUcnVzdEtleSBTb2x1dGlvbnMgVDMyMCBVMkYgQXV0aGVudGljYXRvciIsImNlcnRpZmljYXRlTnVtYmVyIjoiVTJGMTEwMDIwMjAwODE0MDA0IiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjMuNyIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4wLjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjAtMTItMjEifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIwLTEyLTIxIn0seyJhYWd1aWQiOiI5ZDNkZjZiYS0yODJmLTExZWQtYTI2MS0wMjQyYWMxMjAwMDIiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjlkM2RmNmJhLTI4MmYtMTFlZC1hMjYxLTAyNDJhYzEyMDAwMiIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJBcmN1bHVzIEZJRE8yL1UyRiBLZXkgQ2FyZCJ9LCJkZXNjcmlwdGlvbiI6IkFyY3VsdXMgRklETzIvVTJGIEtleSBDYXJkIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEwMCwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9LHsibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo2LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo2LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDK2pDQ0FxQ2dBd0lCQWdJVVRYSnkyOGxwUVZsaElwN0VUQmkrVTRiY2FEOHdDZ1lJS29aSXpqMEVBd0l3Z1lBeEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlEQXBPWlhjZ1NtVnljMlY1TVJFd0R3WURWUVFIREFoVGIyMWxjbk5sZERFVU1CSUdBMVVFQ2d3TFEyOXRjRzlUWldOMWNtVXhFREFPQmdOVkJBc01CMEZ5WTNWc2RYTXhJVEFmQmdOVkJBTU1HRU52YlhCdlUyVmpkWEpsTFVaSlJFOHRRMEV0VW05dmREQWdGdzB5TXpBME1UZ3hOVFExTlRCYUdBOHlNRFV6TURReE1ERTFORFUxTUZvd2dZQXhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJREFwT1pYY2dTbVZ5YzJWNU1SRXdEd1lEVlFRSERBaFRiMjFsY25ObGRERVVNQklHQTFVRUNnd0xRMjl0Y0c5VFpXTjFjbVV4RURBT0JnTlZCQXNNQjBGeVkzVnNkWE14SVRBZkJnTlZCQU1NR0VOdmJYQnZVMlZqZFhKbExVWkpSRTh0UTBFdFVtOXZkREJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCQ2dHN3I2VkEvaCtCeW5VbnlEWk1EMFZaa1lXNlJHbnBoMHcyNWdRRFdNb3FBYWlVYUZHNU1DbGtoYWtJQnBMRis2eEpCaE8xZ3MrN0Mxay9qdVZ1djJqZ2ZNd2dmQXdIUVlEVlIwT0JCWUVGSnoxZ0Z0VFRCTmZmZkRLdmRqcFVFeXA3MHp0TUlIQUJnTlZIU01FZ2Jnd2diV0FGSnoxZ0Z0VFRCTmZmZkRLdmRqcFVFeXA3MHp0b1lHR3BJR0RNSUdBTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNBd0tUbVYzSUVwbGNuTmxlVEVSTUE4R0ExVUVCd3dJVTI5dFpYSnpaWFF4RkRBU0JnTlZCQW9NQzBOdmJYQnZVMlZqZFhKbE1SQXdEZ1lEVlFRTERBZEJjbU4xYkhWek1TRXdId1lEVlFRRERCaERiMjF3YjFObFkzVnlaUzFHU1VSUExVTkJMVkp2YjNTQ0ZFMXljdHZKYVVGWllTS2V4RXdZdmxPRzNHZy9NQXdHQTFVZEV3UUZNQU1CQWY4d0NnWUlLb1pJemowRUF3SURTQUF3UlFJZ2NnWEdNRFAycmZoNEVUWTlFSkx3dVhvMVM5VWlxdEVtUGhxOS9kaVMwbkFDSVFEb3lMWm9zeDhyUkFGMXZwUlhjc1ZRRERTSG9Fcy9QYm1GM0VyL21KMHg2dz09IiwiTUlJQzVEQ0NBb3FnQXdJQkFnSUpBSjFtZ1grVEtpSDdNQW9HQ0NxR1NNNDlCQU1DTUlHQU1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQXdLVG1WM0lFcGxjbk5sZVRFUk1BOEdBMVVFQnd3SVUyOXRaWEp6WlhReEZEQVNCZ05WQkFvTUMwTnZiWEJ2VTJWamRYSmxNUkF3RGdZRFZRUUxEQWRCY21OMWJIVnpNU0V3SHdZRFZRUUREQmhEYjIxd2IxTmxZM1Z5WlMxR1NVUlBMVU5CTFZKdmIzUXdJQmNOTWpNd01URXpNVGMxTlRNd1doZ1BNakExTXpBeE1EVXhOelUxTXpCYU1JR0FNUXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0F3S1RtVjNJRXBsY25ObGVURVJNQThHQTFVRUJ3d0lVMjl0WlhKelpYUXhGREFTQmdOVkJBb01DME52YlhCdlUyVmpkWEpsTVJBd0RnWURWUVFMREFkQmNtTjFiSFZ6TVNFd0h3WURWUVFEREJoRGIyMXdiMU5sWTNWeVpTMUdTVVJQTFVOQkxWSnZiM1F3V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVIzTmxzbHBFcFgvQmlaOVJwV0UrcXJtMklSTUxpM2Jrc2RhSFNwQTgrb3pVYUZhdlQ0TDBwUFNMQmhuVFJGMTVDYVRISk1jRVVHdWdyL3hvR1RkTE5wbzRIb01JSGxNQjBHQTFVZERnUVdCQlI0ejc4c1RtYWl3SEJ3MGZ6VjY2VzZmbC85V0RDQnRRWURWUjBqQklHdE1JR3FnQlI0ejc4c1RtYWl3SEJ3MGZ6VjY2VzZmbC85V0tHQmhxU0JnekNCZ0RFTE1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBZ01DazVsZHlCS1pYSnpaWGt4RVRBUEJnTlZCQWNNQ0ZOdmJXVnljMlYwTVJRd0VnWURWUVFLREF0RGIyMXdiMU5sWTNWeVpURVFNQTRHQTFVRUN3d0hRWEpqZFd4MWN6RWhNQjhHQTFVRUF3d1lRMjl0Y0c5VFpXTjFjbVV0UmtsRVR5MURRUzFTYjI5MGdna0FuV2FCZjVNcUlmc3dEQVlEVlIwVEJBVXdBd0VCL3pBS0JnZ3Foa2pPUFFRREFnTklBREJGQWlCcGVLRk52ekZ2bit6WThjUWRtRkdydGwwMUp4eWxsYXZscXh1dGMyeHRSZ0loQU8wMWVGc1V2VERka1RlSG05ZUF2d0xQNXZYTklyVTNNT3hqd2FJbHRhT1kiXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBK2dBQUFQb0NBWUFBQUJObzlUa0FBQUFCR2RCVFVFQUFMR1BDL3hoQlFBQUFDQmpTRkpOQUFCNkpnQUFnSVFBQVBvQUFBQ0E2QUFBZFRBQUFPcGdBQUE2bUFBQUYzQ2N1bEU4QUFBQWhHVllTV1pOVFFBcUFBQUFDQUFGQVJJQUF3QUFBQUVBQVFBQUFSb0FCUUFBQUFFQUFBQktBUnNBQlFBQUFBRUFBQUJTQVNnQUF3QUFBQUVBQWdBQWgya0FCQUFBQUFFQUFBQmFBQUFBQUFBQUFFZ0FBQUFCQUFBQVNBQUFBQUVBQTZBQkFBTUFBQUFCQUFFQUFLQUNBQVFBQUFBQkFBQUQ2S0FEQUFRQUFBQUJBQUFENkFBQUFBRHJFZUtrQUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUN6R2xVV0hSWVRVdzZZMjl0TG1Ga2IySmxMbmh0Y0FBQUFBQUFQSGc2ZUcxd2JXVjBZU0I0Yld4dWN6cDRQU0poWkc5aVpUcHVjenB0WlhSaEx5SWdlRHA0YlhCMGF6MGlXRTFRSUVOdmNtVWdOaTR3TGpBaVBnb2dJQ0E4Y21SbU9sSkVSaUI0Yld4dWN6cHlaR1k5SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpFNU9Ua3ZNREl2TWpJdGNtUm1MWE41Ym5SaGVDMXVjeU1pUGdvZ0lDQWdJQ0E4Y21SbU9rUmxjMk55YVhCMGFXOXVJSEprWmpwaFltOTFkRDBpSWdvZ0lDQWdJQ0FnSUNBZ0lDQjRiV3h1Y3pwMGFXWm1QU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNScFptWXZNUzR3THlJS0lDQWdJQ0FnSUNBZ0lDQWdlRzFzYm5NNlpYaHBaajBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5bGVHbG1MekV1TUM4aVBnb2dJQ0FnSUNBZ0lDQThkR2xtWmpwWlVtVnpiMngxZEdsdmJqNDNNand2ZEdsbVpqcFpVbVZ6YjJ4MWRHbHZiajRLSUNBZ0lDQWdJQ0FnUEhScFptWTZVbVZ6YjJ4MWRHbHZibFZ1YVhRK01qd3ZkR2xtWmpwU1pYTnZiSFYwYVc5dVZXNXBkRDRLSUNBZ0lDQWdJQ0FnUEhScFptWTZXRkpsYzI5c2RYUnBiMjQrTnpJOEwzUnBabVk2V0ZKbGMyOXNkWFJwYjI0K0NpQWdJQ0FnSUNBZ0lEeDBhV1ptT2s5eWFXVnVkR0YwYVc5dVBqRThMM1JwWm1ZNlQzSnBaVzUwWVhScGIyNCtDaUFnSUNBZ0lDQWdJRHhsZUdsbU9sQnBlR1ZzV0VScGJXVnVjMmx2Ymo0ek1EQXdQQzlsZUdsbU9sQnBlR1ZzV0VScGJXVnVjMmx2Ymo0S0lDQWdJQ0FnSUNBZ1BHVjRhV1k2UTI5c2IzSlRjR0ZqWlQ0eFBDOWxlR2xtT2tOdmJHOXlVM0JoWTJVK0NpQWdJQ0FnSUNBZ0lEeGxlR2xtT2xCcGVHVnNXVVJwYldWdWMybHZiajR6TURBd1BDOWxlR2xtT2xCcGVHVnNXVVJwYldWdWMybHZiajRLSUNBZ0lDQWdQQzl5WkdZNlJHVnpZM0pwY0hScGIyNCtDaUFnSUR3dmNtUm1PbEpFUmo0S1BDOTRPbmh0Y0cxbGRHRStDbDlFSzM4QUFFQUFTVVJCVkhnQjdOMS9qR1ZaUWgvMmUrNnI3cG5wMzlWZFBUMWRWZDB6dXd3THc5aUUwUHhZMnlSdVNJUkRMTEJqNU1nRVFndzQvaUd3SEFLSkk1d2ZzbVhGaW1VbFZtSkhTcFJFVGtpa1NMRWk1YTlFaW1OR09KRWNkb2Rka05kcjBBSkRkanpzN0E0c0M3c3owMTMxN3NrNTU3N3FxZjVkVmUvWC9mRjVVRjJ2M3J2MzNITStwN2Fxdm5QT1BhZXFQQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQXdJb0V3b3F1NHpJRUNCQWdRSUJBdndYeTN3ejFyQWt4Zlc3NjNSeTFKMENBQUFFQ0JBZ1FJRUNBQUFFQy9SUHdIL1Q3MTJkcVRJQUFBUUk5RlBBTHQ0ZWRwc29FQ0JBZ1FHQ0ZBbm5VdkhuK3hvMnZtamJOWDZwQ2VDYjk4ZkRMNzd6NTVsOWVZUjFjaWdBQkFnUUlqRUpnWXhTdDFFZ0NCQWdRSUVEZ3BBSWxvTytINllmcnllU0hRZ2hWMDhSUHBjSUU5Sk9LT284QUFRSUVDRHhHUUVCL0RJeVhDUkFnUUlBQWdROEU2ampaaXJHcDhzM25JZFMvL2NFN25oRWdRSUFBQVFLTEVqaFk3R1ZSNVNtSEFBRUNCQWdRR0tCQVV6WFg4K2g1U3VlcGRkRi80QjlnSDJzU0FRSUVDS3hmUUVCZmZ4K29BUUVDQkFnUTZMeEFIY0xGTnB4M3Zxb3FTSUFBQVFJRWVpc2dvUGUyNjFTY0FBRUNCQWlzVGlETmJyOVl4VHpCM1lNQUFRSUVDQkJZbG9DQXZpeFo1UklnUUlBQWdXRUlsUDNPUTRqWGh0RWNyU0JBZ0FBQkF0MFZFTkM3MnpkcVJvQUFBUUlFdWlCUWhzM1Q0UGtMWGFpTU9oQWdRSUFBZ1NFTENPaEQ3bDF0STBDQUFBRUM4d3ZrZ0o1dVFRL255d3J1ODVlbkJBSUVDQkFnUU9BeEFnTDZZMkM4VElBQUFRSUVDRlI1eWZacWQzZjNtUmpqT2ZlZys0NGdRSUFBQVFMTEZSRFFsK3VyZEFJRUNCQWcwR2VCRXREdmJHeWtGZHlyUzMxdWlMb1RJRUNBQUlFK0NBam9mZWdsZFNSQWdBQUJBbXNVYU9LZHpTcVdnRzRaOXpYMmcwc1RJRUNBd1BBRkJQVGg5N0VXRWlCQWdBQ0Jrd3FVRWZTcTJUaVg5a0EvbmFhNGx4WGRUMXFZOHdnUUlFQ0FBSUVuQ3dqb1QvYnhMZ0VDQkFnUUdMTkFHOURyNW54NkVtSUlBdnFZdnh1MG5RQUJBZ1NXTGlDZ0w1M1lCUWdRSUVDQVFMOEZRbk52RDNSVDNQdmRsV3BQZ0FBQkFoMFhFTkE3M2tHcVI0QUFBUUlFMWkzUVZPRjZtdUtlbDNRWDBOZmRHYTVQZ0FBQkFvTVdFTkFIM2IwYVI0QUFBUUlFNWhkSW02QmZuTDhVSlJBZ1FJQUFBUUpQRXhEUW55YmtmUUlFQ0JBZ01IS0J0RFNjZ0Q3eTd3SE5KMENBQUlIVkNBam9xM0YyRlFJRUNCQWcwRGVCdkVCY1dSUXVoSHYzb1BldERlcExnQUFCQWdSNkpTQ2c5NnE3VkpZQUFRSUVDS3hVb0FUMEdLc1gwaFpySzcyd2l4RWdRSUFBZ1RFS0NPaGo3SFZ0SmtDQUFBRUNSeGVZaEJETzU4TlRSRyszWFR2NnVZNGtRSUFBQVFJRWppRWdvQjhEeTZFRUNCQWdRR0JFQWlXTTcrN3VubzR4bmgxUnV6V1ZBQUVDQkFpc1RVQkFYeHU5Q3hNZ1FJQUFnZTRMdkQrWlhFcGJyRjJhelhBM2d0NzlMbE5EQWdRSUVPaXhnSURlNDg1VGRRSUVDQkFnc0VTQkVzYWJlR2N6M1grZVZuR1A1cmN2RVZ2UkJBZ1FJRUFnQ3dqb3ZnOElFQ0JBZ0FDQnh3cUVadU5jZXZPWmNrQ01SdEFmSytVTkFnUUlFQ0F3djRDQVByK2hFZ2dRSUVDQXdHQUZZbDFmVEl2RTViOFhyQkUzMkY3V01BSUVDQkRvaW9DQTNwV2VVQThDQkFnUUlOQXRnVEphSHBybTJxeGE5bG5yVnYrb0RRRUNCQWdNVUVCQUgyQ25haElCQWdRSUVGaVVRQXp4V2xva0xvK2ZOK2ttZEZQY0Z3V3JIQUlFQ0JBZzhBZ0JBZjBSS0Y0aVFJQUFBUUlFV29HNnF0TUNjZmxoQUwxMThDOEJBZ1FJRUZpZWdJQytQRnNsRXlCQWdBQ0IzZ3VrRWZSTHZXK0VCaEFnUUlBQWdaNElDT2c5NlNqVkpFQ0FBQUVDS3habzh2VkNURlBjeThQczl0YkJ2d1FJRUNCQVlIa0NBdnJ5YkpWTWdBQUJBZ1Q2TEZEbXREY3h2cEQyUVU5SjNmM25mZTVNZFNkQWdBQ0JmZ2dJNlAzb0o3VWtRSUFBQVFLckZzZ0JmVktIU2Q0SDNZTUFBUUlFQ0JCWWdZQ0F2Z0prbHlCQWdBQUJBajBUS1BQWnQ3ZTNuMG1qNStkbnk4T1o0OTZ6VGxSZEFnUUlFT2lmZ0lEZXZ6NVRZd0lFQ0JBZ3NHeUJFc2J2VGlhWFloVXZsaW51ZVpLN0J3RUNCQWdRSUxCVUFRRjlxYndLSjBDQUFBRUMvUlZvUXNncnVNKzJXZXR2TzlTY0FBRUNCQWowUlVCQTcwdFBxU2NCQWdRSUVGaWRRQmt0RDAxenJncmg5T3l5UnRCWDUrOUtCQWdRSURCU0FRRjlwQjJ2MlFRSUVDQkE0QWtDYlJpdm13dnBTWDVldGx4N3d2SGVJa0NBQUFFQ0JCWWdJS0F2QUZFUkJBZ1FJRUJnaUFLaHFXZDdvRmV6ZGVLRzJFcHRJa0NBQUFFQzNSRVEwTHZURjJwQ2dBQUJBZ1E2SmRDRXRBZDZTQVBvYWFXNFRsVk1aUWdRSUVDQXdFQUZCUFNCZHF4bUVTQkFnQUNCZVFYcXFwNHRFQ2VmejJ2cGZBSUVDQkFnY0JRQkFmMG9TbzRoUUlBQUFRTGpFaWlKUE1hWVYzSDNJRUNBQUFFQ0JGWWtJS0N2Q05wbENCQWdRSUJBVHdUeW9uQWxvSWNRWi9lZzU1YzhDQkFnUUlBQWdXVUxDT2pMRmxZK0FRSUVDQkRvbjBCWnRiMko2UjcwYUhwNy83cFBqUWtRSUVDZ3J3SUNlbDk3VHIwSkVDQkFnTUJTQmY3NHBBNlRzK1VTb1d5MXR0U3JLWndBQVFJRUNCQ29LZ0hkZHdFQkFnUUlFQ0J3V0tETVo3OTI3V2VmamJFNWIvejhNSTNuQkFnUUlFQmd1UUlDK25KOWxVNkFBQUVDQkhvcE1EMTkrbUlhTjc4NG0rTHVKdlJlOXFKS0V5QkFnRURmQkFUMHZ2V1kraElnUUlBQWdlVUtsREErcmFyTGFhazRxN2d2MTFycEJBZ1FJRURnUGdFQi9UNE9YeEFnUUlBQUFRSlpvSjdFczFVSXAyY2FSdEI5V3hBZ1FJQUFnUlVJQ09nclFIWUpBZ1FJRUNEUU40RTREUmRUS3MvQjNHM29mZXM4OVNWQWdBQ0IzZ29JNkwzdE9oVW5RSUFBQVFKTEVTaWo1YUZwWHBpVlhyWmNXOHFWRkVxQUFBRUNCQWpjSnlDZzM4ZmhDd0lFQ0JBZ1FDQUxoQkN2cFgveStIa2VRUytoblF3QkFnUUlFQ0N3WEFFQmZibStTaWRBZ0FBQkFyMFVpR0Z5b2EyNEdlNjk3RUNWSmtDQUFJRmVDZ2pvdmV3MmxTWkFnQUFCQXNzV2lGWndYemF4OGdrUUlFQ0F3QU1DQXZvRElMNGtRSUFBQVFJakYyanZPWS94NEI3MGtYTm9QZ0VDQkFnUVdKMkFnTDQ2YTFjaVFJQUFBUUo5RUNoejJtTVZybFhSN2VkOTZEQjFKRUNBQUlIaENBam93K2xMTFNGQWdBQUJBb3NReUtsOFV0ZlZ1VkpZc0VEY0lsQ1ZRWUFBQVFJRWppSWdvQjlGeVRFRUNCQWdRR0FjQW1XMTltdlhyajJiMW00L04xc2V6Z3J1NCtoN3JTUkFnQUNCRGdnSTZCM29CRlVnUUlBQUFRSWRFU2hoZlAvVXFVdHBldnRtTzhYZENIcEgra1kxQ0JBZ1FHQUVBZ0w2Q0RwWkV3a1FJRUNBd0JFRlNrQnZRdGhNSzhYTnRsazc0cGtPSTBDQUFBRUNCT1lXRU5EbkpsUUFBUUlFQ0JBWWxrQWQ0OWtRd3VsWnEweHhIMWIzYWcwQkFnUUlkRmhBUU85dzU2Z2FBUUlFQ0JCWXNVQUo0N0d1TDh4U2Vidmwyb29yNFhJRUNCQWdRR0NzQWdMNldIdGV1d2tRSUVDQXdHTUV3blI2ZmZiV2JKMjR4eHpvWlFJRUNCQWdRR0NoQWdMNlFqa1ZSb0FBQVFJRStpOFFRcnhXaFRTR0hzdEc2UDF2a0JZUUlFQ0FBSUdlQ0Fqb1Bla28xU1JBZ0FBQkFxc1NpR0ZpZ2JoVllic09BUUlFQ0JBNEpDQ2dIOEx3bEFBQkFnUUlqRnhnTnFVOWJiSG1RWUFBQVFJRUNLeGNRRUJmT2JrTEVpQkFnQUNCVGdya2RlSGFnQjdURlBmeWJMWlVYQ2VycTFJRUNCQWdRR0I0QWdMNjhQcFVpd2dRSUVDQXdFa0Z5cXJ0c1FyWERyTDZTUXR5SGdFQ0JBZ1FJSEI4QVFIOStHYk9JRUNBQUFFQ1F4YVkxQ0djTFEwTWxTSDBJZmUwdGhFZ1FJQkE1d1FFOU01MWlRb1JJRUNBQUlHMUNKUXdmdlhxMWVmUzZ1M243SysybGo1d1VRSUVDQkFZdVlDQVB2SnZBTTBuUUlBQUFRS0hCYWFuVHFVRjR1TGxGTkx6eTBiUUQrTjRUb0FBQVFJRWxpd2dvQzhaV1BFRUNCQWdRS0FuQWlXTXg3cStsS0s1YmRaNjBtbXFTWUFBQVFMREVoRFFoOVdmV2tPQUFBRUNCT1lTQ0J2eGJCWENxVmtoUnREbjBuUXlBUUlFQ0JBNG5vQ0Fmand2UnhNZ1FJQUFnYUVLdEdGOFdsOU1UL0p6dDZFUHRhZTFpd0FCQWdRNkt5Q2dkN1pyVkl3QUFRSUVDS3hlSURUTjlkbFY4NVpyUnRCWDN3V3VTSUFBQVFJakZoRFFSOXo1bWs2QUFBRUNCQjRTQ09INU5NVTlqWiszcThROTlMNFhDQkFnUUlBQWdhVUpDT2hMbzFVd0FRSUVDQkRvb1VBSUZvanJZYmVwTWdFQ0JBZ01RMEJBSDBZL2FnVUJBZ1FJRUZpUVFKTzJXZk1nUUlBQUFRSUUxaUd3c1k2THVpWUJBZ1FJRUNEUU9ZRjh6M21hMmg0TzdrSHZYQVZWaUFBQkFnUUlERjNBQ1ByUWUxajdDQkFnUUlEQTBRVEtxdTBoeHF2dEF1N1doenNhbTZNSUVDQkFnTURpQkFUMHhWa3FpUUFCQWdRSTlGa2dCL1JKTlFublNpT0NGZHo3M0pucVRvQUFBUUw5RkJEUSs5bHZhazJBQUFFQ0JCWXBVSWJMcjE2OStselZWT2RuRzZBYlFsK2tzTElJRUNCQWdNQVJCQVQwSXlBNWhBQUJBZ1FJREZ5Z2hQSHBxVk9ic1lxWDBoWnJ1YmtDK3NBN1hmTUlFQ0JBb0hzQ0FucjMra1NOQ0JBZ1FJREFxZ1ZLR0k5MWZTbmxjdHVzclZyZjlRZ1FJRUNBd0V4QVFQZXRRSUFBQVFJRUNCU0I5RWZCbVRSdWZpcDlrWWZRamFEN3ZpQkFnQUFCQWlzV0VOQlhETzV5QkFnUUlFQ2dnd0x0Q0hvSWwyYXBmSFliZWdkcnFrb0VDQkFnUUdEQUFnTDZnRHRYMHdnUUlFQ0F3SEVFUXRNYzdJRXVvQjhIenJFRUNCQWdRR0JCQWdMNmdpQVZRNEFBQVFJRWVpOFF3dk5WU0dQb3NWMGxydmZ0MFFBQ0JBZ1FJTkF6QVFHOVp4Mm11Z1FJRUNCQVlHa0N3UUp4UzdOVk1BRUNCQWdRT0lLQWdINEVKSWNRSUVDQUFJR0JDOHltdERlYkEyK241aEVnUUlBQWdVNExiSFM2ZGlwSGdBQUJBZ1FJTEZzZ3J3dlhsSXZFa081QnQ0RDdzc0dWVDRBQUFRSUVIaWRnQlAxeE1sNG5RSUFBQVFMakVTZ2o2Q0hHcStOcHNwWVNJRUNBQUlIdUNRam8zZXNUTlNKQWdBQUJBdXNRMktnbTRXeTVjTEFIK2pvNndEVUpFQ0JBZ0lDQTdudUFBQUVDQkFpTVc2QnNmYjYxdGZWY211aCszdjVxNC81bTBIb0NCQWdRV0srQWdMNWVmMWNuUUlBQUFRS2RFTmcvZGVweXJPSm0ybUl0MTZlRTlrNVVUQ1VJRUNCQWdNQ0lCQVQwRVhXMnBoSWdRSUFBZ1VjSWxEQWVKcE9MYVEvMEM0OTQzMHNFQ0JBZ1FJREFpZ1FFOUJWQnV3d0JBZ1FJRU9peVFKakVmUC81cVZrZGphQjN1YlBValFBQkFnUUdLeUNnRDdack5Zd0FBUUlFQ0J4Sm9JVHh5VFJjbXFWeXQ2RWZpYzFCQkFnUUlFQmc4UUlDK3VKTmxVaUFBQUVDQkhvbk1BMU4yZ085UFBLZTZFYlFaeGcrRVNCQWdBQ0JWUW9JNkt2VWRpMENCQWdRSU5CUmdSRHJxK2tlOUNvdEVtY0V2YU45cEZvRUNCQWdNSHdCQVgzNGZheUZCQWdRSUVEZzZRSVdpSHU2a1NNSUVDQkFnTUNTQlFUMEpRTXJuZ0FCQWdRSWRGeGdObUxlWE81NFBWV1BBQUVDQkFnTVhtQmo4QzNVUUFJRUNCQWdRT0JKQW0xQWp6SGRnMjUyKzVPZ3ZFZUFBQUVDQkpZdFlBUjkyY0xLSjBDQUFBRUMzUllvcVR5RXNOVldNOStJN2tHQUFBRUNCQWlzUTBCQVg0ZTZheElnUUlBQWdlNEk1SUErU1F2RTVYM1FyZDllRVB4RGdBQUJBZ1RXSXlDZ3I4ZmRWUWtRSUVDQVFCY0V5bWo1MXRiV21UUzcvY0pzZ3JzUjlDNzBqRG9RSUVDQXdDZ0ZCUFJSZHJ0R0V5QkFnQUNCSWxEQytQVDA2YzIwdTlwbTJtSXR2eWlnKytZZ1FJQUFBUUpyRWhEUTF3VHZzZ1FJRUNCQW9BTUNiUml2NjB1cEx1YzdVQjlWSUVDQUFBRUNveFlRMEVmZC9ScFBnQUFCQWdUU2tQbEdQSlB1UWM4N3UrUWhkQ1BvdmlrSUVDQkFnTUNhQkFUME5jRzdMQUVDQkFnUTZJQkFDZU9UL2JBNVMrV3oyOUE3VUROVklFQ0FBQUVDSXhRUTBFZlk2WnBNZ0FBQkFnUU9DMHhEay9aQVQ0OW9JL1RETHA0VElFQ0FBSUZWQ3dqb3F4WjNQUUlFQ0JBZzBER0JFT3ZuMHhUM1ZLdDJsYmlPVlU5MUNCQWdRSURBYUFRRTlORjB0WVlTSUVDQUFJSEhDSVJnZ2JqSDBIaVpBQUVDQkFpc1VrQkFYNlcyYXhFZ1FJQUFnVzRKelBaVmF5NTNxMXBxUTRBQUFRSUV4aWtnb0krejM3V2FBQUVDQkFqa09lMU5aa2g3b0Y5dlo3ZlBsb3BqUTRBQUFRSUVDS3hGUUVCZkM3dUxFaUJBZ0FDQlRnaTBJK2doYkpYYXlPZWQ2QlNWSUVDQUFJSHhDZ2pvNCsxN0xTZEFnQUFCQWxWMXU5cElDOFNkblZHSTZMNG5DQkFnUUlEQUdnVUU5RFhpdXpRQkFnUUlFRmlqUUFuam03L3c0Yk5wYzdVTE5rQmZZMCs0TkFFQ0JBZ1FtQWtJNkw0VkNCQWdRSURBaUFXYUMxKzVuTzVCMzV6dHNHWUVmY1RmQzVwT2dBQUJBdXNYRU5EWDN3ZHFRSUFBQVFJRTFpRlF3dmd6K3hzWDBoVDNjK3VvZ0dzU0lFQ0FBQUVDOXdzSTZQZDcrSW9BQVFJRUNJeExZR01qMzM5K2F0Wm9JK2pqNm4ydEpVQ0FBSUdPQ1Fqb0hlc1ExU0ZBZ0FBQkFpc1NLR0c4MmQvZm5LVnl0Nkd2Q041bENCQWdRSURBNHdRRTlNZkplSjBBQVFJRUNJeEFvQW5oK3F5WmVVOTBJK2dqNkhOTkpFQ0FBSUh1Q2dqbzNlMGJOU05BZ0FBQkFrc1hDSFc4bXU1QnI5SWljVWJRbDY3dEFnUUlFQ0JBNE1rQ0F2cVRmYnhMZ0FBQkFnU0dMUkRyODhOdW9OWVJJRUNBQUlIK0NBam8vZWtyTlNWQWdBQUJBb3NVS0NQbUljWXJpeXhVV1FRSUVDQkFnTURKQlFUMGs5czVrd0FCQWdRSTlGbWdCUFFZNHZYWkh1aDlib3U2RXlCQWdBQ0JRUWdJNklQb1JvMGdRSUFBQVFMSEZtanZPWS9WVm50bXZoSGRnd0FCQWdRSUVGaW5nSUMrVG4zWEprQ0FBQUVDNnhPSTFlMXFJNFJ3cGxSQlBGOWZUN2d5QVFJRUNCQ1lDUWpvdmhVSUVDQkFnTUQ0QkVvY3YveUxMK2R3Zm1HMmZMdUlQcjd2QXkwbVFJQUFnWTRKQ09nZDZ4RFZJVUNBQUFFQ0t4QW9ZYnk1OE9YTGFYZTF6ZGs5NkFMNkN1QmRnZ0FCQWdRSVBFbEFRSCtTanZjSUVDQkFnTUF3QlVvWUQvc2JGMUx6emcyemlWcEZnQUFCQWdUNkp5Q2c5Ni9QMUpnQUFRSUVDQ3hFNE5Sa2NxNEtZU01WbG1lNUcwRmZpS3BDQ0JBZ1FJREF5UVVFOUpQYk9aTUFBUUlFQ1BSVm9KM2l2cisvT1V2bHM5dlErOW9jOVNaQWdBQUJBc01RRU5DSDBZOWFRWUFBQVFJRWppM1FoSEM5bkJUTENQcXh6M2NDQVFJRUNCQWdzRmdCQVgyeG5rb2pRSUFBQVFLOUVRaDF2SnFtdUtmNlJpUG92ZWsxRlNWQWdBQ0JJUXNJNkVQdVhXMGpRSUFBQVFKUEVtaENYaVRPZ3dBQkFnUUlFT2lJZ0lEZWtZNVFEUUlFQ0JBZ3NFS0JNbUtleHM0dnIvQ2FMa1dBQUFFQ0JBZzhSVUJBZndxUXR3a1FJRUNBd01BRThwejJKcmNwaG5pOW5kMCtXeXB1WUEzVkhBSUVDQkFnMERjQkFiMXZQYWErQkFnUUlFQmdmb0gybnZOWVhTbEZCVnVzelUrcUJBSUVDQkFnTUwrQWdENi9vUklJRUNCQWdFRC9CRzdkT2hWQ09OZS9pcXN4QVFJRUNCQVlyb0NBUHR5KzFUSUNCQWdRSVBBb2dUS2YvZUlYdnBERCtYbkx0eitLeUdzRUNCQWdRR0E5QWh2cnVheXJFaUJBZ0FBQkFtc1NPTGpoZkRQR3VEbXJ3OEZyYTZxU3l4SWdRSUFBQVFKWndBaTY3d01DQkFnUUlEQkNnZFAxTkcreFpvcjdDUHRla3drUUlFQ2d1d0lDZW5mN1JzMElFQ0JBZ01EU0JFSXpPVnVGY0RDVHpnajYwcVFWVElBQUFRSUVqaTRnb0IvZHlwRUVDQkFnUUdBSUFpV01OOVgrNVZrcWR4djZFSHBWR3dnUUlFQmdFQUlDK2lDNlVTTUlFQ0JBZ01BeEJacjYrdXlNdkNlNkVmUmo4am1jQUFFQ0JBZ3NRMEJBWDRhcU1na1FJRUNBUU1jRllvaGJhWXA3VmFXVjRqcGVWZFVqUUlBQUFRS2pFUkRRUjlQVkdrcUFBQUVDQkE0SmhIRCswRmVlRWlCQWdBQUJBaDBRRU5BNzBBbXFRSUFBQVFJRVZpaFFSc3hEVTIydDhKb3VSWUFBQVFJRUNCeEJRRUEvQXBKRENCQWdRSURBZ0FSS1FHK3FlRDFOYng5UXN6U0ZBQUVDQkFqMFgwQkE3MzhmYWdFQkFnUUlFRGlPUUY0VUxxMEtGNjYwSitVYjBUMElFQ0JBZ0FDQkxnZ0k2RjNvQlhVZ1FJQUFBUUtyRVRnSTR4c3BscDhwbHp4NFpUWFhkeFVDQkFnUUlFRGdDUUlDK2hOd3ZFV0FBQUVDQklZb2NPbWxsODdGS2w2WVRYQVgwWWZZeWRwRWdBQUJBcjBVRU5CNzJXMHFUWUFBQVFJRVRpUlF3bmlNNzIxV01hU1BkcjI0RTVYa0pBSUVDQkFnUUdEaEFnTDZ3a2tWU0lBQUFRSUVPaXRRQXZycHNIRXhiWUIrcnJPMVZERUNCQWdRSURCU0FRRjlwQjJ2MlFRSUVDQXdYb0VRTjg1VUlVeVNRQjVDTjhWOXZOOEtXazZBQUFFQ0hSTVEwRHZXSWFwRGdBQUJBZ1NXS0ZEQ2VCUDNyc3hTdVgzV2xvaXRhQUlFQ0JBZ2NGd0JBZjI0WW80blFJQUFBUUo5RjJqcTY2VUpzU3BicnZXOU9lcFBnQUFCQWdTR0lpQ2dENlVudFlNQUFRSUVDQnhSSUlhNGxhYTRwNk1Ob0IrUnpHRUVDQkFnUUdBbEFnTDZTcGhkaEFBQkFnUUlkRWVnRHVGOGQycWpKZ1FJRUNCQWdNQ0JnSUIrSU9FekFRSUVDQkFZdmtBWk1vOU50VFg4cG1vaEFRSUVDQkRvbjRDQTNyOCtVMk1DQkFnUUlIQVNnVHludmR4ejNsVHhlcnNIK215cHVKT1U1aHdDQkFnUUlFQmc0UUlDK3NKSkZVaUFBQUVDQkRvclVMWlZDMVc0VW1xWW5uUzJwaXBHZ0FBQkFnUkdLQ0NnajdEVE5aa0FBUUlFUml4dzY5WkdXaC91eklnRk5KMEFBUUlFQ0hSV1FFRHZiTmVvR0FFQ0JBZ1FXS2hBR1MyLzhQYmI1Mk9NRjYzZnZsQmJoUkVnUUlBQWdZVUlDT2dMWVZRSUFRSUVDQkRvdkVBSjZNK0dzSm0yVjl0czcwRTN4YjN6dmFhQ0JBZ1FJREFxQVFGOVZOMnRzUVFJRUNBd2RvRlkxeGVxS3BqaVB2WnZCTzBuUUlBQWdVNEtDT2lkN0JhVklrQ0FBQUVDeXhFSU1aNnBRdGlZbFc2UnVPVXdLNVVBQVFJRUNKeElRRUEvRVp1VENCQWdRSUJBN3dSS0dKL0d1RFZMNVdYTHRkNjFRb1VKRUNCQWdNQ0FCUVQwQVhldXBoRWdRSUFBZ1FjRlF0TmNuNzFXdGx4NzhIMWZFeUJBZ0FBQkF1c1RFTkRYWisvS0JBZ1FJRUJnNVFMcEh2UXJhWXA3V2ljdVdzaDk1Zm91U0lBQUFRSUVuaXdnb0QvWng3c0VDQkFnUUdCUUFuV0k1d2ZWSUkwaFFJQUFBUUlERWhEUUI5U1pta0tBQUFFQ0JKNGdVRWJNbTZhNitvUmp2RVdBQUFFQ0JBaXNVZUJnRmRjMVZzR2xDUkFnUUlBQWdSVUlsSUFlcW5pOW1qMWJ3VFZkZ2dBQkFnUUlFRGlHZ0JIMFkyQTVsQUFCQWdRSTlGaWdyTm9lcTNDNXRDRlV0bGpyY1dlcU9nRUNCQWdNVTBCQUgyYS9haFVCQWdRSUVEZ3NNQXZqdHpkU0xEOXorQTNQQ1JBZ1FJQUFnZTRJQ09qZDZRczFJVUNBQUFFQ1N4VzRlUE5YejZmVjJ5L08xbTgzZ3I1VWJZVVRJRUNBQUlIakN3am94emR6QmdFQ0JBZ1E2SnZBUVJqZlRQZWZiNlk5MW5MOUQxN3JXMXZVbHdBQkFnUUlERlpBUUI5czEyb1lBUUlFQ0JDNEoxREMrT202dm1DSyt6MFRUd2dRSUVDQVFPY0VCUFRPZFlrS0VTQkFnQUNCNVFpRXBqbGJoVEJKcGVjaGRDUG95MkZXS2dFQ0JBZ1FPTEdBZ0g1aU9pY1NJRUNBQUlIZUNKUXdQbzM3VzdOVVh1YTQ5NmIyS2txQUFBRUNCRVlpSUtDUHBLTTFrd0FCQWdRSWhDWmNMd3F4S2x1dUVTRkFnQUFCQWdTNkpTQ2dkNnMvMUlZQUFRSUVDQ3hOSU5iMWxUVEZQWlZ2QUgxcHlBb21RSUFBQVFKekNBam9jK0E1bFFBQkFnUUk5RW1nRHZGOG4rcXJyZ1FJRUNCQVlHd0NBdnJZZWx4N0NSQWdRR0NNQW1YSXZHbXFxd2JQeDlqOTJreUFBQUVDZlJIWTZFdEYxWk1BQVFJRUNCQTRrVUNlMDE3dU9ROVZiTzlCdDREN2lTQ2RSSUFBQVFJRWxpMWdCSDNad3NvblFJQUFBUUxyRnlqYnFzVVFMcGVxQkFsOS9WMmlCZ1FJRUNCQTRHRUJBZjFoRTY4UUlFQ0FBSUVoQ1pTZDFWNTk5ZFZUcVZGbmh0UXdiU0ZBZ0FBQkFrTVRFTkNIMXFQYVE0QUFBUUlFSGlIdy8zM3hpeGVxR0M5YXYvMFJPRjRpUUlBQUFRSWRFUkRRTzlJUnFrR0FBQUVDQkpZa1VFYlFuNjNyUzJtQnVNMFUwdk5seW10THVwNWlDUkFnUUlBQWdSTUtDT2duaEhNYUFRSUVDQkRvazBDY1RDNmtXRzZLZTU4NlRWMEpFQ0JBWUhRQ0F2cm91bHlEQ1JBZ1FHQ01BcUZwemxZaFRHWnRONEkreG04Q2JTWkFnQUNCemdzSTZKM3ZJaFVrUUlBQUFRSnpDWlF3M3NTNE5VdmxaY3UxdVVwME1nRUNCQWdRSUxBVUFRRjlLYXdLSlVDQUFBRUNIUk5vbXRrZTZPbE9kUGVnZDZ4elZJY0FBUUlFQ0xRQ0FycnZCQUlFQ0JBZ01BS0Jlaks1bkthNFYybVJPQXU1ajZDL05aRUFBUUlFK2lrZ29QZXozOVNhQUFFQ0JBZ2NTeUNHZVA1WUp6aVlBQUVDQkFnUVdMbUFnTDV5Y2hja1FJQUFBUUlyRlNnajVtbmcvUG1WWHRYRkNCQWdRSUFBZ1dNTGJCejdEQ2NRSUVDQUFBRUNmUkpvcDdUSG1PNUJkL3Q1bnpwT1hRa1FJRUJnZkFKRzBNZlg1MXBNZ0FBQkF1TVNhRmR0RC9WbWFYWkl1NkY3RUNCQWdBQUJBcDBVRU5BNzJTMHFSWUFBQVFJRUZpTFFodkZidDA2bDBzNHNwRVNGRUNCQWdBQUJBa3NUTU1WOWFiUUtKa0NBQUFFQzNSQTQvN25QWFVqajVoZGpHOWVOb0hlalc5U0NBQUVDQkFnOEpHQUUvU0VTTHhBZ1FJQUFnY0VJbEREK2JBaWI2ZmJ6L0pFZkF2cGd1bGREQ0JBZ1FHQm9BZ0w2MEhwVWV3Z1FJRUNBd0FjQ2JSaWZOT2RUTERmRi9RTVh6d2dRSUVDQVFDY0ZCUFJPZG90S0VTQkFnQUNCQlFyRWpiTlZDUGwzdm1YY0Y4aXFLQUlFQ0JBZ3NHZ0JBWDNSb3NvalFJQUFBUUxkRVNnajZFM1RYSjNOYTI4bnVYZW5mbXBDZ0FBQkFnUUlIQklRMEE5aGVFcUFBQUVDQkFZcEVKcTBCM3A2eEtyZGNtMlFqZFFvQWdRSUVDRFFmd0VCdmY5OXFBVUVDQkFnUU9DSkFyR2FYRWxUM05NeEJ0Q2ZDT1ZOQWdRSUVDQ3daZ0VCZmMwZDRQSUVDQkFnUUdEWkFuV0k1NVo5RGVVVElFQ0FBQUVDOHdzSTZQTWJLb0VBQVFJRUNIUlZvRXhwanpFKzMxWndkaWQ2VjJ1clhnUUlFQ0JBWU9RQ0F2ckl2d0UwbndBQkFnUUdLL0RCblBhbTJxbWk2ZTJEN1drTkkwQ0FBSUhCQ0Fqb2crbEtEU0ZBZ0FBQkFnOEp0TnVxMWVGaWVTZWszZEE5Q0JBZ1FJQUFnYzRLQ09pZDdSb1ZJMENBQUFFQ2N3bTBZZnpsbDArblVzN09WWktUQ1JBZ1FJQUFnWlVJQ09ncllYWVJBZ1FJRUNDd0hvRnpYLzd5aFRTOS9lSnNncnNSOVBWMGc2c1NJRUNBQUlFakNRam9SMkp5RUFFQ0JBZ1E2SjFBQ2VQUFRpYWJxZWFYM0lQZXUvNVRZUUlFQ0JBWW9ZQ0FQc0pPMTJRQ0JBZ1FHSkhBWkhJK3RmYTVFYlZZVXdrUUlFQ0FRRzhGQlBUZWRwMktFeUJBZ0FDQnB3dUVHTTlXSVV4bVI1cmkvblF5UnhBZ1FJQUFnYlVKQ09ocm8zZGhBZ1FJRUNDd1ZJRVN4cWN4WHAybDhySW4rbEt2cUhBQ0JBZ1FJRUJnTGdFQmZTNCtKeE1nUUlBQWdXNExoS3E1WG1vWXF4elFqYUIzdTd2VWpnQUJBZ1JHTGlDZ2ovd2JRUE1KRUNCQVlOZ0NhWGI3WnByaW5obzVXOGQ5Mk0zVk9nSUVDQkFnMEdzQkFiM1gzYWZ5QkFnUUlFRGdhUUx4d3RPTzhENEJBZ1FJRUNEUURRRUJ2UnY5b0JZRUNCQWdRR0RSQW1YSVBGYngrVVVYckR3Q0JBZ1FJRUJnT1FJQytuSmNsVXFBQUFFQ0JOWXQwQzRLMTFUWDJ6M1EzWDYrN2c1eGZRSUVDQkFnOERRQkFmMXBRdDRuUUlBQUFRTDlGR2h2T3EvRHhWTDlZSUc0Zm5haldoTWdRSURBbUFRRTlESDF0cllTSUVDQXdGZ0UydUh5VjE4OW5ScDhkaXlOMWs0Q0JBZ1FJTkIzQVFHOTd6Mm8vZ1FJRUNCQTRERUM1Ny80eFF0cGV2dWwySTZsbStQK0dDY3ZFeUJBZ0FDQnJnZ0k2RjNwQ2ZVZ1FJQUFBUUtMRXloaC9ObTYza3hGWHBwdHNTYWdMODVYU1FRSUVDQkFZQ2tDQXZwU1dCVktnQUFCQWdUV0pwQ0RlUG45SGtPNS8veTVXVTBFOUxWMWlRc1RJRUNBQUlHakNRam9SM055RkFFQ0JBZ1E2S0xBUVJpZlZMZHZiNlFLVG1hVm5PYlBNY1pKRlVMK1hkOU9jcCs5NlJNQkFnUUlFQ0RRVFlIOHk5eURBQUVDQkFnUTZMN0FRUmcvR0FuUG9Uc0g4VFo4di9iYXZSWnNiMitmK2QwUW5nc2gvb0VxTGQ2ZURzakhISngzN3poUENCQWdRSUFBZ1c0SkNPamQ2ZysxSVVDQUFBRUNCd0p0SUwrZGd2VnJKV0RuTUY1R3hnOE9TSjlQWFhycGhaMk52Y21IWWwxOWJUcmhxMU1PZitWT1ZlMmNqdkZHV2h6dXdpeS9tekYzQ00xVEFnUUlFQ0RRVlFFQnZhczlvMTRFQ0JBZ01EYUJIS0p6S004ZkI2UGoweFRPRHg2VGF6ZHZ2aml0OWwrTk1YeDlGY00vbXdONTNJOGZqblU0RjBJK0xUMVNLajhvb0gzQnZ3UUlFQ0JBZ0VCZkJBVDB2dlNVZWhJZ1FJREFFQVZ5S0QrNFIveSswZkZyMTY2ZGJaNmRmQ1NGOFc5Sm1mdGJVMlQvaHYzWWZGV282Z3R0R0c5bnRwY29uMjQyajAzVG50OEc5WnpSRDM4TTBVNmJDQkFnUUlEQTRBUUU5TUYxcVFZUklFQ0FRSWNGY21nK0dDbHYwdk9EaitybGwxOSs1a3Z2dmZkS1U5ZS9QMVROUHorTjRadmlOTDRVNm5yU1p1NllGMzNMZWJ5cG1pYWZseUo0ZWFjdEx3Uy8wd3VLZndnUUlFQ0FRSDhGL0RMdmI5K3BPUUVDQkFqMFJ5Q3ZycDdEK1g3NnVEZFN2blhqeG5ZSzNSOU5pN2w5NXhmdnZQOEgwaEZmbXlKMyt0MWNweUNlb25qKy8razBuM01ReHR0UmNXRzhrUGlIQUFFQ0JBZ01UVUJBSDFxUGFnOEJBZ1FJZEVIZzhFaDVEdVQzUXZtVkYxOThwWnBPLzRWMHdIZWxlZWtwbklmTFZkb0pMYlNqNHltUU55bVFwMlRlYm84VzBtZS9xN3ZRbytwQWdBQUJBZ1JXSU9DWC9ncVFYWUlBQVFJRVJpT1FnM2tlTGI4dmxGKytlZlBWdW1uKzVUUkMvdDF4dXYvTmFkcjZzM2t4dHpKQ0h1TTBUVmxQSzd1VjZlb3BrT2NSOUZ5TUJ3RUNCQWdRSURBMkFRRjliRDJ1dlFRSUVDQ3dhSUhEbytWNU9ucVprbjUxZC9mbEdPTDNwSy8vV0JvcC8rYXFEcWRMS0U4dnROUFcwMm1oaFBsSkN1ZUxycFB5Q0JBZ1FJQUFnUjRLQ09nOTdEUlZKa0NBQUlGT0NPUlVuVWZMY3lBdlU5Z3Yzcnk1dWRFMGZ6aFU4VTgwVmJ5ZFpxbWZiVWZLMHgzbFRacTZmbStVM0xUMVR2U2dTaEFnUUlBQWdZNEpDT2dkNnhEVklVQ0FBSUhPQ3h4ZThLMk1sbC9lMmZsb3VvMzhCOU5VOWU5SmcrRTdaWXA2dnFlOExQQTJHeWwzTDNubk8xWUZDUkFnUUlEQXVnVUU5SFgzZ09zVElFQ0FRRjhFOHUvTXZMMVpHUzIvc0x0NytYUlZmVzlhM2UwSFV4Yi90cnltVzVyS25rYkt5L3ZwbnZLMEZMdFEzcGUrVlU4Q0JBZ1FJTkFKQVFHOUU5MmdFZ1FJRUNEUVVZR0RhZXc1bExlajVYbkJ0emo5b1JUS3Z5L2RWNzZkRjNyTHE3MlYwZktjMHR2N3lqdmFITlVpUUlBQUFRSUV1aXdnb0hlNWQ5U05BQUVDQk5ZbEVLcmI2Zjd5MTBvb0w4SDh5czdPZDZRUjhUOFhtdWE3cTdwKzVsNG9UeThhTFY5WE43a3VBUUlFQ0JBWWxvQ0FQcXorMUJvQ0JBZ1FtRStnVHFmbmovMVpPQStYZDNmL1dIcmh6OGRRL2NHOHhsdGE3QzFOZEk5NzZaaTgrcnJmby9ONU81c0FBUUlFQ0JBNEpPQVBpME1ZbmhJZ1FJREFhQVUrQ09ZcGZsKzdkdTFzYytyVW4yaEM5ZWZTSFBkYlJTWGRZSjdDZVpOQ2VUNzIxR2lsTkp3QUFRSUVDQkJZbW9DQXZqUmFCUk1nUUlCQUR3VHVDK2JiMjl0YmQrcjZSOUlONS85bXVyLzhxMEplaWIycy9KWVdod3ZWeGl5Yzk2Qlpxa2lBQUFFQ0JBajBVVUJBNzJPdnFUTUJBZ1FJekN0d1h6RGZldkhGNjdIWi85RTdWZmpoTkkzOWVncmxhYTMyNmNHKzVYbmhONzh2NXhWM1BnRUNCQWdRSVBCVUFYOXdQSlhJQVFRSUVDQXdJSUc2dXAzdU1XOFhmMnRtd2Z6SDRuVC96NFM2dnBJbXNhZDd6RXN3dDBYYWdEcGRVd2dRSUVDQVFGOEVCUFMrOUpSNkVpQkFnTUI4QXJmVEtIZ081cTlWVGRuRFBNWi9Ld1h6SDAzQi9ISzdmM2xqNGJmNWhKMU5nQUFCQWdRSXpDa2dvTThKNkhRQ0JBZ1E2THhBL2wwM3plSDhwWmRlZXZiTDA3MGZUUlBZZnlKdGxYYTlTbXUrcFlYZjJtQnU0YmZPZDZRS0VpQkFnQUNCb1FzSTZFUHZZZTBqUUlEQWVBWHlmZVpwRWZheWwzbDFaWGYzQjM1M2YrL2ZUeVBtWDFPQ2VaeHRsU2FZai9jN1JNc0pFQ0JBZ0VESEJQSWZMeDRFQ0JBZ1FHQklBcUc2ZFN0dmc1WTJMSyttVzd1N2YzRHJ4dTdQcHNYZmZqcDlmRTNNaTcrMTcrVmovQjVNQ0I0RUNCQWdRSUJBTndTTW9IZWpIOVNDQUFFQ0JCWWprSCt2N1ZldnY3NTNlWHY3UnBpRXY1S21zLy9KUEl5ZXByS25WZG56L3dXLyt4WmpyUlFDQkFnUUlFQmd3UUwrU0Zrd3FPSUlFQ0JBWUMwQ2VTUThmK1RSOFdwclorZkhZeDMrb3pSaWZqRUY4N3hyMmpSRmM3L3pNbzRIQVFJRUNCQWcwRmtCZjZ4MHRtdFVqQUFCQWdTT0tKQi9sNVZwNjVkM2RuNWZDTlhmVEF2QWZjdWgrOHczaFBNalNqcU1BQUVDQkFnUVdLdUFnTDVXZmhjblFJQUFnVGtFN28yYWIyOXZuN2xUaC84NGxmVVgwcWg1VmU0ekR5Ry9uKzh6OXlCQWdBQUJBZ1FJOUVKQVFPOUZONmtrQVFJRUNEd2djRy9VL01yTjdYL3hUaFArZGxxZC9TTmxPbnNUMDNSMjk1ay80T1ZMQWdRSUVDQkFvQWNDZVhUQmd3QUJBZ1FJOUVYZ1lJWDIvZDNkM2VmUzFtbi9lUlhyL3pPTm11ZHdudmN6enh1citZL1BmZWxOOVNSQWdBQUJBZ1R1RS9CSHpIMGN2aUJBZ0FDQkRndE1VdDJtZVlYMnF6ZTN2KzI5R1Avck5JdjlsUlRNMHlwd2FVdTFZRHA3aC90TzFRZ1FJRUNBQUlFakNCaEJQd0tTUXdnUUlFQmd6UUx0dnViVFhJdkxOM2IrZzZhcC8wSGFMKzJWbE0zenFIbmVQTTEvY0Y1ekY3azhBUUlFQ0JBZ01MK0FQMmptTjFRQ0FRSUVDQ3hQSUc5aFBybTNyM2tkL2s0YU5mK09HSnUwcjNtMW45YURzd2pjOHV5VlRJQUFBUUlFQ0t4WXdBajZpc0ZkamdBQkFnU09MSkNudE9mSC90YU43ZThKZGZpRmRLLzVkNVFWMnFzcUdqVnZjZnhMZ0FBQkFnUUlERWRBUUI5T1gyb0pBUUlFaGlTUVozamxLZTN4eW8yZHYxcFY5ZitXbm0vR0dQZG1LN1Rua1hVUEFnUUlFQ0JBZ01DZ0JFeHhIMVIzYWd3QkFnUUdJUERxcTZlclQzM3E3c1diTnpkUE5jMy9sQUw1ZCtYdDAxTExtdlJoU3ZzQXVsZ1RDQkFnUUlBQWdVY0xDT2lQZHZFcUFRSUVDS3hlb0wzZlBJWHpTenM3MzdBUm0vKzFxc09IOGtKdzZZMzgrK3BneXZ2cWErYUtCQWdRSUVDQUFJRVZDSmppdmdKa2x5QkFnQUNCcHdyazMwZjVZLy95N3U3M2JvVHdEOVB6RCtXOXpWTTR6NlBtcHJRbkJBOENCQWdRSUVCZzJBSUMrckQ3VitzSUVDRFFCNEU4TXA2bnIwK3Y3T3o4VkIycXZ4dXIrRXdLNS92cE5WUGErOUNENmtpQUFBRUNCQWdzUk1BVTk0VXdLb1FBQVFJRVRpaVFmdy9sSUY1dDdlNytWMmxLKzUrZTNXK2VWbWtQZmtlZEVOVnBCQWdRSUVDQVFEOEYvUEhUejM1VGF3SUVDUFJmNEhhNnIveTFGTTVmZXVuWnJmMzlmTDk1WGd4dUx6VXMvMjR5dzZ2L1Bhd0ZCQWdRSUVDQXdERUYvQUYwVERDSEV5QkFnTUFDQkc3ZE9wWEQrYzdPenBVcisvdi85NkZ3N243ekJmQXFnZ0FCQWdRSUVPaW5nSURlejM1VGF3SUVDUFJYSUlmejExL2YyOXpldm5rblZQOVBDTld0dEZMNzNkUWc5NXYzdDFmVm5BQUJBZ1FJRUZpQWdDbnVDMEJVQkFFQ0JBZ2NVU0R2Y2Y3NjYzZTN0cmUvSms3cW4wbG5YWTh4NXBYYVR4K3hCSWNSSUVDQUFBRUNCQVlyWUFSOXNGMnJZUVFJRU9pWVFCNDVUM3VjYjEyL2ZpdE5hZjhIS1pTWGNKNXFhZVM4WTEybE9nUUlFQ0JBZ01CNkJJeWdyOGZkVlFrUUlEQXVnZG0wOWl1N3U5K2F0bEQ3bWJSQyszTlYza1l0Qk9GOFhOOEpXa3VBQUFFQ0JBZzhRY0FJK2hOd3ZFV0FBQUVDQ3hBNEZNNnJHUDkrVmFWd25xYTEyMFp0QWJhS0lFQ0FBQUVDQkFZbElLQVBxanMxaGdBQkFoMFRtSVh6U3pzNy8weFZwWEFld3BuME9lOTdidVM4WTEybE9nUUlFQ0JBZ01ENkJVeHhYMzhmcUFFQkFnU0dLVEFMNTJWQnVEcjhINm1SWjhySXVYQSt6UDdXS2dJRUNCQWdRR0J1QVNQb2N4TXFnQUFCQWdRZUliQ1J0MUpMOTV6dnhEcjh2YlFnM0F2bG5uUGgvQkZVWGlKQWdBQUJBZ1FJdEFJQ3V1OEVBZ1FJRUZpMFFKNmR0WC94NXMzTk5KMzk3NFVRZGh2M25DL2FXSGtFQ0JBZ1FJREFBQVVFOUFGMnFpWVJJRUJnalFLVGRPMXlqL2xHTS8zZlV6ai8ydGsrNSs0NVgyT251RFFCQWdRSUVDRFFEd0VCdlIvOXBKWUVDQkRvZzBEK25UTE5GYjF5WS9kL0NYWDlyV25rL0c3NlVqalBLQjRFQ0JBZ1FJQUFnYWNJQ09oUEFmSTJBUUlFQ0J4WklOMXFuc0w1N3U1L2tVYk8vMGhzbXIzMHd1a2puKzFBQWdRSUVDQkFnTURJQlFUMGtYOERhRDRCQWdRV0luQzd5dmVkVDdkdTdQeEVxTU9QeGVuVVZtb0xnVlVJQVFJRUNCQWdNQ1lCQVgxTXZhMnRCQWdRV0liQXE2K2VybDZyOXJkdWJuOTNWWVcva1ViT1k5cnYzTytYWlZncmt3QUJBZ1FJRUJpMGdIM1FCOTI5R2tlQUFJR2xDMnhVbi9yVTNTdlhyNzhTbS9BL3AxWGI4d1diOUpFWGkvTWdRSUFBQVFJRUNCQTRob0FSam1OZ09aUUFBUUlFN2hNb0s3WmZ1M2J0YkxVeCtidnB2dk16Vll4NWFydHdmaCtUTHdnUUlFQ0FBQUVDUnhNUTBJL201Q2dDQkFnUWVGaWdESmZ2bjlyNDcxTTQvN3F5WW5zSVptWTk3T1FWQWdRSUVDQkFnTUNSQkFUMEl6RTVpQUFCQWdUdUU3aDFLMitkMXFRVjIvKzl0SjNhOTFxeC9UNGRYeEFnUUlBQUFRSUVUaVFnb0orSXpVa0VDQkFZc1VBTzU2Ky92cmUxcy9QdFZhaitXZ3JuR2NPMDloRi9TMmc2QVFJRUNCQWdzQmdCQVgweGprb2hRSURBV0FRbU9aeWYzOW01RWtQNDZWbWpwK216M3lkaitRN1FUZ0lFQ0JBZ1FHQnBBdjZnV2hxdGdna1FJREE0Z1pCYVZJYkxUOWZodjAzN25lL0VHUGZTYTBiUEI5ZlZHa1NBQUFFQ0JBaXNRMEJBWDRlNmF4SWdRS0NQQXJkdTVRWGc0cFViTzM4cExRcjNSK0owdXA4U2U3NFgzWU1BQVFJRUNCQWdRR0FCQWdMNkFoQVZRWUFBZ2NFTHpPNDd2M3pqeGgrcXF2QlgwMzNuc1FyQnlQbmdPMTREQ1JBZ1FJQUFnVlVLQ09pcjFIWXRBZ1FJOUZPZzNIZWVWbXpmcVdQelA4NmFrS2U2NXludkhnUUlFQ0JBZ0FBQkFnc1NFTkFYQktrWUFnUUlERlFnaC9DOENGeDZ4UDhoalpwdlZlNDdiem44UzRBQUFRSUVDQkJZc0lDQXZtQlF4UkVnUUdCUUFyZXFmTjk1dGJXNys1ZlRmdWZmTVZzVXpuM25nK3BralNGQWdBQUJBZ1M2SWxEKzhPcEtaZFNEQUFFQ0JEb2tjQ3N0QVBkNlZmWTdqNkg2RDZ0ODMzblZCdllPMVZKVkNCQWdRSUFBQVFLREVUQ0NQcGl1MUJBQ0JBZ3NWS0RPNFh6end4KytHT3ZxdjV1VjdMN3poUklyakFBQkFnUUlFQ0J3djRDQWZyK0hyd2dRSUVDZ0ZTZ0x3TlYzNy95dEVPcVg3SGZ1MjRJQUFRSUVDQkFnc0h3QkFYMzV4cTVBZ0FDQmZnbmtMZFhTd25CWGRuYis5VkNISDRqVFpwclN1bHVpK3RXTGFrdUFBQUVDQkFqMFVFQkE3MkducVRJQkFnU1dLSkNtdHIrK2w3ZFVTNXVvL1djeDMzWWV5blpxdGxSYklycWlDUkFnUUlBQUFRSlpRRUQzZlVDQUFBRUNCd0lmaFBBUS84dTBhdnVWOU1aZSt2Qzc0a0RJWndJRUNCQWdRSURBRWdYODBiVkVYRVVUSUVDZ1Z3SzNidVZwN0UyYTJ2NkQ2Yjd6NzhsVDI5UFh0bFRyVlNlcUxBRUNCQWdRSU5CbkFRRzl6NzJuN2dRSUVGaWNRSm5hdm5YanhuYWEwUDZmeGlZdDJONU9iVi9jRlpSRWdBQUJBZ1FJRUNEd1JBRUIvWWs4M2lSQWdNQm9CTnJwN1RIK2RWUGJSOVBuR2txQUFBRUNCQWgwVEVCQTcxaUhxQTRCQWdSV0xuQ3JUR09mYnQzWS9wNDBhdjc5YWZRODczZHUxZmFWZDRRTEVpQkFnQUFCQW1NWEVOREgvaDJnL1FRSWpGMGdWSzlYZTl2YjIyZGlESDhqcmRtZUgvblRCd3ZHbFpmOFE0QUFBUUlFQ0JBZ3NHd0JBWDNad3NvblFJQkF0d1VtdVhwM0p1R24wdFQycjY1aXpLdTJsOWU2WFcyMUkwQ0FBQUVDQkFnTVQwQkFIMTZmYWhFQkFnU09LcENEK1A3bG16ZGZUUVBtLzA1WkdFNDRQNnFkNHdnUUlFQ0FBQUVDQ3hjUTBCZE9xa0FDQkFqMFJxRE1hSy9qOUsrbEJkdFBwOUh6L1ZSenZ4ZDYwMzBxU29BQUFRSUVDQXhOd0I5aVErdFI3U0ZBZ01EUkJObzl6Mi9jK0tOcDlQeTdZMHg3bm9kZ1liaWoyVG1LQUFFQ0JBZ1FJTEFVQVFGOUthd0tKVUNBUUtjRjhnSndhYlQ4MXFrMGF2NVhPbDFUbFNOQWdBQUJBZ1FJakVoQVFCOVJaMnNxQVFJRWlzQ3RXMldrZk92bTUzNDAxT0gzcG52UDg5UjJDOFA1OWlCQWdBQUJBZ1FJckZuQWRNWTFkNERMRXlCQVlNVUNkZlg2NjN2bnQ3ZTMwclpxZjdHS2FjdnpFUHpIMmhWM2dzc1JJRUNBQUFFQ0JCNGw0SSt5UjZsNGpRQUJBc01WS0QvM1Q5ZjFUNFFRWGtqTnpOdXErVjB3M1A3V01nSUVDQkFnUUtCSEF2NG82MUZucVNvQkFnVG1GQ2picWwyN2VmUERWUlYvekxacWMybzZuUUFCQWdRSUVDQ3dZQUVCZmNHZ2lpTkFnRUNIQmZMaWNOVzBhZjVpcU90ejZhblI4dzUzbHFvUklFQ0FBQUVDNHhNUTBNZlg1MXBNZ01BNEJjcm8rWlVYcjc4U1EvVW5aNlBuMWlFWjUvZUNWaE1nUUlBQUFRSWRGUkRRTzlveHFrV0FBSUZsQ0lUcEpOOTdmanB0cjVaWGJpOGo2c3U0ampJSkVDQkFnQUFCQWdTT0wyRDA1UGhtemlCQWdFRGZCUExvK1hSemQvZnJZeFgvamFxSlZtN3ZXdytxTHdFQ0JBZ1FJREFLQVNQb28raG1qU1JBWU9RQ1phUThwZlFmUy9lZWI4eEd6LzM4SC9rM2hlWVRJRUNBQUFFQzNSUHdCMXIzK2tTTkNCQWdzRWlCZS9lZXB3bnRQMWp1UFE4aHYrWkJnQUFCQWdRSUVDRFFNUUVCdldNZG9qb0VDQkJZc0VCN24za3orZEVxaEdmY2U3NWdYY1VSSUVDQUFBRUNCQllvSUtBdkVGTlJCQWdRNkpoQUdUMi9kUDM2aTZsZVB6QWJQZmR6djJPZHBEb0VDQkFnUUlBQWdRTUJmNmdkU1BoTWdBQ0I0UW1VMGZPTmpmcEgwc3J0RjkxN1Byd08xaUlDQkFnUUlFQmdXQUlDK3JENlUyc0lFQ0J3SUpERCtmN0ZtemMzWXd3L0hLM2NmdURpTXdFQ0JBZ1FJRUNnc3dJQ2VtZTdSc1VJRUNBd2g4RHRxaXdFdHhIM3Z5L1VZYWVLVGQ3MzNNLzhPVWlkU29BQUFRSUVDQkJZdG9BLzFwWXRySHdDQkFpc1hpQlVyMVVsa0ljcS9FaWEycDczUFc4WGkxdDlYVnlSQUFFQ0JBZ1FJRURnaUFJQytoR2hIRWFBQUlFZUNaVFI4NnU3dS85U1N1YmZHR05zVXQzOXZPOVJCNm9xQVFJRUNCQWdNRTRCZjdDTnM5KzFtZ0NCWVF1a0lmT3FTcW44VDZXUjh5cU5vT2VBYmdSOTJIMnVkUVFJRUNCQWdNQUFCQVQwQVhTaUpoQWdRT0NRUUI0OW4xN1ozdjdhOVBtN1psdXJsUkgxUThkNFNvQUFBUUlFQ0JBZzBFRUJBYjJEbmFKS0JBZ1FtRU9nSFNtZmhPOVBpOE05Tzl0YXplajVIS0JPSlVDQUFBRUNCQWlzU2tCQVg1VzA2eEFnUUdENUF2bG4rdjcyOXZhWktsYi9hcnIzM09Kd3l6ZDNCUUlFQ0JBZ1FJREF3Z1FFOUlWUktvZ0FBUUpyRnlnLzArOU1KdCtaRm0zL3lPemVjei9uMTk0dEtrQ0FBQUVDQkFnUU9KcUFQOXlPNXVRb0FnUUk5RUdnTEE0WHF1YjdMQTdYaCs1U1J3SUVDQkFnUUlEQS9RSWI5My9wS3dJRUNCRG9xVUQrRDY3VHplM3RtN0VLZjZocTBzTHRJVmdjcnFlZHFkb0VDQkFnUUlEQU9BV01vSSt6MzdXYUFJR2hDZHh1OXptdko1UHZUdFBiTDFvY2JtZ2RyRDBFQ0JBZ1FJREFHQVNNb0kraGw3V1JBSUdoQzRUcXRXcS9ORExHUDk0Mk5tK0E3a0dBQUFFQ0JBZ1FJTkFuQVNQb2Zlb3RkU1ZBZ01DakJjclA4czBiTjM1UEZhcmYxNjdlbnA1NUVDQkFnQUFCQWdRSTlFcEFRTzlWZDZrc0FRSUVIaWxRd25nZG1qeTkvZlJzZXJ1Zjc0K2s4aUlCQWdRSUVDQkFvTHNDL29EcmJ0K29HUUVDQkk0cTBFNXZiOElmVGVIYzN1ZEhWWE1jQVFJRUNCQWdRS0JqQWdKNnh6cEVkUWdRSUhCTWdiSlMrOVdkblcrb3FuaXJURyt2MmdYampsbU93d2tRSUVDQUFBRUNCTllzSUtDdnVRTmNuZ0FCQW5NS2xPbnRUUWpmR2VwNll2WDJPVFdkVG9BQUFRSUVDQkJZbzRDQXZrWjhseVpBZ01DY0FqbWNsK250YVdMN0h5N1QyNjBOTnllcDB3a1FJRUNBQUFFQzZ4TVEwTmRuNzhvRUNCQ1lWNkQ4REwrNnUvdlZvWXJmT0Z1OTNjLzFlVldkVDRBQUFRSUVDQkJZazRBLzVOWUU3N0lFQ0JCWWdFQ1ozcDVHejc4OWhQcGNGYXRwS3RQUDlRWEFLb0lBQVFJRUNCQWdzQTRCZjhpdFE5MDFDUkFnc0JpQmxNM1QwbkJWL003OGIvb29YeSttYUtVUUlFQ0FBQUVDQkFpc1drQkFYN1c0NnhFZ1FHQXhBbm4wZkhyeDVzM050Sy9hUjBzMFQ4UG9peWxhS1FRSUVDQkFnQUFCQXVzUThNZmNPdFJka3dBQkF2TUxsTzNWSmpGK1N3alZUaG85YjFLUmZxYlA3Nm9FQWdRSUVDQkFnTURhQlB3eHR6WjZGeVpBZ01EOEFpRk9iMWNwb2FmWjdUbWdleEFnUUlBQUFRSUVDUFJZUUVEdmNlZXBPZ0VDb3hXNHQ3MXZSQ2xvQUFCQUFFbEVRVlJhQ09IYnlxM242Y2xvTlRTY0FBRUNCQWdRSURBUUFRRjlJQjJwR1FRSWpFcWcvT3krZFAzNmk3RUt2N2RzcjVadVJCK1ZnTVlTSUVDQUFBRUNCQVlvSUtBUHNGTTFpUUNCd1F1VU1GNVBKdCtVbmx4TXJjM1Qyd1gwd1hlN0JoSWdRSUFBQVFKREZ4RFFoOTdEMmtlQXdHQUY2aEIvLzZIN3p3WDB3ZmEwaGhFZ1FJQUFBUUpqRVJEUXg5TFQya21Bd0pBRXBya3hhV3UxajdaYm43di9mRWlkcXkwRUNCQWdRSURBZUFVRTlQSDJ2WllUSU5CUGdmeHpPMTdlMmRsTnM5cGZLZmVmQjl1cjliTXIxWm9BQVFJRUNCQWdjTCtBZ0g2L2g2OElFQ0RRZFlIMjUzWmR2NXJHelRkVFpkMS8zdlVlVXo4Q0JBZ1FJRUNBd0JFRkJQUWpRam1NQUFFQ1hSSklONXgvODZIN3o3dFVOWFVoUUlBQUFRSUVDQkE0b2NER0NjOXpHZ0VDQkFpc1hpQXZCSmRIelBNTjZOOVlQbHU4dldYd0x3RUNCQWdRSUVCZ0FBSkcwQWZRaVpwQWdNQm9CRXBBdjNidDJ0bVUwTCt1dERwSTZLUHBmUTBsUUlBQUFRSUVCaThnb0ErK2l6V1FBSUVCQ1pTdDFQYWZtOXhJQzhTOVdCYUlzLy81Z0xwWFV3Z1FJRUNBQUlHeEN3am9ZLzhPMEg0Q0JQb2tVQUo2M0M4THhEMmJLbTZCdUQ3MW5yb1NJRUNBQUFFQ0JKNGlJS0EvQmNqYkJBZ1E2SnBBQ1BGckR5MFFWMEo3MStxb1BnUUlFQ0JBZ0FBQkFzY1hFTkNQYitZTUFnUUlyRXNnNWd1blJQNzFhWkc0ZGRYQmRRa1FJRUNBQUFFQ0JKWWtJS0F2Q1ZheEJBZ1FXSUxBTkpXWjhubjRjQ2s3cEozUVBRZ1FJRUNBQUFFQ0JBWWpZSnUxd1hTbGhoQWcwRkdCZ3hDZFB4ODh6OFBmN1hacFI2OTAvZytxelpYZDNlMjBPTnlIWnFmNWo2eEg5M01rQVFJRUNCQWdRS0R6QWdKNjU3dElCUWtRNkxuQXdWejBnODhIemNsaC9jSFhEdDU3MU9jUzdzTmtjaTFPOXpkbkJ4d0Uva2NkN3pVQ0JBZ1FJRUNBQUlHZUNRam9QZXN3MVNWQW9CY0NaYlQ3K2VlZnZ6WTlkZXEvU2VQbTUwS3NQaGREMkV1MXY1QlM5ZDk4NTgwM1gwdlBKK2tqVDFzL3lxTU40OVBwSzJsbWU1MUcwZk41K1h3UEFnUUlFQ0JBZ0FDQmdRZ0k2QVBwU00wZ1FLQjdBczF6ejlYVmRQL2JRMTJmell1NjVZU2RubGZOdE5sTlQ3OHBmY3p1S1QvQ1NQcnQyMVgxMm10VnJLdmRrRXRxbWxSZ205bFRPUjRFQ0JBZ1FJQUFBUUlERUhELzRnQTZVUk1JRU9pbXdIUXllVGRGNkxkaTA2UjhIdStrei92TmRIb25qWURmMnRyZC9mNVpyWTgyQ3Y3YWErMTArS2I2U0RkYnExWUVDQkFnUUlBQUFRTHpDZ2pvOHdvNm53QUJBbzhST1AyVnIreW5WTjNNUnJvMzB1YzhheWw5NUt3ZGZ6TDlrOFA1ZnZwNDJsQjRmdjlnS3Z5SDJpM1dublpLT3NPREFBRUNCQWdRSUVDZ1Z3SUNlcSs2UzJVSkVPaUpRQm50ZnZ2dHQ5OUxvZngzSDRqU2t6eVNYdFgxTjF6ZTNmMmhXWHVlTm9wZWluanBwWmVlVFZIK2FqbW56SFB2aVlacUVpQkFnQUFCQWdRSUhFbEFRRDhTazRNSUVDQndJb0c4bGRyQnlQY0hCZVQ5eS9NOTZhSDY4ZXJsbDU5SmJ4eGxGTDM2bmJ0M3I2Yno4alpydWF3SGN2OEh4WHRHZ0FBQkFnUUlFQ0RRVHdFQnZaLzlwdFlFQ1BSRUlJWHdyenlpcW1rVVBlNm5uUDUxVis2OCt5T3o5NTgwaWw3Q2VKeE1McVpVZis0UjVYbUpBQUVDQkFnUUlFQmdBQUlDK2dBNlVSTUlFT2lrUUJ1cVk4aWo2UG0yOHpMc2ZhK21hWXA2SGdrUFZmMlQxNjVkTzV0ZWYrb29ldDAwMTFJcHAwdHBSdER2VVhwQ2dBQUJBZ1FJRUJpS2dJQStsSjdVRGdJRXVpYlFUa0Z2bXZjZVU3RkoyaXB0UDQySWYyanYxS2svTlR2bWNhUG9iZGl2NDR0cFJENC9jdWh2bjVVdi9VT0FBQUVDQkFnUUlEQUVBUUY5Q0wyb0RRUUlkRmNneER3eS91aEhtdVBlanFMSG43eDQ4K1ptT2lnZis5aWZ5M1UxMmN3M3J1YzkyeDVkb0ZjSkVDQkFnQUFCQWdUNkxQRFlQd1Q3M0NoMUowQ0F3Sm9GY29BdUk5enBuM2ZhcDQvTTFHVVVQZFQxN3NaMCttZExuVytWcmRjZVdmMlV5OXNWM0IvNXJoY0pFQ0JBZ0FBQkFnVDZMaUNnOTcwSDFaOEFnVzRMaFBEd0t1NkhheHhDbmJaZFN4aysvUG56Mjl0YjFldlZYbnI3d1ovTmJib1A4Zm9EZDdJZkxzbHpBZ1FJRUNCQWdBQ0JuZ3M4K0VkZ3o1dWorZ1FJRU9pTVFCbEJUOG42bmFmY0xaNS9EdStGT2x3L0hjSmZtTlgrd1ovTkphQ24rZkRQNTlYbVBBZ1FJRUNBQUFFQ0JJWXA4T0FmZ2NOc3BWWVJJRUJnVFFJaFBtVUV2YTFYMm5hdHliZVgvOW1yTDczMFFucnB3WHZSWnlQbzlabjI4Skw5MTlRaWx5VkFnQUFCQWdRSUVGaVdnSUMrTEZubEVpQXdib0hidDl2MmgvQ2xJMERrbjhWN1ZWMXZUZmYzZjJKMi9NSFA1NXpHYzBDdjAwNXQ3UjdvYVl1MjJURStFU0JBZ0FBQkFnUUlERWpnNEEvQUFUVkpVd2dRSU5BZGdiUlFlN3NQK3RPcnRERWJSZi9UbTl2Yk45UGg5NDJpYjIxdG5VMmo4UmRtRTl3RjlLZDdPb0lBQVFJRUNCQWcwRHNCQWIxM1hhYkNCQWowUXVDMTEwbzFwMDN6YnRvV0xUMS9hcWJPQit5bFFIOWhNZ2svWGs1dUY0c3JKOVoxZlNhVmNxNHRhL2F1VHdRSUVDQkFnQUFCQW9NU0VOQUgxWjBhUTRCQTV3UkM4K1JWM08rdmNMa1hQZVg1UDdPMXMvT1I5TlorTmR0MmJXOWo0NW1xYW1iM29EODk3ZDlmcks4SUVDQkFnQUFCQWdUNklDQ2c5NkdYMUpFQWdkNEtoRmgvc1ZRK1BMUjEycVBhbEg4bXB4WGQ2K2RpWGJXajZPKy9Xa2JRTitvNkJmUnc2bEVuZVkwQUFRSUVDQkFnUUdBWUFnTDZNUHBSS3dnUTZLaEEyaHJ0N2pHclZ1NUZyMkw0NGNzM2I3NWFmZXBUNWZ4NHFxblQ5UGVuenBNLzVyVWNUb0FBQVFJRUNCQWcwQ0VCQWIxRG5hRXFCQWdNU3FDczU1Wkd3MzhubG52UWp6d3R2YjBYdlE2blE1eit1d2NpOVY3OVRDcHdjdkMxendRSUVDQkFnQUFCQXNNVEVOQ0gxNmRhUklCQWh3UlNxSDR2VlNlSDllT01mczlHMGF0L2JldkdqVy9LemRtZk5IbUJ1SU1wN3NjcEs1L3VRWUFBQVFJRUNCQWcwQU1CQWIwSG5hU0tCQWowVnlDdEVQZCtGVUxlTWkwL3lxaDYrL1NKLzRZVXh2ZlQ2UHRHR24zL3FmYklrTTg5NnZsUExOeWJCQWdRSUVDQUFBRUMzUlFRMEx2WkwycEZnRUQvQlVxWW5weHE3cWJoN3VPczVONjJQSVE4aWg3VHVQdS9jdm1GRjc2dWlwUGZTVUUvajV3TDZmMy8zdEFDQWdRSUVDQkFnTUFqQlFUMFI3SjRrUUFCQW9zUm1PeFA5dE1vK1BFRGVyNThPaTluOHJDeDhWTXByQi84dkRhOWZURmRveFFDQkFnUUlFQ0FRT2NFTmpwWEl4VWlRSURBZ0FUMjl2ZlR0bWw1QlAwRXVUcUVzaTk2T3ZON0o2SCtSS3ppN3lTYUMra2pqNktmb01BQndXb0tBUUlFQ0JBZ1FHQ0FBZ2NqTWdOc21pWVJJRUJnL1FJYisvdDMwNVpwZWFHNC9EanU5UFFjd3ZNYThNL0cyUHg0ZW5id0gxV0Y4OExwSHdJRUNCQWdRSURBc0FRRTlHSDFwOVlRSU5BZGdSTEc5ODd0dlorbXFiODd4NEIzQ2VtcFdUdnA0MHgzbXFjbUJBZ1FJRUNBQUFFQ2l4WVEwQmN0cWp3Q0JBZ2NFamo5bGRQN2FXcjYzVGtucEIrRTlFTWxlMHFBQUFFQ0JBZ1FJREEwQVFGOWFEMnFQUVFJZEVXZ2pLQy8vZmJiNzZiVjE3ODhtNU4rM0NudWg5dGlXdnRoRGM4SkVDQkFnQUFCQWdNVUVOQUgyS21hUklCQXB3UnlLRC9ZQjcxVEZWTVpBZ1FJRUNCQWdBQ0JiZ2tJNk4zcUQ3VWhRR0JZQW1YVU8rMlU5cFhTckRUWGZWak4weG9DQkFnUUlFQ0FBSUZGQ2dqb2k5UlVGZ0VDQk80WEtBRTl4dERjLzdLdkNCQWdRSUFBQVFJRUNEd3NJS0EvYk9JVkFnUUlMRmFnYVdiYnJCbEFYeXlzMGdnUUlFQ0FBQUVDd3hJUTBJZlZuMXBEZ0VBWEJVSjBEM29YKzBXZENCQWdRSUFBQVFJZEV4RFFPOVlocWtPQXdLQUUybnZRcStvMzU5Z0hmVkFnR2tPQUFBRUNCQWdRSVBCNEFRSDk4VGJlSVVDQXdHSUVRakNDdmhoSnBSQWdRSUFBQVFJRUJpMGdvQSs2ZXpXT0FJRTFDN1NMeEZYVk8xVjV0dWJhdUR3QkFnUUlFQ0JBZ0VDbkJRVDBUbmVQeWhFZ01BU0JFTU4wQ08zUUJnSUVDQkFnUUlBQWdlVUtDT2pMOVZVNkFRSUUwdTNuNFVzWUNCQWdRSUFBQVFJRUNEeE5RRUIvbXBEM0NSQWdNS2RBQ1BaQm41UFE2UVFJRUNCQWdBQ0JVUWdJNktQb1pvMGtRR0NkQXRPbWViZUtlUS8wNEU3MGRYYUVheE1nUUlBQUFRSUVPaTRnb0hlOGcxU1BBSUVCQ0lTbXZRZGRQQjlBWjJvQ0FRSUVDQkFnUUdCNUFnTDY4bXlWVElBQWdTSVFZdjNiTTRvYzBmTlF1Z2NCQWdRSUVDQkFnQUNCaHdRRTlJZEl2RUNBQUlIRkNvUVk3ODVpdVRIMHhkSXFqUUFCQWdRSUVDQXdLQUVCZlZEZHFURUVDSFJNb0l5V2g3citVbXdUdW9EZXNRNVNIUUlFQ0JBZ1FJQkFsd1FFOUM3MWhyb1FJREJJZ2FhcTNrOE5TNTg4Q0JBZ1FJQUFBUUlFQ0R4ZVFFQi92STEzQ0JBZ3NCQ0JqUmpmVHd1NDc4OEtjdy82UWxRVlFvQUFBUUlFQ0JBWW5vQ0FQcncrMVNJQ0JEb21NRDExNm02YTI5NnU1TjZ4dXFrT0FRSUVDQkFnUUlCQWR3UUU5TzcwaFpvUUlEQlFnWHAvZnovR0tLQVB0SDgxaXdBQkFnUUlFQ0N3S0FFQmZWR1N5aUZBZ01EREFtVTYrOTUwdXBmZUV0QWY5dkVLQVFJRUNCQWdRSURBSVFFQi9SQ0dwd1FJRUZpR3dNYmUzdDJxQ3UrbGoyVVVyMHdDQkFnUUlFQ0FBSUdCQ0Fqb0ErbEl6U0JBb0xzQ2UyZlB2cCtpK2J1emZHNlJ1TzUybFpvUklFQ0FBQUVDQk5ZcUlLQ3ZsZC9GQ1JBWWc4QXo3NzIzbC9aQlQ2UG9IZ1FJRUNCQWdBQUJBZ1FlTHlDZ1A5N0dPd1FJRUpoWG9JeVd2LzMyMisrbGJkYStZb0w3dkp6T0owQ0FBQUVDQkFnTVcwQkFIM2IvYWgwQkF0MFFhRkkxRHZaQjcwYU4xSUlBQVFJRUNCQWdRS0J6QWdKNjU3cEVoUWdRR0tKQUNOVlhodGd1YlNKQWdBQUJBZ1FJRUZpY2dJQytPRXNsRVNCQTRGRUNaV1o3YktwMmNiaDBNL3FqRHZJYUFRSUVDQkFnUUlBQUFRSGQ5d0FCQWdTV0s5RGVlaDdqdTh1OWpOSUpFQ0JBZ0FBQkFnVDZMaUNnOTcwSDFaOEFnWDRJaE9nZTlINzBsRm9TSUVDQUFBRUNCTlltSUtDdmpkNkZDUkFZZ1VDZXpsNUcwTk0vNzdSUHpYQWZRYjlySWdFQ0JBZ1FJRURnUkFJQytvblluRVNBQUlGakNvUXdQZVlaRGlkQWdBQUJBZ1FJRUJpWmdJQStzZzdYWEFJRVZpN1FMaEtYUjlEYnU5RlhYZ0VYSkVDQUFBRUNCQWdRNkllQWdONlBmbEpMQWdSNkxoQ2lFZlNlZDZIcUV5QkFnQUFCQWdTV0xpQ2dMNTNZQlFnUUdMWEE3ZHR0ODBQNDBxZ2ROSjRBQVFJRUNCQWdRT0NwQWdMNlU0a2NRSUFBZ2ZrRlFnak4vS1VvZ1FBQkFnUUlFQ0JBWU1nQ0F2cVFlMWZiQ0JCWXY4QnJyNVU2VEp2bTNTcmVXOVI5L2ZWU0F3SUVDQkFnUUlBQWdjNEpDT2lkNnhJVklrQmdrQUtoc1lyN0lEdFdvd2dRSUVDQUFBRUNpeE1RMEJkbnFTUUNCQWc4VmlERStvdmx6VkQ1dWZ0WUpXOFFJRUNBQUFFQ0JNWXQ0QS9GY2ZlLzFoTWdzQ0tCRU9QZWlpN2xNZ1FJRUNCQWdBQUJBajBWRU5CNzJuR3FUWUJBYndUeWplZFZtRXgrTzVaNzBPMkczcHVlVTFFQ0JBZ1FJRUNBd0lvRkJQUVZnN3NjQVFMakZHaGl2Sk5hYnBXNGNYYS9WaE1nUUlBQUFRSUVqaVFnb0IrSnlVRUVDQkNZVDJDanF0NnJRdGlmbFZKRzFlY3IwZGtFQ0JBZ1FJQUFBUUpERXhEUWg5YWoya09BUU5jRVNoaWZubXJ1aHFxeWtudlhla2Q5Q0JBZ1FJQUFBUUlkRWhEUU85UVpxa0tBd0hBRkp2dVQvWFFQdW9BKzNDN1dNZ0lFQ0JBZ1FJREEzQUlDK3R5RUNpQkFnTURUQmZiMjkvTXE3Z2RUM0o5K2dpTUlFQ0JBZ0FBQkFnUkdKeUNnajY3TE5aZ0FnWFVJYk96djMwMUx4TDAvdTdaNzBOZlJDYTVKZ0FBQkFnUUlFT2k0Z0lEZThRNVNQUUlFZWk5UXd2amV1YjMzUXdqdnBnM1hldDhnRFNCQWdBQUJBZ1FJRUZpT2dJQytIRmVsRWlCQTRENkI1OTUvYmk5VzhhNThmaCtMTHdnUUlFQ0FBQUVDQkE0SkNPaUhNRHdsUUlEQUVnVEtDUHBiYjcyVnQxbjc4bXo4M0JUM0pVQXJrZ0FCQWdRSUVDRFFkd0VCdmU4OXFQNEVDUFJGSUlkeWk4VDFwYmZVa3dBQkFnUUlFQ0N3QmdFQmZRM29Ma21Bd09nRXlzQjVDTlZYU3N2VFhQZlJDV2d3QVFJRUNCQWdRSURBVXdVRTlLY1NPWUFBQVFKekM1U0FIbU5vNWk1SkFRUUlFQ0JBZ0FBQkFvTVZFTkFIMjdVYVJvQkE1d1NhWnJiTm1nSDB6dldOQ2hFZ1FJQUFBUUlFT2lBZ29IZWdFMVNCQUlIQkM3UnJ3NFc4RC9wc21iakJOMWtEQ1JBZ1FJQUFBUUlFamlzZ29COVh6UEVFQ0JBNHZzQkJRUCtFZkg1OFBHY1FJRUNBQUFFQ0JNWWlJS0NQcGFlMWt3Q0J0UXZFRUQ4V1k1cmVIc0lrVmNZODk3WDNpQW9RSUVDQUFBRUNCTG9sSUtCM3F6L1VoZ0NCWVFxMGk4Tk53NmVyR0g4ck5UR1BxQXZvdyt4cnJTSkFnQUFCQWdRSW5GaEFRRDh4blJNSkVDQndaSUVTeG4vcm4vN1ROOU1aL3lTay9kYlNRMEEvTXA4RENSQWdRSUFBQVFMakVCRFF4OUhQV2ttQXdIb0ZjaGpQMDlyVEkveDhtdUtlNG5tZTYrNUJnQUFCQWdRSUVDQkE0QU1CQWYwREM4OElFQ0N3UElIYnMrWGg2dmp4Rk03VGRkcGg5T1ZkVU1rRUNCQWdRSUFBQVFKOUV4RFErOVpqNmt1QVFEOEZYbXVudERkTitQa1V6L2RTWExkUVhEOTdVcTBKRUNCQWdBQUJBa3NURU5DWFJxdGdBZ1FJM0NkUUZvbzdXMVdmU1NQb3Z6b2JRRzhYajd2dk1GOFFJRUNBQUFFQ0JBaU1WVUJBSDJ2UGF6Y0JBcXNXS1BlaHYvbm1tKytsNmUzL0tPUVo3KzVEWDNVZnVCNEJBZ1FJRUNCQW9OTUNBbnFudTBmbENCQVltRUJadmoyMTZXT3pPOUlIMWp6TklVQ0FBQUVDQkFnUW1FZEFRSjlIejdrRUNCQTRua0M3Y250YUtLNE1ub2ZnUHZUaitUbWFBQUVDQkFnUUlEQm9BUUY5ME4ycmNRUUlkRXlnQlBRUTYwK0hHTjlKZGNzajZtMW83MWhGVlljQUFRSUVDQkFnUUdEMUFnTDY2czFka1FDQjhRcVVNUDdPWnovN1Zvcm12eFRhbmRZRTlQRitQMmc1QVFJRUNCQWdRT0ErQVFIOVBnNWZFQ0JBWUtrQ09Zem5hZTFwZmJqdzhiS1N1NFhpbGdxdWNBSUVDQkFnUUlCQW53UTIrbFJaZFNWQWdNQUFCTnFGNHVyNGVqdTV2UjFHSDBDN05JRUFBUUlFQ0JBZ1FHQk9BU1BvY3dJNm5RQUJBc2NVS0ZQYW15WjhNajNaUzFQZExSUjNURUNIRXlCQWdBQUJBZ1NHS2lDZ0Q3Vm50WXNBZ2E0S05MbGlaNnZxTTJtZSs2K1dhZTRXaXV0cVg2a1hBUUlFQ0JBZ1FHQ2xBZ0w2U3JsZGpBQUJBbVZpKytUTk45OThMeTNpL285Q1hzZzl4aExhMlJBZ1FJQUFBUUlFQ0l4YlFFQWZkLzlyUFFFQzZ4Rm83ME92cW8rVmpkYldVd2RYSlVDQUFBRUNCQWdRNkppQWdONnhEbEVkQWdSR0lkQnVyUmJqeDhzaTdpRzREMzBVM2E2UkJBZ1FJRUNBQUlFbkN3am9UL2J4TGdFQ0JKWWhVQUo2cU90UGh4amZTUmZJSStwdGFGL0cxWlJKZ0FBQkFnUUlFQ0RRQ3dFQnZSZmRwSklFQ0F4TW9JVHhkejc3MmJkU05QK2wwTzYwSnFBUHJKTTFod0FCQWdRSUVDQndYQUVCL2JoaWppZEFnTUQ4QWptTTUybnRhWDI0OEhwWnliM01kWisvWUNVUUlFQ0FBQUVDQkFqMFYwQkE3Mi9mcVRrQkF2MFdLQXZGcFg5K0xxWDAxSkoyR0wzZlRWSjdBZ1FJRUNCQWdBQ0JlUVFFOUhuMG5FdUFBSUdUQzVRcDdVMWRmekk5MlV0VDNTMFVkM0pMWnhJZ1FJQUFBUUlFQmlFZ29BK2lHeldDQUlFZUNwUzl6eS9VOWEra0VmUmZtZDJIYmovMEhuYWtLaE1nUUlBQUFRSUVGaVVnb0M5S1Vqa0VDQkE0bmtDNUQvMk5OOTU0UDAxdS84V3lrTHY3MEk4bjZHZ0NCQWdRSUVDQXdNQUVCUFNCZGFqbUVDRFFLNEZ5SDNvVnc4ZkxSbXU5cXJyS0VpQkFnQUFCQWdRSUxGcGdZOUVGS284QUFRSUVqaXhRN2tOUEErZXZsMTNRUXppNEQ3ME43a2N1eG9FRUNCQWdRSUFBQVFKREVEQ0NQb1JlMUFZQ0JQb3FVQUo2ZmVyVVB3NHhmajQxSWdmejhscGZHNlRlQkFnUUlFQ0FBQUVDSnhjUTBFOXU1MHdDQkFqTUsxREMrQmZlZU9Oektaci84bXloT0FGOVhsWG5FeUJBZ0FBQkFnUjZLaUNnOTdUalZKc0FnVUVJNURBK3U5V29UdmVocHdGMEM4VU5vbU0xZ2dBQkFnUUlFQ0J3RWdIM29KOUV6VGtFQ0JCWXRFQ01IeTlGem9iUkYxMjg4Z2dRSUVDQUFBRUNCTG92WUFTOSszMmtoZ1FJREZ1Z1RHbHY2dnFUNmNsZWF1ckJRbkhEYnJYV0VTQkFnQUFCQWdRSVBDUWdvRDlFNGdVQ0JBaXNWS0RKVjd0UTE3K1NwcmYveW13QXZieTIwbHE0R0FFQ0JBZ1FJRUNBd05vRkJQUzFkNEVLRUNBd2NvRThnajU1NDQwMzNrKzNvUDlpV2NqZGZlZ2ovNWJRZkFJRUNCQWdRR0NzQWdMNldIdGV1d2tRNkpKQTJmYzh4dkI2MldpdFN6VlRGd0lFQ0JBZ1FJQUFnWlVKQ09ncm8zWWhBZ1FJUEZhZzNJZWVwcmgvdkF5ZWgrQSs5TWRTZVlNQUFRSUVDQkFnTUZ3QkFYMjRmYXRsQkFqMFI2QUU5TEN4OGVrUTQrZFR0Zk9JZWh2YSs5TUdOU1ZBZ0FBQkFnUUlFSmhUUUVDZkU5RHBCQWdRV0lCQUNlUHYvUHF2LzBhSzVyODhXeWhPUUY4QXJDSUlFQ0JBZ0FBQkFuMFNFTkQ3MUZ2cVNvREFVQVZ5R045b0cxZC92RXFyeGFYcDdnTDZVSHRidXdnUUlFQ0FBQUVDanhHWS9VSDRtSGU5VElBQUFRS3JGWWp4WSswRmMwcjNJRUNBQUFFQ0JBZ1FHSk9BRWZReDliYTJFaURRWllFeVloNG4wMCtrSjNmVFZIY0x4WFc1dDlTTkFBRUNCQWdRSUxBRUFRRjlDYWlLSkVDQXdBa0VtbnpPK2ZETXI2WDU3Yjh5dXcrOXZIYUNzcHhDZ0FBQkFnUUlFQ0RRUXdFQnZZZWRwc29FQ0F4U0lJK2dUOTU0NDQzM1ExUDlRbW1oKzlBSDJkRWFSWUFBQVFJRUNCQjRuSUNBL2pnWnJ4TWdRR0QxQXUxOTUzWDFzYkpRM09xdjc0b0VDQkFnUUlBQUFRSnJGQkRRMTRqdjBnUUlFSGhBb055SFhqWFZKOHJnZVFoNUljLzJ0UWNPOUNVQkFnUUlFQ0JBZ01Ed0JBVDA0ZldwRmhFZzBGK0JFc2JyMDN2L09EWGhjN05tQ09qOTdVODFKMENBQUFFQ0JBZ2NTMEJBUHhhWGd3a1FJTEJVZ1JMR1AvOXJuMzg3elhYL3BkbENjUUw2VXNrVlRvQUFBUUlFQ0JEb2pvQ0EzcDIrVUJNQ0JBamtNSjZudGFkSGZMM2NoMjZodUpiRHZ3UUlFQ0JBZ0FDQkVRZ0k2Q1BvWkUwa1FLQ1BBdkZqVlV4NWZUYU0zc2NXcURNQkFnUUlFQ0JBZ01EeEJBVDA0M2s1bWdBQkFzc1dLRlBhWXgzelZtdDMwc2NrZlpqbXZteDE1Uk1nUUlBQUFRSUVPaUFnb0hlZ0UxU0JBQUVDaHdTYS9QeDhlT2JYWWhWL2RUYUFYbDQ3ZEl5bkJBZ1FJRUNBQUFFQ0F4UVEwQWZZcVpwRWdFQ3ZCZkpvK2VTTk45NTRQOFR3eWRJUzk2SDN1a05WbmdBQkFnUUlFQ0J3VkFFQi9haFNqaU5BZ01EcUJOSWk3dWtSWmd2RnJlNjZya1NBQUFFQ0JBZ1FJTEJHQVFGOWpmZ3VUWUFBZ2NjSXRQZWN4L0I2R1R3UElhL3M3ajcweDJCNW1RQUJBZ1FJRUNBd0ZBRUJmU2c5cVIwRUNBeEpvSVR4K3RUZFQ2ZFkvcmxad3dUMElmV3d0aEFnUUlBQUFRSUVIaUVnb0Q4Q3hVc0VDQkJZczBBSjQ1Ly90YysvbmVhNi85SnNvVGdCZmMyZDR2SUVDQkFnUUlBQWdXVUxDT2pMRmxZK0FRSUVqaStRdzNpZTFwN3ZRLy81dEJkNm11Q2VOMFgzSUVDQUFBRUNCQWdRR0xLQWdEN2szdFUyQWdRR0lCQi9Mb1h6Rk5SelN2Y2dRSUFBQVFJRUNCQVlzb0NBUHVUZTFUWUNCUG9zVVBZK2o5UHFreW1nMzBrTm1hUVBvK2g5N2xGMUowQ0FBQUVDQkFnOFJVQkFmd3FRdHdrUUlMQW1nUkxHZi9QTW1WK0xJWHhtTm9CZVF2dWE2dU95QkFnUUlFQ0FBQUVDU3hZUTBKY01ySGdDQkFpY1VDQUg5RW4xbWMvY1NlUG12K0ErOUJNcU9vMEFBUUlFQ0JBZzBDTUJBYjFIbmFXcUJBaU1UcURjZHg3citMR090enltYWZqNzVhT3FwcW11ZWFUZmRQeU9kNXJxRVNCQWdBQUJBdDBUYUZjSjdsNjkxSWdBQVFJRVppRzNic0luVWdMT0M4WGxuOWs1K0habndiZ1E5bEl3UHhVbWsvYjNTVnJRN3Q2Qzg3SGF2MWZkVU9YL0lKenIzWjI2cDhwNEVDQkFnQUFCQWdTNkpHQUV2VXU5b1M0RUNCQzRYNkNNUWsvMjlqNmRZdTF2ekxKdE4rNURUK0U3M3hjZll2Vi9wWHA5YXhXYmZ6czI4YWRUSVAvNTlQVVhjMTNEcE43SXdUM1U2VDhzaEhBUTBQTi9hMmhIMjB1QUx5UHVSdDN2NzNkZkVTQkFnQUFCQWlNVk1JSSswbzdYYkFJRWVpRlFBdnJiYjcvOStTdTd1LzhrNWVIcjNka05QWS9vMTNtMC9MZCs4ODAzZnk1cDVvLzhtRnplM3Q2ZVRDWWZhbUx6YWhYREt5bkZ2NUpDK1kzMDNzMFUxSjhyZ1QwZk9XdE1hZVFIRFp0K01BU2ZCdHRUems5SEh2N0laM29RSUVDQUFBRUNCQVlwSUtBUHNsczFpZ0NCZ1FqazdKcC9UcWZSNmpReUhlcHZyNW9tbGdYak90TEFsSnkva3F0eTdkcTFzK2svSkx5Zm5rNS82NjIzUHBzKzU0K2ZUUi9sa1RMN21iMjYzazZqN0Ntb3g0L0V1bjR4aGZZVTNxdnJLWkJ2cHh5K0ZVUDFYQ3B2VXRXenlWMEhBYjVOOEFkRlBSamc4K3M1d09mSDRjOEh6OXQzL0V1QXdMd0NCN05nY2psNTFvc0hBUUlFQ0N4QlFFQmZBcW9pQ1JBZ3NHaUJOSHIrYytYZTd0bCthNHN1LzdqbHBhM2ZVcDVPajFCOUtYOUs0VHdIOVZDOSt1cnAvSFgxcVU4ZFRNWFA4VHErOWRaYjc2YlBuNWw5L0V6NmZPK1J3dnZXM1NwZUNYWDlRanJwNVZUdUN5bTBmemlWdHB1ZVgwbHJ6dTJrR2ZLWFVsNS9OamtjQ3ZDNWlKTGUyMzgvR0lYUGJ4d0s4dm5ML0VpbDNUOGlQM3V4dk9rZkFnUWVGc2loUEgvay82RUo1US83ZUlVQUFRSUxGeWgvWHkyOFZBVVNJRUNBd0tJRThoL0h6ZGIyOXRla2tlVlBwaHU0bjAxZjV6K1cxLzN6dTBuL3JhQk8vOUhnSDZZcDdQL0pkRDkrNHJkLzR6ZCsvWUZHVDJiMVBBanIrZTFRM1U0ZnIrV25aYlgzdysrVkZ4LzRwMDZqODF2VGpZMUw2Y0RMYVVYN2x5WWh2SkN5K0pVVTRqK1VaaE5jUzBWZVNpUmJTV1VyZmYxTStud3FCZm4wOGlHaVErRzlmZG9HKzNSVWZwTHZpMC9GSDd4Mjc3dzJ6cmNWdXZkaUxybDlxZng3K1BtaGx3ZjdkSnI2UGZmci8vdk9aOS84NkdCYk9jNkc1ZS9sd3g4NWtCLzhqNkxNa3BtZU92WE42WVhmVTkrNTgzZSs4SVV2ZkhsMi9MMWp4c21tMVFRSUVGaXN3Tmorc0Zpc250SUlFQ0N3ZklIOGN6cSsvUExMejN6eHp2cy9uNzc0dWhTSzh4L09PU1N0KzVFRzB0c1VuRUx2YjZkcXZwNyt2UCtaMkZSLy8wd0luM3p6elRmZmU2Q0NlZFpXL21NK2gvTDgrZUIzVVA1OCtIbjZzcngvY0d6KytrbVArdUxObXhmVGY3bllqRTF6YmhyajFYVHdUajBKbTZtQXkrbTJnTzJtQ3RmckVDNmtVaSttTkg0NXZiK1pBdnlwRlBKUHo1cVFhakNyUXI1cXVYeitmT2pab1pBL2U3bEpoNldqeXdubDJQYWZXVGtmak5ibmx3L2E5K0R6OXBUKy9DdWc5NmV2amxyVHcvOGg3YjcvWVBiOGpSdGZOYTJhZnk0VjlPM3AyL3lqNlg4ckg4bi9XNy9iTkYvOS83ZDNKL0NWWFBXWjk2dnFYcWxYZGJzMzI3U2tqdU9Ra05Bc2hvWWtMTVp0WTJBeW1UZXpKSUY1RThneU1IbDVtUXpEZk1KbUlEUHZPMkVOVG5nSldaaGhHVExKUUJJbWsyU1NNUFBpclkwTkdCdDVBUnBzTUUyM2RLL3Nka3ZxUlhTM3U2VmJaNTcvcVZ2U2xheHVhN2xMTGIreTFicTZTOVU1MzFQU3ZVK2RVNmVteDhjbmRMOC9nTGpjRGZFOEJCQkFBSUVuRjJqOXdQRGt6K1laQ0NDQUFBSzlFTEFQMEExTkZQZGZOY0hhTDdoR1kxWmhNaXVuS0tWaFd4M2Jla3ZSbDBLeUdYMUhrZlJMbWlUdTVtcGw1b3RIanh6OTNpSzROQlJZdWszWHNlZ3Bjei9hZTlYODEvNzlRWERnZ0QyWXZtNXhRcmJIbGw3Mjdlc2JlUFRSTFZHMXVxWGkzQVpOSkw4dGlxUEx0UEtkUVNVYzBNR0Y3YUZyWEtvVjd0S1Erd0dGa1UwSzRCYnMxVXNmYkZZZCszU0FaSjFWMU9mNU5OVGIxdVpLTVhjanVjdi9PSDlmczJCMng4VUR2ajJ4dFE4L2VhRTV0QzVQOW5QcmM5dHhtNERlRHNYZXJXUCs5eWo1bmRLbEVPZVhMVU5EMjdXRFAwZXgyd0w1Uy9YSU0vVjdvTjhCN2Q1MmdFcGYrbmNpaU4xem0zTk5FTkRuK2JpRkFBSUl0RVZnOFJ0N1cxYktTaEJBQUFFRTJpcmdKNHJidVdmd1RlcXcrbERHQXJwVjFNTG0vREJ4RFlIMjhkWENhL0tCL3BRZXZVOC8zYWJuSFFqUG5SdHBEbysxMTZaTGVzQmh3YkRhOU1HTGZFL2Z4K3g3ZXR1ZTNubzdLVjlhem91c2JLbUhiSUs3MmRuWmdYUHIxMi9TVVlYMW9YcnBkV1JnUnlWb2JOY1FncTA2TFg2alJzaHYxV3UzaDdHRzNvZHVxeWIwVzYrTmJsTDlCM1QvWm4wTktHdjM2OFQ5cXU3VEVQeVc0clhldGdKWUVGcGltYnQzNmNmbjYraWZ1UFNUNWxmYjNQN0NBd0Jwb2RMdjgwOVBidG45QlBURkt2bjRPVDBnWmdlMTdHdHUyYjVuejk2bzBYaXhoWEx0TlMvVXNhZGh2My9xaHlTVTI3bm4ra0h6VHVoRmZmbzZvYmtxbjMxOGZIeFV0d25vYzVMY1FBQUJCTm9qa0g0Z2FzL2FXQXNDQ0NDQVFDY0VmT1FLWFhSdmJMa3I2VDIzK3k0VXBEcFJob3V0MDhwaFVVOGYxcE1pNllOOXJLSGxHbG51MCtjV2ZidEd0Ni94SC9qWHJ6dWswUUJmRENKM1N4U0hYenBXcTMxSHIyL3R5VXZEaE5VeDdTVy8wUGE5alI1TXYxL29lZW45cVZsUzV1VGU1TDc5KzlPZWVWdlgzRmR6Z2p1YjVHN0Z5OURRMElhVHptMVVyK1RHS0FyWE5ZSnd2WkEyQ21hYmZMWlltTmVwL0J1MDRnMmhjNXVkMC9uMG9YcnNZdzNCajhMMUtsaS9DckpSMGNodWIxWmtzamtJckVlektsT2JBOEFtNWFzSTMveVRldGkvL3JMeitwNHVjenB6TjlKSDVyN2JydVhYNEcvTTNiM3dSckwvYVdERXdwQzM4RW44MUdNQnZ3ZW9EQmFlYmJIZkxUdnc1WmZObDErK2EwTzErbndYdXBkcWY3dGFRMTZlSFZTaVpISkgyKzIxVTJrVWpKN3Y5NmxJKzRSK0gvMnV0U0RZcCt2ak93SUlJSUJBZXdXU04vUDJycE8xSVlBQUFnaTBWOEErYU1lYUxPM1MyZjYrKzNYYkxrMW1INWJURCtEdDNWcDcxMmF4ejNyWC9TZC9mZWF2Nk1zV0g0RlZEWnY5L1FFOWVxdnV1NlhSMzMvZjhVT0gvTXp3TGNWSUR5YXZ0SGU5WlJVcnZ0bjYvcGplVHIvYnlscHZweXUzdXRxUzFEbjVudHl6MW44MU8vNGxwMDl2WEhmMmJQKzVLTnJRVjZuMHg5VnFSYjM1bStKR28xOURGclpwaDFpbm52enRVYUN6Ny9VY3hheXFoWDJGc0w3UXhUdlVCV3E5OTVwSVQ5RS9DamVxU0RvbUVPaTdVNjlvMks5aHk5YlRield6MFFDMmI5bEJBTE8zeU5adnIxUE5aclZ1Vzg4RG1pVHVLajNHa2cwQjJ4K3R6ZXo3d3Q4VG5kYXg2OUZIOTJwV3g2dlY0aS9UVTU2bkp6M0Y4cmZhMFJyWHZpY0h5UHd2NXR4NkZ0Y3MvWnRERC9waUdYNUdBQUVFMmloZ2Y4aFpFRUFBQVFTeUxXQi9xMzM0VTgremdxeUdvc2FhS003M2JHVzc0QmNvbmM2OTFnR0dKQXpNbjd1ZUJJVlI5YzUrS1hMaExlcGh2bU5pZlB5aFJldFlTZS82b3BmMjVNZjBmZlpDMzROZy8vNmtZTWw1OVdtNHQvdGFieWZQNmN5L2RubThQanNBb05ITFFUU3phYlBhSit5clZ2dG1vNmcvakdiaW9LSGUvWWFDdVYxZXI5RzRYRmNVT0RWUnE5M2VtZUt3MW1VSTJQNWtYeGJLYlQrWjZ5SFg3V0RuOFBCdWpiWjVnWjV3alg3Y3I2ZnMxWUVWTzhDaS8rMGYrMlh6UGV2MmV2dXlkVDNaUWtCL01pRWVSd0FCQk5vZ3NKdy95RzNZREt0QUFBRUVFRmlqZ1BWa3p1NGNIcnhSdzVkL0k0UG5vYSttZWhZU2x1NWR0d2ZpMklhVmYxMDl2MTlRTUx4Wkp6L2ZjM0owOVBpaURmV2lkMzFSRVRyeTQxTHZ6K2w5NmZmV0RTOTFYK3ZqWm0zTGhiNG5qL0p2bGdXc2pkTXczWHBLU0JCY2NjWDZIWTNHTXhXOHI5T1Q5cXVabjZmZkdidnNvRzYyOXBMclozOHFpZy9rdHI2VkxBVDBsV2p4WEFRUVFHQ1ZBdWtIbTFXK25KY2hnQUFDQ0hSVFFKKzM3MDQ2dit5VGR5WVcrOUJ1aXdXSGxTNVdoK2FaMDgzcXFHZGR3VnpyVlAxQ25Yc2RoajloWHdvWmJ3bGpWOTh4TlBobDNYOXJIRVIzSEI4Yis2WmUzeHBVckF6MlpTSFV5cFdHVWQzTTNiSlUyWmU2cjEwVmE5MmZXbStuNjIrOXoyNWJXUmIwMnFaUDVIdmJCTXpaOXVkVzd6bnpyVDl3MlEvMnhSWDlia1RYdTltWkYrdDVUMU12ZVRPUTZ5Y2JwWkpja2pINXZXamZsUjhhS2xBbjkwVVZuZ1VCQkJBb3I0RDkwV2RCQUFFRUVNaStnSDNJam5mdTN2MDBuVUY4bno0ZDI4Umk5aUc1bDMvSGJXWm5YVmZOZjFhZlVWbnNvRzg3eTVOZWhzeTJvOG1xZE9aMDg3aUVZdng1YmVscjZodTh2ZUxDV3l1enMvYzgrdWlqeDdUOTFpVTlDTDN3bk56V1ozQWJnV3dKMk8rUG5jWmhTK3ZCcDJEWHJsMmJnL1hybjl0d2JyOSs2YTdSNzRPZFM2NkpCdlZ2KzNySmt5MHY4YTkreTJlMEpadkZmYVl4Mi9pUkU0OCtlbGkzcmF4ekJ3MTBtd1VCQkJCQVlJMEM5a2JBZ2dBQ0NDQ1FmUUg3ZSsyQ2ZVSGZqcU5EOStveitUUFVrMjRmak5NUDg5MnVnVDg0b0VJOW9BMC9SZWNrWCtxdmYyNlRUZGxFY08wTjZtbmRrblBYTFpIby9Ic2YxdE53RXJpam1scjhMajN4Wm5XZGYrRjRyWGF4M25VcmU5cnpuNjZiN3dqMFFzQityeGYza3MrVlk5ZlEwQS9Ib1h1Ujl1M3J0YXUvUUR2dWxYNi9Ud081aFdNYlVwTWN1VXJYTS9mNk50M3cyL0NUQTlydlcreitaL0Q0NDYrYW1KaVkxdnFUdjB0dDJoQ3JRUUFCQkJEb3pBY29YQkZBQUFFRU9pUGdlNnMwVWR5ZnFDLzUxVDA5RDExQlBLeFVOSnQzOEZ2bkdvM2ZXeGRGNzFkdjlpL2JoL2lXb0o3MllIZENJeG5Dbm9RVFA0VFhPdGt0THVpdUdYMGRWSXIvZ25MTExaWHo1Kzg2ZXZUb1k0c0trUjVFc1BVUTFoZmg4R05IQlN6VXBnZldGdlNTYjkyeloxdDFkbmFmRGovdDErL1dkWHJlcy9RN1paZlY4em5jLytNUHpHa1ZxeitYM0ZhM25NVWZFRXVEdVg2blJsU205MDdXYXYrOStXTEMrWElVZVE0Q0NDQ3dRZ0g3NDhxQ0FBSUlJSkFQQVF1OHN3cm8vMW9CL2ZkNkdkQnR1S3NtaGRibHZZUDNUSTZOdmN2NHRnMFBQNk1TeE8vVWZmL2NPdlQwZ2Q2R3FHdTJkaDlHT3YxK2svYXVXM0N4eTRQcHU3NlNuc2JIZE90dTNYOWJFTWEzVHd4cy8zcHc4T0Q1bGliM0FWOC9XODg2dmVzdE1OeHNpNER0KzdhUDJmZkZCNFNpN1h2Mi9GamtHbGZyc1d1MXU3NVErKzVReTc1cmU2Ukd5dWdSZndUS3IwZFA3ZWlTL0M2RlVWVi9aN1RsK0Z2YTJtOVBqdFUvMWJKVnE0djlyckFnZ0FBQ0NMUlp3UDdBc2lDQUFBSUk1RVBBOTZEdkdoNitXcGRRK2tMejg3RjlTTzcrMzNLRkJuMTRyeWlFM3pKWnE3OWNaVWpEYmFBRENKcll6YjFUaWVMLzhKL2lMYWduajZlOWhwM1dUcmFud3FXaFJyMkFmcHZxM2RmbDZVSUxITGVyeExmcSsxZlVJMWhmVkNBcnB4VjljWmhhOURSK1JPQ0NBcTBIZlJhY28zM1paWmRkR3ZmMVBjK0Y3bnJ0b0Zmcll2VFAxQ2tpNjJ4TnRzdGFJdlpmbHRMdHYyUmY3TWJ2dUUzM2JyOGZDdWE2SWxzY0g5R21ieHlvVmo5KytQRGh4NXMxdFlPRVZoL0NlUk9FYndnZ2dFQzdCYnJ4QjcvZFpXWjlDQ0NBUUZrRjdFTi9QTEI3OTg3K0tIcEFIOTEzK3cvVTg4Tmx1K3ZpQWcxenR5SHQ3cThWY3YrcDMvamV2ZjFwNy9TT1BidXZEK0x3QnZVSVhtZVBOYS9kYmplN0ZkUnRXN1kwQTQ5dVdmaFkyTHMrcFF4MHQ5TEdiWHJzdGczT2ZhTldxNTMxcjByK3NmZEpLMjk2QU1KQ093c0Npd1hzZDlQMkZmdGFlR0JIdnhPN2poL2ZHMGZSMVlGQ3VmWWt1ekxCcFphLzlmdXIveTJVMjRSdyt0NjlYdkxXOGx0NUxYVDMrUU5aTGo3cXd1RERybi9ESDB3OS9QQXAvMFROZlJHTUJEWVJKQXNDQ0NDQVFJY0Y3STJFQlFFRUVFQWdId0xwMzJ5M1kzandKZ1hMNi9YaDNqNVlkenZ3em1zMXowVmZJcVRidWJVK3pPNFlIdjRuU2lIdlVCNTV2cjFRUFhNMmtWemF3emkvcnU3Y3NxQnRnZDE2MTgxemJySTVsY3NlZTBpdWQyaUV3czE2enBlbnhzZkhGaFhMck8xMUMwUFlvaWZ4WXlrRTBuM1k5cHNGdmVRN2g0ZDNheDk2Z1VhU1hLZmNmYlVlZjdyQ3IvODkxWDVtT00xaDVINGZ0UDNKMXRYdFpXR1B1WE1LNCtFZjlNM01mR2p1aWdqNzlpbVlqMWpkZktHN1hVQzJod0FDQ0pSUklQMndWOGE2VTJjRUVFQWdqd0xwZWVnZjBCRHp0L2J5UFBRVVQra2tPUis5dFNkOS9xQ0JmYkMzQUJQc0hCcjZCZlhNS2FpSGUzMnZZVytEK256eGs0TWMxbnU1cUhjOU9LR2lqeWlPMytZYTdyYjFRWEQvK1BqNG1mU0YrdTREdnI1Yi9leUxFQ09FQWkrdHZlUVdXdjErYmZYZHZYdjN4c2ZEOEZuYXQxK2l2ZUtsT3JqelBOM2VybjFLejBwN3lYV0ZBMXQ2ZDNES2IxNy9MQXptY2F6aDYrRW40amorN2VQajQ2UE5KekdVUGRYaU93SUlJTkJsQVFKNmw4SFpIQUlJSUxCR0FSL1F0dzhPL2x3VWhaL3RlUTk2c3pKS0trdUZkQXMwRmxwOW1mMVQ3VEp4aiszK2w1cUErczBLS2orb25uZmQ3VHB4RFhXL3VSWCtrNFRzcFh2WGJWVVBLWHg5U1plOHVyVlJuYjN6eEdGL0hlaldUZEM3M3FwUmpOdTJEOXVYN1JzTGVza3Z1Znp5SzZwOWZTL1E3bks5SG42UkhuOWFNa1M4R2NqdCtmUDdrcTJqOTUrNWJDaTl2MFJocEZQZjljc1hCbjhTek1idm4zemtFWnVYd1JiN1hiWGZXUTQybVFZTEFnZ2cwQU9CM3I5WjlLRFNiQklCQkJESXNZQVB2Zjc2eUlHN1gvWFlxQzhMRHozL2U2NUNORU42L0tlYU9PNDFUV05mWGwrKy9ScUtmOERPdFEyQ1hidDJiWTdYclh1RFN2MXYxTk80dXpuczE0SzZoVng3VFJZV0pTMExaYXJaRTNyWG5hNEJIZDZyaWI1dXFRVFI3WTNUcCsrZm1wcEt6dGROU203dFlYV3h0ckV2QW84UU1yNVltN1YrSlQzZXpVSnYzNzU5UzJYVHBxc2F6bDJySFhTL2RvNTkybmNITXRwTDNrcWQ3TWM2S3FieVJyWXphby84eTdBU3YzZml5UGk5elNjU3pGdkZ1STBBQWdqMFVLRG5IK2g2V0hjMmpRQUNDT1JSd1A1dXUwQVRUKzA0ZVhKRUkyaWZrWlZlZEY4dVhRWk92WWg5NnB6N3BDYU9lMjBUT0EzcDltTVl0QVIxRFEzZWVUNE0zK2pDMEM0ZGQ0a1A2anF2WGFFbjdZMXVycUxuMzVLUWJUMmlsc2g4TDZTYVFqZDlSMlFZSE5KRFgxVEwzRktKb2pzZkd4djc3cUlTbTBIcVFGaGZoTlBqSDlOOTdRazl4M1lnckJIR0x3NWRlSjNDN1F2VitGZnF1MzREbTczazg1ZEFzOTlMYTEvN25xVkZ2ZmdxbEs2NFlJVlNxVytLZytpM2pvK04zZEVzcEw5ZnR4ZU1EbWcreGpjRUVFQUFnUjRJWk8yTnBBY0ViQklCQkJESW5ZQjlxRzdvY21aL29nL2VyODdDZWVnTEJPY25qcnRRU0xlbmg4RytmVlZOUU9Wbmh0YVEvU0hsbmpmci9sOVR3TitRNGFDZVZqWHBsZlRwSjZ6NnpPNkRtMlczMk01VGZ5QjB3YzM2Zmx0ajNicDdqeDg2ZERKOVlmTzc5VmhhNkcvOVd2UVVmdXlBZ0gzdVNjTzByWDVCTC9uV1BYdTJWWUxaNXltUTcxZkxYS2ZIZFY1NXRORmU0WS9OMlBFWk80QmtkK2dnVFhOZHRwNnNMWDU0dlg2WGJEL1Q0cjZvT3IzM1dLMzJ1ZVRudVlNSkJQTW1DTjhRUUFDQnJBallteFFMQWdnZ2dFQytCT3hEOTZ3Qytoc1YwRCtjdVlDdU5LQVEwd2dybFdvUXUwOU0xR3F2YS9LbVBjaXQycEdDZWlVTjZuN29mdWh1MEJwK1NlR2lvcUR1MTZVQTNBd2FyUy9OekcwTDJjbk04SXQ3MTVOQWQwVFovY3M2ZC8wV3VYeGhvbDcvOXFLU200dDkyWG9JVEl0dzJ2QmpHc2p0KytKZThuRDduajFQajF6amFqWFZTL1g0VDZnSmh4ZjFraXVRcTJuOG5YUEJ0ZzNGNnNncWt0bmhGY3l0dUpyNDdmNUtGTHp2MkdqOUw1cGJTL2UxQlFjbU9sSVNWb29BQWdnZ3NDb0JBdnFxMkhnUkFnZ2cwRk1CMzRPK2E4L3VGOGR4ZUVlekpCYnVzdlEzZlNVaDNhcXdJRGhjTWpoNFZUVUtibEJvZXFVRkRmVmVLbmdvWEdXNzE3TFpGQ3FwbFZXbFZxaXJXTEN6T3ZnbGpzK3FvUjVRVXgzUXNQN2JadUo0WkxwZW4weGYyUHh1QnlPc1BWdS9GajJGSHk4aVlOajJaZnVVTFF2QzZHVS9kTm1samNlclA2NUhyMU1EdlVTUFAxUHQwMjlQYlBhU0p3ZUYxSEJhaTYwalM3OVhWc3lsRmp2dzBGQ1IrMnhmMDJrWEQydi9ldC9VMk5pbmRMODlab3Mvc0pmYzVGOEVFRUFBZ2F3SzVPRk5KNnQybEFzQkJCRG9sWUNGaG5qejVaZnZXbGV0M3EvNHNGdkp3bnBlTGJobmFWbHBTTGV5V3gzc3ZjbUhxa3YzN0g1UkhFZnYxRDAvWlE4cVFLVTl6Rm1ycXhWdnFjVkNkck4zWGJlZU9ObGNUZmZlWmNQaDQwcmx6cW5SVVp0Tk93MVV1amwzNE1MV2s5YmQ3bWRaS0pBR2N2dHVUdWFWTEpxdllkZUpFMDl2VklMOWNyNU9qZkI4UGVseXk5OTJES1VaeXJXLzZXZUw1SW01ZmMvRFl2VzAzNVUralRoUk1JL3JxdEtONjUzN1R5MlhCTFJndnRBa0R6V2pqQWdnZ0VCSkJmTHlCbFRTNXFIYUNDQ0F3SklDNmQ5dXQyTjQ4Q1psaXV2VlkyYVhUN0lQNGxsYlZoUFNyUTVwQVBlaGRQdnc3cGRIemdkMTYvRzBJR0lUeVpsRCtqeTdPdytMUEpidVhWZFFQSzhLZkYxUE9GRFJjUGpINC9pZTZmSHhpVVdWU3R2WVFyeUZzL2tndXVpSkJmL1IydDYrN0dDVkdTdzRlTEY5OSs3aElJcCtYTmNTdTA1emwxK2pGUDZqZHNxRW51Y245Yk4vbTYreDE5dFgranVsbTdsWUZnUnpqV1UvRm9mQlIrSkszMGRPSEQ1OHd0ZGd2LzRlSENDWTU2STFLU1FDQ0NEUUlwQzNONlNXb25NVEFRUVFLTFdBQlRVN0QvMERPZy85clJrOEQ3MjFjZVpDK2tWbWQyOTlmdXR0cTZlRktmc0t0ZzhOL2F6NkNkV2pIajdIZm00RzlUUmsyVjE1V2l4azJkQjlmZGYvaTN2WGcyQmM5MzlWNTY1cjV1M2dDOGRydFcvNDU4L1gwTjdETFhRbTYwbSt6ejlhdkZ0cElMZnZDNGF0QjFkY3NYNzd6TXhWT21helgxSDdXZ1h5NStuMjlndjBrcWVCUEkrZmdmenZrdDlYa2g3ejB4cW0vNGRScGZLaGlTTkhIdkZObmdUenVkK1o0dTBHMUFnQkJCQW90a0FlMzV5SzNTTFVEZ0VFRUZpZWdBL29tdjM4NTZJby9HeHo2SGVXZTVQWEV0Sk54TmMzcGRteFovQ1hGVXZmcGhtMmY2dzVSRGxyMTFCUGk3cVM3Mm5RdG5CbE04UGI0bDl2QnlKMFM3M3I0UjFoR044U1ZkZDk1Ykh2ZmUvb29wV2JrUzMyZWx1WGZlVjVzY3FuWWRycXNxQ1gvSkxMTDcraTJ0ZjNBZzFJZUpscStrSTkvalFiNWowM2JEMXhzTmVrQjNEeS9KbG5ZVEIzVHZ1NyswUTFySHp3Nk9qb0lkVXhDT2d4OXd6OGd3QUNDT1JkSU05dlZubTNwL3dJSUlEQVdnUXNkTVNhOWZ5cDZvTFZwR1BCUm4xWmlNbnkzL1c1a0w2TTJkMVZsU2NzVmpjN0NPRjdUNjlRcituMDdPeS9WTFhmckdDMlJ5SFd3bGtXcjZIK2hJb3M0NDRrWUNmRDRaL1l1KzdjWTFySDNTNE1ibzBpZC92RXpxZDhQWjBKdjdudTFNcldrd2IyWld5MjUwOUp5MjBGV2RCTHZuMzc5aTJWVFp1dWFqaDNyWGIrNjFUM3EvVGtMUzI5NUVtSXRWK0IrY25kYkgzNVhwd2NORG1pRGtacHhMNDFaZmhwRjBYdjFYd0ZCNXNWV3pES0pOK1ZwZlFJSUlBQUF2bC80NklORVVBQWdYSUsyTjl2QzEvVm5VT0RJd29wejhwQkw3cTFsSlY1Vm9HNkw0Z2JINXVvamYrYWZyYTYySmVsaitVdFNXK2hEM0RicnJ4eWEzVHUzQnZVMmZ4dmRkN3hMaC9VZzZBSVBlcXRGbW5RTmlNZHBGQmFzOTUxL2EvNjZyN1FKcGM3b0s5YnRCL2NNMVd2MTNTN2RiRURHNm14cmN1K3NyQlltZXhnazMyM01pM29KZDg1T1BnamNlUmVyR3Q0WDZ0bnZGaFB1OExYTzUzY3paNXZReWlVWHZWYSt5cktvb01OK24yUWl1cGJhVGJXMytpKzkwN1dhbmMzSzBrd0wwcHJVdzhFRUVDZ1JjRGVFRmtRUUFBQkJQSXBZS0dyc1dObzhMOG84TDRtNCtlaHR3clA5YVRyblBUZlZ1QjRteDYwY0xYUzRCanFHdXJWdE9mNHNzc3V1M1Mydi85TlNxeS9MbytCbHFCdVFhWkk3M2VKMDRWNzF5YzFjZUE5ZXRKdENuZTNUcXhiOS9YZzRZZlB0VFNBV2RpK1krdXh3Ry9mdTdtazI3ZHRMdWdsM3pJMHRMMHZpcDhieE5GTDlkaTFLdG96MUphYjdJbk5VeG1LMlV0dUZaeGYvRUVLQytaMmwrcDlpMXJvZlpQMStpM05wL2o3ZFh2QndZem1ZM3hEQUFFRUVNaTVRSkUrc09TOEtTZytBZ2dnc0dJQkM1NnpPNGFILzVVNlUzOC9Sd0hkS21vOWhJMndFbFVWMGorZ2tQNTIzWmYyZ0M2L0o5M1daT0Y3dndMbmdTVHNYZktVcC94QXBScTlWWk9yL1F2MU02OHYyTkQzcE1ZTC8wMkRkck4zWGZPVys5NTF1eDUyYkk4OXBNQitoM3FpYjNLejdpdkh4OGRIRjc3Y2gzWDdQSkN1cDkyQjNkclYxbTlmVnNiVzlxMXNHeHJhV3duZEM5VVBmcjJlOGdJVmZiZTZqUzJaTmtPNUJkRkM5cEtMWXNIaVJ3UG9nSVQ5WGx1TnZ4Skc4WHNtUnNmL3R2bXMxSkZndm9DTkh4QkFBSUZpQ2RpYkpRc0NDQ0NBUUQ0RnJDZXRzVzMzN2hkcG9yZzdtMVd3Y0pXWHYrMFcwbU9GOUlwQyt2c1YwbTlRMlMyRVdCMVdFeEx0dGZibGUyVzM3OW56OU5BMTNxWTEvWkpDVHhKV2RWQkFPajRBNlhsRlhCSzdDL2F1QjhlRFVEUERCOEh0T3AzNTFvMWhlSCt0Vmp1N0NNSjhiRDBXcEZmVERyYTZ0QzNzOVFzQzVlV1hYNzVydGxMNUNaMURmcjJDdUlhdEI4L1NBWVUrZTFHemw5eXVHNjl0SzZYYmY4bituSmQ5MnFxeDBpV3ByNEs1SFZqUjc4STNOQkhnZXlmR3hqL1RYRkZxYVk2cmJZK1Zsb25uSTRBQUFnajBTS0RJYjNnOUltV3pDQ0NBUU5jRTdJTjdQTEI3OTg3K0tMeGZlV1pRd2NZK3hLZERZTHRXa0RWczZFSWgzVmJaMnRPNmtrMmtnY1lIOVoxNzl1eHpjZU1HK2Z5c3Zla3BCTnFsemV6OFhuTXErdnRnR3JUTjB1cmIycnV1SDRQdktBTi9RVGEzVktMb3JxTkhqbnpQN214WlVxTjBQUmNLaUdadWx2WmwyNXB2dTZjK2RkM09tVE43WXhlK0pJcUQ2N1dDNXl1SVhtcjVXNDFoN1dHeFUyMmw3OFU3bDF3VUYxek15SDVmKyt3QWtpWk8vSzRPbnR3NE1WYi9XUE4rZTZFZExQSDdzZjNBZ2dBQ0NDQlFmSUdpZnpBcGZndFNRd1FRS0xOQStqZmM3UmdlL0x5QzFzdlUrMll6UHVldGgvaENJZDNDb0gydGRrbkRaUkxVaDRhdWNhRjdsNXl1dHhVcUdLWTl1L2E4TWl5SjUzenZ1bVlHdDE3cVpsQU9nbFBTdms5R3QxVEN5bTNCMmJQM0h6dDI3UHVMWU5KOXkreHMvN05nYnV0TkxYVlQxNnNmSEJ6U3Q1L1VFNjdWSVlGcmhQMmpDcUhldVRrM1FOSnJiTnVmWDQrOXRBeUxlZGsrNllPNWZtY2ZFY0tId25Qbi9xakYyNXpOZEMzN3YxN09nZ0FDQ0NDUU53RjdZMlJCQUFFRUVNaXZnSDJRbjkweHRQdDlZVlI1ZTg3T1EyOVZ2MUJJdCtmTTk4YTJ2bUw1dHkwWVd0RHg2OUdsNmY2aDB1RTdsUTN0MnRrMjlOMHV6V2J2aDJVSjZsYnRkR2tOeWhiWXJSZmJobG5idDBQcTNQNml3clgxcnQvNTJOallkOU1YTGY2K2UvZnVqWS9yU2dKNnRRWHkvWHFOOVpKdm13di92cGRjQjQ5c0tWY3ZlU3ZWb21BZUg5ZlJrZDg3NTl4SHB1djFTZjlFcm1YZTZzVnRCQkJBb0pRQ0JQUlNOanVWUmdDQkFnbjRnTDU5YU9obm96RDRiODFlNGJ3R3pRdUZkQXMyN2VoSk5Dc0w2VWxRSDk3OUt1ZkNHM1JwdG1mN1lkWkpVRStIeHhkb0YxbFdWUkxqbHQ1MUJXbGJKSzltY1c1YU54L1FrMjRQNCtDVytPelprWGpkdW0zVlN1VkY2bkYvbVZySERuYjhpQitxblR6Zk5wcGVBczArYTZSRDRPMytNaTUyMmI5bWozbXNjLzdELzZTZlA2aDVGK29lWTkrK1BsMk53SHJNMTNvd3lxK09meEJBQUFFRThpdEFRTTl2MjFGeUJCQkF3QVFzK01TWERnLy9VTVBGRCtpMlhaTEt3bFplLzc1ZktLU3JTbTBMTC82Z2hxMVFTMFU5NnIraWJ1UzNLVnorc1BVY3EvdllldFRMR3RRVGxlVGZwWHZYazk3d0l6TGFxZ0IvaVg5cUdzcmRYQys1SFNUSzZ6N1lhckNXMjNaa1E1TVNoaFh0VzZHTjFGQ1ArUjhMNWYzSGFyV0hteXRlY05Cb0xSdmp0UWdnZ0FBQ3hSRElheTlMTWZTcEJRSUlJTkFtZ2RPblRuMS8wNVl0UDYvQWRKbFdhYjF3RmpEenVDakQ2TC9ZMmV6dUw5a3dzR1g5MlZPbmJsWkYyaG4yek1mV1orR29jZWJVcWZ1MmJOajRTUmVHeDNUdk04Tks1UklGSzN2Y2VqM0wzUE9ybHZBSEtzekNEcHlvUnp4TzdDeVlPN2RlN1pUZWx4d1VzbXQzejc5R0x5dnBZcFBlZVQwNzc5N0dJYmcvcitocUFzZnE5WTlwZjV1U2l1MTd0bkNlZWVMQXZ3Z2dnQUFDVFFFQ09yc0NBZ2dna0g4Qisxcyt1MkhyRmwxRE9ucDJFQ3RFSlNFcHJ6VzdVRWh2OTBHSEpHenVDL3BPZitmMDQyZW1wKzlhdDMzSEo2TkcvTGdTNlRQVTZ6bEFVUGU3a0FWMGE1T29KWHlibmQyYjNsZm1BeG1ld3YrVFhNYlBoVkZZdFZ5dVV3UCtYZ2MyZm1XeVZ2Ly9UazlQSDlWekNPYnpXdHhDQUFFRUVGaENnSUMrQkFwM0lZQUFBamtUc0wvbDhjYXRsd3lxcSs0ZktsVG1QYUFiZnpPa3h3M3JTZDg0c0NWVXorTnR1ci85NzF1UE5FY2M3QXVxajMvcnhCbHQ1L2FOMjdiL2FaQk04djRzQmZVTlBxamI4TzE4SC9ndzEzWXRTV2h2MTlyeXZ4Nk5KQWdzbU50RWU1RnUzKzZpK05lbXhzYmZmWFo2dXFicTJYNXJCekhvTWM5L1cxTURCQkJBb0tNQzdmK2cwOUhpc25JRUVFQUFnU1VFL0JEa0RaczM5K214MXpaRFpKN1BRMCtyYUlPRTArSHUxMjdZUEhCZVllY0xlckFUNzEwdVNJSjZHR2dtN1RNUG5EeDE1dFQwNTdkY3N1M1BkVzcvZWhYajJRcnFmUXJxNlhuRkJOUzBsY3I5M1NiQ2k3VnZWQzJZNjVkdVJPSDgxelg1Mjl2UG5wdytKQm9MNWJhL0Vzekx2WjlRZXdRUVFHRFpBcDM0a0xQc2pmTkVCQkJBQUlHMkNQaUFYaDBZT0Z1SndsOVVxTjJpdGRvUVpBc0hlVitzSjkxbUVuZnFTYisrd3lFOXNUbzhaMWM1ZmZMazVObFQwMyszZnV2V3Y0cWMyNlluUEZOaExIRk5oak1Yd1RqdiswZ3Z5bThUNkRWMEJZQ3E3UTg2YXZNdDdUVnYwVkQyZjZVNUV4NVVnV3l2dGVIczludVluQTZnR3l3SUlJQUFBZ2c4bVFBQi9jbUVlQndCQkJESWgwQjRmbnI2ek1hdFcvNkJFdTBQcVJkUHc5d0xFZEJOMzhKT2QwTzZUWW8yZjVDajh2aXBVNDlxNlB0ZjZqU0N6Mm5Dcjh0MUVPUnB6YUhNeWFXeGtzTUlTVGw5WWZtbm9BSVd0dTE2N2xWTkpxaURNKzZ3ZHM5M1RhNWIvMytkUFhKa3BGbG5nbmtUZ204SUlJQUFBaXNYSUtDdjNJeFhJSUFBQWxrVThLRmc0NWFCcDZ0SDc4Vit0dTFpblMvdCs5SG5ldEszYXJqN3lZNE5kMjl0M3pTbzIvdGxwTjdSbW9hK2YyYmp3TUFkK25tUHpqbStzaG5VN1lDSVBaY2U5VmE5NHR5MnRrMkNlUlJWTlB2Yll6clo0ZDF1L1liWFRoMCtmR2N3TmRVSWRHcEVjSGp1d0U1eGFrNU5FRUFBQVFTNktrQkE3eW8zRzBNQUFRUTZKbURCTU42d1plc2xTckt2VkV4d0JlcEJUOUhtZTlMRExnMTNUN2VjOUtoYk1RcGZmQUFBTjg5SlJFRlVTTFAzelZEbndoL1MwUGMvM3JoMTgzMGFmSCtsZ3Zwd0V0VDlSSElFOVhtM3ZOOUtnN2xkeTl6YS9xUjJoZDlkRjd2WFBGYXZmLzdzMU5TNVlOKyt2dUNSUjV6Q09VUFo4OTdhbEI4QkJCRElnQUFCUFFPTlFCRVFRQUNCTmdtNGdhMWJ6OGZPYWFLNFlKM1dhZUdpYU1PdUYvYWtkM2JpdUtXYXhVeHRzUkVMZ1hyVEgxU3Yrc2MzYnQzNmJUM3dOSVc0eTNXM1p2SDJRZDJlVWpSL3ExTTVscVFOZlRCWGovazU5WmgvVkZjd2ZNMVVmZnl2cG5VNlNiUEhQRkE0dDlNY1dCQkFBQUVFRUdpTEFCOGMyc0xJU2hCQUFJSE1DRlIyRGczZW8zT2tuNk41MVN3NEZQVkFyQVZsWGRaS0UzUTE0bmRNMXV2dmE5YlZlakhURUsyYkhWOHNxTnZRWjF1cU80Y0hYNmRNL2hiNVgrbGlYOFFaM1c5dHdOQjNFOHIrWW1OUEdqcXNZcGRMcyt1WTIwaVVQdzRhN2dPVDQrTTIrWnN0L25RU2ZhZkgzSFB3RHdJSUlJQkFPd1dLK3NHdG5VYXNDd0VFRU1pTGdQMU5iMnpZdXVVRk92Mzhxa0RkZlFxS1JRMkd2ZTVKVC9jSkMybiswbXdhNGp5ckh2V3ZEbXpZOEFsWHFSelgvVGJqKzFiMXBsdFpMYWhiVzNCZ1hBaVpYSndPdE5pRi9YUXRjLzJyNi91NXo0WVY5MHVUbytNZjFTa05FeXF6QlhOclB5Nlpsc2tHcEZBSUlJQkFNUVFJNk1Wb1IycUJBQUlJbUlEOVRZODEwL2hUbEM1K1dqMkJSVHdQdmJXbGs3RGJ6VXV3dFc2OTlYWnkvckdWcDNyNjlPbHptdkg5UzdyczNhZXFHaHF0c0dmWFVOOUVVRzhGeTlSdFhjdmNSbU9FZGkzelVEZHZpb0xvVnlmR2FyOXo1dVQwSXlxcC9WN1p3UldDZWFhYWpjSWdnQUFDeFJRZ29CZXpYYWtWQWdpVVU4QUNvdHN3TUtDZVB2YzY5ZlZacUxCeDFrbVFMYWFKci9QYzdPNERXODdwblBBN1ZOVjBHSEszYTIwOTZwRW1EcXVlZitpaDc1K1pucjV0dytiTm45WUJFeXZuVlFycTYzeFFUODV2THVyb2htNmJyM1o3YVRDMzRleHFDM2RuNk1MWFQ5VHEvMTRIV0VhMVVvTDVhbVY1SFFJSUlJREFxZ1dLL0tGdDFTaThFQUVFRU1pcGdBVytlR0J3Y0VkL0dOeW5udHRoaGNFaW40ZmUya3p6NTZTN3hxOVBqbzMvZ1I2MGtON0xYazlyRC92eTU2anZHaHI2WVJYeWJlcWgvUlVGOVlxTGRaSzZ0VStvSWRYRlBvaWk2bVZxVVREWHVlVlJaRDNtdWhuZnE1TVFQakExV3YrTFppbnRzNUcxU1RxM1FLWUtUMkVRUUFBQkJJb3RRRUF2ZHZ0U093UVFLSmRBK2pmZDdSZ2ErbC9LSHEvUVJHVjJYcTBGMVRJcy9uenc1akRsTjB5TzFmOUlsYmE2OXpwb3BRRThDZXFEZzFlNUtMaEJFZkdWU1VCMHNjWTUySFhVeTlKT3Zkb1g1U3pyTkpqSDhjTlJHTDN2Mk5qWXAxU2daQzZCSkpqMzhxQk9yMnpZTGdJSUlJQkFSZ1RzeUQ0TEFnZ2dnRUF4Qkt3WDJjS2crbVBkVjlVenF4dDJWMmtXZTA5clRyd2QvcUZtVkgrOWZyWlFiTUUzUFhpaG0xMWZMUEJaT2F4dEtzZnE5ZnNueHVxdnFrVHV4U3J0Mzl2d2Fqdi9XWS9aOCt5THBiMENGcjc5SkgxaHBWS1YrWmdHTDd4cG9OcjNUSVh6VCtxeE9OanY5eEg3WmJGMkt0VXZqZXJMZ2dBQ0NDQ1FJWUhrZzF5R0NrUlJFRUFBQVFUV0pHQWhOZDY0WmV0V0pkSlg2YmFGalRJZGpMVWdiaUUzVXZEOVJ4dTNEaHpWek9wMzYyY0x3QmJVZXJsWVc5aVh2ZmRHcDA5T0gxSFpQcjErNjlZdmEyYXlIMUI1ZjlEQ3VwNWhsL2txVzd0MW9sM21UaUd3VXdwMHpiUUozZkcrdUgvZHJ4dy9jdVQyRXlkT3pBYjdncjdnRVZrZjd2bSswWW42czA0RUVFQUFnUndLOUxKSElZZGNGQmtCQkJESXZJQVA2SmZ0MlhQbGJOeDRRS1hkckM4TGUyWDdlMjloM0VLNlZmLy9Wby8xUjNVajdhVTJqeXdzNlVFRGYrQkFweVg4TTQxOGVLZm1rM3V1TDJBYzYvUUVYd0VPcHErc3RkSmdYbFV3RDNTdS83UXVaL0RSU3JYNnU4Y09IMzYwdWFxczdRc3JxeUhQUmdBQkJCQW9yRURaUHJBVnRpR3BHQUlJSUxCSW9MSnphTkNHdVYrbE1kL1dvMXpHa09mcnZVUkk5K2VDTC9McTFZLzJQbXh0WTJYMXVYekhuc0ZmVW4vdURRcVhQMnB6bWVsNjloYlU3Y0JMbVVaQ3FMcXJXSkxaOFpOZzdweUd0YnVQVjhQS2pVZEhSdy81dFZtUCtZaTM3dlZvaWxWVWpwY2dnQUFDQ0pSQm9Jd2YyTXJRcnRRUkFRVEtMZUFEMzRhdFczNVN1ZTRxQlR4TlFPWURYdGxVL0dnQ1ZWb1ovUW5EM2JQU2kyNXRrb1pGMzZOKzl1VDBBMmVIOTN4c3crT1BQNlllOWFlSFVXVzd6cHUySUcvblVkdDNEcTRMb1dWUmo3ay9MU0RRT2VZVm00VkFQMy9HUmRFdlRvM1ZQblg2NU1uamVxN1pCaHJPUG5jZ3hQL01Qd2dnZ0FBQ0NHUk1nSUNlc1FhaE9BZ2dnRUFiQk94dmU3eHg2NWJkQ3FZL3JiQmlNNFNYdGZmVndxeUZzaXllazc2NHFTMm9XM21yd2JGak03cWUrOTBiTHIzc1B3Y3pzNmQwMzdQVm96N1FFdFN0UFFucXpVbjFOTWxleFE3RHlPUnZkQ3pxTlpPMTJ1K2ZQWG55bUxkTW5Bam13bUJCQUFFRUVNaStBQUU5KzIxRUNSRkFBSUdWQ2xoUWNSc0d0cWpYMEwxV01jNysxbHVQY1ZrRFhWNTYwdE4yVG9MNnZuMTladzhlUEt1Z2Z1ZldqWnMrMVlqQ0dZVlFDK29iQ2VvNjZLSitjZ3ZtTmp4Q25lYTNhS0s5MTAzVzZ1OC9jK3JVdUNCdG43ZDJKNWluZXhYZkVVQUFBUVJ5SVZEV0QydTVhQndLaVFBQ0NLeFN3QWZTZ2NIQkhmMWhlTDlpK1pBQ25RV1ZzaCtVOVFaSlIrdUNpZU95ZEU3NjRpYVBOTk40UmVkTjIvRDJZTnZ1M1hzMEZPQnQ2aXYrRjdxZTkzcE5nS1pETDNhdGUzK1p0c1d2TGVMUGFURDNROVlWekw4U1J1NDlFNlBqZjl1c2JMcVBXMXV6SUlBQUFnZ2drRHVCOUkwc2R3V253QWdnZ0FBQ0Z4VUl6MDlQbjltMFpjdkxGZWFlV3ZKaDdpblV3cDcwTFZ2cTZtMzlhcUNlNnVDUlI5THp3TlBuWnVXNzAzblRWallyZStYeDZlbmpaNmVuUDdkaDg4QmY2c0RMZ081N1Z2Tzg2MWh0YkpkbnN3UHZSVHo0YmdiK1FJUkdFRVE2eS96cllSaS9hYkkyL3FZeko2ZS8zYXl6aFhaNnpJWEFnZ0FDQ0NDUVh3RUNlbjdianBJamdBQUNGeE93c0JKdjJEcndZem9uOXlWMnJTbjFzbHJJSy90aTRkVkNYQ1NQbjltOGRmT0RaeDc4OXRlYTE4UE9ha2kzTnJOVEZLeDg5cjVkVVVoLzdPeXA2Yi9lZE1ubXYzZHhzRk4xZWJwR0JsajdwaE9tRmFXdHJkNXBNSzhvbUIvU2dQWWJKc2ZxcjljMTVMK214Mnl4ZlQzMThYZndEd0lJSUlBQUFua1ZLTW9iZUY3OUtUY0NDQ0RRV1FFWGptZ0l0UHBVL1FSYW5kMVdmdFp1SVZkRHBXMzJ2T2pQZHUwWmZLVWZRbTZYNE1yK1lnY1hiRWkrRCtvVG80K002THpybjlYUmhwY29tZDlrSVYzL1ZYMXZlbklnSXZzMVdycUVkakRDejFxdkh2TSt0VlZkQjVuZXZENk9uemt4V3YrUGVtdzIyTitjbVQzeHNJRE9nZ0FDQ0NDQVFPNEZpamdNTHZlTlFnVVFRQUNCTmdqWUFkaDQ2NTQ5VjFianhnTzZ2VmxmRm1MNHV5K0U1bUpoVjdOLzJ4VHZ3YXVPamRiL3d2ZWtOOC8zVHArVThlL3BTRGlyUzdCdGFPaW5vc0M5UzBIOWhmYXpCazVZNzdPMWVmbzh1enZMaSsyamRnQ2lUOEhjeW45Y28vWS9mTTY1MzUrdTF5ZDl3Wk5ybWR0ekNPVWVoSDhRUUFBQkJJb2t3QWUxSXJVbWRVRUFBUVNlS0JEdEdCNjhSeUhudVpwUUt3bWtUM3hPbWU5cGhuUmRoeTUwZVEzcDFuNEx6ci9lUHJ6N1ZaRUwzNmFKNUo1amx3VVBrcUJ1QjIyeU9uSnVjVEEvbzhNSzZpbVBicHdZRzdOWjJRTS9WOERJQ01IY1kvQVBBZ2dnZ0VCUkJmSnlSTDJvL3RRTEFRUVE2S1NBL1kyMzY2SC9wRVkrUDBjaGpmUFFuNmh0Z2RWQ2VxU0UrUE9iTDlueXJUTVBUbjg5Qitla0w2NkpEUW0zZys3K2ZHeWRuLzRObmFQOThmVURXMGJWRC8xam1raHVsMzg4bWZIZFhwdWRBL1JKbVNycU1hL1lqUFM2WE5vbk5XVC8xUk8xK21jMGlkOTBjeEsvUUJQNStWRUNWbmdXQkJCQUFBRUVpaXBBUUM5cXkxSXZCQkJBSUJuV0hHOGEySEs1dW9mL2tRWUVPOFd5clBhZzlySzlXa0o2cUpBK2tOZVFib2JKUkhkMmZ2YmhvS0ZycU4rM2ZjdldqNTkzd2JFd2NNOVFVTDlFSWRqQ3VUKy9XOTk3RmRUVHlld0NIOHl0SUxIN3N6Z01YejFWcTMxY3dYeEtkOW5CaGpTWU01emRZL0FQQWdnZ2dFRFJCWHIxeGx4MFYrcUhBQUlJWkVIQURzSTJkZ3dOL2JoTzE3MUx0KzF2dmdVZC92WUxZWW1sT2R3OTErZWt0MVlyMUVpQWFub045VXV1dU9LU2FIYjJqUXJxYjFRbzN1R3ZvWjRFZFF2QzNkd256RmxueGlkWEZkQVEvTC9US1B6M1R0WHJYMjRXM284QzBHMTZ6SnNnZkVNQUFRUVFLSTlBTjkrUXk2TktUUkZBQUlGc0NGalBzRTBVdDAwVHhkMnZTTFJIdmFkSkNNMUcrYkpZaW1aSXovMDU2YTIyWWJCZms4UWQ4Sk92QlpmKzRLV1h6YzcwLzRhQyt1c1YxQWVhUWIxYkIyNmNKWE1ybklMNUFaMVk4SjdKMGZHYm00Vk5SL1VSekZ0Ymo5c0lJSUFBQXFVU0lLQ1hxcm1wTEFJSWxFd2cvUnZ2ZGc0TmZVNTlwRC9sWXFkWnZadERoMHVHc1lMcU5rTjZTMDk2TXR6YUppakw4eElwcUVkcFVMOU1NL3czWE9PdDZyMytWVldxWDErZER1bnArdTlUQi9wdlRkWnFmOVhFdEFOSjlwVjMzMloxK0lZQUFnZ2dnTURxQmV3TmtRVUJCQkJBb0pnQ0ZvaVNYc2tvdUVjOTZQclI3bUo1RWdGL2FvQlJ4Uzc4YzMrZGRBdVArL2JsNFRycEY2dGEzQXpuOXQ1ZlBUbzZlbWhpclA1Nm5ReitGZCtwN1RvNnBEd0o1MkVZVjRQd2w1dmgzSnh0T0x1ZE4wODRGd0lMQWdnZ2dBQUNCSFQyQVFRUVFLQUVBcG9YN0Y2TktiWXpmL203djd6MmJvWjBwNUFlL0xsZFh6d1lHWmtKOXU2MW51YThMMmtnOXBPdzZSSjgzUnRTN2pTZ3ZsTHgyeFdpSFRFaW1PZDliNkw4Q0NDQUFBSnRGZUNEV2xzNVdSa0NDQ0NRT1FFL3EzYzFpcjZtYzM2blZUcjd1MDgzK3ZLYWFhNG5YWmNxK3g4N0J3ZXZEUTRlUEYrQW52UzA5bWt3VDArRlNPL3Z4UGY1YllTNmtGcXlwTjg3c1QzV2lRQUNDQ0NBUUM0RkNPaTViRFlLalFBQ0NDeGJ3QWYwbzBlT0hORUk5KzgwNStmeTl5MTdEZVYrb3E3TjdYdDVxN280MmVkOVNMZWU5UHdQZDI5dDFXNEU1VzVzbzdWTzNFWUFBUVFRUUNDWEFnVDBYRFliaFVZQUFRUldKR0E5d2JHR3VkdE03bjc2N0JXOXV1eFB0a24xNWtQNlRRVU42V1Z2WmVxUEFBSUlJSUJBSmdRSTZKbG9CZ3FCQUFJSWRGVEFEeS9XeU9KN2txMGtsN25xNkJhTHR2TDVrRjRwY0U5NkoxdHRmb2g3SjdmQ3VoRkFBQUVFRU1pNUFBRTk1dzFJOFJGQUFJRmxDUGpoeFRaUm5LYm9palUxbC9Xb00rUjRHWEFMbmpJZjBtMjRPejNwQzNDZTlBZjJ0eWNsNGdrSUlJQUFBZ2dra3dYaGdBQUNDQ0JRYkFFZmptYUM0R0ZWczVaY2JzMWYycXJZdGU1RTdlWkRPajNwSy9PbEIzMWxYandiQVFRUVFLQ2tBdlNnbDdUaHFUWUNDSlJLd0FKNmVLcFdtOUlsdFE3NnBLU0xYNWRLb0oyVm5RL3BSWms0cmh2aG1mMnRuZnNnNjBJQUFRUVFLS3dBQWIyd1RVdkZFRUFBZ1RrQkMwYzJyRjB4M1gwMTZVRW5MM21QMWY1VHJKRGVqWjJoR3djQlZ0dWF2QTRCQkJCQUFJSE1DQkRRTTlNVUZBUUJCQkRvdklBNnprY0NwendXaHZ6OVh5djN3cERPT2VrWDkrekdRWUNMbDRCSEVVQUFBUVFReUlFQUg5QnkwRWdVRVFFRUVHaURnTC8yZVRYcSs1cHo3dnRhbi8zOUp6U3RGWFkrcENmbnBBOE43US9zT3VsNzkvYXZkZFZkZkgwM2VyZTdzWTB1a3JFcEJCQkFBQUVFT2lOQVFPK01LMnRGQUFFRXNpYmdBL3JSSTBjT3EvZjh3VEM1MHBxL0wyc0Z6VjE1MHBBZWhsV05VUGlmTzRZdmYzNXc4T0Q1SElYMGJoeW82Y1kyY3JmclVHQUVFRUFBQVFRV0N4RFFGNHZ3TXdJSUlGQmNBWDk1dGRBRjkvdnowTldWWHR5cWRybG1QcVM3R2JtdUQxemwxcDNEVDNsZXprSjZwOEhvUWUrME1PdEhBQUVFRUNpRUFBRzlFTTFJSlJCQUFJRmxDYVFoNlo3azJVazMrckpleVpPV0k5QVh4UEdzUXZwbTU2SURoUFFGWkJ3TVdzREJEd2dnZ0FBQ0NDd3RRRUJmMm9WN0VVQUFnU0lLSkNFcERPOTFjUndIb1ovWm5XSHU3V3hwRFhQWEpIeldrNzZKa0w0QU5qMDR0T0JPZmtBQUFRUVFRQUNCaFFJRTlJVWUvSVFBQWdnVVdjQUg5TmxLNVdHRjgxRS96SjJKNGpyUjNtbFBlbDVDZWpmQ016M29uZGpUV0NjQ0NDQ0FRT0VFQ09pRmExSXFoQUFDQ0Z4UXdFSlNlT0x3NFJNNkQvMmdUMldhMWV5Q3orYUIxUXZrcXllOUcvdEFOdzRDckw2OWVDVUNDQ0NBQUFJWkVTQ2daNlFoS0FZQ0NDRFFCUUVMWWpaUm5KYnducVFIdlJ2WkxObGlDZi9OVzA5Nko1dUlIYTJUdXF3YkFRUVFRS0F3QWdUMHdqUWxGVUVBQVFSV0lCREY5K3BjYWVYMGtQZUJGYkN0K0tuNTZrbGZjZlZXOEFKNjBGZUF4Vk1SUUFBQkJNb3J3QWV6OHJZOU5VY0FnWElLK0VuaFpxUDQ2NHJucDBSZzd3UDBibloyWDFpNkozM2Z2cjdPYmpaVGEyY2Z5MVJ6VUJnRUVFQUFnYXdLRU5DejJqS1VDd0VFRU9pTWdBL29KdzQvZWtTci8zYVlYR21ObWR3N1l6Mi8xcVY2MGtkR1pvTHloSFI2ME9mM0JtNGhnQUFDQ0NCd1FRRUMrZ1ZwZUFBQkJCQW9ySUNkaCs0MFVkeDkvangwWjJQZFdib2dzS0FuZmR2UTBMT0M4b1IwOXJFdTdHQnNBZ0VFRUVBZy93SUU5UHkzSVRWQUFBRUVWaXFROW1aK05YbGgwbzIrMHBYdy9GVUlOSHZTTlhKaFV4UzRtM2JzM3YyakpRbnA2VDYzQ2pSZWdnQUNDQ0NBUUhrRUNPamxhV3RxaWdBQ0NLUUNTVzltR043cjRqaldOZEY5ajNyNklOODdMdEFuOTFtRjlFdkRLTHc5QXlHOUcrR1pIdlNPNzFac0FBRUVFRUNnQ0FJRTlDSzBJblZBQUFFRVZpYmd3OUpzcGZLd3d2bG9jcm0xZ1BQUVYyYTR0bWVySnoxMmJrYjJsNGFWOEVDUFEzbzN3bk0zRGdLc3JVMTROUUlJSUlBQUFoa1FJS0Jub0JFb0FnSUlJTkJsQVF0azRZbkRoMC9vUFBTRFBqazVabkx2Y2h2bzJFalFwOVAvWjlRVWwyV2tKNzJUQk4wNENOREo4ck51QkJCQUFBRUV1aUpBUU84S014dEJBQUVFTWlWZ1ljbUd0V3NKNzBsNjBNbFBpVWZYLyszTFVFOTZKeXRQRDNvbmRWazNBZ2dnZ0VCaEJBam9oV2xLS29JQUFnaXNRaUJ5STRGTjRoNkd2QitzZ3E4ZEx5bEpUenBIZ05xeHM3QU9CQkJBQUlIQ0MvQ0JyUEJOVEFVUlFBQ0JKUVg4T2VlelVlTWJTazZuOUF4N1B5QkVMVW5WbFR1WDdrbWZHK25RbFRKMGNpUDBvSGRTbDNVamdBQUNDQlJHZ0lCZW1LYWtJZ2dnZ01DS0JIeEFQM0g0MGNPSzVROXFSbkY3TVJQRnJZaXd2VTllMEpPdWllTzJEUTgvUTF0bzZLc0k3OVVjL0dudjdzTGFFRUFBQVFRS0tsQ0VOLzJDTmczVlFnQUJCRG91NE05RGQ2Rzd6NStIcmhuTE9yNUZOdkJrQWpaeDNEbWRjWENacnBQKyt1YVRPLzFlM1kzZTdXNXM0OGxzZVJ3QkJCQkFBSUhNQzNUNlRUL3pBQlFRQVFRUUtMRkFFcHBjK05YRUlPbEdMN0ZITnFydVhNV09sSVJCcUJuZXU3SjA0OEJNTjdiUkZTdzJnZ0FDQ0NDQVFDY0ZDT2lkMUdYZENDQ0FRTFlGZkdpS0t2RzlMbzRiU29UV284NHc5MnkzV1Y1TFJ3OTZYbHVPY2lPQUFBSUlkRldBZ041VmJqYUdBQUlJWkVyQUIvUkdaZjEzMVZ0N0pMbmNHaFBGWmFXRk5OUzlTS0dXSHZTczdGaVVBd0VFRUVBZzB3SUU5RXczRDRWREFBRUVPaXBnb1NrOGZ1alFTUmU0Yi9vMHFCc2QzU0lyUndBQkJCQkFBQUVFRUxpZ0FBSDlnalE4Z0FBQ0NCUmV3TUs0bnloT1o1L2ZuZlNnazg4TDMrcFVFQUVFRUVBQUFRUXlLMEJBejJ6VFVEQUVFRUNnZXdLaEMwY0NtOFJkMDRkM2I2dHNLU01DM1J4S0gycm9QdnRZUmhxZVlpQ0FBQUlJWkUrQU44bnN0UWtsUWdBQkJMb3A0Q2VGbTJrMERpcWVuOVNHN1gyQmJ2UnV0a0R2dHRYOERCRFdiZlNFem5qditBU0JZUmpPQnJPejMyOVdtZjJzZDIzUGxoRkFBQUVFTWlwQVFNOW93MUFzQkJCQW9Fc0NQcFNkZU9TUkk0cmxEeWxBMldZN0h0UzZWRGMyc3h5QktQN1BObnBDTGQvZndiWS9IMGIrMk05ZlQ5VHIzOVoyN0FmMnMrVzBEODlCQUFFRUVDaVZBQUc5Vk0xTlpSRkFBSUVsQmZ4NTZDNTA5L256MERVR2VjbG5jV2ZSQkJxcVVHVnlkUHptd01WdmJaN2RZRzNmMXVDc0ZWbzRYNmRMK2QxVk9ULzcycUloVWg4RUVFQUFBUVRhS1VCQWI2Y202MElBQVFUeUtlQzd6U003RDkwdlNUZDZQcXRDcVZjb1lDRTltcWlOZjFBQitoMGFRZUVQMXVpK2RvWDBtU2dNKzdYdUF4dUM4THFqUjQrZTFycHRHKzFhdjFiRmdnQUNDQ0NBUUhFRXFzV3BDalZCQUFFRUVGaWxRTkpqWG9sSFhDTnNhS3h6R3FBNGlMdEswSnk5ek5xL01sbXZ2Mi9INEdBUVJ1RjdOWWpDQXJSOXJYb2ZzSjd6Skp5N203WHVWelRYWjU4N1p2WEZnZ0FDQ0NDQUFBSkxDS3o2alhlSmRYRVhBZ2dnZ0VBK0JYeEFiMVRXZnpjTXd0SGtjbXRNRkpmUHBseFZxYTM5TFl6N2tPNWlaejNwNmVlRDFmWjBOM3ZPQ2VlcmFoRmVoQUFDQ0NCUVdvSDBEYmkwQUZRY0FRUVFRTUNIOGZENG9VTW5YZUFPK3ZIdXVvRkxxUVRhRnRLMW92TUsrSDBLK3ZTY2wyb1hvcklJSUlBQUF1MFFJS0MzUTVGMUlJQUFBdmtXc0hEbXp6MVd4K25kU1E4NitUemZUYnFxMHJjanBNOUVVYVJ6emdubnEyb0JYb1FBQWdnZ1VIb0JBbnJwZHdFQUVFQUFnWG1CMExrUlA0bjcvQkRuK1FlNVZRYUJWWWQwdlhCR3M3VmJ6L2xmY2M1NUdYWVY2b2dBQWdnZzBBa0JBbm9uVkZrbkFnZ2drRDhCZjY3eFRLTnhVRVUvcFM5N2Y2QWJQWC90Mkk0U3J6eWtPemVybnZPK29CSC8yV1N0OXM5VUNIOU91NzR6SVZ3N1dvUjFJSUFBQWdpVVJvQ0FYcHFtcHFJSUlJREFSUVY4UUQveHlDTkhGTXUvcVhPSUxaNnZkb0t3aTI2SUIzTWg4R1FoM1I3M1gvcG5KcXhVcWtIc1BqTlJyLytmemRyWktSTjJDVGNXQkJCQUFBRUVFRmlCQUFGOUJWZzhGUUVFRUNpNGdEOFBQUWpkdmMzejBDMkFzWlJYd05yZjk0VGJKZGhhWm5kdkhWMFIrNTV6QytlMTJpODBxUWpuNWQxbnFEa0NDQ0NBd0JvRkNPaHJCT1RsQ0NDQVFJRUVtaE80UnlPQnMyeG0zZWdzSlJkWUtxU0x4RitHVFFNdHdvcUMrNmNKNXlYZlM2ZytBZ2dnZ0VEYkJLcHRXeE1yUWdBQkJCREl1NER2TWE4MEd2ZkZVVGdiaElHOVIxZ1BLZ2R6ODk2eWF5dC9HdEpENjBuZlBqaDRJSWlpZ1RCMkRadFFVUGNkYUs2ZW52TzFPZk5xQkJCQUFBRUUvSWN2R0JCQUFBRUVFREFCSDlEZCtmTVBoK3ZYSFhaaCtGVDFwUHY3NENtOVFMb2ZSRlAxK3BlWDBMQ0RPSnh6dmdRTWR5R0FBQUlJSUxBU0FYcEZWcUxGY3hGQUFJRmlDMWdJQ3ljbUpxWmRxSW5pcks0dUNlM0ZyamExVzRHQVB5ZGR6N2ZSRmRaamJ0OXRWMkZDUVNHd0lJQUFBZ2dnc0ZZQkF2cGFCWGs5QWdnZ1VCd0JDK2dXdW15NXV6bFJYUElUL3lJd0wyQTk1WGI1dFBSNzJycysvd3h1SVlBQUFnZ2dnTUNxQkFqb3EyTGpSUWdnZ0VDeEJWd1FmZFZQRkJmNnljQ0tYVmxxaHdBQ0NDQ0FBQUlJWkVTQWdKNlJocUFZQ0NDQVFFWUVrcUhLamNZM2RmYjVDWlhKM2lmb0ljMUk0MUFNQkJCQUFBRUVFQ2kyQUFHOTJPMUw3UkJBQUlHVkN2aUFQalUrUHFZWFBxVExhRms4NS96aWxTcnlmQVFRUUFBQkJCQkFZQlVDQlBSVm9QRVNCQkJBb09BQ3lYbm9vUnRwbm9kT0QzckJHNXpxSVlBQUFnZ2dnRUEyQkFqbzJXZ0hTb0VBQWdoa1NjQlA0QjRGMFlnL0R6MUo2VmtxSDJWQkFBRUVFRUFBQVFRS0tVQkFMMlN6VWlrRUVFQmdUUUpKajNtamNaOHVnejZyaTJoWmp6ckQzTmRFeW9zUlFBQUJCQkJBQUlFbkZ5Q2dQN2tSejBBQUFRVEtKdUFEK3Jvb2VsQVZmOWlmaDg1RWNXWGJCNmd2QWdnZ2dBQUNDUFJBZ0lEZUEzUTJpUUFDQ0dSY3dIckxxN1ZhN2F4NnovK3JIK0d1cnZTTWw1bmlJWUFBQWdnZ2dBQUN1UmNnb09lK0Nha0FBZ2dnMEJFQlA2UTlicmovb214K1NpRzlxcTBRMGp0Q3pVb1JRQUFCQkJCQUFJRkVnSURPbm9BQUFnZ2dzSlNBNzBVL1BqNCtHcnJnTDhMSXYxM01MdlZFN2tNQUFRUVFRQUFCQkJCb2p3QUJ2VDJPckFVQkJCQW9va0RTWXg0MVB1cml1S0VLOXVtTFh2UWl0alIxUWdBQkJCQkFBSUZNQ0JEUU05RU1GQUlCQkJESXBJRDFva2NUbzQrTUJFSDROMzZ5T09jc3FMTWdnQUFDQ0NDQUFBSUlkRUNBZ040QlZGYUpBQUlJRkVUQWVzdjkrNFF1alA0UjMzVWVocnh2RktSeHFRWUNDQ0NBQUFJSVpFK0FEMXJaYXhOS2hBQUNDR1JKd000N2p5WnF0UU1hM1g2VGV0R2p3SzZOem9JQUFnZ2dnQUFDQ0NEUWRnRUNldHRKV1NFQ0NDQlFPQUgvWHVGQzkwRmZzekNzNkR2bm9oZXVtYWtRQWdnZ2dBQUNDUFJhZ0lEZTZ4Wmcrd2dnZ0VEMkJleTg4M0JxZFB3bXBmTFBxeGM5VkR6blhQVHN0eHNsUkFBQkJCQkFBSUdjQ1JEUWM5WmdGQmNCQkJEb2dZRDFsbHV2ZWVEQytFYS8vVEE1TjkzZjVoOEVFRUFBQVFRUVFBQ0J0Z2dRME52Q3lFb1FRQUNCd2d2NGM5R3RGMTNub0grT2M5RUwzOTVVRUFFRUVFQUFBUVI2SUVCQTd3RTZtMFFBQVFSeUt1RGZNMklYdk50Wm4zb1lWdlV2NTZMbnRERXBOZ0lJSUlBQUFnaGtUNENBbnIwMm9VUUlJSUJBVmdXc0Y3MHlWYTkvV1pkZCswd1k2UzJFNjZKbnRhMG9Gd0lJSUlBQUFnamtVSUNBbnNOR284Z0lJSUJBcndYaUtIcTN3dms1ZXRGNzNSSnNId0VFRUVBQUFRU0tKRUJBTDFKclVoY0VFRUNnOHdJMmUzdDFhblQwbStvKy8wUGZpeDRFWEJlOTgrNXNBUUVFRUVBQUFRUktJRUJBTDBFalUwVUVFRUNnelFLeHJhOXlmdmI5TG80ZjA4bm9mZnJSMzlmbTdiQTZCQkJBQUFFRUVFQ2dWQUlFOUZJMU41VkZBQUVFMmlKZ1lieDY5T2hSQytmdkNTT2RrZTRjQWIwdHRLd0VBUVFRUUFBQkJNb3NRRUF2Yyt0VGR3UVFRR0QxQWpiVVBaaXMxVDZpYkg2dmhycFhOWis3djIvMXErU1ZDQ0NBQUFJSUlJQkF1UVVJNk9WdWYycVBBQUlJckZiQUxxL21MN1BtZ3VnZC9scHJZYUN1ZEM2N3RscFFYb2NBQWdnZ2dBQUNDQkRRMlFjUVFBQUJCRllya0Z4MmJXenMvdytkdit5YXZhY3dZZHhxTlhrZEFnZ2dnQUFDQ0pSZWdJQmUrbDBBQUFRUVFHQk5Bcjd6dkJISGIzZk9uZENhbURCdVRaeThHQUVFRUVBQUFRVEtMRUJBTDNQclUzY0VFRUJnN1FKeHNHOWYzL0h4OGRFd2NQL0JYM2FOQ2VQV3Jzb2FFRUFBQVFRUVFLQ1VBZ1QwVWpZN2xVWUFBUVRhS0RBeTRvZTFUNHpWUDZUTHJ0MlZUQmpuR09yZVJtSldoUUFDQ0NDQUFBTGxFQ0NnbDZPZHFTVUNDQ0RRU1lGMHdqaGRiUzM0dHhycXJxdXZoWDRDdVU1dWxIVWpnQUFDQ0NDQUFBSkZFeUNnRjYxRnFROENDQ0RRR3dIck1hOU8xZXQzaFdGNG94L3F6b1J4dldrSnRvb0FBZ2dnZ0FBQ3VSVWdvT2UyNlNnNEFnZ2drRG1CMkVxMDNnWC9UcWVoZjB0QnZVOFhYV09vZSthYWlRSWhnQUFDQ0NDQVFGWUZDT2haYlJuS2hRQUNDT1JQd0FKNnRWYXJuUTFDOTBaZi9EQ3c5eGsvMDN2K3FrT0pFVUFBQVFRUVFBQ0I3Z29RMEx2cnpkWVFRQUNCb2d2NG9lNlRvK00zdThEOW9ZYTYyL3NNdmVoRmIzWHFod0FDQ0NDQUFBSnRFU0NndDRXUmxTQ0FBQUlJdEFqNG9lN3JHdTR0bXRYOVFZYTZ0OGh3RXdFRUVFQUFBUVFRdUlnQUFmMGlPRHlFQUFJSUlMQXFBVC9VZlh4OC9Fem9namY0OGUxaFVOR2FHT3ErS2s1ZWhBQUNDQ0NBQUFKbEVTQ2dsNldscVNjQ0NDRFFYUUUvMUgyaVhyL05oY0VITmRROTFPWVo2dDdkTm1CckNDQ0FBQUlJSUpBekFRSjZ6aHFNNGlLQUFBSTVFdkJEM2FkR2ErOElYSHh2TXRUZEVkSnoxSUFVRlFFRUVFQUFBUVM2SzBCQTc2NDNXME1BQVFUS0pPQ0h1cXZDczJIa1h1ZWNhd1JoV05YUERIVXYwMTVBWFJGQUFBRUVFRUJnMlFJRTlHVlQ4VVFFRUVBQWdWVUl6QWI3OXZVZE96SitYeGdHYjlWUWQ4VnpCWFVXQkJCQUFBRUVFRUFBZ1NjSUVOQ2ZRTUlkQ0NDQUFBSnRGUmdac1dIdDRjUlkvWGVET1A1Y1dLbFUxWVUrMDladHNESUVFRUFBQVFRUVFLQUFBZ1QwQWpRaVZVQUFBUVF5TG1CRDJ2MzdUVmp0ZTYxQyttTmhFUGJwUG5yU005NXdGQThCQkJCQUFBRUV1aXRBUU8rdU4xdERBQUVFeWlyUThFUGREeDkrVkdlZ3YxYkQzVzJ4ZnprZjNWUHdEd0lJSUlBQUFnZ2cwT3pSQUFJQkJCQkFBSUdPQzR5TTJMRDJxaTY5OW5mT0JlL1grZWgya0poWjNUc096d1lRUUFBQkJCQkFJQzhDOUtEbnBhVW9Kd0lJSUZBTUFUK3NmYkpXdThIRjduWi82VFhPUnk5R3kxSUxCQkJBQUFFRUVGaXpBQUY5ellTc0FBRUVFRUJnQlFJMnBOMHV0YVpMbzhldjBhWFhKalhTbmZQUlZ3RElVeEZBQUFFRUVFQ2d1QUlFOU9LMkxUVkRBQUVFc2lyZ0w3MDJOVDQrcHV1ai95cm5vMmUxbVNnWEFnZ2dnQUFDQ0hSYmdJRGViWEcyaHdBQ0NDQVFCSFkrdXE2UFBqRTYvcmN1Y08vMjU2TnpmWFQyREFRUVFBQUJCQkFvdVFBQnZlUTdBTlZIQUFFRWVpYVFYQjg5bUJ5ci8yWVFOLzVYOC9ybzUzdFdIamFNQUFJSUlJQUFBZ2owV0lDQTN1TUdZUE1JSUlCQWlRWHNmUFNLMWYrY0MxK3RjOUxITkdsY3YzNWtabmREWVVFQUFRUVFRQUNCMGdrUTBFdlg1RlFZQVFRUXlKU0F2ejc2ZEwxdWs4WDlmT0NjaFhPYlJDN09WQ2twREFJSUlJQUFBZ2dnMEFVQkFub1hrTmtFQWdnZ2dNQkZCSnJubyt2U2ExOEpnL0FOT2g5ZFU3enJQeFlFRUVBQUFRUVFRS0JrQWdUMGtqVTQxVVVBQVFReUtXQWhYVDNuRTdYYXgzUjk5TjhMSzFGRkNkM3VZMEVBQVFRUVFBQUJCRW9qUUVBdlRWTlRVUVFRUUNEekFuNVl1M3JTLzQzT1I3OHRpaUs3UGpvaFBmUE5SZ0VSUUFBQkJCQkFvRjBDQlBSMlNiSWVCQkJBQUlHMUNsaEE5NVBHelFUaHp6a1hIOWFrY1gwYTdNNmtjV3VWNWZVSUlJQUFBZ2dna0FzQkFub3Vtb2xDSW9BQUFxVVI4SlBHbmFyVnBxSTQrS2VhTk81Y0VQcEo0eHFsRWFDaUNDQ0FBQUlJSUZCYUFRSjZhWnVlaWlPQUFBSVpGV2hPR25lc1hyL2ZCZUV2cUJmZENtcnZWMHdjbDlFbW8xZ0lJSUFBQWdnZzBCNEJBbnA3SEZrTEFnZ2dnRUE3QmVabmR2L3ZtalR1WFpyWlBWUThweGU5bmNhc0N3RUVFRUFBQVFReUowQkF6MXlUVUNBRUVFQUFBUzh3TW1Mbm5rZVQ5ZnA3Rk5JL3FabmRxK3BDUDQ4T0FnZ2dnQUFDQ0NCUVZBRUNlbEZibG5vaGdBQUMrUmVZRzlLdW1kMWZHOFR4N1pyWnZWL1ZZbWIzL0xjdE5VQUFBUVFRUUFDQkpRUUk2RXVnY0JjQ0NDQ0FRR1lFNW1aMmIvU3YrOGU2L05xMy9jenVoUFRNTkJBRlFRQUJCQkJBQUlIMkNSRFEyMmZKbWhCQUFBRUVPaVBRQ1BZSDFlT0hEcDBNWS9jenpnV25BcnY4V3NBNTZaM2hacTBJSUlBQUFnZ2cwQ3NCQW5xdjVOa3VBZ2dnZ01EeUJRN29XdWo3OXZWTmpJOC9wRG5kZjBhWFgwdDcxcGs0YnZtS1BCTUJCQkJBQUFFRU1pNUFRTTk0QTFFOEJCQkFBSUdtUUhObTk0bGE3Zll3akY3TjVkZllNeEJBQUFFRUVFQ2dhQUlFOUtLMUtQVkJBQUVFaWl4Z0lUMElxaE5qWTU5UkovcmJtcGRmczk3MHVRbmxpbHg5Nm9ZQUFnZ2dnQUFDeFJZZ29CZTdmYWtkQWdnZ1VFUUJHOVplbWF5Ti8zYmc0dC9WNWRjcSt0a3V5Y2FDQUFJSUlJQUFBZ2prV29DQW51dm1vL0FJSUlCQUtRV3N0OXg2emNPSnNmcHY2QnJwbjFaUGVoL1hTQy9sdmtDbEVVQUFBUVFRS0pRQUFiMVF6VWxsRUVBQWdkSUlXRWozNzJHNlJ2b3Y2dkpydDlvMTBnbnBwV2wvS29vQUFnZ2dnRUFoQlFqb2hXeFdLb1VBQWdpVVFzQVBkYmVhRGxUN2Z0bzVOeEtGWWI5K3RQUFVXUkJBQUFFRUVFQUFnZHdKRU5CejEyUVVHQUVFRUVDZ1JjQkNldlh3NGNPUHIydkUvMERYU1ArT1puZTNhNlFUMGx1UXVJa0FBZ2dnZ0FBQytSQWdvT2VqblNnbEFnZ2dnTUNGQld5Q3VPcjQrUGpFYktYeUN2V2tId3NzcER2SHhIRVhOdU1SQkJCQUFBRUVFTWlnQUFFOWc0MUNrUkJBQUFFRVZpd3dHK3piMTNmeXlKSHZSUzU0dWNMNW1TQ01xcnI0R2lGOXhaUzhBQUVFRUVBQUFRUjZKVUJBNzVVODIwVUFBUVFRYUsrQVhTTmRJZjFZdlg1L0hMdVg2OUxvczBFWVZMVVJHd2JQZ2dBQ0NDQ0FBQUlJWkY2QWdKNzVKcUtBQ0NDQUFBTExGckNRdm5kdi8vSHg4Uys2TVBwcHZjNW1lN2ZycEJQU2w0M0lFeEZBQUFFRUVFQ2dWd0lFOUY3SnMxMEVFRUFBZ2M0SUhEeDQzbnJTcDhiR1B1K2k0RlU2SDkyMll5SGRycDNPZ2dBQ0NDQ0FBQUlJWkZhQWdKN1pwcUZnQ0NDQUFBS3JGbWdPZDU4YXJYOVduZWkvcXBuZGJWWDJua2RJWHpVcUwwUUFBUVFRUUFDQlRnc1EwRHN0elBvUlFBQUJCSG9qWUNGZHM3dFBqdFUvcGN1dnZiRVowcTBzaFBUZXRBaGJSUUFCQkJCQUFJRW5FU0NnUHdrUUR5T0FBQUlJNUZyQVh5ZDlzbGI3U0J5NE40ZFJsTDd2RWRKejNhd1VIZ0VFRUVBQWdXSUtwQjlVaWxrN2FvVUFBZ2dnVUhZQm15VE9RbnBsYXF6K083R0wvMTB6cE52OTlzV0NBQUlJSUlBQUFnaGtSb0NBbnBtbW9DQUlJSUFBQWgwU3NDQnVQZVlXMG44cmpodi9YaUU5blRTT2tONGhkRmFMQUFJSUlJQUFBaXNYSUtDdjNJeFhJSUFBQWdqa1R5QU42ZEZVYmZ3L0tLVC9QejZrTzJlOTY0VDAvTFVuSlVZQUFRUVFRS0NRQWdUMFFqWXJsVUlBQVFRUVdFTEFncmg5VlJUUy85L0F1UnZEU3FXcWU2eDNuWkMrQkJoM0lZQUFBZ2dnZ0VCM0JRam8zZlZtYXdnZ2dBQUN2Uld3SUc2QlBKd1lxNzBsQ2VrYTdrNVBlbTliaGEwamdBQUNDQ0NBZ0JjZ29MTWpJSUFBQWdpVVRjQkN1bDBZdlJuUzQ5OUpldElkUGVsbDJ4T29Md0lJSUlBQUFoa1RJS0JuckVFb0RnSUlJSUJBVndSOEw3cTJwSkJlZjNOenVMdDYwaG51M2hWOU5vSUFBZ2dnZ0FBQ1N3b1EwSmRrNFU0RUVFQUFnUklJdElUMDJsdGM3TjRmVnZ6czd0YkR6am5wSmRnQnFDSUNDQ0NBQUFKWkV5Q2daNjFGS0E4Q0NDQ0FRRGNGNWtMNlpLMTJROHQxMHUxKysySkJBQUVFRUVBQUFRUzZKa0JBN3hvMUcwSUFBUVFReUtoQUdzUVhYeWZkaXBzK2x0R2lVeXdFRUVBQUFRUVFLSklBQWIxSXJVbGRFRUFBQVFSV0s1RE83dTZ2ays1Yy9KdWhMcFRlWEJraGZiV3F2QTRCQkJCQUFBRUVWaVNRZnZoWTBZdDRNZ0lJSUlBQUFnVVVTTTg5cjB5TzFkOGRPL2VtVUNsZDliUXZRbm9CRzV3cUlZQUFBZ2dna0RVQkFucldXb1R5SUlBQUFnajBVaUR0U2E5TTFXb2ZkaTc0MXdycFZoNTd2Mnowc21Cc0d3RUVFRUFBQVFTS0wwQkFMMzRiVTBNRUVFQUFnWlVKcENHOXFvbmpmbDhoL1RWQkV0SXJXZzBoZldXV1BCc0JCQkJBQUFFRVZpQkFRRjhCRms5RkFBRUVFQ2lOZ0lWMEMrTVcwdi9VaGU3bmRkdUd1ZHUxMG1mMW5RVUJCQkJBQUFFRUVHaTdBQUc5N2FTc0VBRUVFRUNnSUFJVzBtZUR2WHY3cDBici84MkYwVS81bjhPd0dqaEhTQzlJSTFNTkJCQkFBQUVFc2lSQVFNOVNhMUFXQkJCQUFJSHNDUnc4ZUQ3WXQ2OXZhbXpzOHk1MjF3U0JPeHRFVVZVRm5jbGVZU2tSQWdnZ2dBQUNDT1JaZ0lDZTU5YWo3QWdnZ0FBQzNSRVlHWm54UGVuajQxK0tYUEJDNTl5a0pvL3IwOFlKNmQxcEFiYUNBQUlJSUlCQUtRUUk2S1ZvWmlxSkFBSUlJTEJtZ1daUCtyRjYvZjVxR1AyRTFuZklRcnJHd1o5Zjg3cFpBUUlJSUlBQUFnZ2dJQUVDT3JzQkFnZ2dnQUFDeXhWbzlxUS9OamIyM1VyL3pBdDBMdnI5VVJUMUU5S1hDOGp6RUVBQUFRUVFRT0JpQWdUMGkrbndHQUlJSUlBQUFvc0ZtajNwUjc5NzlMSCsyTDBvYnNSM1dralgweGp1dnRpS254RkFBQUVFRUVCZ1JRSUU5QlZ4OFdRRUVFQUFBUVFrWUQzcG1qaHVmSHo4ekZTOWZvMXJ4UDhqaktLKzV1enVOdnM3Q3dJSUlJQUFBZ2dnc0dJQkF2cUt5WGdCQWdnZ2dBQUNFckNRYnRkRjEvWFJKK3YxZnh5NzREK0dsWXJON203WFM3Y3ZGZ1FRUUFBQkJCQkFZRVVDQlBRVmNmRmtCQkJBQUFFRUZnZzA5Sk9GOUVDWFlYdTljL0c3MVpOdVA0ZjZJcVFiREFzQ0NDQ0FBQUlJTEZ1QWdMNXNLcDZJQUFJSUlJREFrZ0lXMHUzOU5Kb2NxLzltSExzM2FYWjNDK2hSNElMWkpWL0JuUWdnZ0FBQ0NDQ0F3QklDQlBRbFVMZ0xBUVFRUUFDQkZRcFliN21kZTE2WnF0VStyT0h1UDZmYmpTQUtxODN6MGxlNE9wNk9BQUlJSUlBQUFtVVVJS0NYc2RXcE13SUlJSUJBSndRc29EZHM4amlGOUwrTUkzZU5JdnRKRFhtdmNobTJUbkN6VGdRUVFBQUJCSW9uUUVBdlhwdFNJd1FRUUFDQlhnbzByNVYrZkhUOGk2RnpQKzVjOEYwdXc5YkxCbUhiQ0NDQUFBSUk1RWVBZ0o2ZnRxS2tDQ0NBQUFKNUVXaGVLMzJpWHY5Mm8xcDlub3ZqTC9uTHNDWFhTdWN5YkhscFI4cUpBQUlJSUlCQWx3VUk2RjBHWjNNSUlJQUFBaVVSYUY0ci9jVGh3eWNtYS9XckF4ZC90aG5TdVF4YlNYWUJxb2tBQWdnZ2dNQktCUWpvS3hYaitRZ2dnQUFDQ0N4WElMbFd1cjgyK3NSWS9aVXVkaDlvWG9iTjNuOXQ5bmNXQkJCQUFBRUVFRUJnVG9DQVBrZkJEUVFRUUFBQkJEb2lZSmRhODlkR242elYzcTVycGI4aDhGZGgwMzNPY1JtMmpwQ3pVZ1FRUUFBQkJQSXBRRURQWjd0UmFnUVFRQUNCZkFta3ZlVVZYU3Y5ajF3UXZrTEZQM094R2Q1MUtYWE9WYzlYRzFOYUJCQkFBQUVFMWl4QVFGOHpJU3RBQUFFRUVFQmdXUUxKWmRqMjd1MmZHaHY3dklzYXozZk9mY2RtZU5jRE00dlhvTWVzMTUwRkFRUVFRQUFCQkVva1FFQXZVV05UVlFRUVFBQ0JEQWcwWjNpZkduMzBtK0dtYy9zMHcvc3RDdWw5dW1hNjliTFBhUGo3ckI4Qkh3WGpHU2d0UlVBQUFRUVFRQUNCTGdxRVhkd1dtMElBQVFRUVFBQ0JWR0RmdnI0Z21VUXUyREU4K0FkaEVMN0JIdExROWlCMjdwNjQ3L1RMamg4NmZ0THUwaGZEM1EySEJRRUVFRUFBZ1lJTEVOQUwzc0JVRHdFRUVFQWcwd0kyak4yZm43NTllUGdWbWpUdWVyMHhqMVZuWmo1eDlPalIwM3JNUnJyWlpkbFlFRUFBQVFRUVFBQUJCQkJBQUFFRUVFQ2d3d0lXd3BjNjVXeXArenBjRkZhUEFBSUlJSUFBQXIwVW9BZTlsL3BzR3dFRUVFQUFnWGtCdTE1NnVsaXZPc1BhVXcyK0k0QUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0xSWDRIOEQ3ZHVUUy9ENCt2MEFBQUFBU1VWT1JLNUNZSUk9IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMSJdLCJleHRlbnNpb25zIjpbImhtYWMtc2VjcmV0IiwiY3JlZFByb3RlY3QiLCJjcmVkQmxvYiIsIm1pblBpbkxlbmd0aCJdLCJhYWd1aWQiOiI5ZDNkZjZiYTI4MmYxMWVkYTI2MTAyNDJhYzEyMDAwMiIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImVwIjpmYWxzZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlfSwibWF4TXNnU2l6ZSI6MTAyNCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMSwyXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0IjoxMCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoxMjgsInRyYW5zcG9ydHMiOlsibmZjIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN31dLCJmb3JjZVBJTkNoYW5nZSI6ZmFsc2UsIm1pblBJTkxlbmd0aCI6NCwibWF4Q3JlZEJsb2JMZW5ndGgiOjMyLCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6MX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIyLTExLTA3IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEwLCJ1cmwiOiJodHRwczovL3d3dy5nZXRhcmN1bHVzLmNvbS8iLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IkFyY3VsdXMgRklETzIvVTJGIENhcmQiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDIyMTEwNzAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIyLTExLTA3IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEwfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIzLTAyLTIyIn0seyJhYWd1aWQiOiJmYmVmZGY2OC1mZTg2LTAxMDYtMjEzZS00ZDVmYTI0Y2JlMmUiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6ImZiZWZkZjY4LWZlODYtMDEwNi0yMTNlLTRkNWZhMjRjYmUyZSIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJFeGNlbHNlY3UgZVNlY3UgRklETzIgTkZDIFNlY3VyaXR5IEtleSJ9LCJkZXNjcmlwdGlvbiI6IkV4Y2Vsc2VjdSBlU2VjdSBGSURPMiBORkMgU2VjdXJpdHkgS2V5IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfaW50ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MTAsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNTRENDQWUyZ0F3SUJBZ0lKQU05UnpZdTRFSUlsTUFvR0NDcUdTTTQ5QkFNQ01IOHhDekFKQmdOVkJBWVRBa05PTVN3d0tnWURWUVFLRENORmVHTmxiSE5sWTNVZ1JHRjBZU0JVWldOb2JtOXNiMmQ1SUVOdkxpd2dUSFJrTGpFZU1Cd0dBMVVFQ3d3VlJYaGpaV3h6WldOMUlFWnBaRzhnVTJWeWRtVnlNU0l3SUFZRFZRUUREQmxGZUdObGJITmxZM1VnUm1sa2J5QlNiMjkwSUVOQklEQXlNQ0FYRFRFNU1UQXlNekE1TlRBME0xb1lEekl3TlRreE1ERXpNRGsxTURReldqQi9NUXN3Q1FZRFZRUUdFd0pEVGpFc01Db0dBMVVFQ2d3alJYaGpaV3h6WldOMUlFUmhkR0VnVkdWamFHNXZiRzluZVNCRGJ5NHNJRXgwWkM0eEhqQWNCZ05WQkFzTUZVVjRZMlZzYzJWamRTQkdhV1J2SUZObGNuWmxjakVpTUNBR0ExVUVBd3daUlhoalpXeHpaV04xSUVacFpHOGdVbTl2ZENCRFFTQXdNakJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCSGxxMmpVUU1hbEhqL0JSZVFlZkdpejRFdllKeUZMV1B6NFJmaEpHS3FxbCs4bjk2aFQxbTVnWG9Udm9McmpTVTdYMGNCZW9Uc2doeWgyMit5cnM0K1NqVURCT01CMEdBMVVkRGdRV0JCUSs4U0dXMkJYYnFiMmRjQU9pV0pPVStHQ3NQakFmQmdOVkhTTUVHREFXZ0JRKzhTR1cyQlhicWIyZGNBT2lXSk9VK0dDc1BqQU1CZ05WSFJNRUJUQURBUUgvTUFvR0NDcUdTTTQ5QkFNQ0Ewa0FNRVlDSVFEcTh4SVcwWks1eXozRUF6bXV4ODhMQ1RZTzE1N2ZUZnlPaU96QzJBRHlhd0loQU8xUFdZbGVGZ0gvM211RDhjQkFNcjExZkVLZEYvQWFDMTZmdHhhZXpOWEgiXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSXdBQUFBWUNBWUFBQUFvTnhWckFBQUFDWEJJV1hNQUFCN0NBQUFld2dGdTBIVStBQUFGSUdsVVdIUllUVXc2WTI5dExtRmtiMkpsTG5odGNBQUFBQUFBUEQ5NGNHRmphMlYwSUdKbFoybHVQU0x2dTc4aUlHbGtQU0pYTlUwd1RYQkRaV2hwU0hweVpWTjZUbFJqZW10ak9XUWlQejRnUEhnNmVHMXdiV1YwWVNCNGJXeHVjenA0UFNKaFpHOWlaVHB1Y3pwdFpYUmhMeUlnZURwNGJYQjBhejBpUVdSdlltVWdXRTFRSUVOdmNtVWdOUzQyTFdNeE5ESWdOemt1TVRZd09USTBMQ0F5TURFM0x6QTNMekV6TFRBeE9qQTJPak01SUNBZ0lDQWdJQ0FpUGlBOGNtUm1PbEpFUmlCNGJXeHVjenB5WkdZOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6RTVPVGt2TURJdk1qSXRjbVJtTFhONWJuUmhlQzF1Y3lNaVBpQThjbVJtT2tSbGMyTnlhWEIwYVc5dUlISmtaanBoWW05MWREMGlJaUI0Yld4dWN6cDRiWEE5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM4aUlIaHRiRzV6T21SalBTSm9kSFJ3T2k4dmNIVnliQzV2Y21jdlpHTXZaV3hsYldWdWRITXZNUzR4THlJZ2VHMXNibk02Y0dodmRHOXphRzl3UFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzQm9iM1J2YzJodmNDOHhMakF2SWlCNGJXeHVjenA0YlhCTlRUMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzk0WVhBdk1TNHdMMjF0THlJZ2VHMXNibk02YzNSRmRuUTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl6Vkhsd1pTOVNaWE52ZFhKalpVVjJaVzUwSXlJZ2VHMXdPa055WldGMGIzSlViMjlzUFNKQlpHOWlaU0JRYUc5MGIzTm9iM0FnUTBNZ0tGZHBibVJ2ZDNNcElpQjRiWEE2UTNKbFlYUmxSR0YwWlQwaU1qQXhPQzB3TlMweU0xUXhORG8wTURvMU5Tc3dPRG93TUNJZ2VHMXdPazF2WkdsbWVVUmhkR1U5SWpJd01Ua3RNRFV0TURWVU1EazZNek02TkRjck1EZzZNREFpSUhodGNEcE5aWFJoWkdGMFlVUmhkR1U5SWpJd01Ua3RNRFV0TURWVU1EazZNek02TkRjck1EZzZNREFpSUdSak9tWnZjbTFoZEQwaWFXMWhaMlV2Y0c1bklpQndhRzkwYjNOb2IzQTZRMjlzYjNKTmIyUmxQU0l6SWlCd2FHOTBiM05vYjNBNlNVTkRVSEp2Wm1sc1pUMGljMUpIUWlCSlJVTTJNVGsyTmkweUxqRWlJSGh0Y0UxTk9rbHVjM1JoYm1ObFNVUTlJbmh0Y0M1cGFXUTZNakU0TldZeVltWXRPRFZtT1MxalpqUTNMV0ZpT0RjdE9URmpNMkl6WmpCaU56aGxJaUI0YlhCTlRUcEViMk4xYldWdWRFbEVQU0poWkc5aVpUcGtiMk5wWkRwd2FHOTBiM05vYjNBNlpXTXhaVGczTWpFdE56TTNZUzB3TlRSbExXRXpZVGt0TlRGa01UTXpORFpsWlRJNUlpQjRiWEJOVFRwUGNtbG5hVzVoYkVSdlkzVnRaVzUwU1VROUluaHRjQzVrYVdRNk1qRTROV1l5WW1ZdE9EVm1PUzFqWmpRM0xXRmlPRGN0T1RGak0ySXpaakJpTnpobElqNGdQSGh0Y0UxTk9raHBjM1J2Y25rK0lEeHlaR1k2VTJWeFBpQThjbVJtT214cElITjBSWFowT21GamRHbHZiajBpWTNKbFlYUmxaQ0lnYzNSRmRuUTZhVzV6ZEdGdVkyVkpSRDBpZUcxd0xtbHBaRG95TVRnMVpqSmlaaTA0TldZNUxXTm1ORGN0WVdJNE55MDVNV016WWpObU1HSTNPR1VpSUhOMFJYWjBPbmRvWlc0OUlqSXdNVGd0TURVdE1qTlVNVFE2TkRBNk5UVXJNRGc2TURBaUlITjBSWFowT25OdlpuUjNZWEpsUVdkbGJuUTlJa0ZrYjJKbElGQm9iM1J2YzJodmNDQkRReUFvVjJsdVpHOTNjeWtpTHo0Z1BDOXlaR1k2VTJWeFBpQThMM2h0Y0UxTk9raHBjM1J2Y25rK0lEd3ZjbVJtT2tSbGMyTnlhWEIwYVc5dVBpQThMM0prWmpwU1JFWStJRHd2ZURwNGJYQnRaWFJoUGlBOFAzaHdZV05yWlhRZ1pXNWtQU0p5SWo4Ky8wVnhSUUFBR2ZWSlJFRlVhQVhWd1hmY24zVjk3L0hYNS92OVh0ZHYzRHM3SkpBSUFVTFlCWm1DaW1EVkRsZnR3MjNIcVl1cVBWMFd0ZGJXUjYzblZHMnJucmFPdHNoRHJSVWZQUjNXV1MzS1ZoQVpZUW9FUWtMV25kenpONjdyK243ZTUwNGlLTldPODU4K24ybnVpc1MvSjNHOFlaZVoyWlRFSW1EODUrUk9PMFpTVWZpSEpQNkZIeUlFV0JqQXd6Tnc2b2JJM0N5a0NHYUdKTnloTE1Xd2ducm9wTkpJQ0JOVWNvb2kwTzhiK3hmRjZQTEFxSU1jR29kMlcrellEOUZnNDlyQWdiMWkwVEpUSFdHQ3VvNlVoZUVKZGk5bVZyU044Y0tZcTQyZCs4U0tDU08yZ0F3ZElCUVFUUHg3WmxEVmRra1dielRaY0tUSTNkaHZ2ckdsdWVNOWQ4VVRYMFJyK2ptb3lZQ1FPTVNzQkxwQUFqTFFSeHBneG8rUkFtbHI0b2NJWmhlR2tGNWxCcEw0cndoSUNYTERmSCtnRHhlRmtIZ0NDZVN3Zjc4aEV6L0tqTVBFRDVJZ1JYdVJ1ZjIwcFlCWlE3MmY3U3RHSDNZbVR2eEZNaGNnQXdsaUFSTGdHV3dHTkFmV1Fxd21oc2hCY240c0dPQStsOHFDeHhtUUJVM0RTWklqOFY4VFlGQzBqWVVGYmUzMWRQMnk1WkF6VHhBUzVNWkFnUEdqelFCQjFZRHhBOVpaMEtrbWNFSEltYzkzTHZpM0hmSElrcVplalRJZ01FQU83bDhueGs4aDNZTG4zWVEwanVzTTFMeU9FTTVFNHNlQ2dPei9sUFljRUk5eFFUdHh4SGczbnVrWUlMNXJFZGdPQ0NqNGZnWVNzUjVxUmFlanEwSml1cXA0Z2hRTkx3MVY0c2VGQUs5Rk1yNUhRTFRqUWd5Yk1jaU5nN0huMXBXWGZPT2g2c1NMOFBrak1RZExZR0dhd2Q3ZkpYWXZSMFdmRU1BQzFCV0U0bFo2Qy85TW1mNk9jdVRwU0lENGtXVUcwbTdFdmVtMmJjNWpobzFZT3htUE9uTVRwMmFKN0lDQmlZOEovVDdRQWtZQWNaQUFROEVvYzBPMnlMYlJVVU1DTTVDTWRodjJ6VGxrSS9KalJHQVJRaEhJalhpTUdjZEtHbmVNMGpLSU94NnBWKy9MWnVjajd4QU1TUHZvNnhWNDlRWFNPTXpOdzhnRWRGb3dNd01qWTVEU1hwcm1yUlQ2QjR4VmlCOWRFa3R1Sk5xT3RIYys4SmorRURwZDJ4VGFqR2dBR2VNZ2QvOW5ZRThJNElJUVFDd0pnSU1MWEJBTm1neVNrUjJLNE56OUlEdzZMellmTFFyang0WVpORFgwZWs1M0xDQnhTQXAyanBsaGdoWTFzelp4MDFYTkJYTUV0aEFxUUJXOTVoMDA2UXZFRWFoSnRNdVhVTVFYMEZSWDAycDloQ0xOb3dDZXJzZjhQckJWL0tmRVljWi9uempNK0FIdUVBTC9JVGxnWU1aaEJxNmJFUXZwU1VkR0hsUFZ4QlZqZG82eTRSSWdFTnNFTzZKQmxwRUNWTFVUZ2hGTFFUWWNJeU1LUVpNaEcxUU5GS1g0NWoxaVl0Sm9KVU9WK0NFTUdBRUNNQStJL3c4Q1hHQ0FPMWprdjgxWUlzZ09Fb2VJd3l4QVhZbTUvYzZxbFlabmFESkg1Y3pKaElCTW1PQWgzL2psZ1hWV1F6NlJZREFZWHN0Qy9SZDBsa001QXZJM1VIVGZSd0JxZng0am8xdUJMMklSNmdEWkcwSUFCTzRRSTJEZ0RpWU9zUVJ5a0lNWlAwamdHVUxpY1JZQWdRdk1PRVFDTXloYTRCbmtQSUVFRnFCb1FhN0FIVUlFQkRuZmljanBwRWx4aUlESW1zNlluWmtiYURKWU1EejczY2dmbVdrQ1JZTEpDUDArV0FBS0htZUFaRWdRQWdUamtORTJwQWdTaHdqSUFvempnWjlCT2srd3pzQmM3QU8rZ3Zpa3hLUDhKd1M0R0RHNEtFWE9FcXpxdFBBQTN6SGpDNEt0L0JjRXk0Sng4V2liTTJKa0tvb2FlQUQ0Q3VMYkdCUWx4QkVqWmtHZjlYVnRtNGhnQ0l6WnYrWEZEejBZTnA2TkxheEVEbVhuczB5WkV5b28weG5JL29pY29ha2hSTUJlZzN3VFVrbjIxUmduRThRaHJRNG9nMmNIYlFmMjRxd2kySHFTQlJxQkFETWU1dzZwZ000WURIcVFHekNEa0NBVk1PeUJIQ3dBQWdHeEFEbDRCb3NjWnFBTUNHSUx3amhVUGFGc3dBNkM3bUZKbW5sVUhPUVpXbDFXajR5eVJVRWdrQnRseVQydHFBTjc1NFc1c1dSQ2NLcmdETERqZ09VR0NvR2RHTGNDL3lwNGhCOUdFT0NZcVhaNGJXN3NSZEYwRkdhR0lBTXBRc0NlWllGZk03TjNDUDdhUUh3ZkFUbXJSUFpMcmNpdllHeVdXVmVDdFpNZ2w1ckszcFNpUG9iemg4Q0E3eU1naTFHWlhlcHVyNHpHcGcycllsblhBamVVaERzUFdlVFBMZkxIMVVEYWZtK21Mb3lSdHYzRVpOY21xeXhhTkNCdXZUNmV1d1B4TXRSdjQrclJHOXhJTXVnME1OUUJMTnhQYTJRTHVZRnFBTVRuQTgvbm9DSUF4aUVoZ3VjRExQWStUalA0RXVOajkrRFdKNFJBTlhNNmROL0N5TEt6V0p3RmJ5QkVRQkJMVUlERm1RZHhYVWNxN3NUQ2dHSC9LUHB6ejZBemVoSUdOQTJrTm5qZXdmYmJQc3JZNnZ0b1R6NGZhMTZJQmNnWldpT1E2MGZZZnYrSG1GaHhCOTNSbjhQenkzRGRqckdkSmFtN01YQ1FCRVhrRERQR2NnVVd3WEFHZlYxZlcwQnVheTN5ODdnOXY5MjJFdzFiSVRjd2dTQUZROEpqNEg2WlhWRkxId0JtK1M0SEFyeDQ5VEo3UjlrS3h3OFd3UUtQazZCc1FRR1d6ZFlYby9HamRaT2pNaDgyRHBNZ0pqdHA5VVQ4Mzkxa0YrZUdva2pDSmJJTWx4QllyblZrdTJ0dk13OUhtdkpyQlFPV09GQUVUbG5WRGg5c1diaWdjY05NMUJuRWtpQWtrTEVoQkh0M0dXd1ZtZCs4ZDV2enhlL0U5TXl6N2N5THo0ZnFFU2lWMlZscytQeWVZbTJQUGsvRk1zZ0hEUG96V0lDcWdtN25BVHkvZ05rOXI2RW9uMGQ3OUVrMEZZY0lDQUhFRW9FUHY4cWpEN3lUVmNkZHc4UjRReldBTEJCZytXRm1Gci9LYkhNRlUrWHpDQW15Z3dVbzB4NzJQZlNYUEhEbjM3TGxLUTloMWlkRXdHRm0xeW82eDd5VnN2dEc2aGt3b0RQNk5oWm1MbWZaeGhZcFhZelhJQUdDYUNDOWkxNzlGelRYUVRyaFFzcE40SXZmQXVaWmtycGRjWkNnRTJWbmV6WmNJbUswT254MWR0YitMamU2ZU5VSysyRENqcTlkaEJDMDVBRFNpQVhLVmpTYVJqUWl4R0RIZ3IzVDRGbkFyMHA4MndXZHlGdGJJK0czVFRiZXVCQVFnQkFONVBNakxUNTN4NE82ZXRzQys4NC93ZFpPWWk5dGlPOHl5N2NpM2NoQjR0eFd5ejRTNGNRaVFPZzZ2UjU3VEZ5VmdqeVlYU1JZMVFBT2RHSjhxYVJySlB0b1UzUFF1U25ZRmFQUk5tV0RqRERZV2RWK3ZSblo0R3d6MjJCQU5aU1ZuZmlxbzQ3bHM1UE9WZlBMYk8yS1VkdE1YMkFHQlF3NkU5YzBkKzFkeGRyak50Rk9vRGhDWi85NTdIaGdLMGVmQzZFRzV4NEdpNzlPU2g4Z3BLY1IvZGNvdTZmUW40ZnNrQ0pRL3ozVWIyQnF6VTZhUG93c081Ymg0QUpjdS9EbXE3UW5CdlNaWi92V3R6TjI3R2wwSnpjeVdBVFo5VlJ6YjZiZHZvYk41NHFpQldxZ0dvSWl0RWYzc09mQW14aTNTTGQ5S1ZWL0Y2M3VWemo2TElqRk9sUmRnQVVRRUFNTXEzdkpkaFZyMWtKdUxjTW1uNG9xb0w0WlBJT1JHSENJR1ZORVRoSmdCdG45eThNQnJ4OGRzN2NGaFhkMm9oZzJmbVBPK25TUTNReTJEOU5rVTlrcGk0Mi9vR3lGaThwSWtBdHZ4TVNZblIrSytBa0x6WXRHMjNaQnV3eHZ5ejIxNjBhWVFaRkFVUFY3L3FtaXNEOW5WTGYxK3ZTbmU0NHNRTllWamV6dHBmSFVSbjRUc000c3ZNL0VpU0hCVEYvOWhVWDcwN0t0ajQ2MDJJWElOOXpWYko0YWkrL2ZjblM0c0JxSXhsVzBZM3pkdmdVK3VtM2Fqemp0S1A0TWJGTXRrR25Pczc4M2hQREpFT3hSU1JnY2lYZ2J4a3NGbHFLdGFLZjR3djVRVjUxNnJKNjB5am1oMm05WUVKVHNmbzllLzhoOUJ6YWV3Ukh6VTRRQ0ZGcUU4QWE4dW9taXVJV21ENTZoTE1EaWc3UkhIdVNXYTcvRXNQOVJUbm42czRnR2kvVzF5TjVJSE95a003R01oWVUzczdqNFVzUnFpbEFnUGs2T3YwNjczc3RSNjI4bmh4dkkya2gzL0NibUYxK0x1STN4TmVEaDZWVDlWeUdPUlBsbUd2OVRKbGJ0eElENTRWL1NhajhYZkNkemV4ZXhOdFRWV1VUZmdCbVlRVERvRFhmUTB6WW1XcEEybm9QN0NmaGdIeUhmam9tRGtqak14UHBBT0E0RHo5d2c4WDdWK3IyUlRuejVZcTBIZHMvbFB4d3A3VFBCbU9PN2drSGxYSHYzdy82eGlTbi8rVk0ycGJkWHMvWWtqMkk0RUtFS1c1NTZVdkhsbUppb2Vtb3JjMGdyUVFPUEhoajZXMm5zYjhxQ3g4VUlNUmk0OXRkWmYxQVVYREJXcG9tRlNyOWxGczRKQ0F2TTdacjFTL3Z6Zkh6RGVzTU1FRFJ1dDg3M21yY29wL2NFV0I4RHpYUlA5My9xT2kvT1B6bjlhbXZVbnJ3d0M1Z2U4dHBmQlh5Tko3b2I5RHVZbldqWWFaN0ZZclpOTWNOSzJKS0NqVmRtZEJuQWdCc2YwaEhiMkxMdWRhUURJMVFWeUtDejZtU09tZm9rN24rTS9FdDQvUWl0VWVpT2d6Y2c3V0RZK3oxeVBvbWlYRTlqZjRocEI2YjFwSGc1NHl1ZndYQUFaaEFOWEMrbmFtNGw4QjY2NDlCS0I4Z0xNTmQ3SjVWdW80cVJFYnVNd2NKdlkyRU1pMUNNWG9TcUR0aGx4QUFkemRJMGV5azczMkk0bk9PdXUySDk2dE5adFR3eHJDQVl4QVFMKzIvQ3JNL29hdWhWVDZaVmRKaHVycWV0QTNRaU9LUVVqZTg2eFl3cHdVN0hyMjBuZTB2MmRHNC82K3Z1L2lwZ0c5OWxnRmhpSE5JNHZVYTZIUGR2N2h2d2liRk9PRFVCdVJIakl4eVJIZW9HZ2tFTXNHdEczODdCMzFoMjdHb0pFT0RRYlVPM011N2RubG5aRVdYQlZMc2RPNVk1WGg1ZW9DaUtDRE56K1VQVCsvempyWlNRd0lBNnc5cEpaekQwYXdmeitlZVNhU3dtY3BYWk5UVnFwNjlaWWI4aUI4K09SOTZkVXZ4YU1FWWxHV0JMV0pLQkEzSjkyNHpUV09Lb1hEU25LOXVZSkFRRWd3UE42Tlc3ZTJ1Z3pkbVFRU3dSNE5EdWJNYjlyOGpGVnFJK0FmWVpvdCtIK25EMGFTejVCc3EzMEJ2c2d2QU5tajNnZmhSaCtUU2h1Uko1QllpR0FoZ2g2QjZLQkFhc1dINDZYNy95YzFqcksreDdBRFkrOCtYRStBY0l3d1JpU1laMitVdElaMUEzTXhSaEFta3psbjZmYmRzYVJJZWlPSldEREpCRHc0RDIyTGNZOW1CMkRrSjZNclJncW5NelRYMkFiQnlVa0ZqU3d1eDBDUXlmam03UERlTmgwNkRVRjFwOXZaekdwdVdBUUFZWk1NQU0zQ0VBM1RaUXNIV3Uxcy9VTWYvVlVkMXdTYitHUVEwR21FR0lRQXBmZjNSL2Z1M0tGZHpsQWpOUWdHWUlKMjJBWnB2NDBPZmh3ak1EenozZEx0MjV4K1JvNCtybHRpd1BJWFM0cDEzeUoxUHpScnNGcVFWMUF3WjBTMk00QkVrN0RKRmxyQmlOeFl2UDU0VmtWaXpPaVpCc0VlbW5nTE1FNDRENG5ob29ETTdpSUFPRHhXZ1UwVGhKQXR3Z3daZmpKWGRzRFNlMkNQa0lWQU1CTUJEUUREa2tkVTdFdXUraUhyd2FlQW1Ub3pmZ3dHSUZxSWY0QktWUDB4OUM1anE4dVk1UThEM0dJY3BRbE5DZFdNbmV2Y3Y0OXJjK3lyTE9JaXZYcm1DeXVJektEUk5nUEs3SlhlQmN6TUFkc1BzeHU0Mk5SNEg3OFpUaEZPb0tNRURnN0dCMGZDc1IyTHYvQkk1WXR4a0w4SjBicjZPM1B4TUxEa3BrRHBxazBPa2dZckNqcldNajkrM1JUZE1MZXZVNFRLOGVnN0lGYnBBTmhBaEJXQU5tY01SeVk2U0Evb0xZdk15MzF6bGUyV3U0aENYR1lXWlFOZjczL1lwTHk1WjJsUUZLak5BQ0JlaFYwQ21FQUFkaXlYbmRibnJwMXVubWo4cFJ6bDdmc25iZHdNNTV2M3JkbHZEb3lSc01HakhZQVRQVDBFcXdjc0t3RUZFdzNDQ0hRSVRWMGV5aVd1QUdFVWJLRUg3YUFRbk1EQVFPR0dBc0NZWUFBNVI5YXlmWTZRbDd1bVNVN1JybWVIQjcvYVRiQjFQZDU1QjdHM0RMWUxzNXJBMDJBVVRVZ0F0U3NaSHNMMmJQZ1J0b0hDeHZBRnREc0swWU1IbGNDMDhyeUwyRTZocUw0cUFRdXJnbWlVWEJzUDh3dmRZcnFQYk1zbjdsMVp6NkhGaTI1a0p5M3NoZ0hrTGdDUXdRSUNBVnNEQjdMYjNlYmxhdGhSQlBZWGJmQ2c2eUNGWkEvNUU3R2U2K25kRlRZTTJHMHhsckgwTnY1Z0JYL2VPOVBIdzNkRVk1S0NsdzBMR0JjQ29Zb0pGT1MremNtVCs5WTVlMnIxNWhkRHZHMm5GalVJRUJCcGhnVUl0MmFSeTV5cmg5dTVqdGlSUFc4Unl2N0hmZGpJQjRURERERzN2NHpsM0RmV3Vuak5GV29oMk1Ka0x0RUlFQTlJWXdWaksrNmFqNGYrZ3FuTFpKTjJYRjF3em1oUlZVRE5uYVRBTW02Z1hSekJtdDBwQTdWUTJybGhjMGJtUVhNUW5Qck9rTk9jNkNpSVlIV0JDcUJNa01ZNG1FeFlBbG8xOWw5VG1zN1diVDlkQS9WclR0OUJpdFcxWFFzUXlKNjY1WlBIVUh6czlpZ3hMeEJveXJnUUk0SHZRQnpLWndRVm1BNUR5ODZ5WXF3ZklXZE9JRk1ISUNzZDBEUVRWWWh6VlhnRTFCbUFWenpFYUFJNEVhWXovWURLazZGenBYY01IUFBrem5LQ0N0cDlvZmVaeUF3Q0Z5aUFrQ21leVIxTHFkWFBXWTJRTm1KNURLaER0WWdQYllrTVhaLzR0RmlDdUFBejlCTTRSKy8wWTJuN09MZGNkQktqa295UUJqTTlBMVJCYlVpeXl1bjdDN2psNExUMXBqekM3QVlBaG1QRUV3a0tCcUlEc0VDNzhJOXFjMWpFZUUrQjUzMFdtRlgxNDJtdTZxYy82d0F4bHdBUVlJcWd4akhWYTg4cUp3eFVtcndtbVBQbHkvZXFvZER5U3o1WFVqWW0zRmlyYVd6KzRXUVNLWkVWcWdpc01FVGFPT2pHeW9hSGZGY05GR2xCa0xMREVMZyt4L0hjdy9VZ1E3S3JzaVFnNHFaSG0yMGU2VzJaeHhTTGRwdkoyZCt3cnM5VGxETEEwR2tVVTFkelFUdTZEaUdKTE5ZM3dXdEEwTXBQdUJTOEhPQllFRTg0dC9RdEg2T0t1WFFmOVI4UFpUYVkrc1l2YitCWVl6TVBLa2ZSVGxQbUk4SHh6TVFBYjE0TXNFdTVKUTNJTDd5NGlEODBoanM3aFZUTzhCOTF0b3QycFNUTWhBQmpTUS9YTVU1VmZCZDdNNDJFSUlsN0ZtNVJ5akpYeml6NkN1dHZQY04yUjYvVVRUaDhYOUg2ZlYrUnVxR2FBL1RxNStnbDRGcWZVTkx2ejUvYVFDSkE1S0psb1c3R1F6UXhJbVkrajYxb1lqdU5iTjJEY0xHSmlCZUp3QkpUQjBRUXJXM2JEQy9xQXN3cHVHdFNYTU9jakVmaGtkb0NQQVhXUEhMRXZ2bmU5amNqNWlBZWU3aEtocWU4YnhhOEw3V3V2aUtmZmRuUi8rNWozNjBuT2VUcGhNaWd4QVlKVjRhb3hXRm9US2xVRUdCbklJMFg3WmpKY0hWQW1iMkQvamZ6YlJzdThvV2QrenVza2dpL1lnKzUyaklkNkpHV1lRZ2V5QlBaWE8zZEFORndmUmRURW0rVHRhcFI4UnpKNlIzZWgwd2ZZM2ZHYmZlYmRkYyt6TFZsRnJJNE9xRFdxRHdBS2dBOEJid2Y4bktRVkM2MU5VTTU5aDFTUzBPdEFmdlppaTlRSk1zTGh0R2NrZ05uTlEvakxLZDBBOGg1QVhxUHQvRDkxUEVGT21HWFlKY1JsaWlUYWpaZ3IzYWJKZGgvUk94RytoUEVXSWN5aThINXAzSTEra2JxQS8vQjNXcm9VN2J6akFvL2ZEMUJHdzdiWlBNNnlPcENqT29hbitsZjdzQjJsUFFRUjZ1MDlnWk9Sa0hERDdKdFVRcWlHUFNSYVlER1pQRm9jWndreXIreFcvR1F3cmpFSThyaFdNWllLVndPZGRmTWhkNThUQzNybHFNcHhmdTJnYVVRU2pjdDBXc0ZjWDBpdWFhSmZLUlJhMElxTmxOMzVnNlA2ekxuME83Q0dEbzhHZUVZTTluUkRHNkxuUHp1YzNiWnppb2VaQVhxYnhzSzFWaE9YRFNwalpCYVhDUjh6MEJvYzVscml6UEpxOXZTenQwaW9UT3kxalVHbjIwV20vdTczQnRyZmEzRCtZdFpPellEVFphM3BWbUJzMjlydXRrc3JNa0JoUFFiKzR2aDErVHpCbEJsbTZ5NHkzSjJPRjBCYUxScjJZU1NWM1BianFLVitibVZ2M1U4VGVrWmdEOGRtNDMwM09FQU9ZL1J1UjYybTFDdEE4MVg0SVU5QlVteWxiNzhmS1plUStMSC95WlJURFc2bWIvZURUaUxlVDJxTU1Gb2JNN3g2eStoVElmalRXL3pneG5Zc0RGaTZpR1o2QzZkOW9wWXp4eHpTNmltWndCR09qOTFPSDIvRGdaSWRXK2ZzVTZlMjBPckRub1JPcGRTV25QZzNXYk5wSHRyZXhzREJDcXpYSHlDUTBEaUhCL1BSR3hpWlhZUFZlY3ZNUU1yNWZHaG5WK29WNU95MUVEbkZBMkhHbHdsdWlBY1poeGlFdTdUWFpmVUxIaEVLWEUzaGE1YXlpaG1oR0E5UlovK1RHYjdqbjc4ajlFU3hlSEN3Y0QyS1lSVEFya29YbnVQakpBSDJEdG9LbGdpVXlXUFJMSnp2NmgxZ0VGcWZaLzhoMi9jMEp4M05xVVpKeUEyWjZoZEFXSS95clJMZFQ4RXpITnN1ZzB6S2lhV2VLZWduR0xRTXBET2E1Y2lUWXliVUxpMmJkTXY1R25YV2hZVmVEdW1aMnRzeE9HNDFLMmFHVzNTRHBKUlkwSU5oNVlBZ0RCd0wzcklyN0ZxazREVXRnQmpHK21leDNJbjBSTThpQ2ZqTmdjR0RBN0NPUWE1QzlpRmk4RDF0WWo5Y2dRV2ZpRXVycDkrTFZINUhDdlpnNStCejlQaXowbDdHT1g0RDhGaHBianNRaFJpSVc3NllaL2dJcDNvWFVZTTMxcEJMbTUyRlFRWHRxUGEzd3Y1Qy9GRE9ZbVliVG52M2J4UFlPZWdzZllkMnhNS3d5ZzJxZWxqMmJPaCtMNnk5b3QwUmFmUkc1QnVWdjRIb1l4UGRMdXc5dzNuaGJIWGN3UUlJaVFwRmdXQWwzc01BUThZamc5aWI3cmtRWWlZVTlIN04xTGhFRWpYRFE5WXREZjM4MFB0TnFCYzlBSSswSTJYOHBwWEM1c0dNZElRbHhTQlNNR2xDWU1XZzBiZGE4dm9VKzdkbndESjBJZXc3b1kyc2FmOXJxa2ZoenZWa25tOHpnekdEaFRBRVJFWU5SWmRFZmF1dFlsMWVueEhXR3lBZmNMZHRmeHpGN1Z0bTI4L3A5c1NTbVpPZTRjdzRZQnpsR1B3dDMvNWNRd3Bzd3RnMXJKbUlSbmhtQ2dhQVRLbVkwZGR2bjlUd29PUXZtT1VSYVRReVhJLzhZOEZWY0R6QjBHTTZ2WXpnNGhiWEhQNU1tUDVPOFdCSVRoNWhCTlE5MGZvR3lmU0dldndpMkMyOUVkL3hJeXZZRkRCZVBCa3BDQW5HWVo3QjRGbVg3TThEbG9Pc3c3U2Fta3JuK01YajlGTHJwZWVESDBUaVlnV2RvalhhbzYvY1NlRGJEM3Exa2IyaVh4K1AyWEZLTWlKOG0yRGl4UEEwMTROeE10bG1NSjBqYjl0blpaeHhuRE9ma0JCUUN3MkdqaGNWSzAyV3luZ1ZseWVZeFRIQmNDdUVDQzR6V1dWbmkzbVM2cndqY09aZTV2c3E2T3NyMlNlSXhCcGk0YnVENXhRRzdMSm05ME1GU01DUndpU0xTbTZuMWp3dVYzcnV5eGMwc2tVUnJNdERwR2lkTXNaQ0MvYXF5endxOU1rVXJ6STFHQW94YTBFN2E0NVd1N0EvMUoyUGRjRDhDQktwRXU5U09uTVBMOTgzejV4TnRQU3NSR0dZb0FramdFZ20vWjk5UUh5NGpsM2VEN1I5VWptQUNPQldKUThUaVBsdisyZnQxM0JiRTZZUWFDRFh1aHRrYWl1TE5vTmVRd241R0NxTllQc215SThhSVJhTHVRNjRiUWlFUWh4bGdFZXhvVEsvam9KeWgxWUdSU1JqTUMxRVRBaytrUUV4YlVINFhoQmtJczdoS3BwWXZ3MndFcjFuaW1EV0FFU0lNZW1BMlNvelBSLzU4WW9RRXVBQ0RZSmNnQjNPV09IQWRRZng3YWZQcThNRnFVWi9FYUVBS3dSWjdmZVlYS3kwZXVkS3lHcHNhVmt6R1NOdGdCT1RJcHB0R00yQUxLWEVBbUhmUnVLQmdpZkZFQmxuNmxzUC9rT3VLWVBhVW9ldW9FR3dZcEh2cXhyOWVLOXprTURTK1R6U3NNRG9KQXV6MnJEY09oL252S3NWbldORHhMUWlZcHQxMWl6SmZrN1RWekRLUE1TQUFCaUh3NE40NXZlVGhQZjZUVzlieWxMSmd3NkRDek5pWlROZVkrSHFXSGhMRzlFSk4zWWlVN01CSWFhOFJnU0FsRW90ZnFKOTE4MTM5NDFmUTdiK1NRTVpWQVlaa21MV1J1aGh0eWdRaDFCaUxWSXNEakV4SWdQTkVEUWdERXBBSUJybHV5RTJEbVRDV2lCK2dKZ0FkakJITUVwS0ljUWowYU9vaFpnNFlqekdXeUpBaVVDQUhVUU1OQjBrUmNFUWJiQmE0aVIvaS93SDNENVBNcGQydDVRQUFBQUJKUlU1RXJrSmdnZz09Iiwic3VwcG9ydGVkRXh0ZW5zaW9ucyI6W3siaWQiOiJobWFjLXNlY3JldCIsImZhaWxfaWZfdW5rbm93biI6ZmFsc2V9XSwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiRklET18yXzAiXSwiYWFndWlkIjoiZmJlZmRmNjgtZmU4Ni0wMTA2LTIxM2UtNGQ1ZmEyNGNiZTJlIn19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIwLTA3LTMwIiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJlU2VjdSBGSURPMsKuIE5GQyIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMTkxMDIyMDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjEuMSIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4zIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIwLTA3LTMwIn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMC0wNy0zMCJ9LHsiYWFndWlkIjoiNjJlNTRlOTgtYzIwOS00ZGYzLWI2OTItZGU3MWJiNmE4NTI4IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI2MmU1NGU5OC1jMjA5LTRkZjMtYjY5Mi1kZTcxYmI2YTg1MjgiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiWXViaUtleSA1IEZJUFMgU2VyaWVzIHdpdGggTkZDIFByZXZpZXcifSwiZGVzY3JpcHRpb24iOiJZdWJpS2V5IDUgRklQUyBTZXJpZXMgd2l0aCBORkMgUHJldmlldyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzIsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfSx7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDM4NHIxX2VjZHNhX3NoYTM4NF9yYXciLCJlZDI1NTE5X2VkZHNhX3NoYTUxMl9yYXciLCJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo4LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6OCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURLakNDQWhLZ0F3SUJBZ0lVZWYrVnZIa2NUUW5FRCsrd0pNL0l4elNVTGswd0RRWUpLb1pJaHZjTkFRRUxCUUF3SmpFa01DSUdBMVVFQXd3YldYVmlhV052SURJd01qTWdSa2xFVHlCUWNtVjJhV1YzSUVOQk1CNFhEVEl6TURreU5URXhNekkwTVZvWERUSTBNVEl6TVRFeE16STBNVm93SmpFa01DSUdBMVVFQXd3YldYVmlhV052SURJd01qTWdSa2xFVHlCUWNtVjJhV1YzSUVOQk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBb3VGTVRPS2FFMFl0ZXhPb2lzU3hwK0ViaTVJQTRlc0VTY3gxNmx6UWRxVjYvZVo4Mkt0SmVOWEV1TmtCVlpEcGMzMmdTdHV4TEJIOG1nc29IQkZhaTJEa2pmQm41cWJ3Ui9jNStzbmx3WnZqZ1ZBMGh6S3c5Q3dBZUF3UkQ1a3JXdDg4L0NWeUNrTWNnTFNHd1pzL3JqN0YvTHMzRWJnN01xTGJiUUo5Q296YmJMZEpVWUlIY1BwU1pQdG9NclpiNEd2bmk2aVZTOVV2Q0tncHFjNkxHUm1vWUdHNFpSM2xHSi9YUVpmdStHZUpXNjdpaW1Nai95b1hPd3h1Y3hpdlpIRms2Y1FTZ3d1d2lvZU5tNHd2azgzTGhTdVdjdGYya0F5UWNaN2tVbnBOZWUrZDRNZ3JtR1U0WE1GTGlUZ3V0YUIrZTlWOGQ1SlRrVU9IaUx6dGtRSURBUUFCbzFBd1RqQWRCZ05WSFE0RUZnUVVNNVNCNWJIclYranBJT01kSmw3dTdiY25UWTh3SHdZRFZSMGpCQmd3Rm9BVU01U0I1YkhyVitqcElPTWRKbDd1N2JjblRZOHdEQVlEVlIwVEJBVXdBd0VCL3pBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQUNvd1IzS1RMZmlkSnlRRk5xRUZmVXJmWjlhYTllZ3BPUXROUkpkTFN0SjZ4dTJXZkx3dkc0b2pHSmxCS05uZmE1REljeVFZZi84cUo0ZWxpQVZlTlh1WW1lTW1nTmdaWnl1WTZHMXlXQ0QyVjNzRDZaNHVqM1NiYURPSGozZ0h2c3pnUWhyaFQxaC9wdUhRa242K2hZS0FwNzdrTTdJYzZBWi9SRmJqcG1MTGsyRDBzRTFselQvMDJpK0JoN004c21haURaOSsrSkd6eGVTdW44VzFIbGVaVW0ycUtHbVJhNFhQZHJ5VDd4NktHVUduVTRhM2JwVW1WZVk5clEvc2ZNZDVaVG9vKzN1bkZXRHpvVlYydk51OCsrVkxDOXpvNDBGYUtRTHI5VkFKREo0eUxFTlI3S3JtVjhMMGNDWEtKR1pXQVd0RzVSR1RtSEloZCtuQjQxZz09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWZDQVlBQUFDR1ZzK01BQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBSFlZQUFCMkdBVjJpRTRFQUFBYk5TVVJCVkZoSHBWZDdUTlYxRkQvM2Q1OXdlUVNJZ1M5QVFBWGNGTEFRWmk5ZnBlVnoxdFkvV1RacjVXeHBjN1c1a25MYTVqSTNaODVzclMybk0yc2p0V3daUzdJVUg0SDR4Q25FUXg0REFaRjc0Vjd1czg4NXY5L2xJbkJ2VkovQjRQdjludS81bnUvNW52TTU1NmZ6QS9RdjBIYi9JclgzVkZLUG80NWNubTRpblVJV1l3TEZSbVpRVXV3akZHL04xaVJIaDFFWjBOUlZSdWRxdDFCZCsyblNLeVMvT2h5czArbGszZS8za1E5cXZENFpVdGE0VlZTVXVZMGVpcHlpVGhBZm9jb09SVmdEdXV3M3FLUmlBZDNyYmNFdGpUallJb2Y2V2FIc0NtelZQV0NNeCtjZ2g4dExxV01LYU1Xc1VqTHFvMlJ0SklRMG9Pem1lcnBRdTRlc1pnc09Oa0d4SDdkMGtkdlRUMTdzNE9NVTdWSThaaGpnR2FNK0FxOWlFTnU4UGlmMXVkejA3TXd2S1dmOEdsVm9DRVkwNFBDNVdkVGFYWUZiUjh2TnZMNSszS2dmYjV4Tk15YTlSYW1KaXluYU1sR1RWdEZscjZiYTl1K3BxbkVYNHVNdVJSZ2pTWUVock43dXRGRmU2bHFhbDdOZmt3NWltQUdIeW5QcGJrOFZtWTB4c3RucHRsRkNWQ1l0elR1Qk44M1FwTUxqVHRldmRQelNVbko3ZThta2p4WjM5ZlhiS0RmbGRacWJ2VStUVWdHbkJWRjZmUTJpUEhnNFcxNlVXVXd2emJrMTZzTVpFK1BuMHB2ejdKU2V1QXllczhsY3BDbWFLdW8vcCtxV3IyVWN3SUFIV3J2UDBZRXpoWEF0TEFic3NIaHA3aUdhbXZ5aWpQOHJ5cXJYVVdYOVhvb3d4eUF1Zk5CcnA0M1BPQkZYWmxrZjhNRFJpcWNweW93QXdwdXoyeCtmV3Z6L0R0ZGU5c21zenlndGNSNkMxd2JkekJsNk9scTVXTllZNG9HYXRoSk1ya1RFeDBqQVJTSEFWcys1cllrUU5YYitRZ2ZQTHNRNmdYeUluc3JlUWZtcG03UlZGWWZMODZuMWZpVU9rWXZTaGtVUHh2YnVrem95NksxaWhNMWhvM1h6VzZFdlNmWEErZHBpV0dhV2QrZG9Yekx6bUd3S1lGTENBc1JBbFBCQWhNbENGWFU3dEJVVlByOEhnVmNKSFdxK0YwMHBscitETVRkclA0enZ4WTExa05NaHhUK1NlVEdnK2Q0VjVMUUppdHlVR0pOQjhWRlpzamdZQlpNL0lJL1hDVGtqMHF5RE9wRjJBVlExN0NJalVwL0RuVDFVa0w1RjVnZGorc1Mxd2cxZ0UzZ2lnbTYwZkNYelNuUFhieUFQYklYditJRHBFMTZUaGFISVM5c2t5aGxtTUU1RjNjZnFBS2hxMkMwRTVQSDFnWWFYYUxQRGtaRzBIREpPbktXSHA1MUkwejVTT3V4OGUxV0F1WnpkSFFyVGtwOFRtalhvSStsYTB3R1pzenVicWJPM2lmUTZBL1c3dlZTWXNWM21SMEpLd2tLYzRXSGlCa21SOEkzQ0NnSTg3b09MNHF6VDVQK1JVSkJlakVPZ0FQSzhoWVB6YXRNK2VJVHAySU85eVRRbWVyb21QUnh4MXF4QWNzaWxlL3ViU2VFYmNXUUdZRUNnaGNMWTJIeUtqb2dqSDI1aE1wanBVdjFPdWdsaTRlaDJlUncwTzMyYkpqa3l1Q2dOemcwdnpsWU1TaVNzMHVvbzRNRzdoTU9qQ0VhWDF5RkUwblN2akJ6dVRuRXBLODZaOElvcUZBSXVidzhrZzlBckVhUkVXU1pJK2pINFhicDZnOUU5RW5KVDNvYVJ6RE4rTVVKQlFESG41NmE4b1VtRUJ1c094QnMvTjUrdEpFYlBrQUZEajhVR3ZPcy9JV3ZjU2dsR0JodlM3L0ZUWWZwV0dZZERZOGZQQXhXU0EzNXNUQzRwNCtMbTRBYXFJb1BlUXRmdWZLNkpoMFpoeGxic1VYT1NtWE5pZkQ1WlRBa3lEb2ZiYmNjbHhuQThXTkFxeENiUk55a2hYeFFwYUR3NjdmWFVZYnNpRzBLaHR2Mm9lSXZoOHJoUU1ZT2NFQXFYRy9lSSt6bmdPYzV5eHI4cTgySUFNMWMvRkxGT3BscXU1ZUZRWHJNWnpHY1ZDalliTFdHNUk0QlQxZXVScmxieHROT3RNaXREREVoTFhJSXluQUF2dU9FV0UzWDNOZEFmdDk0VmdhRzQyWElRdDBaWDZQZUNFL3FRRmU5cks2SHg3WVU1MEt2SDdmVzRmUytxN0tLQkp4c2dnQlg1cFNBR2gxaklyVmg1elE2dzNSZmFhaEJYbS9hQ2JDWlRqQ1VGVVR5V1pxVzlwNjJNakpQWFZxT3JQZ01PNE52NzRHa2Yrb3dmdE5WQkRRbmpGSnFIU3cxN3BYdmhXVzVLWnFlL1E0OU4vVVNUQ0FWV29RWEZJSEJIWFhlM0ZQclVEc3VHRG10Ri9oSEtUSHBla3hoaUFPUEkrU0pxNlM2SEY0STlZV3prQkpUbzQ2aVVNeldwOFBpci9SaWR1THhLWXNTa3NWOHZMbE9RdmhHWDJZbFIwT0JoQmpDK3UvZ0VjdlkwQXBLN1lrNDFOeGpQU1FuV0ZIVEY2NlVyamdldkI4Q3U1YStsMnZZU1JQdHVWRG83M2hoZE1TSG5VWDd0VGpzVlpHeEFsL1dwdGlPSUVRMWduTDI5bVg2L3RSMXRtbGtZajhXNFgrQ1NqV2NVREdZMU5wUy9DN2hTS3FpTUxNL2wyUW1TV1o3M0RkeitnaW84QkNFTllQUTQ2cW5rendYVWJxdkJreGpVUXNXZlpGZ2J1bzNyQWYrd043ak9POTAreW54NFBpM0wrMG5ZTDFTY2hEVWdBUDRnUFYvN0lkMXErMUhTaG11R2tJcVdSUGd5eE1GcVA4SGZqVG5qWHdZNWJRZmJKY3Q2T0l6S2dNSG90Ri9IZTFlZ3NheEhTcUc2d2ZkbVE1eDhOeVRGRnFCY3AyaVNvd0hSM3lrNSszNmhGN3ZYQUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIkZJRE9fMl8wIiwiRklET18yXzFfUFJFIiwiRklET18yXzEiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwibGFyZ2VCbG9iS2V5IiwiY3JlZEJsb2IiLCJtaW5QaW5MZW5ndGgiXSwiYWFndWlkIjoiNjJlNTRlOThjMjA5NGRmM2I2OTJkZTcxYmI2YTg1MjgiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJsYXJnZUJsb2JzIjp0cnVlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6ZmFsc2UsImFsd2F5c1V2Ijp0cnVlfSwibWF4TXNnU2l6ZSI6MTI4MCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMl0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6OCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoxMjgsInRyYW5zcG9ydHMiOlsibmZjIiwidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN30seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTh9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi0zNX1dLCJtYXhTZXJpYWxpemVkTGFyZ2VCbG9iQXJyYXkiOjQwOTYsIm1pblBJTkxlbmd0aCI6OCwiZmlybXdhcmVWZXJzaW9uIjozMjk0NzIsIm1heENyZWRCbG9iTGVuZ3RoIjozMiwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjEsImNlcnRpZmljYXRpb25zIjp7IkZJUFMtQ01WUC0yIjoyLCJGSVBTLUNNVlAtMi1QSFkiOjN9LCJyZW1haW5pbmdEaXNjb3ZlcmFibGVDcmVkZW50aWFscyI6MTAwfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTA0LTA3In1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNC0wNC0wNyJ9LHsiYWFndWlkIjoiYWIzMmYwYzYtMjIzOS1hZmJiLWM0NzAtZDJlZjRlMjU0ZGI3IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiJhYjMyZjBjNi0yMjM5LWFmYmItYzQ3MC1kMmVmNGUyNTRkYjciLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiVE9LRU4yIEZJRE8yIFNlY3VyaXR5IEtleSJ9LCJkZXNjcmlwdGlvbiI6IlRPS0VOMiBGSURPMiBTZWN1cml0eSBLZXkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MiwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfaW50ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MTAsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDTERDQ0FkSUNDUUN2MXZscUtlVzVlakFLQmdncWhrak9QUVFEQWpDQm5ERUxNQWtHQTFVRUJoTUNRMGd4RHpBTkJnTlZCQWdNQmtkbGJtVjJZVEVRTUE0R0ExVUVCd3dIVm1WeWMyOXBlREVQTUEwR0ExVUVDZ3dHVkU5TFJVNHlNU0l3SUFZRFZRUUxEQmxCZFhSb1pXNTBhV05oZEc5eUlFRjBkR1Z6ZEdGMGFXOXVNUk13RVFZRFZRUUREQXAwYjJ0bGJqSXVZMjl0TVNBd0hnWUpLb1pJaHZjTkFRa0JGaEZ2Wm1acFkyVkFkRzlyWlc0eUxtTnZiVEFnRncweE9UQTFNVFF3TmpVME1qRmFHQTh5TURjeU1EVXlNREEyTlRReU1Wb3dnWnd4Q3pBSkJnTlZCQVlUQWtOSU1ROHdEUVlEVlFRSURBWkhaVzVsZG1FeEVEQU9CZ05WQkFjTUIxWmxjbk52YVhneER6QU5CZ05WQkFvTUJsUlBTMFZPTWpFaU1DQUdBMVVFQ3d3WlFYVjBhR1Z1ZEdsallYUnZjaUJCZEhSbGMzUmhkR2x2YmpFVE1CRUdBMVVFQXd3S2RHOXJaVzR5TG1OdmJURWdNQjRHQ1NxR1NJYjNEUUVKQVJZUmIyWm1hV05sUUhSdmEyVnVNaTVqYjIwd1dUQVRCZ2NxaGtqT1BRSUJCZ2dxaGtqT1BRTUJCd05DQUFUamJTWmQ2MS83SGFveHlveGwzeWg2dGprM3RMNkFTQ0N1bS8ybmRxODZEUUx0K0RVNk1WNmY0LysrdXBBUGJUWlU2aldudklMb3Z0bnNSZ0NXd1VZUk1Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lFaU5mTnBBTFpJSDhuMVZ5WHBGeUxJekRlWkVaT0NSaUtoNDR1bmlhQlpQQWlFQW9kYW5PbFBVRUNqR0hFZitFNGRUS2t5Q2xwTGk0SmRFSmtWSFFwSVhFSkE9Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWdDQVlBQUFCemVucjBBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBS1QybERRMUJRYUc5MGIzTm9iM0FnU1VORElIQnliMlpwYkdVQUFIamFuVk5uVkZQcEZqMzMzdlJDUzRpQWxFdHZVaFVJSUZKQ2k0QVVrU1lxSVFrUVNvZ2hvZGtWVWNFUlJVVUVHOGlnaUFPT2pvQ01GVkVzRElvSzJBZmtJYUtPZzZPSWlzcjc0WHVqYTlhODkrYk4vclhYUHVlczg1Mnp6d2ZBQ0F5V1NETlJOWUFNcVVJZUVlQ0R4OFRHNGVRdVFJRUtKSEFBRUFpelpDRnovU01CQVBoK1BEd3JJc0FIdmdBQmVOTUxDQURBVFp2QU1CeUgvdy9xUXBsY0FZQ0VBY0Iwa1RoTENJQVVBRUI2amtLbUFFQkdBWUNkbUNaVEFLQUVBR0RMWTJMakFGQXRBR0FuZitiVEFJQ2QrSmw3QVFCYmxDRVZBYUNSQUNBVFpZaEVBR2c3QUt6UFZvcEZBRmd3QUJSbVM4UTVBTmd0QURCSlYyWklBTEMzQU1ET0VBdXlBQWdNQURCUmlJVXBBQVI3QUdESUl5TjRBSVNaQUJSRzhsYzg4U3V1RU9jcUFBQjRtYkk4dVNRNVJZRmJDQzF4QjFkWExoNG96a2tYS3hRMllRSmhta0F1d25tWkdUS0JOQS9nODh3QUFLQ1JGUkhnZy9QOWVNNE9yczdPTm82MkRsOHQ2cjhHL3lKaVl1UCs1YytyY0VBQUFPRjBmdEgrTEMrekdvQTdCb0J0L3FJbDdnUm9YZ3VnZGZlTFpySVBRTFVBb09uYVYvTncrSDQ4UEVXaGtMbloyZVhrNU5oS3hFSmJZY3BYZmY1bndsL0FWLzFzK1g0OC9QZjE0TDdpSklFeVhZRkhCUGpnd3N6MFRLVWN6NUlKaEdMYzVvOUgvTGNMLy93ZDB5TEVTV0s1V0NvVTQxRVNjWTVFbW96ek1xVWlpVUtTS2NVbDB2OWs0dDhzK3dNKzN6VUFzR28rQVh1UkxhaGRZd1AyU3ljUVdIVEE0dmNBQVBLN2I4SFVLQWdEZ0dpRDRjOTMvKzgvL1VlZ0pRQ0Faa21TY1FBQVhrUWtMbFRLc3ovSENBQUFSS0NCS3JCQkcvVEJHQ3pBQmh6QkJkekJDL3hnTm9SQ0pNVENRaEJDQ21TQUhISmdLYXlDUWlpR3piQWRLbUF2MUVBZE5NQlJhSWFUY0E0dXdsVzREajF3RC9waENKN0JLTHlCQ1FSQnlBZ1RZU0hhaUFGaWlsZ2pqZ2dYbVlYNEljRklCQktMSkNESmlCUlJJa3VSTlVneFVvcFVJRlZJSGZJOWNnSTVoMXhHdXBFN3lBQXlndnlHdkVjeGxJR3lVVDNVRExWRHVhZzNHb1JHb2d2UVpIUXhtbzhXb0p2UWNyUWFQWXcyb2VmUXEyZ1AybzgrUThjd3dPZ1lCelBFYkRBdXhzTkNzVGdzQ1pOank3RWlyQXlyeGhxd1Zxd0R1NG4xWTgreGR3UVNnVVhBQ1RZRWQwSWdZUjVCU0ZoTVdFN1lTS2dnSENRMEVkb0pOd2tEaEZIQ0p5S1RxRXUwSnJvUitjUVlZakl4aDFoSUxDUFdFbzhUTHhCN2lFUEVOeVFTaVVNeUo3bVFBa214cEZUU0V0SkcwbTVTSStrc3FaczBTQm9qazhuYVpHdXlCem1VTENBcnlJWGtuZVRENURQa0crUWg4bHNLbldKQWNhVDRVK0lvVXNwcVNobmxFT1UwNVFabG1ESkJWYU9hVXQyb29WUVJOWTlhUXEyaHRsS3ZVWWVvRXpSMW1qbk5neFpKUzZXdG9wWFRHbWdYYVBkcHIraDB1aEhkbFI1T2w5Qlgwc3ZwUitpWDZBUDBkd3dOaGhXRHg0aG5LQm1iR0FjWVp4bDNHSytZVEtZWjA0c1p4MVF3TnpIcm1PZVpENWx2VlZncXRpcDhGWkhLQ3BWS2xTYVZHeW92VkttcXBxcmVxZ3RWODFYTFZJK3BYbE45cmtaVk0xUGpxUW5VbHF0VnFwMVE2MU1iVTJlcE82aUhxbWVvYjFRL3BINVovWWtHV2NOTXcwOURwRkdnc1YvanZNWWdDMk1aczNnc0lXc05xNFoxZ1RYRUpySE4yWHgyS3J1WS9SMjdpejJxcWFFNVF6TktNMWV6VXZPVVpqOEg0NWh4K0p4MFRnbm5LS2VYODM2SzNoVHZLZUlwRzZZMFRMa3haVnhycXBhWGxsaXJTS3RScTBmcnZUYXU3YWVkcHIxRnUxbjdnUTVCeDBvblhDZEhaNC9PQlozblU5bFQzYWNLcHhaTlBUcjFyaTZxYTZVYm9idEVkNzl1cCs2WW5yNWVnSjVNYjZmZWViM24raHg5TC8xVS9XMzZwL1ZIREZnR3N3d2tCdHNNemhnOHhUVnhiendkTDhmYjhWRkRYY05BUTZWaGxXR1g0WVNSdWRFOG85VkdqVVlQakduR1hPTWs0MjNHYmNhakpnWW1JU1pMVGVwTjdwcFNUYm1tS2FZN1REdE14ODNNemFMTjFwazFtejB4MXpMbm0rZWIxNXZmdDJCYWVGb3N0cWkydUdWSnN1UmFwbG51dHJ4dWhWbzVXYVZZVlZwZHMwYXRuYTBsMXJ1dHU2Y1JwN2xPazA2cm50Wm53N0R4dHNtMnFiY1pzT1hZQnR1dXRtMjJmV0ZuWWhkbnQ4V3V3KzZUdlpOOXVuMk4vVDBIRFlmWkRxc2RXaDErYzdSeUZEcFdPdDZhenB6dVAzM0Y5SmJwTDJkWXp4RFAyRFBqdGhQTEtjUnBuVk9iMDBkbkYyZTVjNFB6aUl1SlM0TExMcGMrTHBzYnh0M0l2ZVJLZFBWeFhlRjYwdldkbTdPYnd1Mm8yNi91TnU1cDdvZmNuOHcwbnltZVdUTnowTVBJUStCUjVkRS9DNStWTUd2ZnJINVBRMCtCWjdYbkl5OWpMNUZYcmRld3Q2VjNxdmRoN3hjKzlqNXluK00rNHp3MzNqTGVXVi9NTjhDM3lMZkxUOE52bmwrRjMwTi9JLzlrLzNyLzBRQ25nQ1VCWndPSmdVR0JXd0w3K0hwOEliK09QenJiWmZheTJlMUJqS0M1UVJWQmo0S3RndVhCclNGb3lPeVFyU0gzNTVqT2tjNXBEb1ZRZnVqVzBBZGg1bUdMdzM0TUo0V0hoVmVHUDQ1d2lGZ2EwVEdYTlhmUjNFTnozMFQ2UkpaRTNwdG5NVTg1cnkxS05TbytxaTVxUE5vM3VqUzZQOFl1WmxuTTFWaWRXRWxzU3h3NUxpcXVObTVzdnQvODdmT0g0cDNpQytON0Y1Z3Z5RjF3ZWFIT3d2U0ZweGFwTGhJc09wWkFUSWhPT0pUd1FSQXFxQmFNSmZJVGR5V09Dbm5DSGNKbklpL1JOdEdJMkVOY0toNU84a2dxVFhxUzdKRzhOWGtreFRPbExPVzVoQ2Vwa0x4TURVemRtenFlRnBwMklHMHlQVHE5TVlPU2taQnhRcW9oVFpPMlorcG41bVoyeTZ4bGhiTCt4VzZMdHk4ZWxRZkphN09RckFWWkxRcTJRcWJvVkZvbzF5b0hzbWRsVjJhL3pZbktPWmFybml2TjdjeXp5dHVRTjV6dm4vL3RFc0lTNFpLMnBZWkxWeTBkV09hOXJHbzVzanh4ZWRzSzR4VUZLNFpXQnF3OHVJcTJLbTNWVDZ2dFY1ZXVmcjBtZWsxcmdWN0J5b0xCdFFGcjZ3dFZDdVdGZmV2YzErMWRUMWd2V2QrMVlmcUduUnMrRlltS3JoVGJGNWNWZjlnbzNIamxHNGR2eXIrWjNKUzBxYXZFdVdUUFp0Sm02ZWJlTFo1YkRwYXFsK2FYRG00TjJkcTBEZDlXdE8zMTlrWGJMNWZOS051N2c3WkR1YU8vUExpOFphZkp6czA3UDFTa1ZQUlUrbFEyN3RMZHRXSFgrRzdSN2h0N3ZQWTA3TlhiVzd6My9UN0p2dHRWQVZWTjFXYlZaZnRKKzdQM1A2NkpxdW40bHZ0dFhhMU9iWEh0eHdQU0EvMEhJdzYyMTduVTFSM1NQVlJTajlZcjYwY094eCsrL3AzdmR5ME5OZzFWalp6RzRpTndSSG5rNmZjSjMvY2VEVHJhZG94N3JPRUgweDkySFdjZEwycENtdkthUnB0VG12dGJZbHU2VDh3KzBkYnEzbnI4UjlzZkQ1dzBQRmw1U3ZOVXlXbmE2WUxUazJmeXo0eWRsWjE5Zmk3NTNHRGJvclo3NTJQTzMyb1BiKys2RUhUaDBrWC9pK2M3dkR2T1hQSzRkUEt5MitVVFY3aFhtcTg2WDIzcWRPbzgvcFBUVDhlN25MdWFycmxjYTdudWVyMjFlMmIzNlJ1ZU44N2Q5TDE1OFJiLzF0V2VPVDNkdmZONmIvZkY5L1hmRnQxK2NpZjl6c3U3MlhjbjdxMjhUN3hmOUVEdFFkbEQzWWZWUDF2KzNOanYzSDlxd0hlZzg5SGNSL2NHaFlQUC9wSDFqdzlEQlkrWmo4dUdEWWJybmpnK09UbmlQM0w5NmZ5blE4OWt6eWFlRi82aS9zdXVGeFl2ZnZqVjY5Zk8wWmpSb1pmeWw1Ty9iWHlsL2VyQTZ4bXYyOGJDeGg2K3lYZ3pNVjcwVnZ2dHdYZmNkeDN2bzk4UFQrUjhJSDhvLzJqNXNmVlQwS2Y3a3htVGsvOEVBNWp6L0dNekxkc0FBQUFnWTBoU1RRQUFlaVVBQUlDREFBRDUvd0FBZ09rQUFIVXdBQURxWUFBQU9wZ0FBQmR2a2wvRlJnQUFBK2RKUkVGVWVOckVsMDlvWEZVVXhuLzN2dmZtanpPZG1aY21jU2FrbVV5R3FvUW9sQlFYTVYySi83RHVsTFlHRkhGUk4wSjBJUWhTVUFwMjJZMHV0QlpMc2FKWU1HaEFUVjFJTnhKcjFaS21OcVVZTTVrWWsya21NekdabWZmdnVoaEp0VUxtalE3TldiNTMzemtmM3puZmQ5NFYwNWwrZ01lQlY0Rjd1VDF4Q1RnR2pJdnBUUDlEd0Zkc1R6d3NnZU5zWHh5WFFIWWJBV1Ixd0FhQ3ZqOFJBcFRDVzkvQUxaZkJkUkdCQUZvaWpnZ0dRYWxtQU5nNjRQbXVyZXU0eFNKMllabEF1cGZvbnZzUXdTQnVjWlhxNVN1NCtYbU03bDJJVUFoYzEwOUtUMittdUwzNE96SWNvdXZZVWN4blJ6Q1N5YzMzMWFuTEZONStsNVYzVGlJVGNYVFRSUGtBSWFZei9TVWcxdWlnV3l3UzZFMlQvWG9jcmEwTmdJM3Z2c2VhblNQWTEwdDRjQThBeFE4K0l2ZmNZYlEyRXhtSk5HcEoyVDhEbW81eVhhejVCZlNOQ3JuREw3TDI1VG1VVzBWcUlTTERRL1NjUG9FNWNnQ25VQ0EvK2pMQnZ0MnRZMERvT3M3S0NnaUpub2hUKzJVV295dUZDQmdveTZHYXUwcGtZQys3Sjg4and5Rm05dTZqTm5NTnZYM25sZ3hJdnd3b3gwRkxKSkFCQTdkVUp0Q2JSdWc2ZUFxaGE0U3pBNnhQWGFENC9ta0FZdnNmdzExYmJaaFhOcVZhejBNRWc4aG9CTHhieEtNVUdpSFd2NTBFSU5pWEJ0d1dBNUFTWlZrbzJ3WXAvK1VQQ2hzdEdxMWpyVnErVXVyTkdKQ3lMRlROUWprTzB2TVE0WENkQ1NsUkd4c29QQklIbndTZzhzT1BDQUl0QkFEWXVUbDZUcjBIbWtaKzlCV2tsQWpEUUZrV1hxVks2c2diUlBZOWdMTjhnOUxaTWZUT3poYTFRRXJzWEk3STBCRG1NMDlqamh3Z2N2OGdUdUZHbmU1U21VQW1UZkwxMXdESVBmOEN6dkl5V214SGl4aHdYSlJ0a3p4NkJJQzFMeWI0NDV2em14TFRFZ21zdVhsV1RwN0NtcDJqL05ubkJQcXlMWEpDSWJEemVTTERRMlRQalFPS21jRmhxbFBUR0x1NjZ6TWdCSGdLWjJrSjVYa1lxZVRtMG1vUVBweFFLYnphT3VhaEF3Q1VQaGxqL2VJa29jemRONldvRkVqUU90b1JRdHg4MWdvVmVKVUtnVlFQc2YyUEFyQjY5bE1FQmdqZzd6VVVDTm1jcW4wTm9Wc3FFK3kvQi8zT1RwUmxVL25wRW5yYnptYjMvbjhIb0NwVmd0bE1mZVZlK1JsbmNRa1pEclhzbDZneEFGeU03cTY2RDh3djRLNnQxWGRBaThKSEpnOHRZZGJiVVNoUWM4cndxM3ZMQVB3enREWVR2YjBEWlZ1dEFTRHZDQU1RZmVSQjdqcnpNWEpIZEd0dGpZMno4dUVaak01VUt3QW9NT3JIakdTU3hLR25HdnZXY29HbEUyOWhrUHIvUnFScU5ZeDBEM3BIdSsrK09yOHRZdWNYNm4vSlBveG95MEdVa1NpMXE5ZW9YTGpvRzRBV2o2T1pKc3F4RzRwQWI5UUc1ZGhvOFJoYVBOYlVkUHNvRG1CSTRQbzIzb3l1UytDbGJRUXdxZ01Ud0JOL1hjOEhibFBoS2VCTllPTFBBUURJc1hxYnNxWktHd0FBQUFCSlJVNUVya0pnZ2c9PSIsInN1cHBvcnRlZEV4dGVuc2lvbnMiOlt7ImlkIjoiaG1hYy1zZWNyZXQiLCJmYWlsX2lmX3Vua25vd24iOmZhbHNlfV0sImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzFfUFJFIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiJhYjMyZjBjNjIyMzlhZmJiYzQ3MGQyZWY0ZTI1NGRiNyIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlfSwibWF4TXNnU2l6ZSI6MjA0OCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6OCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjo5NiwidHJhbnNwb3J0cyI6WyJ1c2IiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fV19fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAxOS0xMi0wMyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyLCJ1cmwiOiJodHRwczovL3d3dy50b2tlbjIuY29tIiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJUT0tFTjIgRklETzIgU2VjdXJpdHkgS2V5IiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAxOTEyMDMwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMTktMTItMTgiLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IlRPS0VOMiBUMkYyLUFMVSIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMTkxMjAzMDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjAuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4wLjAifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIzLTAzLTAxIn0seyJhYWd1aWQiOiJjZTZiZjk3Zi05ZjY5LTRiYTctOTAzMi05N2FkYzZjYTVjZjEiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6ImNlNmJmOTdmLTlmNjktNGJhNy05MDMyLTk3YWRjNmNhNWNmMSIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IDUgRklQUyBTZXJpZXMgd2l0aCBORkMifSwiZGVzY3JpcHRpb24iOiJZdWJpS2V5IDUgRklQUyBTZXJpZXMgd2l0aCBORkMgKFJDIFByZXZpZXcpIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NiwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9LHsibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMzg0cjFfZWNkc2Ffc2hhMzg0X3JhdyIsImVkMjU1MTlfZWRkc2Ffc2hhNTEyX3JhdyIsInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo4LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6OCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlETXpDQ0FodWdBd0lCQWdJVVNPRWpUZi8veXFSZlBXN1FxOHF0SXlDckFnOHdEUVlKS29aSWh2Y05BUUVMQlFBd0x6RXRNQ3NHQTFVRUF3d2tXWFZpYVdOdklFWkpSRThnVW05dmRDQkRRU0JUWlhKcFlXd2dORFV3TWpBek5UVTJNQ0FYRFRJME1EVXdNVEF3TURBd01Gb1lEekl3TmpBd05ETXdNREF3TURBd1dqQXZNUzB3S3dZRFZRUUREQ1JaZFdKcFkyOGdSa2xFVHlCU2IyOTBJRU5CSUZObGNtbGhiQ0EwTlRBeU1ETTFOVFl3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRQ2R2bDI3dzJndTFmUFhlRUZiSWRxeDBCYWx2VkRWV3JRUEo3SHF2aXVFdFpIbHhTTHhTRnRjWHBUb2x2THZvZjhmNHRNZXJRVGtWR3pjbVl6bTFFQlQ0SUp1TW1vRXFma0VFaFdwc0FETUZyalprcWxaWTlFcXhRekxvVkVFb25FNW9HeFNkVkN4Q2NMSWFja3B5Ui9DQ1h2ajFCdC9oVGdFOWhUbEY0cFJxeE1reDNwbEY3eThkRFpsUkhXczd2Ym5obUJDR2VJMFpQRVE2bmwybUNnMnI3NGFkRjJ1Nks5cnJMZmhCQzNRTEU4RVByZ3FVc0kraGt1cTJ0SzRNMlNNT3A4dVVWVmtxVWV1M2gwa3IzV1ZJMFcwMnBrZ3JPZ2lGS0xGTmtTcmJZaGRqTUJEajVpem1xZmM5eEpSS29EWDYxMnFkOFpHVkhwVDVBWUZYKzFoQWdNQkFBR2pSVEJETUIwR0ExVWREZ1FXQkJUWnlVNURpUS9hMlVFZ0U3cUJLMHpoSXNSTlJqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUFNQTRHQTFVZER3RUIvd1FFQXdJQkJqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFYdm5CNFNMdVVKZllNU1ZHQWhzc0wvU21XbGkzRlNjY2d4eWR2S2xBQ2NpZElJV0tRcWEzcS9RU1VFUXpDOURnRWZNZ3I3aUMxQmtUWmJJTGJvVjZVWjVrbk5zdmpFWld1TWVvZ0o4dGdaczFoVnZLd1ppendKK21FY21zamhJckJZdW9MMVQ2eXJPSnZLRmcxanYrQ3k0WndBOUJway9WM1VPaXIxVnlLOGRDdHlIdTZ2Zm9zb3RBZFl4OEZBdVIyNDNnUlRNVjZKeDhKZGlnMkpESUFRTWx6VmVEcFNVSFgvSzJIWFJIeEh3ZmdqYmdVampCdS83MnI4T2ZlaHloekhYSTNLOENGRmRmbE8rOG5FT0pLM3k4RjFpdmdTNXVOLzhTbWNZdy9TVFFZd2hyeFB1d3ozblA4YmFNdW00QkIybm5ZbXBCNjBzWDNibDVrOFFVU3c9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFmQ0FZQUFBQ0dWcytNQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUhZWUFBQjJHQVYyaUU0RUFBQWJOU1VSQlZGaEhwVmQ3VE5WMUZELzNkNTl3ZVFTSWdTOUFRQVhjRkxBUVppOWZwZVZ6MXRZL1dUWnI1V3hwYzdXNWtuTGE1akkzWjg1c3JTMm5NMnNqdFd3WlM3SVVINEg0eENuRVF4NERBWkY3NFY3dXM4ODV2OS9sSW5CdlZKL0I0UHY5bnUvNW51LzVudk01NTZmekEvUXYwSGIvSXJYM1ZGS1BvNDVjbm00aW5VSVdZd0xGUm1aUVV1d2pGRy9OMWlSSGgxRVowTlJWUnVkcXQxQmQrMm5TS3lTL09oeXMwK2xrM2UvM2tROXF2RDRaVXRhNFZWU1V1WTBlaXB5aVRoQWZvY29PUlZnRHV1dzNxS1JpQWQzcmJjRXRqVGpZSW9mNldhSHNDbXpWUFdDTXgrY2doOHRMcVdNS2FNV3NVakxxbzJSdEpJUTBvT3ptZXJwUXU0ZXNaZ3NPTmtHeEg3ZDBrZHZUVDE3czRPTVU3Vkk4WmhqZ0dhTStBcTlpRU51OFBpZjF1ZHowN013dktXZjhHbFZvQ0VZMDRQQzVXZFRhWFlGYlI4dk52TDUrM0tnZmI1eE5NeWE5UmFtSml5bmFNbEdUVnRGbHI2YmE5dStwcW5FWDR1TXVSUmdqU1lFaHJON3V0RkZlNmxxYWw3TmZrdzVpbUFHSHluUHBiazhWbVkweHN0bnB0bEZDVkNZdHpUdUJOODNRcE1MalR0ZXZkUHpTVW5KN2U4bWtqeFozOWZYYktEZmxkWnFidlUrVFVnR25CVkY2ZlEyaVBIZzRXMTZVV1V3dnpiazE2c01aRStQbjBwdno3SlNldUF5ZXM4bGNwQ21hS3VvL3ArcVdyMlVjd0lBSFdydlAwWUV6aFhBdExBYnNzSGhwN2lHYW12eWlqUDhyeXFyWFVXWDlYb293eHlBdWZOQnJwNDNQT0JGWFpsa2Y4TURSaXFjcHlvd0F3cHV6MngrZld2ei9EdGRlOXNtc3p5Z3RjUjZDMXdiZHpCbDZPbHE1V05ZWTRvR2F0aEpNcmtURXgwakFSU0hBVnMrNXJZa1FOWGIrUWdmUExzUTZnWHlJbnNyZVFmbXBtN1JWRllmTDg2bjFmaVVPa1l2U2hrVVB4dmJ1a3pveTZLMWloTTFobzNYelc2RXZTZlhBK2RwaVdHYVdkK2RvWHpMem1Hd0tZRkxDQXNSQWxQQkFoTWxDRlhVN3RCVVZQcjhIZ1ZjSkhXcStGMDBwbHIrRE1UZHJQNHp2eFkxMWtOTWh4VCtTZVRHZytkNFY1TFFKaXR5VUdKTkI4VkZac2pnWUJaTS9JSS9YQ1RrajBxeURPcEYyQVZRMTdDSWpVcC9EblQxVWtMNUY1Z2RqK3NTMXdnMWdFM2dpZ202MGZDWHpTblBYYnlBUGJJWHYrSURwRTE2VGhhSElTOXNreWhsbU1FNUYzY2ZxQUtocTJDMEU1UEgxZ1lhWGFMUERrWkcwSERKT25LV0hwNTFJMHo1U091eDhlMVdBdVp6ZEhRclRrcDhUbWpYb0krbGEwd0dac3p1YnFiTzNpZlE2QS9XN3ZWU1lzVjNtUjBKS3drS2M0V0hpQmttUjhJM0NDZ0k4N29PTDRxelQ1UCtSVUpCZWpFT2dBUEs4aFlQemF0TStlSVRwMklPOXlUUW1lcm9tUFJ4eDFxeEFjc2lsZS91YlNlRWJjV1FHWUVDZ2hjTFkySHlLam9nakgyNWhNcGpwVXYxT3VnbGk0ZWgyZVJ3ME8zMmJKamt5dUNnTnpnMHZ6bFlNU2lTczB1b280TUc3aE1PakNFYVgxeUZFMG5TdmpCenVUbkVwSzg2WjhJb3FGQUl1Ync4a2c5QXJFYVJFV1NaSStqSDRYYnA2ZzlFOUVuSlQzb2FSekROK01VSkJRREhuNTZhOG9VbUVCdXNPeEJzL041K3RKRWJQa0FGRGo4VUd2T3MvSVd2Y1NnbEdCaHZTNy9GVFlmcFdHWWREWThmUEF4V1NBMzVzVEM0cDQrTG00QWFxSW9QZVF0ZnVmSzZKaDBaaHhsYnNVWE9TbVhOaWZENVpUQWt5RG9mYmJjY2x4bkE4V05BcXhDYlJOeWtoWHhRcGFEdzY3ZlhVWWJzaUcwS2h0djJvZUl2aDhyaFFNWU9jRUFxWEcvZUkrem5nT2M1eXhyOHE4MklBTTFjL0ZMRk9wbHF1NWVGUVhyTVp6R2NWQ2pZYkxXRzVJNEJUMWV1UnJsYnh0Tk90TWl0RERFaExYSUl5bkFBdnVPRVdFM1gzTmRBZnQ5NFZnYUc0MlhJUXQwWlg2UGVDRS9xUUZlOXJLNkh4N1lVNTBLdkg3Zlc0ZlMrcTdLS0JKeHNnZ0JYNXBTQUdoMWpJclZoNXpRNnczUmZhYWhCWG0vYUNiQ1pUakNVRlVUeVdacVc5cDYyTWpKUFhWcU9yUGdNTzROdjc0R2tmK293ZnROVkJEUW5qRkpxSFN3MTdwWHZoV1c1S1pxZS9RNDlOL1VTVENBVldvUVhGSUhCSFhYZTNGUHJVRHN1R0RtdEYvaEhLVEhwZWt4aGlBT1BJK1NKcTZTNkhGNEk5WVd6a0JKVG80NmlVTXpXcDhQaXIvUmlkdUx4S1lzU2tzVjh2TGxPUXZoR1gyWWxSME9CaEJqQyt1L2dFY3ZZMEFwSzdZazQxTnhqUFNRbldGSFRGNjZVcmpnZXZCOEN1NWErbDJ2WVNSUHR1VkRvNzNoaGRNU0huVVg3dFRqc1ZaR3hBbC9XcHRpT0lFUTFnbkwyOW1YNi90UjF0bWxrWWo4VzRYK0NTaldjVURHWTFOcFMvQzdoU0txaU1MTS9sMlFtU1daNzNEZHorZ2lvOEJDRU5ZUFE0NnFua3p3WFVicXZCa3hqVVFzV2ZaRmdidW8zckFmK3dON2pPTzkwK3lueDRQaTNMKzBuWUwxU2NoRFVnQVA0Z1BWLzdJZDFxKzFIU2htdUdrSXFXUlBneXhNRnFQOEhmalRualh3WTViUWZiSmN0Nk9JektnTUhvdEYvSGUxZWdzYXhIU3FHNndmZG1RNXg4TnlURkZxQmNwMmlTb3dIUjN5azUrMzZoRjd2WEFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJGSURPXzJfMCIsIkZJRE9fMl8xX1BSRSIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsImxhcmdlQmxvYktleSIsImNyZWRCbG9iIiwibWluUGluTGVuZ3RoIl0sImFhZ3VpZCI6ImNlNmJmOTdmOWY2OTRiYTc5MDMyOTdhZGM2Y2E1Y2YxIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibGFyZ2VCbG9icyI6dHJ1ZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOmZhbHNlLCJhbHdheXNVdiI6dHJ1ZX0sIm1heE1zZ1NpemUiOjE1MzYsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6OCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoxMjgsInRyYW5zcG9ydHMiOlsibmZjIiwidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN30seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTh9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi0zNX1dLCJtYXhTZXJpYWxpemVkTGFyZ2VCbG9iQXJyYXkiOjQwOTYsIm1pblBJTkxlbmd0aCI6OCwiZmlybXdhcmVWZXJzaW9uIjozMjk0NzUsIm1heENyZWRCbG9iTGVuZ3RoIjozMiwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjEsImNlcnRpZmljYXRpb25zIjp7IkZJUFMtQ01WUC0zIjoyLCJGSVBTLUNNVlAtMy1QSFkiOjN9LCJyZW1haW5pbmdEaXNjb3ZlcmFibGVDcmVkZW50aWFscyI6MTAwfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTEwLTE1In1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNC0xMC0xNSJ9LHsiYWFndWlkIjoiYWQwOGM3OGEtNGU0MS00OWI5LTg2YTItYWMxNWIwNjg5OWUyIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiJhZDA4Yzc4YS00ZTQxLTQ5YjktODZhMi1hYzE1YjA2ODk5ZTIiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiWXViaUtleSBCaW8gU2VyaWVzICJ9LCJkZXNjcmlwdGlvbiI6Ill1YmlLZXkgQmlvIFNlcmllcyAtIEZJRE8gRWRpdGlvbiAoRW50ZXJwcmlzZSBQcm9maWxlKSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzYsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfSx7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciLCJzZWNwMzg0cjFfZWNkc2Ffc2hhMzg0X3JhdyIsImVkMjU1MTlfZWRkc2Ffc2hhNTEyX3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCIsImJhRGVzYyI6eyJzZWxmQXR0ZXN0ZWRGUlIiOjAuMCwic2VsZkF0dGVzdGVkRkFSIjowLjAsImlBUEFSVGhyZXNob2xkIjowLjAsIm1heFRlbXBsYXRlcyI6NSwibWF4UmV0cmllcyI6NSwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCIsImJhRGVzYyI6eyJzZWxmQXR0ZXN0ZWRGUlIiOjAuMCwic2VsZkF0dGVzdGVkRkFSIjowLjAsImlBUEFSVGhyZXNob2xkIjowLjAsIm1heFRlbXBsYXRlcyI6NSwibWF4UmV0cmllcyI6NSwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlEU0RDQ0FqQ2dBd0lCQWdJVVVjbU1YelJJRk9nR1RLMFRiM2dFdVpZWmtCSXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFEbTU1NWJXWTlXVyt0T1kwcklXSGxkaCthTmFub0NaQ0ZoN0drM1laclFtUFV3MGhrU0c2cVlIUXRQK2ZaeVMzM1ZFcnZnK0JRcW5tdW1nTmhmeEZya3dFWkVMZWlkQmNDOEM0QWc0bnFxaVBXcHpzdkkxN05jeFlsSW5MTkxGY1pZLytnT2lONlpPVGloTzUvdkJaTWJqOXJpYUFjcWxpWW1OR0pQZ1RjTUdhRUF5TXpFTU55Mm5tNkVwK3BqUDVhRjZnaTIxdC9VUUZzdUoxajJSai95bk0vU2RSdCtlY2FsNU9Zb3R4SGtGYkw5dnZ2MkEyT3Y1SVRaQ2x3NGJPUzlucHlwUWltT1o1UUFZeXRtWWFRcFdsL3BNWXo2elNqOFJxa1ZETkVKR3FOZlRLQTJpdkxZd1g2bFN0dE1QYXBnMEo4NGw5WDB2b1ZOL0ZwUzRWQ1ZBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlFnS0ZBaEc2UmFXK2hUeTUyZHhlVDhiQzk2SHpBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBWU16Z0xySkxJcjBPb3ZRbkFaclJJR3VhYmlIU1VLU21iTFJXcFJrV2VBdHNDaERFSHBYY0ovYmdETktZV29IcVE4eFJVakI0Q3llcFlldmMzWWxyRzhvN3pIeHBmVmNhb0w1U2V1Smt6SHhLbjRiVGFTcDkrTXZ3YW1ucDY0a1pNaU5iRkxrbmZQOWtZS29SSGtNV2hlUkoxVXNQMXo0U2Nta0NlSUxmc01zNnZxb3ZxaldDbEZzSnBCY3NsdVlIV0Y3YkJKMW40UndnK0FURW9wWTRJZ0d2Nlp2d2MrQTlyK0FUMmhxcG9Ta1lvQWwrQU5Zd2dzbE9mOXNKZTBWK1RBOVlZL1VsYUJtUFBUZDAvL3I5d3ZjZVBXWmtQaktvQUMvelVOaGZEYmg0TFY4R0hzM2x5WDJYb21ML0xOYzhKWXp5SWFERWhHUXZlb1BoaC90cjFnPT0iLCJNSUlEU0RDQ0FqQ2dBd0lCQWdJVURxRVJ3KzRSbkdTZ2d4Z1Vld0pGRVBEUlozWXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFESTdYbkgrWnZEd01DUVU4TThaZVY1cXNjdWJsdlZZYWFSdDNZYmF4bjlnb2RMeDVzd0gwbFhyZGdqaDVoN0ZwVmdDZ1lZWDdFNGJsMXZielVMZW1yTVdUOE4zV01HVWU4UUFKYkJlaW9WN1cvRStoVFpQLzBTS0pWYTNld0tCbzZVTGVNbmZRWkRyVk9SQWs4d1RMcTJ2NUxsajV2TWo3SnRPb3RLYTlKN25IUzhrTG16WFhTYWowU3dFUGg1T0FaVVROVjR6czFidm9UQVFRV3JMNC9KOVF1S3Q2V0NGRTVuVU5pUlFjRWJWRjhtbHFLMmJ4Mno2b2tWbHR5RFZMQ3hZYnBVVEVMdlkxdXNSM0RUR1BVb0lDbE9tNGNycHduRFJMVkh2alllUEdCQi8vcEV5enhBL2djU2N4andhSDFaVXc5Ym5TYkh5dXJLcWJUYTFLdmpBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlRxdDBLUW5neDdaSHJiVkh3RHVueE9uOWloWVRBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBcVFhQ1dNeFRHcVZWWDdTazdra0ptVXVlVFNZS3VVNitLQkJTZ3dJUm5sdzlLN0hlMUlweFowaGR3cFBOaWtLam1jeUZnRlB6aEltd0hKZ3h4dVQ5MFB3M3ZZT2RjSkpOa3REZzM1UFhPZnpTbjE1Y0ZBeDFSTzBtUFRtSWI4ZFhpRVdPcHpvWHZkd1hETTQxWmFDRFlNVDd3NElRdE15dkU3eFVCWnEyYmp0QW5xL05EVUE3YmU0SDhIM2lwQysvK05LbFVyY1VoK2o0OEs2N1dJMHUxbTZGZVF1ZUJBN24wNmo4MjVycURxc2FMczlUYjdLQUhBdzhQbXJXYU5QRzJraktlcnhQRWZlY2l2bEZhd3AyUldadnhyVnRuM1RWMlNCeHlDSkNrWHNORDA1ZENFclZIU0pJcytCZHRUVk5ZOUF3dHlQbW55YjB2NG1TVHp2V2R3PT0iLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVIzOG1xMjZTZjJzelZWMkJkRzZXRU43a3VXVXdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFSWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFOWTBXYjlvUG9Sb0tvUXlXUGFKcHoxMXZyV1RnNnpUdG1OajJWb0tSbnl2S0dScXB6YjgzdzVsNllBOTZVWWtZQkRRUDBpbE8yRFBlNndXcVZSNXpEZlJ6ZGNIOGJoK0w3ZEdHdmFlNmhSVFpoa0ZrQ3BYRHM0SGNja25yRGY4RkNsSjdIZTM5SmY0Mi9HMVFtMnp6OVdXbXJQWHRnaUsveDA1R2pzUWZHdURHMXpmNVFUVVVpZThsd3ltSzNUZmRPdk5lZUpBQVBlMnBuN0l0ZlJiK3JWck5XaUR6bFJuMnZObloyd1BvNHdIL1dKNmRoWFpHK3JNV1QrYTZCb2NnMVVmSXc2a2R1bkc0YlRwWnpzdmFjRll5UjBtcGYrRGVPbnBTV0FteXdKV0h2VGxmMllYeEZ5ZVhjVEFDZFFsY01OR0oyVmhaUTQ4eHRQNS9SQlAvOGtDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNoeTQyb2tpcWNUUzFpcWEvSFJXamtCbjRIL01COEdBMVVkSXdRWU1CYUFGT3EzUXBDZURIdGtldHRVZkFPNmZFNmYyS0ZoTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBbitSSElQYnRNRUROZFQxZzhIL1JpdEFrVWRMZ0F0MXRXR1dubGo5a25idjQvNEdsWDdDOXA0NWVmUE85L2FaTDZPVjFYUktCaTZLbXRCVzVLN251WUVuTXgvNUJxQlNiTFQ3cmhkdUM0OVRCZU1iOVBIZFhzVGxTVk5ZZWZyMWRHaWRyNGoweFZCUUxiMXJrbkRBYmRXRHpLZnZuYXlLTzhGcndlN0h4ODQzTUcvckorYzBYcnVVdmJmVlRDSExpSVdoTTdvTkRoTDh4b2I2eFVvOUtMS2NTTCtJdFlzTzMvOVdiOFE5R2pzcUw0RlhzRGNHMVNhWWg3S3BmdU1tT2l4cXpKWk8ybklpY1BZUmcxSTJTdWlVZllPNzB0bWRIY2JsK2tTUW1TWXQ3cnE0dmlJTGcyR3gzajlySVR1V1RqYmFVYVNTUXhnT21NU0h1eXpNQUMiLCJNSUlEUGpDQ0FpYWdBd0lCQWdJVVh6ZWlFREpFT1R0MTRGNW4wbzZaZi9iQndpVXdEUVlKS29aSWh2Y05BUUVOQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU1aNi9UeE04cklUK0Vhb1B2Rzgxb250TU9vLzJtUTJSQndKSFMwUVpjeFZhTlh2bDEyTFVoQlo1TG1pQlNjSVpkMVJueDFvZDU4NWgrL2RoSzdoRW03SkFBTGtLS3RzMWZPNTNLR05MWnVqejVoM3dHbmNyNGh5S0YwRzc0Yi9VM0s5aEU1bUdORDZ6cVljaENSQUhmcllNWVJERjRZTDBYNEQ1bkdkeHZwcEF5Nm5rRW10V21NbndPM2kwVEF1Y3NyYkU0ODVIdkdNNHIwVnBnVmRKcHZnUWppVEpDVElxK0QzNWh3dFQ4UURJdituR3ZwY3lpNXdjSWZDa3p5Q2ltSnVraFl5NktvcU5NS1FFZHBOaVNPdld5RE1UTXQxYndDdkV6cHc5MXUrbXNVdDRyajBlZm5POXMwWk93ZHdNUkRuSDR4Z1VsNVpMd3JyUGtmQzEvMENBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUI4R0ExVWRJd1FZTUJhQUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUU13RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCRFFVQUE0SUJBUUMzSVcvc2dCOXBaOGFwSk5qeHVHb1grRmtJTGtzMHdNTnJkWEwvY29VdnNyaHpzdmw2bWVQTXJiR0pCeUoxWG5xdUI1c2djUkVORnhkUUZtYTNtaW84VXBmMW93TTFacmVYckowbUFERzJCcGxxYkpueGl5WWErUjExcmVJRlRXZUloTU5jWktzRFpyRkF5UHVGakNXU1F2Sm1OV2U5bUZSWUZnTmhYSktrWEliNUgxWGdFRGx3aWVkWVJNN1ZvbEJObGxkNnBSRktsWDh1c3Q2T1RNT2VBRGwyeE5GMG0xTFRoU2RldVh2RHlDMWc5K0lMZnozUzZPSVlnYzNpcm9SY0ZEMzU0ZzdyS2Z1NjdxRkF3OWdDNHlpMHhCVFByWTk1cmg0L0hxYVVZQ0EvTDhsZFJrNkg3WGszNUQrV1ZwbXEyU2gveFQ1SGlGdWhmNHdKYjBiSyIsIk1JSURTakNDQWpLZ0F3SUJBZ0lVVG5iYkdJUjJOSHZ6cUlLRkFlUXdHMVhCaXMwd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JCSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVFZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU9zWGozazA0QmFuNFRZZHRaS3FEL09QSnh5RHlhUG1DQlVGVWlhWklnVHRlWm5qM1gyNURoZ3BaWlhzQzREMHlkSWNybEE2d05VSW5PUkwvTDl6QmJURUlNQVZNR282ZzdVS0FtYjJNRjZBSGJuaFlKZDllaWt1cFZOV1NoSE5ZTmM0R0JkTzFZTjZBZlVxdkpoSGJlM1Y0U05NUG1CUkVLSlBWejdUaHdnbWdnVGU4V3MySzAvd3NxdjJ3U0U3cGJDQnNVWmhJWDUxYlpNM3BxRHdKUFRtUkZFdnQwLzZ0RzVlTzhGM2oxNE9YcWZFaG1qbjFWdnhLRFlRT0xaQXhDd3dnQzBQNENkZld2M3k4UFNSOEkzNTRoTzFZK0d6Tmp2SXFYMzhOS0x5d3VJWUhGZXJPeE5seEVNQnZGaFlCdVJ1WUFra2dVYVBxTjZVQmhzSUxyc0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ0NvUkhoaXlObmJuWFJXSUw2WkJYb0JYOVlUTUI4R0ExVWRJd1FZTUJhQUZDQW9VQ0VicEZwYjZGUExuWjNGNVB4c0wzb2ZNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUNRRmFmSkkxLzVXZzlDRUVpbUUxUlA1NFJnUXdUTlRPT1FzTEFDVGUrckl0bEZRekM5WkRoclY4Mjh5WDdqenkrQUFzcDNpeks3VDF0aDJkbDdtK3R1MHN3MlBhL29sYzAybnQ2UHlJdzM0OGdhSHpoSTErMEtFNDVxeHZGRGVMMmxNeGJQZkNZdnlFRWFZemppUUVMVTU5NTFwWEdXeUtNYS80Zkx0TytaS09YaE11VmVxNHJYRFBJNTRXNkpIT2lBYWlLZGl3KzVlM2Mya3QvakZJUXRNNnZNWGc5TE5GemRqRVROdDIwVlg5UWV2UnBGWmZ1Y01HOXdDYVFEb0ZsUHpwVE1KS2hQZXYvaW1KbVpZaEtmcjBsTGNlbXRxakl4TEFvcVpkT1lmSEJnNit2QWNkUEkvaWF1R3BVQXY3WCtVS05tRHdqWjJCYUg0c0x3aEIybSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFmQ0FZQUFBQ0dWcytNQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUhZWUFBQjJHQVYyaUU0RUFBQWJOU1VSQlZGaEhwVmQ3VE5WMUZELzNkNTl3ZVFTSWdTOUFRQVhjRkxBUVppOWZwZVZ6MXRZL1dUWnI1V3hwYzdXNWtuTGE1akkzWjg1c3JTMm5NMnNqdFd3WlM3SVVINEg0eENuRVF4NERBWkY3NFY3dXM4ODV2OS9sSW5CdlZKL0I0UHY5bnUvNW51LzVudk01NTZmekEvUXYwSGIvSXJYM1ZGS1BvNDVjbm00aW5VSVdZd0xGUm1aUVV1d2pGRy9OMWlSSGgxRVowTlJWUnVkcXQxQmQrMm5TS3lTL09oeXMwK2xrM2UvM2tROXF2RDRaVXRhNFZWU1V1WTBlaXB5aVRoQWZvY29PUlZnRHV1dzNxS1JpQWQzcmJjRXRqVGpZSW9mNldhSHNDbXpWUFdDTXgrY2doOHRMcVdNS2FNV3NVakxxbzJSdEpJUTBvT3ptZXJwUXU0ZXNaZ3NPTmtHeEg3ZDBrZHZUVDE3czRPTVU3Vkk4WmhqZ0dhTStBcTlpRU51OFBpZjF1ZHowN013dktXZjhHbFZvQ0VZMDRQQzVXZFRhWFlGYlI4dk52TDUrM0tnZmI1eE5NeWE5UmFtSml5bmFNbEdUVnRGbHI2YmE5dStwcW5FWDR1TXVSUmdqU1lFaHJON3V0RkZlNmxxYWw3TmZrdzVpbUFHSHluUHBiazhWbVkweHN0bnB0bEZDVkNZdHpUdUJOODNRcE1MalR0ZXZkUHpTVW5KN2U4bWtqeFozOWZYYktEZmxkWnFidlUrVFVnR25CVkY2ZlEyaVBIZzRXMTZVV1V3dnpiazE2c01aRStQbjBwdno3SlNldUF5ZXM4bGNwQ21hS3VvL3ArcVdyMlVjd0lBSFdydlAwWUV6aFhBdExBYnNzSGhwN2lHYW12eWlqUDhyeXFyWFVXWDlYb293eHlBdWZOQnJwNDNQT0JGWFpsa2Y4TURSaXFjcHlvd0F3cHV6MngrZld2ei9EdGRlOXNtc3p5Z3RjUjZDMXdiZHpCbDZPbHE1V05ZWTRvR2F0aEpNcmtURXgwakFSU0hBVnMrNXJZa1FOWGIrUWdmUExzUTZnWHlJbnNyZVFmbXBtN1JWRllmTDg2bjFmaVVPa1l2U2hrVVB4dmJ1a3pveTZLMWloTTFobzNYelc2RXZTZlhBK2RwaVdHYVdkK2RvWHpMem1Hd0tZRkxDQXNSQWxQQkFoTWxDRlhVN3RCVVZQcjhIZ1ZjSkhXcStGMDBwbHIrRE1UZHJQNHp2eFkxMWtOTWh4VCtTZVRHZytkNFY1TFFKaXR5VUdKTkI4VkZac2pnWUJaTS9JSS9YQ1RrajBxeURPcEYyQVZRMTdDSWpVcC9EblQxVWtMNUY1Z2RqK3NTMXdnMWdFM2dpZ202MGZDWHpTblBYYnlBUGJJWHYrSURwRTE2VGhhSElTOXNreWhsbU1FNUYzY2ZxQUtocTJDMEU1UEgxZ1lhWGFMUERrWkcwSERKT25LV0hwNTFJMHo1U091eDhlMVdBdVp6ZEhRclRrcDhUbWpYb0krbGEwd0dac3p1YnFiTzNpZlE2QS9XN3ZWU1lzVjNtUjBKS3drS2M0V0hpQmttUjhJM0NDZ0k4N29PTDRxelQ1UCtSVUpCZWpFT2dBUEs4aFlQemF0TStlSVRwMklPOXlUUW1lcm9tUFJ4eDFxeEFjc2lsZS91YlNlRWJjV1FHWUVDZ2hjTFkySHlLam9nakgyNWhNcGpwVXYxT3VnbGk0ZWgyZVJ3ME8zMmJKamt5dUNnTnpnMHZ6bFlNU2lTczB1b280TUc3aE1PakNFYVgxeUZFMG5TdmpCenVUbkVwSzg2WjhJb3FGQUl1Ync4a2c5QXJFYVJFV1NaSStqSDRYYnA2ZzlFOUVuSlQzb2FSekROK01VSkJRREhuNTZhOG9VbUVCdXNPeEJzL041K3RKRWJQa0FGRGo4VUd2T3MvSVd2Y1NnbEdCaHZTNy9GVFlmcFdHWWREWThmUEF4V1NBMzVzVEM0cDQrTG00QWFxSW9QZVF0ZnVmSzZKaDBaaHhsYnNVWE9TbVhOaWZENVpUQWt5RG9mYmJjY2x4bkE4V05BcXhDYlJOeWtoWHhRcGFEdzY3ZlhVWWJzaUcwS2h0djJvZUl2aDhyaFFNWU9jRUFxWEcvZUkrem5nT2M1eXhyOHE4MklBTTFjL0ZMRk9wbHF1NWVGUVhyTVp6R2NWQ2pZYkxXRzVJNEJUMWV1UnJsYnh0Tk90TWl0RERFaExYSUl5bkFBdnVPRVdFM1gzTmRBZnQ5NFZnYUc0MlhJUXQwWlg2UGVDRS9xUUZlOXJLNkh4N1lVNTBLdkg3Zlc0ZlMrcTdLS0JKeHNnZ0JYNXBTQUdoMWpJclZoNXpRNnczUmZhYWhCWG0vYUNiQ1pUakNVRlVUeVdacVc5cDYyTWpKUFhWcU9yUGdNTzROdjc0R2tmK293ZnROVkJEUW5qRkpxSFN3MTdwWHZoV1c1S1pxZS9RNDlOL1VTVENBVldvUVhGSUhCSFhYZTNGUHJVRHN1R0RtdEYvaEhLVEhwZWt4aGlBT1BJK1NKcTZTNkhGNEk5WVd6a0JKVG80NmlVTXpXcDhQaXIvUmlkdUx4S1lzU2tzVjh2TGxPUXZoR1gyWWxSME9CaEJqQyt1L2dFY3ZZMEFwSzdZazQxTnhqUFNRbldGSFRGNjZVcmpnZXZCOEN1NWErbDJ2WVNSUHR1VkRvNzNoaGRNU0huVVg3dFRqc1ZaR3hBbC9XcHRpT0lFUTFnbkwyOW1YNi90UjF0bWxrWWo4VzRYK0NTaldjVURHWTFOcFMvQzdoU0txaU1MTS9sMlFtU1daNzNEZHorZ2lvOEJDRU5ZUFE0NnFua3p3WFVicXZCa3hqVVFzV2ZaRmdidW8zckFmK3dON2pPTzkwK3lueDRQaTNMKzBuWUwxU2NoRFVnQVA0Z1BWLzdJZDFxKzFIU2htdUdrSXFXUlBneXhNRnFQOEhmalRualh3WTViUWZiSmN0Nk9JektnTUhvdEYvSGUxZWdzYXhIU3FHNndmZG1RNXg4TnlURkZxQmNwMmlTb3dIUjN5azUrMzZoRjd2WEFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJGSURPXzJfMCIsIkZJRE9fMl8xX1BSRSIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsImxhcmdlQmxvYktleSIsImNyZWRCbG9iIiwibWluUGluTGVuZ3RoIl0sImFhZ3VpZCI6ImFkMDhjNzhhNGU0MTQ5Yjk4NmEyYWMxNWIwNjg5OWUyIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJ1diI6ZmFsc2UsInBpblV2QXV0aFRva2VuIjp0cnVlLCJsYXJnZUJsb2JzIjp0cnVlLCJlcCI6ZmFsc2UsImJpb0Vucm9sbCI6ZmFsc2UsInVzZXJWZXJpZmljYXRpb25NZ210UHJldmlldyI6ZmFsc2UsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjpmYWxzZSwiYWx3YXlzVXYiOnRydWV9LCJtYXhNc2dTaXplIjoxNTM2LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjgsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4LCJ0cmFuc3BvcnRzIjpbInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi04fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotMzV9XSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5Ijo0MDk2LCJtaW5QSU5MZW5ndGgiOjQsImZpcm13YXJlVmVyc2lvbiI6MzI5NDc2LCJtYXhDcmVkQmxvYkxlbmd0aCI6MzIsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjoxLCJwcmVmZXJyZWRQbGF0Zm9ybVV2QXR0ZW1wdHMiOjMsInV2TW9kYWxpdHkiOjIsInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjoxMDB9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wMi0wMSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzYsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWXViaUtleSBCaW8gU2VyaWVzIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNTAyMDEwMDIiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wMi0wMSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzZ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDItMDYifSx7ImFhZ3VpZCI6IjkzMGIwYzAzLWVmNDYtNGFjNC05MzVjLTUzOGRjY2QxZmNkYiIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiOTMwYjBjMDMtZWY0Ni00YWM0LTkzNWMtNTM4ZGNjZDFmY2RiIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkNoaXB3b24gQ2xpZmUgS2V5In0sImRlc2NyaXB0aW9uIjoiQ2hpcHdvbiBDbGlmZSBLZXkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MTA1LCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH0seyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9pbnRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlCempDQ0FYV2dBd0lCQWdJVUVWMnVZMFYwMWpxYlhQRWpNZll6Q2UrNVZCd3dDZ1lJS29aSXpqMEVBd0l3SURFZU1Cd0dBMVVFQXd3VlEyaHBjSGR2YmlCR1NVUlBNaUJEUVNBd01EQXhNQ0FYRFRJek1ETXdOekF6TVRnd05Gb1lEekl3TnpNd01qSXlNRE14T0RBMFdqQWdNUjR3SEFZRFZRUUREQlZEYUdsd2QyOXVJRVpKUkU4eUlFTkJJREF3TURFd1dUQVRCZ2NxaGtqT1BRSUJCZ2dxaGtqT1BRTUJCd05DQUFTY0kxVGpVTE9VT0xPU3ZKSThpWDdqbGovc2ExZ2lPZEJFcTIwVzZ3a1huenhRSjZLZzFOdW9oc2UraUlTNDBxTUN5eTNBcGFaeHdOUisvMjhWR21Qd280R0tNSUdITUIwR0ExVWREZ1FXQkJRejg5SlFYVHhieWpTbFMzNW1zUEg3YXlpR2V6QkZCZ05WSFNNRVBqQThvU1NrSWpBZ01SNHdIQVlEVlFRRERCVkRhR2x3ZDI5dUlFWkpSRTh5SUVOQklEQXdNREdDRkJGZHJtTkZkTlk2bTF6eEl6SDJNd252dVZRY01BOEdBMVVkRXdRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0VHTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUR3aDhTQXNJdFFLYUt0YTFrdDJidjJwcnZGNVV0V0FrVFYwZWc4a0xmTEtBaUFnZXg5eHBLR0NMUGVpKzhUdUVreHlLUUM5RjY3dDk2SFZ2UVBFK3VVZkJRPT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBVEFBQUFDd0NBSUFBQUFIWHFYSUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFEc01BQUE3REFjZHZxR1FBQUJEdVNVUkJWSGhlN1ozN2J4M2xFWVlUMzJNbnRwTmdURzQ0Y2V6Y25OaEpiTWNYSElKRWdhb3FSZEFpVlJVQ1N0VVdrSG9CVVZWVklZQ1VxcUdrdi9TSGxsWkl0RktMb1ArayszRysxOXZOYTUvanZjenN6cDR6ang2aEpHZDMzdG5kR1U3aU9QYUJiY2R4ek9BTDZUaUc4SVYwSEVQNFFqcU9JWHdoSGNjUXZwQ09Zd2hmU01jeGhDK2s0eGpDRjlKeERPRUw2VGlHOElWMEhFUDRRanFPSVh3aEhjY1F2cENPWXdoZlNNY3hoQytrNHhpaVJ4ZnkydnpSSDMxbjl0M1hGajU2Ky9wN3J5OThlK3NVWG5DY1d1bm1oWnc1TWZiZlB6OVYwZy9lWEVJNXg5R24yeFl5dk4zUlJzbTZ0amlGSk1kUm9Fc1drdGFtR3BIdE9ISTBleUZwUStyeTZ0d2tHbktjY2pSeUlTZVBETkZLR0JIOU9VNVJHcmFRTHo5M2xuYkFvT2pWY2ZMVG1JVjhkdk1remIxeDBiZmo1S0VaQzBtejNpQnhBWTZURGVzTFNmUGRSTC82OUE0dXhuSDJ3KzVDRGczMjBXUTNXbHlWNDNURTZFTFNOSGVIL2xicDdJdkZoYVE1N2pKeGtZNnpGN1lXOHEvdnI5UDRkcVc0V3NmWmhhR0ZwS250Ym4vMXloVmN0dU9rc0xLUU5LKzk0UDFmTCtQaUhXY0hFd3RKazlwVDRoWTRUb3Y2RjVJR05LTTRPU2QvKzJDRDZsZ1F6VGxPN1F0Sm85bkJSNCtONEJ3NUtLSkcwWkRUODlTNWtEU1VlNHBESDJaeDRjcVRteHZGUkltSG9kQmFSQ3VWc0hUeDJNdlBuWDM5aGJrSDc2MVNHNTJkT1RHR0VqMEdUZEdOeFd0NFFacmFGcEtlTkltRFV0emVXS2ViVWw2VVRrRnRWQ3lhRUlVaXBIenRoVGtFZEMvSGp4MmxnZGxUSEMxRVBRdEpUemN0anRoaGZXV1pybDlEaE8xQUxWWG1iMzhpLy8vZDZlT0hLRVhRYzZjT0k2YTdtQmdmcHduWlY1eFptaG9Xa2g1cUlsN2VnUzY0R3BIZGd0cXJSbVNMUWhIaUlxWmJvSkhJSlVxVW9PcUZwR2NaeFdzNzBFVldML3BvUWExV0lJTGxXRnVjb2doeGtkUjhhQklLaUVKRnFYUWg2U2xHOFZvTHVyWjZSVTh0cUdkdGtTb0gxZGNRU1UyR0JxQ3dLRmVJT2hjU3Y5cUNMc21JbHkvTW83L3Q3ZmQvdmtUOXE0cFVJZjcxaHkycXJ5SENtZ2s5K3BLaWFINnFXOGgyRDI5dCtTWmRqS0F6Wjg0Z3BqMGJ0MWJwTEJMSHRhQ3JVQldSUWxCeEpSSFdOT2lKaTRqU09hbG9JZHM5TnJvR0tWRzlLRlF0aUJkYTBMWG9pVHdocUxpZXlHc085S3lsUlBXY1ZMR1FFNGNIOTN4Z2RBSGxSVjFSa3VMcnF5djRKZC9KamlLc09TU1BXRndFNUtHS2hkejl0TXA4cXMxdU4yK3R4cktxeEN6OHBKazdTWlgxUkY0VFNLWklRMlRrUVgwaGR6OG5hcnFNVyt0cnNXWmxoRkQ4cUpsdk9GUmN5ZjYrZzhnelQzcWNORVJNWnFwYnlQaFRhcmVNc1dEMXJGeS9qaDgxY0NlcHNwN0lNdzhObGJpSXlZenVRdExqb1Y0TEc2dFo0TlQwYUhLTmVqNjdlUko1RWxCeEpSRm1tM016ajlOb2lZdWt6Q2d1NVBOUG5Vay9HMnEwc0xHYUhaSVJWQlZoRWxCbFBaRm5HQm90RFpHVUdjV0ZURCtWcTVjdlVhTUZuSnM5RjZ0Wkl4bEJWUkVtQVZWV0VtR0dvUUhURUVtWjBWcklmM3k0bVg0cTFHVUJZeDJiL1BRSEY1SXAxQk5oRWxCbFBaRm5GWm94RGNmR1JoR1dEYTJGVEQ4UGFyR0FzWTVsa2hGVUZXRVNVR1VsRVdZVkdqTU5oNGVIRVpZTmxZWDg3TzQzWDdvbS9wajZLMkNzWTUvMElDcUpKQW1vc3A3SU13bE5tb1pJeW96S1FvYkg4TWZXMXppazVnb1lDemFDOUJUcWlUQUpxTEtTQ0RNSkRadUdTTXFNL0VMR1Q1U0xQNmJtOGhxTE5JajBJQ3FKSkFtb3NwN0lzMGY0QXg2Tm5MaEl5b3o4UWlZUGdEckxhMzkvZjZ6VElBYjZENllIVWNQcDQ0Y1FKZ0VWVnhKaEpxR3BFeGN4bWRGYVNHcXJnTEZhNDBnUG9wSklrb0FxNjRrOGU5RFVpWXVZekFndlpITHJxYTI4eGlJTkpUMklHZzRQU2Y3ZWdZb3JpVEI3cUg2eURqTHlvTEtRMUZaZVk2bm1raDVFSlpFa0FWWFdFM24yb1BFVEZBRjVrRnpJZ3dkUmpkcks1ZURnWUN6U2FHZ1d4VjI5K2dpU0pLRGlTaUxNSkRTRUlxSjBUaVFYTXQ1MGFpdXZzVlRUZVdialpIb1dOVVNTQkZSWlQrVFpnNGF3dkZPUEhFZnBuQWovbGpWQW5lVVNKYm9DbWtWeFQwejVoMXNsb1ZFc0tZcm1SM2docWEyOG9rcTNRT01vTG1Ja29NcDZJczhrTkkyRlJibENHRnBJbE9naWFCYkY5USszaWtNeldVQVVLb3JrUXZiMTlWRnp1VVNWN29MR1VWekVTRUNWOVVTZVZXZ3NzenM1TVk0U0paQmNTT292bHlqUmRkQXNpb3NZSWFpNGtnaXpEYzNudnVLMDB2aENxa1BqS0M1aUpLREtlaUxQUERTbHU5MWN1NFZEaGZDRlZJZG1VVnpFQ0VIRmxVUllvM2o4OU9uMTFaVWJpOWRFZm12YURyR0ZwQVhMSlVwMEx6U080aUpHQXFxc0ovS2NoL0dGckFLYVJYRVJJd1FWVnhKaHpzUDRRbFlFamFPNGlKR0FLdXVKUENlRkwyUkYwQ3lLaXhnaHFMaVNDSE5TeUN6azB0VUYyckhzSHAyY1JKVnVoOFpSWE1SSVFKWDFSSjZ6Zzh4QzBvN2xFaVY2QUpwRmNSRWpCQlZYRW1IT0RyNlFsVUxqS0M1aUpLREtlaUxQYWVFTFdTazBpK0lpUmdncXJpVENuQmEra0ZWRDR5Z3VZaVNneWtwKy9lQU84aHhmeU9xaGNSUVhNUkxjKzhVTktxNGs4aHhmeUZxZ2NSUVhNUkpRWlNVLy8vZ0o1UFU4dnBBMThNVzlMWnBJV1JFandYZnZuS2JpU2lLdjUvR0ZyQWNhUjNFUkl3RlZWbkorUnZFenRodUVMMlE5ZlBYcEhacElXUkVqd2RzL3ZFVEZsVVJlYitNTFdSczBqdUlpUmdLcXJPVG95QUR5ZWhoZnlOcWdjUlFYTVJKODh1NHlGVmNTZVQyTUwyU2QwRGlLaXhnSnFMS1NDSk9EaGszUTZha3BaSWppQzFrbk5JN2lJa1lDN1k4TUp5S3ZORFJtNGlKR212b1g4c3FsaTZqU2s5QTRpb3NZQ2FpeWtnZ3J3ZHpzT1pveERSRW1UZjBMR1VTVm5vVEdVVnpFU0tEOWtlRkU1QlZpWUdDQXBrdERoQ2tnczVBQjZqaVhLTkdyMERpS2k1alNoQ2RGbFpWRVhpSFNjNlVud2hUd2hhd2ZHa2R4RVZPTzgyZlBoaWRGbGZWRWFrN1NRNlVud25Ud2hUUUJqYU80aUNsQjhyQ29zcEpJemNQNjZrclNwS3JJMDhIRVFnWlJwVmVoY1JRWE1VVkpQeW1xckNleU01TnVVaytFcVNHMmtNdExpOVI2TGxHbFYrbnZQMGpqS091WG56eUpwRUxRdzZMaVNpSTdHOVNobnNoVFEyd2hBOVI2TGxHaWg2RnhGQmN4K2FFbkZhVEtlcUtEL2RoYVg2TU9sZXp2NjBPa0dsWVc4Z25wNzVIUU9MNy9yUmthUjFuLy9tR1IvK3ZSWTBxazRrcWlpZjJnM3ZSRW5pWldGaktJS2owTWphTzRpTWtEUGFORXFxd24rbWdQTmFibnphVkZSR29pdVpBQnVvWmNva1FQRS82a1IrTW82OTIzbHBDVURYcEFKQlZYRXEyMElmNWxURFVpVWhteGhiei96bkw0TDExRFhtT3BYb2JHVVZ6RVpJT2VEa21WOVVRM2UwRXRxWXBJWllUZklVdCtHaUdxOURBMGkrSys4ZEk4a3ZhREhzMmVVbkVsMGRBdXFCbFZFYW1QNUVLR2UzZmd3QUc2a3J5aVZnK1Rua1VORWRNUmVpanRwTXA2b3EySG9XWlVSYVErOGd0NWUyT2RMaWFYcU5YRHBBZFJ3eXdmYnFXSDBrRXFyaVRhU2tGdHFJcklTaEJleU04LzN2UTN5ZktrWjFGRHhMU0JIa2RucWJLZWFLN0Yrc295dGFFcVVpdEIrTStRNGNhRmhTei9GN1VvMTZ1a0IxSER1MisyL1hEcnpKblQ5Q3oybFlvcmlmNWFVQU9xam8yT0lyVVM1QmN5NkcrUzVVa0dVVW5FN0lJZVJCYXBzcDVvc1h0L3Z4clFXc2lSNFdHNnNMeWlZcStTVEtHU2I3eTR4NGRiNlJGa2w0b3JpUzViVUFOS2JsYitDV1RDQ3htSTk2NzhtMlFRRlh1VlpCQ1ZSRXdLdXYvWnBjcDZvdEdxRmhKaEZhSzFrSU1EZmI2VEpVbW1VTWxuTms0aXFRWGQrYnhTY1NYUmF3dHFRRU1rVllqOFFnYml2UXNMT1Q4N1MxZVkxMGVuSGtIUjN1UDI4blF5aUVvaUtXU1YrOHVxSUZYV0V4M3JMeVJpcWtWeElZTTk5U2I1NnZmT0p4Y2V2YlB5R0Y0ckNoVVU5L0xzUkF5aWUxNU1LcTVrYkRoQ0RjaUtqR3BSV2NoQXZIYzNMeC92a1oxTXhtVlBjVkIrcUk2R1NKSVlicXFzSnpyV1hFZ0VWSTd1UWdiRFFvcnM1SkhEaDFIYUhqTW5EeWZYMjBFY25STXFJdTdra2FFWVJEZThtRlJjeWRodzRORElDRFVnSlFJcVIyc2hBOG50azlySklFb2JJN25TTE9LY3pORHBHaUxKM3lSM1JPazZxR0loZzJFaFQ1NTRqQzY3bUtodWh2UmxaaGNuWjRQT0ZiZS8vMkFNb2x0ZFRDcXVaR3c0Y09YaVJXcWd2Q2hkQjRvTEdVamZRYWszeWVEd0VINlhWVHZwQzh3clNtU0FUdFFRU2Y0bXVibHhZZTQ4NnRhQjdrSUdrdHYzejN0Ymdqc1pSRURsSkovY21GeGFZV09kTE5DSjRpSkdZcmczYjYxU2NTWFJzZlJDb21oTlZMZVF3ZmpaQXJKZjBCWXhWWkVrcHErcmpMSGF2dEJaR2lLcE9XK1NYOXpiUXNlaU80bUtOYUcra0lIMFRSd2EvR1luKy92NzZTNlVGRWxxakk2T3BvUFNWMVRlV0xNekMrY242U3h4a1NReDNPdkwxNm00a3VoWWJpRlJyajZxV01oQStpWmV2M1FzL2lMZGkvSU9EUTdHeWxLTWpXRVBvL0VYMDljaVphemNHVHBGUXlRMTUwMFM3YmFnQm9xSld2VlIwVUlHMHZmeHl6L2hDMm5UN1pCeW9jVDNuTHc0UDBmVmdyYzMxdU9yNmF1UU5kYnZBQjJ2SVpJa25zdnR0YXRVWEVsMExORXpDdFZLZFFzNU10eXZkeXV6T0Q4N096MDFOVEUrZnZ6WTBTc1hMOUNySFVTWCtpdUJtUGJROFJvaVNlS2hVR1VsUjBjRzBISHBubEdsVnFwYnlBRGR5aUJlcUdvbjgzcGo4VnBzNzhGN0s5UzVrakd1SFhTd2hraVNlQ0pIeGdhcHVKTG91RnpQS0ZFM2xTNWtnRzVsRks4WlcwdjBWTWthSk43NzVVMmt0b0dPMXhCSjVSNUgvTjRRVkZuSjJHMkUyc2d1enErYnFoY3lRSGN6aXRkYTBKMnFYdlJSN1NwRzF4ZW5rTjBHT2w1REpFbTg0Y3pQakZOeEpXTmNnTnJJS0U0MlFBMExHYUM3bVlpWFc5QXRxOERIcGg5Rjl2YjIwK3NucUxjS3pQSUZHc1BHMGxrYUlremlEWWNxSzRtd0Z0UkpGbkdtQWVwWnlBRGQwTFE0b2tWZlh4L2RPM0ducHg1NlU3cjcxaEwxVTVub1lEL29MQTJSSlBHRzg4ekdTU3F1SlBMeTl6eC9maFpuR3FDMmhRelFEU1Z4VUFxNmoyVmNYTGlDb2ltb2dTcjlUNTV2cUVybktva3dpVGNjcXF3a3dscFFQNTNGT1Rhb2N5RURyenpQLzhxZWZPZlZQVFluY0dsK25tNXJCeTlmNlBRTkxTaXhlajk2K3pwYXlReFYwQkJKK1JjU3A2VjQ0NlY1S3E0azhud2hTMEszdFowNHVqUmpod2FvY28yT0h5N3kyVVZVUkVtRVNjdzNWVllTWWR2Ym80Y09VVmZ0eEFsbU1MR1FBYnF6V1J3ZTZzZko3VGsxUGZxWDM2M1JpWFpFbDRXZ1Vob2lLYzlDVG95UDQ1eUgrZjNQRnFtNGtzakwzRE9PTm9PVmhRelFuZTE2Y2RsRm9XcEtJa3hpdnFteWtnamIzbDY0ZklsNjJ5ME90WVNoaFl6US9lMVdjYlhsb0pvYUlpbmJRcTZ0ZlBOTmV6dEF4WlZFV0lhZWNad2x6QzFrZ081dmwzbjc1alN1c3pSVVdVbUVTY3czVlZZU1lmczFqSU9NWVhFaEkzU1h1ME5jbXh4VVgwTWtDYjNoVUhFbEVkYXhaeHhoRExzTEdmanEwenQwbzV2ckV6ZisvMmxBc2xDUWhrZ1NtbThxcmlHUzJqYzhNWDRFUnhqRDlFSkc2RjQzVVZ5SkRwU2xJWkthczVCQmhMWHBHYS9ab3dFTEdhSGIzUlRSdlRJVXFpR1NoT2FiaW11SXBMMGEzbHBmdzJ2MmFNeENSdWltV3hZZFZ3V2xpNHNZdVRjY3FxOGhrbmIxakY4MVNjTVdNa0wzM1pyb3NuS29EWEVSSXpmZlZGOWN4UGhDVnNQeHlXRjZBUFg2OVlNNzZLd21KZzdyL2d0OXhJak9OMFdJaTVoVXovaTVWUnE4a0dub01WUXNtckFCOVNZck1xVG5tMUlFUllBdlpGM1E4OUR6L2p2N2ZGWktqVkNyZ2lKZ2UvdjgyYk95ODAxQmdpS2d0WlA0a1dHNmJTSFQwSU1wNzcvdjUvaFhpL1dpOXhVUEVOQ2E3NzYrUHZ4RUNNb1NFYVY5SVEzeTJkMGNYNXZ3TnorK2l0TWF5OVRSRWJxbzhxTDA5alo5cFFWQkJnZjZLTFNrcU5zRWVtc2hlNXdYbjM2Y0puVmZYMzlocnRpLzJIU0s0UXZwT0lid2hYUWNRL2hDT280aGZDRWR4eEMra0k1akNGOUl4ekdFTDZUakdNSVgwbkVNNFF2cE9JYndoWFFjUS9oQ09vNGhmQ0VkeHhDK2tJNWpDRjlJeHpHRUw2VGpHTUlYMG5FTTRRdnBPSWJ3aFhRY1EvaENPbzRoZkNFZHh4QytrSTVqQ0Y5SXh6R0VMNlRqR01JWDBuRU00UXZwT0lid2hYUWNRL2hDT280aGZDRWR4eEMra0k1akNGOUl4ekdFTDZUam1HRjcrMytxWU1KWnBneDV0Z0FBQUFCSlJVNUVya0pnZ2c9PSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiI5MzBiMGMwM2VmNDY0YWM0OTM1YzUzOGRjY2QxZmNkYiIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOnRydWUsInVwIjp0cnVlfSwibWF4TXNnU2l6ZSI6MTIwMCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6MjAsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4LCJ0cmFuc3BvcnRzIjpbInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XSwiZmlybXdhcmVWZXJzaW9uIjoxMDV9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMy0wNi0xMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxMDUsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiQ2hpcHdvbiBDbGlmZSBLZXkiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDIzMDYxMjAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIzLTA2LTEyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEwNX1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wNy0yMyJ9LHsiYWFndWlkIjoiNzc4N2E0ODItMTNlOC00Nzg0LThhMDYtYzdlZDQ5YTdhYWY0IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI3Nzg3YTQ4Mi0xM2U4LTQ3ODQtOGEwNi1jN2VkNDlhN2FhZjQiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiU3dpc3NiaXQgaVNoaWVsZCBLZXkgMiJ9LCJkZXNjcmlwdGlvbiI6IlN3aXNzYml0IGlTaGllbGQgS2V5IDIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9LHsibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQ2lUQ0NBZzZnQXdJQkFnSVVPa21VMzVJaWNYb1ZQamZ2d3BHN01ONnRIUFV3Q2dZSUtvWkl6ajBFQXdNd1F6RUxNQWtHQTFVRUJoTUNSRVV4RkRBU0JnTlZCQW9NQzFOM2FYTnpZbWwwSUVGSE1SNHdIQVlEVlFRRERCVlRkMmx6YzJKcGRDQkdTVVJQSUZKdmIzUWdRMEV3SUJjTk1qRXhNREEzTURrek1EUXlXaGdQTWpBMU1URXdNRGN3T1RNd05ESmFNRU14Q3pBSkJnTlZCQVlUQWtSRk1SUXdFZ1lEVlFRS0RBdFRkMmx6YzJKcGRDQkJSekVlTUJ3R0ExVUVBd3dWVTNkcGMzTmlhWFFnUmtsRVR5QlNiMjkwSUVOQk1IWXdFQVlIS29aSXpqMENBUVlGSzRFRUFDSURZZ0FFdGdPQzdJS3hpcE1KN2JWUFRUODNPZTkweHpIUENlYnh5Q3RnL1dyc1RyUmFTbllpZ21KQ0I4L2pxQk40T1FHMmRaNWpjTnNMNlN3SG9zWURSSmMrTzF6azlpNUdFWldmM0lyOTkyQTZkdU1zcDUxbHE0ZkFnYS9VelROOS9FYnpvNEhBTUlHOU1CMEdBMVVkRGdRV0JCVGZ4emc4R0d6WUFpZEtMNjN1aFNpcmFYSklLREIrQmdOVkhTTUVkekIxZ0JUZnh6ZzhHR3pZQWlkS0w2M3VoU2lyYVhKSUtLRkhwRVV3UXpFTE1Ba0dBMVVFQmhNQ1JFVXhGREFTQmdOVkJBb01DMU4zYVhOelltbDBJRUZITVI0d0hBWURWUVFEREJWVGQybHpjMkpwZENCR1NVUlBJRkp2YjNRZ1EwR0NGRHBKbE4rU0luRjZGVDQzNzhLUnV6RGVyUnoxTUF3R0ExVWRFd1FGTUFNQkFmOHdEZ1lEVlIwUEFRSC9CQVFEQWdFR01Bb0dDQ3FHU000OUJBTURBMmtBTUdZQ01RRHN2NEs2TmZKdmZ2emQwT3lnd0ovQUJpTHRndEpXaFhUZVVsbHRkcWE0V3NPTTl0dng2MzZ2NUZJdlpSa0sxWG9DTVFDZG9QUSthNGZEQkVpTnVqMFdzMzN1VVFoR3Jwc2VQREdmVlhuNGtFcGJUSUJlT2RWQXgvL1RyTUMvU1ZiK2JzZz0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBTkVBQUFETUNBSUFBQUJpRU5IOUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFEc01BQUE3REFjZHZxR1FBQUNadlNVUkJWSGhlN1owSGRCelYxWURYRFRlYXNTazJFRXd4WU1DQUFRT0duMERvRUNkQUNLWWtRQ0NoQkVpQUVFZ2doSVFFSEFpaGR4TEFYYkxhRnExNjc3MnZldTk5cC9lWjFYL2Z6RXBhMWdXRFo2V1Y5dDN6SFIwZGczWm4zL3ZtdnZ0bTU3MnhqT0hBTWJXQm5jTXgxWEVnNTFSVkhYVVROYzF0OW9LS3QrTHpINDNNdXptOGRIMUV3NmxSblN0dGd5c2M3bU5paVdPYzFERk9FalBib2FDdm9jZFgyWWRPaStxNE9MTCsxdkRTeHlOejM0N1BpeTJvcUd2dGNCTUUyT0wxNXR0aXY4NEpndERXMFpGVTVubzNyZndSVzhsMVlhVnJ0cFlmL1hYdG5HMXRsbWkzSlU2eUpJOVpVakdoQlBRNDlIdlU2Tnh0cmNkc3JUMTdlOFgxdTBzZXR4Vi9rRjZlV2w3YjJkVWxpcUxYbmdQR3ZwMWpHTWJWMUJxV1ZmS2NOZmZHOE5JendocU9EdStjdjZmUEVqbHNpU0VzTnNiaTRDeXh2STZBQ1EzMDduYXdxUGZCZ1lqaHd5SUdqZzdyT0hOMzNTMWhKWCsyNVVmbGx0VzN0SE1jNTNWby83RVA1d2lDS0sxdi9peTk5S0dvb3ZVN3lsZnNiSm9UMW9ja2k1ZVI1dkNMamJaWVNmVEdtRkFEK2gyY2krV1FDZUNEblowYjFudmN6c1pMZHBROUdsUDBaV1paWlZNclJWRmVrL1lUL3M1QmhnUGhQa2dxdkN1aWFNM3Ura1hoUFhPaVJpeFdHZ2tPMkpseDRiQnpvUWxwc1ZMSUFUREJVTUpLelkwYVdSTGVzemFzN3Q0OUJaK2xGVlUwdEJ3NDIzM0RPWjduYTV2YlBrc3Z1V3RQNFNrN1hmUEMreTF4ZW02elEwYWw5bnA3VE1nRFZvQjI4UkpJc2lDODc3UWQxZmRGRm55VldkYlkxZ0h6QWE5VmU4V2tjekR2YU92b2hCcnVvYWpDTThQckYwVDJJNWRoSUljWGhaZkdneWxtYjlCUUM5cEJjUzlBOGx1d3AvZWM4TnJIWWdxaWM4czZ1N28xVGZPNjljMllkTTVOa01sbHJ1ZGljaS9jVnJvb3ZCdkpDelVqSkZKc0crYkFnQ0hnaVZPd3hJbEx3am8zYkM5NTBaYWJVVkczdjhKdTBqbFhTL3Q3YWVVM2haVXUzOTVnaVJ6U3B3c3NydHN3QndlSk1oUTRzMmZnMkcxMW04SkxQc21vYUdqcjJPZlZrMG5uN1BubGoxcUx6OWhWTnkrOEQya0xOUno4OUg5cERHWS93TVFDVFNuSStXRzlaKytxL1oyOUpLR29jbkI0Mkt1WFQwdzY5MVpjM3ZWaEpjdkNPOUJmR2pVY1RuS1lnd2ZWZHJwMk5tYjU3cmFiZHhlOW41QlgwOUx1MWNzbkpwMTdOQ0wzekczbGgwWDBvMG9PQ2J2WGkySXdCd2FjQVhQaXhJWGh2V3UvTHYxZGRGNUtkWk5YTDUrWWRPN204TktqdjY3MVZuSXdZL1Y3T1F6bVlIQXc0TnljaUtGanZxcTVMYklzdkxMRHE1ZFBURHEzUHFKKy9zNE8vYy8wYnhwOFh3aURPVWpzK3ZBYTQxNndvLzN5NkliUHF3ZThldm5FcEhPblJuZWlMKzl0RTk4MDdQVnlHTXkzWXRPck9oZ25vMGJQdG5XOTYzSjc5ZktKU2VkVzJnYjE2eU9jZnJrRk80ZjVYaGp5eEhJV3A3ZzZkdWpOT3NhcmwwOU1PcmZDNGJZa2U5QlZGcjlYd1dDK0swNEJYRnJsZEcrcDU3MTYrY1NrYzhmRWt1Z2VLZXdjNXRCeGl1RFNDWEhFNncwSHZDWjhqSk5Dem9HaGZuK1B3WHhYRE9maXFkZSt6VGs5ejJIbk1JZU9OOCtScnpYczQrNFM3QndtQUdEbk1GTU5kZzR6MVdEbkxORWhqMStEQkpyUWRjNW83cWg5RVJsS3dPZWRZdTFtdVhPR1dQdkVWeksvL3hSTnpKa2docGc3ZTRGUFozeE0vM1lMS0xQV09jTWVReWwwUXJzbm1WQXRDclg3QWl1eHlFWXN0Uk5IT29obERuSjVMSFdza3pyZVNhMk1vMWJGVXlmR1V5ZU5jM0xDN09HVUJQTGtCSEpWSEhWTUxMbkVSczZieXB2VFpwVno0MWxxVWpqOUZ6aVA1MXFSV3d0MXQ0NktKVmM0U2ZCcGRRSjFaaks5THBXK0tKMitQSU8rS291K05wdTVJWWU5SlkvZGxNL2VWc0QrcklDOXM1RDllU0Y3bDg3bW9sbkMzVVhzZmNYbzU2WTg5cklNR2hSY2JDZTlqZWJYcElGZzlqaG5wQzVJWXhHUXpORHZNSEFzc3BGd0hwOFVUNTZaVEsxUG82L01vbS9JWlVDbWU0cTVoOHY0SnlyNTUycUV2OVFLcjlZTGJ6UUs3elFMSDdTSUg3ZEtuN1ZKLzJ1WHZ1NlF0blZLMjd1a0hWM1NUcDFkczRYZDNWSmtqeFRXTGNIbmZhS1MyNWpKTEl2Vm5ZTUc5R3ZWUURBYm5ETk8wUEdzTmkrR1dHS0hURWFkbGtpdlQyT3V6VUdKNnBGeTlvVWEvdlVHNGNOV0VXU0s2SkdkQTBycWtKSTdxcFlRYWlXbDFkSmFFNk8xc0ZvN3AzVndXaGVuOWZCYXI2RDE2ZlRQTGdaRnpTMTdoaVJQbVZ2OXVGVzh2WUE3UG82eVJPbUZoMS9iQm9JWjdOeUVhbnFKQnBYWmtYYnk1SGpxZ2xUNjJoeG1jeEgzWkNYL1NwM3dmb3U0clZPMDkwc1pRMHF4VzZtbDFWWVd5VFFpZVNqRnc2dGpzbWRzM3lzdFF5QUdCYytlYnZtWEpkeUo0SnhSN1BvMWNpQ1kyYzdwdVEwUzJ4RU9jblVpRFdNRUZDdC9yQmJlYlJIRHUyVklZMldFMnNScVBXQ1k3S0VWRDZkNlJNMGphMk9xWjh6ai9XUWhIWkRDdzd1a1gyRG52aDF2ZWtPNURRcVJ0Y2tVVkdtUGxNUFFLVzd2bE5LR2xHcEtoWkdSVnNBdHJOYUJvcFBUZG5aSzl4WnpNSUhGemgwUVBiMHR0S0haL3RWWnpPUGxIQXlnem42bGlsUzdlWTJRWWNUMFFDYkQ4YTBCbGVzTzdOeUI4QTZtYmhoTVZ6ako5ZWswVFBpM05BaldYcm1HVXFFK3cwbnR1d1oyN3R2UW5WdGdJMDZNSjYvUFlaNTM4V0hkY2dXaDlnc29zWGtQRk1kM0NlemMvakV5WEJTeHhJYXV0TjFSd0w3UktLUU15WjI4cG1EWkRpR3djL3RIZDI2cGpUdzNoWDZ3bFB1c1ZTeDJxNk9TQnd0M2lJR2QyeGRnbXc1a3VIV3A5TU5sM0xZT3lVV3AzTUZ1dzQzalFJR2QyeGQ2aGx0c0o4NUpvVUM0N1oxU0E2M2k2czJzd001OWsvRU1kNWlWV0pOTTNWL0tiZFdGazdCdzVnVjI3cHZvazRiNVZ1TGtCT3BuaGV3bmJXSXR6bkJtQjNidW0rak9IUnRIM3BqTHZOa2t3S1NCdzhLWkhkaTVjWXhSRmNvNEczbFJPdjBuRjU4MnJNQXMxWHNvT013TDdOdzR1bkFMck1TcGlhaU1pK2lSZTRUOWJMS040OUFDT3plT1Bxb3VqeVZ2eUdYZWJoYXJLRlhHT1M0d2daMGJKNHFZWnlYT1M2WC9VTTBsRDhyREVzNXhnWW9lWHR2ZEpkMFgwczdwbGR6Y2FHSzVrOXlVei82dlhXeGpOUVYvZFIrd0dCUzFpRzRKM2JNWkg3TE9lYjlVSlM1QVNZN1BHSmJaS2Z4NkM5NUo4NkRiT1FGNFd3REdkRm56QXRsMjl0SE1hRnM3cGJ1THVKV2g2eHg4NWlnQ2p1YTJmUGF6TnFtWm1hS3JJNkxxb1dRUERPTDlndGJOby9VUXJhd0cvZEhJYVBXMFdndFFhbzFPTmFWV2taTlV6a3pneUYzNkIwa2NVTFkwQ2pmbnNjYzY5ZlVRZ0YrUEJJSmdjMjV1REhGZUNnVkpMbmt3c05kSFFHZEdHUnNRd1MyMWpGQXpoNVg0QWRuYUsrL3BsbmQzeWRzNjVhODZwQy9hcFUvYnhJOWJ4WTlheEE5YXhQZWJ4ZmVheFhkMTN0R0JLYzVNQkk0Y1BnNThpci9XQ2ZlVmNPdlQ2U01kb2JuV0VGMGljUjl1SjYvUFpxQ2JHeGdOUnJRQUJRelpVQ2xtRFN1N3U2VjNXOFNYYTRXbnE3aEh5cmtIU3ptWXhHMHU1TzRzNUc0cllEY1ZzTGZtTWJma01UZmxNamZtTWpma01OZm5NTmRsSTY3VitkSE1CQzNqelVXZjRvcE01cHdVK3ZnNDhqRGJYdDBST0lMRk9mMmEzTHdZOUUzWEF5V2N2VThlQ1V5U2c0b05Ycm1VVUhkMVNTKzVoTHVMMmF1em1YVnA5QmxKYUhVN2xEWEh4NkYxL0N1Y0ZIemtvNEZZOGlnSENXa0FPTUtPZ0xOaTFyRFVUaTYwb1M4WTUvaDFSMEFKRnVkUU1ZSFdwVjZVVHI5VWk3N3BDc1ExT1JBT0tyYjBZZVhmamVJdmlya042ZlJKOGVRUkRoSUdkRU42eE1UbU1VWk43VXZFckFNK0ZMVDgxQXlwRXdTTGMrakRFOGM1cVIvbnNSKzNTczJzK2NNcUNEY2tldElHbGIvWENUQktRbFpEKzNSQWN4dTJHYjhZdjRjT0U1L2FyenNDU2hBNUYwMmNua2ovcG95TDZaVUhSUE96bkZ2MjVJNm9yOVVMMStVd0sySkoxT0xvUlBkcGVyOUR3Z1NJb0hBTytqc1Npam55b2pUbVpaZVFNNkpRWmwrV2c1RzZobEkvYkpFMjViTW54bEZ6OVhlY3RoTTl4QWtlNXhiWlNKaFN3UnkrbGxKRkdBak5DOVV6Qm9uVDJpcy9YTWF0VHFUbXc5c1pJNHZmWVdDbWh1bDNidHlBWmJIazdRWHNyaTY1bXpmNUxoSkdRUlBWTnh2RUgyWXhpMjNlMmhIbnRta2pTSnliRTAyY0dFODlXTW81K3hYQzdLc2tmWUlXMVNQL3Vvdy9QWkhTYytxVXo5UXd2a3kvYzNxU1cyQWx6MHFtZjEvRlo0K29ncWxydWp5ZXNUcEtmYnRadkQ2SFJVK1FncmVEU3M3dkdEQlRTWkE0dDhST1hweE8vNlZXZ0VIUTFGcHVERXJEM0JIbEQ5WDhlYWswbEl6RzIva2ZBMllxbVg3bklPdEVFMGM1eUt1eW1IODFDaTdLNUpXcmJ0bmo2SmZ2MTIvWFFaczFnM0I0WUoxZWdzUzVGVTd5cGx6bS9SYWhpVEhUT1VpWlhieTJyVlBhbE1lQzFwUFhSL3lPQVRPVlRMTnpxS0pIUDFmcTl5OTkwU2EyYzJiT1dTVnRySTVXUDJnUnI4NWlGcUlaS3hZdUNBZ1M1MDZPSnpjWHNaQ1F1Z1V6bldQVk1TZ1F0elNLbDJiUWFEdDY3Rnd3RUFUT29Tc1hxeE1vS0xuQ3UrVStVNy8xSWhWUHpvanljcTF3WVJxTjNnNWZKUWtHZ3NTNTB4T3BoMHE1cUI1NTBGVG5SbVZQMnBEeXh4ciszQlFLdlIxMkxoaVlmdWNpa0FkbkpGR1BsSFBXUG5uSVZPZUdKVS9pb1B4MEZYZDI4dmpWWUw4RHdFdzlRZUxjbWlUcTBYTE9aclp6OEdweEEvS1RsZHlaMkxuZ0lYaWNlNndjM1I1c3JuTXdVanY3NVNjcXVEWFl1ZUJoMXVjNWNPNUo3RnhRRVNSekNLam5qTHMxeloxRERJdWUrQUg1ZDNoc0RTcUN4TG5UOUhsclpJL0pkd2lQU0o2VVFmUmw2MXFZdDJMbmdvUWdjVzUxQXZYTEVpNnNXKzRWekhTT2tEMVp3OHFMTHY3ODFQSHJjNzd2anBrV2dzUzVrK09welVYY3RrNnBpemZ6ZXdoRzhSUzcxWC9XQ3h2U0dmdzlSTEFRSk02aDcxc0wyQy9heFRaVGQwUVhWVTh0cmI3YkxGNlZ4YUJsdytBY3ZwRnAyZ2tDNTlEUEZVNjBoNnZwOTVXb25yRk9YdHZhTVg1ZmlYSHpIRTUxMDB1UU9IZTBmdi9jR3dHNGZ3NUt1dGcrK1VIOWNaSGU1VjdZdWVsbG1wMEQ5Tnl6MUlidUUvNXJuZm4zQ1V2YVdPR28rcUpMdUNpTldZTHZFdzRHZ3NTNUJWYnk3R1RxbVdvK1owUUJTOHlOVmxiN2I3dDBSd0Y3QXRwTmtyQkU0RlEzclV5L2M5RDkrcnF2SHlTUUQ1ZHhDUU95NlF1cTNiSW5ZMWgreWNYRDdCVXRpUURuY0ZVM2pRU0pjOER5V1BMT1FqYThSK29UVFY3Zkttc2VtRWxFOWtpUGxITm5KZE9MNFUxUnRqTjJ2aG4zejhEM3dEQUJZdnFkQTZDekk0bWxkclJSK2lkdFlpT3JTcWJ1SVF5dkpXcm9vc24vT3REZXVlY21VL0JlaHVoZTV3d216TVB5QlpUZ2NXNitsYncwZy81SGcxQk1LR3dBTm5XbEZVOGxxWDdWSVQxWnlWMmR6WnllU0IzbnBHRHVNdDg0Z0NnOTUza3hVdUNCbWZpZlRXSkMvZS9LeEhsaTROdXd3VW5RT09lR2tnNm1FVTlWOHZFRDhvanA4d2c5MnpHS3A1SFI0Z2JrdDVyRng4cjVXL1BZaTlPWTA1Qjg1SkVPWXFFTlBTTUE3ZjVuZEo1ZjE4NElab1Iyd2VNY05ObXFPT3JuaGV6WEhWS25xYXUvZkFQbUowT1NWa0dxOWo3NXd4YnBMeTdoc1FwdWN4SGF3L1dIMmN5bEdjeUZhY3c1S2RTYVpHcDFJdHA1ODhSNGFtVWNkWHdjQ1Y0ZXE3UENES0I0Qlk3UldhWnp0QU54bEE3YTAxUGYxaFB0aG1sRHUyRXVBV3pFWWh1eHlFWXN0S0puUFM2d0VwQ2g1OFhzNnlTWnlNVEJhV0ZRT0Fmb2pRWE5mV1VtODNxREFJTmc0TFpNaHhmbVZNK2c0R2xpdEJLM21qSW93L1FDeHR6M1c4UXREY0xMdGNKejFmeVRGZHl2eXpnby91NHU5dTR0L0pOODlzZDU3QzE1N00yNWlKdHkwU2JEMzVzYmM1bnJnUnptMmh6dkhyOVhaekUvekdLdXlxU3Z6S1EzWnRLWFo5SlFhVnlhVGwrU1JsK1VScTlQb3k5SW84NVBwYzVOb2RZbVUyY2xVV2NrVWFjbVVqOUlvRmJwKzlHQ3dXRHFJanV5ME92WnhIaU5uZHMzMEM1UmNQcVMwSlMvcmVEQUEwYnh2blZBQTh5RzJuRklSUHZ6MTlGb0EvWGNFVFYxU0hIMnk5RzlVbGkzdEwwTDZhaHZvQzU5MUNwOTJDcDkwQUoyU3UrMWlJZkN1L3IrNWY5cEV0OXFFdi9kS0w3WktQNnJVZHpTS01MNTlzOEc0ZFVHNGUvMXdpdDF3bDlyQmNqRUw3cUVQN21FRjJyNFAxYnp6MWJ4djYrQ1U0Si92SUwvVFRuM0VKd1lwZHpkUmR3ZGFMdHQ5cHBzWmtNNnl0TS9TRVFXTHJhUjNxMExna3ErSUhJdUdsMmxnMUhtcC9sb29Xc25yeW1CR21EM0VTQ2ZxS0g5MUVuWk15cUJoWjUrUWV2aHRTNWVhOWNmRjlIQ2FKQVhvUnhzMEtrL05PcG9oSXRDMUZCYXRVNFZwVlVTU2dXaGxCTktHYUdVRWtxSld5bDJLNFdqU3NHb2tqK3E1STBxMlNOSzVyQ1NQcVRBaVpFMEtFUHQ2MENuaHd5bkI5UWtIN1dDdGVMejFmd0RwZHlOT2N5NlZCcFNJTHE1WVVJN3YyYWZGb0xGT1FDMGkwUmx5b1owK3RVNkFWcDVhbEpkVUlYSGc5RDBuOFl2Y0RJWUQrVUJaUDNFRUFBVnlnTjBoc0JrbkZUUVNUSWdvTk9qU1gvV0JSZ1ozaTFES24yMm1yK3prSVV4K3VSNFZCUk81cnpwVFhoQjVCd0FKVWcwY1VvQzJvZ3V2RnZxTVhWTi82d1BhQ3haODRDSW9HQTNyOVZTV3NhUXNxdExnaFA0M21LWW9kTXdkMEU3eEUvTUxYeGJmaW9KT3VkZ0ptR0htUVQ5ajNvZUJwZkF6U1JDSVhqVjB5ZDRpa2JWSFowU2xJTXdBVnFUaEhhTDl5YTg2ZEl1dUp6VE0vOTg5TjByZFg4SkMyVUsxRldtZmlVUmlrSExIaWhKWWNEOW9FVjhxSlM3TUkzK3hxMkVVMjllY0Rsbk5BRjZ0Q0Y1UlFiOVdyMEFGVFJqOWxmK29SbGdYaTJ0UXNVQzA5NHJNcG5sc1JRYVp3M3pmTHRnQ2dndTV3d2lpVGxSYUlYRVBVWHMxazZwUFFEUEp3bk5nUElZR3RQZXAveTVScmdxYS93aEdWT2Y3WUxST2IwaElOVmRrRW8vVThVbkQ4aW03Mm9kc2dFVDRWN0JrelFnditRUy9pK0xXZWFZanRvdUdKM1RUenRvaTZOanlldHltUDgwaVpXa3l1SFpoRWtCN1RnZ2FISDk4bk0xL0laMCtvaUoyczZ2RndKSE1EcG5vTGZDNmdUcW5tTHVxdzZwa2Rhd2RXWUZUTXM2T2MzYWgzWnlPVGVGV21ERmVjNUFQL2tXVzhselV1akhLamlZdy9hSkhselptUld5TnRiS2FYQXkvN3lRUFNtZW1nL2FUZGtJRzd6TzZTTXNOTVRoZG5KREJ2MThqWkEwcVBTTCtNcUphY0dyYU1INWxnYngybXpHKytTTXFSbGhnOWM1QUp6VHJ4SXZpeVdoNEgyNVRrZ2RVb1lEY0d0ZHlNYXc1RWtZVUg1ZnlhOU5waGZFNk5wTlFhb0xhdWNBUGRYQmZHS0ZrN3cyaDNtMW5zOFlrb2ZNdlhVOWhFUHhqRFd6MnVkdDBvL3oyQlZPZlJ1aEtkQXUySjBEaklaQVR4UW1yODJtLzFiSEp3OHFmWUxIM0dXd0lSdXM2c2tZVnA2dDR0ZWwwZ3R0eGlNMEFyeVQwQXh3RHRDZG14dERIT3RFejl0OHlTWEFWQjltWHBMSmEvNURNZURNYldTMFQ5cWtuK2F6eDhWUnFLa2pzWFBBZUtxRFV4QUcyU3N5R0Rndnc3c2xGNlhTZ1hodWY0aUZXL0xBMFBGTUZiODJoZGEzMThET0dVQmI2T1pCdGp2S1RxNVBveDR1WlQ5ckU0dEcxU0Y4RGVYUUFvYUxPa3A3cjFtOEpwdGRZcXpDTkZyYnJ3dk1Zc1k0WjZCckJ5ZmlZaHR4WmhKMVJ5SHp6M3JCMnF1NEtBM013emNEZk0vd2pJMkludWhlK2Q1aWJtVThOYzhRRGpzM0NiU0ZmbXZuUWl0eFlqeDVSU2J6U0JuL1FZc0Vvd05Nd1FnWnp5MitUNGphV0k3K3hGR1lTU3dPOUU1Q004ODV3RGdMMFJEZ1htb256MHFpYjgxam42MFdQbTBUNC9xVmNrSnQ1N1JoRWQweGl6UGZRUWEwVXkydC9xZEp2QzRuOE5lSFo2UnpnT0VjMGc0U0hscDJlbTRLZldNdTg1c3lEa2JiclIxUzRvQlNTcWd0ckRZZ2VDakZJNmpvV2hTNnJJY3QzRTkwODlyT0x1bStZdlJWR0dyWXdNMGtacXB6RXhqbVJhR2x4VWM1eURNU3FmL0xaRFlYc2s5WDhhODFpSisyU1dIZHNyTmZUaDlDNjZaS0NhV0tWR29wdEh5cmxVUHJDNkdoZXdXdFgvQU1pSjVCMFFQWmNVUkM2d2xnS2dmRE5FRHFVRHEwdnViRkYrYjdBamtZNEZRRXI2STFOVEM2U1JwYVphUHFTMittUHVDREp3MHEwRzVuSjlQb0JpZnMzSDZaU0hoQU5GcmdEdWF0aWlQUFNxWTJaRERYNWJKM0ZIQVBsSEpQVlBEUDEvQ3YxQWxiR29TM204UVBXOFV2MnRIaVBEaXo5L1JJVUQ3Yit1VFlmam1oWDA0YWtGTUcwV0srekdFbFd5ZDNXTWtmVVlHQ1VVU2hHMUgwZlNrbTFCSkNoUnhjUnFoUUJsUVNhaFdwdWlnVmhyWUdHaVZtT0JONmVHMVExTnl5eHFxZUtic1d4Q3BqY0dEL2JCQTJaTkNCL2NwL3hqdm55NFI4ZW52TnM2SzlubGJFVWlmSFV6REpQVCtOdWpTRHZpcUx2ajZIdVRXUHVhMkF2YXVRdmE4WUdmbnJNdTdSY3ZDUysxMGw5MHdWOTF3MS8zdzEvMmNYLzZLTGY4bkZ2K3ppWDZrVi9nYlVJVjZ0bitRZjN4M29WR2pyMXh1RWZ6VUlielFLYnpZS2J6V0o3elNqaGRZZnRZcWZ0MHRmdGt2Yk82V0lIc25XRHhNakdkSXpKT1plWG9Qc0dORDhCMWtXMHYvSGJSS1VkSXZ0MkxtRFpDTG5vZDA2MEFZbzZGK2kwU1U5eUgrTGJjUVJkclFuQ05USVVQOGQ3MFRwOEtRRXRQM0M2a1RxdEVScVRSSUYyWEZ0TW5WT0NuVmVDclV1RmUzVmNFRXFkV0VxdFQ2TnVRaElSMXlzYzhuM0JiSXZjR2tHYzFrR2Mza21zekdUZ2FrMzFBTS96R1orbE1QY2tNdmNuTXY4SkorNUU4NkhFaGJPQkVqUFVOcEg5c2dsYm5WQTFBSTNLOUp2SWRaMmRjdTNGN0RMWUJwaE5HWWd0SnRWenZtaEMrZTE4Q0F4L3NSQWZ4RW9FeWV4SXVZZUdwQjlBUmk4ZklGVFlxR05XR1FubGpxSXd4MVFIaERMblNUMHlxbUoxUGtwOUhYWnpFT2wzTDhhUlNoTW14Z3RjTGRNUS8zcTZKY2ZLR0ZQakF2a1BldXoyVGxnUWlCZnNTSU5qTTJMRHBLSnZ6SVYzK1B4SGg2a1p3TjAyUE5qMEYycnkyT1JmSkFJWWVqZjBTWFYwU29YbUhRSFV4a29aS0hHT0NPSjh0N2FCUGcxNmFFenk1Mzdma3lZT2wxNC9kTVoxeEZxMDNVcDFNTmwzSzR1cVlWUkF6RzNVTFN4Z2xIbGhScjBxQ3B3M1hzQWZvMXo2R0RuZ290OXlnZmFvZDJQaVNWV1lsMEtEYk9jK0g0WmFqdlY3TnNJNGVYS1NSWG1TWmVsTTFEN1l1ZENHOE8vQ0hTbi9qVlp6TDhhQTdYYXZJWlNZVFo5dGI0TUVUc1g4b0IyZTVBRXF4T29CMHE0UGQxU3I2blA0ek9pZ1VZM21OeVlNNzdpR2xLczMyRWNPdGk1bVlSZTJ4MmxQNmRxUzZOUVRacjh6Q0NJRmtiN3RGWDhTUjV6QXZRNGRnNkRKSWhDazFtWVZ6NVp5Y0VjMC9UckpoMmM5bVc3ZEdjQmMyTGc3aG5HenMwa2pLb3VHaTBOMlZ6RTZvLzFOdm41TGQyOHRyMVR1cWVJUFRsdzMvUmo1MllZK25pMzFFN2VsTXQ4MFM2MXNLcHM2dXkxVjlEQ3V1VmZsbkNuSkl3N0I2TDdIY01oZ3AyYllZQUJrV2l6NzZzeW1iZWJ4Q3BTNVUwZFh2c0VMYUpIZnJDVWc1a0tkZzZqZzV4eno0MGhOcVRSLzZnVENrY1YydFFySnYyaUZ0VXJQMVRHbldvNEY0R2R3K2pPellraExraWxYM0lKV2NNS1llbzNFbEFnUnZmS0Q1ZHhweVZpNXpBR3VuUHc4OXdVNnJscVBuVlFIalYxYzc1SjU1TDBaZjNZT2N5RWMydVRxV2VxK0NUMGJEUlR4MVpoZkd3MW5NUDFIR2JDZzdPVHFkOVg4b245OHJEWnprWDJ5TCtDT1FTTXJkZzVETUx3SUlaWW0wSTlYY1VubXAzbllONjZwMXQrQUY4cndVd3k3aHpVYzMrbzVsUE1ydWQ2ZVcxWGwzeGZNZmNEN0J6R2krNGN6RnZQVDZQLzdCSXl6SjYzZG5IYXRrNXBjMUVnVnh4aTUyWVl1bk56WTRpTDArbFg2b1M4VWNYY1hZTGFXZTIvN2RMdGhleEsvSDByeGd0eWpwaHZKVGRtTVc4MGllV2t5ZmVwTnpQYVI2M2lyZm5NY2REanlMbTlEdURRd2M3Tk1IVG5GdG5KYTNPWmoxdkZCa2FWVEwyZnFZN1czbTRTcjh0bGx1UDc1ekFJRUE0ODBEZFlodUZ2WjVmVXcydG1LdWNacXlMVjF4dUVLN09ZeVdlQytSM0RvWU9kbTBub3pzMkpKazVPSUI4cVkrTUhaTkxVWWc3MExYR3JmM0VKRjZjeFN3TzNPeE4yYmlhaFM3RFlSbDZZQ3BOV3Z0Q3RLS1lPckpLK0k5Z3pWZnc1eWZSQ1kvc0k3RnhJbzFkeUlBRlU5NXZ5MkU5YXhXYlc1UDJVYVdVc2NWRDVUUm0vT29HYVB6Nk8reC9Hb1lPZG14a1lCa1NnZlRET1RhR2ZydUpnWURYM1VSbVFNSWRFVDFTdnZMbVlBNjNuR01MQisvb2R5YUdEblF0ZW9MOE5vTzhodyttUEdEM09TZDFSd1A2M1hXeWdOY0hVZ1ZYMWpMVnoycGNkMGkzNTdPU0Q1N0J6b1lWaG15RmNCUHBsbVFNOUQralZlaUZ2Qk4ycWFlNUtDREM0bWxMZmJoYmhMUTZ6Nlc4YUNPR0FvSE51NHN6R0dFUVQ4NktKeFZaaVpUeDFUVFlEVTRlRUFibFBNSDlsSzB5QnMwZVVsMXpDK1duMEhKaEFoSXB6aG0yUnZwdlR6QW9pOXNMM1AwMzhEdmlvQml5d292M0xUb29uTDBxamYxN0VRaWNsRHNqZHZDYWJyeHg2cUt1MVYzNmtYTDliRS9vQ25QUHRHaE1KS3VmbVdnbkk2b3ZzeEJJN09hdXdUYkxVcnVNZ0QzZVFVRFlkNlNDUGlpV1h4WkxMNDhoajQ4Z1Q0cWtUNDlGK2VHdVNxSE5UcUV2UzZSOWxNL2NVc3krNGVLaTBDdHpLSU5xbXhOc3A1a1lMbzMzV0p2MjBnRDB1VHQ5OExoU2NnM3grcElNNEpaRzZJSTIrTEpPK1F1ZnlXY0hHRE1RVm1jeVZPc1lPaHpCUVhtZHNjcGpIYk1wbmJpOWs3eXBpZjFIQy9hcVVlN3lDZjdvSzdmSzVwVUg0cUZVTTc1RXloNVZHVmlNRHR1TWhlRnhHcUgrdkV5N1BZQTUzR0tPTmZ3ZVpSckE0cDIvRmVrb2lXcmI1UkNYM2NoMXY3SVFLclRBTGVGVUhiZXhhanpaMkJaUGVhQlQrM1NTODB5eSszeXArM0NwKzNpWkNHdHZaSlVYMHlMWmVPV0ZBeVJoV2lrWVZGNFdlT3pBa2VUZ1ZhUkc0UUZmbUJwUkh5dmpURStuREFuYzEyQ0Fvbk5QTE9LaGRMa3lqNGZ6ZTFTMUJNVnZzUmhTT0tnVXpuMEszVW9SUWk5M2VEYXpMQ2JXQ1JMdFgxNHp2WHQzTWFxQlhGNi9CL0dCSVJGdTJjNnBIbVpLSGhrTDJoUGY5dWxQYWxNOGVIUnZJSFRZTmdzVTVmWjB3ek5MLzNTUkNrb2M1bEtUdlhRK0lzd3ZqUThFa3dBRDYyd0RTbUtZRGxrMkZhRDVCS3g0NEpWNnRGeTdKb05HeitRTXFIQkJVemtHSkErVkxDeHVBV1JtTy9VY3ZXcnN2UVIwSnhiUXg1dmgza0xrRWxYTS96R0xlYXhIcmFGVTI5UW83amdNRUROL2xwQUlsNXRWWnpOR0J1My9KbDZCeTdxb3NCc3BxS0hITTNZTUR4LzRDV25sRTBxeDlLTW10VHFBV1FGOWc1M0FFTkZnVmtwejZacU53VlJhOWRPSTVKSUJmQjVrTGRpNlVvNU5ES3d1OU8zL3B2WUNkd3hIQUlHVXRZMGg1b1VhNEpKMDVQSEM3cE84TmRpNDBRMURSWFNRd1k3c3hsem5XU2FMSDhCc0RxMS9YQkFMc1hBaUdvbm1hR0cxN2wzUi9DWGRxSWpVdlp2elphSDc5RWlDd2M2RVdpZ2R0R2h6VkkvKzJnajh2bGRZZllhZzc1OWNwZ1FNN0YxS2hqWTMxOEo2NGZ2bTVhbjVEQnN4VjlWdElEUHc2SlhCZzUwSW5KTTNUeVd1T2Zobm1EVmRrMGdGODBzMkJ3YzZGU0lqYVdBdXJSdmRLejFiekd6T1paYkhqOHdic0hIYk85SUFDemkxNUtnaDFXNmYwWkFWM1NUbzkrUjBYdER6ZzF4MkJCanMzdTBQVzBJWGZ0Q0hsUDAzaVBjWHN1bFRxQ0llM3dhZkJOZ1BzM0t3TWFEOUc4Y0Q4dE1TdDd1cVMvK1FTYnNwbFRrbWdGdHFtTDcxTmdKMmJmU0dveUxaaXR4cmVKYjFhTDl4VHpGMmNUaDhYUjg2SHBwNFlVbjNiZjRvSkt1ZXV6bUkrYUVIN1cybFRjbi9zN0FnNFBTVU5mVnRQeUo1ZVFhdW4xWndSWlhlWEJEMzZRQW0zTVpOZUZVK2k5QWFORExiNXRmeTBFRlRPWFpQRmZOZ2lOakVtYjhNeCswTFQ5N09CMFhOVTh2VHdXaU9qbFJCcThxQzh1MXQ2dTFsNHJvYmZYTVJlbWNtY2xrZ2Q2ZER2Tlo5WXhlalg4dE5DVURtM01ZTjVyVjZBMDdSUDBOeXlCeGlXWmpVaVlraG5VR2RBUVBUcDlBcmdrNmVMOThBa29KM1RXbG10aVVWcHpFV3A1U1JhWnBFK0pEdjc1YkJ1NmRNMmNVdWo4RXcxZjI4eGUwMDJ2VGFGUHM0SnBkdjQ5ZDVwSDB6OUNBcm5BUDJ4cE9la1VMOHU0ejVvRmFONjVkaCtoSzF2Tm1QdFJjVDB5dEc5Y2xRUElxSmIydE10UWJyYTFTWHQ2SlMyZGtwZmRVai9iUmMvYXhNL2FoSGZheEZoK3ZsNmcvaEtIZjk4RGY5VUpmZFFHWGRYRVh0ekhudGxGbk5lS2cyemhHV3hwSGZoRnN4TWpmUm1tT2ZYNE5OSXNEZ1hUY3lMSWVBNExzOWs3aXhpSHk3akhpMUhnSUt6R1BpWUJxRE9yMHE1QjB1NSswdllYNWF3a0s3dUxtTHZLbVIvVnNEZVZzRCtKSis5SlkrOU1ZZTlOcHU5S3BPNUxJTlpuMGF2VGFaaDZGeVZRRUhYSE81QUZkdGN2Um05QktGcUV3U0xjekhFbkJoaXNaMDRObzQ4SlpFNkk0azZNeG14Sm1rMkF4L1Q0SFFna1FLSFRrMUVpL2doWGYwZ2dUcEpYOU8vTW82Qzdqbk9TYTdRbC9zZjVTQVB0NU9MYkdoWWdCYno2bVdrTkMvQk41ajZFVHpPR1VBN0FuREtoaFRHcDBaRWZ3TnZydG9uSUphQjM3OERlN1ZxY0JGY3prRjdvYk5XUDEvOTlwSUphZlJNTmlIWkJETkZNaitDTGM5TnRpUG13UGkxMnd3aTZKekR6SHF3YzVpcEJqdUhtV3F3YzVpcDVxQ2RvN0J6R0hNd25JdW5YbXNRdlhyNWhJOXpzYVFsWmN3U3kvdi9QUWJ6WFFIblVpRFBFYThmMkxrVkRyY2wyWU9kdzVnQWpKWkpubFhPMFMzMXZGY3ZuNWgwYnFWMUFPbnA0Q3hXeW1JbC9WOEZnemtZd0J6d0o1WUQ3Vlk3QnQrc3BiMTYrY1NrYzZkRmRWaWlSaTAyQmdGLzV2ZGFHTXpCWUtNc050cGlweTJSSTJ1dG5lL1dqSHIxOG9sSjV5N2FVemQvUnp2Nk0waDE4R2UrTDRUQkhDUmdtNE8xUkxzUDI5RzJNYXIraStwK3IxNCtNZW5jcmVFbHk3NTJ6WWthdHNSSkZqdmovMW9Zek1IZ1lDeHg0cHlJd1JWZjE5d1JXUnBSMWVIVnl5Y21uZnR0Wk83WjI4b1dSdlJiNGlXa0tpN3BNTjhWY0FiTWlSTVhoZmVldDdYMG1aaTh0T3BtcjE0K01lbmNPL0Y1TjRhVkhCUFdnWkljL0NVYVhyRjJtSU1HaEFObmRITlc3Rzc5Y1ZqUlI0bjVycFoycjE0K01lbWNzNkR5dDdhU3MzYlh6US92OVFxTFp4S1lnOGNRTG9aY3NMdm4zTjJ1Wnh3bHlTVlZROE1qWHIxOFl0SzV1dGFPRDlQTGJ3MHJXYkd0emhJeGFJbVgwV1FDcHpyTVFVR2lLN3RRbFlYM0g3K3Q5cmJ3NGkreUtwczd1aVJKOHVybEU1UE9FU1NaVmw3N0oydnVKVHRLbDRSM3c2aU1YZ1ZmcThOOEsyQUllT0lVTEhIQzRXRWRHM2VXL05XZW0xTlZUOVA3dURnSE1lbWNxcW9kblYyUk9hV1B4aFN1RGFzOUxLSVBaVXNubUtkZk9zSG1ZZmJHcU9IMEs4QVdHN1Z3VDgrNnNKcW5iSVgyL1BLZW5sN1BmcGJOVHpvSElRaENRMnY3bDVsbDkwWVVuTGFqZWtGNEg3cHVnaTZkUUdHSWF6dk1Yb0FWNEFZWTRoUVhodmV1MlY3NVlGVEI5dXl5bG80dVVkekhONjFHZk1NNUNKWmxLeHBhUGswcHVpK3ljTzN1dXFYaDNYTWpoMUhtaE5vT1FQSkJ6Z1AvY05vTFNZeGgxSmd1R0VwWXFYbFJ3NGVIZGEwTHEzMHdzdkRMak9LYTVqWklYbDZmOWhYK3prRlFGRlhaMlBwVlp2bWowWVViZHBRZXY3TnhibGd2dW9BQ0ZTSVlEVytEaDlxUUJRMm1EQnBNalFIUXhzemIzYjF5UjhQR25hVlBXZ3UzWjVlN1d0b1podkdhdEovWWgzTVFITWMxdExSSDU1YTlhTS9idEtmMDdMQzY1V0h0aDRYM1d2WU1XcUxkM25lRklSeXFQVXdJSWVnWmh3RUg1a1FNd21DNmZIZmJPYnRyYjlzRGs0WThxT0dhMnpzUG5PR00yTGR6RURBZWQzVjNwMWZXZlp4WjhaU2o1T2F3NHJWYlM1ZC83WnE3dFFYZENnQkhrRHlHN3ZIRWhBN1E0OUR2a2NQenQ3VWN1OVYxM3JheVc4T0tuM2FVZkpaWmtWVlYzOVBUczg4ckkzdkhmcDJEMERTTkpNbjYxdmI0b29yM0V3dWVpczc3YVVUWlpWRU5aMXU3VG5FTXJuSzZUM0FTSitocjBER3pIUXI2R25wOHRXTndyYlZ6WTFUOTdSR2xUOGZrZjVpVW4xUmMyZFRlQ2ZVWTJPTDE1dHZpUU00Wkljdnk0T0JnZFZOclNuVnpXR1g3NTlVRDc3cmNiOVl4VytyNTE0QUc5Q2h3ek95bm5vY2UvM2NkODI3TjZCZlYvWHVxMnROcW1sM05yVU5EUTRxaWVGMDV1UGgyNTNEZ01EZXdjemltTnNiRy9oKzlQNytLZktPK1JnQUFBQUJKUlU1RXJrSmdnZz09IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiY3JlZEJsb2IiLCJtaW5QaW5MZW5ndGgiLCJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiI3Nzg3YTQ4MjEzZTg0Nzg0OGEwNmM3ZWQ0OWE3YWFmNCIsIm9wdGlvbnMiOnsicmsiOnRydWUsImNsaWVudFBpbiI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6dHJ1ZSwiYWx3YXlzVXYiOmZhbHNlfSwibWF4TXNnU2l6ZSI6ODk2LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxLDJdLCJ0cmFuc3BvcnRzIjpbInVzYiIsIm5mYyJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XSwiZm9yY2VQSU5DaGFuZ2UiOmZhbHNlLCJtaW5QSU5MZW5ndGgiOjQsImZpcm13YXJlVmVyc2lvbiI6MSwibWF4Q3JlZEJsb2JMZW5ndGgiOjMyLCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6OCwidXZNb2RhbGl0eSI6MjA0OSwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjMwMH19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTAyLTI3IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiU3dpc3NiaXQgaVNoaWVsZCBLZXkgMiIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjUwMjI3MDAzIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDItMjciLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MX1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wMy0yNSJ9LHsiYWFndWlkIjoiNzJjNmI3MmQtODUxMi00YzY2LTgzNTktOWQzZDEwZDkyMjJmIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI3MmM2YjcyZC04NTEyLTRjNjYtODM1OS05ZDNkMTBkOTIyMmYiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiU2VjdXJpdHkgS2V5IE5GQyBieSBZdWJpY28gLSBFbnRlcnByaXNlIEVkaXRpb24gKEVudGVycHJpc2UgUHJvIn0sImRlc2NyaXB0aW9uIjoiU2VjdXJpdHkgS2V5IE5GQyBieSBZdWJpY28gLSBFbnRlcnByaXNlIEVkaXRpb24gKEVudGVycHJpc2UgUHJvZmlsZSkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2LCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX0seyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbImVkMjU1MTlfZWRkc2Ffc2hhNTEyX3JhdyIsInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Iiwic2VjcDM4NHIxX2VjZHNhX3NoYTM4NF9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjYsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NiwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURTRENDQWpDZ0F3SUJBZ0lVVWNtTVh6UklGT2dHVEswVGIzZ0V1Wllaa0JJd0RRWUpLb1pJaHZjTkFRRUxCUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JCSURFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURtNTU1YldZOVdXK3RPWTBySVdIbGRoK2FOYW5vQ1pDRmg3R2szWVpyUW1QVXcwaGtTRzZxWUhRdFArZlp5UzMzVkVydmcrQlFxbm11bWdOaGZ4RnJrd0VaRUxlaWRCY0M4QzRBZzRucXFpUFdwenN2STE3TmN4WWxJbkxOTEZjWlkvK2dPaU42Wk9UaWhPNS92QlpNYmo5cmlhQWNxbGlZbU5HSlBnVGNNR2FFQXlNekVNTnkybm02RXArcGpQNWFGNmdpMjF0L1VRRnN1SjFqMlJqL3luTS9TZFJ0K2VjYWw1T1lvdHhIa0ZiTDl2dnYyQTJPdjVJVFpDbHc0Yk9TOW5weXBRaW1PWjVRQVl5dG1ZYVFwV2wvcE1ZejZ6U2o4UnFrVkRORUpHcU5mVEtBMml2TFl3WDZsU3R0TVBhcGcwSjg0bDlYMHZvVk4vRnBTNFZDVkFnTUJBQUdqWmpCa01CMEdBMVVkRGdRV0JCUWdLRkFoRzZSYVcraFR5NTJkeGVUOGJDOTZIekFmQmdOVkhTTUVHREFXZ0JUUzd1OWFJbzA2YlZ3amx6M3loZFVtOFNWN2tqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQTRHQTFVZER3RUIvd1FFQXdJQmhqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFZTXpnTHJKTElyME9vdlFuQVpyUklHdWFiaUhTVUtTbWJMUldwUmtXZUF0c0NoREVIcFhjSi9iZ0ROS1lXb0hxUTh4UlVqQjRDeWVwWWV2YzNZbHJHOG83ekh4cGZWY2FvTDVTZXVKa3pIeEtuNGJUYVNwOStNdndhbW5wNjRrWk1pTmJGTGtuZlA5a1lLb1JIa01XaGVSSjFVc1AxejRTY21rQ2VJTGZzTXM2dnFvdnFqV0NsRnNKcEJjc2x1WUhXRjdiQkoxbjRSd2crQVRFb3BZNElnR3Y2WnZ3YytBOXIrQVQyaHFwb1NrWW9BbCtBTll3Z3NsT2Y5c0plMFYrVEE5WVkvVWxhQm1QUFRkMC8vcjl3dmNlUFdaa1BqS29BQy96VU5oZkRiaDRMVjhHSHMzbHlYMlhvbUwvTE5jOEpZenlJYURFaEdRdmVvUGhoL3RyMWc9PSIsIk1JSURTakNDQWpLZ0F3SUJBZ0lVUjM4bXEyNlNmMnN6VlYyQmRHNldFTjdrdVdVd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVJZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU5ZMFdiOW9Qb1JvS29ReVdQYUpwejExdnJXVGc2elR0bU5qMlZvS1JueXZLR1JxcHpiODN3NWw2WUE5NlVZa1lCRFFQMGlsTzJEUGU2d1dxVlI1ekRmUnpkY0g4YmgrTDdkR0d2YWU2aFJUWmhrRmtDcFhEczRIY2NrbnJEZjhGQ2xKN0hlMzlKZjQyL0cxUW0yeno5V1dtclBYdGdpSy94MDVHanNRZkd1REcxemY1UVRVVWllOGx3eW1LM1RmZE92TmVlSkFBUGUycG43SXRmUmIrclZyTldpRHpsUm4ydk5uWjJ3UG80d0gvV0o2ZGhYWkcrck1XVCthNkJvY2cxVWZJdzZrZHVuRzRiVHBaenN2YWNGWXlSMG1wZitEZU9ucFNXQW15d0pXSHZUbGYyWVh4RnllWGNUQUNkUWxjTU5HSjJWaFpRNDh4dFA1L1JCUC84a0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ2h5NDJva2lxY1RTMWlxYS9IUldqa0JuNEgvTUI4R0ExVWRJd1FZTUJhQUZPcTNRcENlREh0a2V0dFVmQU82ZkU2ZjJLRmhNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUFuK1JISVBidE1FRE5kVDFnOEgvUml0QWtVZExnQXQxdFdHV25sajlrbmJ2NC80R2xYN0M5cDQ1ZWZQTzkvYVpMNk9WMVhSS0JpNkttdEJXNUs3bnVZRW5NeC81QnFCU2JMVDdyaGR1QzQ5VEJlTWI5UEhkWHNUbFNWTlllZnIxZEdpZHI0ajB4VkJRTGIxcmtuREFiZFdEektmdm5heUtPOEZyd2U3SHg4NDNNRy9ySitjMFhydVV2YmZWVENITGlJV2hNN29ORGhMOHhvYjZ4VW85S0xLY1NMK0l0WXNPMy85V2I4UTlHanNxTDRGWHNEY0cxU2FZaDdLcGZ1TW1PaXhxekpaTzJuSWljUFlSZzFJMlN1aVVmWU83MHRtZEhjYmwra1NRbVNZdDdycTR2aUlMZzJHeDNqOXJJVHVXVGpiYVVhU1NReGdPbU1TSHV5ek1BQyIsIk1JSURTRENDQWpDZ0F3SUJBZ0lVRHFFUncrNFJuR1NnZ3hnVWV3SkZFUERSWjNZd0RRWUpLb1pJaHZjTkFRRUxCUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURJN1huSCtadkR3TUNRVThNOFplVjVxc2N1Ymx2VllhYVJ0M1liYXhuOWdvZEx4NXN3SDBsWHJkZ2poNWg3RnBWZ0NnWVlYN0U0YmwxdmJ6VUxlbXJNV1Q4TjNXTUdVZThRQUpiQmVpb1Y3Vy9FK2hUWlAvMFNLSlZhM2V3S0JvNlVMZU1uZlFaRHJWT1JBazh3VExxMnY1TGxqNXZNajdKdE9vdEthOUo3bkhTOGtMbXpYWFNhajBTd0VQaDVPQVpVVE5WNHpzMWJ2b1RBUVFXckw0L0o5UXVLdDZXQ0ZFNW5VTmlSUWNFYlZGOG1scUsyYngyejZva1ZsdHlEVkxDeFlicFVURUx2WTF1c1IzRFRHUFVvSUNsT200Y3Jwd25EUkxWSHZqWWVQR0JCLy9wRXl6eEEvZ2NTY3hqd2FIMVpVdzliblNiSHl1cktxYlRhMUt2akFnTUJBQUdqWmpCa01CMEdBMVVkRGdRV0JCVHF0MEtRbmd4N1pIcmJWSHdEdW54T245aWhZVEFmQmdOVkhTTUVHREFXZ0JUUzd1OWFJbzA2YlZ3amx6M3loZFVtOFNWN2tqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQTRHQTFVZER3RUIvd1FFQXdJQmhqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFxUWFDV014VEdxVlZYN1NrN2trSm1VdWVUU1lLdVU2K0tCQlNnd0lSbmx3OUs3SGUxSXB4WjBoZHdwUE5pa0tqbWN5RmdGUHpoSW13SEpneHh1VDkwUHczdllPZGNKSk5rdERnMzVQWE9melNuMTVjRkF4MVJPMG1QVG1JYjhkWGlFV09wem9YdmR3WERNNDFaYUNEWU1UN3c0SVF0TXl2RTd4VUJacTJianRBbnEvTkRVQTdiZTRIOEgzaXBDKy8rTktsVXJjVWgrajQ4SzY3V0kwdTFtNkZlUXVlQkE3bjA2ajgyNXJxRHFzYUxzOVRiN0tBSEF3OFBtcldhTlBHMmtqS2VyeFBFZmVjaXZsRmF3cDJSV1p2eHJWdG4zVFYyU0J4eUNKQ2tYc05EMDVkQ0VyVkhTSklzK0JkdFRWTlk5QXd0eVBtbnliMHY0bVNUenZXZHc9PSIsIk1JSURTakNDQWpLZ0F3SUJBZ0lVVG5iYkdJUjJOSHZ6cUlLRkFlUXdHMVhCaXMwd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JCSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVFZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU9zWGozazA0QmFuNFRZZHRaS3FEL09QSnh5RHlhUG1DQlVGVWlhWklnVHRlWm5qM1gyNURoZ3BaWlhzQzREMHlkSWNybEE2d05VSW5PUkwvTDl6QmJURUlNQVZNR282ZzdVS0FtYjJNRjZBSGJuaFlKZDllaWt1cFZOV1NoSE5ZTmM0R0JkTzFZTjZBZlVxdkpoSGJlM1Y0U05NUG1CUkVLSlBWejdUaHdnbWdnVGU4V3MySzAvd3NxdjJ3U0U3cGJDQnNVWmhJWDUxYlpNM3BxRHdKUFRtUkZFdnQwLzZ0RzVlTzhGM2oxNE9YcWZFaG1qbjFWdnhLRFlRT0xaQXhDd3dnQzBQNENkZld2M3k4UFNSOEkzNTRoTzFZK0d6Tmp2SXFYMzhOS0x5d3VJWUhGZXJPeE5seEVNQnZGaFlCdVJ1WUFra2dVYVBxTjZVQmhzSUxyc0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ0NvUkhoaXlObmJuWFJXSUw2WkJYb0JYOVlUTUI4R0ExVWRJd1FZTUJhQUZDQW9VQ0VicEZwYjZGUExuWjNGNVB4c0wzb2ZNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUNRRmFmSkkxLzVXZzlDRUVpbUUxUlA1NFJnUXdUTlRPT1FzTEFDVGUrckl0bEZRekM5WkRoclY4Mjh5WDdqenkrQUFzcDNpeks3VDF0aDJkbDdtK3R1MHN3MlBhL29sYzAybnQ2UHlJdzM0OGdhSHpoSTErMEtFNDVxeHZGRGVMMmxNeGJQZkNZdnlFRWFZemppUUVMVTU5NTFwWEdXeUtNYS80Zkx0TytaS09YaE11VmVxNHJYRFBJNTRXNkpIT2lBYWlLZGl3KzVlM2Mya3QvakZJUXRNNnZNWGc5TE5GemRqRVROdDIwVlg5UWV2UnBGWmZ1Y01HOXdDYVFEb0ZsUHpwVE1KS2hQZXYvaW1KbVpZaEtmcjBsTGNlbXRxakl4TEFvcVpkT1lmSEJnNit2QWNkUEkvaWF1R3BVQXY3WCtVS05tRHdqWjJCYUg0c0x3aEIybSIsIk1JSURQakNDQWlhZ0F3SUJBZ0lVWHplaUVESkVPVHQxNEY1bjBvNlpmL2JCd2lVd0RRWUpLb1pJaHZjTkFRRU5CUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTVo2L1R4TThySVQrRWFvUHZHODFvbnRNT28vMm1RMlJCd0pIUzBRWmN4VmFOWHZsMTJMVWhCWjVMbWlCU2NJWmQxUm54MW9kNTg1aCsvZGhLN2hFbTdKQUFMa0tLdHMxZk81M0tHTkxadWp6NWgzd0duY3I0aHlLRjBHNzRiL1UzSzloRTVtR05ENnpxWWNoQ1JBSGZyWU1ZUkRGNFlMMFg0RDVuR2R4dnBwQXk2bmtFbXRXbU1ud08zaTBUQXVjc3JiRTQ4NUh2R000cjBWcGdWZEpwdmdRamlUSkNUSXErRDM1aHd0VDhRREl2K25HdnBjeWk1d2NJZkNrenlDaW1KdWtoWXk2S29xTk1LUUVkcE5pU092V3lETVRNdDFid0N2RXpwdzkxdSttc1V0NHJqMGVmbk85czBaT3dkd01SRG5INHhnVWw1Wkx3cnJQa2ZDMS8wQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQjhHQTFVZEl3UVlNQmFBRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRTXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJEUVVBQTRJQkFRQzNJVy9zZ0I5cFo4YXBKTmp4dUdvWCtGa0lMa3Mwd01OcmRYTC9jb1V2c3JoenN2bDZtZVBNcmJHSkJ5SjFYbnF1QjVzZ2NSRU5GeGRRRm1hM21pbzhVcGYxb3dNMVpyZVhySjBtQURHMkJwbHFiSm54aXlZYStSMTFyZUlGVFdlSWhNTmNaS3NEWnJGQXlQdUZqQ1dTUXZKbU5XZTltRlJZRmdOaFhKS2tYSWI1SDFYZ0VEbHdpZWRZUk03Vm9sQk5sbGQ2cFJGS2xYOHVzdDZPVE1PZUFEbDJ4TkYwbTFMVGhTZGV1WHZEeUMxZzkrSUxmejNTNk9JWWdjM2lyb1JjRkQzNTRnN3JLZnU2N3FGQXc5Z0M0eWkweEJUUHJZOTVyaDQvSHFhVVlDQS9MOGxkUms2SDdYazM1RCtXVnBtcTJTaC94VDVIaUZ1aGY0d0piMGJLIl0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWZDQVlBQUFDR1ZzK01BQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBSFlZQUFCMkdBVjJpRTRFQUFBYk5TVVJCVkZoSHBWZDdUTlYxRkQvM2Q1OXdlUVNJZ1M5QVFBWGNGTEFRWmk5ZnBlVnoxdFkvV1RacjVXeHBjN1c1a25MYTVqSTNaODVzclMybk0yc2p0V3daUzdJVUg0SDR4Q25FUXg0REFaRjc0Vjd1czg4NXY5L2xJbkJ2VkovQjRQdjludS81bnUvNW52TTU1NmZ6QS9RdjBIYi9JclgzVkZLUG80NWNubTRpblVJV1l3TEZSbVpRVXV3akZHL04xaVJIaDFFWjBOUlZSdWRxdDFCZCsyblNLeVMvT2h5czArbGszZS8za1E5cXZENFpVdGE0VlZTVXVZMGVpcHlpVGhBZm9jb09SVmdEdXV3M3FLUmlBZDNyYmNFdGpUallJb2Y2V2FIc0NtelZQV0NNeCtjZ2g4dExxV01LYU1Xc1VqTHFvMlJ0SklRMG9Pem1lcnBRdTRlc1pnc09Oa0d4SDdkMGtkdlRUMTdzNE9NVTdWSThaaGpnR2FNK0FxOWlFTnU4UGlmMXVkejA3TXd2S1dmOEdsVm9DRVkwNFBDNVdkVGFYWUZiUjh2TnZMNSszS2dmYjV4Tk15YTlSYW1KaXluYU1sR1RWdEZscjZiYTl1K3BxbkVYNHVNdVJSZ2pTWUVock43dXRGRmU2bHFhbDdOZmt3NWltQUdIeW5QcGJrOFZtWTB4c3RucHRsRkNWQ1l0elR1Qk44M1FwTUxqVHRldmRQelNVbko3ZThta2p4WjM5ZlhiS0RmbGRacWJ2VStUVWdHbkJWRjZmUTJpUEhnNFcxNlVXVXd2emJrMTZzTVpFK1BuMHB2ejdKU2V1QXllczhsY3BDbWFLdW8vcCtxV3IyVWN3SUFIV3J2UDBZRXpoWEF0TEFic3NIaHA3aUdhbXZ5aWpQOHJ5cXJYVVdYOVhvb3d4eUF1Zk5CcnA0M1BPQkZYWmxrZjhNRFJpcWNweW93QXdwdXoyeCtmV3Z6L0R0ZGU5c21zenlndGNSNkMxd2JkekJsNk9scTVXTllZNG9HYXRoSk1ya1RFeDBqQVJTSEFWcys1cllrUU5YYitRZ2ZQTHNRNmdYeUluc3JlUWZtcG03UlZGWWZMODZuMWZpVU9rWXZTaGtVUHh2YnVrem95NksxaWhNMWhvM1h6VzZFdlNmWEErZHBpV0dhV2QrZG9Yekx6bUd3S1lGTENBc1JBbFBCQWhNbENGWFU3dEJVVlByOEhnVmNKSFdxK0YwMHBscitETVRkclA0enZ4WTExa05NaHhUK1NlVEdnK2Q0VjVMUUppdHlVR0pOQjhWRlpzamdZQlpNL0lJL1hDVGtqMHF5RE9wRjJBVlExN0NJalVwL0RuVDFVa0w1RjVnZGorc1Mxd2cxZ0UzZ2lnbTYwZkNYelNuUFhieUFQYklYditJRHBFMTZUaGFISVM5c2t5aGxtTUU1RjNjZnFBS2hxMkMwRTVQSDFnWWFYYUxQRGtaRzBIREpPbktXSHA1MUkwejVTT3V4OGUxV0F1WnpkSFFyVGtwOFRtalhvSStsYTB3R1pzenVicWJPM2lmUTZBL1c3dlZTWXNWM21SMEpLd2tLYzRXSGlCa21SOEkzQ0NnSTg3b09MNHF6VDVQK1JVSkJlakVPZ0FQSzhoWVB6YXRNK2VJVHAySU85eVRRbWVyb21QUnh4MXF4QWNzaWxlL3ViU2VFYmNXUUdZRUNnaGNMWTJIeUtqb2dqSDI1aE1wanBVdjFPdWdsaTRlaDJlUncwTzMyYkpqa3l1Q2dOemcwdnpsWU1TaVNzMHVvbzRNRzdoTU9qQ0VhWDF5RkUwblN2akJ6dVRuRXBLODZaOElvcUZBSXVidzhrZzlBckVhUkVXU1pJK2pINFhicDZnOUU5RW5KVDNvYVJ6RE4rTVVKQlFESG41NmE4b1VtRUJ1c094QnMvTjUrdEpFYlBrQUZEajhVR3ZPcy9JV3ZjU2dsR0JodlM3L0ZUWWZwV0dZZERZOGZQQXhXU0EzNXNUQzRwNCtMbTRBYXFJb1BlUXRmdWZLNkpoMFpoeGxic1VYT1NtWE5pZkQ1WlRBa3lEb2ZiYmNjbHhuQThXTkFxeENiUk55a2hYeFFwYUR3NjdmWFVZYnNpRzBLaHR2Mm9lSXZoOHJoUU1ZT2NFQXFYRy9lSSt6bmdPYzV5eHI4cTgySUFNMWMvRkxGT3BscXU1ZUZRWHJNWnpHY1ZDalliTFdHNUk0QlQxZXVScmxieHROT3RNaXREREVoTFhJSXluQUF2dU9FV0UzWDNOZEFmdDk0VmdhRzQyWElRdDBaWDZQZUNFL3FRRmU5cks2SHg3WVU1MEt2SDdmVzRmUytxN0tLQkp4c2dnQlg1cFNBR2gxaklyVmg1elE2dzNSZmFhaEJYbS9hQ2JDWlRqQ1VGVVR5V1pxVzlwNjJNakpQWFZxT3JQZ01PNE52NzRHa2Yrb3dmdE5WQkRRbmpGSnFIU3cxN3BYdmhXVzVLWnFlL1E0OU4vVVNUQ0FWV29RWEZJSEJIWFhlM0ZQclVEc3VHRG10Ri9oSEtUSHBla3hoaUFPUEkrU0pxNlM2SEY0STlZV3prQkpUbzQ2aVVNeldwOFBpci9SaWR1THhLWXNTa3NWOHZMbE9RdmhHWDJZbFIwT0JoQmpDK3UvZ0VjdlkwQXBLN1lrNDFOeGpQU1FuV0ZIVEY2NlVyamdldkI4Q3U1YStsMnZZU1JQdHVWRG83M2hoZE1TSG5VWDd0VGpzVlpHeEFsL1dwdGlPSUVRMWduTDI5bVg2L3RSMXRtbGtZajhXNFgrQ1NqV2NVREdZMU5wUy9DN2hTS3FpTUxNL2wyUW1TV1o3M0RkeitnaW84QkNFTllQUTQ2cW5rendYVWJxdkJreGpVUXNXZlpGZ2J1bzNyQWYrd043ak9POTAreW54NFBpM0wrMG5ZTDFTY2hEVWdBUDRnUFYvN0lkMXErMUhTaG11R2tJcVdSUGd5eE1GcVA4SGZqVG5qWHdZNWJRZmJKY3Q2T0l6S2dNSG90Ri9IZTFlZ3NheEhTcUc2d2ZkbVE1eDhOeVRGRnFCY3AyaVNvd0hSM3lrNSszNmhGN3ZYQUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzFfUFJFIiwiRklET18yXzEiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwibGFyZ2VCbG9iS2V5IiwiY3JlZEJsb2IiLCJtaW5QaW5MZW5ndGgiXSwiYWFndWlkIjoiNzJjNmI3MmQ4NTEyNGM2NjgzNTk5ZDNkMTBkOTIyMmYiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJsYXJnZUJsb2JzIjp0cnVlLCJlcCI6ZmFsc2UsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjp0cnVlLCJhbHdheXNVdiI6ZmFsc2V9LCJtYXhNc2dTaXplIjoxNTM2LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjgsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4LCJ0cmFuc3BvcnRzIjpbIm5mYyIsInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi04fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotMzV9XSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5Ijo0MDk2LCJtaW5QSU5MZW5ndGgiOjYsImZpcm13YXJlVmVyc2lvbiI6MzI5NDc2LCJtYXhDcmVkQmxvYkxlbmd0aCI6MzIsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjoxLCJyZW1haW5pbmdEaXNjb3ZlcmFibGVDcmVkZW50aWFscyI6MTAwfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMTItMjIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2LCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IlNlY3VyaXR5IEtleSBORkMgYnkgWXViaWNvIC0gRW50ZXJwcmlzZSBFZGl0aW9uIChFbnRlcnByaXNlIFByb2ZpbGUpIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNDEyMjIwMDQiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMi0yMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzZ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDEtMTAifSx7ImFhaWQiOiIwMDI0IzE1NjIiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhaWQiOiIwMDI0IzE1NjIiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiRytEVXNlckNob2ljZUtleXN0b3JlQW5kcm9pZCJ9LCJkZXNjcmlwdGlvbiI6IkcrRCBVc2VyQ2hvaWNlS2V5c3RvcmVBbmRyb2lkIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoidWFmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6Mn0seyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfZGVyIl0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9kZXIiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbInNvZnR3YXJlIl0sImF0dGFjaG1lbnRIaW50IjpbImludGVybmFsIl0sInRjRGlzcGxheSI6WyJhbnkiLCJwcml2aWxlZ2VkX3NvZnR3YXJlIl0sInRjRGlzcGxheUNvbnRlbnRUeXBlIjoiaW1hZ2UvcG5nIiwidGNEaXNwbGF5UE5HQ2hhcmFjdGVyaXN0aWNzIjpbeyJ3aWR0aCI6NTQwLCJoZWlnaHQiOjk2MCwiYml0RGVwdGgiOjE2LCJjb2xvclR5cGUiOjIsImNvbXByZXNzaW9uIjowLCJmaWx0ZXIiOjAsImludGVybGFjZSI6MH1dLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQm1EQ0NBVDBDQkdRZFBSMHdDZ1lJS29aSXpqMEVBd0l3VmpFTE1Ba0dBMVVFQmhNQ1NVNHhDekFKQmdOVkJBZ01BazFJTVEwd0N3WURWUVFIREFSUVZVNUZNUXN3Q1FZRFZRUUtEQUpIUkRFTE1Ba0dBMVVFQ3d3Q1JGTXhFVEFQQmdOVkJBTU1DRUZWVkVoU1QwOVVNQjRYRFRJek1ETXlOREEyTURNd09Wb1hEVFF6TURNeU5EQTJNRE13T1Zvd1ZqRUxNQWtHQTFVRUJoTUNTVTR4Q3pBSkJnTlZCQWdNQWsxSU1RMHdDd1lEVlFRSERBUlFWVTVGTVFzd0NRWURWUVFLREFKSFJERUxNQWtHQTFVRUN3d0NSRk14RVRBUEJnTlZCQU1NQ0VGVlZFaFNUMDlVTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFU0lwSS9kS1lDRFloendEMndTZllBT2Ivbk5haVBjV0YyMXZ4WmsvVGdEME9KdGNEK09QbTY0bndaZEZXU0VZU1c3aU9xbnBtSnlkZThtZ3IvdG5BaXpBS0JnZ3Foa2pPUFFRREFnTkpBREJHQWlFQTNidmhhelFGUHdteVhseEsveENYZmg3ZzFYMUVvYkxDM0wrMkdPUnhwN2dDSVFDZk5FVFgvbTJCZWJSTFhJNExNUDFFUUdQWEZEZjdPazc0VTd4YmlNNFZrQT09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsLzlqLzRBQVFTa1pKUmdBQkFRQUFBUUFCQUFELzJ3QkRBQU1DQWdNQ0FnTURBd01FQXdNRUJRZ0ZCUVFFQlFvSEJ3WUlEQW9NREFzS0N3c05EaElRRFE0UkRnc0xFQllRRVJNVUZSVVZEQThYR0JZVUdCSVVGUlQvMndCREFRTUVCQVVFQlFrRkJRa1VEUXNORkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCVC93Z0FSQ0FESUFNZ0RBU0lBQWhFQkF4RUIvOFFBSEFBQkFBTUFBd0VCQUFBQUFBQUFBQUFBQUFjSUNRUUZCZ0lELzhRQUd3RUJBQUlEQVFFQUFBQUFBQUFBQUFBQUFBRURBZ1VHQkFmLzJnQU1Bd0VBQWhBREVBQUFBYXlqNkY1d0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFZ2QzZURUNXhMSjM2eEZvYzVsOGxHUFNYS3N6TkRNMDlOVmROKzhQOFpkTEtCSHBpZSt2aFR1b2ZOWE5Bdm0rTXlVbVJuMWRRWmdBSE00Y3cxTGljUDFWTGVRdWpUekoyZEpNMzM1cGhhYVVqZWFiS1VSdmRWN1NaMWRUUzZTdUZrd1EvYkhyNzY1dDJGMW1kazg3TlBxRStTWXlIUjFnQUxCMThsdnlUZWpQWFFxbXVnc2dZZFZWcDF5YUhmWExXM3ZVUWsycGFJcWQ1TXJZcUlQZmpkTE5tVFl5MitDVG94c2I2SXR0U3U2bEE5QlpIQTZxb0FCeU9PTkhQMnBQZW5qcnMvOEF4bW5jWWJMQ2lhNnoweFNtYVp0OUhSTWxVUnZkRitxem9ZdXMzbGRLVjF1NmlhbTN0N1BydEpuMEdlbnUvQTlEV0d4eEFBQWV2OGd4WEtrL09acWM5Sm1iS2xwTXpaR2t6TmthVE0yUnBOd002RXJoMWo4dzJPSWV5QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUC84UUFLQkFBQVFNREF3UUJCUUVBQUFBQUFBQUFCUUFFQmdJREJ4VVhJQUVRRXpZUkVoWXdOSEExLzlvQUNBRUJBQUVGQXY2YkdJU1JsTlliRmdVWlMzRk1tbFBndEtXMmJmU0xyRTFQU3VXK0MwdkJhWGd0THdXbDRMU2NpR0x5azFpZ09ScGtzUUl4ZTkrR0FRbXFVUEc3ZTAwc1BuN1lhM2U1ZEJ0cTk1eGFPWllIRkF5eEo3Y3BCa3hoSGkyODR0YnppMXZPTFRITFFKM1cxZDJIMWg2eXNFV3M1aDF5S0VPYlJyY2ZPZ1lpeUJGU1dRdDR5S1BTRjdJM3ZERW50eXlmN3R3amNvZlJoNENOTjVBTWxBSzNJd2x5M1ZadWNzVk1PajJYTExSbXA5SSsxR0pqMWRPMGg1YlNIbEFvQ1ZqcDlUWEhoWTlKZHBEeTJrUEp6aXc0MGJkc09tYW01ZFpIWWRCOHc1WVkrTmVVNCtycEx1emI5Ym1lL3dBUHRqWDZ2dlZaZitQdXZsaTRoMFlTOVpkQ1ZNejNhbkpzam9wM1BraTNQa2l4NU5UQjZSS2RUbzJGbEc1OGtXNThrVi9KRWhkV08ySEFsVjRnc2hrT2hLWDhyRit0cmZqUnkxSXd4NEcya1F5U1JSL0YzWERFbnR5eWY3dHdpc05mU2x5SUZOd2crWVNHaU5BNnF1dGRYT0VURzdFMzdCKzNLTkw3ZTA2dFBjWHg5NVh0Q0NXMElKYlFna0JnQXVPUDBheDBKUEV0b1FTMmhCTGFFRW1PTTQreHJ0V3FMRnNvVmFobVV4bGw2V0V2d3g2VWtJemZDNWVHUEtXOHFET3FkZEdyWFJxMTBhdGRHclhScTEwYXRkR3JYUnExMGFuTXRDdEtUZVlCN1drOUpIOGtjLzAzLzhRQUhSRUFBZ0lDQXdFQUFBQUFBQUFBQUFBQUFBRVJFZ0lRSUNFeFVQL2FBQWdCQXdFQlB3SDZ5eGs2UktGN3FVU2g0enlmUzFERW1aRVBXTE11QzlNdFdSWWJnc2h1UmVtWG5GT1NwVml4WTFKVmxXSlFOenlzV0xGaXhZYm43SC8veEFBdUVRQUJBd0VGQmdVRkFRQUFBQUFBQUFBQ0FBRURCQVVSRlNGU0VoUWdNVUZSRXlJeVlZRVFKRkJ4OERQLzJnQUlBUUlCQVQ4Qi9MVmxkNFBrajVyN2lwenpkUjBsUXhzN2lxci9BQVA5S09NNVgyUXpXNTFPbGJyVWpuc3VvSytXRjdqelpSbU1nc1k4dUNVL0NqYyt5cFl0Nm11TDl1aEZoYTRWdlVHdGxVMU1KUWt6RXJPa0dPVjNON3NsdmNHdGtFb1MraDcxYUZNeGc4cmMyVmxTdmU4WHp3Vlk3VUJzeXNzMkdaMmZyOU1MbTd0L2ZDa3M2V01YTjNiSlFRRlVGc0FzTG03dC9mQ29hWTZablkrcXF6WUlDZDFaWTN6WCszRFZVNVVzbTBQTG9vYlVHNjZWbGljSHVwN1Foa2lJRzZxaG5DbmtjajdMRTRQZFBha0hTOVZOVWRXVjNUc3FLbTNlUHpjMzRTRmpiWkpIWmNSWmk5eXdrZGF3a2Rhd2tkYXdrZGF3a05TaHBJb1BTMmY1ai8vRUFFTVFBQUVEQWdBSEN3b0VCUVVBQUFBQUFBRUNBd1FBRVJBU0V5RXhRWk1GSUNJak16VlJZWkdoMFJRd01qUlNZbkdCd2VGQ2M3R3lVM0NTcy9CVWNuU0N3di9hQUFnQkFRQUdQd0wrWnQyRVpLTUR3cERuby9McG9GOXM3b1BlMDk2UDlOV1lpTU1qb1EyQlhKcDdLM1dJUWtIeVZ6Vjd1QUFnRVpCZW41VnlhZXl1VFQyVnlhZXl1VFQyVnlhZXlyUHdvN3c5OW9HbEtpaFc1NzNTM25SL1NmcFZwVGVNeW84Qjl2T2hYbWk5SXVuYzVrOE1qOFo5a1VobGx0TFRTQlpLRWl3RkYrVStpTzBQeHVLdFJTMEpFcjNtMjdEdklyMUtaMko4YW13MjRrcEszMlZOZ3F4YkM0K09BZmtMK21CNkE5RmtPT05XdXBHTGJPTDlQWFhxVXpzVDQxNmxNN0UrTmVwVE94UGpRUzRYNG5XNjNtN3IwbDZPOGg5cFdoYmFyaW5JOGxwTHpMZ3NwQ3E0RjNJTDJkbHc2dmRQWDVobU95TVoxMVlRa2RacVBCWTlGcE5pZmFPczA1TWY0WDRXMjlhMWRGR1JNZHh2WlFQUlFPZ0RlajhoZjB3VC9nMy9BRzA3MFBSWE9MUEtNcTlGWS96WFRNMk1lQXZTazZVbldEVWlFdTJNb1hiVjdLOVJwVGF4aXJTYkVIVWQrMHRRdUk3YW5mcDljSGtRUEV3MGdXOTQ1ejlNSVVCSHNjL0sxb2piV3RFYmEwSmNzTTVISnFUd0YzT0NWTmlobklPWW1ManVXT1pJRmFJMjFyUkcydE92dUNQaU5wSzFXYzFEQy91Y284VklSanBIdmo3ZnBnbkJJc2wwaDRmTVorKysvbTlQazMvb1lOMWNiVGx6aGEvMmp6RzZQL0hjL2FjTzV1TDByL1lyQW0zK21SZnRPL2pwVWJKa0lVejlSM2dZRWJvSlR4TXRPYysrTTM2V3doSW5pd3pjaTM0VnpnTmczNFZ6Z05nMzRVSXMyWGxtTWtwV0xrMHB6L0lZSmNTSE15VWRHSmlweVNEcFFEckZjNERZTitGYzREWU4rRk9NdVRncHR4SlNvWkZHZy9MREozVVduaW1VNUpCNlZIVDNmcmczUVdrM1EyckpEL3FMSHZ2djIzbWxZamphZ3BLaHFJcVBOYXRkWXN0UHNyMWluWVVrY0JlaFEwb1ZxSW90eW03dEU4VytuMEYvNTBiMGZrTCttQ2Y4Ry83YWQ2QXlndFJRZU1rcUhCSHc2VFRNT0tuRlphRnVzOVpwK1VTTXNSaU1wNlY2dkdpcFJ1bzV5VDVnNDEzSUx2TE5EOXc2NmJreFhVdk1MRjBxVFNtbm0wdXRxMG9XTGcwVkNLcU9UL0JjSTdxMHl0cjlxMHl0cjlxMHl0cjlxOHNpRi9LNHBUeGk3ajlNRHM2U1g4czVhK0l1d3pDM1IxVnBsYlg3VnBsYlg3VnBsYlg3VUZlUm1Rb2Z4MWxYZG9wS0cwSmJRbk1FcEZnS2NsVEhReXlqV2RmVUt5eXJ0eG04ekxYc2pwK1Btc2VFOVpCOU5sZWRDdmxRVFBiWEFkMW0yT2p1ejFkdmRTSWVvdkFHdWNJdTJUWE9FWGJKcm5DTHRrMXpoRjJ5YTV3aTdaTmM0UmRzbXVjSXUyVFhPRVhiSnJuQ0x0azFkM2RTSU9vT2hSN0JSVHVjeXVhN3FXdmdJOGF5MDU3SHQ2TFl6SVI4Qi9NNy84UUFLQkFCQUFFQkJRZ0RBUUVBQUFBQUFBQUFBUkVBSVRGQlVXRVFjWUdSb2NIdzhTQXcwYkZ3LzlvQUNBRUJBQUUvSWY4QVRZam80YURUTTBPTVVZNjN2RXRCWkcrYUJGdUQraFhxOUc1RUNITnN1NWFCTlBWNjlYcjFldlY2OVhwYzVZZjJ5bVpPMFJaMVQraWdaNFRnaE9Eby9VVEJ1Nk4vTi9YQTMwYTQwU09RVmVxckFkMi9Tb01IZ3VyT214R0VobnBDQXVXMzRVU0xxaGxoTVNQZ1JvMGJwdHN0M082WGFhb2JpVkNFSk1pZVkwREUwM2htMEhVNHg4OWRxWEpCUm1FU0RiaXVxeTFicGl3TUx1SDlYQUdsM09XN2NzdjY0L1pSd1Zzb1N1T00rWXFmdWVRZk5GQ3FKdnd2VTZMVCsyNytCaFBuWmtIM093OVo4TmhaZWhhWW5KSERiQTVvUEJYblB5dk9mbEUyREc4eEZrYWJIbVJHSUdzak1hODUrVjV6OHEvVVBGZ2x3MDJwTmtaZkozejVObkh2SUNmbUZCM1c2MzdiRGFQTTVZZEkyK1d5K3RRRmJKdE4xdHNXYmN4NmZuUEFwWE5Pb0xqc1RCREJ1QkVjUXVlMG9ZSUdGdG9VSjJyQkxNaUxRZGhuQXBZTWxhamV1MUNoaUZnWGtJU3pMdFNnSmRrckc3WXd3ZzRaMEh6TkF2UmlKSG5TaENDMjY3L1JHc2N1WFljMGZwalRsTE1kaHZ3ZFZ2MlVjSU5CckNjVCtBNHhWajFsTjVqbUsyMWF0RVdNZEJlMEtmdzJRbFg2SElPaGVETFJkYnNrbkRxS3gvSFNpSjlCWnRScTB5OHhQTkljQ3ZTcWVsVTlLb2JRTmhJRyt5R3pEZGY3QUVHZ1Y2VlQwcW5wVk1OSUVqdWNTZ0RGRGdaQVVTV3JieFlCaXVWTFFsbnZFYXNlQmg5UytZWjVoNXRTR3NEZEZMeHNPWEdqVTUvQkZtdlB1OWVmZDY4KzcxNTkzcno3dlhuM2V2UHU5ZWZkNjgrNzB5aW42NExXQnVRUjF0dGJvTjlTVTZWR1dCdnYvd0JPLzlvQURBTUJBQUlBQXdBQUFCRDc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nm9Namc0eHZQMzc3Nm1wenl5dnplcHI3NzczajVUL3o1ZS96Nzc2NHB2OEF2cS82SUcrKysrdmMvd0QvQVA4QXRmOEF2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2L3hBQWVFUUVBQWdFRkFRRUFBQUFBQUFBQUFBQUJBQkV4RUNBaFVXRkJVUC9hQUFnQkF3RUJQeEQ5Yk1kQnF6TUVVTXoybG4yQmhFUnAyQmJVV0NabmhMQnhBcHhQS0ltWlExRDkyY1JEeHJBV29BdDBpd2hzYm9EVEhycEFSakNqV2htNXRHb016TDlTL1V2MUw5Uy9VWEw5ai8vRUFDZ1JBUUFCQVFVSUF3RUJBQUFBQUFBQUFBRUFFU0ZCWVhIaElERlJnWkdoc2RIQjhQRlFFUC9hQUFnQkFnRUJQeEQrc2IzMTl1TllEbzd0UFJGVTBFODV6dmtvZFZ2bU43ZTQrS3RKVSszdzd6SitHS3pWYkdHUll0VnFXL1RGZ1lxQmRQM0lDOVVhRllYUVZGdVpQMUlVbzBjSVhOTjlpWTVRRG15bEhoK09tdzNCSGkyWEFTek94OGY0dTE3akZIa0ZiRjlSK2dJVnQ1Rnc4Wis0d3BnMUc2dnlFdkJCT2JaRVViaGVUWVFTak54MnFxNFlabmVVVmRlSmZ5dW4xR3NyUTFDRm1zcUZVVVdabnFmVWF3QlVMa2U0TUpTNExiZmxqWnljT0J5ODdMMEtqY3hxcXdienZiM21LNmF6RmROWml1bXN4WFRXRlMxOUNXM25HMTA1ZjJQL3hBQW1FQUVBQVFNREJBTUFBd0VBQUFBQUFBQUJFUUFoTVJCQllTQlJjWUV3d2ZCd2thSFIvOW9BQ0FFQkFBRS9FUDVOdmNVNFpraTUrQXRLUTBIckJaN3FlZUp2bWppdEFOZWdyOU45VXpHTUFqc3NhU0dreEI2TmZwdnF2MDMxWDZiNnI5TjlWK20rcVBNVUpyL1NpeDgrbm9nNG9xbUJQYmtzREdOc2JLU0UvRVMweFRIQTJGa1N1Z0VJUVNXWGhjQXNGV1ZmVFIyQ3QxRmhLN0ZUSnRBcGVIU0RDekozZnVoTUVUQXZIUTBPTG05bG8xZ0RKa2VoZ3dZTkQreEUrV0RsQTcwYnA1N29jSWttNWtwdDNmdHJDTUlJUkJFUWFQMEtVd1hXV3VrT0lrdkQ0SEZkd2RQZ2xMMWpBdUpWK1krQ1lMQlUvaXdPQVYyeFpnTWhEQU1ZUGoxQnRJZ1lsdkJLVy95TkZKQkcycHNtMURBOWdvcXdoMkdPQVlUMGtKWkduaWtKdzFCMkp3WkJ2UmliZWhBZzdpSjFsdGlra2lMOGdqa2FNQkZRL3dCbmZ3Yys3cmRQYVlzSkovdlhQTmxnZDhCaGE3UjlzUkozVkpIS3hHdWVaRmIxZERFWnNLMnJMejBaQ2lvMmttNzhlaENUNEVTdCsrdktxSk43ditrNkJMSlRkT0hXZmg5dngzc2JSV2U0OWFOT0VRaCtkdXNhTlMwRUkvUU9Sb3lJU2wzbjJoWGQ0dW9HSHlxQVFHdVRKYUZHemE3WVpMYVkwbVdmdGR3MGwxMXpCYldUSnYxRHNzbkNrcEpFZFNJQ0phV1M0NGZIUXlyK0dURW50TTk5ZU01ZEREY2dIMVF4RVM1S0NiMnVKenVGTXFTRFM4U25DTHdpbGxUQWJDcnNvN1BOaHlRdnh0RkJLQlFobnNMZUczSkM5Wno4SVYzZEJMS2U3WUNDcHJMUmF2Rm05M2tUS1VnWE1rSmxWM1ZaK0IrNnNURllEWUZiV0RkRkFiQXBNRzRtUWJLQkVSQks0Rm51aUVpZVNtQUZkSzhKNFFIUXpac3pOVnl5L0Jjc2I2RW1tQ1BKOEpNaStaNkdiTm5QTTAreGN6MkZEVUtCZGdBQTRLa2FDZk93QzhhQVN0WHFZNlN0NGJNWW94QVNCK0o5Z3dURjVpSVdtQXRNU1ZEWW9LSjNDdWRtSjNab0VlSmdieVllejR2L0FQOEEvd0QvQVA4QS93RC9BUGdnUkw2eFFlaW9iMFJWL0JiOGpzb0EzYkVtTWpZd0pVcUNWaitUdi8vWiJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wNC0xNiJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDQtMTYifSx7ImFhZ3VpZCI6Ijk5ZWQ2YzI5LTQ1NzMtNDg0Ny04MTZkLTc4YWQ4ZjFjNzVlZiIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiOTllZDZjMjktNDU3My00ODQ3LTgxNmQtNzhhZDhmMWM3NWVmIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlZlcm9jYXJkIEZJRE8yIEF1dGhlbnRpY2F0b3IifSwiZGVzY3JpcHRpb24iOiJWZXJvQ2FyZCBGSURPMiBBdXRoZW50aWNhdG9yIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfSx7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsid2lyZWxlc3MiLCJibHVldG9vdGgiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNBakNDQWFpZ0F3SUJBZ0lVVmVZdVpOa1lCbHZEa0NYNWdhVFRmL2owWURNd0NnWUlLb1pJemowRUF3SXdUVEVhTUJnR0ExVUVBd3dSVm1WeWIwZDFZWEprSUVaSlJFOGdRMEV4Q3pBSkJnTlZCQVlUQWtGVk1TSXdJQVlEVlFRS0RCbFdaWEp2UjNWaGNtUWdVM2x6ZEdWdGN5QlFkSGtnVEZSRU1CNFhEVEl5TURFeE9UQXlNalUxTUZvWERUTXlNREV4TnpBeU1qVTFNRm93VFRFYU1CZ0dBMVVFQXd3UlZtVnliMGQxWVhKa0lFWkpSRThnUTBFeEN6QUpCZ05WQkFZVEFrRlZNU0l3SUFZRFZRUUtEQmxXWlhKdlIzVmhjbVFnVTNsemRHVnRjeUJRZEhrZ1RGUkVNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVRZGNCd1FaUk95czFHNFFMS3I1Mm5UdzBaY0NSeFZUeEF0UjFVMm1hbVdvZEorODZxbzdiYktPcDcxU2pPekZDSWlKMnZORVF2MUxIRjJ4S083RHhKYU5tTUdRd0hRWURWUjBPQkJZRUZDaFUvcjN2ayt4aWFHbFk0UUtBU3pSdUhxU3VNQjhHQTFVZEl3UVlNQmFBRkNoVS9yM3ZrK3hpYUdsWTRRS0FTelJ1SHFTdU1BNEdBMVVkRHdFQi93UUVBd0lCNWpBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQU1Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lRQ3ZodkhubHIxeW5sUDVmN1EyMWJPcVJpM0pkVGU3YXNLMVNaaDVxM1lNWFFJZ0ViYnVxeFdQWXArdHh2YjlSa2kyUEVoZnNzdGw2dlowSFdFVnFNVEU5WGM9Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUhZQUFBQ0JDQVlBQUFBVk1FNndBQUFBQkdkQlRVRUFBT0Q4WVZBdGxnQUFBdTFwUTBOUVNVTkRJRkJ5YjJacGJHVUFBRGpMWTJCZ251RG80dVRLSk1EQVVGQlVVdVFlNUJnWkVSbWx3SDZlZ1kyQm1RRU1FcE9MQ3h3REFueEE3THo4dkZRR1ZNREl3UER0R29oa1lMaXNDektMZ1RUQW1neTBHRWdmQUdLamxOVGlaQ0Q5QllqVHkwc0tnT0tNTVVDMlNGSTJtRjBBWW1lSEJEa0QyUzBNREV3OEpha1ZJTDBNenZrRmxVV1o2UmtsQ29hV2xwWUtqaW41U2FrS3daWEZKYW01eFFxZWVjbjVSUVg1UllrbHFTbEF0VkE3UUlEWEpiOUV3VDB4TTAvQnlFQ1ZnY29BRkk0UUZpSjhFR0lJa0Z4YVZBWVBTZ1lHQVFZRkJnTUdCNFlBaGtTR2VvWUZERWNaM2pDS003b3dsakt1WUx6SEpNWVV4RFNCNlFLek1ITWs4MExtTnl5V0xCMHN0MWoxV0Z0Wjc3RlpzazFqKzhZZXpyNmJRNG1qaStNTFp5TG5CUzVIcmkzY210d0xlS1I0cHZJSzhVN2lFK2FieGkvRHYxaEFSMkNIb0t2Z0ZhRlVvUi9DdlNJcUludEZ3MFcvaUUwU054Sy9JbEVoS1NkNVRDcGZXbHI2aEV5WnJMcnNMYmsrZVJmNVB3cGJGUXVWOUpUZUtxOVZLVkExVWYycGRsQzlTeU5VVTBuemc5WUI3VWs2cWJwV2VvSjZyL1NQR0N3d3JEV0tNYlkxa1RkbE5uMXBkc0Y4cDhVU3l3bFdkZGE1Tm5HMmdYYXU5dFlPeG80NlRtck9TaTRLcnZKdUN1N0tIdXFldWw0bTNqWSs3cjdCZmduKytRSDFnUk9EbGdidkNya1kraktjS1VJdTBpb3FJcm9pWm1ic25yZ0hDV3lKdWtsaHlRMHBhMUp2cG5Oa1dHUm1aczNOdnBqTG5tZWZYMUd3cWZCZHNYWkpWdW1xc2pjVitwVWxWYnRxR0d1OTZxYldQMnpVYTZwcFB0c3ExMWJZZnJSVHVxdW8rM1N2YWw5ai85MkpOcE5tVC80N05YN2E0UmthTS90bmZaK1RNUGYwZlBNRlN4ZUpMRzVkOG0xWjV2SjdLME5XblY3anNuYmZlc3NOMnphWmJONnkxV1RiOWgxV08vZnZkdDF6ZGwvWS9nY0hjdzc5UE5KK1RQejRpcFBXcDg2ZFNUNzc2L3lraTlxWGpsNUp2UHJ2K3B5Yk5yZnUzcW0vcDN6L3hNTzh4MkpQOWovTGZDSHk4dURyL0xmeTd5NThhUHBrK3ZuVjF3WGZ3MzhLL0RyMXAvV2Y0Ly8vQUEwQUR6VHZ6YzNNQUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUt2bWxVV0hSWVRVdzZZMjl0TG1Ga2IySmxMbmh0Y0FBQUFBQUFQRDk0Y0dGamEyVjBJR0psWjJsdVBTTHZ1NzhpSUdsa1BTSlhOVTB3VFhCRFpXaHBTSHB5WlZONlRsUmplbXRqT1dRaVB6NE5Dang0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJa0ZrYjJKbElGaE5VQ0JEYjNKbElEVXVOaTFqTVRNNElEYzVMakUxT1RneU5Dd2dNakF4Tmk4d09TOHhOQzB3TVRvd09Ub3dNU0FnSUNBZ0lDQWdJajROQ2lBZ1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNE5DaUFnSUNBOGNtUm1Pa1JsYzJOeWFYQjBhVzl1SUhKa1pqcGhZbTkxZEQwaUlpQjRiV3h1Y3pwNGJYQk5UVDBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5NFlYQXZNUzR3TDIxdEx5SWdlRzFzYm5NNmMzUlNaV1k5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5elZIbHdaUzlTWlhOdmRYSmpaVkpsWmlNaUlIaHRiRzV6T25OMFJYWjBQU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2YzFSNWNHVXZVbVZ6YjNWeVkyVkZkbVZ1ZENNaUlIaHRiRzV6T25odGNEMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzk0WVhBdk1TNHdMeUlnZUcxc2JuTTZaR005SW1oMGRIQTZMeTl3ZFhKc0xtOXlaeTlrWXk5bGJHVnRaVzUwY3k4eExqRXZJaUI0Yld4dWN6cHdhRzkwYjNOb2IzQTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2Y0dodmRHOXphRzl3THpFdU1DOGlJSGh0Ykc1ek9uUnBabVk5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmRHbG1aaTh4TGpBdklpQjRiV3h1Y3pwbGVHbG1QU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDJWNGFXWXZNUzR3THlJK0RRb2dJQ0FnSUNBOGVHMXdUVTA2VDNKcFoybHVZV3hFYjJOMWJXVnVkRWxFUG5WMWFXUTZOVVF5TURnNU1qUTVNMEpHUkVJeE1Ua3hORUU0TlRrd1JETXhOVEE0UXpnOEwzaHRjRTFOT2s5eWFXZHBibUZzUkc5amRXMWxiblJKUkQ0TkNpQWdJQ0FnSUR4NGJYQk5UVHBFYjJOMWJXVnVkRWxFUG5odGNDNWthV1E2TXpCRE1rTXlSRE5DUVRZNE1URkZPRGszTUVaR1JFSTNSRFkwTURBMU5FUThMM2h0Y0UxTk9rUnZZM1Z0Wlc1MFNVUStEUW9nSUNBZ0lDQThlRzF3VFUwNlNXNXpkR0Z1WTJWSlJENTRiWEF1YVdsa09tTXlabU00TVRNMExUVTJPRGN0TkdKaVl5MWhNREUxTFRJNU5EVXhPVE5pTmprek9Ud3ZlRzF3VFUwNlNXNXpkR0Z1WTJWSlJENE5DaUFnSUNBZ0lEeDRiWEJOVFRwRVpYSnBkbVZrUm5KdmJTQnlaR1k2Y0dGeWMyVlVlWEJsUFNKU1pYTnZkWEpqWlNJK0RRb2dJQ0FnSUNBZ0lEeHpkRkpsWmpwcGJuTjBZVzVqWlVsRVBuVjFhV1E2T1dRMk9UWXlabUl0TVRrellpMHhNelJrTFRrNU9ERXRNREF4WkRReE9XVmhPVGxpUEM5emRGSmxaanBwYm5OMFlXNWpaVWxFUGcwS0lDQWdJQ0FnSUNBOGMzUlNaV1k2Wkc5amRXMWxiblJKUkQ1NGJYQXVaR2xrT21FMlltVXpOV1F3TFRKbE56UXROREJtWlMxaU9UZGpMV0l4WVRoallqUmxPRFUwTWp3dmMzUlNaV1k2Wkc5amRXMWxiblJKUkQ0TkNpQWdJQ0FnSUR3dmVHMXdUVTA2UkdWeWFYWmxaRVp5YjIwK0RRb2dJQ0FnSUNBOGVHMXdUVTA2U0dsemRHOXllVDROQ2lBZ0lDQWdJQ0FnUEhKa1pqcFRaWEUrRFFvZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVNCeVpHWTZjR0Z5YzJWVWVYQmxQU0pTWlhOdmRYSmpaU0krRFFvZ0lDQWdJQ0FnSUNBZ0lDQThjM1JGZG5RNllXTjBhVzl1UG5OaGRtVmtQQzl6ZEVWMmREcGhZM1JwYjI0K0RRb2dJQ0FnSUNBZ0lDQWdJQ0E4YzNSRmRuUTZhVzV6ZEdGdVkyVkpSRDU0YlhBdWFXbGtPbU15Wm1NNE1UTTBMVFUyT0RjdE5HSmlZeTFoTURFMUxUSTVORFV4T1ROaU5qa3pPVHd2YzNSRmRuUTZhVzV6ZEdGdVkyVkpSRDROQ2lBZ0lDQWdJQ0FnSUNBZ0lEeHpkRVYyZERwM2FHVnVQakl3TVRndE1Ea3RNamRVTWpFNk1UQTZNVGtyTVRBNk1EQThMM04wUlhaME9uZG9aVzQrRFFvZ0lDQWdJQ0FnSUNBZ0lDQThjM1JGZG5RNmMyOW1kSGRoY21WQloyVnVkRDVCWkc5aVpTQlFhRzkwYjNOb2IzQWdRME1nTWpBeE55QW9UV0ZqYVc1MGIzTm9LVHd2YzNSRmRuUTZjMjltZEhkaGNtVkJaMlZ1ZEQ0TkNpQWdJQ0FnSUNBZ0lDQWdJRHh6ZEVWMmREcGphR0Z1WjJWa1BpODhMM04wUlhaME9tTm9ZVzVuWldRK0RRb2dJQ0FnSUNBZ0lDQWdQQzl5WkdZNmJHaytEUW9nSUNBZ0lDQWdJRHd2Y21SbU9sTmxjVDROQ2lBZ0lDQWdJRHd2ZUcxd1RVMDZTR2x6ZEc5eWVUNE5DaUFnSUNBZ0lEeDRiWEE2UTNKbFlYUnZjbFJ2YjJ3K1FXUnZZbVVnVUdodmRHOXphRzl3SUVORElESXdNVGNnS0UxaFkybHVkRzl6YUNrOEwzaHRjRHBEY21WaGRHOXlWRzl2YkQ0TkNpQWdJQ0FnSUR4NGJYQTZRM0psWVhSbFJHRjBaVDR5TURFNExUQTVMVEkzVkRJeE9qQXdPalV3S3pFd09qQXdQQzk0YlhBNlEzSmxZWFJsUkdGMFpUNE5DaUFnSUNBZ0lEeDRiWEE2VFc5a2FXWjVSR0YwWlQ0eU1ERTRMVEE1TFRJM1ZESXhPakV3T2pFNUt6RXdPakF3UEM5NGJYQTZUVzlrYVdaNVJHRjBaVDROQ2lBZ0lDQWdJRHg0YlhBNlRXVjBZV1JoZEdGRVlYUmxQakl3TVRndE1Ea3RNamRVTWpFNk1UQTZNVGtyTVRBNk1EQThMM2h0Y0RwTlpYUmhaR0YwWVVSaGRHVStEUW9nSUNBZ0lDQThaR002ZEdsMGJHVStEUW9nSUNBZ0lDQWdJRHh5WkdZNlFXeDBQZzBLSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2tnZUcxc09teGhibWM5SW5ndFpHVm1ZWFZzZENJK1UwMU1NREF4SUZabGNtOUhkV0Z5WkNCVGFHbGxiR1FnVWtkQ1BDOXlaR1k2YkdrK0RRb2dJQ0FnSUNBZ0lEd3ZjbVJtT2tGc2RENE5DaUFnSUNBZ0lEd3ZaR002ZEdsMGJHVStEUW9nSUNBZ0lDQThaR002Wm05eWJXRjBQbWx0WVdkbEwzQnVaend2WkdNNlptOXliV0YwUGcwS0lDQWdJQ0FnUEhCb2IzUnZjMmh2Y0RwRGIyeHZjazF2WkdVK01Ud3ZjR2h2ZEc5emFHOXdPa052Ykc5eVRXOWtaVDROQ2lBZ0lDQWdJRHh3YUc5MGIzTm9iM0E2U1VORFVISnZabWxzWlQ1RWIzUWdSMkZwYmlBeU1DVThMM0JvYjNSdmMyaHZjRHBKUTBOUWNtOW1hV3hsUGcwS0lDQWdJQ0FnUEhScFptWTZUM0pwWlc1MFlYUnBiMjQrTVR3dmRHbG1aanBQY21sbGJuUmhkR2x2Ymo0TkNpQWdJQ0FnSUR4MGFXWm1PbGhTWlhOdmJIVjBhVzl1UGpjeU1EQXdNQzh4TURBd01Ed3ZkR2xtWmpwWVVtVnpiMngxZEdsdmJqNE5DaUFnSUNBZ0lEeDBhV1ptT2xsU1pYTnZiSFYwYVc5dVBqY3lNREF3TUM4eE1EQXdNRHd2ZEdsbVpqcFpVbVZ6YjJ4MWRHbHZiajROQ2lBZ0lDQWdJRHgwYVdabU9sSmxjMjlzZFhScGIyNVZibWwwUGpJOEwzUnBabVk2VW1WemIyeDFkR2x2YmxWdWFYUStEUW9nSUNBZ0lDQThaWGhwWmpwRGIyeHZjbE53WVdObFBqWTFOVE0xUEM5bGVHbG1Pa052Ykc5eVUzQmhZMlUrRFFvZ0lDQWdJQ0E4WlhocFpqcFFhWGhsYkZoRWFXMWxibk5wYjI0K01URTRNVHd2WlhocFpqcFFhWGhsYkZoRWFXMWxibk5wYjI0K0RRb2dJQ0FnSUNBOFpYaHBaanBRYVhobGJGbEVhVzFsYm5OcGIyNCtNVEk1TkR3dlpYaHBaanBRYVhobGJGbEVhVzFsYm5OcGIyNCtEUW9nSUNBZ1BDOXlaR1k2UkdWelkzSnBjSFJwYjI0K0RRb2dJRHd2Y21SbU9sSkVSajROQ2p3dmVEcDRiWEJ0WlhSaFBnMEtQRDk0Y0dGamEyVjBJR1Z1WkQwaWNpSS9QZ1BCUVdjQUFCaTdTVVJCVkhoZTdWMEpkQlRWdHUzTUkrbk04MHdTTXRDUUVVak1Td0lKSVNUTUNBbEVBMmlZRFJCUVdBZ0l3WWlzRmRUM2tQOFZtUWxnSE41bitaYUlnbjRRQkRFSWZBSDlmRVJRWkhveUtLTWhJZkQzNlhUS3BQc202YXF1NnE2RTdMWDJxbE8zdTZwdTNYT0hjMDdkdXFYb2lOaXlaWXROWEZ4Y3VyZTM5MUkzTjdkRG9hR2htelUvS1p5ZG5UZTZ1TGpzOS9YMVhaS1VsSlM2Wjg4ZUc4MVBuWkFiOXUvZmI1NlJrUkVmSEJ3OEQ0cmJhVzl2ZncvSmp4b0pCVytqL3hGc2JHeEk1bjZ6czdPN0JlVi9FaEFRTURzdkx5OTI0Y0tGWnZTL1RwZ0ExZFhWWnNPSER3K0RJcWU0dTd0LzRPam9lQlhKbkxLMDJacGl0WWx6L2R2RHc2TUtyWHhpZm41K3lPSERoNUhjQ2Nrd2ZmcDBuL0R3OExHZW5wN3JsVXJsejJabVprekZzTWhIc1UxcGJtNytDRDNBV2JUbzFkMjZkY3NmTjI2Y085STdZUWpLeXNxVUtwVnFNSlR5ZHljbnArOHNMQ3dlSXBtcGdMWW9WTEhhdExLeWV1anE2dm9kV25SRlFrSkMzdno1OHgyUTNvbldVRkZSWWQyclY2OTBMeSt2SlNpOGd5akUrMGhtRmpCZmlxVlliZUpjOTlHaXY4VDR2Q1ErUGo2bHFxcktHdW1QTjZCSTg5emMzQVFmSDUvWkdDYy9neEZ6RzhuTUFqU1VVaWxXbXhpZmI2TlNmdXpuNXpkcndJQUJQYUJvYzZSM2JKdytmZG9zSnljbk5Dd3NiQXB1dnFwTGx5NnRHanhpMGxpSzFTYnU4UXJHNTIwd3hJckpFTHQxNjFiSHNMakhqeC92RlJrWk9SWmowbHAwV1QrVE1ZSmtvOU5VaW0xS3VuZllDajlpcUhtbmE5ZXVUNWFXbG5vaXZYM2d4UmRmZElMQmt3Zkw5VFVvOHJpbHBhVmdnMGRNeWtHeDJrVFpQSEJ4Y1RrR1JWZkV4c1lPbkRsenBqM1M1WUhObXpkVGhDY1ZZMG9aUlhOUWFMVkladDZJS1NsSHhXclQxdGEyQm1YNEpmSzZNRDA5UFhYdTNMbVdTRGNPZHU3Y2FaR2RuUjNyNys4L0IyUEhUb3JhSUptWlVUbXhQU2hXbS9iMjluOWdDTnNCaTN0VzM3NTlZejc3N0RQeERER0t1b3daTXlZc01EQ3dHSmJyZXpBR2ZrTXlNeU55Wm50VWJGTlNNRWFwVkY1Qmk2Nk1pSWdvSGpGaVJORDE2OWZ4RXcrTUd6Zk9Nenc4dkFDRnNSYUtQR01xZzBkTXRuZkZhdFBDd29JaVltZlFvdCtDY1RwcXdvUUpia2pYUlZGUlVSUmFaQVhja09NNDZBR1NtQ2Rzcit4b2l0V21sWlhWQXlqNmlLK3ZiOFZUVHowVmdqU0Z1dC9PemMwOWc2WmVjL1BtemNqNitub0xTdXRFKzBGZFhaM0Z2WHYzVkxCNWJrQ1g1elhKZnlFcEtla0pSMGZIc3hDWk5hTzlzcU8zV1BqSC93ZEx1aGZrdnhBVkZiVmw4dVRKenBwZHhiUnAwNVJvMHBWOG5wN0luUjFWc2REUlF4aTJheFl0V3RRRisyclFFeWlNdS85VXdFQzZpRlo2TGpFeE1WWHptK0xreVpNSytLZUZhTnEvWTVkNTB2YkVqcWhZdUVOWFZTclZNTWdjZXZYcTFSKzZ2T2pnNFBDTEFzMzRFTkxJMHFydDJyVnIrZGF0VzdrbkZNT0hEdytHdi9vbFJPYkoyd3M3bW1JOVBUMTNEUnMyekJleUdxKzg4b29OV3U2S3hrZ2ZsSHRBQWQvb1E5cHBKQlQ1VFU1T1RqaGtOWll0VzJZTzkyY0JMQzlaUnBYMFlVZFJyTFcxZFUxMGRQU2NsU3RYY2c4VFVsTlRvMkVSSDRQSS9RK0c4SHNLK0VKL2I1cEl0TFcxdlkyeDl4bklISENDWG1qZHB5RTIrMjk3WUVkUUxKUjFvbCsvZnJHUTFiaHg0NFk1ZFBRY2RQVW5kcHY5RjI3cmF3b1lTczlyLzBBazQ4bkh4K2ZEdkx3OEYreXJVVkpTNGhnVUZMU3V2UVV0MnJOaVVkYjFLUE0zWjh5WVlZdDlOY2FPSGV2dDVlVzFBeUx6R1B4V3FzQzRXc0Q2c1pGb3BSZGhXR1ZDVnVQV3JWdUs3dDI3RDhmZ2ZRMjd6R1BrUW9yUW9LYi9HQllXTmhYN2FnUUVCTXpBUGYzVUhpb25qS0RMS1B0Y3lCeDY5dXlaaS9SL1EyUWVRd3dPRGg1Rmx0UVRyQitiRW9OeWZVaEl5SXFGQ3hkeWh0V0FBUU44VVRNK2g4Zzh4bFNraDl2dTd1N2JvTXppMGFOSEI1OC9yK3V2WDd4NGtXWTVkc1U5VFlKTlVRVmpRM1l4Y1BTa093b0tDcmhudHN1WEwzZEFwVnlsejl3dmVEVEppcWxUcHdheGZtUVJnL1RSakl5TWFNaHFiTnUyemJ4YnQyNXowTDJKTmorSkwrR1MvUUZGZm95Q21KR2JtOXRqelpvMXZHY3ByRnUzemp3ckt5c1dOZjBGR0pPZm9FWGNSVEx6ZWxJVEJ0SWRsT25VQXdjT2NQZVJucDRlaDN6OUFKRjVqRFpuelpvVnBMaDgrYklGdWxYbUgxakVoZS9DQVo1V1YxZkhQVWJLek15TVEvZDJFaUx6R0RHSlNxUitidW52Ny85U2NuTHlFenQyN0JCOUFsbGxaYVg2T1RPdXNSU1YyV2pQbVhGZlI2SEVLTWhxSERseWhCck84MlFOWTVkNWpEWlJLUi9Cc0xKUTNMdDNqNElVRjFoL2FvMHdyRDRlTTJhTUYyUTF5c3ZMN2RGVnZFbURQWGFaeHdnaHpUVEFPSG0wY2FZQnVpUkhwQnNWYytiTWNZUmRvWjRaZ3NJL1FkTlFrY3pNcnhCcWhycUtWYXRXY2ErYmpCdzUwaDg5MFM2SXpHTmFJaHJZaFFjUDZEa09nSjJ2S1pFdjBkS3ZKQ1FrTkJ2Y2FiNHRhczBWaU14ajJpSVpOV1R3d0pKOUIvN3pLQlNxQjlKbGhhS2lJaytheTRYeCtSMG9tdGZrZFcxaWZMOEFWN0kvWkE1SlNVbFB3bzBSTk82ajdFaVhEVURtUHNDRytjZTJTSU81bjUvZnlrV0xGdGxoWDQybm4zN2FHeTI2UlhOY20yVHdvSkMyd1VKL0ZnWlAwQysvL0lMazlvR0RCdzhxQmcwYUZCSWFHam9aTFpwZU45RmJJU2lqRHdvTEMxMGhxekZ0MmpRSHVEYnJEYkhZNGNPU0xodUFKdjhHTnN3LzZrdFVqaCthT3RENzl1MHppNDZPbm83eHFka0xVa1RjL0IzOC8xL29mbVlQSERoUTlmYmJiM2VZRjZGZWZQRkZNeWc2QWNiY2JGUldla0hzRHBLYjNUOE12anN4TVRFVG1yNFgxS2RQbnlUcXFTQTIreTlmb25LUkxodUFUTXpCaHZsSFBpVHJPQ0lpWXZhVksxYzR3d3JHUURRcXpqZFE1RjRZSTR2aGw2Vjg4Y1VYVnBxZk96eldybDFyQmFXbG84QVhROUVIc2YwcUp5Y25UUE96WXNPR0RlYW80UE5oSU5WaGwxbXVmRWp6MGJCdEFMckFmR3lZZnhSQ0R3K1BYU05Hak9DQzFQZnZremZVQ1VKdExSbllEVURMRGlaRlEyU1dveENpWVpFdUc2QlBrSUl2MGQxY2pZK1BId0c1RTFxQWk2bFFxVlJqMEUzZnhDNnovSVF5SlNXRmROa0FQa0VLUGlRaklDMHRMUmx5SjVyZ0NVQ3FpUXlscGFXa3l3YWNQWHVXVjVDQ0Q5SE5qOEcyRTAyQU1aWEtoRmxlaHBDQ0U1Y3VYVkxQV1ZNYk9URFY2OUc2S0VnaE9tN2Z2czJOdFoxb1FFMU5qYjlHRkJXa1F4akNGQ0JxVUN4QktzVStlUEJBa3B2Z2c1S1NFcGNlUFhxTWhQczFCTU9Pa3liWlpFQ1pCR2hFVWNIVW9TRkJpdGJvN094TU16U01paFVyVnRna0pTWDE5Zkh4S2NmMUQ4R1Y0T1pLUTY3RnZSN3c4L05iQ3VNdTlmMzMzemY2cWpHNC9uOWhvMU5XaHJKWmNLSVJZZ1FwV0VUQlZtTXJLYUJJZXZjMk5pZ282SG40aXAreWdnSXRFZis5aFh2ZkFmOXY1cEFoUTFUYnQyK1hQRmlpVkNxcFRKajVNWVROZ2hPTkVDdElvVTBuSjZkTDJJb0tldGdQUHprZ1BEejhXU2h5cTZPajQyVWtNNi9QaDJTcFVuNXh6czJ3TzRvbVRwd29TWmZacFVzWEtoTm1IZ3hocytCRUk4UU9ValRTeHNhbTd0aXhZd1ozZHloa1pVeE16SEJVd1A5RWpUOUZzeU9RTENrcERvNXJmZS9sNWZXUHVMaTRvUys4OElMQjQvT0JBd2RRSkRhaVJKbTAyU3c0MFFpTVNTbllNQTh3aE5RS3hvOGYvNWR2cFNjKyt1Z2pLeFJtR21waE9jYWtyK1V3U3hJS3FZV2k5NkZ5TFVsTlRmM2JwazJiT09OVFg0d1pNeVpJS2g4MkJjQzJPV0F0Qm1MRFBNQlFhaUpidkRCdDJqUi9xUXBBREZwYVdqNWF2SGl4RWpJdndHQVRQY3JYeU5MU1V0SmhjM3o3N2JmbU1DUWtXVm9nTURCd0ZMYTg4TlpiYjFuYjJ0cWFiTXBOVzNSd2NMaDU2dFFwM29ZV3htNUpoanprNStISmt5ZlpQUWlNa0YreFlSNW9DTlhUSVFWQXF2eUlRUmhaTkFlSk42UXlVbUdRVVZseGFLWmhPTGpOZmhRTFFvTVU2TzVFdDZqRkFneXJpeHFSRitycTZxU0tPcldxV0VtaVQvWDE5WUp1Qm1Pc0pQa1JBOGlib0Vady8vNTlTVUtzcUdqTnlxcVpZdEZDSkNuSVI0OGVDZklIcGFwb1lrQzdJSGxBRXQ5WVczZk5GQXVYUXFxQzFMWFc5QUNNSjlsMnhRYVVsYUN5YUF2VzF0WXRLeFpXc1NTS3JhMnQ5VHB6NWd6djZURGFtWlVUN096c2VIZkZ4NDhmdDZLeTBPeUtDdVNuWmNXNnVycEtVcEExTlRXV0ZSVVYzcHBkdlFFVFhyYUtEUTRPcGpBbUw3eisrdXZlR0dNbFdaakwzZDI5WmNVbUppWktVcEFZWXhVblRwemdiVUJGUjBmekxqeGpBT01yellMZ1hWWS8vUENEUDVXRkZFaE9UbTVac2RuWjJSYzBRUXJSY2VuU0pkN1dZSGg0K0FVYkcvbDlpd0Y1dWp0NDhHQmF4b0VYYnR5NElZbXJROEdKbkp5YzFpdWFvNk1qdlo2bTR3QWJTbTl2NzVuWThnSzlxZ0RIbTVZZ1k1N1RWSFJ5Y3FMNXY3emg1K2RIZ1JybU9RMGh5a2pubGNKbUxaWWdsZThveERHSENVOGJTWUltaGtCb0lFZkM0SVNPem5RVWE0Qi8xaXFFQmltZ1hObU5zMExMU0tyZ2hGNktsU3BJOGZEaFEwR0tsV1AwQ1dVa0tKd290QXphQWt0bk9vcVZLa2dCQlFseXpLWHFRUXdCQ2xKUVZ5eTBETm9DeTkvWFVheTJveXNXTUw3NFhMMTZsYmNQQnl0ZGR0RW5JV1YwL3Z4NVN5b0R6YTZvWUFXV2RCVHI2dW9xaWJGU1UxTmpWVjVlemp2cUlsVkZNd1J1Ym02ODg3UnMyVEl2S2dQTnJxaHdkM2ZYMFptT1ludjE2aVZKUVdKOG9YZEplUnNQMmhFVlV3T0dDcjNjelR0UHg0OGZseXc0a1pLU29wTWZIY1Y2ZVhsSkZxUzRmdjA2YitPaFg3OStseWpTSXhkZ1BMdVhtWmw1UTdPck42NWR1eWFKNFVTNjh2YjIxcStpT1RnNFNCS2s4UEh4S2NHV0Y2cXJxK205SXNrK3RzU1hTcVh5SExhOEVSQVFRQUVhNWprTm9TYWdwQU9kRmtzUTZvQzNCU0VPT29hR2VyUlkyZml5UXQydmUvZnVTZVhETW5YRlZLd01neFN5c1l5RmxvM1FlMjhMTGVYSHFJcnRDRUVLdVNtMnBZQVNVN0ZTUGVBV3FsZ2JHeHM1ZGNXQ2xyU0JSU3lKWWx2U0ZWT3hVdm1PTlBmcHp6Ly9aRjZ6TmVBNDJhd1AxS1ZMRjk2VjdQZmZmemVuZTlmc2lncFdjSUxBTEdTcFpsTEFnTEFxS3l2akhhUndjM09yUm1XalpZVk1DdVRoR2l6Nzd6Uzdlb1B1R1JWYXF1Q0Uvb3FOajQrWHhDcW1JTVhldlh0NVc0ZmZmLzk5ZFdwcWFvS0xpOHRSVFpMUjRlSGhzV2ZvMEtIeCsvZnZQNk5KMGh0SGp4NzFwM3VYQXIxNzk5YmZLc2FZZGhHMVUvM0t1OWdRNnFqdjNyMzcxSlFwVTVLRGdvSld3SUNSSkc4czBNdGdFUkVSQ3lvcksvdFhWVlVKcXZDLy9mYWJKT01ydXVGNjBwVm1Wejg0MEpjZ05FNndtUFR6ODV1T3JVRkFMUjJBL05FTk1hOGhGakdlL3BpU2t0SWJza0VJREF5a3dBenpHb2JRMGRHUnYrMkJtenFBRGZPRWhoQmQycXZZR296Q3drSVBiMi92ZjBGa1hzY1F3dko5RkJBUVVGbGNYTXg5ejhZUXdFYWdlMlpleXhBNk9UbVJqdmpCMmRuNVBXeVlKelNFTU13cXNSVUZ1M2J0TW91S2lxTDFHblUrZUNDVUdJSnVkdS9lZlN4azBZQ3lwSHRtWHM4UXd1WWdIZkVEYXRscjJEQlBhQWlWU3VVZWJFVkZXbHBhREc3eU9FVG1OZlVsS3QzQjdPenNVTWlpQWkyTDdwbDVUVU9JM285MHhBL281aVNaVVllYnBFKzhpSTZsUzVmYXdiQmFxVEdzbU5kdWlaYVdsZytDZzROZlhyMTZ0U1F1Q1kzVjJEQ3ZiUWcxc3g3NUlUUTBsRjVXWnA1UUtHbWFKRnlwTk1pU1FhVlNEWVJoMWVwWExwcVNubzcwNmRPbkwyVEpBQU9NdnJ3aCtvSWl0RkEzdHZ5UW1KallCeHZtQ2ZtU2pCSFVycXBubm5tRys0YVBsQmc1Y2lSOWwrWlRpTXo4RUNsUFBqNCtIK2JuNTNNTFFVdUowYU5IZXlCUDIrbTYyQldGeWNuSnBDTitnRVhvaHczemhIeEl4a2hjWE54NHlCd3dKajRCcS9QNVRaczJTZmFCK2ErKytvbytsRkFLdzByblF3bTJ0clozWVhSTlBIYnNtR1JyT3BXWGwxdDE3ZHAxSVZwcnZDYUozb1l3aTR5TW5FVFh4MjZ6UEFsaFNVa0o2WWdmWnN5WVlRYWxHTFJzRFl5UnIvcjM3ODhaSTh1WEw3ZUVzMThHcDE5OVhuZDM5MzMwdmZHR1g2VkJSa1pHSEMzcEExR2RKMWlvUnpNek03a3ZaVWlCM056Y3JyaU8ranNMMXRiVzl6R3NQYjkyN1ZvdUdKU1ZsUlVKNC9RSVJKMHkwNWYyOXZaMTgrYk5FMVl4aFFZcG9MZ0hJU0VoTDFWV1ZuSXRraFFNUmVyNHhzamc5WjQ5ZXpiN1hLYllRTzlqaHg3aUxSaEliMVJVVkhDZkVwTUNzQ0hHb2tYK0FiSFpmYUliM29OS3pFMC9MU3NyczBhZWxzRndFL1RWRTBIQmlVYkEyT0c5K2pWYXgwL29mcmoxaHM2ZE82ZEE5L01VV3Y4dDdES1BnU1ZMSzh1c21qdDNycVNGTGlYb0V5NysvdjZ0ZnZjUGxmaEdiR3pzYU1nY1lNdGthSlRFUEtZbHdyc2czUWdEbEZTRkRmUEUycVFid28xdG5EaHhJaGV0bVQ1OXVpdU1wdmYwTlJqUWRSOUhuWWlFM0s2UW5wNGVpN0xTNjB0V0tBdjY2c21HNTU1N2psdmxyYWlveUlWUE9SSGh0NU51aEFIandBcHNtQ2R1U25ROTEzdjA2TkdzSnNLRnlFQ0w1MTBUTlliTnM1QmxqOU9uVDV2QlFLUElsOTVmc21va1d0d1psQkZuMWRiVjFabGhTQnFQYytsMDR5eDZlSGlRYm9UQjI5dDdGamJNRXplU0htY05HVEtFR3pzMmJOaGdnN0hzVlhTdmdnMHZxcmxVZ3dzTEMzbXZmR1lzSUc5dUdEY05XcDZXak1pd3NMREZXN2R1NVd5UkFRTUdoS0kxdGprRW9ueElOOElBQStoSmJKZ25ScVpxTUhiT3I2NnU1aktGTGlrQ21SSnR5VlowYitkNkE1QmxCYlNzVlBSRzlBaVBtVysrSktNU3htVUlaRFZXclZwbENWZHBTYVAzd0NJcUJPbEdHRm9LVXFBYitWODR4NXgvdG5QblR2cW03R1FZU0tKL3hSRTNWMHNWNktXWFhqTDVSNWMrLy94eks3Z3VpOG5xeHk0enYwSkpsblJNVE16VGQrOVNFVFlBUFhVS0t2ZFppRHIvYjlxTjh3YXNWT3BpdVpPUjlRb1QvZTFKa3liWjArK0VZY09HdWZuNituNGtaa1NGUlF3THUzRXQzZ3VVaUlWQmd3YjVZOWo1RWlJemYyS1F5aEJsK1M0TVVDNUNWMXBhcWtUYVJ1M3luVHAxcXZCNXlyUnNLM3hadFo4Rmsvd2F1cUFoRGI4MElDNHVyai9TUlkrQnRrUzRDNWVUa3BJR1FqWXFWQ3JWRUpTRDBaWk1JS01UM2tFR1pBN29FVWVqUjZSWFM5VEJpZm56NXh2V2c2SGIvZFhUMDNQbnFGR2p1RmNBWDM3NVpkdWdvS0EzNEZ4THNscHFhNlNuTnpET0toWXNXQ0Q1WjlSbXpKaEJocUJlWDFrV20vVEVDZVBzcXdCM24wT0hEZzNFZUx3SGplbG5UWkp3cEtXbDViejc3cnRjN2NqTXpGU0o4ZXpUVUNJUGgvTHk4cmh2eElrTnRKaHU4S3YvQnlMeitzWWlHYU13U3NNaHEvSE5OOTlZd05BYXFkazFIRXVYTHFWMWwyYlMyMmJZWldiQzJDU0RJejQrL2luSW9nTGQzalB3Si9YK1lJVFV4SDNld1RBNCtkU3BVOWdWRVNOSGp2UkNkL3dKUk9hRlRVa3lLdno5L2RmRHlIREF2a0VZTjI2Y1UyQmdZSlhVaHFCUSt2ajRiTWVRcU5kalJyMW01YU5mcjBXZi81Y2RMaVBReThRWExseVlzRzdkdW0vcFcvR2FaTjZBOTVDMGZmdjJZK2ZQbjgrbmM4b05xR3owM3REZGtKQVF6WGU2UmNKUFAvMmtpSXFLbW9RdVNqWmRzVFl4VFB6WnJWdTM1K0FMNm0weDd0MjdseWJFemNPeEp2K1lSRXRFVjN3Ymx2bTRxMWV2WWxjaVpHZG5xK0EwbjRESXpJUWNpR0ZqZTFGUmtSdmtWbEZRVUVCRFRLc3pMVXhOR0U5SCt2YnR5eGxQa21MT25EbTJGS2hvN1JHVnFRbVg0TmZVMU5RVzV6SWxKaVptd3k4MG1nL09seFFNZ3UzdytzYU5HNDMvS0JPRk13cmRoT3pXT213azdBSUtzcGQ5K3VtblhEeDcvZnIxMXZEQmw1dkNCOWVYOXZiMlYyTmpZL01nbXc3d0pZTThQRHpVMDBEa1NoZ2NLN0ZWQTc3cGYyREQvSjhjNk9ibTlrVmhZYUVrNy9yd3hvSUZDeXdpSWlMb1VaM293WEV4Nk8zdHZRMWJOV0Q4a2N6OG55bEpEeGJDdzhNWDdkKy9YejVMNURRaUtTbXBuMFBEcXVETXpKdUtjbGNzaFFqL0JrQ1dMNFlQSCs0T1IxcFd3UXc1SzliTHkrdkQ0dUppbzh4dE5oano1czJqQ1d5bE5QVVN1OHdiTWlibHFGaUtCOFRFeEV3OWZQZ3dkdHNaZXZmdUhlL3M3RXh2Z0ROdnpsaVVtMktWU3VYSmpJd01GZVQyaXdrVEp0QzB6RXBUeGwvbG9sajQvUS9oYXEyWk9YTW1OMUdoWGFPK3ZwNmVtRHh0WjJkbmtxWHo1S0JZM0RzOWlkTDljRzlIUUdwcWFwaWhyellJb2FrVmkzcyttSldWRlF5NTQyTFpzbVUyQVFFQnJ4a3o4bU1xeGFMcnJhTlpFTGhueVY0K2t4MTY5dXhKNzR6K0JwRlpLR0xTRklxRmIzbzVJU0VoQy9Mamg0S0NBcHI1OXpsRVp1R0lSV01yRm43OHpzR0RCM3RBZm55eGR1MWFpL0R3OEFXdFRZNDJsTVpTTE01ZGkzdVp2Vy9mUHIwbU1Ed1dvSkFhdWk5YTVKbFphSWJRR0lvbGZ4MStleUxrVG1oajBxUkpybERDKzJMN3ZGSXFsdkxxNStkWE9XdldMTm0rWnlRTHJGbXpSaEVURXpQRjJ0cGF0TmRGcEZJc2ZOTTdrWkdSUmVmUE0xZHY3d1FMTkgvWnljbEpsUG5MVWlqV3hjWGxhRVpHUmdUa1R2REYvUG56N1lPQ2d0NUJkMmVRenl1bVl1bXRnTURBd0RmZ203YmJ0KzlsQS9pRDNIc3JRaWlXWW1uS1NtSmlZclAzbHpwaElBWU9IQmlNN204L1JHYWh0MFl4RkF0Lys3L3o4L01sV1NYOHNjZVdMVnVzUWtKQ3l2bE93VEZFc1phV2xyV2hvYUVMVjY5ZUxiOHBLeDBOOEJlekhIaXNWeXhVc1RSbEJkZEtoZHdKWTZHZ29NRFR5OHZyWTRoTXBUU2xFTVg2K1BqOHM3aTR1TTFKNTUyUUFGOS8vYlY1VkZUVUhDc3JxMVpYYmVHaldIcWJNRG82ZXVxaFE0ZE12alRDWTQrMHRMUkVwVkxaNHRLeCtpcVdwcXowNzkrL0orUk95QVcwY0ppdnIrOW1Waml5TGNYU3F5cndUZGNzV2JMRTRGY3hPeUVCZHUvZVRjOTV4MEY1TjdHcmwySnRiVzEvNzk2OSs2amJ0Mm5XVGlka2pheXNyQWhYVjFmNlJrK3Jpb1ZmZkdEWXNHR2lMeFhmQ1FsUlVsSkNhekw5ZzBLQTJvcWxhVG53aDEvZHVuV3I1QXVVZEVJaXhNZkg1NmxVcWpjMXV3cTRNU3ZnbS9iWDdIWlFLQlQvRDc3bXBUNFdRUnlYQUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIkZJRE9fMl8wIiwiRklET18yXzEiXSwiZXh0ZW5zaW9ucyI6WyJobWFjLXNlY3JldCIsImNyZWRQcm90ZWN0Il0sImFhZ3VpZCI6Ijk5ZWQ2YzI5NDU3MzQ4NDc4MTZkNzhhZDhmMWM3NWVmIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjpmYWxzZSwidXYiOmZhbHNlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6dHJ1ZSwiYWx3YXlzVXYiOmZhbHNlfSwibWF4TXNnU2l6ZSI6MTI1MCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMSwyXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0Ijo4LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjE2LCJ0cmFuc3BvcnRzIjpbImJsZSJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIyLTA0LTIxIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiVmVyb0NhcmQgRklETzIgQXV0aGVudGljYXRvciIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjIwNDE5MDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjItMDQtMjEiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6Mn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNC0xMS0yMCJ9LHsiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbImZjYjg2ZTAxOTA4NmQ0MDA4ZjY0NzY5ODE5NGExZjYzNjQ0ZjUyMWQiXSwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiZmNiODZlMDE5MDg2ZDQwMDhmNjQ3Njk4MTk0YTFmNjM2NDRmNTIxZCJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiWXViaUtleSBCaW8gRklETyBFZGl0aW9uIn0sImRlc2NyaXB0aW9uIjoiWXViaUtleSBCaW8gU2VyaWVzIC0gRklETyBFZGl0aW9uIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NCwicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoyfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCIsInJlbW90ZV9oYW5kbGUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlETXpDQ0FodWdBd0lCQWdJVVNPRWpUZi8veXFSZlBXN1FxOHF0SXlDckFnOHdEUVlKS29aSWh2Y05BUUVMQlFBd0x6RXRNQ3NHQTFVRUF3d2tXWFZpYVdOdklFWkpSRThnVW05dmRDQkRRU0JUWlhKcFlXd2dORFV3TWpBek5UVTJNQ0FYRFRJME1EVXdNVEF3TURBd01Gb1lEekl3TmpBd05ETXdNREF3TURBd1dqQXZNUzB3S3dZRFZRUUREQ1JaZFdKcFkyOGdSa2xFVHlCU2IyOTBJRU5CSUZObGNtbGhiQ0EwTlRBeU1ETTFOVFl3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRQ2R2bDI3dzJndTFmUFhlRUZiSWRxeDBCYWx2VkRWV3JRUEo3SHF2aXVFdFpIbHhTTHhTRnRjWHBUb2x2THZvZjhmNHRNZXJRVGtWR3pjbVl6bTFFQlQ0SUp1TW1vRXFma0VFaFdwc0FETUZyalprcWxaWTlFcXhRekxvVkVFb25FNW9HeFNkVkN4Q2NMSWFja3B5Ui9DQ1h2ajFCdC9oVGdFOWhUbEY0cFJxeE1reDNwbEY3eThkRFpsUkhXczd2Ym5obUJDR2VJMFpQRVE2bmwybUNnMnI3NGFkRjJ1Nks5cnJMZmhCQzNRTEU4RVByZ3FVc0kraGt1cTJ0SzRNMlNNT3A4dVVWVmtxVWV1M2gwa3IzV1ZJMFcwMnBrZ3JPZ2lGS0xGTmtTcmJZaGRqTUJEajVpem1xZmM5eEpSS29EWDYxMnFkOFpHVkhwVDVBWUZYKzFoQWdNQkFBR2pSVEJETUIwR0ExVWREZ1FXQkJUWnlVNURpUS9hMlVFZ0U3cUJLMHpoSXNSTlJqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUFNQTRHQTFVZER3RUIvd1FFQXdJQkJqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFYdm5CNFNMdVVKZllNU1ZHQWhzc0wvU21XbGkzRlNjY2d4eWR2S2xBQ2NpZElJV0tRcWEzcS9RU1VFUXpDOURnRWZNZ3I3aUMxQmtUWmJJTGJvVjZVWjVrbk5zdmpFWld1TWVvZ0o4dGdaczFoVnZLd1ppendKK21FY21zamhJckJZdW9MMVQ2eXJPSnZLRmcxanYrQ3k0WndBOUJway9WM1VPaXIxVnlLOGRDdHlIdTZ2Zm9zb3RBZFl4OEZBdVIyNDNnUlRNVjZKeDhKZGlnMkpESUFRTWx6VmVEcFNVSFgvSzJIWFJIeEh3ZmdqYmdVampCdS83MnI4T2ZlaHloekhYSTNLOENGRmRmbE8rOG5FT0pLM3k4RjFpdmdTNXVOLzhTbWNZdy9TVFFZd2hyeFB1d3ozblA4YmFNdW00QkIybm5ZbXBCNjBzWDNibDVrOFFVU3c9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFmQ0FZQUFBQ0dWcytNQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUhZWUFBQjJHQVYyaUU0RUFBQWJOU1VSQlZGaEhwVmQ3VE5WMUZELzNkNTl3ZVFTSWdTOUFRQVhjRkxBUVppOWZwZVZ6MXRZL1dUWnI1V3hwYzdXNWtuTGE1akkzWjg1c3JTMm5NMnNqdFd3WlM3SVVINEg0eENuRVF4NERBWkY3NFY3dXM4ODV2OS9sSW5CdlZKL0I0UHY5bnUvNW51LzVudk01NTZmekEvUXYwSGIvSXJYM1ZGS1BvNDVjbm00aW5VSVdZd0xGUm1aUVV1d2pGRy9OMWlSSGgxRVowTlJWUnVkcXQxQmQrMm5TS3lTL09oeXMwK2xrM2UvM2tROXF2RDRaVXRhNFZWU1V1WTBlaXB5aVRoQWZvY29PUlZnRHV1dzNxS1JpQWQzcmJjRXRqVGpZSW9mNldhSHNDbXpWUFdDTXgrY2doOHRMcVdNS2FNV3NVakxxbzJSdEpJUTBvT3ptZXJwUXU0ZXNaZ3NPTmtHeEg3ZDBrZHZUVDE3czRPTVU3Vkk4WmhqZ0dhTStBcTlpRU51OFBpZjF1ZHowN013dktXZjhHbFZvQ0VZMDRQQzVXZFRhWFlGYlI4dk52TDUrM0tnZmI1eE5NeWE5UmFtSml5bmFNbEdUVnRGbHI2YmE5dStwcW5FWDR1TXVSUmdqU1lFaHJON3V0RkZlNmxxYWw3TmZrdzVpbUFHSHluUHBiazhWbVkweHN0bnB0bEZDVkNZdHpUdUJOODNRcE1MalR0ZXZkUHpTVW5KN2U4bWtqeFozOWZYYktEZmxkWnFidlUrVFVnR25CVkY2ZlEyaVBIZzRXMTZVV1V3dnpiazE2c01aRStQbjBwdno3SlNldUF5ZXM4bGNwQ21hS3VvL3ArcVdyMlVjd0lBSFdydlAwWUV6aFhBdExBYnNzSGhwN2lHYW12eWlqUDhyeXFyWFVXWDlYb293eHlBdWZOQnJwNDNQT0JGWFpsa2Y4TURSaXFjcHlvd0F3cHV6MngrZld2ei9EdGRlOXNtc3p5Z3RjUjZDMXdiZHpCbDZPbHE1V05ZWTRvR2F0aEpNcmtURXgwakFSU0hBVnMrNXJZa1FOWGIrUWdmUExzUTZnWHlJbnNyZVFmbXBtN1JWRllmTDg2bjFmaVVPa1l2U2hrVVB4dmJ1a3pveTZLMWloTTFobzNYelc2RXZTZlhBK2RwaVdHYVdkK2RvWHpMem1Hd0tZRkxDQXNSQWxQQkFoTWxDRlhVN3RCVVZQcjhIZ1ZjSkhXcStGMDBwbHIrRE1UZHJQNHp2eFkxMWtOTWh4VCtTZVRHZytkNFY1TFFKaXR5VUdKTkI4VkZac2pnWUJaTS9JSS9YQ1RrajBxeURPcEYyQVZRMTdDSWpVcC9EblQxVWtMNUY1Z2RqK3NTMXdnMWdFM2dpZ202MGZDWHpTblBYYnlBUGJJWHYrSURwRTE2VGhhSElTOXNreWhsbU1FNUYzY2ZxQUtocTJDMEU1UEgxZ1lhWGFMUERrWkcwSERKT25LV0hwNTFJMHo1U091eDhlMVdBdVp6ZEhRclRrcDhUbWpYb0krbGEwd0dac3p1YnFiTzNpZlE2QS9XN3ZWU1lzVjNtUjBKS3drS2M0V0hpQmttUjhJM0NDZ0k4N29PTDRxelQ1UCtSVUpCZWpFT2dBUEs4aFlQemF0TStlSVRwMklPOXlUUW1lcm9tUFJ4eDFxeEFjc2lsZS91YlNlRWJjV1FHWUVDZ2hjTFkySHlLam9nakgyNWhNcGpwVXYxT3VnbGk0ZWgyZVJ3ME8zMmJKamt5dUNnTnpnMHZ6bFlNU2lTczB1b280TUc3aE1PakNFYVgxeUZFMG5TdmpCenVUbkVwSzg2WjhJb3FGQUl1Ync4a2c5QXJFYVJFV1NaSStqSDRYYnA2ZzlFOUVuSlQzb2FSekROK01VSkJRREhuNTZhOG9VbUVCdXNPeEJzL041K3RKRWJQa0FGRGo4VUd2T3MvSVd2Y1NnbEdCaHZTNy9GVFlmcFdHWWREWThmUEF4V1NBMzVzVEM0cDQrTG00QWFxSW9QZVF0ZnVmSzZKaDBaaHhsYnNVWE9TbVhOaWZENVpUQWt5RG9mYmJjY2x4bkE4V05BcXhDYlJOeWtoWHhRcGFEdzY3ZlhVWWJzaUcwS2h0djJvZUl2aDhyaFFNWU9jRUFxWEcvZUkrem5nT2M1eXhyOHE4MklBTTFjL0ZMRk9wbHF1NWVGUVhyTVp6R2NWQ2pZYkxXRzVJNEJUMWV1UnJsYnh0Tk90TWl0RERFaExYSUl5bkFBdnVPRVdFM1gzTmRBZnQ5NFZnYUc0MlhJUXQwWlg2UGVDRS9xUUZlOXJLNkh4N1lVNTBLdkg3Zlc0ZlMrcTdLS0JKeHNnZ0JYNXBTQUdoMWpJclZoNXpRNnczUmZhYWhCWG0vYUNiQ1pUakNVRlVUeVdacVc5cDYyTWpKUFhWcU9yUGdNTzROdjc0R2tmK293ZnROVkJEUW5qRkpxSFN3MTdwWHZoV1c1S1pxZS9RNDlOL1VTVENBVldvUVhGSUhCSFhYZTNGUHJVRHN1R0RtdEYvaEhLVEhwZWt4aGlBT1BJK1NKcTZTNkhGNEk5WVd6a0JKVG80NmlVTXpXcDhQaXIvUmlkdUx4S1lzU2tzVjh2TGxPUXZoR1gyWWxSME9CaEJqQyt1L2dFY3ZZMEFwSzdZazQxTnhqUFNRbldGSFRGNjZVcmpnZXZCOEN1NWErbDJ2WVNSUHR1VkRvNzNoaGRNU0huVVg3dFRqc1ZaR3hBbC9XcHRpT0lFUTFnbkwyOW1YNi90UjF0bWxrWWo4VzRYK0NTaldjVURHWTFOcFMvQzdoU0txaU1MTS9sMlFtU1daNzNEZHorZ2lvOEJDRU5ZUFE0NnFua3p3WFVicXZCa3hqVVFzV2ZaRmdidW8zckFmK3dON2pPTzkwK3lueDRQaTNMKzBuWUwxU2NoRFVnQVA0Z1BWLzdJZDFxKzFIU2htdUdrSXFXUlBneXhNRnFQOEhmalRualh3WTViUWZiSmN0Nk9JektnTUhvdEYvSGUxZWdzYXhIU3FHNndmZG1RNXg4TnlURkZxQmNwMmlTb3dIUjN5azUrMzZoRjd2WEFBQUFBRWxGVGtTdVFtQ0MifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wMi0wMSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzQsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWXViaUtleSBCaW8gRklETyBFZGl0aW9uIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVMkYxMDAwMjAyNTAyMDEwMDkiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0wOC0xMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzQsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWXViaUtleSBCaW8gRklETyBFZGl0aW9uIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVMkYxMDAwMjAyNDA4MTIwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0wOC0xMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzR9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDItMDcifSx7ImFhZ3VpZCI6Ijk3MzQ0NmNhLWUyMWMtOWE5Yi05OWY1LTliOTg1YTY3YWYwZiIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiOTczNDQ2Y2EtZTIxYy05YTliLTk5ZjUtOWI5ODVhNjdhZjBmIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkFDUyBGSURPIEF1dGhlbnRpY2F0b3IgQ2FyZCJ9LCJkZXNjcmlwdGlvbiI6IkFDUyBGSURPIEF1dGhlbnRpY2F0b3IgQ2FyZCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxMDAwMCwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9LHsibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MTAsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MTAsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNRVENDQWVlZ0F3SUJBZ0lVRi8wd1RQUDZGRXF4cHNpYkppTEZ0RGo0cWh3d0NnWUlLb1pJemowRUF3SXdkVEVMTUFrR0ExVUVCaE1DU0VzeEVqQVFCZ05WQkFnTUNVaHZibWNnUzI5dVp6RVNNQkFHQTFVRUJ3d0pTRzl1WnlCTGIyNW5NU013SVFZRFZRUUtEQnBCWkhaaGJtTmxaQ0JEWVhKa0lGTjVjM1JsYlhNZ1RIUmtMakVaTUJjR0ExVUVBd3dRUVVOVElFWkpSRThnVW05dmRDQkRRVEFnRncweU1qQTFNekF3T1RJek16VmFHQTh5TURVeU1EVXlNakE1TWpNek5Wb3dkVEVMTUFrR0ExVUVCaE1DU0VzeEVqQVFCZ05WQkFnTUNVaHZibWNnUzI5dVp6RVNNQkFHQTFVRUJ3d0pTRzl1WnlCTGIyNW5NU013SVFZRFZRUUtEQnBCWkhaaGJtTmxaQ0JEWVhKa0lGTjVjM1JsYlhNZ1RIUmtMakVaTUJjR0ExVUVBd3dRUVVOVElFWkpSRThnVW05dmRDQkRRVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCQndZZ0tWd2pDVjYrbHY3Z25wRkVSelUydU5EOGdkRWtQQ05jcy92RkRzMnNLNDJKdXhuaEZuSWdNQjJEeVUwSXJYSUxqZi8yWFQwWVNUZDFzUGlUU2FqVXpCUk1CMEdBMVVkRGdRV0JCVG5RYXJwZFN0NHNpZDdWamZOSUxJSHJiMlBvREFmQmdOVkhTTUVHREFXZ0JUblFhcnBkU3Q0c2lkN1ZqZk5JTElIcmIyUG9EQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lRRGNvWEozcnpOTUEvZlpraDA4UG9Gck14NDNHWU1oWk1mTFB3LzNNZkpwR0FJZ2VjdEt3bUpZTTlKOFNYOHgvYVFWNGlHdktXb0JmcjFYUFRBTVhPaFZFWUU9Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQURBQUFBQXdDQVlBQUFCWEF2bUhBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNRQUFBN0VBWlVyRGhzQUFBaWNTVVJCVkdoRDFaalBpNVZWR01mOUM5b2I2REpvSVFpMWlEQndJNVFnRVVFbHRCSjBZU0FHRXVSQ0ZCTXhJa2xDYXlGSVFpYUtCWlVvbFk3UU5KTTYzbkdhY2E2ajQwdzAwNHpCTUJPNkxFN244OXo3UGZPODV6M3Z0ZHE1K0hMdWZYK2M4L2srNXpuUE9mZXUrUHV2djhMakxEUFFHaDRPN2ZIeDBHb05wODlWdGEyZG5KeXNhWHA2S21sdWJqNjEwdno4WEZoWVdDaHFjV25SdExTNEZCNCtmQmdlUEh4ZzRyTVhqTDZWRGg0ODJEWFFCVTlHWWp2ZWJpYzF3UXU0QkErNFBzL096amJDbXdGbjRyOG9HUkIwSjlvZEpmaDJIWDRxZ2lJUDd3VTgwS1hvZTNDRGZ3UjRIbldKbWVwcG9LTjJEWDU2cXB3eXRBRFB6M1VpM3dzZTZQOEw3bFV4a0NzSFIzblVCYzFucVFUdTRiMkpFdFMva1FKUU54RFRoYlFwd1FOSDYrSFZDcHJ2dE14Q0RrK2VMeTVWb1h1WktNMkFuaThhYU1wM2c0NXBZMjBHajRCVnZ1ZlI5OUdXUEVoSnZWTEg5ME13c2hub0hYa0JlM2d2RDU3RE0xZ3ZhTlFMSEZYaEYyMk1aQ0NIUm9CNkFWbUN6OU5Gc3RMWU5WQ0N5YStWcE9jRVRuOStqRVlET1RpTDk5K0NsOUlHNVhDS2VLL0lWL3JvOXV2SEtocFFtUVN5R0hHWDU3TS8vQkJtUHZzczNOdTFLOXpidkRuY1diZXVwcnN2dkpBMDhlSkxZV2IzN3ZEN29VTmg0Y0tGOE9mTVRCRzZCTy9CcFpvQmJWQytYR3B4b3RscjE4TDAvdjBHTXZyRUUyRjB4WW93K3VTVEJqcjY4c3RoZFB2MnBGLzJ2eGR1ZmZ4eDVSb2FmKzY1TVBiMDA1MTNvOXFyVjV2NSs2ZE9tU0VQTGZDU0FRcEh4UURSVlZ1SmVFeVZYOCtlVGRDMGQvYnNDYTFQUDdValNIOS92N1dxWkQ0SURESTNUd3BPbStpUDY5cmxoejcvUEF6djNkc3hId09Cb2VrMzN3ejN2LzIyWXFBRVQxc3g0Tk9HQnhEZ3Q1OS9QdHg5NC9Vdzhja3hneHc4Y3NRaU9mTHNNNVk2OTYvMGRRYUxVZk1wNE1VWVhLZk43NUhYakFVRGhxNisrcW9GNnRhcVZXRW16cUNnbGJxMEJJVjNrZ0dCMHdyZThqb0s2TlkzMzRTYm16Wlp4N2ZYckFsM1B2Z2dUQXhkdDNzTVRLZWErZzVVM1lTWERPbTcza1ZBRHJkYVlYanJWaHVQbEpzZkdyTHJZaE5uTXBCSEgwQmV1dlhkZCtIV0s2L1kxSkxuWXlkT2RFK3VMWHVlVGoySTVBRVZkVjN6OTJoejBhYzBFdE56WlAxNk13SVQxeGdYa1lxVkdaQXd3SU8yNkNJNEVTRGZCd1lIREp6N3lrOEdGQWl0cE84ZU5yL3Z4WGhOK1E3VHpaZ0pzSXdkT0pCbUFCVU5MSTZOcFFVNy91Njd0a2hKRmJzWEIxR05KMjJtMzNrbmxVaEtvOG9pZmQ2UHBsVmFLWjFMc1Y4QnMwaC9qUUhTUGNiTXdlbGZZbXlxbWkzeWp6Nnk3MlJMeFFBUDhxS1Z1RmdSYnA0K0hRWmoxTWx4cmlmNEtFQlpDM1RveFRVQVMvY0lDQXNlVTdWN1VVb1J3VnNiS3lCc0FyYXNpUDJ3UnRpdktnWjRvYjFsaXowdzFOZG51YzUxSDNYZ2lUQ1IxOEEzTm00TXd3Nks2cVRQcmJWck8vZGluM2F0V3lyVFBSYXFyc1ZuVkJDOFpDQ1ppTThQdnZXV1Bac01BTThtUlVmdGt5Y3Q4bHdUdkRlQkFhYWZ0VUZFV0JkMFp1YTdjR2prcWFmUy9zQzBtekVIYThVZ2lwbkdDQ0pkYytDOHRUMG9tdWZkaWdHbWx0eFhKOHZnbmRPa0ZxRDAyOHh2ZHZ4bVVaVlNDbURnRjd0NVQ1OFVBOTJuNWpNdTRoN1BhcTE1Q1o2cVE2QW12emhsNzhOWk1VQjBXT1UycUl1NG9wNkxSY211bWRJalV6TFFQVXFqaFFqaG4yZTlFYlRmdi9xcUNDN3hIWGhhTW9SM0wxMjZsQm1JRjRrUUQvbDBVZDduOEUzZ0V0T01BZnEyV2NSQS9Nd0IwSzhGaVVVc2VPVEJVL1NqT0JIdy92bno1NWNOQUV3bjE0OGVzNVF3eUliSTg3eEZub0V4d1RxSXhtMm5ka0NhQWFCekFjYVI1T2RZcGxrcjZrc3BwR2o3Vm1KalphektER0NBbW56ajdiYzdHMVVEdkVUZFoxQXFEUDltY0ZEajJGRXhFTUZrNEkrNDRFZ1RpVE1XMXltRjdPNTZoN3dtMmtBekEvVHI0WlUrbUw5OHVXL1pBR2xpcFRGT0RTK1hEUENjUGsrODlscG4wUGo4NUpVcnRoR2x0SENwUllVQnZyUXZrRElZU0gxRkVWVWY4YW1wWlFPY3ZSaGpmTU1HUzU5S0ZRS1lTc0xnYk51UG1nRitqSGdZTDlLaWFYM29wTmwwRHdNR25rVWVlQlk4cy9yOXVYUDJITE5iTVFBWTJ6K2RUWjg1VXdIMjBaZjRKWmFpSGpXeWNxWEJFNWtKTnNLNGlIVVBhQUJKRVdZbHYwY3FBc1c3SGh4WjJzUnhNQ0I0bmlOMWF3YlE1TFp0MWpHYmp3Y3VpZlZDSkFDelRyc0FXcWg4NTU2a1V5elA4QjBZcVFZZlUxTW5ZVXViYVB6aXhZc0d6cGlWR2NqQnlFOWVwRWFUMy9sOWhHbUpJcUFLazZ2cFNLQ1dkYUJmYkRrNGxZd0ZDL3hQOGFjczBBU0JkamkyeFJsQVhLTmUyM0VoVGpFTHZQSjcxWWthWDRPT2NFQXpRNUxnVTVYaHp3T25lL3YycGZFd0lIRFNpN0xKYndObVRTWXFCank0TjBKazJaMHQxMlBIOXVPYjM2c040Qkx3dElMMkVhZjFhY0laaUJTWjJMblQ5aE5McWFOSDdaREl1QnlqbFc0R0gxTU5lTnJHRk1wRkJHOGUvckR6NjZpNzhERERiMWFPeUI2ZVp5MXQzRkZZQWpwdjBkVXZ6MWtCRURUQ1dOL1hYMXZKeEFEUUV2QTFBNzJNS0YwWWxLbThmdWg5R3l6dG9sRnNoS3daL1pZbUpkaXd2RGhKRW1sRTFPMkUybjJmdmtpWC91UEhEVnJnZ09hUkx4b29RYXROY291VnlLbGpIUXVJbXVWckJKUElhLzlkNHRtck8zYUVIdzhmdGx3SG1DckREaXZBbE8veEI0eXVTUno1SDVsQ1RmQmVXcXd5cENnUnZaTElaU0RSd09DZ2llY1ZERnBKc0Y2QTYzTXlBS0RhR25oVUwzQmE1VGpTUWtWNXJudlozL2tPMWd1NFBGMlE0QWxFWlFZRW5rZWVLdFJVNC9OS2cvSXFreDhKSlAwelY0SHVibEFHM2dNZVlZQzJaa0RnZ3MraFU0WHBpdStvWk1BYkViUmFEOTZCWDk2Y2VzRXI4dnBjTWZBb2VFbXdBdmMxWHZLblNLODYrSExPRzNnQjN2NlA2Z0tyeFFUWGl3YnlEVXFwb3FqTGdJZEhBS3JOMVRQZkl6U1JMMVdhRXJ4YUZuL05nQWYzS20xS09UemZjM0NVNTd1aVRpdlFrcG9pVHl0VkRKVEFnYlBJWndZRUQyQVR1SUNiQkpUYVhMM2d1VmN6a0lNcmJaQUh6K0h6MWdzNHRRYXF5RWNnKy9jNVN4c3RUcjlJMVE0TURDWm9yMFlEQXM5ekhsV2kzM094bHZNZUtMVWwrZWlUNTUyMm1qcFNNc0NIeDFNSHd6OGNlSHk3RWhSejVRQUFBQUJKUlU1RXJrSmdnZz09IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMSIsIkZJRE9fMl8xX1BSRSJdLCJleHRlbnNpb25zIjpbImNyZWRCbG9iIiwiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsIm1pblBpbkxlbmd0aCJdLCJhYWd1aWQiOiI5NzM0NDZjYWUyMWM5YTliOTlmNTliOTg1YTY3YWYwZiIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImVwIjpmYWxzZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOnRydWV9LCJtYXhNc2dTaXplIjoyMDQ4LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxLDJdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjYsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTA0LCJ0cmFuc3BvcnRzIjpbIm5mYyJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XSwiZm9yY2VQSU5DaGFuZ2UiOmZhbHNlLCJtaW5QSU5MZW5ndGgiOjQsImZpcm13YXJlVmVyc2lvbiI6MTAwMDAsIm1heENyZWRCbG9iTGVuZ3RoIjo2NCwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjN9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMy0wNy0yMCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxMDAwMCwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJBQ1MgRklETyBBdXRoZW50aWNhdG9yIENhcmQiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDIzMDcyMDAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIzLTA3LTIwIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEwMDAwfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIzLTEwLTAzIn0seyJhYWlkIjoiMDAyNCMyMzYwIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWlkIjoiMDAyNCMyMzYwIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkcrRG1PVFBLZXljaGFpbmlPUyJ9LCJkZXNjcmlwdGlvbiI6IkcrRCBtT1RQS2V5Y2hhaW5pT1MiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJ1YWYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfSx7Im1ham9yIjoxLCJtaW5vciI6Mn1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9kZXIiXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsic29mdHdhcmUiXSwiYXR0YWNobWVudEhpbnQiOlsiaW50ZXJuYWwiXSwidGNEaXNwbGF5IjpbImFueSJdLCJ0Y0Rpc3BsYXlDb250ZW50VHlwZSI6InRleHQvcGxhaW4iLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQm1EQ0NBVDBDQkdRZFBSMHdDZ1lJS29aSXpqMEVBd0l3VmpFTE1Ba0dBMVVFQmhNQ1NVNHhDekFKQmdOVkJBZ01BazFJTVEwd0N3WURWUVFIREFSUVZVNUZNUXN3Q1FZRFZRUUtEQUpIUkRFTE1Ba0dBMVVFQ3d3Q1JGTXhFVEFQQmdOVkJBTU1DRUZWVkVoU1QwOVVNQjRYRFRJek1ETXlOREEyTURNd09Wb1hEVFF6TURNeU5EQTJNRE13T1Zvd1ZqRUxNQWtHQTFVRUJoTUNTVTR4Q3pBSkJnTlZCQWdNQWsxSU1RMHdDd1lEVlFRSERBUlFWVTVGTVFzd0NRWURWUVFLREFKSFJERUxNQWtHQTFVRUN3d0NSRk14RVRBUEJnTlZCQU1NQ0VGVlZFaFNUMDlVTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFU0lwSS9kS1lDRFloendEMndTZllBT2Ivbk5haVBjV0YyMXZ4WmsvVGdEME9KdGNEK09QbTY0bndaZEZXU0VZU1c3aU9xbnBtSnlkZThtZ3IvdG5BaXpBS0JnZ3Foa2pPUFFRREFnTkpBREJHQWlFQTNidmhhelFGUHdteVhseEsveENYZmg3ZzFYMUVvYkxDM0wrMkdPUnhwN2dDSVFDZk5FVFgvbTJCZWJSTFhJNExNUDFFUUdQWEZEZjdPazc0VTd4YmlNNFZrQT09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsLzlqLzRBQVFTa1pKUmdBQkFRQUFBUUFCQUFELzJ3QkRBQU1DQWdNQ0FnTURBd01FQXdNRUJRZ0ZCUVFFQlFvSEJ3WUlEQW9NREFzS0N3c05EaElRRFE0UkRnc0xFQllRRVJNVUZSVVZEQThYR0JZVUdCSVVGUlQvMndCREFRTUVCQVVFQlFrRkJRa1VEUXNORkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCVC93Z0FSQ0FESUFNZ0RBU0lBQWhFQkF4RUIvOFFBSEFBQkFBTUFBd0VCQUFBQUFBQUFBQUFBQUFjSUNRUUZCZ0lELzhRQUd3RUJBQUlEQVFFQUFBQUFBQUFBQUFBQUFBRURBZ1VHQkFmLzJnQU1Bd0VBQWhBREVBQUFBYXlqNkY1d0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFZ2QzZURUNXhMSjM2eEZvYzVsOGxHUFNYS3N6TkRNMDlOVmROKzhQOFpkTEtCSHBpZSt2aFR1b2ZOWE5Bdm0rTXlVbVJuMWRRWmdBSE00Y3cxTGljUDFWTGVRdWpUekoyZEpNMzM1cGhhYVVqZWFiS1VSdmRWN1NaMWRUUzZTdUZrd1EvYkhyNzY1dDJGMW1kazg3TlBxRStTWXlIUjFnQUxCMThsdnlUZWpQWFFxbXVnc2dZZFZWcDF5YUhmWExXM3ZVUWsycGFJcWQ1TXJZcUlQZmpkTE5tVFl5MitDVG94c2I2SXR0U3U2bEE5QlpIQTZxb0FCeU9PTkhQMnBQZW5qcnMvOEF4bW5jWWJMQ2lhNnoweFNtYVp0OUhSTWxVUnZkRitxem9ZdXMzbGRLVjF1NmlhbTN0N1BydEpuMEdlbnUvQTlEV0d4eEFBQWV2OGd4WEtrL09acWM5Sm1iS2xwTXpaR2t6TmthVE0yUnBOd002RXJoMWo4dzJPSWV5QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUC84UUFLQkFBQVFNREF3UUJCUUVBQUFBQUFBQUFCUUFFQmdJREJ4VVhJQUVRRXpZUkVoWXdOSEExLzlvQUNBRUJBQUVGQXY2YkdJU1JsTlliRmdVWlMzRk1tbFBndEtXMmJmU0xyRTFQU3VXK0MwdkJhWGd0THdXbDRMU2NpR0x5azFpZ09ScGtzUUl4ZTkrR0FRbXFVUEc3ZTAwc1BuN1lhM2U1ZEJ0cTk1eGFPWllIRkF5eEo3Y3BCa3hoSGkyODR0YnppMXZPTFRITFFKM1cxZDJIMWg2eXNFV3M1aDF5S0VPYlJyY2ZPZ1lpeUJGU1dRdDR5S1BTRjdJM3ZERW50eXlmN3R3amNvZlJoNENOTjVBTWxBSzNJd2x5M1ZadWNzVk1PajJYTExSbXA5SSsxR0pqMWRPMGg1YlNIbEFvQ1ZqcDlUWEhoWTlKZHBEeTJrUEp6aXc0MGJkc09tYW01ZFpIWWRCOHc1WVkrTmVVNCtycEx1emI5Ym1lL3dBUHRqWDZ2dlZaZitQdXZsaTRoMFlTOVpkQ1ZNejNhbkpzam9wM1BraTNQa2l4NU5UQjZSS2RUbzJGbEc1OGtXNThrVi9KRWhkV08ySEFsVjRnc2hrT2hLWDhyRit0cmZqUnkxSXd4NEcya1F5U1JSL0YzWERFbnR5eWY3dHdpc05mU2x5SUZOd2crWVNHaU5BNnF1dGRYT0VURzdFMzdCKzNLTkw3ZTA2dFBjWHg5NVh0Q0NXMElKYlFna0JnQXVPUDBheDBKUEV0b1FTMmhCTGFFRW1PTTQreHJ0V3FMRnNvVmFobVV4bGw2V0V2d3g2VWtJemZDNWVHUEtXOHFET3FkZEdyWFJxMTBhdGRHclhScTEwYXRkR3JYUnExMGFuTXRDdEtUZVlCN1drOUpIOGtjLzAzLzhRQUhSRUFBZ0lDQXdFQUFBQUFBQUFBQUFBQUFBRVJFZ0lRSUNFeFVQL2FBQWdCQXdFQlB3SDZ5eGs2UktGN3FVU2g0enlmUzFERW1aRVBXTE11QzlNdFdSWWJnc2h1UmVtWG5GT1NwVml4WTFKVmxXSlFOenlzV0xGaXhZYm43SC8veEFBdUVRQUJBd0VGQmdVRkFRQUFBQUFBQUFBQ0FBRURCQVVSRlNGU0VoUWdNVUZSRXlJeVlZRVFKRkJ4OERQLzJnQUlBUUlCQVQ4Qi9MVmxkNFBrajVyN2lwenpkUjBsUXhzN2lxci9BQVA5S09NNVgyUXpXNTFPbGJyVWpuc3VvSytXRjdqelpSbU1nc1k4dUNVL0NqYyt5cFl0Nm11TDl1aEZoYTRWdlVHdGxVMU1KUWt6RXJPa0dPVjNON3NsdmNHdGtFb1MraDcxYUZNeGc4cmMyVmxTdmU4WHp3Vlk3VUJzeXNzMkdaMmZyOU1MbTd0L2ZDa3M2V01YTjNiSlFRRlVGc0FzTG03dC9mQ29hWTZablkrcXF6WUlDZDFaWTN6WCszRFZVNVVzbTBQTG9vYlVHNjZWbGljSHVwN1Foa2lJRzZxaG5DbmtjajdMRTRQZFBha0hTOVZOVWRXVjNUc3FLbTNlUHpjMzRTRmpiWkpIWmNSWmk5eXdrZGF3a2Rhd2tkYXdrZGF3a05TaHBJb1BTMmY1ai8vRUFFTVFBQUVEQWdBSEN3b0VCUVVBQUFBQUFBRUNBd1FBRVJBU0V5RXhRWk1GSUNJak16VlJZWkdoMFJRd01qUlNZbkdCd2VGQ2M3R3lVM0NTcy9CVWNuU0N3di9hQUFnQkFRQUdQd0wrWnQyRVpLTUR3cERuby9McG9GOXM3b1BlMDk2UDlOV1lpTU1qb1EyQlhKcDdLM1dJUWtIeVZ6Vjd1QUFnRVpCZW41VnlhZXl1VFQyVnlhZXl1VFQyVnlhZXlyUHdvN3c5OW9HbEtpaFc1NzNTM25SL1NmcFZwVGVNeW84Qjl2T2hYbWk5SXVuYzVrOE1qOFo5a1VobGx0TFRTQlpLRWl3RkYrVStpTzBQeHVLdFJTMEpFcjNtMjdEdklyMUtaMko4YW13MjRrcEszMlZOZ3F4YkM0K09BZmtMK21CNkE5RmtPT05XdXBHTGJPTDlQWFhxVXpzVDQxNmxNN0UrTmVwVE94UGpRUzRYNG5XNjNtN3IwbDZPOGg5cFdoYmFyaW5JOGxwTHpMZ3NwQ3E0RjNJTDJkbHc2dmRQWDVobU95TVoxMVlRa2RacVBCWTlGcE5pZmFPczA1TWY0WDRXMjlhMWRGR1JNZHh2WlFQUlFPZ0RlajhoZjB3VC9nMy9BRzA3MFBSWE9MUEtNcTlGWS96WFRNMk1lQXZTazZVbldEVWlFdTJNb1hiVjdLOVJwVGF4aXJTYkVIVWQrMHRRdUk3YW5mcDljSGtRUEV3MGdXOTQ1ejlNSVVCSHNjL0sxb2piV3RFYmEwSmNzTTVISnFUd0YzT0NWTmlobklPWW1ManVXT1pJRmFJMjFyUkcydE92dUNQaU5wSzFXYzFEQy91Y284VklSanBIdmo3ZnBnbkJJc2wwaDRmTVorKysvbTlQazMvb1lOMWNiVGx6aGEvMmp6RzZQL0hjL2FjTzV1TDByL1lyQW0zK21SZnRPL2pwVWJKa0lVejlSM2dZRWJvSlR4TXRPYysrTTM2V3doSW5pd3pjaTM0VnpnTmczNFZ6Z05nMzRVSXMyWGxtTWtwV0xrMHB6L0lZSmNTSE15VWRHSmlweVNEcFFEckZjNERZTitGYzREWU4rRk9NdVRncHR4SlNvWkZHZy9MREozVVduaW1VNUpCNlZIVDNmcmczUVdrM1EyckpEL3FMSHZ2djIzbWxZamphZ3BLaHFJcVBOYXRkWXN0UHNyMWluWVVrY0JlaFEwb1ZxSW90eW03dEU4VytuMEYvNTBiMGZrTCttQ2Y4Ry83YWQ2QXlndFJRZU1rcUhCSHc2VFRNT0tuRlphRnVzOVpwK1VTTXNSaU1wNlY2dkdpcFJ1bzV5VDVnNDEzSUx2TE5EOXc2NmJreFhVdk1MRjBxVFNtbm0wdXRxMG9XTGcwVkNLcU9UL0JjSTdxMHl0cjlxMHl0cjlxMHl0cjlxOHNpRi9LNHBUeGk3ajlNRHM2U1g4czVhK0l1d3pDM1IxVnBsYlg3VnBsYlg3VnBsYlg3VUZlUm1Rb2Z4MWxYZG9wS0cwSmJRbk1FcEZnS2NsVEhReXlqV2RmVUt5eXJ0eG04ekxYc2pwK1Btc2VFOVpCOU5sZWRDdmxRVFBiWEFkMW0yT2p1ejFkdmRTSWVvdkFHdWNJdTJUWE9FWGJKcm5DTHRrMXpoRjJ5YTV3aTdaTmM0UmRzbXVjSXUyVFhPRVhiSnJuQ0x0azFkM2RTSU9vT2hSN0JSVHVjeXVhN3FXdmdJOGF5MDU3SHQ2TFl6SVI4Qi9NNy84UUFLQkFCQUFFQkJRZ0RBUUVBQUFBQUFBQUFBUkVBSVRGQlVXRVFjWUdSb2NIdzhTQXcwYkZ3LzlvQUNBRUJBQUUvSWY4QVRZam80YURUTTBPTVVZNjN2RXRCWkcrYUJGdUQraFhxOUc1RUNITnN1NWFCTlBWNjlYcjFldlY2OVhwYzVZZjJ5bVpPMFJaMVQraWdaNFRnaE9Eby9VVEJ1Nk4vTi9YQTMwYTQwU09RVmVxckFkMi9Tb01IZ3VyT214R0VobnBDQXVXMzRVU0xxaGxoTVNQZ1JvMGJwdHN0M082WGFhb2JpVkNFSk1pZVkwREUwM2htMEhVNHg4OWRxWEpCUm1FU0RiaXVxeTFicGl3TUx1SDlYQUdsM09XN2NzdjY0L1pSd1Zzb1N1T00rWXFmdWVRZk5GQ3FKdnd2VTZMVCsyNytCaFBuWmtIM093OVo4TmhaZWhhWW5KSERiQTVvUEJYblB5dk9mbEUyREc4eEZrYWJIbVJHSUdzak1hODUrVjV6OHEvVVBGZ2x3MDJwTmtaZkozejVObkh2SUNmbUZCM1c2MzdiRGFQTTVZZEkyK1d5K3RRRmJKdE4xdHNXYmN4NmZuUEFwWE5Pb0xqc1RCREJ1QkVjUXVlMG9ZSUdGdG9VSjJyQkxNaUxRZGhuQXBZTWxhamV1MUNoaUZnWGtJU3pMdFNnSmRrckc3WXd3ZzRaMEh6TkF2UmlKSG5TaENDMjY3L1JHc2N1WFljMGZwalRsTE1kaHZ3ZFZ2MlVjSU5CckNjVCtBNHhWajFsTjVqbUsyMWF0RVdNZEJlMEtmdzJRbFg2SElPaGVETFJkYnNrbkRxS3gvSFNpSjlCWnRScTB5OHhQTkljQ3ZTcWVsVTlLb2JRTmhJRyt5R3pEZGY3QUVHZ1Y2VlQwcW5wVk1OSUVqdWNTZ0RGRGdaQVVTV3JieFlCaXVWTFFsbnZFYXNlQmg5UytZWjVoNXRTR3NEZEZMeHNPWEdqVTUvQkZtdlB1OWVmZDY4KzcxNTkzcno3dlhuM2V2UHU5ZWZkNjgrNzB5aW42NExXQnVRUjF0dGJvTjlTVTZWR1dCdnYvd0JPLzlvQURBTUJBQUlBQXdBQUFCRDc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nm9Namc0eHZQMzc3Nm1wenl5dnplcHI3NzczajVUL3o1ZS96Nzc2NHB2OEF2cS82SUcrKysrdmMvd0QvQVA4QXRmOEF2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2L3hBQWVFUUVBQWdFRkFRRUFBQUFBQUFBQUFBQUJBQkV4RUNBaFVXRkJVUC9hQUFnQkF3RUJQeEQ5Yk1kQnF6TUVVTXoybG4yQmhFUnAyQmJVV0NabmhMQnhBcHhQS0ltWlExRDkyY1JEeHJBV29BdDBpd2hzYm9EVEhycEFSakNqV2htNXRHb016TDlTL1V2MUw5Uy9VWEw5ai8vRUFDZ1JBUUFCQVFVSUF3RUJBQUFBQUFBQUFBRUFFU0ZCWVhIaElERlJnWkdoc2RIQjhQRlFFUC9hQUFnQkFnRUJQeEQrc2IzMTl1TllEbzd0UFJGVTBFODV6dmtvZFZ2bU43ZTQrS3RKVSszdzd6SitHS3pWYkdHUll0VnFXL1RGZ1lxQmRQM0lDOVVhRllYUVZGdVpQMUlVbzBjSVhOTjlpWTVRRG15bEhoK09tdzNCSGkyWEFTek94OGY0dTE3akZIa0ZiRjlSK2dJVnQ1Rnc4Wis0d3BnMUc2dnlFdkJCT2JaRVViaGVUWVFTak54MnFxNFlabmVVVmRlSmZ5dW4xR3NyUTFDRm1zcUZVVVdabnFmVWF3QlVMa2U0TUpTNExiZmxqWnljT0J5ODdMMEtqY3hxcXdienZiM21LNmF6RmROWml1bXN4WFRXRlMxOUNXM25HMTA1ZjJQL3hBQW1FQUVBQVFNREJBTUFBd0VBQUFBQUFBQUJFUUFoTVJCQllTQlJjWUV3d2ZCd2thSFIvOW9BQ0FFQkFBRS9FUDVOdmNVNFpraTUrQXRLUTBIckJaN3FlZUp2bWppdEFOZWdyOU45VXpHTUFqc3NhU0dreEI2TmZwdnF2MDMxWDZiNnI5TjlWK20rcVBNVUpyL1NpeDgrbm9nNG9xbUJQYmtzREdOc2JLU0UvRVMweFRIQTJGa1N1Z0VJUVNXWGhjQXNGV1ZmVFIyQ3QxRmhLN0ZUSnRBcGVIU0RDekozZnVoTUVUQXZIUTBPTG05bG8xZ0RKa2VoZ3dZTkQreEUrV0RsQTcwYnA1N29jSWttNWtwdDNmdHJDTUlJUkJFUWFQMEtVd1hXV3VrT0lrdkQ0SEZkd2RQZ2xMMWpBdUpWK1krQ1lMQlUvaXdPQVYyeFpnTWhEQU1ZUGoxQnRJZ1lsdkJLVy95TkZKQkcycHNtMURBOWdvcXdoMkdPQVlUMGtKWkduaWtKdzFCMkp3WkJ2UmliZWhBZzdpSjFsdGlra2lMOGdqa2FNQkZRL3dCbmZ3Yys3cmRQYVlzSkovdlhQTmxnZDhCaGE3UjlzUkozVkpIS3hHdWVaRmIxZERFWnNLMnJMejBaQ2lvMmttNzhlaENUNEVTdCsrdktxSk43ditrNkJMSlRkT0hXZmg5dngzc2JSV2U0OWFOT0VRaCtkdXNhTlMwRUkvUU9Sb3lJU2wzbjJoWGQ0dW9HSHlxQVFHdVRKYUZHemE3WVpMYVkwbVdmdGR3MGwxMXpCYldUSnYxRHNzbkNrcEpFZFNJQ0phV1M0NGZIUXlyK0dURW50TTk5ZU01ZEREY2dIMVF4RVM1S0NiMnVKenVGTXFTRFM4U25DTHdpbGxUQWJDcnNvN1BOaHlRdnh0RkJLQlFobnNMZUczSkM5Wno4SVYzZEJMS2U3WUNDcHJMUmF2Rm05M2tUS1VnWE1rSmxWM1ZaK0IrNnNURllEWUZiV0RkRkFiQXBNRzRtUWJLQkVSQks0Rm51aUVpZVNtQUZkSzhKNFFIUXpac3pOVnl5L0Jjc2I2RW1tQ1BKOEpNaStaNkdiTm5QTTAreGN6MkZEVUtCZGdBQTRLa2FDZk93QzhhQVN0WHFZNlN0NGJNWW94QVNCK0o5Z3dURjVpSVdtQXRNU1ZEWW9LSjNDdWRtSjNab0VlSmdieVllejR2L0FQOEEvd0QvQVA4QS93RC9BUGdnUkw2eFFlaW9iMFJWL0JiOGpzb0EzYkVtTWpZd0pVcUNWaitUdi8vWiJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wNC0xNiJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDQtMTYifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyJkY2Y1OWIxMWM0ZTNjNjg2NTk5Y2I3MjcxZTM3NjI1NDVhODYxNmNkIl0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbImRjZjU5YjExYzRlM2M2ODY1OTljYjcyNzFlMzc2MjU0NWE4NjE2Y2QiXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlNlY3VyaXR5IEtleSBORkMgYnkgWXViaWNvIC0gRW50ZXJwcmlzZSBFZGl0aW9uIn0sImRlc2NyaXB0aW9uIjoiU2VjdXJpdHkgS2V5IE5GQyBieSBZdWJpY28gLSBFbnRlcnByaXNlIEVkaXRpb24iLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2LCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjJ9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50IiwicmVtb3RlX2hhbmRsZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRFNEQ0NBakNnQXdJQkFnSVVVY21NWHpSSUZPZ0dUSzBUYjNnRXVaWVprQkl3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRRG01NTViV1k5V1crdE9ZMHJJV0hsZGgrYU5hbm9DWkNGaDdHazNZWnJRbVBVdzBoa1NHNnFZSFF0UCtmWnlTMzNWRXJ2ZytCUXFubXVtZ05oZnhGcmt3RVpFTGVpZEJjQzhDNEFnNG5xcWlQV3B6c3ZJMTdOY3hZbEluTE5MRmNaWS8rZ09pTjZaT1RpaE81L3ZCWk1iajlyaWFBY3FsaVltTkdKUGdUY01HYUVBeU16RU1OeTJubTZFcCtwalA1YUY2Z2kyMXQvVVFGc3VKMWoyUmoveW5NL1NkUnQrZWNhbDVPWW90eEhrRmJMOXZ2djJBMk92NUlUWkNsdzRiT1M5bnB5cFFpbU9aNVFBWXl0bVlhUXBXbC9wTVl6NnpTajhScWtWRE5FSkdxTmZUS0EyaXZMWXdYNmxTdHRNUGFwZzBKODRsOVgwdm9WTi9GcFM0VkNWQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJRZ0tGQWhHNlJhVytoVHk1MmR4ZVQ4YkM5Nkh6QWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQVlNemdMckpMSXIwT292UW5BWnJSSUd1YWJpSFNVS1NtYkxSV3BSa1dlQXRzQ2hERUhwWGNKL2JnRE5LWVdvSHFROHhSVWpCNEN5ZXBZZXZjM1lsckc4bzd6SHhwZlZjYW9MNVNldUprekh4S240YlRhU3A5K012d2FtbnA2NGtaTWlOYkZMa25mUDlrWUtvUkhrTVdoZVJKMVVzUDF6NFNjbWtDZUlMZnNNczZ2cW92cWpXQ2xGc0pwQmNzbHVZSFdGN2JCSjFuNFJ3ZytBVEVvcFk0SWdHdjZadndjK0E5citBVDJocXBvU2tZb0FsK0FOWXdnc2xPZjlzSmUwVitUQTlZWS9VbGFCbVBQVGQwLy9yOXd2Y2VQV1prUGpLb0FDL3pVTmhmRGJoNExWOEdIczNseVgyWG9tTC9MTmM4Sll6eUlhREVoR1F2ZW9QaGgvdHIxZz09IiwiTUlJRFNEQ0NBakNnQXdJQkFnSVVEcUVSdys0Um5HU2dneGdVZXdKRkVQRFJaM1l3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRREk3WG5IK1p2RHdNQ1FVOE04WmVWNXFzY3VibHZWWWFhUnQzWWJheG45Z29kTHg1c3dIMGxYcmRnamg1aDdGcFZnQ2dZWVg3RTRibDF2YnpVTGVtck1XVDhOM1dNR1VlOFFBSmJCZWlvVjdXL0UraFRaUC8wU0tKVmEzZXdLQm82VUxlTW5mUVpEclZPUkFrOHdUTHEydjVMbGo1dk1qN0p0T290S2E5SjduSFM4a0xtelhYU2FqMFN3RVBoNU9BWlVUTlY0enMxYnZvVEFRUVdyTDQvSjlRdUt0NldDRkU1blVOaVJRY0ViVkY4bWxxSzJieDJ6Nm9rVmx0eURWTEN4WWJwVVRFTHZZMXVzUjNEVEdQVW9JQ2xPbTRjcnB3bkRSTFZIdmpZZVBHQkIvL3BFeXp4QS9nY1NjeGp3YUgxWlV3OWJuU2JIeXVyS3FiVGExS3ZqQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJUcXQwS1FuZ3g3WkhyYlZId0R1bnhPbjlpaFlUQWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQXFRYUNXTXhUR3FWVlg3U2s3a2tKbVV1ZVRTWUt1VTYrS0JCU2d3SVJubHc5SzdIZTFJcHhaMGhkd3BQTmlrS2ptY3lGZ0ZQemhJbXdISmd4eHVUOTBQdzN2WU9kY0pKTmt0RGczNVBYT2Z6U24xNWNGQXgxUk8wbVBUbUliOGRYaUVXT3B6b1h2ZHdYRE00MVphQ0RZTVQ3dzRJUXRNeXZFN3hVQlpxMmJqdEFucS9ORFVBN2JlNEg4SDNpcEMrLytOS2xVcmNVaCtqNDhLNjdXSTB1MW02RmVRdWVCQTduMDZqODI1cnFEcXNhTHM5VGI3S0FIQXc4UG1yV2FOUEcya2pLZXJ4UEVmZWNpdmxGYXdwMlJXWnZ4clZ0bjNUVjJTQnh5Q0pDa1hzTkQwNWRDRXJWSFNKSXMrQmR0VFZOWTlBd3R5UG1ueWIwdjRtU1R6dldkdz09IiwiTUlJRFBqQ0NBaWFnQXdJQkFnSVVYemVpRURKRU9UdDE0RjVuMG82WmYvYkJ3aVV3RFFZSktvWklodmNOQVFFTkJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNWjYvVHhNOHJJVCtFYW9Qdkc4MW9udE1Pby8ybVEyUkJ3SkhTMFFaY3hWYU5YdmwxMkxVaEJaNUxtaUJTY0laZDFSbngxb2Q1ODVoKy9kaEs3aEVtN0pBQUxrS0t0czFmTzUzS0dOTFp1ano1aDN3R25jcjRoeUtGMEc3NGIvVTNLOWhFNW1HTkQ2enFZY2hDUkFIZnJZTVlSREY0WUwwWDRENW5HZHh2cHBBeTZua0VtdFdtTW53TzNpMFRBdWNzcmJFNDg1SHZHTTRyMFZwZ1ZkSnB2Z1FqaVRKQ1RJcStEMzVod3RUOFFESXYrbkd2cGN5aTV3Y0lmQ2t6eUNpbUp1a2hZeTZLb3FOTUtRRWRwTmlTT3ZXeURNVE10MWJ3Q3ZFenB3OTF1K21zVXQ0cmowZWZuTzlzMFpPd2R3TVJEbkg0eGdVbDVaTHdyclBrZkMxLzBDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01COEdBMVVkSXdRWU1CYUFGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFNd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkRRVUFBNElCQVFDM0lXL3NnQjlwWjhhcEpOanh1R29YK0ZrSUxrczB3TU5yZFhML2NvVXZzcmh6c3ZsNm1lUE1yYkdKQnlKMVhucXVCNXNnY1JFTkZ4ZFFGbWEzbWlvOFVwZjFvd00xWnJlWHJKMG1BREcyQnBscWJKbnhpeVlhK1IxMXJlSUZUV2VJaE1OY1pLc0RackZBeVB1RmpDV1NRdkptTldlOW1GUllGZ05oWEpLa1hJYjVIMVhnRURsd2llZFlSTTdWb2xCTmxsZDZwUkZLbFg4dXN0Nk9UTU9lQURsMnhORjBtMUxUaFNkZXVYdkR5QzFnOStJTGZ6M1M2T0lZZ2MzaXJvUmNGRDM1NGc3cktmdTY3cUZBdzlnQzR5aTB4QlRQclk5NXJoNC9IcWFVWUNBL0w4bGRSazZIN1hrMzVEK1dWcG1xMlNoL3hUNUhpRnVoZjR3SmIwYksiLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVIzOG1xMjZTZjJzelZWMkJkRzZXRU43a3VXVXdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFSWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFOWTBXYjlvUG9Sb0tvUXlXUGFKcHoxMXZyV1RnNnpUdG1OajJWb0tSbnl2S0dScXB6YjgzdzVsNllBOTZVWWtZQkRRUDBpbE8yRFBlNndXcVZSNXpEZlJ6ZGNIOGJoK0w3ZEdHdmFlNmhSVFpoa0ZrQ3BYRHM0SGNja25yRGY4RkNsSjdIZTM5SmY0Mi9HMVFtMnp6OVdXbXJQWHRnaUsveDA1R2pzUWZHdURHMXpmNVFUVVVpZThsd3ltSzNUZmRPdk5lZUpBQVBlMnBuN0l0ZlJiK3JWck5XaUR6bFJuMnZObloyd1BvNHdIL1dKNmRoWFpHK3JNV1QrYTZCb2NnMVVmSXc2a2R1bkc0YlRwWnpzdmFjRll5UjBtcGYrRGVPbnBTV0FteXdKV0h2VGxmMllYeEZ5ZVhjVEFDZFFsY01OR0oyVmhaUTQ4eHRQNS9SQlAvOGtDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNoeTQyb2tpcWNUUzFpcWEvSFJXamtCbjRIL01COEdBMVVkSXdRWU1CYUFGT3EzUXBDZURIdGtldHRVZkFPNmZFNmYyS0ZoTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBbitSSElQYnRNRUROZFQxZzhIL1JpdEFrVWRMZ0F0MXRXR1dubGo5a25idjQvNEdsWDdDOXA0NWVmUE85L2FaTDZPVjFYUktCaTZLbXRCVzVLN251WUVuTXgvNUJxQlNiTFQ3cmhkdUM0OVRCZU1iOVBIZFhzVGxTVk5ZZWZyMWRHaWRyNGoweFZCUUxiMXJrbkRBYmRXRHpLZnZuYXlLTzhGcndlN0h4ODQzTUcvckorYzBYcnVVdmJmVlRDSExpSVdoTTdvTkRoTDh4b2I2eFVvOUtMS2NTTCtJdFlzTzMvOVdiOFE5R2pzcUw0RlhzRGNHMVNhWWg3S3BmdU1tT2l4cXpKWk8ybklpY1BZUmcxSTJTdWlVZllPNzB0bWRIY2JsK2tTUW1TWXQ3cnE0dmlJTGcyR3gzajlySVR1V1RqYmFVYVNTUXhnT21NU0h1eXpNQUMiLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVRuYmJHSVIyTkh2enFJS0ZBZVF3RzFYQmlzMHdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFRWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPc1hqM2swNEJhbjRUWWR0WktxRC9PUEp4eUR5YVBtQ0JVRlVpYVpJZ1R0ZVpuajNYMjVEaGdwWlpYc0M0RDB5ZEljcmxBNndOVUluT1JML0w5ekJiVEVJTUFWTUdvNmc3VUtBbWIyTUY2QUhibmhZSmQ5ZWlrdXBWTldTaEhOWU5jNEdCZE8xWU42QWZVcXZKaEhiZTNWNFNOTVBtQlJFS0pQVno3VGh3Z21nZ1RlOFdzMkswL3dzcXYyd1NFN3BiQ0JzVVpoSVg1MWJaTTNwcUR3SlBUbVJGRXZ0MC82dEc1ZU84RjNqMTRPWHFmRWhtam4xVnZ4S0RZUU9MWkF4Q3d3Z0MwUDRDZGZXdjN5OFBTUjhJMzU0aE8xWStHek5qdklxWDM4TktMeXd1SVlIRmVyT3hObHhFTUJ2RmhZQnVSdVlBa2tnVWFQcU42VUJoc0lMcnNDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNDb1JIaGl5Tm5iblhSV0lMNlpCWG9CWDlZVE1COEdBMVVkSXdRWU1CYUFGQ0FvVUNFYnBGcGI2RlBMblozRjVQeHNMM29mTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFDUUZhZkpJMS81V2c5Q0VFaW1FMVJQNTRSZ1F3VE5UT09Rc0xBQ1RlK3JJdGxGUXpDOVpEaHJWODI4eVg3anp5K0FBc3AzaXpLN1QxdGgyZGw3bSt0dTBzdzJQYS9vbGMwMm50NlB5SXczNDhnYUh6aEkxKzBLRTQ1cXh2RkRlTDJsTXhiUGZDWXZ5RUVhWXpqaVFFTFU1OTUxcFhHV3lLTWEvNGZMdE8rWktPWGhNdVZlcTRyWERQSTU0VzZKSE9pQWFpS2Rpdys1ZTNjMmt0L2pGSVF0TTZ2TVhnOUxORnpkakVUTnQyMFZYOVFldlJwRlpmdWNNRzl3Q2FRRG9GbFB6cFRNSktoUGV2L2ltSm1aWWhLZnIwbExjZW10cWpJeExBb3FaZE9ZZkhCZzYrdkFjZFBJL2lhdUdwVUF2N1grVUtObUR3aloyQmFINHNMd2hCMm0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZkNBWUFBQUNHVnMrTUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFIWVlBQUIyR0FWMmlFNEVBQUFiTlNVUkJWRmhIcFZkN1ROVjFGRC8zZDU5d2VRU0lnUzlBUUFYY0ZMQVFaaTlmcGVWejF0WS9XVFpyNVd4cGM3VzVrbkxhNWpJM1o4NXNyUzJuTTJzanRXd1pTN0lVSDRINHhDbkVReDREQVpGNzRWN3VzODg1djkvbEluQnZWSi9CNFB2OW51LzVudS81bnZNNTU2ZnpBL1F2MEhiL0lyWDNWRktQbzQ1Y25tNGluVUlXWXdMRlJtWlFVdXdqRkcvTjFpUkhoMUVaME5SVlJ1ZHF0MUJkKzJuU0t5Uy9PaHlzMCtsazNlLzNrUTlxdkQ0WlV0YTRWVlNVdVkwZWlweWlUaEFmb2NvT1JWZ0R1dXczcUtSaUFkM3JiY0V0alRqWUlvZjZXYUhzQ216VlBXQ014K2NnaDh0THFXTUthTVdzVWpMcW8yUnRKSVEwb096bWVycFF1NGVzWmdzT05rR3hIN2Qwa2R2VFQxN3M0T01VN1ZJOFpoamdHYU0rQXE5aUVOdThQaWYxdWR6MDdNd3ZLV2Y4R2xWb0NFWTA0UEM1V2RUYVhZRmJSOHZOdkw1KzNLZ2ZiNXhOTXlhOVJhbUppeW5hTWxHVFZ0RmxyNmJhOXUrcHFuRVg0dU11UlJnalNZRWhyTjd1dEZGZTZscWFsN05ma3c1aW1BR0h5blBwYms4Vm1ZMHhzdG5wdGxGQ1ZDWXR6VHVCTjgzUXBNTGpUdGV2ZFB6U1VuSjdlOG1ranhaMzlmWGJLRGZsZFpxYnZVK1RVZ0duQlZGNmZRMmlQSGc0VzE2VVdVd3Z6YmsxNnNNWkUrUG4wcHZ6N0pTZXVBeWVzOGxjcENtYUt1by9wK3FXcjJVY3dJQUhXcnZQMFlFemhYQXRMQWJzc0hocDdpR2FtdnlpalA4cnlxclhVV1g5WG9vd3h5QXVmTkJycDQzUE9CRlhabGtmOE1EUmlxY3B5b3dBd3B1ejJ4K2ZXdnovRHRkZTlzbXN6eWd0Y1I2QzF3YmR6Qmw2T2xxNVdOWVk0b0dhdGhKTXJrVEV4MGpBUlNIQVZzKzVyWWtRTlhiK1FnZlBMc1E2Z1h5SW5zcmVRZm1wbTdSVkZZZkw4Nm4xZmlVT2tZdlNoa1VQeHZidWt6b3k2SzFpaE0xaG8zWHpXNkV2U2ZYQStkcGlXR2FXZCtkb1h6THptR3dLWUZMQ0FzUkFsUEJBaE1sQ0ZYVTd0QlVWUHI4SGdWY0pIV3ErRjAwcGxyK0RNVGRyUDR6dnhZMTFrTk1oeFQrU2VUR2crZDRWNUxRSml0eVVHSk5COFZGWnNqZ1lCWk0vSUkvWENUa2owcXlET3BGMkFWUTE3Q0lqVXAvRG5UMVVrTDVGNWdkaitzUzF3ZzFnRTNnaWdtNjBmQ1h6U25QWGJ5QVBiSVh2K0lEcEUxNlRoYUhJUzlza3lobG1NRTVGM2NmcUFLaHEyQzBFNVBIMWdZYVhhTFBEa1pHMEhESk9uS1dIcDUxSTB6NVNPdXg4ZTFXQXVaemRIUXJUa3A4VG1qWG9JK2xhMHdHWnN6dWJxYk8zaWZRNkEvVzd2VlNZc1YzbVIwSkt3a0tjNFdIaUJrbVI4STNDQ2dJODdvT0w0cXpUNVArUlVKQmVqRU9nQVBLOGhZUHphdE0rZUlUcDJJTzl5VFFtZXJvbVBSeHgxcXhBY3NpbGUvdWJTZUViY1dRR1lFQ2doY0xZMkh5S2pvZ2pIMjVoTXBqcFV2MU91Z2xpNGVoMmVSdzBPMzJiSmpreXVDZ056ZzB2emxZTVNpU3MwdW9vNE1HN2hNT2pDRWFYMXlGRTBuU3ZqQnp1VG5FcEs4Nlo4SW9xRkFJdWJ3OGtnOUFyRWFSRVdTWkkrakg0WGJwNmc5RTlFbkpUM29hUnpETitNVUpCUURIbjU2YThvVW1FQnVzT3hCcy9ONSt0SkViUGtBRkRqOFVHdk9zL0lXdmNTZ2xHQmh2UzcvRlRZZnBXR1lkRFk4ZlBBeFdTQTM1c1RDNHA0K0xtNEFhcUlvUGVRdGZ1Zks2SmgwWmh4bGJzVVhPU21YTmlmRDVaVEFreURvZmJiY2NseG5BOFdOQXF4Q2JSTnlraFh4UXBhRHc2N2ZYVVlic2lHMEtodHYyb2VJdmg4cmhRTVlPY0VBcVhHL2VJK3puZ09jNXl4cjhxODJJQU0xYy9GTEZPcGxxdTVlRlFYck1aekdjVkNqWWJMV0c1STRCVDFldVJybGJ4dE5PdE1pdERERWhMWElJeW5BQXZ1T0VXRTNYM05kQWZ0OTRWZ2FHNDJYSVF0MFpYNlBlQ0UvcVFGZTlySzZIeDdZVTUwS3ZIN2ZXNGZTK3E3S0tCSnhzZ2dCWDVwU0FHaDFqSXJWaDV6UTZ3M1JmYWFoQlhtL2FDYkNaVGpDVUZVVHlXWnFXOXA2Mk1qSlBYVnFPclBnTU80TnY3NEdrZitvd2Z0TlZCRFFuakZKcUhTdzE3cFh2aFdXNUtacWUvUTQ5Ti9VU1RDQVZXb1FYRklIQkhYWGUzRlByVURzdUdEbXRGL2hIS1RIcGVreGhpQU9QSStTSnE2UzZIRjRJOVlXemtCSlRvNDZpVU16V3A4UGlyL1JpZHVMeEtZc1Nrc1Y4dkxsT1F2aEdYMllsUjBPQmhCakMrdS9nRWN2WTBBcEs3WWs0MU54alBTUW5XRkhURjY2VXJqZ2V2QjhDdTVhK2wydllTUlB0dVZEbzczaGhkTVNIblVYN3RUanNWWkd4QWwvV3B0aU9JRVExZ25MMjltWDYvdFIxdG1sa1lqOFc0WCtDU2pXY1VER1kxTnBTL0M3aFNLcWlNTE0vbDJRbVNXWjczRGR6K2dpbzhCQ0VOWVBRNDZxbmt6d1hVYnF2Qmt4alVRc1dmWkZnYnVvM3JBZit3TjdqT085MCt5bng0UGkzTCswbllMMVNjaERVZ0FQNGdQVi83SWQxcSsxSFNobXVHa0lxV1JQZ3l4TUZxUDhIZmpUbmpYd1k1YlFmYkpjdDZPSXpLZ01Ib3RGL0hlMWVnc2F4SFNxRzZ3ZmRtUTV4OE55VEZGcUJjcDJpU293SFIzeWs1KzM2aEY3dlhBQUFBQUVsRlRrU3VRbUNDIn0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMTItMjIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2LCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IlNlY3VyaXR5IEtleSBORkMgYnkgWXViaWNvIC0gRW50ZXJwcmlzZSBFZGl0aW9uIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVMkYxMDAwMjAyNDEyMjIwMDkiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMi0yMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzZ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDEtMTAifSx7ImFhZ3VpZCI6Ijc0ODIwYjA1LWE2YzktNDBmOS04ZmIwLTlmODZhY2E5Mzk5OCIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiNzQ4MjBiMDUtYTZjOS00MGY5LThmYjAtOWY4NmFjYTkzOTk4IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlNhZmVOZXQgZVRva2VuIEZ1c2lvbiJ9LCJkZXNjcmlwdGlvbiI6IlNhZmVOZXQgZVRva2VuIEZ1c2lvbiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjowLCJibG9ja1Nsb3dkb3duIjowfX0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjAsImJsb2NrU2xvd2Rvd24iOjB9fV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDNlRDQ0FkR2dBd0lCQWdJSkFKYlR5cnUxWC9JUE1BMEdDU3FHU0liM0RRRUJDd1VBTUNNeElUQWZCZ05WQkFNTUdFZGxiV0ZzZEc4Z1RYVnNkR2xCY0hBZ1JrbEVUeUJEUVRBZUZ3MHhPREEyTVRJeE5EUTFOVEJhRncweU9EQTJNRGt4TkRRMU5UQmFNQ014SVRBZkJnTlZCQU1NR0VkbGJXRnNkRzhnVFhWc2RHbEJjSEFnUmtsRVR5QkRRVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNVmpLSFdwYkQ3VFNsTXhvY2pUbDZuSWY3eDMyUG1zUTl6R3VMR0dxQTBVUVpvSXEzWEx6TDZMWVV2SjVBNWcwdXlGR2xsSEVmR0FLckVhQ1E4RlZ2UFMvVWgwRnlmeldoUkF6aVRTaWpqTUlJVmpqalV2OW05dkZtY1hTY2dIaWc3T2R6ODg1OFYwa3JOSDk5cUdtM3dqZ2FPZXJUV210K2pYQ1VmbjAxSWtUUHd4RzJIbGdFZDQ1ak5MU1Y3Vm9vbCtLZThFMmtpNGxFa1RlSHpib3VsUjVHVWJwM25NaTdFNDdWTVFhM2JOd256V0Jic2FCU1NRaExrM201SGFLaGh4YTZ3SkRLNDdOaU1Da0NrZElIdVdTUUxWQWZtODVVQU9OdEVPUHdpME91SzNxYmU4eUtPRkdmMEtoQjVNTWVBeW03TVYvTTRXMGE0OW9nUEQ5cE1DQXdFQUFhTWdNQjR3REFZRFZSMFRCQVV3QXdFQi96QU9CZ05WSFE4QkFmOEVCQU1DQW9Rd0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFKV3o1eExNazVXTlliQWI2eU94RUNCb1oyV2VCL3FsNFZKM08vMy90TnN4T1luekxlV281NDB6UWg5ckFtYXh6N2V1bUJsc2tNcTR5R1BTTlhCOXljV0dIZ2tjQ2VTek4yd3Y4Q0l6REJzMm9CWmpUTms2NUxCWkRzc1RPQnRNVy8rdVRGSFFmYnVPM0lTTGhJMERYZlJFaTlORE0zamZrMTF4SGNzZmgyUk1WK1FkTmZ3VmFaWnJDcStvdUcrRXZrdjdLcXErb3l1MFZGTS90ejY4VEdsNnlsaFBGUjFxaDl3dHRwVmpBT09DRVFDTHFQMmRQMjhsd1lCeUNxSFFxVkh3YnVqdi9MWmpabktXM0xZbmRaaXhQUFNSQ0pzc0REd0p2aC9mNm5UeGc5WkUrL0pjWXJlNUNhSThuelZIYVNPQ2pOSjdGelVMRzY0SmlXT3ZRNTA9IiwiTUlJRGRUQ0NBbDJnQXdJQkFnSUpBSUNVVHZrZ3RqNUNNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1GRXhDekFKQmdOVkJBWVRBa1pTTVF3d0NnWURWUVFLREFORVNWTXhDekFKQmdOVkJBc01Ba05UTVNjd0pRWURWUVFEREI1SFpXMWhiSFJ2SUUxMWJIUnBRWEJ3SUVaSlJFOGdVM1ZpWTJFZ1EwRXdIaGNOTWpBd056QTNNVFF6TnpFNFdoY05NekF3TnpBMU1UUXpOekU0V2pCUk1Rc3dDUVlEVlFRR0V3SkdVakVNTUFvR0ExVUVDZ3dEUkVsVE1Rc3dDUVlEVlFRTERBSkRVekVuTUNVR0ExVUVBd3dlUjJWdFlXeDBieUJOZFd4MGFVRndjQ0JHU1VSUElGTjFZbU5oSUVOQk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBdkFLT2VxQzUvcDBEMWlzQ1lLUUpsVlVPckI2STdETG9jdW5FL1JtOGR1R1RieXhRaHQzQ2JGVlR2M04yTHAyZmJqeGxJKzNzT1NHazMzRlRZa1RxeGNkSklySjdTc2tCY1VTTnJmS09hUVQvNktRY1A0Q203Vis2NTVUcStUV3h5eFdRaER5Z3QxNXFvUDdNdUs2YlQ5U3dwQ2pwZktoYU1TbXlRYU1vVWNSQWJMcWR6QkNhYzBoekIrWmUrZ3FKbG5XVjlVYVNJMnJGc1Z1SDRaRTBjUk8rTU9wYUxnTS9zMjQ4bkdHSHAyMmV3U1FmYm5QYUJiYjhpcXlBUCtjdTUyR0xzVXBLUkplYkUrUjYrUE1ROUpDZFdlUVpSM0RrZlNpZGt2M21jYjRqcTFpSXRhK01xS2hSbndyZlhoOTExS1dMbllBbDlFTkNoTFgwYzZTajFRSURBUUFCbzFBd1RqQWRCZ05WSFE0RUZnUVVXTHZoUkJVUG44dUxJZjY4K2d2L05aSXdHU0l3SHdZRFZSMGpCQmd3Rm9BVVdMdmhSQlVQbjh1TElmNjgrZ3YvTlpJd0dTSXdEQVlEVlIwVEJBVXdBd0VCL3pBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQUZMckRoYWVnZUtIeFlqSDNFUDN2VUJLaG56TTIwNkFTeGdlWUNPMkVjOXBPbFlKYWVxRkUrc1VhbVVWL3B3akRscU5hU2dGZ3k3VHdlWWt2T21NbjRxU2NzSHF2SjN6R09BaWFmd2FoMXZVSGZDbFhSOCtheE8yaUdPVUYwSktyWjlZWWpiQWE1LzRIQ2x2N2pGUE9kTVdUT1F5bmdvaUhBczNqa3VZanBDTEZsQjRWT2kzZDF3akExcG5UZEJLa0FiN3Q4blR2dysvWGJGdmNRYTczVkg3c2p2b0JxRDNmZE1mUmN1VnE0cVVadFpUNmNHYWdUSEQ2MVR0cWg5b01DWlhjRGJSMVBHWm5OYnF5Y3NXUERJSzBucG1LMy8zbGZWOGMrWnNyeTZlMTcwbWZKTVpwN084bTZDU3o2L1ZMSyt5REpkNzg0MXdwbWVLVGY2SW5aQT09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQVF3QUFBQWdDQVlBQUFEbmxVWnFBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRW5RQUFCSjBBZDVtSDNnQUFBQVpkRVZZZEZOdlpuUjNZWEpsQUhCaGFXNTBMbTVsZENBMExqQXVNakh4SUdtVkFBQUsxRWxFUVZSNFh1MWREWEFjWlJtK05PQWZLb2c2V08wUWNyZVgzTzcxUjQxb0hkU3FxREFPZzMrY1lFWEJvbFhSVEVuMjIwdGFLVGM2NG1nQnF6QmlFVVZwQmRxaXd3aHFTZElTMnVwWVNndlJ0cFRTY2tsald6SGFnanBTUmRyNHZMdHZqcnZrMjd2ZHZkMUxqbjdQekROM3QvZCs3L3QrZjgvKzc4YUswTkRhYXIycU9kWFpvcVd5SDlSMGEwRmN0NjdXZEhHVFpvalZDY1BxU2VqVzFvUXVIc095L2VCVHNEbU0vNTRaVDlqK0xXR0lnN0RmQi9zQmNEUHNmNFhmUDhYM2IydUcxWkhRelU4bVV1S2R5V1RIbTVxYWNpL2pIQUtCeWlmMGJCcitMd2FYSVBZUGtNZHFmTDhYZFdwbHMxQUEzMS9Rak93OThMOFM5YjhCWElSMituRGM2RG96bHNrMHNsbmtRTXhrUEdYTzlFSnRWbllHRjRzVXlWbmQ4VVRhZXA4YncrNkxha0JqNWl6ZGJOSlMxcnhFV255V3hnMzZFbVBkV29QUERlamY3ZUFUR01zSGFEelR1QzZoYmowTi9wWG1Bc3J1Z3MwV0xQOE51QkpqWkptV0VsY2wwOW1QSjFKbVcwdEw1K3VpSEJ1R2tYc2xqWDg3bmk0RXpWbms5QXZrc1FuNTdFU2RockI4Qk11UGpPV1AvLzRPSHNSL2U3RDhZZFRsZnRSaEZmZ2RMRzlIdTF3QWZ6cjU1akFPa2lRS2h2VmJHQjZDMC8vaSsyaU5lUng4RmdudlJmeGZhaW56U2s3TkUwaUlVUGJmNDN3V21OVE5kN0JwS0VBN0xaZkZBWTl6cDN5WlRTTURpUVZpL1UrU2c1UVlBSWZPbUcyZXdzVWpBL3JoVzdMNEJlcm1qOWgwVW9CMk9CK1RaVFc0Qi9rOE95Ry95Q2lPb1cxSVlINkg4WFB6OUxiY0t6aWxRR2hwTVp2aFp5SEd3RzNnNDJCazg1WjhvOTBHOFgwTmlTczFJdjJRR2s4S2RXc3p0NHNuSVA4UnFSOW1EUVhESWRaU2JCb1owSWwzUzJPWFpYWXBGNDhNVTE0d25LMWJlVzQxcEwzRkVRQ0psUFZXdERHMmZ1eVZyTlIzdEJUZFNqQjhZcklGb3lWdG5vMk9DekJneEROQkI2cFhLTUh3eGlEOWdLM0tjNlBja3ZCR0pSaStNY21DMFlENGZkSzRYb2g5Vy9ZVENaUmdlS052d2Noa0d0RzJlMlcrYWtzbEdMNHhtWUpCYXhscFRJK2tOUlFkbUdSM29VTUpoamY2RlF3NmNDcnpVM3RDTUxEV3VRc2QzUitBdzNLbkJRNUt5bmpoamR4T25uRGlDRVp1R2pyc1lXbE1KdHBpV1VLM0JtVC9GZkV1ZGhnNlVQZTZGZ3owYlI2ZmE2TW1uWTNrbER3aGFZakxVVTZlczI3dDBnenptN1ZnVXU5NkQ2ZmtIeENhNjJVVkdDTXE4ZzAyalJRbmltQm9SdllpYVR3bTJudGZXOXZDazdXMGRZSHMvd0oxNjNrNmVNWnVRMFc5Q3diRzlLMXNPcVdBdklVMFg1dGlEWnROYlNqQmNHRUVndEhXZHN2SjhFMm5BdVV4aWJwNWhXTTkyb0RmMnliOFgwS3gzckVORjBvd29nSG0waEpwdmphVllQakNpU0FZaWJUMWVXa3NKaWJDay9QbTVVNWljOHJ4UXBsZE1SUHA3SGxzSGhxVVlFUURKUmdoNHNVdUdIU1JEK3BJVitUSjR4SDFMRzlkakNIVGlNbFI0VmlHMkU3SFJiaEFLRkNDRVEyVVlJU0lGN3Rnb0oyejBqaE10SE9lamwyd2VRRlkvbEdaZlNuRmZEWVBCVW93b2tIQ01CZEw4N1dwQk1NWEtncUdJUzV2VHB0bmgwWFUrMDVabkFKREZBekQ2RGdkL3A2V3htSEdEZkZGTmgrSDBRYjB3YU95TW1PRStPVU5JL2NTTGxBMTZsMHcwRjY3NDdxNHBScEdjZHFhN2t1UjVVdEVINDVnRG13S2kvRFpqOC83SUVTMzRyT3plYWFZeldsVWgzb1JqSm96Uk1Hb09BRU5hMGkyZFRHR2VFcDhURkptUER2WXZHclV1MkNFUWJxaGtzT0ZCc3lsaTJXeGFzVGo2TmQxMnBzWHY1N1RDUVlsR0M0TVNUQmFXNjAzb28xZGI2cXpxVnRmWW5NNTZBcEJ3OW94b1Z3Uk1ZbEdOSzM5MVZ5aUtpakJpRVl3bWxQZExiSll0U1RhN3FIaUErdStvUVREaFNFSkJ0cHZoZFQvR0hXeHY5eld4UmkwdFBpRXRId0p4YlZzWGhXVVlFUWpHSFJ3R3VPaDBnVjVrVE9lTWkvaGhQeERDWVlMUXhDTXMxcXRWZ3p1OHJldnB5eVBqd0h3c3BWaC9TdVZXaktkQ3dTR0VveW9CQU81cDgzM29wK2VrOFdzRmRGK3dhOFNWb0xod2hBRUEzN1dUUEJiUkhUY0FleEd2SlROSGZRTU5jZjZCcytQOWVibnhmcWVQSldYMmtDWnpIZ2ZFeGpDR1FJbEdORUpCc0YrRUpFdWRzdmkxb2JpVDV5S2Y5U05ZT2pXWmpUeWZhSFJ1ZDlBSG90WXBXQTROeHFKWTFMZlROVDVLMndlaTYwZk1pQVVENEtqQmZibWo4YjY4c3RqMnc3YUQycWhmVS8weHk2WnJ6SFMycXVscFRObCt3eUl1aGNNakJVNjYxUU5tMmN1UG9QRFJZVFJCanBiUjJNQU9WOUhaek9ROTgvdy9mWXdpUEh0ZmplMGJ2MkZrL0NQZWhHTU9yc09vL0x0NjdvMVhEZ1Z1aUUvQndMeGp4S3hLT1hHMk02ZHRpMzZ3OE9SZG5HUDdUY2drRnVkQzhiVXZBNmpsa2lrTzgrVHRnMklNWFNZemZ4RENZWUxxeEFNTDdldm83N3R0bkYvLzBuWWt0Z2hFWWx4SExxYXpKMnRqRXFiczlpeVNXWG4ydjREUUFsRy9hT3NZQmpXQVRiekR5VVlMZ3dzR0xscEtMdFY2cE5KSFZaNFlITGYvbmZKQldJQ2gySGRRRVhpNmV3bE1yOGxkSjVIWXR2N2hSS00ra2M1d1VENzdHVXovMUNDNGNLQWd1SHA5R2RLWE1YbUVJeDh1MFFjWFBqWWErMHltVXdqMnV0eHFlOGlvbzRYMnZZK29RU2ovbEZobCtTUGJPWWZTakJjR0VBdzZIb0s3QTZVbmNpbzU4R21wc3RlZUIxRDc5Qlg1ZUlnNGYzRHAzT3BHT0xNbC9rZnh4Mnh6RnJmajhWWGdsSC9xTEJMc29YTi9FTUpoZ3NEQ0VZaVZmNzJkV2JwSmR3OSs4NlJpc040OWc3dWgzVmhGNFBGNlFtSi8xTHExZ0l1NGhtVkJBTVQ5dTd4NzB3SmcvVFlmVTZoTEpSZ1ZFYUZYWklIMk13L2xHQzQwS2Rneko1dG5nS2ZCNlMrbVBqLzBJd1pIUy9uSWc1R1J4c2hCZ05Ta1NqbFlpNVJBUHJ1VWxtY1ltSnkvWG5HM0hFeEs2RGlGa1pFeEJqWXlDbVVSU1hCUUR1UG9BNWJvMmJTeUw2ZFUvSUUzaXFVbmdZTm0yZ0QxN04wK0c4VnArUWZTakJjNkZNdzRycGxTZjBVRVRGTk5pOUZ6L0RNV0cvK2lFUWtIUGJtTjhTMmJadDQrYmh6ajBuNUozaUJkRnMxbC9BRTFMMnVCYU5XVE9yaUE1eVNKeUR2NzhyODFKeWVyeTZXUUFtR0MzMElSdE9jM0dsb3A4TlNQMlBVeFZObDEvVHI4cTJ4dnZ4NjhQa2lzZmduZmw4ZjZ4OTBmUVVsNG41R0dxK1l1amh5NXF6dTEzQ1JpbENDNFkxMUtSajBXa2d0Ri93bVJTVVlMdlFoR0Y0bUdBYUxZUFB5MkRnMFBkWXo5SDdzcHN5TjlReFVmQzBpWGZ5RlB0b25pMWxNR3F4Y3BDS1VZSGhqM1FrR3hDS3BXKy9tZElKQkNZWUxQUW9HdllRYTl1WGY3MWxwNjZKS2xIdDgvUXNVUiswWFRYdUFFZ3h2ckEvQm9MZnIyUWZIci9HemxlbUtLU01ZdW5rSFRTekVsTDQrc0ZhQ2dmbytCKzdXak96bjJMUXNuTmNHaUQxVVR1YlBvZG5GNXBHQXpwZ2d2dXRXQnVyNkg3dE91cmlVaTVRRlhTV0tNdC9IQk41RWF5WFVyK3c5TWNFcGp2R0s0dmZJYndWZHc4SXBsQVdOQlpTNUR2V2hONVhuNGVkb3FkOG9pRnl4MndrK2l1LzBJdWlsOUt3VFRza1Q0bWx4RHRyelJtNVhqUFVvMnBYZTZHNDlnanh2dytmQ2hOR2hjZmh3UUM5amFUTEVHOXhvR0ZlV3ZpWStVdVNtMlErY29YZHk2TllpTk93eVZQckhHQmgzSm96dVVDc2VUNW1YUWZGL2poZy94T2ZYTmQyOGdqbzBhSDNwTEFsTk5HZHRMNVlpNTV2UWdiZWo0KzZnLzlnc01xQU9IM0hhU2Z3RWJYY0R2bWVUaHZVcFRlOTZ5NFF6TTc2UW05WTBaOUZwZFBjbTZ2TnBzQXQ5c3R4cE8rdlg0RWJFMjBvVENjc0dTb25sK0IvZjZXYS9WY1Y1MGFTUHg3dE9EZUVCeGcxMHh5K2Rrb1hnZkFneEZpRGUxOUFPMzBNL3JFUU85eUxtQTRpL0JiKzNsK2Jua1BJSE40UHJVTCsxK0Z3QjIydmhveDFpZjFHODFYcGJ2QTI1WmpLK3IybHhSMjRhMWQ4UlB6RWZ1d29XY3NFV2lKTXpZaitJM3crVnRLc2hIZ0gvQVBaU25xalR6Zmk4eGg2N3VuVXVQZHJBMjhOeFlySC9BejN0STRqNStUT0xBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiXSwiZXh0ZW5zaW9ucyI6WyJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiI3NDgyMGIwNWE2Yzk0MGY5OGZiMDlmODZhY2E5Mzk5OCIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOnRydWUsInVwIjp0cnVlfSwicGluVXZBdXRoUHJvdG9jb2xzIjpbMV0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN31dfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjItMDgtMTYiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJTYWZlTmV0IGVUb2tlbiBGdXNpb24iLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDIyMDgyMjAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIyLTA4LTE2IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjQtMDYtMTgifSx7ImFhZ3VpZCI6IjExMDVlNGVkLWFmMWQtMDJmZi1mZmZmLWZmZmZmZmZmZmZmZiIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiMTEwNWU0ZWQtYWYxZC0wMmZmLWZmZmYtZmZmZmZmZmZmZmZmIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkVnb21ldCBGSURPMiBBdXRoZW50aWNhdG9yIGZvciBBbmRyb2lkIn0sImRlc2NyaXB0aW9uIjoiRWdvbWV0IEZJRE8yIEF1dGhlbnRpY2F0b3IgZm9yIEFuZHJvaWQiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbInNvZnR3YXJlIl0sImlzS2V5UmVzdHJpY3RlZCI6dHJ1ZSwiaXNGcmVzaFVzZXJWZXJpZmljYXRpb25SZXF1aXJlZCI6dHJ1ZSwibWF0Y2hlclByb3RlY3Rpb24iOlsic29mdHdhcmUiXSwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlbGVzcyJdLCJ0Y0Rpc3BsYXkiOlsiYW55Il0sInRjRGlzcGxheUNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbiIsImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDbXpDQ0FrR2dBd0lCQWdJSkFLQkV3U2QwT0ZYTU1Bb0dDQ3FHU000OUJBTUNNSUdoTVFzd0NRWURWUVFHRXdKSlZERU9NQXdHQTFVRUNBd0ZTVlJCVEZreERUQUxCZ05WQkFjTUJGSlBUVVV4RkRBU0JnTlZCQW9NQzAxdmRtVnVaR0VnVTFCQk1TWXdKQVlEVlFRRERCMU5UMVpGVGtSQklFWkpSRThnVW05dmRDQkRaWEowYVdacFkyRjBaVEVuTUNVR0NTcUdTSWIzRFFFSkFSWVljR2xsZEhKdkxtUnBkSFJoUUcxdmRtVnVaR0V1WTI5dE1Rd3dDZ1lEVlFRTERBTlNKa1F3SGhjTk1qQXdNVEUyTURrMU5qSXlXaGNOTkRBd01URXhNRGsxTmpJeVdqQ0JvVEVMTUFrR0ExVUVCaE1DU1ZReERqQU1CZ05WQkFnTUJVbFVRVXhaTVEwd0N3WURWUVFIREFSU1QwMUZNUlF3RWdZRFZRUUtEQXROYjNabGJtUmhJRk5RUVRFbU1DUUdBMVVFQXd3ZFRVOVdSVTVFUVNCR1NVUlBJRkp2YjNRZ1EyVnlkR2xtYVdOaGRHVXhKekFsQmdrcWhraUc5dzBCQ1FFV0dIQnBaWFJ5Ynk1a2FYUjBZVUJ0YjNabGJtUmhMbU52YlRFTU1Bb0dBMVVFQ3d3RFVpWkVNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVDV2VwOFdiQXZPSjNsVEJ6aTg3Zi9Db1k1WDBIVDAzSWIyTzFaWWozZmZOQmpnVHFXc09iNk1JUjR3N0ttNWtWWEQ1OGRHeWg5NXl3SUREUkxRZ2M0S05nTUY0d0hRWURWUjBPQkJZRUZPWU5QeEpVbU04dnFlcU00cGQwU2Z1M005Tk5NQjhHQTFVZEl3UVlNQmFBRk9ZTlB4SlVtTTh2cWVxTTRwZDBTZnUzTTlOTk1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0N3WURWUjBQQkFRREFnRUdNQW9HQ0NxR1NNNDlCQU1DQTBnQU1FVUNJQWxxZ05meHpBUG1JRDRzUXdvT2F0NE5DZExmZ1pmVCtqU0ttWHZZdkRUdUFpRUErK2xTY0FnRUFEMU1lYzFRaG9nZTR5YXNwMEYyZk1ZY055eG9LOXJvR1VZPSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFNZ0FBQURJQ0FJQUFBQWlPam5KQUFBQUJHZEJUVUVBQUxHUEMveGhCUUFBQUNCalNGSk5BQUI2SmdBQWdJUUFBUG9BQUFDQTZBQUFkVEFBQU9wZ0FBQTZtQUFBRjNDY3VsRThBQUFBQm1KTFIwUUEvd0QvQVArZ3ZhZVRBQUFBQjNSSlRVVUg0Z01CRFNJM2Y1Tjk0QUFBR2VGSlJFRlVlRjd0M1gxd1ZOWGRCL0J6enQyYmZjbHVTRWdJRXBKTkVDWFFJQVJDVUxRKytGYW5pcFNxcmJhV2NiUlRIS3N6OW8rK3pmU2ZwNTNwMDMvYXB4MW0ybWZHZ3ZXbHFIV3FkaXJGbDZLV0NpS1FoSkFJUWhCSXNra3c3MitiM2J1Nzk1N3plLzdZWk4yRTdONlh2V2V6YTg5bm5NNDBuSnZzN3YzdXVlZWVlMTR3QUNCQnNCdlJLeUFJVm9oZ0NWeUlZQWxjaUdBSlhJaGdDVnlJWUFsY2lHQUpYSWhnQ1Z5SVlBbGNpR0FKWEloZ0NWeUlZQWxjaUdBSlhJaGdDVnlJWUFsY2lHQUpYSWhnQ1Z5SVlBbGNpR0FKWEloZ0NWeUlZQWxjaUdBSlhJaGdDVnlJWUFsY2lHQUpYSWhnQ1Z4OElZSWxWZ25JUFE2OUFqbVAwdGloUTZCcDhzYU5wS3dNWWF4M2dKQU5lUjhzTmpvYU9YQ0E5ZmZIRGg1MGJOeFljTU1OMG9vVklsNExMdStEcGJXM3M4RkJ4Qmp0NmFHOXZlclJvODRkTzV5MzNvb2NlZi9XOGxwK3Q3RWdISTZkT0lGVUZXR01DRUVZczZHaHlFc3ZSZDk2QzFSVjcyaUJvL3dPRnIxNGtWNjRNT3ZDUndnb1N1VFZWNk92dlFhUlNPcERCYjd5T1ZpTXFTMHRNRFUxdDBXRk1VU2prUU1ISW4vNUN3U0RLUTRXK01yallMSEJRYld0YmY1Mk9zWklWYVAvL0tleWJ4OGJHNXVuZ01CWkhnZExqVGZiVTkwQVlvd0FZaDk4b1B6cFQyeG9hUDR5QWpmNUdpd0loZFFUSjVDbTZSVkVhbk56ZU85ZTJ0dXJWMUN3VTc0R1M3dHdnVjY2WkxDL1NqdDFTdG16aDE2NnBGZFFzRTErQm90U3Rha0pRaUdEd1VLRWFPZk9oWjkrV2p0N1ZxK29ZSSs4REJZYkdORGEyNDJtS280UTJ0MGQvdU1mMVpNbjlZb0tOc2pMWUttblRySGhZWFBCUWdoaHpDNWZWcDU5VnYzb295L2FjMnRLWVhJU3BxYjB5bVZQL2ozM2dLa3B0YWtKVVlxSStXOEZJV3h3TVB6Y2MrNW90T0RtbTVFazZSMlEyelNOZG5WcEZ5L1N6azdhM1MydlgrOTY0QUVySHdzSCtSY3NyYU9EZG5XWnJxNFNDSUdKQ2VYUGY0YXBLZWRYdjVxL2p4VFowRkQwN2JkalI0NUFNSWcwRFFGZ2x3c2lFZXp4NkIyYURmbjJzV3FhMnRRRTRYQkczMHVNSVJTS3ZQb3FLSXB6KzNic2N1a2RrR00wVFcxdGpmejk3L1RpUlFTQU1FYVNoQUJZZno4Ykc1TkVzQ3lnL2YzYW1UUFdxNnNFakNFU2lienhCa1Nqcm52dnhZV0ZlZ2ZrQ3RiZkgzM3JyZGlSSXpBMUZYL3VQdjBQR0VNb3hBSUJhZm55dEw4Z1MvSXNXRnByS3hzWnNTRllhT2F4ejl0dlF5amsvdmEzY1ZHUjNnRUxUVlZqVFUzUi9mdHBaeWRDNk1vNkc2SlIydDB0YjlreXo3RlpsMC9CZ3NsSjY4MzJlV0dNTkMzMndRZWdLTzZkTzBsWm1kNEJDNGIxOTBjUEhJaDkrQ0dFUW1uZVBnMEVJQkxKaFl0N1BnVkxPM2VPZG5mYlUxMGxZSXdZVTQ4ZFE2cnEvczUzU0VXRjNnRlpwMWRSZlE1ajJ0Y0h3YUFJbGhtYXBqWTNReVJpVzNXVkRHTzFwUVhDWWZjamowalYxWHFsczhkZ1JaVUFrNVAwOG1XeVpJbGVRZTcwWDJ1T29IMTkydW5UTmxkWHlURFd6cDROUC8yMDF0R2hWelFyVkRWMjlHaG85Kzdvd1lORzc0SXhCa1ZoZ1lCZXVXd3c4SEp6ZzlyYXlzYkdPQVlMSVlReHZYaFIyYnRYUFhWS3J5aGZyTDlmZWVFRlplL2U2UWZ0eHQ4MVk3UzdHK1hBc096OENCWWJIMWVibWhCamVnVXpSZ2dOQkpSbm5sR2JteGZtc1krRmlpb1p4clNyaTRWQ2V1VzR5NDgyRmoxN2x2WDJtdmppWm9JUU5qUVUzcnZYSFFvVjNIeXo2Vk9iQWJNdHFubGd6TWJIMmNBQUtTN1dLOHBYSGdRTFlyRllVeE92WnZ1OE1JYnhjV1hmUGxBVTV4MTNaT0d4RDBTajZ2SGowVGZmcEYxZENLVzk5VXNQWTFBVUdnZzRhbXYxaXZMRi9TUExIT3ZybzJmUFpxbTZTc0FZZ3NISUs2OUFKT0s4Nnk3c2RPb2RZQjN0NjR2dTM2OGVPd2FLWWoxU0NhcEtBd0hFbUEyL0tnTjVFQ3oxNUVrMlBwN3RZS0hwYjMvazlkY2hISGJkZXk5MnUvVU9NQTJpVWZYWXNlaisvZE1qcDIySkFzWXNFSUJ3R0h1OWVrVTV5dlZnc2JFeHRibDV3YjUvR0tOWUxQcldXeEFPdXg5OEVQdDhlZ2VZWUhORmxZQXhIUmhnSXlPU0NGWWEydW5UdExmWCt1Y2V2N1BMcExiREdLbHE3UDMzVVRUcSt0YTNTR21wM2dINnVGUlVDUmhES0VSN2V4ZTJwemVuZ3dXeG1OcmNqR0l4aXg4OWdGUlpDWXFTNlhQcitFeXlJMGRBVWR3UFAwekt5L1VPU0lkWFJaVXNGcU5kWGVpbW0vVEtjWlRUd1dLQmdIYnVuTVZNQUdDbjAzbnZ2ZGp0VnA1L25nME1XUHc5U2RUbVpnaUgzWTgrS2xWVjZaV2RCOStLYWpZYUNJQ2k4R2dYR3BUVHdWS2JtMkZpd21JZ0FNank1WTY2T2xKY2pKMU81Zm5uYVhkM3B1Y1NZKzNNR1dYUEh0Zk9uWTVWcS9SS3o1S05paW9CWTNiNU1reE9MbUN3T0wvRERMRGhZZlhrU2V2ZDM0VEltemJGK3drZGRYWHVYYnNjdGJVMjlOMFRvblYwUlBidGcvRnh2YUxUSUJxTi9mdmY0ZC85TG5ib1VOWjY0eUFZWE5nNXV0bDRrOVpvWjg3UXk1Y3RuZ1lBVWxJaU56UWtmdUM0OWxyM3JsMk9kZXZTSEdTQzI0MEtDdlFLSVlRUTdlcFM5dTVWbm4yVzl2U1llK3FYQ1l3aEVxRUwralRhMG1uakR5SVJ0YW5KK3NOVUFNZmF0WE1HNlVwVlZaN0hIcE0zYlVwMWtGR3lYTEI1cys2Y0JWQ1U2THZ2aG5idmpoMCtuTFdLNm5NQXRMc2JZakc5Y3J6a2FCdUxkbmRySFIwV3Y5OEEyT1dTTjIyNjhsRU1XYkxFL2QzdjRzTEMyT0hEaUZJcnY1OHhhZmx5M1pxUGRuVkY5KytQTlRXaGFEVGJrWXJEbVBYMlFpaUVqZFdzdGx1STk2d0xRRzFwZ1dEUXlvbEhDQUVRdjkreGV2VzgvMGhLU3R3N2R6cnZ2QlBKc3BVR0hNYU8rQ3E2cVVFNHJMejhjdXpJRWVzZEpYTlllSjBJc2JFeDl0bG5lcVY0c2VOdDI0ME5EMnNaTjl2VFRJN0FYcS9yd1FkZDk5eURYUzV6ZndVQSszeHlRMFA2eEdOWkpsN3Y5TVNzREFFZ2hMRGJiVHFnTTArajljcnhZdkxsWm9YVzNrNzcrMDEvbEhFQXBLeE0zcmd4ZlNuc2NybnV1OC8xalcvZ3drSVQyUUp3MU5icTkyakxzbFJUWS9IMUoyTU1PNTBGWC82eTY2R0hzTnR0NG5YR2FScnQ2a0tVNnBYakl1ZmFXS0FvMDgxMmF5Y0d3RkZYSnhtWkV5SEx6cnZ1d2w2djh2TExNRDV1Nk0vSnN0ellhR1NxQXFtc3hHNDNLSXJGU2dzQUlTVDUvYzV0MitRdFcxQWtFbnZuSFdwMmFRYU1hVThQaE1QMlB1STBLT2VDUmJ1NnREbnIxUm9IZ0QwZXViSFI2S0lNa2xTd2RTdDJPcFdYWG1LRGd6clpZa3p5K3gxcjE2WXJNME5hdmh6N2ZLQW9lZ1hud3hqMmVPVHJyM2R1M3g2L3NRVkNpTjlQQXdHajd5c09Zelk4eklhSEpSRXNCS0EyTlVFd2FLait1QktBVkYxdHJrOGNZM25MRnVSeVJWNThrZmIwcFB1N0dNc2JOeHA4Q0kxOVBsSlJZZm81VXJ5aXV2cHE1L2J0OHFaTmlSczZMTXVTMzYrYS9VemlUNk43ZXFRVksvU0syaSszZ3NVR0I5VlRwOHlkakdTU0pEYzBXS2o1NVEwYnNOdXRQUGRjeXVWR0FQQ2lSY2s5cnVsaHQxdXFxdEphVy9VS0ptRU1lNzBGTjk3bzNMYU5YSFhWbkgrVS9QNzRtaC9tUHB4WWJLSGE3eWEvQkp5cHAwNlovcFluQUpDeU1vZGVzejBWeCtyVm51OS8zN0ZtemZ4dFpBREg2dFhFNzUvbm4xS1FhbW9NOXM1UFYxVFhYdXQ1L0hIM3d3OWZtU28wYzIyOTh1YzZNS2FkblJBTzY1V3pYdzRGQzhKaHRhWEZ5SHExOHdOd3JGc256WGRXREpLcXF6Mjdkc2tORGZOa3krbVVOMjgyMWRrb1ZWWWF1dVZrREJjVk9lKyt1L0FIUDVBYkc1RXN6MXNLRnhXUjVjdjFmOXNjR0xQUFBvT0pDYjF5OXN1aFlOR0xGK25GaTVhcksxeFlhS0xabmdLcHFIQS8rcWg4NDQzeE1WalRQMlZNcXF4MDFOV2xQWFF1VWxvcWxaZW5pd0lBd3RpeFpvM25pU2ZjRHoyVWZ2b3lkcnNsdjk5MHNCQ0tON1AwU3Rrdlo0TEZtTnJjUE04MkV3WUJTRFUxam11dTBTdW5qNVNWZVI1NXBDQyt6VlA4UkJJaU56U1luVkNGM1c1U1daa3lDb3poNG1MWGpoMmVwNTZTNit1TmZCK2s2bXBrb0tkakZvd2hHbDJRWmxhdU5ONVpmMyttemZiR1JydVd1Y0pGUmU2ZE8zRmhZZlR0dDFFMFNoWXYxdTF4bllja1NYNy81K2xNQUVDRU9OYXRjKzNZNGZqU2w0emYvMHArUC9aNHdPeThFZ0FhQ0VBMHluV2kwWlZ5SlZocVd4c2JHakwza1NVQWtLVkw1ZnA2dlhJbVlMZmJkZi85Mk9PSi91MXYwdXJWeE5KcVpwTGZqOTN1V2N1R00wYkt5Z3J1dU1ONTIyMTQwYUswUjg5RlNrcWtwVXMxcytzTVlFeDdlMkZxNmo4eFdCQUtaYlR3RllCY1gwK1dMdFVyWnc1Mk9sM2J0cEdpSWxKYWFxclpua0NXTGNPTEZrRjh3anNBY2pqaytucm4xNy91V0xYS1hEZ1FRZ2hoajRmNC9jajhVdlV3UHM0dVh6YllBMmVYbkFpV2R1R0M5ZlZxQWJEWEt6YzBXQXhsZXJKY2NOdHRsc2VkNHNKQ3Fhb3F2amdBV2JyVStaV3ZGTnh5aTVWZWd6aENKTDhmeWJLNTE1T1lHMzNkZFhwRjdaUUR3V0pzZXBzSmE4a0FrRmF1bEZhdTFDdVhBV3N2RENGY1VDQlZWYWt0TGZMR2phNGRPekova2RQWFZyTzNPSlRTN202a2FWbFlLeUFoZTM4cEZYcjVzdWx0SnBJNUhQS21UYnJqT1JlS282N09VMUlpYjlsaXl5c2tTNWVTNG1KcWRxUWF4alErTnpxTDY2eGEvQzdhU0d0dHRiTE5SQndBdWVvcWU1dnQ5bktzWGwxdysrMjJwQW9oUkFvTHBlcHEwNzFaR0xQUjBTenZyYmZBd1lKZ1VHMXBzVDVtQ0VCZXZ6NFhWa1pNeWRvWEpoVlpKbjYvNlV0ei9HbDBmQjJiYkRINUV1Mm1uVDl2ZmIzYStIak94a2FMaCtjbnFhYkd5cUEvVmFVOVBhYVB5c0NDdHJFeTNHWUN3SEhOTlZKTmpWNDVRMFpIUjg5MW5BTUd4Y1hGcGFXbFJVVkZIcHV1WC9hU0tpcHdVWkhwa1Y0WTArNXVVQlM3THNxNkZqSll0SzlQKy9oajYvV053eUUzTnRvMTJiZWpvK05Ydi9wVkpCS1JaZG5qOFZSWFYyK28zM0RUVFRkZGZmWFZlb2RtRmZiNXBPWExXWCsvdWM4TjR5eHZpTEtRd1ZKYlc5bm9xTGtQS0NIK1lGaHZHcFp4bEZKRlVSUkZRUWlOVDR6MzlmVWRQMzc4d0pzSHZ2bU5iOTV6enozTzdIWmJwNEZkTHNudlYxdGE5QXJPbHZVTlVTeGRnK3dBazVOcVM0dTV2cjVrR0RzMmJMQjNMd21NY2Z4L0NTYVNKQ0dFdXJ1Ny8vQi9mM2oxdFZlWjVkZkpBYW1xUXVhREh0OFFSYStVYlJZc1dOcTVjeXdRc0ZoZEdadUdaUW9BVUVvWlk1RFV3aVdFS0lyeXlpdXZuRFgvSUdXT1dDdzJOajQyTkRUVTA5TVREQWIxaXFjajFkUVFJeU85cmhEZkVFV3ZsRDBXNkZLb3FobHRNMkZ3R3BZWmZyLy8vdnZ1UDlkeDd1elpzNHFpNEpuSUVrS0dob2JlZi8vOU5XdldFRXV2ZG1CZzRQRGh3MjN0YlQyQm5vbkpDWWZEOGNNZi92Q0c2Mi9RT3k0bFVseE1saTQxM1lySTdvWW9DeE1zMnR1YjBUWVRocWRoR1ZkZFhmM2trMDlPVFUwZFBIanc2VDgrSFF3R2NkTExhMnR2Q3dhRGkweU9SMEFJSGYzbzZEUFBQTlBSMGFGcFd2d1hlandlVGJVNlNoWWhORFBvVC92a0U3MkNjMlZ6UXhRclg4SE1xUzB0MXJlWmlLK2VZR3dhbGlrWVk1L1A5N1d2ZlczcmYyMU52aUJpakFjR0JrWkhSOU1jTzY5UFAvMTA5KzdkWjg2Y0FRQkprdUlWSGdDQSthdllMSVJJMWRXcEJqR25sTjBOVVJZZ1dHeDhYRDE1TXBObXUvRnBXQlk0SEk0Tkd6WVV6QjRuRTQxR2gwZUdVeDB5THdCNDk5MTNBNEdBTkRNNkZBQktpa3ZXcmwyN3VIUngrbU4xRWI4ZmV6eW1tMWxaM0JCbEFTNkY5T3haMXRkbnNib3lPUTNMR3AvUEo4dXlxcXFKcXlGakxCcUpwajlxam1BdzJIcnE4K2xmQUxCMjdkb252di9FeXBVck0rOTZsY3JMU1drcG5adzA5ekhPYkloaWRwaTFCZG11c1NBV2k1MDRZWHArWElMNWFWZ0xaV0ppWW1CZ0lCNU5BSEM1WEE4ODhFQjlmYjNQNTVNTWpIQlBEeGNXU21rRzFLY3lzeUdLWGprYlpEdFlMQkRRUHZuRVlxb1FRZ1VGeVZPRWM5bFVhRXBOdXVoNHZkN2FWZlp0UStKd1NEVTFScVpnekpMRkpXaXlIU3kxcGNYNmVyWHgzbllPelhZdVp0Y21FcEZjdHQ3R3hnZjltYTYwRWh1aWNKYlZZTEd4TWJXMTFmUm5rUkJmcjdha1JLOWNMZ0prOVYyblFDb3FyQXpjbTlrUVJhOWNwcklhTE8zMGFkclhaN2xUbEJRWFc1bUc5UVVWZnhwdCtsczZzeUdLWHJsTVdUckhsa0EwT3IzTmhEVUEwcG8xMXFaaG1lVndPTEMxaTNWcTl2OUNwMU95Y0JNenN5R0tYcmxNWlM5WXRLdExzN3c3SEFCMnVRb2FHN1BUYkM4cUtwSm5kejh5eGxTejNUK3ozNmltYVdHN0wwQ1MzMjlsdG1COFF4VE9zaFdzK0hxMVp2dGRFZ0JJWmFXMFpvMWVPWHZFKzdFUy94ZGpISTFHKy9yNjBoeHlKYXJSNUI3MmNEamMyZFdacHJ3RnhPODN0TzdJRmVJYm91aVZ5a2lXZ3NWR1JyUU1tKzJOalZubzFvc3JMaTVldG14WmNpd1lZOGRQSEo4d3MyeEwvMEIvWkdZb0FjWlkwelRGN25OSlNrcElSWVhwVDNWbVF4UzljaG5KVXJDME0yZm9aNTlaYjdhWGxNZ2JOdWlWczQzWDYxMi9ibjN5VHdnaDdlM3RML3o1aGFHaElTUFhSRVZSUHZ6d3cwZ2trdWdnOVhxOS9pcnpUYUswcHBlZ01TOExHNkpZT3RNbVFTU2lIajl1L1JIVmZOdE1jSVV4dnZYV1d5dVdWU1NQNzFOVjlhOS8vZXVQZnZ5ajMvLys5MU9wMTVrTkJvUEhqaDNidlh2M29VT0hFaytkRVVLM2JMM2xHanNXdzVrRjQrbTUwYVprWlVPVWJBU0xkblpxNTg5YmJsMmwybWFDcTlyYTJ1OTk3M3RsWldXSkN5TEdtRkxhMGRIeHIwUC9TdE1NUC9QSm1WLyt6eS9mMlA5R05EcjliTEd3c0hEN1Bkc2ZlZVFSSHVPYkpXdFBvL2x2aU1JL1dJbjFhcTBHUzZxdVRyWE5CRDhZNDd2dXV1dkhQL3B4WldYbG5ER2xoSkEwZlFlYU90MldTZ3gwM3JwMTY1TlBQcm1Fenlnb3NtUUpXYnpZZExCbU5rVFJLMmNkOTJDeDRXR3RyVTJ2VkdyeGhhOHNkREZuYkdobzZFVFRpYkd4c2VRZnhrT1dwaHNkQUlCOVB1SUtBSTRlUGZybVcyOXFscGZBVEF0N1BOWlcrdU85SVFyM1lHbnQ3WFJnd0hxenZiVFVrY1ZtZTRLaUtIdjI3bm45OWRkRG9WRHk0QmxDaU52dEpqamwyeWtySzl2VXVHbng0c1dKYkkyTmplM2J0Ky9qano5T2RVaEdIQTZwdWpvSG4wYnpiYmpZczgxRUJ1dlZXbmI4K1BIMzNuc1BKZldZQThES2xTdnZ2dnZ1MnRyYU5HT1VWNjFhOWZQLy92bnAwNmQvKzd2ZmRuZDN4eStkSXlNakh4NzlzTDYrM3ZiK2Q1UllnaVljTnRmWTBEUWFDQ0JLVFlmU0dFdm4yekI2NFlMMjZhZm0zbkJDWXB1SjdEYmJFVUtxcW43d3dRZkpkUlVBVkM2di9PbFBmdnJRdHg5cTJOZ2dwNzRSa3lUSjQvRnMzcno1emp2dlRKNThjZjc4K1JDZk5nMnBxTUFXZXZobWxxRFJLMmNSejJEWnNsNXRyWDFqbUF5Ym5KdzgxM0V1dVhaaGpOMTQwNDNYbVZtN2JIWHRhcmZibmJnZ0RnNE9KdTRUN1lXOVhvdUQvb2FHMkxDNThkYkdjUXdXR3h4VU0xbjRLdDVzOTNyMXl0bHZkR3gwWW1JaU9WaE9wL1BhYTY5TmM4aVZpb3VMRXdQbk1jYVJTSVF5cTR2cXBEWDlOTnJzNXp5eklZcGVPWXM0Qmt0dGIyZURnNmJmY0Z4OGQ3Z0ZXdmhxY25JeStTWU9BR1JaTHZLWnV6UEZaTzRieDhqU1IySEE5Tk5vczVVV3p3MVJlQVVMUWlIMXhJa010NW13ZmIxYWc4TGhNTDFpeVM3VDdXNlRaemtUVWxXVmxhWElNYVpkWFp5YVdieUNwVjI0UUM5ZHNseGQyYkxOaEdYOHFoWk84S0pGWk5reTB6VVd4cXkvbjlPR0tIeUNSZW4wZXJWV2d5V3RXR0hMTmhPNWcydFlzY2RqWlFuSitOTm9QczBzTHNHaUF3T1pybGU3ZWJPVnVqMkhVVWFqTVM1M2hYR1MzMjkwczdFRW5odWljQW1XMXRhVzBYcTE1ZVh5K2xtalZ2S1J4K054SlBYQVRVMU5uZTg0bjZaOGhxdy9qUTRFZ0VNL2lQM0JncW1wNlcwbXJJbXZWMXRlcmxjdTF4VVhGeWNHUjJDTUZVVjUvVyt2WDdwMFNkTzBUTmR1bUE5WnNvUXNXV0k2V0RNYm91aVZNODMrWUdrZEhiU3owM0oxeFhHYkNjUG1YYmZEN0YyaHorZXJxNnRML0I1Q1NHdHI2ODkrOXJQZi9POXZMbDY2bVA1WUN5dy9qWWFKQ2RiZnIxZktOTHZQWDJLOVdwT25ZVm9XdHBrd29IK2dQeHFOSmlmSjRYRDRURzVWUWdpNS9mYmJ5OHZMazBjTGRnZTYzM25ubmM4dWN4aFdFTjlzek94OU5NWVFEdk9ZVzJGenNHaC92M2Jtak1WVUlZUmt1ZUQ2NjdPMnN1KzhSa1pIamh3K01xY2Z5K1B4bEpsZmxuTDl1dldQUGZiWWtpVkxrdGNLVEQrY0t4TVdtMW1KRFZGc1pmajVMbU5zY0ZCbmFCZ2hzWTgrWWlNakZvTUZnTDFlN1BQUnpzNVpjOEFsaVN4YlptV2VreG14V0d4NGVMaXpzL01mLy9qSHlkYVR5YytQR1dOK3Y5L0NxbXNZNDIxM2I2dXNyRHo0ejRPbjJrNk5qWTNGWWpHWHk1WDVvaUR6SWhVVm4yODJaaHlmRFZHTUJndFVOZkxhYTJwcnEwN3JKeEl4L1kxSndCaW1wc0o3OXN6S0pRRDIrUXFmZXNxdTlkeFRhV3RyKy9WdmZqMHlNaElPaCtjc0NTbEowdWJHellXV3VqOHd4dlhyNjY5YmU5MzQrUGpJeU1qSTZBZ0ExUEo1c2s2OFhzbnZONzFFVkh4RGxPRmhhVUdDaFFBZ0hJYkpTWjFnbVhwTFY2SVU1aXo4R28rcDVYdE13eUxSeU1qd2lCSlI1cVNLVXJwbXpacXRXN2VtT3RBSVNaSktTMHRMN1Ywc0RnQ21waUI1aWdyR1pQSGkxQWVrZ0RHRXc3R2pSeDBURStrV0N3RWdKU1hTaWhVRzc2c01Cd3NoaFBIMGYxeGQrZnQ1LzBXRUVFSVk0VG1QalFHQU1WWlZWYlZyMTY3bFdad2paQkRFWXNxTEwycHRiWitmYVl4QlVReWUrRmtvamI3elR1eTk5OUpkYlJoek5EUjRIbi9jWUp2RVRMQyswQUFCWXl4eEIxZFFVRkJTVXRLd3NlRysrKzVibTVzTEp3RkFNTWhHUnVZbXlkcjNVTk1nL2Z3OHhsQXNacnlkSTRJMXplZjFiYWpmSUVtU3krMWFXcjYwdXFaNmRlMXF2OTlmWVBZNVNUYlpldzFKLzN0TS9pRVJyR2wxZFhXLytNVXZKRW1TSkNtbnc1UW5STENteWJLY1ppUzdZSmI1aHA0Z0dDQ0NKWEFoZ2lWd0lZSWxjQ0dDSlhBaGdpVndJWUlsY0NHQ0pYQWhnaVZ3SVlJbGNDR0NKWEJoNWxraFkxbllOV291Z0FYNG8va0NZUHEvTERENWh3d0hTNUtrK0RvK0ZzYVJaUUlBdTkzWTdkWXI5NThIWSt6eDRLS2lMSjBSeHJESFkzemtERFkrZVJKVU5RdERoT2VCTVpibExIMThlY1RJOUJaYjRjSkNVbDV1OEVTWUNKWWdHR2NvZllKZ2xnaVd3SVVJbHNDRkNKYkFoUWlXd0lVSWxzQ0ZDSmJBaFFpV3dJVUlsc0NGQ0piQWhRaVd3SVVJbHNDRkNKYkFoUWlXd0lVSWxzQ0ZDSmJBaFFpV3dJVUlsc0NGQ0piQWhRaVd3SVVJbHNDRkNKYkFoUWlXd0lVSWxzQ0ZDSmJBaFFpV3dJVUlsc0NGQ0piQWhRaVd3SVVJbHNDRkNKYkFoUWlXd0lVSWxzQ0ZDSmJBaFFpV3dJVUlsc0NGQ0piQWhRaVd3SVVJbHNDRkNKYkFoU1B5Mm10NlpRVEJORWZrbFZmMHlnaUNhUTRrU1hwbEJNRTAwY1lTdUJEQkVyZ1F3Uks0RU1FU3VCREJFcmdRd1JLNEVNRVN1QkRCRXJnUXdSSzRFTUVTdVBoLzVTU2hUbjJXeGw4QUFBQWxkRVZZZEdSaGRHVTZZM0psWVhSbEFESXdNVGd0TURNdE1ERlVNVE02TXpRNk5UVXJNREE2TURCa0VBVDNBQUFBSlhSRldIUmtZWFJsT20xdlpHbG1lUUF5TURFNExUQXpMVEF4VkRFek9qTTBPalUxS3pBd09qQXdGVTI4U3dBQUFBQkpSVTVFcmtKZ2dnPT0iLCJzdXBwb3J0ZWRFeHRlbnNpb25zIjpbeyJpZCI6ImxvYyIsImZhaWxfaWZfdW5rbm93biI6ZmFsc2V9LHsiaWQiOiJ0eEF1dGhTaW1wbGUiLCJmYWlsX2lmX3Vua25vd24iOmZhbHNlfSx7ImlkIjoiaG1hYy1zZWNyZXQiLCJmYWlsX2lmX3Vua25vd24iOmZhbHNlfV0sImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIkZJRE9fMl8wIl0sImV4dGVuc2lvbnMiOlsiaG1hYy1zZWNyZXQiLCJ0eEF1dGhTaW1wbGUiLCJsb2MiXSwiYWFndWlkIjoiMTEwNWU0ZWRhZjFkMDJmZmZmZmZmZmZmZmZmZmZmZmYiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwidXAiOnRydWUsInV2Ijp0cnVlfX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIwLTA2LTA5IiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyMDA1MTIwMDEifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjAtMDYtMDkifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIwLTA2LTA5In0seyJhYWd1aWQiOiIwODk4NzA1OC1jYWRjLTRiODEtYjZlMS0zMGRlNTBkY2JlOTYiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjA4OTg3MDU4LWNhZGMtNGI4MS1iNmUxLTMwZGU1MGRjYmU5NiIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJXaW5kb3dzIEhlbGxvIEhhcmR3YXJlIEF1dGhlbnRpY2F0b3IifSwiZGVzY3JpcHRpb24iOiJXaW5kb3dzIEhlbGxvIEhhcmR3YXJlIEF1dGhlbnRpY2F0b3IiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MTkwNDIsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJyc2Fzc2FfcGtjc3YxNV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfc3Vycm9nYXRlIiwiYXR0Y2EiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmFjZXByaW50X2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJleWVwcmludF9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSJdLCJpc0tleVJlc3RyaWN0ZWQiOmZhbHNlLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJzb2Z0d2FyZSJdLCJhdHRhY2htZW50SGludCI6WyJpbnRlcm5hbCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRjlUQ0NBOTJnQXdJQkFnSVFYYll3VGd5L0o3OUp1TWhwVUI1ZHl6QU5CZ2txaGtpRzl3MEJBUXNGQURDQmpERUxNQWtHQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdUQ2xkaGMyaHBibWQwYjI0eEVEQU9CZ05WQkFjVEIxSmxaRzF2Ym1ReEhqQWNCZ05WQkFvVEZVMXBZM0p2YzI5bWRDQkRiM0p3YjNKaGRHbHZiakUyTURRR0ExVUVBeE10VFdsamNtOXpiMlowSUZSUVRTQlNiMjkwSUVObGNuUnBabWxqWVhSbElFRjFkR2h2Y21sMGVTQXlNREUwTUI0WERURTBNVEl4TURJeE16RXhPVm9YRFRNNU1USXhNREl4TXpreU9Gb3dnWXd4Q3pBSkJnTlZCQVlUQWxWVE1STXdFUVlEVlFRSUV3cFhZWE5vYVc1bmRHOXVNUkF3RGdZRFZRUUhFd2RTWldSdGIyNWtNUjR3SEFZRFZRUUtFeFZOYVdOeWIzTnZablFnUTI5eWNHOXlZWFJwYjI0eE5qQTBCZ05WQkFNVExVMXBZM0p2YzI5bWRDQlVVRTBnVW05dmRDQkRaWEowYVdacFkyRjBaU0JCZFhSb2IzSnBkSGtnTWpBeE5EQ0NBaUl3RFFZSktvWklodmNOQVFFQkJRQURnZ0lQQURDQ0Fnb0NnZ0lCQUorbitibkt0L0pISVJDL29JL3hna2dzWWRQelAwZ3B2ZHVEQTJHYlJ0dGgrTDRXVXlvWktHQnc3dXo1YmpqUDhBcWw0WUV4eWpSM0VaUTRMcW5aQ2hNcG9Db2ZiZURSNE1qQ0UxVEd3V2doR3BTMG1NM0d0V0Q5WGlNRTRyRTJLMFZXM3BkTjBDTHprWWJ2WmJzMndRVEZmRTYyeU5RaURqeUhGV0FaNEJRSDRlV2E4d3JETVV4SUFuZVVDcFU2ekN3TStsNlFoNG9oWDA2M0JIelhsVFNUYzFmRHNpUGFLdU1NaldqSzl2cDVVSEZQYStkTUFXcjZPbGpRWlBGSWczYVo0Y1VmelM5eStuNzdIczFOWFBCbjZFNERiNjc5ejREVGhJWHlvS2VaVHYxYWFXT1dsL2V4c0RMR3QybVRNVHl5a1ZWOHVEMWVSallyaUZwbW9SRHdKS0FFTU9mYVVSYXJ6cDdoa2E5VE9FbEd5RDJnT1Y0RnNjcjJNeEFZQ3l3TG1PTHpBNFZEU1lMdUtBaFBTcDd5YXdFVDMwQXZZMUhSZk13QnhldFNxV1AyK3laUk5ZSmxIcG9yNVFUdVJEZ3pSK1plaithV3g2cldOWXg0M2tMdGhvemVWSjNRQ3NENWlFSS9PWmxtV241V1lmN084TEIvMUE3c2NyWXY0NEZEOGNrM1oraHhYcGtrbEFzakpNc0haYTltQnFoK1ZSMUFpY1g0dVpHOG0xNng2NVpVMnVVcEJhM3JuOENUTm13MTdaSE9pdVNXSnRTOStQclpWQThsamdmNFFnQTFnNk5QT0VpTEcyZm44R20rcjVBays5dHF2NzJLRGQyRlBCSjdYeDRzdFlqL1dqTlB0RVVoVzRyY0xLM2t0TGZjeTZlYTdSb2N3NXk1QWdNQkFBR2pVVEJQTUFzR0ExVWREd1FFQXdJQmhqQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01CMEdBMVVkRGdRV0JCUjZqQXJPTDBoaUYrS1UwYTVWd1ZMc2NYU2tWakFRQmdrckJnRUVBWUkzRlFFRUF3SUJBREFOQmdrcWhraUc5dzBCQVFzRkFBT0NBZ0VBVzRpb28xK0o5VldDMFVudFNCWGNYUm0xZVBUVmFtdHN4VnkvR3BQNEVtSmQzVWI1M0p6TkJmWWRnZlVMNTFDcHBTM1pZNkJvYWdCK0Rxb0EyR2JTTCs3c0ZHSEJsNWthNkZOZWxyd3NINlZWdzR4Vi84a2xJam1xT3lmYXRQWXN6MHNVZFpldityZWVpR3BLVm9Ycks2QkRuVVUyNy9tZ1B0ZW01WUtXdkhCL3Nvb2ZVckxLelpWM1dmR2R4OXpCcjhWMHhXNnZPM0NLYXFrcVU5eTZFc1F3MzRuN2VKQ2JFVlZROFZkRmQ5aVYxcG1Yd2FCQWZCd2t2aVBUS0VQOUNtK3piRklPTHIzVjNDTDloSmorZ2tUVXVYV2xKSjZ3VlhFRzVpNHJJYkxBVjU5VXJXNExvblArc2VxdldNSllVRnh1L25pRjBSM2ZTR00rTlUxMUR0QlZraFJadDF1MGtGaFpxakR6MWRXeWZUL043SGtlM1dzRHFVRnNCaSs4U0V3OTByV3gyYVVrTHZLbzgzb1U0TXg0bmErMkkzbDlGMmEyVk5HazRLN2wzYTAwZzUxbWlQaXEwRGEwanF3MzBQYUxsdVRNVEdZNStSblpWaDUwSkQ2bmsrRWEzd1JrVThhaVlGbnBJeGZLQlo3MndobVlZYS9lZ2o5SUtlcXBSMHZ1TGViYlUwZkpCZjg4MEsxaldEM1o1U0Z5SlhvMDU3TXYwT1B3NW10dHl0RTU4NVpJeTVKc2FSWGxzT29XR1JYRTNrVVQvTUtSMVVvQWdSNTRjOEJzaCs5RHEyd3FJSzltUm4xNXp2QkRleUhHNitjenVyTG9wemlPVWVXb2t4Wk4xc3lyRWRLbGhGb1BZYXZtNnQrUHpJY3BkeFp3SEErVjNqTEpQZkk9Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUVnQUFBQklDQVlBQUFCVjdiTkhBQUFDa1VsRVFWUjQydXlhaTNHRE1BeUdReWVnR3pBQ25hQ01rQkhvQmhraG5TQWowQTJTRGFBVDBFNlFiRUEzY09YVzZYRXBCdG5JbU12OXV0T2xseGpGL3FLSExUZFJTbTBnZG5rQUFnQUNJQUFDSUFBQ0lBQUNJQWdBQVJBQUFSQUFBUkFBQVJCRUFGQ1NKSU5La3BMdVNUdFNaYlF6NzZXMjV6aEtrcEZXUGJ0YXo2UTc1dlB1b2x1dVBtcXhsWksyeWk3NnM5UnpuamxwTjJLN0NyRldhVUFITlMwSFQwQXR3M1lwRFNqeGJkb1B1YXppRzN1azU3OWN2SWRlV3NiUUQ3TDdOQVlvV3BLbUx5OGNodWVPNXJlQjdLS0tyUW5RSmREWW45QUpaSGM1UUJUN2VuSU5ZMmhqeHJxSXRzdkpXU2R4RnhLdVlsT2xXSm1FNnpQUGNzSnVON1dGaUY3bWU1RE9Bd3M0T3laeUc2VE9zci9LUXppRGFKbS9tY3kyVjFWMCtUMEplWHhxcWxyV0M5bUdHeTNPNnd3RmFJMFNkUitFTWc5QUVBQUNJQUJ5cVZpWmIrL3ByZ0ZkTjZxYjMwNmozbFRXczBCSjc2UWp3MGt0TyszYWQ2MFBRaE1yZk05WXdxSzdsVVBlNGorL09SNDBjRGFxSmVKK3hvODBKc1dpaDFXVEJBY2I4eXNLcmIrVGZvd1FLeTN2NTV3YkJrazQ5RkpiUXVzcXI0c25hZEw5aEV0WEMzbk8xRzFIRzZVZnhJajVvRG5KbEhQT1ZWQWVyV0dtdllReHdjNzBoaVRoN0JpZHkzLzNaRkU2aXN4ZjhlcE5oVUNsNG41ZnRZcVdLek1QM0lJcXVhRm5xdVhPMHNaMXluL1JXcTY5U3VLNkdkUFhPUmZTejRIUG5rMWJOWE8wK1VaemU1SHFLSW9kTll3bkhWVmNPVWl2TmNTdHhqNENHRlloV0FXZ1hnbXVGNEp6ZE1objZ3RFVtMURwbUZ5Vlk3SXZRcWVUUmRvZDJ2MkY4bE5uL2djcFcrclVzT2k5bUFtRndsU28zUHc5SlEzcCs4YmhnbkFNa1BNNjEzQnhPQlFxYzJGRUI0U21QUVNBQUFpQUFBaUFBQWlBQUFpQUlBQUVRQUFFUUFBRVFQY28zd0lNQURPWGdGaE9UZ2h1QUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIkZJRE9fMl8wIl0sImFhZ3VpZCI6IjA4OTg3MDU4Y2FkYzRiODFiNmUxMzBkZTUwZGNiZTk2Iiwib3B0aW9ucyI6eyJwbGF0Ijp0cnVlLCJyayI6dHJ1ZSwidXAiOnRydWV9LCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjEwMCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjozMiwidHJhbnNwb3J0cyI6WyJpbnRlcm5hbCJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTI1N31dLCJtaW5QSU5MZW5ndGgiOjQsImZpcm13YXJlVmVyc2lvbiI6MTkwNDJ9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMC0wOC0wNSIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiV2luZG93cyBIZWxsbyBIYXJkd2FyZSBBdXRoZW50aWNhdG9yIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAxOTA0MTgwMDIiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMy42IiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjEuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMC0wOC0wNSJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjAtMDgtMDUifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyI3ODZjMTUzMDQyNWFkZDljZjRjMWRkZDQ5MGQ3MTMzZTlmZjgzM2FmIl0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjc4NmMxNTMwNDI1YWRkOWNmNGMxZGRkNDkwZDcxMzNlOWZmODMzYWYiXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ikh5cGVyRklETyBQcm8gTkZDKENUQVAyLjEsIENUQVAyLjAsIFUyRikifSwiZGVzY3JpcHRpb24iOiJIeXBlckZJRE8gUHJvIE5GQyhDVEFQMi4xLCBDVEFQMi4wLCBVMkYpIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6Mn1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiLCJyZW1vdGVfaGFuZGxlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDUkRDQ0FhV2dBd0lCQWdJUWN0RU9UMldYZUNrRGR6L3NZN1VwVmpBS0JnZ3Foa2pPUFFRREJEQTlNUXN3Q1FZRFZRUUdFd0pEUVRFU01CQUdBMVVFQ2d3SlNGbFFSVkpUUlVOVk1Sb3dHQVlEVlFRRERCRkllWEJsY25ObFkzVWdVbTl2ZENCRFFUQWdGdzB5TlRBeE1ERXdNREF3TURCYUdBOHlNVEkwTVRJek1USXpOVGsxT1Zvd1BURUxNQWtHQTFVRUJoTUNRMEV4RWpBUUJnTlZCQW9NQ1VoWlVFVlNVMFZEVlRFYU1CZ0dBMVVFQXd3UlNIbHdaWEp6WldOMUlGSnZiM1FnUTBFd2dac3dFQVlIS29aSXpqMENBUVlGSzRFRUFDTURnWVlBQkFGRnJQYjhLRExBdzRIc1lMVTVjd2V2b1BTMEo2UWFvOEhieDJvMTErcll2c3hBd3JWM1AvTzJNdGt1QTRiRGttWVNBMFlMNUErSjJZbzR2L2QxL1FQMlVRRjFkcVBGa21VMjdWWmhDNFBYQ2RjWCtGTWR1dWIvNC9MRXdWYU9Nd1BUVUFnOThTUndjQmpTenVNV0JseGUyRzBXUUZuZE4ydG4yWTJzWnViWDd5UUlINk5DTUVBd0hRWURWUjBPQkJZRUZPSmhhZk9WWnE2OXR6Qk5hNTJUVDZCY3NOMWFNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdEZ1lEVlIwUEFRSC9CQVFEQWdFR01Bb0dDQ3FHU000OUJBTUVBNEdNQURDQmlBSkNBY3E0V3ZWcU9sTXBiVTRlNzZTeWVjWlVyS3lPU0dvVHF0SEpsckdXNTVBbEh6WDBZVmhtVk50WWpDcSsvSVRiZGpLZmIvNFJLKzFLbnFubFNLdlphcjd2QWtJQlFqemNhVmlvQTBvMFZveW95YU5rQmgwOFNKMnYvcGhoWnUxOTZVaFJmcUs2UHA5LzFZNHVEU2FUZ2hPUXYwSERrMWt1Sk9Sc3dDZWxtTWZJUVRjMUVRRT0iLCJNSUlDUURDQ0FhR2dBd0lCQWdJUUFjYjVaY0F5T0psMXgvODlnWWttZXpBS0JnZ3Foa2pPUFFRREF6QTlNUXN3Q1FZRFZRUUdFd0pEUVRFU01CQUdBMVVFQ2d3SlNGbFFSVkpUUlVOVk1Sb3dHQVlEVlFRRERCRkllWEJsY25ObFkzVWdVbTl2ZENCRFFUQWdGdzB5TlRBeE1ERXdNREF3TURCYUdBOHlNVEF3TVRJek1USXpOVGsxT1Zvd096RUxNQWtHQTFVRUJoTUNRMEV4RWpBUUJnTlZCQW9NQ1VoWlVFVlNVMFZEVlRFWU1CWUdBMVVFQXd3UFNIbHdaWEp6WldOMUlFTkJJREF5TUhZd0VBWUhLb1pJemowQ0FRWUZLNEVFQUNJRFlnQUV6clZtZTJXMXAxYXE0by9FTGJGMnMrSmFUNnRRMlpvTUcwUGNINzl3ZEp3T3JRZUEyRVBDZXd1K2VtU3NnZmJVWVVJckwwV2hHQ1A3Unpmc1ZoZkJRbGQ3TFplVWhUUGlPMTJ6dVA4azlRcXZMY2NuYmp5bTF6elIzSW52WEVNWW8yWXdaREFkQmdOVkhRNEVGZ1FVbGlWMFpxaTNhamt4RERlOHB6czdPRExEV2pJd0h3WURWUjBqQkJnd0ZvQVU0bUZwODVWbXJyMjNNRTFyblpOUG9GeXczVm93RWdZRFZSMFRBUUgvQkFnd0JnRUIvd0lCQURBT0JnTlZIUThCQWY4RUJBTUNBUVl3Q2dZSUtvWkl6ajBFQXdNRGdZd0FNSUdJQWtJQTBBUUpIdS9IeEo0d1ZEQjd2dTF6c3VHZE9FWWlDN3RKNTJzenltMUd4WFJuTytEWXR5YTl5Z3dyRVorOExvMENZbTh6d0FWK0JNMm5oZ1hvdjFPSWJtWUNRZ0VwNzZDRnc0OHZhZG16Y1ZucDRtMWZiTEFwSFR1dU8vekRNUFRLV2F6MGd1ZHJhRjBlYWVkRnZMeDdDcFgrSC9nVkpBSldqVUZVTlVNZ3FrZFVsME1va0E9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUREY0FBQUhvQ0FZQUFBR1EyZFZaQUFBQUNYQklXWE1BQUM0akFBQXVJd0Y0cFQ5MkFBQWdBRWxFUVZSNG5PemQzM1hVdk5iQVlma3M3a01xQUNwd1VnR2hBdURhRnlFVkFCV1FWRUNvSU1tRnI0RUtJQldBS3dBcUNLbkFaNGwzRHpnVHo0ei9TUEtXOUh2VzRqdmZDOG1NeHZiWWtyYTBkOUcycmZHbHFKdWp0aXEvZW5zREFJQVgvL1A0WUhEKzFMR3Y2ZU4xQVFCM2VYazQrSG93K0h4OUFNQS96aDhPdmg4TTNiOHI2dWJBOVhzQkFJeDU0UElZaEhvd2RId3I2cVpwcTVLSEJBQU1VTlRORzJQTSs4NVBQdXVMRFRzTFNHKzRpZmUrNllqWHRMLzdkTWpQdGxWWlRIMGZBRWhaVVRmbnhwalhZKzZqVGg0T1JkMzhOc2JzOWZ6VDVJZERVVGNQalRFM1kzNkhCd1FBM05YcHVGKzFWZmxxMCtIcC9OeHRXNVVQWjA4cnlieC8zNE5ocmxFUEJtbEx5d01DQVA0am5leEJIZWZWejZ3ZUVpNWlEdDljbjRjNXNRc2VFQUR3MTUxTzlxYXArdlY3cHIyUHpscXR0RUFBT3RockFFQUtoblNXdS9mTTFjOVBmamhvZlRENGVDMEFTSTE5Q0d4N2NFeDZPR2gvTVBoOFRRREl3ZWlIUTJ3M2NSNFFBSERmcm5SRW93TFNzZmJ1ZlFXcGg3Ujk2dnZ1ZXUwNzY1RUhIc081eDJESyszZzR2eWR0VlY0Ty9lRlFuWU8rWSt2anZWMWR4elBhZHQxVzVaSEgxeDlseXZHWTA3WnQ3emZtT3p0VVVUY3ZqREVmWGIvdW10NHRCNE1mRGtYZG5JNTl4MTE3SElxNkdmd2xuOHZ1eGJCcmQwTzlYMGoyNGhoeXdjOTVTQ3A1TUZnWFJkMWNyTDlYTG9hdVdlOHpabFBwRmsvN2dwZmF1Ym9XVjYvVHM3cG41d056b2plK0RtM252dkhGZm9UMWZ4OHpyZlJ1N0JzUCtMSGpNYTlwakRtY2NUSHVGWFV6NnNzRTNXUlluR3RLK09NeE56ejUyYmtQaHVnVWRmT1RxZVhkMWhLYjJ0SEtzSWZEMklNN2R1blVRSGJYM3ZlaHI3L0J4Y1RmVTIvb01abnlSUWsxYlRYUjA5WEZuS09oSThhTWo4MGpCVTFaMU5wSTc2aTdTbW4xLzY5OWQvOU1ZKzE4T0NoNU1KajFLU0hmMHlNWTdkZUNoMnpybkd6cXRsM1RYTzk1VzkvMXZFdDMybXpydzBIUmc2SDNkWGxBM09WajlEQmkxUEI0Nkd2NndFMFFYVndQLzNRZkVKdW0xb3U2K2I0ZVQ5a1lrSjV3Y0ovdCtnR1hENGJ1djArZEtrazBvUGxyZ2FIMGs4RHZod0Z5blc1YjVSUENQNTM3NU44RkhUMStkVHQ1dlErSENVRytac0RLSk9jUGh1N1BUWHhBZkdxck1xa3ZrRDI1cmxZdWpSZzEvQnpUeGpXYk9oVXZocVFZVGtEZjUzODRkcXBzdy9rYzh4clh4cGhSS3hJVjE0Y2ZuYlRUR0hObWpFbDZjY1BZenZDbWtjT29WUTI3aXUzNGZEQjBmMzdDK3p3ZitmT3hzRDM1SHlIYU9uZjB0ZVVHODNXMWpFK0d3dDRXRXl3NWd0enkrWDB2Q1Y0WnZTVFdsYVZIN2lUbzNPNWV6TUYxbkNIRWcySE83NlU0TnptMEp4OUxJSFBvcHJjcGUzRmk0UE1tdHRTRFlXazhHSGE3ODNEdzhHQVl2Y25OUVU5MHlnUGlmTTU3YWhUaTRnLzVCUnY0WHFQMjRpQTlxWFlRbGpBNUs2dW5UVzc3dTM3QVU4cUtIT2EyZS9VZFQxWjZJR0k3T3dpTUdvYjUrM0FZZVVPNDlkQVdPL2Y1ZTlzUGpObmhQUFlDa0ZLblNmRThIY0VYTEFGMEJMREpwSkdEanh4RkErYytmZTV3OWxIcU5BcHJXK2VIM0N4OGRBN2czcUNOaWJMK2ZjNktNeVRvZjJaazc4RkhqekgwNXJtY2VEcGZXdGVSTDdsTFc1MlJHeE1mclZJNHMwOEF4bEVONlZsOFBSZzZQZ3lOS2RqOUhVUFNFWStoWk5oK3UydGtOS0tkaDI2YU5NN0E5bTFkVXIySnJ4VE9FYnNwNnNiNzU1djczYUR6NTlmWWFhVVRsNjBKOEdDdzd6RW01VzJTV1N0ZDl2Ulh5UTlER2hvUDJoV3ppdFdTSFl6T2FJTFlSR1pHalJ6R0ZGa1o4RnJlSHd5NHcvYjR2ODA1SkVzVlRFcVp3OC8vdWU4dnAyWVA2TE9wbGdIUzlEK1BSU28yVXZ4Z09GdmdQWU5Zb3NlUG9PZDNZeG9ZMXpkekdVa2tPVXJEUDNaYUtlakRJZlNEWWN4RjNGWmwwaHRvNXR3a3RQY1c2YzF1NStINDdPVSs2a3ZkLzhiY0VFTUVrRHhjY05rdVVVVWV4aVNvNUNIcWg4Y2toSXZGUVNmdmtKNWdaekRiOVZDVm5zMTlVMjRPakJyMG1ubytYVDBvK0k2bGEvUlMxb2wxRUc1M0JiT0x1amx3MmN1WDF4dGpaK3FPaWFiR01jZ1R0SU9yaDBLa0R4Y24yVlE3aFdBTzVpNVltUHJlME9tQm1iQ2lZZXdEWXVCU1N0Y1g1cWpYODdVTWNtb2NvNmdiYncrSE1lZGIyUmY0dzhpbHljbnhkVDVrd2NMcVFmR2I2VmozYkZMQW1PS2FremZCMlZWT1ErYlpsb2d6VEhnOVg2T0cyTDMwM2Y3Y2U0L2R6KytxU0pPRE5qMDAveXFxN1N5Y2szQlZSZGZlalMyb3RLUy9NWWNKSi9mTHJoK0k1TUdRN09hcGJZYWNtN1lxUHkzYXlNeU1xQUVlNUx6STk0SVNzSm1hRlpDZWUyTjNuUytKL0V2SVJMQUtoak5Md0M3aDdhNzNKSWcrekoySFE4aEthaG9lREV3blFac1Jvd2R1Y0QzYXFsUmR1R3RzYk5kdmE3YTdOM0lJOFlCUThtREljam9KVVZEVGFTbnFadVBPNjVndG5LOXFaN1lDRFF0R05nV2tiVXJHY3N3TERRMUtLWG93TUoyRVB4emNLTTVjcmtLeG5aWlZWdFJ0ZkFhQ0phM096cmlpdUo3NEhyTnYwSE0rZi9mOVhSekhFYXNBeTg3UFBWc3Q3SkVTcDJxV3NQYytITnFxUEpoeTRuWmRyRHdZa0NqbnExQ0czbWkyZmVkQzlZNWRwN21mYTBxeVFkZjE4MGY0TXFRanNJU05BZW1wSDM3VFFiYTFFc2ErMW80SHc2VGMvVHdZRUpIZVRLdUFDWEF2MjdwYXlkVURRdFpMajgwUnNxdW96T2hOY3p3WUVKTnRtVmE3Rmc1Y3FzeGt2TlIzUGFWN3pNNmxySE1lRUVYZHJMYjM3OXhJcytaMlc0cnBpVitHUlNxWUFYT01XTDIweUpMVDFETVpUeEhpQVJIaVBRYnRjNWpSa0l1SmNRYm5OV3lwWjRERVBRcjk4U0pKeUhpNzRIdEg5OXBkZ3pmQmhXcVFwNEw0VENjaFd0cjJQc1NVK3R0Mk5GT2FZZ3I1V2NibVZwcGRhbkliSGd6SnVVNjFMbmRvVTFiZ3JPVnRHck0wdGMrVENIZEwvK1V3Kyt5ek1iVWJ4dWJPMnZVYUlSVnRPNjY5RWtlNGNOM0dNUWNnMG95aUFCQ04wYm1WcEM3RGxjc1B5SWdCQUhTWmxIaFBpb3c0ZVVEd1lBQUFmU1puWlpVSHhNN1NuenRldzhkTmZHZFdSZ0RBZHJOU2Rzc1UwOVQ5QTE2U2kyblB5Z2dBTVpqMWNEQ3lmMkRDQ09ES1IwWlVwcE1Bd0kzWkQ0ZVZrVFdsWnhkR24vUCtBSUR0bkQwY3pQRFNrd1NnQVVBNXB3OEhzK05HellNQkFPTGcvT0ZnTnR5d2VUQUFRRHk4UEJ6TTJvMmJCd01BeEdWMCtvd2wyZHFydGtvZDF4Z0ErT1Z0NU9BNlE2VGtkQ29YTG13Q0FGbnc4bkR3ZEFQL20reVBCd1FBK09YODRlRGp4dDMzbWp3Z0FNQ2ZzZlVjdGdyMVlPaitHNEZwQUJoT1NzcXVLZ2RldDFWNTFQZkx6Z0xTZlRmeHVUZHU2allBd0h4VDdxVk9IZzZiM25qT1RYdE8xU3NBd04xNzZhNTc1UHJQelk0NWhKNUtDdGtPQUlqWjBBZEQ5MmRXdnpNcjVxRGx3ZEQ5WFVZUUFQRFByanJXNnh1V1Z6OHplZVRnNmNFd080MDNJd2dBR0g0djNMQWE5Tk9raDRPTG0zalBhOXFJK1o2ajErSUJBUURHdk93N0JuYUVzR09XNWZub2gwTlJOd2V1YnVKcnZyaDhNUjRRQUhMWFZ1V25DWWZnMmt5Y1Z2cm0rbmo3dXBIemdBQ0ErK3k5Y2N2OThhc1pHNURXRm9BZSt2cStndFM3Mmo3MWZZY2NrMTFCSnBmdG1mb2VQczd0bU0rd3R0bkhtMDF0OHZENW43VlYrWFh1aXhSMTg5QVljelB4MS9lSGxQZ04wVEdiY2ozYjVKMDJSOXZFdC96UVZ1V2JEYTg3NmpzN2xLL1h0ZGZTYXJhbTUvZi9mTWJCSTRjWUh3eWgzd2YrclhvOGN1UGZ4ZnVEWVJOUDE5eVhIVDIrblcyUzM1MzZZTEJ1NXJUQkpZbFQ3bFRVeldtbnpWTWZETlpyTFo5OXFFM3g0VzRubytmei9Ba2JESG80VERrWVF6ZGNUSGpOMjdHL04vWDlZakcwNXpEbnBqTGs1d0l2STM2VTgwTmZibEtEYXJIYkcwU3V4MG8rOXpzRlRWbkt4dmp3cnFxZE94OE95aDRNOW4vdGtQaGs3TzlQZlYvb2x2azV2WkFwb28yazUraGpBWWw2dVgvZk4xWGtYTi9Yc0RZVi9MZGV6dGFIUTFFM28rYzNmVDRZT3Y5OTZYTStQMGErUmc4eDVMZksvQ2F3YTRxSUIwUG1SaDRMdStEb2x4a3dyZlIwekdFZDhHQVl2VDlpMTlCbjdPdEpPM3FEU3Bqc2pFTzNuRTNmcTR5bmtnWk50K1dnbXhKalY0YnJUcXFOeDJiYmFpWFhpZSttN0k4WW1nOWt3cGZndlRIbWZPVHZxRGYwV0F4ZHdUVmkxSEM2OUxHeDExZGJsZCtYYnNkQ3Nod2RiSEV4K1RjVE5QUUJzWDVQNkgwNGVNcUlPbloveE5zeDd6OWx1aVRSUEV4bklRTndEbzdoc3cxL1AzWlRwTDIrWWp1Zm16NjdIZGsrVjlJV3RWd3M2eFYyMDlmZ0RvN0Q5dzFxN0hmMTNzUEJ4NE5oWXB4aFZNK2VCOFIvYkMrK3FKdWRENGRkbnozVWxNU1dMNXJYL1JLZDkxL3MvRy81N04xbGhuUFc1UTlwd3lLZmY2bTlSeUhha0lvN01ZZXhBV2lQRDRaSko0MlQvWjlReHlHMTk5R29yY3FESWMwcTZ1WnhkZ2RuQnU0VnU2MEhwTWNFb0QvditvR1FENGFPd2ROUkp2TlZEWnMrT3lzOTFPbE5ucmJtTXR1ak14SVBobUgrUGh3bVRDZTljTjBZRnlkdDdIU1U4WlJsZG1tK3Z3Qjh3Y0labUR4dDFNcENZSmRKS2J0OTNCZ2NyNTRaMjc1c1YzdXNIMU5HRFFETTZ1R3dkQkRIUit4aWJEdFRYQnZ0cTNmUHFDRWRzZVVLY3FDSi9oTUVNcnVHOUZ5K2d0cmllc1RQWnJzMmVuVjhCeDduSy84dFF0ZkFCSE96TmlKMkVob20vYUFZR3VDSE1RK0t1aGtjeUhMZFkvVDhZTEN2ZjdUa3hhN2hpelp4aytDMjEwdHFoRFgzMkFRYVJlM2M4K0Z5STJMbm1GejVPdDgrampzcnR0eXlJNGZqaGQ3N2NOY1BwQmdvWHNqTzNyN0h2UEd6c2FKc0dnZm42eml5MFFTakFvZEdGZnR4cU5tVjZxQ29teGVPQXNWQmR3eHJaSHQvUmQwczFRbllpaHUvZDdjdXZrY2hSaE1POEhCd2FKR1l3OEI1djQrTzNpN3JCOFBLM0Y2azlpQTBRZkora3VMZXBXTld0T1VoK01QQmQ1d0J5TTJ1NzVUOCs1Q05kSVB4SFUxZjBJZEQ2QWNERi9CZHFhWWxZZFN3bTkxSUo4ZHBaNnh2S0lYZnJ5Z1Q0bWsxNnVIZ096aTI1TVhHRFNaT3VaKzNzWi9meHZvNjFiOG1sZHhWTE5lVTdWNDhHTHZVMFM0WGE2dHlTSEgzdjVaNE1DanAxVXhkZSs0dFRqTDJmQ3UrK2Y1YUZTV1pJOWFIaTZOVU0zL2pFWFBxaTA5cGk2Zk50TFpXOXRhZnNXVlY3Yys1ZnU4VVRWbXQ5R05NM3Z4SUhneGVjdGxQWFhzK0pPVjJJR00yRVhxWCt5akJCTnIxbnZoMHJCMWRzQjlpZ0Q4UGh3bWpoMEc5aFZoR0RMRVc3NWhxNlBtMm13aER0TVgzZTJpMWRrTSttbERneUl0dTViQUVEL3NqQlcxd2FWUVc2akVtQjZSZFhEZ2VIZ3lqMTEvVEc0VUdRenNvSVcvWWZEZVdOYkFENTYzYzhkK0h3NVFMWWM2RktoV3VSaG5RUm1ySElscER2NE9zd2xOcFozd3h0dk8yUG5MNE1QWUZwbnhnV3d4K1F1bkRmZGZ0b0djRWhWSmJRYVNPajV1MHk5eFdXdHg1T0xSVitXWkt1eVljN0c4amY3N1p0c0tBQndOU01YUkhNNk9IZVpZNmZrUGZWOFA1dmJkYWFXb1d6NkZCNm9rMzhvM3BObmd3WUE0WFgwSWYyWXFIdE12V2ZQZTFhRUNTWG5vcmd1WHJ1SSs1ZjNWKzdxM1B1ZnN0NzN2ZFBYL2FIdmk5UzFsOVBTQmMzOGduSHN5VENiOERhTFN4TkdnT0l3dTd3c3ZSU3NQM1JkMjhIL01MRys1THYwYXVobnE2Y05iZHJiYXRWdG82eDcrSnk2TDFIaDRNOWpVcHhBNzFJZ3BPenlveTVNa2lIVUFYbXpJMTJmaHdtTE9MMEVWZFlrOFBCcWFURUkwWXJsZU5nZGdjT29BaHJvMnQreHptTkdCazZVbG43eHZ5TlFFTmxobzlhUDVPTGRXMmxPNHpPemZCdVhoQWpMSHIvUWhBSXlkYXA1Y2lHZFVrK1lBSTlia0c3WkFPMVJoR0RFQ3ZLYlVZZk0yNzM4YjBuWksyQnM4Ukp1Lzd4UFZyaGp6Mmd4UHZ1UzVVMy9mNkhsNTJVbEFkME1UV1l0aVZiZFNzclJhVWVmZkx6cjk5M2JhNmFSZWxENFJCV1JaY0xoY2RjeHdrZS9YY1BGVm5TOFYxaXJZZDEyWlBENGlUb1VHa0VlOS82NkZFSWdCa1lYVGlQVTlUUDg1WEYvQmdBSURwSm1WbGRmbUFJTTRBQVBwTVR0bnRxQklWRHdZQVVHanl3OEhNdkJIellBQUF2V1k5SE16RUd6SVBCZ0RRYmZiRHdZeGYzc1dEQVFDVWMvSndNQU52ME94bEFJQTRPSHM0bUIwM2YwOFBocE01Q1FJQkFQMmNQaHpNdjRmQTFkcGZIM280L29NM3pnRUF4aG05UTNvTTJjM2NiS3ZrTnZFMUQ5dXFITFIxSGdBdzRWN3I4K0hnaXp3Z25qbXFBdVZGVVRmMjRWVWFBdVlBQUFCSXdPQ2tyQnJFVUJhM3FCdWIwdWxtN2UvK3RKc0JCQUFBQUdJVnhjQWhoZ0dER2RET3pyL3Zzd0FYQUFBQU1WRTljRWhsd05EalJzcDZYYlZWK1NwRUd3RUFBSUE1Vk81eEdOZ1JYM3lQUTFFM05tcXc1K0sxV01ZRUFBQ0FPWXE2ZVdPTWVUL2pKYmF1aWxFMWNCZzVjNy9Zd0tHb0d4c2x1UER4Mmd3Z0FBQUFNTlNXL3ZPVHRpcC83bnFaTFlPTmU5bnZWQXdjaXJxeGVWV1BSLzdhSWdPSFVNdW5HRUFBQUFCZ2svVStxYXUrWTAraW41ZHRWWDR5R2dZT016cmlRUWNPUysyM1lBQUJBQUNBcm02LzFGZGZzYWdiTzFoNEx2LzVKL3F3Mk9ib2hEYytlM2wvQmhBQUFBQ1FXbUYvYk9vZkZuVmpKOWVmRGoxWWZhL1RWdVdMenFxZ1A3WEpuSmVPM3NWMmhDT3B4L0JKVXp0ak9XNEFBQUR3cXB6NDRzL2t6OXYxZjlqVXgreG0vN1EvRXl6aU1IRWZRM0I5QmR5VXRZOElCQUFBUU9iRzlnVTdTL3p0LzU1UG1aQU9NbkJnV1pKN0RDQUFBQUF3MUl4Kzdwa3g1cDN4UFhCZ3dPQWZBd2hndUtKdWpvd3hSL0lMOW44ZnpnajVybHpibVp0Vnhnbm8xSFB1SHh0akhqazQ5NmRMMXhTYW82Z2JtMnJ4aFJ5VHdldWh4V2U1OXFQOS9Ma3E2dVowNGprM2N0M2JjLzZWYzUrT29mMUlMMW1WWEJaRzIySjJWcVZBN1F3cWxnR0VpOEZhNk0vcXM4MCtCcTlMWEFzZVBzZEpXNVdYUGUvejNVR0hQN1N6dGlwUFhiMW5hbnVlQmorMDR2emN2ZGV4YjBYZDJBSEJ4K0NmZHJ0ZmJWVStudktMaVYzelhqSkRhbDF1UGVUN0xZUDdMeUhleTRXeG00OWR0cmZ6WGRoNEhmVzF6NzVYMy9kb1Z4dTZ2K00wNGhEcWdwMTdVY2dNeXpkM0xkcG9QL1FYV0U3dXZZSWQwRTIrekQ4ZHpJQjJyNFhmYlZVK0RQWEJQVHpVdDFXdmpHM1FZTDByNnVaZDU3KzNWdWRFVWk2S3V2bGJOTlJqNmtUYklmK2gvTUE5c3ZjS291VHVSSkp3aG5QdWh4MW9qZDNuVUt3WGZCdHhmbjQ1eTZva0Y2N1hUckw5VUE0R0RXMkFRY09WdFBWM3A4MVhudCt6cTVRc1RNRTZqWmhQWnVIdVpUcVlZVThHSTk2NWZuQ3R2aitKWDFZMzhqMzlQdUJua1pCVmxyeWlibDY1K0ZTZHJIdmFCdzF3cEhNTmtXMHhROTIrOEpUbmZGdVY1K3Y5YWJtZTdpMjVYYXNYOFhoMnhDSEVSZXRpbExwMHhXZEpaL1VxY0JqUmRrelkveEFSKzJXV0RHU3VyaEU3dTNmWlRhZm1tbzlCZzYrMktsVXlHNWV0UDVHSXFlZGVleFpBdUJmcE1rMzRjV0x2SVp1aWVHMVZIdTE2MXpGTGxGWS9PM25nRUdLNVR3b0RocDZmKzcwS0s0VnFHeHVvNDdLNlJoeGVIOGQyUnNMbCt2b1ZCZzN1TUhqSTE1UnpMOUdLaXdFL2lrUVFYVUNYN0p1NlhGMFhydnA2Njh1WTFsOXowc0Fod01VN2UrMXZxTG9SYzA3UTZuZEREaURvbU1SajB5YW1pZDdKNE1IWkJrMUpMdUFNMXliZjBaeE5PUGNNR2pMQ29BR2JyUGNsSFY0cm4yM2w2UFcvSERWd0NIRGhYcmxZVWhIb0MzYllWcVdUdGNraEJ4QkVIK0xpZVBCd0lZT0gyWms4WkUybHM0eGtYSS8vTUhqSWwxMkdNaVN4QlozSXZIQytNVVRmYzJQRUpQcGJ1MVI2eVBzTUdqaUVXRWNaMGJJa2J4bUxRZzhnNkp6RXdmSGc0VXRSTjAvYXFweThhVnBTdkRuTC9yVGtkUmpUY2toZmNyMFBPQWpuKzNndUxyRjJmWEo2MUJqRmRyMTdUSEtTMVhuUDFXcC9yY3VQdjNQZzRQdWhtT0krQmxmdjQvdHp5ZXZmaGt6WmlXa2NEeDUrRkhVemFUbWd6RjdNemxzdGtyajJPdDlYSnptOTViVWV6eG5jd2I4bDlxdTV4dVJSRkp3T1Rqbm5tR3RyT2xiUE44TjlCek0rdjBObGRWcml5eWJ2dWUvNWJmWUlnOGJCOFRVNCttSGtlTi9RaDlRR3JKTEI0cGVqbHlORmEwUmNmamVsb2kvZzJpR0RCcmpRTzNDd2VWeDlkaVpkNUdpWDlubXQrcnpVZ0dHdERiK2xEYmMrMzRmQlF4eGNYZ3RqenJsMFpsd05HdXhTcVRlT1hrc1ZoNkgvcENyYTU4RGhzK0xkZ0o5QkJodytsMys1MnBNSjNCczR5SVg2M01lUjBkQVJIK2lsb3lWVTMxMTk4ZTNzck85angrQWhEakpUZithaXNVUE91YVI5ZE5LWmtYc0FTM0FBQllxNnVaY3hCZWxoTHdOY3VqTnc4QjFsaU9ETTNVckg1bDdsdkRIc1ppWTVsczQzdXNseC9PRDZkVmNZUE1SQmFqSThjZEhZYmVlOHFKc2pWMmtmQ1pNRDZueVVhckd6TTYwQnlNUGZ6ZEY5WmFaZGlhSEQ0S3FOZ2ZaYzJHVWViM3k5RnhtWDRpQXo5MDQyVGZlZGM3dEIxMlpoY25Fd3VKNkF3YTRIL09DaDR3S3NUM3Z1STRQVE0wSTFKOUZwWUtXYlZjbmI4aVROUnp1bUFjTTZ4NWwyb2tOMDVEK3Vyb1B1NEVGU0FQNXcxVDRYcnhNRHFXL2hRckNIdlVTVmduTlJUMFFUaC9lam5ha1Q3WHIxb201OGYvcjNSZDI4WC8vTDJML1BTMTN2eHBqZlMrd3prT2cwNE15ZmdZT3ZEcGptRzB6TUE0WXVYNE1Ib2c1eDhUQjRjSklDTU1OQmc1UDZGb0VmOWs2aVNtUFpqbThxMTRmTGUvRFFQVUJMVFJ4dGVFOW5CVkVEV09SNk55T3YrUVVIT01CV295cEhqNkg0Z1hEbTRxSHNPRFhsWE5jT2Mrc2pVaTRIRHk2T1FBNkRCcGVEQmNSRlE4UlRVZFQ1VzA4RTVLU3R5c3RsbXBNRUJnNVF5ZHZBUVNOSG1aSzhWOUdld01lZ1ljZzZXeWlqcFNNUnk2QkI0M0kzSW4xaHBITHVGUzladlNqcXBwdFlZVkxSU1FDNi9DK0hjSmlyTkxCeWM5WTJhUEJDaWxraHpuTzNaTWZ6TXgzZldWd1ZrRU44Sm1mTGl5VFYrWTFrY0dKdkdoQ3hyWldqNTlDUTNzM2xnRUhyelk2Yk1Qb3MxSWw0MWxZbGVlR24rMEMrOVd3OWMxRVVjZlhNaysrLzJxaXhQRk9wNTRJN1VrdVlrS29IOWtSNXlzNWcwN3RkdGxXNU0wT0VCMDVDb3RvNzVSN2JkK0xwZFJHUUxHRUlzaGVIS01NOEhMOTgrVHIzZlZIam9tNXNldFhYU2c3Mkk1SndiUFdWS3VMcVpibTNkQlZ4ZU92cDlZOERkNzZ2WmJabDFxREJkclkwRHhxS3V2bnR1VmdmRzlvU0lRUDNaejQvRFEvK3ljNGlxcVlQdDU0dGNlNXRWS01ibGRCdy9kbm4yWkx2SDlqZzVXak12a09yUDV1amJaR1h2bnpOcm9TWVZVZ2x2ZW91dnRzWFV5Y21kRnRqWFJZbUR5QXZHeWpwOUE2bjlWaHhEdjJMc1o1UndPakVYb0QzK0N1MzY3Mm9tMU5xT2NDbHYxbVZmR2Rta05lK2JhdnlvY3ZYWmNEZ0RoMkl0TG4ranFkd3ZYRE41MnZUdVhkOHIzWCt6QXRGOWx6YzJYZmhLNnVnSGFTNDJPT0JYbmE1VTFZRGg4aVd3RVdYd2ZMTzV1Z0FCM3JQWlk3NDFEYyttLy9hOTRsQkExeHhkWjY1WHBBcXg5ZTJzMmVlQm5ZWnNLY2xUbHIyWFFDREZIWGpaS0FiWXdiTGUxbVY1R1p3NXZOTk5YVFdRN1ZoNnMzVnp1eEkrNTY3YjlVZFozUUNBZUFmdVNkK2RuVklVczEreDdNakRqbG1zSExWc2QvQzIvSis3WHJUc2RyMWNDRnVDRXNNSU96RkZHckFNR1BRRUtSZWhMU1J0WThBc01hbUZuYjVISlRuM1FISEdVTTV2UDVzQnFzb1VqMDcvTXhlOSszNmV1MFliSzNqRUdvMklkUUFRdDdEOXlqeFpNNkFJZEFGMlRCVEJBQzdPYjVYZnN1OTA0SEYvTWp0MnBNKzFYZlhyK253NWJ5dTd2SGx3YTdYbFEyVlhqWkVyVnVkRU5lZDJsQmZscGtSaGlBWU1BREFPSzRUQzZSUXY2Q29HN3MyKzR1Q3BxUnUzMlgvcTNNZGYxQzhJZjNLWWYyaHN2T1pKOVg0a3FWZWp4eTE1NjlZVjN6c0hEZ1kyUkRsSzUxakgxY0RDQVlNL3pCZ0FOQkh5eXhrRENsTGk3cXhsZEUvdW5pOXFZT0hvbTVzYlpZTEYyMVE1RW1vcGlpYWRYODJwRmFEN1g5NUt0TDd1cWlib0p2U2gxN3Z0djVRVVRjK0NwZmVlRHFXVTd6VTBwQ3h0aTVWV2hlNldNelVwVHUrQzZTdFREMGVOblFXOE9aMXk2QUJBT1pycS9LVGgzMFBMMGIrV21xREJudGNzOXU4TzBhT3ovRFVQN085bHlob3hpU2pCZzRyY2tLdlFqVnk2QURDenNUSXoza3RLT05nNDNQcHZsWDNTVHVqekNFT0FGbzU3dFI4ekhuZkF4TmJ3ekI0U0Vmc24ydlN3TUZJS0dtSnlyM3k1MTVuV0c2OHZtZGlybVlNR0lKRVFjd0NrU0VBeUkzY1kyOWRmZXdjQnc4OHA4YVI0NlZtclUwSWlWMGpIMUw0UElQMk9HeXpPZ2lCYjNxcmRXcWZBOVE1K0dQT3liYURoa0JsOVcyMkpOTDlBVUFBTnFMck1ubElDcHVtaDJEQU1OM3FHWi9UUUROa2toNWZVcnJtWnc4Y1ZoWWFRSGdmTkRnNjJkNEhEZHlJQVNBODE4bEQ1SFhldGxWNW50anBQS051a0R1ZFBsZlVIZXFoVnQ4ekU5ZWdLY1h2c2J1Qncwb0tJME1UVVVlY0FRTUFMTTl4eXRiM1JkMjg3N3UvZHpxTW9TTFpVOW1hUnBlSzI1ZUVib2ZhL0hkZE9Ndjg1WkxMdnNyNmF5a2FTRnkzVlhta29CMWVGVzNyNzNoSG1qYnVpZXNNRDU0dWFzMDVtQWVSUE9DVERFbGpSNXMzNDNQbytoeFR5U1JOOU1zVHg1NkxtWi83WjZnc1B0cXVUNmtlYkovTHRsMVBKNzdNdFRIbTAxSXpxWE9PcVJaTDMzdUt1ckdSbnhjT0VyWFlhK0dyOWtpU1hET25NNjU1SThYYUxza0E1bm5nOFBkTjZ1YlNZVEVQWDd6dEQzQTljQ0RLQUFBQWdOQ0NEQnhXdEE0Z2ZIZkVYUTBjR0RBQUFBQmdLVUVIRGl0YUJoQ2hPdUlPQmc2VHlxUURBQUFBcml3eWNGaFphZy9FRXZVbkp2N3FyN1lxSHp0dURnQUFBRERhb2dPSGxZQlptRjR1VWVaN3lzQ0JaVWtBQUFEUVJNWEFvY3RUQnFKYlc2akh3K3NPTXVZek1XQUFBQUNBUnM3ck9Nemx1cEFjOVJnQUFBQ0ErZFFOSEZibURpQWk2b2dmdGxYNVhVRTdBQUFBZ0kzVURoeFd4bGJKakdqQVFGVk5BQUFBUk9OL3NUVFU3bEdRUWNIaGhoLzVFTW1nd1E0WUNnWU5BQUFBaUltNnpkRmpySll4YVI4dzJIYXlod0VBQUFBeGkzcmdBQUFBQUNDTWFKWXFyZGlpY1o1U3RqcGwyeGhET3dFQUFJQWhvaG80RkhWenVVU2w2Ykc2QXdZWlFCeG9iek1BQUFDd1RUUURoNkp1Yk1yU1l3Vk4yV3BEbE9HYkRIb0FBQUNBS0VVeGNKQlVyS1dDcG15MVkyblNzWHdPQUFBQUlEcnFCdzRTYWRoWnYyRnBSZDM4SE5DRVBmWTlBQUFBSUVhcUJ3NHlhSWdoMG5CdWpIazA0dWNaUEFBQUFDQXFhZ2NPc2ljZ2hrR0QzZmo4ZXNMdk1YZ0FBQUJBTkI1b2JLaE51UnJEUm1qeGJlb3ZVaGdPQUFBQVBoUjE4OWdZWXlmaW4yNTQrYk8yS2svSHZMVzZBbkF5Zzcrek02Nmh3KzBxYXNEZ0FRQUFBSFBON0pzMmJWVnVMU0dnYXVCUTFNMURZOHpOa0o5ZHVyUHRlcWtSZ3djQUFBQk00YmhmZXR0VzVjTytmOUEyY0JqY21DVTcyaDczSit5M1ZVbktWZ0FBQU95MFphWE9WVnVWcndhK3h1KytES1o5ZlcwMUE0ZXhuZkdsQmc0Qk5qVWZ0bFg1M2ZON0FBQUFJR0pGM1J3Wlk3NTBQOEdjL25IZklHVDk5VlJrVllvbHcxQ2dkbjZUemVFQUFBREFKdDFCdzlYY1NYVTdjYjMrR3V0OTM4VUhEaEVOR2tKR0FTNGtIUzBBQUFCd3gxci9lZkN5cENGNkJnOS8rOENMRGh3aUdqU2NMbEJUNHBqQkF3QUFBTFp4T1doWVdSczgvTzBETDdiSFllNmdJZFFlaDZIcFlUM2FtUm9MQUFBQWVlajJvVGYxaDBmMHM2L2JxanphOEJwMlFISWgvM25TVnVYbEloR0hvbTYrTHZHK0V5MDVhTERLd011a0FCVElhVDRBQUNBQVNVUkJWQUFBa0llbm13WVpkcURRK2M4L0E0amdBd2Vad2Q5VXdVNFZSVXVwR0R3QUFBQ2c2MG5vbzdGRXhHSHBHZnhCRk82L1lQQUFBQUNRc2U3KzE3WXFmNDQ0RXM4NmY1cjFmOXl5R3VoWjl6OGVoRHowcEYyZDdjL2dnVDBQQUFBQVdUcWU4cUhicXV3T0RBNWtNcnFiK0tkM05aRDl2YUwrTjg0SUZuRmcwT0FNa1FjQUFBRE04V25zNzlvc28wRUdEZ3dhbkN0SjFRb0FBSUNKM2t6NHRTUHZTNVVvOE9hTnJmUGdKWGN2QUFBQTBqR2dQLzVoeUlmMUduR0lwVE5lMU0yYkJRcTh1WEFzT1hZQkFBQ0FTZHFxSEJTQjhCWnhrQTZ0K3M1NFVUZVBqVEh2RlRSbHFndlpNTTIrQjJDTG9tNVdCVzZPNUk5eGtCcTZrWFdpbi9nTzZ1WHAzRjhiWSt4bXcvTzJLbjlIZkd4ZXlKS0ZzY2RqOWZtL3JtMjZoSEx5ZlhnMWNaUHRyVEhHM3VzdTEzTDhJMjZIUTF2dnJYSzA3eVZLcmlwSFI3U3ZZWmY5V0I1ZXNqOWpVbGFBanR1MktoODZiZGdXdnR2cytEbzhYS29UVzlTTnZRYjNYTDNlbG9xWWJ5SVk4SHV0K3A3UXZXdlUvZHpSZDlHM2paVllsMkkzTlJwajNnVisrN2R0Vlo2N2VDSFg5NWFsdWVyRGJMTlc5VGNrTzdnNEd2c2NjblJQZTlsVzVlaE52MU80YU8rVTYyQkkxZWoxbnhObmZmZUFJVzNvdk5hWmw0Z0RtNkVYY1dNL1VpUnRkZkhRRC8wQWlhbk4zeGE4RmtKOXhoaWloT1hRRzN6dWJLZTJyY3JUZ1lkQis2REJyRmRpWGVyY0szakd2Uy9xWnYyNyttUms3dm1WWkFZTlB2V2syRnlDUFZmZk9pazhQd3hkQnVQQW15blpncFppb3oraEluWnlqejFkdnkvWStnMGpKam8rT2QvakVPaEdkYTl3eFZpSkRScitTUEV6WVJxWm5Rdkt3L1gzYk1EUFJNTWVINzZqZVFwOTdwVmZhei80SHJqWE9lY2FsNGkvVnRDR2xGelAvQ3kvMXY1NzZ6TEZvbTcrcnBTd1VTU25BNGRBTjRQYnVlSC9VRGV0SldhWnVDSEh5Y08xRXYzc1hLcnJwaGxBNUV2T3ZiZEJQZGRXZnV6MUZNTTUzMUtWR0NQTlhRYlpWdVhqbnZPejdScTY2ZjZIczRGRHdFSERySFh0b1FjTkRCNHd3cFhMZzFYVXpaVGxBRlBmeStrMWw4T3lIcjZuMmRyemNlNjVudklqNTV3bFhCbWIrcjN2ZThZV2RUTm9VdDdKd0NGUU1iTG9CZzJiL2pzRUhpTHg4VkNUNDFFT3h5MW1mRS96NWZMY2N4M2xoM01PRDc2dHYyUjNtWkl4NXJOeE1YQ1FkS2ErTjZ1NUdEUUV5VEt6YVpEQTRBRURPVjNYSHlJOFRMUmhIcjZuK1hKeDdybCs4c001aDgwZXRUb0ltNVkvMm1kcDk4K3VmOS93N0wzcC9MeE4zZXdrNHZERDl4bDBNR2dJVWxOaVY0ZG5vY0VEZVpZajRtRmQvOXhjOVFpQWprQys1Z3p1dVc3eXd6bUgrYSt2ME0wY3RiY1dHWEJpMDRCazFzQWh4QVU4dDdNdEJ6TkVIdVA5SVQrMHdPRGgyTWNGQlg5Y1h5TStCNDlFRzREWkpnM3VaVUlNR1dIUWdEWGRmdWVOeTc2ZXJOTDV1MyttKzJ5ZVBIQ0lZZEFnYmdiOTFEd25ZNHF2TGRBNUNuRU1vRmNNZWUrTmd4UnpVYU5Ua0srSjUzNkp3bDVZeU5DTnE4aUg5RHR2T3gvNHhrWFd0cDYwdm5jbXhpY05IR0laTklTcUtUR2w3THA4dnRzQlArb0VuWks0ZUlnNkRDMnVOZVkxWFVjYlZGWGFCUUJGN20xY0JXUXBmN2N2dVRjbExiUGRyN3poOTU2c1Q0eVByaHdkWXBOeFJJT0dXVFVsN0FrUFdlWFJIaE9XZ21UTGxwbDNQbmh3S0tsaWIxUFpGTHA5T2JhUnZxSnUzclJWZVQ3a2d6SVJsQmRiWFRqM1k0RE5wQy81ZUgzUDhkejd4S2IrNHFpSWc0VEt2SFp5SXhvMHpONjBMYTl4NEtJUzlsQkYzVVJUaWoxM0hxSU96dFpFdXk1aWxXcXh0d2xJb1p1djk3a2ZBR3owaFVPRGJkcXEvQ2w5aGpNSEIycC9XLzlqN0ZJbHI2R3l5QVlOempwMWdRY1B6d085RDl4d3VlN2Y1WnBvWjBXSGlJSUJRUEtDcE1UUFhWdVZwNTNVcWtNaitkZHJhVm0zVGd3T1hxcmt1ME9lNjZDaDg1b0hvWll0c1dRcEhuYmR2K05DVVFkdFZjNjZnWWVzU08zWjJPVlJSL0xIYTRwYkYrY29OdlpoRjdqSlU4NzlpMURMU2hka1p5dTlSditJTHY0eGVIOWp3UHZ0QjJPTWx4VUpuUE5seUhGMzN0Y2JOSENJWk5Dd2FJRTNSNi9ONEFGOW5qa01WWDl6Y0NOeHRweG15V3R3d3NQczNzOUxxbHZYV2F0Y25LTkJjcjBIVER6M2R3WTMwcUZ6dXJUTUpqSFlOWWh5dmQ0OXQyc2d3cy9yYS9uaS9waHNrTURLenFWS0FVYTdnK29mYktPbHdKdWo5emdJbFcycHFKc1hJZDRIODdpZXJabVQ2emxFSmVxWXRGWDVpZ0Y0bnV3bWRnL24vdDJBbjNFMmNPRGF6ZEt6SWN0UmdFMjJEaHlrZytGenM5N1ozSXMzVklHM2tEZFlGNXV1Qi9vWTZIMHdrK1ByYjA1ZEQyZkxkRkxxdE5BQnk5Y0M1OTVWMXEwVFI2OERUeVJUampNeVlHRHlCN1BzaWpqNExCeDI2MmhkYTRqaVpvY0IzdU9PVUE4ajB2cGhLTWNWcUZNczlrWkhMRisvQW41eUo1M0pLZldIRU53UGgyLzRnZE1IRnpZT0hBTHNhNWc5cXg2bzAzdTExRWJGZ0lNSEtsSkd3T1gxTVBHNzQyd3RmNHJGM3VpSTVZdmFHOUN1cmNvM25DUzQwRHR3OE4yUmpLekFtN1BjOTFNRUdqeFFrUkpiT2E0OHpjdzhBSVREUFJmT2JJbzRlT3RJeHJRV09PQmVnNjFDSExPRVVtd21iY0dvdzVCTm00TXdNdy9Nd2hwMWpNSTlGeTdkR3ppNHJnaTc1aXFXcytlcWcrWXFNaEpnOEVERjJuZ0UzUi9nc3VKMEJwdUlVOXk3Z1FTNS9GNER5RWRmeE1GWlJkaDFTeS83R1VyYm9LSEQ2K1ltTmtySHdlWCtnSUhuM0h2V3NvUXdHd3pmWEYxamZLOFZtNU0yZXcyVEdYRHF6c0RCWjhjeGxwbEd4WU1HTmplaEs4aWFWWmZGcGtoWkNzem5NcDBtazBXcU9YbmVwNWlJQXN2YVdRRE9rWmN4bkdmTmc0WVYzNTB2Q256RndlV2ExUjNYcTZ1SzFRQVVZdkNnRmhPRlVPbnZ3TUZ6Wi9lVDl0TWZ3NkJoeGZQZ3dWbUJML2dWWUJEcExNVmtSdEVHWnZjUUhmdmNraitrbGRYRDI3SnhZQTd2RVlkSU9nejdMbDdFODhaeXdKc05BMTVYeFlkQ0ZzZGFHZ052eE96SGFoREJXUVRRNTgvQUlmTUNZQ2R0VmM3dThNc1NuMkF6QkQ0SFpEdzA0dUhyT25DNE1ZL2lXRUNFT2xHSVJRcWdBdERwZ2JUS1M5MkdDS0lOall1MTRwTFdib21aeGpPWCtmVmp3d0RITFhzOE85L1pHMGN2VHVFaHhWeHVmaC9MNVNiZkREMEx1UCtvN054clQyS3ZDYkRVTmMvMWpsUTh5UGxNdGxVNU85SWlNN09McExWcnEvSzBxSnRzQnc3NGorM3NheDFFNVZSNHlIRjE3VkFXMi94ZTFFMHllMTlDRjlDMG5WQjcvQlp3VWRUTmhZbDczOUlpMTN4SzF6dnk1bTNnb1AwTDRyQjlybVptcC9wRjhUYlk2Sm1kR1p4N0lHU2ZqcXNsZDA3MkRrV0VRWHkrc3JzSGR5WXJidHVxZExhMEVZQnUvOHV4ZW1STUdaUjJZZjA0aktQb21YQzJUOGZGM3FGWU9MNFg1TFNaUEdvMjR1ejQzSjhOL1VGRmszTjduZjBRTVViZEFJendJTGZxa1NrTkdvQTFKMXErenptRTVJdTZlV0dNK2VqaHBYTk9WaEdGb201c2p2MzNydHRxbDU5R2ZtamVyWmJQc2l3SFNKT3ZwVXB2TlI0dEJnMUltZDFQc0ZwL2pOMFU3d3NocmJObnFkekROZTl2V3JXTEFRU1FGaTkxSE5xcVBOZDJsQmcwSUJPTDd5dWdvd0FFOVVUejRhWXVCSkFXN3dYZ05FaDUwT0F5M3o3aXAyQzJtdlg1OHd4ZTQ0N2tIRTc1UUcxVi9vd2g3VEdEQnlBTlhnWU9TK1lHN3pIcFpyeE9jVlhvcGJNNlFaa2xaL3packQ5UEFtdmNNVkZibFpNTHJVbmFZL1ZaekNUNndHUVhFREZmRVlmRmNvT3Z1WnB6TTE0cDZ1WXlaRlZvSUZMTWxzOUR0Q1pmVjNNL3VZMDJSckpNOEliQkF4Q3ZsSmNxMmR6U3MxUE5GblZqTTV3Y3UybVNXeDZqSUhRQUk3ZEVCNExaOG5tSTF1VEx4Yk5xeFg3M0l4aEFFQ2tISXEwbzdtM2dVTlROb2h1a1hSU2trVm1SYjI1YTVJV1hLQWdkd0dTRW5NSE9yZGliVTJ3b3o1ZXZjOThaUU54cVBManNlWUFuVHptd2Z2MVBLczc2OEhxcEQ1VlFWZWlOdU9saWw1QXoyS1FRbmVWWnhHM0hQTjRIM0hZU0xaSW9CSUFJL005aHhkbDdpcnI1R2ZvUTVKQjJWUXBQQVVONFgzWkdoMlNXSnpHR3FqR2ZkT2FERHJnN0F3Z25TVVBtWWdJTWlJL3ZQUTZQUWg2UmpHbzErS2hXK3dlZHdMU3c3RXd2NmNRRm4xeFI1RHJYRDc3MGZkWW1EZWtNSWo0czJSWUFjVmxWanI3MXRWN2Vkc0pEM0NSekdUUXdRM05IeUUzYzd3SytsMnY3dnBiZE1kQWNUOU14NC95RnBmRjR0MVg1eGhoai82d1NiZ1ROSUdnVGtMaklmamdVMXp3d3o1K0JnMTBENmJORFd0VE5kNTlMb2hnME9CUFZXdXVRcytsRjNVUTdjTERMSVlyYXkxWW1sWnN1bGZvZ0hUVGs1MFRxTEtqWFRTb1M4SGxvRTVEUW1VZFVjazRwL0dEQXo3aFEyb1BzYVQybms4MWxFUXdhdkhjNldHdWRManU0ZG4yTnU4aGNsaWliemVvVjM2ZnNSVDFZWEUzSVNVcHl6ZGtGZ1NWa094SDBkK0RnbzJPeDVzYkRyTUtKaThHSWpZaTRhWTVYN3oyL1BwbGRNRWIwdFQ1WXNwQ3ZUZWRlbmdXbG93UHpPb1hPaFN3aldnMGlmb2JldTVpeFh4a2U2K3VJMHFuR3ZIeDVscUFGNEJ3UFRCb1g0VitwTitIcVFlRkZpR2dJczZQcGM5bFJadE0xVXVSNlNXMXFlOUpzaW1jRzNNRkVzYnpOc1U5SmZacEUzUms0aExnaHVMcVJ1cmpCU3doMnNYb1RRd1FhTlBBZ3dCalpac05CK2x6ZkQ0dTZTYTRpdUJ5amtBVW1zK05xY3Fhb20yZ21CZHVxZEZJNE9NVFM3cHoxUlJ5ODN3d2tjNE1HSWRadFRsNENGR2kyaWcydUFPRFBqeFNQYmNnQ2s1Z2x4MHJLdnBkMlorM2V3Q0hReldDdnFKdEZ3M0NCT3VWWFU1Y0FoUXB4czhFVkFPN3lFSFZJTlkzMmxZSTJBRUhsSHRIWXRNZkJleGw4WTh4eFVUZEhBZDdubmxBeitXMVZ2cHJ5aXdFSERTeFJBb0IrVHpndTIwMTl4aUdzb200NFQyNjVpbWhFbVdTa2QrQVFzQXorbDlDNWNMWFA1QWVjbWZLUzJCOEFVdUM2cWpmRk83R2dpOXdPZmd6ZnQxaVRqR3pNcWhSd052b20xT0JCKzB4K3lMMGZQZ3Z5QVVBS1BDeFpJbXNNRmxIVURabndIR0FDWUVjNjFwQ0RCOTl2RU1HZzRYdW9VdjhzVVFLQXdWd3VKM2llMG1HWGRPYnd4K1d5OFZqcURqajd2cm51OTBWUzg4dTdJWFVjZ2l4cDhkbXhqMkRRY0JtcWxnU0RCZ0FZenZWeWdzUm1MRlduTTQrZDYyWGo5dHJUbmg1WTYvZk5jWEhJcU8wY09JUmMwdUxqaGhwcWhEaGowR0EzTFIyN2IxR3ZrMER2QXdESjhMQmthWkhFSUM2eFpDTmFQM0k3ZHpKZ21qUUlzMHZwNVhpNUhqUkVtNUhzd1pBZnNqZk5VQmVhdk0rK2k1RzJkTXE5anhCbkRCb09BbTVhdW5WUmFSdEFPclIwSUNLSmhEWU9ueWRmN09GMzlGckJ5RHI1V0phODlGSnl6WitNZUI2N3ZPNytXanNPbjQweDUxUFR4MGRpYiswem4vVkZOMlJRZitxNy9rWE1HY2tHRFJ4TTRNR0RiSmllTlhpUURkY2hPdVdITTM0M1JBRzZQNmpYQUVBcjJ5SFZubUhFUnQ5ZFBnUHRhMDBaTURIVG53VGJOeGswY0hCOTNXMWc5OTQ4TDJxdks5UGZqcWdNL2RJWTg5Rm5ZK3dBdUtpYnFBZkJTeG15eDZIclE4QjIzc2lNL09UZmQ5aVdUZXlJZGRKU3FKQTNmL1kxQU1CODNFdUJ5VjRNL2NXMktsUFBQdlpMUVJzbUd6VndhS3N5ZExXOGIxTUtsd1RxbERkVFo4Z1lOQUFBaUI3d2pCcm9XUlN0eENCdFZhcmVvTDdMMklqREVsL3lDOGs2TkVqQURFcVRvaUVNR2dBZ1hoNDJTcFBpRVZzbHZ2ZWdGLzBYdlVZUEhNd3lKL1M0cUp1ZFZUd2pTTHNhY25icFpjRDNBb0NjUEhINFdYTk84Umh0WnBrRnVMem1zSkFVQmtTVEJnNW1tUS8vYUZ2SE80SkJROGowZTc4eVdDTUlBSXRvcTNMblJOWVl1UzVaaWptelRHaXVyN2tZRUhYUWFmTEF3U3gwVXZ0dXNOb0hEZUtMMDhac0VmdjZPUURRenNPU3BjR2JSMU5BcDNDOFRJOVp5S1E4WHFWeS9tWU5IRVR3VFR2ZGdjTFVvaDVqelRuaDdHc0FnQ1NkT2Z4UXZ0TlBhc0lTcFlseWU4WXZrSlRIaTVUTzIreUJnMnphQ1g0VGtFcUFkdFAwbnUvM2l1V0VNMmdBZ0hCYzE1N0laTWxTd3hLbDJmWWpiLzhvQ2ZSdGtqcGZMaUlPcTNXS3R5NWVhNlRqQU84UnhRbG4wQUFBNFhsWXNwUnlzYzZYVXpNUzRoOWJIRGZEeUVPVW45ZTJlMDR4WTQyY0RCeE11cFdKVHlJNTRYT3FWd01BNW5GWjBDbEU4ZExncEFORjBnNkhNaDA4UkpNeE10WHo0MnpnWU5JN1NOZHRWUTZ1SDdHZ3oxT3JWd01BNW5PZGtHSkkrdkdJN0JNUjkwY0daREVjWHlmTDAremdNNExQK3lUbGE5N3B3TUdrTTNpNGJhc3laUHJVeWRxcXpDb1RCd0JvNVBqWjkyalRQOGo3dU55VTdjV3FRNXZhTWcydHRBOGdYS2VUN1h6ZXp5NWZkNDdPTlo5MDZ0d0hQbDdVSHJpWU4zbkZzdXdxNGtIYWJZaE43WTdGMkdaZnNxdGlDdTlTV2NKeTVXcnZYVkUzWHpkTllNbW03SHNiczR1NnNYLzN6c1g3VDNERnB1ZmxkZnNGUmQzWTc5WHpoUnAxSFdJQ3RqdDV1c1QxbjJNMHJXaGJmLzM3R0FjUFBpNENIOGNoaFl0MVJsRzhuMHVONkdlMCtidVdtYmVpYnV6bXhFbURZOG1pcHNLY29vcWFQc2NjZ1F0TGVqSGxYTVJ3N2pXMlVkcjBhdWJneHViVnYxeGlpV3hSTjNaSldPeDFpbjR2dWJ4WXJnSGJ3WDdxNE9XdTVGcFFleitWWkFOdlpnNG9ybzB4NSt6UitZL1hnWU9KYlBEZ3F6UHUraGl3WGhRQUFBQ2hPZC9qc0k0YUNHNHhhQUFBQU1BU3ZBOGNUQVNkM1lnNjQ5R2tJUU1BQUVCYWdnd2NqT0xPZVVTRGhvYjFkUUFBQUZoS3NJR0QwZGxKajZad0d0VTJBUUFBc0tTZ0F3ZWphL0J3RlV2aE5QWTFBQUFBWUduQkJ3NUdSMGY0TnBaODB3d2FBQUFBb01FaUF3ZXpjSWVZQW04QUFBREFPSXNOSE14Q0hXUFNyZ0lBQUFEakxUcHdNSUU3eUJGMXh2Y1Z0QUVBQUFENGEvR0Jnd25Vb1k5bzBIRFNWdVZ2QmUwQUFBQUEvbEl4Y0RDZU8vYVIxV3E0Vk5BT0FBQUE0QTQxQXdmenI0Ti82K0UxWTNCTHJRWUFBQUJvcFdyZ1lQNWxQR29jdlZ3MGV3Vml5ZlFFQUFDQVBLa2JPSmgvVlpKUFpyNU1OSHNGeUtBRUFBQUE3VlFPSE14L25XbTcxdjl3NHE5SHMxZUFRUU1BQUFCaVVMUnRxNzZaUmQyTWFxUzJ6dmltOWpOb0FBQUFRQ3pVUmh5NnhuU3dLZkFHQUFBQXVCZkZ3TUVNN0dnemFBQUFBQUQ4aUdiZ1lIWjB1QmswQUFBQUFQNUVOWEF3R3pyZURCb0FBQUFBdjZJYk9KaC9IZkRHTUdnQUFBQUFnb2dpcTFJS2lycDViSXo1WVl4NTFsYmwxOXlQeHh4RjNkajZISHRTYlp2Q2VRQUFBQUFBQUFDZ3dBTk9nbDlGM2RnNmRNY3BmOFpRZW83bFhxZEV4bjRzaGNJQkFBQUFBQUFBSUVVRUhEd3A2dWE3TWFaTThzTUZWdFROZ1RIbTI0NTN2U25xUDd2bFQ5cXF2RXp0R0FBQUFBQUFBQUNBZHFSVWNteEFvSUdVU2lOMGRqQ00xYlJWZWFEOTh3RUFBQUFBQUFCQUt0amg0RWlucmdBY2NIQTh5MVd3Z3NKN0FBQUFBQUFBQU9BZkFZZVpTSjNrVmxFM2R2ZkhVNWN2U3AwSEFBQUFBQUFBQVBDUGdNTkVQaWJHYzFiVXpTdGp6SVhuUTBDZEJ3QUFBQUFBQUFEd2hCb09JeFYxWXllcWoyZThCRFVjT29xNmVXZ0RBUXU5L1hWYmxVY0x2VGNBQUFBQUFBQUFKSVVkRGdNVmRmUENHUE14aXNaR1lrWkJhRmVlU2h0dTI2cDhtTk94QndBQUFBQUFBS0JiVVRkdmpER25ubXNIWDluM2FLdnlwNHNYWTRmRERoNVc0R2UvdzZHb0czdnhQbExRbEhzb01BMEFBQUFBQUFBZ05JVXAvSjlNQ1VJUWNOakMwd3I4YkFNT1JkMmNHMk5lSzJqS0VCU1lCZ0FBQUFBQUFPRE56UG5uYTJPTW5XZitib3o1TTQrNW1uZVdSZlFIOG5NMnBmeGorZCtwaThEUDJxbzhIZktEQkJ4NmVFNzFrMTNBb2FnYmUzRi9VOUNVS1E3YnF2d2VYN01CQUFBQUFBQUFhRlBVelN0anpNV0FabjF1cS9KRmlPYVBhTlBPMVBRRUhEcUt1ckVUeTZYbnQ4a3E0S0NnVG9NckoyMVZYcWJ4VVFBQUFBQUFBQUNFTkNCMXY1bzZzd015MVRSdFZSNzAvUU1CaDNFUkhCZXlDRGdVZGZQYmN6R1RwUkI0QUFBQUFBQUFBRERZanZvTXF1Y2J0eTBvNzZ1SG0zWEF3VU5CNkNHU0RqZ1VkZlBKR1BOY1FWTjh1MnFyOGxYYUh4RUFBQUFBQUFEQUhGc1dadjlxcS9KeERBZDNXOHI4OWFCRHRnR0hCVlA5SkJsd0tPckc1aFA3cUtBcG9WMjNWWG1VMTBjR0FBQUFBQUFBc011V0ZQNmo1b2lMdWptU29zOUcvdmZoaE5JQW40MHg1M1BtcGpmTnFYZUREdGtGSEJTaytra3E0TERRTGhHTk51WXRBd0FBQUFBQUFKQ1hMYnNDeGdZYnRxVmptbXUvcmNyZlkxNWpWOURoZjU0YXFrNVJOMi9rWUtSWVYyQVJjandKTnZ5bnRNZERvcFlBQUFBQUFBQUE4dFlYYlBpc2JESDZUVkUzUDhmOFFsL2RCdk52RjBiNkFRZTdBbDhteHQ4cmFFNFM3S1Q2Z2ltcHRDUHdBQUFBQUFBQUFHUnNOZm0rcnEzS0Z3cVB5cU9pYnNiV3F2M2M4M2RmN1A5NTRLWk5PakVwN3BiZEpVTGdackJTcmo5U0xRRUFBQUFBQUFCNStkVHphYTk5SFlGTnV3NVdCc3lUWHhoakxrZTgzNHROcjVsa3dHRkxNUTVNTzU2Mld2b1BqdDBrQkI0QUFBQUFBQUNBdk54TDY5OVdaZSt1aDBET2pESHZmTCtWM2RtUlZNQkJ0bjVjS0doS010Z2w0Z3lCQndBQUFBQUFBQUNwdU80cFp2MHFtWUFERStOdUZYWHptd0xiWHF3Q0QxZHRWWTdOalFZQUFBQUFBQUFBZzBqbW1zdWV3TUM2MndsSDlHdlA2ejZPUHVEQXhMaGJSZDNZQy9BNHBjK2sxSEZSTi9ZNG43UlZPVGcvR2dBQUFBQUFBQUIwT1ZpTS85alJBWDBhYmNDQmlYRzNwSEw2bDVRK1V5UXVpcnF4YWNCZXRsWFpWMHdHQUFBQUFBQUFBSHpaYjZ2eXQ2UFh2bzR1NEVBQlk3ZUt1bmxvakxsSjZUTkY2bU5STjdibFQ5cXEvSm43d2ZDbHFKdStyVjRoL1dxcjBsWEVXSzFZajNOUk42Y2hDaWlOOU1zWWMrRHd3UjhkcGZXWmJ0dXFmT2pqaFdVQmdOWDlYL3RlcFkvM2k0QjlPTnFBL0dVcXo4ZWlidXpuZUtTZ0tmam5XVnVWWDVjNkh2Szl0OS96QTFsWjlsaisvMXgzY2R0Y3dKL2FxanhYMEphb0ZYVmpyNk1YTnBkeVpQZWRYM0x2L3hyYm9penU4U29sUGNhV09aMVg4bDFmY2d3MjE3V2tadm02OERQWkhzZVBTNzIvU0RZRnQ1TEY0MlFhK2Vlc3JjclRtYS9SV3dTN2FOdDRTaDhrVXFkaDBRRk5GM1V2OUdxcnNzajlHTGltNlhwUCtmekdmSnkxM3hOenV5L0VzSk54ekRrcDZzWk9uTDMyMjZKc1JUTW9vKytsbW9zQjF4MmtmdlhLK2ZtS2tRVGx6N25PL3ZnZ3dlbnZTeldBZTd4cWF1Wmh4aHFSZXowbk5zLzhHOWVUeGhLay9hYmtPRjYzVmRrN2tSc3JCUXNUdXc1RFBDLzZuZ3RUeC9WRGp0L3F0WWNlYXhkekRCdWVmU2RSN0hBbzZ1Wjd4aXY3bk9ONDZyZjZ3aEo0QUlKNnBqbTFuTndYWEc1elZFc201NU1KTmdpQ0RmNnM2aUoxWmJHakRPb3hDZXpQdTZKdTFuY2xKcnNpMUpCU2VBajduSDB0dThidllFeUZXQ2pkMmF2UlhpYzl0ZFcwVlhuZ29KMWVkakJEcGNYT3RjMnM0SHZSaEExV0RVbWQ3MnVPd1FZRFZRY2NsRVVYNTNKMUE1eU1oMWQ4NU12dkxYVUhnSC9zcXFlaWJ2YVZwNW03c1cxTU9lZ2dxYTFVVDg0emNSR0ZSMnVyYlQ2MFZma205NE1DSkc0OStCaDFqVFFDRE83WTV3SFBibWlrSkgxUENzb1FrN2pBQkcrTk1lL1hmczB1bVBCK3JjcXVybUxBN2pzN3gvQjJTaXBMR2J2M1VodHdTR2c3NHVLVHhRbldhYmlUZ3pHRHJhdDc4aG1UWHJVRmFDQVQrVU1leWt1eTkvTWtCODFLNjJoMHNXbytYbmJWNnlxUVJkNVdJQThmTzZ2ZG84amhYdFNORFpBOFY5QVVBSjRVZGZPbVp3SVM4eVdWZmdocHNKUDRSZDNjKzc3YiswQ29XbFUyNEQ1Z2Z1Tzl0R25zV0xkdjdHNkRMT1ovSTEvSU8xdGtLWkVKWkJ0b0tCUUVHOXFFZ2cwbmNrenZEQmJrN3dvcExKa3l1MnFybFowL0FEelN2Z291eFVDcjdNTFRIR3o0VExBaEdSZnlQRjBzenplQTRIN0k5MTVsSVdwcFcwdXdBVWhYNTN0T3NBSEl5OXVlVHh2MFBpRHpHeDkyL05qNkR2R3ROdjNzS3BDaUp1QmdKeHFrc1k4VU5HY09MWUdHM3dsTlNEVnlUTGV1UnJRcHErUkwxUGRsVHNrM0NwSUIvaEYwQ0NlQ2xIKzJPT2tMQmUyQVc2VU0vcU5OdVFKZ3ROZnl2VmV4RXJZekFRa2dVWHpQZ2J4dDJza3c0YjZ3YTdIVXIyMy9hTlBMeWh6SDdiYWZzL1BKdXhxeTVXZjJWLytQaXBSS3FkeDhOVXhPcFpicmM4b3hsUy96ZVdJMVFPNlI3dzNwUFFDUEJtNC9YRXdLT1lsbDBrZHpzT0daNUw5RXVwNlQzeHZJemhlYmJtbXA3NzNzdEZCZHJ3akFQQVFaQUt4c21sZVF2eHRVYzBycTBjMnVTVGQzZ2Z5V2U5dXpicTNKUlFNT0VoSFpXN0lOTGlnSk5DUTF1ZTdpbUxaVitWMXlzYWRXdzZKcnRlV0pmTlNBSjlJNStLbDFCMTdNRTZVU2JQaWlvQ21iSkYyZ0czZko4M1JTd1RRQWNaTHZmZEI3UFpPUVFOb29CQTJnejViRmpCK1hYQVF4bEtTakxUZjgrTDFhV1l1a1ZPcWtUNG82Mk5DcEhiQW9PWmFwQkJzT1hSOVRPNERRY3E0OHVtRHdBdmdqTzRrK2F6M0VNWDcvaTdwNXJEbllJTThOZ2czNWVTKzdSUUhrNHlaVWlpWDY2MERhWkZFdHdRWUF2V1JlOHFydjMxYnAxeVJvcVVZbkxWeHZzS0d2MXE1Wkl1QWdqZFNjT21FblRZR0doRHF0VjNKY3ZSWnc3Snk3clRuTFlrVVJUTUFmeWVGL3B2VVF4L1E4a0dERER3Vk42VVZxbmV3ZGF5MHNDOENiTC9KczhvWmdBNUMyRkJiVkF2Q3ZyY3BYTytZbFAzYUNEOEZUKzY0MkNReVljOTY2WUR4WVNxVkUwaWVwU0syd1l4dExiQmFwUWJES1dhWTVUY29NcGR3VTdtMXBBakJQVzVXbjh0Qlh1VEkvaHZSS2t1YU9ZQU8wczRWbEwzMHZoQUNnaW4wMmVYa0dzSE1LU0JzQlJRQmpkZVlsYmYyRzV4dCsvZW1HKzB0ampMRy85Mm5LZUVWMlViemE4cjRiRFIwdmV3ODRGSFZ6YW94NTUvdDlQRHZVTU9DMFVhYllkNGQwYVpqVVdRVTdFZ3ZpclB5SUlROGNFQnRiUUxpb20zMnR0V0UwQngyMDE5VGhmb2sxMzN4TlBnTFF5ZU16OUpoVERxU0pZQU9BT1NTVHdoOGo1dEJMK2ZQT3p2dDVabmRpUEI2N0FOOWJ3Q0dSUXIwcUN2RW1XUFJZWFJIT3RpcHQwZTBrQXcvU0FiTFY0b052eFFKU0pmZXdUVVdmRnFjNDZLRDFXWGE3V21FQ2ROa2RUVzFWQnNudERrQUh1K3F2cmNwUHJocXpSRG9FQUdHUXpoaUFTemFqZ2pIbWRQV1NNaDk4T1dVbndrUTJ1UERLUlQvSVM4QWhnZlJKMTFvR2w0bEZ5OVZQZWljY2VQakNiZ2ZBUGZ1ZEl1Z3dqT0xubVpwblBsUjZ5bW5KQnBOR1dQbm9lSGNUOTVIbEhlWitBR0NjcHhvdTZ1WWd3U3dKMGFJL2p4VEpRc2ZCUmFUbHZuUnZJZDBTYzdGT0F3NlNBeXJtaXZ4cVZqZ21Vdk5peFJhRWZxV2pLY09rR25pUUNUOFZLY0tBVkJCMEdOYU9wZHV3d1ptc0lzbktVdGVFck5DeHgvdDFUTWZiRnBCdXEvS05ncWE0cHJZSWZtQ1RjdC9HWnNIdi9ZRjg3ME90ekhQQ0ZwRE9xQmJhTDJQTUViWGZrc005L2orWEhxL3RiNTVlMTdmUDlyN01uQUNRSGszZmEyY0JoOWhYNG10WkJTb0Z4VkxKOFJsOWlvcEVBdy9maXJwWnBGZzNrQ3FDRHR2ZmY2bjMzdUdseTVRWjJFMVc2THlSUDM4VmRXTW5BaDRwUG9TdjE5dWNnaHlEYlFoUEJyNTNWdVpGa2k3V1BoOE81cjZJMU9EVEtMb0ZZUmlIZTd4ZkVSV0NKMjBvZ0VYTURqZ1VkV01IWU84alBuMWFDa0lmUkJ3aHZ5ZTExRDJkd0VNcU8wOGVhUzRzQzhSSWdnNHE3eEcyWFVzTU5oUUhHNTZ3a2xPUFZRQmNKdVl1Y2o4ZVFPcFdkWkNNN2tVOXJ0cWtib0VQWElHbGh3QUFJQUJKUkVGVS9YL0FDZTJMUk5YVnpRU1FsLy9OK2JReWtSQnJzS0d4blMwbHdZWTJvV0REZnNxZFdEdGhsOUxuczllZXBFSUQ0SUJNNmw4clBKWjdFZ3dKUm11d1FaNzlCQnNVYXF2eVV1c3psbWNsNElkZDFKUDRCTGlxbk9JRUc0RDViS3BGeFlkeFgvcTZCQnNBTEdwU3dNR3V4bzg1aFpMY2dHZHZrWjFMSm50VEtRcDlrdE9EVFQ1cktoMzJqNUxPQW9BRFVyQk1ZOTdjdlZEZmRjM0JCZ1hOd0E1S3oxT0tOUndBVGZhMW5ZMmliaWhBQ3FDUHlscFVCQm9BYURJNjRDRGJYbU5kamY5U1NmSE03d2tGR2xZN1JXTEpZZWlVWEUrSENYeVVSd2xkazhEaUpHL3VTNFZuNHBFOHg3MGgyQUJIdEgxL25pcG9BNUFzbVNUVHRrT1FnQU9BTzJ4QmVZMUhoSDR1QUcxR0JSeGtFaUhHd3JtM01pbStlSEhJaUkvaFBWcDJpaXpOcHVXU0I3ekdOQ3FqRUhRQTNKRm56aE9GaDdRczZ1YXJqeGNtMkFCWEtPZ041RWQyQ0dyaW9qMWVucmNBRnFOdW9TWDlYQUFhRFE0NFJEd1JlVWhWZnJlMHBSUFNjbTNhUVZJS0QzdEo5Y1YzQm5EQTFncFFlbDk0V3RTTjB3R1QwbjdDTFlNd0FNQkU3R3dDc0U3YmZVSGpqbW9BMkIxd3NGdkdZZzAyYUNrS25aQkRaWUdHM3hxdnpVVFNMTjFvM1M0S3hFanBwUGV4cTZDRDBuN0NOUXNPb2hmOXprRUEyVk8xdzRIZHpFQmEyQkVLUUt1dEFZZWlibDRaWTM1RWVQWlUxR3BJeUZ0TndSczdRU2FkNVQwRnplblZTYk4wcTdCNVEvMGc2QUM0b3pqb2NEcm5CWlJPWGx3cFRNMkI4VWhGQWlCcWJWV3F1NCt4bXhtWVJtRWgrUk1GYlFDQVhnODIvWU1FR3k1aU8yd0VHcHhxTk5Wb0tPcm1JTGFDNVhaMXJYVG9ieFEwWndvYmNPUTdCVGhpbjFFS0oramZGWFd6S25ROWl0Smd3MGxibGVyeTZ3SUFvSWpkeld4a0J6c1pBWUJoWmkzU2NZMytMZ0ROZW5jNFNPUTJ0bUFEZVpvZDBsWVFXaWExb2dvMnJMUlYrVHZtYTVPdDE0QmJTbmMvdlpPRkJvTXB2VGM4WWZDVkZIYXBBSUJmMzJUSFErdTZ0aE9RSU9xNkFNQkFtMUlxZlluc0FGNlJwOWtOalFXaFU1bndsdVA2VmtGVFJpUG9BTGdsenl4dCtla3ZoZ1lkbE40VDltMlJiZ1h0Z0RzTTdBRXN5ZFZ6K2l5U3MzamNDVDZzL3BBZkh0RHBpdk1DUUxON0FZY0lKeFp0Nm9SUnF6TFJTMXRCNk84cFRuSzNWWGx1SjhVVU5HVzBvbTdlUk5aa1FEV3BNZkJCV1JzdmR1V24xVnFzMys0bVU5QVVBRUE2bk5SZm1KS3lVSkhuUFVHSTN3cHoyUU81WVVjU0FOWHVCQnlLdW9sdFplQXpVaWZNZHFXMElIU3BvRGxlUkp4aTZiMkNOZ0JKYWF2eWpjS0NiMStrWnM0OWRwSmgyYWJkUnpyRk5CVjE4MExaQjlPMkl3bElUbEUzMmdvc3UyeFA0L0MxbHJZbmZZWDFRTVI1UXA4UlVFMWpRWG9BNlBwYk5Gb0syejZLNk9pODVDWTd5NjJtTkZReEZvU2VTMm54Mkszc0xnZlpwWUY1eDVFVVZmakxCczVsa3VXSG9xTmljem8vNmFZb2ttREQzckxOdW90Z1E5SStLdnR3TWE5UTdwWHhzOGlPSVVnVG80eU1SVldsVVhNNTFyUzE4VEw0enIwdTZ1YjEydC85c3ZWNFNIa1lYc2IzZUFxaEE0QUMzUjBPTnhHZGtBOE1GS2FUSFEyYWdnM1JGb1NlSzhMSk1uWTVBQjdJUUZ4YnVyVWZNZ0cwMmdGSnNBRkJLRTNieFNLWGRHZ0xabVZQbmpVeGpVV25laGxuczJkNUpQMko5ZDBRcEdxRkwxN21GVWdqQmdEalBJanhlRWtLQ295M3J5bkhOYXU4LzNxaWJHVXpnQVhJL1ZuYnpxZWJvbTUrS2RzQithdXR5c2NLMmdISGJQMm1sRk1xQXJoUDQrNDU0VHdGa2wwd1Y5U05MZlI2N1BxMUkvUytxSnYxaFV5ZmpUR3ZxTWtFQUVEOC9nUWNGT2JMM0lnVmpaT2NhS3Axd1lUQ1hYWmxjMUdubE5ZVndCd0swNjFwQ2piWXVrT3ZGTFFEamhSMVkxTVZ2Vk4rUE04VXRBRklob3c5VmFWUDZ1R2xqb3g5aGhWMTh6aUN6NytFNTdMUW9mdld0OGFZQTFJeVFRRjJPQURBQ0tzZERyRjBlQ2pZTjg3bnRpclZGRjJNWkZKaEtXY2NHd0FyTWRaNENlQXROV1RpMFVrOWNDUi9vcDFjYTZzeXVmb05nQS95dmJmcGtRNFMrTjU3bStCdXEvSklVZ3FScW5TM1BVbkoxUDFCRmg4QUFLQmNiQ21WNkZnTVEwSG8rTEJpQXNBZEVuVFFtbW9pdEdmazBIZUhZTllvN0c1QUV2amVqM0xvK3cwa2dIN09lWm5rdUtpYmJsb3FWYnY1QVFEQTNhTFI2ckdWY2pjS1FrY3JsaFZnbnhXMEFjaUczTTkvWlg3Rzl3azJZQ25zYmdDeVkrc0VmUS8xb1NWZGNJN0ZwRjI2NkJTalppY2tBQUFLUEtEYWZqSW9DQjJwb201aVdwRkRKeDRJekJaSWx2dEVka1VtcWR1RUpYSDlBZm14ejl6UUg5b1drN1pEQW5hRk8vRzZxSnZYOGtLcXhzY0FBT1RrZnpHbGNvbXB1SFZBSjdLclFVVm55aGFFSnRnd25CU05pMllTa1ZYR3dESWtWL0hibkE0L2s3MVlFdGNma0orbHYvZDJaNFdNNndvcGxveDVibVRYZzVyZC93QUE1TUlHSEdLYVFIeEtoK0d2Umpxa0tsYkhGM1h6U2dJTnBZTG1SRUd1NVI4Uk5UbjN0QzdBb2lUZjg3TWN6Z0tUdlZnUzF4K1FIMjNmZTV0U3NSTjhJS1hwUERjc2lBTUFkTEdZMXI4SDlpQVhkUk5UbTIvc1hLMkNkaXhHVTRkWVZ1akhOR211UW96SGJZa3Q1Z0R1a21mMnZqd0xrOFJrTDViRTlRZGs1NWYyUG01YmxTKzYvNTFybXNXNUpPandVbEpZQWNBOXl1WkhVMXhzZmFDZ0RRZ2txcUxSSzdtdVVPaXNjbEZCemdQQmhwR0t1bmtUNFhGald6ZWdoRTJobCtpazZDOG1lN0dnUTY0L0lDOHl0b3B1UVkxTnM3Z2FGM2JHaHljS21oYURqNlJweGtSY053Z3R4ZXdoZXdyYWdFQldBWWVYc1Izd3pJSU9xZ2JCUmQzOFpsdnFORVhkL0RUR3ZJK3QzWFpidDRKbUFPaEliSEwwbWwxVVdNaWhUTmg5NXdRQTJkaFBMY0JvMCt6MkJDSHNqc2hyQmMzVDVxbnNFZ0VBQUo0OE1QOTFVRDVGbGxicEQ1bjBmdEpXNVU4RnpmSGhRMXVWYjdRMHhoYUVwa2JEZEJFSGFWZ3hCU2hsSnhRU0NBQ2Z0VlY1cXFBZHlNY3RnWFFnTytwVEo3bG1kMFFhWTQ3V1g5YlczalBHWEVUL0FlYzVMdXJtRSttVk1GU0VxY2dCWUZFUFZtOGU4YVRGajZKdVBxL250b3ljTFFpdEpyY1puZEo1aXJxeGhWNWZSOXI4WDFvS2t3UG9GM25RNFJrRnV4QklkcE9OdU1mT0ZKM1RyOG5LbFUwL2xQdEJXQ2ZmZ1R2Zmc2SnViQkRXVHI0L1ZkSElNRDdtWGhzeU1kZHlqeWVJQkFBS1BGaHJ3cUV4NWx1RUorYTVuV3hKWVd1c3N0UkpEMU11VEJwQzdDdVBtWnp4SStVODRhUmJXNFlFSGV4dXYwY1JOVHZsSFlwWUhqdG5kcUJtQlJKRVFlQ0pjdDBOWWVzNXRGVjU3M09uZ0h0ODJvcTZPV0xSRGdETjdnUWNiUDdhb203T2pESHZZanhyTXRGMUV1bktwWDNwNktuQXBPRThLYVNmb3BNS3hNVUdDRzE2QUJ1RTE5NXc3aTl3NUxPc1ptVEFEZVRqVEw3M2FzWk5LY3RnTjBST096cVFsamNVc2s1ZlNvRWwrMWtVTkFNQnJlOXdzSjJLMDZKdTdLcm00MGhQeEVWUk54Y1JUV1ljYWlwVWFBdENVemwrdXFKdURpTGRKWFFIazRGQW5HeDZ3YUp1VGpVdkhPRCtBckVxWkdyN0hiWWZaSGU3L0NSNEFHQ0hkK3hlV2xacXV5RllLWTVJcVY5Z0ZMRmJSWE5pcDMzMzIwaHBlbmIvVXRDRzVOMExPSmovT2hHdkpEVkRsRHNkekw4VitwcnpkcXBxV3l5cllqVkxaVmNJazRGQTNHVGhnQjA0ZjlIMlFiaS82TUI1QVBJejVYdXZ0VzhyN1NKOWtqSWJka1BFa083UjF0dFRVejhScWwyekt5WUw1NHJtUWxPNjNqUjlGdXA1QmZDL1RXOGhLMGRPSXY5OHg3WkRLdHMrdGJpMUhYNHR3UWE3RWtVNjdRUWJKcklkNlVTQ0RRMlRVRUFhWktYZXZxWVB3LzBGQU9JaTkrMWJwWTMrS0pQWlVNeW1lNVN4citacktlbzB1QWhLMWU0cTJWVUU5OWp4bEQ3T2NRQWJBdzdtM3lxRkp3bDh6aHN0RThKdFZhb0lmdGdnakJ5VFpJdUErV2JUbHNneGpLbEk2eWEyOWdrcmU0Q0VLTXR2ZlQzZ1p3QUF5c2pZNWEzUzgvS0l1blB4c05jU2l3OFFNNFdwdDVqTDhVRGJlVTRodUs3dE01QkdMNHl0QVFmejM0bjRtVXJIUUhZN3FLbVhzQlRwbU44azhuSGVocjQrYlowR09ZYlJwaHpya2xWSGJDa0RBQURBUFcxVm5tdmJOZGVsY0VjN3RpRG9BTGhUMU0wTERtZnlVbGpnbXNKbndFZzdBdzRyQ1hVTVN1bVVacmY5ekJhRVRtZ1ZVQ01UNWVlaDNyQ3pLeVQ2b3REaWxnNC9BQUFBZHJHNzVwVDNHKzJPOWpjSzJvRmhubkdjRUNsdHUzWS9LbWhEaWhwTm55bm1lVHlGYlZkMWJsTTJPT0JnL2dVZFBpUnlQQzRrOEpCOEdwbWliaTdsUzY2bDB2NHNFbWdJZXQ0UzJ4VmlwTkFlSzhFQUFBQXdtSXdIdFE3VzMxUFhJUTZrczBERTFPMG9JTFdjRitvQzJFWGRmRkxRakZIc1hLVENackU0SVpCUkFRZnpYK2ZnamVZdHRSTjhTM1ViYmxFM1IvTHdPVmJRbk5rNkJjZUNrV3NqcVFlNEhNZm9IbFlBQUFCWW5pejgwYnBDbmJvT0FMeFJWaVB0TCs1N2Jpa05pajZQS2VnZ3dRWjFjNUVFdk1NWkhYQXdjV3lwblVKTlllbTVPcWwvdnNUOVNmNDZYQ0RROERQQmgvWUpLWlFBQUFBd2x4MndhKzVYVXRkQnQ2SnVIdWQrREJDMU00Mk41NzduM0MrRmJYb2V3enlWNG9YUEdzOXBzaVlGSEZha2sva3lwWU1UKzRyMnhGTC9YTWxxL0dDRnZvdTYrU3JITUttaU5oU0dCZ0FBZ0dzUjFIVTRWZEFPM1BlRFk0Sll0VldwK2I2U3pFTGFwYlZWcVRZd0t2T1c2dVozT3VuY1ZkSjhUbFAwWU81bmt0UXNSV28zdGRYbmlXVkZ1QzBJblVxTkJpbG1IRFF5TDRPUmR5SGZNNUFuYlZXU3l4WUFBQUJlMlBHU3BIbDRydkFJdjdQRnBLbGRwb09zdms2cExoN3lkYVU1ZFhWbmZ1NXpXNVhxNms3QWllT2libGJYNEdMelB0elhzY25zZ01PS2REUmYyV0xNS1IxdDdZRUhyWG5ScGxvZ2RaTE5RZnN0NUhzR2N0MVc1VkdDbndzQUFBREsyQWt0U1pPamNlWDZuaDNUa1ZwMEdRbVB0NUN4dGlwZmRTWjdOVnRQd1hOcmkrYVMvV0N3L1VnbTAzOFVkZFA5N3c5U2Y5ZTVvbTdPalRHdkYvbVU4NlJVaXpnS3pnSU81citicnIxcHFkNUNNMVhuTSsxcktCU1VZTWN0NkhGTk9RckxZQW9BQU94Q3lvVjdWUFR4WXlhcks5WHVmSmQyaFI1ekpMVTRMRkVxOC9IUHhUMytMazlqNU1NSTUyUnNWb3lMb202U1dpanNLMHVHZlY0VWRmTXJ3cFRicjR1NmlURW80TXN2K25qaHphcmhzSW5jekEvak94eUQzRWkrdElNbDNyeFRFRHFWWU1OTHFTOFFzdU9mVXAyTHJpY0VHd0FBQUNieHNoSXdSOUlmdlZYNjBZUFZkVkJjTkJNZHl2UHh3NUdpYnB6di9wZGFrOWVjSXhYc1RyYXZQaHBDM3YvNGNRNlg0U1hnWU9UbUs1M05ac0NQeCtpYkJCNkNwYTFKdENEMHAxQnZhT3RjSkxyU1kzVXNxZFVBQUFDQXhjbEtVNjByeDk5Si9UdmdLdnNqZ0ZsSVk1eU5KN2tmZ0loeDdoYmlMZUN3MGxibFFlS3JycjlJNE9IYzF4c1VkZk16b1lueVc1a2NmeFhxRFcyaE9EbCtxUlRWL2l2MHNRUUFBQUNHa0pYalduTW03NUZ5Qm95ajRBSlpCdEluaXp2ZjVuNGNJblRHd3R6bGVBODRyTWhOK0VUbllYRGl0UVFldnJ0NlFadnpVenJDc2VXTDZ5V1Q0ODd6Nm0wangrOTl5UGNNWkorT0RRQUFBRFN6YVZNMTkxbGwvRWFxaFF3eGxvSkxYRS9wYTZ2eW5GMVJVYmtpWmQ2eWdnVWNqQlNWVGp6TmtsVkt4M1h5TmwxYkh5S3huSi9CSjhkdDRDZng5RWxzQXdjQUFFQVVaQ3p3UzJsYmYvamNyUTU5bUJ5R0Q4cnIxOEFCMlJXVjhrTHFWTHhsQjl2eWdnWWNWakpJczJSVzIzVEhUbm9uVmhENlpJbkpjVG1HWmNqM0RJSDBTUUFBQUlpVkZHMThxYlQ1cjZucmtBZUNEZkJKTWpwb3ZjL0JBYnVRV25HNlFQeTM0SmxGQkFvOFdMSUo5bUZmMU0zRGhBb2g5K29FSFE1dE1lMGRQNU9DeGdhVkZqak9kaER6STZIanVMTFBqZ1lBQUFERXJxM0tUN2Jicm5UczgyZkJHQlBTeVhvcDF4L2dsZkw3SEJ5UStabENBdFhKMVFxTjFHM29GTzdZYnRHQWc3bjdSWDJUYUs3OXJtOUYvU2ViMUllMkt1M25OVkx6SVpuVitFdDEwQk1OTnZ5OVRnQUFBSUJVeU1JemxaTngwcTRuRkpwTXhpS0w0WURWM0FpQmgzU3RKcmc1eDh0aW9ZQk9pNlJVNm1PM3ZHUlEzMkhsZFNmZFVoTEJCa24zcytTWFBLVmd3NjBjVDRJTkFBQUFTSktNSFQ0ci9XeTJyZ09yNGVPMnFuMUhzQUdMVWpCWEFzL2svSkptS2J6ZzlXSXgzT0k3SE5hdE9nUkVDS094TVUwVXh1Tm1DUUFBZ0Z5MFZmbWlxSnNEcFRYc25wTmlLVDZjTDJqVjJmRmc4OHUvNWtTbFpaVzl4ZngzanUwT3VVZTVIeE5QZmtsTktDaW5MdUN3d3ZZejlVajM0OWFKRkI4Q0FBQUFzaUdMbDFTbldHSVNXelVtbnhBVm1VZFpwZGcrTmNhODR3dzZvV1loYlBlZVJQREJDZW96UkVodHdHRWxsOExTRVNFSHBsdmNPQUVBQUpBOUdmZXBMTUFwd1pCUk83dmw4eVJWcjArSjY3WXFqM0kvQ0VoRFc1VTI0SEM2K2pCRjNkaEZpTWVjM3ZHMExvaGRDejQ4bHNBSWhhWjNvNVpTNU5RSEhNemR3dEphdDl0bWdaVTlibkU4QVNBcnR3d3VBR0E3dXhDbnFKc1h4cGlQQ2cvVnQ2SnV6bVNDY0pCdEM3V0t1ckdUNXErWVhOeUtYZURJU2x1VnIrUys4RmRSTjNZaS9UMVh3ajIvakRGSE1VMUtTMXZ2TERpVklNU25qSVBUdG83dksxSzFweWVLZ01OS1o3dXQ3Wng5MGRHcUxPeEwwQWR1UEd1cjhpdkhNcmg5SlR1bFRoUzB3U2N0eC9tbGdqWm8wR2pvdkxJUzhRODc2ZlJEUVR1d3JFTVd6NmgwTzJZU2VZUXpKYWt5R2dWdEdLeXR5azh5NW51czhMNTU3dXFGWkR6d2RYMXljUnRaZ0hja3o1U2p5Tk4wMklMaGwzSytVMkg3K1JjSmZaNVVOREdQdjl1cVBOOTI3NUdBaEEzVVBnM2JNbThhbVlEL21zTzhpUVFoVWc1TzIzdjlPWE5nK1NuYU50NFNDVVhkdk9LQjdsVTBCYUVqcWZWQk9pb0FBQUFBQUFBQXlZbzY0TEJDb1IzbnJtUXJYelMwQnh4SW53UUFBQUFBQUFBZ2RVa0VIRllvc0ROYnRBV01GUWNjU0VjRkFBQUFBQUFBSUF0SkJSeFdDRHlNRi9zS2ZJVUJoK2gyaVFBQUFBQUFBQURBSEVrR0hGWUlQQXlTeEFwOFJRR0hhSGVKQUFBQUFBQUFBTUFjU1FjY1ZnZzg5RHBwcS9KU1lic20wUkJ3b0U0REFBQUFBQUFBZ0p4bEVYQllLZXJHcHJpNTBOR2F4VFJ0VlI2azlxRVdEamdjdGxYNWZjSDNCd0FBQUFBQUFJREZaUlZ3V01rMDhKQjBxcCtGQWc2ZjI2cDhzY0Q3QWdBQUFBQUFBSUE2V1FZY1ZvcTZzU3Y5ditsb2pUODVwUG9KSFhBZ2ZSSUFBQUFBQUFBQTNKVjF3R0VsNGNCRE5xbCtRZ1VjQ0RRQUFBQUFBQUFBUUQ4Q0RoMUYzZGlVUXpkcUdqVGQyN1lxejJOdC9CUUJBZzdVYVFBQUFBQUFBQUNBTFFnNGJMQndFZUtwa2l3SVBZVEg4M1hWVnVVclQ2OE5BQUFBQUFBQUFNbDR3S25zdDBxZFU5VE5iMlBNbnNJbTNrR3FIK2V5RGQ0QUFBQUFBQUFBd0JUc2NCaW9xQnViVHFmVTFpNENEZjl4dWNPQll3b0FBQUFBQUFBQTR4RndHS21vbTB0anpMR0NwbEJUb01ORndJRkFBd0FBQUFBQUFBQk1SOEJob3FKdWpvd3hYeFo0YTJvSzlKZ1pjTmh2cS9LM3Q4WUJBQUFBQUFBQVFBWUlPTXhVMU0xRFk4eE5nTGU2YmF2eVlZRDNpZExFZ0FPN1JBQUFBQUFBQUFEQUVRSU9Ecm1zSTlCRnFwL2RSaDc3azdZcUw1ZHFLd0FBQUFBQUFBQ2s2QUZuMVoxVllNQmhnV2xTL2JoRm9BRUFBQUFBQUFBQVBHR0hnMGRGM2RoYUN4Y1Qzb0dKOFpGMjdIRGdlQUlBQUFBQUFBQ0Fad1FjQWhoUjUrRnpXNVV2b3YvQUM5Z1FjQ0RRQUFBQUFBQUFBQUNCRUhBSXJLZ2JteUpwYisxZEtRZzkwMXJBZ1ZSVUFBQUFBQUFBQUJBWUFZZUZGSFh6eGhqem5vTFFidGhBRGtFYkFBQUFBQUFBQUZnT0FZZUFiSkNocmNyemJENndKMFhkSEJoamZyS0xBUUFBQUFBQUFBQjArQi9uSVl5aWJyN2IzUXc1ZkZhZnBCYkdOMXNQbzZpYm8zUS9LUUFBQUFBQUFBREVnMkJEQUZLdm9VeitnNGJSTGJyOXBhZ2Jkb29BQUFBQUFBQUF3TUlJTm5nbUJZelhDME5qZ3JWaTBDdXZaZGNJQUFBQUFBQUFBR0FoMUd6d1JOTDkzS3kvT2tXaHA5a1FhT2k2cFVnMEFBQUFBQUFBQUN5RG5RMGViQW8wWUJwSlE3WEwzb0NBQkFBQUFBQUFBQURBQTRJTmpoRm9jRXRTSkExT1EyVUREbklPQUFBQUFBQUFBQUNCRUd4d3FLaWJ4d1FhM0NucTVuSmlZZTBiT1JjQUFBQUFBQUFBZ0FBSU5qaFMxTTJCTWVaSEVoOUdnYUp1WGhsamptZTA1RWRSTnkrU09TQUFBQUFBQUFBQW9CakJCZ2RrRmYyMzZEK0lFaEs0dVhEUW1vOUYzWndtY1ZBQUFBQUFBQUFBUURHQ0RUTkpmUUIyTkRnaXg5Tmw0T2FkcEdNQ0FBQUFBQUFBQUhoQ3NHRUdpa0Y3NGVONEhrdWhhUUFBQUFBQUFBQ0FCd1FiSmlMUTRGNVJONjNIbHkrTHV2bTkxR2NEQUFBQUFBQUFnSlFSYkppT1FJTkRuZ01OSzN1QjNnY0FBQUFBQUFBQXNrS3dZUUltck4wS3ZlT0E4d2NBQUFBQUFBQUFiaEZzR0ltSmFyZWtsc0xlQXUvYlNpb3NBQUFBQUFBQUFNQk1EemlBd3hGb2NLdW9tMHRiUzJIQkp0d1VkZk9rcmNxZkM3WUJBQUFBQUFBQUFIWXE2dWJJR0xQNjgzVEVFZnRsakxHTHZyOGFZejc1bWc4dDJwYjU4eUZjQlJyYXFpeThOellDUmQyOE1zWmNLR25wWVZ1VjN4VzBBd0FBQUFBQUFBRHMvT2xqWTh5NU1lYTV4Nk5oZ3hDbmJWVmV1bmd4Z2cwRFNFMEJKNmwrQ0RiOE9aNEh4cGh2Q3ByU2RlTHFTd1VBQUFBQUFBQUFZMG5hZDdzbyt0RkNCMi9XSENuQmhoMmtwb0N6VkQrNUJ4dmtDM09qb0NsOTNyWlZlYTZ2V1FBQUFBQUFBQUJTSmVtUnZpajZlRmR0VmI0YSswc0VHN1p3SFdnd0JCdGlxSHN4NllzRUFBQUFBQUFBQUdNb1g1aHRuYlZWZVRyMGh3azJiQ0RGaTQ5ZHYyN093WWFJQ214ZnQxVjVwS0FkQUFBQUFBQUFBQkpVMUkzTnNQSjY0aWRySk4zU1R5bjZiSDF2cTlLV0ExanRsTEJzTU9OZ1FrSHBPNGJPYVJOczZPR3plSEd1d1lhSUFnMHJUVnVWQnpxYUFnQUFBQUFBQUNBVkkyc0UzeHBqM3Jpc055czFkVTlIRnA4K2JLdnkrOWJYSmRod2wrL2l4VGtHRzF3VzJBN3N0cTNLaHhHMkd3QUFBQUFBQUlCQ0l4Wmx2MnlyOHBQdlR5Q3BuRDROM1Btd05lQkFzS0dqcUp2SHhwZ2ZQdDhqdDJDRGo3b1hnUkZ3QUFBQUFBQUFBRERid0VERGs3WXFmeTV4dEl1NitUb2c2TEF4NFBBL1A4MktqMFJ3dkFZYWNpTjFMMklPTkZoN3NqTURBQUFBQUFBQUFDWXA2bVpYQU9HdFhhaStWS0RCL0xkUTN0WjIyTi94WXh1ekFoRnMrRWR6MWUvb1NOMEw1d1cyRjdJWFljMEpBQUFBQUFBQUFBb1VkZlBHR1BOb1MwdjIyNm84MTlCV1cyUmFzdk0wbTM1bTAxd3B3WVk0aXhlckpuVXZ2QlRZWGhMWENRQUFBQUFBQUlBSjNtLzZGZG5Ob0M2elNsdVZkbzczYXRPL1MxYWJPN0lQTnBBaXh5MUpSK1d0d1BiU0NEZ0FBQUFBQUFBQUdHcmIvTFAyK3I1dFZkcnNOZGNiL3ZsZVZwdXNndzFTdkhoUFFWTlNrbnc2S2dJT0FBQUFBQUFBQUhhUmhkbWI1cDkzMVVaUVFlbzQzUGExWmIwT1JiYkJocUp1UGlWUXZGaVZuQ2JoQ1RnQUFBQUFBQUFBMkdGVHNlY3pqYW1UTm1tcjh1R0dmN3BUaCtMQllpMWNrQlRrZUo3alovY2x4OGwzK2N6N01kMFlBQUFBQUFBQUFBVFR1NnVocmNyVG9RMlErcmgyc3Y5SS9saFBSMzRBVyt6NTA1ajM3WEZtakhuWDA3NUxTYmRraXJiTmE0NVlUczVpTlFXMDUrR2FRdktPNVp5T2lvQURBQUFBQUFBQWdMK0t1amszeHJ6dU9TTFAycXI4T3ZSSWVWcmtQYW9OdTlxeW12UE9LbzFTNnNXTGwwRGRpejl1NU5vQ0FBQUFBQUFBQUxNaDBHQ21UUEo3OEVYbWRjZDYyL2Z6UmQwOE5obldiRWkrZUhGSWRvc01kUy8rSXVBQUFBQUFBQUFBWUp2ZXlmcUZsRkxYZUxDMktzODMvT3lmdjg4bTJFQkJYN2VLdXJGNXVJNVQra3dPRUhBQUFBQUFBQUFBTWlkenAvZHNtYXhmeXBTNnhyOTYvdTdQNjJRUmJDRFE0SmJVdmJoSTZUTTVSTUFCQUFBQUFBQUF5TnViV0Q3OWhIUktHejliOHNHR29tNStLbWhHTXFoN01RZ0JCd0FBQUFBQUFDQmZmYW5uUHlnOUdxUFM1TGRWMlp0NnlkWnRlT0NzU1FwSlRZRkhLWC9HQlZEM1loZ2JjTmh2cS9KM0RJMEZBQUFBQUFBQTROV3BweGQvdHVIdmo0d3g3d0tlMGxmSkJodW9LZUFlNmFoR0krQUFBQUFBQUFBQXdQaWFJMnlyOHV1R2Y3Si9meXBGb0tmVVp0aW02ZGtSY1pSa0dpVnFDcmhIb0dFeVVpb0JBQUFBQUFBQW1TanE1a2pUSjIycjhzV3VuNW5RNXI1VVNrK1RDelpRVThDOW9tNVltVDhQQVFjQUFBQUFBQUFnRDZxQ0RaNzA3cVpJY1djRE5RVWNrbXJrZThsOG9PVVFjQUFBQUFBQUFBRFMxemNIMktUMHFUZWxia29xMkVDcUg3ZWt3UGFvYXVUWWlvQURBQUFBQUFBQWtMYURuay8zTTRkem5reXdnVlEvYmxGZzJ4dDIzZ0FBQUFBQUFBRHA2bHRzL0gycFR6dHc4Yk9UdWZVa2dnMmsrbkdMQXR0K3NRTUhBQUFBQUFBQVNKYWFUREd5b0h6bjR1ZTJLcDBFUXg2NGVKRWxGWFZ6U3FvZmR5aXdIWVlOT0xSVldlVHdXUUVBQUFBQUFJRE05ZFk0Y0VIVHd1YW9kemJJQ3Z4M0NwcVNFdEw4Qk1JT0J3QUFBQUFBQUFDcGlEYll3QXA4OTVqOERvOWpEZ0FBQUFBQUFHQkJoNjdlT3VhZERhekFkNGhKNytWdzdBRUFBQUFBQUlDa0hTajljTGV1NmpXWVdHczJNRG5yVmxFM1RxcU5ZenA3RHRxcUhGSVpIZ0NBaldUbjU2b1QrMWorV0EvWE9yZFBGUnpGYTJQTVQvbnp0YTFLYnpsTWdaUkphdGxWUC9LbzgxRzdmMjhVZk85dmpUSGZPL21LK2Q0dnFLaWJJN2xlVnM4SDM5Zkh0Znd2NXg4SVJMN25xLzdnNnZzZXF1YnB2ZSs4TWVhM3l3bE5JRUlhNS8xK3RWWDVlTURQRFZhMGJWeno5akl4dnFlZ0taTm9Ld3BjMU0xM0NteXJjVXZBd1oraWJ1ek44OGZDelhqWlZ1V25oZHZnVmN6SHVhZ2JPK0g1eUUrVEpqdHJxL0pVV1p1Q0t1cm1xNUtKOFM0djUwVytQNDg3RTRTclNVTnRueitrejhhWTgxUW1wR1RRLzBWQlUvRFBkVnVWUjBzZEQ3a21UT2Y3bnZ2MzNnWWtMbzB4bjVpSW5xK29tMWZHbUZjUlhrL1hNakVaVlVDaXFKc1h4cGlQQ3BxQ2Z6NjNWZmtpNWVNaHo1RVg4bDJQZGE3c1ZyN3puK1QrdjlpQ1dDVmp3djBsajRFdnNpaHE2U3cxemlmV045a3dqcDA4anZTdzhQNlg3WGUyVmZsenpvdjB0U3VxWUVOUk4vYkc4MXhCVXliVEZHd282c1oyNUk4Vk5BWC9ORzFWYXQxV0ZUVkZPNktTN0Rpc3hIcWNsUWV5c3d4RXlrcGR0YldaeGo3UHBYUDlLZlBBZ1N0WHhwZzNNZDVMMloycmxwZjdyRXdBbmJPd3g0bnNnKys3eUVUM213eWVNL1laY0trdENLRmtFZzM5RmcwcXV5UUxVMDR6bThlNWx1LzhwZTgzMHJUSVNkdENaUmNVOVlPRHpMdHR1SjRtMzQ4R0hMK3pUdEJ1NTl5R3EydXNyMTNScEZHU1ZSbFJCeG8wa2VOSm9FR2YwZ2FCMnFwOGxmdUJjRWttTGJVNGxZRmdjanFyTXpWNEk4ZDZLTTNCaGoyN0N5M0RRS1RhUU1ORVRFQzRZL3N2eDBYZEdGa0o5eXFHWFdQUzk0Sk92dTcvN0dKeDUxMVJOKy9rMVJyNTNtZWRpa01tdDg4ekhOTjFud0Vyd1NZanQwaXlmNStJcUFOd1JkM1lhK3U5Z3FZc3haNi9wMFhkWEhUZS83TThCMXd2UEdGUlVCNUNMUUxwQ3paNHU4WTZpekllRGduc0ZIVnpPbmNoaC9SRjdvbWlRTFJNRkY0TStGRndQRk53TEx0TzRJNm1WZUhzWEFsamJPQkQrL2JxVWxZeVpZRjdJRWF3azhRZmJZZmFibnRYL2ozSjVqdE1uTG80QUFBZ0FFbEVRVlFNZFFINDFOaEpnbS95dmM4dTFaSjlSc29rd2cyTHgvNnlremNYY2sycy9wd0hiZ1BmZVRoakZ5aXNydVhNQXcyYjJJWElOM0tNU0VVTnJaYnNvNXdOK0psM0EzNW1sOTU1RlBYQkJybHhwTGE2Y1RFY3oyZ2Nzd0lTQ0NlUzFaRkwxOElJU2Z2a3lVc0ZiY0I5TnIvdUR4bDQ4Z3dGOHZDME03bWNiRURQTGhiclREd1NZQmptdFJ3ejBtOGhHblkzczN6UFdSdzZITHVIb2RLUzZmNkc3bGlRZE5KejlBVWJibVBZMlpEU2pXTmZRUnU0RWNmalFsbjZIeUIxVDdSL3ZoeFc3c1F3S1pCNm9mZEVYQkIwQUxMekk3V2dnOTBoSXhPUExCYWI3aDFqS21obSsvZDJ3aysrNjlUNG1jREJoQ21Rb2lGejBIc3pkK1AybFR2NHBEcllrRmdSdmNXTHdpWjJQSDhwYUVNSTM5Z1dDSVRSVnVWUHlmK3UyYzhNTGdjWDJ6bDlVaCtVd2gwWGJMRUhzbU9ERGxFL0wyWHlzYVh1aHpPaFV5b0JnOGk5NmtaeDdiaFljUHdRalZDTG9XUU8rdk9BSDNYZDE3aFVHMnl3MjhjVU5NT1ZKd1FhbkxLVjQrMktwYXVFUHRNMjdFWUJBbW1yVXZ1RTVGN0trNllSN0dxNGxhQVU0bk5ETFJBZ0s0OGswS2k5SnRNOVVvZUMvcjliRkgyRktyYlBLM00wanpnelFIYUNqWG5icWh6VUR5cnFadlRPL1UzekVqWjlsTXBnZ3d3R1U5aytkcmoweEVSaVc4cnNSTStmYmJCdFZkcG80TW55VGZJdnNXQVJvTjIxOHZhbEZJeGZwM3BYUXdUQktHeDN6UE1VeU03SFdCYXhkWFl6TURFT0pFem1aN1R2NUFYZ3hvZWVWd2tkWkR3YzhEUFBKeXhxM0xoclVGMndRVmFmcEZMMDZuRHBvcVBTdVU1bVM5bjZSRTlibFpjRHZ6alJZNElFQ0tPdHlqazVDME5JY2dWVUJMbjF0UWVoTUJCcGxZRHNsTnI3MFRJR1pqY0RrTEJWb1hkUy9nQlo2ZDNGRUxLK2xNeExEMGxGUDdZZjBqZDMveWN0dGFwZ2d3ejhQaXBvaWdzYUFnMHA3UkN4WDVCaXc5OS9WMUo4MnpzS0h3SEJuR2srMUxIbm90N2dRbVdyUkFSQktJeHpROEFCeUl2V2dFTlJOK2NKallFQjlKQkZOUlI2QnpLekphViswUGxpU1VXL1UxRTNid2IrM0tiWCsvUDcyblkycExLYVEwT2c0VlZDTzBRMkJobzYvLzU3MTg4a1lpK3hlaWFBU20xVmFxOGRrTlR1aGdoMk5mUnRmMFg4Q0RnQW1kRVdjSkRGWWE4Vk5BV0FKL0k5Vjcyb0JvQlhmYnNLbHRqaDlITEF6N3dmK0ZxOTg1S1NmVVpQc0NHaEZERWFBZzBIaVQzTUJ1OWF5Q1RnVU1vS0tBQitEWGtZTDBZS1NLWkMrNjZHUVNzOEVDWFNsZ0NaMFRMdVRHMXhHSUQ3Sk5EQTl4eklXKzhPK2REWkN0cXEvRFFrZzhPdUZFK3lXS3N2V0hLNytuOGVURzJrU3dtbGh0RVFhSGlZMlBhOHd5M2JqbnJaZ0lOY1V5bm5Rbnh0cThYYkt1OEsyZ0lreVQ2TWk3clIvTkdTS0NCWjFJMzI5RVFuQ3RvQWorekVZeWFMRlFBSXUxTzRyY3FEcFk1SGdvdkRBS3dwNnVhVVFBT0F0aXAvYnBoWGVHVG5jSWZPZWJvWXIwZ0doN2xaSERZdDF2bzdybDk4WjRPZE1FMWtVdmhrNlVDRFNHbUYzc3VweDFRS1NkOE8rTkdZZlNIOUErRGRFODJIT0pIZERWOFV0R0dqMVZaUXBJMFVoVUIyeW9WVCtKRzdIVWlZQkJUZmNZNEJpRTBMMktLYXc1VWdhcS91L08yaXdRYnA0RDFmc2cyT25HaVlqRWdvRlpWMUpsdDhKcE9BZytwbHlRNlEvZ0h3eUs1Q1VCNjRqSHAzUXdTN0dsUUhtK0JVS1JNREFQS3h5TTZDaEhiMUE5aU1nQ0tBdjdiTkdjZXk2RWtXTzI4S29qN3Ivc2Rpd1lhRXRvNFNhSER2czZ2aXJMSTkrck95eitkVVl1Y2VVRWNDbDJwSkx0aFlhZDdWY0N2Qkp1U0RpUUVnTTZFbi9pWElubktxVnlCN2pNOEJiUEJzdzkrWDJzZjBFbWpZdU5oNVBjWDdranNiVWhqUWFRazBwTFE2cG1tci83TjNiMWRTRzJ2RGdLVzlmQTlFQUVRZ2lBQ0lBSHpkRjBBRTRBaUFDSXdqZ0xuUXRTRUNRd1NnQ0R4RUFCT0I5aXBjWTQveEhQcWdWcjlWZXA2MTV2Zis5cjg5VXkxMXQ2UjZUOTJqS1g5aC9uMUhVLzdPYUdSSXdkNTlESHlJaSt3RlcwQlZ3NldEc2FoVDRjRTdZSFBYcmhxRU9MSFFyUU9CM2VRMjRRRC9rVGZrTCtxYThEanE5OGRWZ1lhbWFXNzgrRjhjSk5oUVNhVDNWWkJBdzRlS3NtTk85aldvYlZ4MVR5b2Y4bm5OQmduc3o3anFRbStNRi9yNWo3emhNcXc3cUl2cUdPUUl5L1BuSEsvNHdETWlnRDNMRzNJMXRBa0g5dVNLcmdrUG95VVN0LzN3L0lwQXd5L25QVGZQSG15b0pBUDdhS28yUDd0bysrRjE2ZjI2ejlwM3E1SWNIS281NFBDNGdFeGhLTmx2Z2RkZTFBYnB6Rm1rRzl0WDRKc3lDTjdEOHN4MEQxMURDMkhnWXVZcEF1djRUeVhBR1NtUmVJeVFvSkQzNzMrOTVIK1NFdlJlbi9mL01XdXdJUSs5S0QwTC95aG55UjlVZnVNOU8vUTZwakt1dW5hbXY1TTJFTzdPOHFJTzQ0K2NVUUZNYkZ4MXp5TWYwN1lmRGg0RTM4QXNXYVJicXJydEhtdFIzUURMczlkcU93UG9vVzZTL29CMTVVcUFxL1lsMytTZ3c2UnQ1dGZSOXNOeDdraDAyZjc5cFoxcFpnczI1TktMYnE2L3R5Y2Znd1FhYWhtdS9kMWNnWVl6Zis5ejVRRUhHUld3UDVHcm8xNEVXTU9WQ3FocTBPWUM3VTZBcVgxd1JLRnE1ckVBYTl0Z1gvTDNISFI0dDgvbjZMUm5uLzlPQ2pMY3ZPSi9QbHpWbVdhV1lFUGVITCtzOUtJRVE0U2UzVGxydlliaDJxY3VLeC9hbTlvRERnWkd3MzVFbU5Wem1SellqKzV6NFBYVjNHcVB6V2gzQWd1VForSHRTeTB6OW9BZlNGQUF0cEgzSmRmZEUwM3pZUDQ4RFFpa3RxL2JWbFNsUGZyVUZlRzBnaUVIR05iZHMvOXRuWmJEUDIyenNFMVVzamsrQk9yZlhGUFcrdDFERHVCTUgreTJIMjVVV2dud2ZXQzBERjNZaTl1QjJ3Q2xtNFJ6K3laR2tPOEp3bTY0UkE4bUFiQlhlNW1GZDRnV0NNQ3NKQ2dBVzhsN29tMU9lTmprUHVSeG50czY1NEcvc2U0ZTdoeVZEYVZ2NUY3YWgycE9PZHBVaTZjNWluZFErWU55a09xS0dUeldIeGFtTjY2NjQzUnRpSHBvZzJkWEhRZFl3MFZxYnEvSEZ0cCtDQnU0QS9aalR5MEtTcHFwQkd3Z2VudFFvQXk1azA3VXZjbFhxZjM5SnNuaWV3MDIxTEE1ZmxVZnFybFUxaGJuS0ZMMmFPVUJoNXBhYmtFa2tSOHNRbVpYQmE5cU9Ja1FBQ2VjWjA0SkxNNCtnb3lsenkwRUx1YitFWmhFMnB2TU0yM1QvdVNYQUVmMWx4eGsyRGhwWW0vQmhyWWZpdi9Tblh0dzhVVlNINjJLK253T0VWdjcxQnh3cUt3aUJrTEkzeG16MWl4dVl0ditqWHNXdWFwQlZob0FUZTZKVEgwK09xZnNpWGtzd0tSeTBPRlczcE9lZTZiZ1VRNHdwSit0RXpEMkVteElneVpLeitBSUZHajRzTVlrOEZLRWFVbDFuc29ERHZzY2VBZUxGUG43ckdtYVB3S3M0VWRSSDhhK0hISitFTEVGRGR3QmhkRFNOQXd6bVppY2RvdkF2cVd1TUdjMi85TSs5UzhUQjlDUG1xWjVjT1p2VEpJY1B2bUE2SHhEOVdMcTN6dW5RSUdHMS9zYVZIWUlVVnBTWFNadE9GVTZOUHBlK214cUV3S1RPOHJEbWNKSm02VGpxZ3NSYU13VmVpR2xySkdvYXlPRWxFQWo0QUFMa2dZNmo2dnUzVVN2MkhEb3d6dUoxTUtYcW1pM0dNZlIwZzhBeTVDckRTNE1kRjZRS0hXYzUwN09adkpnUXdVOTRrTmt0dWNCbjlWY3ZLSUVjTlpSY2NBaGZUYUxPUTlRZ2hUNWIvc2haTEFoVnpkRStjeEhyZEJiNm9QSmd6Mys3dnRuL25tbmd2WUMxU1I5Y0ttNVM5VG5kclRuek82em4vc2FQalBQbTZhWkt0aFFXckR5UzM3dG40TzNQMXpIN0pzcmhIWFhxYmxTeXBUK2tELzNSWDF1b2lSWFFRUlJQZytUQmhzcTZBMS9OMElyaFZ3ZEVuTEE1elpLQ2pTY3FqWGdrQWFObDFCaEFvVjVHbmdvODYxRFAyZ0hyMm9JTjBOb0RudStDYjN3ZDZkczRWd3BZRmpxNFgyODdGd3R5UEZDTXA2UEQvaTVmNUl6OEVvS1BFNFpNQ2toK1BMTExuMlpDZW1vZ21EUkZENVBXS1gwTDdsMWVLbDg1b0c5bWl6WVVNRkE2S2NSV3N5MC9YQzlndXFRczRxZGdWQnB3T0ZhdWpIYVpwbzhjTDYwVWRYMlE5UUE4WjhCcWh1aVZqWDhFbUFOaTVJZitMOC85T2NTMzRpelJaYmlnM3NCNXBDRE9kOERPam53VUUxQ1ZRViszdGRHTEFmM1ZyYjMzcFhXT3Z5cGRtTEFYQ1laRU4zMncvUENzOVNPQW4zeDFyU3hIYUpTWkJlVkRvMStrWU5hd0hUQ2xtZW42b1lEL3Uyd0Q3b3l1ZzRyYllMa3lzZDl0blNhaENIUk1JM1RJWWROMDd4eVNBOHJENEVVYUlENlBjMmZkNEVHWURZN0J4dnlwdVd2QloreUlVb2JoUXJhVUowVm9sSmtDam5nVUZ1Zng5cm1VY0JCNWUrN2s2Qm40WkRmeFZIYlI0VGY0RjZLTTBHSHlBeDRoUW5scXByUXlUeTVyVzJWU214eEM1RVU4djF3SXNnQUhNb1VsUTBsYjFxbUwrQVFGNHJVU3ovQU1xYnlXMjBYdGJ5UldGWEFvZTBIMlV3d3JZTlZFRnpoMmlHcW1ZSlhOV2d0RUV6d3pTL0JCcGhZU3VieHVUK0lueXQ5WFRDbjZHMEkzNXZUQ0J6U1RzR0cwdWMwUlBrQ3pzZXhwS0ZwbDBrWHR1ZHhsN2U5SEhDbzZRYjlvWFpLTUoxY0JmVWw2Q0U5eEpEQXFGVU50YlhHcTBiZ2pjZW9jMGVnQmxHVGVhcHNuNloxRWt6aVllRERtUFpqSkVrQUI3VjFzS0h0aDBjbHoybUk4a0Niczh0TG5uZHgxbEQ3aFMzZm9EOE5zSlNwYUtjRUV4cFhuZXFHdjY1dFVhdmJ2cFErUzJnQkRPNkdCY25KUEJFRDlWRUQ1cnQ0WCs3U2dUV2NDRFFBRWV4UzJmQjd3V2N3UkFaTjJ3OHZnMGZGTnhHbUpkVys1UlpSUjdXOG5zQ2JnbENxcU44UGMxWWpQcDd4YjYwdGNEQ0l6T0J1V0I3ZnpiUHgvUW9WMHpvSmlHS3JZRVBoZzR4ZlJSaGNuQ3REWGh4NkhWTloyb1V0RHhVZkFpeGxDbysxVTRMcDVPK0hpR1pwQlJNNGdGbE5rSGdCZmx2NkFZQUZPbkhTOTh1OEl0aGQydzlSNy9NZkJGZ0R3SGNiQnh0eU5uNnBVcHVmZzYrLzdZYzdoVmVHL0V2dzRXNTdreXM1b3ZabjM1UjJTakN0a08zVzJuNllZM1pEMUtxR3FBK0gvS0RXMlUvQXBYeEhBeVVJK1YwbG1BaEVzazFsUTdIWitCSGEvT1FNOGsrSFhzZUVGajFvczZheTc4QlpHbENjM0c0dG9yMVdOd1JPU0hnVllBMEFYTURnWXFBUUVlZTVxR29BUXRrbzJGQnkrNlJBMmZjMVpaRGZNR2l6cXNxT053SFdBRFVKZWVQZjlzTStNNTlDSmlSRXFHcGtZNkVxQjl0K3VCOWdHUUFBLzZLcUFZaG03V0JEMnc4bGw3U0hHQWhkbWJzQ0RmK29KZUN3NTAxSVdKVEFOLzU3eWNnS1hOVWcyNnRNVWF1RGdQMHh0MkdQekdpREtwbHpCWVN6U1dYRHI0V2V2cU1JQTZFcjh6VFNNYzB6TUNLNEhXUWR1NGhZRmdvbEM5bHFiaytCeGFoVkRZS29aWExlWUhtMFV0b3ZGVnBRR1hPdWdJaldDamJNTkZCeUgwNE1oSnpjVWFSZTVIbk93S01BUzBrWCt1T29RMkUzMGZhRGloV1lTSzRBaXpoSWZ0TEFZdUNaTDR1ZUsxU3lnRUVpbTNTd2Z4TEU5c3VtSk95ZzdZY1ErdzRBMFYwWmJNamxsbnNkS0xrdjQ2cFRLanF0SVZMd0psYzBoSm96a0FNeEh3TXNaUmZYbEZuRGRLSU9rbS83WWNyQWNjU1pMMSswK3dNb2ltRERmcWxnaHQxRUN6YThEN0FHZ1A5WXA3S2gxSUhHNWpSTUsxV0pSR2xYbERiSjB1YmRwd0JMK1k5eDFkMnZvT2RzVFlQTUlZS2pnR2ZoOFJTL0pHcFZROVFnRHdBWEVtellNOFB1WVNmUlBqK3ZBNndCNEQ4dURUWVVmRFB5MFp5R2FVV3FFc2xaOTM4R1dNcUZhcWlxeVFFZFlBSlJXL3BOVk4wUXNhcWg5QW96Z01WUmpUYUxQeGJ3R21GZlFuWDhNSmNNaU9xcXlvWWliMFp5WmpuVEhjODIyTEVzSmV1KzlGN2hvUU02VUtCZkFpNTVwK3FHcUwxcjNRY0F3UG5hZnBDVUJ3RHN6WVhCaHNEREhxOWlHT1NFb2dVYTJuNFlBeXhqTFRrNzYxVUJTNzJRMlEwd25YSFZoU3gxYnZ2aDVRNy8rdThUTG1VcVJYL3ZBbENWTHdGZlREZngzQ1lBZ0w5ZFZ0a1FzUzNDVmQ0cnY1MVVxTUJOMncvRm5kdHgxYjBzZkg2RHpDZVkxb09BeC9QRk52OVMxRmFMK1hzWEFDS0llaS85V0lVREZNMXdhQ0NzYzRNTlVkc2lYR1ZjZFVXdU82aTdrUUkzT2RCd0xjQlNObGI0L0laUWZTbWhkRkY3cTI1WnpSaXgxV0xFWUE0QXl4VjVRejlWT0l4dFA5d0pzQlpnTSs4Y0x5Q3FpeW9iSXJaRnVNcnQyTXNyeXROSUE3WnoxazJSZ1lZejdvWlp5WWFVV2NQa0lyYjcyNmlhTVhCVmcwRjVBRVJTd29iZ3B4eDB1QlZnTGNCNkJCdUFzUDRUYkNqMEptTVlWOTF4Z0hYVTRHaGNkV0UybC9OR2R4ZGdLVHZKd1p1UGhTNS9wd0d5d0wvbHFyRndQWnczckc2SVdOVmdaaFA3SkpBRmV4WTFrTDJMU0FsY2EvZ3pCeDFDenBpQ1E0cjIvYVI5T0JEWmVaVU54ZlZ1SEZlZDBzOXBmQnhYWFpqQjRIbmpxNXFON25IVkZmc0FKZE1KcGpXdXVvaWZxYldxRzRKK0gzengwQVZRUFBlYk1UekxRWWV4MVBiS3NBZStud0RXZEY2d29iUjJOYThDcktFR1h5SnRodWZlb1NVT0tiOUtxZTJVbEduQzlNSU5kbHN6YSt2UEdaYXlrYURCRzNaUVk0WXpjQ1VKWlBIOG5vTU9ueVVmc1hEZS93QnIrbGV3b2UySDU2VWR1SEhWdlF5d2pOS2RSTnFvYWZzaERWVCtGR0Fwazh1bDFPSGFwNnloK0ZaV0VNMjQ2aUptQzE3YUhpbm9Sa09wTGVxNFhMUjJCZG9vd2Y3Vm1rVmZ3M1dxTzlObXlUdzNsa2l3QVdCTlAxWTIvRnJZZ1hzUVlBM0ZHMWZkOVdDdjRXdUFOZXhOcVJtNE9RZ0VUQ3RjZGQ0VkdlWGhXaTJXM0tLT1MybmRBY3R6czlKWFhOc01oTWRuMml5RmFjRUxleWJZQUxDbTg5b29GVU9XMmU3R1ZkZEdXays2YVEyd2pEa2NGYmhtVlVRd3NhRFZlZWRXTitTQVk3UldpMW9wMWt0RkhWQ0ZjZFhWM0k3MFRRNDZIT2MydUFEQXd2MTArdklMYktHa3FtRjNOeUl0WmtHQmh2VFE4YVR0aDlLR1h6OXJtcWE0Vm1zQjNWdlNlNTIxUExpcWZkSGNVcnVrY2RVZC8vQm5mL3kvRDA0clJkamFyYVhOeFpDa0ZKdEJ4TVZMVlNtZjJuNUlyK045MEZhUlMzSW5uNHZGbU9FNy9sNmdZNm1GS0JEYVQyY1dWMVFMSlE4TU83czlycnB2VVJiVDlrT1l0Y3dvWmVTK1dNeXJCYzZWcm1jQkh3alRFT2kvSzkrQ1ZqVklPcWhVMncrMXRSeUo2SEgrV1l6VDc5bG9WYjM4cmZZNUFFY0wrc3c5UEpOWTgwcGl3RUdVMWg1N1ovazcvaVJnaTJpQXhTbTFqZExUQUdzbzJkMXpNbFlQcHUySHp3RTNzZmJPalRkd1JxaEtzK2EvdzZBalZqVklPcWpYczZVZkFQWkhqL213b2owTFRKMDV2TlRxNEJlNXpkSTMxU3ZNNE5vUDk2KzFjZzhNaFBZOTJGRGFGL0s0Nm1yUGZObW5wK09xQ3pQZ3MrMkhkd3Z2eTF6aTdBWmdZcm5TN0V1dzQzcjJXaEZ0RStoMmdEV3dCMEdyR3BiVmk2SitobndHRTdUQ2VkTE52RWdWNVFlUzdpTit6NEdIejdsaUV2WkJRQm5nd0U0ckcwckt0UERBdDcyalNJR2F2S0h3TU1CU0RpYk5iaWhwdlV2cjd3eHpHbGRkdEEyd2xCMTJQUTE5RExDV3MwNGlWZWN4bmJ6NUZMR3FvZWJocm5CUXVkSWtZb1h6UGo3M3IvYndPMHVVRXMyKzVzQ0RKRUlBcU14cHNLR2tjbldibmRzWkltMXM1d2NMYlJJQS9pM2F3TGZqUFBReERMMTQ2NVFERFYrRHZqanRDbUFQMm42NDB6VE5tNGpIZGgrVjRGcW9udXR4RGpxTVdwekIydHlYQUtFVk43TkJDZXBXVWhib25TaUxpZnhnY1NDL0xQSlZBLzh4cnJwb0FmWGFlMmdUUUs2YWl4cG9NQjhFOWlCWE9IOWE0TEYxSGJ2WW14eDBPRjVJMzMwQXFGSnB3UVl0bExZUUtRczBaeTR1OGNIaVF1T3FpOWlmR2pnY2JSWXVFREFZd3c1eW02NlVSUEtINHdqTGtJS0xhVU41cVJYT3JtTnJTUldWZitiQWcrY2tBQ2pNVDRXdHQ2VFpFaUdNcTY0TnRxU3dtWXNBRWFRMkMyMC92SEF5L2tNUXBnSTU2ZUNsVm9xd0hEbEx2YVJaYmUvMy9QdVBVdnVnUGYrTldqeHIreUZkTDc0MFRYTkhsd01BaU8rbmtnYStLbVBmVExSQVE4NWlBdUJxRDJSNy81dGUxMlhKOTVkMzhzLzlhTE0vTnZCYk1TdUZBOG9CaFZ2NTg1NSs3aFY4UHZhYVRaL202TFg5SU5pd21adDVxSFQ2bDI2UHErNjRvTFVEd0tMOFpPQnl0VzVFZW1FQ0RkV1lmRmdlOEY4cHVKNGZxUG5MejQ3RGRGeVROeUxJUlExZXFKaGIzMHdKYnJkVHE2QVovazZOL3N6M1NEZFVPZ0JBUFA4VGJLalMzVWczWHJrZk14VndRdyt6dXUxdy8yVmNkZThpcklQbGNkMEQ5aUZuNWg4NXVEdjU2amtUQU9MNVgrRWxydnpYMDNIVmhjaytiL3NocmVWYWdLV0VsZnRYQS94TDNvZzRjVlFFWFRpWUx3NDlMTTVzcmROU095WFgrWjFkTTBpYXBkRmVISWp1ZndXZG9ZOEIxaERkMGJqcTNrWlpZOXNQYVMxZGdLVkVaL0E1Y0s1eDFTMDlHSG1pTHpNSDlNakJoMlVaVjkyczkrV3U4NU41cGtVZ0FNUlFVckNCeXcwNU95YUV0aC9TamJyQlordlJReGU0ekdLRDdUWmhPS1JJbGFKQXZjWlYxenE5MDhoVkRtR2VpUUZnaVVvS05tajNkTEV2NDZxN0UyVXhiVCtrT1NDL0JsZ0tRUEhHVmJmVTJVb3FHamtrN3o5WW5xZUhlc1U1NEtDbDBqVGV0UDFnMWhNQUhJaktodktsRmhPM29yeUt0aDlTME9PUEFFc3Bnc3diWUUydmxuYWdGaHhrSVFEdlAxaWVRN2VqemRWOEFwM1RlSmhuQndJQU14TnNLRnlrRmhONTBQR25BRXNweVp1QzFub1VZQTJ3U09PcWU3bXcxejNiZ0U0NGg4SFFzRHdoN25Oem9QTkJnS1hVb0JOd29FYTVrd1JBV0VVRkc5cCtNS2p2aklEOVBiOEdXRU14Y25DbUpHR0dqOE5DL2J5VWx6MzNnRTc0NGYwWHBtSVVtRWVrMlhmanF2dVFuL01FUG5jbjRBQUFNeXV0c3NGbTV6OXVSRmxJazRkeEJWaEdhWTVMV205NjhBbXdERmlzY2RVdHBmL3d3WHBtZ3hZbXNFZ2hXeFhtd09mdEFFc3BYUW80U0dJQWdKbVVGbXk0Rm1BTkVkd2RWOTIzS0lzUmFOaGNybXJ3ZmdZMlZmMm13NkY3WnJOc1pqWEE4a1J1VlRpdXV1TmM1YUMxMG01K0xiQ3FIQUNLVk56TWhyWWZscjRKOFdCY2RXRktRZHQrQ0JQMEtFeFJWUTFBREduVG9XbWFrNHBQaHd4T0R1bXVvdytMRTZwYS9DSm5XaXZkcnZ3K1lKKzAvQVdBR2Z5dndLR3Zqd09zNFZCK2lkVEtKdmUvbEoyL29UelFxYlRqRnJLOEhKWm9YSFcxWnVhZDVHQUtITUw3U01rY3dDeCtpVlF0dm81YzZYQTlCeDVLZTQ0L3VMWWZYaS84RUFEQTN2MnZ4RGtJYlQrRUxYWGRvNk54MVlXNU9jb1ZKbDJBcFpUb2o5TFdITG04SEJhcXhyN3lodkp5S0NuUTljalJoMFVaSWoxYmJTTU50YzVCaDFTZE1aVDNDZzdpMlFKZk0vWFJFZ3dJN1grRkRuMTlFV0FOYzBvM3cwK2lMS2J0aHljTHJ6RFpXdHNQU3hud0N1eFJoWDNsaDlLeVM2bEh4ZFZDd1BuU05lZE9MY2NtWFQvVDY4bUJoN3ZhTEYydTdZY1M5ei9nckdxK3Y0QTZGVGV6NGRTQ2JoSk9JdDBNdC8yUTF2SW13RktLazRlU1BTeHc2VEtsSUtacTJwdlZ0T2xEVVU3eTVoeXdIRlVGR242VTJzR2RhYlAwTk5icXdyaTM5QU1BeEpmMzNxcVIyNGxIOGNWSFlMOU9ndzBsdG1OWXhFMUNwR3k3dkZuK0tjQlNTbFhxVURLdEpTQ2dpdHFiNlRuTklRd3FHbUJ4anBZVTNCNVgzZHNVZE1pQmg5OENMQ21NaGJabHBoN3VYL1luMHQ2bzg3dy81Z1R1Mldtd0lVeUxuazIwL1RDV3M5ck5CY3kySzNXei9PQkticDlrWUN1RVZueldZcVEyZ1N6R0w2cHBZSEh1THZsNk02NjY1MmZtTzlRNDkybFRTMnZMdkNSTDZJRGhIZ1lJN1h1d29lVE54RHcvb0RyUkFnMjFCM2IyS1plL2xkZytxWkZ4RExHbHJNWENUNUVXRDh6cEpHZjVGajBVbHQxVVZCWEdlcjdrei8xbngrdnYrUTczelhlZ1ZvWE9KSVh6MURhanI3Ylh3eVhPem13b05jT2h4dmtCTndLczRXOENEVHNydHZXVWpHTW93dTFTVDFNRndSTEs4VURicE1WN2IwYkg0dHdlVjkydHBSK0VpeXg5dmtQYkQrNUI2ckx2Ny9oSSsyWG1qdXlQWU5VeU9NOTc5dE9aWC8rbzFEWTViVDk4cStnQk1wWDRmZ3V3anUvU3NRMndqR0lWZnZ4a091MUhHa1pVNjhOTmVxQi9IR0FkaTVLcUU5dCtTSi9YYTRXOTdyc0Ixa0Q5bmdwcW5ldVZESDhxZGxzYjBNM2s3OG52MzVWdFA2VHFyMmNGTFg5YmowdHRKNzJHQnpMOG9YZ3FHeWpXMzhHR3RNSGQ5a09wcitOYTJ3L1BLeWlMZnhxcHhMZnRoK01DTjYvQ3lOa3lKUjgvdlNEMzQ3aldEWjYySCs0TE5oeEdDcmdYVm9WMm9xVUZlNVNDdXZkdE5zS2lwS3ptUjA3NTd0SjhoNlpwbnJmOWtKTDUzc21paHU4Kyt5d3NRcVJrMGRyMll5SzlIczhJZS9hL0gzNTl5ZVdUditZYm9sSWRSY3E4YS9zaFpVTGNETENVSXVVNURVVnZ1dHFrZ2VLVTFBNVJXd3VtbGdJTVArZmU3TGRjdzJBUjNxZjJzL2x6TDlBd3NTWE1kOGpQYkxBT0hSK1dJVkl5VkcySnY1RmVqK2VFUFR2YlJ1bDcrV1RiRHlYUFFFaHRvRXJzeFRwRTZvMmZNL0pGN1hkVDdKeUc3RUdJVlFCclN4c0NoVlEzZkluVUxwQmlwVTJ2MTFvQndhS2tvR0txWm4vbnRNOHJWeU4rVCt4cisrRkpSWE1UbjFmY1NvbHBxY2dGV05PUGxRM0pxNUlQWHRzUHBWMEVVaXVKTUJrVitlWlJHNVFkMURCUVc0OVBLTlp2MFJkdVdDZGJTRlU3djV6SllHN3pVRk9CQmxpV213SU5oNWNTRkUrL2kwdTQ3N2lDNTE3V0pWRm1BZXlETElQenZILy9DVFpVOE9EV3Bma05BZGF4bGtpRHJYTVphUzFaS2dkUnlVQnRWUTFRcU54bk9iSWo3eTJ5ai9ublZmNTVrSWU2dHVmOHBEWWVyMVhFQUFVbWxsVXQzWGZrb01PTlZLMi85T05CdmFKdFRyYjlJSGtIQ091bkN4WjJWSGlVUDgxdmVCdjlvVFRmbUlXUTUxMlUzdnJub1BMRFQvRjk5VVI1b1hoUG93YU9JN1VNWExKSTl4L0FMRjV0bWxBV3VGSTNKWmFaeXhKTWZ1NytYcTFmV1pzbGlPcCswelJoWm40Q25IVmVHNlZhTmdPK0JsakRoUUkrNkljK1h0RzEvWkFlNExvS1hzcnRBR3NBZHBEYUd3UTlmcjhFV0FNQTY0bmNXdmZQQUd2Z0FxZHRsbkx5QTdBZkVuZ1dvTzJIUnpXOHlscGVCK3M3TjlpUUZUMjdvWW1ka1hNandCcitWc09NZ1VQSzdhZGVWUEJTVG1TSlFUWENCUTVURzV3QXl3QmdEZEZiNjZZcTlnREw0QkpuZ2c3dkhTZVkzRDJIZEJGcUNTb0pqaTNNaGNHR1dvYnVCZXpyZVRkU2V5ZUJodDNVMUg0cTB2d1FZRGNCQTRkbXdRQ1VKMVNDMUE4TTlpM0V1T3BTUnV2ZHFLdHQrK0YrZ0dVQW5PZGhKVWVsbHRmQm1pNnJiR2dxMlJ6b0ltVytqS3N1VFBDamttSEdoMVpMK3lsRFc0RzlNUXNHb0R3NVFlcGoxSVZMbWlwSGZnYU9HcndTYkFDQUNWMGFiS2hvYytCeEhsUkZWc3N3NDBPcTZRSEgwRllBQUg0MHJyclFHN0dlOGNxUmcxZm1PRkN5SWRMYVZlWHNUZGdnTzVOd2ZtZHdWV1ZERTd4OGRoTnZjbS85eGN1VkhqVU1NLzd1RUMyL0tzdWtNaFFhQUlDTGhHMkJrNTd4QXF5Qk5hVTVEZ0dQbFExYjFoVXRHYmVLMXVjQmhXckZYdnB3NVlEcmo5WnF2MHBYQmh1aWw4OXU2RlB1c2I5WWJUKzhyS25IYVI0Nk5xdksyazhOaGtJREFIQ1IzQUxuUzlRRDFQYURlOW15bU9ORXFkNEZXN2NoMGZzUkxhajBPc0FhZGhGdC9kcjd6bUNkeW9idzViTWJxcVhIL3NaeVJQRkZZY3UrMElFQ0RWVzFueHBYbldvZkFBQXVOYTY2VzRHUDBFMFY3T1V3eDRsU2VlOHVSclR6ZkRQQUduWVJiZjAreHpOWUs5aVFWWk9Cc01SaFl2a0cvUGNBUzVuSzdPMjljcUNobXZaVDJpY0JBTENCeVAzMlB3VllBOENzY290c0pwUzd1NFRTOWtQa2dQK0ZJcTQ3NHZtdDBkckJoaHpGRFZzK3U2a2xCUnh5NjZpYWJzRHZ6djBGVWR1Y2k2WnAzbXVmQkFEQXVuSy8vWk9vQjZ6dGgyZ3RUZ0QyclpvVzJWeXExR3g4VlFRTHRVbGxRL1R5MmZ2dERrY0FBQ0FBU1VSQlZJMVYxbnYvTWpXMWpucWErOGJPcHJZNUY4MWZuK1dpaHd3QkFEQy9jZFZGbm4vM2NPbnorUXBTeTB4SU9EaHQ1QmFoMUZaS3BiZUFZa3NiQlJ1eW1nWTZYYXQ5b0ZobEZSeS81WXlxMmJUOThLU21PUmZOZ1daZEFBQlFqZDhDdjVERnp1Y0RaaEV4VUthTjNBS1UxaklyNkhyRFZtZldadU5nUTIzdGxQSkFzVmt6NWVkU1dhQWh0ZjE1UHVjZnpCa0NiK2I4bXpPSTNHc1hBSURnNXI0bjMxVGJENkhYQnhUdGRjVEZ0LzF3UDhBeWFoSXhxRjVhdDQySTZ6WGpaQ2JiVkRaVTEwNHA5ZUt2TGVCUVdZdW9ZZTYyUHpuUVVGdUd3REIzWlFnQUFGVzZFZmhGL1JwZ0RWeE8yeGVLTks2NnFMTmgvZ2l3aHBxRVBNK2xkR1lKdkw5cXR0Tk10Z28yWkhjTGU2MVg2V3FaNUo4LzJOY0NMR1VLSitPcW0vVm10TUtCMnQvTmZSd0JBS2pUdU9xK1JlNjd2NkRaZktXcTVWa1Z3cWk5UmZpY2NrZVhpRzVHcjJMSmlidGRnS1g4UitEeldwMnRndzE1U0c5dGc1MGVseDV3eU9zUCtjSGV4dHhENkhLZ29icGVyK1kwQUFBd3BYSFZSZDd3dUthdENMQXdOMnRKb09WU2YrUjlxNmpNRUdHbnlvYm9ONWpiS2piZ2tJY1psOWJIN1VJSDJpQ3ZjYWhjVFVQZEFRQ0lJM0sxdTdZaUFRa0NVWUdqd0MraCtBUmExaEp5MzZxeXViSHNZS2RnUTFOdnhuUnhYOUFWRGpPZXZROXNwVitNUjByRkFBRFloMXp0L2lYcXdXMzd3WDF3UElKQWxPNWw4UFUvcm0wbTZZRkVIQkw5dDdSL2xmY0JJNnpsZWdIN2FhSFBaMjEyRGpaa1R5czhOc1VFSE5wK3VGVlpxZEtOM0FkMk5wVUdHdEs4aXljQjFnRUFRS1hHVlhjcjhDdTdGN3pkeEtJRTNRQVZrR0lqNDZvcllUWkNsemVqSTM4L1IvZTZnRFYrYXZ2aG9FT1A4NzVwQ1IxQ1NqaWYxWmdrMkRDdXV2VG1HaW84UHVFRER2bm0rYzhBUzVuS1hZR0dhY3c5N3dJQWdNWDZKZkFMcjdGTmFuSHkwTzZJc3dVRkc2alpuK216Sitpd3VVS0NTc25ESEZpYXRlSW10WEhQZTJsRnRISXY2SHhXWWFyS2huVGlRcFR2N0VIMGdFTk5OODlQY3luMmJQSk5iM1VNaEFZQVlDN2pxZ3VkTVRqM0pnei9Pdlp2ODRiVXRhQ0hSYnNadGhFNXdQcWphem5vTU9iUG82VEVPcjNJNS9oNFg3TnhVdHVtL1B2SHl0cTRNN0dmcHZ4MWFZT3owaXp4RkhDNEZXMGdkbVhIK2loWHlNd21CeHFpM3ZUdUl2S2dQZ0RnOE5JRDZRdm40UytTTktZUi9GbndSUUY5MW91WE56RWZOVTJUV3JuZUsrSDF6RjFWUDVNLzJyN0d4aE5iT2RsSHhYOEtzTGI5OE9zOEwyRlNqL1ArMXVudi9KaXJlOUxQNTBvL0Q3dDRsYThmSmJuNXczZkFTZE0wYi9NNVBsNG53VGRYd3FTZisvbjcvR1poeCtCSHIySXRwMzZUQmh1eW41dW0rYjNDSTVmNmZYNk9Vc0ZSV1ViK01QZHNnZHd2dE1aQXcrelZJUUFBSlVzYjVBSU9rMGtER0o5RlhGaDZmcHF6eldqZWVOZkNDUTdyV3NyRURqNWI1cER1NVovdkcrb0ZCNm51N21NZlpGeDFMeXRJenJpV3I4dmZyODFMREVTbTh4aGdHWXN5V1J1bFUrT3FTOE5KM2xkNkVMc0lRNjBxeThnL21UdUFrOXRpUmV3WHVxdjNjMWVIQUFEQXFYSFZQUTk4TUs3dHE3WEVCUVFhSUlaOVpXV1gxRXFwZHArV2ZnQWdrc21ERGMxZk41bVBjcWxPalE0YWNLZ3RJMy91SWNhNVgyc1JBMncyZEpJL2R3QUFjRWczQWgvOVB3S3NnVGhxVFpKa0J0Rm4xVENaSTRleWFNN2ZBZXdsMk5BY1lCTjVadDBoMmhqVmxwRS9kN2w2bXBaZllMKzl0VlQrZVFNQW9CQzU1L2ZIcUt0dCsrSERESDhqMUt3L0xoUzVFb2N5MUpwa1N6WjN5MittNWZ3ZHh0NkNEVm5rckpaZFhac3o0SkEzeXF2SnlEOUFvT0ZPcmRQeTlSZ0dBQ0NTY2RWRjNteS9sK2Nwc0hEanFqdGUrakZnWnlGbWVnSkVzdGRnUTg1cStibmlNNTRDRHVPKy8waUZHK1dIQ0VMVjJzT3Y1b0FlQUFEbGVoQjQ1ZVlwSUNPZG5RbFlMVWJOKzVvMWU3cjBBM0FvKzY1c09CMFlYWFdQckgwR0hITFdUVTBiNVhkekVHbzJjd1NFRHVUcDNNY1NBQURXTWE2NjFLN29TOVNEMWZhRGZ1dkxadDRkVTdHaFdibThyMGxoeGxYMzFqazdqTDBIRzVwL2VtUlZuVG13eHczdG1ySnUwdWI0ck1PMUR6RmJZeVpIdmpnQkFJaHNYSFczQWkvdldZQTFjQ0E1R0FZNzgxeStHSytXZmdBSzQzd2QwQ3pCaG1ZaEEyeFR3R0hLL3ArVlplVFB2am1laDc5ZG0vTnZ6dVRFa0JzQUFBcnhTOVJsVnB5WXhPV3E3cnpBUVVSdUc4Y0V4bFgzMG5Fc2gvTjFXTE1GRzVybERMTDltbWNzN0tTeVFNTXc5K1o0MncrcExQYmVuSDl6TGtzSTNBRUFVSWR4MVVWdVYzUXRQemV3SUJLM21KcEttY1dRTFY4RzUrbkFaZzAyWkVzWWFQdXA3WWY3Mi83TGxXWFlmQmxYM2M3Qmx5Mzhmb0MvdVhjTENkZ0JBRkNSNFBld1ZUNDNjQ0ZWRGV6TEV2YTZGazIyZkJtY3A4T2JQZGlRQjlyZURYZ3NwdlpIMnc4YloweTAvZkM1b3RZL0o0Zm8wMXJ4UUdnM0x3QUFsT3EzcU92T3oyQXNnS29HOWlYdmRiMTNnS3VuWlZac3prOEFoNmhzYVBLUTRDV1V0YnhwKzJIdE9RVnRQNlFKOTkxK2x6U2ZRN1Q3eWNld1JnL3l6UXNBQUJSblhIWFBBNis1YS9zaDhqQnJwckdFcEVjT2FGeDEyckpWTHJmTStyTDA0eERVaVpabU1Sd2syTkQ4VTlieU1kangySWZINjJUS3RQMlFlcGsrTFBJVm51TVFwZEo1T0hjMXgvQ01JMStZQUFCVTRIYmdsL0JuZ0RXd1AwTk9lb1I5MDVHZ2NvZm80TUhWekRlTjQyREJodWF2TjBLYWEzQVM3SmpzUTNmWkhJYmNidWxaMGEvdzN3NTFjZjE2b0wrN1Q3TVAxd1lBZ0gwWVY5MXg1SVN6VGFyU0tjdUI1Z2l5UUxramdWWXU5WXNjUEY4aWxXdUJIRFRZMEN3cjhuVHR2RmtDYlQra201NDNoMW5TWHR3OVJMdWZYUVp5UithbUdBQ0FtdVNFczZnZWU3UFZKL2lBY2lxVU94TVlSbDZ4SER6L1plbkhJWWhYS3RkaU9YaXdvVm5ZeGY5c3dDRzMvZmwwMkJWTjZzRUJQK0IvSE9qdjdvMmJZZ0FBS2hVMjYvZThCREdLcHFVTkI1RTdGQmdZWGJGeDFiMWVTSHY0eUliY3BwOUFRZ1FibWdVR0hIS2dvYWEyUDcrWUt6QXBOOFVBQUZRcFB6ZUViYWViMjl4U3ZodUhxTHFIVTNsZ3RJQkR4WEsxM3JEMDQzQWdnMjRnTVlVSk5tUkwybUN0S2RCd2xDTzZCOUgyUTIxUnpJTzBvZ0lBZ0xrRWI2ZGJVNXZiUlVySmpKNnBpQ0FISExSVXFsamU4Qlp3bUpkQVEyQ2hnZzM1WnNCUWo3SkVHR0JjMDd3R3ZlWUFBRmlLc1AydTIzNDREckFNTm5laUhTM1I1RDBUUTZNcmxqZStmMXY2Y1pqSmtVQkRiTkVxRzVxODBlcEx1QXduUHVDVDBtc09BSURGT0dSMTlCcHV0djNnV2Fjc3I0Slh6TEJncVgyY1FGamR4bFgzWEFMMTN0ME5rUERNRmNJRkc1cC9lbmcrRGJBVUx1RkdibElDTndBQUxFN3d6YmRQQWRiQWVtNUkzS0lFK1R2UEhJZEtwUVRxZkk3RHppVXExRWx1ajZjVFNBRkNCaHVhdno2Z2IvVzFpMHRFZmxvQ053QUFMRmpZMWhOdFA3emI5Ti9KeVhQTTQyZnpHU2hObnVPd3BKbWxpNVAzZUg1ZStuR1l5Rk43Wm1VSkcyeG8vdWxySitBUWpFRER0QnhQQUFDV0xMZWVpT3BoMnc4Mk9lSjVsWU1NR3dlRElJSVVJTXQ3QWRydVZDcDlQK1Z6YkY5ek8wZjVlLzV0aVl0ZnN0REJodWFmZ0lPcDduR0l2ay9yZGswdkJnQUF0aFQ1dnZqckZ2K081NmI5ZUpvM243Uk1vZ3BuMnU3WUc5aGU2SUJOMnRjVWROaklhWkRCYklaQ2hRODJOUDlNZFJkd09MeTd5bE1ubFc2VWp5dDZQUUFBc0pWOFgvd3g2dEZyKzJHajZvc3pXY3NQSXIrdVFyelBHMDh5WEtsVytnNDhmWitiNmJDUnA2WDA4VDhUZE5CZTZYeFBCUm5xOEZNcHJ5SUZITnArU0J2ZDF3SXNaNG1LK1FJdnhKRWI1Y1VTc0p1SDd5c0FLTXk0NnU2My9UQUdYZld2VGRPODN2UmZ5dk1iN3AvOTc5cCt1TlUwelpQODM5K2JkSlgxU0p1dFR3cEtkbk9QejJUeVRJZlQ3NHJVS3F4emRQL2p0K0F0K0M2VTI3OTliNmVkQTltL3hsenBMSW85ajF5c21HQkRrd2VzQ0RnY2hJM3hhWDBScVoxWGVzaHIrekRGVWRYMmxRMTJuQTFtL0N1TDBnWUdQL3JpaUJ4TSt2NS9zZERYdmtRMkhyZVVzaG9EQnh3bWthczR6bTBEMVBaRGVrNUlHNDBQeTN0bE8wblhwNWNGUDNlK1crQTVZOC95ZDhXZDA3K1NONlpmTG5CUDdDUUhlMS9YMW0xalhIV3ZUd1BaYlQvY3lmKzU1bWU0ai9tNzN2TjZ4ZHB4TE84K3J2YWJ6MkNHM01ZcXJMWWZQcFQwWld3ZzlHRzAvZkE1UWtaSTdlZS83WWQwUTN6ejBPdndPZnRMa091bGJKVy96a1dVWklrSGJ1NFBSOUpNV0hmM1VjRWI1Wm1sMUd0aTJ3OXAwL2x4Z0tXY092aHpVZHNQOTNNMVJPa1ZFU213a003djI1cmF5dHFuQ090R3JlMmc4M2ZDazJEZmxidjZtTDhiRnAvdzJ2YkQ5WHgrSHhYNm5UL2tRR3gxUVNJdVYyU3dvWEVobjh0SnFpYUp2c2lTZ2cwMlFBOHYzNUROYm1tYmU0NXpMQWM2SDhmbTB2eFh6bGlhL2RycXN4SExvYjRqK2JlNVBoZXVpZE00NE9mbWMwbWJKUGs0M2NvLzkvTTFaKzZFbTVQYzBqSzlCeis0RCtZUWxuenZrOXN2M2NrL1VZS1RwN05yUHVUdmgyL3VUN2QzSnZoOCtteHhpSE04NUVyT1JYN1hjN0ZpZ3cyTmdNUGVsYkl4WGxDd29kcU1DZ0FBQUFCZzJmNVg4cXVYSmI0L2p1M2s3Z28wQUFBQUFBQzFLanJZME5nVTN3dkhkSEpQOTlFSEdBQUFBQUFnaXVLRERZM044YW5kcU92bEhOeDdnNDBBQUFBQWdOcFZFV3hvQkJ5bW90WFB0TktBN1VjMXZTQUFBQUFBZ1BOVUUyeG9CQngycGRYUHhNWlZkNzJxRndRQUFBQUFjSUdxZ2cyTmdNTzJYbW4xTXkzdlF3QUFBQUJnU2FvTE5qUTJlamVWWmdxOExHdko0Wmw3QVFBQUFBQXNTcFhCaGtiQVlWMkRtUUtUTS9jQ0FBQUFBRmljYW9NTmpZRERWZEx3NGp1eGwxZ2NjeThBQUFBQWdFV3FPdGpRQ0RoY3lQRGl5UjJaZXdFQUFBQUFMRlgxd1laR3dPRS9ISS9KcFhaVVR5cDdUUUFBQUFBQWExdEVzS0d4d2Y0M3gyRjYybEVCQUFBQUFFdTNtR0JEWTZNOXVSRmdEVlh4bmdJQUFBQUFXRml3b1ZuMjV2RGRjZFY5QzdDT2FnZzBBQUFBQUFEOFpYSEJobWFabThSUHgxWDNPY0E2YXFKS0JBQUFBQUFnVzJTd29ma240SEFTWUNuN2RqU3V1cmQxdjhUWnFSSUJBQUFBQURoanNjR0c1cStBdy9YS0F3N0R1T3FlQkZoSFRWU0pBQUFBQUFEOFlOSEJocWJ1Z01QSnVPcnVCRmhIVFZTSkFBQUFBQUNjWS9IQmh1YWZnTU1RWUNtVHlhK0o2YWdTQVFBQUFBQzRnR0JEbHFzQXFnZzRMSEFBOXI2cEVnRUFBQUFBdUlSZ3d4bDVRL2tveklLMklOQXdQVlVpQUFBQUFBQ1hFMno0UVc2VlUyckE0VWFBTlZSRjhBWUFBQUFBNEdxQ0RlZklBWWVuNFJaMnVidmpxdnNXZVlHbEVXZ0FBQUFBQUZpUFlNTUZ4bFgzdHFDQXc5TngxWDBPc0k2YXFCSUJBQUFBQUZpVFlNTWxjc0RoYnRnRi91VW9yNVBwcUJJQkFBQUFBTmlBWU1NVmNzVkExQ3ozajdubEU5TlJKUUlBQUFBQXNDSEJoalhrTFBkb0FZY3Y0NnE3SDJBZE5YbWxTZ1FBQUFBQVlIT0NEV3RLQVlkQUE0TlB4bFYzSzhBNmFwTGFVYjFjK2tFQUFBQUFBTmlHWU1PR0lnUWN4bFYzL2RCcnFNeWdIUlVBQUFBQXdQWUVHN2FRQXc0bkIvemJUQ2NGR3U0NG5nQUFBQUFBMnhOczJGS3VMdmd5ODUrTk9xaTZWQ2NDRFFBQUFBQUF1eE5zMkVHZW16RE05T2R1NTBIVlRPTkVPeW9BQUFBQWdHa0lOdXdvWjhZZjdmblBQQmhYM2ZIZVg4eUNDRFFBQUFBQUFFeEhzR0VDZWJqdzB6MzkrcWZqcXZzdzZ3dXFuTGtYQUFBQUFBRFRFbXlZeUxqcTNqWk5jM2ZpWDN1VWZ5L1RuU2VCQmdBQUFBQ0FpUWsyVEdoY2RaOG5IT0k4NUlvSkppTFFBQUFBQUFDd0g0SU5FMHREbkNmWTFEN0pzeUNZaUVBREFBQUFBTUQrQ0Ric3lTNmIyNFlYVDB1Z0FRQUFBQUJndndRYjlpaHZjbi9aNUMvWUdKK1c0d2tBQUFBQXNIK0NEWHMycnJwYlRkTzhYK2V2MkJpZmx1TUpBQUFBQURBUHdZWVpqS3Z1VWRNMHYxenhsNllhTE0xZk15OEVHZ0FBQUFBQVppTFlNSk54MWIxdW11YnVCWC90Ymhvc1hkMkxQb3pCekFzQUFBQUFnSGtKTnN4b1hIV2Z6NmxnZUpyL2UzWjNOSzY2TzQ0akFBQUFBTUM4Zm5LODU1VXJHTnEySDhhOE9mNTJTYTkvajM0ZVY5MjdhbDhkQUFBQUFFQmc3VGlPemc5VmFmc2h0VkZLUVp5SFRkTThHRmZkQjJlWVEycjdJVlhjcFBmaHRhWnB2alJOODBoRkV3QUFBQUFBQUFBQUFBRDhReWNscXZGREFqa2NYQzYwU2UvSjdzeGFialpOODZudGh5YVBiZEZORFFBQUFBQUFBQUFBQUlERk03bUI0clg5OEtScG1qY1h2QTZUR3ppSXRoOVMwY0xqTmYvMlVkTTB6L01ZZVFBQUFBQUFBQUFBQUFCWUhNVU5GR3ZONUhIRkRjenFpbUticTZSeERrL0dWZmZaV1FNQUFBQUFBQUFBQUFCZ1NYNXl0aWxKMncvWG02Wkp4UXFkRTBja2JUL2NhWnJtMDQ1TFN1L3JUMjAvbk9SSkRtK2RaQUFBQUFBQUFBQUFBQUNXd09RR2lyQkRVWVBKRGV4VmZtOGVOMDF6YlU5LzUyaGNkVStjUlFBQUFBQUFBQUFBQUFCcXByaUIwQ2FZMUtDNGdiMXArK0h6akZORWhxWnA3bytyN3BzekNnQUFBQUFBQUFBQUFFQnRmbkpHaWFqdGh6dTVxR0ZmM2ZCaGEyMC92RzJhNXZITVJ6QVZVWHh0KytFa0Z6bDhkZ1lCQUFBQUFBQUFBQUFBcUlYaUJrSlIxRUJrYlQ4OGFacm16WUdYbUQ0Ym45bytEWEpvbm82cjdtM29nd1lBQUFBQUFBQUFBQUFBYTJqSGNYU2NPTGkySDY3bm9vWnU0clU4R0ZmZEIyZVlYUlJRZEhNMHJyb25BZFlCQUFBQUFBQUFBQUFBQUZ0UjNNQkI3YkdvNFpUaUJyWTJ3L3R6YW1tY3cvMXgxWDF6MWdFQUFBQUFBQUFBQUFBb3lVL09Gb2RRWU5JNEM5UDJ3OXVtYVI0WDlxclQ1K2xyMnc4bnVjamhjNEExQVFBQUFBQUFBQUFBQU1DVkZEY3dLMFVOUk5mMnc1T21hZDRVZnFLdU5VM3pLUmM1UEI5WDNkc0Fhd0lBQUFBQUFBQUFBQUNBQy8zUG9XRXV1UlArVjRVTlJOVDJ3NTIySDc1VlVOaHdWaXB5ZU5QMnc5ajJ3OHM0eXdJQUFBQUFBQUFBQUFDQWYydkhjWFJJMkt0YzFQRDRRRWY1d2JqcVBqakRYQ1JQRS9uY05NM05oUnlrbzNIVlBRbXdEZ0FBQUFBQUFBQUFBQUQ0bStJRzlxYnRoeWNCdXVBcmJ1QkNiVCtrOThhOWhSNmhvV21hKytPcSt4WmdMUUFBQUFBQUFBQUFBQURWYS92aFZ0TTB0ODU1bmFsWjk1MGYvcnVMY3FDUHgxVjNYT094VXR6QTVJSVVOWnhTM01CL3RQM3d1bW1hWjQ3TWR5ZTV5T0Z6Z0xVQUFBQUFBQUFBQUFBQWhOZjJ3NTFjakhENkU3SFpkc29SL1h6bTUwUDBvZ2pGRFV3bWYwaFRJY0cxUUVkVmNRTi9DMVo0RTAyNmdEM3llUUVBQUFBQUFBQUFBQUQ0T3pjNjVaNCthcHJtWnFXSFpHaWE1bTNUTk84aUZENG9ibUJuUVlzYVRpbHVJUHA3TktLbjQ2cDd1L1NEQUFBQUFBQUFBQUFBQUN4RHpqVjkzalROWTZmOGU4UHNkMDNUdkp5NzRFRnhBMXRyKytGNlRoanZBaDlGeFEwTFZzaDdOTEtqY2RVOVdmcEJBQUFBQUFBQUFBQUFBT3JTOXNPdFBMSGdubE83bHFNNWloMFVON0NWdGgvZUZsS1pwTGhob1FwNmo1WkFrUU1BQUFBQUFBQUFBQUJRdExZZjd1ZUNocHZPNUU2R3BtbWVqS3Z1ODlTL1dIRURHMm43NFhYVE5NOEtPbXFLR3hhbTdZZVVoUDltNmNkaFQ5TEY2UDY0NnI1Vitlb0FBQUFBQUFBQUFBQ0FxdVFKRGUrYXB1bjIvTHErTkUzek9mK2szT1hqZlU4NStGSGJEM2VhcGttdk4vM3pmdjdudFQzLzJZOU4wenlhS3JkVWNRTnJLVGhoWEhIRFF1UXY1QTh6ZkFuelY1SERvN2t2dWdBQUFBQUFBQUFBQUFEcnlMblByeWZPSy8yU0N5WGU3bU5xd1J6YWZuaVVja0R6ejVUSDVpUTMwTjdwdUNodTRGSVZKSXdyYnFoYzJ3L1hjNVdiRVVIem0rUkNCQUFBQUFBQUFBQUFBRENGaVJ1Nkh6Vk44N0wyWnRCdFA2UXBEK200UFo3ZzErMlVXNnE0Z1hQbGhQRVBNNHhnMlRmRkRSVnIreUZWdnoxYytuRUlRSkVEQUFBQUFBQUFBQUFBY0RBVE5YVC8yRFROODZYblErWmloN2M3Tmg1UHVhVzN4bFgzYmFPL3JiaUJIMVdXTUs2NG9VSnRQN3hzbXViRjBvOURVRS9IVmZkMjZRY0JBQUFBQUFBQUFBQUFtTWVPdWM5RG1scXc5SUtHaStSQ2gzYzdGSTM4TnE2NjUydi9QY1VObktvMFlWeHhRMFhhZm5qVU5NM3ZTejhPaFZEa0FBQUFBQUFBQUFBQUFPeE4ydyszbXFiNXZHWGkvVVpKOTB2WDlzUDFwbWxlTjAzemVJdERzZllVQjhVTjFKNHdycmloQWhPTkN1SXdYUHdCQUFBQUFBQUFBQUNBU2JYOThLUnBtamRiL0U3Tm0zZlU5c1BiTFlzY3JzenJWdHl3WUF0SkdGZmNVTEJjNVpYT1g3ZjBZMUdCbzNIVlBWbjZRUUFBQUFBQUFBQUFBQUIyMC9iRHk2WnBYbXo0Uzk2UHErNlJReitOSFhKOEx5MHVVZHl3UUF0TEdGZmNVS2dkcXJxSVRaRURBQUFBQUFBQUFBQUFzSlV0Q3h2dWpxdnVzeU0rdlMwbmFGeFk0S0M0WVdFV21EQ3V1S0V3TzR3Sm9peUtIQUFBQUFBQUFBQUFBSUMxYlpGaittVmNkYmNpSGVIY3BQN09CTC9xODdqcXZrM3dlM2JXOWtNNnhxbDQ1Tm9Hdit2Y0hHL0ZEUXV4NElSeHhRMkZhUHZoVHA0b3Nza1hHK1VibXFhNUgrVUNDd0FBQUFBQUFBQUFBTVNUODB3L2JiQ3dqK09xdTcrUEY3TGw5SWk1bkRSTjg2NXBtcmR6NTFDMy9YRGNOTTNORGY2Vkd6L21qeXB1cUp5RWNjVU4wZVVLdEhTT3VxVWZpNFZUNUFBQUFBQUFBQUFBQUFDY2E4UEUrYjBWTmpSL3JTWGx2ZDRyNkV3ZE5VM3pmSTRjelEzUDB6Q3V1bjlOc2ZqZmZwYkZvYVdFOGJZZlB1Y0tKWjN3Q2FudGgxUVo5bFZoQS9rOThEVjliK1dDRndBQUFBQUFBQUFBQUlDVWIvcDZnNFQ1TC9zc2JDalU0eGx6Tk8vazZSSHI2TnArZUhMMmY2ZTRvVUp0UDd5Vk1FNWthUnhQMnc5cGJNeERKNG9mS0hJQUFBQUFBQUFBQUFBQXZtdjc0VmJUTk04Mk9Cb0tHeTUybXFQNVpOdGZjSlU4SGVMUkJ2L0s2N1AvaCtLR2lxUTNXazRZZjd6MFkwRk1iVDg4eXUvUkYwNFJWMURrQUFBQUFBQUFBQUFBQUx6YzRBajhNcTY2NDhVZnNhdTkyWE9CdzRlbWFYNWI4MzkrTFRWTlAvMC8ybkVjOTdVdVp0TDJReHJma2Q0RTF4enovM2lRUHlBY2tQY29FeGhTTldXdTZBTUFBQUFBQUFBQUFBQVdJRGZWWHNjd3JybzdjeHlSdGg5U1R1eTlDbzcrN1gwV2cyeHc3azdHVmZlOUViYkpEUVZMM2N4VFYvT21hVDVKR2ljaTcxRW1aSklEQUFBQUFBQUFBQUFBTEVqYkQ4ODNlTFdiVEhoZ25tUDJhczMvWFpyZWNELzloNS8ydXg3MnBlMkh0MDNUUEhhQWljcDdsRDA1TFhJd3lRRUFBQUFBQUFBQUFBRHE5bWpOVi9kbFhIWHZTam9TNDZwcnQvbjMybjY0MVRUTjY2WnBIazZ3akpUbisyU0MzM091Y2RXOWJQdmh4WnIvODdTT0R5WTNGS2J0aDBkNVJJZWtjVUpxKytHSjl5Z3pNTWtCQUFBQUFBQUFBQUFBNm5adnpWZjNkaW52ZzNIVkhZK3JMaFY5M0o3aTk1MU9UTmlqOTJ2KzZ1OTV4NG9iQ3BHcWJOcCtTQjNLZjEvNnNTQ210aC91NVBmb0c2ZUlHU2x5QUFBQUFBQUFBQUFBZ01wc21IVC9ZV25uUHhVNU5FM3pXNENsWEdYdHdwTjB6bjg2MkRKWlc5c1BIemFvUElKWjVZVHlEem5KSEE3bHRNaGhhSnJtL3JqcXZqa1RBQUFBQUFBQUFBQUFVS3kxaXh2R1ZiZTQ0b2FzaEZ6SlRjN05MWk1iQW12NzRYbmJENlBDQnFKcSt5RlZVMzFWMkVBZ0pqa0FBQUFBQUFBQUFBQkErZFl0YnZqb1hNZVZtMVYvV1hPQnQweHVDS2p0aHp1NVN1WGEwbzhGTWFYQ202WnBmblY2Q095MHlPSDl1T29lT1ZFQUFBQUFBQUFBQUFCUXBhVk9iV2cybVc1eFlNZE4wOXhjNS9Vb2JnZ2tkeG4vb0FzK1ViWDlrTDRFLzNDQ0tNakRQQUhuYUZ4MVQ1dzRBQUFBQUFBQUFBQUFLTUk5cCtsaWJUKzhuZUlZamF0dWp1S1FEK3V1VlhGREVQa045bmpweDRHWTJuNjQxVFROWjlORUtOamp0aDhlSzNJQUFBQUFBQUFBQUFDQXFoeVgrR0xhZnRpa3FHQmZoUjRmOS9SN3Q2YTQ0Y0RhZmtoSnRtOFdmUkFJeXpRUktxVElBUUFBQUFBQUFBQUFBT3BSWkhGRGtNa1Vyd09zNFYvK0YyZ3RpNUk2NGJmOThFMWhBMUhsYVNKZkZUWlFxVlRrTU9ZQ013QUFBQUFBQUFBQUFJQWxTVTJpM3dWN3ZmY1VOeHhBSGlQeVo5TTAxeGIzNGdrdkpYdW5wTytVL08xc3NRQnZGRGtBQUFBQUFBQUFBQUFBQzVJS0d5TG1UWDc4S2NBaUZxUHRoK2ROMC95NjlPTkFURzAvM0dtYTVvT2lHeFlxRlRtazhVcjN4MVgzMlpzQUFBQlltalJsdEdtYVcydSs3T3ROMDl3SmRJalNkTlR6bnVVK2o2dnUyd0hXQXdBaHRmMXdmNE4xYlhKdk1JZlArWnAvMWpmN3ViQWZGM3hmelBrY2NORTlmdU0rSHdEV2Q4a3p3Q2JQQmxPNTdQcWVISStyN3RqcEJXQkw5M1ArSzFjN2laNG5xYmhoQnBMR2lhenRoK3Y1L2RrNVVTeGMrbzcrMVBaRCtJczNyR1BENUxTYUNHcFh5UHQ1ZnZrWjV2cUJYMzlVQXVqOHg0WkpZa3V5dU90eWZzYitNZG5ueCsvVTgvNDM2VHAzYzRZbExrN2JEOXUrNUkvNW54L09CRjRGV0F1ejRQdEl1SXJ2c3gyYzg5Mnl6dlUvdVJmMlJSVnNoMnY5bC9SWk9PZkhNeC9GT2JPUGMvcHNldnJQYXI5M2R2anNuenI5RG1qT0pMK2NGbEc1VGg2WXZVbTRrUHVVeXVWOTV1dG5uaWRPLzdtWWZKNEpydkduemw3ci83N0c1eC94NUNzcy9GcnN1N1pnRjhSb2xxTG03N1pCYnV0a2ZtdWE1dVVCditmV2pxbTM0emp1ZHlrTEptazhoQWZqcWxPTmRZRzJIOTQyVGZNNDVPTGc4SVpjNU9DaGhXTGs0UHBuQlpWL2V6cXV1cmRCMXNLR3ZKLy9ZKy92NTdZZlhqWk44MktmZjZOQ2FYUDhrVTN3WmNtYit1OGtvbS9zdDNIVlBaLzdqLzZRZkhqMlAvKzR3UzNaa0YyZDVIdVhENmYvOUR4NUdEa1I0SThsdm5iWTBzL2pxbnRYOHNIN29kRDA3SDgrbTR5eHFJUWc5bWJJMS9uVGE3MW5RZlltUDN2ZXo5OWxkM3lIaFhOeTV2dmdXREgwN3RwK2VKSW1yWmYrT21BbW12VVY0a3lTN2RscnVuM2xjbnc4VXhEeG9mWnJ2VDIxLy9nNHJqcU5yUXJSOXNObnowei9VdngrMzFsdFAzeFlNNDQzKytkMmc3VWRRdHJIZWhMcG5uR0Q0L1diNG9ZOWtUUWVodUtHYzdUOWtCSktmZzIzTUloSmtRUEZhUHZCamQxLy9US3V1dGZSRnNYVnZKL1B0ZGNDQjhkOEp5bVlkRWNBdTI0NUVIV3M2R3A3NDZwcjkvVzdOWmlnRUVOK243NnpYN1VmT1Fud1U0MnZEZmFzaUgxMFNZOFU0Q1JmNjArdjk1NFJ1VkJPSGp2OVVXeGR2eTluRWlNLzU0N0F2aU15MTNqWTJtM2ZKWWVWOXlUVHRmeFIvcWZDaGVYNitFTWhkSEdmVFhIQ2N4MmthUk9iYWZzaDVZTThjOWorYlo4eHVibHQwS1J4R0ZmZHJKTTdwaWh1K1BGY1RaemJPL3N4dWN3RzE1cFhQeDFtaWZWcSt5SGRzUDYrOU9OQVRLcHNZU3NwT2VwcjJ3OUg0NnA3NGhBUzFROWRDdmxIdWpkVDNGQVk3K2NMcGZmelBxYzNIQ25RM2xwS2R2K3o3UWVibkpYSzNmLy9YUHB4Mk5IN1BmLytkd29iS0VDWGY1NzlNR0wvSkwrSDM5WFVUZWxBSGkzeVZjUHU3dWRreTdEeWM2S2tSNkpMejRZUDg4K3ZQMXp2ditROUtrVVBDNUlUSGgvbG40ZExQeDRMZHpQLy9KMzA4c04zeEZrZkYxZ0VJZjRHMjdtVkM2ZllzN3cvL0NoL1g5bUQ1RHozTHJuT24rNzl2WXg2WFJlYnZWQ1loR0F1NVR5ZEkzMnVLMnF5dEc1RDRpNDloNWZld0RnMWNHMzc0ZDFFc2VsMFRMNUZtRlBsVmdBQUlBQkpSRUZVYU5TNDRiWG1nK0tHaWVUTnFjK3FjSWxJaDFHWXhPTzJIeDd2dTJzMkFGemkrajRQVGlyaXl4djB1Z1Z1NzFuZU1CR1FyWWpDaGtsOEdWZmR2aE9PZlhkUnNtdTV3UER4RDRIUFZCVDAycFFIQUtqQ3pkeDE3MnpSdzBrdWVIaXI0S0Y4K2RueFNmNFJMMllYbHlWSHBzS0g1K09xKyt3SUEreEhUcng3b2hrVUUvcHg3eS85UC9kTFQ3NEZtTkVtenovN2JoZzVpN3hQMUxiOThIbUN3c3JUUm8wL0g3akIxdHJGRFNrdTlyLzlybVVaMm41SUg0YXZOcXJDR1RiOFlxdFMvb0w3cXJBQkp2TW1qVWpLSTNJQm9DcmpxcnVmSnppd3ZjZDVOQ1lWT05QSWdPMTlIRmZkTGNjUHRwSzYrLzZSbjBIVHo3Rm5VUUNvU29yYnZNZ0I1dFByL2R1Y0pFOXdLZkd4N1ljUHArY3VGOFcvRUM5bXoxTFJ3NmY4dmpPeEdHQkhhZjgzN2VmblBaZlRhL29mQ2h2WXM1U2srbFVzQ1dBOXVRSFV5WnIvODZwaUtPT3FTNU5KZnB2bzEvMSs0T2ZJZGM5Tkt1cHZGRGZzSUFVVDg0MnRtOXBZVWxIRGpmVEJYbktWYTk0QUg0M0VnNzFKUlE3ZjJuNHczZ3lBcXVTcEE2K2MxWjI4c0NsZFBoUHdKbkdVaTZhQWFkdzhVM0EvNW1RNno2UUFVSmZIUHhRN3ZNelBKaHhZdXUvNm9aamhEeFBrT0xCbnVRa2pBQnRvKytGNWp2T1B1VkdvNGtRT0pjV1M5ajN4R0tBVzZ6NzczS3V0YWNTNDZwNDNUZlB6UkwvdVdXNldQcXM4R1d2ZCs2M3YwOHdWTjJ3aHZmblRqVzRLSmhhMytMb3BhbEIwRTExSzdHbDFRNjdLdGR3aDU3TUFFd0ExR1ZkZFNzei94VW5kaVFLSGdpbHNtTVNyWEN3RjdNL1pycTNmQkVNQm9Fb3ZjbGZYZEwxL1p4OTZYajhrUDM1U3pFQkFuZ0VBcnBCenZNNFdLUDVxMzVkQTdLRURyT2ZkQnNlcHVoajl1T3JTNjcreHdRU0x5M1I1cjJQT0lwQk56c24zNlJLS0d6YVVibmp6V0ZFM3VuR2tEK3hkUlEzZk84WW91b25wdFBEbSswTkorbWN1Y25pNjlBTlRrZE94Z1Rya0FGQ05jZFc5bnJBRHdGS2xBb2ZuU3o4SXBWSFlNSWxYdVVnS21NKzFQRkk0QmVxUFRYUUFnQ285UEZQbzhOb3Azby9jUk95YjVFY0s0ZjBKY0k2Y1AvTTVYOC8vVktCSVlJcVhBZFl3cnJvUE9RZHpIWTlyakpHazNPaHgxYVhyeHNjSmZ0MjFQRGwwN3dYeitXK3NleS8yL2pRSFhISERtczUwdzNmREc4ZHBVY1AxY2RYTlBpb2xpcFI0azBmRmZMS0JGYzZsaFRmanFudWJpeHdlVEZSVngrRTl6b0VsMWZVQVZDRjNBSGpnYk83a1YvY0d4Zm5zMldvblR4VTJ3TUhkUERQUlFSRStBTlRwMlpucFRZb2FkL1JEQXVRYno0UUFVSjZjTy9QdXpNU2x6bWtFZ0twc0VuK3NOall5cnJyN3FkSGNSTC91OXhrYWFHeHlMdjQreDRvYnJxQWJma2lLR3JJY29QN3FvU3lrcCt1K1IxTmxZYTZxdTd0QmhTR3h2Y21CSlVFbEFJcVh1eURjZGlaMzhrYUJReGxTdC9PY0ZNeDJIcVFpYnNjT1Fqa3R3ditjSjlNQUFIVzVkcWFvMFhQbmhzNDB0NU1BQ1FDRlN0MkFjMTdYMXp6cENnQ29VRzdNdUc1dVpWZnoxTXZjYUc2cUpwV3BnY2FIaVg3WHY2VEMwdzBhU0J5ZHpiVlYzSEFCM2ZCRFV0U1FuZGxzZlJ4aVFaeVZ2bVRiYlJKNjB2czZUWGxvbXViR1JPT0RPTHdVVkRxV1FBSkE2Y1pWZDV6dlVVeWIycDRDaCtBVU51enNkaTZHQW1KS3lYcGZGVGtBUU5YZW1OeTBublNNemt4cEFBQUtkT1o2L3J1OExnQllqRTNpN2M5cWpzL251T3hVT1J6MzhuVFF5ZUpIYlQrODNMRHc5UG5aLzBOeHd6bnlRZFVOUHc1RkRWbWVKR0t6TmFhUHVhaGg1d3ZpdU9xK3BmRkI2ZmVsWW9sS2o5ZVMzTXdKSkFKS0FCUXQzNk9raDlrdnp1VFdVcUxKL1VMWFhqV0ZEVHRKeit3M2NoRVVFSjhpQndDbzMyT1RITTZYdWpacUhnWUFaVHRUMU9CNkRnQUxrL09IWDIzd3FxdHVRSGdtaDJPS0hOTnJPWDUwWjlkZmxIUHdYMnp3cnp4TnIrWHNmL0hUcm91b1NUNHBIMVQwaHBFU0pPNHZ2YUNoeVpORW1xWTU5dDRNS1NYMzNmbnh5M1VxdVZqaVNiN0lLbW9wV3dvb1BjNFhZNFVPQUJSclhIVzM4bGpDZTg3aVZ2NW8rK0dCRHZkeEtHell5WmYwblZEdyttSEpUb3NjZmh0WDNYUHZCQUNvVWdyZ3Z4WnIrLzdjOXloM2RRWUFDcFdiQ1Nwb0FJQ0ZHMWZkeTl4UWNOMThoYlEva2hxcnY5N0RrVXY3RFdrdDJ4UUVmTTQvT3p1VFkzbzlyK1ZXL3RsRWlwbC8yTFdoM1JhRkRVZm41VklxYnZnbmNmeURTUTJoL0R5dXVuZExQd2pOWCsvUHo5NmJJYzFhZkpPL3dOOHF3cXFDZ0JJQXhVdFRwdHArZUxmaEdFSCtvY0FoaUZ5b283QmhPMmw2blVra1VMN1RzY3gzVEdBQmdDcWxXTUtudGgrT3BwZzhYUm94WUFBb24wYVFBTUNQY3I3Q0pnM3NmazBGRWVPcWV6VGx3Y3dOc2QvbG40UEw2emxZRHNJV3VjNGZMOXF2K3Q5MHl5cFRUakQ5YWxNcmpOVFJ2RlhZOEs5UmV0NmI4YVQzNmZWREpLYW52NWxIQ2QxdG1tWW80Rmh4dnRPQTB1Y2NYQUdBNHVRSC85K2N1YTM5a1R0S2NDQW1rT3prdmNJR3FFcDZSdjB6ZDlNQkFPcVVKZ3QvYS90aE1aUFg4clFHTVdBQUtGUzZiMG4zTHdvYkFJRHo1T255WHpZNE9BL3ozc2cyVXhhNFJNcDcyQ0xYK2RKR2Vvc3Riamh6TUo4RldBNy9GRFg4Wjd6STBxU3E4L3plTkU0dm5xTW83OU5jNUpBdXREY1VPUlF0WGRDL1NpQUJvRlRqcW52ZU5NMHJKM0JyZnl3cHNTUVNoUTA3T1pxNnF3a1F4b3ZjVlFjQXFOTnBRZVB6MnM5dmFpRFdOTTN2QVpZQ0FHd2hONnI5TTkrL0FBQ2NhNHNDaDlPR3hBZWJibENUMU5RNXg1WCsyUEJsWFZyWTBDeXh1R0dIZzhsK0tHcklVa1dZcXZPd1V2SEFqWWdqbTlNb29WVGtrRDVIS2Nrb3dKTFl6Z3VWb1FDVWFseDFxVWp2cVJPNHRUOFZPTXhMWWNOT1hrVjhMZ0ltMWVYblUxTUdBYUJlditiay95cmxPTEFHWWdCUW9KelQ5VTJqV2dCZ1hibkE0ZjJHQit4ZWFrQmU4LzdJUHAzSnc5OW1ZdWFycXdvYm1xVVZOK1Ezb3ZHak1TaHF5TTU4MEQrcE9nL25wR21hMjdsNDRGdjB4YVlrbzF6azhGdUE1YkM1MDhwUVhUSUJLRTYrcjMvZ3pHMU5nY05NOHI2QXdvYnRQTTNGVEVEOXJ1VXBnNjVOQUZDdnh6VjJLV3o3NFZnY0dBREsxUGJEbzV6VEpXOEdBTmhJbmpyLzh4Wkg3WEV1Y3Znc0puSzEzTUQ5ZUljOC9MdnJ4cHNYVWR5UWJvRFRHMUNYamhDT0ZEWDhROEZOYUEvR1ZYZDlYSFhIcFMxOFhIWFBjNUdERHNwbDZ2Sk5VL1dqd1FHb3k3anFVbExFYmFkMWEzL3FrcjFmK2ZuTHZzQjJIbmlPaDBWU2ZBY0FkYnRYVTRGRERxN2ZETEFVQUdCRGJUKzhicHJtZDhjTkFOald1T3JlNVp6SllZdGYwZVdZU01yWmV5MXUvNDhVSjJyNzRWM093ZiswNWQ3TCs1dzN2bmJUNTZxTEczSkgvR00zd0NHY0ZqVThXZnFCYVA1NmJ6NVJjQlBXNlZTUjRqZjBVL0xSbVNLSGt3QkxZak5wTlBnM2lTUUFsQ1FYaHQ1dzc3RzFZeHNsKzZHd1lTZTNhM2crQXJhbXdBRUE2bll2UHk4VkxSZHBLR3dBZ0FMbDYvZ3o1dzRBbU1LNDZ1NmtDUUU3NUN3OHk5T3RVNkhEaDdZZjdpL3R4T1Q4NXVPYzQveG4welFQdC94VjZSemN5Sk0xTnZMVGRDOG5Gb2tMWVJ3cGFQaEhHc3ZTTk0wSFkvUkNxdmE5bWp1c3Z2WCtLOUsxbkVqeWZwdUxQQUFjd3JqcXZqVk5jMTNIeEsxY3l3VU90L0p4WkFMMkI3YVdOcHU4RjRIa3Myc1RBRlR0Y1dxMGs2WkNsL2dpOHpQZnZRQkxBUUEySkk0QUFPeERuaEJ3ZllKOHliVGY4RWZiL3owTTRrdlROR25pMUx2YytMRjR1Y0ZWeXB0OVBtRmVhWW96Mzk5a1VzT1BxaXR1U0JValRkTzhDYkNVcFJ2eW0xUFFNMDhSU1lGZ0QyVWhMZWE5T3VGRm0vazl6SldRRDNUTkJhQVU0NnE3bFRzdVNURFlqQUtIQ1NsczJGcmFtTHZqUFFoazEvSSt3aDBIQkFDcTlhenRoOCs1V1ZJeDJuNTQ1SmtQQU1xa3NBRUEyTGN6K1pJcGdmOWQwelRkam44eTNidjhtbjdPRkR3ME9RZjF3K2xQdEJocnpsKytuMzhlN2ZFZWJMSmMzR3FLRy9MQlA1YXNlM0NLR240Z29TdXNuYXZEU25YbW9uMDlYMUIzdldnem4xUUo2bnNXZ0dLTXErNisrK0d0WE12RjBiY0tYSHNZYlQrOGxPU3lsU0dQYXdVNHEydjc0WFdwSFowQmdMVzhTYy93aFhVZUxLb1lBd0Q0aThJR0FHQk9lYS9qZS95ejdZY1U1M2c1Y2E1NWwzK2U1Yjl4MGYvdVM4NXpiM0xlNXFuak0vLzlWZExydUg3bWYzUS8vL1BPZ2ZMblV4N3VrM0hWdlp2eWwxWlIzS0FUWXdpTFRSUy9TQXI0bm41WkVjN1Qwcm9QN1VOT2pyK2p5S0U0NlR4OWJmdkIreGlBSXVRQ0I4OXNtN3VaQWp4cEFrWnBDNDhnRnphOFdQcHgyTUxIOUprdGJ0WEFYRkpINTdmMi93Q2dhdTlLbWRhVTQzQ2EzZ0ZBWVhKREpJVU5BTUJCaktzdTdTZWtuMzBWT2x6bTVwbjdvSkliUktZaWplZFRGelNjOWI5OS9lSTV0UDN3cE8ySFVaTE1RYVdpaHJ2anFyc3VzUG1YTSs5TGhRM3h2QnBYWFNzaC9OOVNrVVB1ekhvalQxK2hES21MMW5FdVRnR0EwTVpWOXlUZGl6bExHN3VaTzFpeEFZVU5XenRTMkFDc1lXOGIxUUJBQ0YwTzdJZVc5OFhGNFFDZ01Ma1Jra25QQUVBSXFkQWg1ejYzVGRQY1R2SFNuQlBOdjUza2ZJOGJPZi8yMWo0TEc1cFNKemUwL1pBNlYzN1dqZVBnZEEwL28rMkhPN243dmZkbFBPL0hWZmRvNlFmaEtpWTVGT2xtbnVLUUNuZGVMdjFnQUJCYnVsYmxSUDAzVHRWR1RIRFlnTUtHcmJtZkJOYVZya3ZQYzJjakFLQk92NTUyTUF6TTh3djg1WXZqQUpRaU5RclZ2QllBaUdwY2RTbVg0Y25aNWJYOThDai9kdzhYZE9KT2NxT3JOTW43dzZFV1VWeHhRNjdpZGJON1dMOElZUDVESW5ob2FRckIvWnkwejVvVU9SVHBSZTZtZGN2N0hZRElVbkYwTG5ENHc0bmFTRW9rL2FDci91VnljRXhodytZMExnQTJWVUxDSXdDd2c3WWZVdWZDeUJNY1RHMkF2eHdzMFFSZ0U3bUpyY1pIQUVCUjhuU0MvMHdvYVBzaHhlMVQ0Y09kZ3FkU2ZjelBsQjhPV2NSd2tXS0tHM0lGek84QmxySmtSK09xZTdMMGczQ1dZcHV3VG5KUncrZWxINGhkS0hJb3pqVlRIQUFvUVhvd2J2c2hqWFQ4MHduYnlEMEZEaGZMaFEyQ1k1dDdFSEd6Q29ndlRjcng3QWtBVlh1V3IvZmhtdW5rbURIUU5GL0U3b0dDMklPRTg5bGZBeWhRanE5ZWVuK1RpenR2NVFLSTYvay8zOHIvMzNkeXJ0OFVVcTdzYVo3czhZOC9lU0pGY2NJWE4rU2syblRnYndaWXpsTHBmdjhEaVRPaDZUbzZNVVVPeFhtUnY2UHUrTjRHSUtyMEFOMzJ3NDM4WUQzVlEvc1NLSEE0aCtlenJkMVZFQTdzNExuZ0sxVGp4RFFXNEFKUnIvZUtHMWl5TDAzVHBEam9hekVnV0x5UHBUUXRTUk9oNUh6QnY2VHIrVXU1VFFCMXkwVUZ4NG84dHhPNnVDSGY0Qm9yZWppNjMvK2c3WWM3K2N0R0FsWThKb3ZzbVNLSG90ek1VeHdVK3dBUVZycTN5TjBLRkxOdkpoVTR2SFh2K3hlRkRWczV5WVd3UlhicFlEUGpxbXRyUFdSNWp5WTluOTdQSFc1dWVVNmQxYlgwSGV5WkU0cVdraW1lNTlIcWxLdmFLYTU1SC9yT21hNTI5eWZ1YXNmVkZEY3NRMnB5OXk3SGZUNUxtQWNJNzJPK2p5OGlqeWZ2MzhqN09welRUczRmVHJzNG0rUUxBSlFnWkhHREJQSVFmaGJVK0ljSklxRU40NnE3cy9TRE1DZEZEa1Y1MC9iRGM1OFJBS0xLOXhXMzJuNzQ3SjVpSTQvYmZtaVdYdURROXNNamhRMGJTOEdzVzVKVnFNR1pJUDZGQWRsY1JQY29KK2JaMDVuZWs5dzFsdmlxVFg0RzZwWHZXYTlNdk1yUEJhYy80b3JUU3NXTWp5TEZDL1A5bmZPOHZZKzVTN0NrUmlqREE1OVhLbURmWUI1SHFWaFJuaGNBVUl0d3hRMnBBMlZLMUFpd2xLWDZiVngxejVkK0VNNXEreUZ0R055THN5SXlTVGtIcHNpaEdGM2JENk1OVUFBaVM0VjQ3cnMzdHVnQ2g3WWZVdGZXM3dNc3BTUmZ4bFYzYStrSGdXWEpFMHBlNTUvdmNrSmMrcjhmZWp2c0xFMFR1bVVTREFDSGxCTzQvcFhFbFNlOHZWVGNPSWtuUHg3ZkEvTk1zN24zNlR5S3B3RXd0M3hQSm9kZ2VsOXlzYUxDRVFDZ1dtR0tHL0swaGs4QmxySlV1dC8vb08ySDE4YmpoWlNLR3U2WE1tWnhDWDRvY2pEaEpLNC8ybjQ0V25xSFp3RGlHbGZkZmNYdUcxdGtnVU11YlBnandGSks4akY5eHBaK0VLRDVwK0FoZFhZK25kVDUyclZuSjZmSm93QVFSazcwK3A3c2xlT1A3K3hiYnkxYVFham5tdlZwYUFmQW9ka3ZtTTV2dWFCQnNTSUFzQWovaS9BaTIzNTRwN0RoWUZLaStHMkZEZjlJSTNaemwzT0ZEZkU4SFZmZGRZVU5NYVVINmR3SjltNytiaUdlbEFENUxTZndBRUE0T1VuL2xUT3prWFI5WDB5UVNHSERWbzRVTnNENThuTnM2bUxicGowSGgya3J2bDhBQ0MzRkU5SytkYjdlSHpsYm04dlBZWlFqZFhPK29iQUJnRU5xKytHNTR0S2REVG1mcTAzWGRZVU5BTUNTSExTNElYVkx5VW5reHNBZnhtbWl1Tkh4Lzd3ZjA4UEE3d0dXdzc4ZDVRYzJZL1VLa0lORjF4VTVoSFd0YVpxdnFaQnI2UWNDZ0pqR1ZmZFNndW5HWGl5aHdFRmh3MVplbWR3RjYwbDdEam5wVVpIZFp1NlZ0RmdBbGkzZkc5L0lpV0tzVDNGRE9UN21ZaDdKandBY21pSzc3WjNteDl5Unp3VUFMTlhCaWh2YWZuaHJXc1BCU0JRL0kzVXdiL3ZoYzM0L1hndXpNSm9jWUxnaEdhZE1aNG9jSkNmRzlIdWVuQVFBNGVSbmxRZk96RWFxTG5CbysrR1d3b2FOL1pLTGhZQU41TS9OYmNYNjY5UE5HWUNTNU1sTmR4UTBiaVRTdGQ1OXg4Vk9UTzBESUlLMkg1NlkyckFWK1RFQUFObnN4UTBwSVNGM3gzL3NKTXp1aXh2aGY4dEZObCticHVraXJZdnZDUVIzY3lXNjdqS0YwLzB5dElmcG1weUt2SlorSUFDSVoxeDFIL0lrS05iM0lnZU9xcElMRy83MFB0akl6K09xZTEzUWVpR1UxQlV2Rit0L2NXYldJb2tPZ09LWUdyZ1JrNXJLNEJrUWdDamtKRzN1Z2Z3WUFJQi96RnJjMFBiRDg1eVFvRHYrL0o0YVEvcVBsUERUOXNPb3lDYWs5TkIyUFhYOVgvcUJxRTBLRnVVaWg2T2xINHRnMGpYNXEwNmJBRVNVN3dsMXo5N01tNW9LSEJRMmJDVTlVNW5RQmRPNDR4cTBsanNGckJFQS9pTlBEVlRnc0FiN3gwWHdIQWpBd2JYOWNFZGg1RVpPbTlSK0tHak5BQUI3TjF0eFE5c1BLU25sVjZkMGR1OVRNbkhlb0YyODlDQ1ZKNGU4V2ZxeENPaVgvRjcxMEZhNVBEM21SaDZyU0J4L3RQM3cwdmtBSUpyVVBidHBtbHVTU3pkU1JZR0R3b2F0M1BaTUJkUEpUVUlrOGwzTk5FQUFpcFhqWnhyeVhPMVc5QVV1bmFaaEFBUmhhc1A2UG1wU0N3Qnd2cjBYTitSazh0UWh2M01PWnBVU2YrNk9xKzdSZ2w3emhkcCt1SjRMYkQ2WkhCTE9VUzVxTUM1M1FkSURlaHFybUw2bkpDcUc4cUx0Qjhsd0FJU1Q3eDJ1NXk1R3JLZm9Bb2YwRE5jMGpjU005WjNrRGwvSHBTd1lTcEdUeEg1endpNmxJeU1BcFh2dURGNUpjUU1Bc0k1bmp0SmFVcDZNaGhvQUFCZllhM0ZEN2dEOXljR2YzYXVVK0tORHgxL2Fma2hqV0w4cXNBbG55TWszS3ZjWExIMVA1VVJGbzcvanVKY20zT1NFUWdBSUpYVXhTdDJNbkpXMXBRS0g0Z0lrK1Q3a1dHSDYycjdrUFFBZHZtQi9UTGtEZ0lybGUrbFh6dkdsSk44QkFKY3FjUy82UUQ3S2t3RUF1TnplaWh0eTUrY1hqditzdnVSa2NRSFhMRThOZVJoaU1adzZuU3B5Ui9JTnA5TG83elRCdy9qdk1GSWk0ZGUySDNUakFpQ2MzTTNJUGNQNi9pZ3BxS1N3WVdNZmM5RVBzRWQ1LytLOVkzd3hDUXdBVk9DdGt3Z0FzQk1KKzFjN01iRUJBT0Jxa3hjM3BFU0UxUEhaT1BMWlBVMEpEWkxGQ2U2cHFTSmNKbmNvdUpFbmUzQjRmMHBRQVNDaWZNK2dxK2I2aWlod1VOaXdzZmNDWVRBckNZOEFVTEZ4MVIyYkZIaXBLSk4rUHdSWVEwajI4Z0VJNEpHVGNDWFhhd0NBTlV4YTNKQTNUYjVLUkpqVmtLYzFDTEFTMlcrcEs3LzM2Zm5hZm5qZDlvT0pLMWtxMGtxVFBkS0VqeEFMSWlWRDZySUJRRGg1WXQwdnpzemEwalg5VHZBMUtteFlYM3JHRWl5RUdZMnI3cDNqZlNsVFpBQ29nY1Q1aTNWUkY4YmZKRXNDY0RBNVg4emU3dVYrMHdnVUFHQTlreFUzdFAzd1BDVkxPTzZ6U2wzdzc1aldRR0FmYzFIRGN5ZnB2MUxDZU5zUFk5TTB6Nkt0TFlMMFlKL2VQK2toZituSElvQTNDbkFBaUdoY2RhK2Jwdm5aeVZuYnA3WWZRaWFmdHYyZ3NHRjlyenhqd2NGOGNlZ3ZwTGdCZ0Jvb2JxQmtML0pFUkFBNEJFVjJWN0NuQ3dDd3ZrbUtHOXArU04zWWYzWGNaL1BGdEFhQ081MG80Z0gySEtsamJ0c1BxU2pwVGJqRkJaUWY4bTlJSWptNEZCaDV2ZkJqQUVCQXVaUDJBK2RtYlg5R0szREloUTAzQXl5bEJFL3oxQkxnTUk0ZGR3Q0FnOUx3N1hLbWpRRndLSEpETG1jS05RREFCbll1Ym1qN0lYVXhlZXlnenlaMWFMeGxXZ05CblRSTmM5ZEVrZk9sampsdFA2UXhnNTkwcGQxTWVqK2w3NzZVekZYU3VpdjBMQmMwQWtBbzQ2cEx6NlczblpXMWhTbHdVTml3a1FlYUhNREJLVzRBZ0lybFowdGkrK3o4WE9wZWp0MER3T3pYSUVmOFl2OXY3LzZ1bzhheVBRQWY5ZXAzVEFTWUNHUWl3RVFBL2F3SG13amFIUUVtZ2pZUllEL291U0VDN0Fpd0ltZ1RBVGdDelRyZHUzb01sUCtVWFgrT3BPOWJ5K3ZlTzNkbVduVlVxbElkN2QvZU1ZVWFBSUE3ZWxDNElUWkgzS0N1Unk0YWY2cERJd1hMSFVTMytxYTJzVHhIRklSL1RTblZ4UjNjZ09SaXJyNnBxNWdPd21ic0NUZ0FVS0srcVM5aTJ0T2xFM1FuNXpsOHU4a0RFR3hZeUZPRlZsQUU0UVlBZ00xeVAzYTdISEQ0VnRyVVJnREdxMm83VXh0dTlxN2tnd01BS05HOXd3MVJoQ0RZc0I0Zm8yamNoaDBsT3NuRjVqcUl6bGUxM1dIVmRyMEpOOHVWcDRQa3pyVmplazBEa3dNT3duWUFGQ2VtUGVXQy9TL096cTN5SkxHTFRRVWNvbG1DWU1QdGNsam5zZjBBQUFDQS94b2JjTHRITWJYUnN6c0Exa0c0NFdhK2p3RUFGblN2Y0lQdWltdjFXOS9VcnliMGVobU9Mb3BzOXAyem4xVnR0eCtoaGplbEhkdFk1TTYxTWNYaGJPcHJzU0Z2QkJ3QUtGWGYxTnZ1RWU1a0l3RUhVeUR2TElkMHRuTm9aeURIQ3dBQXNBNSs3OTlkYmxUVTU5L2htNTdlQ01Db21SWjB2YTV2NnZOU0R3NEFvRlFMaHhzRUc5Wm0xcDN4dzBSZUw4TXhlMi91S0xMNVdkVjJPM25jYjBycGZXbkhObFo5VSsrYTRyQXhPZUFnNEFSQWtlSWU0YU96YzZ1MUJod0VHKzRzUC9RU2JBQUFBUGpacVRWWldQNGQvalUvdjZyYTdtQmd4dzVBK1lRYnJxZm1Dd0RnSGhZS04wUVJnbURENnAzMVRiMmxpSUVDUGZQZW5DOFhnMVZ0bHhQM242TkFqRFc2TXNXaHMrNXI5ejZIZWliMm1nRVlpSmlDOTg3NXVsVytmMTE1OXlqQmhqdkxld0x1cjZCTXV0MENBR3llY01QOTVkLy9mOFkwaC94M1hMV2RnbFFBSHNxZTcvWGN0d0FBM01PZHd3MTVjOE1ONlZxOGpRNmpVSkxYdVhEY3VMejU0dlB4YTBxcEx2SDRwaVNLd041T2ZSMDJ3RWhyQUlyVk4vV0IrNE03ZVJLVEdsZkNuc0tkbmRnVGdLSUpIbDNQbmhFQWcxZTFuWHZ4QWNqTmpxYStCa3UwbDFMNiswclk0VVBWZHE5Rzgrb0FXRGxOOEc3bXZnVUE0SDUrdmN0L3FtcTd3OWpjWUxWZXVMR2xNTG13WnQ5Sm1TOUc5LzVaNHJGTldkL1VoMUU4ZDI2S3h0bzhpcEdhSHY0QlVLUzRQOGlGKysrZG9SdjlFM0RvbTNxcFhSdmozc3lld3UxeXM0UEQwZzhTSms2byszcW1mQUxBdUpVMk5mbE1nSDRsWHVhL3F2M3VkT2YvNHlnL0F6RFpIWUE1N0pWYzc2elVBd01BS04ydGt4dXF0c3VGelcrY3laVzZUQ2s5Rld5Z0lIbWo4ckZndzN5NWEwM3VZQ1BZVUs2K3FYTlIzbGFCRDF6RzdIa0VmZ0NnU0gxVDV3TDdGODdPclhMQVlXbmR0d1ViN3V5MVlBTU1nb21OQURCdW1yZGNyN1NpOXFNQ2ptRXE2bWdXOGZYS2hJZHZWZHNkNmRZTmdQdW5HNmtCQXdDNHB4dkREVlhiYmV0c3VYSmZVa3JidVJCMzVLK1RZY2hCbTJkOVUrL292dkt6dkVtYk4yeFRTbitWZG16TWw5L0x1UU91NVZtYlArUGVBUUNLRklIeXA4N09yZXFxN1I3ODRFV3c0YzVlUlBnR0tGalZkaDdXMzBEVEZnQkd3dmY5UVBSTi9XSHFhN0JoZVpyejd5bWx6MWNDRC9udlF6Uk9CQUNFR3dBQTd1M1hXLzZEYnJSV3E0dkNXeWpCYnphRDU2dmFiaXMrRDNWb0hLRGNBVGU2RHd1bHJNZXhoNEFBbEN3SHk2dTJlNXhTdW9pSDhjeVhwektkOWsxOXIrOTF3WVk3eStIeXBVM0tBRlpLa1JZQWpGZzhCM2p1SEYrcnhHZkd1YkhSbXdLT2cvOTdtZitxdHJ2YVBQRkxQRGM0MXV3UFlKUThGd1lBWU9tdW5keVFSMG1tbEo1WThwVTVFMnlnRUcvN3BxNEVHK2FMb3F5dmdnM0RGdS92WjFOZmh6WEpoWkN2SnZGS0FSaXNQS1dzYitxdGVNRE85WjdmWjRKRDFYYUhnZzIzeWxQem5nbzJ3REJFc2FQUHRldWRsWHBnQUxDQUE0dDFveEtMMG84S09BWnU5eVJDS0gvL01PWGgyTE1FQU1iTWxFc0FnUHViTzdtaGFydWRHQ1hKYXB6ZHQvc2xMTkZKMzlTNkRsNGp4dWErdjlkL21DTGx3ckdxN1o2bWxNNTFhVjY1WE5Bb01FVXBjbUZ1NzJ3QTgvUk52UjBUbmdSWnI1Yy9SNC92K3RzaGdnMDZaOTRzQnh1MmM4aW01SU1Fdm5Ob09XNmtBeThBWStCM3pNMksrNzdQdjZtcXRudm5tZlpnNWZEd1h0VjJWNCsvdXpMbHdXOW1nR0V3K1dvK2paVUFBQjVnYnJnaE5nMVlEY0VHTmkxdkRPN2FGSnl2YXJ0OGZYNHE4ZGg0dUR6eXVHcTc3WGdRSStDd09uVytsblNqQUdBSThrUzltRTdnSWN6MS9pazJ1QzNnSU5od0oxOXlxR1lBeHdrRVRXRHVSTGloZkcrcXR2TWRQUTBmY3lETGRDaFlURXh3NWdhbDd2WDJUWDBRemFyczk0OURiajd4Wi82N0VucTRqR1pLUjc3Zm1LQlBQd1NBR0tmWjUxeStqL2Y3ZWp5Y1N3Q0FCL2pseC85b2pIL1V0WEkxdmdnMnNFSDVSL0d6WEx3bDJQQ3pYUEJldGQwM3dZYnhpL2YvZGx3VHJJN0pNQUFNUnZ4T08zSEdiclIzVThHUFlNT2RuQWsyd0xCVWJiZVZVaExhdnAwMWduSzhUQ2w5enZ1YzhSa0czQ0lLNC9lczA0M09DajYyN0tDQVkyQjFIc1UxbXIvZitpdC9wL242OVgwSGpNRHNjKzd2YU1MRE9LakpBUUI0Z0ovQ0RibnJnUVZkaVZ4RXV6UEMxOFV3dk82YmVrdEhrNS9sVGMrcTdmSzYvSzJ6ejNSRXdNRm44bXE5R3ZPTEEyQjhZaXJCVzZmMlJuTUREbEVNSk5od3N4UE5EbUJZb2tqSzFMODdNTFVQaXZSSXNTL2NMbjdMdkxkVXR5cjZ1NzV2Nm1NTkN5YnBlVnkvWDY4RUh2TDA3cU9ZNEEwd1JNL3pkUHloSFBlUWpuVUQxT1lBQUR6QWQrR0dtTnJ3eElLdWhHNzViRUl1b0tsaVk1Y2ZSR0hXVjlOcXBpbkdlcjZZK2pxczBLT3E3UVJJQUJpVXZxbno5SUhYenRxTjltSkt3ejhVQTkzSjJ3alBBQU1SRCtlL0NqYmNTZW1kbkFGZ3JxcnRQdmd0YzJmRkJ4bmpOOWVYQWc2RnpjcDFEcjlIOS9PclV4NCtSQjBFd0JBSURBQUFNSG0vL3JBQU92bXN4dXNvb29WMTZmcW1WbFI4RFFWWXpPVHVrbFhiL1pGUyt0T2lySVJ4MEFBTVRnNEc1MDUvS2FWUHp0NjEzbFJ0bDZLanVmdnFtLzNSTjdVSm1UQVFNYTNoVkJPRWhXaW9BY0NnUklqUjc3MEZER2hLMDI1TTZZWWZ2Y3gvc1pjeGs4TXcrZmY2QjgveEFWZ0J6VzhCQUI3Z3YzQkRkRmQrYmpHWDdxT3UrYXpSRjFOQ3JoZWZjNmM2TDNKVkxqYUx3SXZpRlFEZ0h4R0FmS29vNGtadkNqNjJVdnpXTi9XSHFTOENESUZRdy8zWjl3UmdLRFE5dXJlUFF6blFYS0JldGQwTDRSWHU2RWswdnZyelN1amhNb2NkY29CM1FLRWVBTXAwN3J3QUFOemYxY2tOUmpFRmFrK1lBQUFnQUVsRVFWU3V4djRZWHhURnladHR1MzFUKzRFMFJ4UXBYQWcxY0lQOFdmM1pBZ0VBTTFFVThkaDlKUGYwUWlFRWxDMzJDbktuMWoybjZ0NEdVK3dJd0RURmxJYmpLR0xtZmdZMWlTNmFGUWc0Y0YrUDR2ZkIzZzlUSHM0aThDRFlDL0M5WGVzQkFNQXFYQTAzS01KZnZyYzY2TE1HcjIybXphZnpJbmVWZzBGVjI1MlpZQVFBWEpWL3oxVnR0eTNnd0lLZTVuQ01SWU95UkhIanZqRERVZzJxMkJHQWNZdm5BYm1SMjRGbkFrdnpaWWloN1FnNFBOUFFpQ1hLejQ2ZVYyMTNkZnJMeHdnOG1OZ0lBQUFBUy9aUHVLRnF1eDFkUzVhdmIrckRzYjBtaW5MU043VlEwaldxdGp0V3NNQ0N6b1ViQUlBZlJXQjlxMnE3QzcrYnVVV2VxTGV0eVFGc1JvUVhjaUJ0SnpvSEttcGNyYzZFR2dEV0tjSUxzKy81bmZqekcyMjFCaHRraklaR3BqR3lTaS96MzVVSkQ1ZHh6UnpaRndBQUFJQ0htVTF1ZUdVZGwrN2R5RjRQNWNpN1pMczJ4dWFyMmk0SFB0N2Y1ei9MNUxtbUFJQnI5VTI5WGJYZHFUQWsxOGdkVGJjdERxV0p6NjBoMlZGOE5oaWF1Z0NVWVQ4Q2ZrT3hKWUE0SEgxVEQzcEswNVZtQlg3THN3NzVkOHliL0hjbDhIQ1M3NXROZHdRQUFJREZ6TUlOTzladDZZeWdaTmx5eDQ4ZEcyRHp4UVNhVTBVUVBNQ1FIZ0lPZ2k2ZUFJeE4zOVM3Sm9ReHgxbCtiMWdZQ3FXSWkxWElVeHZzZlFLVTRZbnBCYXpJSDJOWjJQZ3RyekVXbTVEM2ovWWk3R0N5QXdBQUFOelJML0Z2MjdKZ3k2V2dreVY3MFRmMWxtRER6L0lvNnFydDhycDhGbXpnZ1FUOUFJQmI5VTJkQ3lMZVdpbkNSOEVHWUlMMm5YUUFHTFV2UTUvYThLTytxWE9qZ3NjeEhSMDJZVGJaNFd2VmRuMmVLQktOMndBWUowRTJBSUFIbUlVYmRIRmJMaHRqTE12cnZxa3JZWm41cXJZN3o1dUFPbFB4VURHNlhUaG11YzdHOUdJQTRLcStxUS96dmJwRm1ieDNmVk8vbXZvaUFKT1RQL3ZPblhZQUdMVlJCaGx6dC95K3FYTXgrYlBvb2crYmxPc3pQa2ZRNFNLZVV3RXdFdlpPQUFBZTVwZXE3YmF0NGRKSjRQSlFKeEZxT0xhU1A2dmE3amh2OXFXVTZ0S09qY0U2ZE9xV1RpZ0xnRkdMZS9VWHp2Smt2ZTJiK21EcWl3Qk16aGVmZlFBd2V1L0czbkFyRnh2bWFlbWFGbENRM01UdFV3UWR6azEwQUFBQVlPcnk1QWJoaHVVekNZUDd5bE0vSHZkTmJiei9IRlhiN1Vlb1lhKzRnMk93cXJaNzVYTjdKWVFiQUJpOUtQaDQ1a3hQenV1WTNnRXdOYnJKQXNDNGRWTUtNdWFtQmJuUm1KQURoYW12VEhRNGNuSUFBQUNZb2wrYzlkVXdFWU1GNWZHM3ovSTQzRHdXMStKOUwzY29xZG91cjh2N2tvNkwwVEFoWlFYRzN0MExBR1ppdlBUVHVLZG4vRjZZc0FkTTFHOTlVMTg0K1FBd1dwZFREVEplQ1RuazVnVmZDamdrbVBuOXlqU0hMYXNDQUFEQVZBZzNySTdPKzl4Vjd2cTVGVVZSWEpFMzZ2S0dYZTVRa2xKNlpHMVl0cXJ0VHIyM1Z1SnNoSzhKQUs0VnhaN2JBZzZqOTFTQUU1aW92SGYxd2NrSGdGR2JmUE90L0p5dWIrcnRDRHE4TGVDUVlDWlBjL2dxNUFBd0hGWGJtWDRKQVBBQXZ4Z252akp2UnZxNldKNTNlWU5VMTgvNW91ajhhMnpZd1NyZVkvbmFlMjVsVjBMUkh3Q1RrNHRBY21oWmw4ZFJ5cUdWeHpxV0F4UDEydDRWQUl6ZVU3OTN2dGMzOVdHRUhCNm5sRDZXZEd4TW1wQURBQUFBazVERERUYXJWaVFLWitGSEh5UFVjR0JsZmxhMTNWRWVzYXJvbkZXcTJ1NHdwYlJua1ZmbWFLU3ZDd0J1bGJzOG1tSTBLbDlpMHQ2a081Z0NreVhZQUFEamRpblljTE5vWlBEcVN0REJSQWRLTUFzNXVGY0hBQUJnbElRYlZtdXZhcnY5TWI5QUZ0SkZ0ODlYbHUxbitWcUpVTVB2cFIwYjR4TEJCdE4xVnVlajRqOEFwcTV2Nmp3aDhXVHE2ekFDWFlSVkFLYm9tV0FEQUl6YUxNanRPZkVkUmREaE1CcVk1YkREQzgwTjJMQmNpOUJYYmJmclJBQUFEOUUzOWFrRmhIRnhYVE4wdjNnVHI5ejdxdTEyUnY0YXVkbGxQQkRlVWZEN3MzeDlWRzJYMStWOWFjZkcrQWcycklXcERRRHc3NGJSdm82T2czYVdmOE5OZlJHQVNmb1N6VG5Pblg0QUdLMTNndHdQbDUreDUrWUdQNFFkUGc3OWRURkluNnEyKytEVUFRQUFNQmEveHV2SVhTV2VPNnNyODdscU8yTmRwOG40L210VWJiZVZVanFOMGFtd2p2ZGN2aGIzclBSS25RbE5Bc0QvNVk2T0VlVDkwN0lNeWttRVV3Q201bTMrN25MV0FXRFVuZ2t4cmtic2pmKzNQeDdQd2ZJMDl3UFB3bGlEbDdFSHRhM1pIZ0RBMHFpbkhRYm5DVVpvRm00NGRaR3YzSG5WZGpZVHBrTXh6QTJpZThqTFlnK1EwYW5hN3R6RGc3VlFCQU1BUCtpYitxaHF1eHgwLzh2YURJTENYbUNLdXBUU3JuMUxBQmcxejYzV0xPNnRqdVB2UDFYYjVjRER2dWRrck1DamxOSlhUUmVCTmNxMVptOHNPQUFBeXpZTE54eTU0Vnk1dkpsd1ViWGRqczJFVWV2NnB0NloraUpjcDJxN1E1ODFyRk4wUnJxSXoyQlc2Nk9wRFFBd1g5L1VINnEyZTVGUyttU0ppbWJ5SGpBMWx4RnEwTDBaQU1aTGlMRXdlWThncGZUaDZsSGxCbmtSZU1oL1Q2YStSanpZMzNrZnlqTWJnSTNhdlRyUkNRQ0F4ZndUYnNnYldsWGJ2VXNwL1c3OVZ1cFJiQ2JvbGpBK2w4WjhYcTlxdTd3Wis3N1U0Mk9jb3Z1UkRzbnJvK3NYQU53Z1AxRE92d1h6YjBMclZDUVAvWUdwRWVnQ2dIRVRhaGlRZUc1OCtPTjA1SGpPa2YvMnByNUdMT3lUZ0FNQUFBQkQ5Y3VWNHo1MEZ0Y21CeHgySi9KYXh5NkhHcDcxVGIxbGcvaG5lVkpKMVhiZkJCdFl0NnJ0amdRYjF1b1BuNEVBY0xzb1ZuZ2N2eU1veDFNUCs0R0ptTzFqVllJTkFEQmFPZFR3T0U4WnQyYzdmSG5LUTkvVSszSC85czlmL2cyYjkrUlRTbCttdmo3YzZsTk1CUUVBdUlzenEvUXpOWjVsYzM2dTVYcG04SDZkdllDWTNwQTNRdjUwV3RjaWJ5YTg3WnRhcUdTNGRMaTdSdFYyV3pGaXJ5N3lBQm10ZU85ZHhLUWMxdU9zYitvamF3MEFkeFBGSlZ0VjIrVjdsaWVXYmFOTTRBT200aVNsZE9EekRnQkd6VE9yaVlqR0NVZng5eDlUSHJoR2ZsNHI0QURETXBqZjdqR3R1SUFqS1pKaVd3Q0FCN2c2dVNGRmNhSTd6L1Y1VTdXZDdwRERjNkxEM2ZXcXRzdnI4bFd3Z1hXcjJ1NGczbnVDRGV2MWFrb3ZGZ0NXcFcvcWJWMHpOa3F3QVJpNzdzcVVobjJmZHpCSkg1eDJHTDEzTWFYQk15dE1lZUE2VCtMWkxUQWNybG1Bc3V3NEgwVVRKb09SK25YT3k4cEZpbjg3NFd2enZHcTdiNG9xQmlFL0ZONTFudWFMd25LVFg5aUlxdTNPQldvMjRvWFBSQUM0djc2cGQ2dTJ5MFZuTHkzalduMkpjQW5BMk9UUTNINTA4d1dteXo0MmpGY09hUitaQ3M5ZG1mSkEyTXY3VHprQVkwR2dhUGszL2FzQjNzZGZhajQ0bDJKb2hzZyt3bnhiSlI0VTNNSXpBZ2J2cDNCRDN1U28ydTUxU3VtOTA3czIrVWIvYTE1M25WV0tkQmtQZzg2bnZoRHp4QWJvWCtVZEdWUGcvYmRSZitSUm94TisvUUN3RkgxVHY2cmFMaGNaL0c1RjErSXNoMG9tOERxQmFjZ2RlQS90SjNJSGJ4WENBZ3pXU1h6ZksweGdhYUxJUGYvdHovNDdxN2JianNCRGJtYjJ4R3FQenJIQ3ZFRjY0VmtjQTVEcmFKNDdVVDhSK0dDSXpqWGptc3N6cGJJNVAvUFpRMkR3NWsxdXlCc2F4MVhiN2VyV3NIYnZxN2JiVjJoUmxOOTBzWml2YXJ1Y05ELzFvNHhOcU5wdUs5NS9walZzeGtuZjFFY2xIaGpNb1loMWdPSzN5S2VwcndQVDBUZjFRVXowZStPMHIxUytoOW5mNEQ4ZjRLRStScmRteFMwQU1FNWZvZ0Q1eVBRVjFzMlVoOUY3bEtmd2U3WURzRDc1V1pjOUhBQ0ErNWtiYmtqL2JtRHNSNGNHQ2R2MWVsNjFYWjlTZW1aU3dFYjlZWE5uUGtYbGJGb09nWmt1dEZGbmlnSUJZUGx5TitXcTdTN2M1NnlNanRYQWtGeEdKOTFqRDhFQllMUSt4dmY5QjBFR1NtYkt3NmdjL2hoZUFWaUNVM1ZsMXpJeGg2RTUxWVJyTHA5eFpYTis1dk5jZ2NHN050eVEvdDJzMkkzaUNwc1M2L2U1YWp0ZEpkZlBtdCtnYXJ0am5WbllsQWpXWEpnV3NsRTY0QVBBQ3NVVXhRdVRTNWJ1ZFY3YmtiMG1ZQnpPb2xEc1ZKTVRBQmlsTGdvS1BnZ3NNaWFtUEF4V250NndiNDhFWUcxMll0OEhHRGlUV01xVXo4dlUxd0RHN01ad1E5aFJUTG94ZTdFSnRPc0I1OHAxc2M2NjQ4eWhVejZiSmxoVEJNRUdBRmlEdkRsYXRkM1RsTkxmMW5zcFh0aHdCallnVDE0NGoyTEdpd2d2WERnUkFEQjYrUjVnMjdNbXBzcVVoMEhJNTBhNEFWZ21uZDZ2NTlrNmd4TFBwNXkwK1haMHdpL1N6dFFYNERxZWpUSUd0NFliOGdaY2JEcDhkY1kzNHBFcERpdDFLVHh5dlVnNDZockx4bmdQRmtPd0FRRFdLQmZBVm0zM1dLT0JCeE5zQUI0cVA4MzdGcC9IRi9HLzV6MmtiL2FTQUlBNTh1KzNyMVhiK1MwQ3daU0g0anpQdFIvQzE4QVMrVHk1M3ZOU0R3eFltQ0w2TWprdk1HSjNtZHd3Q3pqb0hMbFplWXBEM3R4NTV1SHAwcncyZG5PK0NEU2RLNlJpVTZxMjI0clVjKzBrYkp4Z0F3QnN3SlZHQStjNkc5N0xVdy9xNFI4dkpyUU1GNjU3QUNib1pNVWR1SGQxNHIyWFQxWGJ2ZTJiK25DQXh3NXJjY09VaDRQNDF6eWpYSjI4dmo2ZmdLV0lSajBXOHhxNW1hUFFLd056SnBnemw1cVpNamt2ODUyVmVGQ3dxRHVGRzlML2IwaWZLbmpldUR6Rm9ldWJXdkxzL3Q3MVRYMHcxSU5mSlFYbGxLQnF1Mk9kZW9yeHNXL3FWMU5mQkFEWWxCeHdTQ2x0VjIxMzdoNzl6dkowdnUxWU81ZzhEMDhCWVBRdVZ2eDlmMXExWFM0Ky91eXR0TEEzVWN5bTJBTHVLTUxLQi9IM2o2cnRab1g0R2o4c2o4OGxZTmtVUTE5dk4ycHdnR0Y3VXJYZGpvYlU1Y2pudzIrRWEzbEd5aWo4c3NpTGlBMkY3U2dXWUhQcXF1MzYyTXpoN25MMzhVcXdZYjRvS1ArcWFJcE55WjlwK2JOTnNLRVk3d1FiQUtBTUVXN1haZU4yWC9xbTNoSnNBQUNBNVluaWpjZjVmdHV5THV4NTFYYmZvckVVY0E5NUNuL2YxTnZ4akxkS0tmMmhWdUhCRkNBRHk2Ylk5M3FldHpNMHdqalhjejJYeGZtNG51OWxSbUdoY0VPNjBqblNKbVlSM3NlbXFDa09OOHN6OEI3cmpqT2ZnbkkyTFgrRzVjK3kvSm5tWkJUanRTQVlBSlFsZnMrY09DM1h5bUgyN1VLUERRQUFCaTAvRzR6N2JiOUpGcGVuNFgvTlV4eUdkdUJRb3I2cGo2S3hRUTQ2dkJaMHVCK2ZTY0NTWFZqUWE5VStjeGtZNFlickthWXZpL054UGRjeG83Qnd1Q0Y5djRuWmVSdHNYTjRVL1Z5MW5RK2wrWjdtTHFjNmQvNHNDc3A3QmVWc1N1NVdWYlhkZVl3MGYrUkVGT05GN29RMDlVVUFnQkwxVFcxNjMzeG53dXdBQUxCNjhadmtOMHQ5TDUrcXRqc2M0SEZEc1dLcXcxWk1sMUczQUxBNU9rVGZUQUV1UXlLc2REMWhwVUxFZWFpbnZnNDNjQjB6Q3ZjS044emtvdkdVMGtkdmhTTGswYlo5N3NJLzlZVzRxbTlxSDlZL2lJTHliMUZRRHB0NkgrYmkrYTl1Tm90eUdWTnVoT1VBQUFBQWdMbjZwdjZRRzB2cGxuNHZielFyZytXTHhveTVidUdaejZZN1U1Z0hMSTNueTdmNnZmRGpnLytvczd1VnVzd3lPQTgzY0IwekZnOEtONlIvTDRhY01IM3JIVkdNOTdsd1BYZmxuL3BDOEwwclhmSy82cEpmbkx6UittRUtMelFIc0dKaXlGNEJoOFAvbmNVWVoxTnVBQUFBQUlBYjVRZmwwUzFkcC9URlBZL25lRnRETzNBb1hkL1U1L0haZE9aa0FheWR6OTRibU9ERndMaWVyN2ZudDl4bXhmcXJPYnVlNjVmUmVIQzRJZjI3VVhCb0RHMVJjdUg2NTF6STdndVZwRXQrNlY1SFVmbW9Selhtd0ZXRUd0NFhjRGg4NzQrK3FYWG9BUUFBQUFBV0VwM1MzMW0xaGVYbmVGK3J0ck12Q3lzUXp6eE9yTzJOZlA0QXkyWjZ3ODNlbEh4dzhBUFg4ODJPU2o2NENiRCtOM1A5TWhwTENUY2tZMmhMVmNmbTZQSFVGMktxZE1rdjJrbmYxRlhmMUtPK1BpUFVrS2NCZkM3Z2NQalpzNzZwM2ZnREFBQUFBUGZTTi9WQlN1bUYxYnVYVDdyNHdtcjBUYjJmVXZwaWVRSFc1b09sdnBuYUxRWkVjZlROOHZTR25aSVBjS3lxdHR0V0Eza3IxeStqc2JSd1F6S0d0bVQ1UzdXM1FUb2RWd3JLZGNrdlR4ZWhodjB4djhnOE5TWlBqNGxRdzZNQ0RvbnZuY1g3Y05RVFF3QUFBQUNBMWV1Yk9qODhmNndCMnIyOHFkcE84UUdzaG1makFHc1N6NTJGeW02bUlKcEJpTjkzM0V4WWFUTUU2VzdoK21WTWxocHVtREdHdGxodkl1UXc2cUxxS1l1Qzhnc0Y1VVhLRDNVZXgrZmpxRVhIZ2E4eFBZYnkvQkVqbVFFQUFBQUFscUp2Nm0vUkFPM01paTdzZVc1WWxaL3hET3k0b1doam41NE9VQ0JGcDdkVGRNcFErRjEzczFxVDZmV3EydTVBSGRxdFhMZU15a3JDRGNrWTJ0SzlqMDFTaWVBUmlTNzV1YUQ4eWRUWG9qQTUxUEFzUDlUSkQzZkcvRUp6cUNFSHFJd0FLOVlzWUhNMDlZVUFBQUFBQUZZakdxdTh0YndMeXcycnZsWnQ5MnBneHcybDAwVWNZSDJFRzI3M3lOUXVCc0wxZkx2Y1pGcGowVFdJZGY1ejlDLzA0Vnkzak1yS3dnM3ArekcwTmczS2t6ZEpQd3M1RE4rVmduTHB4UEs4amxERCtaaGZaSjRHSTlSUXZIZFRDTmdBQUFBQUFKdlhOM1h1WVBuTXFiaVh2NnEyMDZBR2x1ZkNXZ0tzUjlTSVhWcnVXK1dwWGFZTFVUcnYwYnY1VkxYZDloQU9kS2hpZlQ5TmZSM3V5SFhMcUt3MDNKRCtQNFkyZjhpODg5WXAwaXprY0c3YzdiQW9LQy9hU2QvVTFkakgzVjU1RDc0djRIQ1lielk1NU1ENkFBQUFBQURyRWsxL05FQzduOTlqV2pjQXdOQUlhZDdOWHRWMk9teFRyR2ljZWVZTTNjbmZBZzZyRWV2Njl4aGYyd3FjYVhqTDJLdzgzREFUaFpVdnZJT0tWY2U0V3lHSHd1VkpHM25paG9MeUluWDVZVTNmMVB0amZwSGVnNE54TW9YSklRQUFBQUJBbWE0MFFQdm9GQzJzanVucmltUUFnQ0ZSc0g5M0x3VmFLWnpyK2U1eXdHRjNLQWM3QkxHZWdnMTM1M3BsZE5ZV2JrZ3hnaXgzTTQ4Q1lNcjBYOGpCK1NsTERwM0VlZmtjRXpjb3g2dzcvczZZVTVCWFFnM2VnMldidlI5SEhiSUJBQUFBQUlhaGIrcFhLYVhYVHRmQ0hrV1J6S3VCSFRlVTVMbXpBYkErMFhoUHQvZTd5NEhXUHRkaURPV0FtWlJqcDNzaG42cTJPeHpROFJZcjF2SFQxTmRoRVgxVG01ekU2S3cxM0RDVEM0QlRTbjk0T3hWdGRnUHRScVVBVmR1ZDV0QkpoRThveTI5ajc0NHZXRE1vNzB4ckFBQUFBQUJLMHpkMWZ0NzBOSnF6c0ppL3FyWlRxQUFMRWd3QzJCajNMWXY3WExXZHJ0c1VKWnE3bXNLM21EY3hnVzlyU0FkZGlxaFB1OGpyT1BXMVdKRHJsRkhhU0xnaC9UOHQ5TmdtWnZIMmhCdzJKNjk3WG45ZFJZcjBSNTVFMHpmMWFIOWdYZ2sxQ05hVUwzK1hQdTJiK21EcUN3RUFBQUFBbEtsdjZvdmNuTVdFOTN2NTNkUjFXSmppV29BTmlCcUtMOVorWVMvVloxRWc5MU9MeTAxanZ3b3NMU1krKzNKOTJwTWhIWGNoWEtlTTBzYkNEU2tTZnJHSitjN2JxM2hDRG10VXRkMStoQnIySnZPaWgrTWtRZzJqdmpHNGN0TW8xRkMrUDJKYXc4WFVGd0lBQUFBQUtGOU1lUGRzY0hGMWRBSGRIdHFCdzdyRlZIeUZVUUNiYzJqdDcwMTlGc1hvbS9wVU9QM2Vab0dsYzVNYzVvdW11OGRxSkIra2krc1VSbWVqNFlhWjZEVDl6QlNIUVhBVHZVSlYyKzNramVtVTB2dlJ2c2poeWpmcmovdW0zaC96aTNUVE9DaXo5NlFFTGdBQUFBQXdLUEZzOElXenRyRGNCZlR2cXUxZURleTRZUzF5K0NlZXRacUtmek1GVU1CSzlVMTliSHJEZzgzcXM3NjU5MlBEMUtROFRCMlRIUEsxUE9xYXM3dktuMmx4ei81VmZkcUR1VDRaclY5TGVXRjlVK2RScWx0Uk5POURxM3o1Sm5vdnV0ajc0bjJnU0dpZTZwSmZwQnk2Mm8zUHFOR0tHMmlobXVGNE52YjNKQUFBQUFBd2JybTdZTlYyajFOS0YxRzB6OTM5VmJXZFozUVFZcUxKQjg5YUFZcVN3NngvT1NVUDlpanUvV2IvUFc5ek1XdmYxTitHKzVJWWtoeFdxdHJ1MEZTc0I4dlg4dnVxN2Q1SExkclJsSzdscXUwT1lxcVAzLzdMOHlYQ2hEQkt4WVFiWnZJbVhOVjJSMUhvN2NPc2ZFSU9EMVMxWGQ1b2V6bm9GekZlcjhkK0V5RFVNRGcrYXdFQUFBQ0EwWWhDanR6ODdGU245WVhsWjNTNU9kUDJ3STRibGlJQ0RVZWVzOTZMeVEzQXl2Vk4vYUZxdXpQM2VFdjNKdjlkQ1R0OFRDa2Q1L1VlejB1a1FJZHFpNWJxMFp4citTU3U1Y0hmcDFWdHQ1TlMybzgvOWIrcmN6aldGd2FweEhCRE1zVmhxSVFjRmhTcDFqZURPdWpwR1AzN09HNGtoY2lHbzRzSklyb3ZBQUFBQUl2YWpiMUltTWxkOGsvN3ByNndJcFNpYitwZHowM3U1VW5WZG4xSzZhbHJtakdMNTFxdjRzOTBoZ2NhUTlIY1JPVEdvTHRUWHdTK2s3L3JQd3pzbVhHdXUvaTdnT01Zc3h6eWUzbWxRSHFtaTVxUVhJTjNIclY0Y0M4eHZlSEFmZGhLN1VYOTVZLy9qTE80bGsvaldpN2lPeUR1VWZJOSttNzhxVDlicjg3VUJzYXV5SEREVEV4eE9Jd2JMUitBd3pBTE9TakV2WVpPK1VVN3l3OVF4dndDcTdiYmlzOVU0K0tHNDRWTlpnQUFBT0FCbnV1VXlUenh3UHh0MzlUQ0x4UWh2eGRqZ3NNbloyUmhmMWR0Ti9wcDFPbi8zZnB6Z2Z0MkZOTXdEdTVWMXVmalZGN29DR2dFeWp6djR6Nyt0eUYwNnMvaHk2cnQzcVdVZmkvZ2NLYW12bHFJUHFkZytpWm5VMSs4RmJxSW1wM2pBZGJVNVhxM3p3VWN4OVRNOXZYK2FRU3d3TFg4SmQ1dmQ3VWx2RElvbW84emVrV0hHMUxjNk1ZVUI5MWFoaVYvMlgydDJrN0lJZWlVWDdSOFE3Y3o1dmRwaEJwTzNZZ095cnUrcVErbXZnZ0FBQUFBck5TYnF1MHVkSHVqRkxuUlM5VjJqelhwdVpkYzdQaXFiK3BYQXp6MlcxVnRkKzRaQnl6RmtXV0VVZmlyYXJ0blErakduNTk1UjRkdjMrUERJWFM0T3M4anZQWm4xWGFYT2JBN2xGcWwvSGxUdGQySjhOMWdQUEdiZXJST1RPTmhDbjRaeW11TXprR1Bvd2laNFppRkhNNmp1SHB5OHV1T0RkZlBnZzNGeVQ4VThnLyt3ZnhZdUkrcTdmS0R5YTgyQ3dZamg4SWVDellBQUFBQXNDYmJGcHFTNVAzNnZHK3Z1L2k5dk15QnBiRTlreE5zZ0tYNVlsbzRqTXFRdnU5SEdiNkVCOG8xWklOcU5OQTM5WDdVV2dHYmNSblhJWXplWU1JTjZmdk56TmNGSEE2TG1ZVWN2c1VFZzBsUVZGNjBQSjU1YTh4SnhxcnQ5cXUyNjZXbUJ5V0hiVVk5UlFRQUFBQUE0QzVpQXNFZkZtdGhUK0taM0NpZXgrbjBERXRsYWdPd0VYMVRYNmoxZ3JtR0dFb1dWb0xOY2YweEdZTUtOOHprOGNoOVUxY3BwYk15am9nRjVOVHA1N0dISEtxMk8xQlVYcXc4bXFrYTg1ajFmRzNsYXl5UG9DN2djTGliZC9HK05EWU1BQUFBQUNEMFRaMExjWjlhajN2SnorTk1DQVptdnNSbktzQkdSSTNHTzZzUHd4WlRvTjQ2amJCMmIwMWhZMG9HR1c2WTZaczZkK3A0WnR6UklNMUNEbjN1TGorV0YxVzEzYXNJTmZ4WndPSHd2UzZsOUhqTW81bnltT2tZemZ3NXJqSEtOM3RmZXNBRUFBQUFBREJIN3ZRYlRjODY2N093UDZ1Mit6Q3dZd1pXdzdNb1lPUGl1ZmhIWndLR3JXL3FROWN5ck5WWlhIY3dHWU1PTjZSL3Z5elArNmJla2dnY3RQZEREemxjNlpUL1Z3R0h3L2R5K09scDM5UTdmVk4vRyt2YVZHMlh1eHg4TlpwNU1QTDc4dG5ZMzVjQUFBQUFBTXVTOTFOMSs3MlhsMVhiWGVRR1NRTThkbUE1OG1SN1FTZWdDSDFUdjhwRm1zNEdERnRjeTErY1JsaTVMOUVFSGlabDhPR0dtVWdtUGRhMVpkQm1JWWZqb2J3SW5mS0w5eUtIbjNKWHA3Ryt3Q3ZUUXZZS09CenU1bTI4TDgrdEZ3QUFBQURBM1VXMzM5OHMyY0tlNUFaSnVWblh3STRiZUxndlk1NXNEd3hURkdrcWlvYmgyNG5tbnNCcVhNWjFCcE16bW5CRCt2Zm05MXQwYlhubWkzUFE5aUxrY0ZweUZ4bWQ4b3YyT28rbzdwdjZkS3d2TUlJMUY2YUZERW9PM3owMkpnd0FBQUFBNFA2aSsvaGp6d0x2NVhQVmRnY0RQRzdnL2hSREFVWHFtM3BiQTFzWXRseXJtVkxhOXRzTVZtWW5yak9ZbkZHRkcyWnlOK3pjRlR0M3h5N2ppTGluNTlGRjVyeWtrRVBWZHZzNjVSZnJKRUlOZzVuK2NSOVYyeDFGc09iSjhJNStrdktQdUdjNWZPZUdFd0FBQUFEZzRhTGhXWDUyZEdZNUYvWm4xWFlmQm5iTXdQMDg5V3dLS0ZrMHNIVS9Cd01tNEFBcmNSbjM4aGVXbDZrYVpiaGhKbmZIem9YT2tyNkRWMGZJNGRzbXgrVldiYmNib1liMzQxbmEwWmgxeEIvMVNOV3E3YmJ6ZFpCUytyMkF3K0Z1L3NnUDJITG96bm9CQUFBQUFDeFgzOVM3bXAzZHk4dDQ3bGJzQkhYZ3dSUkRBWU1ROTNQdm5DMFlMZ0VIV0twOEhXMjdsMmZxUmgxdW1JbWs3ek5mb0lQM0tNYmw5bmw2d3JwZVRBNVVSRUg1cC9FdTdXQk5waU4rVEd2NE82NER5dGZGRkpFajV3b0FBQUFBWUhWeXM3T1UwZ3RMdkxCSDBWeHNkMkRIRGR6c01wckNLWVlDQnFOdjZvT1UwbS9PR0F6WGxlbDZtbEREL1hYUlJOZjBOU1p2RXVHRzlPOFg2SGw4Z2I0dTRIQjR1UGNSY2xoWjRYRHVWbE8xWGU2Mi9sbEJlWkZlVDZFamZyd1BUV3NZanY4Q04xTmZDQUFBQUFDQWRlbWIralFYODJwMGRpK2Zxclk3SE9CeEF6OVREQVVNVnQvVUg5elB3ZkJGdll4cExMQzRkK3JONFA4bUUyNlk2WnY2T0hmVFRpbWRsSEZFUE5EdkVYTDRzTXpSdVZYYkhlZHVOU21sMmdrcXpydm9pSDg4OWhkYXRkMnJlQjhLMXd6REpBSTNBQUFBQUFBbHV0SXA5S01UdExBM1ZkdWREdXlZZ2UrOVZRd0ZETjJWK3ptRjBUQmdNWTNGZEQyNHV4ZHgzUUJoY3VHR21iNnA5eVB4YXhUU09MeU0wYm5uVmR0dDMvY1ZWVzIzbjhNU0thVzlxUzlvZ1Q1R3FHRVNYK1F4bGVTdkFnNkYyNTFOSlhBREFBQUFBRkM2dnFsejQ2QS9uS2lGUGMrVHBKZlpUQXhZaTl6aC9HbmYxQ2F3QUtNUmRTRlBUWEdBNGNyVDlhSUJ0ZHBNdUY2K1BoN0hORXJnaXNtR0c5TC9FNys1ZThFek44U2prU2N0L0IyYnIzZnVUSkgvdlJGcWVELzFCU3pRN0V2ODFWUmVjSFJIK3IyQVErRm0rWHZqV2QvVXU5WUpBQUFBQUtBY2ZWTWZ4Zk0vRnZNb21vblo5NFpoZUJ0VHhTK2NMMkJzOG1kYlRIRjQ3ZVRDY0VWdDVtOU9JZnprZGI0K2NnMnpwWUdmVFRyY01OTTM5YmtiNHRISm02K2ZjMkFoVDJPNDdzWGw3ak01Q0pIL3ZWTmZzQUxOQ3NjbjlTVWV3WWJuQlJ3S04zc2RtOFhuMWdrQUFBQUFvRHp4L0M5M0N2M2k5Q3pzVTlWMnVzQkR1YnFZS3U0NkJVYXZiK3JqdUtjN2NiWmhtUHFtL3VBNmh2K2N4TDM4c1NXQjZ3azNYT0dHZUxUZVI4amh2eStFQ0RYa291U3ZFWVNnTEpNc0hLL2E3a2l3b1hnZjNXQUNBQUFBQUF4SDM5VGJLYVYzVHRuQzNrUkRKcUFjczRuM084NEpNRFY5VStmR3BvL2pzeEFZSU5jeEV6ZTdsNysyVVRmd2Y3OWFpNS9GQjhoK0ZML1hwUjBmOTdaWHRkMWVUQVFRYUNqVHlWUy93S3UyeTV1UXZ4ZHdLTXlYUHplMmpRSURBQUFBQUJpZXZxa1BvbEQvTDZkdkljOWpBcnI5Y2Rpc3M1VFNLOWNoTUhYeE9maFB3Q3Nhbk81TmZVMWdhR2JYY1c1TW5GSTZWWnZKQk9SUXc2NTdlVmlNeVEwM2lJNEhqNDJySFIzQmh2TE1ScWRPT1psNFVNQXhNTjlza29pYlRBQUFBQUNBZ2VxYitrTks2V2swcytIdThuTzFyMVhiN1ZveldMcy80aG1xWWlpQUgrVDZrdndabVovbld4c1lubnh2azJzejR6bytjUW9ab1krenFXdnU1V0Z4d2cyM2lDL1NQSzcybWMxT1dMcExvMVAvczEzSWNmQi9KN0ZoZkd4TkFBQUFBQUNHcjIvcWk5ek1KcnFnczVoUFZkc2RXak5ZdWR6WjlXazhvenF5M0FBM3k4L3pvemo2YVh5R0FnUHpRMWhKZlNaRDl6cnU1VTFlZ3djUWJyaWp2cW5QWTdOVDRoZVc0NWx1K0JUcVM0UnVwanhKQkFBQUFBQmd0SElYOUpUU1cyZDRZZURKa2xBQUFBd3hTVVJCVkcrcXRqc2QyREhERU9SblV5K2lDQ3AzZHIxdzFnQVdFeUhXV1JmNDN4Ukl3L0JFV0NuWFp6Nk9ydmN3RkxNcERacm93cEw4YWlFWEV4OCt4MVhiSGFTVS9oelNzVU1oWHZzU3AyQjU0OWlER1FBQUFBQ0FrZXViK2pBSzlUODUxd3Q1WHJWZGJseTF2YVlHVnBwa01WWjVnc3hCYnJMb0RBTXNWOS9VSDFKS3VVQTZWVzJYUTYyNVJ1V0paWVpoaU44WnI5Sy8xL0JXWE1Ndm5UNEtrKy9uOXdXVFlUV0VHKzRwUmtBZVZXMlh2enozQnZraVlMMU9kTUtuWU42ZkFBQUFBQUFUazV2ZFZHMlh1NExtWW9SSHp2K2Q1Ylg2V3JYZGIxRTh1REs1OEx0cXU0K0ttUmlCM0VIOE1Pb01BRmlUYUc2NG5mNHRrczcvODFDZEZ3WFJIUFlXYzRJT0IvSG45eHVia0NkQUhxMHA2QStUSnR6d1FGRU11MSsxWGU2b1VBLzZ4Y0JxZENtbFhWL3FGTXI3RXdBQUFBQmd3bUovZUN1bU9EejNYbGpJWDFYYnZldWIrbUNWLzVDK3FWODVQd3pRbHlpZy9lQTVGRUFab3J2MmZ2ek5wam9jdXNkZ1E4NzZwaFp1V0VEY1V4M0duOEFTNjNBU0FXWFRHV0ROaEJ1V3BHL3FuVWdIbmdvNXdEOHVvMmpjS0ZWSzVQMEpBQUFBQU1CLytxYmVyZG91RituL2FWVVc4bnN1RE16UFNsZjVEOG5uSi8xYndIUVlCWWxQVnZuUGd3WGw1MDRmRkQ0QkRFdE1kZGlkSFhRVVN1KzcxMkFOWGdzMlBOeWN3Tkpzc29Ocm1Qdkk5L1I1eXRxeGUzcllQT0dHSllwMDRDemtZSHd0VTdieU1jVHdBRy83cGo2MGdBQUFBQUFBWE5VMzlWSFZkdm41eHJubmZBdXBxN2I3NXpucHFvdEFZbi8vcHozK2VENjdFd1dLMi9HbkN6T3JrS2VDSDBmUms0a01BQ01TOXpIZjNXdkVQY2FzZUZxeld4N2lMQmZlYThLNU9qOU9ka2l1WWE3M0pZSU1Id1Fab0V6Q0RTdHdaWHp0VGt4eXNQbkpWQ2dhcDJUZHFqdEh3WWI1d1RYZmFZa0h4YTA4Rkp6UCt4bmdlbWNLbHdDL2l3QlloaWhzMklvSkFXOHM2cDA5aW9MdjNTWDk5eTBrbnMrZTNuWC9KRG96YjhmeHpvSVJPNTdyRXI3RUpJWlREZDNXNHRSdmVxQlVjWTl4RkgvL2lZTHBWM0V2OGNvOUJLR0xvUFJwM0VmWXE5cXdHNjdoN1N2WDc2NXJlTFEreHZVb3hBQURVL1Y5NzV5dG1KQURFM0RTTi9XK0UzMS9WZHZadEZ1ZFBEWnNWL3FkS2ZEQTlTZjUrdC9XUFd1WXFyYkxEOFAzcHI0T1YxejJUYjFWek5Hd01WWGI1ZnZ1OTg3QWQ1N2FrS1JxdS94ZzR2ZkpMOFQzUHZaTi9hcWtBNEoxcU5ydXd0aDVXTWhnR29KRVYzalBXYjczekw3bjZzWHZzQ1B2dnp0NTF6ZjF3UUNPODE2dVRJZlludlBuL21NNExxOFVIWjVINGFFOTVBMkthK3ZDNXl3c1JJMUc0YUpXYlBkS2dGTEgrR0g3RXZjTi8vMTVMakZ1UDF6RHUrNzNpM1QxdXN6MzlCb0Z3b2dJTjZ5UkloUkdxSXVpY1J0K0R5VGNzREt2KzZZK0h1bHJnN25pSWNEUnhEdUU1TTdOaDM2OERwLzM4ejl5TjRrajcyZXVpbXZqSUVib1RuVXp0WXZQZXQwVCtVODhiTWhoejVjVFh4WFhCNVBuOHdCdWRSbmRxQStIVm93UmpSMm1mQitjcnB5L0Ezdno2eGZkUFdlZFBiY1ZxZjJqaS9ma2tmZmt6YTZFSTlLVkNSZXpvRVR5bk9qZVptR0ZpL2o3NTM4WC9ocWVxdTEyNHo3ZXRRRHpmWWtwU2I1elIrU2FhVktDazZ2VHhRVDVpeC8vaEJXNGoydXU0UzIvRmUvbHl3L1haWDQrL3MxOVBVeVRjTU1HQ0Rrd0FqcmhMNWx3dzlMcFVBb0FBQUFBQUV6Q2xhS3FtYXRCaXB2K3RhdVcvWnhxVnB3MHo0K05QTTZqMERBcFlBS0F4ZndRb0V4WGlxdG5icm9IMkZsRGc3RlpFUEVtMzY3NTk4ejcxODhGZkJpYkNIbk96THRtZjd6Zi8vSC90NHBBMUUzWDdyeHI4K0tIKzMvWEtuQnZ3ZzBiSk9UQVFPbUV2d0xDRFV1VGI2eTMzUndEQUFBQUFBQUFBQUFBREl0d1F3R0VIQmlJazc2cDk1MnMxUkJ1V0lyZitxYitNSUxYQVFBQUFBQUFBQUFBQURBNXdnMEZxZG91ZDhQZm0vbzZVSnl6dnFsM25aYlZFbTU0RU1FYkFBQUFBQUFBQUFBQWdJSDd4UWtzUnk3TzdadTZ5b1c2VTE4TGl2QWxwZlJZc0lHQ2RmRWVGV3dBQUFBQUFBQUFBQUFBR0RpVEd3cG1rZ01iY3BsUzJ1MmIrdHdKV0IrVEd4YmlQUW9BQUFBQUFBQUFBQUF3TXNJTkF5RGt3QnE5N3B2NjJJS3ZuM0REblhtUEFnQUFBQUFBQUFBQUFJeVFjTU9BQ0Rtd1FpZDlVKzliNE0wUmJyalZ4NzZwWHhWK2pBQUFBQUFBQUFBQUFBRGMweThXYmpoeThYbmYxRlV1UkovNldyQTBYVXJwc1dBREJidU05NmhnQXdBQUFBQUFBQUFBQU1DSW1kd3dZQ1k1OEFDNVlIeW5iK29MaTFnR2t4dm1ldEUzOVdtQnh3VUFBQUFBQUFBQUFBREFrZ2szaklDUUF3dFNNRjRnNFlidnZPdWIrcUNnNHdFQUFBQUFBQUFBQUFCZ3hZUWJSa1RJZ1Z2ODBUZjFrVVVxazNERFA3cVUwbTdmMU44S09CWUFBQUFBQUFBQUFBQUExa2k0WVlTcXRzc2R6LytjK2pyd241TytxZmN0UjlrbUhtNjRqRkREZVFISEFnQUFBQUFBQUFBQUFNQUdDRGVNV05WMnVhRDkvZFRYWWNKMHdSK1FDWWNiWHZkTmZWekFjUUFBQUFBQUFBQUFBQUN3UWNJTkV5RGtNRG02NEEvUUJNTU5Kb29BQUFBQUFBQUFBQUFBOEIvaGhna1JjcGdFWGZBSGFrTGhCaE5GQUFBQUFBQUFBQUFBQVBpSmNNTUVWVzMzS3FXVUMrQWZUWDB0UnVSZDM5UUhVMStFSVp0QXVNRkVFUUFBQUFBQUFBQUFBQUN1OWF1bG1aNitxVCtrbExhcXR0dEpLWjBLT1F6YXg3NnBYMDE5RVNpZWlTSUFBQUFBQUFBQUFBQUEzRWk0WWNLaWc3cVF3ekIxMFFYLzI5UVhncUtkOUUyOTd4UUJBQUFBQUFBQUFBQUFjQnZoQnE2R0hMWWk1RkJibFdKZFJxamhmT29MUWRHRWJ3QUFBQUFBQUFBQUFBQllpSEFELzRsQzVCMGhoMks5N3B2NmVPcUxRTkZ5K0dhbmIrb0xwd2tBQUFBQUFBQUFBQUNBUlFnMzhKTWZRZzY1bVA2bFZkcW9rNzZwOXlmOCtobUdGMzFUbnpwWEFBQUFBQUFBQUFBQUFOeUhjQVBYaXBERHEvei9yOW91aHh6MnJOWmFkU21sM1RnUFVDb1RSUUFBQUFBQUFBQUFBQUI0c0tydmU2dkluVlZ0ZDVoU2VtUEZWdW95cGJRdDFEQXRWZHZscVFmUEIvU2lUUlFCQUFBQUFBQUFBQUFBWUdtRUc3aVhxdTF5VWZON3E3ZDB6L3FtUGgvWmErSU9CaFJ1TUZFRUFBQUFBQUFBQUFBQWdLVVRidUJCcXJiYlNTbmxvdXhIVnZKQlh2ZE5mVHpnNCtlQkJoQnV1SXhRZy9BTkFBQUFBQUFBQUFBQUFFdjNxeVhsSWFMUWVVdkk0ZDVPK3FiZUgraXhNeDB2K3FZK2RiNEJBQUFBQUFBQUFBQUFXQlhoQnBiaVNzaGhLMElPdFpXOVVSZGQ4TDhWZkl4Z29nZ0FBQUFBQUFBQUFBQUFheUhjd0ZKRnNYNmU0cENxdHN0RjBYdFcrRHVYRVdvNEwraVk0RWNtaWdBQUFBQUFBQUFBQUFDd1ZsWGY5MWFjbGFyYTdpaWw5THRWVHIvMVRmMmhnT09nUUZYYjVZa256emQ4WkIvN3BuNVY1QUlCQUFBQUFBQUFBQUFBTUdxL09MMnNXdC9VQjMxVFZ5bWwxeE5kN0xmNTlRczJVTEF1cGZSWXNBRUFBQUFBQUFBQUFBQ0FUVEc1Z2JXcjJtNG5wWlM3MUQ4YStlcWY5RTI5WDhCeE1BQWJtdHh3bVZMYTZadjZ3bnNFQUFBQUFBQUFBQUFBZ0UzNjFlcXpibjFUbjZlVXRxcTIyNHFRUXoyeWs1Qzc0Ty8yVGYydGdHT0JlUzdqUFhwdWRRQUFBQUFBQUFBQUFBQW9nWEFER3hQRi8zbUtRKzVhZjV4UzJodjQyVkF3emhBODh4NEZBQUFBQUFBQUFBQUFvRFJWMy9kT0NzV28ydTRncGZUbkFNL0k2NzZwandzNERnYXFhcnM4eGVUNUNvL2VleFFBQUFBQUFBQUFBQUNBWWdrM1VLU3E3WFpUU2g5U1NvOEtQME1uZlZQdkYzQWNETndLd3cxQ0RRQUFBQUFBQUFBQUFBQVU3MWVuaUJMMVRaMEx2YmVxdHR1T2tFTmQyR0YyZlZQdkZIQWNjQjJoQmdBQUFBQUFBQUFBQUFBR1E3aUJvdlZOZlpGUzJxbmFiaXVsZEpSUzJ0dnc4WDdKeDlNMzliZkNsNDdwRW1vQUFBQUFBQUFBQUFBQVlIQ3F2dStkTlFhbGFydURsTktmYXo3bXk1VFNidC9VNTk0dHJFTFZkbmxheWZNSC9GY0xOUUFBQUFBQUFBQUFBQUF3V01JTkRGYlZkanNwcFZ3US9takZyMEhST0N2M2dIQ0Q5eWNBQUFBQUFBQUFBQUFBZy9lclU4aFF4UlNGcmFydHRpTGtVQy81cFp6MFRiM3ZEVUtoaEJvQUFBQUFBQUFBQUFBQUdBM2hCZ2F2YitwdkthVTh4U0YzdjgvRjNuc1BmRTFkU21rMy9udWhKSmNwcFZkOVU1ODZLd0FBQUFBQUFBQUFBQUNNU2RYM3ZSUEs2RlJ0bHljdUhLV1VIaTN3Mmk0ajFIRHVIY0c2VlcyWEF3dlByL25IZW04Q0FBQUFBQUFBQUFBQU1HckNEWXhhMVhaNW9rT2U1bERmOGpwZjZJYlBKbDBUYmppTFNRMm1pQUFBQUFBQUFBQUFBQUF3YXI4NnZZeFpkTHJQQVlkY1BKNUREbnMvdk53LytxWSs4aWFnTU42WEFBQUFBQUFBQUFBQUFFeUt5UTFNVHRWMit6bncwRGYxZ2JOUEthcTJPOHhUUnZxbXZuQlNBQUFBQUFBQUFBQUFBSmlVbE5ML0FQU1NtdWhTNHhBN0FBQUFBRWxGVGtTdVFtQ0MifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wNy0yOSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ikh5cGVyIEZJRE8gUHJvIE5GQyIsImNlcnRpZmljYXRlTnVtYmVyIjoiVTJGMDAwMjAyNTA3MjkwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblByb2ZpbGVzIjpbImNvbnN1bWVyIl0sImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDctMjkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MX1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNi0wMS0wNiJ9LHsiYWFndWlkIjoiYTRlOWZjNmQtNGNiZS00NzU4LWI4YmEtMzc1OThiYjViYmFhIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiJhNGU5ZmM2ZC00Y2JlLTQ3NTgtYjhiYS0zNzU5OGJiNWJiYWEiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiU2VjdXJpdHkgS2V5IE5GQyBieSBZdWJpY28ifSwiZGVzY3JpcHRpb24iOiJTZWN1cml0eSBLZXkgTkZDIGJ5IFl1YmljbyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjg3MDcsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJlZDI1NTE5X2VkZHNhX3NoYTUxMl9yYXciLCJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJREhqQ0NBZ2FnQXdJQkFnSUVHMEJUOXpBTkJna3Foa2lHOXcwQkFRc0ZBREF1TVN3d0tnWURWUVFERXlOWmRXSnBZMjhnVlRKR0lGSnZiM1FnUTBFZ1UyVnlhV0ZzSURRMU56SXdNRFl6TVRBZ0Z3MHhOREE0TURFd01EQXdNREJhR0E4eU1EVXdNRGt3TkRBd01EQXdNRm93TGpFc01Db0dBMVVFQXhNaldYVmlhV052SUZVeVJpQlNiMjkwSUVOQklGTmxjbWxoYkNBME5UY3lNREEyTXpFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUUMvandZdWhCVmxxYWlZV0VNc3JXRmlzZ0orUHRNOTFlU3JwSTRUSzdVNTNtd0NJYXdTREh5OHZVbWs1TjJLQWo5YWJ2VDlOUDVTTVMxaFFpM3VzeG9ZR29uWFFnZk82Wlh5VUE5YStLQWtxZEZuQm5seXVnU2VDT2VwOEVkWkZmc2FSRnRNamt3ejVHY3oyUHk0dklZdkNkTUhQdHdhejBiVnV6bmV1ZUlFejZUblFqRTYzUmR0Mnpid25lYndURzVaeWJlV1N3Ynp5K0JKMzRaSGNVaFBBWTg5eUpRWHVFMEl6TVpGY0VCYlBOUmJXRUNSS2dqcS8vcVQ5bm1ET0ZWbFNSQ3Qyd2lxUFN6bHV3bit2K3N1UUVCc1VqVEdNRWQyNXRLWFhUa05XMjF3SVdieGVTeVVvVFh3THZHUzZ4bHdRU2dOcGsycVhZd2Y4aVhnN1ZXWkFnTUJBQUdqUWpCQU1CMEdBMVVkRGdRV0JCUWdJdnowYk5HSmhqZ3BUb2tzeUtwUDl4djlvREFQQmdOVkhSTUVDREFHQVFIL0FnRUFNQTRHQTFVZER3RUIvd1FFQXdJQkJqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFqdmp1T01EU2ErSlhGQ0x5QktzeWNYdEJWWnNKNFVlM0xiYUVzUFk0TVlOL2hJUTVaTTVwN0VqZmNuTUc0Q3RZa05zZk5IYzBBaEJMZHE0NXJuVDg3cS82TzN2VUV0Tk1hZmJoVTZrdGhYN1krOVhGTjlOcG1ZeHIrZWtWWTV4T3hpOGg5SkRJZ29NUDRWQjF1UzBhdW5MMUlHcXJOb29MOW1tRm5MMmtMVlZlZTYvVlI2QzUrS1NUQ01DV3BwTXVKSVpJSTJ2OW80ZGtvWjhZN1FSalFsTGZZemQzcUd0S2J3N3hhRjFVc0cvNXhVYi9CdHdiMlgyZzRJbnBpQi95dC8zQ3BRWHBpV1gvSzRtQnZVS2lHbjA1WnNxZVkxZ3g0ZzB4TEJxY1U5cHNteVB6SytWc2d3MmplUlE1SmxLRHlxRTBoZWJmQzF0dkZ1MENDckpGY3c9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFmQ0FZQUFBQ0dWcytNQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUhZWUFBQjJHQVYyaUU0RUFBQWJOU1VSQlZGaEhwVmQ3VE5WMUZELzNkNTl3ZVFTSWdTOUFRQVhjRkxBUVppOWZwZVZ6MXRZL1dUWnI1V3hwYzdXNWtuTGE1akkzWjg1c3JTMm5NMnNqdFd3WlM3SVVINEg0eENuRVF4NERBWkY3NFY3dXM4ODV2OS9sSW5CdlZKL0I0UHY5bnUvNW51LzVudk01NTZmekEvUXYwSGIvSXJYM1ZGS1BvNDVjbm00aW5VSVdZd0xGUm1aUVV1d2pGRy9OMWlSSGgxRVowTlJWUnVkcXQxQmQrMm5TS3lTL09oeXMwK2xrM2UvM2tROXF2RDRaVXRhNFZWU1V1WTBlaXB5aVRoQWZvY29PUlZnRHV1dzNxS1JpQWQzcmJjRXRqVGpZSW9mNldhSHNDbXpWUFdDTXgrY2doOHRMcVdNS2FNV3NVakxxbzJSdEpJUTBvT3ptZXJwUXU0ZXNaZ3NPTmtHeEg3ZDBrZHZUVDE3czRPTVU3Vkk4WmhqZ0dhTStBcTlpRU51OFBpZjF1ZHowN013dktXZjhHbFZvQ0VZMDRQQzVXZFRhWFlGYlI4dk52TDUrM0tnZmI1eE5NeWE5UmFtSml5bmFNbEdUVnRGbHI2YmE5dStwcW5FWDR1TXVSUmdqU1lFaHJON3V0RkZlNmxxYWw3TmZrdzVpbUFHSHluUHBiazhWbVkweHN0bnB0bEZDVkNZdHpUdUJOODNRcE1MalR0ZXZkUHpTVW5KN2U4bWtqeFozOWZYYktEZmxkWnFidlUrVFVnR25CVkY2ZlEyaVBIZzRXMTZVV1V3dnpiazE2c01aRStQbjBwdno3SlNldUF5ZXM4bGNwQ21hS3VvL3ArcVdyMlVjd0lBSFdydlAwWUV6aFhBdExBYnNzSGhwN2lHYW12eWlqUDhyeXFyWFVXWDlYb293eHlBdWZOQnJwNDNQT0JGWFpsa2Y4TURSaXFjcHlvd0F3cHV6MngrZld2ei9EdGRlOXNtc3p5Z3RjUjZDMXdiZHpCbDZPbHE1V05ZWTRvR2F0aEpNcmtURXgwakFSU0hBVnMrNXJZa1FOWGIrUWdmUExzUTZnWHlJbnNyZVFmbXBtN1JWRllmTDg2bjFmaVVPa1l2U2hrVVB4dmJ1a3pveTZLMWloTTFobzNYelc2RXZTZlhBK2RwaVdHYVdkK2RvWHpMem1Hd0tZRkxDQXNSQWxQQkFoTWxDRlhVN3RCVVZQcjhIZ1ZjSkhXcStGMDBwbHIrRE1UZHJQNHp2eFkxMWtOTWh4VCtTZVRHZytkNFY1TFFKaXR5VUdKTkI4VkZac2pnWUJaTS9JSS9YQ1RrajBxeURPcEYyQVZRMTdDSWpVcC9EblQxVWtMNUY1Z2RqK3NTMXdnMWdFM2dpZ202MGZDWHpTblBYYnlBUGJJWHYrSURwRTE2VGhhSElTOXNreWhsbU1FNUYzY2ZxQUtocTJDMEU1UEgxZ1lhWGFMUERrWkcwSERKT25LV0hwNTFJMHo1U091eDhlMVdBdVp6ZEhRclRrcDhUbWpYb0krbGEwd0dac3p1YnFiTzNpZlE2QS9XN3ZWU1lzVjNtUjBKS3drS2M0V0hpQmttUjhJM0NDZ0k4N29PTDRxelQ1UCtSVUpCZWpFT2dBUEs4aFlQemF0TStlSVRwMklPOXlUUW1lcm9tUFJ4eDFxeEFjc2lsZS91YlNlRWJjV1FHWUVDZ2hjTFkySHlLam9nakgyNWhNcGpwVXYxT3VnbGk0ZWgyZVJ3ME8zMmJKamt5dUNnTnpnMHZ6bFlNU2lTczB1b280TUc3aE1PakNFYVgxeUZFMG5TdmpCenVUbkVwSzg2WjhJb3FGQUl1Ync4a2c5QXJFYVJFV1NaSStqSDRYYnA2ZzlFOUVuSlQzb2FSekROK01VSkJRREhuNTZhOG9VbUVCdXNPeEJzL041K3RKRWJQa0FGRGo4VUd2T3MvSVd2Y1NnbEdCaHZTNy9GVFlmcFdHWWREWThmUEF4V1NBMzVzVEM0cDQrTG00QWFxSW9QZVF0ZnVmSzZKaDBaaHhsYnNVWE9TbVhOaWZENVpUQWt5RG9mYmJjY2x4bkE4V05BcXhDYlJOeWtoWHhRcGFEdzY3ZlhVWWJzaUcwS2h0djJvZUl2aDhyaFFNWU9jRUFxWEcvZUkrem5nT2M1eXhyOHE4MklBTTFjL0ZMRk9wbHF1NWVGUVhyTVp6R2NWQ2pZYkxXRzVJNEJUMWV1UnJsYnh0Tk90TWl0RERFaExYSUl5bkFBdnVPRVdFM1gzTmRBZnQ5NFZnYUc0MlhJUXQwWlg2UGVDRS9xUUZlOXJLNkh4N1lVNTBLdkg3Zlc0ZlMrcTdLS0JKeHNnZ0JYNXBTQUdoMWpJclZoNXpRNnczUmZhYWhCWG0vYUNiQ1pUakNVRlVUeVdacVc5cDYyTWpKUFhWcU9yUGdNTzROdjc0R2tmK293ZnROVkJEUW5qRkpxSFN3MTdwWHZoV1c1S1pxZS9RNDlOL1VTVENBVldvUVhGSUhCSFhYZTNGUHJVRHN1R0RtdEYvaEhLVEhwZWt4aGlBT1BJK1NKcTZTNkhGNEk5WVd6a0JKVG80NmlVTXpXcDhQaXIvUmlkdUx4S1lzU2tzVjh2TGxPUXZoR1gyWWxSME9CaEJqQyt1L2dFY3ZZMEFwSzdZazQxTnhqUFNRbldGSFRGNjZVcmpnZXZCOEN1NWErbDJ2WVNSUHR1VkRvNzNoaGRNU0huVVg3dFRqc1ZaR3hBbC9XcHRpT0lFUTFnbkwyOW1YNi90UjF0bWxrWWo4VzRYK0NTaldjVURHWTFOcFMvQzdoU0txaU1MTS9sMlFtU1daNzNEZHorZ2lvOEJDRU5ZUFE0NnFua3p3WFVicXZCa3hqVVFzV2ZaRmdidW8zckFmK3dON2pPTzkwK3lueDRQaTNMKzBuWUwxU2NoRFVnQVA0Z1BWLzdJZDFxKzFIU2htdUdrSXFXUlBneXhNRnFQOEhmalRualh3WTViUWZiSmN0Nk9JektnTUhvdEYvSGUxZWdzYXhIU3FHNndmZG1RNXg4TnlURkZxQmNwMmlTb3dIUjN5azUrMzZoRjd2WEFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xX1BSRSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiYTRlOWZjNmQ0Y2JlNDc1OGI4YmEzNzU5OGJiNWJiYWEiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZX0sIm1heE1zZ1NpemUiOjEyMDAsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6OCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoxMjgsInRyYW5zcG9ydHMiOlsibmZjIiwidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN30seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTh9XSwibWluUElOTGVuZ3RoIjo0LCJmaXJtd2FyZVZlcnNpb24iOjMyODcwN319LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDIzLTAzLTI4IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyODcwNywidXJsIjoiaHR0cHM6Ly93d3cueXViaWNvLmNvbS9wcm9kdWN0cy8iLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IlNlY3VyaXR5IEtleSBORkMgYnkgWXViaWNvIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyMzAzMjgwMDIiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMyIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4zIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIzLTAyLTAyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyODcwNywidXJsIjoiaHR0cHM6Ly93d3cueXViaWNvLmNvbS8iLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IlNlY3VyaXR5IEtleSBORkMgYnkgWXViaWNvIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyMzAyMDIwMDIiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjMifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjMtMDItMDIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI4NzA3fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIzLTAzLTI5In0seyJhYWd1aWQiOiIwYWNmMzAxMS1iYzYwLWYzNzUtZmI1My02ZjA1ZjQzMTU0ZTAiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjBhY2YzMDExLWJjNjAtZjM3NS1mYjUzLTZmMDVmNDMxNTRlMCIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJOeW1pIEZJRE8yIEF1dGhlbnRpY2F0b3IifSwiZGVzY3JpcHRpb24iOiJOeW1pIEZJRE8yIEF1dGhlbnRpY2F0b3IiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MiwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlCc2pDQ0FWbWdBd0lCQWdJSVI2bGd3a3Nmanlnd0NnWUlLb1pJemowRUF3SXdMVEVyTUNrR0ExVUVBd3dpVG5sdGFTQkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnUTBFZ1IyOXNaREFlRncweU1EQTJNall4TmpJek5USmFGdzB6TlRBMk1qTXhOakl6TlRKYU1DMHhLekFwQmdOVkJBTU1JazU1YldrZ1JrbEVUeUJCZEhSbGMzUmhkR2x2YmlCU2IyOTBJRU5CSUVkdmJHUXdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUVpWeXpZTHN2YnZtZzRibVJOeVpqclZYenp6VWZVZVlpV1laaVIzdkFDYXZYNGovVngzalkvd3ZtZFNjNWJhQ21WUWgrck4wUSsrK0xHd1VqMWtGaWNvMk13WVRBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUI4R0ExVWRJd1FZTUJhQUZIbXE4S0M1NzhqVjQzQ0p4VHh4QktZYm8xaU1NQjBHQTFVZERnUVdCQlI1cXZDZ3VlL0kxZU53aWNVOGNRU21HNk5ZakRBT0JnTlZIUThCQWY4RUJBTUNBWVl3Q2dZSUtvWkl6ajBFQXdJRFJ3QXdSQUlnS2gxSGNnTDdveHBkV25uY2s5dUNXRjZDNmIydHNiR1BqU0h1MzFHNDhXTUNJSHVFc3RTSEdrTWxGVEgzNjdwdG1mQzZ3aXhtYUNkd1Q4Q1YvaWpyT1RNSSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFFQUFBQUJBQ0FNQUFBQ2R0NEhzQUFBQUEzTkNTVlFJQ0FqYjRVL2dBQUFBQ1hCSVdYTUFBQUxGQUFBQ3hRR0oxbi92QUFBQUdYUkZXSFJUYjJaMGQyRnlaUUIzZDNjdWFXNXJjMk5oY0dVdWIzSm5tKzQ4R2dBQUFqUlFURlJGS2I3R0tyN0dLNy9HTEwvSExiL0hMc0RITDhESU1NRElNY0RJTWNISU1zSElOTUhKTmNMSk5zTEpOc0xLTjhMS09NUEtPY1BLT3NQS084UExPOFRMUE1UTFBzVE1QOFhNUU1YTVFjWE1Rc2JOUThiTlJNYk5SY2JOUnNmT1I4Zk9TTWZPU2NqT1M4alBUTW5QVGNuUVQ4blFVTXJRVU1yUlVjclJVc3JSVTh2UlZNdlJWY3ZTVmN6U1djM1RXczNUVzgzVFhNN1VYYzdVWHM3VVg4N1VZTS9WWWMvVllzL1ZaTkRXWmREV1p0SFdaOUhYYU5IWGFkSFhhdExYYTlMWWJOTFliZFBZY05UWmNkVFpjdFRaZGRYYWQ5YmJldGJiZTlmY2ZOZmNmZGZjZjlqZGdObmRnZG5kZ3RuZWhkcmZodHJmaDl2ZmlOdmZpdHpnaTl6Z2pOemdqZHpoanQzaGo5M2hrZDdpa3Q3aWs5N2lsTjdpbE4vamxkL2psOS9qbU9Ea21lRGttdURrbStIa25PSGxuZUhsb09MbW9lTG1vdVBtbytQbXBlVG5wdVRucWVYb3ErYnByT2JwcmVicHJ1YnByK2Zxc09mcXNlZnFzdWpxcytqcnRlbnJ0dW5zdCtuc3VPbnN1ZXJzdXVydHZPdnR2ZXZ0d096dXdlenV4ZTN3eHU3d3lPN3d5ZS94eXUveHkrL3h6Ty94emZEeXovRHkwUEh5MGZIejB2SHowL0h6MC9MejFQTDAxZkwwMXZQMDEvUDAyUFAwMlBQMTJmVDEydlQxMi9UMTNQVDIzZlgyMy9YMzRQYjM0ZmIzNHZiMzQvZjQ1UGY0NXZmNDUvajU2UGo1NmZqNTZ2bjU2L242N1BuNjdmbjY3ZnI2N3ZyNzcvcjc4UHI3OGZ2Nzh2djc4dnY4OC92ODlQejg5Zno4OXZ6OTkvejk5LzM5K1AzOStmMzkrdjMrKy83Ky9QNysvZjcvL3YvLy8vLy9XcG80ckFBQUJDbEpSRUZVR0JtbHdZMS9sQU1Bd1BIZmRsdWEybVdrRm5WSFNoRXF4SWhpVWlwdmtUbzBSR0pVV0Y0eVVkNlo5MnJ6dHFKU21CcTJwbWYzKytjOHorMVdkOC91cnR1bjd4ZlBFMVp3Nm1CM1YxZjN3Vk5XZ0tVTjdNMjB6S3dscDNabVMyYnZnS1ZoQ1VPZHkrcUptYkNzYzhnU2NJeSt0aVpHMUV4Tlhic2dOYldHRVUxdGZ6a0d4Z3crTVlsSWFzM3IzdzZZTS9EdDYydFNSQ1p0R2pRR2k3MDNpOUMwUjd1Tk9mRG9ORUtwUFJiRFFrTVBFWnIxNGlsTE9OMXhKYUdWQXhiQ0FnZm5BNU5mREN3ajJEb0p1T2FRQmZDc0E5T0FwVWVzNFBCdHdQUURub1ZuZENVaHNTVnJSZGxuRTVEODNETncxUGNYUWNNZXorbjlTZEM0MzFHWWQ3Z1prcDlaaGMrU01PT0llVGdpV0FRVFA3RXFuMThJaXdOSDRJaU5VUHV1VmRwZEN4bEhZTTVYQ2NoWXRRMVEyMlVPUm9JRnNDaXdhc0ZDdUc3WUNFYTJRZDMzamtOUEhXdzNncUhUTTJHRDQ3SWVaZ1dHTVBRYVREN2h1SnhNUW9jaERGMExHWXNkdlhYMnExYVNnUVdHVUh1ZzdwakY3Z002ck9CWUhmU29xSS9CbmNiTUJScVBXc0dkc0ZGRm5RTzdqRWtUV21FRmI4RmNGVDFlUStLRU1Xa2k3MW5laVFRMXh4VGRCZGNibDRhNWtCcTB2T3ZoYlVVZmgzWEdwV0Z2STJRc2J4MDhybWdyYkRNdURkM3RVTi9qcUtHanZYa256ZGtHOXlnNkh6NHlMZzNkd1hXd0tHdE83L0o2UnRXL2ErUkRtSy9vRFBqSnVEUjArM1VDdGh2NVlRb0YxaGo1RVdZb21vVGZqRXRCano0RUZ4MDNkRHZRTkNYdjZuMUdqa0pTMFRyNDI1akJCamlpL2Myd1V2MG5RYzFlWS82QmhLSU4wR2RrK0oxdGVTL2RDczFadFJOcVB0Q2ZZWnB4ZlRCUjBhbndpNUhORkhyQnlCMXc1WkE5a0RMdUVGeXFhQnIyR1htRXMyb2V6aG81MUFDYjdJR1VjZDlCV3RFbDBHbmt4TWExZWZjL3RkKzg1MkRDanoyUU1xNFRibEgwQWRoc1djRTh1S2tiVXNZOUF3OHEyZzZ0bHRkVkN4c2daVndydEN2NkJUUU5XOTRhcUlPVU1kbEw0RXRGZzBiWVozbDlVd21salBrT2tvR2lMb2VNRmV3a2xEWW1BM2VwcUcvQVpjT1dsMTBLM0dTeDdFeDRTMFVkbUF4N3JLQnZOcnhoc1Qwd2VWREYwRnBZWkNYL3Z2bXBNUXRoclNFTTlTYmdBOGZsZlVqMEdzTEl2VERudE9NUVhBMHJqV0NrOXdKNDNuSFlBaE1QR3NHY05wandqVlhiUHhHZU5nZHpUczJHSy9xdDBzazBYRFZrRG83b2JvQWxRMWJsdnhhNFlKOGpNRzhIc0NLd0NzRUs0Rlh6Y05RR1lQbWc1elIwRDVCeEZJN0tyZ0p1L3NOeitQMUdZRlhXVVhoR2NEL1EvSWtWZmR3TXJBbzhBd3M4QVNRZStkdXkrdGNsZ0NjdGdJVTZHNEhtVjA1YjBuODdwZ1BKZHl5RVJYcHZJSFI1ZTU5ai9ObCtHYUdGdlJiQllzUGJtd2pWMzkzeHF3VitmZTJ1ZWtJWHY1SzFHTWIxUFRtRm5OU3k5Uy92M0wxNzU4dnJsNlhJbWJMcEwrTndyUDZ0OHloaDN0Wit4OEtTOXJjdHJxZEEvWTF0Qnl3Snl4bm82c2lzYm0xcGFWMmQ2ZWdhc0J3OFQzaWUvZ2V2ajRIMkZEUDAyQUFBQUFCSlJVNUVya0pnZ2c9PSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzFfUFJFIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiIwYWNmMzAxMWJjNjBmMzc1ZmI1MzZmMDVmNDMxNTRlMCIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJ1cCI6ZmFsc2UsInV2Ijp0cnVlLCJjcmVkTWdtdCI6dHJ1ZX0sIm1heE1zZ1NpemUiOjEyMDAsIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6MjAsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4fX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjEtMDMtMjIiLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ik55bWkgRklETzIgQXV0aGVudGljYXRvciIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjEwMjE4MDA3IiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjMuNyIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4zLjAifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIxLTAzLTIyIn0seyJhYWd1aWQiOiJkOTFjNTI4OC0wZWYwLTQ5YjctYjhhZS0yMWNhMGFhNmIzZjMiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6ImQ5MWM1Mjg4LTBlZjAtNDliNy1iOGFlLTIxY2EwYWE2YjNmMyIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJLRVktSUQgRklETzIgQXV0aGVudGljYXRvciJ9LCJkZXNjcmlwdGlvbiI6IktFWS1JRCBGSURPMiBBdXRoZW50aWNhdG9yIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQnZqQ0NBV09nQXdJQkFnSVJBTEdwbVdZSVp4V3JvNGZMUFVFcy9nSXdDZ1lJS29aSXpqMEVBd0l3UFRFTE1Ba0dBMVVFQmhNQ1IwSXhGekFWQmdOVkJBb01Ea1J2ZENCUGNtbG5hVzRnVEhSa01SVXdFd1lEVlFRRERBeEdTVVJQSUZKdmIzUWdRMEV3SUJjTk1Ua3hNREUzTURBd01EQXdXaGdQTWpBME9URXdNVFl5TXpVNU5UbGFNRDB4Q3pBSkJnTlZCQVlUQWtkQ01SY3dGUVlEVlFRS0RBNUViM1FnVDNKcFoybHVJRXgwWkRFVk1CTUdBMVVFQXd3TVJrbEVUeUJTYjI5MElFTkJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVUdGl4SkVlc3lJaTltOXVNTGdhbUIyVEdlNC9adzYzWFh5WFJEUTRDSTl1ZXhMbGtjV0ErUitTUDlKLzVvbkhLbU9LSHhzRVNsR2o0N2F0aExjTmVINk5DTUVBd0hRWURWUjBPQkJZRUZMc0p2MGJZOXJ1UEMwVjdPZndQa09JdzA1Wk9NQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdEZ1lEVlIwUEFRSC9CQVFEQWdFR01Bb0dDQ3FHU000OUJBTUNBMGtBTUVZQ0lRRG5ZUmdtR0ErRlN4S0ZOVU95UDhMdjFmYUFyaUk2WndvcWVHR291YnY0S3dJaEFOTXE2VVRoMEN6SkQ2VFV4Rk5meS84aGdjQ2FPdTVzd0ZOYiszeHRKdlhLIl0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQURvQUFBQVNDQVlBQUFBS1JNMXpBQUFFR1dsRFExQnJRMGREYjJ4dmNsTndZV05sUjJWdVpYSnBZMUpIUWdBQU9JMk5WVjFvSEZVVVBydHpaeU1remxOc05JVjBxRDhOSlEyVFZqU2h0THAvM2QwMmJwWkpOdG9pNkdUMjdzNll5YzQ0TTd2OW9VOUZVSHd4NnBzVXhMKzNnQ0FvOVEvYlByUXZsUW9sMnRRZ0tENjArSU5RNkl1bTY1azdNNWxwdXJIZVplNTg4NTN2bm52dXVXZnZCZWk1cWxpV2tSUUJGcHF1TFJjeTRuT0hqNGc5SzVDRWg2QVhCcUZYVVIwclhhbE1BalpQQzNlMVc5OUR3bnRmMmRYZC9wK3R0MFlkRlNCeEgyS3o1cWdMaUk4QjhLZFZ5M1lCZXZxUkh6L3FXaDcyWXVpM01VREVMM3E0NFdQWHczTStmbzFwWnVRczR0T0lCVlZUYW9pWEVJL014ZmhHRFBzeHNOWmZvRTFxNjZybzVhSmltM1hkb0xGdzcySCtuMjNCYUlYemJjT256NW1mUG9UdllWejdLelVsNStGUnhFdXFrcDlHL0FqaWEyMTl0aHpnMjVhYmtSRS9CcERjM3BxdnBoSHZSRnlzMndlcXZwK2tyYldLSVg3bmhEYnpMT0l0aU04MzU4cFR3ZGlycXBQRm5NRjJ4TGMxV3ZMeU93VEFpYnBibXZISGN2dHRVNTd5NStYcU5ackxlM2xFL1BxOGVVajJmWEtmT2UzcGZPanpoSll0Qi95bGw1U0RGY1NEaUgraFJrSDI1K0wrc2R4S0VBTVphaHJsU1g4dWtxTU9XeS9qWFcybTZNOUxEQmMzMUI5TEZ1djZnVktnLzBTemkzS0FyMWtHcTFHTWpVL2FMYm5xNi9sUnhjNFhmSjk4aFRhcmdYKytEYk1KQlNpWU1JZTlDazFZQXhGa0tFQUczeGJZYUttRERnWXlGSzBVR1lwZm9XWVhHK2ZBUFBJNnRKbk53YjdDbFA3SXlGK0QrYmpPdENwa2h6NkNGcklhL0k2c0Z0Tmw4YXVGWEdNVFAzNHNOd0kvSmhrZ0V0bUR6MTR5U2ZhUmNUSUJJbm1LUEUzMmt4eXlFMlR2K3RoS2JFVmVQRGZXL2J5TU0xS21tMFhkT2JTN29HRC9NeXBNWEZQWHJDd090b1lqeXluN0JWMjkvTVpmc1Z6cExEZFJ0dUlabmJwWHp2bGYrZXY4TXZZci9HcWs0SC9rVi9HM2NzZGF6THV5VE1Qc2JGaHpkMVVhYlFiakZ2RFJtY1dKeFIzemNmSGtWdzlHZnBiSm1lZXY5RjA4V1c4dURrYXNsd1g2YXZsV0dVNk5SS3owZy9TSHRDeTlKMzBvL2NhOXpYM0tmYzE5em4zQlhRS1JPOHVkNDc3aExuQWZjMS9HOW1yekdscmZleFo1R0xkbjZaWnJyRW9oSTJ3VkhoWnl3amJoVVdFeThpY01DR05DVWRpQmxxM3IreGFmTDU0OUhRNWpIK2FuKzF5K0xsWUJpZnV4QXZSTi9sVlZWT2x3bENrZFZtOU5PTDVCRTR3a1EyU01sRFpVOTdoWDg2RWlsVS9sVW1rUVV6dFRFNm14MUVFUGg3T21kcUJ0QXZ2OEhkV3BickpTNnRKajNuMENXZE02YnVzTnpSVjNTOUtUWWhxdk5pcVdtdXJvaUtnWWhzaE1qbWhUaDlwdFdoc0Y3OTcwai9TYk1yc1BFMXN1UjV6N0RNQytQL0hzK3k3aWpyUUFsaHlBZ2NjamJoalB5Z2ZlQlRqemhOcXkyOEVka1VoOEMrRFU5K3oydi9veWVINzkxT25jeEhPczV5MkF0VGM3bmIvZjczVFdQa0QvcXdCbmpYOEJvSjk4VlFOY0MrOEFBQUE0WlZoSlprMU5BQ29BQUFBSUFBR0hhUUFFQUFBQUFRQUFBQm9BQUFBQUFBS2dBZ0FFQUFBQUFRQUFBRHFnQXdBRUFBQUFBUUFBQUJJQUFBQUFjZEx0Q3dBQUF6aEpSRUZVV0FudFYybElWRkVVUG0vR2NSb2JSOG42MFk4VWxTRGJTTWtXV3NTU0lBek1NU2xKRUEyTGJERTNiQkVLYXNpU2pQbWppTFJRWmhpTjVvOU1JYXZKSUtIQkNVdVpqQlNwZnRna2haUGtNalAyRnU5NTc5cTh5VVFoc1F1UCszM25mUGVjZCs2NTl6SERqTEVENXNCUXpJRWErUkxuVEtFKzBvNVd0RCtBNG9jRzNxVFZMWUkzUnhyUUhYb3hHbkhVc3ExZ1Nyd0NVaHM2eDRFL3U5NHhZQmNZTXdZOUp5MG9DU3VPQm5KaHRMb2dOazhqK3FSQUdyL24xQ3ZlbFZ5WER4YWJHV1dNUWdrTUk5RDNCUzlCUVFncUJFQjExQTB1Y0x1YzQ4OG9TcE5xYzlFTzRPYUw1SnlpbHF3UjUzWjJrOUR2ZEVHYnZZdVBWOS85SEZ4T1VTZFg1TVQ0L0dJdTU1aGJqTXUrcTJ0MEdKd2p3aE5xaUlMWTIrbEVTczFVb1pSbm5GajZiR0RwZklvdWE2NjRtMmlVQVJuYkQ2TW4vWDRlajQ5WFo2TXRhOGNKeE5NRnVudGZRMUtka0VzYWt6cTZVZ2ZCU1pVcEJJSitVeW9FcXJYSXBhQzN5Q3FsUEQ2NzhTQmNieTduOGZmK1QyQzF2ME9OMmk4QUN0ZWxJWjhLa09Zc01CdmhYc3ROUG95bDR3bEFJaDNSYTBlNUkwdUdXcU9GcTdHLzd4VHh5ODFGQ2VmUXRidGlIK0syWTQ4UVR3Y29pY2tHaFZMc1c2K2pqd29yZWlnendOQ1FnenF5YjNQWVhmSXlRaTVFb2xlcFVrTjNZU3ZQTTFjbHdLWEdFaGdkSGtSL1dNZ2EwS28wVUcxcmdnNzdCN1J6SURoZ01SeGFQYUVkbEVLZStNMFBoQjhEWDNsQlJ2MXBhRTY5aG1MWlFya0xUb2FQcndaOEZTcEMvM3EyNVpzaDNMQVcxNW1TalR3MmRUWlJtOGtaUTVhc21IS2htTUFEa0QyNld0MUNVS3FFNHB3alAwSGFNUTl4Z0x0ejVORm8vQ21KRDZPaytJSjVPb3BQRjVIK3lGT3pwMG82WkR2S2lTN3JpeUd2UnJ5WFoxckt3TEFsUzdvZWNWZnVNOFNUQlNaOUtZQitzbXJ2T3FPMUJnWWQvU2hxMkZ1R21BTmVDOTJ6ZEJzb1Vrb2g1Njd3VWFveVYwTEs4cDJ3TWlpVUNzS1J6VGYyVTdZWDZYY29QaE9FeS9uTjhRWHZKY21SR1hlVVFKeGxqeTVSNk1OaklTWnlGNkVRWCs2NUJSOC9kNEwwd1FVekNMaDg1T05EMGdTemQ3eG93d0ZDY2Y1am9aenlWdng1OW1lV0tJMHd4bUdBZndHbzFCcUlDRjhQclRtUG9TV3R5dU1yTWYvL3BubmNsOWxyRk0vajdLMWhVbS8rQzEweUtuMTA2WTFEQUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzFfUFJFIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiJkOTFjNTI4ODBlZjA0OWI3YjhhZTIxY2EwYWE2YjNmMyIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlfSwibWF4TXNnU2l6ZSI6MjA0OCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6MTAsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6OTYsInRyYW5zcG9ydHMiOlsidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN31dfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjAtMDctMTUiLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IktFWS1JRCBGSURPMsKuIFNlY3VyaXR5IEtleSB3aXRoIFUyRiIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjAwMzE5MDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjAuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4wLjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjAtMDctMTUifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIwLTA3LTE1In0seyJhYWd1aWQiOiI4ZWVjOWJmOS00ODZjLTQ2ZGEtOWE2Ny0xZmJiNGY2NmI5ZWQiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjhlZWM5YmY5LTQ4NmMtNDZkYS05YTY3LTFmYmI0ZjY2YjllZCIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJISUQgQ3Jlc2NlbmRvIDQwMDAgRklQUyJ9LCJkZXNjcmlwdGlvbiI6IkhJRCBDcmVzY2VuZG8gNDAwMCBGSVBTIiwiYWx0ZXJuYXRpdmVEZXNjcmlwdGlvbnMiOnsiZW4tVVMiOiJISUQgQ3Jlc2NlbmRvIDQwMDAgRklQUyJ9LCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MjYyMTQ0LCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX0seyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDK3pDQ0FxR2dBd0lCQWdJVUgzaGRta3BlMGpKVCtxYUpYeGI0UlE4U25Eb3dDZ1lJS29aSXpqMEVBd0l3YXpFTE1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBb01Da2hKUkNCSGJHOWlZV3d4SWpBZ0JnTlZCQXNNR1VGMWRHaGxiblJwWTJGMGIzSWdRWFIwWlhOMFlYUnBiMjR4SXpBaEJnTlZCQU1NR2taSlJFOGdRWFIwWlhOMFlYUnBiMjRnVW05dmRDQkRRU0F5TUI0WERUSTBNRFV3TWpFNU1UUTFNVm9YRFRRNU1EVXdNakU1TVRRMU1Wb3daakVMTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFvTUNraEpSQ0JIYkc5aVlXd3hJakFnQmdOVkJBc01HVUYxZEdobGJuUnBZMkYwYjNJZ1FYUjBaWE4wWVhScGIyNHhIakFjQmdOVkJBTU1GVVpKUkU4Z1FYUjBaWE4wWVhScGIyNGdRMEVnTnpCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQkZXQUJLSmhQb2NZVHViZmV6b3Nha2hJWnkzZmtramVyY3hnd2YxNjA4YXBDOWIyK29jN2xFVFgwN2ZkT2lwNmlFUy95bWR1eDBuR25MMUdrTk5QOWJTamdnRW1NSUlCSWpBT0JnTlZIUThCQWY4RUJBTUNBWVl3RWdZRFZSMFRBUUgvQkFnd0JnRUIvd0lCQURBZkJnTlZIU01FR0RBV2dCUzc2RHBsOTN2QjJoNUZETHZ5TU12VUJ5ajNpekFkQmdOVkhRNEVGZ1FVeDZLVWtsOTZ5cmZZbDRCMG9FaWtOY3dPcWJzd1JBWURWUjBmQkQwd096QTVvRGVnTllZemFIUjBjRG92TDJOeWJDNW9lV1J5WVc1MGFXUXVZMjl0TDBaSlJFOUJkSFJsYzNSaGRHbHZibEp2YjNSRFFUSXVZM0pzTUhZR0NDc0dBUVVGQndFQkJHb3dhREEvQmdnckJnRUZCUWN3QW9ZemFIUjBjRG92TDJOeWJDNW9lV1J5WVc1MGFXUXVZMjl0TDBaSlJFOUJkSFJsYzNSaGRHbHZibEp2YjNSRFFUSXVjRGRqTUNVR0NDc0dBUVVGQnpBQmhobG9kSFJ3T2k4dmIyTnpjQzVvZVdSeVlXNTBhV1F1WTI5dE1Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lFNEFnV004NXNpYlk0YVBHRlBCKzdJOUxJYTEwdDVOL2ZUU2FPUFpvL3pxQWlFQXJFU3VpYzBvbDJuTktGN1QrRExEeVU4Q205VlJSc1VwUEY5VkdoR2FSM2s9Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQVZNQUFBQ3NDQVlBQUFERytFOE1BQUFBSUdOSVVrMEFBSG9sQUFDQWd3QUErZjhBQUlEcEFBQjFNQUFBNm1BQUFEcVlBQUFYYjVKZnhVWUFBQUFKY0VoWmN3QUFEMkFBQUE5Z0FYcDRSWTBBQUF5Z1NVUkJWSGhlN1oxL2JKVGxIY0J2amhqTmNDNE8rZFhlWFZ0VVRNemlQN29ZWFpZNTFJa0tkMWZObkZIajVvaEJtQTdqMk1Sc1pvbG14aGhOSm9ydDI0S2dzaUZzaW03VEFkTVlSRlFFRlRjVnh3L3J3QUVGUkNoUSt1dWVQYy8xcVFQM1ROcyszM3ZldSt2bmszelM0MmdmbnZlOXQ1OCs3NzNYSXdFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBVUVwa0c2L1hQcG5JUlI4Z0loNXQ0MXI5Y1lhdEJmd1A5UTNuNngyMFRadFAxRGNwUk1UUE5kZVUxNHV1VnQyTXEyMUZCa3h0TWptckxwVnEwUjgzMTFaWDMycnZMbU1LUDIzMGpxbVAzRHNORWZIenpFVzdFeGZPR1dtTDhvV2trOGtmMXFYU1BYWFZxYVhKVWFQT3FLbXFPck11bWZwcmJUTFZuVXFsTHJlZlZrWk1tUDExL1pPbHc3bHpFQkVIb2ptcnpVWlRiVjMrTDNWangwNHdJUjA5ZXZUSjQxS3BLZG9iakNOSGpodzFkdXpZNUxoMGpkS3IxTFB0cDVjQkpxU3NSaEZSMHQ2Z3pyU1ZjWEdNRHFtcVNTWXordll3RTg2YXF0UzF0ZFhwNjgzdHVqRmpValZqazVQMUtyVzk5OVBMZ1Z6VTVkd1ppSWcrbXFCZU9xZk9sdVlvMHVuMGNUcW1YZmFQdzh3SzFkNU82RlA4dDJyVDZWdjB6Uytic1BiZVcrcmtvbytjT3dFUlVjSmNkTURXNWlpcXE2dVBINWVxNlZ0MUZsYW1PcUk3NjFJMTIwOUoxL1JGOWt2bEVkUDZobTg3Tng0UlVkSnN3ejIyT3A5aVlxcFhvNTMyajJabG1qL3BwSk8rcWo5MnA4ZU1PZDNlZjB4NXhEVFh0TSs1NFlpSWt1YWlEbHVkSStrOWhVOG5qdE8zQ3pFMWQ0NFlNV0tNdm4zUTNCNCtldmpKK25iZktyV0U0WFdraUJqS3k1dlBzdVg1bExwVWFtWnRNcjNmM0s2dFRyNVR1Rk5UbDB3K1dwTkszYXovcnFPMk9qM04zbDJpVEk2bU9qY1lFYkVZNXBxZXRmVTVpcnJxMURPMXlkU0JjVldwRyt4ZGlicXE1QXl6T3RYM0w3UjNsVEQxMFhMbkJpTWlGc05jVStIVTNVVnlWUElNSGRXVnA5WFdxVk5yYXZQNjl2S3FFVlduMnI4dWNlcWovYzROUmtRc2hybW9qRjR2T2hDSUtTS0cxSDBScWdJZ3BvZ1lVbUtLaUNnZ01VVkVGSkNZSWlJS1NFd1JFUVVrcG9pSUFoSlRSRVFCaVNraW9vREVGQkZSUUdLS2lDZ2dNVVZFRkpDWUlpSUtTRXdSRVFVa3BvaUlBaEpUUVM5N1dDVXVlRUFsTHB3ZFZ2TnY1aUwzbkFicjl4NTAvMXZGOWlLdGF6NERNYTdId0R6K3J2bjB4NngrL09LWWR6RTAyM0dSUG43TU1YU3AzaWVURzkzYlhHa1NVemx2bnZ1eWlvdmpycHpubk5PZzFBZi91czI3N01oaDJmbkpvZDV2UU5lOCtxUCtKbzZMYWRFcTk1ejY0ZGV1WFdCSHFRdzZ1M3RVVzN1bjJyeGpuMXE5WWFkYXNucXp1cW41WlhYeU5RdFU0dUtIVkNKVGdZRWxwbkthYjZhNHFKU1lmclRuUU5uRzlJYUhYM0xQcVIrZXFDTXpWTml6LzdCYThkWldkZVY5ejZ2RUJMMktyWlN3RWxNNWlhay94SFJvMGRuVm81NWQ5NkVhZitNaXY2ZEpTa0ZpS2ljeDlZZVlEbDNlYnRtanpwdTExTy94ajFOaUtpY3g5WWVZd2h0YmRxbFRwdXFWcXJrbzU5aFhKU3N4bFpPWStrTk13elByc1RYcXpzVnZxTHVXdktFeWR5OVR1WHVXcTE4dWZMMXczNzFMMTZzVjY3Y1ZMaWFGcENlZlY0KysrRStWdUdDMmMzK1ZwTVJVVG1McUR6RU5UMkxDYi9VcXNGRWxNZzMvblpPNUtGUzRUenRKUHg2WHpsRlZVeGFxS1hOV3FvL2JEdHV2TEQ2NzI5clZOMzY2eElUcXFQMVZraEpUT1ltcFA4UTBQSVhYaGpybTVGUkg3WmpKRGVxTzM2KzFYMTE4dW50NjFDMlByTmJINVJHeEwwV0pxWnpFMUI5aUdwNEJ4YlJQSGJaSmR5K3pJNFJoL2d2dkYxYkl6dm1VZ3NSVVRtTHFEekVOejZCaWFzdzBxaC9yMC82UVBQbnFCMzdIUnpFbHBuSVNVMytJYVhnR0hWTmpObEovLzNDUEhTa01UNy9XVXBwQkphWnlFbE4vaUdsNHZHS3FIZitUeFhha2NQenhGYjFDTGJYblVJbXBuTVRVSDJJYUh0K1ltcWk5dDIydkhTMGNQMXZ3cW5zK2NVbE01U1NtL2hEVDhIakhOQmVwODI1LzJvNFdqbncrcjhaUFgreWVVeHdTVXptSnFUL0VORHplTWRWKzVhcEg3R2hoMlhld1EyVCtJaEpUT1ltcFA4UTBQQ0l4bW1STzlUK3hJNGJsbVRVdGhkV3hjMTRoSmFaeUVsTi9pR2w0UkdLYWpkUXQ4MTZ4STRabitGV0N4LzlnSmFaeUVsTi9pR2w0cEU2VHo1eXh4STRZbnZjLzJ0djc2NitPZVFXVG1NcEpUUDBocHVHUml1bm82eCszSThiRGlPc2VkYzRybU1SVVRtTHFEekVOajFSTWgxM1JiRWVNQjNQTXh2cmNLVEdWazVqNlEwekRJeFZUY3hHcXE3dmJqaHFlcnU0ZXVXMFpqTVJVVG1McUR6RU5qMWlBOUhHemRsT3JIVFVlYnAwZjR3djVpYW1jeE5RZllob2VzWmhtR3RYQ2xSdnRxUEd3YmJjK2Z1SjZoMzVpS2ljeDlZZVloa2NzcGpwaXR6MjJ4bzRhRCswZFhTb3hNYWEzNlNPbWNoSlRmNGhwZUNSakd1ZHJUZnVJN2FvK01aVXp6cGgrNTFkL1V1Zk9lbHJFYi83OEtiVWhoamV1TUJEVDhJakZOS2JmMGY4c3R6Mit4ajIvWWt0TTVZd3pwcFVDTVEyUFdFeTE1OXkyMUk0YUg2dmUzZTZjVzlFbHBuSVNVMytJYVhncUxhWmI0N29JUlV6bEpLYitFTlB3VkZwTXQrODkyUHUvcWpybVYxU0pxWnpFMUI5aUdwNUtpK211ZmUwcWxuZmhKNlp5RWxOL2lHbDRLaTJtaGZjNHZjempHQnFzeEZST1l1b1BNUTFQeFozbWY4eHB2aXpFdEN3aHB1R3B0Smp1Mkh1SW1JcENUTXNTWWhxZVNvdnBCenYzbTdBNTUxZFVpYW1jY2NiVXZNSEU2MEt1MmJoVEhXanZzaU9IaFppR3A5Sml1bVQxWnVmY2lpNHhsVFBPbUI1cmZoS2JKOTBsdlBnaDlmckdlTjc5aDVpR1J5eW1KZkliVVBYM0xIZlByOWdTVXpuampDbS9tMjhscGdOR0xLWWw4cnY1c1p6aUc0bXBuTVRVSDJJYUhzbVlUby81dXNIK1E1MjlaMWV1K1JWYllpb25NZldIbUlaSExLYVpSclhvcFUxMjFIaFkzN0tibGFrNHhIVHdFdE5CUVV3YjFZcjEyK3lvOFhEMnpLWHV1WVdRbU1wSlRQMGhwdUVSaStua0J0WDZ5U0U3YW5qYTJ2VXAvaVV4dlRHMGtaaktTVXo5SWFiaGtYek9ORTZlV0xYSlBhOVFFbE01aWFrL3hEUThVakU5OFpyNWRzVHc5UFRrNDNuYnZTTWxwbklTVTMrSWFYaWtZbnJxOUNmc2lPSDV5N3AvbVpnNTV4Vk1ZaW9uTWZXSG1JWkhKS1k2WkpmYytad2RNU3lITzd2MU1SUGpjNlY5RWxNNWlhay94RFE4SWpITk5Lb2xxN2ZZRWNNeXJYR1ZlMDZoSmFaeUVsTi9pR2w0UkdJYTA4V25UZHYzeGZjaS9jOUtUT1VrcHY0UTAvQkl4SFQ4dEVWMnRIQzBkK2pUZTMyc3V1WVRpOFJVVG1McUR6RU5qM2RNOVNuKzNPYzMyTkhDWUs3ZW56WHpTZmQ4NHBLWXlrbE0vU0dtNGZHTjZmQWZ6TE1qaFdQR3ZKZWRjNGxWWWlvbk1mV0htSWJISzZhVEc5VGN2NFZkbGQ2K2NJMEpsM3MrY1VwTTVTU20vaERUOEF3NnB0bEluWC9Ibiswb1liaXBlVlU4L3lWSmZ5U21jaEpUZjRocGVBWVYwMHlET3ZmMlord0l4YWU3SjY5K05QdkYwbHlSOWtsTTVTU20vaERUOFBRN3BpWmsrclRlSEd2M1ByWGVmblh4T2RqZXFjWk5YZVNlVXlsSlRPVWtwdjRRMC9Ba3ZuVi83N3N0ZmRhSkQ2bGhWelNyRTYrZXIwNi9hYkhLM0wxYy9TSHdDL09YdmJtMU1BL1hQaXM1aWFtY3hOUWZZZ3FHZzRjNzFWWDNQMTlZQ2J2MlYwbEtUT1VrcHY0UTA2Rk5SMWUzZW5qWnV5cngzUWVjKzZta0phWnlFbE4vaU9uUXBMMnpTeld0Mk5CN1NsL0tGNWsrVDJJcUp6SDFoNWdPSGZMNXZIcTdaWSthTW1lbFNseWdWNkxsR3RFK2lhbWN4TlFmWWxyWmZOeDJXSzE2YjRlNjBielRVN1pSSlNaNVBOYWxKakdWYzlKdmxxbmxiMjR0WElFTTZjcDMvcTJPL2Y1YzU1d0daYVpSUGZqc1A1ei9Wckg5M2NxTitodk00NkxEeERucXBYZTNPOGN1cGl2ZTJxWXV1ZXM1OTV6NjRRbFh6MWU3OTdlcmx0YTJpdkROTGJ2VjJrMnRoWDN6NnlmV3FvbDNQcWRPTUQvd0w5YW44ZnFIdFdzZmxMM0VGTEVFTktlNDV1VklabFZlN3BydE1GZmh5K2xLdklURUZCRlJRR0tLaUNnZ01VVkVGSkNZSWlJS1NFd1JFUVVrcG9pSUFoSlRSRVFCaVNraW9vREVGQkZSUUdLS2lDZ2dNVVZFRkpDWUlpSUtTRXdSRVFVa3BvaUlBaEpUUkVRQkt6YW11YWpWdWNHSWlNWHhvSzFQaFpGdGFISnNMQ0ppY2N4RnUyeDlLb3dybXNjN054Z1JzUmhtb2wvWStsUWc1amtNMTBZaklrcWFpL0syT2hWS3J1a0Y1NFlqSWtxYWkzYlk2bFF3dWFqYnVmR0lpQkxtdE9mY2Q3d3RUZ1dUaTZZN2R3QWlvb1M1YUptdHpSQ2dQbnJOdVJNUUVYM01ScTIyTWtPSWJPTkc1ODVBUkJ5TXVhWUtmU2xVZjhoRmkvUU95T3VWcW52bklDSitrZWJLZlgzVFdsdVZJVXcyT2sydlVsdUpLaUlPMkZ5ME41RnR1czdXQkFxWXFOWkg2L1RIZlRxc25ZbjZacjJ6RUJHUDBLeENzMUdiYnNTV1JLWmhncTBIQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUJwa1VqOEI0QW9tK01iVCszSkFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJGSURPXzJfMCIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiI4ZWVjOWJmOTQ4NmM0NmRhOWE2NzFmYmI0ZjY2YjllZCIsIm9wdGlvbnMiOnsicmsiOnRydWUsImNsaWVudFBpbiI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6ZmFsc2UsImFsd2F5c1V2Ijp0cnVlfSwibWF4TXNnU2l6ZSI6NTEwLCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0IjoxLCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjk0LCJ0cmFuc3BvcnRzIjpbIm5mYyJdLCJmb3JjZVBJTkNoYW5nZSI6ZmFsc2UsIm1pblBJTkxlbmd0aCI6NiwiZmlybXdhcmVWZXJzaW9uIjoyNjIxNDQsImNlcnRpZmljYXRpb25zIjp7IkZJUFMtQ01WUC0zIjoyfSwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjMwfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDYtMDkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MjYyMTQ0LCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IkhJRCBDcmVzY2VuZG8gNDAwMCBGSVBTIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNTA2MDkwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wNi0wOSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyNjIxNDR9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMTAtMjQifSx7ImFhZ3VpZCI6IjRjNTBmZjEwLTEwNTctNGZjNi1iOGVkLTQzYTUyOTUzMGMzYyIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiNGM1MGZmMTAtMTA1Ny00ZmM2LWI4ZWQtNDNhNTI5NTMwYzNjIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkltcHJvdmVJRCBBdXRoZW50aWNhdG9yIn0sImRlc2NyaXB0aW9uIjoiSW1wcm92ZUlEIEF1dGhlbnRpY2F0b3IiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6NDUsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfSx7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQ2JUQ0NBaE9nQXdJQkFnSUpBS005RnFrMCtYOS9NQW9HQ0NxR1NNNDlCQU1DTUlHUk1Rc3dDUVlEVlFRR0V3SlZVekVSTUE4R0ExVUVDQXdJVm1seVoybHVhV0V4RURBT0JnTlZCQWNNQjBGemFHSjFjbTR4R0RBV0JnTlZCQW9NRDBsdGNISnZkbVZKUkN3Z1NXNWpMakVpTUNBR0ExVUVDd3daUVhWMGFHVnVkR2xqWVhSdmNpQkJkSFJsYzNSaGRHbHZiakVmTUIwR0ExVUVBd3dXU1cxd2NtOTJaVWxFSUVaSlJFOGdVbTl2ZENCRFFUQWdGdzB5TWpFeU1ERXdPVEk1TlRoYUdBOHlNRFV5TVRFeU16QTVNamsxT0Zvd2daRXhDekFKQmdOVkJBWVRBbFZUTVJFd0R3WURWUVFJREFoV2FYSm5hVzVwWVRFUU1BNEdBMVVFQnd3SFFYTm9ZblZ5YmpFWU1CWUdBMVVFQ2d3UFNXMXdjbTkyWlVsRUxDQkpibU11TVNJd0lBWURWUVFMREJsQmRYUm9aVzUwYVdOaGRHOXlJRUYwZEdWemRHRjBhVzl1TVI4d0hRWURWUVFEREJaSmJYQnliM1psU1VRZ1JrbEVUeUJTYjI5MElFTkJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVmWDBzRnlraXZDRzk1UGk1aldXZzBNc2EweG9YcUc1Uis2WG9oa1BTT1dxbWNKVytDa0M0RFdPQUFEekREWVp1aHgwczFCL1VrMkJvVmk5bVJJcWFncU5RTUU0d0hRWURWUjBPQkJZRUZNSnBLaDNYY2ZSTmlYVldmNlBudWRaaTJNczNNQjhHQTFVZEl3UVlNQmFBRk1KcEtoM1hjZlJOaVhWV2Y2UG51ZFppMk1zM01Bd0dBMVVkRXdRRk1BTUJBZjh3Q2dZSUtvWkl6ajBFQXdJRFNBQXdSUUlnTTkwWVYwVFQzOVY3QkR4bmZGS0pialUvSHZFbkpza2NGZ1dWOS90S3Jma0NJUURmQ0NUZkN6d1lSV0pwWHJ1Tjh3UmY0RFkxRWE2NGdqakk5ajVsbGhJUHR3PT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZ0NBSUFBQUQ4R08yakFBQUFDWEJJV1hNQUFDNGpBQUF1SXdGNHBUOTJBQUFLVDJsRFExQlFhRzkwYjNOb2IzQWdTVU5ESUhCeWIyWnBiR1VBQUhqYW5WTm5WRlBwRmozMzN2UkNTNGlBbEV0dlVoVUlJRkpDaTRBVWtTWXFJUWtRU29naG9ka1ZVY0VSUlVVRUc4aWdpQU9Pam9DTUZWRXNESW9LMkFma0lhS09nNk9JaXNyNzRYdWphOWE4OStiTi9yWFhQdWVzODUyenp3ZkFDQXlXU0ROUk5ZQU1xVUllRWVDRHg4VEc0ZVF1UUlFS0pIQUFFQWl6WkNGei9TTUJBUGgrUER3cklzQUh2Z0FCZU5NTENBREFUWnZBTUJ5SC93L3FRcGxjQVlDRUFjQjBrVGhMQ0lBVUFFQjZqa0ttQUVCR0FZQ2RtQ1pUQUtBRUFHRExZMkxqQUZBdEFHQW5mK2JUQUlDZCtKbDdBUUJibENFVkFhQ1JBQ0FUWlloRUFHZzdBS3pQVm9wRkFGZ3dBQlJtUzhRNUFOZ3RBREJKVjJaSUFMQzNBTURPRUF1eUFBZ01BREJSaUlVcEFBUjdBR0RJSXlONEFJU1pBQlJHOGxjODhTdXVFT2NxQUFCNG1iSTh1U1E1UllGYkNDMXhCMWRYTGg0b3pra1hLeFEyWVFKaG1rQXV3bm1aR1RLQk5BL2c4OHdBQUtDUkZSSGdnL1A5ZU00T3JzN09ObzYyRGw4dDZyOEcveUppWXVQKzVjK3JjRUFBQU9GMGZ0SCtMQyt6R29BN0JvQnQvcUlsN2dSb1hndWdkZmVMWnJJUFFMVUFvT25hVi9OdytINDhQRVdoa0xuWjJlWGs1TmhLeEVKYlljcFhmZjVud2wvQVYvMXMrWDQ4L1BmMTRMN2lKSUV5WFlGSEJQamd3c3owVEtVY3o1SUpoR0xjNW85SC9MY0wvL3dkMHlMRVNXSzVXQ29VNDFFU2NZNUVtb3p6TXFVaWlVS1NLY1VsMHY5azR0OHMrd00rM3pVQXNHbytBWHVSTGFoZFl3UDJTeWNRV0hUQTR2Y0FBUEs3YjhIVUtBZ0RnR2lENGM5My8rOC8vVWVnSlFDQVprbVNjUUFBWGtRa0xsVEtzei9IQ0FBQVJLQ0JLckJCRy9UQkdDekFCaHpCQmR6QkMveGdOb1JDSk1UQ1FoQkNDbVNBSEhKZ0theUNRaWlHemJBZEttQXYxRUFkTk1CUmFJYVRjQTR1d2xXNERqMXdEL3BoQ0o3QktMeUJDUVJCeUFnVFlTSGFpQUZpaWxnampnZ1htWVg0SWNGSUJCS0xKQ0RKaUJSUklrdVJOVWd4VW9wVUlGVklIZkk5Y2dJNWgxeEd1cEU3eUFBeWd2eUd2RWN4bElHeVVUM1VETFZEdWFnM0dvUkdvZ3ZRWkhReG1vOFdvSnZRY3JRYVBZdzJvZWZRcTJnUDJvOCtROGN3d09nWUJ6UEViREF1eHNOQ3NUZ3NDWk5qeTdFaXJBeXJ4aHF3VnF3RHU0bjFZOCt4ZHdRU2dVWEFDVFlFZDBJZ1lSNUJTRmhNV0U3WVNLZ2dIQ1EwRWRvSk53a0RoRkhDSnlLVHFFdTBKcm9SK2NRWVlqSXhoMWhJTENQV0VvOFRMeEI3aUVQRU55UVNpVU15SjdtUUFrbXhwRlRTRXRKRzBtNVNJK2tzcVpzMFNCb2prOG5hWkd1eUJ6bVVMQ0FyeUlYa25lVEQ1RFBrRytRaDhsc0tuV0pBY2FUNFUrSW9Vc3BxU2hubEVPVTA1UVpsbURKQlZhT2FVdDJvb1ZRUk5ZOWFRcTJodGxLdlVZZW9FelIxbWpuTmd4WkpTNld0b3BYVEdtZ1hhUGRwcitoMHVoSGRsUjVPbDlCWDBzdnBSK2lYNkFQMGR3d05oaFdEeDRobktCbWJHQWNZWnhsM0dLK1lUS1laMDRzWngxUXdOekhybU9lWkQ1bHZWVmdxdGlwOEZaSEtDcFZLbFNhVkd5b3ZWS21xcHFyZXFndFY4MVhMVkkrcFhsTjlya1pWTTFQanFRblVscXRWcXAxUTYxTWJVMmVwTzZpSHFtZW9iMVEvcEg1Wi9Za0dXY05NdzA5RHBGR2dzVi9qdk1ZZ0MyTVpzM2dzSVdzTnE0WjFnVFhFSnJITjJYeDJLcnVZL1IyN2l6MnFxYUU1UXpOS00xZXpVdk9VWmo4SDQ1aHgrSngwVGdubktLZVg4MzZLM2hUdktlSXBHNlkwVExreFpWeHJxcGFYbGxpclNLdFJxMGZydlRhdTdhZWRwcjFGdTFuN2dRNUJ4MG9uWENkSFo0L09CWjNuVTlsVDNhY0tweFpOUFRyMXJpNnFhNlVib2J0RWQ3OXVwKzZZbnI1ZWdKNU1iNmZlZWIzbitoeDlMLzFVL1czNnAvVkhERmdHc3d3a0J0c016aGc4eFRWeGJ6d2RMOGZiOFZGRFhjTkFRNlZobFdHWDRZU1J1ZEU4bzlWR2pVWVBqR25HWE9NazQyM0diY2FqSmdZbUlTWkxUZXBON3BwU1RibW1LYVk3VER0TXg4M016YUxOMXBrMW16MHgxekxubStlYjE1dmZ0MkJhZUZvc3RxaTJ1R1ZKc3VSYXBsbnV0cnh1aFZvNVdhVllWVnBkczBhdG5hMGwxcnV0dTZjUnA3bE9rMDZybnRabnc3RHh0c20ycWJjWnNPWFlCdHV1dG0yMmZXRm5ZaGRudDhXdXcrNlR2Wk45dW4yTi9UMEhEWWZaRHFzZFdoMStjN1J5RkRwV090NmF6cHp1UDMzRjlKYnBMMmRZenhEUDJEUGp0aFBMS2NScG5WT2IwMGRuRjJlNWM0UHppSXVKUzRMTExwYytMcHNieHQzSXZlUktkUFZ4WGVGNjB2V2RtN09id3UybzI2L3VOdTVwN29mY244dzBueW1lV1ROejBNUElRK0JSNWRFL0M1K1ZNR3Zmckg1UFEwK0JaN1huSXk5akw1RlhyZGV3dDZWM3F2ZGg3eGMrOWo1eW4rTSs0enczM2pMZVdWL01OOEMzeUxmTFQ4TnZubCtGMzBOL0kvOWsvM3IvMFFDbmdDVUJad09KZ1VHQld3TDcrSHA4SWIrT1B6cmJaZmF5MmUxQmpLQzVRUlZCajRLdGd1WEJyU0ZveU95UXJTSDM1NWpPa2M1cERvVlFmdWpXMEFkaDVtR0x3MzRNSjRXSGhWZUdQNDV3aUZnYTBUR1hOWGZSM0VOejMwVDZSSlpFM3B0bk1VODVyeTFLTlNvK3FpNXFQTm8zdWpTNlA4WXVabG5NMVZpZFdFbHNTeHc1TGlxdU5tNXN2dC84N2ZPSDRwM2lDK043RjVndnlGMXdlYUhPd3ZTRnB4YXBMaElzT3BaQVRJaE9PSlR3UVJBcXFCYU1KZklUZHlXT0NubkNIY0puSWkvUk50R0kyRU5jS2g1TzhrZ3FUWHFTN0pHOE5Ya2t4VE9sTE9XNWhDZXBrTHhNRFV6ZG16cWVGcHAySUcweVBUcTlNWU9Ta1pCeFFxb2hUWk8yWitwbjVtWjJ5NnhsaGJMK3hXNkx0eThlbFFmSmE3T1FyQVZaTFFxMlFxYm9WRm9vMXlvSHNtZGxWMmEvelluS09aYXJuaXZON2N5enl0dVFONXp2bi8vdEVzSVM0WksycFlaTFZ5MGRXT2E5ckdvNXNqeHhlZHNLNHhVRks0WldCcXc4dUlxMkttM1ZUNnZ0VjVldWZyMG1lazFyZ1Y3QnlvTEJ0UUZyNnd0VkN1V0ZmZXZjMSsxZFQxZ3ZXZCsxWWZxR25ScytGWW1LcmhUYkY1Y1ZmOWdvM0hqbEc0ZHZ5citaM0pTMHFhdkV1V1RQWnRKbTZlYmVMWjViRHBhcWwrYVhEbTROMmRxMERkOVd0TzMxOWtYYkw1Zk5LTnU3ZzdaRHVhTy9QTGk4WmFmSnpzMDdQMVNrVlBSVStsUTI3dExkdFdIWCtHN1I3aHQ3dlBZMDdOWGJXN3ozL1Q3SnZ0dFZBVlZOMVdiVlpmdEorN1AzUDY2SnF1bjRsdnR0WGExT2JYSHR4d1BTQS8wSEl3NjIxN25VMVIzU1BWUlNqOVlyNjBjT3h4KysvcDN2ZHkwTk5nMVZqWnpHNGlOd1JIbms2ZmNKMy9jZURUcmFkb3g3ck9FSDB4OTJIV2NkTDJwQ212S2FScHRUbXZ0YllsdTZUOHcrMGRicTNucjhSOXNmRDV3MFBGbDVTdk5VeVduYTZZTFRrMmZ5ejR5ZGxaMTlmaTc1M0dEYm9yWjc1MlBPMzJvUGIrKzZFSFRoMGtYL2krYzd2RHZPWFBLNGRQS3kyK1VUVjdoWG1xODZYMjNxZE9vOC9wUFRUOGU3bkx1YXJybGNhN251ZXIyMWUyYjM2UnVlTjg3ZDlMMTU4UmIvMXRXZU9UM2R2Zk42Yi9mRjkvWGZGdDErY2lmOXpzdTcyWGNuN3EyOFQ3eGY5RUR0UWRsRDNZZlZQMXYrM05qdjNIOXF3SGVnODlIY1IvY0doWVBQL3BIMWp3OURCWStaajh1R0RZYnJuamcrT1RuaVAzTDk2ZnluUTg5a3p5YWVGLzZpL3N1dUZ4WXZmdmpWNjlmTzBaalJvWmZ5bDVPL2JYeWwvZXJBNnhtdjI4YkN4aDYreVhnek1WNzBWdnZ0d1hmY2R4M3ZvOThQVCtSOElIOG8vMmo1c2ZWVDBLZjdreG1Uay84RUE1anovR016TGRzQUFBQWdZMGhTVFFBQWVpVUFBSUNEQUFENS93QUFnT2tBQUhVd0FBRHFZQUFBT3BnQUFCZHZrbC9GUmdBQUF0aEpSRUZVZU5yc2x0OUxrMUVZeDcvdk50ZTB2WE9rN3lTN3F5V0JZdm5qSWt0R1UwdkRDd2t0VjRLWHB2M3dCLzRCQmlJYS9RQzF3amtWVXhOc1V1dXV6ZDFrNmlCTEN4SUZ6Y0RYT1Rad1k4cjJzcjFycDR1WFp1b2dncnlKZlM4ZWVMNmM1M3c0NStFNUhJb1Fnb09VQ0Flc0dDQUdpQUVBeVg2TFpkbjE5WFdHWWRScTlUOGdrTjFxYTIwVkRsVlpjWlVRWXB1WktTMHRIVGNhOXl3ejZIdXJxNnMvenM2U1Aya1h3R0kyQXpqS3FIUTYzZnQzazRTUXBvWUdBTVdGUlh2S0xtb0xBQXdPRFB3ZG9MZEhEMkJrYU9oMzg0M0o1SEs1OXBUVjFkd0U4R3A4ZlArT1M0dEw1cmZtSDZHUWtPNzBvTHV6YzJqd3VTb3AyZEJyT0N5bms1S085UFgzWjJaa01Da3BxeXZmR0lZQmNMKzl3MnFkS0NvcUNnUUNBSGllRjJvZlAzeGtNcjFXMElyYXVscHRRWUhQN3dORjdlMkJObDhESU8zNENRQU5kK3U3dTdvQVNFQUJxS3VwSllSVTZhNERvR1h4cWFvVXBad1dBOWFKQ1VKSTRRVXRnRlBxa3duU1F3RDY5UHJvVnhRTUJ0dmIyaWlLZXREUndmTjhLQlRpT083Wms2Y0Erbm9OTE1zQ3lNbzh6Zm45SE1mbG5Na0NzTFM0T0QwMURVQjM5Um9oeE9sMHloTVM0aWlSM1c2UGJMc3pCM0Z4Y2JSQ1FRaFJKQ1pLSkJLeFdDeVR5ZVJ5R29CVUt2MHkveG1BVGxjcGk0K1h5V1FhalFhQXorZWJtcHdFVUY1UkRrQ2xVaFZxQzNnU25wK2JpejRIbk44UHdPLzNSNXhBZ012TnprNW1ra1dVQ01EcTZuZkJkemcyQkRDdFVBQndPbDIvZklkQWlnNElCb09SS0lqbmVRVk5iM20zaWkrWGlFSHArd3pwR2VsdXQvdWwwUWdnRUFpVVhTbTdkZWYydlphV3RMUzBoWVd2SCtZKzVaL055OG5OamY1VVNDU1NTSXc0NFhEWTRkaFFLcFhEdzhOaWlxcHZiQndkZVZGMW93b0F1N2FXbW5yTTBLUGYzdDYrVkZMYzFOeDhQdS9jNk5pWVNDU0tQc2tldDJkNWVkbmo4VVFjcjlkclg3ZTczWnRDeXJKclZxczFIQTRUUXBaWFZyeGVyK0M3TjkwV2k4Vm1zKzBmQ3lyMnE0Z0JZb0QvQVBCekFJNlZOcUdRUFVxbkFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsImNyZWRCbG9iIiwibWluUGluTGVuZ3RoIl0sImFhZ3VpZCI6IjRjNTBmZjEwMTA1NzRmYzZiOGVkNDNhNTI5NTMwYzNjIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwiZXAiOmZhbHNlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOnRydWUsImFsd2F5c1V2IjpmYWxzZX0sIm1heE1zZ1NpemUiOjEwMjQsInBpblV2QXV0aFByb3RvY29scyI6WzEsMl0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6MTAsInRyYW5zcG9ydHMiOlsibmZjIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN31dLCJmb3JjZVBJTkNoYW5nZSI6ZmFsc2UsIm1pblBJTkxlbmd0aCI6NCwibWF4Q3JlZEJsb2JMZW5ndGgiOjMyLCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6MX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIzLTAxLTE3IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjQ1LCJ1cmwiOiJodHRwczovL3d3dy5pbXByb3ZlaWQuY29tLyIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiSW1wcm92ZUlEIEF1dGhlbnRpY2F0b3IiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDIzMDExNzAwMiIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIzLTAxLTE3IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjQ1fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIzLTA1LTE4In0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiYjBmNDk4M2ZjMDEwYzcyY2UzM2E2NmIyNTkyNTUxN2U0NGQ5ODQ4MyJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyJiMGY0OTgzZmMwMTBjNzJjZTMzYTY2YjI1OTI1NTE3ZTQ0ZDk4NDgzIl0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJULVNoaWVsZCBUcnVzdFNFQyB1MmYifSwiZGVzY3JpcHRpb24iOiJULVNoaWVsZCBUcnVzdFNFQyB1MmYiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MiwicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfSx7Im1ham9yIjoxLCJtaW5vciI6MX0seyJtYWpvciI6MSwibWlub3IiOjJ9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIiwiYmFEZXNjIjp7InNlbGZBdHRlc3RlZEZSUiI6MC4wLCJzZWxmQXR0ZXN0ZWRGQVIiOjJFLTA1LCJpQVBBUlRocmVzaG9sZCI6MC4wLCJtYXhUZW1wbGF0ZXMiOjUsIm1heFJldHJpZXMiOjUsImJsb2NrU2xvd2Rvd24iOjMwfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjowLCJibG9ja1Nsb3dkb3duIjowfX0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNXRENDQWYrZ0F3SUJBZ0lVWmtvaEdVNkErRjJCS2JHNTlXSnlkYVBObzFjd0NnWUlLb1pJemowRUF3SXdnWUF4Q3pBSkJnTlZCQVlUQWtWSE1RNHdEQVlEVlFRSURBVkRZV2x5YnpFUk1BOEdBMVVFQ2d3SVZISjFjM1J6WldNeEVEQU9CZ05WQkFzTUIxSnZiM1FnUTBFeEZUQVRCZ05WQkFNTURIUnlkWE4wYzJWakxtNWxkREVsTUNNR0NTcUdTSWIzRFFFSkFSWVdiUzVuYUdGMGRHRnpRSFJ5ZFhOMGMyVmpMbTVsZERBZ0Z3MHlOREE1TURrd056UTNNVFphR0E4eU1EYzBNRGd5T0RBM05EY3hObG93Z1lBeEN6QUpCZ05WQkFZVEFrVkhNUTR3REFZRFZRUUlEQVZEWVdseWJ6RVJNQThHQTFVRUNnd0lWSEoxYzNSelpXTXhFREFPQmdOVkJBc01CMUp2YjNRZ1EwRXhGVEFUQmdOVkJBTU1ESFJ5ZFhOMGMyVmpMbTVsZERFbE1DTUdDU3FHU0liM0RRRUpBUllXYlM1bmFHRjBkR0Z6UUhSeWRYTjBjMlZqTG01bGREQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJHUTRPeHhUSUFtUWJyemg5OEM2Mm95azdId05BRm1QM2NEcThvbUhFdVFieTNtVHFXNnFrRE9Zc0FmMUpZQ3NNRCtBQW0veGM4VTBCY2ppdnNkQjg4V2pVekJSTUIwR0ExVWREZ1FXQkJSNWI4ZHVqTjJoaTF0MllQb2psVFZKVEdLdGVqQWZCZ05WSFNNRUdEQVdnQlI1YjhkdWpOMmhpMXQyWVBvamxUVkpUR0t0ZWpBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUgvVVJCdm0yYWUyYzNSOVlxTjcwZERJcDJDL240eDVhd05wZXk0clNzWW1BaUJrUTdUNmN3K2RaeWVad0RhbEtTMThUYkFKM1Fnd2N6by9tR2FMai9OeXJBPT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFDWGtBQUFja0NBWUFBQUFUQUpWckFBQUFDWEJJV1hNQUFDNGpBQUF1SXdGNHBUOTJBQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFCRjZsSlJFRlVlTnJzM1UySVhlZDV3UEhYeGlXT2FaaEJHRUl3UmhNcUtkQ211WU1XeDE0VWUxRHdxa29sTUE3WjVPcHFZN3dwSGtOS3N3aUpEQTdadWFPbG5acU1GTmRwcU1FaktOUU9oaHg1bDQvZWFKYkdBbzhRRmswQ3lVd0VxWlZEbUo3ak0yTk5aVW56ZGVmT2M4NzUvZURsZ0w3bTN1ZGU3ZjQ4N3oycnE2c0pBQUFBQUFBQUFBQ0FtTzQxQWdBQUFBQUFBQUFBZ0xoRVhnQUFBQUFBQUFBQUFJR0p2QUFBQUFBQUFBQUFBQUlUZVFFQUFBQUFBQUFBQUFRbThnSUFBQUFBQUFBQUFBaE01QVVBQUFBQUFBQUFBQkNZeUFzQUFBQUFBQUFBQUNBd2tSY0FBQUFBQUFBQUFFQmdJaThBQUFBQUFBQUFBSURBUkY0QUFBQUFBQUFBQUFDQmlid0FBQUFBQUFBQUFBQUNFM2tCQUFBQUFBQUFBQUFFSnZJQ0FBQUFBQUFBQUFBSVRPUUZBQUFBQUFBQUFBQVFtTWdMQUFBQUFBQUFBQUFnTUpFWEFBQUFBQUFBQUFCQVlDSXZBQUFBQUFBQUFBQ0F3RVJlQUFBQUFBQUFBQUFBZ1ltOEFBQUFBQUFBQUFBQUFoTjVBUUFBQUFBQUFBQUFCQ2J5QWdBQUFBQUFBQUFBQ0V6a0JRQUFBQUFBQUFBQUVKaklDd0FBQUFBQUFBQUFJRENSRndBQUFBQUFBQUFBUUdBaUx3QUFBQUFBQUFBQWdNQkVYZ0FBQUFBQUFBQUFBSUdKdkFBQUFBQUFBQUFBQUFJVGVRRUFBQUFBQUFBQUFBUW04Z0lBQUFBQUFBQUFBQWhNNUFVQUFBQUFBQUFBQUJDWXlBc0FBQUFBQUFBQUFDQXdrUmNBQUFBQUFBQUFBRUJnSWk4QUFBQUFBQUFBQUlEQVJGNEFBQUFBQUFBQUFBQ0JpYndBQUFBQUFBQUFBQUFDRTNrQkFBQUFBQUFBQUFBRUp2SUNBQUFBQUFBQUFBQUlUT1FGQUFBQUFBQUFBQUFRbU1nTEFBQUFBQUFBQUFBZ01KRVhBQUFBQUFBQUFBQkFZQ0l2QUFBQUFBQUFBQUNBd0VSZUFBQUFBQUFBQUFBQWdZbThBQUFBQUFBQUFBQUFBaE41QVFBQUFBQUFBQUFBQkNieUFnQUFBQUFBQUFBQUNFemtCUUFBQUFBQUFBQUFFSmpJQ3dBQUFBQUFBQUFBSURDUkZ3QUFBQUFBQUFBQVFHQWlMd0FBQUFBQUFBQUFnTUJFWGdBQUFBQUFBQUFBQUlHSnZBQUFBQUFBQUFBQUFBSVRlUUVBQUFBQUFBQUFBQVFtOGdJQUFBQUFBQUFBQUFoTTVBVUFBQUFBQUFBQUFCQ1l5QXNBQUFBQUFBQUFBQ0F3a1JjQUFBQUFBQUFBQUVCZ0lpOEFBQUFBQUFBQUFJREFSRjRBQUFBQUFBQUFBQUNCaWJ3QUFBQUFBQUFBQUFBQ0Uza0JBQUFBQUFBQUFBQUVKdklDQUFBQUFBQUFBQUFJVE9RRkFBQUFBQUFBQUFBUW1NZ0xBQUFBQUFBQUFBQWdNSkVYQUFBQUFBQUFBQUJBWUNJdkFBQUFBQUFBQUFDQXdFUmVBQUFBQUFBQUFBQUFnWW04QUFBQUFBQUFBQUFBQWhONUFRQUFBQUFBQUFBQUJDYnlBZ0FBQUFBQUFBQUFDRXprQlFBQUFBQUFBQUFBRUpqSUN3QUFBQUFBQUFBQUlEQ1JGd0FBQUFBQUFBQUFRR0FpTHdBQUFBQUFBQUFBZ01CRVhnQUFBQUFBQUFBQUFJR0p2QUFBQUFBQUFBQUFBQUlUZVFFQUFBQUFBQUFBQUFRbThnSUFBQUFBQUFBQUFBaE01QVVBQUFBQUFBQUFBQkNZeUFzQUFBQUFBQUFBQUNBd2tSY0FBQUFBQUFBQUFFQmdJaThBQUFBQUFBQUFBSURBUkY0QUFBQUFBQUFBQUFDQmlid0FBQUFBQUFBQUFBQUNFM2tCQUFBQUFBQUFBQUFFSnZJQ0FBQUFBQUFBQUFBSVRPUUZBQUFBQUFBQUFBQVFtTWdMQUFBQUFBQUFBQUFnTUpFWEFBQUFBQUFBQUFCQVlDSXZBQUFBQUFBQUFBQ0F3RVJlQUFBQUFBQUFBQUFBZ1ltOEFBQUFBQUFBQUFBQUFoTjVBUUFBQUFBQUFBQUFCQ2J5QWdBQUFBQUFBQUFBQ0V6a0JRQUFBQUFBQUFBQUVKaklDd0FBQUFBQUFBQUFJRENSRndBQUFBQUFBQUFBUUdBaUx3QUFBQUFBQUFBQWdNQkVYZ0FBQUFBQUFBQUFBSUdKdkFBQUFBQUFBQUFBQUFJVGVRRUFBQUFBQUFBQUFBUW04Z0lBQUFBQUFBQUFBQWhNNUFVQUFBQUFBQUFBQUJDWXlBc0FBQUFBQUFBQUFDQXdrUmNBQUFBQUFBQUFBRUJnSWk4QUFBQUFBQUFBQUlEQVJGNEFBQUFBQUFBQUFBQ0JpYndBQUFBQUFBQUFBQUFDRTNrQkFBQUFBQUFBQUFBRUp2SUNBQUFBQUFBQUFBQUlUT1FGQUFBQUFBQUFBQUFRbU1nTEFBQUFBQUFBQUFBZ01KRVhBQUFBQUFBQUFBQkFZQ0l2QUFBQUFBQUFBQUNBd0VSZUFBQUFBQUFBQUFBQWdZbThBQUFBQUFBQUFBQUFBaE41QVFBQUFBQUFBQUFBQkNieUFnQUFBQUFBQUFBQUNFemtCUUFBQUFBQUFBQUFFSmpJQ3dBQUFBQUFBQUFBSURDUkZ3QUFBQUFBQUFBQVFHQWlMd0FBQUFBQUFBQUFnTUJFWGdBQUFBQUFBQUFBQUlHSnZBQUFBQUFBQUFBQUFBSVRlUUVBQUFBQUFBQUFBQVFtOGdJQUFBQUFBQUFBQUFoTTVBVUFBQUFBQUFBQUFCQ1l5QXNBQUFBQUFBQUFBQ0F3a1JjQUFBQUFBQUFBQUVCZ0lpOEFBQUFBQUFBQUFJREFSRjRBQUFBQUFBQUFBQUNCaWJ3QUFBQUFBQUFBQUFBQ0Uza0JBQUFBQUFBQUFBQUVKdklDQUFBQUFBQUFBQUFJVE9RRkFBQUFBQUFBQUFBUW1NZ0xBQUFBQUFBQUFBQWdNSkVYQUFBQUFBQUFBQUJBWUNJdkFBQUFBQUFBQUFDQXdFUmVBQUFBQUFBQUFBQUFnWW04QUFBQUFBQUFBQUFBQWhONUFRQUFBQUFBQUFBQUJDYnlBZ0FBQUFBQUFBQUFDRXprQlFBQUFBQUFBQUFBRUpqSUN3QUFBQUFBQUFBQUlEQ1JGd0FBQUFBQUFBQUFRR0FpTHdBQUFBQUFBQUFBZ01CRVhnQUFBQUFBQUFBQUFJR0p2QUFBQUFBQUFBQUFBQUlUZVFFQUFBQUFBQUFBQUFRbThnSUFBQUFBQUFBQUFBaE01QVVBQUFBQUFBQUFBQkNZeUFzQUFBQUFBQUFBQUNBd2tSY0FBQUFBQUFBQUFFQmdJaThBQUFBQUFBQUFBSURBUkY0QUFBQUFBQUFBQUFDQmlid0FBQUFBQUFBQUFBQUNFM2tCQUFBQUFBQUFBQUFFSnZJQ0FBQUFBQUFBQUFBSVRPUUZBQUFBQUFBQUFBQVFtTWdMQUFBQUFBQUFBQUFnTUpFWEFBQUFBQUFBQUFCQVlDSXZBQUFBQUFBQUFBQ0F3RVJlQUFBQUFBQUFBQUFBZ1ltOEFBQUFBQUFBQUFBQUFoTjVBUUFBQUFBQUFBQUFCQ2J5QWdBQUFBQUFBQUFBQ0V6a0JRQUFBQUFBQUFBQUVKaklDd0FBQUFBQUFBQUFJRENSRndBQUFBQUFBQUFBUUdBaUx3QUFBQUFBQUFBQWdNQkVYZ0FBQUFBQUFBQUFBSUdKdkFBQUFBQUFBQUFBQUFJVGVRRUFBQUFBQUFBQUFBUW04Z0lBQUFBQUFBQUFBQWhNNUFVQUFBQUFBQUFBQUJDWXlBc0FBQUFBQUFBQUFDQXdrUmNBQUFBQUFBQUFBRUJnSWk4QUFBQUFBQUFBQUlEQVJGNEFBQUFBQUFBQUFBQ0JpYndBQUFBQUFBQUFBQUFDRTNrQkFBQUFBQUFBQUFBRUp2SUNBQUFBQUFBQUFBQUlUT1FGQUFBQUFBQUFBQUFRbU1nTEFBQUFBQUFBQUFBZ01KRVhBQUFBQUFBQUFBQkFZQ0l2QUFBQUFBQUFBQUNBd0VSZUFBQUFBQUFBQUFBQWdZbThBQUFBQUFBQUFBQUFBaE41QVFBQUFBQUFBQUFBQkNieUFnQUFBQUFBQUFBQUNFemtCUUFBQUFBQUFBQUFFSmpJQ3dBQUFBQUFBQUFBSURDUkZ3QUFBQUFBQUFBQVFHQWlMd0FBQUFBQUFBQUFnTUJFWGdBQUFBQUFBQUFBQUlHSnZBQUFBQUFBQUFBQUFBSVRlUUVBQUFBQUFBQUFBQVFtOGdJQUFBQUFBQUFBQUFoTTVBVUFBQUFBQUFBQUFCQ1l5QXNBQUFBQUFBQUFBQ0F3a1JjQUFBQUFBQUFBQUVCZ0lpOEFBQUFBQUFBQUFJREFSRjRBQUFBQUFBQUFBQUNCaWJ3QUFBQUFBQUFBQUFBQ0Uza0JBQUFBQUFBQUFBQUVKdklDQUFBQUFBQUFBQUFJVE9RRkFBQUFBQUFBQUFBUW1NZ0xBQUFBQUFBQUFBQWdNSkVYQUFBQUFBQUFBQUJBWUNJdkFBQUFBQUFBQUFDQXdFUmVBQUFBQUFBQUFBQUFnWW04QUFBQUFBQUFBQUFBQWhONUFRQUFBQUFBQUFBQUJDYnlBZ0FBQUFBQUFBQUFDRXprQlFBQUFBQUFBQUFBRUpqSUN3QUFBQUFBQUFBQUlEQ1JGd0FBQUFBQUFBQUFRR0FpTHdBQUFBQUFBQUFBZ01CRVhnQUFBQUFBQUFBQUFJR0p2QUFBQUFBQUFBQUFBQUlUZVFFQUFBQUFBQUFBQUFRbThnSUFBQUFBQUFBQUFBaE01QVVBQUFBQUFBQUFBQkNZeUFzQUFBQUFBQUFBQUNBd2tSY0FBQUFBQUFBQUFFQmdJaThBQUFBQUFBQUFBSURBUkY0QUFBQUFBQUFBQUFDQmlid0FBQUFBQUFBQUFBQUNFM2tCQUFBQUFBQUFBQUFFSnZJQ0FBQUFBQUFBQUFBSVRPUUZBQUFBQUFBQUFBQVFtTWdMQUFBQUFBQUFBQUFnTUpFWEFBQUFBQUFBQUFCQVlDSXZBQUFBQUFBQUFBQ0F3RVJlQUFBQUFBQUFBQUFBZ1ltOEFBQUFBQUFBQUFBQUFoTjVBUUFBQUFBQUFBQUFCQ2J5QWdBQUFBQUFBQUFBQ0V6a0JRQUFBQUFBQUFBQUVKaklDd0FBQUFBQUFBQUFJRENSRndBQUFBQUFBQUFBUUdBaUx3QUFBQUFBQUFBQWdNQkVYZ0FBQUFBQUFBQUFBSUdKdkFBQUFBQUFBQUFBQUFJVGVRRUFBQUFBQUFBQUFBUW04Z0lBQUFBQUFBQUFBQWhNNUFVQUFBQUFBQUFBQUJDWXlBc0FBQUFBQUFBQUFDQXdrUmNBQUFBQUFBQUFBRUJnSWk4QUFBQUFBQUFBQUlEQVJGNEFBQUFBQUFBQUFBQ0JpYndBQUFBQUFBQUFBQUFDRTNrQkFBQUFBQUFBQUFBRUp2SUNBQUFBQUFBQUFBQUlUT1FGQUFBQUFBQUFBQUFRbU1nTEFBQUFBQUFBQUFBZ01KRVhBQUFBQUFBQUFBQkFZQ0l2QUFBQUFBQUFBQUNBd0VSZUFBQUFBQUFBQUFBQWdZbThBQUFBQUFBQUFBQUFBaE41QVFBQUFBQUFBQUFBQkNieUFnQUFBQUFBQUFBQUNFemtCUUFBQUFBQUFBQUFFSmpJQ3dBQUFBQUFBQUFBSURDUkZ3QUFBQUFBQUFBQVFHQWlMd0FBQUFBQUFBQUFnTUJFWGdBQUFBQUFBQUFBQUlHSnZBQUFBQUFBQUFBQUFBSVRlUUVBQUFBQUFBQUFBQVFtOGdJQUFBQUFBQUFBQUFoTTVBVUFBQUFBQUFBQUFCQ1l5QXNBQUFBQUFBQUFBQ0F3a1JjQUFBQUFBQUFBQUVCZ0lpOEFBQUFBQUFBQUFJREFSRjRBQUFBQUFBQUFBQUNCaWJ3QUFBQUFBQUFBQUFBQ0Uza0JBQUFBQUFBQUFBQUVKdklDQUFBQUFBQUFBQUFJVE9RRkFBQUFBQUFBQUFBUW1NZ0xBQUFBQUFBQUFBQWdNSkVYQUFBQUFBQUFBQUJBWUNJdkFBQUFBQUFBQUFDQXdFUmVBQUFBQUFBQUFBQUFnWW04QUFBQUFBQUFBQUFBQWhONUFRQUFBQUFBQUFBQUJDYnlBZ0FBQUFBQUFBQUFDRXprQlFBQUFBQUFBQUFBRUpqSUN3QUFBQUFBQUFBQUlEQ1JGd0FBQUFBQUFBQUFRR0FpTHdBQUFBQUFBQUFBZ01CRVhnQUFBQUFBQUFBQUFJR0p2QUFBQUFBQUFBQUFBQUlUZVFFQUFBQUFBQUFBQUFRbThnSUFBQUFBQUFBQUFBaE01QVVBQUFBQUFBQUFBQkNZeUFzQUFBQUFBQUFBQUNBd2tSY0FBQUFBQUFBQUFFQmdJaThBQUFBQUFBQUFBSURBUkY0QUFBQUFBQUFBQUFDQmlid0FBQUFBQUFBQUFBQUNFM2tCQUFBQUFBQUFBQUFFSnZJQ0FBQUFBQUFBQUFBSVRPUUZBQUFBQUh2azNSOGRQZjZIdDdLZm1BUUFBQUFBdXlIeUFnQUFBSUE5VU9UWjVOUm43NXRiWFYxOVl2SDgwWUdKQUFBQUFMQlRJaThBQUFBQUdMRXE4Q29mK2IzM3ByOWErNlVmQ0wwQUFBQUEyQ21SRndBQUFBQ00wSHJnVlo3ZUxiOVZoVjd6SmdRQUFBREFkb204QUFBQUFHQkU3aEo0clRzbDlBSUFBQUJndTBSZUFBQUFBREFDUlo1Tmw0K2xkT2ZBYTUzUUN3QUFBSUJ0dVdkMWRkVVVBQUFBQUdBWDFnS3Z2RHdUdC83ZUh6OWNUVXUvK2ZQdC90cGllV1o2L2VHeUNRSUFBQUJ3TnpaNUFRQUFBTUF1RkhrMlNIY0l2RFpSYmZ6S0Y4OGZuVEpGQUFBQUFPNUc1QVVBQUFBQU8xVGsyV3o1K0VIYWZ1QzFyZ3E5TGkyZVB6cHRtZ0FBQUFEY2ljZ0xBQUFBQUhhZ3lMUDU4dkV2SS9pbnFrQ3MydWcxTUZVQUFBQUFidWVlMWRWVlV3QUFBQUNBTFNyeWJMSjhMSlRuOGEzOCtUOSt1SnFXZnZQbnJmN3p6L1g2d3psVEJnQUFBR0Fqa1JjQUFBQUFiRkdSWjlXMWl2T3B2bVp4UzdZWmVWWE9sV2UyMXg4dW16Z0FBQUFBRmRjMUFnQUFBTUFXRkhsMnNuemthUnVCMXc2ZFN2WDFqWk9tRGdBQUFFQkY1QVVBQUFBQW15ank3RXo1ZUtNOEUyUDZrVlZJdHJSNC91aTA2UU1BQUFEZ3VrWUFBQUFBdUlNaXo2cHRXdlBsT2JIVGYyTUgxelhlNm5TdlA1ejNhUUFBQUFCMGw4Z0xBQUFBQUc2anlMTnFpOVo4MnVYMWpDT0l2Q3JueWpQYjZ3K1hmVElBQUFBQTNlTzZSZ0FBQUFDNFJaRm5KOHRIbm5ZWmVJM1FxZXIxTEo0L091WFRBUUFBQU9nZWtSY0FBQUFBYkZEazJWejVlS004RThGZVdoV2NYVm84Zi9Ta1R3a0FBQUNnVzF6WENBQUFBQURwbzdocnFud3NwQkZ2N3hyUmRZMjNPdHZyRDJkOWFnQUFBQURkSVBJQ0FBQUFvUFBXcm1lY1QzdXd2V3VQSXEvS1lubE85dnJESlo4Z0FBQUFRTHU1cmhFQUFBQ0FUZ3Q4UGVObVhOOElBQUFBMEJFMmVRRUFBQURRU1h0MVBlT3Q5bkNUMTBhdWJ3UUFBQUJvTVpFWEFBQUFBSjFUNU5tZ2ZGUWJ2UFo4ZTllWUlxOUtkWDNqb05jZlh2SUpBd0FBQUxTTHlBc0FBQUNBemlqeWJMSjh6SmZueExoKzVoZ2pyOHBLZWM3MCtzTTVuellBQUFCQWU0aThBQUFBQU9pRUlzOW1VaDE0SFJ6bnp4MXo1TFh1UXFxM2VpMzc1QUVBQUFDYTcxNGpBQUFBQUtEdGlqeXJObHY5TkkwNThOcEgxYWF5cGNYelIwLzY5QUVBQUFDYXp5WXZBQUFBQUZxcnlMUHBWRy92NnUzWGE5aW5UVjRiblUzMUZZNjJlZ0VBQUFBMGxFMWVBQUFBQUxSU2tXZG55c2V2MGo0R1hrRThXNTVMaStlUHp2aFdBQUFBQURTVFRWNEFBQUFBdEVxRTdWMGJCZGprdFpHdFhnQUFBQUFOWkpNWEFBQUFBSzFSNU5scytjaVQ3VjEzWXFzWEFBQUFRQVBaNUFVQUFBQkE0MFhiM3JWUnNFMWVHOW5xQlFBQUFOQVFObmtCQUFBQTBHaEZucDBwSDc5S3RuZHRsNjFlQUFBQUFBMWhreGNBQUFBQWpSUjVlOWRHZ1RkNWJXU3JGd0FBQUVCZ0lpOEFBQUFBR3FYSXM4bnlNVnVlN3pUaDlUWWs4cXFzbEdmUTZ3OFhmTXNBQUFBQVloRjVBUUFBQU5BWVJaN05wSHA3MThHbXZPWUdSVjdyTHBSbnR0Y2ZMdm5HQVFBQUFNUWc4Z0lBQUFBZ3ZMWHRYZlBsT2RHMDE5N0F5S3RTYmZXcXJtK2M4KzBEQUFBQTJIOGlMd0FBQUFCQ0svS3N1cHJ4VEhrbW12ajZHeHA1clZ0TTlSV09sM3dUQVFBQUFQYVB5QXNBQUFDQWtJbzhteTRmMVNhcHg1djhQaG9lZWEwN20rck5Yc3UrbVFBQUFBRGpKL0lDQUFBQUlKUzFxeG5QbE9mWk5yeWZsa1JlbGVvS3g5bGVmemp2V3dvQUFBQXdYaUl2QUFBQUFNSW84bXlRNnUxZEUyMTVUeTJLdk5aZFRIWHM1UXBIQUFBQWdERVJlUUVBQUFDdzc5cHlOZVB0dEREeVd1Y0tSd0FBQUlBeEVYa0JBQUFBc0cvYWRqWGo3YlE0OHFxNHdoRUFBQUJnREVSZUFBQUFBT3lMSXM5bVV4MTRUYlQ1ZmJZODhscFhYZUZZYmZYS2ZiTUJBQUFBUmsva0JRQUFBTUJZRlhrMmsrcXJHWHRkZUw4ZGlielduVXQxN0xYa213NEFBQUF3T2lJdkFBQUFBTWFpeUxPcFZNZGRKN3IwdmpzV2VWVlcxajdudVY1L3VPeWJEd0FBQUxCN0lpOEFBQUFBOWxTUlo1T3B2cGJ4MlM2Ky93NUdYdXV1cEhxcjE3ei9CUUFBQUFDN0kvSUNBQUFBWU04VWVUYWI2c0Jyb3FzejZIRGt0VzZ4UExPOS9qRDNQd0lBQUFCZ1owUmVBQUFBQUl4Y2tXZURWTWRkQjdzK0M1SFh4eTZXWjlEckQ1ZU1BZ0FBQUdCN1JGNEFBQUFBakV5Ulp6T3BqcnNlTjQyYXlPc1R6cVg2R3NjbG93QUFBQURZR3BFWEFBQUFBTHRXNU5sVStaaFA0cTVQRUhuZDFrcDU1cXJUNncrWGpRTUFBQURnN2tSZUFBQUFBT3pZV3R4MXBqeW5UT1AyUkY1MzlWSHMxZXNQenhnRkFBQUF3SjJKdkFBQUFBRFl0aUxQSmxNZGR6MXJHbmNuOHRxU0s2bSt3bkhlS0FBQUFBQStTZVFGQUFBQXdKYXR4VjJ6YTJmQ1JEWW44dG9Xc1JjQUFBREFiWWk4QUFBQUFOaVV1R3ZuUkY0N1VzVmVnMTUvbUJzRkFBQUFnTWdMQUFBQWdMc1FkKzJleUd0WExxWjZzMWR1RkFBQUFFQ1hpYndBQUFBQStBUngxK2lJdkVaQzdBVUFBQUIwbXNnTEFBQUFnSStKdTBaUDVEVlNZaThBQUFDZ2swUmVBQUFBQUlpNzlwRElhMCtJdlFBQUFJQk9FWGtCQUFBQWRKaTRhKytKdlBaVUZYdk45ZnJEQmFNQUFBQUEya3prQlFBQUFOQkI0cTd4RVhtTnhaVlViL2FhTndvQUFBQ2dqVVJlQUFBQUFCMVM1TmxVcXNPdVFSSjNqWVhJYTZ6RVhnQUFBRUFyaWJ3QUFBQUFPbUF0N2pwVG5sT21NVjRpcjMxUnhWNXo1Wm52OVlmTHhnRUFBQUEwbmNnTEFBQUFvTVdLUEp0SjlkWXVjZGMrRVhudHE1VlV4MTV6WWk4QUFBQ2d5VVJlQUFBQUFDMjBGbmVkS2MvanByRy9SRjRoVkxIWFFxcXZjbHd5RGdBQUFLQnBSRjRBQUFBQUxWTGsyU0RWY2RkQjA0aEI1QlhPdVZSZjQ1Z2JCUUFBQU5BVUlpOEFBQUNBaGl2eWJMSjh6S2I2V2taeFZ6QWlyN0F1cHZvYXh3V2pBQUFBQUtJVGVRRUFBQUEwVkpGblU2bmUybld5UEJNbUVwUElLN3dyYS8rUEZucjk0Ykp4QUFBQUFCR0p2QUFBQUFBYXBzaXptVlJ2N2pwaEd2R0p2QnBqcFR6enFkN3V0V1FjQUFBQVFDUWlMd0FBQUlDR0tQSnNrT3FOUTY1a2JCQ1JWeU9kSzg5OHJ6L01qUUlBQUFDSVFPUUZBQUFBRU5qYWxZeURWRy91Y2lWakE0bThHbTB4MVp1OTVvMENBQUFBMkU4aUx3QUFBSUNBWE1uWUhpS3ZWbkNWSXdBQUFMQ3ZSRjRBQUFBQVFSUjVOcGx1YnUxeUpXTkxpTHhhNTBLcXIzSmNNQW9BQUFCZ1hFUmVBQUFBQVB1c3lMUHBWSWRkSjVNckdWdm4ydS8vSWkxZi8xK0RhSjhyNVpsTGRmQzFiQndBQUFEQVhoSjVBUUFBQU95VElzOEdxWTY3ZXFiUlB0ZHZQSkJlZlBOejZjZi8rZC9wRzRPL1RZOCsvTDZodE5lNVZNZGV1VkVBQUFBQWUwSGtCUUFBQURCR1JaNU5wVHJzR2lSYnUxcnIzZDgrbEw3eDh1L1RXMjlmL1BqWG5qbDlNZzMrN24vUy9mZmRNS0Qyc3QwTEFBQUEyQk1pTHdBQUFJQTlWdVRaWktxdllyUzFxd05lZXVkSStzZnYvTnR0ZisrSlk0K2xwNy95bVhUNHdEV0Rhai9idlFBQUFJQ1JFWGtCQUFBQTdKRWl6NlpUSFhaVmdaZXRYUzMzd2NxRDZaL09yYWJYMzNoejB6LzdyZWVlU3NlL2VOVldyMjZ3M1FzQUFBRFlOWkVYQUFBQXdBaXRiZTBhckIxYnV6cml0Vjk4SWIzdzhzL1M1Y3Z2YmZudjJPclZTUmRTSFhzdEdBVUFBQUN3SFNJdkFBQUFnQkVvOHF6YTFsV2RVNmJSSGRYMnJoZGUvMVI2NWRXZE56dTJlblZTdGQycit0TE05ZnJESmVNQUFBQUFOaVB5QWdBQUFOaWhJcyttMHMzckdBK2FTTGU4OU02UmRQYUhQOS9XOXE0N3NkV3IweFpUZlozamd1c2NBUUFBZ0RzUmVRRUFBQUJzZytzWWVmZTNENlhuZi9SaGV2Mk5OMGYrYjl2cTFYbm5VaDE3dWM0UkFBQUErSDlFWGdBQUFBQmJVT1RaSU5VYnUwNllSamRkdi9GQSt2N0ZoOUkzdi9mYW52NmNRNGNPcDI4Ly9UZnBTNSs5WXVqZHRWS2UrZXIwK3NOTHhnRUFBQUNJdkFBQUFBRHVvTWl6bVZSdjdLcmlyZ2tUNmE2ZlhqNlVYdnp4dGZUVzJ4Zkg5ak8vL3JYajZmVE1IOUtCVDEvM0FYUmJWZnV0WCtlNFpCd0FBQURRVFNJdkFBQUFnQTJLUEp0T044T3VneWJTYlIrc1BKak8vdGRmcHJtWC9tTmZmbjYxMWV2MGs5UHA3Ly82c2crRHltSzZ1ZUZyMlRnQUFBQ2dPMFJlQUFBQVFPY1ZlVGFWNnJDck9zSXVQdkxTTzBmUzJSLytQRjIrL042K3Y1WW5qajJXbnY3S1o5TGhBOWQ4TUt5N1VKNkZWRy80RW53QkFBQkF5NG04QUFBQWdFNWFDN3VxYlYyRDh2Uk1oSFcvdlByNTlQejVYNC8xYXNhdGV1YjB5ZlRWUjM3bkNrZHVKZmdDQUFDQWxoTjVBUUFBQUowaDdPSnVxcXNaWDNqOVUrbVZWeGZDdjlidi92TlQ2Y3RIcnFiNzc3dmhnK05XVmZCVlhlZTRZQlFBQUFEUUhpSXZBQUFBb05XRVhXem0rbzBIMHZjdlBwUysrYjNYR3ZXNnF5c2NuenoyWUhyMDRmZDlpTnpPU2xyYjdsV2UzSVl2QUFBQWFEYVJGd0FBQU5BNndpNjI2clZmZkNHOThQTFAwdVhMN3pYMlBYejlhOGZUUHp5eW1nNGZ1T1lENVc1YzZRZ0FBQUFOSnZJQ0FBQUFXcUhJcytueU1aT0VYV3pCTDY5K1BqMS8vdGZwcmJjdnR1WTlQWFA2WlBycUk3OUxCejU5M1FmTVpnUmZBQUFBMERBaUx3QUFBS0N4MXNLdVFhcTNkaDAwRVRaVHhWMnYvT1JQNlpWWEYxcjdIci8xM0ZQcCtCZXZwdnZ2dStFRFp5dXEwbkU5K0ZveURnQUFBSWhKNUFVQUFBQTBTcEZuVmRDMWZpWk1oSzM0WU9YQjlLLzVSUHJ1M0w5MzR2MGVPblE0blg1eU9uMzVpTmlMYlZsTU40T3ZTOFlCQUFBQWNZaThBQUFBZ05DS1BKdE1ONk91bVNUc1lodXUzM2dndmZqbTV6b1RkOTNxaVdPUHBTZVBQWmdlZmZqOS8yUHZib0NydXM5N1ViOTJFRWlBWkNQeExlbGdqQ1NJblZoS2JMQTVxUTBoSmpnTnhkakdQWXhkYUZOUHJwT1pNMk9uN1ozZXp2RWs1MmJTU1U5NzBxYVQ2YmpwcWNlOUpVbEpqVDlLeWRnVUJ3VHUxQWxnTE5LNHdVZ0d1WHgvR2hEbXd3cngxUkxJQ0l3eGt2YVc5dDdyZVdZVzBwYWI2ZjcvMXJLTlovOTRYdzhEUGZWbW5DMThOZFl2M3ZTY09BQUFBR0JnS1hrQkFBQUFPZWZjR3NhWmNYWVZZNzFFNkttazNQV0RuMWJGWHk1Wkh5MHR6YW5QUTltTFBqcmFjVFhHK1NsZlIwUUNBQUFBL1V2SkN3QUFBTWdKNTlZd3pveXpFN3NtU0lUZVVPNjZ2S1RzOVgvOVJtblVsdThXQm4xaHJTTUFBQUQwTXlVdkFBQUFZRUMwTjA2N0xzNnZZTHhiSXZTRmNsZlBMRm80TitiZCtxNnlGNW1RckhWc2pQT3JIVTM1QWdBQWdDeFE4Z0lBQUFENmpXbGRaSnB5Vjk4b2U1RUZhK044NGN1VUx3QUFBTWdRSlM4QUFBQWdhOW9icHpYRStWTFhESW1RS2NwZG1hWHNSWlljalhPRnJ6aTcydEdVTHdBQUFPZ2xKUzhBQUFBZ1k4NnRZSnpaN1RLdGk0eFM3c291WlMreWJIT2NMM3cxaWdNQUFBQ3VuSklYQUFBQTBHdnRqZE91alF0TFhmVlNJUnVVdS9wWFV2YjYxTWNHeDIzVjI0VkJObG50Q0FBQUFGZEl5UXNBQUFEb2tmYkdhVFBqZktuTENrYXlTcmxyWU0yZWRVZmNOMnVrc2hmOUlWbnQyTmgxS1gwQkFBREFoWlM4QUFBQWdNdFM2bUlnN0RvNk12NjI4WnI0NFlwWGxMdHlnTElYQStETnVMRDAxU29TQUFBQTBrekpDd0FBQUxpQVVoY0RxYXZjOWNmZlhpcU1IRlJUVXh0ZnVLOGhQbE8zSTRvSG5SWUkvVW5wQ3dBQWdGUlQ4Z0lBQUlDVVUrb2lGMnpjTVRHZStKZDM0b252UFNlTVBOQlY5cG8rY1YrVWw3UUpoSUdRbEw2U2xZNk5ZYjBqQUFBQUthRGtCUUFBQUNuUzNqanQyamhmNkdvSXBTNEcyUEovcjR2bjE3K3QzSlhIZnUvTDk4WGMrZ1BLWGd5MG8zRiswbGRUL2VKTmpTSUJBQUNna0NoNUFRQUFRQUZyYjV4MlhWeFk2cXFYQ2dPdDdmVFFXTE8xS3Y3UDhwMng4c1cxQWlrUWl4Yk9qWG0zdmh1MTVidUZRYTVJL2dIVEdPY21mdFV2M25SRUpBQUFBT1FySlM4QUFBQW9JTjFXTHphYyszcU5WTWdWdTQ2T2pCV2J5K012bDZ5UGxwWm1nUlNvMmJQdWlQdG1qWXpicXJjTGcxeXpPYzZ2ZUd5eTRoRUFBSUI4b3VRRkFBQUFlYXJibEs2dVFwY3BYZVNralRzbXhvODJYUjEvL08ybHdraVJtcHJhK01KOURmR1p1aDFSUE9pMFFNaEZ5WXJIcnRKWGNqV1o5Z1VBQUVDdVV2SUNBQUNBUE5EZU9PM2FPRi9tbW5udWUxTzZ5R25MLzcwdW5sLy9kanp4dmVlRWtYSy85K1g3NGpNM3RrVmw2UUZoa092ZWpQTXJIcFBTVjZOSUFBQUF5QVZLWGdBQUFKQ0RMbHE3bUZ3VHBFSSthRHM5Tkg3dzA2cFk4ZExPV1BuaVdvRndnVVVMNThhblBqYllLa2Z5VGJMbXNUSE9GNytzZVFRQUFLRGZLWGtCQUFEQUFEdFg2R3JvZGxtN1NONnhrcEdlbUQzcmpwZzVkVXhNbjdndnlrdmFCRUkrU2xxc1RhSDRCUUFBUUQ5UjhnSUFBSUIrY3RIS1JSTzZLQWpKU3NhbGF3N0ZzbWRmRUFhOWtxeHluRjUzS21yTGR3dURmTmU5K05WcTFTTUFBQUNacE9RRkFBQUFXZERlT08yNk9GL2ttdGx4SmE4VnVpZ0l1NDZPakIvK2RFVDg3Vk1ib3FXbFdTQmtSRExkNjc1Wkk2TmgzTzRvSG5SYUlCU0taTlZqWitrcnpxMThyRis4NlloWUFBQUE2Q2tsTHdBQUFPaWpidXNXcnp2M2RZWlVLRVJyV21yaUg5ZWVqQ2UrOTV3d3lKcWFtdHFZTi91bStNeU5iVkZaZWtBZ0ZLSTNvMXZwSzg1Ty9iTHVFUUFBZ010UzhnSUFBSUFyMU40NHJXc3kxM1ZoT2hjcGtVenRXckc1UEZhOHRETld2cmhXSVBTcmUrZk5pYzlPR3hhM1ZXOFhCbWx3OGRTdnBQelZLaFlBQUFBU1NsNEFBQUJ3a1hObHJ1dmkvTHJGNVB0NnlaQW15ZFN1NXpmK01yNzkzYWVFd1lCTHBuc3QvSTJHbUQ3cHFPbGVwRkhTc0cwTjVTOEFBSUJVVS9JQ0FBQWd0YzZ0V2J3dVRPYUNUcVoya1ErNnBuczFqTnNkeFlOT0M0UTA2MTcrc3ZZUkFBQ2d3Q2w1QVFBQVVORE9UZVc2TnM2V3VKS3ZYZE81cnBFT25MWDgzK3ZpK2ZWdnh4UGZlMDRZNUkxa3V0ZTgyVGZGWjI1c005MExMcFNzZlR3U1o2ZCtKVitUNGxkVC9lSk5SMFFEQUFDUXY1UzhBQUFBeUh2dGpkT3VpL1ByRmJzWHVxeFloQS93K29ISytOR3JRK052bjlvUUxTM05BaUd2SmRPOWJtOG9pK2tUZHBqdUJaZVhUUC9xS242MW5yc1V3QUFBQVBLQWtoY0FBQUI1NFFNbWNpbHlRUSswblI0YWE3Wld4ZEkxaDJMWnN5OEloSUwwZTErK0x4b21ub21ieHJ3cERPaVo3Z1d3OTRwZzlZczN0WW9HQUFCZzRDbDVBUUFBa0JPNlRlUHF1cnBLWEZZclFoK3RhYW1KZGErOUczLzg3YVhDSURWbXo3b2picTBmRTdNbTc0dnlramFCUU44a3Jjbld1TEFBMXZuVkZEQUFBSUQrb2VRRkFBQkF2Mmh2bkRiejNMZmR5MXZKMStzNnJna1Nnc3phZFhSay9QQ25JMkxOaGwyeDhzVzFBaUhWa25XT241MDJMQnJHN2JiT0ViSmpjMXhZL21ydHVrd0NBd0FBeUF3bEx3QUFBUHFzVzRIcnVuTlhWNGtyTVVOQzBEK1NkWXovL0xQcVdQSHlRZXNZYzB4TlRXMDg5dkMwK0ozLysvdkNHR0RXT2NLQU9CcG5DMkNKeG5OZjN5dUVLWUlCQUFCOE9DVXZBQUFBUGxCNzQ3U3VhVnZkUzF2ZGYxWXZKUmg0eVRyRzV6ZitNcjc5M2FlRWtZT1NndGN6Mzd3eDJrNFZ4YWNXdVVlNWRGOFcva1pEVEo5ME5DcExEd2dFY2tQWDZNbXVBbGpYZExET24xa05DUUFBcEptU0Z3QUFRTXEwTjA2N0xzNU8yMHAwRmJZU004OTlWZDZDUExCeHg4VDQwYWFyNDRjclhvbVdsbWFCNUtpdWd0ZVVVVHRpdzQ3cmxieHkxT3haZDhTdi85cVlxQisvTDhwTDJnUUN1YStyRE5hOUJOWjY3a29vaEFFQUFBVkh5UXNBQUNEUGRWdVZtT2hlMnJvdXpwZTVrcThUcEFYNTdmVURsZkdqVjRmR21nMjdZdVdMYXdXUzR4YmNjMWQ4OTBzbm8zVEk4YzdYU2w3NTRkNTVjK0t6MDRaRnc3amRVVHpvdEVBZy8yMk9zMld3UkZPMzcxdmpmQ25zU1AzaVRVMmlBZ0FBY3BtU0Z3QUFRQTY0cUtpVnVOenI2MEpoQzFKajE5R1JzWFpyUmF4NCtXQXNlL1lGZ2VTSml3dGVDU1d2L1BPbEw4eVBoa2xYeDIzVjI0VUI2ZEs5R05aOVdsaWlOYzZYd3pwZjF5L2UxQ295QUFBZzI1UzhBQUFBTXVqY0tzVGZ1ZWpIM2FkclJWaUhDSHlJdHRORFk4M1dxbGk2NXBCaVZ4NTY1T0g3NDZ2MzdyK2c0SlZROHNwZnlkck5lYk52aW9hSlorS21NVzhLQkxpY28zRmhLU3pSR2hjV3c2Sis4YWIvS1NvQUFLQW5Cb2tBQUFBZ282N3J1TDRtQnFDbnVvcGQvL3JhTy9IdDd5b0M1YXZISGwwWVg1M2ZMSWdDMDlMU0hIL2VjdmErZGhXK3B0ZWRpdHJ5M2NJQkxuWk54elhqb3AvTnVNVC8zZjhVRlFBQTBCTktYZ0FBQUpsMW5RaUFLNlhZVlZpKzgvVUg0K0U3dGdpaXdIVXZmTTJlZFVmY1dqOG1wazg2R3BXbEI0UURBQUFBWkkyU0Z3QUFRR1pkSndMZ3c2eHBxWWwxcjcwYlAxenhTclMwckJWSUFWajJuUWRqM3NjVnZOSm0xZXAxSGRmWjd4VytBQUFBZ0d4UzhnSUFBQURvQnhjV3UvNUJJQVVpV2QzM3pEZHZqQ21qRkx6U1R1RUw2SW5OZi8vSmh2ckZtNW9rQVFBQVhDa2xMd0FBQUlBc1Vld3FiQXZ1dVN1KytrQnhUQm0xUXhoY1FPRUx1QUxYaWdBQUFPZ0pKUzhBQUFDQURGTHNTb2VIRnMyUFAvMnR0NkowaU5JT2w2ZndCUUFBQUdTQ2toY0FBRUJtK1JQNWtESnRwNGZHbXExVjhhK3Z2UlBmL3U1VEhUL1pJSlFDOTlpakMrT3I4NXNGUVk4cGZBRUFBQUM5cGVRRkFBQ1FXUTBpZ01MMy9tSVhhYkhzT3cvR3ZJOXZFUVI5ZG5IaDYrT1RSMFhEeEROeDA1ZzNoUU1BQUFDOGo1SVhBQUFBd0JYWWRYUmtyTjFhRVUxdm5GYnNTcUdhbXRwNDVwczN4cFJSQ2w1a1h2ZkNWL0tzelp0OWs4SVhBQUFBY0FFbEx3QUFBSUFQMEZYc1d2SHl3VmoyN1BNQ1Nha0Y5OXdWMy8zU3lTZ2Rza01ZWkYxTFMzUDhlY3Y1ZGFCZitzTDhhSmgwZFRTTTJ4M0ZnMDRMQ0FwSE1nRzRVUXdBQU1DVlV2SUNBQUFBNk9iMUE1WHhvMWVIeHBvTnUyTGxpNHBkYWZmWW93dmpxL09iQmNHQStlc25uM3Z2KzZUd05ibTZLT3JINzR2eWtqYmhRSDY3VmdRQUFFQlBLSGtCQUFBQXFiZW1wU2JXdmZadWJQejVubGo1NG5NQ29kT3k3endZOHo1dVBTTzVvM3ZoNjk1NWMrTG1qNVpGUS9YUnFDdzlJQndBQUFBb2NFcGVBQUFBUU9xMG5SNGFhN1pXeGIrKzlrNnMrSEZUdExUOGcxQjR6NXc3WjhTZlBUd2lwb3hTOENKM1BiTjhaY2QxOXZ2WnMrNklXK3ZIUk4yNDlyaHB6SnZDQVFBQWdBS2s1QVVBQUFDa1FyS0c4WlhXNGJIaTVZT3g3TmtYQk1JbFBiUm9mdnpwYjcwVnBVTjJDSU84c1dyMXVvN3I3UGMxTmJWeDUrMDNSc09rcTZOaDNPNG9IblJhUUFBQUFGQUFsTHdBQUFBeTZ6b1JRTzVJMWpDK3V1MnFXTE5obHpXTWZLanZmUDNCZVBnTzA3dklieTB0eloxWGwwVUw1OFluNjBxaWZ2eStLQzlwRXhBQUFBRGtLU1V2QUFDQXpKb2dBaGc0MWpEU0c4bmtvLy92YXcweHRWckJpOEt6Wk9tS1dITHVlMnNkQVFBQUlIOHBlUUVBQUFCNUxWbkQyUGlMWWJHMjZaQTFqUFRZK2ZXTTI0UkJ3ZnVndFk1MUl3K2E4Z1VBQUFBNVRza0xBQUFBeUN2SnRLNk5POGJIdXRmZWpZMC8zMk1OSTcxbVBTTnBkdkZheDN2bnpZbWJQMW9XRGRWSG83TDBnSUFBQUFBZ3h5aDVBUUFBQURrdm1kYjFTdXZ3ZU9sbngrT0o3eWwxMFRmV004TDdQYk44WmNkMS91K1JlYk52aXJyS2Q2TmgzTzRvSG5SYVFBQUFBRERBbEx3QUFBQ0FuR05hRjlsaVBTTjh1R1RDMTUrYjhnWFpObE1FQUFCQVR5aDVBUUFBQURuQnRDNnk3ZS8rN01GNFlLcnBYZEJUcG53QkFBREF3RlB5QWdBQUFBWkVNcTFyemRhcWVIWGJHZE82eUtvRjk5d1ZYMzJnT0thTVV2Q0N2cnJVbEs4YkpwVkYvWDg1RWJYbHV3VUVBQUFBV2FMa0JRQUFBUFNialRzbXhpdmJpMkp0MDZGWTl1d0xBaUhyL3VTUEhvZ3Z6dHdWcFVPc21JTnM2Snp5ZGU3N1pNclhuYmZmR0pPcmk2SisvTDRvTDJrVEVBQUFBR1NJa2hjQUFBQ1FOYnVPam95MVd5dWk2WTNUc2VMSFRkSFM4bzlDb1Y4a1paTy8rc05iNHRPMXJ3c0Qra2t5NWF1bDI1U3YyYlB1aUk5UEhoVU5FODlFWGNWZXF4MEJBQUNnRDVTOEFBQUFnSXhKVmpCdTNERSsxcjMyN3JrVmpNOExoWDczeU1QM3gxZnYzUitsUTdZS0F3YlFxdFhyT3E3enI1UFZqamQvdEN6cXhscnRDQUFBQUQybDVBVUFBQUQwaVJXTTVJcGtldGRqRDArTEI2WnVFUWJrb003VmpzdlAvLzNhdGRxeGJ2VFJxQ3kxVWhVQUFBQXVSOGtMQUFBQTZKSFhEMVRHSzYzRE8xY3dmdnU3VDNYOFpJTlFHSEFQTFpvZmo5MS9NaXJMRkx3Z0gzelFhc2U2eW5lamJ1VEJLQzlwRXhJQUFBQjBvK1FGQUFBQVhOYXVveVBqbGY4c2ozOTk3WjFZOGVPbWFHbFI2aUszL04yZlBXaDZGK1M1UzYxMnZHRlNXZFNOYTQrNmlyMVJQT2kwa0FBQUFFZzFKUzhBQUFEZ0FsMmxybGUzblltTlA5OFRLMTk4WGlqa3BBWDMzQlZmZmFBNHBveFM4SUpDMDduYXNkdnJwUFIxODBmTG9tN3NpYWd0M3kwZ0FBQUFVa2ZKQ3dBQUFGS3U3ZlRRMkxoamZMeTY3YXJZdU9Wd0xIdFdxWXZjOTUydlB4Z1AzNkhjQlduUldmcGFmdjcxb29Welk4cUVFcVV2QUFBQVVrUEpDd0FBQUZMbS9hV3VGNFJDM2pDOUMwZ3NXYnJpZ3RkSjZldVRkU1ZSTi9wb1ZKWWVFQkFBQUFBRlI4a0xBQUFBQ3B4U0Y0V2dwcVkySGxrOHpmUXU0SktTMHRlU2J2Kzh1UFAyRzJOeWRaSFNGd0FBQUFWRHlRc0FBQUFLakZJWGhlYWhSZlBqc2Z0UFJtV1pnaGZ3NFZwYW1qdXZMa3BmQUFBQUZBSWxMd0FBQU1oelNsMFVxcVNZOGRqRDArS0JxY3BkUU84cGZRRUFBRkFJbEx3QUFBQWd6eWgxa1FhUFBIeC9QUHI1WTZaM0FSbDNjZWtyc1dqaDNKZ3lvU1RxeHA2STJ2TGRRZ0lBQUNEbktIa0JBQUJBanR0MWRHUzg4cC9sMGJMblhhVXVDdDZjTzJmRTcvMjM4ZkhwMnEzQ0FQck5rcVVyTG5pdDlBVUFBRUN1VWZJQ0FBQ0FITk5WNm5wMTI1blkrUE05c2ZMRjU0VkNLdnpKSHowUVg1eTVLMHFIS0hnQkErdmkwdGU5OCtiRURaUEtvbTVjZTlSVjdJM2lRYWVGQkFBQVFMOVM4Z0lBQUlBQjl2cUJ5bmlsZFhnMHZYRTZWdnk0S1ZwYU5naUZWRmx3ejEzeDFRZUtZOHFvMTRVQjVLUm5scStNWjdxOVRrcGYxMVVPajdyS2Q2TnU1TUVvTDJrVEVnQUFBRm1sNUFVQUFBRDliT09PaWZISzlxSm9hbjQ3bnZqZWN4MC9VZW9pbldwcWF1T3hoNmZGQTFPM0NBUElLMG5wcTd2WnMrNklTUlBLWTNKMVVkU05QaHFWcFFlRUJBQUFRRVlwZVFFQUFFQVdKYXNYdHg2NE5sN2RkbFZzM0hJNGxqMzdRaWgxUWNRakQ5OGZYNzEzZjVRT1VmQUM4dCtxMWV0aVZiZlhTWWwxK2kyVFk4cUVrcWdiZXlKcXkzY0xDUUFBZ0Q1UjhnSUFBSUFNNmxxOTJMejdsN0h4NTN0aTVZdlBDd1c2bVhQbmpQanFiNCtPcWRYYmhBRVVySmFXNXM2cnUyVEY0dzJUeXFKdVhIdFVsUjIyNGhFQUFJQWVVZklDQUFDQVhtbzdQVFJlM3ovRzZrVzRBc2xVbTBjV1Q0dUg3MGdtZHgwWENKQTZ5WXJIWjdxOXR1SVJBQUNBbmxEeUFnQUFnQ3VVVE9sNmZlK3dlSFhibVhqOXpTUG5WaThDSCtheFJ4ZkdWejYzeDJyR0F2ZjNmem8vdnY0M3I3MXZlaEZ3YVJldmVFd3NXamkzYzhWamRVVjcxRlhzamVKQnB3VUZBQUJBSnlVdkFBQUF1SVNMcDNTdC9VbFNYRENsQzNwaXdUMTN4VmZ1TFkycDFVby9hVkEvWm52ODVWZXVpeWRXWHQ4NXNRam91U1ZMVjF6d09wbjI5ZkhKbzZKNjFOV21mUldlUmhFQUFBQTlvZVFGQUFBQWNYWksxeXV0dzZONTl5OU42WUkrU2xZei9za2owMkxleDVQSlhRb0phVkkxZkgvODRkM0ZNYVppZmp6KzVITUNnVDdxblBhMStzS2ZKZE8rSm93cmlicHg3VkZWZGpqS1M5b0VCUUFBa0FKS1hnQUFBS1RPcnFNalkrdUJhMlByN3FzN3AzUTk4YjJraUdCS0YyVENkNzcrWUR4dzYwNnJHVk9zZU5DcCtOTE03VkZYdlNDKzh2VmxBb0VNdTlTMHIwa1R5cU42ZEZIVWpUMFJ0ZVc3aFFRQUFGQ0FsTHdBQUFBb2VCdDNUT3hjdS9qRzduZmlGMi9zajVVdlBpOFV5TEJISHI0L0h2MzhzYWdzVSs3aXJGbVRtdU5IZnpVN3Z2MzA2YzVwUkVCMmRFNzd1dWhuOTg2YkU5ZFZEbys2eW5lait0cmoxandDQUFBVUFDVXZBQUFBQ2twUzZOcTZkL0JGYXhkTjZZSnNlV2pSL1BqZHp4YkYxT3B0d3VCOWt2V04zM2l3T0c2YWZGOTg2L0duQlFMOTVKbmxLOS8zTTJzZUFRQUE4cHVTRndBQVFHWnQ3cmpxeGRBL1hqOVFHYS92SFJZdGU5Nk41aDBuckYyRWZqVG56aG54eGJ1cll0N0hUZTdpOHBMMWpZdHZhNG42aWZQajYzL3pXclMwTkFzRkJzREZheDVyYW1waitpMlRZOHFFa3FpdWFJKzZpcjBkZjcrZUZoUUFBRUNPVXZJQ0FBRElyQ01peUk1ZFIwZkdLLzlacnRBRkF5d3BCVHl5ZUZvOGZFZFM3bEx3NHNyVmo5a2UzLytqOHZpN2Y1MGZqei81bkVCZ2dDV0Z5NHRMbDdObjNSR1RKcFJIOWVpaXFCdDdJcXJMRGlsK0FRQUE1QWdsTHdBQUFISk9VdWphZXVEYTJMcjc2bWhxZmp2Vy9pU1ovS0xRQlFQdE8xOS9NQjY0ZFdlVURsSHVvbmVTcVY1Zm1yazk2cW9YeEYvOVlMT3BYcEJqVnExZUY2c3UrcG5pRndBQVFHNVE4Z0lBQUdCQWRhMWMzUE5XS0hSQmpucnMwWVh4MEt5M29ySk11WXZNbURXcE9mNnJxVjZRRnhTL0FBQUFjb09TRndBQUFQMm1xOUJsNVNMa2g0Y1d6WS9IN2o4WmxXV21MWkY1WFZPOXBuOTBmbno5YjE0ejFRdnl5SWNWdjZvcjJxT3E3SENVbDdRSkN3QUFJRU9VdkFBQUFNaUtqVHNteHRhOWc2TjU5eTlqNzhGVENsMlFSNUp5MSs5K3RpaW1WbThUQmxsWFAyWjdmUCtQeXVPZmYzNS9mT012bmhJSTVLbExGYjlxYW1waitpMlRZOHFFa3Fnb1BSUFYxeDZQeXRJRHdnSUFBT2dGSlM4QUFBRDZaTmZSa2JIbldHbThzcjBvM3RqOVR2emlqZjJ4OHNXMW9kQUYrVWU1aTRHU1RQVzZ2MkZyVFArcjJiSDBwU0d4Wk9rS29VQUJTQ2IwWFdwSzM2S0ZjMlBVaUNGUlBlcnFxQnFSMm5XUFRaNFFBQUNnSjVTOEFBQUE2SlUvLzVmYStIKysrUU5CUUFHWWMrZU0rT0xkVlRIdjQxdUV3WUNxR3I0Ly91QnpFWi82MkwzeHYvL3UzNjF3aEFKMXFTSm5zdTd4dmxrajQ3YnE3V21KNFlnbkFRQUE2SW1yUlFBQUFFQnZOTzg0SVFUSWMwbTVhOWwzSG94L2Z1eTRnaGM1WlhyMUc1MHJIUC80RCs4WEJxUkVzdTd4VU50SEJBRUFBUEFCVFBJQ0FBRElyR1R0eWd3eEFMbnN3c2xkeWwza3BtU0Y0OXdidHNiMHY3NDludnBwUlR6KzVITkNBUUFBQUZKTHlRc0FBQ0N6ckYwQmNwWnlGL21vb3VSWWZHbm1zZmhNL2Vmam4zNXkxU1hYdkFFQUFBQVVPaVV2QUFBQWdBS24zRVVocUIyeE0vN2djeEdmK3RpOThmVHFnNTJyM1lEQ1VqZldPbkFBQUlBUG91UUZBQUFBVUtDVXV5aEUwNnZmaU9tL0hmSHlMR1V2QUFBQUlEMlV2QUFBQUFBS3pFT0w1c2Z2ZnJZb3BsWnZDK1V1Q2xWUzl2ckVnOFV4YytyOThlVFRUZEhTMGl3VUlKOVk4dzRBQVBTSWtoY0FBQUJBZ2JpdzNBV0ZyM2pRcVpoN3c5YTRzNjQ4WHR5cTdBWGtqL3JGbTVxa0FBQUE5SVNTRndBQUFMM1NVRHRNQ0pBakhudDBZWHp1NWpQS1hhU1dzaGNBQUFCUTZKUzhBQUFBTXN1ZnlBZjZUVkx1ZW1qV1cxRlpwc3dDaVl2TFhvMGI5c1dxMWVzRUF3QUFBT1E5SlM4QUFJRE1PaUlDSUp0cWFtcmprY1hUNG9GYmQwYnBFT1V1dUpTdXN0ZmNHeUplbm5WdlBMMzZvTElYQUFBQWtOZVV2QUFBQUFEeXdKdzdaOFFYNzY2S1Q5Y2w1YTR0QW9Fck5MMzZqWmorMjJmTFh2K3kvdTE0WnZsS29RQUFBQUI1UjhrTEFBQUFJSWM5dEdoK2ZHN2FzSmozOGFUWXBkd0Z2ZFZaOXFxT2VHRFc1K09mZm5KVkxGbTZRaWpBUURrcUFnQUFvS2VVdkFBQUFBQnkwR09QTG96Zi9OU3BtREpxaHpBZ2cycEg3SXcvK0Z6RXd0dG54K3FmbDhXM0huOWFLSkFqcXNzT3BlV29UZTQyQUFEUVUwcGVBQUFBQURtaXBxWTJIbGs4TGVZMkhJektzbWFCUUJaVkRkOGZpMi9iSDUrdnZ6MWUzajQybm55NktWcGEvSDBIQTZsNDBHa2hBQUFBZkFBbEx3QUFnQXdxbXJtK3NiMXhtaUNBSGxsd3oxMnhjRmFGbFl3d0FDcEtqc1hjRzVKcmFMeTg0OTc0bC9Wdnh6UExWd29HQUFBQXlDbEtYZ0FBQVBSSzNmaGZDUUg2S0ZuSitMbWJ6OFRVNm0wZHJ3NElCQWJZOU9vM09xNklCMlo5UGw1K3ZkZ3FSd0FBQUNCbktIa0JBQURRSzZWRHpnZ0JlbUhPblROaTdoMVY4Y0N0T3p2K1BySWFEbkpSN1lpZFVYdGJ4Ry9lY211OHVQVy9ST09HZmJGcTlUckJBQUFBQUFOR3lRc0FBQUNnSHp6eThQM3g2N2NNaWsvWGJnMHJHU0UvRkE4NkZYTnYyTnB4Uld5K2EzNjgvSXVJeDU5OFRqQkFYeldLQUFBQTZDa2xMd0FBQUlBczZacmFOYmZoWUZTV2JSTUk1TEg2TWRzN3JvajdiNzA5WHQ0KzFuUXZBQUFBb0Y4cGVRRUFBR1RlMm81cmhoZ2d2VXp0Z3NKVlVYSXM1dDV3ekhRdnlMQjc1ODNwK0hXL0lBQUFBRDZBa2hjQUFBQkFCcGphQmVuVE5kM3JkMzd0MXZpM042dmpwYWEyZUdiNVNzRkFMd3diV2lRRUFBQ0F5MUR5QWdBQW9GZEtpOThSQW5SNDdOR0Y4Ym1iejhUVTZxVFlaV29YcEZIeG9GTXhhMUp6eHhYeDBKelo4WExMdGJIMG41dWlwYVZaT01DbEhCRUJBQURRVTBwZUFBQUE5TXJrVWJ1RVFHb3R1T2V1V0RpcklqNWR0ek5LaHloeEFPZFZEZDhmOXpjazE5RFl2TTg2UitDU21rUUFBQUQwbEpJWEFBQkE1clYyWERQRUFJVWxXY2Y0NmFtVjhkK21INHJLc2dNZFB6a2dGT0N5dXE5emZIVlBaZnpMK3JldGN3UUFBQUI2UmNrTEFBQWc4MXBGQUlXaHBxWTJGczY5T1c2LzhhcjRkTzNXanArOExoU2d4NUoxanRPcjMraTRJdjc3cjk4ZW0zZVBpWmVhMmhTK0FBQUFnQ3VtNUFVQUFBQndrVWNldmo5dS85amdtUGZ4TFIydnJHTUVNcWVpNUZqTW1wUmNFUS9ObVIwdnQxd2JQOTI4TDFhdFhpY2NVbTNDdUJJaEFBQUFYSWFTRndBQUFFQ0hCZmZjRlF0blZjU242M1pHNlpCdEFnR3lybXI0L3JpL0lia2lkdDZuOEVXNmxReE96MW5yRjI5cWRNY0JBSUNlVXZJQ0FBREl2TmEwSERRcHhTeDc5Z1Yzbkx4K2h1ZisxNHFZTWZsZ1ZKWWQ2UGpKQWFFQUEwTGhDd0FBQUxnY0pTOEFBSURNYTAzTFFhOFpWdXh1azNjVXU0QmNwL0FGQUFBQVhFekpDd0FBQUNoNGlsMUF2bEw0QWdBQUFCSktYZ0FBQUVCQlV1d0NDazMzd3RlaDM3dzlOdThlRXk4MXRjVXp5MWNLaDd4WFVYb21MVWRkNjI0REFBQzlvZVFGQUFDUWVhMGlnSUh4eU1QM3grMGZHeHlmcnRzWnBVTVV1NERDVlZGeUxHWk5TcTZJLy83cnQ4ZldnNk5pOHh1L2lzZWZmRTQ0NU9jelBleTBFQUFBQUM1RHlRc0FBQ0REaW1hdWIyMXZuSmFLczlaV0QzWERHVkExTmJXeGNPN04wVERwSStlS1hkdUVBcVJPVXZpYVhwMWNFYi96YTdmRzY0Zkd4ZWJ0SDRsL1d2V3phR2xwRmhBQUFBQVVBQ1V2QUFBQWVtMVk4VlZDb04vTnVYTkdmSHBxWmR4K1EzdE1yVTVLWFFvTUFGMktCNTJLK2pIYk82Nkl4YmNOalozSFo4ZkxMZGZHZjd4eHpGcEh5QTFIUkFBQUFQU0draGNBQUFDUTh4NWFORDl1djJsWXpKaDhNQ3JMRG5iODVIV2hBRnlCcXVINzQvNkcvUkVORjY1MVhQWFNhNlo4d2NCb0VnRUFBTkFiU2w0QUFBRFpzYm5qcWhjRDlFNHlyV3ZxeDhiRjdUZGVGYmY4bDkxUk9tU0hVQUQ2cVB0YXh5L05IQnJOYjMwK210NGNhc29YT2FHMmZMY1FBQUFBTGtQSkN3QUFJRHRTc1lhbHRNUzZSakxua1lmdmowL1VESTVQWHZkMlRCbVZsTHBNbUFISXB0b1JPenV1TU9VTEFBQUE4b0NTRndBQUFMMVdOL1lkSWRCckMrNjVLMjZaVWg2MzM5QWVVNnUzZGZ4a20xQUFCc2lscG55OXZtZG92UElMVTc0Z3c2eHJCQUFBZWtYSkN3QUFJRHRhTzY0WllvRHozcitDOFVESFR3OElCaUFIZFUzNW1udER4Qi9lZld1OGZtaGNiTjFURkQvZHZDOVdyVjRuSU9pOUl5SUFBQUI2UThrTEFBQWdPMXBGUU5wMWxib2FKbjBrYnA1d01DckxEb1lWakFENXAzalFxYWdmczczamlyaS9JZUxRYjU1ZDdkaTg2NnI0cDFVL3M5cVJQcnQzM3B5T1gvY0xBZ0FBNERLVXZBQUFBT2kxMG1MckdqbFBxUXNnSGJxdmRseDgyOURZZVh4MmJOMTNUV3pkOGN0WTlkSnJTbC8wMkxDaFJXazZya2xlQUFCQXJ5aDVBUUFBMEd1VFIrMFNRb290dU9ldXVHVktlWHppK25lamJzeGhwUzZBbEtvYXZyL3ptalVwNGtzemxiN2djdW9YYjJxU0FnQUEwQnRLWGdBQUFOblIySEY5VFF3VWlwcWEycGd4L2Nab3FCMFduNXo0VGt3WnZUOUtoeHpvK0NzSGhBUEFCWlMrQUFBQUlQT1V2QUFBQUlEM1NhWjBUWmx3YmVmcXhicXhiOGVVVVRzNmZycERNQUQwbU5JWEgyYkN1SkswSFBXb3V3MEFBUFNXa2hjQUFBQjlra3g0OHVGc2ZwdHo1NHlZTW1sMDFGUU83cHpTTmJWNlc1eWQwR1ZLRndDWmQ2blMxNDYzU3FONTExWHhzOWNQeEtyVjY0U1VNaVdEVTNOVXF4b0JBSUJlVS9JQ0FBRElncUtaNnh2Ykc2ZWw0cXd6YnJ0UnlTdVBYRnpvT3J0MjhYakhYemt1SEFBR1JGZnBhM3AxeDR2YklnNzk1dTJ4ODFoRmJOMVRGUC94eHJGNFp2bEtJUUVBQUpCNlNsNEFBQUJRb0xwV0x0WlVmaVJxeHlwMEFaQWZLa3FPZFY3MVl6cGVORVI4N2I3NmFINnJLbDdmTXpTMnZIa3lYdDc0dW9JNUFBQUFxYVBrQlFBQUFIa3VtYzVWTlc1RU5OUU9pNDR2VVRmMjdaZ3lha2RZdVFoQW9hZ2RzYlBqaXBoN1E4ZUx6MTI0NG5IN3J1T21mZVc1dXJFbjBuTFVSbmNiQUFEb0xTVXZBQUNBN0ZuYmNjMG85RVBXVmc5MXAvdkp4V1d1Y2RlK0UxT3J0OFhaeVZ5bWN3R1FIaGVzZU96d2gzZmZHanZhUm5aTys5cTV2ejFXdmZTYWFWOEFBQUFVRkNVdkFBQUErbVJZOFZWQ3lMQ0hGczJQNFVPTG9xWnlzRElYQUZ5QjRrR24zcHYyRlRkRWZHbm0wRGgwOHZiWWVhd2l0dTRwaWpmM25Jd2xTMWNJQ2dBQWdMeWw1QVVBQUFBRG9IdVJxN1Frb25ic096SCttbU5SV1hhdzQ2L3VFQkFBOUZGRnliSE9xMzVNeDR1R2lELzRYSDNzUEQ3YW1zZWN2RmR0YVRscW83c05BQUQwbHBJWEFBQkE5alJHQ3RZMWxwYVk1SFVwQys2NUs2NFpYaHkxVlVOaldFZEdkZU4rRmNPTGZ4bFRSdStQMGlISk5DNUZMZ0RvYnhldmVmemFmZlhSL0ZaVjdEaGNFanNQdkt2NE5VREswMVB5QWdBQTZEVWxMd0FBQVBxa2J1dzdxVHR6VjRGclhFVnhqQ24veUh1VHVCSm4xeW9tRG5nNEFDQVB2TGZtY2RMWjE0cGZaTkVSRVFBQUFMMmw1QVVBQUpBOVBzVEpJM1B1bkJGVjQwWjBmdDgxZlN2eHlZbG55MXVseGUweFpWVFg5QzBGTGdBb1pKY3Fmbld0ZXR4NTZDUHg1cDZUc1dUcENrRmxRRTFOYldyT1dyOTRVNU03RGdBQTlKYVNGd0FBUVBiNEVDZUhQTFJvZmpUVURudXZ0SlU0dnpveGNmemNCUUR3ZmwyckhpTlo5ZGdROFFlZnE0OURKOHRpNTdHSzJIR29LTGE4ZVRMMjdqOFdxMWF2RTFZUFRMOWxjc2V2dXdRQkFBRHdJWlM4QUFBQTZKTmJxcmZueGZ0TUNsNFAzN0hGRFFNQU1xYWk1RmpuVlQ4bVl1NE5aMzkyNnNGYlkwZmJ5UGZXUGU1LzY3U3BYeVRlRkFFQUFOQVhTbDRBQUFEWjB5cUMzTEh2OEJraEFBQlpWenpvMVB2V1BWNDg5V3ZuL3ZiWWQraGtQTE44cGNEOHR3RUFBTUFWVWZJQ0FBRElrcUtaNjF2Ykc2Y0pJa2ZzT1hSS0NBREFnT2srOVN2T1RmMzYybjMxc2ZQNDZEajA5ckRVbHIrbVRDanhjQUFBQUZ3QkpTOEFBQUQ2Yk1FOWQ4V3laMS9JNmZkNDlMaVNGd0NRZTZxRzcrKzQ0ckxscjhQSGZtWHRZLzVyRWdFQUFOQVhTbDRBQUFEWnRibmpxaS8wUTE0enJEam4zMk5TUXZ2Qkl6ZDdJZ0dBdkhCQitldWNycldQaDArVnhZN0RKWEhpOUZXeDVjMlQ4ZmFKZHFzZmM5OFJFUUFBQUgyaDVBVUFBSkJkUHN3QkFDQmp1dFkrMW80NCszcnV1ZWxmRDh6NmZDeDQ5RWQ1ZDU2NnNTZjhkd0VBQU1BVnVGb0VBQUFBV1pXS0QzTWFhb2ZseGZ2Y3NPTjZUeVFBQUFQQnVrWUFBS0JQbEx3QUFBQ3l5NGM1QUFBQUFBQkFueWg1QVFBQWtCck5ld2NMQVFBZ2g5U1c3MDdMVWYzaER3QUFvRStVdkFBQUFMSXJGUi9tM0R5eFBTL2VaOXRKRHlRQUFQMnZmdkdtSTFJQUFBRDZRc2tMQUFBZ3UzeVlrMFAySFQ0akJBQ0FIRkZUVTV1V294NTF0d0VBZ0w1UzhnSUFBTWl1VkpTOFNvdmZ5WXYzdWVmUUtVOGtBRUNPbUg3TDVMUWMxYXBHQUFDZ3o1UzhBQUFBc3FobzV2cFVmS0F6ZWRTdXZIaWZSNDhyZVFFQUFBQUFrSCtVdkFBQUFFaU5aYysrSUFRQWdCd3hhc1NRdEJ6VkpDOEFBS0RQbEx3QUFBQ3liMjBhRGpubnpobnVOQUFBVjZ5aUxEVWZVUnh4dHdFQWdMNVM4Z0lBQUNBanFzYU95SXYzdVdISDlXNFdBQUQ5cVZVRUFBQkFYeWw1QVFBQVpGK3JDQUFBNEVKMVkwLzQ3d0VBQUlBcnBPUUZBQUNRZmExcE9HUkQ3YkM4ZUovTmV3ZDdJZ0VBNkUvV05RSUFBSDJtNUFVQUFKQjlQdFRKSVcwblpRQ1FEYXZmcUJVQzBDTVZKVzJwT0dmOTRrMU43allBQU5CWFNsNEFBQURabDRvUGRjYU55SS8zdWUvd0dVOGtRQlo4NWV2TDRxOGJKOGFwWHhZTEE3Z2k1U2twZVFFQUFHU0NraGNBQUFBWk1mN2E5cng0bjNzT25YS3pBTExrOFNlZml3ZS9lVGlhMzZvU0JzQlphMFVBQUFCa2dwSVhBQUJBbGhYTlhOOG9oZHh4OUxpU0YwQTJ0YlEweDRKSGZ4UlBOZFdaNmdWOG9FVUw1d29CQUFDZ0I1UzhBQUFBeUloYnFyZm54ZnRjOXV3TGJoWkFQL2pHWHp3VmozMS9pS2xlUU5vMWlRQUFBTWdFSlM4QUFJRCtZVTBMQUttemF2VzZ6cWxlZjkwNDBWUXY0QUtqUmd4SnkxR1B1TnNBQUVBbUtIa0JBQUNRTVF2dXVTc3YzdWVHSGRlN1dRRDk2UEVubjRzSHYzazRWcjlSS3d5Z1UwVlphajZlYUhXM0FRQ0FURkR5QWdBQTZCK3BXTk55elRCVFdnQzR0SmFXNXZqSzE1ZkYvL3YwV0NzY2dSaWFta0ZlU2w0QUFFQm1LSGtCQUFEMGoxU3NhU2tkVnBRWDc3TjU3MkJQSk1BQWVXYjV5czRWam4vL2t4b3JIQ0hGcWthY1NNdFJXOTF0QUFBZ0U1UzhBQUFBK2tjcUpubE5HcDhmNWFtMmt4NUlnSUgycmNlZjdsemh1T0kvNnBTOWdJSlZ2M2hUcXhRQUFJQk1VUElDQUFEb0gwZEVrRHYySFQ0akJJQWNrS3h3L0IvLzY2bDQ3UHRENHVVZGt3UUNLVkpidmpzTngzelRuUVlBQURKbGtBZ0FBQUQ2UlNvbWVkMDhzVDB2M3VlZVE2YzhrUUE1Wk5YcWRSMVh4TDN6NXNRRHN3WkY3WWlkUWdFS1Fhc0lBQUNBVERISkN3QUFvQjhVelZ4dmtsY09PWHBjeVFzZ0Z6MnpmR1VzZVBSSDhiK2ZyNDdtdDZvRUFnVXFLWFNtUkt1N0RRQUFaSXFTRndBQVFQOHArSFV0azBmdnk0djN1ZXpaRnp5TmtBRnJtdXVFUUZZc1dicWlzK3oxOXorcGlVTW55d1FDQldiWTBLSzBITFhWM1FZQUFESkZ5UXNBQUtEL3RCYjZBVXVIbkhDWElRV1NjdGR2ZkdONC9PTzZrOElncTc3MStOTXg2MHN2S1h0QmdSazFZb2pmL3dNQUFQU1FraGNBQUVEL2FVckRJUmZjYzFkZXZNOE5PNjczUkVJUGJUbFFIVjkrb2pybWZQRWZZdVdMYXdWQ3YxSDJnc0pTVVphYWp5WmEzVzBBQUNCVEJva0FBQUNnM3h4Snd5R3ZHVmJzVGtPQjJYVnNaRHl4ZWtSODQ5dExoY0dBU3NwZTMrcjQrdnRmdmk4K1g3OC9La3FPQ1FYeVVFWHBtYlFjdGRYZEJnQUFNa1hKQ3dBQW9QK2tZcExYMkpINVVmSnEzanM0cGxaN0tPRnlsTHZJVmQzTFhyTStkaXlxaHU4WEN1U1JpbUduVTNITytzV2JXdDF0QUFBZ1U1UzhBQUFBK2s4cUpubU5IZkdSdkhpZmJTYzlrUEJCdXNwZFMxZThFaTB0elFJaFozV1Z2Ull0bkJ0MzMvWnUxSTdZS1JUSUEwT0wydE53ekRmZGFRQUFJSk9VdkFBQUFQcFBLaVo1alJ1UkgrOXozK0V6bmtpNGlNbGQ1S3NsUzFkMFhHZkxYcC82Mk9DWVh2MkdVQ0NIVlpZZVNNTXhXOTFwQUFBZ2s1UzhBQUFBK2tuUnpQVkgyaHVuRmZ3NXgxK2JINU1aOWh3NjVhR0VjemJzdUQ2ZWYrVWp5bDNrdmM2eVY4ZlgyYlB1aVB0bWpZeFBqTnNWeFlQODh4NXlTVTFOYlZxTzJ1cHVBd0FBbWFUa0JRQUEwTDgyZDF6MWhYekFjV1Z0ZWZFK2p4NzNvVDhzLy9jcDhmejZ0K09KSlU4Smc0S3lhdlc2anV0c21lUUw5elhFOUlsN282TGttR0FnQjB5L1pYTEhyN3ZTY05SV2R4c0FBTWdrSlM4QUFJRCtkYVRRRDFoNXpjRzhlSi9Mbm4waGZ2REl6WjVJVXFmdDlQRDR3VStyWXNXNm5iSHl4ZThMaElMVzB0SWMvK04vTlhkKy8vdGZ2aSttVHo0VnRTTjJDZ1lHMExDUzFId3MwZVJ1QXdBQW1hVGtCUUFBMEw4YU82NFpoWDdJT1hmT2lKVXZyblczSVlkWXlVamFmZXZ4cHp1LzNqdHZUbngyMnJDWVh2MkdVR0FBVkk4dVNzdFJqN2piQUFCQUppbDVBUUFBOUs5VWZOaFROWFpFWHJ6UHBQUXl0WHFicDVLQ2xVenQrdWVmVmNVL3JFeW1kbG5KQ0lsbmxxL3N1TTZ1Y2x6NEd3MHhhN0pWanRDZmhnNUp4em5yRjI5cWRMY0JBSUJNVXZJQ0FBRG9YNmxZMnpKMlpMRTdEUU5vVFhOZHZQVGF1Nloyd1dVa3F4eS84UmNkVjhmM1gvN0MvSmorMFlqNk1kc0ZBMWxXTmVLRUVBQUFBSHBCeVFzQUFLQi9wV0tTMTlnUkg4bUw5OW04ZDNCTXJmWlFVaGgySFJzWlAzeTVJdFpzMkJVclgvd0hnVUFQUFA3a2MvRjR4OWZacys2SW1WUEh4UFNKcG50QnRsU1V0S1hobVBhV0F3QUFHYWZrQlFBQTBJK0tacTV2YW0rY1Z2RG5yQnYvcTd4NG4yMG5QWlBrdDZUWXRmYjFrYkhpM3c3RnNtZGZFQWowMGFyVjZ6cXVzOTh2V2pnM1B2V3h3VEc5K2czQlFBYVZwNlBrZGNTZEJnQUFNazNKQ3dBQW9QKzkyWEZOS09RRGxnNDVreGZ2YzkvaE01NUc4azdiNmVHeFptdFZ2UFR6ZCtJdnYvdVVRQ0JMbGl4ZEVVczZ2dGJVMU1iZHMyK0tXUjg3RmxYRDl3c0craUNabHRmeGI3STBITFhKM1FZQUFESk55UXNBQUtEL3RVYUJsN3dtajk2WEYrOXp6NkZUbmtieWdtSVhESnlXbHViNFZuTEYyWUxLci8vYTZLZ2Z2ODg2UitpRnNhUExJaVVscjFaM0d3QUF5RFFsTHdBQWdQNlgvTW4rR1lWOHdOSWhKL0xpZlI0OXJ1UkY3bExzZ3R6VGZaM2psNzh3UCtvblhSMmZHTGNyaWdmNTl3bGNpUW5qU3RKeTFGWjNHd0FBeURRbEx3QUFnUDUzSkEySGZPaTM1c2NUMzNzdXA5L2pzbWRmaUI4OGNyTW5rcHl4NjlqSVdQdjZ5SGkxUmJFTGN0M2pUNTcvZDl6dmYvbStxSjk0SnVySGJCY01YRWJKNE5RYzFicEdBQUFnNDVTOEFBQUErbDlqeC9XMVFqOWs2YkFpZHhxdXdKWUQxYkdwZFZpcytMZERuY1ZESVA5ODYvR25PNy9XMU5URzNiTnZVdmlDRDFCZDBaNktjOVl2M25URTNRWUFBREpOeVFzQUFLRC9wZUpEbjBuajgyTlV3NFlkMThmVTZtMmVTdnI5dVh2cFA0cGl6WVpkc2ZMRjV3UUNCYUtscFRtKzFYRWxGTDdnL1VxS1VsSHlXdXRPQXdBQTJhRGtCUUFBME0rS1pxNXZhbStjVnZEbkxDMjV5czJHYzlwT0Q0ODFXNnZpcForL0V6LzZjVk8wdEZqRkNJVk80UXZlcjdaOGR4cU9hWW9YQUFDUUZVcGVBQUFBQTJOengxVmZ5QWVzRy90T1hyelA1cjJEWTJxMUI1TE1TOVl3cnYzRnNGajdxaldNa0hZS1gzRDIyVStKSm5jYkFBRElCaVV2QUFDQWdWSHdmOEovWEZsYlhyelB0cE1lUmpKajE3R1I4Y3FiSTZQcGpUT3hkTVVyMGRKaURTUHdmaGNYdm1iZmZtUFVUN282UGpGdVZ4UVBPaVVnQ3RiMFd5WW4vN1pNdzFHVnZBQUFnS3hROGdJQUFCZ1lqUjNYakVJK1lPVTFCL1BpZmU0N2ZNYlRTSyt0YWE2TFY3ZGRGUnUzSERhdEMraXhwUERWY3E3d2xWaTBjRzU4c3E0NDZzZnZpNHFTWXdLaW9Jd2FNU1F0UjdXdUVRQUF5QW9sTHdBQWdJR1JpZzkvRnR4elY4NFhYL1ljTWpXRks5ZTFnckdwK2UxNFlra3lxZXNWb1FBWnMyVHBpbGh5N3Z2WnMrNklXK3ZIUk1PRUUxRTdZcWR3eUhzVlpWZW40cHoxaXpjMXV0c0FBRUEyS0hrQkFBQU1qRlNzY2FrYVhacno3L0hvY1NVdlBsaFM2dHJVT2l4ZWJYa25mdlRqSmlzWWdYNnphdlc2anV2czk5M1hPdGFOUEdES0YzbXB1cUk5RGNjODZrNERBQURab3VRRkFBQXdNRkpSOHBvMGZuRE92OGRrMHRnUEhyblpFMGtucFM0Z0YxMjgxdkhlZVhQaWhrbGxVVGV1UGVySGJCY1FlYUdrS0JVbHJ5WjNHZ0FBeUJZbEx3QUFnQUZRTkhQOWtmYkdhUVYvem5FajNHdHltMUlYa0krZVdiNHludW4yZXRIQ3VmSEp1dUtvRzNNMHFvYnZGeEE1cWJaOGR4cU9xZVFGQUFCa2paSVhBQURBd0ZuYmNjMG81QU9PdnpZL0pqWnMySEY5VEszZTVvbE1BYVV1b0JBdFdib2lscHo3dm11MVkxMzFvS2dmdjg5cVIzTEM3RmwzZFB6YWxvYWpIbkczQVFDQWJGSHlBZ0FBR0RpdFVlQWxyOG1qOTduTERLaWt3TGRwKytCb2FuNDdubGlTRkxwZUVRcFEwQzVlN1ppVWEyNmFQQ3BxSzkrTnVwRUhsTDRZRUdOSGwwVktTbDZON2pZQUFKQXRTbDRBQUFBRHA3WFFEMWc2NUVUblJKSHVIemJub3VhOWcyTnF0UWN5MyswNk5qSzI3aXVQVjdkZEZSdTNISTVsejc0UVNsMUEycTFhdmE3ak92KzZlK21yZWtTYjlZNzBpd25qU3Z6K0hnQUFvSStVdkFBQUFBWk9ZOGYxdFVJLzVJemJic3o1a2xmYlNROWpQdXBhdmRpeTYweHMrUG1lV1BuaVNxRUFmSWlMUzEvZDF6dFdsNStNMmhFN2hVVEdWWlNtNDV6MWl6ZTF1dHNBQUVDMktIa0JBQUFNbkNOcE9PVFlrY1U1L3g3M0hUN2phY3h4YmFlSHg4Yi9IQjliOTF4dDlTSkFCbDI4M2pHeGFPSGNtREtoSktvcjJtTnl4WjRvSG5SS1VQUkoxWWdUYVRqbVduY2FBQURJSmlVdkFBQ0FBVkkwYzMxVGUrTzBnai9uMkJFZnlmbjN1T2VRRDY5enpZWWQxM2V1MFh5MTVaM1k4c2IrV1BtaXowMEIrc3VTcFNzdWVOMjE0ckZxMUZXbWZkRXJGU1Z0YVRobXF6c05BQUJrazVJWEFBREF3TnJjY2RVWDhnRnZudGllOCsveDZIRWxyNEdVckYzY3VuZFl0T3grTnpadU9SekxubjBoVE9rQ3lCMFhyM2hNSk5PK0pvd3JpYXFLTTFFOW9pMnFodThYRkIrb1hNa0xBQUNnejVTOEFBQUFCbFpyRkhqSmExeFo3bitvbDVTS2Z2REl6WjdHZnJEcjJNall1cTg4WHQxMlZUVHZQR0h0SWtDZXVuamFWMEx4aTB0Sm5vdU8zd0drNGFpTjdqWUFBSkJOU2w0QUFBQURxNm5qdXJ1UUQxaDV6VUYzT2FXNkNsMWI5MXdkVGMxdng5cVhYNHVXRm9VdWdFTDFZY1d2a2NOUFcvV1lRcU5HREVuTFVZKzQyd0FBUURZcGVRRUFBQXlzcGpRY2NzRTlkNTFid1plN051eTRQcVpXYi9ORTlwSkNGd0NYY3FuaTE3M3o1c1NZaXBLb0dsMFVrOGVkaVBMaVkxRlJja3hZQmFxaTdPcFVuTE4rOGFZbWR4c0FBTWdtSlM4QUFJQ0IxWnFHUTFhTkxuV25DOGlXQTlXeGRlK3dhTm45YnJlVml3QndaWjVadnZKOVA2dXBxWTNwdDB6dW5QcFZVZnB1VkplZmpPclNnMUU4NkpUQThsemQyQk5wT09abWR4b0FBTWcySlM4QUFJQUJWRFJ6ZlZONzQ3U0NQK2VrOFlOei9qMDI3eDBjVTZzOWt4ZExKcHdsMmJUc09oTjdEcDA2VitneW9RdUF6R3BwYWU2OEx0YTkvRlhTOGRzSms3L3l6OUNpOWpRY3M5V2RCZ0FBc2szSkN3QUFZT0FsZi9LL3ZwQVBXRGYrVnpuL0h0dE9wdnNoVE5ZdDdqNWFGcHUySjRXdWQyTExHL3RqNVl0clE2RUxnSUgwUWVXdnhLS0ZjMk40eWFET3RZOFZwV2RpNVBEVFVUdGlwOUJ5VEdYcGdUUWMwNnBHQUFBZzY1UzhBQUFBQmw1ckZIakphL3cxdWQrZzJuZjRUR29ldUs3cFhIc1BuMTIzdVBibDE2S2xSWmtMZ1B5eVpPbUtTLzY4YS9yWDZCRkRvcnpzNnZjS1lOWS85cjk3NTgzcCtIVi9HbzdhNkc0REFBRFpwdVFGQUFBdzhKSS8rWDkzSVI5dzhxaGRPZjhlazFXRWhXYkxnZXJZYzZRa3R1NjUyblF1QUZMamN0Ty9Fa254YU5qUW9wZ3lvZVRzNzFQR25lajhhZ3BZNWwxWE9UeFNVdkpxZGJjQkFJQnNVL0lDQUFBWWVLbFk3N0xnbnJ0aTJiTXY1T3o3TzNvOGYwdGUzVmN0SmhQSmtzTGFFMHVlQzJVdUFIaS9aNWF2dk94ZlQ5WkFKaWFNSzRtU3dSSFZGZTB4ZEhCN2xCY2ZpNHFTWXdMc2dZcXlxMU54enZyRm0xcmRiUUFBSU51VXZBQUFBQVplS2twZVZhTkxjL3I5SlFXMEh6eHljMDYveHc4dWN3RUFtZkpCYXlDN3U3Z0lOblRJdTFGZGZuWTl0YldRNTlXTlBaR0dZNjUxcHdFQWdQNmc1QVVBQUREQWltYXViMjF2bkZidzU1dzBmckNiZllXVXVRQWd0MTFKRWF5bXBqYW0zeks1OC92Ukk0WkUrYm1wVmhXbFoyTGs4Tk9kM3hmNmRMQ0trclkwUEE2dC9vNEFBQUQ2ZzVJWEFBQkFia2dtQU13bzVBUGVQTEU5NTkvamhoM1h4OVRxYmYzMi8yL0xnZXJZYzZRa3R1NjVXcGtMQUFwTVMwdHo1M1dsWnMrNkk4YU9MbnZ2OVpRSkplOTkzNzBZbHNpWGFXSGxTbDRBQUFBWm8rUUZBQUNRRzFxandFdGU0OHJhVW5sajIwNFBqeTM3UjhlZUk0Tmp6MXNSVGMxdng5SGpwenJYUTBhODRza0hBRHF0V3IydTEvL2JlK2ZONmZqMWx6bDFuck1yTFhlbDRkWTFlbm9CQUlEK29PUUZBQUNRRzVvNnJ0OHU1QU5XWG5NdzU5OWo4OTdCTWJXNmQvL2JTMDNsV3Z2eWE5SFNvc2dGQUdUWE04dFg1dHg3R2pWaVNKcCtIdzhBQUpCMVNsNEFBQUM1SVJVZkRqMzBXL1BqaWUvbDdqckN0cE9YLyt0SmthdnRWRkZzMmo0NDNqNzVialR2UEJFNzk3d1ZLMTlNdG0wcWN3RUFkS2tlZFhVYWpubTBmdkdtSSs0MkFBRFFINVM4QUFBQWNrTXFTbDYxMVVOeit2MGxFN2cyN0xpKzgzdEZMZ0NBM3FzYWNjTHY0UUVBQURKSXlRc0FBQ0FIRk0xY2Y2UzljZHFiSGQ5T0tPUnpqaDJSMnhNZHZ2SHRwZkVOanlNQVFKOVZseDFLd3pFYjNXa0FBS0MvWEMwQ0FBQ0FuTkZhNkFlc0cvdU91d3dBVU9CbXo3b2ppZ2VkOXZ0M0FBQ0FERkx5QWdBQXlCMk5oWDdBVzZxM3U4c0FBQVZ1N09peXRCelZ1a1lBQUtEZktIa0JBQURramxSOFNEVG56aG51TkFCQUFac3lvU1FWNTZ4ZnZFbkpDd0FBNkRkS1hnQUFBTG1qTlEySC9PaWswZTQwQUVBQnE2NW9UOE14Tjd2VEFBQkFmMUx5QWdBQXlCRkZNOWVuWWhMQXBQR0QzV3dBZ0FKV01mUkVHbzVwaWhjQUFOQ3ZsTHdBQUFCeXk5cENQMkRkK0YrNXl3QUFCYXl5OUVBYWpxbmtCUUFBOUNzbEx3QUFnTnhTOEI4VzFZMDY0aTREQUJTb1JRdm4rbjA3QUFCQUZpaDVBUUFBNUpiV1FqOWc1VFVIbzZhbTFwMEdBQ2hBRThhVnBPV29TbDRBQUVDL1V2SUNBQURJTGY4L2UzZlRHOWQ1cGduNEJGSHBZOUtVTXBSbFJhWnB0NjBpbFZpV2lvNW9TMDRzc1VTTHBoTFRoTDRjY3hTcjBJTGNzWU1BTVVlWW5YdkI3TElra0Q5UStnZlVQemphMXFKQUxzY1FRQkt5bFJoaWE4aFJoaGkxWVh1cTdQUzAwLzdTQjhrNjV6elhCUkJuZlovblhSUjRianh2aUk5RlEwZjJtelFBUUFFOXZ2T1RDREVYSzdXbTliUUFBTUNHVXZJQ0FBRElrRksxa1ViSU9kRDNBOE1HQUNpZzNoLytOVUpNVzd3QUFJQU5wK1FGQUFDUVBYTkZEOWovMktlbURBQlFRRDFkdHlMRVZQSUNBQUEybkpJWEFBQkE5aFQrbzFIL0xyZmJBQUFVelpueDBTaFJVOU1HQUFBMm1wSVhBQUJBOWhTKzVOV3pZeWtwbC90TUdnQ2dRUDZ4NXgvOFhnY0FBRmduU2w0QUFBRFpFK0tqMGRDUi9TWU5BRkFndmJ0Q2ZISllyTlNhMXRJQ0FBQWJUc2tMQUFBZ1kwclZSaG9oNTBEZkR3d2JBS0JBSHYrdnF4RmkydUlGQUFCMGhKSVhBQUJBTnMwVlBXRC9ZNSthTWdCQWdmUjEzNHdRVThrTEFBRG9DQ1V2QUFDQWJDcjh4NlArWFc2NUFRQW9palBqbzFHaXBxWU5BQUIwZ3BJWEFBQkFOaFcrNU5Xell5a3BsL3RNR2dDZ0FKN1p1OTN2ZEFBQWdIV2s1QVVBQUpCTklUNGVEUjNaYjlJQUFBWHcrTTVQSXNSY3JOU2ExdEVDQUFBZG9lUUZBQUNRUWFWcUk0MlFjNkR2QjRZTkFGQUF2VC84YTRTWXRuZ0JBQUFkbytRRkFBQ1FYWE5GRDlqLzJLZW1EQUJRQUQxZHR5TEVWUElDQUFBNlJza0xBQUFndXdyL0VhbC9sOXR1QUFEeTdzTEVXSlNvcVdrREFBQ2RvdVFGQUFDUVhZVXZlZlhzV0VwR1R3eVpOQUJBamoyNVo1dmY1d0FBQU90TXlRc0FBQ0M3MGdnaGY3TDNVWk1HQU1peC9qMGZSNGk1V0trMXJhRUZBQUE2UnNrTEFBQWdvMHJWUm9oTkFYc2YyMnpZQUFBNTl2ajIyeEZpcGlZTkFBQjBrcElYQUFCQXRsMHJlc0JEVDMxc3lnQUFPVlV1OXlYZDIrNUVpT3FxUmdBQW9LT1V2QUFBQUxLdDhCK1RCbnZuVFJrQUlLZE9ITjN2ZHprQUFNQUdVUElDQUFESXRoQWZrODZkUG1uU0FBQTUxUHRvS1VUT1NxMlptallBQU5CSlNsNEFBQURabGtZSU9mampicE1HQU1paC9oK3RSb2g1emFRQkFJQk9VL0lDQUFESXNGSzFzZEI2ckJROVozblA5d3diQUNDSCtycHZSb2pwcWtZQUFLRGpsTHdBQUFDeUx5MTZ3RU5QM0RabEFJQ2NPVE0rR2lXcWtoY0FBTkJ4U2w0QUFBRFpWL2lQU2owN2xwSnl1YytrQVFCeTVKbTkyNk5FVFUwYkFBRG9OQ1V2QUFDQTdFc2poQng3ZWNDa0FRQnk1UEdkbjBTSXVWS3BOUmRNR3dBQTZEUWxMd0FBZ093TGNUM00zc2MybXpRQVFJNzBQN0lVSVdacTBnQUFRQllvZVFFQUFHUmNxZHBZYmozbWlwN3owRk1mR3pZQVFFNk1EQjlMdXJmZGlSQjExclFCQUlBc1VQSUNBQURJaDhKL1hCcnNuVGRsQUlDYzJQdGtkNVNvcVdrREFBQlpvT1FGQUFDUUQybUVrSmZlUEdYU0FBQTVzSyszRkNKbnBkWk1UUnNBQU1nQ0pTOEFBSUI4U0NPRTdPdjlMeVlOQUpBRC9ZK3VSSWc1WjlJQUFFQldLSGtCQUFEa1FLbmFXR2c5Q3Y4bDdibW5Qek5zQUlBYzZPbTZGU0ZtYXRJQUFFQldLSGtCQUFEa1IxcjBnSU85TjAwWkFDRGpMa3lNUllrNmE5b0FBRUJXS0hrQkFBRGtSK0UvTW5WdFdVM09uVDVwMGdBQUdmYmpKN2RGaVpxYU5nQUFrQlZLWGdBQUFQbVJSZ2k1NzhrZm1qUUFRSWIxLzJnMVFzekZTcTI1WU5vQUFFQldLSGtCQUFEa1JLbmFTQ1BrZk83cDd4czJBRUNHOVhXSHVHTGJWWTBBQUVDbUtIa0JBQURreTdXaUJ6ejB4RzFUQmdESXFBc1RZMUdpcHFZTkFBQmtpWklYQUFCQXZoUitvMERQanFWazlNU1FTUU1BWk5DVGU3WkZpWnFhTmdBQWtDVktYZ0FBQVBtU1JnZzUrT3dla3dZQXlLRCtQUjlIaUxsU3FUVmQxd2dBQUdTS2toY0FBRUMrcEJGQ1B2ZjA5MDBhQUNDRCtuZitKVUpNQlM4QUFDQnpsTHdBQUFCeXBGUnRMTGNlYzBYUGVlaUoyNFlOQUpBeFo4WkhrNjJiN2thSW1wbzJBQUNRTlVwZUFBQUErWk1XUFdEUGpxVms5TVNRU1FNQVpNZ3plN2Y3dlEwQUFOQWhTbDRBQUFENUUrTDZtTUZuOTVnMEFFQ0c5Ty81T0VUT1NxMlptallBQUpBMVNsNEFBQUQ1azBZSStkelQzemRwQUlBTTZkLzVsd2d4cjVrMEFBQ1FSVXBlQUFBQU9WT3FOaFphajhXaTV6ejB4RzNEQmdESWlEUGpvOG5XVFhjalJFMU5Hd0FBeUNJbEx3QUFnSHhLaXg2d1o4ZFNNbnBpeUtRQkFETGdtYjNiL2M0R0FBRG9JQ1V2QUFDQWZFb2poQng4ZG85SkF3QmtRUCtlajZORW5UVnRBQUFnaTVTOEFBQUE4aW1ORVBLNXA3OXYwZ0FBR1hCdzkyS0VtSE9WV25QWnRBRUFnQ3hTOGdJQUFNaWhVcld4MEhvVS9rdmJvU2R1R3pZQVFJZGRtQmlMRWpVMWJRQUFJS3VVdkFBQUFQSXJMWHJBbmgxTHllaUpJWk1HQU9pZ0h6KzV6ZTlyQUFDQURsUHlBZ0FBeUs4MFFzamp6L2VZTkFCQUIvWC9hTlh2YXdBQWdBNVQ4Z0lBQU1pdk5FTEk1NTcrektRQkFEcWtYTzVMK3JwdlJvZzZWNmsxbDAwY0FBRElLaVV2QUFDQW5DcFZHd3V0eDJMUmN3NzIzalJzQUlBT09YRjBmNVNvcVdrREFBQlpwdVFGQUFDUWIyblJBM1p0V1UzT25UNXAwZ0FBSGJDdnQrUjNOUUFBUUFZb2VRRUFBT1JiR2lIazBNQk9rd1lBNklEK1IxZjhyZ1lBQU1nQUpTOEFBSUI4U3lPRVBQVFV4eVlOQUxEQlJvYVBKVDFkdHlKRXZWYXBOWmROSEFBQXlESWxMd0FBZ0J3clZSc0xyY2RpMFhNTzlzNG41WEtmZ1FNQWJLQUQrM1pGaVpxYU5nQUFrSFZLWGdBQUFQbVhSZ2c1OXZLQVNRTUFiS0QrbnMvOG5nWUFBTWdJSlM4QUFJRDhTeU9FSE5pN3hhUUJBRGJ5OTllZW15RnlWbXJOMUxRQkFJQ3NVL0lDQUFESXY1a0lJWWY2LzlXa0FRQTJ5Sm54MFdUcnByc1JvbDR6YlFBQUlBK1V2QUFBQUhLdVZHMHN0eDV6UmMvWnMyTXBHVDB4Wk9BQUFCdmdtYjNibzBSTlRSc0FBTWdESlM4QUFJQmlTQ09FUFA1OGowa0RBR3lBeWhPclVhTE9tRFlBQUpBSFNsNEFBQURGa0VZSStkelRuNWswQU1BNks1Zjdrcjd1bXhHaXJsUnF6VmtUQndBQThrREpDd0FBb0JqU0NDRUhlMithTkFEQU9qdHhkTC9mMEFBQUFCbWo1QVVBQUZBQXBXcGp1Zlc0VnZTY1hWdFdrMHR2bmpKd0FJQjFOTEEzektlRDFMUUJBSUM4VVBJQ0FBQW9qalJDeUtNSC84R2tBUURXVWY4alMxR2l6cGcyQUFDUUYwcGVBQUFBeFJIaUk5V2hmL3lyU1FNQXJKTXo0Nk5KOTdZN0VhSXVWbXJOQlJNSEFBRHlRc2tMQUFDZ0lFclZ4bXpyc1ZMMG5QdDJmWmlNbmhneWNBQ0FkZkRNM3UxUm9xYW1EUUFBNUltU0Z3QUFRTEdrRVVJT1BydkhwQUVBMWtIbGlkVW9VVjNWQ0FBQTVJcVNGd0FBUUxHRStGaDFiUC8zVEJvQVlJMlZ5MzFKWC9mTktIRlRFd2NBQVBKRXlRc0FBS0JZMGdnaGo1ZXZtelFBd0JvYkh6a1lKZXBjcGRaY05uRUFBQ0JQbEx3QUFBQUtwRlJ0TExRZWl4R3lUcjc5dW9FREFLeWgvcDdQb2tSMVZTTUFBSkE3U2w0QUFBREZFK0tqMVV2N041czBBTUFhR3RnVDVxcEdKUzhBQUNCM2xMd0FBQUNLSjQwUTh0QVR0MDBhQUdDTm5Ca2ZUYlp1dWhzaDZrcWwxcHcxY1FBQUlHK1V2QUFBQUFxbVZHMkUyRXpRczJNcE9YZjZwSUVEQUt5Qm93UGJvMFJOVFJzQUFNZ2pKUzhBQUlCaXVoWWg1TkRBVHBNR0FGZ0QvWSt1UklucXFrWUFBQ0NYbEx3QUFBQ0tLY1RIcStwUC9vOUpBd0E4cEpIaFkwbFAxNjBvY1ZNVEJ3QUE4a2pKQ3dBQW9KalNDQ0gzN2Zvd0dUMHhaTm9BQUEvaGNHVjNsS2h6bFZwendjUUJBSUE4VXZJQ0FBQW9vRksxTWR0NkxFYklPdmpzSGdNSEFIZ0lsU2RXbzBSTlRSc0FBTWdySlM4QUFJRGlTaU9FUExiL2V5WU5BUENBeXVXK3BLLzdacFM0TXlZT0FBRGtsWklYQUFCQWNZWDRpSFc4ZlAzemo1TUFBTnkvOFpHRFVhS3VWR3JOMU1RQkFJQzhVdklDQUFBb3FGSzFFV1pUd1J0amh3d2NBT0FCRER6MVNaU29xV2tEQUFCNXB1UUZBQUJRYkZjamhIenU2ZStiTkFEQUF6aTRlekZLVkZjMUFnQUF1YWJrQlFBQVVHeHBoSkRIK3o4d2FRQ0ErL1RPeFZPUjRpcDVBUUFBdWFia0JRQUFVR3doUG1aMWJWbE5KdDkrM2JRQkFPN0R3TjR3bndqbUtyWG1zb2tEQUFCNXB1UUZBQUJRWUtWcVk2SDFDSEVIejB2N054czRBTUI5R05oek0wcFVXN3dBQUlEY1UvSUNBQUFvdmhBZnRWelpDQUJ3NzlwWE5XN2RkTmZ2WVFBQWdKeFE4Z0lBQUNpK01GYzJuanQ5MHJRQkFPN0J2dDVTbEtpTGxWcHoxc1FCQUlDOFUvSUNBQUFvdUZLMWtiWWVLeEd5anIzNGlJRURBTnlEeW1NZlJZbWFtallBQUZBRVNsNEFBQUF4aE5qbU5kVC9yeVlOQVBBZHpveVBKdDNiN3ZnZERBQUFrQ05LWGdBQUFER2tFVUwyN0ZoeVpTTUF3SGM0T3JBOVROWktyYW5rQlFBQUZJS1NGd0FBUUF4aFBtNjVzaEVBNE5zRnVxcnhxbWtEQUFCRm9lUUZBQUFRUUtuYVdFNkNmT1J5WlNNQXdEZHpWU01BQUVBK0tYa0JBQURFa1VZSTZjcEdBSUJ2RnVtcXhrVEpDd0FBS0JBbEx3QUFnRGhjMlFnQUVGeWdxeHJuS3JYbXNva0RBQUJGb2VRRkFBQVFSS25hV0dnOTVpSmtkV1VqQU1CWEJidXFzVzdpQUFCQWtTaDVBUUFBeEJKaW01Y3JHd0VBdnNwVmpRQUFBUG1sNUFVQUFCQ0xLeHNCQUlJS2RGWGpZcVhXWERCeEFBQ2dTSlM4QUFBQUFpbFZHN090eDJLRXJLNXNCQUQ0RDhHdWFyVEZDd0FBS0J3bEx3QUFnSGhjMlFnQUVFeXdxeHJySmc0QUFCU05raGNBQUVBOHJtd0VBQWdtMkZXTnN5WU9BQUFValpJWEFBQkFNS1ZxSTIwOVZpSmtmZTNnRFFNSEFNSjc1K0lwVnpVQ0FBRGtuSklYQUFCQVRDRStmblZ0V1UwbTMzN2R0QUdBMEFiMmh2b1VrSm80QUFCUVJFcGVBQUFBTVlYWmNQRFMvczJtRFFDRU5yRG5acFNvSzVWYTB5WXZBQUNna0pTOEFBQUFBaXBWRysyUFh5R3ViRHplLzRHQkF3Qmh0YTlxM0xycGJwUzRDbDRBQUVCaEtYa0JBQURFNWNwR0FJQ0NDM1pWbzVJWEFBQlFXRXBlQUFBQWNZWDVDUGFMd1UybURRQ0VVeTczSlVkNjU2UEVkVlVqQUFCUWFFcGVBQUFBUWYzdHlzWVFqcGV2Zi82UkV3QWdrdkdSZzVIaUtuZ0JBQUNGcHVRRkFBQVEyOVVvUWQ4WU8yVGFBRUFvQTA5OUVpbXVraGNBQUZCb1NsNEFBQUN4aGZrWTl1cFBQelZ0QUNDTWtlRmp5Y0hkaTFIaXVxb1JBQUFvUENVdkFBQ0EyTUo4REJ2c25VOUdUd3laT0FBUXd1SEs3a2h4VXhNSEFBQ0tUc2tMQUFBZ3NGSzFzWndFdXJMeCtQTTloZzRBaFBEaTNwVkljVzN4QWdBQUNrL0pDd0FBZ0RBZnhkNDQvTDlNR3dBb3ZEUGpvMGxQMXkyL1p3RUFBQXBFeVFzQUFJQXdIOFY2ZGl3bDUwNmZOSEVBb05DT0RteVBGUGRxcGRaY05uVUFBS0RvbEx3QUFBQ0NpM1psNDlpTGp4ZzZBRkJvbGNjK2loVFhGaThBQUNBRUpTOEFBQURhd253Y2UrM2dEZE1HQUFycm5ZdW5rdTV0ZDZMRVhhblVtblZUQndBQUlsRHlBZ0FBb0MxTXlhdHJ5Mm95K2ZickpnNEFGTkxBM2xELzlyZkZDd0FBQ0VQSkN3QUFnSCsvc3ZGS2xMeS9HTnhrNkFCQTRaVExmY21SM3ZsSWtaVzhBQUNBTUpTOEFBQUErSGRoUHBJZEwxLy8vQ01vQUVDUmpJOGNqQlMzZlZXamtoY0FBQkNHa2hjQUFBQ2ZLMVViN1k5a0sxSHl2dlg2ODRZT0FCVEt5L3Z2UklxcjRBVUFBSVNpNUFVQUFNQ1hoZmxZOXVwenE2WU5BQlRHeVBDeHBLZnJsdCt0QUFBQUJhWGtCUUFBd0plRitWaTJiOWVIeWJuVEowMGNBQ2lFWDc2ME8xSmNWelVDQUFEaEtIa0JBQUR3LzBXN3NuSGkrRTVEQndBSzRjVW5iMFNLcStBRkFBQ0VvK1FGQUFEQWZ4Ym1vOW54L2c5TUd3REl2WGN1bmtxMmJyb2JLWExkMUFFQWdHaVV2QUFBQVBqUHBxTUU3ZHF5bXJ3M09XSGlBRUN1L2V3bm9lSXVWbXJOMU5RQkFJQm9sTHdBQUFENE82VnFZN2IxV0l5Uzk5V2ZmbXJvQUVCdWpRd2ZTdzd1WG93VTJWV05BQUJBU0VwZUFBQUFmSjB3SDg4R2UrZVQwUk5ESmc0QTVOTGh5dTVva2V1bURnQUFSS1RrQlFBQXdOZXBSd283ZHZSeEV3Y0FjbWw0MzBlUjRyYXZhcHcxZFFBQUlDSWxMd0FBQUw3aWIxYzJ6a1hKTzFhNWJlZ0FRTzVjbUJoTHVyZmRpUlI1MnRRQkFJQ29sTHdBQUFENEp2VW9RWHQyTENXVGI3OXU0Z0JBcnZ6ODJjM1JJcytZT2dBQUVKV1NGd0FBQU44azFFZTBYd3h1TW5FQUlEZks1YjdrU085OHBNaHpsVnB6d2VRQkFJQ29sTHdBQUFENFdxVnFZNkgxdUJZbDcvSHk5V1QweEpEQkF3QzVNUEhhUUxUSXJtb0VBQUJDVS9JQ0FBRGcyOVFqaFIwNytyaUpBd0M1TUx6dm8yaVJYZFVJQUFDRXB1UUZBQURBdHduMU1XMnNjdHZFQVlETXV6QXhsblJ2dXhNcDh0VktyYmxzOGdBQVFHUktYZ0FBQUh5alVyWFIvcGgySlVyZW5oMUx5ZVRicnhzOEFKQnBQMzkyYzdUSWRWTUhBQUNpVS9JQ0FBRGd1NFRhNXZXcm4zL1B4QUdBekNxWCs1SWp2Zk9SSXE5VWFrMVhOUUlBQU9FcGVRRUFBUEN0U3RWRys2UGFZcFM4ZzczenllaUpJWU1IQURMcDR0bUJhSkhycGc0QUFLRGtCUUFBd0wwSnRUM2h2NzNTYStJQVFDYTkrTlJIMFNMWFRSMEFBRURKQ3dBQWdIdFRqeFQydFlNM1RCd0F5SngzTHA1S3VyZmRpUlI1c1ZKcnpwbzhBQUNBa2hjQUFBRDNvRlJ0dEQrdXpVWEoyN1ZsTlhsdmNzTGdBWUJNK2RsUHdrV2VOblVBQUlBdktIa0JBQUJ3citxUndrNzg3UCthT0FDUUdTUER4NUtEdXhlanhaNHhlUUFBZ0M4b2VRRUFBSEN2NnBIQzd0djFZWEx1OUVsVEJ3QXk0WmN2N1k0VytXcWwxbHd3ZVFBQWdDOG9lUUVBQUhCUFN0WEdjdXR4TlZMbWllTTdEUjRBNkxoeXVTOTU4Y2tiMFdMWFRSNEFBT0EvS0hrQkFBQndQK3FSd280ZmVQL3pqNm9BQUIzOVRUSnlNTm02Nlc2a3lDdVZXdE5WalFBQUFGK2k1QVVBQU1BOUsxVWI3WTl0aTVFeXYzdmhCWU1IQURycTVmMTNva1d1bXpvQUFNRGZVL0lDQUFEZ2ZvWGFxakJXdVczaUFFREhYSmdZUzNxNmJrV0xYVGQ1QUFDQXY2ZmtCUUFBd1AyYWpoUzJaOGRTOHQ3a2hLa0RBQjN4ODJjM1I0czhWNmsxWjAwZUFBRGc3eWw1QVFBQWNGOUsxY1pDNjNFdFV1WlhmL3Fwd1FNQUcyNWsrRmh5cEhjK1d1eHBrd2NBQVBncUpTOEFBQUFlUkQxUzJNSGUrZVRjNlpPbURnQnNxRisrdER0aTdCbVRCd0FBK0NvbEx3QUFBQjVFKytQYlNxVEFFOGQzbWpvQXNHSEs1YjdreFNkdlJJdDlwVkpyTHBzK0FBREFWeWw1QVFBQWNOOUsxVWI3NDF1b0xRdmpCOTcvL0dNckFNQ0cvUFlZT1poczNYUTNXdXk2eVFNQUFIdzlKUzhBQUFBZTFIUzB3TzllZU1IVUFZQU5NVmE1RlMzeVlxWFdURTBlQUFEZzZ5bDVBUUFBOEVCSzFjWnM2ekVYS2ZQNXd4OFlQQUN3N2k1TWpDWGQyKzVFaXoxdDhnQUFBTjlNeVFzQUFJQ0hFZXBqWE5lVzFlUzl5UWxUQndEVzFmamh6eUxHcnBzOEFBREFOMVB5QWdBQTRHSE10UDVXSWdWK3E3cGk2Z0RBdWhrWlBwYjBkZCtNRnZ0S3BkWmNObjBBQUlCdnB1UUZBQURBQXl0VkcrMlBjVE9STXZmc1dFb3V2WG5LOEFHQWRYRjIrSkdJc2VzbUR3QUE4TzJVdkFBQUFIaFkwOUVDWDNwbHM2a0RBR3V1dmNYclNPOTh0TmlMbFZvek5YMEFBSUJ2cCtRRkFBREFReWxWRzdPdHgxeWt6SU85ODhub2lTSERCd0RXVlBYNTNSRmpUNXM4QUFEQWQxUHlBZ0FBWUMyRSt6ajN6K09QbXpvQXNHYks1YjdrNWY0YkVhUFhUUjhBQU9DN0tYa0JBQUN3Rm1aYWZ5dVJBbzhmZU44Mkx3Qmc3WDViakJ4TXRtNjZHeTMybFVxdHVXejZBQUFBMzAzSkN3QUFnSWRXcWpiYUgrZG1vdVVlTzJxYkZ3Q3dScjhyS3JjaXhxNmJQQUFBd0wxUjhnSUFBR0N0aEx1eThmemhEejYvV2drQTRHRmMvdTNacEh2Ym5XaXhGeXUxWm1yNkFBQUE5MGJKQ3dBQWdEVlJxalptVzQ5cmtUSjNiVmxOM3Izd2d1RURBQS9sNWYxM0lzYWVObmtBQUlCN3ArUUZBQURBV3FwSEN6eFd1VzNxQU1BRHV6QXhsdlIwaGJ1cWNTVnhWU01BQU1COVVmSUNBQUJnelpTcWpYcnl4VWU3TUhwMkxDWHZUVTRZUGdEd1FNWVBmeFl4OWt5bDFsdzJmUUFBZ0h1bjVBVUFBTUJhcTBjTC9GWjF4ZFFCZ1B0MlpudzA2ZXUrR1RHNnF4b0JBQUR1azVJWEFBQUFheTNjUnp2YnZBQ0FCL0hLQ3orSUdQdGFwZGFjTlgwQUFJRDdvK1FGQUFEQW1pcFZHd3V0eDlWb3VWLzk2YWVHRHdEY3M1SGhZOG1SM3ZtSTBldW1Ed0FBY1ArVXZBQUFBRmdQNGJaNURmYk9KNWZlUEdYeUFNQTlPVHY4U01UWUs1VmFzMjc2QUFBQTkwL0pDd0FBZ0RWWHFqYlMxbU14V3U1THIydzJmQURnT3dYZTRqVnQrZ0FBQUE5R3lRc0FBSUQxWXBzWEFNRFhDTHJGcTYxdStnQUFBQTlHeVFzQUFJRDFVbS85clVRTGJac1hBUEJ0eXVXK1pHRFB6WWpScjFScXpRVW5BQUFBNE1Fb2VRRUFBTEF1U3RYR2N1c3hFeTEzZTV2WDZJa2hCd0FBK0ZvWHp3NGtXemZkalJpOWJ2b0FBQUFQVHNrTEFBQ0E5VFFWTWZRL2p6OXU4Z0RBVjdTM2VMM2NmeU5pOUxsS3JaazZBUUFBQUE5T3lRc0FBSUIxVTZvMkZscVBhOUZ5ang5NDN6WXZBT0FyQW0veG1qWjlBQUNBaDZQa0JRQUF3SHFiaWhqYU5pOEE0TXNDYi9GYXFkU2FkU2NBQUFEZzRTaDVBUUFBc0s1SzFVYmFlaXhHeTIyYkZ3RHdaYlo0QVFBQThEQ1V2QUFBQU5nSVV4RkQyK1lGQUxRRjN1TFZwdVFGQUFDd0JwUzhBQUFBMkFnenJiK1ZhS0Z0OHdJQTJnSnY4YnBTcVRXWG5RQUFBSUNIcCtRRkFBREF1aXRWRysyUGV5RzNPTmptQlFDeDJlSUZBQURBV2xEeUFnQUFZS1BVSTRhMnpRc0FZZ3U4eGV0YXBkYWNkUUlBQUFEV2hwSVhBQUFBRzZKVWJTeTBIbGNpWnJmTkN3Qmlzc1VMQUFDQXRhTGtCUUFBd0VZSytiSFBOaThBaUNud0ZxL0ZTcTA1NHdRQUFBQ3NIU1V2QUFBQU5reXAybWhmMlhNdFluYmJ2QUFnbHVCYnZLYWNBQUFBZ0xXbDVBVUFBTUJHczgwTEFDaTh3RnU4VmxwL3RuZ0JBQUNzTVNVdkFBQUFObFNwMm1oLzlGdU1tTjAyTHdDSUlmZ1dyK2xLcmJuc0ZBQUFBS3d0SlM4QUFBQTZZU3BpYU51OEFDQ0d3RnU4MnFhZEFBQUFnTFduNUFVQUFNQ0dLMVViOWVTTHEzekNzYzBMQUlvdCtCYXZLN1o0QVFBQXJBOGxMd0FBQURvbDVKYUg5amF2UzIrZU1uMEFLS2pnVzd5bW5BQUFBSUQxb2VRRkFBQkFwN1JMWGlHM2VWMTZaYlBwQTBBQkJkL2lkYlZTYXk0NEJRQUFBT3REeVFzQUFJQ09LRlViN2F0OFppSm1IK3lkdDgwTEFBcm9mL3pUZ2NoYnZLYWRBQUFBZ1BXajVBVUFBRUFuVFVVTmJwc1hBQlRMeVBDeDVFanZmTlQ0MXlxMVp1b1VBQUFBckI4bEx3QUFBRHFtVkcwc3RCNVhJbWEzelFzQWl1WHM4Q09SNDl2aUJRQUFzTTZVdkFBQUFPaTBzQjhGSjhjTkh3Q0tJUGdXcjhWS3JUbmpGQUFBQUt3dkpTOEFBQUE2cWxSdHpMWWUxeUptMzdmcncrUzl5UW1IQUFCeTdzTEo3c2p4cDV3QUFBQ0E5YWZrQlFBQVFCWk1SUTMrVm5YRjlBRWd4eTVNakNVSGR5OUdqZC9lNGxWM0NnQUFBTmFma2hjQUFBQWRWNm8yMGlUb05xK2VIVXUyZVFGQWpvMGYvaXh5L0drbkFBQUFZR01vZVFFQUFKQVZZVDhTWGo3NTU2UmM3bk1DQUNCbjJsdTgrcnB2Um8zZlhrZGFkd29BQUFBMmhwSVhBQUFBbVZDcU5tWmFqNUIzSFhWdFdVM2V2ZkNDUXdBQU9YT3grcjhqeDUrdTFKckxUZ0VBQU1ER1VQSUNBQUFnUzZhaUJqOS8rQVBidkFBZ1J5Ny85bXpTdmUxTzFQanRMVjZ1YWdRQUFOaEFTbDRBQUFCa1JxbmFxQ2VCdDNuOThmZTJlUUZBSHJTTDJXT1ZXNUZmZ1MxZUFBQUFHMHpKQ3dBQWdLeVppaHA4L01EN3llaUpJU2NBQURMdTR0a0JXN3dBQUFEWVVFcGVBQUFBWkVya2JWNXRsOTk0ekNFQWdBeHJiL0Y2dWY5RzVGY3dZNHNYQUFEQXhsUHlBZ0FBSUl1bW9nWS9YcjZlWEhyemxCTUFBQm4xdS9NRHlkWk5kLzFPQXdBQVlFTXBlUUVBQUpCRk04a1hWd0dGZE9tVnpVNEFBR1RReVBDeDVQamU2NUZmd1pWS3JibmdKQUFBQUd3OEpTOEFBQUF5cDFSdHRLOEFtbzZhZjdCM1BubHZjc0pCQUlDTXVYQ3lPL29ybUhJS0FBQUFPa1BKQ3dBQWdLeHFsN3pDYnZONnE3cmlCQUJBaGx5WUdFc083bDZNL0FwczhRSUFBT2dnSlM4QUFBQXlLZm8ycjU0ZFM4bWYvdkJyQndFQU1tTGlwWCtML2dxbW5BSUFBSURPVWZJQ0FBQWd5MEp2OHpwLytJT2tYTzV6Q2dDZ3d5Ny85bXpTMDNVcjhpdXd4UXNBQUtERGxMd0FBQURJck9qYnZMcTJyQ1ovL1AwTERnSUFkRkM3Y0QxV3VSWDlOVXc1Q1FBQUFKMmw1QVVBQUVEV2hkN21OWDdnL2VUYzZaTk9BUUIweU1XekEwbjN0anVSWDRFdFhnQUFBQm1nNUFVQUFFQ21SZC9tMVhiNTlIWUhBUUE2WUdUNFdQSnkvNDNvcjJIS1NRQUFBT2c4SlM4QUFBRHlJUFEycjhIZStXVHk3ZGVkQWdEWVlHZUhIMG0yYnJvYitSWFk0Z1VBQUpBUlNsNEFBQUJrbm0xZVNmTHVMLzdxSUFEQUJyb3dNWlljNloyUC9ocW1uQVFBQUlCc1VQSUNBQUFnTDBKdjgrclpzWlQ4NlErL2Rnb0FZSU5NdlBSdjBWK0JMVjRBQUFBWm91UUZBQUJBTHRqbWxTVG5EMytRbE10OURnTUFyTFBMdnoyYjlIVGRpdjRhcHB3RUFBQ0E3RkR5QWdBQUlFOUNiL1BxMnJLYS9QSDNMemdGQUxDTzJvWHFYdzErR1AwMTJPSUZBQUNRTVVwZUFBQUE1SVp0WGtreWZ1RDk1TkticHh3R0FGZ252enMva0d6ZGREZjZhNWh5RWdBQUFMSkZ5UXNBQUlCY0tWVWJVNjNIWXVSM01EbnVIQURBZWhnWlBwWWMzM3M5K211d3hRc0FBQ0NEbEx3QUFBRElvNm5JNGZmdCtqQjViM0xDS1FDQU5mYWIxN3E4QkZ1OEFBQUFNa25KQ3dBQWdOd3BWUnYxSlBnMnI4c24vNXlVeTMwT0F3Q3NrWGN1bmtyNnVtOUdmdzEvc01VTEFBQWdtNVM4QUFBQXlLdXB5T0c3dHF3bS8vS2J3MDRCQUt5QmRuSDZWNGR2UjM4Tks2Mi9hYWNCQUFBZ201UzhBQUFBeUNYYnZKTGsvUFAvTXpsMytxVERBQUFQNmVMWmdhUjcyNTNvcjJHNlVtc3VPdzBBQUFEWnBPUUZBQUJBbmsxRmZ3R1hUMjkzQ2dEZ0lZd01IMHRlZmVaNjlOZGdpeGNBQUVER0tYa0JBQUNRVzMvYjVuVXQ4anNZN0oxUDNwdWNjQmdBNEFIOTVyVXVMOEVXTHdBQWdNeFQ4Z0lBQUNEdnBxSy9nTXNuLzV5VXkzMU9BZ0RjcDNjdW5rcjZ1bTlHZnczdDY2OXQ4UUlBQU1nNEpTOEFBQUJ5clZSdHBFbndiVjVkVzFhVFAvNytCWWNCQU81RHV5RDlUeS85eFl0SWtpbGJ2QUFBQUxKUHlRc0FBSUFpbUlyK0FzWVB2SjljZXZPVWt3QUE5K2gzNXdlU3JadnVSbjhOaTVWYXMrNDBBQUFBWkorU0Z3QUFBTG4zdDIxZVY2Ty9oOGx4WndFQTdzV1o4ZEhrK043clhvU2lQQUFBUUc0b2VRRUFBRkFVazlGZndMNWRIeVovK3NPdm5RUUErQTZYWHZuTVMwaVNhN1o0QVFBQTVJZVNGd0FBQUlWUXFqWVdXbzhyMGQvRCtjTWZKS01uaGh3SUFQZ0cvL0xmWDA5NnVtNTVFYlo0QVFBQTVJcVNGd0FBQUVVeTFmcGJpZndDdXJhc0pwZmZlTXhKQUlDdlVTNzNKV1BQM3ZBaXZ0amlsWG9OQUFBQStmSC9CR0R2L21Qc3F1ODcvNzliK2NvbW13blVHemRLWEN0UXhqaUNrdXRJTUZqYUNGK3orRWVLTXg0Yk8rc1lmQm12RlF4eVU4WU9EVUZRUEU0aFlXbVVqRW1pNGtTb1k1TFFhSU9FUWQvcUczWWo5VHBmNlN2bEpycTFsWDhLVExBdFlwS042V1lHVjZidXFNdWU0K3NFSE52aitYRi9uSHZ2NHlFZEhhWGl4NTNYSFJxa1BQWDVpTHdBQUFCb0cyZE84eHJxOUIyV2RZL0V3TFlOZmlFQTRIYzhkT2MxTVdmV0tVTkU5SnNBQUFDZ3RZaThBQUFBYURkcDVEWFc2U1A4NWRwZm5UNnRCQUNvdW10TFgzejRmVWNORWJFdlg2d2NNUU1BQUVCckVYa0JBQURRVm5LRjhtaFVyMjNzYU9tMWpRL2VlWU5mQ0FDSTZqV05uN2poZnh1aUdzSVBtZ0VBQUtEMWlMd0FBQUJvTzdsQ09UM05xK09QNnRoMC9ZdXg5ZlkrdnhBQWRMenRteGJIM0V0T0dDSml5Q2xlQUFBQXJVbmtCUUFBUUxzYU1FRXlRcThOQU9oczYzcFh4cklyUnd4UlBjVnJ5QXdBQUFDdFNlUUZBQUJBVzhvVnl2dVQxNEZPMzJIUnZHUHgxZDIzK1lVQW9HTnRYZkdXRWFvRzg4WEtxQmtBQUFCYWs4Z0xBQUNBZGpab2dvaHRONzRVNjlldU1nUUFIZWVSK3piRS9LN2pob2c0bWk5V25PSUZBQURRd2tSZUFBQUF0SzFjb1Z4S1h2c3NFYkZ6N1h1TUFFQkhXWDdUalhITDFhNXBQS1BmQkFBQUFLMU41QVVBQUVDN0d6UkJ4SFVMRHNlajkyOHlCQUFkNDg2UGR4bWg2a0MrV0NtWkFRQUFvTFdKdkFBQUFHaHJ1VUw1U1BMYWJZbUlUeTA5Rml0dlhtb0lBTnJlZ3pzMnhNSzVyeG1pYXNBRUFBQUFyVS9rQlFBQVFDY1lTcDZ4VGgraGEvYkoyRlY4bjk4R0FOcGFlazNqNmo5NTFSQlYrL0xGeWtFekFBQUF0RDZSRndBQUFHMHZWeWlQaGxNc1RuTnRJd0R0THIybWNjNnNVNGFvQnU3Ky9RY0FBS0JOaUx3QUFBRG9DTGxDZVRoNUhiS0VheHNCYUYrdWFUekxVTDVZR1RVREFBQkFleEI1QVFBQTBFbWNaaEd1YlFTZ1BibW04U3hIODhYS29Ca0FBQURhaDhnTEFBQ0FqcEVybEV2SjZ6bEx1TFlSZ1Biam1zYXpDTnNCQUFEYWpNZ0xBQUNBVHVOLzlEekR0WTBBdEF2WE5KN2xRTDVZMlc4R0FBQ0E5aUx5QWdBQW9LUGtDdVVqeVd1M0pWemJDRUI3Y0Uzak9RVHRBQUFBYlVqa0JRQUFRQ2NhU3A2alpuQnRJd0N0enpXTlo5bVRMMVlPbWdFQUFLRDlpTHdBQUFEb09MbENlVFI1RFZxaXlyV05BTFFxMXpTZVpjeS8zd0FBQUxRdmtSY0FBQUFkS1Zjb0R5ZXZBNVp3YlNNQXJjazFqZWNZekJjcm8yWUFBQUJvVHlJdkFBQUFPdG1BQ2FwYzJ3aEFxM0ZONDFrTzVZdVZJVE1BQUFDMEw1RVhBQUFBSFN0WEtCOU1YbnNzVWVYYVJnQmFoV3NhenlGY0J3QUFhSE1pTHdBQUFEcmRZUEtNbWFGNmJlT1g3dndEUXdDUWFldDZWOGI2eFNPR2VOdStmTEZTTWdNQUFFQjdFM2tCQUFEUTBYS0Y4bWc0L2VLM0ZzMDdGbC9kZlpzaEFNaXNyU3ZlTXNMYjBsQjkwQXdBQUFEdFQrUUZBQUJBeDhzVnlzUEo2NEFscXJiZCtGS3NYN3ZLRUFCa3ppUDNiWWo1WGNjTjhiYWhmTEZ5eEF3QUFBRHRUK1FGQUFBQVZVN3plb2RkbjV3VDNkMExEUUZBWm16ZXVEcHV1ZG8xamU5d05GK3NESm9CQUFDZ000aThBQUFBSUU2ZjVuVXdlZTJ4UkZWNmJlT0RkOTVnQ0FBeUlRMlB0eFRlTU1UWitrMEFBQURRT1VSZUFBQUE4TGJCNUJrelE5V202MStNcmJmM0dRS0FwcnUzLzlxWWU4a0pRN3h0WDc1WUtaa0JBQUNnYzRpOEFBQUE0SXhjb1R3YXJtMDh5Mk8zLzlxMWpRQTAxVjFiK21MSmdzT0dlTnVZZjE4QkFBRG9QQ0l2QUFBQWVJZGNvVHljdkE1WW9xcHI5c240K24zWEdRS0FwbGgrMDQzUi85RmZHdUpzZy9saVpkUU1BQUFBblVYa0JRQUFBT2R5T3NZN0xPc2VpVWZ2MzJRSUFCcnV6bzkzeFp4WnB3enh0a1A1WW1YSURBQUFBSjFINUFVQUFBQy9JMWNvSDB4ZXV5M3h0azh0UFJicjE2NHlCQUFOODhoOUcyTGgzTmNNY2JaK0V3QUFBSFFta1JjQUFBQ2NYM3BLeGxFelZLWFhOdTc2NUJ4REFOQVE2M3BYeGkxWGp4amliSHZ5eGNwQk13QUFBSFFta1JjQUFBQ2NSNjVRSGczWE5wNWwwYnhqTWZ6WTdZWUFvSzY2dXhmR24vM3BtNFk0MjFqeURKb0JBQUNnYzRtOEFBQUE0QUp5aGZMKzVQV2NKZDYyNmZvWFkyRGJCa01BVURmMzlsOGJjeTg1WVlpejllZUxsVkV6QUFBQWRDNlJGd0FBQUV3c1BjMXJ6QXh2Kzh1MXZ6cDl5Z29BMU5yT3UyK05KUXNPRytKc0IvTEZ5bjR6QUFBQWREYVJGd0FBQUV3Z1Z5Z2ZDZGNqbmFWcjlzbDQ2cUdQR0FLQW1scCswNDN4aWV1T0dlSnNhV2plYndZQUFBQkVYZ0FBQUhBUnVVSjVLSGtkc3NUYnJsdHdPTDY2K3paREFGQXpBK3ZteEp4WnB3eHh0c0Y4c1hMRURBQUFBSWk4QUFBQVlITDZUWEMyYlRlK0ZGdHY3ek1FQURQMmxZYzJ4UHl1NDRZNDI2RjhzVEprQmdBQUFGSWlMd0FBQUppRVhLRjhNSG50dHNUWkhseC9LcnE3RnhvQ2dHbTdhMHRmTEx0eXhCRG42amNCQUFBQXZ5SHlBZ0FBZ01sTFQ5TTRhb2EzemIvMDlmajZmZGNaQW9CcFdYN1RqZEgvMFY4YTRseDc4c1hLUVRNQUFBRHdHeUl2QUFBQW1LUmNvVHdhVHRVNHg3THVrWGowL2syR0FHREtCdGJOaVRtelRobmliR2xRUG1nR0FBQUEza25rQlFBQUFGT1FLNVJMeVd1UEpjNjJjOFhMc1g3dEtrTUFNR2xmZVdoRHpPODZib2h6OWVlTGxWRXpBQUFBOEU0aUx3QUFBSmk2d2VRWk04UFovdnFPMzR2dTdvV0dBT0NpN3RyU0Y4dXVIREhFdWRKckdrdG1BQUFBNEhlSnZBQUFBR0NLWE50NGZ2TXZmVDIrZnQ5MWhnQmdRc3R2dWpINlAvcExRNXdyRGNnSHpRQUFBTUQ1aUx3QUFBQmdHbktGOHY3azlad2x6cmFzZXlRZXZYK1RJUUM0b0lGMWMyTE9yRk9HT0pkckdnRUFBTGdna1JjQUFBQk1YMys0dHZFY08xZThIRnR2N3pNRUFPZjR5a01iWW43WGNVT2M2N2w4c2JMZkRBQUFBRnlJeUFzQUFBQ215YldORi9iWTdiK083dTZGaGdEZ3QzYmVmV3NzdTNMRUVPY2E4KzhUQUFBQVhJeklDd0FBQUdiQXRZM24xelg3WkR6MTBFY01BY0JwNjNwWHhpZXVPMmFJODNOTkl3QUFBQmNsOGdJQUFJQ1o2dy9YTnA3anVnV0hZL2l4MncwQjBPSFNreDIzcm5ncjVzdzZaWXh6dWFZUkFBQ0FTUkY1QVFBQXdBeTV0dkhDTmwzL1lneHMyMkFJZ0E1MmIvKzFNYi9ydUNITzVacEdBQUFBSmsza0JRQUFBRFhnMnNZTCs4dTF2NHIxYTFjWkFxQURQYmhqUXl4WmNOZ1E1K2VhUmdBQUFDWk41QVVBQUFDMTB4K3ViVHhIMSt5VHNldVRjMDVmMXdWQTU5aThjWFdzWHp4aWlQTnpUU01BQUFCVEl2SUNBQUNBR25GdDQ0VXRtbmNzdm43ZmRZWUE2QkJwMkx0OStldUdPRC9YTkFJQUFEQmxJaThBQUFDb0lkYzJYdGl5N3BGNDlQNU5oZ0RvQUhzR3JvZzVzMDRaNHZ4YzB3Z0FBTUNVaWJ3QUFBQ2c5dnJEdFkzbnRYUEZ5N0gxOWo1REFMU3hKeDVlRi9PN2podmkvRnpUQ0FBQXdMU0l2QUFBQUtER1hOczRzY2R1LzNXc3ZIbXBJUURhME02N2I0MGxDdzRiNHZ4YzB3Z0FBTUMwaWJ3QUFBQ2dEbHpiZUdGZHMwL0dsKzc4ZytqdVhtZ01nRGF5cm5kbEZKZThZb2dMYzAwakFBQUEweWJ5QWdBQWdQcnBUNTZqWmpqWG9ubkg0dEUvN3pFRVFKdEl3OTNQcm5GVDhRVDJ1S1lSQUFDQW1SQjVBUUFBUUoyNHRuRml2ZGUrRkkvZXY4a1FBRzFnejhBVk1XZldLVU9jWHhwOEQ1b0JBQUNBbVJCNUFRQUFRQjNsQ3VWUzh0cGppZlBidWVMbEdOaTJ3UkFBTGV5Smg5ZkYvSzdqaHJndzF6UUNBQUF3WXlJdkFBQUFxTC9CNURsa2h2UDd5N1cvaXZWclZ4a0NvQVU5dUdORExGbHcyQkFYdGp0ZnJKVE1BQUFBd0V5SnZBQUFBS0RPWE5zNHNhN1pKMlBYSitkRWQvZENZd0Mwa00wYlY4ZjZ4U09HdUxCRCtXSmwwQXdBQUFEVWdzZ0xBQUFBR2lCWEtCOU1YcnN0Y1g2TDVoMkxweDc2aUNFQVdzUzYzcFd4ZmZucmhyaXdzUkI0QXdBQVVFTWlMd0FBQUdpUVhLRThtTHdPV09MOHJsdHdPSVlmdTkwUUFCbVhucnk0ZGNWYk1XZldLV05jMkdDK1dEbG9CZ0FBQUdwRjVBVUFBQUNOMVIvVjB6MDRqMDNYdnhnUERHdzBCRUNHZlhIN1ZURy82N2doTHV4QXZsZ1pNZ01BQUFDMUpQSUNBQUNBQnNvVnlrZkM5VTBUMnJYbVo3Ris3U3BEQUdUUUV3K3ZpNFZ6WHpQRWhhVWhkNThaQUFBQXFEV1JGd0FBQURSWXJsRGVuN3oyV2VMQzltNTdVK2dGa0RFNzc3NDFsaXc0YklpSjllZUxsVkV6QUFBQVVHc2lMd0FBQUdpT2dlUTVhb2J6NjVwOU1uWjljazUwZHk4MEJrQUdiTjY0T29wTFhqSEV4UGJraTVYOVpnQUFBS0FlUkY0QUFBRFFCTGxDT1QzbHczVk9FMWcwNzFnODlkQkhEQUhRWk90NlY4YjI1YThiWW1LSGttZlFEQUFBQU5TTHlBc0FBQUNhSkZjb0gweGV1eTF4WWRjdE9CelBQSDZiSVFDYUpEMVJjZXVLdDJMT3JGUEd1TEN4Y0UwakFBQUFkU2J5QWdBQWdDYktGY3FEeWV1QUpTNnM5OXFYNHRIN054a0NvQW4yREZ3Ujg3dU9HMkppZy9saTVhQVpBQUFBcUNlUkZ3QUFBRFJmZW0zam1Ca3ViT2VLbCtPQmdZMkdBR2lnSng1ZUovQzZ1T2Z5eGNxUUdRQUFBS2cza1JjQUFBQTBXYTVRVHE5MzZyZkV4SGF1K2tXc1g3dktFQUFOOE1oOUcyTEpnc09HbU5oUi8vME5BQUJBbzRpOEFBQUFJQU55aGZMKzVMWEhFaGZXTmZ0azdOMzJacXk4ZWFreEFPcG81OTIzeGkxWGp4amk0dnJ6eGNxb0dRQUFBR2dFa1JjQUFBQmtSSzVRSGtoZWh5eHhZV25vOWFVNy95QzZ1eGNhQTZBT05tOWNIY1VscnhqaTRuYm5pNVdTR1FBQUFHZ1VrUmNBQUFCa1MxL3lqSm5od2hiTk94YlBmdUVhUXdEVTJMcmVsYkY5K2V1R3VMZ0QrV0psMEF3QUFBQTBrc2dMQUFBQU1pUlhLQjlKWHYyV21GZ2FlajN6K0cyR0FLaVI5SVRFejY0Wml6bXpUaGxqWW1tSTNXY0dBQUFBR2sza0JRQUFBQm1USzVUM0o2ODlscGhZNzdVdnhmQmp0eHNDWUliU3dHdlB3QlVDcjhucHl4Y3JvMllBQUFDZzBVUmVBQUFBa0UyRHlYUElEQlBiZFAyTDhjREFSa01Bek1BWHQxOFY4N3VPRytMaWR1ZUxsWklaQUFBQWFBYVJGd0FBQUdSUXJsQk9Ud2xKcjRNYXM4YkVkcTM1bWRBTFlKcWVlSGhkTEp6N21pRXU3a0MrV0JrMEF3QUFBTTBpOGdJQUFJQ015aFhLUjVKWHZ5VXVidWVxWDhUNnRhc01BVEFGYWVDMVpNRmhRMXhjR2x6M21RRUFBSUJtRW5rQkFBQkFodVVLNWYzSmE0OGxKdFkxKzJUczNmYW0wQXRna25iZWZhdkFhL0w2OHNYS3FCa0FBQUJvSnBFWEFBQUFaRnl1VUI1SVhvY3NNYkhmaEY3ZDNRdU5BVENCTlBBcUxubkZFSk96STErc2xNd0FBQUJBczRtOEFBQUFvRFdrMTBTTm1XRmlhZWoxN0JldUVYb0JYTURtamFzRlhwUDNYTDVZR1RJREFBQUFXU0R5QWdBQWdCYVFLNVNQSks5K1MxemNvbm5IaEY0QTU3R3VkMlZzWC82NklTYm5xUC9lQlFBQUlFdEVYZ0FBQU5BaWNvWHkvdVMxMnhJWGw0WmVYNy92T2tNQW5KRUdYcDlkTXhaelpwMHl4c1dsSjJmMjVZdVZVVk1BQUFDUUZTSXZBQUFBYUNHNVFua3dlUjJ3eE1VdDZ4NkpaeDYvelJCQXgwdFBOdnl6UDMxVDREVjVBL2xpNWFBWkFBQUF5QktSRndBQUFMU2V2cWhlSThWRjlGNzdrdEFMNkdocDRMVm40SXFZZThrSlkwek92bnl4TW13R0FBQUFza2JrQlFBQUFDMG1WeWluMTBmMVdXSnkwdERyMGZzM0dRTG9PTDhKdk9aM0hUZkc1QnpLRnl2OVpnQUFBQ0NMUkY0QUFBRFFnbktGY25xTjFCWkxUTTdPRlMvSEF3TWJEUUYwRklIWGxJeUZnQm9BQUlBTUUza0JBQUJBaThvVnlzUEphNThsSm1mWG1wOEp2WUNPOGNURDZ3UmVVOU9YTDFhT21BRUFBSUNzRW5rQkFBQkFDOHNWeXYzSjY1QWxKa2ZvQlhTQ05QQmFzdUN3SVNadlI3NVlLWmtCQUFDQUxCTjVBUUFBUU9zclJQV2FLU1loRGIzV3IxMWxDS0F0Q2J5bWJGKytXQmt5QXdBQUFGa244Z0lBQUlBV2x5dVVSNk1hZWpGSmU3ZTlLZlFDMm83QWE4clNrekFIekFBQUFFQXJFSGtCQUFCQUc4Z1Z5Z2VUMXhaTFRFN1g3Sk5DTDZDdDdMejdWb0hYMUtRbllQYmxpNVZSVXdBQUFOQUtSRjRBQUFEUUpuS0Y4bkR5Mm1lSnlSRjZBZTBpRGJ5S1MxNHh4TlNrZ2RjUk13QUFBTkFxUkY0QUFBRFFSbktGY245VXI1OWlFb1JlUUtzVGVFM0xqbnl4VWpJREFBQUFyVVRrQlFBQUFPMm5rRHhIelRBNVFpK2dWUW04cG1WZnZsZ1pNZ01BQUFDdFJ1UUZBQUFBYlNaWEtJOG1yNzdrR2JQRzVLU2gxMS9mOFh2UjNiM1FHRUJMRUhoTnk2RjhzZEp2QmdBQUFGcVJ5QXNBQUFEYVVLNVFQcGk4Qml3eGVmTXZmVDJlL2NJMVFpOGc4d1JlMDVLR3p3VXpBQUFBMEtwRVhnQUFBTkNtY29YeWNQTGFiWW5KV3pUdm1OQUx5RFNCMTdTY0Ryenl4Y3FvS1FBQUFHaFZJaThBQUFCb1k3bENlVEI1N2JQRTVBbTlnS3dTZUUzYlFMNVlPV2dHQUFBQVdwbklDd0FBQU5wZmVtM2pJVE5NbnRBTHlCcUIxN1R0emhjcncyWUFBQUNnMVltOEFBQUFvTTNsQ3VYMGVxcENWSytyWXBLRVhrQldDTHltYlYrK1dCazBBd0FBQU8xQTVBVUFBQUFkUU9nMVBVSXZvTmtFWHRPV25tQTVZQVlBQUFEYWhjZ0xBQUFBT2tTdVVENFkvZ2Z2S1JONkFjMGk4SnEyTkdndTVJdVZVVk1BQUFEUUxrUmVBQUFBMEVGeWhmSnc4dHB0aWFrUmVnR05KdkNhTm9FWEFBQUFiVW5rQlFBQUFCMG1WeWdQSnE5OWxwZ2FvUmZRS0FLdkdlblBGeXNIelFBQUFFQzdFWGtCQUFCQUI4b1Z5djNKNjVBbHBrYm9CZFNid0d0R3R1U0xsZjFtQUFBQW9CMkp2QUFBQUtCekZVTG9OV1ZDTDZCZUJGNHpzaTlmckF5YkFRQUFnSFlsOGdJQUFJQU9sU3VVUjVOWGYvS01XV05xMHREclIxLzdRS3hmdThvWVFFMEl2R2JrdVh5eDBtOEdBQUFBMnBuSUN3QUFBRHBZcmxBK0dOVVR2WmlpcnRrblkrKzJONFZld0l3SnZHWWtQWkd5M3d3QUFBQzBPNUVYQUFBQWRMZ3pvZGNXUzB5ZDBBdVlLWUhYaktRblVSYnl4Y3FvS1FBQUFHaDNJaThBQUFBZ0RiMkdrOWNPUzB5ZDBBdVlMb0hYakFpOEFBQUE2Q2dpTHdBQUFPQzBYS0U4bEx6MldXTHFoRjdBVkQzeDhEcUIxOHowNVl1VmcyWUFBQUNnVTRpOEFBQUFnTi9LRmNyOUlmU2FsdCtFWGx0djd6TUdNS0UwOEZxeTRMQWhwbTlMdmxncG1RRUFBSUJPSXZJQ0FBQUFmdGRBOGh3eXc5U2xvZGZmYkQwV0R3eHNOQVp3WGdLdkdkdVJMMWFHelFBQUFFQ25FWGtCQUFBQVo4a1Z5cVBKcXhCQ3IybmJ0ZVpuUWkvZ0hBS3ZHZHVYTDFhR3pBQUFBRUFuRW5rQkFBQUE1emdUZXFYM0RvNVpZM3FFWHNCdmRIY3ZqTC8vMmdxQjE4eWtnVmUvR1FBQUFPaFVJaThBQUFEZ3ZIS0Y4cEdvbnVnbDlKcW1OUFFhZnV4MlEwQUhTd092UFFOWHhQeXU0OGFZdnZSa3lRRXpBQUFBME1sRVhnQUFBTUFGNVFybGcxRTkwWXRwMm5UOWkvSE00N2NaQWpxUXdLc20wc0Nya0M5V1JrMEJBQUJBSnhONUFRQUFBQlBLRmNxbDVMWEZFdFBYZSsxTFFpL29NT3Q2VjhZMzduMi93R3RtMHBNa0JWNEFBQUFRSWk4QUFBQmdFbktGOG5BSXZXWWtEYjMrLzZjK2NmcGtINkM5cFlIWFo5ZU14ZHhMVGhoaitnUmVBQUFBOEE0aUx3QUFBR0JTem9SZWV5d3hmZGN0T0J6UGZ1RWFvUmUwc2MwYlY1OE92T2JNT21XTTZmdE40SFhRRkFBQUFGQWw4Z0lBQUFBbUxWY29EeVN2ZlphWXZrWHpqcDBPdlZiZXZOUVkwR1oyM24xcmZPWmp4d1JlTTljbjhBSUFBSUN6aWJ3QUFBQ0FLY2tWeXYwaDlKcVJOUFI2K3Q2STlXdFhHUVBhUkJwNEZaZThZb2laMjVJdlZrcG1BQUFBZ0xPSnZBQUFBSUFwT3hONkhiREU5SFhOUGhsN3Q3MFpXMi92TXdhMHVDY2VYaWZ3cW8wMDhCbzJBd0FBQUp4TDVBVUFBQUJNVjFvbkhUTEQ5S1doMTk5c1BSWVBER3cwQnJTb05QQmFzdUN3SVdaTzRBVUFBQUFURUhrQkFBQUEwNUlybEVlVFZ5R0VYak8yYTgzUDR0SDdOeGtDV2toMzk4TDQrNit0RUhqVnhqNkJGd0FBQUV4TTVBVUFBQUJNbTlDcmRuYXVlRG1lZWZ3MlEwQUxTQU92UFFOWHhQeXU0OGFZdVRUdzZqY0RBQUFBVEV6a0JRQUFBTXpJTzBLdk1Xdk1UTysxTDhVTDMvems2WUFFeUtaMXZTdmoyL2YvUjRGWGJRaThBQUFBWUpKRVhnQUFBTUNNQ2IxcVoxbjNTRHo3aFd1RVhwQkJtemV1anMrdUdZczVzMDRaWStZRVhnQUFBREFGSWk4QUFBQ2dKbktGOHNFUWV0WEVvbm5ING45K3FUdldyMTFsRE1pSW5YZmZHcC81MkRHQlYyMGNFSGdCQUFEQTFJaThBQUFBZ0pvUmV0WE8vRXRmajczYjNveXR0L2NaQTVyc0t3OXRpT0tTVnd4Ukc0ZVN4LzlqQXdBQWdDa1NlUUVBQUFBMUpmU3FuYTdaSitOdnRoNkxCd1kyR2dPYUlMMDI5WW1IMThXeUswZU1VUnRwNEZYSUZ5dWpwZ0FBQUlDcEVYa0JBQUFBTlNmMHFxMWRhMzRXdzQvZGJnaG9vRFR3MmpOd1JTeFpjTmdZdFNId0FnQUFnQmtRZVFFQUFBQjE4WTdRaXhyWWRQMkw4Y3pqdDUwT1Q0RDZXdGU3TXI1eDcvdGpmdGR4WTlTR3dBc0FBQUJtU09RRkFBQUExTTJaMEd1TEpXcWo5OXFYNHRrdlhKT1owR3ZzWC83VmwwTGJ1V3RMWDN4MnpWak12ZVNFTVdwRDRBVUFBQUExSVBJQ0FBQUE2aXBYS0ErSDBLdG1GczA3RmovNjJnZGkvZHBWVGY4c3p6ejcvZGkwWjE3OCtOVS85c1hRRmg3Y3NTSHVLaHlOT2JOT0dhTTJCRjRBQUFCUUl5SXZBQUFBb082RVhyWFZOZnRrN04zMlpqd3dzTEhwbnlVTnZmN1Q1dS9GWC96ZEg4ZXhOOTdyeTZGbFBmSHd1bGkvZU1RUXRTUHdBZ0FBZ0JvU2VRRUFBQUFOSWZTcXJUVDAyclhtWi9IVjNiZGw0dlBzMmZ1OVdMN3psZGo3d3cvRmlWUHY5Z1hSTXRMclQvLytheXRpeVlMRHhxZ2RnUmNBQUFEVW1NZ0xBQUFBYUJpaFYrMXR1L0dsZU9ieDIwNkhLczAyTXZKeWZQcWg3OFNtdjQ3NGg1ZXY4dVdRZWV0NlY4WTM3bjEvek84NmJvemFFWGdCQUFCQUhZaThBQUFBZ0lZU2V0VmU3N1V2eGJOZnVDWlczcncwRTUvbmhSOGNpSldmK3J1NCs4a0ZybkFrcys3YTBoZWZYVE1XY3k4NVlZemFFWGdCQUFCQW5ZaThBQUFBZ0lZVGV0WGVvbm5INHVsN0k5YXZYWldaei9Ua3QvYkhGYjB2eEpkZldPUUtSekxsa2ZzMnhGMkZvekZuMWlsajFJN0FDd0FBQU9wSTVBVUFBQUEwaGRDcjlycG1uNHluLy95ZjQ0R0JqWm42WEovNzR0Tnh3L2JYNHZtZmZzaVhSRk9sMTVvKzlWaGYzSEwxaURGcVMrQUZBQUFBZFNieUFnQUFBSnBHNkZVZnU5YjhMSjU1L0xaTWZhYVJrWmRqL2FlL0U1djJ6SXNmdi9ySHZpUWFidmxOTjhhZWdTdml3Kzg3YW96YUVuZ0JBQUJBQTRpOEFBQUFnS1lTZXRWSDc3VXZ4VS8vZTkvcGs0dXk1SmxudngvL2FmUDM0dlA3RjhheE45N3JpNkloTm05Y0hYOTEyNy9GL0s3anhxZ3RnUmNBQUFBMGlNZ0xBQUFBYUxwM2hGNWoxcWlkUmZPT3hZKys5b0ZZdjNaVjVqN2J3MFBmamVVN1g0bTlQM1NGSS9YMXlIMGI0ak1mT3haelpwMHlSbTBKdkFBQUFLQ0JSRjRBQUFCQUpwd0p2UW9oOUtxcHJ0a240K2svLytkNFlHQmo1ajViZW9YanB4LzZUbno4NFhlN3dwR2FTMCt4ZStxeHZyamw2aEZqMUo3QUN3QUFBQnJzOTk1NjZ5MHJBQUFBQUpreFh1cFpuTHhLeVhPcE5XcnIrWjllRlo5N3ZIdzZyc3Fpclp2NzRzRU5iOGI4OTd6ZWx2dW5JVnQ2VlNYMXQ2NTNaV3hkOFpickdldEQ0QVVBQUFCTjRDUXZBQUFBSUZOeWhmTEJjS0pYWGZSZSsxSTgrNFZyWXVYTlN6UDUrWjc4MXY2NG92ZUYwMWM0bmpqMWJsOFkwM0xYbHI3NDdKb3hnVmQ5Q0x3QUFBQ2dTVVJlQUFBQVFPWUl2ZXBuMGJ4ajhmUzlFUVBiTm1UMk02WlhPTjZ3L2JWNC9xY2Y4b1V4SlY5NWFFUGNWVGdhYzJhZE1rYnRIUWlCRndBQUFEU042eG9CQUFDQXpISjFZMzN0L2VGVjhlbGQzOG4wWjB5dmNQeXZLM0p4L1lKWFduNXYxelhXVDNmM3d2amk5cXRpNGR6WGpGRWYrL0xGU3I4WkFBQUFvSGxFWGdBQUFFQ21uUW05OWlmUEI2MVJlejk1OVlvb2Z2NGZZMlRrNVV4L3pnY0hOc2FPai8waXVtYi9TOHR1TGZLcWo4MGJWOGYyNWE4N3ZhdCtCRjRBQUFDUUFhNXJCQUFBQURMdHpOV05hZWgxeUJxMWQ5MkN3L0dqcjMwZzFxOWRsZW5QK2ZEUWQwOWY0ZmowajEzaHlOc2V1VzlEZk9aanh3UmU5U1B3QWdBQWdJd1FlUUVBQUFDWmx5dVVSNU5YSVlSZWRkRTErMlE4L2VmL0hJL2V2eW5UbnpNOWJhei9MNzRUSDMvNDNhZFB4YUp6cGRjelB2VllYOXh5OVlneDZrZmdCUUFBQUJuaXVrWUFBQUNnWll5WGVpNUxYcVhreVZ1alB2NWhwRHUyLzdlZlpQNzZ4dFE5MnpiRXdDMXZ4UHozdk40UzI3cXVzVGJXOWE2TVAvdlROMlB1SlNlTVVUOWI4c1hLc0JrQUFBQWdPNXprQlFBQUFMU01kNXpvdGM4YTliR3NleVQrNTVlNk0zOTlZMnJQM3UvRkZiMHZ4TjRmZmloT25IcTNMNjhEUExoalF6eDA2NjhFWHZVbDhBSUFBSUFNY3BJWEFBQUEwSkxHU3ozRHllc09TOVRQbC8vSHd2amNGNTl1aWMrNjh1YWw4YWsxZnhTOTEvNVRaaitqazd5bUw3MmU4YUU3cjRrUHYrK29NZXBMNEFVQUFBQVpKZklDQUFBQVdwYlFxLzUrOHVvVlVmejhQN2JFOVkycHJadjc0cDdlaUEvTmV6VnpuMDNrTlQyYk42Nk83Y3RmanptelRobWpmc2FTcHk5ZnJKUk1BUUFBQU5ua3VrWUFBQUNnWmVVSzVmN2t0Y01TOVhQZGdzUHhvNjk5SUxiZTN0Y1NuL2ZKYisyUEQyL1lIMTkrWVpFckhOdkFJL2R0aU05ODdKakFxNzdTd0tzZzhBSUFBSUJzRTNrQkFBQUFMUzFYS0E4bHJ5MldxSit1MlNmamI3WWVpNi91dnExbFBuTjZ6ZVFOMjErTHAzLzhJVjlnQzFwKzA0M3h2YS9jRXJkY1BXS00ra3J2djB3RHI0T21BQUFBZ0d4elhTTUFBQURRRnNaTFBmM0pLdzIrTHJWRy9ieDRmSDdjKzQxZnh3cy9PTkF5bjNuOTJsV3hZMTFYWEwvZ2xhWitEdGMxVHM1ZFcvcWkvNk8vZEhwWC9SMkthdUExYWdvQUFBRElQcEVYQUFBQTBEYkdTejJMazFjcGhGNTFkZUxVdStLdm52M0RHTnJiV3NIU1BkczJ4TUF0YjhUODk3emVsTCsveUd0aTNkMExZL3VteGJIc1NxZDNOWURBQ3dBQUFGcU15QXNBQUFCb0swS3Z4bm4rcDFmRjV4NHZ4OGpJeXkzem1kT1E2SjVpVDJ5NjRlZlJOZnRmR3ZyM0ZubGQyTHJlbGJGMXhWc3h2K3U0TWVwdlgvSU1DTHdBQUFDZ3RZaThBQUFBZ0xZelh1cTVMS3FoVjk0YTlYVnM3TDN4OERPejQ4bHY3MitwejczeTVxV3g4Nzk4SUpZdGZLbGhmMCtSMS9rOXVHTkRyRi9zOUs0RzJaY3ZWdnJOQUFBQUFLMUg1QVVBQUFDMEphRlhZKzM5NFZYeDZWM2ZhYm5QdlhWelh6eTQ0YzJHWE9FbzhqcmI4cHR1akRzLzNoVUw1NzVtak1iWWtTOVdoc3dBQUFBQXJVbmtCUUFBQUxTMThWTFBjUEs2d3hMMTkrTHgrWEh2TjM0ZEwvemdRTXQ5OWtmdjN4U2ZLaHlyNnhXT0lxKzMzYldsTC9vLytzdVlNK3VVTVJwalM3NVlHVFlEQUFBQXRLN2ZOd0VBQUFEUXpuS0Zjbi95Mm1PSitsczA3MWc4Zlc4MW1HbzFuL3ZpMDNIRDl0ZmkrWjkreUJkWlI5M2RDK09weC9yaXJzSlJnVmRqakNYUFJ3UmVBQUFBMFBxYzVBVUFBQUIwaFBGU1QzL3krbHRMTk1aUFhyMGlpcC8veHhnWmVibmxQdnY2dGF0aXg3cXV1SDdCS3pYOTYzYjZTVjZiTjY2T0xZVTNZdTRsSi93RDBoaEhrNmN2WDZ3Y05BVUFBQUMwUHBFWEFBQUEwREhHU3oxOXlXczRlUzYxUnYyZE9QV3UrS3RuL3pDRzlyWm0yUFRnd01iWWV0T3ZZLzU3WHEvSlg2OVRJNi8wOUs3dG14YkhzaXRIL0VQUk9JZVNwNUF2VmtaTkFRQUFBTzFCNUFVQUFBQjBsUEZTeitMa1ZRcWhWOFA4dzBoM2JQOXZQMm5KVTczU1FPbWVZazlzdS9HZlp2elg2c1RJeStsZFRmRmM4dlFMdkFBQUFLQzlpTHdBQUFDQWpqTmU2cmtzcXFGWDNocU4wZXFuZXEyOGVXazhkTWNmenVnS3gwNkx2TDd5MEFhbmR6WGV2bnl4MG04R0FBQUFhRDhpTHdBQUFLQWpuUW05aHBObmpUVWFwNVZQOVVwdDNkd1hEMjU0YzFwWE9IWks1TFd1ZDJWc1hmRld6Tzg2N2hlK3NiYmtpNVZoTXdBQUFFQjdFbmtCQUFBQUhXMjgxRE9jdk82d1JPTzArcWxlcWE5Ky9yYllkTVBQbzJ2MnYwejZ6K21FeU91Uit6YkVMVmM3dmF2QnhxSjZQZU4rVXdBQUFFRDdFbmtCQUFBQUhXKzgxTk9mdlA3V0VvM1Y2cWQ2ZFhjdmpFZnY2WW5lYS85cFVuOThPMGRlbXpldWppMkZOMkx1SlNmOFlqZlcwZVRweXhjckIwMEJBQUFBN1Uza0JRQUFBQkNuUTY5QzhrcFB3cm5VR28zVERxZDZwVmM0L3RjVnViaCt3U3NUL25IdEdIbWxvZHYyVFl0ajJaVk83MnFDUThsVHlCY3JvNllBQUFDQTlpZnlBZ0FBQURoanZOU3pPSGtOSjAvZUdvM1Y2cWQ2cFI0YzJCZzdQdmFMQzE3aDJHNlJsOU83bW1wZjhnd0l2QUFBQUtCemlMd0FBQUFBM21HODFITlpWRS8wV21xTnhrcFA5ZnJtZ2ZueHVTOCszYkkvUTNxeTFZUGJlbUxUOWVkZTRkZ3VrWmZUdTVwdWQ3NVlHVFFEQUFBQWRCYVJGd0FBQU1CNWpKZDZocFBYSFpab3ZKKzhla1hzZnVwL3hRcy9PTkN5UDhQS201ZkdRM2Y4NFZsWE9MWkQ1SFhYbHI3by8rZ3ZZODZzVTM1UkcyOHNlZnJ6eGNwK1V3QUFBRURuRVhrQkFBQUFYTUI0cWFjL2VmMnRKWnBqN3crdmlrL3YrazVML3d6M2JOc1FBN2U4RWZQZjgzcExSMTdMYjdveE5xK2FHeDkrMzFHL21NMlJEdCtYTDFZT21nSUFBQUE2azhnTEFBQUFZQUxqcFo1Q1ZLOXZ2TlFhamZmaThma3g5SHpFazk5dTdjT0x2dnI1MitLcTkvK2ZXUG1wdjJ1NXovN2dqZzJ4K2s5ZWRYcFg4eHhLbmtLK1dCazFCUUFBQUhRdWtSY0FBQURBUll5WGVpNlBhdWlWdDBaelBQM2pSZkh3TjM0VUl5TXZHNk5CMXZXdWpLMHIzb3I1WGNlTjBUejc4c1ZLdnhrQUFBQUFrUmNBQUFEQUpJeVhlaTVMWGtQSmM0YzFtdVBFcVhmRmw3Ly8vbmhrNkx2R3FLUHU3b1d4ZmRQaVdIYmxpREdhYTB1K1dCazJBd0FBQUpBU2VRRUFBQUJNd1hpcFp6QjU3YkpFOC96azFTdGk5MVAvSzE3NHdRRmoxTmhkVy9xaS82Ty9kRFZqYzQxRjlYckdnNllBQUFBQWZrUGtCUUFBQURCRjQ2V2V2dVExbkR5WFdxTjU5djd3cXRqenJiSXJIR3RnK1UwM3hwMGY3NHFGYzE4elJuTWRpbXJnTldvS0FBQUE0SjFFWGdBQUFBRFRNRjdxV1J6VjBDdHZqZVk1TnZiZTJQUC92anVHOW43UEdOT1FYczI0NWRiRmNjdlZybWJNZ0gzNVlxWGZEQUFBQU1ENWlMd0FBQUFBcG1tODFITlo4aHBLbmp1czBWeXVjSnk2OUdyR1Q5end2MlB1SlNlTTBYeGI4c1hLc0JrQUFBQ0FDeEY1QVFBQUFNelFlS2xuSUhsOXhSTE41d3JIaTF2WHV6SSt1V3lXcXhtejRXank5T1dMbFlPbUFBQUFBQ1lpOGdJQUFBQ29nZkZTVHlGNTdVK2VTNjNSWENkT3ZTdSsvUDMzeHlORDN6WEdPNlJYTTI3ZnREaVdYZWxxeG94SWo1MUxBNjlSVXdBQUFBQVhJL0lDQUFBQXFKRXoxemVXa2lkdmplWkxyM0I4OG4vOFd6ejU3ZjBkdjhXRE96YkU2ajk1TmViTU91VVhJeHYyNUl1VkFUTUFBQUFBa3lYeUFnQUFBS2l4OFZMUFVQSzZ4eExaOFB4UHI0cHZQdi96ZU9FSEJ6cnVaOSs4Y1hWcy9PaS94Znl1NDM0UnNtRXNlZnJ6eFlyeUVBQUFBSmdTa1JjQUFBQkFIWXlYZXZxVFZ4cDd1YjR4QTlJckhKLyswUi9Gbm0rVlkyVGs1YmIvZVpmZmRHUGMrZkd1V0RqM05WOStkaHlLNnZXTVIwd0JBQUFBVEpYSUN3QUFBS0JPeGtzOWk1UFhjTGkrTVRQUzJPdkwzMzkvUERMMDNiYjgrYnE3RjhiMlRZdGoyWlVqdnV4czJaYzhBL2xpWmRRVUFBQUF3SFNJdkFBQUFBRHFhTHpVYzFsVVQvUzZ3eHJaOGVMeCtUSDBmTVNUMzI2ZlcvTWV1VzlEL09lclhvMDVzMDc1Z3JNanZaNHhqYnVHVFFFQUFBRE1oTWdMQUFBQW9BRmMzNWhOUDNuMWl2anlzMi9FTTg5K3YyVi9ocDEzM3hxcjg4ZGo3aVVuZktIWmtsN1AySjh2Vmc2YUFnQUFBSmdwa1JjQUFBQkFnN2krTWJ1ZS8rbFY4YzNuZng0di9PQkF5M3ptelJ0WHg1YkNHK0t1YkhJOUl3QUFBRkJUSWk4QUFBQ0FCbko5WTdhbHNkZm5IaS9IeU1qTG1mMk1hZHpWZThOYnNYRHVhNzZ3N0hFOUl3QUFBRkFYSWk4QUFBQ0FKbkI5WTNhZE9QV3VlUHBIZnhSN3ZwV3QyR3Y1VFRmR25SL3ZFbmRsbCtzWkFRQUFnTG9SZVFFQUFBQTBpZXNic3kwcnNWY2FkOTE2MDN0anlZTER2cFRzY2owakFBQUFVRmNpTHdBQUFJQW1Pbk45NDJEeTNHT05iR3BXN0NYdWFnbnA5WXpwNlYzN1RRRUFBQURVazhnTEFBQUFJQVBHU3oxOVVUM1Z5L1dOR2RXbzJFdmMxVExTNnhuNzhzWEtFVk1BQUFBQTlTYnlBZ0FBQU1pSThWTFA1VkVOdlpaYUk3dnFGWHVKdTFySzdueXhNbWdHQUFBQW9GRkVYZ0FBQUFBWk0xN3FHVXhldXl5UmJiV0t2Y1JkTFNXOW5qRTl2YXRrQ2dBQUFLQ1JSRjRBQUFBQUdUUmU2bG1jdlBZbnp3ZXRrVzIvaWIzK24vL3Y1L0hDRHc1TStzL2J2SEYxOU43d1ZpeWMrNW9SVzhOenlkT2ZMMVpHVFFFQUFBQTBtc2dMQUFBQUlLUEdTejJYSmEraDVMbkRHcTNoK1o5ZUZkOThmdUxZNjY0dGZmR2ZQend1N21vZDZlbGRnL2xpWmNnVUFBQUFRTE9JdkFBQUFBQXlicnpVMDVlOGhwUG5VbXUwaG44WTZZNy9mdUROZVBMYiswLy81Kzd1aGRHNy9NT3hPbjg4NWw1eXdrQ3Q0MUJVcjJjOFlnb0FBQUNnbVVSZUFBQUFBQzFndk5SemVWUkRyNlhXYUIyL2VPTS9SdVhvdStQOS8rSG5NV2ZXS1lPMGx0MzVZbVhRREFBQUFFQVdpTHdBQUFBQVdzaDRxV2NnZVgzRkVxM2o1TCsrRlVkKzllK0dhQjFIazZjL1g2eVVUQUVBQUFCa3hlK2JBQUFBQUtCMTVBcmxvZVQxa2FoZUl3ZlUxcDdrV1N6d0FnQUFBTExHU1Y0QUFBQUFMV3E4MURPWXZIWlpJdHVjNU5VU3hxSjZldGQrVXdBQUFBQlo1Q1F2QUFBQWdCYVZLNVFIazlleXFGNHZCMHpQYzhsenVjQUxBQUFBeURJbmVRRUFBQUMwdVBGU3oyWEphekI1N3JGRzlqakpLN09jM2dVQUFBQzBESkVYQUFBQVFKc1lML1VVa3RkdzhuelFHdGtoOHNxazlQU3VOUEFhTlFVQUFBRFFDa1JlQUFBQUFHM0VxVjdaSS9MS2xQVDByc0Y4c1RKa0NnQUFBS0NWaUx3QUFBQUEycEJUdmJKRDVKVVpCNko2ZXRjUlV3QUFBQUN0UnVRRkFBQUEwS2FjNnBVTklxK21jM29YQUFBQTBQSkVYZ0FBQUFCdHpxbGV6U1h5YXFybm9ucDYxNmdwQUFBQWdGWW04Z0lBQUFEb0FFNzFhaDZSVjFPa3AzZWxjZGQrVXdBQUFBRHRRT1FGQUFBQTBFR2M2dFY0SXErR2Mzb1hBQUFBMEhaRVhnQUFBQUFkYUx6VU01aThkbG1pL2tSZURYTTBlUWFjM2dVQUFBQzBvOTgzQVFBQUFFRG55UlhLZzhuckk4bHp5QnEwZ1QzSnMxamdCUUFBQUxRckoza0JBQUFBZExqeFVzOUE4aHBNbmt1dFVYdE84cXFyOVBTdTlHckdraWtBQUFDQWRpYnlBZ0FBQUNBTnZTNVBYc1BKczlRYXRTWHlxcHZkK1dKbDBBd0FBQUJBSnhCNUFRQUFBUEJiNDZXZXZxakdYazcxcWhHUlY4MGRpT3JwWFVkTUFRQUFBSFFLa1JjQUFBQUFaeGt2OVZ3VzFlc2I3N0hHekltOGFtWXNlUWJ5eGNxd0tRQUFBSUJPSS9JQ0FBQUE0THpHU3oyRjVEV1VQSGxyVEovSXF5YjJSVFh3R2pVRkFBQUEwSWxFWGdBQUFBQk1hTHpVTXhEVms3MWM0VGdOSXE4Wk9SVFZ1S3RrQ2dBQUFLQ1RpYndBQUFBQXVLanhVcy9sVVQzVmE0MDFwa2JrTlMzcDFZeEQrV0psMEJRQUFBQUFJaThBQUFBQXB1RE1GWTdEeWZOQmEweU95R3ZLbm92cTZWMUhUQUVBQUFCUUpmSUNBQUFBWU1yR1N6MkR5U3U5eHRFVmpoY2g4cHEwbzhuVDcycEdBQUFBZ0hPSnZBQUFBQUNZRmxjNFRvN0k2NkpjelFnQUFBQndFU0l2QUFBQUFHYkVGWTRURTNsTnlOV01BQUFBQUpNZzhnSUFBQUNnSmx6aGVINGlyL055TlNNQUFBREFGSWk4QUFBQUFLaVo4VkxQWlZHOXd2RU9hMVNKdk02U1hzMDRtQzlXaGt3QkFBQUFNSGtpTHdBQUFBQnE3c3dWam9QSnM3VFR0eEI1L2RhK3FGN05PR29LQUFBQWdLa1JlUUVBQUFCUU4rT2xudjZvbnV6VnNWYzRpcnppUUZUanJvUCtpUUFBQUFDWUhwRVhBQUFBQUhWMTVnckhnZVRaMVlrL2Z3ZEhYa2VqR25mdDkwOEJBQUFBd015SXZBQUFBQUJvaVBGU3orVlJ2Y0x4ams3NnVUc3c4aHBMbnFGOHNUTG90eDRBQUFDZ05rUmVBQUFBQURUVWVLbW5FTlhZYTJrbi9Md2RGbm50aStycFhhTiswd0VBQUFCcVIrUUZBQUFBUUZPTWwzcjZveHA3ZmJDZGY4NE9pYndPSkU5L3ZsZzU0amNiQUFBQW9QWkVYZ0FBQUFBMDFYaXBaekI1RFNUUHBlMzQ4N1Y1NUhVb3FpZDNsZndtQXdBQUFOU1B5QXNBQUFDQXBoc3Y5VndXMWRCclY3djliRzBhZVIxTm5zRjhzVExzdHhjQUFBQ2cva1JlQUFBQUFHVEdlS25uOHFoZTRYaEh1L3hNYlJaNWpTWFBVTDVZR2ZUYkNnQUFBTkE0SWk4QUFBQUFNbWU4MUxNNGVRMGx6OUpXLzFuYUtQTGFIZFhBYTlSdktBQUFBRUJqaWJ3QUFBQUF5S3p4VWs4aHFpZDd0V3pzMVFhUjE3Nm9YczE0eEc4a0FBQUFRSE9JdkFBQUFBREl2UEZTVDM5VVk2OFB0dHBuYitISTY3bmtHUkIzQVFBQUFEU2Z5QXNBQUFDQWx0R0tzVmNMUmw0SG9ucHlWOGx2SEFBQUFFQTJpTHdBQUFBQWFEbmpwWjdCNURXUVBKZG0vYk8yVU9RbDdnSUFBQURJS0pFWEFBQUFBQzFwdk5SeldWUkRyMHpIWGkwUWVSMk42cldNKy8xV0FRQUFBR1NUeUFzQUFBQ0FscGIxMkN2RGtWY2FkNlVuZHczN0xRSUFBQURJTnBFWEFBQUFBRzBocTdGWEJpTXZjUmNBQUFCQWl4RjVBUUFBQU5CVzNoRjc3Y3JDNThsUTVDWHVBZ0FBQUdoUklpOEFBQUFBMnRKNHFlZnk1RFdZUEhjMDgzTmtJUElTZHdFQUFBQzBPSkVYQUFBQUFHM3RUT3lWbnV6VkgwMjR4ckdKa1plNEN3QUFBS0JOaUx3QUFBQUE2QWp2dU1ZeGZSb1dlelVoOGhKM0FRQUFBTFFaa1JjQUFBQUFIYVhSc1ZjREl5OXhGd0FBQUVDYkVua0JBQUFBMEpFYUZYczFJUElTZHdFQUFBQzBPWkVYQUFBQUFCMnQzckZYSFNPdkExR051MHErUlFBQUFJRDJKdklDQUFBQWdEUEdTejM5eVdzd2VUNVlxNzltSFNJdmNSY0FBQUJBaHhGNUFRQUFBTUR2cUdYc1ZjUElhMS95REl1N0FBQUFBRHFQeUFzQUFBQUFMbUM4MUZPSWF1eTFkTHAvalJwRVhtbmNsWjdjZGNRM0FnQUFBTkNaUkY0QUFBQUFjQkZuWXErQjVGa3oxVDkzbXBIWFdQSU1SZlhrcmlPK0FRQUFBSURPSnZJQ0FBQUFnRWthTC9WY0h0V1R2ZTZZN0o4enhjanJhTHdkZDQxYUhBQUFBSUNVeUFzQUFBQUFwbWk4MUhOWlZFLzJTcDlMSi9wakp4bDVIVXFlb1h5eE1teGRBQUFBQUg2WHlBc0FBQUFBcHVsTTdOVVgxZE85UG5pK1ArWWlrZGVCOU0vTkZ5c2xhd0lBQUFCd0lTSXZBQUFBQUtpQjhWSlBHbnVsSjNzdGZlZi8vVHlSMTFqeTdJOXEzSFhFY2dBQUFBQmNqTWdMQUFBQUFHcG92TlN6T0txeDF4M3BmMzVINUhVMGVZYWplaTNqcUtVQUFBQUFtQ3lSRndBQUFBRFVRWHFWNDcvKzIxdEQvLzUvNHBhanYvcjN2OGdYSzhOV0FRQUFBR0E2UkY0QUFBQUFBQUFBQUFBWjl2c21BQUFBQUFBQUFBQUF5QzZSRndBQUFBQUFBQUFBUUlhSnZBQUFBQUFBQUFBQUFESk01QVVBQUFBQUFBQUFBSkJoSWk4QUFBQUFBQUFBQUlBTUUza0JBQUFBQUFBQUFBQmttTWdMQUFBQUFBQUFBQUFndzBSZUFBQUFBQUFBQUFBQUdTYnlBZ0FBQUFBQUFBQUF5RENSRndBQUFBQUFBQUFBUUlhSnZBQUFBQUFBQUFBQUFESk01QVVBQUFEd2Y5bTcyK00wa3ZWdndNMnBReFhmckNjQ2N5S1Eva29BTmdMclJHQTJBbXNqTUk1Z3RSRVlSN0RhQ0R3a29KVWpXQnpCa2I5UnhRZWVidE9zV1ZtU2VkZThYRmRWMStCOWtlR2VZWHJRL0xnYkFBQUFBS0RFaEx3QUFBQUFBQUFBQUFCS1RNZ0xBQUFBQUFBQUFBQ2d4SVM4QUFBQUFBQUFBQUFBU2t6SUN3Q09xTlZxbmFrQ0FBQUFBQUFBQUpzUThnS0FJMm0xV3FPNHVWQUpBQUFBQUFBQUFEWWg1QVVBUjVBRFhxOVZBZ0FBQUFBQUFJQk4vVnNKQU9Cd1dxM1dTZHdVY1p5cUJnQUFBQUFBQUFEYjBNa0xBQTVFd0FzQUFBQUFBQUNBZlJEeUFvQURhTFZhWjNFekNRSmVBQUFBQUFBQUFPeEl5QXNBOXF6VmFsMkVSUWV2RjZvQkFBQUFBQUFBd0s2RXZBQmdqMXF0MW1YYy9CNEV2QUFBQUFBQUFBRFlrMzhyQVFEc1I2dlZHc1hOYTVVQUFBQUFBQUFBWUorRXZBQmdSNjFXNnlRc2xtYzhWUTBBQUFBQUFBQUE5czF5alFDd2cxYXJkUlkza3lEZ0JRQUFBQUFBQU1DQkNIa0J3SlphcmRabDNQd1p4d3ZWQUFBQUFBQUFBT0JRTE5jSUFCdkt5ek5leGZGYU5RQUFBQUFBQUFBNE5DRXZBTmhBWHA1eEZDelBDQUFBQUFBQUFNQ1JXSzRSQU5iVWFyVUdjVk1FQVM4QUFBQUFBQUFBamtnbkx3RDRnYnc4NHlpT1Y2b0JBQUFBQUFBQXdMRUplUUhBRS9MeWpOZHh2RlFOQUFBQUFBQUFBSjZENVJvQjRCR3RWbXNZTjM4R0FTOEFBQUFBQUFBQW5wRk9YZ0J3VDZ2VjZvYkY4b3c5MVFBQUFBQUFBQURndWVua0JRQXJXcTNXWmR6Y0JnRXZBQUFBQUFBQUFFcENKeThBQ0YvRFhTZGgwYjNybFdvQUFBQUFBQUFBVUNZNmVRSFFlSzFXNnlKdUprSEFDd0FBQUFBQUFJQVMwc2tMZ01iU3ZRc0FBQUFBQUFDQUt0REpDNEJHYXJWYWw2R0IzYnZpNis3YSt3QUFBQUFBQUFEVkl1UUZRS09ra0ZNY1JYejRheHd2R2xpQzI3dzhKUUFBQUFBQUFBQVZJZVFGUUdPMFdxMWgzUHdWUjYvQlpVakJ0dDlqTGE0Y0VRQUFBQUFBQUFEVklPUUZRTzIxV3ExK0hKUDQ4SzFxL08xTnJNbXQ1UnNCQUFBQUFBQUF5ay9JQzREYWFyVmFKM0dNNHNPUGNieFVrZStjaHNYeWpaZEtBUUFBQUFBQUFGQmVRbDRBMUZJT0xrM2llSzBhVDByTE4vNGE2MVhvNmdVQUFBQUFBQUJRVGtKZUFOUktYcHJ4Tmo3OE5Td0NUS3luRjNUMUFnQUFBQUFBQUNnbElTOEFhaUYxb1ZwWm12RlVSYmF5N09xVndsNTk1UUFBQUFBQUFBQW9CeUV2QUNxdDFXcWR4REdNRDFQM0xrc3o3a2NLeVgxTW9UbExPQUlBQUFBQUFBQThQeUV2QUNxcjFXb053aUxjOVRaWW12RVFVbWd1ZGZVYXBqQ2RjZ0FBQUFBQUFBQThEeUV2QUNvbkxTV1lsaFNNRDkvSDhWSkZEaXFGNTFLSWJwSTdwZ0VBQUFBQUFBQndaRUplQUZSR3E5VTZpNk9JRHorR3haS0NITS9Yc0Zlcy95UjNVQU1BQUFBQUFBRGdTSVM4QUNpOVZxdlZqV01VSC80WlIwOUZubFhxblBaK0dmYXlqQ01BQUFBQUFBREE0UWw1QVZCYUsrR3V2K0o0clNLbDhqWHNGZkl5anNKZUFBQUFBQUFBQUljajVBVkE2UWgzVmNyWFpSekRJdXgxbGZhZGtnQUFBQUFBQUFEc2w1QVhBS1dSdWtHbHJsRHg0VzBRN3FxYUZQWjZFOGRmS2FBWFIxOUpBQUFBQUFBQUFQWkR5QXVBWjdmU3VXc1NGbDJoWHFoS3BhV0Ezc2U0VDIvakdDZ0hBQUFBQUFBQXdHNkV2QUI0Tmc4c3l5amNWUytuY2J5UCsvak9VbzRBQUFBQUFBQUEyeFB5QXVEb0hnaDNVVytyU3prV3FidFhXcHBUV1FBQUFBQUFBQURXSStRRndORzBXcTErSE5kQnVLdkplbkc4ajJPU2duNXhuQ2tKQUFBQUFBQUF3Tk9FdkFBNHVOeTVxWWdQUDhieFNrVUlpKzVlS2VqM1p6dzJVdUJyYURsSEFBQUFBQUFBZ0ljSmVRRndFR2s1dmpndVU0QW5MRG8zOVZTRlI3eU00MjFZTE9kNG00OGJ5emtDQUFBQUFBQUFaRUplQU94VjZzWVV4MVY4T0luajE3QUk4TUM2VHZOeDg3KzB0R2Z1QWlmd0JRQUFBQUFBQURTYWtCY0FlOUZxdFM1U0tDYysvQ3VPTjJHeEhCL3NJaTN0bWJyQXJRYSt1c29DQUFBQUFBQUFOTTIvbFFDQWJlVU9TNE00TG9PT1hSeldxenpTY2ZjcGJrWnhYTS9uODRuU0FBQUFBQUFBQUhXbmt4Y0FHMnUxV3YwNFJ2SGgvNElsR1RtKzVaS09mOFhqOERZdER4ckhtYklBQUFBQUFBQUFkYVdURndCcjBiV0xranJONDAwOFJyL0ViVm95dEFpTExsOTN5Z01BQUFBQUFBRFVRV3MrbjZzQ0FJOVBGSzNXUlZpRXUxNnB4bDY4aTNQdjhCbjNaNU1tL25INEZ2aTZkZWdCQUFBQUFBQUFWYVdURndEZnlVdmZEZko0b1NKVVZDK1B0L2U2ZkJYeitYeWlQQUFBQUFBQUFFQlZDSGtCOEZXcjFlckdUZXJhWlRsRzZpaUZGVi9ua1k3M3orR2ZvUzlMT3dJQUFBQUFBQUNsSmVRRjBHQ3RWdXNrZk92WWRhb2lORWdLTXI3Skk3MFhQb1VjK0FwQ1h3QUFBQUFBQUVESkNIa0JORXdPZGwzazhVcEY0S3ZUUElTK0FBQUFBQUFBZ05JUjhnSm9nSldsR05Qb3FRajgwRU9ocjl2d0xmUTFVU0lBQUFBQUFBRGdXSVM4QUdxcTFXcWR4VTAvV0lvUjltRVorbnFkMzE5ZndpTHc5VFg0TlovUEN5VUNBQUFBQUFBQURxVTFuODlWQWFBdUovVldLM1hxNm9kRng2NlhLbEpLNytMY08zekdZOFRFZnpqTEpSNVQ4T3MyN3VkYkpRRUFBQUFBQUFEMlFTY3ZnQXJMeXpEMnd5TFVsYll2VkFXZXpiTGIxL0w5bWJwOUxaZDRYQWEvSnNvRUFBQUFBQUFBYkVySUM2QkNXcTNXU1ZpRXVkTFFyUXZLTFlVdWUza3MzOFAzZzE4VEhiOEFBQUFBQUFDQUh4SHlBaWk1VnF2VkQ5K0NYVDBWZ1VwN0tQaVZOdU9RUTE5aDBmR3JVQ29BQUFBQUFBQmdTY2dMb0dTRXVxQ1JIZ3ArZlE1NW1jZWc2eGNBQUFBQUFBQTBtcEFYd0ROcXRWcmR1RGtMaTBCWDJncDFBVXN2ODNpMWNzNUltMDhoZC96SzQwN25Md0FBQUFBQUFLZzNJUytBSThwZHVsWkRYUzlWQmRqUWFSNzN3MStwODlja2pxdjVmSDZ0VEFBQUFBQUFBRkFmUWw0QUI3SVM2RnFPVTFVQkRtalorYXVJUThnTEFBQUFBQUFBYWtUSUMyQkhLMHN1cmc0ZHVnQUFBQUFBQUFDQXZSRHlBbGhUcTlWSzRhMXVXSVM0dW5uMFZBWUFBQUFBQUFBQU9DUWhMNEFWZVluRkpHMVB3cmRBbDg1Y0FBQUFBQUFBQU1DekVQSUNHaU12cTVqR01yeVY5UE5XUnk0QUFBQUFBQUFBb0pTRXZJQkthN1ZhRHdXMlZoK25mMytxVWdBQUFBQUFBQUJBVlFsNUFWV1hRbHdmbFFIVzlpV09GOG9BQUFBQUFBQUFVQjMvVWdLZ3l1YnorVVFWWUNQZE9NYktBQUFBQUFBQUFGQWRRbDVBSFh4UkFsalBmRDYvaTZNZkgvN2l2UU1BQUFBQUFBQlFEVUplUUIzY0tnRnNaajZmWDhYTldSeC9xQVlBQUFBQUFBQkF1UWw1QVVCRHBlVk80N2lJRDMrSzQ3T0tBQUFBQUFBQUFKU1RrQmRRQjRVU3dQYm04M2tSUnpjK2ZCY3M0UWdBQUFBQUFBQlFPa0plQU1CWDgvbDhHRGZkT0Q2b0JnQUFBQUFBQUVCNUNIa0JkWENyQkxBZjgvbjhMbzVCZlBpZklPd0ZBQUFBQUFBQVVBcENYa0FkM0NrQjdOZDhQcDhJZXdFQUFBQUFBQUNVZzVBWFVBY1RKWURERVBZQ0FBQUFBQUFBZUg1Q1hrRGxwUkNLS3NEaDMyZkNYZ0FBQUFBQUFBRFBROGdMcUlzdlNnQ0h0eEwyK245eHZQUGVBd0FBQUFBQUFEZzhJUytnTG02VkFJNW5QcC9meFRHTUQ3dHgvQnpIWjFVQkFBQUFBQUFBT0F3aEx3Qmdhem5zTllxakcvLzRVN0NVSXdBQUFBQUFBTURlQ1hrQmRWRW9BVHl2K1h4ZTVLVWMveE1XU3pucTdnVUFRRzNOeHVkZFZRQUFBQURnV1A2dEJBREFQczNuODBuY0ROTm90VnI5dUIzRThWcGxBQUNvb3RuNFBGM1Rkdk5JajAvaU9JMWpuUDhNQUFBQUFBY241QVhVeGEwU1FQbWs3bDV4VTdSYXJjdTR2WWdqYlU5VkJnQ0FNcG1OejFOdzZ5eVA5TGdmRnFHdWw2b0RBQUFBUUJrSWVRRjFjYWNFVUY3eitUeTlSMGRwdEZxdGJsZ0V2Z1pCNEFzQWdDUEtTeXltY2JheVRlT0Y2Z0FBQUFCUVprSmVRRjFNbEFDcUlTL25lSlZHcTlWS045UUdZUkg2MGlVQkFJQzlXQWx6OWNPM3BSWjdLZ01BQUFCQVZRbDVBYldRUWlPdFZrc2htdU56V0N6N2w0WWJOZFYrNzk0dTkyVU9mUFdERGw4QUFLeHBOajYvMzVHcjYxb1NBQUFBZ0RvUzhnTHE1RXV3eEVZVDl2SFZmRDRmcGorMFdxMUxKYW1QSFBoSzQycGxTY2QrSEs5VUJ3Q2cyV2JqODNSZDJBM2Z1bk9kQkdFdUFBQUFBQnBFeUF1b2t4UU8wZFdwbnI2R3U4SWk0SFduSFBWM2IwbkhkQU92SDc2RnZpenJDQUJRUTdQeGVicnVXM2JrV2w0RGRsMy9BUUFBQUlDUUZ3RGxKdHhGeVB2K09vK3dzcXhqR3JwOEFRQlV6R3g4M2czLzdNaTFESGJwekF3QUFBQUFqeER5QXVxa0NEcDUxY1huT0lieitYeWtGTnkzdXF4aituT3IxZXFIYjZFdjV3QUFnSktZamMvdmQrVHF1bDREQUFBQWdPMEllUUZRSm4rRVJkZXVRaWxZVno1ZS9qNW1oTDRBQUk0cmg3bTY0VnRIcnZUNFZHVUFBQUFBWUgrRXZJQTZ1VldDU2twZHUwWnB6T2Z6aVhLd3EwZENYOHNsSHRQMnBTb0JBT3pIYkh5ZXJyRStxZ1FBQUFBQUhKYVFGMUFuZDBwUUdWL2l1QTZMWUZlaEhCelNTdWhydWJ4ak4zenJNdEhQMnhjcUJRQUFBQUFBQUpTVmtCZFFKeE1sS0wyMEhHTUtkMTNQNTNPaFBKNUY3aGczeWNmaVY0SmZBQUFBQUFBQVFKa0plUUcxa1lJYnJWWkxJY3BIc0l0S25EL0M5OEd2ay9BdDlOWE5vNmRhQUFBQUFBQUF3TEVKZVFGMWs1WUIxSDNuK1FsMlVYbjUyQzN5K0Z2dStwVkdQNDVsRUN6OSthV3FBUUFBQUFBQUFJY2c1QVhVelczUWFlYzVwSERkZFI2RllCZDF0dEwxcTdqLzcxcXRWajgvVE50bEFDeHRUMVVPQUFBQUFBQUEySmFRRndEYitoUVdJWmZSZkQ2L1ZRNzRHZ0FyOHNQaS9yOWJXZjV4dVUzNmVkc05Pb0VCQUFBQUFBQUFqeER5QXVxbUNEcDVIY3F5VzFlcWNaRzdHUUZyV2xuK01lVDMwb05XdW9GMTg3ai9XR2N3QUFBQUFBQUFhQmdoTHdDZU1nN2ZsbURVclF1T1lLVWIyRnBhcmRheU85alNSQlVCQUFBQUFBQ2dYb1M4Z0xvUlJOcE5DblVWWVJIcUtwUUR5azhBRXdBQUFBQUFBT3BQeUF1b216c2wyTWpmb2E0NGJ2TnljZ0FBQUFBQUFBQkFpUWg1QVhVelVZSW42ZFFGQUFBQUFBQUFBQlVqNUFYVXludytuN1JhTFlWWStCd1d5MWNXWVJIcXNxUWJBQUFBQUFBQUFGU1FrQmRRUjEvaWVOSEExNTI2ZEMxRFhXbnB4WWxEQVFBQUFBQUFBQUNxVDhnTHFLTVVkT3JWL0RWK3lxL3phNmhMbHk0QUFBQUFBQUFBcUM4aEw0RHlXeTY3dU5xbDYwNVpBQUFBQUFBQUFLQVpoTHlBT2lwQ2RUdDVDWFFCQUFBQWxFQzcwK25HVFJyOS9JL080ampKNDNTTEgva2xMSDduazl5dFBDN1NuMmZUcVU3dEFQQzhjLzVKbnU5WDUvMnd3OXgvMzNqbDhXMitIbGhlQzRSNExWRFlHd0E4UmNnTDRQbXNMcm1Zd2x3dTNnRUFBQUNlUWJ2VFNUZHkrMkZ4UTdjYkR2TUZ3aGYzZnU2cnZIMmJuMFBhcE44WFRjTEtGd0JuMDZrdkFBTEE3bk45TjN3TGI1K3N6UGt2ai9nMGVvODhYcjBXU0ZJWWJCa0l2ODNYQXhON0VRQWhMNkNPeXZhdHgrVzNOSXVRZjBrM244OTlNeE1BQUFEZ21lUWJ2UmRoY2FNM2pSY2xlV3FuZWFRQTJQS0diK3I4WGl5SG03d0FzTlk4bitiM3M1WHhva0l2WVJrQWU3WHltdEltaGI5V2crQ3VDUUFhUnNnTHFLUG4vSFpqdXNDZTVQSDFJdHR5aXdBQUFBRFBMM2ZyR29SRnVPdGxoWjU2ZXE2djgwaXZJM1g3S3VJWVdlSVJBTDdPamYzd0xkU1Z0aTlxK2xKN2ViekpyMXNRSEtCaGhMeUFPanJHUmV4cTYvemxjb3N1bmdFQUFBQktaS1ZqMTJXb1ZyRHJLY3R1WDIvaTYwc2Q1Sy9UbUUybjF4WFlGOTBmL0dlTldKNHkxbUs1VEJqVVdudy9GNnJBZ2M2anl6QlhHcThhWElyN1FmRFArYnFnS1B0MXdUUFBzUk9CT0tDcWhMeUEya2xocTFhcnRhOGZ0OXFaSzRXNUpwWmFCQUFBQUNpMzNORmpFUEpOenhwN2tWL2o2NVVidTFjbHZYR1o5c2ZiSC93M1A0VkZONUs2U3plZlAzcW4wZ0F0SldDUGMzc0tiUytYV242cElnOUtkVWxkdnQ3azVSMy9DTi9DNEUxWmRTWmRiL3o2Zy8vbVhSeERod3RRUlVKZVFGMmxiekd1MjQ0My9RSnNFbktJSzN3TGMwMlVFUUFBQUtBNjJwM09JQ3h1N3ZVYStQSlhiK3ltbTdwWEpldWlvM01WTk8rY2ZOS2dZQW1IT1lhV3dhNDBYcWpJeGw3bDhUNWZHNlN3MTZqbXIvbkViZ2ZxVE1nTHFLc1UxRnI5WmQ2WDhDM0VOY21QNytiemVhRlVBQUFBQU5XV2J3SmZCWjA5bHI3ZTFJMTFTVjNxaHlVSmUzWHRGbWljRk80c2xJRXQ1blRCcnNOZEc2VHJwV1huenpxdVhPTjZBNmcxSVMrZ3JrWmg4WXM5UVM0QUFBQ0Ftc3JMTWc1RE16dDNyU1BWNVdOSndsNm5kZ2NBajh6bjNiaTVESXRnbDhEMllhMHU5ZndwTE1KZW94cTl2cTVkRE5TWmtCZFFTL1A1ZktRS0FBQUFBUFdVbGdBTGl5LzR2VDd5WC8wNWZPc1VQOG4vck5qZy8rK0diemNmKzJHeHBOQXh3ay9Mc05lSHVMMDg5dkpwOGUrMVZDTTBVMWNKK01IOE1Bak5YV2E1RE5JMXlQdmMzU3VOVWJ4R21GVDhOYm5tQUdwTnlBc0FBQUFBZ01ySU40VFRqY2hETCtHVUFsMUZIR2twbzl0RGRzSEtJYWpsNklmREJiOVNLTzRpL24ycHE5ZlZFWGRiMzVFTGpkUlZBaDZZODlKeGtlYnl5MUN0NVJpLzVHdUNTUjUzK2MvSjNhWkxIK2JBK3RrRGMyWDZaOHQvZDZ6NnBML25iUm81RUQ2c1l0Z3IxOVFTbjBDdENYa0JBQUFBQUZCNitjYmRkVGhzdDQrMGJORW8vVDNIdkxtWmJ3emYzbnV0L2JCWXRpcHQ5N2wwVmJyNStXdjhPOUxQSGh6cGRmWWR3UUNObjhlN1liSEU4dXNLUE4xUGVWNytlK3k3QzJiK2VjWEtQeW9ldWZaWmhzQzdlWHZvcm1mTHBSeXJHUGJTeFF1b1BTRXZBQUFBQUFCS0xRZVNSdUV3M1JsU3g2N1UxZXE2TERjeTg0M2Y2enlXbmI0R2VleXJCdWttOFczODJXbjV4dEVCOTEyNlFmM0tVUXlOMUZjQzRqeVFqb05oS1BlU2pDblVWU3pIc1pjMS9zSDF3UEo1cmRaMDJmbHp1WDE1Z0wrK2ltRXZJUytnOW9TOEFBQUFBQUFvclhhbmt3Sllidzd3bzhkeFhNMm0wK3V5MXlCMytrckxXbDB1TzNDRi9RU25VbURzZmI0QmYzbWdtOW9YanVMdjNPWGo3eUhIWEo2cnJEN2xHbFZOTnh3bWFBRlZuYi9UM0RJTTVRMTMvUkVXWWVxaWFrc1RQdEFCZEJuMjZvZjlCNnVyRlBZUzhnSnFUOGdMQUFBQUFJRFN5UjJnaWpoTzkveWpVNEFrQlpxS0t0WWxoOUt1VjVhOVNpR3FYVU5CNlFidVdmeVpnM3pqZUorRXZMN2ZoNm5HL1RYZkIrbUc5VW4rWTM5bG0vWi9YUU5GbFgxL1ByRWZ1M21mTFMyWFlGdGE3dWVUQTV6em50T0pkM3dqNSs5K0tHKzRLd1ZzUjJIUnZmT3VMalZmQ1gxZDNWdnllUi9YQ0t2WENoYzVmSDlWMHZxdEcvSnliZ0lxUzhnTEFBQUFBSUJTeWNHV0ZHYmFaNGpsUzFoMG9MaXFRNDF5SjQxQnZwbDdtY2N1TjNKVHNLVElRYS9yUGUzSGJyQlU0Njc3ZVRWMFY5eXI3eklvbEc3aTkwTzl3a0YxMjQvcC9UcTU5NCt2MXpnUExzTWF5MzNkRGRVSzl6a21telYzcCtOekdCWmhvREpKeXpLUDBxaGF4NjR0enpmM2wzemVkd2ZRdDJIUldiU00xMVRybm5OMC9BSXFTOGdMQUFBQUFJRFN5QjFBMG8zSmZTNVpsenAzWE5TcGE4ZFNmazNEWldlTnNOdk45VlR6MytQUGVoZC83bkFQVDIvZ2lENzR2aS95V0FZc1VzMHZneVVmNjdCL2x3Ry80dDQ1Y2huNDZ1ZGhpVStlZTk1T3gyU2FNOTZVN0ttbHpwMnA0OVNvNGVlU1pRZlFrNVU1WXRld2FEcm4vQnAvWnZwWmd6SjBYOHpYandDMTl5OGxBQUFBQUFDZ0RGSVhxYmo1R1BZYldFaUJwWDRkQTE2cjB1dUxJOVh2UDJFUmF0dkYyN2d2Ump2dXkyV0hNWTUzREV4eU9LOGJ4MjhxVXV2M2VwSDJkVDYzcGZmYWYrUDRFQllkQzh0Mlh1L2FhN1dldDlONWZoTEtGZkJLYytCUDhiMXgxdlNBMXdQbmpoUjZTKy9Kbi9JNVkxY3BMUFl4SGdmWEpYaXY5KzFsb0FtRXZBQUFBQUFBZUhZNTRQVitqejh5aFIzK3U2ZU9WSldSZ3o3OXNBaDk3Qkw0ZUIzM1NaSERXdHZRVGVyNWpvRjBJLzl5RDhjQTFkbm4xeW5rbVFOZlA0ZmRnNTc3MUxXSGFqbG45K05JM2VaK0xkRzVmaG51NnBlaHMxVEp6eG5GU2pEOHR6M01GV2tweU51MGhPTXp2cXkrUFFzMGdaQVhBQUFBQUFEUDZrQUJyMzVlb3FpUjhtdnZ4dkhIRGorbUY4ZkdRUzlkdkVwMURQU0RvRmZUOXZzb0J6MVRwNTZ4aXJEbitmb2tMdytjdW02ZWx1UnBmUTZMVUxkdzErYm5pMGtPQmFmcmhYYzd6aGNwN0pjNmdhYXcxOWt6dkp5ZVBRbzBnWkFYQUFBQUFBRFA1b0FCcjl1bTF6WjNkTG9JdTNWMFNqZnhOdzE2NmVKVm5tTWd2UThHS3RISWZWK3NoTDArUCtOVDZkc2J0Wm12MDc1TTU1U3lMTTJZNXJXMEpITzN5YUh1UFY0dkRNTit3bDdwdXVIUDFOVnJoMjZnbXg2YkYvWWkwQlJDWGdBQUFBQUFQSXNEQkx3U0FhOTc4czN2MUZYajA1WS9JdDJ3bmF6VG1TUCtOOTI0ZWF2cXBkdi83MVNpc2ZzL2hiMjZqZ0YybUt0WHUzZTlMTW5UU2wwcXo1cTJKUE1SemhlcllhOFBPLzY0ZEMxUUhLbXJWOS9lQTVwQ3lBc0FBQUFBZ0tQTE4vMzJIZkQ2V2NEcllYbEpwbFR6YlcvYXBzNWM2OXlzSGFsMkthV0F4bWRsYVBRNVlCZzMvL2NNeDhHSjZsZCtyaTViOTY2ME5PTkZtdGZzb1lPZEwxTFlheEFmL2lmc3R1enIzMTI5RHZ5VWRmSUNHa1BJQ3dBQUFBQ0FvOG8zallzOS85amZadFBwU0hXZmxtL2EvcnpsLy81azBDdis4N1JNWTArVlM3bmY3K0ptcUJLTlB3NVNXQ2U5Zi84NDRsOTdwdktWbmF2VE9lUFBVSjd1WFNsc1pHbkc0NTR6Sm5uWjE3VHM4eTRCMGJmeGVMck4zVDRQY1UzNTB0NENta0xJQ3dBQUFBQ0FvMG5MUG9WRnQ2Y1hlL3l4bjJiVDZhWHFyaWVINFZKSG55OWIvTzhQQnIzeWpkdWg2cFordit2bTVUaElIWHBTMTV2ZlZJUEg1dWs0aWxDdXBYZC9TV0dqSEZqbCtPZU41YkxQdXl6N21ycDZwYURYdnJ0dTllMGhvRW1FdkFBQUFBQUFPS1pSV056bzI1Y1VWTEpNejRaeVI1OSsyQzcwazRKZW94ellXN29PK3czdWNiajNINFFjalAzNUNIK1ZUbDRWc3JJOFkxbTZNcVk1L3YvaThYcGw3eno3T2VOdVpkblhUMXYrbUhTZDhIczh6dmE1UHdkYi9EOWRleFNvS2lFdkFBQUFBQUNPSWkvbjkyclBQM2FRbGhOUzNjMnRMTjIyemMzYUZOUXJjc2VYVWRodmNJL0RHU2tCSytlQWREd2NPdWdsL0ZtZE9Yb1F5clU4WTVxYnVubXVva1RYRG5IczJ0WHJUZW9XZHk4c3ZzMHhlN2JsOVlmbEhZSEtFdklDQUFBQUFPRGc4bzI0WC9mOFk4ZDVDU0cybEplKzZvZnRnMTdwNXZ0cmxhek0vcDRFU3pieXoyTmlGSTdUMFl0eXo5R3BzOUw3RWoybER5bElaSG5HVXA4N2htRzNybDZwVzl6dC9lV2ZOelN3SjRDbUVmSUNBQUFBQU9DZ2NxZUdmWWV4MGhKT0E5WGQzWTVCTDkwd3FrY3drdnZuZ0ZIYy9ITEFPYUN2eXVXZG4zTTN4amNsZWxydjRqRnBmcS9HdVdPNTlQTnZXLzZJZEEyUk9ucHR1K3kyNWJxQnhoSHlBZ0FBQUFEZzBJWmgvMkdnSzhzMDdzK09RUytxeGRKblBIUU9TSjJjUHFoRWMrUUFkaEhLMVkzeDU5d2hpZ3BkUDhTUmx1UCtiMWdFOERlVmxuVDlQUzhYdXNueGV4RUV6WUVHRXZJQ0FBQUFBT0JnY2dlWGZYY0lTVGNScjFSM3YxYUNYcGJ6cXpjaEx4NDdCd3ppWm55QUg5MVYzZExOemN1QTEybUpudGJQdWFzYzFUeC9wQzZSYWVuRmJjUGk3K054T2R6Z3Z4K29PdEJFUWw0QUFBQUFBQnpTSWNKWWx6bVF4SjdsdXFidUdGOVVvN2I3V01pTHB4emkvZDlWMXZKb2R6b3BpRE1KNVFsNHBlTk53S3NlODBzNnJ2cGgrNjZBYi9QeW9UODZodE01NVpXS0EwMGs1QVVBQUFBQXdFRzBPNTIwZk0rK2J5Si9jU1A0c0hJSXFCOEV2ZXJNc3B3ODl2NWZCajJwNTd5Y0FsNUZXQ3lSVnhZWDV2VjZuVU55VjhCM1cvNkkxMnNFdlFZcURUVFZ2NVVBQUFBQTJOVnNmTjVmK1dPNmNYQ3k4dWVUL00rMmtXNHlQZFJ0b2xoNVBHbjNiaWIyQWtDNTVLV2doZ2Y0MFpacFBNYmNQcDNlNXBEZWU5V29KWjN3ZU9yOVg4VDMvMjloZjB2dG5xbHFLZWJsTWdhOFVnZXZ3dDZwNVhsa0dJKzV5WmJYRVNub3RWeEM5aUdYS2d3MGxaQVhBQURyZlRBZm4zZkR3KzMxdDcxeG4yN1lyLzVTK2JiZHUvRkxab0R5emdQOVBBL2NIeStQOE5jL3RBekQyM3ZQYi9ud2MxZ3NQWklVOStZY1lUQ0E0MG8zNEE1eEkxbkk2MWp6LzNRNnlrc2l2VldOMmtuWFJEMWw0QW5Ec09qb3RZL3IvUlBsZkY0bERuaU43SjNhWDBla2gzc0xlc1YvTmlqWmNReHdWRUplQUFCTi9JQTlQbDhOWnExMlcrbXYvR2RueC83QS9JTWI5Sk04N3RxOW0xdDdFZUJnNStLelBBZDA4N3h3OVBsZ1J5L0R0eHRSdlVmbW1yUTgwVjJlWTVhZHdvU05BZllvZC9FNlJKZUZQL0pTWWh6cjJtRFJpYU1mQklMcVpxSUUvT0M5ZjVmREZCLzM4T09Fdko1M1RoYnc0am5QSlNub2RidmxNWmlDWHNXOVkyV29xa0NUQ1hrQkFOVHh3L08zcmx2THNReHlwY2N2Sy9BUzFybEIveVY4Njh5U3RwTTgzS1FIMkd6TzZJZEZtS3NmbW5Qejl2U2hPU2JXWWptM0xFZnEvRlU0U2dDMmNxZ3VYaU9sZlJZWCtmT1d6aG5RcE04S2kyVWJ4M3Y0bkhDcW1zOGpoNjZMa3AyL2Z4UHdhdHk1NURZSHh2L2M0bjkvbnp0NmpYTHc5T1dlM2h0bjZYblpPMERWQ0hrQkFGVDVBL0tpMjBvM0xFSmN5eUJYVTI3UXYxaDVyYS91MVNWdDBpOGhKM2tVd1JKZEFLdHpSN3BSMnc4NmNqdzJ0L1R1elNtcDg5ZmY0Uy9CTDRDbkhiQ0wxNWZaZEhxdHdzOXcvYkRvNkpPdUh6NnFSbTI0c2MyNkJuSDhwUXlWblkrTFVLNkExNGM0cDF6YU80Mjhsa2hCcjUvRGRrczN2cy9kd1BaNTdPZ3dDRlNTa0JjQVFGVStDQzg2cmF3dW9lWEcvTk5XYjlLL3pUVzgzNkhsMXRLUFFFUG1rSFJUZGpsMDROamNhUjZ2Y3ozVFpwem5raUxQSnhObEF2amI0RUR6VGFHMHozZzlzZWpvODI3NStZckswd0diZGQvN2svamUvN0M4RnQ1Vy9CbmQ5TE5VOURoV0FsNWw2cUtXdmp3ajROWHM4MG5xeHBVZWJoUDBLb0xmWndBSWVRRUFsUElENzJLNXhYNVlCTHJTVmx2Ny9YaXFRMHNSOHMzNjU3cFJINS9MVmQ3blRYVFo5TUJkN3E1MDFkQ1hud0l5ZnRHNy8yTktzT3V3bHZQSm0xenZ6M2t1S1lJUWNWT2N4ZjFlS0lPNW5vZjM5NEYrcnZmY2MxOWZUS2ZEM05ITFoxUm9sbUhZTWVRVkZsOVluQ2psMFZ5VjdGeWR2bmg1a1RwRDJqV052NVpJUWE5MFB0ZzBOTzczR2dCQnlBc0FvQndmYmhmaGp2N0s4S0gxdUpZZFdwYjdJLzNpcVlnakxRVnp6TkJYT2c2YTJxRk5pL1JtTGJmSzRlYVRibGpjV0IrWVM0N3VaVmpjK0ZwMisxb05mUlU2ZmRYU0MrZHRjejNmYTNjNi9YeE9QSVJDaFVzaFhXZjhxUXlWSjJqQitwOHo5dFROaTZQTnhWY2wzRmNYT3JteGNrNFo1cUNYY3dyQWhvUzhBQUNlNDRQc1l1bkY1VWpCSGpmaXl5WHRqMWQ1cFAyMTdQUTEwb0VDS09tOE1naUxHNjRDSitYeFVPaHJHUjYrVmg2Z3hnWUhtKyttVTlmaVpianVpUHZCc28yMTJZOEt3U2FHWWJkQVJ2cjlWNkdNaHhYZjEya2VmbE95cC9VdUxmbHI3M0J2SGhyRTR6V2RGM1FIQmRpQWtCY0F3REUrdFA0ejFPVUdmUFVzTzMyOXlZR3ZVVmdFdm56ekdYak91U1YxeFVuTEpRM0Q0VHFtc0Q5cEg3M0pjOGxxeDhocjh3bFFNeGNIK3JsanBTM1JkY2lpQThmQU5RZzA2bjJmdW5tbGMvRzJ2OWZTMWZQQWNtRG1mY21lMWpqTkdmWU9qK2lIeFRLdXZnQU5zQ1loTHdDQUE3RDhZcTJsc05ldlliRzB4VWc1Z0dlWVk5TE5rY3M4ekMvVnROb3g4bjNjcDM4RWdTK2dCdHFkenNVQjU2YUpDcGZPSUk2UHlnQ05NdHpoZlMva2RkZzVPTlczS05uVFNsOXV1YkIzZU14c09yM0wxNCt1SndEV0pPUUZBTENQRDZUajgyNzRGdWc2NUkwTnlzTlNNY0J6ekRjcDJEVTB6OVRPTXZCMUZmZHhDbnNOMjcyYmliSUFGWFRJRzduT2kyVzdMcGxPaTNhbjh5SHN0bndiVUwzM2ZWcUdmSnN1Zm1jcWVGRFhKZnljT0VnaEhydUdOYzRybG9FR1dKT1FGd0RBdGg5QUYwc3dwcHNZYVh1cUlzM1M3dDBJZVFISG5IUFNmSE1WTElsVWQrbW16T3M0eHd5VUFxZ29JYS9tR1FaZmRJS21TWjlMZmxXRzhtaDNPdWxjM0N2WjAvb3dtMDZ2N1IzV2taZUJUdGNUZnNjTzhBTkNYZ0FBNjM3WVhDeVBkUkcrQmJ2OEVydTV4a29BSEdudTZZYkYwckE5MVRESEFKUlp1OU01Ty9CbnBJa3FsL0JhWlRxZHhIMmZBaCs2YjFUM3VzTjFKcHRLbjArMkNYbDFsZTRnODIrL2hPZmcxTzN0MHQ1aFErbDM3cmZCNzl3Qm52UXZKUUFBZUZ5NnVaNld4b29qZmNEOFh4enZ3Mkk1SlI4Mm0wMFhMK0FZYzlBd2J2NEticnlaWXdDcTRVSUpHaXVGdkw0b0F6VGtjOHBpK2IwUFcveXZ1aEx2V2J2VFNWOUlMV08zckV2TE5MTEZ1V1VTRmgxQ2o2V3Y2a0FWNmVRRkFIRC9BK1g0UEgwRGZSQVdOeW44QW9xSHVBRVBISG9lR2dYTEZEUlZvUVJBUmZXVm9LSFhMdFBwblc1ZTBEZ3BXUFJhR1o1ZCt0eFl0aStpL21HWlJuYTRwcmpLeXpiNnNodkFJNFM4QUFDQ1lCY2JLNVFBT05COE5BeHVrRGFkSURGUVZXN0dOVnNLZWFXbHVYUzloaVo4YnBsT3I5dWR6cGROMy9OcGFjSDQveFlxdUx0WXkwRllyRFpRSnVtWUdOZzc3Q2hkVC95cERBQVBFL0lDQUJwTHNJc3RmV24zYmliS0FPeDVUbG91cytFR2ViTjlOc2NBVmRUdWRNNVVvZUhYTXJwNVFSUHA1dlY4ODI0M0xNSzFaVE8wVENON3VLYTRqY2Y0TzljVUFBLzdseElBQUEyV3ZoSDBKZ2g0c1JrZFZvQzltbzNQKzNFekNRSmVtR09BNmhMeUlrbUJneS9LQUkxNnoyL3FSTm4yWWhUSzF6bnhjMXBxejY1aGorZVh6OG9BOEQwaEx3QUEyRXloQk1DK3pNYm5nN2o1R0N4dGhEa0dxTGF1RXBDN3Q3akJEODE1ejZjdktHd2F3aEFLM2xGZXByR01YeEFhMkR2cytacGlxQklBM3hQeUFnQ0F6ZWl5QXV6RmJIdytpcHYzS29FNUJxaUJmazMrRG5hbm14YzB5N1VTSEUrNzB6a0o1UXpUam1mVGFXRVBzVS94bUJxbFkwc2xBUDVKeUFzQUFEYmpCanl3azluNC9DUUh2RjZyQnF2YXZadENGWUNLNmlvQlg2OXpGcDAzaEQ2Z09UYTlmdFhKYXpmcGMyUVp1MEJmMmpVY3lGQUpBUDVKeUFzQUFOYjNwZDI3bVNnRHNLMFU4QXFMR3lFQ1h0em5HOHBBbGIwOHd0OGhHRkFkUXlXb2pFSUoyT256elhTYVFwMmJkTzg3VWJYdHREdWRmdHk4S3VGVCs1Q1g3b1JEbkdNS241VUIva25JQ3dBQTF1ZVhWc0RXVmdKZXA2cUJPUWFvaTNhbjB6M1NYOVZWN1lwYzgweW5rK0NHTERTSjduM0hNU3JwOHhyYU5SellRQWtBdmhIeUFnQ0E5UlZLQUd4RHdBdHpERkJqM1NQOVBlYlFhaGtwQWJpT2ZVQlB1VGJYN25TRzRUaGRNemYxSVFkNzRXRHlNZmJoQUQ5YVowR2drb1M4QUFCZ2ZicXNBTnRLMzI1M2N4cHpETUFPOGxKVlZNQnNPaDJGelpad0E2cjlXWWZEelgwcGlISlowcWMzdEllbzhMRm1LWENna29TOEFBQmdmVzdBQXh1YmpjOUh3VGZXZWRybmR1OW1vZ3hBUlIzekJsbGZ1U3RGOEFPYThIbG5PcjJMbTAvci92YzV0TVQ2cnVKNFVjTG5wWXNYeHp6UHBHUHRENVVBRVBJQ0FJQjFmWEVESHRqVWJIdytqSnZYS3NFUEZFb0FWTmd4YjliM2xidFNycFFBR21PVFVLZnVPV3RxZHpyZEVuK2VITmxEdUs0QU9ENGhMd0FBV0k4dVhzQkdadVB6UWR5OFZRbk1NUUI3MDlNQnBrTFhRdE5wbXQ4K3F3UTBRcUVFQjFIV1VNczRudVB0YzQ1OVhaR091YkZLQUUwbjVBVUFBT3NwbEFCWTEyeDhucjZkN2x1bW1HTUE5dTlDQ1NyRmtvM1FoTTgvbXdWK2RQSmFRN3ZUNmNmTnE1SStQWjkxY2V3QlBCTWhMd0FBV0k4dUs4QmFadVB6MUdGa0ZNY0wxV0FkN2Q2Tk9RWmdmVUplMVRKU0FtaU1kVHZzNk1pNG5tRkpuOWZuMlhRcXdNdXp5TWVlTHFGQW93bDVBUURBZXR5QUI5WTFqT05VR1ZpVDVTWUFOdk9xM2VsMGxhRWFMTmtJalZJb3dYN2tMbDY5a2o0OW5aUndEQUk4SXlFdkFBRDRzYy90M3MxRUdZQWZtWTNQKzNIelJpWFlRS0VFQUJ1N1ZJSkswZkVGWE5ldTZpdlZEdzFML054R2RnK09RWURuSStRRkFBQS9wb3NYOEVNcnl6U0NPUWJnc0FidFRzZHlYOVhoK2dpYThIbG9PaTFVWVhjbDcrTDFJZTduTzN1Slp6N1hwR1B3ZzBvQVRTWGtCUUFBUCtZR1BMQ08xRlhrcFRLd29VSUpBRGIySXVqbVZSbDV5Y1l2S2dHTnNNNVM1RjFsZXRLd3hNOU5aMGJLWXFRRVFGTUplUUVBd0k4VlNnQThaVFkrNzhiTlc1VmdRMms1WU4rRUI5ak9wVzVlbFNJWUFNMVFyUEhmK0dMTUkwcmV4ZXZ6YkRwMUxxY1VjdWZBenp2K21LNUtBbFgwYnlVQUFJQWYwc2tMK0pHUkVyQ0ZRZ2tBdHBhNmVWM0ZNVkNLeXN4NXI1VUJhaStGZ1ByS3NMWExrdTliS0pOUjJPM0xkZ0tuUUNVSmVRRUF3Tk4wV1FHZU5CdWY5ME41djIxTnVRa1JBODVsdTNuZDduUkd1WnNENVpiQ0FlK1ZBV3IrMldpeFBHdGZKVFlYNTdOdTNMd3E4Vk84c3Bjb21WSFFVUjFvSU1zMUFnREEwOXlBQjM1a3FBUnNxVkFDb0FhZSt3c1JianBYd0d3NlRjZkpKNVVBcU9UbnlrL3hQRDZ4aXlqWnRjWEV0UVhRUkVKZUFBRHdOQ0V2NEZHNmVMR0xkdS9HSEFPd3U5TjJweVBvVlEyRkVnQTg4TG1nMHptSm00c1NQOFdSdlVSSnVRWUVHa2ZJQ3dBQW5sWW9BZkNFU3lWZ1MyTWxBT3FnSkVzbHZtbDNPaGYyUnVtUGxjczRXajhZUG44QlRmMWMrYUxFeisvYUxzS3hDVkFPUWw0QUFQQTBYVmFBQjgzRzU5MjRlYVVTYktsUUFvQzlHclU3blRObEFLQ0NCaVYrYnBacXBMVHljdEIvcUFUUUpFSmVBQUR3dU0vdDNzMmRNZ0NQME1XTFhSUktBTlJJR2JvVHBnNG9vN3prRlFCVVFweTNCbkh6c3NSUGNXUXZVWEs2ZVFHTkl1UUZBQUNQMDhVTGVNcEFDVERIQUh3MUtjbnpPSTJqRVBRQ3dPZkt2U25zSWh5akFPVWg1QVVBQUk5ekF4NTQwR3g4UGdpTGppR3dqVTg2UlFJMU15blJjeEgwQXFBUzRselZqWnRlaVovaTU5bDA2bmRqbEZwZVR2U1RTZ0JOSWVRRkFBQ1BLNVFBZU1TRkVyQUROMG9BMTgySEplZ0ZRQlZjbHZ6NVdRYVBxaGdwQWRBVVFsNEFBUEE0TitHQjc4ekc1K21HOFN1VllBZUZFZ0N1bXc5TzBBdUFzaHY0M0FMUGQ2ekc2OFF6cFFPcVJzZ0xBQUFlWmlrdDRERjlKV0JIUXNSQXJjeW0wM1RkL0xtRVQwM1FDNEJTaW5OVDZnNzlvdVR6dTA1ZVZPVmE5SGJMYTFIWGlFRGxDSGtCQU1ERDNJQUhIbU9wUm5ieHBkMjdNY2NBZFZTVTlIbWxvTmRFcHdZQVNtWlE4dWMzdG90d0xRcFFQa0plQUFEd01EZmdnY2YwbFFEekM4QjNpaEkvdDlRcHBjaGRVd0RnV2VVT2s2L002N0JYT3M4QmpmQnZKUUFBZ0FlNUNROThaelkrNzhiTlM1VmdCNFVTQU01dnp5SUZ2WDV2ZHpydlp0UHAwTzRDeWk2ZXI5Sm5qKzRQL3JPN3ZFd1oxVEl3cjROakZtQWJRbDRBQVBDQWR1K21VQVhnQVgwbDJNcVhzQWpQVHZKSWlrM091N1B4K1VPMTc0WnZONzdTdCtHWFMzR2w3WXVTMXNMOEF0VFNiRHBOU3lKK0NvdmxFY3ZzYlh5ZWFVNjVpTS81enA0RFNteVF6bGsvK0cvR1BxTlVkdCtXZlY3M3VZV3FYWXZlVmVSYUZHQW5RbDRBQVBDOVQwb0FQS0t2Qkd1ZlI0czhidHU5bThtdVAzQ2I4RzN1dkpaR0NuMmQ1UDJYL3Z5YzNkaDBXZ0RxTEoycnEzQmpyUmRIQ3FWZHVJa053REhsRG0xbG55dkg5aFN1UlFIS1NjZ0xBQUMrNXdZODhKZ3pKWGhVdWhFd2l1TzYzYnNwUldlVUhDNUxvMWo5NTdQeCtiTHIxM0wwdzNHQ1g1L0tVaHVBQTBuendKdUtQTmZVOGZGanU5UDViVGFkWHRwMUFCekpSUVdlWTJFM1VWRkZoYTVGQWJZaTVBVUFBTjhUOGdJZTR4dWgzL3NReDNBZjNicU9KUWV0aXJCeTh5SUh2L29yNHhENzJ2d0MxTnBzT3IxdGR6cWZ3L04yVE56VW03eDg0eUE5ZjNzUmdBTWJWT0E1Rm5ZVEZlWFlCV3BQeUFzQWdHMmtHemVUQno0OFQxYisrVlA2OS83Y3pTTkpIVlZlUFBQcmMzTUgrTTVzZks2TDF6K2x6bDJES29XN25wS0RYOWQ1SENyMFZUaHNnQVpJNTlHcWRWQkk1L2cvMjUzT3U5bDBPclFMQVRqSVo0NXFMTldZK0wwWWxSU3Y0KzdpKyt4VDhBVTlvTWFFdkFBQWVNaVhzUGlGVGhwM3E5czlMVE5WL1BCRCtiZWx0THIzUnUvUUx6Nit4c0loQUR5Z3F3Ui8reVdlSzYvcS9BS2ZDSDFkaE8yWGQzU3pCR2lDVWFqdU1qbHYyNTFPT3M5ZnpxWlRud2tBMkxjcUxOWDRLUVZsN0NvcUxGM0RDWGtCdFNYa0JRQkE2c1N5REhSTnloSndXbGxLNnp1ejhYazNMQUpnYWZURGZydC9mWEpJQUkvUXlXc1JBdTdIYzNUandrb1BoTDdTWExRTWZMMWFwM1pOckJ2UVBIbkp4aXAzVUVqUCsyTjhEYi9GN2RDTmJnRDJxQW9oTDU5WnFMb2lyUCtGZzM3UWNSdW9HQ0V2QUlCbVNqY3NycXZhc1NvdkRaYkc5ZktmclFTLytubTdiY2N2djh3Q0h0TlZnbVlHdko2WWkxSTNzNnQ3WGI3U2VDaDRYS2hhN1h4eDNiQVJRWmxtU2VmSDl4Vi9EZW5tNEtEZDZhU3VYaU83RkhnR0owcFFvODhQblU3YW43MEtQRlhYdDFTZFl4aW9OU0V2QUlBR2F2ZHVMbXY0bWliaCsrRFhhdWdyYmRkWldzc3ZBb0RIZEJ2KytuOFI4SHAwRHJyZjVXc1o5bG9OZktsZC9hUmxyUHZLQUE5SzU4T3JzTDl1dTg4bFBmLzM3VTVuRUJaTE9EcVhBOGVrazNDOVhGVGtlWnJycUxSNHZUYUoxMjVmYW5BZEN2QWdJUzhBQUdvcmh4SCsvdVhVU3FlVk5CN3I5dVdYV1FEZkc4ZHo2cFV5ckQzL1BCVDR1bFlab0NuU0VvZnRUbWNVMWw4cXArelM1NFkvTGVFSXdBNzZGWm5EQzd1S0drakg4U3RsQU9wSXlBc0FnTWE0MzJrbG1ZM1ArK0ZiOEt0WDFTVXNnYVBvTmZpMUQrMytyZWVlZjh3N0FBMlN3c0Z2YXZhYWxrczRwcUNYOERNQW02aENKNjlQZGhNMWtiN0VLK1FGMUpLUUZ3QUFqWlpEWFlWS0FEenFzd0FzQUp2S1MrVjhpQTlmMSt5bHBhVi9mbzJ2N1RJc2xuQVU1QVhnU1hIT09BdlZXRHB1WW05UkUwVWNiNVVCcUtOL0tRRUFBQUR3QkRldkFkaldzTWF2N1dVY3Y3YzduU0tPdmwwTndCT3FNay9jMmxYVWhHTVpxQzBoTHdBQUFPQXBoUklBc0kzVXpTdHVQdFQ4WmFibG5EL21zTmVadlE3cytmeENQZlI5OW9PalhvUGV4YzFubFFEcVNNZ0xBQUFBZm1BMlBqOXA4TXVmT0FJQTJNR3dJYTh6aFRIK2JIYzZvemk2ZGpzQUsxNzU3QWVPWjRCOUVQSUNBQUNBSDJ0c1o0NTI3OFl5QndCc0xYZnpldGVnbC93NmpyK0V2UUQ0K25tcVFrdjY1amtiNnFKUUFxQ09oTHdBQUFBQUFEaWtxemkrTk93MUMzc0JXNnRTTUlnZnFzcSsvR1JYVVRQcmZHSHRSSm1BcWhIeUFnQUFBQURnWUdiVDZWM2NYRGIwNVF0N0FUUmJWYnBDMzlsVjFNeWtSdTlQZ0w4SmVRRUFBQUNQbW8zUC9kSVRnTjNuaytsMEZEZmpCcGRBMkF2WWhHdncrdWhYNUhrV2RoVTF1L2E4VlFXZ2p2NnRCQUFBQVBDMGR1K21tSTNQbS9yeUxWOEF3TDZrYmw1L05yd0dLZXoxdXQzcGZJamJLemNnQWRmZ05mNGN1UWoxdnFqSTA5WEppenI2NVFmbjA0a1NBVlVqNUFVQUFBQThwUjk4cXh1QVBVaUJwbmFuOHk0K2ZLc2FmNGU5VW5lellheU51UmE0ZncyTy9YaE1Rc2ZVOGRyelNoV0F1ckZjSXdBQUFQQ1VDeVVBWUY5bTAra3diajZweE45NmNYeHNkenBGSEFQbEFMS3VFdFJDbFpiZG5OaGRBRkIrUWw0QUFBREFVMDVuNC9PdU1nQ3dSNE00dmlqRFA2U3cxL3QycHpNUjlvSm1pK2VBdExUWVM1V29oY3FFdkdiVDZjVHVBb0R5RS9JQ0FBQUFmbVNnQkFEc1MxcTJNVzR1VmVKQktkaVJ3bDUzY1F4ejJBTm9scjRTMUVhdklzOVQ4Qm9BS2tMSUN3QUFBTmJUNUtXbDNzN0c1MmNPQVFEMlpUYWRqdUxtZzBvODZrV2FmK1A0WDd2VEdjWFJWUkpvakw0U1ZGODhiMWZwODlPdFBRWUExU0RrQlFBQUFPdTVhL2pySDgzRzU3cUpBTEJQcVp2WEoyWDRvZGR4L05YdWRLN2o2Q3NIMU42RkV0UkNWd2tBZ0gwVDhnSUFBQURXY1JwSEllZ0Z3TDdNcHRNVW9FNWhCc3RFcmVkVkhCL2JuYzV0SEFQbGdQckpRYzZYS2xFTFZlcmtWZGhkQUZBTlFsNEFBQUN3SGt0WUNIb0JzR2V6NlhRU0ZrdVRDWHB0TmgrL2IzYzZremd1NHpBdlEzME1sYUEyTEhjUEFPeWRrQmNBQUFDczUwNEp2a28zbG05bjQvTytVZ0N3RDdQcE5BV3BMMVZpWTZuYno2OXhwTERYTUk2dWtrQjF4ZmR3Nm16WVU0bmFxTkk1ZVdKM0FVQTFDSGtCQUFEQWVuVHkraWJkVlA0NEc1OFBsUUtBZlpoTnA2TzQrVmtsdHZJaWpyZHgvTlh1ZEViQ1hsQTl1U1BmU0NWcTViUkN6M1ZpZHdGQU5RaDVBUUFBd0hwMDh2cmUyOW40ZktLckZ3RDdJT2kxRjYvREl1eDFIWWY1R1NvZ0I3eUtzQWhzVW85OWFxbEdBT0FnaEx3QUFBQmdEZTNlVGFFS0QxcDI5YnFPbzZzY0FPeEMwR3R2WHFYNXVkM3BGTUplVU9MUEdOOENYcWVxVVNzbkZYdSt1bFlEUUVVSWVRRUFBTUQ2UGl2Qm85TE41TC9TRW81eG5DZ0hBTnNTOU5xclhsaUV2U1p4REpRRHlpTXZyVm9FQWE4NjZsZHMzdFcxR2dBcVFzZ0xBQUFBMXVjYnpqLzJObzZKc0JjQXV4RDAycnZVZWZPOXNCZVVRM3dmWHVUUEZnSmVBQUNzVGNnTEFBQUExaWZrdFo0WFFkZ0xnQjNsb05kUGNYeFJqYjFaRFhzTjgxSnh3SkdrNVZQVE1xcng0ZS81bXBsNjZsZm91ZXBXRFFBVkl1UUZBQUFBNnl1VVlDUDN3MTVkSlFGZ0U3UHBOTTI5L2VBbTlMNjlYTTdSd2w1d2VLbHpWdzUzZlF5TFpWU2hMQ1pLQUFEVkllUUZBQUFBYTJyM2JncFYyTW95N1BYWGJIdytpdU5NU1FCWTEydzZUWjAwMDl3eFZvMkR6ZEhDWHJEUHp3MmRUamN0alJySEtJNjdzT2pjSmR6VkhQWTFBSEFRUWw0QUFBQ3dHVGVZZC9NNmpqOW40L01pamd2bEFHQWRzK24wTG81K2ZQaWJhaHlFc0Jkc0liMVg4aEtNZy96ZUtYS282Njg0M3Vkclg4c3lBZ0N3Ri85V0FnQUFBTmhJRVh3emV4OVNEWHV6OFhsYWZtc1V4MVc3ZDNPbkxBQThaVGFkWHVZbHo5TGNJVGl4Zjh1d1Y2cnpWWnFmVThCT1dUaXlzM2o4UGVmZjM4M2p1K2NWeDhuS1krY2d2aE9QM2FwMUxaN1lhd0JRSFVKZUFBQUFzSm5yc0xqNXlYNjh6UFY4T3h1ZmY0amJrV1V4QVhqS2JEcTlUa3VoNVRsWjhQb3doTDE0VHI4cUFSVld0VTZJRTdzTUFLckRjbzBBQUFDd2dYYnY1alp1UHF2RVFhVGxiRDdPeHVlVE9DN2o2Q29KQUE5WldiN3hsemkrcU1qQldNWVJBQUNnSklTOEFBQUFZSFBYU25CUXFidFg2dUR3MTJ4OGZoM0hoWklBOEpEWmRKcTZUS1dsc2NhcWNWRENYZ0RyNlNzQkFIQW9RbDRBQUFDd3VaRVNITTJyT0g2ZmpjL3Y0aGpGY2FZa0FLeWFUYWVUM05YcnYwRzN6VU5iRFh0ZEtnY0FBTUR4Q0hrQkFBREFoaXpaK0N6U1RlVzBuT09mcy9INWJWN09VUmNSQVA0Mm0wNVRwODBVQm42bkdrZVpsMzl0ZHpvcDdEVlFEZ0FBZ01NVDhnSUFBSUR0WENuQnN6a05pK1VjLzVlN2UvV1ZCSUJrTnAzZXhUR01ELzhUTE9GNERHbUo1ZmZ0VHVjMkR2TXhRQWpkaWozZlc3c01BS3BEeUFzQUFBQzJNNHJqaXpJOHU5VGQ2K05zZkQ3UjNRdUFwWlVsSEg4S3VtOGVRd3BnZjJ4M09rVWNsbFlHbXF4YnNlZDdaNWNCUUhVSWVRRUFBTUFXMnIyYjlNdndhNVVvamRSSlJIY3ZBUDVoTnAwV2NYVGp3MStDY1BZeDlPTDRzOTNwak9JUXZBWUFBTmdqSVM4QUFBRFkzbEFKU21uWjNlczJqb0Z5QURDYlR0TXl5OTA0M2dWaHIyUE54Wk4ycDNPcEZBQUFBUHZ4YnlVQUFBQ0E3YlI3TjJtSndBOWhjU09UOGtsTFI3MlAreWpkMkU5amxQYVpzZ0EwMDJ3NlRWMDRoNm5MVkZnRXRjM2ZoL1Vpamw5anZRZHhlNW02cWlrSmEwcWQ5MjVMK0x6U1VxU3JIZXI2ZWRzTmk2NnlBQUJ3VUVKZUFBQUFzSnRoY0pPNDdOSk41cmRwNUZCZUNuc1Z5Z0xRVExQcGRCSTNnM2FuTXpTUEgwVUtYWCtNOWY0dDFUdUg3ZUFwdHlVTkJUNzVuT0l4M2cyTHdGYy9MQUpoYVFoL05ZK2xhZ0dBZzdGY0l3QUFBT3dnZDRiNm9CS1ZzVnpLc1lqalFqa0FtaXVGdmVJWXhJZi9pZU1QRlRtNE4zSGN0anVkdmxKUTQzTktFVWNLTTE3RTBjM25sOVNaN0pNS05jYXBFZ0FBaHlMa0JRQUFBTHU3ak9PTE1sUktMNDdmWitQenRPVG1RRGtBbWlzSE0xTHc5NmM0eGlweVVLbXIwY2ZjUlEyYWNuNjVpdVBNT1FZQWdGMEplUUVBQU1DTzJyMmJ0T3pRVUNVcUtkMXNmaS9zQlVEdXdOTVBnaGpIOExiZDZSUnhXTmFNSnA1alVtY3ZYeEFCQUdCalFsNEFBQUN3QiszZXpWV3dERXVWQ1hzQjhOVzlzSmNsbVE4bmRkV2N0RHVkTTZXZ1llZVk5TGtobldNK3F3WUFBSnNROGdJQUFJRDlHU2hCNVFsN0FmQlZEbnVsdWVBL1FkanJVRjdFa1RwNm1YTnAydm5sTm01U3dOR1hSQUFBV0p1UUZ3QUFBT3hKdTNlVGJ0YThVNGxhRVBZQzRLdlpkRG9SOWpxb0ZQUjZMK2hGQTg4dGFjbjNpMkRwUmdBQTFpVGtCUUFBQUh2VTd0ME1nMi9rMThreTdIVWJSMTg1QUpyclh0anJ0eUNZc1c4cDZEVlNCcHAyWGdtTG9CY0FBUHlRa0JjQUFBRHNuMi9rMTg5cEhCOW40L01panE1eUFEUlhEbnRkeG9kcFBuaG56dCtyMTRKZU5QQ2NVZ1RkZ0FFQVdJT1FGd0FBQU94WnUzY3ppWnVCU3RSU0w0Ni9adVB6cXpoT2xBT2d1ZEpTYTNFTXd5THM5WE1jbjFWbEx3UzlhS0lyNXhBQUFINUV5QXNBQUFBT29OMjd1UTYra1Y5bmIrS1l6TWJubHRjQmFMZ2M5aHJGMFEyTHNOZFlWWFltNkVYanppTnhNMVFKQUFDZUl1UUZBQUFBQjlMdTNRemo1b05LMU5hTE9INjNoQ01BU3puczFZOFBmNHJqRHhYWlNRcDZEWldCSnAwL2dtNWVBQUE4UWNnTEFBQUFEcWpkdXhuRXpTZVZxTFcwaE9QdGJIeCtxUlFBSkxQcHRJZ2pkWHY4VDFnRXZyK295bGJldGp1ZGdUTFFJQ01scUR6bmV3RGdZSVM4QUFBQTRQRDZRZENyN2xKWHIxOTE5UUpnMVd3Nm5jUXhpQS9UM1BCTDBLVm5HKy9iblU1ZkdXaUlrUkpVM20zRm51K0pYUVlBMVNIa0JRQUFBQWZXN3QzY0JVR3ZwbGgyOWJwUUNnQ1dadFBwWFJ4WGNYVGpIMytPWTZ3cUc3bHVkenBkWmFBQjU0cUp6d3djMlprU0FFQjFDSGtCQUFEQUVRaDZOVXJxNnZYN2JIeCtwUlFBM0RlYlRrZHhwR3VDL3d1THBSeFpiMjVOUVM4ZFoyaUNRZ2tBQUhpSWtCY0FBQUFjeVVyUTZ3L1ZhSVEzcy9INXJlVWJBWGpJYkRxOXpVczUvcjg0M2dWTE9mN0lhUndDMURSQm9RUUFBRHhFeUFzQUFBQ09LQVc5NGtoTCtlbmMwUXpwaG5RS2Vsa0dCWUFINWFVY2h5dExPZXI2K2JqWDdVN0hrc2pVM2EwU0FBRHdFQ0V2QUFBQWVBYnQzczBnYm41UmlVWklTMHo5T1J1ZkQ1UUNnS2ZrcFJ4VE1QaW5vUFBuWTBidFRxZXJETlQ0UERDSm15OHFVVm1GRWdBQWh5TGtCUUFBQU0razNidEpTdzc5TjdpSjB4VHZaK1B6UzJVQTRFZG0wMmtSUitwWTlaK3c2UDdwV3VHYkZKNGVLUU0xcDVzWHg5SlhBZ0NvRGlFdkFBQUFlRWJ0M3MxMTNLU09IWlptYW9aZlorUHprVElBc0k3VTBTZU9RWHpZamVOZEVQWmE2clU3SGNGcDZreklDd0NBN3doNUFRQUF3RE5yOTI0bWNhU2cxMitxMFFpdkJiMEEyTVJzT3IyTFl4Z1dZYStmNC9pc0ttSFk3blJPbElHYXVsT0N5cG9vQVFCd0tFSmVBQUFBVUJMdDNrM3FTUEZUMEtXakNRUzlBTmhZRG51TjR1Z0dZUy9MTmxKbk9ubFYxNlJpejFkWUZnQXFSTWdMQUFBQVNxVGR1eW5Db2t2SEI5V292UlQwdWxJR0FMWWg3UFhWcTNhbjAzYzBVRU02ZVhFc3Awb0FBTlVoNUFVQUFBQWwwKzdkM01VeENJdXVYcFpqcXJjM3MvSDVRQmtBMkphd1Z4Q1lwbzRtU2xCWnVyQUJBQWNqNUFVQUFBQWxsYnQ2bmNYeExsakNzYzdlejhibmZXVUFZQmNORG51ZHRqdWRnU09BbXIyZko2cFEyWDFYdVM1czhSeHF5VVlBcUFnaEx3QUFBQ2l4M05WckdCWmhMMHM0MXRmMWJIemVWUVlBZHRYUXNOZlFuZ2RLcEdwZjBEbXp5d0NnR29TOEFBQUFvQUxhdlp2SnloS09ZeFdwblJkaEVmVHlMWG9BOW1JbDdQVkxxSDlIMEplNmVWRkRsbTJ2TGtzMkFnQUhJZVFGQUFDVWdXK053cHJTRW81eDlJT3dWeDJkQnAxSUFOaXoyWFI2RlRmZFVQL2xuODJoMU0xRUNTcXJha3MyK3AwTUFGU0VrQmNBQUZBR090ZkFob1M5YXV2TmJIemVWd1lBOW1rMm5kN0ZNUXoxWHY1Wk55K2dMS3JXeWN2dlpBQ2dJb1M4QUFBQW9NS0V2V3BwWk5sR0FBNWhOcDFPNGhqRWgvOVgwK3VHb2IwTWxNQ2tZcyszYTVjQlFEVUllUUVBQUVBTnJJUzkvaFBxMjZHaktWNEdONmtCT0tEWmRIb2JSN3B1K0RuVWF3bkgxTTJyYnc4RHoyeFNzZWZidGNzQW9CcUV2QUFBQUtCRzJyMmJTUnlEc0FoNy9SYnFkZU8yU2RLeWpXZktBTUFoemFiVFVWamMzUCt0Umk5cllNOVNFeE1scUt5cUxkZll0Y3NBb0JxRXZBQUFnREt3TEJuc1dRNTdYWWJGTCt4L2llT3pxbFRPbFJJQWNHaXo2ZjluNzI2UG5MaTJ0Z0UzVHoycTBqOTRJeGlkQ01DVGdPUUl3QkVnSWpDT0FEa0NqeU93aU9BTUVWaVR3SGlJd0NLQ1ovaW5LdjJZdHpmYUFqSE1wejdYN3I2dXFpNkJEd2MwcTd2MzdsYmZXbnQyV1cvcG1pRXQ0Zml4QVQvUzYwNjM2LzZDSnBncVFibmphbUZ2K2NoZUE0QXlDSGtCQUFBUjZGWURPOUxwbjEvVzIwbTk5ZXJmL2xKdlo2cFNqUDc4N0hpZ0RBRHNRMTdDTVYyWC85NkFIMmRvandJSFZ0UjlWNmZiN2RsbE5FMTlYSS9yYlhMSDVvdFZRSEdFdkFBQUFLQWxPdjN6MDNvYlZJdWxITjlYbG5Jc3dVZ0pBTmluK1d5VzVwN1N1M29ON1VuZ3dDelpDSWYzdXQ3NmQyeStkQW9VUjhnTEFBQUFXaVl2NVRpc0ZoL2t2Nm1hc1RSVFUrbm1CY0RlTmFDcjEzTmRhWUFEbXhiMmZvVmRBS0FBUWw0QUFCREhSWXQvZGg4bXdnSGtwUnpIOVpiT3dkU3hRM2V2bUVaS0FNQWhySFQxK2xUZzIzOWxEd0lIcEpNWEhGQ24yeDJvQXRCRVFsNEFBQkRIWll0LzlxZDJQeHhXcDM5K29idFhXS21iVjA4WkFEaUUxTldyV253cDQwTmhiMTNJQ3pqazJEa3A3QzM3OGgxTjgwd0pnQ1lTOGdJQUFBQyt1dGJkNnovMTltZFZadmVPcG5tckJBQWN5bncydTZ5M0ZKcjZyYUMzM2U5MHV4N3dBb2RVMGhkbmhMeG9Hc2MwMEVoQ1hnQUFRQWp6cytPQktrQXNuZjc1dE43ZTFsdXYvdTB2MVdJNVJ3NUROeElBRG4vTlBwdWQxQzgvVitVczcrd2VnNUxQdDFHOVBibG5jNHpIVnRLU2pVOEZZMmtZSVMrZ2tZUzhBQUFBZ0h0MSt1ZW5lVG5ILzFjdHVuaFl6bkcvanVabng0SmVzWGhvQUxSU1hvSnNVTWkxd01BZUF3N29vckQzNi9xV0p1a3BBZEJFUWw0QUFCREh0T1Uvdnc4VG9RQjVPY2VUdkp6alQ5V2l1OWRubGRrTElhOVluaW9CMEZiejJTd0ZGd1pWL0tEWHdONENEbWhTMlBzMVp0SWt6NVVBYUNJaEx3QUFpR1BhOHAvZnNnQlFtRTcvL0NKMzkrclYyNXQ2KzZRcU96VlFBZ0NpbU05bWwxWDhvSmNIdk1BaHg4blNPbm4xN0RXYW9OUHQraUlwMEZoQ1hnQUFRQlFESllBeTVlNWU0M3JyMWIvOXVWcDA5Mkw3MHBLTlBxd0dJSXdTZ2w2ZGJ0ZDlCbkJJWndXOVYvY2FOSVZqR1dpcy8xVUNBQUFnQ0oyOG9BRTYvZk5KL1RLWm54MlA2dGRodmIydExHdTNUWU42aTlRUllOcm1uVkVmNTROOHpFUDd4dnRGY0did2dEODZtYzltenBNbWo0V3oyV1UrSHRKK2p0ZzU2MFZWM3BKcFFIT2s4YWRmeUh2Vi9aQ21FUElDR2t2SUN3QUFna2dQaWVkbngyMHVnUThUb1ZsajJyUitHYVd0SHR1RytkZEhLck94UWIyZFJOclBMWis3b08zajBic0gvTGtVNUo4b1Y3TUZEM3A1MEFzYzB1U0I4MldNNi90NkxCZk9waUhYcVFDTlpMbEdBQUFnRE11UVFUTmRXOHJ4VEVVMllweTBQOEI1UXN4citjWFNqY042K3h6c3JmWHNIZUNBWStNazRMaDRsNEc5UmdQNElpblFXRUplQUFCQUpEMGxnT1pLSFF2cmJWQUplMjNpYUg1MmJLeU13MUxEY0wrK0VyVEhmRFpMU3dvUEhZTUEzNWtVOUY2RnN5bGE3aXdLMEZoQ1hnQUFFRXZiUXc4K1RJUVdXQWw3L2FmZTNxdUlzZEsrZ0lhUCs5MnVjNlZGNXJQWmFmM3llN0JqVUNnWE9LUkpRZTkxWUhkUk9NY3cwR2hDWGdBQVFDUURKWUQyNlBUUHAvVTJySFQyZXF4b1lZbFBMZDRYUWdQZ0dvOGJ6R2V6VWYzeTBkd0o4TVZwUWUvMXFYQTJyanNCNGhMeUFnQ0FXS1l0Ly9rdHBRSXRaQm5IUjR2MjBLWE5jNWQ1QzhvY3Q5aVBZYUQzSXBRTFRiaHY2SFl2NiszcW5tMGM3WDNQWjdOMHZmeXhvRklQSEcwVU9rWThjNDhHTkoyUUZ3QUF4REp0ZXdIbVo4Y2VBa0pMcllTOTN0VGJaeFc1bFFmVjVpMG96VUFKV2pnK3ptWVhWWnhsRzQzVlVQcTl3cUs3MU5NSC9ORnAwQjloWXQ0R3h5N0Fwb1M4QUFBZ2xxa1MrRUFHMnE3VFB4L1hMNzE2KzFNMWJ1U2J5YkVJRHNEOWpqcmRiazhaV3Vta2F2ZXl2c0QyREFwLy8yTzFCc2N1d0thRXZBQUFJSmFwRXZoQUJ2Z1M5THFzdDdmVllnbEhENGV2bVo4ZFIrcm1OV241N2hEeUF0ZDQzRFpmeldhWDljc293RnZwMlJ0Z0hqbndlSGhSMEgzTjA5dzVEVXJ6U2dtQXBoUHlBZ0NBV0taS1VMMVVBbUFwTGVGWUxVSTBaNnJ4SFE5ZDRoZ29BVGhYdU4xOE5odFhodzgyOU93SmFNMDhjaEg0WnpndHFON0NNaFFsQnhPUFZBSm9PaUV2QUFBSXBOTS9uNnJDbHc0MVBrd0VWc2ZHMU5WclVQL3l2V29RMFBOZ25kVWdxb0VTdE5wSUNZQzE3d2NXNFkybkQvempsNEYvbEhGQlpmZTVESzQxQVFJUzhnSUFnSGcrS29FUEU0RWZkZnJudzByUWEya1E2TDFNN0E3ekZqekFVYWZiN1NsRE93WHA1Z1c0MWpyMFdGalNrbzNQNjNuYkZ4a295VkFKZ0RZUThnSUFnSGd1bGNERGN1Qm1PZWhsNlVhaUdTZ0JPRmU0MTRrU0FHdHEwbWNFWTNXSDdjcGZKSGl1RWtBYkNIa0JBRUE4RXlXb25scXlFYmhER2g4K0swTVlGMHJnQVJnODBFQUpXbTE4d0g5Yk54b29WTzRtOWVEd3hudzJteGdMWGVQaWZneWdxWVM4QUFBZ25xa1NmREZVQXVBbW5mNTU2bmo0dHVWbEdBVGJIMjBubkF3UDR6eHBzZmxzbHVhTER3ZjY1M1gzQUhOSGxMRndXcFhUbWZpbEpSc3B4RkFKZ0xZUThnSUFnSGltU3ZERnkvblpjVThaZ0p0MCt1ZmordVdUU29SaFh3aXZ3RU04N1hTN0w1U2gxY1pLQUR6U3dGam9HaGR1L1d4Z2NXMHB6QTIwaHBBWEFBQUUwK21mVDFUaHE2RVNBSGM0VVlJd3BrcFF2WjZmSGV0MEFQZnpzTGpkM09zQXU1dzNpdmppd1h3MkcxZmxMRDl2M2lhNm9SSUFiU0xrQlFBQU1YMVVnaS9lZW1BTzNPRlVDY0tZS3NGaTNsSUN1SmVIeFMxMndDVWJkWnlFQW5XNjNVSDk4clNoMTZUalF0Nm5KUnR4YlFrUWlKQVhBQURFTkZXQ0w5S0h1UjZZQXpmcTlNK05sZWF0YUlaS0FQZDY3bUZ4NjAzTVU4QUROVG04Y1dJL3dJYWZDWFM3NmRnOFVnbWdUWVM4QUFBZ3Bnc2wrQ3AxOCtvcEEzQ0xNeVV3YndWeVZNOVpRMldBZTNsWWJNNEFhUFY4TVovTnB0VmhPaHV1dzVmdmlNcTlGOUE2UWw0QUFCRFRSQW0rU3QyOFRwUUJJTFJMSmZocXBBUndMeUd2RnB2UFp1NTFnSHQxdXQwWDFlTTc5SlFXSWkzbHM0N1VoYlBucUNUWUdKR095WmNxQWJTTmtCY0FBTVRrMiszZmU2a3pDa0JjbmY3NVJCVytTdDI4UnNvQWQxL2JXYkt4OVQ0cUFYQ1BkVDRES09xTEJ6bjBXa3BuWXQyOGFNSVlBVkE4SVM4QUFBaW8wejlQSDB4NjhQRzlrL25aOFF0bEFLN3BLVUVZbjVUZ0swc053LzEwODJxM2ZYK3BSY2RKTUU5RU5TN2tmUTRka2pnbUFRNVB5QXNBQU9MU3pldDdhZG5HOGZ6c1dOY0hRcWlQeFJUaUdBbHlITnlSRW9ReFZZTHY1eXhsZ0RzSmVaa3ozRnNCTitwMHU0TTFyL09MQzNUT1o3TjB6VmpDbHlXZTF2dGw2T2dreUJneDlGa0EwRlpDWGdBQUVOZEVDWDd3UE5WRjBJc2cwc1BwZC9YMmIzMU1ubHBTZFA5MDl6TnZCZGUzYkNQY3laS043U1owQmR4bDNYdXJVc2VXVXE0WkxkbEk2V01FUVBHRXZBQUFJSzZKRXR4STBJc28raXUvZmxsdmY5WEg1V1c5cFk1ekErWFpDM1dPeFFQN0g3MFRBSVU3NmViVlh2dnV0ak5WY2pBL1JGVlFONi9udWNzYUhFeDlES1l2ZS9WVkFtZ3JJUzhBQUFpcTB6K2ZWbVY4eUhjSUtlaDFvWXNQaDNMSHNaZVdhSHRkYjMvWGYyWmFieWVPMDUwYUtFRW9RbDQzKzZ2dFFhOFVmTFcwTGJjWUtnRjdNbFVDS0VOZWh1MXBDMy8wVVNIdlV6Y3ZISU1BQnlUa0JRQUFzVTJVNEZaSDlmYlAvT3pZaHpzY3d1Q0J4K2l2K1RnVitOcXlIQmg1MmVJU1RLTzlvUnhPL3V6b3ZGRUtlcDIwN0J4OWtjZTlkRno4WFcvR1AyN1M3M1M3UFdWbzRUdyttKzM3UHVkUzFhRVl3eVpkSXo5aVhCelhMeDhMZUtzdnpkMGM3SjV6Y2V5OVZnbWd6WVM4QUFBZ3Rva1MzT3VQK2RueFJIaUdQWHZzOFhZOThKV1dkTFJFMVdaR0xmLzVwMEhmbDI1ZXQvczF6MWU5cHY2QTE0SmQvK1J4NzJqTmNaUDJHQ29CT3grZlpqUHpFeFFnQnpqNkc1enIwOEpMVU1xWDJFYU9WaHg3QUljaDVBVUFBTEdkS3NHRHBBK0IvOG5CbVo1eXNBZWJoQlZTNENGOTgvUy85ZkY2V1crbmFTazN4KzdEcGFYZkt0L2VqV3FpQlBmT1YvL1d4L0NvM3A0MTRGenM1ZkVyemIrcFM4NzFZTmVxZ2QzUExZWkt3STU5VWdJb1JxczdkZWN1aDJjRnZOWFh1bm14Yi9VeGwrNmZmRmtPYUwzL1ZRSUFBSWlyMHo5UEFaRFVydis1YWp4SUNuMjhybXVXUGhROXFlc25KTWV1Yk91Y2ZGb3RsaHo4c3V4Z1B0OG55eTJOQVVyOXZkeTF6N2tkdDJPV1Rpa1A4NjdlM3VZbEhNZDVxY3RTenIrMERmSjI5SWovZTg5dTV4WkhuVzczMVh3Mk03YXpLMU1sS002TFNuQzhyWVpLOEtVRy94YndQa2YyRjN1V1FxQlBsUUZvT3lFdkFBQ0liMXh2ZnlqRG82Uk9LZjM1MmZIbmFoRUdtYVRYS0lHWjNMRXBiZWxiaUMveXJ5MWpWWWpjUldwWG51ZnQxL3h2blZYZlFsOFhiUTk5NVlCSnFvVVBkcXNxNnJFd3NXc2VMQjNIS2V6MXJqNjJQK1Q1S3RKY3RReDBMYmYraG4vbFVlcGVKcnpLTFlhVkFDL21KcjU1cGdUdDArbDJoeHRlNTU4MW9RNXB5Y202Rm44dTd3a0RTOTI4UmcxWUlwTXl4b2MwTDd4VkNRQWhMd0FBS0VGNjRDWGt0WjcwQWZIcnZQMlZ1eVNsTGpQVGF2R3c1N0xUUDk5SzE1bTg3TlpxVUd1UVgxZi8rNHRLT0tVSjlobkk2K2Z0WFQ3T1ZqdDlYWlRTL1dkTDU5aW84czNkVlNFN1p1bEF1YlpsUjcrLzlobnVYQWtkTDdkQm5yZDJ0ZjkwWnVIV2N5QXQrK1JCTVcyYU00RWZDSEI4ays1OWhnWGMreXpmSit4amZQQlpBRUFsNUFVQUFPR2xFSWNINWx2emZLV095OURNOG45NzdMZCtuOWtucmZVaXdERzg3UFNWdXRWTnFzWER5L1E2YlZMd0s0Y25YMVdMaHdkSERyM3Y1b2JJM1pBbXhzZU5YQTkzZnM3bitHWDFMYWl3K3V2YjlLcnZsMGhjL2YyaFFzZENYdHhsbU1kNzJEWWhMNGgrYmR2dERsdy9ydHdIeldhWGRVMVNxT1d2NEc4MWRmTWExKy9YOVIyN0hCOTA4UUpZSWVRRkFBQmxHRmU2ZWUxYVh3bDRvRUdnOTVKQ0dzc09RTmNESWN1dWRWOStYY29TYWJtelVLcnhxL3h6OGFQb1M5Rk1xdmpMeTVUazZjb2NWZm81WVdsaTd2SzIwKzJlcEFmYlN0Rjg5YjdlMTNqd1dZZTRPMWtXa1RCendCYitqa2JOSC9YWU5jNUxXRWIvckdJVTdCNlpabzRQdW5nQlpFSmVBQUJRQmtzMlFnQzVzMVQwamxMTFFFai8ybnRQTHlrY3RPd0E5TFVUVUtkL1BqbFFQZE1EM2xUVFFiVUlmN3lvZE94NmlPZ2RTU1oyRWJmb0tRSDN6RjhwNER0V2lsYllWN2pJbkhRMzRWc09MaTNYVzIwbnlON0VybjNEZXZzMytIdnMxL3Z3MVh3Mk8zVTBzNlB4NFoxS0FId2o1QVVBQUFYSVN6YW1jSVp1VTNCWXBUOEl1N0ViME1xeXBjc3VZRXVURy82T1pVRHNMcjNxeHpESE10QzEvTFZ2NHE0djlBT3MxRFhPbk1VOVl4RGNabFFKZWJXRmtCZXdPdlp6ZzlTSnNOUHQvbDdGRDdtYzFPOXpvaHNueGdlQTNSUHlBZ0NBY293ckQwZmgwQVlOLy9tZVhodG5qRGt4bGRDbDROVHh3MDFTQjc5Ty8veENKYmpGVVZxYUtpMVJwUlNOdDYvZy9FU3BYWE1UVis3Uzgxb2w3cmgybXMxR3FWTlcvY3Zua2VmdmFyR2szc2dlWTR2and3dmpBOENQL2tjSkFBQ2dHT21CK1dkbGdJT3lwQTJIOXJtUWdJemxXcmhOVHdtNHgxc2xNQlpzeWFmNWJDWlVDckdOdHZoM05mbDhIeGJ3SHQvbFVBNXN5NGtTQVB4SXlBc0FBQXFSbHIrcUxGOERoK1pEYXc1dFVzaWNOYTFmUHRwZEdFZFp3L05PdHp0UUJtTkJXK1pNYUtzZGRQRnE3RktCT2JENld3RnZkZXpJWmt2alErcGVwek0wd0EyRXZBQUFvQ3kreFFZSE1qODdmbFl0bHFHQVE1b1U5RjdIZGhjM0dDZ0JEekJTZ3NiYng3Smp1a3BDYkQ3ZmVNejk2R3lXNm5VV2ZXenZkTHM2Y3JLUitoaDZabndBdUoyUUZ3QUFGQ1IzUnZtZ0VuQVFBeVVnZ0pJZVdJL3RMbTdRVXdJZW9OL3Bkb2ZLME5CN212MTBhdnM4bjgyRXZNcjFUQWxhTVE2OFZJbEhTOTJOUGdkL2ozOVl0cEVOcGFDZ0w5Z0IzRUxJQ3dBQXl1UGJiSEFZUHFqbTBEN21zRzhSOGpMRGdzbGNkNVE3SThKOVJrclFXSU05L0JzQ1htVjdyZ1RHK01lYXoyYVRwaGV0L2huVDlmV3JBdDdxMkNIT1d2ZVFpNERnTzVVQXVKMlFGd0FBRktiVFA1OVU4VnYwUXhNTmxJQURHM3ZQTklUUUxBOXhwSnRYWSswam9DRGtCVUhsc2IydkV1dkpZYmJmZzcvTnRHeWpMeWppL2hGZ0I0UzhBQUNnVENNbGdMMFRTdURRaW50ZzNlbWZwL2Y4eWE3RGVNcWFUanJkcnM1dkRaTDM1NjY3TkgyeVZLUHhtTkJqZ1BEUGh1b3hibFRGLy9MZnIvWCtmbVZ2OFlqeFlWVHA1QWh3THlFdkFBQW9rRzVlc0YvenMrTmUvZkpVSlRpZ29wWnF2TWFEUEs0VEt1Q2gwdHo3VmhrYVpSOFAvTWZLL0toekxPWTliN2ZiczNzYWFiU2o0KzV6UzhmVDZGK21HRHVYZWVDWWI1bEdnQWNTOGdJQWdIS05sQUQyUmlDQlF5czVLRFd1MnZuZ2pkdjFsSUJIZU9jQmNhTU05elR2WUs0Z21Ib3NIOVF2dis3b3I3OW9XejNuczlsbHRRaDZSYjdPVG9HK1UxMDV1V2RzU01lSERwd0FEeVRrQlFBQWhkTE5DL1pLeUl0RFNnOXVpdjNRdTU2djBnTW8zYnhZMVZjQ0htbXNCQTI0ZjFtRTlYWjkvcitmejJaVDFZWnc1Lzh6WS9uMjFlTmRDcmNOZzcvTjUrNEZlTUIxM3BFeUFEeU1rQmNBQUpSdHFBU3dGd01sNElCT2NsQ3E2SitoMHMyTEZmT3pZK0ZaSHFQZjZYWmZLWU43bHdjWUszTmo5SlNnVVVhVkVNZHVycWxtcy9SbGtEZkIzK2JyZWg2My9ESS95TWZGUzVVQWVEZ2hMd0FBS0ZpbmZ6NnRYLzVVQ2RnNVlRUU9hZHlBK1VvM0w2N3JLUUdQSFFzdDkxUzhYVC9nUDV2UFpoTmxmdURjSFA5OE1rODA1MWdiVkx0YnBuSHBvczAxcnNlK2RML3dQdmpiL0tNK0ZvYk9DRmJHaHZRNXl4OHFBZkE0UWw0QUFGQytVYjE5VWdiWWpkeHQ1cWxLY0NEdmM2QzNDWFR6WXBYd0xJK1Y1dUt4TXBRcFA5amY5ZlhVU0tXTnc0UTc5MU9ZY0IvTGpsKzJ2ZGJ6MlN5TnM5R0RYaWM1MklPeG9WZS9URlFDNFBHRXZBQUFvSEM1TzRxMjk3QTdQb1RtVUZJZ2F0U3crV3BrdDJKc1pRTXZMZHRZckYyUC83cDROYzlBQ1JvaEJieDhZV1pQY3REclkrQzNtSTZGaWFCWHU2MkVQNDBOQUdzUThnSUFnQWJvOU0vVGh5TWZWQUoyd2dmUUhNcEpnN3A0TGVlcjFNMUw5MG1Ncld6Q3NvMmxqZjJMTGw1SE8vNW5SaW9ONGM3OWRGNzJWV0x2QmxVWlFTOXplWHVsenpDZnIvSC9TNTNxZElZR1drL0lDd0FBbW1OWStiQURka0VRZ1VOSTQvbEpnK2NyT0ZJQzFwUWVEcDhxUXhueVEvelJqditaRDdwNE5mSWFWemlvN0hNL2RWMTh0OGQvMGhpUTFlTmg2cDQ3cUFTOWlEazJqTmNjMzg5eXB6cjNra0RyQ1hrQlVMSkxKUUQ0SmkrRE5WUUoyRG9QbURpRVlSN1htemhmVFNyZEo2bk56NDRIcXNDNmMzUHVFRU44YVZuNW96MzhHenllY0FXN3VkWmJMTVUzVm9rRFhtT1ZFZlJLblp3RXZkbzFOcVJ4NGZVYS85ZDBITC9LeDNZSyt2K3Bta0NiQ1hrQlVLeXJxNnQwWWYrbTByVUc0S3U4Yk9ON2xZRHRtSjhkNitMRklaemw4YnpKaHE3anFYUktaRFB2T3QzdVFCa0MzNXQwdTcxcTk1MThmcC9QWmxQVmJ1d3g1Qnd2YjUrbHdFNjZqbjJxR2dlK2x4WDBJdGJZTUs3V0QzZ044dkc4TktxM1Q2b0t0SldRRndCRnU3cTZTamNIdmNxM053QldwVyt5ZjFRRzJBb0JCUFl0QlorR1RmOGhkWjhrNnlrQkd6ck5RU0ppR3UvNDcvODBuODFHeXJ5MlFRSHZVZkNqcE91N1JWQm5VaDFtU2VhcFBmQWpRUytDakEzcGVtQmJBYS9sY2UxZUVtZ3RJUzhBaW5kMWRYVlpieW5ROEZPOW5ha0kwSFlyRDg1MVNJSE5EWlNBUFV2TE5FNWJNbC9wUG9rZ0xadEtuV0pPUFJnT09NWjN1K2x6bWwwdmVUMVU2WTJVY042WUo4cHlVaTBDTzN1bm85K2R0U2twNk9XY2I5NzF3TGphWXNCcjViaWV1SmNFMmtySUM0REd1THE2dXFpM2RNUDZTNlZkTDlCeW5mNzVSZVdoQjJ5REQ1blpwL2N0V0tieE90MG4yNjJ2QkN6SHYycjlMeWlrQjhPblNoam9YbVRSWFcyMDQzL216L3lBbC9VOUwrQTl1aFl2NTd3ZlYrc0ZPZGlEbGFCWDVDOUlDM28xYTB4NHRxdUExN1Y3U1Y5d0JWcEh5QXVBeHJtNnVrb2Y3cWFid2Q5ZDVBTnRsb01DdjZzRWJPUzVFckFuSCt0eGU5akN1VXIzeVphYm54MzNWTUg0TjUvTjBqandhb08vbzU4ZkpCSkR1Zzk1dXVOajVxMHliekQvbGhPaUVQWW80M2hLNDYrQVYvUnJydG5zc3Q0R1ZlenVSMm51U0VHdmdUMVc5Sml3WExwMWx3R3ZaWGh4cE9KQTJ3aDVBZEJJZVFuSGRJR2ZQZ3o2b0NKQVczWDY1MmtzMUw0YzFqQS9PeDZvQW51U0FrNnRQZDV5OTBrUDY5dkxBM3krblArNUs5T2JEZjZlMTRKZUFjYjB4VDdZWlVnK3pabERsZDVZS2RjZFI1WmpMZUtjUDNUQVMxZll4OXpuTG9MVjBZTmVmOWZIbHJHK3pERWhYZHRmckhrdDhPQ0ExOHJ4bkphSnRhb0wwQ3BDWGdBMDJ0WFYxYlRlMHJlQmYzYkREN1JWN2d3ajZBV1BKM2pBUG53SmVPV09WbTJlcThiMXk1OE9CMk10cmZOK2RjbTkrdGRwTE5nMDZDVTBlcWl4ZlBGQWZ0ZGhqN2YxY1hLaDJoc2JlSzlzNFp3ZlZ6RTZlRjNhRzQrVGcxNXZnci9OdjRTM2k3d09TTmQxUjJ2ODN4OGQ4Rm94VW4yZ1RZUzhBR2lGcTZ1clNiMmxod2UvVlphQ0Fkb3BQZXdTZG9YSEVUeGdIMTdsVGxhdFY5Y2h6VlZDeWNaYTJtVjAvVDlzSWVqMWgrNGZCeGpERjUwNy90cnhQL00rSHg5c3RxOVNaNnlYQmIzbGdiMFc4amhLNTZJbEdndVd4OU5mcXRpZmxhZnc5a1JIdi9qelNyMmQ1T3VBZFpaclR2UDdpelVEWHN0aldUY3ZvRFdFdkFCb2xhdXJxM1N6MGFzOFBBSmFKbmVJR1ZTQ1h2QVlnZ2ZzMnB0NmZKNG93M2Z6MWRCY1pheWxOZElEdmVsTi84TVdnbDY2Zit4ejdGNEV2SFk5bjUzbHpqTnNyclE2RHV5eVVPZDdDbk9jVnJFQ1hqcDVyYWtlVjAvek9SWTVJTk92dDJsOTNCa0xZbDhEL0xyQjllQTI1cVdSdlFHMGhaQVhBSzF6ZFhWMVdXL3B4dUduZWp0VEVhQXRWb0pleGo2NHgvenNPSDFUK0xsS3NFTnY4aEtGL0NqTlZZSmU3WEdrQkswMXVuTXUzczdTamNiWlhkOWpMTHFycEpEQTB4MytNMmxPZUtYYVcxUGFrcWJQNitPc1o3ZUZPTi9UZnBoVThUckI2WXE3eWIzdllnbmNGTlNKL0ZsUm1tUCtyby9Ca1QwV2FreEkrK09mYXYzUFR0NXNLOEN0bXhmUUprSmVBTFRXMWRYVlJiME5xc1dIeG00QWdGWklRYTk2UzJPZmpvWndONTFsMkpXMEhNb3ZBbDUzejFXVm9GZXJ6TStPQjZyUU9yZDI4ZnJ1Mk5oUzBNc3lUenNhcnhkMW5WUzdEV3VtZVhPNDdoSk8vTERQaGxXWjRWb2h2OE1mTzJtdVRtRWdYNFJwNHJWWVBjYldXOXJIdndkL3ErL3k4bzA5ZSsydzQwRzlwZkhnM1Faeis4ODdXSUo1Wk84QWJTRGtCVURyWFYxZHBadUpGd1hjeEFKc1RWNE9TOUFMYmpkUUFuWWdmWmc5cU1mZ1U2VzRkNTRTOUdvWHdkcjJHVC8wRDI0ajZGVnZFMEd2TFkvVDN3SmV1d3g4ZkprM2M1Y1p0bU5VNlB0K2E5Y2Q5SHhQeDgzZjFXNDc5aEZBUGQ2bWZmMXpIbitqU3NzM1h0VEhwWEhoQUhOLzdwTDY5d2J6LzhjOHQwOTI4QlpQZ3grN0FGc2g1QVVBMWRjbEhOTk43SDhxeTVnQkxaR0RYbTlVQW00a2NNQzJmZmt3dXg1N1BhaCsrRHkxREhvSkpUZGZUd25hTlI0KzlzSGVTdEJyM1FkMzZVSGtOSGVpWWRQeFdjQ3IxUDAycXNwZEl2ZkkrWHVRWTZhM1liZWVmWm5hVzl1VDUraDBiUlo5K2NZL2NsY3Y5KzU3bVBmekhKTE90ZGNiL0ZVZmRqbTM1NjZmWTNzTWFEb2hMd0JZY1hWMU5jMUxPS1p2TEZuQ0VXaTh2RnpZVDVWdnVzRjFQaWhtbTc1OG1DM2d0ZFk4ZGFuN3BER1h4amxaNS8rVWcxNkREYTViMHdQaHYzWCsySEJjWGp4TW4xWUNYaVh1dDNlRi94Z245dVJlajVsUi9mSnZWY2J5akZON2JMc0tXcjR4ZGZYNkp4MnZPbmJ1YkN4STkyTExzT2NtM2Z4K3E0K3BWM3RZZnRsY0FUU2VrQmNBM09EcTZtcFNiNzE4SXl2NEFEUmFEaDJrTVU4blE2ak56NDdUaDhOSEtzR1cvRmFQczY5eVZ5clduNnVHbGU2VFRkWlhnbFpaZThuYUhQb1pWSnN0NWJycy9PRmg4R1BING03M1ZiWG80TFhMSmRzRXZMYS8zNWFkMTByM1BDOFR4bzdQODNxYlZ1V0hBdG5HdmZGaStjYWZxdmhMcUtmamRab0RTV3hoM2tpaCtEd1cvRlZ0OXZsSStpTDlUL1d4ZExLblkzWmF3UEVLc0JFaEx3QzRRMTdDc1ZmcEhBQTBYTzZVTXFqaWYwc1Q5a0ZIR2JiaHk0Zlo5ZGpxbThUYm02dkcxZUloazQ2N0RUUS9PKzZwUWl0ODJMU0R3MHJRYTVNdktLUmc0VFNIbG5qSUdMem82dlBmU3NDcnRQMjJESGc5YmNpUDlGclFhMmZIeWlBRllQTjU3Z3N2ZkRmdjFsdTZSNDcrZVZFYTUvNUt3U1R6KzlyalFHOWxXY1kvdGpBV3BHY3FMdzR3cjVzbmdFWVQ4Z0tBZTF4ZFhWM1cyN0JhTE9Hb3l3M1FhSjMrK2FncTQxdWFzRXNESldCRGY5YmJDOHN6N21TZVNqVk5ENWsrcUViakNOaTJ3K2syL3BLVlphVCszT0N2U1ErRC81dTdldlhzbWx2RzNjVUQzK1V5VGJ1VTdqOEV2TGE3NzVZQnIrY04rOUZlTzIrM2Q0eWt6a2U1VzgvZlZhR2ROZXR4WTJKdjdxWE9vNnFNejR1T1Z1WjM5L1lQR3dzR09VRDdiN1g1c294SkNtMy9VaDh6d3owc3ozaVRzYjBLTkptUUZ3QThVRjdDTWQwWXZxa3M0UWcwV0hxQVhtOGxmRXNUZGtYUWdIV2xEbE0vMTJQb1c4c3o3blNlU3QwbjA3ZnpmM05kYnV5bE9LZmIvTXZtczluYit1V1hEY2VDRkdyNE4zV3VzSVRqdGZHMjIwMzFUYUdyWFllRUJMeTJ2Ky9TbURxcG1oZndXajF2TDV5M2F4OGZyM0tnWTFwdHZoUWJMYkxTMWF1RTYvQTBUdnlkTzNzTjdiMGZ4b0hWSlJsVHlQUDFsdjdxOUdXY1huMmNuQjd3T0wyc2ZDa0lhREFoTHdCNHBLdXJxM0cxV01MeFQ5VUFtaXgzOWZwUHBZc2g3VE5RQWg0cFBlRDR2UjQzZS9VMlVZNjl6Vk5wS2N3WDVxbkdFUEpxdmcrNzZPYVFIeUttNDJmVHppS3BjNFVId2RYWGpoNHBjSldXYXRyMU1uL3ZVMkRnUUowK21yanZudVdsdHY2cG1odndXbnE2Y3Q2T2RQYTY5N2o0RXV5cXQzU3VwU1VaWDFmTldjYVRQYXZIN0hRZG5zNjU5d1c4M1JSaVhDN2oyUHF4SW84RjZkcnAvNnJ0TE1tNGVrK2N1bmU5Q2pLbnV5OEhHa3ZJQ3dEV2tKZHdUTjlvRlg0QUdxM1RQNS9XMjZCYWRFajRwQ0xzUUhvZ2V4cnNQVTNzRmg0aFBkaDRrWU94SEc2ZTBtMjNmRUplemJleitYVSttMDF6WjVGTk85R213TU5mYmUzNmtaZG1IRmVMamg3N0NBaTlTVXM1T1RXMnN1K1duWm5TUS90M0xmdnhsMkd2MUpIdkluZW02Ylg4ZUZpR3VrNXlZRE1kRjAwTmRybitPNUM4ZEhJYXczK3V5dmg4L0dobHJEaE41MGpiNW9pVmtPZkxMZjhUNmN2d0IrM2VkWU5UWnluUVZFK3VycTVVQVFBMm5WQ2ZQRWszaFNmVi9kOTgrYjJlZTBjcUZzUDg3TGkxRjBLZC92a1RSd0JybmpjcDRKckdNZC80WlYwcExEakoyMm5VSmUzcVk3MVh2d3p6WnZrU2JwSWVaQXhUeUVncHdweTN6L0ljOWF0cWxEay9wRzU0eWxEUVBjV2lXOUJqd2lRLzdXTTV2dFNGcW40WmIybisvcFQvcnBNbWQ1cktnWmkwUDEvdjZaOU1JZitoNVJrM1BzNVRzSEdRTi9kbk41Ky9GM2xMOXg0WFRUeVA4N0h3Yk9WNDZMWHMvdVdzM3E4RGgzdUlZM0dZNTVLU2pyOFVFa3hob05OZ0FhVk45OFd6UEI2OHl0dXU1b2gwVHp5cWF6Y0pXb2VITERsdERBR0tJK1FGQU51Y1dKODhTVGV5YisrNGNSTHlDa1RJQzlZK2Q1N2xzZTZ1OFE2V1ZrTmRreElETWZVeC95SWY3NjhjODFUNWcyekxNb1krWjN2VklwVFJWNDBpZkVqN3F6Nm5mTnUrdEh1S3g0VzhQczFuczk0ZTM5c3VRcCtwYytNNDZvUE1OZXYwS2wvajdITzhUTjArUnBabnZITy9wR3ZQWi9tM3kvQk9Nc2kvZjY1S0cxL0xwZU52R1RLOHlMOWZYRWNFT01kejhISjF6Rnc5SmdZci84MjlpWUJHeERHczFDOEhmczZmVzZScjBrbnFFbHJnM1BFcWp4RzdudGMvNWJsOEhMd21Kdys0RmpTR0FNVVI4Z0tBYlUrdVQ1NzBxdHUvQVN2a0ZZaVFGMng4RGkzRFhzTktweU8rU1owWmx0K1duelN0eTFGOTNDKy9DVHR3M0xkT2VyZy8wcm1ycVBOMWtLL0xoYjNpU1ErRzBrT1hVK2RVd2ZjVWp3dDV2VC9Fc256NWdlZTQybTRvSmgyLzZRSHd1TVJPVkxrbXczdzljN1RuODM3WXBKRGNJMm8rTVJmQnpnaG94QnozbXZEbHdQVFpSaHEvdjN5K0VTbjBsZXU3MnMxeFg2SFB6L2thdm9nT3B6bk0vbDlqQ05BMFFsNEFzS3RKOXNtVFFiN3BXZjB3V2NnckVDRXYyT3I1Tkt3V0g5NzVWbm03cEEvNHZnYTYwcStqTHIrNG8rTisrWkIwNE5odjlER2VydWZHZ2loRm42dURQRWU5VkkyRCtocU1xYzhuUzdRMTRaN2ljU0d2MythejJja0IzK3V1dW9vc2orc3YxMEpSSDNqbTVkeVdRZlZEaE5SYjNiMUx5QXQyNmlBaFloNDgvajNMOTh4dnEvSy9KTFg4L0NOdDArV3ZkejIzNVRtOGw3ZmxyNDhPOExNWEUrNjZkdno5M3oxL1RNZ0xLSTZRRndEc2VySjk4bVQxdzJRaHIwQ0V2R0FuNTVWbDdacHJOZEQxNWNOTW9aZnZqdjFlOWEzRGx5QkorZEx5Y2FuRDBGZ3BHbmVlanN4UmV5WFkxZVI3aXNlRnZINDZkTmVySFMzaGVOM1o2dlhTSWJwKzNORGQ0NURob2xTUHR5VjJQTnZ5UHBsVVFsNndLNy9YWTh4SUdZb1lDNGRWYzc4Y21McCtYVmJmTHdWYlZkZVdnNzNGWU9YWHZlcmJVcTBSNW8waXcxM1hqcnQwekQyNzQ0OU1veTg3Q1hDZGtCY0E3R1BDZmZKaytXSHlwWkJYSEVKZXNOUHpLNDE3NlNINnNQSkFvMFRwb2Z6RjZpYlE5ZWh6WUJuNFNwc3VYMlZJSDh5UEs4dkh0V21PMG9GeWQrZlNhVDZYQkx1YWZFL3g4SkRYNS9sczlpelErKzdsKy9QWGUvb25VOUJwV24zcitwRWVrazQzQ1lDdEJMbXFmSzJ4L1AyK2xtdDZ5TFhreUVQVHIvdHI0cDRJZGtiSXE3d3hjVkRwc2h0ZDhlRXVnQ1lUOGdJQVdrdklDL1oycnZXcWI4dkRlTGdSeTQzTERiUnB5Y1U5bmdPRHZPa2dGSXRnbC9OenVlenFvWll3YThwY01xbnlrblhPcFJiZFV6dzg1QlZ5R1p6Ni9hZnpQLzBNTHdPY1F3OEpSUFlLR0tmU3p6STY1TktjUWMrVmlmc2cyQmtocjNMSHhsNitEaCs2RGc5MWYzd2lwQTBRbTVBWEFBQ3dOeXZkVXdhVnNNcytMUjhlVHZNMlNhOGV4Qi9zUEZoZFFtbmdQTmo3dVpDT2YyRVVianMzaDVVT2ZBOXhscytsZEI1TmxLT2RIaEh5Q3YwQS9nQ2R2Wm9vZGU1S3dhNnhqaDgzSG1OcG5CVHlndDM0dVI1M1hJdVVQMDR1dnhob0xqNk05M2tPZHk0QkZFRElDd0FBT0pocllaZjBhOS9lM0V6NjFtVjZzRGJKcnpwemxYY2VwRTNvYTN1V29hNHZtNlhqZU1SNTJidDJYclo5ZmhMcTRnZDV1YVhCQS83bzZYdzJ1eWpnNTBubmZWbythbWd1ZnRTMXA0NGY5eDliYWR3VThvTGRFUEpxMW5pNS9HSmcyaXpudVBzNVBNM2ZBdG9BaFJIeUFnQUF3c2dQMVYva2JWQ1ZzU3pOUHFVdUNkT2JOaDJKR24wZXBGY1BteDhtZlZDZGdnU1RhaEZ3Rk9yQ2VibitlYlFNQ2s4Y0FiUk5wOXNkVm91d2wyRE9qMUtBT25YRVBDa2h2QmZrZUpvNGxtQm5oTHlhTzNZS2ZHM2ZwNVU1ZktvY0FHVVM4Z0lBQU1LYm54MFBxa1hnSzIzcHdYcjZzSzlKRDBxV0hiaVNTWDVkZHVLcVBHQW5MM1g2WXVYNEgrVFh0aTRwdHd3OFR2S3JRQmVIT0MrWDg5THlmSHhSbFJOT3ZoNGEvcktrci9NSXZyZlMzZXRWNVlzSEg2ckZnK0ZUSFQ4ZWZSeE5LaUV2MkpXZkJFNWJNNVl1QTE4RGMvS2pmRnladjUwckFBMGc1QVVBQUJRdEwzWDNyUHIyZ0wyNjl1dWxYVDFZT2J2bHYwK3UvWDZhdHk4RXQ5amlPZENydm9VZ2U5ZU8vL1Q3RWo4QVQxMUNMcTZkUytuMVVnaUZ3czdMdSthbWJRWTFWOFBDVmJVU0ZMNTJIdW44Q0d2cWRMdnAvQjFXN1FwOENYWUJFSEZPN2xYZkFsOXAwL242KzN2cFNaNi9KenAyQVRTUGtCY0FBQUMwd0VvZ3NxcHVEa0wyOG5hYnh3UlN6dTc0M3lhMy9WNzRFWUFTTlBqaDhuSVpwelFmVHdTN0FDaG9YaDVVMzVaV2IxUEg2MldvYXpsMysxSVVRTU1KZVFFQUFBQUF3SnB5bDY5QjllMEJjeW1kdmxJb096ME1ucVJYM1Q0QWFORGN2SnlUZS9rMWJhV0hzait2enR2bWJvQjJFdklDQUFBQUFJQXQ2WFM3eTQ2WmcrcGJwOHorQWQ5U0NuTXRsM0ZOMjFTbkR3QmFQRDh2NStabHQrdG9BYkNQSy9QMnRQb1c2TkpoRXdBaEx3QUFBQUFBMklmY1dTUVpyUHpud2JVL2R0Y1N5Y3N1SHFzdVYvN2IxMS9QWjdPSmlnUEFnK2ZvWHJVSWZ5WExBTmh0Yy9YU2ZTSHVzeHYrMnpSdjErZHdRUzRBN2lYa0JRQUFBQUFBQUFBQUVOai9LQUVBQUFBQUFBQUFBRUJjUWw0QUFBQUFBQUFBQUFDQkNYa0JBQUFBQUFBQUFBQUVKdVFGQUFBQUFBQUFBQUFRbUpBWEFBQUFBQUFBQUFCQVlFSmVBQUFBQUFBQUFBQUFnUWw1QVFBQUFBQUFBQUFBQkNia0JRQUFBQUFBQUFBQUVKaVFGd0FBQUFBQUFBQUFRR0JDWGdBQUFBQUFBQUFBQUlFSmVRRUFBQUFBQUFBQUFBUW01QVVBQUFBQUFBQUFBQkNZa0JjQUFBQUFBQUFBQUVCZ1FsNEFBQUFBQUFBQUFBQ0JDWGtCQUFBQUFBQUFBQUFFSnVRRkFBQUFBQUFBQUFBUW1KQVhBQUFBQUFBQUFBQkFZRUplQUFBQUFBQUFBQUFBZ1FsNUFRQUFBQUFBQUFBQUJDYmtCUUFBQUFBQUFBQUFFSmlRRndBQUFBQUFBQUFBUUdCQ1hnQUFBQUFBQUFBQUFJRUplUUVBQUFBQUFBQUFBQVFtNUFVQUFBQUFBQUFBQUJDWWtCY0FBQUFBQUFBQUFFQmdRbDRBQUFBQUFBQUFBQUNCQ1hrQkFBQUFBQUFBQUFBRUp1UUZBQUFBQUFBQUFBQVFtSkFYQUFBQUFBQUFBQUJBWUVKZUFBQUFBQUFBQUFBQWdRbDVBUUFBQUFBQUFBQUFCQ2JrQlFBQUFBQUFBQUFBRUppUUZ3QUFBQUFBQUFBQVFHQkNYZ0FBQUFBQUFBQUFBSUVKZVFFQUFBQUFBQUFBQUFRbTVBVUFBQUFBQUFBQUFCQ1lrQmNBQUFBQUFBQUFBRUJnUWw0QUFBQUFBQUFBQUFDQkNYa0JBQUFBQUFBQUFBQUVKdVFGQUFBQUFBQUFBQUFRbUpBWEFBQUFBQUFBQUFCQVlFSmVBQUFBQUFBQUFBQUFnUWw1QVFBQUFBQUFBQUFBQkNia0JRQUFBQUFBQUFBQUVKaVFGd0FBQUFBQUFBQUFRR0JDWGdBQUFBQUFBQUFBQUlFSmVRRUFBQUFBQUFBQUFBUW01QVVBQUFBQUFBQUFBQkNZa0JjQUFBQUFBQUFBQUVCZ1FsNEFBQUFBQUFBQUFBQ0JDWGtCQUFBQUFBQUFBQUFFSnVRRkFBQUFBQUFBQUFBUW1KQVhBQUFBQUFBQUFBQkFZRUplQUFBQUFBQUFBQUFBZ1FsNUFRQUFBQUFBQUFBQUJDYmtCUUFBQUFBQUFBQUFFSmlRRndBQUFBQUFBQUFBUUdCQ1hnQUFBQUFBQUFBQUFJRUplUUVBQUFBQUFBQUFBQVFtNUFVQUFBQUFBQUFBQUJDWWtCY0FBQUFBQUFBQUFFQmdRbDRBQUFBQUFBQUFBQUNCQ1hrQkFBQUFBQUFBQUFBRUp1UUZBQUFBQUFBQUFBQVFtSkFYQUFBQUFBQUFBQUJBWUVKZUFBQUFBQUFBQUFBQWdRbDVBUUFBQUFBQUFBQUFCQ2JrQlFBQUFBQUFBQUFBRUppUUZ3QUFBQUFBQUFBQVFHQkNYZ0FBQUFBQUFBQUFBSUVKZVFFQUFBQUFBQUFBQUFRbTVBVUFBQUFBQUFBQUFCQ1lrQmNBQUFBQUFBQUFBRUJnUWw0QUFBQUFBQUFBQUFDQkNYa0JBQUFBQUFBQUFBQUVKdVFGQUFBQUFBQUFBQUFRbUpBWEFBQUFBQUFBQUFCQVlFSmVBQUFBQUFBQUFBQUFnUWw1QVFBQUFBQUFBQUFBQkNia0JRQUFBQUFBQUFBQUVKaVFGd0FBQUFBQUFBQUFRR0JDWGdBQUFBQUFBQUFBQUlFSmVRRUFBQUFBQUFBQUFBUW01QVVBQUFBQUFBQUFBQkNZa0JjQUFBQUFBQUFBQUVCZ1FsNEFBQUFBQUFBQUFBQ0JDWGtCQUFBQUFBQUFBQUFFSnVRRkFBQUFBQUFBQUFBUW1KQVhBQUFBQUFBQUFBQkFZRUplQUFBQUFBQUFBQUFBZ1FsNUFRQUFBQUFBQUFBQUJDYmtCUUFBQUFBQUFBQUFFSmlRRndBQUFBQUFBQUFBUUdCQ1hnQUFBQUFBQUFBQUFJRUplUUVBQUFBQUFBQUFBQVFtNUFVQUFBQUFBQUFBQUJDWWtCY0FBQUFBQUFBQUFFQmdRbDRBQUFBQUFBQUFBQUNCQ1hrQkFBQUFBQUFBQUFBRUp1UUZBQUFBQUFBQUFBQVFtSkFYQUFBQUFBQUFBQUJBWUVKZUFBQUFBQUFBQUFBQWdRbDVBUUFBQUFBQUFBQUFCQ2JrQlFBQUFBQUFBQUFBRUppUUZ3QUFBQUFBQUFBQVFHQkNYZ0FBQUFBQUFBQUFBSUVKZVFFQUFBQUFBQUFBQUFRbTVBVUFBQUFBQUFBQUFCQ1lrQmNBQUFBQUFBQUFBRUJnUWw0QUFBQUFBQUFBQUFDQkNYa0JBQUFBQUFBQUFBQUVKdVFGQUFBQUFBQUFBQUFRbUpBWEFBQUFBQUFBQUFCQVlFSmVBQUFBQUFBQUFBQUFnUWw1QVFBQUFBQUFBQUFBQkNia0JRQUFBQUFBQUFBQUVKaVFGd0FBQUFBQUFBQUFRR0JDWGdBQUFBQUFBQUFBQUlFSmVRRUFBQUFBQUFBQUFBUW01QVVBQUFBQUFBQUFBQkNZa0JjQUFBQUFBQUFBQUVCZ1FsNEFBQUFBQUFBQUFBQ0JDWGtCQUFBQUFBQUFBQUFFSnVRRkFBQUFBQUFBQUFBUW1KQVhBQUFBQUFBQUFBQkFZRUplQUFBQUFBQUFBQUFBZ1FsNUFRQUFBQUFBQUFBQUJDYmtCUUFBQUFBQUFBQUFFSmlRRndBQUFBQUFBQUFBUUdCQ1hnQUFBQUFBQUFBQUFJRUplUUVBQUFBQUFBQUFBQVFtNUFVQUFBQUFBQUFBQUJDWWtCY0FBQUFBQUFBQUFFQmdRbDRBQUFBQUFBQUFBQUNCQ1hrQkFBQUFBQUFBQUFBRUp1UUZBQUFBQUFBQUFBQVFtSkFYQUFBQUFBQUFBQUJBWUVKZUFBQUFBQUFBQUFBQWdRbDVBUUFBQUFBQUFBQUFCQ2JrQlFBQUFBQUFBQUFBRUppUUZ3QUFBQUFBQUFBQVFHQkNYZ0FBQUFBQUFBQUFBSUVKZVFFQUFBQUFBQUFBQUFRbTVBVUFBQUFBQUFBQUFCQ1lrQmNBQUFBQUFBQUFBRUJnUWw0QUFBQUFBQUFBQUFDQkNYa0JBQUFBQUFBQUFBQUVKdVFGQUFBQUFBQUFBQUFRbUpBWEFBQUFBQUFBQUFCQVlFSmVBQUFBQUFBQUFBQUFnUWw1QVFBQUFBQUFBQUFBQkNia0JRQUFBQUFBQUFBQUVKaVFGd0FBQUFBQUFBQUFRR0JDWGdBQUFBQUFBQUFBQUlFSmVRRUFBQUFBQUFBQUFBUW01QVVBQUFBQUFBQUFBQkNZa0JjQUFBQUFBQUFBQUVCZ1FsNEFBQUFBQUFBQUFBQ0JDWGtCQUFBQUFBQUFBQUFFSnVRRkFBQUFBQUFBQUFBUW1KQVhBQUFBQUFBQUFBQkFZRUplQUFBQUFBQUFBQUFBZ1FsNUFRQUFBQUFBQUFBQUJDYmtCUUFBQUFBQUFBQUFFSmlRRndBQUFBQUFBQUFBUUdCQ1hnQUFBQUFBQUFBQUFJRUplUUVBQUFBQUFBQUFBQVFtNUFVQUFBQUFBQUFBQUJDWWtCY0FBQUFBQUFBQUFFQmdRbDRBQUFBQUFBQUFBQUNCQ1hrQkFBQUFBQUFBQUFBRUp1UUZBQUFBQUFBQUFBQVFtSkFYQUFBQUFBQUFBQUJBWUVKZUFBQUFBQUFBQUFBQWdRbDVBUUFBQUFBQUFBQUFCQ2JrQlFBQUFBQUFBQUFBRUppUUZ3QUFBQUFBQUFBQVFHQkNYZ0FBQUFBQUFBQUFBSUVKZVFFQUFBQUFBQUFBQUFRbTVBVUFBQUFBQUFBQUFCQ1lrQmNBQUFBQUFBQUFBRUJnUWw0QUFBQUFBQUFBQUFDQkNYa0JBQUFBQUFBQUFBQUVKdVFGQUFBQUFBQUFBQUFRbUpBWEFBQUFBQUFBQUFCQVlFSmVBQUFBQUFBQUFBQUFnUWw1QVFBQUFBQUFBQUFBQkNia0JRQUFBQUFBQUFBQUVKaVFGd0FBQUFBQUFBQUFRR0JDWGdBQUFBQUFBQUFBQUlFSmVRRUFBQUFBQUFBQUFBUW01QVVBQUFBQUFBQUFBQkNZa0JjQUFBQUFBQUFBQUVCZ1FsNEFBQUFBQUFBQUFBQ0JDWGtCQUFBQUFBQUFBQUFFSnVRRkFBQUFBQUFBQUFBUTJQOFhvRjA3RmdBQUFBQVk1Rzg5alIzRmtlUUZBQUFBQUFBQUFBQXdKbmtCQUFBQUFBQUFBQUNNU1Y0QUFBQUFBQUFBQUFCamtoY0FBQUFBQUFBQUFNQ1k1QVVBQUFBQUFBQUFBREFtZVFFQUFBQUFBQUFBQUl4SlhnQUFBQUFBQUFBQUFHT1NGd0FBQUFBQUFBQUF3SmprQlFBQUFBQUFBQUFBTUNaNUFRQUFBQUFBQUFBQWpFbGVBQUFBQUFBQUFBQUFZNUlYQUFBQUFBQUFBQURBbU9RRkFBQUFBQUFBQUFBd0pua0JBQUFBQUFBQUFBQ01TVjRBQUFBQUFBQUFBQUJqa2hjQUFBQUFBQUFBQU1DWTVBVUFBQUFBQUFBQUFEQW1lUUVBQUFBQUFBQUFBSXhKWGdBQUFBQUFBQUFBQUdPU0Z3QUFBQUFBQUFBQXdKamtCUUFBQUFBQUFBQUFNQ1o1QVFBQUFBQUFBQUFBakVsZUFBQUFBQUFBQUFBQVk1SVhBQUFBQUFBQUFBREFtT1FGQUFBQUFBQUFBQUF3Sm5rQkFBQUFBQUFBQUFDTVNWNEFBQUFBQUFBQUFBQmpraGNBQUFBQUFBQUFBTUNZNUFVQUFBQUFBQUFBQURBbWVRRUFBQUFBQUFBQUFJeEpYZ0FBQUFBQUFBQUFBR09TRndBQUFBQUFBQUFBd0pqa0JRQUFBQUFBQUFBQU1DWjVBUUFBQUFBQUFBQUFqRWxlQUFBQUFBQUFBQUFBWTVJWEFBQUFBQUFBQUFEQW1PUUZBQUFBQUFBQUFBQXdKbmtCQUFBQUFBQUFBQUNNU1Y0QUFBQUFBQUFBQUFCamtoY0FBQUFBQUFBQUFNQ1k1QVVBQUFBQUFBQUFBREFtZVFFQUFBQUFBQUFBQUl4SlhnQUFBQUFBQUFBQUFHT1NGd0FBQUFBQUFBQUF3SmprQlFBQUFBQUFBQUFBTUNaNUFRQUFBQUFBQUFBQWpFbGVBQUFBQUFBQUFBQUFZNUlYQUFBQUFBQUFBQURBbU9RRkFBQUFBQUFBQUFBd0pua0JBQUFBQUFBQUFBQ01TVjRBQUFBQUFBQUFBQUJqa2hjQUFBQUFBQUFBQU1DWTVBVUFBQUFBQUFBQUFEQW1lUUVBQUFBQUFBQUFBSXhKWGdBQUFBQUFBQUFBQUdPU0Z3QUFBQUFBQUFBQXdKamtCUUFBQUFBQUFBQUFNQ1o1QVFBQUFBQUFBQUFBakVsZUFBQUFBQUFBQUFBQVk1SVhBQUFBQUFBQUFBREFtT1FGQUFBQUFBQUFBQUF3Sm5rQkFBQUFBQUFBQUFDTVNWNEFBQUFBQUFBQUFBQmpraGNBQUFBQUFBQUFBTUNZNUFVQUFBQUFBQUFBQURBbWVRRUFBQUFBQUFBQUFJeEpYZ0FBQUFBQUFBQUFBR09TRndBQUFBQUFBQUFBd0pqa0JRQUFBQUFBQUFBQU1DWjVBUUFBQUFBQUFBQUFqRWxlQUFBQUFBQUFBQUFBWTVJWEFBQUFBQUFBQUFEQW1PUUZBQUFBQUFBQUFBQXdKbmtCQUFBQUFBQUFBQUNNU1Y0QUFBQUFBQUFBQUFCamtoY0FBQUFBQUFBQUFNQ1k1QVVBQUFBQUFBQUFBREFtZVFFQUFBQUFBQUFBQUl4SlhnQUFBQUFBQUFBQUFHT1NGd0FBQUFBQUFBQUF3SmprQlFBQUFBQUFBQUFBTUNaNUFRQUFBQUFBQUFBQWpFbGVBQUFBQUFBQUFBQUFZNUlYQUFBQUFBQUFBQURBbU9RRkFBQUFBQUFBQUFBd0pua0JBQUFBQUFBQUFBQ01TVjRBQUFBQUFBQUFBQUJqa2hjQUFBQUFBQUFBQU1DWTVBVUFBQUFBQUFBQUFEQW1lUUVBQUFBQUFBQUFBSXhKWGdBQUFBQUFBQUFBQUdPU0Z3QUFBQUFBQUFBQXdKamtCUUFBQUFBQUFBQUFNQ1o1QVFBQUFBQUFBQUFBakVsZUFBQUFBQUFBQUFBQVk1SVhBQUFBQUFBQUFBREFtT1FGQUFBQUFBQUFBQUF3Sm5rQkFBQUFBQUFBQUFDTVNWNEFBQUFBQUFBQUFBQmpraGNBQUFBQUFBQUFBTUJZTFhLclRjeGNnQUVBQUFBQVNVVk9SSzVDWUlJPSJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTAxLTA2IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiVC1TaGllbGQgRklETzIiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlUyRjEwMDAyMDI1MDEwNjAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTAxLTA2IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDMtMDYifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyIyOTc4OWQ5OWQzMjE0ODVlN2JmNTVkZGQyMDExMmRkZjk4YjI2ZTdmIl0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjI5Nzg5ZDk5ZDMyMTQ4NWU3YmY1NWRkZDIwMTEyZGRmOThiMjZlN2YiXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ill1YmlLZXkgNSBTZXJpZXMgKEVudGVycHJpc2UgUHJvZmlsZSkifSwiZGVzY3JpcHRpb24iOiJZdWJpS2V5IDUgU2VyaWVzIChFbnRlcnByaXNlIFByb2ZpbGUpIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NiwicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoyfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCIsInJlbW90ZV9oYW5kbGUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlEU0RDQ0FqQ2dBd0lCQWdJVVVjbU1YelJJRk9nR1RLMFRiM2dFdVpZWmtCSXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFEbTU1NWJXWTlXVyt0T1kwcklXSGxkaCthTmFub0NaQ0ZoN0drM1laclFtUFV3MGhrU0c2cVlIUXRQK2ZaeVMzM1ZFcnZnK0JRcW5tdW1nTmhmeEZya3dFWkVMZWlkQmNDOEM0QWc0bnFxaVBXcHpzdkkxN05jeFlsSW5MTkxGY1pZLytnT2lONlpPVGloTzUvdkJaTWJqOXJpYUFjcWxpWW1OR0pQZ1RjTUdhRUF5TXpFTU55Mm5tNkVwK3BqUDVhRjZnaTIxdC9VUUZzdUoxajJSai95bk0vU2RSdCtlY2FsNU9Zb3R4SGtGYkw5dnZ2MkEyT3Y1SVRaQ2x3NGJPUzlucHlwUWltT1o1UUFZeXRtWWFRcFdsL3BNWXo2elNqOFJxa1ZETkVKR3FOZlRLQTJpdkxZd1g2bFN0dE1QYXBnMEo4NGw5WDB2b1ZOL0ZwUzRWQ1ZBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlFnS0ZBaEc2UmFXK2hUeTUyZHhlVDhiQzk2SHpBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBWU16Z0xySkxJcjBPb3ZRbkFaclJJR3VhYmlIU1VLU21iTFJXcFJrV2VBdHNDaERFSHBYY0ovYmdETktZV29IcVE4eFJVakI0Q3llcFlldmMzWWxyRzhvN3pIeHBmVmNhb0w1U2V1Smt6SHhLbjRiVGFTcDkrTXZ3YW1ucDY0a1pNaU5iRkxrbmZQOWtZS29SSGtNV2hlUkoxVXNQMXo0U2Nta0NlSUxmc01zNnZxb3ZxaldDbEZzSnBCY3NsdVlIV0Y3YkJKMW40UndnK0FURW9wWTRJZ0d2Nlp2d2MrQTlyK0FUMmhxcG9Ta1lvQWwrQU5Zd2dzbE9mOXNKZTBWK1RBOVlZL1VsYUJtUFBUZDAvL3I5d3ZjZVBXWmtQaktvQUMvelVOaGZEYmg0TFY4R0hzM2x5WDJYb21ML0xOYzhKWXp5SWFERWhHUXZlb1BoaC90cjFnPT0iLCJNSUlEUGpDQ0FpYWdBd0lCQWdJVVh6ZWlFREpFT1R0MTRGNW4wbzZaZi9iQndpVXdEUVlKS29aSWh2Y05BUUVOQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU1aNi9UeE04cklUK0Vhb1B2Rzgxb250TU9vLzJtUTJSQndKSFMwUVpjeFZhTlh2bDEyTFVoQlo1TG1pQlNjSVpkMVJueDFvZDU4NWgrL2RoSzdoRW03SkFBTGtLS3RzMWZPNTNLR05MWnVqejVoM3dHbmNyNGh5S0YwRzc0Yi9VM0s5aEU1bUdORDZ6cVljaENSQUhmcllNWVJERjRZTDBYNEQ1bkdkeHZwcEF5Nm5rRW10V21NbndPM2kwVEF1Y3NyYkU0ODVIdkdNNHIwVnBnVmRKcHZnUWppVEpDVElxK0QzNWh3dFQ4UURJdituR3ZwY3lpNXdjSWZDa3p5Q2ltSnVraFl5NktvcU5NS1FFZHBOaVNPdld5RE1UTXQxYndDdkV6cHc5MXUrbXNVdDRyajBlZm5POXMwWk93ZHdNUkRuSDR4Z1VsNVpMd3JyUGtmQzEvMENBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUI4R0ExVWRJd1FZTUJhQUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUU13RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCRFFVQUE0SUJBUUMzSVcvc2dCOXBaOGFwSk5qeHVHb1grRmtJTGtzMHdNTnJkWEwvY29VdnNyaHpzdmw2bWVQTXJiR0pCeUoxWG5xdUI1c2djUkVORnhkUUZtYTNtaW84VXBmMW93TTFacmVYckowbUFERzJCcGxxYkpueGl5WWErUjExcmVJRlRXZUloTU5jWktzRFpyRkF5UHVGakNXU1F2Sm1OV2U5bUZSWUZnTmhYSktrWEliNUgxWGdFRGx3aWVkWVJNN1ZvbEJObGxkNnBSRktsWDh1c3Q2T1RNT2VBRGwyeE5GMG0xTFRoU2RldVh2RHlDMWc5K0lMZnozUzZPSVlnYzNpcm9SY0ZEMzU0ZzdyS2Z1NjdxRkF3OWdDNHlpMHhCVFByWTk1cmg0L0hxYVVZQ0EvTDhsZFJrNkg3WGszNUQrV1ZwbXEyU2gveFQ1SGlGdWhmNHdKYjBiSyIsIk1JSURTakNDQWpLZ0F3SUJBZ0lVVG5iYkdJUjJOSHZ6cUlLRkFlUXdHMVhCaXMwd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JCSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVFZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU9zWGozazA0QmFuNFRZZHRaS3FEL09QSnh5RHlhUG1DQlVGVWlhWklnVHRlWm5qM1gyNURoZ3BaWlhzQzREMHlkSWNybEE2d05VSW5PUkwvTDl6QmJURUlNQVZNR282ZzdVS0FtYjJNRjZBSGJuaFlKZDllaWt1cFZOV1NoSE5ZTmM0R0JkTzFZTjZBZlVxdkpoSGJlM1Y0U05NUG1CUkVLSlBWejdUaHdnbWdnVGU4V3MySzAvd3NxdjJ3U0U3cGJDQnNVWmhJWDUxYlpNM3BxRHdKUFRtUkZFdnQwLzZ0RzVlTzhGM2oxNE9YcWZFaG1qbjFWdnhLRFlRT0xaQXhDd3dnQzBQNENkZld2M3k4UFNSOEkzNTRoTzFZK0d6Tmp2SXFYMzhOS0x5d3VJWUhGZXJPeE5seEVNQnZGaFlCdVJ1WUFra2dVYVBxTjZVQmhzSUxyc0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ0NvUkhoaXlObmJuWFJXSUw2WkJYb0JYOVlUTUI4R0ExVWRJd1FZTUJhQUZDQW9VQ0VicEZwYjZGUExuWjNGNVB4c0wzb2ZNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUNRRmFmSkkxLzVXZzlDRUVpbUUxUlA1NFJnUXdUTlRPT1FzTEFDVGUrckl0bEZRekM5WkRoclY4Mjh5WDdqenkrQUFzcDNpeks3VDF0aDJkbDdtK3R1MHN3MlBhL29sYzAybnQ2UHlJdzM0OGdhSHpoSTErMEtFNDVxeHZGRGVMMmxNeGJQZkNZdnlFRWFZemppUUVMVTU5NTFwWEdXeUtNYS80Zkx0TytaS09YaE11VmVxNHJYRFBJNTRXNkpIT2lBYWlLZGl3KzVlM2Mya3QvakZJUXRNNnZNWGc5TE5GemRqRVROdDIwVlg5UWV2UnBGWmZ1Y01HOXdDYVFEb0ZsUHpwVE1KS2hQZXYvaW1KbVpZaEtmcjBsTGNlbXRxakl4TEFvcVpkT1lmSEJnNit2QWNkUEkvaWF1R3BVQXY3WCtVS05tRHdqWjJCYUg0c0x3aEIybSIsIk1JSURTakNDQWpLZ0F3SUJBZ0lVUjM4bXEyNlNmMnN6VlYyQmRHNldFTjdrdVdVd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVJZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU5ZMFdiOW9Qb1JvS29ReVdQYUpwejExdnJXVGc2elR0bU5qMlZvS1JueXZLR1JxcHpiODN3NWw2WUE5NlVZa1lCRFFQMGlsTzJEUGU2d1dxVlI1ekRmUnpkY0g4YmgrTDdkR0d2YWU2aFJUWmhrRmtDcFhEczRIY2NrbnJEZjhGQ2xKN0hlMzlKZjQyL0cxUW0yeno5V1dtclBYdGdpSy94MDVHanNRZkd1REcxemY1UVRVVWllOGx3eW1LM1RmZE92TmVlSkFBUGUycG43SXRmUmIrclZyTldpRHpsUm4ydk5uWjJ3UG80d0gvV0o2ZGhYWkcrck1XVCthNkJvY2cxVWZJdzZrZHVuRzRiVHBaenN2YWNGWXlSMG1wZitEZU9ucFNXQW15d0pXSHZUbGYyWVh4RnllWGNUQUNkUWxjTU5HSjJWaFpRNDh4dFA1L1JCUC84a0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ2h5NDJva2lxY1RTMWlxYS9IUldqa0JuNEgvTUI4R0ExVWRJd1FZTUJhQUZPcTNRcENlREh0a2V0dFVmQU82ZkU2ZjJLRmhNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUFuK1JISVBidE1FRE5kVDFnOEgvUml0QWtVZExnQXQxdFdHV25sajlrbmJ2NC80R2xYN0M5cDQ1ZWZQTzkvYVpMNk9WMVhSS0JpNkttdEJXNUs3bnVZRW5NeC81QnFCU2JMVDdyaGR1QzQ5VEJlTWI5UEhkWHNUbFNWTlllZnIxZEdpZHI0ajB4VkJRTGIxcmtuREFiZFdEektmdm5heUtPOEZyd2U3SHg4NDNNRy9ySitjMFhydVV2YmZWVENITGlJV2hNN29ORGhMOHhvYjZ4VW85S0xLY1NMK0l0WXNPMy85V2I4UTlHanNxTDRGWHNEY0cxU2FZaDdLcGZ1TW1PaXhxekpaTzJuSWljUFlSZzFJMlN1aVVmWU83MHRtZEhjYmwra1NRbVNZdDdycTR2aUlMZzJHeDNqOXJJVHVXVGpiYVVhU1NReGdPbU1TSHV5ek1BQyIsIk1JSURTRENDQWpDZ0F3SUJBZ0lVRHFFUncrNFJuR1NnZ3hnVWV3SkZFUERSWjNZd0RRWUpLb1pJaHZjTkFRRUxCUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURJN1huSCtadkR3TUNRVThNOFplVjVxc2N1Ymx2VllhYVJ0M1liYXhuOWdvZEx4NXN3SDBsWHJkZ2poNWg3RnBWZ0NnWVlYN0U0YmwxdmJ6VUxlbXJNV1Q4TjNXTUdVZThRQUpiQmVpb1Y3Vy9FK2hUWlAvMFNLSlZhM2V3S0JvNlVMZU1uZlFaRHJWT1JBazh3VExxMnY1TGxqNXZNajdKdE9vdEthOUo3bkhTOGtMbXpYWFNhajBTd0VQaDVPQVpVVE5WNHpzMWJ2b1RBUVFXckw0L0o5UXVLdDZXQ0ZFNW5VTmlSUWNFYlZGOG1scUsyYngyejZva1ZsdHlEVkxDeFlicFVURUx2WTF1c1IzRFRHUFVvSUNsT200Y3Jwd25EUkxWSHZqWWVQR0JCLy9wRXl6eEEvZ2NTY3hqd2FIMVpVdzliblNiSHl1cktxYlRhMUt2akFnTUJBQUdqWmpCa01CMEdBMVVkRGdRV0JCVHF0MEtRbmd4N1pIcmJWSHdEdW54T245aWhZVEFmQmdOVkhTTUVHREFXZ0JUUzd1OWFJbzA2YlZ3amx6M3loZFVtOFNWN2tqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQTRHQTFVZER3RUIvd1FFQXdJQmhqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFxUWFDV014VEdxVlZYN1NrN2trSm1VdWVUU1lLdVU2K0tCQlNnd0lSbmx3OUs3SGUxSXB4WjBoZHdwUE5pa0tqbWN5RmdGUHpoSW13SEpneHh1VDkwUHczdllPZGNKSk5rdERnMzVQWE9melNuMTVjRkF4MVJPMG1QVG1JYjhkWGlFV09wem9YdmR3WERNNDFaYUNEWU1UN3c0SVF0TXl2RTd4VUJacTJianRBbnEvTkRVQTdiZTRIOEgzaXBDKy8rTktsVXJjVWgrajQ4SzY3V0kwdTFtNkZlUXVlQkE3bjA2ajgyNXJxRHFzYUxzOVRiN0tBSEF3OFBtcldhTlBHMmtqS2VyeFBFZmVjaXZsRmF3cDJSV1p2eHJWdG4zVFYyU0J4eUNKQ2tYc05EMDVkQ0VyVkhTSklzK0JkdFRWTlk5QXd0eVBtbnliMHY0bVNUenZXZHc9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFmQ0FZQUFBQ0dWcytNQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUhZWUFBQjJHQVYyaUU0RUFBQWJOU1VSQlZGaEhwVmQ3VE5WMUZELzNkNTl3ZVFTSWdTOUFRQVhjRkxBUVppOWZwZVZ6MXRZL1dUWnI1V3hwYzdXNWtuTGE1akkzWjg1c3JTMm5NMnNqdFd3WlM3SVVINEg0eENuRVF4NERBWkY3NFY3dXM4ODV2OS9sSW5CdlZKL0I0UHY5bnUvNW51LzVudk01NTZmekEvUXYwSGIvSXJYM1ZGS1BvNDVjbm00aW5VSVdZd0xGUm1aUVV1d2pGRy9OMWlSSGgxRVowTlJWUnVkcXQxQmQrMm5TS3lTL09oeXMwK2xrM2UvM2tROXF2RDRaVXRhNFZWU1V1WTBlaXB5aVRoQWZvY29PUlZnRHV1dzNxS1JpQWQzcmJjRXRqVGpZSW9mNldhSHNDbXpWUFdDTXgrY2doOHRMcVdNS2FNV3NVakxxbzJSdEpJUTBvT3ptZXJwUXU0ZXNaZ3NPTmtHeEg3ZDBrZHZUVDE3czRPTVU3Vkk4WmhqZ0dhTStBcTlpRU51OFBpZjF1ZHowN013dktXZjhHbFZvQ0VZMDRQQzVXZFRhWFlGYlI4dk52TDUrM0tnZmI1eE5NeWE5UmFtSml5bmFNbEdUVnRGbHI2YmE5dStwcW5FWDR1TXVSUmdqU1lFaHJON3V0RkZlNmxxYWw3TmZrdzVpbUFHSHluUHBiazhWbVkweHN0bnB0bEZDVkNZdHpUdUJOODNRcE1MalR0ZXZkUHpTVW5KN2U4bWtqeFozOWZYYktEZmxkWnFidlUrVFVnR25CVkY2ZlEyaVBIZzRXMTZVV1V3dnpiazE2c01aRStQbjBwdno3SlNldUF5ZXM4bGNwQ21hS3VvL3ArcVdyMlVjd0lBSFdydlAwWUV6aFhBdExBYnNzSGhwN2lHYW12eWlqUDhyeXFyWFVXWDlYb293eHlBdWZOQnJwNDNQT0JGWFpsa2Y4TURSaXFjcHlvd0F3cHV6MngrZld2ei9EdGRlOXNtc3p5Z3RjUjZDMXdiZHpCbDZPbHE1V05ZWTRvR2F0aEpNcmtURXgwakFSU0hBVnMrNXJZa1FOWGIrUWdmUExzUTZnWHlJbnNyZVFmbXBtN1JWRllmTDg2bjFmaVVPa1l2U2hrVVB4dmJ1a3pveTZLMWloTTFobzNYelc2RXZTZlhBK2RwaVdHYVdkK2RvWHpMem1Hd0tZRkxDQXNSQWxQQkFoTWxDRlhVN3RCVVZQcjhIZ1ZjSkhXcStGMDBwbHIrRE1UZHJQNHp2eFkxMWtOTWh4VCtTZVRHZytkNFY1TFFKaXR5VUdKTkI4VkZac2pnWUJaTS9JSS9YQ1RrajBxeURPcEYyQVZRMTdDSWpVcC9EblQxVWtMNUY1Z2RqK3NTMXdnMWdFM2dpZ202MGZDWHpTblBYYnlBUGJJWHYrSURwRTE2VGhhSElTOXNreWhsbU1FNUYzY2ZxQUtocTJDMEU1UEgxZ1lhWGFMUERrWkcwSERKT25LV0hwNTFJMHo1U091eDhlMVdBdVp6ZEhRclRrcDhUbWpYb0krbGEwd0dac3p1YnFiTzNpZlE2QS9XN3ZWU1lzVjNtUjBKS3drS2M0V0hpQmttUjhJM0NDZ0k4N29PTDRxelQ1UCtSVUpCZWpFT2dBUEs4aFlQemF0TStlSVRwMklPOXlUUW1lcm9tUFJ4eDFxeEFjc2lsZS91YlNlRWJjV1FHWUVDZ2hjTFkySHlLam9nakgyNWhNcGpwVXYxT3VnbGk0ZWgyZVJ3ME8zMmJKamt5dUNnTnpnMHZ6bFlNU2lTczB1b280TUc3aE1PakNFYVgxeUZFMG5TdmpCenVUbkVwSzg2WjhJb3FGQUl1Ync4a2c5QXJFYVJFV1NaSStqSDRYYnA2ZzlFOUVuSlQzb2FSekROK01VSkJRREhuNTZhOG9VbUVCdXNPeEJzL041K3RKRWJQa0FGRGo4VUd2T3MvSVd2Y1NnbEdCaHZTNy9GVFlmcFdHWWREWThmUEF4V1NBMzVzVEM0cDQrTG00QWFxSW9QZVF0ZnVmSzZKaDBaaHhsYnNVWE9TbVhOaWZENVpUQWt5RG9mYmJjY2x4bkE4V05BcXhDYlJOeWtoWHhRcGFEdzY3ZlhVWWJzaUcwS2h0djJvZUl2aDhyaFFNWU9jRUFxWEcvZUkrem5nT2M1eXhyOHE4MklBTTFjL0ZMRk9wbHF1NWVGUVhyTVp6R2NWQ2pZYkxXRzVJNEJUMWV1UnJsYnh0Tk90TWl0RERFaExYSUl5bkFBdnVPRVdFM1gzTmRBZnQ5NFZnYUc0MlhJUXQwWlg2UGVDRS9xUUZlOXJLNkh4N1lVNTBLdkg3Zlc0ZlMrcTdLS0JKeHNnZ0JYNXBTQUdoMWpJclZoNXpRNnczUmZhYWhCWG0vYUNiQ1pUakNVRlVUeVdacVc5cDYyTWpKUFhWcU9yUGdNTzROdjc0R2tmK293ZnROVkJEUW5qRkpxSFN3MTdwWHZoV1c1S1pxZS9RNDlOL1VTVENBVldvUVhGSUhCSFhYZTNGUHJVRHN1R0RtdEYvaEhLVEhwZWt4aGlBT1BJK1NKcTZTNkhGNEk5WVd6a0JKVG80NmlVTXpXcDhQaXIvUmlkdUx4S1lzU2tzVjh2TGxPUXZoR1gyWWxSME9CaEJqQyt1L2dFY3ZZMEFwSzdZazQxTnhqUFNRbldGSFRGNjZVcmpnZXZCOEN1NWErbDJ2WVNSUHR1VkRvNzNoaGRNU0huVVg3dFRqc1ZaR3hBbC9XcHRpT0lFUTFnbkwyOW1YNi90UjF0bWxrWWo4VzRYK0NTaldjVURHWTFOcFMvQzdoU0txaU1MTS9sMlFtU1daNzNEZHorZ2lvOEJDRU5ZUFE0NnFua3p3WFVicXZCa3hqVVFzV2ZaRmdidW8zckFmK3dON2pPTzkwK3lueDRQaTNMKzBuWUwxU2NoRFVnQVA0Z1BWLzdJZDFxKzFIU2htdUdrSXFXUlBneXhNRnFQOEhmalRualh3WTViUWZiSmN0Nk9JektnTUhvdEYvSGUxZWdzYXhIU3FHNndmZG1RNXg4TnlURkZxQmNwMmlTb3dIUjN5azUrMzZoRjd2WEFBQUFBRWxGVGtTdVFtQ0MifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMi0yMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzYsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWXViaUtleSA1IFNlcmllcyAoRW50ZXJwcmlzZSBQcm9maWxlKSIsImNlcnRpZmljYXRlTnVtYmVyIjoiVTJGMTAwMDIwMjQxMjIyMDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMTItMjIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTAyLTA2In0seyJhYWd1aWQiOiJjNjExYjU1Yy03N2IyLTQ1MjctODA4Mi01OTBlOTMxYjJmMDgiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6ImM2MTFiNTVjLTc3YjItNDUyNy04MDgyLTU5MGU5MzFiMmYwOCIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJJZGVtIEtleSAoQ29uc3VtZXIgcHJvZmlsZSkifSwiZGVzY3JpcHRpb24iOiJHb1RydXN0IElkZW0gS2V5IChDb25zdW1lciBwcm9maWxlKSIsImFsdGVybmF0aXZlRGVzY3JpcHRpb25zIjp7ImVuLVVTIjoiR29UcnVzdCBJZGVtIEtleSAoQ29uc3VtZXIgcHJvZmlsZSkifSwiYXV0aGVudGljYXRvclZlcnNpb24iOjI2MjE0NSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9LHsibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyIsInNlY3AzODRyMV9lY2RzYV9zaGEzODRfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlCdERDQ0FWcWdBd0lCQWdJSkFNdWprVnlpdzkzOU1Bb0dDQ3FHU000OUJBTUNNRHN4SURBZUJnTlZCQU1NRjBkdlZISjFjM1FnUmtsRVR6SWdVbTl2ZENCRFFTQXlNUmN3RlFZRFZRUUtEQTVIYjFSeWRYTjBTVVFnU1c1akxqQWdGdzB5TlRBNE1qa3dPRFV5TlRGYUdBOHlNRFV3TURneU9UQTROVEkxTVZvd096RWdNQjRHQTFVRUF3d1hSMjlVY25WemRDQkdTVVJQTWlCU2IyOTBJRU5CSURJeEZ6QVZCZ05WQkFvTURrZHZWSEoxYzNSSlJDQkpibU11TUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFcjN6bjBadHVITGhmTWhIdmF1K0VhQVJreURBU3l1dFZGMjh4WXN0cU55V3RiamJPbDdsOXlTc1dFdENoYVpLbmFubnRuWEJiSHk4NVo1T3kwMDBnZXFORk1FTXdFZ1lEVlIwVEFRSC9CQWd3QmdFQi93SUJBREFPQmdOVkhROEJBZjhFQkFNQ0FRWXdIUVlEVlIwT0JCWUVGTDlOYk1vMFhDbzY5dzkzZlJOaW53YkZGanJvTUFvR0NDcUdTTTQ5QkFNQ0EwZ0FNRVVDSVFDZm9sM0Vmcno4VkNnU2t0b3c2ZDNVWlFKNkppOE1aZmFtRW1rVVlPUHdBUUlnU2ZVOXV0dHN1bjlia2x2ay9GdmxHYTFTOHB4SUhFTXdSRVI5WW12cEpvUT0iLCJNSUlCcVRDQ0FVK2dBd0lCQWdJQkFUQUtCZ2dxaGtqT1BRUURBakE3TVNBd0hnWURWUVFEREJkSGIxUnlkWE4wSUVaSlJFOHlJRkp2YjNRZ1EwRWdNVEVYTUJVR0ExVUVDZ3dPUjI5VWNuVnpkRWxFSUVsdVl5NHdJQmNOTWpFd016QXlNRFl4T0RRNFdoZ1BNakExTVRBeU1qTXdOakU0TkRoYU1Ec3hJREFlQmdOVkJBTU1GMGR2VkhKMWMzUWdSa2xFVHpJZ1VtOXZkQ0JEUVNBeE1SY3dGUVlEVlFRS0RBNUhiMVJ5ZFhOMFNVUWdTVzVqTGpCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQkl6a01kdE5adDBaT3pPK3UxZjJFS1pSU25maHZ5d2Job25CRjlOU1BxMldHN251UmkveXZaOGxEandwNWRhclE2T2RaZytIcWJTU2VYSlh3N1VwY2xTalFqQkFNQThHQTFVZEV3UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdFR01CMEdBMVVkRGdRV0JCUmpXeFRvMUVxMzNacnhmTERXc3NkZGJEL3ZaVEFLQmdncWhrak9QUVFEQWdOSUFEQkZBaUIrRTA5R3ptY1lsTTk1cVQvYWZuUFU5cTZYSm14T1NLV0FSTzUra2dVbldnSWhBSWE5bjVwNDB0Y0dmbWVGNi9XdllvakFOdXlrUXFoVms4V25mZzE1UzY5ciJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFqQ0FZQUFBRDE3Z2hhQUFBQUJHZEJUVUVBQUxHT2ZQdFJrd0FBQUNCalNGSk5BQUNIRHdBQWpBOEFBUDFTQUFDQlFBQUFmWGtBQU9tTEFBQTg1UUFBR2N4elBJVjNBQUFLTDJsRFExQkpRME1nVUhKdlptbHNaUUFBU01lZGxuZFVWTmNXaDgrOWQzcWh6VERTR1hxVExqQ0E5QzRnSFFSUkdHWUdHTW9Bd3d4TmJJaW9RRVFSRVFGRmtLQ0FBYU9oU0t5SVlpRW9xR0FQU0JCUVlqQ0txS2hrUnRaS2ZIbDU3K1hsOThlOTM5cG43M1AzMlh1ZnRTNEFKRThmTGk4RmxnSWdtU2ZnQjNvNDAxZUZSOUN4L1FBR2VJQUJwZ0F3V2VtcHZrSHV3VUFrTHpjWGVycklDZnlMM2d3QlNQeStaZWpwVDZlRC8wL1NyRlMrQUFESVg4VG1iRTQ2UzhUNUlrN0tGS1NLN1RNaXBzWWtpaGxHaVprdlNsREVjbUtPVytTbG4zMFcyVkhNN0dRZVc4VGluRlBaeVd3eDk0aDRlNGFRSTJMRVI4UUZHVnhPcG9odmkxZ3pTWmpNRmZGYmNXd3loNWtPQUlva3RnczRySGdSbTRpWXhBOE9kQkh4Y2dCd3BMZ3ZPT1lMRm5DeUJPSkR1YVNrWnZPNWNmRUN1aTVMajI1cWJjMmdlM0l5a3pnQ2dhRS9rNVhJNUxQcExpbkpxVXhlTmdDTFovNHNHWEZ0NmFJaVc1cGFXMW9hbWhtWmZsR28vN3I0TnlYdTdTSzlDdmpjTTRqVzk0ZnRyL3hTNmdCZ3pJcHFzK3NQVzh4K0FEcTJBaUIzL3crYjVpRUFKRVY5YTcveHhYbG80bm1KRndoU2JZeU5Nek16amJnY2xwRzRvTC9yZnpyOERYM3hQU1B4ZHIrWGgrN0tpV1VLa3dSMGNkMVlLVWtwUWo0OVBaWEo0dEFOL3p6RS96andyL05ZR3NpSjVmQTVQRkZFcUdqS3VMdzRVYnQ1Yks2QW04S2pjM24vcVluL01PeFBXcHhya1NqMW53QTF5Z2hJM2FBQzVPYytnS0lRQVJKNVVOejEzL3ZtZ3c4RjRwc1hwanF4T1BlZkJmMzdybkNKK0pIT2pmc2M1eElZVEdjSitSbUxhK0pyQ2RDQUFDUUJGY2dERmFBQmRJRWhNQU5Xd0JZNEFqZXdBdmlCWUJBTzFnSVdpQWZKZ0E4eVFTN1lEQXBBRWRnRjlvSktVQVBxUVNOb0FTZEFCemdOTG9ETDREcTRDZTZBQjJBRWpJUG5ZQWE4QWZNUUJHRWhNa1NCNUNGVlNBc3lnTXdnQm1RUHVVRStVQ0FVRGtWRGNSQVBFa0s1MEJhb0NDcUZLcUZhcUJINkZqb0ZYWUN1UWdQUVBXZ1Vtb0oraGQ3RENFeUNxYkF5ckEwYnd3ellDZmFHZytFMWNCeWNCdWZBK2ZCT3VBS3VnNC9CN2ZBRitEcDhCeDZCbjhPekNFQ0lDQTFSUXd3UkJ1S0MrQ0VSU0N6Q1J6WWdoVWc1VW9lMElGMUlMM0lMR1VHbWtYY29ESXFDb3FNTVViWW9UMVFJaW9WS1EyMUFGYU1xVVVkUjdhZ2UxQzNVS0dvRzlRbE5SaXVoRGRBMmFDLzBLblFjT2hOZGdDNUhONkRiMEpmUWQ5RGo2RGNZRElhRzBjRllZVHd4NFpnRXpEcE1NZVlBcGhWekhqT0FHY1BNWXJGWWVhd0IxZzdyaDJWaUJkZ0M3SDdzTWV3NTdDQjJIUHNXUjhTcDRzeHc3cmdJSEErWGh5dkhOZUhPNGdaeEU3aDV2QlJlQzIrRDk4T3o4ZG40RW53OXZndC9BeitPbnlkSUUzUUlkb1JnUWdKaE02R0MwRUs0UkhoSWVFVWtFdFdKMXNRQUlwZTRpVmhCUEU2OFFod2x2aVBKa1BSSkxxUklrcEMwazNTRWRKNTBqL1NLVENacmt4M0pFV1FCZVNlNWtYeVIvSmo4Vm9JaVlTVGhKY0dXMkNoUkpkRXVNU2p4UWhJdnFTWHBKTGxXTWtleVhQS2s1QTNKYVNtOGxMYVVpeFJUYW9OVWxkUXBxV0dwV1dtS3RLbTBuM1N5ZExGMGsvUlY2VWtackl5MmpKc01XeVpmNXJETVJaa3hDa0xSb0xoUVdKUXRsSHJLSmNvNEZVUFZvWHBSRTZoRjFHK28vZFFaV1JuWlpiS2hzbG15VmJKblpFZG9DRTJiNWtWTG9wWFFUdENHYU8rWEtDOXhXc0pac21OSnk1TEJKWE55aW5LT2NoeTVRcmxXdVR0eTcrWHA4bTd5aWZLNzVUdmtIeW1nRlBRVkFoUXlGUTRxWEZLWVZxUXEyaXF5RkFzVlR5amVWNEtWOUpVQ2xkWXBIVmJxVTVwVlZsSDJVRTVWM3E5OFVYbGFoYWJpcUpLZ1VxWnlWbVZLbGFKcXI4cFZMVk05cC9xTUxrdDNvaWZSSytnOTlCazFKVFZQTmFGYXJWcS8ycnk2am5xSWVwNTZxL29qRFlJR1F5TldvMHlqVzJOR1UxWFRWek5YczFuenZoWmVpNkVWcjdWUHExZHJUbHRITzB4N20zYUg5cVNPbkk2WFRvNU9zODVEWGJLdWcyNmFicDN1YlQyTUhrTXZVZStBM2sxOVdOOUNQMTYvU3YrR0FXeGdhY0ExT0dBd3NCUzkxSG9wYjJuZDBtRkRrcUdUWVlaaHMrR29FYzNJeHlqUHFNUG9oYkdtY1lUeGJ1TmU0MDhtRmlaSkp2VW1EMHhsVEZlWTVwbDJtZjVxcG0vR01xc3l1MjFPTm5jMzMyamVhZjV5bWNFeXpyS0R5KzVhVUN4OExiWlpkRnQ4dExTeTVGdTJXRTVaYVZwRlcxVmJEVE9vREg5R01lT0tOZHJhMlhxajlXbnJkemFXTmdLYkV6YS8yQnJhSnRvMjJVNHUxMW5PV1Y2L2ZNeE8zWTVwVjJzM1lrKzNqN1kvWkQvaW9PYkFkS2h6ZU9LbzRjaDJiSENjY05KelNuQTY1dlRDMmNTWjc5em1QT2RpNDdMZTVid3I0dXJoV3VqYTd5YmpGdUpXNmZiWVhkMDl6cjNaZmNiRHdtT2R4M2xQdEtlMzUyN1BZUzlsTDVaWG85Zk1DcXNWNjFmMGVKTzhnN3dydlovNDZQdndmYnA4WWQ4VnZudDhINjdVV3NsYjJlRUgvTHo4OXZnOTh0ZnhUL1AvUGdBVDRCOVFGZkEwMERRd043QTNpQklVRmRRVTlDYllPYmdrK0VHSWJvZ3dwRHRVTWpReXRERjBMc3cxckRSc1pKWHhxdldycm9jcmhIUERPeU93RWFFUkRSR3pxOTFXNzEwOUhta1JXUkE1dEVablRkYWFxMnNWMWlhdFBSTWxHY1dNT2htTmpnNkxib3Ird1BSajFqRm5ZN3hpcW1ObVdDNnNmYXpuYkVkMkdYdUtZOGNwNVV6RTJzV1d4azdHMmNYdGladUtkNGd2ajUvbXVuQXJ1UzhUUEJOcUV1WVMvUktQSkM0a2hTVzFKdU9TbzVOUDhXUjRpYnllRkpXVXJKU0JWSVBVZ3RTUk5KdTB2V2t6Zkc5K1F6cVV2aWE5VTBBVi9VejFDWFdGVzRXakdmWVpWUmx2TTBNelQyWkpaL0d5K3JMMXMzZGtUK1M0NTN5OURyV090YTQ3VnkxM2MrN29lcWYxdFJ1Z0RURWJ1amRxYk16Zk9MN0pZOVBSellUTmladC95RFBKSzgxN3ZTVnNTMWUrY3Y2bS9MR3RIbHViQ3lRSytBWEQyMnkzMVd4SGJlZHU3OTlodm1QL2prK0Y3TUpyUlNaRjVVVWZpbG5GMTc0eS9hcmlxNFdkc1R2N1N5eExEdTdDN09MdEd0cnRzUHRvcVhScFR1bllIdDg5N1dYMHNzS3kxM3VqOWw0dFgxWmVzNCt3VDdodnBNS25vbk8vNXY1ZCt6OVV4bGZlcVhLdWFxMVdxdDVSUFhlQWZXRHdvT1BCbGhybG1xS2E5NGU0aCs3V2V0UzIxMm5YbFIvR0hNNDQvTFErdEw3M2E4YlhqUTBLRFVVTkg0L3dqb3djRFR6YTAyalYyTmlrMUZUU0REY0xtNmVPUlI2NytZM3JONTB0aGkyMXJiVFdvdVBndVBENHMyK2p2eDA2NFgyaSt5VGpaTXQzV3Q5VnQxSGFDdHVoOXV6Mm1ZNzRqcEhPOE02QlV5dE9kWGZaZHJWOWIvVDlrZE5xcDZ2T3lKNHBPVXM0bTM5MjRWek91ZG56cWVlbkw4UmRHT3VPNm41d2NkWEYyejBCUGYyWHZDOWR1ZXgrK1dLdlUrKzVLM1pYVGwrMXVYcnFHdU5heDNYTDYrMTlGbjF0UDFqODBOWnYyZDkrdytwRzUwM3JtMTBEeXdmT0Rqb01YcmpsZXV2eWJhL2IxKytzdkRNd0ZESjBkemh5ZU9RdSsrN2t2YVI3TCs5bjNKOS9zT2toK21IaEk2bEg1WStWSHRmOXFQZGo2NGpseUpsUjE5RytKMEZQSG95eHhwNy9sUDdUaC9IOHArU241Uk9xRTQyVFpwT25wOXluYmo1Yi9XejhlZXJ6K2VtQ242Vi9ybjZoKytLN1h4eC82WnRaTlRQK2t2OXk0ZGZpVi9LdmpyeGU5cnA3MW4vMjhadmtOL056aFcvbDN4NTl4M2pYK3o3cy9jUjg1Z2ZzaDRxUGVoKzdQbmwvZXJpUXZMRHdHL2VFOC9zM0JDa2VBQUFBQ1hCSVdYTUFBQTdFQUFBT3hBR1ZLdzRiQUFBQUlYUkZXSFJEY21WaGRHbHZiaUJVYVcxbEFESXdNVGc2TURVNk1qZ2dNVFk2TkRJNk1UVDlod3JmQUFBSUhVbEVRVlJZUjUxWEMxQlU1eFgrZGxsZ1FkNFBVUkFmaVNoYU5HMWk3Qmh0bTA1S1VrblRXQitOUWEwWUcyT0Rsam9PR2sxaU81MXFOR1Fjazlva1JKczA0SXc2cHVOMFRFeFRhT3NZUzdTU3BocGYxS0FWQlJaaFdSNHJJTHQ3YjcvejM3dnNRaGFDL1M3L3N2ejN2TS81ei9teDZBU0dDWjJQL0ZnczhwZjY2SU5mak1WNE9XeFl6ZC9EZytaWFlFSGxKNS9qdmdXYjhPanFIV2hzY2FuOU8xVXVHRjRFaE1RVTN0cmhSdDdxbDNHcXNocElpQUY4UHFEck5wWVY1T0gxRjFjZ0pqb3FLRkxDSStJSE4yeDRFVENWLzN6Ykg1QThjUkZPVlY4Q1JpY0RVWkZBTkpmVml2SURGYWo2OXhlS1Rpa2tqNmJSRkgxdzVZSkJJdERmNmo5Vm5zYThaM2JRV3k4UVM2K3Q1anQzdDRyQTFzMEYyTHpxY1dPUDZMMWFwNHlLR0RmRzNDRUdDNFFZRUF5Tmp4KzExNXYwS1krdTE1R1dweU1uWDhjMFdVdDFaRCtoSStsaGZXSFJUdDNyOVpuVUJocFhiZFRQSVZ3L2p4RzZZODBXYzVkeWZRRzV3UmkwQnZLTGQyTi8yUWZNY3l4Z1o1Z0ZrdStXZG95Y09BWlYrMytOdXpQVGpIM0N0ZnNkT05ZVzAxRWZ3cERBSFkxUEIvKzJJV05mS2VLWHpEY0lCOENpTVZIQjFmdjJINDloWldFSk1NSU94SXpnRHUzVFdQNGRYVFRFaHZKWGlyRDBzVGtHTWRGVGZRWjEzMTRBWDNjakZiTXUrQ2xRaGFoaTd1WFRnc2praVJoejdCRHNPZG5xRFZnZkZxYXlMd0pmWEcvQzdDVy93czNMekY5S29sR2U4cWFuVnlsZnUzWWhYbnUrUUVnVnZNMnRhSmozRkRxcmp0TEhWTzdZMUw1RXdJZDJxclpRUkx6Nk5QWTkzRzlHYk80aVpCNHRKM21ZTXEvUEFNdTRIOUhEQ0s1d1E3R1BYamUxWXNhRDk2TGluUmVZaVdnaFUzQ3NmZzdPMHRmb2F3eUZSQ3RCdWdxNUMySFdSR1JXSFlidTlURXk4NkZyN2FSTDRuc3hpV0pwbkMwcEExbk9jMHFXTXErK3ljV3ozQU5FbXNwN2JzTVdic1hISCszQzZmZTI5U2x2ZS9jUUxsamk0Q3A5aS82bWtGbVVpODl1cmphTTNMb2RrM3gxaVBybWZZaWVQUlBadmhzWXViMkVLV2dtdDRlVU9ubGk0V210ZytabVNna1ZBWWV6RGFOemxnSnBTVHhEWHFTUFRrTDlYM2NyQWtIM3ljOXc0NGNyNEdtdVVlRVdNWVkzM2FyUUVuOWNnUFNEYnhqRVJBZUZoOW1zTENQV2tZbmFqQm53TlRTUkw0d0d0V055VnlPc1VYWXpRU0pPTXFHV3h2N0NWSmk0Tm1zZXJzeWFCYTM1SnBWTDFRdUxGNzFvZ0gzYTF6Q3BycmFmOHBLM2p5QithajVpNk5EcmJFNSsyTWFtMDFpdmlvSlJuTExNRkNpb1BXUFRMQXNGOTBrcHNsSDhKa2RSd3UxVVFpYjhwUUlUenY0TjRabnBpdTVFOVVWRTVPUmp3NWE5UUJ4VEZoR093azBCdytRSUc5TDdJMkNBNkF4UzdFY1k3R1NVRXBJaTYwYnE5aDNJMXVzeEl2Yzc2djMxbXk1TW03Y0IzM3FrQ0I1aFQ0NGpFNDhpajVoTkRQa0tCQXdZQk1vdXRYZ3E2RlhLeG1mVnZxQjljU0hHM3JNTTV5NWVBektZbnJCUVBnYndaZmNHU2NGQXlBRlNqOFVnYjMxMUR5NWFZdUErZUFqVzlCVGo5SWlCYnA2a0xzNEh2eVpwWUVFWU9nWHNUQU1aQk1JazNpdVoxa2hjdWVzQk5QNWlIVk9UeUhuRHdTUkdkN05aT1Z3b0xseUFqVDliUUNONHhDZ3FNdHhvVG41STdSaEZHRURBQUU0dnRRWkFUTExLWTJIbjZ2YkF3MGtuUFVCMmRhMFhXa01MN3YxNkZ0cHEzOFBMNi9QWmlHaVFNUEdYUFZ3aUU0Q1N3eWNZUVJFZ1Y0Z2lORG9jUDNrOGpXNG12VjVUcDhFZGw0REtEM2JpMDBOYkVXODJLMWNudlRmSGRiQTArUzZTNUFsRy93aUVxQUdibW15R2Fqa05HanBWMTB2NzdXNU1haitIaDc2UnBlamFlVGVZdGZnRnZQSDdJN3lrUkNtZVlJamtyNDVBaUJxUXJxV2hoK0o2MkV3YmtMQnlKYWJxSFVoYUV4aE1ULzl5RHhMR1BZNlQvNnBoRCtBRUZXMnNxYzViUnJzVkRCMEJDWDFRRGRnNHFmeklkckczVDc4SEVWT21ZSEp6RTBidDVhZzI4ZGJCU2xnbXpNZmVzZytCZEU1RXVUZElGQ1VObkNjbHhjdE1TbTVUdGhIRi9sRldHbFhxbVdQMWhVM2s4alVIL256aWpMeENXRUlpeHA5aDE3dndkOWhTT0N1STA1OWZRY29EcS9ETXVsMjhNekRjZnE5djh6VGNhTWFTUmQrRmZ2VXdpcGJuS1hxQnQxRUdFZ3QzUUdxVUFaR1I5RmpHcjRBRnBETVZjeGMraHlrL0tFYWR3Mm5zRTIyOEY4eGMvQ0ptUGxRSVoxdUhlVytnQ0M5NUcxdVJNM2s4NmkvdHg3NGRhMHdPOHJ4Wnpna2FEMi9kTmRvWXJpS2dNN0hRZUxzaSttNUV1U3QrdzRyK0I1QnFDcFZLRm8rYTIvRFRaK2NqbFMzMnBhM3ZBb2xCVnpTcG1YWTM1M3NjanY1dUEzTG5URGYyaWE0VHAxRC95Rko0dWhwWXlNbFVha3hRTDBlM0xUNEZrOXA0c3laTUE5UlhsQjA1Z2VVYk9JYWxveVdhVFVad2k5MU5HbFdNakZkelQvSk1iTnU4SEp1ZUR0eUl2YzFPM0ppN0RMYytyZUNCVFNPMVRYR0kxeDdjUk95TTd5SHo0OE93MEFuWlZ3WUlZL0M5c0xoa0gxNTVxWXlEaFVjd2lxTlp2ZU9TT3VuMXNPczU4Y1JUaitIQXppS0R3VVRqVDliQlZWNUt4WEdrdGxPcDhQbW91aFVSOWpSa1ZCN2dSZVYrZzFqcVRlVEtoU1FVdkpwUG4vM2tGbDdKNXhyWDhLbFBxdTlaMzErbk8xcmFUQ29EemxmMzhDcHU1MVU4VWE5Qkp0ZFkvUkxYQmY1OUhyRzZzN1RNcEpScmYvOXIvSmNNa0lqd3B3L1Y1MnYxMURtcmRRdi9MM2ovK0dmbXJvSE9pdVA2ZjJLenFDUmFLYXpCZUs1eCtrV2tjUzlLYnloWWIxSUtSSzZ4Z2pIby93VkR3Y09yVmIzaytleHhoanVGZ1phaEkySWt6MDJJdVQ4WFk5N2ZCOXRJS1Q2VnZFRmhkSjRoSVNJQ05qYXRmUjQxR2FQUWZmWXMxWTd1VTY0eHo5WUlPKzZxK2dUai8vbWhvVng4QzdDR2hrVGdUbkQ3OG4vMXE5TWZaczRqR2VwVWhqcWV1VTdTbmJ2Mm1oUjNoanN5UUdOaCtqUG8vdWlZWHBlWHJ6dUt0Z1Q5TnhuNi83K2g4SC9WUUNpSWtLRnlIUnJBL3dDNGUrTytaMWNuNFFBQUFBQkpSVTVFcmtKZ2dnPT0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xIiwiRklET18yXzFfUFJFIl0sImV4dGVuc2lvbnMiOlsidXZtIiwiY3JlZEJsb2IiLCJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwibGFyZ2VCbG9iS2V5IiwibWluUGluTGVuZ3RoIl0sImFhZ3VpZCI6ImM2MTFiNTVjNzdiMjQ1Mjc4MDgyNTkwZTkzMWIyZjA4Iiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6dHJ1ZSwidXAiOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJsYXJnZUJsb2JzIjp0cnVlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6dHJ1ZSwiYWx3YXlzVXYiOmZhbHNlfSwibWF4TXNnU2l6ZSI6MTYwMCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0Ijo4LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjk2LCJ0cmFuc3BvcnRzIjpbIm5mYyIsInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi0zNX1dLCJtYXhTZXJpYWxpemVkTGFyZ2VCbG9iQXJyYXkiOjQwOTYsImZvcmNlUElOQ2hhbmdlIjpmYWxzZSwibWluUElOTGVuZ3RoIjo0LCJmaXJtd2FyZVZlcnNpb24iOjI2MjE0NSwibWF4Q3JlZEJsb2JMZW5ndGgiOjMyLCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6MiwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjUwfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMTAtMjciLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MjYyMTQ1LCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IklkZW0gS2V5IChDb25zdW1lciBQcm9maWxlKSIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjUxMDI3MDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25Qcm9maWxlcyI6WyJjb25zdW1lciJdLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTEwLTI3IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjI2MjE0NX1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0xMi0xOSJ9LHsiYWFndWlkIjoiZWUwNDFiY2UtMjVlNS00Y2RiLThmODYtODk3ZmQ2NDE4NDY0IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiJlZTA0MWJjZS0yNWU1LTRjZGItOGY4Ni04OTdmZDY0MTg0NjQiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiRmVpdGlhbiBlUGFzcyBGSURPMi1ORkMgQXV0aGVudGljYXRvciJ9LCJkZXNjcmlwdGlvbiI6IkZlaXRpYW4gZVBhc3MgRklETzItTkZDIEF1dGhlbnRpY2F0b3IiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQjJEQ0NBWDZnQXdJQkFnSVFHQlVyUWJkRHJtMjBGWm5Ec1gyQ0JUQUtCZ2dxaGtqT1BRUURBakJMTVFzd0NRWURWUVFHRXdKVlV6RWRNQnNHQTFVRUNnd1VSbVZwZEdsaGJpQlVaV05vYm05c2IyZHBaWE14SFRBYkJnTlZCQU1NRkVabGFYUnBZVzRnUmtsRVR5QlNiMjkwSUVOQk1DQVhEVEU0TURRd01UQXdNREF3TUZvWUR6SXdORGd3TXpNeE1qTTFPVFU1V2pCTE1Rc3dDUVlEVlFRR0V3SlZVekVkTUJzR0ExVUVDZ3dVUm1WcGRHbGhiaUJVWldOb2JtOXNiMmRwWlhNeEhUQWJCZ05WQkFNTUZFWmxhWFJwWVc0Z1JrbEVUeUJTYjI5MElFTkJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVzRllFRWhpSnVxcW5NZ1FqU2lpdkJqVjdER0NUZjRYQkJIL0I3dXZac0t4WFNoRjBMOHVESVNXVXZjRXhpeFJzNmdCM29sZFNyam94Nkw4VDk0Tk96cU5DTUVBd0hRWURWUjBPQkJZRUZFdTloeVlSclJ5Snp3Ull2bkRTQ0l4ckZpTzNNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdEZ1lEVlIwUEFRSC9CQVFEQWdFR01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lESFNiMm1iTkRBVU5YdnBQVTBvV0tlTnllMGZRMmw5RDAxQVIyK3NMWmRoQWlFQW8zd3o2ODRJRk1Wc0NDUm11SnF4SDZGUVJFU05xZXp1bzFFK0trR3hXdU09IiwiTUlJQmZqQ0NBU1dnQXdJQkFnSUJBVEFLQmdncWhrak9QUVFEQWpBWE1SVXdFd1lEVlFRRERBeEdWQ0JHU1VSUElEQXlNREF3SUJjTk1UWXdOVEF4TURBd01EQXdXaGdQTWpBMU1EQTFNREV3TURBd01EQmFNQmN4RlRBVEJnTlZCQU1NREVaVUlFWkpSRThnTURJd01EQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJOQm1yUnFWT3h6dFRKVk4xOXZ0ZHFjTDd0S1Flb2wybm5NMi95WWd2a3NabnI1MFNLYlZnSUVrekhRVk91ODBMVkVFM2xWaGVPMUhqZ2d4QWxUNm80V2pZREJlTUIwR0ExVWREZ1FXQkJSSkZXUXQxYnZHM2pNNlhnbVYvSWNqTnRPL0N6QWZCZ05WSFNNRUdEQVdnQlJKRldRdDFidkczak02WGdtVi9JY2pOdE8vQ3pBTUJnTlZIUk1FQlRBREFRSC9NQTRHQTFVZER3RUIvd1FFQXdJQkJqQUtCZ2dxaGtqT1BRUURBZ05IQURCRUFpQXdmUHFnSVdJVUIrUUJCYVZHc2RIeTBzNVJNeGxrenBTWC96U3lUWm1VcFFJZ0Iyd0o2blpSTThvWC9uQTQzUmg2U0pvdk0yWHdDQ0gvLytMaXJCQWJCME09IiwiTUlJQjJEQ0NBWDZnQXdJQkFnSVFGWjk3d3MySkdQRW9hNU5JK3A4ejFqQUtCZ2dxaGtqT1BRUURBakJMTVFzd0NRWURWUVFHRXdKRFRqRWRNQnNHQTFVRUNnd1VSbVZwZEdsaGJpQlVaV05vYm05c2IyZHBaWE14SFRBYkJnTlZCQU1NRkVabGFYUnBZVzRnUmtsRVR5QlNiMjkwSUVOQk1DQVhEVEU0TURRd01UQXdNREF3TUZvWUR6SXdORGd3TXpNeE1qTTFPVFU1V2pCTE1Rc3dDUVlEVlFRR0V3SkRUakVkTUJzR0ExVUVDZ3dVUm1WcGRHbGhiaUJVWldOb2JtOXNiMmRwWlhNeEhUQWJCZ05WQkFNTUZFWmxhWFJwWVc0Z1JrbEVUeUJTYjI5MElFTkJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVuZkFLYmp2TVgxRXkxYjZrK1dRUWROVk10OUpnR1d5SjNQdk00QlNLNVhxVGZvKyswb0FqLzR0bnd5SUwwSEZCUjlTdCtrdGpxU1hEZmppWEF1cnM4Nk5DTUVBd0hRWURWUjBPQkJZRUZOR2htRTJCZjhPNWEvWUhaNzFRRXY2UVJmRlVNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdEZ1lEVlIwUEFRSC9CQVFEQWdFR01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lRQzNzVDFsQmpHZUYreEtUcHpWMUtZVTJja2FoVGQ0bUxKeXpZT2hhSHY0aWdJZ0QySllrZnlINVE0QnBvOHJyb08wSXQ3b1lqRjJrZ3kvZVNaM1U5R2xhcXc9IiwiTUlJQitqQ0NBYUNnQXdJQkFnSVFHQlVyUWJkRHJtMjBGWm5Ec1gyQ0NUQUtCZ2dxaGtqT1BRUURBakJMTVFzd0NRWURWUVFHRXdKVlV6RWRNQnNHQTFVRUNnd1VSbVZwZEdsaGJpQlVaV05vYm05c2IyZHBaWE14SFRBYkJnTlZCQU1NRkVabGFYUnBZVzRnUmtsRVR5QlNiMjkwSUVOQk1DQVhEVEU0TURVeU1EQXdNREF3TUZvWUR6SXdNemd3TlRFNU1qTTFPVFU1V2pCSk1Rc3dDUVlEVlFRR0V3SlZVekVkTUJzR0ExVUVDZ3dVUm1WcGRHbGhiaUJVWldOb2JtOXNiMmRwWlhNeEd6QVpCZ05WQkFNTUVrWmxhWFJwWVc0Z1JrbEVUeUJEUVNBd05EQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJNV2hGbFk1aXBJVy9ISzdLTHBLYVlVNXY0OUhLd1pzeUVBcW5hU2YwQ1F6NjdWSFowY1BYWWQ2bkU0dW0zQkgwbHI0Vzg0Z1BjWkZVZXJaMjNIcnVET2paakJrTUIwR0ExVWREZ1FXQkJTVEkzQm14UjNPeEtzY0s2MkV3ZlBuSGM1Z1p6QWZCZ05WSFNNRUdEQVdnQlJMdlljbUVhMGNpYzhFV0w1dzBnaU1heFlqdHpBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQU1BNEdBMVVkRHdFQi93UUVBd0lCQmpBS0JnZ3Foa2pPUFFRREFnTklBREJGQWlCL3RVREVQMGFXRmlTOUV5Vkl0RXJmQkxaaGNZL2tMREs2WDVyVURIQnF0UUloQVByRnBuM2MxY2Yza1Zpa0dRVm9tVnV1eDFQaWVwVktUakloOTU1S1lNTHgiXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBRkFBQUFBVUNBTUFBQUF0QmtybEFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFCSFpwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFBRHcvZUhCaFkydGxkQ0JpWldkcGJqMGk3N3UvSWlCcFpEMGlWelZOTUUxd1EyVm9hVWg2Y21WVGVrNVVZM3ByWXpsa0lqOCtJRHg0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJa0ZrYjJKbElGaE5VQ0JEYjNKbElEVXVOaTFqTURFMElEYzVMakUxTmpjNU55d2dNakF4TkM4d09DOHlNQzB3T1RvMU16b3dNaUFnSUNBZ0lDQWdJajRnUEhKa1pqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWo0Z1BISmtaanBFWlhOamNtbHdkR2x2YmlCeVpHWTZZV0p2ZFhROUlpSWdlRzFzYm5NNmVHMXdQU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2SWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhodGJHNXpPbkJvYjNSdmMyaHZjRDBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5d2FHOTBiM05vYjNBdk1TNHdMeUlnZUcxc2JuTTZlRzF3VFUwOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXRiUzhpSUhodGJHNXpPbk4wVW1WbVBTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZjMVI1Y0dVdlVtVnpiM1Z5WTJWU1pXWWpJaUI0YlhBNlEzSmxZWFJ2Y2xSdmIydzlJa0ZrYjJKbElGQm9iM1J2YzJodmNDQkRReUF5TURFMElDaE5ZV05wYm5SdmMyZ3BJaUI0YlhBNlEzSmxZWFJsUkdGMFpUMGlNakF4TmkweE1pMHpNRlF4TkRvek16b3dPQ3N3T0Rvd01DSWdlRzF3T2sxdlpHbG1lVVJoZEdVOUlqSXdNVFl0TVRJdE16QlVNRGM2TXpFNk5Ua3JNRGc2TURBaUlIaHRjRHBOWlhSaFpHRjBZVVJoZEdVOUlqSXdNVFl0TVRJdE16QlVNRGM2TXpFNk5Ua3JNRGc2TURBaUlHUmpPbVp2Y20xaGREMGlhVzFoWjJVdmNHNW5JaUJ3YUc5MGIzTm9iM0E2U0dsemRHOXllVDBpTWpBeE5pMHhNaTB6TUZReE5Ub3pNRG95Tnlzd09Eb3dNQ1lqZURrNzVwYUg1THUySU9hY3F1YWdoK21pbUMweElPVzNzdWFKaytXOGdDWWplRUU3SWlCNGJYQk5UVHBKYm5OMFlXNWpaVWxFUFNKNGJYQXVhV2xrT2pKRk56RkNSa1pEUXpZM1JqRXhSVFk1TnpoRVFUbERRa0kyTkRZelJqa3dJaUI0YlhCTlRUcEViMk4xYldWdWRFbEVQU0o0YlhBdVpHbGtPakpGTnpGQ1JrWkVRelkzUmpFeFJUWTVOemhFUVRsRFFrSTJORFl6Umprd0lqNGdQSGh0Y0UxTk9rUmxjbWwyWldSR2NtOXRJSE4wVW1WbU9tbHVjM1JoYm1ObFNVUTlJbmh0Y0M1cGFXUTZNa1UzTVVKR1JrRkROamRHTVRGRk5qazNPRVJCT1VOQ1FqWTBOak5HT1RBaUlITjBVbVZtT21SdlkzVnRaVzUwU1VROUluaHRjQzVrYVdRNk1rVTNNVUpHUmtKRE5qZEdNVEZGTmprM09FUkJPVU5DUWpZME5qTkdPVEFpTHo0Z1BDOXlaR1k2UkdWelkzSnBjSFJwYjI0K0lEd3ZjbVJtT2xKRVJqNGdQQzk0T25odGNHMWxkR0UrSUR3L2VIQmhZMnRsZENCbGJtUTlJbklpUHo0NzdKWEZBQUFBWUZCTVZFWC8vLzhFVnFJWFphdkcyT29xY0xHMnpPT2t3dDBCU0p0cWxjWFY0dSthdXRsV2hiems3UFVBTVk5SGNyS2p0TmJxOGZlQWw4YUJvc3p6OXZwZGpzR0dxdEYzbjh1VHNOU1pwYzZKc05UNSt2MHhZS251OFBmZjUvTDQ4ZmcvZnJpY3pKZ1lBQUFEQUVsRVFWUjQya1JVQ1piRElBakZYWk9ZMVRhdE5jMzliemtzU1ljM3I0TUU0Zk1CQWFENnpsOHkvOVRPZ2V0OGQ1amZONzhid00vZERDUnBSNTIxelhmb2pISjA1SUl5aEJBVVNWQU9OZEd6Qll0MmY3S0ZyZmtKYUFrSGg5RlpoY0RYSFJrVEtvOU1MaWhHYWF2SW1uVjNxeUVYMEVwcmd6LzREd1VEN2tDSFJuZDhRRk40M0dvNFVWbUREZ3phNHcyN29pemRBMitjSyt1dVVwampvMit4d2MvNDJXNTB4NUxHWWVEQnNSMEhWSXg1eDhpRjYwQ2JsYlRFRWtGcjI3Yk5EQlVWU3ExT0tWUGJFNjJiM0VIOEZxQmc1T09PRXVjMnQ4WkppcU1PdUdwK2NLamc3d1ZHY2VvenFONHB4Z1ZQUWtqRllnYlZKS0RVaERDallyYXdQNXE0RVRnQzlmSU1SSHRpdHBRY0N2Sk9FTGNiTXNRZ25jaVJrbGpweVFqdkc0NGpxQlVFVEZpQmkxUEVJeWVrT3pzVytUeTVjTEhvczVSK2RNUzFMdFNTeGYzZ1FIY3pSMkNJNGdNTnBXNElSQTFRTWE2dEo0K0M2dUh1R0U4bU5ESXlGcWcvT1AvTU1VdWVTNklxOFM5MGRBZUJKU0V5L3FLa0srQk53ejhjWVk0amI1SjZ1NGlXQ0kyQjFaNTZMVzVrRWM0aGtkTXBzdlVDNTU4NVNYMFF1YmNnTnF5ZmdERkVjVHQrNDAvMFM1Tngwd2FDdzNPS2tjT2JBNUluMEFZcDAxcGpqdzJuNjI2VURqdEh3YTI4aUh1VEtxdHJ2K3JlVzQxTlo2aUdscjd1dUxKQ2ZrRnRjdGNHMDRzZ20xZU5TK1phRG5wYVRFckdveVg1SksyaU16OHhzMG5Pd1dHY1BETjQ5cWFDZDRiekpvekRabS9hQksrRW96THcrWGhOQmlZd0hmMHNpT3UxWFBrRy96S3d2cVlLY2ZTd0RFY0gvb1VlMDdlcy9XUThySXlnMkRPWGo4dGprWmR1REIvYjhoekRsbE1NT0NTNUJFbmQ1MzRmOHRpM1VaYzRrTXMzeEx5YWZNU3NKaGRHOFhQcWpOazV0QWdPMjVmZUtDaG5WZERqL0owRk1rT3NVL3hNQnYwd0ZoWWVFR2ZWSDEzZnVEVTB5REZMYTRmYzdSbldIQmZ1VEZWMnRFbU53YWRjN2FjM1VZMmpmQmw3SFQzNmZlMzRpUU81bU5DRkZCVzA3S2pQZ3FoT0xVMDF2WjhQdWVaMkpDbEZaTjhqa1VzNjl1a2E5ZVBwNitFZkw0QUY1K055d1NiaXJIdGNCOE1sL2drd0FFamtLNjRLakhQZUFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xX1BSRSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiZWUwNDFiY2UyNWU1NGNkYjhmODY4OTdmZDY0MTg0NjQiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZX0sIm1heE1zZ1NpemUiOjEwMjQsInBpblV2QXV0aFByb3RvY29scyI6WzFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjYsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6OTYsInRyYW5zcG9ydHMiOlsibmZjIiwidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN31dfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMTgtMTAtMjYiLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IkZlaXRpYW4gZVBhc3MgRklETzItTkZDIEF1dGhlbnRpY2F0b3IiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDE4MDkyOTAwMiIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4zLjQiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDE4LTEwLTI2In1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAxOC0xMC0yNiJ9LHsiYWFndWlkIjoiNGI4OWY0MDEtNDY0ZS00NzQ1LWE1MjAtNDg2ZGRmYzVkODBlIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI0Yjg5ZjQwMS00NjRlLTQ3NDUtYTUyMC00ODZkZGZjNWQ4MGUiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiSUlTVCBGSURPMiBBdXRoZW50aWNhdG9yIn0sImRlc2NyaXB0aW9uIjoiSUlTVCBGSURPMiBBdXRoZW50aWNhdG9yIiwiYWx0ZXJuYXRpdmVEZXNjcmlwdGlvbnMiOnsiemgtQ04iOiJJSVNUIFNBU2UgVVNCIEtleSAxIn0sImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6Mn0seyJtYWpvciI6MSwibWlub3IiOjB9LHsibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQ1BqQ0NBZVNnQXdJQkFnSVVUT3laSnprSEdneHh1STZNUWwxUFZyOHJ6d3d3Q2dZSUtvWkl6ajBFQXdJd2RqRUxNQWtHQTFVRUJoTUNWRmN4RURBT0JnTlZCQWdNQjBoVFNVNURTRlV4RFRBTEJnTlZCQW9NQkVsSlUxUXhGVEFUQmdOVkJBc01ERWxKVTFRZ1VtOXZkQ0JEUVRFTk1Bc0dBMVVFQXd3RVNVbFRWREVnTUI0R0NTcUdTSWIzRFFFSkFSWVJjMkZzWlhOQWFXbHpkQzVqYjIwdWRIY3dIaGNOTWpReE1EQTRNRGMxTURReVdoY05NelF4TURBMk1EYzFNRFF5V2pCMk1Rc3dDUVlEVlFRR0V3SlVWekVRTUE0R0ExVUVDQXdIU0ZOSlRrTklWVEVOTUFzR0ExVUVDZ3dFU1VsVFZERVZNQk1HQTFVRUN3d01TVWxUVkNCU2IyOTBJRU5CTVEwd0N3WURWUVFEREFSSlNWTlVNU0F3SGdZSktvWklodmNOQVFrQkZoRnpZV3hsYzBCcGFYTjBMbU52YlM1MGR6QlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJFUDVUSmpwYzN6RktPQzJwVm10Rk5pTHNzZTE0K0xmUmczdTVXdzN6S2tQZFM0dWRSd0diV1MyeWZBYWFObWxDeE9GZ2VDQS90Z1VlNmZ4dnpOMjByYWpVREJPTUIwR0ExVWREZ1FXQkJUN2ZuSXVzSWN0UlFseFdTNlhnY1lQbWxZOVd6QWZCZ05WSFNNRUdEQVdnQlQ3Zm5JdXNJY3RSUWx4V1M2WGdjWVBtbFk5V3pBTUJnTlZIUk1FQlRBREFRSC9NQW9HQ0NxR1NNNDlCQU1DQTBnQU1FVUNJUURMSE9lbWNvcEY1YTlOaExVNXV4QWhXOXkrajI2K01qamRiUnJjZm13Qm5RSWdXc24zVk4rOS9QQ1NFSk1MUDRybkIxNHBaVUtseFNYWFRNcUVQN1BYaDlNPSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFMUUFBQUE4Q0FZQUFBRFBMcENIQUFBVTZIcFVXSFJTWVhjZ2NISnZabWxzWlNCMGVYQmxJR1Y0YVdZQUFIamFyWnBuY2lTN2NvWC8xeXEwQkNSc1lqbXdFZHFCbHEvdlZKUFVuYm56VElUZU1NZ211NnRnMGh5RG11Zjh6My9mNTcvNFYwTElUeTdOYTY4MThDLzMzT1BnRncrZmYrUDlhU0cvUDk5L00zOTlacisrLzZUMTlVSGtyY1JyK3Z6cDlldjY3L2Z0WjREUHkrQzM4cGVCL0dzZ203OSswTDltanY3YlFGOFRKYTBvOHN2K0dxaC9EWlRpNXdQN0dtQjh0aFZxOS9iTDFzN245ZXYrVHhqNGZ2VGozazlVVXZ4ODl2dmZ1Ukc5WFpnbnhYaVNwY0RQK1BtVVYzMm5KNDMzbDhISE5YN2UvbjRudjVmYUp5Qi9pbFA0eTZxZTM3UHk4OXR2V1NubHowbEo5WFBGd3h1L0JyUCt2UDd4ZlN0L0R2N3podmd2TTFNTzlqWHpMKy9uYnZIMzdYeC8zN3Y5dWZkOGRqZHlKYVQxYTFQZlc3UlA4UGRrcVBUZVZ2bHFmQmQrYis5WDU4c2ZxbmVSOGgxV21Id3RZMmJTY2kzYnRtSFh6dnU2YkxIRUhFOXN2TWE0WW5yZjg5UmlqeXRSMlVaMitMSWJXK3BwSnlkamkvUW1aZTFuTGZiTzI5L3BsamtUYitQS2FBeG1Lb1ZIUC80VFgvOXdvSHRWOG1ZS1ppbHZyRmhYVk1CWmhqS25uMXhGUXV4KzExRjVBL3o5OWZzLzVUV1J3ZktHMmRuZ0NQTXp4Q3oyVlZ1cW8vUW1PbkZoNGZYVGE5YjIxd0NFaUxrTGk3RkVCa0sxVkt4YWFERTJNK0xvNUdjd2tNZVU0eVFGVmtyY3JETG1STGUwNkZGemMwK3o5OXBZNHVkdE1JdEVsRlJUSXpVOURYSWxZS04rV25acWFKUlVjaW1sbGxhODlESnFxcm1XV211ckFyL1JVc3V0dE5wYTg5YmI4T1RaaTFkdjdvOTNIejMyQkRpV1hudnIzbnNmZzBrSEl3L3VIbHd3eG93enpUekxyTE5ObjMyT1JmbXN2TXFxcXkxL1ZsOWp4NTAyT0xIcmJ0dDMzK1BZb1pST1B1WFUwNDZmZnNhbDFHNjYrWlpiYjd0Kyt4MC9XYlBuazlhL2ZmMzdXYlB2ck1VM1U3cXcvV1NOVzF2N0hzSUVKMFU1STJNeEd4bHZ5Z0FGSFpXejRKWnpmSlE2NVN4MFlDNlZ5Q3FMa3JOTkdTT0QrVmdzMTM1eTkzK1oreVZ2VDg3L3I3ekY3OHc5U3QxL0luT1BVdmNQTXZmM3ZQMGhhMXRzczBKNjNneXBEUlhVa0dnL0xqZysyR0JjeTBxMnVETFlaOHpTMmgzR25xTFF4dnFvQkgrTkk3S3daOEZndnNwTWNVeHVUZ3BBS2lNVTN5eHBHbi9OTXZLSnR2ZWNheVhyZS9wcVpXbmNWcWtBM3l1T3gyUHV2c0dLTksrUmg3ZHlRSkEwd2lDTE14UHZVdE02bW1jVHhMUEVVcGxPcGt0RGptRTUreDNQdUlTU2lpRExaSzJudEp3a1ZpQ3AyYWxqbitwclV4aXpaK0MxM2JyWVRNa01KMTdlZnZUUjlQdnNTdkQzcWpjZTc2MVNLWHpDT3FqQllqM1djWGxCTU9TaDhWYXZqYno1TEh2ZTZyUDFHdmUrcmExbmdTR0V2OVpoM0hPYWo5U3A0RzFsbmhHbjUydE1FZXVLdWMzbFRYZXI2aU1WQk16YlhuZTMyL2ZESnJ6TWtuWVl4WHRKeEJyT09NVnlnUXNiWUdlRk9lTHBpMUxlUkgzV1JoNFkrcHdLMVNTaTNNNTQ0aHdkMFJBODgxRzdsRXc4N2FhaTkwZ29ZSGlacSsvcTNEUnlDeHRwMXZTeDUrMjZhbDBLOGo2bnpudXNMQ2N0VlozRnBIVm0rbTJKQkVLK0V5SzhZNGNUZHoyV3oyVEtzNDNCcmV4MHZCMXFLejNBYStyMWpOWlBMdnZRTjhXdnJScE82c3NwK0h2L3NGamFKdXllcUZXMk5tZEsvbFFpU3ZBYlJWenp0SlRpVnV2a29NNzUyaUFSR1dVVmtqdEhvNmhLT21CREpJOTB6bTJKaW1acmhhSmpMWVRxQ0lxYVdvSCtSNW01M3pYVHJYTjJGa0x1ZzArQjFIVm5SWEdmOVltZEVtUlBWK3phTzdPWFN0ejVMZTNSN21JM0RxaFFsNkhQQ3JXMzNVa1V4TlRxdmg3bnBmamJXYnVIYWVYSjY4UktMR2o4UmtuTkhmMmN6c3JvVFpCdmpPWlVTejhkVUdDZUViaTRGWXE0Vy9FSmloaUZ2bnRHMVhMaENFS0tkdVBvSUE0bzBwUnBnSWtHQWhhMTZQUzNoSC95blZrN01Gd2ZMa2pYdUk2YjJFcHBNOVZhYmhtamZ0WE12eHJpTThMek00U3hXMmY1bzZ1R0taRjEvM3JoejNYeEhmRHJBeUhZNTZQbnJlcGZSa0hIMFZERE44M0dPMERueUQ0SWNSYkVKUVM4RndCam1MQTlMbkthYmZXbkxDUXpCcVRNUFVINU1HYURVYUFLbFlKMWFzYU9WOUJyVWJwK0RGaUs0TUtkaXhLdWM0OU5HY3h4bm5KdXQ3UjJwVnpKWUxkVmJJMFY0dkFLbnA1RGd4OHljTUg4ejdZR085aUFOYUc2RjlRcFZlOCtxRG53QkNoWStXM2VZVWJLaTZmS0dBUEZDVnVWNmdveHZKQ0pza2RUNFlFZDh5NHFJaHpRWWJLMXZCZ3N0ZGtBTi9xTHBmUStPd0drdG9iNGEyaUNBbjlsVmgxaHJ5bGlwQi9wQWllL3gyOCtENmxOUkhlZ3BiYk5WVVRGOWNTQklxMk43dDFGdW9obGpRNGF0MExUblQ1aUJsRmpBVWJkZ2ZjSmkwU3VqblgyQXM1UlJIMlNoa3Y0d0ZVV2Y4YUJubGh4ZDBKZEV0aWY3bW9UcnRGMFZzbXVBK0Jyd210TitubHVOSFRyQzNDaC9tbWFIazZmSkJUR2ZGdW5uMzFrTVVHbzNzSTVEQWpYU3V4djh1N25nWExHNmdrc1M1UVB1TmxieXJ0M2tDSlBXbyttM3VTWXhLVUVzVVVJZHZVSUZ2VjFzaUJ4N0FIQ2hHZmVIV0dHR3VHWUpPRVp4RWhSbmcxYkFZdXV3a3h3aGp0VDN0azJ0ZE1wdGtNeGdrQTNnb1cwOVhNWGRQcHFweTQvczQ4TEZoZTN4OHd0Q0l0dzZmR1J5eDBUTnF1b3VZblFXTlNYSEZTNkNBd0kvamtFNUE1WTc2MGlXRGNKaXk1NjZvQXNaQ3AyY0JheFBGaGVPYWdKcWdlcmtyd1JPRVFLMHpqVjkwd2dIN1YwMWVpQUtHbXg1WWd1d0g0N1ZmUHBwaW4rZWp1dlRtRnk2MWVGc0F1ZVdpSmx0eWUrbUU4K0M0cDlBNnBJaEN2bmVZZGFreURGeWM0cWFEQ1JkcUNmQzhmOHdLekFBZVM1S2NsekgxTzZUKzFEMHRLWXVETXFhb0kxWUg4Z3FaUGJpTmZyQ2FTRUhlNk5qb1FVSWJ3VklCcllwZERKRDlTY0NRZVpTWVNiSGNOV0xaM3B4djRwQ2pqZlQ2WWFLalZTQ0J0YTU1RHZXbDZGdmU4RWoyWkxRTzFGS0xEK09FVWQ0T3dBelRGazBZQUFNUWpJdGRFenBDUlZKUEhJZ25sKzllUGlUN3NkK0dub0l3ZzBWV25Da2FTa1VDOGd1QytEREVlcDZGdnBJem9UK1lIL1h5Z2w0Zy9oaW1iVDd0b3V3WC9nUWdmZ0xyUjJTNlVtb21wOHo4cGZKdWJlak5xaHNEVXU2SmVvY0F1THhDSFNWNVNVZktzN1BLeXRRR0VJaTBoZ1FWY2tNSGxNaHFMcDlGaW0wUUc5cld2SU40cmQ1MjVxMXBoRUVjYXFVY1RqZVlPbW1CcGdoS3c1SllETVJwWUEvMFROTklrWkZDVDh6NVhyUUhkVHhJbm9Ta2hka2ppTlREMkw5azYwZjVGcG9iNWJaR1lrZkZvQUhjcUk5Z1Rna0NYRFR3QmVzclEzOXlJcURNd3c5WU5JOFdVUmNsZy9jbUc3RGdxeTVCVjRIZXdrQ2g5WUMzMjBhY2h4RXhGN2t3NkQ4eWxqUkFtUjIrdEJFTkg2ZVZWQVpWMEE5U0tBd085eUVUTy9UcTJKQmZydnJDd1FTRVIwTmx0VW9Vek5RWGRmSFdUNGk1WVJxZFJibzMrNnhDc0lZaExCQjlQaUFYUm1NU0FvcXBXNU8remZhQjBTeTRvb1luVWdiYnJsb0dqYnNiWFJhUFRPeFNaNGZ6azFSOVI4Z3laR29XdjZGbzFSL0dUUHdNd0haVGJ3Rndydy9ERFVud2lLY2x5WXZjT3VRTUxOOVJPQ29wbllFT04yRkJ2Wm82SVJNQVh0SFpEWlNxM2hCRm9kQUZzK0hWMDB6bWJVVURzaWthOE1kU0F4b0ZIS3VvMUdiZGxUc0czVElaZ2Q0cWtOcjRML2FrUWt3QWRkbERSQVVzdzhLOGxvOWQxUWdwWDVNb0dtZUZkWXE2YnBEektNMGtZbFNPcXZ0d2dBa25Va1JrOEF4MkpGM2psTVo2UXlaM0NHL2xWVGtXc1R6bEtqbSs3SER4dzVTTnEreTdRQS93bzdlaVRBR0xFV2hQNmlQK0pMRzRnS3REemdqMEF1RlA5SnlBbnE0TlFIQnN1Z21tVTZac2g3aVBFUmk0TithcUlJUUNuQ2Nwa1d4b3RCenNnaCtoUVlDV0EwSWZaelE3eFBtZG9PUmZZSzBpbS9odnRGUEdDWVdSb1JrcEFla3dDZ2VWQ2s1SVVQSERham1YRVB0QmY2cWorWjlrUVFOSUUvQzI4RE55clFCRDhiWGdpeDFyMVJ2WjN0WTMvS0FzaElFc0ZiRTZjRGorT09sbFYwOW1SM1FNdWhYRkZXUkU5cVl6VDgrNDVGR25YTTNJU0Q4dW83NENqUVRmbkFkRFpMampDRk5CaktuMXNBQklJSk05TUIxRUxRT1VHbVlCR2xlNnNFcU5FRzB4bDlLVVhDN0JIdGh6L0FMUEE1elB3WTdIeHFZQ3UwT3NXSkI4T2lvN05xSXdoTHNLU3h5R085L2dHTmhJU2dlVmNSZ1hRYWdtUzFwMkpiY0hPcG00eTNUQVFpWVVrSHdZNm5sOUZYbHZwTExvdEJUY2t2RW9hRGFRZGthSWNydFgrZThQYVh5M0VnNTJRR3dUdjhVUlZ6SkRWWG1EcVAwTWtXVkYwMDBjWW1CMlFxZ0NkZENhcVcrR0NDdkFUa2xCUmdFNzhDanZ1d2N1S0Y2NzRCM0lTM05rNFRhN3ZFRGpMZEtZTEJmRWlMRGlLUXdTTlpZT25YR25WRTJUWVpZMHNvVzB6L2xCVG9sQ1ZrUjk5RzVFUkYvK0RuUVlFbzVLQmdRdEh4NGNDZVVHb0JPcEthQkJSdzNBTXVsRmZLRGVSQklnMG9sR1RUeG5iRmxnZjZ2RHFmdU5obENmYzVIcnQwaDQ1UUdoRFhqTXFuY25YZ0VuVG94UHBRdDJ5TVBHWWRubkE3eUsxdGtnRlV5ejRxZGpUdUE0b0NMdms5cVRwUWhtUGFIZnJGS1lVc3FtUTU5TDN0R3lBbnRENGVGS0NTZ0ttcW9kSWkwdXNlN1ByR1RpVkZsT2pNUENvWkpYZ1VMZDRPVDFCbzVvamFQaTNqTUd6a09JYkx0eU5QYmlkNXMyR3Q3K1A3bk5LVUdNRHo2eUJsSVJVaEFjUm1CcFE4UTNERzVQczlDd0IrUUlpSnlwQXdvMXlSbHhENjgySm5kSU0vT3graTc5R2dnK3hpaExZMkF2RHMrTkxhU2VKampDNk5EdmZKaWhOUVBUckJtRDlHM2FFV1kzZjZrUkpCL3ZjMnlBbUkzUEVrTytOYWR0VmhOV0RNb0pUWXdUSUZGcC9SN0VtVEV2Z0hNNEZ2cUFFZ1pDR0F0K0ZpZFl6RTZnNWxBN2x5T2RvU01IYVVWbHB4aGtwdEliMDBrRml3bkFXTE5ORTAxZzNWUm9nUWhXUTVnYXRBL281ajFxSEdmNU8xeGI3WU43eGIwR2tmU0lhWG5sZzBJT3loZThDc0NyRGlONnltSG5XK0FmeGd4WEVCVkJSbGhsbVRVMEpYb3VudWlXSmNKQW5PRGFoQmZYaUlqNUZsd0ZLMFR4dmpDclhxVExTUWRrMW9Wem9xbCtGUVMwbG5VSWpUMmxTaVhkcHlWSWtaT3VxNW9ENU9TdUxjNkgyMzlpRnMwdm9TOWU0REIySnFuRDkrTm9BTEFjMlRvRU9RSitwZ3FIaER6WFhJbnVXanFoc3JTNkM4VTVnUUl2R0ZQS0RZT2gxVXFIaVNQckZla0FXbUJwRUtZYkg5cExZeXNCL0xWcVdLNEZQTDFxQllDUS9ZczExRUZrS1NGa0ZFd2hRZ0lDb2RYa3FrSDZyRGExTC9IYVdhZlV0YkZOQWh6b1Bob3BrRlF5OS9VZVhoSnFSRGxkZjBqUktRWktsR3VqdzlBQmdmMG9Kem5vQXhNVHNkZDNRMkdObG9Rb280VVdBQmpBSWFrVTNrakxYUk5SaEJPUHIxdTBqMTUxekpZU3hWMit5cmtvQUdsQXg1QXgxdGdkdnpQVTZERDlGQ1ZCZUFpTk9ocFZBemtRWWhSbGtEdlFvWG5zQUlVaTh0UmEwQlNrVzNTM3VySnJqL1JFd2doVTQ0S1lVSnJTQmJJUjJVR000NXBuUWVBb0FUeW9IQWUwVnpnaTBWU3NORmJ1NkhmOVc5U0VicW5RYUVIc0U0QkZvR3dTS3hCbmtSZ296NElCRTNiWUduQk5ZTFhYYXFieHowRmVUQXZEcG10Q0w2MVhFMlZwRlNyZjBpMkNHanZDL2RlOGtnbUwwUVRTd2NvN2VnWUdNUUJXYlJOVWFpVVF0SFY1VDVFUTJoZ3ZTNEw1ZGJKQzExREx3K05mVEE3RUFyNElwVklhTG9PWHI0b093b1dBd2FWK0ZtSWVPcGMzNnlpbXlycUxSMGRVRm5CNERlZXpheUpSV3JOb1R3ZzBDbmFCc20zbHlRb1R6VXVuU3JzQVBEeHZwZ2xvZ3NnenNwTFBDekZoM2UyY1A5N09xQVJnR2cxQUVmNHVkdFg5aGpPUGpSRENOQkRySlRSMWhWSFI5eVVVRGdBTEZvZUVKU1pXb2dZQW91VllRMExhOGpiMGdFRHFQVEV5SzA0czlJQjlnVGFYcmFDTXFwNi9NME4zQ252akM3ejRLZHBORnhMWi82M3p2SlVFOW1NNmlWTGhqZ0FtQVRaQVVseXZtT2ZjTTM4dHBwZGlxeXJnZXJFa0FqSGVMTEhFblVXME1oYjdZTUJjdXhqd1dkSUlRQTdxakQ2VlMzTUFOUkR1Y3RuU1M0WWZ5SUJKS2R0T0lZZDNqamdGcGlXc2lNa09jdEhNY0ZvcXJSRHRrZ2JXL1FsV3BxUllnQmhiUHlmdVNSMFQ3Z0xtVWhLMmRBRWJpVVRVWjZOWGxIV3F2akpORWJPckJyQVBwZGl6SmlySHFQbnBpZ2o0N09EQ2cxbW1IUWY4ZFgxUk5JaHNIM0IzUTNRVUl1Vklvcm9URm1WeE1JSW5xYklqZXNwQW1ubnZjK3g2R3pWVW9XeE1LYUREWStNMVBxYVQwSWlIYWxTM05EbkVBM0RlMjVab3g2NUZJTmFVNngxV2R6WDA4aDFIUUJyamxuUTNQcHRKLzRYTS95ZlNPbWoydmlaY0xrVTlxRUVudEQ2c2dzb0pZVkdadkI4TktYTXA2d0ZaeUthSm44alRNT0pBNVJxZFBVOEVwN1ZNQzk2eU5MU2F0OXpwMVIvZ1FuSS9wamVKVS91ZHNWUlFTdklYVkJUdHlCTVBMVlFsd0NVK0U5Wlp5bkFFTCtzcVpzdmVwSVF6Q0t6K2d4bGd0RTBtblVMellJdHRSVGJIbUhqS2FBT1Uzbkcrd0djTkhKZEVMT2ttUGtBVVVBSFdFblVWSTY3VU9xaCsxVU1QVzRHTTFyMHZIdlFyZWcxeHovanR6RVZzb29VUk1vVlQxSEVZL0YrZUFRVVllSHhNT0Jlc3dEV0FRcnNHZlVRUTB5QmNkQ3BoYXlWc3JUeUlCck8vNHgraHFzbk5hZkFqb05mRHNvT2xJaE0zQjljSENHNEpJL1k4RUhFdkNKU285aTVmUStIc1JGSW5DcGpxRmQ0eU1mV2cvWTMzTDEwSjVtb1dwZXlRNWY2QkV6Z0lmV084QU5JWVNDRXA1bXVZNko0UXphTFJrb25Qc0RhNEN3bmc0c05nTTlpU0k5THlGTkhUMVVvUDhqVURQQTYvZzJrbFBCRytUbUlWbWVpRS9wdGVCRkpnSVRIRnBpRFQxeTdkd1c4VUFWN3hIcDNJdFRwRkVwcWd5QW9tUFBrYTFFWStPUnFFOEhGSHA5Z25YYXBucVV0QVdVVUNTUWc1N25jak5hNkU3UzFodFJweDNBNy9rcVBnT1BvRFQwbVU2c1pEd2Vyc0xiZ1p5RWs2cEY2MG5kSEx6NElRcVFDVmtDcUFERTgxYnh4ZCtqVHJld0gxc3pnZGFES3F4UFRnZFZoOUlkT3NWRmJhS2NJbHA1YjUxS1Z6UVJjdG1xbnUwRjlnYi81eHlwNjFxMzJDWE9pd1lEYlIvSFoxQU84cnI0UnJUOFpRUFU3Y3V3c0FEYWxBL3JpOUQ5M0UrUG9TWEZJWEZoZFRWQTNManNzVVRRQXV5cS8rV2dwODQ2a0JBUGQvUm4wOXVVRmhDTS8yWjRWbmpXeU1GZVd3SURBWGpBellQY1JOcmwxSlpPZFkxS0t6TW9MRUxCd2Z2VThFRkdZa3hsdm5UVXA5UFBqbmpyTWlLU0ZwVGtRVVBpek5qRzBiTUNQUmNkRUJrcXY4OWpCLzBTZFJqS1dtSThhSWlsbkNIUXNVblFhdDhsUVBIaStBdjRJeFdkVHNQRFl0Z3FwVUF3REgwZngvNHFlcDJpdldXdm90OGJKS05UNEZKMXkvQ3N4eE5zVFNkNStBZUVvdXF0QThiMFc1Rk5sZEtIOHJLOE5tc0NPczdWRXhHMGFsRU1BQmtZUTJlQUZ6VlNidGQvQ3lCbWpmUlFDRndGdk5rWk5LVUJGVDUxc0ttenphcG45Ky92dUMwdzdId0ErTzRPQkg5Ty9iZ2ZCSGcvb0IrUGpsOVl1QjZUUVkrb1lHazFxdXhpZk9TN3IrdGhMLzVabklyTDZIVEFNL1E4NFV5UzlSblM1Y3JRdk5DMisveWN0UzFkT2ZIK2x6V3orZmsrY2dHNWc1N1hNNmVOU0VFV1BldUZ5RkRacDd5bmVnVU9QUE43RytGZnZRWkpyaWZySUY3UHBtQTVTZW9nU2ozdmdTM1g2YitqL2ZOWE9JTWdJYlQrRnpPeWI2czkvek54QUFBQmdtbERRMUJKUTBNZ2NISnZabWxzWlFBQWVKeDlrVTBvUkZFY3hYL2VFR2xFbVlWazhSWll5SlNRTERWRXlwVEdLSU9GOTk2WW9lWTkwM3NqRzB0bHF5eDhiSHd0Ykt6Wld0Z3FwWHlVYkcyc2lJMzAvTy9NMUV3eWJ0M3VyM1B2T2QxN0xtaUhHY3YycW52QWRuSnViQ3lpenlSbTlkb1hOSm9JQWwyRzVXV2pVNk54S283UE82clVlaHRXV1pYUC9Ua2Frb3VlQlZXNjhKQ1ZkWFBDQzhJRGE3bXM0bDNoa0xWa0pJWFBoTHRkdWFEd2c5TE5BcjhxVHVkWlU1a2hOeDRiRmc0SjYra3lOc3ZZV25KdDRYN2g5cVR0U0w0MlUrQ2s0blhGZG1iVkt0NVR2VEM0NkV4UEtWMW1HMk9NRTJVU0haTlZsc21RSXl5ckk0cEhUUFlqRmZ5dGVmK2t1RXh4TFdPSlk0UVZiSXk4SC9VSHY3djFVbjI5aGFSZ0JHcWVmZis5QTJxMzRYdkw5NytPZlAvN0dBSlBjT21VL0N1SE1QZ2grbFpKYXorQXhnMDR2eXBwNWc1Y2JFTExZOVp3amJ3VWtLbWxVdkIyS3QrVWdPWWJxSjhyOUZiYzUrUWU0dExWeERYczdVTm5XckxuSzd5N3JyeTNmODhVKy9zQlJZMXlsWFVDRjdNQUFCQjdhVlJZZEZoTlREcGpiMjB1WVdSdlltVXVlRzF3QUFBQUFBQThQM2h3WVdOclpYUWdZbVZuYVc0OUl1Kzd2eUlnYVdROUlsYzFUVEJOY0VObGFHbEllbkpsVTNwT1ZHTjZhMk01WkNJL1BnbzhlRHA0YlhCdFpYUmhJSGh0Ykc1ek9uZzlJbUZrYjJKbE9tNXpPbTFsZEdFdklpQjRPbmh0Y0hSclBTSllUVkFnUTI5eVpTQTBMalF1TUMxRmVHbDJNaUkrQ2lBOGNtUm1PbEpFUmlCNGJXeHVjenB5WkdZOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6RTVPVGt2TURJdk1qSXRjbVJtTFhONWJuUmhlQzF1Y3lNaVBnb2dJRHh5WkdZNlJHVnpZM0pwY0hScGIyNGdjbVJtT21GaWIzVjBQU0lpQ2lBZ0lDQjRiV3h1Y3pwcGNIUmpSWGgwUFNKb2RIUndPaTh2YVhCMFl5NXZjbWN2YzNSa0wwbHdkR00wZUcxd1JYaDBMekl3TURndE1ESXRNamt2SWdvZ0lDQWdlRzFzYm5NNmVHMXdUVTA5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5dGJTOGlDaUFnSUNCNGJXeHVjenB6ZEVWMmREMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzk0WVhBdk1TNHdMM05VZVhCbEwxSmxjMjkxY21ObFJYWmxiblFqSWdvZ0lDQWdlRzFzYm5NNmNHeDFjejBpYUhSMGNEb3ZMMjV6TG5WelpYQnNkWE11YjNKbkwyeGtaaTk0YlhBdk1TNHdMeUlLSUNBZ0lIaHRiRzV6T2tkSlRWQTlJbWgwZEhBNkx5OTNkM2N1WjJsdGNDNXZjbWN2ZUcxd0x5SUtJQ0FnSUhodGJHNXpPbVJqUFNKb2RIUndPaTh2Y0hWeWJDNXZjbWN2WkdNdlpXeGxiV1Z1ZEhNdk1TNHhMeUlLSUNBZ0lIaHRiRzV6T25ScFptWTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZEdsbVppOHhMakF2SWdvZ0lDQWdlRzFzYm5NNmVHMXdQU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2SWdvZ0lDQjRiWEJOVFRwRWIyTjFiV1Z1ZEVsRVBTSm5hVzF3T21SdlkybGtPbWRwYlhBNk1EbGxNRE00WWpFdFpqSmtPUzAwTW1GbExXSm1OV0V0WVRVeE9EUXlaamt5TlRVeklnb2dJQ0I0YlhCTlRUcEpibk4wWVc1alpVbEVQU0o0YlhBdWFXbGtPak5qWm1GaU9UbGtMVFV5WVdVdE5EbGxZeTA0TUdOa0xUUTNaVGszTnpCbVptRTBOeUlLSUNBZ2VHMXdUVTA2VDNKcFoybHVZV3hFYjJOMWJXVnVkRWxFUFNKNGJYQXVaR2xrT21RNU1qWXdOMlptTFRkak5qa3RORGxsWkMwNU0ySXlMVFU1WmpZM01USmxNVFU1TXlJS0lDQWdSMGxOVURwQlVFazlJakl1TUNJS0lDQWdSMGxOVURwUWJHRjBabTl5YlQwaVYybHVaRzkzY3lJS0lDQWdSMGxOVURwVWFXMWxVM1JoYlhBOUlqRTJOelkxTkRnNU5qSXhPVFkyTWpRaUNpQWdJRWRKVFZBNlZtVnljMmx2YmowaU1pNHhNQzR5TWlJS0lDQWdaR002Um05eWJXRjBQU0pwYldGblpTOXdibWNpQ2lBZ0lIUnBabVk2VDNKcFpXNTBZWFJwYjI0OUlqRWlDaUFnSUhodGNEcERjbVZoZEc5eVZHOXZiRDBpUjBsTlVDQXlMakV3SWo0S0lDQWdQR2x3ZEdORmVIUTZURzlqWVhScGIyNURjbVZoZEdWa1Bnb2dJQ0FnUEhKa1pqcENZV2N2UGdvZ0lDQThMMmx3ZEdORmVIUTZURzlqWVhScGIyNURjbVZoZEdWa1Bnb2dJQ0E4YVhCMFkwVjRkRHBNYjJOaGRHbHZibE5vYjNkdVBnb2dJQ0FnUEhKa1pqcENZV2N2UGdvZ0lDQThMMmx3ZEdORmVIUTZURzlqWVhScGIyNVRhRzkzYmo0S0lDQWdQR2x3ZEdORmVIUTZRWEowZDI5eWEwOXlUMkpxWldOMFBnb2dJQ0FnUEhKa1pqcENZV2N2UGdvZ0lDQThMMmx3ZEdORmVIUTZRWEowZDI5eWEwOXlUMkpxWldOMFBnb2dJQ0E4YVhCMFkwVjRkRHBTWldkcGMzUnllVWxrUGdvZ0lDQWdQSEprWmpwQ1lXY3ZQZ29nSUNBOEwybHdkR05GZUhRNlVtVm5hWE4wY25sSlpENEtJQ0FnUEhodGNFMU5Pa2hwYzNSdmNuaytDaUFnSUNBOGNtUm1PbE5sY1Q0S0lDQWdJQ0E4Y21SbU9teHBDaUFnSUNBZ0lITjBSWFowT21GamRHbHZiajBpYzJGMlpXUWlDaUFnSUNBZ0lITjBSWFowT21Ob1lXNW5aV1E5SWk4aUNpQWdJQ0FnSUhOMFJYWjBPbWx1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2WW1NeVpHTTNOelV0WVRkaU1pMDBNVFprTFdJellUTXRZemxoWkROa01qUTVOemhrSWdvZ0lDQWdJQ0J6ZEVWMmREcHpiMlowZDJGeVpVRm5aVzUwUFNKSGFXMXdJREl1TVRBZ0tGZHBibVJ2ZDNNcElnb2dJQ0FnSUNCemRFVjJkRHAzYUdWdVBTSXlNREl6TFRBeUxURTJWREU1T2pVMU9qQXpJaTgrQ2lBZ0lDQWdQSEprWmpwc2FRb2dJQ0FnSUNCemRFVjJkRHBoWTNScGIyNDlJbk5oZG1Wa0lnb2dJQ0FnSUNCemRFVjJkRHBqYUdGdVoyVmtQU0l2SWdvZ0lDQWdJQ0J6ZEVWMmREcHBibk4wWVc1alpVbEVQU0o0YlhBdWFXbGtPalppTVRNM01qTTRMVEEzT1RjdE5HWmpZUzFoTjJZMUxXSXdOVGxqTnpKaVpXUTNOaUlLSUNBZ0lDQWdjM1JGZG5RNmMyOW1kSGRoY21WQloyVnVkRDBpUjJsdGNDQXlMakV3SUNoWGFXNWtiM2R6S1NJS0lDQWdJQ0FnYzNSRmRuUTZkMmhsYmowaU1qQXlNeTB3TWkweE5sUXlNRG93TWpvME1pSXZQZ29nSUNBZ1BDOXlaR1k2VTJWeFBnb2dJQ0E4TDNodGNFMU5Pa2hwYzNSdmNuaytDaUFnSUR4d2JIVnpPa2x0WVdkbFUzVndjR3hwWlhJK0NpQWdJQ0E4Y21SbU9sTmxjUzgrQ2lBZ0lEd3ZjR3gxY3pwSmJXRm5aVk4xY0hCc2FXVnlQZ29nSUNBOGNHeDFjenBKYldGblpVTnlaV0YwYjNJK0NpQWdJQ0E4Y21SbU9sTmxjUzgrQ2lBZ0lEd3ZjR3gxY3pwSmJXRm5aVU55WldGMGIzSStDaUFnSUR4d2JIVnpPa052Y0hseWFXZG9kRTkzYm1WeVBnb2dJQ0FnUEhKa1pqcFRaWEV2UGdvZ0lDQThMM0JzZFhNNlEyOXdlWEpwWjJoMFQzZHVaWEkrQ2lBZ0lEeHdiSFZ6T2t4cFkyVnVjMjl5UGdvZ0lDQWdQSEprWmpwVFpYRXZQZ29nSUNBOEwzQnNkWE02VEdsalpXNXpiM0krQ2lBZ1BDOXlaR1k2UkdWelkzSnBjSFJwYjI0K0NpQThMM0prWmpwU1JFWStDand2ZURwNGJYQnRaWFJoUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDancvZUhCaFkydGxkQ0JsYm1ROUluY2lQejdNOXBQYkFBQUFCbUpMUjBRQUFBQUFBQUQ1UTd0L0FBQUFDWEJJV1hNQUFCSCtBQUFSL2dHVGovekRBQUFBQjNSSlRVVUg1d0lRREFJcURkdlhWUUFBSE5KSlJFRlVlTnJ0blh1WVhXVjk3ei9mZCszSmJSSWhnRndDSklDZ0JCVklzaWRVU20yOVBQWFVXckhXdzhIVGkraFJUeTlnTW50UGdHcHBuNHF0UUxMM2pnR3R4Nk05VDYyV1dzL3hVcFVlejZsYWIwZ21PNENvUmNJMUNRbUVXeEp5bjluci9aNC8xcG93U1NhejE1NUxhSjh6ditlWlBEUFphNi8xcnZmOXZyLzc3L2VLY1ZKUGIzVVcwZzNnNjFIWTRpUXNiZDV5ODlhRG4xZjdGbUgvUU5KTTRIZXhiKyt2MXlMQWt0N3EzQ0MrSi9FcTBDMDJIMTVYWDdVSFlQRTExOHhJcGszL0IreGZWd2pmd2I2cXY3YnFjYVpvaWthaE1ONGJHQ2ZBY1NCQ1lBWXhuVGIwMlNXOUZXRlB0elFEa1BBY3lScjZYQ0pCbW8wQjZBWWZISStUcmtUU0xDUWhkU0dWcHBacmlpWWQwS0FNMXkvOE96THVHZE5uVXpSRnh4clFVelJGVTRDZW9pbjZOd3ZveURDbEdIVHc3N1dOdWc5VEtUd3RHWFk5aC96dTRYLzcwTSttVkpNcEtxNEFkMExsNjFhSTFNZUg2RE9OandkbWc5NEh2RTNTVGp2K1B2RGtDL2ZYUXVCV3BJRGRBSDk5R0hDUEEzMVNjQ3J3WmVOUEEzc0JiTTBNUVIreHZVZ2gzR2Y3Smh5ZkJFWE16aFEvSGx0Njd0NWJhMU5BbjZMT0FiMWtXV1Y2U0hnTjZKMUlsMkNmcU16ekVHelBCbVlCRWVrNVFUcnNxMTIyVDhoL2YxN1N2dUhQdDMwaWtBQjdKZTBleG9sbCszaGdHakFnNlhrZ05SaVRJclpqOXdOZmtNUDMraHNyOTA4dDV4UzFCWFM1dDA4aE1BKzdGK2txdy9IWXlZdXNDZ3lOTzBwNjN2RDVZSzh5Yk95dlQzSHMwYWluVWhWU1lzZVE2WWdXVnN5WlVGelgrUGM5ZjIxOXUwR2NDZnlsNGNvY3lKYllhTFJSc0VkMk9rbGppL2xtMFhCZDMxSXdkR1BQQnhia1hQd1BMSjFtZkMzdzhFUU9Za2x2VmFDWGdHY1Z1TnhkOG5OMzFlc0RvOTV6eFFwNXNIV2NGR1lXdVNkNDUvcEdmZCs0M3FOU1BVbndNc044N0pPeWQySWFLQ0QyRzNZQTI4cVY2cU9rOGVIbXh4cTdPMUpGbC9kMk95UnpzUFZpZ1ZsaVlGUkFseXQ5M1lZUFlsOEpKSkoyQXA4UmZOMzJvekY2bjQ0MDNpYUNFcFdTWHpJc2xiMHV0dEx2U0JyaXpiS1lLV2tCOEdiczl3SW4ybjZiUXRpOXBGcTlabjJ0OXZ6RVRWTG9CdjlYNEkyMGVWZWhQU20rSG5od1ZJUzJXak9UVXRmVmp2R3lBZ0p1bDFFRHVITXM0eS8zVmkrUWVLdmhOY0Q1d0duQXpGek5HdzYrRnJBTDJFUUlQeTczVnI0TmZMWFpxTzhvTkUrbHJuY1EwM2NndWw1RUI4ZDNTNk12cHQ4RWVpY21BVDJMdlFMcGY2NnRyZG8xV2FPNlpNVzFwV2hmYnZzdkRLY3JTWDR3bUxiKzZjZXJHNGMvYzJOUHBYbzM2RjVnTmZnVThHOEtmUXY0N0FRS2lybkFid0NYdFo5U1BVelUvZ0tiNUNUZ0RjQ3Z0T1BPQ25xTUdQZDJwRlpjYzdVOGJmcVptUGNDdjJNNEpRZXgya2pydWNCY3NsU0V5NEgzTHFsVVZ3ci9jN05lUCtvWWxpenZtd2ErRlBnUFJhVCtwSkY5MTFIZGRqM0xsayszOVc0eWc2OGw4UW1qZitpZlJERDM5RjJyYUMvRXZzSDJlZGpUZ0tkbXpKaHhZS1RyMTlWcnV4M2pWOEdyZ2YyT25wMkU4SzZlM3I3akowVGRXRjZWMEVtU3ppMm8yVzkyMExOdGNSL0NLWFk4clpqNW9XMjJOeFpYa1NvejNEWHR6Wmd2QXRjRForY0dleWVxUUo3T3dDOEtQb2ZVS1BkV3p5djNWcElSUjVnd3gvWVpMeXFZTTA1eC8xRUJyUkJlTG54eHpzcC9idlBWb2NTaFNiVDBTamJ2dG4xUk5vYWszNDRmWFh2VFRVZlZTWnVyNi92QTM1RDA4OXd6Y2k0aG5EY2g0MGtraXdXR0U5clBwWENNOXhJOTJBWnd3ZmFabVI1YlFIKzJONVR3OHdVM1lMZWs5NEkrQXl5RmNZdC9BWE13NzBOOEN2VGFKYjE5UjJCR1pvSE1XUyt5UGJnSGVDU01Zb204UE0rUXMwSjRLTWIwMGNrZVVYUTZYL2kzY29BOExYeGphRTI3disycVJ6WVoveHlJMkxORlBHY0N2U2t2ejEySGJTMDMwRDJJVVkxazJTV2tzNUJlVW1DVHBJYjcxelpXdHpXOFgxT3BURlBRQjRBYnlWU01pZllxL1FyaU5zbS9lY2dtdXZxUHBDU2NpVGp0UlFiMEk4QzJvd05hSEplTEVFdnNzcjF2OHNjVWZwa3N5QUxTUHlPdFc5djRpN1p5T1kzZUo3UXpOOW9Tdyt3SjBza0M5dUtDc3ZwWndjOWxlM1NsV0RPd1gxR1FldzVpMzlmdW9rWExlc09nd3UrQ2x3UEhUK0lDTFFSdUtsZXF2M2J3ZjZaTlQyelBNM1MveUlEZUFPd0tiYXhHNWV3bkpualMvWk1TRndLSlFqQWgzSnRhaGZSMUpZZUV5Zzl4ODQwTHo0UnVwRmU1d0tzTHRpSTl1YTVlSC9YaWtDU3pCQzhyT0ozUGd4OGUzUk5WVVpJa1M0QnJnSk1uZTRueURmUHljNityS3Z1UHBNdlJaK1Qyem90Sjl3TjdTMHY3cmwwS1B2MHdMaFJqakl1TWo2bVNiM3MrdHJEM0szcGJGMnFONFRZbHpNV1g5SzI0L0VoZ2E4QnArdDMrUnEyUWoxV081eUxOSzdJVGdRM1lld3E4NC9HNW9WWmdRL0d3MEJOdFBDYXprYTYwL2VwanNFUlBZZDhVMENjZnVua29BQk83a1JhK3lKazJnOEFteEVESjloK0QzOENSSm5jWFpnYkhLQko0eWZYWGhuUXd6c3BVeDdCUDBvNWQrMUlYVy9nWDJKM3RtY0I3Ykg3blNFTlh1MVJLM2dBOFVJd2YrUUtoMlM0R3ZvZG9vNVl0NmUwVGFKN3d5UzZ5U2N4OVJrZDFsNVY3cXdMT3gvNVAyRVdsVWdRZXlqbmF6dHdEY2xhdVRveW1ObXpHL0drbzZlLzZWOVlHaG8xekRuQUdzSzhBVmdUTUtPaHhpY0NCZ3ZqYmdmMUVzMTVQUzRqWk10MkhmZEhEVkk1akF1aFMwbFZLQnc4TTZaVXQwT0R0MTd5UEN6OWVHL0g2SjU5K1dsZlVHclAyRGc2OFFtZ1FEb2JqbFJ0eHBTTW5UbEVpS1M1Z3d5SVhBSXF5UEpRSDNXb2RHQjJqRHBpTFVYc2RYeExHL2RqeDZNTlRBcndKT0wzZ0MrM0dyb1AvRm1sSE5zK0VITlFYSUMzSGZqMHcvVEFzUEdiNDR5QytjZ2lZTTlvRy9PRmgzem5hTzUwQmZNWjJFWDM3eDhDZkFjOFZZQ2VEdVE1TmlUUzlMWXJ2REZmcGhLSndEOUtiaTFqNEUwR3RURkVkcmdlVGhKRTNjaysxTDd6MTVsdm1HZjVVMHBXU0huWDBybnp5OXdOM3hCaWJIZ1pvQ1JTOVY5TFdJdU5adEt3NlhkSzVSUUJ0ZTd2TlpvZDJVVk9WRUJjVmtqb3g3Z0VldFVlckEvSXNGSDUxRk13Znh2SDhDZkJOelNQRDZNOHRxVlMyQUQ4Qy82R2thekR6OG9sN0VQdURNbDllMTZnZDhhQm1iZFhlY3FXeXZ0M0RtL1c2ZTZwOWJ5eHMzNWdmWXY4TGdkMEZycVdacFNwVFd0ZW9meFg0NmdqR3hudUM5RVpQZ3JMZlUrM3J0amtSbUNXNUZDMm4rdyswa0lZNGRKZUpzNjc0NzU4T1FQcUxmMzZIUFBpajBzQ0JmY2NwOVR5a1YwWDc5NERYWTNjUndreWt2ZGhJT21CelI3TlIrOHk0L0MzQnA5cGVVTkNhM1NycDhlYXExVzJrbVdZS1gxekV5RVJzRlR6UkhDWFpLdUtYQmxGTWY1VzJZdjl0OHlnNUllc3pZM1pYdWRKWHc5NEEzSWkwSC90RHpYcnRtKzNBV2dpajRnSmlJYnNzSW41QzBKNW1yYk5rcVZJYkw4ZUUwZEsrRmNjYkxnRXVzNzFRNG1SZ0pxaVVNV0lOMmo0dmM5WEcyWmplbVhCNXVWTGRmMkRudDVUcmQzT1JUck85QVB1NFhJenRGSHplOXRsQU9STXc0eCs3MERuQWlRWDBQVXQ2MGpFK1UyQkpUMFU2bFdKZWt3Y3dPOXFNOFdTazZRVmY2VG15OU53Mm5IUlZxMXlwL3FQZ1NkdDdUWExmUkdGQTlxV21rTXEzQTlqYXJOVTZ6aE1xbGF0OWt0RHdTVjZYM1doQ3NxWjYrcTd0QWw5bXU4K3doTXpLbis3MkcrM1MvTWZEMVpBaDdpYXBsWWxrZjlUMlAwcTY4VWhKVUEzRHhWSmljMWVqWG1pU0ZMVFE5cHdDVjZZb2JHWHd3TTRDSzdyUVprN0I1ZitaNVhZQTdDNmEzU1k0MCtic2NxVzZxVmtmSFNqTmVpM04xSThKWkdqTHEzT3M4RW9jaXpDYlo3Q2ZHcE10SnJnTWM5NXc0NituMmhmdGVDbTRhM3hnN3BzT2ZydnRHdmFwT1NnSGdlMlM5Z0lIa0FaemZUQnhGZzRlQ2d6c0JRWU9GVU1hRk94RmV0cjRud1IvSTlpVXhwZ2tTb1o1WjN4cFQ3VTZlTWltRkxMQ25rdjdWdHh4NTZxVm8vcTNGeTlibmtYejdDTGNiNy9UOUlIbXJXc0dDdWg2aXd0bG8wbjdrVGEyQzZNYldrVzVqdTI1bU5XSVB5ajNWdTl0Tm1wN09ZWVVBK2ZLSEZmdzhxMFV0SFZHNElUNmMvRHJEbWZJdzVqMm1OSkR5eDljSVEvd1Z0a043Rk1BSS8ycnBPOEJhNEdIU2VQVHhyc2NDQUZOSndrVjB2aCtoWkJJK2xKTTQ3ZUhOcHJFQVVMWVFZeWI3TGl4V1h2Qmw3eTR0emM1ekcxM0ZlaXFJeFkxaEwycHRCVDQyZWpjT1pubExOKzZWSUQxN1JiOHBOMWxpei9RTzBNaFhPd1lpNGpjWGNEalNnZmIrT0gxcktSV1lTVXpDMXg5RWZISmNxWHkrV2E5L3NpeEFyUkNPTmN4RnZGdVJQQm1SNTRkSzRmZWl6bUFEalV0Y2wxbjdCejZBQzhUdnM0Wm1GTXBmTTM0RnNNOXpWVWpsMHN0WFhIZFJpdmZSaUc1UDBZK2QzZnRsc0V4T3RwVEhTbDI5MEQ3Z29SY3Z6K3ppQjBoaGUya3JZZmFXNW1ja1B0cmk5QTJ4N2lsK2JFMWJqUE9weDNqYzNRVzdwNEhmQWowaG5KdlpZMkkzMWpYV0gxZ3NnR2QyMGN6Q3lFSGJWaS91clp2akJ5YWE0Q1REdk0zUitEdGtwYm5ISzhqdXV5cTkydS8vSjhkZlFGZ1FsZ2J6WjhGaForc1czV0xqNjVpRWwvNDBGMk9KRGs0aTNNQ2FiZmhZNEl2SDI0SEdGb3VsUjR0Y0pNemMwQVhjQmo1S2ZDMmRoY21wZEk4c3F3OXRiOG5XNDJmYk8rN0Q5dlRHTy9DZEpxTU5SMTRMZEpDazN5dDNGdTltY0FqelZwdFVxcVBmcUgzQXpOU2NZNWR5QVc4RC9QUVdKOVY2cSt0ZkxTbnQrOHg2UVVvOWRkcUxsY3FpNFhHOUlMN1Qzakp5VEt2TWN4RTJpV0YyNXVyYnI3dktEdFhPUkI5S0VkVTFOaDhGUkhZMkY5YnRYNXB0WG9JZVBwWDN0SldPaS91clNaNWVkY0pCWUFmd1Q5bGNMQXRoM09NcjhpamF1MG9sZlNJQm1OYmtadW02YURSTnhUQ2YzU01uVXBUa2VWK3ZBdnhpOEJONVdyMWpqVDZtWHNhOVFrTnBxVXFuZVFzdmJTSXVyVWIrWUV4QXhwZ1hXUFZoTDZBZ3M1d2pHZmxRTjF1dDc0OUNrYzkrT3dvSDQrejZLVEV2a0FjVjNsWGY2M3pnaytKTG9Xd3dIWjNBZmRhaXZueHV0dHVHM1djRjE1ZERRcmhGWTZ4Z0xUVGdNMGp6VFh0MVlCMXRWb3NWNm8vZEZhZTljdmp3TUQ1bVA4R2ZEV1JQbFd1Vk85czFtc1RsMTBaa2xPd2k2U1hHbnU3WWN1NEFMMzR5aXVEaDNuNzcvbkNGOFlGY05zbkQzRTQyODhRUWlIand6SE96OTFRcmRocTdRb3dKZ2t4eEpZWFhYR0Y4c1FodWhMby83dEM3elhUOXZtRjFaczAzdHQya3J1WWJidFFYclhFM3VqWUNZZmFBbnhDOEFvUHBkNk9qYVlEVndBOXdPZkt2ZFZQTkJ1MUo4ZUw1U1dWaW15Zm5qc0dpdWh3VzVOazhPa3hBN3FuVXYwc1l1NmhicnVxYlJiWWhTcWREelhzbHZXRm1OV21kUU1PMHNhWlo4eHJ5MjNLZmRlZGpOTnpNNXp3SEdKekxCalRQV3d6elFLdTdxbFczekpjWHpWU1QzWEZSanZlMEt6WHRvK0NxTm5BdVlYU084MVRFcHZiMjRNNlFkTHBoY0xvc0t0ZHl1aGhQdU5XejdMcTE5VVZGdHF1VXNoM1BpcWREVlFSNTVjcmxldUF4NHBHQWtlMEhWQ1NWZVF6cDRqRWs5VGZ2K3JXTVQrdkJQeDJMdVpING5McTFHMlhKaWdKeVhUSE5EaGorODk4ZDFsdisrUXlwNjhEbjJPUXpVTVNEelJyWStvUlVRSmVqWG4xNFZBSlNYZ3NwcjRaR0JIUVMzb3JrajBQQ3BRVFNSRFlFS0tLQkZST081Z2IwUWJQRXBzWlREZDE4c0xyUGxiYlc2NVVhbEl5eStMOWVmQnFQRFFMK0MxUU4vQUh3S2F4M3NqUTVSZ1hVQ3duYUJEcjIrUFNib0NmU2RwdytBOVpGbFhISExJbEVjVXdFMU50NzdGMHhZcnpMSzZ5T1VIU2dLVCthSSsxdVhrRXRvM3dQZzg2YXk4d09EcEtkUmJTM0dKUDh2MnBSdzkrTEw2NlQ0UndlcEc2eEV6QXNLRTFzR3QzcHkvZHJOZDNPNllmbHJoeFBBQThWTERvVFVnM2xDdDlZK2Y2MGh5a0N3dGV2UWQ1WEdNdkFiK2pJL01CVXR1L2llakZkT1MyKzNGdFpWcnVXekV3cE1LWW95YzN2ZWJhdnRKZ3l0Sm9YMGYwNi9OSmZFem85dldyVmg0WTIveHBMK2JUa3I1eWlOZEVnaEQyMk1rem8zdzNaQ1g4N1FNcW1RZkk5OUpHTFFvbFR5TnlIclJYQmZJYXdudnUvZVJmajBua05odjFQVXQ2SzdkSnVoKzBIUHg2eGxPSm5UVVdlanZ3TGVEdngzUUxhUzcyb29LWFAyV3pmVnlBWGxldmplaE9LMWNxaXdNaEhTbDdzZHpYVndMTlNleVhJczZONkV6Z0pSa2dRM1JNejhzVHppVzBZT21LYXhmYTNvZUlBYWFsMFNjckpLOGNUTk8zQ0M1eTlPbEFTZEpPdzAwaDZPNXh2Rk8wMk5pL2F1WDZ6aWVmTHNFcmk0bFNQeWY4Y0dpbkdBWm1TcnpjcUgwVm03VGZNVDR3bmdWZDM2Z1BMRjdXKzgwa1NlNHpYSW0wQXZ1bGpEM1o3RGloeXhmMUx2L21QWTNWSFlHdHAxSlZiZ3llVUdpSGlyVVMrOGZMb1F0N0RwYjJyZWl5ZVpudDN3Sy9QVW9MSE9Oc2hpZk5aNEU0RGZrYzdmaGFvVHNscFpsSWRSQk1kMHluWVpmeW5PVlUwbWJEallMUHI3M2w1dkU2K01lVVdDVzdHK21WQmJQaEhrUGhpZjQydmVBazVnQUxDOVlRYnBjOTdsWm1kMytzRVlFdFMzc3JhNkw1THVKRHdPdHlwdFBwM0NUR0Z5YUVjNENPbUlRSkFpOGdxMUlwOG9VNzZUQ1FkcVNYbzlwM0hJVERuUEtLZHF2N0VDOUJTR1lEdndHdVlyOXlTT0hMUlJNY2xwdy9UR3lWNHRHTUZPa0FXZXZkTzVFK2JmaCtjOVhLUWNaUHM4clZhMC9RSVZ6SklBOWlQNy91S01hbTRXd1ZLVFNWTUR4SWxvUi9kTTlOcFNvVTVwSVpta1hjbGcraEloVWF4YWkvVVI4RW11Vks5ZDJDS3d6dkJ5NkdEcXAyTWpvVjZZeHlwWEozUng0UE9XRC9Rc0dyOTRJZllwd1ZVaVZKZnkwZHJpZmJqdUZNKzJBZ1FBN2huZGczNU9LTFBMZjJwOEJQQkkvYmZoNnBKZFJsZkM3Mk84bmNkN3VCNzJNclAvaG5QMmdYc0JscGc4eUdpSC9hWExWeSswUXNvdTFaVW5oUENMenBDQTFWNGZIWUdyd2VSazU4RVZvczAxMHNYMTRQWXZhMXNmREJQbDFaYWtFaEUwU2oxQkNPbFpyMTJnN2dVK1hleWwxSXZ3MzhGN0pjNzZJMEUrazR1N09TUER2T0NDRlo0bUx4c1djd1R6VEhHYVVzT2NhM1dTTUVtVjhRa1pHc2t2b2lzZ2JuZzBqZkY2eTA5RE1jZDBiQ0FDSWxsRExGbWZnTE1jWTNZYytWOUZTVSt0UnFQU01JRVZLQ1drUWZTT3dEL1JPZlAxQ3k0NFdPUjFyV0lZUkhjNWZVczBmUml5K1NGTm91bWRrTlBBSnhjSFFHUlFLK01EOEZiUFFORXBSaTMwT0h2dmVlYWpYRUdMMiswV2dMaEdhamZsKzV0L29vMGc4bFBtTDdWUVZWa0VUUXJjd3VLancrd2FtWStRVXZmNHdzeTVEeGN1aTE1QjJTRHZ2c1JOdW41eTg4SUh5N1F6aEpzTm5tb3dvOHNXN2x5aEVuc2R5M0lzdDF6c1Z6Q094WnQ3cnhGTWVHVWtsYjBCRTk1b1MwMFdoRTcwblA4dVZkWk9IcFVHQ2xua0ZzWEZlcnQ5bU02cEswQkt5MmFMUDJBUS9pV0poRGxTdlZFdzIvSk9tblVDeWhwOW1vN1ZwMDlUVmZTNlpQTHlGOThxREVMYUpBcURQMVd5R1pqejIzNE9VUFdocDNxN2xTeS9IWGdnOU5iREZLWmIwcmhQRGh2RUpYU2dkL0VNUDA3NS9NOU5ZZHRZL0Vkdkk0YTZSOTBEZzRab2NUU2RwcnV4RWRQNXM1VlY0US96RmxnQU1EdTBiR1U1aXZMTjlBQlRqUFZzZFlJTi9BM1lZTGloaUV4cHV3bjJrVzRMUVpaKzViYUxzUGRBWGlIOHZWNnZYTldtMXprZS9lYzl1dExsZXFhNUdlQW9vQU9nTDdJSGFrRHRpK3NLQytIblBWZGR6cVZ1bnVlbjNuVWR4Mnc0K0h3RWhGZmNNQnVpTHF5cklybllhMGRTeXJJNHkwZTMydDFwRnhaZWs4aWdVL0ltZ3J1SDBDdWpoWjBqd1g4M0JzQU5yMllsNWE2VXNpZnAzdEc0Qkx5WHJsdlIzY1dsS3AvTW42ZW4xendWbEtPcWk5M0c5N0oybHhkZVA4RDE0VE5LQlhGUzFvc1AzSStzeUlIUmRORnVlY1NaNUhiWHRuS0pXMmMyeEpZOWdHRjFDb1g0UmFDdHJrMW1DUjh2cUxLSkpQbmgydmU1L002RjZUYXQvMGlLK1M5Q25nbHc2NlhlMFptQ3VGUHJ1azBuZHBUNlhhL21TR1VuSXBXUkpaRVhyYTl0Ym14eHFGT1hUM3ZxUTc1OUJGMXVKSnZYRFExUGc0OUNpSWlNTTRkRWdMRm1NdTZldExITk16eU9ySG9wTGszcnR1dm5sZ2N2SHI0U0EySFlic2wvUXU2d3BKT01zeEZxZ2g5QUU3UHJaK3pacjIzQ1Jva1YyZ0x0UGVqL1NZeFlqenRHalpjcFdTMHNtR1B1RDM4ME9hRHFkcHdHdUZ2Mmo0ZExsU3ZWM3dSTFQzQlpSYXhsWVNZQmI0RXFmcGRRVWxrb0VIaEI3cmlGT0cwanlrVTF3TU45c3N0azBxb0RIUDU2MWhaWmlqa016TTlLZ1JkU1VONVRVSGU1YXozc1N6SlExZy8yRHkyWEdZZ1RrK2x6aHBWbXJWaWQ2ZHZLUm93MjVKdXh6ZHRvYXczTHRzbHRCRnBram5KVzBIYlhHYXhpTzVjalVCWFd4elBmWmJHVDNKSjVDVldOMEF2TlB3UFVrYkRNL21OdDJKaGxlRGZwWGlMWGYzQXQvcE5KWFU2TldNdlBGRzJqQmJaVDA5cVlBMjJwRDNhanZCMFM5VDBGa2NwUzNURUpoN3JyMU9qdkY4N0xka3FteDQxdml1eVFaMFVKZ3Y4UXFiZ0xUSGRtZkZuOWtSRWFjWEZJL1BnUjV1djBySlM0TTR3eTV3VC9rcDIwK3VIMG1rVzkwUzczTFdOMXVGOXppY2wvOEFCOFBKMHp0VXgweDJDTk9YTzE4VHpvM1JSU0tFQnpBYm1vMkpLU2dJUjdkODRnUEF2ZGxMK2Z4QXVMeW50enFxamhsalBKbm9sZGdMa0xEOUpXRGpaSUs1M0Z1WkNielo5c0xNdHRQRHpqci9kTEpzODhrNGRIdmJNWVF0ZHF1dGVKVEMyUzZXeG1uUVpzYzRjcGZSNkQyZ3I1RmxESTQxNkRDRDRrMFNoNy9GUG1CTnMxN3JxTm45b3F2L0tJbFo0NThpYlNEMm9QWlY4K01HOU4yTnhnSHcvOGdqZ2wzR2Y0VDBqcDVLZGM3UkdZMHZRL1NRNWJadFFIeEdJWm0waXVLZVNyVmJJYndWMFF2TWtMVEgwWCtUUjhhS2JZaEtYNEtZVHhiVmJJZlNHR044WUgxamRWdWJRRUZuRjJ3QzNnSTJPbWpFWXllYXEydHBUT04zRUI5RjJzS3hveGJ3OTRZdmRQckZaTnFNbCthbmxDV0ZBRzBtckoxQ20xT3c5TCt4YnplOEZ6Z1JlYlhRcTNxcWZWOTM5S09PY1g4WXFnbk1ldHB1QWU1RE9zblNyYVJ4RzYzMHBKN2xsWWsxQUVPWUlZVUY0RGM3TzlidHBXU05hTDdpMXVDWE92U1ZUcE4wRHRMTWR2NWlRYlM5dHEyUnVXeDV5VmxDVWpHUkt6MTRkNjErMUkyL2ZuV3RWZjdBTloramEzb0o2VU5rM0c5eXdXeC93L2pQMWpmcUhlZG1LNFF6OHI0bVJXZ0hlUE14QVhSL3JiWm5hYVg2bDVMbTJMNENjN3h4QmZFT2ljZENFdlpvdUJpMEZiTXdiMVNNYjVGNEU1clljeGlOWkpobFBEOWYySkNEK1d1TzhjT2xHVE02QzU5bWVTeEZEeGw2WHVaZkMzRHlPZm5ZdXRwZnFyMk82WVB0cm11dXVUVmQydHY3TnpFa1QrZWdYam81RnJZR3NMK0M5Q2RkcmNHT0pjS1NEM3hBU0tjVlBCUXBBaHN4TzQ4Sm9BRlN0Q214cnhYYWh2ZzkyOGVUbGFTZlpVYmdhUjVpMkp3M2lZMmxoOW82eGZ3dzBOc2p2aVZHTnE2NzZhYU9IaHVrd3RFOHBDMVdlMjRTU3FXVGdET0wxQkFpN1NhNlVOaTZ2OUZvbFN2Vk95d2VrZlRIMkpmVCtaRnRveG1BTzdBL0RudzhUYld0dVdaTngwc1l1cnBDWHVGZHBPMVhOUHpyK3RYMWdXTUc2UFgxVlFZZVg3cThjbjBNK3JyRU8yVXVNY3lWbEhDTUQ2L1B0MHdVN0RCdTR2ajNpSDlwMWpvL09yaGM2WlBOR2VCaXgwN1k5eGNKejlvK1ZkSXBoVUFVNHliUzRqN1lacjNXQW41YTd1djdmZUNmUU84bk80NWlEcDJuaFpMUDZRN2dSNFkxZ245cDFtdUQ0OWdWMDJXZlUvRE1sVUdoSDA0a3B5dWM0TisvdW40QStOYWxLNVovZXpBbUo5aGVRUFJMRUxOQTd3UGVKbW1YSGEveEMxRWZBUXRCdHlJRjdNL1k4ZXU4RVBnNER2UkpaZVgzMzdUanAzTy9KN1ptaHFDUDJGNmtFTzYzZlJPT1QyYXVCdTJPYWR3WVd2dWY3Yi90cjhiY3V5UHpuM05xN281czA3cVdnUFFqUWhpVm0xelMxNmVJWnR2ZUJiVHpEa1NrSHpYWE5Ebyt5cm01YXRVdTRITTlsZW8za043c3JQTitHWmpQVVBYUTZBYmY4L240bXNEL0FmL2Y5Zlg2dUxQZHBEQXQ5ejl2cEgyQWE0ZnczUzhLb0lmb3pwV3JUWlorK1d6bU5xdDJTL3IxM0Job1Jldk81cXFWbTRaNUl2WmFHcXJIZW1CYXduZStmMHVXODFxdVZFK1F0QThicEMyWTc2NnIxL1lBWEx5OE1uT2F3dlo4bG5ZS2Z0UmZxMCtvQ3pEVC8zV1hNbFdxdmJjNHhrZmNacEhXcmxybHBTdXVYWS85ZnJkSkxaQmsyK1B5WEt6TFdqSjh2cng4K2YreWtwZExuRWZXeHV4TXNqenNPVGxqMlUrV252a01zQlY0SFBNZ2pnODBWemRhRXphbjBoN0RYMkhmM3M3TmFIc0E4ZFNMQ3VoUlhYODJESXVNWGRKYlVUeFV2OU5BbWtYelJuQWJIbkljbTQ0RXc4UmFsMEF6SzU5Nkl2K1pNT3BmZWN0VHdMRktsODNkZTZ2M0EvY3RYdDc3a3lDVmtLYVJIZnlVNUxpS2xsSmxIb3dCeStuNlJtUEN6WnorbGJjTTBxYTc2MlRTaTNzMjh4Uk5PTjI5dW1HeXVyekIveC9mUDB4QllJcW1BRDJpT2pybXp6VzFERlAwYndiUWtxUEVMakNHZ1lOSFRBQnJHM1hMUGlCNzZBREZQWWNjVTJiU0lhK0c4RDR4cko3T1RtM3Z4eloySzc5MmlxWm9WUHAvc1J5MEFyNkRINGdBQUFBQVNVVk9SSzVDWUlJPSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIkZJRE9fMl8wIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiI0Yjg5ZjQwMTQ2NGU0NzQ1YTUyMDQ4NmRkZmM1ZDgwZSIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOnRydWUsInVwIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZX0sIm1heE1zZ1NpemUiOjEyMDAsInBpblV2QXV0aFByb3RvY29scyI6WzFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjIwLCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjEyOCwidHJhbnNwb3J0cyI6WyJ1c2IiXX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTAxLTI0IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiSUlTVCBTQVNlIFVTQiBLZXkgMSwgSUlTVCBGSURPMiBBdXRoZW50aWNhdG9yIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNTAxMjQwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wMS0yNCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTA1LTI3In0seyJhYWd1aWQiOiIyY2QyZjcyNy1mNmNhLTQ0ZGEtOGY0OC01YzJlNWRhMDAwYTIiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjJjZDJmNzI3LWY2Y2EtNDRkYS04ZjQ4LTVjMmU1ZGEwMDBhMiIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJOaXRyb2tleSAzIEFNIn0sImRlc2NyaXB0aW9uIjoiTml0cm9rZXkgMyBBTSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX0seyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbImVkMjU1MTlfZWRkc2Ffc2hhNTEyX3JhdyIsInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIiwiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbInNvZnR3YXJlIl0sImlzS2V5UmVzdHJpY3RlZCI6dHJ1ZSwiaXNGcmVzaFVzZXJWZXJpZmljYXRpb25SZXF1aXJlZCI6dHJ1ZSwibWF0Y2hlclByb3RlY3Rpb24iOlsic29mdHdhcmUiXSwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRGlUQ0NBWEdnQXdJQkFnSURDS1pDTUEwR0NTcUdTSWIzRFFFQkN3VUFNRFl4Q3pBSkJnTlZCQVlUQWtSRk1SWXdGQVlEVlFRS0RBMU9hWFJ5YjJ0bGVTQkhiV0pJTVE4d0RRWURWUVFEREFaU2IyOTBJRE13SUJjTk1qSXdPREEwTURnME56RTBXaGdQTWpBM01qQTNNakl3T0RRM01UUmFNRGt4Q3pBSkJnTlZCQVlUQWtSRk1SWXdGQVlEVlFRS0RBMU9hWFJ5YjJ0bGVTQkhiV0pJTVJJd0VBWURWUVFEREFsR1NVUlBJRU5CSURRd1dUQVRCZ2NxaGtqT1BRSUJCZ2dxaGtqT1BRTUJCd05DQUFTSnhaZkxYVXd4UVNOc3JIZ2xLRzk3QnlIMnhycWltdXBiODF4RGx4bWRUSmsyZE9jaWxPMUVBNmdrbkpUeXlZVlpmaXU2RHN0NnhSZTFhYU9wVzI3Um8yWXdaREFkQmdOVkhRNEVGZ1FVOGttdmxrUFFVSllKUkUvWFFZT2h4ZlJPek9Vd0h3WURWUjBqQkJnd0ZvQVUwNlRVbm1ubUdhbjA5S05YRlhMMDRTMVFoamN3RWdZRFZSMFRBUUgvQkFnd0JnRUIvd0lCQURBT0JnTlZIUThCQWY4RUJBTUNBUVl3RFFZSktvWklodmNOQVFFTEJRQURnZ0lCQUdjOEdpZFpTMTFpK1d6b2hEazBHYy95cXk4eExTNGk5ci9RSWNzN3BON1pBakZucU5KV24yamhqUy9YVW5VT2tOaWNuUjZWSW9vYTVxQnhMVGZFM240LzFPZ25zWXVVSzBKaU53SWZXMU84K3pXNFZ4d2lWTkI2bnB6RGc4NFljRlJ0MVpvMDd2MDJuZm83cVRaSVJCSFcrV1JqMDV2VG9ZVHBXM0FOdVM3Y2lpTklURHRnOUE1MUxQempiQldXWHVhMFJGSkNMOXF4RUxlVTZlTk1jQ2YrYy84ZWl0RFRsZWZqSWZnd3kvSHB0NlJTVTd5bGtyUGxvODVzMndWR0FoRlgxMTRPS2Zsb1N2MHEyMVB1RXJXZ05CWjExQ2FtdjJrVXhBbU8zd0lWOFNqY0hJOUxDNHI5eXNDWTQ5RVVPeXVNUk9QaWxYdTN4TUxDbVhISlNpR1h2R3BjaVR5a2JGaGZxUWFaNWxhLzQwWHRIL1I2VmlCQVoxRkhhWm0wUlZLaXJaVHY1eDhTOEFqdWhvWk9IRVREYXc1dkhwQVFyUUpDT1RpOG40UUF0ZU1jbUtuQVBhWVdQcXUxY2ZaNG5yMTg4dElocW1CZEJNN1M0YTlHRUE0NjhXajhBSDFDYTl0VGlCS2tJRW0wQ2c3dEpkWm53N2JhTHI5c3l6QXFiT3N2V3RQbGoxaDdxNDR2M3VOamVySW1SUEREaStNS2VSU2x6SGEvMGtqbXRsQllxa1FjRG5MdGh5TW5iWlE3VS9qV0ZnNUJ0Vk9BbE5oQ1RNNFFWSENJU0grTjhsSjZXc1lrVXNtY3N2UFRoQ2JhTFpmQnhlaDg3UERKMXJKSHpWc0ZsRVluWU9hMHlUaThQaGEyczI1YmdtUTZDL0YwbEZyQzdZWHBoaERHIl0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUlBQUFBQ0FDQVlBQUFERFBtSExBQUFBQm1KTFIwUUEvd0QvQVArZ3ZhZVRBQUFXWmtsRVFWUjRuTzJkZTN3VTVkWEhmK2ZaU1lBRUxJV1EzUTFlMHFxME5sVklkMmQyaWZpK1lMVnYxWUt0cldCdHZiVUNWVUdnVmJSV0xTMWlzYTBDeWtYd0F0cFdpL2ExbFpmMnRkVWEyZytRN015R2k3NjBvbFJSTWRrTkZHL2tBdGw1enZ2SEpvaGNzak96TTd1YmtPOS9rT2Q1enZucy9IWm41anpubklkd0hCRWJyZzJsRkg5TEVyNHNnSkVNQkFFd0dFMGcyZ3JHYzFEd1JPUWQvZC81OWpWWFVMNGR5QVZHUmJpYVRmb2VFNzROb0NURDhQMEExa0RTZ2tpelhwY0Q5L0pLcnhYQXRxcXE0bjMvTHIyWWlhY1E0enlIeXpRd1lVVmJ2OUxIeCsxYzErNnFnd1ZDcnhPQVBrd05zSSt1QW5nYWdCTmRXallKWUpWUHlLWGh4b2EzWEZxeklPZzFBcWdQUmtMRVBBUGd5d0FVZVdUR0JQQy9nckVvbkRUK1NnQjdaQ2RuOUdnQnZIYmFhZjMyN2hzeUNjeXpRQmlWUzlzTXZBTEdnd093LytHUnlaZGFjbW5iVFhxa0FBeS8rbWxKbUFMZ1dnQkQ4K3pPKzhSWUxYeHlRYml4NFpVOCsyS2JIaU1BQmlqdVY3L1llZUV2QWVETHQwK0hJWm53SWpHdGVETnh5ak1UOGJTWmI0ZXNVUEFDcUI4U09RSDk1R1hFdUJGQVZiNzlzUWJ0QVBDd3FmZ2VxdGxWdHpmZjNuUkh3UW9nTmx3YndaSnZJS2J2QUR3dzMvNDRwQjJncDFuU0w2UE5zWmZ5N2N6UktDZ0IxR0tzVWhwc21jRE0wd0FhNTZHcGRnQ3JCWGhwaXBrRTBmVUFUUUxRenp1VFhFdEVpMXVhU3RlTXc3cVVkM2JzVVJBQzJGdzVhdkQrdHFLcmlHZ1d3S2Q0YUtvSm9CVkY2Rmp5aGNUbTNZWG1RejdJcXdEcWc1R1FrSElLRTY0QU1NQXJPOHpZUUVTTFdoTWx2OC8wN1dOQXhQM3F1Wkl3QThCRjhPNHpPZ0RnV1NGNGtkb1kzK0NSall6a1hBQXVoV2d0UVB1SStZa1U1T0thWk1QTFRsYUlEZGRHd09UdmdERVZoTUZ1ZTNnSURVeFlJWDNLcjJwMjFiVjVhT2NJY2lhQWVGa29hQ3ErSzhFOEhZVGgzbGx5L3dsOGZkblpnNVNpQTkvTXdadElNNENWS1VvdE83dHA4NXNlMmptSTV3TElVWWhXTXVGRklYRy9talRXZWhXaVBTd1c4VFVBaWhkMkFFZ0FmOHBGeU5rVEFkUldqdTFmMHQ0NkVaQS9BT2dzTDJ4MDhqNFRIaU5KQ3lOSi9RMFA3UnpCSWRISTd3SW84OURVZG1Zc2E1T3RqNHpidlcyZjI0dTdLb0I0ZWVoVVU0akpBQ1lER09MbTJoK0RzWVVGbGcyUSszK1Q3emg4RHZjalBpREdieVdKUmRGRTdCOXVMWnExQUE1NWF2WTZSSHR3SjA1TkdpOTRaQ01yY25TN1l5YjgxYTJRczJNQmZCU2k1WmtBblpHTkV4bElBbGhGQWt1MFJ1TnREKzI0eGlFNUNUY0FPTWxEVTY4RHRBSStQT3cwamMyMkFEWlhqaHA4b0YyNUE2Q3BBRXFkR0xVQ016WUF2SGhRV2RzelZkdTJIZkRLanBkc3E2b3EzcmRud05jaGFCb1lOUjZhYWdYNHdlTCtxYm5WTzdlOFoyZWlMUUhFeXJYUklIN2F3OWU0TmhBL0lRaEwxTWI0Wm85czVBV2pJbHd0cFpnRzhEZmhYZEJyRnlSTnRKUExhRmtBOWVYaDgwblFHZ0Q5SGJuV1BXOEF2TXhVaWg0cDlOMnpiSWtOMTRiQ3hIY0J2ZzVBcFFjbTJsanl4ZEhtK1BOV0Jsc1NnRkVSL295VVpBQVlsSlZySDRmQi9EeUJGcXRKNDQrVWZ2YzlibUJBMVB2RFgvRUptc2JwaUtpYmIyUWYrb1RVckNTb1pEVEtnTkFEMmthQUkrNzRoZzhBZmt3SUxGRWI0OXRkV3JOSGsvNkNpV2tBWHduZ0JIZFdwWmlXMEdzeWZiRXlDa0FQcUJNWldPMkNSLzhnWU1tQlZQR3Z4dXpaOEtFTDYvVTYxcGVkUFVoUjlsOUp3QTF1dkZreCtOSm9JdjY3N3Naa0ZFQXNvUDRkd0RrT2ZUREJXRVBBRWpWcHZOZ2JzbWh6QVFOaytOVnpHVHdOUk9QaFBMYnl0MGpDR052ZGdHNEZzQ2xRUGF3RFNnS0FzR2w0TnhNZVVVZ3U2MjE1OUxsbVE3RDZGSVdWNitBczVDeDlRdnJEalExN2pqV2cyd3ViWWlXYWFjeGh4QUc2dXJWLzZjblJKdU9IZlJjL2U4NXUydnhtSkdIYzJ0cS85Q1FDcmdIUVlHTzZTRW5TdWh1UWFUZnJVeFlOTlVQU1Y0K0hXcnA4MFZtYXRnckFLcjFjcldHQjN3TW96elNQZ0U5MzkvZE0zKzVNaFpSZFp0YjJYZnpjb1RVYkd3bjRvNVd4eE5SdFFtMjNBcEFXMzAySnVXQ1NISThiR0IzV2huRzMxOWp1dzEwZnZZdytBUnpuOUFuQUF6YjRhOHAxdnpvcDMzNVlvVThBTGhKSHFLamVyODVRcU9OVkp2eDZvejkwWnI1OXlrU2ZBRnpDOEt2bm1RR3htUWdMQVh3Q2dPSWpzU0RmZm1XaVR3QlpFaHV1allnRndtc2w0WGtjbVRMK1JkMnZqcytIWDFicEU0QkRObGVPR2h3THFQTmg4c3NBWFhTc2NVeFk4TnBwcDNsWWM1Z2RmUUt3Q1FNaUZ0Q3VQTkJldEIzQUxRQ0tNMHc1ZGUrK3dUZm13RFZIOUFuQUJuV0I4Rmc5cUc0QytERllDTU4rQk4wUkx3c0ZQWE1zQzd5cWJPbFY2QlhxU1N4cEhzQlhPTnpRSG1RVzBWeWtXOW9VRkgyL0FOMFFyd2lWeEFMYUhKWjRGZUFyc2xxTTZSbzlvS291dWVZYWZRSTRDZ3hRTEtCZGFrcnhUNEIvREhjU1lRVURpN2hBZWpKMDBTZUF3Nmp6aHlKNlFLc0QrQ2tBSngveXAvMEE3dWxJRlovQWpMc2NMajg2NWc4WFZJU3dUd0NkckMrcnJvZ0Z0TWNGaWJxakpNQythSnJtNXlNSjQ5WXhlelo4MkRhZ2RCNkExNTNZSWFKNzRoVWhpOXZzM25QY0M2QzJjbXovbUQ5OFc1R2lkTjNuai9pSmx1QzVOYnMzN2VqNjk3aWQ2OW9oNkFjT1RaNXNTcnJacWI5dTAyc0YwQldoMDRQcUpjY2FvL3ZWOFNYdExkdEFOQS9kbExuNWlHNDcvUDhpamZvZkFQelptWGQweTRaZ3RaZDlpQ3pUNndSd2VJU09HYitzclJ6N3NZZTRXTGsyVWcrb3RVeFlnd3dwVXdEQWpQUHJBK0VMai9oL3lmYzZkSE5BRVN2ekhjNTFsVjRqZ0c0aWRKOGEwTll5cTJ1Y0hsUnZoK0FHQnNiYVdaOUFDN1pWVlIyTSt0VVBqNXhJZ3I2ZmhiK1Q2aXRDWTV6T2Q0dGVJWUQ2UUdSY2R4RTZJcnB0ZlZsMUJRQkl5Uy9EV1o3OWlIMTdCdHkwOGNUUkEvU2dlanVaOGhVQVg4N0NiU0lwRm5LZXIwR1BGb0Jlb1o0VUMyaVBFK1NMWUl3ODlrZ2VXS1FvZHdOQU5CbC9sZ25PR2t3UXpmT2xVdTh5WXk3Y0tZMFB4ZnpocTExWXh6RTlVZ0JiL1dlVk9valFYVm5uRDZWZjcxak1BS3dsVlI0RlYzZjJpT2huOFUrR1B1SG1tbmJvVVFMb2l0QzFVNzkvT0lqUWtTQ3hrQUZLOTlpaDVWNzVhWk55czUvdlIva3kzbU1FRUF0cVlUMm9yajlLaE00T1VTT29mZ3NBRGhRWDN3bmdtQ1ZUdVlWbnhJWnJJL0podWVBRnNMNnN1a0wzcTh2QkhIT2p6UXBMeks4ZFZqWHduTGZXdnd2d1Q5enc4ZERsSGM0ckpwTi80YW9uRmlsWUFXeXJxaXF1OTZzemloVGxGVTUzSUhQSFY4THdBYUxrRmdCb1RReDhFTUEyRjFadEI5SGRyV2JyQ1NDNjI4a0NERXlvcjRoOHlRVmZiRkdRQXREOTZ2aDkveTc1WjJlQ3BadGRTUUFBUkxncDV0YytOUTdyVW9JeE04dTFuaGVNcWtpVC9xTnh1N2Z0TTMyK3V3RHNkTENVSkdtT3pzWVhKeFNVQU9xQzBUTmlBZlU1cXhHNkxPZ1B3czhCUUUwYUw0RG9XYWNMTVdpdW1qUU9iZ3pWN0twclkrS2JiQzVUUjBBMGtvaTdmVXZLU0VFSVlPT0pvNGZVQjlWRmdzMlhBZnhYYnF6eU4rb0M0YkVBSUNSL0grbnRYdHNRSDNteG8wM3gvd2J6WHpMT0JSb0J1a3BMR0dkckNjTndZajliOGlxQU9FSkY5VUYxaWkrVjJ0N1ppVHVuQjBFSm9vVlA0VkpmK2h2TWk1eXN3Y0NFV0ZBN1FyUWtxTHVhZ0RZRzV2YmovU01pQ2YzeGZIWk95WnNBRGhaU01KYkQyMmJMeDRZeDhwVGdHOWNDUUVlcTMxMEFFczdXa1F2aUNCMXNEUnV2Q0ozTWttY2RZL1RUS1VxZEVVMFlkK2E3enpHUWg2VFFlRVdveERURnJ5WGhhN20yZlZTWTVtNnVITFc2ZXVlRzkrb0Q2bTBFUEdwL0VUckRESWp2eDBYb0FWUFN6YWFrMmFERGVpc3d0aEJocHBZdy91YVM1NjZRODE4QWFZb0ZLSlNMbjJiWWdiYmlPd0Vna2pBZUF4QjN0Z3pQTjZYWUM5QWNmTHl4UmpNVHByNlpyQXdYMnNVSGNpeUFqU2VPSHNDRXEzSnAweExFMDR5SzhHY0lrSkIwSTV6Zmt3L2RKK2hnd3YyKy9YSkV0TWxZVWFnSFNlWlVBSXBNbGNIVG85a2NVeVNsdUE4QUlzMTZIUWhQWnJNWUUxNGdvRHJhWk13SXY5dnd2anN1ZWtOT0JiQ3pzYklSZ0tPMjV0N0RGeHFCOEFVQVlQcVUyUUNjUEtDOUNxYngwU2JqZkMxaHVCRmg5SnljQ21BaW5qYVo0VFNOeW5OTTBIMXhoSXBxZHRXOXcwZ0hpaXpCZUErZ1c0Y01mUGVzU0ZKZjY2R0xycFB6aDhCQlphMzNndkJhcnUxYWdZRFBta0dhQmdCU1VYNkJ6Q0ZkQ2RDdlVpajZUQ1NoMzNQNmpoMk9na241Sk9jQ3FOcTI3UUFCdCtiYXJtV1k1dWpEMUVETnJybzJTdWNXSGhVQzFrSFNGeUlKL2Nxemt4dWJjK21pbTJScUlXYnBhWmlKYlpWT2FVM0dNMVpDcFhuaUJCWTBCd0MwaFBFVWdNTmYzWFlCZEpXYU1NNk5OT3RiYys1ZEoweGs3ZEFKRXQyK2ZYVGZKNURZWWxkdnVzQnVFd1FtM3l3QWhkbGZrSGh5ZlRBU0FnRHlZU2JTQjFhMUF2U1QxdjZscCtjN2ZKdE9jK2NMTEEwbTJlMFJNdDNmQW9UUDZyMTYyTjU5UXk2ek9CWUEwSG4wMlVOMjV1UVFRY3dMR1NEdEhXTUxBNU5OUlJrUlNlaHpPbHUyNXBVQmJmc3VoOVh3dVJUZFhzTnVCYUMwcFdLd21qeEpQTXR1NWF1cEtMZWpjRjhMeDhRQzRhOERRRFJockt6WlZmZE92ajBDMG5tUjZSUE9MWEdnVmJibzNRM29WZ0NkUVF4cjVVK01rVVpRdGJXVlc3T3JibTluaW5WQlFxRDdDcW1RRXdCaTZWakY1NjJNSmVDNVRLZU5abjRMWU92WnM4ejRvZFd4WGJRbFM1Y0ErRCs3ODNMRVNaS0Y0K29mVCtBajZ4U1BCWUVmekR3bWt6MUE2QUgxVlFDbldqRXF3ZU5HSitMcnJJenRRdmVyWDNSY3JPRTlyVDRoenlpRXN3OE12M3BlWnpzNksyelhFc2JuTXAwWmxQRVhnQUFKSnN2SkVnTDBVNnRqdTlDU3hsOEJGR29FcmNTVW9pRGlGcEpnL2JNbFdtamxKRFpMZ2FEK2FIOFUxblBvenpsYUpXMG1mRkxPaE1PMExBL3AydEd6Zld0em16cC9lQUlBcTBtanpUNHlIN2N5MEpJQVJpWmZhaUhnZm92R0lVRHpuOEtsdHRLN3dzME4veUxnQVR0enZJUUpMekRFcUVMWTBhdkZXRVVRL2N6cWVHSXNDRGMydEZvWmF6a1VYTlMvNDRIMHBrZG1HRGp6RlArYjExaGR1NHNEcWVLZkFtaXlPODlsdGpQNG9taVRjYjZieDdSblEybWdaVEtBejFrY3ZsZDJpS1ZXMTdZc2dPcWRXOTREOFVLcjQwRTh6MjdSNDVnOUd6NEUwNTEyNXJqSXV3RGRPbkJvNjFuUlJQeFBlZkxoQ0RaWGpock1zSEh2Wjc0M3VqZjJnZFhodGphRCtJQnZBYXcvQzVUTFlqSEh6dm9Bb0NYMVIrRTRMY3NSNlIwOUx2cHNKS0hmVTJnbmxYZTBGOTBGNjBtenlWYlpadmxXRGRnVVFIUnY3QU1RV3k1OVlzSzBXTG5XVGQzK2tSQWdTV0lHY2hKcjUxcVdvcnBRZC9UcWc1RVFBOSt6UElGcFhxYkF6K0hZM2c0ZVV2cmVVZ0J2V0J5dVFHQzUzUzRZV3JPeGtZR243UHBtZzdjQnVpcVNpSjhiYlk2OTVLRWR4enlGUzMzRWNqbXMxa29RWGh0WTFtSzc1TjIyQUU3ZnNXTy92ZjE4anNUODZuUzdkdUFUTndHdzlDUnJnNWJPSGIwUmtZUnU2VFVwWDV3YzJEa0xRTWpxZUpaOHM1UGJsNk8ycFF5UUhsRFhBZmdQaTFOYWZGS09ERGMzL011T0hUMmcvb1FCTng0S0djRHZTT0FIV3FQeHRndnJlVXI2TkhIYURNRFNuajhUWG9nMkdlYzdzZVVvSTRnQVppbW13L3ArZnFrcGZLdnN4Z1pTaWpJZm9EZnRlL2d4REpJWUUwa1lFM3ZDeGEvRldFVktXZ1dMRng5QUI4UG4rRHdDeHlsaDBlYllTMkN5RWJqaE1TZjdkODYyWTZObVYxMGJHSlkzUHc2RmdFWW1UTlVTUmxSck5qWTZXU01mbEFaYWZnZ2dhbVBLZmFPYjZ2L3AxRjVXbmF2WGw1MDlxRWc1c0EzQVNSYW5kQkJncXhLMjgzYnpOMWcvd3I0TndQMGRxZUo1WS9ac3NKalJWQmpFeXJYUkVQeDNXQy9aZTkwbjVKbFdvMzVISTZ1azBNN0F6ZlUycGhReDhLU2RBQkVCTEFUUGdJV05EUUJyd1ZUVjFkVFpobDk1WjNQbHFNRVEvQVNzWDN4bUlhN0w1dUlETG1RRlI1TDZXakIrWTJQS3FhbCs0bEU3MlVOcVkzd3ppRmNlY3dCakN3RmpJd2xqZkNTcFczMUZMUmdZb0FOdHlrb0FsZFpuMGNwb1l5enJ4RnAzMHNJVm1nRWJNWHdDTHRFRFlWdGRORnBUYlRQcHlMM3dnaTY4dElyaFYyOEIwVmR0VEhuYnQ5OTBKVkhGdGRNcllnSHRJb0QveDhhYUprdStJTm9jdDVyZ0FBYklDS3JuUUdLVUpHNXNNOXN5cGp3Vk9ucFEvVEl6MXNKNmN3d1dqQytwU2NPVkJCcFhqeStwRDZoTENMRHpUTENYVFJHTjdvNFZaS1dRMThRclFwODFUVkVId21DcmM0aXhVRXNhVnBOQ00rSnFaWkJVbEp0Z0w3OXZDQ255ajdIaDJsQTMvZWdKYkFwVUR6T2xXR3ZuNG9PdzlaT0QzblUxTzhsVkFYU1dVMTBHT3lGY3h1a3c4WWZEZS9yM1p1SVZvWklPS0d0Z01jOHlEZTBUeEpQY3JqOTB2VFl3WFJadDY5VVFBSThwYWR2M3BOMUlZVStrRm1NVlU0clZzQmZzQVJGL1QyMk1iM2ZiSDArS1F5TUovVEU3NmVRQUFLS3ZWZ1oyUGxSb3g2cTVDUU5pZ0w5bEpZQ3YySnkzVkdzeTdMeHFXOGF6NnVBaGcvYk9BTUZXQ0phQmE0eUEra0J2RkFFRHBQdTFwVVQ0dHIyWnRIN1EwRmJYSHZvT3h6TUJuTDVqeDM1SzRlc0FkdG1aeDhBTlJsQmQwSnRFMEJuT1hnTGlxVGFudnNXU3Z1RmxscEtuL1FHMDNVWkNDbmt4YkxaYlljYU0zdkpMd0lDSStkWGxBSzZ6T2ZWRFNKb1FiWTRsdmZDcmk1eDh3SFgrOEFSQjlBeHNkd0xseDFzVEE3ODdEdXNLczR3OEEzR0Vpa3kvV0FuQ3QyeE9UVEg0NGx3a3ArYnNHNllIMU9zWldPSmc2bHFma0pPeTNmVElOYlhEcWdhVytFcWVocE9EcFpnbVI1TDZ3KzU3ZFNRNWF4R2pKWXlsWkNlOStTTytrcEtpdHI0ODRuZmRLWStJbDRXQ0piNlNXamk0K0VTNEkxY1hIOGpEUFRZVzBCNEFlSnFEcVR0TmxoTnFrZzB2dSs2VWk4VEt0WkVRdkFaT2pyVmhXaEJKNmptdFJzNTVreWd0b2Q4STRrY2NUSzMwa1c5amZURGR0S0VRMFFQcVJBaXNoN09MdjF4TDZrN1BJM1pNWHA2eTA2ZDhxbzhRY0xXejZmVEwxa1RKYllYeWNKaCsyUFBkQStLWmNQQ1pNdU9oU05LWW1vKytRM2w3eldKQTZFRjFPUmpYT2x1QjFwUGd5L09kNkZrWGlGWUttRS9BZXVYdVlmQ0RXaUorZmI2YVR1WHR2QUFDcE5aa1RHR3lYblg4Y1hnTVMyelYvZW9rZHoyelRzeXZYUzVnYm9IRGk4L0F2Zm04K0VDQkJGcGlnZkNQTzl1c080S0Ezd29ocDRjYkczSnlEdUNtUVBXd0RoUXRCZmdiRHBkZ01OOGVTY1lkblREbUpnVWhBQUNvRDZwVGlMRVV6bytOYVFiVHJFaFNmOEpOdnc2blBoaStncGp1Zy9OVFRqb0ltS0lsakZVdXV1V1lnaEVBQU5RSHdoY1M2TGZJNHFnNElqeFB4TlBkM2pxdEMwYlBFR3d1Qm5CdUZzdTh6MEpNZENPWjB5MEtTZ0FBc05FZk90TkhZZzFzWmNnZVFRZVlGcHRGdnJ0cWR0WHR6Y2FmMkhCdEtFdStreGpYQVNqS09PSFl2TTRRNHd1bDZVUVhCU2NBQUloWGhNbzZreWF5K2JZQjZhWVA4MzNDWEd3M2xMelZmMWJwZnZTYnpzQXR0dEsyamdielg2Q0l5eVB2NkFYWEZMTWdCUUNreTZOUENleWNCMkEyc3ZjendjVDNLTVFyTWdsaHEvK3MwbmJSZnlxWVp3UElOdndzbVhIM1c4bktPWVY2WkV6QkNxQ0x6blR6VlhEbmFMbmRBQzlKY2ZHeXd4dENiUERYbEN1VXVyNHpUTzFHa21vekMzRkZJZDN2ajBiQkN3QklueUN1RkNtUEVlTThsNVpzQjdCYXNseEdVSWpJdkE2Z1NYRHZQS00vazRtcnRkMkdzM01JYzBpUEVBRFFXUlRpVjZjejRXY0FDcXAvN3lHMEVEQmJUUmpMOGhuY3NVT1BFVUFYRzRkOTRUU2Z6L2NJckRlbnlCVXZDc2JrUXcrUzdnbjBPQUVBQjB2RXJtWEdmQUJEOHV6T0hnWm1SeExHcXA3eXJUK1VIaW1BTGpZRnFvZDFrSEkzR045Qjd2YzFUREE5N1BPWnQrY3FCTzBGUFZvQVhSZ1Y0V29wY1M5QTQzSmhqd2t2a0VrMzVmUE1JTGZvRlFMb29qNFF2cENZNW9Fd3lpTVREU3pFYllYK2FtZUhYaVVBSVAxOEVBdUdMeUhRSFdEWWFsSjVMQWpZeElMbWFvMzZzejN4UHQ4ZHZVNEFYYVNMTWJRTEFiNFp3SDg2WEtXV2lINnVOaGwvN20wWHZvdGVLNEJEcVE5R1FzUnlPb0JKQURKVkliY0I5Q1Q1K0FIdEhXTkxEdHpMSzhlRkFMcUlEZGVHa3NtVE9KMnVQUkpBSVAwWGFpTHdWZ0RQcFJSbGRiWTdpRDJKL3djSXJXV3A5U3dleGdBQUFBQkpSVTVFcmtKZ2dnPT0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiIyY2QyZjcyN2Y2Y2E0NGRhOGY0ODVjMmU1ZGEwMDBhMiIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImxhcmdlQmxvYnMiOmZhbHNlLCJjcmVkTWdtdCI6dHJ1ZX0sIm1heE1zZ1NpemUiOjMwNzIsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6MTAsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MjU1LCJ0cmFuc3BvcnRzIjpbInVzYiJdfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMDYtMTMiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJOaXRyb2tleSAzQSBNaW5pIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNDA2MTMwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblByb2ZpbGVzIjpbImNvbnN1bWVyIl0sImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMDYtMTMiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MX1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNC0xMC0yOSJ9LHsiYWFndWlkIjoiMTBjNzA3MTUtMmE5YS00ZGUxLWIwYWEtM2NmZjZkNDk2ZDM5IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiIxMGM3MDcxNS0yYTlhLTRkZTEtYjBhYS0zY2ZmNmQ0OTZkMzkiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiZVRva2VuIEZ1c2lvbiBORkMgRklQUyJ9LCJkZXNjcmlwdGlvbiI6ImVUb2tlbiBGdXNpb24gTkZDIEZJUFMiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6NSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9LHsibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MTAsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJpc0tleVJlc3RyaWN0ZWQiOnRydWUsImlzRnJlc2hVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZWQiOnRydWUsIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRGRUQ0NBbDJnQXdJQkFnSUpBSUNVVHZrZ3RqNUNNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1GRXhDekFKQmdOVkJBWVRBa1pTTVF3d0NnWURWUVFLREFORVNWTXhDekFKQmdOVkJBc01Ba05UTVNjd0pRWURWUVFEREI1SFpXMWhiSFJ2SUUxMWJIUnBRWEJ3SUVaSlJFOGdVM1ZpWTJFZ1EwRXdIaGNOTWpBd056QTNNVFF6TnpFNFdoY05NekF3TnpBMU1UUXpOekU0V2pCUk1Rc3dDUVlEVlFRR0V3SkdVakVNTUFvR0ExVUVDZ3dEUkVsVE1Rc3dDUVlEVlFRTERBSkRVekVuTUNVR0ExVUVBd3dlUjJWdFlXeDBieUJOZFd4MGFVRndjQ0JHU1VSUElGTjFZbU5oSUVOQk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBdkFLT2VxQzUvcDBEMWlzQ1lLUUpsVlVPckI2STdETG9jdW5FL1JtOGR1R1RieXhRaHQzQ2JGVlR2M04yTHAyZmJqeGxJKzNzT1NHazMzRlRZa1RxeGNkSklySjdTc2tCY1VTTnJmS09hUVQvNktRY1A0Q203Vis2NTVUcStUV3h5eFdRaER5Z3QxNXFvUDdNdUs2YlQ5U3dwQ2pwZktoYU1TbXlRYU1vVWNSQWJMcWR6QkNhYzBoekIrWmUrZ3FKbG5XVjlVYVNJMnJGc1Z1SDRaRTBjUk8rTU9wYUxnTS9zMjQ4bkdHSHAyMmV3U1FmYm5QYUJiYjhpcXlBUCtjdTUyR0xzVXBLUkplYkUrUjYrUE1ROUpDZFdlUVpSM0RrZlNpZGt2M21jYjRqcTFpSXRhK01xS2hSbndyZlhoOTExS1dMbllBbDlFTkNoTFgwYzZTajFRSURBUUFCbzFBd1RqQWRCZ05WSFE0RUZnUVVXTHZoUkJVUG44dUxJZjY4K2d2L05aSXdHU0l3SHdZRFZSMGpCQmd3Rm9BVVdMdmhSQlVQbjh1TElmNjgrZ3YvTlpJd0dTSXdEQVlEVlIwVEJBVXdBd0VCL3pBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQUZMckRoYWVnZUtIeFlqSDNFUDN2VUJLaG56TTIwNkFTeGdlWUNPMkVjOXBPbFlKYWVxRkUrc1VhbVVWL3B3akRscU5hU2dGZ3k3VHdlWWt2T21NbjRxU2NzSHF2SjN6R09BaWFmd2FoMXZVSGZDbFhSOCtheE8yaUdPVUYwSktyWjlZWWpiQWE1LzRIQ2x2N2pGUE9kTVdUT1F5bmdvaUhBczNqa3VZanBDTEZsQjRWT2kzZDF3akExcG5UZEJLa0FiN3Q4blR2dysvWGJGdmNRYTczVkg3c2p2b0JxRDNmZE1mUmN1VnE0cVVadFpUNmNHYWdUSEQ2MVR0cWg5b01DWlhjRGJSMVBHWm5OYnF5Y3NXUERJSzBucG1LMy8zbGZWOGMrWnNyeTZlMTcwbWZKTVpwN084bTZDU3o2L1ZMSyt5REpkNzg0MXdwbWVLVGY2SW5aQT09IiwiTUlJQzZUQ0NBZEdnQXdJQkFnSUpBSmJUeXJ1MVgvSVBNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1DTXhJVEFmQmdOVkJBTU1HRWRsYldGc2RHOGdUWFZzZEdsQmNIQWdSa2xFVHlCRFFUQWVGdzB4T0RBMk1USXhORFExTlRCYUZ3MHlPREEyTURreE5EUTFOVEJhTUNNeElUQWZCZ05WQkFNTUdFZGxiV0ZzZEc4Z1RYVnNkR2xCY0hBZ1JrbEVUeUJEUVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTVZqS0hXcGJEN1RTbE14b2NqVGw2bklmN3gzMlBtc1E5ekd1TEdHcUEwVVFab0lxM1hMekw2TFlVdko1QTVnMHV5RkdsbEhFZkdBS3JFYUNROEZWdlBTL1VoMEZ5ZnpXaFJBemlUU2lqak1JSVZqampVdjltOXZGbWNYU2NnSGlnN09kejg4NThWMGtyTkg5OXFHbTN3amdhT2VyVFdtdCtqWENVZm4wMUlrVFB3eEcySGxnRWQ0NWpOTFNWN1Zvb2wrS2U4RTJraTRsRWtUZUh6Ym91bFI1R1VicDNuTWk3RTQ3Vk1RYTNiTndueldCYnNhQlNTUWhMazNtNUhhS2hoeGE2d0pESzQ3TmlNQ2tDa2RJSHVXU1FMVkFmbTg1VUFPTnRFT1B3aTBPdUszcWJlOHlLT0ZHZjBLaEI1TU1lQXltN01WL000VzBhNDlvZ1BEOXBNQ0F3RUFBYU1nTUI0d0RBWURWUjBUQkFVd0F3RUIvekFPQmdOVkhROEJBZjhFQkFNQ0FvUXdEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBSld6NXhMTWs1V05ZYkFiNnlPeEVDQm9aMldlQi9xbDRWSjNPLzMvdE5zeE9ZbnpMZVdvNTQwelFoOXJBbWF4ejdldW1CbHNrTXE0eUdQU05YQjl5Y1dHSGdrY0NlU3pOMnd2OENJekRCczJvQlpqVE5rNjVMQlpEc3NUT0J0TVcvK3VURkhRZmJ1TzNJU0xoSTBEWGZSRWk5TkRNM2pmazExeEhjc2ZoMlJNVitRZE5md1ZhWlpyQ3Erb3VHK0V2a3Y3S3FxK295dTBWRk0vdHo2OFRHbDZ5bGhQRlIxcWg5d3R0cFZqQU9PQ0VRQ0xxUDJkUDI4bHdZQnlDcUhRcVZId2J1anYvTFpqWm5LVzNMWW5kWml4UFBTUkNKc3NERHdKdmgvZjZuVHhnOVpFKy9KY1lyZTVDYUk4bnpWSGFTT0NqTko3RnpVTEc2NEppV092UTUwPSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFRd0FBQUFnQ0FZQUFBRG5sVVpxQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUVuUUFBQkowQWQ1bUgzZ0FBQUFaZEVWWWRGTnZablIzWVhKbEFIQmhhVzUwTG01bGRDQTBMakF1TWpIeElHbVZBQUFLMUVsRVFWUjRYdTFkRFhBY1pSbStOT0FmS29nNldPMFFjcmVYM083MVI0MW9IZFNxcURBT2czK2NZRVhCb2xYUlRFbjIyMHRhS1RjNjRtZ0JxekJpRVVWcEJkcWl3d2hxU2RJUzJ1cFlTZ3ZSdHBUU2NrbGpXekhhZ2pwU1JkcjR2THR2anJ2azI3dmR2ZDFMam43UHpETjN0L2QrNy90K2Y4Lys3OGFLME5EYWFyMnFPZFhab3FXeUg5UjBhMEZjdDY3V2RIR1Rab2pWQ2NQcVNlalcxb1F1SHNPeS9lQlRzRG1NLzU0WlQ5aitMV0dJZzdEZkIvc0JjRFBzZjRYZlA4WDNiMnVHMVpIUXpVOG1VdUtkeVdUSG01cWFjaS9qSEFLQnlpZjBiQnIrTHdhWElQWVBrTWRxZkw4WGRXcGxzMUFBMzEvUWpPdzk4TDhTOWI4QlhJUjIrbkRjNkRvemxzazBzbG5rUU14a1BHWE85RUp0Vm5ZR0Y0c1V5Vm5kOFVUYWVwOGJ3KzZMYWtCajVpemRiTkpTMXJ4RVdueVd4ZzM2RW1QZFdvUFBEZWpmN2VBVEdNc0hhRHpUdUM2aGJqME4vcFhtQXNydWdzMFdMUDhOdUJKalpKbVdFbGNsMDltUEoxSm1XMHRMNSt1aUhCdUdrWHNsalg4N25pNEV6Vm5rOUF2a3NRbjU3RVNkaHJCOEJNdVBqT1dQLy80T0hzUi9lN0Q4WWRUbGZ0UmhGZmdkTEc5SHUxd0FmenI1NWpBT2tpUUtodlZiR0I2QzAvL2krMmlOZVJ4OEZnbnZSZnhmYWluelNrN05FMGlJVVBiZjQzd1dtTlROZDdCcEtFQTdMWmZGQVk5enAzeVpUU01EaVFWaS9VK1NnNVFZQUlmT21HMmV3c1VqQS9yaFc3TDRCZXJtajloMFVvQjJPQitUWlRXNEIvazhPeUcveUNpT29XMUlZSDZIOFhQejlMYmNLemlsUUdocE1admhaeUhHd0czZzQyQms4NVo4bzkwRzhYME5pU3MxSXYyUUdrOEtkV3N6dDRzbklQOFJxUjltRFFYRElkWlNiQm9aMElsM1MyT1haWFlwRjQ4TVUxNHduSzFiZVc0MXBMM0ZFUUNKbFBWV3RERzJmdXlWck5SM3RCVGRTakI4WXJJRm95VnRubzJPQ3pCZ3hETkJCNnBYS01Id3hpRDlnSzNLYzZQY2t2QkdKUmkrTWNtQzBZRDRmZEs0WG9oOVcvWVRDWlJnZUtOdndjaGtHdEcyZTJXK2Frc2xHTDR4bVlKQmF4bHBUSStrTlJRZG1HUjNvVU1KaGpmNkZRdzZjQ3J6VTN0Q01MRFd1UXNkM1IrQXczS25CUTVLeW5qaGpkeE9ubkRpQ0VadUdqcnNZV2xNSnRwaVdVSzNCbVQvRmZFdWRoZzZVUGU2Rmd6MGJSNmZhNk1tblkza2xEd2hhWWpMVVU2ZXMyN3QwZ3p6bTdWZ1V1OTZENmZrSHhDYTYyVVZHQ01xOGcwMmpSUW5pbUJvUnZZaWFUd20ybnRmVzl2Q2s3VzBkWUhzL3dKMTYzazZlTVp1UTBXOUN3Ykc5SzFzT3FXQXZJVTBYNXRpRFp0TmJTakJjR0VFZ3RIV2Rzdko4RTJuQXVVeGlicDVoV005Mm9EZjJ5YjhYMEt4M3JFTkYwb3dvZ0htMGhKcHZqYVZZUGpDaVNBWWliVDFlV2tzSmliQ2svUG01VTVpYzhyeFFwbGRNUlBwN0hsc0hocVVZRVFESlJnaDRzVXVHSFNSRCtwSVYrVEo0eEgxTEc5ZGpDSFRpTWxSNFZpRzJFN0hSYmhBS0ZDQ0VRMlVZSVNJRjd0Z29KMnowamhNdEhPZWpsMndlUUZZL2xHWmZTbkZmRFlQQlVvd29rSENNQmRMODdXcEJNTVhLZ3FHSVM1dlRwdG5oMFhVKzA1Wm5BSkRGQXpENkRnZC9wNld4bUhHRGZGRk5oK0gwUWIwd2FPeU1tT0UrT1VOSS9jU0xsQTE2bDB3MEY2NzQ3cTRwUnBHY2RxYTdrdVI1VXRFSDQ1Z0Rtd0tpL0RaajgvN0lFUzM0ck96ZWFhWXpXbFVoM29SakpvelJNR29PQUVOYTBpMmRUR0dlRXA4VEZKbVBEdll2R3JVdTJDRVFicWhrc09GQnN5bGkyV3hhc1RqNk5kMTJwc1h2NTdUQ1FZbEdDNE1TVEJhVzYwM29vMWRiNnF6cVZ0ZlluTTU2QXBCdzlveG9Wd1JNWWxHTkszOTFWeWlLaWpCaUVZd21sUGRMYkpZdFNUYTdxSGlBK3Urb1FURGhTRUpCdHB2aGRUL0dIV3h2OXpXeFJpMHRQaUV0SHdKeGJWc1hoV1VZRVFqR0hSd0d1T2gwZ1Y1a1RPZU1pL2hoUHhEQ1lZTFF4Q01zMXF0Vmd6dThyZXZweXlQandId3NwVmgvU3VWV2pLZEN3U0dFb3lvQkFPNXA4MzNvcCtlazhXc0ZkRit3YThTVm9MaHdoQUVBMzdXVFBCYlJIVGNBZXhHdkpUTkhmUU1OY2Y2QnMrUDllYm54ZnFlUEpXWDJrQ1p6SGdmRXhqQ0dRSWxHTkVKQnNGK0VKRXVkc3ZpMW9iaVQ1eUtmOVNOWU9qV1pqVHlmYUhSdWQ5QUhvdFlwV0E0TnhxSlkxTGZUTlQ1SzJ3ZWk2MGZNaUFVRDRLakJmYm1qOGI2OHN0ajJ3N2FEMnFoZlUvMHh5NlpyekhTMnF1bHBUTmwrd3lJdWhjTWpCVTY2MVFObTJjdVBvUERSWVRSQmpwYlIyTUFPVjlIWnpPUTk4L3cvZll3aVBIdGZqZTBidjJGay9DUGVoR01PcnNPby9MdDY3bzFYRGdWdWlFL0J3THhqeEt4S09YRzJNNmR0aTM2dzhPUmRuR1A3VGNna0Z1ZEM4YlV2QTZqbGtpa084K1R0ZzJJTVhTWXpmeERDWVlMcXhBTUw3ZXZvNzd0dG5GLy8wbllrdGdoRVlseEhMcWF6SjJ0akVxYnM5aXlTV1huMnY0RFFBbEcvYU9zWUJqV0FUYnpEeVVZTGd3c0dMbHBLTHRWNnBOSkhWWjRZSExmL25mSkJXSUNoMkhkUUVYaTZld2xNcjhsZEo1SFl0djdoUktNK2tjNXdVRDc3R1V6LzFDQzRjS0FndUhwOUdkS1hNWG1FSXg4dTBRY1hQallhKzB5bVV3ajJ1dHhxZThpb280WDJ2WStvUVNqL2xGaGwrU1BiT1lmU2pCY0dFQXc2SG9LN0E2VW5jaW81OEdtcHN0ZWVCMUQ3OUJYNWVJZzRmM0RwM09wR09MTWwva2Z4eDJ4ekZyZmo4VlhnbEgvcUxCTHNvWE4vRU1KaGdzRENFWWlWZjcyZFdicEpkdzkrODZSaXNONDlnN3VoM1ZoRjRQRjZRbUovMUxxMWdJdTRobVZCQU1UOXU3eDcwd0pnL1RZZlU2aExKUmdWRWFGWFpJSDJNdy9sR0M0MEtkZ3pKNXRuZ0tmQjZTK21Qai8wSXdaSFMvbklnNUdSeHNoQmdOU2tTamxZaTVSQVBydVVsbWNZbUp5L1huRzNIRXhLNkRpRmtaRXhCall5Q21VUlNYQlFEdVBvQTVibzJiU3lMNmRVL0lFM2lxVW5nWU5tMmdEMTdOMCtHOFZwK1FmU2pCYzZGTXc0cnBsU2YwVUVURk5OaTlGei9ETVdHLytpRVFrSFBibU44UzJiWnQ0K2JoemowbjVKM2lCZEZzMWwvQUUxTDJ1QmFOV1RPcmlBNXlTSnlEdjc4cjgxSnllcnk2V1FBbUdDMzBJUnRPYzNHbG9wOE5TUDJQVXhWTmwxL1RyOHEyeHZ2eDY4UGtpc2ZnbmZsOGY2eDkwZlFVbDRuNUdHcStZdWpoeTVxenUxM0NSaWxDQzRZMTFLUmowV2tndEYvd21SU1VZTHZRaEdGNG1HQWFMWVBQeTJEZzBQZFl6OUg3c3BzeU45UXhVZkMwaVhmeUZQdG9uaTFsTUdxeGNwQ0tVWUhoajNRa0d4Q0twVysvbWRJSkJDWVlMUFFvR3ZZUWE5dVhmNzFscDY2SktsSHQ4L1FzVVIrMFhUWHVBRWd4dnJBL0JvTGZyMlFmSHIvR3psZW1LS1NNWXVua0hUU3pFbEw0K3NGYUNnZm8rQis3V2pPem4yTFFzbk5jR2lEMVVUdWJQb2RuRjVwR0F6cGdndnV0V0J1cjZIN3RPdXJpVWk1UUZYU1dLTXQvSEJONUVheVhVcit3OU1jRXBqdkdLNHZmSWJ3VmR3OElwbEFXTkJaUzVEdldoTjVYbjRlZG9xZDhvaUZ5eDJ3aytpdS8wSXVpbDlLd1RUc2tUNG1seER0cnpSbTVYalBVbzJwWGU2RzQ5Z2p4dncrZkNoTkdoY2Zod1FDOWphVExFRzl4b0dGZVd2aVkrVXVTbTJRK2NvWGR5Nk5ZaU5Pd3lWUHJIR0JoM0pvenVVQ3NlVDVtWFFmRi9qaGcveE9mWE5kMjhnam8wYUgzcExBbE5OR2R0TDVZaTU1dlFnYmVqNCs2Zy85Z3NNcUFPSDNIYVNmd0ViWGNEdm1lVGh2VXBUZTk2eTRRek03NlFtOVkwWjlGcGRQY202dk5wc0F0OXN0eHBPK3ZYNEViRTIwb1RDY3NHU29ubCtCL2Y2V2EvVmNWNTBhU1B4N3RPRGVFQnhnMTB4eStka29YZ2ZBZ3hGaURlMTlBTzMwTS9yRVFPOXlMbUE0aS9CYiszbCtibmtQSUhONFByVUwrMStGd0IyMnZob3gxaWYxRzgxWHBidkEyNVpqSytyMmx4UjI0YTFkOFJQekVmdXdvV2NzRVdpSk16WWorSTN3K1Z0S3NoSGdIL0FQWlNucWpUemZpOHhoNjd1blV1UGRyQTI4TnhZckgvQXozdEk0ajUrVE9MQUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzEiLCJGSURPXzJfMV9QUkUiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwibWluUGluTGVuZ3RoIl0sImFhZ3VpZCI6IjEwYzcwNzE1MmE5YTRkZTFiMGFhM2NmZjZkNDk2ZDM5Iiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6dHJ1ZSwidXAiOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJub01jR2FQZXJtaXNzaW9uc1dpdGhDbGllbnRQaW4iOmZhbHNlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6dHJ1ZSwiYWx3YXlzVXYiOmZhbHNlfSwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjo5NiwidHJhbnNwb3J0cyI6WyJuZmMiLCJ1c2IiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fV0sImZvcmNlUElOQ2hhbmdlIjpmYWxzZSwibWluUElOTGVuZ3RoIjo0LCJmaXJtd2FyZVZlcnNpb24iOjUsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjo0LCJyZW1haW5pbmdEaXNjb3ZlcmFibGVDcmVkZW50aWFscyI6MTAwfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMTAtMjMiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6NSwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJlVG9rZW4gRnVzaW9uIE5GQyBGSVBTIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNDEwMjMwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMC0yMyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjo1fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI0LTExLTI3In0seyJhYWlkIjoiMDA2NiMwMDAyIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWlkIjoiMDA2NiMwMDAyIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkNBUFkgVUFGIn0sImRlc2NyaXB0aW9uIjoiQ0FQWSBVQUYiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJ1YWYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X2RlciJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfc3Vycm9nYXRlIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInRlZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJ0ZWUiXSwiYXR0YWNobWVudEhpbnQiOlsiaW50ZXJuYWwiXSwidGNEaXNwbGF5IjpbImFueSJdLCJ0Y0Rpc3BsYXlDb250ZW50VHlwZSI6InRleHQvcGxhaW4iLCJ0Y0Rpc3BsYXlQTkdDaGFyYWN0ZXJpc3RpY3MiOlt7IndpZHRoIjozMiwiaGVpZ2h0IjozMiwiYml0RGVwdGgiOjEsImNvbG9yVHlwZSI6MywiY29tcHJlc3Npb24iOjAsImZpbHRlciI6MCwiaW50ZXJsYWNlIjowLCJwbHRlIjpbeyJyIjoyNTUsImciOjI1NSwiYiI6MjU1fV19XSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZ0NBSUFBQUQ4R08yakFBQUtuMmxEUTFCcFkyTUFBRWpIbFpZSFVKUFpGc2Z2OTZVM1drTG9FSG9UcEJOQWVnMWRPdGdJU1lCUVFrZ0lLalpVRmxkZ0xhaUlnTEtnaXhRRjF3TElXaEFMdGtYQUF0WU5zaWlvNjJMQmhzcCt3Q1B1dnBrM2IvWmt6bmQvYytiY2M4Kzl1WGZtRHdCNWtDMFVac0FLQUdRS2NrUVIvbDZNdVBnRUJ1NHhnQUFCK1JrQUZUWkhMUFFNRHc4R2lNMk4vN1IzZDVCc3hHNWFUTmNDLzg0VXVUd3hCd0FvSE9Fa3JwaVRpZkJ4eERzNVFsRU9BQ2pFZ2Y3eUhPRTBseU5NRXlFTklueG9tbE5tdVhPYWsyYjUxa3hPVklRM3dxTUE0TWxzdGlnRkFOSmJKTTdJNWFRZ2RjZzBoSzBFWEw0QVlSK0UzVGlwYkM3Q0JRalB5OHpNbXVZakNKc2svYTFPeWo5cUpzbHFzdGtwTXA3ZHk0emhmZmhpWVFaNzViODhqdjl2bVJtU3VUWDBFU2VuaWdJaXBzZnBjMHZQQ3BLeElDazBiSTc1M0puOEdVNlZCRVRQTVVmc25UREhYTFpQa0d4dVJtandIQ2Z6L1ZpeU9qbXNxRGtXWlVYSTZ2UEV2cEZ6ekJaOVcwdVNIdTBwVzVmSGt0WE1TNDJLbmVOY2Zrem9ISXZUSTRPKzVYakw0aUpKaEt6blpKR2ZiSStaNHIvdGk4K1M1ZWVrUmdYSTlzaisxaHRQSENmcmdjdno4WlhGQmRHeUhHR09sNnkrTUNOY2xzL0w4SmZGeGJtUnNyazV5R1g3TmpkY2RqNXA3TUR3T1FhUndBYllBV3RnQldKemVDdW03elR3emhLdUZQRlRVbk1ZbnNpcjRURllBbzdsUElhTmxUVVRnT2szT1BzWHZ4bWNlVnNRSGY4dGxvMnM3ZlFiY2hjUGY0c2xDZ0ZvM1FVQXZmcGJ6RkFYQVBrU0FOcWxISWtvZHphR252NWdBQkhJQXhwUUE5cklIVElCRmtoM0RzQUZlQUJmRUFqQ1FCU0lCMHNCQjZTQ1RDQUN5OEZxc0I0VWdtS3dEZXdDRmFBYTdBZjE0REE0Q3RyQUtYQU9YQUxYUUMrNERlNERLUmdCejhFNGVBY21JUWpDUVJTSUNxbEJPcEFoWkE3WlFFeklEZktGZ3FFSUtCNUtoRklnQVNTQlZrTWJvV0tvRktxQWFxQUc2R2ZvSkhRT3VnTDFRWGVoSVdnTWVnMTlnbEV3R2FiQldyQVJQQjltd3A1d0VCd0ZMNEZUNEd3NER5NkF0OERsY0MxOENHNkZ6OEhYNE51d0ZINE9UNkFBaW9TaW8zUlJGaWdteWhzVmhrcEFKYU5FcUxXb0lsUVpxaGJWak9wQWRhTnVvcVNvRjZpUGFDeWFpbWFnTGRBdTZBQjBOSnFEemthdlJaZWdLOUQxNkZiMEJmUk45QkI2SFAwVlE4Rm9Zc3d4emhnV0pnNlRnbG1PS2NTVVllb3dKekFYTWJjeEk1aDNXQ3lXampYR09tSURzUEhZTk93cWJBbDJMN1lGMjRudHd3NWpKM0E0bkJyT0hPZUtDOE94Y1RtNFF0d2UzQ0hjV1Z3L2JnVDNBVS9DNitCdDhINzRCTHdBdndGZmhtL0VuOEgzNDUvaUp3a0tCRU9DTXlHTXdDV3NKR3dsSENCMEVHNFFSZ2lUUkVXaU1kR1ZHRVZNSTY0bmxoT2JpUmVKRDRodlNDU1NIc21KdEpERUorV1R5a2xIU0pkSlE2U1BaQ1d5R2RtYnZKZ3NJVzhoSHlSM2t1K1MzMUFvRkNPS0J5V0Jra1BaUW1tZ25LYzhvbnlRbzhwWnlySGt1SExyNUNybFd1WDY1VjdLRStRTjVUM2xsOHJueVpmSkg1Ty9JZjlDZ2FCZ3BPQ3R3RlpZcTFDcGNGSmhRR0ZDa2Fwb3JSaW1tS2xZb3Rpb2VFVnhWQW1uWktUa3E4UlZLbERhcjNSZWFaaUtvdXBUdmFrYzZrYnFBZXBGNmdnTlN6T21zV2hwdEdMYVlWb1BiVnhaU2RsT09VWjVoWEtsOG1sbEtSMUZONkt6NkJuMHJmU2o5RHYwVHlwYUtwNHFQSlhOS3MwcS9TcnZWVFZVUFZSNXFrV3FMYXEzVlQrcE1kUjgxZExWdHF1MXFUMVVSNnVicVM5VVg2NitULzJpK2dzTm1vYUxCa2VqU09Pb3hqMU5XTk5NTTBKemxlWit6ZXVhRTFyYVd2NWFRcTA5V3VlMVhtalR0VDIwMDdSM2FwL1JIdE9oNnJqcDhIVjI2cHpWZWNaUVpuZ3lNaGpsakF1TWNWMU4zUUJkaVc2TmJvL3VwSjZ4WHJUZUJyMFd2WWY2UkgybWZyTCtUdjB1L1hFREhZTVFnOVVHVFFiM0RBbUdUTU5VdzkyRzNZYnZqWXlOWW8wMkdiVVpqUnFyR3JPTTg0eWJqQitZVUV6Y1RiSk5hazF1bVdKTm1hYnBwbnROZTgxZ00zdXpWTE5Lc3h2bXNMbURPZDk4cjNuZlBNdzhwM21DZWJYekJpeklGcDRXdVJaTkZrT1dkTXRneXcyV2JaWXY1eHZNVDVpL2ZYNzMvSzlXOWxZWlZnZXM3bHNyV1FkYWI3RHVzSDV0WTJiRHNhbTB1V1ZMc2ZXelhXZmJidnZLenR5T1o3ZlBidENlYWg5aXY4bSt5LzZMZzZPRHlLSFpZY3pSd0RIUnNjcHhnRWxqaGpOTG1KZWRNRTVlVHV1Y1RqbDlkSFp3em5FKzZ2eW5pNFZMdWt1ankrZ0M0d1c4QlFjV0RMdnF1YkpkYTF5bGJneTNSTGNmM2FUdXV1NXM5MXIzeHg3NkhseVBPbytubnFhZWFaNkhQRjk2V1htSnZFNTR2ZmQyOWw3ajNlbUQ4dkgzS2ZMcDhWWHlqZmF0OEgza3ArZVg0dGZrTis1djc3L0t2ek1BRXhBVXNEMWdnS1hGNHJBYVdPT0Jqb0ZyQWk4RWtZTWlneXFDSGdlYkJZdUNPMExna01DUUhTRVBRZzFEQmFGdFlTQ01GYllqN0dHNGNYaDIrQzhMc1F2REYxWXVmQkpoSGJFNm9qdVNHcmtzc2pIeVhaUlgxTmFvKzlFbTBaTG9yaGo1bU1VeERUSHZZMzFpUzJPbGNmUGoxc1JkaTFlUDU4ZTNKK0FTWWhMcUVpWVcrUzdhdFdoa3NmM2l3c1YzbGhndldiSGt5bEwxcFJsTFR5K1RYOFplZGl3Umt4aWIySmo0bVIzR3JtVlBKTEdTcXBMR09kNmMzWnpuWEEvdVR1NFl6NVZYeW51YTdKcGNtanlhNHBxeUkyVXMxVDIxTFBVRjM1dGZ3WCtWRnBCV25mWStQU3o5WVBwVVJteEdTeVkrTXpIenBFQkprQzY0a0tXZHRTS3JUMmd1TEJSS3M1MnpkMldQaTRKRWRXSkl2RVRjbmtORHhNNTFpWW5rTzhsUXJsdHVaZTZINVRITGo2MVFYQ0ZZY1gybDJjck5LNS9tK2VYOXRBcTlpck9xYTdYdTZ2V3JoOVo0cnFsWkM2MU5XdHUxVG45ZHdicVJmUC84K3ZYRTllbnJmOTFndGFGMHc5dU5zUnM3Q3JRSzhndUd2L1AvcnFsUXJsQlVPTERKWlZQMTkranYrZC8zYkxiZHZHZnoxeUp1MGRWaXErS3k0czhsbkpLclAxai9VUDdEMUpia0xUMWJIYmJ1MjRiZEp0aDJaN3Y3OXZwU3hkSzgwdUVkSVR0YWR6SjJGdTE4dTJ2WnJpdGxkbVhWdTRtN0pidWw1Y0hsN1hzTTltemI4N2tpdGVKMnBWZGxTNVZtMWVhcTkzdTVlL3YzZWV4cnJ0YXFMcTcrOUNQL3g4RWEvNXJXV3FQYXN2M1kvYm43bnh5SU9kRDlFL09uaGpyMXV1SzZMd2NGQjZYMUVmVVhHaHdiR2hvMUc3YzJ3VTJTcHJGRGl3LzFIdlk1M041czBWelRRbThwUGdLT1NJNDgrem54NXp0SGc0NTJIV01lYXo1dWVMenFCUFZFVVN2VXVySjF2QzIxVGRvZTM5NTNNdkJrVjRkTHg0bGZMSDg1ZUVyM1ZPVnA1ZE5ienhEUEZKeVpPcHQzZHFKVDJQbmlYTXE1NGE1bFhmZlB4NTIvZFdIaGhaNkxRUmN2WC9LN2RMN2JzL3ZzWmRmTHA2NDRYemw1bFhtMTdackR0ZGJyOXRkUC9Hci82NGtlaDU3V0c0NDMybnVkZWp2NkZ2U2Q2WGZ2UDNmVDUrYWxXNnhiMTI2SDN1NjdFMzFuY0dEeGdIU1FPemg2TitQdXEzdTU5eWJ2NXovQVBDaDZxUEN3N0pIbW85cmZUSDlya1RwSVR3LzVERjEvSFBuNC9qQm4rUG52NHQ4L2p4UThvVHdwZTZyenRHSFVadlRVbU45WTc3TkZ6MGFlQzU5UHZpajhRL0dQcXBjbUw0Ly82ZkhuOWZHNDhaRlhvbGRUcjB2ZXFMMDUrTmJ1YmRkRStNU2pkNW52SnQ4WGZWRDdVUCtSK2JIN1UreW5wNVBMUCtNK2wzOHgvZEx4TmVqcmc2bk1xU2toVzhTZWtRSW94T0hrWkFCZUh3U0FFZzhBdFJjQTRxSlpqVHhqMEt5dW55SHd2M2hXUjgrWUF3RDdFUzBlbFE5QU1ESldJbTZFc0x3SEFPR0lSM2tBMk5aVzV2OHhjYkt0eld3dFVoc2lUY3FtcHQ0ZzJoQm5Dc0NYZ2FtcHliYXBxUzkxU0xQM0FPaDhONnZOcDAzNVBBQ3FNMTJjUGFDUi85OGErUytZendkMWpHaURkUUFBQUNCalNGSk5BQUI2SmdBQWdJUUFBUG9BQUFDQTZBQUFkVEFBQU9wZ0FBQTZtQUFBRjNDY3VsRThBQUFBQm1KTFIwUUEvd0QvQVArZ3ZhZVRBQUFBQ1hCSVdYTUFBQXNTQUFBTEVnSFMzWDc4QUFBQUIzUkpUVVVINGdjTkJDME0rWWVxL0FBQUFIZDBSVmgwVW1GM0lIQnliMlpwYkdVZ2RIbHdaU0E0WW1sdEFBbzRZbWx0Q2lBZ0lDQWdJRFF3Q2pNNE5ESTBPVFJrTURRd05EQXdNREF3TURBd01EQXdNRE00TkRJME9UUmtNRFF5TlRBd01EQXdNREF3TURBeE1HUTBNV1E0WTJRNU9HWXdNR0l5TURSbE9UZ3dNRGs1T0FwbFkyWTROREkzWlFxbVU4T09BQUFNUm5wVVdIUlNZWGNnY0hKdlptbHNaU0IwZVhCbElHbGpZd0FBV01PdG1XdVc1S2dSaGY5ckZWNENCQkFReStFVjUzai9HL0NIbE5WVjNabGplM3lzR2xvcENVRVFqM3N2bXV1ZmMxNy80RWpTMmhYT01WZlRXRU1OT29QRSs1WXUzVFZYS1pKckZnbWxGU3RkUXFpYmY4THBaRStUekdXOU5HcXFxWVljU3lnaHovQTYvcnorZDRjejYvVWEvVDVXa3ZYTHNyOTVYSCt2ZTR5YXRkU2s2Ymtzci9zcWwrWnpXOWZ6WU9UblBBTUxEbFhxYzUxZTV5Q3BWandYdnU1YmUwMlFMOXg1dS9GNTBPZlhBNjAvNzMrdGxQdS85Vi81NTBDWnlEeW1wdjNNME1Ja0NMR0sxdnQ2K0pkRm9TcjIxNWRGTTc3dXAzRHBadFdtKzNtUXZ4NXN1cE1TK25xaGZRMDBDZEJTLzdvL1hwWkt1L1N2TEtwL2JhbCtzUFM2SDlUM0I3OUY1L3RvR2Z0UDNpbERWdnVmdy85L3k2UC9ZaUJjT0d2NWN5bnlkVDIxVmNtdHlOZjEvUzk1cDBNOWp5TFgyNE90a25mMnQvdjJpdFNmOXh0UmFhVzhEMFFKNS9SS3VKLzNzOGFjOC9ndzhXVGkrVDZRcXZHV3ZWdFVjN2FTLzd4UDBqcHA0dThERWZSY1NucTdUNTUvV2hwK0hhWGsrRDVRMDVMdEZ3NTl2OUMxa2FMMTdUNHJLSnIzMjBBazRTanAzUmRub0p6eWZsOWFMVVUrT1ZzSnMzNEk4Nm8vVStQbkNvd1ZmTEFvbnlYazloNU5vdmJKZC9pMHRFOVI0eEZoTHU4djZDNGZCam9nbCtWRFFwNXkvQUg2UHdlYWhPaHR5UlN3NHRQeVlXa1AxSDJhR1Y1NXl5UHRMTG1YOERaUUNNZjh4RUNKM3lrZTlPTWVtSWczV3YxVkpqbXBNN2lSa0FZTXRRdjJnOE1lQ2pyQnlxQ2xKdGt5aGVFU1E2WGI4YjhJOHNmaGFaMW5ONTNkdkJZMXRFOGRhM3ljbm13OVJaejYrdFJQTWVOZTJpQTU3NVdwK2FlT0JPVWhVVyszQzBiYmg2NEt5YWhmZlI0ZmZRUEVHZkJVdmgrS29WRzhjVCs0SkN4RDFzdC9ESkRHOCtLeE9uY0dPdGh6b2xGNHFmRFNBVGR0QitwWTNGRU4xRmZGa29aVmpRSGFlT2tIQmpBbU5kN3ZpWUU2TDNWZUdydzBlR25NUTFnSEZCKytPU1M4ZUdueCs1VGE1dmNldDlISUI5ckEzVlIveEZPUjNqRW1tdEU4UkNrME9yQ01FN1dZZGppT2p5UnFKTFFSNjRrUWpYZmh4RmhKeUlqWnNURUlKa2VqRStiR3poeWR6b1B6NEl5RmNYSmVuQmZuelhsemR2cDdoNzFZbW9RanJqSnRCUkdsT2I1dDZLZElHNFNNWjRWbnpDNlZlNVVYWVY0aGRJS0lFRUlzbmFLVndjdk1LUGhEOElXY0lPRUQ4WEluZFFxRHJGU0NGV2tySkNZQjFXa2VEclluNVZtbGFGUGRJVFZ1R0RjWVBYV3VCOWV6b2paNFlSL0tuaUc1RVcybERGS2dHbWlMT2huaFFFNCt3QWJTaEl6Sm1RRXpDWmZ4VVNhU0dVdnp6Q0V6V01ZbkowdXliekp0aFlLQUtnU2pwRTdtV0NnRk1WcFlPelZKTVNtcFJPdTBRYUdESm9XbEZzSmRDUFA5eHhKVjZxM0NGRXVVNktuMm9IVmM1Qjd5ekZiUTdyZDBWQ0tqT3dWWUpweGFycVJFWmZhYUZramlDQ1FTQmhTb1RGeU5aNGl6T3FDanVsQlB6RnE5SVZzR0NleWhrVDh0bjFMdUpQTU9yWEdOdGExelBiam1uYlpyYUNTamtic20rTWhZcHpIVG9XUkRxRmpqZCtjM0RyZkpieVl4WHVneGhzNnlPcFoxVXFLenBFN1pkRktnZDhDLzQ0dStadWgrQXMwZjZud2tDNlBFQXd1VU9sVkQ1ekZPOVhERzhZTUl6a2dHU2tmbHBUQUxlWVFHUWRydE1Ic044NVFabVRzWmRKMC9FdlRvemNVU0YzNVo5RnRrL0pvOFgvekdIWnQwMklKRm0vQ2hJOE91SHJZTjZsSER4Z2Q3YityU2dsTjNUcFk3eU9Ca3RlTXJIeWs0eS9aOXFoc3ZpVjRrQ01Dc09LQmlzMUZjZ3dlcm5qY2poWHovRjdNRG95dkdObVBzZUd0YWpMdXh1Qm9wcXlpd1NCVE5rZHFKMGxPVVNkdkE5SUZxb1RFSk9oSUFvSFZ5ZWhhQW9GQ1pVQWVGaHo1QmVmZVkyN2pna2dVNmJDWUZIYUpFU0NxV29oSE9BQzFHTEdORlZuV3E3Y2haRkxORjFSbTFlZFFoR01vOTcxZXNZRVBOTWNKenNUYUx0ZTlJYnNYcU5UWndoRUtQS0pUWVdvK3RlMnlMMzk0ZnhNa2xtbzVvRnE5b2c5eGRLMUpoc1V1UEhkZjBXb0dqSFVtTjJISG9pRG1PTk9KZ21ZTUJCNWFNMWVNQklGSWdUaWc3empyaXhEOXp6amh4OEFLMUZsVzg2c0V3aTRRNkxnYmJDUEtOZFJ1ZmJNdHhrMUI3VzNTaTRXbGYwWlVMSHZqdzZMdkxqYVg0bnNJVDBweXNBelRBT2tJRi9qWFdERGwxbkRtMzhKS0lWRG42U0tUeHU3dklXcEJPRjRCTEFDdEpsaVZOa2VRSExGMXlYdXhLcCtRK0pLOU9kbEZoOUMxS3MzcEptYWdHaDhJWkdYcVhJNmgxMEhZandMUnNVaXRWeGdCMVRkaHRTVXN1alJScUhUdFdGc0RrRW1OVVBDOW1TMEFUcWdjRFV4R2tublFid0xFRElpSWpLYWhzTXVoSFJzaUJ0cG1NL1JJNm9jc2xjMVZBYzhyQ0w2dXFMR1plbTd3a2E5RFBnbUZBZUJWS1JsZ2dVTjdGTFlxekVuZUFLeUZmZEY2NGhmSmRnMElnbFRQaHcwVnhjSFpKeHpiUmxNUUd1SjhUSFZNQ20xUDFsRVpMaVpCbGJFWHlYQ25iVG5tMVJQS25Ba0NYaGlpY2tvcXZkTFlCaU5Pa2ZTZmRCbGxrQkJwOFlUTlYxR21MT1RYSXBqVXNhck9CUHVVT2tqR1REVmJ1d0IzRDlKb1RLNFZZUExIZ05KUzA3RDJOM1Fob1RTaXFORm5SM09sS2l3aFRMb2xFVFVCTTJuSTJvalFZQ1NRaFBqRTV6NTNNOEMwd0kxSk84NEhJZ3oxNGxpVFVmbEVYa3pUZDJBTlZZYnVNZ2tjeGhYTEhmcWFEdXFERGpMek1yV2NLbkFvRE9OZzRGREM1ck0zV1c2NmowRUVDVktWRGJYaXBWcFFuTHpjWXErV1JxZVBjZ0VlS0JWbUlTenNDbmI0OTFkeVpDRHNnOW5ubGU4UEF5QU96S2NCTVZQTWNQWk5TbVc1NUdiRlliS1VRQVZ0M0poVWVya1R2NDhyczYvQjh2ZUNoV0VCMm9CNnNnQXVCZzBKbEZwS2dTS1d1QVhWZ3JSQkdpTFVYSEZhT1JNL05DVEk3STJIYmg2d3BoTHFBd2tXaFZ1M3NkQnh4aVBTdmxCSXNYaG9wMkNvaWRJNWlnSXdoT0cwY3hxdWw4MWJ2TkdlZ2dkdUcwZGdoekVRRHhlYlNzdGoyck5yS21sWkFwc0pPc2V5eENwQVBnOGNDQVNDMXNLR1FXYjFmR01NT1B2T29nNk1ZSnJoVWJDb3lDZGVTVEZZMVFTMzVCUDFzTHJlUlBjeGsxUGcrWHpnV1d6YTVsQ3BYZUYycmtjUjBvcklWZXRhMkp4dW9wR1lkMVV5bTVNYktIWWxRZFREeDZKemRzYlBxN0g2aFhSdjRqWFlZYUg0NFpiTUIzNU5zd09PT1VuQWdIVFVHMFNOYk5xRWgzNk9WaWtRZ3ZsUnp4dzdFS0tsRDBReDJHVEUvWDRZbVlRSnRVTzRWNTV4MVZRWFkxVnRsQTB1YUpmZ0ZudEJkRzMxTmVyVm1WN1VOYkdXdFJMYWl2eW9BWHdlRkJMRFcyV2lIVk5pdFVFTDE2TmNOQW02ZUF3NEltRng5RjFSWnZaQVM3V2lLQmttMU9CY2dFa0E2QU5nemtGQWJWUXA5cmthcXQ3d3A5a3dvKzBBZEhlY0tmbUhUbE1iVnFubGp5TWJlRkRUWXpRQnRNNHoxM2FqTDFtZHZVSDNEaFczNGJGTUJETzR0a0d2eHluSnZXL1VpT0x0NWdqY040WXgyUTY0aE42QVcxR2ZzemFBUFFMc2JWSDZLeGNBU0VBZEoxU2c2NnFRVXR6THR1dXVRK0JvU3l2Q200UWhqczJ0dFlCaEpoYm96ODBrU05HT1haUU9zSDkwTkZyUkpsK25WbHVZTGtoV0QrR3ozVGJvc0Zqck1IWTJueU5zRnJiTGxoMkxoQzVwcEI2QXBmQnBNbVNrcXFwd0NiRmN2bmNuUUtuaWdrelNrMmU1WTFSdEUwbWJ1QUN3OURERXplNGYwWVpRK0tMT3hEVWFmZmFJRVY4NVhYNUQ1aGpzMnRIOFNHSXZPWndoa2JFRjE5WUVNR1hIQlZ4bkdueUI5d3ZkOXMwTEsxS2prbUVacC9VS2ZZWGkxQWJDUmRXMWdEYlZOZlMrMk05Q3E4VElvUGZvb2pMVDVjZElzam1uakNKNnhrTFlzNEFMSHdUU0grYUZTOTRKb1pwZXpVUlJhVVE1Z2ZIRklEMFlBU05KaUw0RHNCMjVueVlPVmtRMlpYZlZNMTZRMkVDUWtTRnF6alRuaER5WXpCRXFiT0dPQ0ZuTU1uWXcwV2NpRXNDWjRCbkhvQkJUUXJYWDZhTmM2ZStnd2tHMXBzaGhrYVBMRmJta0I5d3Urd1krR0hRQlIzcXNzdkZYSzBnV0tNeDV1V0UxaHhjMUFwZ2hpNGs2NFZ2ZUI3MUcvN0VKbTY4Z3ZWTEFwREQ0WGltYzU2c0E3T3h2b01neHVaN1k3RTMxVDBrWEFCbGFtRFhodGFHUm5uNVFoT0IvV1B0OWV3WXROQWtDSnlJQXgwVmlrL2lLZVlHcmZnQ2JnTW54Y0cyamRDTis5YkNJVDJpYXcyNkUrbndqcHduNWlGNC9vaGVpT2xzRWwwUnhJOGd5QlFEdGVrT0Z3MitXcXkvVUVEYVhaNk5USU9xUU9OVkFkWlBHT2toKzFPdUdrVUJvT05GL1V5TTdEOTVwZ0pHWHJmckh4T3ArYjQ0OFBEMS9maUVRNTdnOFFZTmQ5WjVYN2F5RGMvdlJnZVYrZnBmLzh4QnJEai84SDhPTmUrRS8zcno4Zi9QWjkrOXZJMjdMKyt0SmVYbC9POG55dUVURFBRS0t2VDJxdnI5RGw5YkdrUE4vSjBhY3BmVGovZGdEK0xESWwrYzJ5TVI2ZlFLdkhrWjVlM3grcjNENkM3dXQ5bjM3M2VYVjlsb1k0T3FjWlRneC9mSXIvR2hrS3ZzL3QyMC9EMmVTTTltMVIrSXZqK2hjVDlUb1JBclAzbFFBQUFDVjBSVmgwVW1GM0lIQnliMlpwYkdVZ2RIbHdaU0JwY0hSakFBcHBjSFJqQ2lBZ0lDQWdJQ0F3Q3NEVy9HWUFBQWVjU1VSQlZFakhyVlpiYkp4WEVaNDUvL2t2ZThtdWQrMWRyMk03ZHV6R3VUU2hpZEtFcGlGcEJDVVJFb1FLYUZVRVJSVkNvaytnVmp4Q0gzamlBZkhDRXc4b1NDQkJLd2pRb3BhV0ZBcE5RK3ZnSnMzRmNaeUxMN0c5YSsvTnYzZi8rMy9POEhEV2JtZ3JWQzduNlQ5ejVqOXpadWFiK1FhSlNCSXdoRmpLdWJxZk1yUlMxZ1FBSWtDRS8zMXhTY1FRYnl3N1AzbDlzZVpFR3VKOWcrbHZQdFJ2NnRyL3hRWm5pRTBuK3NGTGM3WW5pRWhqK0tmSlppenBtZU5ERzBxU0FPRmZqQkVBQWhBQjNDVlh3dmZwTUFCNDRXSzExbzd5S2Y3NWZUMkhSalBaaFBiMjdiWHJGUWNSaENRQVlBaUlRQVMwL2pPdXgxREpONFIzTDdWbGZpUXV6TGMxeENjT2xiNzI0T2Fuanc4OU1KcHArZUtkdVJZQWFBeUphTGJtbFZjRFJFQUFBaEJTaHJGRUJOdUx5bmFnUEJDU0lpSGx1alVpaW9TTXBlVHpEYjlzQjFzTDFwR3hybGdTWjNoc2UvNmxTL1ZiVlJjQWF1M3dSNi9NejlWOXhuRC9VUHFwWXdPV3J2M3N6YVZyWmVmeGc2VlRaOHROSnpxNXIrZnhnMzFURmVlSGY1dzlNcGI3K2lmNkFlRGxLN1hueDVlZk9qYkFLM2JvQm1La2tBQkFCZ1FBMjB2SkgzOWx1NkV4QUhodWZQbnlnck1wb2NXQ1hyM2EzSkszdnJDL3QrbUtoVWI0MHplVzVodEJOc0dmUDcreWR6QXpsTGRhdnJ5NjZDalVUSlhkcGl0Nk15YXozVmdROUtSMWxSWUEwRFUyV2tnTzVpMHZGT016YTdrVS85N25ocjl4dEMraHN4c3JIZ0JZblBtUjVJdzljM3h3ckRjUkMvanpWQ050OGVHZVJMVVZyWGt4QUN3Mmc0R2MyWjh6V1JCTElMQjBkbmQrVkc1alNkdDZrNDhkS083c1N4OFp5eGtjZzVnVWJJS1lIajFRL05UTzdpY2VMQmtjWjJzK0FJd1dFZzBuYWpoUkxHVFpEZ2Z6bHNFWlI4U050MjhzalNFQWJMTDRkeis3ZFhrdE9ETlpINTlaQ3lMU1ZENEprZ2JiMXBzRWdJRmNvamRqTkowWUFNWktpZE1Uc21LSGFZdXZ1dkU5eFFRQThLVEJBTUVKeFB0d1JrU0krUExsNnFtelpkc1QyUVEzZEpUVU9USTRLcWROemxLbTVnU2hrRFJTU09xY0xUYURwTUdFcE5GaUFnQllQcVhyREN0MnFBb0tBQllhL3JkL2VmMFhiNVhkVVB6cTdSV0RzeWNQbDU0OU9XeHk5aDRLMTcyV1JFSVMxMUFROVdXTjdoU2ZiL2czVjd5VXFRM21MUUJnL1Rrem0rVFh5azdMajdtR0FIQnBvWFZocnEwenRySVdyTFRDVCsvS2YvbmpmU09GWkJRVEFnSUFRL1JDMlFwaUFIQkQyWERpVFJiWEVDMWRHK3EyNXVyK2xjWDJRTTdzU1JzQXdBWnkxbEMzVlcxRnA4NHVCYkdZcWJvdlg2NTNwL25lTFdrL2twSWdrK0FBTUZWMjJvSFFHS2pDamdTOVB0VUVnTGR1cmRaYVlWL1dVR25iVmtwVzdQQjZ4VlVKa0VRY0FCN2EzblZwb1QwKzA1cGNtbzRFMlo0WTdyRjI5S1dubDkyVXFaMjdhWnM2L3VIZE90ZFEzU0lrSkEzMnlwWEc5TEpiWFlzWXc5MERLUlc2MFVJQ0FDTFJTUUFSY0FCNGVGZjN4TnphdVp0clFjd2trYzd3eWNOOUFMQzF4eG90V0pObFoyS3VkZUxlbkJBMFhYRVVUQk02MjkyZit1dTB6Um1PRnExUDdzZ3JBMFBkQ1V0bllTeTM5aVNVSmxjOTZ6c25obDhzVmE4dU9nbURmV1pQOTg2K3RKQ2thK3pwNDF0Ky9ZK1ZZc1o0OVA3aTVKSlRiWVZFeEJDQ21MNTZxRyswbUt5MW95L3VMMWk2cGtpbE4ydmtVbnpORXdONUN3QVFrS3QycURGOFpGL3hrWDN2OVdlTklSRnM3cksrOWZBV0pkd3pzR25qVkJJWm5IM3AvdDUxVEhjZ2Jtak1EV1YvenN4WW5KUUh5aEVDSUVtSXFJRE9FRHR5QXRXa0VaR0loQVJkUTBSZ2lBcXlzU1J0WFhscDFmL2RoV3ExRlI3YjNnVUFVcExHa0czMGJzYlVuOER1WWhaMUYwTkVBSWFvVUJURzVJV2lVL09JaUtDTXZYdW4vZHQzYWhyaXh3YlNHMFRFLzBNR1JBQVl6QnQ3QmxLNnh1NStCd0RrVS9wSXdYeGdKS3VDMlFrREVhazRzSC9Mdi9RQndvSVBEQVpFSklnNFkrb0lFQkFBcGFUL2d0a1ZadUFqREI4TUVXcXQ4Ry9URFJWSG9nN0gwbnFMVmR0cUsrd29BQkFCUTZpM3cxbzc3QUJobmE2RFNLNjZFUkUxbkxBZHhLQkkvL3lzWGJHRE01TjFGVTMxSWx5UGlkcDZZVHd4YTd1aDJCZ3Z4bWRzVi9WZ0JFWFhBSEN0N1B4bVlqbVc5TVowODlwU0d3QzRHNHEyTHg0NzBMZnFoaGZtMTZiS3pzbTloZE1UeTRXTXNhMllUQnE4YlBzM1Y3d2RwZVRGTzYzWnVuZGlkK0gyaXJ0M1MyYXhHZlRuek5mTzFnK09aQ3QyYU9uczhEMDVMeElwVTdPOTJPUk1KWlVsRFcxTHQvWDlGMjR0cllibDFhQTNhengzdnJKL09OdWJNZWNiZ1JmSm1acmYzMlcyQTdHdG1PcEptMWNXV2w0a0FXRFg1dFNkUm5CMExGK3h3K1cxY0hkL0dnRGFnVWlidkdLSHVzWlUwRmpMajhkS3FXZFBqdjc5MW1yZGlTek9Vb2EydWN1OGQzUEswcG1sTTVPem9aNkVxVE9ONFdneGVYUEZMV1VNQU9BYUk0TFJZcEl6TEtTTmJFTDNJakZiOWVZYmZxMGRhaHFxNUhHRHM5K2ZyMnd0SkVwWjA5SlJFdlhuekw5TU5VeU9zWVRiVlRkdGFuNGtpS0RoaEFONTB3dGxKcUVEZ0pDMHlkSmV2TGhpNmt4akRBQm1hOTZCa2N4OWc1bWZuMXNzWlUyTHN3NTQ3OVM5MHhNVlB4S0xUZSsxYXpVaWV2TkdzOW9LWm12dStablZlanRvK1pIdFJRc05iOW4yWDcxU2pXSkpSUFYyRUVUaXpHU3QyZ3FhVGtoRVRTZHNlUkVSemRmZFpkdFh3ZytwZ3crdEtiVnVWOTJGcG45MExLK0duNDlVK3FxU0paRnFuNnFrSlhYWWtZQVFPaU1qSW9TeDFGWDNXUzh4S1FseFE2V0RiMXIvUW9CL0FxWklHWEwzelRoRUFBQUFiR1ZZU1daTlRRQXFBQUFBQ0FBRUFSb0FCUUFBQUFFQUFBQStBUnNBQlFBQUFBRUFBQUJHQVNnQUF3QUFBQUVBQWdBQWgya0FCQUFBQUFFQUFBQk9BQUFBQUFBQUFFZ0FBQUFCQUFBQVNBQUFBQUVBQXFBQ0FBUUFBQUFCQUFBRVRhQURBQVFBQUFBQkFBQUNvd0FBQUFBT3lQNWZBQUFBSlhSRldIUmtZWFJsT21OeVpXRjBaUUF5TURFNExUQTNMVEV6VkRBME9qUTFPakV5S3pBd09qQXc2aFpPMGdBQUFDVjBSVmgwWkdGMFpUcHRiMlJwWm5rQU1qQXhPQzB3TnkweE0xUXdORG8wTlRveE1pc3dNRG93TUp0TDltNEFBQUFZZEVWWWRHVjRhV1k2UlhocFprbHRZV2RsVEdWdVozUm9BRFkzTlNBSkFNd0FBQUFZZEVWWWRHVjRhV1k2UlhocFprbHRZV2RsVjJsa2RHZ0FNVEV3TVFZbk5xOEFBQUFTZEVWWWRHVjRhV1k2UlhocFprOW1abk5sZEFBM09NblVleWNBQUFBb2RFVllkR2xqWXpwamIzQjVjbWxuYUhRQVEyOXdlWEpwWjJoMElFRndjR3hsSUVsdVl5NHNJREl3TVRndlRBVkJBQUFBRjNSRldIUnBZMk02WkdWelkzSnBjSFJwYjI0QVJHbHpjR3hoZVJjYmxiZ0FBQUFBU1VWT1JLNUNZSUk9In0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDE4LTA4LTE3In1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAxOC0wOC0xNyJ9LHsiYWFndWlkIjoiZWZiOTZiMTAtYTllZS00YjZjLWE0YTktZDMyMTI1Y2NkNGE0IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiJlZmI5NmIxMC1hOWVlLTRiNmMtYTRhOS1kMzIxMjVjY2Q0YTQiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiU2FmZW5ldCBlVG9rZW4gRklETyJ9LCJkZXNjcmlwdGlvbiI6IlNhZmVuZXQgZVRva2VuIEZJRE8iLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MiwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9pbnRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoyNTYsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sImlzS2V5UmVzdHJpY3RlZCI6dHJ1ZSwiaXNGcmVzaFVzZXJWZXJpZmljYXRpb25SZXF1aXJlZCI6dHJ1ZSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDNlRDQ0FkR2dBd0lCQWdJSkFKYlR5cnUxWC9JUE1BMEdDU3FHU0liM0RRRUJDd1VBTUNNeElUQWZCZ05WQkFNTUdFZGxiV0ZzZEc4Z1RYVnNkR2xCY0hBZ1JrbEVUeUJEUVRBZUZ3MHhPREEyTVRJeE5EUTFOVEJhRncweU9EQTJNRGt4TkRRMU5UQmFNQ014SVRBZkJnTlZCQU1NR0VkbGJXRnNkRzhnVFhWc2RHbEJjSEFnUmtsRVR5QkRRVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNVmpLSFdwYkQ3VFNsTXhvY2pUbDZuSWY3eDMyUG1zUTl6R3VMR0dxQTBVUVpvSXEzWEx6TDZMWVV2SjVBNWcwdXlGR2xsSEVmR0FLckVhQ1E4RlZ2UFMvVWgwRnlmeldoUkF6aVRTaWpqTUlJVmpqalV2OW05dkZtY1hTY2dIaWc3T2R6ODg1OFYwa3JOSDk5cUdtM3dqZ2FPZXJUV210K2pYQ1VmbjAxSWtUUHd4RzJIbGdFZDQ1ak5MU1Y3Vm9vbCtLZThFMmtpNGxFa1RlSHpib3VsUjVHVWJwM25NaTdFNDdWTVFhM2JOd256V0Jic2FCU1NRaExrM201SGFLaGh4YTZ3SkRLNDdOaU1Da0NrZElIdVdTUUxWQWZtODVVQU9OdEVPUHdpME91SzNxYmU4eUtPRkdmMEtoQjVNTWVBeW03TVYvTTRXMGE0OW9nUEQ5cE1DQXdFQUFhTWdNQjR3REFZRFZSMFRCQVV3QXdFQi96QU9CZ05WSFE4QkFmOEVCQU1DQW9Rd0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFKV3o1eExNazVXTlliQWI2eU94RUNCb1oyV2VCL3FsNFZKM08vMy90TnN4T1luekxlV281NDB6UWg5ckFtYXh6N2V1bUJsc2tNcTR5R1BTTlhCOXljV0dIZ2tjQ2VTek4yd3Y4Q0l6REJzMm9CWmpUTms2NUxCWkRzc1RPQnRNVy8rdVRGSFFmYnVPM0lTTGhJMERYZlJFaTlORE0zamZrMTF4SGNzZmgyUk1WK1FkTmZ3VmFaWnJDcStvdUcrRXZrdjdLcXErb3l1MFZGTS90ejY4VEdsNnlsaFBGUjFxaDl3dHRwVmpBT09DRVFDTHFQMmRQMjhsd1lCeUNxSFFxVkh3YnVqdi9MWmpabktXM0xZbmRaaXhQUFNSQ0pzc0REd0p2aC9mNm5UeGc5WkUrL0pjWXJlNUNhSThuelZIYVNPQ2pOSjdGelVMRzY0SmlXT3ZRNTA9IiwiTUlJRGRUQ0NBbDJnQXdJQkFnSUpBSUNVVHZrZ3RqNUNNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1GRXhDekFKQmdOVkJBWVRBa1pTTVF3d0NnWURWUVFLREFORVNWTXhDekFKQmdOVkJBc01Ba05UTVNjd0pRWURWUVFEREI1SFpXMWhiSFJ2SUUxMWJIUnBRWEJ3SUVaSlJFOGdVM1ZpWTJFZ1EwRXdIaGNOTWpBd056QTNNVFF6TnpFNFdoY05NekF3TnpBMU1UUXpOekU0V2pCUk1Rc3dDUVlEVlFRR0V3SkdVakVNTUFvR0ExVUVDZ3dEUkVsVE1Rc3dDUVlEVlFRTERBSkRVekVuTUNVR0ExVUVBd3dlUjJWdFlXeDBieUJOZFd4MGFVRndjQ0JHU1VSUElGTjFZbU5oSUVOQk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBdkFLT2VxQzUvcDBEMWlzQ1lLUUpsVlVPckI2STdETG9jdW5FL1JtOGR1R1RieXhRaHQzQ2JGVlR2M04yTHAyZmJqeGxJKzNzT1NHazMzRlRZa1RxeGNkSklySjdTc2tCY1VTTnJmS09hUVQvNktRY1A0Q203Vis2NTVUcStUV3h5eFdRaER5Z3QxNXFvUDdNdUs2YlQ5U3dwQ2pwZktoYU1TbXlRYU1vVWNSQWJMcWR6QkNhYzBoekIrWmUrZ3FKbG5XVjlVYVNJMnJGc1Z1SDRaRTBjUk8rTU9wYUxnTS9zMjQ4bkdHSHAyMmV3U1FmYm5QYUJiYjhpcXlBUCtjdTUyR0xzVXBLUkplYkUrUjYrUE1ROUpDZFdlUVpSM0RrZlNpZGt2M21jYjRqcTFpSXRhK01xS2hSbndyZlhoOTExS1dMbllBbDlFTkNoTFgwYzZTajFRSURBUUFCbzFBd1RqQWRCZ05WSFE0RUZnUVVXTHZoUkJVUG44dUxJZjY4K2d2L05aSXdHU0l3SHdZRFZSMGpCQmd3Rm9BVVdMdmhSQlVQbjh1TElmNjgrZ3YvTlpJd0dTSXdEQVlEVlIwVEJBVXdBd0VCL3pBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQUZMckRoYWVnZUtIeFlqSDNFUDN2VUJLaG56TTIwNkFTeGdlWUNPMkVjOXBPbFlKYWVxRkUrc1VhbVVWL3B3akRscU5hU2dGZ3k3VHdlWWt2T21NbjRxU2NzSHF2SjN6R09BaWFmd2FoMXZVSGZDbFhSOCtheE8yaUdPVUYwSktyWjlZWWpiQWE1LzRIQ2x2N2pGUE9kTVdUT1F5bmdvaUhBczNqa3VZanBDTEZsQjRWT2kzZDF3akExcG5UZEJLa0FiN3Q4blR2dysvWGJGdmNRYTczVkg3c2p2b0JxRDNmZE1mUmN1VnE0cVVadFpUNmNHYWdUSEQ2MVR0cWg5b01DWlhjRGJSMVBHWm5OYnF5Y3NXUERJSzBucG1LMy8zbGZWOGMrWnNyeTZlMTcwbWZKTVpwN084bTZDU3o2L1ZMSyt5REpkNzg0MXdwbWVLVGY2SW5aQT09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQVF3QUFBQWdDQVlBQUFEbmxVWnFBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRW5RQUFCSjBBZDVtSDNnQUFBQVpkRVZZZEZOdlpuUjNZWEpsQUhCaGFXNTBMbTVsZENBMExqQXVNakh4SUdtVkFBQUsxRWxFUVZSNFh1MWREWEFjWlJtK05PQWZLb2c2V08wUWNyZVgzTzcxUjQxb0hkU3FxREFPZzMrY1lFWEJvbFhSVEVuMjIwdGFLVGM2NG1nQnF6QmlFVVZwQmRxaXd3aHFTZElTMnVwWVNndlJ0cFRTY2tsald6SGFnanBTUmRyNHZMdHZqcnZrMjd2ZHZkMUxqbjdQekROM3QvZCs3L3QrZjgvKzc4YUswTkRhYXIycU9kWFpvcVd5SDlSMGEwRmN0NjdXZEhHVFpvalZDY1BxU2VqVzFvUXVIc095L2VCVHNEbU0vNTRaVDlqK0xXR0lnN0RmQi9zQmNEUHNmNFhmUDhYM2IydUcxWkhRelU4bVV1S2R5V1RIbTVxYWNpL2pIQUtCeWlmMGJCcitMd2FYSVBZUGtNZHFmTDhYZFdwbHMxQUEzMS9Rak93OThMOFM5YjhCWElSMituRGM2RG96bHNrMHNsbmtRTXhrUEdYTzlFSnRWbllHRjRzVXlWbmQ4VVRhZXA4YncrNkxha0JqNWl6ZGJOSlMxcnhFV255V3hnMzZFbVBkV29QUERlamY3ZUFUR01zSGFEelR1QzZoYmowTi9wWG1Bc3J1Z3MwV0xQOE51QkpqWkptV0VsY2wwOW1QSjFKbVcwdEw1K3VpSEJ1R2tYc2xqWDg3bmk0RXpWbms5QXZrc1FuNTdFU2RockI4Qk11UGpPV1AvLzRPSHNSL2U3RDhZZFRsZnRSaEZmZ2RMRzlIdTF3QWZ6cjU1akFPa2lRS2h2VmJHQjZDMC8vaSsyaU5lUng4RmdudlJmeGZhaW56U2s3TkUwaUlVUGJmNDN3V21OVE5kN0JwS0VBN0xaZkZBWTl6cDN5WlRTTURpUVZpL1UrU2c1UVlBSWZPbUcyZXdzVWpBL3JoVzdMNEJlcm1qOWgwVW9CMk9CK1RaVFc0Qi9rOE95Ry95Q2lPb1cxSVlINkg4WFB6OUxiY0t6aWxRR2hwTVp2aFp5SEd3RzNnNDJCazg1WjhvOTBHOFgwTmlTczFJdjJRR2s4S2RXc3p0NHNuSVA4UnFSOW1EUVhESWRaU2JCb1owSWwzUzJPWFpYWXBGNDhNVTE0d25LMWJlVzQxcEwzRkVRQ0psUFZXdERHMmZ1eVZyTlIzdEJUZFNqQjhZcklGb3lWdG5vMk9DekJneEROQkI2cFhLTUh3eGlEOWdLM0tjNlBja3ZCR0pSaStNY21DMFlENGZkSzRYb2g5Vy9ZVENaUmdlS052d2Noa0d0RzJlMlcrYWtzbEdMNHhtWUpCYXhscFRJK2tOUlFkbUdSM29VTUpoamY2RlF3NmNDcnpVM3RDTUxEV3VRc2QzUitBdzNLbkJRNUt5bmpoamR4T25uRGlDRVp1R2pyc1lXbE1KdHBpV1VLM0JtVC9GZkV1ZGhnNlVQZTZGZ3owYlI2ZmE2TW1uWTNrbER3aGFZakxVVTZlczI3dDBnenptN1ZnVXU5NkQ2ZmtIeENhNjJVVkdDTXE4ZzAyalJRbmltQm9SdllpYVR3bTJudGZXOXZDazdXMGRZSHMvd0oxNjNrNmVNWnVRMFc5Q3diRzlLMXNPcVdBdklVMFg1dGlEWnROYlNqQmNHRUVndEhXZHN2SjhFMm5BdVV4aWJwNWhXTTkyb0RmMnliOFgwS3gzckVORjBvd29nSG0waEpwdmphVllQakNpU0FZaWJUMWVXa3NKaWJDay9QbTVVNWljOHJ4UXBsZE1SUHA3SGxzSGhxVVlFUURKUmdoNHNVdUdIU1JEK3BJVitUSjR4SDFMRzlkakNIVGlNbFI0VmlHMkU3SFJiaEFLRkNDRVEyVVlJU0lGN3Rnb0oyejBqaE10SE9lamwyd2VRRlkvbEdaZlNuRmZEWVBCVW93b2tIQ01CZEw4N1dwQk1NWEtncUdJUzV2VHB0bmgwWFUrMDVabkFKREZBekQ2RGdkL3A2V3htSEdEZkZGTmgrSDBRYjB3YU95TW1PRStPVU5JL2NTTGxBMTZsMHcwRjY3NDdxNHBScEdjZHFhN2t1UjVVdEVINDVnRG13S2kvRFpqOC83SUVTMzRyT3plYWFZeldsVWgzb1JqSm96Uk1Hb09BRU5hMGkyZFRHR2VFcDhURkptUER2WXZHclV1MkNFUWJxaGtzT0ZCc3lsaTJXeGFzVGo2TmQxMnBzWHY1N1RDUVlsR0M0TVNUQmFXNjAzb28xZGI2cXpxVnRmWW5NNTZBcEJ3OW94b1Z3Uk1ZbEdOSzM5MVZ5aUtpakJpRVl3bWxQZExiSll0U1RhN3FIaUErdStvUVREaFNFSkJ0cHZoZFQvR0hXeHY5eld4UmkwdFBpRXRId0p4YlZzWGhXVVlFUWpHSFJ3R3VPaDBnVjVrVE9lTWkvaGhQeERDWVlMUXhDTXMxcXRWZ3p1OHJldnB5eVBqd0h3c3BWaC9TdVZXaktkQ3dTR0VveW9CQU81cDgzM29wK2VrOFdzRmRGK3dhOFNWb0xod2hBRUEzN1dUUEJiUkhUY0FleEd2SlROSGZRTU5jZjZCcytQOWVibnhmcWVQSldYMmtDWnpIZ2ZFeGpDR1FJbEdORUpCc0YrRUpFdWRzdmkxb2JpVDV5S2Y5U05ZT2pXWmpUeWZhSFJ1ZDlBSG90WXBXQTROeHFKWTFMZlROVDVLMndlaTYwZk1pQVVENEtqQmZibWo4YjY4c3RqMnc3YUQycWhmVS8weHk2WnJ6SFMycXVscFRObCt3eUl1aGNNakJVNjYxUU5tMmN1UG9QRFJZVFJCanBiUjJNQU9WOUhaek9ROTgvdy9mWXdpUEh0ZmplMGJ2MkZrL0NQZWhHTU9yc09vL0x0NjdvMVhEZ1Z1aUUvQndMeGp4S3hLT1hHMk02ZHRpMzZ3OE9SZG5HUDdUY2drRnVkQzhiVXZBNmpsa2lrTzgrVHRnMklNWFNZemZ4RENZWUxxeEFNTDdldm83N3R0bkYvLzBuWWt0Z2hFWWx4SExxYXpKMnRqRXFiczlpeVNXWG4ydjREUUFsRy9hT3NZQmpXQVRiekR5VVlMZ3dzR0xscEtMdFY2cE5KSFZaNFlITGYvbmZKQldJQ2gySGRRRVhpNmV3bE1yOGxkSjVIWXR2N2hSS00ra2M1d1VENzdHVXovMUNDNGNLQWd1SHA5R2RLWE1YbUVJeDh1MFFjWFBqWWErMHltVXdqMnV0eHFlOGlvbzRYMnZZK29RU2ovbEZobCtTUGJPWWZTakJjR0VBdzZIb0s3QTZVbmNpbzU4R21wc3RlZUIxRDc5Qlg1ZUlnNGYzRHAzT3BHT0xNbC9rZnh4Mnh6RnJmajhWWGdsSC9xTEJMc29YTi9FTUpoZ3NEQ0VZaVZmNzJkV2JwSmR3OSs4NlJpc040OWc3dWgzVmhGNFBGNlFtSi8xTHExZ0l1NGhtVkJBTVQ5dTd4NzB3SmcvVFlmVTZoTEpSZ1ZFYUZYWklIMk13L2xHQzQwS2Rneko1dG5nS2ZCNlMrbVBqLzBJd1pIUy9uSWc1R1J4c2hCZ05Ta1NqbFlpNVJBUHJ1VWxtY1ltSnkvWG5HM0hFeEs2RGlGa1pFeEJqWXlDbVVSU1hCUUR1UG9BNWJvMmJTeUw2ZFUvSUUzaXFVbmdZTm0yZ0QxN04wK0c4VnArUWZTakJjNkZNdzRycGxTZjBVRVRGTk5pOUZ6L0RNV0cvK2lFUWtIUGJtTjhTMmJadDQrYmh6ajBuNUozaUJkRnMxbC9BRTFMMnVCYU5XVE9yaUE1eVNKeUR2NzhyODFKeWVyeTZXUUFtR0MzMElSdE9jM0dsb3A4TlNQMlBVeFZObDEvVHI4cTJ4dnZ4NjhQa2lzZmduZmw4ZjZ4OTBmUVVsNG41R0dxK1l1amh5NXF6dTEzQ1JpbENDNFkxMUtSajBXa2d0Ri93bVJTVVlMdlFoR0Y0bUdBYUxZUFB5MkRnMFBkWXo5SDdzcHN5TjlReFVmQzBpWGZ5RlB0b25pMWxNR3F4Y3BDS1VZSGhqM1FrR3hDS3BXKy9tZElKQkNZWUxQUW9HdllRYTl1WGY3MWxwNjZKS2xIdDgvUXNVUiswWFRYdUFFZ3h2ckEvQm9MZnIyUWZIci9HemxlbUtLU01ZdW5rSFRTekVsTDQrc0ZhQ2dmbytCKzdXak96bjJMUXNuTmNHaUQxVVR1YlBvZG5GNXBHQXpwZ2d2dXRXQnVyNkg3dE91cmlVaTVRRlhTV0tNdC9IQk41RWF5WFVyK3c5TWNFcGp2R0s0dmZJYndWZHc4SXBsQVdOQlpTNUR2V2hONVhuNGVkb3FkOG9pRnl4MndrK2l1LzBJdWlsOUt3VFRza1Q0bWx4RHRyelJtNVhqUFVvMnBYZTZHNDlnanh2dytmQ2hOR2hjZmh3UUM5amFUTEVHOXhvR0ZlV3ZpWStVdVNtMlErY29YZHk2TllpTk93eVZQckhHQmgzSm96dVVDc2VUNW1YUWZGL2poZy94T2ZYTmQyOGdqbzBhSDNwTEFsTk5HZHRMNVlpNTV2UWdiZWo0KzZnLzlnc01xQU9IM0hhU2Z3RWJYY0R2bWVUaHZVcFRlOTZ5NFF6TTc2UW05WTBaOUZwZFBjbTZ2TnBzQXQ5c3R4cE8rdlg0RWJFMjBvVENjc0dTb25sK0IvZjZXYS9WY1Y1MGFTUHg3dE9EZUVCeGcxMHh5K2Rrb1hnZkFneEZpRGUxOUFPMzBNL3JFUU85eUxtQTRpL0JiKzNsK2Jua1BJSE40UHJVTCsxK0Z3QjIydmhveDFpZjFHODFYcGJ2QTI1WmpLK3IybHhSMjRhMWQ4UlB6RWZ1d29XY3NFV2lKTXpZaitJM3crVnRLc2hIZ0gvQVBaU25xalR6Zmk4eGg2N3VuVXVQZHJBMjhOeFlySC9BejN0STRqNStUT0xBQUFBQUVsRlRrU3VRbUNDIiwic3VwcG9ydGVkRXh0ZW5zaW9ucyI6W3siaWQiOiJobWFjLXNlY3JldCIsImZhaWxfaWZfdW5rbm93biI6ZmFsc2V9XSwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiRklET18yXzAiXSwiYWFndWlkIjoiZWZiOTZiMTAtYTllZS00YjZjLWE0YTktZDMyMTI1Y2NkNGE0In19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIwLTA1LTE3IiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJTYWZlTmV0IGVUb2tlbiBGSURPIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyMDAyMDcwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMS4xIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjMifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjAtMDUtMTcifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIwLTA1LTE3In0seyJhYWd1aWQiOiI0YjNmODk0NC1kNGYyLTRkMjEtYmIxOS03NjRhOTg2ZWMxNjAiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjRiM2Y4OTQ0LWQ0ZjItNGQyMS1iYjE5LTc2NGE5ODZlYzE2MCIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJLZXlYZW50aWMgRklETzIgU2VjcDI1NlIxIEZJRE8yIENUQVAyIEF1dGhlbnRpY2F0b3IifSwiZGVzY3JpcHRpb24iOiJLZXlYZW50aWMgRklETzIgU2VjcDI1NlIxIEZJRE8yIENUQVAyIEF1dGhlbnRpY2F0b3IiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MiwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjowLCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjowLCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJpc0ZyZXNoVXNlclZlcmlmaWNhdGlvblJlcXVpcmVkIjp0cnVlLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUJhRENDQVErZ0F3SUJBZ0lVSlVyNVRCTCtSL3JGZnpUZkdxOHREZGF3QXdrd0NnWUlLb1pJemowRUF3SXdJVEVmTUIwR0ExVUVBd3dXUzJWNVdHVnVkR2xqSUVaSlJFOGdVbTl2ZENCRFFUQWdGdzB5TURBM01qZ3dPVFEwTlRKYUdBOHlNRGN3TURjeE5qQTVORFExTWxvd0lURWZNQjBHQTFVRUF3d1dTMlY1V0dWdWRHbGpJRVpKUkU4Z1VtOXZkQ0JEUVRCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQk1LSTJrRytqbUE3SGFXb3BQZG52aEJ3UmNicWcrbUpSU2FPaFNxZEJmSTAwc2NJeDM5eWVoczROQ0lFZHpsT2dDRXR3SEdoVEZ6SUZBWGFoZ1NoVXBlakl6QWhNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3Q3dZRFZSMFBCQVFEQWdJRU1Bb0dDQ3FHU000OUJBTUNBMGNBTUVRQ0lITTlXOW9uQ0hDSXlpbHdCVmtWK1JVMURzVEpOaWJmeGE2Vi9ISkZQZVFVQWlCNjlxTy93OWJ4ZWJxK1pkNkJ0a1NYalQzSEtmTmVYWVA3UDliL3dNenBqUT09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQU1nQUFBRElDQVlBQUFDdFdLNmVBQUFKVkVsRVFWUjQydTJkVFc4V1ZSU0ErNC84Uy93UWRuWWxyS1FyNmFxSkM0MHNNTUZFRFFzV0pEWWFValFnMFZDSlJBc1NCUW9xUmRxeForS1E2ZmpPekwwejk5eDd6cnpQazB5a1dOcDMybm5lYys0NTkyTmpBd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFLSTVmdkhUWWZ2aUp3SXJPYnAxdTNyNTRjZlY0ZGJsNnVuNXpiZlhpKzJkNnE5clgxU3Y3OTZydkl0dzh1aEdkWHgvcHpyKy92M3ErTnQzVjE4SkpMbjcreS9WdGYyOWF2dTdHOVhGYno2cnp0LzhwTnJhKzdMKytQclBkNnFEbDAvUExlMzVrZnRxMzY5Y20xOWQ5WC9QZjErL1VUM2J2SEJHaXI3citjVkxia1Nwamg2L2MvTHI1OVh4RHgvMHk1QllrRnVQSDV4NVFJWXUrVHo1Zk85aVhQbng2NkQ3bFV0azJYLzJtNDk3Zm5Od2NFNGUrQkF4dXBkRUdxdjNWVXN4RkNHVUJKRUlFZnFnZEI4YWoyS0kzQklocHR5elJCVHo2VlJvMU9pN0pCVXpsVDQ5K0dpNkZETUVrZFJoNm9QU1RrVThwU0NTUHM2NVg3a2s4cGlOSEhQbHNDSkpQYkNXTVVVS01TWUtNalZ5ZUpVa0pxVWF1MFEwY3pmWUhZVFB2V1FNVTBTTzFHSk1FQ1RsdytKQmt0VDNLNWVwTVlta1ZpbmxhSzZzWXd5cFJHbUlFU21JL0dKVFB5eVdKZEdRdzl3WWJPcWczRUlVa2FwVWRFVktVUkN0QjZhNUxGVzR0Ty9WeEJ1Q2pEMDA1R2pLdjZwUjQ0Kzk2dmpPZS9weVJBZ3lkMkR1UlJKdE9jeU1SVjdkM0syMEJORk1zK3F5YlE0eElnVFJTcStzU1pKRERqTnBscVJCbW9MOHM1LytGNW1zZE90WWtGS1M1SktqYVpvaVNHeVZLc2Q0WTZJZzB1aktLVWh1U2VRZFBmZjlJWWdIT1l4R2tKeVNwT3JyeEZ6eVBSSEVneHpHQmRHV3BJUWNqRUZpeGh3UHI1YVY0L1FLZmEybEJOR1NwSlFjWnVabVdSZEV2UUVZY0VsUndPSWdWbnN1VTBrNXpQUkJMQXRTejZrcUxFZnNOQk5aODFIeW9Vb2xTV2s1VEl3L3pBdVNxd2s0RkQwZXhlZkJKYW85S1NVcExZZXB1VmhXQlNuUzYraktjVHIybWZwenpkRlIxNURFZ2h5bXByeGJGTVJDYWlYVFdPYjhYRXRXdEtZK2JDWDZPR1pUSzlPQ0ZFNnQ1c3JSa0dMUlZHNUpTaFlaek1saFVaRFNWYXRVY2lESkF1U3dLRWpKNkJFalI4eDJRRWppVkE1cmdwU01IaUZ5OUMzbHJRc0tJN0pZa1NUbVljd2hpV2s1ckFsU0tucUV5QkhTelI4ckNTT0prdzBhTEFweThtVFhkRnFWcWpUc1VaSVV1NVc0bE1PU0lMUDJyTW94NWtqWVAvRW9pY3p6V2pzNXJBaFNyeXZQS2NkcEtpZmZVN040Z0NRTGtNT0tJRm1YendiSzBhMVMxUkpIUnJtUVRyeUZ6blV1U2R6SllVV1FiT2xWcUJ6dHRTZWRmeE83TGdWSkhNdGhSaENyY2lTU1JENS9uU1Z4SzRjRlFlcXRleXpMMGZNMXBLVGJYRUhDQkRRVkxVZ2lHeVdFcnNNSWtjUzFIQ1lFMFY0dEdDaEhVSlB5TkJVY0xEUU1pUkxZZGJjZ1Njd3Vqa1BGQnZPN3RYc1FSSFd0ZVVTMWFsU1FGVjlMZWpmZHYrdEwwV0orSng0bGFUY1U1ZlhMd3JHTkpWQmNFQ09sM01GR1pUZTk2cTVWRVNsYUVlTE0vKytPWHdMbmNIbVRaTEVzVXBDQVFYRnd1dGQ2d09zMGFxQWYwbTQ4MWw5cmFIRHZaT0MrOXBLVUZFUmxZVlJBNU9nKzZQOTdzRmM4eEdOeWpIWG5RNnBqU0lJZzZvS0VyQ0ZmMVhkcC83dGFrZ2x5ckpKa2RQQStFa21zckV4Y1cwbEtDcUl4dlgzT1lIeFZVeTlXam03VkttUVM1dGljTUF0UnBKRUVRVHdMY245blBIcU1WTTNha2t5V283V1hWbENVSEhuZEZ0YUtMNmF2c2M2Q3lKeXVGRjM3M21yVlJGbER4azFhODU4V2ZmSVRncFFWWk01NWgwMGtDcDJwN0NXQ0lNaWFwMWhKQk9sRWhOSHBOQ092VzJQQkVpa1dnL1RwMzdNWllFK1pKOVpUdWgzNldqS1FIM3JOTWorS1FUcGwzbnhsM3FHQmQ2ZnNHalZYYkVWanNEM29YeW5Kd1B3dXlyd0lvcktEWW15anNLOHhHQ1ZKdCtQZVN1VjZKUWxvRkZxSUhqUUtsemJWWkVvM2ZjVkRQUHJ1MzRvQ285TlJKa3gvb1l1T0lCdVcxcDJ2RW1GVWtvaU9lOHc1SThpQklMTkxxYWtsNlV2NXVoMzJ0NHVsdWxOS3hwcUtBVlUySzNMRWJ1Z20xYTFtWFFqVDNWTXVtTkxlc0NIUm1wQ3hkLytRZGZVaEVjU2JIRU1McGhaUkVtYkpiVndKV0tKSkhUMmU3TmIvUFRQMkdKSmtnZXZTUTdZdVlzbnRPbXphRUZuYWpaVkRIclFseXNHbURha0V5WFhFczR3UkFsYnpKWlVrUUE1dkc4aE5lYzFzKytObDQ3alFuZHhuU3FMMW9IbVVnNDNqdkcwOXFpZ0pjckQxcU03bTFiblNyTmhqRDJLbnZBZWtjT3NxQjV0WHp6bitJRWMxUy9Gc2tGQkJQSjQySmV0UlVyOW04d2ZuV0JPa2ppTGVEOUJ4c3FON3JCeHJlN3FVTlVHc0g4RldSN21lTXU1U0l3ZEhzSEdJcC9vaG5qSmxIVGs0eEhNWngwQ1BMRjZLeGNwNmNxdHljQXgwcENDaDg1cFVKWG1ZWnVVY2NpeEFFcE9DS0Mya3lpbUp6R2IxSm9lRjEyeE9Fb3VDVE9vL0dKUEUyNWpEMG9SSlUzMFNxNEpZU0xWQ3R4THFJbHZqbEg3SVpDZVVxVDkzQzVLWVdVOWlXaEFEcVZiTTRUZE5PYmYwd3lYamlMblBSV2xKWkMwK2dvU2tXZ0Y3MjZwZmdTc0JoZlpCTWw3bHNDS0ppZVcrMWdXSm51cWhkSVcrMXBLN2tLU1V3NElrSm81dzh5Q0lDVWtDMDZ3bHlWRTZLcHJZNXRTTElQV1lwTUNNM3hoQlNtM3lwaWxIU1VrUXhGUDUxNmdnT2VRb0pRbUNlRXEzREFxU1U0NFNrcGdRNU5YTlhWVkJ0RjUzOWpsYmhzWWcwb1FzSVVkdVNVd0k4dWJnNEp5V0hJZGJsMVZ2c082VDVKcjlHeWlJZGhYTHltNkhPU1F4VWNVU25sKzhwQ0tJcEc4NVhyL3E3b3lSZ21pZTVXRnRLMUJ0U2N6YzY5R3QyOG5sZUxaNUlhdjlkVU5STTVwRWROUFhhWjljTFVuTW5XUWw2WkRINkpGdEFCOGhTT29vWW4wVGFZMGo0c3pkcjR4RjVGMC9oUnd2dG5lSzJsOXZJNVE2N1lvUUpHVUgyc3NPNnluWGtaZ1plMmhJb2owd0x4WlJJZ1ZKSVltMzR3ZFNTR0orU3lDUlpHcTY5ZWVWVDgzZVhEMUdtZE9KbnlDSU1IWHF1NXR0Y1RySU5QV3BhMkhNUm82K0JtSm9OSkdVU3FNaHFDcExiQW8yVVpEbW5UVzAvQ3VmVjdMSFVXTHc3bnB6NjlkMzc5V1JRU1JveXNFU1llUmprVWdpanVkZnBEejQ5WEVHa29vTlNUTkRrQVpKbDJRQUwxR2xTYjlFQ1BsWS9uNHhoODUwM2h4RUFMbkhKckxJbitYdlhFVU1XREhRLzI5cm54UnlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0cvK0JRQjlkOEg1OUNaSUFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCJdLCJleHRlbnNpb25zIjpbImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6IjRiM2Y4OTQ0ZDRmMjRkMjFiYjE5NzY0YTk4NmVjMTYwIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6dHJ1ZSwidXAiOnRydWUsInV2Ijp0cnVlfSwibWF4TXNnU2l6ZSI6MTIwMCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMV0sInRyYW5zcG9ydHMiOlsidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN31dfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjAtMTAtMTUiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJLWDkwNiBTbWFydCBUb2tlbiBGSURPwq4iLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDIwMTAxNTAwMiIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4yIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjMifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjAtMTAtMTUiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6Mn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMy0xMC0xMCJ9LHsiYWFndWlkIjoiNGMwY2Y5NWQtMmY0MC00M2I1LWJhNDItNGM4M2ExMWMwNGJhIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI0YzBjZjk1ZC0yZjQwLTQzYjUtYmE0Mi00YzgzYTExYzA0YmEiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiRmVpdGlhbiBCaW9QYXNzIEZJRE8yIFBybyBBdXRoZW50aWNhdG9yIn0sImRlc2NyaXB0aW9uIjoiRmVpdGlhbiBCaW9QYXNzIEZJRE8yIFBybyBBdXRoZW50aWNhdG9yIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfSx7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlCMlRDQ0FYNmdBd0lCQWdJUUZRTktXKzd6YmcvN2QrbFR5cklXd0RBS0JnZ3Foa2pPUFFRREFqQkxNUXN3Q1FZRFZRUUdFd0pWVXpFZE1Cc0dBMVVFQ2d3VVJtVnBkR2xoYmlCVVpXTm9ibTlzYjJkcFpYTXhIVEFiQmdOVkJBTU1GRVpsYVhScFlXNGdSa2xFVHlCU2IyOTBJRU5CTUNBWERUSXlNRFl3T0RBd01EQXdNRm9ZRHpJd05USXdOakEzTWpNMU9UVTVXakJMTVFzd0NRWURWUVFHRXdKVlV6RWRNQnNHQTFVRUNnd1VSbVZwZEdsaGJpQlVaV05vYm05c2IyZHBaWE14SFRBYkJnTlZCQU1NRkVabGFYUnBZVzRnUmtsRVR5QlNiMjkwSUVOQk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRXNGWUVFaGlKdXFxbk1nUWpTaWl2QmpWN0RHQ1RmNFhCQkgvQjd1dlpzS3hYU2hGMEw4dURJU1dVdmNFeGl4UnM2Z0Izb2xkU3Jqb3g2TDhUOTROT3pxTkNNRUF3SFFZRFZSME9CQllFRkV1OWh5WVJyUnlKendSWXZuRFNDSXhyRmlPM01BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0RnWURWUjBQQVFIL0JBUURBZ0VHTUFvR0NDcUdTTTQ5QkFNQ0Ewa0FNRVlDSVFDQjBORlFTTjB6NGxXei95YzM2ZXdyVEN6dHRLL3FGdmxhUE9LaCtUMW82d0loQVAwb0tLQStjaWNzRHkzWTNuK1ZsUDhlQjNQQnpNa2h2Vy85SVNYQ3crVkIiLCJNSUlCMkRDQ0FYNmdBd0lCQWdJUUJUbWszWndpbEZYanNaeXdIRG5NZ0RBS0JnZ3Foa2pPUFFRREFqQkxNUXN3Q1FZRFZRUUdFd0pEVGpFZE1Cc0dBMVVFQ2d3VVJtVnBkR2xoYmlCVVpXTm9ibTlzYjJkcFpYTXhIVEFiQmdOVkJBTU1GRVpsYVhScFlXNGdSa2xFVHlCU2IyOTBJRU5CTUNBWERUSXlNRFl3T0RBd01EQXdNRm9ZRHpJd05USXdOakEzTWpNMU9UVTVXakJMTVFzd0NRWURWUVFHRXdKRFRqRWRNQnNHQTFVRUNnd1VSbVZwZEdsaGJpQlVaV05vYm05c2IyZHBaWE14SFRBYkJnTlZCQU1NRkVabGFYUnBZVzRnUmtsRVR5QlNiMjkwSUVOQk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRW5mQUtianZNWDFFeTFiNmsrV1FRZE5WTXQ5SmdHV3lKM1B2TTRCU0s1WHFUZm8rKzBvQWovNHRud3lJTDBIRkJSOVN0K2t0anFTWERmamlYQXVyczg2TkNNRUF3SFFZRFZSME9CQllFRk5HaG1FMkJmOE81YS9ZSFo3MVFFdjZRUmZGVU1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0RnWURWUjBQQVFIL0JBUURBZ0VHTUFvR0NDcUdTTTQ5QkFNQ0EwZ0FNRVVDSUJ5Uno0T0FsUlo5SHo5S1Y3ZzJRTnRDMEM4SnhIL3hMSlk4RlpFbXRKM3NBaUVBc3JlVDArZU5rTmNVakk5aDVPUENvSDZObXNPa2d2RUFCSlpyRjA3QURrWT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBRkFBQUFBVUNBTUFBQUF0QmtybEFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFCSFpwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFBRHcvZUhCaFkydGxkQ0JpWldkcGJqMGk3N3UvSWlCcFpEMGlWelZOTUUxd1EyVm9hVWg2Y21WVGVrNVVZM3ByWXpsa0lqOCtJRHg0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJa0ZrYjJKbElGaE5VQ0JEYjNKbElEVXVOaTFqTURFMElEYzVMakUxTmpjNU55d2dNakF4TkM4d09DOHlNQzB3T1RvMU16b3dNaUFnSUNBZ0lDQWdJajRnUEhKa1pqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWo0Z1BISmtaanBFWlhOamNtbHdkR2x2YmlCeVpHWTZZV0p2ZFhROUlpSWdlRzFzYm5NNmVHMXdQU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2SWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhodGJHNXpPbkJvYjNSdmMyaHZjRDBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5d2FHOTBiM05vYjNBdk1TNHdMeUlnZUcxc2JuTTZlRzF3VFUwOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXRiUzhpSUhodGJHNXpPbk4wVW1WbVBTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZjMVI1Y0dVdlVtVnpiM1Z5WTJWU1pXWWpJaUI0YlhBNlEzSmxZWFJ2Y2xSdmIydzlJa0ZrYjJKbElGQm9iM1J2YzJodmNDQkRReUF5TURFMElDaE5ZV05wYm5SdmMyZ3BJaUI0YlhBNlEzSmxZWFJsUkdGMFpUMGlNakF4TmkweE1pMHpNRlF4TkRvek16b3dPQ3N3T0Rvd01DSWdlRzF3T2sxdlpHbG1lVVJoZEdVOUlqSXdNVFl0TVRJdE16QlVNRGM2TXpFNk5Ua3JNRGc2TURBaUlIaHRjRHBOWlhSaFpHRjBZVVJoZEdVOUlqSXdNVFl0TVRJdE16QlVNRGM2TXpFNk5Ua3JNRGc2TURBaUlHUmpPbVp2Y20xaGREMGlhVzFoWjJVdmNHNW5JaUJ3YUc5MGIzTm9iM0E2U0dsemRHOXllVDBpTWpBeE5pMHhNaTB6TUZReE5Ub3pNRG95Tnlzd09Eb3dNQ1lqZURrNzVwYUg1THUySU9hY3F1YWdoK21pbUMweElPVzNzdWFKaytXOGdDWWplRUU3SWlCNGJYQk5UVHBKYm5OMFlXNWpaVWxFUFNKNGJYQXVhV2xrT2pKRk56RkNSa1pEUXpZM1JqRXhSVFk1TnpoRVFUbERRa0kyTkRZelJqa3dJaUI0YlhCTlRUcEViMk4xYldWdWRFbEVQU0o0YlhBdVpHbGtPakpGTnpGQ1JrWkVRelkzUmpFeFJUWTVOemhFUVRsRFFrSTJORFl6Umprd0lqNGdQSGh0Y0UxTk9rUmxjbWwyWldSR2NtOXRJSE4wVW1WbU9tbHVjM1JoYm1ObFNVUTlJbmh0Y0M1cGFXUTZNa1UzTVVKR1JrRkROamRHTVRGRk5qazNPRVJCT1VOQ1FqWTBOak5HT1RBaUlITjBVbVZtT21SdlkzVnRaVzUwU1VROUluaHRjQzVrYVdRNk1rVTNNVUpHUmtKRE5qZEdNVEZGTmprM09FUkJPVU5DUWpZME5qTkdPVEFpTHo0Z1BDOXlaR1k2UkdWelkzSnBjSFJwYjI0K0lEd3ZjbVJtT2xKRVJqNGdQQzk0T25odGNHMWxkR0UrSUR3L2VIQmhZMnRsZENCbGJtUTlJbklpUHo0NzdKWEZBQUFBWUZCTVZFWC8vLzhFVnFJWFphdkcyT29xY0xHMnpPT2t3dDBCU0p0cWxjWFY0dSthdXRsV2hiems3UFVBTVk5SGNyS2p0TmJxOGZlQWw4YUJvc3p6OXZwZGpzR0dxdEYzbjh1VHNOU1pwYzZKc05UNSt2MHhZS251OFBmZjUvTDQ4ZmcvZnJpY3pKZ1lBQUFEQUVsRVFWUjQya1JVQ1piRElBakZYWk9ZMVRhdE5jMzliemtzU1ljM3I0TUU0Zk1CQWFENnpsOHkvOVRPZ2V0OGQ1amZONzhid00vZERDUnBSNTIxelhmb2pISjA1SUl5aEJBVVNWQU9OZEd6Qll0MmY3S0ZyZmtKYUFrSGg5RlpoY0RYSFJrVEtvOU1MaWhHYWF2SW1uVjNxeUVYMEVwcmd6LzREd1VEN2tDSFJuZDhRRk40M0dvNFVWbUREZ3phNHcyN29pemRBMitjSyt1dVVwampvMit4d2MvNDJXNTB4NUxHWWVEQnNSMEhWSXg1eDhpRjYwQ2JsYlRFRWtGcjI3Yk5EQlVWU3ExT0tWUGJFNjJiM0VIOEZxQmc1T09PRXVjMnQ4WkppcU1PdUdwK2NLamc3d1ZHY2VvenFONHB4Z1ZQUWtqRllnYlZKS0RVaERDallyYXdQNXE0RVRnQzlmSU1SSHRpdHBRY0N2Sk9FTGNiTXNRZ25jaVJrbGpweVFqdkc0NGpxQlVFVEZpQmkxUEVJeWVrT3pzVytUeTVjTEhvczVSK2RNUzFMdFNTeGYzZ1FIY3pSMkNJNGdNTnBXNElSQTFRTWE2dEo0K0M2dUh1R0U4bU5ESXlGcWcvT1AvTU1VdWVTNklxOFM5MGRBZUJKU0V5L3FLa0srQk53ejhjWVk0amI1SjZ1NGlXQ0kyQjFaNTZMVzVrRWM0aGtkTXBzdlVDNTU4NVNYMFF1YmNnTnF5ZmdERkVjVHQrNDAvMFM1Tngwd2FDdzNPS2tjT2JBNUluMEFZcDAxcGpqdzJuNjI2VURqdEh3YTI4aUh1VEtxdHJ2K3JlVzQxTlo2aUdscjd1dUxKQ2ZrRnRjdGNHMDRzZ20xZU5TK1phRG5wYVRFckdveVg1SksyaU16OHhzMG5Pd1dHY1BETjQ5cWFDZDRiekpvekRabS9hQksrRW96THcrWGhOQmlZd0hmMHNpT3UxWFBrRy96S3d2cVlLY2ZTd0RFY0gvb1VlMDdlcy9XUThySXlnMkRPWGo4dGprWmR1REIvYjhoekRsbE1NT0NTNUJFbmQ1MzRmOHRpM1VaYzRrTXMzeEx5YWZNU3NKaGRHOFhQcWpOazV0QWdPMjVmZUtDaG5WZERqL0owRk1rT3NVL3hNQnYwd0ZoWWVFR2ZWSDEzZnVEVTB5REZMYTRmYzdSbldIQmZ1VEZWMnRFbU53YWRjN2FjM1VZMmpmQmw3SFQzNmZlMzRpUU81bU5DRkZCVzA3S2pQZ3FoT0xVMDF2WjhQdWVaMkpDbEZaTjhqa1VzNjl1a2E5ZVBwNitFZkw0QUY1K055d1NiaXJIdGNCOE1sL2drd0FFamtLNjRLakhQZUFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xIiwiRklET18yXzFfUFJFIl0sImV4dGVuc2lvbnMiOlsiY3JlZEJsb2IiLCJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwibGFyZ2VCbG9iS2V5IiwibWluUGluTGVuZ3RoIl0sImFhZ3VpZCI6IjRjMGNmOTVkMmY0MDQzYjViYTQyNGM4M2ExMWMwNGJhIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJ1diI6ZmFsc2UsInBpblV2QXV0aFRva2VuIjp0cnVlLCJub01jR2FQZXJtaXNzaW9uc1dpdGhDbGllbnRQaW4iOmZhbHNlLCJsYXJnZUJsb2JzIjp0cnVlLCJiaW9FbnJvbGwiOmZhbHNlLCJ1c2VyVmVyaWZpY2F0aW9uTWdtdFByZXZpZXciOmZhbHNlLCJ1dkJpb0Vucm9sbCI6dHJ1ZSwiYXV0aG5yQ2ZnIjp0cnVlLCJ1dkFjZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6dHJ1ZSwiYWx3YXlzVXYiOmZhbHNlfSwibWF4TXNnU2l6ZSI6MjA0OCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMSwyXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0IjoxMCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjo5NiwidHJhbnNwb3J0cyI6WyJ1c2IiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fV0sIm1heFNlcmlhbGl6ZWRMYXJnZUJsb2JBcnJheSI6MTAyNCwibWluUElOTGVuZ3RoIjo0LCJtYXhDcmVkQmxvYkxlbmd0aCI6MzIsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjoyLCJwcmVmZXJyZWRQbGF0Zm9ybVV2QXR0ZW1wdHMiOjUsInV2TW9kYWxpdHkiOjIsInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjoxMjh9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0wOS0yNiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IkJpb1Bhc3MgRklETzIgUHJvIChDb25zdW1lciBQcm9maWxlKSIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjQwOTI2MDA0IiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMDktMjYiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MX1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNC0xMS0yMCJ9LHsiYWFndWlkIjoiNTM0MzUwMmQtNTM0My01MzQzLTYxNzItNjQ0NjQ5NDQ0ZjMyIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI1MzQzNTAyZC01MzQzLTUzNDMtNjE3Mi02NDQ2NDk0NDRmMzIiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiRVNTIFNtYXJ0IENhcmQgSW5jLiBBdXRoZW50aWNhdG9yIn0sImRlc2NyaXB0aW9uIjoiRVNTIFNtYXJ0IENhcmQgSW5jLiBBdXRoZW50aWNhdG9yIiwiYWx0ZXJuYXRpdmVEZXNjcmlwdGlvbnMiOnsiZnItQ0EiOiJTU0UgQ2FydGUgw6AgUHVjZSBJbmMuIEF1dGhlbnRpZmljYXRldXIifSwiYXV0aGVudGljYXRvclZlcnNpb24iOjIsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfSx7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MTAsIm1pbkxlbmd0aCI6NiwibWF4UmV0cmllcyI6MCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjYsIm1heFJldHJpZXMiOjAsImJsb2NrU2xvd2Rvd24iOjB9fV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MjU2LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlTTURDQ0VCaWdBd0lCQWdJV0FLb0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBREFOQmdrcWhraUc5dzBCQVFzRkFEQ0NBalV4RXpBUkJnc3JCZ0VFQVlJM1BBSUJBd3dDUTBFeEdEQVdCZ3NyQmdFRUFZSTNQQUlCQWd3SFVYWERxV0psWXpFYk1Ca0dDeXNHQVFRQmdqYzhBZ0VCREFwVVpYSnlaV0p2Ym01bE1URXdMd1lEVlFRUERDaFR3NmxqZFhKcGRNT3BJRWx1Wm05eWJXRjBhWEYxWlNBdklFTjVZbVZ5SUZObFkzVnlhWFI1TVRzd09RWURWUVFGRERKT1JWRWdNVEUzTXpRNE9EWTBOU0F2SUVOT0lERXdOalEzTnpNdE1DQXZJRUpPSURjMk56TTBPVFk0TVZKRE1EQXdNVEVxTUNnR0NTcUdTSWIzRFFFSkFSWWJhVzVtYjJOaFFITnRZWEowWTJGeVpITmxZM1Z5YVhSNUxtTmhNUm93R0FZRFZRUVhEQkVyTVNBb05EVXdLU0E1TmpRdE5EVXhNVEVhTUJnR0ExVUVGQXdSS3pFZ0tEUTFNQ2tnT1RZMExUYzNOell4RURBT0JnTlZCQkVNQjBvMlZ5QXdRVEl4Q3pBSkJnTlZCQVlUQWtOQk1SQXdEZ1lEVlFRSURBZFJkY09wWW1Wak1STXdFUVlEVlFRSERBcFVaWEp5WldKdmJtNWxNUm93R0FZRFZRUUpEQkV4TVRjNUlHUmxJR3duWlhod2NtVnpjekV5TURBR0ExVUVDd3dwUVhWMGIzSnBkTU9wSUdSbElGQnZiR2wwYVhGMVpTQXZJRkJ2YkdsamVTQkJkWFJvYjNKcGRIa3hOVEF6QmdOVkJBb01MRk5UUlNCRFlYSjBaU0REb0NCUWRXTmxJRWx1WXk0Z0x5QkZVMU1nVTIxaGNuUWdRMkZ5WkNCSmJtTXVNVVl3UkFZRFZRUURERDFUUTFBZ1FYVjBiM0pwZE1PcElHUmxJRkJ2YkdsMGFYRjFaU0F2SUZORFV5QkRaWEowYVdacFkyRjBaU0JRYjJ4cFkza2dRWFYwYUc5eWFYUjVNQjRYRFRFNE1EVXpNREUxTXpFMU4xb1hEVE00TURVek1ERTFNekUxTjFvd2dnSW1NUk13RVFZTEt3WUJCQUdDTnp3Q0FRTU1Ba05CTVJnd0ZnWUxLd1lCQkFHQ056d0NBUUlNQjFGMXc2bGlaV014R3pBWkJnc3JCZ0VFQVlJM1BBSUJBUXdLVkdWeWNtVmliMjV1WlRFeE1DOEdBMVVFRHd3b1U4T3BZM1Z5YVhURHFTQkpibVp2Y20xaGRHbHhkV1VnTHlCRGVXSmxjaUJUWldOMWNtbDBlVEU3TURrR0ExVUVCUXd5VGtWUklERXhOek0wT0RnMk5EVWdMeUJEVGlBeE1EWTBOemN6TFRBZ0x5QkNUaUEzTmpjek5EazJPREZTUXpBd01ERXhLakFvQmdrcWhraUc5dzBCQ1FFV0cybHVabTlqWVVCemJXRnlkR05oY21SelpXTjFjbWwwZVM1allURWFNQmdHQTFVRUZ3d1JLekVnS0RRMU1Da2dPVFkwTFRRMU1URXhHakFZQmdOVkJCUU1FU3N4SUNnME5UQXBJRGsyTkMwM056YzJNUkF3RGdZRFZRUVJEQWRLTmxjZ01FRXlNUXN3Q1FZRFZRUUdFd0pEUVRFUU1BNEdBMVVFQ0F3SFVYWERxV0psWXpFVE1CRUdBMVVFQnd3S1ZHVnljbVZpYjI1dVpURWFNQmdHQTFVRUNRd1JNVEUzT1NCa1pTQnNKMlY0Y0hKbGMzTXhNVEF2QmdOVkJBc01LRlpoYkdsa1lYUnBiMjRndzRsMFpXNWtkU0F2SUVWNGRHVnVaR1ZrSUZaaGJHbGtZWFJwYjI0eE5UQXpCZ05WQkFvTUxGTlRSU0JEWVhKMFpTRERvQ0JRZFdObElFbHVZeTRnTHlCRlUxTWdVMjFoY25RZ1EyRnlaQ0JKYm1NdU1UZ3dOZ1lEVlFRRERDOVRRMUFnVm1Gc2FXUmhkR2x2YmlCRmRHVnVaSFVnTHlCVFExTWdSWGgwWlc1a1pXUWdWbUZzYVdSaGRHbHZiakNDQWlBd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dJTkFEQ0NBZ2dDZ2dJQkFMU0NZdkh4YTZod2FDaXNTcHF6UzllWWRjWjhoeldyeitMN1VWV21wdjJGTjdpeTI4RTV3VmZxckQ5eTJZL2w5TGtRd29TSmUyeDJvQ0lVcDZrM1BLaEg0T1p4aEIyWDU2OGx1SXhQZzY4VUt2QWVZc3pmaEZXbTJFRlNlaDMxdjhzcW85V2VCemIwUmVzem04NlJqSkxGY0NDa2FhVlVWOHBERkMwKzFkR0NsS2JRWHIvZGpBNFZ2SXRYTnp2T1VuTWk1VTFsVUhsNEUvRmlacGNlOHA3bzdEYk54NHdpRW84bGtPNDVKRkxiZklvN1J0K2w4YTA0SVYrc01Ja2JlWU1QVzhxdExMUmhpWDU2c21wVHdrZkpUbGlkVDlER1pvWG5ZQ25RTDJXd3NXQnNzZGlpYnlKSlFYL2ZUSWJHNzY0VmpqZks3ZW84QUpJc2dHSm9LS2YxcCtKL2RFeVpYUUxmS2tWajZiRStnR2c2UUE3a1pSeklGbkcrTlI1SnNZcXFKMlNQMjl5UlMvRVBxcVBjYWtGY095aDZ3dC9wckVHa2NHS2RCN1RYMTZWOWphRFlkdlpyLzVIUW1iUlZ0YVk4WWJIQUFrRXV3NUFFOHhWbHIvdnZkeHpCOHNKNDFjYVBrTDBKcTJYWEk0OXZ5RWV3NjFoV1ZTWmdXUGl5VGtZN1h6NDM3MmVuTzErUjZPZnBJTjh5bXRVek4wUDlsZlYyMG1SaElWUUU1OWQ2dWJnU2ZPTEw3eUFTa3k2Q3UvZGlRUWFBdWx1alFHWTh2b0RQeXJPa0ttays3Mm95K1lyaXE3aUtVc3RacmdwLy8yMmg4SW9hOEdhWE40TDUrN09oY0wrU3hjY1BsbStpSVRZQmtuME1UR1U4R1B6ZVR2VE1hSlRUaldXakFnRWxvNElKUVRDQ0NUMHdIUVlEVlIwT0JCWUVGTXBaUFhWR05ReWpQV3pNV1R0ZnZ6YlBJRzV4TUI4R0ExVWRJd1FZTUJhQUZOcHlQbWlETkFkcUFaSFNwYTgrSEUyaTRmNU9NQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdDd1lEVlIwUEJBUURBZ0hHTUlJQ21BWURWUjBsQklJQ2p6Q0NBb3NHQ0NzR0FRVUZCd01CQmdnckJnRUZCUWNEQWdZSUt3WUJCUVVIQXdRR0Npc0dBUVFCZ2pjS0F3UUdDaXNHQVFRQmdqZERBUUVHQ2lzR0FRUUJnamREQVFJR0NTc0dBUVFCZ2pkUUFRWUlLd1lCQlFVSEF3TUdDaXNHQVFRQmdqYzlBUUVHQ2lzR0FRUUJnamNLQXcwR0Npc0dBUVFCZ2pjVUFnRUdDQ3NHQVFVRkJ3TUhCZ2dyQmdFRkJRY0RCZ1lJS3dZQkJRVUlBZ0lHQnlzR0FRVUNBd1VHQnlzR0FRVUNBd1FHQ1NzR0FRUUJnamNWRXdZS0t3WUJCQUdDTndvRERBWUlLd1lCQlFVSEF3a0dCMkI4aHZkb0FnUUdCMkI4aHZkb0FnVUdCMkI4aHZkb0FnY0dCMkI4aHZkb0FnZ0dCMkI4aHZkb0Fna0dCMkI4aHZkb0Fnb0dCMkI4aHZkb0Fnc0dCMkI4aHZkb0Fnd0dCMkI4aHZkb0FnMEdCMkI4aHZkb0FnNEdCMkI4aHZkb0FnOEdCMkI4aHZkb0FoQUdCMkI4aHZkb0FoRUdCMkI4aHZkb0FoSUdCMkI4aHZkb0FoTUdCMkI4aHZkb0FoUUdCMkI4aHZkb0FoVUdCMkI4aHZkb0FoWUdCMkI4aHZkb0FoY0dCMkI4aHZkb0FoZ0dCMkI4aHZkb0Foa0dCMkI4aHZkb0Fob0dCMkI4aHZkb0JRRUdDR0I4aHZkb0JRRUJCZ2hnZkliM2FBVUJBZ1lJWUh5RzkyZ0ZBUU1HQ0dCOGh2ZG9CUUVFQmdoZ2ZJYjNhQVVCQlFZSVlIeUc5MmdGQVFZR0NHQjhodmRvQlFFSEJnaGdmSWIzYUFVQkNBWUlZSHlHOTJnRkFRa0dDR0I4aHZkb0JRRUtCZ2hnZkliM2FBVUJDd1lJWUh5RzkyZ0ZBUXdHQ0dCOGh2ZG9CUUVOQmdoZ2ZJYjNhQVVCRGdZSVlIeUc5MmdGQVE4R0NHQjhodmRvQlFFUUJnaGdmSWIzYUFVQkVRWUlZSHlHOTJnRkFSSUdDR0I4aHZkb0JRRVRCZ2hnZkliM2FBVUJGQVlJWUh5RzkyZ0ZBUlVHQ0dCOGh2ZG9CUUVXQmdoZ2ZJYjNhQVVCRndZSVlIeUc5MmdGQVJnd09nWURWUjBmQkRNd01UQXZvQzJnSzRZcGFIUjBjRG92TDJOaExuTnRZWEowWTJGeVpITmxZM1Z5YVhSNUxtTmhMM0J2YkhOamN5NWpjbXd3ZFFZSUt3WUJCUVVIQVFFRWFUQm5NQ3dHQ0NzR0FRVUZCekFCaGlCb2RIUndPaTh2YjJOemNDNXpiV0Z5ZEdOaGNtUnpaV04xY21sMGVTNWpZVEEzQmdnckJnRUZCUWN3QW9ZcmFIUjBjRG92TDJOaExuTnRZWEowWTJGeVpITmxZM1Z5YVhSNUxtTmhMMUJ2YkZOamMwTmhMbU55ZERBcUJnTlZIUkVFSXpBaGhoOW9kSFJ3T2k4dlpYWXVjMjFoY25SallYSmtjMlZqZFhKcGRIa3VZMkV2TUlJRllBWURWUjBnQklJRlZ6Q0NCVk13UWdZSFlIeUc5MmdCQXpBM01EVUdDQ3NHQVFVRkJ3SUJGaWxvZEhSd2N6b3ZMMk5oTG5OdFlYSjBZMkZ5WkhObFkzVnlhWFI1TG1OaEwyTndjeTl6WTNObGRqQUtCZ2hnZkliM2FBRURBVEFMQmdsZ2ZJYjNhQUVEQVFFd0N3WUpZSHlHOTJnQkF3RUNNQXNHQ1dCOGh2ZG9BUU1CQXpBTEJnbGdmSWIzYUFFREFRUXdDd1lKWUh5RzkyZ0JBd0VGTUFzR0NXQjhodmRvQVFNQkJqQUxCZ2xnZkliM2FBRURBUWN3Q3dZSllIeUc5MmdCQXdFSU1Bc0dDV0I4aHZkb0FRTUJDVEFMQmdsZ2ZJYjNhQUVEQVFvd0N3WUpZSHlHOTJnQkF3RUxNQXNHQ1dCOGh2ZG9BUU1CRERBTEJnbGdmSWIzYUFFREFRMHdDd1lKWUh5RzkyZ0JBd0VPTUFzR0NXQjhodmRvQVFNQkR6QUxCZ2xnZkliM2FBRURBUkF3Q3dZSllIeUc5MmdCQXdFUk1Bc0dDV0I4aHZkb0FRTUJFakFLQmdoZ2ZJYjNhQUVEQWpBTEJnbGdmSWIzYUFFREFnRXdDd1lKWUh5RzkyZ0JBd0lDTUFzR0NXQjhodmRvQVFNQ0F6QUxCZ2xnZkliM2FBRURBZ1F3Q3dZSllIeUc5MmdCQXdJRk1Bc0dDV0I4aHZkb0FRTUNCakFMQmdsZ2ZJYjNhQUVEQWdjd0N3WUpZSHlHOTJnQkF3SUlNQXNHQ1dCOGh2ZG9BUU1DQ1RBTEJnbGdmSWIzYUFFREFnb3dDd1lKWUh5RzkyZ0JBd0lMTUFzR0NXQjhodmRvQVFNQ0REQUxCZ2xnZkliM2FBRURBZzB3Q1FZSFlIeUc5MmdCQlRBS0JnaGdmSWIzYUFFRkFUQUtCZ2hnZkliM2FBRUZBakFLQmdoZ2ZJYjNhQUVGQXpBS0JnaGdmSWIzYUFFRkJEQUtCZ2hnZkliM2FBRUZCVEFLQmdoZ2ZJYjNhQUVGQmpBS0JnaGdmSWIzYUFFRkJ6QUtCZ2hnZkliM2FBRUZDREFLQmdoZ2ZJYjNhQUVGQ1RBS0JnaGdmSWIzYUFFRkNqQUtCZ2hnZkliM2FBRUZDekFLQmdoZ2ZJYjNhQUVGRERBS0JnaGdmSWIzYUFFRkRUQUtCZ2hnZkliM2FBRUZEakFLQmdoZ2ZJYjNhQUVGRHpBS0JnaGdmSWIzYUFFRkVEQUtCZ2hnZkliM2FBRUZFVEFLQmdoZ2ZJYjNhQUVGRWpBS0JnaGdmSWIzYUFFRkV6QUtCZ2hnZkliM2FBRUZGREFLQmdoZ2ZJYjNhQUVGRlRBS0JnaGdmSWIzYUFFRkZqQUtCZ2hnZkliM2FBRUZGekFLQmdoZ2ZJYjNhQUVGR0RBS0JnaGdmSWIzYUFFRkdUQUtCZ2hnZkliM2FBRUZHakFLQmdoZ2ZJYjNhQUVGR3pBS0JnaGdmSWIzYUFFRkhEQUtCZ2hnZkliM2FBRUZIVEFLQmdoZ2ZJYjNhQUVGSGpBSkJnZGdmSWIzYUFFQ01Bb0dDR0I4aHZkb0FRSUJNQW9HQ0dCOGh2ZG9BUUlDTUFvR0NHQjhodmRvQVFJRE1Bb0dDR0I4aHZkb0FRSUVNQW9HQ0dCOGh2ZG9BUUlGTUFvR0NHQjhodmRvQVFJR01Bb0dDR0I4aHZkb0FRSUhNQW9HQ0dCOGh2ZG9BUUlJTUFvR0NHQjhodmRvQVFJSk1Bb0dDR0I4aHZkb0FRSUtNQW9HQ0dCOGh2ZG9BUUlMTUFvR0NHQjhodmRvQVFJTU1Bb0dDR0I4aHZkb0FRSU5NQW9HQ0dCOGh2ZG9BUUlPTUFvR0NHQjhodmRvQVFJUE1Bb0dDR0I4aHZkb0FRSVFNQW9HQ0dCOGh2ZG9BUUlSTUFvR0NHQjhodmRvQVFJU01Bb0dDR0I4aHZkb0FRSVRNQW9HQ0dCOGh2ZG9BUUlVTUFvR0NHQjhodmRvQVFJVk1Bb0dDR0I4aHZkb0FRSVdNQW9HQ0dCOGh2ZG9BUUlYTUFvR0NHQjhodmRvQVFJWU1Bb0dDR0I4aHZkb0FRSVpNQW9HQ0dCOGh2ZG9BUUlhTUFvR0NHQjhodmRvQVFJYk1Bb0dDR0I4aHZkb0FRSWNNQW9HQ0dCOGh2ZG9BUUlkTUFvR0NHQjhodmRvQVFJZU1Bb0dDR0I4aHZkb0FRSWZNQW9HQ0dCOGh2ZG9BUUlnTUFvR0NHQjhodmRvQVFJaE1Bb0dDR0I4aHZkb0FRSWlNQW9HQ0dCOGh2ZG9BUUlqTUFjR0JXZUJEQUVCTUFjR0JXZUJEQUVDTUFnR0JtZUJEQUVDQVRBSUJnWm5nUXdCQWdJd0NBWUdaNEVNQVFJRE1BY0dCV2VCREFFRE1BY0dCV2VCREFFZk1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQ0FRQ0I2SDg2SXlWN2tUR2RaaC9udWk4d3dHY0RYVFVUckFzdWNPM3IwQ2tudTRyMXB6YUtOS215NjNFdjNQdmcwdlBFd2ZtTkFBUVZkU2JnR3ROMEwrRlpaS0JLQWREVmEwSXZLaVIvOTltdHZySXNqUlhtWXVHZ1JUaW1TZWFzM2huR2k4N2tHTmkzeFlRVStselpUSFlrRzE2QXU0dFZhMmZjNTVLcVhPMlFCNko1VVZPQjVrMzdqcGZMVnRIMDVYSXJZNmlrNlM4TjZTbzBSb05kUmZpSG52RklJV3ZvR2t4UE9NcUpQc3ZkbHArLytzUXZlY2U4KzdQS0MrV0FDQjIvYlBaR0wzQnRRSmxoUGI1Z210NUh5SjZoNGExeWEyK2JWZnZIak02UjZraFlodklhTmZtY2tQeTd2S0M5SjZsTUVxZEQ3OVdkZGZ2OWpSYmtyY0k1bHZ6UERCWFdXVTF3WWgyQnlmeTVBTXV0WDgvaXNIZHRiSkNiVjBRak9yWVdnWTBwYWtqOTBkUlQ1QXUzdStvQXJtMWZld2lBbnU3TzlIV2h4WmRqTDVwWmVuOStyRXc4OGM2cUNDZDZialIzK1Zwc2F1K0RsWXhjZXJFTzI2ZVpvUFNRTi9KZk02czZBWGtMT0dMdkxxanpmYy85bzE2d1ZiUUxWb2F3MzdsV3FrK3lueXdRa3E4TmR5T0NldDd4Ymw5S0xzOHg2ejMwdWxydTl6SkdTK215R01yS0R0Zm1DdG96L2l3TmRKdWFzTkdUaStsOHdWcDg4bm1GOEdZQThMVXd0bU9La2E1VnFLOFlaS3pvMXZvRityRDhHTVFhdE5JTjh2eDhKMGNmTlRVbWh2Q0QrdXhlVm1jS3ZIcHEzQ09wdFU2cFU3dWJsZURueUxmRDl3PT0iLCJNSUlWcmpDQ0U1YWdBd0lCQWdJV0FNb0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBVEFOQmdrcWhraUc5dzBCQVFzRkFEQ0NBakF4T3pBNUJnTlZCQVVNTWs1RlVTQXhNVGN6TkRnNE5qUTFJQzhnUTA0Z01UQTJORGMzTXkwd0lDOGdRazRnTnpZM016UTVOamd4VWtNd01EQXhNUk13RVFZTEt3WUJCQUdDTnp3Q0FRTU1Ba05CTVJnd0ZnWUxLd1lCQkFHQ056d0NBUUlNQjFGMXc2bGlaV014R3pBWkJnc3JCZ0VFQVlJM1BBSUJBUXdLVkdWeWNtVmliMjV1WlRFeE1DOEdBMVVFRHd3b1U4T3BZM1Z5YVhURHFTQkpibVp2Y20xaGRHbHhkV1VnTHlCRGVXSmxjaUJUWldOMWNtbDBlVEVxTUNnR0NTcUdTSWIzRFFFSkFSWWJhVzVtYjJOaFFITnRZWEowWTJGeVpITmxZM1Z5YVhSNUxtTmhNUm93R0FZRFZRUVhEQkVyTVNBb05EVXdLU0E1TmpRdE5EVXhNVEVhTUJnR0ExVUVGQXdSS3pFZ0tEUTFNQ2tnT1RZMExUYzNOell4RURBT0JnTlZCQkVNQjBvMlZ5QXdRVEl4Q3pBSkJnTlZCQVlUQWtOQk1SQXdEZ1lEVlFRSURBZFJkY09wWW1Wak1STXdFUVlEVlFRSERBcFVaWEp5WldKdmJtNWxNUm93R0FZRFZRUUpEQkV4TVRjNUlHUmxJR3duWlhod2NtVnpjekVyTUNrR0ExVUVDd3dpUVhWMGFHOXlhWFREcVNCU1lXTnBibVVnTHlCU2IyOTBJRUYxZEdodmNtbDBlVEUxTURNR0ExVUVDZ3dzVTFORklFTmhjblJsSU1PZ0lGQjFZMlVnU1c1akxpQXZJRVZUVXlCVGJXRnlkQ0JEWVhKa0lFbHVZeTR4U0RCR0JnTlZCQU1NUDFObFkzVnlhWFREcVNCRFlYSjBaU0REb0NCUWRXTmxJQ2hUUTFBcElFRkRJQzhnVTIxaGNuUWdRMkZ5WkNCVFpXTjFjbWwwZVNBb1UwTlRLU0JEUVRBZUZ3MHhPREExTXpBeE5URTVNRFJhRncwME9EQTFNamd4TlRFNU1EUmFNSUlDTlRFVE1CRUdDeXNHQVFRQmdqYzhBZ0VEREFKRFFURVlNQllHQ3lzR0FRUUJnamM4QWdFQ0RBZFJkY09wWW1Wak1Sc3dHUVlMS3dZQkJBR0NOendDQVFFTUNsUmxjbkpsWW05dWJtVXhNVEF2QmdOVkJBOE1LRlBEcVdOMWNtbDB3NmtnU1c1bWIzSnRZWFJwY1hWbElDOGdRM2xpWlhJZ1UyVmpkWEpwZEhreE96QTVCZ05WQkFVTU1rNUZVU0F4TVRjek5EZzROalExSUM4Z1EwNGdNVEEyTkRjM015MHdJQzhnUWs0Z056WTNNelE1TmpneFVrTXdNREF4TVNvd0tBWUpLb1pJaHZjTkFRa0JGaHRwYm1adlkyRkFjMjFoY25SallYSmtjMlZqZFhKcGRIa3VZMkV4R2pBWUJnTlZCQmNNRVNzeElDZzBOVEFwSURrMk5DMDBOVEV4TVJvd0dBWURWUVFVREJFck1TQW9ORFV3S1NBNU5qUXROemMzTmpFUU1BNEdBMVVFRVF3SFNqWlhJREJCTWpFTE1Ba0dBMVVFQmhNQ1EwRXhFREFPQmdOVkJBZ01CMUYxdzZsaVpXTXhFekFSQmdOVkJBY01DbFJsY25KbFltOXVibVV4R2pBWUJnTlZCQWtNRVRFeE56a2daR1VnYkNkbGVIQnlaWE56TVRJd01BWURWUVFMRENsQmRYUnZjbWwwdzZrZ1pHVWdVRzlzYVhScGNYVmxJQzhnVUc5c2FXTjVJRUYxZEdodmNtbDBlVEUxTURNR0ExVUVDZ3dzVTFORklFTmhjblJsSU1PZ0lGQjFZMlVnU1c1akxpQXZJRVZUVXlCVGJXRnlkQ0JEWVhKa0lFbHVZeTR4UmpCRUJnTlZCQU1NUFZORFVDQkJkWFJ2Y21sMHc2a2daR1VnVUc5c2FYUnBjWFZsSUM4Z1UwTlRJRU5sY25ScFptbGpZWFJsSUZCdmJHbGplU0JCZFhSb2IzSnBkSGt3Z2dJZ01BMEdDU3FHU0liM0RRRUJBUVVBQTRJQ0RRQXdnZ0lJQW9JQ0FRRGEyQXlwVXNEbTZ6dmdLc29PcnJ1NFdlQW5PWFNod0kxVDBUaVFac3ZKOTB1d1Y1TURXY2FNZjBEWnlsMk9LaU4rTG16UElDYlh3NFRDckpwaEpYbmR5UEYwOUUzSDFRQzJwR043MUJOcHhvRGVCcWtYMVlJVzRQSGhZOXFoalJLZ3BsYkpUS2NIZlFBMUNqVlR6WDVyYUFtbkxBSjhpdW83SFY3WmJwbEZnN1YzY1dPSmJjM3A1RkZpeGVTSTV4QUNMc0pRSUFpdE5QMzBGaHB4NGJ4eENZOW8xWlFPL0hVMzN6N1piQ3UxUXcwaWFYWUlyMFZXR3U1ZUN6c2d6bDU2YndEdVBQN05mMThtSkVhVjAzOWVXdTQ5U2pkWDZoWWtRRlQrd1FCWVV4T1BVbzhoN3h4WEdaYndNblRNVXlRd1c2dXliVUI4R3d0ak1JVm9EVDlZNjg4U0gzZmQ3cURvWXV1VGh3OURjSEZqaFpIaG5tRjB6UmpRby9GWmFzMDdta1E5WElkUmpXdFdQZHFTRldzZGo4K2JTcWQ2bG9IWmxzVlBweHlDUldMZWdhV0RpNitLU3J4Z3VRWGd4M2lwODViVGR5Q0lDT2JXYTg4QzhDcUdxc1VCVG5qbXlHOTFGRmVGaDRlRGcyQ0pYem5WZHNIU2ZlS1VWR0Y5SEZXbjN4NVFvRDIrTmVWRmdIcWpPbVBJeXhCSkw1VnQ4QVZRMHZvZDkyM1B4YXltT2xVVWtyQmhsSlhFL1YzVHdES2U2Tjg4eWpHVWZ0RmM3Z0R2aHU4aUprQVVENWlkVFR0Y1Z4cjFFMFRnZGJQYXFqM09Mc2g2V0hmWjZ1ZDJLYjF2cWhzUVY2WDZReGZsZHVXNjN5Z0ZuYmh0d0RkTGxRc0tERHJXQjQyUHh3SUJKYU9DRExVd2dneXhNQjBHQTFVZERnUVdCQlRhY2o1b2d6UUhhZ0dSMHFXdlBoeE5vdUgrVGpBZkJnTlZIU01FR0RBV2dCUWtZR29IY3lSVmRUczIrblJaazFYSnNnQW1PakFQQmdOVkhSTUJBZjhFQlRBREFRSC9NQTRHQTFVZER3RUIvd1FFQXdJQmhqQTVCZ05WSFI4RU1qQXdNQzZnTEtBcWhpaG9kSFJ3T2k4dlkyRXVjMjFoY25SallYSmtjMlZqZFhKcGRIa3VZMkV2WTJGelkzTXVZM0pzTUhJR0NDc0dBUVVGQndFQkJHWXdaREFzQmdnckJnRUZCUWN3QVlZZ2FIUjBjRG92TDI5amMzQXVjMjFoY25SallYSmtjMlZqZFhKcGRIa3VZMkV3TkFZSUt3WUJCUVVITUFLR0tHaDBkSEE2THk5allTNXpiV0Z5ZEdOaGNtUnpaV04xY21sMGVTNWpZUzlqWVhOamN5NWpjblF3S2dZRFZSMFJCQ013SVlZZmFIUjBjRG92TDJOaExuTnRZWEowWTJGeVpITmxZM1Z5YVhSNUxtTmhMekNDQzNFR0ExVWRJQVNDQzJnd2dndGtNRHNHQm1COGh2ZG9BVEF4TUM4R0NDc0dBUVVGQndJQkZpTm9kSFJ3Y3pvdkwyTmhMbk50WVhKMFkyRnlaSE5sWTNWeWFYUjVMbU5oTDJOd2N6QUlCZ1pnZkliM2FBSXdDQVlHWUh5RzkyZ0RNQWdHQm1COGh2ZG9CREFJQmdaZ2ZJYjNhQVV3Q0FZR1lIeUc5MmdHTUFnR0JtQjhodmRvQnpBSUJnWmdmSWIzYUFnd0NBWUdZSHlHOTJnSk1BZ0dCbUI4aHZkb0NqQUlCZ1pnZkliM2FBc3dDQVlHWUh5RzkyZ01NQWdHQm1COGh2ZG9EVEFJQmdaZ2ZJYjNhQTR3Q0FZR1lIeUc5MmdQTUFnR0JtQjhodmRvRURBSkJnZGdmSWIzYUFFSk1Ba0dCMkI4aHZkb0FRb3dDUVlIWUh5RzkyZ0JDekFKQmdkZ2ZJYjNhQUVNTUFrR0IyQjhodmRvQVEwd0NRWUhZSHlHOTJnQkRqQUpCZ2RnZkliM2FBRVBNQWtHQjJCOGh2ZG9BUkF3Q1FZSFlIeUc5MmdCRVRBSkJnZGdmSWIzYUFFU01Ba0dCMkI4aHZkb0FRRXdDZ1lJWUh5RzkyZ0JBUUV3Q2dZSVlIeUc5MmdCQVFJd0NnWUlZSHlHOTJnQkFRTXdDZ1lJWUh5RzkyZ0JBUVF3Q2dZSVlIeUc5MmdCQVFVd0NnWUlZSHlHOTJnQkFRWXdDZ1lJWUh5RzkyZ0JBUWN3Q2dZSVlIeUc5MmdCQVFnd0NnWUlZSHlHOTJnQkFRa3dDZ1lJWUh5RzkyZ0JBUW93Q2dZSVlIeUc5MmdCQVFzd0NnWUlZSHlHOTJnQkFRd3dDZ1lJWUh5RzkyZ0JBUTB3Q2dZSVlIeUc5MmdCQVE0d0NnWUlZSHlHOTJnQkFROHdDZ1lJWUh5RzkyZ0JBUkF3Q2dZSVlIeUc5MmdCQVJFd0NnWUlZSHlHOTJnQkFSSXdDZ1lJWUh5RzkyZ0JBUk13Q2dZSVlIeUc5MmdCQVJRd0NnWUlZSHlHOTJnQkFSVXdDZ1lJWUh5RzkyZ0JBUll3Q1FZSFlIeUc5MmdCQlRBS0JnaGdmSWIzYUFFRkFUQUtCZ2hnZkliM2FBRUZBakFLQmdoZ2ZJYjNhQUVGQXpBS0JnaGdmSWIzYUFFRkJEQUtCZ2hnZkliM2FBRUZCVEFLQmdoZ2ZJYjNhQUVGQmpBS0JnaGdmSWIzYUFFRkJ6QUtCZ2hnZkliM2FBRUZDREFLQmdoZ2ZJYjNhQUVGQ1RBS0JnaGdmSWIzYUFFRkNqQUtCZ2hnZkliM2FBRUZDekFLQmdoZ2ZJYjNhQUVGRERBS0JnaGdmSWIzYUFFRkRUQUtCZ2hnZkliM2FBRUZEakFLQmdoZ2ZJYjNhQUVGRHpBS0JnaGdmSWIzYUFFRkVEQUtCZ2hnZkliM2FBRUZFVEFLQmdoZ2ZJYjNhQUVGRWpBS0JnaGdmSWIzYUFFRkV6QUtCZ2hnZkliM2FBRUZGREFLQmdoZ2ZJYjNhQUVGRlRBS0JnaGdmSWIzYUFFRkZqQUtCZ2hnZkliM2FBRUZGekFLQmdoZ2ZJYjNhQUVGR0RBS0JnaGdmSWIzYUFFRkdUQUtCZ2hnZkliM2FBRUZHakFLQmdoZ2ZJYjNhQUVGR3pBS0JnaGdmSWIzYUFFRkhEQUtCZ2hnZkliM2FBRUZIVEFLQmdoZ2ZJYjNhQUVGSGpBSkJnZGdmSWIzYUFFQ01Bb0dDR0I4aHZkb0FRSUJNQW9HQ0dCOGh2ZG9BUUlDTUFvR0NHQjhodmRvQVFJRE1Bb0dDR0I4aHZkb0FRSUVNQW9HQ0dCOGh2ZG9BUUlGTUFvR0NHQjhodmRvQVFJR01Bb0dDR0I4aHZkb0FRSUhNQW9HQ0dCOGh2ZG9BUUlJTUFvR0NHQjhodmRvQVFJSk1Bb0dDR0I4aHZkb0FRSUtNQW9HQ0dCOGh2ZG9BUUlMTUFvR0NHQjhodmRvQVFJTU1Bb0dDR0I4aHZkb0FRSU5NQW9HQ0dCOGh2ZG9BUUlPTUFvR0NHQjhodmRvQVFJUE1Bb0dDR0I4aHZkb0FRSVFNQW9HQ0dCOGh2ZG9BUUlSTUFvR0NHQjhodmRvQVFJU01Bb0dDR0I4aHZkb0FRSVRNQW9HQ0dCOGh2ZG9BUUlVTUFvR0NHQjhodmRvQVFJVk1Bb0dDR0I4aHZkb0FRSVdNQW9HQ0dCOGh2ZG9BUUlYTUFvR0NHQjhodmRvQVFJWU1Bb0dDR0I4aHZkb0FRSVpNQW9HQ0dCOGh2ZG9BUUlhTUFvR0NHQjhodmRvQVFJYk1Bb0dDR0I4aHZkb0FRSWNNQW9HQ0dCOGh2ZG9BUUlkTUFvR0NHQjhodmRvQVFJZU1Bb0dDR0I4aHZkb0FRSWZNQW9HQ0dCOGh2ZG9BUUlnTUFvR0NHQjhodmRvQVFJaE1Bb0dDR0I4aHZkb0FRSWlNQW9HQ0dCOGh2ZG9BUUlqTUFrR0IyQjhodmRvQVFNd0NnWUlZSHlHOTJnQkF3RXdDd1lKWUh5RzkyZ0JBd0VCTUFzR0NXQjhodmRvQVFNQkFqQUxCZ2xnZkliM2FBRURBUU13Q3dZSllIeUc5MmdCQXdFRU1Bc0dDV0I4aHZkb0FRTUJCVEFMQmdsZ2ZJYjNhQUVEQVFZd0N3WUpZSHlHOTJnQkF3RUhNQXNHQ1dCOGh2ZG9BUU1CQ0RBTEJnbGdmSWIzYUFFREFRa3dDd1lKWUh5RzkyZ0JBd0VLTUFzR0NXQjhodmRvQVFNQkN6QUxCZ2xnZkliM2FBRURBUXd3Q3dZSllIeUc5MmdCQXdFTk1Bc0dDV0I4aHZkb0FRTUJEakFMQmdsZ2ZJYjNhQUVEQVE4d0N3WUpZSHlHOTJnQkF3RVFNQXNHQ1dCOGh2ZG9BUU1CRVRBTEJnbGdmSWIzYUFFREFSSXdDZ1lJWUh5RzkyZ0JBd0l3Q3dZSllIeUc5MmdCQXdJQk1Bc0dDV0I4aHZkb0FRTUNBakFMQmdsZ2ZJYjNhQUVEQWdNd0N3WUpZSHlHOTJnQkF3SUVNQXNHQ1dCOGh2ZG9BUU1DQlRBTEJnbGdmSWIzYUFFREFnWXdDd1lKWUh5RzkyZ0JBd0lITUFzR0NXQjhodmRvQVFNQ0NEQUxCZ2xnZkliM2FBRURBZ2t3Q3dZSllIeUc5MmdCQXdJS01Bc0dDV0I4aHZkb0FRTUNDekFMQmdsZ2ZJYjNhQUVEQWd3d0N3WUpZSHlHOTJnQkF3SU5NQWtHQjJCOGh2ZG9BUVF3Q2dZSVlIeUc5MmdCQkFFd0N3WUpZSHlHOTJnQkJBRUJNQXNHQ1dCOGh2ZG9BUVFCQWpBTEJnbGdmSWIzYUFFRUFRTXdDd1lKWUh5RzkyZ0JCQUVFTUFzR0NXQjhodmRvQVFRQkJUQUxCZ2xnZkliM2FBRUVBUVl3Q3dZSllIeUc5MmdCQkFFSE1Bc0dDV0I4aHZkb0FRUUJDREFMQmdsZ2ZJYjNhQUVFQVFrd0N3WUpZSHlHOTJnQkJBRUtNQXNHQ1dCOGh2ZG9BUVFCQ3pBTEJnbGdmSWIzYUFFRUFRd3dDd1lKWUh5RzkyZ0JCQUVOTUFzR0NXQjhodmRvQVFRQkRqQUxCZ2xnZkliM2FBRUVBUTh3Q3dZSllIeUc5MmdCQkFFUU1Bc0dDV0I4aHZkb0FRUUJFVEFMQmdsZ2ZJYjNhQUVFQVJJd0N3WUpZSHlHOTJnQkJBRVRNQW9HQ0dCOGh2ZG9BUVFDTUFzR0NXQjhodmRvQVFRQ0FUQUxCZ2xnZkliM2FBRUVBZ0l3Q3dZSllIeUc5MmdCQkFJRE1Bc0dDV0I4aHZkb0FRUUNCREFMQmdsZ2ZJYjNhQUVFQWdVd0N3WUpZSHlHOTJnQkJBSUdNQXNHQ1dCOGh2ZG9BUVFDQnpBTEJnbGdmSWIzYUFFRUFnZ3dDd1lKWUh5RzkyZ0JCQUlKTUFzR0NXQjhodmRvQVFRQ0NqQUxCZ2xnZkliM2FBRUVBZ3N3Q3dZSllIeUc5MmdCQkFJTU1Bc0dDV0I4aHZkb0FRUUNEVEFMQmdsZ2ZJYjNhQUVFQWc0d0NnWUlZSHlHOTJnQkJBTXdDd1lKWUh5RzkyZ0JCQU1CTUFzR0NXQjhodmRvQVFRREFqQUxCZ2xnZkliM2FBRUVBd013Q3dZSllIeUc5MmdCQkFNRU1Bc0dDV0I4aHZkb0FRUURCVEFMQmdsZ2ZJYjNhQUVFQXdZd0N3WUpZSHlHOTJnQkJBTUhNQXNHQ1dCOGh2ZG9BUVFEQ0RBTEJnbGdmSWIzYUFFRUF3a3dDd1lKWUh5RzkyZ0JCQU1LTUFzR0NXQjhodmRvQVFRREN6QUxCZ2xnZkliM2FBRUVBd3d3Q3dZSllIeUc5MmdCQkFNTk1Ba0dCMkI4aHZkb0FRWXdDZ1lJWUh5RzkyZ0JCZ0V3Q2dZSVlIeUc5MmdCQmdJd0NnWUlZSHlHOTJnQkJnTXdDZ1lJWUh5RzkyZ0JCZ1F3Q2dZSVlIeUc5MmdCQmdVd0NnWUlZSHlHOTJnQkJnWXdDZ1lJWUh5RzkyZ0JCZ2N3Q1FZSFlIeUc5MmdCQnpBS0JnaGdmSWIzYUFFSEFUQUtCZ2hnZkliM2FBRUhBakFLQmdoZ2ZJYjNhQUVIQXpBS0JnaGdmSWIzYUFFSEJEQUtCZ2hnZkliM2FBRUhCVEFLQmdoZ2ZJYjNhQUVIQmpBS0JnaGdmSWIzYUFFSEJ6QUtCZ2hnZkliM2FBRUhDREFLQmdoZ2ZJYjNhQUVIQ1RBS0JnaGdmSWIzYUFFSENqQUpCZ2RnZkliM2FBRUlNQW9HQ0dCOGh2ZG9BUWdCTUFvR0NHQjhodmRvQVFnQ01Bb0dDR0I4aHZkb0FRZ0RNQW9HQ0dCOGh2ZG9BUWdFTUFvR0NHQjhodmRvQVFnRk1Bb0dDR0I4aHZkb0FRZ0dNQW9HQ0dCOGh2ZG9BUWdITUFvR0NHQjhodmRvQVFnSU1Bb0dDR0I4aHZkb0FRZ0pNQW9HQ0dCOGh2ZG9BUWdLTUFvR0NHQjhodmRvQVFnTE1BY0dCV2VCREFFQk1BY0dCV2VCREFFQ01BZ0dCbWVCREFFQ0FUQUlCZ1puZ1F3QkFnSXdDQVlHWjRFTUFRSURNQWNHQldlQkRBRURNQWNHQldlQkRBRWZNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUNBUUJZLzdBUE5IMWEySmZwbHcxZ2pJRVEvTGM0WEk1cERzMDJQT3pwVmtDVjZuWkpaZDVYWEZib2VDemFkcFpwU1BXL1JlZUxyUkc4a2ZHVVpIV0tjOFVDVWsrWGNWOVd2SzU0RWZEOXl4dGFVWWhlRCt0YmJQTUcrdit4bzF5UEhPUVBUOFUvUTFleEphZDYxUnpPcFlHQmIrdnl5bDQ5RjJncUU2SzZPVXM1aXRQWFlidmJiYlZEMjRwYnRHRm5VZWdyaUtoUWZhQ21oTGN6Y3pPME1yVXVJQjNaZnB6dUhZcXQvT1lteXRZY2lzUVh2TzZ1cUhFTW1rT1RKQ1dUazV0L0RBeHF5dzlHcDdUa1dXZ2g2RzRwdlNjVGtrMVlTZHQxcE83NXRaTnhZNWtpbldtQzh4VEIya01vRmpjWDBTd2lFdDR2TWNIUzI1S3U4emduL0ZJSXRGaEJTK2tIL2FMdVh3Yit2KzJUM3NmWTJFZVJBc3gxUHlmeHNGQjNFR0hhRnN5TjhUdy9tZFY1MElsemw1V1FRMnMrVHhPNU04UXo2R1llcEgwVHNkbjhucnF1Y2hCcjNLOFg1TnRjL3VGY0dySW0vVHRlbWszdU44cmVHVWU3R2c0Y2ZoNzRpaExJcmt3SlpHTTh5UnY1Wnd1aWhQMnQ3dkdYUXpWTEdpMUFBczhERlRTSVJ0UWVrcXYxbG5EZWVXMjN3ZmtVNit2SFZDZ2hSSzVxdXlYUGh3b0hqeWxCWkJBTlp4QW0yZVpIVTZNeGF6QTNOQlJtaXo0aTFCdTl4VEdVeVlZbnNVQlhFYlc5Mi9IWXRGeGQ3dWlwaVBYajlBS21WNENuSU5Wd0VxTGprczFWZHhmKzdMNEQrRk1XT01OTUFpNFdtazNtSFROWm1WMk5BZz09IiwiTUlJSmd6Q0NCMnVnQXdJQkFnSVdBTW9BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQURBTkJna3Foa2lHOXcwQkFRc0ZBRENDQWpBeE96QTVCZ05WQkFVTU1rNUZVU0F4TVRjek5EZzROalExSUM4Z1EwNGdNVEEyTkRjM015MHdJQzhnUWs0Z056WTNNelE1TmpneFVrTXdNREF4TVJNd0VRWUxLd1lCQkFHQ056d0NBUU1NQWtOQk1SZ3dGZ1lMS3dZQkJBR0NOendDQVFJTUIxRjF3NmxpWldNeEd6QVpCZ3NyQmdFRUFZSTNQQUlCQVF3S1ZHVnljbVZpYjI1dVpURXhNQzhHQTFVRUR3d29VOE9wWTNWeWFYVERxU0JKYm1admNtMWhkR2x4ZFdVZ0x5QkRlV0psY2lCVFpXTjFjbWwwZVRFcU1DZ0dDU3FHU0liM0RRRUpBUlliYVc1bWIyTmhRSE50WVhKMFkyRnlaSE5sWTNWeWFYUjVMbU5oTVJvd0dBWURWUVFYREJFck1TQW9ORFV3S1NBNU5qUXRORFV4TVRFYU1CZ0dBMVVFRkF3Ukt6RWdLRFExTUNrZ09UWTBMVGMzTnpZeEVEQU9CZ05WQkJFTUIwbzJWeUF3UVRJeEN6QUpCZ05WQkFZVEFrTkJNUkF3RGdZRFZRUUlEQWRSZGNPcFltVmpNUk13RVFZRFZRUUhEQXBVWlhKeVpXSnZibTVsTVJvd0dBWURWUVFKREJFeE1UYzVJR1JsSUd3blpYaHdjbVZ6Y3pFck1Da0dBMVVFQ3d3aVFYVjBhRzl5YVhURHFTQlNZV05wYm1VZ0x5QlNiMjkwSUVGMWRHaHZjbWwwZVRFMU1ETUdBMVVFQ2d3c1UxTkZJRU5oY25SbElNT2dJRkIxWTJVZ1NXNWpMaUF2SUVWVFV5QlRiV0Z5ZENCRFlYSmtJRWx1WXk0eFNEQkdCZ05WQkFNTVAxTmxZM1Z5YVhURHFTQkRZWEowWlNERG9DQlFkV05sSUNoVFExQXBJRUZESUM4Z1UyMWhjblFnUTJGeVpDQlRaV04xY21sMGVTQW9VME5US1NCRFFUQWVGdzB4T0RBMU16QXhOVEUxTXpCYUZ3MDBPREExTXpBeE5URTFNekJhTUlJQ01ERTdNRGtHQTFVRUJRd3lUa1ZSSURFeE56TTBPRGcyTkRVZ0x5QkRUaUF4TURZME56Y3pMVEFnTHlCQ1RpQTNOamN6TkRrMk9ERlNRekF3TURFeEV6QVJCZ3NyQmdFRUFZSTNQQUlCQXd3Q1EwRXhHREFXQmdzckJnRUVBWUkzUEFJQkFnd0hVWFhEcVdKbFl6RWJNQmtHQ3lzR0FRUUJnamM4QWdFQkRBcFVaWEp5WldKdmJtNWxNVEV3THdZRFZRUVBEQ2hUdzZsamRYSnBkTU9wSUVsdVptOXliV0YwYVhGMVpTQXZJRU41WW1WeUlGTmxZM1Z5YVhSNU1Tb3dLQVlKS29aSWh2Y05BUWtCRmh0cGJtWnZZMkZBYzIxaGNuUmpZWEprYzJWamRYSnBkSGt1WTJFeEdqQVlCZ05WQkJjTUVTc3hJQ2cwTlRBcElEazJOQzAwTlRFeE1Sb3dHQVlEVlFRVURCRXJNU0FvTkRVd0tTQTVOalF0TnpjM05qRVFNQTRHQTFVRUVRd0hTalpYSURCQk1qRUxNQWtHQTFVRUJoTUNRMEV4RURBT0JnTlZCQWdNQjFGMXc2bGlaV014RXpBUkJnTlZCQWNNQ2xSbGNuSmxZbTl1Ym1VeEdqQVlCZ05WQkFrTUVURXhOemtnWkdVZ2JDZGxlSEJ5WlhOek1Tc3dLUVlEVlFRTERDSkJkWFJvYjNKcGRNT3BJRkpoWTJsdVpTQXZJRkp2YjNRZ1FYVjBhRzl5YVhSNU1UVXdNd1lEVlFRS0RDeFRVMFVnUTJGeWRHVWd3NkFnVUhWalpTQkpibU11SUM4Z1JWTlRJRk50WVhKMElFTmhjbVFnU1c1akxqRklNRVlHQTFVRUF3dy9VMlZqZFhKcGRNT3BJRU5oY25SbElNT2dJRkIxWTJVZ0tGTkRVQ2tnUVVNZ0x5QlRiV0Z5ZENCRFlYSmtJRk5sWTNWeWFYUjVJQ2hUUTFNcElFTkJNSUlDSURBTkJna3Foa2lHOXcwQkFRRUZBQU9DQWcwQU1JSUNDQUtDQWdFQXVqYUNURWkwa0daMW1zODVlZVVodWdScFJ0eWswQ0F6YnhyWE9EYVVTTU43UWhHRWNOVlI4YlB5Y2FKdVBTRXdZWXJ4REJSS0lIenl0dUQrRS9wSEpVa24zM3V5ZGJZSElhdVJ2WUpXbVBhUVZUS2RucnY4OEpLMFNkU0ZZRlpvTGhkdms3V00vM0xzU3NBaDZZaVpTc1gvZnpPcmdNanlQVWF3ZDFKa01yUmhBVDJENGRMOEFVU2Zwdm9xSzRpT2VGYnE4emN6VnlJYWtXaElRcXdxUC8rUDZpYi9zeGlhcG9oc0R1aUNkcFE3QjdNVHl6T0gza0twb0dabTlUcjZEV1l0dTh6QU5wbzh6UTJaTHUwNDVsTkJRZlVTejVTRXdhRHlZV1FSU2hEVXJsaHpieGVBbGI1NjA5Q3A4RjhRNk11Sk5DLzQyalFvQ2owQkFLUVB6MXJxZFZUZmNKc1lWemF0enlvdHByTWFHTUZ6UEZlbFJiSitDSzhEU0xUTVdUK0JIR1dEOEJwVDdGZVBpNmlIVmJucXcwOEY5MFhQRTNXcmhxdGxuOGwzaVhINjVDb280djlFVnk0RityaU5GS3VrekVURHFlWDB3ak11SExRS1dLYW0xR3pvWmZQVUJnc3IzN2Q3bmx6bWp0RWNZRVkzNDcyWklpTU94V1Q5b0hQdUdXSExGaGVHWHcxKzVxd04wU3VrVzAvOVh1WUcwZlBmWW50c01zOHhsTC9Tc0VmQkRXaW1EYzRFcjhVcnYwNDdhWnk3a0NBbHdzbVloeFhBdXIrVHBvMzR3czk3VWRrOTllM0lrNU4wYnh6TWdyS0RSTVk0eElKSmhITkY1VldQZ1F3emtDYnF1RFhEN0l5UTV4cmxGQXBTSU9sZmdRVE9lUG5rMW9jQ0FTV2pnWkF3Z1kwd0hRWURWUjBPQkJZRUZDUmdhZ2R6SkZWMU96YjZkRm1UVmNteUFDWTZNQjhHQTFVZEl3UVlNQmFBRkNSZ2FnZHpKRlYxT3piNmRGbVRWY215QUNZNk1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0RnWURWUjBQQVFIL0JBUURBZ0dHTUNvR0ExVWRFUVFqTUNHR0gyaDBkSEE2THk5allTNXpiV0Z5ZEdOaGNtUnpaV04xY21sMGVTNWpZUzh3RFFZSktvWklodmNOQVFFTEJRQURnZ0lCQUtOM0c5OXI1ZUprVVdLRDFKYzlheXpaRnBJeENzaE5iVkdJZk5lMFppd0NCOUt0UmlPK0VqRXVuSmxVT2ZqblhNWk9EMThrdTRwNlU1ZTBKQ1NWSHhQSDc2cDEzc1dGYnhjWWl3dXRjYU93c09LSElsZjI4MWFuSXR3WmJHT2VTWjlveVRiclNLQlNQWDlKamhzcTBieVB0UTVUUlZ3bjJoQ1JlZUkyUkJicy81S0RSSEtNSjNDc3dJWllXcnlCelp6R3ZHUGxkUXRNVWUyTlBpVFh2Mnk4NkNZZXd3aGlNUVJPM2kva1pzamZlV0lrcUpZVHpqQTlGREhERXJTeWNlOGUvMXNYZ0RhYnFwRW82enJ4ZDVIZ1FHQjhGSW1WYTdLdExJSXFsUUU5QVg0V3hBeU51ZHl2aCtPbDMzNU1hNFFQNmtjalgxdUY4d2krUTcrTjl3QW9XNEI2UE9pUDZ0V2JaRVA5ME1KRTU5SkpnUGNaMTd6M2U3MExYc0pPcVpBUUhqT1ZlUzk3RHJkeXFhMG03YVcxQ08rcExBTWROL1RobE1iS0NFampPSWwrUkJPQWZ1WTh4NER6RlBoMWM5UU05bXJqbzdLc1NqWUJiSzVqVVhuWG9RVVFJUHdTUUVyK21UVGNBeEtHcGdXUHVGUWNqM2cwbUxqeEtqVXRqcm1DVC9TMzZoWkRsUS93RityM2FTK2hLazduUjlzVmpSWUJHMW43OVJnQWVIcEE0NWlWYXI0YXlGSmFFUDhPKytWUmlBVU4rWTdtcXJBK2p6OTdrNmJHaWxyRTJGbFcvMlBZVGVnZ3QvMFdUbVltSnVFTkFtR3lqQU41RXlyUFIrSUxlcVhsTHBMYTd0WWJZMkRGTXRkNVVtOU55STFpbUZFTm92VjUrbGJEIl0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQWxnQUFBS0tDQVlBQUFEaGtDWDRBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBQUlHTklVazBBQUhvbEFBQ0Fnd0FBK2Y4QUFJRHBBQUIxTUFBQTZtQUFBRHFZQUFBWGI1SmZ4VVlBQVFXTlNVUkJWSGphN0wxMWZGM0plZi8vUG5qNVNycGl0Q1NEekF6THpOblFOdHlBa3pUUXRQRTNiUW9wTisydm1LWkozS1JOQ3FtYVFwZzN1MW5tdGVVMWsweVNaVEZMbCtIUTd3L1pYbnN0Smd2bS9YcnB0V3ZwbkhQbnpzeVorY3d6enp5UDVEZ09Bb0ZBSUJBSUJJTHBReFpWSUJBSUJBS0JRQ0FFbGtBZ0VBZ0VBb0VRV0FLQlFDQVFDQVJDWUFrRUFvRkFJQkFJaE1BU0NBUUNnVUFnbUN1b29nb1dOcElraVVvUUxBaDI3Tno5QVBBRjRGMTF0YnZxUlkwSUZnTGlKUC9DUlZpd0JBTEJmQkJYSHdkK0Rxd0ZYdDJ4Yy9kZG9sWUVBc0ZjUmhMcWVZRTNzTEJnQ2VhM3NGSVlzbHI5MWh2K1pBS2ZycXZkOVhWUlM0TDVqSmlEaGNBU0NJRWxFTXkydUFvQzN3WWVHdVd5cndLZnFhdmRaWWthRXdpQkpSQUNTeUFFbGtBd3VyaXFBaDRGVm8vajhxY1k4c3NhRkRVbkVBSkxNRmNRUGxnQ2dXQ3VpYXU3Z2YzakZGY0E5d0w3ZHV6Y3ZWYlVua0FnbUNzSUM5WkNiMkJod1JMTUgyRWxBYjhOL1Awa0YzOXg0TU4xdGJ1K0wycFRNRjhRYzdBUVdBSWhzQVNDbVJSWGZ1QS9nSGROdytQK0FmaUR1dHBkcHFoWmdSQllBaUd3QkVKZ0NSYXJ1Rm9EZkI5WU5ZMlBmUWw0VDEzdHJuWlJ3d0loc0FUWEErR0RKUkFJcnFlNCtsV2dicHJGRmNDdHdLR0wvbHdDZ1VBdzZ3Z0wxa0p2WUdIQkVzeE5ZZVVHdmd4OFlvWS95Z1krRC95VkNPVWdtSXVJT1ZnSUxJRVFXQUxCZEltclZjQjNnWFd6K0xIUEE3OHF0Z3dGUW1BSlpndXhSU2dRQ0daVFhIMlVvUkFNNjJiNW8rOEFqdTdZdWZ0aDBRb0NnV0EyRUJhc2hkN0F3b0lsbUJ2Q0tnaDhBM2pQSENqT1Y0RGZyNnZkbFJZdEk3amVpRGxZQ0N5QkVGZ0N3V1RGMWEzQWZ3Tkw1bEN4amdIdnI2dmRkVlMwa0VBSUxJRVFXQUloc0FUelNWaHB3RjhBdjhmY2RFZklBSDhJZkttdWRwY3RXa3dnQkpaQUNDeUJFRmlDdVM2dVZnSC9DMnlhQjhWOUR0aFpWN3VyV2JTY1FBZ3NnUkJZQWlHd0JITlJXTW5BTHVCdkFQYzhLbm9ZK0V4ZDdhNWEwWW9DSWJBRVFtQUpoTUFTekNWeHRSejRKbkRMUFA0YWp3RWZyNnZkMVNaYVZDQUVsa0FJTElFUVdJTHJLYXd1V2EzK0d2QXNnSzhrckZrQ0liQUVRbUFKaE1BU1hGZHhOV3RXSzhjMnljUUgwUDE1czlXdmhUVkxJQVNXUUFnc2dSQllnbGtWVmlyd0dZWk9DYzY0MWNvMk14aVJDM2kxRENuTGd4cGNnaVFycy9GVnc4RG5nRy9VMWU0U2c2VkFDQ3pCdUJHUjNBVUN3VVRGMVZaZ0gvQ0YyUkJYWmpwT2VxQ0p0MnhvNUl2dmVaWE41VzFrQmh1eHpWbUpFNW9GL0F2dzhvNmR1OWVJMWhjSUJPTkZXTEFXZWdNTEM1Wmcrb1NWSC9oTGh2eXRabVZ4WmlZSE1PSTlmT3JPNDJ5cDdMbjgrMThjV2NLUERsYWpCVXBSWGI3WnFnSUQrRHVHRWtlblJJOFFUQWRpRGhZQ1N5QUVsbUJ4aTZzM01XVEpLWitsYVFjcjFvbHNEZks3RHh5aU1pOTZ6UldIbXZQNDJqTnJVYjE1cU43YzJheU9zOEFuNjJwM1BTdDZoa0FJTElFUVdFSmdDUVNURVZaTGdDOEJiNSsxQ2NlMnNLSXQ1SGtIK1owSERwSHR6WXg0YlV1L255ODh2b21NRkVUeGw4NTJmLzgvNEhmcWFuZDFpSjRpRUFKTElBU1dFRmdDd1hpRWxadWhGRGVmWXhaREwxaEdDalBTd3BiS0xqNTZhejJhTW5ZR20xaEtZL2ZUNjdrd2tJTVNxRUJXdE5tc3FoaERqdjVmcnF2ZFpZaWVJeEFDU3lBRWxoQllBc0ZJNHVwaDRDdEE5V3grcnBrTVk4UzZlTStPczl5N3BuVkM5OXFPeFBmMkxlV3BreFZvZ1pMWjlNdTZ4Q2xnVjEzdHJxZEVEeElJZ1NVUUFrc0lMSUhnU21HMUZOZ05QRFRMTXd4bXZCM0ZqUENaKzQ2d3ZEQTg2VWU5ZGo2ZmYzMStEWW9uQjlWWGNEMnE4WWZBWit0cWQxMFFQVW9nQkpZUVdLSVdoTUFTTEc1aGxRMzhNZkJwUUovTno3WXRBeXZTVEVWb2dFL2ZmWXlnSnpQbFozWkZQSHpwaVkwTXBvTW9nZkxaaXBkMUpTbmdpOERmMWRYdWlvb2VKaEFDU3dnc2dSQllnc1VsckRUZzE0RS9BMEt6L2ZsbUtvSVI3ZVRCOVJkNFpNdDVaR242eGlMRGtxbDllU1YxNTR0US9hV29MdS8xcU9MdWkzWDc3M1cxdTB6UjR3UkNZQW1CSlJBQ1M3RHd4ZFhiR1lycHRIejJKeFFiTzk0QlJwVGZ1UHNZYTB2N1oreXo5cHdyNUQ5ZVdvWHF5VUgxNVFQWDVYMm9CMzZ2cm5iWG82TG5DWVRBRWdKTElBU1dZR0VLcTIzQVB6SUx1UU9Id3pMVFdORVdxbklIK0kyN2prOTRTN0FuNmlFL2tKelFQZDBSRDE5NWVqMjlpU0NLdjN5MlR4bGV5Yk1NaFhVNEpIcWlRQWdzSWJBRVFtQUpGb2F3V2cxOEhuakg5U3FEa2VqSGlQZnl5SlpHM3JUaHdvUnNTUTd3dlgzTGVmeG9PUisrOVJTMzE3UlBUTmpaRXQvZHQ0eG5UcGFoQm9yUTNNSHJOcDhDM3dQK3RLNTIxeG5STXdWaURoWUNTeUFFbG1CK0NxdGx3SjhDNytjNjdZL1psb2tkYjhXcnhOaDF6OUZobzdLUEtzd3NtWDk1YmkxSDJ3cFF2QVVZc1U3dVg5UE11N2FmbS9BWE90R1d3ejgvdHc1YjlpUDdTcTZIQS94bHpRZjhEL0Q1dXRwZDUwVlBGUUpMSUFTV1FBZ3N3ZndRVmhYQUh3RWZCYTZiaWpCVFVZeFlKemN2YStmOU41NUZWNjBKM1I5TzZQejlMemZUSGM5R0Q1WWh5UXEyWlpBSnQ3Q3FxSmRQMzMxMHdzK01wMVcrK2RKcWpyYm1vVncvQi9qTCtoSDRKdkNYZGJXNzJrVFBGUUpMSUFTV1FBZ3N3ZHdVVnNYQTd6TjBPbEMvWHVWd2JHdklrZDJNOGNrN2o3T2h2Ry9DejJqdTgvTjNqMjhtSStmZzhoZkNGWDNac1cweWtUWkM3a0YrLzZFRGhIenBDVDkvejdsQ3Z2bnlLaFJYRU1WWGlDVEoxN1BwVXNBM2dMK3VxOTNWTFhxeUVGZ0NJYkFFUW1BSjVvYXdxZ0IrRi9nMXdIMDl5MkttWXBqeER0YVc5dkxSVytzSnVDZWVRV2JmK1FLKzhmd2FGRTgrdWk5bnhPdlMwVzRVczUvZnZ1OElLNG9HSi93NS9YRTNYMzl1RFUxOTJjaitVbFRkYzcyYk1nbjhHL0RGdXRwZHphSm5DNEVsRUFKTElBU1c0UG9JcTFVTVdheCtGVkN2NjBSeDBXcGxHekUrZW1zOTI2c25ib2l4blNGbjlLZE9sS01IeDVmeXhraEdobExzYkQvTGZXdGJKbDV1NE9VenhYenIxUnBVVnhENStsdXpZR2pyOEg4WUNsWjZXdlIwSWJBRVFtQUpoTUFTekk2dzJnTDhJZkIycnBQeitwVk1oOVVxbXRMNHlsTWJ1TkFmUXNzcW0xQTRCY3RJWVVSYTJWVFJ6Y2R1T3psaHZ5eUFnYmlMZjN0eE5lZTZjeTVhczd4em9ha2RodEx2L0xVSTd5QUVsa0FJTElFUVdJS1pFMVozQXA4RDdwc1RrNE5sWWlmYXdVenc0VnNtWjdVQ09OY2Q1RXRQYmlRalphRUhpaVpsUVhKc2kweWtqU3c5d21jZk9FUnhWbUpTWlhucFRESC8vV29OaXN1SDdDMituaWNOMzhnVHdOL1cxZTU2WHJ3SlFtQUpoTUFTQ0lFbG1McW8wb0YzQWI4TmJKb3I1VEtTQTVpeEhtNWMxc243YmppTFY1OWNOcGhmSHF2Z2U2OHRRL1VWb0h1enBseXVkS3dQTzlYSHI5MTJraHVYZGszcUdaR2t6cmRlcmVGUWN6NnF2d0ROblRXWHVzUUI0RXZBOStwcWR4bmlEUkVDU3lBRWxrQUlMTUhFaEZVZThESGdONEdTdVZJdTIweGp4OXZ4YVhFK2Z2c0phaWJoWEE0UVQydjg4M05yT2QyWml4WXNSZEdtenpmZlRDY3dvdTFzcis3a3d6ZlhvNnYycEo1enJEWEV2Nys0bXJUalEvYVdJS3Y2WE9vaTdjQlhnWCt0cTkzVko5NFlJYkFFUW1BSmhNQVNqQzZzdGdHL0Fid0hjTTJkaWNER1N2U1FTWVI1ZU1NRjNyS3hDVldabkhBNTI1WEZsNS9hZ0NFRjBRTEZNK0pVN3RnbVJxUWR2eGJsdCs0N1RIa29OcW5uWkV5Rkh4Mm80c2tUNWVqZUhGUnYzbFVoSStZQWFlQTd3RmZyYW5mdEYyK1FFRmdDSWJBRVFtQUpYaGRWWG9hMkFYOGQyRDdYeW1lbW9sanhUcXJ6Qi9ud0xhY29tcVIvaysxSS9QUlFGVDg3WElrMlRWdUNZd3FrZUQ5bW9wZjMzWENXdTFlM1R2cEVRT3VBai85NGFUV3RBd0ZrYnpHYTJ6OFh1MUlkOEhXR3RnOFQ0czBTQWtzZ0JKWkFDS3pGS3F6V003UU4rQUVnYTY2Vjc5SjJvQzRsK2VETnA5aGEyVFBwWi9WRVBleCtlajJkMFN5MFFPbXNicmNOblRKc1kybitBSis2NnhoWkUwd3lmWGt5Qk9vYUN2bnZWMnV3Wk05YzNEYThSQmo0YjRhMkQ0K0pOMDBJTElFUVdBSWhzQmFEcU1wbWFQdnZJOEMyT1RubzJ6WldvcHRNTXNLYjFsL2d6UnViSnUzSEJFTW44MnBmV1luaXprSDNYWjh0TnNleE1hTGRZSVQ1NUozSDJieWtkOUxQU2hrS1B6MVV4UlBIeTlHOVdTamUvTGtRTzJzazlnSC9DWHlucm5iWG9IZ0RoY0FTQ0lFbEVBSnJJWWtxQmJnZitCRHdWdWFRYjlVYlJudU01Q0Jtb3BkVnhmMTg4T2JURkFTU2szNWNMS1h4alJmV2NySWpoQllvbVJPeHBZeFVEQ1BXd2JiS2JuYmVmQXJQSkU4L0FuUU1ldm12VjFkeXJpc2J4WmVQNXNsaURvUWxHNGswOEJPZ0ZuaXFybmFYSmQ1TUliQUVRbUFKaE1DYWo2SktCbTVteUZyMVRpQi9McGZYU01Wd2twM2srdUo4OE1iVHJDb1ptTkx6RGpUbDg2OHZyTUZSQTJqK0lpUjU3bGg0SE52RWlIYWdFZVBYN3pqTzJyTCtLVDN2ZUd1SWIrMVpTVGpwUWZJV2p5c0MvWFdtQi9nK1E4N3hyOVRWN3JMRkd5c0Vsa0FJTElFUVdITmRXRzBGM3N1UTAzclpYQyt2WmFSd0VoMm9wSGp2ampQY3RLd0xTWnI4dUJCTGFYeno1ZFVjYWNsRDh4ZWh6azFuOENGUmVUSE56bzdxTGo1NDAra3BXYk1jUitMRk04VjhkOTh5Yk5tRDVDbEcwVnp6b2N1MlhCUmIzeGFuRUlYQUVnaUJKUkFDYTY2SnFpM0FJd3hacTZyblE1bHR5OEJPZEdLbUU3eGxVeE1QckcyZWtwOFZERm10L3UyRk5kaHFBTTFmT0plaW9JODh3VmttUm16NnJGbHBVK0d4b3hVOGVxUVN6ZTFGOWhST0tPM1BkYVlSK0QvZ0ozVzF1dzZJTjFzSUxJRVFXQUloc0daYlVNbkFqUmRGMVNOQTVYd3B1MjJaT01rdTBzazRkNjVzNDYyYm1naE84bFRkSlFZU0x2Nzl4ZFdjNmdqTmVhdlZTRnl5Wm0xZTBzdUhicDVjUHNVckdVem8vUGhnTlMrZUxzYnQ5U041Q3BBVmRUNVZTUlB3STRaeUllNFYyNGhDWUFtRXdCSUlnVFZUb2tvRGJnTitCWGdiVUR5dkJuTGJ4RTcwa0VwRXVXVkZKMi9iZEo1Y2YycUtrNFBFTS9XbGZMdHVPYkllUlBjWHpDbGZxNG5Ya1lVUjY4SXhvbnpneHRQY1d0TXhaWmYxdnBpYkgreGZ5dDZHQWx5K0lJb25EMGxXNTF2VmRERGtJUDlENEVXUm9rY0lMSUVRV0tLQmhjQ2FxcWdLQVE4Q2J3WWVZQTdHcWhxUGFMQ1N2YVRqWWJaWDkvRElsZ1lLZzhrcFA3ZHR3TWUvUExlT3ptZ0F6VitNb25zV1RMdWI2UVJtcklQeVVJUlAzSDU4MG9GVnI2UXI0dUY3KzVaeDhFSWVMbDgyaWlkM1hteWhEa01ZK0NYd2MrQ3h1dHBkQTJLa0VBSkxJQVNXRUZpQzhZaXFGUmNGMVp1Qlc0QjVPUXZhbG9tZDZpV1RpTEMrdko5M2JqMUhhVTU4eXM5TkdRby9PckNVcDA2V29YcEN1SHlodVpZNlp0b212a3lzRnlzMXdBUHJXbmpicHNZcCs2aGRFcWJmcVZ2T2lmYWNvUmhhN2x3a1JaMnYxV1FCTDE4VVd6K3ZxOTExUm93Z1FtQUpoTUFTQWt0d1NWRDVnTHVCKzRDSGdLcjUvSDFzTTRPVDZpR1ZpTE85cW9lM2JEby9MY0lLWUU5RElkOTZkU1VXWGxSLzBWeU5ZajY5Q3NKTVk4VTYwYVVFTzIrcG4xSTAremNLclI4ZnJPWkFVOTVGSDYzOCtlUU1QeExuZ2NlQUo0Qm42MnAzeGNVSUl3U1dFRmdDSWJBV2o2Q1NnTFVNQmY1OGtDRXIxYnhYQ3BhUmhsUTM2VlNTVzFkMDhPWU5UZVFGVXRQeTdOWUJILy8yd2hyYUJvTW92c0s1bW9kdlJqRlNVY3hZRjFYNVlUNTZ5MG1LczZjbjFWOTMxTVBQRDFmeXl0a2lYRzR2dVBQblMzaUhzY2d3Wk4xNi9LTGdPbDVYdTB0TU9FSmdDWUVsRUFKcmdZbXFTb2FzVkpkK0NoYktkelBUQ2FSME4wWW16YjFyV3JsL2JUUFozc3kwUER1ZVZ2bkIvbVU4ZjZvRXpSdEM4NFVXZFo5eUhKdE1yQTh6TmNnOXExdDUrK1pHdkZPSW5YVWxnd21keDQ5VjhQU0pjblMzQzBmUFIzVjVGMUwxZFFQUFhQcXBxOTNWSkVZbUliQ0V3QklJZ1RYL0JGVXBjQ3R3NTBWQnRYU2hUZlJtS2dLcFhqVFo0SUcxRjdocmRkdTBUZmFtTGZQVThUSitkSEFwa3VwRjlSY3VoTzJyYWNNMk01anhMakFUdkdOYkEzZXZha1dScDJjc1RXUlVuajVaeGhQSEtqQWREZHg1cU83Z1hNNTFPRmthTG9xdDV4ZzZtZGd1QkpaQUNDeUJFRmh6VDFCVk1yVFZkOGZGbjZVTDhYdmFsb0dkNnNkSWhpbkxpZlBRK2lhMlZ2Wk0yK1R1QVB2UEYvQ3RWMWVTc3R5b3ZxSUZkVHB3dWpFekNheFlGejQ5eVFkdnFwOVNBdWszWXRrUys1dnllZXhvSmEwRFBqUlBGckk3dEpDRmJnUHcvTVdmbCtwcWQxMFFBa3NnQkpaQUNLelpGVk51WUROd0UzRER4ZjhXTCtSMk5ETUpwSFF2cVdTSzdkVTlQTGp1QXBWNTBlbWQzYnFEL09mTHErbU0rRkM4aFdpZWdIaUJ4b21SakdER3V5bkxpYkh6NXBOVTVVOXYyelQxQm5qODJCTDJOZWJqOXJoeFhIbHpJbkgyRE5NQnZBcnN2ZmpmZzNXMXUxSUw3VXVLT1ZnSUxJRVFXTmRUVUZVd0ZEWDkwczhtWU1IdlZ6bTJoWmtLUTdvUFZUYTVaM1VMZDY5cW0zTFU5VGZTM09mbk8vdFdjS29qRzhXYmg4dWJ2U0RETHN6R1JHbkVCekFTZmF3dUhlUjlPMDVQMituTlMwU1NPcy9VbC9MMHlYSk1Xd1ZYTHFvN2E3N0cwNXF3amdVT0FYc3UvZFRWN21vV0Frc2dCSlpBQ0t6eGlha3locXhURzRFdHdEWVd1SFhxRGNQdGtOTjZwbzlVTXMycWtnSHVYZFBDaHZJK1pHbDYzOVdPc0pmdjFLM2dXR3NJeFpPRDdzMVpMQlAxakF0akk5R1BrUmhrWTBVZjc5bHhabG9DdTE2SjdVZ2NhY25scVJQbDFMZG5EMW0xOU55TFR2R0xTaHgzQVB1QWc4QmhocXhjclVKZ0NZVEFFaXhhZ2JWajUyNkZJVCtwUzJKcU0wT1dxYnpGMkU2V21jWkpEMkttSWdSY0dlNWMxY3F0eXp2SThhV24vYk42bzI2Kys5cHlEalRsbzdpejBIMjVRbGpOaU5BeU1lSkQvbkxicXJ0NTk3WnpVMDVOTkJ6OWNSY3ZueTNtdWZveW9tbDl5Q0hlbFkyaXVoWnIxZmRlRkZ5SHJ2aHBxS3ZkWlFtQkpSQUNTN0JnQk5aRklWVU5yTG40cy9yaWYxY0Nyc1hjTnJhWndVcEhJRE9JYlZ2c3FPN2k5cHAybGhlR1orVHp1aUllZm5Ld21yckdRbFIzRU5XYk85K1NEOC9QZHJaTXpFUXZSakxLVGN1NmVPdW1SZ3FtMmFKMWliTmRXYnh3dW9TNnhrSmtXUUU5RzhVVlhCUUJZY2NnRFp3Q1RnQW5MLzczQk5CNHZZV1htSU9Gd0JJSWdUVWVNWFVqUTA3bjFReFpwNVlEUzFnRS9sSVRtV3l0ZEFUWkdDQ1RzZGhjMmN0Tnl6cFlWOWFQS3Rzejhwbk5mWDUrZUdBWlIxdENhSjRncWpja1FpNWNsN1kzTUJOOUdNa29HeXY2ZUdSTEErV2gySXg4bG1uTEhHc044Y3JaWWc1ZHlFUFhGV3d0WjBoc0NWRjlKUWJRQkp3RkdoazZ5VmhYVjd0cmp4QllBaUd3QkhOSllIMEhlTGVvOVdFbTFsUVV4UndnbmJaWVc5N1BMY3M2MkZqUk95MjU3VWF6WnZ4Zy8zTE9kQVpSUGRub3Zod2tXVXl1MXh2SE5qRVNBeGlKUVdxS3c3eGo2MW1XRlVSbTdQTXlwc3poNWp4ZVBsZk04WllRTHBlQ3BlYWd1Z05DYUEvUGQrdHFkNzFIQ0N6QlZCR2pyV0E2U1lvcXVDaXF6RFJXT29wa0RHSVlOdXZLKzdtaHVwT05GYjI0dFpuYmtYQWNpY010dWZ6azRGSmFCM3dvN2x5OGVWbkN4Mm91TFhwa0ZkMmZqK1lOMFJBZTVLOGZ6YUk4Rk9kdG14dllXTjZITk0ySEdYVFZabnQxTjl1cnUwbG1WSTYwNUxLbm9ZampyU0UwVGNiUnNsRmNBV1RWSlJwSGpHTUNJYkFFYzVUd1l2N3laaVlKUmdRbkU4RzJiRFl0NldWSGRSZnJ5dnBtMUZJRmtNeW92SEM2aEY4Y3JTUnA2TWp1WE55NUN6TDY5d0lTV2dvdWZ5Nk9MNGVPUkppdlBSdkFxNmQ1YUYwVHQ5ZDA0Sm1tcVB4WDR0Rk5ibGpheFExTHU4aVlNc2RhYzZsckxPVFFoVHhrUlViU2c2QUZVWFUzaSt3MG9oakhCRUpnQ1FSekJjZTJNVE54RkhPUWRDcUZWemZZV3RuTmxpVTlyQ29abUxibzZxUFJFZmJ5K0xFbHZIS21DRVYzSWJ2emNBZDlvbkhtazlDU1pIUmZEdmh5eUtUai9PaXdqKys5dG94YlZuVHkwTG9MRkdVbFp1UnpkZFZtUzJVUFd5cDdzR3lKK3ZZY0RseklaMzlUQVltSWhzdnR4bEt6VVhVZmtpeUV1a0FnQkpiZ2VyTGdjNnBZUmhvckUwTzF3aVJTRnFVNUNYWXM2MlRUa3Q0WmMxaCtJN1lqY2JRbGwxOGNyZVJjVnhETkU4Q1ZreU8yZUJiQ2dPenlnY3VIYXFiWjJ4emtwZFBGTEN1TThLYjFUYXlmZ1Zob2wxQmtoN1ZsL2F3dDYrZERONSttcGQvUG9RdDUxSjB2b3EzWGk5ZXRZQ3BaS0xvZlJWdncvY3d0ZXFKQUNDekJYR1BCamJ5T2JXRm1Fc2htQkNPZFFKWnNOcFQxc2FHaWgvVmwvZE1lVlgwMHVpSWVucTB2NDRYVEpWaU9CcTRRM3J5ZzhLOWFnTWlxQ3oxUWhPYkxweWtXNFd2UFphTklCbmVzYk9mT2xhM1RIcmowalpTSFlwU0hZcnhsVXhPUnBNN1IxaEJIbXZNNTBwcUw0Y2hvTGkrMkdrVFZ2UXV4L3dtQkpSQUNTekRueUozM2dzcHhzRElKSERPR2JFWkpwaHpLYytOc1dkck4rdkkrcXZLaTArNkVQQm9aVTJIZitYeWVPRjVKYTc4WHplMUg4V1hqRWdtWUZ3V1NyT0M2dUgxb1paSThlemFMSjQ2VlV4WktjUC9hSnJaWDlhQ3JNeHZHS2VqSmNNdnlUbTVaM29ualNKenZEWEMwSlpmOUZ3cG83ZkhoY1V2WWFnQko5YVBvbm9YZzk1Y3JlcDVBQ0N6QlhHUGVSV0YzSEFmTFNPSVljUlFyU2lKcGtSZElzM0ZKRDJ0SysxbFZQRENqcC82R0w1UEVtYzRzWGpoVFNsMURBWXFtZ1I3Q214OFFUdXVMR0VYM29PZ2V0SUJOVnpMS3QvWUcrYytYRFhaVWQzUDdpalpXRklWblhQeExra04xZm9UcS9BaHYyM3llWkVibFZHYzJKOXBDSEc3T3A3ZmJoZGVqWUNrQkpNMkhvbm5tWXo1VUliQUUwL08raUJnY0M3eUJaemNPVmhORGdVWG5ycUN5TFN3amhXTmVFbFEyT2Y0TTYwcjdXRjB5SktpeXZKbnJVclp6M1VGZVBWZk1xK2VLTUcwVlNjOUM4d1NGYjVWZ1JHd3pqWkdNNEdUQ3FMTEpUY3M2dVdsWng0ekcxUnFOY0VLbnZpT0hrKzBoanJYbDBoL1Q4WHBrYkNXQXBQcFFOUGQ4MkZKc3FxdmRWVFdiaXp5QkVGZ0NJYkJHRTFjNlEvRmo1cFNKeFRMU1dFWUt4WTVpRzBsU0dTak9UcktxdUovVkpRUFVGQTNPcWgvVk5TTjViNEE5RFVXOGVxNllSRVpGZG1XaHVnSW9ZZ3RRTU5HK25rbGlwaVBZNlFoZTNlU21aUjNjdUxTVHlyem9kU3RUT0tsenBqT2JrKzA1MUhlRTZCajA0TlpCMWp4WWNnQkZjNk5vT25Nc0pJUU5lT3BxZDgzS3dDRG00SVdMMkNJVVRCZExyN2U0Y2l4ektHbXlrVUJ4WWlSVEppN1ZZa1ZCaEpYRi9Td3ZDRk9WSDUxeG41WFJCMU9KaHU0Z2V4cUtxRHRmU0NLdG9yb0N5SzRnbnFCWDlDTEJwTG0waFVpZ0VDT2Q0TGx6T1R4MW9oeXZ5MlJIVlJjM0x1MWthVUZrVm4wSXN6d1p0bFYxczYycUd4anlLVHpmRStCc2R4YW5Pa0tjNnc0U054UThiZ1ZMRGlCcFhtVFZkYjNUK2NnTXBmczZKWHFWUUFnc3dWeGd3Nnd1TVMwRHkwaURsVUMxNDZUVEpwYnRVSlNkWW1WRlB5c0tCMWxhR0tFZ2NQMkRNcHUyekttT2JPb2FDM250Zk1IRjdiOGdpdHVQVjRncXdVd003QzR2dUx6b0ZHRm1FcnpZRk9LRk0yV29zc20ycW01MlZIZXhzbmh3eHZKZmpvU3VXdFFVRDFKVFBNakRHeTRBMEIzMTBOQVY1RXhYTnFjNlEzVDJ1VkZrQ1pkTHhaUjhvSHBRVk5kc0o2eGVKd1NXUUFnc3dWeGh5MHc4MUxGTUxDdURiV1JRbkFTU25TU1Z0cEVsbTdLY0JNdkxCbGlTRjZVeUwwcHhWbUpXZ251T2gxaEtHMHBKMGxoTWZWczJzcUlNUmNqMkIzQnI0aFM0WUJZSGVkMkxxbnVCUWl3anhkNldYUFkybG1KYkZxdEtCN214dW9NTjVYMzQzY1oxS1Y5QklFbEJJTW1OeTdvQXNHeUpqckNYcHQ0QUYzb0RuTzNLb1hYQWkrM0l1SFFaRkRlV2ROSFNwZW96WmUzYUNueGY5QjZCRUZpQ3VjRDJTWXNvMjhZMjA5aVdnV05uVUowazJCblNhUnZiY2NnUHBLbklqMUlSaWxLYUU2YzhGQ00vbUp4VFhoc08wTkxuNTNCTEhuV05SYlQxZTNHNU5SdzFDMWVPYjdaWDN3TEJzQXo1UExtQmZHd3p3NW1CT0dmM0ZwQit3YUFzbEdCN2RTY2J5M3NwejQxZHQvZExrUjNLY3VLVTVjUzVaWG5uNWZlckorS2hwZDlQMjRDUDV2NEFGL29DOVBhNWtDUUpseTRqS1RxbTVFR1NkV1JGUTFaZFU0bEFmNFBvTFlLcElwemNGM29EejRLVCs0NmR1NzNBSUtCTjV2NU1Jb3lUNkdScFlZVFM3QmlGd1FRRndTVEYyUW55QTZrWmkxNDlWV0lwamVOdElmWmZLT1JZU3dqVGxsRjBINUlXUUhWNVJRQlF3YnpCc1MzTWRBTEhpR0psNHFqeVVJTHlMVXU2V0ZmYWY5MnNXMk5oT3hMZEVRK2RZUS9kRVE5ZEVTOXRnMzRhdW9KSTNpSjBiOVprSDUwQmN1cHFkeVZtdk83RkhMeGdFUllzd1hSdzIyVEYxU1VSdUt3b3d1ODllSEJPZjhtTXFYQ21LNHVqTGJrY2JpbWdLK3pDN1ZLeDFTelVnQmVQMlBvVHpOZUZtS3lnZVFMZ0NRQmdHU21PZE9WenJLMklWTnFrTUpobVkwVVA2OHQ3V1ZFWXZxNEhSYTVFbGh5S3NoTFg1R3Y4dThjMzB4Z3Ruc3FqZGVCVzRBblJPd1JDWUFtdUoyK2U0dWhPUEQzM3VxSmh5WnpyenVKVWV6YUhXZ3BvN3ZPaGF6S09Ha0RSdlBnTHZDTHdwMkJCOHZwV1lnalZ0b2xrRWp6WFdNRHpaNkprREp1SzNEZ2J5bnBZWFRyQXNvSXdtbUxQcWZJbjBpcE0vZDE4c3hCWWdpbE5iY0k4dWNBYmVJYTNDSGZzM0MwRHJjQ2tsNHRtS2thaGRwYlB2MjNmOVIyVU15b04zVUZPZCtad3BEV2ZsajR2bWlxQjZrZldmS2k2QjBrUmF4TEI0c2F4VE14TUV0dUlneG5ETUIzS1F3bldsZld5c21pQXBRVmhmQzd6dXBieHozNnluUzVqT2FyYlA1WEhkQUJsZGJXN1psUTlpamw0NFNKbUM4RlV1WDBxNHVxNlRSS09SUHVnbDdOZFdkUjM1SEs2TTV1QnVJWkxsM0ZVUDdMbXhadnJ1ZDd4ZUFTQ3ViZG9VOVNydGhNMXk2VGJTUExVMlNLZXJvK1J6dGprK0F4V0ZBNnlxcVNQNVlWaFNyTVRzeHAvYTVvb1pzajk0WG5SNmdJaHNBVFhnNDlNV2V6ZzRGSm5kb3RoSU82aXFTOUFZM2VRRSsxNU5QZjVjSkJRTlJlMjRrZlIzZmg5YnJIbEp4Qk1FRmxSa1pVQXVBTkFJWnBqa3pKU0hPcEtjYVE5aG1ta3dYR295SXV6dXJpUHBRVmhLdk5paEh5cEdTdVRydG80bVdrUmRCOFJBa3N3NmNXSU1FOHU4QWFld1MzQ0hUdDNoeGphSHB4U1hwZE1Jc3lhMEVuKzM3MUhwMXdtQitnS2U3blE1NmV4Sit0eURKMk1LZVBTRld6Rmg2eDZVRFMzQ0owZ0VNd1N0cG5CTWxMWVpoTFppcFBPV09pS1RXbE9naFdGQTFUbFIxaVNGNlVvbUp3V1M5ZFhubHJQaWY3VlV6bEZlSWtrVUZwWHUydGdwdXBHek1FTEYySEJFa3lGVDB4VlhBRTR0a25JUDdIVnJHVkw5TVhjdEE3NGFCdndjYjQzbTVaK1AzMnhvYnhtbXE1aHl6NWsxWVVhZEtPckduTXMzNWxBc0dpUVZmM2lnaVlJZ0lhRGJXWm9UNmRwYlV3am40dGpaQXdjeHlFdmtLRThGS01xYjVEU2kvR3djdjJwQ1FVUkR2bFNPTDNUNGdmbUFUNE8vSjFvUmNHRURSeENQUy93QnA0aEM5YkY1TTduZ1pJcHIyN2piVHkwNnRqbDFCbkRjYmc1ai8xTkJiUU4rdW1OdW9ra1ZSUVpORjNCa2J5Z3VHWTZzck5BSUpoaGJNdkFOalBZWmdhc05KS1R3TWhZV0RZRVBTYjVnUlFsMlRHMlZuYXpzYUozeE9jOGVtUUpqOVd2US9hVlRrZXgyb0RxbVVyK0xPYmdoWXVZaVFTVDVTUFRJYTRBSkR0OVRSeWJON0szb1loOXpaVm9uaUN5UjhQdjEwUWdUNEZnZ1NFckdyS2lnY3QzK1hjYUZ3T2hXZ1p0S1lPbTh4RXNXeDVWWUJVR0UyQ2xwNnRZcFJmSHU2K0xGaEpNcUQrTEtoQk1sQjA3ZDN1QVA1eXU1NlV6MXBnQ3k2T2JLTG9ielJOQTBkeENYQWtFRTBDekI4bHhUbEVnblVDMysrZGQrU1ZaUWRFdXZ2KzZHN2MyK3ZaZlVWYVNqREd0d1ZEL2NNZk8zU0tTc0dCQ0NBdVdZREo4QmlpZmpnY05KWE4yS0I1RFlIbDFRNWpTQllLSnZsKzJRYmJUd0wycnpuSDdpbllreWVFL1hsckxvYjR0b014UHZlQTREajU5OU4yNmt1dzRsdVZnVytaMHVReVVBNzhGL0kzb1ZZTHhJaXhZZ2dteFkrZnVZcWJSZW1VWktVcHpFbU02c0E2NWtnbUJKUkNNRjVmVndjckFRZjdnZ1ZlNW82YnQ4dW04WDcyaG5peXBlUjZyUmdkNUROZFNSWFlveVVsaUdkTWFDdUlQZHV6Y1hTUjZsa0FJTE1GTThTWEFQMjFQczJLc0src2Q4N0o0V2hNeHFnU0NjYjFUR2JMdGVqNndlUStmdnV2d05ZbWEzWnBGY1dBQXg3SG41ZGVUWkpsb2V1d1FLK3RLZTVITTJIUitkQUQ0c3VoZ0FpR3dCTlBPanAyNzN3UzhlMW9mYWtSWlV6cDJpSm1VcVY0eVl3a0VnaEZ3V1Iyc3pqcklIejM0S2hzcmVrYTg3dTVWVGVoVzMvejhrcEpFeWh6YkIzTnRXVDlNcjhBQ2VQZU9uYnNmRWoxTklBU1dZRHJGVlFqNDErbDhwbTBaR0liRHlxTEJNYThkVExpUVplRXlLQkM4RWNkeGNESmhQS2w2Zm5YVFhqNTE1eEU4K3VoTzRDdUx3Z1NVM25uNWZTVkpJWndZMjMrc3BtZ1F3N0NIUWo1TUwvKzJZK2Z1SE5IekJFSmdDYWFMZjJHYXdqSmN3a3BIMlZEUmg2cU12VlhSSDNlSms0TUN3V1ZSWmVPeXVzaWxudFdCZlh4bzg3UDQ5VFNQSGwzS0srZUtzV3hwREpIaVVKWGJqMk9iOCs2N3k0cEtmOXcxNW5XYVlyT2hvZzhyTSsxV3JCSkV5QWJCT0JBbUFjR1k3Tmk1KzVQQXU2WjlKWnJwNStabEhlTzZ0aittbzJWcG9qRUVpeDdOSHFSUVA4OGptMCt6b2pCOCtmZHJTL3Y1eXRPYitmNlJyVHgrTWthV0swN1FuVUpUYkdJWkhjTlUwVldUZDJ3K1JYRjJnanRyTG5DOHA1cjBQTXZWTGlzYWZlSHhwYm02ZVZrSEo5cnp3UnVhN21LOGE4Zk8zYy9WMWU0U1Frc3djbDhWVlNBWVExeHRZd1ljT3kwakJZNDVhckRBUzhSU0dobFRSbGFGd0JJc1RpUXJqbU9sa2F3a0s3THErZHlEKzY0U1Z3QmUzZVJ6RDc3R0krc080Tk9TREtRQ05BeVVjYnlubXVaSUdWMkpBczRQbHZLTmx6WURVSmtYeFNjUHpMdTZrTldoOFNDV0duczgyRmpSaStTWTAzMmE4QkpmdmpnK0NnVERJaXhZZ3RIRVZSSHdZOEExN1E5UDkzTG55clp4NVJkcjdBbmlkaW1JWElLQ3hZWmptV1J4bnVyY1RrNzNMVVdYNHZ6YXJjZEhGbUtTdzIwcjJybHRSVHVXTFJGSjZTUXpLcExrMEI5elUvdnFhdEx5NjY5elZXNC9mYjBtMHJ6eWI1Und1eFNhZWdORGp1eWpvTWdPZDZ4czQ0VkdQMmhsMDEwUUYvQ2pIVHQzYjZ1cjNkVXBlcXZnbXNXQXFBTEJDT0xLQ3p6S1VKcUlhWjgwMHNrRTk2NXBHZGYxRGQxQkhNVXJHa1d3ZUlTVlkrTzFtbG1idlovUDNmOHlPMjgraFVvU1diTFJsUEdGVjFCa2h4eHZHcGRxOGFPREsvaldhOXRJNkN2UmxDRy9xLzY0bTdMc01DNTcvam03TzRxWGM5MVo0N3IydnJVdHBCSUpiR3RHL00zS2dFY3ZqcGNDd1ZVSUM1WmdPSEdsQTk4RHRzekU4KzFVTDl1cnV3bjV4cGNyN0ZCTEFaTHFFdzBqV0JUb1ZnOTVlaHNmdU9FRTVhSFhIYlRkYW9hME5mRnQ4bjk3YVMxZGlXSnMyWTFscFlsWktuLzBrOXV3SFlXazVTV3RoSmh2eDBjazFjZkI1Z0xldHZuOG1OZUdmR2wyTE8zbVNFY0EvRFBpYjdZRitONk9uYnNmbWFtRTBBSWhzQVFMUTF3cHdQOENiNW9SY1dXWnBCTVIzcjY1Y1Z6WHB3eUZsajRmM2p5eFFCUXNiQ1FyUm81MGdUZHZQTU8yeXU1ci91N1cwaVF0TjhtTU9tWVloaXZaZGZkaEJoUDFSRk1haVl4S01xUGlkeGtFM0JsU3Bzb1BEOWJRYWE0Q1daODNkYVc2UExUMCtrZ1pDbTV0N0p5RGI5L2NTTjMzQy9CNDhxY3JkYzRiZVJQd1B6dDI3bjV2WGUwdVMvUm1nUkJZZ2plS0t3bW9CZDR4VTUvaEpEdTVlWGtuaGNIa3VLNC8ycEtMcHFzaVJJTmd3ZUxZR2JLY0MyeGZjb0dITjV4SGxZZmZBdlRyYWJxU1BycWpIcGJrUnNmOWZLOXU0aDFGa0gzbTdnUDg5Uzg5UkZneGY4U29yS0xwS2tkYmN0bGUzVDNtOVlYQkpEY3Y3K1JBcXhjQ1pUTlZySGNDcVIwN2QzK29ybmFYeU9zbEVENVlnc3ZpU3Jrb3J0NC9VNTloR1NtTVZKeDNiRzBZOXowdm5TM0YwYkpGQXdrV0pKYVpodGdGQ253REZBVGk5TVZHUGs5U25oTWxZYmpvREUrdk5kZnZOaWpQN3A5M3FYTWNMWnVYem83ZlJmU2RXeHN3MHZHWk9sRjRpUThBdFJmSFU4RWlSMWl3Qk96WXVkdkZrTS9WVzJad09NU0p0L0hPYlExa2VjYm5waEJMYVJ4dnpjR1RHeENOSkZpUUtLb0xnc3M1bTdRNWV5eUpUeDVBSjQ3ZmxTTGZGMk50YVEvTENzTGsrbE5VNWc2aW5JTVQ3Zm5zcU82YTFuTGNXTjFHL1lFSXRqcC9Gak9hTzhEeDFoeGlLZTJhZkl2RGtlWE44TTV0RGZ6b2tJcVNYYzBNbmtyK0lKQzFZK2Z1ZDlmVjdrcUxYaTRFbG1EeGlxdHM0Q2ZBN1RQNU9XYWlqNUEzeGoyclc4ZDl6NHRuU3RCY3JwbnltUkFJNWd5U0pJUHFJNEdQQkRCb1FNdUF6Y0dlQkQ1bEVGMktvMHRwTkRsSmQ4dy83Wisvc25nQXI5UlBqUGtqc0dSRlJYTzVlUEZNQ1ErdHZ6Q3VlKzVaM2NvTHAwdnBqL2VpK3ZKbnNuaHZCWDY1WStmdXQ5ZlY3aG9VUFh4eElyWUlGN2U0V2c3c25XbHhaUmtwTXZGK1BuWFhzWEhGdlFLd0hZbkhqaTVCZHVlS2hoSXNXdEVsYVg0U2NobURVZzNkck1mVWlvaWt2V1RNNlIyNjNacEZRRS9NdnduTW5jdGpSNWRnTytPelJpbXl3NmZ1T2tZbU1URFRXNFVBZHdCN0w0NnpBaUd3Qkl0SVhOMEQxQUUxTS9rNWptMWpSbHQ1NzQ2emxPWEV4MzFmWFdNQmFjdUY2aExoR1FUekhRZkxTR0diR1J6YlFqYzc4RnB0MS96b1pnZk9HTEdhYkROSjNNN25lTnYwTHp3Q3J1UzhxMW5WNVNOdHVhaHJMQmozUFdVNWNkNjc0eXhtdEJYSG5uRy9zeHFnYnNmTzNYZUw5MkR4SWZaZUZwK3drb0UvQnY1c05nUzJGV3RqYlVrUDk2NFovOWFnWlV0OGI5OEtaRysrYUREQlBOWlZEaTY3Z3p4WE56ZXVhQ1dhMG5tMWNRbVdJL09SR3c2UzUzL2RnbkttSzRjZkgxMkxwSTQ4Sk90V053R3BuWDU3S1MrZksyZnprcDdYaFpjaklVbk9sTHlLS2tKaFRrVXl5S28rcjZwWjl1YnozWDByMkY3VlBXNEwrYjFyV2puZWxzdnBIaDAxV0RIVFJjd0JudHl4Yy9mbmdmK3ZybmFYTFY2T3hZR3dZQzB1Y1ZVS1BBRjhmbGJFVmFJSGp4em1FM2VjbU5COUw1d3VJV2E0MGR6Q3VWMHdUMWV1OWlDRjhqRisvYVlYK0lNSDY3aWpwbzAzYnpqUC83dHJINUxrOElPREt3bjUwK1FGVWhpMnpNK1ByU1NwVlkvNFBJL1Z4dTJWUi9tamgxOGpxTFRURmNzbVpRd2RWSHZzYUNXLzlaM2JhUitZbXJXM0ttOFEyWmwvUHRtYU8wRGNjUFA4cVlrbG5majFPNC9qa1NOWWlaN1ptbXMvRHp4eGNSd1dDSUVsV0VEaTZuM0FVZUNlMmZnOE14WEJTdlh6ZXc4ZUdsY2d3RXZFMHhyZjNiY2N4VnNrR2swdy8zQWN2R1lUZHkxNWpUOSswMTZXRlVTdStuTlJWb0szcmE5bklCM2l1Nit0WURDaDg3WG50eEJSUm5iVDhab1hlT3VhZzd4MVl3TzZhck0wdDVkQnM1QVh6Z3pGY3lvSXhrbExPWFJGUFZNcWVzaVh4aVhINTJXMUs5NGl2dnZhc25FbGdMNkVXN1A0dlFjUFlTWDdNVk9SMlNycVBjRFJIVHQzdjFlOExFSmdDZWEvc0tyYXNYUDN6eGlLemg2YUZYR1ZTV0pFTy9ucy9ZY3B6cDZZNCt4L3ZWcURvL3BSWFNKeXUyQ2VhU3ZiSnNzK3pTZHYyY05iTmpZaVNjTnZWOTI0dEpNQ2J5OEgyNnI0d2hQYkdhQUdTWktHRldzKzh4d2YzUFlhdHl4dnYvenJoOWMzNEZjRzJkTllodU5JbE9YRWNTdHBMdlJtVDZuODJkNDBDdk16MDR2cThvTHE1NzllWFRtaCs0cXpFM3oyZ2NNWTBVN016S3c1K1llQS85dXhjL2ZQZHV6Y1hTWGVIQ0d3QlBPWDU0QTN6OWFIV1VZS005TEN4Kzg0UVUzUjRJVHVQZEVXNGtCVEFacGZXSzhFODAxY1dlUTQ5WHoyM3IxVTU0OXREZm5RamNlUkpSaVFhb2JOVXVBNE5rcWlnUnVXbkNmYmw3cThIUWhRRUV3U2N2Y3hhSlh5eXJraUNvSkp2RnFLOXZEVXdqZm9xbzBpbWZPMkRUUi9FUWVhOGpuZU9yRjFaRTNSSUIrLzR3Um1wSFUyVGhaZXlac3ZqcytDQllwd2NsLzQvQmZ3cDdNbHJveHdNeCs1dFo0ZDQwaGZjU1h4dE1vL1A3Y1cxVmNvMHVJSTVwZTRjbXh5bk5QODd2Mzd4aDFFdHlncndaS3NEbzRQRmdNT2J3eDZLVWtTaG5zSlR6Y1Y4VXB6REpVa21wekJyV2J3YUJtU2FRbkxoaWRPTHVPRzZpNjhXcHA0eGpXbDcrRlNMUnhuL21aNGtXUUZ6Vi9Jdnp5L2xyOS81eDU4TG1QYzkrNm83c2F5WmI3NUVwQlZnYUs1WjNOOEZpeFFoQVZyNGZPdndJeWZXckV5U1RJWHhkVk55em9uTmtFQi8vemNlakprb1htQ29zVUU4NHFBMmNDbjc5by9ibkYxaVhkdFBZM0hia09LbmliTFBvdHNEc0psZ1NNaEt4cVM1aWVsRkJGVHFoaVFhdWl3MXRHWTJrS1B0QjVMRGpCZ2xmUERnOHZ3dVZJa0RYM1J0NFhtQ1pJaHlGZWZXY2RFcGVKTnl6cjUwTTJueUlTYk1UT3pFckxDdmpnK0M0VEFFc3hINm1wM3RRR1B6K1JubUtrWW1YQUxIN3Z0NUlURkZjQmpSNVp3dWl1RUhoUmJnNEw1aHlsNStQbVJwV1RNaVZsZTh3SXBTb045NVBodC91eE56N056ODdQVStQZVRiWjlHTmZ1dUVGdkRrKzJjSXlCM2NMQnRDUzRsUXppaGp6dmc1bkJrVEFYYm1mL1dZejFZek5tZUVEOC9OSEgzcGx0WGRQQ3gyMDVpaEZzd1U3R1pMdXJqRjhkbmdSQllnbm5NTjJmcXdWYWlIelBXeG0vZGY0UWJsazQ4UDlyUmxseCtjR0FwV3FCc0tGMklRRERQU0tsbEhPN2Z3bC8rNGtaT2RlUk02TjRIMWpRU043MmNiTTlsODVJZVBuM1hRZjdpTFMrd28vZ3c1Z2orUUk1dGtXUFg4enYzMVhIbjhnYlNUamFuT25KSW16TDlzY2x2RTBaVEdyYWt6ZnYya0NRWkxWREdqdzlXY2JoNTRnRlpiMWpheFcvZGR3UXoxb2FaNkorWDQ3SkFDQ3pCN1BGem9IdGFuK2c0bUxGMk5MT1RQMzNMZnRhV1Rud2d1dEFYNEN0UHI4Y1ZMRUhSWEtLVkJQTjRKSFV6SUsvbVArcHVwUGFWMVJqVytJYldWU1VEK05RRVQ5WlhBdEFaOXZMbHB6WnpvSE1sNmpCK1FJNXRrQytkNVBjZnFDUGtTM0h2bW1ieXRCWWNieG15cXRNVm1YeW9ob0c0QzhQMkxJam1VRFFYcm1BeC8vVDBlcHA2Sng1UGIyMVpQMy82bHYxb1ppZG10RzFNYStJazZMNDRMZ3VFd0JMTVorcHFkeG5BZjAvWDgyekx3QWlmcDlqWHlmLzNTQjBWdVJNM3BYZEZQUHp0THphamVBdEVPaHpCQWtFaXFaUnpvR2NyZi9Ib1RaenR5aHJISFZDZVBVaGZNcHV2UGJlQkx6MTNLdzNKemFTVVVuaEQ2QWJKVGxPc25PVDNIdGhId0cxY3Z2L0ROeC9EUXgrbW1rL2I0T1NEODdZUCtzbXdjTUtqcUc0L2lxK0F2MzFzODZTRVowVnVqTDk2cEk1aWZ4ZEcrRHkyWlV4bjhmNzc0cmdzRUFKTHNBQ1lsdE1xWmlwQ3V2ODhkOVdjNTQ4ZjNrL1FNL0c0T2QxUkQ1Ly82WFpNTFEvZG15MWFSckNnY0JRUEEvSnEvbTNQVGVPeVp0Mnl2SldVRmVCa2VDdHhwUkpKdnZaNnh6SXh3aGVveWgva1JGdUlsbjcvNVlUUHBUbHgxaFMwb01nbWJRT1RQeVJ5dWp0MzNxWEpHUXZkbTQybDVmSDVuMjZmbE1nS2VqTDg4Y1A3dWF2bVBPbis4eGlwOEp3YWp3VnpmTWsxbjQvbENzYlJ3RmVzZ25mczNIMGNXRE9wU2NPMnNHTHRxRTZVVDk1NVlsSmJnZ0E5VVE5LytmT3RwS1I4ZEwvSU5TaFk0TytmbFNSWGFlQWRtK3RaVTlvL2JLNUF3NUw1czBmdklDd3RIZE1QMGJaTUpEdU5XNDZpa2NDbERJVnRVQ1dENXY0Z2xYa1JmdnZlL1pNcTYxOC9maVB0NXZvRjJRNlpXQStxMmN1ZnZmVTFDb09UT3lGNHZDM0UxNTliZ3lINVVmMGxTUEtrb3h3ZHI2dmR0ZTd5MkNybTRBV0xzR0F0THI0OUNXbUZrUndrM2QvSWxySW12dkN1UFpNV1Z5MzlmdjdreDl0SlNnVkNYQWtXQlk3aW9kZFp3Mys4ZGdkLytmTWI2WTFkNjFlbEtUWitQWVdhYU1SanRlQTRJMGRWa1JVVlNmT1JWb3FJS2RYMHNaSldZejFObVMyWW5xcEpoMm93YlpsWXhyTmcyMEgzNTJPbytmekpqM2RNeWljTFlHMXBQMTk0MXg2MmxsMGcxWDhlSXprSVRFb2NmVWU4R1VKZ0NSWWVFMzZ4SGRzbUhlbmh3N2VjNUdPM244U2pUeTdTODhuMkhENy8wMjNZZWhFdWY1NW9DY0hpUVpJd2xIeTZuTFY4OWRuTnc0WlNDTGlTQkwwVy8rLzJGNmgwSGNabHRVL0lzVnEzZWdsYVowZ2Jrd3V6VU4rZVE4eGEyTytseTU4SHJrTCs4bWRiT2RxU082bG5lSFNUajkxK2tvL2NjcEowcEFmSG5sU0lRU0d3aE1BU0xEVHFhbmMxQUFjbk5EZklDaDZmaCthK3lUdlBQbm04bkgvNDVTWVVmd202TDFzMGhHQ1I2aXlaUWF1WTB4M1h2Z05Gd1RnWlN5UGtTL083OTcvR0oyOThrV0xsS0xvMTl1RmZ0OVhHTFJWSCtQeGJYOFcyclhHZllMeVNGODlXWUtsWkM3NE5kRjgyYXFDWUx6MjFnVjhjV1RMcDV6VDNCZkQ0UEpQSk9uSHc0amdzRUFKTHNBRDU4Y1NYZm5tOGNMb0UwNTVZZDBtYkNsOTdkaDNmM2I4Q1YzWUZtdHN2YWwrd3FNa1FvR0dZcE15bDJSSFN0cHZ1aTQ3WXl3dkRmUGptWTdqdG5sR2Y1eldiZU51YWd6eXkrUnd1MVVLU0pIcWpFMHZ6WXRveUhaRXMzSFl2THF0endiZUI1Zzdnemk3blI0ZVc4ZVduTmx5VjUzRzg5Zlg4NlJKd1Rjcmk5MlB4Rml3ZVJDN0N4Y2VQZ0wrY3lBMks1c2FRVkE1ZHlHVmJWYzg0VjNoK3Z2elVScUpHRUhkT2ljZ3ZLQkF3dE92blVxeHJmdTkzR1dSc25lTnRJZlkxRlZQZm1VL016Q0VoRnc3ckdPODREZ0hySEIvYWNZaFZKUU92djZ2SzBFR1M0dXpFdU11MHI3R1FnVXdlNnd2TzBCMEwwR1V2L0l3S2l1YkduVlBGaVU0WHYvLzlBSis1OXdoVitkRngzWHZvUWk2U3JFNDJYK0dQeEZ1d2VCQVdyRVZHWGUydWs4RHBDZC9vQ3ZGc2ZmbVlsMW0yeEEvMkwrWFBmN3FkR0NXNHNzdUZ1QklJTHExb3BSVEZXZGZHamROVUcxMlJlTFpoSFMrMDNrS1BzNWFrVW9xa0RMOEdkcHV0L01yR1l5d3R1RHBzZ0tiWTlNUW1Gc3ZxNlZOVkJOVSszbjlEUFJsTFd6UnRJY2tLcnV4eWtuSUpmL0d6Ylh4MzN6TE1jV3l2UGxOZmpxTlB5b2ZyOU1YeFY3QlkzbmRSQll1U253Qy9QNkdPNHM3aVZFYzIvWEVYSVY5NitOR2pJNXQvZTNFTjRiUWZkMDdKZ291cEl4Qk1GYmVVSU5kL2JRb2NqMmFpeUJacHBaVHhaQk5NSzhWOC84aDJmbmpFUUpGTU5NVkNsVTBHRXk0aXFmRm5SV2pzQ2RJZERmRFEydE5vaW9WaDY3REkxa082THdmVjVlUHBVeXAxallWOC9QWVRyQ3dlSFBiYS9yaUwweDFaZVBNbUZXL3NKK0lOV0Z3SUM5Ymk1QmVUV2UyNVBTNWVQVHZ5OXNGUEQxY3hrQTdoeWxraXhKVkFNTnhDUlVvT0s3Q1Nob3BwZzJyMmpuUGtWa2tvWmNTVUtzTHljbnFkbFhSYWEwbW9WZU95d2x5ZThROHZKOHNkNS80MUYraUx1N0VZMnZaeWJCT1gxWVhmYXNCdk5hS1lBd3Q3SWxSMVhEbVZoRE1oZm41NDVDVFJyNXd0d3UxeFQ5WXEvd3Z4Qml5eTkxMVV3YUxrVldBUXlKN0lUYllXNG9VenBUeTg4Y0t3ZjMvVCtndWNmaklrYWxjZ0dBRmR5YUNyMXg3dE4wd1p5NExsMldkcGk4ZEpLQk0vNFdZbmUwRExJdWhPait2NmFFcmpXSE1Xdi92Z1lSVFpvUy9tSnBHR2tQc1VWYmw5M0ZsemdZcmNHQTRTQjg0WDhPT2pxNGdweTY5SjRiT2dzQkk4dktGcHhEKy9lS1lVV3d0TnhzZzNlSEhjRlN3aWhBVnJFVkpYdThzQ2ZqblIrelNYajc2WW03YUI0WE1Icmk3dHgrZktZS2Jpb3BJRmdtSHdxTU9ubGtvWkNvcGs4ZkNHSmo2MGJSOEI4OHlvQVVldmVhN2RqbUwwSWprcENvT3Z2MytqUGNHcm03eDVZeE9yUzRZQ0IydXl6VHMySE9UUDN2d1NIN25sT0ZYNVVSVFpRWlZ0ZGl6dDVPTzNITUJqdFN6WXRqRlRjUUx1ekZXSEJxNmtiV0JvL05NbWx6djFseGZIWFlFUVdJSkZ3T01UdmtPU2NIazg3R2tvSFA3UHdGMHJXN0hUQTZKMkJZTGhSSTJXR243eUhneWlLeG15dkJuV2xQYnoyL2ZzSlkrVFlJK2Q2OU5sZFhKNzVRbVdGOFh3SzRPWGs2K2ZhTS9obFRQRkk5Nm55QTZQYkdtOC9PK2E0a0h1WE5tS0tnOHZ5NnJ6SXhUN3VpY2svT1lUZG5xQWUxWTNqL2ozUFEyRnVEemV5VnJ3SGhlOVh3Z3N3ZUxoTVNhUjU4SFJjbmoxM01pRDl1MDE3V1JTS1J6YkZEVXNFRnc1Z1ZzR0ZhSElzSC9yalBoUUpJdXNpOG5Uc3p4cDNyZjlCSzdVV1d4alpJdXdadlZ5VS9rSkh0N1FpR0VwdU9VWUlkK1FpSHY1VEFsSFdzWWZxK25RaFR3YWUwWVBLUHltOVEzb1Z2K0NheHZITnNta1U5eTZvbVBFYTE0OVY0S2paVS9xOFJmSFc4RWlRL2hnTFZMcWFuZjE3dGk1K3hDd2VVSWRSdmN5R0hIUk1lZ2ROdFpPamkvTml1SXc1Nk1SWEQ3aGp5VVFYRUt4NHl3ckdONjZHMDI3TVV5Skx6MjlqWVRoSW0yNnlPQWpxUVdRbE9GUEJVckdJRzY3bmVyOFFWNDRYVUpQUE1DSy9LN0xmMjhkOEpIdHpZeTdmUDF4Ti8rN2R6azNMZXZta1MzREJ4dGZVUmpHcC9ReHlNSktxNU5KUmxoZE1uaFo0TDZSamtFdmd3a2RiNTUzTW84L1ZGZTdxMWU4QVlzUFljRmEzRHd6NFRza0NiZkh6V3ROQlNOZWN2ZXFGcVNNMkNZVUNLN0VJMGNvelI3ZUdoWEx1RW03cW1qT2JLVFhXVVZVcVNhdEZDSnIzaEZQck5sS2dFRzVobjk5N1FHK2UrSWVIRW5uelJzYUw0c3JWYmJKOWFYR1hiNlFMOFhkcTl0UUZadS9mV3d6S1ZNZDV2VjNDT3JKQmRjMlVtYjA3Y0hYbWdwd2U5eVQzUjU4UnZSK0liQUVRbUNOQzB2TlpzOG8yNFNiS25veFRRdmJUSXNhRmdndW9rc3Bjb2FKSWRjYmRaTzJmUk5PSEN6SkNvcm1RdEY5SUd0VVpIV1NIeGdTUDkrdVcwSEluK2FtWlIzamZsNnVQMFU0NmVJdEc4L3pybTNuK050SE45SGNkMjE2cThKZ0ZNZGVPUDdhdHBuR3RpeldsNDI4OWZucXVXSXNOV2RXeDFtQkVGaUMrYzFMZ0RIUm0xU1hqNDVCRHdPSjRiY3VkTlZtWTBVZlJqSXFhbGdndUloWEgzN0JjYW9qUk5MVThacU5rMzUyTmcxODRJYWhJT0VkWVMrcWJCTk91RmhSRkI3M013b0NLYUxKb2ZoMTFma1JmdnYrSTlTK3N2SWF2NnpWeGIxZ0xSd3JscEdLc3JteUYxVVpYdUFPSkZ4MERucFFYWlBhSGpRdWpyTUNJYkFFaTRtNjJsMEpZTTlFNzVNa0dhOUg1VmpMeUQ1V3Q2NW9CeU1zS2xrZ3VJamZOZngyM2Y3bVl2eEtoQWRXbjBHM3VpZjhYSmZaemlNYlR4Szg2RC8wSHkrdUl1UkxzYU42WW9tYjNicDVWZUxqdi9uRlppcnpvdnozcXlzSkoxNFBIRnlaRjhXbkRDNmNoc2tNY3N1eTloSC9mTFFsRjY5WFJaSW1OVjN1dVRqT0NvVEFFaXhDSm1XK050VnM5amNWanZqM2RhWDkySmJZSmhRSUFHd3pRMVh1dGFMRXNpWDZFZ0ZDM2loM3IycWhNdEEwcnRBTWwwV1IzYzB0UytyWldqa2t6SDUwc0pyeVVKem12Z0Qzcm1tZGNEa05lMmhLU0dSVXF2T2oxQlFPWXRrU2YvL0xUWmV2eVE4azBZa3ZrSFpKZzJPenBuVGs3Y0VEVFFXWVN2YXNqcThDSWJBRUM0UG5KM09UcXZzNDJaNkRhUS9maFZURlptM1pBSVlJT2lvUW9CTmxSZUcxazNoOVJ3NlJUSUJ0UzRZc0tMOTI2ekd5bllieGlTdXJneDJseDNuNzVuTUFIR3NOMGRnZHBLWGZ6Ni9mZFh4UzVieVVaaWVSVWRGVml4MUx1L2lOdTQ5aFdoSzFyNnk4ZkoxUFh4Z0xKeU1WWTExWlA0bzhmTVFhMDVZNTJaNkRxdnNtK3hIUGk5NHZCSlpnOGZJYWsvRERrbFVkV1pFNDA1azE0alUzTGV0QU1nWkZEWStuUHEwb2tobkd0Z3hSR1FzUXR4U2hQQlM3NXZkUDFWZmhWbE9VWk1mSW1ESmUzZVQ5TzQ2TkhqSGRjZkNhamJ4bDlRSGV1ZlVzQUkwOUFYNTZhQ2lIM2dOcm04bnpweVpWVHRNYU9pV1g1MC9SSHgvS1MxZ1lUSEx2bWxZT1hjaWpJenpraHhUeXhoZEV3RkhKQ0hQektOdURaenF6a0JWcHNybFZqWXZqcTJDUkl1SmdMWExxYW5jbGQremNmUkRZTWRGN0ZjM1A4YllRcTBkSUxiR2h2SmVNWWFGYUpySWl1dHF3YzZWdGtXV2Y0ZUYxWi9DN0RNNzFoR2p1RHhKT2VVbWFIdUpPTHJiaW42ei9oMkN1Q0N3MWlWZS9Pdmh1SXFQU0hjOGhUZ0hmMkhNN0tpazBPWU5MTlVnbkUxaXVOSXAyOVVFU3lVNlNJelh3c2R1UFhCWnN4MXBEL094UUZicHFzN2FzajYxVjNaTXVwNmJZUkZNYUFiZEJJcVBRRzNXVEYwaHg1OG8yWGpsYnpIKyt0SW8vZlBnQU5VVjlIT2xQSTZtZWVkc210bVZpR0Nicnl2cEd2T1o0V3doRjgwLzJJdzdXMWU1S2l0NHZCSlpnY2ZQU1pBU1dyUVk0M0p6UHU3WU52NlhoMWl5cThtTzBKZVBvM2l4Unk4TVFrczd4T3cvc3ZSemdjSDM1NjROOVBLMXh1ak9MZzgzRmRFVUR4REplRWs0T3BwSXRCTmM4dzZkZHU2VjJyaXVMcUpVUG1wOFVWMHppRnVEbm1vVENick9ORmJrWCtQRE5KOUF1bm5oNzdPZ1NqcldHVUdTSExVdDZ1SHQxNjVUS3VUUS96UG1lSU92TCsvalVuY2ZaL2ZSNlBuRFQ2YUUwT2RrSlVvYk11ZTRzbHVhSDhVcURwSmkvQXN0TXgxbGFFQnMyK2ZZbERqZm5ZNnVCeVNSM3ZqU3VDb1RBRWl4eUpwWGxYZFU5dFBWNFNXVFVhMWJubDloUjFjR1BqK1lCUW1BTlI5Q1ZIREY2dE05bHNIbEpMNXVYOUY0V1hILzU2QTNZOWdDS0FuRW5GMHNPakJpSVVqQTNjR3lMb3F4clE1YkVNeHFXbzQwNWVUdFdpbXpPODk3dHgxbDcwUm5iQnI3NjlIb2NCekttd2xzMk5yR2hZdXJCd3JkV2RmUGltVkxXbC9lUjQwdnp1dzhlNHQ5ZVhFMDhyU0hqRVBJbitlSCtwZnpPQTRmUXBSaXBlZHd1a2hsaFIvWEljY0lTR1pXMkFTLysvRW1MeUZkRjd4Y0NTeUI0ZVZJRGxLemdkY3ZVdCtld3BiSm4yR3MyVlBUeDNYMHB0SUF6MlNqSUMvc0ZWTVlmc1BHN3I2MGdJd1Y1LzVaOXJDM3Q1MVJuRnErZEw2RjVJSWU0blVOU0toQmlhd0xZbG9Gc3AzSEpjVlJTSk93Z2pwWXo3WjhqV1VsV0ZWMHJmbnk2Z1NJWk1JSVZ5SEVjZkZZek5mbXQvT3FPZXR6YVVGOXA2Z3RRKy9KSzh2eEoraEllZnZPdVkrVDZwMGZxVk9UR2FPb05ZTmtTaXV6ZzFVMyszejFIZ2FGME1mR014bzhPVkNQSkRqNHRUV1MreGh0MUhES3BGQnNxUnQ0ZXJHL1B3ZXVXcC9KT3ZTemVNaUd3Qkl1Y3V0cGRQVHQyN2o0RHJKandPS1VHT040V0dsRmdGV2NsQ0xnTk1wbmtaQVAxTGV3WFVCNStoakp0bVhCQ3Z6eHhIbXZONVVUM0VpcUNIV3hlTWxUWDY4djZMMGVmYnVvTjhIUjlKVTM5dVlTZFVoekZMeXIzeW41cW0rak9JRzdDK1BRa0FUMUphVTZVNnZ3QlF0NDB0YSt1SVM2VnpzaG5lK1ZCbHVSZTYrQmVsSlhBSzBkSUVMeTJYMWo5NU9zdGZPaldZNVRsdkg0Uzk1c3ZyNlNwSjRpcTJBUTlCcjk1OS9GcEwrK3RLOXI0djcwcitNQk5wNjkrbHkvbUhsMVZQTUR4bGx3Q3JpUWRDUWVZZndzbk01TWt5MnRRRUJqWlJlcDRXd2hibWZUMjRKbTYybDA5NHMwVEFrc2dBS2liak1CQzlYT3NOUTg0UGVJbEd5cjYyTnVTTHdUV2NOWU55UmxXWEgzbDZVMjRWWXZmdU9zdzhiVEtkL2F2d1NVbitNak53MCtvbFhsUmZ1M1dZMlJNaGFmcnk2azdYOGFnWFlhbExONnRXY2RNRUpDNkNPcFJ5dk1HMlZIVlFXVmU1QnFmbS8vWnU0b0J1d3BtNkNDR0ppWElHMllpTHdnbWNjc1Jyb3BDYWFVSmNwNTdWelp3eDhyV3k5TGxUR2NXLy83aWF0S21URWwya28vY2VwTDh3TXhzME4xZTA4RzNYczNpbXkrdDR2MDNucjZtdnRhVTl2UEM2UktXRmZSejZwd3gyUk4yMXhVckV4OXpTL1ZZYXg3UzVCM2M2OFRvSmhBQ1MzQ0ovY0FISm5xVG9ydnA2WFlSVDJ2NFhNT0hHRmhmMWt2ZCtTaVFMMnA1RERLbXdoZWYzRUpiWmlWWlVpdHBVK0hmWGxwUDNNcm1IZXYzWDQ3V1BSSzZhdkhRdWlZZVdIdUJaK3JMZWY1TUZXR3BHbVI5VWRTZmJhVUowazYyTzh5MlplM3NxT3JFN3g0NTlNV2g1bndPZHk3RlVvSXpWaWFmbmhyUnhuUG5pdk04VWE4aFNSSStQVVYxUVM5djI5UncyYWZSdG1XKy92eHFEamZuVXBFYjV6MDd6cktzWU9ZekpIendwbFBzTzEvQVgvOWlDemRVZDNIWHFqWjBkY2phV2g2SzBUSG80OVlWN2JqT1JUREltMzhMR3l2SytyS1JCVlk4cmRFVGRlRXZjRTlsUEJVSWdTVVFBSk9NMXlKSk1sNjN4Tm11SUJ0SDhHZFlYVEpBT21PaDJaYndFUnFGbEtId3BhZTIwSlV1UTA2MUVIR1hzUHZwOVhRa1Mxa2V1c0F0eTl2SC9TeFpjcmgzZFRNM0wydm5XM3NHT0R0UVNWb3BYcGdWNXppb1ZqOVpTaGNiS2pxNGUyVXpXZDVyaGVqZWhrTDJOQlpobWhLLysrQ1FaZkQ3QjFlVFVrcG50SGhlYldSUmZPZktWbTZ2YVVPV2hnOTBPWkRROGVrR1gzalhubUcvMDB5eXZhcWI3VlhkUEZOZnl0OC92b244UUlyNzExNmdNaStLTEVGNUtJNUxtbjhDeTdFdDBtbUxWU09FbHdFNDJ4WEU2NWFtY2xwWHhMOFNDSUVsdU14aGhnNklUMWdCT1lxUE0xM1pJd29zbjh1Z01DdEZPSk5FY3d2Zm9PRklaRlMrK09SV0JqSjViQzJ1cHlJM3dvK09aOUVjTHFRMDJNWEhiajAydWNsZE4vbms3VWZaZjc2TEh4eGVRMVJadW1CQ1BEaU9qY2Z1SkZmdjVvR05EV3dzNzd0bXk3VW42dVovOTlUUUZmSFFHM1ZSRmtyd3lUdE9BUEIvZGFzSVM5VXo2a0ZrV3lZbDJkRXh4ZkJJNVBwVGZPaVcwOWUxbnU5ZTFjYmRxOXJvaWJyNS9tdkxHRXk2R0l6cnVGUUxyNVlpTnMvaWpacVpKTVhacVJGUFBnT2M2Y3JHVVNZZHZkMjZPSjRLaE1BU0NDNEhIRDBKckp2d1JLZjZPZEdXQzl0R1R2R3hvYnlYNXhzTFFBaXNxd2Q3U3lhYTB2akhwN1lSTS93OHZQb0lkNjFzdVNpT0RCSVpqWnVYdFkrWXltTzhiSzNxb2p3M3d0ZWV5OUR2MUlBOGoxOTl4OEZ0ZDFEbzZlUlhOZy9GYUhvamtaVE92ejYvbXNHRWptWEw1UHBUZk9MMkUxVG1ENG1kd1lST1EzOFJrakt6VzZlU25SNDJCK0ZreVpneVo3dXlSODJkTjFQa0IxSjg2cTdqMk1CUEQxWXltTkR4NjBtNjUxbXNCdHVJczNIWjZQN254OXR5Y2RSSmoxVW5SWUJSZ1JCWWdqZXlmeklDUzlFOE5QZjVNRzBaVlI1K09idTJ0SThYenNTQVFsSExWNURNcVB6alU5dElHUnFmdUxtT1pZV3YrOWRjU3VBN1hSUUdrL3p1L1hWODZXbWJMbk1WMGppY3VtVXJTWmJjaEs3WVpDd1Z3OWF3MFRId2tMWTlJS2xJaWpwclZqSGQ2aVpQYitmZDIrcFpPb3l3QXZqRjBVcjJOZVlqU3c3WjNnd2Z1KzNrTmR0clB6aXdnaWdWTTM3K1RaZFQ1SGlubnJjdlpTZzhmcXlTWit0TGVQZjJjOWUxejhyQTJ6YzNBVkNlRStaY3E0R3NhUFBtblpQTUdHdEtSZzdQWU5veUxYMCtQTG1Uam44bC9LOEVRbUFKcnVFQThPRUpEN2lLaXFaS05QVUVyaElJVjdLOE1FdzZZNlBaTnBJc29wQmZvbVVnUUdFd3dlY2VtQjBmbTREYjRMUDN2c2JmL1ZLaTE2ckJReCtLWkdJNEx0SmtYelZSU25hYUpaNFQ3THJuME9YSTRhWWxNNWpVR1V6b0RDWmNkRVg4ZElUOVJOTXUwcVpHUE9NaVk3dElPd0V5VXRhMHBVaVNyQmdoK1FKdjNYVDZjcGlLNFNiR0wvNXl3OUQxd0R1Mk5iQm1HRCtiUkVhbHNhOWdYQUp6eWpnT2lqejVQYlJFUnVXbmg1YXlyNmtZdzNUNGYvY2NabmxoZU03MDMxWEZmYnpVRXNjbWUxNjhiNDV0a2M3WUxDdUlqSGhOVTA4QVRaV20wbmNQaUpGTklBU1c0STFNMmpGVDFWMDBqaUt3dkxwSnJqOUR3a2lpdW55aXBpOE85aVZaTVg3dmdmMlhUMmpOQmo2WHdXL2RzNTh2UEtuaU9EYS9kYzkrb2ltTnV2TWxuT2dzWnBCcUpGa2xLRFh6NjNjZXVTeXVBRlRGSnMrZnVpS1pjTSt3b3FDNXo4L2hsa0thQjdJSnAzekU3VHhNSlh2Q3dXWWQyeUxnTkxHMTdBSnYzM3h1eEszU1dFcmppMDl1Sk0rZkpKclUrYU9IRDZDTmtBTGw4V09WaEozeVdZbmVsTUZMeTBDQXF2em8rTDh6ME5DVnhTOVBWTkU4R0NKdHFLd3Q3dUFETjU2OEhHeDByckFrTjRwSEhpUStUd1NXWmFUSUQ2YnhqT0ovMWRnVFFOVmRVL21ZZldKMEV3aUJKWGdqeHkrTzd4T2VlMHpKVDBOM05qQnlMclJWSmYzc2F5MFVBdXNpV1p6bjAzY2RtbFZ4ZFlrY1g1cWROeDNoeTA5djRWaGJIbmV2YW1GcFFZUklzcEd2UEpPaXkxcU5KRG00eGxrMnk1WndIQWxWc2ZIcUppdUxCMWxaUERqVU55eVo0MjBobmp1OWhLNTRpQ2psU09QWVV0S3Rib285clh6NDVtTlhDTHByNll1NSthZG4xcEhuVDZJcERwOTcwOEVScjdVZGljTnRKVWlxZTFicVdWSzlQSCttaWkxTHV2RzVScDdVb3ltTjA1MDU3R3Nxb1NzYXBEK1ZqVXRKVVJyczR6MWI2eThIK1p4ckhHbkpRN0pTUS91RzgwRmdaWktzS2gvZGY2MmhPeHRUOGpOSjd6d0hPQ0ZHTjRFUVdJS3JxS3ZkbGRpeGMzY0RzR3lpOThxYW0zTTlvd2UxWEZQU3ovN21HTXpEdURrelFZRnZjTmFQM2wvSmlzSkI3cXBwNXNjSHE3bHJWUXNTRVBSaytNdzkrL25iWCtwRW5SSWVPMXJGbXpjMmppaXFucWt2WjE5VEdkR01EOHUyOGJzeStMUTArZjQ0Rzh1N1dGWVF4dTgyMkZqUnk4YUtYc0lKblI4ZldzN3BubUlpVXVXd1lUc2N5eVNMQnQ2eS9oUTNWSGVPK2gxaUtZM2RUNituTENlR1M3UDU0RTJuUnIxK2YxTUJVYXRvVmtlK2Jtc1ZmL3VFVHE0M1FtRXdqa3MxQ1NmY3hESTZTVU1qWWJoSUdCNmlHUzgrUFVWUWkzQmp4UmtlV0h1ZWtDODlaL3R2TktYeC9RTTFaQXdaSlh0K3ZIT3lIV04xeWVnQzYyeDNGckkyYVFIZVVGZTdLeUZHTjRFUVdJTGhPREVaZ2FWb2Jub0hYS1FNWmNSdGpPV0ZZZEpwQTQzNW1WNWpPckV0azlMc3lIVXZ4eU5ienJIdmZBR25PbkpZVlR6a3J4UndHOXl6OGh3L3JpL214YVpWaEZNNmI5L1VjRG1RYk1aVWVQRk1DUytjcldUUUxzRWpSY2p6OUZHZUUrYTFqbFgwT29VMDlWb2M2STdoay92eHFRbEMzaGhiS2pwWlU5ckh6cHRQMEI4L3gzKytNa2hiWWdrWjVYWEJyVnM5bEhrdjhMSGJqaElZSlVBb1FNcFUrY0l2TjdLMElFemFWTVlVVndEUDFGZGlxck9zQm1TRkFWWXdrSVN6Y1FzckU4T3J4TkRsREtxVXdhZW55Zk5HV1ZQU3piclNQdklDOCtOWVhzQnQ4UFpOWi9uZWdiWHo1SzF6U0tjTmFvcEc5bUZMR1FwOXNTa0ZHQlhXSzRFUVdJSVJPUXE4ZGFJM1NaS01XNGNMdlFGcUxtNE52Wkg4UUJLWGFtTVpHUlROdGFncldaSmxlcUxYZjZ0VWxodytjY2N4bmoxWmZsbGdBZHkyb3AzajdhZnBpV2V4cjJVWmg5dkt5UFlNVGZ4SlV5ZGloQWlvL2F3TDFmUFdUV2NwRENZNTF4MWtmOGZxaTk5UHdaR3ppSkZGekliT3FFUDlrVGkrWTcyNDVSaWZ1dU1nbjcxdlB6OC8wc2R6NTFhVFZvc0pPbzNjditvMGQ5UzBqYXZzLy9ENEJqWlY5SEsyTzV2ZmZlRFFtTmUzRC9yb3orU0NjcjNFdlVPV2M1YjcxcDlqZWNFZytZSGtOV2xvNWh0MzFMUng4RUlSRFlteTJUazBNQVVzSTROYnN3ajVSaGF3RjNvRHVIV21jaXIycUpoQ0JFSmdDYVo5QmFab2JzNzNCa2NVV0FBVnVURXV4Rk5DWUVreWJaRWNZaWx0MUZRdXM4SFMvQWo2dWd0WHQ2WHM4T203RG1FN0VvM2RRVjQ4VjA1VFg0Z0J1eEtGSkRlVUh1V1J6UTFYT1F1L2NyYU1sSlE3ckcxU2tpVFEvTVFzRmNWcXhPOHlHWWk3MkgraEJBTXZwZG94ZnYzMncrU01jMHZzcTgrc1kzMVpId2ViOC9uVHQ0N3ZiTWJQanl3bElaVmNOOXVwWnZidzNtM0hXRmZXdjZENjhzZHVPOHJmL05KUGhKVnpYR0NscU1xTmozck4rZDRnaWpZbC96eGh3Uks4dm9BVlZTQjRBOGNuZTZNcCtUblhQYm9mVmszUkFJNHBZdkFCREZMTmw1L2VRaUp6L2RjNTVhSFk4QU9FNUxDc01NeEhiajdPbjd6cFpkYUZEcUU1VVpyNmNuajVYQW5SMU92TzZnMTlvUkZUSVRtMlJjQTZ4eDFsci9MSGI5cERPS256aFNkM0VEVUMzRkoraE04OXVHOVljZldsSnpmdzFJbFNiUHYxb2VxeG8wdkk4bVE0MHBySC83dm42TGdHc1VSRzVjSkEzblZOMVJSUSsxaTd3TVFWWE53cTNIQUtsOVU1cDh2cG1FbFdGbzllLytlNnN6Q2xLUVZEUG81QWNCRmh3Uks4a1RPQUFVdzRjcUNzdVdqcUd6MXA3dEtDTUhLOThBRzFMUk92M1U2N1hjTmZQYVp6NzZvR2JsMCs5WWp0TTRtbTJIejh0bVBzYWVqaDBXTTEvTGorSnA0NTA0OWZqeVBoRUhOS2huR3RjOUNzUHZMMVZqNTUrK0hMVHRzSG1nckltUER4VytwWVdUeHlUcmp1aUljVDVISzRwUURibGxoZDBzZnB6aHh5ZkdudVhkTXlib3ZYTDQ5WEVxSHMrazN1amtPQlA3cGdQUSszVlhYeGFrTXpaMko1YzNhclVMWVRWT1dOSGtPc3FTK0lQSG5ydW5GeC9CUUlodnFjcUFMQmxkVFY3aktBVTVPNVYxRmQ5RVpjV1BiSTAwaDFYb1JVMmdMSFdkd3ZucDNnL3BwamJNdzloQ09wL09qNERmejV6Mi9qLytwcUdFem9jN3JzTnk3dDVJOGZlb1ZieWc2alNobDYwcVcwRzJ2SXlEbXZDMGd6Zzl0cUkxODZ6dnMzdmNRZlBGUjMxWW00VzFlMDgvKzk3WlZSeFJYQVg3MWpMN3BxRTNSbitQQ3Q5ZWlxelp2V1h5Q1MxTG1odW10YzVjMllNZ2RiU2tIeFhMLzJ0aUxzcUdwYjBIMzZJN2NjSjR1R3VWazR4eUdWdHFqS0d6a2VtV1ZMOUVaY0tPcWtCZGFwaStPblFBQUlDNVpnZU9xWlJNb2NTVlpRRmVnTWV5bk5HZDdYSWN1YndhdGJXR1o2cXI0Tzh4cXZFbUZEUlIvM3Jta2xubFo1N0ZnVlI5dEwyTk82bnFNZFM4aHhoOWxZM3NubWltN3lBM052UzlXam03eHZ4eWxNK3d3bjIzSTQwRnpFUU1LRDdjam9pa2xWM2lBN3Fqb29DSTVjOXZFRXpaU0JUOTExbktNdHVmekxzMnQ1M3cxbmFCdndzMk9jNGdyZ3NXTlZoSjN5NjFwZkFibVhkV1Y5QzdwUEI5d0dENncrdzQ5UDVtSW9jeXNVaTJXbThibXNVY09pZElhOXFBcFQyVWF1RjFPSFFBZ3N3VmhNMnN5dHV4UmErdjBqQ2l5QWl0dzQ1Mk9MVzJDcEpDOEh6L1M1VE42NTlTeHZ0eHQ0NFZRcEw1eXJvQ1c1bk9Zekszbm1iQzl1T1k3ZmxTVFBGMmRkYVErVmVaRTVJN3BVMldaOWVSL3J5MmRXUEt3djcyTmw4UUM3bjE1UE9Lbno4SWFtY2QwWFQydnN1MUNCSTN1dmF6MEY5ZGljaThJK0U5eTJvcDI2ODgwMHBYS3VxNy9iTlFMTFNGT2RHeHYxbXBaK1A3cHJTbVVXMjRNQ0liQUVZekxwYkxLMjVLVnRZUFR3QTB2ekIyZ01weGQxQmJ0VkExbHlyaEVyMjZzN2VlN01FaHpGZ3lUSm1LazBocTdTbFN5aUtlWm5mNWVOWDQyZ1MzSDhlcHFBSzhteS9BR3E4d2NweTRtUG1nSmt2cU9yTnIvendHRmVQRk04Ym9INXJUMnJpRmg1Qk8wVFpPUnNrbkxKckNXbXZvUmpacWdwN1YyUWJXTGFNaklnWDVGdjhjTTNIK01mbnM0aXh0STVVMDdIVExPc1lIRFVhOW9HZk5pU2R5cCtNK2NRQ0lUQUVzeVl3Skk5bk84ZC9TUmhSVzRNK2N6aWRuUjNxOWU2YWlReUt2L3c1RFlHcEpXWFJVRElsK1J6RCt5aGZjQkxjMytBczkyNTlNYTh0SWV6R0hDVzRrMTJjYm9yajJUS3dxdWJiQ3p2NGNPM25pS2UxamphbWt2QW5XRlY4Y0NjZHA2ZnVKV2tZMXpYSFduSjQxeC9CWVd1VnY3b1RYdHA2ZmZ6dmYwcjZVd1drWmFMSjV3WGNiTDRwRTV1WHI0dy9hLys1aGViaWFWVS91NmRleS8vTHMrZlltTkpDNiswRitFb2N5TXRsdXdrUmp3cGU0bnp2Vm5ZOHBUODlJVEFFZ2lCSlJpVFNadTZGVlducFgvMFk4NmxPWEZNdzVqNE1jVUZoSzVjTGJBeXBzSVhuOXhLcjcxcTZDU2VFUUV0U05Kd29VZ09GYmt4S25KajNMSzhnLy9kdTVLMlpEV09BNnZ5ei9QK0cwNWRsYy93VEdjMi83bG5FMkduRkUxSzQ2ZWQxY1U5dkhmN3Vhc3NEUXVaZ1lTTDd4NVlneW9sK2RpdFI1QWxoeVc1VVg3My90YzQxeDNrQndkVzBwTXVJaTBYemJqUUNtaGhDZ0lMTHpUSkQvWXZSVmNzTnBSZm01SGdWN2FjNVVSSEFRT3NuaE5sTlEyRHNweXh0d2dWMTVRT21JZ3RRc0hWd2w1VWdlQ04xTlh1NmdFbWxjZEZWbDBNeERVTWErU3VWWklkeDdTR1lpTXRXcTZZMDAxYjVvdFBicUhMWEFXeVRJNXpHcjg4NU5OazRLRW45cnF2MnN0blN6alV1UnhUeVVKV1ZQb1QzcXZFMVVEQ1JlMmVqVVRWRmNpcUZ5KzkzTHY2QXNzTHd2ekZ6N2R3b0NsL3dWZHR4bFQ0cDJjM2s3UUN2SGx0UFVWWlYxdExseFZFK05RZGg5bFljQnB6OEN5V01ZT3BhYXdrbThvN0Zsd2ROL1VFdU5BWFFGVWNIdGw2YmE1S1RiRjUyOGJUNkZiM2RTK3JZMXRZRnRmMGc2djdqTXhBWEVPZS9BbkN5TVZ4VXlDNGpMQmdDVWJpSExCNXdycEJsdEhWb2ZoRkl6bTZLN0pEcmo5RHdreWo2dDdGV2JzWGQreHNSK0lyVDIyaUxiTUtaSTFzK3pTZnVmczF2dlRzVFFBa3JDeGErL3dVQkpJMDlRYjQrZkUxcE5TU3k0K0pwVDFYQ2JXdlBidUpzTHdNQ2JCdGsyMUxXcmlqcGhVQXI4dmd2L1p1cHI2ampmZnVPTFdndGcydkZGZGZmSElyZmFrQ2JxdzR4UzNMMjRHaEUySW4ya09jYUM5Z0lPa2pZZnFJT3lHVWJOK00rbVFGcFZidVh0bXlvT3JZdG1WcVgxM0pyOTEya3YvWlU0TmJIZDd2Yjh1U2JwNDgwVTZibVQ5cjI3SERhbHd6VFNpUUdiVy9kMGM5Nk9yUStEV0Y4VklnRUFKTE1DNGFKeU93QUhSZHBtc1VnUVZRRm9wenFqOERpMVJnWlN3VkIvamFzeHU0a0Z3RmlodS9lWlpmdjJNL2VZRVVMdFVBZThpbjdXeFBpS1dGWWY3dDVVM0VsYXFoU2M1SUl5a2FTY2REUEszaGRSbjh5M1ByNlRKWElDbktSYkdyMEI5L1hZRDVYUWFPNG1WZjkyWWFIOHZtNDdjZUdYVlZQOThZaUx2NHArYzIwNS9PWTJ2cEdkNnovVFJIV25MNTl4ZFhJMnMrVEswQVNYVURFbHc4TERhVDA3NWptMVRsOUN5NGd3ZGZlWG9kRDIrNFFHTlAxdVdUc0NQeDdtMzEvUE1yK2FTVTB1c25DSTNNbVA1WDNSRVB1ajRsb2QyQVFQQUd4QmFoWUNRbTcwOGd1K2dLank2Y3F2TUdjYXpVb3EzY3BLSHo3eSt1NDF4MEZiYml3MmMyOE5HYkRsQjJVWlJxOHRDMm42eW90UFFIK2Fkbk56TW9yUUFKUEZZTGN1SThraVNSZExJNTN4dmd1L3RxYUl5dHdMa2ltS1lreVF3bWgvNXRPeExmM3JlS3BGU0FMZnZwTkZleCs1bU5mS2R1K1lLb3ozM25DL203SjI5a01CWGs3bVhIK2NDTlF5R0pOcFQzOGRlL3NwZGJxaHZJVlpwUXpVRXVtdzlubUlEVHdpT2J6eTY0dm52enNnNStjV1FKRXVCekdmenpzeU9Iekt2T2oxRGs3Y1J4cnAvdm4yT2xxTTRmSFBXYXJyQVg1Q25sUnoyTFFDQUVsbUNjVE5ya2JVb2VPc1lRV0NYWmNSUm44UXFzU0NhTEUvMnJzSlFnWlBwUm5BUm51M000MXgwa2JTcm9WNXd5YkJrSTBtV3NRTUlreHo3SngyNTRsZXJDQkVnU3B1VG5PM1VyMk45ZWczRkZKUFZMeERNdWJFZmkzMTlhUzZleDlISnNvZ0J0ZlBydXd6VDNCL2p1dmhYenRoNHRXK0xMVDIzbVczV2JjQ2tHdjNuYlh0Njg0ZnpWUXNkdDhNNnRaL256TjcvRSt6YytUNGx5RkxmVk5xT1R2bU9aVkljNnlmVXZ2RDYrdmJxYlAzdnJhMXpvODlNMjRHTkpib1MvZW5RckdYUDQ2ZVM5MityeDJhM1hyYnlLazZJa2UvUWt6eDFoTDZZa1RoQUtwaGV4UlNnWWllYkozaWdwT3EwRGdWR3ZLY3hLWXBybTR1MkFxb2VRMG9Fc3RaSFdOREpPa01kT0YvSGtHUk9Qa2lTZHNlSGllRzk2cXZBNFhTelB2c0NIYmpxQlc3TklIeDZxT1ZsUkdUQ0trYlNDUzFNN2RqcUM3Qm9LbFpFeTNmekRFMXRwU3kvRGtsL1BFNW5CUnpLanN2UG1lcjcwekE0S1RpVzVjeDc2Q3JVTitHZ2Y5UEFyRzQ5emUwM2JOYkhGcmxwTlNnNWJxN3JaV3RYTmhiNEFQejYwbk01WUhsSEtwejEvWG9BTHZHdnJxUVhkaGQ5LzR4bmFCbno4KzR1cldWVXl3Ri8vWWd1ZnZ2dllOYUt5TkNkT2liK0xzL0d5cWZnNFRSclROQ2tJamk1MFd3Y0NTTXFVVGhBMkl4QUlnU1VZSjVOZWNzcUtUbmRrOU5WZ1lUQkJ4bkJ3T2Zhc0IzNmNDK1NwRi9pRGgvWmQvbmMwcGRFKzRLT3BMNHV6M1NFR2tsNFM1bmxpZGdqYkFwbEJpckppeE5MYWtNQXlYZzl5SWJrTEdFcXEzRXVPMmtGQ1Vva3hKTEJpVGhHUlZNVTFBaUxsQkRuVGxjTURheThneXpLL3JGL0o2cEplQ29Qeks1eEFlU2pPMzcvemxRbmZ0eVEzeW1mdU9VaC8zTVVQRHk3blhGOEpNYWxpV3FLUE8xYUdtdndPc2tkSnk3SlFLTTJKOHlkdmZZMnZQcjJlZ2tDU3J6NnpqZy9jZElycS9LdHovcjFqeTJtKzhud1JTWGwyVXhZNWprM0djQ2dNanU1cjJCM3hJSHVuSkxCYUVRaUV3QkxNOUlwTVZqUWlTUlhUa2xHVjRiZGgzSnFGUjdleExXTXF5VlhuTFc3dDZub0p1QTFxaWdlcEtSN2tmaTRBUTRGSHozUm04MXBUTVczaGJKNXZXTWtyNTFjUTBLUEVEUTlEZ2NSZUYxWnYyWHlXZFdWOS9NblA3M3g5Z2xHOXd6cHlLNnFMVTUyNWVIV0RwSk5EV2dsUisycVkzMzlnMzd5cVIwbWFtajlWeUpmbVk3Y2VweTkyanYvZXU1cVdXQmxwcFhoS3o4eWlpWGR0WFR3aGtXUmcxejFIZWZSSUpZbU15di90WGNIYnR6U3lwdVQxUk41bE9YSHlQTDIwWk1wbTlVU2hiUmw0ZEh2VU5FV21KUk5KcWdTQ1U0ck1KeXhZZ21IZkRZSGdHdXBxZHlXQi9rbE5lcktNcGtMWEdGYXN2RUFheDF5Y3llZmp4dGlpMHF1YmJLem81V08zSGVQUDMvd1N2MzNuaTZ3dnZvQmxTMWl5RjlzeWNTSU4zRnQ5Z0Q5OWVBOGJLM3BwNmZlVGRnTGpLa043T0l0SFQ2NG5vK1FoU1RKZHlXTE9kUWNYWlh2aytsTjg1cDZEN056NkN0bjJTYkFuWjMyU3JCamJselRqY3kyK2Z2M3doaWEyVjNXaHlBNC9QckNVTTUxWFozUjRZRTBqbWoyN0NhOXQweUF2TUhwYXJxN0l4UkFOazdlazkxOGNMd1VDSWJBRTQyYlNabStYTHRFWEd6MlpjMGwySE50YXBBSXI0OGF5SjdhU0x3L0ZlUDhOOWZ6NW0xL21FemM4eHdyL1lYeGVoZWNhVnZHRko3YlIxQnZnVEZjT1NUdG5sQlc5ZWRtNU82WlVrMUNXWFA1Yldpbmc1MGVXTCtvT3Y2NnNqejk4Y0E5THZVZlE3SUVKMzU4dE5mUHdHNXpzRnhPMzFYUnc1OHBXTk1YaTIzWEw2WW0rUGdhc0wrc2pLTTl1NEZIYk1zWjBjTytMdWRHMEtVMkZZbnRRSUFTV1lQWUdEa25XNkkrUGJxVXB5NG5nV0lzejZYTUcvNWhKc1VlanBtaVF6OXh6Z0QrNDd3Vlc1TFhTbThqaXF5L2V4cU5IcXBHMUszeEpIQWVNS0FHN2tSTDFLSEs4NGZKS1hYNkRYNVlreWZURXMwYU53cjhZOE9vbW43bjNJTnVLanVDMk9zZDluMmIxOHZEYXM2aUxKQjNSU055d3RKc3RsVDM0WENaZmZXWTk5dVgrNWJDbXVBdkhuRVhmTkN0TldjN29TU242NDY1cjNnVWhzQVJDWUFsbW1ra2ZLN01sZlV5QlZSaE1MdHBRRFVrbmk4YWVyQ2svSitlaUQ5RWYzUDhpeTBLdHVMMXVITWRCTmJvSlVVK04velUrdVBFWi91VEI1M2hrNHlsY3Z0RS9NKzdrWHJPMXN4aVJnUGZ0T00ydGxjZlJ4N0d0NVRnMmVYb2JPNVoyaWxFRHVHZDFLL21CRkVGUG1uOTVkdTBWdjcrQVgycWZ0WElvcENqS1NvNHBzQ3ltNUFmYUlscGNJQVNXWU5ZR0RoTTN2YkV4ZkxEOEtXemJYSlFWS3lsdVRuWG1UZHZ6c3IwWlBubkhFWGJkL2hMRnlqSEFRY0hrWFZ0UHNiMjZDNjl1OHJNankwbkxoYU0reDVDQ25Pck1GVDMvSW0vWjJFQytkZ0hIR3IyZit1eFdQbmpEOFFYMy9XTXBqYjBOaFpqMnhLZUtEOTE4aXJTaDBqbm81Vnoza0dnUCtkSms2ZUZaSzc5dG1lVDZSbC9FOWNZOFdKSVFXQUloc0FTenl4UkNOYWgwUjBZUE5ocnlwOGtZenFLc1dFbVM2RXVNZjR2d3VWT2xuR3dQalhsZFdVNmNQM3JUWHU1ZmZwaUU2ZVVmbjdtSjUwK1gwanJnb3llVk4rWUpMbGxSYVE4dlRrZjNnYmlMNDIwaGZuUndHVjkrZWpOLy9maE4vTW5QN21UQUtBQkdGbGlPbldGcFR0dVk2VmptSTdwcTg0dWoxZnplOTIvbG1mcnlDZnNOL3ZaOVJ6QXNtZi9kODNvdzIzV2xYZGl6NUJxUU1SeEMvdEUvcXp2aUZWdUVnaGxCaEdrUWpNYWtiZm15ck5JWEg5M0pQY3VUeHJHSHN0MVBSL3loZVdjZHlIaEptd291MVJyeldzTlMrUHBMMjdodGFTTy9zdlhzcURuMEpPREJkVTFzV2RMRjExL2N5TTlQYk1RNkdNUHdsZzUvbitOZ1d3YXlPdVM3bFRZWDM3RFFIM2Z4OTQ5dklaTDI0YmlMVVhUUDY1VXBqWjZ6TU10cDRsZDMxQy9JZXRGVml6OSs4ejYrOHZSbWZueHNBeStjWGNKOXF4cTRlVm5udUVKa3VIV1RSN1kwOHZYblY5TTI0S00wSjg1TlN6dDQ2WHdYQ1NwbXRPeU9iZUhZUStQTWFQVEYzY2phbFBwOE93TEJjUE9ncUFMQktFemFvVVJTVkNLSjBlUEtLTEtEMTJVdDJtM0NoSlBEdWE3eFdZdk9kZWRndWN0NXFYVUxYL2psTnVMcHNXUDJGQVNUL09GRGRkVGtOU081Y3k1SDBYWnNDOWtNNDdmT1V5Z2ZKMlFmUlhjR3J4Sm9vMDVjampSaFM4WmNKK1JMODdmdmVKVS9lZE1yM0ZqeUdybk9TWFNyZTh4ME9ySVY0YWFxSnZ6dWhYc2ExcVZhL083OSszbjcyaVBZanN4M0QyL2o4NC9leEw3emhlUEs2cmk5dXB1bEJWRitjbWdvVVhtdVA0VmZqYzU0dVczYnhPdXlVT1RSU3hsSmFGT041QzhjN3dURElpeFlndEhvbmJSeWwxVU1TeUtSVWZIcUl3dW9MSy9Cb0dYQ0lndzJhc3BaSEdvcFlrM3A2K0VBT3NKZW5qaGVSVjlpYUh0VmtXeFNwa3BmcGhoSlZyREk0a0pxUFgvelN6ZWZ1UFhRbU50U3Fteno4ZHVPOGRpeEtNODNyQ0xtRktHbHp2R1JtK3RaWGpTSVZ6ZjV1MTl1cHorVC8zcmJTZllZWWkvSTJlNXNIbHAzWWNHMVNYRjJnZy9lV0k4RG5Pdks0aGZIbHRJVnl5VWlsU0hKYjR6MDdaQWpOL1BndXFZRjMxY2x5ZUh1MVMzY1Z0UEdvMGVxZWEyNW5QL2V2NFBIai9meTFnMW4yRmd4K2xEeHFUdVA4eDh2cmJ6ODd6eC9qSzZJZ3pTRFFVY2R5eVRiTzdyd1RXU0d4aW1QUEtXcHNCZUJRQWdzd1FTWmZGUkFTY0tsRGZtMWpDYXdjdjBwK3NPTDFORmRWbWdaZVAzRTNvOE9MbWZQaGFVazVMSnJ0MHl2bUlja1JXWFFXY1ZYWDNEenBqVW51VzFGMjVpZjlkQzZKZ29DQ2I1M2FDT1dKNCt1cUk4TkZiMDA5L25wVFJhQU92UUJqbTJSNnhzOXJVanJRSUMwcVMzc3RnR1dGNGI1VE9GQklrbWRIeDlheHFtZVlpSk81V1ZyaDh2czRoM2JUbzFwSVZsSWFJck4yemVmNC82MVRmend3SEpPZEpieXpYMDNVWENzaDBjMm5XSjF5ZkN4dzNKOGFYN25nU09YLzcycHJKTVR4eEtnK21hc3JMWmxrcHMxdW9QN1FOeUZTMk9xMGVYN0VBaUdNelNJS2hDTVJGM3RyZ3dRbWJSNlZ5VUdFMk9GYW9pUGVVSnJJVE9RRHZIU21XSysrZklhWG1wZVQxSmRNajUvTkVraXJsYnpzNU5iK04rOUs4ZTFWYk8xc3BzUGJkK1BiRWQ1K3N4S3puVG04TU5ETlNTdVNBMmoyRkhXbDQwZURMS3BiM0dGY1FoNk1uem9wcE44N3I2WFdKdjlHaDZyRFhCUTdVR1dGb1FYWmIvMTZpWWZ1TEdlejkzL0l1c0tHNGxtZkh6amxadjVxMS9jTUs1c0FFc0x3L2lrZ1JrdG8yT1pGQVpIRHpJNm1IQ2hxbE1TVjVHTDQ2UkFJQVNXWU1MMFRMcHp5UXF4TVh5Rjh2MUpKQ2U5YUNzM29aVHovUk4zY0tCM0c0WXk4YkFOS2FXWTE3bzJzUHZwVGVNS0VMcW10SjhQYlQrRUxObjg1NTROZE1ieXIwb1I0cGQ2V0YweWVvYWsxZ0UvZnRmaW0xT3lQQmwrL1k2amZIVEhLK1RZOWNUa0pYenh5VzBrTW90M0l5RGJtK0ZqdHg3bkQrOS9rUzFsRGNRemJyNzg3STM4N2VQYmFlb2RPV1ZUUVNDSkxzVm50R3lTa3liZlAzb01yRmhhUTU3YUFadHVCQUloc0FTVFpQTCtCWkpDTktXTk1VQ25rVEVXZFFYYmFoQkptYndQbWlsbmN6YStucjk3ZlB1NEp2dTFaWDI4YTlNUkREekVwTEtyVnZ3Vk9YM282dWcrV1AxeE55NTE4Vm9kVnhZUDhFY1B2VXExN3dTOVJqbi8rTlJXVW9heXFQdHdsamZEQjIrczU4L2YvQ0p2V25PYWNNckRsNTY5aVM4OHNZM1dFVElXZVBXWkZla3lCdG5lMFJkdjBaUUcwcFRhVG13UENvVEFFc3orQUdKSkd0SGs2QUxMN3piQXRrUXRUL2xOZHROaHJ1SHZmcm1Ed1lRKzV1V2JsM1R6OE9xamVPMkwvbHVPUTlCcDVMM2J4ZzQza01vb0JOMkxlMWZFclZuODFyMEhXUjJxcHpkVHlwZWUzaktwWUp3TERWMjFlWEJkRTMveGxwZW9DblhUbkZ6QjdoZHU1MHRQYmFFamZIVmNQSzgyczVacng3WUlqSEc2TTVyVXNLUXArUk1LZ1NVUUFrc3dhU1p0QXJjY0Y1SFU2Sk45d0cxZzJiYW81V2xBVWxSNm5WVjg4YWtkZEVVOFkxNS9SMDBiSDcxaEx4WGFJY3IxSTN6eTF2MWtlVWNYVG4weE41SWs0WE1aaTc2K1pjbmg0N2NmWTNuMk9UcVRTL2pHOCt0Rko3eUlwdGo4NXAxSHlKRmJTQ2psbkV0czVrdlAzY2J1WnpiUmZiRnY1bmhUT0RQNDd0dVdQV2I0akVoS3gzS21kSUpaYkJFS1JrU2NJaFNNeGFSOXNDUlpZU0F4ZXJEUm9DZURhVHE0UkQxUGo4aVNGZnFkbFh6NWFZblAzUE1haGNIUmZWQldGZyt3c25qZnVKL2ZOdUJEa21WeS9XbFIyUXlkTnZ6RTdjZjQyOGM5bkJ1c1ltOURKemNzd255RTNWRVBCWUdyKzVxcTJJUzhjZnFUSU1reUNaWndPbGJHRjU4dG9ESzdrNEFyaFdPYnc0Uy9tQjVNeXlIb0dYM0JNSkJ3VHpYSWNZOTRDd1FqTHNKRUZRakdZTkltY0VsV2lDUkhIeno5TGdQTEJoeEgxUFIwVGZxU1RFU3Q0U3ZQYkJ1WEpXc2luT3JLeGFYWlkwYkhYbFNyVk5ubVUzY2N3aTJIZWVsYythS3NnL3IySEg1MGNObTFkYU5ZMTR3SmNhV1M0K0d0SE9tb0dET1E2MlJ4SEFmTEhocGZSaU9TMUtjcXNNUVdvV0Rrc1VGVWdXQU1KdTNrUGg2QnBhczJxdUpnMjlaVTg0RUozaUN5d3NwS3Z2b2MvT2FkWTF1eXhzdUZ2bXl5UEpsRkZmc0poZ0pTMXI2OGt1NTRFTC9MUkpZY1pObEdsUzA4bW9sYnMvRElNV0pwZlZIMnQ2SmdndThkV0VPT044V2RLMXZITVRhb0pPVnFadXBvZ0dOYnFJb3o1b0dOU0ZKSFVxZFVDaEZrVkRBaXdvSWxHSXRKWjdDVlpZVjRlbXpSNU5GdEhOc1VOVDN0SWt1aVgxckpWNStiUGt0V05PM0JweTgrNjVWWE4vbm9iZldFdkVuYUV1VTBwalp6TnJhUjB3TXJPZHk5bWtNZDFhUnRMNHBra2pZWDM0bkNnbUFTdjAvbDhmcTFIRzdKdSs3bGNXd1RqejYyZFN5ZVZxY2FwaUVtUmhyQlNBaVRnV0RHQmhCSlZraGt4aDY4ZkM2VGlIQjBuem1SUlExZmVRWis1NzQ2UXI3Smk2TzJBUi9SakkrVmhWMkxzaTVkcXNXdXV3L3gyTEVCWGpoWFExeFpnc3ZwWTFQcEJlNWUxVXBoTURtdUJNZ0xrUnhmR3BVMFlYVTUzOWx2a3VYZVIxVis1THFWeDdGdGZLNnhGMjNKaklKUENDekJEQ0VzV0lJeEYzbFRtTjJ4SFRESENJRHBkeGs0SWxURERJb3NtYkJTdzVlZTNrWi9mUExIQ2ZZMkZwTzIzV3dvNjFyVTlmblF1aVkrY2NzZXN1MTZra29GaHp1WGNiUTFmOUdLcTB1NDFTR0g4cGhTemIrK3ZIbmEvZjhtSnJER0R0RmdXaksydzFUVDVNVEZDQ01RQWtzd1dRYW5NckVEWTI2WitOMFpIRWNJckprV1dmMnM0b3RQYmlPY25KeWYwS211ZkxKZFlaWVZSaFo5ZlZiblIvaURCL2RTNlQ1Q2hpQlBuTjNJOS9hdldOUjE0cjIwZFN4SlJKVGwvTk96VzBta3I4OG1pZU5ZWTJZYnVEUXVYWm5KWURiSFI0RVFXQUxCbEZab21qSmtoaDhOajJiaWlGT0VNeSt5WkpsQmVTVmZlbXJibUJIMjMwaHZ6RTBrazAxQWorTlNoUmdHOExrTWZ1ZUIvZHhTZGdEWk1kalR1bzcvMmJOcTBkYUhSelhnWWxaTVNaSVpsR3BvR0VkZXdwa1JXQTRlYmZRdHdtUkdRWnU2dTV5d1lBbUV3QkpjbndGRVZpQnBxR09zZkUxd2hBL1c3SWdzaFY1bkZWOTRZdHU0RGlCYzR1bVRTNGlZMmF3cjZSS1ZlR1Y5QXUvY2VwWVBiZCtMeCtualFOZEtmanhNdUlMRlFGNGdnVzFaVjczOFNyRHkraFRHc2ZIb1l3Z3NRMFVXQWtzZ0JKYmdPaklsSjA1Rmd2UVllZHFDN3ZTTVJuUVdYS3Q2KzV4Vi9PTlQ0MHRVN0RnU0p6c0x5Tkw2dUhWRm02aS9ZVmhiMnMvdjNmOHFlVm83ZXk1VXM3ZXhhTkhWUVZFd2RzMXBZRm5Scmt0WkhOc202Qjc5UUVmYVVGQ2tLWCtVY0hJWENJRWxtQngxdGJ1bTVIQWp5ZEtZUGxndXpVSkdiRHZOSnBLaTBtV3Q0aCtlR0R0UjhhRUxlWVN0UW5KY2cyUjVNcUx5UmlEYm0rRnpEKzVqVFdFclB6dXluS2RPVkdEWlF6TjRKS2x6dkMzRVR3OHY1WnN2citXZm54dnkyVHJabm9QdFNBdmkrL3RkR2FRNTRrc3BZK0hTUmk5TDJsU1E1S25WL1ZUSFI4SENSb1JwRUl4M2xlYWYxRUFueTJOTzRDN1ZRa0xFd1pyOVdVaWoyMXJGbDU1eStPeDkrOUZIOEsxNm9yNGFHWnY3VmpjdW1xcEpaRlRPZEdaenZEMmZ6a2lBcEtHVE1qVk1XMEZYREh4Nml1cmNBZDYxN2N4Vjl5bXl3enUybk9FclQyM2tGL1hyZVA3Y01pVEp3WFJjeEswZ2h1MTYvZFJhbjhPcnpWR0NhaC92MjNhY2xjVUQ4N3JPUExxRktodk1CVnUwaERtbXIyREtVSkRsS2RrWWhQVktJQVNXWU1yRUp5dXdrR1NTWTJ4RHVUUUxDYkZGZUYxUWROcU5WZnpEa3c2L2M5K0JhMFJXWTArUXZuUUJXV28zR3lzV2R0RHFsbjQvTDUwdG83RTNSTXp3RTdPeUFmQXBVWFE1aVY5UDQxSU5OTVhnZEVjMmJ2WHFNQUNkWVM4L1BieU1DNFA1aE8xU0pNWEV3c0FqSjhseHhWamhhU1Uva0NETGs4S25HOFRUR2o4NVZFM015Y0k5akVOMklxTmlXaklaVThhMGgvNExrTEZrREd0bzBaSTJaQ3g3NlBjNXZqUkxjcVBYTGNxK0t0dHo1ckNLaEQybUJTdVpVV0ZxSndpRi81VkFDQ3pCdEFpc3lacEpTSnVqRDJJZXpRSVJwdUc2NGNndTJqT3IrTW96RHI5MTd3RlUrWFd4KzhPRE5TVHNFTGNzT2NsODJzaHFIZkFoUzFDU1BYclhqYVkwbmp5eGhPUHRSVVN0SEJLV2x5eTFqNkFlb3lhcm5jMFZIVlNFWXVSY0VhRDFzV09WTkE2V2M5dnlFd0NjYk0vaDBXUEw2VTNta3JTQ0JOVnVsdmxQY3VQU1Z0YVU5STBZaitueDQwdkFVd0JtZ3YvYXV3a0hDZE9Xc1IwSjI1RnhrSEVjQnhrYkhBc0pzR3h3a0pCa1NCc2F5Q3FHNDhiQ2hVZExVK2hxNVE4ZTJuZGQ2dHkwWlNSSllrNUlMTWNhR2xkR1lXaGNFZ0pMSUFTVzRQb1NuZlE0aHpLbUQ1WmJNMmNzNmF0Z25DaHVXbElyK1lkZlNuejY3b1A0WENaMWpZVjBKVXR3eXpIV2xNd1A2OVdSbGp4K2NuZ0ZVU3NQMnpLNFo4VXBIbHAzL3Bycld2cjkvUGpRQ2pxaUljSldIbGxLTC9udUxtNm9hbU5iVmRmUXlkWmhDQ2QxWG02b3hpUEg2SXU3K2Z5ak54TTI4cEN4eUhIMTh2Q3lvOXkwdEFOVkdiMC9OM1JuOGR5NWxXU1VmTkNoeDNad3JDUit1UmV2RXNPbnB5a0tSbGxSMEVldVAwWEluOGF0V3BkUHhtVk1tWXlwRUV0cjlFYmRIR3ZMNDVXR0N0THE5Y3VGYUpneXRqTTMwZ1E1amoyc1ZmQktVb2FLZ3pLVmhVTlVEQndDSWJBRTF3MWJVc1k4UmVqU0xCRUhheTYwbGV5bHhWakwzenpoSmRzZHB6dVJSMG9wd2pFVG5PM09ZWGxoZU02V3ZiRW53SGRlVzAxZk1vUmJUVlBzYmFjcm5zUEI1cEtyQkZaVGI0RHZIVmhGVHpJZnczYVJyWFh6UU9VKzdsbmRQS0tvdXBKdjdWbERtQ3JjOVBHelV6ZmhsUWVwQ0xUeUs1dFBVeDRhbjB0T05LWHhuNjl1SUM2Vm8xdTkrS1ErOG53Uk5sZDBzcmEwYjF6cGpIVFZSbGR0L0c2RGtDL0ZqdzdWb0hxQzNGVlRQNlAxYkZveVQ1OHM0NEYxemRmOHJUZm13VUpqTGtnc3gzYkczQ0xNbURLMnBJaVRYZ0loc0FUWGxlUk1QbHhYYklTK21odElzc1lnTlF5bTRkSk1LYWxlWG1sWXd0MnJXdVpja05HdWlJZi8zYnVhN2xnUWo1Ym1iZXVPc0tPNkUxMjErZHhQN2lGakQ0VUo2QWg3K2IrNjFYVEVDN0ZSeVhWMThhYTE1OWhRMFR0dUM4Yko5aEFYSW1VZ3l5aDJtdVZaRjNqM3RsTVVCc2YvZXRpT3hEODhzWm1VcWJBNmR6OTMxbHhnWmZFZzhpVFQ3RGpBUHorM2tTNXJHWDZ6RWNjWjJzSk1aRFRpYVIzRGtrbGRZVUZXWkFldlp1TFJEVXF5WXVRSEV1VDZVK1Q2VStPcUIxV3grZW5oYXZ4dWsxdVd0MS8xdDdiQjRIVUx5ekJjdmVqS2pGdkZFMkxFRUFpQkpaZ3FhVkVGaTVzd1Mvanh3VTdlcy8zMG5DaFBOS1h4N2JwVm5PL0xJZUJPOGRHYkR3NXJZVE50bVg5OWNUM24rb3N4SEIrNWVqdVBiRHJONnBLSm5kaXpiSWx2NzF1TjdVaFV1Zzd6dnUwbktjMlp1QXZPbWM0c0hscDNuaTFMZXNmY1Jod1AvN3RuRlUySjVZQk9XRjdLdDQ5WDQ5ZzJzbVNoeXdhS1pLSEtKamhEdmxzV0tvYXRZZGdxamlPaHlRWStOWVltSmZIckNaYmtESExqMG5ZcTgwYmUvVnFTbitMbngxZFRsUmUrcWc2Nm9qNGtXVmxNcjRXSVdTSVFBa3R3L2JBZGRjeEk3cGVYbklLNWkrTGhhSHNwYjBvMWpwbEVkNkwwUnQwY2JDNWdYV2t2eGRtakd3Vk1TK1puUjZyWmY2RUVWYmI0d0ExSFJ4VkxVYnVRWTcyRjVDaXR2SDNkRVc1YzJqbXBNdjdpYUNVcEF6NSt5MHRUQ3Fld3NuaHcydXJ0aGRPbDdHa3NKdHZmamQvVmpFZkxrT3RMVXB3VkpjK2Z4Ty9Pb0N0RHAra1V5Y0cwaDBLbUpBMlZTRktqZlRCSVY4UkhKTzBpWWJnWlNHWFQybHJPL3ZZVkJMVUJWaGQxOGRDNjgvaGNWMitkNW5nU3RLVFg4dlVYVS96aGczc3YrNFZGVWw3bXlrbUk4YmdjSkRJcXRpT21RSUVRV0lMcnk2Um5CUWRwek8wL2oyNWgyVUpoelhYQ1ZQSHRmVDE4L0xaajAvYk1wMDlXOE5TWkd1S0duNmRPaGZuOSsxOGx6NThhOXRvOURVVThkbnc1aGlWeis0b21IbGpUakRUSzFwcGxnVmZ1WlhQNUJYNWx5N21yVGtkT0JNdVdLTTJPOGZmdmZIbk9uS1IwSElrY2I0clB2M1hrK2hxYjdtc0VSMk5Qa1AxTnhaeG9EL0hjK2MzMHhieDg4bzRqVjR2RW9qNk85R2NZa0pmenRlZFNmUGIrL1hSSFBLUnNQOHdSQTVadE15NmZPbWRxTFRvb1JnV0JFRmlDT1kwa3pGZnpvNTBVbFliK0Vyb2o1eWdJVHMwdHp3SCtkKzhxRG5kVTRwRmpyQzVwWVYvSFJoNDlzcFNkTjUrNDZ0ckduZ0RmM3JlR2dYUTJSYjVlUG5iYjBYRkZsQTlvWVQ1eHgvRUorVWdOaHlJN2JLbnNtVnR0SVRtc0wrK2IxbWQ2ZFpPVlJZUHNhU2pGVW5NSVN2M2tCYTYxS0ZibmgvRktnNlRrWWxwVFMvbitheEZzUnlKR29YQVlGd2lFd0JJSUJKTWhKcFh6UDNXcitlMTdEMHo2R2FZdDg4L1ByYWN0SEdKVHlYbmV2ZTBNZzBtZEV6M1ZkRVlEbDYvTG1ETGYyck9hVTczbEtJN0IvU3RQY3UvcTVuRi96cCsrNVRYUllCT2dNK3psR3k5dUpHS0dLUEcxODZFYlQ1QWZ1RmFjbG1USDBhVTRLY0NVczNtdGRUbXlIVVhXTlZHSkFvRVFXSUxaVzJuTFJGTmp4T2FSRUtjSTUwdDd5Z29kc1dJYWU0SlU1MDg4RFZzaW8vS1ZwemNSVDd2NGpkdjNVWkU3Rk5vZ3o1OUNsNUxFTW00QXVxTWUvdm01VGZSYUZlUXFMWHp5dGtOaittY0pKczlMWjB2NXhmR1ZSSlZxWFBJZ1NjUEZ0L2FzSmNlYnBDcHZrTEtjS0VWWkNRSnVZK2drb3BvaWNuSEhOYW1XWVJ2cE9XVzljcHpYTXhLTlJDU2xJMG5DNWlZUUFrc3dmNmZrTWYwY3ZMcUpKZUtNemh1U1NnbmZlVzBWZi9oUTNZVHVDeWQxdnZ6MEpyeTZ3UjgvdkFmM0crSVVlZlVVNFV3Mno1OHU1WmNuYTBpUnpjcXNVM3o4dHFQb3F1Z2dNOFg1bmdCN3poV1I1VW5ndFU2Uk5qWGlobytJR2FJcDVxYXVYY090cHZFb2NWUXBqVWZOMEJQUnJrcWVKV3V1T2ZXZExKdkx6dmVqcnV5UVJBY1FDSUVsRUFqbWltYVc2TW1Vc3IrcGdLMlYzZU82cFN2aTRXdlBibUJsMFFEdnUySDRVQTlaN2lTZHFTVThlbklERWc1M1Z4L216UnNhUlgzUE1GWDVVWDd2d2F1M2ZET21Rbi9jeFVEY1JYdllSME5QaU1Ha2gzREtTMSttQU1NVEV2NVdBb0VRV0lKcFlFb3BJY1QyMzhMRFVQTDUyWkVWYktyb0dUTzVjSE8vbjI4OHY0N2JhOXE0YjgzSVBsVEw4Z2M0M3Evamt4UDg2dmFqckMzdEZ4VjluZEJWaTZLc0JFVlpDVmFWREhEM3FsWmdLRkJxVTIrQVZ4dEtPZDhYSW1vRWlWT0lwTGptM1hlY2huRXBJbnFLUUFnc3dWU1pmUGh1U1NLZUVjNnZDNUZCcDV3blRpemhvWFZOSTE1VDM1N0RmKzlkemNQcnozUFRzdlpSbjdjMGY1RGdxUVkrZSsrQktZUWVFTXdrc3VSUW5SKzU3SC9YRjNQejRwbFNUbllXRURXQ1JDbEZrdWZIK3g3UGFFanlsTFlJeGI2MVFBZ3N3ZlZEa3NiMmM3aVUwc0p4Yk9GME9vK3dsU0N2TkZaeVowM3JzUDR1KzVzSytPSEJHdTVmM1RpbXVBS296SXZ5bDIvYml6Nk9kRHltSlE5dFlTVmM5RVk5dEljRDlFUzlKRTJOYUVMaHMvY2ZtUGFBcUlKcnlmV25lUHZtQnQ1T0Ezc2JDdm51TVI4RytkZTFUSTQ5Tko2TW5kWkorR0FKaE1BU0xQUk9lQ2xsaUNQR3UvbkdvRlBKOXc5MDhjRWJyMDR5L095cGNwNnNYOGFPeWhidVdOazJvWDZReUtnTXhGMzB4MTEwUjMxMGhQMzBKenlrRFkyMHBaS3hOREtXaG9XTHRPMG1iV3JJa29OSFRaT3hWZkwxVGlHdVpwRyttSnYvMjdlS2xrZ1JHVGwzenJ6Q1kyMWRDd1JDWUFrRWdqbUxwTGc0MlZWR2YvdzhJZC9RdHQ1UERpL2xsZlBMV1JacTUrMmJ6NzF1V1FBaUNmMnk1YWt6N0tjOUhDQ1cxa21iR21sTEkyMXFtTTdRLzZjTUhTUUp0MnJnVWcwa3gwUlRESFRad3F1bGNLdjkrRjBaaXJKaUZHZEYrZG5ocFF6WXBkUVVkb3VHbVFXaUtZM3Y3YS9oYkc4eFVXa0prcUtJOVpGQUlBU1dRQ0NZdG9sV1dzTC83TzFsMTkySCtQNys1ZXh0WFUwcUhzYklrdm5IcDdhUk1qVXlsa3JhMUxEUVNaa2FhVk5GVnd6Y1NnYVhtc0dsR0xnVWc0QXJpVnMxQ1BsU0ZBVmpoSHhKc2p3WmdwN001UmhNdy9HOS9Tc1lORXNvOWJYd3JtMW5SS1BNSUdsVDRkRWpsVHhiWDRIbExrSFJQSXN0eWJOQUlBU1dZTnFZa2pPbmlIRzFzSkZraFpab01WOTl4cVlodW95TWxJUGp6K05rMkVZamhrY080MWJTNUhoaStQUTB4Vmx4eW5QQzVBZVM1QWRTK0Z6R09QcVF4TEhXWEo0L1U0RXEyL3ptWFljdi8yMXZZeEY3bTFlUXBmYnc2YnNPSVV0aWEyZ21VU1NIRzVkMnNxSndnTTV3QSszaEFJTkpOeWxESTJucXBFMGRVL0tRdEFJNGl2YzZpQzludHNZbFMvUUdnUkJZZ3FreTZlUElraVNUekl6ZHpUVEZ3WEVzSkJGZFoxNlNsTXM0MmUvQnI2VUp5bWNKdWhNc0NRMnl0cVNISmJteGNRUjl2QmJEa2puUkZ1S1ZoakthK3JLSnB6VnkvU2xxQ250eEhBbEpjbWdiOFBHVEkydlFwUVNmdXVQZ3VCTDhqalFsaHhNNjBaUk9OS1dSeUtpRWsyNHlsb3lNdzMxcm04WDIxNlZKUTdFcHlZNVRraDFuWGRtMW9UUk1XNlkzNnFZejdPRkVld0Z0Z3dFaUdSOHhLNFFoaDVEa21YM0hIY2RHVThZV1djbU1PdFZETlZIUkd3UkNZQW11dDQxakhFSk0xTkw4dzBFMkkvamxIckpkVWRaVmRiR3h2R2RLS1czNjR5NzJOeFZ5dUxXSXJvaWZsS0VROGlWWlg5ckZIVFV0bElkaWw2OU5aRlMrL3NJbVRFZGo1L2JYS01vYTMrZEdranIxSFRtYzdNaWpKK1lqWmJwSW1ScUc3Y0owaGh6b1RVZEhrbFVVMHR4U2NVU0lxNGxNS3JKOU9ZYld4b3FoaE5TV0xYR3VLNHRuVHkraE5Sd2k0cFRpS0w2WkczR2s4ZlJlMGFvQ0liQUUxNS9KcjlSa21VUm03QzBDVGJGeEhMR1hPQyt3VWdTa2RrTHVRVzViMDh5bWl0NXhoVllZZnBLRGh1NGdMNTh0cDNrd204R2tIOE9TeWZORjJWaldjWTJvdXZLK2YzbCtBeEV6eEFNMVIxbGIxamZxNTdRTitIanFaQ1V0ZzlrTXBud2tERGMrTFlWUFQrUFJNZ1JkQ2J5NmdjK1Z3YXVibk83SW9pMVpSYTdXd2J1MkNwK3VxYUxJRGpYRmc5UVVENUl4WlI0L1hzVytwaklHcVpyMklLV09iYU9OSTdWU01xT0FJaXhZQWlHd0JOZDVTcDNDV25LOE9neGJ1TTdNN1VuU0hDUkxhV2RqUlFmM3JyNHc2VkFJamlOeHFqT0xGODRzb1MyY1RTU1RoU3haWkx2Q2JDcHRIbEZVWGNtUERpem5RcmlVdFlYbmVYQ0VRS2VXTGZIS3VSS2VPMTFKZDlTTFczZkk5Y1haVk5yQ3hySXVxZ3NpdzI0cFpreVpBODIzNEZZU2ZQQ0c0K0s0L3pTanF6YVZ1V0gybkY4Q2lqNGpuekgrK0tGVHNtSUpIeXlCRUZpQ0tST2Z0THlTSkZMRytDeFlhV0hCbXB1RGhEVkF0dExHZmVzYTJWSGRPV25CMFJQMThOaXhLczcxNWhFMlFxaVlCUFZCdHBTZTVjNXhpS3BMSEc4TDhWTGpVb3A5blh6MGx1UFhDampnaFZObC9PREFVaXhiWmxsUmxQdlhOTEN4dk9lYUJOUEQ4WU1EeXhrd2k5aFNlSUxxZ3JEb0FOUE1vMGVxZUtGeEpVbTFZbVkyNlJ3YlRSbDdMRWtaS3BJNnBSTEVSV3NLaE1BU1RKWEpSMjJVSkN4N2JETzhydHFrUk5MQ09ZVmtKY2lXbXJoblZTTzNyV2hIbXVUcHZIUGRRWDUwcUliZVpDNUowMHUyM3NmNmdnYnVXMzJlaXR6WWhKNDFFSGZ4MzN2WEU5Qmo3THI3NERWaXJ6UHM1WitmVzBjaW8vR205VTNjVWRNMklRZjducWlISSswVjVDZ2R2UCtHVTZJVFREUC91MmNGZXk1VVlidUxrUjFuUnB3dkhjY2VSeFQzSVF2bkZEOWZSTE1WQ0lFbG1ES1Q5bHFXSkptTU9mWWc1dFlzd29hd1lFMXV3VzVpV3hZU0pycVVRcFV5S05KUVlFNUZzcEFsQjBXMlVXUUxDUWRKQWxXeUw3YVBnM0x4LytNWm5haVpUZHpKSnlDMXNhSDRBdS9hZXZiMVNQc1RwTG5QejdmM3JhWXpXWUFFNUxsN2VmZkdBMnhhMGp1cFVBcW1MZlBWNXpaaDJqS2Z1ZU1nUHRlMXd1bDBaellmdWVVa2xYbVRjNC81MXA0MVpHd1g3OTl4Y05KK1pZS1JlZmVPYzJ5dDdPWkVSejdOL1VIYUVxVWtwZUpwRmxnT0xtM3NQcHN4SmZTcG5TSk1pQllWQ0lFbG1DcXh5ZDQ0SkxER0hzUzh1Z0VaSWJER0ZsTVdicWNIbnh6RzcwcmkxVExrK1JQa0J4TGsrcEw0WFFZK2w0SFBaZUp6R1JQZXptc2I4UEhDbVRMdVhObENjZGJrNW85a1J1Vy85cXptYkY4cEFFdUM3VHl5NmN5RXJWVnY1TjlmWEV0UExNREhiems0WXRsdXIybWY5UE9QdHVUU0hDbGllYWlWZGNNNHpadjJVUDdEVkVZaG50RXdUQmxWc1ZFa0I3L2JJTnViSGxiMENhNlljR1Q3c3JNN3dOZGZNRGcyV0RDOXNiSWNlMmc4R1ZOZ3liaW1KckJpb2tVRlFtQUpycXZBQWtnWnlxaitMeDdkdkp5a1ZURHNySUhIYXFNODBNNmIxNStqTWo4NkkvNHJwVGx4M3JmajlLVHZQOTRXNGp2NzF4SXhjaWoyZHZMK0cwNk0yN2RxTkI0N1dzbXg5a0xlc3Y3TW1DY0dKNE5sUy96ZzBDcDhhcFFQM25pU3hwNGdaN3R5T05zVElwWnlEd1hRdEhSc1NSOEs0MkNyRjYwbElFc09MdFZBSVlNdXAvQnFhYkk4U1RhWGQ3Q3VySDljZ1ZRWEszZXNhS1orYncyV0hKcEdmV1dQdVMxOHlTOVVFZ0pMSUFTVzREb3o2VUNqU0JLU0JPa3hCSlpYTTBXWWhoR0VsV29Oa0tPMDhhczNubUJaNGR4MXV2N2hnZVc4Y240WkxpWEZyNnpieiswMWJkUHkzTU10ZVR4MmZCbmJLOXU0ZisyRkdTbjd6NDlVMHhQUHdhZUcrZHNuYnlGcEIwbWFMdnhhQWwySzQ5UFMrRjFKUE9ycm9Sd3ViU0VtTWhxUnBFN0MwRWtaR3RHTWgrNWtQc2U2bCtNNTJNODdOeC9ueHFWZG9pc1BROGlYeGkwbmlET05Bc3V4OFdxakM2eTBvUXk1WDAzTkJ5c2lXbEFnQkpaZ3Frd3Azb3VxUU5KUXlTSXo0alhaM3BRUVdGZE9FbVlDdjl4TnlEWEFYV3ViMkZyVlBXZkRJdHFPeE5kZldNK3AzaVVVZWJyNDlUc09rK05MVDh1ekwvVDUrZVlyNjZuS0hlQUROOWJQU1BsVGhzS2U4K1ZJcm13VXhjQ3R4aWoxTnJHbXVJY1ZSWU1VWnlVbTVPQnZPeEl2blNubVp5YzM0VmRTYks4U3lhZEhRbGN0SktiM3ZYY2NpMnh2YXRScmtvYUtPdlZkU1JFSFN5QUVsbURLVE1rVXJpb1FTNC9lMVh3dUE5bFp2RnNwam1PaldRUDQ1RDV5UERFMkwrdGt5NUl1c3J5Wk9WMXUyNUg0eXRPYmFJZ3NSelo3Y0drV1B6KzZsS3E4QVVxejR4UUdFNVAyUytxS2VOajl6RlpDM2lTZnZ2dndqT1VZZEdzV04xYzM0OUVhMlZMWlRjaVhtdkl6bno5VENZN0VlN2JWaXpoYW93MHNhUTE3bXFjaDJUSHhqN0V0RzB0UGk4QVNXNFFDSWJBRVUyWktwbkJGa1ltbnRWR3Y4YnNNNU1WNDZ0bHg4Tml0bFBpN3VHOVZJeXVMQjRlZGtCMkdUc2k5ZXE2TTdwaWZsS2xqMmtNemhLYVk2TEpKbmovRyt0SnV0bFYxejByQ1l3ZjR5dE1iT1R0UWlhMjRRQ3ZqYkJUT2hDMWV2bUNna2tDeTArQ1l1RlNMcFFWaGZ1UE9JK042ZG4vY3hUOCt0UjFWc2Zuc2ZmdG4vRVRmV3pZMlR0dXpIaisyaE41TUNUVTU1MWhWL0hxdXZsaEtZeURoSXB6UVNac0tTVVBGcFZwNGRZT0EyNkE0T3pHdStFMExhbUJKNnFSc0w5T1pnbFRHR05QdkxaN1dVSlFwZjZnSWtpWVFBa3N3WmZxbmNyTWtqVU5ndVExd0Z0bXhlTWNoYUovbW96Y2ZZbW4reUJyMnBiTWxQSHFrbW94U1FFWU92WDdpNnRLZW9UMzAwenBnYzdRbnpPbk9ZM3p3cHZvWkwzNGlyWEhiOGxadW8zVmMxM3ZIYWNucWk3bjV4NmUzWXpreXYzTnYzYVFqeGw4dndmQnlZelZ1K2lnSXhQbW5aemNUVGJ0SlpGd1lqZ3ZUY1pFMFhaaTJqQ1FOaFJUUVpBdVhhdUNTNDNqVUZDRlBuSnVXdHJLaHZIZkJXNzh1OUFVeDhVNXZpbmZIR2hwUHhoQllVM1J3QnhnUVU0TkFDQ3pCbEtpcjNaWGVzWE4zQXZCT2FyeVRWT0pqYkJFRzNBYTJ2YmdFbHRkdTQyTzNIS1JxaEpoTjhiVEcxNTdiU0c4aUI5dUtrMVp6a0VjNXppNUpNcnFjcGlSN2RuWXVmQzZETFpVOTB6dmg5Z2I0eGt1YlNWczZIN3Q1LzdnVE9NOFZ2clZuTldGbkNUSnhuamxmakU5TDRKSmplTlVVT1ZvTW41NGh4NWNrNkU2anF6YU9Bd01KRDcweEQ1RzBtMmpLUTJPNG5EUDdxd2dlN21ObFlUZHYzM1Iyd1laL09OY1RRbGExYVgybWJWdGppdko0V3NXUjFLbjROU2JxYW5lbEVRaUV3QkpNQS8yVEZWaTJwQkpOYVdNS0xOTjAwQmRSaGZxMThJamlxaS9tNWt0UGJ5TmwrN2kzcGg2L251Ri9qaTBEWmVSWFZyWENiQ2c4d3oyclcrWmxmUnhxenVjNys5ZGpJL1BCSFlkWldUeS9EQVJuT3JPcGI4OGhQNnVCb0R2QnFxSStWaGIxVVJHS2pUdFlxd08wOXZ0NXBuNEp4OXNMZUtWOUsvc2E4L244MitySThTNjgrVHljOHNJMEg5OHdUV2RNZ1JWTmFkaG9VN0djOVNNUUNJRWxtRWFCVlRhWkd5M0hSVGpoR3ZXYWJHOGEwMklvc0pBa0xZb0svZi9aZSsvd05xL3o3di96WUhFUFNDSkZpcHJVbGl4Yk5pVkx0bHpiU2FnTVp6VnA2SFJrMkcwajVkZkVUUHQyU0gzYnZsMXBLN1ZwbTlocFVpbUxHYzBRa3pqTmNoelIyNVpGV1pTc3ZhbkpKWkVFRjBCaVByOC9BTmdRaEkwSHdBUHcvbHdYTHRrUzhJeHp6bjJmNzduUE9mZng1MU15WURMYzNQbE9USm41ajQ3MXVIM0YvUFpkaDFpMzhEcW4rNnF4S0E2OEZFZFJzVTdtbDU3TDJFNjdUUFBLK1RrOGVYUU5Sanc4dXJHTFZYUHlyLyt5bUx6ODR3ZjJNU09OSFpRSy9seGtIcCtDMTFSRk5kZjQ2SVBIQzFKY3VUeEdKbHlsb0dHT1VWUVZqNWU0dTFoSEhFVjRzYVRUQVlyQUVrUmdDWnFSY25aSHhXQmt5RjRTOHp2RlppOUdnNHJQNThWZzFMQlplbDBVTTRSUmNhT3FScnlZOEdIRXE1cncrQ3lvaWdGRk1malhOU2tHRkVWQjlmbFFWVy9nejFzakQ4SHZHd3pHdE1UZ21LK2VIeDlhd3NQcnp0NFV3Zml2NTlZeU9sWEtiWFU5MUZmWlVZSHFVbjhTeThsSWZZclBTNjNoREo5KzYrdmtvelE5TzFETmo0L2NScEZ4aWsvZTM4WDhHZm01T1N2VjQzbENtWFNaZU9MWk83bnFXSVRWMU11bkgreWl0bkt5SUIzSzJmNHFwckJxZWsyZnorOUg0cDFGT0d3dlNUZDcvQkNDSUFKTDBJaVVGOXNZakNac2NTSllBT1hGWGp3K1Q4eHBzS1FhdDIrVVZkWVR2UHYyYmlxSzNiZzhCaWJkSnR4ZWczOFhsOHZJaE5QQzJGUVI0MU5GREU0VTB6MjZDSU43a0UxTCtxZ3FjVkpWNGtUaDVvWEdOa2NKdzQ0U2h1M0YyRjBXSEM0TGs1NWlwdFJLcHJCaU1NWmZVNktxS2o1akJhOWRXMDZKMmNONzcvRHZZclBaaXdDRjhtS1ZvNE5yT1A5Q0k4V0dNY3BNay9pOG5sdDNXNmtxMWVwWld0K1duMmZuMlowbXZ2SEtIUlFabkh6bXJRZVlYYUJpSWhFR0o0cDU0dGttaHR3TldOeTl2UFAyODB3NHpaUzczSlJhQ204TlZ1ZWxPYmlWU2swSEJhclBRM2x4ZkR1d09ZclNIY2pkUUJCRVlBa2FrWEsyUk1WZ2pMc0dDL3pyc0lhOUh0Qm96V3NaQTN6aS91TUpKNG4wK0F6ODlVOW5VV09kNG9OM25VL3FYaDZ2Z1N2RDVSeTZNcHV6MTJjeTdxcGtYSzBINDgxVGVoYnZEV1phK3FncHR6TStaV0Y0c29KZm4xN09pS09Jajl4emlobGxUcmE5NndEalUyWmVQdGZBb2F2MWpMcXFzTGtXZ3NuOFptZmttd0pETVdYZWJqN3hHNGZ6ZGdycHF5L2R6cFRIelA5cDNqK3R4WldxS3V4KzRUYkdQRE53dWJ3NHFlZWJYWE1vdGZoM0Y1YWFITXlwSEdYenFrc3NtRmtZK1MydmpWUnJld1lob0hvOUNlMDZIWjh5b3hTbmRXL0pIaXVJd0JJMG95OTFnV1ZpWWlwK1U1dFZNY21nVGJ1UnVxS1FWQVp1azhGSGtkRU5hdkpqYXBQUlIyUE5HSTAxWThBNXhpWXRQSGRtSG9ldTFEUG1xOE50bkluRjNVdnprcU04ZFB2bG00VFpzNmZuOHJQWEZ6RXhaV0xyZzhjeEtQNUZ1dTlhYzRsM3JibkVzTDJZNTgvTTVVUmZMV051SzNicU1EaUhNQ2xUL05iNlk1cE1UZVdDQTkyek9UOVl5OXRYbnRIa3ZNSjhSbEZVL3UrN0QzSmxxSnpSU1F0VGJoUDlZK1ZjdFZVeTdDakY3aTdqOFBXNW5CcGFpTlU4eUh2V25HUHQvTUc4ZmQ5aGV6RjJUNFcyNjY4QW44OURUVlY4b1Q0eFphSzROSzN1cnc5QkVJRWxhRVRLSXphRDBZakhxMkIzbW1NbUFLeXZzbk55VUR1QjVmWVZNVHBwb2Fva3NXem9EcGNKdDllSUZwbUhLa3RjdkgvdEJkNjM5Z0t2WFp6Tkw0OHRZVWl0NThDbEJuNWpXZThibzJ5VDBjZmJWMS9oYlN1djh2enBCZ2JIaTI5WmN6T2p6QjlSK3lEbjZSc3Q1ZG5UOHpsL2ZSYTlJMFVjdUZoSDA0THJlWmN2YVdMS3pFK09ycUM2WkpLSDFsd1M2d293ZitaRVJKTnp1RXgwZHM5bS84VjVERTNOcE8zZ2ZkU2Q2T1dSZTQvblhTb0xnUDBYNnBoUWE3WE5md1g0dkI3cXF1d3h2Mk4zbXZGNEZRekd0TlNkSEM0cGlNQVNOS00zamZFNVJXWVltaWlLS2JCbWxVOWlWTFdiNnBwU0srZ2RLWXNwc0hwc1pSeTZVc3ZwL2xtTVRKVXo2cHZQMHJMWHRJdE1BSGN2R21EZHd1djg2dmdDbmpuVHlELzlZaVBiM25YZ3BtazlvMEhsYmF2aUoreXNyM0x3ZXh0T0EzQnBzSUpuVDg5bjMvazZmbU5aZmcyb3YvTFNHa2E5OWR3Lzc3QWNKWk1BcFJZUGIxblJ3MXRXOUhCNXFJSWZkaTJuWjZLTy8zaDJFM2ZPdWNMRDY4L21WVGtlN2FuRFlDclcvTHBHMVVsTlJld0kxdEJFRVVYbW9IV21qRVN3QkJGWWdtYWt0ZWJBYkRZd2JDOE9HNkhmek16eUtWQzFPM3ZQVFJrWEI2dFlHU0dmMHNCWUNidGVYTXVZWnhZVG5pcEtUSk1VSzJNc0tqdEJTOU5aelF2UG9LZzh0T1lTR3h2NytQemV1L2pibjJ6Z1gzNXJYMW9KSkJmT0d1ZjM3enVSZHcxSnhSK3RWTld6L05hNmMySlpTYkpnNWpoLyt2YURuTzZyNXZ1dnJXTGYxZFdjdVQ2VFA5aDBOQyttV3NlbnpJdzRLeldmSHZRM0xsZmNzeVNIN2NXWXpXbkh6bVFObGlBQ1M5Q01hK244V0RHWUdacUl2Wk93cG1JS3I5dWoxUnAzREVZTGw0ZXFJLzdiMTErK0hadDdObGJ6ZGU1YmNKTFZjd2FaTjJPQ1luTm1kK0xOS0hQeWQrL2Z6N2RmWGNtL1B0WEUzN3p2dFZ2eVlCVTZDdkRiZDU4UmkwcVRGZlVqL00xN1h1V0hYVXQ1N1dvamo3K3dpWFZ6TC9LaHBuTzZqbWE5Zks2QmNiVStJeWxGdkc0UE5SV3hCZGJRUkJHS0lXMHZjMDFhb0JDM0Q1SWlFQktoczYyMUgwZzV2T1JSaWhpeXg1NFNxSzJjeE9VaFl1NnAxSHB5aFRGbjVIdE91RXBvckx6SS8zdlBQbjd6emdzc25UMmFjWEgxaHRFcEtoKy85eVJ2V1hHTjcreGJLbzFMU0JtalFlWEQ2OCt5WmROK2loUUhMMTlaeTJkL2NRK1hoeXAwKzh5SHJ0YWpaR0I2VUZWOXVEekV6UnMyTkZHTVJ5bEs1MWF1Z0Q4VUJCRllnbWFrUEdwVGxTTDZSc3BpZnFmSTVLVzB5SWZQcTkzaHZwT3V5SWZ2RkpzOVhMZFg0L0htemdRZVhOSERiOTUxVVZxVmtEYkxaby93Zng5NmxSVXp6akx1cnVieEZ6YXgrOFUxakUzcTYvQ3BZWHN4bzY2cWpGemI1M1ZUV3VTTG0yUzBiN1FNTlQyQkpkRXJRUVNXb0RsWFVtNW9Sak85Y1FRV3dNeHlKejZQZGdKcnlsdk1sUHZXeFI0TlZTT011R3M0MDErVjB3S3RMblZKcXhJMG9kVGk0Vk52ZVozSEhuaUp1ckloVGc0MDhObW5mb1BkTDY1SnlQYXl3ZDZUODdGVG54bUI1WEV6c3p6K0pwbmVrYktFa2dGbndnOEtJckFFSVJvcG55SnNNSm9adHNjZk5kWlgyVkUxakdDNUthTi85TTB6cXUxT0UwOGVXc0tsWVNzR2RRcUx5U2UxS2hRVUMyYU84K2Z2ZUkwL2IzNkorZFZEbkwwK201MTc3K2R6VDkrVjArZFNnWk45czFHTW1ZbXFxVjQzYzZydGNiODNiQy9DWUVyckdhNUtLeE1TUVJhNUM4bHdPUjJCNVhJYm1KZ3lVeDRqMC9LQ21hTWM2Wi9TN0lFbmZaVmNIcXJFb0tqODlNZ1Nlc1ptWXZkVVVHa2U0cUdWeDFnNmUxUnFWU2hJR3F4MlB2M1cxeG1kdFBEVDF4ZXphRlp1Mi9xWnZtckd2TE15MXV1bzNpbm16NGo5amhOVGZqOVVaRWpySVM1TDZ4SkVZQWxhY3lIbFh5b0tSUmE0UGw0U1UyQTFXTzBZZk5vZG1hSVlMVHg1ZUNrV2l4bWp3VXROMlNndFM0OXl4L3hCeWI4a1RBdXFTbHg4OUo1VE9YK09YNTFZak1zNEsyTUhraHQ4a3pSWVkwZXdCc1pLS0M0aXJVUGEwL0tEZ2dnc1FjaUVZekdiVGZTT2xBYU9rNGt1c0Z4dXIyYXBHaFNEZ2FMaUl0NjE0amozTGUzRFpKUXBRVUhJTmc2WGlZR0phaFJqNWxhbHVOeGU1c1lSV0gwalpaaE1hWGQ3SXJDRXhFUy9GSUdRTGNmaVZVcm90Y1ZlYkZ0VE1RV3EvOGdMTFZCVkh3dXIrM2h3UlkrSUswSElFYytjbXNjNERSbTd2cy9yQVJWbXhjbUIxVHRTaWxjcEVZRWxpTUFTOUVWblcyc3ZrUExCWno1RENaZUdLbU0zU0VWbFpvVVRuMGViSTNOVW40L2Fpa21wUEVISUVTclFkYVVCakNVWnU0ZlA0MlJtaFJORG5NUGRMdzFWNFRPazlSeU9nQjhVQkJGWWd1WjBwL3BEbzhsQ2p5MytkdkZGczhid2FpU3dERVlUWndlc3FLb2lOU2NJT2VCa3p3eEdQYlVadllmWDQ2UngxbGpjNy9YWXlqQ210NE5Rb2xkQ3dzZ2FMQ0ZaVGdPM3BTUjJUQlpHYkJiY1hnUG1HTk4xUzJwSE9OS25YZFJwd0wyRS8vZXpFb3BNSG95S2l0bm93V3owVUdweFUxODFRVVAxT0RQTHBxaXRuTXhhTm5kQm1DNzg4dmhpM01aWkdiMkg0cDFrU2EwdDVuZmNYZ01qRGpQbFpXa0pMRG5qU1JDQkpXUnVRSnF5RXpRWUtUTER0ZUV5RnRXTVIvM2VncG5qNE5GT1lIa01GVXk2aWxBVUJiZlhpRSt4NEZVdE9IM0ZkUFdiVUF4UWFyUmp4a0dSMFVtSjJVVmwwU1RMWmcreHBIYUV1VFBzMCs2OFFFSFFnc0h4WW01TXpnUmpoaVBJbmtrV3pJeDkwUFcxNFRJc1pyOGZTb01UVXF1Q0NDd2hVNlMxMzl0c05uTjVxQ0ttd0pvL2N3S25TOFdzK2xBVWJXYXhaNVNNODM4ZmVoVlZWUmlmTWpNK1pXYkVVVVRQU0RuWGJKV01USmJnOUppd3U0cXdUVlhUNDVqUDBTRXpaV2NuS0ZMR0tMZE1NcnQ4bktZRi9heWFZOE5pa2tpWElNVGpmNDhzWVlLR2pLNUZVVlVmVHBmS3ZEZ0M2L0pRQldaejJ2dVRUMHV0Q2lLd2hFeHhNcDBmZXd4bGNRK2lMYlY0cUM1ejQzUTdNVm0wV1JockNIaDRSVkdwTEhGUldlS2l3V3BuZGNQd0xkKzEyWXU0Wml2ajdQV1pYQm1xWk14WnlxaXprbDdIQWw2L3NZcHk0ekFWbGdtVzFReHgzOUllNnFvYzBpb0VJWXdwdDVFTGd6VVlqSm50WnJ4dUo5Vmxia290bnJnQ3kyTW9KODA4OGllbFpnVVJXRUttT0FQNFNIV0RoTEdFODllcjQzNXRjZTBZeHdhbk5CTllUay9pMHdMV01pZldNaWRyNXI0cHZzYW56Snp0citidzFUb0d4aXNZYzFieTdLV0ZkRjViUnJscGxNV3pCbWxlZVVYRWxpQUVlUHJFQWthWlI2YTNsM2pkVXl5WkhYK0IrL25yMVNqRzRuUnU1VVBXWUFraXNJUk0wZG5XNnR6d3lPUG5nV1VwNlN0ekViM0RwZmhVSmVhVzZsVnpoamcrWUFlczJnZ3NieEVlbnlIbHRWUVZ4VzZhRnQ2Z2FlR05Od1RYNFNzMWRGMnBaOGhSd1dzOXF6alMxMGlsZVlSMUMzcDV5NHFyc21CZW1MWjRmUXF2WFo2TGtzSFVERUVVcjUyVjlVT3hsWkdxMEdzcnBXaEdVVHEzT3QvWjF1cVUyaFZFWUFtWjVQVlVCWmJCYUFaRm9YZWtOR2JXNWNhYU1YeHU3UmE2VDFESC8reGZ3Vy9mZllZaURkWlBWUlM3dVg5WkwvY3Y2OFduS3B6b21jR3paeFp3ZmFLYXA4N2N4VXZkalRSVUR2UCt0ZWZpWnBjV2hFTGpsZk56R1BQTnlVb2lJSjk3TXVicEVPQlBNSXFpK1AxUGVuNVBFRVJnQ1JrWFdBK24rdU9pSWpNWHJsZkZGQjRMWm83ajlhcjR2TzUwbmFMZkNSdktPWGo5TGs3L2ZBNFdveE9Ud1l2WjRBdWtpMUF4QnRKR21CUWZLQ29XbzQ4aWs1Y2lzNGZ5SWhkVnhVN0tpMTJVRjdtcExIRmhMWFc5c2REZG9LaXNtVHZFbXJsRHVEd0d1aTdYOHVMWitWd2VxZU0vbjV0RFRja2c3MTV6Z1RWem80K3luUjRqWDM5cEpiYkpNcGJWRHZQV2xWZVpVVFlsTFUzSU8xVGcyVE1MOFptcU1pK3V2RzY4WHRXLzh6Z0c1d2VxS0NwSzI0K0l3QkpFWUFsWkVWZ3A0ekdVYy81NkZROHNqNTRRMldoUVdURExRWjl6RWtPSk5pY1RGdnR1VUdSeEF3YThxZ0d2RjZiQ2dsbmo3a3E4SGkvVnhlUDRWQU51bnhHZmFzU3JHdkg0VEtpcWdrSHhVbVR5WUZMY0ZKbmNsSmhkV0VzY05NNGFZVkhOS0hjdkd1Q2V4ZjFjSHl2aHAwZVdjSEZvRmwvcjNNaU0xNGQ1MyszbldEdC84RmJSYWZMeXNYdlA4S1huNytDRlM3ZHo0Tm9TNmtxdjg5dDNuMlpPdFVUQWhEeHlEbGRtTWVhZERjYk0zOHZybW1UQkxFZmNnOXN2M0tqU1lvRzdDQ3hCQkphZ2I0RmxNSlZ3cGkvKzJxbzFEVGZvT1ZNSEpaV2FQSFNaeGNIZnZlZWxxUDgrTkZITXptZmVpc3M4Z3pzYXp2S0J1ODRETU9reU1UNWxac0pweHU0MDhiMkRheGd6cmtDeGQxTlQ3c0kyV1U2L281YUQvYVVVRzZjb01VNVFicG1pdXNUTzdYTnU4STdWRnpsNmJSYjdMODdubXdjMzhQTmp3L3pPM1NkWUhEYXRVVmJrNXMvZWNaQW5ENDJ3Ly9JU0xremV5ZWVmcitIMnVzdjh6dDJuNDNZaWdxQUhmbjVzS2E0TUp4WU40bk03dUgzeGpiamZPOU5ueFdCS2V6MllDQ3hCQkphUVdUcmJXdnMyUFBMNEFEQTdsZDhiemNVTTNDaG15bTJNdVJCODFSd2JUNStZME95NVhkNGlQRjVEMUVPZnovUlhZL2ZPUURHWDhkcVZlYng5OVNYS2lqeVVXUHlmV2lheE84MTRDZXhFS3E1bDdkeFhlYzhkRjdrK1ZzTFY0WExPRE15a2Y2eWNHM1lydmU3Yk9ENDhTYmxobUdMakJCVkZrNHdOKzdCNUxIejV4WHVZVjNXRGo5MXpBbXZabSt0bUZlQ0RkNTNuOW9ZYnRMMTZPelpsS1FmNlo5SDlpMm9lZSt1aG03NmIxRWpmcCtCd21hZ29ka3NERmpMR3lWNHJJKzdhekNjV0RkcUxaNEtWOWJFenVFKzZUQXlNRlZOZWs5WU93b0hPdHRZK3FXRWhxV0NDRklHUXFzNUsyU2thakpRVUtaenRyNDc1dmNXMVk3ZzhLajZ2UjVNSG52UlZjbWt3ZWc2dW96MnpJVERLSFdNaFAzaHQrUzNmdVRaY3hwVHFqNmlweG5JNkw4L0g1VEZRVitWZy9hTHJmR1RqS2Y3czdhOWhOcmhBVVZBTUpzeStFVkJWQnFicWNSVTM0clBNd3FjcW5CMWZ6Yi91M2NUUGppeTY1YXpFSmJOSCtjdDN2VXBqeVJHTWlvc0IzMnIrN2RjYnVUcFVudEs3ajA1YTJQbkx1K1JNUmlHalBIbDRPVTdEN0t6Y3krZjE0UEtvTEs2TnZjRDkzRUFWSlVWS3VobmNPNlYyQlJGWWd1NEZGZ0NtTXM3RUVWZ1drNWNGTSsxNFhkcmtsbklxMVJ5K0d0MzVEOW5MM3N3Y2I3UndkbkFPZ3hNM2ozcTdCNnR4ODZiSUdWVVg4T1RoSlRkOVo5aGVqSXZTZ0pvMFVWM200dS9mOXlLdHYvRXM5elVjWUthbEQ2UEpoR0lxWmR5NGxHY3VidUN6djlqSXdOak5VeGhsUlI3K3o5dTdlSERCUWNwODF4ZzFMdU8vWDFxWDBJSFo0Y3dvYzJKemxQRFU4UVhTY29XTWNHNmdpbUhYYkZDeUkrSzlMZ2NMWnRyam5xcHdwcjhhVEdYcDNrNEVsaUFDUzhnYXI2WHpZOVZVenJGcjhkZHBOQzBjUUhWck0wMW9NSm81ZTMxbXhIL3plQTNZM1RjTG5IRmxBZi9UdWZJV2dXVXdoU3k2TnhaenJMZUI4YWszLys3S2NCbVRQdjhPS3NWZ29IOXlEa2V2ekdMQnpIRitiOE5wL3ZxaGZWU1lSLzJkaE51SngxaEZ2KzgyL3VPWlRYU2NuSGZUL1JUZy9XdTcyYnJwVmF5KzA0eXdrQys5ME1UWVpQTExkVGN0N2VQcEU0dHd1R1JsZ0tBOVB6cTBIS2R4ZHRidXA3b25hRm80RVBkN3g2N05RaldWcDN1NzE2U0dCUkZZUXJZNGdIOUhka3FZekNWY0hTN0Y1WW5kQk5jMERPRjFhYmVMYnN4VmRVdFVDdURTWU1VYm91Z05jV013Y20yOG5pc2gwM0xqenVLQTdIbVRVV1VCZXc2K09aMTRkbUFtWHFYMGpmOTNHdXY0MGVzcjhQcjh2NXR5RzNFRXhGeUo5eHAxeXV0WTFYTk1Nb3RmbnIyYko1NjU4NVp5V1Z3Ym1ESXNQY2FFYnhaZmZtRnQwdE45NzE1ekVVVXg4cE93aUpzZ3BNdnB2bXF1VDlWbkxYb0Y0SFhadVgxdTdBU2pMbytCSzhPbG1NeHBMWEJYQS81T0VFUmdDWm1uczYxMWxEU09qVkNNSml4bWhiTUQxVEcvdDNEV0JFYkZoOWV0VFFMbENScDQ2dGlpVzBlNVBUVTR1VFZ2ajhQUXdQOTBybjdqLysydVc4V1pZckJ3YnJDZW9ZQnd1MmFydk9YOHRWSGZmSDUrdEJHQXk0TVZUS3IrZXpuTkM1aFZNY25mdi9jRlByem1CVXFWRzV3ZVc4Mi9QTFhoamVzRktTdnk4S2R2NzJMemtzTmNIcXlnNDlTOHBONjlxdFRGM09wUmp2WFdKM1Ywa0NERTQwZUhWdURLWXZUSzYzWmlWSHdzaUhQQTg5bUJhb3JNQ2twNjV5R2VDZmc3UVJDQkpXU05GOVA1c1dLdTROalZHYkcvbzZqY050ZUd4NmxORkVzeG1qZzlNSnNwOTgwQ28zdlFpc0ZraVhCL0E0T3VlbzVlbmNuNGxCbVhML0pSRytQS0FyNTNZRVZVRWVZMVZ0QjVhUUhqVTJaTzlzM0NyVlM4OFR6ZHRqbjBqWmF5YVVrZmYvbk9mY3d3WE9XNjd6WSt0M2RqeElPeDMzUDdSZjc4SGEreC8wTHRHMUd4UkhsdzJXWEdYSlU4ZjJhdXRGNUJFMTYvTW90QlYzYWpWeDZublRYemhsR1UyRUgwWTFkbm9KZ3JjdXJuQkJGWWdwQUtMNlgxYTNNRnIxK3RqZnUxRFkxOUdEemFEU0JIbWM5UFgxOTg4OTlOUlo5Q2NCcHIrZkhoNVZ3ZExyOWxHdkVOSVdZd2NtV3NqcXZENVRqY1JWSHV1NGp2N0YvRnhhSHFtN0xUMnczeitNNStmNVNzck1oRGJjVVlpc0hBdUhFWlgzcnhiazcyM2lwQ0Y5V004YWZ2ZUozSkpOZFQzVDV2aU9yaWNib3V6NUhXSzZTTkN2enZrV1c0VFRYWjdiZzhvOXk5cUQrKytMdGFDK2tMckpla3BnVVJXRUplQ1N5anBZU0IwZUtiRm9oSFlzM2NZWnhPRDZwUG84T1RqU1VjN3BuL3hsb3NtNk1JcHhwcmw1SENpRzh1MzNwMU5SNUQ5TVd5ZG1VZW4rOW9Za3FKdkhoZk1acTRPREtISVh2cHpYK3ZHTGp1Yk9EUVpYOG41UXV1clZJVTdLWWx0SFd1NC9pMVd4Zm5sMW84bENlWjE4cGk4bEpoY1REbUtyOGxpaWNJeWJML1FoMGozam1FcjB2TXFLanplWEU2UGF5Wk94enplK05UWnZwSGl6RmEwazR3S2dKTEVJRWxaSmZPdHRiTHdPVlVmNjhvQmtwTGpCeTlPalBtOTBvdEhoYlcyRFdiSmdRWVV4YnkxWmR1UjFVVnp2YjVFNHpHd21PME1tRlpIZk5jUk1WZ3dGbXlBcmVoT3VwM0hJWjVqTGh2SGUyN2pMWDg1UFhsZUgwS1kySFJOSWRwRWQ5KzdjNllPYnlTb2I1cURMdTNpZ3ZYSzZVUkN5bmo4Um40NWZHbHVJMHpzM3RmcDUyRk5YWktMYkh6NHgyOU9wT3lFdU9icVZkUzQzTEF6d21DQ0N3aDY3eWNsck0wVnROMU9mNDA0YVlsUGVBYTBleWhGWU9SZm1jajdRZVhjclJuTnFxcE5EdWxwU2dveFpFalhDUHFQTDYxYndVVG5sdUZqOTNZeUZkZlhxdEppb1ZsdFVPNHZVWXVEMWRKNnhWUzVoZEhGektpenMvK2pWMGpiRnJhRS9kckJ5L1Y0akZXNTlTL0NTS3dCQ0VkOXFielkxTlJPVWV2em9pN1dIdmRvaHM0cDV6YVRSTUNIbU1WblQzTE9UTlFuZTRvVnhOOHhrcU85RFl3b2RaSEZHWWp5aExhOXExTyt6NzExUTVLVEU1dWpKZEo2eFZTd3VFeTBYbHBBYXF4UEt2M1ZYMWVuRk5PMWkyTWZmNmcxNmR3N05vTVRFVnBQOTllcVcxQkJKYVFLenJTYW9BbUN3YURJZTZ4T2RaU0ozTm5PalNkSmdSd0d1ZmdNQzdTVFdHNml4YWhSSnVHTkZpNE5ES0h2cEgwb20ybFJSNk1paHM1T2xwSWxlOGZXTUVvQzdOK1g0L1R6dHlaRHF5bHNkTzJuTzJ2eG1Bd1JOd1puRTMvSm9qQUVvU1U2V3hyN1FGT3BkVUlMUlZ2TFBDT3hmMUxlMUJkMnFlak1aaUxkVk9laWlHMlNkcVZCbjUyTkwxRW9hVm1EejZ2bTFLelJ4cXdrRFI5STZXY0dXeEFNVnF5Zm0vVk5jcjlDVXdQSHJwY2c4R1M5cHJGVXdIL0pnZ2lzSVNja1Y0WTNWTEpxeGZxNGtaVU5qUU80SEpPYVRwTm1HOG9CaU85bzlWcFhjUGxOZUQyS05SVTJLWGxDa256clZkdlk4S1EvYlZYcXMrTHl6bkZoc2JZeCtPb3dLc1g2c0NTOWhwRG1SNFVSR0FKK1Myd1RKWlNwanltdUx2YXFrcGRMSzRkeHowMVh2Z2xxa2FYbTVPK2tyUVd1enRjSm55cXdzeXlTV201UWxMc3YxQkgvOVM4bkt4WmRFK05zN2gybktwU1Y4enZYYmhleVpUSGhDbjk5QXdpc0FRUldFTE9lUmFZU3VjQzV1SXl1aTdGMzAzNHRwVlh3V1diRm9XcVRsd0Vyek9DOWpMamNLWXVzRzZNbDREcVkzYVZRMXF1a0RCVGJpTS9PN1ljdDJsV2JoN0FaZlBiZnh5Nkx0WmlMazU3QThjVThJelV1aUFDUzhncG5XMnRqb0RJU2wxTW1LdlpkNzQrN2pUaFhRdHU0SEc3OFhsY2hWMm9pa0pWc1l1VlZZY3A4ZmJlL0U5NHNaaDhLVi82ZFA4c2lzMWVhaXFtcFBFS0NmTS9uU3NaSVRjYlFud2VGeDYzbTdzV3hONDlxQUw3THRTam1xdlRIalIydHJWS2lGY1FnU1hvZ3ArbDgyT1RwUVM3eTh5RmdkanJKb3JOWHRZdnVvRjdzdkRQWG5Vd2s3ZXV1TUxIMXUyajJuY1NOUkROTWhzbXFTeEpYV0JlR2E3Q1d1YkVvTWcrUWlFeHVxOVhjV1p3SG9xeEtDZjNkMCtPc243UkRZck5zZGRmWGhpb3d1NHlZN0trbmRmdVoxTHJnZ2dzUVMvOElyMmZLNWlLSzNqNVhGM2NiemF2dW9yUE9SSnpuVkloNERiTzRJV3o4MWd6ZDRpL2ZtZ2ZhNnlIS1BMMk1iTmtJdVZyT2oxR1JwM2xsSm9sZWlVa2hzZHJvRzMvR2h5R2VibDVBRlhGNXh4aDg2cjQwNE12bjZ2RFZLekppUWUva0pvWFJHQUp1cUN6cmZVcThIcGFFc3RTemFzWDZ1SW1IVjA2ZTVUS0VoZHVaMkh0Z2xQVm02ZjlGTVZBNzFnMUt2N0kzVnpyT0lyUFJmUEtpeW5mNDBEM2JFYmNNNWxuSFpOR0t5VEVkL2F2d09aYkJJcVNrL3U3blhZcVMxd3NtUjA3YXUzMUtleTdVSTlpcVU3M2xvY0Qva3dRMHNJa1JTQm95SStCdGFuKzJHZ3V4cWVZT0hwdEpuZk9INHo1M1hlc3ZzS1BqNVJEY1hsQkZKelA0MkNXY280cHRScUhjZjRibmRtRWR3YVhibFJnTnZsNDZjSVNxaXlqckprN2xQSjlYamkzQUtOQllVWGRZT0lkbk5mQXFNT0N3MlZpeW0zQ3F5cTRQQVlzSmg4R1ZFcUxQRlFXdTZnb2NXczY3ZGgxcVlhMTh3Y3hHbVFxTTFlYzZyTnk0c1lpVkdOcHpwNUJkUTd4amp1dXhQM2UwV3N6VVJRanh2VHoyajBwTlMrSXdCTDBSanZ3RDJsZHdXTGx1Vk56NHdxcys1ZjNzdWUxeFpnOExpMnlOZWNjeFZERS9CbDIzckg2T045NFpRMUQzb1Y0alpVNGxWbDBuRjdBTlZzVlBveDhaT1B4bE85eHVxOGFtN3VHVXNNbzgyZmVQTTNvVXhYNlJrcTVjTDJhQ3plc0REbEttSFFYNGZTYThmak0rRERqeFlKSE5hRmlRRkVVVkZYRmdJcEpjV0pVWENpcW0yS1RpMUt6azRxaUtkWTBYR2RaM1FpMUZhbXRGZTRiTGVQYWtRcmVmMmUzV0ZZT21KZ3k4eitkYTVnMHpzM2h3TU9GeCtYay91VzljYi83M0ttNVlMRnE1Y2NFUVFTV29CODYyMXBQYjNqazhlUEFiU2szeUpJcWpsMnpNanBwb1NyR1F1NVNpNGQ3RmwvblFFOFZSUld6QzBCZ0dibGlzekxYZXB5L2ZzOStmbjVrZ0gyWEZqR3VMT0o0ejJ3TVJaWGNOLzg0aTJhbGxnTk1CWDU0YUNWT1F4MWxuQUhnNEtVYURsK3Q0OFpFT1haWENWTnFPWk5xTllxeDZNMDhSd3Bnak5FQkFxSDU0Q2RVd0FVNFZZNE5UMUorWXBoaXd6aDFGV1Bjcy9nYWErWU9ZeklrdGdQeW5zWDliUC9oUnQ2eTRscGFpL3FGRklTTnF2QmZ6NjFsUkZtYTArZHdUOXE0WjhrQXBaYllwdzZNT2l3Y3UyYWxkRmJheVVXUGQ3YTFucFlXSUlqQUV2VElqOU1SV0lyQlJIRkpFUytmcmVmZGQxeU8rZDJIYnIvRXZ2T3pzWlRYNk9LdzVvVEZqcXFpd0MxcldzWjlzemd6VU1XS3VoSGV0N2FiZTVmMDh0bWZlL0NZNTdLNDhpUWZiRHFYOGoyZlBUV1BRZmRjTUNwTXVFcjQ1NmZmaXQwM0E5VlU1aSs3UVBGcFZvcUtnc0ZjaW9OU0hNRFF1SS9UWGN1b1BIeWQrZFpoM3JtNis1WW9Xamd6eTZlWU8yT0tiKzVieFdOdmUxMHNLNHQ4NTlVVjlMcVdnc0dVUXp2eDRaa2M0NkUxbCtOKzkrVno5UlNYRktHay83dy9rdG9YdEVJV3VRdGE4NE8wSGF0bEZoMG41OFhOaWRWZ3RiT29aaHkzSTc5U05wUzV6bENqSE1mb3ZYbWh1Y3N3azJkT0xYemovMy82K21Jb3FxR2g1QngvOUpZanBMckVlTmhlUk1lWnBYaU1NL3ozc1N6QWJsd0E1b3FzQ1ZORk1lQXpXUmt4TE9lSTdXNGVmK2xCL3VXcERaem9tUkh6ZHg5YWQ1YmpQVE01RStjd2NFRTduajZ4Z0NQWGwrTTFWT1QwT2R5T1VSYlZqTk5namIyWlJRVy92N0Jva2dEMUI5SUNCQkZZZ2k3cGJHczlDUnhPNXhxbW9sSW1uQlpPOXNSZlQvSEJ1eTdnbXhyS3E1UU5ScE9KUDkzOEdzMkw5bFBoUGZmRzJZcUtZcUIvdkJxdlQrR0hYVXM1TnJpTWFtTXZuMmsrbFBDMFdqaGVuOEtYbnIrVE1hVlJOKyt2R0l4TUdSdm9jZC9CMTE1N2dNLytZaU1YYmtRK0ptbjFuR0htemJUenJWZHZpN3U3VkVpZlE1ZHI2VGk3R3FjeHg5UHVxb3B2YW9nUE5sMkkrOVdUUFZZbW5CWk1SV2t2eEQvYzJkWjZTbHFCSUFKTDBEUGZTYk1MeGxCczVhbGpDK0orODdhNXcxaExwL0xxZk1JeHRZSG56OHpsdlhkY1pOdmJYMlpKNlNHS1BQMEFqSHRuOGVYbmJ1UFZxeXNwVXdiNTQrYURjZGVmeE9Kckw5L0dkZmNTRklOUmZ3V2hLTGlNdGZSN2IrZkxMOS9QNDgvY3lhamoxZzBMSDlsd2dqRm5LZi9UdVVJc0s0T2NHNmppQjRmdVlOSTBMK2ZQNHA0YXgxbzZ4VzBOdzNHLys5U3hCUmlLclVEYUF2dzcwZ29FRVZpQzN2a2UvdlhQS1dNcXNYS2l4OHJnZVB3dDF4KzQ2d0sreVVIZHZMenE4Nko2b3AvenA1aEtPSGhsRGdEVnBTNytaUE1oUHJidUZheStrM2dvNXF4dE1XWjFuRTg5MkVWMWFlcUx1OXNQTHVYMDhESjh4ako5dHhaRlljclV3Tm1KSm5iKytsNWVPVjkvMHo4dm5EWE82dnArWHJ1eWtJTWg1MVZlSFM1bjBpWExTTFhnbXEyTXIrMXJ3bTdTUjZUVE56bklCKzZLSDcwYUhDL21SSThWVTBuYXV3ZDlBYjhsQ0NLd0JQM1MyZGJhUjVvSHBTb0dJOFdscFhTY2pMOUZmRVBqQUNWbS9VU3hGTVdBZWVxU2YvclBHem42Tk9hWnhibVFZNEh1bURmSWgrNDZSWkZ2a0dLam5UKzg5eEQxYVJ6Ry9LdmpDOWgvYlJVdTQ2ejhhVGdHSTJQRzVmencrRDE4dnVOT3B0eHZSdDArZnM5SktpeDI5blRkeHZYeEVteU9JaDd2dUoyU05LSjdncCtCc1JLKzlNSTZKb3hMZFBFODdxbHhTc3hUYkdnY2lQdmR2U2ZuVWx4YXFrV0U5cG1BM3hJRUVWaUM3dmxHMmxjb21zVXpwK2JlMU5GR3dtaFErZEM2OC9nY04vVHg1b3BDVFpXWHYzekh5Nnl1T2tpSjkrb3RhOFNjeGxxZU9yNzRqZisvT2x6T2R3L2VqdEdvOE9HN2pzVE5XaDJMcDQ0dHBPUDhHcHpHdXJ4c09HNWpEZWNuMXZMUFQ5MUQ3NGcvK2xaaThmQ3hqY2Z3cUdiKzY3bTd1REpVams5VjhQakVoYVhEc0wySUx6NjNqbEhEc3B4bGFnL0g1N2pCaDlhZGo1dGdkc3B0NU5sVGM2Rm9sajc4bFNDSXdCS3l4SThCV3pvWE1KcUxNWmt0UEg5NlR0enZibHJTVDRuSmlXZHFRaGN2UCs0cXcyVDA4VWR2T2NML3QrbGxaaHVPWWZZT2gyZ3dBMzNqVmh3dUU0TVR4WHo1eFNZOFNnWE5TMC9RdE9CNld1THFtUXUzTVdWc3lPL1dZN1F3eENvZWYyNGpoeTc3cHdWWDFOdDR5OUt6MkZ3ejJYdHlJUmpNZk83cEpsd2VvMWhiQ294Tld2aDh4M3FHbFJXNlNYUGltWnFneE9SazA1TCt1Tjk5L25RREpyTkZpOHp0d3dGL0pRZ2lzQVQ5MDluVzZnUytuZTUxMUtKYWZuNWtVZHdkWk1Fb2x0ZHhYUmZ2UDZIV3ZDRU1HbXZHK092M3ZNcjdWcnhLbGU4MHF0ZC8wUEtZMnNCUFgxL0U0OCtzdzBFTjYrYWM1dTJycjZSOHovYURTM21tKzQ3OEYxZHZpRkNGQ2RNU3ZuKzRpV2RPK1JkZXYvZU9pMnlZZTVZcm83UHhHcXU0TVZITzMvOTBQUk5UWmpHNlpBWUFVMlkrdC9kdWhsaWhxeHh5WHNkMVByVHVYTnpvbGRlbjhQTWpDMUdMYXJXNDdYY0Mva29RUkdBSmVjTlgwNzJBcWFnTXQycW1zenYrdHZGTlMvc29zMHpobnRUQlFjYW1DbDQ2LytadUxBVjR5NHByL00xREwzTjM3V3VVZVMrQnNZaDkzUXV4ZWVleHJPb2N2M1AzbWRSRXFLcncxWmR1NDlWcnR6TmxxQ3U0UnVRd3p1ZXBNMnQ1OHJCL1N2WDNOcDVtOC9MVGxCakdtVnM5eHR0WFgrVWZmcmFlWVh1UldGeUM0dXJmOTY1blNGMmhxOTJsN3NreHlpeVRiRm9hUDNyVjJUMGJ0MnJHVkZTbUN6OGxDQ0t3aEt6UzJkWjZETmlmOW9XS2F2bHhWeU9xR2orSzlYc2J6K0IxM05CRlhpeWJjd1o5SXpmbjVpazJlL240dlNmNTR3ZGZ3dVE0aDY5NEx2Tkt6L1BKQjQrbWRBK1B6OEFYbnJtVFk4TnI4bXRCZTVKTUdlZnc4dVhiK09rUi95NjM5OTdSemQrKyt3VzJQbkNFQjViMzhMc2J6L0pQUDE5M1Mza0x0NHFyLzl5N25rSGZLbjJsN2xCVnZJNGIvTjdHczNHalY2cXE4T091UnRBbWVyVS80S2NFUVFTV2tIZDhNZDBMbUVzcUdIT1cwTmtkMzZHdVczU2RXZVYyWEpPNXorNXVWK2J5M1FNckkvN2JMNDh2UWkycXA4WjRtczgwSDhLZ0pDOElwOXhHL3UzcGRWeXdyOFpycUN6NGh1UTAxdkhpeGR0NDZ0akNOOFJxTUVmWTJubURmT3F0eC9qYzAzZHlmcUJLckM2S3VQcmNyKy9tdW04VjZDd3Ztc3N4eXF4eU8rc1d4Wi9pNyt5dVpjeFpncmxFazB6elQwakxFRVJnQ2ZsS081RG13aWdGcGJpV0h4NWNIRGVLcFFBZjMzUWFqLzNHR3huU2M0VmlNTkRuYU9EUTVacWIvdjZaVS9NNGNXTUpsY28xL3JpNWl5SlQ4cytwcWdxZjc3aUxYdGNxVk1QMGlkcE1HZXQ1NXNJYW5qdDlhekxNeHBveC91SmRoOWo5NG1wZXZ6cExMQytFWVhzUi8vYjBCZ2JWbGJvVFY2clBpOGR4ZzQ5dk9oMDNWYWlxS3Z6dzRHS1U0bG8wU0N4NkhmaWh0QTVCQkphUWwzUzJ0YnFBLzA3M09zRW9WdGZsK0Izbnlub2JLK2ZZY05tSGRDRUlmbmg0RmJiQStxRHpBMVU4ZlhvVlJZenhxYmQwVVZXU1dpTFJ6dTdaRERnWG9CcW0zN3FqS2VNY2ZubnFOZzVjdkhWZDN1ektTZjdtdmEveFpGY2pyNXg3TTJHcDE2ZndEeis5bTRzM0txZGRlUTNiaS9qQ00rdjlDOXAxbU5IZlpSOWk1UndiSyt2amJ6bytlR21XbHRHci93NzRKMEVRZ1NYa0xidUJORE5DK3FOWTMrOWNtdENaZEIvZmRCclA1Q2crVCs3OTU2aXlsQzg4MjBUZlNDbGYzN2NXZ0VmdWVUMnRSS0lITDlmak5zNll0ZzFxMGpTZjl0ZlhjdXphekZ2K3JhTFl6Vis5cDR2T2k3WDg2dmg4QUo0L001ZEJieVAvL2ZKR2ZuMWl3YlFwcDRHeEVqNzM2dzBNc2xLWDRzcm5jZUdaSE9Yam0wN0gvYTdYcC9DREEwdTFpbDY1Z1YzaW1nVVJXRUplMDluVzJnTjhQOTNybUVzcUdYZVc4TXE1K0R2bGFpc21hVjU5RGZkRWY4N2ZYekVZdWVGZHliLytlaU4ydFpZSGw1eGhlVjFhS2NKd2U0MWFkREo1THJJVzhwM1g3dVI0QkpGbE1YbjVrODFIR1hWWStPSEJScDQ1dlJDUFVzcVlPb2Rmbkw2VC8zcHVMUzVQWWJ1L3E4UGxmUDZaRFl3YTlaV0s0YVoyUE5GUDgrcHIxRlpNeHYzdUsrZnFHSGVXWUM3UkpBcjVnODYyMWw3eHpvSUlMS0VRK0RkTnhFcEpIWHRlVzRMYkc3L3BmbWpkQmN3NGRIR0VqbUkwNFM1WnlneHpEKzlhYzBrRDBhWktpd0xzcHNWODg4Q2RuT3E5OVN3NlJWSDU4TjNubVQ5amdxVTF3N3h6NFF1MHJIeUcyU1Y5bkJwZXpqLy9jaVBYeDBvS3Nsek85RmZ6eGVmdlp0eTRERVhScHhCM1Q0MWp4c0dIMXNVL2M5RGxNYkRudFNVb0pacWxJZmxYc1I1QkJKWlFFSFMydFI0RmZwWHVkVXpGNVhnb3B1TkUvRE1LaTB4ZUhyM3ZKSjZKQVZUVmwvTXlVSDFlbHRUYXBubmNTWHNtell2NVJtY1Q1d2FxSS83NzNZM1hlZlMrRTd4djdRWGV1dklxZi9HTzEyaXNQTWV3Yno3LytjdzlFZGR5QVhFM1ZPaVZ3MWRxK1BxcjY3Q2JsK3JtK0p0Ynk5YUhaMktBUis4N21kQW1qMmRPenNWRE1hYmljaTF1L3l0SnpTQ0l3QklLamM5cGNSR2xwSjRmSDJwa1BJSHMzZXNYM2FDeFpoVFh4R0RPWDE1UkRGd1pxa1NMMkpQTFk1TFdGSUxEdEppdjdGdkg4Wjc0NjlKTVJoOS8zSHlZTzJjZHc2bFVzZWZJM1h6NzFaWDR3Z1RWTTZmbThxKy9Xcy9nUkhIZWxNTUxaeHI0YmxjVGR0TmlYVCtuYTJLUXhwcFIxaStLZjM3bytKU1pIeDlxUkNtcDE1VWZFZ1FSV0lKdTZHeHJmUWJvVFBjNlJrc0pKa3NwN2E4bDFvbHNlZUFFdnFrUnZPNnBYQ3NzK2wyTCtQZW4xNlhkYVR2Y0ZtbFFFVVRXdHcvY0ZYRk4xaTJPVDFGNTlMNFR2SHY1UVl6cUZLLzFyMlhuVStzWm0zeXpYQTllbnNPbHFUWDhlOGQ5N0hsdEdSNnZ2dDNsajdxVzh0TlRkekZwMHZjaWZxOTdDdC9VQ0ZzZU9KSFE5OXRmVzR6UlVvclJvc2wwYm1mQUR3bUNDQ3loNFBnN1RiUkthUjB2bjZ2bjZuRDhLWU9haWtsYTFsL0FQZDZiOHd6dlhtTVZGNmZXOHJtTysvbmNyOWR4K0VwTlFyc2lReGwxV0pqMGxFbExpb0RkdEpodnZkYkU0Y3VKWmZsKzI4cXJ0RDY0ajVtbXkvUk9MV1RuMC9kd3RyOGF1OVBNbUt1U0t2VWlSY1pKWHJxNGxMLzkyU1pldjZLLy9GcSt3RkZKcjF5OUhhZHhqcjRyU0ZWeGovZlNzdjRDTlFrc2JMODZYTTdMNStveGxOYnB5djhJUWtMOWxLcktZdG1Dcm1BZHJzSFk4TWpqaDRHMTZWN0g0N2hPUStsVi91YTlCeFB3NndwLzgrUUdyanNic0pUcnBKTlVWWXplRVNvTTEybW9zckY1MVVXVzFNWS9SL0dGTXcyMG4zZ1F6T1hTd0tOUTZybkViNjQ1eHIxTEV0c281dlVwL1BMWVF2WmRYSWg5eWtSOWhZMnJVMHRaTi9zWWo5NTNuT1BYWnZLTFkwdTRjTDJNNVhXai9Oazd1blR4bmk2UGtTOCt0NWJMam1WNWtjM2ZOVEZJYlZFUC8vaUJUcFFFVGkvNHg1K3RvOGN4RDFPcEpzZmlIT3BzYTIzU24rYVVQcmhRa1lVY1FpNzRlK0RKZEM5aUxLbmh5dkFvKzg3WGNlK1MvamhDVStWVGJ6M0tYLzI0QkdOUk9VYXpEdGJWS0FwZWs1VVJyTmhHZlp4N1pSRVZ4aUVXenJUeHdMSXJMS29aaTdnZy90WHVCaEZYY1hDWUZ2S1Q0MFljTGhQTnE2N0ViMHNHbGZmZWNaSE5xNjd3OHlPTlBIK21nV0xMZGQ2MXBoc0ZXRE4zaURWemgrZ2JMZVZDbE1YMDJXYlVZZUVMenpSeDNiY01EUHBmSitaMVQrR1pIT1pUN3pxYWtMamFkNzZPSzhPVldLdzFXajNDUDRwbENDS3doRUxuZjRIRHdKM3A2Uk1GWTlrY3Z2MnFoN1h6Qjk4NGx5NGE5ZFVPSGw1L2dSOGVNbUt3THRKVmJpREZZTUJsbU0wUXN4a2M5SEw4eGhMS0RNUE1MSnRnL2NKZWx0U09NanhSeEMrUEwyYlFOVmNtOXhNUldjWjVQSDNXaU1ObDVuMXJMeVQwbTJLemx3K3RPOGR2clR2SDFhSHlXNUxCMWxjNTBrb1FxeFZYaHN2WjllSmRqQ2pMZEpsQU5CeFY5ZUVlNytIaDlSZW9yNDVmZmc2WGlXL3ZXNDZ4Ykk1V1VmakRBYjhqQ05uejZ4S2VMUEFLMXVrMjdRMlBQUDUyNEdrdHJ1VVp1OHc5Q3kveThVMW40anQ2NEI5L3VwNnJFdzBVVmN6V2Z3V3FLbmduS0ZIR2NLa2xlSXpWdWswYXFWZUt2TmU1cSs0VXY3ZnhkRUc4ejhGTHRldzVkRHNPVTZOdTB6Q0U0eHdmWUY1NUQzL3p2dGNTU2xQeXpWZVc4K3FsUmt5Vjg3VjZoSGQwdHJYK1dwOG1MbjF3b1NLZVdzZ0pBV2YzdkNhTnVHd09MNXlady9tQnF2aUNFL2owMjQ2Q2F3U1AwNTRQQ2hsTUZVd2FHL0NhWm9pNFNxVnpOOWJ5V3YvdC9QZnp0OStTaWlHZlVJSDJnMHY1L3VIMU9NeUw4MFpjZWFZbXdEWENwOTkyTkNGeGRYNmdpaGZPek1GUXBsbGFodWYxS3E0RUVWaUNrQ20yYTlLSWpXWXM1VFY4K2ZuYkV0cEtQNlBNeWRZSFQrQWE2OFhuOVVndFRBTThSaXVuUm0vajh4MTM0Zkhsbjl1YmNodjUvTjY3Mk5kekoxT211WG56M0Q2dkI5ZDRIMXNmUE1HTU1tZjhldklhK1BMenQyRXByOEZnTk92S3p3aUNDQ3doYitoc2ErMUVnOFh1QUtZU0szWjNHVThlV3BUUTk5Y3R2TUY5eS9wd2ovY0VZZ05Db2VNMVZIREp2cHAvKzlVNkpsMzVzL3gwWUt5RWYvcmxSczdiYjhkdHNPWlJpYXU0eDN1NGIxa2Y2eGJlU09nWFR4NWFoTjFkaHFsRXMvZDhNdUJuQkVFRWxqRHQrQXY4Sjl1bjM1akxHbmpxMkh3dURWWWs5UDJQM1hNR2EvRVl6dkZCcVlWcGdzOVlRbzk3TmYvMjlQcUVUZ0xJTmZ1NzYvajNqbnNaVmxhaEdJdnlxcXlkNDRQTUtCN2pZL2VjU2VqN2x3WXJlT3JZZkF4bERWbzlnanZnWHdSQkJKWXcvZWhzYXowUGZFR1R4bXl5WUNtYnhSZWZXWlBRWWRBbW80OC9lK2RoY05sd1QwMUlaVXdicjJmaHVtODEvL3IwQmdiSDlabmV3T016OFBXWFYvUERvK3R4bUpmazNkbzc5OVFFdUd6ODZUc1BZekxHUHdmVTdUWHd4RE8zWXltYmhjR2syU2tGWHdqNEYwRVFnU1ZNV3o0TDNORGlRcWJTR1V5NHkvbEI1NUtFdmw5Yk1jbW4zbm9VOTNnZlBvOUxhbUxhZUQ0anc4cEsvdk9aRFFtZEJwQk5ib3lYOEUrLzJNanJnM2N5cGZmTTdCSHdlVnk0eC92NDlOdU9VcHRBdG5hQTczY3U4VThObHM3UXJCZ0Rma1VRUkdBSjA1Zk90dFpSNEc4MWE5VGxjM251ZEFNbmVoSmJ4N0YyL2hEdlduTVoxOWcxVk5VbkZUSk5VQlFEbzRibGZQR0Z1em5kcDQrMVRjK2Ruc2UvN2QzRWRkOXFmTWI4T3c1SlZYMjR4cTd4cmpXWHVXUGVVRUsvT2RGajVmblREUmpLTlYyOC96Y0J2eUlJSXJDRWFjOHVRSlB6Und4R002YUtPdjdyMlRVM0hkNGJpdyt0djhDeTJpRmNZejFTRTlOTFpXRTNMZVViKzlmejJzWGM1VVVibnpMekgzdWIrT25wdTNHWUY2TVk4dE0xdTBaN1dENTdrQSt0VHl5eDY5aWtoZjk2ZGcybWlqb3RkdzEyQVYrUnhpMkl3QklFb0xPdDFRZDhFbzIyOUptTEsvR1pLdm5TYzdjbGRFRUZhRzArUXJWbEZOZkVEYW1RYVliZHRJZzlSNXJZZTNKKzF1Lzkyc1haN1BqVnZWeHczSUhiT0N0dnk5QTFjWVBxb2hFZVN6RGZsUXArK3pSVllpN1c3QnhGRmZoa3dKOElnZ2dzUVFpSXJJUEFmMnQxUFdOWlBkMkRWcDQ2bWxpbldXejJzdTJoTGhUWE1DNkh6QzVNTnlhTjgvalYyYlcwSDF5YWxmc04yNHY0ejcxMzhmMGpHeGsxcmtBeG1QTzI3RnlPVVJUWE1Oc2VPa1N4Mlp2UWI1NDZPcC91UWF1V0NVVUIvanZnUndSQkJKWWdoUEZYYUxUZ1hWRU1HTXZuOGNPRGl6bVhRSlozZ0ZubFUvejV1dzdoc1Eva1I2WjNRVk9jeG5yMjlkekpFOCt1VFNocGJTcDRmUW8vTzdLSXozVnM0b0xqTHB6R3Vyd3VNNC9UanNjK3dKKy82eEN6eXFjUytzMjVnU3ArZUhBeHh2SjVXdTZRdkI3d0g0S2dDK1Fzd2tLdllDWC9qZ2JaOE1qakR3TS8wS3dEbUJ6RjRPemxYMzVyUDFXbGllMFVQSGlwaGk4OXU0YWk2dmtZelVYU2tLYWIzWGducVRXZDQ1TVB2RTVOZ2p2aEV1SHc1UnIrOStneWJMNzVlQTJWZVY5T1hyY1Q1OGdWL3VpdHh4Sk9KanJxc1BDWFA5cUlyMmdPcHBJcUxSL240YzYyMXZaOEswUHBnMFZnQ1NLd3NpMnlmZ0s4WHpPUk5kRkxmV2svZi8zZWd4Z05pYlg1WHgyYlQvdkJwUlJaRjJpNUFGZkltNDdQUjRYM0F1OWJjNHA3bC9TbGRhMnpBMVg4Nk5BS2hsejFUQmxtRjBUNStMeHVuTGJMUEx6K0xPKzQ3V3BpZ3N5bjhObWZyYVBQVVllcFhOTVVGUC9iMmRiNm0vblp6cVFQTGxSTVVnU0NUdmtqNEVGQWt5R3VxYXllM3RFcHZydC9LUis5OTJ4Q3Yzbm5taXVNVGhheDk2UkNrWFVCaWtITVpYb05UZ3hNbUpieTQyTWxxQnhtMDVMZXBLOXh2R2NtUHorMmhNR3BXcVlNOVdCUUNxSnNWSzhIMThnVjNyNzZTc0xpQ3VDNys1ZlNPMWFOdVVyVGRWZWp3UDhuTFZiUW5ROFI5VnpvblVUK092UU5qenorS1BCMTdVYmNIbHdqRi9uSXh0TTh1Q0x4enZJckw2em13S1U1V0tvWDV1MzJlU0U5U3IxWHVIL1JhZDU5K3lVVUpiYlB0RG1LZVA3TVhJNzIxRFBxcWNWbG1BV0tVakJsb2ZwOHVFWXVjZmZDWGo3eHdJbUVmL2Y4NlRsOFovOEtMTldMTUJnMUhhejhmbWRiNnpmeXRqeWxEeGFCSllqQXlwSEkraG53SHEydTUzVlA0Unk1d3JaM0hXWjUvVWhpd2t4VitNTGUyem5aWDRlbGVuN2VIVnNpYUlQSk8wS2xvWWUxYy90WjAzQ0RxbElYWnFNUGg5TkU3MGc1UjN0cTZCK3JaTnhkeVpoYWg4RlllR3YzVk5XSGErUUtxK3I2K2N6bW94aVV4UHFQTTMzVjdIenF6c0NhUmsyUEovcDVaMXZyZS9PN1RLVVBGb0VsaU1ES2pjQ2FEUndITkVzUTVKa2FRM1gwOHRrUEhraDRBYlBIWitEZmY3V1djNE8xRkZYUEU1RTFqZkY1WEJReGhna25Cb01QdDJyQjZTc0hVMGxCdHd0VjllRWN1Y3JTbXV2ODZUdGV4MlJJTE5YVWpmRVMvdnJIZDZPVXpzRlVyT25DL2tIZ3RzNjIxZ0VSV0lJSUxFRUVWbW9pNndQQWo3Vzhwc2MrUUJrMytJY1BIS0NzeUoyRXlMcVRDME8xbUt2bUZVVFpDa0tpSXNBOWVwWEZNNi83RDNCT1VGeE5USm41ZnorNUd3YzFtTW8wWDl6L3djNjIxaWNMb1d5RndrU0c0WUx1Q1RqUnIydDVUVlBaYk95K2F2N3RWMnR4SjVqdnlHVHc4YWZ2UE15ODZrSGNvMWZsM0VKaG1vZ3JIKzdScTh5dnZwR1V1SEo3RFh6dTZiVTRmTldaRUZkZkx3UnhKWWpBRWdROTBBcWMxbFJrbFRmUVB6NkRMejE3RzZxYVdEVEtaUER4bCsvdVl2SE02emhIUkdRSmhTK3VuQ1AreU5YMmR4OUtXRnlwcXNLWG5yMk4vdkVabU1vYnRINnMwd0YvSUFnaXNBUWhYVHJiV3UzQWh3R25aaGRWRkl3Vjh6blpWOHMzOXkxUFhKZ0ZJbG5MYWdad2pWeEI5WG1sZ29UQ0UxYytMNjZSS3l5ckdVZ3FjZ1h3elgzTE9kbFhpN0ZpdnRZN0tKMzRFNHJLTVF1Q0NDeEIwRkJrSFFYK1JNdHJLZ1lEeHNvRnZISytnUjhmYkV4T1pMM2pkZGJNNmNjMWNobWYxeU1WSkJRTS9wUW1sMWt6cDU4L2UrZnJTWW1ySHgxczVKWHpEUmdyRjJRaXJjbWZkTGExSHBNYUV2SUJXZVJlNkJWY2dBdXhOenp5K0I2Z1Jkc094WTNMZG9tVzllZVNTcHlvcWdyZmVIa0YreTQwWUttZUx4bmZoUUlRVjI1Y0kxZTRkM0VQajk1M09tN2VyMUNlUGo2UDl0ZVdZckV1eklRdDdPbHNhLzF3b1pXMzlNR0ZpNlNtRnZLUjN3ZFdBNnUwdXFEQmFNWmNOWjg5Qi96UnFiZXQ2a2xRd0tyOC9tK2NvcUxZeGErT3ExaXE1c25aaFVMZTRuVTdjWTVlNVYyM1hhSmwvWVdrZnZ2TXlRYjJIRmlhcVlIR1NlQVBwSWFFZkVJaVdJVmV3UVdhU21EREk0OHZCdzRDNWRwMk1GTzRScS93Qjc5eGludVg5Q2YxMjE4Zm44ZjNEeXpGVXRtQXFhaFVHcCtRVjNpY0RseGpQZnoyM2VkNGV4SlJYSUI5NSt2NDJrc3JzVlJwbmtnVVlCeFkzOW5XZXFZUXkxMzZZQkZZZ2dnc1BZcXNEd0kvMG40VTc4LzIvb2YzSnkreVhydFl3MzgvZHh1bThqck1KWlhTQUlXOHdEMDVobWVpbjArKzVUanJGOTFJV2x4OTljV1ZtY2pTSHVTM090dGFmMXlvWlM5OWNPRWlpOXlGdkNYZ2REK3I5WFdONW1Jc1ZYUDU2b3NyMlhlK0xxbmZybDkwZzIwUEhjYm42TU5sSDVKS0VuU1B5ejZFejlISHRvY09weXl1TEZWek15V3UvckdReFpVZ0Frc1E5TXovUStNczd3QW1TeWxGVmZQNCtrc3JlZjcwbktSK3U2eHVoSC80elFNVWVRZHdqdldCakZBRlBhS3FPTWY2S1BJTzhBKy9lWUJsZFNOSi9mejUwM1A0K2tzckthcWFoOG1Ta1NueEh3Ri9LeFVsNUNzeVJWam9GVHdOam5QWjhNampaY0RMd0ZxdHIrMTFUK0VhdWNMdmJqeWI4TUwzSU9OVFpuWSsxY1RBUkRXV3lya29CcU0wU0VFZjJzcm54VFYyamJweUczL3hya05VRkx1VCt2MHpKeHY0N3Y1bFdESTNMZmc2Y045MHlIY2xmYkFJTEVFRWx0NUYxbnlnRTZqVCt0cGU5eFR1c2F1OGYyMDM3MTE3S2FuZnVyMEcvdXZaTlJ6dnFjRlNOUStEeVNLTlVzZ3BQbzhMMStoVjFqVGM0Rk52UFliSm1OeHBCRDk3ZlNILyszb2o1c3A1bVJKWC9jQ0d6cmJXSzlOQzdFb2ZMQUpMRUlHVkJ5THJMdUJGb0N3VG5aSjc5RElQTHIvSzc5NXpqbVJLVlFWK2VtZ1IvL3Y2SWl5VmN6QVZsVW5ERkhLQ1oyb0MxM2dmNzcvekl1Kzc4MkxTN2ZpN3J5N2wrVFB6TUZjdHlOUmd3UTdjMzluV2VtaTYxSW4wd1NLd0JCRlkrU0t5M2dYOG5BeXNML1I1UFhqR0x0RTB2NTlQUEhBU2c1S2M3YngrWlNaZmZPWjJEQ1V6c1pUTmxNWXBaQlhueEJEcTFCQ1BOUi9sam5uSmJjRHdxUXBmZVdFVlhWZnFNRlV1eEdETVNBcEZIL0NlenJiV3A2WlR2VWdmTEFKTEVJR1ZUeUpyQzdBckk4N1E1OFV6ZHBuRnN3YjU0ODFIc1ppU080ZXdiNlNVZjMzcUxpYTgxVmdxNjFFVTJXY2laTG9EOStFZTY2WE1PTXBmUEhTSStpcEhVcjkzZVl4OGZ1L3RYQmljaGFseVFTYlhFbTdwYkd2OXl2U3JIK21EUldBSklyRHlTMlQ5TGZCM21lcXd2T05YbVZWaVk5dER5UzhRZHJoTWZHSHZIWFFQenNCY05VK08xeEV5aHMvcnhqMTZsY1padzN4bTh4RktMY21kbVRrK1pXYm5MKzlpY05LS3NXSmVKZ2NFZjlmWjF2cjMwMU1BU3g4c0Frc1FnWlYvSXV0eDRMRU1lVVU4OWw1S0dPRXYzOTFGYmVWa2NoMmZxdkQ5enFWMG5KcUxwVUl5dnd2YTQzSGFjWTMxc25uMVZYNzc3dk5KblNrSWNIMnNoSC81UlJPVFZHTXFtd09aOHlXUGQ3YTFmbWE2MXBQMHdZV0x6RThJaGN4bmdPOWtTTGxpS205Z1NxbmhiNTY4bTNNRFZja1pucUx5dXh2UHN2V0I0N2pIcitHY2tLU2tnbmE0SmdieGpQZnd5YmNjNTNjMm5FdGFYSjBicU9Kdm5yeWJLVU1OcHZLR1RJcXI3d0IvTERVbUZDSVN3U3IwQ3A3R0VTeUFEWTg4YnNhZnNQQzlHWXNVVEk3aXRnL3dpZnRQc25IeFFOSy83eDh0NVhPL3VwTlJWeVdXeWdiSmx5V2tqT3J6NGg3cm9kSXl4cCs5OHpCMVNhNjNBdGgvWVRaZmVYRVY1dkxabUlxck12bTRQd00rMk5uVzZwbldkU1o5c0Fnc1FRUldIb3NzUzBCa3ZTZGpJc3MxaVh2c0t1OWJlNUgzM1htSlpFdmQ1VEh5bFJkWGNlaHlMWmJLQm95V0VtbThRbEo0WFpPNHhucFl0M0NBUC9pTmsxaE15ZVczVW9IL1BiU0lueDFaaExseUxxYk10c0dmQVIvcWJHdDFUWHRSTEgyd0NDeEJCRmFlaTZ4Uy9Pa2IzcEtwZS9nOExqeGpWMWpUY0oydEQ1NUl1b01EZU83MEhMNjliem1tMGhvc1pWYXBPQ0V4Z1c2MzRYSGM0T09ienZEQTh0N2tmKzh4c092NTFSenJyY1ZVTVQvVENYR2Z3NStPd1NFMUp3SkxCSllnQWt0RVZtTE8wdWZGTzM2Vm1hVWovTms3WDhkYTZrejZHbGVHeXZuYzAzY3k1YXZFWERFSHhTQkxKWVZvN2MySGE3eVhVb04vU25EZWpJbWtyMkd6Ri9GdnY3cVQ0Y2txLzA3QnpFNVJpN2dTZ1NVQ1N4Q0JKU0lyWlplSlo2SWZnMmVFUDMzSDZ5eXVIVXY2Q2c2WGlTODl0NGJUZlRNeFZ6Wms2a2dTSVkveHVpWnhqL2V3YXM0UWYvU1dZeFNidlVsZjQ4TDFTdjc5NmJYNFRGWk01Yk9CalBvTEVWY2lzRVJnQ1NLd3BvSEkrZ0VaWEpNRjRKNGN3VE54blkrbE9HMEQ4TXlwdWZ6UHEwc3hsYzdDVWpaREtrOEEvRm5adlpORGZQU2VzN3hsWlU5SzEzamh6QnkrOWNweXpPVzFtRXFxTS8zSVB3YytMT0pLQkpZSUxFRUVWdUdMTEF2d1F6SzR1eERlUENoNjA1SmVQbnJ2V1V5RzVOZGw5ZGpLK005ZnIyWFVWWUc1b2lGVHg1UUllWURQNjhFOTNrTjEwVGgvOHZiWG1WTnRUL29hSHArQmI3NnluRmN2MUdmeXdPWlFaRUc3Q0N3UldJSUlyR2tvc3RxQTM4bW9BL1Y1OEk1ZnBhNThoTSs4L1VoSzY3TGNYZ1BmZkdVRis4N1h5WUhSMHhUMzFBVHU4VDUrWTFrZkg3M25EQ1pqOG1MZFppL2lQMzk5QjlmdDFZSDFWaGtYNjk4REhoRnhKUUpMQkpZZ0FtdjZpU3dGZUJ6NGRJYTlLRjU3UDZwN2xNZmVkcFRWRGJhVUxuUHdVZzI3bmw4TmxtcUt5bXN6bVFCUzBGRUg3SjRZQU5jb2YvVFc0NnlkUDVqU2RVNzB6T0NKWjlhQXVRcFRXVjAyMnM0WGdkYk90bGJwWkVSZ2ljQVNSR0JOWTZIMWQ4RGZadm8rbnFreDNPUDl2Ry90SmQ1MzE4V1VsaFFQMjR2NHd0NDc2QjJ0d2xUUmdORmNKQlZZb0hqZFR0empQY3kzanZCWTg5R1VvcCtxcXZDVFF3djUrWkdGbUN2cU1SVlhaT1BSLzc2enJmWHZwQVpGWUluQUVrUmdDV3g0NVBGUEExOGd3MGRJK1R3dXZPTlhXVFJybUUrLzlSamxTUjRXRGY2ekRIOStaQUUvT2RRWVdBQXZPYk1Lck52RlpSL0c0eGppdDlaMTg5Q2FLMGtmZHdQK3c1cS8rTXdhTGczTndGZ3hMOVA1clFCOHdHYzYyMXEvS0hVb0Frc0VsbFN1Q0N3aFZHVDlGdjd6MFRLNjhsZFZmWGduZWpIN3h2amp0eDlKS1pVRCtITm1mYUhqRHNaY0ZaZ3I1bUF3bXFVUzh4eWYxNDE3cklmcTRuRStzL2tJYzYzMmxLNXpmcUNLLzl4N0IxNWpCY2F5T1NoS3h2T3BUUUVmNld4ci9aSFVvZ2dzUVFTV0NDd2hrc2k2RC8vT3ArcE0zOHM5T1lKNzRqcS9mZmM1M243YnRkU3U0VFh3dmM2bFBIKzZBWFA1Yk13bGxWS0plWXJMTVlySGZwM21WZGQ0K083ektlMDZWWUZmSDUvSER3NHN3WktkRkF3QU51QjluVzJ0TDBzdGlzQVNSR0NKd0JKaWlheFZ3RlBBL0V6ZnkrdWV3anQralZYMU4vakVBeWNwSzBydDdOdFR2VmErK093YTNGUmdycWlYUTZQenFaUDFlWEdOOTFLc1RQRFkyNDZ5ckc0a3BldlluV1oyUGIrSzAvMnpNRmJNeTliNnZDdkF1enJiV2s5S1RZckFFa1JnaWNBU0VoRlpkZmdqV2VzeTM4SDY4TnA3TUt2anREWWZaZW5zMFpTdTQzQ1orTnBMcTNqOVNnM204anBNeGVWU2tUckhQVFdCZTZLUDlRdXY4K2g5cDFMS3lBNXdwcithSnpyVzRERlVZQ3hyeU5ZUlN3ZUE5M2UydGZaTFRZckFFa1JnaWNBU2toRlpwZmpYWkgwZ0cvZnpUSTdnbXJqdTMyVjQ1eVVNU21yMjJkbGR5OWRlV2dXbUNzemxzeVdhcGNlTzFlZkZQZEdQMFR2TzFnZVBzM2IrVUVyWDhha0tUM1l0NGhkSEYyQXBuNDJwcENwYnIvQWo0R09TblYwRWxpQUNTd1NXa0tySU1nRC9BdnhGTnU3bjg3andUbHlsb1dxRVQ3L3RHRFBLbkNsZFozekt6RmRlV00ySjNwa1N6ZElaL3FoVlAzY3R1TUh2MzNlU1VrdHEwOEtERThWOHNlTjIrc1lyTVpablpaZGdrSDhGdGt1T0t4RllnZ2dzRVZpQ0ZrTHJFV0Eza1BtdGVxcUt4OTZQNmhwbDY0TW51R3ZCWU1xWGVqT2FWUm1JWmhta01uUFZtUWFpVmdiUEJGc2VQSjVXdlI3b3J1V3JMNjdDVUZ5RnFYUjJ0cExPdW9DdG5XMnRiVktiSXJBRUVWZ2lzQVF0UmRhOXdKTkFiVGJ1NTNIYWNZLzNjdC9TWGo1eXoxbk1LUnlQQW1IUnJJcDZPV29uQndTalZtdm5EZkw3OTUxTUtmOFpnTXRqNUZ2N2xySC9RajJtaXF3ZW16UUFmTEN6clhXZjFLWUlMRUVFbGxTd0NLeE1pS3o1d1A4Q2E3TnhQNS9YZzIvaUd1WG1jUjVyUHNhQ21lTXBYNnN6RVBWUXpKV1l5MnRsYlZZMk90Q1FxTlVuSGpoQjA4SWJLVityKzBZbFgzeG1EUTV2T2NieXVkazRTekRJWWVBM085dGFyMGlOaXNBU1JHQUpJckF5S2JMS2dLOEREMmZybmg3SEVDNzdFQis0cTV0MzMzRWw1UVh3WTVNV3Z2YlNLbzczek1SVVhvZFoxbVpsRFBma0dPNkpBWm9XM3VEajk1NU9PV3JsOVNuODlQQkNmblprSVpieUdrd2xXYzNjL3ozZ0QyVXh1d2dzUVFTV0lBSXJXeUpMQWY0Yy93TDRyQ3hzOG5xYytDYXVVVmN4eHFmZWRvemFpc21VcjlWMXFZYXZ2cmdLajZFY1Mza2RpdEVrbGFvUlBxOGI5M2cvUllZSlB2bkFjVzZiTzV6eXRmcEdTL212Wjlad3cxNkpzWHh1TmhleSs0Qy82R3hyL1hlcFVSRllnZ2dzUVFSV0xvUldNL0FEWUVhV1BESWV4M1U4azZOODlONHpQTEM4TitWTE9Wd212cjF2T1ozZHN6R1YxV0lwclpJS1RST1hmUVNQNHdZUExPL2x3M2VmU3ptdmxRbzhlN0tCNys1ZmhybXNHbE5wRFpBMWV4NEdIdTVzYTMxR2FsUUVsaUFDU3hDQmxVdVJ0UkIvWHFDN3NuVlByMnNTejhRMWxzOGVac3NESjZrc2NhVjhyVk85VnI3OC9HMU1lc3N4VjlUTG1ZWXA0UE80Y0kvM1VtR3g4MGR2UGNxU0ZNK1hCTEE1aXZqdjUxWnpjZENLc1dJdVJuTnhObC9sSU5EUzJkWjZTV3BWQkpZZ0Frc1FnYVVIa1ZVRWZBSFltajNuN01ObjcwTjFqL09KKzArbXRZRGE1VEh5L1FOTGVPNTBBK2JTV1ZqS3FzbGl4Q1NmZTBoYzlpSGNrelllV25PWkQ5eDFFVk9LdXowQk9ydG44N1VYVjJJb3FzUllOanNiaHpTSDhtWGdUenJiV3AxU3NTS3dCQkZZZ2dnc3ZRbXRqd0M3Z05KczNkTXpOWUZub28rMTg2L3p5S1l6S1MrbUJyZzBXTUdYbjF2RHNLTU1VOFdjYkVkUDhncVB5NEZub28vNnluRSsrZUJ4R3F6MmxLODFQbVhtYXkrdDRrVFBUSXpsYzdLZFNzTU9mS0t6cmZWN1Vxc2lzQVFSV0lJSUxEMkxyTlhBRDRFVldYUFVQaTllZXkrS3g4NGZwaG5OOHFrS3Z6bzJueDhkYk1SUVhJV2x2Q2Jia1JSOWQ0bytMKzZKNjZqdWNYNW53MW5lc3JJbnJWamZnZTVhdnZiU1NneVdDZ3lsOWRsT0Juc1MrRkJuVytzcHFWa1JXSUlJTEVFRVZqNklySExnSzhCdlovTyt3V2pXWFF1dTg4aDlwMU0raGdWZ2FLS1kzUytzNXZ6MWFrbnBFTUE5T1liYlBzRHRjNGQ0OUw1VFZLV3g5czBmdFZySmlaNVp1WWhhZ2YrY3pVOTJ0clhheFdKRllBa2lzQVFSV1BrbXRENEYvQWVRdGYzMXdXaVcwZXRQYnBucVFjSkJEbHlzNWVzdnJjUm5LTWRVWG9kaEdxWjA4SGxjZUNiNktUTFkrY1Q5SjdoOVhwcGxHb3hhbWNzeGxOVm5PK21yRS9oTVoxdnJMckZRRVZpQ0NDeEJCRlkraTZ6MXdCNWdZVGJ2NjVtYXdEM1J4L3BGQTN6czNqTnBSYk1jTGhQZjcxektTK2ZxTVpYT29taWFMSUpYVlJWM1lCSDcyMWRmNWJlYXVyR1l2Q2xmTHhpMU90NHpDMU5aZlM0TzRlN0d2MHZ3a0ZpbUNDeEJCSllnQXFzUVJGWVYvc09pSDg3bWZiVmNtd1Z3OFVZRnUxNjRqU0Y3T2FieWVveVdrb0t0TTQvVGptZWluN25XTVQ1eC80bTBGckVEN0R0Znh6ZGZXWjZycUJYQWQ0SC9yN090ZFV3c1VnU1dJQUpMRUlGVmFFTHJENERIeWVJdVF3aXN6YkwzY2R1Y1FSNjk3elJWcGFtdkhWSlZoWTZUYy9uQmdTVVlMQlVGZDY2aHordkJNOUdQNHJYenNVMm51WGRKZjFxeHVxR0pZcjd5NGlvdTNLakdXSmFUdFZaMjRJODYyMXEvSlJZb0Frc1FnU1dJd0Nwa2tiVUMveGx2YTdQcXpIMWV2STUrZk00SlBucnZHZTViMXBlV2NCaWR0UEROVjFieStwV1poWkVKWGxWeE9rYndPQWJadEtTZjM5MTROcTFwVmI4UWJlQUhCNVpnS3FuRVdEbzdGN3N4dTREZjdteHJQUytXSndKTEVJRWxpTUNhRGlLckNOZ0pmQ2JiOS9ZNEhmanN2U3ljT2NLV0IwNHdxMklxcmV1ZDdMWHkxUmRYTSs0cTlVOGI1bUh1TEkvTGdYZWlqMW5sZHJiY2Y1eEZOZU5wWGE5dnBKUmR6OTlHNzFnRnhyS0dYRTJsZmc3NHE4NjJWcGRZbkFnc1FRU1dJQUpydWdtdGR3TnR3S3pzT25ZZlhzZDEzSk5qUEx6K1BHOWZmUTFGU2QwZmVIMEtUeDJiejVPSEdqRVdWV0l1cThtTGFVUC9kT0FBZUNiNG5RM25lSEJGYjlybDhQTWpDL2pwNFVXWVN3Tm5DR2JmRGdlQWozVzJ0ZjVhTEV3RWxpQUNTeENCTloxRjFoemdXOERic24xdnIzc0szMFFQTmVYamJIbmdCUE5uVHFSMVBadTlpTFpYVm5MczJneDlUeHVxS2k2N0RiZGppSHVYRFBDN0c4OVNWdVJPNjVMbkJxclkvY0pxeGwxbEtLVU5HTTFGdVhpenB3UGk2cnBZbGdnc1FRU1dJQUpMUk5Zamp4dUFQd0grQ2NodXo2eXFlQ2FIY05tSDJiejZXdHFwQ0NCczJyQ3NUbGU3RFlPN0EyZFhUTERsd1JNc21KbmVkS0REWmVKN25VdlpkNjRPYzNrTnBoSnJMbDVyRXRnR2ZMR3pyVlVjdXdnc1FRU1dJQUpMQ0JOYWE0QnZBM2RrKzk0K2p3dWZveGVMNHVBUGYrTmsyc2swdlQ2RnZTZm04Y09EaXpGWXlqR1YxZVkwU2FuUDQ4Smo3OGZnYy9DUmU4NndhV2wvMnBtOE9ydHJhWHRsQmFxeERFUHBuRnk5WHhmd2tjNjIxdE5pUVNLd0JCRllnZ2dzSWJySUtnTCtBZmd6SU92Ynp0eFRvM2ducm5QSHZCdDhiTk9adEk2REFYOXl6ZTkxTHVQVjg3TXhsODdFVW1iTjZyb2sxZWZEWlIvRU16bks1dHV1OHNHN3VpazJweGVoRzV3bzV1c3ZyZVRjZFN1RzB2cGNIU1BrQmY0WitNZk90bGEzV0k0SUxFRUVsaUFDUzBoTWFOMFBmSk1zWjREM2l4SXZQa2MvWHVjRXY3UHhMQTh1NzB0cjhUZkE1YUVLdnZyaUt2cEdLekNXemM2S0tIRTVSdkU2cnJPOGJvUkhOcDJpdG5JeVBVWGpVM2o2K0R4K2RIQXg1cEpLakdXMXVUb0krenorcUZXbldJb0lMRUVFbGlBQ1MwaGVaRlVDbndjZXpjWDlQUzUvU29mWkZlTjg0djZUYVMrQ1Y0SDlGMmJ6N1gwcjhGQ0txWHcyQnBQMlM4Njhya2s4OW40cUxBNSsvNzZUM0RaM09PMXJudTJ2NWlzdnJtTE1XWXFockNHWDZTaitHL2d6T2FSWkJKWWdBa3NRZ1NXa0w3UStnUCtvblZsWnYzbklJdmkzcnVqaFErc3ZwRDNGNXZJWStjbmhSZnpxMkR4TXhWV1l5Mlpwa3RiQjUvWGdzUS9nYzluNTBMb0xiRjU5RmFNaFBUODNQbVhtdS91WGNxQjdOcWF5R3N5bDFsdzFnMzdnRHpyYlduOHBGaUVDU3hDQkpZakFFclFUV1hYNG94ZnZ6OFg5ZlY0M1Buc3ZScCtEajI4NnpkMk42V2NDdURGZXdyZjJyZUJFanhWVGFZMC9yVU1LN1ZaVmZianR3N2duYmR5N2VJRGYzbkNXaXVMMGxpV3Bxc0lMWityNTd2NWxHQzFsR01ycVVBdzVXNlQvWGFDMXM2MTFTQ3hCQkpZZ0Frc1FnU1ZrUm1qOUh2N3pER2ZrNHY3dXFRbDg5ajRXMTQ3dysvZWx2NjRKNEV4Zk5WOS9aUlZEOWxKTXBiTXhKYkUreTcvTzZnYUxabzN4OFUybm1EZGpJdTNudVRKVXpsZGVYTVhBZUFXR3NqbVlMS1c1cXU0QjRKT2RiYTAva1pZdkFrc1FnU1dJd0JJeUw3SnlHczN5WjRLL2djc3h5a08zWCtaOWF5OWhNZm5TdktiQ0srZG44OTM5eS9GUWdyR3NMbWF5VG8vVGdkZlJUNFZsa2tjMm5VbzdyUVNBM1dtaS9lQVNYanhUajZWc0JxYVNtYm5JeEI3ays4Q25KV29sQWtzUWdTV0l3Qkt5TDdSK0QzZ0N5TW5DSUovSGhjL2VnMFdaNUpIN1RuSFhnc0cwcitueUdQblprWVg4OHNoOGpFVVYvbU4zUXZKTCtmTlpEWURYd1lmWG4rZkJGVDFwcjdOU2daZk8xUFBkem1WZ0tzVlFXby9CYU01VnRRNENmOVRaMXRvdUxWd0VsaUFDU3hDQkplUk9aRFhnWHdEL1VLNmV3VE01anNmUno5SmFHNC9lZDFxVGFVT2JvNGp2ZHk3bFFIY3Q1bElycHVKS1BJNWhQTTR4TnErK3htL2VlWkVTaXlmdCsvalRSNnowVHdlVzFtTXFLc3RsZGY0d0lLNXVTTXNXZ1NXSXdCSkVZQW42RUZxUDRFL3BrSk1EQUcrZE5yeWM5cEU3QUZlSHkvbld2aFYwMzZqZ3JnV0QvTTZHYzh3b20wcjd1bmFubVQydkxlYWxzN3FZRHBTb2xRZ3NRUVNXSUFKTDBMSEltZ044aVJ5dHpZSTNwdzFOVFBLUmU4NnlZZkVBV3JSRXIwOUpleW93ZUozblQ4L2hCd2VXWXJTVW9wVFc1L1FJSCtCL2dEL3ViR3NkbEJZc0Frc1FnU1dJd0JMMExiUmE4Sy9ObXAyclozQlBUYUE2K21pb0h1ZlIrMDZsbmFSVUMwNzJXdm5HeXlzWmM1YWlsTTdCbE50RHFLL2kzeUVvZWExRVlBa2lzQVFSV0VJZWlheVp3TDhESDg5aEQvSkdrdEpOUy9wNStPN3phZWVuU29VYjR5Vjg1OVZsSE8rWmlhbHNGdWFTYWlCbjlxRUNYd2Irc3JPdGRVeGFxZ2dzUVFTV0lBSkx5RStoOVE3OGkrRG41K29aZkY0UHFxTWZUeUREZXZPcWE1cE05OFhENlRIeTA4TUxlZXJZZkN3bGxSaExhelRKR0o4R1o0QlBkTGExdmlRdFU1QStXQVNXSUFKTHlIK1JWUTc4TS9CcGNoaTY4Ym9tOFRsNnFiQTRlR1RUYVUzT0NJelljUUg3ejgvbU82OHV4MnNvd1ZBNkI0UEprc3NxOEFEL0N2eGpaMXZybExSSVFRU1dDQ3hCQkpaUVdFSnJFL0FWWUdVdW44TTlPWUxYZm9PVjljTjhkTk1aYWlzbU5idjJwY0VLdnY3U1N2ckh5djFwRjVMSUNwOGhEdUtQV3IwdUxWQVFnU1VDU3hDQkpSU3V5TElBMjRDL0FvcHkxcm40ZkhnbnIrTnkrUE5hdmYvT2k1U21rZGZLWmkvaUI2OHQ0VUIzTFpheW1aaEtadVF5N1FMQUJQRFh3QmM3MjFxOTB2SUVFVmdpc0FRUldNTDBFRnJMOEMrMmZtc3VuOFBuY2FFNit2QjVKbmw0L1hrZVhOR2IxUG9zcDhmSUwxNWZ3TStQTHFDb3BBeEQ2ZXhjSHNvYzVIK0J4enJiV3E5S1N4TkVZSW5BRWtSZ0NkTlBaQ240ZHhsK0RwaVp5MmZ4dUJ5b2pqNHFMQTQrZXU4WjdvaHp0cUNxS3J4MHRvN3ZIMWlLYWlpQjBucU1wcUpjRjJrUDBOcloxdnBqYVYyQ0NDd1JXSUlJTEVHRVZnMytsQTRmemZXenVDZEg4VHF1MHpocmxJL2VlNFo1TTI3Tm4zV3kxOG8zWDFtQmJiSlVEOGZiZ0g5ZC9SZUJ2NWJVQzRJSUxFRUVsZ2dzUVFnWFdzMzRwdzJYNUxiajhlRjFET0p5akhEUDRnRSt0UDRDMWxJbjEyeGxmSGYvTXM3Mld6R1d6c0pjV2swT04wVUdPUUpzNld4clBTQXRTQkNCSllqQUVvRWxDTkZFVmpHd1BmREo2Wnlieit0Qm5lekhOZWxneFJ3YnAzcXRXRXFyTVpiTVFqRVljbDFVNDhEL3c3K0kzU010UnhDQkpZakFFb0VsQ0lrSXJhWEFmd0diYy8wc1hvOFQxVDJKd1ZLZTYzTURnN1RqUHord1YxcUtJQUpMRUlFbEFrc1FVaEZhSHdZK0Q5UkphWEFlK0ZSblcrdXZwU2dFRVZoQ05BeFNCSUlneEtPenJmVUh3SExnY2NBM1RZdkJDZndkc0ViRWxTQUk4WkFJVnFGWHNFU3dCSTNaOE1qamR3SmZBalpPbzlkK0d2aDBaMXZyZVdrQmdwWklIeXdDU3hDQkpRaWhJa3NCSGdWMkFEVUYvS3FYZ1AvVDJkYjZwTlM2SUFKTEVJRWxpTUFTc2lXMHJNQm5nVTlTV0VzT25QZ1BadjZYenJiV1NhbHBRUVNXSUFKTEVJRWw1RUpvRmRLMDRTL3haMksvSURVcmlNQVNSR0FKSXJDRVhJdXNmSjgydklnLzdjSlBwVFlGRVZpQ0NDeEJCSmFnTjZGVkRmd3Q4R25BbEFlUGJBZitHZmlQenJiV0thbEJRUVNXSUFKTEVJRWw2RmxvcmNTZk8rdnRPbjdNL3dHMmRiYTE5a2lOQ1NLd0JCRllnZ2dzSVorRTF2dUEvd0FXNitpeER1SmZaL1dxMUpBZ0FrdklCSkpvVkJDRWpCSlkwN1FhK0V0Z0lzZVBjeDM0ZldDRGlDdEJFREtKUkxBS3ZZSWxnaVhvaUEyUFBENEgveUw0ajJiNTFtNzgwNVdmN1d4ckhaT2FFUFNDOU1FaXNBUVJXSUtncGREYWlQL1luZlZadU4wdjhDY0xQU3NsTDRqQUVrUmdDU0t3aEVJWFdRYmc0OEMvQUxNemNJc3p3SjkwdHJVK0phVXRpTUFTUkdBSklyQ0U2U2EwS29EdHdQOEJpalc0NUJEdzk4Q1hPOXRhUFZMQ2dnZ3NRUVNXSUFKTG1NNUNhejcrYU5idnBuZ0pOLzVweDg5MnRyV09TSWtLSXJBRUVWaUNDQ3hCZUZObzNZMC9yY09tSkg3MkkrQXZPdHRhdTZVRUJSRllnZ2dzUVFTV0lFUVdXUXJ3SVdBbnNDakdWMS9EdjREOVpTazFRUVNXSUFKTEVJRWxDSWtKclNMZ01lQ3ZnYXFRZjdvTS9GL2dlNTF0cmVMRUJCRllnZ2dzUVFTV0lLUWd0R1lBZndYOEh2QnZ3QmM3MjFxZFVqS0NDQ3hCQkpZZ0NJSWdDTUkwUVk3S0VRUkJFQVJCRUlFbENJSWdDSUlnQWtzUUJFRVFCRUVFbGlBSWdpQUlnaUFDU3hBRVFSQUVRUVNXSUFpQ0lBaUNDQ3hCRUFSQkVBUkJCSllnQ0lJZ0NJSUlMRUVRQkVFUUJCRllnaUFJZ2lBSVFqZ21LUUlobCtUaFdZbFd3Q1kxSndqa3ZlM0tVWEZDSnBFSWxpQWs3cHozQUx1a0tBUkJiRmNRUkdBSlF2bzBBUWVCbHNCbm14U0pJSWp0Q2tJc0ZBbVJDamx0Z1BxZkl0d0c3QWo3T3h1d0R1aVdHaFNFL0xWZDZmK0VUQ0lSTEVHSVRIQmFZVWVVZjJ1UkloSUVzVjFCaUlZc2NoZUVXMmtLT09qR0NQL1dEV3dIMnFXWUJFRnNWeENpSVJFc1FiaVpiZmpYYklRN2FGdkFPUzhXQnkwSVlydUNFQStKWUFtQ0h5ditYVWFScGc5MkJ4eTBwR2NRQkxGZFFSQ0JKUWdKMGh4dzBPRWozNDZBYys2U0loSUVzVjFCRUlFbENNbVBnRU1kdEt6VkVBU3hYVUZJQzBuVElPUzJBZW9uVGNPZXdHaDRaK0FqQ0VKK2tMTHRTdjhuaU1BU1JHQmxaeVFNc2xaREVQS05sRzFYK2o5QkJKWWdBa3NRQkVGanBQOFRNb21rYVJBRVFSQUVRZEFZV2VRdVpCVkZVYXo0a3dFR1A5YkFweW53bFM3ZURQVUgvN3NMLzY0ZzRXWWE4YTg5YVF3cHk2WUkzK3NJK2RNVytGT08rUkVFUWNna3FxcktSejRaLytEUFViTUhVRlA4RE9QZmpwMkk2RkJ6OE1uV0liSk4rSThBdVpEbTgwWkt5QmlzcDJ5VlJYT2E5OWtTNDlvN0FtMG0zWGZaRy9oc0M5eXZVZVA2M0piQjhtN09rUzJrMmpaeVpydmlvK1dUaVk5RXNJUk1SNnlpNWFsSkZtdWdnOXVhZ01BcVJMWUV4RSt6aGtLdGhWdDNYUlZLK1FVamV1blNIUFluZ2VoZk8vNGtsaElKMURZaUt3Z0Znd2dzSVpQaWFrZWNFV3R3eXFvcnBGTU1UbmZGNmppblUvTEFZTVNxT1krZU9WdjFreXR4MHhobzE5dnc1MXlTdEI2Q0lJakFFckltcm5ZUmVRcW5BOWl0cW1wNzRIdlJPckF0VWNSWnZLaEVGN0E1Ukp3RTJSSGxXUkpkMnhXNnZpbGJZbWRibE9jT2ZkZjJ3SitoYTlkQ243ZUo1S2EyZ3RjTExidG92OThlOXYrMmdPaEpWR0FGNjZveFFyM3VpQ0NtZG9mZHF5dk9lM1RFdWVZYjdaSElXL3lEZ3I4NVJ2bnR3QjhKZkRoRndkY2U0VDJhb2p4cmQwRE1kU2NvTkp0aWxMc3RnVEpNdE43RGJiY3hocDFZcDRudENvS3N3WkpQUnRaYlJWdFhzaTNDZDJPeEk4STFVbldRV3E2YnNuTHIrcDY5R3BxbE5YQzlhR3ZSZHBEOGRNcU9OTjQvMnJOazFEVmxvSHpUWFM4V2F3M2hRYlNaa296MXJNbVd3YlkwMjN5NjlkNmlVVDFtM0hiRmI4c25FeDlKMHlCb0hibHFqRExpM0txcWFySlRLUjFKak1xelNieVJ2eGJpcWpsS2Vhd0xSQkNTalphMFJ4RU5RdUp0OGVIQUoxcTBhMitldkVlMjBPTnhOWm0wWFVHNENSRllndFpFR2xtMnE2cTZPNFZyNmRrUlpxS2pDb3FyU0NKeU8vN3BrMVRYSFVtbm9wMW8yQnhEWkczVCtmTm51eDEwVHhQYkZRUVJXRUxtQ0VTdnRrUVJCNm1PTnZWNmRFMG1ubXRQRkhHMUZXMFdVb3ZJMGs2a2JJMHh3TERxNURrYmRWRC8zZFBFZGdWQkJKYVFVVm9pZFVhcXFxYmpaQ010QU5aakpDRGRMZWJSZGdwdTUrYkYzZEt4NklOSWkramh6WFFpZWhSWXVSQTdlb3dXYVcyN2dpQUNTOGc0elZFNklpMGR0RjZpQTFvNjZXYWlUSzJpYlFvQW1SclJsdDFKMklFZTIydzJzT213YkVSZ0NWbEIwalFJbVJ3eFo4SkI2NjNEc2dZaUE2aytwNVhJR2VxN2laOVVOZDJ5YkpJbW14SEJxdGR5N1o0bTk4eVc3UXFDQ0N3aHJ3VldCMit1NGVyU21UTmNwOEUxWXVVYTB2cGR1eU9JT3lFOXdkb1ZRVkRwcFZ5N1EwUmdNN21kSXV3SXNXSGQyRzRDcVdJRVFRU1dVTENpSzVoY3NSQ3hFbmxxc0lQTWJISHZDdnR2R2Jsckk3TDB5bGFkUEljaXpVUVFnU1VJNlhmZzRhTjV5YlVVblMxRWpuWmtTbERhcExQTG1oMElnakROa1VYdVFxWTdsc2JBZ2M5Q1pJRVZxUXhsTVhyK0VFa2d5d0hRZ2lCSUJFdkl5c2g5bDZJbzYxUlZMWVFwcWRDejFvTHZuTXA3dFJCNStyUmRtbEZlaWF0SUM5cEZJQmUyN1FwQ1FrZ0VTOUNNUUxiMjdpaU83YUNpS0lXd2E2MEZmN2IxNENkVkJ4MHRxcmRiV2xKZXRRVkVKRTg3MnhVRUVWaENUdGdaWS9SNFVGR1VIWXFpNVBQdU5hMUVZc1Nrck9MMDg0cHRVUVN5MUdGaDI2NGdpTUFTc2s4Z2lyVTdUcWQwUVZHVWJYa3F0TFI0NXFZbzE1R3BwZndTVitGVHZEWlNQeFpLeUEvYkZRUVJXRUpPUmRaV1lrK1RXUEVmRFhNQmY1TE5mTXFrck1XelJodEp5K0xvL0tBbDBIN0QyWXBFcndyZGRnVWhZV1NSdTVBcGtmV3dvaWk3aUgwdVcvRGN0aTM0bzE2N3llNFc5K1lVdnErRmsyNFVnWlczYkNGeTV2MTRnd3FoTUd4WEVFUmdDYm9RV1ZzVlJla0lkRWp4d3ZOQm9kV0JmeDFYTnFiTG1zbE5ucTVvRVN6Sm42VHZEbjFiaFBZU25CYVV6UW5acnc5Si95TG9HcGtpRkRJdHN0cUJ4VWwwUU0zNGQvZ2tJc29LRFpsZTBnK05JYUxxWUtCTk5rY1F4SnRGWEFtQ0lBSkx5SlhJc2dYV1pTVWp0TGJnWDZQVlVxQ2piMEVmN0FEVUNKOExBVkcxZzFzampzR0R1TmVSM2FpakNIQkJFSUVsQ0JHRlZuZVNRc3NLN0NIeWdtSXQySTcvNkpoRVA1dWxGcWM5eVVaa3RVU21rTVYyQlJGWWdwQ3cwTnFad01oOEc1RVhGbWViRG1RaCtuUW5tS3hTdHZ6bkYySzdnZ2dzWVhvSnJjQklkSEhnejFoQ2F3dVJFenRtRzNIU2hjVjIvTkdOOE05V29pY05iUmFSbFplSTdRb2lzSVJwaHcxL0pHc2RzWGNQUmtydW1LL3ZHd25KTkoxOWdvZHJoMzkyQjBUV1lpS25YMmpDUDMwdENJSWdBa3ZJaXhIbVpxSm53N2FTK3lpV0ZndU51Mks4bjVCY21XV2p2aCtPSXZ5YjBVZFVWY2llN1FxQ0NDd2hyOWtaUTJUbGVsZGhjRXBwTWY3RnMxbzZlb2xnNmJkemZEaktNeFJLVkhVNm9JWHRDb0lJTEtFZ1JGYWtOUlBXSEF1UmJ0SmZNQ3NSck5qb1VXZ0dwN0VqMWRrT3FiSzhRQXZiRlFRUldFSkJzRHVQT3VCa0hYMGs5Sm9mSzl1QzBCcEY0T2hWOUxjZ3VjMEVRUkNCSmVRUkhWbnUySFA5WGszb2M3b3AyMU9halVtSTBteXpOY3JmeTFvc1FSQkVZQW5hb3loS3M2SW9MWXFpYkZNVVJTdVJVS2lKRlcxRVB4ZzRuekxYTjJieHVucHBDeDFFWC9BdVVTeEJFRVJnQ1pxS3ErQlpiY0dzNjlPdG93bm1SZHFCUDE5WElzSWpXaFJyRy9xTDBIVmxXV0NGdDU5dTlMVURiR2VNdWhQeWIyQzRWMUdVSFlxaWJORndjQ2dJSXJBRVRRanYvREl0RVBRVzJRcXV3UWxtbkU5RVlMWkhFUTNXZ0VqTEI0R1ZpV2hicEUwTTdUb3JENGxpRlE2cDJLNGdpTUFTY29aV1RzcWFSd0lyMmVlTHRpc05JaDh3bkdzQkhlbWRHalB3bkZ2eW9MNUJvbGlGSkxEMDN0WUVFVmpDTktZclFzZWJLYUhXaGI2bWk3YUVDVUZiRWs1NmQ0eDMyWVcrcGdyYmt4QkVXZ3FzYnZRWHdZTFlVYXdXY1FsNXdTMjJxNnFxQ0N4QkJKYWdLMndaRWxoYmt1am9jMFZ6R2lOZ0c5RjNwVFdoci9QdVlnbXNaZzNydXpHQ0NOVXJzU0tRZ3Y1SngzWUZRUVNXa0JzVVJVbTMwNDJVVzhpbXN3N1h5cTNSaW80VWhNdnVQQkJaM1RHZVU0dG9XMk1FWWFLMytpWkNYWGRFZVpjdDRnVjBqUmEyS3dnaXNJU01ZNHZTeWFSS1U2RFRqaFF4ME5QMFlLU3BvRlJHd2R0ai9LNEp1S0J4aHgwVU0zdFRlTTVvZFoyT0VJd21KUFZXMzBScGs1SFlnV1RtMXpOYTJhNGdpTUFTTWtxa0pKRE5pcUtrMHNHMFJPbHNPMkowWnJrYUFXL1R5RW5iOEorUkZpdGorcTRRb1pWS3VUWUZudmRnNERyYjhFY0lyVWsrWjd3cHphWVU2enRja0xmcnJMNmowVUhrNlZOcmxFR0NVRmkyS3doUk1Va1JDQmtjSVRZcGlySWJhRmRWdFR1T3cyc2grcEVqWGZnUDIwM1VlVGFGZFBxeENPYWNzcVZ3YmEwWDRBZEYxaDZpcjJscURIVGFPd0lkZTFmZzB4MG1jb1BDS2JqTEw1YVFhaWE1ZFczdEFaRzFLNHJJT2hqNFRudmdHYU5GdkpyajFQZldOTnRmRTRtZFc5a1M5cDFnenExazZuSjdsSWhJVUR4MlJDakQ3cEN5YUl6dzdOSHFLbEpPc0dRMlZzUXFxL0MvYTR4aE4xMGF0LytjMjY2cXFucVBsZ3I1aHFxcThwRlBXcCtBSTFiamZJWURuYzJ1Z0hQY0ZoQVRCK1A4YmsrU1VaYm1CSjRsVXgrdEloYmJBdVdWNmVjZEp2V3B4eTBKM3VOQ29ONkRuM2pmMTJyTjJkNDB5eWJaTllTN1VyejJOZzNxY1crT3l5clZNdE9WN1lvdmw0L1dINGxnQ1ZxSTlHNUZVUklaUVNiamdHMkJ5TUR1UENvS3JhWVlkZ2FpSE52SXpHTHBZSFFwbmJMZEhYamZlSm43RzBsc1BWNHdMOWpPUERXRFlCUXJGK3V1dWhIMFlydUM4QVpwQzZ5Tmp6NGhwU2dFT3hndE1sbDNCVHJ2YUpuT3A0dVQ3c1kvVGJZOUlMTENwN0tTdlZaSHlNZW00ZnR1RHRSNThCbFRlYmJkeE00SmxnclpUdFFhRklpNVNORWdBa3VEdGl4OW1aQXMrNy94V014L1Z3SlRQQ0t3Qk0zb2JHdHQ1dWExRkZadVhROFR1bDRqMk9ubm82aktKc0VvWUdOSXVZWkdpSUpyc1lKcmNycEQvc3oyOHpXSDFYK2s1K3ZRUytSZ3d5T1B0K0NmanJZQld6dmJXbFBOdDliTXJXdmlCSjJ5NFpISHBSQUVFVmlDSUFnWkZJWVh1SGw2TDdpWVh3Uy9JQWdwQ1N4SjB5QUl3blJuRzdldW5Xb0ppQzQ1OWtZUWhKUVFnU1VJd25RbW1COHNFbGI4MDRiSjdtUVZCRUVRZ1NVSXdyUVhXUEdRYUpZZ0NDS3dCRUVRa21BM3NKajRLU3NrbWlVSWdnZ3NRUkNFSkFpbXhFaEVhRWswU3hBRUVWaUNJQWdaRUZvU3pSSUVRUVNXSUFoQ2hvU1dSTE1FUVJDQkpRaUNrQUdoRlJyTmFwUWlFd1JCQkpZZ0NJSjJRa3VpV0lJZ2lNQVNCRUhRV0dodFI0N0hFUVJCQkpZZ0NJSm1RcXNMLzBIUGdpQUliMkNTSWhBRVFVaExhQW1DSU55Q1JMQUVRUkFFUVJCRVlBbUNJQWlDSUlqQUVnUkJFQVJCbUZib2RRMVdVK0JqQlpvRGYyY2w4c0dzWFlBdDhPbkN2eTRpK0tjZTJSTjRqOUNjT2R1UlJiS0NuMFprTjVyWXJTQklmeXdDUzhOT3BTVlFlYzBwVkg2UTBGdzBOcUFkNkFqOHFRZTJFVGxmVG1PT2pHWkh5UDgzYTNUZGpnakcxaFgyOTVsaUY3QWx6MjB5WHFlOUIzM25YRklLMEUvcXlXNjFmcTl3dTAvSER3UnRuU3gyc0kzNHMrbHJUUWV3T1VXL2VsRGpaOWxOZGpkVDZLay96bXQvbDB1QlpRMTBoaTFSbExCVzE5K2lrNUdtTmVEUTRqWEtiSkdLOFNSNjNXak9PdFRBYkJrU2pmbU9MWS9mc1JCSHFYcXpXeTNSMnZkYXcyeStKYXh0dEFjK1hYbGc4eDA2ZXA3dUxMVnpQZmJIZWUzdmNyRUdxekVRYVJqR0gwRnAwa05CWklFdFJEOFl0aWxIOVpBTGh4NnMrMTBaZUlaQ0VGamRjWnhVWTU0K2U3NmlON3ZOVjN0cERBalZnNEhQRmcydm00dUJUamFmcHp2RDlhTFgvamp2L1YwMkJaWTFVSUVYeVA0MGppM0hGZEhJemROeGtXak93VFBsdXVPNkVDZ1hxd2JYYTZZdzZNNWpBV21qc05DajNXcEZMcCs3S2RDcEg5U2dUV2ZxUGZRVXdlckt3RFh6b1QvT2UzK1hyU25DTFVsMnBNRTFPN1pBaDJPTFV2RE52TG40THRzTk5CbTJKZGlZT3JMNFRCMFI3dGZJbXdzYWsvbGR1T0UySmVINGd1dEFOcWZaUVRjbFlSU0p0Z2RyQW1XUlRHZWRpS2lOTnlyYUh1WHZZNFgyYlNRV2tvLzNqTTA2dDdQcFlMZGFzajFLblRiSHFlUDJHR1ZoVGNMMm00QzlnZWZZcmFFZkM5YWROWVk5N0k3amI3bzFmcDZnUDRrV0VRMWRzOVlkOXZkYVI3RHlxVC9PYTMrWGFZRVZQR2srRVlQYkhXSzh0Z1FhTVNHRjJCSXdxQ1lkanF5YkV4d2hXTFA4WER0akdOK3VHRTRubVlXZkxRbStmM0JoNkxvMDZxb3BoaEZzVDdFVGpOV21raTJMOE92dVNNR3B4M1BlVFRGK3QxTkRtOTZXb1BqSVovUnF0MW9Qc0haR2VKL2hHTDlibDBUNU5STjdpalY0djEwaGZZQ1dmc3dhNHplWldwTzdNNEgyc2lWS2ZUd3MvWEZoK2J0TVRoRTI0dzgvTnNlSkptd0hadURmSmJHYjFEclk5aGlkWFQ1RXI1S0p3SkFGSTlScVZOZk9tMmUyeFJNNGpZSFJiS29kVmxPVTlyVTVqUWlEbG1XUmlCTk81NXBOR28wWTQyR0xNYW9zcEFoV3Z0bXRWalJwMU9ZN0F1MWtjZURQZUg1OUY5cE85elZteVI2MGVxNU1QMU9oOWNkNTRlOHlKYkMySk5CWjdnd1kzMDYwaVREWjBsVExtV3JVelVsOFZ5OGo5M2dqbFdRSlJudTJKMkEwcVl3VW9pMkdUSGUzWWxNR3lvSU1PUWF0T3NaTTJHQytrWTkybXcyQjFaVmltOWlKUC9JVjcvZDd5TTU2eks0Y3Q2MXNQMU1oOXNkNTRlOHlJYkIyRUgyS0tkaVFOaWM0cXNsMXA1VXV1elJzTkxrZVlXblJjSGNtSUxLMmtmd0MvRXc1cmFZc2k0bFVyMm1ONHp5elpRT0ZFc0hLUjd2VmlreTFvK0FncXl2T3ZYZG84QTZOY1d3c1Z3T0JUUHJXNmRRZjU0Mi8wMXBnN1lvVGdRZ21iOHZtb3RCY0dkT1dDQVlWWEZ3NVhRVldVR1RGcS85dEdqMXpld2FOT0JNT01kVnJObVhvdXZsZ1oySzMycExKeUlBTi96b2pXNUxscnhlUm1HOENxMUQ3NDd6eGR3YU5LelBXb3REZHBMOVRMSnVkVnJvR3ZpMkt1R2hQMFRGa2cyeUYxdU5sSlc3UjRMa3pPVDFJaHB5U0xRUFBtaTNuV1FqUnEzeTEyMndKTEMzcXVKdjRDNURUemR6ZHJBTjdTS1pzTS9GTWhkd2Y1NDIvMDBwZ2JVdWdNcmZtcUZIblltUWRheFRja1liQXllVUlxMHRqSTR2WFliV2thWENabkI3TWxKalEyMko4dlE5a3hHNjFGNWpaYUV2eEZrK25LN0RpVFJIbXNueXpZVHVGM2gvbmpiL1RRbUFGYzJya3VqS2JkREt5ampVS3RzVjVwbHhQTldTejRTYXlxekJSWnhycHVkdnp6SWd6RlcwVGdWWDRkcHRwSDZwMVpNQVd4ejdUTGM5R25iYlRwaXc4MDNUb2ovUEczNlVsc0RZKytrU1RUaW96Vm9lWTdSRkxwQVIzNFdIeDdoanZrTXNNNi9FU0RHcEp2T3MxcG1Gc1dod3VtOGtJVnFQRzE4eEZ0RTFQa1lIcGJyZlpFRmpaSG1DbEdoVnNUdk8rK1J3RW1DNzljZDc0dTVRVGpXNTg5SWxnMGpKcmpCZmRtbU9Ia2Uzb1ZXT01VWEQ0YzdYRXVFYXVSbG5aekIyamxjQnF6SkFUYmM1Z1o5T280VFVieVUzSXZFTkhIZGQwdDl0czJML1c3OWF0a2YzbjBvY2xLemlzR1h5dTZkSWY1NVcvU3llVGU2ekRlb083UlhKTkxxSlhrU3A4ZHhLTklKZEhiK2cxdEI3UHNYUnc4N0VIN1Jrc0J5M0xJdlJZakM2ZFAyczRteWtjOHQxdUMzR0FaVTNESCtqUmg4WEthcTVGUHpWZCt1Tzg4bmNwQ2F5Tmp6N1JRdXlGaUZ0MTBpRm5jOFFTN1dpTm5VazJnbHl0NTJqT1VjTk45MzdiTTNEdnhneTNxdzVBeWJEalRuaVVOYzNKZDd2TmxnL29rbmZJaUoxcThVelRxVC9PSzMrWHRNQUtUQTNHbXVkdDF5Q0NrS282RGg1STJaVURnOW9XcGNKM0o5blFjdVdvRzdQY2NPT05VUFU0MnRTakVlZGoxRkZQNUx2ZFpxc2QyUXJrUFhKRnBxWUhwMXQvbkZmK0xwVUlWcXhFY0RaeU44OGJ6RWlicTFGVGM0S2o0TkRuYlVxeUFlWENBV1NxNGVvaFdWd2hHTEVJck9sdHQ0WGFqcm96OEI1NmpHQ2xXN2JUclQvT0szK1gxQzdDalk4KzBSaEhMV3QxamxHK3NTUEtLTGdqUldQUFJWNmQ1aXczM0hnQ3F6Mkg5WmxQUmx3STB6cGl0N2tuMjFIYmVQWnYwOWdXY20yN21SQlkwN0Uveml0L2wyeWFobTF4R3UvdWFlaWt0MFF4bnAxcEdIc3VwaHV5UGZLTHRXWmd0eGh4Mm5VbUFtdDYyRzAyMmxJbU91bE1uSlNRN1dVT2lSSnJCMkU2enpYZCt1Tzg4M2NKVHhFR29sZnhzc05PeCtoVnBFYmVub0RoeER2ME5Oc09JSnNDcXptT2cyM1hzUkhyS1lLVmpVTnRnOXUvd3p1Rm5XSzNPYmZiYkFtZXJpeTMzWHcrMFNDWnNrMDNlalhkK3VPODgzZkpyTUhhRnVmbHBtUDBhbHVVU2s5a1o1dWVSc0pOV1dpNGliYWxlRk0wdVRaaVBRbXNiSFNLa2RZcGRZamQ2c0p1ODFsZ3RXUkFZR1Y3bVVPNlpkdVZaaHVlYnYxeDN2bTdoS1lJQXpzSFcrSkVIS1piOUNyYTBScTdFelRtN2hRZFJiNDcxNVk0NzdkOUdoaHhOc1JnVndiTG8wdnNWaGQybTY5dHZqbE8yMjNYc1QyazJ1YTBmS2JwMmgvbm5iOUxkQTFXQzdIRHI5TjE3VldrTWtrbWxOaWhrOUd3TlFPanlXZ0dzaXVPdU9xYUJrYWNqV2ZWeXNHMjZDd2FJSGFiLzIxK1c1eStSSFlRU245Y0VQNHVVWUcxSmM2SWJyb3RwbzIyZXlOWjU5Q2RZbVBLNWdoV3E0WWI3eWlIZHZTeHJpZmJpMzNUalFSa3NrTnBqRkFlZXBzbW5jNTJtNDAycjNWZE44VnB0enN6WUF1MkhOdXUxZ0pydXZiSGVlZnY0Z3Fzd09KMnZTNUl6aFhib2hoeHN0TmIrU0N3dEhDd1ZtQXZzZGNpYkowbVJweU5UbEdyWjIzUmVSbE1kN3ZOaHYxcldkK1JGaENIaTZ0Q2kxNXBmUWJoZE8yUDg5TGZtVks4YVNqVDdUaU9KcUlmclpIc0tDbGVUcDJkT1hZQVd0UnZNL0VQSWQyTVBxSkQrYlFOV01zZE5VMFI2cWVKNkZuT3hXNXpiN2ZaYWt0YVJyQjJFRHNwWmpybFp0V3AzV3E5d0gyNjlzZDU2ZTlNYVRTUTZTcXdka1NwNEZUbXZidDBNQkxPVlBTcU1kQmc0MjBsM3FxanVvMVhGclk4ZVZZcm9HYm92dDFpdDdxdzIyeTBKUzJuZzNmRjhRVVBwMmxmMDJVSDRYVHRqL1BTMzVuU2JMalRUVnpGT2xvakZlY1FWTjdXS0k3YW1vVk9YZXZwZ2VBdXdTMXgzbnM3K2x1TVdTaEg1R1NTRHJGYlhkaXRsbVdqcGYxSDZ2ejJ4dkV6V3pWb1YvbDJCbUYzQnVxcmtQdmp2UFIzTWRkZ2JYejBpU2F5dDhNc1gwZkI2V2JNemZVQnN0WTRIVWs4Y2RhTVAxSzFCeGdPL0JrdmFyVVlmZTUwS1pSRG5qTkZQaDM2VytoMm00MTJsSzdBMmdaY2lGTWVXZzIwOUpyRlhjc0kxblR1ai9QUzM1bFNiQnlKZHNDRlJLeWpOZElwaDY0WW81S21MQmhOVTV4MzNxTFJmWGFUM2lMV1hCdHhQdTBnektUREVidlZoOTFtWTREVm5hSU50UkQ3RU9JZ1d6VVNWODA2YnJOYTdpQ2N6djF4WHZvN1V4ckdsNjhPTjUzUm1OYWo0SGhHMFpoREI2QUZYZmgzdGVUTHNRMU5lZExXNDdXTGRKSzFXb2wrbEZHSDJLMXU3RFliSFZkajROODdZdGlMTmZCbjhMdU5DWmJkVnJUYjhaYVBPd2k3VTd6ZWRPeVA4OWJmbWRJd3Z1a2tzS0lkcmFIRmJxRmNUalZZeWV6NWFidkpuNlIzK2JSNE5ONTBpQmJ0OGdLUmM4S0kzZWJlYnJQVmxyWVJPeWxvS25RRXhKV1dmVWUrN1NETXhGRkEwMVZnNmRyZkdkTDU4ZjV2UERZZEJGYTBvelU2TkJJUHVYVFVtYjcrTHVBZytYRUliajVsY005R3BLMDdEOHBodXRwdE5xTURhTmllSHNhZmtrWHJmbU02blVFNEhRVlczdm83azA2TVQ4OW9jYlJHTEdMdFNBbzJycTRjTk54NEk0TmcxdHZtT05kcHdyK0xTQys1cmxKcDY5M3lySGtuc0FyWmJyTWhUTFJpZDhDWHRFOUQyN1hHYUR0NkZzUGltMFZnWmExaW80MkNPelN1eU9ZY09PcDRPMUlTZmNkNHlVU2I4RWV6SHM3VFVkSjBQT1Jac3hQbHhXN3pzdU5LcDB5NlFzcmFWaUQyb0tWUDZkSlJmZVc3d05LMXZ6TWh4R0piaGtmQm9aWFpuSUlJMG91bzZNQ2ZldUZnREdNSTVzZnF5RU1qMWxzRUt4ZFRJbDFpdDdxeDIyeDFYTEhFa1Mya1RRUVRrbmJvekJaeTNXYWJDc0NXeE4rSndNcVk4NG1Xb21Cdmxodlh6aHcwM0dRYm1BMS9oT3Bnbkk1UHJ3S3JVSFlRZG1mb0hqYXhXOTNZYlRiYS9OWThFUUo2VGEzU0dFVms1MnN1T2ZGM0lyQTBaVmNlT01GTU9xWlVHbGdYL2pVWFcySjBPbnFNWWpVbDhGNzU0SEMwTE5md3JjL3RZcmU2c050c1BXTytSRm4wbW5pelNZZlBWR2dDUy9mK0xwN0E2bzcxZ2hzZmZhS1J3dHk1RU8xb2pWdzVrRXdjdlpHcGVlMmR4RTVPMmtKK1pVWFBKekdvNVk2YW5XSzN1clJiclo4dm44VlZQTnZWbzUxMnAybVhqWEhLb3RENjQ3ejJkNFlFYnB5UGpUdGR0dVZSSTlQYjZEVmVFc2N0Nkc5OWl1d2dGTHZORjd2VnUvMkxQYnc1a0l4RU9wR1I2ZGdmNTdXL2l4ZkJzazNEQ3QwU1pSVGNIYVZDYlJvNXBGaEhTMlRpNkkxTXJsM29JSDRVUzA4SlNKdnl5SWp6S1YrWDJLMnNPY3dsdGh6YWFHTVNiVkdyOTVsdUFrdjMvaTZld09xS29jUUx0VUtqallJemtTQXZGR3VNZXpmbFdjTnRKM1k0ZTBzZUNTeTlHYkdlejEwVHU4MjgzV3I1M0lVZzFKdDErRXlaaUY1TjEvNDRyLzFkdWxPRVRRVldtZEdPMXRpZGhjck05dGxtc1JxdUZxUHU5amp0UmsvT0lGL0MwTm5ZVVNOMnEyKzd6Y2FnWXJwUE5ldFZZRTIzL2pqdi9WMDhnUlZ2Sk5OTWZ1UjdTWGNrbW8wRnY5azhlaU1iZ2lLZU0ybkpneEdTTFk4RTFuVGRuVFNkN0ZZRWx2NXBpbEsyM2FRZkdaeE8vWEZCK0x1WUFpdHcxbUE4WTJzcGtNcU10dmc2RzZQZ1JCcE1jNVlhcmxidjJoWG5XaTE1WU1UVDhRekNlRGF5TnlCb21zUnVzMjYzV3JaNXF3ajFqTFZIb3JUSGRKbE8vWEZCK0x0RURudHVud1lWMmdqc3lPRW9PSkZHMDVpbGhxdWxnODJIYWNKOFdvdVM2Nm5NYlFIQnNBTi9RdGtMWXJkWnRkdENhVWZaRXJqWkhnUllNeXl3cGt0L1hERCt6cEJtQXc2TzBKcnp2Q0szeFRDS2JEcWNyaXc1Nm14bFA4NEhaOUNjcGJMSWRMMWxXZ3hHMmkzWEpYYWJWYnN0bE1pQUhnWlBtV0JIalBhb2xTK1pEdjF4d2ZpN3VBSnIvemNlNjBqQTZMYmxjU1UyeFJoMVpEdlpZcmJXYzJSclpOQVY1NTFhcHJrUmF5a0dNOTB4Ymt2QjJZdmQ2bk1kVmlHbCt1aE8wVjR5VWFiWmFJK0YzaDhYbEw4ekpQaTluUWtVeEpZOHJjUWRPaGtGWjlOWlpIb0hZU2g2bnliTWw4NG1senRxb3VWNmFoZTcxVlVucjdjQlZxN0xQcHYrWlZlTXZsUHJNaTNrL3JpZy9GMUNBbXYvTng1THhHbnRJUCsyaWNZS3ArYmlxSkN1TkJ1ZEhwMnJucWNKNDQyUTlEUkZtTXNkTmR1aTFLdE43RFpyZHB1TmRxKzNYYk5hK0pkc0NJMXRVY3JVbHFIMldLajljY0g1TzBNUzM5MGU1OSt0QVJXZlQ5dEVkK2xvRkp5SXdHbktjTVB0enRBN2RlWFlBUmJDU0Q1WDYyYjBHTDJham5hYmpUYWZqeWNCeFBNdjJ6SXNjSnVJSGszZG1zRkJTQ0gyeHdYbjd4SVdXUHUvOFZnNzhYZENOT0ZmYVo4UHlqbldFUmU1UE9pMkk4TWo0V3p0SUV5MGNUYVN1MmtVYXc1SFNma2lCcmRGR1ptM2k5MW0xVzZ6MFhIbDYxRkw4ZnFsUFJrc3k3MHhmRjRtYmFUUSt1T0M5SGVHSkwrL1BRRWp0UEptN29oc09Jc2RKTDk5MG9xKzFuQWs2dVNhOHJUaHRxZlFxTE9CN0NETTRtaE9JMEU4WGUwMkcrMUliMjArR1lFVmJ5M1dyZ3pZeHNFb2c3UXUvTkdyVEZNby9YSEIrcnVrQk5iK2J6eG1BeDVPd0JDRGp2Q2d4dEVKSy80MU83dUE0Y0QxZ3lGZ2E1SUZhZFhoS0RpZWsydlN5QWl5TGJDNjR6VFNYRzB0enFjcHdtenZxSW1WSVQxWDBiM3BiTGRhZG9MWjdyaXl3ZllFMnM1ZTBwOHlzK0tQaU8ySzBRNHlPVFVZZnE5QzZJOEwxdDhsRzhFS1puZmZuR0FEQ29aUUw1QmFOdFRHUUFVR0c4ZHdvSEZIY3JSTlNWeFRML2x6a25WeVdqVGNYRG5ZZUkxMEI5bGRMMkFsZjQ1aWlEZkZaTlA0WGkwQnUyMU1RU3huc2d5bXM5MW1veTNsczhCS1pNcXNPYVF2c3FiWS9pNFFmV09PTGRBM1pyTWM4NzAvTG1oL3A2aXFtdElQTno3NlJERDAySlJDZytpTzBZRTFCU29yV2FXOU9leWFrYkxxTmdjS3NUR0dnN0hGZURZYjZXZmtiWXhob01HenBPS0pvRWpIME95TVVJYmhJcUtKMkx2MnRrZDU1K0NPdW5RZHgzQWN4eFlzWDVzRzVSNnRuSzBoNVJOdlBWcThkOTZaQVVOUHBVMEU3U2xSa1JIcGVrMEpkam83RTRnV3BDdDhwNnZkYWxtR2tjN0VpelZLRHgxVWRNWHB4THJRNzVFNkJ4UHNrNExyYXJwRDZzWVd3UjZhU0N6Q0hwd1d6SlZJMVh0L1hKRCtidjgzSHN1TXdBb1JXZHZRUjJLemRXR051d1h0RnpkcTBibGs0cm02QXUrZnFKQkpoZDJrdjY1Z1I0cHRKZno5RW1FTDJxKzd1TVYrTkx6V05xS3ZMOUlUaXpNY0xack9kcHN2YldrN3VaK1MxVnBvcEVNNzJac1dqUGZ1ZXUyUEM5TGZ4Uk5ZaG5UdUhGaVR0VDJnVm5NUm9nODI3QmtSS2pNVE8zZTBNS0JNUEZkMzJQV3RHYjVIT2lJdFcvZk85TTR0clVmdytiRFRweU1MZGo1ZDdUYWYycEtlcHhKdGdjNDlHd0t3Ry84YXFJZlJ4d1lCUGZmSDA5TGZHVFI4a01XQnd1M09jSVBlSFdqUVN1RFBhT2M4TmV2VXNXVDZ1VElsTExvMHJMOXMzRHZmT3BsOGNEalpXSHMxWGUxV0JKYTJCSVZHSnFZeXV3UFhYMGR1ODhIbFUzODhMZjJkU2VNSDJoMzR0QVFjVWd2cFJWT0M2eXE2UXY3TTVZaFRDMlBOUkhTcEt3c05WeXRIdFpQa2s0dnFVV0JwNmJpczZQTlE0SEJiekVabk1sM3RObC9ha3Q1T09JaFg3eDBoZlZFNi9WR3cvWGZvVkZUcHZUK2VsdjR1clRWWUFCc2ZmU0tSa1Y5d3dXWG9BdVB3bCtrSytiT2J5QXRDQlVFUUJDRlZnb3ZXUXpkTmhQWkozU0g5VGxlWXFDZ0VwRC9Xa0l3dWNoY0VRUkFFUVJCdXhTQkZJQWlDSUFpQ0lBSkxFQVJCRUFSQkJKWWdDSUlnQ0lJSUxFRVFCRUVRQkVFRWxpQUlnaUFJZ2dnc1FSQUVRUkFFRVZpQ0lBaUNJQWlDQ0N4QkVBUkJFQVFSV0lJZ0NJSWdDQ0t3QkVFUUJFRVFCQkZZZ2lBSWdpQUlJckFFUVJBRVFSQkVZQW1DSUFpQ0lJakFFZ1JCRUFSQkVFUmdDWUlnQ0lJZ2lNQVNCRUVRQkVFUWdTVUlnaUFJZ2lDSXdCSUVRUkFFUVJDQkpRaUNJQWlDSUFKTEVBUkJFQVJCRUlFbENJSWdDSUlnQWtzUUJFRVFCQ0d2TVNYejVZMlBQckVOMkJIakt6WmdScGJmWVEvUWt1SnZPNEROMGd6ZVFJLzEyeEtvNDBUb0JuWURPd3V3WGxxQXByQzYyQmw0WDVzMFhXbHp3clMxcllOaHp4OUtGN0JPcWprejdQL0dZekgvM1pEa3hYYnUvOFpqU2tDWUJOa05LSUhQakJ5ODQ4T0JlMjhQK2J2MmtHY0svNndMZVg1eGlqZXpNMUJHZXFyZjlnajEyeDFXcDFzRGY5Y1lFSWg3QzZpalZ3UC92UzdrZlI4T3ZPK09nSE1WcE0wSjA5ZTJnczhmcVY4VWNaVkRVcDBpYkF6NTd3NmR2RXRUbUdvbmhxSi9PQ0FjT3FRSjVHWDl0b2Y5MjI1dWprUTJBMXNLWUdTOUovQmVPeU1JZ00yQmppRFJzanNZNkZBdWhOV3ZJRzB1MG52dkNiU1piUVZZcjFyYWxoNTl0cDc4ZHFHMW13dkFMcUpIREcvQ2xPd2ROajc2aEZXbkhYQmptUE9MaFMwd0FoVnVSYS8xMnh4SFFIY0huR05MaE00eEgwZlhPK0lNQW14eEJoS2hUcUVwMEpGMEJQNS9MN0JZbXJxMHVRanNDUGlBblFtMnIrbHNXM29kREhRaHl3YTA3aFAzQm13OUtiOXBTdUZtelRxc3lNYVFCaWFOUzl0T1JROWwyUlJvNVBGRVh4ZXByOGZUV3llWHFMaU4xeEdFajlDM2MvUFVseUJ0THJ4OUZESmEycFplQlpaRXI3VEZSb3BUcmVrS3JIWWRqVXFrY1drdnNOcDErRXl4Uko4MUxMcVFyeDE3WThqQUlSWVBTM09WTmllSWJSRS8yaXJrZ0ZUV1lHa3Rab0pURmxxcDkvWTQ5OXFSNFBYMkpqRXliUXBjOXdMK2RTN2hueDF4M2ozOCs1RjJSamFHZmVkQ2xHczJScmplbG1sU3Z5MWgzMnVNVWgrN29qaW9TTi9kbG1UNVdnUDFIZnJ2ZThNNjRrVGZkUXVKclpkSzlEMmpQWHUwZHc5dGE5SFc0bHlJODl0bzVSak9yZ1N1c1RkS1c5NlY0RFBzeVVLYjI1YkFPN1FrV0tjN2dPRUlkUkhKbit4TnNBeENmZEsyTk10dFM0UzJIcTNOSk5OTzBtbVBXdHRXUHZqdHBqZ1JyRVRLUHRxNm9tVHFMZDEzM1paa0d6NFl3L2NsNHRmQ1A4TUJQejJjNFBmakxnbElTbUJ0ZlBTSjBMQzViZjgzSGt0WEtRY0Z6KzQwcjlNY0VzcnJpdU1NNDRrR2E4QlFyQWxFY0lKQ0xPaUFRbmVqeklqeFhpMkJ4dGVFZnkxWTZBNldEdDdjSnI0bGJIU3M4T2FVVDJNVUp4UDhYanR2N2dyY25ZU2hXaE1zeTJ6VnJ6VkIwUmZxTUhjR3lpRllGc0hvdzJiZTNBRVdUa2ZnMzRMdnZEdXN2Q09WNy9hdzhtMEpHSDFYV0oxYWsramNiV0dPS05paHh1b01ncy9VRWRMUlIzclBhTThlZlBkZ0JDYjRiNHREaE9xT0tPMXRNVzlPSzltNGRjZHVjQzFQdkIyN1c2TThRN0FPYkFFNzN4V2hMTGR5ODRMenpXRjJHRngvdGpNTGJXNG5ONi9UMkJ4bTI4MkI1NC9sblBjRS9Fb3dMVXBvT1FUdC9tQ1lQd24vN3VJWTVSR3NqNTB4dnFmRUtMZWcvOW9Tb2M2M0JxN2ZtRVk3U2FjOWFtMWIrZUMzNDBWYkYwZXA1OFVoOTloQzVFME55ZFJiT3UvYUhuaVBkV0gzaU9RUFFuL2JIZVY3dXdQdnREWHNkN3ZEL0gzd3M1MDMwM0xNaVBHOWh3UDNiVStrZjB3Mmd0V3NZWFNqT1dRa1prM2pPcUdpd0JwSGNUWW04Tng3QXQrTDkweWhUaTdZQ0cxaHhydzE4UGZ0WWIvYkU2akFoN2w1V2lHNGc2VXI1THVSbkVSM2lGSEVvcU1BNnJjNTdOMjdZa1FRZzgrOVBjeVJXZ08vVGVTZEdoTU1zMXZEdm1NTmRQNFBoOVYzZStDVDZQUlJSNFR2Qm5ldnhPdVlteEtzdTBpREIydUVkKzhPYTZOTmNjb3MvSnBkZ2JwSWRQMUNZNVR5M3g2d3NlNlFqcTRseWpOMGg3Mi9MZkQ3elVrTUdOSnRjMDBodncwVnZWdWozQ08wRG9JNWpkWVJlZjNjd3lIMzJCWnk3WWZEL0U5empQSllGL0xkNWdqUEducS84SExiRVdpSEhWR2VNYmk3MGhaQklDVFRUdEpwajVtd0xUMzc3VVNpclpIcXVUdkM0R1JiQkgrZHJIMm44cTYyQ0cydE1jYTlRLzJzTmVTWnU4SytzenRLT1lSZmIyZVlEVGRIcVl2Mk1EdlVWR0FsbWdvaGtSSGlqcEJyYU5VQmg2dmNjSVVhcitGdUMzdkdlSkdaZHVJbktnM2RqUk1NcWNjYlRlOE9hV0JORWVvZzZFd2JZNHppR3RNMFZMM1ViMU9VRVdqd3VrR2hHOXo1dERuQ3FEUFI5MmtPRVdPSnJEL3JDSXRtUkx2UFRoTGZ0V3FMSVFhQ0ViSWRNWjQ5VVlIVm5ZQUREaS8zcmhnaiszVGJUQ0xQc0RPR1FHblJhR0NnUlp0cmlsSWV0amoydFRja09oSnR6VmQ3Z2dJalViSGRsRVRkQmFORzhkcXpqY2hKT3BPMXhWVGJvOWEycFhlL25jakFPRlk5ZDRROHV6WEM0Q1ZaKzlicVhVTUhDZDF4SW92V0NJT0pXQU80UkwrWGxrOUxXR0FGMGpPMFJHaE1xUkFjQ2FRNkVvbm1ERHVTaURoRXFzeVdFQlZyamZKY3djaE1OOG1sZXJDR0dHKzhuVHBkTWE0Qk4wKzViSW5TUUpMZC9hZlgrZzBQZjRmUG1XOEppWEJzai9IN2ppVGFVcnpkazQwUkRMNHBwUE5ObCs3QXFIQjdGTWNTYVMxaFU0TE9xREZLKzJxTzB2YUM2enRzVWRwRU1zSXUwZkx2aU5HQjJhS0k5bVNFUXFiYlhEU3hGeXJDT3lLSWw2YUFnT3BJMFQ4a1VwK3Aya2RMb04xMWs5aE93KzFwdHBOVTI2UFd0cVYzdjUzb3NvNTQ5ZHdlSmJpUWJMMXArYTdKRGhJNkVteFQ4WHhrTEhHZkdZRVY3blQyZitPeFZMZnZCNDAwdEFOdTFNQVp4bHN6MUJTanNFS25kN3JER2tHa1VSd2tmNHpDbHNCOU9oSndlbzFSUnIwdEliOE5Sc1lpalJDYTB4d0ZwWk9lUWN2NkRSZTV3Zm42ME05aTNweUxqMlY4aVVTa1dwSXcxSzRJamp2WVBvWjVNNTlRT2dUWHlLeUw4UHhiVXV3b283V05TS0h6NExSSU4yOU8rNUNFc051UlpOMG5JNFp0Q1hZQ0xTUzN5U1BkTmhkdFdtTkhTQlJrY3hUL2tPakFwakZLZEMzOEdlSkZZbU9OMUZ2Qy9NcTJOQWRleWJhVFZOdWoxcmFWVDM2N0k0RjZiay9Bbm14cDFKdVc3NXFNVDB0a01KRm9YeEJyc0piTVJwbWtCSllXZVRhQ1VhS3RZUlhabUliUkpxcXVZNjNCMkJQaU1HMHhucXM1eVE0N2t0RW1zdzRvdkZFM2NldmFsS0Rqc2NiNFhyN1dieUpyWWVMOTNwckFpQ1g0akUxSkdHcWs5U29kSVozMHRvRFEwaUtpRlR4OVlHZVVVV1l5enFNeHduZENIWERvanJ3dHZKbGNMOTdJT05KdW5oWVNYM3VXYVBnK1VyUWd0TzJHNzNyYWsyUjcxcUxOUlhxV0p0NWMwMlNMTXZqU2FwMWdTNElEcGRCbjNSdWgzTm9UOUh2UmRuOWRTTEdkcE5NZXRiYXRmUExiOFd3MGxoK01sdk10V2Z2VzZsMmJVeGdrSkJLRlRVYXdSZHFGbUpTb1R6bUNsV0kwSWhnbENsZksxaFE3NFpZMG55azg0a0ljWVJDNmVEV1puRGVOWWNhWDZIdnRqdkQzSFdHR3NEdWtiRVB2bDI0RVN3LzFHK284ZHFmeCsyU21CeFBwNUJxajFPUG13SWg0ZDlnb0x4R1J0U2VCMGRIdU9CR2NSSjg5bGdNTzNYMW9KZjYwU0xEY3duZnJyRXRSMk1UcUJLS3RrV3NPS1ovd2FGTlhrcmFxVlpzTFBzdnVzS2hKdk9oT0lyNGhXQWE3MHh6NU44VW90OUFGNGZIOFhqREtGNzdiYkhHSzdTU2Q5cWlsYmVXYjMrNUl3dytHRGk2NzA3QnZyZDQxMGNGdU10TitpZmpJMERwZlRPUWRzdG9Lck1ENnEzUWpITUhkZWFHanVsMXhITDhXalN2ZTczY0VSaW5odXcxakNheGtFd29tTTFVVWJZMUJjNVRLRGE0bENFNkZOS2I0ZkhxdjMxUkUzNVlrZnB2b29zWjRJNit1Z0NIT0NLa0hhNEx2bXN3VVJIc0s3VExhUGNJZGNIZ2tMcDdUaXRSbWtoMk5Keks2REJWU3RnU2NjV09hRWFpdU5OcHNWOWlmelVSZmkyaE5vWngyYTlnNWRjVVpRQ1FxTXFKRkVwSnRKNm0yUjYxdFMrOStPOUgxVjRrc1VtK0pNQWhJdHQ2MGZOZGtCd2xhYmVhSUpkaWFrdTBiRGFrNG5SVFdYd1hYTFVWYXl4QnA1SmlzS0VnbGxOOFlFbkVKZjY3ZFVaNHAzU212Ukl4MlYwaWp0Q1ZRdVRadURzTzJhTkNwNksxK1V4RjlvZXRRZGlkUkJ2RU1mMXVZdU5sQzVNU2xvYVA5N2dTTVB4Rm4zaEp5N1owcENLd3R4RjUvRmJvZFBuVExlV09Tbzk2Z0FFZ21BaFRQQVZvRHo5OGRwUk9JTkpXUXlrWVVMZHBjNkcvYlEreHBWNXErWVV1SWZXL1hjS1Rla1dDNU5TWm9ReDFwdHBOVTIyTW1iQ3RmL0haSENvT2cwSGNQUG1kN0d2V201YnVtTzBqSWhHRGJtcXdJTmlUcC9CSjFPc0ZrZXFGT0lWTGVpTzQwUkV1Nkk4M2dUcmYyS004Vk5LckdDUGRKWkNTMUxhenliV0dHSE8yWmdnZno3bzdnWEtPOVp6RFhVakFCWHpycEdmUll2OTBwaUw3bUpOdUdOUUVoMkJKQnpEZkY2YXk3aWI4dXFqa3M0aGF0Y3czKys4TkVYMkFkNi9mZFVhSVZrVHJhblNIdnNTdE5wNVZJWGNYckJIYng1amI3YUl0d2JSbzhoeFp0TG5UMGF3c2JzRVh5RzEwaGRkRWN3MGFEdTVjZnp2QklQZHJ6eGZKN2pYRWlXSW0yazNUYW85YTJwWGUvblVnZkdHOTNjYkJPSTIyK1NOYSt0WHBYTFFZSm1SWnNHWXRnMldKOEo1Z2ZKbmp5ZE5BcHhNcnJFcG84TU5tUWJLcnNpVEZTQ1k4RWJBbFQ3UjBoVVp0ZEVaNDVlSXhDK0RiNm5TSGx0RGVzTTl3UytMdG0za3hPR2kwYUU0MnRJUjFvZHhxR3FwZjZiVW5nbVJKcEg5MVJITUVPYnM2RzNSN3l1ejFoOVJPTWRyWkVHTmszaHpubzRMTUhNM0Uvbk1Uek4wYTRkMVBnM3JzQ2RSdHA3VU5YbkdmZkUzak83VW5VZldpbTRtQ2JqVmJHa2ZJZDdZandMUEhxS3RJYW4yQlpXZ1B2M3AxZzVMRXh4RWEzWkxuTjJTTFl2aTNFYjJ5TEVBM29EdkZONGZuNGdtMjFLMG9acEROUzcwcWczRUlIb2p1aXRORTlFZDRsbFhhU1Rudk1oRzNwMVc5YmsvRGIwUVJEc0srS3RyTTFtWHJUOGwzMXNQNnFLMEpaN1NESlhZU0txcW9SLzJIam8wKzBKSHV4c0ViWkZOWUFkb2QxVHBHbVZvSnA2bU0xcXVFNDkzNlkyTmxzd3cxemNWamxYSWpRS1d3UEUyUEJjNDVhb3J4N05QSFdRdVFzMU1FdHdKRTZ3T0V3WWJLVjZGTXZ3ZDFJaVJ3Sm9zZjZUZVNaSG80VEVVcTBRN1ZGNkt5QzBiam1DUFhUSHFYY2R3UitFNzVGZXpmSkxjaHQ1T1kxQ3VFZGNCZXhwOXlpdGNsb3p4NXRhalBVMlVhemw0TUppdVd0Q1R6enJnVGFXbGVFT3Q4Ykk5cERqSGFaelRZWDZqZkM4eXQxYy9NVWVyUzJGS3NNRWltUHpXR2RTcUwyRWFuY2dsSDU1aWdDY1djYzN4V3JuWkJHZSt6T3NHM2xrOThPdHRWNDlkd2Q0aGU2MDZpMzNScSthN1N6Z3JjbjJMYldoUW1qYUVJOFhGQUcxdzRuM1dmcy84WmpxUW1zUk5uNDZCTk1jN2FSK0JsbmdpQUlnaUFVQVBFRWxrR0tLQzJDeVFQM1NsRUlnaUFJZ2lBQ1N4dUNpUU90VWhTQ0lBaUNJSWpBU3A5ZzdxeGRKTGNWWEJBRVFSQ0VBaWZ0TlZpQ0lBaUNJQWpDelVnRVN4QUVRUkFFUVFTV0lBaUNJQWlDQ0N4QkVBUkJFQVFSV0lJZ0NJSWdDSUlJTEVFUUJFRVFCQkZZZ2lBSWdpQUlJckFFUVJBRVFSQUVFVmlDSUFpQ0lBZ2lzQVJCRUFSQkVFUmdDWUlnQ0lJZ0NPSDgvd01BSWs4TmdBdlBaZ0VBQUFBQVNVVk9SSzVDWUlJPSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIkZJRE9fMl8xIiwiRklET18yXzAiLCJVMkZfVjIiXSwiZXh0ZW5zaW9ucyI6WyJobWFjLXNlY3JldCIsImNyZWRQcm90ZWN0Il0sImFhZ3VpZCI6IjUzNDM1MDJkNTM0MzUzNDM2MTcyNjQ0NjQ5NDQ0ZjMyIiwib3B0aW9ucyI6eyJyayI6dHJ1ZSwiY2xpZW50UGluIjp0cnVlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWV9LCJtYXhNc2dTaXplIjoyMDAwLCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjIwLCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjM1MCwidHJhbnNwb3J0cyI6WyJuZmMiXSwibWluUElOTGVuZ3RoIjo2LCJmaXJtd2FyZVZlcnNpb24iOjJ9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiTk9UX0ZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjItMDctMDEifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIyLTA3LTAxIn0seyJhYWlkIjoiNGU0ZSM0MDEwIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWlkIjoiNGU0ZSM0MDEwIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkFuZHJvaWQgRmluZ2VycHJpbnQifSwiZGVzY3JpcHRpb24iOiJBbmRyb2lkIEZpbmdlcnByaW50IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjI1NiwicHJvdG9jb2xGYW1pbHkiOiJ1YWYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfSx7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX3N1cnJvZ2F0ZSJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCIsImJhRGVzYyI6eyJzZWxmQXR0ZXN0ZWRGUlIiOjAuMCwic2VsZkF0dGVzdGVkRkFSIjowLjAsImlBUEFSVGhyZXNob2xkIjowLjAsIm1heFRlbXBsYXRlcyI6MCwibWF4UmV0cmllcyI6NSwiYmxvY2tTbG93ZG93biI6MzB9fV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwidGVlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbInRlZSJdLCJhdHRhY2htZW50SGludCI6WyJpbnRlcm5hbCJdLCJ0Y0Rpc3BsYXkiOlsiYW55Il0sInRjRGlzcGxheUNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbiIsImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6W10sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUVnQUFBQklDQVlBQUFCVjdiTkhBQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQXlScFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR3L2VIQmhZMnRsZENCaVpXZHBiajBpNzd1L0lpQnBaRDBpVnpWTk1FMXdRMlZvYVVoNmNtVlRlazVVWTNwcll6bGtJajgrSUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWtGa2IySmxJRmhOVUNCRGIzSmxJRFV1TXkxak1ERXhJRFkyTGpFME5UWTJNU3dnTWpBeE1pOHdNaTh3TmkweE5EbzFOam95TnlBZ0lDQWdJQ0FnSWo0Z1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNGdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlnZUcxc2JuTTZlRzF3UFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdklpQjRiV3h1Y3pwNGJYQk5UVDBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5NFlYQXZNUzR3TDIxdEx5SWdlRzFzYm5NNmMzUlNaV1k5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5elZIbHdaUzlTWlhOdmRYSmpaVkpsWmlNaUlIaHRjRHBEY21WaGRHOXlWRzl2YkQwaVFXUnZZbVVnVUdodmRHOXphRzl3SUVOVE5pQW9UV0ZqYVc1MGIzTm9LU0lnZUcxd1RVMDZTVzV6ZEdGdVkyVkpSRDBpZUcxd0xtbHBaRHBCUmtJek1USTJSa0U0TVVJeE1VVTFPVUl4TVVaRk5qaENSakkzTWpJeU5DSWdlRzF3VFUwNlJHOWpkVzFsYm5SSlJEMGllRzF3TG1ScFpEcEJSa0l6TVRJM01FRTRNVUl4TVVVMU9VSXhNVVpGTmpoQ1JqSTNNakl5TkNJK0lEeDRiWEJOVFRwRVpYSnBkbVZrUm5KdmJTQnpkRkpsWmpwcGJuTjBZVzVqWlVsRVBTSjRiWEF1YVdsa09rRkdRak14TWpaRVFUZ3hRakV4UlRVNVFqRXhSa1UyT0VKR01qY3lNakkwSWlCemRGSmxaanBrYjJOMWJXVnVkRWxFUFNKNGJYQXVaR2xrT2tGR1FqTXhNalpGUVRneFFqRXhSVFU1UWpFeFJrVTJPRUpHTWpjeU1qSTBJaTgrSUR3dmNtUm1Pa1JsYzJOeWFYQjBhVzl1UGlBOEwzSmtaanBTUkVZK0lEd3ZlRHA0YlhCdFpYUmhQaUE4UDNod1lXTnJaWFFnWlc1a1BTSnlJajgrcEQvekJnQUFEQkJKUkVGVWVOcnNYQVZ3Rk1zVzdVQ0NFNElGQ3c0QkNnbnVCQ244UTNBS2QzZDNMeWdjQ3Fkd1QrSHVyb1VHSjBCd0tkemQwcjlQRjNlcXAzZjJrZmQ0MmQzdzlsUjFZTHQ3Wm1mdTNMNXliczk2TURPU2k5WkJ0UCtKbG9uOXQzQkR0SzJpelJUdHNkV0UycUs5RW8zL3g5dXJuN0l3SWNndEdKc0dtVEFQMFJLTDlsUzBhTXdORmVHaStVWVhmd2FMRnVpV2h3MmdQRC93NTVwby9tNTVXT0k2QlBSUnROaHVXVmppa3lmVXlGbmZualp0V2xheVpFbVdMVnMyNXUvdnorTEVpY000NSt6YnQyL3N4bzBiTERRMGxCMDllbFQrNnlSSTJieHh0SWVvVzdjdTM3bHpKLy94NHdlUENJNGRPOFpidG16cERFLzJ4cUVDcWx5NU1yOTQ4U0wvcDNqOCtERnYwYUtGUXdYazhWTkEzcEdwcDU2ZW5tek5taldzV3JWcTh2UHIxNi9aK2ZQbjJmSGp4OW5WcTFkbGUvRGdBWHYzN2gxNzgrWU44L2IyWnZIaXhXTXBVNlprT1hMa1lGbXpabVhGaWhWanhZc1hsOGRqZmxCUUVBc0xDNHZzSmZZMjBqV29kT25TL05XclYxSURaczZjeWNWTldzNkxIVHMyOS9QejQwSVlQRjI2ZEZ3SXlISmUrZkxsK2I1OSsvanQyN2Q1bzBhTnVJZUhSOVJjWXRHaVJlTVZLbFRndTNidDRyMTY5VEtOcFU2ZG1yZHAwNGF2V3JXS256dDNqZ3ZOc1Z4U3dsaHpvUzE4NjlhdHZFK2ZQang3OXV6R09SSWxTc1I3OU9qQnMyVEpFcGxDaWp3QnhZMGJseGNwVXNUNG5DQkJBbm1UWjg2YzRiOERhTTZZTVdONGloUXAvZ3dqalNjOWVmSmsvdm56NTEvZS9QdjM3N213UWZ6bHk1Y1I4bkFiTm16Z0JRc1dqTHBHdWwrL2ZteklrQ0ZNMkJlYk1jUTJodzRkWWhjdVhHQWhJU0ZNZUNnbUJNVEN3OE5saXg4L1BrdWNPREVMQ0FpUWNWSmdZQ0FUR21uNVBjSEJ3V3pnd0lGTWFGZlVNTkxpaHJqd1VEWlBISm94YWRJa1hxaFFvWDkwM2t5Wk1rbDdaaFVxZlB6NGtUZHMyTkQxTlVnRWdXelpzbVhNeTh2TDZJTmJIemR1SEpzOWV6WVRIczNvVDVJa0NSTkxSRWJVR1RKa1lMNit2ckpmR0hpcFRYZnUzSkh1WHhoeWR2bnlaZFAzTkczYWxIWHYzbDFxbUFxRUJmcGNsOUdnSmsyYTJEelpwVXVYbWd5cVdEYThhOWV1ZlAvKy9melRwMDhSTnM0aTllQ3paczJTYmw3OXp0NjllNXZzRzV5QVN4cHB1RzRkNGlrYjQ5R2pSK2ZDSG5HaFRmeDNnZENnZGV2V3hya1JOeDA4ZU5BWVIzamhjZ0phdm55NUtTWElseStmTVZhNGNHRXUxTjd5WnA4OGVjSlBuRGpCeGJMa0V5ZE81Q05IanVSang0N2xDeFlzNEx0MzcrWTNiOTYwS3lpY1UwVG54dmZnT09ENjlldXVKYUJreVpJWkZ3MDNMV3lLTVFZdDB2SDI3VnMrWmNvVVhyWnNXYnNSczlweTVzekp1M1hyeG9YWHN4VFV3b1VMamJsWXZrRHQyclZkUjBEQ3hSb1htenQzYnFNZmthNE9wQnYyZ3J4VXFWTEp1S1pNbVRJOFQ1NDhQR25TcERaek1JNzRSNGNJRitUeG1JT2xMSEk5SGlOR0ROY1FrUEEyOGlKVlNnSlBYTVdYTDE5NGpSbzFUTWNoOTJyZnZyMU1PZTdmdnkvbnFJRHhGVjZNcjEyN2xuZnMySkVMcjJjY0MrMURHcUxpK2ZQblBIUG16SEljR29RMHhPa0N5cFVybDd3NDJBdDczZ3cyQ1Vtb0dzL0F4dndkTHdaZ1BvNkRVYVp6WVhucHNSWWNCc1pjUW9PZzdyQTd5TWJ4R2N0RE44THFEZlh2MzE4bW9mWUFMYUJtRHppK2I5Kytwbk9xZVBqd0lZOFZLNWJ6YlZETW1ER2w1MEhrak04aTJPTmZ2MzQxTFJIMFVYYS9jZU5HbTV2RjBwb3hZd2F2VktrU2p4TW5qdW44eU5LUjhJNGZQMTRtcVRxMmI5OXVhRW1YTGwxTVk0aXpuQzRnVllYeHhQU2JLRnEwcURHK1o4OGVHODNxMUttVEZCek5TWk1tRFcvUW9JRzBOMkFPOVpRRU5nN2FvZUxhdFdzOFljS0VjaHhadmdxUkM3cE9ISFQ0OEdIVHhlRkc3ZG1KTFZ1MnlJaWF4bXZXckdtWnUxR0d2M0xsU3NQZ0l1QmN2SGl4YVE1aUpWcmk0SjlVL0thaC9uY0V0R2JOR3RORndjM2Fzdy93V09xeE1Mb1JCWmFhbW1Mb3hENHhreW9CaDNqTGFRTHk4ZkdSZHNCZTBGYW5UaDNUMk5HalIwM0xVMDBQQ0VlT0hPSHo1czJUUW9kOTBnRk5wZUN5WjgrZXBqR1JFTXYrcWxXcm11eVUwd1Frc25QVEJlN1lzY01ZSzFHaWhJMHhWbzJ3eml4Q01HcVFTYTFreVpMOHlwVXJwcmxoWVdHR2w5S3ZBV0VIK2lucVBudjJyUE1FdEhmdlh1UEM0S0dvSDhTOHlnakNteUgyb1hGNEdCWHo1ODgzeFZXSXRsZXZYczJIRFJ2R3ZieThaUCswYWROTXg4Qm0wVEhJdlFpaG9hRkdyQVVnT1ZZZGdVTUZoUGdIUUlKSmZZaUR3c1BEVFRjVEdCaG9qSzlidDg0MEJnMmdNZDBMRVZDOXNMSm4wNmRQbC8wNWN1UXc5ZGVxVlV2Mm56eDVVbjVXSFlMREJJUVlhTUtFQ2J4Y3VYSkdYN05teld4dXJtTEZpc2I0bkRselRHTno1ODQxeHBETi94V2FOMjh1NTBFb0tvb1ZLMlpqN0pHZW9BOWhBa0RwaDBNRnBLc3RxRlFkMWF0WHQ2c2Q2cEtFY1ZWeCt2UnB1Ynp1M3IxcjZrY0NpL2xJUkFuMzd0MlRmZDdlM3FhNXlOWFFIeElTSXUyWTA5eDhnUUlGNUEzcHNVdXBVcVdNT1lNR0RiSjB5V2oxNjljM2pjR3pxUlVSMVpNaC9hQWtWd1hPb1dzaGpENzZHamR1Yk5KaWh3cEl0d2xFZVdiTW1OR1lNM1RvVUJ0YUFzc1RZM256NWpXTmdZelh2d1BweHRPblQ0MDUwRlQwVDUwNjFaUjdxWWFaQUxvRXg2ZFBuOTQ1QW9LN1ZZR0xWc2ZWbXdCdTNickY0OGVQTDhjQ0FnSk05Q3ZLMHhqRGNzRE9ENFFNcUtmQjZNTUpxQWt1YUE5NE45VlRZaDdPcXpLWENDYWRtbXFBNGdEQXkyRG5ocm8wOUFBU09SUHhPVENzMzc5L040M0RFMkhNQ3MrZVBUTUpDSjRRY3hFZUVMWnQyeWI3a0g4UlFPVTZWVUR3WW9oNjFkbzRvdGhIang3WjJCeEtiREd1aHdHVXQ4SFFScFRVUjlBSkJwRUFnZU1jV0ZZRWFKZ1ZLK21VWkJXRzB5cXZRcUpKYzhBZTZxQ1loUnFFQk1LdGJkdTJNZ3pRbzJqQzRNR0Q1WHg0TWIyYVFRd25BQ1B0VkFIQklFT1RyTmhCZFZlSEhnWWd1aVpYL0t0V3BVb1ZtVExvbXhnd2hnUlc1YnZSdDJqUklxTnY5T2pSemhNUTFOZHFrd0dTVWxRaVNMUDBhZ1M4RHBGc3hCOUQrK0FCWWNnUjV5Qk8wbmxvblRiUmN6NkVHK2hEVUdsRnV6aGNRUEFrNEpzSkNPeXc3NGZHc1V4UU05ZVRVbXlOd1RpV0Y0ejNYd0hHbVZJS05DeFpOVEVHeVVZQXpZRStsSjBJYWduS0tVc002b3hnRHZhRitoRGk2d1FhQUlOT2MwQ3pXdUhGaXhjbTJsYjFncWkvNFZoL2YzL1RQaVRhd1FiUUhHSXRuYzRvcW9rZ2FsYWJOMisydVRsNEprbzRyUkpXM0h5SERoM2swd2FONGV2cnk0T0NnbVJkWHdXOEk4VlJhbFB0RXlYR3dQcjE2MTJEY29VTndkS3hBdWhSZXFwNmlScEFqdmFyUFk0bzVSQ1FvZXR6c053SXRBVUdkZ3ljdDBzSTZOU3BVemFDT1hEZ2dMdzVsWDFFTUtlaVhidDJ4amlNS2JocUJIZlFNTFhtamlXbDd1Q0E4VmEvSHpRdWdXeGc1ODZkVFJ5VVV3VUVRYWlFdk82KzY5V3JaMU9OUUEyZE9HU1ZlRk1CMGt6ZGZLN1cvOVdLQ2hsdWdQWlJSNlRtN3pBQmdmb1lNR0NBa1M1UUE5MmhsM3VBVnExYUdUZGhiOWNIQVV1U3pnZnF3aXJBUkdtYW9HNkxjY2xObktBL2tGeGFSY0F3cHJUcEVoR3pYbHRIV0lBeURaYUhDaFFWZFVJT2NaTVZoUXR0ZFZrQllZTzNGVUJYWUtjSHpRUERwKzc3UVc1R1pKZ1ZsVUxjVHNxVUtZMDhEcHVvYUs3Nk1INkRISXQ4QWNHRHFJQW5nV0NvcUVkejlMUUUwVER0b3FjdExHaVU5Q0l1OHZUMGxIMFU4eURpcG1CVk5lQy93ZjA0Wm9taCtvQ2NLSC8rL0taK1ZEcDBDZ1FicWJEN1RPV09JQURFUWVoVDV5ZFBubHoyZ2ZxZ2FxcE8yQ05KL1kwS2h1TTNrdU5wWXA4UVhMNVZBWkRTQU4zbTBHNFFOWWZEVG4zMDBSNGkyQzk4Um9CcFZTQndhUUVodzljNUlaV3ZWcmV1NkZ2MHFHd05EL2Zod3dkRDAzU0tsa2d6RWlJWWhTanpLZ0lJTkpXR29Hb29PQnhhS2xhbFk2UVdOQWFhZ29BeXRGNDhSRnhFS1FVME5FcStxekZpeEFoNTAycnRqR2lTRlN0VzJDWFdFRGxiN2RCUWpUdlpMU1NrVWZKdEgzdTdZZUhWMU53S1dMSmtpVEVIeVNnS2Z3UktPSWNQSDI3YUlZSXNmdE9tVGFZOEw4b0tDRzRlOUtrVjFNb0RkcjlldW5USnBnNm04anVrVVFnMC82VjB3dmtDd3FZbkpKOXFnUkV1SEtVZk5RSlg4elY0Sy9KeXFrYWhmUDNIdnRSTFhrc3RTWVAvZ1ZmVCtXcmF4a0xDZ2ZBUVhmL1JiejFiZWJ0Um8wYlpGQmVKcnc0T0RwYVZXQWhWMytEcHlMZWUzNGtXejFsdjd1UE5abUZ3bVorZkgvUHg4V0VpKzVkdlArUC9JaVNRYnpnN0VlL2RQMDN4aTUrbXdFL2kzSGZMd1M3dVEwQnIzWEt3aTdYdUgxaXlEL2tEU3hES0M5RnF1T1ZoZ3hvL1pXUEEvU052RmoveTVxRkp6ZjB6Z2RyUEJQNWZnQUVBYk1qMzB3M3ZzeGNBQUFBQVNVVk9SSzVDWUlJPSIsInN1cHBvcnRlZEV4dGVuc2lvbnMiOlt7ImlkIjoiZmlkby51YWYuYW5kcm9pZC5rZXlfYXR0ZXN0YXRpb24iLCJkYXRhIjoie1wiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzXCI6W1wiTUlJQ2l6Q0NBaktnQXdJQkFnSUpBS0lGbnRFT1ExdFhNQW9HQ0NxR1NNNDlCQU1DTUlHWU1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQXdLUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnd3TlRXOTFiblJoYVc0Z1ZtbGxkekVWTUJNR0ExVUVDZ3dNUjI5dloyeGxMQ0JKYm1NdU1SQXdEZ1lEVlFRTERBZEJibVJ5YjJsa01UTXdNUVlEVlFRRERDcEJibVJ5YjJsa0lFdGxlWE4wYjNKbElGTnZablIzWVhKbElFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRd0hoY05NVFl3TVRFeE1EQTBNelV3V2hjTk16WXdNVEEyTURBME16VXdXakNCbURFTE1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBZ01Da05oYkdsbWIzSnVhV0V4RmpBVUJnTlZCQWNNRFUxdmRXNTBZV2x1SUZacFpYY3hGVEFUQmdOVkJBb01ERWR2YjJkc1pTd2dTVzVqTGpFUU1BNEdBMVVFQ3d3SFFXNWtjbTlwWkRFek1ERUdBMVVFQXd3cVFXNWtjbTlwWkNCTFpYbHpkRzl5WlNCVGIyWjBkMkZ5WlNCQmRIUmxjM1JoZEdsdmJpQlNiMjkwTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFN2wxZXgrSEEyMjBEcG43bXRodnNUV3BkYW1ndUQvOS9TUTU5ZHg5RUltMjlzYS82RnN2SHJjVjMwbGFjcXJld0xWUUJYVDVES3lxTzEwN3NTSFZCcEtOak1HRXdIUVlEVlIwT0JCWUVGTWl0NlhkTVJjT2p6dzBXRU9SNVF6b2hXakRQTUI4R0ExVWRJd1FZTUJhQUZNaXQ2WGRNUmNPanp3MFdFT1I1UXpvaFdqRFBNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdEZ1lEVlIwUEFRSC9CQVFEQWdLRU1Bb0dDQ3FHU000OUJBTUNBMGNBTUVRQ0lEVWhvKytMTkVZZW5OVmc4eDFZaVNCcTNLTmxRZllObnM2S0dZeG1TR0I3QWlCTkMvTlIyVEI4ZlZ2YU5UUWRxRWNiWTZXRlpUeXRUeVNuNTAydlFYM3h2dz09XCIsXCJNSUlGWURDQ0EwaWdBd0lCQWdJSkFPajZHV01VMHZvWU1BMEdDU3FHU0liM0RRRUJDd1VBTUJzeEdUQVhCZ05WQkFVVEVHWTVNakF3T1dVNE5UTmlObUl3TkRVd0hoY05NVFl3TlRJMk1UWXlPRFV5V2hjTk1qWXdOVEkwTVRZeU9EVXlXakFiTVJrd0Z3WURWUVFGRXhCbU9USXdNRGxsT0RVellqWmlNRFExTUlJQ0lqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FnOEFNSUlDQ2dLQ0FnRUFyN2JIZ2l1eHB3SHNLN1F1aTh4VUZtT3I3NWd2TXNkL2RURURESmRTU3h0ZjZBbjd4eXFwUlI5MFBMMmFieE0xZEVxbFhuZjJ0cXcxTmU0WHdsNWpsUmZkbkpMbU4wcFR5LzRsajQvN3R2MFNrM2lpS2t5cG5FVXRSNldmTWdIMFFaZktITTErZGkreTlURlJ0djZ5Ly8wcmIrVCtXOGE5bnNOTC9nZ2puYXI4NjQ2MXFPMHJPczJjWGpwM2tPRzFGRUo1TVZtRm1CR3RucktwYTczWHBYeVRxUnhCL00wbjFuL1c5bkdxQzRGU1lhMDRUNk41UklaR0JOMnoyTVQ1SUtHYkZsYkM4VXJXMER4VzdBWUltUVFjSHRHbC9tMDBRTFZXdXRIUW9WSlluRlBsWFRjSFl2QVNMdStSaGhzYkRteE1nSkowbWNEcHZzQzRQanZCK1R4eXdFbGdTNzB2RTBYbUxEK09KdHZzQnNsSFp2UEJLQ09kVDBNUyt0Z1NPSWZnYSt6MVoxZzcrRFZhZ2Y3cXV2bWFnOGpmUGlveUt2eG5LL0Vnc1RVVmkyZ2h6cTh3bTI3dWQvbUlNN0FZMnFFT1JSOEdvM1RWQjRIeldRZ3BacnQzaTVNSWxDYVk1MDRMelNSaWlnSEN6QVBsSHdzK1cwckI1TitlcjUvMnBKS25mQlNEaUNpRkFWdENMT1o3Z0xpTW0wamhPMkI2dFVYSEkvK01SUGp5MDJpNTlsSU5NUlJldjU2R0t0Y2Q5cU8vMGtVSldkWlRkQTJYb1M4Mml4UHZadFhRcFVwdUwxMmFiKzlFYURLOFo0UkhKWVlmQ1QzUTV2TkFYYWlXUSs4UFRXbTJRZ0JSL2Jrd1NXYytOcFVGZ05QTjlQdlFpOFdFZzVVbUFHTUNBd0VBQWFPQnBqQ0JvekFkQmdOVkhRNEVGZ1FVTm1IaEFIeUlCUWxSaTBSc1IvOGFUTW5xVHhJd0h3WURWUjBqQkJnd0ZvQVVObUhoQUh5SUJRbFJpMFJzUi84YVRNbnFUeEl3RHdZRFZSMFRBUUgvQkFVd0F3RUIvekFPQmdOVkhROEJBZjhFQkFNQ0FZWXdRQVlEVlIwZkJEa3dOekExb0RPZ01ZWXZhSFIwY0hNNkx5OWhibVJ5YjJsa0xtZHZiMmRzWldGd2FYTXVZMjl0TDJGMGRHVnpkR0YwYVc5dUwyTnliQzh3RFFZSktvWklodmNOQVFFTEJRQURnZ0lCQUNESXc0MUwzS2xYRzBhTWlTLy9jcXJHK0VTaEhVR284SE5zdzMwVzFrSnRqbjZVQndSTTZqbm1pd2ZCUGI4VkE5MWNoYjJ2c3NBdFgyemJUdnFCSjkrTEJQR0Nkdy9FNTNSYmY4NnFoeEthaUFIT2pwdkF5NVkzbTAwbXFDMHcvWnd2anUxdHdiNHZoTGFKNU5rVUpZc1VTN3JtSktISEJuRVRMaThHRnFpRXNxVFdwRy82aWJZQ3Y3cllEQkpEY1I5VzYyQlc5amZJb0JRY3hVQ1VKb3VNUEgyNWxMTmNEYzFzc3F2QzJ2N2lVZ0k5TGVvTTFzTm92cVBtUVVpRzlySGxpMXZYeHpDeWFNVGp3ZnRrSkxrZjY3MjRERmh1S3VnMmpJVFYwUWtYdmFKV0Y0blVhSE9UTkE0dUpVOVdEdlpMSTFqODNBKy94bkFKVXVjSXYvekdKMUFNSDJib0hxRjhDWTE2THBzWWdCdDZ0S3h4V0gwMFhjeURDZFcyS2xCQ2VxYlFQY3NGbVd5V3VneGRjZWtoWXNBV3lvU2Y4MThOVXNaZEJXQmFSL091a1hyTkxma1E3OUl5Wm9oWmJ2YWJPL1grTVZUM3JyaUFvS2M4b0UyVXdzNkRGKzYwUFY3L1dJUGpOdlh5U2Rxc3BJbVNONzhtZmx4RHF3THFSQllrQTNJNzVxcHBMR0c5cnA3VUNkUmp4TWw4WkRCbGQrN3l2SFZndDFjVnpKeDl4bnlHQ0MyM1VhaWNNRFNYWXJCNEk0V0hYUEdqeGhadUN1UEJMVGRPTFU4WVJ2TVlkRXZZZWJXSE1wdndHQ0Y2YkF4M0pCcEllT1Exd0RCNXkwVVNpY1YzWWdZR21pK05aZmhBNFVSU2g3N1lkNnV1Sk9KRU5SYU5WVHprXCJdfSIsImZhaWxfaWZfdW5rbm93biI6ZmFsc2V9XX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDE4LTA1LTE5In1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAxOC0wNS0xOSJ9LHsiYWFndWlkIjoiNjllN2MzNmYtZjJmNi05ZTBkLTA3YTYtYmNjMjQzMjYyZTZiIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI2OWU3YzM2Zi1mMmY2LTllMGQtMDdhNi1iY2MyNDMyNjJlNmIiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiT25lS2V5IEZJRE8yIEF1dGhlbnRpY2F0b3IifSwiZGVzY3JpcHRpb24iOiJPbmVLZXkgRklETzIgQXV0aGVudGljYXRvciIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjo1LCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX0seyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDbURDQ0FqNmdBd0lCQWdJSVVPM3JWWncrWUl3d0NnWUlLb1pJemowRUF3SXdnWmN4Q3pBSkJnTlZCQVlUQWtOT01SQXdEZ1lEVlFRSUV3ZENSVWxLU1U1SE1SQXdEZ1lEVlFRSEV3ZElRVWxFU1VGT01SOHdIUVlEVlFRS0V4WlBUa1ZMUlZrZ1IweFBRa0ZNSUVOUExpd2dURlJFTVE4d0RRWURWUVFMRXdaUFRrVkxSVmt4RkRBU0JnTlZCQU1UQzA5T1JVdEZXU0JTVDA5VU1Sd3dHZ1lKS29aSWh2Y05BUWtCRmcxa1pYWkFiMjVsYTJWNUxuTnZNQjRYRFRJek1URXdOekF6TlRFd01Gb1hEVE16TVRFd056QXpOVEV3TUZvd2daY3hDekFKQmdOVkJBWVRBa05PTVJBd0RnWURWUVFJRXdkQ1JVbEtTVTVITVJBd0RnWURWUVFIRXdkSVFVbEVTVUZPTVI4d0hRWURWUVFLRXhaUFRrVkxSVmtnUjB4UFFrRk1JRU5QTGl3Z1RGUkVNUTh3RFFZRFZRUUxFd1pQVGtWTFJWa3hGREFTQmdOVkJBTVRDMDlPUlV0RldTQlNUMDlVTVJ3d0dnWUpLb1pJaHZjTkFRa0JGZzFrWlhaQWIyNWxhMlY1TG5Odk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRUE5dk1MSlFEbW56ZlRmQ0VFMzNZRStOUjZoWnJ4eXo5VEZvRWs2VW85eFM3eHU4eE5nZTUvTW5UZzNFWHdmZEppTVFVZFhISHQzY1dBRUdNOXFic0pLTnlNSEF3RHdZRFZSMFRBUUgvQkFVd0F3RUIvekFkQmdOVkhRNEVGZ1FVWmN1ZlN6V0FtVkFKdHRBclZRcmJHZ1ZGL3Vrd0N3WURWUjBQQkFRREFnRUdNQkVHQ1dDR1NBR0crRUlCQVFRRUF3SUFCekFlQmdsZ2hrZ0JodmhDQVEwRUVSWVBlR05oSUdObGNuUnBabWxqWVhSbE1Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lRQ0RGQlhNS0VXUGR3RmN5WnNEQzd1ZVFTS0I1QmxyZ3lNNktqV0RXUnY2SkFJZ0g4V0lKTmhacVZmYzFMWWlJK0lUSFkvUGw5QzVCb0FWVW92N3ZOcHdHTzA9Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUdBQUFBQmdDQVlBQUFEaW1IYzRBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBY1VTVVJCVkhnQjdaM1BieE5IRk1lL3MzYU1vRUVZVVZHQlZHRU9VRldxaEEwa29wZkdPVk9KNUZRdVZZTFVIbnBLcU5RZUc2Zi9BUFRFb1VnNFVnKzlFZFQyVmluT2lTb0p4WndxVWJVNFVnV3RWQlFqVUNzU2U2ZnoxaGdWLzBnOHN6T3phMmMra2hYSFdTZngrODY4ZWZQZXpDemdjRGdjRG9mRDRYQTRIQTZIdzJFTmhyaHlONXZHMWxBR0hzc0FQQTB1dmpMeGxYa0h0bjBmOTUrSWE2dmkyZzN4OGRiRjkxVWthMlhreWxYRWtIZ0lRTWF1cC9MQ2V1TEJqb24vS2d1T0RMVENTWUN5ZU53VGY2T0V4Q2FKVWtIRVJDZkEzWE1aK1A0VWVHRDBQS0pCQ01LWDRhT0kwZFV5SXNDK0FHdWpFK0pEejBSbzlHNlVrY0JWNUZZV1lCRjdBcXlOVElPeE9mMnVSVE1jRlNSUnNDV0VlUUZXeitYaCtUZGliL2hXTEFsaFRnQWFXUDBoMGVMWkxQb1p4b3Z3dHVaTkRkaG1CTGlkeldBb2RWTTh5MklRQ0hyRDVyZ0pFZlFMUU1aUHBaYjZ6dVhzVEJVK0g5Y2RMZWtWWUhDTjMwUzdDUG9FR0h6ak42bUtTVnhPbHp2eW9JdmRZWHdpalpyNHJCUmthRUNQQUhkRzR4L2Y2NFNKejFwUDNZQUd3cnVnUnNUekFMdVRTWnhkV1VRSXd2Y0FjajI3Rlk0cllWMVJFbUdnOUlJRjE1TkpIZW5wdW1yOW1YZzhoVFhJRmRWU05ORXNRSkZ3THVqTzZBUFRBcVFUKzdHUi9iR25heTlWdmtUeDhRK3dERVZGeDFYckRlb3VhTzNNaEkzV1A1RitEekZIUkVWN3BxRklpREVnTVFVTFhFaVBJZll3L3dJVVVST0FJaC9ST0dFWWNqOFQvU0FBMVRaV3orYWhnSm9BUTBONVdLQVAzTS8vOFBKUVFERUtZc3BkVG9ieVA3OWkvUDRuYmE4dm5ieUcyT0dCWEhJQmtxaUdvWGxZb1B6dmZmUU5GSkRRbkVBeUdwSjNRUTFmcHlVUE1uRFVoNlRIUllVeElERVlSUllqZU5LMmtSZUE4WDRJU3lMQ1B3VkpGSG9BejhEUkJXYWhCeWo4a1YxRU9saHdKb0djQUpxS0VBUE5WbDNLUm5JQzFKS3U5ZStFSjdjU1JFNEFXcDNzMkI3dUdld0I4SndBT3lMWFNPVm13c0VhZlVST3Q1eC9aZk1SSXNkangyUXVEMWNSaXdncXZBd0tmU2tBUWFucWRHSTRlRzY5RktrUlNSZUVTRjFRZnZnMEpnNk80Y0tCTVdUMnZGb25KZ0ZLVDMvR2duQlBpOVZsUkFiM016S1g5MFVQeU80OWdTdHZmb3I4L3ROZHIya1diK2hCWXdHNUtSSWs3dWhiR1dlSW1jTVhzZlRXdFcyTjN3cXRvcUNhd2R5Ump4RjNZdDBEeUlDRm94OUJsZVo3NXg5OWpiZ2lPUkZEQlpZZ2Z4L0crRTNvZDh5S1htUU56cDdJWEI3YkhuRGorQmRkZjBiemdGdGlvRzFXek1qbFRCODZqNmxENzNlOGZrNklRTyt4RWlsNWJFUG04bGdLUU1ic3RCcXU4bHdNcnV2dGd5dTlUcThWSGw0UGZIOXJoRVFEZE9HSTZBbC9YRUhja00wRlZXQ0J1YVB0ZzJlMTlqUW8wRzhYMlZEMFE5ZVFJSzFNdlg0K0VNSTRQbCtYdVZ3eUN2S05iL2ZQN2ozWnNmWFAvM205cDFSREVJS3V0OCtVeWZoaiszTXdEek5ZbFBlOUNneVQ3MktrNHQrOXIvbWtYdExKMzQ4UG40RnhrbldwcGZweUF0UVR4bnRBSnpmUnphRGJjV3VqZlRaOElHbkJCZFVnRlFYSkNmRHVUeFhRYXVBK3BkZGw3cUdnazFra1VDbktWMkNaWnRKTmhrNnQzVUs2dW1wK1laYlA3c0Vnbll5VTNYZFNPb0toOTdTeS92d2h6TUtsdDY4cXJBdGlSbzkxNlJabXpoNytBTDNTYlI1UmVtWTZPZWRKTjA1NUFiaGZna0dvQjlDaTNGWm0zcmdvV3ZXSkhkOVBodTgwajJoTzFveVNxRXZ2bDVNWG9MRkwzT2hBdlBENHU3Ylh5QVhSTEhkS3RPNXVVUDZJTXFmUnRINGlLZDBEMU1vcmE2TjBFSWZSRFJvUDNsbHNTeWswb1paY2ZQdzkxbCtNRjJSd3lnTjFTMWxUNnc5bXlFWUhZZUgvejY1S3ovVFVja0djTFl1MGhGRUJKbi8vREhmZi9xYmp6OGpRTXZXQmdraEhtNCtBUEtVeW5GcEJKdm04Q01OdWlNWUJIY1YzcWdVczJOZzU2ZnRGS0tBbVFCRHJjcVBSRUVFcDVNbmZQdStZWE5zSlN0NWRGdGxQeXBDYVI5aEM4UVFWOVpJazUvT3dBQlhZeVg4dkNKL2ZLelJHNUg3NUVGZi8raFpXU0xDclVDVGNHb2Uxa1NXYnB4L1NZRHNyd3RGVEltUGFPZ2FReTFwK2RpY1F6R294bms3VEdsazVEa1hDQ1VEYmxaZ1gyVmtSd2RxZzVMQ1NpOUpHQXROaER2WUx2OHJIY2krSUZTRmJQeEYrV1lxUHk5aXRKTlVQNldnU1hnQWEvVG1zRE1peGdyR2lqak5GOVN6TUdsa3BpUDVZd202QlhJKzNWMHZQMTdjeWJpdHh5ZWE2b2NnSXpoRDF4cEVyYVptSTZoT0FxbVdiNGg4YmFCRjRWY3gvSnBFTEtvTmEwTHMyZEpCRm9KYnZJK1lIdHphNWZTNkRvZnJOZ2RuUyt0THQ2R3Y1VGN5c2pxYWVRS25aZ1lpTzJGZEk3c3VaTUg3dzIyRWE2ZzBwdi84T2RhVldELzhTUnRaS01JaTdnVU1yQTNjRGgxWWErYU1aV0RqeVRBNmF4d2gzRS9JZ1ZsbWkyL0hWR0tqejRobWROQ1VHYTJaNUQvTEx1eW90SXZIYWdxNjRYcFlZN1BwOVFkQXoyS2xHWW85T1pORWNRVkZveklPN0pwVkVMSDhQeWVGeVZFWi85ZCtLTTNUeVNLM1d1SUVidkdPaUZuMHdlTDNiWm1pT0o4SzRMMjdpRmp3WC9qeFpNUlhCT0J3T2g4UGhjRGdjRG9mRDRYRDBHZjhCOVdOMi9sZHFpM0VBQUFBQVNVVk9SSzVDWUlJPSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiI2OWU3YzM2ZmYyZjY5ZTBkMDdhNmJjYzI0MzI2MmU2YiIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjpmYWxzZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsInV2Ijp0cnVlfSwibWF4TXNnU2l6ZSI6MTAyNCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6MTAsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4LCJ0cmFuc3BvcnRzIjpbInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XSwiZmlybXdhcmVWZXJzaW9uIjo1fX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTA4LTAyIn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNC0wOC0wMiJ9LHsiYWFndWlkIjoiMDk1OTFmYzYtOTgxMS00OGY3LThmNTctYjlmMjNkZjY0MTNmIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiIwOTU5MWZjNi05ODExLTQ4ZjctOGY1Ny1iOWYyM2RmNjQxM2YiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiUG9uZSBCaW9tZXRyaWNzIE9GRlBBRCBBdXRoZW50aWNhdG9yIn0sImRlc2NyaXB0aW9uIjoiUG9uZSBCaW9tZXRyaWNzIE9GRlBBRCBBdXRoZW50aWNhdG9yIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3IiwiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbInNvZnR3YXJlIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbIm5mYyIsImJsdWV0b290aCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQndUQ0NBV2VnQXdJQkFnSVVNOXpYMHlLUWo4eGdWbHoya3RBMGdsU1BxcVF3Q2dZSUtvWkl6ajBFQXdJd05qRVlNQllHQTFVRUF3d1BVRzl1WlNCQ2FXOXRaWFJ5YVdOek1Rc3dDUVlEVlFRR0V3Sk9UekVOTUFzR0ExVUVCd3dFVDNOc2J6QWVGdzB5TWpFeE1UY3hOVEU0TURWYUZ3MHpNakV4TVRReE5URTRNRFZhTURZeEdEQVdCZ05WQkFNTUQxQnZibVVnUW1sdmJXVjBjbWxqY3pFTE1Ba0dBMVVFQmhNQ1RrOHhEVEFMQmdOVkJBY01CRTl6Ykc4d1dUQVRCZ2NxaGtqT1BRSUJCZ2dxaGtqT1BRTUJCd05DQUFSUk9UTDBlak5lWDlXd2pFWVBoam1OdVl6OTM2Qm1hRDBLRVZYMEtqbGhyS1Q1NUNqT3pzZlQwSFJpN3QydUNNR0pKcG81R2hJd3NDMWNnbCtuUFdpQm8xTXdVVEFkQmdOVkhRNEVGZ1FVdUxBT25lT29ybmREbStzL1RYaHVhcG1Xd0lJd0h3WURWUjBqQkJnd0ZvQVV1TEFPbmVPb3JuZERtK3MvVFhodWFwbVd3SUl3RHdZRFZSMFRBUUgvQkFVd0F3RUIvekFLQmdncWhrak9QUVFEQWdOSUFEQkZBaUJPTDNQa29ueFIzWWk1cTFRS0JaUFBzWjBCSVQxWFdRWnFJNmg1bXA1S2RBSWhBUFhEcUV4Z3JSMTUvcSs1aXRWODZhaVVrWnZUVThwK2dRVDZHbHZRRDBVbyJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFhTUFBQUdqQ0FZQUFBQ0JsWHIwQUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUhUbWxVV0hSWVRVdzZZMjl0TG1Ga2IySmxMbmh0Y0FBQUFBQUFQRDk0Y0dGamEyVjBJR0psWjJsdVBTTHZ1NzhpSUdsa1BTSlhOVTB3VFhCRFpXaHBTSHB5WlZONlRsUmplbXRqT1dRaVB6NGdQSGc2ZUcxd2JXVjBZU0I0Yld4dWN6cDRQU0poWkc5aVpUcHVjenB0WlhSaEx5SWdlRHA0YlhCMGF6MGlRV1J2WW1VZ1dFMVFJRU52Y21VZ09TNHdMV013TURBZ056a3VNVGN4WXpJM1ptRmlMQ0F5TURJeUx6QTRMekUyTFRJeU9qTTFPalF4SUNBZ0lDQWdJQ0FpUGlBOGNtUm1PbEpFUmlCNGJXeHVjenB5WkdZOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6RTVPVGt2TURJdk1qSXRjbVJtTFhONWJuUmhlQzF1Y3lNaVBpQThjbVJtT2tSbGMyTnlhWEIwYVc5dUlISmtaanBoWW05MWREMGlJaUI0Yld4dWN6cDRiWEJOVFQwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOTRZWEF2TVM0d0wyMXRMeUlnZUcxc2JuTTZjM1JTWldZOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXpWSGx3WlM5U1pYTnZkWEpqWlZKbFppTWlJSGh0Ykc1ek9uTjBSWFowUFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdmMxUjVjR1V2VW1WemIzVnlZMlZGZG1WdWRDTWlJSGh0Ykc1ek9uaHRjRDBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5NFlYQXZNUzR3THlJZ2VHMXNibk02WkdNOUltaDBkSEE2THk5d2RYSnNMbTl5Wnk5a1l5OWxiR1Z0Wlc1MGN5OHhMakV2SWlCNGJXeHVjenB3YUc5MGIzTm9iM0E5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmNHaHZkRzl6YUc5d0x6RXVNQzhpSUhodGNFMU5Pazl5YVdkcGJtRnNSRzlqZFcxbGJuUkpSRDBpZUcxd0xtUnBaRG8zWVdZM01qQXlOUzB5WkRKaExUWmpOR0V0T1dZeVpDMHhNakZpTWpGak9EVXdPRGNpSUhodGNFMU5Pa1J2WTNWdFpXNTBTVVE5SW1Ga2IySmxPbVJ2WTJsa09uQm9iM1J2YzJodmNEbzJNalpoTkRBMVpTMWlZVGxrTFRnMU5EQXRZVGN4WWkxa05HVmpPV00zTVRVeE5ESWlJSGh0Y0UxTk9rbHVjM1JoYm1ObFNVUTlJbmh0Y0M1cGFXUTZaakkwTkRJNU1EY3RaRFZpWlMwME1XVmtMV0kxWW1FdFpqbGxPV00zWXpreVlqVXpJaUI0YlhBNlEzSmxZWFJ2Y2xSdmIydzlJa0ZrYjJKbElGQm9iM1J2YzJodmNDQkRReUF5TURFMElDaFhhVzVrYjNkektTSWdlRzF3T2tOeVpXRjBaVVJoZEdVOUlqSXdNakl0TVRBdE1EWlVNVE02TVRnNk5UZ3JNREk2TURBaUlIaHRjRHBOYjJScFpubEVZWFJsUFNJeU1ESXlMVEV5TFRFMFZERXhPak14T2pJeEt6QXhPakF3SWlCNGJYQTZUV1YwWVdSaGRHRkVZWFJsUFNJeU1ESXlMVEV5TFRFMFZERXhPak14T2pJeEt6QXhPakF3SWlCa1l6cG1iM0p0WVhROUltbHRZV2RsTDNCdVp5SWdjR2h2ZEc5emFHOXdPa052Ykc5eVRXOWtaVDBpTXlJK0lEeDRiWEJOVFRwRVpYSnBkbVZrUm5KdmJTQnpkRkpsWmpwcGJuTjBZVzVqWlVsRVBTSjRiWEF1YVdsa09qWTJaRGhsWm1OaExUTXpOekl0TmpZME15MWlNamhoTFRVM1kyUXpPR0prTnpCaE1pSWdjM1JTWldZNlpHOWpkVzFsYm5SSlJEMGlZV1J2WW1VNlpHOWphV1E2Y0dodmRHOXphRzl3T2prek1tWmpObUU0TFdZd01qY3RNVEZsTkMxaU9UYzBMV1E1TW1OaVpHVTVabU5sTmlJdlBpQThlRzF3VFUwNlNHbHpkRzl5ZVQ0Z1BISmtaanBUWlhFK0lEeHlaR1k2YkdrZ2MzUkZkblE2WVdOMGFXOXVQU0p6WVhabFpDSWdjM1JGZG5RNmFXNXpkR0Z1WTJWSlJEMGllRzF3TG1scFpEb3lZbVl3TnpZek5DMDFNVGszTFRSbFlqWXRZbVkzWXkxbU9HWm1PVFprWVdKa01tUWlJSE4wUlhaME9uZG9aVzQ5SWpJd01qSXRNVEV0TUROVU1URTZOVGM2TXpNck1ERTZNREFpSUhOMFJYWjBPbk52Wm5SM1lYSmxRV2RsYm5ROUlrRmtiMkpsSUZCb2IzUnZjMmh2Y0NBeU5DNHdJQ2hOWVdOcGJuUnZjMmdwSWlCemRFVjJkRHBqYUdGdVoyVmtQU0l2SWk4K0lEeHlaR1k2YkdrZ2MzUkZkblE2WVdOMGFXOXVQU0p6WVhabFpDSWdjM1JGZG5RNmFXNXpkR0Z1WTJWSlJEMGllRzF3TG1scFpEcG1NalEwTWprd055MWtOV0psTFRReFpXUXRZalZpWVMxbU9XVTVZemRqT1RKaU5UTWlJSE4wUlhaME9uZG9aVzQ5SWpJd01qSXRNVEl0TVRSVU1URTZNekU2TWpFck1ERTZNREFpSUhOMFJYWjBPbk52Wm5SM1lYSmxRV2RsYm5ROUlrRmtiMkpsSUZCb2IzUnZjMmh2Y0NBeU5DNHdJQ2hOWVdOcGJuUnZjMmdwSWlCemRFVjJkRHBqYUdGdVoyVmtQU0l2SWk4K0lEd3ZjbVJtT2xObGNUNGdQQzk0YlhCTlRUcElhWE4wYjNKNVBpQThjR2h2ZEc5emFHOXdPa1J2WTNWdFpXNTBRVzVqWlhOMGIzSnpQaUE4Y21SbU9rSmhaejRnUEhKa1pqcHNhVDU0YlhBdVpHbGtPamM1TURZNE16QTBOek5DT0RFeFJVUkNSVE0xT0VNeU5FTkVSRGt5UXpFMVBDOXlaR1k2YkdrK0lEd3ZjbVJtT2tKaFp6NGdQQzl3YUc5MGIzTm9iM0E2Ukc5amRXMWxiblJCYm1ObGMzUnZjbk0rSUR3dmNtUm1Pa1JsYzJOeWFYQjBhVzl1UGlBOEwzSmtaanBTUkVZK0lEd3ZlRHA0YlhCdFpYUmhQaUE4UDNod1lXTnJaWFFnWlc1a1BTSnlJajgrOGJzRTJnQUFKYzlKUkVGVWVKenQzWG1ZWkdWaDcvRnZkZmZzS3pQRElEc0lTaElVOTJnQVJWRkFweFJjNG5LcG1FMU5ZdFRFdUdhOVJuTzlpVXRRRTYvR05ScFRlTjBpTGpXaUlKcGczQUlvSU9pTmpDeUR3ellETXoxN0wxWDNqN2RMaXBvNnA2dXE2OVJicCtyN2VaNStlcWI3TEcvTmRKOWZ2WHVoVnFzaGFmZ1ZMdDVjcVA5eDduTU5vSGJocGxvYnh4WHF4emRmTnVXV2pjZVBOZjM5RjMrdTMzL3V2cis0VDNPNU5Od0tocEdVallhSE90RDJRei9wdU1acjFUb01rTFRBYUR5bjhmaFduK0grVUtrMW5WZE5PSzVWV1dvTjU3VU1xS2J2SFJKYzlkZHNZQTBQdzBqcWtlYndhWFZJMDJkby9RQnVESitrQjNyek5SdVBhVDYzSGhhTkFUSFdjSHkxNGJ6YTNQZXFIQnBpamZjZUEyWWJ6bXUrWjNYdTgzalR0ZXIzcURZYzMxeHJxcXVmVjIzeHZWOEV0NkUwSEF3anFRdnpCRTl6NkxRS2g4YUg4RGozMXphYWowdTZUbk9BMUIvNmpUV1h4dUNCQndaUTQvZWJYMHR6Y05UUHFWK251VmFVZEozbW9KMXB1RWE5N05XNWo4WmdiQzVML1d1ekpMTnBMK2NNSTZsTmJkUjhHaCswOWMvTkQrVDZjV245TWZVSGYvTXZaM01mVE9NMW04T3BWUzBzN1h2MTBCbm5nV1dxbDZYYTlQZm1RQzF3ZjAycE1aeG1nUWtlR0RiTnRhZDZMYXNlc3ZXL042dVhjYmJoN3kzVkx0elVxamFsQVdZWVNXMW9DcUpXb2RUOGpyL3hhNDNuRkZyOHVUR1lhaTNPcS9MQWtLRGgrRlo5T1BWNzF3T3E4WHF6UERBTW04dlRxc1pVdjhjRUQydzZhMVd1Y1ZxSFVxc2FUejJBR3NPcHNmbXVYbDZhdmw1dGNWNHJoL1N0YVhBWlJsS0tGcldoNXIrUEpYeHVmdGpYdjk3NDhHNE9nZVp6VzlVNjZzYm5QamRlcTlVQWdjYVFxRFo4Ymp4MnZPR2M4YWI3TklaWDQwZGpEYWE1djRtbWV6WFhtdXJuMTJ0Tk0zUG5URFc4cHViQW1XbjZldVAzbTVzM0gvRFpRTXFIaWRnRmtBWlZRbTJvK1d1TnRZd3hEbjF3US9nOWEveGE0ME82TWFpYSsyV2FtOHpxNmcvNnhudlV2MTZ2RVUxd2FDQTAxNkthKzRBYUE0Nkc0OGNhcmxXL3owVERzZlY3TllkUi9UVTExbHdhYXovMW10SDQzSGtUYzM4KzJQRDk1dXMwaGxPMTZXdU54eDR5RWsrRHpacVIxQ1NoYjZoVjgxdFNFTlUvai9QQTBLaC9OTDRKbkdpNlZxdGFUV01ZMUlPbDNoeldxdittc1ZtdThjOXcvOE8vVmNBdGJycC8vZGo2ZGFibmptbDg2RGNIMUN5d2FPNXIwdzNIdFdwbXE5ZDI2bCtyLzMxNjdweURUY2ZYajBrNnJ6R1VtbXRIOWlFTnVMYkRxRkNZcis5MkJKUXJLNEhEZ1EzQWVtQVpzR2J1dXl1eHBqa3Nrc0tvK1hPcmdCcm4wSUNxZjczNXZGWWZOUTY5Wm5QZlRLc211Y2JSZEkxbGJqWHlyYm01cjNtT1VOSzk2dGRvckptMStsNDlGQnRyYW8yRElCcURvc29EYXpqMUFRcjF6NjIrM3VxY3h0Q2k0ZnBwZzBCNlpSYllQZmZuU1dBL3NHUHU0MjVLeGQxSko0NktkbkxHTUdwV3Jpd0NmZ1U0RFhnNGNESndBdkJnN2c4ZVNXclhidUJud0MzQUZ1QjY0RnJnUmtyRmd5bm5EUTNEcUIzbHloSEFtWE1mWndDUHdocU9wT3pOQXRjQi93bDhDN2lTVW5GYjNDSmx3ekJxcFZ3WkEzNE5lQWF3aVJBK2tqUUlyZ2UrTXZkeEphVmkya1RmM0RDTTZzcVZBbkE2OENMZ2VjQ1JjUXNrU2ZPNkIvZzM0RlBBdjFNcTVuWVFobUZVcmp3SStGM2dwY0NKa1VzalNkMjZIZmdJOEJGS3hhMnhDOU9wMFEyamN1VU00RFhBQmR3L2lrbVM4cTRHYkFZdW9sUzhJblpoMmpWYVlSU2E0aTRBM2tEb0U1S2tZWFlOOEE3ZzA0UGVoRGM2WVZTdVBCdDRFL0RJdUFXUnBMNzdNZkFXNEZPVWlnTzVpc0h3aDFHNWNqcHdFZkQ0MkVXUjV0RThHVFBwYytOazAxWkxFTkhpYXdQNHk2a0lmZ2k4amxMeDY3RUwwbXg0dzZoY09RNTRHMkYwbkNUcGZsOGdoTkpOc1F0U04zeGhWSzZNQTY4Ry9vYXdGSThrNlZCVHdGdUJ2NlZVbko3djRLd05WeGlWSzQ4Z0RHMThUTnlDU0ZKdTNBQzhoRkx4ZXpFTE1SeGhGRlpNZUFPaE51UXlQWkxVbVNyd3Q4QmZVeXJPekhkd0Z2SWZSdVhLTWNBbmdDZjMvK2FTTkZTK0I1UW9GYmYwKzhidDVFenpYaWVEbzF4NUdtRjB5SlBqRmtTU2hzTGpnV3NvVnk2SVhaQldCcTltRkNhdnZwSFErVGE0WVNsSitmVlc0RTM5V29nMWY4MTA1Y29TNE9QQUM3Ty9tU1NOdEFyd1FrckZ2Vm5mS0Y5aFZLNnNKNHlQUHlQYkcwbVM1dndBS0ZJcTNwSGxUZklUUm1HZ3doWEFRN0s3aVNTcGhhM0EyVmxPa3MzSEFJWnk1V1RndXhoRWtoVERzY0IzS0ZjZUhyTVFjY01vdlBncmdhT2psa09TUnRzRzRKdVVLOUhXK1l6WFRCZHFSTjhDanVqdGhTVkpYZG9KUElsUzhmcGVYblJ3bStuS2xXT0JiMklRU2RJZ1dRdGNRYm55MEg3ZnVQOWhWSzVzSUF4V3NHbE9rZ1pQZUVhWEszMTlSdmMzak1xVnBZVGgyeWYzOWI2U3BFNGNEVlFvVjFiMTY0YjlDNk93c3NLL0FLZjM3WjZTcEc0OUF2ak0zTlk5bWV0bnplZ3ZnT2YzOFg2U3BJVTVqN0NSYWViNk01cXVYRGtQMkV6c29lU1NwRzY4Z0ZMeE05MmVQQmdyTUlRdHduOElITmJkQlNSSmtlMEZIa3VwK0pOdVRvNC90RHUwTlpZeGlDUXB6MVlBbjV4YnpEb1RXVGViL1Jsd1pzYjNrQ1JsNzVHRXJTY3lrVjB6WGJueVdNS2FjMzBaaVNGSjZvdXpLUlcvMGNrSjhmcU15cFVKNENyQzBFQkowdkM0Q1RpTlVuRi91eWZFN0RONlBRYVJKQTJqazRHLzd2VkZlMTh6S2xjZUROd0laTmJSSlVtS2FoWjROS1hpZGUwY0hLdG05RTRNSWtrYVp1UEF1M3Q1d2Q2R1VibnlGT0E1UGIybUpHa1FQWVZ5cFdmUCs5NDEwNFcxNTY0aERQK1RKQTIvTGNBdlVTck9wQjNVNzJhNkYySVFTZElvT1FsNGFTOHUxSnVhVWJreUJ2d0krT1ZlRkVxU2xCdGJnWk1wRmFlU0R1aG56ZWdGR0VTU05JcU9CWDUzb1JmcFZSaTlzVWZYa1NUbHordm5Xc2k2dHZBd0tsZWVobjFGa2pUS0hndzhkeUVYNkVYTjZMVTl1SVlrS2Q4V2xBVUxHOEJRcnB4SUdOcTNnSjMzSkVsRDRwR1VpdGMyZjdFZkF4aCtGNE5Ja2hSMFBjeTcrNXBSMkRodkszQmt0emVYSkEyVlhjQ1J6U3Q2WjEwek9nZURTSkowdnpYQUJkMmN1SkF3ZXY0Q3pwVWtEYWV1c3FHN1pycHlaUkZ3RjNCWU56ZVZKQTJ0QThEaGxJcDc2bC9Jc3BudUtSaEVrcVJETFFVMmRYcFN0MkhVOFkwa1NTT2piMkgwakM3UGt5UU52NmZQYlN2VXRzN0RLR3dyL3RDT3o1TWtqWW9qZ0VkMWNrSTNOYU96dWpoSGtqUmFPc3FLYnNMbzlDN09rU1NObG82eW9wc3dPck9MY3lSSm82V2pyT2hzbmxHNXNnYlkyVVdoSkVtajUzaEt4ZHV5bUdmMDhPN0tJMGthUWFlMWUyQ25ZZFQyaFNWSkk4OHdraVJGbDFrWW5kemg4WktrMGRWMlpuUWFSaWQyZUx3a2FYUzFuUm50ajZhN2VQTTRZVFhXaVM0TEpVa2FQV3RxRjI2YW5PK2dUbXBHRDhJZ2tpUjE1dGgyRHVva2pEWjJXUkJKMHVocUt6czZDYU1OWFJaRWtqUzYyc3FPVHNKb2ZaY0ZrU1NOcnJheW81TXdXdDVsUVNSSm82dXQ3T2drakZaM1dSQkowdWhxS3p1NjNlbFZrcVNlNlNTTVZtWldDa25Tc0dvck96b0pJK2NZU1pJNjFWWjIyRXduU1lyT01KSWtSV2NZU1pLaU00d2tTZEVaUnBLazZBd2pTVkowaHBFa0tUckRTSklVbldFa1NZck9NSklrUldjWVNaS2lNNHdrU2RFWlJwS2s2QXdqU1ZKMGhwRWtLVHJEU0pJVW5XRWtTWXJPTUpJa1JXY1lTWktpTTR3a1NkRVpScEtrNkF3alNWSjBocEVrS1RyRFNKSVVuV0VrU1lyT01KSWtSV2NZU1pLaU00d2tTZEVaUnBLazZBd2pTVkowaHBFa0tUckRTSklVbldFa1NZck9NSklrUldjWVNaS2lNNHdrU2RFWlJwS2s2QXdqU1ZKMGhwRWtLVHJEU0pJVW5XRWtTWXJPTUpJa1JXY1lTWktpTTR3a1NkRVpScEtrNkF3alNWSjBocEVrS1RyRFNKSVVuV0VrU1lyT01KSWtSV2NZU1pLaU00d2tTZEVaUnBLazZBd2pTVkowaHBFa0tUckRTSklVbldFa1NZck9NSklrUldjWVNaS3kxRmJPR0VhU3BDd1Yyam5JTUpJa1pjbWFrU1FwSHd3alNWSjBocEVrS1V1MWRnNHlqQ1JKMFJsR2txUXNPWUJCa2hUZGVEc0hHVWFTcEN4TkZDN2VQTzljSThOSWtwUWxhMGFTcEh3d2pDUkpXYXEyYzVCaEpFbkswbXp0d2szenpqVXlqQ1JKV1pwcDV5RERTSktVSlp2cEpFbjVZQmhKa3JMa2ZrYVNwT2dNSTBsU1BoaEdrcVFzT1lCQmtoU2RZU1JKaXM3TjlTUkowVmt6a2lUbGcyRWtTWXJPTUpJa1JXY1lTWktpTTR3a1NkRVpScEtrNkF3alNWSjBocEVrS1RyRFNKSVVuV0VrU1lyT01KSWtSV2NZU1pLaU00d2tTZEVaUnBLazZBd2pTVkowaHBFa0ticUoyQVVZQkt2RzRYSEw0S1FsY1B4aU9HSVJMQzdBc2tMNC9tUVZwbXV3ZFFwdW1ZSWZIWUFiRHNCc1cvc1hTc3E3VmVOdytuTFlYUTNibGg2b3dsUU5abXF3ZDI3cnVQcjM5czg5TDlTWmtRMmpCeTJDNTZ5Qlo2NkdVNWQxWGtYY1U0WHY3SVhQNzRMTEp1SGdBUDd3ZmZ4NGVPaVNPUGZlUFF2bmJ1bnROZi91S0RoclpXK3YyWW5uM2d4M1RQZnVlaTlaRHk5ZDM3dnJRWGdJM2pNRC8zMFFydGtIVit5QkhUTzl2VWN2dk9WSU9HZFY4dmYzVk9FWlc4TERmaEFjdHdnK2RGeG41OHpVUWpCQmVFTUxzSG9zQk5hT1diaDNCbTZkZ21zUHdBLzJ3WFg3Mjl3U2RVaU5YQmlkdWhSZXZSSE9YUVdGQlZ4bjVWajRaVHBuVmZqRitjUzk4SUh0Y085c3o0cTZZRWRNd05HTDR0eDdkd1lOd0JzaXZoNkE4UjVmYi9WNE5xL25oTVh3dU9WUU9pdzgzTDZ4R3o2NEk3eDVHZ1JMeCtBRmEySDVQRDhqWjY2QWIrN3BTNUV5TVZFSU5TcTQvM1BkNm5FNGNURThaams4ZCs1cmQ4L0ExeWFoZkY5b2VSazFJOU5uZFBRaStPQ3g4SldUNEx3RkJsR3psV1B3OGczdzdZZkNxdzRQUDRUU0lCZ0Rucm9LUG5VQ2ZPeTR1R0ZlZC9iSytZTUk0Tmxyc2kvTElOazRBYit4TGp5ai91OEo4R3NyWXBlb3YwWWlqSDVySFZ4K01qeDlkYmIzV1Q0R3I5OFlmcGdldml6YmUwbWRPbnNWZkczdXpWaE1GN1FaTXVldURuMjNvK2owRmVFTnhQdVBoYU1HNEExRVB3eDFHQzBiZzM4OEJ2N21TRmpSeDFkNnloTDQvSW53L0xYOXU2ZlVqbFhqOElIajRNWHI0dHgvNVZnSXhYYVBmVnJrNEl5dHVCcStlbEwyYjZRSHdkQ0cwZm9KK0xjVDIzOFgxbWltRnRwdmI1NEtJK2p1bk82OFkzRnhBZjcrYVBpekkzcmJKQ2d0MUJqaERkcW1DQSs0YzFmRGtnNStJWjQ1QWcvaCthd1pEMTBNdy80c0djb0JET3NuUXB2cktXMk9KTnRmaGN0MnczL3NnYXYzaHhFdXphTjRGaFhDME85ZlhRNVBYaGsrMnVrYmV2bUcwR0g3cGpzNmZobVp1ZkVBdlBuT2JPL1J6MUZRMjJmZ0ZiZG5mNTk3K2pncTdiTTc0VE03T3p0bldRR09Xd3lQWFI1cUh5dFQzbXFPRWQ0czNYQWcvTHozUzZkdkRzOVpIVm8xOWc3NE1MT3I5clUzZUdsZk5ieWVkZU53OHBJUU5PMTYrWVl3S09tMTI0WnpXc25RaGRIU01mam9jZTBGMGJacGVOOTIrTGVkWVVSY211a2EvT1JBK1BpWGU4UElyaGV2ZzVldU8zU2tUTFBmV1JjZW1QOTRUOXN2STFPVHM0TXpzcW9YRHRhRzYvVUFiSjN1L2pWOTdON3d3SHZ4T3Zpanc1TkRhY1VZdlBWSStJMWJ1eTluSjlhT3d4TTc3SlJmVWdoTmRWL1lsVTJaZXVVZGQzZjMvM1hDWW5qS1N0aTBCaDYvZlA3am43c1c3cHFCdjcycjgzc051cUZxcGlzQTd6d0tIalhQNElHcFd2alBmT0pQUTdETUYwU3RiSitCZDkwTlovNDB2SXVkeitzM3d2a2pOanBJOGV5dHdqOXRoM051U2g4bS9LU1ZjRWFmUm0xdFd0MjZOZUcycWZTV2cyRWVWWGZMRlB6enZmRDhtK0hwVzJEejVQem52SHhEQ0xCaE0xUmg5SkwxOHovd3R4d00vK252Mzk2YldkTDN6Y0pyZmc2L3R6VlV3ZE5jZERROEpOSWtWSTJtbjAvRGhiZWtUOWJ0OWNUYkpFbS9tNVZKK1BKa2NyL3NrMVoyMXB5VlZ6Y2VnRC9ZQ2krNkJXNmZaM0wxUlVlSG11WXdHWm93ZXNnUytOTWowby81OWw2NDRHYTQ2V0R2NzMvcEpEenY1dlIyNDhVRitJZGpRditUMUMvM3pjS2ZwOVE4emxxWi9ZUHRpQWw0UWtJTjdLdVRvVC91dXduTlhJc0s4SXdSR3NqdzdiMWg5WW5MZHljZnMzNEMvbnllNTEzZURFVVlGWUIzSHAwK0orRTdlK0YzYmd2OUpWbTU0VUI0RjVyVzdIZnFVbmpsaHV6S0lMWHk5ZDN3Zy8ydHZ6ZFJnQ2RtM095emFYWHJoODIyNmZ2TGxkWXZOR3BOM0x0bTRXVmI0WE03azQ5NTBXSHdzS1Y5SzFMbWhpS01MbGlUM2s5MCszUm9SdHZmaHhFNU54NkFWMjVOUCtZUE5vUzE4YVIrU2h1ZGQxckdEN1ZucjIzOTljcGtXS3NONEN1VHlhTXdUMThSYWdPalpMWUdyOXNHVis5TFB1YU5RMVE3eW4wWVRSVFMvME5tYS9EeXJlR2RScjljc1NmMFNTVlpOZ2F2MjlpLzhrZ1FwaTRrT1daeGR2YzllbEh5bThWTEd6cnNkODdDdnllVWNReDQxZ2cxMWRYTjF1Q1BmNTY4RVBOWksrRzBJVm50SmZkaDlLelY2ZXR0ZlhnSFhKdlFQSkdsaSs0T2syYVRQSGROYUVlWCt1VzJxYkQxUVN2ck0rd3pTcHBiZFBmTW9lLzZ2NWpTVlBlc0VXdXFxN3R0S3YzTjdZc1A2MTlac3BUN01Fb2JDWFRQREZ3VWFXN1B3UnE4T2FYVGVLSVFiMGtXamE0WXE4b25oY2ptRmlQb3ZyWTd1UmJ3Mk9XRHNkQnJEQi9ZSG1xT3JaeS9KbjJDYzE3aytpWDgwdEwwQlVuZnQ3MC8vVVJKcnRpVDNHa004T3RyaDN0NUR3MmVmaTg4ZXRLU01HaW5sVlp6YXZaV3cvNWdyUlFJYTdXTm9yM1ZNQ2V5bFdVZHJQYzN5SElkUm1uclZ1MmVoWXZ2NjE5Wmt2eFRTdlg2cUpTMmRLblhGaFZnWFVMVGNGYXJ5NXlmOER1Nll3YitLNkZqL3NzcEV6K1RCa0tNZ2srbVBNK0dZVUhaWElmUmVTbGg5TmxkY1d0RmRaZnRUbC9UTE8wMVNMMzBtT1hKdi9CWk5kOGxEY20rZEhmeSttcVg3MDZlSHZHd3BXRUpuVkgwOCtua0FPOTBtYVZCbE5zd1dqdWV2djdjbHdka0xhdVpXaGl5bXVSWDIxaVBTdXFGczFQbUV0MmN3VVR3VTVlR1pycFcwbjQvcDJwaElteVNibGJpSHhaSm93M1hUOEF4T2U5UHkyMFlQVHJsSWI1ekZxNkpNSUl1eVdVcE02bFBXemE2RzRpcGYxYU13UXRUUmwxZGxjSHZTMUt0YU5jc2ZDOWw3Z3c0QVRiSjkxUCszZkkreER1M1lmVExLYldpYS9ZTjFoTHJWKzlMYnBOZlZJQVRSN1RaUWYzekp4dmhzSVRoMi91cVlRbWFYaXFRMGtTWE1ybTE3bHQ3azVzT0g3SWtERjRhUlQ5SldmUTI3ODJYdVEyajQxTCs0YTlOK1ErTFlVOFZmcGJTREpMbGhFUHBhYXZTcDBCY3NpdDUvbEczSHJVc2VSaDJwWTJWcWVkcjNrNGFHREhzZHM0bVQrRFArL2JrdVoxMm1kWSsycy9Od3RwMTYxUnkrM20vNTA0OGVqbDg1Nkc5dis2SGQ4QkhkdlQrdXZONTBFUTJyNmN5Q2Y4cjQwMElzelJSZ0Zkc0NMV2lwSGVkTTdYMEVaL2RTdXJYMlQwYmFqM3R1R1FubEJLYUZzOWZBMisvdTZ1aTVkNTlzNjFYTWQrWTI2ZDVrTnZpcjB5Wk1YN25QTXV2eC9EemxETDFleFh2eFlWc0FuQjFwQ1h0eHpONlBldHl1a1QvK29td01zbEwxc1B4ODlTNlA3UWo3S25UUzJOQU1TR01MdHZkL2k3QS83VXZyTkxRNmlGNzNHSjQ1REw0NFFEMURmZEwwbFkxWXpudmU4NXRHQzFKK1lmUGNtWHViaVhOS2dkWW5kdkdVbVhsL05YSmswVmJPVmlGNVdNaGZFNWEwdDVrNmg4ZGdML1BvSGJ4aEJYSjc5TFQ1aEExcXhJR01yd3NvWW54V1d0R000eVM1SDBWaHR5R1VkcS8rd0NOWGZpRnFiUkM1ZndkalhydnBDWEp6YnE5Y1BzMHZPUzJlWDR1dTVTMC9NK2VhdnBpcmExOEtTV016bDhEYjcwemVWTytZWlUwK2pibldaVGY4cWY5QUM0YndGZTFOQ1Z3ZGc5Z1RVN0Q2N3I5WVp2cnROMWZ1elZSU0Y0WjVSdTdPdysvSCs0UEM0VzJjc1JFV0s5dTFHVHhCbUlRRE9CanV6MXAveUZKUTFoalN0dUxwUmZibjB2em1hMkY5UnFmZDNONkgrWkNQSEZGOGhiaDdZeWlheVZ0SmUvbnJPM3VtbmsybnZER05xMHJJQTl5MjB5M1BXV0puVUVjS3AwMitxL2ZBeTcrK3lDODQ2N2VYL2VtU0tNWWQ4ekFuMjdyL1hXemVtRDNXeFhZdkN1c1lIOVRCaXN0TkVvYVJiZXZHaFlPN3NZWEorR1ZoN2YrM3ROWHdWOFdCbXRlWWRiV0pGUWgwcFlkeTRQY2h0SFdsQWRGMmpKQk1Zd0JwNlIwUnQvYTU0ZmV2VFB3MVpSVklmTG1RRzI0WGs4djFBaTdEbDg2Q1ovZDJaOWdYVktBY3hPYTZMNjVwL3U1VEQ4NUFQL3ZZT3ZmNi9VVG9UYjJ6UzZETG04bUNyQWg0YWw5dDJFVVI5cGNvc2NNV0R2eVNVdVNSN3JNMWdaelhwVGlldi8yRUxMdE9sQU5UZGM3WjBQdy9HaC84bUtqV1hucXF1U2Y4NnYzTFd6dHRHL3ZUWDZUK2N3MW94TkdKeXdPZ2RUS1R6T3U5V1l0dDJIMHc1UTFtazVaRWpvMzd4cVFkd3BucFN4UWVjT0J3VmhkWElQbC8yd2Z6Q2tLYWRKMll2MnJCNFdQTEd4YURYKytiWGc3OWh1bGJUbHp3NEN0UE5PcDNBNWd1UDVBK2cvZk9RTzBYRWphTmhGSlM4SkxlYkppTE42ZU9pdkg0TWtwYi9pR3lla0pXMFhzcVdiZkg1aTEzSWJSZEEyK2s3S3N5SXZXOXEwb3FVNVlESTlQYVRhODNMNE9EWUZ6VjZWUFJNL2FLR3dyc2JpUUhQaFg3bWwvWll0Qmxkc3dndlNob3FjdEM4dUZ4UGJpZGNuZjJ6NEQzN1ZtcENFUWUxdUhwNjRLdGJOaGR2YXE1R0h6dy9DbU50Zi9mWmRPcHMvUmVlM0cvcFdsbFkwVDhKc3BZZlQ1WGFNMUpGWERhZTE0ZXI5b1B5d2ZDNEUwekpKV290aGJUVi9oUEM4NkNhT0JXN1JtNTJ4NG9DYzVhMlZ5RzJzL3ZHWmpjdFBGYkEwK0dtR0ZhNm5YbnI0NmVZUlhQOFd1bldYcENTdmdjUW5OL1YvWTFmK1JrMW5vWkRUZEFQeTRIZXJETytBRmE1Ty8vM2RId1RrMzlYOTI4dU9XdzRVcE8ydCthWEo0SmxWcXRLWDExL3oyYlhCRkQ1dVFsbzdCRDA4Sk5hRm1UMWtKcThhSGIzbXRNZUJOQ1NNUmE4VFp0aVVMdWE0WlFaZ1FsOVozZE1KaStPc2orMWNlQ08yNjd6a20rZnRUTlhqSGlPN0ZvdUd5ZmdKK0xhSDFZZGRzNXd1anp1ZEFGYjZlRUc2TEN2Q01JV3lxKy8wTnlTdTRmMzVuL3VjWDFlVzZ6Nmp1ZjkrVlBzeTdkQmk4TUtXVzBrdUxDdkNQeDZSUDhQdndEdGpxUkZjTmdmTlhKejlFTnJleHZYZzMwcHJtMCtZNjVkRmpsc1ByRS9xK0QxVERFay9Eb3BNd0d0aXU5cTFUOE41NS9sUGVkaFE4SitNZjFFVUYrTUN4NlhNZWJqb0k3N0pXcENHUjl2QlBXK0IwSWY1alQzSWZ5WmtyMGhjbHpwTXpWOEFuajAvdWo3dm9udVFWemZOb0tNSUk0TDNiNFpxVWpiYkdnSGNkQTcrWE1DSmxvVFpNd01VbnBFLzhtNjdCSzIvUC8rcTZFb1RkZFpPMmNNaHkyc0pVRFNvSlFUZGVnR2NNMElUM2Jvd0Jyem9jUG5GODZDTnI1UWY3UXd2TE1CbUtaam9JelFGL2ZIc1lZWmRrRFBqTEI4RS9IWnU4MkdBM3psc0ZYemtwZlhJcndCdTNoY1VycFdHUVZpdjY4bVMyMHhiUytvbXpiZ0hKMHFPWHdSY2VISnJta3JhSzJERUR2NzgxLzVOY20rVitBRU9qVzZmZ3BiZk4vNSswYVRWODQrVFFNWmowenFNZHB5NkZqeDBISHpvdXJJV1g1bDEzaDlXVHBXR1JOcFE2cXlhNnVpdjNob2R5SzQ5ZFB2L3Y0eUJaWEFoenBDNCtBUzU1TUR3aVpiTCtnV29Jb241dk85TVBuZnlYRGVDV2RZZjYvajU0MWUxaEVFSGEzSWMxNC9BWFI4RExOOERuZHNJbHUrQ0cvZk52WWJ4K0FzNWVHUVpFL0dxYnE0UC82NzN3N2lIcWFKUk9YQXdQU3hqaHRXMDZyTktkcGRrYVhMbzdERTVxVmlBTU4vL2dBRFZqTFNtRWtObGJEVHRSSHo0Qkp5OEpLOFdjc1NKNXRmTkdrN05ocS9qdkQrbXFMWjJFVVc2YTlDcVRzT2MyK09DeDgyOUJ2bTQ4ekd4KzJYcTRkelpzYzN6VHdmRE9ZMTgxdkdzNWJCeU9Yd3kvc2pUc1M5UkpGZkdqTytETmR3NTRoNXZVb2JSYTBaZDI5ZWZuL2ZNN1c0Y1JoRzBsK2hsR2J6OHFCRTJTeFlVUVB0MzY4UUg0dzl0aHk1QU00MjVsS01NSTROLzN3SE51aHZjZEN3OXVjK2ZYZGVPaDFuTjJENVkybWE3Qlg5MEJGOSszOEd0Smd5WnRvdXNYKzdRMHpWWDd3b1p5RzFzOHhSNjVMTHlCN05kZVljZG50THQwRGZqNHZmRFdPNGQvNE5OUTlSazF1L0VBRkxmQXAzZjI5NzViRHNMemJqYUlOSngrYVdueXUveGJwdUQ2bEZHdHZWUWxMSVdUSk85empxN2VCOC84R2Z6UE80WS9pS0N6TU1ybDZrZDdxL0M2bjhOemI4NSs4Nm1EdGRBM2RONlcwTnduRGFOblJ4eTQwQ3hwaURma2QxdUpLL2JBaGJlRWxwMStCZnNneU5HWWs0VzVhaDlzMmhKR3JmemhodVQ1RWQzWVc0Vi91VGUwVVNlTjhKR0d4VE5UNXZIME80eXUyUjhtZmg3WG9wbnNsQ1h3MENYdzN3UGV6N0szQ3RmdWg2OU93bGQzaHdFZ28yaGt3Z2hDKyt2bHU4UEhTVXZDZklUelZvY2YyazRkcUlaSmZaL2ZHWDZBOWcxZ3ZmR3VHVmpUNGdmN25wd0c1dmFaMW92TDNwSFRYOTdKMmVURmNxc0QyaXh6eXBJdy82VlZ1VytkaXZQZy8vUk8rQjhKQXhuT1dObWJNdDA1RXdZaUxjU3FNU2dVb0ZhRDdiTnd6elQ4YkNvMDZ3L2c0NlB2Q3JWYWV6LzFoWXMzdnhONGJiYkZpZU93OFZCVE9ubEo2SWpjTURIM2d6UDMvVm5Db285M1RJZGZ1T3YydzNVSGhtL1NtU1JsNEQyMUN6ZTllcjZEMnFvWkZTN2VYQUJTbHY3TXQvdG00YkxkNFVPUzFIL3REbUFZNmpDU0pNWFZTUmpsYXA2UkpDay9obWJWYmtsU2ZyVWJSalZDUDc0a1NUMW5HRW1Tb21zcmpHb1hicXBoTTUwa0tTTkR2VGFkSkNrZjJncWp1WGxHdWRqUFNKS1VQdzd0bGlSRlp4aEprcUp6bnBFa0tUcUhka3VTb2pPTUpFblJPYzlJa2hSZEowTzduV2NrU2NwRUo2UHBSbXBYV0VsUy96aTBXNUlVbmNzQlNaS2k2MlEwWFRYTGdraVNSbGNuWVRTZFpVRWtTYU9yazZIZGhwRWtxVk50ZGZGMDBtZGtHRW1TT3RYek1MTFBTSkxVcVo2SGtTUkptWEJvdHlRcE9tdEdrcVRvM005SWtwU2x0c1liT0lCQmtwU2x0aW95aHBFa0tUcWI2U1JKMFRtQVFaSVVuV0VrU1lyT01KSWtSV2NZU1pLaU00d2tTZEVaUnBLazZBd2pTVkowaHBFa0tUckRTSklVbldFa1NZck9NSklrUldjWVNaS2lNNHdrU2RFWlJwS2s2QXdqU1ZKMGhwRWtLVHJEU0pJVW5XRWtTWXJPTUpJa1JXY1lTWktpTTR3a1NkRVpScEtrNkF3alNWSjBocEVrS1RyRFNKSVVuV0VrU1lyT01KSWtSV2NZU1pLaU00d2tTZEVaUnBLazZBd2pTVkowaHBFa0tUckRTSklVbldFa1NZck9NSklrUldjWVNaS2lNNHdrU2RFWlJwS2s2QXdqU1ZKMGhwRWtLVHJEU0pJVW5XRWtTWXJPTUpJa1JXY1lTWktpTTR3a1NkRVpScEtrNkF3alNWSjBocEVrS1RyRFNKSVVuV0VrU1lyT01KSWtSV2NZU1pLaU00d2tTZEVaUnBLazZBd2pTVkowaHBFa0tUckRTSklVbldFa1NZck9NSklrUldjWVNaS2lNNHdrU2RFWlJwS2s2QXdqU1ZKMGhwRWtLVHJEU0pJVW5XRWtTWXJPTUpJa1JXY1lTWktpTTR3a1NkRVpScEtrNkRvSm8xcG1wWkFrRGF1MnNxT1RNTnJWWlVFa1NhT3JyZXl3bVU2U0ZGMG5ZYlEzczFKSWtvWlZXOW5SU1JqdDY3SWdrcVRSMVZaMmRCSkdPN29zaUNScGRMV1ZIWWFSSkNsTFBRK2plN29zaUNScGRMV1ZIWjJFMFRhY2F5Uko2c3p0N1J6VWZoaVZpbE9FUUpJa3FSMTdLUlczdDNOZ3AvT01mdFpGWVNSSm82bnR6RENNSkVsWnlTeU1ydS93ZUVuUzZHbzdNem9ObytzNlBGNlNOTHJhemd6RFNKS1VsWXpDcUZTOEM5amFhV2trU1NObkYvRFRkZy91WnRYdS8remlIRW5TYVBrT3BXSzEzWU83Q2FOdmRYR09KR20wZEpRVmhwRWtLUXVaaDlGMXdCMWRuQ2RKR2cyN2dXOTNja0xuWVZRcTFvQkxPejVQa2pRcUxxZFVuTzdraEc2M0hkL2M1WG1TcE9IWGNVWjBHMGFYQWdlNlBGZVNOTHlxd0JjN1BhbTdNQ29WOTJEdFNKSjBxRzlTS3Q3ZDZVbmQxb3dBUHJPQWN5Vkp3Nm1yYkZoSUdIMkpNR0pDa2lTQUtlQ3ozWnpZZlJpVmludUJmKzM2ZkVuU3NQbGN1NXZwTlZ0SXpRamdJd3M4WDVJMFBMck9oSVdGVWFsNE5YRFZncTRoU1JvR1B3V3U2UGJraGRhTUFON1ZnMnRJa3ZMdDNYT0xJblNsRjJIMGFlQzJIbHhIa3BSUE80Qi9Yc2dGRmg1R3BlSU04SjRGWDBlU2xGZnZvMVRjdjVBTDlLSm1CUEIrNE00ZVhVdVNsQis3Z0lzV2VwSGVoRkZJeExmMTVGcVNwRHg1TjZYaXpvVmVwRmMxSTRBUDRKYmtralJLZHRDalFXeTlDNk5RTy9yTG5sMVBralRvM2tLcHVLc1hGK3BselFqZ0U4RDNlM3hOU2RMZytUSHd2bDVkckxkaEZNYVkvM0ZQcnlsSkdrUi9NamVhdWlkNlhUT0NVdkc3d0FmYlBMcnJDVktTcEdnK1RhbjQxVjVlc1BkaEZMd0IyTmJHY1FYQ1JreVNwSHk0Ri9palhsODBtekFLSFZxdjZLQU1CcElrNWNOcktSWHY2dlZGczZvWlFhbDRDZkN4RHNwaElFblNZTHVFVXZGaldWdzR1ekFLWGdWc2FmUFlNZXhEa3FSQnRRMTRhVllYenphTVNzVTl3RzhBMDIyZVVjTkFrcVJCVXdWK20xSnhSMVkzeUxwbVZCOWQ5NW8yajY0MzF4bElralE0M2tTcGVGbVdOOGcrakFCS3hmY1NKc1MyWXh5WXhVQ1NwRUh3UmVDdFdkK2tQMkVVL0Q1d2RadkhUbUFZU1ZKc1B3WitjeUdiNXJXcmYyRVUxcTU3Sm5Ccm0yYzRvRUdTNHJrTDJOU3J0ZWZtMDgrYUVaU0tkd0tiQ1B0ZnRLT1FZV2trU2EyRnlrT3BlRXUvYnRqZk1BSW9GVzhrQk5LQ2RnV1VKR1ZpR25nMnBlSlYvYnhwLzhNSW9GVDhOcUhKYmlySy9TVkpyVlNCWDZkVS9GcS9ieHduakFCS3hTdUE1OVArSEtRNis1RWtxZmVxaE1FS1g0eHg4MEt0MXQ2enZWRElxUHVtWEhrcThDVmdXVFkza0NUTll4cDRQcVhpRjdLNGVEczVFNjltVkZjcWZoMDRGNWpzNG14clNaSzBNUHVCWjJVVlJPMktIMFlBcGVLM2dET0JyUjJlNldnN1NlcmUzY0NUZTcwM1VUY0dJNHdBU3NYcmdTY0FQK2p5Q3RhU0pLbDlQd0dlUUtuNC9kZ0ZnVUVLSTRCU2NSdndKT0RUWFp4ZHJ5VzVGWVVrcGFzQXAxTXEzaHk3SUhYeEJ6QWtLVmRlQTd5ZHNGWmRONmJuemgyc3dKV2tlR3JBbTRHMzlHT0puMS9jdEkyY0dkd3dBaWhYbmdTVWdXTVdjSlVwUWlCTjlLUk1rcFJQZHdPL1JhbDRhYjl2bkkvUmRHbEt4ZjhBSGc1OGFnRlhXVXdJb2xrNm45TWtTY1BneThERFlnUlJ1d2E3WnRTb1hDa0I3d1kyOU9CcU5SeUpKMmx3OWVvWnRRdDRQZkRoZmpiTE5jdC9NMTJ6Y3VWdzRGMUFLWFpSSktuSGV2MG0rUkxnRlhNRHc2SWF2akNxSzFlZVJxZ2xuUnE1SkpJMGFHNENYa09wK0tYWUJhbkxmNTlSa2xMeGN1Q1J3Q3VCelBaa2w2UWMyUVc4QVRoMWtJS29YZm1zR1RVcVY5WUFmd0s4R2xnVHR6Q1MxSGQ3Z2ZjQzc2QlVITWczNThQYlROZEt1YklXZUMzd2g4QzZ1SVdScE14TkFoOEUza2FwdUQxMllkS01WaGpWbFNzcmdOOG0xSlpPaWxzWVNlcTUyNEIvQUQ1RXFkak5BdE45TjVwaFZGZXVqQUZQQTE0R1hBQXNpbHNnU2VyYUxHRUpudzhEbXlrVlp5T1hweU9qSFVhTnlwV053QXVCRndCbjRCd2pTZm53UGVBendDY0hZWWgydHd5alZzcVZvNEJmQjU0T1BCazM5Wk0wT0E0Q1Z3SmZBVDVIcVhocjVQTDBoR0UwbjNKbEtXR1Y4TE1JK3lrOURzTkpVdjhjQks0bUJOQ1Z3RGNvRmZmRkxWTHZHVWFkS2xjV0FROERIZ0djUmxnWDcyVGdXTHBmUFZ5U3FzRHR3QmJnT3VCNjRGcmdla3JGZ3pFTDFnK0dVYStVS3hPRWxjT1BCVFlDNndscjVDMEhWczRkdFFiN29xUlJ0WFB1ODE1Z0g3Q2RNQ0gvSHNJTzFsc3BGVWQyb2VhZWhwRWtTVm5KNTNKQWtxU2hZaGhKa3FJempDUkowUmxHa3FUb0RDTkpVblNHa1NRcE9zTklraFNkWVNSSmlzNHdraVJGOS84QlJ6c0MwaWFneEIwQUFBQUFTVVZPUks1Q1lJST0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJGSURPXzJfMCJdLCJleHRlbnNpb25zIjpbImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6IjA5NTkxZmM2OTgxMTQ4Zjc4ZjU3YjlmMjNkZjY0MTNmIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJ1diI6dHJ1ZX0sInRyYW5zcG9ydHMiOlsiYmxlIiwibmZjIl0sImZpcm13YXJlVmVyc2lvbiI6MX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMi0xMS0xMCJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjItMTEtMTAifSx7ImFhZ3VpZCI6IjkxMjQzNWQ5LTRhODgtNDJmMy05NzJkLTEyNDRiMGQ1MTQyMCIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiOTEyNDM1ZDktNGE4OC00MmYzLTk3MmQtMTI0NGIwZDUxNDIwIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlNJMFggRklETyBDTCBXUklTVCB2MS4wIn0sImRlc2NyaXB0aW9uIjoiU0kwWCBGSURPIENMIFdSSVNUIHYxLjAiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsic29mdHdhcmUiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQnRqQ0NBVnVnQXdJQkFnSUJBVEFLQmdncWhrak9QUVFEQWpCS01Rc3dDUVlEVlFRR0V3SkVSVEVoTUI4R0ExVUVDZ3dZUnl0RUlFMXZZbWxzWlNCVFpXTjFjbWwwZVNCSGJXSklNUmd3RmdZRFZRUUREQTlHU1VSUElGSnZiM1FnUTBFZ01ERXdIaGNOTWpBeE1URXlNREF3TURBd1doY05OREF4TVRFeU1EQXdNREF3V2pCS01Rc3dDUVlEVlFRR0V3SkVSVEVoTUI4R0ExVUVDZ3dZUnl0RUlFMXZZbWxzWlNCVFpXTjFjbWwwZVNCSGJXSklNUmd3RmdZRFZRUUREQTlHU1VSUElGSnZiM1FnUTBFZ01ERXdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUXc2Y3krem5NeVE2cHRkNEpqcXZtYTRlOFJlK1pwcGI5MEdxS3ZzUkJuRjhXbU01eVpXSU9LalFnai84KzNqOWF2VytTeUFhLzFNYXl3UUQ2QjBnOWFvekl3TURBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUIwR0ExVWREZ1FXQkJTc2VwV3V1eG1EMG84ajFZMjc4YkxUR0NaTnZqQUtCZ2dxaGtqT1BRUURBZ05KQURCR0FpRUF1MzNTcDBFN0JFZEhvekVHQUNsTnNhMHlQQjZzRURvUTdXNGtpeTBEWjE0Q0lRQ0pMRFRKREFuV3hvMzF6enZyV3VJTnRCcXkwNDQrR2dGUDYrd2xxRzY2Tnc9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFGQUFBQUJRQ0FJQUFBQUJjMlg2QUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUFCM1JKVFVVSDR3SVVEQzBGb09VSElBQUFDY2RKUkVGVWVOcnRtMnRRVk5jZHdQLy9jKzgrV0phQ1BCWTFDZ3NDb3BETWFENzRBTVVraW1PbldtM3lJWjFwcTlpcG83WlduYVpOTTAxc203YlVxS2hrTE5aSGZNeTBINHF0VnUxVU15TTAwYzRvZHN4TXdWQ05HbE9Gd1FCcldKNTdYK2ZmRCtmdWd3VldOc0dtTlBjTUg5Ykx1V2ZQNy8vK240TklSUEJGR2d5K1lNTUN0b0F0WUF2WUFyYUFMV0FMMkFLMmdDMWdDOWdDdG9BdFlBdVlBTWJxQklpSUh0TnhrbGlXUWg5aWZndkcrTFg0RlNJQ1FDQVE2T3pvYUd0NzBOSGUzdGZmandDQUdDRVdIUHdCRE1QSUw4aWZOV3NXaHFjQkFDaXFldnJVS1lZTUJqOFB2aHRlWWZEbklYTUJpSGpTbDVJbVprN3laSG84SG85c2s4V2VFVEVHc0J4YmVJaDQ2OWF0L1RVMTlSZnFlbnA2WU1RdFJBOVYwMVpYVk15ZVBUdEtncXFpdlBTRGwreXkvTmtWaXdDRUtOU1NscGIybFJYTHY3TnUzYVJKaytJMjZaREczN3QyYmZVM3Z2bmNvbWRPL0tHMnQ2ZEhZb3doQ3ZrUkl1Q0lBMFlRc25qTUlxYUpwekdXR25GOVJBcitreUUrOVBrTzdQOXQ2Yno1Mzl1NDhjUGJkMkJrVDJUUm5rQ0VBSnp6ZmZ2MnJWengxYjlmdXVSME9CeDJPeUthVGtpRWlDeTJxb2xpbUJaaDBGa0F4SFlSQU9KeGJ4UzdGVDlCT2JvU0VvRG83WFBubm4zbTJaTW5UK0lJeml4SGlWK01pdFZyL2xaZjczQTRJbDhiR0JqUU5FMlNaVm1TNEZIQlRGRlZYZGVHOTBJS3kxZFZWZmdVY1pGSUtFRFhkY013bkU2bncrRUFJc1lZQU1nUzI3cDV5OVdHcTl2ZjJQNElIeVlpVlZVcnZyWDYwc1dMVHFlVGlBQlIxYlJFbHl0bjJyU1MrZlBuekoyVGxaT1Q1SGFiSGpTeW1va293WlVRT3pyMEJ3YmV1WGd4S1NrSlJ4c1pRaElqUUFRaXY5OS81OWJ0eTVjdlg3bHk1YU83ZHpWTnMwa1NZOHlPZVB6b1VRU28zUDdyYUVPajRPQ2NFOUcyMTdibFptWG5lWE9tWlh2enZEbFRKazMrN29hTkxTMHR1cTdUV0l6dTd1NnNLVlBGNGhNelBGMWRYV095cktacGQyN2QvdHJLVlZtVG44ano1b2lmbktsWng0OGVJeUllTVJNaVh6dDcrb3duTFYzUVRzdjJ6aWdvUEhQNmRKUkV4aGo0azAvR0JEaTB0ME1IRG1aUG1ScENtRHI1aWV0TjF5Tm5odk53WUdCZ1VkbWloNTJkNG9rc3k2ZlBuaWtvTEJTR2pXTlVKUFQwOUJUUExMSkpFaUwyOXZYZCtPQm1ja3JLWjZ3NnhPNDRrVWdoRjk5OWQrM3FOY0pyaUtpZ3NQRE1YODdLd1VRWWp0Si9xajNSMXRvcWFCVlZQWFRrU0VGaG9YZ054N28yRWt1T3ljS2hSVmp3MDhLeXNwOXMyOVkvTUNCazBkemNmTzNhdFpCMFRHQkZVU29ySzIwMm0zajYvQXN2bEM0b0hiOEZjOFhhaXJuejVqRkVrV1YvOXRxMjZEeGNWMWZYM2ROdDJyYWlmbi96WnM3NU9LVVZMcnAxNjlhZS9uNUVsQ1dwcWFtcHVibDVFUEE3ZGZVT3V3TVFGVTFidm5KRlRtNk95R21QWTRRTStUSDFFbUw1QldVTDgvUHpSREN6eTNMZGhRc0FnSUFtVlVORGczQUJTWkkyck4vdy85RUpidDZ5UmRkMVJKUmt1ZUhLRlNGakJnQStuNitscFVYSUppMHRMUzgvNy9HSi83OWsxVVFBTUcvdVBKZkxKWjc4NjhZTllWMHlBSHh3ODJZZ0VFaElTRUFBVDZiSDRYREVGVUlOYnZpNy9JK2NMOHJNdnI1K0lITW1NdXp5ZC9QUlNKWUFFTnh1dHdpcm93emQ2WjZNbE5RSnZ2WU9BbmpZNld0LzhMRm5ZcVlNQUhjL3ZDdENsS0hydVRtNWtpVEZKYzdXbHRheXNqS253NG5Sam9SbUdSaU1GZ2JuakRHYmJLN3ZjaVlzS3k4bkFtUVllb3NIKzRxUXI0dHFJYUFveDMvL3V3V2xjZVFPU1pMUzB6TTZQKzdneERWTnUzZi92Z2w4Ly81OXhoZ0JxSnJtOVhyanRoL090WUFpSXhNNUlJYWRCZnRCTTVJaW9xYXFvOUV1STFCVmxZejRFZ2RqTEhOaTV2dU5qWklzYzRQN09qdk41cUd2cnk4a1M3dmRIbi9VWmFLL1F5SWVqc0RSTVJrWWlxS05VVWpyd0JIUmxBQU5qcktET2xoQ1FBS01lMlBvY3JrSXdDQUNJSEdBSVllL2hBZ0FqUGpUTCtkYzUxdzNEQllPZFFqQlV3RGlGTGtEemcyVVpRS3plK2VhaG94eHpzMG1GMkJvT2pTSUFFRGpCbysvajFRVXhXeTVFWVZNWlFCd3U5MmlqN2JKTnArdkk5NUZFOTJKNVV1WDJ1MTJJR0lqaHk0Q0lNNkJxTDYrWGxDcG12cmM0aVVNTVhiT0Y4SlFORFV0UFMzZVdOM2IyOGNReFZGa1NuS0tDVHhsNmhUaGZreGlyYTF0anp3SGl4b1pHUm5Iamg4YmJmUFEyL05rVWJFZG1LallkKzJ1U2s1SndWR2JhRnpBaG1HMHQ3Y0RZd2pBR0V0TFR6ZUI4L01MRUJHSm1DVGR2M2ZQTUF4Wmx1UENqbU5tNUdrbEFVTmtZOStibU9vMWROM2YxWVdJUU9Td083dzVYck8wbkRHak1OSGxFaWRhN2UzdHZiMjlZOVhLZkk1VkJ5SzJ0TFkrZlBoUXhDWlBwaWMxTlJVSUdBRzRrNUt5dlY1QjJPWDN2eGRzcHNicENLbnE3ZlBuRlVVUi9FWEZ4ZUdZRHdBbEMwczU1NGdvQSt6WXNYTzhWOUhpMEdkL1RZM0Raa01BVmRQbWxjd1hIc1hFNWNPU0pVdkZBU0tUcFBlYm1pNWR2RFRlbVUrZityUGYzODBZNDBUY01KNWJ2RGhZRFFBZ1lrbkovR3l2MXpBTUFMRGI3YnVycXNhN1ZkZlUxTmhsbVlpNFlaU1hsM3V6czRWdGh4UGdMeXNyRFNJUk5xODJOUHppOWRlandzQjRDVmVjYVAzNjliZHUzbVNNRVpIa2NMenk2cXZoZTQvUTdOSUZwVVZGUlFiblJKVG9jcjExNkszcXZYcy9YUUw4SEdrQjRPZmJmbnIrcitlY1RpZm5YTlAxUldWbHVkTnloN2xxa1dWNVYxV1ZhR2c0NXpaWjJ2NnJ5bGQrK0tPdXJxN3hZc2FkSFIzcjFuNzc4SUVEdG1ERGw1eWNYTFY3ZDJRbE4raHVhV2JSekQxdlZxdWFLcGpkYm5kdGJXM0puTG1IRHg0TUtNcFliVXNjaHB0Zk9rYTI0L2Y3cTNic1hEQy9wSzZ1TGlFeFVmU1ltcTRmUG5va09TVTUwaVhENTlJVXZMRFp0V1BuM2oxN0VsMHVrYWlJS0JBSUpLZE1lT3FwSjR1TGl6TXlNMU1ucE1vMmFkak81aEhkSVpDaUtEOSsrV1dKTVVRTUtNck9YYnNjVG1mOFhrTkVvR3VheitkNzhPQkJZMVBqOWFicmZiMjlyb1FFOHhBUFVWWFZIVHQzdnZqMUZ6bm5rUnFPdmhBWDJEWDdmdlBHOXUxMm15M1k0bkNSc1hSZDU0YkJpWUJ6Q04xM1VxaFNwS0haUDNROXp3Q0ljeVpKZHJ2ZERKaU1CUUlCMFNmekljSUxYVGpSU0UwU29zU1l4RmlJSjZRekRsRDladlh5RlNzaW53OFBIQnIvdUhwMTA2Wk4vNzc3a1RzeFVmUm9adEViWERXc0VoeG1SMGdZRlV0dzBGOE1ERkhaS0JTTUZObDdpVjJZQ0tMWkpNNTcrbnBuUC8zMDN1cnE2ZE9uRDN0M09UeXdXRUxYOWVvOTFYODhVZHZXMW9ZQWtpU1pmNU1RVml3Tjd2RWo4SWJBNGVnT2IyT2t3RUZtVHdBWXZ0TTJkRjJTNWFsWldSVnIxNjZ1V0JOVGFpTURRL0FDdGZHZmpTZHFhK3ZxTHZoOFBsM1Z6TXZ4Q0NNWlp0OXhwaFFjZW13ZG96R0ltR3l6MlNaUG5yeHMyWmRYUGI4cXY2REFack9GZGo1c1hNRFlSVVdVVlhSMmR2cTcvSUZBQUlDRzM5bG9GZnFvaTRNWVIremhuV0dDMDVtYWxwb1N1bzRiVERrc00xci9NODBDdG9BdFlBdllBcmFBTFdBTDJBSzJnQzFnQzlnQ3RvQXRZQXZZQXJhQUxlRC9xZkVmYm1NY1ZDcDhiRzhBQUFBQVNVVk9SSzVDWUlJPSIsInN1cHBvcnRlZEV4dGVuc2lvbnMiOlt7ImlkIjoiaG1hYy1zZWNyZXQiLCJmYWlsX2lmX3Vua25vd24iOmZhbHNlfV0sImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIl0sImV4dGVuc2lvbnMiOlsiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiOTEyNDM1ZDk0YTg4NDJmMzk3MmQxMjQ0YjBkNTE0MjAiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjp0cnVlLCJ1cCI6dHJ1ZX0sImZpcm13YXJlVmVyc2lvbiI6MX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMS0xMi0xMyJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjEtMTItMTMifSx7ImFhZ3VpZCI6IjdlM2YzZDMwLTM1NTctNDQ0Mi1iZGFlLTEzOTMxMjE3OGIzOSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiN2UzZjNkMzAtMzU1Ny00NDQyLWJkYWUtMTM5MzEyMTc4YjM5IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlJTQSBEUzEwMCJ9LCJkZXNjcmlwdGlvbiI6IlJTQSBEUzEwMCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MjU2LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDTERDQ0FjK2dBd0lCQWdJRVpQL2dOekFNQmdncWhrak9QUVFEQWdVQU1IY3hDekFKQmdOVkJBWVRBbFZUTVFzd0NRWURWUVFJRXdKTlFURVFNQTRHQTFVRUJ4TUhRbVZrWm05eVpERVpNQmNHQTFVRUNoTVFVbE5CSUZObFkzVnlhWFI1SUV4TVF6RVRNQkVHQTFVRUN4TUtUM0JsY21GMGFXOXVjekVaTUJjR0ExVUVBeE1RVWxOQklFWkpSRThnUTBFZ1VtOXZkREFnRncweU1qQTFNVEV3TURFM01UZGFHQTh5TURVeU1EVXhNREF3TVRjeE4xb3dkekVMTUFrR0ExVUVCaE1DVlZNeEN6QUpCZ05WQkFnVEFrMUJNUkF3RGdZRFZRUUhFd2RDWldSbWIzSmtNUmt3RndZRFZRUUtFeEJTVTBFZ1UyVmpkWEpwZEhrZ1RFeERNUk13RVFZRFZRUUxFd3BQY0dWeVlYUnBiMjV6TVJrd0Z3WURWUVFERXhCU1UwRWdSa2xFVHlCRFFTQlNiMjkwTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFTGYyaDY4R3pTRVdFb3AyMlJMdktDMXdOQXRVSXRtdjRUZjJPeElwQjFYUWU5SlAyblJQQ21renpmUVVZbk9rOUo5UGd2akVpNjRidVVLUHJxZDAzTWFORk1FTXdFZ1lEVlIwVEFRSC9CQWd3QmdFQi93SUJBREFPQmdOVkhROEJBZjhFQkFNQ0FRWXdIUVlEVlIwT0JCWUVGTGhSbzR1RTJtbkovVnRHZkIrT04wckFRelFaTUF3R0NDcUdTTTQ5QkFNQ0JRQURTUUF3UmdJaEFMNzE5SzBsUzZqZG9sbGlJOGg0bHlJOHRnRkZqdjROUGcxZGRJRitiSG1TQWlFQTB0aTFhUDBTY3BybUJvTGFHUHhkdVRoZjdNd21pUWJUbTI3TmdhaFJ2S2c9Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUhzQUFBQXZDQVlBQUFERDJMV2VBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBQ3hNQUFBc1RBUUNhbkJnQUFBQVRkRVZZZEZOdlpuUjNZWEpsQUVkSlRWQWdNaTQ0TGpneGdjdGlBQUFjSDBsRVFWUjRYc1ZjaVh0V3hibjNqK210eXBvUUVySVpaUkZCRkt1NFZHMnRWV24xNmxPZmVpdFliZFZiYmF0ZHJMYnV5dUpHclVvcmRhR1Y3QnVCRVBZSUNHUWhnWkN3RTdKL3lYdmYzKytkbVhPK3NPU0xpYjN2ay9sbXpweVpkOTU5bG5OT0xwSWhFU1JrQVpJdXZoNE1EU1VqNFpYK0RMckIvUFdvSU43UGx4V0kwNVdTQUcxQWg3K3RFSzRIWTVVQWR4bHFoOTMrMnFCNGdNclFPVW85YnArVGxvSEFoLzJDRjAyODhMbURZWmVwd2tYRE93MjVJWWNyNjJ1RG9pRW1aWWg1RXRvQmwxOElCclNMS1RIZVA1UmRHcFJFVkhjZWFYaVdnbEJkUmNTcjR4M0pHOFVZd2VNanVJTHg0NU1DNngzTlVMeVhsWUxQNC93WnViSCtLVUtTc3EwOENnUWNPSTdCd0ZkNWZGNjQzcHVpSGltTWhjYXVtZS9IWEgraTZ4Z2VWbUpFU3dUWEVCbUwrSEVDQmYyVzQ0YTJaNjZnT2N4czdCRERxVUNhM0ZnSjFzUm9EeENyU3lMQlM5SW9PNWZzTHdRV3hoMXk5dFhra2FTS0xMUkQ1aFJxNEluVGZNaFlJMzZNaDNieHB1Y0IxNHZBNXVpbTQwVmRUV2k0TmpxOE1CV1l4NVJPUU5uVGhTWXhXaHlOZ2YrVUlzK0ZBZmpqQ2c3Z0NHQVdMM05JT0Fob2llZ01vQlhFbWFKdTR1QTgyeE1Ec0lINlRoeVhydjE3cGJ0aDM0aXBwM0UvYzdUdmFtcVUwdzM3TlRWS29xTkRCb0hhS3lFQXl1ZGc1THlnN1dOR2xNQzFLaVl3N0xLQjluWnArK3h6MmZ2Qzg3Snp5YzlreTMzM1NPMmlHNlRtcGh0azR4MjN5L2FmM2kvMVQvNVNtbGN1bDhQbFpkSjkrQ0Q3ZW9NeXhXQTBYeE9uK1d1Q0lqUTZiVTUycEJyTlBrSERtdHVvSnB2b0hucEZkTENLRmpGNjJpNUNIMjlGU0o3ZHBuZVdTMUhheFZLU20zbkJWTXc4STByWjA2UTBKMFBLY3Fjekw4L09sTXI1czJUM2tvZmw0S2RyWldDd0grTTZva2NHM3k1U2lBR3ZjZEhkSXkwZnI2WkNTMmVrazRiU3ZPbFNuS04wYUE0YWpMWk1MV2RLV2I3U2pIdWdVV210WGpCWDl2em1WM0o4MDBaRkZ2R2ZNb0VqZ2lseVlHQkFaYnFTNDFYZnZFRFQxYkpoMFhXeWNkRzFVbjNOZkduK2FKVU9hMlA3b1dIVUtCOHAvVUwydmZpU05DNS9VdzFIT1hlR1A5cklFK1pzR0YvY3NwcFdycFN5dE1rVXlvVlN1VXQySFRPQXZDd3B5cG51aEo4bEpkT25Tc20wUzZXOElGK2FYbjVKK2pyYU9OcklZQlljd2hvSTFiK0IvaTdwK09JTHFWcHdoUlJObTB6RmxlVm1CUm80SmxKdU91a3Jtd0ZhakRZcVhhOHJjcktvK09LTUtWSTQ3UktwbUR0SG1sYThKZ09uVGxMSVhqWmpCbFZRejZHanNuN2hsVkthbVNabFdXcVVrSWZTWEpLVEpzV1pVMlhEell1azkvQmhiV3ljV3RBeTNsdFd2Q24xdjFnaWU1Ly9uUnlyWHM4NjNoNGxnUmNaUWtNYUlWQmxyM3BiaXFkZVRBLzFpWjR5TEVGWXdhdlBrU0RRb2x4bGtKNnV3czVXSnRNbXlNWWJGa2w3OGI4dzJBVUI1RVFSM09qczdUd3BlNTU5UmtvekpxZzNLNzR3WGpvOUY0WVg2ckpCTzVTZTNBYUtMOG1iSWFWNlhaS1RiYmtLdityS09YSmk2MmFPRmZuWTJLSDFnL2VsWk9MRlVweW5OS2lDSVk4U2xRMk5VMmtzblBwdE9mejV2NjJ4RzlaUEs0YytlbDlhM25tSFN1OXBQOFQ3L3Q1b1FKVjliamp3OWtvcFRwOUE0VUJJQ01jUUVNTmdYbm9RS0JRZUNUS3E4L1h3S3VSa1RvVlpucU45Z1RNelE2cG01VXJMWDFlUjhJanl5UGdJckFkai9iYU9VcFBIdkZ1VXBsRUMwVVJ4VldTREhsV3lVMXhSdHRablRKSkNwUitwYU1vbEtzeEx5QSs4R0o3azZTSlBhZ3p3ZU9SNy8vZ3N4eHMxT0FVRWlQRXowTmV2WGoyWGhtNUdaVkVGTXF4UVdrRkgwWXdwNmdEWFMyS3cxM1ZWWS9PODkvZEk1NDR2cGErdGphSGR4cko3bzRFUmxRMGxNd3ptNlR5WHJ4WTVmYktzbTN5cEZFK0dBTDhkQkJsUFVBUUZPL1ZTZW5FaGhLL0txS0IzbTRLS0ViNDBLcFRsejVDT3dtSTNxa0tnMytZNjR6ZmFIcld0ZXBmS1FvaTJhT0dFcGRFRGhyUXUvZHRTZWZXVnN1c0pYWWl0V0NrSFAvdEVqaForSVljKytWaWEzMW9odTU1NVdqYmVmWWZTTUlPMEF4ZVVEQjdMWjEvR0VHNDBwTGp4Y28wc2M5N0cvaWdiTTIxcjF1aFVNMUhIbWNIcHBqeFBEU3M3TGNpaVBBdU9wRHhNbnlCSDFxMWpIeGcza0NHa200SnRVVWFxTUlqTFJnTWpLdHNyaG9TcFluWS8rWVNjV0Y4akhlWGxjcXlzWEk2VUY1K1ZqbGFVU0VkWmtiU3VXMHRQcVZMaHcwajh2QW1jREswT2I5WE1mQm5vUHUxNEFHTkdReEFlZjVUUi9sNnBtRk9naHFlR29rWkltdURSTHErY1Z5RHRuLzlUaGpwN1pGQzlhU2lodUdBb3NCTE5Fd2xkd2ZmM3lVRFBHUms0YzF4T3JxK1ZMNTk2UWlvS2NxUTRiWkljZU85dEc5OURvT1A4QU54b1JrcDlleFlqUG1vV3ppZlBsQ1dtRDFVc2pVdU5FK3NhaTRJcUV6V0VtdXNYV0NmUzRXaHhHZEFoT2FrRS9LbkN5TXFHSUpVWUVBSmxONjFZeHZ1RGFubEpnbkZBNWlIY1lkQ3E0UnFlQTZhNGVGS0dHZHJKZktaODlleXZBKzJXeHozTEJIZndINnVsOURKTUk2WmNScHg4bExPazhxcVowdFZ4Mk5Ga1hoRHdjWnZtRm5nT0Y1WFB1M281MktmOHZzMHlXckFmV1R1YnYzTUIyK1BIRFJqbi8vRGFUeWhEVGhWcTNPQzc1REtOUW1xc1VIUkZMbllHbUxjMVY5NlFIeW91am1nRHJnaGRORWI0U1IxU21MUFZBdjNLdFNCVEdwMnlVeFVFQUFMR0d2TkVYUzBWenFsQlF4a1dLSmdlU3ZKeXBIYkJQQm5zNlhFZERMY0p6U2xJLytvZmU5UU1UK21waEVkQVNCQ2VSbzBqR3E3SnZDYTBweHhzMHJONkQ3N3MydUVQVzVoSVFYNDdZelNNRElhRGVQMTBnMnIrREVydDNiZlJHR0hnbUxZZ3gwSVlxUEpSUGtPbk1WVXVwMGcxQ016bGFMUDVqdTlaZHlKMnEzT1hyQkFaOG1nZ0pjK0dRSXRkdURudzFqSVZERnBRU2tsd0xvOG1rRUFVQnVYZzN6K1UwblNkOS8xcUZNcFcvSlZ6WmtySGh2S0FnNWxENTlGdVdueW5HWWUyOTNRaFlSRTIyT2NYTmxDY2VURkJLNG1LUHk0QmFBZ21UTjgyOGlJVnBoOTBCUEI3WVM5K2p1MjZIdEZwcm1vbW9sbEVLNmVkckF6WmV0ODlVbm50VmFac1RiZ0hMMGNxbTVVbkhjVTZkenRhQUhGNlFqbXFTZ2xHWHFDcFVIMUNLTnEvOGcwM2hoS0Jnazh4Q0VKanZSR0xIRGFhT04wcFpiT3hVTkg1V2tNNlFqam1yc3FaT2RLeTZqMjI4NzdsOFZoSUc1UU50eTJpbDJBcW9QRnhTbEJ2MElVZ2hlM0hvN0pkZndmMFlyVFNPdGE2dGxFTEFLNmpPaDhZTGdobk5YTDloL3BrNTJNUFU3bGNuemlGWWdyQzR2YjRsazNTOU5lVlVqaGxFbmMzWlRNMFN1Vk41U0lXYWVmRER5cW1pQS9nWklyeE5GcElMWXlyb2pudjVHWHpxQkZnWkZ3WVBHSDI2NVRlM1NOMTkveVFod3MybDltS3Vyd2dWL1l2ZjgxeDVGYWdMZ0VObExENS9zVlV0amMrZWplaWcyNnpPc3BLSW1Ib0h3d0cxd0g4QlJzNStqV25halFzZW9PeVptNWNsa2NBMThpTWlRWENzUzFicE9hNk9WUXlwaTNRQ3VNc3lwb21kWGQ5VC9wVkRvT25UMHJwbkZ4M3dLTjdmbmc5akZkRCtZYjVjK1g0eG8yR2pqOWVIZ1kyVEhTZENxUzJRSE1KMnlTdjdDVEFBZ2g1R0ZzTFdvRTZKSXJTcU9OS3VPN08yM1ZmT2NtWTB3VEZsUlNvSVMwejNMWTBjOGdjSHNEZTUzK3ZjelZDdjg1MzJpY0lVWEZVWFQxYnQwMm5neEY2cGR0RmxIa0RoQ3FqMnpaV2ROOHAyamNZRWF5OU5kZXlMdmdhWG54QkNuVmJaOG96YjRWWEYwNitXTm8vV2FPTjFad1QvZEw0MmhzOHZDck50b01kVzdSbXlMck1DZEx3M0I5VkdPQUkrRTJtRVUyT3hsSEFtSlZ0NCt2QUtxUmczUjRRNGtpUkkxU2g5K1J4S1NzdzcvUjRFY29aeHYvK2dmVkJjOWNld0tMK0hLK3JVYVBJc1pWcnJDL0NlbEYydWxUUHYxS09WbFpLUWczSzk0SHBlTCtOWUpqZ05JL2ErencxWVlZMktMaUx6dVptcWYzdVRUemN3UW9jWVJ6VEZsTFZyZGRKejBGN0FJUDV2Yk5wajFSZWVia1V6OERoa1BLa3ZHRHhXYVR6T3M3T3UvYnZOMHIwTHhpeSsyRStDaGk3WjBPL1FaZCt0bFVZZE1KUzVRMG9tU2dqd1h0aHlWQVM1MXdxVEJXbFc2Y3pYKzVFRCswS3BBYmVrRHhzL3ZGZFVwdzUwVHhCK3pJcVlPRkRoVS9WbFhtNmJQdkp2ZEwrcjAvbHpONEc2ZXR4RDE1Z2pCNlBNMEpjTWFIZVJ5ZldPOXI1a3dLd0QzTDFWcVg5OEQ4LzFyblkxanM4SGdWOVdGaG1wVW5qUzM4T1lrSWZHT2JlMy81YXlxWXJUNUN4ZWpiMzNscGVselpSRHJ6L3J0Sm43UTFNMk1sMXFjRTRoSEgvT2syeWdQeWNhNWNnTUNHSFB2K25icjF5cVdoL2dzU3dwYUc1OXZaYjJEWXdvUXJ4UlN2b0FtOXdRTHBhV3FUbTJua2FJbkhzYUh0VTRNQ1JhUkgyckJvMjhaQ2hPSE15UFdQWDQ0OUs2OG9WY3JSbW8vU2ZQT1hRbVRFWldvdEk4VElpUVJoN1JIREMxeEk4TmRIYkl4dHV2VW5Lc2pTRVUyNUtuOXRhVlMyWUt5YzNiN0cyNk9kNFBGcFJadDZ0U2daUFBwUkRSaHV1dXlZOG1PRllwTTdBNmxLSDhabXpGV3k3NHdtSXpuV1J1ZzYweXU1ZlB5R1Z1c2NHODVpL3dBeERNRmJYV1ZQazhDZi9RSWNZSXlaRWx0VUNBbU5hT0w1dGg2ei96dFZTTkgxS2JDdG1aODJXYlA4TmJ3ZHUxRlV2bUMyYnZuK3oxQzk5V05yWGZDejlSM0FBWS9pQ3h5UEROWVptRmVpL01BUTYwVTlsY0t5a2hITEREb09IUHpBK1ZTQVV1WDNwUTlwSU9VUmJKeHVrb2Q1K1JpTWVYRGtlakNlTkRJcXI3ZE9QYlFnbll4c0xOYU9EY1ZFMmppRlBiOTdLdmVIUjBqSU5vWjlJNjEvZmxhLys4RHVwdS8wMjdodXI4bldlanExS1dWWkZsVTlQazYzL3ZWaXhPS0VwV0JhUENpd1EvTGxhVDJ1VGJMLzNYaW5PUUlRd295blNITUtsa0hRN2c2UEpwRkRxUW4zVkZYbFNPbmUyN0hqb0FUbXh5YTE0Q2VZMVFSSHVjT2RDNEdsRStFYS9qYmZkelBtWGZHSnhSb1ZQazhvNWVZeHNmckNnT0k0ajBycG10VWE5Zk5LSU9kNFdkbW5FVlRWdmJtaUw3b0hlVUVnTnhrSFpJRFloaHo5Ynd3Y0wyRm9VWjAvbW84ZEN0VzRJR1E4QUdLTHl6YU9oSE82WDFaTHhNTC83dEliWFFMaE9hRnJHSmVaNll5OFN1dmNraGt4dGdTUFVxbXZta0RaN0dxZTQ4N081bmVGSm5TYUVSVDZLZFNFU1pRZ1RDNkxDck1sU3F3cnExSzFTSWhFTDZhUmhaR1VEY0hTTTloMjExWHdHQUJvNEJtVG1vdGltR3hkcEUxcy9HRGcrWEo0WTZKR2FXNjVYMm5QWmo4bEhCZDFhdHNGUVhGdW1yd0hqRnNZeEgrNTQrSDd1bjdIZzhwN3J3eEhQdzVWd0tsL25NeHdOUXNqZERRME9nNGVZZ0NrTXk1blJHN3pIRzZDTUJ4NnRINjJXdXNWM1NmWENhNlhvY3ZWa1hRemhzYUVYT3JkcTRFRnBZTzZuRWpVNlBIckUwN3BkVHp3bUNaNnZHOFRIT1Q5RTNyYmxSM2NISHNPWk4valh4V1RqcWhVT1lUTDkxSjhMeWMzdnJOTDI1aUErQ29KVzVEVTNMSFJUbk84ZmsxT0tNRDdLZHRSam9WRXhkNVlTaUJjS1hHak50VEJiTlFNNFZMQnFwUWpydTU5K1dycmFXcTNqbUFDUklBcS9YWHQyUy9ONzc4cXVKMzh1dFhmY0loVWFQZ3ZUSjNIUnhnVWMrRkJGOHkyYWZDakdMZlRVaXdvekx0V0Y0cTF5ZWsrOW9hWkE0OHFKQ3hoYWNrWE5UMnl0TTA5VW5PWFpXRDlra25jWWRlVzhLeVRSYmQ1UGZKcUhkWWlyQXd6MGRFdmxWYk81TUF2S2RrNERwYmV0WGVzVWJ0M1lkUlF3TG1HY1lVd0JnOWYvNm5FeTdRVnJJUTNQcm5XZnFYUGxyaGVlbFJOVjFYd0VPUjVBcjRoeGpXc0VmNFRGbnVaV1BvNDkrTGYzcFg3SlExSjVlYTZzbXphSisxOEw1eGJTc2NqRFF3a1lJL2JyT09IcWJtME5hSjNqS1poU1RGSGVvNjBPQ3o5RUwvQkxKYmxVT3UwUzJmdktpMnhyT3hRSE1acTVhRU9tOXc4c1h5YnJNdFU0c1RXRnpFR25PZ3JtOFcwYXVheWQyN3Q1emFjSVkxYzJpUVlUdGdMdk90UWkxYnFOcU1ySjVSektjS21lZytOQUVIMTYvejUwY0JCai9tdUNEWTlmQ0I5ZUU1T0FiUWw0QjlzWDBOYjAzZ28rRGkyYUhwM2c0Ym02aFV1VXAwaGg5aVRaLzVjL2N4dGxLalVnYm5jWmFuV01udm92cGZxNnEwSUk5NHFDSVdHQmxUaHpPaGdNc21TdnhyWGh4ZVZnVjZkVVhINFphZUxVcHpuZnBkTzhZdDVNT1JKN1FPSzZwd3pqTm1lYmhadnlZSjBSMDdZaXhpb1Q1UzAvdXBQdHlQeG9xUjBCQWpyaXhsNDUyWk1nVkFoNllLQlBHbDUvaGNiSCtWSHA4NjlMWVZ1SWh4TGxNL09rdDdYRmRmWmcrSUtZWGJiMytUOHlYUHY5TlBEUnlLZE5sRDIvLzYwMTR2ald3WFhqdGRram9xTVdjS0Yvb0sxSXB4UXNNamsxWUtyUnhTM28zZlg0STlhT01EcG5HUmRsZTE4S0ZxdXcvcnZYbTFVcW9aeDNRRENFbVovRFY0VFF6cmNkS3dSRFU0UWViNFRiVk1Qa2hhMFpRdXF4ZFlYMElpb0d4b25ueWJwVndwWU5DN1pXN1AxVnNMNGZrSGdlbWF2eDlEUTJ5c1lmM0VwRmtFZDZOM2hWbnRXcnU1dWJ0TFhTQmp5dUh5RGc5T0F1c2Zyb09YcFlLZ3QwZStqd3dBRDlDeDlWQytmSnFibzZaeGYvRDhvR2VDSGdwMThYVEdlMmI3WDN1RldBb2IvT08zaDRYM1ByRGRKNy9HaGdjRXd3REVjUUlySllFVC94NkdQejVLQTB2dm9pcHhzSWxRYzhqRWk2UjllRjVGZS9mWW9yZmZaeHVBaGFoZ2xoN3NUV3IwaFgvdWdQbzdiK3lxLzIzLzdMUjJTZ3E0ZnY5Q1QxOXpRb2dDWi9peVg4OWZiTHZ1ZCt4OWViYmFHbWRPWFpvaGV2VGU5NzZRVko5TWVPcGxPRWNWTzJQOFFMQWxYVCsrcFBmNUNpcVhibXk4V0xoaVF1aUFxeXBQR1ZWN1h0NkFrZURrbHp0Sk1hTW45Y2F5bld6dVJKbzRCM25OcXlXZFovWjU3U2FCNWtvVlBuMnN6SnN2V245N3R6ZWsydUg0RmVxcW81ZVVJMjMzdVB2VitIZ3hERjRVL0JvSENjcHRsZ0xnSGlaVUNzREFxOXNaN2NYQ2VWczY2Z3M1Z1JxVUZxS0FkK0hMdDJ0eDdRVnNaYnFqQU9DelJsV3VtaktDRTlDTUVKdGx1M1ZqVzNYT2UrMUREdm9WQndLclJ3cnB6ZXZZZnR4Z3hPWUVGdW9hREFjcVIwUXJnL0tKMk5EVko3MDAxVURnMVJGYzZGMWZSMDJmb1RLTnVqOEpITEc1ZE9BeHRxcFN6RFBrTHdIbzI1dnlSckV0OUU2ZTFvWjB2MG94Tm93Y3FXZ0lNNTVhWjFWRFRxZEE3djZaSDZ4NWZ5QVFtbUZ0QUZIVUR4MkVvZTBPMmxkN0JVWWR3OCszelF0dm9qaGpsc3ZialBWb1ZqTHNJeDU2NW5udEs5WlMvYm1RRDhZYWdweHBjcEJQN0ZGQWFCYUEzYldFT2ZXU0ZjdUtJVHFCTnZBQmpjaGhzWGtDWThLMmVvMUcxalNmcGtxWDkwYWZoY0NSREdCd3JGVi9mZ1lpbk5oSUdvQVd0L0x2UjBqdzJsTjY3d2h5Z2pnTFpocytHNXlnS25abmhkaTlGQ282SXRKTldvc0RLZmU0VjdGU3RaSnVqcisxc2V3VGV1N0lGangyVHJnL2N4SENGTWhwQ0VwTjV6Y3RzbTF4SmcxazhJVkp1bHMrVHFCbnZQOEdpVEZXeUQrdWd4S3NCeTlJdFNtTThWS0JiOWExMzlnYTY4Y1NhTk4wWEFwenRqVDU4b2pXL2pmVHYwY1NhaVA3N2ZxWDE3cEdUcUZIb2NEQVRLUUJtZjl0VGV1SkFuZzZsNEh2QjczTWFuSmh0Q2huVExWbnZQOS9sOEcvTGpPS0JSeDRKM3QzNndDajNET0FFWDhTallSWUJ2WE5rWStFaEpzVlRNdVl3ZXd6Q3BSUFBoUk5ZVTJmU0QyOXdCaTUySmV3S1JPUkU3Y1BPN0tuamJrcC9LNXNVL2tKT2JOa21DNStxUk1xeFhkTWdUejFrd1dmS251Nm1GejhkeHRNcDlMZm0wczNSODZOQzVjenRhS2hoK3cyT0NySC9rZjZSMEdwUnRMMktZMGpPa0tEOUxkdjd2WTlvNDlSQnJlQlZZTVB4NEJnTU1UZSsrdzRkSXdJMHhPRTFBNlRvVnJyOTJucmFBWEp4eUEzZ21rK0Uvb215TXUvTVhlQTBZMnhKZHRmSzB5bkRpcXhMTVAwWmJGTVpwNVhHYW5mQU9ybDNMcjBzeHAyTDF2UDFuRDhuQlQxZkxxVDI3K0g2YldiZGpYanR6RWVpUTBFdjFENS9qSEtzcGwyMzMvMGdWcGlIUm5mYkJHQkY5c0JMZit1TWYydGNoQU5EaFBCelEyZHFvNDArZ29xa0VEYlA0TEFxS3FKaVZMNmRoSkJ6VDBaRUNzRGwrTklXSWdQS1pMcW42em53dXpyREk5ZXNEYmc4enArbzArYUcxamZGc1plY0FNZmptbGUwWTZEdllLdVZYWFU2UHJuUjdXUkFOdkhpMGQrWUFWcGNHSmxnVUxMa3I2VzF2dGE5TFZDRUlaVkFTM2huSGUrMGJicjVldHZ6c1FXbDQvamxwK2ZBRE9WSlZLYWQyYkpPdXZWL1JFTERxYnYvM1dtbDYvVlhaOXRBRC9FU29TTmNONXBIMlNCTEtLOExMZndVNTB2YkYyaUF1bWlDTFZyUHI1MHNwZEg4azdQdGpqNDF2d3RtVVhVYW5iUFlqbUxHenYxWTJ2UHF5dmFDWm0yTlJNYmFReEpNeXRQUjlReiszUm9uRE42NXNzMUVMd2ZpSXJ5UlRWNWRLWkpIaWdySzVEMWRoYlgvZ3h5UVlqelc5VUllVHUrT1JwVW9IckZzWFEzbmFuNDlNM1pTZ2dzYlJKSERpYzZMSytUUDVFaUkrcUZ0LzdkWGNycFROTGJBK09pWWVoS0NmUDdpdzEzbHRhL1BWYjU2V3hFQmZUQU1SUGQzTkRWSTFiMVlrRTdkNFFoa1BXNDdWNGp0djEzaFU0TWJ3QXpsQU1kSGJ4ZWNLa0pzL1lNRjRLRmNVekpDMlQ2TVBKT0xyaEJnYXduOHNqUHZGdzZhYmIrVERCanNzd0ZlTWJ0RXhKMWM2UHZVUDkrTWVvZjIxNzRuNm5WSjF6VXhWemxRcHhHbVNDNTNlcTNnczYzRDVpSUU2VEIwbyszdEkvSElTQzBhdXZvMFdmcjZyN1hjc2VWREhNNFBEcnduTTB6UElzd004TCtjQ0UrTndmSXNJTmJmZ21iVzFzeTV4UHM0RDFpR002UzZ0M25mWDh0NFhuek5IVVFNMVhoeXZLZ2RzOC9BTld6aGI4RWdDTW9QL2dMSUJSalhHN3R5MWsxc3hlSmJmUnRERHRhNXU4VDNTZi94NGFFdm1WZEZlNlBoa3RmN0p4NlJLdHgzbCtYakwxRHdxbml4YU9BVzdPbHZZb0J3SkNVTERVeTkvSDY5TTdmblRiemdxQnVQNFJnUnp4S1llSFIvUDRPSE5mTTg3R0pyaVNwc2tiZnplM0swN2ZOOFJ3SWZxVUhaZzRSaGdDa3gwbm1FSXAzT293WE50Z2NnRStxK2VKZTNsUld6dGNaMExWTmx1TUNhOC9RSEF2OWxRWlUrZGFKK1hJbHhvd3J2ZFRXKzl5UllSSVNPQktjd3pndkxlUHp6RGhSbU9Bd3N6SnZQUUh3OE5NSWMyTEgvSnJOd0lJZURhSDlSZzRONldBN0w3bGIvSWxydnZWRytmelpWcHVlTEJXeWVJR3Q0SW9IZ3ZFSHF2S2dtR3hwY25NTmRyZmMzMTgyWDcwaVc2QmR5aXBDcHlNamFjTC9QeUErK3RsRUs4RUpFeGhlKy9GV1pNSkEvRmFkL1NxZUlhOVM1YkdZTkg1dWc2RG1Ba0Rjbit2end2LzU3d0xYN3VoRStBa1NpM3lmOGxPeC85dWZUcGxqVEFPUVkvNi8rZ0dRenFvcWFlcjdFZS9QQnZtajVnd3A3MHpPNTZJaktHUm9aa3l6WG9QdEV1VFc4dTQ5T3g1bVd2Uyt1eTEvVDZEV25XeGRQaHp6K1RvVzdkUjJzL1AvK2dIOGVMNDFIbEQzU2VraE1iYW5RLy9KYnNmdXBKdnN0V2M5TkNidlB3QWtDaENnR0N3SXY1NjNRcmhVZUYxZGRjSmJWMzNTRTdmdlc0SEZ6MWxxNmNkeW8rVzFNQXNaV2dLS1BiVkthMWlVRTVXbHFpTkw3TS8yM1N2UHhWT2ZEbTYzdzFHZ3VvSXpXVlZFaVNYR0xGc1lGUjBkM2VJdnRmZVVubDlvYlM4RHJIMzdmeVZXbDg4MlZwWGZPeGJVTVZ6ajVPTVRCbDZ3K0lqQktFSEZlU0RaWnNxOUg5a1lBTFE3WlZERjRZbWlWdGl5d3p3SVZQNXhnbmhEajlzVnRxRnJxSU9kUGVKbDM3R2xXQlg4cnhMWFY4bWZERWhtcExXb2IzZHU3WkxmMkgyalFzZGtlT3JCQlhVbFRuQ2dxeFloZ3pBbC8ydEhvekhUc0EzUURPRFRDRVhrUVIwblFVNktLUTR6U2REZEdjemNZR1hwaXNjZFUwQWlzUy9LQ3BRa1NjSnZVU0U2NGpISFZPc2pheWxWREVWVkNFMTQ2N0JIaTZBajJ4ZTM0OGdxdVBicVBlalQrTXQyaXJCV00wT3RBV0hPQWhXS0FkbWJ2bmhjMkhaQTZ2M1JzN0RJbnVERUNMSDVNbGoxd2o0SUNuM3ptUEpuODNEdnluZCs3K01BREJVSUsvSDJNZ05IWjFGd0syTlZ3QmlEUGUxKzVIRFBqN3JvM0Q0ZThHM2JzYUNqL1dKb1F4N2U3YkFrSTdWMmZGaUE2V2s0TmF5QUhST0JqQnh2SUozU0tqQWM0NE4yTUFQNEFhRThaQW1YaUhJMGU5Rzk5dTZmaHg1aFc0UUlzYUFJeFFRS2p6QmVab3IvZGpBcmtRY0R1Z0RXMFVONVlud21mRGlMSkdKa0NqSlJyTTNkSStwcFZnRlA0R0lKUnhEMjNqM205MUFGTGorcmdzVm9qYUFZeEdHNDlsKzR2YU94TDh0YThlSzhURGRaeFh3Mi9Ydy9uaU5mc2xRNWl6WFcrRnFCT0F6TGt5d0s2VDI0d0lTYmc5UGhDa1dSeDVERml0UCtkc01xd2lmaGxtSTVlZlpVaHhpTjlDV1ZPZ2pwblJhSkVDNVVpQUhpMWxvWTJ0aFNuR29mRFpHRUVwaXZHUWhCTVh3d2RSV3NBRDZVcTZKL0ovVVZiV09oTktnQXdBQUFBQVNVVk9SSzVDWUlJPSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIkZJRE9fMl8wIl0sImV4dGVuc2lvbnMiOlsiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiN2UzZjNkMzAzNTU3NDQ0MmJkYWUxMzkzMTIxNzhiMzkiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjp0cnVlLCJ1cCI6dHJ1ZX0sIm1heE1zZ1NpemUiOjEyMDAsInBpblV2QXV0aFByb3RvY29scyI6WzFdfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjItMTAtMDciLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwidXJsIjoiaHR0cHM6Ly93d3cucnNhLmNvbSIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiRFMxMDAiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDIyMTAwNzAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIyLTEwLTA3IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjF9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjItMTAtMDcifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyI5OWI5MDNiMDBlZjJiMzc3ODg5ZmJkMmUyYjEyZjU2ZjY2ZTgzMzE2Il0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjk5YjkwM2IwMGVmMmIzNzc4ODlmYmQyZTJiMTJmNTZmNjZlODMzMTYiXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkZlaXRpYW4gQmlvUGFzcyBGSURPMiBQcm8gQXV0aGVudGljYXRvciJ9LCJkZXNjcmlwdGlvbiI6IkZlaXRpYW4gQmlvUGFzcyBGSURPMiBQcm8gQXV0aGVudGljYXRvciIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjJ9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCIsInJlbW90ZV9oYW5kbGUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQjJEQ0NBWDZnQXdJQkFnSVFCVG1rM1p3aWxGWGpzWnl3SERuTWdEQUtCZ2dxaGtqT1BRUURBakJMTVFzd0NRWURWUVFHRXdKRFRqRWRNQnNHQTFVRUNnd1VSbVZwZEdsaGJpQlVaV05vYm05c2IyZHBaWE14SFRBYkJnTlZCQU1NRkVabGFYUnBZVzRnUmtsRVR5QlNiMjkwSUVOQk1DQVhEVEl5TURZd09EQXdNREF3TUZvWUR6SXdOVEl3TmpBM01qTTFPVFU1V2pCTE1Rc3dDUVlEVlFRR0V3SkRUakVkTUJzR0ExVUVDZ3dVUm1WcGRHbGhiaUJVWldOb2JtOXNiMmRwWlhNeEhUQWJCZ05WQkFNTUZFWmxhWFJwWVc0Z1JrbEVUeUJTYjI5MElFTkJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVuZkFLYmp2TVgxRXkxYjZrK1dRUWROVk10OUpnR1d5SjNQdk00QlNLNVhxVGZvKyswb0FqLzR0bnd5SUwwSEZCUjlTdCtrdGpxU1hEZmppWEF1cnM4Nk5DTUVBd0hRWURWUjBPQkJZRUZOR2htRTJCZjhPNWEvWUhaNzFRRXY2UVJmRlVNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdEZ1lEVlIwUEFRSC9CQVFEQWdFR01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lCeVJ6NE9BbFJaOUh6OUtWN2cyUU50QzBDOEp4SC94TEpZOEZaRW10SjNzQWlFQXNyZVQwK2VOa05jVWpJOWg1T1BDb0g2Tm1zT2tndkVBQkpackYwN0FEa1k9IiwiTUlJQjJUQ0NBWDZnQXdJQkFnSVFGUU5LVys3emJnLzdkK2xUeXJJV3dEQUtCZ2dxaGtqT1BRUURBakJMTVFzd0NRWURWUVFHRXdKVlV6RWRNQnNHQTFVRUNnd1VSbVZwZEdsaGJpQlVaV05vYm05c2IyZHBaWE14SFRBYkJnTlZCQU1NRkVabGFYUnBZVzRnUmtsRVR5QlNiMjkwSUVOQk1DQVhEVEl5TURZd09EQXdNREF3TUZvWUR6SXdOVEl3TmpBM01qTTFPVFU1V2pCTE1Rc3dDUVlEVlFRR0V3SlZVekVkTUJzR0ExVUVDZ3dVUm1WcGRHbGhiaUJVWldOb2JtOXNiMmRwWlhNeEhUQWJCZ05WQkFNTUZFWmxhWFJwWVc0Z1JrbEVUeUJTYjI5MElFTkJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVzRllFRWhpSnVxcW5NZ1FqU2lpdkJqVjdER0NUZjRYQkJIL0I3dXZac0t4WFNoRjBMOHVESVNXVXZjRXhpeFJzNmdCM29sZFNyam94Nkw4VDk0Tk96cU5DTUVBd0hRWURWUjBPQkJZRUZFdTloeVlSclJ5Snp3Ull2bkRTQ0l4ckZpTzNNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdEZ1lEVlIwUEFRSC9CQVFEQWdFR01Bb0dDQ3FHU000OUJBTUNBMGtBTUVZQ0lRQ0IwTkZRU04wejRsV3oveWMzNmV3clRDenR0Sy9xRnZsYVBPS2grVDFvNndJaEFQMG9LS0ErY2ljc0R5M1kzbitWbFA4ZUIzUEJ6TWtodlcvOUlTWEN3K1ZCIiwiTUlJQjJEQ0NBWCtnQXdJQkFnSVJBTXM4WVhWQm9CTnVYVWpxZkNvWDd5NHdDZ1lJS29aSXpqMEVBd0l3U3pFTE1Ba0dBMVVFQmhNQ1ZWTXhIVEFiQmdOVkJBb01GRVpsYVhScFlXNGdWR1ZqYUc1dmJHOW5hV1Z6TVIwd0d3WURWUVFEREJSR1pXbDBhV0Z1SUVaSlJFOGdSVUVnVW05dmREQWdGdzB5TXpBeE1ERXdNREF3TURCYUdBOHlNRFV5TVRJek1USXpOVGsxT1Zvd1N6RUxNQWtHQTFVRUJoTUNWVk14SFRBYkJnTlZCQW9NRkVabGFYUnBZVzRnVkdWamFHNXZiRzluYVdWek1SMHdHd1lEVlFRRERCUkdaV2wwYVdGdUlFWkpSRThnUlVFZ1VtOXZkREJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCRDJMSEhBUXFZYmRSMVdabHVlcnRNMzByV2hvcllhdldtTVZhNG5kWDlQWnd1UkVwTFE0bTFuRWxxUUtNblJFOC80QytScXdpYXYrbXBJNGt4ZDVlNXVqUWpCQU1CMEdBMVVkRGdRV0JCUzNaWmp5R2xoWjk5TjF2TG9UUFhWVWE0WkVZREFQQmdOVkhSTUJBZjhFQlRBREFRSC9NQTRHQTFVZER3RUIvd1FFQXdJQkJqQUtCZ2dxaGtqT1BRUURBZ05IQURCRUFpQW9EK1I2a29sSVdhTkp6NGh6MDNEM2dlczNHYk1CakFXcGtPVWc5YXlGZ3dJZ2JFdzdBWVN5azY4T3Z4Z1hlemduZFRSVEV1U1dUK2ZkUm5MYUJOc2FUdzA9Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUZBQUFBQVVDQU1BQUFBdEJrcmxBQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQkhacFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR3L2VIQmhZMnRsZENCaVpXZHBiajBpNzd1L0lpQnBaRDBpVnpWTk1FMXdRMlZvYVVoNmNtVlRlazVVWTNwcll6bGtJajgrSUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWtGa2IySmxJRmhOVUNCRGIzSmxJRFV1Tmkxak1ERTBJRGM1TGpFMU5qYzVOeXdnTWpBeE5DOHdPQzh5TUMwd09UbzFNem93TWlBZ0lDQWdJQ0FnSWo0Z1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNGdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlnZUcxc2JuTTZlRzF3UFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIaHRiRzV6T25Cb2IzUnZjMmh2Y0QwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOXdhRzkwYjNOb2IzQXZNUzR3THlJZ2VHMXNibk02ZUcxd1RVMDlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl0YlM4aUlIaHRiRzV6T25OMFVtVm1QU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2YzFSNWNHVXZVbVZ6YjNWeVkyVlNaV1lqSWlCNGJYQTZRM0psWVhSdmNsUnZiMnc5SWtGa2IySmxJRkJvYjNSdmMyaHZjQ0JEUXlBeU1ERTBJQ2hOWVdOcGJuUnZjMmdwSWlCNGJYQTZRM0psWVhSbFJHRjBaVDBpTWpBeE5pMHhNaTB6TUZReE5Eb3pNem93T0Nzd09Eb3dNQ0lnZUcxd09rMXZaR2xtZVVSaGRHVTlJakl3TVRZdE1USXRNekJVTURjNk16RTZOVGtyTURnNk1EQWlJSGh0Y0RwTlpYUmhaR0YwWVVSaGRHVTlJakl3TVRZdE1USXRNekJVTURjNk16RTZOVGtyTURnNk1EQWlJR1JqT21admNtMWhkRDBpYVcxaFoyVXZjRzVuSWlCd2FHOTBiM05vYjNBNlNHbHpkRzl5ZVQwaU1qQXhOaTB4TWkwek1GUXhOVG96TURveU55c3dPRG93TUNZamVEazc1cGFINUx1MklPYWNxdWFnaCttaW1DMHhJT1czc3VhSmsrVzhnQ1lqZUVFN0lpQjRiWEJOVFRwSmJuTjBZVzVqWlVsRVBTSjRiWEF1YVdsa09qSkZOekZDUmtaRFF6WTNSakV4UlRZNU56aEVRVGxEUWtJMk5EWXpSamt3SWlCNGJYQk5UVHBFYjJOMWJXVnVkRWxFUFNKNGJYQXVaR2xrT2pKRk56RkNSa1pFUXpZM1JqRXhSVFk1TnpoRVFUbERRa0kyTkRZelJqa3dJajRnUEhodGNFMU5Pa1JsY21sMlpXUkdjbTl0SUhOMFVtVm1PbWx1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2TWtVM01VSkdSa0ZETmpkR01URkZOamszT0VSQk9VTkNRalkwTmpOR09UQWlJSE4wVW1WbU9tUnZZM1Z0Wlc1MFNVUTlJbmh0Y0M1a2FXUTZNa1UzTVVKR1JrSkROamRHTVRGRk5qazNPRVJCT1VOQ1FqWTBOak5HT1RBaUx6NGdQQzl5WkdZNlJHVnpZM0pwY0hScGIyNCtJRHd2Y21SbU9sSkVSajRnUEM5NE9uaHRjRzFsZEdFK0lEdy9lSEJoWTJ0bGRDQmxibVE5SW5JaVB6NDc3SlhGQUFBQVlGQk1WRVgvLy84RVZxSVhaYXZHMk9vcWNMRzJ6T09rd3QwQlNKdHFsY1hWNHUrYXV0bFdoYnprN1BVQU1ZOUhjcktqdE5icThmZUFsOGFCb3N6ejl2cGRqc0dHcXRGM244dVRzTlNacGM2SnNOVDUrdjB4WUtudThQZmY1L0w0OGZnL2ZyaWN6SmdZQUFBREFFbEVRVlI0MmtSVUNaYkRJQWpGWFpPWTFUYXROYzM5Ynprc1NZYzNyNE1FNGZNQkFhRDZ6bDh5LzlUT2dldDhkNWpmTjc4YndNL2REQ1JwUjUyMXpYZm9qSEowNUlJeWhCQVVTVkFPTmRHekJZdDJmN0tGcmZrSmFBa0hoOUZaaGNEWEhSa1RLbzlNTGloR2FhdkltblYzcXlFWDBFcHJnei80RHdVRDdrQ0hSbmQ4UUZONDNHbzRVVm1ERGd6YTR3MjdvaXpkQTIrY0srdXVVcGpqbzIreHdjLzQyVzUweDVMR1llREJzUjBIVkl4NXg4aUY2MENibGJURUVrRnIyN2JOREJVVlNxMU9LVlBiRTYyYjNFSDhGcUJnNU9PT0V1YzJ0OFpKaXFNT3VHcCtjS2pnN3dWR2Nlb3pxTjRweGdWUFFrakZZZ2JWSktEVWhEQ2pZcmF3UDVxNEVUZ0M5ZklNUkh0aXRwUWNDdkpPRUxjYk1zUWduY2lSa2xqcHlRanZHNDRqcUJVRVRGaUJpMVBFSXlla096c1crVHk1Y0xIb3M1UitkTVMxTHRTU3hmM2dRSGN6UjJDSTRnTU5wVzRJUkExUU1hNnRKNCtDNnVIdUdFOG1OREl5RnFnL09QL01NVXVlUzZJcThTOTBkQWVCSlNFeS9xS2tLK0JOd3o4Y1lZNGpiNUo2dTRpV0NJMkIxWjU2TFc1a0VjNGhrZE1wc3ZVQzU1ODVTWDBRdWJjZ05xeWZnREZFY1R0KzQwLzBTNU54MHdhQ3czT0trY09iQTVJbjBBWXAwMXBqancybjYyNlVEanRId2EyOGlIdVRLcXRydityZVc0MU5aNmlHbHI3dXVMSkNma0Z0Y3RjRzA0c2dtMWVOUytaYURucGFURXJHb3lYNUpLMmlNejh4czBuT3dXR2NQRE40OXFhQ2Q0YnpKb3pEWm0vYUJLK0Vvekx3K1hoTkJpWXdIZjBzaU91MVhQa0cvekt3dnFZS2NmU3dERWNIL29VZTA3ZXMvV1E4ckl5ZzJET1hqOHRqa1pkdURCL2I4aHpEbGxNTU9DUzVCRW5kNTM0Zjh0aTNVWmM0a01zM3hMeWFmTVNzSmhkRzhYUHFqTms1dEFnTzI1ZmVLQ2huVmREai9KMEZNa09zVS94TUJ2MHdGaFllRUdmVkgxM2Z1RFUweURGTGE0ZmM3Um5XSEJmdVRGVjJ0RW1Od2FkYzdhYzNVWTJqZkJsN0hUMzZmZTM0aVFPNW1OQ0ZGQlcwN0tqUGdxaE9MVTAxdlo4UHVlWjJKQ2xGWk44amtVczY5dWthOWVQcDYrRWZMNEFGNStOeXdTYmlySHRjQjhNbC9na3dBRWprSzY0S2pIUGVBQUFBQUVsRlRrU3VRbUNDIn0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMDktMjYiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJGZWl0aWFuIEJpb1Bhc3MgRklETzIgUHJvIEF1dGhlbnRpY2F0b3IiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlUyRjEwMDAyMDI0MDkyNjAwMiIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTA5LTI2IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjF9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjQtMTEtMjAifSx7ImFhZ3VpZCI6IjczYmIwY2Q0LWU1MDItNDliOC05YzZmLWI1OTQ0NWJmNzIwYiIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiNzNiYjBjZDQtZTUwMi00OWI4LTljNmYtYjU5NDQ1YmY3MjBiIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ill1YmlLZXkgNSBGSVBTIFNlcmllcyJ9LCJkZXNjcmlwdGlvbiI6Ill1YmlLZXkgNSBGSVBTIFNlcmllcyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjg3MDYsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyIsImVkMjU1MTlfZWRkc2Ffc2hhNTEyX3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NiwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NiwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURIakNDQWdhZ0F3SUJBZ0lFRzBCVDl6QU5CZ2txaGtpRzl3MEJBUXNGQURBdU1Td3dLZ1lEVlFRREV5TlpkV0pwWTI4Z1ZUSkdJRkp2YjNRZ1EwRWdVMlZ5YVdGc0lEUTFOekl3TURZek1UQWdGdzB4TkRBNE1ERXdNREF3TURCYUdBOHlNRFV3TURrd05EQXdNREF3TUZvd0xqRXNNQ29HQTFVRUF4TWpXWFZpYVdOdklGVXlSaUJTYjI5MElFTkJJRk5sY21saGJDQTBOVGN5TURBMk16RXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFDL2p3WXVoQlZscWFpWVdFTXNyV0Zpc2dKK1B0TTkxZVNycEk0VEs3VTUzbXdDSWF3U0RIeTh2VW1rNU4yS0FqOWFidlQ5TlA1U01TMWhRaTN1c3hvWUdvblhRZ2ZPNlpYeVVBOWErS0FrcWRGbkJubHl1Z1NlQ09lcDhFZFpGZnNhUkZ0TWprd3o1R2N6MlB5NHZJWXZDZE1IUHR3YXowYlZ1em5ldWVJRXo2VG5RakU2M1JkdDJ6YnduZWJ3VEc1WnliZVdTd2J6eStCSjM0WkhjVWhQQVk4OXlKUVh1RTBJek1aRmNFQmJQTlJiV0VDUktnanEvL3FUOW5tRE9GVmxTUkN0MndpcVBTemx1d24rditzdVFFQnNValRHTUVkMjV0S1hYVGtOVzIxd0lXYnhlU3lVb1RYd0x2R1M2eGx3UVNnTnBrMnFYWXdmOGlYZzdWV1pBZ01CQUFHalFqQkFNQjBHQTFVZERnUVdCQlFnSXZ6MGJOR0poamdwVG9rc3lLcFA5eHY5b0RBUEJnTlZIUk1FQ0RBR0FRSC9BZ0VBTUE0R0ExVWREd0VCL3dRRUF3SUJCakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBanZqdU9NRFNhK0pYRkNMeUJLc3ljWHRCVlpzSjRVZTNMYmFFc1BZNE1ZTi9oSVE1Wk01cDdFamZjbk1HNEN0WWtOc2ZOSGMwQWhCTGRxNDVyblQ4N3EvNk8zdlVFdE5NYWZiaFU2a3RoWDdZKzlYRk45TnBtWXhyK2VrVlk1eE94aThoOUpESWdvTVA0VkIxdVMwYXVuTDFJR3FyTm9vTDltbUZuTDJrTFZWZWU2L1ZSNkM1K0tTVENNQ1dwcE11SklaSUkydjlvNGRrb1o4WTdRUmpRbExmWXpkM3FHdEtidzd4YUYxVXNHLzV4VWIvQnR3YjJYMmc0SW5waUIveXQvM0NwUVhwaVdYL0s0bUJ2VUtpR24wNVpzcWVZMWd4NGcweExCcWNVOXBzbXlQeksrVnNndzJqZVJRNUpsS0R5cUUwaGViZkMxdHZGdTBDQ3JKRmN3PT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZkNBWUFBQUNHVnMrTUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFIWVlBQUIyR0FWMmlFNEVBQUFiTlNVUkJWRmhIcFZkN1ROVjFGRC8zZDU5d2VRU0lnUzlBUUFYY0ZMQVFaaTlmcGVWejF0WS9XVFpyNVd4cGM3VzVrbkxhNWpJM1o4NXNyUzJuTTJzanRXd1pTN0lVSDRINHhDbkVReDREQVpGNzRWN3VzODg1djkvbEluQnZWSi9CNFB2OW51LzVudS81bnZNNTU2ZnpBL1F2MEhiL0lyWDNWRktQbzQ1Y25tNGluVUlXWXdMRlJtWlFVdXdqRkcvTjFpUkhoMUVaME5SVlJ1ZHF0MUJkKzJuU0t5Uy9PaHlzMCtsazNlLzNrUTlxdkQ0WlV0YTRWVlNVdVkwZWlweWlUaEFmb2NvT1JWZ0R1dXczcUtSaUFkM3JiY0V0alRqWUlvZjZXYUhzQ216VlBXQ014K2NnaDh0THFXTUthTVdzVWpMcW8yUnRKSVEwb096bWVycFF1NGVzWmdzT05rR3hIN2Qwa2R2VFQxN3M0T01VN1ZJOFpoamdHYU0rQXE5aUVOdThQaWYxdWR6MDdNd3ZLV2Y4R2xWb0NFWTA0UEM1V2RUYVhZRmJSOHZOdkw1KzNLZ2ZiNXhOTXlhOVJhbUppeW5hTWxHVFZ0RmxyNmJhOXUrcHFuRVg0dU11UlJnalNZRWhyTjd1dEZGZTZscWFsN05ma3c1aW1BR0h5blBwYms4Vm1ZMHhzdG5wdGxGQ1ZDWXR6VHVCTjgzUXBNTGpUdGV2ZFB6U1VuSjdlOG1ranhaMzlmWGJLRGZsZFpxYnZVK1RVZ0duQlZGNmZRMmlQSGc0VzE2VVdVd3Z6YmsxNnNNWkUrUG4wcHZ6N0pTZXVBeWVzOGxjcENtYUt1by9wK3FXcjJVY3dJQUhXcnZQMFlFemhYQXRMQWJzc0hocDdpR2FtdnlpalA4cnlxclhVV1g5WG9vd3h5QXVmTkJycDQzUE9CRlhabGtmOE1EUmlxY3B5b3dBd3B1ejJ4K2ZXdnovRHRkZTlzbXN6eWd0Y1I2QzF3YmR6Qmw2T2xxNVdOWVk0b0dhdGhKTXJrVEV4MGpBUlNIQVZzKzVyWWtRTlhiK1FnZlBMc1E2Z1h5SW5zcmVRZm1wbTdSVkZZZkw4Nm4xZmlVT2tZdlNoa1VQeHZidWt6b3k2SzFpaE0xaG8zWHpXNkV2U2ZYQStkcGlXR2FXZCtkb1h6THptR3dLWUZMQ0FzUkFsUEJBaE1sQ0ZYVTd0QlVWUHI4SGdWY0pIV3ErRjAwcGxyK0RNVGRyUDR6dnhZMTFrTk1oeFQrU2VUR2crZDRWNUxRSml0eVVHSk5COFZGWnNqZ1lCWk0vSUkvWENUa2owcXlET3BGMkFWUTE3Q0lqVXAvRG5UMVVrTDVGNWdkaitzUzF3ZzFnRTNnaWdtNjBmQ1h6U25QWGJ5QVBiSVh2K0lEcEUxNlRoYUhJUzlza3lobG1NRTVGM2NmcUFLaHEyQzBFNVBIMWdZYVhhTFBEa1pHMEhESk9uS1dIcDUxSTB6NVNPdXg4ZTFXQXVaemRIUXJUa3A4VG1qWG9JK2xhMHdHWnN6dWJxYk8zaWZRNkEvVzd2VlNZc1YzbVIwSkt3a0tjNFdIaUJrbVI4STNDQ2dJODdvT0w0cXpUNVArUlVKQmVqRU9nQVBLOGhZUHphdE0rZUlUcDJJTzl5VFFtZXJvbVBSeHgxcXhBY3NpbGUvdWJTZUViY1dRR1lFQ2doY0xZMkh5S2pvZ2pIMjVoTXBqcFV2MU91Z2xpNGVoMmVSdzBPMzJiSmpreXVDZ056ZzB2emxZTVNpU3MwdW9vNE1HN2hNT2pDRWFYMXlGRTBuU3ZqQnp1VG5FcEs4Nlo4SW9xRkFJdWJ3OGtnOUFyRWFSRVdTWkkrakg0WGJwNmc5RTlFbkpUM29hUnpETitNVUpCUURIbjU2YThvVW1FQnVzT3hCcy9ONSt0SkViUGtBRkRqOFVHdk9zL0lXdmNTZ2xHQmh2UzcvRlRZZnBXR1lkRFk4ZlBBeFdTQTM1c1RDNHA0K0xtNEFhcUlvUGVRdGZ1Zks2SmgwWmh4bGJzVVhPU21YTmlmRDVaVEFreURvZmJiY2NseG5BOFdOQXF4Q2JSTnlraFh4UXBhRHc2N2ZYVVlic2lHMEtodHYyb2VJdmg4cmhRTVlPY0VBcVhHL2VJK3puZ09jNXl4cjhxODJJQU0xYy9GTEZPcGxxdTVlRlFYck1aekdjVkNqWWJMV0c1STRCVDFldVJybGJ4dE5PdE1pdERERWhMWElJeW5BQXZ1T0VXRTNYM05kQWZ0OTRWZ2FHNDJYSVF0MFpYNlBlQ0UvcVFGZTlySzZIeDdZVTUwS3ZIN2ZXNGZTK3E3S0tCSnhzZ2dCWDVwU0FHaDFqSXJWaDV6UTZ3M1JmYWFoQlhtL2FDYkNaVGpDVUZVVHlXWnFXOXA2Mk1qSlBYVnFPclBnTU80TnY3NEdrZitvd2Z0TlZCRFFuakZKcUhTdzE3cFh2aFdXNUtacWUvUTQ5Ti9VU1RDQVZXb1FYRklIQkhYWGUzRlByVURzdUdEbXRGL2hIS1RIcGVreGhpQU9QSStTSnE2UzZIRjRJOVlXemtCSlRvNDZpVU16V3A4UGlyL1JpZHVMeEtZc1Nrc1Y4dkxsT1F2aEdYMllsUjBPQmhCakMrdS9nRWN2WTBBcEs3WWs0MU54alBTUW5XRkhURjY2VXJqZ2V2QjhDdTVhK2wydllTUlB0dVZEbzczaGhkTVNIblVYN3RUanNWWkd4QWwvV3B0aU9JRVExZ25MMjltWDYvdFIxdG1sa1lqOFc0WCtDU2pXY1VER1kxTnBTL0M3aFNLcWlNTE0vbDJRbVNXWjczRGR6K2dpbzhCQ0VOWVBRNDZxbmt6d1hVYnF2Qmt4alVRc1dmWkZnYnVvM3JBZit3TjdqT085MCt5bng0UGkzTCswbllMMVNjaERVZ0FQNGdQVi83SWQxcSsxSFNobXVHa0lxV1JQZ3l4TUZxUDhIZmpUbmpYd1k1YlFmYkpjdDZPSXpLZ01Ib3RGL0hlMWVnc2F4SFNxRzZ3ZmRtUTV4OE55VEZGcUJjcDJpU293SFIzeWs1KzM2aEY3dlhBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMV9QUkUiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6IjczYmIwY2Q0ZTUwMjQ5Yjg5YzZmYjU5NDQ1YmY3MjBiIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWV9LCJtYXhNc2dTaXplIjoxMjAwLCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjgsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4LCJ0cmFuc3BvcnRzIjpbInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi04fV0sIm1pblBJTkxlbmd0aCI6NiwiZmlybXdhcmVWZXJzaW9uIjozMjg3MDYsImNlcnRpZmljYXRpb25zIjp7IkZJUFMtQ01WUC0yIjoyLCJGSVBTLUNNVlAtMi1QSFkiOjN9fX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjMtMDMtMjgiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI4NzA2LCJ1cmwiOiJodHRwczovL3d3dy55dWJpY28uY29tL3Byb2R1Y3RzLyIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWXViaUtleSA1IEZJUFMgU2VyaWVzIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyMzAzMjgwMDQiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMyIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4zIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIxLTAyLTE4IiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZSyA1IEZJUFMiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDIxMDExODAwNCIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4zLjciLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMyJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMS0wMi0xOCJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjMtMDMtMjkifSx7ImFhZ3VpZCI6IjM5NTg5MDk5LTlhNzUtNDlmYy1hZmFhLTgwMWNhMjExYzYyYSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiMzk1ODkwOTktOWE3NS00OWZjLWFmYWEtODAxY2EyMTFjNjJhIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkZlaXRpYW4gZVBhc3MgRklETy1ORkMgKEVudGVycHJpc2UgUHJvZmlsZSkgKENUQVAyLjEsIENUQVAyLjAsICJ9LCJkZXNjcmlwdGlvbiI6IkZlaXRpYW4gZVBhc3MgRklETy1ORkMgKEVudGVycHJpc2UgUHJvZmlsZSkgKENUQVAyLjEsIENUQVAyLjAsIFUyRikiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9LHsibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDWHpDQ0FjR2dBd0lCQWdJUVl6L1dxdVBHd2poeDlrWkd3OEF6dFRBS0JnZ3Foa2pPUFFRREJEQkxNUXN3Q1FZRFZRUUdFd0pWVXpFZE1Cc0dBMVVFQ2d3VVJtVnBkR2xoYmlCVVpXTm9ibTlzYjJkcFpYTXhIVEFiQmdOVkJBTU1GRVpGU1ZSSlFVNGdSa2xFVHlCRlFTQlNiMjkwTUNBWERUSTFNREV3TVRBd01EQXdNRm9ZRHpJeE1qUXhNak14TWpNMU9UVTVXakJMTVFzd0NRWURWUVFHRXdKVlV6RWRNQnNHQTFVRUNnd1VSbVZwZEdsaGJpQlVaV05vYm05c2IyZHBaWE14SFRBYkJnTlZCQU1NRkVaRlNWUkpRVTRnUmtsRVR5QkZRU0JTYjI5ME1JR2JNQkFHQnlxR1NNNDlBZ0VHQlN1QkJBQWpBNEdHQUFRQXdtL0hiTitpY25HbGxQaytqRTZXYUM0UFBnRXdUaUZ0djFITU5WSVBtNExOMkk0ODEzNVQvZTA4ZU95bTFDeXc3b0x1QUN6ajlocEhaNzEvK1JTR3B6SUJvcmVidEZPUzRoK014TXBFeUtSMVNaYjFlOGdBVDFLT21tcm9kd0VoaFBSaUNnYTY5eW9uWnJLN3hMZ1hPamE2dCtxR2NJR3BPWktwYVB6R2RUZFNUMVdqUWpCQU1CMEdBMVVkRGdRV0JCVGdSVzh5ZmpQZFZvV1d1ZStLM0JzK1h2YVVCREFQQmdOVkhSTUJBZjhFQlRBREFRSC9NQTRHQTFVZER3RUIvd1FFQXdJQkJqQUtCZ2dxaGtqT1BRUURCQU9CaXdBd2dZY0NRZ0VrdWMyK0Vud0gycEN3aERPWHpaSlIvVzZDbFE0ck54cUt6TjUvVE5NYWhLT1VnbUFEMS9XZWJqZDF5WGpIYmd2dG9kZk5tZm1XTm5NdlE5ZDEzb1NvalFKQkUwQkU4YkZUZ1diS2RVMUtraldIUEZ2bHhLeWREZ2Z0TFI1THJoVGVGVklmcUtHU2Zxejh1Z2dxRXlkUGF5OHVXTTVlR3k3RzdSUXllNXJ5VEo2V3hJQT0iLCJNSUlCMkRDQ0FYK2dBd0lCQWdJUkFNczhZWFZCb0JOdVhVanFmQ29YN3k0d0NnWUlLb1pJemowRUF3SXdTekVMTUFrR0ExVUVCaE1DVlZNeEhUQWJCZ05WQkFvTUZFWmxhWFJwWVc0Z1ZHVmphRzV2Ykc5bmFXVnpNUjB3R3dZRFZRUUREQlJHWldsMGFXRnVJRVpKUkU4Z1JVRWdVbTl2ZERBZ0Z3MHlNekF4TURFd01EQXdNREJhR0E4eU1EVXlNVEl6TVRJek5UazFPVm93U3pFTE1Ba0dBMVVFQmhNQ1ZWTXhIVEFiQmdOVkJBb01GRVpsYVhScFlXNGdWR1ZqYUc1dmJHOW5hV1Z6TVIwd0d3WURWUVFEREJSR1pXbDBhV0Z1SUVaSlJFOGdSVUVnVW05dmREQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJEMkxISEFRcVliZFIxV1psdWVydE0zMHJXaG9yWWF2V21NVmE0bmRYOVBad3VSRXBMUTRtMW5FbHFRS01uUkU4LzRDK1Jxd2lhdittcEk0a3hkNWU1dWpRakJBTUIwR0ExVWREZ1FXQkJTM1paanlHbGhaOTlOMXZMb1RQWFZVYTRaRVlEQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01BNEdBMVVkRHdFQi93UUVBd0lCQmpBS0JnZ3Foa2pPUFFRREFnTkhBREJFQWlBb0QrUjZrb2xJV2FOSno0aHowM0QzZ2VzM0diTUJqQVdwa09VZzlheUZnd0lnYkV3N0FZU3lrNjhPdnhnWGV6Z25kVFJURXVTV1QrZmRSbkxhQk5zYVR3MD0iLCJNSUlDV1RDQ0FidWdBd0lCQWdJUUthN3U1dTEzdlltTzZBNitrMmNoaFRBS0JnZ3Foa2pPUFFRREF6QkxNUXN3Q1FZRFZRUUdFd0pWVXpFZE1Cc0dBMVVFQ2d3VVJtVnBkR2xoYmlCVVpXTm9ibTlzYjJkcFpYTXhIVEFiQmdOVkJBTU1GRVpGU1ZSSlFVNGdSa2xFVHlCRlFTQlNiMjkwTUNBWERUSTFNREV3TVRBd01EQXdNRm9ZRHpJeE1EQXhNak14TWpNMU9UVTVXakJITVFzd0NRWURWUVFHRXdKVlV6RWRNQnNHQTFVRUNnd1VSbVZwZEdsaGJpQlVaV05vYm05c2IyZHBaWE14R1RBWEJnTlZCQU1NRUVaRlNWUkpRVTRnUlVFZ1EwRWdNREl3ZGpBUUJnY3Foa2pPUFFJQkJnVXJnUVFBSWdOaUFBUy9kWTlXVWlWaG9SNkE3cUdlY2pIZVN1dTlId2pIZEV0L2lPR2NQUGRTeWhsd2FqRFZGNjh0OXdNTjgvNXZsSWFlS08wclJuRlFubUdtbXVVb3VlclAyb1BKd0srVHVMZndEQWFycWJJSGpXUnNGdU95Yjl6NWZja2ZNZnoyUUVpalpqQmtNQjBHQTFVZERnUVdCQlNkUjVCRjdKeWdKT0FGL0tCK0xseUJNUVVCSWpBZkJnTlZIU01FR0RBV2dCVGdSVzh5ZmpQZFZvV1d1ZStLM0JzK1h2YVVCREFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VBTUE0R0ExVWREd0VCL3dRRUF3SUJCakFLQmdncWhrak9QUVFEQXdPQml3QXdnWWNDUWdIQnR3WkRoYU1OWHl3emI0aHZReDdMTmFRVzZLeHhETzM1WDAvQm8vT3IwR2hHdW9LaUtHbisycFBlNEx1U0tESDV3Nm42OEVrODNHcTU0dUg2SHVCNTlnSkJWNk11Mm9aZk5tVEcwSTh6NG5yME9sR25qTzNZRjQ2VGlGVW54MFhEYk9xaXNvQ3I3VHRGVmxJWGhtaW5QdzVUNDQ5eXFoZnB1RUJwUnFWbmR3NTlDVXM9Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUZBQUFBQVVDQU1BQUFBdEJrcmxBQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQkhacFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR3L2VIQmhZMnRsZENCaVpXZHBiajBpNzd1L0lpQnBaRDBpVnpWTk1FMXdRMlZvYVVoNmNtVlRlazVVWTNwcll6bGtJajgrSUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWtGa2IySmxJRmhOVUNCRGIzSmxJRFV1Tmkxak1ERTBJRGM1TGpFMU5qYzVOeXdnTWpBeE5DOHdPQzh5TUMwd09UbzFNem93TWlBZ0lDQWdJQ0FnSWo0Z1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNGdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlnZUcxc2JuTTZlRzF3UFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIaHRiRzV6T25Cb2IzUnZjMmh2Y0QwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOXdhRzkwYjNOb2IzQXZNUzR3THlJZ2VHMXNibk02ZUcxd1RVMDlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl0YlM4aUlIaHRiRzV6T25OMFVtVm1QU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2YzFSNWNHVXZVbVZ6YjNWeVkyVlNaV1lqSWlCNGJYQTZRM0psWVhSdmNsUnZiMnc5SWtGa2IySmxJRkJvYjNSdmMyaHZjQ0JEUXlBeU1ERTBJQ2hOWVdOcGJuUnZjMmdwSWlCNGJYQTZRM0psWVhSbFJHRjBaVDBpTWpBeE5pMHhNaTB6TUZReE5Eb3pNem93T0Nzd09Eb3dNQ0lnZUcxd09rMXZaR2xtZVVSaGRHVTlJakl3TVRZdE1USXRNekJVTURjNk16RTZOVGtyTURnNk1EQWlJSGh0Y0RwTlpYUmhaR0YwWVVSaGRHVTlJakl3TVRZdE1USXRNekJVTURjNk16RTZOVGtyTURnNk1EQWlJR1JqT21admNtMWhkRDBpYVcxaFoyVXZjRzVuSWlCd2FHOTBiM05vYjNBNlNHbHpkRzl5ZVQwaU1qQXhOaTB4TWkwek1GUXhOVG96TURveU55c3dPRG93TUNZamVEazc1cGFINUx1MklPYWNxdWFnaCttaW1DMHhJT1czc3VhSmsrVzhnQ1lqZUVFN0lpQjRiWEJOVFRwSmJuTjBZVzVqWlVsRVBTSjRiWEF1YVdsa09qSkZOekZDUmtaRFF6WTNSakV4UlRZNU56aEVRVGxEUWtJMk5EWXpSamt3SWlCNGJYQk5UVHBFYjJOMWJXVnVkRWxFUFNKNGJYQXVaR2xrT2pKRk56RkNSa1pFUXpZM1JqRXhSVFk1TnpoRVFUbERRa0kyTkRZelJqa3dJajRnUEhodGNFMU5Pa1JsY21sMlpXUkdjbTl0SUhOMFVtVm1PbWx1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2TWtVM01VSkdSa0ZETmpkR01URkZOamszT0VSQk9VTkNRalkwTmpOR09UQWlJSE4wVW1WbU9tUnZZM1Z0Wlc1MFNVUTlJbmh0Y0M1a2FXUTZNa1UzTVVKR1JrSkROamRHTVRGRk5qazNPRVJCT1VOQ1FqWTBOak5HT1RBaUx6NGdQQzl5WkdZNlJHVnpZM0pwY0hScGIyNCtJRHd2Y21SbU9sSkVSajRnUEM5NE9uaHRjRzFsZEdFK0lEdy9lSEJoWTJ0bGRDQmxibVE5SW5JaVB6NDc3SlhGQUFBQVlGQk1WRVgvLy84RVZxSVhaYXZHMk9vcWNMRzJ6T09rd3QwQlNKdHFsY1hWNHUrYXV0bFdoYnprN1BVQU1ZOUhjcktqdE5icThmZUFsOGFCb3N6ejl2cGRqc0dHcXRGM244dVRzTlNacGM2SnNOVDUrdjB4WUtudThQZmY1L0w0OGZnL2ZyaWN6SmdZQUFBREFFbEVRVlI0MmtSVUNaYkRJQWpGWFpPWTFUYXROYzM5Ynprc1NZYzNyNE1FNGZNQkFhRDZ6bDh5LzlUT2dldDhkNWpmTjc4YndNL2REQ1JwUjUyMXpYZm9qSEowNUlJeWhCQVVTVkFPTmRHekJZdDJmN0tGcmZrSmFBa0hoOUZaaGNEWEhSa1RLbzlNTGloR2FhdkltblYzcXlFWDBFcHJnei80RHdVRDdrQ0hSbmQ4UUZONDNHbzRVVm1ERGd6YTR3MjdvaXpkQTIrY0srdXVVcGpqbzIreHdjLzQyVzUweDVMR1llREJzUjBIVkl4NXg4aUY2MENibGJURUVrRnIyN2JOREJVVlNxMU9LVlBiRTYyYjNFSDhGcUJnNU9PT0V1YzJ0OFpKaXFNT3VHcCtjS2pnN3dWR2Nlb3pxTjRweGdWUFFrakZZZ2JWSktEVWhEQ2pZcmF3UDVxNEVUZ0M5ZklNUkh0aXRwUWNDdkpPRUxjYk1zUWduY2lSa2xqcHlRanZHNDRqcUJVRVRGaUJpMVBFSXlla096c1crVHk1Y0xIb3M1UitkTVMxTHRTU3hmM2dRSGN6UjJDSTRnTU5wVzRJUkExUU1hNnRKNCtDNnVIdUdFOG1OREl5RnFnL09QL01NVXVlUzZJcThTOTBkQWVCSlNFeS9xS2tLK0JOd3o4Y1lZNGpiNUo2dTRpV0NJMkIxWjU2TFc1a0VjNGhrZE1wc3ZVQzU1ODVTWDBRdWJjZ05xeWZnREZFY1R0KzQwLzBTNU54MHdhQ3czT0trY09iQTVJbjBBWXAwMXBqancybjYyNlVEanRId2EyOGlIdVRLcXRydityZVc0MU5aNmlHbHI3dXVMSkNma0Z0Y3RjRzA0c2dtMWVOUytaYURucGFURXJHb3lYNUpLMmlNejh4czBuT3dXR2NQRE40OXFhQ2Q0YnpKb3pEWm0vYUJLK0Vvekx3K1hoTkJpWXdIZjBzaU91MVhQa0cvekt3dnFZS2NmU3dERWNIL29VZTA3ZXMvV1E4ckl5ZzJET1hqOHRqa1pkdURCL2I4aHpEbGxNTU9DUzVCRW5kNTM0Zjh0aTNVWmM0a01zM3hMeWFmTVNzSmhkRzhYUHFqTms1dEFnTzI1ZmVLQ2huVmREai9KMEZNa09zVS94TUJ2MHdGaFllRUdmVkgxM2Z1RFUweURGTGE0ZmM3Um5XSEJmdVRGVjJ0RW1Od2FkYzdhYzNVWTJqZkJsN0hUMzZmZTM0aVFPNW1OQ0ZGQlcwN0tqUGdxaE9MVTAxdlo4UHVlWjJKQ2xGWk44amtVczY5dWthOWVQcDYrRWZMNEFGNStOeXdTYmlySHRjQjhNbC9na3dBRWprSzY0S2pIUGVBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMSIsIkZJRE9fMl8xX1BSRSJdLCJleHRlbnNpb25zIjpbImNyZWRCbG9iIiwiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsImxhcmdlQmxvYktleSIsIm1pblBpbkxlbmd0aCJdLCJhYWd1aWQiOiIzOTU4OTA5OTlhNzU0OWZjYWZhYTgwMWNhMjExYzYyYSIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImxhcmdlQmxvYnMiOnRydWUsImVwIjpmYWxzZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOnRydWUsImFsd2F5c1V2IjpmYWxzZX0sIm1heE1zZ1NpemUiOjIwNDgsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6NiwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjo5NiwidHJhbnNwb3J0cyI6WyJuZmMiLCJ1c2IiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fV0sIm1heFNlcmlhbGl6ZWRMYXJnZUJsb2JBcnJheSI6MTAyNCwibWluUElOTGVuZ3RoIjo0LCJtYXhDcmVkQmxvYkxlbmd0aCI6MzIsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjozLCJyZW1haW5pbmdEaXNjb3ZlcmFibGVDcmVkZW50aWFscyI6MTI4fX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDItMjgiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJlUGFzcyBGSURPLU5GQyBTZXJpZXMgKEVudGVycHJpc2UgUHJvZmlsZSkiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI1MDIyODAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTAyLTI4IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjF9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDQtMDgifSx7ImFhZ3VpZCI6IjE0OWEyMDIxLThlZjYtNDEzMy05NmI4LTgxZjhkNWI3ZjFmNSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiMTQ5YTIwMjEtOGVmNi00MTMzLTk2YjgtODFmOGQ1YjdmMWY1IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlNlY3VyaXR5IEtleSBieSBZdWJpY28gd2l0aCBORkMifSwiZGVzY3JpcHRpb24iOiJTZWN1cml0eSBLZXkgYnkgWXViaWNvIHdpdGggTkZDIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjUwMjAwLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsiZWQyNTUxOV9lZGRzYV9zaGE1MTJfcmF3Iiwic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURIakNDQWdhZ0F3SUJBZ0lFRzBCVDl6QU5CZ2txaGtpRzl3MEJBUXNGQURBdU1Td3dLZ1lEVlFRREV5TlpkV0pwWTI4Z1ZUSkdJRkp2YjNRZ1EwRWdVMlZ5YVdGc0lEUTFOekl3TURZek1UQWdGdzB4TkRBNE1ERXdNREF3TURCYUdBOHlNRFV3TURrd05EQXdNREF3TUZvd0xqRXNNQ29HQTFVRUF4TWpXWFZpYVdOdklGVXlSaUJTYjI5MElFTkJJRk5sY21saGJDQTBOVGN5TURBMk16RXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFDL2p3WXVoQlZscWFpWVdFTXNyV0Zpc2dKK1B0TTkxZVNycEk0VEs3VTUzbXdDSWF3U0RIeTh2VW1rNU4yS0FqOWFidlQ5TlA1U01TMWhRaTN1c3hvWUdvblhRZ2ZPNlpYeVVBOWErS0FrcWRGbkJubHl1Z1NlQ09lcDhFZFpGZnNhUkZ0TWprd3o1R2N6MlB5NHZJWXZDZE1IUHR3YXowYlZ1em5ldWVJRXo2VG5RakU2M1JkdDJ6YnduZWJ3VEc1WnliZVdTd2J6eStCSjM0WkhjVWhQQVk4OXlKUVh1RTBJek1aRmNFQmJQTlJiV0VDUktnanEvL3FUOW5tRE9GVmxTUkN0MndpcVBTemx1d24rditzdVFFQnNValRHTUVkMjV0S1hYVGtOVzIxd0lXYnhlU3lVb1RYd0x2R1M2eGx3UVNnTnBrMnFYWXdmOGlYZzdWV1pBZ01CQUFHalFqQkFNQjBHQTFVZERnUVdCQlFnSXZ6MGJOR0poamdwVG9rc3lLcFA5eHY5b0RBUEJnTlZIUk1FQ0RBR0FRSC9BZ0VBTUE0R0ExVWREd0VCL3dRRUF3SUJCakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBanZqdU9NRFNhK0pYRkNMeUJLc3ljWHRCVlpzSjRVZTNMYmFFc1BZNE1ZTi9oSVE1Wk01cDdFamZjbk1HNEN0WWtOc2ZOSGMwQWhCTGRxNDVyblQ4N3EvNk8zdlVFdE5NYWZiaFU2a3RoWDdZKzlYRk45TnBtWXhyK2VrVlk1eE94aThoOUpESWdvTVA0VkIxdVMwYXVuTDFJR3FyTm9vTDltbUZuTDJrTFZWZWU2L1ZSNkM1K0tTVENNQ1dwcE11SklaSUkydjlvNGRrb1o4WTdRUmpRbExmWXpkM3FHdEtidzd4YUYxVXNHLzV4VWIvQnR3YjJYMmc0SW5waUIveXQvM0NwUVhwaVdYL0s0bUJ2VUtpR24wNVpzcWVZMWd4NGcweExCcWNVOXBzbXlQeksrVnNndzJqZVJRNUpsS0R5cUUwaGViZkMxdHZGdTBDQ3JKRmN3PT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZkNBWUFBQUNHVnMrTUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFIWVlBQUIyR0FWMmlFNEVBQUFiTlNVUkJWRmhIcFZkN1ROVjFGRC8zZDU5d2VRU0lnUzlBUUFYY0ZMQVFaaTlmcGVWejF0WS9XVFpyNVd4cGM3VzVrbkxhNWpJM1o4NXNyUzJuTTJzanRXd1pTN0lVSDRINHhDbkVReDREQVpGNzRWN3VzODg1djkvbEluQnZWSi9CNFB2OW51LzVudS81bnZNNTU2ZnpBL1F2MEhiL0lyWDNWRktQbzQ1Y25tNGluVUlXWXdMRlJtWlFVdXdqRkcvTjFpUkhoMUVaME5SVlJ1ZHF0MUJkKzJuU0t5Uy9PaHlzMCtsazNlLzNrUTlxdkQ0WlV0YTRWVlNVdVkwZWlweWlUaEFmb2NvT1JWZ0R1dXczcUtSaUFkM3JiY0V0alRqWUlvZjZXYUhzQ216VlBXQ014K2NnaDh0THFXTUthTVdzVWpMcW8yUnRKSVEwb096bWVycFF1NGVzWmdzT05rR3hIN2Qwa2R2VFQxN3M0T01VN1ZJOFpoamdHYU0rQXE5aUVOdThQaWYxdWR6MDdNd3ZLV2Y4R2xWb0NFWTA0UEM1V2RUYVhZRmJSOHZOdkw1KzNLZ2ZiNXhOTXlhOVJhbUppeW5hTWxHVFZ0RmxyNmJhOXUrcHFuRVg0dU11UlJnalNZRWhyTjd1dEZGZTZscWFsN05ma3c1aW1BR0h5blBwYms4Vm1ZMHhzdG5wdGxGQ1ZDWXR6VHVCTjgzUXBNTGpUdGV2ZFB6U1VuSjdlOG1ranhaMzlmWGJLRGZsZFpxYnZVK1RVZ0duQlZGNmZRMmlQSGc0VzE2VVdVd3Z6YmsxNnNNWkUrUG4wcHZ6N0pTZXVBeWVzOGxjcENtYUt1by9wK3FXcjJVY3dJQUhXcnZQMFlFemhYQXRMQWJzc0hocDdpR2FtdnlpalA4cnlxclhVV1g5WG9vd3h5QXVmTkJycDQzUE9CRlhabGtmOE1EUmlxY3B5b3dBd3B1ejJ4K2ZXdnovRHRkZTlzbXN6eWd0Y1I2QzF3YmR6Qmw2T2xxNVdOWVk0b0dhdGhKTXJrVEV4MGpBUlNIQVZzKzVyWWtRTlhiK1FnZlBMc1E2Z1h5SW5zcmVRZm1wbTdSVkZZZkw4Nm4xZmlVT2tZdlNoa1VQeHZidWt6b3k2SzFpaE0xaG8zWHpXNkV2U2ZYQStkcGlXR2FXZCtkb1h6THptR3dLWUZMQ0FzUkFsUEJBaE1sQ0ZYVTd0QlVWUHI4SGdWY0pIV3ErRjAwcGxyK0RNVGRyUDR6dnhZMTFrTk1oeFQrU2VUR2crZDRWNUxRSml0eVVHSk5COFZGWnNqZ1lCWk0vSUkvWENUa2owcXlET3BGMkFWUTE3Q0lqVXAvRG5UMVVrTDVGNWdkaitzUzF3ZzFnRTNnaWdtNjBmQ1h6U25QWGJ5QVBiSVh2K0lEcEUxNlRoYUhJUzlza3lobG1NRTVGM2NmcUFLaHEyQzBFNVBIMWdZYVhhTFBEa1pHMEhESk9uS1dIcDUxSTB6NVNPdXg4ZTFXQXVaemRIUXJUa3A4VG1qWG9JK2xhMHdHWnN6dWJxYk8zaWZRNkEvVzd2VlNZc1YzbVIwSkt3a0tjNFdIaUJrbVI4STNDQ2dJODdvT0w0cXpUNVArUlVKQmVqRU9nQVBLOGhZUHphdE0rZUlUcDJJTzl5VFFtZXJvbVBSeHgxcXhBY3NpbGUvdWJTZUViY1dRR1lFQ2doY0xZMkh5S2pvZ2pIMjVoTXBqcFV2MU91Z2xpNGVoMmVSdzBPMzJiSmpreXVDZ056ZzB2emxZTVNpU3MwdW9vNE1HN2hNT2pDRWFYMXlGRTBuU3ZqQnp1VG5FcEs4Nlo4SW9xRkFJdWJ3OGtnOUFyRWFSRVdTWkkrakg0WGJwNmc5RTlFbkpUM29hUnpETitNVUpCUURIbjU2YThvVW1FQnVzT3hCcy9ONSt0SkViUGtBRkRqOFVHdk9zL0lXdmNTZ2xHQmh2UzcvRlRZZnBXR1lkRFk4ZlBBeFdTQTM1c1RDNHA0K0xtNEFhcUlvUGVRdGZ1Zks2SmgwWmh4bGJzVVhPU21YTmlmRDVaVEFreURvZmJiY2NseG5BOFdOQXF4Q2JSTnlraFh4UXBhRHc2N2ZYVVlic2lHMEtodHYyb2VJdmg4cmhRTVlPY0VBcVhHL2VJK3puZ09jNXl4cjhxODJJQU0xYy9GTEZPcGxxdTVlRlFYck1aekdjVkNqWWJMV0c1STRCVDFldVJybGJ4dE5PdE1pdERERWhMWElJeW5BQXZ1T0VXRTNYM05kQWZ0OTRWZ2FHNDJYSVF0MFpYNlBlQ0UvcVFGZTlySzZIeDdZVTUwS3ZIN2ZXNGZTK3E3S0tCSnhzZ2dCWDVwU0FHaDFqSXJWaDV6UTZ3M1JmYWFoQlhtL2FDYkNaVGpDVUZVVHlXWnFXOXA2Mk1qSlBYVnFPclBnTU80TnY3NEdrZitvd2Z0TlZCRFFuakZKcUhTdzE3cFh2aFdXNUtacWUvUTQ5Ti9VU1RDQVZXb1FYRklIQkhYWGUzRlByVURzdUdEbXRGL2hIS1RIcGVreGhpQU9QSStTSnE2UzZIRjRJOVlXemtCSlRvNDZpVU16V3A4UGlyL1JpZHVMeEtZc1Nrc1Y4dkxsT1F2aEdYMllsUjBPQmhCakMrdS9nRWN2WTBBcEs3WWs0MU54alBTUW5XRkhURjY2VXJqZ2V2QjhDdTVhK2wydllTUlB0dVZEbzczaGhkTVNIblVYN3RUanNWWkd4QWwvV3B0aU9JRVExZ25MMjltWDYvdFIxdG1sa1lqOFc0WCtDU2pXY1VER1kxTnBTL0M3aFNLcWlNTE0vbDJRbVNXWjczRGR6K2dpbzhCQ0VOWVBRNDZxbmt6d1hVYnF2Qmt4alVRc1dmWkZnYnVvM3JBZit3TjdqT085MCt5bng0UGkzTCswbllMMVNjaERVZ0FQNGdQVi83SWQxcSsxSFNobXVHa0lxV1JQZ3l4TUZxUDhIZmpUbmpYd1k1YlFmYkpjdDZPSXpLZ01Ib3RGL0hlMWVnc2F4SFNxRzZ3ZmRtUTV4OE55VEZGcUJjcDJpU293SFIzeWs1KzM2aEY3dlhBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMV9QUkUiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6IjE0OWEyMDIxOGVmNjQxMzM5NmI4ODFmOGQ1YjdmMWY1Iiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6dHJ1ZSwidXAiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZX0sIm1heE1zZ1NpemUiOjEyMDAsInBpblV2QXV0aFByb3RvY29scyI6WzFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjgsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4LCJ0cmFuc3BvcnRzIjpbIm5mYyIsInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi04fV19fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMC0wNS0xMiIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiU2VjdXJpdHkgS2V5IE5GQyBieSBZdWJpY28iLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDE5MTAxNzAwNCIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4xLjEiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IkZJRE8yMDAyMDEifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjAtMDUtMTIifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIwLTA1LTEyIn0seyJhYWd1aWQiOiI1ZGY2NmY2Mi01YjQ3LTQzZDMtYWExZC1hNmUzMWM4ZGJlYjUiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjVkZjY2ZjYyLTViNDctNDNkMy1hYTFkLWE2ZTMxYzhkYmViNSIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJTZWN1cml0YWcgQXNzZW1ibHkgR3JvdXAgRklETyBBdXRoZW50aWNhdG9yIE5GQyJ9LCJkZXNjcmlwdGlvbiI6IlNlY3VyaXRhZyBBc3NlbWJseSBHcm91cCBGSURPIEF1dGhlbnRpY2F0b3IgTkZDIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfSx7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjowLCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjowLCJibG9ja1Nsb3dkb3duIjowfX0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNJakNDQWNlZ0F3SUJBZ0lVWS8yQ1J4djBUWkdPZHNMc0M1NFJsMDdnSVA4d0NnWUlLb1pJemowRUF3SXdiekVMTUFrR0ExVUVCaE1DVkZjeElUQWZCZ05WQkFvTUdGTmxZM1Z5YVhSaFp5QkJjM05sYldKc2VTQkhjbTkxY0RFaU1DQUdBMVVFQ3d3WlFYVjBhR1Z1ZEdsallYUnZjaUJCZEhSbGMzUmhkR2x2YmpFWk1CY0dBMVVFQXd3UVUwRkhJRVpKUkU4Z1VrOVBWQ0JEUVRBZ0Z3MHlOVEExTVRrd05UVXdNRGRhR0E4eU1EVXdNRFV4T1RBMU5UQXdOMW93YnpFTE1Ba0dBMVVFQmhNQ1ZGY3hJVEFmQmdOVkJBb01HRk5sWTNWeWFYUmhaeUJCYzNObGJXSnNlU0JIY205MWNERWlNQ0FHQTFVRUN3d1pRWFYwYUdWdWRHbGpZWFJ2Y2lCQmRIUmxjM1JoZEdsdmJqRVpNQmNHQTFVRUF3d1FVMEZISUVaSlJFOGdVazlQVkNCRFFUQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJEeU9nc3V2RndHaGRDcjUzcEJzaS9nbkd3ZU8xSldMd015V29ZRVdCNWNmMVlEQ1FkN2hybjJRaktZb2Z5ZlRQcHFEQmNqU2Y1RlJVQzdGWEdlZC8ybWpQekE5TUF3R0ExVWRFd0VCL3dRQ01BQXdEZ1lEVlIwUEFRSC9CQVFEQWdFR01CMEdBMVVkRGdRV0JCUlVoaDVKVUJQMlBvbWp1ajcwanFhNmVWR3k1ekFLQmdncWhrak9QUVFEQWdOSkFEQkdBaUVBb0lKb29TS0dId2NVaTB6bEpocUlZYVh1K0FrYjhhVGRXTi83UDZMMkM3QUNJUURZQUV3ck5JTHdiZ0U4S0NrWUUwWlpoaW5hcWhRcllST1hUbnI2a2hmVmhBPT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBTTRBQUFCNkNBSUFBQUI0SnZ2d0FBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFEc01BQUE3REFjZHZxR1FBQUJkWFNVUkJWSGhlN1oxNVdCVlY0OGRiekVmTHRGZDkxY3F5ZkYrMzNIc1NsekpMY1gzVDZxMnMxRFFyMTB4TnMxNS9MdVdhb3F3aUtJS0tnQXV5Z3lnQ3Nnb0tLb2tzNGhVVTJSUkI5SnIxNysrcmN4ekhjN24zbmpOM1pyamlmSi9QSDNEbXJEUGZPZWZNblprelR4anYvSzJqb3dHNjFYUTBRcmVhamtib1Z0UFJDTjFxT2hxaFcwMUhJM1NyNldpRWJqVWRqZEN0cHFNUnV0VjBOS0l4V0MydnJDNDB1MkpkakdIRzdsd2JXUlY1SVRxbmlzcGZSeEVhVmE5V1huczdJZi9hN3pHR2p6MVBPNnpOa0EweW9YTFdzWjFHTzREQ0xxdWpMcnl6NFFSbEl4WTJIREpRdWVuWVRpT2ZxK1dYMWJuRUZZOXh6YWJNWkJtTXBGUStPcmJ6V0Z3V0dLcHVyUWc3VC9uSkFyclYxT0N4c0pyQXdleUtDUjZuS0ZmVmkyNDFOWGlNckFZS3ltL085TStsakdXS2JqVTFlTHlzSnZCL29WWUdVOTFxYXZBNFdnMTRKbDZpN0NWRnQ1b2FQS1pXQTFuRk5aVERSSFNycWNIamF6VlFmZk1PWlRJQjNXcHE4R2hZcmZMaXRUTWhPYkhMRHgyWXZrOGU0Zk5EVTdha1VObUNyT0pheW1kQXQ1b2FQSHE5V25IV3BUU3ZOTGpIdmQ5bVhnb1N6bE81Z2VDc2N0MXFHdkFJRDZCbGhWWEpyc2xlYjN0UWZyTEE0Uld4VkNZQ1RyRVhkYXVwelNNL1Y3dVNYeG0zNmdobEtYT2dMNlNTaTB6ek82dGJUVlVheVdXQkliTWthbkVFWlN4VExGZ3Q2a3lsYmpWVmFTUldFOGlOeWZOMGNLWHNKY1dDMWNDaS9RVzYxZFNqVVZrTllPSy9iWmduNVRBUnkxWkxMN3F1VzAwOUdwdlZRSFg1RGQvUjJ5bVRDVmkyR2xnWlhxUmJUU1Vhb2RVRTlrMEpwSHdHckZvdHViQmF0NXBLTkZxckFiK3hkTjltMVdwZzlwNXp1dFhVb0RGYnJlclNkUmxXQzg0cTE2Mm1CdHBaN1VwRjFaR2pDUzV1N2d0K1hEVGxxNmxqeDQwYjRPRFF1Zk8vV3JWcTljUTlMVjIyL0g3a3Y0eGxKNDNaVHNiby94aDlualY2UGNGRXlDQmpIZjJ5VTE1Y0FhL1ZydFRjMXEybUJ1cGFMVFE4WXY3Q0h4MUhqbnJwNVpjRlA5V3I5aDA2ekpnMSsrS2xVaXI1WFc0YmpZWVlZL3cwby9kVHRMZE15UkROK29DVUxTbGNWZ1B6QXZPb2tKR2pScE82V3RQc09YT3B0SnFSY1RJYnArdWN1ZDkvT1dreXp1UkJnNGQwNzlHanc0c3ZObXZXakZST0NmMjdTNWVKWDN4eE5pK2ZLdDBxeWxzTmxYQjE5eGcvNGNQbm5udU8xTTY4Um8wZTQrbmxqUTZQeXFRZUtuT01VZU5vYjFHZ0Y2UlMzZm43bHZHdmZWOEZjVmt0TUtOTSt1L0gvLzB2cVM2RFhubmxsWW9xN2Q3dHUzSHJka1JVTkFZS2pBK2tCcHBvNGFMRlZFMnNvcVRWOGdxTDVzNmJSK3BpVFQxNzl0cm1zNFBLd1RxR0tLTi9SOXBoSWxGajZQajNLRWdzNHJLYW9lcVcrSGRpVWdxcE1iUGNQTGFJeWRVREk4YWt5VlBRYVpGU3RkWFFvZTlTOWJHS01sYXJxYnUxZXMyNkRoMDZrSXBZRS9yNXltdlhxVXhZdVZWcmpKOU9tMHpBak5WQXdvWUVkcXRKbWZzOTY4a2o2cDEzaGxLWktNdXhsRlFNWWFTd0JsTERXQzNoV0ZMZmZ2MUlGUmdrbWY3YndMbmQ5Y3plb3NiUzBlNVRXVnp0TmNTRDEycVh5eW93anlUMTVsRjRaRFNWbFNMazVPWmhMa2pLYUZBMWdOVUNndmFSd3RrVUZoRkY1U0NmZ3IxR3J5Y1pyUVlPcjR6bHRacXpxeHVwTjZjbVQ1bENaV1U3T0VYLzBibzFLYUNocGJYVkZpejhrWlRNSnUvdFBsUU90bkxHL1dHcm1SMUFRVkdxZ2RkcWI3LzlEcWs2cDVvMmJYcm1EeVYvTVlIUFNOYjJJVTJ0aG10TVVpeWJKay81aXNwQkdSSm5TYXhtcVZjRFhGYUxpSTRoVlpjbFplWUo5N0EzbjBIYVdVMUc0K01UazZoTWxNRllaOXo3QnFQVjRsWWRvVUlzTUhYYTE2VHFzdFNsUzlmYW0wWXFUeGxzOWQ1T2NyUW5hV1MxMkNOeHBFQm1vUXVrTWxHU3Fsemo5bWIzckdacEFBVm5vODlSSWViSUt6alA4cnVnWmNuNU5lZGhvbUppU1Y1MnBoa3paMUZWdFlvY3EzSDlwQ2xvN2JyMVZDWUtrN2FFeFdyVkZUZW9FSE9zV3JPV1ZOMEdPWTRjU1dYTHhmSE1rK0pkTzd0Uzl4NDlzazZkb1dwckZXNnJvUXhTSUk5MitPMms4bEdZMmpManRxWldCMUIyK3ZUdFM2cHVtdzdIeFZNNXMvUEIrUEVrRnhzRXMvYnUwd2ZqblNKTW5UWnRrN09MREo4QmJxdkptNkppektYeVVaNkU3NVN5V3VEZS9hVGVOdXZiNzJaUW1UTVNFUlZOc3VEWFd3TUdPRzEyUnFkWVZubVZ5cllCNGJZYU9rL1NJQjdObkRXYnlrZDVLczVZSFVBWitmaVRUMGk5YlZiTGxxMEtpaTVRK2JQdzZXZWZrU3g0OU5uRXo0OGNsZCtQcWdxZjFRb3ZYQ1J0NGxTdlhyMm9yRlFoWlFFZHdrOW0xaWxTYVlXMGVzMWFxZ2lyeEI5TElvbDV0R2p4VDFRK2RnV2YxUktTa2tteitPWHA1VTNscGp4RjRYUUlQMHQrL29YVVdDRmhxa1FWWVpWcFgwOG5pWm0xMVhzYmxZbTl3V2MxLzRBZzBqSit0V3ZmWHQ1MGtvUGJENTdJa01mMUczVnFQSTJ6ZTA4Z1ZaQmxYbnpwSlpLU1RYYmVud253V2MzR253QStHRDlCeTJlNVpMRE5ad2VwcTZKQ3c2bUNMTUE3ZXZiczJhdTh5bzZtLytiZ3M1clhObHQvdWU3LzVwdmhrY3JkY1ZjYTlxZHRPM1hxUlA1aVUxSnFHbFdXT1RDM0kyblk1TGRyTjVXRGZjSm50YU1KaWFSOXRtbnBzdVZwR1psVTVnMU9mQ0pIZDVLY2xrNytZdFAzODM2Z2lqUEhtTEhqU0JvR0RlVy9RZFJROEZudFFuRUphYUlTZW4vNENLZE56cWR5emxLbE5CU3o1MzVQYW1aTncwZU1RUHpwMzN4TC9tY1FwcW9scFE4OVIyNk9sangzQ0p4ZDNhamtkZ3VmMVFCMkdXbWxjaG8yN0QzTUF0TXpUMUJsYVFsODBLNWRPMUloYXhJZTZVNU56eUQvczhscDAyWnBpZldTbTE5SVlqUG8rZWVmTHltOVF1Vmd0M0JiYmREZ0lhU2hLc2hoNEVDTXJUaUVWS0Vhc05uWmxWVENtdjdSdW5YeFpYS0ErL1h2VDBJWk5NREJRU3pPSFB1RFEwaHNCdUVVcFpMYk05eFcrM1hWYXRKUU5ZVXB5THJmTnlqN2RLRmxCZzloUFlXbWZUMWRUT1creFpPRXN1bkF3UkF4YmIycy9HMFZpY3FnbjViOFRDVzNaN2l0ZHVyTUg2U2htbWpzdUhFNG5KZ2pVdFZRRmx3VWsvSVlGQm9lS1UzN3pEUFBrQTBNK3ZTemlkSzBwaUFDaWNvZ0xlNHNLd2UzMWNBSDR5ZVF0bXFsRmkxYWZEWng0cjREQjZtYUtNV1VyNmFTa3F5cGI5OStWRnF1aXdNb015dWJ5a0hLR3oxN2tuZ01PbjdpSkpYY0ZFeElGQVJYSVFkRHc2Z2lHSkZqdGUwN2ZFbGJOZGV3OTk3MzNibUxxbytONU9ZWE5ILzJXVktBTmExWStTdVZuUGZpWVBGUFM2Z2NwSkJJYk1vdkxLS1NVd3dhUEpoRVZWUWZqQjh2WTV5Ull6WHd5YWR5bmp0UVNtOE5HS0RnTFQrdTJXZjI2UndxT2VDNk9IaTFVeWR6NzhCZXZWNUxJckdwM05xdGx6WnQycENvU2dzVEc2b3NxOGkwR25qdHRkZEpzUTJrY2YvNTRHakNNYXBXTXVqZHV3L0owWnJNM1YvaXZUanc4TnhLNVNCd3FiU014R0RRVTA4OVJTVTNoVVJWUitjTnhWUnhscEZ2dFlJaUF5bXpRYlh3eDBVMWRmTHZzZ2NFN1NVWk1jakgxNDlLTHRLOE9lc1FEQTE5ZHhpVlhDRC9mQkdKd2FEV3JWdFR5VTBoVWRVUjcwV0pmS3VCeEdUdTlTelUwSWdSam5rRjlYejdnb1dQUG1aOVQ2Smp4NDVYcTJ1bzVDSzhGd2VSMFRGVURpRDdUQTdaektEWE8zZW1rcHRDb3FvalRhMEdpZ3pGWEJkTjZpbmhHUGZMZnhrbnNraGlCczM5Zmg2VlhBcnZ4UUd1ZWFrY0FGY20vZnUvU1NVM2hVUlZSMXBiRFZSY3JkYis1NDk2aGF0eHFtNldXYnhrQ1VuSklLc1BVdU5paFVSbFVMTm16WEp5NlZYY2poeE5JSnNaNURCd0lKWGNGQkpWSFRXQTFRUldyMTJuM3ZVT3U2SVBIYVlxWm81ck5UZGVlNTMxeW1id2tDRlVjbE40THc2V3JWaEo1WkRDODdUSUs2KytTaVUzaFVSVlJ3MW1OWEE2NSt4WFU2ZVJpalNRMnJkdnovaE9PZGV6ZDc5dmRLS1MxMHZMbGkxSkFnWjE2OWJ0eHEzYjB1UTV1ZWZJTmdZMWFkSkVtclplU0ZSMTFKQldFd2dPQ1ozd0lkOXlIc3JxaXk4blVWV3FGMGZIa1NTQk5UVnYzaHpYaGxUeWV1RzlPS0F1YVV0S3I1QU5iQkx2K3B1amR4L1czM0ZrcU9HdEpvQjZmRGxwTXFtVTVvcU1Qa1RWaHlLTzV4blB6Ny80Z2twdUR0NkxnNUdqUmt1VDE5YmRJaHZZWlBXeEsvYkhWV1RJWHF3bWtKSjJIRk4xcnZteUlwbzAyY3J5WnJObXp5RlJHUlMwYnorVjNBTHNUNGdJaW90UGxDWkhEMG8yTU9oZ3FQVTN4QXdsbHhPVFVtQUxxemk3dXZYcTNadGt6U0Frb2NxeWpMcFdFem1Xa3FxbDU1NSsrbWtMYjJjVlh5cHQyN1l0aVdwTlhidDFvNUpiaHZmaTRMdVpNNlhKMlJkNWhjemRkYkFGOW1zN083V2FpR2FlczNCWDIybXpNNG5FSUJuUGhIRmRpYi93d2d2bkwxd1UwK0phZ1d4Z0VPK1BPeXdNSGZvdXlkMmE3TjFxSW1uSE05ZXVXKzg0Y2hUWDgxN3NncHVwRWtVR0RocEVJakZJeGlQQjM4MllTUkt6YVkxa21hWUJEZzRrbEVGV24zNlRRU08wbWdqTzZlMCt2b3BmdEw3ODhzdFVRUUtoNFpFa0JvUGtyVnJGZTNFZ2ZRYnVtMisvSTZFTU1uMTR6bllhczlWRUVwTlRaczZlZ3dHRk5NVm0xWHNiZnZLVUtXUXpnekR4b3BJejh1Njd3MGdXYk5vVEdDUWtEQW1MSUVFTWF0NzgyZm8vWVdNRDltVTFGS1BHTEVHZ29NZ3dZK1lzb1RFMkt2ODh2UVRRSCtmeTJiK0NnMHVIUzFmS3FSd1k0YjA0UUtjdUpLeXVyZU9hVWF4ZC83dFlxQ0xZbmRVZ1hDdXRYck9PMnFRVVVUR3hiZHYrVXloSXRoS1NrcWxzVi83Nkc5bkdvT25mZkVzbDU0TDNnd2NwYWNlRmhCOSs5REVKWWxDdjNyM0ZFaFhCSHEwbXFHKy9mdXMzYkRTVVhLTGlLQUo3cyt1VjZST3pQWHYxSXRzWVpPTm5MdVl3djhBc2FONThzbUtYbS9zV0VzU20rUXNXaW9YYWp2MWFUVkNiTm0xbno1bHIyb3ZZaUkwL2RsYzkvSGlaZjBBZzJjQ2cvbTlhZjBUSE1yd1hCeGdsTHBmZEhhOVA1WEMvazVhVXdyb2dpRlhzM1dxaXhvNGI1N2ZMbjRvdm13TWhvU1JmZnBrK3BEcmh3NC9JTmdiOSt0c3FLcmtNaG85d0pObXhhWk96aTVDUTZ5Y1BxRjI3ZG1LaE52TElXRTFRNTg2ZE1iWGZIM3p3ZW0wZGxaWUxXOWJZNnRPM3J6U3I5TXdUWkFPRG5uenlTVVZXRXZIMDhpWTVzbW5nb0VIeUVrS3ZkdXFrU0owZk1hdUpFdDdmUkQ4blkvM2Z0SXhNV3g2QSsrSCsxRWZneDhVL2tRME1RdjhuVFdzTEhUdStRakpsVTNBSWVjdFMzbnQxVHB1Y3IxNnZGVXVYd2FOcU5hblFCaHgrMk03QzhnaTFONDBuc2s4Rjd0Mi9kTmx5cmhkRFRIVTg4OEhydUppMGNTMkhwdUNycGo4c1dFZ3laZFBFeno4WEV2cnUzRTJDT0lYQmROcjA2Y21wNldJZDJNSDg4dDlkdXBDTXJNbCtyU1pWa3laTjJyYjlKMXIxMWdBSFdGRGdkZVpuWXEwS3VVa3J2TlZyRzluQUlJeEUxYmFOKzFKNEx3NHdkcC9NUGkya2ZmLzk0U1JVbHBvMWE5YStmZnV1WGJ0aDVpZnVaTXVRbEd4Nk5LeW10alk0YlpKV2VQaUlFV1FEZytiOU1GK2ExblpHanhsRHNtYlRrcDkvRVJJRzdWUHM4d2xxU0xmYUUvMzY5NWZPVjdqZURZSGlFaDU2Z014MnR2bndyVHZ4Mm11dmkvWG4ramxYWStsV2U0S2FwbkRkNWxMcFc5aThjNE10VzcyRWhPVlYxOTUrUitZM1NkWFdzWlJVc1lFc05EYXJVViszTlpSY2JzMXpHYnVSWVdGSEdTeml1ZjZGaHIzM1lJMiszUHlDN3QyN2t3MzJKTk9YQ3kzVHFLd21mZkJMQUpNMnNvMUJ6N1ZvVVZoa29ISlFoTFNNVEZJR3M2SmlZc1hrNktmWkh4dldUS1hsRldJTldXZzhWdk1QSU0vaFNIRndHRWcyTStqTFNaT3A1QXJDK3htOHFkTytsaVlQaStCNHpFNGJTYXZIZ2h5ckphZWxjOTNrMFVEMStpd2tMSnhzWnRPK0E4RlVEZ3JpdDR2dmQ3TG16Wjg5bTVjdnpRSFRjTjdmSTlTVGpPdDBPVllUU0UzUDRIM3RVUTA1T280MHQ4QXMxOXVCUFhxOFFTVlhuQzVkdTVMQzJHUzZiQ0JZYWgvZmNaZXgzSmg4cXduQWNDdCsvYTFCenJaQmd3ZnYzRzMyMW43TzJYTk5tellsVVJuMDgvK1dVamtvemkvL1cwb0tZMVAzSGoxdTNyNURaUUxRdlRYc1M5M1V6NWFNMkdvMWtUTi81RHE3dW8yZk1LRkZpeGFrUnFwcGhLT2oxZmZTbHEvOGxjUm1VM3FHNmw5Tk9KSE4vZmxIWHorenQ4Z1VmejZlUmYzNjk3ZHdlbHRHTWF1SmxKUmUyUk1ZTkgvQndpRkQzdWJxVjZ4cThPQWhxMWF2RWUvYldLYkhHMitRWkF5U3NkeW1QTmlYY3hNMGVveVY3ellYRkJsOGZQMnd0NGVQR01IK2lROWV0V3JWQ3BjMXN0KzBFRkRlYWxLdVhxK05pam0wYlBrS3g1R2p1SlpPRWRTNlRSc016Yk5tejNIMzhFemkrY0V3SVNuNVZaNzc2d2RDUXFrY1ZJTHJNMWFRK0ZnUkk0VkZodWhEaDRORHduQ2R0TTNIMTlYZFkvMkdqWmpoWUlZbkc5NjdBdVpRMTJvVVZkVTFSUmRMc2svbkpDYWxoRVZHN2Q0VGdIRnc3YnIxeTFhc1hMZitkeGMzZCsvdFB2NEJnY0Vob2RoZmpDdXk2RHdxYUdvMW5jY1ozV282R3FGYlRVY2pkS3ZwYUlSdU5SMk4wSzJtb3hHNjFYUTBRcWJWaWkrVmVuaDRiTml3WWE5azhjNlQyYWYyQkFRSWlJRWc4MlNXcjUvZnhvMGJ3eU1peE1EZ2d3ZUZUNmhrbkRoNU9PNm9HSjZjbW9ac0liK2RPNi9Wa09lZWI5Nis0K096US94UTNJbXNiTEdnRU1rM0E4OWZ1SWlRdEhTeStJWEFqVnUzRXhLUGJmZnhRWjVCZS9kS04xRWNDQTRPQ0Fpa0ZnZy9HcDhnMUNjM3YwQU1SSXZRSEFRZWw2eEdleWoyc0ZDbDJNTkh4TUNzVTZjUkl0UWMxY0RmbFZlcnhhMXVibTdJeE5uRjVRL0pZNGI1NTR2MlAveU1DZW9RRjUrQVA5SXpNcVBxKzR3THdDNUtUVHZ1czJNSEtvYTlMWWJqU0czYXRBbWx1THE2U3I5WmczMGJHaGFHUU93WkhEZ3gvUHFObTZpazhLRzB1S1B4MGdaR3h4d1NHb2p3VzMvK0pZWXpJdE5xTUlyL25vQ2J4ajlSTXpFd1B2SFlicE1iWkJtWkp6WnYzaXg4MDA4YTJkM2RBNGNCZjhCbkFmZVhmQUpING80ZVBCaHl0YnJHMWMwdEpaV3NENEQ5aUowbFdnMDdvdkNDQWZzMEtTWFZVUHhndVpDdzhJajkrdy9nSEJCREFQenQ1ZTB0Zkt5dXV1YUdkSk1VNUlNcTdkeTE2OVNaQnl0OVhMMWVpM0t6VDUxQkJXb2xTMmpoNEFrZmY1RzJhTGUvZjd6SmV3bnduOGVXTGFoWW5mSFByVnUzSXVGRnlmb21hRUpoMFFYWXlNWEZWUXpNUHAyRHRvdi9ndUxMcFloNXVhd2N6aWd5UEZoaVVncDJvNXU3ZTJsNUpmNldOaE03Q2szQStZWTZvSFZpT1A3RkVheTRlZzJuT2lJVVhTVGZKb01GOGUvbGUwc3c0Y3lVbmpZN2QrMU9TVXN2TWhRamduWWZhY1FPY25kM1I5a0ZrdC8wWVRVWEZ4ZTRYdHJUSEF3SkJlSy9JaGFzaHZNc01pcmEyM3ViK0RZSFpUVUI3UDFjeVJOZE9KWTRrRmZLSzNFOENpVExYWGw2ZXFhbUg4ZStGczVJcVdPa0hENFNodzRqS1RsbDc3NTkwbkNjeWpoVjRGZnBhbTA0QjFBVytwN0thdys2S0gvL1BaNWJ0NklJSEE4eEVEMEgyb0lxb1ZPTWlJekNIOUpXb0Fub2g1Q1Y5SWlhV2cyZ0d0aTN5SW9LRjBGUEp2UjhnVUY3VVFleDd4U3NobjVveTVZdDBxSngrTEpQaytXQ2tYUGFjYkk0cG1XckJRWHR4Y0ZDaGF2TWZHZlNBdkxuYXZBQldvNVN4UkVIVnNNd2g3WkpleHJVVmRxZmkyemZ2aDFqSmY2QUwzRTh4SEJZemM5dkowWW9OTGkwakR4U3pHSzEwemxuRVVjUURxb1lqczRtNWxBc09udzRHNXVrL1pBVVlUNEFJVnNxRGpvU0x5OHZhdVFxdVh3Rm5RU09xeGdDcTZHclFQTmhkekVRRVhBVWNmSmdQbkF1dnhCZWxMNXhqYklRWDZnNU9oZ2hzRjZyWVZjZ2pyaERUSUh2aFZQNjdMbTh1ekh2MTBHd1dsNUJJUnFZS0ZtL1o4Y08zMlBKS2ZpanB1Nm1rNU9UdUdvVFJpckVGM29RSENPY2UwSTRRSHN4d1VnOGxuU3B0RXdNWkVlbTFjSWpJK0V6ZUFMZUVnUEZYZzJJcTNWY3E3bXhEVlgyOGNIeFJ1OGlSc1lCd0J3bE5Dd2NacFd1TzR4T0xqRG9iaWNIZzVvYlFBVW9xMkhvREkrNCsxVjF6T1NjblozUnlRbmhtUHFnQ093akhBeGtVcS9WMEVsakUwNGVPQklkei9IN0R4UmhKTUloaVlrOWpBd3gwQWlCaU9QcjY0dVJFUjBEVGd3aEVJaTltblJLaWxiQTR1aFVrQzBTWWovZ0xCSzNvZ25ZazZnYnhqTHhqTVVJam1NdjdNYXl5aW9oRUgrZ2hsY3FIcGlZNG1MSlpmUyttTURBY0lqNXdHcEZkNjJHSFlpWm9uUUFSWlBSS0pTTzBXT0hyNiswczhlSmlvWmdmNkxPMHBubHpwMjdwR2JsUmFiVk1QWEI2UUtMU0tzb1RLRUVjSEtJNFJoNnNQdFFTOG9yU0E3RGxWV1F2U2xRVm5tMTVONUpnNzVCNk1ZQjloUmNaWnBjK2hyNmhZc2x3aXBYT0dhb2dIUjJqM0NoVnVaT1IreFFzU2RHSEdubmdYQWt4T1JhREFIbzBoQ0lVT25zV0FnRTB0a1k0bUJJQWtMUnlFZjZpV00wQVpNZWFWVUJIQy9rQThSTm1BRGdYK3BEUVJRNE1ZUlVtTnVKZ1RpMUVDSnVGY01CSm4rNGhNSVZDWGF2TkJ5TlF0ZUlTVGFxTFExSHRtTFhLd1A1QTZpT0RoZTYxWFEwUXJlYWprYm9WdFBSQ04xcU9ocWhXMDFISTNTcjZXaUVialVkamRDdHBxTVJ1dFYwTkVLM21vNG0zUG43L3dFMTNsRW5HZTJTNUFBQUFBQkpSVTVFcmtKZ2dnPT0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsImxhcmdlQmxvYktleSIsIm1pblBpbkxlbmd0aCIsImNyZWRCbG9iIl0sImFhZ3VpZCI6IjVkZjY2ZjYyNWI0NzQzZDNhYTFkYTZlMzFjOGRiZWI1Iiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6dHJ1ZSwidXAiOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJsYXJnZUJsb2JzIjp0cnVlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOmZhbHNlLCJhbHdheXNVdiI6ZmFsc2V9LCJtYXhNc2dTaXplIjoxMDI0LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxLDJdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjEwLCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjcyLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5IjoxMDI0LCJmb3JjZVBJTkNoYW5nZSI6ZmFsc2UsIm1pblBJTkxlbmd0aCI6NCwiZmlybXdhcmVWZXJzaW9uIjoxLCJtYXhDcmVkQmxvYkxlbmd0aCI6MjU2LCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6MSwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjQwfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDgtMjciLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJTZWN1cml0YWcgQXNzZW1ibHkgR3JvdXAgRklETyBBdXRoZW50aWNhdG9yIE5GQyIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjUwODI3MDAzIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDgtMjciLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MX1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0xMS0yNSJ9LHsiYWFndWlkIjoiOWEyNzI1NTgtNWNmYS00NDI0LWJlMzctNjU1MDk2NzdiNzdkIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI5YTI3MjU1OC01Y2ZhLTQ0MjQtYmUzNy02NTUwOTY3N2I3N2QiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiU0VDT1JBIElEIEtleSBTIFVTQiBDb25zdW1lciBFZGl0aW9uIn0sImRlc2NyaXB0aW9uIjoiU0VDT1JBIElEIEtleSBTIFVTQiBieSBJbmZpbmVvbiBDb25zdW1lciBFZGl0aW9uIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfSx7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDUkRDQ0FldWdBd0lCQWdJSVMyVjVRMjVGWkRFd0NnWUlLb1pJemowRUF3SXdnWlF4Q3pBSkJnTlZCQVlUQWtSRk1Ta3dKd1lEVlFRTERDQkRRU0JtYjNJZ1FYVjBhR1Z1ZEdsallYUnZjaUJCZEhSbGMzUmhkR2x2YmpFaE1COEdBMVVFQ2d3WVNXNW1hVzVsYjI0Z1ZHVmphRzV2Ykc5bmFXVnpJRUZITVRjd05RWURWUVFEREM1SmJtWnBibVZ2YmlCR1NVUlBNaUJTYjI5MElFTkJJRk5sY21saGJDQTBRalkxTnprME16WkZORFUyTkRNeE1DQVhEVEkxTURVek1USXlNREF3TUZvWUR6SXdOVEF4TWpNd01qTXdNREF3V2pDQmxERUxNQWtHQTFVRUJoTUNSRVV4S1RBbkJnTlZCQXNNSUVOQklHWnZjaUJCZFhSb1pXNTBhV05oZEc5eUlFRjBkR1Z6ZEdGMGFXOXVNU0V3SHdZRFZRUUtEQmhKYm1acGJtVnZiaUJVWldOb2JtOXNiMmRwWlhNZ1FVY3hOekExQmdOVkJBTU1Ma2x1Wm1sdVpXOXVJRVpKUkU4eUlGSnZiM1FnUTBFZ1UyVnlhV0ZzSURSQ05qVTNPVFF6TmtVME5UWTBNekV3V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVNSbkxybGlsNUI5R0s4Zm4ybHluMEVoQVlLUm1rTGcvTXkzODUrRVo3MDFMR3ZSMENjOXJZejZMSlBONFdSSmhGc0E5SzNsUVI1M3hNcWhHdWRtdk1sb3lNd0lUQVBCZ05WSFJNRUNEQUdBUUgvQWdFQU1BNEdBMVVkRHdFQi93UUVBd0lBQkRBS0JnZ3Foa2pPUFFRREFnTkhBREJFQWlBdmxoYXBHdXZETmVWOXpBMk4wR2J6MlJMa3cvOVFyakVkNFZFT1czRzJWd0lnWG42R3BUQXFZWGdXR1dnd0lTd0J0Z0hRcHpaenphNFFnU1dmM0duUXdVaz0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSWNBQUFBOENBWUFBQUJNNnFtOEFBQUFCR2RCVFVFQUFMR09mUHRSa3dBQUFDQmpTRkpOQUFDSER3QUFqQThBQVAxU0FBQ0JRQUFBZlhrQUFPbUxBQUE4NVFBQUdjeHpQSVYzQUFBS0wybERRMUJKUTBNZ1VISnZabWxzWlFBQVNNZWRsbmRVVk5jV2g4KzlkM3FoelRBQ1VvYmV1OEFBMG51VFhrVmhtQmxnS0FNT016U3hJYUlDRVVWRW1pSklVTVNBMFZBa1ZrU3hFQlJVc0Fja0NDZ3hHRVZVTEc5RzFvdXVyTHozOHZMNzQ2eHY3YlAzdWZ2c3ZjOWFGd0NTcHkrWGx3WkxBWkRLRS9DRFBKenBFWkZSZE93QWdBRWVZSUFwQUV4V1JycGZzSHNJRU1uTHpZV2VJWElDWHdRQjhIcFl2QUp3MDlBemdFNEgvNStrV2VsOGdlaVlBQkdic3prWkxCRVhpRGdsUzVBdXRzK0ttQnFYTEdZWUpXYStLRUVSeTRrNVlaRU5QdnNzc3FPWTJhazh0b2pGT2FlelU5bGk3aFh4dGt3aFI4U0lyNGdMTTdtY0xCSGZFckZHaWpDVksrSTM0dGhVRGpNREFCUkpiQmR3V0lraU5oRXhpUjhTNUNMaTVRRGdTQWxmY2R4WExPQmtDOFNYY2tsTHorRnpFeElGZEIyV0x0M1UycHBCOStSa3BYQUVBc01BSml1WnlXZlRYZEpTMDVtOEhBQVc3L3haTXVMYTBrVkZ0alMxdHJRME5ETXkvYXBRLzNYemIwcmMyMFY2R2ZpNVp4Q3QvNHZ0ci96U0dnQmd6SWxxcy9PTExhNEtnTTR0QU1qZCsyTFRPQUNBcEtodkhkZS91ZzlOUEMrSkFrRzZqYkZ4VmxhV0VaZkRNaElYOUEvOVQ0ZS9vYSsrWnlRKzdvL3kwRjA1OFV4aGlvQXVyaHNyTFNWTnlLZG5wRE5aSExyaG40ZjRId2YrZFI0R1FaeDREcC9ERTBXRWlhYU15MHNRdFp2SDVncTRhVHc2bC9lZm12Z1B3LzZreGJrV2lkTDRFVkJqaklEVWRTcEFmdTBIS0FvUklOSDd4VjMvbzIrKytEQWdmbm5oS3BPTGMvL3ZOLzFud2FYaUpZT2I4RG5PSlNpRXpoTHlNeGYzeE04U29BRUJTQUlxa0FmS1FCM29BRU5nQnF5QUxYQUVic0FiK0lNUUVBbFdBeFpJQkttQUQ3SkFIdGdFQ2tFeDJBbjJnR3BRQnhwQk0yZ0Z4MEVuT0FYT2cwdmdHcmdCYm9QN1lCUk1nR2RnRnJ3R0N4QUVZU0V5UklIa0lSVklFOUtIekNBR1pBKzVRYjVRRUJRSnhVSUpFQThTUW5uUVpxZ1lLb09xb1hxb0dmb2VPZ21kaDY1QWc5QmRhQXlhaG42SDNzRUlUSUtwc0JLc0JSdkRETmdKOW9GRDRGVndBcndHem9VTDRCMXdKZHdBSDRVNzRQUHdOZmcyUEFvL2crY1FnQkFSR3FLS0dDSU14QVh4UjZLUWVJU1ByRWVLa0Fxa0FXbEZ1cEUrNUNZeWlzd2diMUVZRkFWRlJ4bWliRkdlcUZBVUM3VUd0UjVWZ3FwR0hVWjFvSHBSTjFGanFGblVSelFacllqV1I5dWd2ZEFSNkFSMEZyb1FYWUZ1UXJlakw2SnZveWZRcnpFWURBMmpqYkhDZUdJaU1VbVl0WmdTekQ1TUcrWWNaaEF6anBuRFlySHlXSDJzSGRZZnk4UUtzSVhZS3V4UjdGbnNFSFlDK3daSHhLbmd6SER1dUNnY0Q1ZVBxOEFkd1ozQkRlRW1jUXQ0S2J3bTNnYnZqMmZqYy9DbCtFWjhOLzQ2ZmdLL1FKQW1hQlBzQ0NHRUpNSW1RaVdobFhDUjhJRHdra2drcWhHdGlZRkVMbkVqc1pKNGpIaVpPRVo4UzVJaDZaRmNTTkVrSVdrSDZSRHBIT2t1NlNXWlROWWlPNUtqeUFMeURuSXorUUw1RWZtTkJFWENTTUpMZ2kyeFFhSkdva05pU09LNUpGNVNVOUpKY3JWa3JtU0Y1QW5KNjVJelVuZ3BMU2tYS2FiVWVxa2FxWk5TSTFKejBoUnBVMmwvNlZUcEV1a2owbGVrcDJTd01sb3liakpzbVFLWmd6SVhaTVlwQ0VXZDRrSmhVVFpUR2lrWEtSTlVERldiNmtWTm9oWlR2Nk1PVUdkbFpXU1h5WWJKWnN2V3lKNldIYVVoTkMyYUZ5MkZWa283VGh1bXZWdWl0TVJwQ1dmSjlpV3RTNGFXek1zdGxYT1U0OGdWeWJYSjNaWjdKMCtYZDVOUGx0OGwzeW4vVUFHbG9LY1FxSkNsc0YvaG9zTE1VdXBTMjZXc3BVVkxqeSs5cHdncjZpa0dLYTVWUEtqWXJ6aW5wS3prb1pTdVZLVjBRV2xHbWFic3FKeWtYSzU4Um5sYWhhSmlyOEpWS1ZjNXEvS1VMa3Qzb3FmUUsrbTk5RmxWUlZWUFZhRnF2ZXFBNm9LYXRscW9XcjVhbTlwRGRZSTZRejFldlZ5OVIzMVdRMFhEVHlOUG8wWGpuaVplazZHWnFMbFhzMDl6WGt0YksxeHJxMWFuMXBTMm5MYVhkcTUyaS9ZREhiS09nODRhblFhZFc3b1lYWVp1c3U0KzNSdDZzSjZGWHFKZWpkNTFmVmpmVXArcnYwOS8wQUJ0WUczQU0yZ3dHREVrR1RvWlpocTJHSTRaMFl4OGpmS05PbzJlRzJzWVJ4bnZNdTR6L21oaVlaSmkwbWh5MzFURzFOczAzN1RiOUhjelBUT1dXWTNaTFhPeXVidjVCdk11OHhmTDlKZHhsdTFmZHNlQ1l1Rm5zZFdpeCtLRHBaVWwzN0xWY3RwS3d5cldxdFpxaEVGbEJEQktHSmV0MGRiTzFodXNUMW0vdGJHMEVkZ2N0L25OMXRBMjJmYUk3ZFJ5N2VXYzVZM0x4KzNVN0poMjlYYWo5blQ3V1BzRDlxTU9xZzVNaHdhSHg0N3FqbXpISnNkSkoxMm5KS2VqVHMrZFRaejV6dTNPOHk0Mkx1dGN6cmtpcmg2dVJhNERiakp1b1c3VmJvL2MxZHdUM0Z2Y1p6MHNQTlo2blBORWUvcDQ3dkljOFZMeVluazFlODE2VzNtdjgrNzFJZmtFKzFUN1BQYlY4K1g3ZHZ2QmZ0NSt1LzBlck5CY3dWdlI2US84dmZ4Myt6OE0wQTVZRS9CaklDWXdJTEFtOEVtUWFWQmVVRjh3SlRnbStFanc2eERua05LUSs2RTZvY0xRbmpESnNPaXc1ckQ1Y05md3N2RFJDT09JZFJIWEloVWl1WkZkVWRpb3NLaW1xTG1WYml2M3JKeUl0b2d1akI1ZXBiMHFlOVdWMVFxclUxYWZqcEdNWWNhY2lFWEhoc2NlaVgzUDlHYzJNT2Zpdk9KcTQyWlpMcXk5ckdkc1IzWTVlNXBqeHlualRNYmJ4WmZGVHlYWUpleE9tRTUwU0t4SW5PRzZjS3U1TDVJOGsrcVM1cFA5a3c4bGYwb0pUMmxMeGFYR3BwN2t5ZkNTZWIxcHltblphWVBwK3VtRjZhTnJiTmJzV1RQTDkrRTNaVUFacXpLNkJGVFJ6MVMvVUVlNFJUaVdhWjlaay9rbUt5enJSTFowTmkrN1AwY3ZaM3ZPWks1NzdyZHJVV3RaYTN2eVZQTTI1WTJ0YzFwWHZ4NWFIN2UrWjRQNmhvSU5FeHM5Tmg3ZVJOaVV2T21uZkpQOHN2eFhtOE0zZHhjb0ZXd3NHTi9pc2FXbFVLS1FYeml5MVhacjNUYlVOdTYyZ2UzbTI2dTJmeXhpRjEwdE5pbXVLSDVmd2lxNStvM3BONVhmZk5vUnYyT2cxTEowLzA3TVR0N080VjBPdXc2WFNaZmxsbzN2OXR2ZFVVNHZMeXAvdFNkbXo1V0taUlYxZXdsN2hYdEhLMzBydTZvMHFuWld2YTlPckw1ZDQxelRWcXRZdTcxMmZoOTczOUIreC8ydGRVcDF4WFh2RG5BUDNLbjNxTzlvMEdxb09JZzVtSG53U1dOWVk5KzNqRytibXhTYWlwcytIT0lkR2owY2RMaTMyYXE1K1lqaWtkSVd1RVhZTW4wMCt1aU43MXkvNjJvMWJLMXZvN1VWSHdQSGhNZWVmaC83L2ZCeG4rTTlKeGduV24vUS9LRzJuZEplMUFGMTVIVE1kaVoyam5aRmRnMmU5RDdaMDIzYjNmNmowWStIVHFtZXFqa3RlN3IwRE9GTXdabFBaM1BQenAxTFB6ZHpQdUg4ZUU5TXovMExFUmR1OVFiMkRsejB1WGo1a3Z1bEMzMU9mV2N2MjEwK2RjWG15c21yakt1ZDF5eXZkZlJiOUxmL1pQRlQrNERsUU1kMXErdGRONnh2ZEE4dUh6d3o1REIwL3FicnpVdTN2RzVkdTczaTl1Qnc2UENka2VpUjBUdnNPMU4zVSs2K3VKZDViK0greGdmb0IwVVBwUjVXUEZKODFQQ3o3czl0bzVhanA4ZGN4L29mQnorK1A4NGFmL1pMeGkvdkp3cWVrSjlVVEtwTU5rK1pUWjJhZHArKzhYVGwwNGxuNmM4V1pncC9sZjYxOXJuTzh4OStjL3l0ZnpaaWR1SUYvOFduMzB0ZXlyODg5R3JacTU2NWdMbEhyMU5mTDh3WHZaRi9jL2d0NDIzZnUvQjNrd3RaNzdIdkt6L29mdWorNlBQeHdhZlVUNS8rQlFPWTgveHZKdHdQQUFBQUNYQklXWE1BQUE3RUFBQU94QUdWS3c0YkFBQUFKM1JGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JRYUc5MGIzTm9iM0FnUTBNZ0tFMWhZMmx1ZEc5emFDbSs3NGFBQUFBQUIzUkpUVVVIM1FvSEVURUpGM2J6R0FBQUFDRjBSVmgwUTNKbFlYUnBiMjRnVkdsdFpRQXlNREV4T2pBM09qQTNJREUzT2pNME9qVTB2SmNlZWdBQUdLQkpSRUZVZUY3dFhRbGdGRldhL3FyUEhPUk95RUU0d28wQlFRUlVGQkZFR0FFVkJHOW1VSENFbVowZGNjWmoxZG1aY1YxWFJSRHZjOFJaWFk4WkFYVVFSQkFRUEFBdmtCdENJRUJDN2p2cDd2UzUzMTlWVGJvN2pRUU1FYlEvcUhUVmU2OWV2ZU43Ly9IZXEyN0ZSK0FNZzgvcGhyZXlGbDZYRFo0eWZoNnVnS2VrSEI1WEZYeDFEbmlLYStBcE9BeDNTUW5EcTRCcUh4U0xFYjRvQXd3bUU0eUpTVkRTRW1Ic2xBSkR2QlUrZ3hGR2F6S3ZVMkhNU0lFeEt4V0d0Q1FZRW1KaHpFNkhvai8zNTRiVG1oemVSZ2U4ZGV4OEhyWWxuOEc1ZmlNOHRqcDQ5bGJCVzF0RGN0VEI1N1l6cFllSEMxSVJuOUVJUTVTQ3FENGpFWFhGVUZpRzlvTXhMaDNHTGp6UzRxRVl6RkNpckt5NVBPSDRrRHdqNURnTjRENVVEdWQzVzJCZnN4bE5lWnZoMlZnQVYyVStPNmdKQm5Ba0k1cXBEUENpbkljZEp1VEFQTHdQclAwSHdYcEpMa3lkZXlEcW9nRmFaaEg4WVB5bzVIRGxGOEc1ZlRNYW5sdEtRbnhPS1dCanFKUGRIOGZSR3NXRHFnQU9IazRlQ2t5OXNtSElUVUhjK0pzUWMvWEZNS1lrYVJsRmNFclFydVR3dVQxd2JjMkRiZmxxTkw3MUlWejdEOERucUNVRktPNFJxNUtCeW9UL2JDU0RIVDZ6QmRHakxvSjExSG1JdVg0Y3pCbVpWQWttTGJNSVRqbmFuQnlWOVE2OHZmRVFlcVozd0xpenM5UXc1NDREcUgzbUdkaGVYd2RmSTQxRy9qTWhrV1NnN3FlY0VKdkJpd2E0VVVONnhNSTY2V0xFVEJpRHVGdXZaNW9JZml5MEtUbG1MbGlQaGUvdUFPS2p5QWczWURYaG0rZXZ4dUJrQ3c2bVh3aWxRYWhnWVVycGNwRVFEaEtpR0thRUxFU05IWTNZYThjaGR1bzROYThJZm55MEdUbHVmL296UFBYaGJpQXRUZ3VRL25mU2k2aXlvM3paVENTOHZ4YUZVNlpUTW5Ra0tXb1phWUpsUUYvRS9lZk5pQjAxQ29iVWVQVzJDRTRmdEJrNWxOejV3TEJzRVFqQnFHckViZVA3NGNYZlhJQnRpb0tFK0tGSWVIQTJZaWRQcEhmUlVVOFV3ZWtJVWZnbkRaVlYxYlhJcTZTWGtVSTMweGZHUXVoZ3hjNzhDdlcweDN1Zm9FdnRsMGo0L1l3SU1jNEFuRFE1M0VjcWNLanpNTlMvc2dTOVVtS0EraVpObFlUQzQ0WFBLbllHRUhQVlNQVXpnak1ESjB3T1VVTGxNKy9Ed1U1ZGdjSUdOTHkxUWcxUHlNMEFHa2lRUUVqdWhiVllNSDJ3ZG4wSzhQNm1RNWk3ZENlZVg3a0hYKzB0MTBNamFBdWNrTTFoLy93cmxGNDZIVXFUaDRhbFRFRDU0RFkxb3R1M2J5TXZweCtHMy9ZUFZBaEJMRVpONTlpY3VIM3EyWGhpNWpEMS9yYkVKN3RLTWVyUHF3Q0hrN2F0ekk4UU5JQjdka25BdW9jbklDdVJIaFB4NmVZaU9Gd2VETzJmZ2NRWVRZSkYwRHEwbWh5VmR6eU0yaWZtd1l3Y2FvL21pU2laMm5haEN0M3JkcUhNYk1IY3Q3ZGdSMzRsTEZGbTNEQXlCOWRmbEtPbmJEdlUyMXhJdnZsdHVCV0twaWdoQnZXWlZJTXFMTk5pUXRHcjF6QkV3V1gzcjhESG4rU1RQQWIwNnBPR3I1K2VoSGk2MXhHMERzY2xoNCtqLzFEdUNQZ0t5a2dKcWc3TkROWGhJekZLWURxL056cDk4QjRNS2JGNitLbkZBMjlzeGwvL3NRVklvcTNqWlhrYW5UQVlGSGlMNjNBUHZhSkhwZzNHcXlURmpMbnJnSTRzRTcwa0hLbkg0elBPeFIzWERkSnppZUI0K0Y2Ym8rbWJuVGlZT2dRb2FHeEJERm52Y09JSVVsK2RpODRiVnJVYk1RUlByTnBMNjFabVY0bDZPMTc1M1hCNEZ2MFNLNSs2Q3ZkY2RaWWFYT2R3QVdhUktMd1EvbFBBUkdUR2llR1lrc094WlFlS3o1bkFOazBrZ3pUOXJVR0JCL1h3bWUzb3RHMDF6SDI2NmVFYUttc2RXTCtuREt1MmxxQ2l4bzUvM3RuMkhvb3k1RW1BTmdROFBpUlNLcFF1bkFxTDMrN1FVY3huWjgxNGgyazhIQUljQTNZWDlyMXlEWHAwU3RCVFJIQThoQ1dIYytkZUhNNDlEeGIwQ0xJdk5HS1V3OVM3QjdLMkxvZGlEZTZRd2lvYk9vLzdHeURHSUR1clMvY1VISHgya2g3YmRsRDZ6d2VHZGdab2FKNFZiOFhXWnlmREtLb2pCSVhWTnR6M2YxUS84T0xSRzg5QlpqdEt0NThDV3FnVjU4NzlLTW9kUzJMMERDR0dMSS9SMEx6c0FtUnRiMGtNZ2RWc2hFSkNRRVpuUWpTaWFBaWVFb2drME9FbXRTbEF3aUtiTnNsci96NmN4MFVSWXB3RVd2UmU4WmhwREpRbDlPRE85MUtWR0pLU2tMbnlkU2drUVZoUUNQbkVRSlJEQkZLNFNiRzJnTnVyNWMxSENBRXRORVpQSjFTTGUzMlNxSFc0OWJNZkgwSGtLTHA0TXRsUlJsb0Vqekl2R3FGMFMwSG5xazE2U0NzUk1xSnJiRTJZOTY4ZHVQTEJqNkgwZkJRUDB1MFZ2TGVoQUYxbkxZWXk4QWtvQStZamVmcmIyTFNyVEkwTHhQWkQxZmpEYzE4QXZTbWRSRndZRlJUVU4ySDIwNS9obHZuck1QSHVaVGhVVXFlbkJ1WXYvZzVqLzdRQ3lyVWs5T0FuNGFhckc0aGxXNHB3MzhLdm9OejRKdTJZcDlEazljTGg5T0IzTDJ5QU11WmxLR2ZOZ3pMOFdjeCs4bFA5am5EUUt2a082NkJNL2w4b1o3UDhsN3lrcXI2WWFXOWk3ZFlqYXZ6MzRZdWRwY2lZdFFSSzM3bElIUFVDMjJFQmxQR3Y0S1dWTkx6RFFNcTRZUGx1WFBmSUdqNXZBZTU1ZkwwYXZuWmJNVWJSZlpjMlZBWThEdVdxdjJQSlp3VnEzTW5ncU0xaFcvc3BTa1pQVWUyTTRGNzF3WTFxWk8xWkNVdnZZT016Rk9WMURuU2N1UWlJcGpwcThxQjNSaHoyUEhtbEhndHNPMUNGczJjdkFUcFloSEc0LytwY09HazNQUGJPVm0yWlA1cmhJZ1JzOURSSzYxRklENlJUYWpOUjFZa3Z1VCtINVBDYlN1eFFOYjNnU0IzeUYvOEszYk8wRmQ3dXN4ZmpRSEU5RUd0Qkd1dFI5dVpOYXJnZjB4NWVnemMremdQUzQyQmtmaC9mTnhyVDZQNFdzUjZnTFFNeng0NXNUeTF2d09XRE8ySDVmLzlDdXpFRWp5M2FpcnRmL1ZxclE0eVo5N0JNUnQ0ckU0SjBzNStiTXdLL0dkTkxUeDJNOXpjZXhLU0gxckR1dkUvYVJXMTdOa0lUSlVpVkhWTkc5Y0NpdXk5UjAvcFJYRXRqKzRZM0tEWjVqOW1FUVRsSnVHVmtkOXorREFlT2hFblpCYkp0b3NLR04vODhCamRjK1AxOUZ3NnE1SkRkM0dVVFpwTVlra0VnTVJTNnEwVklmdXorNHhLak5VaE5qa0UwQ1NPZGhYZ0xIdnBnRng1YnVndEk2NkIxaEpzOUlTcEpkbnRseFdIVy83RFJBbUFVVzBNYTBCY2dBY1FRbFlhbERkUWxOeDNaNmN4TFIwSUhObElzNDhUMkNheVdqcjQ5MDVpSUhVbzE2ZUV4NnY2UFVDUmtpK045VWc1Ulh3TG0rU0ZIOGFHS1J1MDZBSGtrNU4wUHNweFNCNW1RTzFoTk10bUF3elVrQ3N2S092LzJ6dVZ3U0w0aGNOQ1RtdlRIRHpRRFhrZ2xaQ3JnZmRWMnRVenkzTVhMZHVIbDFTUndBREpwenczdjFWRzdoMjIxNVZBTmJuOXhJNThWclExTURqaTEvT0xCOGZuM0NuRlBBaW81NnA1N0hWNTdGYytDYlFtWi9VU1VGZkYzVHRkRFRoQWhwa0FHT3lKRE9sZHRkRVlLeTlseFprcVphenNub1Y4YzQxeTZ6aVVSdnFTM1VTOGpTRWU4eFlqSlBWUFYwYWlDbzEwYzA2blpDYmlTMG1MV29DeFlaTVQ2SWRKRlNCR0dHSUllV2MxRVVra21SS0VyZmw1S0RLYXdQRW9UeXlsRWxPS1MxRStGRWZNVEgxcE50NW9kSmRLaXBBRmZ2M0ExZk10dXdVZHpKM0NJNnlxdVR6S21QYXFKL2tCTXZHYzUwQ1ZSa3pJMURvenRsNDVOTDAzQlhWZWVwWTU0dGR6ZGt2RnZUMzRPbTE4NjZrZ1Uwa3U1SkkwUXlXcUNrZmJLcE94RW5KdElrc2c4ajRDRHJxSzZVWlhxSndxTkhBOHRoQm1kZUJiY2lqS2ZrZmJVSS9yVlNTQ2tVNFFySFdUZHhSOWhkK0Zjam82U3YxK0Rmeng4T1hZK1A0VWpqeU5IRXJLenlobHZEeURId0p4a0xIbnlLblV4VDAxRHU2TUxPL1NkUjhiai9YbFg0TDdmWGFnbGJDV1NSVUpJUGxJY0lWSzlBd3R1T3c4YitZeEZqMXlPZTY1Z0o5WHJSTFNZVUJvaU9iN2RYNFc5QlpRVU1rTHRUdng2VWk3T0ZmSVNZMG5VaVJUMVVrZFl6Rmkvb3hnTmNxNmptTVJmbmM4QlNiVUFseERRaDQ4ZUdJdGh2SC91TFVOeDQ0aWNveXZkTHBzVGI5T21DWVFpS3N4dm1GTlNwSENnZlRkL0l0NWx1YjkrWmhLNnkwcTVTR0xDeGtRbEpQMkp3dEMwYVN2Y0ZXVzhQVlJxZUtERUppQm0wbWc5cEcyZ2pteTlNemhtc09tcFNaU0dsQmc2TWdka2tQVWtoTjVwT28yQ29jNXA4T0QvSmphUVUwVG9TU0JXOWJxMGZNQ1I5Y2RKL1RIbnlsdzFUbkFEOVQxZER5MmVoMUZHYWdBKytQcVFXZzhWSk9xMXd6cHI1enB1RWowdlphTTNWVjVqeC9aQ0VsL0h1MThWYXAwcnc3UFJnUWR2UEVlTDBESGo4dDY4bC9HU1BlMnVsMWJzMWlKMFdOVEZUZjNaN1BqdFQxK0YzQzdOdS9GN2lwcFREWEJGemNKOUVtMWtzSCt4a2VXVEc2VUZBdUdHZVZBT2pHazAvdG9RaXQvdDVDT3RQRGVHdUtIWk1wcjlsV1pVYUtuQ29UVnB3a0h0YS8vTnZFZ1FOUmVBZERIczNDSzU5RVFoRTIwdnI4N1g3QVdXMTBUMTJGazNoUDFJRVZ0STZpSzNrZkJWb2lwMGJKWHRCZjZCd3M4aGZXbi9CT0Rpc3pLUUlvdUVjai96M2xQcG9Da1NvRnJVdVo3bWRvcFZKWEl6VEdKdnlTUlFjSkZQQ0FibmhoMjhueG1GUU93TlUwWlgvYW9Ob2RkSENoMk96S3JSR1NhOFBlQU5mWERnenJZd2pXeWthb0JSNjVSWWRtQ0d2azNBRDU5MHJyOCtQTi9tdDBHSURXS3c2cDF2WXBwdXNwTXVBR2JtWi9SdmZlQUFhcVJrcTZUM2NpeDQvQU5LaDBrR1hVallpY0xnL0dMdk1jbGg3cEd0WDdVZmZsaDEyaFpIeXlMRUNGTXdwMUZuRENWS0xUdGp5SngvSWVmWGk1Qno2eUowdjIwUlpqMHJyaVVKSUdCbkY4aDJTaDFIS3RqUkRCTVltYmRabFFUQlVFVGQ2bDZPV0E5MjhVTGFFUVpQVVFYcnJsY2dDQ1o0U3NXRGlTQWNSTms0dlFIaWhCSmtYNTBUQmZRcUNpaitEelR5VTd3cXYvZEVJdFVHcUFYRlRtTXpRS1dHSGVSQ1BqVmNJVWQ4ZE5JQzFFbzdJRVRqTjBPa2lhdm9nSDcxTTBlNGpnc05sTjRWNzZLV0VzRi8wQWhGSlQyY0trcU1TanVxSk42UEVQdmxkSVRCa0NSR1ZMTzc2SWRDNTlhenUwUzMyaUpRVlVzQVRBeXcrRFVCaVJGUHoyRGR2SW40Z203d1p3dXVERDRldndKclhweUNCVE9hdDB2NnhQZ05NTHJDY3VXb1FlbGpSeWswT29NTjVsTU5nMmx3Ti9aL3VJVWlFN3pGUitEY0ZUdzc5N09FZEZBWTZXRUpYS3ZoK2JuZEVuRkJqeFJjMkN1MXhUR0sza2kvVFAyRkx5SlZqRmY5ZmcrWkVjN1Y5SWxhMG0wUk1YdWpWZGU3L1dDd2p1clBlcmVjSUpFOW1ENlBHNDN2cmRKRElnaUZXN1lweW1ZaW9vNGR2ZnRJdlhyZUdwd2oyeHJFd0ZTSjRVVnhYWURLSWV4T04xemlSZ3N4U1p3WXV0VkpTY0hlMEttR3dUcjQyRHZEWmVtKzZrLzM2MWMvWThpZ0RpUDJiN3UwcHpydHJWcHU3TUR2OW1vdmI3VUd1ZGtraDd3dXFuZitOeUd2Vlh5MnV4elZhandUa0hpOWtxS1IwczY3NXcxUm80Y0NjWW1zZjBzM1Nid1lJenFnN3VuWDlKQ2ZNY0tvbFlsRDZPcEw1MG1jMVl4NzN2aEdpd2lBUkozOW04VW9DcG1qbUtET3BqSldFdERkZmZUZDdXcTRIMnUvbE5sWG5raitOR2F2SGRGZGkyaEhHQXhXQzJKblRTWTFaUCtFMERnUVBwSWpFOVYzellmSGR1Sno4K0ZHMnhtSlk5UmpjUGRrZE85Q0NTQzJnOFdJQ25vakYvNWhLUW9xR21tait2RFBqUWZSYThZNzJGWlFnMXREOW9RTTZwYU1mdWwwQm1SaHoycENlV2tENWkzWnBzWnR5Q3ZIdzR0NW5pQ3ZtREtlZWMyVXFmeDJobXJ0cFB6WEhUUktwUVdFcW5JMFE1RWtUUTZVamczZUM5RXFCR2YxRTRTQzkvNWpOTENEWHAyMFpKd1ZYeHlwUTg3VTEyRVkrVHl1KzgrVnlKYzlGUmtkc0dMVlBxcUs0QTFNZjVsQnFaMWZyVjFreHVNdTJYaDArZDh3L0xmdnFzdjFhcDdsRFpoejNVQWt5NHB4TzBNbGh4SWRoZlIvUGtPZjVhQS9LQWp5ZHB2ejgrOVFlZTljUGVRWUlMOFVFWVBDTS85bkNDVDRhRnk0ZVA4ZkxhRS9KQmlCejJoWjNLUFF5c0lFZXZKUWFJL1FJNCtWajVxSU9NYU0wSUN1U2Zqcm5CSHFjcjNxOWtmVG84aEpCbVF2YldmWlVFQVUxZUszMHdmai9ON2FpcTBmMXczdml1bVRjbFVDcUNOSk5qWjFwRWNqeHFxVXU5cU9YSjR2dVBVWWRxRy83T0dLcG9acjhkSU80WkljRDBlYkpQYWFpVEFQN0UvMUlyT2lMYk15SVFWMWo4eEQ0L0tXK3hMOGNMaDg4QjJnVVpZblJ6bnlBMVloL2RndHkrMTZmRGxIalR0dzR3NXg0TERFMHppVFkzOWwrQ2xqaWR1bnBTazhXQU5YR0RkUXNFdldML1MwWmZ2NXJKQU5ONVVOZEJYOXo2SXhXUnd3dlMyd3lkNlNQZnF6K0ZtcGRtSW9mUGpMOUNGNGVzNUZsQUpzT3psa2FWL3kybGFzZmk2ODh4SThPK3Q4ZFEwbEZIKy9heVJtanVzRGJENENsUEkrMlhjaDkzOWJoREVETXJIdHBhbDZ5bUFVbDlJejB0c1JlWlZ3K0RjbTZUaFl4anp5S0trWTc4dXZZTFl0NTdLT2g2QlhFM3d1THc1bm5nOWZaUk9sUmZCQ2tBWUZUZGlGOU5mZlFJZHBFL1N3OW9ZVTkyVEdRZnZncTRKcXJDUXBaSzNrNXBIZDBWSGQrdGM2UExrcUQ1VVZEWWlMajhaZEUvcnFvVDhPSEYvdWFQbmVpblBIZmhUMnZ4Um1wTElMV2s2NitDZzczU2hIeXNLSEVYL0w5WHBvQkQ4VitKcWNxUG5yeTRqLzQ3VHdMelc1OWgvR3dSNERZVlZmbWc0L1pkdUUzVWo0OWUxSWZla0JQU1NDTXgxTkczZWlkdDVMU0h2ck1TaG1jM2h5Q0Z4N0NsSFVkd3pKSVhNZE11MGJta3loQkNtR0tiY24wdDkvRmVZZXdidWdJaml6VVAzUTQzQnVQNFQwdDU3UVE3N0gxamYzeVVaMi9pb1ljN05JZ3BidmtBaFpUTWlFZDBjcER2Y2NodnJYNkg3cENNdTJDRTVMT0Q3OUNvVUR4OEhVTlNlSUdJSmpTbzVBbEV6K0pScmYrNWhxUnFSRE9ENHBjS0VRcGw2OWtQYmlvNGdhUmY4OWd0TWFybTBGS0x2bkx2am85WFRhc0JSS21CWGZZMG9PUDRRNUdlKytqc3hWOG1VcDFYUjFLN1VJRlg1ZWVkWGQ2NzY4R2hTTkhvK1NjVFBWcjIrSTRQU0RjLzEzS1A3RkwzSDR3akZJL05WTVpIK3pJaXd4QksyU0hINTRhdXBSZnYzdHNIKzBsaW9sZ2ZJaWhxSEIvclZrNWtVZFA3MndYTmlmeHMwek1IZVc3L2FJNE1lRU02OEFwYis0aWM3R1FTUStNQWZKZjc1VGp6azJqaXM1QW1GTWpFUEdpb1hJWFBjT2xPeEVlaXc3U1lMZ3lSV1pnWkR2TWhmeXVEL2ZqY05kQnFKNHhFMm9mMldSbGlDQ2RvT1BYVk45N3dJYzZqZ00rYjF6RUROK0RMcVc3V3dWTVFRbkpEbEMwZmoreDZqNi9ZTndIenBBTXNpUDFvVGZqQ0kvZjZGOTJYMGo0dStlZ3c3WFh3WHJPWDMwMkFqYUVwN0thdGorOVFucW4zNGREWnZmaFFYZEVYdmRaQ1MvOEFBSDk0bDlEY1ZKazBOdUVpbmhyYmZEOGRYWEtMMzBSbDRaVllrQnlNOWhTS3cvbFFaUk5SN0lub2NvV003cGkrZ0pseUQrcmx0Z2pHL2VJUlhCeWFGMi9tdXdMMXNENTVkYjRHbzh3SloySTJYMnZZai8wMnlZT2dXdjZiUVdQMGh5aE1LMlpDMXFuMTBJKzVvMTFGZFJKSXEvVUtIVDNmSzdDUzRTcFpaL0Q4TGE1V0xFWG4wWllpYU1nUFc4SVRERXRmOEs1SmtFK1lKZzU4NDgyTjViaWFibG44SitZQjFiV0h2djE1elJIMGtQL0I1eHQxMmpYdjhRdENrNS9IQVhsNlA2TDgvQTl1RXkrQXJyV0hBVHlTTEdxNW5ub1krVFgxNnlNMVQ3MFIzRmtnaFRUaHBpcnB1STZDdUh3NVRhaVQ1NHVwNjJHY0V5NmFjTHI5MEoxODU5OERSV3dQYmlSN0N0WHc4VTFyUE42clgyb3JRMkpLWEFNbUl3a2grOUY1YStiYmNwNkpTUXd3K2ZoOUprNldvMHZycVllbkF0SzFQUHFpU3hRbGFWTU9FaHY3M2k1bEhMczNxWW9ySmd5czJDdGU4UVdDOGJDRk4yRjBSZE91d25TUXl2dlBmNzdTNjREK3hIMDRhZGNINjlCZTdTUXJqM0ZiSTk1QnNkUldVYjFjRWt3eU42N0dYb01HMFNvc2RmQW1OSzI2dm1VMHFPVURTK3RSSzJUNWJCL3M0bWVLdkwxTkZ2cEVUUnBJbzRUbjQ3UmVEdmZpR0x2S2pZb0RhUVFLR1paVkJpWURxM0w2eVhENFF4aWRJbXZnc3NRL3JCM0s4cnBVLzc3clZzTGFSbTN2SnFPTGZzaFh2WEFiaDlKZkFjcWtiVDZtM3diTjhIcjZlUmFjVDc4N0NPL25hUjJzdkdaYU1hRmozN0VrU2ZOeHB4TjdmOUYvR0ZvbDNKNFlmUHd4R3ljejhOcU5Wd0xOMkFwbjFiNEN1VDkwamRiSkRtWDNCU2Q2RWRKWXRBSTQvOGt3WVV1MFhiT1MvbkVzZEROVmVpWUU3dkRHTzNOUFdRZDNNTUZyclhIVk5neUVxQmtwWUVZM0k4bE1RWTlTNHRYeE1VQTcwdEEwMXBrL3kyWENBWUwzdEJaRHVnbDg5Uzk2RG9MandUZXF2cjRhbHVnSys4QnQ2U0tyakxxK0J0cW9PM3NZR2RYd0Z2WVRYYytSejlTZzE4TG5hOFMzdWlWamRSdFJiMTBDQ0RnZmRLVzhRbndOeXRLNkxGSGhzN0VwYkJmYUhvUHpMUUh2aFJ5QkVLYnlNOW5yVmZ3bFZkaVBvSDM2SllQUkR3WTRDeFBLTFlqSlFXSEQweWdwb0pFMXAwdVJhclJqcFBmalRRclI3UzRGcDRjd29OL21rZUlhS01USkpDZGsyMStLWkVkaVdKSVIwckkxbnlseS9kMUVncTBEN2xXcncweVY5N2p1UXI2bFB5RmdMSXVVWjRiVU8zNU5IRWd5UWkwV1czdjVIMlE0Yzdwc0l5aUZKeHlGQ1lNdHYyV3c1T0JLY0ZPY0xCblY4TTUvNDhOSzNiaHFidDM1SXcxTDFiODltSUpXeGtFYm55ZzRFZGVFaEgranMzY0U1UEc1dk5uNExRcWdaZk4zZjJzYUE1NkJvQzh6MFdoRWhDQUNHQ20zOUZOZGFxenpHYnU4TTBvaXNzNmIwUk5YNDR6RDI2SXVxQzArdXJ0MDliY3JTQVNQV0tLb3AwQjF3N0N1QlkrUTFjbTdmQVkydUU5ekNOMTRwcVNodUtkaWRITDhXK0pqMWtKRXYxcENQOTVOSElwQkZLUHYxalhmc01oVVlZL3lGNSt2UDJmL29sZ0o4NjRuM3hXZFNNQm1NSEdGT1RZT2ljQUdOOElpeERCeUg2bWxHcVNqUEVKTUJ3Z3BOUzdZMHpoeHpmQTZtQnQ2SVdYZ2ZKMFdBalVhaXpDMHJoa1Yrejl0WEJSM2ZRVjFMRGNMcUE1YnltZmVCcG9LMVNROVZsYTZLN1NOdkZSUlVtNzZZR0VZVEdJTzBQeFdxbUdXT0JNUzRhU2x5VVpxdWtVQVdrc1pOVFNZQk9GUDFlTXpzOEdhWk90SEU2cGNLUVFPbG1wVXFrZlNON2hjODhBUDhQY1lGNUFLUCtxaDBBQUFBQVNVVk9SSzVDWUlJPSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzEiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkQmxvYiIsImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJsYXJnZUJsb2JLZXkiLCJtaW5QaW5MZW5ndGgiXSwiYWFndWlkIjoiOWEyNzI1NTg1Y2ZhNDQyNGJlMzc2NTUwOTY3N2I3N2QiLCJvcHRpb25zIjp7InJrIjp0cnVlLCJjbGllbnRQaW4iOnRydWUsInVwIjp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibm9NY0dhUGVybWlzc2lvbnNXaXRoQ2xpZW50UGluIjpmYWxzZSwibGFyZ2VCbG9icyI6dHJ1ZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjpmYWxzZSwiYWx3YXlzVXYiOmZhbHNlfSwibWF4TXNnU2l6ZSI6MTE1MCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0IjozNSwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoyNTYsInRyYW5zcG9ydHMiOlsibmZjIiwidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN31dLCJtYXhTZXJpYWxpemVkTGFyZ2VCbG9iQXJyYXkiOjEwMjQsIm1pblBJTkxlbmd0aCI6NCwibWF4Q3JlZEJsb2JMZW5ndGgiOjMyLCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6MzJ9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiTk9UX0ZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMTItMDQifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTEyLTA0In0seyJhYWlkIjoiMDA1MiMwMDAyIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWlkIjoiMDA1MiMwMDAyIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6ImktU3ByaW50IEFuZHJvaWQgRmluZ2VyUHJpbnQgVUFGIEF1dGhlbnRpY2F0b3IifSwiZGVzY3JpcHRpb24iOiJpLVNwcmludCBBbmRyb2lkIEZpbmdlclByaW50IFVBRiBBdXRoZW50aWNhdG9yIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoidWFmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX3N1cnJvZ2F0ZSJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsic29mdHdhcmUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsic29mdHdhcmUiXSwiYXR0YWNobWVudEhpbnQiOlsiaW50ZXJuYWwiXSwidGNEaXNwbGF5IjpbImFueSJdLCJ0Y0Rpc3BsYXlDb250ZW50VHlwZSI6InRleHQvcGxhaW4iLCJ0Y0Rpc3BsYXlQTkdDaGFyYWN0ZXJpc3RpY3MiOlt7IndpZHRoIjozMjAsImhlaWdodCI6NDgwLCJiaXREZXB0aCI6MTYsImNvbG9yVHlwZSI6MiwiY29tcHJlc3Npb24iOjAsImZpbHRlciI6MCwiaW50ZXJsYWNlIjowfV0sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6W10sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUs0QUFBQTlDQVlBQUFBMC9sSURBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBS1RXbERRMUJRYUc5MGIzTm9iM0FnU1VORElIQnliMlpwYkdVQUFIamFuVk4zV0pQM0ZqN2Y5MlVQVmtMWThMR1hiSUVBSWlPc0NNZ1FXYUlRa2dCaGhCQVNRTVdGaUFwV0ZCVVJuRWhWeElMVkNraWRpT0tnS0xoblFZcUlXb3RWWERqdUg5eW50WDE2NyszdCs5Zjd2T2VjNS96T2VjOFBnQkVTSnBIbW9tb0FPVktGUERyWUg0OVBTTVRKdllBQ0ZVamdCQ0FRNXN2Q1p3WEZBQUR3QTNsNGZuU3dQL3dCcjI4QUFnQncxUzRrRXNmaC80TzZVQ1pYQUNDUkFPQWlFdWNMQVpCU0FNZ3VWTWdVQU1nWUFMQlRzMlFLQUpRQUFHeDVmRUlpQUtvTkFPejBTVDRGQU5pcGs5d1hBTmlpSEtrSUFJMEJBSmtvUnlRQ1FMc0FZRldCVWl3Q3dNSUFvS3hBSWk0RXdLNEJnRm0yTWtjQ2dMMEZBSGFPV0pBUFFHQUFnSmxDTE13QUlEZ0NBRU1lRTgwRElFd0RvRERTditDcFgzQ0Z1RWdCQU1ETGxjMlhTOUl6RkxpVjBCcDM4dkRnNGlIaXdteXhRbUVYS1JCbUNlUWluSmViSXhOSTV3Tk16Z3dBQUJyNTBjSCtPRCtRNStiazRlWm01Mnp2OU1XaS9tdndieUkrSWZIZi9yeU1BZ1FBRUU3UDc5cGY1ZVhXQTNESEFiQjF2MnVwV3dEYVZnQm8zL2xkTTlzSm9Gb0swSHI1aTNrNC9FQWVucUZReUR3ZEhBb0xDKzBsWXFHOU1PT0xQdjh6NFcvZ2kzNzIvRUFlL3R0NjhBQnhta0NacmNDamcvMXhZVzUycmxLTzU4c0VRakZ1OStjai9zZUZmLzJPS2RIaU5MRmNMQldLOFZpSnVGQWlUY2Q1dVZLUlJDSEpsZUlTNlg4eThSK1cvUW1UZHcwQXJJWlB3RTYyQjdYTGJNQis3Z0VDaXc1WTBuWUFRSDd6TFl3YUM1RUFFR2MwTW5uM0FBQ1R2L21QUUNzQkFNMlhwT01BQUx6b0dGeW9sQmRNeGdnQUFFU2dnU3F3UVFjTXdSU3N3QTZjd1IyOHdCY0NZUVpFUUF3a3dEd1FRZ2JrZ0J3S29SaVdRUmxVd0RyWUJMV3dBeHFnRVpyaEVMVEJNVGdONStBU1hJSHJjQmNHWUJpZXdoaThoZ2tFUWNnSUUyRWhPb2dSWW83WUlzNElGNW1PQkNKaFNEU1NnS1FnNllnVVVTTEZ5SEtrQXFsQ2FwRmRTQ1B5TFhJVU9ZMWNRUHFRMjhnZ01vcjhpcnhITVpTQnNsRUQxQUoxUUxtb0h4cUt4cUJ6MFhRMEQxMkFscUpyMFJxMEhqMkF0cUtuMFV2b2RYUUFmWXFPWTREUk1RNW1qTmxoWEl5SFJXQ0pXQm9teHhaajVWZzFWbzgxWXgxWU4zWVZHOENlWWU4SUpBS0xnQlBzQ0Y2RUVNSnNncENRUjFoTVdFT29KZXdqdEJLNkNGY0pnNFF4d2ljaWs2aFB0Q1Y2RXZuRWVHSTZzWkJZUnF3bTdpRWVJWjRsWGljT0UxK1RTQ1FPeVpMa1Rnb2hKWkF5U1F0SmEwamJTQzJrVTZRKzBoQnBuRXdtNjVCdHlkN2tDTEtBckNDWGtiZVFENUJQa3Z2SncrUzNGRHJGaU9KTUNhSWtVcVNVRWtvMVpUL2xCS1dmTWtLWm9LcFJ6YW1lMUFpcWlEcWZXa2x0b0haUUwxT0hxUk0wZFpvbHpac1dROHVrTGFQVjBKcHBaMm4zYUMvcGRMb0ozWU1lUlpmUWw5SnI2QWZwNSttRDlIY01EWVlOZzhkSVlpZ1pheGw3R2FjWXR4a3ZtVXltQmRPWG1jaFVNTmN5RzVsbm1BK1liMVZZS3ZZcWZCV1J5aEtWT3BWV2xYNlY1NnBVVlhOVlA5VjVxZ3RVcTFVUHExNVdmYVpHVmJOUTQ2a0oxQmFyMWFrZFZidXBOcTdPVW5kU2oxRFBVVitqdmwvOWd2cGpEYktHaFVhZ2hraWpWR08zeGhtTklSYkdNbVh4V0VMV2NsWUQ2eXhybUUxaVc3TDU3RXgyQmZzYmRpOTdURk5EYzZwbXJHYVJacDNtY2MwQkRzYXg0UEE1Mlp4S3ppSE9EYzU3TFFNdFB5MngxbXF0WnExK3JUZmFldHErMm1MdGN1MFc3ZXZhNzNWd25VQ2RMSjMxT20wNjkzVUp1amE2VWJxRnV0dDF6K28rMDJQcmVla0o5Y3IxRHVuZDBVZjFiZlNqOVJmcTc5YnYwUjgzTURRSU5wQVpiREU0WS9ETWtHUG9hNWhwdU5Id2hPR29FY3RvdXBIRWFLUFJTYU1udUNidWgyZmpOWGdYUG1hc2J4eGlyRFRlWmR4clBHRmlhVExicE1Ta3hlUytLYzJVYTVwbXV0RzAwM1RNek1nczNLellyTW5zampuVm5HdWVZYjdadk52OGpZV2xSWnpGU29zMmk4ZVcycFo4eXdXV1RaYjNySmhXUGxaNVZ2VlcxNnhKMWx6ckxPdHQxbGRzVUJ0WG13eWJPcHZMdHFpdG02M0VkcHR0M3hUaUZJOHAwaW4xVTI3YU1lejg3QXJzbXV3RzdUbjJZZllsOW0zMnp4M01IQklkMWp0ME8zeHlkSFhNZG14d3ZPdWs0VFREcWNTcHcrbFhaeHRub1hPZDh6VVhwa3VReXhLWGRwY1hVMjJuaXFkdW4zckxsZVVhN3JyU3RkUDFvNXU3bTl5dDJXM1UzY3c5eFgyciswMHVteHZKWGNNOTcwSDA4UGRZNG5ITTQ1Mm5tNmZDODVEbkwxNTJYbGxlKzcwZVQ3T2NKcDdXTUczSTI4UmI0TDNMZTJBNlBqMWwrczdwQXo3R1BnS2ZlcCtIdnFhK0l0ODl2aU4rMW42WmZnZjhudnM3K3N2OWovaS80WG55RnZGT0JXQUJ3UUhsQWIyQkdvR3pBMnNESHdTWkJLVUhOUVdOQmJzR0x3dytGVUlNQ1ExWkgzS1RiOEFYOGh2NVl6UGNaeXlhMFJYS0NKMFZXaHY2TU13bVRCN1dFWTZHendqZkVINXZwdmxNNmN5MkNJamdSMnlJdUI5cEdaa1grWDBVS1NveXFpN3FVYlJUZEhGMDl5eldyT1JaKzJlOWp2R1BxWXk1Tzl0cXRuSjJaNnhxYkZKc1kreWJ1SUM0cXJpQmVJZjRSZkdYRW5RVEpBbnRpZVRFMk1ROWllTnpBdWRzbWpPYzVKcFVsblJqcnVYY29ya1g1dW5PeTU1M1BGazFXWkI4T0lXWUVwZXlQK1dESUVKUUx4aFA1YWR1VFIwVDhvU2JoVTlGdnFLTm9sR3h0N2hLUEpMbW5WYVY5ampkTzMxRCttaUdUMFoxeGpNSlQxSXJlWkVaa3JrajgwMVdSTmJlck0vWmNka3RPWlNjbEp5alVnMXBsclFyMXpDM0tMZFBaaXNya3cza2VlWnR5aHVUaDhyMzVDUDVjL1BiRld5RlROR2p0Rkt1VUE0V1RDK29LM2hiR0Z0NHVFaTlTRnJVTTk5bS91cjVJd3VDRm55OWtMQlF1TEN6MkxoNFdmSGdJcjlGdXhZamkxTVhkeTR4WFZLNlpIaHA4Tko5eTJqTHNwYjlVT0pZVWxYeWFubmM4bzVTZzlLbHBVTXJnbGMwbGFtVXljdHVydlJhdVdNVllaVmtWZTlxbDlWYlZuOHFGNVZmckhDc3FLNzRzRWE0NXVKWFRsL1ZmUFY1YmRyYTNrcTN5dTNyU091azYyNnM5MW0vcjBxOWFrSFYwSWJ3RGEwYjhZM2xHMTl0U3Q1MG9YcHE5WTdOdE0zS3pRTTFZVFh0Vzh5MnJOdnlvVGFqOW5xZGYxM0xWdjJ0cTdlKzJTYmExci9kZDN2ekRvTWRGVHZlNzVUc3ZMVXJlRmRydlVWOTlXN1M3b0xkanhwaUc3cS81bjdkdUVkM1Q4V2VqM3VsZXdmMlJlL3JhblJ2Yk55dnY3K3lDVzFTTm8wZVNEcHc1WnVBYjlxYjdacDN0WEJhS2c3Q1FlWEJKOSttZkh2alVPaWh6c1BjdzgzZm1YKzM5UWpyU0hrcjBqcS9kYXd0bzIyZ1BhRzk3K2lNbzUwZFhoMUh2cmYvZnU4eDQyTjF4eldQVjU2Z25TZzk4Zm5rZ3BQanAyU25ucDFPUHozVW1keDU5MHo4bVd0ZFVWMjlaMFBQbmo4WGRPNU10MS8zeWZQZTU0OWQ4THh3OUNMM1l0c2x0MHV0UGE0OVIzNXcvZUZJcjF0djYyWDN5KzFYUEs1MDlFM3JPOUh2MDMvNmFzRFZjOWY0MXk1ZG4zbTk3OGJzRzdkdUp0MGN1Q1c2OWZoMjl1MFhkd3J1VE54ZGVvOTRyL3krMnYzcUIvb1A2biswL3JGbHdHM2crR0RBWU0vRFdRL3ZEZ21IbnY2VS85T0g0ZEpIekVmVkkwWWpqWStkSHg4YkRScTk4bVRPaytHbnNxY1R6OHArVnY5NTYzT3I1OS85NHZ0THoxajgyUEFMK1l2UHY2NTVxZk55NzZ1cHJ6ckhJOGNmdk01NVBmR20vSzNPMjMzdnVPKzYzOGU5SDVrby9FRCtVUFBSK21QSHA5QlA5ejduZlA3OEwvZUU4L3NsMHA4ekFBQUFCR2RCVFVFQUFMR09mUHRSa3dBQUFDQmpTRkpOQUFCNkpRQUFnSU1BQVBuL0FBQ0E2UUFBZFRBQUFPcGdBQUE2bUFBQUYyK1NYOFZHQUFBYWhrbEVRVlI0MnV5ZGVaaGxWWFgyZjJ1Zk85U3RxaTZxZW02bVptajRtb2JFK0JHUk1TSkRDSk1RQ1lvZ0NrSEZLWUlHSVFvbU9BUWt3U2lScUlnQ1JpTUVHVVFrWUFRUlpBb05DQi9JNU5EZEFxR2JucnU2cXV2ZWU4NWUzeDk3M2E1VHA4NnR1bFZVUXpyUFhjOXpuKzQrd3o1N2VQZGE3MXByNzkyaXFyU2xMVnVidUhZWHRLVU4zTGEwcFEzY3RyU2xEZHkydElIYmxyYTBnZHVXdHJTQjI1WTJjTnZTbGpadzI5S1dObkRiMGhhZ01OWk5FWmtIOUFKSitqS3dFbGd6aWUvdGJ1OXJxaXdIUEovNnh2WkFWK3FaVnlNQ2JBSitQODV6MDREOWdIMkFSY0JNb05QdURRSHJnZDhCandNUEE3OGU3OE5kVWNUbHUrNUJiNkZBc2hXbjFRV0tUdlVkQ2tjZzdBQ1VnZGgrbTBUNUduQmIzcnVLNE9YVmZmK0VweCtmT0hDQm5ZR2ZBc1hNOWNlQlA3RkJiVlUrQ0Z4bVlFcC8vMnJnQTZsclh3ZU9tTUsrWHd3YzBPVGVUT0JzNE4zQS9CYkwyd1RjQzF3Ty9QaC91V0xyVTdneEVYa3JtWUZyaUJmdWJnYmMxNU1xUEFEOHN3RTMvWHNUOFBFSmZHYzc0UE5BS1ZQT2Z3T2Z6bWowVXM3M1hzMnYxS1JPYndidUI4NmZBR2dCS2pheGJnVytCL1RrUGVSUi9oY3NYem9QZU91d0JoMzlteUxMT0xWVXdlU3p3T0hBM3Bucm53WnVORE0vbm56UnRGdFdQZ3lzR0RYbVV5dmxuR3U3R2ZCbWpmRmViQk9xMUVUWkFKd0N6QWJlbHJVK1hTNmlKTEkxZ3pjQ2pzbTUvanp3bFBWUFh3czA3SFVEN2hCd3BtbW5OQWk2Z1M4Qng0N3ovaEZtaXJQeVRlQkhMZGJ6Q1dEMUpKeEpBWjdKdVg1SkU5RCtBcmdPZU14NHZEZSt2Y2pBK1k0YzJuUTQ4RGZBaFNObVJxV0w2WVVDZzk1dnJjQ3RBRE55S09KQndNYi8wYzVaU2g0MVUvK0Z6UFZqZ0JPQkh6UjVyOVBBblpYZjJtQzNLaDhGN3B1aU51OENISlZ6L1IrQmM1dTg4eFJ3UGZCdDRQdkEzSno2L1l1QkhZQkZuVjFqS09xdFJ1Tm1HL0RML3dtZ25RaHdBZjdCQm56L25BRy9FMWliODg0NXdKNDVWT0JEVFo1dkpzVXBiUE1mNWRDSEpjQUZMYng3dDlHYm16S093Z3lRdzRCclBVcEpISHQyZGhPUGppYk1BL1lBZGpReld3U3FGcUg1UGZCc0RuVnFWV1phMlRzQjA2Mk5pUUZ0RGJBTStNMEVva0ZKTG5XZm5Nd0g5cktJVVkrVnM4YjYvVmZwQ2I4bGdGdTN5TUJEcVZCUm8xSi9tK09zN2RGRWcxMXVrWXFKbXZ5cGtqazUxMTRDYWkyK2Y2dFJpVjBCRllHQ0lzRHVJTlJRRHVycFkyRm5GNFBKNXJFL0RuaS9SVGQ2eHloN3RUbkVWd0UvYkxFKyt3Sm5BWWNZM3g1TGxodmwrelp3ZTg3OXM4MkNlcHRVMDNNczdMMHB5aWJBVjVwWTNBaDRKM0FHSWN6WTNhUk9LNEdmRzNXOGMwc0FGK0JKQSttbG1lc2ZNUk82T0hYdG40d2ZwdVdaRmpYYmxwUThnRFkwMWRJVzNvK0JQd01xQ0Y0RXZPSmlkQ01vODBwbFRwbzloM3JndGhYZ0N1RFVGdXMydzN5R1k0RWJET3pyeG5qK0hPQ2lDVmlrdWNBSjlydlNyRWVjdXI4d3g2Sm1KMzEyNHQrVTg5d2lRbGp6VDFxbzB5eWJMQ2NDMzdWSnVIYXFnWXZOc0tQVFlSTHJ1QzhEQjF0SHZNc0dOMnQ2UGdqMFQrS2I5U2tFN25OTkFIT2JUYXE3Z0EzamxKRnIyZ29pbkxQOWZMWXJkVERnRXlUdysxT2JhTDZYckUrMkljVExzMkc3dnpEZ0g5ZkViSjlzTkMwckc0eDJESnBtN0RGcTBwRjU3djJFcE1vWFg2Vmx5NzZ6anpuZGVaWnRtVkdoQXJCRGpvTjhLckRBTlB1YXFRWnVZaHoxWVViR01BOEEzbXVhOTVLYzk3NWtabVl5c3AzeG84bWtxSmRudE95anhpVVg1bWlKbTRBWHpBbDUya0kvUzYyTWw3UGFMMUlRQkMrS1F6aHAxbHdXZFhZemtDUklLUC85T1FOM25wbkUxYWx3M1M3QWFjQW5NbU55TlBEMkhGUGNEZng5NXRwR20zZzNXbDBiWU84d2tKd01mQ3JEN3o4SWZCVVlzSDh2Tmg0ZTIwUTZMUFA4TXFOSmtxSUR6MlEwK3ZVNW9MM1ZGTnNqS2NVMTIrak5lZVozTkdRL293MG5Na2FNV01iYTVTc3k1Z1Q4c0huUzJZRjUyRDZhRGFQc1Q4ZzZqU2UzNTJqclFkTzZrOUVJaDFxSHBlVlk0SllKbEZjMTBDNnpnWG9BdUtjQXorR0VXSUpEZHVsT3U3Tnp1VUkxMElUVGphdW01VStCbjZxQUtLZ2x2d1ZBRlVUT3pabjBQODRKT1I0UDNKeTVkcHFxZm9mR2VEcVhwdzYvYUVCSk8xdDdrQitMTDFsNzB4R1VLeG1aNWN6S0ZUbjNMeEdMSVBtTW1yYTY5V2hJNUdUYmVCendvOG1tZk1lU3I1dEtQekxqcU0zUDRaUWZiQkcwakJGV204ckl5YTJtZ1M1cndhRnBhTVVHdjl2SExNdVFJdjhKY2dub0F6WHZ1V1h0U2o0eGR3YzBERkdmS0xoR2VrbEFrUUh2QkhXQ1duS2lwZ2tPb2NzVlNhcTFLOEtrbFduaHRqampleEtnclRib01pdG9QazAwT0laclZmWEdRa2VKN2huVFVWVldyRjZKOTU2aU9BbzRuRmZFKzRjeTdYSWovSkNHb2dyZzc4eVoySVc4WjYySk84bW9lTDM4RE9GdmFnS3g2SWgxQzBLWXZBV1ZEVVhQNmFCUG1HVnR5RmthSnEyZmF1Q3FPV1dQNUhpZmFia1krSy9YMFJuYjNGM09PYUlvb2w2dlEwZzAzRytXNHdSQ05tMGkwcEdnYjhQTGtjQ25FTDUwOTdyVkhOWFR5ODdsRG1xcXF5Tmxzd0tNSGFpNHExSDVtbnE1VDBXV0theEsxT05GNk4xdUh2SGcwUHFOcTljY29vQ3Z4NmhQeEN6ZkNMUG9WYjhOK2kwUlVWY0tmbG1wcTVPZW1kT0ppa1hpSk1hdmVvWEVlNXlBRTNvOHVxZW9uajEyUnhrSXRaVk8xZUg0bUlLZ1I0R2tGWXozK00vVXhEaUxCcUJtQVZRTER0THFvbks1SUJlbjd1NlB5RzVOZkpKeFY0ZU5qVnpWSlYxZFhlZDBkM2RmbGFVY0lrSWN4dzhQRGc1ZWxQZHVWMWNYenJWTVdaOVgxUTJUcEFxYm5jRmlzVWk1WEthL3Y1LzE2OWRUcjlkZk1ONzNPZUNQb2lqYXQ3ZTNkNjhvaWhZQjI1cVpMRFV2Mm9GS1VhUDRVaFY1eVh1OTdxRmlrYjFuem1FZ1NSNFVrUmdvSkJMWW9GUGQzU2xmc1pkZkFWN29SSmNJOHF5TG91Y3IwN2Y1VmJHdjV6ZmUrdzIxYXBYNjRKREcvUU5vSEk5b3Vqam5vMm1kRkRzcmxDcGxJb21LenJudEpVbm1ldSszQmViMTl2WE5WYS96UmRqUklUdHBjTkMycE95YmRhZ1ZQYVlTSWd2akRYUXNzS2VNR0Y3dEtKY3JlMDhLdUFzV0xCaTN0cVZTNmVwaXNYaVVlY0ZwV1M4aVozcnZhNU9kR0trSmNxYUkvSHpTS2xlRWVyM08wTkFRM250NmUzdnA3dTZtVnF0UnJWWVpHaHJhTkRBdzhDRHc0THg1OHlnV2l6am5wcW5xUE8vOURzQmVxdnJId0VFaU1qK3Rkd0lkOEZRaithejMvcFpuWWRQeW5tbnNXTzU0dnFwY2d1cjVDblFJSUFtcDFRdXpKZENVdlZHb3E2ZWV4Q0R5b2dxTG80N1NEWFNVYnl4T20xYVZlS1MxMU1oQnllSFF3ejI4Vy9IN2tmanRRU3RoUGduVFpzellqSFhWTFJBTkh5MDdaT21WQktVd0lSTStjdHhaTUttb1FxbFVhZ1ZVVkt2VkszS0FleC93ZUI0NEozSHNrd0FVQ29WSmdUYU9ZNGFHaGxJMnpCTkZFWlZLaGM3T1RsU1ZEUnMyc0dIREJwSWt3VG1IcXZhcmFyLzMvbmxWdmN2cTNLT3FKNm5xSlVCdm82ZExYcWtXMkgwSS80WmE0aCs2Y3Zudk9YLzdCU1RDQlQ1T1hwVEVueVhLd2lUeUxheFAxZTB0Z3ZMbm9HZUw2bWtXNFVoM1lKZkcvaHZKWms2cE9SQVlBZlkxRmcxSW1Ob2xveU9NNkZRWHFPaWNTUUUzUGRnVGpPWFJKUGI0cW5ocXZWNm5YQzRqSWkyQlgwUklrb1Nob1NGVUZSSHBzQkRWTkxVQ1ZOVUJ0L2YwOUR6VzNkMk5pQ0FpRGZCdUJub2pSaHJIOFRmak9ONEFYT3RzYmQ5Z0FRcERDdUozVFZRZktneFZxZld2aDQ0T25JdStnZmZYb0g0ZlVmWVYxVGRhK0dzKzBBZFNHZ1BMYndKK2dPcCs2ZGl5S0YrVlJOK2RNOURMZ0NjUmZnTXNFZVFsWUltUDVFV1VWMXlpcDI5QjRHYWQ3MEVWdmdzTWpVK2FjM3NnQXYzWnBJQnJUc3hrZ1R1bGhxa0IxdjcrZnVJNG50QjdsVXFsd2FkRlZmK1cwVXNzWndDUGlRanIxcTFEVmFsVUtrUlJ0RmtETytmdzNsT3YxMUhWbndKcm5kTFhpSlZSRjZRUWxUdWRjT3kwNlVqaXFXM2NpTGdJY1c0STlmZEtWTGhYbkVQQ1BPZ1ZaUjc0WFJUZFUxWDNSM2dMbzFQQ2k0QWpGTFZZcnV3bEllYWJsbFVPOTFGQi9rTWQvVHJDZFpmZ0dOVmpWTFYzQzFLRlphTkNyZWlGNHFMbElUaWl6UVlJdkVkelZ0R3BURElCTVJHQWJQSFFnQWkxV20waWsybFlGV3phUkxsY0J0aWtxcjhDM3BKNTVDamdVMG1TVkd1MUd0NTdCZ1lHTm12Y2hnWjJ6alUwZmk4aHF4VTZNUUdmUk5SalhiSHZOajBzS0pVN2F1aWJFU21vZXRVa0VXQUk3eCtNb29JWFYwQkUxa21JRFQvajBkc1VqNnJmUlQzWG1hWk55NTZwSk1SK09VcmhIOVJGL3g2RmNpMCtyS2dCd2lkeHcrTHMxWnp5ZVZCRlhEVFpJWHFJa1ZuQ0N2Qk9qZVBMeEVXNEtMOWNueVJvRW9OcUNaRkNDdUVGMCtMeDFnemNnU1JKOE42MzdOQ040Q3hKUXJWYWJXamR1M0tBKzMrQXk1SWsrUkNnRFpxUXBTT3FTcTFXSTRxaWM0RU9IVll0Uk9vSDZ5cFA3QmhGRklTT212YzNCeXFRaW1lcjM3MWVqNWVoaW9qRFJXR2MxUFlUYUVqQjNwQUQzTFE2NnN0cDRsSWZKOFRVUU1IN0VJWHdTUkxjK1NoQ0lyZVRpQnlmUyttODRtMnNYVkdIWTdRVGs5c0lLd2pUWFBjY1ZiMUJxN1dYeU9sUEVRRVJwQkQ5b1loOEQ5V0tBVmNJR2N1MzAyU0p3TllDM0JOVmRVOG1sL0t0QXpjbFNkSnZYUFZmZ1U4U05raW01VXpDWnM0dlczdzNteXV2QUc5VTFiUGpPRDR4Y0VvQkFhZEsxZkhEVGQ2L3VDbXBvNG11ODBueWxJUkYxK2xNMUlYcS9SbnF2ZmVxRFpJQklqaEFvcWhMUkk3T0lWMVB3MlpldnpJSFZvZXE2Zzk4YkpxMVlZSkZRZ1pOZFFIZWYxODFOOTdlbFRiVFBrNWFqL2JJaU1qUU1sV3VFZFdQcEI3Wkh1RldRaGJ4aVNiRjdFM2lyMVVaanFPSEpLSmN3aGpyV3JZVzRQNjF5S3VpelBlbE9tRVo4R2xWL1dyT2MyK1ZzREZ3dWFvdVpYZ1hSSitxN2lBaU82ZTFoamV6WEVwMGhTL0lCVFdmVUUxaVNCTFUrNityNmtHWjhrOERka1hrR2drRHVRNklFSmtKN0tQZXYxZEg1dTBCL2x0RWZwYUtIVHlvcW5GbTdNNEFYa0RrdXhMMjhZRklEN0M3cWg2UDZ2dlVqOXJOMEpCdkVkYkVQZ3Bja3NxRXRRamVFZVB5ZDZwNktDUFhnYndSZUpDUXJieUhzQURJQVR1cTZrR292azFITHdDNkN1ZStOZFozdHhxTysycG9Sc1BVTmpKbnFucDVITWZUQ2Z2cDhtUXVvM2M1akxheEluaVJwWVZFMzZWUllVbEpIUE9MWmVweGpLcS96Z2J4akF3bFBZaGhUVHhnM25OSFBsZzBBVDZHU0ZyN1A0dnFOU0R2eTR6akZ3anJuMWVZMnVvQjVveUVvVzRBNlFyZkhPSDhMV0tTaS9YRmpXamJhbFRmcnFvM0JmQksybHE5dzM3alJYTC9UVVErcE9Oc2VTcU14dzFibEx4eUpydStvSE9LZ2R2Vm9CaHhIRzhPcHdHZlM1SmtNV0dYN3dHVEtMZmY0NzZ2em4wTzAzSkZFV1pIUlJMMXFLcXE4Z0Y4ZlFub0o3QzB1SXdSKzh5QTl6bUlQb2x6dDRZTWdpSytNUjc2Y1EyUmtEL1BsTmxEYXNWZXByei9BUGNwOFA4RUhDcWp2eXM1VWFGcE9YUXBnN1VJaVVaZy9objEvbURSK0lzYTRzeUZzVUpNcVRxdUFMbEVYUEhMcmNTanhnU3ViMzJqMzNPbXZSb3ZPTUxTd2NuSUZZUXRNbE8xeTdERzhCSkM0amltV056YzBiZXI2dTJxZWlCaENlRytxcm9iWVkxc0phV1pZc0t5d1ZVaThwVFY3emJFL1haMDJGOHpUcFgrdmZQeDkwVDFCSVhETkVRSXBtZktyd01iWGRDV2p3djgySXZjb3M1dEhLMkFBZGdvNk51ZDk2Y292TWZvUlY5S2ExYUJEUzdRb2djUXVVbEY3bEVCNStNUG9IcXh3b0hHdStzdVRMeTdaSFJjOWpNR1hyVXhmV3kwZG92QlJhaEVhUml1UVAzcFR2MVhSUFZFaFVNMDdCalpodUZsa2xWZ25RczA1WFlWdVZZbGVxbGxUVDlXSUgrOFROVUUxaHBzOXNwSGVKU3ZnMFJSUktsVUlvNWpraVFaRVQyd3YzZXI2a3pUWEkydDZVUEFXaEY1UlVScW0rc3VCVFJ5ZEFGSnVZQjN3ajl1dHdzTEs1MzBKd214Vi9BMW5JOFJWYnhDSXE3VGk1dHRnMWcwYmJRcHhJV1RWeUxWV01UNHN5dUJpeENnRWpra3FUR1VlSnNjaXZNZXIxQjNoUmxHYlRwdHdnOEtyQ3o2ZUpXWU9mY2llSWx3UGdhdjFGMDBUWkVLc0tuZzQzN0h4SUlKa1FnZEZuMFpLbFlvUmlVVXBaNGtKRWxNVWV0RUljVEJrTmRHSFdjenZPcHNBRmhlOFBIYXFORmVpWkNvakV2UmorTWZlV0RxcVVJamRkckNZaHk4OXlNMGVPT2RSbnowdFpJV3dtb2JtY2hPMXRUeXZxR05nMXkrNU5lOFpmcE1EdWlieWF4aW1VMWF6NXJzUVF2MVVCUWhFbUhJZTByT1VWUWx0ajUzSWhTY3cwVVJpU28zcjNpWk1wNkQrNmJURlVVTUp2RklibWxXSlJLaDdCd0MxUHp3TXlYbmNDNmk2dU5HZmZyenZQWU81M0FJUStyeFRaUmFTUndiZmN6dHExZnpjcTNHazRPRHpPL3M0c2paYzltNTBvVVQ0ZmViaGhoS1lpb2k3RkxwcEI5WlhSQlpIZXJsbXpxQWxTZ2lJYXpkbUxUR2JVVXJpc2dJOEdZQm10VzB6YlRnWk1EYm1CQjU1VGVTQnRsNnFlcG1yZHNBY1FQSWpleGNzL28ybmhuV3VCRWVrS1JPa3FuSHpGS1pvMmZONWNqcGZYUTdTSHhDQVVjc0RoVkhKTUtMMVNGdVcvVUt2OXl3Z1owcm5melo5RDcyN095a000cFlseVFzcmNiZ0N0eTNkaVczdnJJY2dKMHFGZDQ1Wnk1djZlM0RKekhWb00wMmE4QlY5UnIzckYzRHk5VXF6d3owYndiZkRoMFY5dXFleG5FeloxQlNHTEs2SzZCeFdBZlZWWWk0WTgxcUJoUFBuMDd2WTV1b1FHemhOUkdoNWoyUkNPdmltQXVYTHVHNXdjRlJmYlJ0UndjRmhKZXJROVExTExBL2NmWnNqcGsxbHhlcVExUzlaMkZYOStiRFVnbytEcWYraUZDS2l2eGs3VHJ1V2JPS2xiVVFLbnhoMCtDV0FXNmFOb3cxNksyOG53VmRIaWdid01tYklHT1ZtMzAyYjczRENGRG1VSnNzdUZ0cDc4S3VMczZmdnhNVkVaNGFHTUM1Q0kvanNmNzEzTGxtVlhvbk1BQjdkSFl4cjF6aXlZRUJWdGFhYnp3K3RHODZwODJkeTV4aW1hcUxXRjJ2YytlYVZkeXhhaVdyNnMzZmUxTlBEek1MUlJaMGRUT3RVS1RpSEFzN3lrd3ZGUGpocXBWODlhVVhBWmpmMGNHaXppNTI2NnhRODhxTDFTcEh6cGpPdENqaTgwdVg4dXRORTlzWE1MTllZazFjeDZ1R0NUUnJEZ1VSZkJLenNLdVR5RG11ZWZsbDdsaTlxaldsbHgyRVZnZUVzTkd0V1d5d2c3Q2U5YlhnQUVYQzJvUFpoQjBLcysxWG1Pb1BaWUhkcWt3dkZwbFhLamU3dlJ0aEc5RitFeTEzdTNLWjgzYWN6eWx6dDJWbWNkUkt2bjBKWHYzaGpIM1VGRHQxZEhEc2pKbmpkN1FJWGRHRVVzSmZJK3dLSDFONkN3VzJMWmNuaE05WEE5d3pqQ05sdHpPWENYdk1mclFsd0pNakIxb2dmNjM5MWxuV2F5STdHZzVpZEpyMXRaSkY1cTBmTWtYbGJVUFk4ckxKa2kzckNKbkMxME51SUd6R2JNZ2ZNenJkUGk0ZG5HcmdScFlKV1pLSlIzN0JQTnVGcjFIbkhHWlU3VVRDZnJBMzI1OGRFeWpqZDYxb2hxMUV6clArMk44VXgxeGEyMWYzV3NndkNJZVJ2SzdBaGJBZFpGTnFWdTF0bmZhaGhnTksyT0g1QUdIZjJXY3pDWVpzTmtVSVc3VC9iOFBLQWg4ajdQcTltNUNlYkFiY1pvUHpUc0xxcjA5WUhmNHpsWERZaDNDNHlUckMrb1JMQ1NsS0NPc1d2bVBXNDlaTWttS2UxZXRvRzR4TFRkT2RSVGh2NGpyQ0Z2Y3ZNWElML3pIQVNZU2RBWThiUFpoSk9QbXlKMlhKN2lla1NVOUl2WHRFU0NMd3VQWER0azNhZTZXRm1wb3Q3SjV2ei95U3NLUDYwTXo5SXdnTFpoNno5bVBXNkt6TWN5YzNFaUNFaGU4ZkkrelV2Wit3MkFiRHdadnNtNWNTenBMNGYvYjNBd25uYjJTemFTZlptRzFSNEVMSXY2c040bUtHajFkeWhITUtWZ0x2SVJ6SitTTGhUSUVHSWJ1TGtjZnVSQmFZL3FzVS8xUENJdW92RUhZVVowbm1vZmJNY1lSQS9ONkVZSGREYnJNeXI3T092dDZBT3RONDRKV0VFOGNmQmI1aDVtd3U0U3lGVyt5ZEsyMkNMc3hNME5XbXFROG1IR1NoMXQ2emJWQldXQjgwNnZ3dGUrWUI0SDAyNFB2WXRWbFdqaG9JVGszUmg2TXRDZkk1d2s2VHhRYXNQR0o0bEpXeDJNcEx5d3dMeGYzVTJ2VVZTMzQwanBBOXhkNzlad1BoWDFyZHo4MEpuZDNQOEdtYis2WGFmajdEaDhXOFlrbU0rWlpZZXRrU1U5OHc0RjVzNVhha01uUHIwOVJtU3dJWDROK3RZMWZhWUdDZHJvdzhodWNOZHUxNCsvY3RqRHdqSzdMR052Ym03MkxQWHpUR3R3OU9nWHVkL1hsRDZ2N05CcUJTeXFsTUNFdm0wcG0vOU9tUkZ4c0ZTc3NUREo4YzAyaEhtanZ1YXRjK2s3cDJyRjFyQVA1ZmJBS2sxMEhzeC9DSk5oOUpnVGh0aFg1Sk9DUWp6V1ByakR4TktDMm5BNnVzck8ra3RQbTVqRDZGNTE0REZhWVJyOG9wNytPbWROTHlFK0RhRkhmVmxNSnB5Rzh5Rk96bmhHTU5OZ2RkN0wzR0JEdmNZdWh6eGdQdVZEbFA1eG5IdkRqVndJTk1hOTJYR2Z6ZldZZi9rUHpOVXBvWk5NeEVOazN3cGJUUzcrejlhc1paZklqaDAyelcyYXplSmgwMXkyaXZQekNnMzJ6M2xMQVo4QTh5OWZwSlRsM3ZTRjE3dEJIbE1rMVRKcVE0bDJmYTNOQTJ0eGlsZVpwd0tzMDNHVDZKSnJIN2pYY0toQk1RNzg3cGs2dk5RZnNZdzJlMXZSZjRRM3YzSmxNU2FwVEltOExabG5BNFIwdjBNNk53bFB6RERMUFBwUmMyUEd0OWRKS0IraFR6bThZOXNYS3FnTHZlZ0xFaVUyRWhmL0dHcGdDVFpFSmJIWm5HYW91WnJCZE5ZNUR6dlUwNUFQTmpkRENtbWE1UDlkRy9wc3B2dEdGZ3ZBaWEvVmxOdGJkWlc4b1dCVGdBK0RzenB6dWtOUGlUUnEwYTM3N0tKa0V6V1dudnpqS1RmNFpwNlhYV3JnYUF2bXZ0Nm1qU0R6UUphM1l5Y3MxeUsvMlJWLzQxREsrUFBnVDQ2MVlBTjFYQWpYTEt1OHVjc2YxU1d2Y05oQVBlR3BwcXJXbU5kTGlraDlHSDNMVVNEMDVhQUZDci9mQ3c4ZDhmMEdUclNFNjlOTVV4RjZjY1J6SUFrM0hxdU55Y21yS1ovQXNJUnlUTm5JQTJ6TFl0dHZvMWpzZTZMWWV6bG96L25wcWp4ZGVZbzl4SlNGbHZZMDdzYnljNFRvV2M5dDlrYlR6SGxOOVBYa3ZnaW5WME9ncitnTTJtbTgxcnJoRU9hcnM1VmJucnpYRzdnSERZM0lmdGVrZXFJNFNSNjBlYkRmaVBUSnMxTk5JcHBzRzZjMERkbTZucjA4YXJseHFkdVlLd0c3akJhMk9qSWhlWjVtdWMxcDBkcUxyeHZFSGptSmVaUmx1VzBsTFRjc2JBbVZVNDBPS2N2elhRLzl5ZXVkRDY3Q2JqbFhQTkVmMG9vM2ZYdnN2QXVkaVV3c2xXNzhUZVBkc2lFeGRaUFk4eForeS9yTzQzRXhZVjNVazRldlVLVTBKcWY3L04rcmFVb2xlTk5yaWNtSEk2TFBta1JRenVNNy9pUWNMS3RIc01BMTluL0pNeXh5YS9FM1RPS2paajlzb0IxVmxXc2Z2TUFjb3VXUDVMQS9rZEZ2WjZUeW9rMVd2OGVjNDRJYm56ek9QK2ZPbzNLeFZ5T3k1akhjN0sxSFZYY3pBZlp2Zy83TmpSQnZRaDYrQXJVbVhPc1crbTkzOHRzQUUvMWNwNnhEaC9KZVB4bjV5cC83Ym1OSldOUTk5dXZPOHlSdTc0UGRBaUk0K1lSdnhrRSsyOUQrSEV4c2VONTU2YWVXNnVUY1lIclcxWE0vTE1yb05zZ2p4Q09IbXpFYjU4cTRVU2YyR1QrbWlHRDZwcnRDSDdQeENkeWNnRTFUeUw0ejVpbkxzaGI3T0pjZEJyRmNkdHkwamdxamxpYlptWW5HdFJuR0tyd0MyMCsyektwR0VtdTlwZDBiSzh3U3pzWDFsY3UvV3pCOW9hZDhxazIvaGJYN3NyV3BiRGpNNmNQbEY4U2h1Z2JkbWF6VnRiMnRJR2JsdmEwZ1p1VzlyU0JtNWIyc0J0UzF0ZVIvbi9Bd0NPNDFMQkNqejA4d0FBQUFCSlJVNUVya0pnZ2c9PSJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDE4LTA4LTAxIiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJGSURPIEwxIENsaWVudC9BdXRoZW50aWNhdG9yIENvbWJvIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVQUYxMDAwMjAxODAyMjEwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMy4yIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjAuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAxOC0wOC0wMSJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMTgtMDgtMDEifSx7ImFhZ3VpZCI6IjA5NjE5ZmJmLWQ3NWUtNGE2Mi1iZTFkLWZlNGQyNDA4NjRhZSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiMDk2MTlmYmYtZDc1ZS00YTYyLWJlMWQtZmU0ZDI0MDg2NGFlIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlZlcmlNYXJrKFRNKSBHdWFyZCAyLjEgRmluZ2VycHJpbnQgU2VjdXJpdHkgS2V5In0sImRlc2NyaXB0aW9uIjoiVmVyaU1hcmsoVE0pIEd1YXJkIDIuMSBGaW5nZXJwcmludCBTZWN1cml0eSBLZXkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9LHsibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3IiwiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJpc0tleVJlc3RyaWN0ZWQiOnRydWUsImlzRnJlc2hVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZWQiOnRydWUsIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjExMiwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQ2ZEQ0NBaU9nQXdJQkFnSUpBUDRmU1JRcFJwM3FNQW9HQ0NxR1NNNDlCQU1DTUlHWk1Rc3dDUVlEVlFRR0V3SlZVekVMTUFrR0ExVUVDQXdDUTBFeEVUQVBCZ05WQkFjTUNGTmhiaUJLYjNObE1SZ3dGZ1lEVlFRS0RBOVRlVzVoY0hScFkzTXNJRWx1WXk0eEREQUtCZ05WQkFzTUExQkRSREVWTUJNR0ExVUVBd3dNVTNsdVlYQjBhV056SUVOQk1Tc3dLUVlKS29aSWh2Y05BUWtCRmh4alpYSjBMV0YxZEdodmNtbDBlVUJ6ZVc1aGNIUnBZM011WTI5dE1DQVhEVEl3TURZd09ESXpOVEF3T1ZvWUR6SXdOVEV3TmpBNE1qTTFNREE1V2pDQm1URUxNQWtHQTFVRUJoTUNWVk14Q3pBSkJnTlZCQWdNQWtOQk1SRXdEd1lEVlFRSERBaFRZVzRnU205elpURVlNQllHQTFVRUNnd1BVM2x1WVhCMGFXTnpMQ0JKYm1NdU1Rd3dDZ1lEVlFRTERBTlFRMFF4RlRBVEJnTlZCQU1NREZONWJtRndkR2xqY3lCRFFURXJNQ2tHQ1NxR1NJYjNEUUVKQVJZY1kyVnlkQzFoZFhSb2IzSnBkSGxBYzNsdVlYQjBhV056TG1OdmJUQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJMUFFtNTBEZ0I5ODByZElJcDZIWU5vK25mUWVVaFBzbTRzNzhOUk9lTE1PaGV1S244WnhQWERIRCtTS3FCSEFuWE5idG9ROGc0Y2grcWlTK3NXdkp1T2pVREJPTUIwR0ExVWREZ1FXQkJSRG5XbzI0QzJQcEVTelZiSlB6MVpGVGViU0p6QWZCZ05WSFNNRUdEQVdnQlJEbldvMjRDMlBwRVN6VmJKUHoxWkZUZWJTSnpBTUJnTlZIUk1FQlRBREFRSC9NQW9HQ0NxR1NNNDlCQU1DQTBjQU1FUUNJRVNrazc2a3RGbkRCRHlTZWJKSHR3M1RjSklYVGZObzVOZzRBajg4Qkk3UkFpQnRFYjVveHVpOFN6c1VaNndjUVFqbjVhQjVuZDJhTkpCaFpLK2lGSEhHeGc9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUE0a0FBQUREQ0FZQUFBQXZCVlRDQUFBQUNYQklXWE1BQUM0akFBQXVJd0Y0cFQ5MkFBQWdBRWxFUVZSNG5PM2RUWEliT2JhRzRlU05tcXQ2QlZLdFFPb1ZtRjZCVlZOT0pLL0FySWpMc2VVeEI1WlhZR2x3T1MxNUJTV3RvS1FWbExTQ3RsYkFHM0IvYWFlWkpNV2ZjNUFBOG4waUZOMG1YUlovTWdFYzRPQmdVUDN2Ly8xYVZkVkpaZTkrUGgxOWRmaDNveHBNWmtkVlZSMTUvODc1ZEhUYmVoQUFBQUFBSXZ0RkFlSmZEci8yZFZWVldRYytDaER2cTZvNmFEMXA2enIzendvQUFBQkFHZjZINzNHNXdXUVdWbGh2SWdTSUQvUHA2THoxS0FBQUFBQjBnQ0J4dGN1cXFvNVhQbXZqdWFxcVlhZnZFZ0FBQUFBYUNCS1hHRXhtNDZxcXp0clBtUG9XSUphd2J4TUFBQUJBT1g3aHUvelpZRElMSzNzZlcwL1lHOCtuby92TzNpZ0ErQlRuS3FKb0dWQUtiWit4TEZESVBRNzBBRUZpZ3daTE42MG43SDJZVDBkWDNieExBUGhKMkJQOTN2QWp5YjVvR1ZBWTZ3S0YzT05BRDVCdUtoRUwxWHlaVDBjWHJVY0JBQUFBSUFFRWlUL0VLRlR6b0ZsN0FBQUFBRWdTUVdMY1FqV241UEVEQUlDSXFLSU9ZR3U5RHhJSGs5bEpwRUkxb1pMcFkrdFJBQUFBQUVoSXI0TkU3VU9Nc2ZuNkxaVk1BUUFBQU9TZzd5dUp0eEVLMVZ4VHlSUUFBQUJBTG5vYkpBNG1zNnNJaFdydTV0TVJoV29BQUFBQVpLT1hRZUpnTWp1UFVLam1LUlNxYVQwS0FBQUFBQW5yWFpDb1FqV2ZXMC9Zb3BJcEFBQUFnQ3oxS2tpTVdLam1uRUkxQUFBQUFITFV0NVhFR0lWcS9waFBSemV0UndFQUFBQWdBNzBKRWlNVnFnbVZUQzliandJQUFBQkFKbm9SSkVZcVZQTlFWZFc0OVNnQUFBQUFaS1Q0SURGaW9ab2hoV29BQUFBQTVLN29JREZTb1JvQ1JBQUFBQURGS0gwbE1VYWhtakdWVEFFQUFBQ1U0cGRTdjhsSWhXbyt6YWVqcTlhakFKQ1B4NnFxN2d4ZkxWa1ZBQUJrcnNnZ01WS2htaS96NlloQ05RQ3lwb2t1SnJzQUFNQjN4YVdiUmlwVUV5cVpucmNlQlFBQUFJRE1GUlVrUml4VWMwcWhHZ0FBQUFBbEttMGw4U1pDb1pvUUlENjJIZ1VBQUFDQUFoUVRKQTRtczh1cXFsNjFuckQxZGo0ZGVhOVVBZ0FBQUVCbmlnZ1NWYWptWGVzSlc5ZFVNZ1VBQUFCUXV1eURSQldxdVd3OVlldHVQaDFScUFZQUFBQkE4YklPRWxXb3huc2Y0bFBZaDloNkZBQUFBQUFLbFB0S1lnZ1FEMXVQMnFHU0tRQUFBSUJleWZZdy9VaUZhczduMDlGOTYxR2dRNFBKN0tpcXFxTU5Yc0U5RXh5QXI4RmtOdHpnRjN5bEw4RTJsQ2tWdHRQVS8xdTczYUdBM2paL1AvUXRaNjFIZjNhKzRYVy9rL2wwZE9IMWI2UGZHRDl0SjhzZ01WS2htai9tMDlGTjY5R2VXbmRqVWZIVlRtTmdVQThPNm83NFpKZTA2c0ZrVnYvZnV6QlFEUTFmL2NOUkxpOXJmQitiZU9RekxZdjJ2Qi9wR3FqYndIQk5IRy83Umh2M1l0akM4S2o3OEZIM0ltM29EaGJ1ejFYMzZxTitxcFFIZnVwalQ5WG1EMTlvNzdlNlhuUjliZlRmS1BoN0tVaDg2Zmw5WlI4a0xnVFJxd0xxZS9YTGpLT002SE0vYXJUYnYrci9iNTExdURCK3FuUVAxVzEya3BOKzZyT0dDK1BIYXRmK1psRDk3LytGZitTdjFqUDdlKzF4MGVzRHVIMmhBZDNYZGQ4SzFUUTYyK1lOdHUyTjlkeG85TzcxUFRFYnMwYmpoaDdxOC9kTW4xNzByTy9vUnJQVHZReHdHaE1naTUzTFBtME1RWGxtMUFZMjcwWHZUSlZGRC9YOXlJQ3hUZmZwc0RHSnR1djM4OXpzbjlUMmRkSkg2Wm83MTgrbUV3OGZQRmZhTk1qMkdCTnViRDRkRGJyOC9kdFFINzc0czIvZjBldzN5RUJZb1RGK3FqLy9yU2Z2OWxDUG4rbzJ1N1ArWGUzSVdPM0lKbVBJOE5yRGFRMlhMNzN1cklKRWZSRDN6Z1BwMEZFUCt4RFlEQ2F6NXF5bDU4MzExTGlSZXIwNnEydTQvdHhQblNjN3R2V2dTc0UzSlYvL2pjRm0vUk1yTUg5cWRDckpCT1dEeVN3TU9OKzNudGlkeXdTaEJ3MHl6aU8wZ2R0NjF1VE5WWjhEUnZWUnB4SHUwenQ5M2xFR2U0MUIzWGlIUG9BZ3NVTWQ5T0dNbnhvaXRnbmJlbERnRlRWZ0hFeG1ZNjI4TjYvRDU4WkVRejJXRzY1WStGbmJudVFXSk40NnorNkdEL2FvOEFGeWZZTjFGYUQwY3ZDakZPbndtYjlwUFptZStqdTZLR1gxYThjWmUyOFBqWHVoeTFuSVhnV0ptaVFZNjM1TWFaQ3h5cFB1eFY2YzA5djRmczQ3NnFPK2FJYmQ1UnBlTWFqYnh0cEJuY0hySTBoY1FtT244NDc3OEw2T243b2V0MjdyMnZzNzBwam1jaUgxKzFwdDE4clY1OGJFYUxOOVhiazRsazJRcUVJMW52c1FuL1VocmZ4d2M3WERVblFzUlE5K0VoanNXTGpPT1ZqVWdPYzh3aDZhZmRXemtGZkxHbXBQZlFrU05WRXpUbXpGY0J1bHQ1ZERCVSt4MDN4WE1mMjgxUTlmR1FRWkJJbVJKRHgycW5yUUhxVDgyVzhxWkNpTXJlTUtmVGEzamI3c1lkdENtMHZhb3llZDV2RFR2NUZGa0tqTy9YUHJDVnR2Uzd2WjlreHBpYW1veGs2ZDdEaVRWY05OdVE1TXJDVTQ0TnhVOUZYY2tvUEVRZ1lhaTdZZUVLUk1NOXN4cXBYdjZrbWY5ODdYdE43amxkRUVCVUdpczR6R1RsV0I0NmNqOWQycFQreHU0NU8rSTVNSjRJV3N5cjFxcUNpejRhUCsyRnBSVEQ1SWpGU281dE44T2hxM0hzMllCbjQ1TkhCTkQ1cDF5VEtOSW9QQnpyNlNINXlxZzdrcTVEdUlzb3BiYXBDWWFSdTRqYXdtYmhacElINFJvVks1bFM5cS83WWE2RG1NWVFnU0hXWGNidXc5bWRHbFFvUERwdnJjOWIyK240V3N5dThCNHJvVENHUmxFY21GaGJpNytYVDB2U3BxMG9mcHF4TzVjYjVadjVRVUlJWUdmakNaUFdyUWwxc2pGMlpaLzlKTmtJMXduUTRtc3hDWS9GMXdnRmpwKy9sYkRVcHlOQ04yWDlCM0VEckxmOEsxcGJZUUd3ajdWekp1QTdmeGZqQ1ozZWQ0YlNnUXVjOG9RS3lVR2ZLNHpmbUFrY1l3TUpENTJLbFNwa1FZUDkzazFDWm8vQlNDdzM4S0RoQXJYVk4vNmIzdVJCTk9kWnY1WldFRjhWeVRPNnQrL2pPWXpPYTZQbjVxdzdRSy9VRi9mS1d4MURkSkI0bHFYTDBybVJaeDFJVnV0RXRkSExtblZiM1Q0R2ZabVZkSjBjMzBXSGpqdHVpemd1SWs2TnEvVmNwRWlZT3hzelhuYkVIQ1RLcXVnejhMU2kxOXliRUNsK1RieXBvR1NibjJVOXNPOUx6SE1OaFRZV09ucWpHWmNkcDZKakY2amZmR21TeXBlNy9IeEcrOWdQSzhSK3p5Um0zWVQvKzlzaE1lOU1lTCt2VWxHeVRxcHZXdVpMcDE2a2lLR3Vrc09jM0t2aVFNZm02M21iV05xVEVnTFRVd2VjbFpDb0dpcnYyU1ZnOVg0YXlzTlFwY1JkN0dnZHJLcEFORkRjWnZDaGtRdm4rcC9WTWcyY2ZyTVJ1Ti9xT2tzVk9sTnVIUGxDWnpteHB0UVo4bTlKck8xR1p2SENqcVdxM2JrL0VMc1V0SUdSM1VQMVZWL2F1cXF0OVZTS2UyTEdPdlhrRThVQ1haTklORVJiamVOMjJyaWsrT05CTnptM0hGdm5VT2xzMTRkSzNuQTlLbVRnUEZ4dVJJOFowTUIvRXZ4MlROZDBrSGlvMXFmQ1VWODFyWi91bDc2TlBxU0hZMHJpaTkvemhMTFNWZEUvK1BoYlVGdXpqZU1sQ3N4OEhQMnhZcENnR2x6dGc4MVFKWmNMQWs3ZlMyc1pyNDdmY2xGeVEyaW45NGVsdkNHVE5xNVA3c3dlRG9jd3FCWW1QMnErOEQwcWF6THZhUVJpcG9sWXE3UEY1bVhJMVVwYjVQMXRUcVFIRmQ4WUxvbHBSckw4bXFRREdyZmZWOW96N3JjMC82ajNEZkpiRjlwNUhXeS9qcHY0NjNhQ3ZxZ082bTljeUd0UHI0MHVKWTNaNTk2MWVUQ2hJYjUzWjRYa0RYSlpRS2puUXNTRW82RFJRYlFVbmZaNytXZVJmenUrbGhNUWhTVFJjb2xhOFBFMlRiT3RobkVHR3Q4QUN4ZHRZczlLRFplU1l1RXFXZ3ZyVDAwcGNjZHBscDBLZ2IwTGZQZlJObkcrNXhydHZRZlJlNFhscTUvRDdlQ0cxWmFpdUpWdWNJcmZLd3oza2lxZWhoZ0ZqNzNNVm1iSFg2cFE5MDluVVpjUVdqYjhVZ1NEVnQwQ0NQVkw3VmpoT3FFTzNkcDZmaVkyTUFudTJ4SktWVDI5R25Jbk5ObmFTazk2aHV3RDdlcjZ1L3NaQ1N1dk40UUxGRDNSNC9MOHVvWEh6c2w5YS8waEZGMHA2ck5FOGxWQWpzY1lCWUMxV2hockgyay9KNWIreEFBMExYZTZ5bnhTQllTZXpQcXBTVnNMcC9zMndRRUlzQzFUNWxYdHl3aXBpdW5nZUl0VHBRakRLRzZ0bTJrSDJGc2UzSmlvSTB6Y0IrMmZPTGpwYXNUcDQyQThRTngyb25TUVNKV2gzeW5CbXVEN0hNdXBLcE9xQXVBNWJuSlFQV2s4Z053SUU2NDFVM2t4bGRsNmtIaUE5TEdvM1kzMGt0bks5ejdwWE9yWlhLTHM4MFhYYjlWMHJmY0F0Y1N0Zy9iU1QxQUhIWjllRjZiYnpnNm9YRGxkMm83WXlaV3ZhazYrTlIzMEhkSnA3b094aEdhQmNQbDN6L1NFQkNBV0xkWDNjNWtSQmxES1grT3ZVQU1hWHgwNkhHTnk5bElteFM2T1p3VFV4MXQwMDgxSG1RcUprRzd6MkM1N2xYTXRYbkZIT3Z5Wk4rWC9qYzdsLzYvUFQ2VHRRWm4wYm9qSy9xRXIyT1Vxa1UrS0R2NFZHTjd0ZE5ydWZHZDNLcTd5Vkd3M2VwRlF5UHp1Y2lZdVA5c0hEOWI1VGlvYy84U0ovN2ljSG4vdEI2cEw5U0NCRHJRTEFPU0I1MWZheTkzclVLMnJ3WFk3eVh3ekNiclBPdm9tblVGdkQycEtJUE4ydnV6NThtV0JTOG5qb0dES3lZSkVZcktyRUR4SHI4OUsyZFdOVmZSeDQzTlIzcXRYbU9jWTRTdVIrZTZuNTh4L0ZUek8vbTI5RTZTOXF6YmVPWHhRbkxadUQ3U3RmbUppdUo5NTBHaVpFSzFYeFE2ZGRzUmZxY0tsMVk0ZmRjTHJsSTE5Sk5kMThQRGlKMHhtL0M3OGo5dTEyaDJjSGM3aHB3TmI4VFhVT25DclE4OS9NZGJEZ2J0aFhOU25wMzlKc01PdGRxZk9iZnIwdTk5dUdPd1RyN0VidjNwWEV2N2pUWnFIdjR0ZzVhTkFBWlI3aW14eUh0TTNJV3phVnpYL1dzYzhLMkRrVFZYOXdvY09naWVFQkUyaTZ5YWtYRjJ0YmpweFhqcG5Ha2xjWmp0UTFkWnVkNGVGYi9lMk0xZnFwK1hFdm5FYjZiaThXRDhzTjdHRXhtOVI4M3lRNEpFNWMvQllFYWg5eG9nbkpsMXRmaW50V3VWeEs5TjdWZng1NUZkWExoL0RtRndmSEZzZ3RtVnd1ZHNkZmVsQkQ4SE9XZVJpeDFCM1Bsc2VxdHoraEtuOW5ZZVZYT1kyRHFlUitiWC85TkdqQmM3VGlCUXZwYU4rNzBmYm1zaXVzZVAxZjdlT1U0OERqUWdDTktJUnR0aWZBTXZLNDNPRWo2UmJvbno1V0dlTlhUQTcyTEZ1azR0VXA5OTZXQ3czMnZ5NXZHM3RZWSsrL0QzdVhiQWliYjY4RHd5bXQ3aHNZSFZ3b1dQU2ZDenBRQnNqalI4S0E0WUxoTHBrYjQ5elQyK0VjUG5hNzRkNGFOLythMnN5QXhRcUdhaDQ3M0w1bFFZK0cxdCtOWkRadmJBRndYK3FuZWgzVm5mS0NHTk9mdjJUVkFXV1krSFYzcXZNY2JwOG1IZ3pVTjBOWWFxNkFlUHVuemp6YlIwQmdJalBXK3htdStCL1lqeG5XdDZ5SEtDcTUrejFEWHdzZldYN0F4am5odW4rZGt6bHZyZGpJTWdocGJYbElzc3ROTUc3dGQrTitOYVJWaDA4cnVtNnhVWEdlUTVSQWorOHFsLzFDZ005U2czdnQ5NUR6WlhtZi9YTVY2L2FFTmFveWZ2SUw0OFpKeGJiMG5mK2V4a0FMRk90aGMxZDdWN2NTMzg1azdDUklqRmFvWkZyTEM1QlU4M0dtdlpxekJrRmRuL0U2clZybWw1VVVQRHB2VVdIZ2U3WEZoZU8xNjdRY3dIM1J1WTJGMWQ2aE9ZZkhlSU4wMGpxakI0U0pOM0h4MUtwUjFHQ00xMzdHeVo5MmZ1NnlxNno0OFRhUzRpVW1xM0JKSHhtTXV0eFViQzZxczY1MTlkZTc5R1lSN3RsR1B3dXY5MUpYSm94OHZ0b2RudGRlZEhQV2orM0xvMkdhY0x3a1M2L005RDFhbGltNW9aWnVpTnJ5K3pyNzkrOUhQU1l4VXFLYUlBRkdyclI1cE1KOUN2bkxzQVZINFR1YlQwYWtHWkpaeVN5a09zNDhuWFFZb1ZhT2hjeXFPY21oNEhwTkg1OVZwZ0xnb0REWjBiL3pXdUQrZU01ejh5RTBZN0wwTzUrZDIvVm5yZW56YmVzSkdqUE9CdmRyaDB4aUY1M1NHc25YZnRLa250VW0vNmxyMEt2NWxJdkVBMFRQN3F0SUUrMG1zejZET05uQytOdDkwY1FiMWpzSWU4YU91QXNRbXh6YmpRR210MzZrTnZOT2ZMeGJPVHJSU3QrSDFaRlhjSURGU0FaYTN1VmN5clg1OFZoNXBsRys3M3Fqc2NHT2RSVHpJZlIvUEdwRHV2YWZHU2lOUWZIYjQ1NjBHcHRabkwzNUtLVUJzQ2dNQzNSK3ZJNllJOXRWMXpNSGVKblJkZm5ENHA5ODREU3ErY1Z4RmZCdnorOUc5Rjd1aWNHaVBqbEp0a3pMazJXNWVhNEk5YXYrdENYYnZTWXhMenpiQ1FCaWovQjRtVXhPYlFCazd0Um5MZ3ZZNmlEdTB1TTZiQi9ocnkwUGRobjlQb1k2OWt1aGRxQ2Jad2Q4T1BEYkdKck42b2didlMrdUozZVd3bWpoTWNRWldqWUhIU3NPeVJtNHJDdjR0NzRQbkhLNFZyU3lXVUhRclZWKzBZcFBjYW8yKzk3dldFL3V6bm14cDhtZy9yanZxcjA2ZEpzMlc2WHpTdGlRYTZIcU5NYTgxYnVtTWM2QjRtSGg5aC9NVUMrdzRqcDlhMjdJMGZ2eWtQNTdwZXErZkM0SGRRRDhyMjNwTmN0Ui9yNjYyZmQ3WUUzL1hYS1dORmlSR0tGVHpwWlRHMXFuY2YxTHBkWEt1TkJzTHA0blBnbFVwcjNDcjhiVWVtQjRhclBCYW4rTVUremdBcENuMWJCT1B2c3dsblV6dHJuVi85ZFRWZ0ZYcGZURW1hUDVnOWRDT3JrT3Y3NjN6QUxHbTErRXhpVlNwTW5tcTQ2aVUwNi92UFRKQWxxVUFLODZwVnk0L0tyYmE1M2VjTi9iQ1B5MzJFMUdDeEFpRmFoNGk3Ym1JeGJwejdHcEdkcTI2WU1DNnY3T0ZnOEt1Z1M1NGRMQXJaN1EyWkIwa2xuaXVKZ3FqUVlmMWlvSFhTcUpIOEJtMTR2QWl6YVI3RGNTcnhkbDZtQmc3YldXNlN5VkFiRGcxbkdCdk9pamhWSUNPWERwa0lLd2EvelJyU1lRRCtHKzJuWkFQa3dFcThGUUhpTS9hLy8xVHUrc2VKRVlvVlBPc1plZ2lWZ2MwaTJQWklEMGsyTUI5cDhIUXA5WVR1eUZJM0lOU0Q2d0hScDRwYmxzclliOHllc002aURoMFdpV3dEaEtmRXBuVTlGeE5KSlhja0dNTmg5YktTZ3FNSjlnWHBieWFtS3hHdFhKTFM4ZFBqVm9TOVhndFpHbmVoNkR2cFdBeFBLL1Z4OGRHZ2FjSDdjOXZqWTljajhDSVZLZ21TdVd6aUt6TC9lY1FPRjNvZGU3N3ZvL0RwQVNCd0Y2c0QvWmVOUk8ycWFXTjVJNWlGNlFBZGhiYXNjYVpWbFpPSE03ZXRKNElTaUtBMHJGTmR3NEZlUjVTcmc2YUthOVZ4TmJLU2lyVVBueHd5TktyczdKWTZkN2VwWEZsM1pWdFQrTVlqb3ZHOWY5T3g4STlhVXRGY3l4OHBQWi9zVDlaZTlhbjkwcWlkNkdhcUpYUElyR2NEZnVRUThCa1BBT1QwMWsvS2JKT3gvUzgvN2ZGN0NoeUUyVm1lbGVxam1jNU9FOWxGYkhtOFZwSWViZm5zWXFZL1BoSlJhNDgwazVKT2QyQjlqT2JUa2EvdERLb2ErQkV3VjZkN25xbzFjWDNqWit6aGZGWTJNN3cyMHZWOWoyRHhHVUhRMXRLY3AvZFBwU2FheldvZnM1c0pzanF0UklrN2tHTmhXWFYyY3J3dk1SOWVadzVDbml5bmdSZE8rRFlRZEY3aGpYR3NONW54Q3FpSVJYZXNGNUZmTXFvdXJSSHR0amhzcUlwMkloMUcvWmltNjJqczBLdzk2dU96L3FnY2R6ZHdrOTQvUGVxcXY2MTZkbkFudW1tbmdGaTB2dnM5bUQ1bnJLcTRoZ3VWcVBVbnBCeWVzUWg1SHU1Tjc1L2sxbkJDeDFmaW1XMGdXV1VVdlpzT0FpMkRoS3RVMDFUblBpOWNhamVDanNlWThGc3hwZU9hZEduckhydjVOWTRCWGk0emNTU3Npdk5KcUppbjVOb3BkUVpEc3YzbFdNK3VWV0RsRlN4bEF4WnozU25zcEpZc2RLTURGbW12RmtIaVpiLzNsT2k2WDJzL0NWS3FYald3ZEZkaHR1WVBGWTl6eWhnczczU3RzRGxHaVFXVnhsTWpaMVZPdHgxcHRWZUNSTFRZRDFRMjZlanNWNFJQdE0rS2lBWGxvTU82NVJyeXozSHFRNnVDQkxUNVhMOFN1dVJ4RGxWSnErWVZOMlo1VDdSVGlmWmN3MFN3MEN2dEkyMWxqZGpscDJhVWtRdDluK2t0SEtWbmNRbUdEelNobStZSVVWR2treWQzL1pjcmcwa1dTUkUvWkxsb0krMng0NTFXbWlPcTRnMWorQ1dJSEUzbG0xMnArMUZya0ZpOExHd0ZRSEw5NUp6SHJuRlFDR2xpcHE1c3B5VjNPZmE5aGc0aHYxZHR3a1YxQUhXU1hWL2RTK0NSTEg4RG1oM0RHaVN3cnF2ei9iWUJ3VzMxcFZPeWJyWlRURTFNVHlEUktzRDB0Y3BhVVhBNm1aOHlEVFZ0R1l5aTBkS1lURzhHdHRqQllyTWxLSlhFbTRiVXc0U1NUbE5qM1hiL1ZSQVVUUHJJUGVBc2RST0NCSTNjQk1oVUR3b29mSFdqSmhWOVRxcWV2NFhzN1VGVUNFTDZ4TDB0WERQL1RtWXpHN3BDSkd3VkNmOVRPK1p6Q2MzRVY4Zkt1dHV5eVBJcFcvc01kZDAwM0J1aC9YQmtrdUVJdzl5djdrdEE1cmtEODkvZ1ZYUWI1MEtoZTU0eis2RzZuaC9FU3dpUmFrZjZOMFRscE92dERFMkNCSVhlQnptenZYYXVlSUwxNXc2cmdUVXpuU2dhcTVZOWJMSFoxcU9XQ2xBZGJBWXp1d2NPeFRtQUxDYzkyVHl2c2pRU1lqMmsxc2VvUDlRME5uSzFzRXVZNmx1V1Y3blcvTThUUDhiSFpJZUFyZy9XMC9hK2p5WXpPNHpuWFcxdkFuUE0xOE5zZHBqU2dXNVFvUjlJb1BKN01taGZQOHE0ZmQ4VkhHc08zVzZ0d1VOSW9EVWtHcUtiVmdITGlYdE9iVitMMkZmNGhIOVh6KzVCNG5WajBGZTJKLzRydldrclZ0ZHpMbDFPSllCeldIRXdYVEtxSEJhbGhDb3ZlL2dIYjJxRDJzZVRHWVBlaDAzZEppQUtTYjFzQTNySURIM2dqWGZoWVdTd1dUMmJMd0NkY0pxZWo5Rk93SWowdjdFWEF2WnZHbzlBcURwTWtMYStrdU90Y0w0ajFKU0x6bEdBekNSK3FRZTkzbGFUTCtQak05R1hNWDYvWEQ5OTFUc2N4Smo3RThzb1pBTkRMQ25yQnpLRHZBNExIaFhoOHFNK0hzd21YME5iUTdIYWFCbitwUWlhcm5TU1dydC9peURsdFQzdys3Q2V0c1ZZNm1laWhva0trVXJSb0daYkFyWnNCTGhpb2F0SVBQcDZOTDRrSDhySVlQaFRNZHBFRENpTDB3SG9vbFA2bGtHaVZTcjNaOWxLbVdKMzRmMVNpSmpxWjZLdlpKWTZiRFNHQWZ0Zjg0a0FHTXZCckM1OHdUU1R0ZHBCb3p6d1dSMmszbmxaU0NXbEFlaVRPWW13cUV3WDRsNzdhemZFOWQvVDBVUEV1VWkwaEovS0dSREVBWVVJbUkyZ3BVM21yQ3FWeGpwYkZFSzY0Rm95bFc1TGU5YkNvQ2twYlQ5aUpWRFliVk9qMkZBZHpvSkVyVy9LTWFLUUs2RmJBQ3NvR3lFdDh1ZlRWYTl3dmczaC9hakJBNEQwU1FuVUJ6TzVDTkkzQStwajVzcGNhOGxJdXRxSmJIU2VZYmoxaFAyVWk5a3cyQVIyTko4T3JyS01GQ3MxWWYyRXl3aWQ1WUQwVlR2QmV2WHhaN0UvWmdHaVFWV05xMlpGa2lpcitxbnpvTEU2c2RBNzdyMWhMMXNDdGtBMkV6bWdXSzFFQ3d5TzQ0Y1dhNktIU1JhOE1seWNQeVU0VG5PeUJQWEdmYldhWkFvTWM1UHJESXFaQU5nUXdvVWYwKzhtTTFMWHVuc3haU08rQUEyWWIwcWxsU1FxSm9HYjFwUDdJNVZSTVRDdFlhOWRSNGtSdHlmV0ZISUJpaVA5aWdPQzlpRDhYNHdtZDJ6cW9pTVdLZnFuU2JXUjF0bklGRWpJUzNzMndQV1NHRWxNZWIreExENS9LYjFLSUNzaFRaa1BoMkZUSUVQbWIrVjR6QURUTllEY3VDd24rc2dzZXJGMXVNU2dzUzBrSklKckpGRWtGakYzWi80YWpDWlhiWWU3UTZkQm1Ca1BoMkZsTTEvSjNyby9xWU9WQVdWZmRUSXdSZmoxemhPWVRWUjk5OWg2NG5kUFdsQ0hBQ3lrRXlRS0xIMko3NWpBQWFVU2F1S1ErMVZmTXI0VFg2bW5VSUdyTE56RGlObEZxMmtJTlY2anpCWlRBQ3lrbFNRR0hsLzRpVXBYVUM1d2w3RitYUjBwQXFvdWE0c0VpZ2lkUjdCejdqanZia1h4cXVJUWNwSGNmWFZxNzUvQU1BNnY2eDVyaE5oRldBd21ZVlp4TS9Pdi8vYi9zUVFLSFpja3RyNmQ5K1J3dm9kaHhhalRtVy8wcVRRV0JVVUxRL0g5aFltdE81SlZVT0tRdjg1bU15K0dGY0JyZXNIUkovSTFYbHc3MXBQN0lkVVU4UkdBVFRzTGJrZ3NkS2dUZzMxV2V0Slc0ZnFpRG83SkZSQmNldnhQZHhxWHhhQWhYc3RaQ29vbGV4VVA1WURXeStwVEdnQnExdzUzRXZIZzhuc2FqNGRSVnRKVjl2Z3NUS2FVaDBFOUFOQkl2YVcycDdFcGxqN0UxTW9aSlB6R1c5QVZrS2dGU2FpNXROUkNCTC9wWFJVNitJYjFnNFphQ0pWT29iR1kvL3ZXYXgwYXdXSXR3NVpCcytrbXBveW5TalRnZ1JleGtwNER5VWJKRWJlbjloMUlSdHVQcUFEbVFXTVp3eG9rREN2REJiM2ZibU5BUEc0OWVUK0xza0FNTVY0YVRPbSt5MjVodnNwNVpYRW1PY25WaDBYc3JIY081ZlNRY1JBTmpJSkdGbE5SSkswOTllcm1uQUlGRjFXNDlUdmV3V0l6OXl6eVN0dTRpMkZJMlJRaHFTRHhDcnUrWW4xdnA4dWJpN0xJSkdLcmNDZUVnNFl3ejZ0MDlhalFCbzg5OE9IbGZSN3k4bGNGY256Q2hBclZoSHR6YWNqNjhKOEpZNlpyTjlUenVjT1l3L0pCNGtTYTMvaVlVZG5HVmsyZW14V0JneXRDQmhqdEVlcmRIcUdITENLSm5VOUI1UWhtUHM3ckNydWMwUkdTTnNPQVdkVlZSOGRLeDAvVVVRdUN3U0p3QXBaQkltUjl5ZDJVY2pHTXNmK2tGUUR3RWNqWUF5ZDhHOVZWWDNxb1BEVXE0N1BrQVBXaWRGWGg4cm4vd3dtczVEOWM3cEpueGZ1bWJCeU9Kak1RdWJPWDQ2cmh6WE9OL1ZqT1JGeFdHQjdhaDBrY3F4YVR5VjVCTVl5RWM5UHJGVEk1bDZ6b3U1MHp0U0RZYWMxN0doRkZPaU4rWFQwcUZXOXNRcHJlQnpBdmNvcGU1MlFvbkJmRENhekM2M1NlWHRUSDcyaFB2UnhZZEwxVncyWVR5S2ZqZnJKSVMwU1A5d2JGMllaRmxhQjFucWZKV2RPOTFRdTZhYmZSTnlmV0hWUXlNWnlOWkVLaUVCRVdsMDhVaXBxakpWRlZpbVFyUGwwZE5uQkh0NWpCWXp2R3ovdkZFekVEQkFmNXRNUktlRytySU9XWXZaNWExWFVlcktTSUxHbnNnb1NKZGIreE5pRmJDeFgvaWhzQVhSQUUxbEhTa1AxZEV4YU9SSjMzdkhlM1M0OE0wa2JoZlVxYlVuZm1mbDdZVlc4djdJTEVodjdFMk9JV2NqRzhpWXNNY2NleUlMMkxZYkpyTitkVnhVcFRvQmtxYThlZHJCbnR5dmZBa1NxbWZyVDhXaVdEam8rSzl1UzlTSkIzeVo2MEpEalNtTGRRUHpSZXNMSEsrMnY4SDVQWDQxdlJ0SmRnQTdOcDZNYjUwRXlRU0tTMXFOQXNRNFFPZWc5SHVzcXV0bG5ZQ203NUUzcmlmMndpdGhqV1FhSlZmdzlEKzhqblUxbXVYR2FQVXRBeHpSbzlMb1hTVGRGOG5RUERBdGVrU0JBN0laMWx0ZWJBakt3UE1hcEJJazlsbTJRS0dIdzlkUjYxTWRWaEVJMmxvMWVTZWtUUUxhMG91Z3hvY1ZLSXJKUWNLQklnTmdkajYxQXVXZGdlYngrZ3NRZXl6cElWQ3BMckJTQkF3V0ticlAzS3FsdjJZbHlrQytRQm8vT201VkU1T2Fpb05UVDBGY2ZFU0IyUStNbDYwV0M4MXdMZ2cwbXM2SEQyWjkzN0xIdHQ5eFhFbVB2VHp5T2NKYU81ZGxuaDZ3bUF0MXptQUFDc3FCRDdFTy8rWitxcXY2TWZCeUZsM0FPNGdrRDZNNVpyeVllWkx5YTZESFc0N3p0bnNzK1NLemk3MDk4NDF6STVzWjRwdldTVXZsQUV1aHcwUnVoM3hsTVpxRnYvcWVxcXJOQzNuZFl1WHJOT1lqSnNKeFVyNDF6MjV1bzErdHhqOUZuOVZ3UlFhTEUzSi9vVnNoR001T21leE5KT3dXU3dLb0Rla0g3OSs5MW1IMEp3c1R0aC9sMGRNU1pjZCsvMzg0NVpXZ2NPQVdmbmp4ZTc1MCtYL1JZTVVGaTVQMkpsWE1oRyt1ZzdwM3kxUUYwaDcxTEtKNzZ4VnVkTTV5N2I4R2g5aDdtUE5scTNmYWt0TkxtRVNDOXlXWE1wTmRwZmV4RkZXRnJGVEpRMGtwaTdQMkpib1ZzTkh0ejNYcGlQNjVGZHdDOHlIclEwZnNWRGFTbEVTRG12dS93U1dPSmI4Rmg3bnNQSFY1L01wV1Y1OVBSbFZNeHBGekdUQjVCOGpPcHBxaEtDeEtyK1BzVFBRdlpXUCs3aDl6MFFLZHlQNE1MV0VuN29uSU9FRU5nK0ttcXFuOHJyZlN5c01JMGx0dHhVanQ0M2lOUU9rdzk3VlQxTWF3cm1nWlhGR1ZDVldLUUtESDNKN29Vc3RHK0IrdGc5NVdxekFHSXozcGd4VW9pVW5KakhDQ0d2V1p2cTZyNlhjSGJYZXR2N1AvdlgydkZzQTRNeHdVZmFVM2dkYmdBQUEvNFNVUkJWR0c1dit3NHNlSXVsMDZyaVdlcFZvalhxdjM3MWhNMmN0dVRDU2UvbFBqQmhoa1FGWmI1dS9Xa2oxREk1bDZIWmxzYU8rU2FoMFl2ZkVZY2pRRkVvb0dHOVFvTGV4eVJCT01WalREQmU3NVFJT1o3MzZvVXdEcmRjVmtLOTVGK3ZpNjVSOEsvK2JXblp4dUc5LzZxOWVqdXpsTXBpcWN4MzZWVDBQUjVNSms5cGxTd1NQZUFWMmJZTlFWclVDc3lTS3kwUDNFd21ZVVp3byt0SjMyRS9QV2haZWNUYnRUQlpIYnRVTnFZUUJHSVJCMjY5V0RxaVhRZ3BFRFh0OVdSRUNGQVhIditvSjZyQit5c3BtL3UxamlJU2laSWxFdGRoeDdwempmVzQ3czkzVGdXaHFJYVByNHJOZDMwbThqN0U3MEsyWXdkMHloSVBRWDhYVGgwNkF5T2tRckxnWG4yUldJU1poM2dIS2FVaXFucnhpdkFDZGYzYlFwSGYyamNacmtpM01RcUluNVNkSkFvTWZjbm1oZXljVzc0UXFCNG45dkJzYlZVem1wQ1hHRmdrc3MxcTBHVXgxbHhGS0ZDS3F4V0VaOVZxUklPTkphdzN0ZDVtVklGVUMwTVdKK2JXT3M4VUZTQTZIRm9mcVhGQ0t0N0dZVW9Qa2pzNFB4RTgwSTJhdmlzRy9kYUNHenZ0WWN6Q3lIdFl6Q1poWldVdndrVSswVURrczlWVmYwVHJvRlVpd3BVUHdMRXo2MG45dmZzc1A4WjJKcjZEYXRWUlBiWStyTnVOdzRTUEUvUHMwK29BOFdvL1U3bzk1d0R4SXBWZkN6VGg1WEUyT2NuVmlwa3MyeEQvVDdPbmRKT0t6VjhmdzRtczV1VVYyaTBnaFJTSWY1cXBGc3c4OVV2emNtTVYzVlJnVEF4azlLMU81ak14azRCWWtYbE9TUWtpd1BIOFoxSFFQZEc3VjBTTk43NzRQaGFEdFR2UkZsRmJSd3Q0eGtnUG1neEF2aEpMNExFS3Y3K3hFb2JuYzBHcmNvVDk1NjllcU5WeFl0VVVrakNaNmpYODFXRDdzVzlYZG1zZ01MRXN1LzdVQVVaL3RGRVIyZXJpN3BlYjUwTFpwR1NoMVNReVpFUnJSUjVqSU0rSnJZLzhjSXg3YlQyVHVNbHQ0a1NmYWIzVG1jaDFwNGpqQzJScWQ0RWlSSnpmK0tCQWtXellFc3BadGV0SjJ3ZGFNRDlxSm15NktzelNxMDQxMkQ3SDcyZVZTbE5Cem1seW1KM3VwZGVPaExtaldaNVEwbjBxMWpYaHE3WkMzWG9Ya1VGS2dvTElER1cvWVBuZllNZnZGYU1QcXZOVFdXUDRxbGo5bFV0VEZEK1paMkYxZGhTODNuTjJNZktSVStQaE1FR2VoVWtkckEvOGRpNlFkYXhGZDR6WkpVYXBuZk52VitlalgvWVd4aFNWdFF3L2tlTjQ2YURCb0xFZnRqbWV6NVFlczZmellEUitocFdaMzZsYTNiZFpJWUZDZ3NnTmFaVmUxUGVZMXdLbmZmblZlUGdUS3RyblgrUGtiS3ZhbThhbVN3N2owZlVSOTB1YktueGRFMmFLZFlwOXB6RVZUbzRQL0ZNQisxYjNvaERyVmg0blpPejZGVmovOWVEOHVQRHorTzJNMUNOZzVEckE0K0grdk0rZzJ1Q3hIN1k5WHV1QThadmV6b2ExL0M5cnVHTmo1TlFhdEdKZml5TGRteUN3Z0lvWGRoYWNNTjE3dTVDZ1lpSFE0MFZMbFFvSjdTdlgwTTcyK2ovYTZFOS9UNG1tRTlIcHBsTElmc3E4bmp2amZab1BqZmUrLzJxY1pKV0grdStaQmh4VEZkcHNZRkpSNnpWdXlDeDB2NUV6ZmJFU20vNXFFRFI1R3l6MElIcTlkOUdIcVJXV2gwOXJzdjZoMFA1bGNMN1VncmNrV01EK0MzbGxJcVA1ZG93MVhSVHg4MDlIcnFHbjErb3JyanZSTWErN3BqeFJZS2VqTnYxUTFXUEhCSW8rbEhBZHVjOEJqclVPS0U1VmxnckJFM1c2ZlFhNzUwNEYzNVp0RGd4V1MzME1WMzNKK0cxbkhLUDRTVjkyNVBZRkNOZnZjbTZrTTI5WnA1aXZvZFZEaHVyamF0K3ZHZklXRTBzbS9mM2U3RGl1cTEvdXU3UVNjTkRpanoyeHg1clQvdzRwVFA0Q3BSaW0rSlNCRWJiZEx6ck9iemtJS0grWk1qZWRteWl0MEZpQi9zVFBRclpwQlFvZG8wZ3NXeDkvbjdwMEpHcWRhdnYremhRaXVDajloT2ZwM3c4VTQ3VXBuZ2VGYkVMdDNZK2tVQ3hhM1dBU0tFYWJLU1g2YVkxcFZ4OFVNR0pHT3BDTm1ZemVOcGpPZXdvOVRRbEllWDBoTWF2UE1hcHBybDV5eldOaE4zVzZZUk9GdFAyNnBTOThQTlZLNW5OQ1pSN1V1ZzJGNDZLME5ZVnp5TVd0dUY2N21ZSUZKWDZHVFAxTkJVRWlOaGFyNFBFNmtjak9ZeTRQOUc4a0UwalVMeEtxTEh2d2prYnNZdlUxMVhFRUNCeUppSlNackxQZmd2TmxMMmxOdG43OW9MRi9jbDFRSHBmRjJCWi81OW5aNmhBTzRWSjVnUHRSM1g3akJVbzFzZEw5TVdUOWlBU0lHSXJmZDZUMkJSN2YrSkg2d05ZRzZtblhxV3RjMERLYVpuNnRoOHZ0RVcvRXlBaWRWcTFLeTJGYjNGLzhqdGxHLzJwTS9IbVlhSlhhYkJqRlVYSmxyN0RsTGF0dUs0bVZ2OTl6NkZ0ZmQyVHJUcWhpaWxaVnRnSlFXSTMreE1yNjBJMmxkN0hmRG9LRGV5bjFwUDljSmg3aDQyZjZSNVp1V3BRb0NlbEJGR3BGN25vNDJUR3NWSVd3NzdKdndlVFdiMTNNc3VKU2dVUXFXVGhSUGtNdFZwNVV2akUrcWY1ZEhSQ0NqWjJSWkFvYWpCaWJ1STJMMlJUbTA5SFk4MlNQYldlTEI5VklNdlNwOVhoTzJaOGtSdm53OWx6Y2FpZzhjL0JaUFpWQVdOV0U1WmFYWHVid09yYWNheXF0cUY0anliV1V5dmdzNjg2RzRYdE45Z0xRV0pEMko4WXViT3JDOW1ZYTh5UzlXbFY4VTRIMktJY2ZSaUFoZzc5anpCWVljWVhtVHFueXZaM2RiR2RzTUo0bTlQcW9nTEZGRkpQM1ZOT216VDIrNjJRdmlha2Z4K1JqUUlMQklsdHNmY25oa0kyTHJNOVNqK3RWeFZMSG1pSFJ2RzFCdG1sRlJYb3RiQ3FwcG5lMTRXV0wvK2kxVU1PeWtlMmRKekNCZDlneXl1dExqNWExeUh3b2t5R0UrMWw2MHIwd0xxeHF2aDdwbGxZZHhvSG5UUFpDQ3NFaVFzNjJwOW9Yc2ltS1FST2F2emVGcFNDK3F3VWtkL1VLQkljRmt6WDhMbG1lLzhvNERxdU8vUlR6a0JFQ1RUUjBmZHo2Rlk1Vk5HYjJ4ek9lMVRBZE5KaEdtWm5BWFZZZ1p0UFIwY1pqWmVlVkFtYlNYS1lJMGhjb29QOWlaWFgvc1Nta0VyU2FQeHlYVm44b2x6N1gwT0tDQVBzZnRIZzVWTFg4YitWVHAxVHdQaUZWVzhVYk56eENsVHF3c3JpdlZmMmtMVU8wekFQdXc2bU14Z3YzV2tzZEVRbGJIZ2hTRnloZy8ySkI3SE9uRkxqTjJ3TXNsUGZTL0pGRGZXL3RQSkNyajNxVk5SeEkyRDhrT2dBOVVtcm43L3AraVU0UkpFYXh5bjB2WkROT2dmS0hycU5WYUJsSDQwMHpOZnFpMk5KWWk5blk3ejBXd0tUa2s5NkRiOXBvcEd4RUZ6MS9qRDlGNXhHUG1RMlZQVzZVbHFkdTBiWjY3RTIxdy8xbmc4anZkOVY3aFF3M3pLZ3hpWjBMWWVmQ3cyOGh2bzU2ZWdJalMrNmhtOVk3VWFmMUlIaVlESzcxQm1EV0M2MFM0ODZQRDc1aXNicWkrdDAyVk1WS3pwdS9jWDlQRFQ2L3FRQ0lMWGo5WGpwcERGZTh1NWY3aHA5Q1pXdkVkVXZHbGk5ZHZpbDJWL01vYk5UWTVEOEhvSjlxVUcrVVFONHBNRjFQY2crY1FpVW4zV05mTlgvaHAvSHhCckJxMWlydXdrS25hSFZMSGZVVGZRYXBONDBLOTNxUHE3djVhSCsxMkl5NUVrVFNmVTFmSjloUjI1OW5YdTlmOHQrS3JmQTNmSzlSN2srd3lyL1lESzdVVUdiUHAxMXVvMERCVjVaQklyVmoyQXBUQUJjTmliazZ2YjFWLzBzQm85UFMrNjV1djkvVk4rZlRWL2JtSlQ4Vm5CTU5TWHEvdVZreC82bEhoTTlOdnFTbk1jZjFyRkZUdjFxTVdQSHdYdytiejBJTExOUVhHZVRqZVgzaXdFQ0s0TklpU1pFNmttZ294Y21oSnJYN2lNcmhNQm1sS2x5RlRFckowZS9rejVZRmdYUkw1MlhlVTgxVXFTS0lCRUFBTGhRa1pZTEFzUVhoWldrYkZZVUFaU1BJQkVBQUpoUzVzbmxrdFJEclBhc2MxUEpVZ0RRT1lKRUFBQmdRaWwyRnhTdDJkbURWaFJKUVFUUUtZN0FBQUFBZTFPQnFGc0N4TDBjSzhnR2dFNnhrZ2dBQVBiaVhKem1JVktWNUpTcXNMNm0wQnVBTG5GT0lnQUEyTmxnTWd0bjVuMDIvZ1NmdEtmeEtuYnFaYVBxY2ZONGg5am5CMTl1VUJrVEFOeXdrZ2dBQUhiaUVDQ0c0UEJpUGgxZHRaN3BrUE1oOHF1OFRlMXpBTkFmQklrQUFHQnJ4Z0hpczRMRHk5WXppVkhBR1BZTm5qbS9zcWY1ZExUdTdGWUFjRU9RQ0FBQXRxSWlOWDhiZldwaHorRnBia2MvUkFvV09XUWZRQ2VvYmdvQUFEYW1ZeTZzaXFwYzY4aUg3TTRHREs5NVBoMkYxZFRYV2duMWNON3R1d1RRVjZ3a0FnQ0FqUTBtczdDeTljYmdFN3RXa0pXOVJ1RHNzVi94WDV5YkNDQTJWaElCQU1CR3RBL1JJa0M4S3lWQXJQNjdxdmhWMVZBZldrL3U3elQyK3dFQWdrUUFBUEFpclpaWkZKWjVMakh3YVFTSzFxbW5CSWtBb2lOSUJBQUFteGdiSFpZL0xqVjlVdS9MZW9WMDJIb0VBSnl4SnhFQUFLeWxWY1JIZ3lDeEY4YzZEQ2F6c0QveFZldUozZjJXWTNFZkFQbGlKUkVBQUx6RWFoVXgrWE1RalZnZmdzOTVpUUNpSWtnRUFBQXZzVXFodEE2ZVVtVjl0dUZKNnhFQWNFU1FDQUFBVmhwTVpxRnd5dUdxNTdmdzBKZWpIUFErTFN1ZC90cDZCQUFjRVNRQ0FJQjFyQXFuM0xjZUtSdG5Hd0xJRmtFaUFBQll4K29JQmdxdkFFQW1DQklCQU1CU3FtcHFrV29LQU1nSVFTSUFBRmpGc21CSzM5Sk5BU0JiQklrQUFHQVZ5NFBjKzFhaGs0cWtBTEpGa0FnQUFHQm9NSmtkR1owckNRQ2RJRWdFQUFDcldCN2kzcWVWTmNzVjJJcFVYUUN4RVNRQ0FJQlZDQkozWTFVUnRzWnhHZ0NpSWtnRUFBQXhIQ29OczJpcUNQdkc4ajNPcDZQYjFvTUE0SWdnRVFBQXJHS2Q1bmplZXFROFkrTjM5TkI2QkFDY0VTUUNBSUJWck5NY3gxcHBLNUxlbTNXUXlINUVBTkVSSkFJQWdGV3NnOFFEaHlBcUpWY09WVTF2V284QWdET0NSQUFBc0lySEt0Yjd3V1JXWEJHYndXUjJhcjBYVWRpUENDQzZ3WHcrNTFNSEFBQkxEU1l6ajRIQ1U2aDJPcCtPaXFqYXFhRDMxbUVWOGN0OE9yS3VsQW9BTDJJbEVRQUFySE8zNXJsZEhZYWdxb1Q5aVk0QllxWDBWUUNJamlBUkFBQ3M0N1VuN2xpQllyYXBwODRCNHROOE9tSS9Jb0JPRUNRQ0FJQjFQRmV6NmtBeHU1VEt3V1FXQ3ZEODdSUWdCaGV0UndBZ0V2WWtBZ0NBdFFhVFdRZ1V6OWI5SFFNaHJmVjhQaDA5cHZ4dERDYXpJd1hPcjFwUDJnbXJpRWV4M3hzQTFGaEpCQUFBTDRteHFoV0NybjlDUURxWXpJYXRaenNXZ2tNRnkvODRCNGdWcTRnQXVzWktJZ0FBZUZHazFjU21CNjNZM1hTNXVxaUE5VHppZTcrYlQwZkpCY2tBK29VZ0VRQUF2RWhwbHZlT2UvRFdlVkNCbUc4L25rZG5xT0xxVUQrbnFzUWF5M1A0dmZQcHlPTjhTZ0RZR0VFaUFBRFlpSXExZkV6ZzAzcFd3QnArdmpZT25IL2NkTlZSd1dCZFdUVUVoRWY2ODNIckw4Znp4M3c2dXV6dzl3UEFOd1NKQUFCZ1k0UEo3RGJDbnJ3K3VwNVBSK2Q5L3hBQXBJSENOUUFBWUJzaEJmT0pUOHhVU0tjZEYvUitBR1NPSUJFQUFHeE0rd0ZQbGZLSi9UMW9INkxiUGtzQTJCWkJJZ0FBMklvS3F3d0pGUGRHZ0FnZ1NRU0pBQUJnYXdTS2V5TkFCSkFzZ2tRQUFMQ1RScURJSHNYdGZDRkFCSkF5cXBzQ0FJQzk2RGlKRzZxZWJ1VERmRHE2eU9CMUF1Z3hna1FBQUdCaU1KbUY0T2M5bitaU1liWDFmRDRkM1M1N0VnQlNRcm9wQUFBd29SV3lmMnUvSFg3NEZBN3FKMEFFa0F0V0VnRUFnTG5CWkJiTy9RdEI0MEdQUDkyN2NQNmg5bTRDUURZSUVnRUFnQXZ0VlJ6cnAwL0JZZ2dPTDFnNUJKQXJna1FBQU9DcVI4RWl3U0dBSWhBa0FnQ0FLQlFzbmlwWVBDN2tVdy9uUkY1VlZYVTVuNDRlVzg4Q1FJWUlFZ0VBUUhTRHlleEl3V0lJR2c4eit3YWVkZVRIelh3NnVtazlDd0NaSTBnRUFBQ2RHa3htSnpxVS96VGhzeFpES3VtdEFrTUswUUFvR2tFaUFBQkl5bUF5Q3dIalNlTW5kbXBxQ0FoRDZtZ0lCdS9aWXdpZ2J3Z1NBUUJBOHJUYStLdFdIQ3NGa0w4Mi92OG1CWEdlRlB6VjZ1RHZzUTRLNTlQUjE5Wi9CUUI5VWxYVi93UGhXSzN0TVBWdEdRQUFBQUJKUlU1RXJrSmdnZz09IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMSIsIkZJRE9fMl8xX1BSRSJdLCJleHRlbnNpb25zIjpbImNyZWRCbG9iIiwiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsImxhcmdlQmxvYktleSIsIm1pblBpbkxlbmd0aCJdLCJhYWd1aWQiOiIwOTYxOWZiZmQ3NWU0YTYyYmUxZGZlNGQyNDA4NjRhZSIsIm9wdGlvbnMiOnsicmsiOnRydWUsImNsaWVudFBpbiI6dHJ1ZSwidXAiOnRydWUsInV2Ijp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibGFyZ2VCbG9icyI6dHJ1ZSwiZXAiOnRydWUsImJpb0Vucm9sbCI6dHJ1ZSwidXNlclZlcmlmaWNhdGlvbk1nbXRQcmV2aWV3Ijp0cnVlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZX0sIm1heE1zZ1NpemUiOjc2MDksInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6MjAsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MjU2LCJ0cmFuc3BvcnRzIjpbInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5IjoxMDI0LCJmb3JjZVBJTkNoYW5nZSI6ZmFsc2UsIm1pblBJTkxlbmd0aCI6NCwiZmlybXdhcmVWZXJzaW9uIjoxLCJtYXhDcmVkQmxvYkxlbmd0aCI6MzIsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjoxLCJwcmVmZXJyZWRQbGF0Zm9ybVV2QXR0ZW1wdHMiOjUsInV2TW9kYWxpdHkiOjF9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiTk9UX0ZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMTAtMDYifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTEwLTA2In0seyJhYWd1aWQiOiI1MGNiZjE1YS0yMzhjLTQ0NTctOGYxNi04MTJjNDNiZjNjNDkiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjUwY2JmMTVhLTIzOGMtNDQ1Ny04ZjE2LTgxMmM0M2JmM2M0OSIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJFbnN1cml0eSBBVVRIIFRvdWNoUHJvIn0sImRlc2NyaXB0aW9uIjoiRW5zdXJpdHkgQVVUSCBUb3VjaFBybyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9pbnRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRENUQ0NBZkdnQXdJQkFnSUpBTEtLajBzS1RYRGxNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1DRXhIekFkQmdOVkJBTU1Ga1Z1YzNWeWFYUjVJRlJvYVc1RElGSnZiM1FnUTBFd0lCY05NVGd3TnpJek1UTXpOekl4V2hnUE1qQTJPREEzTVRBeE16TTNNakZhTUNFeEh6QWRCZ05WQkFNTUZrVnVjM1Z5YVhSNUlGUm9hVzVESUZKdmIzUWdRMEV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRREVpWmg0dEljQVVQZlVrQ21YYk53V0RJRnZXeHhHUGhKcS8vRnMzdVBCQTRKUVVYaUFIV1VvZjBtTnhmVTM5eWZLMzkvMnlYZ09KNVFvWkd6cFFFR1N3NVNub3kwKzYxb2VJKzBJWGtBYU12ZlZ2dG1Ob08yT0pPNStBRHRsRHU2cmdKdVY2SXBMTFI1U0tYT1Uxek9QSFlyQVBzWXh2M1VMZzI2VzYzek1UcXBDTkNnNHB6d1pSeVhqY0xyVWVDekY0WGNmK3AvRzQyWmRHekJlWmM0eit5Y2NPTXhCeDR3c0djUGcxSEZ5elhsM0ptdHlnN3pVREVxYmplSDhOc3k5K2tUMzFtVlhvY2lnQjNoRzd3Y3RpSW42QTVsUEdNUEpvSTg0UlpkckIzZXM5UWxIWldTbnZkSkdlYUxuTzVYcTRtSWh1ZmJZNHMxVXEvcHZHc0FQQWdNQkFBR2pRakJBTUIwR0ExVWREZ1FXQkJTT0VuK1ZGaEkvWkdVVFNVZWhFeU9seHhGeEx6QVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUFNQXNHQTFVZER3UUVBd0lCQmpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQXJhRG84dW1yZWpYTllRNkJSQm40WHNEZWhEbGlqM0xBTk03Sjd0aW1hTk1mb3hhZHd5UzFudkE4ZTdjTzdPQXczaWVsWWpPNm9pU3B6VXN1NmVIMmxvWjBMSzBma29pYVpabkhLYi80Nm82bzk5NDdpOHR1QU95b1ZyR1B3OWMyOVZvSVFrRTNRai8wUEpabVUwWXViaWxSVU54NmxkSzI1YTBvL3E4bGs3QkwzMk5qV2RUektESlBnZEttcndsMW0zSzJlR212MlpJZ0FQNHBXVW1nMERGNFhTL0phbmtGaWJSWmhzNktnMFYwMkU5UGNiR3lYSW8raHhVOVFzampnSVB0RmlGOCtWdlFiUFRWZU0xWmMwQ3hQbTFYeDIya2kzSWVQcGFEaWd6UzBLZnhrNVJuRnRxWS9aT3lWdGFtL29BUDl0cS9NVGpFUXUxZmxycHBSUT09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUtnQUFBQ29DQVlBQUFCMFM2VzBBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBRTltbFVXSFJZVFV3NlkyOXRMbUZrYjJKbExuaHRjQUFBQUFBQVBEOTRjR0ZqYTJWMElHSmxaMmx1UFNMdnU3OGlJR2xrUFNKWE5VMHdUWEJEWldocFNIcHlaVk42VGxSamVtdGpPV1FpUHo0Z1BIZzZlRzF3YldWMFlTQjRiV3h1Y3pwNFBTSmhaRzlpWlRwdWN6cHRaWFJoTHlJZ2VEcDRiWEIwYXowaVFXUnZZbVVnV0UxUUlFTnZjbVVnT1M0eExXTXdNRElnTnprdVlUWmhOak01TmpoaExDQXlNREkwTHpBekx6QTJMVEV4T2pVeU9qQTFJQ0FnSUNBZ0lDQWlQaUE4Y21SbU9sSkVSaUI0Yld4dWN6cHlaR1k5SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpFNU9Ua3ZNREl2TWpJdGNtUm1MWE41Ym5SaGVDMXVjeU1pUGlBOGNtUm1Pa1JsYzJOeWFYQjBhVzl1SUhKa1pqcGhZbTkxZEQwaUlpQjRiV3h1Y3pwNGJYQTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzhpSUhodGJHNXpPbVJqUFNKb2RIUndPaTh2Y0hWeWJDNXZjbWN2WkdNdlpXeGxiV1Z1ZEhNdk1TNHhMeUlnZUcxc2JuTTZjR2h2ZEc5emFHOXdQU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNCb2IzUnZjMmh2Y0M4eExqQXZJaUI0Yld4dWN6cDRiWEJOVFQwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOTRZWEF2TVM0d0wyMXRMeUlnZUcxc2JuTTZjM1JGZG5ROUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXpWSGx3WlM5U1pYTnZkWEpqWlVWMlpXNTBJeUlnZUcxd09rTnlaV0YwYjNKVWIyOXNQU0pCWkc5aVpTQlFhRzkwYjNOb2IzQWdNalV1TVRFZ0tFMWhZMmx1ZEc5emFDa2lJSGh0Y0RwRGNtVmhkR1ZFWVhSbFBTSXlNREkwTFRBNExUSXpWREV4T2pBM09qVTFLekExT2pNd0lpQjRiWEE2VFc5a2FXWjVSR0YwWlQwaU1qQXlOQzB3T1Mwd00xUXhNVG96TXpvd05Tc3dOVG96TUNJZ2VHMXdPazFsZEdGa1lYUmhSR0YwWlQwaU1qQXlOQzB3T1Mwd00xUXhNVG96TXpvd05Tc3dOVG96TUNJZ1pHTTZabTl5YldGMFBTSnBiV0ZuWlM5d2JtY2lJSEJvYjNSdmMyaHZjRHBEYjJ4dmNrMXZaR1U5SWpNaUlIaHRjRTFOT2tsdWMzUmhibU5sU1VROUluaHRjQzVwYVdRNk5UTmlNMlkzT0dJdFl6azJPQzAwTnpOaExUZzJaV1V0TXpBNE1UaG1PVEkwWW1KaklpQjRiWEJOVFRwRWIyTjFiV1Z1ZEVsRVBTSjRiWEF1Wkdsa09qVXpZak5tTnpoaUxXTTVOamd0TkRjellTMDRObVZsTFRNd09ERTRaamt5TkdKaVl5SWdlRzF3VFUwNlQzSnBaMmx1WVd4RWIyTjFiV1Z1ZEVsRVBTSjRiWEF1Wkdsa09qVXpZak5tTnpoaUxXTTVOamd0TkRjellTMDRObVZsTFRNd09ERTRaamt5TkdKaVl5SStJRHg0YlhCTlRUcElhWE4wYjNKNVBpQThjbVJtT2xObGNUNGdQSEprWmpwc2FTQnpkRVYyZERwaFkzUnBiMjQ5SW1OeVpXRjBaV1FpSUhOMFJYWjBPbWx1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2TlROaU0yWTNPR0l0WXprMk9DMDBOek5oTFRnMlpXVXRNekE0TVRobU9USTBZbUpqSWlCemRFVjJkRHAzYUdWdVBTSXlNREkwTFRBNExUSXpWREV4T2pBM09qVTFLekExT2pNd0lpQnpkRVYyZERwemIyWjBkMkZ5WlVGblpXNTBQU0pCWkc5aVpTQlFhRzkwYjNOb2IzQWdNalV1TVRFZ0tFMWhZMmx1ZEc5emFDa2lMejRnUEM5eVpHWTZVMlZ4UGlBOEwzaHRjRTFOT2tocGMzUnZjbmsrSUR3dmNtUm1Pa1JsYzJOeWFYQjBhVzl1UGlBOEwzSmtaanBTUkVZK0lEd3ZlRHA0YlhCdFpYUmhQaUE4UDNod1lXTnJaWFFnWlc1a1BTSnlJajgrVzBZWE1RQUFSeTFKUkVGVWVKenR2V21RSk9sNTMvZDdyOHk2dTZ1UDZlNjVyOTNaRTd1TGF3RVNQQ0NDRkVtUm9paVpWSVFvTzBTSm9aQ3NDTnR5aEdXSExjdDJPRUlPMjJGTHBvTlMyQjhVK21ETHVrakpGQ1NMRUVpSklNQUZRV0N4QVBiZU9YZk9ucjY3anJ6ZXd4OHlxNCtaMlVYM1lMR3oxVHQvUkdGN3FyTXlzNnIvOWJ6dmMvMGZFVUpnM1BDZi83Vy9zdWRqQytmbzFGdWNtSjhGWHpBYzloSENvRHQxTXUvSTg0S2FMb2hFaTlXVmpLZ0d0VWFkTExNVXlRRGRVRFFiVGJ6TFdWdFpJVEpnZEkzQ3lWa25lQ0xLL05FOHo3OHVEaTI4a2RrQTNnTGkrL2ZtOTRHLy9wLzk5UWQ5Qzk4ejlJTytnUWNIZ1JBbGtZUUVKU1hlZTd6ejVPbVE0VERERnhsNWtIUEIrMGZxY2YxY3B6TjNKcUFmcmJjN3A0U1NaNTU2N1BHSlJ4OTduUC8zODcvSnE5Lzh3eDg4Yyt6RTd5TTE0L2lsLzZEaVEwRFFRQUNrbEVna2hFREE0YXdsZHhsWm1pR2NrMm14Y2NSN2NjS1krdGtRd3JuMlJPdXhacXQ1MWtUeENXVk11eFkxaUV3REZ6Ulo2aEdSWS9iSVNTYTdoNWpzSGlJcDBsODVlL2IwN3plYWJZb2lmOUJ2K3NCZ0xBbGFVbTZ2eDBKa0lqWTNOK24xVmlPajFaRW9yaDhYZWZha2lzM2ozWm51eVpxdW54VmVuWXJqVmh6VklyU0tFTnBVcnhlNEFMN0lTZk1jSVMzQ1FKSW1MQzB1Y25SdWdhbkpDYUlvZXZhVjg2K2pkVXdJL3Z2MHp2ZUhIL3FqUC8rZ2IrRjd4bGdTVk94amoyZVVZblh4NXVIMnFUTi82L25QL3VTUERJZTkyZjR3bDFGVVE1a1lxUXpCZ2tDVlMzeHc1TjVCbmlJQUx5VUJnWEFXS1FRRWg5S2c4T1JKUWxIa1RFOVAwWWpqazhQMWxabG1wNzNzM1FlRG9BY0JZMG5RdGpSN09rNUtRWkhsdkhWejVXLzh4Qi8vcFYvOHNjOTlqbSs4K0RYZVBIK0ZRRXlSZWdJNUlaVEhJa3JMSEFqYis5UGd5eStFQkFJRUwzRzVKd1JKa21Va2FVcTdNNFhTcmE1ejY2ZW5aK3JMV1dhL1gyLzlRNGV4SktqdWRQWjBuRlFTc2d5bmE0ZXVYTHRObGhXRUFIbG1rUmdJSGdRbEdjWDJ0a0VnU2pKdVBSTkFDSUlvZnk0dHVHU1k1S1JwU3FmZHBEVTF5ZXJscFdmRXRjSFg1RU1MK3A1aExBbmFqZU05SFNlRlFNUVJ0YnE2dHJSMkUrc3lXczBtU2dXRWNBZ2xFQ0tBOEFRdjkzVVBVZ2p5dkNUbzdHeVhRek5UWEw4UW5seU5tM2doNEtFbi81NWdMQWs2TXhqczZUZ0pHSzFvMS9TVnRkNGFnMzVLSE5jeGtVUUlqeENxdEtEN2NydUFBRVpvaWl4bk9CeWlkVVI3b290WDRkRVFLNFNRRDBOTjd4SEdrcUJ2eXNhZWo0MTBoS3Exei9lWFYxbGVXbWRxcW9NeEVWbmlrTEtNaFpaTC9CNVBLQ0Q0Z0JTQ0VEeEpsaEJDWUtJN0NVRXNaT2tRSFJ1Q2YwalE5d0pqU2RDWitZMDlIMXR2S05MRW5YL3QxWlNWOVJXT25UaEVwR3IwODAzcXpYSlo5MTRnOTByUUFBandzdHlYSm1sS25oZE1Uc3dRUi9WcGEyMWNiemN5WjkyZTd6R1VweUlFZ1hNQjhjRklSSDBnTUpZRWJkZjJia0hyc1dLaTQ4L25kdVBheHZycTBjaEVSSEZjZXVveUFBRVJOT3hqa1JkQ2dnZ0VDWG1XazJVNTNjNGtqVVp6em1mWmdzNzlaZmJxS0FsWjdvTkRRSXFBTXVMaDluVUh4cEtndDY0MjkzeXNrcHFpSUl0MCtzYnE2dEpSZ2FMUmFKVGtESUl5NVhrL2pCQklJY2p5akRSTG1Kam9NTm1kakJadlhqdFRSMTkyZXptbEVHQWRqWVpnMEUvcG1vTHVUSjBpZXhnRkdHRXNDWnIxYit6NVdFRVpRcEpTdkxTeXN2WmpoZlcwMncya0RBUXZSZ2Z0RXg0UWFHWElzNEkwVGVsMko1aVluT0xxMVN2bmd1QzMvYnVkTTRDS0pBcVB0aFloSW9KUUJHeEoyb2RyL0JiR2txQW5uM2xpWDhjM20zVnVidlMrYytQcUxZYURoSGE3Z1RFSzV6eFNTZVErbzBLQzdRMUJWdVFNa3hTdEROM0phVnhSUE51SUxjVHY0TWtIMERHa2c1eGlVSUJTdXpZWElUeU1VTzNFV0JKMHFqdTFyK01uSnllWW41OC8vOXFiaTZ4dmJOS1phQkxITWYxZVFhejJGLzhFS2srK3pEaDU3MG1TQkJlZ016RkpjT0pjcTVIVGJHdHNjVGZUbElaMElGbTdtcU4wQUtNL0lNVjVIMHlNSlVIekl0M3pzWUZBbGtlMEp4cFhzM1E0V0YxZGE4NHZuRVJITlp6UEFMKzFGOTBQeXBWWUV2SkFtbWJZd2pMWm5jWkV0VWMyYnEyMlJHTDZ4UjBaVDBGQVJZclYxUnBGSG9qcWNqKysyWWNTWTBuUTMvdnlWL1oxZkNBZ1E3Z1ZSMlp4ZFhYcGRHVE9FVWQxWUgwN0JycG5vZ1JHc2FZUXdCTklraFJyTFoxMmgxcWtGOVkzd3VPMTl1d2ZXcmZOVUFGNEVSaXVDcndGRXcwSTRUNnM5NGNNWTBuUW1MMkhtYURNdFR0WDVFVytlbVZ0YmZsMDhKSkd2WTRVcFNlL2p3QlRsWUVxWTZmQkIwUlFaSGxLbXFTMG1rM2EzVW1LWXUxSlo5UWZaczV2K3pzU1lpR1FLaENjZTdqUDNDUEdrcUR0cWIzbDRrY1FRaUJsekxXYjR2V2x4YVhQZWkrb3hWR1pneDhSWlU4cmZHVTVSMVpVQ0xTV3BHbktZRGhrWnJwTGQzYWF5K2NYbjEyOXZVbWFGMldKSHVDOVoxNFpWTE9KRTN1KzRJY2VZMG5RWm1OL3R5MEVHS09vUmVidGxlWFZ5dG8xVUVyaVhVQVp1YjhpYUM4cnl4aFFTdUtzSTAxVG9paW0wKzZTcGNVUEhIMWlFdE9JSVhpa1Z2UnVidUp1OTBnZmJqcjNoYkVrNkdCai83Y2R4eEZ4MUxqUzIxeWxQK2hSYnpReFVZek5IWElmMWl5RTdXT0ZBQjhFMWxvS202T05wdDNxc0xyWi8wU2FGRCt4ZG5QOUN4dnJRNlJSMUJzTkp1T3gvTGdmS01ieUUvUG0zcmRkNXJQdmJhR2MwVVNOK0hKdmM1UCtZSVBwbVhsTUZHSHRZTmQrY0Y4eDhsQnVIMEx3OUFjOU50WTNlZnp4ai9EVFB6M2d3cXN2L3MyMTIydGZHQXd0d2hpT0hhMmg0b2RPMFg0eGxwOVlKTU05SHdxSUJCZ3YwRTZqbmRwNnFFTFNpaHRYaDhQaFlIbGxoVmF6VGkyT2NmWjdTQ3RXeTd5VWtuNi96MmEveCt6TUhKLzk0Ui9EQy8weGF2NFhUejQ1eTZIak00QkVob0JTQ3FVVlNsSlZVNzAzbjhsQnhWaGEwQWE3NDZCU1FwNEYwbHpRbUdqUm5PNFRSU25aanJjWDFSU3FZYSs5L0twOStkYXR4ZWVqV05KdU5MbnRWN1pjSDNFZmJCRUlRaENraVVWSmlkS2Uxa1NMNmJsajNMaDYvWk9uSHBuNXg3VTY5QlkzeUkwaUhmVG1rMEgrU0xBRkRSbS9wV3Z4cllkRWZXZU1KVUhESFh2R1FKa2Q5M2hFWkZqM1RWalBtUUlJQVE4b1dUQkZDNGU2ZmVuU0ZVSnd4SEd0SW1aQVZIdkxVZUZJcUpidjBjL2xmd05DeUxLRldZclNHa3BGWkIxU0tweHpySzJ2c2JLeXdrWS9JM1BteDI5Y1dmeGpRWWpIa2tINi9GcFBudEJhUGFaVTNESDFEcjBpTHphR3ZkOCtWTlAvdFhmaDYwSUdqQW9FK2RDUkdtRXNDZnBPRUVJZ2hTZExOSVBsR05iVzhibkRLMFhMZS9KbWNmalk2VWQrNE9NZi96ak9GbHZ4ZVNGR2ZhTGJ4SkJDSUpXc1NDaVJVdUdESjRSQVVSUVVSY0htUmtLYXBmUjZRL3E5QVYvLyt0Zm85VGNZRG9mRWNaMzU0eWMrSXFYOGZCelZtRDdjd0VRMTJzMFc5Y2lndENSM21WbGJYZjdKeFZ2WGZ6THk3cS9vaWZqdmJQUWx0bmhvVGtjNFVBU0YwdHBwNGRHMXdQcDBSRzk5blhLZkdIajc2cTMvL3RTcDU2WWZlK3djM2djaUU2T2tRZ1RRUnFPMXJFZ3VjZDVqclNOUE01SXNaVGdjMHU4UDZQZjdESWNEc2pURE9vY1VFcVUwY1Z3amlqUnpoK2JwVEV6UTZiU0phM1dVTWdpaEVFb1JoTUE3UjkwbzR0Z0FnbTVuR2lNYjNMaDI2ZGQ2TnI0Vmt1ZzNTc3Y5MElyQ0FTUW9BQUc4YzlSYUV6U2JMWXgwNU5aeTQrYmc3STNGbTZ5dXIzTGs4T1BNelR2YWIxOGp6WVlVUlU2dm45RGI3RFBvRHlwQzlzbnlBdThkQW9HSkl1SW9vdFZxczdCd21GYXJSYjFXSjY0YmFuR0VsQWFCS1B2cnZjZTVBcDluV0Jkd3psTnYxSmc1Tk1udHBXWGVldXNHeldhVE0yZlBjdXIwT1RZMlV0WTJWdjYzVXllVEx6WnFnMDFyeDlKL2ZjOXhBQW02bmJwMG1hTXpHVEhaaWNrOHREcTNONFpwenB2bjMyUmpmWVczWHIvRWhVdVhHQTc3T0YvZ2JJR1VHcVUwelVhZDd0UVV6VWFEUnJOQnM5RWtpaU9NTVdpdGtVTGdROEE1aC9lT29yQjRYMVJ4VW8rUXBmTVVSSGsvdFZxTmRxZkJiL3pEMytBMy9xOS96dTNWMjB6VVczenloei9OWC82ci96RWZmLzdqZk9uTFh6eTZ2SmorMVViYy9PL3lvQjQ2VGh3MGdvYUEwcHBJS2FRRWdhTzNPVHk1dnJyNmFGTElUK3U0OFVNMUVmaWRMMzZSb3JCSUZGUFRYV1lQelZDTFkxcXRKbzFtazFwY0k2NUZXMmxLaE1BN2ozTVc1eHhGWHJ4THBySnFXZ3JiQlNVQWs5T1QvTmEvK0R4LysxZi9OZ0FUc240dG9yajFiMy9yLzV1NWZYdjU1UC80YS84cmp6MytCRzk4Nnh2L1phVE5QOUlpdk82TDhLSFBpSTRsUWIyN3c0djM1Y1BFaGl3ZG1LWFZ0WjhmOVBzL0owWDBjYVhqTXlGRXlzUjFUcHc4VEJ6RmFHMW90VnJVNmpHMVdsekszbFNWd3JheWlHbWE3YmhBeGJMUlpmZEFtcTJNVXdnME95MDJObGI1Vi8veTgweXIydW9QL3VpbmZ2blkyZm5mUEh6aUtGbmY4MXUvK2E5Ky9oLy8vYi8vZi82NXYvUVhaNjVldUJBTjhvMWZQZVR6bjJDbFIzaUhwTVNIQldQNTd1UDY3a0pMcFFJMUgzUGx4dkR4NjI5ZS9NS2h1Zm1qcDA0L1NWeHJFa1Yxb3JpT0VvYTRKcEVTckEwNExHREpzaUhlU1Z6VmhDblZLTXkwazRVanN1MStacXZPWkJkaGQraVJsQ0VDNG5xTkc5Y3VnMDl1L05KZi92ZWVmL3FqejExNzlac3YwZXgwME1yenN6LzM0Ly9zNnR1M1g3bDY4ZlZ2UHZIczA0MHZmK2tyUHg1SDBaK1JVN1Avb0hBZjdoanBXQkswZVdnN1VCOEN0TnVTcXhmU3MyK2VYL3JxdWFlZjZIejB1V2ZSV3BVU2kwVnBFWU5JU1ZJb05XMEV5RkZkNXc3c284cm96amFOTzA1U0hSQUlRcUMwd05xVVJ4OC8rMThkUG43azJvVTNMckM2c3NiRTZpcStpQ0Z4bkRnKzkrYTN2L25DZi9IWm4vcVR2em83dThEbTJzMi9Pak1UL3dPOHhiczkzOWFCdzFnU2REQnNiZjJzdE1TdEMxNTY2WTMvZWU3d1F1ZjVUMzJLTEV2b0RmcU1kSlFDWVhkT1Y1VENTMlhCY0drTFJYWEFlMWFuV1FYOGhWSnNiUFNZbjUvalk1LzR4RnVuamorQk9BSEZVODl5ZS9VV3lTREZ0Q2FvTnh0Y2ZQT04vLzNDYTYvKzJVY2YvY2dudi9uaTJzZUxMUDJyWHVSL3krMUlHbnpZTUpZRXpUZHFXei9YNmhGWGJ0eitSRy9nLzhTbmYrUlo4c0l5VEZLVWtpQkQyZi91MzQxNDM2ZDRZNEFxNGM1Z21EQTNPY2t6enp6em1WWjM2aXZkemlSQ0daWnUzK1NWMTE3RUF3akovSW5qNUVYMmhWaUxUM2E2TTl5ODlzWi8rdEduei83ZFE5T0gweXhKUDVSV2RDd0pxaXJ4TUNFRXlpaHUzbHorUzNPSDV6azBOMHQvTUVDRUFMN3FOYW9VTzk3dnVIZW9jdlFpZUdLakdReFNKcHV0WC83YTczM3BmK29WSWRTTXB0c3lhR2ZCSzd5ME5HUUVQcjJ3c1hxVEkzTUxKUDMxbzdldXIveUY1TmJHcnhWRnNmOTI1Si84L3J5Mzl4TmpTZEQyWlBuZktOS3NyeVF6SzZ2OVAvblJ4NTVFYVFIT2xUSTJQdXgyWWg2QTlTbUxuUUtDUUpwbGhFYnozTmxUai95M3IxNjg5TjkwSTROd0dUTExpTFVtYTg5QWxwUG45clQzR3UwRkM3T0hXYngxOFM5dnBDdS90cGxZdEZidi81dDR3QmhMZ3RhMGd3RHRsdWI4NjdkL3J2RHg1TnpDWVhKYnNNVkV3VllzOHNFdGpXVnhDU0ZndEdaNWRZM1poU04vWTJGcDhUZjdTN2UrVVp1Zmdyd2dLSW1xTjFoWldwMmZtRHowRndNeGFaTFFhRGFKbWhOUGlwNy9tY2dubjVjNUh6cFJoN0VrNk9xYVJRakJJTEZjdmJyNnA0OGNtYWM3MlNWTEJpVVpxOGRJaVBaQllOUVNRaGoxUFFXOGdQV05sTm5qWno0L0dHNys2VUZ2ODB1bUtDaXNZdkcxbDUrY24xMzQ5U1BIVHM1dDloSzBFZ1FoTWFhR2srRXYxRnZSNTRXS1BuU3lqbU5KVUZXSHVLYm9yZmZPcnF6MGYrempuM3FPMkNpU1FkaTJNQitFdjJNQW5LL1VtZ1ZDS2dhRGxJbUp4dnpKSjU3OTNkczNyM3dqUzN2ZmtaampwNlk3UHpxemNGUVd1VU9xc3AxWkJVbHNESDBoZmp3djNCR1RaOWYzcVdRNjloaExndnJRSU04MGIxKzYvWE5DMStUTTNDeHBrbFVocFE4Z3F2aXFFQUlUQ2ZxYkE2SW9ZbWIrc1k4RllUOW1qQ0k0eWFDWGdyUklDVDRvaEJLVitwMXE0dDF6WGtmWDk2NFRlVEF3bGdSMWVSOFhKSXUzVm45czV0QUMwOTB1V1RMYzJuSitZRkcxZVJBa2hiVmt0b3pBNnloZ0xUZ25pRlZaMHhxY0w0VnlsVVpJamE1SHp6V1YvcnlTOG9QNUpmdytZU3dKR2x5VDN1Wm1lM096Lyt5NUo1L0RHRjB1N3gva0NyVXFjUlVvSjl1SjRNdmI5WUFWYUNGUlptZWFOZUNkeDBReElvb1J4ZUN4eG5BTmFUNWMrOUN4Sk9nVFQzMkVsNy8xN1pQZSs0V1oyV25TTEtOYyt0Nm5QOXhPUzczWFNNR1cwelJ5M0txS3A2M2I5a2hacWR0VlR3YnZNWEZwUVZNbno5bkQwelE2RFd5eGQvWG1jY2RZRXZTMVY3L001VXMzajNVbloybTMyOWk4SUhqUCs3WS8yNHBralViVDdNQ296RTZNeHRYYzhjS1J2cUpnMUNlOW5iNi9JNmZ2dlVjSGhWR2FYTXJqeTdjMko4eEt1dkhRZ243QTBhcFBvOFR5akk3WVZ3bmNYbEEyelZWMW5EdG1KU2tsMFVvaDFZNWcrUzVMV3Y3c3ZjZFpoL1Azc0hMK0hpM083eGpYRk9CQlNvVldFZDZKV1Zsd1ZBbTU0UjhTOUlPTk4xOTdRdzhHZzBaY244RjcvNTc2N3FNeXV4QktDeGlaR0trazF1WU1Ca09TSktXd09VVlI0SndIQWtvcXROWkVVYWwvWDRzam9qaENJQ2xzZ1hOdWY4VWVBUkJsQVl0Q1lKUWhCSUZ1eEkrR2V2d0tINklKSW1OSjBNbnVyQjJtY3JneHpIRFdFUm1KdjJ1dHZUOTRYd294eEhFTjd6MGJ2VTAyMTlmWTdHMlFKQ2w1bmxlVlVHSExXUmsxdVVrcE1TYXUyanZhZENjbmFMWGJ4SEZNVVJUNGNHZkQ5THREeUFDK1FFdUJxY1VFTnM4SnNWRk8wUHVRWUN3Sit1VFRIOEg1bDFkdmZPY3RyQytvaVRvRTl6MHY4eUdVdlVOU0NwYVhWMWxldXMzNnhqcEZucGRMdk5iVTRxaVN1d2xiSy94b2NGZlpOdzlwbGpHOGxiQzZ1c3JrNUFUZGJwZDJ1NDJSaXAyYW9lOEtJZkFJcktmc2cxSVNaL1dqemRZVVVSVGo3N1ZkT0lBWVM0Sis2NXN2MHU4UHIwV1JJa2xUSmh0dDhsQnNEWHpkTDBJSUNDbXAxMklHZ3o0M2I5eGdlV1VWN3kxUlpJaE1ZOHRxam5yalllZjJ0M1IwcEt5bWhxQ0k0d2lsSk1OaFVvNU16Rkk2N1E1eHZFZHlDWUVRRWg4Q1dpbVVpa2dHUE9tRzVkNDI3R21NeVBoakxBa2F4eDZCdVNvQ0s3MzF6ZWtqaCthckl1VDl5bmhYczRta1JpckQwdElpYjErK1RKcmx4UFVZSldOOENGdnozLzJXdXZLdXMreDRaa1JRS3ZVUlZXMFhZbXhlc0xuWnA5T1JWVlhTdTB2dFNCa2dPSUlQYUdYS09mUkNQcElzTDAyQldYVWZrbkQ5V0JKMFB2ZjBYRmh4SWR6bzlRZlRRbFVxYy9zOFR3Z2VFMGNvb2JoMCtRcUx0MjZpcEtUWmF1Qzh4L3V3SXloZTdSOUZXYUVmd3VnTDRTdDFra296VkNna2NtdkVvcFFTcFVwblM1c1k1eHlSaVFqQlkrMDdsOUNKNEt0eGlySlVPTkVhRUYxZGowNUZ0WGpWZlVnOCtiRWs2TlNUVHhFblErSXJLOHU5M3FBVVZxajJoWHRDS0hYcnRkRklJYmx3NFJJM2J5M1NiTmFSVXVDOHI3VHJCU0tVQWZOUjNZZDNvVnJLUzhkTWlwSEV1TWZhZ0pTZXlKU1dFMERwMHNOWFdxTzF3aGhUOXRkclE3L2Z3OW9jWTh6ZEZmOGphZkpRNWZDTlFpcHdRcCsyWG4vand4SnFHa3VDSGpwOG1zR2dUN1B4OG9YMWpmWFBwbG1La0pLdDFzeDNReFZJMTBwanRPVFM1VXNzcjZ6UWJEWVJJbXdOZ1pWU2JDV0pDbGVHbk9JNFFpdEJyUlpSV3M2UndyTEh1d0JDNDRQRTJyTEVUaHRGWkF4YUc2UlNTS0dRd2hDOElqSU5abWRiM0ZxOFFab1d4SkhaNWVSNVR6VktwTnhXS0NOUlJsS2syVGxrSGEzVWh5TGxPWllFL2NyWHZrUWNhYWFtelVzcmw0ZjBCbzV1SjhJNy8rNVMzZ0dvbGw5akRJdUxOMWhaV2FYUmFKUUpIdThJVlhaSENFbndIdXM4OVRpbVdZL1JCZ2c1a09OY0FUanc1UzQwamxXcHd5UU56aW1zVTJoVDMxSWkwVm9UNlFpalk2S29EbExRYXJRNU1uK0NTMWZPVXhRT2JmU1d3N1dUck01N2xEUm9XY1BML09uVkxFWElEMGQxL1ZnU1ZOV1dFVVppNHVLaXpRTERmc3BzdDBrdVFJVHQ2ZStqVE9JdUJXVThVUnpUNjIrd3ZMeE1vOTRBQk00SFJEVnlUaUt3MWJJKzJXa1NhVUh3Rmx0a09HY0JXVzBydGgyZG9uQmtXYzRvSHFwMVZJNDYxRlBFdFFaYUtxSW94cGhTWkN6U2hoQTg4M056V0pkeCtjcEZ0TkgzREpWNUg5QXFSbUR3UWoxVkREYnhWZm5lUWNkWUV2U0pwLzRZalVhRFY5VzNMbjN0RDc1QWxneVE4aEFBUHZnZGY3aTc2KytVVmxpYnNycStURnlQVUVGU1dBZkM0MTM1UjgrTHNnMjBXVmRvYWNuVEFxUkFTSUVRbWhES3BUMEVYN1owVk5lU1cxWXRVQlE1ZWI1RW52Y3crZ1NUMDhjeEpnWWhNTm9RUnpGeEZBT0IweWRQc2JGWkpnUHE5UnAzSXZoeTM2dU1aampJank4Y21Uc3kwWm04WGhURjkrUGovVUJoTEFrYWxucjR1S0J1dVJCRjh0SncyRHNWR0FuTTNrTVJaQWVraE0zZUFBTFU0anEyeURGSXZCY1VJUkNDSUlvVWtRNElZVXZ5eWxBNVBUdUp2NTFCdWh1aTh1SWxXVGJrNW8zWENNRnk2dFJIVVVJaGhhUmVyNWNTakJLaUtPYmtpVk44NitXWDd2RWV5dmVsdGNaRUVRalpHZzZTRTNXdnJoZDcyWE9QT2NhU29DLysvcGVRQktKNm81aW90MS9yOTNxbmZPVjUzK2s0N0I2UUlDZ0tDd1FhclNhK2NJZ0FWaFRnSENvWW5MUEVVUUhlWXQySUxKNFFYQlZLMnA5am9uV010VGx2WC9rT2thbng1Qk9mUVlxQWlkUld5akpKaDh6T3pISm9acGFWbGR2VTZvMWQ3eU5VQWhRbWloRGFVS1RadVg3Ui8zMzdJY2dtalNWQkIzVURnTllCRTRrMzB6VDU2YndvU3VIWjhNNVdKUVNQRk5Db044aUtBaWN0Um11S1FwRVhCVklGWEpIaGJBWmJlN3h5OUhiNStydGlRVHQrZnFmOW9FZkpPa1licmx6NU5nc0xSM24wa2VkSWtsNHBlaGJBaFlDc1NRN056bkY3NlRiZWg2MGlweTN0WndIYUdHSmpDRDQ3ZHp2Sks1bnkvWDU2NDRXeEpPaEhuL2tZQUsxbUEveFhMbno3emVzTStpbXRaaDBmeWx4M0NIY3Zrd0pvdEJybDNsR21XS253emxVaEowTi91SWx6T1hjdTVkdW9LdDF0RHNHWCs0WFJzZDZYNlU0ZHNUUG5Lb1JBS0Vra2E2VDVrRzk5Kzk4eGQrZ1k3WGFYSkJtVXJ4ZUNOTXVZNms3VGFuWVlEZ2ZFY1lSVVpVOTlXV0R2VVFKOGtFUkduVDUzVWlDTjJRcUxIVlNNSlVIcmJZMUFVRzlwT3QzbUcwV1NNeHdrZE5wTmhBK1Y1MTZTUk1wUUxlMmVLS3JSYVU5UjJCeWxJb284b3lneXZBK1FwYVJKSCtjc3BzcnU3REtZUXVCdFZ2YTRON3ZvV2h1cG9ySklPa0J3RnB2MnlQc3JJRVJKMUZEZWk1UWVSQ0RTTVNzck43bHc4VnQ4NHVNL1RwcFVEcFlJZU85b05CcE1UWGJaM05pZ1ZvKzJ2aDVsYTRqSFNFMGNSZVQ1OEpGaFlxamxFUWM5b3pTV0JQM21OMThBd0JpSks4eGI5VnBjWk9uUVNLVUl0cFFLMjA1OGxoYk9lOGZrNUNUZHlTNkQ0WkJHdlVHZVorUkZqdk9lNjlmTzQyd2ZxZlRXZm5PcmtVZ0lmSkdpVEozNjlERk1zd3RTVVEyTkx5RWx0VEJQUHBobXVIU1pVT1FJVTVMVXVWTHdWa2hGdmRiaXdzVnZjK3JVVTNSYTB5VHBzS3pNOTRFaXo2blhHeWhkQnVGM05najRFTkRhRUVXR05PVlVmMVhNaWxxMFpPOVZHSDJBTUpZRWpXc0xBR2l0U2NOd1VXSnY1MWw2Wk5ReFdhcHhsWmJUZTdhQ29kMXVoOW1aU2VLZXhscEhVUlRZSWpCTWgyVHBKdDRWVzdueE1Ockxqc2daTldnZmVRSnBZbHlXQUhscEpZVWt1SUpRV0JDU3FIMElxUXk5RzY4Um5FTklpYWlHMWdwcE1LYk8ydG9pMTYrZnAvdkVQRVZoeTNZVkhGbWVJNlVpaWd3RWowQnVsYWVFRU5CS0lORDR3ays0aG4vRTExbnk5cUVGL2NDaGJnY0FLQytJcFVpTWtqYzJlNzBqWlM5YW1RRXF3NU9sWmZMQm9iU2lVYStqdGFUVnJHT2R4MW1QMGpXdVhIbVRmbThOV1ZXdTczUThnck5JWldqTlA0SlFCcHYya2NvZ3BNSW1tN2c4UlRjNjVXdTl4V1Y5ZEdPQzJ1UUN5Y28xaEl3Wk9WeWxVeU5SVXJPeWVvdGViNU04eS9HaDFEQ0ZVVWpKWUYzR25ia2lJUVJLYVp5VHFKQ2RtWmx1L242ZVB5VG9CdzRpMzE3V2RLU3AxNk0zMXRjM1BwSGJjdnoxeUxzdHkrUktLMXF2eDhTMUNPOEtncmZsSENTamFEVHFGTVdBSkJsU3J6ZnY4b3FESzZqTkhFZlYycmkwajVRYVFtQnc2enpweGlMZVprVE5MdTJqVHlDa0x0T2x6cUxyRXdoMXEycUsydzdtQXlnVk0raHZzTmxmZ2FESTh4d2Z5dmFSVVJMQXVudEVXQU5vSFJGclRlR0tzMWR1OTNEKzd0YThnNFN4Sk9oMVgrckhCNkFXSFBWMmZIbHBLU2ZQQ3VvMWdTdEc3YnRWTUgwVTZOYVZGcjBZVlhFR2hDakk4M1NMUkx0aXFTRWdsRUhYMmdSWHloOEtIWkd1WGlQYlhDUnFUNkhqRmxKSEJCKzJwOVI1ajFCbGphbDNCVUpzMjhMU1FrWU1rd0diL1RXMGFqSk1rdkorUW1uNXkxU3QyaFdKQ0pYRHBaUkUxUXplNWsvYm9VUWJjNkNMUnNhU29KUGQ3dGJQY1MxaXVKbGZ5YS9kSmhrTWFEWTZiQmNSaCtwL3ZyS01Za2RqcFVDcGNwVDI1bVlmZ2tTSTNSVkNJWGlrTXRYeVhWcHRiek4wdmNQRXlZK2lUQXl5L0FpRHM2WDNMZzFDYVVKcXR3cWR0MUdtTEwwUEZFVkdiM09keUFUU3JKUTBsNkw4OG5oWDN1OUlIYnA4YWZrNkV4bUUxdVJXbnB1ZTd0QnNOckQyNERwS1kwblFodDIrN1ZxaGFlcm85Y0lsWkZtQ2tqT0VVSlJML003RnJ5TG9iZ0pXeTZnSU9EemJuZXlCMHRPNlJ5VGNlMVJVTDBOTVZOWXVlSUszZUp2anNnRTIyY1Q3TWg1N1o5WFJLSlVwQkF5SFEzS3RzRVdweDdSVHgxU0lIZVJrZE84ZXBUU1JpY2o2L25DYTJ2bDJwM1lMbDkvdlIvbUJ4MWdTVk5qdElnbFBvRldMTHRSaTBkdmM3TFhMY2pxMkZEdktxdlp5QktIM0hxUGtkdGR1QUMwMWNSd2haRUJJdnlOeEpFdWRCV2RMYjF6SGdLdWNNRWVlck9CZGpyY0Z3V2JZYklCTmV4QWdhblZ4YWI4a3B5amJPM2JkZjZWZE9reFNqSTRxQjZtTTJTSW8rNW1FdklPZzFmNVVLb3lPRUVKT2JxNzNUK1NwdTNXUUcrakdrcUFiTzJZWVNWbUFDRGRqcmE3ME5udFBXZXQzYXpTRmdCU0N2Q2dvYklFeE5ZSVRJM0VaRUpSVlJvUWQ4VTlGNlhtRHR6bmU1U2c1Mm9lQ2tKcDhzRUt5L0RaUXRYdm9DRk9mb05ZOVFqeTV3R0R4TFpLVnE2aW9mc2ZkVjFjT2tqeXpPRHVzU3ZmSzMwZ3R5eXFuTytwUWdtQ0xvRW9hZkZENE5EM25uUDJEQTd3RkhVK0NIajV4ZXV0bktSVktCaTVldm41K1k3MzNWSkVYcGNXc25Bb2h5a0d4dHNqSnM0eE9xNGwzMnlFZGdXQnljaHFsWXJ4M3BSV3JDRnFhVUU4eFhDZHF6MUM5Q0x5bk1YMENYZXZnYlZrOHJLSUdwajRCVXVMU1B2V3BZL2dpSmUrdlZ1blBFYW9TUUtISkM0dnlwWU1VUWxrcVdKTXg4aDV0N3lPK2hoQ1FTdUdLUUt0UlB6VjFiQWJyL1oxRytzQmdMQW5hYVcvL0xHVWdNcEpXTTc1ODVkcVF6RnJxTlkxUGM1U2lNajJTdkhBTWt5Rkt6ZTQ2bC9PT3FlNDBqZG9FV2JxS2pvRlFBR1ZCaXRBUmVXK1pxRDJEYVhaeDJaRGd5d0I4UEhHSXJVMWo4SGhYZ1BOSVV5c3RzYmliYWFQZWVlOFZ3UVdjTDdiSzY2d3RxTmRyNVJmSzd1NmZMd2xhZnZHVVZNZ293dHIwcEZ6YUlBcnEzVHNKeGhoaktWRVJwTjU2T0NTNjNxSTlNWGs1VGZya1JWYUdkVUxad0FZQjYwcnR6ZjZnVHhDZU1Bb0hCY2p6bk83a05IT3o4NlJwVnUxUFBWQ1c1WTA4KzhIaUJXemFROFVOaERhbEcxWGsrQ0xEMjR6Z0hWSkZxS2lCU3dkc1huMlp2TGVNMVBHdWUxZEs0ajFrR1ZocnNVV0J6WE9jdFJTRlJhbXk0ZTR1d29rcXR1dkxRTDZKWTF6Z1JEWk1DSG1Heis1K0hBU01wUVUxOWZVNy9wM1NiUG5YZ3JWa1NZcWM3SUxhMGZwQndHakYydG9HYVpLamxNTGJrcnpPV1JxTk9vOCsramhYM240ZGJ6M1NtQjFMWmtDYUdGOWs5SzY5Um4zNktLWXhpWkFhVWRWekJ1OEkzdUd5SWNWZ2xheTNSUEMrSXVmMmw2R0VwN0NTd2trb0NoQUJMUlhPRmdRODlYcTkwcHU2Ty93dVJKbVRWMW9SYTgzQXVwTnV0bGJ6alZycTdNRjBsTWFTb0xlL2MzWFh2emVNb2xhRVYrcHRQZWozK2sxeFZKVlZSbFZQRWtJUWFjUG1SbytscFZXT0h6dE1Zb2RsMWtrRXNqemg5S2t6SEQ5Nmxnc1hYNlpqekJhMXkxS2xrcVRCRlF5WExxRk1IV25pTXRRa3dOc0M3MUo4a1JLY1Erb0lvY3ZPejUybGUwS0FkWjQwTGR1UXZYTmwyRXVYbG54eXNrTzlWcU80YzNuZktjOFlBbEtVQVhwck9ScUtjS1RUckYzSXN6MUs2b3daeHBLZ2cySmkxNzlUcThBVTF4c04rZXJtWnU4VFFZRFFrdUJLZ29oUXRteDRIN2k1ZUlzalJ4YTI5SlNnRE5ZM20zVSs4c3dudVhIakNtbWFVS3MxMlJVM0RhRzBtbExqWFlFclVyYk43SGEva2pDRzdUanFxT0M1YkdOV0NubzlRYUNHcU9Lc1FvSnpEdWNjM1c2M1hON3ZhdnZZdm83M25paUswTXJnZ3pRMjg4ZDl6Z1YvUU51VHhuSVBLcnUxWFErbVlxSnVrOWhFRjN2OUhxNndiQXZEbG1iVWgzTDVYRmxaWW1sNW1TaUtjUzVVMVU2Q05FMDRlZklNVDMva2VZckM0bHl4STZpL2U3a1ZVaUYxaE5SeDlZZ1EwbFJPVVNucVVEN0tuNFZRU0NrWURCeFpFWmNOZDVSZG9WSUs4anlqM1dveU9UbUJkUTU1RCtkcTY5clYveW1sVUpIR092ZDQwdStUSmNsZGo0T0FzYlNnZWQ3ZjlXOGh3R3RORkVldmJRNEhaR2xDSk11dVM0Y3ZKeUlLZ1ZRU2x3Y3VYYnJFMU9SVVphMkFJTW5TZ241L2tZVWpwemk5OGhHdVgzK0RFSXF5MTMyMFZkaXlaSGQyaTc1VHVVWVpTeFVpa0NTV1FSSlY1eXRUV0VHQXN3NEJIRDZ5Z0JTUzNPYlZlOXFaaDkrWkVSUDRBRW9iVkQwRzV4NlYxOWJRSTZHSEE0YXhKT2lUajMvOHJ1Y21Kam9NTit3clgzbmgyeVREbEhxblRWRVVaVFpKU29Jc2w4YzRickMwdk16VjY5ZDQ1TXdaZXYwK3d6UXQ5VC9UQkI5ZzRlZ2pGRVhPOHZMYk9GZWdWSlZ2RHlERUtPKzlzeTFFTWZvb1IyVjFXNXJ6M2pFWVdySzhSbVJxQ0JtcXdwTHk5WU5CbjZOSGo5RHRka21UZEV2LzZkM2d2Uzg5ZWFsSnMzQ0VoUk0wR2czY0FlenlIRXVDRHU2eGZBbWxFRnBmeER0c25xR2lTYktpMGxlcVVvdFErazZSaWJsdzhRSVRFeE5FT21KdGZaVWtUYkhXa21VSldaN1Q3TXlSRjlEdkxSRjhVZTB4NzlSMzNPbWhpMHF6cWF5U0d1MTVoNG5BdWdaeHZRYkJsZHVOU2xZblMxSW1KeWM0Y3VRSVJWNVVtYTN2WWdYRnFMcSsxSzRQU3A1Yzl3a2lkVlhoODhIQ1dCTDBxNy83cFhzK1g0dWlpNDE2YlcwNEhIVEZLQ0YvWjMxbkFHMGlzbXpJeXkrL3pJbmpwN0dGSnk5eXNpd2xTMU95UENFdlBIRzlqUStDUE90aGl4UWhmRlZmdEZYTHg2aHlQM2hIQ0tWVDVYMGd6eVhPYXhBMTRsZ2g4UGl3N1RybGVZRlVpak5uemhDWmlDUkpTbVdUNzRZQWdiSm9SSnVJWkNoT0pxc3JYV0R0SUlicXg1S2dUNXg3OUs3bmpER2s2WEQ5dFRldlhCLzBCOTBRQkw1U3B4TWg3Sm9BRWtJZ2poc01rNVFyVnk4ejBlNlFwUmxKT2lUTGM1enpPSmRqQzFzTzN6SjF0TkJZbTVldElHRWtlMU11dDc2U1NYUkZRQWlOOXdybkpWcVA5cTkrSzl3bGhXQTRTRkZhOGVpamo5Q29OMGpTUFpKemRQOVUyU1NwU2JKOFptWmg2c1RDL09HMVVucm5ZR0VzQ2ZyNnBiZnVmbEtBbG9KYTNWd2FESVpQT1ZmSjBsUWFTbmVxdzRjUXRpeVhzeFlwSlVWaHlZdThKSlQxMk1MaGcwUGdrVnFqZ2l3OWYxeFZZQnp3VllSQUNGbnVkWkZJRmFpMnJXWHhzdGhPY2FacFJoUkhuRDE3aGs2bnczQTR2QytOcFVEWmsrV0RKN2YrbVJNbkhubXBzUGJBU1lPUEpVRmJwblhYY3lGQXZSYXgxdWk5MkJ0cy9temhIRXFXdi9CZTN0UFJMdi9JcGlyQzhJUWdzRVVCM2hHODJPcWxMejM5cWk5ZEJrUVFXd1hFaVBJY0k4ZCt0TVI3WDZVbXk1ZmlyQ2N2Q2pxZE5zZVBuNkJXcTVFTWsvMlRzeXBrOXE1c0RhblZhNlJwY3U2MWwxK3Fta3kzRi9wblAvcnAvWjM3QTRpeEpPajg4Zm03bmhOQ0VNVVJpMnVyYnkxZlh5WE5NbHAxZzNNQ29WUmxDZS9HYUd5MkQ0SW9Nb1RRcE5mYnBNaHpSdHFjb3doVFdaay9JbTNscGNPV2N4SzJ1cFJIcmM0QjV6eHBsbEdMWXc0ZlBzejgzRHhDQ05Ja0tUVk43d05sUVpVbk1wcG1zMDQyN0orK2RuTUpkUURiUDhhU29GZHVMTjd6ZVdNTVFvblh2TTBaOXZwMFc3TllrWmRUMzk3aDcxWnlxeVNVSUZDTG0wUTZvdGZmb05mdmsrZDUxWWxabHJ4N0gzWVhjbFRacUsxbnFuMnB0UTViT0l3eHpCMmFaWFptaGxhclRaN25XR2Z2bTV3N3Iyc2lneFFhYThWamgwOUlwcVpqOHZ4Z2hackdrcUFmZmViWmV6N2ZiRGE1ZnUzeTYyKzhjZkhtb045ZmdMbXFhZTdlKzdJN2pZMUhFR3dwaGRPZG5LYlY2TERaN3pFY0RzbXlqTUxhTGV1NHMrQTVCRmVKNTVZblZWclNxTmRwemJicGREbzBHdzI4RHlSSlVuNVpSbXYvL2NiVkEyVkV3U2lRaHVERjZkN2E4REEydTFFVUR5M29BOGVWeTVmdStid3hoc0dnTjR5TXVkSHY5eGRLTWRzcTFMU0hwVytVUnJUZUl6MllLT2JRVElPOHlFbVNoS3pJeXJJNFcrYk9ReWdWblFXaTFLRlhraWlLaU9PWVJyMkowaHBuSFdtYU1ScXFzUHRpOTRmUmZZcXFhS1FvYkZ2cDlvbUZJeWR2cE9uQjh1VEhrcUEzYjEyNzUvUGVlNXF0T3MxbSs2M05qZDdIWExDSWlrRDNvdWV1S3FFN25nOUE3aXlpR21QWWJMWG9xSWx5VHBJUGVGL05TeEpsQkV0S1ZlYklxMktQb3JEWVVXdUtvT3A3M3kwS3NWOXNwVndGZUh6WlQyWGlTakt5Y2ZMSWtkTXZEQWJEKzcvQUJ4QmpTZEJISHpsN3orZUZGRVJHYytQdGpaZjdnejQyRktVaXNyWDN0RmlqUHZhN0JXT3Izd09sTnFqQU9sOU5pZHRCc2lySDd3TzRxa1N1R0hsVWdsMVpvZmRLcmx1SVFCRFZMQ1l2a0NnNm5RNXJhMHVuL3NrLy9VZUVJTGN1Kzl4elAvU2VYUE5CWWl3SnVyeTQ4WTYvaTJORHZhWmYzK3dQeUxPQ1NNZWxPYnpIRkxvN0pScnZ4S2lYdmp3MjNHWDl5c0VMWVRmNWQ3em1lOFhXRjJYcmROVVhxb29VQkYvV2hpcWxRSWd6aCtiYWFLTVBsQ1RqV0JLMDMrKy80Kyt5VENNbHIzbFhNQmhrMUticVlFYzV4djBSWi9mU0wrNjVqUlZ5VDl2Yjl4U2pLSUlMSG1NaWxJcnd4ZkJVcHgwUjF3enVBSTFKSEV1Q3VuZVl6Z2FBVXBoNjdaSjM3dHFnUHp4NjZOQTBJcXNjK1oweTg5czFkTjhUN3VjVVBnU2lhakR0TUUwcHMxNzMvdkxjOCtscWtva1hBV1UwVW12eW5ETzlHMFc5VUNRSFNUTjBMQXVXYTRSM2ZnUkhNOUpKOE9HVndTQkJtVkxzYTJkRkUwcnV5czEvUHlGRXVTOVdTakhSYnRHb3hRZ2d5VEt1THk1am5kK2FTbmYzYSs5OXpoQUFXVHArU21xMGpralMvTGlYK25SOVlwYW9PVW5VblB3K3ZhUDNGMk5KMEZZOWZzZEhNNDdvVHJTcHhmRXI2MnNiNWZ5am5SWHFVbXlUOHowME5LRnFLekZhRVJsTnQ5UGFJbVJlV1BLaTRLdmZlcFdMMTI2eU1EdkYrYmR2OFAvOHk5OWhNRXlveDlGM3Z3Q2pQYk9vQ2t2S1BhaVFFaWsxVWhpeUlqazd0S3NrZHAzRXJyOTNiKzRCWWl5WCtNRjNhUkNMWTAwVTY3ZjZtMzJLSkVQcVNzakJDL0RicWNuN2NheEg4Y3hSbUtuVGF1SzlwemNZNHB4RENzMTZyODhmZnVjTm5QY2thYzVyRjYvd281OThscGRlTzgvczFDU2ZmZjVaNW1lbUtLeWpQMHc0ZkdobXo5Y1BBZERWeHRkNWhIUW9wZkZXUTJ3Zm5aNmR3SHNPVE1wekxBazZIS2J2K3Z1aTBHZ3RYeHVtQ1ZtZVVvc05ia3VKT096c1Fkc3pSaGF5V2EvaHZTZkxDM3dJdkhiaENuRmtlT3owY2I3NnJkYzRmK1U2ajU0OHlyZmZ1RWhlV0tRVWZPVFIwenh5NGdpTHk2c3NyVzd3K3NXcmJQWUdSTWJRR3lRb3RjK0Z6SWV0N0ZnSVlJd3VCNDJKK056c3pHbVFBdThPUmxYVFdCSzAwN3A3R3R0T1JKRWhHell1ci9lV2Jab1h1bEZ2VkgvUVVkeHovOWZVcWxUditPMnZmcE1zTC9qY3B6OUtNemE4OE5LclNDSDR5TGt6MU9PSXQ5Nit6bk9QbitXdi9jcWY1bDkvK2V0ODQrVTMrWkZQUHNQczFBUVRyU2F2WFh5YnYvZnIvN3JTV1JLc2J3NUtKNGw5N0RoMmxOUTU3OUJLMGU2MHNObjZzVGZlL0JvbU1uZ2ZlUDRIUHJmL04vb0J3MWp1UWExOTkwZWVlZUphZlZFSWY2dmY3NWR4UXI2MzZHUmtOTU1rNDl0dlhPVDNYM3laUzlkdU1qM1o0ZWo4TEwxaHdzcjZCb2VtdThUR3NON3IwMnpVV0pqcGtoY0ZiOTlZeFB0QXMxRW56eTNQUFhHV1gvNVRQOG54dzRlNHZyaEVsaGYzVnp4U1ZVK1pPRVpyUStIY01XY2xVdGFBdmUxclArZ1lTNEtHT0huWGg0c0dtSlpOaGVMeTVzWmdxOTRUMk9xeTNDKzBWcXh1OUppYWFQUDRtUk84OE5LcjlJY3BKdzdQWWEyak4waVlhRFZwTmVxc3JHK3kwUnN5MFc2aHRXWnBkWU1RQXUxbW5VRGc2TndNejU0N3pmek1GQmV1M21COXMxZU80OTRMZklBZGdYZ3ZRVWNHWXlLY3N5ZXlQQndWc2trZ2ZwZVRqQS9Ha3FDTld1ZTdQcHFOU1pUV2J3MEdQWUxiV1JKM2Y4NkRFSkplZjBnY0dYN2lCei9HOHRvbTMzcjlBa2ZuWjhtS2d0NWd5T0c1YVJyMUd2MUJRcFlYdEJwMWFwSGgwdlZiSkduT1RIZUMyQmd1WGJ2RjdkVjFqczdQOGdQUFBZVVFZdThkbWVVM3JQcTVlanUrcktCQzZvYVc5bXpkREtqcmQ5K25qd3ZHY2crYTIrK1dvaFJvTFRGR2ZhdElCMlVwbkpjSTVVRDYwdXpzRTFLVTRaM2JLK3Q4OFlVWEFmajZ5Mjl5NnVnOHM5MEp2dkxpSzZSNXpzM2J5eng5N2pSQ2xHblhVMGNYR0NRcGc2UjBodjdFNTM2UU9ETGNXbDVqYnFiTG1lT0gyZXdQU0xPaTZncjlMcmp6RU9kQkJZUlNCS0ZKVXA0c2JQUGZmWmNzN3RoZ0xBbTZlTzNHZHoxR0s0VkJmcWZzMXN5UVVoR0VLN013OS9IWEN5R3cwUnZndk9mRTRUa2VPMzJNZi9iRnIvQUgzM3Fkbi8zc3AvbS8vOFZ2OCt0ZitEM09Iai9DSjU0NlI1WVhaSG5CWno3MkpNNlZCY3l0WnAyWlJ5WlkzK3lUcERsQ2xOMmRZcVJlZXorb21sZVZqcEJTWWIxL0xNUjZ4Mmp3OGNaWUV2VEk0WVh2ZWt3Y1JkeTZ2WGpoMHR0TDZUQkphaE1URTFodjcydUZsMUtTRlFWdlhibk85R1Nibi83aFR6SklNamI3cFZXY241M2l6Lzd4ejlFYkpCeVpuMEVDUlZHT3VrR1Vpc205L29EdnZIbUpkclBPVTQrY0trdnlyT1A4MnplWW5talRhdGJKQ250ZlBQWE9vNFFtaXVwNDMzOXNZM0dGS0RvWVR0SllFclNYZlhmZG9jUVZXUHdWYjkzNUxFMmZVdE5kYk01SXJHNS9vYVlRU05LTVR6M3pPTjFPaTlzcjY3Z1ErT3p6eitLOVkzMnpUM2VpeGV6VUJFbFdFRVdHbTh0cmRKcDFKanR0UWdqY3VMM0NzQ3BjZnVGYnI5SnExQ0VFcmkwdTB4c01lZUxNaVdyRzAvNi9RVDRFdERHWUtLSklPYmV5M0dzR0h3LzJmYUlQSU1hU29Cc3I3MXpOTkVLWjdYRUV3cVhCY1BEVUtCaCtQOHY3cVBqaTJjZlBFQnZEeWthUFlaSVNhWVh6bmpneVdPdklDNHRXcGJkL2UyV05WOTY2ek1rajh6eHg1amdUN1NhOVlVS3pYdVBhN1dYYWpUcEpYdkQ0NmVNc3JXMXdlMldOdVptcHU2UVg5d0x2UFpIV0dCT3hzZXFQemM3bzQ0Y1dhcS90KzBRZlFJd2xRZHNUZDdjZDM0blJ2dTcyMHVyMVhxOVhGdmxXK2t6NzNmQUpTbjJuSk0xNTZiVUxYTHg2aytlZU9MdTFURWRHa3hVRjNudjZnNFNOL29CV284NUV1OGxHZjhEVnhTWG1acnE4ZXVFS3A0N09NOWxwc3J5MnlhbWpDM3oxcFZjNWZHaWFROU5kN1AxcUs0VlNKVTlwalVlZ05hY2JrWDFJMEFjRnR3ZHhBbEVSTWpieXJlRndpUFhsdWk2NDM0YTFnUE9laVhhVFRydUpENEZydDVZeFJuTjdkWTFIVGh4RkNzbnJsNjd5aWFmT1VhL0hpS1ZWbEpUY1hsbm4rUHdoSGoxNWxGYWp0bFZlMTJrMWVQNlp4ekNtaklGNmYzZFI5Rjd2RFVCcFJkU1FaRU45ZHZueXdZaURqaVZCNisvUXBia0xBU0tsYWRYamkwazZ4Qlo1bWEwSi9yNDg1aERLWVAvWkUwZkk4b0lyMTI5eCt0aGhJcU5aV2x0bmRXT1R6ZjZRTThjT2MrWEdJdDFPbTI2blJXUU1QZ1FHU2NyY3pCVFdXb3pXVEU5T01FaFNHdlZhT1hsdVI4Zm8vbSt1S3IwekdoazBYdnBUVEh6M2JkQTRZQ3dKR3JXKyt4SVBFTmRpbW9QazR2ck5WZklpbzFtdlYzMUs5eDhrTEtxbC9OQlVsODMrZ05XTlBzODlkcGJydDVkcE5lbzg5ZWdwTnZ0RHZQZDBXaU5KUkVHV0Z5Z2x5NkM4OXpqdmtVSnNqVEg4WHU1cFZPdXFaRG1GdWNpR3h4NDU4OUg3UHQ4SENXTkowTjRlUmJLR3poT2t2T0FLZXlQcER3KzNHNDN0S1hUM2lWRkdTQ2xGTFRJY25TK28xMktlT0hNY0tTWDlZVXBzZEhWc3RrVThLZS9QUTk4cnJQTm9GUkdaaUdJNE9McTI4bkRLeHdORGx1eXR0VllxU1ZIa2c2S3dGd2VENFdFcDVQNnFodTZCd3BVQmR3RHJISEhabDA1UmJIdmZJNi8vdmVya2ZEY0lSdFYzNVlBdlkyS3Nra2RmZWZtVjlrLzg5Qy8wdnU4MzhIM0dXQkwwN0psN3R4M2ZDYVVWcmlpNGRYUDFqWTJOemMrQS9KNkw2SGN1eTFBMnJqMW9TQm53akFZMUtJYkRmRzZ5WTQ0QXJ6L29lL3RlTVpZRVBYbjg1SjZPVTBxaHBPQWJmL2pTcTJ1cjYxZ0hTTVZvOHNaQlFDbWxFeEErSUFsWVd6QVlKS3JkS2VaNVNOQUhnMi8remhmMmZHek5LS0xnWGgrNm5NSVh5RWpqODR6M3FuZjlnV05IYllIM2dUVEpHQTU3YkN3MXVnLzR6dDRUakNWQm8rN2VQL3NvanBnby9PVzFHeXRrZVVxejNpQ3Y1aC9KdTBaZWp4OUdmbGV0RmpQbzl4a00rdVJwenBwM0I2TGViaXpyUWZPdzkwZmlBaVl5eTlJWG0ra2dRZTRZTWpqdTVJU3l5bFVJcU1VUnQ1ZHZNVXdIYks1dkZQVjZkUDVCMzl0N2diRzBvR214OTdGcWhmY0VLVGFkdFJ1OXRZM08zT3hzTmY5Z1BKYjRYVXFONFk0SVJQV0x5WWsydDI3ZjR2cjFLMlRESHF2THkxOTkvdm1QM1VNbmZmd3dsZ1E5ZCt6RW5vODF4cEJtYVhyKzlVdTNlaHVieDc2UHQvV2VZWmNtVXhEVjJNU3EwS1dTTy9VK0lKV2syNTVnTU5qa085LzVGa0lvdnZIQ1MweE1OSDREOCs2TmhlT0NzU1RveE95aFBSOXJqS0ZSWkVTMTJ2WCtjUGdKNEh1T2hYNWZFVVpDWmFMVW5CZmJRNzlFRlVaU1VoUEhNZFo1cnJ4OWhUZlB2NHFwYTE3OHlrdGN1M3oxcmMvOWxYLy83NGI5dGpKL1FER1dCRDEvOVEvMmRYeXRab2dhK2xwU0ZIaGZwaDQvYUJUZEhpQXJVTEpVckZOS29yVXF1d0VJRkhuQk1Fa29pajZEL29Eck4yNnh0ckZNWEJPODhwVnY4YnYvNW92OHlWLzhtYjl3K3BGSHM3V1ZkMVlBSENlTUpVRzkzVnN1ZmdSWFJEUmJyUmVYbC9za2FVcGtURGttOFgzYWhvWWRGWDVsNlY0bG5WaVZ5Q21wVUZwdjZabFpXMURrR2NOaHhtQTRxTHp6VW9ZOHlSSmNzS1JKU3BZVTlGYjZmUDJGYjNCNThTMysxSTk5OWovOHpBOTk1dmZlZVBXTjhmUis3NEd4SkdpZTc3RkZkd1FSMGUyMGYvZkdsUnR1ZlgxREhUdDJwQ1RvZTR4ZHFmWVFTZzJsSUtvbVBvM1NFcVAxMXNqdHdscXlOS1dYYkRJWURPbjFlaVRwa0RSTjZQZjZKRWxDTWh6U0h3eEloZ25KWU1qazVBUkY0Vmk2dHN6NTh4Zlp5RmNBc2wvNHFaLytzNy95bi96S1AzMzFwZS9RNjIxUWl4NlcyejB3Mkh4L010ZmVaU2dwTDRvUXZuRCsvSVdmT25ueU9FcEtyUGRicS8xK25Ib3B5eVU1akViT1ZONjFFT1dTckpVdUI5QlcrMGZ2TE1Na3BUOUk2UFUyNmZmSzZTSERFZmtHUTliWDErbHQ5b0d3TmI4K1NLalZhd2dFRSswMlIrYVBoSC84VC80UmcyUWdnTFZKNnQvKzBZOS8raC8rL0ovNnlOOS8rZ2VmUzVjWEE4UGhFSzNObGxqRnVHTXNDZHJkUjZCK2hHYXpRWmJaZi9DMXI3LzJVNjhlUHNyVHp6ekoyc29TQkU5QWZ0YytwZEZRcjFKTlRxTFV0aldVVXVKOElNc0swalJscmI5R3IxOWFQZXN5a21HUC9tREFvRGRrWTJPVExFMFpEcEt0MXlxbG1KN3RNajkvQ0pzSG5ITWNXcGhCbUZMUzV2VEprelFiRFJxdGpvaVYvRCtXM243cmYya2ZuYjUyb2p1Vm5IamtMSWZtQWh2ckt3ejd6WGVVY2h4WGpDVkIvOGpuL3VpK1h6TTdOOGNYLy9XLytQVi85enRmL2g5ZWVPRnJSM1dzK2NoVDUraXRyWk9rV1psVkNwUnlqWlJFVkZwdUZXQVlFNVVUM3J5anNEbFpsck8ydXNad09HUTRURWl6aE9GZ1NIOHdaR050blg1dlFESk1HUTU3S0NNeEpxSmVhekF4TVVHcjBXSm1XdEx1dEppYm4rUFEzQXpUTTEzaVdvMjNyMXd2QjNVRmo2M3FQQ1dHZk9oSmgwdjhCMy9wRjc2NnRuTHJyUzk5NWV0c1hyL042dEk2V2tQalVIdHZmZlZqaHJFazZNV3Z2YkR2MTF5UFk4ekdlbko4WWZwdlhsMWUvVHUvLzVVdnM3cXl4Rk9QUDgzVTlEUXVXTHdMRU1vMXZ5eGhjNlJaU3IvZll6aE02RzBPNlBVMnlmT1Vmbi9BeHNZR3cwRlNrYkdQVktvY1FkT28wMm8xcWRValRwMDV6dUhEaCtsMEp2Q2hMT2FJb2dpcERZVXQ2RTVNY09USVFyWGZ6RXJybXFRWWJYQ3FUTVgyK3dPYWNRdXBBeXVMUzJkTUxlWmp6ejdEQmZjTk5uc2J6TXcyN2t2T1p4d3dsZ1Q5OGgvc242RGVPVHFUWFU2Y08vTjNMMTM5eWsrdkxlVS84NnB6WEw5Mm15T0g1NWljNktDTndqbUhMWExTTkdXWUp1UjVUcG9rM0xweGk4MzFmaldHeHFLMW9UTXhRV3dpcGs5TU1Ublp4VG1MRURBNU5VbXRIaU9rNE1TSlU4ek9ISUxnV2J4OW13c1hMcElYRGtKYVd1TzBJSTVyS0ZWNjgzRk5rYVNPSUExQ1Nyd3ZzSzVVSGZGTzRpU25zdlVOR3JVbVQzMzYwMXkvdm9xUXQzRFdFWHdnU3pPR2d5SCtZVi84ZzBPaTcrUEQxN0E0VEpob3RmanNEejMvcy8vbXQzNzc3MTI0ZWV1WDV3K2ZZUEhHTFpxdE9sRnNrRW9Rdk1lNWd2V1ZOYTVldklGVWlwTm5UbkRpNUhHMGtXWHd2MWxqWW5LQytZVUZEaDJhcGQyZTVQYmliYTVkdndZK1lKMGpTMU51M3JpRlFHM05UcEpTNHIxSEtvSHdFaC9Lb1dER0dJUUVLVTAxSEt6VUFBMHVZSU1ERFM0RnFjempub2hldjBBWnpkemhCV3pSd1JZcFVWeXdjSFNCemt6M29aUDBJREhWYU43M2E2MEx6QzhzOE1jLzl3Ti8vdmUrL3ZJL2ZQbVZWLytXMGMwbkJCSVRTYXh6cElPTXQyNjh5ZHpNREwvd2k3OUlaMktLSjU1K0RDOEtOalkyaUtJWWF5MkRRUit0Tk43QjB1SXlHK3M5K3IwaFdvOW1jVXVjdFhqdkVBaU1NZFZjKzdMUVNFcHd6bExZbklZc3EvU1ZpZ2xlbDdGVDd4Q0ZKVTh0WG9JMFFKQkg4R0ZDQ0w4UnJDZTNHYUNSb29XUWxrTUxDNldXNlVPRjVRZUh2YlFkdnhOQ2dMWE5IbkZzK0lFZi9mUVhtb2N1UFhuNWxUZWYzdHpZK0ptVkc3M24xemMzcG9XUXZpMzAxVS8vNE1mZG4vK1AvdHd2RFRkenRicTh4dVZMbDFsZjc2Rk5xV3ppcktXM21kS291M0wrZkJTaHBDb3RwSlFnSklXMVpTZW5NU2lwTU1Zd0hBNHJDMWNPcDdXRjNaSVZOMFp2OVMrVnJkT1NQTS94MXFJVTRKaFRYcDVSM3IrNFBaUEpWUS93TnVNZ0RVTWNTNEorVHhCbDIwYWVXMjZ0M0tiV2JEQjNlUEk3UC9WblB2RWRrYllJT2J4MTVTS25uempETXg5NW5xdHZYVG81R0lZZjF0b1ExK0pxZUd4WnNoZDhlUjdueW5pcVVncXBGTTZWU1FBcEJiWWlhQlJGQ0NHMmV1QjN3bHBieFZWRFNXU3Q4ZFVJUmlFRU5zMndhWTZ1eHlBRXFxN1BCcytMWTFvdHVTOGMvSGY0TGxCS1V1UUZTWktSREhLVU5relB6REljWmlnZjA5QjF2QzIrTHNvb1BIRmRvclZBeXJKelJHcUJkVGsrbEJMZVNtdU1LUWRwbFN0c2FSWHpZcnZWT1lxaXV3S3VvMVptQW1pdE1WcHZMZEVDZ2JlT3doWWdaTGs3RmVxVUN4cVBldGZIUWNDSHo0TGVBd0tCZDJVeHhuSi9oU09INTNuazdDeEZjUU1Sb3F0Q1JDQThPbzZSU3VHZFI0Z3lSdXE5eFh1TFVoRmFTYUxJTUJoc0s0U0VFQ2p5Zk92bmNxbVhXMHU0bEpLaUtIRE9WUVVpQ20wTWZwaVVTN29RZUJuSXF6bWhQaWhrOEk4cU52Z3cySmVIQkswZ3BDQWRwalFiSGY3SVQzd09IM0kyQmtNaUdWM1NPbUFGYUJtaGxTYXpKZUZFMWVGWkZKWW9pb0Y3TCtGRlVXd3Q0VnBydE5ZVVJZRlNDaUhFMWo1VmF3MWIyNERLZ2twQVN3cnJTdVZ2NzlGYW5lM2xrdHlHVXVMeEFPUGdmd1gzQUNFRVdacGlJc1h4VTBjSlFESndDRytBY0Y1SUQ5WWhrV2h0ZG5uSTN2dGRzalhHbUsxaWtORzVyYlZiYzVWR0JOMzVlKzhjUmJVTkVFQmtURmtQT2hxYUhEeEZuaE1vSzZCODBJOTZLMXV1S0hEV3ZlUGpJT0JEYmtITEpiYmYzOFJaeitPZmVvNVdzMEV5R0JEVnlzR2VVc2kzWFJFV1JjR2NrcktjSnJ5RFhIY3U0VkVVb1ZUcHlXODVPZGJpbkVOclhWWTJHYk9ib042VDM3a04yQW9WQ1VRUU9HdkxRUkF5WUQzelJ1bW5BL29GY2NCdHpJZVdvS1hGQ3l3dExUTTlNOC9Ibi9saG1xWkZiN1hQMWdodUJFcTRuaEx1cXBCNmpudDQ0VUtJYlNjSHFySTZqY3RLNlJrcHk5aHFVUlJsTUY0SWpMNzdZNzl6RzZDVXFyeDdnUkFTNnl6V0ZraGxDTTVUait2bnBwcHpMNGhxc094QnhWZ1M5SHVKUVk5ZWF2T01ZWC9JcVZOSCtORWYrZ3dURXhOc3JLMWk5RzZMSlBDRTRDOEUrTGdMdTVmd2tZVWNPVG1qeXFUSUdMSXFHQzlFYWYzeW9xQzVZeHV3czJsdko4bTNhMGMxZVo0alpkbUg2cHluS0FwcUpzWVdBaW5sNDUxT0E2SDAxbWpIZzRpeEpHaVczMy9MdHc4QmdhY0lnYm1qaHpuOTJEbUNzTHg5N2RJOVM5VzhkelRyM2F2S0NMendtS3JXOGw1THVGS3FIQ2hyZHU5VFF3allxa0I2dElUdkpMbXNDRG9LNkpkRGFUWERIVFduUHRqS3lncWtNdGc4Zlh6eDI5OUVTZjNPOXZPVFAzTGZuOU1IQldOSjBDZlBQbmJmcncyaEV0bUtIeWVLNGxMNEt5dm8xcWJ1ZFhCSldxTXZwc0ZDMEZ0T1RsWXQ0YU1aUjlaYTRyaXNZdGYzV01MelBMOHJHTzhxNTBwSXVYV09ld2IwcTdLN1hlZUk0MGNXQnhtYm15djNqQndjRkl3bFFVOCtzZmUyNDNzaGhFRHdZV3ZmK0c0d1JyRzB1djc2WUtPb0t1YjFybno2aUtERmptRDhkOXNHaklMeFJiV0VReGtOY0ZYMmFIU09rVmNQSUlLZzhJNmdBUUZlcUhPaDJ6b25vdkFHK2lGQlAxQzRkT1A5azE4UFdGUm9YVEZtcXJBMkdDSHV2WVNQaGgrTW5CeDVSekIrWjhxekxJQysyNU12N3JVTklDQ290aEpaanZjZXBSWFdGV0txUFhtaU5USHh4amFORHg3R2txRDk5ZmV2MXRGN2d6SCs3VmJMdnUyRVBpTUVtR29aM3RrblV1VDVMazllVjA0T2JNZENpNktnVnF2ZEZXb2FZZWNTUGpxSEhXMERFTGpDWXJNY1hZc1JKa0wwZWd2TjFWVzR4NWJpb0dBczM1a08reC9WY3I4SUJMUVRGaC9lRElnenU2MWJ1VDBjT1RraldlL1JObURuUG5Wa0ljdnRaTUJVTWRFUjdoV3UwbmQ2OHRaaHN4d1IxU3BsRVhXaTBCb09TTzNudlRDV0JHM1g2dS96RlFOTytOY2cvTlNJWEtQQzQ1R1RZNjNGV1l1S290SUxqNks3UGZrZDJ3QmpETElLeHQ4cm9MOFZEU2d2ai9BUXJNUG1CVUVJS0J5aVZqc3ltSnNsQkhsZ0YvbXhKS2lydmQ4OTN3RkNlRk9LVXBWRVZrSUxMczlBN0hhVVJwNTg5RTRCL1IyZXZGWnF5ekdTc3F3ZDNSWFFONGF0ZktjcUJTQ0tJaStEdVZJaVhIaWlqcXY2N3c5bXNINDhDYnEwOHI1ZVR6aUw2RXhjcFJYamMxOVdIQ2xERmlwUEhvSHp1ejE1ZlE5UGZtUWhSNTc4cUdoRXluTDZoeTJLZXdiMFE2aksreEFVb1VCSWh3c1NpMzdHRnYyRkxCdmNQR2p0eGlPTUowRWZRSzJqOUx3dEViaFFMdXNtTW9URVFkQlZFWE1ncjlLVndDNEZrWkdGelBPOGRKU3FzcjBvaXVqMysyWGNOT3dPZSszTXlZK3NvNkFpdVMxQXhYaG95MExNMWF5NUtRNWd5ekdNS1VIdFZQdDl2WjRQZ1ZqS2E5cTVGU3YwdE5DS21sRm9KN2ZHWVkrVzhCRkJSN1dkbzlEUnlGSHkza05WWk5MdGR1bjMrMlJaUmdpQmlZa0oycTFXdWV6RGRrNitLR3RCUlZXaG4yZVdXck5HVVZobXBpZTYzVzZiNG9CVUw5MkpzU1RvNU9COW5xSVdBa0t3bnJXbWJ3UXBwNE9FMkdoVVVMaWRTM2hSbEswYVVoSkZFZlZHZzhIU0VsRVVrZWM1N1hhYldxMkdjMlVQVTYxVzQ5aXhZMnhzYktDVW90dnRic1ZNUjNuOWtTZXZVT1dFa2R5UjV3V05UaUFpb3A4TVQvZlN6WDk3VUNzbng1S2cvZXg5dGhZaEVDVEVrZ3NLbmc0aElFMU0wR0pYSU4wNWgzV09xSEorWm1kbUlBUUdnd0dkVG9lNXVia3RBZ0piNmRHRmhZV3RmOXNkdGFXanZlcE9SVnZ2eTNncG9td3o4Ymw2cXA4SGhIem9KSDFnNEtiZjN5VStBRklFcFBEbktSeEJDMVFVb1l6QjVydHo4aU5QZmxRaHY3Q3dRSjduV3c3UFRrY0t3RGxYalV0azZ6eFExUXhVbHRoNWp3N2J4MU45SVh3UWdIaEsrclJTM2o5NCs5Q3hKT2h3Yy9WOXY2YnpGdG1jdVdCVW5keGFkR1JRVVVSSUU2aGFOM2JtNUVmL0hwWFBqU3JxOTZPTjc3MHZ5d0EzTmtpU3N0VzVYcTh6MGVuZ2NuQXVvSTA2WGFNdXZQZGhYSFQzOTRPeEpLamNlUDhkZ2xCWUVNV3JvaVBBQmtSVkc3cGJFalRzY3BSR3o5MnZpTUpJY2VUWXNXT3NyYTBoaEdDaVBZR0pJMnlsRksyRU9DYU5PbUc5dVB5UW9COFF6TmJmNzB3U2lDakNCbmZSQ1pzZ1JEMDRUNlRVcmxWVkNGR0tMRlFacHZkQzNXTlVJem8vUDE4NllubTV6eFZHRWF4SFNtbnlORHc2NkEwdkh4UzVtNTBZUzRMV2ErLy9iVXN2c1hGMHE2ZkNJbzZUVUJXTnNLMENFa0tweWZSZTQ2NTlhcFZWQ2w0Z3BTWk5zOW5ieTBzWWN6QUV3M1ppTEFuNlJwcTg3OWYwSWFEeTFDN0VqU3RheGlldER6UmJMWnFOQmh1Ym0xdTUrVTY3dmN0VGYxY0lDSzZVWjc0ejBGNTY1ZHZxelFEYmlYa0pVdUp6UjU0N1JBaCtlcktGVkdQNTUzeFhqT1U3aXRUN3Y5ZnlBWlFFSWNQcjB2TWozbnEwVXN3dkxHejFEM1U2SGJyZDdpNXI5NjRZVmVzSnR2VTl3eWhxQUFTSFJ5Q0UyaHAvRzVBRUp4RGVjL1RZWWE1ZWVvdTNyMTI3OXRnVFowbVRnekVqZmlmR2txQ3pzNGNmeUhWOUNBUnZYd0dQa0dXR1Iydk40Y09IeTBMaXFoUFRWM0xoZTRLVVpZeTk2cFVhTWRSNURWS2pxdnJUV3JPR2lTSk1IR056UzlwUCtPWWZ2TUFmL3NIdi9kTlAvdENuZmk5ekVma0JiSjRiUzRJT2t0NER1YTRQbnBxSnY2blluays0czAyanNFVnBGZS94V3JFMW9Lc2FZRnRWS1hra09JbVNFRWVhS0RiRXRRaWhZNndMK0R4aDZkWnQzbnpsVlpKa3lOTGlJb1ArNFBiRytzYUY3M3pqbS8vcXgzN21CLzdIWXljbVdGcDhlMnpHTys0SFkwbFFFeDdNSHlJRWlRcmhOYWxaRlVGTVNTSEFPMEtRMnh0RndiWTQyQTR2dnB3Y0Y5QktJclVtaW1KcWpSaGxGTjdEY05CbmRYbVo1Y1ZsaHYwK1M4dkxZV1ZwK2VyNjZzck5qYlgxNjBxbzd3VHl0NHpKMzh3TDgrcmhvd3VEei83a1ozamkyU2RJa3g1SytZY0UvYUFnZXBDMzdjS0tVLzY4VVBxVDNndUUwQVJmN2ptRkR5QTFubElCejJoRkZOV28xV3RFdXB3V054Z09HUFEydVhIaktqZXUzbUw1OWkyL3ZyNzY1dXJ5MnVzMlM2OFlyZDY0dmJoOGVlRkU5OExNYlBleUo4MmZlLzV4bm5qcUkxeTVlSjZaUXhHWExtM1NiTlJaWDEybnY5bG5lcWFPRUFjdnhBUmpTdER2eHhDdXZTSUVpNG5NN3pZYkU1OU1rNExnTEtZV1U2dkhSRlU3c1pDQ1lYL0ErdG9hbHk1Y1lQbldNaXMzbHpaWDFsWXZac1h3eFRUZHZPQ1N3U1hsN2RYT3dwSEZwWnZYTHlsZHMrZWVmSlREeCthNCtOWjFUcHc3eE94MGx6ZGZ1OEgwb1dtODgvUTNCeWlka2c1VG9pbzd0YVZoZTBBeGxnU051Kzl6TlZPRkVBUnh6ZEhmN1AvcXhXL2YrcFhaaGJudVZIZUNmci9IaFRmZVlQbldNb3VMdDF3eUdOeklrdUVyU1Q1OG1lQXZMdDlhL3JhMzlvM1cxT1N5am1GaHRrdTNlWlFqQzExYUowL3cyamUvVGIrWDArcTB5ZEtDTENzWTlCSnFKdHFxSVMxRmNnOHdFOThCWTBuUTVkVUhWL3ZvZzZMVHR0Y0dneXVmK3ZvLy8rb3ZKWVBOSXh0cnZYNmFEbDRQUVZ4dXRkdFg4aXk5WEl0ME1qVTl3WE9mK2podlgzcTduT0RSYm5QdDhtVW1KNXVJQXZyOWhHSjFneVJKS1hLSGR3NHdCOWtnN2h2L1A0ZG5jYlZ5VlJXZkFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMSIsIkZJRE9fMl8xX1BSRSJdLCJleHRlbnNpb25zIjpbImhtYWMtc2VjcmV0IiwiY3JlZFByb3RlY3QiXSwiYWFndWlkIjoiNTBjYmYxNWEyMzhjNDQ1NzhmMTY4MTJjNDNiZjNjNDkiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJub01jR2FQZXJtaXNzaW9uc1dpdGhDbGllbnRQaW4iOmZhbHNlLCJsYXJnZUJsb2JzIjpmYWxzZSwiYXV0aG5yQ2ZnIjpmYWxzZSwidXZBY2ZnIjpmYWxzZSwiY3JlZE1nbXQiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjpmYWxzZSwibWFrZUNyZWRVdk5vdFJxZCI6ZmFsc2UsImFsd2F5c1V2IjpmYWxzZX0sIm1heE1zZ1NpemUiOjE1MDAsInBpblV2QXV0aFByb3RvY29scyI6WzEsMl0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6MTAsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTkyLCJ0cmFuc3BvcnRzIjpbInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XSwiZm9yY2VQSU5DaGFuZ2UiOmZhbHNlLCJtaW5QSU5MZW5ndGgiOjQsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjoxMCwidXZNb2RhbGl0eSI6Mn19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0wOS0wNSJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjQtMDktMDUifSx7ImFhZ3VpZCI6ImVlN2ZhMWUwLTk1MzktNDMyZi1iZDQzLTljMmZjNmQ0ZjMxMSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiZWU3ZmExZTAtOTUzOS00MzJmLWJkNDMtOWMyZmM2ZDRmMzExIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlZlcmlNYXJrIE5GQysgVVNCLUMgU2VjdXJpdHkgS2V5In0sImRlc2NyaXB0aW9uIjoiVmVyaU1hcmsgTkZDKyBVU0ItQyBTZWN1cml0eSBLZXkiLCJhbHRlcm5hdGl2ZURlc2NyaXB0aW9ucyI6eyJlbi1VUyI6IlZlcmlNYXJrIE5GQysgVVNCLUMgU2VjdXJpdHkgS2V5In0sImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyNjIxNDUsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfSx7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDM4NHIxX2VjZHNhX3NoYTM4NF9yYXciLCJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQnREQ0NBVnFnQXdJQkFnSUpBSzI5MHNoN3FpUzlNQW9HQ0NxR1NNNDlCQU1DTURzeElEQWVCZ05WQkFNTUYwZHZWSEoxYzNRZ1JrbEVUeklnVW05dmRDQkRRU0F6TVJjd0ZRWURWUVFLREE1SGIxUnlkWE4wU1VRZ1NXNWpMakFnRncweU5UQTVNVFl3TmpRd01qWmFHQTh5TURVd01Ea3hOakEyTkRBeU5sb3dPekVnTUI0R0ExVUVBd3dYUjI5VWNuVnpkQ0JHU1VSUE1pQlNiMjkwSUVOQklETXhGekFWQmdOVkJBb01Ea2R2VkhKMWMzUkpSQ0JKYm1NdU1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRXJUVlliTmtYa09MQmxFSGVZT0EveHJyZ0k4UmZyMWZjdTBVY3c0SHFnVmdDSWE1QXFUdmZ5YjB5d2E0UlFneTdEaG1sK3NNcGhtZ3pxZ29sRFRsSzdLTkZNRU13RWdZRFZSMFRBUUgvQkFnd0JnRUIvd0lCQURBT0JnTlZIUThCQWY4RUJBTUNBUVl3SFFZRFZSME9CQllFRlBGaU90dVNTMmxLUnJhT0JZaUFkL2I2b3VuL01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lRRHA0dlQzWUZmV3lmMDljSjRld0Z2dDRldUJFaHUyZDVlb2JpdlQvTGczdVFJZ1NybVVqZlIwWUN3MjlsYWk0RWh6RUU0UmpyUTNYTHFkTjc3ZWJkZDlrRms9Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUxrQUFBQW9DQVlBQUFDaWwxdTZBQUFBQ1hCSVdYTUFBQVdKQUFBRmlRRnRhSjM2QUFBSURFbEVRVlI0bk8xYzBYSGJPQkI5ZTNQL2RnZGhLckJTZ1prS3JBNmlWSEM2Q2tKWGNFb0ZaaW80dTRJd0ZaeGNRZWdPckFyMlByQk1vT1VDQkNsS29oSytHWXdHSUxCWUFvK0xCYmdVQVdEczQ1NlpDMFJBUk5jQUtnQTM2dEl6TXk5aWJXZk1PRFgrR05odWd6YkJYd0RrQjJsellTQWlWaWsvdDA1RFFVU1Z1cGZpM0RxTmhkNGtKNklWZ0ErcWVBZGd5Y3l2WXlnMVk4YVk2RVZ5SWxvQWVEQXVyWmw1TzQ1S00yYU1pejlUSzNwK3VNWTlNNWRqS1hSaCtLYnk4MG8yQVFoWDBYZ1d5U1NISS9pVktudnEycVQreW1EbS9OdzZ6TmdIRVcwQUxBRnNpUWdBVmtra0o2SVN4a2tLZ05XSSt2V0d1RS9YZmhrelYrZlJwaCtzVGVvWXVoTlIzaVZITE4wQ3dLdm5aamEvMTNCem5SazYxc3hjcCtyUnAzNkNyRDFZOXloOHlPQU1jdk83QXR3Um9wOEtaa2FUcEpLdTh3b2c4K3VGa25TMmdSdEVMV2NMWUEzZ09sSFd0ZWhUR2JMODlBZ2dUNVMzanNqYml1N212VW83UHkwUytyTEdRZXNlbEdQSXphWE5xekZIcGErNzZMRHg2bFFCZVNIZGlnNDlTa09Qb2ZPY09sYTUwcUVRUGJad0QzS0IySTFJSlV0NEo0R2tmZEdocEQ4aHl3NVp5OEFBeGxJNW9yeVZJU05wWEdRYyt1cmU2czhnd21PaXJFTGE2UG9IazF6MHFFYWM1L1dBc1NvOFhiWXkzczFEc3JRbXltOWdkUllkZkUvWnNxZWlRZGtEWmNVbUpqYVJvNUhjRy9TaHVwdUVHQ2pYR3NPRFNBNXhlVVlheXo0UGk1WFduazZseUZwS1daRGtWb2RCeTVoZ3dXdTRweXVYdEpZeXYwN0xEWW9NZWcyMzlDNDltWnRBWFMzVElraXBaSzJ4Yi9sYUxvUWhRNU04cEh0amJYSXZsVWE5MThENFd2ZlpXSzFjZmxNZWdzcVRtWG4zM1VseWhJMmdQODlMaEZlYjFMR3FVOGNLQVhmSW1xZ2lNSWl0cHo0Z01EUGFscFlDc0MxU21YRHo2MGovVnYyaVE3K1l2R3NFZk5FQkV4ZGRyZ01FV3huNjZEcVBBWGxWZ0RnRjJnOStFUnF6Z0d5TGFLWVJoTDJ2cXhQbXJXWHhPMlNhOWEySnNpeEFiWkUwOGVhakR3ZHNpM0FkdS9sRGRCZ2lMOUpQWDVKM0dncTBWN2ROd3VSbUFWbVpVZGZVb1EvSkEzSk5ncWMrd0FQbk9Xb2dtMlM5OGRSSGhaREdxUzg2bGlwZnhDcUwzRklWNTRsOWhWQ3BmQmFyUExHWWswZVYxd0Z2T3YvRWdXTTZLWDlTeGRWUXhUeXNWWDVubEdsZE5uRHhUVDQwVi9wQ2oxVm1WYkpJcmhVQmdMV2NRVVloZGZaZUdISGEyVyt0OG9kR01tcDVieUxYQU9BckVXMklLRHV3M3pIUVpVejAySFNGVXh3ajNFS1RNOVVJYmxUKzdrQTlrZ3l2UmZJUzdhZi9Dc0JqODdvMGd0WjFJMUt2bFFEODB5Vm5MSWgxMDYvakFlQXZBTitKYUN1RVAvUkIrNVh4UnVXMVJRMmgwZ1VIcnFKSkQzQW9RR3VGdGtWL2crNmJHWXNZeHliWUNtNkp0WEFEUi9qL2lLaVdxTXNwUVU5czExaU5PcFlCVWlhUmpjOFV4R2VTWEpZZXkxKzY3WWd6UHBvRkhoTml6UmV3TGJxUE53QWVKTlo2S3ZlbWlYSVhjck9rWExzRW94T3R4Mzd0TEFqR3JqRHpsb2p1QVh4U2x6NFIwWmFaTGF0ZUdmWHZCK2hWRDJqVEMwTDBYQ3pUQ3UwWWVSKzMrSG1PZm01VVJsa0plN05lcXZ3dTBQNlhSalJBaTVrTEljR3R1bFJLSUpDMkNxMG5taWNlcFNnYjQ0cUkxbkFrWHNMZUVOMFIwZUpjUzI0RFpxNko2RE9jUzlYZ2xvaWFGMHl2a0xOOXRFL0tOb2RhWFdhdUpMcnZCMUtDd3FSZWRramZRNUh5MGNRU2JmLzFDbzdvZTB1NEVHQ3ZMaEZOd2ZwMWdwbGZtYmxrNWlXQXQyaHZ2b0ZwV0hMQUVmaFpsZDBBK0JmQVYvbTF2cjh0UnVwLzZGRmdicFFkM1doMGtqemluOStndlJ3QzdjMXA5UHgwaW1EbVdzaXVKek03Z3pvdHlKeWtubWdBYnUrUmo2aENwZktyeEQzTFN1V2ZUK0hQSjMzK0prdVI1VnZmR1J2UlV1VnZKM2hDa1FvOUFmVTVsTkFnb2dydHZZK0ZKd0FmbVRrZlFLYllxVXlwOGxkb240SHZRVmIwbHR2YlU2ZEJTUDdHVTVZNjZ6VGlrKytTeUFPaDZ6MmtFSjJJc2xPY1lrZy8wYU0xMll2b0piOCtsazZwa0hIVVpIblB6QVRuWnIxdjhzeTg1UFJQRTJ1VnZ3dU5VV0NPUDhpK3h0SzVpUXowc1RQS2pvSytYK3RiL2puZy9QUE15NitNZXMxUjNON1NSa1FMS2FzQWZNZHB2alphdzUyRGI0bG83MjJ1NkZQQStiWStkdWpuSWh3TG1jcS9OSnMrY2JPcXhMZk1HdGE5bFVTMEZLT1FxMnRydE9mNEg1bmpKZkREbUJTd1A1MWNuL0xvc1JXaDFoRVVreHR0bXNBdVA3QnFnV0d4eHR1dS9oSUNkNkp0MEE2Q1Nra3JvNTlqQkdnVnNUYkdkWVlqVVJQZXFsT2ZyNHdzMmJIN1d3NFlSek9RYXFSNU5zZlhtcWdveVRzR28xVDFGZ01KZFdnVVlyQU53bDg3OVNMNEdVaytSSCtHczlUbWZTajVvZmh2a3hzRDV0amsxMGp6Ykk3dm9IL1FZdWVmNnlNc1FQbGx6THhsNWd6QTM3QUR2M3k4QVBnTTRDMGZjUmxqZDh6NVR2cUs2YlFEOEVYMEtZK2xUMStJL3A4SE5MMkRjeG0zc2YwSXUxT2xlOWh1YWF1ZDZMTkFmSTc5c1N4NjZuMHdxREhuSituTStlMlpjV2w3VEdMSDRIMjU3c1AvaW4xeWtIR3MwQTZVU3NVT3pvMnBPL3BaNEdlb1J0MVYzOU10ODRyT1BwWW5KZm1Nd3lIRXE3Qy9rZnVDOE1uUEFtNVoxeHUvYi95Yi9HL01UUElMZ3F3Nk5YNFNkZ2UzRDRoYVNtbTNRVHMrNTkyNXJld3BNUFJmYldlY0IydnNXK1JOQ2tuWmhTeXMwUGFaOC9GVW15NW1rbDhXZEhoRjFiTjlyZkpUQ1I4K0ttYVNYeGIwRzlpK0pNMVVmdEp4NEdOaEp2bGxRUi9yclZJYnl0R3VQbzJwRHRUbklqQ1QvTEtnWDczZkVkRmpMRTZiaUs3bDFicitqdmJsZDloMEF2UHB5a1ZCeVB3OWNQa1pMclNpOXNwQ3g0ZUFDK0txUmxOdXdwaEpmbUdRS01TSEE4VjhuTkpiM0dOamRsY3VERUxPOStnT2s3RHdBbWZCeXpGMW1qcG1TMzdCa0pEV0psa3VDZUNJWGNIOVgrSVVRb1ZQanY4QjdReUMxTUMrZWljQUFBQUFTVVZPUks1Q1lJST0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xIiwiRklET18yXzFfUFJFIl0sImV4dGVuc2lvbnMiOlsidXZtIiwiY3JlZEJsb2IiLCJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwibGFyZ2VCbG9iS2V5IiwibWluUGluTGVuZ3RoIl0sImFhZ3VpZCI6ImVlN2ZhMWUwOTUzOTQzMmZiZDQzOWMyZmM2ZDRmMzExIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6dHJ1ZSwidXAiOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJsYXJnZUJsb2JzIjp0cnVlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6dHJ1ZSwiYWx3YXlzVXYiOmZhbHNlfSwibWF4TXNnU2l6ZSI6MTYwMCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0Ijo4LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjk2LCJ0cmFuc3BvcnRzIjpbIm5mYyIsInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi0zNX1dLCJtYXhTZXJpYWxpemVkTGFyZ2VCbG9iQXJyYXkiOjQwOTYsImZvcmNlUElOQ2hhbmdlIjpmYWxzZSwibWluUElOTGVuZ3RoIjo0LCJmaXJtd2FyZVZlcnNpb24iOjI2MjE0NSwibWF4Q3JlZEJsb2JMZW5ndGgiOjMyLCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6MiwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjUwfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMTAtMjciLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MjYyMTQ1LCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IktlbnNpbmd0b24gVmVyaU1hcmsgTkZDKyBVU0ItQyBTZWN1cml0eSBLZXkiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI1MTAyNzAwNCIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUHJvZmlsZXMiOlsiY29uc3VtZXIiXSwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0xMC0yNyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyNjIxNDV9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjYtMDItMTEifSx7ImFhZ3VpZCI6ImI5MGU3ZGMxLTMxNmUtNGZlZS1hMjVhLTU2YTY2NmE2NzBmZSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiYjkwZTdkYzEtMzE2ZS00ZmVlLWEyNWEtNTZhNjY2YTY3MGZlIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ill1YmlLZXkgNSBTZXJpZXMgd2l0aCBMaWdodG5pbmcgKEVudGVycHJpc2UgUHJvZmlsZSkifSwiZGVzY3JpcHRpb24iOiJZdWJpS2V5IDUgU2VyaWVzIHdpdGggTGlnaHRuaW5nIChFbnRlcnByaXNlIFByb2ZpbGUpIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3MywicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9LHsibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyIsImVkMjU1MTlfZWRkc2Ffc2hhNTEyX3JhdyIsInNlY3AzODRyMV9lY2RzYV9zaGEzODRfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRE16Q0NBaHVnQXdJQkFnSVVTT0VqVGYvL3lxUmZQVzdRcThxdEl5Q3JBZzh3RFFZSktvWklodmNOQVFFTEJRQXdMekV0TUNzR0ExVUVBd3drV1hWaWFXTnZJRVpKUkU4Z1VtOXZkQ0JEUVNCVFpYSnBZV3dnTkRVd01qQXpOVFUyTUNBWERUSTBNRFV3TVRBd01EQXdNRm9ZRHpJd05qQXdORE13TURBd01EQXdXakF2TVMwd0t3WURWUVFERENSWmRXSnBZMjhnUmtsRVR5QlNiMjkwSUVOQklGTmxjbWxoYkNBME5UQXlNRE0xTlRZd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUUNkdmwyN3cyZ3UxZlBYZUVGYklkcXgwQmFsdlZEVldyUVBKN0hxdml1RXRaSGx4U0x4U0Z0Y1hwVG9sdkx2b2Y4ZjR0TWVyUVRrVkd6Y21Zem0xRUJUNElKdU1tb0VxZmtFRWhXcHNBRE1Gcmpaa3FsWlk5RXF4UXpMb1ZFRW9uRTVvR3hTZFZDeENjTElhY2tweVIvQ0NYdmoxQnQvaFRnRTloVGxGNHBScXhNa3gzcGxGN3k4ZERabFJIV3M3dmJuaG1CQ0dlSTBaUEVRNm5sMm1DZzJyNzRhZEYydTZLOXJyTGZoQkMzUUxFOEVQcmdxVXNJK2hrdXEydEs0TTJTTU9wOHVVVlZrcVVldTNoMGtyM1dWSTBXMDJwa2dyT2dpRktMRk5rU3JiWWhkak1CRGo1aXptcWZjOXhKUktvRFg2MTJxZDhaR1ZIcFQ1QVlGWCsxaEFnTUJBQUdqUlRCRE1CMEdBMVVkRGdRV0JCVFp5VTVEaVEvYTJVRWdFN3FCSzB6aElzUk5SakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VBTUE0R0ExVWREd0VCL3dRRUF3SUJCakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBWHZuQjRTTHVVSmZZTVNWR0Foc3NML1NtV2xpM0ZTY2NneHlkdktsQUNjaWRJSVdLUXFhM3EvUVNVRVF6QzlEZ0VmTWdyN2lDMUJrVFpiSUxib1Y2VVo1a25Oc3ZqRVpXdU1lb2dKOHRnWnMxaFZ2S3daaXp3SittRWNtc2poSXJCWXVvTDFUNnlyT0p2S0ZnMWp2K0N5NFp3QTlCcGsvVjNVT2lyMVZ5SzhkQ3R5SHU2dmZvc290QWRZeDhGQXVSMjQzZ1JUTVY2Sng4SmRpZzJKRElBUU1selZlRHBTVUhYL0sySFhSSHhId2ZnamJnVWpqQnUvNzJyOE9mZWh5aHpIWEkzSzhDRkZkZmxPKzhuRU9KSzN5OEYxaXZnUzV1Ti84U21jWXcvU1RRWXdocnhQdXd6M25QOGJhTXVtNEJCMm5uWW1wQjYwc1gzYmw1azhRVVN3PT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZkNBWUFBQUNHVnMrTUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFIWVlBQUIyR0FWMmlFNEVBQUFiTlNVUkJWRmhIcFZkN1ROVjFGRC8zZDU5d2VRU0lnUzlBUUFYY0ZMQVFaaTlmcGVWejF0WS9XVFpyNVd4cGM3VzVrbkxhNWpJM1o4NXNyUzJuTTJzanRXd1pTN0lVSDRINHhDbkVReDREQVpGNzRWN3VzODg1djkvbEluQnZWSi9CNFB2OW51LzVudS81bnZNNTU2ZnpBL1F2MEhiL0lyWDNWRktQbzQ1Y25tNGluVUlXWXdMRlJtWlFVdXdqRkcvTjFpUkhoMUVaME5SVlJ1ZHF0MUJkKzJuU0t5Uy9PaHlzMCtsazNlLzNrUTlxdkQ0WlV0YTRWVlNVdVkwZWlweWlUaEFmb2NvT1JWZ0R1dXczcUtSaUFkM3JiY0V0alRqWUlvZjZXYUhzQ216VlBXQ014K2NnaDh0THFXTUthTVdzVWpMcW8yUnRKSVEwb096bWVycFF1NGVzWmdzT05rR3hIN2Qwa2R2VFQxN3M0T01VN1ZJOFpoamdHYU0rQXE5aUVOdThQaWYxdWR6MDdNd3ZLV2Y4R2xWb0NFWTA0UEM1V2RUYVhZRmJSOHZOdkw1KzNLZ2ZiNXhOTXlhOVJhbUppeW5hTWxHVFZ0RmxyNmJhOXUrcHFuRVg0dU11UlJnalNZRWhyTjd1dEZGZTZscWFsN05ma3c1aW1BR0h5blBwYms4Vm1ZMHhzdG5wdGxGQ1ZDWXR6VHVCTjgzUXBNTGpUdGV2ZFB6U1VuSjdlOG1ranhaMzlmWGJLRGZsZFpxYnZVK1RVZ0duQlZGNmZRMmlQSGc0VzE2VVdVd3Z6YmsxNnNNWkUrUG4wcHZ6N0pTZXVBeWVzOGxjcENtYUt1by9wK3FXcjJVY3dJQUhXcnZQMFlFemhYQXRMQWJzc0hocDdpR2FtdnlpalA4cnlxclhVV1g5WG9vd3h5QXVmTkJycDQzUE9CRlhabGtmOE1EUmlxY3B5b3dBd3B1ejJ4K2ZXdnovRHRkZTlzbXN6eWd0Y1I2QzF3YmR6Qmw2T2xxNVdOWVk0b0dhdGhKTXJrVEV4MGpBUlNIQVZzKzVyWWtRTlhiK1FnZlBMc1E2Z1h5SW5zcmVRZm1wbTdSVkZZZkw4Nm4xZmlVT2tZdlNoa1VQeHZidWt6b3k2SzFpaE0xaG8zWHpXNkV2U2ZYQStkcGlXR2FXZCtkb1h6THptR3dLWUZMQ0FzUkFsUEJBaE1sQ0ZYVTd0QlVWUHI4SGdWY0pIV3ErRjAwcGxyK0RNVGRyUDR6dnhZMTFrTk1oeFQrU2VUR2crZDRWNUxRSml0eVVHSk5COFZGWnNqZ1lCWk0vSUkvWENUa2owcXlET3BGMkFWUTE3Q0lqVXAvRG5UMVVrTDVGNWdkaitzUzF3ZzFnRTNnaWdtNjBmQ1h6U25QWGJ5QVBiSVh2K0lEcEUxNlRoYUhJUzlza3lobG1NRTVGM2NmcUFLaHEyQzBFNVBIMWdZYVhhTFBEa1pHMEhESk9uS1dIcDUxSTB6NVNPdXg4ZTFXQXVaemRIUXJUa3A4VG1qWG9JK2xhMHdHWnN6dWJxYk8zaWZRNkEvVzd2VlNZc1YzbVIwSkt3a0tjNFdIaUJrbVI4STNDQ2dJODdvT0w0cXpUNVArUlVKQmVqRU9nQVBLOGhZUHphdE0rZUlUcDJJTzl5VFFtZXJvbVBSeHgxcXhBY3NpbGUvdWJTZUViY1dRR1lFQ2doY0xZMkh5S2pvZ2pIMjVoTXBqcFV2MU91Z2xpNGVoMmVSdzBPMzJiSmpreXVDZ056ZzB2emxZTVNpU3MwdW9vNE1HN2hNT2pDRWFYMXlGRTBuU3ZqQnp1VG5FcEs4Nlo4SW9xRkFJdWJ3OGtnOUFyRWFSRVdTWkkrakg0WGJwNmc5RTlFbkpUM29hUnpETitNVUpCUURIbjU2YThvVW1FQnVzT3hCcy9ONSt0SkViUGtBRkRqOFVHdk9zL0lXdmNTZ2xHQmh2UzcvRlRZZnBXR1lkRFk4ZlBBeFdTQTM1c1RDNHA0K0xtNEFhcUlvUGVRdGZ1Zks2SmgwWmh4bGJzVVhPU21YTmlmRDVaVEFreURvZmJiY2NseG5BOFdOQXF4Q2JSTnlraFh4UXBhRHc2N2ZYVVlic2lHMEtodHYyb2VJdmg4cmhRTVlPY0VBcVhHL2VJK3puZ09jNXl4cjhxODJJQU0xYy9GTEZPcGxxdTVlRlFYck1aekdjVkNqWWJMV0c1STRCVDFldVJybGJ4dE5PdE1pdERERWhMWElJeW5BQXZ1T0VXRTNYM05kQWZ0OTRWZ2FHNDJYSVF0MFpYNlBlQ0UvcVFGZTlySzZIeDdZVTUwS3ZIN2ZXNGZTK3E3S0tCSnhzZ2dCWDVwU0FHaDFqSXJWaDV6UTZ3M1JmYWFoQlhtL2FDYkNaVGpDVUZVVHlXWnFXOXA2Mk1qSlBYVnFPclBnTU80TnY3NEdrZitvd2Z0TlZCRFFuakZKcUhTdzE3cFh2aFdXNUtacWUvUTQ5Ti9VU1RDQVZXb1FYRklIQkhYWGUzRlByVURzdUdEbXRGL2hIS1RIcGVreGhpQU9QSStTSnE2UzZIRjRJOVlXemtCSlRvNDZpVU16V3A4UGlyL1JpZHVMeEtZc1Nrc1Y4dkxsT1F2aEdYMllsUjBPQmhCakMrdS9nRWN2WTBBcEs3WWs0MU54alBTUW5XRkhURjY2VXJqZ2V2QjhDdTVhK2wydllTUlB0dVZEbzczaGhkTVNIblVYN3RUanNWWkd4QWwvV3B0aU9JRVExZ25MMjltWDYvdFIxdG1sa1lqOFc0WCtDU2pXY1VER1kxTnBTL0M3aFNLcWlNTE0vbDJRbVNXWjczRGR6K2dpbzhCQ0VOWVBRNDZxbmt6d1hVYnF2Qmt4alVRc1dmWkZnYnVvM3JBZit3TjdqT085MCt5bng0UGkzTCswbllMMVNjaERVZ0FQNGdQVi83SWQxcSsxSFNobXVHa0lxV1JQZ3l4TUZxUDhIZmpUbmpYd1k1YlFmYkpjdDZPSXpLZ01Ib3RGL0hlMWVnc2F4SFNxRzZ3ZmRtUTV4OE55VEZGcUJjcDJpU293SFIzeWs1KzM2aEY3dlhBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMV9QUkUiLCJGSURPXzJfMSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJsYXJnZUJsb2JLZXkiLCJjcmVkQmxvYiIsIm1pblBpbkxlbmd0aCJdLCJhYWd1aWQiOiJiOTBlN2RjMTMxNmU0ZmVlYTI1YTU2YTY2NmE2NzBmZSIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImxhcmdlQmxvYnMiOnRydWUsImVwIjpmYWxzZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOnRydWUsImFsd2F5c1V2IjpmYWxzZX0sIm1heE1zZ1NpemUiOjEyODAsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6OCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoxMjgsInRyYW5zcG9ydHMiOlsidXNiIiwibGlnaHRuaW5nIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN30seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTh9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi0zNX1dLCJtYXhTZXJpYWxpemVkTGFyZ2VCbG9iQXJyYXkiOjQwOTYsIm1pblBJTkxlbmd0aCI6NCwiZmlybXdhcmVWZXJzaW9uIjozMjk0NzMsIm1heENyZWRCbG9iTGVuZ3RoIjozMiwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjEsInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjoxMDB9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMC0xMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzMsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWXViaUtleSA1IFNlcmllcyB3aXRoIExpZ2h0bmluZyAoRW50ZXJwcmlzZSBQcm9maWxlKSIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjQxMDEyMDA5IiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMTAtMTIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDczfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI0LTExLTEyIn0seyJhYWd1aWQiOiIxNzVjZDI5OC04M2QyLTRhMjYtYjYzNy0zMTNjMDdhNjQzNGUiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjE3NWNkMjk4LTgzZDItNGEyNi1iNjM3LTMxM2MwN2E2NDM0ZSIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJDaHVuZ2h3YSBUZWxlY29tIEZJRE8yIFNtYXJ0IENhcmQgQXV0aGVudGljYXRvciJ9LCJkZXNjcmlwdGlvbiI6IkNodW5naHdhIFRlbGVjb20gRklETzIgU21hcnQgQ2FyZCBBdXRoZW50aWNhdG9yIiwiYWx0ZXJuYXRpdmVEZXNjcmlwdGlvbnMiOnsiemgtQ04iOiLkuK3oj6_pm7vkv6HmmbrmhafljaFGSURPMui6q-S7vempl-itieWZqCJ9LCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9LHsibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MTAsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDTnpDQ0FiNmdBd0lCQWdJVVh4d0VrVUg0K2hCMWxVOEZKTnBCZ3pPNTJXb3dDZ1lJS29aSXpqMEVBd013VWpFTE1Ba0dBMVVFQmhNQ1ZGY3hHVEFYQmdOVkJBb01FRU5vZFc1bmFIZGhJRlJsYkdWamIyMHhLREFtQmdOVkJBTU1IME5JVkNCR1NVUlBNaUJCZFhSb1pXNTBhV05oZEc5eUlGSlBUMVFnUTBFd0lCY05Nak13TkRFMU1UQTFNRE0wV2hnUE1qQTFNREE0TXpFeE1EVXdNelJhTUZJeEN6QUpCZ05WQkFZVEFsUlhNUmt3RndZRFZRUUtEQkJEYUhWdVoyaDNZU0JVWld4bFkyOXRNU2d3SmdZRFZRUUREQjlEU0ZRZ1JrbEVUeklnUVhWMGFHVnVkR2xqWVhSdmNpQlNUMDlVSUVOQk1IWXdFQVlIS29aSXpqMENBUVlGSzRFRUFDSURZZ0FFY3VPbmNrelVwSHMzMEJmQXFFam5hVGg3UUliYnNoNklPOW1pb1hUMjZUcTU4T1QrVXJRbWpNWldPdlRiNUtNZUg3QXVNblAwdnR1Umk3Tnd5YmpGcExaMHorTlZRV0xsaSt5Nk1yUStMQVhza0x1YmxkeWpMbWxyckViM2JuVjRvMU13VVRBZEJnTlZIUTRFRmdRVWkxaEZndnJ3OXlpK2R2RTJUaUFWbmhjMEpVb3dId1lEVlIwakJCZ3dGb0FVaTFoRmd2cnc5eWkrZHZFMlRpQVZuaGMwSlVvd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBS0JnZ3Foa2pPUFFRREF3Tm5BREJrQWpBV0JvcGFMNGp4b1lidkM1emNqSk8vSkV0NzJWaVFhb20xcEt6bVBtS2lmbGZ0aTlJSW4zcnoxaml0UDN6eW5DNENNSFpOdDF3TUp0TmJGUjVSSVpmdkV0RTdtNG8rOGdkanJaaklZcStPakFZYjVGRzVNTVdQSmYvZVlGR1RJb1dURmc9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFJUUFBQUNHQ0FJQUFBQ1Q3clg3QUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQURzTUFBQTdEQWNkdnFHUUFBQXpiU1VSQlZIaGU3WjM1VXhSWEhzQURZYVB4SUpwc0VsT2xNVmVac3phcHpWR3AydHF0WkpNMWlhbGN1OG1BaUloR1dFRWxlTVNOaG8wNXZDVWFTVHlpRWR3NVlCaVlBZFFCWWJnUEdSaE9NOHpBRElqSURjUGxYN0RmTEZ1VzliWHA2ZTU1Yi9xSlhmWDVRUzM3WFo5NVYvYzc3bkNQWFZOZ0JFVUdReWd5R0lKZEdhN1JhNDdoOFlhK2thb3JRM21PM3BUSzlxOU56WkVucXQ3WVpYbDZjODZDS0VOd1JOck1NRjFRcUNZbzVIK0VhbWFFNmVaR3BEMFlaWGhxVS9aZnZ5dUEvN3pUMUhTNndwM2IwbFBWT1FSQlFZQVFMSXFJSFppVDBUWTZVZHZ0eVd6b09waHJqMG0ydnJPdjhLbjQ3T0JWYVlFcTlSMmZTQUVlQkVOUHhtZS92YmR3WGJMMWdObWVVWCtsNXVwdzI4Z0VpbHAyR0pMUjNEK3FxZTVZYy9MaXl6dk1EOGNhWjY5TWxTeGdLZ0pVNnRuaHFZdGlqQzl2TjBPOU9WUFYzdFEvZ3BJaEkvTExnS3BRMFRHNFNXdDdLRG9qNEtiaW93cEU5OERhOUExbmFrcmRBNUFNbEREL0k1c00xK2hFZWNmZ1Q0WE9qdytYM2JNcURSV1RuNEYyN0tQdlM1SXN6dEoyT2EzSUpzUFc3WUhNcnp0dERUOWF3UWpScDZ0L0tIQkFkNEtTNmpka2t3SDlwMzFvakVGYTVldllHZXJBRlJRWkRLSElZQWlLTW1CWTR2U01DMmFDNmpCR1pHS21oR29pYWNtdzlYaDJtcHJXbnJvb2hLaGZxci9PYW9hUkxncUVJRHJyWlJTcE5QNmQyVVJ2dUVWZWhtdjBXbTVMejdMOVJVR2hHalNjNStUT0VNM1MzUlpkemVXV29YRVVGRUcrME5lamVLVUJxWDE3YitHNVM5MDAzbkdSbDVIWjBMWGtzK3dBWVc4eVlMcDM2SUlEQnBRb0VPS1FrZ0ZBMWg3Zm1KVnU2MFJSK0E1SkdRN1ArQy9sN3Z2V3BLUFVjd0kvc1ZjVGNvME5YU2dRU2hDVU1jbjgxZnJqSmEwdHd5UnJNekVadnc2T1FTY3hLendWSlpxVEdXSGFOU2VyaWx6OUtCQjZFSmNCM0wxQ2w1RFIyRHd3aXVLU0RCa1pNQllDRS9ldDBkKzFYT3VWK1pINi9XWTd5RU9CVU9WTFF3TktCaEh1WGFQZllXaUFKZ0ZGSncweU1xQTNnOEs5SkF5eVZWc2d6dUZ4bEF4U1FNWkpkZWJrTzNBRnlTZ3lHRUtSd1JDS0RJYVFLS09zZmVCVXVmdGttVXNJYmdhK2FCYTcrbEdxS0FIRlV1b2VRTEVMUklvTVc0L252UVBGOTBUcVlmN016N3hJZmZUcGF2UzRMT3cwTnFHMDBTSlN2Mnhma1ZYUyt5dlJNbUJLc1RXMUR1YlBhQVowTXdHZnFKL1puSlB2N0VVaHlBS05TZDlVUU9IRWEyeE84Wk1QMFRKMDFnNkJMenlDSTlLU0NwM29jYm53cHd3QUpyWm5xdHBSR3J3aVRrYk4xZUhITnBoUXhKeEF0Zmd3c2RnaHgveU9Fei9MQUJiSEdxczZ4WDBVRUNHamRXVGk0OE5sS01xcG1CMnVjN0cwWk0vL01vQVBFa3RhUFNJS1FZUU1HRUZGSEs5OFoxK2hFQ1JVVXFyOFhPWkNLZlFENGNjcVJMME1GZDFuS05CRGtjRVFpZ3lHVUdRd2hDS0RJYnpJYUJ1WlNNaHNlQ0xPOU1qNlRLODh1dDU0c3N5RlF2Q2QyR1FyaXVpVzQvR054dTNwOVY2MzUzaVJBY1BaVjNhWTBmQjVLdTVkblU3alkycklrWElVMGEzSUg3ODRYK3h0bU90RlJwTEZPWHVsb0RVR2dPcElHWTBGZDlORHhxeHczYUY4QjhvYWdrOEdsT3pmRDVXaVFLY2lLRlI3ckxnTmhVQ0U2U0VEV0xhL2lMK2w0cE5SMWo0WUxIaFAwY0oxbVpsMEZrRk5HeGx6VnFZV3RmRzFWSHd5OXArM1A3N1JKSXlzRlQ5VjFQVlMyYXpvZnhtQktzMzlhdzAzNVpFQTMyUTFvZHpkQ0orTW1xdkR4ZTRCSVpTNEIycXVlaWh0c2ZhL2pBQ1YrcFV2emFiR0xwUk4zK0gvNk9TbEEyY0J1WnFwZC9jVk5mVVRXeTBvQkVVR0grL3NMWVJLajlKREQwVUdIMEVobW84T2xWUjNEYUVrVVVLUjRRWG96RGYrcDVaU2Q0amdrQUVSbDNjTXB0WmMxZ25HMHRxSEFpR0l2REtBb0ZETkFiTWRaZGtYeXRvSE9PMXl5SEFNajI4NFV3TVQ3MW5oUXRsNHBnWUZRaERaWlFCM0xkZWlMRXNHQ2pZbTJjcTVUWXREUmtQdnlGdDdDbEZxK0lFWkNRcUVJQ3pJSU12cjN4YlU5WERNeVRoa1ZIVU9MZmtzR3ozUFE4QW5hcTIxQXdWQ2tPa240N0VOV1pXWE9SYU9jTWpJYmVtWkd5SGlaSlZBbGZyOHBXNFVDRUdtbjR3NUsxUFAvOHBSWWh3eVRsZTRZUWlCbnVjQlpQQy9jdkdSNlNjRFN1eEVLY2RMVmU2YThaV3hVVGc3VFUyTmZSU1AwR0pOeHFLWXpJUk1YQWhpT2NmVmxuRElZQTNXWlB4K1RicWg3b3JycG5UNmppSkROSUVobXRDa2NvS2JYSytqeUpEQy9aK21zNzRwbnhKc2R1QXdjVVBwOUIwT0diWGRIckZRZmRYTXBnem9PVXJjQTZnY1JJR3lDWERJZUdIYnVlZTI1SWdpNGxnbENvUWdiTW9Bbm96UFJ1VWdIQ2hrbEUyQVE0YkEwM0J1NU5uTloxRWdCR0ZXaGk4RWhXaFFOZ0VPR1hlS21mRk5zaWpHU0srbG1wWXlZTjZIc2dsd3lCQTEvWjVrZnFUZTFIZ1ZoVU9LMjFvRzFDRDBwRmRtaE9sZ0hvN0NJY1Z0M1V3OXUrWHNrdmhzVVR5MUtXZTdvUUdGUTRvNGRTMktUZ0wzcnpXZzRpQkNnRXE5SURvRHhTV0VaemJub0d3Q0hETEtPd2JMT2daRUFZL1U5WENNMVlnQUlhUG9KQkNiWWtYbFNBVDRnVy9XMmtyYmNYUmU0VHlRa1VQR3RJVGVCa3ZRek5aNVUreERUOGJTM1JaU0kwbEZocS9Bc0w2Nmk4emhxb29NWDVteFhGdEFhSEVNaDR4Uzk4RFJvbFpwWk5TUmY1ZEpCS3FiOGo5UHEwZmw0QlhPYjZNY01rNlZ1MkZLZ3VJVENNeitHdnY4dWo1VklGUmxpQVdLbDNNdkM0Y01zNzFuanVEZFNnZ1lkOU9iL2ZrQ1V6Sm1oNmNLL2V4YTJUbjBSRndXZWw0NHJ5YmswcHR6U0lZcEdZK3NOMVVJWEtwVDN6dnl0OTBXOUx4d1FQcytzOTAvaTFPRnc1U00xNzdKNS95OWNzaG9HUjVmbDJ5RlFjS05wK21LNHZWdjgyMk1WUTZxTWdKVkdsUUNQRURCUnAycTVqeituVU1HL0toTDNQMHBsZTVrcWFndmR2ajVRR2V2VUpYeDhnNHpLZ0Vlb0dDTFhmMUNGejVQUzZqS2VQOWdDWXBPR29vTUFvUWZKZlBWV1pGQmdEaDFMWXBPR29vTUF1ekt1WVNpa3dhZkRGdTNwN3hqMEhkWTZNeXB5dGg3L2xlVTVhbmdYS0Z6SFQ0WkIzTmJudHR5MW5kV0hhL3l3MFUrL0ZDVjhlZ0dFOHJ5VlBEWElUNFpNQUlUZm9vTER6QU1qMG0yeW5oTkowQlZoa0JtcmRBVk9QbmU3L0xKYUJ1ZGVQOWdNUXBSR2pOWDZIYWZ2VVQxa2p0K1dKQ3hkSTlGK2tFdXdPRjh4Nnh3SFFwVUd2Tlg2eFB6V2x3eStaQmRCdndjRCtiYStUY1NlSkVCVS9FWHR3czkvTXNyY3lQU2RoZ2F2QjVJUmdQWlpUei8rYmxDYjkrZ3ZNaUFndHVhV3ZkZ2xPRytUL1ZFV0xndUV6b3gvOWNQU2pJQ1ZlcmdWYWtvanpmelFGUjZ2TWJtdGRmMEltUGFRRW5HWXh0TVdVM0VsbElxTW56aVQxL2xOWkRiejZqSWtFNkFTdjNweVlzRW0xeEZoblNDUWpTY1gwOGxvOGlRemhOeFdXUnZhaFlobzd4ak1QcDA5VDhPbDk2Sy9HSHJXVlNVdmdPOU40b0ZzZmJVUmE5bjJkNklDQmxPei9pSDM1ZWdCQ253c0d4L2thaTdkY1ExVTFXZFE0dGpqU2hLQlU0Vy9qTlQ3QjF4b3Z1TWxFcjN2RWc5aWxnQkVSeVJkcExyZEJCK1JNdUF4aXBPWFN2a2FyamJsa0NWSmphbFJzTGxYNkpsQU5WZHcyL3RzY3lOU0oyejBoOEVoV3BSYnVYbGQ2RmFsTUliZ1dKNWMxY0J0T2VvMElRZ1JRWlEwTnAzcE1CeE9OOGZ2Q1Q0bWdML0FHTWtsTUliZ1dLUmZFK2tSQm4rNUFPV2huQXZiVC9mUEVEcnE2VWlRd1F6dzNSa3A5d0lSWVpRd01RbXJhMkY1cDJjaWd5aHZKcVFXOGExUlpVZ3hHUTRQUk13bUtNQnFlL3d2aEFVb3Myejl6aUd4MURhQU1nNEtnckprSkhoOEl3blpEUXVpRExNaGJFZGFXQW9pWXJHL3dTbzFDaFZrenk0MXJBdHJZNVUyMFdzWmpUMWovNHJ2WDVHR0Z0ekFxcmN0Vnk3TmRYV1FPNEtGNUo5aG4xbzdFZExxL0NiZ1c1cFlINTNLSytGN0dKSjhoMjQxbnA1Y2F3UjZqVksvYlFCc3JZd0pwUEd0YzdrWmJoR3I1a2F1OTc0cm1CYXZyOEtWR2xlK3lZL28rNEtqUVY1NUdWTWN2SEswTGEwK285L0tQVWQvNyswRDQ1SWUzdHZJVXJHSkZ1MGRaV1MzanNKZ1pZTW9IVmtBb1ladnZPZWY0ZTJNSXBOekd1eEQrRmtURUoxeFRCRkdhVHcyNlFQeHRCUGI4b3gxRjFCQ2ZBYmlvei9NeU5NRjVKVW50ZlNTK05jYllFb01uNERwcXRIQ2h3RWw2TkpRellaTUJxQmVic1EzaytrMkdmQUxIWHBIb3VsdGU5NmRETHVXNUJOUm1QZnlNK2xyczFhVzB5S05TYVpqeVh4SXE2NUVjdmk5Y1pWSnlwL2l5akZ1a2xyTzE3U1JuQkdMUmI1YXNiSVJHRmJYMktlL2EwOWhiUENDZXlQOG9XN1YramUzRlZ3d0d5SEtpTGpEaXVaK3d6b0xjRktnYk12NGxqRnZhdlRBMjRxSnFwQWRQTWk5ZUZIS3k0NGVpRVpNbmJka3pEVWdkZjFlSTRXdFlZbWxiK3c3ZHhEMFJrelYraUl2MU9CQUdlRzZSWkVaenkvN1p6cVNObVBoVTRiNy9aVFA4T1FqRW1nbGFqc0hOUlVkM3lYMDd6NjU2cS9mSDNoNFZnak5DT1N4Y0NEOFBpaUdPT2ZkMTZJUEZIMWJYYXp1cnFqNHZLZ2pNM1JWREFuNHpxdTBRbjcwSml0NTdlOTZEbk5WK0ZYL0ptbTlzUHZTMTdhYm40NHhnak5DL3pHZzBJMWdTb050RFlBL0FIK0N2ODRMeklOaXY3Rkw4d2ZKSmJFcVd1VExNN3M1bTRJQklLQ0FPWGFWQ2dFZG1YY2hpZ3lHRUtSd1JDS0RJWlFaRENFSW9NaEZCa01vY2hnQ0VVR1F5Z3lHRUtSd1F4ajEvNExGTlJNNEw3d2hnNEFBQUFBU1VWT1JLNUNZSUk9IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMSJdLCJleHRlbnNpb25zIjpbImhtYWMtc2VjcmV0IiwiY3JlZFByb3RlY3QiLCJjcmVkQmxvYiIsImxhcmdlQmxvYktleSIsIm1pblBpbkxlbmd0aCJdLCJhYWd1aWQiOiIxNzVjZDI5ODgzZDI0YTI2YjYzNzMxM2MwN2E2NDM0ZSIsIm9wdGlvbnMiOnsicmsiOnRydWUsImNsaWVudFBpbiI6dHJ1ZSwidXAiOnRydWUsImxhcmdlQmxvYnMiOnRydWUsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwiYWx3YXlzVXYiOmZhbHNlfSwibWF4TXNnU2l6ZSI6MTAyNCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMSwyXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0IjoxNiwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjo0OCwidHJhbnNwb3J0cyI6WyJuZmMiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fV0sIm1heFNlcmlhbGl6ZWRMYXJnZUJsb2JBcnJheSI6MTAyNCwiZm9yY2VQSU5DaGFuZ2UiOmZhbHNlLCJtaW5QSU5MZW5ndGgiOjQsImZpcm13YXJlVmVyc2lvbiI6MSwibWF4Q3JlZEJsb2JMZW5ndGgiOjMyLCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6MX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIzLTA3LTE5IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiQ2h1bmdod2EgVGVsZWNvbSBGSURPMiBTbWFydCBDYXJkIEF1dGhlbnRpY2F0b3IiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDIzMDcxOTAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIzLTA3LTE5IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjF9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjMtMTAtMDMifSx7ImFhZ3VpZCI6IjM0NzQ0OTEzLTRmNTctNGU2ZS1hNTI3LWU5ZWMzYzRiOTRlNiIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiMzQ3NDQ5MTMtNGY1Ny00ZTZlLWE1MjctZTllYzNjNGI5NGU2IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ill1YmlLZXkgQmlvIFNlcmllcyAtIE11bHRpLXByb3RvY29sIEVkaXRpb24ifSwiZGVzY3JpcHRpb24iOiJZdWJpS2V5IEJpbyBTZXJpZXMgLSBNdWx0aS1wcm90b2NvbCBFZGl0aW9uIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NiwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9LHsibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyIsImVkMjU1MTlfZWRkc2Ffc2hhNTEyX3JhdyIsInNlY3AzODRyMV9lY2RzYV9zaGEzODRfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCIsImJhRGVzYyI6eyJzZWxmQXR0ZXN0ZWRGUlIiOjAuMCwic2VsZkF0dGVzdGVkRkFSIjowLjAsImlBUEFSVGhyZXNob2xkIjowLjAsIm1heFRlbXBsYXRlcyI6NSwibWF4UmV0cmllcyI6NSwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NiwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NiwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwiLCJiYURlc2MiOnsic2VsZkF0dGVzdGVkRlJSIjowLjAsInNlbGZBdHRlc3RlZEZBUiI6MC4wLCJpQVBBUlRocmVzaG9sZCI6MC4wLCJtYXhUZW1wbGF0ZXMiOjUsIm1heFJldHJpZXMiOjUsImJsb2NrU2xvd2Rvd24iOjB9fSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURTakNDQWpLZ0F3SUJBZ0lVVG5iYkdJUjJOSHZ6cUlLRkFlUXdHMVhCaXMwd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JCSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVFZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU9zWGozazA0QmFuNFRZZHRaS3FEL09QSnh5RHlhUG1DQlVGVWlhWklnVHRlWm5qM1gyNURoZ3BaWlhzQzREMHlkSWNybEE2d05VSW5PUkwvTDl6QmJURUlNQVZNR282ZzdVS0FtYjJNRjZBSGJuaFlKZDllaWt1cFZOV1NoSE5ZTmM0R0JkTzFZTjZBZlVxdkpoSGJlM1Y0U05NUG1CUkVLSlBWejdUaHdnbWdnVGU4V3MySzAvd3NxdjJ3U0U3cGJDQnNVWmhJWDUxYlpNM3BxRHdKUFRtUkZFdnQwLzZ0RzVlTzhGM2oxNE9YcWZFaG1qbjFWdnhLRFlRT0xaQXhDd3dnQzBQNENkZld2M3k4UFNSOEkzNTRoTzFZK0d6Tmp2SXFYMzhOS0x5d3VJWUhGZXJPeE5seEVNQnZGaFlCdVJ1WUFra2dVYVBxTjZVQmhzSUxyc0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ0NvUkhoaXlObmJuWFJXSUw2WkJYb0JYOVlUTUI4R0ExVWRJd1FZTUJhQUZDQW9VQ0VicEZwYjZGUExuWjNGNVB4c0wzb2ZNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUNRRmFmSkkxLzVXZzlDRUVpbUUxUlA1NFJnUXdUTlRPT1FzTEFDVGUrckl0bEZRekM5WkRoclY4Mjh5WDdqenkrQUFzcDNpeks3VDF0aDJkbDdtK3R1MHN3MlBhL29sYzAybnQ2UHlJdzM0OGdhSHpoSTErMEtFNDVxeHZGRGVMMmxNeGJQZkNZdnlFRWFZemppUUVMVTU5NTFwWEdXeUtNYS80Zkx0TytaS09YaE11VmVxNHJYRFBJNTRXNkpIT2lBYWlLZGl3KzVlM2Mya3QvakZJUXRNNnZNWGc5TE5GemRqRVROdDIwVlg5UWV2UnBGWmZ1Y01HOXdDYVFEb0ZsUHpwVE1KS2hQZXYvaW1KbVpZaEtmcjBsTGNlbXRxakl4TEFvcVpkT1lmSEJnNit2QWNkUEkvaWF1R3BVQXY3WCtVS05tRHdqWjJCYUg0c0x3aEIybSIsIk1JSURTRENDQWpDZ0F3SUJBZ0lVRHFFUncrNFJuR1NnZ3hnVWV3SkZFUERSWjNZd0RRWUpLb1pJaHZjTkFRRUxCUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURJN1huSCtadkR3TUNRVThNOFplVjVxc2N1Ymx2VllhYVJ0M1liYXhuOWdvZEx4NXN3SDBsWHJkZ2poNWg3RnBWZ0NnWVlYN0U0YmwxdmJ6VUxlbXJNV1Q4TjNXTUdVZThRQUpiQmVpb1Y3Vy9FK2hUWlAvMFNLSlZhM2V3S0JvNlVMZU1uZlFaRHJWT1JBazh3VExxMnY1TGxqNXZNajdKdE9vdEthOUo3bkhTOGtMbXpYWFNhajBTd0VQaDVPQVpVVE5WNHpzMWJ2b1RBUVFXckw0L0o5UXVLdDZXQ0ZFNW5VTmlSUWNFYlZGOG1scUsyYngyejZva1ZsdHlEVkxDeFlicFVURUx2WTF1c1IzRFRHUFVvSUNsT200Y3Jwd25EUkxWSHZqWWVQR0JCLy9wRXl6eEEvZ2NTY3hqd2FIMVpVdzliblNiSHl1cktxYlRhMUt2akFnTUJBQUdqWmpCa01CMEdBMVVkRGdRV0JCVHF0MEtRbmd4N1pIcmJWSHdEdW54T245aWhZVEFmQmdOVkhTTUVHREFXZ0JUUzd1OWFJbzA2YlZ3amx6M3loZFVtOFNWN2tqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQTRHQTFVZER3RUIvd1FFQXdJQmhqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFxUWFDV014VEdxVlZYN1NrN2trSm1VdWVUU1lLdVU2K0tCQlNnd0lSbmx3OUs3SGUxSXB4WjBoZHdwUE5pa0tqbWN5RmdGUHpoSW13SEpneHh1VDkwUHczdllPZGNKSk5rdERnMzVQWE9melNuMTVjRkF4MVJPMG1QVG1JYjhkWGlFV09wem9YdmR3WERNNDFaYUNEWU1UN3c0SVF0TXl2RTd4VUJacTJianRBbnEvTkRVQTdiZTRIOEgzaXBDKy8rTktsVXJjVWgrajQ4SzY3V0kwdTFtNkZlUXVlQkE3bjA2ajgyNXJxRHFzYUxzOVRiN0tBSEF3OFBtcldhTlBHMmtqS2VyeFBFZmVjaXZsRmF3cDJSV1p2eHJWdG4zVFYyU0J4eUNKQ2tYc05EMDVkQ0VyVkhTSklzK0JkdFRWTlk5QXd0eVBtbnliMHY0bVNUenZXZHc9PSIsIk1JSURTakNDQWpLZ0F3SUJBZ0lVUjM4bXEyNlNmMnN6VlYyQmRHNldFTjdrdVdVd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVJZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU5ZMFdiOW9Qb1JvS29ReVdQYUpwejExdnJXVGc2elR0bU5qMlZvS1JueXZLR1JxcHpiODN3NWw2WUE5NlVZa1lCRFFQMGlsTzJEUGU2d1dxVlI1ekRmUnpkY0g4YmgrTDdkR0d2YWU2aFJUWmhrRmtDcFhEczRIY2NrbnJEZjhGQ2xKN0hlMzlKZjQyL0cxUW0yeno5V1dtclBYdGdpSy94MDVHanNRZkd1REcxemY1UVRVVWllOGx3eW1LM1RmZE92TmVlSkFBUGUycG43SXRmUmIrclZyTldpRHpsUm4ydk5uWjJ3UG80d0gvV0o2ZGhYWkcrck1XVCthNkJvY2cxVWZJdzZrZHVuRzRiVHBaenN2YWNGWXlSMG1wZitEZU9ucFNXQW15d0pXSHZUbGYyWVh4RnllWGNUQUNkUWxjTU5HSjJWaFpRNDh4dFA1L1JCUC84a0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ2h5NDJva2lxY1RTMWlxYS9IUldqa0JuNEgvTUI4R0ExVWRJd1FZTUJhQUZPcTNRcENlREh0a2V0dFVmQU82ZkU2ZjJLRmhNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUFuK1JISVBidE1FRE5kVDFnOEgvUml0QWtVZExnQXQxdFdHV25sajlrbmJ2NC80R2xYN0M5cDQ1ZWZQTzkvYVpMNk9WMVhSS0JpNkttdEJXNUs3bnVZRW5NeC81QnFCU2JMVDdyaGR1QzQ5VEJlTWI5UEhkWHNUbFNWTlllZnIxZEdpZHI0ajB4VkJRTGIxcmtuREFiZFdEektmdm5heUtPOEZyd2U3SHg4NDNNRy9ySitjMFhydVV2YmZWVENITGlJV2hNN29ORGhMOHhvYjZ4VW85S0xLY1NMK0l0WXNPMy85V2I4UTlHanNxTDRGWHNEY0cxU2FZaDdLcGZ1TW1PaXhxekpaTzJuSWljUFlSZzFJMlN1aVVmWU83MHRtZEhjYmwra1NRbVNZdDdycTR2aUlMZzJHeDNqOXJJVHVXVGpiYVVhU1NReGdPbU1TSHV5ek1BQyIsIk1JSURQakNDQWlhZ0F3SUJBZ0lVWHplaUVESkVPVHQxNEY1bjBvNlpmL2JCd2lVd0RRWUpLb1pJaHZjTkFRRU5CUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTVo2L1R4TThySVQrRWFvUHZHODFvbnRNT28vMm1RMlJCd0pIUzBRWmN4VmFOWHZsMTJMVWhCWjVMbWlCU2NJWmQxUm54MW9kNTg1aCsvZGhLN2hFbTdKQUFMa0tLdHMxZk81M0tHTkxadWp6NWgzd0duY3I0aHlLRjBHNzRiL1UzSzloRTVtR05ENnpxWWNoQ1JBSGZyWU1ZUkRGNFlMMFg0RDVuR2R4dnBwQXk2bmtFbXRXbU1ud08zaTBUQXVjc3JiRTQ4NUh2R000cjBWcGdWZEpwdmdRamlUSkNUSXErRDM1aHd0VDhRREl2K25HdnBjeWk1d2NJZkNrenlDaW1KdWtoWXk2S29xTk1LUUVkcE5pU092V3lETVRNdDFid0N2RXpwdzkxdSttc1V0NHJqMGVmbk85czBaT3dkd01SRG5INHhnVWw1Wkx3cnJQa2ZDMS8wQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQjhHQTFVZEl3UVlNQmFBRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRTXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJEUVVBQTRJQkFRQzNJVy9zZ0I5cFo4YXBKTmp4dUdvWCtGa0lMa3Mwd01OcmRYTC9jb1V2c3JoenN2bDZtZVBNcmJHSkJ5SjFYbnF1QjVzZ2NSRU5GeGRRRm1hM21pbzhVcGYxb3dNMVpyZVhySjBtQURHMkJwbHFiSm54aXlZYStSMTFyZUlGVFdlSWhNTmNaS3NEWnJGQXlQdUZqQ1dTUXZKbU5XZTltRlJZRmdOaFhKS2tYSWI1SDFYZ0VEbHdpZWRZUk03Vm9sQk5sbGQ2cFJGS2xYOHVzdDZPVE1PZUFEbDJ4TkYwbTFMVGhTZGV1WHZEeUMxZzkrSUxmejNTNk9JWWdjM2lyb1JjRkQzNTRnN3JLZnU2N3FGQXc5Z0M0eWkweEJUUHJZOTVyaDQvSHFhVVlDQS9MOGxkUms2SDdYazM1RCtXVnBtcTJTaC94VDVIaUZ1aGY0d0piMGJLIiwiTUlJRFNEQ0NBakNnQXdJQkFnSVVVY21NWHpSSUZPZ0dUSzBUYjNnRXVaWVprQkl3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRRG01NTViV1k5V1crdE9ZMHJJV0hsZGgrYU5hbm9DWkNGaDdHazNZWnJRbVBVdzBoa1NHNnFZSFF0UCtmWnlTMzNWRXJ2ZytCUXFubXVtZ05oZnhGcmt3RVpFTGVpZEJjQzhDNEFnNG5xcWlQV3B6c3ZJMTdOY3hZbEluTE5MRmNaWS8rZ09pTjZaT1RpaE81L3ZCWk1iajlyaWFBY3FsaVltTkdKUGdUY01HYUVBeU16RU1OeTJubTZFcCtwalA1YUY2Z2kyMXQvVVFGc3VKMWoyUmoveW5NL1NkUnQrZWNhbDVPWW90eEhrRmJMOXZ2djJBMk92NUlUWkNsdzRiT1M5bnB5cFFpbU9aNVFBWXl0bVlhUXBXbC9wTVl6NnpTajhScWtWRE5FSkdxTmZUS0EyaXZMWXdYNmxTdHRNUGFwZzBKODRsOVgwdm9WTi9GcFM0VkNWQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJRZ0tGQWhHNlJhVytoVHk1MmR4ZVQ4YkM5Nkh6QWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQVlNemdMckpMSXIwT292UW5BWnJSSUd1YWJpSFNVS1NtYkxSV3BSa1dlQXRzQ2hERUhwWGNKL2JnRE5LWVdvSHFROHhSVWpCNEN5ZXBZZXZjM1lsckc4bzd6SHhwZlZjYW9MNVNldUprekh4S240YlRhU3A5K012d2FtbnA2NGtaTWlOYkZMa25mUDlrWUtvUkhrTVdoZVJKMVVzUDF6NFNjbWtDZUlMZnNNczZ2cW92cWpXQ2xGc0pwQmNzbHVZSFdGN2JCSjFuNFJ3ZytBVEVvcFk0SWdHdjZadndjK0E5citBVDJocXBvU2tZb0FsK0FOWXdnc2xPZjlzSmUwVitUQTlZWS9VbGFCbVBQVGQwLy9yOXd2Y2VQV1prUGpLb0FDL3pVTmhmRGJoNExWOEdIczNseVgyWG9tTC9MTmM4Sll6eUlhREVoR1F2ZW9QaGgvdHIxZz09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWZDQVlBQUFDR1ZzK01BQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBSFlZQUFCMkdBVjJpRTRFQUFBYk5TVVJCVkZoSHBWZDdUTlYxRkQvM2Q1OXdlUVNJZ1M5QVFBWGNGTEFRWmk5ZnBlVnoxdFkvV1RacjVXeHBjN1c1a25MYTVqSTNaODVzclMybk0yc2p0V3daUzdJVUg0SDR4Q25FUXg0REFaRjc0Vjd1czg4NXY5L2xJbkJ2VkovQjRQdjludS81bnUvNW52TTU1NmZ6QS9RdjBIYi9JclgzVkZLUG80NWNubTRpblVJV1l3TEZSbVpRVXV3akZHL04xaVJIaDFFWjBOUlZSdWRxdDFCZCsyblNLeVMvT2h5czArbGszZS8za1E5cXZENFpVdGE0VlZTVXVZMGVpcHlpVGhBZm9jb09SVmdEdXV3M3FLUmlBZDNyYmNFdGpUallJb2Y2V2FIc0NtelZQV0NNeCtjZ2g4dExxV01LYU1Xc1VqTHFvMlJ0SklRMG9Pem1lcnBRdTRlc1pnc09Oa0d4SDdkMGtkdlRUMTdzNE9NVTdWSThaaGpnR2FNK0FxOWlFTnU4UGlmMXVkejA3TXd2S1dmOEdsVm9DRVkwNFBDNVdkVGFYWUZiUjh2TnZMNSszS2dmYjV4Tk15YTlSYW1KaXluYU1sR1RWdEZscjZiYTl1K3BxbkVYNHVNdVJSZ2pTWUVock43dXRGRmU2bHFhbDdOZmt3NWltQUdIeW5QcGJrOFZtWTB4c3RucHRsRkNWQ1l0elR1Qk44M1FwTUxqVHRldmRQelNVbko3ZThta2p4WjM5ZlhiS0RmbGRacWJ2VStUVWdHbkJWRjZmUTJpUEhnNFcxNlVXVXd2emJrMTZzTVpFK1BuMHB2ejdKU2V1QXllczhsY3BDbWFLdW8vcCtxV3IyVWN3SUFIV3J2UDBZRXpoWEF0TEFic3NIaHA3aUdhbXZ5aWpQOHJ5cXJYVVdYOVhvb3d4eUF1Zk5CcnA0M1BPQkZYWmxrZjhNRFJpcWNweW93QXdwdXoyeCtmV3Z6L0R0ZGU5c21zenlndGNSNkMxd2JkekJsNk9scTVXTllZNG9HYXRoSk1ya1RFeDBqQVJTSEFWcys1cllrUU5YYitRZ2ZQTHNRNmdYeUluc3JlUWZtcG03UlZGWWZMODZuMWZpVU9rWXZTaGtVUHh2YnVrem95NksxaWhNMWhvM1h6VzZFdlNmWEErZHBpV0dhV2QrZG9Yekx6bUd3S1lGTENBc1JBbFBCQWhNbENGWFU3dEJVVlByOEhnVmNKSFdxK0YwMHBscitETVRkclA0enZ4WTExa05NaHhUK1NlVEdnK2Q0VjVMUUppdHlVR0pOQjhWRlpzamdZQlpNL0lJL1hDVGtqMHF5RE9wRjJBVlExN0NJalVwL0RuVDFVa0w1RjVnZGorc1Mxd2cxZ0UzZ2lnbTYwZkNYelNuUFhieUFQYklYditJRHBFMTZUaGFISVM5c2t5aGxtTUU1RjNjZnFBS2hxMkMwRTVQSDFnWWFYYUxQRGtaRzBIREpPbktXSHA1MUkwejVTT3V4OGUxV0F1WnpkSFFyVGtwOFRtalhvSStsYTB3R1pzenVicWJPM2lmUTZBL1c3dlZTWXNWM21SMEpLd2tLYzRXSGlCa21SOEkzQ0NnSTg3b09MNHF6VDVQK1JVSkJlakVPZ0FQSzhoWVB6YXRNK2VJVHAySU85eVRRbWVyb21QUnh4MXF4QWNzaWxlL3ViU2VFYmNXUUdZRUNnaGNMWTJIeUtqb2dqSDI1aE1wanBVdjFPdWdsaTRlaDJlUncwTzMyYkpqa3l1Q2dOemcwdnpsWU1TaVNzMHVvbzRNRzdoTU9qQ0VhWDF5RkUwblN2akJ6dVRuRXBLODZaOElvcUZBSXVidzhrZzlBckVhUkVXU1pJK2pINFhicDZnOUU5RW5KVDNvYVJ6RE4rTVVKQlFESG41NmE4b1VtRUJ1c094QnMvTjUrdEpFYlBrQUZEajhVR3ZPcy9JV3ZjU2dsR0JodlM3L0ZUWWZwV0dZZERZOGZQQXhXU0EzNXNUQzRwNCtMbTRBYXFJb1BlUXRmdWZLNkpoMFpoeGxic1VYT1NtWE5pZkQ1WlRBa3lEb2ZiYmNjbHhuQThXTkFxeENiUk55a2hYeFFwYUR3NjdmWFVZYnNpRzBLaHR2Mm9lSXZoOHJoUU1ZT2NFQXFYRy9lSSt6bmdPYzV5eHI4cTgySUFNMWMvRkxGT3BscXU1ZUZRWHJNWnpHY1ZDalliTFdHNUk0QlQxZXVScmxieHROT3RNaXREREVoTFhJSXluQUF2dU9FV0UzWDNOZEFmdDk0VmdhRzQyWElRdDBaWDZQZUNFL3FRRmU5cks2SHg3WVU1MEt2SDdmVzRmUytxN0tLQkp4c2dnQlg1cFNBR2gxaklyVmg1elE2dzNSZmFhaEJYbS9hQ2JDWlRqQ1VGVVR5V1pxVzlwNjJNakpQWFZxT3JQZ01PNE52NzRHa2Yrb3dmdE5WQkRRbmpGSnFIU3cxN3BYdmhXVzVLWnFlL1E0OU4vVVNUQ0FWV29RWEZJSEJIWFhlM0ZQclVEc3VHRG10Ri9oSEtUSHBla3hoaUFPUEkrU0pxNlM2SEY0STlZV3prQkpUbzQ2aVVNeldwOFBpci9SaWR1THhLWXNTa3NWOHZMbE9RdmhHWDJZbFIwT0JoQmpDK3UvZ0VjdlkwQXBLN1lrNDFOeGpQU1FuV0ZIVEY2NlVyamdldkI4Q3U1YStsMnZZU1JQdHVWRG83M2hoZE1TSG5VWDd0VGpzVlpHeEFsL1dwdGlPSUVRMWduTDI5bVg2L3RSMXRtbGtZajhXNFgrQ1NqV2NVREdZMU5wUy9DN2hTS3FpTUxNL2wyUW1TV1o3M0RkeitnaW84QkNFTllQUTQ2cW5rendYVWJxdkJreGpVUXNXZlpGZ2J1bzNyQWYrd043ak9POTAreW54NFBpM0wrMG5ZTDFTY2hEVWdBUDRnUFYvN0lkMXErMUhTaG11R2tJcVdSUGd5eE1GcVA4SGZqVG5qWHdZNWJRZmJKY3Q2T0l6S2dNSG90Ri9IZTFlZ3NheEhTcUc2d2ZkbVE1eDhOeVRGRnFCY3AyaVNvd0hSM3lrNSszNmhGN3ZYQUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIkZJRE9fMl8wIiwiRklET18yXzFfUFJFIiwiRklET18yXzEiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwibGFyZ2VCbG9iS2V5IiwiY3JlZEJsb2IiLCJtaW5QaW5MZW5ndGgiXSwiYWFndWlkIjoiMzQ3NDQ5MTM0ZjU3NGU2ZWE1MjdlOWVjM2M0Yjk0ZTYiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsInV2IjpmYWxzZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImxhcmdlQmxvYnMiOnRydWUsImJpb0Vucm9sbCI6ZmFsc2UsInVzZXJWZXJpZmljYXRpb25NZ210UHJldmlldyI6ZmFsc2UsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjpmYWxzZSwiYWx3YXlzVXYiOnRydWV9LCJtYXhNc2dTaXplIjoxNTM2LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjgsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4LCJ0cmFuc3BvcnRzIjpbInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi04fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotMzV9XSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5Ijo0MDk2LCJtaW5QSU5MZW5ndGgiOjYsImZpcm13YXJlVmVyc2lvbiI6MzI5NDc2LCJtYXhDcmVkQmxvYkxlbmd0aCI6MzIsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjoxLCJwcmVmZXJyZWRQbGF0Zm9ybVV2QXR0ZW1wdHMiOjMsInV2TW9kYWxpdHkiOjIsInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjoxMDB9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wMi0wMSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzYsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWXViaUtleSBCaW8gU2VyaWVzIC0gTXVsdGktcHJvdG9jb2wgRWRpdGlvbiIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjUwMjAxMDAzIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDItMDEiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTAyLTA2In0seyJhYWd1aWQiOiI1ZWEzMDhiMi03YWM3LTQ4YjktYWMwOS03ZTJkYTkwMTVmOGMiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjVlYTMwOGIyLTdhYzctNDhiOS1hYzA5LTdlMmRhOTAxNWY4YyIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJWZXJpZGl1bSBBbmRyb2lkIFNESyJ9LCJkZXNjcmlwdGlvbiI6IlZlcmlkaXVtIEFuZHJvaWQgU0RLIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwiLCJiYURlc2MiOnsic2VsZkF0dGVzdGVkRlJSIjowLjAsInNlbGZBdHRlc3RlZEZBUiI6MkUtMDYsImlBUEFSVGhyZXNob2xkIjowLjAsIm1heFRlbXBsYXRlcyI6NSwibWF4UmV0cmllcyI6NSwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwidGVlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbInRlZSJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVsZXNzIiwiYmx1ZXRvb3RoIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDR0RDQ0FiNmdBd0lCQWdJVUx1TEp5bHZKcUs4SkV6emVhV1RZb2NIYWV1TXdDZ1lJS29aSXpqMEVBd0l3ZkRFTE1Ba0dBMVVFQmhNQ1ZWTXhFVEFQQmdOVkJBZ01DRTVsZHlCWmIzSnJNUkV3RHdZRFZRUUhEQWhPWlhjZ1dXOXlhekVWTUJNR0ExVUVDZ3dNVm1WeWFXUnBkVzBnVEZSRU1STXdFUVlEVlFRTERBcFdaWEpwWkdsMWJVbEVNUnN3R1FZRFZRUUREQkpXWlhKcFpHbDFiVWxFSUZKUFQxUWdRMEV3SUJjTk1qRXdPREV5TVRJd05qTTFXaGdQTWpBMU1UQXpNRGd4TWpBMk16VmFNSUdITVFzd0NRWURWUVFHRXdKVlV6RVJNQThHQTFVRUNBd0lUbVYzSUZsdmNtc3hFVEFQQmdOVkJBY01DRTVsZHlCWmIzSnJNUlV3RXdZRFZRUUtEQXhXWlhKcFpHbDFiU0JNVkVReEV6QVJCZ05WQkFzTUNsWmxjbWxrYVhWdFNVUXhKakFrQmdOVkJBTU1IVlpsY21sa2FYVnRTVVFnUVhSMFpYTjBZWFJwYjI0Z1NYTnpkV1Z5TUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFRlY3Q1QxWTUwWVV0RHM1bkNmdnBZMzhMN0lLd0hoaDFFQ0V0ekZHZ0pxTXJXYzlPQ3hFUnVyYmpsdzFlbnljY3I0WURQbkR2K3l2czZjSThZUlozU3FNUU1BNHdEQVlEVlIwVEJBVXdBd0VCL3pBS0JnZ3Foa2pPUFFRREFnTklBREJGQWlFQWlKdjN3SFVxeXVKMGNBdDkyOW1xQWFQekZoamhuYXlzcWpOdHhLcFV6QmNDSUVRWFI3czg2TzZCbkJIMzBJV3VXTHh1dC90c2hpYVQ2RXUwTmtoNkhkNjEiXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZ0NBWUFBQUVFZlVwaUFBQUFCR2RCVFVFQUFMR1BDL3hoQlFBQUFDQmpTRkpOQUFCNkpnQUFnSVFBQVBvQUFBQ0E2QUFBZFRBQUFPcGdBQUE2bUFBQUYzQ2N1bEU4QUFBQWVHVllTV1pOVFFBcUFBQUFDQUFGQVJJQUF3QUFBQUVBQVFBQUFSb0FCUUFBQUFFQUFBQktBUnNBQlFBQUFBRUFBQUJTQVNnQUF3QUFBQUVBQWdBQWgya0FCQUFBQUFFQUFBQmFBQUFBQUFBQUFFZ0FBQUFCQUFBQVNBQUFBQUVBQXFBQ0FBUUFBQUFCQUFBQUlLQURBQVFBQUFBQkFBQUFJQUFBQUFBUWRJZENBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBQ1ptbFVXSFJZVFV3NlkyOXRMbUZrYjJKbExuaHRjQUFBQUFBQVBIZzZlRzF3YldWMFlTQjRiV3h1Y3pwNFBTSmhaRzlpWlRwdWN6cHRaWFJoTHlJZ2VEcDRiWEIwYXowaVdFMVFJRU52Y21VZ05pNHdMakFpUGdvZ0lDQThjbVJtT2xKRVJpQjRiV3h1Y3pweVpHWTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5MekU1T1Rrdk1ESXZNakl0Y21SbUxYTjViblJoZUMxdWN5TWlQZ29nSUNBZ0lDQThjbVJtT2tSbGMyTnlhWEIwYVc5dUlISmtaanBoWW05MWREMGlJZ29nSUNBZ0lDQWdJQ0FnSUNCNGJXeHVjenAwYVdabVBTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM1JwWm1Zdk1TNHdMeUlLSUNBZ0lDQWdJQ0FnSUNBZ2VHMXNibk02WlhocFpqMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzlsZUdsbUx6RXVNQzhpUGdvZ0lDQWdJQ0FnSUNBOGRHbG1aanBQY21sbGJuUmhkR2x2Ymo0eFBDOTBhV1ptT2s5eWFXVnVkR0YwYVc5dVBnb2dJQ0FnSUNBZ0lDQThkR2xtWmpwU1pYTnZiSFYwYVc5dVZXNXBkRDR5UEM5MGFXWm1PbEpsYzI5c2RYUnBiMjVWYm1sMFBnb2dJQ0FnSUNBZ0lDQThaWGhwWmpwUWFYaGxiRmxFYVcxbGJuTnBiMjQrT1RZOEwyVjRhV1k2VUdsNFpXeFpSR2x0Wlc1emFXOXVQZ29nSUNBZ0lDQWdJQ0E4WlhocFpqcFFhWGhsYkZoRWFXMWxibk5wYjI0K09UWThMMlY0YVdZNlVHbDRaV3hZUkdsdFpXNXphVzl1UGdvZ0lDQWdJQ0FnSUNBOFpYaHBaanBEYjJ4dmNsTndZV05sUGpFOEwyVjRhV1k2UTI5c2IzSlRjR0ZqWlQ0S0lDQWdJQ0FnUEM5eVpHWTZSR1Z6WTNKcGNIUnBiMjQrQ2lBZ0lEd3ZjbVJtT2xKRVJqNEtQQzk0T25odGNHMWxkR0UrQ3JPdGxsRUFBQWJPU1VSQlZGZ0p0UmRyYkpOVjlONzdmVis3N2duYlNGeWM0T2ptZzJpTURqRktvc0FZQkh5QlkyRDhZV0tNemhCK09GOXMrMk14eWpBaUd2OU5Rd3d4TVhFUEVnenZEWXJBRWpRYm9BTXh0TjBZUTUzUXRkMnJhL3M5cnVmYzlpdnQxcTZRd0czUzc5NTdudmVjYzg4NWw1RFpobjE3bTBhWEgra2FJSno4ZVBXc3Z3bVI1YUF2SFBFT0JKdVkxVVpjNzc5QWt6aFV2dDJpeEhkS2Q3WGFyQ0VhcE1zUGQvSnJselJpVEUwUXltaWpmUFhjS0NlY1UwOVRiUnc3aVUvaW9uekhYZzVxZExxY3E2c3JZZ0JhdnFQakNEZU1haE5SSm9US1ZaMWRmTEEzUUxnQjNBMERZRnoxTkcyMElCSnpybDVaTnRqai94S0JsTEYrVCtTaVpBSk5Mck4rMDJwYXNhUDlDeTVaUGdBZGtrZGxTNDh5TnZsZnhBZ0ZDWlU0WVN0UG5PS1ZMUzJLaVJZWUdRZ2pVQXhRbUs0NDNLa1RTV0pYenZrZW9Cci9Dd0FNZ1ZTU2lYdnJlc280NTJUb25HOE1nSmROSUtGVWRaZXBRcnc4MEJQZ2trVHprUW9BbkZIalJWZEQ3UUd4TnYvc3pSMGN2QnN4MTRuZnRNZE1SSm8rWCtad3lrTTUvb2RrVzBHZlVIZzZRc3AxYmF1RSsrWE43ZGVHRk84VVVmVStIVUtFVlhVZWR3b0NoeU10TXpqQ3BvcW5iQm9jQTJ6Qzd5V1V4TzBQQVlkQmE4eVg4L0tZT2pyK09NbFdMcEJmQ0RuaFdLN1ptOXN4OWxRUUVQZURFSVovbkdnUW9HNFI5WlR6K1J6c1R5VkdBbGVELzQ1NXRSS3VhM0hjK0lRU25kbHlKUjRPM2xjNlZUaU1RbVFDM3VTVVR2WC81cytTRmNaQVlrbWN3SnhRa0VmcFBrL0RodlhtbGpzMlljNDFxOHFHem80T3l6SUZUanpSS3hyTHlpYWV4ZzFzem9EUG1raHNNc0h2VFFLSFE2NndQRkpKc25QUDhGRHdFM2ZES3g4bkl0NlZ1WDE3KzdxMHJrc3JNZVp1OE5BZmxKS0cyMklncnBYRFlWVHMvSm1EOFI4RVg4bzNiWkJXWkF3QWt1MjJSNTlqU3RaeEl4d0VyeE1EaU0rejJsWXVRalFUZlhuMlkzdUliaHdYbHhtY2FucU0rUXFQUGJQTTZZeUhaaEtqVmpQK084YTVwbTVLZ3NVV2pERGxKSXNZemRPQmVONHlsMVpjOGRVaENIODlHencrTTV5QmlJbEk1TWE3SzQ1MlljWUF1MFNEYWN4ZnRGbFNjb1l4S1FQeGRHTWJFTkt3WjNuTEJNaVFPTXVxbkNjeFpEbms1UE1RNFR1NWxqS0hxSlJKekZXL2xwYUc4L3RvVlplVEc1b0dnaUVGU2l3MGVINGlpMmdxM3FRVWR1R1FCbGszaFBlenFCYnFHOVVBSWtJTjZyNkJYLzFaUk5mUVJUT0lxV0xGNi9wbWpCaFE0SUloSXBVbDR2T00zWmowYWZNWU9qVDVRaUdPdU1Jc0VzblBMZlNHY0NOeHlGZk9YTmRoWXg0ZUljVlFLYUhqcnZvMVJRUlRXbHNkNGlZTkprbmtDV29GTDhWVWlrUFI4SlR1ZGpkdEtCSjdiUnRuRU9NK0s1a3MraE10Q21VWGpZTEc0OHlXUTJUR24vVFlqUzJJbEhuRXptMXYzbnNGeXlvU1lPck9UQmgxeGEzZzNSRWM3Q042djYxVHk3ODVhQ1dUVTYyUXNSODJBL0dPQ0VqSkpIWWZFVGEyb0xnVzhsQ1FoTlVRK09jbGlMN1J1NllBbmhhRmxybXN4U0RVV2ZIMUlXNVEvUWR3c1lXckVRTTZBaEd5V0VWdVBhY2h4MWxHb3QvOUM0czJZenhJQ2htR3VyblVDTVp5QWljb09jNkZMZTN1enNWVjJwUVdSMDB6d1FQRXpQeVBaYVFjNnNUdm1NR2d4dTNraG01RTgwbnFUSVljbVRVWWRxMDRlb3hMcXY2cUthSTJ3Vy9tM3ZTdmFXSk1YblkzM1k1bHdtRHNFcHh1VVRRRGNyd0ZxVjBNTklJZnRsUFFWNHIwWUJqOCsxWGRaM2pWMGE3OS9ybHpoVlVxZTNxU2N6QVdORWMwZndYdUwxNEN2aDJxMkhVQW1QRjZJeExtY0dMa20vbjZRVnZDSUxkaFI4SHdCTkMvWW1wazZ2ZzRwSGRlVFpTc0FEVHF3VGtqZ1plRnBnUUV3eWdmV2FMWXJSMjdoVkRLVDBQODNCUHRONFdKTThXUzBFNnk1WUpJdXQ4SWVBdmNqVFdMVTJscjBVUENLQXBuckszNjFHa1NHQno5eWR2ZnRwVGxrVko5eWxEalRXNm0wNktwb1Znd2E0N0MxYkFQMHUzcmwrdlhIQ1pveVl1TGhNSXpGUUNETWtVaVdrUVBldDNqa1VuZlNKRWswMXFtRUs1UFRZSWQwZ2RVMUZyaVg0TzZJek9MbFVJdC9zNzEzdG90YUdsczRRVVVXZ3NUVnlnZ0tnRzRBMzdxeEkxUTRFWi9NQWZja2cvOU5nSGhpSXZ0WGFhQkdGQjZjbVJvT3dZNGxWK0RKMVdQdUNIYnRpRVQzbHUzR0Z2VnBDRXpDWXJobEQ1KzNUV3VoaWEwUXRuQ3NLNmg2Y0RGU2JqcEZpbzhLUlIwTEFUaE5pZ3NueUppL0pac1RGMkZUR2JNZFhya3c3OHZqRmwwUXk2RXA0bUtqeW9RbnltZzBJUllhUEVCMWlzeGFhSDdvM1YwVHIvM2N6T3hZYzQzaGN6MlpmTksvUHM4alRWWldTb3JoT0xhaVV4QkF4UVE5MU1DQTVVcThBcWtWS2N5ZXdjS05YVTMxRHhkTXBrM2hEaENLQWJlYlF6V1d4ZlZ0TThlSEhOdHJYa2VtUkxaOGdaWVZCZkNPQmV0a1ZDTTBZTTJiYUlRK2hKTFFZRjNEOGdSbHNLWHdtM0l6SXhxdmkwWGZOWlJBZytrL2ZoSUVsUUphVGN6bDF2RCtCOWNNQTdneXF2dVRRQUFBQUJKUlU1RXJrSmdnZz09IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiRklET18yXzAiXSwiZXh0ZW5zaW9ucyI6W10sImFhZ3VpZCI6IjVlYTMwOGIyN2FjNzQ4YjlhYzA5N2UyZGE5MDE1ZjhjIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJ1diI6dHJ1ZX0sIm1heE1zZ1NpemUiOjEyMDAsInBpblV2QXV0aFByb3RvY29scyI6WzFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjE2LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjEyOCwidHJhbnNwb3J0cyI6WyJibGUiLCJ3aXJlbGVzcyJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XSwiZmlybXdhcmVWZXJzaW9uIjoxfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTA3LTE0IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjF9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDctMjgifSx7ImFhZ3VpZCI6IjNiMWFkYjk5LTBkZmUtNDZmZC05MGI4LTdmNzYxNGE0ZGUyYSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiM2IxYWRiOTktMGRmZS00NmZkLTkwYjgtN2Y3NjE0YTRkZTJhIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkdvVHJ1c3QgSWRlbSBLZXkgRklETzIgQXV0aGVudGljYXRvciJ9LCJkZXNjcmlwdGlvbiI6IkdvVHJ1c3QgSWRlbSBLZXkgRklETzIgQXV0aGVudGljYXRvciIsImFsdGVybmF0aXZlRGVzY3JpcHRpb25zIjp7ImVuLVVTIjoiR29UcnVzdCBJZGVtIEtleSBGSURPMiBBdXRoZW50aWNhdG9yIn0sImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUJ6VENDQVhPZ0F3SUJBZ0lKQUxTM1NpYkdEWFRQTUFvR0NDcUdTTTQ5QkFNQ01Ec3hJREFlQmdOVkJBTU1GMGR2VkhKMWMzUWdSa2xFVHpJZ1VtOXZkQ0JEUVNBeE1SY3dGUVlEVlFRS0RBNUhiMVJ5ZFhOMFNVUWdTVzVqTGpBZUZ3MHhPVEV5TURRd05qVTVOREJhRncwME9URXhNall3TmpVNU5EQmFNRHN4SURBZUJnTlZCQU1NRjBkdlZISjFjM1FnUmtsRVR6SWdVbTl2ZENCRFFTQXhNUmN3RlFZRFZRUUtEQTVIYjFSeWRYTjBTVVFnU1c1akxqQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJBNW1qWXNqb3dBSTBqbnBpLy9DSjNLbnpoR2JUVW1zdE5XcU43OGlvRzFDVEs5Z1BnUGw5VWlGT0pPL3YrRmZGSytQeHYxMGM2MDRkdmxJREFiS3craWpZREJlTUF3R0ExVWRFd0VCL3dRQ01BQXdEZ1lEVlIwUEFRSC9CQVFEQWdFR01CMEdBMVVkRGdRV0JCU2dXdFkwbkVjbVBtR0RMdUN3Y2VLZUpQU2NvekFmQmdOVkhTTUVHREFXZ0JTZ1d0WTBuRWNtUG1HREx1Q3djZUtlSlBTY296QUtCZ2dxaGtqT1BRUURBZ05JQURCRkFpQXhvVnM2cWo3RFgyeGl4Q2pqY0RVZHhCVEptU1RMYjBmMXJSR3dyQUJ6VFFJaEFQdDBQMzJxekFlZXBGNC8vdGd6eHFOb0trV0RjYVBQU1hyZyt4enJsVkh3IiwiTUlJQnp6Q0NBWGFnQXdJQkFnSUNBU0F3Q2dZSUtvWkl6ajBFQXdJd096RWdNQjRHQTFVRUF3d1hSMjlVY25WemRDQkdTVVJQTWlCU2IyOTBJRU5CSURFeEZ6QVZCZ05WQkFvTURrZHZWSEoxYzNSSlJDQkpibU11TUNJWUR6SXdNVGt4TWpBME1EWTFPVFF3V2hnUE1qQTFNVEEwTURjd016QTFNREJhTURzeElEQWVCZ05WQkFNTUYwZHZWSEoxYzNRZ1JrbEVUeklnVW05dmRDQkRRU0F4TVJjd0ZRWURWUVFLREE1SGIxUnlkWE4wU1VRZ1NXNWpMakJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCQTVtallzam93QUkwam5waS8vQ0ozS256aEdiVFVtc3ROV3FONzhpb0cxQ1RLOWdQZ1BsOVVpRk9KTy92K0ZmRksrUHh2MTBjNjA0ZHZsSURBYkt3K2lqWmpCa01CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdFR01CMEdBMVVkRGdRV0JCU2dXdFkwbkVjbVBtR0RMdUN3Y2VLZUpQU2NvekFmQmdOVkhTTUVHREFXZ0JTZ1d0WTBuRWNtUG1HREx1Q3djZUtlSlBTY296QUtCZ2dxaGtqT1BRUURBZ05IQURCRUFpQWtyTE01VjNEbkQwWGNWVUZXK05NRmNCWkNPMUZ4eVl6NFZrUEgzQTdLR1FJZ0hheVRmVTg4b0lFaU1OYXgxM3RnWmFvaGhNQVhFTWpxVHlJdGJjVFQ4UWM9IiwiTUlJQnFUQ0NBVStnQXdJQkFnSUJBVEFLQmdncWhrak9QUVFEQWpBN01TQXdIZ1lEVlFRRERCZEhiMVJ5ZFhOMElFWkpSRTh5SUZKdmIzUWdRMEVnTVRFWE1CVUdBMVVFQ2d3T1IyOVVjblZ6ZEVsRUlFbHVZeTR3SUJjTk1qRXdNekF5TURZeE9EUTRXaGdQTWpBMU1UQXlNak13TmpFNE5EaGFNRHN4SURBZUJnTlZCQU1NRjBkdlZISjFjM1FnUmtsRVR6SWdVbTl2ZENCRFFTQXhNUmN3RlFZRFZRUUtEQTVIYjFSeWRYTjBTVVFnU1c1akxqQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJJemtNZHROWnQwWk96Tyt1MWYyRUtaUlNuZmh2eXdiaG9uQkY5TlNQcTJXRzdudVJpL3l2WjhsRGp3cDVkYXJRNk9kWmcrSHFiU1NlWEpYdzdVcGNsU2pRakJBTUE4R0ExVWRFd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnRUdNQjBHQTFVZERnUVdCQlJqV3hUbzFFcTMzWnJ4ZkxEV3NzZGRiRC92WlRBS0JnZ3Foa2pPUFFRREFnTklBREJGQWlCK0UwOUd6bWNZbE05NXFUL2FmblBVOXE2WEpteE9TS1dBUk81K2tnVW5XZ0loQUlhOW41cDQwdGNHZm1lRjYvV3ZZb2pBTnV5a1FxaFZrOFduZmcxNVM2OXIiXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBakNBWUFBQUQxN2doYUFBQUFCR2RCVFVFQUFMR09mUHRSa3dBQUFDQmpTRkpOQUFDSER3QUFqQThBQVAxU0FBQ0JRQUFBZlhrQUFPbUxBQUE4NVFBQUdjeHpQSVYzQUFBS0wybERRMUJKUTBNZ1VISnZabWxzWlFBQVNNZWRsbmRVVk5jV2g4KzlkM3FoelREU0dYcVRMakNBOUM0Z0hRUlJHR1lHR01vQXd3eE5iSWlvUUVRUkVRRkZrS0NBQWFPaFNLeUlZaUVvcUdBUFNCQlFZakNLcUtoa1J0WktmSGw1NytYbDk4ZTkzOXBuNzNQMzJYdWZ0UzRBSkU4ZkxpOEZsZ0lnbVNmZ0IzbzQwMWVGUjlDeC9RQUdlSUFCcGdBd1dlbXB2a0h1d1VBa0x6Y1hlcnJJQ2Z5TDNnd0JTUHkrWmVqcFQ2ZUQvMC9TckZTK0FBRElYOFRtYkU0NlM4VDVJazdLRktTSzdUTWlwc1lraWhsR2laa3ZTbERFY21LT1crU2xuMzBXMlZITTdHUWVXOFRpbkZQWnlXd3g5NGg0ZTRhUUkyTEVSOFFGR1Z4T3BvaHZpMWd6U1pqTUZmRmJjV3d5aDVrT0FJb2t0Z3M0ckhnUm00aVl4QThPZEJIeGNnQndwTGd2T09ZTEZuQ3lCT0pEdWFTa1p2TzVjZkVDdWk1TGoyNXFiYzJnZTNJeWt6Z0NnYUUvazVYSTVMUHBMaW5KcVV4ZU5nQ0xaLzRzR1hGdDZhSWlXNXBhVzFvYW1obVpmbEdvLzdyNE55WHU3U0s5Q3ZqY000alc5NGZ0ci94UzZnQmd6SXBxcytzUFc4eCtBRHEyQWlCMy93K2I1aUVBSkVWOWE3L3h4WGxvNG5tSkZ3aFNiWXlOTXpNempiZ2NscEc0b0wvcmZ6cjhEWDN4UFNQeGRyK1hoKzdLaVdVS2t3UjBjZDFZS1VrcFFqNDlQWlhKNHRBTi96ekUvemp3ci9OWUdzaUo1ZkE1UEZGRXFHakt1THc0VWJ0NWJLNkFtOEtqYzNuL3FZbi9NT3hQV3B4cmtTajFud0ExeWdoSTNhQUM1T2MrZ0tJUUFSSjVVTnoxMy92bWd3OEY0cHNYcGpxeE9QZWZCZjM3cm5DSitKSE9qZnNjNXhJWVRHY0orUm1MYStKckNkQ0FBQ1FCRmNnREZhQUJkSUVoTUFOV3dCWTRBamV3QXZpQllCQU8xZ0lXaUFmSmdBOHlRUzdZREFwQUVkZ0Y5b0pLVUFQcVFTTm9BU2RBQnpnTkxvREw0RHE0Q2U2QUIyQUVqSVBuWUFhOEFmTVFCR0VoTWtTQjVDRlZTQXN5Z013Z0JtUVB1VUUrVUNBVURrVkRjUkFQRWtLNTBCYW9DQ3FGS3FGYXFCSDZGam9GWFlDdVFnUFFQV2dVbW9KK2hkN0RDRXlDcWJBeXJBMGJ3d3pZQ2ZhR2crRTFjQnljQnVmQStmQk91QUt1ZzQvQjdmQUYrRHA4Qng2Qm44T3pDRUNJQ0ExUlF3d1JCdUtDK0NFUlNDekNSellnaFVnNVVvZTBJRjFJTDNJTEdVR21rWGNvRElxQ29xTU1VYllvVDFRSWlvVktRMjFBRmFNcVVVZFI3YWdlMUMzVUtHb0c5UWxOUml1aERkQTJhQy8wS25RY09oTmRnQzVITjZEYjBKZlFkOURqNkRjWURJYUcwY0ZZWVR3eDRaZ0V6RHBNTWVZQXBoVnpIak9BR2NQTVlyRlllYXdCMWc3cmgyVmlCZGdDN0g3c01ldzU3Q0IySFBzV1I4U3A0c3h3N3JnSUhBK1hoeXZITmVITzRnWnhFN2g1dkJSZUMyK0Q5OE96OGRuNEVudzl2Z3QvQXorT255ZElFM1FJZG9SZ1FnSmhNNkdDMEVLNFJIaEllRVVrRXRXSjFzUUFJcGU0aVZoQlBFNjhRaHdsdmlQSmtQUkpMcVJJa3BDMGszU0VkSjUwai9TS1RDWnJreDNKRVdRQmVTZTVrWHlSL0pqOFZvSWlZU1RoSmNHVzJDaFJKZEV1TVNqeFFoSXZxU1hwSkxsV01rZXlYUEtrNUEzSmFTbThsTGFVaXhSVGFvTlVsZFFwcVdHcFdXbUt0S20wbjNTeWRMRjBrL1JWNlVrWnJJeTJqSnNNV3laZjVyRE1SWmt4Q2tMUm9MaFFXSlF0bEhyS0pjbzRGVVBWb1hwUkU2aEYxRytvL2RRWldSblpaYktoc2xteVZiSm5aRWRvQ0UyYjVrVkxvcFhRVHRDR2FPK1hLQzl4V3NKWnNtTkp5NUxCSlhOeWluS09jaHk1UXJsV3VUdHk3K1hwOG03eWlmSzc1VHZrSHltZ0ZQUVZBaFF5RlE0cVhGS1lWcVFxMmlxeUZBc1ZUeWplVjRLVjlKVUNsZFlwSFZicVU1cFZWbEgyVUU1VjNxOThVWGxhaGFiaXFKS2dVcVp5Vm1WS2xhSnFyOHBWTFZNOXAvcU1Ma3Qzb2lmUksrZzk5QmsxSlRWUE5hRmFyVnEvMnJ5NmpucUllcDU2cS9vakRZSUdReU5XbzB5alcyTkdVMVhUVnpOWHMxbnp2aFplaTZFVnI3VlBxMWRyVGx0SE8weDdtM2FIOXFTT25JNlhUbzVPczg1RFhiS3VnMjZhYnAzdWJUMk1Ia012VWUrQTNrMTlXTjlDUDE2L1N2K0dBV3hnYWNBMU9HQXdzQlM5MUhvcGIybmQwbUZEa3FHVFlZWmhzK0dvRWMzSXh5alBxTVBvaGJHbWNZVHhidU5lNDA4bUZpWkpKdlVtRDB4bFRGZVk1cGwybWY1cXBtL0dNcXN5dTIxT05uYzMzMmplYWY1eW1jRXl6cktEeSs1YVVDeDhMYlpaZEZ0OHRMU3k1RnUyV0U1WmFWcEZXMVZiRFRPb0RIOUdNZU9LTmRyYTJYcWo5V25yZHphV05nS2JFemEvMkJyYUp0bzIyVTR1MTFuT1dWNi9mTXhPM1k1cFYyczNZayszajdZL1pEL2lvT2JBZEtoemVPS280Y2gyYkhDY2NOSnpTbkE2NXZUQzJjU1o3OXptUE9kaTQ3TGU1YndyNHVyaFd1amE3eWJqRnVKVzZmYllYZDA5enIzWmZjYkR3bU9keDNsUHRLZTM1MjdQWVM5bEw1WlhvOWZNQ3FzVjYxZjBlSk84Zzd3cnZaLzQ2UHZ3ZmJwOFlkOFZ2bnQ4SDY3VVdzbGIyZUVIL0x6ODl2Zzk4dGZ4VC9QL1BnQVQ0QjlRRmZBMDBEUXdON0EzaUJJVUZkUVU5Q2JZT2JnaytFR0lib2d3cER0VU1qUXl0REYwTHN3MXJEUnNaSlh4cXZXcnJvY3JoSFBET3lPd0VhRVJEUkd6cTkxVzcxMDlIbWtSV1JBNXRFWm5UZGFhcTJzVjFpYXRQUk1sR2NXTU9obU5qZzZMYm9yK3dQUmoxakZuWTd4aXFtTm1XQzZzZmF6bmJFZDJHWHVLWThjcDVVekUyc1dXeGs3RzJjWHRpWnVLZDRndmo1L211bkFydVM4VFBCTnFFdVlTL1JLUEpDNGtoU1cxSnVPU281TlA4V1I0aWJ5ZUZKV1VySlNCVklQVWd0U1JOSnUwdldremZHOStRenFVdmlhOVUwQVYvVXoxQ1hXRlc0V2pHZllaVlJsdk0wTXpUMlpKWi9HeStyTDFzM2RrVCtTNDUzeTlEcldPdGE0N1Z5MTNjKzdvZXFmMXRSdWdEVEVidWpkcWJNemZPTDdKWTlQUnpZVE5pWnQveURQSks4MTd2U1ZzUzFlK2N2Nm0vTEd0SGx1YkN5UUsrQVhEMjJ5MzFXeEhiZWR1Nzk5aHZtUC9qaytGN01KclJTWkY1VVVmaWxuRjE3NHkvYXJpcTRXZHNUdjdTeXhMRHU3QzdPTHRHdHJ0c1B0b3FYUnBUdW5ZSHQ4OTdXWDBzc0t5MTN1ajlsNHRYMVplczQrd1Q3aHZwTUtub25PLzV2NWQrejlVeGxmZXFYS3VhcTFXcXQ1UlBYZUFmV0R3b09QQmxocmxtcUthOTRlNGgrN1dldFMyMTJuWGxSL0dITTQ0L0xRK3RMNzNhOGJYalEwS0RVVU5INC93am93Y0RUemEwMmpWMk5pazFGVFNERGNMbTZlT1JSNjcrWTNyTjUwdGhpMjFyYlRXb3VQZ3VQRDRzMitqdngwNjRYMmkreVRqWk10M1d0OVZ0MUhhQ3R1aDl1ejJtWTc0anBITzhNNkJVeXRPZFhmWmRyVjliL1Q5a2ROcXA2dk95SjRwT1VzNG0zOTI0VnpPdWRuenFlZW5MOFJkR091TzZuNXdjZFhGMnowQlBmMlh2QzlkdWV4KytXS3ZVKys1SzNaWFRsKzF1WHJxR3VOYXgzWEw2KzE5Rm4xdFAxajgwTlp2MmQ5K3crcEc1MDNybTEwRHl3Zk9Eam9NWHJqbGV1dnliYS9iMSsrc3ZETXdGREowZHpoeWVPUXUrKzdrdmFSN0wrOW4zSjkvc09raCttSGhJNmxINVkrVkh0ZjlxUGRqNjRqbHlKbFIxOUcrSjBGUEhveXh4cDcvbFA3VGgvSDhwK1NuNVJPcUU0MlRacE9ucDl5bmJqNWIvV3o4ZWVyeitlbUNuNlYvcm42aCsrSzdYeHgvNlp0Wk5UUCtrdjl5NGRmaVYvS3ZqcnhlOXJwNzFuLzI4WnZrTi9OemhXL2wzeDU5eDNqWCt6N3MvY1I4NWdmc2g0cVBlaCs3UG5sL2VyaVF2TER3Ry9lRTgvczNCQ2tlQUFBQUNYQklXWE1BQUE3RUFBQU94QUdWS3c0YkFBQUFJWFJGV0hSRGNtVmhkR2x2YmlCVWFXMWxBREl3TVRnNk1EVTZNamdnTVRZNk5ESTZNVFQ5aHdyZkFBQUlIVWxFUVZSWVI1MVhDMUJVNXhYK2RsbGdRZDRQVVJBZmlTaGFORzFpN0JodG0wNUtVa25UV0IrTlFhMFlHMk9EbGpvT0drMWlPNTFxTkdRY2s5b2tSSnMwNEl3NnB1TjBURXhUYU9zWVM3U1NwaHBmMUtBVkJSWmhXUjRySUx0N2I3L3ozN3ZzUWhhQy9TNy9zdnozdk0vNXovbXg2QVNHQ1oyUC9GZ3M4cGY2NklOZmpNVjRPV3hZemQvRGcrWlhZRUhsSjUvanZnV2I4T2pxSFdoc2NhbjlPMVV1R0Y0RWhNUVUzdHJoUnQ3cWwzR3FzaHBJaUFGOFBxRHJOcFlWNU9IMUYxY2dKam9xS0ZMQ0krSUhOMng0RVRDVi8zemJINUE4Y1JGT1ZWOENSaWNEVVpGQU5KZlZpdklERmFqNjl4ZUtUaWtrajZiUkZIMXc1WUpCSXREZjZqOVZuc2E4WjNiUVd5OFFTNit0NWp0M3Q0ckExczBGMkx6cWNXT1A2TDFhcDR5S0dEZkczQ0VHQzRRWUVBeU5qeCsxMTV2MEtZK3UxNUdXcHlNblg4YzBXVXQxWkQraEkrbGhmV0hSVHQzcjlablVCaHBYYmRUUElWdy9qeEc2WTgwV2M1ZHlmUUc1d1JpMEJ2S0xkMk4vMlFmTWN5eGdaNWdGa3UrV2RveWNPQVpWKzMrTnV6UFRqSDNDdGZzZE9OWVcwMUVmd3BEQUhZMVBCLysySVdOZktlS1h6RGNJQjhDaU1WSEIxZnYySDQ5aFpXRUpNTUlPeEl6Z0R1M1RXUDRkWFRURWh2SlhpckQwc1RrR01kRlRmUVoxMzE0QVgzY2pGYk11K0NsUWhhaGk3dVhUZ3Nqa2lSaHo3QkRzT2RucURWZ2ZGcWF5THdKZlhHL0M3Q1cvd3MzTHpGOUtvbEdlOHFhblZ5bGZ1M1loWG51K1FFZ1Z2TTJ0YUpqM0ZEcXJqdExIVk83WTFMNUV3SWQycXJaUVJMejZOUFk5M0c5R2JPNGlaQjR0SjNtWU1xL1BBTXU0SDlIRENLNXdRN0dQWGplMVlzYUQ5NkxpblJlWWlXZ2hVM0NzZmc3TzB0Zm9hd3lGUkN0QnVncTVDMkhXUkdSV0hZYnU5VEV5ODZGcjdhUkw0bnN4aVdKcG5DMHBBMW5PYzBxV01xKyt5Y1d6M0FORW1zcDdic01XYnNYSEgrM0M2ZmUyOVNsdmUvY1FMbGppNENwOWkvNm1rRm1VaTg5dXJqYU0zTG9kazN4MWlQcm1mWWllUFJQWnZoc1l1YjJFS1dnbXQ0ZVVPbmxpNFdtdGcrWm1TZ2tWQVllekRhTnpsZ0pwU1R4RFhxU1BUa0w5WDNjckFrSDN5Yzl3NDRjcjRHbXVVZUVXTVlZMzNhclFFbjljZ1BTRGJ4akVSQWVGaDltc0xDUFdrWW5hakJud05UU1JMNHdHdFdOeVZ5T3NVWFl6UVNKT01xR1d4djdDVkppNE5tc2Vyc3lhQmEzNUpwVkwxUXVMRjcxb2dIM2ExekNwcnJhZjhwSzNqeUIrYWo1aTZORHJiRTUrMk1hbTAxaXZpb0pSbkxMTUZDaW9QV1BUTEFzRjkwa3BzbEg4SmtkUnd1MVVRaWI4cFFJVHp2NE40Wm5waXU1RTlVVkU1T1JqdzVhOVFCeFRGaEdPd2swQncrUUlHOUw3STJDQTZBeFM3RWNZN0dTVUVwSWk2MGJxOWgzSTF1c3hJdmM3NnYzMW15NU1tN2NCMzNxa0NCNWhUNDRqRTQ4aWo1aE5EUGtLQkF3WUJNb3V0WGdxNkZYS3htZlZ2cUI5Y1NIRzNyTU01eTVlQXpLWW5yQlFQZ2J3WmZjR1NjRkF5QUZTajhVZ2IzMTFEeTVhWXVBK2VBalc5QlRqOUlpQmJwNmtMczRIdnlacFlFRVlPZ1hzVEFNWkJNSWszaXVaMWtoY3Vlc0JOUDVpSFZPVHlIbkR3U1JHZDdOWk9Wd29MbHlBalQ5YlFDTjR4Q2dxTXR4b1RuNUk3UmhGR0VEQUFFNHZ0UVpBVExMS1kySG42dmJBdzBrblBVQjJkYTBYV2tNTDd2MTZGdHBxMzhQTDYvUFppR2lRTVBHWFBWd2lFNENTd3ljWVFSRWdWNGdpTkRvY1AzazhqVzRtdlY1VHA4RWRsNERLRDNiaTAwTmJFVzgySzFjbnZUZkhkYkEwK1M2UzVBbEcvd2lFcUFHYm1teUdhamtOR2pwVjEwdjc3VzVNYWorSGg3NlJwZWphZVRlWXRmZ0Z2UEg3STd5a1JDbWVZSWprcjQ1QWlCcVFycVdoaCtKNjJFd2JrTEJ5SmFicUhVaGFFeGhNVC85eUR4TEdQWTZULzZwaEQrQUVGVzJzcWM1YlJyc1ZEQjBCQ1gxUURkZzRxZnpJZHJHM1Q3OEhFVk9tWUhKekUwYnQ1YWcyOGRiQlNsZ216TWZlc2crQmRFNUV1VGRJRkNVTm5DY2x4Y3RNU201VHRoSEYvbEZXR2xYcW1XUDFoVTNrOGpVSC9uemlqTHhDV0VJaXhwOWgxN3Z3ZDloU09DdUkwNTlmUWNvRHEvRE11bDI4TXpEY2ZxOXY4elRjYU1hU1JkK0ZmdlV3aXBibktYcUJ0MUVHRWd0M1FHcVVBWkdSOUZqR3I0QUZwRE1WY3hjK2h5ay9LRWFkdzJuc0UyMjhGOHhjL0NKbVBsUUlaMXVIZVcrZ0NDOTVHMXVSTTNrODZpL3R4NzRkYTB3TzhyeFp6Z2thRDIvZE5kb1lyaUtnTTdIUWVMc2krbTVFdVN0K3c0citCNUJxQ3BWS0ZvK2EyL0RUWitjamxTMzJwYTN2QW9sQlZ6U3BtWFkzNTNzY2p2NXVBM0xuVERmMmlhNFRwMUQveUZKNHVocFl5TWxVYWt4UUwwZTNMVDRGazlwNHN5Wk1BOVJYbEIwNWdlVWJPSWFsb3lXYVRVWndpOTFOR2xXTWpGZHpUL0pNYk51OEhKdWVEdHlJdmMxTzNKaTdETGMrcmVDQlRTTzFUWEdJMXg3Y1JPeU03eUh6NDhPdzBBblpWd1lJWS9DOXNMaGtIMTU1cVl5RGhVY3dpcU5admVPU091bjFzT3M1OGNSVGorSEF6aUtEd1VUalQ5YkJWVjVLeFhHa3RsT3A4UG1vdWhVUjlqUmtWQjdnUmVWK2cxanFUZVRLaFNRVXZKcFBuLzNrRmw3SjV4clg4S2xQcXU5WjMxK25PMXJhVENvRHpsZjM4Q3B1NTFVOFVhOUJKdGRZL1JMWEJmNTlIckc2czdUTXBKUnJmLzlyL0pjTWtJandwdy9WNTJ2MTFEbXJkUXYvTDNqLytHZm1yb0hPaXVQNmYyS3pxQ1JhS2F6QmVLNXgra1drY1M5S2J5aFliMUlLUks2eGdqSG8vd1ZEd2NPclZiM2srZXh4aGp1RmdaYWhJMklrejAySXVUOFhZOTdmQjl0SUtUNlZ2RUZoZEo0aElTSUNOamF0ZlI0MUdhUFFmZllzMVk3dVU2NHh6OVlJTys2cStnVGovL21ob1Z4OEM3Q0doa1RnVG5ENzhuLzFxOU1mWnM0akdlcFVoanFldVU3U25idjJtaFIzaGpzeVFHTmgralBvL3VpWVhwZVhyenVLdGdUOU54bjYvNytoOEgvVlFDaUlrS0Z5SFJyQS93QzRlK08rWjFjbjRRQUFBQUJKUlU1RXJrSmdnZz09IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiXSwiZXh0ZW5zaW9ucyI6WyJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiIzYjFhZGI5OTBkZmU0NmZkOTBiODdmNzYxNGE0ZGUyYSIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZX0sIm1heE1zZ1NpemUiOjEwMjQsInBpblV2QXV0aFByb3RvY29scyI6WzFdfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjEtMDMtMDUiLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IkdvVHJ1c3QgSWRlbSBLZXkiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDIxMDMwNTAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4zIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjQifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMTktMTItMDQiLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IkdvVHJ1c3QgSWRlbSBLZXkiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDE5MTEyMjAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4wLjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMC4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDE5LTEyLTA0In1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMS0wMy0wNSJ9LHsiYWFndWlkIjoiNDY1NDRkNWQtOGY1ZC00ZGI0LTg5YWMtZWE4OTc3MDczZmZmIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI0NjU0NGQ1ZC04ZjVkLTRkYjQtODlhYy1lYTg5NzcwNzNmZmYiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiRm9vbmd0b25lIEZJRE8gQXV0aGVudGljYXRvciJ9LCJkZXNjcmlwdGlvbiI6IkZvb25ndG9uZSBGSURPIEF1dGhlbnRpY2F0b3IiLCJhbHRlcm5hdGl2ZURlc2NyaXB0aW9ucyI6eyJ6aC1UVyI6IuWuj-mAmuaVuOeivOenkeaKgEZJRE_ouqvku73pqZforYnlmagifSwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfSx7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MTAsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNBakNDQWFlZ0F3SUJBZ0lVVXYreStmakxKWU8zOUtkTlJNNE1CNDNNQ0pjd0NnWUlLb1pJemowRUF3SXdkVEVMTUFrR0ExVUVCaE1DVkZjeEpqQWtCZ05WQkFvTUhVWnZiMjVuZEc5dVpTQlVaV05vYm05c2IyZDVJRU52TGl4TWRHUXVNU0l3SUFZRFZRUUxEQmxCZFhSb1pXNTBhV05oZEc5eUlFRjBkR1Z6ZEdGMGFXOXVNUm93R0FZRFZRUUREQkZHYjI5dVozUnZibVVnUmtsRVR5QkRRVEFnRncweU5ERXdNRFF3TVRJeU1UQmFHQTh5TURjME1Ea3lNakF4TWpJeE1Gb3dkVEVMTUFrR0ExVUVCaE1DVkZjeEpqQWtCZ05WQkFvTUhVWnZiMjVuZEc5dVpTQlVaV05vYm05c2IyZDVJRU52TGl4TWRHUXVNU0l3SUFZRFZRUUxEQmxCZFhSb1pXNTBhV05oZEc5eUlFRjBkR1Z6ZEdGMGFXOXVNUm93R0FZRFZRUUREQkZHYjI5dVozUnZibVVnUmtsRVR5QkRRVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCQnNzWWt1TUd0MEg2dXVjRUZmMHY5S1lDc1JZM2tpMFZ1ckJwSFBGVVpranhqOUpocVFPSzZIUGlWYXQ3TEc4MWpDTkRXTkFkb3ZzMldzRFZ5K1VRWUNqRXpBUk1BOEdBMVVkRXdRSU1BWUJBZjhDQVFBd0NnWUlLb1pJemowRUF3SURTUUF3UmdJaEFQRmJJV2c3NTNsUGpXckY2NlBYbUdzS3lHekp3N0Q5UGkrbDNyZzhzbEtaQWlFQXVPS2FpZWZDdmJidVdERzlYcy9qSkUzNTJIYWRvVGVDd1Z4SnNJWktvN0k9Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUtBQUFBQWxDQUlBQUFCSzBIVVJBQUFBQ1hCSVdYTUFBQTdFQUFBT3hBR1ZLdzRiQUFBZDBFbEVRVlI0MnUyYmQxUlYxN2JHajhhS2lEUkJwSWlvaUtMWWV4ZXg5OTRSRzRvTmF6VEcyQkI3aTExaml4cGJOTEVMVWdSN3hZYUt4bDVRc2FNaVJmSitlMC9ZYmdHTjk3NTM3eDl2dU1jZVo2eXp6OXFyelBMTmI2NjFqdUhEdCt2LzlXWDRKb0p2Q3Y1Mi9iOVdjRkpTMG9jazVUUEQ2OS9yVlY1TTA4NFhXdnZmOTVoaHAvb24rc0ovNlBxQzZENzNVNGFDK3Bka1l2aXFBU1VrSk1YSEs1K0o2dGZFeEtUNGhFU2VKQ1orV1RIL0owS1J6L2o0K0VTMU95NEs4WisvRWo4ZGxSUjRtSkI2SlNjbnEzTkt1YlQyMDl1WjlpVHgwMHZxLytNQTlKY000TXNqVEV3blQyMEF2S3Nmbm41Zy80NEhmK3liK1Njbi81MTZmZUJPL3ZEeCs5OS9LOHFXUGo1dlN2SmNtNTcra2lHbWY2N0pYZnVVN21TZWYvL1RsZDQvOUwvR3hzWW02eWFsL3pYOUZETHNMam41YXdmd3VkRnFScVBOVVh1ZVpnaDhUMDd6VmtLQ21Jc21FNzdKay9RbVl2aXMweWlhVTNwTlNvaVBDUTI5TnNrdm9sUFhFL1VhSEt0VjkyU2paaGY2OXJ1emZIbnN0V3NwSFg5cVh4bTZZSWJ6Yk51czhlaGh2aG4rcE1kTVZMNXczcHpycWQwZERnc2JOM3FVLzhUeGZ1UEgrVSthd0QxbHdrK1R4NCtiUFgzcURIKy84K2NpMEo4bU81bnp3d2Yzanh3S1AzNzBTR2h3VUtWU3JyeCs3TWpoUTJFSEw2aVZyMFZGZFduWE92TFNSU3EvajR0TDBIa3pWMHpNa3h0Ly9YWGpyK3MzYjl6Z3ZuZjM3cHMzYjhKQ1E0SURBNElQQkhLSEJCM2dsc0wrdlh0dTM3d3AvY3JyVkg3Nk5JWVdqaDQrdEhYVHhwRytnOGYvTUZveldTNW14eGdHOXUwMWRFQi9DamlDSmozQm02aXJWeHE3MXpsMjVGRHlwNVkxZGZKRXo0N3R2MnpjaHZUcVZiV2JrS3c2NjcyMXZ4NnRXak13ajFWQUx2UEEzSG1Eekd5Q0xPME9tRm9IR2xzRUdKbUgyRHFlOC9SNmVmNmNxdVBFREhXc3djakc5YjlPK3VuSHFhbyswSTMvUk9XemdKVjVoWkxGcDAyZWlJWlNIcUt0aWVNUGg0Y2xwTm9wczdwMDRVSStFeU5iYzVPbEMzOSsrK2JOeXVWTGl6cll1bGV2N0Y2dE10cXE2T1phczJLNStyV3FGOHhuYVRBWWFFZWtKaU41Ly80OVh4Zk5uMnVVeWVEbTdGU2lzS05EWHJNaWR2a281elBKVmF0U2VYNDlHQktjM1dCQWVXa2tSU01VdmgvbW04MWdvRWRlTk11ZXVaeXJ5K1hJU0VkckMrdmNPUm1TclptSmpha3hOMlVIUzdPY0JzT1NCZk41aTM1RmMrMWJORFhML3AyMWlWRitzOXlXdWJKVHYzZTNMbFRZczNOSHQ0N3QzNzU5ZzVDb1ZxZHF4UWExYTZnamY2K0prVVlRd29salJ6SWJESC84dm9VeVZuamgzTGx6RVdjdlIxNXEwNnl4cTFNQm5seThjSjdINXlNaTd0eSsvVmtQMXVJMVFrVzdiKy9kUGRPNmJVQU8wd05tTmlGMmhVTHRDNGM2RkFteGNUeVF4NHBDcUwzeWhLK0J1U3lDOHpuY25EY3ZXWFNjVVZRV01HbFl1NGFSd1lCa0MrVzNraHVSMWFoUXRyUkxZZTJKY3R0YUl5bkVjZkw0TWFZdEVZc1dtRStyeGcxTXMyZStldm15R0UxUVFFQm9jTEFvNDhybHk2T0grOXFZbW93YU9nU1BFU1NYaXhZUTA1enBVMUZKNUtWTDE2OUZGYmExL21uTTl6aGlyMjZkSzVaeXhXSzJiOTFpbFR0bmo4NGRCL1RwTld6UUFPK2VubGV2WEpiZUdUK0MrMjNkV21kN216N2R1Lzd4KzlhQWZYdVJvNzJsNmFybHk1NDllL1kwSnFaS0diY0J2WHRTZmhRZC9malJvMWV2WG1xQms4THFYNVpQL1BFSDBBVUZVM2p4L0xsWTdlK2JOK1hNWk9qUXFzVzd0MjhWK2RTcDBiSlJmYjBISytDc3Vpd2ViSkkxTS9CQXVheHJVY1NZTjFkMkM2TnN1SWVUVFY0S0ZqbXpZbTFaRElZZVhUcUtjWC9XZzBXN3NWRlh3MHVVUnJ1b05pUi93ZUI4QlVKc25WQnRlTW15RjMwR0JPYTJDTW52aEhhVjUzYUYrTnlmTFhma0VGK0oyY0s2UDJrek1aR0J0bWpvd2YwbU52YlZ5eGRjcjErL2pqaDdoa2srZWhUOTZ1WExWK3IxL05rejFJUDA4NXNaMzc5L2o3R0s5MnRlQmNwcDVVSDkrbGliNUVMcnpSdlVLMWJRdnFsSDNkQ2dJRDNDQzdiVDljOXpaaUVSYkF0NzUzYktsOWZaUG4rSlFvNUY3R3p5bXhxRGZ2Um9reWNYa0FDYzRHMzhkUGJNYVZYV0NvcEluRU05RzlhdWtjWlJNSkt0VnE1MDh3YnU5RTVyWllvVm9kQzBYcDNtRFQzdTM3c25NVUxHa0JJcDR4T3cybFhMbDZvaFBGbU1IaWZPWVRCNGRtci83dDI3Um5Wck5xdnZydllWcndmbmFYNlRnQkRlN2RlengrSUY4M2RzM3diT2MyTnExSGR6THZUSDFpM2J0bXpHUmpmL3R2N0U4V05hVk1ySWc5VWY0aDQvQ25jckcyaHNHV0pmR09XbGFOZmNKc1RlNmZtSkU0cEJqWitBUm9Qek93V3JPdVlUYjk2ZnhmanFqK01VbGFqWXFHY1pNdGJLcFV2V3FGaFdtWjR5ZWdYNnhvd1labW1VTGViSkU1bXpkcFV0WGhUWjZVRnkxNTkvMUs5VjgvVEprNks1bGN1V3RtbldDTlhpbE5sVWN3WU11clJ0amFUYU5XL1NvM01Id0ZaRUxONS8rOVpOd2hzS0p1Z2VQM1lVbkJnNVpCQW8xNzFqK3pJdVJjNmNQb1drNmxXdm9pSkJKSzBSclFWalJkQU1Bemd4eVdJSUNnd1E0bjM3MWkzSGZKWU1ZTmdnbjJFRGZUQ3ZtaFhMRGgvazQ5dmZteWVQb2g5cUNpYWMzN3A1a3dFZytueDVjaEUrUUE2K2FvcmY4T3Nhd3NyZTNidEE4c2J1dFRVRlMyVFp0M3VYOFhjR0IwdFQ3SWtvUUVkSk9uTWYzTjhicVg1VkRFNU5oeEp4MzRpdTNmZG5NOUZyTjhnOGY2aGprZWVuRlBrbXFoMUhUWnkwUDN0dThlT1FmSTdvR0ZjT01ESjd0SHUzMUVsRDVYbTRmOC91d1AzNzlFTXA3dVFBczBoUHIzYitzWjJhWXViaWdodlhyN00xejRPeC8vajlTQ3IwN05ySkxNZDNQcjI5VUJzQ0xXSnZnL24zN2RFTnlFVlZSTk9UeDQrTDIrbGpjQ2FEQWZXM2E5RlVuSzlUbTViWUJ6R0M0VkZBdm9JUVpqbXlIRDE4V0l2aXZNNEFsaTllbE5jNEJ5QXNJM3h3L3o3aVhycHdBYzZLd3ZEN1BwNWRLYU5MbkR2dVhaeTRFVFVmUG5oZ2IyRnFralVUQUZEWTFzck9Jbzl4WmdNRHVIUDdGbDRvWXhQQ2tjYURSWHFFajJkUG40YUZCSnRreWJScHd6cktqeDgvaHQ5QkdvNkVoN2RyM2hSbjRQVkRCdzlDSGhuODI3ZHZQeHVERTFWZmViUjNUNEN4dVFDdnB0MkRoWXU5T0hOYU5LY29USzE1emM5dmYzYVRZQUJjMFhFQmtEekl3dlpJeGFyeHIxNUp1cXdQSkFTZUgwWU04L1h4N3VmbDZlM1Z2VjlQVC93TWkvYW9VZFc3UjNla3d4UGw5dkwwNmVVMXlMczNaRXB6QXBFVW9hNlBaN2RKNDhieXZHK1A3bldyVmRZTXd0a2gvN0pGQzZTTW8wQmt6a1djMFlpMHVPQ3BFeWRtVFBXYlBjM2ZiOEpQZURCcW51ay9CY1lIMEJFak1SMFFudGQzNy9pVGtFYVkxMUl5NlIyT0RUTm81RjRMSHVUVnBXUEVtVE91VGc3NHVubk9yTnpZQjVxelVNdm9NdUwwYWMyOFlsKy9KbFN2WExZRWN6VE5tYU56bTVaclYvNnlhZjA2Q0FUWUErb21xZTF6TmFoZEhaRFhGS3ozalhObnoyQVdlRGxsRWdIWUlzaG5tdjA3cTl3NTRKN3dFdE5zbVRFZ2VnOExDY2s0QnF2NGpFcVNUalZ0RVdpU04xamlybDBoZEhiUXVmakxjeEVwMmxXV09PTGxreWZYL2YwRGNwcGlCQktQQVdySTl0MDFhelZUMEJUODVNbmo2dVVWUGxXcFZBbElMOENDQitEQjFjdVhxVmErVEpVeUpYa3VOejhWYzdUMzZkMVRuK29JVUV0STVuTklmMi9MWE5tZ3dVaVpHNGNvNnBEZnRSRHgxYUdZb3gxVFBYUHFsQmEvSlVETW1ESzVpWHR0V0F4aGt2cDBoTHR3SS9INk5hc1hzTEpnYlBTMWFQNDhSMnRMT0lHNkdKSW8zZUdhWUNQbVNGTFhwbWxqMmo5MjVFaWgvTmFMZjU1MzcrNGRYSllaWWFPVVNhVndZbjJPcHlVMjZOSXlWdzdHZkNVeVVwNFFNakVzWDU5K2I5UzhIQVduZUhEOFJ3K1dKUUVDUko1c21ZRXhlQlkwaFFnU0duUUFQOFpyRHdZSFVjQjM2OWVzQm5WNC92eTVMT044b21CRnVTcTNlaFY1S2NqS0xqaWZvK2E3WWM2dXJ5NWVTSW1zaVlreVdER3RKSlVtWEo4K2ZYK09QQ2wrYk90RUtuVzZSV3Z5cThSUFUwa3Q1RWhDSEg0dzFEUjdsdlZyVml0b2YrWEtXNVZHS3I5KytLQkpSSnNoVDNidjNGRzBnRzNWc3FYcVZxMzArdFVyaElKeHJGKzcrdGZWSzRuSHNPTGUzYnVzVzdPSys2Y3hvOERTczZvUGlZTEZPRUJnbExwdnorNHRHMy9EZ3pFZ3d0dmNHZE1SM0xtelo4bUpRV2J5Yko4K1BldFVyYVM1cjlyNzMyTkhqY2lWeVlDRG5qMTFDdC9GbFk4ZlBlcGdaVTVRV0xabzRaSUZQME95NnRlcUJ1cFE1blBycHQrMGlTdFpRRUxDcVJQSE1lZ2lkdFk0SEJPNWUrZTJ6SEhOeWhVRVlEUk56WG8xcXFEZ0pHWFo1NzErQ1lGcUY4NmZod3k2RkxETGt6WHo2Vk1uUnd3ZXhEVDFRWTJnYm1hVUE2cW96dzgvOVdDQ1FYTHluWldyVWp6U0RzNXNmYkJJOGRlWEkwVzdFbm9KdzVHK1E1TVZucVR3YmRIeFh6Tm1LSnpMcHFEaXgxYjJCd3NWZXhmOUVFVWxwWEk1NlU4c2l5c3VMbzdJZ1J3cFE2Y0wyK1gzSGRCZnJGNGp3RlRXWi9wSERoMGloNEVIRVhvSmhJUDc5YTFhMWkwMkZ2eDcvZVRKRXhJWWtwQlk5UUxIVUZYRW1SUUZpNGhwcDFYaittU3hQNHdjVGhUSElEeHFWaHM5ZkdqM2p1MEkyT2NqemxMWnhkRU8vQWRMRUJNOU1rak5OQmZNblUxQVFVTkJBZnNQaGdUQnQ1RXlHVUdwb29WTEZpbUk2M3ZVckZxallqbnlZM1FBbGxZcTdacTZKcFVVcjhxdFc0ZTJoVzN6Z1J6WUNuNVd1MHJGbUpnbjcrUGkrQW5lRnhmM2prSmo5MXF3TnBWdmZ0Q1dONTgralNHSVFMN290SGFWQ25nd0F4dnBPeGl6Z0tsUW1hU0RpbzNxMXJLMU1JMSsrREJGTCtrOUdESGdPRmUrSDZNbzJLRklvSW5Wd1VJdU9IU0tkbFZGdm9xOEdPWlNZcThoMjRVKzN1b3lpQXFob3VQcDAvZGx5WlhDdHkxc25wODRucXkrbUdaSlZqakZLTi9CNUgvQUR1WFJ3M3dSc1VRTzBxUlowL3dEOSszVkFwZ2U1SG00ZHVVS2NoaHNnclFoVDdaTWhEMm1qZHdMNXJNa0t5V1JzRExPS1FzT3dyYzFpS1pNOGpwMjFFaDRPMVlDWCt2ZjJ3c0ZvKy9aMDZaaUpWUVlQbmdnN29VUkNFR0xUeDI4b0RRY3dzbzRCL0lGZXloY3V4WVZkZlVxNEF4QWsxQVJ1WGZ0K0pPZ3ppczlPbldvVmFtY1dMT0F4MTZWQ2NQSUNOVWtXc0VIQXAzc2NPSTdtdjhSRVM1ZnVsU3Jjdm55cmk1RWdkMDcvK1IxRWlmaEJOOFpESmdSblFiczNTT1M0ZGVXalJwWTU4bDk5Y29WbmlBMDlMMXgvYTlwb3UrbkNsYWxjS0YzWDJYaHd0cmhVS255c2RlaWtsTzFTNTFuUjQraThxQzg5cUVGbkdITEVWMjZKY1RHcGl5TnFtcTd1V0RCQVZNcnVIZGdic3ZIQVlIWVlaS09TMnRzRmhSbHhET25UcUVNTUJwbE5vd2FPbGlVRVJNVDQyUmpoUitJVldwTGZVcm1GaGZIeEJiTm15TUtCcUtwUm5weit1UUpBaElzR20xZGlieDBMZW9xdUExTGlsQ3pXRzBoRERFUkFpZisrTVBjR2RQcVZLa0kwQTNvMDRzeEVKaS9IenBrK09BQjlIanA0Z1ZJRXo2azlhdlBBdTdldmkwS2hyNWlUS1J0d01hSXdRTWg0ZU5HanlLM3BuRmlNNVY3ZHVta0IzbTRJUUFPM1NVYkpIWVF0bVhoakp5Q0FaQU9FSGRRUEN3SmU2Vk5tTVR2bXpjeFprblNVRE9zaXRza2ErYWRmMnhUOGU4ZG53OGZQbkFyV3JobXhYSy9MRjBDWmd3ZDJGK0NkL3JOcFhRS05yWUl0bkk0VkxwODdGL1hQMUh3a2NPaFRzNGdzS3BnOHpOdE95UzhmcDB5ZTFWenR4WXR5bERCZWo4QVZYSjlsNmxydXphTUhqcFF2a1J4TitmQ0NsaTlCNjdpSkpXQ1c4NzA5OVA3a0xnK0xTeGZzb2pJalRKZzBlVkx1R2hoRytoYnNXUVJQUGxJZU5qOFdUT0pseWhlUkN3SzNyNWxDMGxSd3pvMXN4b01rTGloQTMzZ3REZzZYTFJMdXphUWM2cnQzYlVUQXR6VW84Nzc5L0Y2SFF0cElDOUMvY0Fwd2NMTzNJUXNqazduelpwUnBsaVI3VnUzbEhJdXRHckZNaXlBQ3IyN2R3VXdOUVV6Y2hnWnI2TmdLaXljTjVkSkFibFlPV2hSMGEwNExHL0MyREhnTUxiU3JINDlEYUsxUFM2ZVJKdzVoUmIzcUo0Tlh4SG5KajJEaUJnWkRBTHNFdnZTNzN0bUNOR0ZJZElFNExRUWZlRjhtRXZKZlptTnpubDZLVXZXYXBSTmZLK000SytaTS9kbk5mNGNSSXNuL2JadUxXYll5TDIyeE5xQjNuMHNqWTB1WGppdklSVjFHR0xIVnMwSko3ZHYzUkowL1pDNjEwYUZzYU9HZzBWZzNhS2Y1eUZIZVl0WGtQS21EZXZIamh5ZTJXQ3dNTXFLZkRFQ0pScWxialpRRGZuaTlNVUtGamlyaHVmVks1YlptT1hCVjZTUnExY3UyK2MxSnprRzh4Zk1tU1hOYXBJU0lnMkwzckp4ZzNBMGxGckF5dnpQYmIrWExsb1lkMFRCQkZkeVpkcUJxQk54TlRLc2NVWnBZZUc4T1R5QmM2RjFMRnRQbElqQmtpYnBTVmFpMnZ1WlV5ZHpmMmZZdTJ1SFZobXVSN1lHK1lmQUU2RkFhUWswMmhMZXB5U0xobEpJMWtxTlpBVkNzcHhkWDZzWm9hSmoxWlNlbnp4eGNjREFEK3BTNUVlU2hYYVZoUzJGU0tjbldlSkQ1eUxPNGxoMXExV0JRQkpMSm84Zlo1WTlDemtTVWRDelkvc1dEVHhxVkN4TENvRmIyT2Mxd3lvRnQ3Vk1OTzdkTzdBWGlJTm5rdjhOSHpTQUVJNFJQSDc4Q00wUmlnaUhrUmN2SXYyVnk1Y1NKckViL1c2U012Sm56ekVkbHdLMjVWeUwxcTVjQVp6d256UkJKQko1NldKUlJ3Y1hSNGZvNk9naFB0NG0yYklRWHpVSWtkY1pObksweXAwVExDVmxtdVkzQ2FaR0lBQUR3SDg2M2Z6YkJoR3VnNVdGc05uM3FZbWl0UFB3d1FNd1k4bUMrZm9kSVRXT0pPQ1I5SUtDV3padUlHdlJtZ3VTRk1FaVNRcHlaOG04YmN0bXloZ1pxUnJDcERXU0NJQnd4SkNCNElGYkVhZlZLNVlqRFcwZC9sTVdMV25TcFV0QmVXMkRVeGFablE2WVdvZnBkUHd4VFZLVmw2cmRXVUtoVTlJa2s3eW5tN2RLa3lZSjJZRmNQSDRVRGRGRlQwQWxnWWRVa3M5U1JRc2g4VFpORzNsN2RSOHpZdWlpK1hNN3RHcU9BaTZyK1NMWXpaeUhEdWh2VUpjRkdEMUFEYmhoMGVUMUVDc2IwMXdGOHByQnJmS2I1dWE1bzVVRk5XbE5OQ1RtQlhIRHJUMXFWT1VWYWxZb1dSd3ZsTldyUFR0MzJwbm5LV0p2SzRzYlR4NC9kbkcwaCtoUzBQWnJhZUhoZy9zbGl6Z1JOV21LaUVqc0pFYUFFNzhzVzBMdXk0dFlIck9vNEZZY1ZuRTRQRXkvWnlBc0R3OG02NFVFVUVhamFiWkRlRml0WENuNGdlYkI4dGF4bzBjSURjNE8rWWxOd0RnalozYUZiSzNIanhuOUtEcGFNeFRTWXJ5Rm42cFhLQXNmMUM5SEcvUkhOeWlkYk5TVVhGWmI2RGhnYmhQbVhBTEZmMXpvVU01MUpHb0pVb0NhQkg5YzZNaHBlbWZWcWpRTEhab2Z5TGpCSitqVjVjaExNTW1YTDErbTN5ckcvMlpPOVFmQnRDUUhwNFJOYUdrMGZKc2NmODB2SzBnNk1RZ0NHNTRCZnlHZm1UOTc1Z3gvdjhQaDRkb1JBN29tSktQZy9yMjhxRVBqUENmNXhndmgwbzhmUFZxeFpISFVGVVc3YjkrKzRUTTRNQURHOVBMRkMrMFFpQnhKZVA3ODJjZTg4K1pOVW1IdEszZytkK1owY25HNjJMZHJwM0JHTFpDTGtUMTcrcFJjYTgvT0hkcjZ0dnlrV2VGMHY4a2dyZW9QQ1pwWDRMSThKQjR0WDd3UTcwTEhCQ09FSnNJVWtCRDdvUDdxRlN0Z09WcjdHUzlWUnUvY0daREw3T05TcGJLWWxUK3NhSW1QaTFtcFM1WFhwMDRUUFArNFZHbHBlN2g4bGZnWEw5S2ZIdnJ5K1FjR21xRHU2cjFMWGZIUTFxMzBXMG15Sy9YMzExMmFFNlMvUHZjOGZRdGZycENnV2svNjU2SmFmU09pUW4zTGFhYVdrTHBVcHcraThicUgrbUdua1VtYVFwb3cvT2xtZ3lyQnM1MjZCdVEwQzdGUHR4d3RTNndxaGJzK1JWbWtGTjhOeVpmaXZvRzVMYUwvL0RQOVpnT2ZOMi84RlJZU2pIT2NQeGNoQXlYNWc2UnMzYlNST0txWnZNSjNMbDlldjNiTkFYV3pRVnoyM3IyN2lwZThlMGM3R0M4UlZ6dkJSSU5yVjYyRWNTaXJvWThmZzU5SER4MEtEUXFDellwMGFHM0RyMHJxS1dkVXNDUkpRQldUU2tnZ2dGR0JBaUZjT2FGeElCQTZvOEVHbjRBdE41ak1UMjlpU1N5dVE2bUNBZ011SzJjL2xGbmdsekExNGlJdG9LVHIxNjdKVGhHTlhMOFdGZjN3SVlNVUxKVk1EK3JMQUVSRFBDRis0NUdndCtqNHhZdm5FQUo5M25IenhvMTFxMWZoOTVKa3hxZWFGS05GU3VkVnIzdjY5T21sQ3hka1VzUmd1SWllU0greUg1eWtaa1J4ajZMRFM1VE9lTHRRWFVDSW1qQ1J1QnVTdWwwWW9tNFg3c3RpZkhYc2orbTNDMFhRdlQyNzFxdGVoZVJrNGR6WmZJVWlWUzd0UmlRanJKWXBYblNmdW96T05YM0s1RXFsU3BEbXFydThIaVNSYU02bmQ4OUY4K2VKWWFLNXRzMmFLQ3NQTDE2MGJ0SUkyamxzb0UrVnNxV2dWMGhXU1o5Y1hZaTFZNFlQMVZvYjR0TVA4dEtpb2NmVHB5bXRRV1dsdGNOaEIxczNhU2dibDFYS2xKVGtXTllvK0l5TmZUMTZtRzg5ZFpQWTI4c1RBdEdsYmVzbTllcjA2K2tKQ1pkMHRrSkpWenJ0MzZ0SHV4Wk5lV1hVMENIVEprOUtYWHoyWkxJOGJPeGVCeE9SSG1tZnBFajJKWW1YTkRpd2IrL3lyc1UycmxPV0tjanBQV3BVRTFYeFNld29YNkxZSU84K0hWbzJyMXV0OHAwN3Q5RXVrWUl4TXgyU1BWSytEV3ZYUU1TcWxpc05NK2VWZHMyYlNGUGFxU05EbXNOVGtoRzl2bkk1ektXRXN1RnYvM0hEbjlnY1hxTHNwVUZEQW5LWmg2VEczWlFOLzZ6R0YzMEdKZ3Y1U3FXdnFSUkQyVzd6NnRwSk9sWW9jVndjT2QrYWxTdEVFQ0ZCQjBvV0xnZzRId29MZzhpSVEzUDE3ZEd0WDY4ZXlxNW52NzU1c21VaDBLcW5zUTVDd1dqdys2RkR1bmRvcDRHU3BJWmNhR0xUaG5VVThET2FKY1RLOHo2ZVhRbVE2aDVxWDlQc1dVWEhlQ2V5bzdVUmd3ZVMxQXF0VFpPREV1bDlmYnhUVDVBMU9SQ3dUMmdtK1dpVk1tN2tTL0lUaklGM3gzMC9jc3pJWVhna054RVhpc0JQVE5iSnhnclNRQmwrTUVVOVVkU2dkbzJaL2xOU2M1N1RMbzUydVB2NWlMT04xVFNTcHVBS3hRbzZBQU5TaDNSRG1PUDN3M3oxRTRmb3lYNDVPY0txRmNzOU83WFhzbzhNVG5Tb2ZwZXk4ZkQyenUxVFRWdnN5NWI3Z0drK05YRlN6dWdFV3pzY01Na2JpdGI1cXFvMndNaWN4UGZHekZuSmNzSXlLZTBwVHRuYngwNUpRMkU2MC8wbVhZdTZXck5pT1dISXNyN1J1RzZ0VThlUFQ1MDBnVXhYT0JRQUNBdXJXcllVWHdmMDZZbVVHOWV0UFd1cS81WEl5STZ0Vy9EUW8yYlZzSkFRek9YTzdWdjhDb2lCVG56MTZ0eGh4WkpGRkVZT0dTVHBDZ21pZXBTSjF0eGtKR1JjRGV2VW5EVjFDdmpjdm1Vekh1SlZXQU40TU5KM3NMWm1McXNyaStmTnhVRWwvSGR0MXdhdTI2aE9UVFFYZGZVS3RGbVFsa3Q4em4vaStCS0ZIU0huM0VVZGJOZXZXU1ZtUVNRcVh0QUIrTUgxSVhmdjQrT0JGakFmVFFpejY5eTJGU0JFQ0doUXE3b2swQmdjR0tDcVVLbUdwZklLSFRYemNBOFBEWlhGdGRXL0xFZTE0QnpWbEhNSGp2WXhNVEZwRmdFTmFVL2NKUW5oVW5STXpidXJWaDJ0WEoza0o4RElURGwwWjI0VG5OYys1ZEJkVHJOZ213TG51blovY2ZaTW1vT1ZuM3F3c2gzVXg3UGJ5bVZMWDcxNnlheUlReWlia0tubGd1QXF3ZWFYcFlzeFErVko2cmEvZTdYSy9BbzdEZGk3R3g5dDZsRzNxWWU3ZDQvdTZtSnNmWUtUTE9nc21EdUhMQkFZNUhtdmJwMFJJb1U1TTZaMWF0TlNmNGhBV2dNWWNHNzhUOTB1ck1mQUJBOW1UNSthblB4QlMxNjFqYXhsQ3hjTTh1NHRSMDA2dG1xeGQvZE8rWldJVU5HdHVMYThJQk1aTzJvRWNZRjJLR3U3MnFBNmhBT2lBTXcyOFhDSDl0TkZ1ZUpGbzlTVlpMbXdlTlFQdlpDMURpNzBqUlZxRlU0Y080YUNlYkZ0OHlZeThRZjM3NE5Ecms0RlNFa1lEMWppcFR1UWxiRUhwLzZQSWZYWXJFb0ZFK1BlUFE0SWlQcnhwN1B0T2g2djQzR3NldTBUSG8zT2UvVzZ0V0RocTlTdFRVVzdxbW1rUHhnTk9hWUNzc2JQaEN0SnpHdFV0emFNQm5iUXBWMmJIcDA3cWlnWGc4djZUZmdKRjkrN2EyZVpZczdiMUpXbUxtMWJiVnF2b0M0d0RySTFWOWZ6c0Z3M1o2ZjllM2JmdjNzWDkwVXU1SCtLSzdScGlRZFR3T1JwYlFxdFhWVmFLKzFTWk51V3piS3g4L3ZtallMcXRDYjcvT1RadUF1U1FnMzY5VkYrK25uMnJGNWRPOGswNlhybVZMK2podzlGcWx1b1JNYzJ6UnBmUEgvKzdKblRwRWs4R1RGazRNUnhZNlV5YjVHelVVQ3Z1S2JDVEs5RkZiU3huakZsc3ZDRDZ1WExRZ2tKeHRBQzdKVitUeHc3V3RITjlVaDQyTEhEaDNIY2hyVnJnQ2pZQWZETzg2VUxGNGlsbG5JdXhNVGhua3k4U2IyNlVETTUrZ09HYXdjRnYvTGdlMUs2ZysvSlNSOFNNeno0L3JsVDc1SWh3SkpBVk8yVVpMSnlobVllczhLTkpvOGZwNUZEUWhkNDJMUytPMlNCT1loYjRBZk1YQ0lUR0xWdXpTcmg0VHYrMkE3ZGdFREprV2FwdkhqK1BNUWhEUHorZlZyelFvVXdvUDNxVm96aWtZc1duanB4UW1sTjFURlVnREs2Ui9GNHdKUUo0eldJbHBFSDdOMkR4WWdIQXhWRVZtcXVXTHBZNWtMeUNoOGtjUHFOSDBjN01OdnR2MitWeXJ6RnV4VDhKMDE0cXViMGNqNFMwNVRoWWZFdFZBbmc5M0lXLzliTkd3eTRaOWZPQTczN01EWnk4ZUdEQmpMK1ZvMGJRdFRGTzVXSmI5L1d0bG5qbG8wYWRHcmRVdFo2ZWZmbzRYRHNTYzQ1L2NQQjl3eitsU1IvWFpIRkVYV25saWZhWDFjK3BEOUgrWmsvQjZUL3A0SUdibHBpSUYvVEo1VDZDbW5LSDAwdG84cWFmWDZodGJTSDFwSStaUFNIZzdUVjBpVGxHVmFXUXBvSnBtOHR3MkZrbUY2bkgzYWFlZjN6UHh2K0UzOHVTdk92Q3UyL1JySklwQTFJdm1wTFNCb0dKT3JPRG1obHFhT1luKzV2Uy9yS24yc3RLVjFyMnQ5blV2YWhQM3l5QnBlb2V6ZjF6MFVKYVdhUmtMcHcvYkgzMUpIb1hVci9CeVFhMDViSjlHSlJoeEd2YjE4Ly9zOU5YS3FsaDlML2hvSy81dnJLeWwrdWsvNnZnbC8vYm5xRytPVi9JLzVMVjVyV3ZuSVdYMjdrYzVYLzJ4Nzg3ZnIyQi9CdjF6Y0ZmN3YrM2V0L0FPcXF3VUV1bHBPUUFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiI0NjU0NGQ1ZDhmNWQ0ZGI0ODlhY2VhODk3NzA3M2ZmZiIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsIm5vTWNHYVBlcm1pc3Npb25zV2l0aENsaWVudFBpbiI6ZmFsc2UsImxhcmdlQmxvYnMiOmZhbHNlLCJ1dkJpb0Vucm9sbCI6ZmFsc2UsImF1dGhuckNmZyI6ZmFsc2UsInV2QWNmZyI6ZmFsc2UsImNyZWRNZ210Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOmZhbHNlLCJtYWtlQ3JlZFV2Tm90UnFkIjpmYWxzZX0sIm1heE1zZ1NpemUiOjEwMjQsInBpblV2QXV0aFByb3RvY29scyI6WzEsMl0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6MTYsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4LCJ0cmFuc3BvcnRzIjpbIm5mYyJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XSwibWluUElOTGVuZ3RoIjo0LCJmaXJtd2FyZVZlcnNpb24iOjEsInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjo2fX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMTEtMDQiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJGb29uZ3RvbmUgRklETyBBdXRoZW50aWNhdG9yIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNDExMDQwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMS0wNCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTAyLTI2In0seyJhYWlkIjoiNGU0ZSM0MDExIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWlkIjoiNGU0ZSM0MDExIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlNhbXN1bmcgUGFzcyJ9LCJkZXNjcmlwdGlvbiI6IlNhbXN1bmcgUGFzcyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyNTYsInByb3RvY29sRmFtaWx5IjoidWFmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX3N1cnJvZ2F0ZSJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCIsImJhRGVzYyI6eyJzZWxmQXR0ZXN0ZWRGUlIiOjAuMCwic2VsZkF0dGVzdGVkRkFSIjowLjAsImlBUEFSVGhyZXNob2xkIjowLjAsIm1heFRlbXBsYXRlcyI6MCwibWF4UmV0cmllcyI6NSwiYmxvY2tTbG93ZG93biI6MzB9fV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwidGVlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbInNvZnR3YXJlIl0sImF0dGFjaG1lbnRIaW50IjpbImludGVybmFsIl0sInRjRGlzcGxheSI6WyJhbnkiXSwidGNEaXNwbGF5Q29udGVudFR5cGUiOiJ0ZXh0L3BsYWluIiwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBRWdBQUFCSUNBWUFBQUJWN2JOSEFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBeVJwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFBRHcvZUhCaFkydGxkQ0JpWldkcGJqMGk3N3UvSWlCcFpEMGlWelZOTUUxd1EyVm9hVWg2Y21WVGVrNVVZM3ByWXpsa0lqOCtJRHg0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJa0ZrYjJKbElGaE5VQ0JEYjNKbElEVXVNeTFqTURFeElEWTJMakUwTlRZMk1Td2dNakF4TWk4d01pOHdOaTB4TkRvMU5qb3lOeUFnSUNBZ0lDQWdJajRnUEhKa1pqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWo0Z1BISmtaanBFWlhOamNtbHdkR2x2YmlCeVpHWTZZV0p2ZFhROUlpSWdlRzFzYm5NNmVHMXdQU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2SWlCNGJXeHVjenA0YlhCTlRUMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzk0WVhBdk1TNHdMMjF0THlJZ2VHMXNibk02YzNSU1pXWTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl6Vkhsd1pTOVNaWE52ZFhKalpWSmxaaU1pSUhodGNEcERjbVZoZEc5eVZHOXZiRDBpUVdSdlltVWdVR2h2ZEc5emFHOXdJRU5UTmlBb1RXRmphVzUwYjNOb0tTSWdlRzF3VFUwNlNXNXpkR0Z1WTJWSlJEMGllRzF3TG1scFpEcEJSa0l6TVRJMlJrRTRNVUl4TVVVMU9VSXhNVVpGTmpoQ1JqSTNNakl5TkNJZ2VHMXdUVTA2Ukc5amRXMWxiblJKUkQwaWVHMXdMbVJwWkRwQlJrSXpNVEkzTUVFNE1VSXhNVVUxT1VJeE1VWkZOamhDUmpJM01qSXlOQ0krSUR4NGJYQk5UVHBFWlhKcGRtVmtSbkp2YlNCemRGSmxaanBwYm5OMFlXNWpaVWxFUFNKNGJYQXVhV2xrT2tGR1FqTXhNalpFUVRneFFqRXhSVFU1UWpFeFJrVTJPRUpHTWpjeU1qSTBJaUJ6ZEZKbFpqcGtiMk4xYldWdWRFbEVQU0o0YlhBdVpHbGtPa0ZHUWpNeE1qWkZRVGd4UWpFeFJUVTVRakV4UmtVMk9FSkdNamN5TWpJMElpOCtJRHd2Y21SbU9rUmxjMk55YVhCMGFXOXVQaUE4TDNKa1pqcFNSRVkrSUR3dmVEcDRiWEJ0WlhSaFBpQThQM2h3WVdOclpYUWdaVzVrUFNKeUlqOCtwRC96QmdBQURCQkpSRUZVZU5yc1hBVndGTXNXN1VDQ0U0SUZDdzRCQ2dudUJDbjhRM0FLZDNkM0x5Z2NDcWR3VCtIdXJvVUdKMEJ3S2R6ZDByOVBGM2VxcDNmMmtmZDQyZDN3OWxSMVlMdDdabWZ1M0w1eWJzOTZNRE9TaTlaQnRQK0psb245dDNCRHRLMml6UlR0c2RXRTJxSzlFbzMveDl1cm43SXdJY2d0R0pzR21UQVAwUktMOWxTMGFNd05GZUdpK1VZWGZ3YUxGdWlXaHcyZ1BEL3c1NXBvL201NVdPSTZCUFJSdE5odVdWamlreWZVeUZuZm5qWnRXbGF5WkVtV0xWczI1dS92eitMRWljTTQ1K3pidDIvc3hvMGJMRFEwbEIwOWVsVCs2eVJJMmJ4eHRJZW9XN2N1MzdsekovL3g0d2VQQ0k0ZE84WmJ0bXpwREUvMnhxRUNxbHk1TXI5NDhTTC9wM2o4K0RGdjBhS0ZRd1hrOFZOQTNwR3BwNTZlbm16Tm1qV3NXclZxOHZQcjE2L1orZlBuMmZIang5blZxMWRsZS9EZ0FYdjM3aDE3OCtZTjgvYjJadkhpeFdNcFU2WmtPWExrWUZtelptWEZpaFZqeFlzWGw4ZGpmbEJRRUFzTEM0dnNKZlkyMGpXb2RPblMvTldyVjFJRFpzNmN5Y1ZOV3M2TEhUczI5L1B6NDBJWVBGMjZkRndJeUhKZStmTGwrYjU5Ky9qdDI3ZDVvMGFOdUllSFI5UmNZdEdpUmVNVktsVGd1M2J0NHIxNjlUS05wVTZkbXJkcDA0YXZXcldLbnp0M2pndk5zVnhTd2xoem9TMTg2OWF0dkUrZlBqeDc5dXpHT1JJbFNzUjc5T2pCczJUSkVwbENpandCeFkwYmx4Y3BVc1Q0bkNCQkFubVRaODZjNGI4RGFNNllNV040aWhRcC9nd2pqU2M5ZWZKay92bno1MS9lL1B2Mzc3bXdRZnpseTVjUjhuQWJObXpnQlFzV2pMcEd1bCsvZm16SWtDRk0yQmViTWNRMmh3NGRZaGN1WEdBaElTRk1lQ2dtQk1UQ3c4TmxpeDgvUGt1Y09ERUxDQWlRY1ZKZ1lDQVRHbW41UGNIQndXemd3SUZNYUZmVU1OTGlocmp3VURaUEhKb3hhZElrWHFoUW9YOTAza3laTWtsN1poVXFmUHo0a1RkczJORDFOVWdFZ1d6WnNtWE15OHZMNklOYkh6ZHVISnM5ZXpZVEhzM29UNUlrQ1JOTFJFYlVHVEprWUw2K3ZySmZHSGlwVFhmdTNKSHVYeGh5ZHZueVpkUDNORzNhbEhYdjNsMXFtQXFFQmZwY2w5R2dKazJhMkR6WnBVdVhtZ3lxV0RhOGE5ZXVmUC8rL2Z6VHAwOFJOczRpOWVDelpzMlNibDc5enQ2OWU1dnNHNXlBU3hwcHVHNGQ0aWtiNDlHalIrZkNIbkdoVGZ4M2dkQ2dkZXZXeHJrUk54MDhlTkFZUjNqaGNnSmF2bnk1S1NYSWx5K2ZNVmE0Y0dFdTFON3lacDg4ZWNKUG5EakJ4YkxrRXlkTzVDTkhqdVJqeDQ3bEN4WXM0THQzNytZM2I5NjBLeWljVTBUbnh2ZmdPT0Q2OWV1dUphQmt5WklaRncwM0xXeUtNUVl0MHZIMjdWcytaY29VWHJac1dic1JzOXB5NXN6SnUzWHJ4b1hYc3hUVXdvVUxqYmxZdmtEdDJyVmRSMERDeFJvWG16dDNicU1ma2E0T3BCdjJncnhVcVZMSnVLWk1tVEk4VDU0OFBHblNwRFp6TUk3NFI0Y0lGK1R4bUlPbExISTlIaU5HRE5jUWtQQTI4aUpWU2dKUFhNV1hMMTk0alJvMVRNY2g5MnJmdnIxTU9lN2Z2eS9ucUlEeEZWNk1yMTI3bG5mczJKRUxyMmNjQysxREdxTGkrZlBuUEhQbXpISWNHb1EweE9rQ3lwVXJsN3c0MkF0NzNndzJDVW1vR3MvQXh2d2RMd1pnUG82RFVhWnpZWG5wc1JZY0JzWmNRb09nN3JBN3lNYnhHY3RETjhMcURmWHYzMThtb2ZZQUxhQm1EemkrYjkrK3BuT3FlUGp3SVk4Vks1YnpiVkRNbURHbDUwSGtqTThpMk9OZnYzNDFMUkgwVVhhL2NlTkdtNXZGMHBveFl3YXZWS2tTanhNbmp1bjh5TktSOEk0ZlAxNG1xVHEyYjk5dWFFbVhMbDFNWTRpem5DNGdWWVh4eFBTYktGcTBxREcrWjg4ZUc4M3ExS21URkJ6TlNaTW1EVy9Rb0lHME4yQU85WlFFTmc3YW9lTGF0V3M4WWNLRWNoeFp2Z3FSQzdwT0hIVDQ4R0hUeGVGRzdkbUpMVnUyeUlpYXhtdldyR21adTFHR3YzTGxTc1BnSXVCY3ZIaXhhUTVpSlZyaTRKOVUvS2FoL25jRXRHYk5HdE5Gd2MzYXN3L3dXT3F4TUxvUkJaYWFtbUxveEQ0eGt5b0JoM2pMYVFMeThmR1Jkc0JlMEZhblRoM1QyTkdqUjAzTFUwMFBDRWVPSE9IejVzMlRRb2Q5MGdGTnBlQ3laOCtlcGpHUkVNditxbFdybXV5VTB3UWtzblBUQmU3WXNjTVlLMUdpaEkweFZvMnd6aXhDTUdxUVNhMWt5Wkw4eXBVcnBybGhZV0dHbDlLdkFXRUgraW5xUG52MnJQTUV0SGZ2WHVQQzRLR29IOFM4eWdqQ215SDJvWEY0R0JYejU4ODN4VldJdGxldlhzMkhEUnZHdmJ5OFpQKzBhZE5NeDhCbTBUSEl2UWlob2FGR3JBVWdPVllkZ1VNRmhQZ0hRSUpKZllpRHdzUERUVGNUR0Job2pLOWJ0ODQwQmcyZ01kMExFVkM5c0xKbjA2ZFBsLzA1Y3VRdzlkZXFWVXYybnp4NVVuNVdIWUxEQklRWWFNS0VDYnhjdVhKR1g3Tm16V3h1cm1MRmlzYjRuRGx6VEdOejU4NDF4cEROL3hXYU4yOHU1MEVvS29vVksyWmo3Skdlb0E5aEFrRHBoME1GcEtzdHFGUWQxYXRYdDZzZDZwS0VjVlZ4K3ZScHVienUzcjFyNmtjQ2kvbElSQW4zN3QyVGZkN2UzcWE1eU5YUUh4SVNJdTJZMDl4OGdRSUY1QTNwc1V1cFVxV01PWU1HRGJKMHlXajE2OWMzamNHenFSVVIxWk1oL2FBa1Z3WE9vV3NoakQ3NkdqZHViTkppaHdwSXR3bEVlV2JNbU5HWU0zVG9VQnRhQXNzVFkzbno1aldOZ1l6WHZ3UHB4dE9uVDQwNTBGVDBUNTA2MVpSN3FZYVpBTG9FeDZkUG45NDVBb0s3VllHTFZzZlZtd0J1M2JyRjQ4ZVBMOGNDQWdKTTlDdksweGpEY3NET0Q0UU1xS2ZCNk1NSnFBa3VhQTk0TjlWVFloN09xektYQ0NhZG1tcUE0Z0RBeTJEbmhybzA5QUFTT1JQeE9UQ3MzNzkvTjQzREUySE1DcytlUFRNSkNKNFFjeEVlRUxadDJ5YjdrSDhSUU9VNlZVRHdZb2g2MWRvNG90aEhqeDdaMkJ4S2JER3Vod0dVdDhIUVJwVFVSOUFKQnBFQWdlTWNXRllFYUpnVksrbVVaQldHMHlxdlFxSkpjOEFlNnFDWWhScUVCTUt0YmR1Mk1nelFvMmpDNE1HRDVYeDRNYjJhUVF3bkFDUHRWQUhCSUVPVHJOaEJkVmVISGdZZ3VpWlgvS3RXcFVvVm1UTG9teGd3aGdSVzVidlJ0MmpSSXFOdjlPalJ6aE1RMU5kcWt3R1NVbFFpU0xQMGFnUzhEcEZzeEI5RCsrQUJZY2dSNXlCTzBubG9uVGJSY3o2RUcraERVR2xGdXpoY1FQQWs0SnNKQ095dzc0ZkdzVXhRTTllVFVteU53VGlXRjR6M1h3SEdtVklLTkN4Wk5URUd5VVlBellFK2xKMElhZ25LS1VzTTZveGdEdmFGK2hEaTZ3UWFBSU5PYzBDeld1SEZpeGNtMmxiMWdxaS80VmgvZjMvVFBpVGF3UWJRSEdJdG5jNG9xb2tnYWxhYk4yKzJ1VGw0SmtvNHJSSlczSHlIRGgzazB3YU40ZXZyeTRPQ2dtUmRYd1c4SThWUmFsUHRFeVhHd1ByMTYxMkRjb1VOd2RLeEF1aFJlcXA2aVJwQWp2YXJQWTRvNVJDUW9ldHpzTndJdEFVR2RneWN0MHNJNk5TcFV6YUNPWERnZ0x3NWxYMUVNS2VpWGJ0MnhqaU1LYmhxQkhmUU1MWG1qaVdsN3VDQThWYS9IelF1Z1d4ZzU4NmRUUnlVVXdVRVFhaUV2TzYrNjlXcloxT05RQTJkT0dTVmVGTUIwa3pkZks3Vy85V0tDaGx1Z1BaUlI2VG03ekFCZ2ZvWU1HQ0FrUzVRQTkyaGwzdUFWcTFhR1RkaGI5Y0hBVXVTemdmcXdpckFSR21hb0c2TGNjbE5uS0Eva0Z4YVJjQXdwclRwRWhHelhsdEhXSUF5RFphSENoUVZkVUlPY1pNVmhRdHRkVmtCWVlPM0ZVQlhZS2NIelFQRHArNzdRVzVHWkpnVmxVTGNUc3FVS1kwOERwdW9hSzc2TUg2REhJdDhBY0dEcUlBbmdXQ29xRWR6OUxRRTBURHRvcWN0TEdpVTlDSXU4dlQwbEgwVTh5RGlwbUJWTmVDL3dmMDRab21oK29DY0tILysvS1orVkRwMENnUWJxYkQ3VE9XT0lBREVRZWhUNXlkUG5sejJnZnFnYXFwTzJDTkovWTBLaHVNM2t1TnBZcDhRWEw1VkFaRFNBTjNtMEc0UU5ZZkRUbjMwMFI0aTJDOThSb0JwVlNCd2FRRWh3OWM1SVpXdlZyZXU2RnYwcUd3TkQvZmh3d2REMDNTS2xrZ3pFaUlZaFNqektnSUlOSldHb0dvb09CeGFLbGFsWTZRV05BYWFnb0F5dEY0OFJGeEVLUVUwTkVxK3F6Rml4QWg1MDJydGpHaVNGU3RXMkNYV0VEbGI3ZEJRalR2WkxTU2tVZkp0SDN1N1llSFYxTndLV0xKa2lURUh5U2dLZndSS09JY1BIMjdhSVlJc2Z0T21UYVk4TDhvS0NHNGU5S2tWMU1vRGRyOWV1blRKcGc2bThqdWtVUWcwLzZWMHd2a0N3cVluSko5cWdSRXVIS1VmTlFKWDh6VjRLL0p5cWthaGZQM0h2dFJMWGtzdFNZUC9nVmZUK1dyYXhrTENnZkFRWGYvUmJ6MWJlYnRSbzBiWkZCZUpydzRPRHBhVldBaFYzK0RweUxlZTM0a1d6MWx2N3VQTlptRndtWitmSC9QeDhXRWkrNWR2UCtQL0lpU1Fiemc3RWUvZFAwM3hpNSttd0UvaTNIZkx3Uzd1UTBCcjNYS3dpN1h1SDFpeUQva0RTeERLQzlGcXVPVmhneG8vWldQQS9TTnZGai95NXFGSnpmMHpnZHJQQlA1ZmdBRUFiTWozMHczdnN4Y0FBQUFBU1VWT1JLNUNZSUk9Iiwic3VwcG9ydGVkRXh0ZW5zaW9ucyI6W3siaWQiOiJmaWRvLnVhZi5hbmRyb2lkLmtleV9hdHRlc3RhdGlvbiIsImRhdGEiOiJ7XCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXNcIjpbXCJNSUlDaXpDQ0FqS2dBd0lCQWdJSkFLSUZudEVPUTF0WE1Bb0dDQ3FHU000OUJBTUNNSUdZTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNBd0tRMkZzYVdadmNtNXBZVEVXTUJRR0ExVUVCd3dOVFc5MWJuUmhhVzRnVm1sbGR6RVZNQk1HQTFVRUNnd01SMjl2WjJ4bExDQkpibU11TVJBd0RnWURWUVFMREFkQmJtUnliMmxrTVRNd01RWURWUVFERENwQmJtUnliMmxrSUV0bGVYTjBiM0psSUZOdlpuUjNZWEpsSUVGMGRHVnpkR0YwYVc5dUlGSnZiM1F3SGhjTk1UWXdNVEV4TURBME16VXdXaGNOTXpZd01UQTJNREEwTXpVd1dqQ0JtREVMTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnTUNrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY01EVTF2ZFc1MFlXbHVJRlpwWlhjeEZUQVRCZ05WQkFvTURFZHZiMmRzWlN3Z1NXNWpMakVRTUE0R0ExVUVDd3dIUVc1a2NtOXBaREV6TURFR0ExVUVBd3dxUVc1a2NtOXBaQ0JMWlhsemRHOXlaU0JUYjJaMGQyRnlaU0JCZEhSbGMzUmhkR2x2YmlCU2IyOTBNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUU3bDFleCtIQTIyMERwbjdtdGh2c1RXcGRhbWd1RC85L1NRNTlkeDlFSW0yOXNhLzZGc3ZIcmNWMzBsYWNxcmV3TFZRQlhUNURLeXFPMTA3c1NIVkJwS05qTUdFd0hRWURWUjBPQkJZRUZNaXQ2WGRNUmNPanp3MFdFT1I1UXpvaFdqRFBNQjhHQTFVZEl3UVlNQmFBRk1pdDZYZE1SY09qencwV0VPUjVRem9oV2pEUE1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0RnWURWUjBQQVFIL0JBUURBZ0tFTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSURVaG8rK0xORVllbk5WZzh4MVlpU0JxM0tObFFmWU5uczZLR1l4bVNHQjdBaUJOQy9OUjJUQjhmVnZhTlRRZHFFY2JZNldGWlR5dFR5U241MDJ2UVgzeHZ3PT1cIl19IiwiZmFpbF9pZl91bmtub3duIjpmYWxzZX1dfSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiTk9UX0ZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMTgtMDUtMTkifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDE4LTA1LTE5In0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiM2MyMmI1OTdmMzBlODY4OWVkMjQ2MGY5ZGZlOTliNzUxMDMyOTJmNiJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyIzYzIyYjU5N2YzMGU4Njg5ZWQyNDYwZjlkZmU5OWI3NTEwMzI5MmY2Il0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJSZWRzeXMgVTJGIEF1dGhlbnRpY2F0b3IifSwiZGVzY3JpcHRpb24iOiJSZWRzeXMgVTJGIEF1dGhlbnRpY2F0b3IiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImF0dGFjaG1lbnRIaW50IjpbIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlEQWpDQ0FxaWdBd0lCQWdJSkFNRVZzcGVFc0dpS01Bb0dDQ3FHU000OUJBTUNNSUhiTVFzd0NRWURWUVFHRXdKRlV6RWNNQm9HQTFVRUNBd1RRMjl0ZFc1cFpHRmtJR1JsSUUxaFpISnBaREVQTUEwR0ExVUVCd3dHVFdGa2NtbGtNUzB3S3dZRFZRUUtEQ1JTWldSemVYTWdVMlZ5ZG1samFXOXpJR1JsSUZCeWIyTmxjMkZ0YVdWdWRHOGdVMHd4SXpBaEJnTlZCQXNNR2xOdmJIVmphVzl1WlhNZ1EyaHBjQ0I1SUZSaGNtcGxkR0Z6TVE4d0RRWURWUVFEREFaU1pXUnplWE14T0RBMkJna3Foa2lHOXcwQkNRRVdLWFZ6ZFdkbGJpNVRiMngxWTJsdmJtVnpRMGhKVUhsa1pVVnRhWE5wYjI1QWNtVmtjM2x6TG1Wek1CNFhEVEU0TVRBeE1UQTRNRFkxTTFvWERUSXpNVEF4TURBNE1EWTFNMW93Z2RzeEN6QUpCZ05WQkFZVEFrVlRNUnd3R2dZRFZRUUlEQk5EYjIxMWJtbGtZV1FnWkdVZ1RXRmtjbWxrTVE4d0RRWURWUVFIREFaTllXUnlhV1F4TFRBckJnTlZCQW9NSkZKbFpITjVjeUJUWlhKMmFXTnBiM01nWkdVZ1VISnZZMlZ6WVcxcFpXNTBieUJUVERFak1DRUdBMVVFQ3d3YVUyOXNkV05wYjI1bGN5QkRhR2x3SUhrZ1ZHRnlhbVYwWVhNeER6QU5CZ05WQkFNTUJsSmxaSE41Y3pFNE1EWUdDU3FHU0liM0RRRUpBUllwZFhOMVoyVnVMbE52YkhWamFXOXVaWE5EU0VsUWVXUmxSVzFwYzJsdmJrQnlaV1J6ZVhNdVpYTXdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUWdHdW1TZDViZDlwd0xzMzJYV1NOYkhGQ1FkR2drQ0JMdVNISm5lWFFjRUtDQldSQzJ5TTBNYS9qZXl2V1M4WlRoRWhOb1R1b0cwSEtER3dDL3BmQ0VvMU13VVRBZEJnTlZIUTRFRmdRVVBDSzFsL01PaG9udEpHRDUzK21iZFJBeWt2WXdId1lEVlIwakJCZ3dGb0FVUENLMWwvTU9ob250SkdENTMrbWJkUkF5a3ZZd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBS0JnZ3Foa2pPUFFRREFnTklBREJGQWlCWmVEOWo2b1VLTVowa1cwbURDbkhxS3BsWmJXZVRTeEd6dlNSZjlKc2Y4d0loQU1mOGQxMHlseklZdWxmaXUwT250NXNJVzUvUkVtZTBWd1B4OU9iaExBVHoiXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBTWdBQUFESUNBWUFBQUN0V0s2ZUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFEc1FBQUE3RUFaVXJEaHNBQUNidVNVUkJWSGhlN1owSmdCMVZtYmJmdXZ2dDduUzZPM3NDSkFJU0FoRlJCQlVFbE1WQVlDS1JnWUNKRWNLd2lvem9ET3FBcUd3am03SW9obVg0ZFlSQlFCSFpRUWlLd0k4Q2lvSVFJQ3lKQ2RsN1grNWFOZTk3NnQ3TzdhUlRoSkEwdi83Zms1eGJkYXRPblRwVjliM25mTitwcXR0ZVFHQVl4cURFS2xQRE1BYkJCR0lZRVpoQURDTUNFNGhoUkdBQ01Zd0lUQ0NHRVlFSnhEQWlNSUVZUmdRbUVNT0l3QVJpR0JHWVFBd2pBaE9JWVVSZ0FqR01DRXdnaGhHQkNjUXdJakNCR0VZRUpoRERpTUFFWWhnUm1FQU1Jd0lUaUdGRVlBSXhqQWhNSUlZUmdRbkVNQ0l3Z1JoR0JDWVF3NGpBQkdJWUVaaEFEQ01DRTRoaFJHQUNNWXdJVENDR0VZRUp4REFpTUlFWVJnUW1FTU9Jd0FSaUdCR1lRQXdqQWhPSVlVUmdBakdNQ0V3Z2hoR0JDY1F3SWpDQkdFWUVKaEREaU1BRVloZ1JtRUFNSXdJVGlHRkVZQUl4akFoTUlJWVJnUW5FTUNJd2dSaEdCQ1lRdzRqQUJHSVlFWmhBRENNQ0U0aGhSR0FDTVl3SVRDQ0dFWUVKeERBaU1JRVlSZ1FtRU1PSXdBUmlHQkdZUUF3akFoT0lZVVJnQWpHTUNFd2doaEdCQ2NRd0lqQ0JHRVlFSmhERGlNQUVZaGdSbUVBTUl3SVRpR0ZFWUFJeGpBaE1JSVlSZ1FuRU1DSXdnUmhHQkY1QUt2TmJGQlZhWm9xN2I0RFBWQzdsRUxTdlF0QzVERjUzQjN5ZlMrTnh4REoxaU5lUFFibDVEQkxaNGYycTFmYWFWMUo1SHBOaERDVmJUQ0JWQTY1T2M0dWZnZi9YUjVCNFpRRzh4YzhoV0xNS3NUeU5uWXFKSlppUFZsODFlTlhBbHhxS1RGeFhiRzZBdDgydUNIYmNENWh5RUJKVFA2M0ZEZ2t0eHMrQW55WVlZMnV6eFFTUzYxMEovL0ZiVUhycVZpUmVlQXJKSEEyZlZwM0tjbVdta3VJeENvUEtDSHdhZDZXZjhLUU1FbEE1VG1FQmduSTVYRXpCbEF2cWVaaTIzUkhCZmljZ2Z1QXBpR2VhK2dWakdGdVRMU0tRc2grZ3VPcFZwRnNtVUJIMWJwa0tEWHBiVVhqaldYalAzUWI4NFVZaytuekU2N2dpbG9ZWHB3SWtoa28zNE5YVXdzMjZhbkc5bjFRbEtSYXFoVDFRdVJ2b203d2JFcDg1RDZrUGYwWTVFV1AzNDdOcnFycHpockdsMkdveFNKV0sxK1RpaWZKTEM0Q2I1eURadmh4QlE0d0c3VkVndFJGR3Y5TVZmckpxRWc1bEFzL25PbFZWUGxhZWdxQlFpdWtVaWwvNEw5VHRNeWZzajlnenFieEszMlFZNzVxdExwRDFrWDMzTExnRW1kdStCbTlrUGNWRFg4eGoyOTlmamFwSXFsQWVicFVYOWpMc3JiVE1LYTVRUXJtVFBVcERNMkpmZmhDWkhmWjA2eXc2TWJZVW15d1ExNHJMTU45bCt4d0cyVUQzMHVlUnZHdzNwSm9TOER6MU1kVnFNSWRYTVhCWE5jMXp6eElHbHlzMmNTRzZCS0psekI0VWlpaXZwRkErL2xsa3p2aUYyeUxCM2dTdWR6S016ZWR0QkJMS29wenJSckhRaTB6amFHZDhXd0x0dExCb0FlTHpEMFNzSlNzSmNDRkw5eVFoMGk4U2ZWUkV3cXA2TW54TjZYSzVxbE1vWHRsbkhFU0hyU09QZkpHQ3Uyd0poVGVPZVVvSVlnbHp1WXpONW0xc3gwTytaeFhhZm5RcXNsdFFIQ0Ura2pzZWdQeGU4OWc3OU1GTDBPaVpnaVNybEtUTGxlRGVsSkpLeko3MDRhVW9DTTJudUl6Sll3b3l6TXZFdUIreEVVbWttcW1ZVThlajcvbUhVYVk0bktBTVl6TVp2QWZoa2hKdHNOVFhqdkxNWnNSLzJZRk10ckd5Y2t1aDNYcklsUXVJZnllTjVQQTYxU1pjcXQ3RDlTWk0vV2lkZWhEWGdSQVpQbWQ4Q3NyMUpCWDNxMGdobGNvb0xTa2hmL3B0cVAvb1VWd3ZkMHYvclM4eDNoa0RMWWFHNXZRaSt5d1g0YzFsOEx2SFpDUzN1RGhFYVB6cGVBcTVIZmFpblJmZ3g3bU1QVWpBYWNBZVE3MkdwbUZpM1ZLc0Y2ZFFUNUppUHZVMGxSN0hyVXRUUUhWTTlRa2tka2doUGY5bzlQM3hRV3BISW5LN000eDN4QUNCQkdxeCtiL0ErZnlwbzVEUXpiMWRQNzFWMjEzRjJ1a0orN0N6S0xrNzdCSUZVaEtIUk1McWNGazE2UzY4M0NvbFVDaWU4am14eVAxU1FVck1TS0VneXl3N3BoQy8vaENVVnk4T1JXSVk3NUFCVnFNMm5XYUgzT1dIb2I3WUFZOEdGd3dmNll4NGE2Rjlsckl0N3FFdEYzK29SbkYrU0F3SjlSTFZKTUV3VldJVEwwa2hKSk9jTWpoUFNSVE1vMTRsdy9YNm5rM0N6OGFRbkJoSDhaSkpiaitVRTQ5dmF4Nk44WTlHUlNDaDd5L3l6LzBhRFUvZUIyOFlQWGJhbWJkODBWYnRRV1M0c2Q3RkZBTU5QU1lSME1ncER1YzJjY2NCUlFJbmxJcEF1TjUzU1lKaXZxcmJsV1pKRW9lV1o5U3JzR3grOTdJcDFEVURmVGZQMHU1NG5DcmNNRFlOWi92cU5ZS2c2TnJXMHBVekVJeWhvVEZJbGwvdkwzcG9xN2U1NWJjZUNsdCtONUlWUTR3Q0FPTVF6WHVWYVl4VGx5Z1NyZmRja2lEa2NuRmVlUk9KU205Q0VXUW9PRTBWK3pkbGtYNzVOdVJiWDl5cVlqZis4UWp0aFlHNTd5WFIvZEMxcUMvazNJMXRyWkU3azE2K0Vya1ZyN2hzV3hMZDdGT3YxZGU2RUptZUpSUUhBeDY1VGdyUUpRclZ3UTN6TWhkdHZ0L1Zpbk03Q1NuT3VJUHpFbFdZdUkxaUZoZWJoS0p4SWtuUkRhTlFFaE5ZMXQwbk9EZkxNRFlWTjh3clExVXZrVDl4T09xVG5UUTJ1VGMwWWJiS0tBWG9hNXFFdW0rL0ZtN2dQdDg5RW9oS3k5ODZGYW44YTNUbmRFZGRBdUFldUtvNlZVNTZYcXlQRkJPS1NxNlkvb1hydFlDemVnNUxTNE15RStmZHMxdGNwYW5QQm9ETGl5dDc0WjI4QXFuNk1aVU5EU01hMTRQUWhGQjgvVTlJdFZFY05RWktwOFg1OGRtMjE5Rno2NmxiMk5YeVVQanRGNUh1L1N2aUtmVWVyQW8xRU9oR2gyckY1S2xYVUMraW9EMG05eXY4cmdFcG4zbXJjWWdlcTNmRHZacFMzRWpTTjJTdkVTaHcxL0owZ201Wkd1bFJiQWlldXdRbFpxTmsrR2tZMGRCNlF2emYvQmRpVFpxcnVEajhKeFBTTkZhZlF2YkorY2ovNG90T0pLRlFxczMzTzBObGF2dWUzNStPNUt2WHdLc2Z4cDNRWE5rcitCU0NZZ2tYVjNEaVV1Vzc3K0lOemxNZ2N2MWNiS0pPUllLdUpDZW02dllhM1ZKeVE3L2NxNForNitvUlcvN2ZYS0JPWmZQcWIvei9SZitkOU53Wms1QXNMV1lnTENPa29lcXV0bHBqK2Z2OFY1YUI5dVpSR0xjallxYzhoWFRkQ0ZlQURGNXYrTlZvYlFBYVZ2VnFSbzd5dVRYdzd0MFBxZTZYRUdTSHU1WThGcGRMcDcxd1A0d3RZcDVFR3BZbm1icTc1NE1YLzdabzJ4QVd3RU10OWJRaU9LSURpVlFqeXphTWFKelp5WWFLcXhlN0dBQ0tQZWpPK0V3S2lIM1BkL054V2xxc01ZMXMxeUxFemh1SnZ0cy9pOTdXTUhqWEErWWJvMHh4cVB5K2pwZVJlK1JveEc4ZWhVVHhWUVIxdzdrdnRmVGFKM09vQ0xwSTBvVW5kNHI3VlpJVmI2NDRoSjVZQ1JQTFV0bHl3enFmRFZjYXh0dmdsZG1EbExyYkVmOUNNekNlN2hTTlNNRjVURDBJWFJSbnZNNXFtVnZmMWVhbjJNb1hDd2pvekJjYkd4RHNPQjN4Q1hzREk2WUFHYlhNYlBjTGpHZmFGd0pybmtDdzlINGs4NTN3c2trYWFKYTlCSE00SWJDbmtMeGNEeUlaaGN1ZG9yUS9UYmNrTE5QUHRhTDR3UnVSM1A3NENGa2IveTlROHRtOHh1SW9GcnJaYml0eXJKb0dHL0d1cFVpTTJzMlp5ZGJFSzFFZ2hSVkxrRDU5SW1MamFESTBWSit1VlV3RzZ3VEJscGRUMTRyTHArZDN0MTQ5aTZaQmp1dEs3dFVNOTR5aDhuR3FRU2RmVDlqR0pRb0c0YTRzcmVEQktVNlE2NlR2S1MwWGN0TXEyMjlGdkZ3bmVuYTlGUFU3blZsWllsU1pQbU1tcjdzYXgzVm1sOHZuY2RBblA0R3p6dnBhWmNuV1I0Mm1iRU94YXU3cEc1RCsrWWxodkVsaVJTN3JvbWR5K3Axb21CcStjcjAxY1RGSXo3SkZ5SDdsL2FGQWRFL0VqUVRKNGlrQXhpQ2hJTXFWcVdJVHhpZ1VrSXhad1hJNEFzWDg3QkZjd0szMUxFS3hSNUNRbTZUdjRXSExqZExwVng1ZERKL2x1cWQzaDRpZzBJWGN6dDlGM2VTdlZwWU01T2xubnNYUGJya0Y5UTBObFNYUnFPN05UYzFvYm1uR3BFa1RNWFhYWFRGaVJCaWYvYjF4eEQ4Zmd3U3ZjZTMxeUZNZysrNjdILzc5ekM5VmxteDkvREliVVhvdHZZOWZnT3o5MzBTOEtRT3ZXRVk1VjBTK2JqdkV6bm9OU2IzS3dMeGJ1VDBOQlpKdlg0WGtpV01RakUvU3BOa2I2Q1JSR0xyM0VHUFE3Q2NUcnNkd28xc2FSV0xsUTRISThDa0FmbGU4NHZHN3B2TFRuQ0E0bFhDMFhMY2ozQUJBcmJCMGlKeVhkSVlDdFVwQnZnM0ZxZk9SMlBHa1FVL3VRdzh2d0lYZnZSZ3R6UzJiWEMrZjNXZmcreWlWU3lqUW9Kb2FoK0hJSTJmaWM4Y2NVOG54OThITW80NTFBbEhEVlNXWHkxRWcrK0xmdmp3VUFnblBkNUhYcWZUQW1VZzllUVZpdzdMdU9nUnJjK2paWXpheVI5M2tSdk0xQ3VtaVcrZVRiejFjNmNtbTBjaHpUcjhPNGxBOTF6VWkvYmdnbnN2ZFU3OXVBVE9xMTlBSjFUS3RyOHk2MVp3UFhTYm0weENzNjJFb0luZlRMMXkrcVVhNEpkQ2UyQjRBOWRzT2RuaU9HT3VXU3FXWWtralhKTGNzeVdsdGN2bFN5R1pTcUt2TG9ISFlNSXdZT1pMaVQrS20vN2tWMC8vcENLeGVzN1pTOHRBZDU5OHJzZ1dOZVJidk9BYXBQMXlCZUQxN2lYSU9KWW9qUDRlOU9zVVJVK0RMVXhtdjJ0dFd4dTFCSDZXV0Zxb3lqQU9jQ01LNUNxd1VsK25kcEhBRlAxUS9WWkl4aGMra2NOdlg0eDlhNFZ3dTlob1VEdnNTbE9WeWNYMlorVUNYSytaR3lsaUsyL3RRd2pvcTFtditrR3E1Q1NpWGFzNmpZZzlSN090RmJ4ZGptTzV1ZEhWMG9HUHRXblMydGRFTjBXKzNoQ1hxTTg1akgwYXhaT3ZyY2ZTeHM5MXk0KzBwMGxwNjc1eUQ1SnMvaHo5NlBBclpVZWpOam9kLzltSmtweDdqN0RUdTZZbUxNUDlRMEcraThTa0h1UmRCcEdJblRvVU9BeXBTODBVaTRWZmR1M0NaMUNxN2paVEMxWUt6ZEswOGRodzBNSzJxOWpSYzR3WHZSYUtZVXcxSVpNWnFITVRWY1ZOUWpkZTB0dUtIMS93QTk5ejlLOXg3MXk5eC83MTM0Zjc3NzhhVlYxeU9EKy8rQWJTM3RZYVphMGpFNDhqVzFlSEhQOUhOU1pWaVJKRmc3MUIzeEUxSWZxV0U1Q25Ma0RqakxXVC9kU25TdzdZTGUvN0tRTTVRMGkrUVlOOHZBRjJjNmpxeU12S2VCbDdTOVF4S01ZbFVwRm5sZE5zeGFlaldxVUZMT1hWQk9aZFJIR3FKVmI0ZUoza3ZFdncrbE1iUGNOVlV2L0JPMEFVcUZkUlRyQ1BHTG43eVRqdmgzSFBPeHFjUFB0ajU2K3VUVHFmeHpMTi9ySHo3eDBkblZWWXhtQ2xybmJQempSQmo3MUIxdm9XTVUyYWw1QnJaZGVZYWZmVXFLOE5KN1dlSTVxdDExSHp0T2tkTkpWMlFyb3p1RVpMWkhqTE5YSzhYa2ZUTGh4cUM5ZUpzZGN0MGkvUzRSM1VVaTBGOG5NRzh2dXVJSkFvS3dRWDFDdUtsRDcwbXl3TnlRYnlHZUJXODgvdlF1MVhyS1BXMElUamdHU1JiOXRDQnM1STY5UU41ZU1GdmNmRmxsekZJNTRtb1lmWHExZmcvMTgzSHhFa1RLMHNHc25MVmFycFRjekIyN01BSElVdWxFb2JWc3hlNThZYktrbzN6MWx2TEthWm5zT2pWUlZpMWFoWHlCYmFrUE5jalJyUmc0bmJiWWJjUGZoQzc3REtsa252VFdidTJGYjk3L0hkNGJkRnJMSGNsQ3NVeVk2WTZiTFBOZU95MTUxN1lZNDhQdTN6dk5FaVh6UlE2RnlMKzVrM3dWajJJY3Z2ZkVDK3NCRTNEV1YyWnA3Y1VhMEt5Zmp6S1RidWp2UDJ4eUU0OEhFVzZxLzZ2RGtWY3IzTFRJSFFWZ3JKdUROTUY3bXFIZCtSZFNDVFR2RWF5UCsxcElLNFordG54M0U4SDEzTjdsYUdCa21JM2N1ODdGTmtEem5CQ1V6VzBlYWxyR2Z6SGJvRDN3djBJbHI2SVJHZVgrNTFvMmIzYXpWSTZobkx6ZUhqYlRrWDVBNGVoYnRycC9VSU5IeldwSEV6dTVuOUQvU09YSTJqVUtCYlg4bVE1NDZleHU5RXJDVVAzU2Voang1S1ZZVjhGM3pJMENpQWN1dFYyL05Eb2wzNjVuYlB1TFVCT2gzSTRkMzM4b0lpQ054cXA2WG9CakFmc1ZGeFpXY1BtQ3VTTk54Wmozc21uWVBTb1VaVWxJZmw4QWJ2dk5oWGZQdmVjeXBJTldmQ2J4M0R0dGRkaEZRUDZPb29wSG1kTHl2T3VVNm1MVTliMUtaZmRrR3VjQm5IODNEbVlOZXVvY09NSWx2eHRLYzYvOENLOFRHRU1hNkJyeVhMZGZRNldxVkdnRW8ycXI2OFA5WmtVZnZZL04rTzRFMCtHei8xRUNVVDFVVnRlN0ZxSTRQRkRrZXg0azlkYmJvSU1oZzJyZTNwYUY1MDVBMHFJeVMreHFjem5VTngyRGhLSC9OU1YwLzNvYVdoODlrZmh2VEplQzQwRXlsalJDL1RzKzIzVTdmY3RmbUc4NnM3Q1FIclh2SXI0ZDNaQ01ueU16NFVEK2tNQmhkVmMrWU8xU0RhMHVFdWJ6L1hBLzk3K3lENy9MRkF2KzJOMXFuYW9HM2RsQ1pEVElqZDJhdWZ4Tm81RStvYlYvWHV0VEZVemltRDJwZWpyWnQ3S0krSmhIK1FjbzhxVXVJOWF0SzBXY3VwSzQxUmZWUWttcHovTzZrNzVZRzdQa0NUdVczZVh5aC81WWFYNnFwdWIyVHg0VE90enhkVlhvcm5KUGUwNWdEVU01RFhrdXpGT091VlVYSFR4cFJSQmdOR2pSNkdCZ1gwNm5YSi9HaUxQM3FkRWRTUnBnR3J4SlZvRi96Lyt5VTh3Yjk2L1ZFb1luRHQrZVFkbXp6MGVhMXZiTVc3TUdKWmJod3lGb05HNWVDcUZCRk1tazhhSWxtYk9wekdYNWFXU0NvQ2pUNHpFVVZqMU1HTDNUVUdxc0FaZVBZMHhYcytrRnA4WjlGT1grWGFtRG5oNS9UNXNId1ZBMjZKdHhPUEovbFk3KzZscmtIT05jSm9OTUswM2tZV1hxa013akkzdzczayt1Q3EyRVhmRGYraHNKSnU0Y1RLRmdNZkRnM0psK3Z2L00ySVVoeWgwcm9CM2NnT3liejJMMkVnMkRGa2VtMjUwNjlMbm1KbmhCTHE1bHk3V1RUL3VxY0V4aVRXOTdzOXZpSENlVzhWcHhYVTgrUEp4bHlMZXl0eVNwSm91R1h4Skk4N015bGt0MFdrS256WG5yTXRUUWJQdURpRzNsUkh4dnh1SlV6ZW9iZDRUZUFMeVJlUmFQb1RzNkdrOGtUWDFmUWRvTXhtbm84YUlsaXo1RzA3NzR1bDQvYlUza2FScnF0S3JlMmh0YThPMGd3L0VCM2JkdGJKa0hjb3o3ZkFqMkd1ME9pT042M0ViTGlzVUN1anA2c0tuUHJrLzVzNzVIS1lmT28yOVNReTVYamF0UlBlUEdwdGJzS2FqRTNPUG0rZVdyYy9kZDkxTndjN0grUEhqV0NkWm9WQXo1NkczdHc5cjJSdm0yWE9vVE0yWFNqSkh6L1YyZ3dta3VrUy9idW1pc01jT1JqQmN6YmQrS2FNQ2UraGl2QTY1M1duNDB4NUY3dENua0Qvb0h1VDN1Qno1Q1llaHdGMzQrYTVRSUV5MEhuaDcwMXZwbzY5VFEwRDd5ZlQwSVAvR1k1eXZMS3lnUmtUdVZlcVB0OU56a1QyR3ZSbjdRMGlMcVdOdmRPV0s4aVY3NmFrbmVqcHlsc0tDZEZNNlI5UHVuZmtmeUovOUFIb3ZmQkw1Yys1RjN3bFhJYmZQMGZRd1VpaTFyWGJpckJLNldCVTBvd1BvL2ZJa05CUVd3OHV3RW5xWVVEY0N1V2U5cGVkYVl6M1pxK0JEYisvcGJUN05KK2hTTWErZXE5Szg2aFRvNHFnRlY2eWlJZDcxajNocm8zM1RkeXprVzVFNGd1NUpuQzB6RjB1ekcyTmpMbGFKcnNkd2QzZGR2WkxuakdwdGF4dEt4UUxkbDNwNkdSUUhsMHVBUlM1cmJXM0ZZZE9uNDkrL092Z2pMY2VkY0JJNk9qdmRmUlRoeEVFWGFzTFkwZmpoRDY1MnkycjU1amZQeFo5ZlhJaHNKdVB5Nmt5dVhiTUdYL255R1JUUklTNlA2S0Z4SFRMOWNJemJac043UFhJVFAvKzVZL0dGejg4T3J4UHBvMGl1L3RHMWVPamhoeW5VRFo4QXFIV3hYR2pSOWlkNGozd1lDVDNOWFcwYzlUdGtQUjBvelFuMFV3RDk1N2V5dG45YWJGdUVWUE9PL2ZYU3RTaGUyWUIwc3NqMm1EYkM4MWYyeTlSYUFjWG1mWkE5L25mTXhLMWRnWHJJaWZWNS9CclUzZnRGZGtFWnVtNTZDa1BDby91ODA5Rkl6YnZWeFE1RjlsckJTWFZJTkxOTTdad052UFpXWXNQZjk1L1BvWDY3RC9KN2VBNkZ5dFc4VWk5amxMcHRkdWxmTjhCV05Bd3E5YVF1WDRUdXRkeVF2aU9kMHRDallBbzQ3M29DOTlaZXFGMjNzbG9hQ2ZVV0xsRGxLNXVHU1FZN2hFbVVjNjN3UG5xM0U0ZUlFa2NVR3JMdDdPNUdSM2NQT2p1N25lOHV0NldKUW9yckJTMkpwbGpFcXBVcnNjT2tTYmh1L2pVYkZjY2ZubjRHYnk1WjBpOE9vVHZ4UGwycXdjUWh6ai8vUEhReHVCVFYwejJjKzc3MTlsOVV2b1ZjZmZYVmFCNDVxdmFTT05Zd1VELzdHMS9IOGNmTjdSZUgwREQwV2F6bjdObkg4cmpvSGtXZ2MxZW1qZWdoQ05kUTFqUjRpWFFDL2hPejlBSnFQMXFycE8yVTBqWGlFTXJxVDdzZTZLYnpYN01pUUJheHhZOGpSemROVDVLN3h6RGNjczQrOWczM0t2VTZHS1BSbzB2TXZtSGdDQmdOdVJJVWtMQlNBVHU5K1BYSDhkcXhYSDdYV2lWdHAvcHB2cjVHSEdLZ3ZkQVZvbGVIdElMRTd6MlB3bHNzdUVqM1NIL1FoczJIVjZJazNDOFlzb2lneFArYXNnajNuZjRkOStyc1V1TmluRHJ0Y08rMU94d0t0RC90Mis5cFEzR1hjNURjNW5BS1h4VjdkK2cramxvNTNRaVVTeVIzUlB0U0tyQ2wzVzJYS1hqMGtZZHc2YVVYWTZmM3Y5OXRNeGgzM3ZtckFmR0thcWJ0anpyeXMrNjczS3phVk5UZlJpRWpSNDEwc1VrVmlmYk5OeGtrMS9EWS8zMGE2UnJoaVJLRk4ybmlkamp3VS90WGxtekk4WFBtdUdPS2VwRk14cUlSd0tMT3JRTHcybk9hYkVEZHNqc1IvNm1IM0gwZlF1R1AzMEoremU5ZHI2T2Nxdlg2SmVzOW90VE94NkozK0FSbW9qMVY5aTFITloxaC9rY3ZZZzU2TFpYR0xyLzB6OGkyZHRMazlCWWMwZm5QbDFEWSsvT01IWWE1enNhUnpLSXdkaFJGb3IydkkwbFBwMjdGYzBnZDE0VENtZVBSKzlOVDBmZVhoNTNicUxSKy9jUkFnVGhDYzA1UG1BcnZPNCtndUl5bVZmRGRNSnd1anZ4UWR4eHFQWndWdWkrVi8veHcxc2xpV1htdFVUZXM0M09HcEY1bks2ZEFTZnZxYlVOdXg5T1EyZVY4Zm1lcngrWHZCaG1PVDBPVkc5VFoxWTIydHZaK1k5WCtVdWswbm52K2VjejR6RXdzZlBsbHQzeGp2UExLSzRocjVLZUdURGFMWDl4NUp3NCs1REJNLzh4bkI2UkRaOHpFUVljZXpoMHhFcXdaWVJLNkh0WDdMM0w3T2pzN0J1UlIzVlRuQXlMRVVXWGNtTEc4emhGTkNmZXYxcmEwOXgxQVJ3Zno1V2tHTW45MzBka1UxL1AvY0tRNlgwYml4Zk9SdlBOaktQODRqdkpqczFITXIzYmxPaEgwN3lCOGxTNSs2QzBvOXVvSnJPb0tUaW55NE9rcm5ZSHFaclBPdFBmUTF4QlQ2T08rS1JkakQzYXE2VmsvY04vZCswTkVaOWI3Nm1NbzZONXRuc2ZqTHIyelFCY0d5UFhLZGk1SDVzSDVTRjl3TURDVGJ2aEZCNkN3K00vSzZNeTZ5aUFDQ2VzdmRTZDNQUUQreFUranNKSkdUcVhHU2d4NE5TVEdKa1EvaXFBS3VtQ2VKZXJBcXkyQXIyRytpajA2Y1hCZWE5WjNnYlpzQ3N2WEQvVDZFc2ZPLzRITTdqOTBkWFJEaFpYNmJDNXI2Ty9mY04xOC9PcU8yL0hBM2IvRWxkKy96QVcxYXQxVnRPS1BWQ1pMUTYvRFNTZWRnbnZ1dmlmY2NCQUtoYnpyZmFwVXQwK3kyWlRMcHQ1bHNDUWt5bXB5NTV6TENwVWJtTXVXTFdVdk1GQjRLcnZNOWVQSERCeCtIZ3oxanM1bjN4aGNyMzFteDg5RWNUbzlqUFI0b0x1RGlxRnI1b2QxVUkxaVhvWkJkQ05pRFJSTEtvdjRHN2NpY2QxbzlQN2hIR2ZzemlnSW16UTNqVyszTDd4UmU5Q205SnVlUW5rU1NKZnk2Rmw0bHpQU0V0ZkZYbnlRMXErLzZlZk9HR09WRWtvZk80Ym5yZEVKclhvanNjemVMVEZtWjhUbXQ2SjMyNzNncjJYZEtFQzJJTncxYlZqSG9jZWY5S3MzalFra2VHcnJYM2dVOFpOMlIrZDUvMVQxNkxTTFNvbURvcEVuZGt2YmZ3U0ZhMWNnMzYwSW40WFR5WlM3NVp4TlRvTnlJdXhWS0lvNFUxQUpuTlN6eEpqblhUYmNtNDRPbk9MMWVjRktlLzRjbWFrWHVvUGIyRkRoTzBXSDBjbFdzOHFVeVR2aHJqdHVvL0VWWEFCZlBVeTVZUXFRTC83K1ZYaGt3YU9WcFFOeGhsRmppRzZXOWRmZk5GRWNVdDdFVkdMeW5Xc1N0cHh1Skt6U1NBMGdRYmRudmFjQUJxTzdyNWMrLzl0Y01GMWM3aVBkT0JXSmFhK2dlTmdpTmtaZlF6NDlHbVhkaU8yakN3UUdCWlV6NHY3aVY3d0I4ZUVOeUQ1MUlmSUxmOUsvcm9xdVVIbm1MU2gzOGhycTF6aWNnSml5dEtuZm51dnlsQlpjaHJUK3VsK2xsOUI2alNnbmovNVI1ZnM2OUFjdk5KcVZxRzlHM1RmbzVsMjNHcjFIWG9EOHVNa29zbGNKT21pNHZicVJYWVUxNEFhSmNSNGFuN2tIZlZmTWRUKy9xNGg4d0NqV2h1anBTZ1V4WHVpbmZYODZVcy9kai9oWUxsR2dwQjlDa0t1UVlqdWQ1aDdpTEZERGIrNkgzTFNobEVwQmFUUkxFby9ZMCthaTA2WHpHYkEvTGRhTlEzei9GeEhMTk9uQVhFdnhUbm1uTndyek5MenBoODlBeThpUnJnWFdJV3F2bXE1WXRnelhjNXZKT3cyTVIrYjl5NG5vNk9yaHFRdGJlK1hOMDAyYU1mMFFuSERDNEVPM204b25QblVRSm94bnk5NVA0T0tZS1ZOMnhrWG5mYWV5YkVOMEUzTGFZVE13WnN6QUp3RUczQ2pVeWRab3BQTVFaRDQ2eDdLT0VPZnhyMWlBNE9WcmtIanpGKzZlZ25zQWx2bGo2dlhZNHVkVFk1Q2Q4NGJMM3c4YkdLb2JQYmNmZ0xyRnYyVWp3eGhENTdMb29kVFJBLzlDZWdVWE5qRjA1eDRrRUhkWE80ZXVLY2NnUGVjVzJqWjdCdWRZaFlUWFFMNUQyS2VFTmh4V1grdEtiL3dSNVVkL2hPUURET3paZzdnWVc2R0M3a25RUzhxdFp2NEhRM2RTMjBjZ0h6Rzg2SHBQSkhYbWZTaWU5UnZrMUpDdTFtMUhybUdCdWhQcE1VN3hOT3luTGtNN2t3dW1WcjN5ZlVPWGFFc2s3cnZVaFZLdUZhVmQvaE9ZOWhZUzZTWjNVSnNqanMxQmo4SmZmZVgzc0h6NThzcVNFTzE5TEEzMWxOTytpRDYyekxYc3M4OCs3azI5S3Nxclo3WnUrL25BRWFuTlljTDRDZTZ1K3pyb3VpWFRlUExKcDFqSHR5ckxOdVNjczg5MjdsMFV2cGREb1pSRG1TZFlQVU9jNG5EbnVwTFVhaWZISHNCRzZ1Zm8vZmlQcWJwMVBhNmFZZmZIakhMVngvOXJvRGhFYXNhdlVPaGh5NjVyeTMrS0tSaHZvL2pvZWZEMEdpR1hDNS9UUG43TkhIMnQyNmQ3enFtR1Vxa1BPZGFvYXR4aDZhR3hhejd4dmc4alBlOTY1Szk2RmVWVzlzQWFTYXJCN2Fhc1o0dmZWaUFoa29nVXFtS3l1KzZQOVB3UyttWmNndDQxTEh3MUE3VWMvWEFLeEQxS1R0VTdWMGZ6T3BNU2h4U3ZaMjNDNDN2WEtFZ0xpcDBvOXJTak9HRVdncy9ta1pyOGRmZmo3a1BtMHRXd3k1UXArTmZUVGtYcjZsVjA2WFJwSzFDa0kwZU14Tkd6anEwc0NEbmgrT1BRM1U1M3BQWjhNTyt3NFUyWU1mTklQUHZNTTVXRmcvUDY2Ni9qL0FzdXdoTlBQVlZac282alpzNWdvQjRPQjFkUld6RjY5R2pNblhjUzdybnZBUzVadCtQRml4Zmp0RE8rakpjV3ZiSEI2TmY2K0l3dHZCVlBvUFJMQnJVdlhZQkN4MHV1MTNDWGVyMXBmQ25GSG5mbTY1QU54Znc4L0tZTmI1cFcwVWhVY2MvakdlL1dQUFRKdUM3NysvTTRDWWZTSFl6aHNOY3NKRk42bGt0bEQ4VFA5YUU0eTBQdjdhY2o5OFl6enZ0UnZhbzlpUEs3WmIrOUVSNEZXSDNmM2NFTVpmMGxadFpkN2YzYnVGZ2JSenZUVGd1UFhZdllBMTlIcXRBT3I0VTdxMHNqeUxJS3VxMnY4NTFpaktKbnNlUnFLWURjbkJ1R3lxN05nbDZLTDBjTmNoL2Jud3h2Nm1WSXhNS0xFTDdCUExBbDJCdzI5MWtzY2M0NTM4U2ZuMzhCMllaaHJzcnVZdkQwYWhTcHVia0pOOTV3bmNzbkhuL2lDWHo5bkhNeGZ0eDRYdmZ3ZkNpLzdvZDBkblc1a2FoSjIyMkhzWFI1a25SYnUzcDZzSExWR2l4N2F6a0Q5REo3cFJ5dXVQUmlmT1FqNFlPR3RSeDUxREh1K3RUZVp4RzYxTHFSS0xkUWo1a29obEZ2bytlMHRFNHUzL3FqWk92ZktNVEtKeEQvM1NmY3o3a0dPYm8rckxxZjNwWTdHOHRqNXIrZVpVRFhNc1NTdkM1ZUhZK0pSOFZqaWhVREZPa3VsVDczSjJSSDdlN0tYaDlkUWFYZ094NVN3eWhHZldGUEpUY3Rwc0VodGZRTXdBdnlYcjdiUlcraFlkQVd2cER2UnV4RVhvTmhOTGMrQ3BibGxKdnJrZEJ3TXNzcmQ3VWp0bXlGaXc0VTUzaEZsaEl3bm1QNXdkL0s2RDNyT2d5YmRxS3IreWIxSUlPaERXV2FtZjFPUnVxaU5oVE9mQjc1eVNlaXA1Y25aQlU3dU80ZW5sM1dMay8vc01nYVZvWUdwSTBOWGFYMWt3SW9YbzZBMjVmWlRlZGJHV1F5eG1nNUNJV1AzZ1h2aUJ4U3UxMkpKTVdoVXNPUzM3MDQzaTBYWEhBK0dtaHNNanduRHFad2RDdURGYXZYNE54dm5lZnlpVS9RemJyNHd2T3hZdFVxOU5FSXErMlVndnltNGNPZDBhNmlLUC8wbDcvZ0Q4LytDUXRmZmhVZEhSMFkzampNaVZmUFZQVy80TFlldC83c1pocCtLSWJhOWs5Q1ZQMWFLTmE2Yk5hOUFhblJzYTd1YnZkRWIxMTl2UnNkaXlLTTdYaGN5VWFLWkFUaWRHbVRqSHlUUFM4ZzBmbFh4UDAyeEJVRHh1cDUvTXpyMDd1Z3dlWlpsOUlSZHlORGNXenNYa3Vjc3Bha3kvdDlDK1dDZXBHcWVZWlgyS0ZCa1QwL1I1K1U0dGhJT2YwamNSbmF4L0E0a293ek1vVmVKRmE4Z3ZoYkM1SHVvamdhS2VZTTR3ODNpRU5iMDkvZ1gxWkd6NWN1Y3VJUVR2QThnWVB2WlZQUlJhSXFWWWd6Q0taODY5OFF2SFk3dkdXL1JxenRLU1JLN2F3c1YvRG85WE9nWGt5akxlR0ZDRnRQYnFWaFM0bURkZFVpUDhtTE5Yd1BlQ1AzUlhuc1ljaTBmTHptTkRFZlAzVUFXNW9ISG53STU1MTNBWnBHdExDT1lmbXFqNHoxMXB2K0d6dnNzTDFidGpIMHFNU25QMzBvVW1uMjB6VWpRaktXdHRhMU9QYVlXVGpqUzZkWGx2STRlZm92dmV6N2VPU1JCZTRPZFpLeGlIcGF2VjZncmNJenF0UERvSlBucVByZWV6ME5YTEhQeElrYjc5RXV2K0lxM0h2dmZVZ3pyMTRSRG51SHNFeVZGZDZJekdQZTNObVlQWHNPRGpuMGNMZGZ4UXBWOG5SM2RBL2xuRzk4WGQ0eWN1Mi9SK3pSanpsRDV1VmlTU3lUMTFKT3VFWXk5ZWZ2WEJ5dnk4dHJXY3p3UE80NEQ3RzlMcUVMekgzTDNOdzFINHp3cW1vRXFYVDVNTlNWYWJWc0JIV09ZbXhrUzdTYjhxbyt4Qzd1UkNMSkhpTE12Z0c5RkZmcDlDd3liSmYxMUZQL1UvTXlWZFZaMjlISDRxVkN3SjM1dE0zaVByT1JtbnNWa3NQQ2h4MnJ4YjU3Z2F5SEhrZFo5ODY1cTFNNDdWek1EbUVSNG4xTGVQUVVUTEhkblhDNVJsNThKSVhETGpYMVB2aU5FK2ltN1VRUmhlNkJLbHB0UjRhQ0ZTdFg0cVdYWG1JTFRUZXVza3owOWVYeDhZL3Q2WjYyZlR1V0xsMkdSYSsvd1M1OFlLK21ZOUdiaDlPbVRlc2Z3YXJsdWVmK2pMODgvenlXcjF5Rjl2WjI1LzVvbXdTTnU3R3hFU05hV3JEOTl1L0RoM2I3QUpvNXZ5bElDTCttK0Y1ODhTV3NXYnNHUmJwWEttL1V5SkhZYmVvdU9QREFBeXM1Z2NkKzk3aDdNRks5WGhYVlFZL3dUOWw1TWkrdVhLcndtRXI1MWZBNlhnUzYvOHJyMmtvRDdsWnUrREc2VlprUmlOVi9BTUdJRDduZXBMOGYwQWxkVi9SR2tjMzBYajhWRGEwTDJhMmsrd1VTVU5COWsyZWo3dGlid293YndYbG1USVVpWGZJbHo5S2RlaEYrMXlyV2s5NklZdUVFYmF0K0ZMelJPNkQ4dnIyUWFoN3Y2amhZMWJhNFFBemozZEwzd20zSTNERUxnWDVMV2IyZEUwZ0pwZFlpeWhmMUlKMVNGRDAwREdYamJCZ091ZGZxSmFxcDJrSnJYdTVWL0o1WjhCclNqQ1hVRnhDMTRia2ljdnQ5Q1FtOU14SXVIUkpNSU1hUUV6QXc5b004ZW4velZYcmFyOUxkN29WK0VyYjAwaTBvZlQ5RkYxQkJnMXk1aW5uNk9mUWs2NUNkY1pXK2hLN2FFR0V1bGpIa3lHVXFNYzd4TC9MY28xVWF6bFU4R3FjZTNLUDRmdVhkR28wciszbms5QWpLdVIxSXBZZitGL210QnpIZUEwSXoxeXV1dXBjUnI2K25VREtJWmVwUXJqeHNxWWNLUzNuZEVVOGhUbkVrbkRqa2hBMHRKaEJqeUFrakVOSkxrV2owcTlERGFRNWxqVHJwRVp5ZUhJcWMrbnYvQnhKZjYwT2M0dEI3N2UrRnVacUxaUXc1Z1Y5Q0taWkE4T1o5S0szK0t4SjlTeEhMdGFQczFjR3YyeGF4aVhzanRzMG53L2M2d2szZU0wd2d4cEFUV3B6dXlHOW8vbHFsNU82R3Y5ZnFJQ1lRdzRqQVloRERpTUFFWWhnUm1FQU1Jd0lUaUdGRVlBSXhqQWhNSUlZUmdRbkVNQ0l3Z1JoR0JDWVF3NGpBQkdJWUVaaEFEQ01DRTRoaFJHQUNNWXdJVENDR0VZRUp4REFpTUlFWVJnUW1FTU9Jd0FSaUdCR1lRQXdqQWhPSVlVUmdBakdNQ0V3Z2hoR0JDY1F3SWpDQkdFWUVKaEREaU1BRVloZ1JtRUFNSXdJVGlHRkVZQUl4akFoTUlJWVJnUW5FTUNJd2dSaEdCQ1lRdzRqQUJHSVlFWmhBRENNQ0U0aGhSR0FDTVl3SVRDQ0dFWUVKeERBaU1JRVlSZ1FtRU1PSXdBUmlHQkdZUUF3akFoT0lZVVJnQWpHTUNFd2doaEdCQ2NRd0lqQ0JHRVlFSmhERGlNQUVZaGdSbUVBTUl3SVRpR0ZFWUFJeGpBaE1JSVlSZ1FuRU1DSXdnUmhHQkNZUXc0akFCR0lZRVpoQURDTUNFNGhoUkdBQ01Zd0lUQ0NHRVlFSnhEQWlNSUVZUmdRbUVNT0l3QVJpR0JHWVFBd2pBaE9JWVVSZ0FqR01DRXdnaGhHQkNjUXdJakNCR01aR0FmNFg3cEJZWXZIZXViSUFBQUFBU1VWT1JLNUNZSUk9In0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDE4LTEwLTExIn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAxOC0xMC0xMSJ9LHsiYWFndWlkIjoiOTk4ZjM1OGItMmRkMi00Y2JlLWE0M2EtZTgxMDc0MzhkZmIzIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI5OThmMzU4Yi0yZGQyLTRjYmUtYTQzYS1lODEwNzQzOGRmYjMiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiT25seUtleSBTZWNwMjU2UjEgRklETzIgQ1RBUDIgQXV0aGVudGljYXRvciJ9LCJkZXNjcmlwdGlvbiI6Ik9ubHlLZXkgU2VjcDI1NlIxIEZJRE8yIENUQVAyIEF1dGhlbnRpY2F0b3IiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MiwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUMyVENDQW9DZ0F3SUJBZ0lCQVRBS0JnZ3Foa2pPUFFRREFqQjdNUXN3Q1FZRFZRUUdFd0pWVXpFWE1CVUdBMVVFQ0F3T1RtOXlkR2dnUTJGeWIyeHBibUV4RkRBU0JnTlZCQW9NQzBOeWVYQjBiMVJ5ZFhOME1SQXdEZ1lEVlFRTERBZFNiMjkwSUVOQk1ROHdEUVlEVlFRRERBWmpjbkF1ZEc4eEdqQVlCZ2txaGtpRzl3MEJDUUVXQzJsdVptOUFZM0p3TG5Sdk1DQVhEVEl5TURJeU1USXdNVEV6TVZvWUR6SXdOekl3TWpBNU1qQXhNVE14V2pDQmpURUxNQWtHQTFVRUJoTUNWVk14RnpBVkJnTlZCQWdNRGs1dmNuUm9JRU5oY205c2FXNWhNUlF3RWdZRFZRUUtEQXREY25sd2RHOVVjblZ6ZERFaU1DQUdBMVVFQ3d3WlFYVjBhR1Z1ZEdsallYUnZjaUJCZEhSbGMzUmhkR2x2YmpFUE1BMEdBMVVFQXd3R1kzSndMblJ2TVJvd0dBWUpLb1pJaHZjTkFRa0JGZ3RwYm1adlFHTnljQzUwYnpCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQlBESEJnYTdkNnVOZ2FVakUxNVFoeHZneWVUdFVoM3VUR0pDWGgxTS81cDUvTi9jM0VGam9nMEdvT04wZk1acElaajZPRDcwV0MxSVhPcFZRNGZiZnRhamdkOHdnZHd3SFFZRFZSME9CQllFRk1GdDJ3UEEzcGRYUVBhVzJVZ1h2ZUVseTdTa01JR2lCZ05WSFNNRWdab3dnWmVoZjZSOU1Ic3hDekFKQmdOVkJBWVRBbFZUTVJjd0ZRWURWUVFJREE1T2IzSjBhQ0JEWVhKdmJHbHVZVEVVTUJJR0ExVUVDZ3dMUTNKNWNIUnZWSEoxYzNReEVEQU9CZ05WQkFzTUIxSnZiM1FnUTBFeER6QU5CZ05WQkFNTUJtTnljQzUwYnpFYU1CZ0dDU3FHU0liM0RRRUpBUllMYVc1bWIwQmpjbkF1ZEcrQ0ZGTjZPN3huSUtiNzQ4M3BxaXFndUFUNlZwUU1NQWtHQTFVZEV3UUNNQUF3Q3dZRFZSMFBCQVFEQWdUd01Bb0dDQ3FHU000OUJBTUNBMGNBTUVRQ0lGdzhubUxFNnliTUVhZk9jaGdtWHBjSDROSXNkd1dsRHVmcmVkTCtCK0NpQWlCSFdzeTc3dzA5ZUMvc0Vqb1ZjR2ttd1JjWmtUdG1yWW9Oemd1aWpZTVZ0UT09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQURBQUFBQXdDQUlBQUFEWVlHN1FBQUFLTDJsRFExQkpRME1nY0hKdlptbHNaUUFBU01lZGxuZFVWTmNXaDgrOWQzcWh6VERTR1hxVExqQ0E5QzRnSFFSUkdHWUdHTW9Bd3d4TmJJaW9RRVFSRVFGRmtLQ0FBYU9oU0t5SVlpRW9xR0FQU0JCUVlqQ0txS2hrUnRaS2ZIbDU3K1hsOThlOTM5cG43M1AzMlh1ZnRTNEFKRThmTGk4RmxnSWdtU2ZnQjNvNDAxZUZSOUN4L1FBR2VJQUJwZ0F3V2VtcHZrSHV3VUFrTHpjWGVycklDZnlMM2d3QlNQeStaZWpwVDZlRC8wL1NyRlMrQUFESVg4VG1iRTQ2UzhUNUlrN0tGS1NLN1RNaXBzWWtpaGxHaVprdlNsREVjbUtPVytTbG4zMFcyVkhNN0dRZVc4VGluRlBaeVd3eDk0aDRlNGFRSTJMRVI4UUZHVnhPcG9odmkxZ3pTWmpNRmZGYmNXd3loNWtPQUlva3RnczRySGdSbTRpWXhBOE9kQkh4Y2dCd3BMZ3ZPT1lMRm5DeUJPSkR1YVNrWnZPNWNmRUN1aTVMajI1cWJjMmdlM0l5a3pnQ2dhRS9rNVhJNUxQcExpbkpxVXhlTmdDTFovNHNHWEZ0NmFJaVc1cGFXMW9hbWhtWmZsR28vN3I0TnlYdTdTSzlDdmpjTTRqVzk0ZnRyL3hTNmdCZ3pJcHFzK3NQVzh4K0FEcTJBaUIzL3crYjVpRUFKRVY5YTcveHhYbG80bm1KRndoU2JZeU5Nek16amJnY2xwRzRvTC9yZnpyOERYM3hQU1B4ZHIrWGgrN0tpV1VLa3dSMGNkMVlLVWtwUWo0OVBaWEo0dEFOL3p6RS96andyL05ZR3NpSjVmQTVQRkZFcUdqS3VMdzRVYnQ1Yks2QW04S2pjM24vcVluL01PeFBXcHhya1NqMW53QTF5Z2hJM2FBQzVPYytnS0lRQVJKNVVOejEzL3ZtZ3c4RjRwc1hwanF4T1BlZkJmMzdybkNKK0pIT2pmc2M1eElZVEdjSitSbUxhK0pyQ2RDQUFDUUJGY2dERmFBQmRJRWhNQU5Xd0JZNEFqZXdBdmlCWUJBTzFnSVdpQWZKZ0E4eVFTN1lEQXBBRWRnRjlvSktVQVBxUVNOb0FTZEFCemdOTG9ETDREcTRDZTZBQjJBRWpJUG5ZQWE4QWZNUUJHRWhNa1NCNUNGVlNBc3lnTXdnQm1RUHVVRStVQ0FVRGtWRGNSQVBFa0s1MEJhb0NDcUZLcUZhcUJINkZqb0ZYWUN1UWdQUVBXZ1Vtb0oraGQ3RENFeUNxYkF5ckEwYnd3ellDZmFHZytFMWNCeWNCdWZBK2ZCT3VBS3VnNC9CN2ZBRitEcDhCeDZCbjhPekNFQ0lDQTFSUXd3UkJ1S0MrQ0VSU0N6Q1J6WWdoVWc1VW9lMElGMUlMM0lMR1VHbWtYY29ESXFDb3FNTVViWW9UMVFJaW9WS1EyMUFGYU1xVVVkUjdhZ2UxQzNVS0dvRzlRbE5SaXVoRGRBMmFDLzBLblFjT2hOZGdDNUhONkRiMEpmUWQ5RGo2RGNZRElhRzBjRllZVHd4NFpnRXpEcE1NZVlBcGhWekhqT0FHY1BNWXJGWWVhd0IxZzdyaDJWaUJkZ0M3SDdzTWV3NTdDQjJIUHNXUjhTcDRzeHc3cmdJSEErWGh5dkhOZUhPNGdaeEU3aDV2QlJlQzIrRDk4T3o4ZG40RW53OXZndC9BeitPbnlkSUUzUUlkb1JnUWdKaE02R0MwRUs0UkhoSWVFVWtFdFdKMXNRQUlwZTRpVmhCUEU2OFFod2x2aVBKa1BSSkxxUklrcEMwazNTRWRKNTBqL1NLVENacmt4M0pFV1FCZVNlNWtYeVIvSmo4Vm9JaVlTVGhKY0dXMkNoUkpkRXVNU2p4UWhJdnFTWHBKTGxXTWtleVhQS2s1QTNKYVNtOGxMYVVpeFJUYW9OVWxkUXBxV0dwV1dtS3RLbTBuM1N5ZExGMGsvUlY2VWtackl5MmpKc01XeVpmNXJETVJaa3hDa0xSb0xoUVdKUXRsSHJLSmNvNEZVUFZvWHBSRTZoRjFHK28vZFFaV1JuWlpiS2hzbG15VmJKblpFZG9DRTJiNWtWTG9wWFFUdENHYU8rWEtDOXhXc0pac21OSnk1TEJKWE55aW5LT2NoeTVRcmxXdVR0eTcrWHA4bTd5aWZLNzVUdmtIeW1nRlBRVkFoUXlGUTRxWEZLWVZxUXEyaXF5RkFzVlR5amVWNEtWOUpVQ2xkWXBIVmJxVTVwVlZsSDJVRTVWM3E5OFVYbGFoYWJpcUpLZ1VxWnlWbVZLbGFKcXI4cFZMVk05cC9xTUxrdDNvaWZSSytnOTlCazFKVFZQTmFGYXJWcS8ycnk2am5xSWVwNTZxL29qRFlJR1F5TldvMHlqVzJOR1UxWFRWek5YczFuenZoWmVpNkVWcjdWUHExZHJUbHRITzB4N20zYUg5cVNPbkk2WFRvNU9zODVEWGJLdWcyNmFicDN1YlQyTUhrTXZVZStBM2sxOVdOOUNQMTYvU3YrR0FXeGdhY0ExT0dBd3NCUzkxSG9wYjJuZDBtRkRrcUdUWVlaaHMrR29FYzNJeHlqUHFNUG9oYkdtY1lUeGJ1TmU0MDhtRmlaSkp2VW1EMHhsVEZlWTVwbDJtZjVxcG0vR01xc3l1MjFPTm5jMzMyamVhZjV5bWNFeXpyS0R5KzVhVUN4OExiWlpkRnQ4dExTeTVGdTJXRTVaYVZwRlcxVmJEVE9vREg5R01lT0tOZHJhMlhxajlXbnJkemFXTmdLYkV6YS8yQnJhSnRvMjJVNHUxMW5PV1Y2L2ZNeE8zWTVwVjJzM1lrKzNqN1kvWkQvaW9PYkFkS2h6ZU9LbzRjaDJiSENjY05KelNuQTY1dlRDMmNTWjc5em1QT2RpNDdMZTVid3I0dXJoV3VqYTd5YmpGdUpXNmZiWVhkMDl6cjNaZmNiRHdtT2R4M2xQdEtlMzUyN1BZUzlsTDVaWG85Zk1DcXNWNjFmMGVKTzhnN3dydlovNDZQdndmYnA4WWQ4VnZudDhINjdVV3NsYjJlRUgvTHo4OXZnOTh0ZnhUL1AvUGdBVDRCOVFGZkEwMERRd043QTNpQklVRmRRVTlDYllPYmdrK0VHSWJvZ3dwRHRVTWpReXRERjBMc3cxckRSc1pKWHhxdldycm9jcmhIUERPeU93RWFFUkRSR3pxOTFXNzEwOUhta1JXUkE1dEVablRkYWFxMnNWMWlhdFBSTWxHY1dNT2htTmpnNkxib3Ird1BSajFqRm5ZN3hpcW1ObVdDNnNmYXpuYkVkMkdYdUtZOGNwNVV6RTJzV1d4azdHMmNYdGladUtkNGd2ajUvbXVuQXJ1UzhUUEJOcUV1WVMvUktQSkM0a2hTVzFKdU9TbzVOUDhXUjRpYnllRkpXVXJKU0JWSVBVZ3RTUk5KdTB2V2t6Zkc5K1F6cVV2aWE5VTBBVi9VejFDWFdGVzRXakdmWVpWUmx2TTBNelQyWkpaL0d5K3JMMXMzZGtUK1M0NTN5OURyV090YTQ3VnkxM2MrN29lcWYxdFJ1Z0RURWJ1amRxYk16Zk9MN0pZOVBSellUTmladC95RFBKSzgxN3ZTVnNTMWUrY3Y2bS9MR3RIbHViQ3lRSytBWEQyMnkzMVd4SGJlZHU3OTlodm1QL2prK0Y3TUpyUlNaRjVVVWZpbG5GMTc0eS9hcmlxNFdkc1R2N1N5eExEdTdDN09MdEd0cnRzUHRvcVhScFR1bllIdDg5N1dYMHNzS3kxM3VqOWw0dFgxWmVzNCt3VDdodnBNS25vbk8vNXY1ZCt6OVV4bGZlcVhLdWFxMVdxdDVSUFhlQWZXRHdvT1BCbGhybG1xS2E5NGU0aCs3V2V0UzIxMm5YbFIvR0hNNDQvTFErdEw3M2E4YlhqUTBLRFVVTkg0L3dqb3djRFR6YTAyalYyTmlrMUZUU0REY0xtNmVPUlI2NytZM3JONTB0aGkyMXJiVFdvdVBndVBENHMyK2p2eDA2NFgyaSt5VGpaTXQzV3Q5VnQxSGFDdHVoOXV6Mm1ZNzRqcEhPOE02QlV5dE9kWGZaZHJWOWIvVDlrZE5xcDZ2T3lKNHBPVXM0bTM5MjRWek91ZG56cWVlbkw4UmRHT3VPNm41d2NkWEYyejBCUGYyWHZDOWR1ZXgrK1dLdlUrKzVLM1pYVGwrMXVYcnFHdU5heDNYTDYrMTlGbjF0UDFqODBOWnYyZDkrdytwRzUwM3JtMTBEeXdmT0Rqb01YcmpsZXV2eWJhL2IxKytzdkRNd0ZESjBkemh5ZU9RdSsrN2t2YVI3TCs5bjNKOS9zT2toK21IaEk2bEg1WStWSHRmOXFQZGo2NGpseUpsUjE5RytKMEZQSG95eHhwNy9sUDdUaC9IOHArU241Uk9xRTQyVFpwT25wOXluYmo1Yi9XejhlZXJ6K2VtQ242Vi9ybjZoKytLN1h4eC82WnRaTlRQK2t2OXk0ZGZpVi9LdmpyeGU5cnA3MW4vMjhadmtOL056aFcvbDN4NTl4M2pYK3o3cy9jUjg1Z2ZzaDRxUGVoKzdQbmwvZXJpUXZMRHdHL2VFOC92TU83eHNBQUFBQ1hCSVdYTUFBQllsQUFBV0pRRkpVaVR3QUFBR2lFbEVRVlJZdysyWWEyd1VWUlNBenp4MnU3dHRkMHNEdFMyWVNyRjBhNlVhTVdJVG8yQXRBV0lCS1NwRk5DU0tSbW13dmpDa1VST01xQlUxUGdDckJEUStDSUtnZ2krTTc5cmFBa0ZvRzVCZ29RK2duYmJNZHJlN3N6UDNjZnh4bDNGYkNsVGpEMy9zK1RWbjlzeTkzNXpuM1pFUUVmNVBJc1AvVEJKQUNhQUVVQUlvQVpRQStvZWl4aXVJbkRHT2lLcXFTcEowNFNjWlk1eHpXWlpsV1ltM3BaUUNnS0lvRjEwQkFCQ1JNUlp2TE5uVFhxd3Vyb1BCNFBIangzVmRIeGdZTUUzVHNpekdHQUFrSlNXNTNXNmZ6NWVSa2VIMys0VTlZMHlXWmJFaUlvNkd3NmJobkN1S0FvaGdQNFdJNGdkRTNQTGgrMWNYVFJtOWUxTlN2SXNXMzNYd1VETWljbzZVRWtRc1h6Qy90SFJtZStkSlNnaGVUQTc5Zm1EYzJMRzd2dnlhVVNvWUpFUmtqQ3FLV3ZuZy9ldmVla2ZzbEo2ZTd2RjR2RjZ2MisxMnVWeUtvdGhlcEpTR1FpRmQxd01CUFJJeHhQMm1mZnV2dWZvcXpwakQ2VlFWaVhGb09Yd2tMM2VpMCtrODl6VTRaN0tzV0ZIanFhZWZybmxwTFFCTXpMdWk3V2dycFZSVjFaaUhmdjNwTzJHOWNsVjFhMnRyZDA5UGIyK3ZydXZCWUhCd2NEQjhWZ1lIQjBPaFVDQVEwRFN0bzZOano5ZGZwYWQ1QWVENkcyNUd4RWdrZ29nZWx4TUFXbzc4WVpybXVTNnhMQXNSR3h2cWMzSXVGVHZlZk12TUUrM3R3ajJJQ09KcTZkMFZBSEJueGQySWFKcFJ4cGhJTjBvcHBkUU9hN3hLQ0RFdGExOVRZeXpIRVkxSStBSkFZaVBUTkI5LzdGR1I5VDZ2NytWWFhoZEwyV1l4RHhVVzVDdXE0L1YxRzRUYTF0YlcwTkRRMWRVbDFNTkhqdFRWMVdsYWJ5endCdzgyTlRWMTkvUlFRdnI3ZWlmbFRBQ0Foc2I5bkpFUmdUam53akZmN041VjRNOFhMM0JyMmR5ang5b1EwVFN0ZU80WVVPN0V5OXd1MXljN1B4VnFWVlZWY25KS1RVMk5VRzh2THdlQVBkL3NFWjZiTVgxNlZsYjJ4MXUzSXFKaGhFdExiZ1NBTGR0MkMrTmhRSnpIV3NrOVN4WjdQQjVCODhGSFd4bWpvaFNHaVFvQTRRR2RXRVJXSEc2M045WU1BQndPbGZOWVIxQlVWVllVcmJkZjFMa2tTYklzRFlZTkFKQmwxZU5KQllEVHB6ck9WNHdOOVhVVkZZczZ1MDRCd1BRWnQzeXlZNXMzSlFWQUFvQVJXZ1FpOXB6dXlNeTh4T3ROKzZXK1VXQUdnMEZOMHdZR2drSWRDQVM2dTd2RDRiQlFkVjNYTkMwY2puRE9LU0YzbE04SGdPcG4xZ3p6RUtXMHY3L3ZrYW9WWXFOeEdabHZ2N014UHA5R0ZCVUFxRW1CYzVCQWtXS05PelUxTlRVMTFZYjIrbnhlbjg5VzA5TFM3QzRnU1NBckNnQndiZzJ0YlI2TlJpc2ZlbkRMMW0wQVVEWi9RVzN0K3F5TVMySVJPSC96bEFFQVFiUnI2VjhOSDBtV1pBQ0FvWC92WkVsMkpTVmRYMXljNUhRQ3dLNVBkK3pjL3BsaEdLTWFyZzZuS2lzU0lETE94Q2g0ZC9QbXlzcksrdnJmaE5IYnRiWExsaTFyYm00VzRLK3NYYnR5NWNxOWUvZktzb3lJaEZvQUlDdnFVRTVnbks5NCtKRWZmdngreHZTYkFHRDU4Z2RLWjg3YXQvOEFBQkJDTGpSUTlMNmU4ZGxaS2NuZWI3LzdXZlN1dVdWbEFMQmhRNjJJYTJsSkNRRHMyTEZUVkZuUmxDbVNKRy9hdEFrUkxkT2NWMVlHQURXdnZuRnVsWWxjaVJyR2E2KytMSHFQeStWNmNsVzFhRWdqWnBJTUFENmYxNms2S0NlUnlJQUljRWxKeVpJbFN6SXpZeUdmTlh2MndvVUxQWjVrVVdYejVzMWZ1blJwVnRaNEFPQ2NSaUlCQUpndy90SVJ3aWxKQUtBNkhDdXFIajNSZHV6S3dpc0lJUzgrLzF6dTVmNmp4LzRjT1pNRTE2VGN5eHdPNThaTjd3M2o1WndQZTQ5NDFUU2pmWDE5RTNNbUFFQmR3MTdPNlBrNnRkM2ZYM3hoalVOVkFjRGhURnBWL1pSRlNQeXZmNCtPMitiT0FZQkZpKzhSenJRc3k3SXNNbFRvV1NHRVdKWmxtcVpGU0dQOUwvYUxSUzQ0T216cDdHaWZkdDIxQUNCSmN1Nmt5dzhjYWtaRWNwWXA1cUV2UHRzdTFuM2l5VlV0TGEwOVBacW1hZjM5L2JxdTY3b2VDQVNDd1dBb0ZCS1Q5Y3laTTVxbWRYWjJmTG43YzdIOW5MbmxpR2dZeG1pQWhObnp6NjFPODhaYXllcG4xd1FDZ2IrQnhHeWJWemJIanVQWXNlT3lzN1B6OHZMOGZuOUJRVUZoWWVIVXFWT0xpNHVuVFp0V1ZGU1VuNStmbVptWmZIWU9lRHdwSnpxNkNDR1daZHJIdmViRGg4OEhaTWVvdGVYUTdGa3poWDMxTTZ1SGVJaHpicG5tK25Wdit2TW5qNzRGK2RMR1BMUzhzcjJ6TTM2YisrNjd0MkpSUmRlcDAvR1pjYTZJVktHVXZyZDVZOWI0SFB2eGtZK3czZDNkSjArZWpFYWpqREhETUVRT2NjNGxTWEk2bldQR2pFbFBUNTg4ZWJJNHVJbERzVjBrLzZqQjJwdmFpMGp4WDlCRVRRR0FxcW9YWGNzKzVNZlJ4TzREZ0gzS0hnMFQ1OXplVVVwODBrc0FKWUFTUUFtZ0JGQUM2TCtWdndDcUdmSHlrQXBtb3dBQUFBQkpSVTVFcmtKZ2dnPT0iLCJzdXBwb3J0ZWRFeHRlbnNpb25zIjpbeyJpZCI6ImNyZWRQcm90ZWN0IiwiZmFpbF9pZl91bmtub3duIjpmYWxzZX0seyJpZCI6ImhtYWMtc2VjcmV0IiwiZmFpbF9pZl91bmtub3duIjpmYWxzZX1dLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xX1BSRSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiOTk4ZjM1OGIyZGQyNGNiZWE0M2FlODEwNzQzOGRmYjMiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjp0cnVlLCJ1cCI6dHJ1ZSwidXYiOnRydWV9LCJtYXhNc2dTaXplIjoxMjAwLCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0IjoxMiwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoyNTYsInRyYW5zcG9ydHMiOlsidXNiIl19fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMi0wMy0zMCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyLCJ1cmwiOiJodHRwczovL2NycC50byIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiT25seUtleSIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjIwMzMwMDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS40In0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIyLTAzLTMwIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjMtMDEtMTEifSx7ImFhZ3VpZCI6IjMwYjUwMzVlLWQyOTctNGZmMi0wMTBiLWFkZGM5NmJhNmE5OCIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiMzBiNTAzNWUtZDI5Ny00ZmYyLTAxMGItYWRkYzk2YmE2YTk4IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ik9uZVNwYW4gRElHSVBBU1MgRlgyLUEifSwiZGVzY3JpcHRpb24iOiJPbmVTcGFuIERJR0lQQVNTIEZYMi1BIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfSx7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCIsImJhRGVzYyI6eyJzZWxmQXR0ZXN0ZWRGUlIiOjAuMDMsInNlbGZBdHRlc3RlZEZBUiI6MUUtMDUsImlBUEFSVGhyZXNob2xkIjowLjAsIm1heFRlbXBsYXRlcyI6NSwibWF4UmV0cmllcyI6MywiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJpc0ZyZXNoVXNlclZlcmlmaWNhdGlvblJlcXVpcmVkIjp0cnVlLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJzb2Z0d2FyZSJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiLCJibHVldG9vdGgiXSwidGNEaXNwbGF5IjpbImhhcmR3YXJlIl0sInRjRGlzcGxheUNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbiIsImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDRVRDQ0FiaWdBd0lCQWdJRUFUVUJGVEFLQmdncWhrak9QUVFEQWpCbk1Rc3dDUVlEVlFRR0V3SlZVekVRTUE0R0ExVUVDaE1IVDI1bFUzQmhiakVpTUNBR0ExVUVDeE1aUVhWMGFHVnVkR2xqWVhSdmNpQkJkSFJsYzNSaGRHbHZiakVpTUNBR0ExVUVBeE1aVDI1bFUzQmhiaUJFU1VkSlVFRlRVeUJHV0RJdFFTQkRRVEFnRncweU5UQTVNREV4TWpRek5ERmFHQTh5TURVMU1Ea3dNakV5TkRNME1Wb3daekVMTUFrR0ExVUVCaE1DVlZNeEVEQU9CZ05WQkFvVEIwOXVaVk53WVc0eElqQWdCZ05WQkFzVEdVRjFkR2hsYm5ScFkyRjBiM0lnUVhSMFpYTjBZWFJwYjI0eElqQWdCZ05WQkFNVEdVOXVaVk53WVc0Z1JFbEhTVkJCVTFNZ1JsZ3lMVUVnUTBFd1dUQVRCZ2NxaGtqT1BRSUJCZ2dxaGtqT1BRTUJCd05DQUFUcm15dktDRWt3NURkTEJZZWlOS2w1UmJjTjJkWFp5Q1VkRkg4TWp6bkhYWjErdjVzbWdJeXJtUzltOTA2QkpScXUwYkRXZzlJNzBvSlFXNUp4ZmtnM28xQXdUakFkQmdOVkhRNEVGZ1FVeFh6dUoxdFNwQmJrS2xDbTVuVmU4bS9jU29jd0h3WURWUjBqQkJnd0ZvQVV4WHp1SjF0U3BCYmtLbENtNW5WZThtL2NTb2N3REFZRFZSMFRCQVV3QXdFQi96QUtCZ2dxaGtqT1BRUURBZ05IQURCRUFpQStjT0V6ZGx3eHMvUExyVGppNyt1TXIyN2N1Q0xDVllGcU1udExDZDBXWVFJZ1dmL0x2T0RXbE80RDlQK1cxZUMrNUJYbUg2MzF0R2VkNENCNTNuSTk5Qlk9IiwiTUlJQ0d6Q0NBY0tnQXdJQkFnSUVBVFQrRVRBS0JnZ3Foa2pPUFFRREFqQnNNUXN3Q1FZRFZRUUdFd0pWVXpFUU1BNEdBMVVFQ2hNSFQyNWxVM0JoYmpFaU1DQUdBMVVFQ3hNWlFYVjBhR1Z1ZEdsallYUnZjaUJCZEhSbGMzUmhkR2x2YmpFbk1DVUdBMVVFQXhNZVQyNWxVM0JoYmlCRVNVZEpVRUZUVXlCR1dESkdTVkJUSUV3eUlFTkJNQ0FYRFRJMU1ERXlPVEUwTlRRd00xb1lEekl3TlRVd01UTXdNVFExTkRBeldqQnNNUXN3Q1FZRFZRUUdFd0pWVXpFUU1BNEdBMVVFQ2hNSFQyNWxVM0JoYmpFaU1DQUdBMVVFQ3hNWlFYVjBhR1Z1ZEdsallYUnZjaUJCZEhSbGMzUmhkR2x2YmpFbk1DVUdBMVVFQXhNZVQyNWxVM0JoYmlCRVNVZEpVRUZUVXlCR1dESkdTVkJUSUV3eUlFTkJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVHbitReDE4RHA4WmVQWS9UNWhoNmpQZnlDTGYrNEQ1dndWV01JekhIcjdqUXk3WXNzNXhjNllzK25MRFplblBWM0pPQVZicHhaNjgvNWlmeXJ2T0VEcU5RTUU0d0hRWURWUjBPQkJZRUZMYy9RN0w0cDVnZXRHSFA2aDlSMUw3VDVRSEtNQjhHQTFVZEl3UVlNQmFBRkxjL1E3TDRwNWdldEdIUDZoOVIxTDdUNVFIS01Bd0dBMVVkRXdRRk1BTUJBZjh3Q2dZSUtvWkl6ajBFQXdJRFJ3QXdSQUlnUjhaeE41WnZCVjFLeWVkaEhkWW9XdnpaSEoyTmN6cm1ONFk0UWExc1RpUUNJQ0swdjFHUE55d0VJZjZEMjIrV25MZjkzL1hMRFhYelJuQkkzMWhYNkR0ZCJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFSZ0FBQUhDQ0FZQUFBQTBLOWJGQUFBQUJHZEJUVUVBQUxHUEMveGhCUUFBQ2tscFEwTlFjMUpIUWlCSlJVTTJNVGsyTmkweUxqRUFBRWlKblZOM1dKUDNGajdmOTJVUFZrTFk4TEdYYklFQUlpT3NDTWdRV2FJUWtnQmhoQkFTUU1XRmlBcFdGQlVSbkVoVnhJTFZDa2lkaU9LZ0tMaG5RWXFJV290VlhEanVIOXludFgxNjcrM3QrOWY3dk9lYzUvek9lYzhQZ0JFU0pwSG1vbW9BT1ZLRlBEcllINDlQU01USnZZQUNGVWpnQkNBUTVzdkNad1hGQUFEd0EzbDRmblN3UC93QnIyOEFBZ0J3MVM0a0VzZmgvNE82VUNaWEFDQ1JBT0FpRXVjTEFaQlNBTWd1Vk1nVUFNZ1lBTEJUczJRS0FKUUFBR3g1ZkVJaUFLb05BT3owU1Q0RkFOaXBrOXdYQU5paUhLa0lBSTBCQUprb1J5UUNRTHNBWUZXQlVpd0N3TUlBb0t4QUlpNEV3SzRCZ0ZtMk1rY0NnTDBGQUhhT1dKQVBRR0FBZ0psQ0xNd0FJRGdDQUVNZUU4MERJRXdEb0REU3YrQ3BYM0NGdUVnQkFNRExsYzJYUzlJekZMaVYwQnAzOHZEZzRpSGl3bXl4UW1FWEtSQm1DZVFpbkplYkl4Tkk1d05Nemd3QUFCcjUwY0grT0QrUTUrYms0ZVptNTJ6djlNV2kvbXZ3YnlJK0lmSGYvcnlNQWdRQUVFN1A3OXBmNWVYV0EzREhBYkIxdjJ1cFd3RGFWZ0JvMy9sZE05c0pvRm9LMEhyNWkzazQvRUFlbnFGUXlEd2RIQW9MQyswbFlxRzlNT09MUHY4ejRXL2dpMzcyL0VBZS90dDY4QUJ4bWtDWnJjQ2pnLzF4WVc1MnJsS081OHNFUWpGdTkrY2ovc2VGZi8yT0tkSGlOTEZjTEJXSzhWaUp1RkFpVGNkNXVWS1JSQ0hKbGVJUzZYOHk4UitXL1FtVGR3MEFySVpQd0U2MkI3WExiTUIrN2dFQ2l3NVkwbllBUUg3ekxZd2FDNUVBRUdjME1ubjNBQUNUdi9tUFFDc0JBTTJYcE9NQUFMem9HRnlvbEJkTXhnZ0FBRVNnZ1Nxd1FRY013UlNzd0E2Y3dSMjh3QmNDWVFaRVFBd2t3RHdRUWdia2dCd0tvUmlXUVJsVXdEcllCTFd3QXhxZ0VacmhFTFRCTVRnTjUrQVNYSUhyY0JjR1lCaWV3aGk4aGdrRVFjZ0lFMkVoT29nUllvN1lJczRJRjVtT0JDSmhTRFNTZ0tRZzZZZ1VVU0xGeUhLa0FxbENhcEZkU0NQeUxYSVVPWTFjUVBxUTI4Z2dNb3I4aXJ4SE1aU0JzbEVEMUFKMVFMbW9IeHFLeHFCejBYUTBEMTJBbHFKcjBScTBIajJBdHFLbjBVdm9kWFFBZllxT1k0RFJNUTVtak5saFhJeUhSV0NKV0JvbXh4Wmo1VmcxVm84MVl4MVlOM1lWRzhDZVllOElKQUtMZ0JQc0NGNkVFTUpzZ3BDUVIxaE1XRU9vSmV3anRCSzZDRmNKZzRReHdpY2lrNmhQdENWNkV2bkVlR0k2c1pCWVJxd203aUVlSVo0bFhpY09FMStUU0NRT3laTGtUZ29oSlpBeVNRdEphMGpiU0Mya1U2USswaEJwbkV3bTY1QnR5ZDdrQ0xLQXJDQ1hrYmVRRDVCUGt2dkp3K1MzRkRyRmlPSk1DYUlrVXFTVUVrbzFaVC9sQktXZk1rS1pvS3BSemFtZTFBaXFpRHFmV2tsdG9IWlFMMU9IcVJNMGRab2x6WnNXUTh1a0xhUFYwSnBwWjJuM2FDL3BkTG9KM1lNZVJaZlFsOUpyNkFmcDUrbUQ5SGNNRFlZTmc4ZElZaWdaYXhsN0dhY1l0eGt2bVV5bUJkT1htY2hVTU5jeUc1bG5tQStZYjFWWUt2WXFmQldSeWhLVk9wVldsWDZWNTZwVVZYTlZQOVY1cWd0VXExVVBxMTVXZmFaR1ZiTlE0NmtKMUJhcjFha2RWYnVwTnE3T1VuZFNqMURQVVYranZsLzlndnBqRGJLR2hVYWdoa2lqVkdPM3hobU5JUmJHTW1YeFdFTFdjbFlENnl4cm1FMWlXN0w1N0V4MkJmc2JkaTk3VEZORGM2cG1yR2FSWnAzbWNjMEJEc2F4NFBBNTJaeEt6aUhPRGM1N0xRTXRQeTJ4MW1xdFpxMStyVGZhZXRxKzJtTHRjdTBXN2V2YTczVnduVUNkTEozMU9tMDY5M1VKdWphNlVicUZ1dHQxeitvKzAyUHJlZWtKOWNyMUR1bmQwVWYxYmZTajlSZnE3OWJ2MFI4M01EUUlOcEFaYkRFNFkvRE1rR1BvYTVocHVOSHdoT0dvRWN0b3VwSEVhS1BSU2FNbnVDYnVoMmZqTlhnWFBtYXNieHhpckRUZVpkeHJQR0ZpYVRMYnBNU2t4ZVMrS2MyVWE1cG11dEcwMDNUTXpNZ3MzS3pZck1uc2pqblZuR3VlWWI3WnZOdjhqWVdsUlp6RlNvczJpOGVXMnBaOHl3V1dUWmIzckpoV1BsWjVWdlZXMTZ4SjFsenJMT3R0MWxkc1VCdFhtd3liT3B2THRxaXRtNjNFZHB0dDN4VGlGSThwMGluMVUyN2FNZXo4N0Fyc211d0c3VG4yWWZZbDltMzJ6eDNNSEJJZDFqdDBPM3h5ZEhYTWRteHd2T3VrNFRURHFjU3B3K2xYWnh0bm9YT2Q4elVYcGt1UXl4S1hkcGNYVTIybmlxZHVuM3JMbGVVYTdyclN0ZFAxbzV1N205eXQyVzNVM2N3OXhYMnIrMDB1bXh2SlhjTTk3MEgwOFBkWTRuSE00NTJubTZmQzg1RG5MMTUyWGxsZSs3MGVUN09jSnA3V01HM0kyOFJiNEwzTGUyQTZQajFsK3M3cEF6N0dQZ0tmZXArSHZxYStJdDg5dmlOKzFuNlpmZ2Y4bnZzNytzdjlqL2kvNFhueUZ2Rk9CV0FCd1FIbEFiMkJHb0d6QTJzREh3U1pCS1VITlFXTkJic0dMd3crRlVJTUNRMVpIM0tUYjhBWDhodjVZelBjWnl5YTBSWEtDSjBWV2h2Nk1Nd21UQjdXRVk2R3p3amZFSDV2cHZsTTZjeTJDSWpnUjJ5SXVCOXBHWmtYK1gwVUtTb3lxaTdxVWJSVGRIRjA5eXpXck9SWisyZTlqdkdQcVl5NU85dHF0bkoyWjZ4cWJGSnNZK3lidUlDNHFyaUJlSWY0UmZHWEVuUVRKQW50aWVURTJNUTlpZU56QXVkc21qT2M1SnBVbG5SanJ1WGNvcmtYNXVuT3k1NTNQRmsxV1pCOE9JV1lFcGV5UCtXRElFSlFMeGhQNWFkdVRSMFQ4b1NiaFU5RnZxS05vbEd4dDdoS1BKTG1uVmFWOWpqZE8zMUQrbWlHVDBaMXhqTUpUMUlyZVpFWmtya2o4MDFXUk5iZXJNL1pjZGt0T1pTY2xKeWpVZzFwbHJRcjF6QzNLTGRQWmlzcmt3M2tlZVp0eWh1VGg4cjM1Q1A1Yy9QYkZXeUZUTkdqdEZLdVVBNFdUQytvSzNoYkdGdDR1RWk5U0ZyVU05OW0vdXI1SXd1Q0ZueTlrTEJRdUxDejJMaDRXZkhnSXI5RnV4WWppMU1YZHk0eFhWSzZaSGhwOE5KOXkyakxzcGI5VU9KWVVsWHlhbm5jOG81U2c5S2xwVU1yZ2xjMGxhbVV5Y3R1cnZSYXVXTVZZWlZrVmU5cWw5VmJWbjhxRjVWZnJIQ3NxSzc0c0VhNDV1SlhUbC9WZlBWNWJkcmEza3EzeXUzclNPdWs2MjZzOTFtL3IwcTlha0hWMElid0RhMGI4WTNsRzE5dFN0NTBvWHBxOVk3TnRNM0t6UU0xWVRYdFc4eTJyTnZ5b1RhajlucWRmMTNMVnYydHE3ZSsyU2JhMXIvZGQzdnpEb01kRlR2ZTc1VHN2TFVyZUZkcnZVVjk5VzdTN29MZGp4cGlHN3EvNW43ZHVFZDNUOFdlajN1bGV3ZjJSZS9yYW5SdmJOeXZ2Nyt5Q1cxU05vMGVTRHB3NVp1QWI5cWI3WnAzdFhCYUtnN0NRZVhCSjkrbWZIdmpVT2loenNQY3c4M2ZtWCszOVFqclNIa3IwanEvZGF3dG8yMmdQYUc5NytpTW81MGRYaDFIdnJmL2Z1OHg0Mk4xeHpXUFY1NmduU2c5OGZua2dwUGpwMlNubnAxT1B6M1VtZHg1OTB6OG1XdGRVVjI5WjBQUG5qOFhkTzVNdDEvM3lmUGU1NDlkOEx4dzlDTDNZdHNsdDB1dFBhNDlSMzV3L2VGSXIxdHY2MlgzeSsxWFBLNTA5RTNyTzlIdjAzLzZhc0RWYzlmNDF5NWRuM205Nzhic0c3ZHVKdDBjdUNXNjlmaDI5dTBYZHdydVROeGRlbzk0ci95KzJ2M3FCL29QNm4rMC9yRmx3RzNnK0dEQVlNL0RXUS92RGdtSG52NlUvOU9INGRKSHpFZlZJMFlqalkrZEh4OGJEUnE5OG1UT2srR25zcWNUejhwK1Z2OTU2M09yNTkvOTR2dEx6MWo4MlBBTCtZdlB2NjU1cWZOeTc2dXByenJISThjZnZNNTVQZkdtL0szTzIzM3Z1Tys2MzhlOUg1a28vRUQrVVBQUittUEhwOUJQOXo3bmZQNzhML2VFOC9zdFJ6alBBQUFBSUdOSVVrMEFBSG9tQUFDQWhBQUErZ0FBQUlEb0FBQjFNQUFBNm1BQUFEcVlBQUFYY0p5NlVUd0FBQUFKY0VoWmN3QUFMaU1BQUM0akFYaWxQM1lBQUxLQ1NVUkJWSGljN0oxM25CMWx1ZmkvN3pzenArMDUyM2ZUS3dtaEYra1Fpa2lUTGlBcUNNcFZWQlRSNjdYKzlDcnF0Vng3TCtpOUtsWDBLcUNpTkpXT2dNR0VVRUlnQ2FsYnNuMVBuZksrdnovbXpPelpFa2kyWmRuTWw4OWhzM3ZtbkROblp0NW5udjRJclRVUkVSRVJFNEhjM1RzUUVSRXhmWWtFVEVSRXhJUVJDWmlJaUlnSkl4SXdFUkVSRTBZa1lDSWlJaWFNU01CRVJFUk1HSkdBaVlpSW1EQWlBUk1SRVRGaFJBSW1JaUppd29nRVRFUkV4SVFSQ1ppSWlJZ0pJeEl3RVJFUkUwWWtZQ0lpSWlhTVNNQkVSRVJNR0pHQWlZaUltREFpQVJNUkVURmhSQUltSWlKaXdvZ0VURVJFeElRUkNaaUlpSWdKSXhJd0VSRVJFMFlrWUNJaUlpYU1TTUJFUkVSTUdKR0FpWWlJbURETW5kMVFDREdSK3pGdFdMcjNVaXpMSXR1WHBhYXVtbHcrVHp3V3AxQW9ZQm9tcG1raWhFQXBoVzNiWkRJWlBNK2p1N3ViNnVwcVROT2t0N2NYeTdKSXBWSTRqa00ybXlVZWo1Tk9wK250N1NXWHk1RklKS2l0cmNWeEhHS3hHTjNkM1hpZVIyTmpJNFZDQVlCME9vM1dtcjYrUGpaczJCRHU0NHdaTTRUak9QK1d6K2ViaFJDRm5UMjNnb0h0Tks4K1R5dDRYOC96a3VsMHVyMVFLUHh2THBmVEFJWmhzSERSUXRLWktxU1U1QXNGbkpKRE1wV2t0OXYvL3JXMXRSU0tCV0pXalA2K2Z2TEZQTWxVa3VwTWhrSytTQzZYSTUxT2swZ2t5T1Z5S0tXb3FxckM4eno2K3Zxb3I2L0hNQXk2dXJySVpETFl0bzFwK3VmQWRWMmtsQlFLQlZLcEZJVkNnWmRmZnBsVUtrV3hXTVJ4bkowLzZYc29Pek5UYmFjRlRNVFVSbXVOMW5yUWpVQktpVklLei9Pb3JhMGxrOGxRTEJaUlNzMDJUZk9ubVV6R01FMFR3ekF3RE9QVlA2UkNEZ2s5WENnTkZUb0NnZWQ1dUo0TEdrL0g5VjIxdGJWYnRkWVVDMFU4NVNHa1JFb1o3cmNRSXZ3dUVhOTlJZ0h6R2lCWWJNSGk4end2RkNaQ0NFTUlrVEZOczFvSTBhUzFiaFJDMUdxdDZ4M0hxVk5LMVZxV1ZkM1kySmlKeFdMVnlXVFNLcFZLYzRRUXhrZ0xPL2ozU0NpVUwyVDBZRzBtM004S0FSTThMeTJKcFMyVVVrWWlsYmdySG85djFWcmJxYXBVdjRaKzI3WjdUY1BvVlVyMUNDRzZ0TmJkcG1sMm1LYlpMcVhzRjBMMFN5azlOSU8rZCtWeGlaaTZSQUptQ3FLVUF2eUZMcVUwRGNPWUlZU1k0M25lZk11eTV0YlUxTXlXVXM2M2JidFJLZFZVTEJickxjdXFzeXlyS3AvUEEvN2l5MmF6Z0svSkFKUktKUUFzeTZwWW5CcXRCeS9XSFMxY0pSUTdZUmtOUnZqZlF4Z0NJY1FCUmFkNGdFQ0VBaTJYeTRYZlZRaEJ2cERIakprSUlYTDl1ZjV1cFZTWDBtcTd0R1JIZFUzMVptbklMWjduYlJWQ2JESU1ZNnVVc2swSTRiN1Nma2ZzUGlJQnM1dW9OR25LbW9RSkxCWkNMRWtrRW91QlpiWnRMeEpDTEl6SDQvT0E2bncranhBaUZCQzJiWWZ2VlhsWEg2cUJCQUlMZk0xQ2k4cUZXTlkxeXBvSndiOEg0VCs1ODM0NEhiNUc2d0hOUnZ1U0REV0NsRkphSThySHhCTWVhS28wVkVraDV0cXVqWlFTd3pEd2xFY3VuOE9RQnNsa3FnL1lVaXFWTmdnaE5zUmlzUmVFRU91Qmw0UVE2NldVYnVEdmlvVFA3aUVTTUpQRVVQUEROTTI5dGRiN3VxNTdpTmI2MEdReXVhL3J1dk5jMTAwR3ZoUGJ0b2NKREszMWdNQVF2bmdJN3Y3K24wU29OUVRiU0NRYTBDaTAwSVBObTByQjhpb0lqSUhOeFpDWEJqSWwzRll3U05BdzJLelMvcGNKdDlKb3RCcXFSZmtDQ2cxYWFSelA4VFVmTkVwcERLMnJYVmZ2SjRUWUw5RFNpc1VpUUNHWlRHNzJQTzg1ei9OV3h1UHhsYVpwUG0vYjl0cktZeFV4OFVRQ1pxTFFWUG8zTE5Nd2x3SEhhSzJQVTBvZG9yWGVSd2dSeitmemFLMlJVbzU0bDVWU2xvVUlVRjRjQW4rUmFha1Iydi83d0VyVmFGSFdrTkNneTc0VHlvdFk2L0QxUWcrOFY3ajRnN1UzSUJzR29ZWnFTSlhDRDE5Z29BVkthTFJXNGZ0cTlDRGhKc3BxMDRDd0VnZ3BRQWhrcFd5cU9KNUtEMmhDUWd0ZjhKUzFuc0Naalgrc2trS0l2WE81M041Q2lQTk4wNlJVS3BXRUVHdUVFQ3M5ejN0RVN2bVlFT0lGclhVWUx2SThEOWQxQjJsOEVXTkQ3S3pxR0VuOVY4YzBUUll2WGt3c0hxTy9yMzl4ZFUzbWhFS3BlSUpTNmdpaHhRR1ZDd0lxekpsZ2dRM1JQb1NRQ0RIZyt4amtKd252K3lDMUhQeDNQVmpBQUlNMGhWQ1lWRHByeXh1TUdIN1dBNjhiK2xOSU1XZ2IvNjBxQkY3Rno4Rk80UEtmUmZCMHBSWVdQT2NMS2hFY2svTDdDQVJTU0lRVXd3VE5TSThBS1dXNDMrV28yVFBBazdGWTdLRkNvZkNBYmR2clhkZWxxNnNyOUZkRjdKaWRrUjJSZ0JranBtbFNXMXRMVlZVVjZYVG1PRmM1cDJpdFgrKzY3dEZLcVRpaTdBTVJZR0FNMVd3R3pCc3hvR0dFaTMyUTQ5WC9uLzk4aFY2Z05RU0xqSXBGVmVuN3FEUTlLZ1RFVU4vTnExMExRMDIxVjl0MjZEVVRDcDZLM3l0TnVVQTdxL3c5ZUVsZ0dnVWZLMFNnOFF6c2x5d0xaQ0VFc255c1BlMmgxY2hDSi9CL2xUWElVaXFWK29mcnVuK1hVdDZYeldZZktSUUtkSFIwNExydUszN1hQWlZJd0V3UWxtVlJWVlZGS3BVaWs4a2NIWXZGenZZODd4emJzUTl5UGRmUDd4aTZ1S1RBeEVBSW82eVZCUDZId00rZ0tFdVpJY0pDZ1JibGhWWDJ2d3dWSmd3KzJjTStlNHFkdTFlNjVvYjZxdnlmdmlDU2xZSlpsaU5Sb213dStac2hoVVFMVmRaeUREOTZGYndlNlFzZDVhR1VDbytsLzZiK1p3ZUprSWxFWXJWbFdYKzBiZnVQaFVMaEg1MmRuZVJ5dWRDeEhoRUptSEVubVV4U1YxZEhKcE5abEVxbDNwTFA1OStzbEhxZDY3b0RKZ21FRjN1NEtDcnU1b0YyZ2FqUVBDcTFqckkvUVN1TjBxOGUvZGdUenNzckhZUFF5UzByektaQThGUTR3RFVERVR0cFNLU1FTQzFSV29YK0c2MzBZQk5RQ09MeE9JWmhQSlZJSkg1cjIvYXR2YjI5RzlyYjI4TnM2VDJaU01DTUEwSUlhbXRycWFtcE1hcXFxczdUV3IvZGRkMHpiZHVPRHlTbmlRRTFYbWlFNGZ0UG9HeWVDQ2pIYTFGNjROK2hFS2tRSm9PaVJtTGtoTGFJd1F5OWhnT3RSd2FDUjBxa0ZBUEtpZ0Jrb0JVTkNCeWh4Q0R0WnFnMmxVZ2tTckZZN00rTzQ5eVV6V1p2eitWeVhtZG41eDRiQW84RXpCaXdMSXY2K25yUzZmUzhSQ0p4aVZMcTBsS3BkR0J3NFEwS0RaZnZqQWhRK0pFTXJYMXBJc29PV0U5NWFLVlFnWVl5Ukpqc2FjZDNNaGpxVEpkU2hscU9OTXFPY1ExYWFLUXBNZkJOS2lrbFFndVVwd1lKbXlEYUo2VWtIbyt2dGl6cjVsS3BkSE4zZC9lbXpzN09QYTUrS1JJd295QVdpMUZkWFUxMWRmWGV0YlcxNzgvbjgrOHNsVW8xU3FrQkoyVFpCREtrZ1JZYWplOC84WVdLcjNVb3BWQ2VoOUorZm9kU0tveWE3Q25IY2lwU0tkaUY4S05KdnZBUkNPRkhtWkNVNjdPazc4ZlJBcy8xUXUybTh2d2xrOG5lWkRMNXk1NmVuaC8xOWZXdDdlM3QzV01pVUpHQTJRV2tGTlRWMXRQWTFMalVOTTEvTDVWSzczSmROemFpdG1KSWxQQTFsTkR2NGczNFR6elBHNVpMTWQyUDMydVJRWTV4L1BOcVNDT01UaUY4NTd4aEdKalNESXRIWFh2QWtSOWNIN0ZZekRZTTQzK1VVdC91NnVwNmNmdjI3ZE0rbnlZU01EdEI0R09aTVdQR1FpdG1mYVNRTDF5cGxFcjRGNGNvNTdBSmtQN0ZwblM1VHNpM2gzd25vVGRjcUV6WDR6V2RDWDB1NWZ5ZW9Nbzg4SzBoQldaWjJHaXRVYTdDOWR3dzNhZGN6bERNWkRJL2MxMzMyMXUyYk5rd25YMDBrWURaTVFMUTFkWFZ6Sm8xcTk2S3hUNWNMQlUrNk5oT2JaanNWbmF1U3VuYjdKNVdBMG11bmc0Rml2SVVTcXNSOHo0aVhydFVtbEpCUzR2UWlWOTJIRnVtNVp0UG5vZnJlZ1F4YjYwMVZWVlZQYVpwZnI5VUtuMW4yN1p0WGIyOXZUQmlidlJybDBqQWpJeXdMRXMzTlRWUlgxOS9tZWQ1WHlnVUN3dGQ1VGNnTWpEQ081aVdRUTZLbjJ2aE8vejhpeW4weVV5ZjR4S3hBd0poRTJnMGhtR2dwZjgzeXpBeExRdUJ3SFBLdlcvd2t5c053eUNWU3Iwc2hQaHNWMWZYRGR1M2I2ZFVLazBiSVJNSm1NRklRTlhVMURCejVzd2w4WGo4VzlsczloelhkUWN5YVlYQ05Ld3dEd0pBYUlIcnVuaWVoK2Q2WVg3RU5EZ2VFYnRJcU5WSWdXVmFHTklBNlVlaERNTWdac1lBQmdtYUlIa3ZrOG44eWJidGoyemR1dlhGN3U1dUtGK1B1KzNMakFPUmdQRVJnTFlzaStibVptcHFhcTV4WGZlL2lzVmlKaFFVR29RQkdHS2dQa2NORkw5NW5oY0psWWhCQkVXamhtbGdtbVpZNm1FWUJwWmxnUWJYZGtPZm5kYWFSQ0xSbjB3bS83T3JxK3U3VzdkdURjTGFyMW1OSmhJdzVaT1hUcWVaTjIvZS9vWmhmTHUvdi8vVUlKOEJUVGtuUW9RVnlGSkxQTmNYTEs3blJvSWw0aFVKMW85aEdMNVBSZ3FVVUZpbWhXbVlLRS9oT3U1QTdaY1VaS296OTJtbC8vM2xEUzgvMDlmWEI2OVJJYk1uQzVoeWtCRTFZOFlNbXB1Yi82MVVLbjIvV0N5bUtnV0dsQkl0QjB3aHJUU3U0K0s0VGlSWUluYUpZQjFacG9WaEdZRGZOaU1XaTJGZytKcXc2K0VKMzh4T0pwTDVWQ0wxd2RiVzF2OXQyZFlDdnNsVXJrUjdiYkNuQ2hnQklLWFVjK2ZPcGE2dTdnZlpiUFlEanVPRXJTT2w4RnM0NnVDK29mQUZpK09nMGVGMkVSRzdTdUQ4ajFreHBDbERzeWxteFZCS1VYUktZV2MvMHpLcHFhNzVZYlkzZS9YNjlldnhQQzhNVk83V0w3R1Q3R2tDSmp3NXlXU1NlZlBtTFRZTjg1WmNQbmNrTUVocjhZdHFOUktKNTNqWWpvMVNLaElzRWVOR0VFV0t4K0lnL1JJU0t4WkRTa21wYUtPVTUyOG9vTGE2OWdtMzVMNXR3OHNiMXBlTEtGOFRKdE9lSkdBQ2swaW4wMm05WU1HQzVRcDFTN1kvTzFjS1NaQXdKODFnTXorWHhYRWNnaWpTRlA5K0VhOUJnZ3A3eTdUOFBzcG9wQ0V4TFJQWGNRZUZ0R3VyYTdkb3BkKzJjZVBHaC92Nys4UHJtU2tzYVBZVUFSUDZXMnByYTVrelo4Nmx4Vkx4eHFKZDlBdlRkSG51anVFNzN3eHQ0RHB1Mk84MjBsb2lKcHBCMmt3NUhjS0t4ZEI2Y09QMmVDeE9PcFcrYlBQbXpUZDJkSFRBRlBmTDdJenNlQzJ2TGxIeFVOWFYxY3lZTWVPYWtsMjYwUzdaR01MMGMxWU1nVEQ5REV6cFNleWlIVFNHam9STHhLUVExREFWaWdVLzVVRkx2eUJTUUR3ZUR6WG9vbDBrWDhyZk1Idk83QS9WMWRVQjVTcmFnY2RyanRlcUJpTXFmcXJtNW1hYW1wbyttOHZsUGw5WjdTcE5BVkw0allVOGhWMnk4WlFYQ1phSTNZWlNDc3V5c0dMKzZCbHBHcGltUWNrdStiMkRGTVNzR0lsRTRuT2JOMi8rUWs5UEQweFJUV1k2bTBpaDV0TFUxTVNzV2JPKzJOL2YvNWtnSVU1cmpXRkp2MmwydVZha1ZDcEZKbEhFbENDNER1UHhlS2hsbTVhSlZ4b29tRFZORXlubGw3WnYzLzZacnE0dUFBTmZvNWt5UW1hNm1raWhjTWxrTWpRMU5WMmJ6V1kvRTZiOGc1K0hVTzdkNHJwdVpCSkZUQ21FOE92YWlzV2lMekk4UCt2WGpKbGhJNnp5K0pSUHo1a3o1L00xTlRYNFcrRkhMRjVEdkpZMG1FRm1VZG5uOGgrdTYzN0RkZDJCSEJmVEQwTkxMWEZzaDFLcE5HaTRla1RFVkNHb2JVb21rMzV4TFlwWVBJNWJHcGpOWkZrV1VzcVB0YmEyZnFQQ1hKb1NOVXpUU1lPcEZDNGs0Z2xtejU1OXVkYjZHNTduSWN2OWI0WHBGeTFLN1R0elM2VlNXR1lmRVRIVkNOcDRGb3ZGMFBscjJ5V01tQkhlTUIzSFFXdjk5WG56NWwwZWo4ZURsd2JyZHNwZjJLOFZBUk1nQU5YUTJIQ0twN3hmMmJZZFZrSkxzOXhyRllOU3NZVHQyTUZ3cllpSUtZMFFBcnRvRHdnWng4R3daSGpqdEcwYjEzVi8wZHpjZkRLKzlpSjVqYXpkMTRLSkZIeXdZWnFtTzJmT25MMnNtUFhQZkNsZmF3b1RORWhMK3VuL1dsSXFsbkE5Ti9LM1JMem1VRW9SajhVeExML1hzMlZadnVPM1hKR2RUQ2I3Y3JuY1lWdTNibjNKZFYyVEFhZnZibkg4VGdjVEtYRG9Hb0RiMk5ob1pUS1pQNVdLcFZwREczNG5PYk04aEF1SlhiSnhYQ2NTTGhHdlNhVDA4Mk04MS9QYlBiZ3VwbVdHTi9kaXNWaGRVMVB6cDRhR0JoTndHWEQ2VGxsVGFTcXZ4T0NnU2NDTHgrT2tVcWxmWnJQWmZZTHUvcWIwV3hsS0xYRktUbVFXUmJ6bUVWTDRXZWFlUDQzQ1ZXNDRiVkpyVGFGUVdKYkpaSDRWaThWZ0lMSUVVMVRJVEZVQk04aXBheGlHbmoxNzlsVkNpRXRjMXgzbzQyTDZtN20yR3dtWGlHbEJrTlZybDJ5L3FieW5jUEg4WUVVNTdjSXdqRXNXTEZod2xXbWFGWU52Qi8yY01reEZBVk41c0F3aGhOdlUxTFN2WVJqZnRSMjdQSHU0SEk0V29GMUZ5Uzc1b3lZaUlxWUpHaDNPVi9LVWg1WitRaDc0a1NYVE5ML2IzTnk4cnhEQ0JVeW1vSENCcVNsZ29Ed0ZBbkRTNlRRMU5UVTMyYlp0QlozK2pTQmlwQXlLeGRMQVFMU0lpR2xDWUJJNXRvT3AvWVpWMHZRalMxcHJTcVdTVlZkWGQxTW1uUUd3OGYyVU1NVUV6VlFUTUpYYWl6Qk5rN3E2dWs4N2puTm9NQnhlbW41bHRFUlFLaFdIVGRxTGlKZ3VDT0diUkk3aitMMkxYQS9EOUUwbHJUVWxwM1JvWTFQaloySldMSGpKbFBQSFREVUJBd05SSTZlbXB1YUFlRHorZWNkeHdsRWl3aEFZUXVJNm5wOHZFUGxkSXFZeFVrcS9wWU1DdE1iRDh5ZUxvaWc1SldLSjJMVTF0YlVIQUE3K3Vwa3l3Z1dtbG9DcERFbDc4WGljNnVycUg5cXViUVRKZEVHbXJ2SjBXQUlRRVRIZEVVSlFMQlVSU0R6UFF4czZIQTVZc2t0R1RWMzFqOHBadmg0RFFtWktDSnFwdEVLRGd5SUJyenBUL1hZaHhRbXU2L3JWcDRidmR6RXdLQmFLNGRTOWlJanBUbEFjYWRzT3BqQlJuajlyQ2Z6Uk9zSVV4MWZYVkYvRzhJTEkzYjVBcG9LQXFaUzJCbEJLSnBQcGRDYjlGZGQya2VWZEZCSU00ZWU3ZUc3VTB5Vml6MEpLaWVzNktFOUJ4YWdVZ2NBdHV0VFcxSDQ1bFVxbGdSS0RUYVhkS21TbXlpb05OQmNCVUZkWDl3bXQ5ZHhnbG94aEdRZ3A4UnpsRnpDYWtkOGxZcytrYUJmOU1jYWV3cENHZndQMkt3bm1OalkyZnFLODJhRDF0RHVaU2dMR0FFclYxZFh6azhua1J6elBUNWNPaHM4TFhjNXdKREtOSXZaTWhQQUZpK2Q2Z0JnMENjTjFYVktwMUgvVTFkWE5aN2dXczl2WTNRSm1XTC9SVENaenJWSXFwYlUvODFkWWZtYWo1M2hCRnVOT0ZWbEZSRXhIaEJEWWpnMGFGQW9wUlpnem81UktaaktaYXlzM1p6ZHJNcnRUd0ZUV0dwbEFLWjFPSDVCTUpxOXdYQWVCOWxYQWN0dkxZTnBpUk1TZVRDQk1QTWZGMEFhZVVuNXVtUEExL0ZRcWRVVW1remtRWDR1cHpQRGRMWXRuS21nd1lZZXU2dXJxL3d4TW95QXNMWVhFZGZ3QjlKRmpOeUxDZHhzNHJvUG5LUlRLNzRkVVhzcWU1MUZmWC8rWjhxYTd2WGZNN2w2eGdlL0ZycXFxT2l5WlRGN3N1djR3S21uNFhiMjA1NmRMUjlwTFJNUUFXbXRjMTgvd1ZVcUJTVmdNbVVxbExzNWtNb2N4VUVLdzIvSmlkb2VBcWN4M2tmaXhlMnBxYWo2a2xBb2ljUDQ4by9JQmkwYU5SRVFNUmtvLzZVNTVDcVdWSC95UUFxMTBvTVY4cUx5cDd4SGVUVUptZDYzYTRNdWFnSjFLcGZaT0pCSnY5YlVYN1JkMUJkcEx1WUZVNU5pTmlCaU82N3BJTGNQRVV5RUVqdU9RU0NUZVZsVlZ0UXhmaXdsOE1aTXVaSGFYQmhOOHRnRElaRElmMEZwYndRYUdPZER3V0hsUk1XTkV4RWdFeFpDZTUvbC9rRG9jMGFhMU51dnE2ajRRYk1wdVVpWW0rME1yaFlzRThvbEVZbllxbFhxbjMwaEsrOFdMd3RkZW9vemRpSWhYSmhBeVFwVUh1b21CbTNNcWxYcEhNcG1jRGVRWjdPeWR0RHYyN2xxOVFXaWFtcHFhZDBncHE3WFdmdWRpRTZUd1M5T1ZqclNYaUloWFFnaC9jcW5uK1dPc2hRUWhDRXltNnRyYTJuZVVON1hZRFRreHUwT0RDU1JweVRDTVpDS1JlSy9ydWdqOEdURlNTb1R5YmN0SXVFUkV2RHFCa1BHVDczeG5iNkRaVkZWVnZkZXlyQ1JRWkdEdFRkckNNaWZyZ3hnY1BUS0FZanFkdnNBd2pBV2xrdCtWempBTURHSGcyQTZlNTAxWXI1ZklZUnl4dTVpSW0yWWdZTFR5aFF0Q0FINDBLWkZJTEtpdXJqNjNzN1B6VmlER3dLZ1R3U1NNTzVsTUFSTWdBU1dFRU9sMCtvckFRUlUwbEVMNTl1TkVhaS8rS05rb01oVXhlZmdadUdyaXJqa05ydU5pR1JaS2xGMEw1ZEVubVV6bWlxNnVydDlvclgwN2FoS1pMQUV6Vkh2Sko1UEpRMkt4Mk9tTzR3QitLMHhwU0Z6YkhWVEVOYjVvdElaVXNnckRORkVxRWpBUms0T1V2c21TejJjblJvdVJ2aFpqcVJoQ2xuTmkvUG9rRW9uRTZWVlZWWWRrczlsL0FWVU1hREV3d1ZyTVpHb3dsZmFmcnFxcXVnQUd6SlVnc1M3VWFNbzFGK09QUUFTenJDTVhUOFFrTXRIWG05SUt6L013cFlIRzczcm5KNjlxMHVuMGhXVUJFOXpvTlFOSmVCTW1aQ1pEd0ZRbStFaWdhQmhHT3BsTVhoaVVCUmpsc2dEbHFkQzVPNUhtaTlZNmZFUkVUQllUZmIzNWpsMEgwelQ4K2lRaDhmQ0M4b0VMVGRQOHF1dTZSUVo4TVJQdWg1bXNLRklnWUN6QVRhVlNyemNNWTkvZ2dFdERZbURnT200MEpTQWlZcFFNaEt5OThIWWV0TnUwVEd1ZmREcjlldnlSczVXWnZSUEtaQWlZU3UxRkExUlZWWjBmcUc1UytBMmxORHJLMm8ySUdDT2kzSWdLemFBOE1nK1BWRlhxVGVYTk5KTTAxM3FpQmN6UXdzYWNaVm4xaVVUaWphR3Z4ZkJIa1hpZWgrdTVVZVp1Uk1SWUVPQzVIa0w3Y2tNTGY5U0o3ZHJFay9FM1dsYXNBY2d4MkNjNllVSm1NZ1JNOE5NRVZES1pQRlVJTVN2Y1FBb01ZZUM1WHVRVGlZZ1lJMElJUE9XYlNSSVpya0N0TklZMFptWXk2VlB3L1MrVFVnQTVHZXJDb096QlpESjVibWdlU1Q4MEhkUWRSZVpSUk1UNDRIbGVPRTQ1bUN1bXRDS1ZTcDFiM2lUb3hUU2hUS1NBcWRSZUpKQzNMR3RXTXBrOFF5bFYvdlJ5U3JNM2tia3ZFUkY3Rm1HdkdGWHVkaWVGMzlMQjFTVGlpVGRhbGpVTEtEQzR5bnBDN3U0VHZhSmx4Y05KcFZJblNDbnJBd0VqeSthUjlqUktxd25lbFlpSVBRZWxGRW9wakhKRHU4RDVhNWhHWFZWVjFRa01kTHViMEphYUUvWEdZc2hEQWlRU2lUZUV3a1hJZ1pFTFhsVFlHQkV4M2lqUFgyc0NFYTR2cFJTcFZPcVU4aWFWQ3NDRStHSW13OGtyZ1pKcG1zMnhXT3lVSUhva2pYSnBnQnMxOUk2SUdHK0VFTGpLUlFkbWtoaG9DaDZQeDk5Z211Wk0vTWtERXpwMVlDSlhkU0FWRGFBWWo4Y1BNVTF6VVJncGtuNG5kTS96b2puVEVSSGpqQkRsL3J4S2dkQm9xUWFTN2l4clVTcVZPaGpmRDJNeWdTMGNKa0xBRERXTmd1alJDY0JBNzFCWlRnQXFSNCtpRUhWRXhQaWpQSTFRRXExOVV5bFlaOGxrOHZqeUpwWHJkTnpOcEluMndVakFFMEpZOFhqODZEQzVUdnJ6amp6bFJhVUJFUkVUaUtxd0VNS2J1bThtSFVPNWRJY0p6SVdaNkRDMUJBcnhlSHlaYVpwSGhwWFRVaUNOY2x2TVNNQkVSRXdJWVNNcXJmMUticW5EamdXV1pSMlJTQ1Qyd1RlVEpteDIwbmdMbUtIbWtRbDQ4WGo4RUNsbEpoQW1VdnJqWUpWYjluSkhBaVlpWWtJSWEveDBlVm1XbDVwaEdKbGtNbmt3ZnN1R3luRDFsRGVSS211UEJFQThIait1OHRrd25iazhVQzN5djBSRVRBeUJZOWUvbGV1dzA1MVNpbmc4Zm16bHBreEFSR2tpZlRBU3NJVVF5VmdzZHRqQTdCYkNDWFJhUmRHamlJaUp4bThJcnRCQ2grVUQ1VTUzaHdzaEVremdpTm1KakNJRi9wZDlETVBZUDdBRnBaQVl3a0M1S3NyZWpZaVlZRUlOeHROSUpOb1k2SFJuR01iKzhYaDhYL3lKQTFNK2lqVFUvMklBWGlLUk9GZ0lrUW84MlVGQ25hZThjZnpvaUlpSVYwSXJqYWhZN3RvZmNwZ3E1OE5VK21IR1ZkQk1oSk0zOEw4WUFLWnBIaHBHajhxaE1xVlVsTDBiRVRGSkJENVByWFc1Yk1CZmQyVS96T3ZLbXcwVk1PUENSRVdSSk9CSkthdGlzZGdSQTlYVC9zTlQzclQzdi9nOWYxKzVEK3VPbmdzSzFWN3ROVHY3R2EvMmZOQSs0NVdlSDJsL1BNL3Y5N3JyN0dCL1J0cUhDUTRBN0FtOW1RZXllajIwMENCMCtMZFlMSGFFRUtJS1g0c1pkd0V6RVUyL1EvK0xaVmtMVE5QY3I3TEEwY0RBOFJ6MHhNOTgyaTFJS2VudTdpYVh5eUdsZ1Q4cVJST0x4YWl0cmNVMFRhU1U5UFgxMGR2YlJ5YVRvYmEyQnEwMWhVS0I3dTV1VE5NL0xZN2pVbGRYUzFWVkZRQmRYZDNrY2xrYUdob29sVXBrczlsUUMxUktrMGpFcWF1ckN5ZGsrcC9SQzBCZFhSM3BkTnJ2RTFMT25PN3E2c0p4WEN6THhMWnRFb2tFZFhWMTRmZklablAwOUhRVGk4WFFXdU82THZYMTlhUlNLWHA2ZXBEU0lKbE0wTnZiUjAxTmRmaStScWtmb2R4QmJmU0ZWamhtQ29uQ2RBdllSaElkVHlQUWFNL0Q3T3RHZWk1dWRSMDZrVUlWQ3hqWlBrdzBIdUNtMHNoRUNpcjhkbEpLZW50N0tSUUs0YkVHU0tWU1ZGVlZoWGtnM2QzZEtLV3ByNjhMaC9sNW5rZFBUdytsVWdtQVdDeEdYWjMvL0hRVU9Fb3BVSDRIU1MzOFk2aTB3alROZldPeDJMeFNxYlFSdnhuNHVONzF4MVBBREsyZ0xsaVd0WThRb2tZcFJUQWFWZ2dSVm5sT1J3cUZBc3VYTDJmSmtyMG9GQW9ZaG9IcmVxeGJ0NDRWSzFhZ05TUVNjUTQ2NkdBT09lUWdWcTllemNxVnE4am44OVRVMVBEMnQxL0svdnNmZ0JDd1pzMEwvT1V2ZjZHMXRaWHE2bXFPTys1WWxpMWJ5a01QUFV4VFV6Tjc3NzJVWXJHSVlSZ29wWGpoaGJVODhjU1RaRElaSE1kaHI3MzI0cGhqamdiZy92c2ZZTnUyYmFSU0tWelhwYk96azJPT09ZYVRUMzQ5TTJmT1lNT0dqZHgvLy8yc1dyV0t4c1pHT2pzN3FhbXA1ajN2dVpMOTk5K2ZZckhFMDArdjRzOS8vak5idG16aHdBTVA0cTF2dlpoRUlzRmYvL3BYL3ZhM3YxTmJVd05Db0JZZWdZNVhJNVFUSGhkbFdNVDZ0dUtsR3JIVHpTUmFuNmJVdWc3UFNoRlRIdnFFMDNIbUw4WmMvVS9jRlkrUnFxbkZQdlprbk9aWmlONHVrazgvU2FtbkMxMVRoeWhySGJadHMyelpNbWJNYU1hMmJRekR4SFZkWG41NUl5Ky92SUc2dWpvU2lUaEhIWFVraG1IeTRvc3Y0cm91Mld3VzI3WTU0b2dqT1BCQS8xZy8rK3p6UFA3NEV4aUdwSzZ1Ym9jYTVHc1ZYYjdSU1NTKzkxTUZkVWsxOFhoODMxS3B0QVpJTUZpTEdiT2tIUzhCTTdTNWxBQ0l4V0lIQkdaUTRIOEpWTzdwYUI1cHJlbnI2K05kNy9vM3pqenpqY09ldi8zMk8vakVKejdCMnJVdjhKblBmSnIzdk9kS2JycnBKdTY4ODA4Y2NzanJ1TzY2bjNERUVVY01lczNLbFZkdzJXV1g4Y3d6cS9uWno2N2p0Tk5PNWVxclA4Z3BwNXpDK2VlZk4rd3p2dnZkNy9HNXoxMUxmMytXNzMzdk8xeDQ0UVVBL094blArUGYvLzAvU0NhVGRIWjJjc1VWNytSYjMvcm1vUFB3OFk5L2xQZTg1MzNjZE5OTjdMMzMzbHgvL2E4NDRvakRCNzMvWFhmZHhUdmYrVzljY01INUhIdnNNZlQwOUxKZ3dYemEyN2Z6M05QL29xYSttUzBIWEVxaGFYKzBwMEZZZ0lKNEEvT2YvZ0ZKcDVjWGovd1VqYTJQTXZlZVQ1TGJ0Qkh6ekRmejNEZHZJTmJkelpKM253WDFqYlIvOG11MG4zZ1dPaE9EUHB2bXB4NW01bmMvUzNIVHkrZ3FYeFByN096a2U5LzdEbWVmZmZhZ2ZXeHRiZU5iMy9vMjMvM3VkMW0yYkJrMzNuZzlkWFgxbkhEQ1NUeisrRCtZTzNjZTMvbk90M25MV3k0ZWNuNXU1NU9mL0g5MGRYVlJYMTgvN1lTTThoU2FjbGF2cnp1aXRTWWVqeDhBM01iSWRVbGpFaklUR1VXS21hYTViM0NTaEJ4dzhFNVhBUU8rMnA3TDVRQjQ3TEYvOE0xdmZvc2JicmlCVXFuRStlZWZ4MDAzM1VneW1hSzl2UjJBdHJaMkVva2tOOXh3UFVjY2NRVFBQUE1zNzMzdlZYem9ReDltdzRZTkhITEl3ZHgyMis5SnB6TjBkSFFBVUNxVlF0WCs5dHYvd0tjKzlmLzQzLy85QlFBZit0QTFuSHp5NjJscWF1U2trMDRLOSt2TU04OWt6cHk1Yk4rK25YMzIyWWR2ZjlzWExoLzYwSWM1L3ZnVHVQNzZHMGdrRXZ6aUYvOURmWDA5NzMzdmxSeHh4T0g4OFk5LzRzUVRYOC9sbDcrRG5wNGV6ampqREw3d2hjL1QyZG5KNnRYUDBOM2R4ZmJ0SGV5Ly8zNlVpdjQrdWFVaXV0RFAvRTEvWnQrMXYyVHZsMzdOUGkvK2tuVG5HcEpQLzU3R2RYK2tvLzR3c290T28zcnhBbDY4NHFONHRtTGVmMzBJc2ZwSnV0N3pNZHJPZUJPTjk5M0I0ZzllVHYzZHY2ZjltSlBaL280UCtUTi8xTURzckZnc0JzQXR0L3lhZDc3ekNuNzg0eDh6YytZTXZ2YTFyM0xnZ1FmUzFkVk5QSjRBb0Znc0lvVGd4ei8rRVc5NXk4WFl0czBQZnZCRHZ2dmQ3OUhYMThmNTU1L1AvLzd2LzVCSXhDa1dpeE4vc1V3aVFnaVVWbjcrbWRBRTdYckx4M0FmSU00RVJKRW15a1J5RGNOb3NDenJ3TXIyREVKS2xPMmh0Y0l3ekdscDY4SkE2Y052Zi90YnZ2M3RiMkZaY2E2Nzd1ZmNldXZOSEg3NDRWeDQ0WnREMzBodmJ5L25uWGNlQnh5d1B4czNidUtTU3k1bDllcFZBRHo2NktOY2Q5MTFiTml3QWRPMHdxbVhRT2hMK04vLy9WLysrTWM3QUtpcVN2R1d0N3lGd3c4L0hOTzBhR2lvNS9lL3Y0M2EybHBPUHZuMUhIUE1VZnpxVjc5azd0dzVnS0N2cjQvNzd2c3J6ejMzREU4OXRaSlVLc1djT1hOb2JtNW15WktsQUR6NzdMTTgrT0Q5NFdlKzV6MVhzbTdkT216YnBxYW1odjcrUHVyckczam9vWWRKWjlMbDI0c0JocUIyNWMxVWJWdUptMGlqcEVrKzFrQ3VhRFA3bVZ2b2JUaUFsNWRld01HNm5aaDBxYjczOThUditoMmxlWXRwUCtnWXJLTExnbC8vaE95RGYyUEp0cGRaZWRJWnRNL2JpN3FxREJUeUlJM1F4d0p3ODgwMzg2Yy8vWkViYjd5WlUwODlqU1ZMOXFLMnRwWXRXN1pRTEJaSnBWSjBkblp5empubmN0cHBwOUxUMDh1YjMzd3g5OTEzSDFKS2Z2dmIzM0xiYmJkeDdMSEhjT0dGRi9Lem4vMFBzMmVIdmVsZjh3UUNXU2tWRmoxU3JxNjJMT3RBd3pBYVBNOEwybWhPT1FGVHFibElvR2haMWw2bWFTNnRIQVVyTkhpZW1xYnUzZUZVVlZWaFdYSG16cDNMd3c4L3lDOS9lVDMvNy85OWloTlBQSjZYWG5vUjhKMkx5NWN2QitELy91Ly9XTDE2RmZ2c3N4OEhIWFF3b1BuUmozNU1mMzgvOWZVTmc4TDZnV2E0Yk5uZVBQbmtISllzMll0OTl0a0hnTGEyTmk2ODhFSUFmdmpESDdKdzRTSk9Qdm4xbkhMS0tkeDY2Mjk0NG9rbldibHlKWWNjY2dqUFBQTTBEenp3SUN0WHJ1UVBmL2dEZDk3NVozcDdlN25ubm5zNSsreXorT1FuUDhGRkYxM0lpaFZQc1dyVktqN3lrZi9nbi85Y3dhSkZpM0JkajVxYUd1Njc3eWUwdExSUVg1MUJBVko3b0RXdEMwL0JxTjhmTDFGRHN0QkJjdXRUcUVRTjNwYW5tYi9xWjZ3Ny9LTnNhWDREeTc3M1JYSnQyeWpHVTBqRHBQbmxOWGd2cjZHNDlqbGlOV202MzNBT2RuMHRzKzVmZytqcmdVUXFqQzRGVWF5UGYvempuSG5tbWV5eno3NHNXRENmNjY2N2pnY2ZmSWlsUzMxQnFiWEdjUnhPT01IdlV2QzczLzJPKys2N2g4V0xseUNFNExISEh1Zm1tMi9tUXgrNmhtT09PWWFmLy96bmVKNFhDdkxwZ05MK3ZDU0pST0dGQ1hlbWFTNk54V0t6QzRYQ3N3ejRZWUxKanpBR00yazhCTXhJN1RGTHBta3VGRUlrZ3RpN0RHUHZlMDcvRnlrbGhtRVFpOFdRMHFTMXRRMkFUQ1pOY082a2xHUXlHUUMyYi9mTnBxYW1KbTY5OWVaQjcvWHBUMytHN2R1M2g3L2J0dTlBL2ZyWHY4Ylh2LzYxOE84clY2N2tpU2VlNUwvLys2dDBkbmJ4L1BOcktCWkxhSzA1Kyt5ejJIdnZ2WG54eFJlNStPSzM4cEdQZkpncnI3eVNrMDQ2a1pOT09oR0FHMis4aVk5ODVELzQ4WTkvUW05dkQ1LzV6S2RadW5RcFM1WXM0UzF2dVppdFc3ZnkvdmQvZ0wvKzllLzgrdGUvRHMyVXVybzZsRlB5RzRrcEY1UkgrNkgvQnJFMHhLdXBiMzJVaHBaLzB1TUtQTmNoM3I4TnBDS1hxRU05OHhRVWM2amFSdERROUxWUGtHelpUUGE0VTJsNzN5ZlpmdlFKTlA3emNXYmM4SDN5YUpBU3lqZXU0RG82L3ZqbEhILzg4dkE0RklzbFlyRVlTZzFzWnhoR0dDWGJ0R2tUVWxwWWxvVlNpbVF5eWViTm13RklKcE9ZcGhWa3U0NzFNcGc2bEd1UURJeHloRThIMHowU2xtVXRMQlFLSzRBVWd4dUJqMm1oVHBTSnBDM0xXZ2JsQmxOeStqdDRSOEp4SElyRkF0dTNiMGNwbCtPT093YUF6WnUzaGhxSTY3cTB0TFFDY09paGh3TFEwdExDWnovN09icTZ1cmpvb2dzNDZhVFg0empPb1BlV1pUVjMzYnAxOVBUMEFJSi8vbk1GWC9qQ0Z6anp6RGVTU0NSSUpCTDg2MThyTUF3VElRUzF0YlVzWGJxRU9YTm1jODAxMTNERERUZnlyVzk5aDJYTGxySGZmdnZ4cVU5OWtyZS8vVkwrOHBlN09PbWtFekZOazRzdWVqT1pURFZ6NTg3bDhzdmZ6cGxubnNrblAvbEpIbnp3WVRLWlRCaFM5eU9GUGtxYUlBMW1yTDZSV0s0ZEoxRkRLdDlPSGdQaDVFZzB6V2ZkNjk2RExKVllzdllXdXE3K09GYkxkdUsvL0I2bDZsbzh1MGpudjMrQnJaZC9HTG82V1B6dGE4bmNkajM1N2k1VTA4eXduZ2JBTVB6UC8rUW5QOFVOTjl6STdObHorT1kzdjg0MTEzeVFqbzRPZnZhem40Y2pjanpQWSt2V3JRQWNmdmhoS09XUXkrVXdESU44UHMvclhuY1lBRDA5M2RpMk0rMFNRWVBjRjJDZ0pxa2M5aS83WVRUREN4Nm5qSk8zc2p1NXRDeHIyVUFHTHlBSUN4ejNGS3FxVXRUVzFqRjc5bXcrLy9rdjhKYTN2QVdBMjI2N3JTSi94ZU12Zi9rTEFPZWVleTVYWHZrZXRtN2R5aGUvK0FYdXZ2c2VaczJhRFJEbXJ3UllsZ1hBbDcvOEZZNDU1amd1dU9CQ1B2clJqOUxYMThmNzN2YytBSjU5OWptMmJ0M0toZzNyV2JObURlRGY2WnVibXpuampOUDV6Ly84REMwdHJmenBUMy9nYTEvN0ttdlhyZ1VnbFVweSt1bW5jY1VWNytSMXJ6dU1SeDU1aUZ0dnZZV2JiLzQxQURVMU5lR2RmeVMwTUVCSWF0YjlsZG9WTjlDdzRucGlML3dOMjRXazhPamM3MEw2bTQ5a3pyTzNJcjEyTnB4NktSc3Z2SUxZWG5zVGIyL0J2ZXhxMWwvMUtXTC9mSWlsSDcrTXFsdCtTazRZTUg5eCtSZ01YRVBCSWRtNGNSUGJ0bTNobi85OG5PZWVldzZBWmN1V0RSSVN5V1NTTysvOE13Qm5uMzBXSC96Z05mVDMrN2xDNzNyWHYzSHh4UmNCY1BmZDkyS2E1dlRTWHNvb3BjcHJVSWNpcEt5RjdzM0FlT2RLWisrWVpNUjRta2pCdjVVUW90bzB6UVZoQktrOFFVRFpDb1hDRU5QdnhBV1UwNjhCK1BTblA4M1ZWMytBbXByYThQbHZmT09iUFByb3c3ejFyYjZ3bVRObkRnOCtlRCszM1hZN2IzclQrVngzM1UrNTRvcDNVaXFWQmtXQlVxa1VxVlFTOElWTGtIeVhUQ2JEam1WU1NrNDU1UlFPTzh6UC9yN2tra3Zac0dFRHhXS1JvNDgraWdjZmZJQ3JycnFLQ3k2NGtFMmJOckhQUHN0NDRvbC84TWdqajNMd3dRZHl4QkZIc0dYTEZ1NjQ0dzcyM250dlB2YXhqL0tMWC93UFo1OTlKcmJ0Y05GRnZsL25wcHR1SnAvUFVWdGJNK1RibC8waVZncmlOZGlKV2tTOEZwV29RYU9KbGZwdzl6K1R6ZnRlUm5YdkdwbzIzRWxwZXd0ejcvMGRXNjU4TjF2Zit5a1cvUENMUEh2cW02Q2tLR2JxV1B2K3orTFZOYURTTmFRN1dwajdsWC9IYlcwQks0Ym5LVklwL3pqODUzOSttdlBPTzVkRml4WngxRkZIQXZEblAvdkNwS0doQVlER3hrWWVldWdCZnZDREgzTDExUi9nZTkvN0xsZGUrVzZVVWh4ODhNRUEvT0lYditBdmYva0xUVTJOWTc0V3BocVZqbDVwbHROSGxBajhNQXVFRU5WYTY4RDNNaVdjdk1GT1ZFbzh6elROR1laaGhBMitoZlRuc25qSzh3WG5OUGJCbUtaSlMwc0xiVzN0SkpNSjB1a011VnlPMWF0WDg4dGZYczlOTjkxRUlwR2twNmVIam80T2VucjZNQXlUcTYrK210YldWdDcrOWtzNTVoamZsTHJycnJ1NDk5Ni84cWxQZllMKy9penQ3UjFzMzc2ZGJEYkx0bTNiMkw1OU80VkNnWFE2aldWWmFLMDU2S0NENk9ucDVnOS8rQk1iTjI2a3BxYUdWQ3JGTTg4OHk1Ly8vR2RPUFBFa2tza3FMcmpnSW43eWt4OXgrT0dIcysrK3ZuUDRILzk0blAvOHo4K1N6ZWI0M3ZlK1R6cWQ1ckxMM2g0NmpQdjYrdmoydDcvTHozNzJzeDBzUVArOHByTmJjR0lXMHJQQk1IMDF3M0d3MHJWMHpENmNXTzhHNWp6M0M0cDk3UlNKMFhEcno4ak5XVVRQckFYTU9Pb0VxbDU4RnQzZDZVY2RxMnV4WEFkbEZ6RktSYWpRZ0dNeGkzWHIxckZreVJMbXpKbkRQdnZzZzFLSzU1NTdqbC84NGhmOC92ZTNzV2pSSXA1KyttbHFhMnRSU2xGZFhjZTExMzZldHJZMjN2Lytxemp3d0FNQmFHL2Z6azkrOGhPKys5M3ZrVXFsTUUxejJ1WEJBQ2hVV1htUjZIS1htTEt2YVpGcG1zMk80N1F3MEFpODB0azdxZ1VyZG5haDc4QnZVbGs1YmVGN29IUEpaUExvcHFhbXYzcWVKN1hXV0FrTHk3UW81b3M0am9OcDdxNFF0VVpyUVZVcTdZK3NuWUI5MEZxVFNDU0l4K05sczBiaXVnNGRIUjNrOHdYcTYrc3dUWk5ZTEVaVlZSVzVYSTVTcVVTaFVDU2J6YkpreVdMbXo1OVBmMytXWjU1NUZzT1F6Smt6aC83K0xFTDRrYWxzdGgvRE1Fa21rMlN6MlVIK21lcnFhaXpMcEt1ck80eUNDQ0d3Ylp0NFBFWk5UUzJ1NjdKKy9RWXltVFJMbHV4RlRVMHR2YjI5dlBqaWl4U0xSUm9ibThqbHN2VDE5Yk5vMFVMbXpwMkxFSUtOR3pleWNlTW1hbXRyU0NRU08xeUFzaXhVbE9jTVhKWmFnMm1CWVNIZEFzS3hjYVdGa0FhaVZNQ1FCbDVWR2lVbGxsMUM3Y0JQcHdiVlBta013OFN5ckVFbVpIOS9QNzI5ZmRUWDE1VWQ3SDRHdWVNNFNDa29Ga3QwZFhVeGUvWnNGaTFhaEJDQ2wxOSttYzJiTjFOZlgwOHltUngzNGVLSDFGM3krZHh1OVVFcXBZakg0cGh4WDRCcXp6OUJobUdvMXRiV04rUnl1Y2VBTkg0TEJ3ZS9Sa2t4Z29EWm1mVXpYZ0xHeEJjd0thQWprOG04cmI2Ky9rYlhkVUdEbGJBd1RaTkNyb0RydXJ2UnRwMTRBU09Fb0ZRcTRib0R5V0JTU2l6TENyKzN2K0FkYk51UGRBUzFQcURKNXdzVUNnVk0weVNkVGlPRW9GQW9FSS9Idy9UNFJDS0I1M2s0amtNaWtRZ0ZkaUJJYk5zZThyNEQrK1U0RHZGNG5GZ3NobTNiNVBONUhNZkJzaXhTcVZTb0NRVVVDZ1VLaFNLZ1NTYVRKSlBKVno4SW51dlhEQm5Xb0hva3RBWlZGaERTSFB5YzZ5Q1VSaHNTdFBiTEFTcmZNM0EvbWdQdkdYeGZQeFZpNENacm1pYW1hWWJIdjFRcW9UWEU0N0ZCSFJSTHBSTDVmQUhRcEZLcDBMU2RDS2FLZ05GYVk1a1dWdHp5SGJ5ZVgwWmdtUmJiTzdaZjF0UFRjelBRQ09UeEJZekxHQVRNZU9iQkJHYVNNazF6WWJBRFFvandSR3VscDUxbmZpaEIyRGJJTU4zUk5wWmxZbGxtK0x1UEtQdGFVb08yRC93dE1PRGNEY0xmbGE4dkowMkYyd3l0dks3Y3I3TGRUWFYxOWJCOXEyU25oVW9seGc0dUt5RjhvUlArS3NvMVJBWUtBVkpnbWI2QTB3eGtSWHVlVjA3cTY4Y3RGTEVzaTNnOFRtZG5GNmJwaDU2ejJXeTRuMTFkWGNSaU1lcnI2K25yNjBOS1NUS1pwSyt2bjNTNkNzdXlLQlFLNWVpYm40dVV5K1V3VFpOc05vdGhHTlRVMUF4S2JKeE8rTWZYSDhpbWhSK3Exa0pqR01aQ0JreWljYW1zSGc4ZnpMRE1QOU0wOXhyWVFvQ29hQW13WjBTb3B6MkZRaUVVV3NHZzlVRDc4YlUyQTlmMVRUZlROQ21WU21WTnF5eG55cUhoeHNZbWdsNnhqbVBUMzU4bGtVaUVuekZ2M2p4S3BSTGJ0bTFqeG93WjFOYlcwdFBUUTB0TEM2ZWUrZ2I2KzdPc1dyV0tCUXNXME5iV1JqNmY1Nnl6em1McjFpMzg4NTlQc2Q5Kys5RGQ3VmROTDE2OHFGenBucWVwcVlIenpqdVh4c1pHdXJ0N0tCWUwzSHJyYjNqOTYwOGluYzV3NzczM2trcWxwbVZLaFY4eUFFamZKNk8wUWlJeExYTnh4V1pEMS9hbzFQM3hpaUlGMHM0RGtxWnB6Z3Z1aEZLQ0ZJWi9FV3FGSWFkdkJHbFB3WEZjRmkxYVJGTlRFMDgvL1RTTEZpMGlIbyt6ZnYxNlROUEFNQ3dLaFR5elpzMGttVXl3WmN0V0Rqcm9JRnBiVzBMbmFWZFhOL3Z0dHg5ejVzem1zY2Yrd1pJbFM1Zy9mejZQUFBKSXFGa0lJVGpoaE9ONXd4dE81dHh6eitkclgvc3FjK2JNWWNXS2YrRzZEc2NmdjV4aXNjVC8vZC8vY2VLSkozRDc3WGV3ZlBseXpqNzdiTFQyK09BSFA4VFpaNS9OQVFjY3dGVlh2Wjh2Zk9GYXZ2clZyL0gzdjkvUG05NTBIbC83Mm45ei9mVTMwTlBUd3dVWFhNQWhoeHpDSVljY3pHOSs4MXNLaGNJd1RYSzZFT2JDaUlHWjFWcHBMTk9hVis0K0dkaWN1MVdER1pxUUl3SFBNSXg2d3pCbWhLcDI4Q1dtWjlCb2o4TzJiV2JNbU1IQkJ4OU1TMHNMWjU5OU51dldyYU9xcW9vVFRqZ0IwTVRqQ2ZMNUhIVjFkWFIyZHJGczJUS1VVc3liNXp1TFhkY2xueS9RMjl0RFRVMDFqdU5RVzF0TFcxc3JoeHh5Q1BsOGprS2hRRzl2SDNmZmZRK1hYUEpXM3YzdWQ5SFkyTWdUVHp6SmdnWHo2ZW5wbzFBbzB0M2RqZWY1eVp1WFhmWjJaczZjd1dHSEhjN2xsMS9HdGRkZXk1bzFhemorK09XODczM3Y5ZjNNcG9FUWxOczI1SEFjaDN2dXVaZkhIbnVNUng5OWhQZS8vd1BjZE5QTnpKdzVjMXBHT3NOa3UvS2t4MEJCMDFvalRUbFRTbG5yZVY2ZTRjSmxWRnJNV0IwaVEwc0VITU13R29VUXN5cWJURTMzSGpCN0VxV1N6WXdaemNSaU1icTd1OGxrMGdqaFIyNnFxcXFvcmEzRE5BMHltUXo5L2YzMDlmVVNpMWs4K09CRGJOMjZGY013eU9WeXhHSytMeWFiemVONUhnME45ZVR6ZWJadDIwWjFkVFVISG5nZ0w3MzBFczg5OXp5UFAvNGszL3ZlZDltdzRXV2VlZVlaWnM2Y1JYOS9INnRXcldMcDBpVWNjOHpSdUs2SDUzbVlab3hFSW9GbCtiNm1aRExKcjM1MVBXOTR3eHM0OGNRVDZPM3RDenJxVTEyZEladk5rVXFsT08rOGMxbXpaZzFISG5ra0J4OThjRmdSUHgzUjZFR1oxK0JYV2d0RHpEUU1vd25mdVZzNUkyblVXc3g0Q2hpQnI4SE1FRUkwaEJzRXlUM1JCSUZwZ2RZYTA3UVFRaENMeGZqZDczNUhQSjZnVUNqdzE3L2V4ME1QUGNqRER6L0N2ZmZleTRZTkw1UFA1M253d1lkd1hZZm5uMS9ENXMxYmVPR0Z0YXhlL1F5MXRYVTg5ZFJURkFvRi92V3ZmNUhKVk5QVjFZVlNtcWVlK2hlbFVvbGtNc0Y5OS8yTlFxSElYLy82Vi9yN3MyemF0QW1BUXc0NW1HdzJ5NW8xTDZDVTRoZS8rQ1YvL2V0OTNIdnYzYnp2ZmUvaDA1LytESzJ0TFR6MjJELzR5bGUrU2s5UEQ2N3JFSThuS0JhTDNIYmI3WHppRXg4RDRNUVRUK0tLSzk1RmRYVTE1NXh6RHRsc2JscHFNQUdCSXgwaEVZSmc0a2VEWlZrejhWMGQ0MklpalNWTUxmRHpYMHo4Vm50Sm9DdVR5VnhTWDEvL1M4ZHgvSXN3SHNNd0pZVnMwVy8wYmV6T0tOTEVoNm1uTzc2MjBVQXVsNk9ucHlkMDdBYmgzMkJNcVg5ajhWOFRPSU9WVWppT2kxRytCb0pRZmpLWkpKL1BZOXMyaXhjdnBxR2hnVldyVnBGSUpNS3hHL1gxOVhSMmRoS1BKNGpGTEZwYlcxbSsvRGl5MlJ6Lyt0ZS9tRDkvUHQzZDNmVDM5M1BDQ2NmVDJ0ckc2dFdyV2J4NE1iWnQwOVBUUTNOekU0VkNNUnluR3B6L3Fxb3FTaVUvTnlhZFRsTlRVME0ybXgxWEIrOVVDVk1Eb1VNK0ZvL2hhYytmc0tyQmpKbDBidSs4b3JlMzl5YWdIbitzckkwZnF2WVlZaUpOZEI1TUlHQXNCZ1JNWjExZDNVZXFxNnUvNmpnT1FncGljUXNwRFFyWmd1K3QzcTFoNmtqQWpKVWd0Q3lFR0pZek14N3Y3YnB1bU9zVGpyanhQQXFGUWxnVzRib3VzVmlNL3Y1K3BKU2swMm1LeFNLeFdBd2hCUDM5L1dFZVVkQzIxRENNOEQyQ3dzZGdvWG1lYjE3RllqRmMxdzNEL2VQOTNhYVNnREZOazNnaTVwdExya1lwUDNXaXA2Zm5VNTJkbmQ4QW12QnpZV3dHRXU1MldjQ00xY2s3dENoS0dvWVJkdWtSUXZpaE1PVzM2cHZ1T1RCN0FzSGlDLzQ5M3U5dEdFYW91UXhFSXVXZ1hLQWdZYkV5aHljSWJWZit2Ykl1REFpalFvSEdGV2hkbGY4TzNuczYzM3lrbEg3ckJxMFI0WkwwVXdWTTA1eko4TTUyb3c1Vmo4ZUtyN1RUTENubG5NcVRJekg4S3VwcGZNSWl4cGZkZllmZkUxQmFWZmhoL0loU1djRE94YmRLZ3R6cE1mbGh4aUpnS2o4NEtJcUtHNFl4S3h6d0ZMVG1VOVA3amhBUjhWcERVMTZqZ1FnUVlkSGp6UEs4NnNyZU1EQktJVE5hQVRQMGc0TUlVbHBLMlFRVlgwQ0thVHNES1NMaU5ZdjJ5OFVFREZyTlVzcG13ekF5akJ4SjJtVWhNNTVoYXRjd2pJeGhHTFZoZ1YxNWZ5THRKU0ppYXVHUExCbWNPbEkya1dvTXc2akdqeHhWNXNLTWlyRm9NR0xJdnowcFpUMVFPOVJFbXU1allpTWlYbk5VakJ5dVhKdENpRm9oUkMyK2dCbXgxbkJYR0syQUdlb0FFb0FycGF3WFFnd3FJeGJsTE1HSWlJaXBUYm43UWN3d2pBYUdtMGlUS21CZ2VNaEtHNFpSSCt4b3NFdDd3bkR4aUlqWElwWHJNb2dpQVppbVdjODRWUStPeFVRYU5tTFNNSXhtQ05LUWRUaEpJR2lUR1JFUk1YVVk2aXNOTUUyem1aR3RsRWx4OG80VVFaS0FHT1RnRGJ1L1I5cExSTVJVSStod29MVUdXUjRuVzBaS1djTndKV0tnSzlvdU1GNWhhdkN6Z3FzSC9paEFDTFFhNkd3WEVSRXhkZERsd1d1YWdmVlp6bXl1eGk4RGd1SEJuRjFpTkFLbVVwSlZmcWdwcGF3ZjZBUGp0MnJ3bTVoSFdreEV4RlFpTE1Vb1R4aW9wT3hMRFhxYkRsM251N1NZeDdNNHlDcXJWdjVlQ1Q5UFVLTWpLeWtpWXFwU3NUWURSMjg1VEwzanB0Szd3Rmg4TUlNY3ZFS0l1SlN5dHRJekhhaGdFRGw1SXlLbUdwVk8zc3JWS2FXc0thZWJqRlNQTk9FK21LRzJtQVMwbERJaHBhd05Od28wbUtqUmQwVEVsS1d5dFczd3V4Q2lWa29aMUNOVnlvaGQ5c09NMVFjVGVKbTFsREloaE1pRUl6UUN4NUdPY21FaUlxWXFJNjFMS1dYR01Jd0V3MGVZd0c3d3dRakFFMElraEJCaEczWlpialFST1hnaklxWTRGU3BEV1lPcEtxL2xNYWZnajhWRXFueW84ZzRsQjBsRXpiU2M3eHNSTVIwSW9raERqWjZ5c3BCZzVIS0JTY21EQ2ZlbC9GTVpocEVNNnBEQ0ttcWhJdzBtSW1JS005TDZMQWRzcWhnd2tVYk5hRnRtRHZVcUsveWV2REw0UytCL0VWT3dUQ0FTZXJ0QTVZem9vWWROVlB5WVl1ZDRLaEkwUTU4cWpMUXZaUk5KbEoyOGdZQVpkYW5BZUkyTzFaWCtGLytKc2hZenhnK0ltRnlVNCtLV1NtamJnWEsvV3FRc3Q5N3dCM1ZwS0ZlQmFMUlMva05yTUF4a1BJWVpqeUVNR1ozODF3QTdDcjZVMTNObG1IcFVqTWZvV0FBbHBVeUhVU09oVWNLZmR4dEZqNll3UXFBY0J6ZGZSTmsyS0VXaU9rUE43Rm5FR3V0SXpHZ2swVkJITEpQQnJFcWlZeGFtbEdqQWMxMTAwY2JMNWlqMjlGSGMza21wdlpOU1p5ZTV0ZzVjMjBIR0xJeDREQ09aUUVnSjBiVXc5ZGhCdWFBUW9tcmtaM2FOWFJVd0l6V2FHcVRCaE9IcGNubFUwSHdxWXVxZ3RjWXJsckI3KzRrbDR0UXNuRXZ0UG50VHZkOFMwa3NXa3ByWmpGVmZpNUZPK2NQRmRmbEdOdlEwVmpvSUhRZTNwNTlTUnhmWlRkdklybDFIOTdNdjBMdDJQZm5XZG9qRmlHWFNTR3U4N21rUjQ0Rm1vQmFwc21XRGxES0lJbzJVYUZkWi9QaUtqTlVIRTE1eVpadHRZQU5SVVNZUXlaY3BnOTJmUlJkS3BPZk1aUDRwSjlCMDNPSFVITGlNV0ZNak1oNURsWVdQWjl0NHZmMDdyM1ZJaVVqR1NTeGRTSHIvdmRHbkhZK1h6WlBic0ludXAxYXovZEVWZEQzOVBNV2VIcXlhYW94NFBOSm9waEJLS0wraXVueEtETU5JTW56bFRwb1BacVI3V1hJa2N5aG8vaDJ4R3hFQ3B6K0xMaFNwWGJZWHMwNDdpZWJYSDBONnI0Vm95OFRwNjhmTzVXRXM0MUk5RHp3UHIyVGpVSFlnR3BMVXZrdXBPZXhBNWx4ME5yMHJuNkhsN2dkb2UrQWY1TnUyWTlYVllNWmlrUm05T3htU2FGL2gwZzhVaHQzcTVBMlE1Ymg1ZVk5RUdFV0sySDBJSVhCTEpleU9MbXJteldIQmU5N096SE5PSlQ1L05rNDJSNkd2RCsxNEU2TmhhZzFLNGZYMFlmZjJJMk1XTlNjY1JkM3hSek4zeGROcy9zMGYyWGJ2QXhUNnNzVHJheU1melc0aVNDUUpDcE1ybElFRUE2YlFxQjI5WTUzc0dQNlVVaVlybnhGYUlIU2t1ZXdXL0xneHhhNGVUQ0ZZOHJZTG1QK09pMGtzbm8rVHpaSGIzRHJZaUo3b2RhMDFxbWpqdG5RZ0xKUGtJZnV6NzZFSE11T01rOW53ODV2Wi90UXFqTm9hckdRaTBtWW1tYkNNWjhoU0hXSWlqZnFrakViQWpOUnNTakNnVXBYL0lBYWEyVVFtMHVRaC9Da09wZmJ0MU82MWlMM2UvdzdxVHowQnozSEliV3ZkL2VmQ2R2SGFPc0UweUp4NEZBZnN2NHh0Ti8yT0RUZitqbUt4U0x5dU50SmtKaE5kb2FZSVVBT3lKQkF3UVMwU2pFS1RHWTg4R0FBcHBZd1BhdFVRdE9DTG5MeVRSeEIyN3V4aHp1dVhzL2lqNzhOYU9KZENlNmZ2SXhHRDlKYmRod0JjRDY5MU83SXF4WnhyM2tYNndIMTU4UnMvcHIrbGxWaDluYit2a2FDWmVQd1lNRkw0ZFFFd01GMkFjVmk1WTNYeUJsZUFIUHBlWWJNcHBsYjI0blJGU0lGYktLTDdjaXk2NUFMbWYrUzllRUJ4YTN0NUE2YmtnbFg5T2R4Q2lmUXB4M1BBZ25tODhMbXYwZkd2MWNSbk5FVittVWxnb05QQjRPaXpFTUprb0cwbWc1N2NCY1p0TnJXVU1oUXdRb2lCbG53UkU0NFFBaWRmUlBUbldQS2V5NWo3aWFzcEZXM3NqaTZVMXY1RFRkR0g5ck9IaTV1MkllYlBadSt2ZjQ1Wnh4eEpxYVVOSFJYS1RpakJqVitNa09Na3BiUVk0bWNkNGVlcnNxc0Naa2R4OFVFYWpDQ0tJRTBhUXVEYU5xSy9uNFh2dnBUNmQxMUt2cXNYcHkrTHB3V2U0clh4MElKU3kzWlVKc09DejMrY21jY2RoZDNlRVYxR0U4ME9YQmhhYTVQaHphWjJtZkdZS29BUVFtcXRneWJCZnVoTFJKZkdaS0E5RDlYZHk3eTNYa0RkRlpkUTZ1dkh5K1ZSTUtDOXZGWWVDT3lPTHJ4TUZmTSs5ekVhRDk0ZnQ2c25LcVNjWk1vK0dGTUlVV2tpamNxYk9tNTVNSVpobU1OTW9vcjV0eEVUZ0JBNG5WM01QUDVZR3Q3L0xrcjVJdVNMYUNGQXZWYVB1OERyNk1hWTJjeThUMzBFKzZPZkpkdlJRYXkySnJxV0pvS2d5ZFFRMlRIRVJCbzE0OUgwRzYyMWRCekhESjI1NVIrVjgxWWl4aGtoY0xwN3FOMXJNYzMvZmhXMjBuaDlPVHpON3ZlcmpQV0J3R25aamxxOGtEa2ZlQmN4S1hHTHhVaVRtUVNDSkZuWGRVMnQ5ZER3OUM1ck1lT2l3UWdocEdtYVJ0Z2hTek5NSWthTUkwTGdGVXZFWXpHYTMzVVo3b3htVkZ0N09aRmhuTy95ZmhNVHYralJNQVlXdVZLZ1BQL3oxQVJNOE5UZ3RtM0hPdjVZWmx4d0xsdHUvRFc2T1JiZHNNYVpnZGxJQTQ1ZXBSU1daUmxTU2pHa0krWHVNWkdFRU1Jd2pLaE1kcExRV3FON2UybTgrQUtNWTQ3RTZlZ2M1eW05R2gyTFlhU1NDS1hSdGczNUFqcGZRTHV1bjZrZGl5R3FxaUFSUjhSaWVKNkh6dVVRYXN4TjBBWndYRXJaSEZVWG5rdnRxdFYwdi9BU1ZuMXRGTG9lWjNiUTFjN0FEMU9QNldDUFI2bUExbG9ibnVjWnBtbjZGNThJYmFTSThVWUkzTDQrcWhmTUozbnVXUlR6UlVUSkdYc1NYYUQ4cHBMSVpBcloyMHZwaVJYWUw3eElhZE5XN08wZHFId2U0WGxvQWNLME1HcXFTY3ljaWJWNEFmRjlsMkVzV29obm11aHNGbXg3ZkV5YS9qeTZxWUc2dDF4RTdrdGZ3M01jcEJuZHl5YUt3SzNodXE2cGxCSU1OUDZlOUZxazhFTzExdEx6UE1PeXJGZmJQbUtNYUsweGlpV3F6MzRqM3F4WnFPMGRqRlZqRUZxaDRuR00yaHJrMW0zazcvOFQrY2VmSUw5aEkyNnhpREFNMzBTU2NrQ1FhUTJiTnRPL2FyWGZxS3F1bHRSKys1SThZVG14bzQvRXJVcERkNDl2U28xcC96UmVSemZtRVlkVGM4eVJkRHowQ0xLaElkSmlKaDVaZmdTTnYyR1NUS1NoOVFoQ1Npa013NUJESndnRWt4MmpwTHZ4dyt2UFVyMXNLY2J4eDFIczdVT3FjdVBqMFJDMHZheXV4a1JUdXYyUDlOOTVGNFdYTitLWkJrWTZqWm11MnFuRlhDcVZLRHo2RDJJcm5pSjE4RUZrTGpnUERqb0FyeStMS0pWQWprSElPQTZlMWlUUE9KM0VxdFhZdG8yTWJtWVRRbEJEYUpxbWxGSU9XOVBzQmlldkZrSUkwelJGSkVRbUhrTjVwRTQrQ2J1MkRyMjlBMitzWmtoTk5jYjJUcksvL0JXOWp6eUtpc1V4RytvSHdvczdlVTZOZUJ3akhrZDVpdDdIbjZDNCtobXFMN29BODV5emNSTkpSRDQvSnBOSjkvWWg5dCtQMUtFSFUzcndZYWlyRy9WN1JReG1COFBYRERFT0h2WHhNbWFGMXRvWS9KZHhldWVJRUxkUUlEMW5EdUt3d3lsbDg4aXlCaklxdEViWDEyT3RYMGYvdDc5SDMvcjFHRTFObUtZNUp2TkRHQkt6c1JFN242Zmo1NytnYnNzMll1OTVONlZVRlVaL3YyOW1qWWFTUXlFdHNZNDZtdGpqVCtLNGJ1U0xHU2RFeFgrcTdITFJXbys2QjB3bFkzWHlocmFaMWxwVTFqWkVZZXB4Um10a29VRHNvSU1vTmMvRTYrb2NkVVJhYUlWWFYwZDg0MmF5My9nMi9WdTJZTTZjR1RqVXhtVmZqVlFLWlZsMDMzTVBkYTZMdlBvRE9Ja1VzbER3RXdGSDg3WjlXZVN5WmNRV0xxUzBmajB5blI3N3ZrWUFGYjE1eSt0V2F5MHJOSnZkMG5DcUVxRzFGbkxJM1NucUJUTithTThqVmxVRisrMUh5WFl3WERYcW1KR1hTaEh2N2FmMDA1K1NhMm5GYW00ZWY2ZXAxa2pMUWpjMTBmUEFBOVRXMXFEZmZqbHVzWVR3dkZkLy9VaVViSnlhR296OTlrTSs5eHhFQW1iQzBGcUxzaFl6SnNaRndDaC9MazRrU1NZUWJkc1k4K2JpenB1UHl1WFFlaFNWeGhxMElSRlNvbjk5Qzdsbm4wVTJOazVjUkVacmhHR2dhMnJJM2ZrWFVnc1dVemoyV0dSdnoranVoNjdDYzEwU1M1ZVN5R1FvT2s3azdKMGd4c3VmT2w0TnAwYStYQ0tmNzdpaGkwWGsvSVU0MWJWNGhRSmlsRXFBbTg2UWZ1b3BDbi8vRzZxNkd1UFZYekkydEViR1lwVHllZUszL1E1ajhSS0t0VFdZaFR5amtUSmVObzgzYXg0MHo0Q3RXeUFTTUJQSnFNUFRBV050MXhBeVVxRmp4UGlndGNZVUFqVm5MclpoNFRrdXJxZDMrV0VqTWZKNTlIMzNZbnVlUHpwa2NyNEFSazBOaFkwYmtROC9pTGJpdUVxTTZqdG8yNlZZbFViT25ZdU0rc1dNTzBHaTNhdFlKRHN0Y0haRmd4bXBGKytvUGpSaTE5Q3VRNnk2R3JkcEJxV2lqZW1OVG5xNzZTb1NLMWZndnZBOFpLb25OVmxOQ0lGYlZZVmE4U1RtMGNzcFpESVlwZEt1djVGV2FHRVFuekVUOUNqVnVJZ1JHZW92SGNGTXF1eGt1Vk9wNDd0cUl1MzBGUm4xZ3hrL2hPdWk2MnR3YStwd0MwVVloWURSVWlJZEYyUDFTdkxGSXJJcVBiblpzRm9qazBsVWF5dnkrZWV3anp1UldMNkEzdVg3a2tacnNCdWFNQXdUVCt1b3lub0tNMW9mVENROUpoSGhLVlE2VFNtWjhvZlRqeUkrN1prbWlZN3RxUFhyRUtuVWJrbTFGMUxpT0RibWl5OGdqMXBPU1V2a0tKelZydU5oVmRlUnFxckM4YndvSDJZY3FPeWgvUXJzOGtVVG5ablhBQUlGbVJwc0k0YnkzRjN1VlNzQVcwZ3lyVzNvbmg0d2Q1OWoxSXZGU0xTM0ludTZLY1VUR0xhNzYrOWgyM2p4QkRKVkJkM2RFQW1ZS2N1NG5KbHl6SHo0RTVIbU9pNElEU3FSeEZFZ1BEMnFuaStlTU5CZEhlQTRFSXROd0Y3dUhFWXNodGZiZytydXdaczVaMVRtbnVkNHVFWU1GWXNqUmhPdWo1ZzB4a1BBQ0NHRUhyRnNJVEtreGcxdHhYMEI0NDVTd0dpQjE5ZUhkaDNFWkVXUFJrSWFxRUlCK3Z0d211ZWczRjMvTGk0ZWpqUlF4dGpLR2lJRzJBbnphRlJNbUc0WmxBdE0xSTd2U1FnQnR2QW5CQWhQNy9LaTBvRG5hWVR0TUNXa3Z2TDhyRncxT21HcFBJV2pCVW9LWkhTRmpTdVZrYVNLY0xVT245NUZ4anA0TGR3UktlVUliYkZHK2U0Unc5QWFYRStEcHhHakVEQ3VWMjZkTVFXV293QThwWEZkN1F2TVhjUURYQVdNVHoxZXhCREtMVmJHNVVJWnI1YVpTZ2lob25ZTkU0WEE4RHlVOGtDcFVma2RsRko0aGdsaUxMUDJ4Z25Ed0RVTmxQSVlvZC9JcStJS0JaNWJVZnNiTWQ1SUtiVVFRZzhwZU54bHhzVUhBNzZRR2ZISktFZGg3QWpBS1lGeUFCZDJjVmtKQUs4RXFaUmZ1N003YzBlVWgwZ2tjUk9waXUreml3aUJjSXBJMXgxN1A1eUlFZGVvbE5JYmo3VTdYc1dPeXZNOHp5eUhDeXV0NGtpckdROEVvcGhIZUE0YUYwWVRPWEdLT0RVMWFOUHkyMWlPdGkvTEdOR09pMml1d2F0S0lkd1M2TkVJR0JOcEY1QjJDUzFsWkNTTk13S0JwenhQK3hXMVl6cTg0K1hrMVVxcFFSSXZhSlVadGNzY08xcElSTFlmMHlsUUVnYUcyclVVZVEwSXh5WmZWNGRPVjZPN094RzdLWGRFT2lYc3VnYnNkQlVpbHh1ZHNCUWFXY2lpQzNtSWhsbU1tVUVLZ1QvREJOZDFQVFhZZmgzVkloN3RiYXp5dzRRUVFwbW02VWFDWkdKUVFtSVZjc1FMV1pUUWZnM09MajRNdDBnaGs4R1pNd2RaMkQxRHpMUlN4TXdZeFhuenNMWEM5SnhSZlJjaE5MSCtYblNoNERja2p4Z1RRZVJJb2ZEdzhMU0hZUml1bEhMTUdzeDQ2TW1pYkNFNVFrUkQ3eWNDYlJxWStRSldYemNZMmpjcmR2RWhQQnRYZU9RV0x5RWVqNk1kWi9LL2lHMURZeU45Q3haQUtWczI5M2J4Z1lkUU5vbWVUcFRyUlhWSUU0Qkc0eW5QMGNPYkR1M3k2aDR2UTF3RDRSV3J0UjVRdXlLQk0zWk1FNVhOWW5aMmdDblIyaHZWUStTejlDeFlBQXNYSWd1RlNWMmNHb2dWaXhUMzJaZit1bG9NdXppcTc2QzBBcWRFckxOanQvbVJwaE5DaUdFNlNsbFJjS2VDRHlZbzIvWUlCRXpGN295MDh4RzdqaEFDeDFOVWRXekhjRXNvMUtpS0JBMFA4cWtxdWw5M0tBMGJOcENkckNGbVFpQ3lXV0xOeld6ZGZ6OVVNZStiUjZPNE5qeGhVRld3TWR2YjhTSUJNMllDdDRaR0QxVUdiSUh3Tk5wa0RHckNhTS9RMEV0RFVhSEJBSkhtTXM2b2VJeFlheXV4YkI5YWpzNU1Rcm5JZkQrdGl4YmdISFFnOFh4K1VrNlRkbHdTU3ROOTdESDBWbGRoRm5Nd0d2Tkl1V0JKVWgxdG1OM2RxS2pJY2N3RS9wY1JNbmdkelRBTlpwZHZDYnNpWUhaMExRcEFhNjEzZzFHLzU2QXRDNk96aytydDdXaERsQWZQNytKRGV4aWVnK3VXMkhMY1VSaHo1eUN6MlFrMWxiVFd4UEo1M01OZXg5Wjk5a0lVc3I2emRoVDdyL0VRQmxTMWJNUE41cUoybWVPQkdONW9xbHppNHpKZ29ZeWE4WWdpQVNpdEt4TWF5dE1HSS9ObzNCQlM0dVVMcERkdVFoZ2FOWXJvQzJVL2hsbkkwMWNWWjl1cEp4R3ZxVVgwOVk5NmxNaU9kMWlnbE1McXo4SUIrN0xoeEtOdzNSS21hNDlxdjlFZVNrSXkyMGRxNDJaYzA0d3VyekV5S09xck5VSUxwSllJTGRCS093elA2TlE3K1BjT0daY29FcjZBc1lNOEdLMUI2NHJaU0pHNU5IYUVvR1NhSkYvZVJGVmZMOG9FdERPNkJ5NUdmeStkelhXMG5ITUtpYnBhek80Ky80SWJqMVVyQkxwa2srekxJdmJmbHcybkxLZUlpMVhNbzdVN3VuMVdEdG9TVkxlMFlyUzBvWGRuUmZnMFF2Z3FURVUxWXpnWHljWVhNTHM5VEEyK2lWUVk4cGVvb25xY2tZazRkSFJSdjM0am1NTDNTWXp5SVpTTDBkZERSMU1ObTk5MEduTHZSY1N5ZVNqYVk5dEpyUkg5T1ZKS1UxeCtCT3RPUFlZQ0xtWXVoOWJlcVBmWEV4NG1pcHFYTm1DWFNnZ2pjdkNPQ3dJUU9teHhXOUgwdThnNHFBWmo4WklOVXBlVVV2bGhUOHNvaWpUZTJGcFRzMllkeVNWektFaU42WTIrM0U4QVpxNmY3a3lDd3BuTG1iRjZKcG5WYTFHZFBkaW1nVWpFZHRvL281VkNGa3BZaG9HM1lBNXRoKzFQKzRLWjZGSUoweTFuSG85MkVxVUFIWXRSMTlKR2ZNTm04b2w0ZEZtTkp5TWN6T0hyZVhSbmJ6ekMxT0R2WXFqQmFLMVJnQkUxL2g1M3ZFUWNOcmZTdkc0ekc1Zk5nL3dZTlE3QUxPUW9HZ1liRDl1YjJrVXpxVjJ6a2RUTFc2R3JEKzE2Zmo4WmlaOTNFaVJUYW9WUUdvbnZicE9KR043aXVYUXRtVS9Ya3JtVUxBT1p5MktNUTNhM2g4QkEwZlRzUzVUNnNvaDBhc3p2R2VIanV6VUVhRDNJSjZPMXJoUXdvejZKNDFaTlhWYXBLdEJvWkRRNmRweVJVbEpFVTdQeUJhcm1OWkF6SkZaWkNJd0YwL1hRZlRZOUtZdWVvL2NsZmVCQ1VpMmRWTFYxWTNiMll1WkxDTWNGcjV3OWF4aDRNUk9udWdxM3FZN3NqRHB5TStzb21nWVVTNWlsOFd1a29CSXhabTNianJsbUE2VkVmTnpzK29nQkFqZEdoUThtV00rVG5taW5HZTVORmtxcFFpZ04vUjFFbEUya29QQXhZaHpRR3AyTTQ3WjBNUE9aRGF3L1lnbWU2KzF5RTZvZFlaWThkS2xBMWpUSkxteUNoVTFZcmlKUmNuei9qRkwrS1RZc3ZHU01Vc3pBazJXdHBsVEVMUGgrd2ZId3V3a05yaWxKT2phTi8xeERzV1FqTTd0bklzSjBKUWpGaElwQStZZFNLaEF3UTlmNkxoMzhjVE9SbEZJNVg1QlFqbEtYZHp5cXBoNTNoQlNVNGlaVlQ2K2phWFl0N2JNeUdMbFJ0RDBZQVEwZzhMdjlsek9iWEtEZkVKQ3hCbnd5U29PeWtVV05FY3pnR3BZTU9qYVVBQkdMTVh2Vkp2U0diYWhVWXR3RWFVU1pJSUtrR0hUeXROWTVCZzlhbTNRZlRPVUh5dklPaFlqeTVNbEljNWtBTk1pNFJURlhvUG54dFJUT09JaCtVMk00NDJTVzZNRS9KZXhxajZ0eDJRZVZ0cGk1dFp2VVA5ZVNqeGxJUTBiYXl6Z1R0bFFaSWorVVVsa1krK2p5OFJxOEpyWFdoVUg5WVBERDFGR0Vlb0xRb0ZJSnZNM3R6SDE4SFd1TzN3dlA4ekJHT1ZaMlNxRTFYdElrazdkcGZtd3R4VklSV1pXTWhNczRNOGlwRzZpZkl2eDdrWEZJWXhtdER5Ym9OQjQ4cE5hNnFMWDJBQU5ObUxRbHBFQlBoNHQrQ2lJQXB5cEc0dG1OTE1ra2VQR2dacnlpZytIeG1rNFA4Q3hKbGFkWStQY1hLYlYxb2FvaTAyaWlHQlNFRWFIRjRYbWVGd2lZeW5VT3U2Z3lqSWNHb3dGREtWWFFXcGVFRUttUmZDNlJMMlppRUlaQjBWSWtuM2lKQlpaZzB6NjFlQVVIWTh3NW1Mc0JEVjVNa2xDdzhOR051QnRhOE5KUnpzdUVNbklPVEttY0IyTXdCdUVDNDljeTAxQktGY3VlNTVSQ2hjSWs4c0ZNTUZvalloYUZrazMxb3k4eG44VnMycWNhcitENm1neTdzY0gzcnFEQml3dFNTckRnc1Uyb05WdHgwdkhvK3BsZ3dtcHFMU3BOcEdJNVRHMkVtNDJTWFJVd1F5VllJTjBNZkpzdHA3V3VyOXdxMGx3bUFhMFI4Wmd2WkI1WnoxN09mTmJ2WDQxbnV4aFRaTmJhSzZIUTZKUkJwaVNaLzhnbTFMbzJYN2pJeUljMzRRVGxnbUpBSWRCYTU4c0NwdEpFcW1Tbno4cDRSSkdDUEppU1Vpb255MDJBdE5KaFhVTjBGNW9FQWlIanVDVCtzWkVsdmMxc2UxMDkyYmhDRkJVeWRKdE5MVHdKSkV3YXQ1ZVk4WGdiWG5zUGJqcEcxSDUxY2hpcElGa3BsVlZLMmZnQ0pzaC9tTFF3OVVqU1RDcWxiSzExejhBZmZhOTBsTWs3aVdpTnNBeUtRbUU5MThyOG5nSWRoelRTUHNQQUt6a1k3aFNwRGRQKzlhSGlnamdtTTlaa3FWM1pSckZZUXFWaVUySVg5d1NHZHB3TVF0VktxUjZsVklrQkRhYVNTWFh5QnRrUlFtdHRhNjM3Qm1rcjBXVFB5VWVETUNST2xVQzI5REtqcDBSNm56cmFsaVRKSlRWNEdzTXVhNzJUclNFSWdSYWdFZ0loSlUyZGlvWm5PNUFidXNtYkdwR3lpTXJYSnBlaENvQ1VFcTExWDdsZFE2ejg1MkNkN3hZbmIvQ2hybEtxTC95ajFtaFZOcEdJL0RDVGpVQ2dxeXdLdGsxaVJTdUxObWZvV1ZiRjFtYndFc3BQay9VTVJwZ29QaUVvQTVBZUNLaHFoK1pORHBtWGM5aUZJazdDUkJpUlNiUTdFSEtndENkQWE1M0ZONDFpREU1TDJXWEdLNU1YZkFIVE85QjBxdXlEaWVxUmRoOGFoR1ZnV3hxak8wdm00U3dMcXcycURwdERTeE4weC8wRzRwUTBhRG11d2thTHN1TlFLb2diSkJ6QnpHS0txblY1U3MrMVlibWFmRXdpcXF3eEpLSkhqSlpnUFdwUk1RR2tqT2Q1UFF5ZTZUdnAxZFJEODJEQTcyclhILzZsYkdkTElTTXphVGNqRUtpNGdVb0lFaVdOK1ZnYjg2dmoxRFpLY3MyUy9nYURrdVhoU3UxWFMzdUFrZ3dmeXFvSHZldmdwN1EvRk03UWZqTXNJYkU4UVRvblNXOXdTTGU1eEx2NzhZb08wakp4RThKUG5vc0V5MjdqRmNvRStoaHNGdTIyUEpqS0xEK3RsUElGakNnL3BYMFZUQ0xIcGJvMlltd0l3TE1FT2UyaWUwckV0a05xblVWalhRS25UdEpUbzFFWmcwSVM4bkdGa21yZ2hUc2l2UHdFbGlkSjV5UldYaFB2YzhsMGc5SGpJdnBLRlBISXhpUWlGdlE1eFBmSlJLYno3a1dBVUNJVUo4THZwWnhsZUFidnFCaE5Ic3dPUDFncDFSVnVxUEYzMnNBM2tWUmtJdTFPS28rOUVBSVp0L0RpR3M5VDBKVkZ0a096TURHU0puWVM3S1JBeGYySEY5TjRGamhpSU5KZ0lEQmRNRnlCVWRSSUc0eUNRN3dJWmtGajJ3NnUxTGdtNklSRVNnc1paWGhQR2NMWjhRamZUSzdBODd5dWtWN0NLSVRPV0gwd2xRL2hlVjV2NWJQaGw0Z3VvdDNLVU1FZW5BOGhCQmdDREltTysrMDR0YktSZlJEcnFXZytSRGtadUZKSVVYWU1ocWZWRnoyMkFTVURSSlZ2R2c4TWw5angrWSt1ajkzRHNPTGs4dTlLcVY2RzF4dE91cE9YSVI5c0JGR2tJRWxxaEdseEVaUElqalRHb1l2WjMweUFFQWdKbUVPNk13UnhoT0dmTU95NW9aa0pBNmJ4UUNBaTJLM0szWWlFek9RVFhoOFZoMTFyVFZsUnFLeERHdldKMmRWeTdCMDFvTkdBcVpUcUJuS0QvaXAyZktGSFRDNUR6YVNCbjhQUFR6RE9BZ0hzd0U4djhKOTdwWHlueWt6dXlyRTJFVk9EeWt6ZW9FeWdIRVVhcW54VXJ2bWRYdENqOGNHSUliOEhEME5ybmRWYTl3c2hxcFJXYU9Wck1ES2FJVHhsOE8zdXdPd1pRYkFNTW9PR2xQS1BFRVdxVkxJSEZWWHFTdTBsMEdyTG9kSHdiOE8xcVlqSm96S2xKRUJyM1YrT0JyK1NCak1wUHBpaEgyZ29wZkpLcVZ4b3k1VVY3Y0NaRktuQms4ZElmcGVBb2NJbE5KR0MzeXUyRy9tWjRlaEE0SlNsbHhhVkFrcjdXc3VyblAvbytwaGNnaEIxMlBDN0hFSHlQQzlvMVRDa2tlYXVNeHJWWXFqako5Z0IwL084Zk5sTUd0Z3kvS2VPTHA3ZHhJN0VnZ2pOMXdFVEpxeFBLZjk3NFBjZHZQSFFiY3QvSHl6Z3hHdWlZOFFleGFCek5FakE5Q2lsQ2d4V1BrYnQ3QjJyN1RJb2lsU3VSK29Nbnl6UFdwRWlNcEYyS3p2VVpvYjdaSWIrM2YrdExFbENnUkpzVWpFZWVPaTJPM2pQVjlLc0lpWVBnVjhYcGdOMXM0eFNxclBjcW1Gb0ZHbFVqR1hsVjJiM0JiNFoxL084dGtyYlRtbUZNS0tXRFZPTlZ6c2ZJdGhHVkY1ZHd5Uk1oUmsxTkJnOWNGY2MrcG1Sa05uOURQamlBaXZJOTQ5NW50ZUduOHM5RVBiekdaV1FHYTJBR1pvNkhBZ1lwWlRxSEZhUEpDTDdlaW96NGdJUHpsZGxLSmxLMFRLWXNQZlBvSzBqcGlJNm1Cc2ZUdWtVb1EvTjg3eE9Cb2JlRDlWZ2Rua0JqOVlITS9UM0lHOVhWMmJ6aG44VkZWOG00clhEV0dSRUpGK21OS0Z2VGN0eUFGQUhQcGhPS3RZelk0Z2d3ZGhOcEdGbTByQTBZMTBSRG9za3pKUmtSTVZTNjJFeTRwVU1jajk2VkhHR2d6ZU5Udm1VSTV6NFVRNzU2YklCb3JYR2RkMHVCbXN2c09QVC9xcU1oL2QxVUM2TTUzbGRZUnE2eHZmQlJHMHpwd3dqNVQ2TWRQM284djkyOXF3TnFScW9rQytEY2l4MjhOcElDazAyZzdyWkJlZkt6K0x0WXVSeEphTmlOQUptcUcxV2FTSVpudWQxbEJ2V1VGa3FNS2orSldKU0daSklWZkY3NWQ4Wi9yZnd0L0svOUpESENOZWUxZ01PdytGQ3pQK2dvZnNUTWZuc0lNa3VWL2JCV0F3M2tTcURPVHZOZVBwZ05INHVURy9ZbTFlREtnOUxINmx6VnNUdXhaY1RGZGVRMXVIZkFnZHZvTWtFL3g1MFc5UGwxNVJ6bklKenE0ZGw2T3FvUEdDS0lZUkE2SUZlTU9VYlF2Y082cEFxUzlNbXpRY3owb2NaNVg2ZVhlRjBnZktWYVFnajhzRk1KcnV3b25WWldsUmVSWUYxamxZNzFKUER2dytkVzYwcXQ5bVJjTm1SOWhNeEdRd3RkQ3c3ZUxzcUJFekZzNk5udk1hV2hCcE1lZVJCajVSK2haeFdlbER2aVlqSllhZ3VHN1pJclB3SllSSmVJR1JHRkNSQ3YySXpidit6eEJBbjc1QnRocGhGVVIzUzdpUHdpUWFsUEVHS1FUbUxOd2VrR0Q2dVpGUW5hNnd0TTRkcXpZYlcybFpLdFZmYWVKNzJ3R0NQRWpCQ0NCekhvVmdzVWlxVmNGMy9mQm1HUVN3V0k1RklFSXZGWHVWZHhzWlFuMWRvd2xRV0hlNWdBcWNlOG9zbXZNdFJLQlFwbFlvb1Q2SFJnNzZUYVpxdjZHTVoySWZ4K3BZUnU0b1FBbVNnb1E2Y2Y4L3p0Z00ya0FHQ2tYMUQvVEM3eEhnV093WTNUZVY1WHV1QUN1Wi9DU0VrZTBMRlFQbEUwZEd4SGNNd21UOS9QZ3NYTHFDeHNSRXBKYjI5Zld6ZXZKbVhYMzZaam80T0dob2FTQ2FUdnE5cUFoakpzUjQ2WUNzS0VsK3hDQkdRMHFDbnI1ZSszbDdtelp2SHNtVjdrOGxrRUVLUXpXYlp0bTBibXpkdnhqUk5HaHNiaDczbnEya3JrVFl6T1dpdHcrNEdRdUU3ek1weXczWGR5aXplTVJjNnd1Z0ZUR1VrYVdoellPRjVYbXV3b2Q4NlUvamxBa3p2U0ZJZ1FBcUZQS2VjY2dvWFgveG1Uajc1RFRRMk5nemF6bkVjSG5yb1lmNzBwei94dTkvOW5yYTJOcHFibXlkdGtZM2tnSDNGY3lJRTIxcTJNWC9lUEQ3K0h4L2gvQXN2WU1IOCtZTTJhVy9memwvdS9ETzMzSG9yai8zakh6UTFObUpaMWs1OXAwaTRUQzRDdjAvMm9HNEhRdUM2Ymd0RExHdUdhekc3OWxrN2UzS0hYSUFDMzBGc2xSOEpJQWxVQVozcGRQcjh1cnE2bndabVFUd1J4N0lzOHRrOG52SjJZMzhZamRhQ1ZLb0t3ekRHOWNLV1V0TFIwVUVxVmNXWHZ2UUZMcnZzc3ZDNTdkdTMwOUxTZ2xLYXBxWkc1c3laRXo3M2ozLzhnNDk4NUtPc1hMbUtlZlBtVHRoaTIxV2hIdmhucEpSczI3YU5Bdzg4a091di95V0xGaTBDWU9YS2xiUzJ0aUtsd2V6WnN6amdnQVBDMTM3c294L2pwOWY5bkprelo3enE1KzRwd3NVM0wxM3krZnh1M1ErbEZKWnBFVXZFOEpTSGNuMGhZNW9tSFIwZDcrM3I2N3NkYUFDeVFBRW80WnRMRGtPMG1wMDVkK002VmFDOEE1Ym5lWjJWOXI3U0tzd2NySFF5VGhla2xIUjJkcEhKWkxqbGxwczQrdWlqQWZqem4vL0NMMy81QzFhdmZwYWVuaDYwMW1ReTFTeFpzb1MzdmUxaUxyLzhjbzQrK21qdXVlY3V6anZ2VFR6eHhCUE1tVE5uUXN3bHZRTmZTOENJbFcxYTA5dmJ5NXc1YzdqbGxwdVpPM2NPVHp6eEJKLzg1UC9qcWFlZXd2TThoQkRFNDNFT1B2Z2dycm5tR3M0OTl4eSsvbzJ2czNIVEp1Njk5NjgwTnplOTZqNUZUQzdEa3V6S0RuZlhkVjhwQjJaVWpMWFlzZkwzNEdFcHBicTAxajFoYjk3Z1FwcW1rWU5pc1lqbnVmemdCOThMaGN0blB2TVpMcm5rVXU2ODh5LzA5ZldSVENaSnBWSVVpd1VlZnZnaDN2dmVxM2pITzk1Sk5wc2xuVTV6MDAwM3NIanhZcnE2dWdZSkFhVVVudWNOK2p5bEZLVlNpVnd1UjZGUUhQYjhLMUhPMXNSeEhFcWxFc1ZpRWRkMWg1OVFyVkZLMGRmWHgyV1hYc0xjdVhONGFlMWFMbnY3NVR6eTZLTTBOalF3ZTlZc1pzMmNTWFdtbW4vODQzSGUrdGEzOGYzdi93Q0FBdzg4RU1keEJ1MXpwZUFNM3QrMmJYSzVQSVZDd2QrUG5idyt5Z3VDUXFGSUxwY3Jmdy92RlYrdmxBcWQ3Wlh2NCs5RGJwZjM0YlhLU0JGZHBWUnZPWXZYWXNlbTBhUTdlVWZTWUV6WGRidVZVbTFDaU5yS2phZGp3YU1RZ3JhMk5xNjg4a3JPT3Vzc0FMNzg1YS93cFM5OWhmbno1NU5JSkFaZHNLWnBra3FsY0YyWEcyKzhDZE8wK0ovLytSa3paODdrRTUvNE9POTk3L3ZJWkRJWWhwK0s0RGdPcnV1R3Irdm82RUFwUlZOVEl6VTFOUlFLUlRvNk9zbmxzdFRYTnhDUHgwYlVnS1NVMkxaTloyY1hzWmhGVlZVVnFWUUtJUVM5dlgyMHQ3ZFRYMTlQS3BWQ0tSVkd3V3ByYXpsdStYSUFicmpwWnRhdDM4RGl4WXNHdmJkcEdzeWRPNWYrL242Ky9lM3YwdDNkemQxMzMwTjlmWDI0VFM2WHc3WnRNcGtNaVVTQ2pvNU9QTStqb2FHZTV1WW1ITWVsbzZPRGpvNU9xcXN6WkRLWllZSXpFTHc5UFQyVVNpV3FxNnVwcTZzbG1VeVN6K2ZwNnVvaW04MVNVMU1UZm8vSzF3YkgwbkVjMHVrMFhWMWRPSTVEWTJNak0yWTBZOXNPSFIwZGRIWjJVbGRYUnlLUm1ERG4rKzVrb0EySC81OFVFcTExcStkNTNmZ3lvZElVR3JYL0JjWnZkR3lsczlkUVN2VnJyZHVsbE11Z25BdURSaHB5Mm1reGhVS0IydHBhcnJycWZRQ3NXTEdDTDMvNUs4eVpNMmVZY0FuUVdtT2FKZ3NYTHVTR0cyN2d0Tk5PNFMxdmVRc1hYL3htcnJ2dU9wNTk5am1xcTJzb0ZQSjgrTU1mNHJERER1UFRuLzRNanovK09DZWRkQkx2ZXRjVnZQR05aMUJiVzB0dmJ4Ly8rdGRLZnYvNzMzUHJyYmRpMjBreW1mU2doZUdiY0oxb0RSZGVlQUdublhZS3h4MTNIRFUxTlJpR3dUUFBQTU50dDkzR0xiZjhocmEyTm1iT21JR25GRnBya3Nra00yYk9BS0M3cXd0RHltQkErckR2VkYxZFRhbFU0bXRmK3pvTkRRMmsweWtjeDZWUUtQQWYvL0VSMHVrMC8vM2ZYMlBEaGcwY2Z2amh2UHZkNytLTmJ6eUQ1dVptU3FVU1R6KzltcnZ1dW90Zi9lb0d0bTdkeXF4WnN3YVpkcTdyMHRyYXlvRUhIc2lGRjE3QUthZWN3dDU3THlXVlN0SGYzOCtxVmF1NCsrNTd1Zjc2RzlpK2ZUdk56YzJoa09ycDZlSEtLNi9rbEZOTzVrdGYrZ3IzM1hjZlJ4eHhCRmRlK1M3T091dHNac3hvSnBmTDhmVFRxN25qamp2NDFhK3VwMWdzVWx0Yk82MkVqQkQrNUFpbFZiaUN5emVmZHMveit2Rmxnc3M0YUM4dy9ocU1CbVM1TTNtSGFab2d5bXErOW53Qk00MFFRdERkM2MzcHA1L0d2dnZ1QThCMTEvMGMyN1pKcDlPdmVHRUdRaWFSU0hEZGRUL25vb3ZlakdtYW5IcnFhVHoyMk9PazAyazhUM0hVVVVkeDRva25jTWNkUjVESlpMajMzcnNIdlU5OWZUMXZlTVBKdk9FTkozUE1NY2Z3NFE5L3VQeStjYlQyYzFUYTJ0cklaREo4Ly92ZjQ5eHp6d2xmMjlIUlFUd2U1NmlqanVLb280N2lvb3N1NHQzdmZpL3IxNjlqenV3NVNDbkpack5zMnJTSnZmZmVtNk5lOXpxKzd4VHA2K3NubmE0YTVrdnpQQS9UTkprMWExWlpJSGlvc3FCNnkxc3VadTdjdWZ6Kzk3ZXhkT2tTN3I3N3J2QjFwVktSUkNMQmtVY2V3WkZISHNGRkYxM0l1OS85SHA1Kyttbm16cDBibWxjdExhMWNjY1U3K08vLy9pcnBkRHA4dmV1NlZGZFhjL3p4eDNQODhjZHo1cGxuOEk1M3ZETk1BL0E4ajFLcHhPdGVkeWdublhRU2p6LytCSjJkSFR6eHhEOEdIY3ZxNm1xV0x6K3UvRmpPbFZlK2gxd3VSeXFWbWhZM3hhQVBETEo4M2lxbU9aWnJDQXRBTllOOU1HUFNZTWF6bzEybEZqT29zeDBhaEJKSU9iMGFmN3V1U3lLUjRvUVRUZ0NnczdPVEo1OThrcnE2dXAyNjYybXRxYSt2NTVsbm5tSGx5cFVBSEg3NFlTUVNjVnpYUlFoQlQwOFBBQmRjOENidXVlY3UxcTlmejlWWGY1Q1RUejZGNDQ4L2tVc3V1WlJISG5rVWdMZS8vVkt1dlBKSzJ0dTNoODcwdnI0KzB1azB2LzN0YnpqMzNIUG82T2prd3gvK2R3NDk5RENPUHZwWURqLzhDTTQvL3dLZWV1cGZISDc0NGZ6Zi85MUtYVjBkWGQxZFdKWkZYMThmZDk5OUR3QnZ2ZXp0ZlByVG44YTJTNnhmdjU2V2xsWnl1ZHd3djhWUUgxSThIcWV2ejU4cWZQbmxsL0dYdi95WmwxNTZpWGUvK3owY2M4eHhISFhVTVJ4Ly9JbDg0UXRmSkp2TnNkOSsrM0hISGI4ZjVKUHE3T3prd2d2ZnhBOS8rQVBTNlRRUFBQQUFsMTkrQmN1WEg4L1JSeC9MeVNlZnd0ZSs5blZjMStYWVk0L2xSei82VVNoWXdMOUxCOGZ5OWE4L2lZY2Zmb2pPems0Kyt0R1BjZHBwWjdCOCtRbTg2VTBYaGQvMXZQUE81ZU1mL3hoZFhkM1Q1bnFGZ1pCMHBkaW82R1RuTUx4VlE4Q29Ec0o0MWlKVkp0dmhlZDZXUVJ1V1I4ZU9wRjYvVmlrV2l5eFlNSmNUVC9RRnpOcTFhMmx2YnljZWorLzBlOFJpTVhwNysxaTllalVBOCtmUG82bXBHZHUyQjIxMzBra244Y0FERDNMQ0NTZng0eC8vbE5XclYvUGlpeS95Zi8vM085NzBwZ3Y1eHorZUFPQTk3N21TV2JObWtNL25VRXFSeldiNTdHZi9reU9QUElKdDI3Wng3cm5uOGQzdmZwZVdsdGJRU2ZyblAvK0ZjODg5ajVVclY3Rmt5UksrOHBXdmtNL25VY3Fqb2FHQlgvLzZWcDU0NGdrTTArUy8vdXUvK1BPZi84UVh2L2dGempubkxHYlBuazJwVktLdHJUMWN3RU1qVlZKS2xQSk5sVXN2dllRSEhuaUE0NDQ3bmwvKzhsZTgvUExMZEhaMjhmenp6L081ejMyV2l5OStDMTFkWFRRMU5mUFZyMzRsZEVvWGl5VXV2UEJDQUc2KytSYk9PZWM4ZnYzclczanBwWFcwdHJheWN1VktQdkdKai9QeGozOENnRk5QUFlXVFR6Nlo3dTd1Y0QrQy9Ucnl5Q041NmFXWE9PS0lvL2oydDcvTFUwODl4YnAxNjdqenpqdTU0SUlMdWZQT093RzQ2cXIzc2ZmZVM4aG1jMHdYS2x1blZCYUd1SzRick5mSytKSmlqQWwzNDkwUEp0Z1owM1hkbHVETGhMMTVoWnhXTTVKczI2YWhvWjRGQ3hZQTBOSFJTYkZZREIyME80dVVrdTNidHdPK21wNU9WdzJMZHF4ZnY1NTN2ZXZkOVBYMXMyVEpYdFRWMVZGZFhWMit5M2Z5N1c5L0c0QkZpeFp4NktHSGtNdmw2ZXZyNDVCRER1SGQ3MzRYQUovODVLZDQ3TEZIV2JwMGIycHFxc1AwL3NXTEY3RnRXd3RmK3RLWEFiamtrcmR5NElFSDB0UFRTektacEZnc2N2bmw3K1NPTy80QStBdjBVNS82SkRmZGRDTjMzMzBYdDk1NkN4LzcySCt3Wk1rU3RtMXJJWmZMRFRvR1FjUUlZTU9HRFZ4eHhidkk1L01zV2JJWG1VeUdaREpKUTBNRGUrMjFsTC84NVU2Ky9PV3ZBSERtbVcva3FLT09wS2VuaDlyYUdtNjg4U1orOXJQLzRkcHJQMDhzRm1QeDRzVlVWMWVUU3FWb2FtcGk1c3paM0h6enIzbm1tV2NCT1BiWVk4TFByNlMxdFpWTEwzMDdXN2R1WmNtU3ZhaXZyeWVUeWJCNDhTS1VVbnovK3o5RWEwMVZWUlZubkhFR3hXSmhXdHdVQnlXNVZtZ3ZRSkJrWnpKNEhZK1o4WndxVUNsa1lwN25iZGRhZStCL01hMTg1V1k2WmZQNmFkY21wdW03c2p6UEN5TXd1NEtVQXM4TGFwVWtVb3BodFRvUFB2Z1E3ZTN0ekpneE9PTlhLVVZEUXdQUFBmY3NuWjMrUUljRkN4YmllUjU5ZlgyY2ZQTHJBWGppaVNlNDRZYnJpY1VTdExhMjB0TFNRbXRySzYydHJXemJ0ZzNRL1BHUGYrUzU1NTRENEtpampxQllMSVh2MzluWnlUdmZlUVVYWFhReC8vdS92MlREaGcwQTFOZlhzWHo1Y3Y3elB6L0R2ZmZlelplKzlFVmMxNld6czNPUWtERU0veGo5NGhlL1l0T216Y3llUFh0WTJOb3dET2JNbWNmdHQ5L0J0bTB0QUJ4Ly9ITHkrVHpWMWRVODhzZ2pmT1FqLzBHcFZLS21wb2JlM2w0Nk96dHBhMnRqeTVhdGJOL2VRVnZiTnA1NmFnVUFUVTFONGJtcDVNa24vOG5MTDI5a3pwdzV3NDVsYzNNekw3MzBFdXZYcndmZ3NNTU93N0tzYWVQb0ZiSzhCaGx3bm11dFBkZDF0ek04QjJiTVBwanhya1VLYzJFOHorc3NOd0J2RG5xRkNQUzBNcEZNMHlTWHk5UFQwMHM2blNhZFRoT1B4ME5uNTg0UTFDNmwweGtBc3RrOGhjSndMY2l5ckREME92UTV3ekJ3SEpmT3ppNGFHdnhRdGV0NkpKTko5dHR2UHdCNmUzdTUvUEozVUZkWE4rSit1SzVMcVdRVFhFc0xGeTRNczUwRElXUGJEdmZkOTFmKzlyZS8wZGpZeUxKbGUzUFFRUWR4OU5GSGM4WVpwMU5WVmNXSFBuUU5TNVlzNFYzdmV2Y2dUU2JRWFB2NmVvbkhZenVNcmlXVFNicTZ1bm4wMFVlNTZLSUxXYkprQ2FsVUN0dTJxYW1wSVJhTDBkSFJTVHBkeGV6WnM1ay9mejV6NXN5bW9hR1JkRHFGMW5ENDRVZTg0akczTEhPSDlWOUJ0S3FycTR1OTl0cUxlRHcrcmE3WlN2TW9xRXNxdDJub0JtS01rMkFKR0E4Qk05VFpHMlR6OWlxbHRrb3BtNkdzeGNDMGlpVEY0d20yYnQzS1UwODl4ZHk1YzFpOGVCR1pURFhaYlA5TysyRTh6eU1XaTdIWFhuc0IwTmJXU21kbkovRzRoZXNPRGpXL0VyNDU2di9iRndxK2dBa0V5cW1ubnNxcHA1NjYwOTh0MERnQ2xGS1lwa0Z6YzFPWW5QYklJNC94MTcvK2pXUXl5ZEtsUzduMjJzOXl4aGxuY05aWlovTCs5MS9GMTcvK2piRHdNYmhNWXJIWUsycDR3VUp1Yi9kTnhreW11bndzTloyZG5WUlZWZkhlOTE3SjJXZWZIV3Buci9aZVEzbWxGcTZCSmhXNElxYUw1Z0xsd2xZSldxaXcvVVk1UDJpTDR6ZzlqQnlpSHBPUUdXc2V6STVNSktHVXludWV0OWt3akVQQmo3c3JQSVNjUGlOTTR2RVkyN2ExOFBlLy81MXp6ejJIeFlzWHM4OCt5L2o3My85T0pwUFpxZS9ZMzkvUG5EbHpPUEpJLzY3N3pEUFAwTnZieSt6WnMzSGQ0aTd0enlzdDNOdHZ2NE8vL09VdjFOVFV2c0xyd1hVOVFQUGtrMDlTVTFNZHRtaW9YSlJDQ0dLeFdGakU2Ym91cTFZOXpjVVh2NDI3N3Zvenh4NTdEQmRlZUFIWFhmY3pITWNsSGg5b1N6SFV0elR5ZDlDWXBpOVFQVStoTlhSMTlUQjM3aHgrOHBNZnMzejVjUUE4OXRnL2VPeXh4MWkzYmozYnQ3ZlQxZFZGVzFzN1gvM3FsOE9reDlFeUhVejRZUWlRb214KzY0Rno2WG5lWnUyM3VhM0NiOWV3bzdXOXk0eVhCaE44ZUtWenFPUjUzcmJ3UkpYOTBkS1EwNm8vYnlJUjUrR0hINlpZOUhNNTN2cldpL25qSC8rRTU3MTZVV2NRZm4zNzI5OU9RNE8vV1AvMnQ3K1RTQ1RIdkYrR1laRE5adW5zN0FCZ3k1WXRYSGZkVDhsa2FoaXByYW9vMTRvVkNyNURjOGFNR1ZSWFY1UE41dWpxNnFLMnRvYXFxcW9SNytpbWFiSmd3WHhlZUdFTnQ5MTJHOGNlZXd5elo4K21xYW1KclZ1M2xyT0wvY3NpbVV6dWxKQlpzR0FoQUIwZDIrbnI2OFd5WXZ6Z0I5OW4rZkxqV0w5K1BlOSs5M3Q0OU5GSGtWSmlXUlpTR2lqbDBkZlhFMGF6SWdZSW03NUpmMHhKNWMydjdPQzE4UVZNWmJySm1NMms4YkJYZ3JqNTBBS3BJWDFoUUh2NGZXR21pUVlEVUZ0Ynh6UFBQTWZ2ZnZkN0FDNjY2Q0xPUGZjY1huNTU0eXVxNGtHSndkS2xTL25JUi80ZDhCMng5OTkvUDNWMXRXUGVMOE13Y1J5SGxTdFhBWDRHNytMRlM2aXFxbUxXckpuTW5EbGp5R01tTlRVMXpKa3poM256NW1FWUJybGNqbG16WnZEVnIzNlpHVE5tME43ZS9vbzNCU21OME9maXVpNnU2NFpDTmdoVEgzUE0wY1Jpc1VGMVNwWEhwTHU3bS9uejUzUGNjY2NDc0dyVjArUnkvUnh4eE9HY2ROS0pBUHkvLy9jWi92NzN2ekozN2x6bXpadkhqQmt6d3RLSjV1YVo3TFhYa2pFZnYrbEdaVmZKb044eWhENm5Gb1k3ZDRQZng2UUZqSGVZdXRKdWs0N2piQW8zS25lMnF3eGRUd2NNUTFKVmxlS2IzL3dXUFQwOXhHSXhmdlNqSDNEY2NjZXlmdjE2OHZuOG9FVVpPQkZmZm5ramRYVjEvUHpuUDJQT25Oa0FmT2xMWDZGUUtPMVNIczByVVZ0Ynl6MzMzRXQvZjVaWnMyWngxVlh2bzdXMWxYdytQMGk3Q2pKMlcxdGIrZXBYdjh5dHQ5NUNQQjVqOCtaTm5IVFNTWHpnQSsvbksxLzVNb1poMHRMU01rejdERW9SWXJFNHA1OStPZ0F2dkxDR3RyWTJZckhndS9qbisreXp6K2JNTTkvSXl5K3ZSK3VCaUp1VWtsek8xNWF1dXVwOXBOTnArdnI2K2Z2Zjc4Y3dCc3d4clRYcjFxMmpzYkY1V011TnpaczNjZkxKcitmb280OGFsK00zM1JpYUF4UDgyN2J0ell3OHFtUzNhekFqN1V3ZytXS2U1MjNUV3BmODlveEJiMTZKSVhjdFQyUXFvN1dtb2FHQjU1OS9udmUvL3dNQXpKa3poei84NFE2dXV1b3FsRkpzMmJLRnRyWTIydHJhMmJwMUt6MDl2Wnh4eHVuY2NjZHQ0WjM2czUrOWx2dnUrK3V3TVBSWVNLZlR2UERDQzN6MXExOEY0S01mL1E4Kzg1blAwTjNkdzhhTm04cjcxTWFtVFp2bzdlM2w4NSsvbG9zdnZwakREeitjWkRLRllaZzgvL3dhd0U5YysrMXZmODJoaHg0U2hyWXJYNitVNHR2Zi9nYXZmLzFKQVB6eWx6Y015Z2tTd3YrcGxPTEdHMi9nbkhQT1k5T216ZUg3Yk55NGlhNnViajczdWM5eTVaWHZCdUE3My9rT0w3eXdocnE2T3RyYTJzcnZJemo1NUpQcDZHaW50YlcxSEtadVo5MjZkWng0NG9uOHovLzhITThMR2ltTnkyR2NOb1NOK01zYVRQbEdYL0k4Ynl2REkwampZaVpOUkpnNnlQNExjbUU2aEJCemdsd1lyUlhDRUdoSEQ0ckh2OWFaTzNjdXQ5MTJCNWRkZGprLytjbFBxS21wNW52Zit3NGYvdkNIdVAvKys4TkZPR1BHREk0NjZpZ09QL3l3OExXZit0VC80enZmK1I0elo4NFlFaElWb1lQMGxmcjNCdUhHUVBPSnhXS2hsdEhZMk1oM3Yvczk5dHByTC83dDM2N2dpMS84UE9lZmZ5Ni8rOTN2MmJKbEsxSks1cytmeDBVWFhjUkJCeDBJd0VjLytqRTJiSGlaQlFzVzhNQUREL0N4ajMyQ3IzLzl2OHZaeFBkejExMTM4K1NUVDlMVjFWVnVDenFQYzg4OWg0VUxGd0x3UC8vekMyNjU1ZGNWd2xLRUYvZFh2L3JmWEh6eHhmemhEN2Z6cHovZHlYMzMzVWR2YngvTnpjMjg2VTNuaGUwdTdyenp6M3p6bTkraXZyNmVlRHpPaWhWUGNmdnRkM0QrK2VmeDMvLzlGZXJxNnJqMzNudXdiWWZaczJkeCt1bW44Mi8vZGdYMzNuc2Y3ZTN0WEhycEpjTjhZTUV4ak1manI2aEZCejF1QUJLSnhFNWVBVk1mS1NWYWFDcHpZSlJTSGE3cmR1QUxtS0dadTFNaVRBMGplNXhqcnV2MnVhNjd6VFROT1VvcFA1S2tGVkxLYVNWY2dnVStaODVzYnJ2dGRsNTZhUjFYWC8wQkxycm9RaFl2WGpTc3ZVSEFuLzcwSjM3NHd4L3h3QU1QTUhQbXpGQXdRR0JLMlJTTGZpU3BVQ2lFRFo2R1loaEcrWG4vcHRQZjN4OTI3VThrRXRUVzF2S1JqL3dINjlhdDQ1cHJQc2hoaHgzR1lZY2ROdXg5WG5ycEpiN3hqVzl3ODgyL3ByR3hFY013YUdobzRLYy8vU21iTjIvbTZxdmZ6L0xseXpuampOTTU0NHpUaDcyK3ZYMDdQL3JSai9uaEQzOUlYVjB0c1Znc3JBVUtydFZObXpaendna25jdnZ0ditmc3M4L2k3TE1IUjN1VVV2em9Sei9oaTEvOEw1TEpWRmhvbUVnaytQakhQMEVpa2VDTU0wN25rNS84T0ovODVNY0h2ZmEyMjI3bmJXOTdHKzkvL3dlNDlOSkx5R1F5b1ZOYUtSVjJrd3Nhc1NlVHc1M3BRZ2hzMnc1OVJMMjl2YU5LbnB5U0JKME1Lb29jYmR2ZTVycHVINzZBR1NtQ05MYVBIR1hMekVva3ZxQ3l5anVad0I5N2tBSzZtcHFhdmhtUHg5L2l1aTdTa0NSU0NiVFM1TE1GakVuUGlabTRscGtCUVdUSWRWME9Qdmhnamp6eUNKWXRXMFpqWTJQb3hIenBwWmQ0NG9rbldibHlKWTdqME5UVU5PeU9xcldtV0N5dzMzNzc4NFkzbk16ZGQ5L05peSsrTk9JZDFkKzJ5QWtubk1EU3BVdTQvZlk3Nk83dUR1L0NVa3BLcFJJZEhSMHNYYnFVNDQ5ZnppR0hIRUpEUXdOS0tiWnRhK0dwcDFid3lDT1BzblhyVnBxYkIvd2JRWmk2cmEyTm1wb2FEai9jRjA0TEZpeWtwcVlhei9Ob2IyL2ptV2VlNWJISEhtUHQyaGVwcjY4UGU2azRqb09Va2ovKzhRNzIyMjgvcnIzMjgzeis4OWN5ZS9aY1RqMzFWSll2UDQ0Wk0yWlFLcFZZdTNZdDk5OS9QNDgvL2dTWlRHWlFSYnFVa3U3dUhxVDBUYVRqampzMjdQNzM0b3N2Y3YvOTkvUElJNDhTajhlWU5XczJGMTU0QVd2V3ZNQkREejFFSXBHZ1ZDcXhhTkVpVGovOU5CNSsrR0ZXclhxYXFxcXFFWTlscVZUaXlDT1A1TEREWHNlZGQvNlpMVnUyakhrQ3hHNXZtYWtobG96NWlYV093bE1lbG1XUnkrVnViV3RyK3loUWg5OGlNdzhVR1dpVjZUSjg4cFgvbGp1eGZzWkx3QmdNRnpCVndQYTZ1cm9QcGRQcFR3WVhXanpwWjBibSsvTmhHODNKWStJRkRBdzRjclBaTFAzOTJYSkZjUXdRNVNKR0hTNmdWMnFNYlJnR1BUMDlkSFoyMGRqWVFFMU56WWpkNndMblhYdjdkZ3FGUERObnppUWVqdzlydUtTMUpwZkwwZHZiaSt0NnhPTnh0UGE3eXNWaU1XcHFha2dta3lPYUQwSUlTcVVTL2YzOTVISTVwSlRFWW43NDJiWkxtS1pKZFhVTlZWV3BRV2JlVUFIejJjOStqbTk4NDFzME56ZlIzZDFOcVdTVFNNVERMbnVaVERVMU5kVWpucDlBdStqdTdxWllMSVlwL0o2bnlHVFMxTlRVWUZrV2hVS0IxdFpXTXBrTWpZMk5lSjZIWVJqMDkvZXpmZnQyNnVycXFLdXJlOFZqMmRuWlNWOWZINDJOallNMG9kR3lPd1ZNYUVJbjRtZzB5dlV0Q2N1MDZPM3QvZS9PenM3dkFvMUFqZ0VCWStNTEdEOHhhZ1J0WmpKNjhvYWZ4Y2grR09HNjd0YktIUXErckpEK25YRTZwV0VIQk5tZ05UVTExTlRVaEJYQjROK0pLMzBEci9UZFBjOGprL0c3dXdXLzcranp0TmJsU0lzZmJSbTZJSUxQcWFxcUN2TlpnbTBNd3hnazZIZVV4aCtMeFdob2FBZzFuMTE1L1Vqdk5XUEdqUERZQ0NHR0ZVaU85RHJMc3NJSkRKV2ZIeEJrUnM4dlR6MElqcG5uZWFSU3FiQXc5ZFdPWlNDRTRMV2Z6UnYwZ1JGU0RBeENKQ3h5RE5ibjBERDFvTGNZN1dlUFo2bEE4TzlCSlFQbE1uQlhDR0VHRjBYUXRtRlhlc20rbGhGQzdIUnQwbVF4Vk5CTjl1c0RSbnRzaGdxa2lGZEdTam00a3Jvc1g4b2g2cURJY2R3YVRZV2ZPOVkzcUdCb3VGcmpDNWh0U3FtS09VbitOTUJBYzVsdTJrdkVjUHhzVzkrSHNiT3praUxHRnlIOW9JclNBN09RUE05cmRSeG5HeU1YT1k1TEpHa2lFdTFVeGNOeVhiZkQ4N3lXZ1l6T2NtOFlZeHA0NVNOZWxhRDh3TGI5YUZKZlg5KzA2Z24wbWtFT1JKQ0NKRHZQODFyTG8wcUNSdC9qcnNXTWg5NCt0QU5XNVk2Wld1dHUxM1UzbTZicFYvTXAwTXJYWU9TZU1FdDJEOGMwVFZ6WDVlTWYvd1I3N2JVWDk5Ly9BRE5tek5qZHU3WEhvTFUvTlVDV2E1Q0VIc2ljZGwxM0U3NWp0eEUvYWpTUzVqSjBaTll1TVo1TzN1Qm5wUllqQWUxNTNyb3dSVm41Q1hkU3lHblZmQ3BpeDZSU0taNThjZ1VQUGZUd29CQjJ4T1FnS25waFY2NDMyN2JYTVhnV2RhQWdWR2J4am9ueDdnY1QvS3pjVWROMTNaZkRqY3NadmRLU0NFTk1ueVNtbldTby8yRm5tbE5WSnQrQjM2clRNQXhNMHd3dm1GS3BOT2h2UXdsbUsxVys1MlFkZDZVVXRiVTFhRDNRL21GSDI4R3I5NzZKMkhrR0ZUa3lPSXZYZGQyTkRMVEozRkVkMG03M3dWUXlraS9HY2wxM2k5YmFDV3FTVkxuSXpaREdIcWZCYUszSlpuT1VTcVd3MVVBdzJpTjRmbkEycjU4NzRYa2VYVjFkdUs3TG5EbHpTS2ZUNVlwbGoxd3V4K3paczBtbjAvVDA5SVJWekpWM3JNQzVHaXp3cnE0dWlzVlNSYld6b2xnc0RoTk9RNVAvaHY2K005c0VueHRNSUFqMklkaE9Ta2xmWHgrTzR5Q0VvTCsvZjhRZ3dFakhhR2MvZjA4bE1KRjhEV1pBc0N1bFhNZHh0Z0J4UnZhOWpBdmpHVHV0RkN5VkFpWnUyM2FyVW1xckVHSmhFSWZYUW9keCtUMEJ4M0ZJSkJLOC8vMVhzYzgrKzFBb0ZQalRuKzZrc2JHQjMvM3VObHBhV3BneFl3YTVYQjZ0L2JhWThYaWMrdm9HcnI3Nkt1Yk9uY3Y5OXovQWRkZjluRGUrOFdDZWUrNTUxcS9mRUU1QlBPU1FnMW03OWtYUzZUVGQzZDEwZDNlSG1iUXpaODdreWl2ZnphMjMzc3EyYlMzRTQzRis4cE1mYzhzdHQvRFFRdzlqR0FhZTV6RjM3bHk2dXJybzd1Nm1ycTRPMjdiOVllbVdoV0VZWWRwL0lwRWdsOHRWQ0ErSmFScWtVaW55K1R4YTY3QlplS0J0SlpOSjl0OS9mN1p0MjFZZUFxZkRhWlU5UFQwc1c3WXNITTcybTkvOGh1dXZ2NUZVS29rUWZyVjZQbDhJK3hZSG9lMWtNa2x2YnkrbWFXSVlCb2xFSXZ6OHFxb3E4dmw4cUxsWlZxeWNJMk5SS3BXbTNVQzFIZUgzZ0JIb29JV2QxZ2cvUldTcjR6aXRESzVCR2lwb3hveHg3YlhYN3RTR24vLzg1MS9wYVZGK0JGbTlFaisyYnBZZi9hbFU2a1RUTkJjcXJSQlNZRmdHNklGTXo4bERZRm14U1ZmREF5MnRyYTJkTjc3eGpUeisrT1BjZmZjOXZPTWRsM1BXV1dkU1haM2hxYWRXY1BiWlozSHh4VyttcDZlSHRXdGY1T2lqaitLRUUwN2dtOS84RmhkZmZER0pSSnl0VzdlUnpXWTU3cmpqK09BSFAwQjlmUU5yMTc1QUxCYm5POS81TnNsa2tpMWJ0dkwrOTcrUHBVdVhzSG56WnM0NDQzUldyVnJGdW5YcmVOM3JYc2MxMTF6TnhvMmJ1UC8rQnpqbm5MUDR3QWMrd0l3WnpTaWwrY1FuUGs1Yld6dExsaXpoa2t2ZVJrdExLNldTelpWWHZwdWxTNWZ5OHNzdmM5NTU1M0w1NVpleGFORWlMcmpnVGFSU1NaNTdiZzJYWG5vSnIzLzk2M24rK1RVY2NjUVJmUGpESDJMUm9vV3NXN2VPNjYvL0ZjbGtpbzZPN1Z4KytUdFl1SEFoTDd6d0FrSkkvdXUvdnNnLy83bUNlKys5TDB6WHYvYmF6M0x3d1FleGF0VXFUanZ0Rks2ODhrcjIybXNSWjUxMUZzM056V3pjdUpGM3ZldmZ1UGppTjJQYkpicTZ1cmptbW1zNDZLQURlZjc1NXpucHBKTzQ1cG9QVWxkWGgyRklsaTNibTBLaHdFa25uY1FMTDd3d09EZGtFczYvMW1yRVBqZ1RpZFlhSzI3NW4rK0JLaWVCdXE3N2RHOXY3Ni94MTZtSG43VWJaTzU2N01Sa2daMlJIZU9kL1RYVVJOTDRreDV6bnVkdER1bzVBa2R2a0FHNko1aEpnY3EvYXRVcW5udHVEU3RXcktDbHBRVWhCRTgrK1U4T091Z2dRSERpaWNlVHkrVjU1enZmd1JOUHJFQnJ4ZWJObTdubm5ydFp1SEFSeHh4ekZIVjFkZVVpUUY5Z05UUTBzSHo1Y3Rhdlg4L3ExYXQ1K3VtbmljZmp1SzdIdWVlZVEwOVBENXMzYjhielBEelA0L1RUVDJQMTZ0WHN2ZmRTamp6eUNKWXZYMDU3ZXp1eFdJeGpqamthSVFSMWRiVzgrYzF2SnBmTGNmNzU1NVBMNVZpNGNBSDc3cnNQV2lzT09lUVF0bTdkeHNrbnY1N0hIMytDUXc4OWxOcmFPbzQ5OWhnOFQzSGVlZWV5Y09GQ1dsdmIyR2VmZlRqNDRJTjUvUEVuZVBUUlJ6amtrRU00NDR6VCtQR1BmNHB0Mnl4ZHVoU0E2NjY3am82T0RvUVFYSGVkUC91cHZyNmV0N3psWXBZczJZdXRXN2R5ekRISDh2VFRxemo0NEFPUlVuREFBUWR3KysxM2NOWlpaMUVzRnVucDZlRzAwMDZsdlgwN2h4MTJHT3ZXcmVQZ2d3L0dzbUkwTnplSGRXRy8rYzF2YUc1dTNyMFh4UVFUWk0xTElhSGNqMG1oUUVDNVYxTVdQNEkwcnNsMWxZelhiWHdrQis4Z2I3UnQyeTlWdHM5VW5rSklHZnBoOWhTU3lXUzUrMW90TlRYVjJMYk5iMzd6RzlyYmZZMGhIayt3ZXZWcW5uMzJPU3pMRjhBelo4N2s4TU9QNUkxdlBJT25uMTVOYzNNVFR6NzVKRklLOXRwck1kZGZmejIxdGJYWXRrMUhSd2ZidDIvbm9JTU9RR3ROWDE4L1RVMk5WRlZWNFRnTysrMjNMMGNjY1FRclZqekYzbnZ2ellJRjgzbnh4WmM0N3JqaitNMXZmZ3ZBSFhmY1FXOXZMdzBOOWF4Y3VaTG5uMytlZWZQbVVpZ1VlUHp4SjhqbmMzUjNkM1BmZlg5bDA2Yk4vTzF2ZjZkUUtMQjQ4YUt5d0h5U3JWdTM0bmtlZi96akgybHBhU0dWU3JGdDIxYVVVcXhjdVlxSEgzNkVzODgraThiR1JsNTY2U1hpOFRodmZldGJlY01iM3NBNzN2RU90SVkxYTE2Z3BhV1ZXYk5tMGRmWHp6MzMzTXU2ZGV2NTI5L3VKNS9QVTE5ZlQxdGJHMnZXUEkvajJMenVkWWNocFY5SE5ILytmTHE3dS9qZDczNUhQbDlnM2JwMWRIVjFjZjc1NTNQSEhYOGdsVXBOKzVzYUROUldLZTM3UGpXK2U4SjI3SmNZeU9uZDRib2Q2K2VQbDRrRWcwMms0R0hpMjNpT2FacTF5V1R5VFVHekc4TTBNQzBEei9IdzFLdjNyeDAvZG8rSlZFbFRrNytvT2pzN2FXcHFZc09HbDZtdnIrUEJCeC9FOHp3T09PQUEvdld2Zi9IaWl5K2h0ZUR3d3cvanZQUE9aY1dLRmZ6aUY3OWs1c3laNUhKNUZpeFlTQ3htMGR2YlN6YWI1Ym5ubnFPdXJvNUREejJVbHBZVzVzK2ZSMHRMQzZ0V1BVMnBWR0xObWpYc3ZmZmVkSFYxYysyMW42Vy9QOGVpUllzd0RKUHE2Z3paYkpaOHZrQlBUeStQUC80RURRMk43TFhYWHF4WXNZS0hIMzZZZ3c4K0NNOXplZUtKZjJLYUptMXRyY1JpTWJaczJVSXltZVR1dSsraHFhbUpHVE5tOE9pamo2RzFadnYyN1ZpV3lkcTFhNm1wcWVHUVF3NmhxNnVMQlFzVzB0Yld4c3FWcTJodjl4dHh2ZU1kbDNQODhjZXhZc1ZUM0hmZmZYejR3OWVReVdTNDRZWWJxYXBLc1cxYkM3RllqTGEyTmtxbEV0bHNqbE5QUFlWRERqbVVCeDk4aUxWcjEzTG9vWWZTMXRiS3FsVlBrOC9uMkw1OU84bGtrbi85NjEra1Vpa09QdmdnZnZDREg1QktwU2IxR3RnZEpsTGc1ekl0RTA5NWVPV0lyU2xOc3YzWlg5aTJ2UW0vT0Rrb2JBeE1wSjJhNkxnenNtTThxcW5EVFJoY1ZSMW5vRzJESFkvSEZ6UTJOdDZ1dFU0clQyRWxMT0xKT0tWY2tWTEpucVFVOHNtcHBuNGxnc3pXd0hGYUxCYkRPVWF1NnhLTFdUUTFOZFBlM281cG1xR1BLcGxNMHQ3ZVRsVlZGVzF0YlZ4KytlV2NkZFliMmJhdGhYUTZ6UWMrY0RXMXRiVklLY2xrTW5SMWRWRmZYMDgybThYenZMREFFQVRGWW9GVUtrVnJheHZISDcrY3E2LytBR3ZYdnNCZWV5M2hneCs4QnNkeHl1YXJwS21wa2E2dUxyTFpMRE5tK0EyeGdublJaVnNlMHpSUnlxL0t6bVF5VkZkbnd2bllwbW5oZVc1NEp3MmNyNDJOald6ZnZoMmxGSWxFSXR6ZlJDTE85dTBkYUsxcGFtcWlWTExwNysvRHNxd3dhYzhYYm0yY2RkWlpISFBNMFh6dmU5OFArK1kwTmpaU0tCUW9Gb3RJYVdDYS9qNzI5Zlh4bnZkY0NjQlBmM29kVFUxTmszN2VKN09hdXB5cFN5d1d3MHFZL3ZYbHVDREJFRWEydmFYOVRjVlNjU1ArZXMzanQyb0lxcWhkQmdUTkRwbXNkZzNoSmd6V1d1SkFzdnl3cEpSeXhvd1pOMGdwRC9JOEQ5TXlTYVFTT0NXSFlyNklhWTJjdnpHKzdINEJBNFB6V2dML1UyVUlPY2lOQ1k3NVFDVzJnUkNFdytaUE91bEVtcHFhdU91dXUrbnA2UWtUMlBTQUkyK1FJN095RFVQd1dZN2pjT1NSUjdMLy92dHgxMTEzczJYTGx0QjhDSHcycG1raXBRekR5Slc5WW9iK0RJUlpaWTVPNVhjTDlpMFFZcFZhUk9WcmdUQ2tQZlR6Z20yRHNiTnRiVzNoZSszb08ydXRtVFZyRnIyOXZmVDM5Mk5aMWlTYzZRRjJSN3VHUUhqTG1QUXRCY2REbUFMbHFkVXRXMXZlcnZ4TzdCNERMUnFLRE5aa1huR0I3QTRCRXpTZkNnUk0wQnNtQWZRMU5UVjlQUjZQWHhUY2hlTEpPR2pJOWVjbWFTRGIxQkF3WXlWWXlIN09pMGR0YmMyb3NtT0R4ZGZUMDBPcFZLSzZ1bnFIbzBtbUdrSUlITWZCZFYyU3llU3Juc3RBYzVSUzdwWk00c2tXTUlGQVRpUVNZSUJubDI4V2xrbXhVUHhkYTJ2clI0RnFmS0VTYUMrQkJoTUluakVMbU1tSUlnV1BrdXU2RzRJMmhVRS9FZE13Qi9XR2lYaDFndWhBZlgxOStMZlJMSmpnQXFtdHJSM1QrK3dPUXYvQ0RqS1hSOW8rNkFiNFd2bU9ZeUZNc0pNaWJGVUxJSVhFY1p3TkRHK1BPU0dKZGhQUnJpSDQ5OURLYXNOeG5KZkNEY3FoNnFBM3pHdFZtNGlJbUtwVTFpQ2hDWnRNbFVxbGwvRFgva2dKZGpCRkJVekFVS2tZcUZweHgzSFdhNjN6VWtvMEdrKzVhS0dSaHR3amNtRWlJaVlUdy9EWEdRcTBKbWpaVUhCZGR6MitDNk5TQ1JpcEZtbk1UR1F0MHRCSDBuWGRWcy96Tm9XVjFkcFg1UXhwaE5JMUlpSmlmQkJCT3hRRjRKdE1udWR0ZEJ5bkJULzRzaU1CODVyU1lJS0g2WGxlditNNGEwSUI0NVVycXcwNU1GSWhJaUppekFSOXJ5c3JxS1dVMkxhOXh2TzhmZ2FhVEUyWS93VW1Sc0RBampNRFhkZDFCd1JNdVVldk5QeUdPSHVDOHkwaVlxS3A3SHM5dEpyY2NadzErSGt1TUx3SHpMamY0U2ZhUkFwOE1HRURLdHUyWHd3Mjl2TWlGRkpJRExIbnRXNklpSmdRZEVVVjlSQUJNOFRCcXhrOGx1UTFZU0xCeUR2c0FUSEhjZFlwcGJxSEpaRVowbzhzamI4UWpZalk0NUNCZzFkVG1hVFlZOXYyUy9oNWFwVzVMdVBhb21IUWZvejNHNWJaa1JZVGQxMTNxMUxxNVlGR1I2QlFvUjhtY3ZaR1JJd1JRZGlEVjNzRC9oZlhkVjkyWFhjYmc1dE12YVpNSkJnYzVob3FaQ3lsVk5aeG5MVmhVcDJuVVo3ZllFbStRanZGaUlpSVZ5Y1lDU1NsOUt1bks3b0dPbzZ6VmluVno4QWNwSkZNb2ludjVCMHBpalRvUzdpdSt5ejQyb3JTL3B4YzM5RnJoQm1IRVJFUm8wQVJ0c2dFWCtCVTlISitwbUxMQ1E5Unc4UUltS0MveEVpaGFnVWtiTnRlRzJ3Wk5BRVhFa1RaRHhNNWVpTWlkaDIvNzR2Zk1US1lnMVRaa3Jic2Ywa3dmRjFXcnRkeFhYd1RXZnd6a3BEeDhIdjBidkk4YjJ2NFZaUy9rV0hJQ2JBQ0l5TDJEQ3JOSVFESy9wZHljZXpXVXFuME1yNkFtUlQvQzB5c2lWVDU3OHBIekhYZE50ZDExd2FEMS96Q1I3K01IMEZrSmtWRWpJS2dDTll3RExUU0JNcEwyY0c3MW5YZE5uWThoeHBlSXlaU1FPVk9WMzRoQThpN3JyczJHRjd1OXgxeHc1NGVlOHFrZ1lpSThXUm9CYlhXQ29FSU1ualg0dmQ5a1l6Y3RlNDFvOEVFVktwZWxTYVNCa3pIY1ZhSEd3WVp2WUgwalVvR0lpSkdSZUIvb1R5SE9xRHM0RFhac1k5MFFwZ01IOHhJOWw3S3R1MTFTcWxTWUNacHBkQkNEK3BlRmhFUnNXdUVqZHUwWDRkVTdyVlVLcFZLNi9DYnYrMW9CdEtFQ0ptSlRMUUxmbzRrYUJLTzQyenpQRytOa0VIaFk3bXllbEk2MjBWRVREK0NhYWxCOWk2RS9wYzF0bTF2dzNmd0RqV1BodnBneHBYSjlzRUVYMDRxcFhvZHgzbW1jblNwbjNCbnZ1TDg0b2lJaU9Ib29NRFJLQ2ZZcVlFSWt1TTR6Mml0ZXlrYlQrdzRSRDN1VExTNk1GSVVLU3l5Y2h6bjJjcks2aURoempDTVNNQkVST3dDbW5KNE9zaC9xV2p1WGl3V244T3ZvQTVxQWl0djloUHE4SnhNQVRPMHNqcG0yL1p6Z0FyYStpbFArV01Wek1nUEV4R3hxNFQ1TDJXeFVWNC91bFFxUFl0ZjRGaTVEaWNzZTNmUVBrM1VHek95NWxMNXFMSnRlNlBydWh2RDBSS2VIMDBLUnNwT0tKSHNpcGhNSnVGNkMxclJEdkcvdk93NHprYWdpaDJiUmhNbVpNWjdxc0JJREJVdVlXVzE1M21kdG0zL0t4NlBMNEt5SDBhWEJReGlBc0xWRldkWlIzWGJFWk9JRmt5VWxBbnlYd3pwdXhZQy80dVVra0toOEMvUDgzcUFldnp4SkpOcUlrMkdnQm1hekRNb05PWTR6c3BFSW5FQjRHY2Z1Z3JMc3Z4cVVFK0Y1dEo0SVFRVWk0V0JmcVVSRVpPRW5xQU1kYTM5dHJQQ0VINVBwY0VOcGxZeDRIOFptdlFLRXl4a0psckFCTVZUSTVsSUhtQ1dTcVZuTTVtTUVrSklwZjFJa29nTERGUGlsbHdNakhIZnFZR0JkaEVSazh0RW1QN0J0RXd0OVlCM3hTOGtWc1ZpOFJrR0dreE5TdTVMSlpPaHdjRElBa1lCU2R1MlgxSktyUmRDTEFuR3BtcWxNVXdUU3ZhRTdFemtQSTZZVGdUOWQxSDRqZlRSZ2JtMHZ0d2lNOG53SU11RWRiR3JaTExEMU1QOE1FcXB6bEtwOUV3d1QxaDU1ZG5NaG9rVTBVQzJpSWhYUTByZlBCcmFZTXEyN1dlVVVwMzRHc3lPTW5oaEFvWE01QXlFOWhsYWx4U2FUNDdqUEJsb0ZVcjVEYWlFNFE4OTk1UVhhUndSRVR2QTh6eS9nNTBoMFZyNTVRRURFeHoveWNodWlnbHQwVkRKWkhrNlJ5cDZETFNZcE9NNHoydXRQU0dFbiticzZUQXJNZWdwR2hFUk1USlNTbCtvS0Q5UVV2YS9lT1VFdThBOEdpcGNBbDdUSmxJbE8zTDBKa3VsMGpxbDFBdEMrQVZheXZORGJhYnB1NGdpTXlraVltUUdoNmZMZi9QelgxNG9sVXJyOFFzY2QrUjdtUllhekk3S0JZSXZhaW1sT2gzSGVUcnd3M2llaDZkY0ROTUk1MVpIUkVRTVJtdS9XbG9ZQW8wS0c3V1ZHM3l2VmtwMU1EREIwV093NVRBcFFtYXlOSmdkRlQ1NitQYWhzRzM3WDVWK0dOY2I4TU5FRGFnaUlvWVR6bldYWWxCNWdKU1NZckg0Rk9XMXhjaWF5N1R5d2NEd0wxYXBzcVZLcGRJemdGM3Bod0g4d2tldElrZHZSTVFJQlAxZmRIbDFsUzBBdTd5ZUtzc0RobW91azdOL2svUTV3eXFwR2Z6RlU3WnRiM0pkZDZCOWcrZUgzQ0kvVEVURURoQitvM3lOWDhNWHpFUnlYZmZaVXFtMEdkL0JPNUwvWlZLMEY5ZzlHc3pReW1vTkdGcnJQc2R4VmxRS0dOZDFNU3dqYXQ4UUVURUVwWlJ2SGhteVBPTjlVUDdMaW9yK0wwTnY1dFBPeVR1VXlpOVk2WFNTeFdMeEtTR0VQMWxBS1pUcnozZ0pCRXhrSmtWRURHREljdGVCSWFJaW44K3ZZSER2M1VyQjRqRU5UU1I0NWRZTkNramJ0cjFhS2RVdHBReUZqTllhMDVpc2lvYUlpTmNPd3Fob3o2Qjk3VVVwMVZPdVAwcXpHNk5IQVpPdHdReDE4bGFxYnduSGNWb2R4M215MGt6eVBBL0RNb0xteFpPOHV4RVJVNDlnL3BFMFJEaTlVZU1YUEpaS3BTZGMxMjFoeC82WFNYVm03ZzROQmtZV01nQ09iZHVQQjZhUXA3eHl5NGFCWktMSVRJclkwOUVxR0xEbXp4RFRGUk1jaThYaTQ0RE44SlNRb2ExU3BxVUdBOE1qU1pVcVhLeFlMSzRBbk1DMjlEdy9WY1kwelNpU0ZCRUJvYllDQWxYUjNGdHI3UlFLaFJWQW5NSHJxOUwzTXFsbXdPNHdrVWFLSkFYL3JpcVZTbXM4ejF2ei85djdzcGpac3F1OGI1Kzl6MUJWLzNTSDdzYlk0RGhrVUJJUmlGQVVrb2RFaWhKRmlRUlBLQ2dLeWdOQkVZUGlGMEFoaWtKaUJCR0JKNXVBaU1HUkF1cUFDWW9OeGpZWXU3dkJlR2hqdXgyYk50aHhON1Jwai9mZWY2cXFNK3d4RC91c1U3djJmK3EvdDd2dnZYOE41N3NxMVQvZkdzNzV6bHJmV3V0YlhSU2pEWXcxRUVMUWkvaVFIL0tBQWVzRkdtNjB6clRlUmwzMzdwOUlLZjhFRi90ZlFnOWVZRXRGM2hCeGlrUkVrem5uenFXVUg2YTFzcVRESkduaVBVY0hnaG13dzZBTnFPUmVCd3VBZVlKcG11WWoxdHB6TE93WllnM21vZlcvRUs0eVJlcXJKRmtBZWRNMGZ3aTBZVjlybzVra0NiamdNR2F3Ynhpd3V5RDNPcjhSZFRtaWIvV1hQdStYV0h2WjJnaW16NXNpakdBMGdFbGQxMzlrclgyUmZvbGM3aktSK1Q4eVJERURkaFNNTWZCMnVabzF0dnVhTWViRnFxcWVoUzlQaDNwTGJKWDVVSy9PVnhIQjlFMVdoeTlDcnJWK1VTbjFVYzY1NzRjeEZ0cG9KR0pJa3dic0xxZzh6VnFIQVdyYmFNdlRIOVZhdndpL0hyWlBlM25vMFF0d2RRUkQ5MkVJcDl0N0RzQkpLVDhjcnBVMTJrOVhDeUc4TWZpUUpnM1lJZEE2WlpFSWY1RTF5L3BMbXg1WitITTZ6Z3dldXZaQ3VDcVI5N0tPWGdQZ29LN3JaNnkxODI2NjJub3JRTUVGM05XOFZnTUdYQ2tZWTBoRU96M2QvbU5nTU1hVWRWMC9BK0FBRjRYZEs1bWlKbHpsY3FBNFJRcHZvNlpwUHErMS9naEZNVnByYUtzaE1tOEdQblQxRHRnbGtQY3VGOHZMMVRqbmtGSSszVFROQzFqdTN1MGJEZGlKRkFub24wc0tRem9HWUY3WDlRZEpoM0hXd1NpRFJDVGVETndNZTQwRzdCYjg5SFM3WEMwZ21LcXFQZ2lneE1KY3FpODlldWdDTDNEMUJMTXFSU0lUcXFjQkdHcXdNOFlBRGhDcEgzNU1odTJNQTNZSVhIREF3VnRqTG9ZYlRWVlZUOE43NzY2cUhJWDNEeFhya0NLdFNwUDJtNlo1VG12OXpOTHdvOVVRcVVBeUREOE8yQkVzaGh0YmFjQ2lNNWVTVW42aWFacm5zQ2hQOTQzZ1hJbitBbHd0d1FEOUpXdTZKYzY1V1YzWFR4REJHRzJndFFFWEhEd1IwRVpmMWVNZU1PQ2hnWmJiTTVxZU5xNnJIbFZWOVlSemJvWkY5ZWpLaGQwUTYwQXdzUVlUTW5EZTVwZTZHMzdVWG51aDRjZWhYRDFnMjlFdHQzYythcmV3WUw2TDE3VG5SNEZGbThjcS9lVktjTlVwRXQzM0NiMEd3RjdUTk05cXJUOUpKbFRHR0dqanJUU0hwcnNCdTRCdVRBWm1xYmxPS2ZXcHFxbytqY1Z3WTN5UnZuS1NXWWNJSms2Tmx1d2JuSE9WbFBKSkloaG5IR3liSmdraEJvK1lBVnNOR203czlvUFp4V3FTcXFxZUJEREg4bkJqbi9heWt4RU1vWTlrd25CdlVwYmxId0JRREw1RVo0d0ZHRHFDR1RCZ1cwR2JOUmdBR05kRjdOWmFWWmJsQitDclI1Y05OMTRwMW9GZ2dIN3JCb04yK0xGcG1rOXJyVC9ScFVuYXdCZ0QwYVpKQThrTTJFYVF1TXRGQXVzY1hOdjYxWHEvZktLdTYyY0I3TU9mSjVlbFIxZUdxeWFZVUlmcEl4a0xJSFhPelpxbStiMnVtbVFNakRiZ25FUHdJWW9ac0oydzFvS0x4V29TNjJ3M0xsUFYxVlBPdVhNQUtTNldwbU55R1ZJa3JOWmhMSUQ5cXFvK2dMQ2FaQXpBR0xqZ1F6VnB3TmFCam1lYVBiTE93VGdEbHpnWVozUTFyejZFNWRtanZnam15dE9rZFNBWVlGbU1pbWNwTkh3MTZUTmE2NmNYYVpLR05ocHBsZzZ6U1FPMkRqUjdKTGp3WXdIYWdUbEd6WFVmcVp2NnMxZzAxL1hKQzFjdThBTHJRVENYelNYUkM4YWRjL09xcXA0Z0swMW5BS01XMWFUQjZXN0F0b0h6aGNab25iK0Fpa1NnS3F2M09lZW1XR3h1WExYNzZNcXhEZ1JEV05VUFE3Zjl1cTdmNzV5ckdXTnc4TE5Kempta1dYcDFqM3JBZ0FjRUxqZ2NhL2NldGVNQzF0cTZyYXJ1WS9YNXNoYlJDN0ErQkxQSzVTNXV1dnN6cGRUdkw0OE8rRFNKSjhrd1lUMWdLMkN0UmNJU3BHbnFQYWxiYTh6VzJQdjlUZFA4R2ZyVG83WFNYNEQxSVJqZzdxbVNBNkNycXZydEpTdE5yWUFFNEVPYWROL0JHTHZuMjREN2l6Uk5nUVF3MW5iNllwSWtLTXZ5M1FBVUZub2x0WFAwK2I5Y09kWnQ2Zk9xYWhKOXZGK1c1UWYyOS9lL3dsanltR08yNjRsSnN4UlN5bUYwNEJXQ3lJSThYMmsvT04zQ242T09Vb29vYVhSamVBOWVHUmhqWU1MUEhUbTlHQTB3eG54bFBwOS9BRDQ5dWx2MHNoWllaNExwRTY4bVd1dlBOMDN6dTBWUmZKZXlGa1o1a3NtekhJMW9mQVBlc0FYeUpXT3B4OGo0MU5OYTIrbGNBQzRRRE4zN05hYmM5eVVKN3hsTEhySURYaHFNTlVoNUNzRUZqUFhiTk9nMUxzdnl2VnJyTHdENGVnQTExclM1THNRNkVRdzVibDAyL0dnQmpLdXFlazlSRk45RmU1TzAxc2p5RENJVmtGSkNpSFY2V3VzTk12UFNXbmMzMHJLU3hPc0FSQjVoS2tRUkRwRVJSWTlDQ0hET2thWnA5ejRNWkgvdllDN3czYlhPTjllMXIvdDhQbjhQdkMxbWVENzBXV1FDYTBJeTYzWW0zcTFjYmVDYjdqNit2Ny8vZnhsajMrU1lXeFo3YXo0TVFONGoybjA2MEZwREtlVTdSem5IZUR4R2xtVVFRbmd0QUZqNWVoTEpTQ2tocFVUVE5HaWF4cjhmYWRvUnpaQTYzUjIwVkUwSUFlTU1yRjVvTDFyclQ1WmwrVEg0NWpxYTFkTlkxbC9XUnR3bHJCdkJBUDBrRTg1YUZOYmFyOVIxL2U3OS9mMXZrbExDYVg4Rkh1VWpwQ0tGVk5JcjhNTUIzUXVLV3BSU1VFckJHRDkyTVpsTU1CcU5sdmFBOStrdjhkOUsweFJaNXBmaUthVlFsaVhLc2tSZDF6NjZ6REtrYVRyc0ZyOExuSFBlaG9RektPMnRHUmo4cXA3VDA5UGZkczZkQXZnNkFBMVc5NzZzMVF1OFRsV2tFS3NJaGo2L1ZsWFZVODY1aW5waXJQTE5TR2syRU10bG9KTzhhUnJVZFExckxTYVRDVzdjdUlHRGc0T09tSTB4bmNCN0djSlV5UmlETkUxeGRIU0VtemR2WW05dkQ5YmFqbXlvbDJQQWFuRE9QVU8wdHBqTVc4UFc4L244U1FCSHVLaE5ycVc0UzFpM2QzdFZQMHhvNDBBVDFzODFUZk1rbGF5Tk50M29nT0FDV2c5Mm1qRkllRzJhQmtvcENDRndkSFNFdzhQRGJsTkRLT3ErSEZES0pZVEF0V3ZYY1AzNmRhU3ByL0NWWlRtMEVxd0ErYjV3d1dITllpMXN1N1h4eWFacFBvZGwzOTA0c2wvTEZHbmRDQVpZUGZ3WVJqRUE0T3E2Zm1kbkNPNHN0TkpBZ3U0cVBCeklDeEM1VUVxVTV6bXVYYnVHMFdqVVJTdjNFeFRWak1kajNMaHhBMW1XUVNtRnFxb0drdWtCQ2VSZzNuTTM3SDJaeldidnhPSzQ3enNmMWs3Y0phd2p3UkRDUnFLK2F0SzFzaXcvWkl4NXJpdXhLbi8xeklwc0tKTUdvTFJJU3RscEl0ZXVYZXRtdUI0a1NPeTllZk1tUnFNUnROWmRhamFrU3g2VU9vcFV3RVk3cDdYV3o4L244dzhDdUk0RnNZU0diRVF1UTRyMEV0Q1hKc1U2VEdhTU9hbnIrdTAwQUduYjhEekprbUVBTWdBSnVuU3lIeDBkUFZTakxwb012bkhqQnZJOGg5WWFUZE1NV2xrTGEzMzFLT0dzYTI0RUdEam5tTS9uYjdQV0htUFo5NFhrZ3JYc2ZRbXhyZ1FEWEZ3WUZlZWNHc0JrTnB2OURvRFNYNlVCS3kyc3RzanlmRTFmOG9lTHNCU2RwaWtPRHcrUlhNSGNGcEU5UlU1TjAwQktPVVF4QUJpanRCNncyclpPZGd6T3VYSTZuZjRPVnM4ZGhaSDlXbUpkMzkzWUh5WVd0dWlGUHBCU2ZyWnBtdmVRMkt1TmhsWWFhU1lnaEJkN2R6V0tDY21GTVliOS9mMHJYYnNiVnBsYVg1UGgvV2xiQkxqZ3NDNFFkd1ZIWGRmdmtWSitGZ3RqcVRCRjZpdFByOTBsZFYwSkprUWN3WVE1S0FDa1pWbStuV1pqcUxQWE1ZY3N6N29kdnJ1SXNJUThHbzJRNS9tVjYxSmFhNHhHSSt6dDdjRVlBNlhVbFQ2ZXF3U2xpS2xJdlMyRGRsMXhnakdHNlhUNmR2alVDT2l2SHExMWVnU3NQOEhZNk5ZWHpWd3J5L0xEeHBobmxzUmUyYnJkN2FpTkF3bTcxbHFrYVlyeGVIemw1RUt3MW1KdmJ3OUNpSzZxdFl0UkRIWHU4cFIzRndLZ00vVitwaXpMRHdHNGh0VkwxZGEyZWtSWVo0SUpYN2hWWXdNVzNoUzhMTXZ5LzRRMkRrWWJNTTZRWnVuT0hzQWtHQlpGNFJ1NDFrUlV0ZFpDQ0lIeGVOd0owTHNJYXkwRUYwRFN6aDIxSXk1Q0NNeG1zN2M1NXlyNENPWXk3V1V0VXlQQ09oTU1zSG8yS1JaN2I4N244eWVzdFY4aXoxNnROSXcyS0lxQ3VpR3Y2ams4ZEZDSm52TDdMTXZXaGx3STF0cHVMSUVHTEhmcElrQmxlcEVKT0dlN3VTT1dNR2l0dnpTYnpaNEVjQlA5eExLMmpYVXgxcDFnQ0NISmhEcE1ONStrdGY1Q1hkZHZvd2xlYmZ3QUh4ZitCTnUxQTVqbWgyamdjTjBJbGxLM1BNKzdWRzZuNEx6MndnU0ROYTVMandRWEtNdnliVnJyUDRlZm5JNGxnYkE4dmJiRVF0Z0VncUVYc1MrQ29SZmJBZGlmeldidmNNNDFSQ1JHRzJpclVXVDV3My9VVndnNllSbGozUkRpdWlMTEZrMlI2eFpsUFVnd3hpQnlQMlVlV21JQ2FNN1B6OStCaGVmdTNlYU8xdnBGMnhTQzZmUHFqZE9rZzZacFB0czB6VHM1NTJCZ25tQ1Vnc2o4VlZ3cHRSTlJERVV2WkFTMXJ0RUJ0Y2VURUw4cjR4M0dHUEJVK0gzVDJoTU1heHZyeXJKOGw1VHkvd0U0eExMZXVNcWFZYTJ4Q1FRRExFY3hNY21FTDNvMm04MStOVWtTQ3lwWlN3UHRmSHY4K3I4ZDl3OGh3YXhyWkJENm55dzZXTGNmakRHa1FuU0czczQ1T0Rna1NlS20wK2xic1N6c3huTEFXdHN6eE5nVWdnR1d1M3JqRjUySTUxcFZWWDhvcFh4S3RPTUQ1SG1TRmluU0xJWFN1eEhGQUxqZ1FyZHU2R1p3ZHNpQmtDeGR1VWhhSVg3aCtWTFg5Vk5sV1g0RXZqUWRYMFJWKy9uYXpoMzFZVk1JWnRXRWRYeExBQ1R6K2Z4eHhwZ3ZXVnNMTFRYZzRCdk56TzVjSlRlbERaK0ljRjBqcmZ1Tk5QV05kZFpZT0dzQjV2V1hzN096eDlFZXc3ZzRHaEQzaEFFYlFES2JjUVF1MEZkTkNnbEd3WmVzMzYrVStpaVpUMnVwMGFnR2FaWWlTN090YjArbkUzVVRubVA4R0xlVlpFakk1cHdqRVFtYzhYTkhZSjVncFpRZm04L243d2R3QTR0b1JhTy9hZ3BzQUxrQW0wVXc4WHdTa1l6QzhvdWZPdWQwVlZXUGU3SFhUNnNhWmVEZ2tCWFp6dVQ2QTlZSEpMeG5XZVlOMGdKUnUvVjhlUnorV0thcDZiaGF1bEhhQzJHVENJWVFwa3Q5YjRBQjhNaHNObnVmTWVhUFdKS0FNVUJMRGFtazN6NndJME9RbS9MOE51Vnh2bHhROUNLRThJMTFiZDlMSyt4Q0tmWHNkRHA5TDRCSGNMRnlSTkhNUm5UdXh0aFVnZ2xIQmZwR0NESnI3WFErbi84eXVlSWJhN3pqSGR0K0xhWWIvTnlBZElPdTdOdThKYkliYXFSajBTejJIYlZqQWI5c3JaMEN5TERhbG1GalN0TWhObzFnNHA2WU1FMEtVeVVONE5INWZQNjdXdXZua3lRQmc5ZGlsRkxJQ3I5RGFWdWpHSHBPbTVJSzB1UGN4dmNDOExOeFBPRVFXVnVPMTdaTGpaUlN6NStmbjc4SHdLTllQbjdqMUgvajBpTmc4d2lHME5kNEY2ZEttVEhtdkN6TFg2UXlxRFVXV3ZyQnVuV3dMbmpRb042U2RUNXhhWU1Cc0wwRTQrQ1Fab3ZveGJxRkplYjUrZmxickxYbjhORkxlTkZjcGIxc0ZEYVJZUHJNcVBvcVNockFqZWwwK2c1anpHZG9DRkpKQmFrbDhpTDNkZ0ZiR01WUWY4bTZMenNqMjA0YXl0dzJrS0dVNEtLelpMQnFNUmFndGY3TWREcDlCM3psS0NhVmpZOWVnTTBrR0VMWUQ3T3FuYnF3MXA3UDUvTzMwREl4WXl4MG8rQmdNU29LMkMzMGlpRXRnMDdlZFNaUXJYVkhpSnVpRzkwcm5ITmdZRzMwNGplUWhwWU01K2ZuLzZPTlhncXN2bGpHdlM4YmhVMGxtRDZ2bUZCdHB6ZElBbmhzTnB2OWx0YjZUK2dnVmxKRHR0Mjl0RTVqblUvQ1Y0SjEzdytsbEZvU2ViY0ZjZVhJV3RmMXZiUjJvWDk4Zm43K1cvRGFpOExGMUNpZU93STJMSG9CTnBkZ2dINmZHQkxHNGxXejgrbDAraXRFTUY2TDBYRFdvUmdWYTU5S3ZCeVFpRWpMMU5idDVLWDBRU21GSkVtNmxHNWIwTmxsa1BhaURZejE3ME9ydmZ4aWF5Z1ZXektFeC9CR2VMNWNoazBubUZDTEllVmQ0dUx1bU1mbTgvbHZTQ2svblNRSldNSzhGaU1sMGt6NEtHWkxaNVRvSkY2MzUwYW0zNlMvck52amV5WG90QmNoa0tRdHlXdWZpcmZQKytQVDZmUzNBVHlHaTFGTFg0bzBFTXdWSW81azRpaEd3K2U0NTlQcDlPZnBhdW0zSEdwWTZ6QWVqOEd3WGZrL2dURUdwZFJhVlpQb0JHeWFaaXY3WDJocGZaWm5jR2k3eU5zMGtIT09zN096bjNmT05mQmR1K0dGY0pYK3NySFlGb0xwODRvSm94Z040RlYxWGIrbnJ1dW53eGtsS1NXU05FR2U1MnQ1cFg4bG9EVEpXZ3NwNWRvOHR5UkpVTmMxdE5aK05tZUwwaVBHR0l3MVNMTzAyek50dEFFWWFCL1UrMmV6MlZOWVJDK3hTMk9jSG0wME5wMWcrc2lsN3cyalNXdE1wOU9mQWRBZDFMTHh1M21LVWRGcEZ1dHlJdDR2TU1hNkhVUlhQV0ZOcVZGZDE1MzJzazJ3MWtJa0FtbWV3c0xDU0Q4U3dNREFHSE9ucDZmL0RZQUF3TEhha2lIZUdyQ3g3THNONzI3YzNkdDNOYUEzOFJFcDVSOUlLWCtkY3c2V01CaGxvQm9GeG9IUnFGajdxc3ZMQVpWL2FTZjBWUkVvVlZiS3NnVGdyK2piUnViRytPaUZqaTI2WUFraFVGWFZyNWRsK1dGNE0yK0tVc0tVUHE0ZUFSdE1Mc0IyRUF4aDFZSzJlRkhiM3ZuNStjOEFPS2RmbEUwREpUWHl2RUFxdHROYWs2S3p1cTRCUFB5dVdVclh5ckxzSXFsdGVvMkpQRlBoamMyc3RYNzJiWUhweWNuSno4SmJZUUlYbTBMN3RKZU5KaGRnZXdpbUwxV0t5MzMwOFEwcDVmTlZWYjFGQ05HT3psdmZqNUU0akNmanJUV2dicnRISHpySmtJZzdtODNRTkkxZk5yWmxuYnZXV2pqYmJoTmx2dWZGR1Mvc3BtbUsyV3oyaTFMS3p3RzRqbjd0UlFWZjM0cm9CZGdlZ2dGVzcwK0tSOTROZ0s4NVB6OS8zRG4zZk5kODF5ZzBUUU9SQ3hSRnNaVlJET0JQZHEwMXFxcDZLQ2JicExITTUzTklLYmVTWEtpM0tzM1NSVmxhZVdHM2ZiMmZQejA5ZlJ6QXE3QzY1NlhQYzNmanNVMEVBL1QzeGRBdGZBUEhXdXVUMld6MlJocUVkTlpCMVFwYWE0d25ZL0NFYjZYZ0N5eVRERDNIKy8wOHFTU3J0Y1owT3ZYVnV0YUVmTnRBdlR4NTRYYzhHZVVIR2lsNk9UOC9mNU14NWhUQUJQMW1VbUgwc2hYRVF0Z21nb25IQjhLK21KaGtOSUJYblorZnYwc3A5UlNsU2xwcHlFYUNjWVppdkoyQ0w3QVloclRXb3E1clNDa0I0TDdvSXFTMU9PZFFWUlhtOHptTU1WdFpNU0pZYTVIbEdSaG5zRUZUblJBQ1VzcmZPejgvZnhlQXI4RnlwRUtrRWxlT05uS29jUlcyOFIwUHllVXlmNDBFUUhaMmR2WlRuSE5GSnVIVTRWc1VCZkl0bmxNSzA2T21hVkNXSmFTVVN6YU85L3E4NmVlSldKcW13V3cyUTFWVlhTU3pqYThoTlF4bVdRYVJDZDgxTFhYM1BjYVl1blBuem4rRmI2aGJWWmJ1R3d2WUdtd2J3ZlFOUVY1YXRxN3IrdG15TFA5NzV6YW1EV1F0WWF6QmFESUczT1lZTjcxVWhBdmFyTFZvbWdaVlZhRnBtcVVoUkNJYnV0SG4zV3lYOVNKNVZWVW95N0xUZDZnTXZXMmR1b1M0WTljcUwrd0NJR0gzelhWZGZ4cmVDak84dUswYUM5aXE2QVVBMkwxV1N6Ym9BR0hCVGNCZlBUSUFPZnhnV2RGK25MWGZxem5uOWFPUFB2cHJ6cm0vWnEwRkhEQ2FGTWpIQlpwNWcvbDgzdTFRM2xiUSt4cyt4NUJJNHZTR3lJbE1yY0xLMjdZU1NnZ2F3U2hHQmRJOGhkWWFxbFpnWUg1am8zTi8vTVV2ZnZHZlcyc0wrT09PNXVRa2dBcEEzZDRrRmlrOFhSZzNBdmR5UG14YkJBUDByNXE5TElxWkdHUEs2WFQ2VTJtYStxWTBPTWhHUVN1TjBiand4bFJibWlvUndvbnkyRTlHU29tbWFicGJYZGVvNjdxTGRLaDVqNGhvbTE4bm9CWEpsVVlxVXVTWmQwWTBzdlVWYWtjQ1RrOVBmOXBhV3dMWXczTGtFbXN2ZEFQOE1idFZMOTQyRWd5d2VqNHA5TzROaDh4ZU01dk5ubWlhNWxjN1k2bzJWWEp3Mk52YjI2blZwckY5UlYrS0ZONjJuVkJpMkhaWldqRXVZSm4xVmFQMjJFalRGUFA1L0syejJleDlBRjZOaXp1TzRtTXdUbzIyS2t6ZVZvSWh4Qldsdm5ac3VucmNQRGs1ZVJPQUw1RzlwbXdrNnJvQnp6Z21rOG5XUnpHclFJUVQzbllaeGhnVW93S00rM0kvVlkwNDU3RFdmdm40K1BoTjhPTUFES3VIY0xmQ2p1RnUySGFDQWZ3YkYzZE05bGs2SENpbGJwMmRuZjFZbXFaZG9DcHJDYVVVUnVNUlVwRjIvUndEZGhQR0dLUnBpalJORjZtUlcvVDluSnljdkVGcmZRdkFBUzZPQS9RZGUxc3hOYjBLMjN5bXhHRm52QWt5WG1pbEFYenRiRFo3WjEzWHY1WUtYMVhTV2tOV0V0cHA3QjNzZFYvYnhVaG1sMEdhRkFORFBzcmg0S0FiN2ZkTHc5RXc0LytlVHFmdnhLSmpOMTZnRmtjd1llUXlSREFiaUQ3Qk53eFZ5ZjJPRGdZR255cjlGd0F2a01ZZ0c0bW1ic0FFdy83K1BwUlVPNThtN0JxYzg4dnFSK01SR0djd1J2dEd6RFp5Y2M1OS9zNmRPeitCUldvVUZ4WGlocyt0c0dPNEc3YWRZQWlYZGZmR0hiNkhXdXZaMmRuWkcyaU1BQUJVN1J2dzhqekhlRHhlS3dPbkFROFdWRFVxaWdJODQ3RGFRSGNOZGI1cWRIeDgvSisxMWpNQVI3am9VdGQzckcxZFUxMGZkbzFnUWlJSnZYdmpKcWhYejJheko2cXFlbk9hZW04UGF5eGtLU0dOeE43QkhnVGYvdEwxQUErdE5kSTA5YW1SY2RES3dMYXJYN01zdzNRNi9ZWFpiUFlFRmxXam1GeW8xeVVXZDdjZXUwQXc0VlVpWGcwUnYva1U1VEFBajUyZG5iM1JPZmVKYm1tYlV0N3EwV25zSCs1dnhONmhBUzhmbmU3Q0dQSnhEZ3Z2OFVJK0wyMS8xQ2VPajQvZkNHK0JHVmFONHNnbEpKalFqbUdybzVoZElCaWdYK3dOQjg3aUs0d0dNTkZhNDg2ZE8vOU9DRkYxdTRScjVmV1lsR0gvWUg5cGZtZkE5b0JjQUsyeFhVbmFhTk1OaHJiSFEzM3IxcTBmc2RZNitFbnAyT2VsVDNmWnlwR0FWZGdWZ2lIRWRnNGh1Y1JYR0EzZ3NicXVQM3QyZHZhamFacDZZZGNCVGRsQTFoTDVLTWZlM2o2YXBybWFaelBnZ2NFNTUwY0JpZ0lpNVREYVc2c0M2R3dZam8rUGY3UnBtcytnMzhDN0wzTFpLWElCZG90Z3duSmdUREtYOWNlODV2ejgvTmZxdW42ODAyT3NSVk0xVUZKaHNqZEdudVZvbW1ib2o5a1NrRjlPbnVVb1JnV3NYWlNraVZ6S3N2eGZaMmRuYndYd0d2VGJYOFlFczVWK0wzZkRycDBScSthVVpIQ0xoVGdCNE5HVGs1T2ZzTlorak5ac2FLVlJWeldVVVRnNFBBQlArRkJaMmdJUXVYRE9NWnFNWUtDaGxPcFdqN1FtV2grL2ZmdjJqOE92ZlJYb2IzK0kwKzZ0ODNxNUYrd2F3UkRpOFlId2F0T254eHdZWTlqeDhmRVBjODVQaVVSa0xWRlhOU3l6T0xwMkJPZmNXcXdHR2ZEeVFPVEN3THczTS9QTCtiVFVIYmt3eGs1djM3Nzl3KzNzMFQ0dVZpRERxZWsrZ3RrcDdPS1pRRzl5MzE3cnZwelp3QjhzanpWTjgrTEp5Y2tQZHVzMkdOQlVmcnJZY1lmRG8wTm9yWWRPM3cwRW1VYzU1NDNma2ZqZUYxVmYwRjErc0dtYVA4ZkNvVzdWaFNwTXYzY3llZ0YyazJCQ3hFT1FmVkVNSFJ6VUgvTysyV3oyQmpLb0FvQjZYcU9wR3ZDVTQrRG9BRXF1MTZyV0FaZWpzNmJRQnBPOUNWanFPM1ZEY3NteURLZW5wMjhJcHFURHFsQjRnUXBUYlkxbGo1ZWRJaGRnZHdtbVQvRHQwMlBDYUlaKzlqV25wNmR2YnBybWZ4TEpPR3M5eWRRTjhqekh3Y0VCbXFZWnl0Y2JBbXN0dE5hWTdFM2FUbDBMVlMwYy9WcDN1bDg2T1RuNUJYaFJOOWJ3UW1JSnlTVWNCOWlKeHJvWXUwb3dRSCtxRkE1Q3J0cElrQUY0OWZIeDhSdXN0VThLSWNDU0JNWWExS1UzMEM0bUJRNzJEM3pxTkpETTJvTGVGMjhzTm9Jb1JGZU9KbitYdHBudXFUdDM3cndCUG5KSnNkcG5xSzlJc0hOUlM0aGRKaGhnT1pLSlE5MEdGMG1HVm4zdVdXc1BiOSsrL1VNQVBrV20xbHByVlBNS3NwRVk3NDJ4dDdjM2tNeWFnaHJwbEZJWVQ4YklpeHpHR09pNjlYZEovTHBYNTl5enQyL2YvbUhuM0FFV3pYU3IwcUpRZjltSlljYTdZZGNKSmdRZEVMR2xRMHd5cE1kYzAxcXJPM2Z1ZkI5ajdBVWlHYVVVcW5tRld0YVk3RTA4eVZUMU1IMjladWpJWmVUSnhSb0xYYmNDZmNJZy9QNm16My81eTEvK1hpbGxBK0FhRnBwS0hPMkc2WFRjVkxmVEdBaG0rUXB6V2JreExqa2FBSTlJS1c4ZEh4OS9OK2Y4cTJRZjJjZ0c5YnlHVkg0d2NySS91YktkMEFQNm9aVENxQmdoS3pMdk8xeExQMlBFT292UVcxLzk2bGUvV3lsMUMzNHJBQkZHM084U1JybzdOMnQwTnd3RTR4RTIzNjFxd0F0ejdERGFlVTFkMTgrZm5KeDhUNXFtVS9LUVVWS2ltcGVvWlkzOWczMGM3TzhQNmRJVm8wdUxwTUpvTlBJRGpNNUNOcktMWE5wR3l1bnQyN2UvcDJtYTUrQjFsMVhsNkxnWUVKZWtkeDREd1N3UWlyNXg2ZnF5SEZzRGVGMVpscytlbnA1K2I1cW1wWisrWnBCU29aNTU5LzN4L2dUN0I1NWtoaEwyd3dlVm9yWHlxNEdMVVFGalRXZUpTcEVMNTd5OGMrZk85NVZsK1VjQVhvZUw3M1djRnZWWllBNEUwMklnbUl2bzIyOGRIa3g5anZBV3dHdG5zOWxIenM3T3ZqL0xzams1OEVzcFVjNUsxSFdOOFhpTW84TWp5RVo2bTRka0lKbUhBVnBPcjlzK2w2eklvSTN1NXNrbzZoUkN6SStQajM5Z1BwOC9EZUMxV0M0eHgrVFM0R0pKZWlDV0NOdTRlTzJWSWx6Y3hyRlkzcFpITjFyb2xzSVROZDMrZEg5Ly8rOGRIaDYrV1NrMW9ZVmthWnBpTkI2aEtBcElLWEY2Y2dyT09WVXFIdjZ6M0JGUWRjOVpoL0hlQkNMM2ZTNnlrbEJhZFdiZFFvajVuVHQzL3Mxc052c2dmT1Jpc1J5NVVCVGJ0TGNhL1duenpwRE12UnkzQThIMGc1NHNoeWNOZ2NWMnlQQkdCQ093VERLZjI5L2YvOWJEdzhPM0tLWDJhUU9pRUFMRnBFQXhLdUNVdy9HZFl6ZzRGRVd4TXp1WEhpWW9na3lTQkh2N2UwaEVBaVUxVkNOaHREY0tTMFNDaENYVDQrUGpmejJmeno4TTRCdXdyTWRSaEVJUlN4MThISHM2N3d5NUFBUEJ2Qkt3NEQ3QklwSlpSVEtpdmZIZ2QxNllUQ2JmZkhSMDlMUEdtSytoT1JlZWNPVGozSnRITzRiVDQxTW83WDFIZ0h0NzB3WmNqbERNVGRNVWs3MEpYT0tnbFlhczVWSVRYWklrWDdsOSsvWVBsR1g1RFByVElrcUxRMkpabFI0QkE4RXNZU0NZMWFBblRGRkpURElaRm51dTAvYkdvNS8vUWxFVWYvSDY5ZXR2dE5iK1pXdHNWMFhLUnptS2NRR1JDTXpPcHlqTENsbWUwZkt1aC90TXR3Z2s1aXFsVU9RRlJwTVJIQ3lrVXBEVndvMk8rejZYejkyNmRldjFUZE04aitYNW90Z2N2aTl5aWJjREFEdEVMc0JBTVBjRFlTVERzU0FaSXBoWWsra2ptUzltV2JaLy9mcjFOekhHdmxWcjNSMkdhWkZoTkI0aHp6TFVaWTNwK1JRczhiTXZReVR6MGtHTmpnQXdub3lSNVptM3VWU3ljNk1EL0hwWFk4elR0Mi9mZnIyVThoekExMkpac0tjSitsRFFwVnZmckJHd1krUUNEQVJ6dnhDTHZna1dBbStjS29YcFVwaGVmWmx6anBzM2IvNmtFT0xibEZMZEN0WXN5NUNQY3hSRkRxc3NUay9Pb0kxR251ZGRxRC9nY29SdC81ejdOYjlKNWszQlpDVTdzeWdhWEpSU3Z1UFdyVnMvWW93QnZPMUNxS0hFcGxFVXZjUzlVQTQ3cUx1RUdBam0vcUd2c2hSck12UXhpYjRVOGJEMjg1TWtTZWJYcmwzN3Q2UFI2QWZJTE53NXZ4VXdHMlhJUnpsU2xtSStuV00ybTBHa29sdFJPcUFmVkNXeTFxSW9XZ0dkZWJKUnRZYTFwdnU1TE1zd244OS83dmo0K0UzVzJnbVcyLy83MHFJd2FnbGJGWFk2Y2lFTUJITi9FV295UkI2cklwbVFaQklzU0tZRzhPWER3OE52Mjl2Yit6R3Q5UUdSQndORFdxUyt3elRQMGRRTlp1Y3phT04zOGlSSk1rUXpBYnJHT2EwaGhNQm9OSUxJQkl3eFVGSkNCZ2JkYlFQZCtmbjUrWDg2UFQzOVRYaVQ3Z0xMcGVoUTFBM0ZYUHA0MVNqQXptSWdtUHVMVUkrSmUyUkM0WGNWeVJEUldBQXZqTWZqdjNsNGVQZ1RqTEZ2Sk4wQUR1QXA5d0x3cUVEaUVwVHpFdlA1dkxzQ0E3dGRhYUowU0d1L20yaFVqSkFYT1Z6aW9LU0VsaHBhbWU3ZGFpUEFUNTJjblB5SHNpdy9DVjhwU3JEY1VFbFQ4bUhYZGgrNWhMMHV3RUF3ZC8yWmdXQmVPb2hnd3NwU1hGMktOWm1RWU9qakx3Z2hpdXZYci8vN0xNdStNMHlaa2lSQmxtY29SZ1h5UElkV0d0T3pLUnJaUUFnQldtbTdTMFRUZWJlMDZWQ1daUmlOUnVCcEFxME1sSktRallSekNKdm5VRlhWcng0ZkgvK2sxcnFHcnhURkpsQnhJMTFZaHI3TXVIdm5NUkRNZzBIY0kwT2liNThtc3lwZG9wVHBGTURaMGRIUnQwOG1rLzlvclQyaWZobUtackxDRTQxSUJKcXFRVGt2SVpYc2lHWVhTSWI4Y3JYV1NFV0tZbFFneTFNWTU4dlJxbEV3UWRUUzlyZWN6bWF6SHo4NU9ma05BSWRZN0l6dTJ5clJGN24wVFVnUDVCSmdJSmdIaDFXTmVIRWtFOTc2U0NhQlAzaGZMSXJpTHgwZUh2NlFFT0lmVTVVSkRtQUpJTklNV1NGUUZDTWtTRkNWRmNxeWhERUdnZ3R3d1FGc1YwUVRSeXljYytSNWpxekkvQnBmcWJ3cHQ5SkErN3piZVNKSUtkOTdlbnI2MDAzVGZBN2U0cEpqbVNCaVEvZFlkd2xMMGJFejNmYTh5SzhRQThFOFdNU05lQlNWVU5RUzZ6RVpGa1FVL2c0UnpXM0dXSDE0ZVBnZDQvSDQ5YzY1eDBobkNOT21ORTk5MTY4RjZxcEdWVlZkZVphMkhXd3kwZERqTjhaMHhKTGxHZklpQjB0OG40dVJmb1dybjBwUHdCWXJSYjR5bTgzZWRIcDYrdXZ3ci8waldDYVd1UDAvOUhTSmJUbkNKcnBCMU8zQlFEQVBIcXNpR1k2TGtVeUs1V2E4TUpwQisza0Q0QXQ1bm4vOTRlSGg5NmRwK3AzK1JETndGbkJ3NEp3anpkTHVwQVA4S3R1NjhnWlhBTHFxRTdBWlVRMGRXK1RzNytDUWloUjVuaU10VWgreEtOVUt1TG9yMndjVklqUk44OWJUMDlPZmsxSitIbDVyeWVGSkFsaE9pZUlWTlNIQnJMSmVBQVp5dVlDQllCNE8ra2lHU3RnVXVZUlJESDJkSWhtR2k5SE1IUUN6L2YzOWZ6Q1pUTDZmYy80dGxDb0EvbzNsZ2lOTlV4L1I1RGtZUzZDbFFsWFgzZzVDZXp1SVZvL29mbTlkc0VRcXJlNlVKQW15TEVPV1pSQ3BnSU9EMGdHeEdOdTkycFFPYWEwL05wMU9mMjQybS8wZWdEMEFOM0N4Q2E3UHo0VjBscnY1NlFJRHVmUmlJSmlIaHo3aE41eGRDbE9tdmtpR0d2TEN0TXZCZHdDUDkvYjIvdWw0UFA1WGpMRy9RcWtENEg4aVNSTHcxRWMxZVo2QkN3Rm5IS1QwVlJXbHZFTytjd0RuQ2FVUy90Y2ZJdUdFLzJjblpHTkJGTlJVbUlqRTk3SW9MOXdhYlhxSnhSanoyYklzZjJrNm5iN2JHRlBDZCtTU3B0VytPaGYwbGxVdWhmRTJnRkRNSGNobEJRYUNlYmdJQ1NLY1hRb2I4c2hYSmlTWnNPczNpZjVXQXQrYzl5VWh4S043ZTN2ZlBocU4vZ1ZqN0hVaDBUam5XcU5xZjZLS1RQakJTY1poallXU0NsTDVxRVpyM1IwWWxHS1FsM0FmN3VrZ3V1UjNyYlgrY1RxZjRpVkpnb1FuNEltUHdFUXFrUEFFRnQ1dHppZ0Rvd3lVVVhBV1NGcFRMdG9KN3B6NzA3SXNmMlU2bmY2bTF2cXJBRjZGUmROY1NBcnhhcEhZTENvMmRLZWZIOGpsSGpFUXpOVWdIQ3VJSzB3eHdSRHBoTnBObURJaCtId0c0S3RwbXI1cWIyL3ZueFZGOFM4Wlk2K2pGQU5Zdk9FODRVaUVqMnl5TkVPYXB1QWlBU3lndGVtV3VXdWpZYlVuQU9jWllDbFNvUGY4WHNpSGVuZzY4bXIvVU9kenkzM2trYVlwT09kd3pMV2FpNGJXUGxMcG9wWDJXVE1BWEFod3ptR00rZE9xcWg2ZnpXYnZVa3A5Q1g3eC9CNldsNXFGcWRHcXZVWHhGb0J3S3RwaG1XQUdYSUtCWUs0T0xMckZKQk5yTTJudy9WRDhEUzFONld0VEFNZHBtbDRiajhmL3FDaUtieGRDL0YyS0ZKYWlta0FFVFRnRFQzM3ZqT0ErYW9BRG5GMVViSXp4SnpoRkhOYlpybHdPK00rN0o4aVlKeEZHSHdOSWd2K1BKV0NjZWJKTEVqaG00U3k2ZmhackxaeDIwRWJEV09OTDh2UTNFMEJ3UWRQUkg2cnIramZuOC9sN3RkWW5BSzdETDUyUGlTWFVXMGhIaWFPVTJQcVVDTWhoSUplWGpJRmdyaGF4cGtMT2VDSFJ4TldsdnZHQ09KcEIrLzBTd0owa1NTYWowZWdiaTZMNEoybWEvbjNPK1d1SU1PaTlKYklKVXlKd2dDY0plTnRId3hPKzVCR2N1QVFPYlZRQ0J3WUdaOTN5b3dBNmtnRmpjS3l0N2pnRzYyeFhGYkxXd0ZnSG1JWCtZcDBGYzZ6N1c5UjkyODRZdlNpbC9QMjZybituTE10UE9lZm04T0x0R01zYUM5MkhFUXROUkY5R0x2SDZtZkR2RExoSERBUnp0V0R3QjJ4Y0lRcUpKazZWQkphakdVcXgrdEltK2xnRE9BWlFDU0crZmpRYS9lMmlLUDRoNS94dkpVbnlHT2tnWGZyU2FpRmg5SkVrQ1JnWVdNTEFPR3ZKQ0cyUFNmdHpXSkFCbllZT0Rtakw1MkdLNU16aS8rcWlJUHE5Z0ZBb0RXdDdYNzZpbFBwNDB6UlBsbVg1VWEzMUN3Qkc4QkdMd0RLaDBIM1k4aC9yTFhHMEVxOEJEdnRiYlBCK0RiaEhEQVN6SG9oSllWVTBFNDRieE9KdlBEQVpFZ3phcjFzQWMvanhBNU9tNlY4b2l1S2JzeXo3TzJtYWZrdVNKTjhBTElSWElwcVFkQllQZUtHOU9GeSt4OG01TnJweFBnQUlqeVlpRDBwOVdMTDRIQUNzdGM4cHBUN1dOTTFINnJwK1JpbjFRdnRjanVEWHROTHpBaTVHTEJTMXJOb1RIZStMN2x0SVA0aTVyd0FEd2F3WFlsMG1Gb0JEb29tam1iaWN2U3FhUWZzOURTOEt6d0dBYzM2VXB1azM1SG4rTjRRUWY1VnovdGM1NTEvSEdOdWpYNHBUS3Y5QlRCbXJudGh5cWtQM29WRHNuSnRaYS85Y2EvMXBLZVZucEpUUEtxV2VNOGFjdG45bUFpL2FDaXhJcFgwVTNYMWYxRUxwVHBqK3hLdC93MUwxb0xmY0p3d0VzNTRJQ1NZc1o4ZEVROUdNaUw3Zmx6YkZHZzJpejJ0NHdwRUFSSklraDJtYTN1U2N2MW9JOFZyTytkZHh6aDlKa3VRbVkrd1J4dGdoWTJ3Q0lLSFdmYm9QOVJ3QTRmZXNjMjd1bkR0enp0MjIxdDR5eHR3MnhueGVhLzJDTWVZTFNxbmIxdHJ6OW5FVThLUlN0STh4UGhBdkl4WWQzTWVkdVNIQnhMMHR3OERpZmNSQU1PdUxWWTE1WWJtNkw1S0pvNW13UVMvcCtkdngveG1tRmxWN0k3UGFJa21TVVpJaysrMXRraVRKWHBJa0JZQThTWkxNR0NPY2M0d3g1ampuMmprbm5YTzF0YmF4MXM2dHRWTnI3YXk5citDSkRlM2pIN1UzY2NuckVxY3NGTW1FcVZBOFN4UnFMa1FvZmUzK3d6elJmY1pBTU91TlZkck1aUkZObkRLSjZIZFhSVFI5YjE0bzJmWjF2UFp0TEhUUjc0ZGwrUGh4OTNVbzl4MXNmZUx0S2dFM1RJbjZDQ1dNV01KQnhVRnJlUUM0Ris2NDdHb3k0TUdDYWlxeEpoQ2VHT0VWVzdTZmh5ZXd3V29SdUUrbldYV2lzK0R2aGw5N09jL3BzcThIZGFRTHBCV25NREd4eEVKdTJDUVhFazhzNGc3a2NvVVlDT1pxUVFjOUVZMk5QcVlUaG1ac1FvSUp0Wms0WllwOVoyS0NXYVhWOUQyMlZ3b1hmZHpYSEJlU2l3bnVZL0xvUzQxQ0l1clRXUVppdVVJTUJMTWVpS09aa0dRc0Z0R0t4cklYTUpXN1k2SkowSjgya1U3VDE3d1hrc3dyeVlkalFnay9Ya1VxWWNrNUxqdGZkaC9QRDRYcFVQei9EN2dDREFTelBsaWxUOUNOZWtMQ0svdGxCQk9YdGZ2NmFHaHFPeDVMQUY1ZWxOTkhLUEh6NkVzRnc0amxiZ1FUazFHZnhqSVF5NXBnSUpqMXhLb3JQMmt1TnZpWW9ob2lsbkRVSUw2UGpjY3ZTNTllTHNIMFZZSldrVXVZRHNYRUVuNGVwb3RoZTM5ZkU5NkFOY0pBTU91TCtHUXh1RGgrUUZGTVdJRlM2Q2VYVlNUVGx6YUYwY3k5cEV1WFJTb3hxY1FFRTZkRmZkK0xmM2ZRV0RZRUE4RnNCdnJJQnJqb2lCY1NTS3pGeEZQYWwyazBISXZVNlY0SlpsWEVFcE5LWEg3dVMzbmkzd25GNGZqL0c3REdHQWhtc3hDS3dNQ2k2a1QzSWRrWVhDU1BQb0tKTzRMNzBpWmdOZEhjTFhxSlJkaFY1TkYzSC8vdDhQOGJzQUVZQ0dZejBWY3BpVWtuSnB3K0lvbE54eEg4cmN2SzJuMlBaVlUvUzE4MGcraG4rbjUrMWZNY3NFRVlDR2F6RVorQURNdUVFMFl5Q083ajBZSzdSUzB2bFdEb2Z0VU5XTFpLUVBTOStMa04yRkFNQkxOZDZDTWNZRG1WQXBhSjQzNVhrY0w3UHZMb1MzdjYvdGFBTGNCQU1OdU4rS1NsRTM1Vno4dGxwSEkzZ3JuYngyR0VGVWRiQTdZVUE4SHNEc0tUT1l4a3drZ0h3ZGRmNmY4UmZpMGtsc3QrZHNDV1lTQ1kzY2FxeWt6OCtiMW9NUGZ5L3d6WU1keXpYY09BQVFNR3ZGVEV1ZmlBQVFNRzNEY01CRE5nd0lBSGhvRmdCZ3dZOE1Bd0VNeUFBUU1lR0FhQ0dUQmd3QVBEUURBREJneDRZQmdJWnNDQUFROE0veC9QMmtxQTVCVDE4UUFBQUFCSlJVNUVya0pnZ2c9PSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzFfUFJFIiwiRklET18yXzEiXSwiZXh0ZW5zaW9ucyI6WyJ1dm0iLCJjcmVkQmxvYiIsImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJsYXJnZUJsb2JLZXkiLCJ0eEF1dGhTaW1wbGUiXSwiYWFndWlkIjoiMzBiNTAzNWVkMjk3NGZmMjAxMGJhZGRjOTZiYTZhOTgiLCJvcHRpb25zIjp7InJrIjp0cnVlLCJ1cCI6dHJ1ZSwidXYiOmZhbHNlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibGFyZ2VCbG9icyI6dHJ1ZSwidXNlclZlcmlmaWNhdGlvbk1nbXRQcmV2aWV3IjpmYWxzZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlLCJhbHdheXNVdiI6ZmFsc2V9LCJtYXhNc2dTaXplIjo3NjA5LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjgsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6NTAwLCJ0cmFuc3BvcnRzIjpbInVzYiIsImJsZSIsIm5mYyJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5Ijo0MDU2LCJtaW5QSU5MZW5ndGgiOjQsIm1heENyZWRCbG9iTGVuZ3RoIjo2NCwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjE1LCJwcmVmZXJyZWRQbGF0Zm9ybVV2QXR0ZW1wdHMiOjMsInV2TW9kYWxpdHkiOjYsInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjoxNjJ9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wOC0yNiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IkRJR0lQQVNTIEZYMkZJUFMiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI1MDgyNjAwMiIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTA4LTI2IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjF9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMTAtMjEifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyI3MTZjMTZjZTIxNDBiNzJmZTBiOGMxOGRjZmIyYTc4OTk3ZDA5NzE1Il0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjcxNmMxNmNlMjE0MGI3MmZlMGI4YzE4ZGNmYjJhNzg5OTdkMDk3MTUiXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ill1YmlLZXkgQmlvIFNlcmllcyAoRW50ZXJwcmlzZSBQcm9maWxlKSJ9LCJkZXNjcmlwdGlvbiI6Ill1YmlLZXkgQmlvIFNlcmllcyAtIEZJRE8gRWRpdGlvbiAoRW50ZXJwcmlzZSBQcm9maWxlKSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzYsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6Mn1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiLCJyZW1vdGVfaGFuZGxlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRFNqQ0NBaktnQXdJQkFnSVVSMzhtcTI2U2Yyc3pWVjJCZEc2V0VON2t1V1V3RFFZSktvWklodmNOQVFFTEJRQXdMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3SUJjTk1qUXhNakF4TURBd01EQXdXaGdQT1RrNU9URXlNekV5TXpVNU5UbGFNQ1l4SkRBaUJnTlZCQU1NRzFsMVltbGpieUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRUlnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTlkwV2I5b1BvUm9Lb1F5V1BhSnB6MTF2cldUZzZ6VHRtTmoyVm9LUm55dktHUnFwemI4M3c1bDZZQTk2VVlrWUJEUVAwaWxPMkRQZTZ3V3FWUjV6RGZSemRjSDhiaCtMN2RHR3ZhZTZoUlRaaGtGa0NwWERzNEhjY2tuckRmOEZDbEo3SGUzOUpmNDIvRzFRbTJ6ejlXV21yUFh0Z2lLL3gwNUdqc1FmR3VERzF6ZjVRVFVVaWU4bHd5bUszVGZkT3ZOZWVKQUFQZTJwbjdJdGZSYityVnJOV2lEemxSbjJ2Tm5aMndQbzR3SC9XSjZkaFhaRytyTVdUK2E2Qm9jZzFVZkl3NmtkdW5HNGJUcFp6c3ZhY0ZZeVIwbXBmK0RlT25wU1dBbXl3SldIdlRsZjJZWHhGeWVYY1RBQ2RRbGNNTkdKMlZoWlE0OHh0UDUvUkJQLzhrQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZDaHk0Mm9raXFjVFMxaXFhL0hSV2prQm40SC9NQjhHQTFVZEl3UVlNQmFBRk9xM1FwQ2VESHRrZXR0VWZBTzZmRTZmMktGaE1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQW4rUkhJUGJ0TUVETmRUMWc4SC9SaXRBa1VkTGdBdDF0V0dXbmxqOWtuYnY0LzRHbFg3QzlwNDVlZlBPOS9hWkw2T1YxWFJLQmk2S210Qlc1SzdudVlFbk14LzVCcUJTYkxUN3JoZHVDNDlUQmVNYjlQSGRYc1RsU1ZOWWVmcjFkR2lkcjRqMHhWQlFMYjFya25EQWJkV0R6S2Z2bmF5S084RnJ3ZTdIeDg0M01HL3JKK2MwWHJ1VXZiZlZUQ0hMaUlXaE03b05EaEw4eG9iNnhVbzlLTEtjU0wrSXRZc08zLzlXYjhROUdqc3FMNEZYc0RjRzFTYVloN0twZnVNbU9peHF6SlpPMm5JaWNQWVJnMUkyU3VpVWZZTzcwdG1kSGNibCtrU1FtU1l0N3JxNHZpSUxnMkd4M2o5cklUdVdUamJhVWFTU1F4Z09tTVNIdXl6TUFDIiwiTUlJRFBqQ0NBaWFnQXdJQkFnSVVYemVpRURKRU9UdDE0RjVuMG82WmYvYkJ3aVV3RFFZSktvWklodmNOQVFFTkJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNWjYvVHhNOHJJVCtFYW9Qdkc4MW9udE1Pby8ybVEyUkJ3SkhTMFFaY3hWYU5YdmwxMkxVaEJaNUxtaUJTY0laZDFSbngxb2Q1ODVoKy9kaEs3aEVtN0pBQUxrS0t0czFmTzUzS0dOTFp1ano1aDN3R25jcjRoeUtGMEc3NGIvVTNLOWhFNW1HTkQ2enFZY2hDUkFIZnJZTVlSREY0WUwwWDRENW5HZHh2cHBBeTZua0VtdFdtTW53TzNpMFRBdWNzcmJFNDg1SHZHTTRyMFZwZ1ZkSnB2Z1FqaVRKQ1RJcStEMzVod3RUOFFESXYrbkd2cGN5aTV3Y0lmQ2t6eUNpbUp1a2hZeTZLb3FOTUtRRWRwTmlTT3ZXeURNVE10MWJ3Q3ZFenB3OTF1K21zVXQ0cmowZWZuTzlzMFpPd2R3TVJEbkg0eGdVbDVaTHdyclBrZkMxLzBDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01COEdBMVVkSXdRWU1CYUFGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFNd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkRRVUFBNElCQVFDM0lXL3NnQjlwWjhhcEpOanh1R29YK0ZrSUxrczB3TU5yZFhML2NvVXZzcmh6c3ZsNm1lUE1yYkdKQnlKMVhucXVCNXNnY1JFTkZ4ZFFGbWEzbWlvOFVwZjFvd00xWnJlWHJKMG1BREcyQnBscWJKbnhpeVlhK1IxMXJlSUZUV2VJaE1OY1pLc0RackZBeVB1RmpDV1NRdkptTldlOW1GUllGZ05oWEpLa1hJYjVIMVhnRURsd2llZFlSTTdWb2xCTmxsZDZwUkZLbFg4dXN0Nk9UTU9lQURsMnhORjBtMUxUaFNkZXVYdkR5QzFnOStJTGZ6M1M2T0lZZ2MzaXJvUmNGRDM1NGc3cktmdTY3cUZBdzlnQzR5aTB4QlRQclk5NXJoNC9IcWFVWUNBL0w4bGRSazZIN1hrMzVEK1dWcG1xMlNoL3hUNUhpRnVoZjR3SmIwYksiLCJNSUlEU0RDQ0FqQ2dBd0lCQWdJVURxRVJ3KzRSbkdTZ2d4Z1Vld0pGRVBEUlozWXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFESTdYbkgrWnZEd01DUVU4TThaZVY1cXNjdWJsdlZZYWFSdDNZYmF4bjlnb2RMeDVzd0gwbFhyZGdqaDVoN0ZwVmdDZ1lZWDdFNGJsMXZielVMZW1yTVdUOE4zV01HVWU4UUFKYkJlaW9WN1cvRStoVFpQLzBTS0pWYTNld0tCbzZVTGVNbmZRWkRyVk9SQWs4d1RMcTJ2NUxsajV2TWo3SnRPb3RLYTlKN25IUzhrTG16WFhTYWowU3dFUGg1T0FaVVROVjR6czFidm9UQVFRV3JMNC9KOVF1S3Q2V0NGRTVuVU5pUlFjRWJWRjhtbHFLMmJ4Mno2b2tWbHR5RFZMQ3hZYnBVVEVMdlkxdXNSM0RUR1BVb0lDbE9tNGNycHduRFJMVkh2alllUEdCQi8vcEV5enhBL2djU2N4andhSDFaVXc5Ym5TYkh5dXJLcWJUYTFLdmpBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlRxdDBLUW5neDdaSHJiVkh3RHVueE9uOWloWVRBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBcVFhQ1dNeFRHcVZWWDdTazdra0ptVXVlVFNZS3VVNitLQkJTZ3dJUm5sdzlLN0hlMUlweFowaGR3cFBOaWtLam1jeUZnRlB6aEltd0hKZ3h4dVQ5MFB3M3ZZT2RjSkpOa3REZzM1UFhPZnpTbjE1Y0ZBeDFSTzBtUFRtSWI4ZFhpRVdPcHpvWHZkd1hETTQxWmFDRFlNVDd3NElRdE15dkU3eFVCWnEyYmp0QW5xL05EVUE3YmU0SDhIM2lwQysvK05LbFVyY1VoK2o0OEs2N1dJMHUxbTZGZVF1ZUJBN24wNmo4MjVycURxc2FMczlUYjdLQUhBdzhQbXJXYU5QRzJraktlcnhQRWZlY2l2bEZhd3AyUldadnhyVnRuM1RWMlNCeHlDSkNrWHNORDA1ZENFclZIU0pJcytCZHRUVk5ZOUF3dHlQbW55YjB2NG1TVHp2V2R3PT0iLCJNSUlEU0RDQ0FqQ2dBd0lCQWdJVVVjbU1YelJJRk9nR1RLMFRiM2dFdVpZWmtCSXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFEbTU1NWJXWTlXVyt0T1kwcklXSGxkaCthTmFub0NaQ0ZoN0drM1laclFtUFV3MGhrU0c2cVlIUXRQK2ZaeVMzM1ZFcnZnK0JRcW5tdW1nTmhmeEZya3dFWkVMZWlkQmNDOEM0QWc0bnFxaVBXcHpzdkkxN05jeFlsSW5MTkxGY1pZLytnT2lONlpPVGloTzUvdkJaTWJqOXJpYUFjcWxpWW1OR0pQZ1RjTUdhRUF5TXpFTU55Mm5tNkVwK3BqUDVhRjZnaTIxdC9VUUZzdUoxajJSai95bk0vU2RSdCtlY2FsNU9Zb3R4SGtGYkw5dnZ2MkEyT3Y1SVRaQ2x3NGJPUzlucHlwUWltT1o1UUFZeXRtWWFRcFdsL3BNWXo2elNqOFJxa1ZETkVKR3FOZlRLQTJpdkxZd1g2bFN0dE1QYXBnMEo4NGw5WDB2b1ZOL0ZwUzRWQ1ZBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlFnS0ZBaEc2UmFXK2hUeTUyZHhlVDhiQzk2SHpBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBWU16Z0xySkxJcjBPb3ZRbkFaclJJR3VhYmlIU1VLU21iTFJXcFJrV2VBdHNDaERFSHBYY0ovYmdETktZV29IcVE4eFJVakI0Q3llcFlldmMzWWxyRzhvN3pIeHBmVmNhb0w1U2V1Smt6SHhLbjRiVGFTcDkrTXZ3YW1ucDY0a1pNaU5iRkxrbmZQOWtZS29SSGtNV2hlUkoxVXNQMXo0U2Nta0NlSUxmc01zNnZxb3ZxaldDbEZzSnBCY3NsdVlIV0Y3YkJKMW40UndnK0FURW9wWTRJZ0d2Nlp2d2MrQTlyK0FUMmhxcG9Ta1lvQWwrQU5Zd2dzbE9mOXNKZTBWK1RBOVlZL1VsYUJtUFBUZDAvL3I5d3ZjZVBXWmtQaktvQUMvelVOaGZEYmg0TFY4R0hzM2x5WDJYb21ML0xOYzhKWXp5SWFERWhHUXZlb1BoaC90cjFnPT0iLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVRuYmJHSVIyTkh2enFJS0ZBZVF3RzFYQmlzMHdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFRWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPc1hqM2swNEJhbjRUWWR0WktxRC9PUEp4eUR5YVBtQ0JVRlVpYVpJZ1R0ZVpuajNYMjVEaGdwWlpYc0M0RDB5ZEljcmxBNndOVUluT1JML0w5ekJiVEVJTUFWTUdvNmc3VUtBbWIyTUY2QUhibmhZSmQ5ZWlrdXBWTldTaEhOWU5jNEdCZE8xWU42QWZVcXZKaEhiZTNWNFNOTVBtQlJFS0pQVno3VGh3Z21nZ1RlOFdzMkswL3dzcXYyd1NFN3BiQ0JzVVpoSVg1MWJaTTNwcUR3SlBUbVJGRXZ0MC82dEc1ZU84RjNqMTRPWHFmRWhtam4xVnZ4S0RZUU9MWkF4Q3d3Z0MwUDRDZGZXdjN5OFBTUjhJMzU0aE8xWStHek5qdklxWDM4TktMeXd1SVlIRmVyT3hObHhFTUJ2RmhZQnVSdVlBa2tnVWFQcU42VUJoc0lMcnNDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNDb1JIaGl5Tm5iblhSV0lMNlpCWG9CWDlZVE1COEdBMVVkSXdRWU1CYUFGQ0FvVUNFYnBGcGI2RlBMblozRjVQeHNMM29mTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFDUUZhZkpJMS81V2c5Q0VFaW1FMVJQNTRSZ1F3VE5UT09Rc0xBQ1RlK3JJdGxGUXpDOVpEaHJWODI4eVg3anp5K0FBc3AzaXpLN1QxdGgyZGw3bSt0dTBzdzJQYS9vbGMwMm50NlB5SXczNDhnYUh6aEkxKzBLRTQ1cXh2RkRlTDJsTXhiUGZDWXZ5RUVhWXpqaVFFTFU1OTUxcFhHV3lLTWEvNGZMdE8rWktPWGhNdVZlcTRyWERQSTU0VzZKSE9pQWFpS2Rpdys1ZTNjMmt0L2pGSVF0TTZ2TVhnOUxORnpkakVUTnQyMFZYOVFldlJwRlpmdWNNRzl3Q2FRRG9GbFB6cFRNSktoUGV2L2ltSm1aWWhLZnIwbExjZW10cWpJeExBb3FaZE9ZZkhCZzYrdkFjZFBJL2lhdUdwVUF2N1grVUtObUR3aloyQmFINHNMd2hCMm0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZkNBWUFBQUNHVnMrTUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFIWVlBQUIyR0FWMmlFNEVBQUFiTlNVUkJWRmhIcFZkN1ROVjFGRC8zZDU5d2VRU0lnUzlBUUFYY0ZMQVFaaTlmcGVWejF0WS9XVFpyNVd4cGM3VzVrbkxhNWpJM1o4NXNyUzJuTTJzanRXd1pTN0lVSDRINHhDbkVReDREQVpGNzRWN3VzODg1djkvbEluQnZWSi9CNFB2OW51LzVudS81bnZNNTU2ZnpBL1F2MEhiL0lyWDNWRktQbzQ1Y25tNGluVUlXWXdMRlJtWlFVdXdqRkcvTjFpUkhoMUVaME5SVlJ1ZHF0MUJkKzJuU0t5Uy9PaHlzMCtsazNlLzNrUTlxdkQ0WlV0YTRWVlNVdVkwZWlweWlUaEFmb2NvT1JWZ0R1dXczcUtSaUFkM3JiY0V0alRqWUlvZjZXYUhzQ216VlBXQ014K2NnaDh0THFXTUthTVdzVWpMcW8yUnRKSVEwb096bWVycFF1NGVzWmdzT05rR3hIN2Qwa2R2VFQxN3M0T01VN1ZJOFpoamdHYU0rQXE5aUVOdThQaWYxdWR6MDdNd3ZLV2Y4R2xWb0NFWTA0UEM1V2RUYVhZRmJSOHZOdkw1KzNLZ2ZiNXhOTXlhOVJhbUppeW5hTWxHVFZ0RmxyNmJhOXUrcHFuRVg0dU11UlJnalNZRWhyTjd1dEZGZTZscWFsN05ma3c1aW1BR0h5blBwYms4Vm1ZMHhzdG5wdGxGQ1ZDWXR6VHVCTjgzUXBNTGpUdGV2ZFB6U1VuSjdlOG1ranhaMzlmWGJLRGZsZFpxYnZVK1RVZ0duQlZGNmZRMmlQSGc0VzE2VVdVd3Z6YmsxNnNNWkUrUG4wcHZ6N0pTZXVBeWVzOGxjcENtYUt1by9wK3FXcjJVY3dJQUhXcnZQMFlFemhYQXRMQWJzc0hocDdpR2FtdnlpalA4cnlxclhVV1g5WG9vd3h5QXVmTkJycDQzUE9CRlhabGtmOE1EUmlxY3B5b3dBd3B1ejJ4K2ZXdnovRHRkZTlzbXN6eWd0Y1I2QzF3YmR6Qmw2T2xxNVdOWVk0b0dhdGhKTXJrVEV4MGpBUlNIQVZzKzVyWWtRTlhiK1FnZlBMc1E2Z1h5SW5zcmVRZm1wbTdSVkZZZkw4Nm4xZmlVT2tZdlNoa1VQeHZidWt6b3k2SzFpaE0xaG8zWHpXNkV2U2ZYQStkcGlXR2FXZCtkb1h6THptR3dLWUZMQ0FzUkFsUEJBaE1sQ0ZYVTd0QlVWUHI4SGdWY0pIV3ErRjAwcGxyK0RNVGRyUDR6dnhZMTFrTk1oeFQrU2VUR2crZDRWNUxRSml0eVVHSk5COFZGWnNqZ1lCWk0vSUkvWENUa2owcXlET3BGMkFWUTE3Q0lqVXAvRG5UMVVrTDVGNWdkaitzUzF3ZzFnRTNnaWdtNjBmQ1h6U25QWGJ5QVBiSVh2K0lEcEUxNlRoYUhJUzlza3lobG1NRTVGM2NmcUFLaHEyQzBFNVBIMWdZYVhhTFBEa1pHMEhESk9uS1dIcDUxSTB6NVNPdXg4ZTFXQXVaemRIUXJUa3A4VG1qWG9JK2xhMHdHWnN6dWJxYk8zaWZRNkEvVzd2VlNZc1YzbVIwSkt3a0tjNFdIaUJrbVI4STNDQ2dJODdvT0w0cXpUNVArUlVKQmVqRU9nQVBLOGhZUHphdE0rZUlUcDJJTzl5VFFtZXJvbVBSeHgxcXhBY3NpbGUvdWJTZUViY1dRR1lFQ2doY0xZMkh5S2pvZ2pIMjVoTXBqcFV2MU91Z2xpNGVoMmVSdzBPMzJiSmpreXVDZ056ZzB2emxZTVNpU3MwdW9vNE1HN2hNT2pDRWFYMXlGRTBuU3ZqQnp1VG5FcEs4Nlo4SW9xRkFJdWJ3OGtnOUFyRWFSRVdTWkkrakg0WGJwNmc5RTlFbkpUM29hUnpETitNVUpCUURIbjU2YThvVW1FQnVzT3hCcy9ONSt0SkViUGtBRkRqOFVHdk9zL0lXdmNTZ2xHQmh2UzcvRlRZZnBXR1lkRFk4ZlBBeFdTQTM1c1RDNHA0K0xtNEFhcUlvUGVRdGZ1Zks2SmgwWmh4bGJzVVhPU21YTmlmRDVaVEFreURvZmJiY2NseG5BOFdOQXF4Q2JSTnlraFh4UXBhRHc2N2ZYVVlic2lHMEtodHYyb2VJdmg4cmhRTVlPY0VBcVhHL2VJK3puZ09jNXl4cjhxODJJQU0xYy9GTEZPcGxxdTVlRlFYck1aekdjVkNqWWJMV0c1STRCVDFldVJybGJ4dE5PdE1pdERERWhMWElJeW5BQXZ1T0VXRTNYM05kQWZ0OTRWZ2FHNDJYSVF0MFpYNlBlQ0UvcVFGZTlySzZIeDdZVTUwS3ZIN2ZXNGZTK3E3S0tCSnhzZ2dCWDVwU0FHaDFqSXJWaDV6UTZ3M1JmYWFoQlhtL2FDYkNaVGpDVUZVVHlXWnFXOXA2Mk1qSlBYVnFPclBnTU80TnY3NEdrZitvd2Z0TlZCRFFuakZKcUhTdzE3cFh2aFdXNUtacWUvUTQ5Ti9VU1RDQVZXb1FYRklIQkhYWGUzRlByVURzdUdEbXRGL2hIS1RIcGVreGhpQU9QSStTSnE2UzZIRjRJOVlXemtCSlRvNDZpVU16V3A4UGlyL1JpZHVMeEtZc1Nrc1Y4dkxsT1F2aEdYMllsUjBPQmhCakMrdS9nRWN2WTBBcEs3WWs0MU54alBTUW5XRkhURjY2VXJqZ2V2QjhDdTVhK2wydllTUlB0dVZEbzczaGhkTVNIblVYN3RUanNWWkd4QWwvV3B0aU9JRVExZ25MMjltWDYvdFIxdG1sa1lqOFc0WCtDU2pXY1VER1kxTnBTL0M3aFNLcWlNTE0vbDJRbVNXWjczRGR6K2dpbzhCQ0VOWVBRNDZxbmt6d1hVYnF2Qmt4alVRc1dmWkZnYnVvM3JBZit3TjdqT085MCt5bng0UGkzTCswbllMMVNjaERVZ0FQNGdQVi83SWQxcSsxSFNobXVHa0lxV1JQZ3l4TUZxUDhIZmpUbmpYd1k1YlFmYkpjdDZPSXpLZ01Ib3RGL0hlMWVnc2F4SFNxRzZ3ZmRtUTV4OE55VEZGcUJjcDJpU293SFIzeWs1KzM2aEY3dlhBQUFBQUVsRlRrU3VRbUNDIn0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDItMDEiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2LCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ill1YmlLZXkgQmlvIFNlcmllcyIsImNlcnRpZmljYXRlTnVtYmVyIjoiVTJGMTAwMDIwMjUwMjAxMDAyIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDItMDEiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTAyLTA2In0seyJhYWd1aWQiOiI4MTdjZGFiOC0wZDUxLTRkZTEtYTgyMS1lMjViODg1MTljZjMiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjgxN2NkYWI4LTBkNTEtNGRlMS1hODIxLWUyNWI4ODUxOWNmMyIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJTd2lzc2JpdCBpU2hpZWxkIEtleSAyIEZJUFMifSwiZGVzY3JpcHRpb24iOiJTd2lzc2JpdCBpU2hpZWxkIEtleSAyIEZJUFMiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9LHsibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo2LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NiwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQ2lUQ0NBZzZnQXdJQkFnSVVPa21VMzVJaWNYb1ZQamZ2d3BHN01ONnRIUFV3Q2dZSUtvWkl6ajBFQXdNd1F6RUxNQWtHQTFVRUJoTUNSRVV4RkRBU0JnTlZCQW9NQzFOM2FYTnpZbWwwSUVGSE1SNHdIQVlEVlFRRERCVlRkMmx6YzJKcGRDQkdTVVJQSUZKdmIzUWdRMEV3SUJjTk1qRXhNREEzTURrek1EUXlXaGdQTWpBMU1URXdNRGN3T1RNd05ESmFNRU14Q3pBSkJnTlZCQVlUQWtSRk1SUXdFZ1lEVlFRS0RBdFRkMmx6YzJKcGRDQkJSekVlTUJ3R0ExVUVBd3dWVTNkcGMzTmlhWFFnUmtsRVR5QlNiMjkwSUVOQk1IWXdFQVlIS29aSXpqMENBUVlGSzRFRUFDSURZZ0FFdGdPQzdJS3hpcE1KN2JWUFRUODNPZTkweHpIUENlYnh5Q3RnL1dyc1RyUmFTbllpZ21KQ0I4L2pxQk40T1FHMmRaNWpjTnNMNlN3SG9zWURSSmMrTzF6azlpNUdFWldmM0lyOTkyQTZkdU1zcDUxbHE0ZkFnYS9VelROOS9FYnpvNEhBTUlHOU1CMEdBMVVkRGdRV0JCVGZ4emc4R0d6WUFpZEtMNjN1aFNpcmFYSklLREIrQmdOVkhTTUVkekIxZ0JUZnh6ZzhHR3pZQWlkS0w2M3VoU2lyYVhKSUtLRkhwRVV3UXpFTE1Ba0dBMVVFQmhNQ1JFVXhGREFTQmdOVkJBb01DMU4zYVhOelltbDBJRUZITVI0d0hBWURWUVFEREJWVGQybHpjMkpwZENCR1NVUlBJRkp2YjNRZ1EwR0NGRHBKbE4rU0luRjZGVDQzNzhLUnV6RGVyUnoxTUF3R0ExVWRFd1FGTUFNQkFmOHdEZ1lEVlIwUEFRSC9CQVFEQWdFR01Bb0dDQ3FHU000OUJBTURBMmtBTUdZQ01RRHN2NEs2TmZKdmZ2emQwT3lnd0ovQUJpTHRndEpXaFhUZVVsbHRkcWE0V3NPTTl0dng2MzZ2NUZJdlpSa0sxWG9DTVFDZG9QUSthNGZEQkVpTnVqMFdzMzN1VVFoR3Jwc2VQREdmVlhuNGtFcGJUSUJlT2RWQXgvL1RyTUMvU1ZiK2JzZz0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBTkVBQUFETUNBSUFBQUJpRU5IOUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFEc01BQUE3REFjZHZxR1FBQUNadlNVUkJWSGhlN1owSGRCelYxWURYRFRlYXNTazJFRXd4WU1DQUFRT0duMERvRUNkQUNLWWtRQ0NoQkVpQUVFZ2doSVFFSEFpaGR4TEFYYkxhRnExNjc3MnZldTk5cC9lWjFYL2Z6RXBhMWdXRFo2V1Y5dDN6SFIwZGczWm4zL3ZtdnZ0bTU3MnhqT0hBTWJXQm5jTXgxWEVnNTFSVkhYVVROYzF0OW9LS3QrTHpINDNNdXptOGRIMUV3NmxSblN0dGd5c2M3bU5paVdPYzFERk9FalBib2FDdm9jZFgyWWRPaStxNE9MTCsxdkRTeHlOejM0N1BpeTJvcUd2dGNCTUUyT0wxNXR0aXY4NEpndERXMFpGVTVubzNyZndSVzhsMVlhVnJ0cFlmL1hYdG5HMXRsbWkzSlU2eUpJOVpVakdoQlBRNDlIdlU2Tnh0cmNkc3JUMTdlOFgxdTBzZXR4Vi9rRjZlV2w3YjJkVWxpcUxYbmdQR3ZwMWpHTWJWMUJxV1ZmS2NOZmZHOE5JendocU9EdStjdjZmUEVqbHNpU0VzTnNiaTRDeXh2STZBQ1EzMDduYXdxUGZCZ1lqaHd5SUdqZzdyT0hOMzNTMWhKWCsyNVVmbGx0VzN0SE1jNTNWby83RVA1d2lDS0sxdi9peTk5S0dvb3ZVN3lsZnNiSm9UMW9ja2k1ZVI1dkNMamJaWVNmVEdtRkFEK2gyY2krV1FDZUNEblowYjFudmN6c1pMZHBROUdsUDBaV1paWlZNclJWRmVrL1lUL3M1QmhnUGhQa2dxdkN1aWFNM3Ura1hoUFhPaVJpeFdHZ2tPMkpseDRiQnpvUWxwc1ZMSUFUREJVTUpLelkwYVdSTGVzemFzN3Q0OUJaK2xGVlUwdEJ3NDIzM0RPWjduYTV2YlBrc3Z1V3RQNFNrN1hmUEMreTF4ZW02elEwYWw5bnA3VE1nRFZvQjI4UkpJc2lDODc3UWQxZmRGRm55VldkYlkxZ0h6QWE5VmU4V2tjekR2YU92b2hCcnVvYWpDTThQckYwVDJJNWRoSUljWGhaZkdneWxtYjlCUUM5cEJjUzlBOGx1d3AvZWM4TnJIWWdxaWM4czZ1N28xVGZPNjljMllkTTVOa01sbHJ1ZGljaS9jVnJvb3ZCdkpDelVqSkZKc0crYkFnQ0hnaVZPd3hJbEx3am8zYkM5NTBaYWJVVkczdjhKdTBqbFhTL3Q3YWVVM2haVXUzOTVnaVJ6U3B3c3NydHN3QndlSk1oUTRzMmZnMkcxMW04SkxQc21vYUdqcjJPZlZrMG5uN1BubGoxcUx6OWhWTnkrOEQya0xOUno4OUg5cERHWS93TVFDVFNuSStXRzlaKytxL1oyOUpLR29jbkI0Mkt1WFQwdzY5MVpjM3ZWaEpjdkNPOUJmR2pVY1RuS1lnd2ZWZHJwMk5tYjU3cmFiZHhlOW41QlgwOUx1MWNzbkpwMTdOQ0wzekczbGgwWDBvMG9PQ2J2WGkySXdCd2FjQVhQaXhJWGh2V3UvTHYxZGRGNUtkWk5YTDUrWWRPN204TktqdjY3MVZuSXdZL1Y3T1F6bVlIQXc0TnljaUtGanZxcTVMYklzdkxMRHE1ZFBURHEzUHFKKy9zNE8vYy8wYnhwOFh3aURPVWpzK3ZBYTQxNndvLzN5NkliUHF3ZThldm5FcEhPblJuZWlMKzl0RTk4MDdQVnlHTXkzWXRPck9oZ25vMGJQdG5XOTYzSjc5ZktKU2VkVzJnYjE2eU9jZnJrRk80ZjVYaGp5eEhJV3A3ZzZkdWpOT3NhcmwwOU1PcmZDNGJZa2U5QlZGcjlYd1dDK0swNEJYRnJsZEcrcDU3MTYrY1NrYzhmRWt1Z2VLZXdjNXRCeGl1RFNDWEhFNncwSHZDWjhqSk5Dem9HaGZuK1B3WHhYRE9maXFkZSt6VGs5ejJIbk1JZU9OOCtScnpYczQrNFM3QndtQUdEbk1GTU5kZzR6MVdEbkxORWhqMStEQkpyUWRjNW83cWg5RVJsS3dPZWRZdTFtdVhPR1dQdkVWeksvL3hSTnpKa2docGc3ZTRGUFozeE0vM1lMS0xQV09jTWVReWwwUXJzbm1WQXRDclg3QWl1eHlFWXN0Uk5IT29obERuSjVMSFdza3pyZVNhMk1vMWJGVXlmR1V5ZU5jM0xDN09HVUJQTGtCSEpWSEhWTUxMbkVSczZieXB2VFpwVno0MWxxVWpqOUZ6aVA1MXFSV3d0MXQ0NktKVmM0U2ZCcGRRSjFaaks5THBXK0tKMitQSU8rS291K05wdTVJWWU5SlkvZGxNL2VWc0QrcklDOXM1RDllU0Y3bDg3bW9sbkMzVVhzZmNYbzU2WTg5cklNR2hSY2JDZTlqZWJYcElGZzlqaG5wQzVJWXhHUXpORHZNSEFzc3BGd0hwOFVUNTZaVEsxUG82L01vbS9JWlVDbWU0cTVoOHY0SnlyNTUycUV2OVFLcjlZTGJ6UUs3elFMSDdTSUg3ZEtuN1ZKLzJ1WHZ1NlF0blZLMjd1a0hWM1NUcDFkczRYZDNWSmtqeFRXTGNIbmZhS1MyNWpKTEl2Vm5ZTUc5R3ZWUURBYm5ETk8wUEdzTmkrR1dHS0hURWFkbGtpdlQyT3V6VUdKNnBGeTlvVWEvdlVHNGNOV0VXU0s2SkdkQTBycWtKSTdxcFlRYWlXbDFkSmFFNk8xc0ZvN3AzVndXaGVuOWZCYXI2RDE2ZlRQTGdaRnpTMTdoaVJQbVZ2OXVGVzh2WUE3UG82eVJPbUZoMS9iQm9JWjdOeUVhbnFKQnBYWmtYYnk1SGpxZ2xUNjJoeG1jeEgzWkNYL1NwM3dmb3U0clZPMDkwc1pRMHF4VzZtbDFWWVd5VFFpZVNqRnc2dGpzbWRzM3lzdFF5QUdCYytlYnZtWEpkeUo0SnhSN1BvMWNpQ1kyYzdwdVEwUzJ4RU9jblVpRFdNRUZDdC9yQmJlYlJIRHUyVklZMldFMnNScVBXQ1k3S0VWRDZkNlJNMGphMk9xWjh6ai9XUWhIWkRDdzd1a1gyRG52aDF2ZWtPNURRcVJ0Y2tVVkdtUGxNUFFLVzd2bE5LR2xHcEtoWkdSVnNBdHJOYUJvcFBUZG5aSzl4WnpNSUhGemgwUVBiMHR0S0haL3RWWnpPUGxIQXlnem42bGlsUzdlWTJRWWNUMFFDYkQ4YTBCbGVzTzdOeUI4QTZtYmhoTVZ6ako5ZWswVFBpM05BaldYcm1HVXFFK3cwbnR1d1oyN3R2UW5WdGdJMDZNSjYvUFlaNTM4V0hkY2dXaDlnc29zWGtQRk1kM0NlemMvakV5WEJTeHhJYXV0TjFSd0w3UktLUU15WjI4cG1EWkRpR3djL3RIZDI2cGpUdzNoWDZ3bFB1c1ZTeDJxNk9TQnd0M2lJR2QyeGRnbXc1a3VIV3A5TU5sM0xZT3lVV3AzTUZ1dzQzalFJR2QyeGQ2aGx0c0o4NUpvVUM0N1oxU0E2M2k2czJzd001OWsvRU1kNWlWV0pOTTNWL0tiZFdGazdCdzVnVjI3cHZvazRiNVZ1TGtCT3BuaGV3bmJXSXR6bkJtQjNidW0rak9IUnRIM3BqTHZOa2t3S1NCdzhLWkhkaTVjWXhSRmNvNEczbFJPdjBuRjU4MnJNQXMxWHNvT013TDdOdzR1bkFMck1TcGlhaU1pK2lSZTRUOWJMS040OUFDT3plT1Bxb3VqeVZ2eUdYZWJoYXJLRlhHT1M0d2daMGJKNHFZWnlYT1M2WC9VTTBsRDhyREVzNXhnWW9lWHR2ZEpkMFgwczdwbGR6Y2FHSzVrOXlVei82dlhXeGpOUVYvZFIrd0dCUzFpRzRKM2JNWkg3TE9lYjlVSlM1QVNZN1BHSmJaS2Z4NkM5NUo4NkRiT1FGNFd3REdkRm56QXRsMjl0SE1hRnM3cGJ1THVKV2g2eHg4NWlnQ2p1YTJmUGF6TnFtWm1hS3JJNkxxb1dRUERPTDlndGJOby9VUXJhd0cvZEhJYVBXMFdndFFhbzFPTmFWV2taTlV6a3pneUYzNkIwa2NVTFkwQ2pmbnNjYzY5ZlVRZ0YrUEJJSmdjMjV1REhGZUNnVkpMbmt3c05kSFFHZEdHUnNRd1MyMWpGQXpoNVg0QWRuYUsrL3BsbmQzeWRzNjVhODZwQy9hcFUvYnhJOWJ4WTlheEE5YXhQZWJ4ZmVheFhkMTN0R0JLYzVNQkk0Y1BnNThpci9XQ2ZlVmNPdlQ2U01kb2JuV0VGMGljUjl1SjYvUFpxQ2JHeGdOUnJRQUJRelpVQ2xtRFN1N3U2VjNXOFNYYTRXbnE3aEh5cmtIU3ptWXhHMHU1TzRzNUc0cllEY1ZzTGZtTWJma01UZmxNamZtTWpma01OZm5NTmRsSTY3VitkSE1CQzNqelVXZjRvcE01cHdVK3ZnNDhqRGJYdDBST0lMRk9mMmEzTHdZOUUzWEF5V2N2VThlQ1V5U2c0b05Ycm1VVUhkMVNTKzVoTHVMMmF1em1YVnA5QmxKYUhVN2xEWEh4NkYxL0N1Y0ZIemtvNEZZOGlnSENXa0FPTUtPZ0xOaTFyRFVUaTYwb1M4WTUvaDFSMEFKRnVkUU1ZSFdwVjZVVHI5VWk3N3BDc1ExT1JBT0tyYjBZZVhmamVJdmlya042ZlJKOGVRUkRoSUdkRU42eE1UbU1VWk43VXZFckFNK0ZMVDgxQXlwRXdTTGMrakRFOGM1cVIvbnNSKzNTczJzK2NNcUNEY2tldElHbGIvWENUQktRbFpEKzNSQWN4dTJHYjhZdjRjT0U1L2FyenNDU2hBNUYwMmNua2ovcG95TDZaVUhSUE96bkZ2MjVJNm9yOVVMMStVd0sySkoxT0xvUlBkcGVyOUR3Z1NJb0hBTytqc1Npam55b2pUbVpaZVFNNkpRWmwrV2c1RzZobEkvYkpFMjViTW54bEZ6OVhlY3RoTTl4QWtlNXhiWlNKaFN3UnkrbGxKRkdBak5DOVV6Qm9uVDJpcy9YTWF0VHFUbXc5c1pJNHZmWVdDbWh1bDNidHlBWmJIazdRWHNyaTY1bXpmNUxoSkdRUlBWTnh2RUgyWXhpMjNlMmhIbnRta2pTSnliRTAyY0dFODlXTW81K3hYQzdLc2tmWUlXMVNQL3Vvdy9QWkhTYytxVXo5UXd2a3kvYzNxU1cyQWx6MHFtZjEvRlo0K29ncWxydWp5ZXNUcEtmYnRadkQ2SFJVK1FncmVEU3M3dkdEQlRTWkE0dDhST1hweE8vNlZXZ0VIUTFGcHVERXJEM0JIbEQ5WDhlYWswbEl6RzIva2ZBMllxbVg3bklPdEVFMGM1eUt1eW1IODFDaTdLNUpXcmJ0bmo2SmZ2MTIvWFFaczFnM0I0WUoxZWdzUzVGVTd5cGx6bS9SYWhpVEhUT1VpWlhieTJyVlBhbE1lQzFwUFhSL3lPQVRPVlRMTnpxS0pIUDFmcTl5OTkwU2EyYzJiT1dTVnRySTVXUDJnUnI4NWlGcUlaS3hZdUNBZ1M1MDZPSnpjWHNaQ1F1Z1V6bldQVk1TZ1F0elNLbDJiUWFEdDY3Rnd3RUFUT29Tc1hxeE1vS0xuQ3UrVStVNy8xSWhWUHpvanljcTF3WVJxTjNnNWZKUWtHZ3NTNTB4T3BoMHE1cUI1NTBGVG5SbVZQMnBEeXh4ciszQlFLdlIxMkxoaVlmdWNpa0FkbkpGR1BsSFBXUG5uSVZPZUdKVS9pb1B4MEZYZDI4dmpWWUw4RHdFdzlRZUxjbWlUcTBYTE9aclp6OEdweEEvS1RsZHlaMkxuZ0lYaWNlNndjM1I1c3JuTXdVanY3NVNjcXVEWFl1ZUJoMXVjNWNPNUo3RnhRRVNSekNLam5qTHMxeloxRERJdWUrQUg1ZDNoc0RTcUN4TG5UOUhsclpJL0pkd2lQU0o2VVFmUmw2MXFZdDJMbmdvUWdjVzUxQXZYTEVpNnNXKzRWekhTT2tEMVp3OHFMTHY3ODFQSHJjNzd2anBrV2dzUzVrK09welVYY3RrNnBpemZ6ZXdoRzhSUzcxWC9XQ3h2U0dmdzlSTEFRSk02aDcxc0wyQy9heFRaVGQwUVhWVTh0cmI3YkxGNlZ4YUJsdytBY3ZwRnAyZ2tDNTlEUEZVNjBoNnZwOTVXb25yRk9YdHZhTVg1ZmlYSHpIRTUxMDB1UU9IZTBmdi9jR3dHNGZ3NUt1dGcrK1VIOWNaSGU1VjdZdWVsbG1wMEQ5Tnl6MUlidUUvNXJuZm4zQ1V2YVdPR28rcUpMdUNpTldZTHZFdzRHZ3NTNUJWYnk3R1RxbVdvK1owUUJTOHlOVmxiN2I3dDBSd0Y3QXRwTmtyQkU0RlEzclV5L2M5RDkrcnF2SHlTUUQ1ZHhDUU95NlF1cTNiSW5ZMWgreWNYRDdCVXRpUURuY0ZVM2pRU0pjOER5V1BMT1FqYThSK29UVFY3Zkttc2VtRWxFOWtpUGxITm5KZE9MNFUxUnRqTjJ2aG4zejhEM3dEQUJZdnFkQTZDekk0bWxkclJSK2lkdFlpT3JTcWJ1SVF5dkpXcm9vc24vT3REZXVlY21VL0JlaHVoZTV3d216TVB5QlpUZ2NXNitsYncwZy81SGcxQk1LR3dBTm5XbEZVOGxxWDdWSVQxWnlWMmR6WnllU0IzbnBHRHVNdDg0Z0NnOTUza3hVdUNCbWZpZlRXSkMvZS9LeEhsaTROdXd3VW5RT09lR2tnNm1FVTlWOHZFRDhvanA4d2c5MnpHS3A1SFI0Z2JrdDVyRng4cjVXL1BZaTlPWTA1Qjg1SkVPWXFFTlBTTUE3ZjVuZEo1ZjE4NElab1Iyd2VNY05ObXFPT3JuaGV6WEhWS25xYXUvZkFQbUowT1NWa0dxOWo3NXd4YnBMeTdoc1FwdWN4SGF3L1dIMmN5bEdjeUZhY3c1S2RTYVpHcDFJdHA1ODhSNGFtVWNkWHdjQ1Y0ZXE3UENES0I0Qlk3UldhWnp0QU54bEE3YTAxUGYxaFB0aG1sRHUyRXVBV3pFWWh1eHlFWXN0S0puUFM2d0VwQ2g1OFhzNnlTWnlNVEJhV0ZRT0Fmb2pRWE5mV1VtODNxREFJTmc0TFpNaHhmbVZNK2c0R2xpdEJLM21qSW93L1FDeHR6M1c4UXREY0xMdGNKejFmeVRGZHl2eXpnby91NHU5dTR0L0pOODlzZDU3QzE1N00yNWlKdHkwU2JEMzVzYmM1bnJnUnptMmh6dkhyOVhaekUvekdLdXlxU3Z6S1EzWnRLWFo5SlFhVnlhVGwrU1JsK1VScTlQb3k5SW84NVBwYzVOb2RZbVUyY2xVV2NrVWFjbVVqOUlvRmJwKzlHQ3dXRHFJanV5ME92WnhIaU5uZHMzMEM1UmNQcVMwSlMvcmVEQUEwYnh2blZBQTh5RzJuRklSUHZ6MTlGb0EvWGNFVFYxU0hIMnk5RzlVbGkzdEwwTDZhaHZvQzU5MUNwOTJDcDkwQUoyU3UrMWlJZkN1L3IrNWY5cEV0OXFFdi9kS0w3WktQNnJVZHpTS01MNTlzOEc0ZFVHNGUvMXdpdDF3bDlyQmNqRUw3cUVQN21FRjJyNFAxYnp6MWJ4djYrQ1U0Si92SUwvVFRuM0VKd1lwZHpkUmR3ZGFMdHQ5cHBzWmtNNnl0TS9TRVFXTHJhUjNxMExna3ErSUhJdUdsMmxnMUhtcC9sb29Xc25yeW1CR21EM0VTQ2ZxS0g5MUVuWk15cUJoWjUrUWV2aHRTNWVhOWNmRjlIQ2FKQVhvUnhzMEtrL05PcG9oSXRDMUZCYXRVNFZwVlVTU2dXaGxCTktHYUdVRWtxSld5bDJLNFdqU3NHb2tqK3E1STBxMlNOSzVyQ1NQcVRBaVpFMEtFUHQ2MENuaHd5bkI5UWtIN1dDdGVMejFmd0RwZHlOT2N5NlZCcFNJTHE1WVVJN3YyYWZGb0xGT1FDMGkwUmx5b1owK3RVNkFWcDVhbEpkVUlYSGc5RDBuOFl2Y0RJWUQrVUJaUDNFRUFBVnlnTjBoc0JrbkZUUVNUSWdvTk9qU1gvV0JSZ1ozaTFES24yMm1yK3prSVV4K3VSNFZCUk81cnpwVFhoQjVCd0FKVWcwY1VvQzJvZ3V2RnZxTVhWTi82d1BhQ3haODRDSW9HQTNyOVZTV3NhUXNxdExnaFA0M21LWW9kTXdkMEU3eEUvTUxYeGJmaW9KT3VkZ0ptR0htUVQ5ajNvZUJwZkF6U1JDSVhqVjB5ZDRpa2JWSFowU2xJTXdBVnFUaEhhTDl5YTg2ZEl1dUp6VE0vOTg5TjByZFg4SkMyVUsxRldtZmlVUmlrSExIaWhKWWNEOW9FVjhxSlM3TUkzK3hxMkVVMjllY0Rsbk5BRjZ0Q0Y1UlFiOVdyMEFGVFJqOWxmK29SbGdYaTJ0UXNVQzA5NHJNcG5sc1JRYVp3M3pmTHRnQ2dndTV3d2lpVGxSYUlYRVBVWHMxazZwUFFEUEp3bk5nUElZR3RQZXAveTVScmdxYS93aEdWT2Y3WUxST2IwaElOVmRrRW8vVThVbkQ4aW03Mm9kc2dFVDRWN0JrelFnditRUy9pK0xXZWFZanRvdUdKM1RUenRvaTZOanlldHltUDgwaVpXa3l1SFpoRWtCN1RnZ2FISDk4bk0xL0laMCtvaUoyczZ2RndKSE1EcG5vTGZDNmdUcW5tTHVxdzZwa2Rhd2RXWUZUTXM2T2MzYWgzWnlPVGVGV21ERmVjNUFQL2tXVzhselV1akhLamlZdy9hSkhselptUld5TnRiS2FYQXkvN3lRUFNtZW1nL2FUZGtJRzd6TzZTTXNOTVRoZG5KREJ2MThqWkEwcVBTTCtNcUphY0dyYU1INWxnYngybXpHKytTTXFSbGhnOWM1QUp6VHJ4SXZpeVdoNEgyNVRrZ2RVb1lEY0d0ZHlNYXc1RWtZVUg1ZnlhOU5waGZFNk5wTlFhb0xhdWNBUGRYQmZHS0ZrN3cyaDNtMW5zOFlrb2ZNdlhVOWhFUHhqRFd6MnVkdDBvL3oyQlZPZlJ1aEtkQXUySjBEaklaQVR4UW1yODJtLzFiSEp3OHFmWUxIM0dXd0lSdXM2c2tZVnA2dDR0ZWwwZ3R0eGlNMEFyeVQwQXh3RHRDZG14dERIT3RFejl0OHlTWEFWQjltWHBMSmEvNURNZURNYldTMFQ5cWtuK2F6eDhWUnFLa2pzWFBBZUtxRFV4QUcyU3N5R0Rndnc3c2xGNlhTZ1hodWY0aUZXL0xBMFBGTUZiODJoZGEzMThET0dVQmI2T1pCdGp2S1RxNVBveDR1WlQ5ckU0dEcxU0Y4RGVYUUFvYUxPa3A3cjFtOEpwdGRZcXpDTkZyYnJ3dk1Zc1k0WjZCckJ5ZmlZaHR4WmhKMVJ5SHp6M3JCMnF1NEtBM013emNEZk0vd2pJMkludWhlK2Q1aWJtVThOYzhRRGpzM0NiU0ZmbXZuUWl0eFlqeDVSU2J6U0JuL1FZc0Vvd05Nd1FnWnp5MitUNGphV0k3K3hGR1lTU3dPOUU1Q004ODV3RGdMMFJEZ1htb256MHFpYjgxam42MFdQbTBUNC9xVmNrSnQ1N1JoRWQweGl6UGZRUWEwVXkydC9xZEp2QzRuOE5lSFo2UnpnT0VjMGc0U0hscDJlbTRLZldNdTg1c3lEa2JiclIxUzRvQlNTcWd0ckRZZ2VDakZJNmpvV2hTNnJJY3QzRTkwODlyT0x1bStZdlJWR0dyWXdNMGtacXB6RXhqbVJhR2x4VWM1eURNU3FmL0xaRFlYc2s5WDhhODFpSisyU1dIZHNyTmZUaDlDNjZaS0NhV0tWR29wdEh5cmxVUHJDNkdoZXdXdFgvQU1pSjVCMFFQWmNVUkM2d2xnS2dmRE5FRHFVRHEwdnViRkYrYjdBamtZNEZRRXI2STFOVEM2U1JwYVphUHFTMittUHVDREp3MHEwRzVuSjlQb0JpZnMzSDZaU0hoQU5GcmdEdWF0aWlQUFNxWTJaRERYNWJKM0ZIQVBsSEpQVlBEUDEvQ3YxQWxiR29TM204UVBXOFV2MnRIaVBEaXo5L1JJVUQ3Yit1VFlmam1oWDA0YWtGTUcwV0srekdFbFd5ZDNXTWtmVVlHQ1VVU2hHMUgwZlNrbTFCSkNoUnhjUnFoUUJsUVNhaFdwdWlnVmhyWUdHaVZtT0JONmVHMVExTnl5eHFxZUtic1d4Q3BqY0dEL2JCQTJaTkNCL2NwL3hqdm55NFI4ZW52TnM2SzlubGJFVWlmSFV6REpQVCtOdWpTRHZpcUx2ajZIdVRXUHVhMkF2YXVRdmE4WUdmbnJNdTdSY3ZDUysxMGw5MHdWOTF3MS8zdzEvMmNYLzZLTGY4bkZ2K3ppWDZrVi9nYlVJVjZ0bitRZjN4M29WR2pyMXh1RWZ6VUlielFLYnpZS2J6V0o3elNqaGRZZnRZcWZ0MHRmdGt2Yk82V0lIc25XRHhNakdkSXpKT1plWG9Qc0dORDhCMWtXMHYvSGJSS1VkSXZ0MkxtRFpDTG5vZDA2MEFZbzZGK2kwU1U5eUgrTGJjUVJkclFuQ05USVVQOGQ3MFRwOEtRRXRQM0M2a1RxdEVScVRSSUYyWEZ0TW5WT0NuVmVDclV1RmUzVmNFRXFkV0VxdFQ2TnVRaElSMXlzYzhuM0JiSXZjR2tHYzFrR2Mza21zekdUZ2FrMzFBTS96R1orbE1QY2tNdmNuTXY4SkorNUU4NkhFaGJPQkVqUFVOcEg5c2dsYm5WQTFBSTNLOUp2SWRaMmRjdTNGN0RMWUJwaE5HWWd0SnRWenZtaEMrZTE4Q0F4L3NSQWZ4RW9FeWV4SXVZZUdwQjlBUmk4ZklGVFlxR05XR1FubGpxSXd4MVFIaERMblNUMHlxbUoxUGtwOUhYWnpFT2wzTDhhUlNoTW14Z3RjTGRNUS8zcTZKY2ZLR0ZQakF2a1BldXoyVGxnUWlCZnNTSU5qTTJMRHBLSnZ6SVYzK1B4SGg2a1p3TjAyUE5qMEYycnkyT1JmSkFJWWVqZjBTWFYwU29YbUhRSFV4a29aS0hHT0NPSjh0N2FCUGcxNmFFenk1Mzdma3lZT2wxNC9kTVoxeEZxMDNVcDFNTmwzSzR1cVlWUkF6RzNVTFN4Z2xIbGhScjBxQ3B3M1hzQWZvMXo2R0RuZ290OXlnZmFvZDJQaVNWV1lsMEtEYk9jK0g0WmFqdlY3TnNJNGVYS1NSWG1TWmVsTTFEN1l1ZENHOE8vQ0hTbi9qVlp6TDhhQTdYYXZJWlNZVFo5dGI0TUVUc1g4b0IyZTVBRXF4T29CMHE0UGQxU3I2blA0ek9pZ1VZM21OeVlNNzdpR2xLczMyRWNPdGk1bVlSZTJ4MmxQNmRxUzZOUVRacjh6Q0NJRmtiN3RGWDhTUjV6QXZRNGRnNkRKSWhDazFtWVZ6NVp5Y0VjMC9UckpoMmM5bVc3ZEdjQmMyTGc3aG5HenMwa2pLb3VHaTBOMlZ6RTZvLzFOdm41TGQyOHRyMVR1cWVJUFRsdzMvUmo1MllZK25pMzFFN2VsTXQ4MFM2MXNLcHM2dXkxVjlEQ3V1VmZsbkNuSkl3N0I2TDdIY01oZ3AyYllZQUJrV2l6NzZzeW1iZWJ4Q3BTNVUwZFh2c0VMYUpIZnJDVWc1a0tkZzZqZzV4eno0MGhOcVRSLzZnVENrY1YydFFySnYyaUZ0VXJQMVRHbldvNEY0R2R3K2pPellraExraWxYM0lKV2NNS1llbzNFbEFnUnZmS0Q1ZHhweVZpNXpBR3VuUHc4OXdVNnJscVBuVlFIalYxYzc1SjU1TDBaZjNZT2N5RWMydVRxV2VxK0NUMGJEUlR4MVpoZkd3MW5NUDFIR2JDZzdPVHFkOVg4b245OHJEWnprWDJ5TCtDT1FTTXJkZzVETUx3SUlaWW0wSTlYY1VubXAzbllONjZwMXQrQUY4cndVd3k3aHpVYzMrbzVsUE1ydWQ2ZVcxWGwzeGZNZmNEN0J6R2krNGN6RnZQVDZQLzdCSXl6SjYzZG5IYXRrNXBjMUVnVnh4aTUyWVl1bk56WTRpTDArbFg2b1M4VWNYY1hZTGFXZTIvN2RMdGhleEsvSDByeGd0eWpwaHZKVGRtTVc4MGllV2t5ZmVwTnpQYVI2M2lyZm5NY2REanlMbTlEdURRd2M3Tk1IVG5GdG5KYTNPWmoxdkZCa2FWVEwyZnFZN1czbTRTcjh0bGx1UDc1ekFJRUE0ODBEZFlodUZ2WjVmVXcydG1LdWNacXlMVjF4dUVLN09ZeVdlQytSM0RvWU9kbTBub3pzMkpKazVPSUI4cVkrTUhaTkxVWWc3MExYR3JmM0VKRjZjeFN3TzNPeE4yYmlhaFM3RFlSbDZZQ3BOV3Z0Q3RLS1lPckpLK0k5Z3pWZnc1eWZSQ1kvc0k3RnhJbzFkeUlBRlU5NXZ5MkU5YXhXYlc1UDJVYVdVc2NWRDVUUm0vT29HYVB6Nk8reC9Hb1lPZG14a1lCa1NnZlRET1RhR2ZydUpnWURYM1VSbVFNSWRFVDFTdnZMbVlBNjNuR01MQisvb2R5YUdEblF0ZW9MOE5vTzhodyttUEdEM09TZDFSd1A2M1hXeWdOY0hVZ1ZYMWpMVnoycGNkMGkzNTdPU0Q1N0J6b1lWaG15RmNCUHBsbVFNOUQralZlaUZ2Qk4ycWFlNUtDREM0bWxMZmJoYmhMUTZ6Nlc4YUNPR0FvSE51NHN6R0dFUVQ4NktKeFZaaVpUeDFUVFlEVTRlRUFibFBNSDlsSzB5QnMwZVVsMXpDK1duMEhKaEFoSXB6aG0yUnZwdlR6QW9pOXNMM1AwMzhEdmlvQml5d292M0xUb29uTDBxamYxN0VRaWNsRHNqZHZDYWJyeHg2cUt1MVYzNmtYTDliRS9vQ25QUHRHaE1KS3VmbVdnbkk2b3ZzeEJJN09hdXdUYkxVcnVNZ0QzZVFVRFlkNlNDUGlpV1h4WkxMNDhoajQ4Z1Q0cWtUNDlGK2VHdVNxSE5UcUV2UzZSOWxNL2NVc3krNGVLaTBDdHpLSU5xbXhOc3A1a1lMbzMzV0p2MjBnRDB1VHQ5OExoU2NnM3grcElNNEpaRzZJSTIrTEpPK1F1ZnlXY0hHRE1RVm1jeVZPc1lPaHpCUVhtZHNjcGpIYk1wbmJpOWs3eXBpZjFIQy9hcVVlN3lDZjdvSzdmSzVwVUg0cUZVTTc1RXloNVZHVmlNRHR1TWhlRnhHcUgrdkV5N1BZQTUzR0tPTmZ3ZVpSckE0cDIvRmVrb2lXcmI1UkNYM2NoMXY3SVFLclRBTGVGVUhiZXhhanpaMkJaUGVhQlQrM1NTODB5eSszeXArM0NwKzNpWkNHdHZaSlVYMHlMWmVPV0ZBeVJoV2lrWVZGNFdlT3pBa2VUZ1ZhUkc0UUZmbUJwUkh5dmpURStuREFuYzEyQ0Fvbk5QTE9LaGRMa3lqNGZ6ZTFTMUJNVnZzUmhTT0tnVXpuMEszVW9SUWk5M2VEYXpMQ2JXQ1JMdFgxNHp2WHQzTWFxQlhGNi9CL0dCSVJGdTJjNnBIbVpLSGhrTDJoUGY5dWxQYWxNOGVIUnZJSFRZTmdzVTVmWjB3ek5MLzNTUkNrb2M1bEtUdlhRK0lzd3ZqUThFa3dBRDYyd0RTbUtZRGxrMkZhRDVCS3g0NEpWNnRGeTdKb05HeitRTXFIQkJVemtHSkErVkxDeHVBV1JtTy9VY3ZXcnN2UVIwSnhiUXg1dmgza0xrRWxYTS96R0xlYXhIcmFGVTI5UW83amdNRUROL2xwQUlsNXRWWnpOR0J1My9KbDZCeTdxb3NCc3BxS0hITTNZTUR4LzRDV25sRTBxeDlLTW10VHFBV1FGOWc1M0FFTkZnVmtwejZacU53VlJhOWRPSTVKSUJmQjVrTGRpNlVvNU5ES3d1OU8zL3B2WUNkd3hIQUlHVXRZMGg1b1VhNEpKMDVQSEM3cE84TmRpNDBRMURSWFNRd1k3c3hsem5XU2FMSDhCc0RxMS9YQkFMc1hBaUdvbm1hR0cxN2wzUi9DWGRxSWpVdlp2elphSDc5RWlDd2M2RVdpZ2R0R2h6VkkvKzJnajh2bGRZZllhZzc1OWNwZ1FNN0YxS2hqWTMxOEo2NGZ2bTVhbjVEQnN4VjlWdElEUHc2SlhCZzUwSW5KTTNUeVd1T2Zobm1EVmRrMGdGODBzMkJ3YzZGU0lqYVdBdXJSdmRLejFiekd6T1paYkhqOHdic0hIYk85SUFDemkxNUtnaDFXNmYwWkFWM1NUbzkrUjBYdER6ZzF4MkJCanMzdTBQVzBJWGZ0Q0hsUDAzaVBjWHN1bFRxQ0llM3dhZkJOZ1BzM0t3TWFEOUc4Y0Q4dE1TdDd1cVMvK1FTYnNwbFRrbWdGdHFtTDcxTmdKMmJmU0dveUxaaXR4cmVKYjFhTDl4VHpGMmNUaDhYUjg2SHBwNFlVbjNiZjRvSkt1ZXV6bUkrYUVIN1cybFRjbi9zN0FnNFBTVU5mVnRQeUo1ZVFhdW4xWndSWlhlWEJEMzZRQW0zTVpOZUZVK2k5QWFORExiNXRmeTBFRlRPWFpQRmZOZ2lOakVtYjhNeCswTFQ5N09CMFhOVTh2VHdXaU9qbFJCcThxQzh1MXQ2dTFsNHJvYmZYTVJlbWNtY2xrZ2Q2ZER2Tlo5WXhlalg4dE5DVURtM01ZTjVyVjZBMDdSUDBOeXlCeGlXWmpVaVlraG5VR2RBUVBUcDlBcmdrNmVMOThBa29KM1RXbG10aVVWcHpFV3A1U1JhWnBFK0pEdjc1YkJ1NmRNMmNVdWo4RXcxZjI4eGUwMDJ2VGFGUHM0SnBkdjQ5ZDVwSDB6OUNBcm5BUDJ4cE9la1VMOHU0ejVvRmFONjVkaCtoSzF2Tm1QdFJjVDB5dEc5Y2xRUElxSmIydE10UWJyYTFTWHQ2SlMyZGtwZmRVai9iUmMvYXhNL2FoSGZheEZoK3ZsNmcvaEtIZjk4RGY5VUpmZFFHWGRYRVh0ekhudGxGbk5lS2cyemhHV3hwSGZoRnN4TWpmUm1tT2ZYNE5OSXNEZ1hUY3lMSWVBNExzOWs3aXhpSHk3akhpMUhnSUt6R1BpWUJxRE9yMHE1QjB1NSswdllYNWF3a0s3dUxtTHZLbVIvVnNEZVZzRCtKSis5SlkrOU1ZZTlOcHU5S3BPNUxJTlpuMGF2VGFaaDZGeVZRRUhYSE81QUZkdGN2Um05QktGcUV3U0xjekhFbkJoaXNaMDRObzQ4SlpFNkk0azZNeG14Sm1rMkF4L1Q0SFFna1FLSFRrMUVpL2doWGYwZ2dUcEpYOU8vTW82Qzdqbk9TYTdRbC9zZjVTQVB0NU9MYkdoWWdCYno2bVdrTkMvQk41ajZFVHpPR1VBN0FuREtoaFRHcDBaRWZ3TnZydG9uSUphQjM3OERlN1ZxY0JGY3prRjdvYk5XUDEvOTlwSUphZlJNTmlIWkJETkZNaitDTGM5TnRpUG13UGkxMnd3aTZKekR6SHF3YzVpcEJqdUhtV3F3YzVpcDVxQ2RvN0J6R0hNd25JdW5YbXNRdlhyNWhJOXpzYVFsWmN3U3kvdi9QUWJ6WFFIblVpRFBFYThmMkxrVkRyY2wyWU9kdzVnQWpKWkpubFhPMFMzMXZGY3ZuNWgwYnFWMUFPbnA0Q3hXeW1JbC9WOEZnemtZd0J6d0o1WUQ3Vlk3QnQrc3BiMTYrY1NrYzZkRmRWaWlSaTAyQmdGLzV2ZGFHTXpCWUtNc050cGlweTJSSTJ1dG5lL1dqSHIxOG9sSjV5N2FVemQvUnp2Nk0waDE4R2UrTDRUQkhDUmdtNE8xUkxzUDI5RzJNYXIraStwK3IxNCtNZW5jcmVFbHk3NTJ6WWthdHNSSkZqdmovMW9Zek1IZ1lDeHg0cHlJd1JWZjE5d1JXUnBSMWVIVnl5Y21uZnR0Wk83WjI4b1dSdlJiNGlXa0tpN3BNTjhWY0FiTWlSTVhoZmVldDdYMG1aaTh0T3BtcjE0K01lbmNPL0Y1TjRhVkhCUFdnWkljL0NVYVhyRjJtSU1HaEFObmRITlc3Rzc5Y1ZqUlI0bjVycFoycjE0K01lbWNzNkR5dDdhU3MzYlh6US92OVFxTFp4S1lnOGNRTG9aY3NMdm4zTjJ1Wnh3bHlTVlZROE1qWHIxOFl0SzV1dGFPRDlQTGJ3MHJXYkd0emhJeGFJbVgwV1FDcHpyTVFVR2lLN3RRbFlYM0g3K3Q5cmJ3NGkreUtwczd1aVJKOHVybEU1UE9FU1NaVmw3N0oydnVKVHRLbDRSM3c2aU1YZ1ZmcThOOEsyQUllT0lVTEhIQzRXRWRHM2VXL05XZW0xTlZUOVA3dURnSE1lbWNxcW9kblYyUk9hV1B4aFN1RGFzOUxLSVBaVXNubUtkZk9zSG1ZZmJHcU9IMEs4QVdHN1Z3VDgrNnNKcW5iSVgyL1BLZW5sN1BmcGJOVHpvSElRaENRMnY3bDVsbDkwWVVuTGFqZWtGNEg3cHVnaTZkUUdHSWF6dk1Yb0FWNEFZWTRoUVhodmV1MlY3NVlGVEI5dXl5bG80dVVkekhONjFHZk1NNUNKWmxLeHBhUGswcHVpK3ljTzN1dXFYaDNYTWpoMUhtaE5vT1FQSkJ6Z1AvY05vTFNZeGgxSmd1R0VwWXFYbFJ3NGVIZGEwTHEzMHdzdkRMak9LYTVqWklYbDZmOWhYK3prRlFGRlhaMlBwVlp2bWowWVViZHBRZXY3TnhibGd2dW9BQ0ZTSVlEVytEaDlxUUJRMm1EQnBNalFIUXhzemIzYjF5UjhQR25hVlBXZ3UzWjVlN1d0b1podkdhdEovWWgzTVFITWMxdExSSDU1YTlhTS9idEtmMDdMQzY1V0h0aDRYM1d2WU1XcUxkM25lRklSeXFQVXdJSWVnWmh3RUg1a1FNd21DNmZIZmJPYnRyYjlzRGs0WThxT0dhMnpzUG5PR00yTGR6RURBZWQzVjNwMWZXZlp4WjhaU2o1T2F3NHJWYlM1ZC83WnE3dFFYZENnQkhrRHlHN3ZIRWhBN1E0OUR2a2NQenQ3VWN1OVYxM3JheVc4T0tuM2FVZkpaWmtWVlYzOVBUczg4ckkzdkhmcDJEMERTTkpNbjYxdmI0b29yM0V3dWVpczc3YVVUWlpWRU5aMXU3VG5FTXJuSzZUM0FTSitocjBER3pIUXI2R25wOHRXTndyYlZ6WTFUOTdSR2xUOGZrZjVpVW4xUmMyZFRlQ2ZVWTJPTDE1dHZpUU00Wkljdnk0T0JnZFZOclNuVnpXR1g3NTlVRDc3cmNiOVl4VytyNTE0QUc5Q2h3ek95bm5vY2UvM2NkODI3TjZCZlYvWHVxMnROcW1sM05yVU5EUTRxaWVGMDV1UGgyNTNEZ01EZXdjemltTnNiRy9oKzlQNytLZktPK1JnQUFBQUJKUlU1RXJrSmdnZz09IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiY3JlZEJsb2IiLCJtaW5QaW5MZW5ndGgiLCJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiI4MTdjZGFiODBkNTE0ZGUxYTgyMWUyNWI4ODUxOWNmMyIsIm9wdGlvbnMiOnsicmsiOnRydWUsImNsaWVudFBpbiI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6dHJ1ZSwiYWx3YXlzVXYiOmZhbHNlfSwibWF4TXNnU2l6ZSI6ODk2LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxLDJdLCJ0cmFuc3BvcnRzIjpbInVzYiIsIm5mYyJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XSwiZm9yY2VQSU5DaGFuZ2UiOmZhbHNlLCJtaW5QSU5MZW5ndGgiOjYsImZpcm13YXJlVmVyc2lvbiI6MSwibWF4Q3JlZEJsb2JMZW5ndGgiOjMyLCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6OCwidXZNb2RhbGl0eSI6MjA0OSwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjMwMH19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTAyLTI3IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiU3dpc3NiaXQgaVNoaWVsZCBLZXkgMiBGSVBTIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNTAyMjcwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wMi0yNyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTAzLTI1In0seyJhYWd1aWQiOiI2MTI1MDU5MS1iMmJjLTQ0NTYtYjcxOS0wYjE3YmU5MGJiMzAiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjYxMjUwNTkxLWIyYmMtNDQ1Ni1iNzE5LTBiMTdiZTkwYmIzMCIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJlV0JNIGVGUEEgRklETzIgQXV0aGVudGljYXRvciJ9LCJkZXNjcmlwdGlvbiI6ImVXQk0gZUZQQSBGSURPMiBBdXRoZW50aWNhdG9yIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MjU2LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQ3BUQ0NBa3FnQXdJQkFnSUJBVEFLQmdncWhrak9QUVFEQWpDQnJ6RUxNQWtHQTFVRUJoTUNTMUl4RVRBUEJnTlZCQWdNQ0ZObGIzVnNMVk5wTVJNd0VRWURWUVFIREFwSFlXNW5ibUZ0TFVkMU1SY3dGUVlEVlFRS0RBNWxWMEpOSUVOdkxpd2dUSFJrTGpFaU1DQUdBMVVFQ3d3WlFYVjBhR1Z1ZEdsallYUnZjaUJCZEhSbGMzUmhkR2x2YmpFY01Cb0dBMVVFQXd3VFpWZENUU0JEUVNCRFpYSjBhV1pwWTJGMFpURWRNQnNHQ1NxR1NJYjNEUUVKQVJZT2FXNW1iMEJsTFhkaWJTNWpiMjB3SGhjTk1UZ3dOekF5TURVek1UTTVXaGNOTWpNd056QXhNRFV6TVRNNVdqQ0JyekVMTUFrR0ExVUVCaE1DUzFJeEVUQVBCZ05WQkFnTUNGTmxiM1ZzTFZOcE1STXdFUVlEVlFRSERBcEhZVzVuYm1GdExVZDFNUmN3RlFZRFZRUUtEQTVsVjBKTklFTnZMaXdnVEhSa0xqRWlNQ0FHQTFVRUN3d1pRWFYwYUdWdWRHbGpZWFJ2Y2lCQmRIUmxjM1JoZEdsdmJqRWNNQm9HQTFVRUF3d1RaVmRDVFNCRFFTQkRaWEowYVdacFkyRjBaVEVkTUJzR0NTcUdTSWIzRFFFSkFSWU9hVzVtYjBCbExYZGliUzVqYjIwd1dUQVRCZ2NxaGtqT1BRSUJCZ2dxaGtqT1BRTUJCd05DQUFRSWZxSGlzaTBvTy9leU9xU2FEcnI5aXRHMkl5bUJrSG5TREdRSUlZbVQrdnFBOEFnTzgxbW9tYzJMZDVQR3BFTjZtdUU1NHdQSFFqdmMveUNpaDh1Mm8xVXdVekFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VBTUIwR0ExVWREZ1FXQkJTM0ovZnhpQXYyMmlyZEJzOThTT0RoRjdrVS9qQUxCZ05WSFE4RUJBTUNBUVl3RVFZSllJWklBWWI0UWdFQkJBUURBZ0FITUFvR0NDcUdTTTQ5QkFNQ0Ewa0FNRVlDSVFEYzQxTEZLNExKQ0JVMlZWS0l6N1o2c3hQaFVFa2g4bkxTTEs2SVhka1A1d0loQUllS1ZPWmNoYVZPNWFGN2ZiZFhvU3JjeXkxWVllVWVQTG9qY0tJOWZYODQiLCJNSUlDZ2pDQ0FpaWdBd0lCQWdJQkFUQUtCZ2dxaGtqT1BRUURBakNCblRFTE1Ba0dBMVVFQmhNQ1MxSXhEakFNQmdOVkJBZ01CVk5sYjNWc01SQXdEZ1lEVlFRSERBZEhZVzVuYm1GdE1SY3dGUVlEVlFRS0RBNWxWMEpOSUVOdkxpd2dUSFJrTGpFWk1CY0dBMVVFQ3d3UVEyVnlkR2xtYVdOaGRHVWdWVzVwZERFWk1CY0dBMVVFQXd3UVpWZENUU0JEWlhKMGFXWnBZMkYwWlRFZE1Cc0dDU3FHU0liM0RRRUpBUllPYVc1bWIwQmxMWGRpYlM1amIyMHdJQmNOTWpNd056RXhNRE0wTmpFMFdoZ1BNakEzTXpBMk1qZ3dNelEyTVRSYU1JR2RNUXN3Q1FZRFZRUUdFd0pMVWpFT01Bd0dBMVVFQ0F3RlUyVnZkV3d4RURBT0JnTlZCQWNNQjBkaGJtZHVZVzB4RnpBVkJnTlZCQW9NRG1WWFFrMGdRMjh1TENCTWRHUXVNUmt3RndZRFZRUUxEQkJEWlhKMGFXWnBZMkYwWlNCVmJtbDBNUmt3RndZRFZRUUREQkJsVjBKTklFTmxjblJwWm1sallYUmxNUjB3R3dZSktvWklodmNOQVFrQkZnNXBibVp2UUdVdGQySnRMbU52YlRCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQkFoK29lS3lMU2c3OTdJNnBKb091djJLMGJZaktZR1FlZElNWkFnaGlaUDYrb0R3Q0E3eldhaVp6WXQzazhha1EzcWE0VG5qQThkQ085ei9JS0tIeTdhalZUQlRNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3SFFZRFZSME9CQllFRkxjbjkvR0lDL2JhS3QwR3ozeEk0T0VYdVJUK01Bc0dBMVVkRHdRRUF3SUJCakFSQmdsZ2hrZ0JodmhDQVFFRUJBTUNBQWN3Q2dZSUtvWkl6ajBFQXdJRFNBQXdSUUloQU5WbkpkZS8vdEJMcThNRERpK1NBZDZVZFlJWlNuZzRQTXFteU5ydlpqNjRBaUFYMHhTekFoRmFDQ3AvdWhwVmdubEYrWEJncndBSXNvdFpHVEI2cmtCMzFBPT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBK2dBQUFFeENBWUFBQUR2RFlncUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFFblFBQUJKMEFkNW1IM2dBQUZpY1NVUkJWSGhlN2QwSGVCWEYyc0R4TjczUUNUVkE2RklGRktrQ1V1eUFFdW1LWWtGVWJJQ0NJaUtDVWdRRTdMMGdkbFFzS0NwU3JJZ2dTQytoSm5SQ0o0SDBiMmZ2ZUQvMGtoQ1NuYzJlay8vdnVYbVlkNDZYa0pOejlzeTdNL05PUUpaRkFBQUFBQUJBZ1FyVWZ3SUFBQUFBZ0FKRWdnNEFBQUFBZ0FlUW9BTUFBQUFBNEFFazZBQUFBQUFBZUFBSk9nQUFBQUFBSGtDQ0RnQUFBQUNBQjVDZ0F3QUFBQURnQVNUb0FBQUFBQUI0QUFrNkFBQUFBQUFlUUlJT0FBQUFBSUFIa0tBREFBQUFBT0FCSk9nQUFBQUFBSGdBQ1RvQUFBQUFBQjVBZ2c0QUFBQUFnQWVRb0FNQUFBQUE0QUVrNkFBQUFBQUFlRUJBbGtXM1BTc3pOVlhTRHlUS3FhMWI1ZFNhZFpLNmU0K2tIejltOTRuMy8vbUFjUUVob1JKY3VwUUVSMFZKV0pWS0V0Nmd2b1JYcnlaQnBVcEpRQ0QzNFFBQUFBQmY0TmtFUFNzalEwNXQzaUtIUHZwRWp2K3dRTkwzN1pPczFEVDlLSUN6Q1l5TWxOQWExYVRFTloybFpKZk9FbHFodlBXT0Q5Q1BBZ0FBQVBBYXp5WG9LakUvTXZjN1NYeHpocHhhc1ZMM0FzaVBnTkFRS2RxeHZaUzlZNEFVYWRKWTl3SUFBQUR3RWs4bDZNZC8rMTMyakh0S1V0YXQxejBBbkZhODY5VlNZZGdRQ2F0U1JmY0FBQUFBOEFKUEpPZ1pKMDdJbm9sVDVQQUhINHRrWnVwZUFLWUVoSWRMaFZFakpLcFhkd2tJRHRhOUFBQUFBQXBTZ1Nmb3A3WnNsUjBEQjBucTF1MjZCNEFyQWdLazJCV1hTcFhKRXlTb2FGSGRDUUFBQUtDZ0ZHaUNmdUxQNVJJL1lKQmtIRG1pZXdDNExieFJRNm4yNWlzU0VoV2xld0FBQUFBVWhBSkwwRThzWFNZN2JybERNcE9TZEErQWdoSmFxNGJVL09oZENTNWRXdmNBQUFBQWNGdUJISkNzbHJYSDMza3Z5VG5nRWFtYnQ4cjJnWU1rZy9ja0FBQUFVR0JjVDlEVGp4NlQ3YmZkSVJtSER1c2VBRjV3OHMrL1pPY2pqMGtXaFJvQkFBQ0FBdUhxRW5kMXhubjhBdy9Kc1MvbTZKNXpGeGdaSVVHbFNrbElqZW9TVktLNDdnVUtPZXR0bkw1dnY2VHRpSmVNSTBjbEt5MU5QM0R1S2s0WUsyWDY5TklSQUFBQUFMZTRtcUFmWGJqSUxncDN6a2VwQlFaSytQa05KS3AvUHluV3VxVUVseWtqQVVGQitrRUFmOHRNVFpYVVhidms2TGZ6NU5ETTl5Vjl6MTc5U080Rmxpd2g1LzN3RFVYakFBQUFBSmU1bHFCbkpDVkwzRlhYU0ZyQ1R0MlRPNkUxcTB2RlVTT2tlTnMyZHFJT0lIY3lUNTZVZ3g5OExQdWZlVjR5angzWHZibFRvbHRYaVprNnlicENCT2dlQUFBQUFLYTVsdkVlbWZQMXVTWG5WbUpRb21lczFKNHpXNHBmMG83a0hEaEhnUkVSVXZiVy9sTExlZytwbzlUT3hiRnZ2NWRUOFFrNkFnQUFBT0FHVjdKZXRleDIvL012NlNnWHJHUThhdEJBaVhscXZBU0doK3RPQUhrUlZxV3lmWVJhNU1VdGRjL1paWjFLa2YzUHZxQWpBQUFBQUc1d0pVRS9zWGlKcE8vYW82T3pDQWlRMGpmM2sraWg5N084Rm5DSXV0RlY3ZFVYejJrbS9jU0NSWkorNUtpT0FBQUFBSmpteWg1MFZibjk2R2RmNkNobktvR28rZkg3RWhnV3Fudnl5ZnJ4c3RMVEpmM0VDY2s0Zmx5eVV2TmUzUnB3aXpxdElMaFlNWHVadWwwUTBhR2JWYWUyNzVETlYxNGpXU2twdWlkbmxaNlpJcVd2NmFJakFBQUFBQ1laVDlCVmNyeXVlUnZKUEh4RTkrUWdPRmlxejNwUGlqWnByRHZ5TG5uZGVqazJmNkVrL2JwWVVyWnNsWXpFZy9vUndIY0V4MVNSaU5xMXBHaUhkbEtzWTNzSnExaFJQNUozKzE1NlZmWlBtcXFqbkJXOXJLTlVmL1ZGSFFFQUFBQXd5WGlDbnJ4bXJXenAybDFIT1N2YThSS3AvdnJMZVo0dHpEeVZJa2UrL1U0U1gzdFRVdFp0MEwyQW53Z01sS0tkMmt1WlcvdExzUmJOOC93K1NUOTZWRFoxdkZJeURoM1dQZGtMS2w1YzZ2N3hzd1NHaGVrZUFBQUFBS1lZMzRPZS9OZEszVHE3MG4xNjVTM3B5TXFTNDR0L2w3ak8zV1RYa09FazUvQlBtWmx5WXQ0QzJYN0RMYkp0NENCSnlXT1Y5ZUFTSmFURXRWMTFsRE4xVkZ2cXpsMDZBZ0FBQUdDUzhRVDk1UHJjSmNzQmtSRlM3SksyT3NvOVZTRis5OFRKc3VPbUFaSzZkWnZ1QmZ5WVN0Ui9XQ2lidTE0bmgrZDhZOGZucWtTWHEzUXJaMWxwYVpMQyt3b0FBQUJ3aGRrRVBTdEwwclp1MTBIT3dodlVsOERRY3lzTXA0cStiYi9qSGpuNDZwdjJYbmVnTU1rOGRseDJEaDRtZTZZK1k3L1h6a1ZFelJvU1dMU29qbktXc2llWEp6QUFBQUFBeUJlakNicmEzcDZSbkt5am5LbXptcytGU3M2MzNUcFFraGI5cEh1QVFpZ2pReEpmZU1WZVJYSXVTWHBBUklRRWw0M1NVYzdTZDVPZ0F3QUFBRzR3TzRPZW1TbVp1VHpPS2FoQ2VkMDZPN1hzTm43WUNEbTViSVh1QVFvM3RZcmt3RnN6ZEhSMjZ1aTJnTkRjRlg3TDJMZGZ0d0FBQUFDWVpId1B1Z243WDN0VFRuejNnNDRBS1BzbVRaT2tGWC9wQ0FBQUFJQ3ZNWHJNbXRvWHZxbExyS1J1ak5NOTJZc2FORkNpaHczVlVmWk9ib3FUTFYydXMyZlJjeTB3ME41dkcxd21TZ0tqU3VsT3dLT3NkMlRHemwyU2NlS0VaSjVJMHAyNUUxcXJodFQrOGxNSmpJalFQV2VXbFpFaGNaMWpKV1hqSnQyVHZaTGR1a3FWYVpOMUJBQUFBTUFVMzByUXJYL3F0dHZ1a0JNTGM3bnYzRDQzdW9PVUhYQ3poTmVySzhIRml1a0hBSS9MekpTMHc0Zmx4TzkveUlIblg3SVNhZXM5bEp1M2FrQ0FsQjh4VE1yZGZxdnVPRE1TZEFBQUFNQjdmR3FKZTlLcTFibE96a05pcWtqMWoyWks5VmRma0tMTm01R2N3N2NFQmtwSVZKU1U2bnlWMUo0eld5bytPVm9Dd3NQMWd6bXdrdmpFbDErVGpLUnptM2tIQUFBQVVQQjhKMEczRW84RHI3NmhnNXlGbjk5QWFzNytTSXBlMUZUM0FMNUxGWFFyYzMwZis0WlRVTWtTdWpkN0dZY095eEYxUGpvQUFBQUFuK0l6Q1hyNmthT1M5TXR2T3NwZWNNWHlVdTMxbHlXa2RHbmRBL2lISW8zT2w4clBUYlZlNUVHNkozdEhQdnRDdHdBQUFBRDRDcDlKMEpOV3JwTE1ZOGQxbEkzQVFLazRkclNFbEN1ck93RC9VcnpOeFZMcWhqNDZ5bDd5bnlzazQvZ0pIUUVBQUFEd0JiNlRvUC8ydTI1bEw3eGVIU25SNFJJZEFmNnA3SUJiSlNBNFdFZlp5TWlRcEpVcmRRQUFBQURBRi9oTWdwNjhicDF1WmE5RWw2dnQvYnFBUHd1clhFa2lXalhYVWZaT3JWNnJXd0FBQUFCOGdVOGs2RmtabVpLMmFiT09zbGZzc2s2NkJmaTNZbTNiNkZiMlV2ZnYxeTBBQUFBQXZzQkhFdlIwTzBrL203QUtGWFFMOEcraDFhdnBWdll5VDNEVUdnQUFBT0JMZkdhSmU2NEU2RDhCZjhkckhRQUFBUEE3L3BXZ0F3QUFBQURnbzBqUUFRQUFBQUR3QUJKMEFBQUFBQUE4Z0FRZEFBQUFBQUFQSUVFSEFBQUFBTUFEU05BQkFBQUFBUEFBRW5RQUFBQUFBRHlBQkIwQUFBQUFBQThnUVFjQUFBQUF3QU5JMEFFQUFBQUE4QUFTZEFBQUFBQUFQSUFFSFFBQUFBQUFEeUJCQndBQUFBREFBMGpRQVFBQUFBRHdBQkowQUFBQUFBQThnQVFkQUFBQUFBQVBJRUVIQUFBQUFNQURTTkFCQUFBQUFQQUFFblFBQUFBQUFEeUFCQjBBQUFBQUFBOGdRUWNBQUFBQXdBTkkwQUVBQUFBQThBQVNkQUFBQUFBQVBJQUVIUUFBQUFBQUR5QkJCd0FBQUFEQUEwalFBUUFBQUFEd0FCSjBBQUFBQUFBOGdBUWRBQUFBQUFBUElFRUhBQUFBQU1BRFNOQUJBQUFBQVBBQUVuUUFBQUFBQUR5QUJCMEFBQUFBQUE4Z1FRY0FBQUFBd0FOSTBBRUFBQUFBOEFBU2RBQUFBQUFBUElBRUhRQUFBQUFBRHlCQkJ3QUFBQURBQTBqUUFRQUFBQUR3QUJKMEFBQUFBQUE4Z0FRZEFBQUFBQUFQQ01peTZMYmpzdExUWlZPWFdFbmRHS2Q3c2hjMWFLQkVEeHVxbzMvS1RFMlZEYTNhUzhhaFE3cm56QnFzWFM2QmtaRTZNaWMxUGtGT3JkK2dJL2l6MEpnWUNhOVhSMGZlY1dUK0Fra1lNRWhIWjFhaVI2ekVUSjZnbzMvS3lzaVF1TTZ4a3JKeGsrN0pYc2x1WGFYS3RNazZBZ0FBQUdBS0NYb2VISno1dnV4K2JLeU80TStpK3ZlVDZNY2YxWkYza0tBREFBQUEvb2NsN2dBQUFBQUFlQUFKT2dBQUFBQUFIa0NDRGdBQUFBQ0FCNUNnQXdBQUFBRGdBU1RvQUFBQUFBQjRBQWs2QUFBQUFBQWVRSUlPQUFBQUFJQUhrS0FEQUFBQUFPQUJKT2dBQUFBQUFIZ0FDVG9BQUFBQUFCNUFnZzRBQUFBQWdBZVFvQU1BQUFBQTRBRWs2QUFBQUFBQWVBQUpPZ0FBQUFBQUhrQ0NEZ0FBQUFDQUJ3UmtXWFRiY1ZucDZiS3BTNnlrYm96VFBkbUxHalJRb29jTjFkRS9aYWFteW9aVzdTWGowQ0hkYzJZTjFpNlh3TWhJSFpsemN2VWFPZjdqenpyeXZ1US9WOGp4UlQvcHlGbmxCOThyRXVTLzkza2lHcDB2eGRxMTBaRjNISm0vUUJJR0ROTFJtWlhvRVNzeGt5Zm82Sit5TWpJa3JuT3NwR3pjcEh1eVY3SmJWNmt5YmJLT0FBQUFBSmhDZ2w0SUpMNDVRL1k4Y2VaRUxiOGF4cTJSZ09CZ0hjRXQvcHlnWjZXbFNWYW1zY3RTNFJNZ0VoZ1NZdjFwTlFBQS8wT05NOFdGajUyQTRDQUpDQXJTVWNGejlmT1d6eUlnMTBqUUN3RVNkUC9qenduNnRxSEQ1TlNLbFRwQ2ZnV1ZLQzYxUG41ZkFrTkRkUThBNEhSeDNmdEkrbG5HbUU0b1Avd0JLWDNWRlRvcVdCbEpTYkxseGxzazQvQVIzV05XWkl0bUVqUCtDUWtJWkhjdGNEWWs2SVVBQ2JyLzhlY0VQYTdmelhKeThSSWRJYjlDYTFTWHV2TyswUkVBNE4vV3RXd242UWNPNk1pYzZFbmpwVXozV0IwVm9NeE0yVDUwbUJ6N3lwM1BodUFLNWFYMjdJOGxwRnc1M1FNZ0o5ekdBZ0EvRmxhcnBtNEJBQ0NTK05FczE1THpnTEF3cVRKMUVzazVjQTVJMEFIQWo0V1dMNjliQUlEQ0xubmRldGt6N2lrZG1WZHV5TDFTckVWekhRSElEUkowQVBCallZMGE2aFlBb0RETE9INWM0Z2MvS0ZrblQrb2VzNHBkY1ptVXUrMFdIUUhJTFJKMEFQQmo0VFZyNkJZQW9OREt5cExkazU2VzFDMWJkWWRaSVpXaXBjcjRzUlNGQS9LQWR3MEErS3VnSUFtclVFRUhBSURDNnZBMzM4cmhEejdXa1ZtQmtSRVM4OEl6RWx5eXBPNEJjQzVJMEFIQVR3V1ZLaVdCeFlycUNBQlFHS1hFeDh1dWthUHRXWFRqZ29La3dxaEhwTWo1Yks4Qzhvb0VIUUQ4VkZEUkloSVlGcVlqQURBck16TlRUcDQ4S1ljT0haS3QyN2JKMHFWTEpUVTFWVCtLZ3BCNUtrVjJESDVRTW84ZjF6MW1xYU5aeS9Uc3JpTUFlVUdDRGdCK0txUnlKUWtJQ3RJUkFPU05TcnpUMHRJa09UbFpFaE1UWmZQbXpiSjQ4V0o1Ny8zM1pkejQ4VEo0eUJDNU5qWldhdGV0SytmVnF5ZDFySzk2RFJwSTY3WnQ1YmhMaVNIT1FPMDdmMnF5bkZxNVduZVlGZDZvb1ZRZU8xb2tJRUQzQU1nTEVuUUE4Rk9oVldOMEN3QnlwaEx3QXdjT3lOcTFhMlgyN05ueTRrc3Z5V09qUjB1L20yNlNpOXUxazZiTm10bEpkNldZR0tuWHNLRzA2OUJCYnI3MVZubDg3Rmg1d2ZwdnY1azdWK0xqNDJYdjNyMXk1T2hSTzZsSHdUcTY2Q2M1L1A1SE9qSXJzR2hSaVprK1JRTER3M1VQZ0x3aVFRY0FQeFZLZ1RnQU9UaDI3SmhjZXZubFVyZCtmWWtzVmt5aXExU1JKazJiU3ErK2ZlWCtJVU5rd2xOUHlVY2ZmeXpMbGkyVDlSczJ5TzQ5ZTBpOGZVVHE3ajJ5Yy9nSXlVcFAxejBHQlFSSTlKT1BTM2pWcXJvRFFINlFvQU9BbndxL29KRnVBY0QvVXZ2REYvLyt1MnpaNnM3UlczQkhwdlY3algvb0VjazRkRmozR0dRbDUxRURicGJTWFR2ckRnRDVSWUlPQUg0cXZFb1YzUUlBRkJiN1gzMWRrbi83WFVkbVJWN1VWQ29PSGF3akFFNGdRUWNBUHhRUUVTRWhaY3JxQ0FCUUdCeGZzbFQyUC9lU2pzd0tybGhCcWo0M1ZRSkRRM1VQQUNlUW9BT0FId291WDA0Q1FvSjFCQUR3ZCtsSGprakNzSWVzaHZsOTV3R2hJVko1OGdRSktjdU5ZTUJwSk9nQTRJZENTcGFVZ0VBdThRQlFHS2hpY1BIREg1SDBYWHQwajFsbDdycERpcmRxcVNNQVRtTDBCZ0IrS0tSR05jNmlCWUJDNHNEYjc4aUorUXQxWkZiUjl1Mms0cjJEZEFUQWFTVG9BRHdscEZ4WkNhMVMyYld2a0lvVjNVbGtyZThSVWluNmpQOEdFMThSOWV2cmJ3d0E4R2RKSzFmSnZxblA2TWlzRU92ekpXYktSRzRBQXdZRlpGbDAyM0ZxdWMybUxyR1N1akZPOTJRdmF0QkFpUjQyVkVmL3BJNkwyTkNxdldRY09xUjd6cXpCMnVVU0dCbXBJL3d0OGMwWnN1ZUpDVHB5VnNPNE5SSVF6RDVYdHgyWnYwQVNCdVI4OTdwRWoxaUptWHptMzN0V1JvYkVkWTZWbEkyYmRFLzJTbmJyS2xXbVRkYVIvemtWSHk5eGwzVTJmbFpzWUpFaVVtZkJkeEpTSmtyM0FFREJTa3hNbEtvMWF0akhyWm15ZDljdWlZcnk5blZ2WGN0MmtuN2dnSTdNaVo0MFhzcDBqOVdSTTlLUEhaTzRiajBsYlVlODdqRW5NQ0pDcW4vd2poUTV2Nkh1QVdBQ00rZ0FBQUNBRDlyMXhIaFhrbk1KREpUeWp6NUVjZzY0Z0FRZEFBQUE4REVIUDUwdFJ6LzdRa2RtbGVqYVdjcjA2cWtqQUNhUm9BTUFBQUErNUdUY1p0a3pacHlPekFxcmM1NVVHVGVHazBFQWwvQk9nMDlSOVFpMjlydFoxbDNRd3ZoWDNMVTlKT05Fa3Y3T0FBQUFCUy9qeEFtSnYvOEJ5VXd5UDBZSkxGWk1ZcDZmWnU4L0IrQU9FblQ0anF3czJUZjllVW42OVhmSk9ITFU2RmRtOGttcE9IcWtCQlV0b3I4NUFLQ3d5TXpNbFBUMDlETitaV1JrV0I5SHh1cnJBam5Lc2w2YnV5ZE15bFdSMTN3TENwVG9NYU1rb2tZTjNWRjRxZmQ4VHRjRjlSamdGS3E0RndMK1VzWDkyTSsveUk1Yjd4VHJTcWg3ekNsNy85MVNZZkM5T3ZJZXFyZzdoeXJ1dmk4bEpVWFdybDByZjYxY0tmdjM3NWNEaVluNkVaR3cwRkFwV2JLa2xDMWJWbXJYcmkzMTZ0YjFmRVZwdUNjcEtVbTJidDBxcTFhdmxqMTc5c2kyN2R0bDQ4YU5jdXJVS1RsNTh1UVpCOTBSRVJFU0VoSWlwVXFWa2diMTYwdWxTcFdrYXRXcWRydHk1Y29TN0VNbm0xREYvVDk4cVlyN2tlKytsL2g3aHFpN1NMckhuTkw5KzBubFVZOFV1aVBWMHRMU0pONGFHeXhmc1VJU0VoSWtMaTVPTmxsZjZycVFuSnlzLzZ2L3A5N3pZV0ZoVXJ4NGNXbllvSUY5SGFoV3JabzBidFRJdmo3NDBqVUIza0NDWGdqNFE0S2V1bnVQYkxaZVN4bUhqK2dlY3lKYnQ1UWFNOS8wOUY0ckVuVG5rS0Q3cHFOSGo4cmNiNytWRHo3OFVINzg2U2M3MGNxdE91ZWRKNDgvOXBqMDZORkQ5NkF3VU1uMnRtM2JaUEh2djh1aUgzK1V2Lzc2UzFhdVdxVWZkVVo0ZUxnMGI5Wk1McmpnQW1uVnNxVzBiTkhDSHFCN0ZRbjZmL2hLZ3A2U3NGUGlydWt1bWNlTzZSNXpJaTVzSWpWbnZpMkI0V0c2eDMrcDE3KzZ3ZnZMTDcvSS9BVUw1UGNsUytTWVE4OXhwSldYdEczVFJ0cGZjb20wc0s0SHpTNjZ5TDVPQURraFFTOEVmRDFCejB4SmthM1g5NWVUeS8vU1BlWUVsUzBqdGIrZUxTRmx5K29lYnlKQmR3NEpldTc4YmlVMTY5YXYxNUV6THJJR0tvM09QMTlIdVhQQUdrUy8vT3FyTXVYcHA4ODRrNUZic3o3NlNMcGRlNjJPenQyc1R6NlI0OGVQNjhoNVYxNXhoVVJIUit2SUdaOTk5cGtjT1hwVVI4Njd4QnFBMXZUWVVsaTFISDNUcGszeTJlelo4c21ubjhyNkRSdnNQcmNFQlFYWk40UjY5ZXdwVjExNXBUUm8wTUNlYVROcDFhcFZzdXpQUDNXVXN4TW5Uc2hESTBiWVMzUk5lWHJ5WkNsYXRLaU84cTU4K2ZMUytlcXJkZVFzWDBqUXM5TFNaSE8vbStYa3N1VzZ4NXpnY21XbDF1eFpFbHFodk83eFArbzFyMjdRZldoOUZyejczbnR5OE9CQjQxdFhBZ0lDcEZpeFl0S2plM2ZwZC8zMTByeDVjK1BYZ3pOUk55cy8vK0lMT1hMRTdLUlg2ZEtsOC9VNW0xZnE1M3RuNXN3enJvQnlpcnJKMHJ0WEwvc2Fid0lKZWlIZzB3bTY5ZkxjODh6emt2anNDMVpiOXhrU1lGMGtxNzc5bWhScjJWejNlQmNKdW5OSTBIUG4vaUZENU1XWFh0S1JNKzY3NXg1NWVzb1VIZVZNRGFabXpab2xReDk4VUJLdGdWUitxT1dHZi83eGg5U3ZYMS8zbkJ2MXNkbW9TUlBac0hHajduSGV0OTk4STUwNmR0U1JNNW8yYTJZdjVUYmxuYmZmbHI1OSt1aW9ZS2tWRmQ5Ly83MU1zbDVmYWhDdWxxd1dORFdRVTB0ZkI5eDZxLzA4eGNURTJBTjJwMDJkTnMxT3V2Mk5TbW8rc0JJcEV6eWZvRnZYbkYwVEpzdkJOOTdTSGVhb01WM1YxMStTNG0zYjZCNy9vbTdzZmo5dm5qdzFhWktzK09zdlYyL1luVTY5OTZ0WHF5YUQ3Ny9mVHZSVU11dW0yd2NPbExmZmVVZEhacWliRWJzVEVseGZNYUMyTGRVLy8zeWp2OXNPN2R2TGQzUG5Hcm1HS3hTSmc2Y2QrMjJ4SEh6aEZlUEp1ZlVPa3pLREJ2cEVjZzc0aTRTZE8zVXJaNGNQSDVicmI3aEJicjd0dG53bjU0cWF6Vk9KRXZ5UFdxcjYzdnZ2MnpjamV2WHRhODhrZXlFNVY5UmdjY2VPSFRKcTlHajdCcysxc2JHeWRObXlBa3NRZkUzclZxMTBxL0JSTlhnT3pqQ2JUUDJ0ekYyMysyVnlybTd5ZnZubGw5S2thVlBwMmJ1M2ZXMG95UGVldXRHN2RkczJ1Vy93WUtuWHNLRThQWFZxdmxhRm5hdGV2WHJwbGpscWxabXFEK08ySlV1V0dQL2Q5ckZlUTZhU2M0VUVIWjZWZGlCUmRqM3dzUEdaVFNXeVdWTXBmOWRBSFFGd3d4cnJnL3RzaTdqVW51RzI3ZHZMN0MrK2NHeTVXcGt5WmV3NysvQWY2blgwODg4L1M1dDI3ZVRtVzIrVkxWdTM2a2U4S2Zua1NidUdndnIzWG5IVlZmWVdFdVNzUmlHdEpKNjZiNzhrREgvRXlqRE5KNU5GMmw0c0ZlNjlXMGYrUTIzUHVycExGK2x1SmFYcU04VnJEaDA2SkE4LzhvaDlZL0dMTDc4ODYrZWlFeTZ4cmoycTBLVnBjNy83VHJmY00zL2hRdDB5UTYwSXVDNDJmOFVlejRZRUhaNms5bG9sUFBpUXBGc2ZUS2FwdlZZeHowK1hnSkFRM1FQQURjZU9IclVyWldkSFZjN3RlT21sZGxWdEoxMTR3UVZHNzN6RFhXb2Y5ZEFISHBETHJyelNYckxxUzlSTkoxWGtVTjJFNnQ2enAyemM1TUxSV1Q1STdkTlZWZklMRzdYRk0rSGhSeVRqd1ArZlRHRktjTVVLRWpONW9nUVkybE5iRU5TS21zbFBQeTB0V3JXU2hZc1c2Vjd2MnJ4bGl6MjczKyttbSt4Nkt5YUZob1pLZDhOSnBySjQ4V0xkY29lNnBxb2lvQ2FwbXh2cWRCaVRTTkRoUFZsWnN1K2xWeVhwcDE5MWh6a3FLYTgwYVp5RWxDMmpld0M0NWRqeDQvYnk5VFBadlh1M1hHNGxYRHQzN2RJOXppbU1BMzEvcFdiRDJuZnNLTSsvK0tMUEx4WC84cXV2NUtMbXpXWHNFMC9ZTngzdy8wS0NnNlZDaFFvNktqejJ2L0cyTzJPaGlBaXArdngwdnhvTHFXTVR1MTV6alR3eWNxUjlQSnF2VUxQbkg4K2FaYyttLzdGMHFlNDE0N3JycmpOK3Mxb3RjVGQ1U3NTL3FhTXkxVllpazI3czEwKzN6Q0ZCaCtjYy8zMkpKRDcvc283TWlocHdpeFMvcEoyT0FMaEp6WjZyczJiL1RSWDQ2dFduajVIa1hGSFZ4dUg3bGxxRFY3VkUzT21qMGdxU1NpU2VHRGRPV2w1OHNheFlzVUwzb203ZHVvWHVhS3JqZnl5VkE5T2YwNUZCZ1lGU1lmaFFLZEtrc2U3d2ZTdFhyclN2RFF0OFlOWThPM3YyN3JWdlVzOTg5MTFqUzk1VlhRZDFESnhKdTNidk5wNHduMjdldkhtNlpVWkVSSVI5eW9wcEpPandsTFQ5K3lYaC9nZnRKZTZtUlRTL1NDb012VTlIQUFxQ3V0dDlPclU4YmNnREQ4aVNQLzdRUGM0S0N3MHR0SHRaL1lrNnIvaUtxNitXL1M1VTNpNElhbHRIMzM3OVhKMTU4ckthTld2cVZ1R1FmdXk0N0J6K2lDczFlSXBmZVptVTZYZTlqbnlmV2xMZHZsTW5pVTlJMEQyK1M5MnNIbmpublRKdCtuUWpTWHFSSWtXazJ6WFg2TWljYjEzYWg2NmVvM2svL0tBak05VHBLaVZLbE5DUk9TVG84QXoxUWFRS29iaXgxeW9vcXJURVRKMWsvQXgzQURuNzdWLzcwOVR4TjJyR3dKU3laY3RLS2NON3gyRFcrdlhyN1JVV0pzK2g5NExKVHoxbDd4T0ZTTE9MTHRJdC82ZU9RVTBZT1VyU0VuSjN5a1YraE5hdUtWVW1qcE9BUVA5SUIzNzg4VWU1cWtzWHY5b2lvcXJQanhnNVVwNTU5bG5kNHl4VmpkeTB4UzRWd1R5VmtpSi9HTHE1LzdjQnQ5Mm1XMmFSb01NejlyLytwaVQ5K0l1T3pMSDNuVThlTDZHVm9uVVBnSUp5K2hMM28wZVAya2ZPcUFHSktlWExsN2NMVHNFM3FXckhzVDE2eUlGRTh6ZHlDOUtkQXdkS1Z5dlJ3SDgwYmRwVXQveGY0cnZ2eS9GdnpNODRCaGFKbEpqcFV5U29TQkhkNDl2VXFxdHUzYnZiczg3K1JxMHNHL2JRUS9MZWUrL3BIdWUwYk5sU2loY3ZyaU16MUxGbktWYnliTnJtdURqWnUyK2ZqcHluenFwdjE3YXRqc3dpUVljbm5QaGpxZXlmUEYxSFpwVWVjTE9VNk5CZVJ3QUtrcG9OL2RzYmI3NXAvQWljcGhkZVNBVjNINldXTDZxQ1QxdTJiTkU5L2trVk1ad3dmcnlPb1BhZVY2dGFWVWYrTFhuTld0azdlYXFPREFvTWtJcGpSa2xrM2JxNnc3ZHQzNzVkdXZmbzRmZkZGZSs4KzI3SHQzK3BhdVJYWDNXVmpzell0MysvN0xlK1RQdG03bHpkTWtNdGIzZnJpRllTZEJTNDlFT0hKR0hJY0hXTFVQZVlFOW1pbVZRY3dyNXp3Q3ZVSG1LMVZEa3hNVkhHakIycmU4MVJ4YWJnbXhZdFdpUnZ6WmloSS8razlvUysvZWFiVXJSb1VkMkRraVZLU0ZSVWxJNzhWL3F4WTdKajhJT1NkZEp3eGZHQUFDbmQ3M3FKNm5hdDd2QnRhc2E4ZDkrK2RoTG83MVFSeVJ2NjliTlhFam5KZEZWeU5Ydis3KzFzVGxPckRFenVkVmMzOXUrNC9YWWRtVWVDamdKbG4zYytiSVNrNzk2amU4d0pLbFZLcWt5ZnpIbm5nSWVvNWV6Nzl1MlQ5OTUvWDVKek9CUGRLZXI4VXZnZTlUb1pOWHEwUFFqelYyb0FPT0toaDZSSmt5YTZCMHI1Q2hYc3lzbCtMU3RMZGowNVFkSzIvYk5vcGduaDlldEo5RU1QMm9tNlB4ajc1Sk95M01VVEQ0S0NndXhpbzJwbGgvcFNXNlpDckhHbFd5dXpkc1RIeTUyREJqbDZMV3plckptVUtXUDJpTDF2di8xV3Q4dzRldXlZckR0dFJaN1RvaXRXbEdiVzgrUVdFblFVcVAxdnpaQVRDMzdVa1VIV2hUTjYvQmdKTFlUbnFBSmVwcXBVcjkrd1FWNTYyZnpSaW1vZ1ZhMWFOUjNCbDZpcTdhWXErM3VGT3ZKbzZKQWhPc0xmR2pkcXBGdis2OUNYYytUb1oxL295SnlnTWxGUzlhWG5KTkJQanF6NytlZWZaZXEwYVRveVJ4VnJ2T0x5eStXRjU1NlRYMy82U2JadDJTSjdkKzJ5di9iczNDa2IxcTZWYitiTXNXK3cxYTlYVC8rL3pQbksrbDVPemhhcnF1UWREQjgvK3JOMURjL0l5TkNSODlUSkYwNnZMRGhkKy9idGpSOUpkem9TZEJTWUUzOHNrd05UbnRHUlFWWnlYdnEyL2xMeXlzdDFCd0F2ZWZPdHQyVEwxcTA2TXFkcTFhcXVmc0RDR1dyditiUFBQNjhqODZwVXFTSTMzM1NUUEQxNXNzeXpCc0ViMTYyVHJYRnhzbS8zYnRtMGZyMnNXNzFhNW4vL3ZUejN6RE15Y3NRSXVhWnJWNmxYdDY0RTUrTlVrS2pTcGVXZEdUUHNtVGo4VSszYXRYWExQNTNhdmtOMmp4NXJ6NktiRkJBU0xKVW5QQ0ZoZmxJZ1YrMDNIekJ3b0k3TVVMUGl2WHIydE4vemM3NzhVZ2JlZnJ0ZHNGQ2RCcUsybzZndnRTYzVKaVpHTHUzVVNjYU9HU1BMbHkyVDJaOStLdWMzYktqL0Z1ZXBGVVgzRHg3czJKNTc5WFBlY0wzWm8vWlVZYys5ZS9mcXlIbmZXZGRrazl4YzNxNlFvS05BcENVZWxJVDdIM0RudlBNTG0wakZCNW1WQUx4cXp0ZGY2NVpabGFLajg1VkVvV0FjUEhoUWZ2cjVaeDJaVTcxNmRYbHY1a3c3SVgvdDFWZmx2bnZ2bGZhWFhHS2ZtNitTZGxYQlYvMDNLbUZzMTY2ZDNIbkhIZkw0Nk5IeTZheFpzdUxQUDJWWGZMeDgvT0dIOWtDM1N1WEsrbS9OblNtVEprbU05VDN3di94NVcwcEdjckxFVzJPaHpPUG1pNXRGM1hhTGxPallRVWUrYjlLVUtiTFZZRkhSNGxiaVBYUEdESG4zblhmc203dTVwWmJBZCtuY1dSYi8rcXVkMEp1eWZjY09lZjZGRjNTVWY1ZFkxenBWTU02VVpPdTEvcWQxblRSQjNjVDk0Z3R6SzFEVTcvOGlsNDk2SkVHSDY3SXlNMlhYNkxHU3Z0ZmNVUWgvVTh1NVlwNmRLb0VjcXdRVWVtNS93TUlacTFldnRvL2dNK25pMXEzbGo4V0w3ZG15dk14aXEwRzVTdUJqdTNXemk3eXRXN05HZmxxNFVIcjI2SEhXSTR4dTZOdFhicmpoQmgzbG43cHhzTk1hdk9mbWE5V0tGY2JQV2wvMTExOW4vTjY1L1ZMN1kvMlJHZ3Z0Zm1xS25GcXpWdmVZVTZSTmE2azQ5SDRkK1Q2MUQ5dko1UFRmMUVxckQ5OS9YM3IzNm1YUEx1ZUYybEwxN1BUcGN2Kzk5K2I1N3ppYnFkYmY3OVMxVWEwR3VMUmpSeDJaTVgvQkF0MXlscW9RYi9KMGo4c3Z2ZFQxMVUwazZIQmQ0dHN6WFRualU0S0RKSHJDRXhJYVhWRjNBQ2pNYXRlcXBWdndKYVpuejFWaS9jRjc3ems2ZTZTS1I3VnExVXJlZi9kZGUzbnN4UEhqN1JVYy94Nm9xNW4ycDU5KzJ0RUJ2RW91MUhuL3VmbFNTM1ZOSzJkOWp6Tjk3OXgrcVpzZi91am9Ed3ZrOEFjZjY4aWM0SExsSkdieVJBbndvK2R4aXZXZVVhZC9tREo2MUNpNTdMTExkSlIzNnJVN2Z0dzRZNnRBRGg4K0xLKys5cHFPOGtkZGc5UU5TcE4rK2ZWWDNYTFdYeXRYR2kweWE3cksvWm1Rb01OVlNTdFh5YjRwNWd0NktLWDY5cGFTbmZ4bk9SZUEvRkd6cFBBOUppdnpLcGRiQS9HS0ZjM2R5RlZKNWdORGg5cXo2bXJmdXRxdnFxaEswRysrL3JxOS94eUZTOHF1WGJKenhDZ1JnMFd6bElDd01JbDVmcXFFbEROL0k4WXRPM2Z1bExjTkhyZllvbmx6ZTN1TFU5UUtsUmVmZjE0aURaMUU4SnAxRFZGNzBwMmdia29VTVZpblpjM2F0ZlpOQmFjdE1EUXpyNml0UjgydDE0VGJTTkRobXZSRGh5WGgzcUhtei9pMGhEZW9KOUdQUHF4dUNlb2VBSVdaV200WWN3NzdDT0VkYTlldDB5MHpxcnRVMlYvTmJOOHhjS0M5ckh6VXlKRXllUEJnZTk4bkNwZE1mYnhzNXBFanVzZWN3S0pGSk16UFRxNlkrZTY3OW5uZ3Bvd1pQZHJ4V2lXcWJzV3R0OXlpSTJkdDI3NWRGaTVjcUtQOEtWcTBxSFRwMGtWSHpsTkh3NmxxN2s1Uys4OU5Gb2pyMnJWcmdhemlJVUdISzdMUzB5WGhvVWNrTFdHbjdqRkhmU0JWZVg2YUJCcmVWd2VnWUtnallhNis4a29aLytTVDlwRTNDZFlBNWVqaHczTE0ranA2NkpCczM3SkZmck1HQVdyLzMxMTMzR0dmSzkzbTRvdnRHVXY0bnNURVJOMHlJODJGWXFXblUzczlIeHMxU3A0WU04YlkzbFI0MS82WFg1UGtKVXQxWkZiR3dVT3k4L0VuN2YzdS91RGt5WlB5bk1HOTU2MWF0cFNPaHZaaDMzUDMzY2IyTWIvbDRJb0NWVGZEcENWTGx1aVdNL2JzMlNNYk4yM1NrYk9DQWdQbCtyNTlkZVF1RW5TNEl2SERqK1hFL0VVNk1pY2dPRWdxVFo0ZzRaeDFEUGlkcUtnb2VmeXh4K3dxMjE5OC9ya01lL0JCZStsWmhRb1Y3T1dERWRhWG1xV3NWS21TTkx2b0lybnJ6anZsMldlZXNZdC9mVEY3TnNrUXppaHU4Mlo3RnNadHZCNExwK0F5VWJybGp1Tnp2NU5EbjMrcEk5LzJ3L3o1Y3VEQUFSMDU3NWFiYnpiMnZxeG1qVXNiblgrK2pweWw2blFrSlNYcEtIL2F0VzFyZjVhYW92NnRUbDV2ZjdjU2ZxZVcrUDliNWNxVnBlbUZGK3JJWFNUb01DNTV6VnJaTjI2U1dvZWllOHdwcWZhZFg1SC93aDRBdkVNTmw5U3hOU3VXTFpPUmp6eGlKK3JuUWcyNDFCSjMrQ2JUaWV5Q2hRdGxtOEhqbW9EVFJmWHNMcEhObXVySUJkYllhOCtURXlUTllHTHJsbG16WnVtVzg5UUtxNjRHbDNlclpkTFh4Y2JxeUZuNzl1MlRwVXVkV1pWUnFsUXB1MnE1S1dvZmVtcHFxbzd5YjlFaWM1Ti8zYnQzTDdBaWxTVG9NQ3JqeEFsSkdEcGNzZ3p1Ri9wYldQMjZFdjNJY0RXYTB6MEFmSjM2Y0x6Ly92dGwxa2NmR1Mza0JlOHlmY3lXcWdaOWRkZXVrcENRb0hzQWN3S0NnNlhTRTQ5TGdJdkhObVVlUFNZN1I0MXhaYUxFbEpTVUZKbnp6VGM2Y2w0ejZ6cFRwa3daSFpseG1jSEU5K05QUHRHdC9PdlZxNWR1T2UrRWxSY3NYNzVjUi9tbmJyQ2FvRzdZOUwvcEpoMjVqd1FkeG1SbFpNak9rYU1sTmM3YzJZUi9DeXhXVkdKZW1DNkI0ZUc2QjRBL0dIVG5uVEpwNGtUSGkvYkFkMVJ6b2JpZk9rTzNXY3VXOHNHSEh6bzZ1d09jU1VUdFdsTDJ2cnQxNUk3ajgrYkxRUjllNnY3cmI3OFpQVnF0aytFendKVzZkZXZxbHZOVThUVlZoTTBKNmxnNFZTdkRGTFZWd1FtN2R1ODJ0dis4WnExYWNsN3QyanB5SHdrNnpNaktrc1QzUDVSalg1bTcyL2xmZ1FGU2NleGo3RHNIL0V6bnE2NlN5Wk1tR1YvaURHOXIxS2lSYnBsMThPQkI2WC9MTGRLMGVYT1o5Y2tuY3ZUb1VmMEk0THh5dC9hWHNMcDFkT1NPdmVNbVN1cWV2VHJ5TFY5Ly9iVnVPVTk5eG5SbzMxNUg1b1NIaDh2NURSdnF5Rm03cldUMTBLRkRPc29mZFRSa0c0UEhrcXJ6MEozWWh6NTM3bHpkY2w3MzJOZ0NuUmdnUVljUnllczN5TDZKVTl6WmQ5Nnp1NVMrdHF1T0FQaUQwcVZMeXlzdnYxeGcrNy9nSGVwY1lyZHUwcWhCNDRZTkcrVDZmdjJrYm9NR2N1Lzk5OHV5WmN2czViV0FrOVNLdjhxVHhrdUFpNmRMWkJ3K0lnbVBqTEpYT1BvU1ZRVHN4NTkrMHBIejFQRmk2aWcwMDlSMXJHS0ZDanB5MXJGangreUNsMDdwMzcrL2JqbHYwNlpOanF4VU1yYThQU3hNYnI3NVpoMFZEQkowT0M3aitIRkp1R2V3WkNXZjFEM21oTmFxSVpWR2oyVGZPZUJIMUNEbXliRmo3YnY0UUkwYTFuVStPbHBIN2xISHU3Mzh5aXZTcWswYmFkU2tpVHd3YkpoZGlNbnRZOW5ndjRyVXJ5ZWwrL2ZUa1R1U2Z2bE5EczMrUWtlK1FTMXRYNzkrdlk2Y3AwNy9LRm15cEk3TUttSHcrNnhaczBhMzhxLzlKWmRJOGVMRmRlU3NuYnQyeWZidDIzV1VOK3FtNmRKbHkzVGtyQWIxNnhmSVo4N3BTTkRockt3czJmWDRrNUs2YllmdU1FZnRPNi82OHZNU2FQQTRDQUR1VS92MGJ1em43cUFWM3FVR3o3SGR1dW1vWUd6ZHRrMmVmZTQ1YWQyMnJkU29WVXY2M1hTVGZEeHJsbDA5R2Nnek5hTTYrRjRKcVJxak8xeVFtV2xYZFUvWmJuNmM1aFNWektVYXZER205aHFIdXJTU29WelpzcnJsdk44V0w5YXQvRk9ucGJSczBVSkh6cHY3N2JlNmxUZnhDUW41VHZLejArM2Fhd3Q4OVI0Sk9oeDFjTmFuY25TMkMwVklyRGRPeGRFakpieG1EZDBCd0IrbzJmT0hodyszOStvQmY3dm43cnM5YzFUZVhpc3AvK2pqaitXR0cyK1VLdFdxU1l0V3JXVE0yTEd5Nk1jZmpSYXhnbit5bDdwUGVNTFZsWUNaeDA5SXdxT2pmV2FwdXlxQVpsTFZHUGR1a0pRclYwNjNuTGRueng3ZHlyL0F3RUM1eWVDTjh2eHVXZmpoaHg5MHkxbWhJU0ZHbC9mbkZnazZISE55NHliWk0vcEpWL2FkbDRpOVJrcGZWN0F6S2dDY1Y3bFNKZnZ1TlhDNjZ0V3JTNC91M1hYa0hXclArdklWSytUSjhlUGw4aXV2bEVyV1FMOVhuejd5c1pYQXE4R3lFNFdRNFArS3RXZ3VwYTd2clNOM0pDOWVJZ2RtdnFjamIxT25MSmhVcW5ScDNmSnRjWEZ4dXVXTUs2NjR3dGpLZ3BVclYrYTV0b2U2cm41ajZNaTlwazJiR3FzVGNDNUkwT0dJaktRa2liLzdmbmZPTzY5N25sUitZalQ3emdFLzFLZDNiM3RKTTNBNnRiSml6T2pSVXF4WU1kM2pQV3JRZVBMa1NabjkrZWR5dzAwM1NmMkdEZVdLcTY2U3p6NzdqSmwxbkZXRndmZEtrT0Z6dVA5dC85Um41SlFQTEhWWE44Rk1lbnZHREtsZXE1WXJYMDlQbTZhL3EvTU9Iam9rcHh3Y2g1Y29VVUxhdG1takkyZXBsVWpxbUxTOFVOZlRQdzI5SnE2OTVocjc4NmFna2FBajM3SXlNLyt6NzN6TE50MWpUa0JFaEZSNTVtbk9Pd2Y4a0ZwYU51QzIyM1FFL0ZQVnFsWGxpVEZqUERGNHlvMFRTVW15Y05FaTZYMzk5Vkt2UVFPN3lOeU9IVHVZVmNjWmhaUXVMWldlZkZ5dExkWTk1bVVtSmN2T2gwZEtWbnE2N3ZFZVZaVFJ5YVhiWjZJU3ZwMDdkN3J5cGFxdG02TE9RVmMzQ1oyaXJyVTllL1RRa2JQVTcxVVYzY3lMelpzM3k0RURCM1RrSFBYejNtQmRyNzJBQkIzNWR2aUxyK1RvcDUvcnlDRHJqVlB4c1JFU2NaNzVvekFBdUs5Ky9mcDJFZ1prNTQ2QkErWHFxNjdTa2UvWXQzKy9YV1N1VnAwNjB2ZUdHMlRGWDMvcFI0RC9WNkpqZXluV3FZT08zSkc4OUU4NThQNkhPdklldFF6NkZNY2M1azVXbHVPblRKaWNVZjVxemh6ZE9qZnpETzAvdjdoMWE2bmdnZVh0Q2drNjhrWHRPOTg5WXBSOVVUQ3RlTGV1RXRXN3A0NEErSnRPblRweDdqbHlGQndjTERQZWVrc3VhTkpFOS9pZVR6Lzd6QzRzcHhKMWRSNHc4TGNBNi9wWGVleG9DU3JsenBGZmY5cy9hYXFjM09Ucy9tV25xUE95ODdwWHViREp5TXgwZklhK1RKa3ljdmxsbCtuSVdVdisrRU15OGxDbzhMdnZ2OWN0Wi9YdDAwZTNDaDRKT3ZJbC90NGhrcFdTcWlOelF1dlV0ajYwSHJObjBRSDRwK3M5OU9FSTcxTDdJci8rNml0cDByaXg3dkU5YXBuN0o1OStLazJiTjdjcndDY25KK3RIVU5pRmxDc3JGUjU5V0VmdXlEeDVVaEllZkZneXJXVFlhMVRDZWZUb1VSMmhJUFRwMVV1M25MVnY3MTU3MmYrNU9IandvUHk1ZkxtT25CTVJFZUdwQXJVazZNaVhOSmZPTzQ5NWRxb0VGUzJxZXdENG0wclIwVkt2WGowZEFUa3JXN2FzelB2dU83bjgwa3QxajI5U0JaMVVCZmlMMjdhMTkxVUNTdFExMTBqUkR1MTA1STVUYTlmSi9sZGYxNUYzcUp0WjFHMG9XQjA3ZHBTUWtCQWRPZWVrZGYwNzErMCthOWF1ZFhTZi9kL2FYSHl4MFNQd3poVUpPanl2L01NUHN1OGM4SE5ObWpReE1nQ0EveXBac3FSODl1bW5NdVQrKyswemUzMlpHblMydmVRU21mdnR0N29IaFZwZ2dFU1BHaWtCTHAvOWYrREZWeVhaU3RTOUpOMUh6bXIzWjlIUjBYSnhxMVk2Y3RiWFgzK3RXN216YU5FaUl6ZHNialI0NW50ZWtLREQ4OUpVOVU3dW5nSityUnJGNFpBSFlWWUNNK21wcDJUV1J4OUpsY3FWZGE5dlNqeDRVSHIwNmlYdnZmKys3a0ZoRmw0MVJzb1BHK0xxMXI2c2xCVFpPZkl4eVhLNDBGaCtzUDNERy9yMjdhdGJ6anJYNWVyejU4L1hMZWVvYlZPbTl0bm5GUWs2UE8vZ3EyL0tzWjkvMFJFQUFQOTBUZGV1c3VxdnYrelpkRFhZOGxXcUlOYUFnUU5sMWllZjZCNFVabVZ1NkN2aERkemQrbk5xOVZyWis4SkxPaXA0eGRqZW1HdHFKVkZrWktTT25OV2hmWHY3aHFqVDFPcWgvZnYzNnlobmlZbUpzdlRQUDNYa0hIWFdlMVJVbEk2OGdRUWQrUkxab3BsdW1aT1ZtaVk3SHh3aHFidk5ub01KQVBCZFJhMkJ2SnBOLzhzYXdQWHUxY3ZZUU5XMDlQUjB1ZjJPTzJUNWloVzZCNFZWWUdpb1ZKazBRUUxDM1YzcW52ajYyNUswYXJXT0NwYXBJNzc4a1hxbTFFa1hKcWdqVUJzMmFLQWo1NmpsNnI4dFhxeWpuQzMrL1hmNyt1aTAvamZkcEZ2ZVFZS09mS2t5OVNrSkttUCtybFBHZ1VTSkgveUFKeXVNQWdDOG8zTGx5akp6eGd4WnVYeTUzSHZQUFJKVnVyUit4SGNrSlNWSi81dHZabmt2N0JvOFpXNi9UVWZ1eUZKVjNZYy9ZbGQzTDJpcU5nbjFTWElud09BTXVwcWR2N2wvZngwNTY3ZmZmdE90blAzMDAwKzY1Wnp5NWNySnBaMDY2Y2c3U05DUkx5SFdDN3ZLTTFNa0lNVE1IYnZUblZ5NlhQWTkrNEtPQUFBNE16WHJWcTFhTlprNlpZcHMyckJCM25yakRXblZzcVZQemNadDJMaFJKa3ljcUNNVVd0WnJ0dnlkdDB0b3JacTZ3eDJwY1p0bDc0c3Y2NmpncUlTelNKRWlPa0pPVkJJZEdocXFJK2QxdnZwcUNUUHc5NnVaOGR3VWZ2czFsNG44dVZEVjI5WHFLNjhoUVVlK0ZXdmRTcUtzRHc4M0pMNzh1aHo3MWZrM0tBREFQeFV2WGx6NjNYQ0QvTFJva1d4Y3QwNG1qQnRuRDhwTUREU2Q5dElycjhpK2ZmdDBoTUlxTUR4Y0trOTRVaVFvU1BlNFE0MjVUaGc0Yy9wY3FIM1A0UzVYcy9kVjVjcVdOWnFncTJydWpSczMxcEZ6VnExYVpSODVtUk43Ly9teVpUcHlUdS9ldlhYTFd3S3lEQjR1bUpXZUxwdTZ4RXJxeGpqZGs3Mm9RUU1sZXRoUUhmMlRXdGE4b1ZWN3lUaDBTUGVjV1lPMXl5WFFSL2VjbVpUNDVnelo4OFFFSFRtcllkd2FDUWdPdG4vWDIyNjlRNUorL2xVL1lrNXd1YkpTNjZ2UEpNVDZzN0E2TW4rQkpBd1lwS016SzlFalZtSW1uL24zbnBXUklYR2RZeVZsNHliZGs3MlMzYnBLbFdtVGRlUi9Uc1hIUzl4bG5lM1hzRW1CUllwSW5RWGZTWWdMVzBKTXVIL0lFSG54SlhPRmcrNis2eTZaUG0yYWpyeE5mV3cyYXRMRW51RTA1ZHR2dnBGT0hUdnF5QmxObXpXVFZhdk43U3Q5NSsyM3BXK2ZQanJ5TnZVN1BIYnNtSHd6ZDY0c3RCSjN0Y1J5eTlhdFJ2WTM1dGV3Qng2UThlUEc2Y2haYXRCYnRVWU51emlkS1h0MzdmSmNBYVovVzlleW5hUWZPS0FqYzZJbmpaY3kzV04xZE81MlRYaEtEcjcrdG83Y0VWSTFSczZiTTF1Q0NtaDhyZDZUZFJzMGtCMDdkdWdlNTZuVk51M2F0dFdSN3pxdmRtMTVhUGh3SFpueDBzc3Z5MzJEQit2SU9RdC8rRUhhdEdtam8vLzF5YWVmU3Q4YmJ0Q1JNOVM1NTFzMmJaTHc4SERkNHgwazZJV0FHd202a25id29NUmQzVTB5OXB2L2tJdHMzVkpxdlAyYUJCVFNmVWtrNk00aFFjOGRFdlQvUjRKK1pyNlVvUCtiU2dMVVRMVksyTldYbXFsUmxZVU5EcEZ5VGMxYXFabC9FNE5JRXZULzhKVUVQZVA0Y2RsNDliV1M3bkxSM05MOStrcmx4MGZaeSswTHdpVWRPdVM2a0ZoZVhIWGxsZkxsNTUvckNEbFIxOFZxTld0S21zTkg4WTE0NkNFWk8yYU1qdjdYZ050dmx4a3paK3JJR1gxNjk3YnJsWGdSUzl6aG1CRHJBN2p5bEltdUxNRktYcnhFOXI3d3Nob3A2eDRBQVBKR1ZUNnVWS21TM0Q1Z2dNeis5RlBac0hhdC9QempqM0xYSFhkSTFaZ1lZNVdSYzJQdjNyMnljdFVxSGFFd0N5cFdUQ285YVNVeGdlNE8zdzkvT0V1Ty8xbHdTOTJiWFhTUmJwbXhlczBheWNqSTBCRnlVclpzV1duWm9vV09uSlBUUG5SMUEzSHhraVU2Y2s2UDd0MTF5M3RJME9HbzRtMHZsakozdWJBZjNYb1RIM3p4VlRuK3gxTGRBUUNBTTFUUm9CYk5tOHV6enp3ajY2MWsvYWVGQzJYUVhYY1ZTRVg0ek14TStmcnJyM1dFd2s2TnMwcGMwMWxIN2xBcnpIWU9mMFF5a2dybVZJSGF0V3ZybGhrblRweXd0N3pnN0ZTaHpXdTZkdFdSYzlTS3RKU1VGQjM5MDU0OWUyVExsaTA2Y2tiNTh1WHRsUk5lUllJT3g1Vy9aNUJFTkRkN3QxUEpTa3VUbmZjOUlHa3VMS2tIQUJSTzZvaW5aczJheVRQVHBzbld6WnZscFJkZWtOcTFhdWxIM2JIa2p6OTBDNFdkT2tvcit1RmhFaFRsN3MyaXRCM3hzbnZpNUFKWnVkakN3SXp0NlZSeXZpbnU3TnR4OFIvWFhudXQ0eWRpcUpWQzI3ZHYxOUUvcVRvaFRxOXc2Tks1czlHQ2V2bEZnZzdIQllhRlNzd3pVeVNvYkJuZFkwNjZsWnduREh0WXN0SlptZ1FBTUVzZCtUVGd0dHRrNVlvVjh1VFlzUklSRWFFZk1VdnRpV2NKTHY0V1VyYXNSSThlNmZwUzl5TWZmeUxIZmpPM0Z6dzcxYXRWTTNyVW1scWw4c01QUCtnSVo2TitIODJiTmRPUmMrWmtzMUxJNlJWRTZqaTYzajE3NnNpYlNOQmhSR2lGQ2xMNTZZbi9MU0JuVXRKUHY4cSs1MS9VRVFBQVpxbFpkVlV0K2ZOUFA1VWlMaFNuVlVYc2ZIVUpyaGNyNC91RGtsZGVJY1V1ZGJhUTVObllTOTJIalpEMHc0ZDFqenZVbHBQNjllcnB5QXlWSEhxaEtLU3ZNRkVROUV5RkFKT1NraHpmZjE3UnlsRmF0MjZ0STI4aVFZY3h4ZHRjTEtYdnVFMUhaaVdxL2VpL3N3UVFBT0NlRGgwNnlQQmh3M1JranByaFUvdGtuYWFLM3ptOVZQWGYyTnRyUmtCUWtGUjYvRkVKTEZGYzk3Z2pmZDkrMlRWK2txdEwzWU9zbi9YU1RwMTBaTVpmSzFmS3RtM2JkSVN6dWVMeXl4MHZucmw4eFlyL09ROWRIWCtwS3NjN3FWdTNidmI1K2w1R2dnNXpyQS85aXZmZkl4RXRuVjhHODIvMmZ2UUhIbkw5cmk0QW1LQVNNaWVwbVNHbmo4WEJmd29tM1hiYmJjYVh1cXZmMzc4SHJrNVFnMVRUQ2JySkk5d0t1OUR5NWFYOGcwTjA1SjZqbjM4cFJ4ZjlxQ04zWEhIRkZicGxobHJwOFpaSGo5enlvaG8xYWtqREJnMTA1QXgxMU9XdTNidDE5QitMRnk5MmRHV0R1dG5UeitIejFFMGdRWWRSNnB6eUtwTW5TbENwa3JySEhIVXVhTUpESTQyZlp3MEFwaDAvZmx5M25QSEpwNS9LK2cwYmRBUW5sUzVWeXQ2VDZZdE1KK2ZLWm9lckwrT2Z5dlRxS1JGTkw5Q1JTekl6WmRkall5WDk2RkhkWVo0NlZVRWQ4V1hTakhmZXNaZFU0K3pVUHU0YisvWFRrVFBVVFpMZmZ2dE5SLzh4Wjg0YzNYSkcxYXBWcGRINTUrdkl1MGpRWVZ4WTVVcFNhZXBUOW5JczAwN01XeUQ3MzNoYlJ3RGdtNXhjMGhjZkh5LzNEUjZzSS85eThPQkJPWENnWUUveVVBTlZ0U2ZkTkRYejQ3VHc4SEFKTkp5a3EyV3JNQ2NnT0VncWozOUNBaUxDZFk4NzFLVEl6a2RIMjhtNkc5Unk2bDZHQzN1cDQ3ekdQdkdFamdxZTB5dXBuS2FPS1hPNkV2cmNiNy9WcmYvY3FQN2xYd2w3ZmwxN3pUV2VydDcrTnhKMHVLTEVKZTJrMUswMzZjaXNBMU9teS9IRnpoYVVBQUEzclhBb3FWSDdmL3ZkZUtNa0ppYnFIditoa3ZPdTExNHJ6VnEwc0Nzd0YrUmcxdlJ1WEpXY0Z5OXVacTl4NDhhTmRjc01OU05HOFMyekltclZsSEwzRHJLM0ZycnAyTGZmeTVINUMzUmtucXE4YlhyVng2dXZ2U1pyMTYzVFVjRlEyNUhlZmZkZHVlbm1tejFkWkxGYXRXcFN2WHAxSFRsREZZcjcrMmRldFdxVm95c2ExTTNVVy9yMzE1RzNrYURESGRZRnRlS1EreVM4U1NQZFljNS9xb3crTE9tSGorZ2VBSENPR2lDV0tsVktSMmFvWTdYeW05U2twS1RJTGJmZTZuZ0ZYQzlRTXl2WHhzYmF6NVBhczlqRlN0VDczM0tMN1A3WC9rVTNxTDNocG0rQWhBUUhTNGtTSlhUa3JNcVZLdW1XR2N2Ky9OTSs0eGhtbGUxL280VFZxNk1qbDJSbXlhNlJveVhOcFZVc3paczNOMTdOL1lTVkVLcWJta2RkWEw3L04zWE5YN2x5cFZ4NitlVnl5NEFCOHZHc1dmTHNjODk1OWdhWFdqblU3L3JyZGVRTWRlTjExNjVkZGxzbDYwNys3T2ZWcmkyMXJTOWZRSUlPMXdSR1JFak1jMU1sME5Bc3dPblNkKzM1ei9ub0hsOGVCTUEzbVM0S3Ruck5HbG03ZHEyT3p0M0preWZsWmlzNS85TGgvWHRlb0txWjkrN2JWNWI4OGY4bmQ2Z3p3ai84NkNOcGZPR0Y4dFNrU1VZcW5tZm5wNTkvTm41am9FbVRKc2FXMFZjeW5LQ3IzOFhqWThia2VhRE5NVzI1RXhnZUxsVW1QR25YL25GVHhzRkRzdk94c1NxNzFEM21xSlVrUTF6WXJyUEd1dmIyNnRQSDhWb2dPVkZKNlcyMzN5NHRMNzc0djhlTnFmZk1xTkdqWmY3OCtYYnNSZGZGeGpxNi9VYmQ4RlEzOVJTbno2YnYwcVdMNDVYblRTRkJoNnZDS2xlV1NsTW02TWlzRS9NWHlZRjMzdE1SQURqSDFHem02Y1pQbkppbnBFWU45R0s3ZDdjTHcva2JOV0R1ZThNTk1pK2JnZHVSSTBmazBjY2VrenIxNjh1MDZkT056MnlyL2UrRGg1aXZvbjNoaFJmcWx2TmF0MnFsVytiTWZPODllZU9OTjg3cDlieHAweVlaUEhTb3RHdmZua3J3dVJUWm9MNUUzZUxPZHNMVEhaODNYdzU5OFpXT3pGSUpZYVhvYUIyWnMyRGhRbW5UcnAyc1c3OWU5NWl4ZGRzMkdUWjh1TlJyMEVCbXZ2dnUvOXlRVXE5OXRUcG8rL2J0dXNkYjFCTDNlblhyNnNnWjM4K2JaMi9QK3ZIbm4zV1BNMjZ6bmtkZlFZSU8xNVc4ckpORTNUbEFSMmJ0bnpSVmtsYXQxaEVBT01QcDQyWE9SQ1hZTDczOGNxNlRHalh6OE43Nzc4dEZ6WnZML0FYdTdRdDFpMXF5UDJEZ1FQbjJ1KzkwVC9aVWtiM2hEejhzTld2WHRndmtMVjI2MVBGajVyWlpBK2JPWGJ2YUEyeVQxTDVKazhXeGF0V3FaWDhQazlSemY4OTk5OW1KeHVyVnE4K1ljS3ZYNzBZcktYL25uWGZreXF1dmxrWVhYQ0F2dlBpaXZZMUJKUzdJaFlBQXFYRC9QUkphdmFydWNJbDFqZG96N2lsSmRXRXJRN0ZpeGVUUmtTTjFaSlpLemx1MmJtMnZ5am5zNERHK2FvV1RtaFZYSzRIcU4yd28wNTk5Vms3bWNJemkvZ01INU5ycnJuTjFaVkJ1cVpVOXZYdjEwcEV6Vk4wS2RjMTJzcTdJQmRiMVJCME41eXRJMEZFZ0tneStUOElhbU4xSHBHUlpGOEdFK3g3Z2ZIUUFqbExGY1V4VGlmblFCeDZRSVVPSDJyTW5haG4zdjZrK2RYYXNLaWpVdEZrenVlVzIyeVR4NEVIOXFQOVF5WnY2MlQ2YlBWdjM1RTZ5OVJtZ2JuSzBiZDllNmpab0lJODkvcmdzc3hJK05UdVRsOVVKYXNDb0tqMVBmT29wYVhMaGhiTGlyNy8wSStaVXJseFp6cmNHOGFhb0diQ1NKYzBmaFpwaFBYY2ZmUGloTkcvVlNpckZ4TmhKdU5xRzBjZEtVbHBkZkxGVXJscFZMckNlMDlzR0RyUnZNSjMrZWxlL043VTNGV2VubHJwWEdqZFdyUWZYUGU3SU9IUklkbzRjTFZrWjVyY1dYbi85OVViZkU2ZFR5YlJhbFZPM2ZuMTVjUGh3V2I1OCtUa255dXExckZienFPMHdhbFZJblhyMTVLb3VYZXpyMlptdTYyZXlidDA2dWVPdXV6eFoyVjBsNkU3ZTVOdXdjYU44OXZubmVicEdaMGRWYnpkOUk5SkpBZFlQNzl4UC95K3FXTmVtTHJHU3VqRk85MlF2YXRCQWlSNDJWRWYvbEptYUtodGF0YmZmL0RscHNIYTVCRVpHNmdoL1MzeHpodXg1d3N5eThvWnhheVFnai9zNVRtM2JMbHU2WGllWlNjbTZ4NXlpVjE0bTFaNmY3c3BSYjI1UVZWTVRCZ3pTMFptVjZCRXJNWlBQL0h2UHNqNFE0anJIU3NyR1Rib25leVc3ZFpVcTB5YnJ5UCtjaW8rWHVNczZHejgvUDdCSUVhbXo0RHNKS1JPbGUzekwvVU9HeUlzdnZhUWo1OTF0RFR5bVQ1dW1JKy83YStWS2FkNnlwYU1EaUp5bzQ3QnFXSW1VT2d2NDcyUktMZWYrZmNrUzJibHJsNnQ3SmJQenp0dHZTOTgrZlhUa0hEVnpyaEk1cDVic3F5Si9aYUtpN0pzc0hUdDBrUFBQUDk4dVBGVzZkR203VXJyYVQ2bSsxTUJaZmFtWk0xV0k3cGRmZnBIdnZ2OWUvc3pEQUQwL0huM2tFUmx0SlFnbVhkdXRtM3h6MnZGR1hqVDR2dnRrOHFSSk9uTFd1cGJ0Sk4yRlFtZlJrOFpMbWU2eE9qTEl1aTRsUERaR0RyLy9rZTV3aWZYZXF2VFVPSWx5NFdmODJYby9xbUpxQlpHd2xpOWYzaTQ0MXJKRkM2bFFzYUo5YlZiWGpyRFFVRW0zcmhscW1icTZxYXFLSThiRnhjbXZpeGZMZ2YzNzVlaXhZL3B2eUx1bkpreVFvUzVzcXprWDZuZlF1azBiKzlyb2xMK3Z3VTVRMS95MXExYjVUSUU0aFJsMEZKanc2dFVrMnJxUWl3dDN0RTU4TzA4T3pKaXBJd0RJSHpVNGk3Q1NacmVvR1dTMTNQS3RHVE5rMmpQUDJGK3F2WDdEQms4azU2YW9nYTdhNCsza2ZucDFVK1ZBWXFLOWRQcXB5Wk9sMzAwM3lZWE5ta20xbWpXbGRObXlVclZHRFh2WmFZeVZ3S3U0NW5ubjJmdWdIM24wVWZueHA1OWNUYzdWVFlONzc3bEhSK2IwTVhCanhXa3Z2ZktLYkxLU0hlU0NXdW8rK0Y0SktsZFdkN2pFZW0vdG5UaFpVdmZ0MHgzbVhOeTZkWUVkbWFWV0xha2JCSk9mZmxvZWVQQkJ1K1pIcDhzdWt6YVhYQ0x0TzNhMGJ4eW83VGhxNW4zR3pKbXllZk5tUjVKelpmVGpqOXY3NDcxRXpVeDM2OVpOUjg1d0tqbFhMbWpTeEtlU2M0VUVIUVdxMUZWWFNLbSt6dTVkeWM3K3lkTWxlVzNCbm0wSndEOUVSa1pLaHc0ZGRBUVRWSEorLytEQjh2cWJiK29lZDZpVkNmRUpDWTROcVBOajBKMTMya202YVpkMjZpVEZpeFhUa1RlcGxSUVBQZnl3YTZ0V2ZGMUlWSlJVR2pQS2xVbVEwMlVjT2l3Snd4OHh2eXJOK3JtZW5qTEY4UUpsWG5mS2VoL2MxTCsvN05peFEvZDR3NVdYWDI3UFZIdlJEUTRmQmVjR0VuUVVMT3NDR3oxcWhJU2ZiNzdnVXRhcFU1Snc3MURKT082OUloc0FmRS9QSGoxMEMwNVRTeVlmSERaTVhuMzlkZDFUK0RTb1gxOGVmdWdoSFpsVnBrd1p1ZXl5eTNUa1hWOS84NDBzK3ZGSEhlRnNTbHphU1lwZDNrbEg3a242ZGJFY25HWCtGSWtpUllySXpCa3o3TUp4aGNtKy9mdnRXWHN2clo1cTFLaVJKNHV3aFlhR1N0ZXVYWFhrTzBqUVVlQUN3OElrNW9WbkpMQllVZDFqVHVxMjdaTHcwRWg3RHpZQTVJZWFkVlFEUkRoTExXMThjdHc0ZWZIbGwzVlA0YU1HbGE5YVAzK1k5Zm5vQmpYejljakREenQ2bnJFSmF2WjgrRU1QY2V4YUxnVUVCa3Jsc2FNbEtNcjhLb3gvc0g1UGU4WlBrbE03NG5XSE9ZMGJONVkzWDMvZGZzOFVKcXZYckpGQjk5emo2Rkx3L0ZBckdrelVJTW12cGhkZUtOV3F1bnlxZ1FOSTBPRUpZVlVxUy9TVGo5c3o2cVlkLzI2ZUhQendZeDBCUU42b1FrR3hEdSs3TXkwcUtrb3VhZGRPUjk2akVyQkpreWZMdUFrVEN1MVNacFVrUHpOdG1qUnYzbHozdUVNVnkrdmFwWXVPdkVzVmFIeG5KalZsY2tzdGRhL3cwSVAydm5RM1pTVW55ODdoSXlUTGhTSnVxa0wzK0NlZjlPd1NhMU0rL09nam1mTDAwem9xZUYwN2Q3WVRkUy9wZitPTlB2bTZJRUdIWjVUcTJsbEs5cnBPUndaWkh4Wjd4MCtTNUhYcmRRY0E1TTJ3Qng3d21aa2I5ZTk4N2VXWDdVcndYcVVHVWwyc1FWNnRtalYxVCtHaUJyY1BEeDh1dDkxNnErNXhqM3J1eHo3K3VHdXo5dm54eExoeGRxMEE1RTVVN0xWU3BPM0ZPbkpQOHJMbGN1Q3RHVG95UjcxMlZUSEZ4dzJmZHVCRlU2ZFA5OHdSaE9vbVg2WG9hQjBWdktKRmk4cFZWMTJsSTk5Q2dnN3ZzQzZ3MFNOSFNGZ2Q4NVVXczVKUFN2eGQ5MG1HSDFjL0JtQmV2WHIxN0R2MHZrQU5YdFZldkppWUdOM2pUV3FROS92aXhmYlp1b1ZwUml3NE9GaEdQUFNRUERacVZJSDkzT3Ixckk1MTgvcnp2bnYzYmhrL2NhS09jRmFCZ1ZKcDlFZ0ppSWpRSGU3Wi8reUxraEp2ZnFtN3VyazE0dUdINVpXWFhwTElBdmc1QzRKYXZyMXcvbng3WlpRWGhJU0V5STM5K3VtbzRGM1V0S2xVckZoUlI3NkZCQjJlRWxTMGlNUzgrS3dFRmpkZjhDTXRQa0Yyamh4dDc1VUNnTHhRaWN5VFR6d2hWU3BYMWozZW8vNk5JMGVNa0FjZmVNQ082NXgzbnYybmx4VXJXdFF1L3ZUQnUrOUt4UW9WZEsvL1V1ZmNQenQ5dW4zZWVVRXZFWDFnNkZEcDBMNjlqcnpyUlNzUjI3aHhvNDV3TnVIVnFrbjVZVVBzeVJBM1paNDRJZkZEaDB1bUMzVUQxTFh1MWx0dWtkbWZmU1pseTdwOHhKeUxTcFFvSVUrT0hTcy9MVm9rOWV2VjA3M2VjRjFzckdkcVdWemZ0Ni9uYnpabWh3UWRuaE5lbzdwVWZNSktuRjBZcEJ5Yk0xY1NQL2hJUndCdzd0UXhXSysvK3Fvbmw3cXJXVmsxSTNyNnJHeTVjdVhzUDcxTy9YdTdkKzh1Znk1ZEtqZjE2K2NUUzYvem9tclZxdkxObkRseSs0QUJuaGhNcWxtdzkyYk9sRWJubjY5N3ZNaytkbTNFaUVKYnF5QXZ5dlRwTGVFTjYrdklQU2YvV2lVSDNucEhSK1oxN05CQmZ2LzFWL3VzZEY5TjBNNUVKYjZYWFhxcC9QbkhIL0xROE9HZS9NeFJxM0M4TUd1dEt2dXIyZ1MraWdRZG5sU3F5OVZTc3FjTCs5R3REL1o5NDU2U2szR2JkUWNBbkx1T0hUdksxQ2xUQ256MjgzUnFtZWNMeno0cmo0NGMrWTkvVjZsU3BYeHEwS3Btd2w1LzdUWDUrY2NmcFhXclZwNTZqdk5ESmNLMzlPOHZTMzc3VGRxMmFhTjd2VUVkdS9iRjdObWVUOUxWc1d2ejVzM1RFYzRtTUN4VXFqdzFYZ0xjdnRsbGpiVU9QUCtTcTJNdHRaWG51N2x6WmR3VFQ5aDdrWDJadWw0M2FOQkF2dmpzTTVuejVaZjJUVDJ2VWpjTmVuYnZycU9DbzY2cDZyUE9WNUdndzVQVTBTRHFmUFN3dXVhWFltYXEvZWlEN3BlTXBHVGRBd0RuYnVEdHQ5dVZoTDJRUUtvbDkzTysra3B1dmZYVy8vbjNxSmtGVllIZWw2Z0I2Z1ZObXNpQ0gzNlFMNjNFVVNYcXZrenRqZnplU2g1ZWVmbGx6K3dmL2JmSzFtdElKVGhxTnRLTDFHdENuVWhReWNQYlM3d280cnphVW1hZyswVUlNNU9USldIWXc1S1pscVo3ekZPcmJvWTkrS0Q4c1hpeGRMdm1HcCtjVGE5YnA0NjgvY1liOW8yOEs2NjR3aWR1VUhyaHVEVmZyMkZDZ2c3UENpcFNSS3BNbXl5Qkxwd3puTHA1aSt4NmJJeGQ0UjBBOGtJTkJ0VCszYmRlZjkzZVExMFExTCtoMy9YWDI4dkNzNXVWVlRNY0JmWHZ5eSsxeEZNTlVoY3RXQ0FMNXMyVFhqMTcrc3haOU9wM294THo5OTk5VjM3OStXZHBZLzErdkQ2QVZEUHBhc1pPRmE4TDk5QVdBMVVjNjRQMzNwUHZ2LzFXR3RSM2Y4bTJUN05lYytYdnVsUENyRVRkYmFkV3I1Vjl6NzJvSS9mVXJsMWJabjM4c2Z5NGNLRmNjZm5sbmovdlgxSEw4ejk4LzMxWjhlZWZjcjExVGZlbExUNXFtWHYxNnRWMTVMN2l4WXY3eEpHUk9TRkJoNmRGMUswakZjZU9zbDZwNWwrcVJ6Ly9TZzdPL2tKSEFKQTNhakMxZE1rU1Y4OGJWM3ZOMjdWdEt6OHZXaVJ2dnZGR2prdjcxTkpxTll2dXkxUmkyOWI2ZWRWZTZhMXhjZkxVeElseTRRVVgyTStEMTZpQ1RqMnV1MDUrWExEQVRzeDc5dWpoVTh2MDFldGw3Smd4c21UeFl1blVzV09CUGNlcWtKNzYvcDk5OG9uOVBIYTNubE4vMmU3Z05yWFV2ZEs0TWVyQ29YdmNrL2pxRzVLOHZtQ091VzNWc3FWODljVVhzbHpYdFNqanNkVXJhdSsyT21MeEx5c3BWNnVGMUd2Y2k5ZTBzMUh2MWRodTNYVGtQbldkOFBuUHVDeUQxVFd5MHRObFU1ZFlTZDBZcDN1eUZ6Vm9vRVFQRzZxamYxS1ZIemUwYWk4Wmh3N3Buak5yc0hhNUJFWkc2Z2gvUzN4emh1eDVZb0tPbk5Vd2JvMEVHTDU0WkdWbVNzS0lSK1hveDUvcEhuTUNySUZJemE4K2tZZzZkWFNQTngyWnYwQVNCZ3pTMFptVjZCRXJNWlBQL0h2UHlzaVF1TTZ4a3JKeGsrN0pYc2x1WGUyVkRQNHE3Y0FCMlRWdW92V2NtRjA5WVErSUhudFVnbDA0b2NDRUdlKzhJL09zQVlNcGwzYnFKRGYzNzY4ai81Qmh2YysrbWpOSHhvd2RLK3MzYkxCanB4V3hQdk5Vb3ZySXd3OUw4K2JOY3owenBDcGcvMllsWEU0YWRPZWQwcnAxYXgyNVR6Mi9PK0xqNVF0ckFQNjU5YlYyM1RvNWV2U29mdFE5NnVaQnlaSWxwZGxGRjltSmVUZHJvT3JMZXlGUGwybDlIcTlZc2NJKzRtekJ3b1Z5NHNRSi9ZZ1phdGF3Um8wYTlwN1cvamZkWkMrN041R1VKNHdjTGVuSGp1bkluS2pyKzBqeFZpMTBWUEQydi9tMkpLMVlxU1AzaEo5WFd5cmVjNWM5bTErUTFQVmg3dHk1TW1QbVRQbHorWEk1ZlBpd2ZzUWQ2bnF0aW94MnVPUVNPekZ2MmJLbFJQcEpIcU0rODhhTkg2K2ovM1V5T1ZtK3RwNTdFNStMNnNhdFdsM2x5MGpRQ3dGZlQ5Q1ZET3VEYy9OMXZTVjF5emJkWTA1WTdWcFM2OHRQSkRBOFhQZDREd2s2NER2UzB0TGtqNlZMNVpWWFhwRzUzMzRyeDYya0pxK0Rra0JyUUt0bU5GVXlyZ1lnbmErKzJrNWF2TDVVMm0xcWFIUHc0RUZadlhxMWZQdmRkL2JnZThrZmYwaTZOUzVSWDA1U00xeHFvSzBTOGhiVzcrVnE2M2VpaXF1cEpOMmZxYlBJdjdFRzJMTSsrY1IrYmsrZVBHa244UG1oWHR0cXhVRnJLMUZSUzFUYnRXdG5GOFR5aFNYSjhHMUhqaHl4cnhPcThPRGl4WXRsOVpvMTlyWEN5UVJTWFN2VWxoeDFyYmo4c3N1a2ZmdjI5aDd6aUVKeWJ2dnBQcHM5VzNyMzdhc2o1NmpuZDFkOHZNOXNmY29PQ1hvaDRBOEp1cEs4YnIxczdYbURaQ1diTCtaV3NuY1BxVExoaVFLL3U1c2RFblRBTjUwNmRVcldXQU0vbGJELy92dnZFcCtRSUlsV0lobHZEU2hVZ25NNnRmKzNmTGx5ZGhFeFZmU3RXYk5tMHJCaFEybmNxSkhmSjM4bXBGcGppWjA3ZDhxYXRXdnRQemZGeGNuV3JWdnRnYm1hU1V0S1NySm40TTlFL1E2aVNwZTJuM2UxdjdHYWxUVFdxMXRYcXNURTJMK1R5cFVxRmNwQjl0L1VjN2ZXZWw1WHJsb2w2OWV2dDJmUDFHeWtlbDYzYk5raS94NW9Wb3FPdG1jTzFaYzY1LzZDQ3k2UW1qVnJTaVBydFIxVHBRb0pPUXFjV2gyeWJkczJleVdPdWw2b20xREhqaDJ6djlRMVkvZWVQWko4aHZHb1NneWpLMWEwYnpTcDY0VzZnYXB1MkttcTh1ZGIxNG9xMXV0YjNZZ3F6TlJuWFl2V3JlMXJoZFA2M1hDRHZQWEdHenJ5WFNUb2hZQy9KT2lLT3JOOHp5T2pkV1JXcFdjbVMrbHJ1dXJJVzBqUUFmOXh0bzloWnNmTnkrMVFpTi9GdWNucGVlVzVoSy9LemZXQzEzZjJYbnY5ZFJsMHp6MDZjbzY2c2ZmRGQ5L1pCVGg5SFFsNklYQms5aGR5NE9YWGRlU3NXbDkvYmlYb0x0N3B0bDZ1dTZjOUt5bWJ6djZheXEvQVlzV2s4cGhSRXVUQjF4UUpPZ0FBQUh6SnZuMzdwUEVGRjhqQnMrUjBlYUcyQy95MWZMbGZyTUFoUVFkOEVBazZBQUFBZklWS09XKzU5Vlo1NzRNUGRJOXoxSXFGMTE1NXhTNG02UTg0bndJQUFBQUFZTXo3Vm1KdUlqbFh5cFVySjlmRnh1ckk5NUdnQXdBQUFBQ00rUFhYWDQzc08vL2JuUU1IK3Z6WjU2Y2pRUWNBQUFBQU9HN1Y2dFhTcTArZk0xYTlkMExGaWhYbHZudnYxWkYvSUVFSEFBQUFBRGhxL29JRmN2a1ZWOGorQXdkMGovT0dQL2lnZmZ5bFB5RkJCd0FBQUFBNElpMHRUWjUvNFFXNU5qYldTTVgydjlXdFcxY0czbjY3anZ3SENUb0FBQUFBSUY5VXBmYjE2OWZMMVYyNnlKQUhIcENVbEJUOWlQTlU1Zllwa3laSmFHaW83dkVmSk9nQUFBQUFnRHpic0dHRDNEbG9rRnpZckprcyt2RkgzV3RPcng0OTVJckxMOWVSZnlGQkJ3QUFBQUNjazBPSERzbnN6eitYemwyNlNLTUxMcEEzMzNwTDB0UFQ5YVBtUkZlc0tNOU1uNjRqLzBPQ0RnQUFBQURJVVZKU2txeGJ0MDdlZXZ0dGliM3VPcWxlcTVaZG9mMzdIMzZ3bDdlN0lUdzhYRDU0N3oySmlvclNQZjZIQkIwQUFBQUFJSm1abVhMcTFDbDdkbnpEeG8zeTFadzVNdXF4eCtUeUs2K1VXblhxMkV2WUI5NTVwOHo1NWh0alI2ZGxKekF3VUI1NzlGRnAzYnExN3ZGUEpPZ0FBQUFBVU1pZE9IRkNXcmRwSTQyYU5KRWF0V3ZMK1kwYnkzVTllc2pFU1pOazRhSkZrcGlZS0JrWkdmcS9kbCtmWHIxazZKQWhPdkpmSk9nQUFBQUFVTWdWS1ZKRWR1N2FKZHUyYjdlWHMzdEoyelp0NU9XWFhwS2dvQ0RkNDc5STBBRUFBQUNna0ZOSGw3VnUxVXBIM3RIMHdndmwwMW16SkNJaVF2ZjROeEowQUFBQUFJRFVPZTg4M2ZLR2kxdTNscm5mZkNPbFNwWFNQZjZQQkIwQUFBQUFJTTJhTmRPdGdxVm04Ni9wMGtXK25qTkhTcFVzcVhzTEJ4SjBBQUFBQUlCVXFWeFp0d3FPU3M2SDNIKy9mUGpCQjFJa01sTDNGaDRrNkFBQUFBQUFpWW1Ka1dMRml1bklmU1ZLbEpCM1o4eVFweVpPbEpDUUVOMWJ1SkNnQXdBQUFBQ2tlUEhpRWg0V3BpUDNCQVlFeUdXWFhpckxseTZWWHIxNjZkN0NpUVFkQUFBQUFHRFBXcnU5RHoyNllrVjU2Y1VYNWFzdnZyQm44QXM3RW5RQUFBQUFnSzFCZ3dhNlpWWmtSSVRjUFdpUXJGeXhRbTY5NVpaQ2NjWjVicENnQXdBQUFBQnNGelpwb2x0bWhJZUh5eDBEQjhyS3YvNlM2Vk9uU3NsQ1ZxWDliRWpRQVFBQUFBQzJPblhxNkphenFzYkV5TmpISDVmTkd6Zks4ODgrSzlXcVZ0V1A0SFFrNkFBQUFBQUFXM1IwdEJRdFVrUkgrVlBKK3J2NlhYKzlmRDkzcm14Y3YxNUdQUHl3bEM5ZlhqK0tNeUZCQndBQUFBRFlpaFl0S3VYeW1FU3IvMitkODg2VE8rKzRReGJObnk4YjFxMlR0OTU4VXpwMDZNQWU4MXdpUVFjQUFBQUEyTUxDd2lTbVNoVWRuVmxBUUlCZDVFM3RIMjkveVNWeTM3MzN5dHl2djVZTmE5ZmFSZCtlZStZWnVmamlpKzM5NWpnM0pPZ0FBQUFBZ1A5cTJhS0YvV2U1c21XbGNlUEcwckZEQjdrdU50WmVvajV6eGd5WlAyK2VyTGVTOFYzeDhUTHZ1Ky9rNmNtVDVkSk9uZXpsNjh5VTV3OEpPZ0FBQUFEZ3YwWTkrcWlrblRvbHV4SVNaTm1TSmZMZDNMbnkwUWNmMkVYZSt2VHVMVzNidExIM3FvZUdodXIvQjV4Q2dnNEFBQUFBK0M4Uzc0SkRnZzRBQUFBQWdBZVFvQU1BQUFBQTRBRWs2QUFBQUFBQWVBQUpPZ0FBQUFBQUh1QWpDWHFBL2IrenlUeDFTcmNBLzVhWmZGSzNjaERFL1RjQUFBREFsL2pFQ0Q0d05FU0NpaFhUVWZhU1ZxM1JMY0MvblZ5MlhMZXlGeEpWUnJjQUFBQUErQUtmbVdJTHY2Q3hibVh2Nk5kemRRdndYMWxwYVhMc2gvazZ5bDVvNVdqZEFnQUFBT0FMZkNaQmp6eS9vVzVsNzhTOEJaSis2SkNPQVA5MDdKZGZKWDNQUGgxbEw3SkZNOTBDQUFBQTRBdDhKa0V2ZW5FcjYxK2I4MGIwaktOSFpmZFRUNHRrWnVvZXdMOWtKQ2ZMM3ZHVFJMS3lkTStaQlpVdkorSFZxdWtJQUFBQWdDL3dtUVE5ckZwVkNhMWVYVWZaTy9ycDU1TDR5V2M2QXZ4SFZucTY3Qm81V2xJM2I5VTkyU3ZlcVlNRUJQck0yeHNBQUFDQXhXZEc4SUdob1ZLcVYzY2Q1U0FqUS9hT2ZGd092UE91WkZsdHdCOWtKQ1ZKL0lNUHk5RXY1dWllSEZpSmVhbmVQWFFBQUFBQXdGZjQxQlJiVk4vZUVsU3FwSTZ5cDJZYTl6NCtUcmJmZnBlYzJycU5KZS93V2VxMWZPeW5YMlR6dFQzbG1Fck96N0swWFlsc2NaRVV5VVhOQmdBQUFBRGVFcEJsMFczSHFlUmlVNWRZU2QwWXAzdXlGelZvb0VRUEc2cWo3TzEvNVhYWk4zR0tqczR1SURoWUlwbzFsYUx0MjBsRXJSb1NWTGFzZmdUd3FLeE1TWXZmSlNjM2JwVGozLzhnS1pzMjZ3Zk9MaUEwUkdwOCtvRkVOc3c1UVZlclMrSTZ4MHJLeGsyNkozc2x1M1dWS3RNbTZ3Z0FBQUNBS1Q2WG9HZW1wc25tMko2U3NtNkQ3Z0h3dDFJM1hTK1Z4enltbyt5Um9BTUFBQURlNDNOVnBBSkRRNlRLMUVrU1dLU0k3Z0dnaE5Xdks5RWpodXNJQUFBQWdLOHhtNkFIQkZqL3kvbG90UDlLVDllTnM0dW9jNTVVbWo1SkFrSkNkQTlRdUFWWEtDL1ZYbjlKQXNQRGRjOVpxSFV6dVZ3OG83YUpBQUFBQUREUGVJSWVHSm03bWU3Y0hCMTF1cEtkT2tyRjhXUHNQYmRBWVJZVVZWcXF2ZjJhaEZhc3FIdk9MaXN0VlRLT0g5ZFJ6b0tyVjlVdEFBQUFBQ1laVGREVk9jekJ1YWk2cnB6YXNVTzNjc2xLL3FONlhDZFZYbmxCQW9zWDA1MUE0UkphcDdiVStPUjllMVhKdVVnL2RGalM5eC9RVWM1Q0tsVFFMUUFBQUFBbUdkK0RIblorZmQzS1dkcVdiWkt5YzZlT2NxOUUrM1pTNjh0UEpLSjVVOTBEK0QrMTdMeGszMTVTNjdPUEpMeGFOZDJiZThjWC95NlNrYUdqSEFRRVNGaVZ5am9BQUFBQVlKTHhCRDNpdk56UDdCMysrRFBkT2pkaFZhdEt6ZmZma2VoSjR5U2thaFhkQy9paG9DQ0phSGFoVlAvNFhha3lib3dFUlVicUIzSlBWWEEvL1BFbk9zcFpZRVM0aEZVLzl4c0FBQUFBQU02ZDBXUFdsTFRFZzdLaFJWdVJ6RXpkazcyUXlwWGt2Ty9uV0VsQmhPNDVkNWtwS1hMc3g1L2w0RHZ2eXFuVmF5WHpXTzcyMlFLZXBiYUtSSldXeU5ZdHBjeUFteVd5WGowSnNCTDF2RXBhdFZxMmRlOXJINE40TnFFMXFrdWRINzZ4WjlJQkFBQUFtR1U4UVZjMlhkdERVbGF0MFZIT3lnNjVWeXJjZDdlTzhpZjl5QkU1dVhHVEpDOWZJU21iTmt2NnNXT1NsWnFtSHdXOEt5Z3lRb0tLRjVmd0N4cExrU2FOSmF4YU5ic3Z2MVJTdnFYdlRYSnkyWExkazdQU3QvV1hTbytPMEJFQUFBQUFrMXhKMFBlOS9KcnNmK3BwSGVVc01ESlNxbi95bmoxTENNQlpCOTU1VC9ZKy9tVHVqbGdMQ3BTYVgzNHFrZlY1THdJQUFBQnVNTDRIWFNuWithcGNMOG5OVEU2VytEdnZ5MVBCT0FEWk83cndSOWszYm1LdXp6OFBxMVZUSXM2cnJTTUFBQUFBcHJtU29Lc3EwRVd2dmtKSFo1Y1dueUJiKzl3b0p6ZHYwVDBBOHN4S3lJOTgrNzBrM0hYdk9XM3hpTHJsSnJ0YVBBQUFBQUIzdUpLZ0srWHV2UDJjQnZ2cHUvYkkxdGplY3VqekwzTlZ6QXJBLzhvNGNVSjJUWmdrQ2ZjTWtheVVWTjE3ZGlIVnFrcXAyR3QxQkFBQUFNQU5yaVhva2ZYcVN2SFlyanJLblV5VlhBeDlTTGJjY0xPY1dMcU1SQjNJcGN4VHArVGdwN01sN29xdWN1aTF0M0ozNXZuZkFnS2szSDJESkRBMFZIY0FBQUFBY0lNclJlTCtsbllnVWVJNmQ1TU02ODl6WmlVTm9UVnJTTkYyRjB1UkM1clk3YUFTSmZTRFFDR1hsU25wK3cvSXFVMXhrclJrcVp6NGRiRmtXSEZlRkxIZVk5WGZlazBDQWwyN2Z3Y0FBQURBNG1xQ3JoejVZWUc5RjFiU3oyRkdMenVjelF6OFB3ZmV5b0VsaWt1dE9iTWxySElsM1FNQUFBREFMYTRuNkNxSjJEUHBhVWw4K1hYZEFjQUxBc0pDSmViVkY2VjR1emE2QndBQUFJQ2IzRi9ER2hBZ0ZSNGNJaVd1b3dBVjRCbEJnVkpoOUVpU2N3QUFBS0FBRmNnbVUzVW1ldVZ4WTZUb3BSMTBENEFDRXhnbzVSNFlMR1g2OU5JZEFBQUFBQXFDKzB2Y1Q1T1ZtaW83SHhzclJ6NzZSUGNBY0pOYTFsNXh6Q2lKNnQxVDl3QUFBQUFvS0FXYW9OdXNiNS80M2dleWI4SVV5VXhPMXAwQVRBdUpxU3lWcDB5VW9zMHUwajBBQUFBQUNsTEJKK2phcWUzYlplZURJK1RrOGhWVzBxNDdBVGd1SURSVVNsemJSYUlmZTBTQ2loYlZ2UUFBQUFBS21tY1NkQ1VyUFYyT2ZQK0Q3SnM4VGRKMnhOdXo2d0NjRVJBU0xCRk5HdHRMMmlQcjFyRTZPS1lRQUFBQThCSlBKZWgveTB4SmtlTy9McGJFTjk2V2szOHNzeE4zQUhsZ0plR0JSU0tsMkdXZHBNeXROMGxrL2ZwMlVUZ0FBQUFBM3VQSkJQMTBxZnYzeS9GRlAwblNiNy9MeVkyYkpHM0xOc2xLUzlPUEF2aTNBQ3NoRDZ0VlV5SWJueTlGMjdhUm9xMWFTRkNSSXZwUkFBQUFBRjdsK1FUOUg2eC9xcHBOVHp0OFJESk9ISmYwZzRja0t6TlRQd2dVWG9IaFlSSlV2SVFFbHl3cHdTV0tTd0N6NUFBQUFJRFA4YTBFSFFBQUFBQUFQOFUwR3dBQUFBQUFIa0NDRGdBQUFBQ0FCNUNnQXdBQUFBRGdBU1RvQUFBQUFBQjRBQWs2QUFBQUFBQWVRSUlPQUFBQUFJQUhrS0FEQUFBQUFPQUJKT2dBQUFBQUFIZ0FDVG9BQUFBQUFCNUFnZzRBQUFBQWdBZVFvQU1BQUFBQTRBRWs2QUFBQUFBQWVBQUpPZ0FBQUFBQUhrQ0NEZ0FBQUFDQUI1Q2dBd0FBQUFEZ0FTVG9BQUFBQUFCNEFBazZBQUFBQUFBRlR1VC9BRWk0UGhzV0RwQ2hBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMV9QUkUiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6IjYxMjUwNTkxYjJiYzQ0NTZiNzE5MGIxN2JlOTBiYjMwIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6dHJ1ZSwidXAiOnRydWUsInV2Ijp0cnVlLCJ1c2VyVmVyaWZpY2F0aW9uTWdtdFByZXZpZXciOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZX0sIm1heE1zZ1NpemUiOjIwNDgsInBpblV2QXV0aFByb3RvY29scyI6WzFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjYsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTkyLCJ0cmFuc3BvcnRzIjpbInVzYiJdfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMTktMDQtMDQiLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6ImVXQk0gZUZQQSBGSURPMiBBdXRoZW50aWNhdG9yIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAxODA5MjYwMjAiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMy40IiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjAuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAxOS0wNC0wNCJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMTktMDQtMDQifSx7ImFhZ3VpZCI6IjhjMzllZTg2LTdmOWEtNGE5NS05YmEzLWY2YjA5N2U1YzJlZSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiOGMzOWVlODYtN2Y5YS00YTk1LTliYTMtZjZiMDk3ZTVjMmVlIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ill1YmlLZXkgQmlvIFNlcmllcyAoRW50ZXJwcmlzZSBQcm9maWxlKSJ9LCJkZXNjcmlwdGlvbiI6Ill1YmlLZXkgQmlvIFNlcmllcyAtIEZJRE8gRWRpdGlvbiAoRW50ZXJwcmlzZSBQcm9maWxlKSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzQsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfSx7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDM4NHIxX2VjZHNhX3NoYTM4NF9yYXciLCJlZDI1NTE5X2VkZHNhX3NoYTUxMl9yYXciLCJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwiLCJiYURlc2MiOnsic2VsZkF0dGVzdGVkRlJSIjowLjAsInNlbGZBdHRlc3RlZEZBUiI6MC4wLCJpQVBBUlRocmVzaG9sZCI6MC4wLCJtYXhUZW1wbGF0ZXMiOjUsIm1heFJldHJpZXMiOjUsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIiwiYmFEZXNjIjp7InNlbGZBdHRlc3RlZEZSUiI6MC4wLCJzZWxmQXR0ZXN0ZWRGQVIiOjAuMCwiaUFQQVJUaHJlc2hvbGQiOjAuMCwibWF4VGVtcGxhdGVzIjo1LCJtYXhSZXRyaWVzIjo1LCJibG9ja1Nsb3dkb3duIjowfX0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlETXpDQ0FodWdBd0lCQWdJVVNPRWpUZi8veXFSZlBXN1FxOHF0SXlDckFnOHdEUVlKS29aSWh2Y05BUUVMQlFBd0x6RXRNQ3NHQTFVRUF3d2tXWFZpYVdOdklFWkpSRThnVW05dmRDQkRRU0JUWlhKcFlXd2dORFV3TWpBek5UVTJNQ0FYRFRJME1EVXdNVEF3TURBd01Gb1lEekl3TmpBd05ETXdNREF3TURBd1dqQXZNUzB3S3dZRFZRUUREQ1JaZFdKcFkyOGdSa2xFVHlCU2IyOTBJRU5CSUZObGNtbGhiQ0EwTlRBeU1ETTFOVFl3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRQ2R2bDI3dzJndTFmUFhlRUZiSWRxeDBCYWx2VkRWV3JRUEo3SHF2aXVFdFpIbHhTTHhTRnRjWHBUb2x2THZvZjhmNHRNZXJRVGtWR3pjbVl6bTFFQlQ0SUp1TW1vRXFma0VFaFdwc0FETUZyalprcWxaWTlFcXhRekxvVkVFb25FNW9HeFNkVkN4Q2NMSWFja3B5Ui9DQ1h2ajFCdC9oVGdFOWhUbEY0cFJxeE1reDNwbEY3eThkRFpsUkhXczd2Ym5obUJDR2VJMFpQRVE2bmwybUNnMnI3NGFkRjJ1Nks5cnJMZmhCQzNRTEU4RVByZ3FVc0kraGt1cTJ0SzRNMlNNT3A4dVVWVmtxVWV1M2gwa3IzV1ZJMFcwMnBrZ3JPZ2lGS0xGTmtTcmJZaGRqTUJEajVpem1xZmM5eEpSS29EWDYxMnFkOFpHVkhwVDVBWUZYKzFoQWdNQkFBR2pSVEJETUIwR0ExVWREZ1FXQkJUWnlVNURpUS9hMlVFZ0U3cUJLMHpoSXNSTlJqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUFNQTRHQTFVZER3RUIvd1FFQXdJQkJqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFYdm5CNFNMdVVKZllNU1ZHQWhzc0wvU21XbGkzRlNjY2d4eWR2S2xBQ2NpZElJV0tRcWEzcS9RU1VFUXpDOURnRWZNZ3I3aUMxQmtUWmJJTGJvVjZVWjVrbk5zdmpFWld1TWVvZ0o4dGdaczFoVnZLd1ppendKK21FY21zamhJckJZdW9MMVQ2eXJPSnZLRmcxanYrQ3k0WndBOUJway9WM1VPaXIxVnlLOGRDdHlIdTZ2Zm9zb3RBZFl4OEZBdVIyNDNnUlRNVjZKeDhKZGlnMkpESUFRTWx6VmVEcFNVSFgvSzJIWFJIeEh3ZmdqYmdVampCdS83MnI4T2ZlaHloekhYSTNLOENGRmRmbE8rOG5FT0pLM3k4RjFpdmdTNXVOLzhTbWNZdy9TVFFZd2hyeFB1d3ozblA4YmFNdW00QkIybm5ZbXBCNjBzWDNibDVrOFFVU3c9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFmQ0FZQUFBQ0dWcytNQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUhZWUFBQjJHQVYyaUU0RUFBQWJOU1VSQlZGaEhwVmQ3VE5WMUZELzNkNTl3ZVFTSWdTOUFRQVhjRkxBUVppOWZwZVZ6MXRZL1dUWnI1V3hwYzdXNWtuTGE1akkzWjg1c3JTMm5NMnNqdFd3WlM3SVVINEg0eENuRVF4NERBWkY3NFY3dXM4ODV2OS9sSW5CdlZKL0I0UHY5bnUvNW51LzVudk01NTZmekEvUXYwSGIvSXJYM1ZGS1BvNDVjbm00aW5VSVdZd0xGUm1aUVV1d2pGRy9OMWlSSGgxRVowTlJWUnVkcXQxQmQrMm5TS3lTL09oeXMwK2xrM2UvM2tROXF2RDRaVXRhNFZWU1V1WTBlaXB5aVRoQWZvY29PUlZnRHV1dzNxS1JpQWQzcmJjRXRqVGpZSW9mNldhSHNDbXpWUFdDTXgrY2doOHRMcVdNS2FNV3NVakxxbzJSdEpJUTBvT3ptZXJwUXU0ZXNaZ3NPTmtHeEg3ZDBrZHZUVDE3czRPTVU3Vkk4WmhqZ0dhTStBcTlpRU51OFBpZjF1ZHowN013dktXZjhHbFZvQ0VZMDRQQzVXZFRhWFlGYlI4dk52TDUrM0tnZmI1eE5NeWE5UmFtSml5bmFNbEdUVnRGbHI2YmE5dStwcW5FWDR1TXVSUmdqU1lFaHJON3V0RkZlNmxxYWw3TmZrdzVpbUFHSHluUHBiazhWbVkweHN0bnB0bEZDVkNZdHpUdUJOODNRcE1MalR0ZXZkUHpTVW5KN2U4bWtqeFozOWZYYktEZmxkWnFidlUrVFVnR25CVkY2ZlEyaVBIZzRXMTZVV1V3dnpiazE2c01aRStQbjBwdno3SlNldUF5ZXM4bGNwQ21hS3VvL3ArcVdyMlVjd0lBSFdydlAwWUV6aFhBdExBYnNzSGhwN2lHYW12eWlqUDhyeXFyWFVXWDlYb293eHlBdWZOQnJwNDNQT0JGWFpsa2Y4TURSaXFjcHlvd0F3cHV6MngrZld2ei9EdGRlOXNtc3p5Z3RjUjZDMXdiZHpCbDZPbHE1V05ZWTRvR2F0aEpNcmtURXgwakFSU0hBVnMrNXJZa1FOWGIrUWdmUExzUTZnWHlJbnNyZVFmbXBtN1JWRllmTDg2bjFmaVVPa1l2U2hrVVB4dmJ1a3pveTZLMWloTTFobzNYelc2RXZTZlhBK2RwaVdHYVdkK2RvWHpMem1Hd0tZRkxDQXNSQWxQQkFoTWxDRlhVN3RCVVZQcjhIZ1ZjSkhXcStGMDBwbHIrRE1UZHJQNHp2eFkxMWtOTWh4VCtTZVRHZytkNFY1TFFKaXR5VUdKTkI4VkZac2pnWUJaTS9JSS9YQ1RrajBxeURPcEYyQVZRMTdDSWpVcC9EblQxVWtMNUY1Z2RqK3NTMXdnMWdFM2dpZ202MGZDWHpTblBYYnlBUGJJWHYrSURwRTE2VGhhSElTOXNreWhsbU1FNUYzY2ZxQUtocTJDMEU1UEgxZ1lhWGFMUERrWkcwSERKT25LV0hwNTFJMHo1U091eDhlMVdBdVp6ZEhRclRrcDhUbWpYb0krbGEwd0dac3p1YnFiTzNpZlE2QS9XN3ZWU1lzVjNtUjBKS3drS2M0V0hpQmttUjhJM0NDZ0k4N29PTDRxelQ1UCtSVUpCZWpFT2dBUEs4aFlQemF0TStlSVRwMklPOXlUUW1lcm9tUFJ4eDFxeEFjc2lsZS91YlNlRWJjV1FHWUVDZ2hjTFkySHlLam9nakgyNWhNcGpwVXYxT3VnbGk0ZWgyZVJ3ME8zMmJKamt5dUNnTnpnMHZ6bFlNU2lTczB1b280TUc3aE1PakNFYVgxeUZFMG5TdmpCenVUbkVwSzg2WjhJb3FGQUl1Ync4a2c5QXJFYVJFV1NaSStqSDRYYnA2ZzlFOUVuSlQzb2FSekROK01VSkJRREhuNTZhOG9VbUVCdXNPeEJzL041K3RKRWJQa0FGRGo4VUd2T3MvSVd2Y1NnbEdCaHZTNy9GVFlmcFdHWWREWThmUEF4V1NBMzVzVEM0cDQrTG00QWFxSW9QZVF0ZnVmSzZKaDBaaHhsYnNVWE9TbVhOaWZENVpUQWt5RG9mYmJjY2x4bkE4V05BcXhDYlJOeWtoWHhRcGFEdzY3ZlhVWWJzaUcwS2h0djJvZUl2aDhyaFFNWU9jRUFxWEcvZUkrem5nT2M1eXhyOHE4MklBTTFjL0ZMRk9wbHF1NWVGUVhyTVp6R2NWQ2pZYkxXRzVJNEJUMWV1UnJsYnh0Tk90TWl0RERFaExYSUl5bkFBdnVPRVdFM1gzTmRBZnQ5NFZnYUc0MlhJUXQwWlg2UGVDRS9xUUZlOXJLNkh4N1lVNTBLdkg3Zlc0ZlMrcTdLS0JKeHNnZ0JYNXBTQUdoMWpJclZoNXpRNnczUmZhYWhCWG0vYUNiQ1pUakNVRlVUeVdacVc5cDYyTWpKUFhWcU9yUGdNTzROdjc0R2tmK293ZnROVkJEUW5qRkpxSFN3MTdwWHZoV1c1S1pxZS9RNDlOL1VTVENBVldvUVhGSUhCSFhYZTNGUHJVRHN1R0RtdEYvaEhLVEhwZWt4aGlBT1BJK1NKcTZTNkhGNEk5WVd6a0JKVG80NmlVTXpXcDhQaXIvUmlkdUx4S1lzU2tzVjh2TGxPUXZoR1gyWWxSME9CaEJqQyt1L2dFY3ZZMEFwSzdZazQxTnhqUFNRbldGSFRGNjZVcmpnZXZCOEN1NWErbDJ2WVNSUHR1VkRvNzNoaGRNU0huVVg3dFRqc1ZaR3hBbC9XcHRpT0lFUTFnbkwyOW1YNi90UjF0bWxrWWo4VzRYK0NTaldjVURHWTFOcFMvQzdoU0txaU1MTS9sMlFtU1daNzNEZHorZ2lvOEJDRU5ZUFE0NnFua3p3WFVicXZCa3hqVVFzV2ZaRmdidW8zckFmK3dON2pPTzkwK3lueDRQaTNMKzBuWUwxU2NoRFVnQVA0Z1BWLzdJZDFxKzFIU2htdUdrSXFXUlBneXhNRnFQOEhmalRualh3WTViUWZiSmN0Nk9JektnTUhvdEYvSGUxZWdzYXhIU3FHNndmZG1RNXg4TnlURkZxQmNwMmlTb3dIUjN5azUrMzZoRjd2WEFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJGSURPXzJfMCIsIkZJRE9fMl8xX1BSRSIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsImxhcmdlQmxvYktleSIsImNyZWRCbG9iIiwibWluUGluTGVuZ3RoIl0sImFhZ3VpZCI6IjhjMzllZTg2N2Y5YTRhOTU5YmEzZjZiMDk3ZTVjMmVlIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJ1diI6ZmFsc2UsInBpblV2QXV0aFRva2VuIjp0cnVlLCJsYXJnZUJsb2JzIjp0cnVlLCJlcCI6dHJ1ZSwiYmlvRW5yb2xsIjpmYWxzZSwidXNlclZlcmlmaWNhdGlvbk1nbXRQcmV2aWV3IjpmYWxzZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOmZhbHNlLCJhbHdheXNVdiI6dHJ1ZX0sIm1heE1zZ1NpemUiOjEyODAsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6OCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoxMjgsInRyYW5zcG9ydHMiOlsidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN30seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTh9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi0zNX1dLCJtYXhTZXJpYWxpemVkTGFyZ2VCbG9iQXJyYXkiOjQwOTYsIm1pblBJTkxlbmd0aCI6NCwiZmlybXdhcmVWZXJzaW9uIjozMjk0NzQsIm1heENyZWRCbG9iTGVuZ3RoIjozMiwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjEsInByZWZlcnJlZFBsYXRmb3JtVXZBdHRlbXB0cyI6MywidXZNb2RhbGl0eSI6MiwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjEwMH19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTAyLTAxIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NCwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZdWJpS2V5IEJpbyBTZXJpZXMgKEVudGVycHJpc2UgUHJvZmlsZSkiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI1MDIwMTAwNyIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTAyLTAxIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NH1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wMi0wNiJ9LHsiYWFndWlkIjoiZjhhMDExZjMtOGMwYS00ZDE1LTgwMDYtMTcxMTFmOWVkYzdkIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiJmOGEwMTFmMy04YzBhLTRkMTUtODAwNi0xNzExMWY5ZWRjN2QiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiU2VjdXJpdHkgS2V5IGJ5IFl1YmljbyJ9LCJkZXNjcmlwdGlvbiI6IlNlY3VyaXR5IEtleSBieSBZdWJpY28iLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6NTAxMDAsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJlZDI1NTE5X2VkZHNhX3NoYTUxMl9yYXciLCJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURIakNDQWdhZ0F3SUJBZ0lFRzBCVDl6QU5CZ2txaGtpRzl3MEJBUXNGQURBdU1Td3dLZ1lEVlFRREV5TlpkV0pwWTI4Z1ZUSkdJRkp2YjNRZ1EwRWdVMlZ5YVdGc0lEUTFOekl3TURZek1UQWdGdzB4TkRBNE1ERXdNREF3TURCYUdBOHlNRFV3TURrd05EQXdNREF3TUZvd0xqRXNNQ29HQTFVRUF4TWpXWFZpYVdOdklGVXlSaUJTYjI5MElFTkJJRk5sY21saGJDQTBOVGN5TURBMk16RXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFDL2p3WXVoQlZscWFpWVdFTXNyV0Zpc2dKK1B0TTkxZVNycEk0VEs3VTUzbXdDSWF3U0RIeTh2VW1rNU4yS0FqOWFidlQ5TlA1U01TMWhRaTN1c3hvWUdvblhRZ2ZPNlpYeVVBOWErS0FrcWRGbkJubHl1Z1NlQ09lcDhFZFpGZnNhUkZ0TWprd3o1R2N6MlB5NHZJWXZDZE1IUHR3YXowYlZ1em5ldWVJRXo2VG5RakU2M1JkdDJ6YnduZWJ3VEc1WnliZVdTd2J6eStCSjM0WkhjVWhQQVk4OXlKUVh1RTBJek1aRmNFQmJQTlJiV0VDUktnanEvL3FUOW5tRE9GVmxTUkN0MndpcVBTemx1d24rditzdVFFQnNValRHTUVkMjV0S1hYVGtOVzIxd0lXYnhlU3lVb1RYd0x2R1M2eGx3UVNnTnBrMnFYWXdmOGlYZzdWV1pBZ01CQUFHalFqQkFNQjBHQTFVZERnUVdCQlFnSXZ6MGJOR0poamdwVG9rc3lLcFA5eHY5b0RBUEJnTlZIUk1FQ0RBR0FRSC9BZ0VBTUE0R0ExVWREd0VCL3dRRUF3SUJCakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBanZqdU9NRFNhK0pYRkNMeUJLc3ljWHRCVlpzSjRVZTNMYmFFc1BZNE1ZTi9oSVE1Wk01cDdFamZjbk1HNEN0WWtOc2ZOSGMwQWhCTGRxNDVyblQ4N3EvNk8zdlVFdE5NYWZiaFU2a3RoWDdZKzlYRk45TnBtWXhyK2VrVlk1eE94aThoOUpESWdvTVA0VkIxdVMwYXVuTDFJR3FyTm9vTDltbUZuTDJrTFZWZWU2L1ZSNkM1K0tTVENNQ1dwcE11SklaSUkydjlvNGRrb1o4WTdRUmpRbExmWXpkM3FHdEtidzd4YUYxVXNHLzV4VWIvQnR3YjJYMmc0SW5waUIveXQvM0NwUVhwaVdYL0s0bUJ2VUtpR24wNVpzcWVZMWd4NGcweExCcWNVOXBzbXlQeksrVnNndzJqZVJRNUpsS0R5cUUwaGViZkMxdHZGdTBDQ3JKRmN3PT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZkNBWUFBQUNHVnMrTUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFIWVlBQUIyR0FWMmlFNEVBQUFiTlNVUkJWRmhIcFZkN1ROVjFGRC8zZDU5d2VRU0lnUzlBUUFYY0ZMQVFaaTlmcGVWejF0WS9XVFpyNVd4cGM3VzVrbkxhNWpJM1o4NXNyUzJuTTJzanRXd1pTN0lVSDRINHhDbkVReDREQVpGNzRWN3VzODg1djkvbEluQnZWSi9CNFB2OW51LzVudS81bnZNNTU2ZnpBL1F2MEhiL0lyWDNWRktQbzQ1Y25tNGluVUlXWXdMRlJtWlFVdXdqRkcvTjFpUkhoMUVaME5SVlJ1ZHF0MUJkKzJuU0t5Uy9PaHlzMCtsazNlLzNrUTlxdkQ0WlV0YTRWVlNVdVkwZWlweWlUaEFmb2NvT1JWZ0R1dXczcUtSaUFkM3JiY0V0alRqWUlvZjZXYUhzQ216VlBXQ014K2NnaDh0THFXTUthTVdzVWpMcW8yUnRKSVEwb096bWVycFF1NGVzWmdzT05rR3hIN2Qwa2R2VFQxN3M0T01VN1ZJOFpoamdHYU0rQXE5aUVOdThQaWYxdWR6MDdNd3ZLV2Y4R2xWb0NFWTA0UEM1V2RUYVhZRmJSOHZOdkw1KzNLZ2ZiNXhOTXlhOVJhbUppeW5hTWxHVFZ0RmxyNmJhOXUrcHFuRVg0dU11UlJnalNZRWhyTjd1dEZGZTZscWFsN05ma3c1aW1BR0h5blBwYms4Vm1ZMHhzdG5wdGxGQ1ZDWXR6VHVCTjgzUXBNTGpUdGV2ZFB6U1VuSjdlOG1ranhaMzlmWGJLRGZsZFpxYnZVK1RVZ0duQlZGNmZRMmlQSGc0VzE2VVdVd3Z6YmsxNnNNWkUrUG4wcHZ6N0pTZXVBeWVzOGxjcENtYUt1by9wK3FXcjJVY3dJQUhXcnZQMFlFemhYQXRMQWJzc0hocDdpR2FtdnlpalA4cnlxclhVV1g5WG9vd3h5QXVmTkJycDQzUE9CRlhabGtmOE1EUmlxY3B5b3dBd3B1ejJ4K2ZXdnovRHRkZTlzbXN6eWd0Y1I2QzF3YmR6Qmw2T2xxNVdOWVk0b0dhdGhKTXJrVEV4MGpBUlNIQVZzKzVyWWtRTlhiK1FnZlBMc1E2Z1h5SW5zcmVRZm1wbTdSVkZZZkw4Nm4xZmlVT2tZdlNoa1VQeHZidWt6b3k2SzFpaE0xaG8zWHpXNkV2U2ZYQStkcGlXR2FXZCtkb1h6THptR3dLWUZMQ0FzUkFsUEJBaE1sQ0ZYVTd0QlVWUHI4SGdWY0pIV3ErRjAwcGxyK0RNVGRyUDR6dnhZMTFrTk1oeFQrU2VUR2crZDRWNUxRSml0eVVHSk5COFZGWnNqZ1lCWk0vSUkvWENUa2owcXlET3BGMkFWUTE3Q0lqVXAvRG5UMVVrTDVGNWdkaitzUzF3ZzFnRTNnaWdtNjBmQ1h6U25QWGJ5QVBiSVh2K0lEcEUxNlRoYUhJUzlza3lobG1NRTVGM2NmcUFLaHEyQzBFNVBIMWdZYVhhTFBEa1pHMEhESk9uS1dIcDUxSTB6NVNPdXg4ZTFXQXVaemRIUXJUa3A4VG1qWG9JK2xhMHdHWnN6dWJxYk8zaWZRNkEvVzd2VlNZc1YzbVIwSkt3a0tjNFdIaUJrbVI4STNDQ2dJODdvT0w0cXpUNVArUlVKQmVqRU9nQVBLOGhZUHphdE0rZUlUcDJJTzl5VFFtZXJvbVBSeHgxcXhBY3NpbGUvdWJTZUViY1dRR1lFQ2doY0xZMkh5S2pvZ2pIMjVoTXBqcFV2MU91Z2xpNGVoMmVSdzBPMzJiSmpreXVDZ056ZzB2emxZTVNpU3MwdW9vNE1HN2hNT2pDRWFYMXlGRTBuU3ZqQnp1VG5FcEs4Nlo4SW9xRkFJdWJ3OGtnOUFyRWFSRVdTWkkrakg0WGJwNmc5RTlFbkpUM29hUnpETitNVUpCUURIbjU2YThvVW1FQnVzT3hCcy9ONSt0SkViUGtBRkRqOFVHdk9zL0lXdmNTZ2xHQmh2UzcvRlRZZnBXR1lkRFk4ZlBBeFdTQTM1c1RDNHA0K0xtNEFhcUlvUGVRdGZ1Zks2SmgwWmh4bGJzVVhPU21YTmlmRDVaVEFreURvZmJiY2NseG5BOFdOQXF4Q2JSTnlraFh4UXBhRHc2N2ZYVVlic2lHMEtodHYyb2VJdmg4cmhRTVlPY0VBcVhHL2VJK3puZ09jNXl4cjhxODJJQU0xYy9GTEZPcGxxdTVlRlFYck1aekdjVkNqWWJMV0c1STRCVDFldVJybGJ4dE5PdE1pdERERWhMWElJeW5BQXZ1T0VXRTNYM05kQWZ0OTRWZ2FHNDJYSVF0MFpYNlBlQ0UvcVFGZTlySzZIeDdZVTUwS3ZIN2ZXNGZTK3E3S0tCSnhzZ2dCWDVwU0FHaDFqSXJWaDV6UTZ3M1JmYWFoQlhtL2FDYkNaVGpDVUZVVHlXWnFXOXA2Mk1qSlBYVnFPclBnTU80TnY3NEdrZitvd2Z0TlZCRFFuakZKcUhTdzE3cFh2aFdXNUtacWUvUTQ5Ti9VU1RDQVZXb1FYRklIQkhYWGUzRlByVURzdUdEbXRGL2hIS1RIcGVreGhpQU9QSStTSnE2UzZIRjRJOVlXemtCSlRvNDZpVU16V3A4UGlyL1JpZHVMeEtZc1Nrc1Y4dkxsT1F2aEdYMllsUjBPQmhCakMrdS9nRWN2WTBBcEs3WWs0MU54alBTUW5XRkhURjY2VXJqZ2V2QjhDdTVhK2wydllTUlB0dVZEbzczaGhkTVNIblVYN3RUanNWWkd4QWwvV3B0aU9JRVExZ25MMjltWDYvdFIxdG1sa1lqOFc0WCtDU2pXY1VER1kxTnBTL0M3aFNLcWlNTE0vbDJRbVNXWjczRGR6K2dpbzhCQ0VOWVBRNDZxbmt6d1hVYnF2Qmt4alVRc1dmWkZnYnVvM3JBZit3TjdqT085MCt5bng0UGkzTCswbllMMVNjaERVZ0FQNGdQVi83SWQxcSsxSFNobXVHa0lxV1JQZ3l4TUZxUDhIZmpUbmpYd1k1YlFmYkpjdDZPSXpLZ01Ib3RGL0hlMWVnc2F4SFNxRzZ3ZmRtUTV4OE55VEZGcUJjcDJpU293SFIzeWs1KzM2aEY3dlhBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiXSwiZXh0ZW5zaW9ucyI6WyJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiJmOGEwMTFmMzhjMGE0ZDE1ODAwNjE3MTExZjllZGM3ZCIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZX0sIm1heE1zZ1NpemUiOjEyMDAsInBpblV2QXV0aFByb3RvY29scyI6WzFdfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjAtMDUtMTIiLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IlNlY3VyaXR5IEtleSBieSBZdWJpY28iLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDE4MDkyNjAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4wLjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMC4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIwLTA1LTEyIn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMC0wNS0xMiJ9LHsiYWFpZCI6IjAwMjQjMTU2MSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFpZCI6IjAwMjQjMTU2MSIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJHK0RTQkFLZXlzdG9yZUFuZHJvaWQifSwiZGVzY3JpcHRpb24iOiJHK0QgU0JBS2V5c3RvcmVBbmRyb2lkIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoidWFmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6Mn0seyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfZGVyIl0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9kZXIiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbInNvZnR3YXJlIl0sImF0dGFjaG1lbnRIaW50IjpbImludGVybmFsIl0sInRjRGlzcGxheSI6WyJhbnkiLCJwcml2aWxlZ2VkX3NvZnR3YXJlIl0sInRjRGlzcGxheUNvbnRlbnRUeXBlIjoiaW1hZ2UvcG5nIiwidGNEaXNwbGF5UE5HQ2hhcmFjdGVyaXN0aWNzIjpbeyJ3aWR0aCI6NTQwLCJoZWlnaHQiOjk2MCwiYml0RGVwdGgiOjE2LCJjb2xvclR5cGUiOjIsImNvbXByZXNzaW9uIjowLCJmaWx0ZXIiOjAsImludGVybGFjZSI6MH1dLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQm1EQ0NBVDBDQkdRZFBSMHdDZ1lJS29aSXpqMEVBd0l3VmpFTE1Ba0dBMVVFQmhNQ1NVNHhDekFKQmdOVkJBZ01BazFJTVEwd0N3WURWUVFIREFSUVZVNUZNUXN3Q1FZRFZRUUtEQUpIUkRFTE1Ba0dBMVVFQ3d3Q1JGTXhFVEFQQmdOVkJBTU1DRUZWVkVoU1QwOVVNQjRYRFRJek1ETXlOREEyTURNd09Wb1hEVFF6TURNeU5EQTJNRE13T1Zvd1ZqRUxNQWtHQTFVRUJoTUNTVTR4Q3pBSkJnTlZCQWdNQWsxSU1RMHdDd1lEVlFRSERBUlFWVTVGTVFzd0NRWURWUVFLREFKSFJERUxNQWtHQTFVRUN3d0NSRk14RVRBUEJnTlZCQU1NQ0VGVlZFaFNUMDlVTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFU0lwSS9kS1lDRFloendEMndTZllBT2Ivbk5haVBjV0YyMXZ4WmsvVGdEME9KdGNEK09QbTY0bndaZEZXU0VZU1c3aU9xbnBtSnlkZThtZ3IvdG5BaXpBS0JnZ3Foa2pPUFFRREFnTkpBREJHQWlFQTNidmhhelFGUHdteVhseEsveENYZmg3ZzFYMUVvYkxDM0wrMkdPUnhwN2dDSVFDZk5FVFgvbTJCZWJSTFhJNExNUDFFUUdQWEZEZjdPazc0VTd4YmlNNFZrQT09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsLzlqLzRBQVFTa1pKUmdBQkFRQUFBUUFCQUFELzJ3QkRBQU1DQWdNQ0FnTURBd01FQXdNRUJRZ0ZCUVFFQlFvSEJ3WUlEQW9NREFzS0N3c05EaElRRFE0UkRnc0xFQllRRVJNVUZSVVZEQThYR0JZVUdCSVVGUlQvMndCREFRTUVCQVVFQlFrRkJRa1VEUXNORkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCVC93Z0FSQ0FESUFNZ0RBU0lBQWhFQkF4RUIvOFFBSEFBQkFBTUFBd0VCQUFBQUFBQUFBQUFBQUFjSUNRUUZCZ0lELzhRQUd3RUJBQUlEQVFFQUFBQUFBQUFBQUFBQUFBRURBZ1VHQkFmLzJnQU1Bd0VBQWhBREVBQUFBYXlqNkY1d0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFZ2QzZURUNXhMSjM2eEZvYzVsOGxHUFNYS3N6TkRNMDlOVmROKzhQOFpkTEtCSHBpZSt2aFR1b2ZOWE5Bdm0rTXlVbVJuMWRRWmdBSE00Y3cxTGljUDFWTGVRdWpUekoyZEpNMzM1cGhhYVVqZWFiS1VSdmRWN1NaMWRUUzZTdUZrd1EvYkhyNzY1dDJGMW1kazg3TlBxRStTWXlIUjFnQUxCMThsdnlUZWpQWFFxbXVnc2dZZFZWcDF5YUhmWExXM3ZVUWsycGFJcWQ1TXJZcUlQZmpkTE5tVFl5MitDVG94c2I2SXR0U3U2bEE5QlpIQTZxb0FCeU9PTkhQMnBQZW5qcnMvOEF4bW5jWWJMQ2lhNnoweFNtYVp0OUhSTWxVUnZkRitxem9ZdXMzbGRLVjF1NmlhbTN0N1BydEpuMEdlbnUvQTlEV0d4eEFBQWV2OGd4WEtrL09acWM5Sm1iS2xwTXpaR2t6TmthVE0yUnBOd002RXJoMWo4dzJPSWV5QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUC84UUFLQkFBQVFNREF3UUJCUUVBQUFBQUFBQUFCUUFFQmdJREJ4VVhJQUVRRXpZUkVoWXdOSEExLzlvQUNBRUJBQUVGQXY2YkdJU1JsTlliRmdVWlMzRk1tbFBndEtXMmJmU0xyRTFQU3VXK0MwdkJhWGd0THdXbDRMU2NpR0x5azFpZ09ScGtzUUl4ZTkrR0FRbXFVUEc3ZTAwc1BuN1lhM2U1ZEJ0cTk1eGFPWllIRkF5eEo3Y3BCa3hoSGkyODR0YnppMXZPTFRITFFKM1cxZDJIMWg2eXNFV3M1aDF5S0VPYlJyY2ZPZ1lpeUJGU1dRdDR5S1BTRjdJM3ZERW50eXlmN3R3amNvZlJoNENOTjVBTWxBSzNJd2x5M1ZadWNzVk1PajJYTExSbXA5SSsxR0pqMWRPMGg1YlNIbEFvQ1ZqcDlUWEhoWTlKZHBEeTJrUEp6aXc0MGJkc09tYW01ZFpIWWRCOHc1WVkrTmVVNCtycEx1emI5Ym1lL3dBUHRqWDZ2dlZaZitQdXZsaTRoMFlTOVpkQ1ZNejNhbkpzam9wM1BraTNQa2l4NU5UQjZSS2RUbzJGbEc1OGtXNThrVi9KRWhkV08ySEFsVjRnc2hrT2hLWDhyRit0cmZqUnkxSXd4NEcya1F5U1JSL0YzWERFbnR5eWY3dHdpc05mU2x5SUZOd2crWVNHaU5BNnF1dGRYT0VURzdFMzdCKzNLTkw3ZTA2dFBjWHg5NVh0Q0NXMElKYlFna0JnQXVPUDBheDBKUEV0b1FTMmhCTGFFRW1PTTQreHJ0V3FMRnNvVmFobVV4bGw2V0V2d3g2VWtJemZDNWVHUEtXOHFET3FkZEdyWFJxMTBhdGRHclhScTEwYXRkR3JYUnExMGFuTXRDdEtUZVlCN1drOUpIOGtjLzAzLzhRQUhSRUFBZ0lDQXdFQUFBQUFBQUFBQUFBQUFBRVJFZ0lRSUNFeFVQL2FBQWdCQXdFQlB3SDZ5eGs2UktGN3FVU2g0enlmUzFERW1aRVBXTE11QzlNdFdSWWJnc2h1UmVtWG5GT1NwVml4WTFKVmxXSlFOenlzV0xGaXhZYm43SC8veEFBdUVRQUJBd0VGQmdVRkFRQUFBQUFBQUFBQ0FBRURCQVVSRlNGU0VoUWdNVUZSRXlJeVlZRVFKRkJ4OERQLzJnQUlBUUlCQVQ4Qi9MVmxkNFBrajVyN2lwenpkUjBsUXhzN2lxci9BQVA5S09NNVgyUXpXNTFPbGJyVWpuc3VvSytXRjdqelpSbU1nc1k4dUNVL0NqYyt5cFl0Nm11TDl1aEZoYTRWdlVHdGxVMU1KUWt6RXJPa0dPVjNON3NsdmNHdGtFb1MraDcxYUZNeGc4cmMyVmxTdmU4WHp3Vlk3VUJzeXNzMkdaMmZyOU1MbTd0L2ZDa3M2V01YTjNiSlFRRlVGc0FzTG03dC9mQ29hWTZablkrcXF6WUlDZDFaWTN6WCszRFZVNVVzbTBQTG9vYlVHNjZWbGljSHVwN1Foa2lJRzZxaG5DbmtjajdMRTRQZFBha0hTOVZOVWRXVjNUc3FLbTNlUHpjMzRTRmpiWkpIWmNSWmk5eXdrZGF3a2Rhd2tkYXdrZGF3a05TaHBJb1BTMmY1ai8vRUFFTVFBQUVEQWdBSEN3b0VCUVVBQUFBQUFBRUNBd1FBRVJBU0V5RXhRWk1GSUNJak16VlJZWkdoMFJRd01qUlNZbkdCd2VGQ2M3R3lVM0NTcy9CVWNuU0N3di9hQUFnQkFRQUdQd0wrWnQyRVpLTUR3cERuby9McG9GOXM3b1BlMDk2UDlOV1lpTU1qb1EyQlhKcDdLM1dJUWtIeVZ6Vjd1QUFnRVpCZW41VnlhZXl1VFQyVnlhZXl1VFQyVnlhZXlyUHdvN3c5OW9HbEtpaFc1NzNTM25SL1NmcFZwVGVNeW84Qjl2T2hYbWk5SXVuYzVrOE1qOFo5a1VobGx0TFRTQlpLRWl3RkYrVStpTzBQeHVLdFJTMEpFcjNtMjdEdklyMUtaMko4YW13MjRrcEszMlZOZ3F4YkM0K09BZmtMK21CNkE5RmtPT05XdXBHTGJPTDlQWFhxVXpzVDQxNmxNN0UrTmVwVE94UGpRUzRYNG5XNjNtN3IwbDZPOGg5cFdoYmFyaW5JOGxwTHpMZ3NwQ3E0RjNJTDJkbHc2dmRQWDVobU95TVoxMVlRa2RacVBCWTlGcE5pZmFPczA1TWY0WDRXMjlhMWRGR1JNZHh2WlFQUlFPZ0RlajhoZjB3VC9nMy9BRzA3MFBSWE9MUEtNcTlGWS96WFRNMk1lQXZTazZVbldEVWlFdTJNb1hiVjdLOVJwVGF4aXJTYkVIVWQrMHRRdUk3YW5mcDljSGtRUEV3MGdXOTQ1ejlNSVVCSHNjL0sxb2piV3RFYmEwSmNzTTVISnFUd0YzT0NWTmlobklPWW1ManVXT1pJRmFJMjFyUkcydE92dUNQaU5wSzFXYzFEQy91Y284VklSanBIdmo3ZnBnbkJJc2wwaDRmTVorKysvbTlQazMvb1lOMWNiVGx6aGEvMmp6RzZQL0hjL2FjTzV1TDByL1lyQW0zK21SZnRPL2pwVWJKa0lVejlSM2dZRWJvSlR4TXRPYysrTTM2V3doSW5pd3pjaTM0VnpnTmczNFZ6Z05nMzRVSXMyWGxtTWtwV0xrMHB6L0lZSmNTSE15VWRHSmlweVNEcFFEckZjNERZTitGYzREWU4rRk9NdVRncHR4SlNvWkZHZy9MREozVVduaW1VNUpCNlZIVDNmcmczUVdrM1EyckpEL3FMSHZ2djIzbWxZamphZ3BLaHFJcVBOYXRkWXN0UHNyMWluWVVrY0JlaFEwb1ZxSW90eW03dEU4VytuMEYvNTBiMGZrTCttQ2Y4Ry83YWQ2QXlndFJRZU1rcUhCSHc2VFRNT0tuRlphRnVzOVpwK1VTTXNSaU1wNlY2dkdpcFJ1bzV5VDVnNDEzSUx2TE5EOXc2NmJreFhVdk1MRjBxVFNtbm0wdXRxMG9XTGcwVkNLcU9UL0JjSTdxMHl0cjlxMHl0cjlxMHl0cjlxOHNpRi9LNHBUeGk3ajlNRHM2U1g4czVhK0l1d3pDM1IxVnBsYlg3VnBsYlg3VnBsYlg3VUZlUm1Rb2Z4MWxYZG9wS0cwSmJRbk1FcEZnS2NsVEhReXlqV2RmVUt5eXJ0eG04ekxYc2pwK1Btc2VFOVpCOU5sZWRDdmxRVFBiWEFkMW0yT2p1ejFkdmRTSWVvdkFHdWNJdTJUWE9FWGJKcm5DTHRrMXpoRjJ5YTV3aTdaTmM0UmRzbXVjSXUyVFhPRVhiSnJuQ0x0azFkM2RTSU9vT2hSN0JSVHVjeXVhN3FXdmdJOGF5MDU3SHQ2TFl6SVI4Qi9NNy84UUFLQkFCQUFFQkJRZ0RBUUVBQUFBQUFBQUFBUkVBSVRGQlVXRVFjWUdSb2NIdzhTQXcwYkZ3LzlvQUNBRUJBQUUvSWY4QVRZam80YURUTTBPTVVZNjN2RXRCWkcrYUJGdUQraFhxOUc1RUNITnN1NWFCTlBWNjlYcjFldlY2OVhwYzVZZjJ5bVpPMFJaMVQraWdaNFRnaE9Eby9VVEJ1Nk4vTi9YQTMwYTQwU09RVmVxckFkMi9Tb01IZ3VyT214R0VobnBDQXVXMzRVU0xxaGxoTVNQZ1JvMGJwdHN0M082WGFhb2JpVkNFSk1pZVkwREUwM2htMEhVNHg4OWRxWEpCUm1FU0RiaXVxeTFicGl3TUx1SDlYQUdsM09XN2NzdjY0L1pSd1Zzb1N1T00rWXFmdWVRZk5GQ3FKdnd2VTZMVCsyNytCaFBuWmtIM093OVo4TmhaZWhhWW5KSERiQTVvUEJYblB5dk9mbEUyREc4eEZrYWJIbVJHSUdzak1hODUrVjV6OHEvVVBGZ2x3MDJwTmtaZkozejVObkh2SUNmbUZCM1c2MzdiRGFQTTVZZEkyK1d5K3RRRmJKdE4xdHNXYmN4NmZuUEFwWE5Pb0xqc1RCREJ1QkVjUXVlMG9ZSUdGdG9VSjJyQkxNaUxRZGhuQXBZTWxhamV1MUNoaUZnWGtJU3pMdFNnSmRrckc3WXd3ZzRaMEh6TkF2UmlKSG5TaENDMjY3L1JHc2N1WFljMGZwalRsTE1kaHZ3ZFZ2MlVjSU5CckNjVCtBNHhWajFsTjVqbUsyMWF0RVdNZEJlMEtmdzJRbFg2SElPaGVETFJkYnNrbkRxS3gvSFNpSjlCWnRScTB5OHhQTkljQ3ZTcWVsVTlLb2JRTmhJRyt5R3pEZGY3QUVHZ1Y2VlQwcW5wVk1OSUVqdWNTZ0RGRGdaQVVTV3JieFlCaXVWTFFsbnZFYXNlQmg5UytZWjVoNXRTR3NEZEZMeHNPWEdqVTUvQkZtdlB1OWVmZDY4KzcxNTkzcno3dlhuM2V2UHU5ZWZkNjgrNzB5aW42NExXQnVRUjF0dGJvTjlTVTZWR1dCdnYvd0JPLzlvQURBTUJBQUlBQXdBQUFCRDc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nm9Namc0eHZQMzc3Nm1wenl5dnplcHI3NzczajVUL3o1ZS96Nzc2NHB2OEF2cS82SUcrKysrdmMvd0QvQVA4QXRmOEF2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2L3hBQWVFUUVBQWdFRkFRRUFBQUFBQUFBQUFBQUJBQkV4RUNBaFVXRkJVUC9hQUFnQkF3RUJQeEQ5Yk1kQnF6TUVVTXoybG4yQmhFUnAyQmJVV0NabmhMQnhBcHhQS0ltWlExRDkyY1JEeHJBV29BdDBpd2hzYm9EVEhycEFSakNqV2htNXRHb016TDlTL1V2MUw5Uy9VWEw5ai8vRUFDZ1JBUUFCQVFVSUF3RUJBQUFBQUFBQUFBRUFFU0ZCWVhIaElERlJnWkdoc2RIQjhQRlFFUC9hQUFnQkFnRUJQeEQrc2IzMTl1TllEbzd0UFJGVTBFODV6dmtvZFZ2bU43ZTQrS3RKVSszdzd6SitHS3pWYkdHUll0VnFXL1RGZ1lxQmRQM0lDOVVhRllYUVZGdVpQMUlVbzBjSVhOTjlpWTVRRG15bEhoK09tdzNCSGkyWEFTek94OGY0dTE3akZIa0ZiRjlSK2dJVnQ1Rnc4Wis0d3BnMUc2dnlFdkJCT2JaRVViaGVUWVFTak54MnFxNFlabmVVVmRlSmZ5dW4xR3NyUTFDRm1zcUZVVVdabnFmVWF3QlVMa2U0TUpTNExiZmxqWnljT0J5ODdMMEtqY3hxcXdienZiM21LNmF6RmROWml1bXN4WFRXRlMxOUNXM25HMTA1ZjJQL3hBQW1FQUVBQVFNREJBTUFBd0VBQUFBQUFBQUJFUUFoTVJCQllTQlJjWUV3d2ZCd2thSFIvOW9BQ0FFQkFBRS9FUDVOdmNVNFpraTUrQXRLUTBIckJaN3FlZUp2bWppdEFOZWdyOU45VXpHTUFqc3NhU0dreEI2TmZwdnF2MDMxWDZiNnI5TjlWK20rcVBNVUpyL1NpeDgrbm9nNG9xbUJQYmtzREdOc2JLU0UvRVMweFRIQTJGa1N1Z0VJUVNXWGhjQXNGV1ZmVFIyQ3QxRmhLN0ZUSnRBcGVIU0RDekozZnVoTUVUQXZIUTBPTG05bG8xZ0RKa2VoZ3dZTkQreEUrV0RsQTcwYnA1N29jSWttNWtwdDNmdHJDTUlJUkJFUWFQMEtVd1hXV3VrT0lrdkQ0SEZkd2RQZ2xMMWpBdUpWK1krQ1lMQlUvaXdPQVYyeFpnTWhEQU1ZUGoxQnRJZ1lsdkJLVy95TkZKQkcycHNtMURBOWdvcXdoMkdPQVlUMGtKWkduaWtKdzFCMkp3WkJ2UmliZWhBZzdpSjFsdGlra2lMOGdqa2FNQkZRL3dCbmZ3Yys3cmRQYVlzSkovdlhQTmxnZDhCaGE3UjlzUkozVkpIS3hHdWVaRmIxZERFWnNLMnJMejBaQ2lvMmttNzhlaENUNEVTdCsrdktxSk43ditrNkJMSlRkT0hXZmg5dngzc2JSV2U0OWFOT0VRaCtkdXNhTlMwRUkvUU9Sb3lJU2wzbjJoWGQ0dW9HSHlxQVFHdVRKYUZHemE3WVpMYVkwbVdmdGR3MGwxMXpCYldUSnYxRHNzbkNrcEpFZFNJQ0phV1M0NGZIUXlyK0dURW50TTk5ZU01ZEREY2dIMVF4RVM1S0NiMnVKenVGTXFTRFM4U25DTHdpbGxUQWJDcnNvN1BOaHlRdnh0RkJLQlFobnNMZUczSkM5Wno4SVYzZEJMS2U3WUNDcHJMUmF2Rm05M2tUS1VnWE1rSmxWM1ZaK0IrNnNURllEWUZiV0RkRkFiQXBNRzRtUWJLQkVSQks0Rm51aUVpZVNtQUZkSzhKNFFIUXpac3pOVnl5L0Jjc2I2RW1tQ1BKOEpNaStaNkdiTm5QTTAreGN6MkZEVUtCZGdBQTRLa2FDZk93QzhhQVN0WHFZNlN0NGJNWW94QVNCK0o5Z3dURjVpSVdtQXRNU1ZEWW9LSjNDdWRtSjNab0VlSmdieVllejR2L0FQOEEvd0QvQVA4QS93RC9BUGdnUkw2eFFlaW9iMFJWL0JiOGpzb0EzYkVtTWpZd0pVcUNWaitUdi8vWiJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wNC0xNiJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDQtMTYifSx7ImFhZ3VpZCI6Ijg5NzY2MzFiLWQ0YTAtNDI3Zi01NzczLTBlYzcxYzllMDI3OSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiODk3NjYzMWItZDRhMC00MjdmLTU3NzMtMGVjNzFjOWUwMjc5IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlNvbG8gVGFwIFNlY3AyNTZSMSBGSURPMiBDVEFQMiBBdXRoZW50aWNhdG9yIn0sImRlc2NyaXB0aW9uIjoiU29sbyBUYXAgU2VjcDI1NlIxIEZJRE8yIENUQVAyIEF1dGhlbnRpY2F0b3IiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MiwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQjlEQ0NBWm9DQ1FERVIyT1NqL1MrakRBS0JnZ3Foa2pPUFFRREFqQ0JnREVMTUFrR0ExVUVCaE1DVlZNeEVUQVBCZ05WQkFnTUNFMWhjbmxzWVc1a01SSXdFQVlEVlFRS0RBbFRiMnh2SUV0bGVYTXhFREFPQmdOVkJBc01CMUp2YjNRZ1EwRXhGVEFUQmdOVkJBTU1ESE52Ykc5clpYbHpMbU52YlRFaE1COEdDU3FHU0liM0RRRUpBUllTYUdWc2JHOUFjMjlzYjJ0bGVYTXVZMjl0TUNBWERURTRNVEV4TVRFeU5URTBNbG9ZRHpJd05qZ3hNREk1TVRJMU1UUXlXakNCZ0RFTE1Ba0dBMVVFQmhNQ1ZWTXhFVEFQQmdOVkJBZ01DRTFoY25sc1lXNWtNUkl3RUFZRFZRUUtEQWxUYjJ4dklFdGxlWE14RURBT0JnTlZCQXNNQjFKdmIzUWdRMEV4RlRBVEJnTlZCQU1NREhOdmJHOXJaWGx6TG1OdmJURWhNQjhHQ1NxR1NJYjNEUUVKQVJZU2FHVnNiRzlBYzI5c2IydGxlWE11WTI5dE1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRVdIQU4wQ0NKVlpkTXMwb2t0WjVtOTN1eG1CMWl5cThFTFJMdHFWRkxTT2lIUUVhYjU2cVJUQi9RenJwR0FZKytZMm13K3ZSdVFNTmhCaVUwS3p3akJqQUtCZ2dxaGtqT1BRUURBZ05JQURCRkFpRUF6OVNsckFYSWxFdTg3dnJhNTRySUNQcys0YjBxaHAzUGR6Y1RnN3J2blAwQ0lHanh6bHRlUVF4K2pRR2Q3cndTWnVFNVJXVVBWeWdZaFVzdFFPOXpOVU9zIl0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUxRQUFBQzBDQU1BQUFBS0UvWUFBQUFBQkdkQlRVRUFBTEdQQy94aEJRQUFBQ0JqU0ZKTkFBQjZKZ0FBZ0lRQUFQb0FBQUNBNkFBQWRUQUFBT3BnQUFBNm1BQUFGM0NjdWxFOEFBQUMrbEJNVkVYLy8vL3c4UERYMTllK3ZiMmxwS1NrbzZPL3ZyN2EyZG4xOVBYNit2cTd1cnA2ZUhoZlhGeEdRa01zS1Nvakh5QXpMekJOU2t0b1pXYUtpSWpTMGRMWTE5aURnWUg4Ky96WjJObDRkbmN4TFM2WGxaVzZ1Ym40K1BqbzUrZDRkWFlsSVNJNU5UYXVySzMrL3Y2NHQ3Y3NLQ2xaVmxmdjcrK2pvYUhrNU9RNU5qZnI2K3ZnMytCbFltSldVMVNvcHFmSHhzWW1JeU05T1RwU1QxQS9QRDA0TkRWOGVYclcxZFg4L1B6ZTN0NkhoWVV0S2lxOHVyc3ZLeXpqNCtQdjd1NWZYRjFuWkdYUjBORW5JeVRoNE9EMDlQUXJKeWhhVjFqbTV1WitmSDFFUUVIRnhNVEt5Y3EzdGJhaW9LR05pNHkydExYdTdlN0d4Y1d4c0xDZW5KeVJqNUNtcGFYUXo4K1JqNDgvT3p6RXc4U1dsSlJWVWxNbUlpTlRVRkdVa3BQOS9mM0l4OGVJaG9aSFJFVmtZV0trb3FLZW5aM1UwOU5oWGwvVDB0SktSMGQ3ZVhra0lDR0NnSUJzYW1wcmFXblYxTlFxSmlkcmFHbmw1ZVcwczdOWFZGVHM3T3hGUVVMMjl2WStPanQyYzNRb0pDVmNXVnFhbUpuTXk4dk56TXlibVpvNk56am41dWMzTXpUcDZlbFlWVlg3Ky90bVpHUmlYMkRPemMxU1RrK1ZrNU9QalkzcTZ1bzBNVEZ0YTJ1QmYzOU1TVXFHaElWZVcxdkx5c3V3cjYrcXFLaTN0clkxTVRMeTh2TGo0dUpiV0ZuS3ljbENQejhwSlNhcXFhbElSVWJjM055c3E2dXlzYkd6c3JKMWNuUGYzdDh6TURFdUtpdVpsNWlobjZDY21wcjI5ZlhKeU1oUFRFMkxpSW4zOS9kZFdsczhPRGx6Y1hGeWNIQ0FmbjVVVVZLWGxwWkxSMGgwY25KWVZWYTV1TGhEUUVDUWpvNmZuWjVKUmtaeGJtOWpZR0V3TEMxTVNFbGxZMlB6OC9OQlBqOVJUazdiMnRyRHdzSlFUVTJwcDZod2JXNU9TMHlMaVlwZ1hWN1B6czc1K2ZscVoyZ3lMaTg3T0RqQ3djR2RtNXVKaDRlcnFxcEFQVDZucGFiUTBOQ0VnWUorZTN6eDhmR3RyS3pBdjc5eWIzQ0ZnNFNTa0pGdWEyeTFzN1M5dTd5d3JxL0R3c09NaW91RWdvUGMyOXVZbHBlOXZMMTllbnZ0N2UzZDNkMDJNak92cmE3cDZPaWducDlwWm1kM2RIWEJ3TURpNGVGR1EwUi9mWDZPakl4dmJHM1cxdGFjMTJWNEFBQUFBV0pMUjBRQWlBVWRTQUFBQUFkMFNVMUZCK0lKR2hjNkhJMHQ4bUFBQUEyVFNVUkJWSGphN1Z4NWZCUkZGaTdDSFVrYVJBeTN3VUM0eEpBQVM3akNFUWdva1ZQa1RCaXlpa0NHeTRVVkNVSE9vSWFRY0NjWWdzZ3B5eEZBRVRjQ0lnUnc1VWdNdUFyb3hndFdGUEJZVjExM2Y3L04xT3VlZXRWZDNUTTFFU1ovOVBkUHB0NVIvYVc3dXZwVjFhc2l4SVlOR3paczJMQmh3NFlOR3paczJMQmh3NFlOR3pac1NLTlNRT1VxVmF0VnIrRnZIbDZpWnVBOXRZS0NGUlcxNjl4Yjl6NWZxNnAzUDBQSUhhUmN2MEZEeFlDZ1JyN2Q4Y2FvamlaM2pITFRCMElWSVpvOUdGWlJTVGR2b1pnaXZHWEZKTjBxVkxGQVVPdUtTTHFLWW8wMmJTc2U2WWRhZUNDdHRLdHdwTU1lOXNSWlVTSXFHdW4yT29LUlVSMDZSdXBrblNRNzJ6dE8rZ0hNTHZnUG5hUExaQ0ZkdW5ialdIZXZXS1NiOUVBWGlJcHh5M3Yyd3FSN1Z5elNmVkQ5c1gyUm9sOGRwSW1UKzhUY2FkS0JxUDcrbktZZXZ0VURLaFRwcXFqK1IzalZvMGcxME9qWk12NnhRWU1IRHhvU1AxU1M5SUJod3grdk8rS0p3SkUrL3oralVQMmplVlZFYjRZeE9yZUFzZU1TTkxmUXhQR2R2U1h0bUpEMFI5Ym9ubnhLN2dscW1JZ2J3V05lT2owOVNkK1QxNXJzRmVudVUvUWRiSEpUSDBnM3gxVTRwM3J6eE5wT2N5b0dPS2VqajcwSjZSbUpSajlsWmxKTmFkSjkrQ29hUGhQeEp3OGVuYU1VSWFKWUd4R1RubVVTTDh6K3N5enBHc2FhbnAxYWJZNjVRK05neFFUQmpTMUpEemJ6VTU2ckw4dDZycWlhbEhtcDljVG04Mk5OcjYya1BHOUJlb0c1bjdKUU5vNmNiMVpUbXdlR1ZESllMMXBzY1cybDJSSlQwZ01UckJ5WHBrbXlYbVplVjhJTEwvSzJqcGV3dWx1djlPWGhNN0ZrZHBnSjZZd1YyS3hUNXVOWks3bVJ4eXBKMHBWTVhpekE2alhZZGkzU1JLNmpzVi9OVk55WHJEY2gvUWlTWk1PZHlKbU9aTEViSkZuZnQwS3h3c3U1YnN1UWpVeWNGNmhKTjZFbi80cERTSG9EZWhNV2JsYjlvaHNnczdtU3BFbnJsWmFzbGZHYTRhdEl1SVg1NHcvVVZpSHBiZWdCYldlTzl6Snh3a095ck9lTTJHSEpPdGtCZGloY2pZcEc3bWpLcExlSWROcE9WczVFMTMwUjJiMG1TN3JzdXJ0R1c3SCtDelhhbmNja2piRDNLaWJmbVNZZ3ZRZVZ1WGRrTDVPdmxpZGQxbDZIV3pTU3ZPb3VrKzdvYVhKZnNiN0lkSStBOUQ1V25NSmRkQjI2Ukw0dnJBbUppWmhlMjRUMWZwYytpWlVQOEo3bzhhY0xTTTlteFlPYzN3eGtPTjgzMG1WdzlFbC9lYWFBdE5NVlE3N095b204V3hEVHZDRWdqVHFkZlp6ZlVHUzQzbWZTTGpScHYveVFJWTU3czB4Uml4V2Y0VjMyTTgwMEFXbjBJQWJ4am5GTTgxUzVTTHZRT2oySUorMGFpaDFteGFtOCtWdE04MWNqNlh4VUxPQWQzMmFhSStVbVhZYWpYR2owTnQ4SWtuamJlL2lHb3lPZGc0clZlTWRqWmczSFY4ekhqYnRGbVNDY0ZkL2hUWTh6VFc4amFZSzZTdDFrMWJ0TU05RmJYdEYxVGpEczBXdFA0bHRkU0VnbTN3Z1FVTU5KRnBCRzBRM2ZDUG9od3kzRVd5eEVYbGw2NVNha2RKWU5pckpZOFJSdmlUNm95d1drVDdOaUE4N3ZEREljNWpYcHBjaXJvMTQ1SENrN0VTNzA0RDhGTFpGaGdZQjBNaXN1NWE1UWdPN0tVT0l0MEd1dktPL3BsS2hmVnY1V1ZtNkxPc0pOMkRDVnlXTUxCYVJSMmRrRk82SjNZYS9Ybk1uN21IVEQ2cHd1Qm44ZXp4TCtNWjlEaGc0VXQ0UVRBZWwrcUNQS1FvNTkwVjA0N3ozcEhPN3pGNFdqbWM2ZHNJb09XaHNoQVJyVFlJNFRSYVRKQlZidVVjZ2M3MGQyUmQ2VHhqMkNDM1ZlM1ZEc0VzOHArQ0FQeTJ2VHlZbWNFaWE1ZUVhcm9nZzlrZXpkUXRKNElEbzdSM09zZ2taYzh5UTRrMXpGZ0JXSG4zMVhMMU1mNmxnazJqRVNaSmZ3bk1LSFJFZ2FOMTVscFJvaGpzY1hrQXVYa2hVdnNGaGRsNnVCbTB4azR0OHJONy8vSEI2Z1hzdzNJVDBERDhaM1RtclUvcU81SCtNTFBDbkZtZlN6SE5lcWNFL3l4Y2RhbWFVVUVSUFM1RVBMK2kvS1RqS05MRkU4QVgwUnFsclpYU2FtcE1sWkM3KzhLNUtjQ2FuZnhnUG5xM2dkSU1uY3poMUZpVWpQNlcvK2dMWktjeTdya005WlVZNXN4RnRIbUxTUVdCWUxDZWZ5MGo0eHVVRDJHcStaWWpnaXNrMDVqd3ZRVytjZUVOa2RZTk1qWmxPOVQrd1VPWGFRWDhaVzhla1I4V2o4M0Q4RVMwVEZ1enJwN1JZZkxVWUdacFBxUFpNTWM3UlRHbnVpWm9XdytPVG5kQldlV21VMkI1dC8rU1M2Zk55VFZYWno2cEZvNFlPZldzeDRjeW5xL0xJUE52WWxNNE5IeTRFTDdzbWM5UENVT3YxN2J4dFYydFBTdHZoUzZxclA5dS8vN1BQVVVya0ZuMHBEeG1abGhrK2F1Ky9vU0VlNUdkdXdZY09HRFJzMmJOaXdZY05HaGNYbGNCZStNTkZ1b2Rydy9yNnZUTjRSMUtWRHpDL0Z5cTNxS0hTWHYxbEtrUDVLNWR6SzN5UWxTSytIUEdwblZYOXpsQ0Jkb0hKK3d0OFVKVWdId3B5ZDgzMS9NNVFnZlEwNGgyN3lvVTUva2E2Y0FweGY5VGMvQ2RLbHNFd1UrcUMvNlVtUXZnU2NFNjc3bTUwRTZYL0M2bUxDY0grVGt5QTlFUEpkRW54WlZmQVg2ZmJBT2ZJcmYxT1RJTDBIcHNzalRYUHR3OVlrVFI4M3VzM2Vkc2xyMFpJeGNUUnhRWnllVzB4MXJEeGcyTHF2ejQ0N25qWHhXdlg4MzROMExpekF4alkzc2MrNGdYSkU4azZ5SFE3ZlVFbVVRK0N6aUM2UXVsUHk0bEVHbHhKOHZoS1JobzcwR3RqL0ZHdXlGQko5Rk85QWN1RjFkNTRHNUk2TUVYaDlpMFBGQ2VHNkdocU8zVTBrd1pOK0hqaW5tR3pXeXRpckdMQkRpN1VoVC9rZGdSdmRKUkwzS2YxZFdiQmpNMHAyd1pZalhRU0xaaWszeGJZeHA3Um1jZnBXMG9WbWFtR25ta1ZSVEpPQzRuSU1icE9wR2VRK2RsRnpCZkxlcnJXdDNXRXRzM1plTkpFQ0pqMFNubjFlTmJIcEJtak5vZWM3dyt0Mit6b2tUZlNZQWZyUGFja1lGRUphUjd6clp5R2t5WTIrck80VHViSU04bFMrOXBsMEg3Z0xlYVZpeStoRFZMMFFaWlUxblVkRmgyRy80bmUwMEVIdkYvSzlTeHhFZi85QVRXYWpQbVlQRGN5Yzd4RVpNTktUMVllVk1rTnNPWUpxZTNFcmRRNXdoMVJsQXN2ZjMrajhiaUlUZXROTGZzVHFmMUYxSnBHQm0vVFQ3bXlFUjRWdjh4azZKdmorVTkxdHBDOVp0d3hhMkVyZGRkbVJaQnE5RTlESjBMMnhQL0g2RGk1WmJZY3ZwRHVqcEo1dElzTi9VOVVQZXZGN1ZBeUwvalhwRXJ0dWN5dWtTY0ZMNDZBZmdSRjhEVi9RR3FTeUoxVFNBVnlDdlNCU1drSUQ3SENqb3AxTHZoRitRMTRGMy9kRVVCbnNEUXloL2QxWnZnSklzaDlQSkFDa3o4RU9qTHl4TUM3YzJkZGdkOFRzZmx5aUNzaEJlSWoyQlI5d2VwcnhmVXBkQTZmZDVQZjhnbmpJVmhla1psYnFvaHVjOTdPV1duWGFFRVBRYlRrbERtTUZiWEZEcG9uVXNUaVo4UmNuYXo2RVFBYzBWYkpidGlMdDZ1c2MwSWtaM3FaQ09nVWkzQ0M4R0xXYklkVDVLTkxTRmh1Wm9aYlVIVnpIcTVOeWdaR0diOG9TeUZmUmQ1elhxUFJ4VVExMEkwazNlQVpwOUQ4NGdiUWJ1ZjRpUTh2Mk81WitSWGEvbG9oMFNtVVFWSU52MUdJK0hvRGt4MHR0QmJoRlZlcTkyMGNMTTl4K3o5TnlxYnVNRGw2WU9XNVZ3ZTN5a2RZNEUzSURCQmU0MStXcTRnRXFMMmpDV1c0LytoL2hlUFZ6M3UzWDVPdldlU1ZXcEZHTVZGUE53MXFBelQ3elJGb2JtOUhHc2tQYmdscGNZdWlZdHpUVGViYjRwQXVSQkpCT3VZWkUyOVdZR3A5WmM4RVRhUzFPZ2syNzJyQm52YXVRc0lpN1l0cXNwVHBmNTdJQUlnVWd6WC82SWF4UlR2VmpvcE9lU0d0N3IwTG9qVHl1bHVobVIyTk9aa0JTSXA4b0YzeU55RUE0NzNFUXFucWRTZWl1MXRDWURGTzQ0NVhCOU9iQ0h0Q2hsRnFnNkxyNUU4YjNRcWRFSkx4SUpDQWtYVVBkQThRbW1HQlBtVGVISExXbW4rcHY2ZTlCcnAvTlRBL2FDTG1TV2t2TCsrNG9NK1lTVDR0TmhxbThidTdOZy9CVjhPcDBraGRjbGhBKzA5UjI2d0QvbDZRUy9RM3lsYlNXaFh0TzZ3YlcwT0luM3RRSVowSzRvcFR0OUMzenRCTjFNNlFteW1Ram01QU9ld0ZZMzFETE5la01UcUkzTlViVFVkbFZvcVoxMS9Mb3NKbTIvQjNsSjAxdVEzZnFMRlhMTkNaSkVkMjFXUlBMZ0llVk5DQnM0eUNFbm53d2hDbis0MzRHUEdDTVgweThodWxLd0VBWTYyZXJzUTRrVGs4ejJ2MUlvMW04WGpDQUJsY1RZUG9tR3gxMVFOOUw1VGRERlpEdks1RW9hNzdtY2g0YXlHcjRuTStCOThXWU52d2IvYXIxd3lJNkxraUdRV1ZYSkI5RHF6aGhxQUlDQjRrNHhKeDBDQVMvZEN1aTIvQzBQcU4xTngxcnY4WEo2RkMyZHRxdnJqLzRFNTNmVFh4TDZSY3lWaUpYMW1KSkxnYW1GQ0pobTBVR0RNaDBIVmdhN0hDZXdBa2ROTU9hVG9ieDR6UFlvM1JJZHo3RUFEcmxlY3g3enBhTG4wUFVmaDhtUjlXczZLdjRXK0g0a3NwKzFkMGxHdm5UbHIyV2s2djdYWTV6bjV0aTJLaVUvanVSMWpaSC9oZEs2dTZTWSs3YkdyYitCSldzMks3emE2b2xTWmZvMHBUVk15N21YV0wvNVpxWHFXaW1wM05GdkNhZHJ4NHdBK3R5eGRwWkR4OTMzVExoZno5WHFmc0tGT09LREk2OVZVdmR0bGJTVTl1Z3NuSDhWL0Y5bHhSdGZWTTdKU3hWZ3JNMWFWSVBWbCtDdjZPbEVPRytqMUJCUUZTcTZneXA3bjFOdG5vc2t4cnJXcFBXOXJXc2hKN2ZNU0xPY0xrMnN3UnU2c2E1UTBiTmR0SEJOVW9EdWZHNUI5TGtKLzQ1dDU3R1gyM0hnbnloMjFTcS9VajAvN1RTSDJ5U2tDbDdST1pOZWlhbWVZaFY2UVkxdU9xZXk5aWM3ajdBcThXeEk0VW1icys2OUQzRVo5K2tGU3o3bUIwVVYvS0c3Tmtldm1GUjdxeWpvemJsTmpYL0hFQlFlTXU4aXVpWTlwdCs2N3FyZTBBT3FUQ0FydTFwZjlPUXdvKzAwM25KM3pUa0FFZlVCSmEvb3J1SVhCclZIeTcvYnFHN2dkdTA2d3E3Q1ZGc0JWNm14aWhTTmw1NDZ5ZDEzUzdJNFc4NjNwSm1pSlBmemVsMzBrNXZ6OTd6T3hqcEZLOFB2dkE3ZmttRU9EcjBZRXo1Szd0N0tMd3lwdm5BTHZuK3BtSERoZzBiTm16WXNHSERoZzBiZHcvL0IyWkhJSjZEbTZUOEFBQUFKWFJGV0hSa1lYUmxPbU55WldGMFpRQXlNREU0TFRBNUxUSTJWREl6T2pVNE9qSTRLekF5T2pBd2Z6UFlkUUFBQUNWMFJWaDBaR0YwWlRwdGIyUnBabmtBTWpBeE9DMHdPUzB5TmxReU16bzFPRG95T0Nzd01qb3dNQTV1WU1rQUFBQlhlbFJZZEZKaGR5QndjbTltYVd4bElIUjVjR1VnYVhCMFl3QUFlSnpqOGd3SWNWWW9LTXBQeTh4SjVWSUFBeU1MTG1NTEV5TVRTNU1VQXhNZ1JJQTB3MlFESTdOVUlNdlkxTWpFek1RY3hBZkxnRWlnU2k0QTZoY1JkUEpDTlpVQUFBQUFTVVZPUks1Q1lJST0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCJdLCJleHRlbnNpb25zIjpbImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6Ijg5NzY2MzFiZDRhMDQyN2Y1NzczMGVjNzFjOWUwMjc5Iiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlfSwibWF4TXNnU2l6ZSI6MTIwMCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMV19fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMC0wNC0wMyIsInVybCI6Imh0dHBzOi8vc29sb2tleXMuY29tIiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJTb2xvIFRhcCBGSURPMiBBdXRoZW50aWNhdG9yIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAxOTEyMDYwMDMiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMy43IiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjAuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMC0wNC0wMyJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjAtMDQtMDMifSx7ImFhZ3VpZCI6IjUxNmQzOTY5LTVhNTctNTY1MS01OTU4LTRlN2E0OTQzNDE2NyIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiNTE2ZDM5NjktNWE1Ny01NjUxLTU5NTgtNGU3YTQ5NDM0MTY3IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlNtYXJ0RGlzcGxheWVyIEJvYmVlUGFzcyBGSURPMiBBdXRoZW50aWNhdG9yIn0sImRlc2NyaXB0aW9uIjoiU21hcnREaXNwbGF5ZXIgQm9iZWVQYXNzIEZJRE8yIEF1dGhlbnRpY2F0b3IiLCJhbHRlcm5hdGl2ZURlc2NyaXB0aW9ucyI6eyJ6aC1UVyI6IlNtYXJ0RGlzcGxheWVyIEJvYmVlUGFzcyBGSURPMiDouqvku73pqZforYnlmagifSwiYXV0aGVudGljYXRvclZlcnNpb24iOjIsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MTAsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiLCJibHVldG9vdGgiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUJ2akNDQVdPZ0F3SUJBZ0lVUFdKWGYyVjdGQXRjODc1ZEU0alBhYmk1WUJRd0NnWUlLb1pJemowRUF3SXdSVEVMTUFrR0ExVUVCaE1DVkZjeElqQWdCZ05WQkFvTUdWTnRZWEowUkdsemNHeGhlV1Z5SUZSbFkyaHViMnh2WjNreEVqQVFCZ05WQkFNTUNVSnZZbVZsVUdGemN6QWdGdzB5TWpBeU1UUXdPRE0zTXpaYUdBOHlNRFV5TURJd056QTRNemN6Tmxvd1JURUxNQWtHQTFVRUJoTUNWRmN4SWpBZ0JnTlZCQW9NR1ZOdFlYSjBSR2x6Y0d4aGVXVnlJRlJsWTJodWIyeHZaM2t4RWpBUUJnTlZCQU1NQ1VKdlltVmxVR0Z6Y3pCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQktIVnFiQkJEVTBWWEpVV1ZIeTdTNm92eXdaVHg4bGFiQnptQjU0Z0ZnNjhJcnlQNXBoQ01VUElJdkhtWUY1VitsYW9EVXcyNDdxSTYzY2ZlR2pXdXg2akx6QXRNQXdHQTFVZEV3UUZNQU1CQWY4d0hRWURWUjBPQkJZRUZNS0RSbVlqbVZidXNQWEhtRm5ZZ2xGUTV2V3BNQW9HQ0NxR1NNNDlCQU1DQTBrQU1FWUNJUUNzUURKdkI1RmNhNHJ5UE9WWitNQkFJWnpvdytPVjdUL3dCSjk5MDZIWlpBSWhBTVZiU3dkMmpOb0hsM1NSeWhyY2ZRSnFEbzUwdnRLRitKaGcwNXZIbU9wMiJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFTZ0FBQUVvQ0FJQUFBQmtaZnRPQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUZpVUFBQllsQVVsU0pQQUFBRGFjU1VSQlZIaGU3WjBGbEJYSHR2ZDU2OTN2U3U1NzM3cjM1c1pEY012ZzdoSkNJRWdJN2pLNERPNDJCRWh3ZHg4SUJFbVFZTUdEdTl0Z0NRNEo3Z3pPOXp1bmFucjZkUGM1RE53VktsL1cvcTJhV2VkMFYxZFhWKzkvN1YxZDNYMFNQQk1FNFpVandoTUVBNGp3Qk1FQUlqeEJNSUFJVHhBTUlNSVRCQU9JOEFUQkFDSThRVENBQ0U4UURDRENFd1FEaVBBRXdRQWlQRUV3Z0FoUEVBd2d3aE1FQTRqd0JNRUFJanhCTUlBSVR4QU1JTUlUQkFPSThBVEJBQ0k4UVRDQUNFOFFEQ0RDRXdRRGlQQUV3UUFpUEVFd2dBaFBFQXdnd2hNRUE0andCTUVBSWp4Qk1JQUlUeEFNSU1JVEJBT0k4QVRCQUNJOFFUQ0FDRThRRENEQ0V3UURpUEFFd1FBaVBFRXdnQWhQRUF3Z3doTUVBNGp3Qk1FQUlqeEJNSUFJVHhBTUlNSVRCQU9JOEFUQkFDSThRVENBQ0U4UURDRENFd1FEaVBBRXdRQWlQRUV3Z0FoUEVBd2d3aE1FQTRqd0JNRUFJanhCTUlBSVR4QU1JTUlUQkFPSThBVEJBQ0k4UVRDQUNFOFFEQ0RDRXdRRGlQQUV3UUFpUEVFd2dBaFBFQXdnd2hNRUE0andCTUVBSWp4Qk1JQUlUeEFNSU1JVEJBT0k4QVRCQUNJOFFUQ0FDRThRRENEQ0V3UURpUEFFd1FBaVBFRXdnQWhQRUF3Z3doTUVBNGp3Qk1FQUlqeEJNSUFJVHhBTUlNSVRCQU9JOEFUQkFDSThRVENBQ0U4UURDRENFd1FEaVBBRXdRQWlQRUV3Z0FoUEVBd2d3aE1FQTRqd0JNRUFJanhCTUlBSVR4QU1JTUlUQkFPSThBVEJBQ0k4UVRDQUNFOFFEQ0RDRXdRRGlQQUV3UUFpUEVFd2dBaFBFQXdnd2hNRUE0andCTUVBSWp4Qk1JQUlUeEFNSU1JVEJBT0k4QVRCQUNJOFFUQ0FDRThRRENEQ0V3UURpUEFFd1FBaVBFRXdnQWhQRUF3Z3doTUVBNGp3Qk1FQUlqeEJNSUFJVHhBTUVFcDRCdy9zSHpKd1lLV3laWEpueTVvL1YwNlY4bVRQVnFITTU5MjdkbG04Y09HVEowOTBWaGROR2pabzA2SjUyNVl0N0tsSncvcnIxcXpWT2VMSHlHRkRXMFEwY1pSVHAyYU5wOCtlNmh6UG8yRGVQTlRacXI5S2FaSWxmZlR3a2M0Um5NRURCclNJYU9yWXV5TzFiQll4Zk9pUUJmUG1uVHQ3Vm0vbVl2R0NCVTBiTlhScytLS3BSZE1tQS92MjFTVStqMTVmZEtkaWJOVzBZWVB2NTgzVFMzL2ZUUDk2YXJQR2phZ3ovNmRObmFxWC9rSHhGdDcrZmZ2eVpNLzZZZkprV1RPa3Q2dE9KZXc0ZTZhTUdjTStUSmJ3L2NybHloMC9ka3h2RnN2ang0L0RVcWJJa1NsanpzeVo3Q25qaDJsYU4yK3VNOFdEdlh0Mm81QWNnWVd3NjdBVXllTXB2S2lKRXpOOG1NWlJmMUtHTkttWExmMUJad3BPMGNLRnNxWlBaOSs3WjZLVk1vVjltQ1o1TWc1d3h2UnBlbU1iclpvMVk1VmpxeGRONmRPazd0YTVreTR4SkRIM1k0b1V5RSt0MkNwMTBpU2JObTdVSzM3ZjFBK3ZuU2x0R0hYbTdIUm8yMVl2L1lQaUlieXVuVG9tVDVUUXJUZlBsRE5MNWhTSlBxaGVwYkxlMk0rK2ZYc3h4SHc1Y3pneUs4K2pNOFdEc3FWS1VyNjlCRkt1ckZtcVZpaXZjNFRrMnRXcjlBNTVjMlIzbEVES2xqRkRsNDRkZEw0ZzNMNTl1MENlM0c1dkdTS3hyL1JwVW1YTGxOSGgvU3FVS1UyMUhabGZOR0dVa3lhTTF5V0c1T3laTTFiNzB4MGMyTDlmcjRnRjMxSS9QSHo2MTEvcjc3OFB5cGYrVExWU3hyQTAvNzk0NlpmR0tieXVIVHZnck55YUNaSFFScVh5NWZUMmZ1WjhPNXNPM3BGTkpUellzV05IZGI2UTBQVHBVNmR5MTRSelU3RnNHWjBwSlBpSExPblRPVFpYaVc2bHlFY0ZRenZONjlldTVjL3QwNUpqMitjbUNrK1ZKUEhHOWV0VU9mZnUzU3RTcUVDZStIVmtJUklCeUtsVHAxU1pvVGwzNXN5SEtaS3pDYjNHSng4VnVuZjNybDdocDMzYk5yaEJBZ2NxMmIxTEY3M1VOQThlM0tkblVhMmRMbFhLRmN1VzZSVi9VQUtFRnpWcFl1cGtTYTB6YlNXYWd3QWdjOW93RmIwNHhKQTFRN3ErWDM2bGkvRFRwRUY5enFzOWo1VW9aTkw0ZUhYYmpNMDh2UzdDSzFPcXBNNFVuT2hEaDlLbUN0V0RZSFlYZi8xVjUvWmkvYnExYVZPbWNHd1Z6MFROU2FxY1d6ZHZmcFEvM3d0NVRuZmlGT1RLbHVYaXhZdXF6TkJNbWpBT0kyWXI2dkJwa2NJUDd0L1hLL3k5UU9FQytWWEQ4cDlHWm9sZVo1VEhUeDdSSGFnanpaMDkyNVhMbC9XS1B5Z0J3dnZnN2JmY2xvclR5Snd1YmEzcVZXZE1tOWF6ZTJTOTJyV1N2djhlZlZMMmpCbFVaczd4MTFGUnVnZy9wWXQvR2l5eVlzRFd1RjQ5blM4NFV5ZFA5Z3hXU1loL1FOL2VPbDl3cWxlcXlMNGMyOW9UVWVpc0dUTjBiaThZQkxySGh4eDFpc1NKVkVxWkpER2pUUTVmMmJFajBXNHRtamFobkQyN2RyN3orajhKeUswTnJlUU9wRWtVNk1oR1NwcndQUTc4YnFEdkNzYW9FY096cEV0TFVaUmZyVkpGdmRUUGt5ZFBpbjc4a2RvdjU2aHcvbng2aFdrV0wxekEwSTVhSWJ3OE9iTGR2SEZEci9pREVpZThRZjM3cTdObFQxaGV4M1lldzl3OWUzYTNidEU4V2NMM0dTeWxUWlZ5Mzk0OWVvVWZ6eERSU29uZmUxZm5DdzRscUtqRG5iQy8zcjE2Nkh4QlFEUHBRdGFCaEU5dTJheXAzc0NMUHIxNlpnMk1WRkZkeDdadDlHby9aMDZmbWhvVlZUQlBidm9tZTA0U2U2ZDd1bjc5bXM3cVJlMGExUjNhUTNYZnpwNnBWNzhzNFRWcXFFNkhzOU81UTN1OU5KYVZLNVluL3lBaGdXdVM5OTVkdlhLbFh2cWZNWHZXekxmLytROWZCL0UrSFVRNnZmUkZXTHRtdFJJZXZWamhmSG4xMGo4dWNjSXJtRGUzbytkMjk1ZHVXaldQK01kcmY5TmYvREFPd1hwQ0dEMlMyTGw5dTg3dFJjL0libTQ3dGhMQzZ4SFpUV2NOUXJIQ0h3Vnp1VmJpWUQ4cFZGQnY0QVVCYzQ3TUFRRXp4elY5bXZjRmlYYXRXaEpGMnpPVDZMWm16NXlsYzdpSXVSOVQ5S05DampiL01FV3k4K2ZPNnh3dlM2MXExWlNlYWNZeG8wYnFwVFllUEh4NDhNQ0JlUHJQK0RCODZCRFZhK2ZPbXVYVEloL3JwUzlDcDNidHNtVk1Ud2wwR1hWcjF0QkwvN2pFQ1k5ZTBLRVdGTEp2NzE2OU9qanIxZ1pNelJHL0JidXlvaExLNmQ0MTZKais0c1ZmY1JRaGRJczEvN0Jva2M3dHhjUnhZM0dZanEwOFU2cWtTZGlkM3N4RjhZK0xPRlRCY2MzNTdsdTkyb1ZiUlRqVlJ2WHI2dFV1N3R5NVhhUkFmdnZZajZNbXdENTM3cHpPOFZMY2k3bHIxWVF6dUczTEZyM2l0NlJ0cTVhRUErd1JIeHZQT1E4SDdWdTFVdGNGUXB2SEh3WXR2TDE3ZG9lNUxpVEVVM2dPdW5icVNPczdpckluYktKVTBVOTBiaGV0bXpmUGxzSFg4d1ZMNmRPazJyQk9YekQwSkZ2R2pPNHJHZXpVTFdhZlF4anA0UkFVSHhjbzRDZ25UYktrdDIvZDFxdGQ5T25WeTFGekxLbTVmNWpueWQ3ZHU0bjM3UG1wSk83aXdZTzRheUV2QWNFdDNsNEY2bW1TSnp2b21rdjRMYWhZdGt3dXY0OGxPUCtxNXhkNjZZdFF0bFJKRmFSa0RFdXo0STgrbHdCeEhpOTFzcVFPMDR4UHFPbW0xS2ZGbmh2bXBVajB3V092dTE1Mjc5b1psaUo1Q0hkSFFuaHJmL3hSYitDaVU3dTI3cEVxOWFsUTV2TUN1WE01U2lhcWFSQWVycmNNNU9xVksvbHk1YkNQTTVVN3VoRjgwTittUlF2SHRkelF3dHUwWWFQRE0yTzdsUU1uWnVMUGlSTS9IejE2aFArclY2MU03eDhzZWM0bHhKOUxseTRlT1J6OTAvSGorbnRJeXBVcXFYd3NSM1RreUdHMThOREJnOUdIRHFuUG9YbjgrTEdxTVA5ZmRDN2gwTUVEeDQ0ZWpZNk8xNDcrRTRqTUQwZEhrL1QzLzR3NDRTVjY1MjIzeFJQWGRXalRXdWVJSDZHdnJLaVVNZXpEMlRNOUxpR1VMbEhjY2JIQm5kS21Tcmw3NTA2OVFTRFhybDNEaVRtdXl2QTFiYW9VclBYMXlvRTlBbWVheEZsWG05dGhGT3E0ck1yb2hWNDV4TlFmQTB0bGZGWkNlSTBiMU5lclhZd1lOdFF4bEtVanFGL2J1eVB3Qk1zbXJpdVlOMCt5aE8vVFlSR3prS3c0MytjL1B3NllTNEFEKy9lUEhUVnk4c1FKRThhTm5UTjd0bDVxNDhLRjg0M3ExMHVUUENudTNWZGdpdVJKMzMrdmRNbmlTNEtIOTNSU0tSTW5zblphcVZ4WmJDQkY0a1NxUHRTdFpMR2kzODhQNWNRZVBuaVlNa2xpTnVkazVjNmVqUUwxQ2krdVg3OCthdmp3YWhVckpINzNIZmFyOWtKS25UUUpWUzFhdUJCeHI4bzVaT0JBam5ReXh6cDY5QzhYTHFpRmJxNWV2VEo2eEFpVmMvVElFWmNEWnpJZVBYcllvVzBidWdNR0ptcEg3T1d6VDRzeFNOWTVYT3pjc1dQczZGR3F3Q0VEQjZpRk42N2ZhRkFudkhiMWFxVFdMWnJIQ1k4dmpnNWJKVVNDU1owOGNVTG5DOG5wVXljenVxNnMwSnFPSmRrelpXalRzb1hlSnBaNWMrYkVSN1Mwcjk3QVJhUDY5ZDFSTHZVZk5uZ1FhNGNQR2V5K1prT3dkL2l3UngrMmJjdFdJbTE3VHR4UnBYSkJKKzZqSms1UWZzYWVNcWNOR3pkbXRNN2hva1BiMW83YVVqMVVvVmVIWk0zcVZVVENCQ2tFdDhHbTVuMEJTK1ZLZW9OWVJnd2Jnb2xuU2h0Ry8xWGlreUo2YVN4WUt0YU1HVGpPQWgwVytmUG55ckZpMlZLZDFjYnBVNmZDVXZybTYxVkNleDZicDB4Uk1FL3VtemR2Nm0wQzJiUnhvMnB0VENWSGxzekI3bnJkdDNkUG1aSWxDSmRvcUdBZE5KVXZsRGUzeXM4ZXNTZ09OdGtIN3krWS83MWE2S1psUkFSbVFMWU1hVktuUzVOS0wvV0R3ajk0K3kxT2s3MDM1K2d3aHVTSlB1Z1JHYW56QlRKMjFDaDZCQXBFcmlXSytocVpHTzI5Ti81TjNYTDY3LzdqUTV6d1ZxMVlRU2ZuYWZjMEhQMlc1N3lDZ3huVHB6bXVyRkJqQXA3OE9YUFlTMVpCaGQ0bWx2eTVjems4aG1kQ2VFK2ZlamlldzlHSE9IbU8rck1qNityMnRpMWJNb1NsY1dUZ0ZJNFo3V0hyUGIvbzdwNUw2TlN1blY0ZFNQOCtmVHk3akpSSkVoMDVja1JuY2xHNVhGbUg5WENxb2laTjFLdURFMTZqR28xZ3RSWDc5ZDNla0M0dG0vTmZ0UzBKYzNIZkZ0ZWdUaDAxMDVBMVEvcCt2UU51ZTFpK2RHbnlEeEtxYlVtVVE3SDJHSUhhRXNZVGd1b05ZbG02WklsMTBqbmRWRU41QnNUR1o2cytiSTZCSGZFSzFWYXZYbVhOSlJRcFVFQXZEUVR6bzNwcUpLa1NtVGxHOTFGM2FxOVBVNHVtVFpRdjRkeTFhZUY5ay9EMWE5ZndZT1NoR1RtSzcyYkhYWVZ1M2F6Wmh5bjBJSnpqeXBJK0hmdml2OW9YK1ZsTDJLSnoyMmpTc0tIZWI2WU1TaldvVHBWanBUamhRZVh5NWQwREpDdXhTODczcnAwN2RHNHZCdmJyU3piN1Zwem1MaDNiVTB1SFhYSU9HSlBvemZ3M3pYQlVqandjb1dNSmlTN0FjM3o0Y1lIOGpraVNSTk9zVzdORzUwRGJPYlhtcmVRYjV0WDFpTzY2ZE9yZ2NFYzBaYmRPbmM2Zk84ZUlncEhQdHExYm9pWk9iTmFrTVdybnhMdnJTY2tWeW42dWkzTVJiQzdod3ZQbUVqNHZXZHlhdC9CWmVkaUg5TmJoTmFxUEh6dDJ5cVJKWDBkRmxTejZpVHBHYXVYMm4xVXFWRkJxWisxUWZ5QmdZUTNPT1JhOE4zNkQwS2hLeGZLNEMvYkN2aWkyWU81YzE2NWQxUnY0aWJsM2o4RnpudXkrQTFGNXBrVkZuVHAxOHZpeG84ZU9IWjAyZFFyTmFMVWtzdUUwUFhya2ZDNEU2MVI1cUFBK1RTK05oYkZBcVdMRkxHMVRQV3dNRVJKSUV3Uk9tektGb3k1aE8ycmlSclhockJuZlVITVcrdlJjMEZ2UGtWMjYwQWVSaDgzSnBwZjY3bXVQc0VJZVRuMlc5TDdHbkJvMWVmaVFJWGlJSEg1ZFVSUDgzcG5UenZ2NDZ0U3FxUnFaZWk1YXVBRERwbVhJVEVkbVJTZ0J3Z01PUnRYRE03RTlqcjVEbTFZNnQ0dWFWU281ZW5HODdhOFhmbkdQcnh6M2poSEpVTGc5QXczQjJLQlEzangybTZZUWQvZ0V5NVlzWVRocXo2a3lPNklwd212VjMxdUpuZExYUG56d1FPZUlwYWhyd0ViaUJLaStuTVJab1VGWjRxaTJTaXhNbFNReEt0WEZ1Ymh6NXpZbXFHeEZKU3BQZ1NFMmdjOUxGTGY2TlE2RVE1N3N1bTM2MHlJZnE1cFR3KzNiQXVZUzdqOTRRSU9vdFRTNDNmbGNPSDlCamRPb0JnYmdlTVppMWpmZkVMSFRVQVZ5NWJRTDc5YXRXN215WnM2WlJUY3A0dm1pYTFlOXprYmRtaldzRHAxeXZ1am1uSWIxelViNFRabGQ5K3p1ak44cWxpMkwzYXZOcVh6cVpFa0d1QjZQS2wyeWhEb3V1b3hGQ3hhcWhRekRHTjZ6a05OQjNUeWZZdU9nV0tzYTMzSjNHOWF2dDBhdFZLbHNxVkpxdVFXZHBySm5pbTNYV2c4cExaVFMxT2FjTHo2VEdZZFJMN3gyMzYrK0lnREdOcHpDZzZJZkZhYjJEaU8ySjNvUmpFYm5EaVFzVmNwOGdZYklPT1QrL2ZzallpZFlyWVErSzhjK1pCRFJ1S0ZiN1l6TzkrN1puVGQ3TnVzWVNCeEF4WEpsMVZaMnFJOWJKeHpxbVRPbmRRNC9DeGZNVnlHTlBXR0NtemR0MGpsaWNhamloUktIUnN0dTJyaEJsK1hGbnFCekNjNHV3S0psc3dpc1ZtV21YeTlicXVURFJ3LzF1bGdZUkgyVVA2K3FPZVVmT2hod0FlREMrZk1aMCtvclJxemRzM09YWHZIczJhSUZDeko4NkdzWlh3dVg4WGJVQS9yMXBmVXVYNzZrdi91ZnVrVGVWa1A1NXhKNjZuV0JXTGMwa0prUDkrL0g2QlYrckxrRVROWVJiUGVJN0dvTm51bHJNSVpyMXp4dUJrcWV5QmNrcTE3RGZoYytOcUNXSXdEM0pkWkIvZnVwOElGaUNZejEwbWZQQ01lVTFWRXJOS2FYMnJoMDZSS25XSldNUlBYU1dIQ0RyTElTVlNvZWVGUEJ1WFBuUElRSGd3ZjJUL0wrdTI1VHRoSkNkMnZ2eE04L0VRL1lGVXZ0YVVwV2JkbTB5WEdSa0VSc3phckxseSs3QjBnWTFyREJReGhPNEpydHEyaUlzcVUvOCs4dGp2Rmp4N2d2YkhDMDdWczdQVE0xZFBpb1BIaUdqQmw2OU8rbmMvaHh6eVhFSjVHZnNRVG5qRk4xNW5TQTROMXMydmhpY3drYk42ekg2RlZUWU45VksxVFFLd0k1Y2VJRUZTQVA5bDBnVDY1clZ3UEN3Z3NYTGlpMXM3WklnZng0WGIzQ0pqeWYvajh1ckplNk9IZjJ6UFhyMTlYbi9mdjJ2ZnZ2MStrT3FsWW9yN1NYTG5YS1lQY2svZnpUVDZwaS9teXA1cyticTFjUVNUNnl6U1drVHJWcVZkeGRiS2RPblZJRE1CS25uc1AzSE40VDJZYjVuOGJnRkdBd2ZOVXJuajJqYm1wWVNPc3RYcmhBTDQyRm5hcjlZbStEK3ZkWEN4Zk1tNmZNaWQxUm42MUI3a0FvOTFrcFZTVkt0bDltMzd0bmozS3pLdEZaRlAvRVk5YmFXM2h3N3R4WkRpT0U2K1AwbHlzZDRJS1hMbGxNbDJ6UFQ5OWZ0YUkyRWVJaWh5bFQ0MzE3OWpERVVtR0dsY2hHTzdJSkxlVlFGSUx2MXFtaktsRHg4T0VEdTJkWGlhOTBZSGZ1ZWt4MjR4QTRPOW55NU1xWUwzZnFBbmsveVo2dFVhcXdxSno1enhiNS9Gaml0THNUSkxqV3V2UHVZMGZkM1VUb1JLRUV4b1JKTzdlSEdnTmJqQmpxTlpkUUoraGNRb21pUlZRTXo4a09GbTdBbXRXclZZdGhUeC9seitlNDFYaEsxQ1JyekVQdndEaFRyM2oyN1B6NTh3d2lWRTB5cHd2cjFNNTVoNmVic3ArVllsaklCK0pBMm9yRTJRODIwNE5laWhRcW9McHkrc1F2ZThSTnN0dm5FaGdGblR3WmQvMmNRYVlhR3JBS2F3a1doMi9Zc0U3MVloeDEzdXpaOVZJL1dBczJ3eXI2Ukd1YVFUSG51Mi9WVmhTdTdFMUJ2NVBiNzM1cDZrcGU0WldpZm5odGRVWm9Vc1orZXVtelp3alY2bElwbVRiUkt3SUpLanpGMUtpb3hPKytZNytVWkU5MG4vWmVwSC9mUHRZSVJDVk9DUmFtMXRhc1VwbG10YStsbVVvVks4ckpjSmc0dzhMWnMzeXpmTDQ3MWdPdmtYTE8rbnpaU3hXb1lIanQyQ21Kb3gwK2RJak9FVWlYNGNQeXBrdjdaZkkwaTk1STlNdGYzaUNkL2V1YlAvL3BYd2NUL0hWL2dnU2s2NTE3N2p3Y1RWZm5LSk16cHg0VW9PZk9HSmJHSFE1UXR5NGRBenFGRUhSbzh3SnpDY3VYTGxYUDE5RlE5REx1Ui80dHBrNlpUQVp5WWhPMXFsWFJTMk1aTjNxVVVqdHJLMVZ3ZXRlS1pjb29LeWZSZ01VS0Y3NTdMK2prTzRFMFJmSGgzdDI3eXBVeEtNaWYyK2xqN1VSMjZhd09HWE1xWDdxMFhobzRsOEFxUzExWHIxNVJnU0tKWGo3RWc4dldSQkVuaFpoV0wvVXo4NXZwcXEraGNBWTdlcW1mbkZremEzZVhObXp3QU8zdUhqOTViQThVMFo0NjZZNUVlS2xVUjZMOGIyeDM4STRaTlZKVmhwTkZaeEUxMGZzeTlYT0VCM2Z2M2kxVnJGaldERTdqSmxHdDRwL0VCYS9Wa1ZhZ1JJazg1ODc1VHEyZFAzZU9RMFVranR5aE90ck82dEdYdXg3TWNYU1dwMCtkNHRnY0pWQW0yWFFPR3pHNzkvM1N2TU81ZnlXKzhLZlhULy90elo5ZWUrdnczOStPL3N1L0R5YjR5NEVFZnpwVHN1S3RSWHFTcWtka3BPTjRVWjExbTM5TVRNeUMrZk1MNU1udGNOUWt1cnFXRWFHZWVMRHduRXVZR2pWSnJ3NmthWU1HYWw4MHVDUEtjRURncDNMeXYwbDk1OXg5Z3pxMWxiUVFBQjJXWGhvTEkycDZVZ3hVMVlmcTRRZm16ZFduejhHd3dZUDI3UEU5a2pMbjIxbnFlbU9lYkZtTGhMenB2RlA3ZGtwNG5PS2loZUlHVHF0WDJlWVNiTmNlSjQ3VFR4VlNKVTZvM1JNNjZOZjdLektRay9LdHVRVEZ3WU1IckNnMGE4WU1WcHlNWjdhV004aFhDMkhYcmgzMCt5eVBmM0lJejdwbGtzTXBsRGVQWHVyaStjSlRsQ2o2aVNyT2tZaFBySVBoU0J3YUNFdVp3cnJuNk5USlUxVFJrY0dkVWlWTnNuMzdOclZKcnkrNnF3YTFFbjBKM1p0YUN4WExmRzUxMGxiQ2V0YXZpN3R2TzJiMzNsK2F0enYwMy8vY24rQy9EaWI0bitpL3ZYbjRmOTRoUmYvNWRaWWMrWGZpNjJQajRnUUY0YjVEZUhTVzdobWJZaDhYZG9pSHhKZ2JTOUk1Z25BL0p1WVQxMXdDcC8vZ3dZTTZoNDFidDI1OWxFOWZMOEczRHgwMFVLL3dncmhkTlFnTk5XSHNXTDAwbGlybHk2a0tzM2FrMXdUVWd2bHpPV1dXOXZpQXA2V1AwS3U5bVA3MVZDVVB3ak9NUkMvMXdtNlJIK1dMZXc0dzJGeEN3N3A2eXBIbG41Y29ycGQ2d2JDZlBPVGt1TWFNMUhNSkZwblMrdVpDTUR6cXVYM3JWcld3Zk9uUFZGUGdTM0hGYWlIMDd4MFh0VkdtdzlGNXBuZGUvOWQ0MjIwUzRkWDFveUhzYnZiTW9BOTh4bGQ0VUNoZlhvZXRrRENYM2J0OEY4ZXVYcm5pdUxKQ0lsUlEyeW9LNXNrVitnMElOSFN0cW5FQlVydldyUnhxeDZWczNxeXZRSzVmdDg0eHBDVFJXQ1dMZjZveVhCczc2ZWk3cVlnZTdYb2pIZnJUdjFqSWlPN2VPbDNVb0lFRFA4b1gxem5SY3p1T2xFTnozL3B3N3V4WkJsU1dtYXJFaGtVS2VVOFpXZHk1ZmZ2amdzNnJwdlE0cDA3R1hSV3dZUFJGQUtiMlFtY2M0cmIxdTNmdVdEWFA4R0hxWlQ4RXZNM0pONWNRTzlQZ2E4Wk4zbTlBMnJodVBjWms3MUJ3bm5TcHdXNWRhaFdCai9XZG94eVpNalp0MUZBdjlhSmFaVDNWUkdkcW43c1BuRXZvcnBlaWpjKzFuTEpsU04rdGM2Z1lucUdtUHE0MHFaY3Mwbk1KRm96VDFGaUpmbDg5c2IxOTI5YlV5WHhQdTJNOE5PbUY4M0Z6cDBNSERWTENZOWZ4ZWRHQkcwdm5HT2ZjNE0reXZJRHd0bTNkUXVEbk1IU0VwMHhody9yMURoblFCWDRXcXdHRk5Wa1pMREdldkhvbGJwQkFkT2NXbnVYTkNoZklwMDZNbGZKU1FsanFYNjVmdTlZaGNwOVBiMytOL3ZPL0xiMlJvdjhQWGk3QlQrbHpQYnFxTDBrdld2QjlHdi90UXNrL1NCZ1QreEtFWWg4N0ovRTR6TDMreU1yQm9INTlWWC92eUJ6aTZTSFlzM3VYdXJwb0pYWlhzdWduRDczZU9Iam8wQUUxd0NQaGpuNysrV2U5d29WakxpRTY4QjZSQytmUFdYZnpzWmJBVXE5d2NmdjJiZm9PZTVCUE82TVp2VHFRWm8wYXFhY1djUjE5QTIrRnNmUDQ4V1BNVWRVTnZ6VEU1cmNENXhKMHNQMzA2Uk9XcVB3RW9tdC9qTHNMd28wMWw0QkVqN3ZlNk5PL1R4L3FSZ2JHQyszOU54NjNicTd2anNTNm1qVnVyTElwTE9HUm9WWHpabnJwaTZDR2lGU0dnZXZKRTBGUGxrOTRCRFBxUzJqT25qbWQza3Q0ZTNiN0xITGM2TkhXSFJVcWNWVHRXd2ZjWUwxMTY1WVEwU2Judzdxa3E3QkNJeXNodkZVclY3Q0txTnBlRkpMTGhEL09sZk9idEZsK1R2RFhRN2k0djc4ZElMbS92WGtnd1g4ZFM1cnVicXlYTzdCL1A2WkFoNmVjQ1hhMlpJbnZQdURMbHk0NkpnOUpLWk1rOW53dUFkK0YwVGg4RnlwaURPTjU0VnV4YWVONkRzUytDWVY4WHVKVHp6dHlITUpqV0t0WHVEZ1JlOG1lK3ZqbUVnSnZNVGwvN3J4U08ydjljd25QZVdxaGQ2OWU5a2MwT2JtZDJqc3ZkVDU1K3RqeU52allFRThWSEQ5MlRPMmRBZ2tmZHU3UTEzNGZQWHFrcXNSL0xQWEgyQ2lkYU55NnlvcndWcTN3blhSUENCT3MwUnJDTzNQRzJUNC9MRm1zT2hFeTVNeWNpU1hXNUI1bjMzSHo5S0IrL1MzaHRRNXlsMWtJckxrRUNrY2F2L3p5aTE3aElnRmoxdGYrOU45UkV5Zm9CY0h4OUhpMDVrOC8rV1RkckVsamRSK05sZWpBcHNSMllJb25UNStnRm9kTnE4UkNtdS94NHdETG81a2NObTNkSVkwZFdLdXk1TTJkSTNldXNRbFRYUHp6R3lmKyt1YmhRTW1SQ0RVUEp2amZHN1BqNW81YVJrUmdvM2EzUmplaHJqY2NQbnlJei9iREpEd3VWdmlqeDY0Ym5SUUQrdlp6T3oyOEtHNU41M0F4ZlBBZ2VobDdmbUxzUnZXOEg1azlkKzRjN2FBYURaUDlmbjdjVVRoWXMzcFZ3RnpDcllDZTR2dDU4NVQ5K2ZvRjMxekM4NS82SXh4TkcvdktPY29zbERlUFkzNy83dDA3VkV6VmpVNWg0L3IxZW9VTDY1NGh5aUgvdmJ0MzFQSUhEKzZybVdnV2NwaFdzUDNvNFVQTFZJaWt2cDhiOUtnM3JGdVhQbzMvb3FoL1VrNHZ0WEgrL0RsT0J4azRrSUo1Y2hONXF2UE9XVzdaTEVKbmltWGVuTzh5aHZtdkZmbXRTeStOTjlaY0F2dEttY1E1c1c0bkFTTUJEb3lVSVUycWdiNTU1S0Q5dEh1TVI3dHdwdFZhRk9qUUpOMkorOFpPZ2s5SGZLZ1NtZTMzcHlxd2VIWDhWbExDWTRTZ3ZHdnUzRGxURnN6Yk5VWFk4ZGZlT3Mwb3ppVzU2TCs4UWN4NXRyenpWUUlSalJyUTd2YVNmVDduTTE5TXYyWExaaXBqWDBYTVhMSlkwU2RlVHcvQm5UdTNhUWRIUFhIVUlXYkQrMzMxcFNQazVxdGptc1FDbjFBOGRteEcxOVlrK0hOR1V5WlBVbDBBZTNmUEpmaHVYSXhkVzhVMWx4Q00rWFBuMG5PclN1SjRIU1BERzlldmMwWlloZEVYeUpPYnIzcEZJRHUyYldVRXF3ckJrOVNxWGsydndQbHZXTzg1bHdBVnlueXVUSVZOMUd1alBCay9ab3pxeFRnRjJmME96UTBkbHRJd0pxcGFrZzhvQkYraWM4U3lkZXRtK2hxVkFWSGN1YTA3aUhneVpxU2VTL0QxYm9FVEd3NFNEQjdRWHhrQk5jUEpFbDJVTHY1cDFNU0pQLzEwUENiR044RjY5ZXJWYVZPbjBGazZvajRTdHR2T1B5bDV4ZXZLU3NyRWlaNjR3aTNMT095SlduNWMwR05TV1BWaDlweTRxVXVYTHZyY0hSRjd2dHdsc21iYjlYL2ZPLytYTjQrNkpFZnlqZkgrL3ZiOWFJL25BOWF2WCtkUUY0bDRrcWg3N0dqZGRsWmliQkQ2eVl6R0RUd2VSOElpZzgwbWw4ZWtBaHVUM24zYTExUDBhaGVONnRhbERtVHptVXVhMU1lUGVUK2Myck43cERxVldLcGJuM1ZxMVZRK2g2cDJESHhQODdqUm8rcUgxOVpmWEZnUHVhSVE2NEt6WXVXS0ZaYVBMWmczRDRHM1htRWo1bjVNbHRpbkIyTHJIemNQdVdyRmNzKzVCTEN1YW1LWkRDTTlCOERIang4bnhGV2k0cmk2QnQ1Y1lXRk54RnNKWTZZejFhc0RvWWFxUUJxemMrRGtoQnNpLzYxYk51c3Z2dGZTNml1MzdLNWVlQzI5MUlzRTdkdTJjY3hyMDgxZzJlZ2VLMCtST0JHdURLbW9xampTQjIrL2RkOGZzV3hZNzd6QVNFTjdUbUl3c3FJMGgwUUpObmJ0Y05yb3lSTW5zbVJJYjcvemszTlRwMllOamkxenBveU02UG9tVFUxc2VmdzFEOGxGdi9ZV2p1NUNrNkNQOEY3ODlXTE8yUGNqV0Fuclg3eHc0WmlSSTl6dXFJZnJ6bDA3cDArZlV0ZXk3RnR4YWgzditiV3d4a1ZXd3FzYzhwcExVTkJvV0lOcU5EYmsxTkxUNlhVMjZzWktpNDVqd2pqblhBSk5wN3BPMWxyMzd5dm9WZ2pHQ3VUTzVYbkoxQnJ4RWt6YWpRd1dMVnBJaDhzcWJFYmR4ZUlBdytEa1dnZkxxVy9STkdDZXM5OVhYd1c3aW9ncnc2alVodVJ4anpEMzdOcUpjVnBkYzliMDZiN3M0ZjM2T1VJTXRSZVZmUHBQbldybkR1KzcyMW8xajFEaUlSdE9mbHZzRElTYmNXUEcvUFB2cjYxY3NWeC85NzFtcXFwcVpQb2FSeU03U01CNDFLclFDeVdPZWRTSTRhb1UzeTBSZ1g2TTNRZUxaeklFRHZPd2xWclY0bUlQaTNObnoyWmxyQlZvelp6QzlGa3pGOHlSZmMyL1BzRFJ1V05MMHFFLy9YTi9nZ1MzZnd6MVhoWW9GenY1WXlVY0JVNmpiS2xTRGxWZ1c0dGN0L2s1aUdqWVVKMHRlL0kvUmVYc1VHN2R2Rm5ZOVg3YllITUpGalNSVlQ3VlErZU1ueDNYYjBxWEtKNDdtKytJOENHT3VZU1krL2VzQitRSlh1aGY5QW8vOVdyWDRpeXdsZ3BYTEZQRy9zcjNtbFVxSzJmTEtTUFFQUnY0aUdyenBvMXBOTmJ5MzNGRDFvWjFheU1hTmVTNHJETklPZTVuYzc3bzBsVWRGNzFicnkvaTVoSVVkUDNLVk5BQUJrYUJhdm50MjdjUU1DR1YzWkE0NnFWTHZIOFBZK3ZtelNxZ1ZRbmovTXlybTFBUTlTUjY1MjJWay8wU0I4MElmTFhjbzBjUHg0OGR3eXIyU0RwMk5PNDZhdUhZcThxY29Na1RRbDAzU1ZEc1k5K3pDUFlEaUUvaURMVnRGZmNJZWRPR0RSeFhWbnd6emtGdTJtb1IwVlNkTFpVU3Yvdk9kYS83elMrY3Y1QXRVMGFIOE5MbHl4T2VMdFBQcjcxRmN1aE5KY0xMbzRsOHQyVS9sMkZEaGpnNkN5eXZhc1VLR0tpak5YQkhubk1KZGs2Zk9lMitic1FKZG8vMERrY2ZJaWVuemNyR2ZnbDdIajEwUG1wZ0orWmVETjIvRlMreEk3d0g4UWdhcmhkZUcyOVd1M3ExZkg1RFlTMTlvdU41MHl0WExyTVhWVDE2OGYwMmFkMjdleTkvYms2WURuMzVRQkNPdFZFNGRtL3RNV3VHZE83WFdLQUVsUUZyWS9ST3ZJcUdQeTN5Y2JLRTc2ZFBrOG82eTlTSzJoYk1yUjhNdC9ONWllS3EreU9ENDFJY1RKczZsV094Q3FGQURFOUZZWHoyRjZ0ZElwOHpwMC9yN3VZVTkySmkyTkRLU2RkalhWYjFaT2pnUWRhVlpOOWV3ajVrQ05hd1hoME9rSWdhd1dkTzU3dTJ4NnBVU1JQcmJmeFkxMHZ4cUtIZnQrK2JUcGc4Y1FLQkpjMnREa2J0enpOeDVySmxUUC8rbTI4NHB1U3BoS01MUjh4clZxL1dxd05adlhLRk5TREU5QWNQMEMrbGNMQmorM2FDSXFzK1dGWEtBbmxISkVwNTZjOXZlSTdvU0RpNnN4VkNCZFoyRGtkSEU1dzRqdGV5VG51aTI0N1BpNDJiTjIzaTZmUWNJVTMwd1lOcStHNGxMTy96RWlWQy9PYVo0c2FORzNRSzlBTDJHdWJKbHBXUmdpOWx5YXlPaFJOUk1FOXVSdVo2TXovbnpweFJWL2FJRzVHWjR3WHAzODZjaWFydHJlMUlxQXRoM1BlUCtTMmVQSTZiU3lDeFgxVVRhNGxLVkF3akR2WUFlUEhZNXdQeFNKNEdVNzlPZUZpSzVJNlRRajFwNnRUSmttemNzRUZwejJlWnJ0K0tzWU50cTBMOHU4dWxsd2FuWlRQZmRXOXJ2K3hSSFoxbDU1UkRoaHEycDBPdGh5VElISG91QWVJbTBBbFZXelZyaHBPbE8wRTJORFNKQUlDZElROCswM3pvdUZPN2RrK2VCcGdJWFNaU1pKZU1BYXowOXIvK0VleVZOVGV1WDAvcWZ6a1BCU1pQK0g2dythN1pNMmNtZk90TnE4QTBLVlBPUy9EYXlRVC9kU0RCZjN1bXZRa1NYQmt5U204Y1AzREx0SjIxQzgrRXZXSVRkMk12ZjRkZzg4YU5TZDkvejlFTzlJNk8rS3BYank4U3YvZXVQVStLUkIvVXJGcFZyMzRlMzB6N09peGxjdmJDb01WbkNuNjlZUi9LTEJnNCtGeE54Z3lPdVlTWjMweFhqY254c3FINzh1T2poNDk2ZFkva1lJbWQySnhpZldWbXlZeTljcG9ZcnJ0L3R1SHVuYmk1Qkh2S25UV0xyeVlaTStCWS9OZnFpaC9ZdjA5dkV3amQyZXYvK3orK1JraVJIRjhSYkU2ZndSNFZ3eWJwR2lnV3BURnVWTE12YTlldThkbWUvelNsdFQxaDRHRG45dTNxMml4dFJhYy9ML2IrNGRENG10cHY4elNDYW1lNlNQb2duOW40aDhTTVlIVldQN3QzN1h6MzM2K3JjL3JXUC8raGx3YkI0ODZWUzVjdUlzSUpZOGRPalpyY0k3SWJ3ZEswS1ZQR2poNTFOTWpyUSs3ZHV4ZDk2QkNScmowZERId0UwOEdSdzRlUEhlVmY5SzJiUWVmdU9TdlIwYnBZL2s0ZFB2SjB6Lzc3K3c3RWVLWTkreDhjRDNxWFFEQitPbjc4Nk5FalZwMDlFMGQ5SW40dmVvTGp4OWdpb0VBMlo1bjk2dTZsUzVjNGNIdWVJMGNPbjM3ZTgzc09NT1ZCL2Z2VnJGcUZoRlBGWHpXb0UxNnpXcFhJTHAyblRaMXl3blYzQzZFbUhsN1Y1N1RyVlFWMjVzK1pRMmRmbzBwbElxQXFGU3MwckZ0bnpXcnZXMCt0dVFRU2ZpQzEvMUpja3ZmZlk2Z1pYcU42aHpadGZsaXlPUFRMcW1tV1F3Y1AraHZoQ0RWelh3TzNzMkQrdkRHalJyWnMxalJxNHNUejUvV3N3KzNidDVYdHNUbEpMWFJUOXJOUzZqS3l6OTNsektHWHhvK2xQL3pRcEVIOXVyVnFKbnpyalVwbHl4RFNEeGswMFBNRktERXhNZEdIMU9FY0RYR3BUUEVDdDR3SmdoMzdYTUx2NThkUDNORHAwQ1BFdWJ1NWMvUUtvNGp3aEpkazBjSzR1WVRTZ1RmbC9xNW8xbGhmZXNYZGhYaE81eFVqd2hOZWttWk5HaW1EWnZ4VHJlSUx2M0g4MVhENThpVjFwWkdVS1cyWS9lWnNzNGp3aEpla1E5czJTbmhaMHFjYjJDL2dwVFcvSDVvMTFyMUQzaHpaMDZjT2VGbXRXVVI0d3N2dytOR2pFa1UvVVRNQkdZTzhrTjg0di83eWk5M2QyUitoTm80SVQzZ1pIajU0VUxSd0lUV3BsVFpsaXEyYkEyNGwrNTJBSDFaM2l2bmNYZXpkL0w4VFJIakN5M0RseWhYcmNaNDgyYktldHozRS9Udmg0YU5IeEpacW1qRnoyckNSdzRmcEZiOFBSSGpDeTdCcnAzNHBFRTR2WDQ3czdoOVVNRTYvUHIwejI5NzI5WHZyR2tSNHdzdncvZnk1MWx5Qys5Y09qUFBnd1VQTDNXWExrTDVWczVkNWljTnZpZ2hQZUJuYU5HK2VOT0Y3WVNsVHFDZGM5ZExmRGIxNzlVejB6dHRVejNkYjRnY0pRL3pndGlsRWVNTExjT2JNYWY5OWYwY1BINDcyZkxqRUxFY09SL3R1MWxNM293WC9wVFNEaVBBRXdRQWlQRUV3Z0FqdlZYUGt5SkZLRlNvMGo0aHcvejZqZzdsejV2VHAwMmZnZ0FIOSsvY2ZNWHg0c0J2ZUwxKyt2SERod3Q1ZmZsbTNUcDFhTld0V3JGQmh5ZUxGZWwwZ00yYk1pSXlNUE9mNjZZL1pzMlpGZHV2Mm9rOUllSExxNUVrcVhLOXUzUnJWcXplTGlGaTQ0RGxQN2h2aDZ0V3JOTVdBZnYwYU5taEFpMVVvWDM3cFVvK2ZtSDVSYnQyNjlVWDM3djNpZHhPUENPOVZNMjdjdUtaTm1vVFhydTM1M2hRN3ZiLzZxbkdqUnJWcjFzUTRNR1grand0OEsvdkRodzhIRFJ4WXMwWU5KRmVuZG0xUzdWcTF5cFV0RzB4Qy9mcjJyVnFseWs4Ly9jVG5ibDI3ZnZXVmZ2OXNyNTQ5NjlXckYvckJ6ZmlBL3F0WHEwWlZPVHBxUW1yUi9JVmZUZm1iY3YvKy9TKysrSUltcFpKMXdzTkp0R3JWeXBYZFR4dStCS2RPbjY1ZXRTcjlqdjRlRWhIZUt3WHZoSlp3QmZTMTI3WUZ2TEhMQWFMcTNLa1RGaHh6Ly83ZHUzY1hMVnpvRTJHdFd0YmJEVzVjdjk0SUdqYXNYN2Z1aEFrVGpoOC9IdHFGUG5qd29FT0hEbTNidGlVYjFjQXgxcTlYNy9hZE8wK2ZQdTNjdVhPclZxMzRyTE8rRkpjdVhjS2FtelJ1dkhpUjc3M0FjT3JVcWUvbnoxZWZmdzljdW5pUjlxU0c2RzM4K1BFSERoeUk1NnVjNDhucVZhc28vNXR2dnRIZlF5TENlNlZNbnpZTjZ4dzhhRkREK3ZWbmhyeS9rYjY1US92MkRlclh4NkRWa3VuVHArUFppRC81akN5UkhEYlVybDA3NjBkalFuUHI1czJJaUFpMHg3WjhKZHo2NVZmZlJmWnIxNjZod0I1ZnhQMEcwOHV4WWYxNkRnMS9vcisvV2thTkd2VlpxVkkvL3Zpai91N2l6dTNicUNLaWFWT1M1MHZCLzNPV0xWdEd6N2dpK0V1djdZandYaDB4TVRHRVh2aWNreWRPWU92RGgrdDN0SGx5NHNRSnppSk96M3A1ODQ5cjFpQzg0Y044dHo0UnorQUFDVmtmQjNuTnJwc3JseThUVmhHKzZ1K3hvRnVXTXpqUjM3M0FkejEzQktpRTE5WHJOOUFkT09JNlhPN05temYxbDBEdTNMbHo1c3daQnFXT3Q1c3BXS3MvUFh2MlphOWVUUnMzRHZIZW11NlJrVFJYODJiTjR0TmlIQzg3UFhQMnJHZW41bzVMeWMvQW9VZVBIclJBaUIrM3NDUENlM1dzWExrU0UvOTI5bXcrdDJuZHVpUE9KM2h3ZVA3OGVYcG9heGdHblRwMFFIaGJ0bXk1ZWVzV25wRFArL2Q1djh2RWswMmJObEhnSlAvdkpDNWR1clQwWjU5TkdEK2V6NnRXclVMaGkyTGpReXk0UXZueXVGUDExb2FqUjQvU1J6QnlZL1JTcjA0ZEFscVZ6UTJlbVp5RTBOTytEbmdaSGpDcS9MeDBhVWFWUjQ0Y29kbzFxbFdqSGRRMW5pRkRobFFvVjQ3eXV3Y3FmOWV1WGNUUmFyOVVtNkhwY3Y4UE0remF2WnVhVDVvMGFlTDQ4WlVxVnVSd0dQZFNZUlJGcDFhNVVpWEtWeVhZdVg3dEd1TTY2cWJHdHlGWXVHQkIzZkJ3YXFnR3ExVXFWMVl2QzZQREtsK3UzT2JObTF1MGFGRzVZc1dsc1c5UEpNaG5weldyVnljL2RTQ1FvYWRRcTBJandudDFvRFRNNHE2L242WUR4a3lEdmZNY0ZuNy9mWU42OVFiMDc4ODRoUE1kMmEyYmlpMXhFTXVXTG1YYm5rRis1ajhZYTlldVJXQUwvRy9VWExKa0NkWThiOTQ4UHYvd3d3KytBR201NzYyc0kwZU1ZUHlEbS9WdDRQZTZaR05mczJmTlFwbFVBRGNiNGpVcU0yZk13RmpKUDJwa3dFL2JidCsrblo2Q1lySGo4ZVBHSVRZT3BFdm56alFJWG9qRFFaUHNhTjA2L2U2Z2xTdFcxS2hlblNVRWtPdlhyeWN5cDFiYi9VUGl1WFBuc3EyNk9vVWFSNDhlalVTblJFV3hrUEpYclZ5NTE2c3pRazZvcmtPNzU3d1dtbUNFWWpuR1diTm1yVjJ6Umgydld0Vy9YejlHNW5TWHRGV2xDaFZXK3B1cmZidDJuRkR5ekpneFkvMjZkWHp3bEwwbklyeFh4UDREQitqbVI4UytYZmpycVZQNUd1S1ZPSE8rK3c1ajRselM1WlBUZDRJYk5sUVJGL0pBazlPbVRWTTU0OG1nZ1FPeHF1aERoL2c4ZE1nUXlqempqeDZIRFIyS01WMjljbVhod29YaGdkY2h2L1JQVVd5SmZlUm4rZkxsTld2VVdMTW0xQzltb1FSbGkyM2J4UDNpN0l4dnZtRUozdUR3NGNOcUNWNEY4YlJzb1YvTmlqS3BtL0xHdTNmdHd1RWdZQ3U0N2RXeko1blZ3QXh0MHl5bzZNQUIzOXUwYnZ0ZkdvOGY0eEFtdTE3TGFVR3Q2QTZvaHY3dXhlaFJvOWdwRGw5L2YvYU1LckZFZmFiK3RBemRoNHBVK1Q5MDhHRFcwbVdvREVBZEVLZis4anhFZUsrSVBuMzZZRDFmZmZubFlEOUVWbGlQRmVDNTZkMjdOeWQ3eFBEaGhJSUVOdmJMQmdQNjllT1VzMXgvZDJFTmpRQ3RLcmt5TEVSczZ2Y2xDWnd3eEhQK29LaFA3OTZZRkdLbVRHemFHc0JjdTNhTi9LMWJ0V0xEdm4zNjlPdlhMekl5RWxITm5PWDhiUmtIaTNHbnRXcFJWTisrZmRXU3FNbVRNVXIxQTZiQXFCV2JidFV5N3MzVGhOOWtJSXJtTTNXakp1cDNuaFg0eG9pbVRaV25wZDJ3L20rL0RmajVRZm9nOWhqaXlnclJBV1VHZTkwdE1KYkR4OUltNnNvVEVHTlRwYkd4OHpjMEJTVmNpNDFRR05INUppcHRyNk0vY2ZJaytZZjZSK0R4UVlUM0ttREFobzlxMUtDQmJ6QlF0YW9hdDZCRHZJM080UUlMSTc1aWZLKy8yMEFxZUk4UUhtLzgrUEVFZGRnQmlRR0pDaWs3ZE9qUXZtMWJqSjdldWxQSGptMWJ0NzcvNE1HVEowKzZkT21DV2RNTGtPeS9aYW5pUXpRNVlNQUFlZzFBZTZnaWhPQXRDR1V4VTBJMTVWUzdkdTNLd1Y2T2ZZc3V6b3BEdzQrcHIvRDExMTlqMlh2MzdpV1FackJFUktkWDRGdWVQS0hSQ0FMVlZ3YTlTUHA2NEdWSklsSjJGMkw4T1hEZ1FJNGxoTWZidlhzM1p3VEhxTC83ZnNOd284OEorNzNva2FOSCtVdzdxRlV3Wjg0Y0R1Rzc3K0xlejBra1RHdUhkcXAyUkhpdmd0Rmp4dEFsYjl5d1FYLzN4eXFNeFgzWFY3emUzQjRURTlPaGZYdE81SVhBbjAxVTRBRHBtME9NOFloajhUWjRLaEtXdW1uVHB2djM3MGRFUkxBN2xIYjd6aDBpSXNybk0yNkV6ejE2OUZDV1pMZjQxYXRYVXdIQ1MvMzlCUmsrYkJqR2V0QWZFSGJzMkxGNVJJVDFjdXRkdTNmN2JIUkczTXZJdTNYcmhweFE1dE1uVDFqVjBmYjdKT2N2WEtBY0ZkSFJhRVNoOWlCV3dlaU82Q0RFSkRoNm9CZWczOUhmWFNpWHU5UG1FcitmUDU4bEcveS8rRWRQUVIyRzJuckpCUXNXc0hiakp2MGpwN0JrMFNLV3JGNjVVbjkvSGlLODM1eExGeS9pVE9qeTc4WCsxTE5DUlZCcWxPTEE1eUhyMXllRHB5eDlVOVYxNnVEMHZwaytYUytLWmNMNDhjcFdIRnl5elNVUUp2RlpYUzlGRExWcTFPamxIOWhNblRJRjg3S3VyQkNza3ExcjU3Z2Y1bGM0ZnB0U2NldldMY2Y4RmNMREVCRWVhc0ZsZGU3U1JhL3dWeEtScjdUWktEdWxmUWprSGo5NnhEQVNiNnhYUEh1MmJkczJha1ZYd21mYWlqSzcyb3FDcDArZkV2WFp1d3czS3BKRTI0eWM5YUpZeG8wYnQyWFRwdm56NXVFejdSNnZiKy9lTEZHRDhQbHo1L3BrWm10WWZCMXIxZFNPZ3M4Y1ZJaGZxSGNnd3Z2TjRhUnlTbFRRWW1mSTRNRlk5a212SHdsU2N3bVJYYnNHbTVpYVBtMGF3eTNFU2Z5elpmUG1Bd2NQRW5uU3FWZXVWTWx6d2swSFR2NnJGNXMzYitiekJQOXYyVENzd3FSbXhVN2xNd1NscXBiMjJyZHJSNWV4T2phMlBIVG9FRjdhY2x4MkdGVldLRmZ1aThqSUZjdVgvL3JMTDFnaGRmUDFOWGZ2VWg5MnA3U3RHRHRtRER2ZEgydWpkQzRvRTIrc3ZxSTZ0djNPUDRwYnYzNDlGZUM0MU9WN0FrSTJWQ0swZU9vZmdLbnJOQVFJYWhEcmhuRW1ZUUtsNGJoMjdOaXhkOCtleVpNbXNTTjB6bWdXYjhrSE1xamY3aHN6Wmd3NThhTHFOcnFKRXliUUxGdjlRMUFGSVFsTnplYXJZcnVQZ1lNRzFRMFBWM01rOFVHRTk5dUNmOEQrc0l4Zi9iZUoySms3YjE2bGloV1hlY1Z5ZEtpTUF3Y0UvaUs4QTdTbnJnZWdRQ3k3VHUzYW1NNlh2WHA1WHU1ZnZtd1orNXJ2djRGcjVmTGxmR2J2Zk1adStHeS9Wb0gyS0xhZC84bzdlc2JRc1RrMW44YTQwZUZ0TExidjJLRnVnS1F5YklKRDVwQlZtTHBod3daMllYZk92cXZ3NGVGV2c1dzRlUklqeHIycnIzdjI3S2xhcFFwRlZhdGFsWnFnS1A0akZWWXRYcnlZbkE0L2o4ZGpYM2d6MUZ1dWJObjFzWE1TYmthT0dFRk9WVWxmaTRXSDAyS0RCZzVVdi9FNGV0UW9sckNjWFZBYXd1TkExSWJkSXlPcGpDT1UzYmxqQi9Va3Y1cjBhOXl3SWFYcGRmRkFoUGZiUWx5M2RPbFM2NHE4SFJTeWJObXk3ZHM5Zmg3eHhJa1RSRzY3WWk4REJnTlRJTnY0OGVPam9xTHdhWjYrU01IUUh4bW91OC9ZSTUrVkdlM1l2cDA2T0xTNmR1M2FaVXVYS2xkODQ4WU5mQVVlZ0pCc1RmRExoZ29HazNRSFpDYU10RzRyd1lld3V5TzJwMUZ4dVQrdVh2MGdOb3JHVFZHSFk3YWZpU1hLeGEwUit0SjZlM2J2cG5kUU4xVWVQSGlRbkN4VTJTd3VYN28wZnR5NE1hTkhUNG1Lc3U2dzgrVHMyYk0vL3ZqamlCRWpwaytmamtSeFhIcUZuNDBiTnc0Yk5reDVWeHJXdW94RWkrSEozVDBhL25EUm9rVW9kdHpZc1lTcE0yMmoxdWNpd2hNRUE0andCTUVBSWp4Qk1JQUlUeEFNSU1JVEJBT0k4QVRCQUNJOFFUQ0FDRThRRENEQ0V3UURpUEFFd1FBaVBFRXdnQWhQRUF3Z3doTUVBNGp3Qk1FQUlqeEJNSUFJVHhBTUlNSVRCQU9JOEFUQkFDSThRVENBQ0U4UURDRENFd1FEaVBBRXdRQWlQRUV3Z0FoUEVBd2d3aE1FQTRqd0JNRUFJanhCTUlBSVR4QU1JTUlUQkFPSThBVEJBQ0k4UVRDQUNFOFFEQ0RDRXdRRGlQQUV3UUFpUEVFd2dBaFBFQXdnd2hNRUE0andCTUVBSWp4Qk1JQUlUeEFNSU1JVEJBT0k4QVRCQUNJOFFUQ0FDRThRRENEQ0V3UURpUEFFd1FBaVBFRXdnQWhQRUF3Z3doTUVBNGp3Qk1FQUlqeEJNSUFJVHhBTUlNSVRCQU9JOEFUQkFDSThRVENBQ0U4UURDRENFd1FEaVBBRXdRQWlQRUV3Z0FoUEVBd2d3aE1FQTRqd0JNRUFJanhCTUlBSVR4QU1JTUlUQkFPSThBVEJBQ0k4UVRDQUNFOFFEQ0RDRXdRRGlQQUV3UUFpUEVFd2dBaFBFQXdnd2hNRUE0andCTUVBSWp4Qk1JQUlUeEFNSU1JVEJBT0k4QVRCQUNJOFFUQ0FDRThRRENEQ0V3UURpUEFFd1FBaVBFRXdnQWhQRUF3Z3doTUVBNGp3Qk1FQUlqeEJNSUFJVHhBTUlNSVRCQU9JOEFUQkFDSThRVENBQ0U4UURDRENFd1FEaVBBRXdRQWlQRUV3Z0FoUEVBd2d3aE1FQTRqd0JNRUFJanhCTUlBSVR4QU1JTUlUQkFPSThBVEJBQ0k4UVRDQUNFOFFEQ0RDRXdRRGlQQUV3UUFpUEVFd2dBaFBFQXdnd2hNRUE0andCTUVBSWp4Qk1JQUlUeEFNSU1JVEJBT0k4QVRCQUNJOFFUQ0FDRThRRENEQ0V3UURpUEFFd1FBaVBFRXdnQWhQRUF3Z3doT0VWODZ6Wi84UE1wMGhEL1VkLy9BQUFBQUFTVVZPUks1Q1lJST0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xX1BSRSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiNTE2ZDM5Njk1YTU3NTY1MTU5NTg0ZTdhNDk0MzQxNjciLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjp0cnVlLCJ1cCI6dHJ1ZSwidXYiOnRydWUsInBpblV2QXV0aFRva2VuIjpmYWxzZSwiYmlvRW5yb2xsIjp0cnVlLCJ1c2VyVmVyaWZpY2F0aW9uTWdtdFByZXZpZXciOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6ZmFsc2V9LCJtYXhNc2dTaXplIjoxMjAwLCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0Ijo4LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjEyOCwidHJhbnNwb3J0cyI6WyJ1c2IiLCJuZmMiLCJibGUiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fV0sImZpcm13YXJlVmVyc2lvbiI6MiwicHJlZmVycmVkUGxhdGZvcm1VdkF0dGVtcHRzIjoxfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjMtMDYtMDIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MiwidXJsIjoiaHR0cHM6Ly93d3cuc21hcnRkaXNwbGF5ZXIuY29tL2ZpZG8iLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IlNtYXJ0RGlzcGxheWVyIEJvYmVlUGFzcyBGSURPMiBBdXRoZW50aWNhdG9yIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyMzA2MDIwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMy0wNi0wMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIzLTEwLTEwIn0seyJhYWd1aWQiOiI4NjgxYTA3My01ZjUwLTRkNTItYmNlNC1lMjE2NThkMjA3YjMiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6Ijg2ODFhMDczLTVmNTAtNGQ1Mi1iY2U0LWUyMTY1OGQyMDdiMyIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJSU0EgQXV0aGVudGljYXRvciA0IGZvciBpT1MifSwiZGVzY3JpcHRpb24iOiJSU0EgQXV0aGVudGljYXRvciA0IGZvciBpT1MiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImV5ZXByaW50X2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZhY2VwcmludF9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImxvY2F0aW9uX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlbGVzcyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQ2NEQ0NBaE9nQXdJQkFnSUVUZTEyV1RBTUJnZ3Foa2pPUFFRREFnVUFNSUdZTVFzd0NRWURWUVFHRXdKVlV6RUxNQWtHQTFVRUNCTUNUVUV4RXpBUkJnTlZCQWNUQ2tKMWNteHBibWQwYjI0eEdUQVhCZ05WQkFvVEVGSlRRU0JUWldOMWNtbDBlU0JNVEVNeEV6QVJCZ05WQkFzVENrOXdaWEpoZEdsdmJuTXhOekExQmdOVkJBTVRMbEpUUVNCVGIyWjBkMkZ5WlMxQ1lYTmxaQ0JHU1VSUElFRjFkR2hsYm5ScFkyRjBiM0p6SUZKdmIzUWdRMEV3SUJjTk1qUXdORE13TVRneE9ETXdXaGdQTWpBMU5EQTBNekF4T0RFNE16QmFNSUdZTVFzd0NRWURWUVFHRXdKVlV6RUxNQWtHQTFVRUNCTUNUVUV4RXpBUkJnTlZCQWNUQ2tKMWNteHBibWQwYjI0eEdUQVhCZ05WQkFvVEVGSlRRU0JUWldOMWNtbDBlU0JNVEVNeEV6QVJCZ05WQkFzVENrOXdaWEpoZEdsdmJuTXhOekExQmdOVkJBTVRMbEpUUVNCVGIyWjBkMkZ5WlMxQ1lYTmxaQ0JHU1VSUElFRjFkR2hsYm5ScFkyRjBiM0p6SUZKdmIzUWdRMEV3V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVFuTXZZaGZlNjdlTzEwU3cvbXpocTh5RE01ZXFuSmh5elBFUTFCZHZjYkdHYUwxdTJoZ3JiOG9Obkx3WmxzL2tpaDRsbXlGYUtMSjR6dTRQYnNKcGdJbzBVd1F6QVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUJNQTRHQTFVZER3RUIvd1FFQXdJQkJqQWRCZ05WSFE0RUZnUVV0SU1UU0NOeklpUUtYM3pZZFpvKzRZSHBLSEV3REFZSUtvWkl6ajBFQXdJRkFBTkpBREJHQWlFQXo1NXY3RmlhbVh4RnRxNmZ3eWhvcUxqK3B0QzVUbWxYRXRQNUZmUGJPcDhDSVFDTDFLNFJ0OWwyb1d0NFZrUGpJVDYwM2ZvRkdIVmt1UnpydVVBbTcwMkUzdz09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUhzQUFBQXZDQVlBQUFERDJMV2VBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBQ3hNQUFBc1RBUUNhbkJnQUFBQVRkRVZZZEZOdlpuUjNZWEpsQUVkSlRWQWdNaTQ0TGpneGdjdGlBQUFjSDBsRVFWUjRYc1ZjaVh0V3hibjNqK210eXBvUUVySVpaUkZCRkt1NFZHMnRWV24xNmxPZmVpdFliZFZiYmF0ZHJMYnV5dUpHclVvcmRhR1Y3QnVCRVBZSUNHUWhnWkN3RTdKL3lYdmYzKytkbVhPK3NPU0xpYjN2ay9sbXpweVpkOTU5bG5OT0xwSWhFU1JrQVpJdXZoNE1EU1VqNFpYK0RMckIvUFdvSU43UGx4V0kwNVdTQUcxQWg3K3RFSzRIWTVVQWR4bHFoOTMrMnFCNGdNclFPVW85YnArVGxvSEFoLzJDRjAyODhMbURZWmVwd2tYRE93MjVJWWNyNjJ1RG9pRW1aWWg1RXRvQmwxOElCclNMS1RIZVA1UmRHcFJFVkhjZWFYaVdnbEJkUmNTcjR4M0pHOFVZd2VNanVJTHg0NU1DNngzTlVMeVhsWUxQNC93WnViSCtLVUtTc3EwOENnUWNPSTdCd0ZkNWZGNjQzcHVpSGltTWhjYXVtZS9IWEgraTZ4Z2VWbUpFU3dUWEVCbUwrSEVDQmYyVzQ0YTJaNjZnT2N4czdCRERxVUNhM0ZnSjFzUm9EeENyU3lMQlM5SW9PNWZzTHdRV3hoMXk5dFhra2FTS0xMUkQ1aFJxNEluVGZNaFlJMzZNaDNieHB1Y0IxNHZBNXVpbTQwVmRUV2k0TmpxOE1CV1l4NVJPUU5uVGhTWXhXaHlOZ2YrVUlzK0ZBZmpqQ2c3Z0NHQVdMM05JT0Fob2llZ01vQlhFbWFKdTR1QTgyeE1Ec0lINlRoeVhydjE3cGJ0aDM0aXBwM0UvYzdUdmFtcVUwdzM3TlRWS29xTkRCb0hhS3lFQXl1ZGc1THlnN1dOR2xNQzFLaVl3N0xLQjluWnArK3h6MmZ2Qzg3Snp5YzlreTMzM1NPMmlHNlRtcGh0azR4MjN5L2FmM2kvMVQvNVNtbGN1bDhQbFpkSjkrQ0Q3ZW9NeXhXQTBYeE9uK1d1Q0lqUTZiVTUycEJyTlBrSERtdHVvSnB2b0hucEZkTENLRmpGNjJpNUNIMjlGU0o3ZHBuZVdTMUhheFZLU20zbkJWTXc4STByWjA2UTBKMFBLY3Fjekw4L09sTXI1czJUM2tvZmw0S2RyWldDd0grTTZva2NHM3k1U2lBR3ZjZEhkSXkwZnI2WkNTMmVrazRiU3ZPbFNuS04wYUE0YWpMWk1MV2RLV2I3U2pIdWdVV210WGpCWDl2em1WM0o4MDBaRkZ2R2ZNb0VqZ2lseVlHQkFaYnFTNDFYZnZFRFQxYkpoMFhXeWNkRzFVbjNOZkduK2FKVU9hMlA3b1dIVUtCOHAvVUwydmZpU05DNS9VdzFIT1hlR1A5cklFK1pzR0YvY3NwcFdycFN5dE1rVXlvVlN1VXQySFRPQXZDd3B5cG51aEo4bEpkT25Tc20wUzZXOElGK2FYbjVKK2pyYU9OcklZQlljd2hvSTFiK0IvaTdwK09JTHFWcHdoUlJObTB6RmxlVm1CUm80SmxKdU91a3Jtd0ZhakRZcVhhOHJjcktvK09LTUtWSTQ3UktwbUR0SG1sYThKZ09uVGxMSVhqWmpCbFZRejZHanNuN2hsVkthbVNabFdXcVVrSWZTWEpLVEpzV1pVMlhEell1azkvQmhiV3ljV3RBeTNsdFd2Q24xdjFnaWU1Ly9uUnlyWHM4NjNoNGxnUmNaUWtNYUlWQmxyM3BiaXFkZVRBLzFpWjR5TEVGWXdhdlBrU0RRb2x4bGtKNnV3czVXSnRNbXlNWWJGa2w3OGI4dzJBVUI1RVFSM09qczdUd3BlNTU5UmtvekpxZzNLNzR3WGpvOUY0WVg2ckpCTzVTZTNBYUtMOG1iSWFWNlhaS1RiYmtLdityS09YSmk2MmFPRmZuWTJLSDFnL2VsWk9MRlVweW5OS2lDSVk4U2xRMk5VMmtzblBwdE9mejV2NjJ4RzlaUEs0YytlbDlhM25tSFN1OXBQOFQ3L3Q1b1FKVjliamp3OWtvcFRwOUE0VUJJQ01jUUVNTmdYbm9RS0JRZUNUS3E4L1h3S3VSa1RvVlpucU45Z1RNelE2cG01VXJMWDFlUjhJanl5UGdJckFkai9iYU9VcFBIdkZ1VXBsRUMwVVJ4VldTREhsV3lVMXhSdHRablRKSkNwUitwYU1vbEtzeEx5QSs4R0o3azZTSlBhZ3p3ZU9SNy8vZ3N4eHMxT0FVRWlQRXowTmV2WGoyWGhtNUdaVkVGTXF4UVdrRkgwWXdwNmdEWFMyS3cxM1ZWWS9PODkvZEk1NDR2cGErdGphSGR4cko3bzRFUmxRMGxNd3ptNlR5WHJ4WTVmYktzbTN5cEZFK0dBTDhkQkJsUFVBUUZPL1ZTZW5FaGhLL0txS0IzbTRLS0ViNDBLcFRsejVDT3dtSTNxa0tnMytZNjR6ZmFIcld0ZXBmS1FvaTJhT0dFcGRFRGhyUXUvZHRTZWZXVnN1c0pYWWl0V0NrSFAvdEVqaForSVljKytWaWEzMW9odTU1NVdqYmVmWWZTTUlPMEF4ZVVEQjdMWjEvR0VHNDBwTGp4Y28wc2M5N0cvaWdiTTIxcjF1aFVNMUhIbWNIcHBqeFBEU3M3TGNpaVBBdU9wRHhNbnlCSDFxMWpIeGcza0NHa200SnRVVWFxTUlqTFJnTWpLdHNyaG9TcFluWS8rWVNjV0Y4akhlWGxjcXlzWEk2VUY1K1ZqbGFVU0VkWmtiU3VXMHRQcVZMaHcwajh2QW1jREswT2I5WE1mQm5vUHUxNEFHTkdReEFlZjVUUi9sNnBtRk9naHFlR29rWkltdURSTHErY1Z5RHRuLzlUaGpwN1pGQzlhU2lodUdBb3NCTE5Fd2xkd2ZmM3lVRFBHUms0YzF4T3JxK1ZMNTk2UWlvS2NxUTRiWkljZU85dEc5OURvT1A4QU54b1JrcDlleFlqUG1vV3ppZlBsQ1dtRDFVc2pVdU5FK3NhaTRJcUV6V0VtdXNYV0NmUzRXaHhHZEFoT2FrRS9LbkN5TXFHSUpVWUVBSmxONjFZeHZ1RGFubEpnbkZBNWlIY1lkQ3E0UnFlQTZhNGVGS0dHZHJKZktaODlleXZBKzJXeHozTEJIZndINnVsOURKTUk2WmNScHg4bExPazhxcVowdFZ4Mk5Ga1hoRHdjWnZtRm5nT0Y1WFB1M281MktmOHZzMHlXckFmV1R1YnYzTUIyK1BIRFJqbi8vRGFUeWhEVGhWcTNPQzc1REtOUW1xc1VIUkZMbllHbUxjMVY5NlFIeW91am1nRHJnaGRORWI0U1IxU21MUFZBdjNLdFNCVEdwMnlVeFVFQUFMR0d2TkVYUzBWenFsQlF4a1dLSmdlU3ZKeXBIYkJQQm5zNlhFZERMY0p6U2xJLytvZmU5UU1UK21waEVkQVNCQ2VSbzBqR3E3SnZDYTBweHhzMHJONkQ3N3MydUVQVzVoSVFYNDdZelNNRElhRGVQMTBnMnIrREVydDNiZlJHR0hnbUxZZ3gwSVlxUEpSUGtPbk1WVXVwMGcxQ016bGFMUDVqdTlaZHlKMnEzT1hyQkFaOG1nZ0pjK0dRSXRkdURudzFqSVZERnBRU2tsd0xvOG1rRUFVQnVYZzN6K1UwblNkOS8xcUZNcFcvSlZ6WmtySGh2S0FnNWxENTlGdVdueW5HWWUyOTNRaFlSRTIyT2NYTmxDY2VURkJLNG1LUHk0QmFBZ21UTjgyOGlJVnBoOTBCUEI3WVM5K2p1MjZIdEZwcm1vbW9sbEVLNmVkckF6WmV0ODlVbm50VmFac1RiZ0hMMGNxbTVVbkhjVTZkenRhQUhGNlFqbXFTZ2xHWHFDcFVIMUNLTnEvOGcwM2hoS0Jnazh4Q0VKanZSR0xIRGFhT04wcFpiT3hVTkg1V2tNNlFqam1yc3FaT2RLeTZqMjI4NzdsOFZoSUc1UU50eTJpbDJBcW9QRnhTbEJ2MElVZ2hlM0hvN0pkZndmMFlyVFNPdGE2dGxFTEFLNmpPaDhZTGdobk5YTDloL3BrNTJNUFU3bGNuemlGWWdyQzR2YjRsazNTOU5lVlVqaGxFbmMzWlRNMFN1Vk41U0lXYWVmRER5cW1pQS9nWklyeE5GcElMWXlyb2pudjVHWHpxQkZnWkZ3WVBHSDI2NVRlM1NOMTkveVFod3MybDltS3Vyd2dWL1l2ZjgxeDVGYWdMZ0VObExENS9zVlV0amMrZWplaWcyNnpPc3BLSW1Ib0h3d0cxd0g4QlJzNStqV25halFzZW9PeVptNWNsa2NBMThpTWlRWENzUzFicE9hNk9WUXlwaTNRQ3VNc3lwb21kWGQ5VC9wVkRvT25UMHJwbkZ4M3dLTjdmbmc5akZkRCtZYjVjK1g0eG8yR2pqOWVIZ1kyVEhTZENxUzJRSE1KMnlTdjdDVEFBZ2g1R0ZzTFdvRTZKSXJTcU9OS3VPN08yM1ZmT2NtWTB3VEZsUlNvSVMwejNMWTBjOGdjSHNEZTUzK3ZjelZDdjg1MzJpY0lVWEZVWFQxYnQwMm5neEY2cGR0RmxIa0RoQ3FqMnpaV2ROOHAyamNZRWF5OU5kZXlMdmdhWG54QkNuVmJaOG96YjRWWEYwNitXTm8vV2FPTjFad1QvZEw0MmhzOHZDck50b01kVzdSbXlMck1DZEx3M0I5VkdPQUkrRTJtRVUyT3hsSEFtSlZ0NCt2QUtxUmczUjRRNGtpUkkxU2g5K1J4S1NzdzcvUjRFY29aeHYvK2dmVkJjOWNld0tMK0hLK3JVYVBJc1pWcnJDL0NlbEYydWxUUHYxS09WbFpLUWczSzk0SHBlTCtOWUpqZ05JL2ErencxWVlZMktMaUx6dVptcWYzdVRUemN3UW9jWVJ6VEZsTFZyZGRKejBGN0FJUDV2Yk5wajFSZWVia1V6OERoa1BLa3ZHRHhXYVR6T3M3T3UvYnZOMHIwTHhpeSsyRStDaGk3WjBPL1FaZCt0bFVZZE1KUzVRMG9tU2dqd1h0aHlWQVM1MXdxVEJXbFc2Y3pYKzVFRCswS3BBYmVrRHhzL3ZGZFVwdzUwVHhCK3pJcVlPRkRoVS9WbFhtNmJQdkp2ZEwrcjAvbHpONEc2ZXR4RDE1Z2pCNlBNMEpjTWFIZVJ5ZldPOXI1a3dLd0QzTDFWcVg5OEQ4LzFyblkxanM4SGdWOVdGaG1wVW5qUzM4T1lrSWZHT2JlMy81YXlxWXJUNUN4ZWpiMzNscGVselpSRHJ6L3J0Sm43UTFNMk1sMXFjRTRoSEgvT2syeWdQeWNhNWNnTUNHSFB2K25icjF5cVdoL2dzU3dwYUc1OXZaYjJEWXdvUXJ4UlN2b0FtOXdRTHBhV3FUbTJua2FJbkhzYUh0VTRNQ1JhUkgyckJvMjhaQ2hPSE15UFdQWDQ0OUs2OG9WY3JSbW8vU2ZQT1hRbVRFWldvdEk4VElpUVJoN1JIREMxeEk4TmRIYkl4dHV2VW5Lc2pTRVUyNUtuOXRhVlMyWUt5YzNiN0cyNk9kNFBGcFJadDZ0U2daUFBwUkRSaHV1dXlZOG1PRllwTTdBNmxLSDhabXpGV3k3NHdtSXpuV1J1ZzYweXU1ZlB5R1Z1c2NHODVpL3dBeERNRmJYV1ZQazhDZi9RSWNZSXlaRWx0VUNBbU5hT0w1dGg2ei96dFZTTkgxS2JDdG1aODJXYlA4TmJ3ZHUxRlV2bUMyYnZuK3oxQzk5V05yWGZDejlSM0FBWS9pQ3h5UEROWVptRmVpL01BUTYwVTlsY0t5a2hITEREb09IUHpBK1ZTQVV1WDNwUTlwSU9VUmJKeHVrb2Q1K1JpTWVYRGtlakNlTkRJcXI3ZE9QYlFnbll4c0xOYU9EY1ZFMmppRlBiOTdLdmVIUjBqSU5vWjlJNjEvZmxhLys4RHVwdS8wMjdodXI4bldlanExS1dWWkZsVTlQazYzL3ZWaXhPS0VwV0JhUENpd1EvTGxhVDJ1VGJMLzNYaW5PUUlRd295blNITUtsa0hRN2c2UEpwRkRxUW4zVkZYbFNPbmUyN0hqb0FUbXh5YTE0Q2VZMVFSSHVjT2RDNEdsRStFYS9qYmZkelBtWGZHSnhSb1ZQazhvNWVZeHNmckNnT0k0ajBycG10VWE5Zk5LSU9kNFdkbW5FVlRWdmJtaUw3b0hlVUVnTnhrSFpJRFloaHo5Ynd3Y0wyRm9VWjAvbW84ZEN0VzRJR1E4QUdLTHl6YU9oSE82WDFaTHhNTC83dEliWFFMaE9hRnJHSmVaNll5OFN1dmNraGt4dGdTUFVxbXZta0RaN0dxZTQ4N081bmVGSm5TYUVSVDZLZFNFU1pRZ1RDNkxDck1sU3F3cnExSzFTSWhFTDZhUmhaR1VEY0hTTTloMjExWHdHQUJvNEJtVG1vdGltR3hkcEUxcy9HRGcrWEo0WTZKR2FXNjVYMm5QWmo4bEhCZDFhdHNGUVhGdW1yd0hqRnNZeEgrNTQrSDd1bjdIZzhwN3J3eEhQdzVWd0tsL25NeHdOUXNqZERRME9nNGVZZ0NrTXk1blJHN3pIRzZDTUJ4NnRINjJXdXNWM1NmWENhNlhvY3ZWa1hRemhzYUVYT3JkcTRFRnBZTzZuRWpVNlBIckUwN3BkVHp3bUNaNnZHOFRIT1Q5RTNyYmxSM2NISHNPWk4valh4V1RqcWhVT1lUTDkxSjhMeWMzdnJOTDI1aUErQ29KVzVEVTNMSFJUbk84ZmsxT0tNRDdLZHRSam9WRXhkNVlTaUJjS1hHak50VEJiTlFNNFZMQnFwUWpydTU5K1dycmFXcTNqbUFDUklBcS9YWHQyUy9ONzc4cXVKMzh1dFhmY0loVWFQZ3ZUSjNIUnhnVWMrRkJGOHkyYWZDakdMZlRVaXdvekx0V0Y0cTF5ZWsrOW9hWkE0OHFKQ3hoYWNrWE5UMnl0TTA5VW5PWFpXRDlra25jWWRlVzhLeVRSYmQ1UGZKcUhkWWlyQXd6MGRFdmxWYk81TUF2S2RrNERwYmV0WGVzVWJ0M1lkUlF3TG1HY1lVd0JnOWYvNm5FeTdRVnJJUTNQcm5XZnFYUGxyaGVlbFJOVjFYd0VPUjVBcjRoeGpXc0VmNFRGbnVaV1BvNDkrTGYzcFg3SlExSjVlYTZzbXphSisxOEw1eGJTc2NqRFF3a1lJL2JyT09IcWJtME5hSjNqS1poU1RGSGVvNjBPQ3o5RUwvQkxKYmxVT3UwUzJmdktpMnhyT3hRSE1acTVhRU9tOXc4c1h5YnJNdFU0c1RXRnpFR25PZ3JtOFcwYXVheWQyN3Q1emFjSVkxYzJpUVlUdGdMdk90UWkxYnFOcU1ySjVSektjS21lZytOQUVIMTYvejUwY0JCai9tdUNEWTlmQ0I5ZUU1T0FiUWw0QjlzWDBOYjAzZ28rRGkyYUhwM2c0Ym02aFV1VXAwaGg5aVRaLzVjL2N4dGxLalVnYm5jWmFuV01udm92cGZxNnEwSUk5NHFDSVdHQmxUaHpPaGdNc21TdnhyWGh4ZVZnVjZkVVhINFphZUxVcHpuZnBkTzhZdDVNT1JKN1FPSzZwd3pqTm1lYmhadnlZSjBSMDdZaXhpb1Q1UzAvdXBQdHlQeG9xUjBCQWpyaXhsNDUyWk1nVkFoNllLQlBHbDUvaGNiSCtWSHA4NjlMWVZ1SWh4TGxNL09rdDdYRmRmWmcrSUtZWGJiMytUOHlYUHY5TlBEUnlLZE5sRDIvLzYwMTR2ald3WFhqdGRram9xTVdjS0Yvb0sxSXB4UXNNamsxWUtyUnhTM28zZlg0STlhT01EcG5HUmRsZTE4S0ZxdXcvcnZYbTFVcW9aeDNRRENFbVovRFY0VFF6cmNkS3dSRFU0UWViNFRiVk1Qa2hhMFpRdXF4ZFlYMElpb0d4b25ueWJwVndwWU5DN1pXN1AxVnNMNGZrSGdlbWF2eDlEUTJ5c1lmM0VwRmtFZDZOM2hWbnRXcnU1dWJ0TFhTQmp5dUh5RGc5T0F1c2Zyb09YcFlLZ3QwZStqd3dBRDlDeDlWQytmSnFibzZaeGYvRDhvR2VDSGdwMThYVEdlMmI3WDN1RldBb2IvT08zaDRYM1ByRGRKNy9HaGdjRXd3REVjUUlySllFVC94NkdQejVLQTB2dm9pcHhzSWxRYzhqRWk2UjllRjVGZS9mWW9yZmZaeHVBaGFoZ2xoN3NUV3IwaFgvdWdQbzdiK3lxLzIzLzdMUjJTZ3E0ZnY5Q1QxOXpRb2dDWi9peVg4OWZiTHZ1ZCt4OWViYmFHbWRPWFpvaGV2VGU5NzZRVko5TWVPcGxPRWNWTzJQOFFMQWxYVCsrcFBmNUNpcVhibXk4V0xoaVF1aUFxeXBQR1ZWN1h0NkFrZURrbHp0Sk1hTW45Y2F5bld6dVJKbzRCM25OcXlXZFovWjU3U2FCNWtvVlBuMnN6SnN2V245N3R6ZWsydUg0RmVxcW81ZVVJMjMzdVB2VitIZ3hERjRVL0JvSENjcHRsZ0xnSGlaVUNzREFxOXNaN2NYQ2VWczY2Z3M1Z1JxVUZxS0FkK0hMdDJ0eDdRVnNaYnFqQU9DelJsV3VtaktDRTlDTUVKdGx1M1ZqVzNYT2UrMUREdm9WQndLclJ3cnB6ZXZZZnR4Z3hPWUVGdW9hREFjcVIwUXJnL0tKMk5EVko3MDAxVURnMVJGYzZGMWZSMDJmb1RLTnVqOEpITEc1ZE9BeHRxcFN6RFBrTHdIbzI1dnlSckV0OUU2ZTFvWjB2MG94Tm93Y3FXZ0lNNTVhWjFWRFRxZEE3djZaSDZ4NWZ5QVFtbUZ0QUZIVUR4MkVvZTBPMmxkN0JVWWR3OCszelF0dm9qaGpsc3ZialBWb1ZqTHNJeDU2NW5udEs5WlMvYm1RRDhZYWdweHBjcEJQN0ZGQWFCYUEzYldFT2ZXU0ZjdUtJVHFCTnZBQmpjaGhzWGtDWThLMmVvMUcxalNmcGtxWDkwYWZoY0NSREdCd3JGVi9mZ1lpbk5oSUdvQVd0L0x2UjBqdzJsTjY3d2h5Z2pnTFpocytHNXlnS25abmhkaTlGQ282SXRKTldvc0RLZmU0VjdGU3RaSnVqcisxc2V3VGV1N0lGangyVHJnL2N4SENGTWhwQ0VwTjV6Y3RzbTF4SmcxazhJVkp1bHMrVHFCbnZQOEdpVEZXeUQrdWd4S3NCeTlJdFNtTThWS0JiOWExMzlnYTY4Y1NhTk4wWEFwenRqVDU4b2pXL2pmVHYwY1NhaVA3N2ZxWDE3cEdUcUZIb2NEQVRLUUJtZjl0VGV1SkFuZzZsNEh2QjczTWFuSmh0Q2huVExWbnZQOS9sOEcvTGpPS0JSeDRKM3QzNndDajNET0FFWDhTallSWUJ2WE5rWStFaEpzVlRNdVl3ZXd6Q3BSUFBoUk5ZVTJmU0QyOXdCaTUySmV3S1JPUkU3Y1BPN0tuamJrcC9LNXNVL2tKT2JOa21DNStxUk1xeFhkTWdUejFrd1dmS251Nm1GejhkeHRNcDlMZm0wczNSODZOQzVjenRhS2hoK3cyT0NySC9rZjZSMEdwUnRMMktZMGpPa0tEOUxkdjd2WTlvNDlSQnJlQlZZTVB4NEJnTU1UZSsrdzRkSXdJMHhPRTFBNlRvVnJyOTJucmFBWEp4eUEzZ21rK0Uvb215TXUvTVhlQTBZMnhKZHRmSzB5bkRpcXhMTVAwWmJGTVpwNVhHYW5mQU9ybDNMcjBzeHAyTDF2UDFuRDhuQlQxZkxxVDI3K0g2YldiZGpYanR6RWVpUTBFdjFENS9qSEtzcGwyMzMvMGdWcGlIUm5mYkJHQkY5c0JMZit1TWYydGNoQU5EaFBCelEyZHFvNDArZ29xa0VEYlA0TEFxS3FKaVZMNmRoSkJ6VDBaRUNzRGwrTklXSWdQS1pMcW42em53dXpyREk5ZXNEYmc4enArbzArYUcxamZGc1plY0FNZmptbGUwWTZEdllLdVZYWFU2UHJuUjdXUkFOdkhpMGQrWUFWcGNHSmxnVUxMa3I2VzF2dGE5TFZDRUlaVkFTM2huSGUrMGJicjVldHZ6c1FXbDQvamxwK2ZBRE9WSlZLYWQyYkpPdXZWL1JFTERxYnYvM1dtbDYvVlhaOXRBRC9FU29TTmNONXBIMlNCTEtLOExMZndVNTB2YkYyaUF1bWlDTFZyUHI1MHNwZEg4azdQdGpqNDF2d3RtVVhVYW5iUFlqbUxHenYxWTJ2UHF5dmFDWm0yTlJNYmFReEpNeXRQUjlReiszUm9uRE42NXNzMUVMd2ZpSXJ5UlRWNWRLWkpIaWdySzVEMWRoYlgvZ3h5UVlqelc5VUllVHUrT1JwVW9IckZzWFEzbmFuNDlNM1pTZ2dzYlJKSERpYzZMSytUUDVFaUkrcUZ0LzdkWGNycFROTGJBK09pWWVoS0NmUDdpdzEzbHRhL1BWYjU2V3hFQmZUQU1SUGQzTkRWSTFiMVlrRTdkNFFoa1BXNDdWNGp0djEzaFU0TWJ3QXpsQU1kSGJ4ZWNLa0pzL1lNRjRLRmNVekpDMlQ2TVBKT0xyaEJnYXduOHNqUHZGdzZhYmIrVERCanNzd0ZlTWJ0RXhKMWM2UHZVUDkrTWVvZjIxNzRuNm5WSjF6VXhWemxRcHhHbVNDNTNlcTNnczYzRDVpSUU2VEIwbyszdEkvSElTQzBhdXZvMFdmcjZyN1hjc2VWREhNNFBEcnduTTB6UElzd004TCtjQ0UrTndmSXNJTmJmZ21iVzFzeTV4UHM0RDFpR002UzZ0M25mWDh0NFhuek5IVVFNMVhoeXZLZ2RzOC9BTld6aGI4RWdDTW9QL2dMSUJSalhHN3R5MWsxc3hlSmJmUnRERHRhNXU4VDNTZi94NGFFdm1WZEZlNlBoa3RmN0p4NlJLdHgzbCtYakwxRHdxbml4YU9BVzdPbHZZb0J3SkNVTERVeTkvSDY5TTdmblRiemdxQnVQNFJnUnp4S1llSFIvUDRPSE5mTTg3R0pyaVNwc2tiZnplM0swN2ZOOFJ3SWZxVUhaZzRSaGdDa3gwbm1FSXAzT293WE50Z2NnRStxK2VKZTNsUld6dGNaMExWTmx1TUNhOC9RSEF2OWxRWlUrZGFKK1hJbHhvd3J2ZFRXKzl5UllSSVNPQktjd3pndkxlUHp6RGhSbU9Bd3N6SnZQUUh3OE5NSWMyTEgvSnJOd0lJZURhSDlSZzRONldBN0w3bGIvSWxydnZWRytmelpWcHVlTEJXeWVJR3Q0SW9IZ3ZFSHF2S2dtR3hwY25NTmRyZmMzMTgyWDcwaVc2QmR5aXBDcHlNamFjTC9QeUErK3RsRUs4RUpFeGhlKy9GV1pNSkEvRmFkL1NxZUlhOVM1YkdZTkg1dWc2RG1Ba0Rjbit2end2LzU3d0xYN3VoRStBa1NpM3lmOGxPeC85dWZUcGxqVEFPUVkvNi8rZ0dRenFvcWFlcjdFZS9QQnZtajVnd3A3MHpPNTZJaktHUm9aa3l6WG9QdEV1VFc4dTQ5T3g1bVd2Uyt1eTEvVDZEV25XeGRQaHp6K1RvVzdkUjJzL1AvK2dIOGVMNDFIbEQzU2VraE1iYW5RLy9KYnNmdXBKdnN0V2M5TkNidlB3QWtDaENnR0N3SXY1NjNRcmhVZUYxZGRjSmJWMzNTRTdmdlc0SEZ6MWxxNmNkeW8rVzFNQXNaV2dLS1BiVkthMWlVRTVXbHFpTkw3TS8yM1N2UHhWT2ZEbTYzdzFHZ3VvSXpXVlZFaVNYR0xGc1lGUjBkM2VJdnRmZVVubDlvYlM4RHJIMzdmeVZXbDg4MlZwWGZPeGJVTVZ6ajVPTVRCbDZ3K0lqQktFSEZlU0RaWnNxOUg5a1lBTFE3WlZERjRZbWlWdGl5d3p3SVZQNXhnbmhEajlzVnRxRnJxSU9kUGVKbDM3R2xXQlg4cnhMWFY4bWZERWhtcExXb2IzZHU3WkxmMkgyalFzZGtlT3JCQlhVbFRuQ2dxeFloZ3pBbC8ydEhvekhUc0EzUURPRFRDRVhrUVIwblFVNktLUTR6U2REZEdjemNZR1hwaXNjZFUwQWlzUy9LQ3BRa1NjSnZVU0U2NGpISFZPc2pheWxWREVWVkNFMTQ2N0JIaTZBajJ4ZTM0OGdxdVBicVBlalQrTXQyaXJCV00wT3RBV0hPQWhXS0FkbWJ2bmhjMkhaQTZ2M1JzN0RJbnVERUNMSDVNbGoxd2o0SUNuM3ptUEpuODNEdnluZCs3K01BREJVSUsvSDJNZ05IWjFGd0syTlZ3QmlEUGUxKzVIRFBqN3JvM0Q0ZThHM2JzYUNqL1dKb1F4N2U3YkFrSTdWMmZGaUE2V2s0TmF5QUhST0JqQnh2SUozU0tqQWM0NE4yTUFQNEFhRThaQW1YaUhJMGU5Rzk5dTZmaHg1aFc0UUlzYUFJeFFRS2p6QmVab3IvZGpBcmtRY0R1Z0RXMFVONVlud21mRGlMSkdKa0NqSlJyTTNkSStwcFZnRlA0R0lKUnhEMjNqM205MUFGTGorcmdzVm9qYUFZeEdHNDlsKzR2YU94TDh0YThlSzhURGRaeFh3Mi9Ydy9uaU5mc2xRNWl6WFcrRnFCT0F6TGt5d0s2VDI0d0lTYmc5UGhDa1dSeDVERml0UCtkc01xd2lmaGxtSTVlZlpVaHhpTjlDV1ZPZ2pwblJhSkVDNVVpQUhpMWxvWTJ0aFNuR29mRFpHRUVwaXZHUWhCTVh3d2RSV3NBRDZVcTZKL0ovVVZiV09oTktnQXdBQUFBQVNVVk9SSzVDWUlJPSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIkZJRE9fMl8wIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiI4NjgxYTA3MzVmNTA0ZDUyYmNlNGUyMTY1OGQyMDdiMyIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJ1cCI6dHJ1ZSwidXYiOnRydWV9LCJtYXhNc2dTaXplIjoyMDQ4LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxXX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTA4LTIyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiUlNBIEF1dGhlbnRpY2F0b3IgZm9yIGlPUyIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjQwODIyMDAzIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMDgtMjIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MX1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNC0wOS0xMCJ9LHsiYWFndWlkIjoiMzBiNTAzNWUtZDI5Ny00ZmY3LTAzMGItYWRkYzk2YmE2YTk4IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiIzMGI1MDM1ZS1kMjk3LTRmZjctMDMwYi1hZGRjOTZiYTZhOTgiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiT25lU3BhbiBESUdJUEFTUyBGWDctQyJ9LCJkZXNjcmlwdGlvbiI6Ik9uZVNwYW4gRElHSVBBU1MgRlg3LUMiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9LHsibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sImlzRnJlc2hVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZWQiOnRydWUsIm1hdGNoZXJQcm90ZWN0aW9uIjpbInNvZnR3YXJlIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQ0VqQ0NBYmlnQXdJQkFnSUVBVFVBQVRBS0JnZ3Foa2pPUFFRREFqQm5NUXN3Q1FZRFZRUUdFd0pWVXpFUU1BNEdBMVVFQ2hNSFQyNWxVM0JoYmpFaU1DQUdBMVVFQ3hNWlFYVjBhR1Z1ZEdsallYUnZjaUJCZEhSbGMzUmhkR2x2YmpFaU1DQUdBMVVFQXhNWlQyNWxVM0JoYmlCRVNVZEpVRUZUVXlCR1dEY3RReUJEUVRBZ0Z3MHlOVEEyTWpVd056TXpNalZhR0E4eU1EVTFNRFl5TmpBM016TXlOVm93WnpFTE1Ba0dBMVVFQmhNQ1ZWTXhFREFPQmdOVkJBb1RCMDl1WlZOd1lXNHhJakFnQmdOVkJBc1RHVUYxZEdobGJuUnBZMkYwYjNJZ1FYUjBaWE4wWVhScGIyNHhJakFnQmdOVkJBTVRHVTl1WlZOd1lXNGdSRWxIU1ZCQlUxTWdSbGczTFVNZ1EwRXdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUWRsSnRhdWJBczNaWGFWRkVzOTRzOUdQTEk2WmlnMjVCWXRkYXRKdnkzc24zUlBuc2VMMzdNUndjaklDOVFiUG1VdXQ3VHA4dTVwc0g1cGhDYTlVSlNvMUF3VGpBZEJnTlZIUTRFRmdRVWpTYmROcG1wOXRkRVRHRTI4Z3dnWmE1K2xiVXdId1lEVlIwakJCZ3dGb0FValNiZE5wbXA5dGRFVEdFMjhnd2daYTUrbGJVd0RBWURWUjBUQkFVd0F3RUIvekFLQmdncWhrak9QUVFEQWdOSUFEQkZBaUVBNWpyclQ4aCtPaU0wNTVuMEtUU2R3d1hkZHg2NXZ3eW5McjRmZW5FcVRRb0NJRXhzSUxneE9GLzd2dmhIQTlrTUMrdVQwMkE2TnU5WDJFZE90M3NxMmpIZSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFRQUFBQUI3Q0FZQUFBQ2I0RjdRQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUxpTUFBQzRqQVhpbFAzWUFBRzFuU1VSQlZIaGU3YjBKbEdaWGRSNTYvcm5HcnVwNW5tZk5za0JDYUFLTUJBYUJKUHdpYkdMekRIN0U4VXRpTzM2eDMwcklpcC9qZUszWVdYYWVzNTdqckNTZTFvb1hOckpCSUFrSk1BaUVRQWdoTkhlcnU5WHpYTlZkMVVQTi8vUys3OXZuM09FZnFxcGJyWUYyZlZYN1AvTzVaOXI3N0hQdXVmZTZPY3hoRHY5d2tmSG1IT1l3aHd2RXFsV3JPdnY2K2hiUlBsNnZpNWM2TTVrNlRhQ1l5K1UydVh4ZUR2M21jaTRISTFNbzFHdFRsU3V5K1N4OWhhekM0TVovdFZyZG5zMHd1NnhEWnBsc05sdlBLbXJHMVdxMWpRZ3AwVVh1elNCT1pjdjJYSGJaaXUzd09lRHE5ZlAxV3YzRTFQalk0Y0g5SjM3bjRKZis4b3ppdHNHY0FKakQyd3AzM0hGSC9zaVJJK3RLcFpLYm5KdzBUd3ozRXY3QUNIa3d3Slo4UGw4SE11U3FmQzRQeHNuVmFhOU4xYlpsY2puakZRRHgrVU9lY3RWYWJSMDRxZE5Dd0ZSZ1ZMZ1Jsa1ZZWlVYR1pmcWRtTGVlQVJpRm5GZXYxMnBMY0sxbDlJT0pLUEJYT0RQSklwdE0wYnY4ZnpEVENGS0JZQml5YWc4RXRnMW1DWVBGbzNyMTlhNndicU5sNm1ueTdCazM4T3F1Zjd2M0MzLzF1ejVhU3pTV2N3NC92c2lBZVRqQk5HRndjSkE4c01sY01ZckZvc3lxcTI0R0V4WENETVVmMnNobzVYSjVMWmlvVzB4RmZ0SVBma0dZcVpaaFNscEF0NExKSEdZbjQ4d0h3eXozYmdCekZSbkRHS203V2dWREJrYWl3YlNNa3lVVFpncm1Iek9iZ1hZTy9HQUd4TzZMWlN4TDF6cVVqTjhPelVFdDRqWjRtYk5ObnQ2N1RXaExaRys2eFpVMmJVVWluelBNOHZDUU8vN0NjMGNxUFlYTkIvL3lMeWNVMEFMSjFwMURDOXh3d3cwRndQUzRCcHc3ZDI0OXdveUw5RnMwQThPM1dxNnVnbTBlMUVBeFUyQ3FURDVUcjFhcW5GVVdrWW1Nb1FKam9mT3E5YjVxdmJveW15SGpXUGZRQ3RaQWtub2Zac0NWU2FZd0JpUHIxRHN3eTYybFRmNHl5RUFjUzJJazhYWXFMYWp0UUVPQUgwNzZUU0VLSXhMaEtmOEE4MHo3SjF4TllSNHB6K2xueElEWTJpWjIyMHhpekNKS0doZWM0UFVpN3IrQTNLM3ZjUjFicjRBTmhWRjU2bTdxOUNsMy9JYy9nSHgySDl2M3hiLzZJbjFib1RtM09RaHIxNjd0V0xCbzBSLzBkSGY5REpobXZqRVJRNnpKUENQNTlndGhnQjhRWnNTakl6MVRZRUNuM0lEY0xRYTY5MmdLZ2ROOG12MEQwaUhlMVQ1NmE4d1lmOFljREROR1l3T0dTTmFZczh6NU1rSVlSQVJybjNTM1IrbjlIM1RGamRBQUlrQUFEQTY0NDA5L3o5WHF0VWYyZnVGemQvdUFKc3p1Q3Y4QWNmWFZWMzltMGVMRi8zMXFxaXlWU3BCaDlyYURzMDFBKy9odFExS1lYYXdHVEp2b0FydCsxdEYvakliVVJUWHEydzg5UC9kcGwrMWY0RjBBNmpVNWVOS2QvTjRUcmx5dlRZNVBuVjl3L09HSHgzeG9DdFFmNTlBQ1BiMDkxMkNkNmlvVnJKQXJOU080cTlXNnFOYU9hcTJwM283UVdXbmlHcm1aWEVRb25LaVZYd05GUUp3bXVrQzB5citSaE9ZQTFDQng1ZUFPZmtsMzhMdTAxQkpSZWQ5c3RDcGhncWhLWGlCbGUrYTVUQzRQd2hJekVKZVhES3U3VW1laDV3UEl2Q1htQkVBYllPM2VSZVlYZzdYcXFEZU1aa0lpbnJkeU9USTlNWTVSbEh3R1NxYUpxVlhlQ1dyemg1U2dnT0FPZmtsMzhMdTBhTHlDQ0Q5SmFoMEoxQmF0SWpkUTQwVkVyYU5HZEJISTVNSDhZUGhNbG94dmhCOWR6dU9EM216Q25BQm9neXh2QVhGS2J1eWdRQUd0d2xwUTB6Z1FnVDFlRC9rLzVEUnJtdTFmcTdTWE0xclZWaTNScXQxRkNKK0pFbmtGSlAxaWVwMS9uUDNGOE53dEJuRmpHQVhRWFJscVZmVTVBWERoOEJwczFNaU5mMnhjTmZEcy9rSlhwMmtPRjQ5VzdYbXBhVHEwaXQrZUxuNGNKT0pKcXJRZ3p2aGtlbWtCbnVBZlg4K3QyblR2eHpmUzBvZzVBZEFHMVdyMU1ta2JEWUFFd3FCb3BpRFVPS2dpQWZlMklKdmQwdFFxM3B0SmFxWUd2emVDd25WQWNVK2wvbmc3dWJGdEZKUC9aczNXc3U0MjJKckE0TXNTbXphdGZWZHZiOS9IY29XODduL1hxdlh0ZmtFdnFHRWcvMmhBMWQ5UXE5YzZRbk9nUGV2WmJHRlpMbGNxelc2enFFVXplcThXSVc4aWtsZWZUVVhlMnRKZWVyd1o5WG5yMjZ6LzF6OXJHa0FDNDhlT3VLRW52K2tteTFPdVdxdTdtblAvYzkrRGYvMFpIeHpoY3V0eFljMmFOZStidjdEdmF4QjhPYnVGNXdkLzJnQmdTL21abXhLMHE2c0hicTZ0THJTSkxzc21iWU1mOTdxK1RjdmZvbGpUbGJULzEvOXRrd0FZT3dvQjhOMXZ1S21wS1ZlcDFUaXNYOXo3NE45YzY0TWpYSlpMZ082ZXpvL2tzN25jMU9Ta0dvRDM4a1dRaG5TWEl5cTdjdG1vSXFycXRsKzVVdUVCQ3E4bDhPZENhRGE0MkhUVDRVTHliQlgzWW1nbUlBNGJjUllVcTd4dkppV0wwQ3I4RWxJMlRkbnBDUEVicVdXZW52QmpiZDJpYjRJTDgrQzJ0ZmY4Ny8zeVRPQ3lGQURaWEhaenVVd201bjMyQkVFUGdwRW14RGZpZnFtMzQ0ZjM3dFBycXRkSlhLZUJkUHkzVmFkSFlibUxwSkErU2EzaWtWckZmU01JOWNMZ2JFdSs3cm1vRFFLMXl1dU5wc1l5WEdKcXFIc3JScjU0QXBNM2tDRjJ3Q2htcytPYjVVZ2dpbm81NFpwcnJueTRXcTEvdUFiVjUyTFIwOVByaXNVdUNKTzhTWVZMQW5ZSURPYlgwUEp0dk9jd2h4aHR4bUh2ci8wYkRKejB5Qms5ZWdoTGdNZWgxVUxUclZhNUIwRDhFcFlCLzkyc2hzdHl2RjE3M2RVUGxhY3FkOXY2LytMUTNkM2pPanQ3WGFGUWtrYncrbkZKTXJtODBkQkViN3NXbTZGQWIxVjVlMzdsTi9Icldka2JvMGNPdTlQZmU5elZJZ0dnVTZmL1plK1hQdityRnNOd21RcUFxNzQ4TlZYNXlPdnBrYTZ1YmpkdjNuelgwZEd0NVVBejNyanVUZ3VjUzN3ZG45MGxMMzFEaHE4Ny94WlM5NUtYT1luWG1ma2JXcmFBTmhmcC9HZS8zc1RKRWdCUGZTc1dBR2pQZWliejk5QUE3dlJSaE10VEFGenJCVUNFV1ZZVDBSZ3pCN1cvV0N5NWhRdVhRQWowYTJQUTBMNmJwOU0yTEdqbUlUSWJ4cC9tTXNLTTEvSkJNMlFUb3lIaXJOSTFGSExHTkRORW1OVTFMd0lYTXZoYmxtR216cmdBTk9Va2o5bmxYL2duL3lKNWd4dFV4eExnc0J1Q0FLaFh5cTdNNTFsUVZzUTVzUGZCejYrM2VJWUxhWU1mRzJ6YnZ1WEw4L3NYZkdUcDB1VnVjbktpaVNsUy9RWTdtaVp5TUl3dnlqaHg4b1JiczNxOVc3Um9pWnVZaU4rbkVCZzltV2ZyL0pOaGhPVWRBWTYwTStHQzFWeitOeGtSYUJJMkRmRlRTSGkxQ1BXZWNVajdPREhTVHJoYUptcVBhYU1yc0gyTUtLVFo4b1lqWGJUbTY4NFUzZ3B4bXRuRmJ3UlQ1VDc5eStEa05DdVBRQUJRQTNEVmhBQ291N09sVW4zSmpnY2VtUExSTGs4QnNHN0Qyb2M2U3gxM3ordnJzOTE4ZXFLQitOZSt4Z3FOd05kUkxWcTgxTTN2WDZoYmgySDNuTzNNblZmYk9RNStURW0vc0NzYi9OQkJhbmpyM0ViaDBkcU00eEVoVElBUmhjZ2V1UklCYWJUMm5qNWQyZ3V1Vm5FU1pTVGthdkFMYUJkbS90RlBoS2FZTGVLazRkczY4VHR0ZEdER0xCT0JiYXJWQU44YlRYR2JFMGMrczRnYm9KQTJ3WmxmK0F3SFpTcVlHc0RwNzM4N0xRRGduNnZtRnU5KytIT25MRlpvdWNzTTZ6YXNmcWlqMkhsM1gxOC9CQUR2NXh1REdrL09yc3BqWTJQdTNQa1JTK3RiVnZkdzRlWWY4elhtWnY2OHhXZjVjckRvYW9nbklaR0RrUERoRWhqZVA1OHZ4SEhnejF1RWZKdWR4YVdKcThEVTllQVgzRG5FNVFWQ1BMNXhLSnRCZXJ1b3lxQVN3c3FsVEN1b092NG5hWSt0NmNFc2w3Y1RQalRsbDBTVDl5dzRxR1dNbHA1V3h4bUJ0SmE4VlNacFA3bWFvdm5VclpLM2hJK3YzeGFZZFQ2R0tIcXpwUW4xVDM0S3YrbDJHZUZKd0tjaEFDb1Y3UUZVTVU2WlE3WlNYN1hua2I4OWFyRm0zWm8vWGxpM0RnS2dJeFlBNUFaVk5KaXpxUGJBd0lDcklpbjNBamdJQ2dVd0xKaVlUTTg4eVlCa01ESW9oWUFFQWdscHhjZ2crb2w0QU1INzg5clZHaDh6Wmt3SWdKemx3N1JUNVVtOUkwQjVNU2ZHUVZGWjZvZ0pjVDBLQXp1b0JIL0daLzZNbXRCQUNLWmpPVmptZkQ3dmhZMlZnU2JqRm9zZHJsZ293cTRUMDhpckV0V053a3N0aG5nRTQ1VktIU2dmU29QcnFRendweEF5Z1daMVpuc1E0VnBFckRHWXFWLy9rN1NuZnUwL3Nwc3R0bnVYZDV0bkhCVFo0cERZQzliZ2prSVQ0UWsvd3VlVjhvME1XTHlkOENXS0lXZnMxMlJMR1hGb0NyaCt5eER2My8xTHZ4TDFVY0RvOGFNUUFOK0JCbEJ4RlM4QTJDdlZldWFPQTEvKy9CTVdLL1RPTk9BNzhjcmxzcjMzcmdXV2drNTZNL0V6ZTB5NTllUFY4UkpVN3FheWxMQmc0ZHNoSjJzMWhaV3kyWHFabGpKK3daQ05NSytDTzNSby8zL0dnTHl0cjMrK0dJdlZ0UGJCai8xSERTcHZJYllSUjQ4ZGxRRG83T2p5UGo2dG9tVmNEZ00rbDgyN0tsUXNNbUZJcnZmS2h0eWpRV2hwRGJSa1hBbU1WeXAxZ1VseWlsOUZSNDJQajdqejU0ZmR4TVM0bUp3WEM4a1lod3pMdCtEU1gyL0Q5VXhOWnFXYkdrRVlGRXhINFVMVVVCRXlKWXNUaElRRUdRYUd0Qmo4NWNuc1lPQnlCVzFMdndReE04Ymx0YmliekhEbUVRa2hlU0YvTHJmZ1p2d0Myb2V2UzJUejErcThqc1hONjkyanFITklBd3ZkRU5pNmZnWFhaNzRVUWhSYVFZc3h3WUpFS0N1RkVQMTVnak1JRytaQlArWkJ2eHFFTEUwVGRCUnVpZnFrRU55aHBRTVExOXRpeTRXaU9lR0Y1ZGsrVWpKazNpLy9YL2hObDMvc3hIRTM5SU1nQUNwYUFuQ1lWdDBzQmNEUC9kd24vLzNwVXdNL244dGxlb3VsNGtLMEhQL1ZpWHd6anIzTmhoNCtnYmVvLy9GakRZK0NOdFFoZlVGRzlsYUExbVIwcnFuWnNleDhEbWFiSFJzN01jNkFOZzd3UGEvdGNXUGo0NjZmR2dEaVdveUVFSmdGWWdIQU4wa24wb0NueUpZVUFHUzZLdFpYaWFIaUsrRGR5WExheFQyeUxRUkFGUUxnZkNRQU9JQUZaSkhNbjlkbSsrYnlPVEdZQmoyRkFQS2hsbUt6YmxTQ0ZtQU9iWkFNZ04yV0s2WVpXSnRiQlBhSnRCRDJoYitTeFRWdFF3SkgvbUJ1TFZtQ2xnUS9oRE1rbExNS0ZaVnBqRm50ZXV4dkNrVFdNekMralR0ckUxMVY1VEZvZkNUaXNwaHFKK1JIZ2FNMlJ2NU14ejZqdHNMMkwwQzdZMTJRVlBrbjgyeVBtZVBNS2h2QklrYlJaNTB1amQ1L3l0dUF5YzZEQURnSkFSQnBBQmNoQVA3UGYvRXJENThaSFBwd1oyZlJkWFhhNjlSRFEwVm9tenFOK0RhYVFRTVlEVDhkVWxtM2Q2UVFRcDU2K2lrM05EenMrcUVCY05CWmtjazRaczRHUjQ4ZVFjUFZOTnNvVFNJWkdZNERpd09KZzA0ZEY4TFIwRW1uUmtOb3M4aE9EYUN6aFFDZ0JqRGtCUUJuTnNSblpvb1I4dlFDQU8wbkFjQVBUOUNOZkRoamFvWlhIRW1xQ0pFMWxHVTZORVVKSG1ieU40clNGUGRDd0pJR1d4c2dRUHNkS0hmRVdQU2owQU16czJVaURReEd6bXM5bXFUQTlBRnNMekk0MjVtbjQ2YW1KaUhnR1FjQ0hPblp6MzE5QzZTSndFTnB3dVdtUi90WVVYbG5oRVhVNzZ6VEdISkxscm11ajMwQzlVKzNJSmNBdzg4ODZRVUFsZ0NvSTJ2VktBQ3N0VnFnQTRPenU2c2JaaWNhcFVQRVJ1S2FPS0xDN0tpcnN5dEZuRlc1bnB5T09MZ2p5cE5Lbm9LN21mS2V5S0RHTWtTd3hlWnNZTEV4UUpGWHZMWTJ4Z29Ea3BRQ2tqVGx6amowREtNaEdoVk5NUzhLeWdWNVVtT2dwSzlnUnJXQjdRVVRrQ3JsUlYyV2lVaGVLSUdDRDZzVEtQWk0wTFJnUGhheDdSOHk1cDZKWnJGYW9LcVdLcnpGeXdlK3lqenN3b2U3WUU3QWoxU3VURmw3ZUpvRXcvTmhNS2JsTy9OS25kMnVxN3ZYelp1MzBDMVl1TlIxd0QwMFBPZ09IZDRMSVh3ZThXd1p3clpyNk9VR2hCaU5oRjhZVGFTUVJ0QVg0NGwvaU5TZVFqN2VqckZadXVOT3RaSDJueUxDWkhKcXdEUW1kUXpSdWtPbUVRQWQ5YTdPSHRmVDArTktXQWQzekpxNlhTY2FNeUs2azVUd1kxdzJ2TXlMb0JLcFJPcEtrZFJXMURXcWJySU5CRnFTMUFMd1prTnpoejFOWkg0ajloczdRZ3YvQnFUYVhWQkVUK2xBK2hqUythUmRDY1FKRU1rWWhldG1DZ0ZxRG1ZYTh6Q1RwbHpwa2ZhOENJUk1ZcksvdEcvYWNhbGdtY1ZYdkJoWW9TZ1F1UGxLazJPeGQ5NThMQjlIc1FRODVFNmNQQ3Jod2ZZMnhwc2xJV2V3YU9vditESkNVL3hBY2F3MmxNd3Q0d3BYWCsreTh4ZWlHcWlMQkQ3TnVwdUNBRHUvZjdlclFVaFNDR1FSQnYwSnFacmJpbm0xeE8vOGg5OS9hUFRzMk4yclZ5MXppeGJwODJjZXVIUXFWWnNzRUtsdDVpazB4MHI3d0RWdFJzMkJmL29YZitMMjdOM2w1dmN2TUNaQUhDdnp0Qmw1V0J3dUFkaHNYUmdVQVpZVENNeXZiN2xCNWE1aGdJUnJNRUkwSUdHa3J0WndhUzRCcUdWbHN0emtxbU9nTmV3Qm9OT1lyOG1XZUppelZhbVJVTWpaSGtCWVN0VnQxeDRWWlJpSmR4MGlRZVZqR1JvS0V4Qzgyd1FicHV0WGhzUWxqWDliSUVTRjJUWk9DekNKdFRmU2NZejV3ZGl5VkJlU2NRTzBSd0VoZXY3OEdTME51SjhVcmpzOTRqaHRZemNFbUhNMmVjZklRQnZ2dVA4WFlOcG5BZ09vQVF6ODZQdHU3TkErakIyTVlJNGg1TTJpWTZSV2FxNndjZC9ERHh6eTBkczMwUi8veWY5NGFQamsrYnZ2dWU4dXQvMktiZDYzRlY1SEs3OXV0R2cwZVAzaVp6N3R2dnZkSjkzOCtRc3VmaFB3NkZGa2xaSEdFaU1lY0JJQVdJUFdvSkpHQTZPdXBqWTdBV3QwdFliTFNnQkFZOHBrTGw0QWNLbkVjaGdRVjBzVjN1cGoyVXdJNkc0Q0w1NjZma05oUEdZUkJXQUpaRndFbWhNMStreVhMZHZBTkIxYm8zUGZRNHg2Z1FXYWZVd1RCS09qNTNTdHhZdVhZcWxwZHlYYUlkSDcwemthWEVDVHgvUW8zSENUeTE5L2szZkZHTlAzQUI1M21XclptQi90UmU0bkgwQWMvT21lUng3OFAzeFVvZTBTSUR5alBUSXlyaDNuOXBSOUM2bEZlUXFZQlZHcjVFeDhjUWc1Y0xpQUVyTk5Dc244d2EyZVBidy9menhSU0pBaW1OMVVzL1pnYUlqUmVQVW9KZktsc0FoazEwRnNiNVcvWHhMRUZNSmlRaFFqeTdJMU1XeTZjRkFjS1JETFl1VVJ6UWpXMUJQYlBBZ3hJTW8vQWx1Y2EvWEVuKytyWmdvYVVUTzFDMk43ZEhYTmt6RGxzbUJreEE2SDRWK0V5NlVRdkVUNGljbktFRHprMWgrY1RYRm5vSTRPbDd2eU9xUktnN2RxaDNlK3FJMC9NcjgxbGhtb3g4bnFaSUgzQzFOQWRxM3hoMy80UncvdGZIbm4zUi83Nlh2YzdYZmNJajhOSExQSXpwNlFDZExUUm8zRVFlZmprSmhZZGd3eGN6T1BnTGdvYWhZNXJZRllhLzNSOUswUTNHYTN1QUcvK3V1LzZyNy8vZSs3K1F1d0JHQVArdmlFMHN3Q3VnMVlyYnZ1bm5seWgvUUJrUVlRbGdBaG1OWHlwdjlwU0FtZ0REeUEwMW5xMXNCaXJKUUdNR2wzQVVLYnhmbjRPa1JMQU41VHoxczh4TkVTQUg4MDdmWVhCckVTd0xlekMxRVFEOXFGOS9RRXYxWnRBcThtWHg4dktvZCtXeUFLYUk3UjZCTkhUWVpZZlNONHAwWU82aEIyL2FYaGNKbWowTWFjWndFa2lkS0c1QTJYam92RnV4QlZOenB5VmcrSWNVa3dlM0Q4ZStzMFVKUW9YdnNFK1J2ZTVmTFgzZWhkTWM0ZDJPdE9QL2MwMXZ5MitjZlpuMlBEZURQemlUMWZlZkJ6UG1xRXFIcU4rRGVmL1hjUFBmUDBVM2YvelAzM3VxdXV1bElaelk1d1VUSSs3QzJGZ3NnUGJraHVPejl2SjlTNHdTYVRuWnB5VzBkTDVjdkZicVVEYWFlZWY2cE54djNXNy93Lzd0bm5mdVFXWUFsZzE0bkQrQi9ESENrdkR3cUFDbFpNUGIxOWNqZkdsQUNBQ3M0Nmdnc3RDTlpVdCtuYUNFTDVYS1hzNmxQK0dRd1VwbGlBQU1BU0lKdmxyYXpwQlFERHFTbEVqTmNnQU9TSFBIVWFqMjBEdTdXaFdzVmwwUTc1SzYrUnZYcm9nS3RQVHFnTW12RjAyOHpuaTNyVStTbTA0U0dWTjFVYnh2ZnhDTm95M1QwdUV4aUIxOEsxZldFTkxEL1NDYWhmOWRnUnN5dGJ5MXQ1NnQvaVdYOFpXUXdQT0RSeGVEdGhNN2FsYlJUc0ZpK0s2SE9Qb2ZaQ21YbmJNTzl2SFJMSk1Sc0Q2VFhHRUk1K09UVTA0QmJPWCt4NmUvbmV5RFpJSkUvbWxBWkM3SC8yd0JLazlQRlBPYXdmdlllaE9qbmxqajcrcUt1Tm5YY1psTkUwZ0pxLy8xOS85TFd2ZkpuZkI3UzFVd0p4elJzUUdvRUhNcmlUT0h2Q1JWRUFrdTFJSnlrUkI5UWMza0JXK0lTYkpzb0Zpa3lXRTJFVUt0SE90NW9VZG04ajVDMUxrdkREOUJGRlhvYkdVWk1DQnRDbUxTNjNhbzNMTGxzUlVVNjAzTXlseTExMjhSS1hYYmthdEVhcGxMVXVZT1V6bUxzZHJCanRDMk1NWUlJeFhoY2JVMGhZOUpvS3EwSGNCVTJBZ21ocTB0VW5KbHg5Wk5SaFduUFFiVjM5ekxCejQyT3V1TzBLTEtkNE81V2Jpa2pEdkhrSGhNSkdqTVo4Y2ExVmExMTlmTnpWejU2QjBEamozUEN3aEVkOWFOalZoazRiblQ3bHFnTW4xVWU1WlN1Um5NSXlXUmZVTzlIZzdBZnJiK3NUODBWOC9NdkZIeXNDd3YyNDRGMFBUU3F3ZXovZUN0TkVvL3d0VEgxc3VRQThIcDExSGNXYzYrNHNpcnBLQmRjSmQ2bVFkU1dFRlQyVnNLenNLSUx4UURRWEwxam9UcDArNmNiR0oxUzJsbisrL1ZsWGJ4amh5b0gwcS9CQWNxYmlORkp1N2NZbTVpZk9IZHpyYXVPalhJVXFIdXVISmlSL2pOY3JtVitDUnhQekUyMEZRTmlFSXNOeWJSRVJHenVpMEFGdFNNeWVwTVk0N2ZPUUZpRVRibCtXTUNoQ1o0c1VuZ3p6SFV5RGRqbTlYMlMyZ3hLbHJXMlM1RmFzZERVd1RCVnFWM1cvSjlnckIxNER3WVM3Y25DZnF4NCtpRHhzMkdVWExiYkVRRHBiNjdKWllacW9HRUlhUUlJdk8vVUcxOTNyS2llT3VmTHhvMjVxejZ1dU1uUUtkTnBWaGsrNzZsblVBUXhNcXB3NzY2cm5ZRDgxNkxKTGxscDZscDN0eUl4aGhMNTNFR3hLTnpUb3FpUG5YRTBFSVRJNjZtb1FLTFRUWDJGakk3cDJadjU4Tkp3dFdVSS9CdEkxV0dUdkh6RXNTU0VHMmZrREN1R3BTU0l4WHZTbi9CTjVJcHlxUEN5b0VrOHE4aENWRWQwK1k1blV1dXcwS29VZzI5ZmNQUkNpaXlBRVRwNDg1aVloVENQR2JVZkpQM2lZWUVpR0IvSzJLS0NaY2x1dmpHSUg0c25MMFNNSE5ldXpqQ3kvNmt5N3kvejIzcTk5NlRBc0xkRmVBNkQ0QUpJenVzalAza2FORE41QTdJeUxvblNIMm94dkhSamMwZXhQb3R0WE9wU2JiZ1A4Z2kxWVpnUWFrcnU5Vk8wanNMRTlvSHBuTUt2V0JnZThSeXZZeGJKOEhxRmNkdFdEKzExbTBSS3BjTWxpcElzVXJwRzRWZ0p0aXg5Rmorc3FPeXFjV2JqWVZVNFB1cWxkTzF4NTkwNlVoUzlMUlNqYktraytQcWxDWmwyd1NQVk1nb3pQY0ZlRWRzQTdMQkFxVVhvUkp4bGZtS1EvUzRXMEZTdy9jbXZXS293TUdjWHgvWmNreXlZUlpsbjZueGlLeS9Cb3JIaFNDa1pnTUs5bGNmVkhPNEo0Q1RLMG90RXpLcnFscC9aa2QxUEFKZ3dtQTBvcnlyamU3bTdYMjlQclRrQUljTHdHeG81SW1aa0paNG9ZNUVQc1R3SGVQMG5tRlZFVzE4d3NYd1ZiR2xNUTRoVUlib0gxOEhWRXNRNjUydVQvYXdHdE1ZMEd3SXdnQU5CeGpZd2Rhd014azE0c3BZUUVHUnpYbFNrL01qN0orL3ZCWUhGZ1p4aE51WDNIczdNOTRPMHQwUStieHY4Rm45YkljZDI4R29PMUJYSlE2Ym1lMVRwck9rQjF6aTFmNlNxUXpsUkptU2EzTnZWQ2xnUkNpZGpWRjRkUW1wQVRkSGFYd1V4ZVBYRmNiVVJQTTlsbWpBRFFqUHpOSkpYM3YrYXlhOVlwQ3BjQTlOUE1ENU4xcWgwOURLc3hGdjM0cHo3QUh3YzFUZm1MbEkycm5UOUhqdU8yZXB6T3A2VnBNTlBTK1RDNTdTZjlSejhMQytPQTl0amYvQXlXSXZLVFB4blg0dG1ZWXgwdFB2ZVc5TUFWeXd1UVNXMXB4VW1ScjQrdnVIazlYVHd3NTRhdzdBbE1HaEYrWWpJbUY2TWp0REdjSHZSTi82WGprTExybWw3cUs0d2NPUlRQL2dDcndHUGgvK3luZjZidjkzL2xYei96NEtOUGZ1Mi8vZG5mL0RhQ21HMEtiUVVBbVluZ1o3RmoxZDhZTTlZR0dvVkRJc3hUVXhwUHdiOHRoVTdob0lKZEVsNmRaRXh1ekUvVHg0SGJPcEttaWc3QUhteVJKUkIrRk5maXB3akJWYXhkTmRNMXJMY3lrUHJVRHVybk1KZ2J3WVFSd0NoTGw3a0t0UVMwalh5Z1lxT0FManV2cnlIdTYwRkRueWJ5emE3YjRDcjdYb09mZWNhdDRkSGs5QjdNY2d6clNiUnRabDYvUmg4RkdOdlpkWFc3T3VwZk80dTZlREJWNkNPdHZlbUQvOENVdkw1TWdKdVErZldibE1yYTNzSUpwcVBOdklJOWprTkRVQURKVXFoY0lReGd2T2phUUtxRjRHVjVXeGgvVVdxbG9UK1psTXpEKy8xNnJnQ0pBd055ak9zYkVqQXRYc0gxeit0MUk2UG4zUlEwcTRqSlBabGJXVVJsc0NBZjVuMFZMdi9naUh3alV2eDF6Wi8zNDJtLzhlT0hFVU1WRUxFZTk3N3ZnKzcybSs3b1c3MTYwOVVyVjYyN3MxRHMrSGYvL0Y5K05uVUdnR2dyQU5nb3pDeWNMVzlTK2NsNFRlUTFnd1FGd2RBWXQzVjZTdURZYlFQSys3RmlnY25wRndtQmhMKzNXN2Z5bDNVd215R1lqYUIvb0dDdFk3QWV4SXk5d1h2UkV5cmdpbFZZMTBjSHFacmhzM0Rja1YrNHlOVk94Y3NFQmxXUEhuTFpGYXM1eFhpZlFFVFMzZ3lOaXdZMCt5RTkvalA4c2hIYlkrUThuSEdldE11bGFQRmZDdDVaUHJEWDVWYXZrMVA5QVVzV1doSDNPaXlEa05hSWZhSmxndUl5bkZHc1h4aFhnM1J5MHRYT1lNYkVFb09wRkVlR1hPWVFyR1pNTDVJTGlDdytuYzliTGlYeGRnK1ZNQkhGNFBNVVVYaHdMNEF6Zmc2TVQrSVRnOXo0dEc0aWlmbjVjZzBRMjRKM293cUZ2T3VHTnRQVjJlRk9ENSsyNjRQRXpHWUZHZlBTTStrdnlOdUhlOTlnODBraTBuaGFzcHhSVWhnL05laHE0Mk9xQTdVQXR2VWFqSzlQZlBSKzE5ZS93UFhQWCtqNjVpOXlpNWVzY0lWUzhROSsvYk8vZzhFWG83MEdRQWFEYWN4UGhnZERreEVESlpoNzVobWR3Z0Jta2xyR0M0U084YVlHRlR2S003dkM2UGFWVGRsOW1MVVllMTAxZ1I5TnRkRXN3RWhJZzcvYXhMaXJZeWJNb2lHSkxNOFZ3SzNiYURNZ0Q4RlJnUnJkaEtrcFY4T2FQTmRpTFJmQTBnZHFENnNNeTJrV0szZEFidDE2VnpsOElQYnhsaWhQV0RnNEk4UkpZV1diZ2RDL2xXT0huVnV5VFAyZHdXQ3FRZDJ0VGFJT0RPYzFaZEl3ZXlRRU5INThQcjVmck84d1hyZ1VXb242ZTVVNmhnb1ZwY01QYkNFa0daRytJY1M3R0RmRXg0K2w5M2IrUmVHS1lXSGVUZ2JrclZPRzgyRWpUbjhoakxBeGFWb2M0MUl6ME4wVzJEblUrcUhSalkrUHVnbTBDOHVwUDFhRlJmYkZOaXY5TFVDRzl5Zk0yOExqdnpoT2hodklqTlNBTVV3b0ZLd2tscCt0L3ZFUDMrZjYrM3BkWjFmSnFMUGt1cnU3M1pMRnkzb3JFNVAvdDA4cXRCVUFhZ01hZ1NuSjZJSHBnNTl2R0JNR0pnamFDd01La0FZaGtpSU9FTE56a0lqWk5aaFFNZnB6UUlVd0gxOGR5blRlVkFQUXJrNXZoUGtndEVWWU0wTGUxZU5ITVdPdjFJWllkdGx5ek9CdE4xU1ZiN2F2MzJVWEwxTTVLU3dhd1RqVUNqTG9FTWVYWUppM3lwd0UrOXJ1NTJkY3FWVFNzZWIrK1h4TmVRZlMrRlFoVFNLdHlvQ2xCNjhSblRzZ29pVEpRUlFuREswaWsxWU54cXlyRFoxeW1mNzVXazZRYWRrZWFrTzFjMmh2a2lVenV4ODhoTEtONDRzb1dLaGRyZUt0VVVVUUVCS2lLeDc3R0JhWFFkdm5lWDNVS3lERU13c05NckNpdzg3cm9KMURtSTVvV3hndHNSdDFoTVdlbVVDN2hEYW5YVkZaQm94WjNnNzhpWGU0amx0dmQxMHdDNTNvTi9RTDgrTjR6ME5yNENQejJndGdOc3FLZWZDWDdXaCs4dktHd24xQUlzZ1FQRUpDMGpJSXpNamZpTXV0U1doVEFnckRWdStCNW5mWGJiZGd6UENGT2taY3hSWkxCYXplZWxEdTdLZi81Vy85Z2Mxb1FIS2JPNFdiM25Yekp3Wk9udGl5ZnQwYXFBOVFaWEdCcUFNOUE2YjhJZ1kxLzBCeGVJTDRCOU1RYW1SUVI1ak4vOUhxYmQ0MFNlbFRCUk5RanZqNTd2ZWVkTWVQSHdkL29lYnNaQjh4empzSjc1YzIzSG5ldmtJZFN3VzBJRHQ1MHhZdzFhRHVuV3R6RFdwaUZsUm5uaGdNR1o3TGg1VE9iN3ZDWmFuNkQ1NlUraDNuR0lNKzJmS1VLM0ZUWjNoWWZoeG9lc1IxYWdMQ3RPd1dMcGp2M25IRE85MGR0Ny9IdmZNZE43b3JycmpLWFFtNjl0cnIzZFhYWEF0cHZsVDE0YU9yQk8yNjF3ODFOcmRtbmFzZVBBQmZzQVV1WnRWdUxnY0QxSllNUTd2Vi9WRm1NajdmZGtTVC9wbFZxM1dZS0lPQmp0R3VPeHM1YUFPOEU1RHBtdzhCc1VCYWttamhZcnNTdENkcjc5RFBWa1pqSEl5TjhYRUpsR3hQcjZWRFhzb1RBalRUVDRMUUlTRy93b1pOTHI5b0NaWU4wRUJPUTdEeGpWRG9WNEpqU1JjRXNlemhhZ3FsSC9WM0lBdzNqVDNXRTJVcEZNRFl4YndyVXJoVEc4RVlacFVaeG5oaE1zc3NYK2x5aXhjclRoNU1WRmk0eE9WUWxzd2lMR05RN2hyYm83ZlBuWU5tMDlzekw5bzROTVQxYjQzWmhXZXZ2Y0U1ZnlndG9JcXhlRzdQRGxpZ3RiQk5VZFlQdmVjbjNaMjMzS2diV0VrNlBUanNUcDQ0NlVaSHpoY3kxY2tkMy92TzR5OHdqN1lhQUtwdUpodEJhbnVybWIvRnJLKzRzVHVkSmswV2x0WUtrdnNGVWRxRVg1S1NlU2Z0RVJyYVZvT2xDZlFEY1lRRUF3UjJBbDhiQS9CQUMyZXRMRG9nQjJZUXJjRGdCV2tRWTgyVlhicGNneGFqeDdLTmJxRWhneGFvajQySldjbFFZWERTd2xlUzMzSDdlOTE5OTkwUHByOVM3MlNJWVJINUVORDY5UnZjKysvOGdQdm9SKzl6Q3prUUZjYkNvdjQ4Qzk0QndVVWZlQ2wvYndZaGJHRm1qLzRTZGpHclp3UUpkL3pWdUFZK2N0aFZqaDdSK1FadTZQSFdYdVhRZmxjbUhRVHRlMDBhU01hLzRvdDV4TERyQ21RU0NLd0s4enR5eUZXUEhIRTFNQkExTEpMWmVSMHNZeURrbEpMbHBzVXp2OW82bFQ5QklRWjQ3MUJYUlF0Um1RMzhUWXRrR0dkOUZNY1RJd1NOVStNSnhEaThKVWpWdndhMXU3enpKVGYxeW90dWFzZExycnA3aDhzY09hQzdCbndUbFJWVEJXVm1nb29STytOdzd4Y0gwUzlKNWxYdHRpUHBWZ21qTXNZUXg2VVYyWEs4ODVaMzA5VUVac1U2OElVblUrWEtlNzMzTkVzQVg0REFWQ0l2QkdKbU15RkFlOG92c3MrQ2xKNzVCZ0hENVVRZ2U1dUpYdXFBd2RlT3VERWplOW5zVkpsaldDZXJlVlFsMnF5eFNHa0VYMUJvWndHendiNDljTU04c00rSWgzd3c0Rk8wYTZlcjd0MGp4cWhpWUxjRHIwQnRvWGIyakQ5eWE1N2RQVDN1b3grNTEyM2VzazNYWnJtbFJWbU15RXhpeWRLbDdrTWYrb2hidmRwT0doTGF2T1JHSXhPQVFwMlpJWGU0Ky9yNnNDNjB0endwakVGeUFiQll0VzJtbGxhSDJad0htMnJjLzREbXdqMFF6c0w4NklTSWRoQy9Ra00zNjA0aHlRRzNBRFBsdW5YcjNmTGxLeURjNG43aHJkUUtoRWlkSnhKSmZDRXFsaXpLUDBGOC8yTmx6NnZHYUx3elE2Rk1vSkJrNmxCV1E2aUYxWlVVbG9iOG83L1M4SWN1SDBjdTJuMjZTSnNGNmZZYWhUQVBSM0h2ZzhMcDlLREdLVlh3RENaS2xvZ1BvaFZCZkJtSjh2SHdsL0N3Y3FnczlQUCtjYkQzcHpWSmZIVVo3OFpFOVRTVXo1OVYrUmlMdit6Ym03WnZkTDJZZXhxcHM0VEpobkV3TWFGZTBVYWcrYmJBalRmZTlJbkJnWk5iVnE5ZTZSWXZUaXdCMkRBd1kvWGUzTE1qRkRYaERwQXRkalpBaWFJNFpzYlhEM3NCRWlhKzQzYS90dHU5aHBtSTkyalZhUHEzeGd1ZFB4TkdNT3ZVcWxnQ0tBOEFBNXVIZnlDVmRJeVdBNUVxb1FZWS9rejl4Qi9VZmpFMnl1UXY2VUVIUzQrWWZKdlNtZzB1eS91M2ZrQlRWWDNmZTMvUzljNmJCMEhJcDdtWWhXcnJJUStWWDNVQWhVZCsyZkZySUFENC9NSWtseWhnbW5CR244eExjQS9oRnF4aGJ3VnBHWEgxTlc3TDVxMXFzNkZoYURnd2xUL0t3ZWNUTk5OeFE0ekxHZVRCdXhka1ZKNFFySi9Gd09Qc2puelpEeXFhL1dBR1JYb0k0YjdGUzl3SDduaVB1L0dkTjd1Tkd6ZTdMVnUzYWVuQ2g1Uk9RS1BLWUFsVFBYSlFaU1BZbHRhZWZqd2w4dU8xYXBqdHFsanZjaStBK3hJSXNuWWdXRzdmMk43SGwwbk5GUG1GT0RTWWxzOENjQW5BTmJ5TlkwNUFYdlhIeE1SeVpDSEFzdEM0Nmx4U25UaW1PeGdzSThlYlNzbjZNMHZrUjc5eENMRjVIQ2VFQlFGbWFYREdidHJzdnpYQS9ObnQxM2hIakpIRDBMalFkN3hkeTNJdnd6TGw1Kys5MTNHN0VrUFhWUUtoYTArY0hIWkhvR1ZOUVVDTmpaMmZldnA3VC93eDgyaXJBU0EvRllnWmMrYVBabXhTbzByZXBBV2tLZVd2Um83SkdqdG9BSTJ6UDJkMmFnQjI4TUtJSHpxSVozdHBBSndsNkErVDYyam1HeEFHa2t5Nk9iamFrdFU1SmtzVFBIajdMN3RtUGF3WVFRcnlNZkFqazBBbVljQzFBemUvcU5veWxjV3R1NnV1dWthenVURWl2RFJ5TTI3dzFJRDd6bmUrNWY3Mjd6N3ZQdi9BWDd0SEgzM1lIZVp0U0JYV0UwQ3Q1NmFiYm1aQ0pNY2c1cWs3TEZIQVZkb3Z1T2VlajdsVm1KVmZlZVZsOThRVGordDlDZU5nN050dXZjTzlGK3ZHSUZTWVhxZmRXRElJR0s2N2VaQklZUkJzMmM0dVBVL0FtUFR6U1FUTGduNFpkeXNZdmdmQzdPKy84VFgzMTUvN1grN0JMLzZkMi9YcXErNzY2My9DOVY1MXJhdFFvMkxScmZncHlNdjdoN1ptZWFnUjFNNmRsZmJFUzFJRWhldUZhMGVRTzFqa1kxbUdLR2czamoyT0xZNFptaHliOHVPSE5PaEdORDdmVWVmSlNQeXhYVTNENVJPZ050bElZUGp4eit1YkJtdkMxSzVvWTBUWGppekI4QjcyM3g1OGJ3U01VSFFCK1pmUG4xT3BtSnAvNjFZc2MxMlkwanZCMVIyZ29qYzc0UWNSaWlUTlYybXJBV0F3ZmVMVTRNQ1dWYXVXdThXTEZscGxrVUV6MDh5V1dPYTBYd29NNTA5a04xTytEV2xvcWl3VVRyNFRyR09zSTNiczJPSDI3OThmejk1QTFIaXdwQnF5d1JVd3dwa2MvWmg2S1NnOVlNbEFWZGRCR2N4TU1jT0Ntb0NBQm44K21KUHBndnA5NnBUakczMDRhSGhiNmZiYjM0UDZWTnpVMUlRRUg2dTZaODh1OTdXdlArWk9EcHgwNDFoYjhtdEY1OUhwZTEvYjQwWkdSOXo2OVJ1eGpEWm01V0R2NzEvZ1RwdzRZUnVES0ZlR0x5N3Q3WE1mdU8wMlY0TFc4ZEJERDdxOVdLS2NoaW85T0RqZ2R1OSsxZlgyOXJyTm03WkE0eG1Cc0JtRXlyN0liZHF3MVowNWM4WnR2QVphd3JKbGJtbC9ueHNkSGRXTE5NbUErWTFiWEFZejRiWnQyN1ZQc1hidE91MVZEUE5CSUJTOHU3dlgzZnl1ZDd2ZEowKzRIY2VQdWFuVFEwaC9Ib0xyb0RzK051NkdvVUZRalg0UEJNOHBsR1haMHVYdWxwdHZkVmRlZVkyYkI2RXhQRFNrOS9jUjNPL2dCdWlONzd4SkdzU3ErZk9oaFN4M1E4aUw2dStLbFN2ZGRkQm9CdEdlMUc2b2NXemRzbDBNZkpxYVJxTDlrd0tDTmpvTDFBSUsxSGpnNExoQ0g3UHRxWTBVdUsrRGZOQ2dpbXZqemhncGpFSEYxeGkxL0NlbnltcHJuaVhnc0JBaVM3Q21QUkt1QkdMZitwSmxMcmVPaDZkOHVlbUg2NTdic3hQTE1YNUx3bmp6UGU5OGg3dmpodXNWajJBT0lUNDFnTU5IanVrOWl1aUxVek5xQU4wOWZPY2VQd0poVE5XSzJzMzRiUW1ORjd1dDhVak1SK2NNSURsMU94R05Ib2d6dkxTQnhHd2ZpSU1rbVB4OFZ6Q1pGMkVkbzkrbzAwTEh4VzUyYUNQQlh6a0VzSmZvZzdTREorMmhIblJ3UUNvMlcxdEk1MkJ1TVB1NmphNENkWkpwZUIzbXkxZXUxZXNWUFFiTXV0TC9GR1orenRTc3MrV0VqSlUzZitwdTk2NVhNWnUvUkErNXc5WFc4S3k5ZDlWT0huT3IxNi9YT3Z5NTUzOEVCdVVkQnl1Z0JqVE03MzMvdTJyblRaczJ3eThyWnJ6OTlqdmNoei84RVhmRGxtMXVVV2VudSthYTY5eFBmK3dmdWZuYzVFUWI1MGJPdVh0Kyt1T1lKTjZ0c2pMSGQ5MzhidmNocE9HeWhJS0NMK0ZjQTJaZWlldG5JZkM0Vk9HbTMrbDh3VldQSFpiZ291RDVxUTkrMk4yQnBjSW92OFFFNFhMVmxWZTdqM3prWHRmSjl4Y0E3M3ZmK3lWTXFLMGNRcnZ4aGJMdjJiRGVyZHQyQmE1ZGMzM3ordHoyN1ZlaWZQZUQ4VHJjZ1FQN3RiL3gzdmUrMzIxWXYwRk1TZEpqNHl5cG1weHRiOW90MzViTFhmdFNzYWoxTVFVT0QvWjA5dlM2VGo3Rk9YRENsaVlvaTFwWkZ0aVFqbmw0cDM1NHk3WVRQTU82MDhzQ2FTR1lPdUhoclZHd1FJOUE1aVRsVWh2QkJqSjlIV1BGdS9TL2FYWHFqSS92YVFQN080RFpCclFWQUpsc1RybkdETnRNcGdLQjBCR05ZVW1LWitxa1g5cE5TaTBCcFBxRDZSUE1UelUvVXZWVFFzQ1luMitHMVN6bEJZRGFCWTJaSW5hY3lqTWRCUld1QlZCWHFkZU5aL3BEZExWYUFnbi9ITmJwVEF0SjV6M3B6Um16MHc2U2pHT2RpN296N3M1WGQwZ3RUZVVGSkR2VkJFQXlSbDB6dW56d3cvck9oOFFuQXd3T0RzWnRvTGhFM2ZIRHA1d3ArUlVsZTV5WXJ6bkQ3SUpCLy9rSC84NDkrS1V2dUc5ODgrdmFaOWk4ZWF1YTVRWXNKZWIzOWJrSEgvb2lsaWZmRmozNmxZZmR5aFVyc1pTNVduWDQ3bmUvbzJYSlhWZ0tmUExqbndCVDMrZXV3U3lmdzdYUWlTb2Z4dzN2ZW5CcDg1MG5uM0RmZnVKYjd0SEhIa0VkNW1tcHdNcFNxL2o2MzMvVlBmNnRiN2dmL3ZBSDd1R0hIOFFNTnVLdXdKSkp4NUo5VFo1Ly9sbjMyRmNmY1Q5NDV2dnVrYTg4SkwrdFc3ZkxKT096MWxIOUU4VEpoMjFLNXMxejFrYzl0Uit4YkxtckhEL2lHNXlONlNlR3lLU2Y1YzM0Rkh3OEdxd3pCU0FyR0g4UVYzOGU1aFZaWThCbC8wMlVhYmo5WjFDSUx4L3FCM01STkxWMm9JSVRnVWs5MmdxQVFxR2cwY2VLSnBsMFprTDhsRUR3NlJ2OUlqZG5maU90cFdTU01QTnpMVVpCUU9iM2dxQ3N0VCtaM3hoZnpBL0dqelFCa0pnSWlEdkt6R1RuelVRQ0dvMjJpSmdWVEQzVVFtQ21VVnltWVloTXduNWxCT0t1TzVZVGZJUTRCQWQwWVUydDlnamx3OSs1cG1jTmtuc0xaaHNkR1ZFYktqdC83VEJ6aHBLRU5IUkZLckNDYUxmWmtkZlVBTTdaZHdYWVRoUXVGUWdreHVLZXd3UlVUWDVzbFZpSm1YRUlTNFlWRUFqYndHUmtORzR5Y3UyOEFtSE1kOS9ldmU1eldQdC82MXZmZEs4ZDNPOFdMRjNtYm9XcS9pRm9Dclk1QzZBY2UvZStCclVVNmo3TEJPTDVEUzQvRm1JcGtnVkQvUkNheTNuVWs1ckJ1OTk5SzVZTjcwZFpNVk5qTE9RaGhNVnN1TjZ4WThlVUpmT2dKa0ZWbHk5TWtSZmJ4cmVycWk3UXo3UUFFc2NaUFRoMnltaVRXbmUzcTNLekVYNVIzN0N0L1hpMi9IQmxQakFFb1pIRHRmTGNMRVQ3MmNhdWhVZlhTemhpYTdCWldjeXZHWFgwVFRPczd3aExsM0ZybGpjZkZaNEpiUVVBMXB4NVpod3piWUxZSUpIYk16aW8xYXd1djRiNEhHREJUdE9XQUhTRDRSTmFRS1FCaVBuQjlFRUw0T3lmMGdSTUNBUmluZ1M3UU0zTHpycEFDckJPYnliZTk4NnNXZWZxZkxLdHAwZHZ4NUVKSm9rT3NYaml3UlkrQUZORkdpRndwWWR0R3NFU1gxWXpvOURncjdRK3ZYWWtOTmhvTVFPRk53STRQcmlYd2JCRlBNM28vY3hpZGw1bklaWUlGS3hVazFrM3B1ZlpCMTZZZjZIdndvRGpua1VYQnZxNlZXdTBEOEhiZkd2QmpFZU9IQllERTR6TGw1dnUycjNUZlJzYXhOKzgrSUo3ZWQ4K3R4VHIyUlcrTEFMaVdaR3R6SFV3ZEFXWDZVQTdGaUJnYnZ2b2ZWcCtyRnl6eHAxSDNQMFFqQlBVSU1UNE1IaEFpTVhDRC8vOHYrVVg4c1lmSCtMaTNrVis0MlpSNFlxclhXSDdWWHErUHJ0bHU4dFN1NEYvRFhYSlFtdlJMVXFrMWJqRVdBeU1iN2VsT1Y2aDhpUFAwdFhYdVJMeUttNjdFclRkRmZpQ0dKVE5hZ1BRNGgxbURSN2VFL0JWdnlDd3J0Wm1ySzNoMkVEODNFbnNtN3hTTTlvS0FLZ3lFcWtSZytOaVlTQ2txRkVZek9DT21iK1pBdU5UQ0xDaEk3Y1lQd2lCSk9PSFdkK0VRQ0NtVVVPejVpaDNZR29qTVBBc2lBT1laUnFmR0l0b2dpWm1SZHJId0ZoOGYzeVpqTW8xV2srM3ZTS0xCMkE0dzVGNEJwTkhkenU2a0NldXJiVmhLQmRiMTNDT3R3MkYySFBGOGdTVENNa3VOYXpHMmpjRkpPZGFPVVlHYStJRGJueHMzRjJ6ZmJ2cndmSWd2Z1F0R1hjTkJ6QlU5ZDI3ZDhtSDdjaytZemlLTElTMkU0dWhYYmpKT0lYKytPYU9WOXhqVU5sSlg0WDYvY3d6UDNDdnZQd2lOSnB1OTQ1MzN1ZzNLSEVWekthVnlYRTNBQzJDTTdhK3ZpUFVVYzhWWWhoRkJIcFdyWElMc1J3NWYyclFkWjA0NnJZdlh1eGUyZkdTK3hxdThmSlRUN3BEenozamltUnMxTFA4NnN2U1dPQ1VQS0FzbEpBS0ZBQzc3cnp3Y0pFL3M4RjNJNVIzNzNEbFhUdmMxS3V2dU1tZHI3aHhIdXpaczlOVjl1N1IyNXc0NWptV3hQQWNoeHFuMWhZRU5SQjNZSytySVM4ZUJpb2pEeDV4NW0xRk5TYUkvUjMrek5NamhDZThEQ0ZlVEZXK3NZblZhU1QxVXd5V3J4VVlOWTM0b20wRkFOWkVldDZUekJBWWxMTkRFQWl5by9SeFdLT0FRSlVUYVZ1NVk3czFjREJqOG93UHV3a0FrTC85RjJiKzFocEFlZ2x3TWNUQnkzd21NZEFDY1VhVE9ZN0JoelhpdVplZmR4TThDWGY4cUtzZVArYXFKOW9RejgrZk82TmpyU3FYL3czZE1EREl6NnZTQjEzbFBUZHYyZXFXOEswOFJMSUhmWGdCZ3VmbXF4UDNodVZmMXl5c25GRUg4a0FaYmZpREEvdGRGNWp1N2c5LzFGMEpWWG81Vk1YVnE5ZTYyMjY3dy8zRTlUZG8xdDZCd2FzK1JWdGJHK0N5L3JxYVdVbjhCKzNBOG1BQm1QVFdGU3RjUDdTYjNubDl1cy8vMFh2dmMrdldiOUFHOG5YWDNlRHV2ZWRqYmhObTFWV1lhVGZXS3U3NjFTdlZYd042a1lyTnpsdzZmT0N1RCtvVzVWck12ajkxMjN0MHV1M1pIejBqd2M4eFFRMkZiYkVNYmY2VFAzbVhLNWFDZG9ReE5JQzJRNkdDdXMveWlXQzNENTVpTWx1MlFyY3dkVHdaZmFxZGZWQUdZeENsWUVhV0JsSkVkZVdCSjQ3WHpoNHpOWGJOdExnWlY4U1NKb2Y4c2hodnBvWHhxOC84dnFHeEZHTHJMd1ZMcm5wN3E0ZTVRcnNIQ3NqNThXeGd6VmhZa01ycnZZRGhjM1lzbkVna0YxaG1IdzJJYlcwRmdBbVhScVlHUlV5Y1pQN21zSm1ZWCs2VTMvUkNJR2dCMUFDaXpVQnBBL0hNSCs4QkJFa1lHdlhDQ1Q5V0xwcEo0aURnbXAyREU1SVpzZlduSmtkNE8vQllhNWJuOXd1OGU1Q094L1UrYi9YRi9uWmk3NjQ3UHlqMVdrajA5Q0lJa285ODlGN1h5OXVSQ2ZBMklXOGRKc0hCdnhleisxZS8rcWphODFZdy9UMGYvWmo3MEFmdmRodldiY1RzK3JJMjN0U2ZkYXgvMFg2c1B6OG56VWRRZVUyV2ltdHE1czhxSGp4MTJuMGJzLzh5TU1ISFAvNlAzU2MrOFVuMzdsdHVkM3QyNzNiNzl1L1ZMY2F2ZmUxUlZZZTMrbjdxMnV2Y0xlKzh5VTFDYS9yNkM4L3IxcC9WdFM3Tll4UU05OEVQZkFpQzRLZkVVRi83K3FPNlZjbGJqNDgvL2cwMGQ0Lzc4SWZ1Y2JmZCtoNjNIL2svKyt3ejdwemZoemt6UE9RR1FSUG9jN2FPV2dpRlBIYnNxRHR4NHJqTGNHT09oNWtnaUxrUlJ0SmhKODhRUm5iMklROHlCczY0TXE3REpaN2FSV09TbXFGRXROMHR3REltZ3p5bGNhQWVHczlvWDZvaEdqOEJWazIxbTdmR25wNzBhd0VwS0EySXIyb0xKWTJBNityT2lyd3M3SFRET3hxSWtFTEZsTVdiSGczT0dMLzVyei83K3k4KzkreHZiTm0wem0zYnVzV0tpZEl3WTJNUS9yUGlhVHVkY3NuZTZJWk5IdWFPMGFvWXNWOVVlTy9uMjV6L2RKbUQ4SDVQZmYvNzd2a1hYM1RkR0RpbXpyYUFUOUlPWjlIb282UGNCTU9BQ0FWZ21XSE5ZYzFYZ2VySW1ZUzNTdm1aTTcwOEFvR0tHZitra0prM3orV3dadVd4Mm9LK21kaWpYV04rRkRSYktyZ1B2UDh1T3dISUg2YjNaVHh6ZGhnRGZWaHQxbzFseHRLbFMvMnVNemVnK0YxK1hxc094dmloZS9tbEYyR0hHMzU1cU9LRlRWdGRCU3F1NVpWeEM2NzdDZGVMSmN3VVprVE94QnpZT2VuT1dReDB2dFRDNlQ3K0ZMOVloRUZPOVpnTW9BeHdmVjZMNitjYTZnQjFTeHVZTE1jNW5wejBNeFh2SlBCeS9LaDdOOWZhaC9kRGU1b1VsZFp1Y0RXKzlSaGF6eWQvL2xQdTFWZDN1dTgrOVIyWDR5ZmpObTF6RXp0ZVZEa0NPTHV5cml5N3ZZTGQraE1qU016S21qdG9RL21Ock9mTG1veWlzY1UyMklCMS9jQ0plT01XWUIzRGpGZ3NaTjNDZWQxNjRTZjNtcGlTeWJtaFdWdXdHSFhJdXFtamZPRUdoWWVkMlNodDNPSnlFSWoySUJlRUpTY0tFTFhUc2NtS2ZaQ0d3a0R3WldtQlVNdzA2S2xhUmNodHU4cmxibjIvZHhsWXp4TlBmdE5WaGdiMVVwQUszSi81Nlh2ZGIzenlIeXZjOTFnMHc3KzBZNzk3NHNtbk1hNkgzZWxUQXhOLytCOS9xeHR0VUF2aHpXQkRJd2ZOZ2cxazZuK3djK1pvQ0l1SWpCN2JGUzYzemFReGhUaEdiTkNrRnFEVGdPRnVBTFdBeENuQXNEbW9wWUEwQW44U1VJMkxINXF0Q0QrcFAvUkdrdUFGY1BhVEpRS1BzR3FEekhkdzFJbkphT2trRWVvY2hCaEVlaU5RQTRaNys5d1BmdlJEN3lKOEpoZ0wvTXJ4dW5VYjNQb05HOFg4aE1wcE5qcmNnZE9uM1lzdnZ1RDlHUUlHV2JIYWJqdkN5VUZQeXhCbS9DTndIOFdTaFcwVjVzRncvb0QxR2FNS1BENm1KeCs1aVprRTMzSmNIMEU5b0Nrd0tXZnBzenpZNDVtZmpNWHJNMWVlUkJ6RDlZZUhobldRaWRmbk9weFA5dVZLSGNiQVpFUlFBZXRwYnBKYU9mR2pLbGc5RExHcCt2a2dSWmxDbjJPSnhYY3UwaDNJWVFMZ3BtS05CNk5TNFBLREVkQkd2Q0QrUS8yWmtNeXJzVGg0UXZYVit5RXRtY3RCNjhyemZaRFFVTUttdGQ2V3BIRmF4dElSQWtKM09Tei9KRUs1QXFWQkQrdTVZRGRDMmFReHBjSGxDc3RCd1cyTmxuRTc5dnBOWnNCU21zbFFnOWxRejl3RER6d2dSMXNCSUFtQzFLYjZCdVlNekdwbVVoREkzUkEzeGZ5d3g4d1BNNUdPbE56OVoyT2EydzRCQllydkNBUXlway9kRmFnazdnS2cvRGFvV3hFakJESkw5RWMzbXNjR280VUltSW4wRU0vSkU1WU9pQnZYNEwwdHorZ2lIckR5eWJsd1JKZHVoZmFCeWFCZXYvVGNEOTNUUDNncU1YdDRoQ3dTV1VXQTM2dTdkcnB2UHZtRXkvaU5LNVpmZHlWUU9MNmROd2sreUVNQmxvZHc0T3pLcy9uMittOEVna0w3RUh3aWp3L3RaRENvRlV5Tmd3SVF3b09nOE5BbUhFZVJiNGlvcmFBWmNaZThmZ2FNcVkwNlQ4aTdCdFU4djNxZEd4b2F3b3gweHVVb0VORjNkV2dtVVIxOWVTTEFuM21yYUlvakQ3blozM3lxa01JWjZnZ0RsVGEzZHAwZE9mWWV2SDZjS2QzVUx2alVKNFF5K3haOXd2eTR3eCt1VTkyN0MxclVGcVZsbkNJMEdHNGlrdmxKYktzd3Zsa09ubUVvVDAzYUpScWd5OCtBVmxHNGYyUUZTcVBZYTY5cnM3YkYwdXdFeHFWSHFDbEpWVUY2OVkyeWlmTnFyd0dnVW9SbWVGUXNNSHZhREdGc01MTWI0NVBNYm00Zm4yN2E1VGE3cFdsMk41TFVMQzhjZ3VSTmFnbEpZajRHVmIySlVuOHFLM3lUVVdqUXo2dytFQU5xMVdveEJRcGdqWXNCWklNcWpTZ2RRVWVVT1FEQlZScytyVjFtK1pFSitacXRJNXlwNjVqRm4zZGYrdElYM0ZFK0hodnFrZXpOQkhpNDU2dGYvWXI3emhQZmN1V1R4eUZJK3UxamtTaFRGZ3pHMlovRlN4YVJkczVzUE0vUFo5anRQbnF5eEtGTlFDenJ5V01xSCt2Si9RUzk0Z3hDT0tvVDQvbjBTcVArcnV1ZEJHVXduMElWYk1zSG1ucFlDdlYrK052ZjFPWmpidVVhVnoxK1dHT0VZeVBrYTRibGwrbnMxSG8rcm9yTjRocExpb3Q4RHgvVVlTc201RU5MUEc3TTltWVlJVU5wWkJHUitWRms3ZlNUeXRRMFlmS3JVQnF2STlDR29HSHdRVEMrcjZBR2UzbkUzZ0ZJVFpRVGtXa0JOU3dIdTF3UGhCN0hJTXZYRW0yOHB3TWZycXBPSk8vdUdBb1VuT2kvTUE1UG5EcnR6bzJPdXpJdVAxbDI3dng0M1owNlYzUEhoNnR1ZUlSZkNqWXRCMlhlZC8vOTkydVdhWFhDUUhqWExiZmVPWGppK0MzOS9iMXV3WUw1U21qRU5veE5XdlRuL2Rpb1VUaitGQjdpS3N6c0ZzYjQ4clZ3L1FlN1lqUzdhYzVBeDArY2RLZE9uYkpISCtFV3ZORWFGcGlNd3Mwd0xqdUNKeG1HcndTckhqMXFicEJPajJGUTZvczg2SUNrTUdqWnp6NmM3ODR2Z2tIejZMZ0N0SUhKbzRmY09JUUNCeE5CZGZrMVB0SDQyaDUzRmpQb0tHYWVjNWkxejJMRzVNYld3WU1IM0ZOUGZkZTlCSlgvdkQ4d3hLd3pveU91Z1BXcEhIeThWcHRIdUY2cWZZekpxbERiQytzMzZrTWVGY2F0MnlCV2UrR2ZkWkdnSFJ2UjY2ajRtQysxSHo0R3JTYkZqd2xuQ21RS2NKc04rUkVVbG9ISFZNdFlPeXRQTmFLL1Bvckc2OWZBUk5sVmEyVG5vOEExMUkwUU05SFAvN0V1aGEzYmRROC91eHdhRHBjblk5QVVCTVd3dWpOZmFEYzVQcTBJYlNLL1lxV3I3dDluMFFBRUM1WkNGdFV4cDNyVzNCVDZlZ3FjVTY3d1lTQUtBekFLL0NrSUttamp3alhYWXkyMndFM3NlQVV6Zk1VRVFJZ0xvdlpaN094eWk3RmtDSDFpVncxWE5xUmRNOEZpOHhOZjJmV2JvTlgxeWgwQjQyZms0RjVJZFBZZHlnbkJ0V1g5ZGZDZTU4Nk1WTjNJV05WTlROYTVWZU9Hc0VRY2dERG51SjRZR3p2NTlQZWUrSy9Nb3EwQXVQbG1DSUNUeDIvcDYrdlIyMm5VYk94QTJsSW1EZHI1anovNjBUTmhwejh0d2Q0WXY5a09rcDErWm8vSWh4azFoSG5pbTA5T1FSb1d3SmgwcHhHN1V5RU4wY2lNM0Z0UWV2UUQzd2prZUdLdFdKUjZuU1ZoVmlqMDkwRVM5Mk50Mk92NGtKQlViM1FFTXZBNU5VQ2pGUTNQTStkWFh5LzFkeEt6OXpnLzFwRktrOUVkamRPbkJ0MVJ6THFIY2UyOVAvcWhPM0xra0R1SkpjZ1VsZ3ljdmFoZWgxR2x0L2hTOVFZVDhMMEVLTHh2RXpJb2lDYUltaHRHTnBnVTB3UmZmYzd6QWZQblE0VmVJaWJYc3c0TEZ6cTNBRVFUZGM0dVgySFA2UE5jQStxck4vZndzL0VRaWhrUzMrYUQrSHhsdUNzV2xFYXZROWMxclhGUkVycytCeXp6eWtNRmh4Q3FncWtkMnBKdkdNcnFiVUQrN1VKMEwxamtNa3VXSVNYeVlkdWgzV29EZHRnb1FOWDMvY2UzRlJldnZvNVR1cjJlYlNIcjQrdUY4dkZ0VFNUZUdjaWh2clZDeVUwT253RmpjUFlQUkdiaUdRQnU4S0hNQzVlZ0haYTZTaWJuS3NWT1YrMlo1MnA5ZkJNUWlHYmZRamVWTDdyRkhTVTlqOEFUbW1td2hMNlRBQTJCMk9uUjZHRnUvZUludTNTRnk3QWNDWERKd2xlQzE3SHNSYU9xZmVkRHE5dkdaWXJYaGptbVNLY0hCOXdwYUg3akVPamo0Mk4vLzRPbnZ2TUY1dEZlQUx6NzNYY09uRGh4UzkrOEhvd0QrOFllKzFFbUkzaFRuYXQvQ3pkL3Mxdkh4M2IrNlQ5cHR4Z05kdjJtN1phSnBaMkJUZzZnc2hRQUJiNXRoNm1aVndJcFJ4SnhYTHUxU0FHQWh1NmZEOVZ5TGRhelE1cGQ1QWxpNTJSaDVzbDRHTlJTamNIOHVmVWJNRWdIbXJwVW9DZDZueHRocFVWOHJWZldUWjAvNDhZZ25ibW5FY0gzUEEwKzhVVm0wTVliS0dnYjRidUlHazIrbm1SQ2FpdDEzbXVuWDJNaGZMNEVQK3RWNDVkOXVLSEZsMXhBMFBCakoxVVFkK21ySUxxNWVhblpIOW9IMSsvVUxQaFVJSTgxODNOaVNhSmdwTHF1ejRJaFA5WkFtbEZVRHJhYkx5dVp2cnNieTZxamVzY0FOeGYxOWg5b0J5SnUza0U0OEZOclZrZU1jNzZxalNmZTJQN0tOc3BZNE1zN3lPZzhlOEVYbzJpekxoREtWUGRFZXhWYVltWVpOSVh6STY3S2pVU3EvTmExYWVKVnVQZUI4VEQ1eXN1dWdqWmcya0JsdEZOM3JZTFpmN0dPTWNkTDBFWTBsSlhsVDNrRmg5VktydUFGd1pmMVR3UUdzTzhuVVk4SzJrb0NBSVU5Y1hyQXZlY25icmJiNXR3VEUwMjVJZlR6RU1MTzhUeEtOdjlIVHozNStIUE1nd3ZBbHFCYUpCT1ptb3JIbVlPbVYvMkNQMDFKZFRLZnhZblcvZDZ1ZENSdmovS1JHZXhJTTQxZDEwdlk0L1ROWnBMcEE2VWRTY1FCeVdDZkJjV3NQUmpDVzJuRmt0NExHSWpmdkt0Q3RlSXRwaHJVUGpJR3Y1TlhPM25TWmt3a1QrWXB5QVBYQWxOenR1TDZVZ05hU0kwR2dlVmdmZmphTEtyTTVtZDFEUG1HZXhWMXJQL3JXUFpVZHU5MHVRMWhzQ1N1bnNqZXJFaEhyUVB0WnFCdkNERklUVjY3M2xWZWV0N2VDd2cvcFJGQllJbUNHMXJUenBmZDFEUGZkMlcybHpMdzVCRlpVVTdlRGFuc2Z0VU9TR0dOcSs4TTBndzBDY0t5aHJkY3VVU29RbFBpMjRIQ09BdjlIQUZsemE5WjV5cXZ2S1RiclJsb0lZMUlwOEFNZitpQWhMdTVZa3FDV3MzVUM4KzZxZWVmMWR1V2t6RlZGc3kwOCtmMzZ3UWtHUzhJUFRGM291Nkdaay9HUy9wR29ZbG9WYXI2Uk1LUDZJQzJwd05NSkdSMENrTDQ2WmVlMWJjS1JrYlBRUnM1NTBaQVBNWEtDV1ppY254OFFVL3Z3ejc1Tkp1QWdLcEloaEp6QmRNYVBtSit6NmdSczdld0t4M0oyNk44WkFhN01YYktycnpOTGpOcGorS0ZmQkltNHNRVjhKUkNISkNLa25Db0E2RmU1NmgrVXFxallaR3gxTW8wRUZuWEl4RW9BMmErckw2REZ5dFlJVlRJNWFYYWxuZTg1Q3F2N2JKYmEvQzIwaEN3cVo2eFdadVkwQnR4K0tXZnVNMFJILytoVGJqeHhsZVJhK2NmZzlKdU56YU1tQWdhcGcxL0ZqdEpaSG95SVJtMHhsZDlyVmtyZjZnZmlCQW9KT0FQa053RjkxNkVSYk0vZlYzSWF4TzhNeEJldlI2Z3VOb3dRUDBnYkN1dnZPaXFFQlphT3FpZHJLMzA2OHZCZHBSV01vbTJPbnBJZHpBc28wYkNUeURVaXg5RXpmT1FGdk1nOGE2RnB4eWY3YUIyeDJVSzQwSnc4NnRSdHZGRzlxbTdGU3VXdXlWTGxyakJrMEdRQi9qYStrdWwwZUJCSitQWlR5cVkxaHlZdHpyTTI0RU1qNmx6eVhJN2VzNkppbVdHOXlQZmZkd05EdytDVG9uT2dNYlFoM3phRkdQbWYzNzJzNzltUjArQjZUVUFEaXd3VkJPemNRRDZRVWVUL2hHenAreU1hK0VXdjlIdTgyaGpwNW0weTB6YUl6UDQwd3dEdzh3WVlkQllTS0MwSXdsNGNIT1A2aVIzMkFHK3JKSXplNm8zRStsUUhKOVhUUy9OREROTFFBam1sNEtySjQvcHlHc1ZLaHkvM1orRjJxN085M0VFT2dNQnZQMm9GNC82WTY4RTR6S2RabEhNb0Ztb2ZCekl0WVA3WFhIalpzaWFJdVJRM2lpYjEyMC9FZy9YOENRWjE1RXk2UVlwbmo5Z3hLZmJ1Rm1aT1g0TVlYbVhHWVU2anZ6eVhCSWhEZk1US1gvN1ZIa3I0bE9HZ2VUR0dwcVVnWXBQdDhNU29BanRodnNpZGpzdUIrWUw1U01oSFUyV0QvYmdyL3hSVnZsM2RPZ0ZIZzVMRnZwbFJzSFVwVTVYZ0dCUm5mMW1yUjdaUlRoTkhoOHVsWXF1TUhUS2RhNWE1VXFkSFhBWFhDZlc4cDE4SjBCWHArdlpzczBWc0hibSt3TDBPZllUUjEwbnRDdWx5N01jV2MzK2ZCc3dWZTNXc0E3MFBCdTZFNGh0RVJxOElpY1Q4ZzVVQS9Lb3Q1YVNhQXNLSkFxd1F4aGJ6Kzk2aFFkKzNPblQzQThiZ0JadzFwMDVPM1N1czZmdlAvcWtRdHM5Z0p2ZWRmT2Rwd1lHYnVucDdYSUxNWnVKYmZUdmh5ZVpUNGE1eGRTeTBqUzdZcVRzZE5KbWZncFRpcVJka1dLL3BKMm1yR1pQbXNFZnYyNWdjTkNkaHNxb3Q3S0VNUDE2cEJ4SnhBRjh3S2lHV1VxdncrS3BMM1lBVDZoaGtIS2RxVmtSNEtEbVpxUE5DUElDWU1Fc0tPMUJzekhTZVhETnE4TTFZS284bUlrZE5qbU05U2lXR2VXQkV5aEJzbkJSaG1aalhWQXV2cVlLWWwyRGovZXhlWjgrdjM2amN4QTZuSmpGMU1nWHVic09QcDJHTmFJWW5zeUg4dk1VSXVOd2hndU1MeWJ6REVXR1laekNLakEvbGpjWmFCOEtRN3dNaEV4cDh6YVhRZnZLajR3WW1GRW1DZXE5WjQ2UUxybysycW9JQnFwak1HZXJQRHR2anlIbkN4MHVQMytoY3pxeForcHNOQ01qbkhtRkJ1WXZWVjZkaEVTWTdHdWdtbE9Zb3QxTlFDQ1BzUkhkNmNnTUQ1a2ZQM0d1TUphRlp5RDQyVzhJZ1VMT0ZkQzJIU3RXdWdKbVNaNGc1U25ON3JVYkhSWlZyZ2cvUGVmUGt1RW43MnF1eU5lM25SMTJLMWV0ZEV1V0xuRW5qbU41d21XUWxRN1VpSVEvREZiRmZMeGZBeXpNUXhiOHNHNWJyNUpYQkdhRXNrMWc3UEJ1QU1jSVI5Q1J3Wk51R2NicEdNYmZLTnIwM0xsaHpLMlZYLzdEMy8xMzM3R0VocllhQUdkV01nUVpTTE8ybjJIRmROSHM2OE85R1daL2hTbE5nejNrb2ZnK0Q3bGplNVErOGt2WWFZTHNtdTNOQURaRUlDSGxDSWhqeFRaME10U3FBZ1pJdUpVbUlJQUNRUnR5R0h6eVFwbDU2eXJjRGpPeUhkZ3BIcGVGeXF4ZGI5WVRBeWU3Y3BVT0EvSEZuK1hLcEJzYkgzSGo1NGExajBBMXRCMVlKcG4reVVFZUt3NERKTHQ4bFIxT2dxRGhnSW9HRmNyTzk5ano5Sm94STQ4UGw4U0VnU2xqcGswUVowZG9KUVZxRlZqK01LMFlpa0lPcW1qOTlDbVhYN0hLL0NtQUZJYXJTZ1dGWFlkcmVMaUliakt4cGRlMStJSkxDSWdNVkduR1J3U2x3WFRsOGd6akpwNVBKeWk5eFl0YVFlN1lWUDB3Ty9PRm5SYkZOZ2oxVnVGejU3UTBVQUNqVStpUkVBRkZRcGtnS0NHc0NsZ3ZGenVLcnFPL0h4b0FCRURmWXRlemZMMHJuaG1GTnREaitFWmpDZ3dKQWdqc0FsVCtJdnFBMzU2b2xLdFFyOGVqSXFVdGpVajRlU3RxSzJzSWFVN2x3NkdKaElrbmlRNStwNENicnhTR2JHdGMrK3pZbUh0eTF5c0Q1ODhOL2NYdzJjSGZya3lWLytrZi9kNS8rQXVmSkVKN0RlQ21kOTA1U0EyZ3U5TXRDQm9BUVVhVXlYLzl5SVMzR0ZDdUtDejJOM2V3aDN5OEg5MTBtY1dIeWRJUTMyRFhhVy95L1hCRFE4T2F5WUpmTTN3YS9TYmdQVGhnb1RkaDh1ZHJuZ0YxS0lFSTNPbGZ2TmlZa2Y3eTRqM2o1TW5GcXF0QWM2aERqZVJaYlRjMW9aMTBIUnNkNHR0NWVLKzV6RnN5K2hoSUdYbGxNRnRyRFl1MGNjRVN3eUZZb1lyclVWVE1iTG5PVHUyUzEvaDllSlFsU2JvTkNzR1MzYmhGTy90a1NxclFMRElmL0NFc3JtZGdUMlRZd2dhazRYMTgxa0ZsUVppWUIxYk9pTnlRUkRsVUtOUWxJSmtQaXh1WVY5ZEE0c0xtN2E2NmZ3L0NrS255NVdFY0R0cXNOZ0d6M0JzQWd4RXFDNjRaeW1ld01jSE1wVjFRWTFtL1NkOG4wRk4rUGxxSXoyUEExSTU0aDRLM1NSbk9FR1NydHdJWElLeEswQUxJM0c0UzJzMFZWN25pb2lWZzhHVjZkVmtkQXBxQ204OGhVSkF6SFNjaXp2NzhTdE5TOUNrUGJVVVhCbWdUUlQrTlNQaUZ5QjZwMkFxemRneW9vYjc2dG1RQ2JOZnExSlNyb0V3b3BQcURUVHM4TWQ3NXlzRHBYL3pxbi8zWHYzN3F5Y2VmdGRocHROVUFBamp6dHA3NS9ZeExNK2tPZHM3a21zMURXdG9aUm51Y2ovbHgxbXdJYStWSEUyVFhhVysyQjV2RktOaUUyRHRDVUd0YlFRTVVNd0tYQXJ5ZW5rTEVqTWFuNWZoS01uc3NtZWFFRzl2M21xdXRYZXV5VjE3bHNqQ3J4NCtnbkt3SEQ1T0E4Y3VURWhZY1lMeHZ6b00wYVRRVURPQjdCZmlOUHU1SDZHT2RVS2RaZHo5aW90aEtpYkx3Rmw5aDNVYVg3WjRIUDdaUmt2bmo0Y1V3NWRQVnBZRm5MejYxT0dIbU5GVWZESW13NGczdmNzVWJiOWJIVVJoZC91UVFwYkVzaUdCcVE1RXF2bmJLS1dTWnAya0t1TEI5aHhGaGVaNUhZRjVLNTY5UGdsK1VtUURoc1hDUkJGSVdRdGFXTXFadEtMNlB3eE9DZWI0clVXbXRiRG1Tc2xPdFZaWWltRG5mMit0eUMzbk9vUk9Cdk9VTExhSmVVZHhTQWNzOUpLVFdzQUN6L3dxVWs4d2ZGOG55TnpMSXhiTEFFdnNTYVZjaUU0T1BuL1JWbE4zKzdrb0R1cWlSUVd2angyYllUdEp3SURtejJkci9oK0NHekdPMDFRRGVlZU9OZDU0YUhMaUY3NnZqU1VCMWtBK0w3UGhSODlIdFBXamFZUFIyYi9KSDhXUlZKTmxEUExQT3pzL3liMjl5L1Q4OGRBYXFMdC8zN2hNQnNRMUlPWkx3ZVlIWWtHT2E1ZWp3UGVMQjJVcEhnOEdJRE5PR05lTHpsVkRnRXBnZ3pNQU9uWkpmdmRybHVjbUhBY1NqdXZyRUdQNG9QSGpZQklWVU9mWHdEVzlmOGRnclh5elMyVzEycGhWMVE0V0c2czhEUjdpTWp1aHloc2I2ajhOZERPQm5TODZhUEFsSmxaNHpZRzdKY3BmbmpuRmx5bVc2a1JlWEJyM3pYSlpxTisvSGcrU215Um1HVDhDQkdVTnJjRUJKQ0RCLzVGbTQ0bHExandobDR1MUFmZWFMNlduNmcxRTVNaFR6Ulp3OGx5b0g5a21RcXptWmx4cFZyUTAzMmd6Q0xiOTVxK0xud0pEVXRMZzAwb0Vlbm5FZ1FmMm1XczlOdjhMOGhkQW9YbE81SXNabjVyN2tjcGZMZWxOUERubFF1QlNYTEhVbHJOczdsaTJESGVvelpuc2VubUo0amdlOWtBWnpqMTdFd2FVWjNXVDZVb0hMR0tqY3ZmMVEvYnYxR0hkNGJrT1hKRVZJT1FDNDdiK0pJZ1FIVExQR29jcWZKb1VudnhLTWZrdUM1ZVl0U0w0cUhJTUsxWThtd3RYOVc2OGNPTFBybFdlOE80VzJBdURHbTI2Q0FCaThwYnVyQTB1QWZ0K2NBQWRxWklWTi94ekEzaDNzRmlBL2tTV0k3QmJYK3lWTldWdUVSVjVtbWM2a0FCZ2FIcFo2R1B5RmhEV05PQ0RZTklnd3FGSUNJTlZkZGFuZUhPVFp2dmoxWHpsUU9PQ2kzWDB5d2J3K01LSU5kaDRtcWZxSGljSitCKzJxS2Y3NXpvRDYrYk4yNEVpTWtyZ21CamdxSk9LRE9mbitCUmpjWUZKcUpJaEdacmNabFl6QWJRcmJJQ3RDcThpV01LTlI4emg1Vk90NERpU0h0TnhVNUZsUk1ra0dTeElOTUFvT01pTnZmZkZhdkxTbVN5c0dMYnlOeHpKUUtEQk45ZGhSTzZqRTVZN3lCVUhZWktIWlpLRnhaQ3BWdFExZjRFRWRoV1VWYy9vY2pYbkJZQ2dyNzVEd0N6ejE0Vk91anI3a1BvUU9Ga0dUcVp3YVVQdnhvQkxYNHRKSTJON1VBcENlQ0gydUxzUVBoVklXQXBXZkxYTm5vRG1keGRMcHpDbVhnOGxsVkpYbk9uaHdpL3N3L0FBcHlsS2VtSFNqdTNmcnpBUExtODl5RExKdElJUzV0RUxmOGVVd0J0YkMxOFdzSHBIRkErNFc0Y0ZMTHZ6RXZvYmdiMEJwUmlDVXRqUzhEUW9vZFBlNlNkU0hleDljN2tRODRkd3RDN2R2K2F1aFYxOE5aNVFqdEJVQTc3anB4anRQRHd6ZXd0c2hDeFo0YWNPeHg1K0UzYTVCMCt3SzV6L2Q4bWZ3ZEhiQ3UybUxMVzNEWmpLbEFReERBOERnVUM3bTNZQzBaOG9GaHdZbkJvSUVRTG9IQkQ3Ung4TXBQTVZHTFlCbjZrbjZjZ3pYOFZqVDYxQVFpT2Y5Y3p3ZUMwYVllblduemZUVUZGRGVwQURJem9jNkN5YlVoaDd2UEdCSmtUb1l3elB3SUpyY0xPT09QRDlRcWd3UW56djVaQ0tDZzUvZkhSQmhacXVmT2VzcVJ3KzZ6TGxoVTVmSjhHSldYQU96cm9RQUJRTUdEKzhhNU5kdHN2MElDZ3JrejJ6VkpzaFgyZ0Qvc0F6aXVwa3pNSGZ2bFI3NTZMUWk4NkdiMXlJVHdjMWJpRHpQem8yc2FGY2RwdTNNdzkwRllRcWhabDlnTnExRDRid28rd1EvdG56aVdoN3JkOVF0UjQxaDNRWUlDcFNWK3l0K0RGaFprU2ZTRnpadTFxbEFDaW9PK0R6VWZvaGluemMvbVlHY2tZemZDT0FtNVJSZjhZWFY4UlQ2dnNKbENWK1V3aVZkbFZvVjc5eGtzZXJnOHdpOEJrbVhCTlFxOWtkUCtpc3dpZ0I0ZCtTZER1TmYwaStPWXY3NjVmTVpYQ3BDeTdJd0E4Y0NoZklVRDZSQkM4aHdud2NWQTE5MDFPcTUxY083WG5uQVI0MWdvNlVWdUplQXYzZ2RibzB2T3loYTI2dERmQno2YVZiellUNk5yZDhiN1RiNFpZYjBYbXFsMS93TXB6azloWmN5Y0QyZGdvMkhCT2hobnNFV1JVazVra2kwTWlCMUhDbzBaNldBVkI0SmNJM0t3VGYxOUZPWXRRWXh5NElaa3RraFBtcUtUREhZb1o3eTVSWFRRVW5SeVZ3cTZMZ3JtQ1VIMWRwQ2VQRzRBTnpZS3ZIc2V3WHRjbkMvQkpUTnRHUXNydWRKdkR0QUpqUTdsMDFNeDdmZDVLRTJSd01aUDdwMWhtdVRDZkpRejhzdi9FZ25CRGx6OHR0NElUMzNUNWpPOGlXakl3T3NrWGdIeFU3b2xkUUdETk1TaGZXQnNNNnZYWWYxK2dFd21PMi9NRThyYnlpem1hRklkRk40YUkzUGpUNDJvMEpJQnQyS1BRdmhCSUVYblFOZytUajAyZmFlbUNrZmthNmVPT3Ftb0hGTW9MMzRUQUtQMDQ1REVGTjBkUEZobkdwTkc4TldEaU95VWRJdFA1bFdkL05MeEVuK2VULzhzQkFzY29SR2Y3UDZPTS85Z0E2akVBL0VnMEZGTEl0NExvS2ZOR1A3VU5paWUvKzNqZmZjZjYvU0p1QnphOGFuZnZFenYvL3FqcGQrZ3p1a0N4YjAyYkFpVThwZ3EvR2ZQNjM4ekpTZkplTnZrMm4vd1ExN2JHRlFrMXV4WldsT2t6UkhSa1oxRjRBdlpxQlFZUHdrMGk2Z3lRTU5nNFpqcStsMFYyaDBBdm5udG16VEVWTE81T3pFQU5uVUVYSXlFNnlWcjNKMXpDZzhOSkxIZWo2L2VZdXI3bmlaTllCQ1lBK2ZVTmpwZ1JmTVlEcDNFQ0Z4WFlBdVVoYU00akNvczZQbnRjekpMMTJCNlF0TXhDUElZQ2pHNHF6WjA5dm5lcTYvMFZWZTIrMHFVR21ybFVuRU42YWtNQTZEVDIySGZ6SmpnYmZvd0lDUXV5NkRtYlY4OHBpcm5JR3FMY0ZBRFFOcFZxOXpaWjZCSHpxbDZqS01wakxoUDVpZGdsdGFEajFRSG5VUE4wcTRMSUpncWI5bVIzckQydDB0aEVERDBvT2ZYK1AxczFDNTJRWGhpVXpyMzdxYmdzYkM3ei93Z253RmV2aTZFaC9XNG5zWmVRclNOcWJSNzJpYjRwYnR1Tlp1WnFDMnkwUG9kZVRaYTRqREhQSER1cFo2dWwzbnRpdmM1SXZQdWNreU5BbUU2WjJFWUc2K2Y3RUh6RitlOG5lRUFsZ3ViMjJFUnF3Q0V6RlVCME1ZMFFxUHZNMVhUWmtDKzhsYkFWbmhVWC9maDExbTdVYjVKY0czUFozWjhZS3JRakR6N1VzVmFGOTYzTGxXTzVJcDFxL2E5OEFEMGIzdDVtdDUzUCt6UC91ZmRyNzgwci9pdCtyWjZCRlFpYmdhSHNrNkJGc2lVaXBGYzNBemZFTk5HeWVnS1d1czF6QlErU1JmaVdmM0pRQU1xZnltelp5RGx4dDUyU1lCd0NmaCtNUmFCVE9FOTRrYU1YU01BSU5uNkxrTXlLSWppaENrbWlGWFlyWkdoMVNoRFZCcjBST0hHVEF2MU5TcG5YeDFseTl2Vkw0NFA5cjR0RjhPak1rdkViT2VPVEkreXByZnV0ME9Ba0dnRUJRQS9kdXZjVVhrcllkNk9BQ3dKczlUQUlBSjlCNTh4dU4yT0JoVHpNOVRmam1vOVlEZXF3aUd6S3hiajJYTFM1cEZkRmNFMTY4dFcrN0dYbmxKVEFiK1JUUVRETklBMlhmMXJPcG1UVUUzVFE1aWUrRkdGdVYzV0w5emljRTQybk1BbzA2Ky9LSzRVZS9hcC9hUTRhMVNFd0FVa3JSSUZlZnlCYTVPYUdKOHJUbXZuZVY5K2kxWHVQSXJMMGo0c0N6VUNqTCsrUXlXaS9LSXQvNDZpNXdWVGZPa0FHYll2SGZlNUtvUVN1WHpJKzdzR0Q4dVUzZWxqcEx1LzNlVVNsaVpZYm5rWWFKa2VxaTRWbkV6dlR2NCtBaTAyRy9rYm9hMUkrSEhtbmZYT1Jidit6azBhRnFSWjA3bjl1MXhZd2RlMDROQ0ZYMXV6aStQNnBsUDdIdm9nYzlaVEl4UmJ6Wmg2N1lyN2pwOWF2RGRITGpuenAxM2ZES09nNEtQUi9LcnVlUXJGbG9tUzZUeVd5ZFR2ZEpSVGtoeW1uWmNsQXpBKzYwME1kQ2dpdkUrZFZETGRFSU5BMUJVc0lZdkZqckV4TVZpaDZoVTZrUm5kSnJaMFFWN2wyWUIyanY1VGprUUg4amd1byszNFRoZ214cTJmVHNEaVVDT2JKRHRBZmdXUjc2Y2FTcDdNS05FY1ZzTEFPN2VjMU9RYXJwVVZReG9sc3RoL1Z2WXNFbFA0R21KZ3pibHlUNCtHTVNYakRiRDV3NkROdTZRVi9uQ1NxWkxxTmhjeC9QWWJsM3ZxVU5jRE5xdU5XQzBZN2krR0k5OWhaV3RMd3U2VVlPY3dnUHM3L3VEcWptR2hOb012UWhHenFCZnFGTG1KOEIwNk1mODVtMXVZczh1VitYK0JPT2hVRHFlaTJ0UTJOSXJ0RG1Ga0YxWGd3UXdmNzdocHJRTm1oR2ZtVUFjTW1xRlR3UkNTMEdMTUV2a2k3U0tiRXlqZktraGNTRERKS3p1RnNpOWlpb2RXQmR6M3lYZjE2OHorL3grUTRVek9aZGVDSVpZaHhDZ0lJQUQxK0I0NVZrQWZnUmsvT3g1TnpMSnZRb2VFZTUwWGJ5RGd6Z3FQOHhBMG9KbUlFVDBkdG40NDlPYTI2SjQvNlRib3pHdmRCelkrY2MrZ0FCMGk1ZkJMdzNlcVRtL2J6YzBnQW5UWk5RM0ZJenUxVE43ZG43VFIxUE9MZkdQUHY2enZ6YzBlUG8zeDhiT3VUVnIxb01aN2Zpb0NJM0d3Y3pPUzY1dFdEZ1p5dGJzU2RQKzVZZ2dkOXJMSTZSTEl2YUliTTBXdCtQVkYwVXNNOVZCd2NaZUc4U0J3YWExMDlMbDdzU3VWM1hmbXVBT05WOUlrVno3aCt2eVZ6WmY2RHpVU2EyN3g4ZkFYRGtJTU5NQTJFNThvQ2l6WUpHYm9tcE9RYmxoaTV2Q2pCb0d0aEFWQ2ZsWmx2WVFDZ1k0bnpOZ0gyamR6ZlV6N0l4VDJyUU5Td09iOGZoUmpXN01aQ1hNY0x3bUR5ZHg5Z3pyYWpFRnJrY2h5ZlI4anIxWTdGUmNZMXFJZGZpei9mamhDMGZWdkhlZXEyVHFiblRmTGgxZTRtamlwVTF6NExLQkE2eU92UGxvcldrQWFuL1V4VmNCNE5qSnVLNlY2K3hwd01IakxyTmlsUnQ3L29mTUR1blkxaEJKRUNyTWdDOHFvVnRsZ3IyQ1pRelg1WVEyQVZGL3J1a0YyRXZYWE8rbVh2aVI2N2p1SFc1cTF3N2R5cU0yUUhDODh0aHZieWZYeG1CNmFENThFUWpyV2tkRnVIenFCT1BiZS8yOUlFcVVQSWIzU3dXbDQ3RzgzdWIvdmR2N3l5MnJkeWZqTjZDUlIyUmw0eEtvYy8zdSs1MXIrSHhZQmN2VFk5OTRXSnZIZkkyZTNtdWdrTXgvMmYvSUYzNVZWbUFhRFdEclhWakwzY0pIQ3BjdVhhWk9VN0hSTU93VWRoUUhGVSt6VmFwVFVLVklXSjlodWFCRE1PVUpIWVNoeWNFeU9UWGVnaWJjQkV4K0ZKTTBtYUl4K0xXZ3FSWitTaCs3N2MybnB6QzRJZStiMnpPQk9EQVZEUTU3VDE3R1RVSUlrS0hZMExubEs3UkdiWWFKdGRBeHZGK05FYWI3L2VabGdwTmdlYlIzc0dnSjFMTVIzZFBsTS9lVTFLbXlLa1A4S0ZPemF6ZWJ4NHNSVVlLRVFwajV3cTdvNCtPdXdNZFZPZE4zZExyQ21iTmlFakk0dFEweVBZZUJObW9SaDhTQngvTHA0RlBXbm1uZ1JjT013VGpjUFMrczN5eU5abkxQVGxkR0cxZlIzMXBuSXo5cWNoUUMxUGl5V0hKd3FjR3hvWEFKQU5NQ0FpUHlXdnkwRnc4RzhlVGYrTXZQUzhWbWZOdkVwYnJPb1dtQ2k4M0F2bFE5a0JjM0Rma3dEdmQ0MkE2Mk1Ra3RFdmxXQjA3b0xUL1o4MmYxWEFDdnpTVUsxWGdLTzFUZFFleTVNb3BDRm1jL1UrTWs0MVBiek9rT0FadVVFeEJKelp0d0p5ajZveWFDdjRZdy9jdXVER1hTN1lNaU8zOW9EZllrSmVQRWJublE1Zmh0QTJrQURVOVRVdU01ejFleVFSZ2J6L29BbDNrYUdzQmozdEZlQUt6ZnVIRkx0Vno1RVBtK3A1Y2ZZVFRHRi9PL2xlUUhicG80bThYRVQxR2ZQczE3eEswRVFPd3hUUkFHQmhnQmczUmtZRURQMW1zM240ZFlFbXZCR093Sy9nSzRKaC9MWlZ3T2ZtV0pBREdUbGs2MjZWZkIramVMR1pzcU5oK3pSWUFZSUNvdkxKb1ZQUEVrRzEvQ1VZWDZMSC9rckFIQXdjQW9TS3Y3N1ZBSmVUUzJ2R3VuNjhDQUw0STVtWjU3T2R3TXN1eVluak1pMUY4d0x1LzVFL2FLY2RzZ3RGZHpNVi84UU5Ya1laekpFMGZkNU9tVGFtUEdVVjBRajh1MUVnUU8zVlhlK2dNVDhjazVuVU5BK2ZoUVZoRU1HTHZSUmpuTXZxZE91TWxqQjEwZS9jcW44TWlvZWN6UXZQVmNMTUdlQjNQRFRXYlgzUVc0QzlDaytJVmdNci9kdWFCMlpYbXpJWmcvbjl6VHdnWjl5UGdNMTNLVDdjR3lJcTIrQm95MEJmZ3hEemFqa2U5TE9zeG1GRWZ3VG10N3RsZExPMUxCd24vWWZScDVLVVQrQ2svNmVYdVN2RzhpWG5ERERFNHU5ZmdnRmNNOTFhRFpuSWVteHFYUlJRbUF0ZXRXWDQwMTF6MlU1dk42dTlDMHh2d1JhWUJjUEpHWlcvazNFYS9UUkp4ZGpGTE1ENmxIazkvRDQwRWc3WWhIRlk4c0NadEhrd2NuY0RBQ3pKSGhJVzFTWmJsTHpTLzhZSUFyQUMxS1JncE1haVlhbW8yUG1WanZyaE9Uc0x6R0xMWitoUjBtejI3cjlXR0lxemNOMFkrekgxVzFobnhKM04zVzIzTG9ENmp2VWNZdzZLeFF1UGJZaUI0Q3lrS2o0TDRKbVR6YzRtTmF4aXpxa2RjT01BM0RxTnh3RDREcVBvOG44NW54TXVVWTVCKzFOR2dwR1doNnA0NjQydm5UdUFxMEFjUW53eGFMWUNBdWJaQi9GVnBncmNiZCtacG5WZzR0SHZpeDEyUlRJTENjWkZRSkF6QWVaKzBTQkZBUjRkenY0VDRFVGM3SXV0V1k1ejRRbWRmSUh1dWxQeGljK3hFTVkxd3hzV2toakcrUFFFTmpnSC9VTnB6WllZL2JDbDZ3eW85L01MbEVZQU1GdjhndU41M2h6N1F1VWhUT2ZnaC8zbTcvZEN1eDdQNWZhUWh2Ukc0TERhYVJ3a0o4VXVSVzdoSUFkUXFBQkRpK3p1L2REUXMxSzR3aDc0ODBLUUZndWJiQUxiZmYvdW1CNDhmK2xNODQ4MU5NVWZuaW5HRDFEaG5lbGJRVHNLVGpHUnI5NUxaL3VkS0d0eERKT0VtN054aFhxaUtjSEJCa3dnQWZLMGFUUnd4VEYrdnVKTlR6MHJVM3VNclJ3enA2Ty9uU2M2N09kd00yUUgwU0xBRytQT3d3MnhBemI3dWZqc0dNbWF3RDJrWG0wQUVNWXFyZVpGSUxEMnQ3TXEwTlpxcm8xR2k0Y1dmcmZ3NDBDaGZkQ2tSNUpiUjhPR0hha2UwQjJMVjlXWkFQelhCZWc0eEZ4dU5ha2JDOHdNQ0lRMUFkVjN0UW1DRWZwbVdaZkkxVlRxclNETGNJdHFRZ0dOZGJmSHZyUjllMVBrK2FDb2pDYU5LTkh5UTNRV2VtTFgxaXYrRHZHU0pwOHZMSWdrdFVXNXB3ZjRKcllyNGxGMElZNGJhWFpXa3NyMUJ1RWtFUC9pZmNNc3hNL2dZL0t6Y05LNzg1ZloxbWRNZlpHQkpYaVB4OWFmQlR2K1Y5cm9ZbFdoSlRtQVNQZitNUmJRNXpZcWtpWDd0UzV0Y09QUEtGUDdKWWlld2FjYzJkZDNhUDd0dnpmcTduaTEybGV1dkhZbUpVS3R5RHRVNFBLSldRVGh2eHhUTWpJOUFkcDBWSi8xUTNNeDBkYWdXN0lUVTlKaVltZkIyNGd3MHhEMlN6dGZzbXA4cS9SN1hQYmg4bDBPQnNEVEFSR1E2TU1ZcVpwdFEzejJXd25zLzE5dHNETGNjT2l5RmlCaldHNXFEaDVjenRON0VnZldrM05SUHhtVGRNSWpDb2RZTVZMQjdjWElkN2hpTkR3eExjeHVCV2JWNmZjWlVuZXdEbEl2TnBWNSt6S055YVdZdWRzTk9md3NMQytFV2prTGYrV0FUWmd3bWIvdVdqYTVrcFk5WmdkTldRZVNvdFRWcVNadXl2UDVwQmVDdk1kelBxcXFFUGszN21TN2Vaa1R0QThXSWtYYnhHdVRMaHBpWkhvZW1NMmY1VmVVSkMxUVFBazRjVTNnelhONGYvYjQ1akZiSjZFSEU5Vy91WktWLytOQ0V1UjNRVmI4RTRlZmQ3WFgxRFdnQk1ESjEySjUvNEdwYXNrOUV0UUl3VVY4dlVmL25nd3cvK054OHR6dXR5d3RxMXEzOEJzOXVmYytDSHhtN1RyZzJJSXpIdHNtV3JvNWttREVhNnlXVE1seHRVN0d6T0lGTHRRY3lCQThMVWY3b3NUOGJYYmpQZDdBeTViUVlPY1prZjc1OXIzWTJlWWVkWWZyeU1mcU9CUUROcEQrWFNacDZZM29TTzdQUVhtZHRNM2czZ1N0bksxb2pJcDBVWW9YcVlKWUpaVy9uRG9YK3J0MngwUjNaengzYWpBRjlOSUYzbkFOWEJyQkVVcWdEOHhGRWpXSGc2d0JpWmg0MU1XNkRBTmFFSjRjNXg0R1BwVjJsOWV0Z3RyUnptN2N1ZnJtT3dLNlRCTHhrL1JrTVI3VG9KUDFvck45L2hIRjhISDRBc1JvNGRjYWQrOENRQ1l3SGd4ZWsvT2ZESWcvL0RyS21zTGg5SUFOUWdBTERHRkROTmkzUjRjSEd6aUx2aS9CWWZUNk9KT2YwNlBkemE0bzgzWmthcmpwd0pUVkZtbFVwb0xoSjltSHFtd3M3MkNtOHMzaDZsTUZCWThud0p6d1h3MVYrOFcyQWxSSCtvb0kxMlE1cTVrd3h2WVNsLzlrdndReFp4TG9TNUdySUhiRHlVYjdyVlpYZ0xPSUd6Ky9hNDRSZWZoUVl3Z1RGYnN5VUFJOWV6ZHh6NHloZWVzRmlOMTdsTXNIYkQ2bCtvVEZiK1hEMWk3WDNCNk9JR0hkSnExbFpIdGNNRk51RTAwV2ZQM2cwSXlXWlpWdzIybHJqb0VydzVTQld1dWFSdlJ0blpjcnlETUEvTHdiNTU4MTFQTjVhSDBxUW9BSXlzSkRadVVrd2VpTGxFYm1xTndhMllpSi9HVFBXYWV1Zk56dkc3RlFud0pPRHdpei9VSGtDRlMwM21qWXlneDF5OTc1RXZ2dXlqdlNsdDlxWmo4K1lOdnpBeU12cm5WSGUxbVhVaDhDMUNEWUNkeXVmMXJSTm5pVVNMdmg1MlNnNkV0dm1rdk9sb0tPY0ZGUHR0ZzFrM1dUSml1NHJPT3JNSXMwbVI3SnRTc2RNdFdiekNMVnU2VnU4UkRKdVJNY1BIeTd5a2FSdXd3Uy8yVjEzQXFjMDFNaDlGU1lETzhldXVkZlVORzh6RDQreSszZTZNTkFBS0FDd3hFUkZYbUNyVWVoYS85dGhmUlk4RlgzZ0wvUmlBQXVEOHlNaWYyK3V2R3FzNHV5cno1SjdlWFFlWlNVRmlTTGQreXBWMCtFdlFTS2RvZ1NoQ0hGTzJHUk1TelpIaXRPbXdkdjdUSVk2WlNEUDc1RzJSTHNiRlpzaDBvWVZuMTZmeGxkcGM4MktMQW5BUFp1bVNOVzdEdXUydUY5cUJidjE2eHJhOUhqUEYrRFNUZHMvOEpnUjhoZ21rdkJJT1daRmcvTHBySUFENHZZSVlGQURETC8wSUxEOEJBY0QxUDJObmpoNzR5b044ZERUQzdGcnV4d3diTnEzOTFPajVzVC9Ud1JidmQ2SGcvZTE4anM4bDhCa0VmdTc1VXFPNVpKSFBtOW9yeWVHVnZIQnEyS1hRTkVpUkxLUnNOWUF2REkzbGVkMFp0b1Z5am45U3NOazRSbkNiRVllRldUdjJycnZseTlhNVZTczI2azRMbDVERzZIYkhKekIrTEJSQ09OMGgzMFNEcHRCS0Y4eTQ4V3V2Y3JVV0F1QU1CVURRQU9DSDNMOTI4Q3RmK29ERk1GeWdmdnpqZ1huOXZkZVh5NVY3d3EyeFpyVDBUSUU3KzNvZXdDOGpURUpmSXZKL2ZzUjRNL1p2bWVaU2sxMzRiUWoyalNmKyszWDFtMGQyMTRjemVwcnNya200Z3hKVFBqcUhvVnVzbUhUR0owYmQ0T2xqYUdjZWZPclFKcko5Y1pnbkxEM1RpOURyNkFqckMxeWIxK0J4YW0vcUlTdm1uK1ZrNUIrbTh3ZWg3TzNPUEFoVmRKT0w1N3Q2Zi9wWmdNbWhVMjVpOExqalIxcHRkS2t0djN4bXo2dGZWUVNQeTFJQTlNK2J0NzVhcVh5Y0hka2FvVW5hRXpzM3ZHR0hBNkFsRTEwd0llZWttMy9tbWZaL1E2bWhERWxpM1Z2NXo0cW15ZmYxMGtXVlMwa3VnbHJsRlJOaU5GTUxmODd1NTg0UHVZbkpVZGMzYjVFWU9CWXdTZE5JUW9aK01rTjRiTmYySGV5U2lrSXduUnViMStucS9JaHJBdU9uQnR3a1h5UHVOd0I5OUQ4NXMyZlhpN0o1eExsY1JsaTdkdVc3SnFmS1QvRXp6cFRPMDFaU2pkb012Z2lsVU93d3FSdnRBY3dXbDZoWkc3S1pYYTZYNk5vWERGejNvc3I3Wm1PYVV2bWc5akdhUTlvTUg0RjhSK0hRMGRIdHRtOTlSM1F5TlJZb3RDdXFJY29ybVdtckM4RFBNcGYxNU1yRnJyb2xmUkRveko2ZDd0ek9GMTJONzU3Z3RWRFFhaTUvMWVHSC9pNzFXdUZXdWYvWVkrWEtsWnZycnJMNy9MbFJ5bUx2T3gwZ1piMHRZRjVmcitzb2RVdkZvMG8yTzdSb3pndG80VXZYR1c5Z3Q4NlE5WVZmK1EwczY4VWlVU1N6enFLTWlCTEhqY2VjOFduZGRYZjF1dXV2ZlRlRVFNSDhQZWNIVFlEcFRCdElhZ1lKdXk3UVlGY096dTNzenJyUjFXdGdpMGY3V1FxQVhTKzVxZ1FBUERLWmthN3U0c0lkRHp5UU9zY2U4cmpja0Z1eGN0a0RFeE1UOSttVlV0T2dkUVB3ZFZvOWV2bElGdXN2cW1kdk9sU3dpK3VldDArblhtQkozb0NDeno3TGl5dnI5S2tZNnBrU0ROL1IwZW5XckxUTnVzQ29xZlJnNmlTTTBSUDJDTFNISEp3YlhyZk9aYSs2MXJzQUJKM1ovWW9iMmJORGoxbmJBOWFadnovNDZKZnV0QWd4MGxlOHpMQml6WXE3WGExMmd4eCtKelNDZDVoaHY1QzMvWmxjYmpsM1pEczdPNWU3ZXZaMnZjbTJvV09TdU5BR1RIWjgzSVZ2TEpyTE9NdFNYMERsMGdQMDdRWmZ0bGtVY2ZhMVNNUnNiWTBRemNzdytGUWtsd0t6UTNxRXlCVmxGZWVadWZJYTEzLzcrODN0Y2ViVlY5em8zcDJ1VXFuWUhZQnM1dDhmZk9STHYyV2hNV1pmMzM5ZzJMWnQyNGZISnlZZWxzbzJqUUNZSHBZdW1UcmRwYTB3YzR4TGcvWjF1ckRhWGtUYlhFU1NOQm96WUp2RmZyUEpQcDFpR2lqU0xQT09BczBTeDQxVmM2citmQitqdmJ6MTBxQzAvV3EzNkFNZjlTN0RtWjB2dTlIOXV5UUE5SWk2cTk5NjZOR0h2dXVESTd3RnV1MlBCMnExS2I1NVF4MFhiOXBjS0hHVEowMXVSc0lWbTRpRnVOU0VuellVbFg5V2Y2alhqTlR3bDd6R1JWQmptNWwvMHQxTWR0akd6RVo3SXlYVDZmNThncHJqSnNwV0MrVGphZ2ZlNHVCSHhMbUVyMHdMN2t0RnlUSWEyYVBaQ0NYR2E5MmxINWsxamN2eU51Q2x3SUlGaXdybFN2bFhkUXVtb2JFdmxGS0RwSkZTZjRqZWt0Nll2MVpYU2hIS04zdHFTSjVDWStEcm84WS8rYU1NTGR0WGpOcmdSeWFOM0NFOEtVdzhLVjltN2UwRTdFUnlkazlSRkFDN3ZCSnBFY1pnenNweVhyUm1tUVkvYWRhNVlZdXVGV2g4NElRcm54MVMzWENocngvNjhoZi8wa2RQNGRLVTRETEU1czJiTjB4TVR1eXRWbXBhdHhsOGM3Vm90YlRYakJIZVZMeXhsNTRtOTB0MVljOC95ay8yaUtVMDJNMHJtSW5RaEYvQ04vWnZRRlJjTUtiWllkSkN0L3k4bWZXbUFoVXJrZGdndnlSQ0ZLVGhkdzE0S0lqUG0xd0tsTFpzZHd1U1N3QlU3c3dyTDdpeEkvdDBCNkNXeWZ6elE0OSsrWTk5YUFvTnBaeER3S3BWcXhaZzhoOGNIUjF2WGlZbFIwK2JGa3dPaWxZRFJBajVNSXoyWUJKSzBpb1I0ZjBWcHdIUm9FeEFqbmE1d2RjSHBNTmIrY2QrUk1McUVZZkhZYkZmRXVhVkRMQ0s2eGMvWWxIdm9NRlp1Sm5aYWVKUGptYWtMaHM1bXE4OGE1RHBaZmlET3dteTE3UEZ1Y2FYYS9DRG05ckcrUGk0WHNneWEvaHJOeVBqQ3VzMnVBVWZ1cys3QWJUSG1aZWZjMlBIRG1JQmxxbGxDbTdGL29jZWF2bENudFo1emtGWXMzYlZFeE1UVTdmeDJHWUtmc1MxR1hjQVF1eS9OUklqdG4wZXMwZTdnZEVhbCtLS01TNXRiczJ3V2lUcUFtdUtGYncxOG1zUkxuZlNmeHA3NVBKZUFpcVo3REYxSDRVUENWYnl1TDJGaVVkM2VZeVh3b0FCakc4Wm1UWE9lMktjNzJ6a2NkNWlpQUxEV3dMZ2JQSUxTSVR4RS9GOWQzMUVkZ0dGT3ZNS0JjQWhWODlrdjNYZ3NZZmU2ME9hMENiM09SQmJ0Mjd0SFo4Yy82VjZ0WG85Vm9ndGdjNWVoVmJza2FOZXp4aHYyM0N4WDQrVXcvVmh0bGhCaTgxZ0NPVDdtdVRtVHh4WlF5dzRNNjRZNGdXa3dodWdmRnNoNFIxYjI4UnRSTXUwQWRQa01jdnNaNFBHckVLRHpId0pINk5OeE9BZE5iQzRtRVpzYXJiM0pobmRSQURVYktqMGZNQ0hZQmlYalRxRkdqRjl6UHkwWVhtcDI0RmRYVFowbWhDdXFkOVc4Q0hNYjhWcTEvditENWtiNENiZ21aZWVjK01uajZBdytmdjNQL2JscG8rQ0JyVFBmdzV2TzJ6YXRHa1ZCcGMySkNid2gvODIvUmQvd3c3UkYyY3l1VVZWblllcTJxR1FTcVVwWGNOeHFVd2hYOWlLRVowSmdvK3ZDVytDdkdMUm1NdmxWdFl6Ymg2OUFqUFY2clZweHhpWW9RZ200Y1BzaUdkNXBSV3UxdHlheVdRM0lLMFcwWHh1bzFLcGpJQUJEeWN1bGdVRDZpMFp5RitaSUU1eTA3c0VmOTJRTjBGSlFVeFhBK0FYZXljY3ZCRHRZbFR6cEJaQWh1Y0RQM0xyWVNGb0JqeE42alVEcG1PS01YMHdwcUNYaXJTR2p6Z0RGR1hGS3RmenZwK1NtK0FicHJrRUdCODh0aitmclc5LzdiSEhFdC8yUzJNV2w1akRIQzQvUUpqT0E3UUlIeGdZMEQ0UG1IVnhxVlJhaVBWNWxsOGdLaFE2MXJxczY4UnNuUzNtaXV1cjlXb0pRcVk3bDgzZVZxM1cvTlFkaTRjQXlZV1VKZE9keVdZNk9mTlQ3ZWRkQ0g3ZmtDK1BuZCsvQ01GcE5wd2RVeVppclZqcGV0LzdRZStBQUsxVTNOa2RMN2p5eUxsUHYvYmx2LzF6NzkwU3M3dldIT1l3aDR2R05kZGMwejB4TWRGSiszaG12Rmc5WC8wVXRJUi9sYy9sK3ZzaEFLZzF0TWMwWVNGb0dRWEFYZDRCeFd5cTdNN3YzdUZjZWVMbmR6N3dWLy9MZTdmRTNFR2dPY3poRGNhTEw3NDR1bnYzN2xPa3c3c09Id04rRjd4N0Z4UUVMRnVxVUJUaXYyYU5JdmkxSU8wZEdlbndUOVdvVmlucklTRG9OS0RwTVNjQTVqQ0h0d0FuVHB4NEJxejduL1VKTnAwZUJJR1I5ZnB1SFU2S1NTY1NSUmFubWNqNHpNZW94dThzK28rOHpJUTVBVENIT2J4RnlHVXluK2RyNWlOR0RvS2dnZUkzQ0NVRlF4QVdpRE01WVovRjg2UVBnaUt1YmZsT2p6a0JNSWM1dkVWWXVuVHBMbkQrc0JnN1VNVGdNYVZtLzBnd3dDOFF2eXhkZ1NEaGd6OGdmaGNRQWNrYk5HMHhKd0RtTUllM0NNOCsreXcvcGZ4c3JPSUhwazR3ZWpUVEo0VkJBMUZ3OEp1SDFBQWdBR3BURTdZM01LY0J6R0VPYjIvVXF0V0JlTFkzaG05azdpU2x0SVdJc080bjQ0dktyam81YVFLZ1VwL3hMdCtjQUpqREhONUMxRE9aNC9Gc0QyWnVReVlRZ29CSUV6ODNyM1YvR1ZvQXpCcVdBSXl2ejgzUGdEa0JNSWM1dklYSTFPdkgwck05bURwSmdjbEZyWVNDSGJ2a3pqOWZBRXJtRDBzQTZBWCtLdTB4SndEbU1JZTNGTFd6c2VwUGlobGJKS0dRcEVhaDRMOHF6VWVNK1FKUTNoSGdHUUFLaGxsZ1RnRE1ZUTV2SWFpbGs5RWJaL2ZBM0duaFFHb2xGS0R1VDQ2NzZzUzRxNHlQK1RNQjNBU2NHWE1DWUE1emVBdkJ1L1d0R0RvYzZ0SEJIcmhiVWhBV2lGTVpHeFZWSVFBYzA4RWZscGJ2QUVoaVRnRE1ZUTV2SmNESWtib2ZVWXRaUDBrUUd5THZybUhtcjQ2YkJsQ2JtdlFDQU9scTdyQy9TbHZNQ1lBNXpPRXRSTGxjUGpFMVZkYlRnYVJ5dWVMS0ZaaWUrUDdBQ3RiNGdYaDBtTHY3cEtBSlNPV3ZsblVud0NHT3ZnZFlkeThjZk9lMXUveGwybUpPQU14aERtOGh3TUREK05XbW5XYnpPaGs3cG1vTlRFL0c5MVFCbzBkMkx5Qm9kNTc1U2JWYS9aREwxVDdsZnZ1M1o5d0puUEdnd0J6bU1JYzNEa3VYTHUzT0ZySjNGcktGRmk4STVBeFBNNzZmSDJ3WmwrblB1c3h5bHdVTEkwNSs4M2FYeVdYR2E1bnNqa0xPZmVPMXh4NDc1NlBPWVE1em1NTWM1akNIT2N4aERuT1l3eHptTUlkLzhIRHUvd2MvL0VmOTEzYkRsZ0FBQUFCSlJVNUVya0pnZ2c9PSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzFfUFJFIiwiRklET18yXzEiXSwiZXh0ZW5zaW9ucyI6WyJ1dm0iLCJjcmVkQmxvYiIsImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJsYXJnZUJsb2JLZXkiLCJtaW5QaW5MZW5ndGgiXSwiYWFndWlkIjoiMzBiNTAzNWVkMjk3NGZmNzAzMGJhZGRjOTZiYTZhOTgiLCJvcHRpb25zIjp7InJrIjp0cnVlLCJjbGllbnRQaW4iOnRydWUsInVwIjp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibGFyZ2VCbG9icyI6dHJ1ZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsImFsd2F5c1V2IjpmYWxzZX0sIm1heE1zZ1NpemUiOjIwNDIsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6OCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjo1MDAsInRyYW5zcG9ydHMiOlsidXNiIiwibmZjIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN31dLCJtYXhTZXJpYWxpemVkTGFyZ2VCbG9iQXJyYXkiOjE5NzgsIm1pblBJTkxlbmd0aCI6NCwibWF4Q3JlZEJsb2JMZW5ndGgiOjY0LCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6MTUsInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjozNjh9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wOC0yNiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ik9uZVNwYW4gRlg3QyIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjUwODI2MDA0IiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDgtMjYiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MX1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0xMC0yMSJ9LHsiYWFpZCI6IjAwMjQjODUwMCIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFpZCI6IjAwMjQjODUwMCIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJHK0RGaW5nZXJwcmludEtleXN0b3JlQW5kcm9pZE0ifSwiZGVzY3JpcHRpb24iOiJHK0QgRmluZ2VycHJpbnRLZXlzdG9yZUFuZHJvaWRNIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoidWFmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6Mn0seyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfZGVyIl0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9kZXIiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJzb2Z0d2FyZSJdLCJhdHRhY2htZW50SGludCI6WyJpbnRlcm5hbCJdLCJ0Y0Rpc3BsYXkiOlsiYW55IiwicHJpdmlsZWdlZF9zb2Z0d2FyZSJdLCJ0Y0Rpc3BsYXlDb250ZW50VHlwZSI6ImltYWdlL3BuZyIsInRjRGlzcGxheVBOR0NoYXJhY3RlcmlzdGljcyI6W3sid2lkdGgiOjU0MCwiaGVpZ2h0Ijo5NjAsImJpdERlcHRoIjoxNiwiY29sb3JUeXBlIjoyLCJjb21wcmVzc2lvbiI6MCwiZmlsdGVyIjowLCJpbnRlcmxhY2UiOjB9XSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUJtRENDQVQwQ0JHUWRQUjB3Q2dZSUtvWkl6ajBFQXdJd1ZqRUxNQWtHQTFVRUJoTUNTVTR4Q3pBSkJnTlZCQWdNQWsxSU1RMHdDd1lEVlFRSERBUlFWVTVGTVFzd0NRWURWUVFLREFKSFJERUxNQWtHQTFVRUN3d0NSRk14RVRBUEJnTlZCQU1NQ0VGVlZFaFNUMDlVTUI0WERUSXpNRE15TkRBMk1ETXdPVm9YRFRRek1ETXlOREEyTURNd09Wb3dWakVMTUFrR0ExVUVCaE1DU1U0eEN6QUpCZ05WQkFnTUFrMUlNUTB3Q3dZRFZRUUhEQVJRVlU1Rk1Rc3dDUVlEVlFRS0RBSkhSREVMTUFrR0ExVUVDd3dDUkZNeEVUQVBCZ05WQkFNTUNFRlZWRWhTVDA5VU1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRVNJcEkvZEtZQ0RZaHp3RDJ3U2ZZQU9iL25OYWlQY1dGMjF2eFprL1RnRDBPSnRjRCtPUG02NG53WmRGV1NFWVNXN2lPcW5wbUp5ZGU4bWdyL3RuQWl6QUtCZ2dxaGtqT1BRUURBZ05KQURCR0FpRUEzYnZoYXpRRlB3bXlYbHhLL3hDWGZoN2cxWDFFb2JMQzNMKzJHT1J4cDdnQ0lRQ2ZORVRYL20yQmViUkxYSTRMTVAxRVFHUFhGRGY3T2s3NFU3eGJpTTRWa0E9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LC85ai80QUFRU2taSlJnQUJBUUFBQVFBQkFBRC8yd0JEQUFNQ0FnTUNBZ01EQXdNRUF3TUVCUWdGQlFRRUJRb0hCd1lJREFvTURBc0tDd3NORGhJUURRNFJEZ3NMRUJZUUVSTVVGUlVWREE4WEdCWVVHQklVRlJULzJ3QkRBUU1FQkFVRUJRa0ZCUWtVRFFzTkZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlQvd2dBUkNBRElBTWdEQVNJQUFoRUJBeEVCLzhRQUhBQUJBQU1BQXdFQkFBQUFBQUFBQUFBQUFBY0lDUVFGQmdJRC84UUFHd0VCQUFJREFRRUFBQUFBQUFBQUFBQUFBQUVEQWdVR0JBZi8yZ0FNQXdFQUFoQURFQUFBQWF5ajZGNXdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRWdkM2VEVDV4TEozNnhGb2M1bDhsR1BTWEtzek5ETTA5TlZkTis4UDhaZExLQkhwaWUrdmhUdW9mTlhOQXZtK015VW1SbjFkUVpnQUhNNGN3MUxpY1AxVkxlUXVqVHpKMmRKTTMzNXBoYWFVamVhYktVUnZkVjdTWjFkVFM2U3VGa3dRL2JIcjc2NXQyRjFtZGs4N05QcUUrU1l5SFIxZ0FMQjE4bHZ5VGVqUFhRcW11Z3NnWWRWVnAxeWFIZlhMVzN2VVFrMnBhSXFkNU1yWXFJUGZqZExObVRZeTIrQ1RveHNiNkl0dFN1NmxBOUJaSEE2cW9BQnlPT05IUDJwUGVuanJzLzhBeG1uY1liTENpYTZ6MHhTbWFadDlIUk1sVVJ2ZEYrcXpvWXVzM2xkS1YxdTZpYW0zdDdQcnRKbjBHZW51L0E5RFdHeHhBQUFldjhneFhLay9PWnFjOUptYktscE16Wkdrek5rYVRNMlJwTndNNkVyaDFqOHcyT0lleUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVAvOFFBS0JBQUFRTURBd1FCQlFFQUFBQUFBQUFBQlFBRUJnSURCeFVYSUFFUUV6WVJFaFl3TkhBMS85b0FDQUVCQUFFRkF2NmJHSVNSbE5ZYkZnVVpTM0ZNbWxQZ3RLVzJiZlNMckUxUFN1VytDMHZCYVhndEx3V2w0TFNjaUdMeWsxaWdPUnBrc1FJeGU5K0dBUW1xVVBHN2UwMHNQbjdZYTNlNWRCdHE5NXhhT1pZSEZBeXhKN2NwQmt4aEhpMjg0dGJ6aTF2T0xUSExRSjNXMWQySDFoNnlzRVdzNWgxeUtFT2JScmNmT2dZaXlCRlNXUXQ0eUtQU0Y3STN2REVudHl5Zjd0d2pjb2ZSaDRDTk41QU1sQUszSXdseTNWWnVjc1ZNT2oyWExMUm1wOUkrMUdKajFkTzBoNWJTSGxBb0NWanA5VFhIaFk5SmRwRHkya1BKeml3NDBiZHNPbWFtNWRaSFlkQjh3NVlZK05lVTQrcnBMdXpiOWJtZS93QVB0alg2dnZWWmYrUHV2bGk0aDBZUzlaZENWTXozYW5Kc2pvcDNQa2kzUGtpeDVOVEI2UktkVG8yRmxHNThrVzU4a1YvSkVoZFdPMkhBbFY0Z3Noa09oS1g4ckYrdHJmalJ5MUl3eDRHMmtReVNSUi9GM1hERW50eXlmN3R3aXNOZlNseUlGTndnK1lTR2lOQTZxdXRkWE9FVEc3RTM3QiszS05MN2UwNnRQY1h4OTVYdENDVzBJSmJRZ2tCZ0F1T1AwYXgwSlBFdG9RUzJoQkxhRUVtT000K3hydFdxTEZzb1ZhaG1VeGxsNldFdnd4NlVrSXpmQzVlR1BLVzhxRE9xZGRHclhScTEwYXRkR3JYUnExMGF0ZEdyWFJxMTBhbk10Q3RLVGVZQjdXazlKSDhrYy8wMy84UUFIUkVBQWdJQ0F3RUFBQUFBQUFBQUFBQUFBQUVSRWdJUUlDRXhVUC9hQUFnQkF3RUJQd0g2eXhrNlJLRjdxVVNoNHp5ZlMxREVtWkVQV0xNdUM5TXRXUlliZ3NodVJlbVhuRk9TcFZpeFkxSlZsV0pRTnp5c1dMRml4WWJuN0gvL3hBQXVFUUFCQXdFRkJnVUZBUUFBQUFBQUFBQUNBQUVEQkFVUkZTRlNFaFFnTVVGUkV5SXlZWUVRSkZCeDhEUC8yZ0FJQVFJQkFUOEIvTFZsZDRQa2o1cjdpcHp6ZFIwbFF4czdpcXIvQUFQOUtPTTVYMlF6VzUxT2xiclVqbnN1b0srV0Y3anpaUm1NZ3NZOHVDVS9DamMreXBZdDZtdUw5dWhGaGE0VnZVR3RsVTFNSlFrekVyT2tHT1YzTjdzbHZjR3RrRW9TK2g3MWFGTXhnOHJjMlZsU3ZlOFh6d1ZZN1VCc3lzczJHWjJmcjlNTG03dC9mQ2tzNldNWE4zYkpRUUZVRnNBc0xtN3QvZkNvYVk2Wm5ZK3FxellJQ2QxWlkzelgrM0RWVTVVc20wUExvb2JVRzY2VmxpY0h1cDdRaGtpSUc2cWhuQ25rY2o3TEU0UGRQYWtIUzlWTlVkV1YzVHNxS20zZVB6YzM0U0ZqYlpKSFpjUlppOXl3a2Rhd2tkYXdrZGF3a2Rhd2tOU2hwSW9QUzJmNWovL0VBRU1RQUFFREFnQUhDd29FQlFVQUFBQUFBQUVDQXdRQUVSQVNFeUV4UVpNRklDSWpNelZSWVpHaDBSUXdNalJTWW5HQndlRkNjN0d5VTNDU3MvQlVjblNDd3YvYUFBZ0JBUUFHUHdMK1p0MkVaS01Ed3BEbm8vTHBvRjlzN29QZTA5NlA5TldZaU1Nam9RMkJYSnA3SzNXSVFrSHlWelY3dUFBZ0VaQmVuNVZ5YWV5dVRUMlZ5YWV5dVRUMlZ5YWV5clB3bzd3OTlvR2xLaWhXNTczUzNuUi9TZnBWcFRlTXlvOEI5dk9oWG1pOUl1bmM1azhNajhaOWtVaGxsdExUU0JaS0Vpd0ZGK1UraU8wUHh1S3RSUzBKRXIzbTI3RHZJcjFLWjJKOGFtdzI0a3BLMzJWTmdxeGJDNCtPQWZrTCttQjZBOUZrT09OV3VwR0xiT0w5UFhYcVV6c1Q0MTZsTTdFK05lcFRPeFBqUVM0WDRuVzYzbTdyMGw2TzhoOXBXaGJhcmluSThscEx6TGdzcENxNEYzSUwyZGx3NnZkUFg1aG1PeU1aMTFZUWtkWnFQQlk5RnBOaWZhT3MwNU1mNFg0VzI5YTFkRkdSTWR4dlpRUFJRT2dEZWo4aGYwd1QvZzMvQUcwNzBQUlhPTFBLTXE5RlkvelhUTTJNZUF2U2s2VW5XRFVpRXUyTW9YYlY3SzlScFRheGlyU2JFSFVkKzB0UXVJN2FuZnA5Y0hrUVBFdzBnVzk0NXo5TUlVQkhzYy9LMW9qYld0RWJhMEpjc001SEpxVHdGM09DVk5paG5JT1ltTGp1V09aSUZhSTIxclJHMnRPdnVDUGlOcEsxV2MxREMvdWNvOFZJUmpwSHZqN2ZwZ25CSXNsMGg0Zk1aKysrL205UGszL29ZTjFjYlRsemhhLzJqekc2UC9IYy9hY081dUwwci9ZckFtMyttUmZ0Ty9qcFViSmtJVXo5UjNnWUVib0pUeE10T2MrK00zNld3aEluaXd6Y2kzNFZ6Z05nMzRWemdOZzM0VUlzMlhsbU1rcFdMazBwei9JWUpjU0hNeVVkR0ppcHlTRHBRRHJGYzREWU4rRmM0RFlOK0ZPTXVUZ3B0eEpTb1pGR2cvTERKM1VXbmltVTVKQjZWSFQzZnJnM1FXazNRMnJKRC9xTEh2dnYyM21sWWpqYWdwS2hxSXFQTmF0ZFlzdFBzcjFpbllVa2NCZWhRMG9WcUlvdHltN3RFOFcrbjBGLzUwYjBma0wrbUNmOEcvN2FkNkF5Z3RSUWVNa3FIQkh3NlRUTU9LbkZaYUZ1czlacCtVU01zUmlNcDZWNnZHaXBSdW81eVQ1ZzQxM0lMdkxORDl3NjZia3hYVXZNTEYwcVRTbW5tMHV0cTBvV0xnMFZDS3FPVC9CY0k3cTB5dHI5cTB5dHI5cTB5dHI5cThzaUYvSzRwVHhpN2o5TURzNlNYOHM1YStJdXd6QzNSMVZwbGJYN1ZwbGJYN1ZwbGJYN1VGZVJtUW9meDFsWGRvcEtHMEpiUW5NRXBGZ0tjbFRIUXl5aldkZlVLeXlydHhtOHpMWHNqcCtQbXNlRTlaQjlObGVkQ3ZsUVRQYlhBZDFtMk9qdXoxZHZkU0llb3ZBR3VjSXUyVFhPRVhiSnJuQ0x0azF6aEYyeWE1d2k3Wk5jNFJkc211Y0l1MlRYT0VYYkpybkNMdGsxZDNkU0lPb09oUjdCUlR1Y3l1YTdxV3ZnSThheTA1N0h0NkxZeklSOEIvTTcvOFFBS0JBQkFBRUJCUWdEQVFFQUFBQUFBQUFBQVJFQUlURkJVV0VRY1lHUm9jSHc4U0F3MGJGdy85b0FDQUVCQUFFL0lmOEFUWWpvNGFEVE0wT01VWTYzdkV0QlpHK2FCRnVEK2hYcTlHNUVDSE5zdTVhQk5QVjY5WHIxZXZWNjlYcGM1WWYyeW1aTzBSWjFUK2lnWjRUZ2hPRG8vVVRCdTZOL04vWEEzMGE0MFNPUVZlcXJBZDIvU29NSGd1ck9teEdFaG5wQ0F1VzM0VVNMcWhsaE1TUGdSbzBicHRzdDNPNlhhYW9iaVZDRUpNaWVZMERFMDNobTBIVTR4ODlkcVhKQlJtRVNEYml1cXkxYnBpd01MdUg5WEFHbDNPVzdjc3Y2NC9aUndWc29TdU9NK1lxZnVlUWZORkNxSnZ3dlU2TFQrMjcrQmhQblprSDNPdzlaOE5oWmVoYVluSkhEYkE1b1BCWG5QeXZPZmxFMkRHOHhGa2FiSG1SR0lHc2pNYTg1K1Y1ejhxL1VQRmdsdzAycE5rWmZKM3o1Tm5IdklDZm1GQjNXNjM3YkRhUE01WWRJMitXeSt0UUZiSnROMXRzV2JjeDZmblBBcFhOT29ManNUQkRCdUJFY1F1ZTBvWUlHRnRvVUoyckJMTWlMUWRobkFwWU1sYWpldTFDaGlGZ1hrSVN6THRTZ0pka3JHN1l3d2c0WjBIek5BdlJpSkhuU2hDQzI2Ny9SR3NjdVhZYzBmcGpUbExNZGh2d2RWdjJVY0lOQnJDY1QrQTR4VmoxbE41am1LMjFhdEVXTWRCZTBLZncyUWxYNkhJT2hlRExSZGJza25EcUt4L0hTaUo5Qlp0UnEweTh4UE5JY0N2U3FlbFU5S29iUU5oSUcreUd6RGRmN0FFR2dWNlZUMHFucFZNTklFanVjU2dERkRnWkFVU1dyYnhZQml1VkxRbG52RWFzZUJoOVMrWVo1aDV0U0dzRGRGTHhzT1hHalU1L0JGbXZQdTllZmQ2OCs3MTU5M3J6N3ZYbjNldlB1OWVmZDY4KzcweWluNjRMV0J1UVIxdHRib045U1U2VkdXQnZ2L3dCTy85b0FEQU1CQUFJQUF3QUFBQkQ3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3NzZvTWpnNHh2UDM3NzZtcHp5eXZ6ZXByNzc3M2o1VC96NWUvejc3NjRwdjhBdnEvNklHKysrK3ZjL3dEL0FQOEF0ZjhBdnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2di94QUFlRVFFQUFnRUZBUUVBQUFBQUFBQUFBQUFCQUJFeEVDQWhVV0ZCVVAvYUFBZ0JBd0VCUHhEOWJNZEJxek1FVU16MmxuMkJoRVJwMkJiVVdDWm5oTEJ4QXB4UEtJbVpRMUQ5MmNSRHhyQVdvQXQwaXdoc2JvRFRIcnBBUmpDaldobTV0R29Nekw5Uy9VdjFMOVMvVVhMOWovL0VBQ2dSQVFBQkFRVUlBd0VCQUFBQUFBQUFBQUVBRVNGQllYSGhJREZSZ1pHaHNkSEI4UEZRRVAvYUFBZ0JBZ0VCUHhEK3NiMzE5dU5ZRG83dFBSRlUwRTg1enZrb2RWdm1ON2U0K0t0SlUrM3c3ekorR0t6VmJHR1JZdFZxVy9URmdZcUJkUDNJQzlVYUZZWFFWRnVaUDFJVW8wY0lYTk45aVk1UURteWxIaCtPbXczQkhpMlhBU3pPeDhmNHUxN2pGSGtGYkY5UitnSVZ0NUZ3OForNHdwZzFHNnZ5RXZCQk9iWkVVYmhlVFlRU2pOeDJxcTRZWm5lVVZkZUpmeXVuMUdzclExQ0Ztc3FGVVVXWm5xZlVhd0JVTGtlNE1KUzRMYmZsalp5Y09CeTg3TDBLamN4cXF3Ynp2YjNtSzZhekZkTlppdW1zeFhUV0ZTMTlDVzNuRzEwNWYyUC94QUFtRUFFQUFRTURCQU1BQXdFQUFBQUFBQUFCRVFBaE1SQkJZU0JSY1lFd3dmQndrYUhSLzlvQUNBRUJBQUUvRVA1TnZjVTRaa2k1K0F0S1EwSHJCWjdxZWVKdm1qaXRBTmVncjlOOVV6R01BanNzYVNHa3hCNk5mcHZxdjAzMVg2YjZyOU45VittK3FQTVVKci9TaXg4K25vZzRvcW1CUGJrc0RHTnNiS1NFL0VTMHhUSEEyRmtTdWdFSVFTV1hoY0FzRldWZlRSMkN0MUZoSzdGVEp0QXBlSFNEQ3pKM2Z1aE1FVEF2SFEwT0xtOWxvMWdESmtlaGd3WU5EK3hFK1dEbEE3MGJwNTdvY0lrbTVrcHQzZnRyQ01JSVJCRVFhUDBLVXdYV1d1a09Ja3ZENEhGZHdkUGdsTDFqQXVKVitZK0NZTEJVL2l3T0FWMnhaZ01oREFNWVBqMUJ0SWdZbHZCS1cveU5GSkJHMnBzbTFEQTlnb3F3aDJHT0FZVDBrSlpHbmlrSncxQjJKd1pCdlJpYmVoQWc3aUoxbHRpa2tpTDhnamthTUJGUS93Qm5md2MrN3JkUGFZc0pKL3ZYUE5sZ2Q4QmhhN1I5c1JKM1ZKSEt4R3VlWkZiMWRERVpzSzJyTHowWkNpbzJrbTc4ZWhDVDRFU3QrK3ZLcUpON3YrazZCTEpUZE9IV2ZoOXZ4M3NiUldlNDlhTk9FUWgrZHVzYU5TMEVJL1FPUm95SVNsM24yaFhkNHVvR0h5cUFRR3VUSmFGR3phN1laTGFZMG1XZnRkdzBsMTF6QmJXVEp2MURzc25Da3BKRWRTSUNKYVdTNDRmSFF5citHVEVudE05OWVNNWRERGNnSDFReEVTNUtDYjJ1Snp1Rk1xU0RTOFNuQ0x3aWxsVEFiQ3JzbzdQTmh5UXZ4dEZCS0JRaG5zTGVHM0pDOVp6OElWM2RCTEtlN1lDQ3ByTFJhdkZtOTNrVEtVZ1hNa0psVjNWWitCKzZzVEZZRFlGYldEZEZBYkFwTUc0bVFiS0JFUkJLNEZudWlFaWVTbUFGZEs4SjRRSFF6WnN6TlZ5eS9CY3NiNkVtbUNQSjhKTWkrWjZHYk5uUE0wK3hjejJGRFVLQmRnQUE0S2thQ2ZPd0M4YUFTdFhxWTZTdDRiTVlveEFTQitKOWd3VEY1aUlXbUF0TVNWRFlvS0ozQ3VkbUozWm9FZUpnYnlZZXo0di9BUDhBL3dEL0FQOEEvd0QvQVBnZ1JMNnhRZWlvYjBSVi9CYjhqc29BM2JFbU1qWXdKVXFDVmorVHYvL1oifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiTk9UX0ZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDQtMTYifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTA0LTE2In0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiNTczNDAyYWU5MDFlMjdjMTE0MzhlYjhhNDRlNzQ2ZWM3MzcyZGVlMyJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyI1NzM0MDJhZTkwMWUyN2MxMTQzOGViOGE0NGU3NDZlYzczNzJkZWUzIl0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJTT0xJRCB3ZWJLZXkifSwiZGVzY3JpcHRpb24iOiJTT0xJRCB3ZWJLZXkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJpc0ZyZXNoVXNlclZlcmlmaWNhdGlvblJlcXVpcmVkIjp0cnVlLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUhiRENDQlZTZ0F3SUJBZ0lJWU9ONmIvYW9HWTh3RFFZSktvWklodmNOQVFFTEJRQXdnWTh4Q3pBSkJnTlZCQVlUQWxwQk1USXdNQVlEVlFRS0RDbE1RVmNnVkhKMWMzUmxaQ0JVYUdseVpDQlFZWEowZVNCVFpYSjJhV05sY3lCUVZGa2dUSFJrTGpFcE1DY0dBMVVFQ3d3Z1RFRlhkSEoxYzNRZ1ZISjFjM1FnVTJWeWRtbGpaWE1nVUhKdmRtbGtaWEl4SVRBZkJnTlZCQU1NR0V4QlYzUnlkWE4wSUZCeWFYWmhkR1VnVW05dmRDQkRRVEFlRncweE9ERXdNVGt4TWpFNU1EVmFGdzB5T0RFd01UWXhNakU1TURWYU1JR1JNUXN3Q1FZRFZRUUdFd0phUVRFeU1EQUdBMVVFQ2d3cFRFRlhJRlJ5ZFhOMFpXUWdWR2hwY21RZ1VHRnlkSGtnVTJWeWRtbGpaWE1nVUZSWklFeDBaQzR4S1RBbkJnTlZCQXNNSUV4QlYzUnlkWE4wSUZSeWRYTjBJRk5sY25acFkyVnpJRkJ5YjNacFpHVnlNU013SVFZRFZRUUREQnBNUVZkMGNuVnpkQ0JRY21sMllYUmxJRUYxZEdnZ1EwRXdNVENDQWlJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dJUEFEQ0NBZ29DZ2dJQkFNWElkMjdJVkR0UHJ1V1Vwbk9aeXJ4OVZQQ3hYUXFPN3NlUG1Qa0t5Q0RtK2ZoUFpJcFdwaTI0NSs5VlJzaHUxS250WTNXWE5pMC93YTF4VllsaGt6M1RXdXdGMGFKS2h5Y1RYRlBnMXBGMGRHeDJ3Y2hhd0hINHRQMzhTbCsyLzhkM256c0hnQ1pITzMxRFlGSG1RMm9VWGdTNktTVUxBQlcwVEo3U2docGdKWWhzU2N4STFiSldIMDJxb1ZQSjV5Sm9EQTc3UG9yYzRweE9MbHRSYUErdzc2K1lrRXpFb2U3KzBsR2g5RlpwVE1BQlR6aVcxWlAvVHlJRHc4RDh5UE4rbmMwUUdqQms0UUVxS1ViU3RhSS8wYTdVK3RMSlFJSHpvbmVITDFnSjJYajloazMzdWY2NEFmeWJZcmx0U3JPR0NxYmx0aW1HUENjcFlyMXBiVmtYTGw5Sm9UU21uVTNtU3lQZWlNdVZwMVRGazdSby9QRHNjYWdFYit1ZTdzYXVFNWhmSVgyRkNvWFByV0lTUkJnQ1VLUE5BNmhSeFhEdEdCakoxWG9rQnNFZWJkREh3b2s3bCtjckkybmN5RU1JMU1BNDQ1UFdEUmt0NHBUNFE1QWVyZnNjNS93OEhGdmNOclYwWFQyQ25jTXU5cEZLVUVZRXRjMlZSN3BvM1RaR002YTFKYkNPa01HLzYzNDAvNnMyU0JCa3NNUW9VVkk5NlJTaTFhZG1hL0FoZW5CRlpXWVNaSGlqZHVFYVBKMWw1eFBZTG1GTnJ2YXJQTEc3eXdKMVg3RUZTUktXQXNuYlRJVlYzdkVoYWozaUgvYW1MN0RVWG1PbEszWUJFc1BDM3gxTEQwWStOUHM5NjNVWUQ5QkxNSEpqR01RMzBEcGRnTUJnOG1kYkFnTUJBQUdqZ2dIR01JSUJ3akFQQmdOVkhSTUJBZjhFQlRBREFRSC9NQjhHQTFVZEl3UVlNQmFBRklEb1VIbm0zZGFqOTJSaFZ2MUhyT0t2Q2RGdU1EWUdDQ3NHQVFVRkJ3RUJCQ293S0RBbUJnZ3JCZ0VGQlFjd0FZWWFhSFIwY0RvdkwyOWpjM0F1YkdGM2RISjFjM1F1WTI4dWVtRXdTQVlEVlIwZ0JFRXdQekE5QmdwZ2hrZ0JodnBzQ2dJQk1DOHdMUVlJS3dZQkJRVUhBZ0VXSVdoMGRIQnpPaTh2YkdGM2RISjFjM1F1WTI4dWVtRXZjbVZ3YjNOcGRHOXllVENCM0FZRFZSMGZCSUhVTUlIUk1JSE9vRFNnTW9Zd2FIUjBjRG92TDJOeWJDNXNZWGQwY25WemRDNWpieTU2WVM5TVZGOVFjbWwyWVhSbFgxSnZiM1JmUTBFdVkzSnNvb0dWcElHU01JR1BNU0V3SHdZRFZRUUREQmhNUVZkMGNuVnpkQ0JRY21sMllYUmxJRkp2YjNRZ1EwRXhNakF3QmdOVkJBb01LVXhCVnlCVWNuVnpkR1ZrSUZSb2FYSmtJRkJoY25SNUlGTmxjblpwWTJWeklGQlVXU0JNZEdRdU1Ta3dKd1lEVlFRTERDQk1RVmQwY25WemRDQlVjblZ6ZENCVFpYSjJhV05sY3lCUWNtOTJhV1JsY2pFTE1Ba0dBMVVFQmhNQ1drRXdIUVlEVlIwT0JCWUVGTVFsNmdPZ2M0VjM0WXNwcFZzVHNvZlRId3pXTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBZ0VBdUNnQndHTE5uK0RxYWJXVFkvZFB4OGZxVEo4RGU5dGc0eXZ5TW9UVHc4T1lFME9pR3FCb0RLRTR3T2FjWUp3YitzcDhvYWJiNFZVNTVGWGpwM21NRnU2c25zbUt3OE9Kelp6V01scEI4L3lrQWE5eEJLQnBkOUFKUVFmS3VDRHJuUmdDSkd6NWpjTWgxM3pvajRjczl4anlBZVRGODFRWG1zNXJDeUdCbmJLYjk5RFdjZnRHKzRuVUxkVkE0M1pIMVlNaFo4TEd4dFVmMWU2WGVhMXRDL0dvTjBsU05lVVJHdU1LbHQwKzkxQWhEbXhvYXdIaVZib1ovRXVHMU9LRDNzNEp6OE1OU1lBUGNGc3NnMjhYSkI5OXZMWnNWenN6Qmw4RjJmTUtnVk9pTDcvQ1F4Ri9RbnVvMXBxWTNqbDV5T3lQZzdnNnBwSUYrRXFHcFBzRE1YQmM4TnA4REJiUkovSGRiUkdDNk9YeVZxcHlZeUkzTWIwUFdNd3c1SGM1ajM2Slloc2FJbWt2YituNS9TZ0kveWF4OG9PTEVWL29nK3BXZjl4ZU5qS3g3TzQvNElhVUI0OFRoU2c5Mk9lUUhCbnJMRFZUeENoeVNFTDlCbWFVbUdQN0JMN25ZbVRrMStvUkdnVGRNTTFvbG9naFNqYzlLenAyV0FaQW9Uc0RJZ1VVZHd4T2xJcWtjMG1JQVJ0SXhDR1MzcWdaeE5TcmJ6cEtaMnBzdTNmQnhTRGxPb0YzeGh4M1JwYTV5amZyVUVvNENnc0NzVUN0eDg1a3dROHNidmd0TExOVWVtbUNybE1vUFdIOWEvU3hCQXpONGlaRktTMmtEN3NGcXhsWGsxNzIrU0hGQXdSMXVJUnRiQTM0MEVnS1cvME9GOVdLb0wwa1F6REtNb1U9Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQVpBQUFBR1FDQU1BQUFDM1ljYitBQUFBYjFCTVZFVUFaZi90N3Y4VWNmOGllZjlBaXYvQTFQOEphdjhBQUdYdjcvOEFHbzR5Z3YvTjIvL242djhBQkd6WTR2OVptZjhBWWZwb29mOEFFWUNseGYrWHZQK0FyLzhBQ25UZzV2OEFYUElBVnVnQU5MVUFUdDI1MFA5enFQOU9rdjhBUHNPTXR2OEFLNmNBSXBvQVJ0Q3Z5djg4MUwvTUFBQVJNMGxFUVZSNDJ1eWQ2M2JxeUE2RVpTQm1Bd0VDa0F1RVcwamUveG5QV1hQZFEyUGNyVlpKN25icjc2d1Y3K0VEdTF5bGxtaGNxbE5GNVNNb1FFb1ZJQVZJcVFLa0FDbFZnQlFncFFxUUFxUlVBVktxQUNsQVNoVWdCVWlwQXFRQUtWV0FGQ0NsQ3BCU0JVZ0JVcW9BS1VCS0ZTQUZTS2tDcEFBcFZZQ1VLa0FLa0ZJRlNBRlNxZ0FwUUVvVklBVklxUUtrVkFGU2dKUXFRQXFRVW9rQ3VYNS9VRHIxc2p1dnN3Ynk5a25KMVhtZUw1QzNIU1ZZMy9Oc2dYeFNrclhQRmNpVkVxMTFua0RtdTFTQmZPY0paRS9KMWlSSElHOHY2UUxaelRNRThrMEoxMWQrUUNZcDg2Q1h0K3lBZkNZTmhNNjVBZm1peEd1ZEY1RDVSK3BBUHZNQ3NxZms2NW9Ua1BWTCtrQSs1aGtCY1NUdjhsZFFWZFBiUC9ENkMxenVKZmY1QUhFa2I3MEkvSGgrb3Y5Q2NQM1lTRjhWSUx2NDcvZnA5aytjMEVEY1M1NXpBZUpJM3VGejhLY3pxMi8veUFFTnhMM2tKQThnYjQ3azNUQStudVB0SDVsV2FDSkhDK21yQU9SOCsvODE0anhqbndlM2YyYUxCdkk4TkxDMDhFRFdqb0I4WW4wODI5cy9NM2hIRTlrYVNGODhFTWZFV2tucDBHT08waGNPeE1sdEIxekJlbkNrN3d4TjVNbVJ2dXZVZ2JpNTdZWDk4U3oxcGU5U1BjMUZBOWtMU042L2ErSG8wQjgwa0lXNjlBVURjWFBiaU0rd2VuWG93cVd2YzhsZDJrRE9vbmNaVjRkZTBFRFVwUzhXeUVUMk9WeHQ5S1d2YzhtUHQ0U0JmRW9yMVpHUWhvNjU1RGxkSUZmcEwzUTFFM3JMakxya09sVWdibTRiNzNhc0pIeVl5RXQrcGdwa0wrOEhWdThEQ2FjeThwTFhOSUc0a3ZlQTBLRVJMemFlZGRGc1pBUUNpYzF0Rzc2d1ErMDB0M0l2dVU4UnlBU1V1bWFlNXVLQTdGRGY1QkhrbDllVk5CY0d4TWx0QjFMM2VqZGFSVXRmelRRWEJXVCtnVk5EcTV6VFhCU1FNL0JEZTlkUGMvV2tMd2pJR3ZwR2ZZSGREdTNUWEJDUWI2am5sSE9haXdGeUJVdFRnelQzb0pUbVFvRE1kK2lYdHk0ME1uNm5BMlNQdGplcWhYNGpvMUthaXdBaW10djY2bEFENmJ0TEJjaFp3U0ozbzlWTUdoa0JRTllxVDl4T05ESytKUUhrVXlkbTFaZStLbW11UEpDcjBsZjNLYzlHUm5FZ2txMktqNnNMall5ZjNRZXlWNU0vRm8yTUE3ajBsUWFpSVhrYjAxeThwZlVLVDNPbGdYd3Iza2RjSFFwL3J1T2xyekNRaWVxVDF1a3FKSGlhdTBHbnVjSkFkcnJmMlpGK2x4WmErc29DK2RLOXE5L3BLalE0bTd2dUxoQkVxMkpnbWp1RS8wVEFqWXlpUVBiYWpsLzFYcXNmVUFDbnVaSkExaS9xTjVCZmp1cXA5UnNaUmROY1NTRGYrZzFUcnM3Q1h4U2I1Z29DbVlCelc2L1hBaUl5U0hQZnVnZ0VuOXQ2dkRnVEVVMlRUbk1KSjNueGJlbXVtNlZ5UUFHYTVvb0JjVTBzK09maW1xOWFQeEZnSTZNWWtMUCtTL09oYVJyZlFmL1o5ZFUxSU5oV1JVKzFvOWZ3Z0d0a2xBS2lsTnMrL0ZBVUd4NXcwbGNJeUZXLzVjQjlZOWE4T2l6TkpaRGtoVHNZcnFlaysvdEVqYVdSQWJMWEgwSXlxeDhCd1RjOG9LUXZZU1F2UE4xMmN3bHRqUWNhUzBNUXlZdnYvOWkwRGFLR3Z3V0JwSzhFa0luK0RlT3VpYVhzRTJERzBoQkM4aDcxN3hkdXZlcmZOYy9kQVBLbEx6b1hkVHNRdk5jTVNYUGpnZWpudG8wbWxuWXdna2h6U1Y3eTRvMkxnOStDQ2JpbGhVaHpvNEVZNUxiTkpwYjJOd09RNWtZRE1jaHR0NzQ3V1BDV2x2eFlHaEtYdkF2OUc0V2RwU1UvbGlZV2lFRnV1L0pmVTRTM3RNVEgwcEN3NU1XL2o4MXFmeUQ0TjFUeHNUUWtMSG54dWUwb1pKTVgzdEtTVG5QamdCamt0aHNLcW8zK0UrMXFCOFFndDIwM3NiUnZvY0pwTG9sS1h2eEQ5SlVDSzdYOWVqRkE1RmFEaUpwWTJqSmNkaXhOQkJDTDNIWkp3YlhVLzBkOTJ3RFo2OSt2RDhTb3RNYlM4SUVZNUxhK0pwYXlwVlZKcHJra0ozbnh1ZTJXV0pYVVdCb1NrN3o0dDJKL0UwdlowcW9FMDF3MkVJUGNka1hNU21uSkNJbEpYcml6T3F1NVFBekcwckRUWENZUWk5eDJST3hLYU1rSUNVbGVmRHEzb1loS1o4a0lDVWxlZ3lNWjNiSzBwTWJTOElCODYwdmVWNG9xdktVbEpIMVpRQXhhRlJkMUhKQmtsb3l3Z096MEplK1NJZ3R2YWNsSVh3NFE1UkV6YkJNcnliRTBsSVRrNVpsWTJqcFFSUG95Z0p6MS8xZTNKRkJwTEJrSkIrSzJLajdwLzU5MjB0SVNhV1NrZU1tTGYxeXVTS1JXK25mV1BSN0lWVjlRem1vWklIVUtZMmxDZ1ZpTW1CbVJVT0V0cmZpeE5CUXJlUTJPam5YWTBvcFBjd09CR0l5WWlUT3h0TDg5MFV0R0tGTHlHaHcvN3JTbEZaM21oZ0V4YUZWYzFKSkE4QW9rdHBFeERJakJpSmtsaVJaZW8wZEtYNHFTdlBoM3JRTUpGOXpTaWt4ektVcnl3bHNWSlV3c2JaOG5ycEV4QklqQmlKa3RpZGRXLzZrM3dRQXhhRldVTWJHMGI3TlJhVzRBRUlQY2RrV0FnZ3VSS09uckQ4UWd0NTNWQ0NENGYzZk1raEhpUzE2RE5YWDNQK0RwYWJrNkhsZkwwOVFQWUtlWGpCRGJ4QnAwd01TcVI4ZWYvN3pxTFg2T28zWXFjRXNySXMzMUJXS1EyN2FaV1BWcGMvYzc4Ync1MWRhV0ZqL05KYTdreGV2NXh5Ylc4UEpBTGIxZmhyYVdGai9OOVFSaU1HTG1vWWsxM0xaOEg2ck4xTlRTWXFlNXhKUzhCaWYzZm50OFhUeCtudFYyWUdkcFZldzBsNWlTVi85czYyK2ZwdWVyM1dKcGFHbHhHeG45Z09qbnRzMG0xaUJBSTIwR2RwWVdjeXdOc1NTdndYeUVmejdKb05lNnhkVE0wbUtPcFNHVzVEV1lJUEwzN1Nyd3EvQzhOTE8wZUdOcGZJQVk1TFpOSnRZcStFNVRIYzBzTFpiMDlRQmlrTnMybVZpY1IxZjFhbVZwc2RKY1lwaFlCb2Rhb3k2OE1ySzBXTkszSFlqQmlKa0dFMnZKVkViVjBzYlNZbzJsYVFWaWtOczJtRmhUdHJSN25ocFpXb3cwbDRKTkxJUHprMy8rTUNQdStZdUJqYVhGU0hQYmdCamt0b0R0aE5YR3lOSUtIMHREb1pJWG45c3VFZTdUMHNUU1lxUzUxTG5jOXI2SkZhc2tHdDQwNFpaVzhGZ2E2bHB1MjJCaVJTdUppNUdsRlpybVV0ZGFGZStiV1BFZFlOWFF5TklLYkdTa2p1VzJEYmVXTFlvMCtodFdoUzRab1k3bHRpdlFENlR4SjdMUy80cGR1VUFNUnN3MG1GZ2k3NklYSTBzcnJKR1J1cFhiM2pleGFwSDd5bnR0WkdrRkxSbWhUdVcyRFNhVzBMdlB5Y2pTQ2twenFVdTViVk1uMWdhS0crOEZoVWhmNmxLcllsTnlJWFRoWjhHVUpmTEp1QTRIWXBEYk5uVmlpZDNscDFaZFdnSFNsem8wWXFZcC9oWnpCNDVXQnc4RHBDOTFaOFJNWXllV21MLzhZOWFsNWQvSVNKMlJ2TTJkV0dKM2xJVlpsNVovbWt1ZGtieU5uVmkxM0RWcXN5NHQ3N0UwNVBrRE1lZ1gvK2ZySzNlUnFkM0J3NVBuVCtRK2tIa0hUbFFnSXJHVDNjRkRSMEx1UW9DczFTWHZnK09FZ2srdnBlSEJ3MXVKOXhJRkJQN1BIYW1jbWwwWkhqeDBucEVoUU42MC83bVBqaE1lY2Q5U3hadUEwMWdhZE10eWZTenNQL2ZoY1VJbElPREg1TkhUejZKT0hFQjRWVHJvdnpJN2VPaHRaMUVYck43SE03RlVIdXJvVnkzdjR6dlVoVERrOFV3c0Zka0xOaVA4SXhIcVFGellNaE5MNDhVUWJHa0Y5TUdUL1VIb3RwbFljdFpKVlJ2TjBnbzRKRTMyTFNldE03SHc1aUxZMGdwcFBDSHpwcXoybVZoNCt4MXNhWVcwWnBINXVKbjJtVmp3Z0Fwc2FRV05vaUhyeGw2UG1Wam9DQmR0YVFXMTk1SjE2N3ZIVEN4MGt3UFlJd29iWjBiR1EvMjhCcnZMK0RhVjRyVWUya0pmN041ZS9QRXB2OEh1MkVZNXNFY1VPQktUYktkaytRMTJoN2FTZ2oyaTBHT0daSG9FMTNld083RFpHbTFwaFI3RUpkUGg0cjZEM1lISEVjQ1dWdkRnOGJaRG45QXhEdjZEM1dFSGR0Q1cxaWgwbUVNYkVIZlFpWnowRFJqc0RqdlNCcmEwdHFGblB0c0hCd0JIQVlVTWRyOG9QVUZrUFNMR2pPdFdJTGdsUjBHRDNXT1BSUytDTGliMW9HUXNRR29mUGdOTGM4TUd1ME1HQjRBdExjNmVoSFlncUVWNW9ZUGRvMzZZZ1p2ZWhEd2l6aEk5ajNsWm9GV1NvZHNKQWNObndKWVdaenFUMTRpL1cwdXJsbERxNGRzSnhjY3pnUzB0M3VoZUh5Q0lzeUtjN1lUU0E4ekFsbFpBYmhzNkpoWndtb3ExblhDbG9SNmtIcFRNOGU5ZVFPVFRYT1oyUXRhbmRHUmRLdnBCeVZ5UTREZlorbGI2MXJGcExuYzdJV05NTEhkdFV1U0RrcnRDeEhNWS8wNDJ6ZVZ2Snd3ZXBIeGlYeXJPMHVJdTJmRUVJcHZteG13bkRCbzFYaTFpcmhUem9PVE80dmRlNkNMYXlCaTFuYkFXR2NZUHRyVEM1cHR3Z0VoT0JvcmRUcmowZk40dUl2Zm9SbGhhL0ZXRzNrdkJCTlBjNk8yRThRdGR3SllXZitPUlB4QTU2U3V4blhCNGFWMTVOSXkvQ3ZkQldmRjNnZ1hzTVJSTGMyWDJEVWN0QlFOYldxRnpGbmxBcEJvWlgwbW8rR3Z6MEpaV3hGN0pFQ0F5MHZkWmNwMXFQWFVYUzA0bEw4Q3l0SUpuOVRLQnlFeTVQcEYwQmE5ZUJaczFVYnVKZzRCSU5ETE9LSzFpV0ZyaDg5NjVRQ1EySlF3VEF4TCtBaHkzM3o0TVNId2o0NWFTcTlBWFlNYk9FRGFRNkcwN1ZaMGVrSHI2VncxdmFuQlREZjl2TDJzZ2tOaEd4aVgxci9aakpKQzRqVzJMSHZMd1hVck1CQkxYeURqdElaRHJHQXNrWm5yc1R3OTVmSTdCUUdJYUdRYzlCREtCQStHUHBYbnRJWS96R0ErRU81Ym11ZTRmajVjM0JTRGNOUGZZd3gvSWZxd0JoRGVXWnRiREgwaW81R1VDNGFXNXB4NytRSzVqSFNDY05MZElYaUFReGxpYTUyRVBnYXpWZ0lTbnVVWHlZb0VFcHJuVm9raGVMSkRRTk5kNW9nK2Z1bG1IeTcrMS9hTTIvLzdIMlg5cjhmNWJMYUp5MjNnZ1lXbnVJVHIxNldKVk1xMktNa0R1cExsVlFHLzE2bGRtRlpuYkNnQUpTWE5mSTNQR0JDb3l0eFVBRXRESTZCNkJ2ZVRHNDBsRzhrWUI4VTl6bDV3WCs3U0tkZDVXR29odm12dVU1UlA5Y1MvTng5d0FpR2VhNno3Umw3bnhlSmFTdkpGQS9NYlNYSmp4U1VKMUZER3g0b0Y0cGJudTBaWFh6SEJVY3BJM0ZvalBXSm9WUDRKUHBVNWlramNXaU1kWUd2ZUovcE1iajRPUWlTVUJwRFhOclVaaG5sZUtkeXhCeVJzUHBHMHN6VGJNRlU2eExvS1NOeDVJeTFpYS9KL29NZWR0SVVBZXA3azllS0t2SkNXdkFKQ0gwdGR0Tk5ua3hvTTdZZ1lINU5GWW1sRk1ZM1lhTlpMSmJTV0JOS2U1bS95ZjZEK3lrbGNFU09PU0VkZmhPZWJHbzVJMHNjU0FOSTJsT1FiM0NpVlhZcm10S0pDR1JzWWVQTkhGSmE4UWtQdlM5NVQvRTExYzhnb0J1WnZtL25qR1Z3bVhZRzRyRE9ST0k2UDdSTSt1MFFRZ2VjV0FPR2x1dmZKdWdVaFdZVVdObUFFRGNTMHRDdStQNzNOdUt3N0VsYjY1TjVwVWNTTm0wRUJjNlp2N0UxMDJ0NVVINHFhNW1UL1JsNks1clR3UVYvcm0zVHJLV2cyaUNzUzF0SEp1SFpYT2JSRkExajE2b291MktxS0FQSkMrMmJXT1Frd3NjU0N1cFpWcjY2aHNxeUlNaUp2bTV0bzZPa05KWG1FZzQvdlNON3RHRTlmSVBvKzdDV1J5ajBkK2pTYUEzQllFNUs3MHphNTFsTDhhUkIrSTI4aVlYK3VvZUtzaUVzZ2RTeXU3UmhPazVKVUhJcjlmcngrNUxRekluYkUwbVFWVDhxMktXQ0JTUzBaNmx0c0NnVXp5YmxjRTViWkFJREpMUnZxVzJ5S0JTQ3daNld5aGNsc2trS0N4TkNXM1ZRQVN2MlNrZjdrdEZJamNmcjJ1MVJNc3Q4VUNpVjB5MHNQY0ZneGtuV2NYMEJacllnR0J4QzBaNmJIa2hRSHhHMHRUY2xzMUlERkxSdm9zZVhGQTVydnNndHlUZ3VURkFXRXZHZWxzSGFDNUxSNElkOGxJdnlVdkVnaHZ5VWhmYzFzRklMd2xJMzNOYlRXQXZPV1U1cTUwSkM4VUNHUEpTSDl6V3hVZ0dhVzU4TnhXQjBnMmFlNUdTL0tDZ1RTT3BTa21saEdRVE5KY3hJZ1pHeUI1U0Y5M3VjTmtuQ3FRTE5MY3BaN2toUVBKSWMzRmpKaXhBcEpCbWp2U01yRjBnS3hUbDc1YmVLdWlMcERVMDF4ZHlhc0JKSEhwZThTM0tpb0RTVHJOcmJSeVcwMGdTYWU1V3JtdEpoQ1BKU01KNWJickRJQzRsbFlxMGxjdnQ5VUZrbW9qWTdWVnkyMTFnYlFzR1NtNXJUb1E5Mnh1RW8yTVIxMFRTeEZJbW1udVRGL3lxZ0VacHloOVQ0cTVyVG9RTjgwZGRiNDBjMXQxSUE4bk1pWlMrM0ZPUUZvbkxYZStkdk9zZ0xST1d1NThYY2Q1QVdtY3lKaElmWTR6QS9KNDBuTDNhNTBkRURmTlRhbk80L3lBVEJMbThmR1dJUkNQSlNPZHJhOXhqa0RTbGI2N2NaWkEvdGZlSGFNQUNNUUFFQ3hEQ2tHdUVMblcvLzlSTEFYQjloSm12ekJOMGlSMVI5OXNDdkx6WkdUWnJtZ0s4blZHdGtEN2FBc1NXWEU5bk5FWEpJNVpqdVRjT29NOEpsbXJFYzFCQkFTSWdBQVJFQ0FDQWtSQUJBU0lnQUFSRUNBQ0FrUkFCQVNJZ0FBUkVDQUNBa1JBQkFTSWdBQVJFQ0FDQWtSQUJBU0lnQUFSRUNBQ0FrUkE5TzRHVjZOSThMakx4dGNBQUFBQVNVVk9SSzVDWUlJPSJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDE5LTA0LTExIiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJTT0xJRCB3ZWJLZXkiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlUyRjExMDAyMDE5MDMxOTAwNCIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4zIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjEifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMTktMDQtMTEifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDE5LTA0LTExIn0seyJhYWlkIjoiMDA0MiMwMDAyIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWlkIjoiMDA0MiMwMDAyIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlNTZW5TdG9uZSBGSURPIFVBRiBBdXRoZW50aWNhdG9yIGZvciBpT1MifSwiZGVzY3JpcHRpb24iOiJTU2VuU3RvbmUgRklETyBVQUYgQXV0aGVudGljYXRvciBmb3IgaU9TIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoidWFmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NmsxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX3N1cnJvZ2F0ZSJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsic29mdHdhcmUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsic29mdHdhcmUiXSwiYXR0YWNobWVudEhpbnQiOlsiaW50ZXJuYWwiXSwidGNEaXNwbGF5IjpbImFueSJdLCJ0Y0Rpc3BsYXlDb250ZW50VHlwZSI6ImltYWdlL3BuZyIsInRjRGlzcGxheVBOR0NoYXJhY3RlcmlzdGljcyI6W3sid2lkdGgiOjIwMCwiaGVpZ2h0Ijo0MDAsImJpdERlcHRoIjoxLCJjb2xvclR5cGUiOjMsImNvbXByZXNzaW9uIjowLCJmaWx0ZXIiOjAsImludGVybGFjZSI6MCwicGx0ZSI6W3siciI6MjE2LCJnIjoyMTYsImIiOjIxNn0seyJyIjoyMDAsImciOjAsImIiOjB9XX0seyJ3aWR0aCI6MzAwLCJoZWlnaHQiOjUwMCwiYml0RGVwdGgiOjgsImNvbG9yVHlwZSI6NiwiY29tcHJlc3Npb24iOjAsImZpbHRlciI6MCwiaW50ZXJsYWNlIjowfV0sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6W10sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUU4QUFBQXZDQVlBQUFDaXdKZmNBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFBN0RBY2R2cUdRQUFBYWhTVVJCVkdoRDdacjVieFJsR01mOUt6VEI4QU0vWUVoRTJXN3BRWmNXS0tCY2xTcEhBVGxFTEFSRTdrTkVDQ0EzRmtXSzBDS0tTQ0ZJc0tCY2dWQ0RXR05FU2RBWWlkd2dnZ0pCaVJpTWhGYy80d3k4ODg0enU5TmRsbkdUZlpKUDJuM25PKys4ODkzM2Z2ZUJCeCtQcUN6SmtUVXZCYkxtcFVEV3ZCVEltcGNDU1p2WExDZFg5UjA1U2sxOWJiNWF0ZjU5OWZHKy9lckE1NDFxNDdhUDFMTFZhOVNJeVZOVWk4SWk4ZDVrR1RzaTMwTkZ2N2FpOW43UVpQTXdiZHlzMmVyVTJYTXFVZHk4K1pjYU5tR2ltRTh5WE4zUlVkM2ExOG5GMGZVbG92WiswQ1R6V3BkMlZqK2VPbTFiRXl5NkR4NGk1cFVNR1d2ZW81MDZxMjI3ZHR1V0JJdWZmcjZvV3BWMEZQTkxob3cxNzUxTm0yMUx2UEgzclZ0V2pmejY2TGZxbDh0WDdGUmw5WUZTWHNtU3NlYjljZU9HYllrN01OVWNHUGc4WnNiTWU5cmZRVWFhVi9KTVg5c3FkekRDU3ZwMGtaSG1UWmc5eDdiTEhjTW5UaGIxNmVKK21WZlFxOHlhVVpRTkc2NGlYWiswL2txNnVPWkZPMFF0YXRkV0tmWG5SUTk5Qmo5MVI1T0lGbms1NGpOMG1rVWlxbE8zWERXK01sKzk4bUtCNnRXN3JXcFpjUGMrMHpnNHRMcllsVWM4NkU2ZUdEaklNdWJWcGN1c2VhcmZnSVlHUms2YnJoWlZyL0pjSHpvb0w3NTUwamVkTEV4b3BXY0FwaTJaVXFodTdKTHZyVnNRVTgxemt6T1BlZW1NUll2VnVRc1g3UGJpRFFZNUp2Wm9uZnRLKzFWWThIOXV0eDUzMGgwb2Iram1SWXFqNm91YVl2RWVuVy9XbFlqcDhjd2JNbTY4MnRQd3FXMVI0dGovMlNIMTNJUkpZbDRtb1p2WHBpU3FEcjdkWHRRSHhhL1BLMy8rQldzSzFkVGdIdTZWOHRRSjNid0Zrd3BGclVPUTUwczFyM2xldm04elpjcTE3K0JCYXc3SzhsRUs1cXprWWVhcms5QThwN1AzR3pESytuZDNEUW93KzZVQzhTVk44Mml1djM4aW03TnRhWHRWMUNWcTZSZ3c0cGtzbWJkaTNidTJEZTdZZmFCQnhjcWZ2cVByVWpGUU5UUTIybGZkVVZWVDY4clRKS0Y1RG5TbVVqZ2RxZzRtU1M5cG1zZkRKUjNHNlRvSDBpVzlhVjdMV0xIWVhLbGxURHQwTFRBdGtZSWFhbXAxUWpWdisrdXlHVXhWZEowRE5WWFNtK2IxcVJ4cGw4NGRkZlgxTHAxTy9kNjl0c29kMHZzNWhHcmU5eHU4bytmcExSMWNHaE5URDZaNTdDOUtNV1hlZkpkT1o5NGJiOW9xZDFST25TN3FJVFR6SGltTXFpdmJPM2cwRGRWeWszV1FCaEJ6dEszNVlLTmRPbmM4TzNhY1M2ZkRaRmdLYVhMc0VKcDVyZHJsaUJxcDg5Y0pjcy9tN1R2czBya2pHZk40YjBrUG9abjNVSnVJT3JuWjIyeVAxZm12VXgrTzVnU3FlYlYxbSt6U3VZTlZocTdUV2JEaUxWdmxqcGxMbG9wNkNMWFArMnF0dkdMSUwvMXZpbUlTZE1CZ3pTb0ZaeXU2VHFkK2p6eGdzUGFWOUJDcWVlL05qWWs2djZsSzljd2lVYy9TVHRmMUhEcE0zYjU5Mnk3aDNUaHg1b3pLNjlITHBZV3VBd2FxUzVjdjI2cTdjZWI4ZWZWWWFSZVAzaUZVOHpqMWtuU3daWEhNbW5DalkwT2dhbG83VVFmU0NNM3FRUXIySC9YRlA3c3NYeDQ1WWw5MUJ5ZUNlcDRtb1pvSCsxZkczeEQ0dFQ3eDhrd3lqOG53YjlldjI2VjBCNmQrN0g0ekt2dWRBSDUzN0ZqcXl6T0hkSm5IRXV6bVhxL1dqeE9idk5NYnY3bmh5d3NYMmFWc1d0QzgrNDhhTGVhcEU3cDV3S1ppMEEyQVFSVjVudlI0RSt1SmMrYjYxa0FwcUlueEJnbWQvNFY1UVAvbXQxOEhEQzdzUkhmdG1ldTVsbWhWMHJuL0FMWDIzMmJxZDRCRm5EeDdWaTFjV1MydWZmMEliQjQ3cWV4eG1VajlRdXRZanVwZDN0WUQ2YWJXQkJNcmgrYXBOYk9Lck5GMSt1Z0NhNHJpWEdmd01QUHRWaWF2aFUzWU1PQUFudVViL1IwN0wweU9TZU9hZEU4OEFwc1hGR2ZmMzB5bmhsSmdNNTFDVTZ2TjlFemducHZIQkZVeWlWcmFlUGl3SjUzREY1WlRabm9tRU5nODVrTlVkMm9KaTJXcHI0T21ta2ZONHg0ekhmaVZGYzhEdjhOenVoTnFPaWRpbEd2QTZER3VlWndPNzhBQVFuNmNpRWs2K3J3NVZjdmp2cU5EWVBPb0lVd2FLU2hyeEF1WExsa0g0YVl1R2ZNWURjMTBXRjVUYTMxaFBKT2ZjVWhyVS9KbElOaTZjNmVsUllkQnBvNisrWWZqeDYxbEdOZlJtNE1ENXJKMWozRm9HSG5qRFNCTmFyWVVnTUx5TXN6S3BiN3RYcG9IZlBzOGgzV3AxTHpOZk5rNTRYeEMxd0RHVW1ZelhZZWZoNnovY0t0Vm00RUJ4YTlWUUdEellyM0xyVU1SakhFS2trN3phRktZUUEyaEdRVTF6Kzg1TkZXcFhEcmt6M3Z4MTBHcXhRNkJ6ZU5ib0JrNW44azRuZWJSaCtrMWhXZnhURjBEMUV5V1VzNW52K2RnUXFLYXh6dUNkRTBpc0hsMDJOUThhaDBtWHIxMkxhM20wZjl3aWs5K3dMTlRNWS84Nk1Qbzh5aTMxT2Z4bVQ2UFdvcUc5K0RadWtZbmE1Nm1TWnQ1V1dTeTVxVkExcndVeUpxWEFsbnpraWFpL2dIU0Q3UmtUeWlob2dBQUFBQkpSVTVFcmtKZ2dnPT0ifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAxOC0wOS0xMyJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMTgtMDktMTMifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyIwNzNjNDMzM2U5NGQ0NDc0YjUzNDc2YmEzYWY0YzlmYjU3ODUyMmM5Il0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjA3M2M0MzMzZTk0ZDQ0NzRiNTM0NzZiYTNhZjRjOWZiNTc4NTIyYzkiXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkNoaXB3b24gQ2xpZmUgS2V5In0sImRlc2NyaXB0aW9uIjoiQ2hpcHdvbiBDbGlmZSBLZXkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MTA1LCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9LHsibWFqb3IiOjEsIm1pbm9yIjoyfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCIsInJlbW90ZV9oYW5kbGUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlCempDQ0FYV2dBd0lCQWdJVUVWMnVZMFYwMWpxYlhQRWpNZll6Q2UrNVZCd3dDZ1lJS29aSXpqMEVBd0l3SURFZU1Cd0dBMVVFQXd3VlEyaHBjSGR2YmlCR1NVUlBNaUJEUVNBd01EQXhNQ0FYRFRJek1ETXdOekF6TVRnd05Gb1lEekl3TnpNd01qSXlNRE14T0RBMFdqQWdNUjR3SEFZRFZRUUREQlZEYUdsd2QyOXVJRVpKUkU4eUlFTkJJREF3TURFd1dUQVRCZ2NxaGtqT1BRSUJCZ2dxaGtqT1BRTUJCd05DQUFTY0kxVGpVTE9VT0xPU3ZKSThpWDdqbGovc2ExZ2lPZEJFcTIwVzZ3a1huenhRSjZLZzFOdW9oc2UraUlTNDBxTUN5eTNBcGFaeHdOUisvMjhWR21Qd280R0tNSUdITUIwR0ExVWREZ1FXQkJRejg5SlFYVHhieWpTbFMzNW1zUEg3YXlpR2V6QkZCZ05WSFNNRVBqQThvU1NrSWpBZ01SNHdIQVlEVlFRRERCVkRhR2x3ZDI5dUlFWkpSRTh5SUVOQklEQXdNREdDRkJGZHJtTkZkTlk2bTF6eEl6SDJNd252dVZRY01BOEdBMVVkRXdRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0VHTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUR3aDhTQXNJdFFLYUt0YTFrdDJidjJwcnZGNVV0V0FrVFYwZWc4a0xmTEtBaUFnZXg5eHBLR0NMUGVpKzhUdUVreHlLUUM5RjY3dDk2SFZ2UVBFK3VVZkJRPT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBVEFBQUFDd0NBSUFBQUFIWHFYSUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFEc01BQUE3REFjZHZxR1FBQUJEdVNVUkJWSGhlN1ozN2J4M2xFWVlUMzJNbnRwTmdURzQ0Y2V6Y25OaEpiTWNYSElKRWdhb3FSZEFpVlJVQ1N0VVdrSG9CVVZWVklZQ1VxcUdrdi9TSGxsWkl0RktMb1ArayszRysxOXZOYTUvanZjenN6cDR6ang2aEpHZDMzdG5kR1U3aU9QYUJiY2R4ek9BTDZUaUc4SVYwSEVQNFFqcU9JWHdoSGNjUXZwQ09Zd2hmU01jeGhDK2s0eGpDRjlKeERPRUw2VGlHOElWMEhFUDRRanFPSVh3aEhjY1F2cENPWXdoZlNNY3hoQytrNHhpaVJ4ZnkydnpSSDMxbjl0M1hGajU2Ky9wN3J5OThlK3NVWG5DY1d1bm1oWnc1TWZiZlB6OVYwZy9lWEVJNXg5R24yeFl5dk4zUlJzbTZ0amlGSk1kUm9Fc1drdGFtR3BIdE9ISTBleUZwUStyeTZ0d2tHbktjY2pSeUlTZVBETkZLR0JIOU9VNVJHcmFRTHo5M2xuYkFvT2pWY2ZMVG1JVjhkdk1remIxeDBiZmo1S0VaQzBtejNpQnhBWTZURGVzTFNmUGRSTC82OUE0dXhuSDJ3KzVDRGczMjBXUTNXbHlWNDNURTZFTFNOSGVIL2xicDdJdkZoYVE1N2pKeGtZNnpGN1lXOHEvdnI5UDRkcVc0V3NmWmhhR0ZwS250Ym4vMXloVmN0dU9rc0xLUU5LKzk0UDFmTCtQaUhXY0hFd3RKazlwVDRoWTRUb3Y2RjVJR05LTTRPU2QvKzJDRDZsZ1F6VGxPN1F0Sm85bkJSNCtONEJ3NUtLSkcwWkRUODlTNWtEU1VlNHBESDJaeDRjcVRteHZGUkltSG9kQmFSQ3VWc0hUeDJNdlBuWDM5aGJrSDc2MVNHNTJkT1RHR0VqMEdUZEdOeFd0NFFacmFGcEtlTkltRFV0emVXS2ViVWw2VVRrRnRWQ3lhRUlVaXBIenRoVGtFZEMvSGp4MmxnZGxUSEMxRVBRdEpUemN0anRoaGZXV1pybDlEaE8xQUxWWG1iMzhpLy8vZDZlT0hLRVhRYzZjT0k2YTdtQmdmcHduWlY1eFptaG9Xa2g1cUlsN2VnUzY0R3BIZGd0cXJSbVNMUWhIaUlxWmJvSkhJSlVxVW9PcUZwR2NaeFdzNzBFVldML3BvUWExV0lJTGxXRnVjb2doeGtkUjhhQklLaUVKRnFYUWg2U2xHOFZvTHVyWjZSVTh0cUdkdGtTb0gxZGNRU1UyR0JxQ3dLRmVJT2hjU3Y5cUNMc21JbHkvTW83L3Q3ZmQvdmtUOXE0cFVJZjcxaHkycXJ5SENtZ2s5K3BLaWFINnFXOGgyRDI5dCtTWmRqS0F6Wjg0Z3BqMGJ0MWJwTEJMSHRhQ3JVQldSUWxCeEpSSFdOT2lKaTRqU09hbG9JZHM5TnJvR0tWRzlLRlF0aUJkYTBMWG9pVHdocUxpZXlHc085S3lsUlBXY1ZMR1FFNGNIOTN4Z2RBSGxSVjFSa3VMcnF5djRKZC9KamlLc09TU1BXRndFNUtHS2hkejl0TXA4cXMxdU4yK3R4cktxeEN6OHBKazdTWlgxUkY0VFNLWklRMlRrUVgwaGR6OG5hcnFNVyt0cnNXWmxoRkQ4cUpsdk9GUmN5ZjYrZzhnelQzcWNORVJNWnFwYnlQaFRhcmVNc1dEMXJGeS9qaDgxY0NlcHNwN0lNdzhObGJpSXlZenVRdExqb1Y0TEc2dFo0TlQwYUhLTmVqNjdlUko1RWxCeEpSRm1tM016ajlOb2lZdWt6Q2d1NVBOUG5Vay9HMnEwc0xHYUhaSVJWQlZoRWxCbFBaRm5HQm90RFpHVUdjV0ZURCtWcTVjdlVhTUZuSnM5RjZ0Wkl4bEJWUkVtQVZWV0VtR0dvUUhURUVtWjBWcklmM3k0bVg0cTFHVUJZeDJiL1BRSEY1SXAxQk5oRWxCbFBaRm5GWm94RGNmR1JoR1dEYTJGVEQ4UGFyR0FzWTVsa2hGVUZXRVNVR1VsRVdZVkdqTU5oNGVIRVpZTmxZWDg3TzQzWDdvbS9wajZLMkNzWTUvMElDcUpKQW1vc3A3SU13bE5tb1pJeW96S1FvYkg4TWZXMXppazVnb1lDemFDOUJUcWlUQUpxTEtTQ0RNSkRadUdTTXFNL0VMR1Q1U0xQNmJtOGhxTE5JajBJQ3FKSkFtb3NwN0lzMGY0QXg2Tm5MaEl5b3o4UWlZUGdEckxhMzkvZjZ6VElBYjZENllIVWNQcDQ0Y1FKZ0VWVnhKaEpxR3BFeGN4bWRGYVNHcXJnTEZhNDBnUG9wSklrb0FxNjRrOGU5RFVpWXVZekFndlpITHJxYTI4eGlJTkpUMklHZzRQU2Y3ZWdZb3JpVEI3cUg2eURqTHlvTEtRMUZaZVk2bm1raDVFSlpFa0FWWFdFM24yb1BFVEZBRjVrRnpJZ3dkUmpkcks1ZURnWUN6U2FHZ1d4VjI5K2dpU0pLRGlTaUxNSkRTRUlxSjBUaVFYTXQ1MGFpdXZzVlRUZVdialpIb1dOVVNTQkZSWlQrVFpnNGF3dkZPUEhFZnBuQWovbGpWQW5lVVNKYm9DbWtWeFQwejVoMXNsb1ZFc0tZcm1SM2docWEyOG9rcTNRT01vTG1Ja29NcDZJczhrTkkyRlJibENHRnBJbE9naWFCYkY5USszaWtNeldVQVVLb3JrUXZiMTlWRnp1VVNWN29MR1VWekVTRUNWOVVTZVZXZ3NzenM1TVk0U0paQmNTT292bHlqUmRkQXNpb3NZSWFpNGtnaXpEYzNudnVLMDB2aENxa1BqS0M1aUpLREtlaUxQUERTbHU5MWN1NFZEaGZDRlZJZG1VVnpFQ0VIRmxVUllvM2o4OU9uMTFaVWJpOWRFZm12YURyR0ZwQVhMSlVwMEx6U080aUpHQXFxc0ovS2NoL0dGckFLYVJYRVJJd1FWVnhKaHpzUDRRbFlFamFPNGlKR0FLdXVKUENlRkwyUkYwQ3lLaXhnaHFMaVNDSE5TeUN6azB0VUYyckhzSHAyY1JKVnVoOFpSWE1SSVFKWDFSSjZ6Zzh4QzBvN2xFaVY2QUpwRmNSRWpCQlZYRW1IT0RyNlFsVUxqS0M1aUpLREtlaUxQYWVFTFdTazBpK0lpUmdncXJpVENuQmEra0ZWRDR5Z3VZaVNneWtwKy9lQU84aHhmeU9xaGNSUVhNUkxjKzhVTktxNGs4aHhmeUZxZ2NSUVhNUkpRWlNVLy8vZ0o1UFU4dnBBMThNVzlMWnBJV1JFandYZnZuS2JpU2lLdjUvR0ZyQWNhUjNFUkl3RlZWbkorUnZFenRodUVMMlE5ZlBYcEhacElXUkVqd2RzL3ZFVEZsVVJlYitNTFdSczBqdUlpUmdLcXJPVG95QUR5ZWhoZnlOcWdjUlFYTVJKODh1NHlGVmNTZVQyTUwyU2QwRGlLaXhnSnFMS1NDSk9EaGszUTZha3BaSWppQzFrbk5JN2lJa1lDN1k4TUp5S3ZORFJtNGlKR212b1g4c3FsaTZqU2s5QTRpb3NZQ2FpeWtnZ3J3ZHpzT1pveERSRW1UZjBMR1VTVm5vVEdVVnpFU0tEOWtlRkU1QlZpWUdDQXBrdERoQ2tnczVBQjZqaVhLTkdyMERpS2k1alNoQ2RGbFpWRVhpSFNjNlVud2hUd2hhd2ZHa2R4RVZPTzgyZlBoaWRGbGZWRWFrN1NRNlVud25Ud2hUUUJqYU80aUNsQjhyQ29zcEpJemNQNjZrclNwS3JJMDhIRVFnWlJwVmVoY1JRWE1VVkpQeW1xckNleU01TnVVaytFcVNHMmtNdExpOVI2TGxHbFYrbnZQMGpqS091WG56eUpwRUxRdzZMaVNpSTdHOVNobnNoVFEyd2hBOVI2TGxHaWg2RnhGQmN4K2FFbkZhVEtlcUtEL2RoYVg2TU9sZXp2NjBPa0dsWVc4Z25wNzVIUU9MNy9yUmthUjFuLy9tR1IvK3ZSWTBxazRrcWlpZjJnM3ZSRW5pWldGaktJS2owTWphTzRpTWtEUGFORXFxd24rbWdQTmFibnphVkZSR29pdVpBQnVvWmNva1FQRS82a1IrTW82OTIzbHBDVURYcEFKQlZYRXEyMElmNWxURFVpVWhteGhiei96bkw0TDExRFhtT3BYb2JHVVZ6RVpJT2VEa21WOVVRM2UwRXRxWXBJWllUZklVdCtHaUdxOURBMGkrSys4ZEk4a3ZhREhzMmVVbkVsMGRBdXFCbFZFYW1QNUVLR2UzZmd3QUc2a3J5aVZnK1Rua1VORWRNUmVpanRwTXA2b3EySG9XWlVSYVErOGd0NWUyT2RMaWFYcU5YRHBBZFJ3eXdmYnFXSDBrRXFyaVRhU2tGdHFJcklTaEJleU04LzN2UTN5ZktrWjFGRHhMU0JIa2RucWJLZWFLN0Yrc295dGFFcVVpdEIrTStRNGNhRmhTei9GN1VvMTZ1a0IxSER1MisyL1hEcnpKblQ5Q3oybFlvcmlmNWFVQU9xam8yT0lyVVM1QmN5NkcrUzVVa0dVVW5FN0lJZVJCYXBzcDVvc1h0L3Z4clFXc2lSNFdHNnNMeWlZcStTVEtHU2I3eTR4NGRiNlJGa2w0b3JpUzViVUFOS2JsYitDV1RDQ3htSTk2NzhtMlFRRlh1VlpCQ1ZSRXdLdXYvWnBjcDZvdEdxRmhKaEZhSzFrSU1EZmI2VEpVbW1VTWxuTms0aXFRWGQrYnhTY1NYUmF3dHFRRU1rVllqOFFnYml2UXNMT1Q4N1MxZVkxMGVuSGtIUjN1UDI4blF5aUVvaUtXU1YrOHVxSUZYV0V4M3JMeVJpcWtWeElZTTk5U2I1NnZmT0p4Y2V2YlB5R0Y0ckNoVVU5L0xzUkF5aWUxNU1LcTVrYkRoQ0RjaUtqR3BSV2NoQXZIYzNMeC92a1oxTXhtVlBjVkIrcUk2R1NKSVlicXFzSnpyV1hFZ0VWSTd1UWdiRFFvcnM1SkhEaDFIYUhqTW5EeWZYMjBFY25STXFJdTdra2FFWVJEZThtRlJjeWRodzRORElDRFVnSlFJcVIyc2hBOG50azlySklFb2JJN25TTE9LY3pORHBHaUxKM3lSM1JPazZxR0loZzJFaFQ1NTRqQzY3bUtodWh2UmxaaGNuWjRQT0ZiZS8vMkFNb2x0ZFRDcXVaR3c0Y09YaVJXcWd2Q2hkQjRvTEdVamZRYWszeWVEd0VINlhWVHZwQzh3clNtU0FUdFFRU2Y0bXVibHhZZTQ4NnRhQjdrSUdrdHYzejN0Ymdqc1pSRURsSkovY21GeGFZV09kTE5DSjRpSkdZcmczYjYxU2NTWFJzZlJDb21oTlZMZVF3ZmpaQXJKZjBCWXhWWkVrcHErcmpMSGF2dEJaR2lLcE9XK1NYOXpiUXNlaU80bUtOYUcra0lIMFRSd2EvR1luKy92NzZTNlVGRWxxakk2T3BvUFNWMVRlV0xNekMrY242U3h4a1NReDNPdkwxNm00a3VoWWJpRlJyajZxV01oQStpWmV2M1FzL2lMZGkvSU9EUTdHeWxLTWpXRVBvL0VYMDljaVphemNHVHBGUXlRMTUwMFM3YmFnQm9xSld2VlIwVUlHMHZmeHl6L2hDMm5UN1pCeW9jVDNuTHc0UDBmVmdyYzMxdU9yNmF1UU5kYnZBQjJ2SVpJa25zdnR0YXRVWEVsMExORXpDdFZLZFFzNU10eXZkeXV6T0Q4N096MDFOVEUrZnZ6WTBTc1hMOUNySFVTWCtpdUJtUGJROFJvaVNlS2hVR1VsUjBjRzBISHBubEdsVnFwYnlBRGR5aUJlcUdvbjgzcGo4VnBzNzhGN0s5UzVrakd1SFhTd2hraVNlQ0pIeGdhcHVKTG91RnpQS0ZFM2xTNWtnRzVsRks4WlcwdjBWTWthSk43NzVVMmt0b0dPMXhCSjVSNUgvTjRRVkZuSjJHMkUyc2d1enErYnFoY3lRSGN6aXRkYTBKMnFYdlJSN1NwRzF4ZW5rTjBHT2w1REpFbTg0Y3pQakZOeEpXTmNnTnJJS0U0MlFBMExHYUM3bVlpWFc5QXRxOERIcGg5Rjl2YjIwK3NucUxjS3pQSUZHc1BHMGxrYUlremlEWWNxSzRtd0Z0UkpGbkdtQWVwWnlBRGQwTFE0b2tWZlh4L2RPM0ducHg1NlU3cjcxaEwxVTVub1lEL29MQTJSSlBHRzg4ekdTU3F1SlBMeTl6eC9maFpuR3FDMmhRelFEU1Z4VUFxNmoyVmNYTGlDb2ltb2dTcjlUNTV2cUVybktva3dpVGNjcXF3a3dscFFQNTNGT1Rhb2N5RURyenpQLzhxZWZPZlZQVFluY0dsK25tNXJCeTlmNlBRTkxTaXhlajk2K3pwYXlReFYwQkJKK1JjU3A2VjQ0NlY1S3E0azhud2hTMEszdFowNHVqUmpod2FvY28yT0h5N3kyVVZVUkVtRVNjdzNWVllTWWR2Ym80Y09VVmZ0eEFsbU1MR1FBYnF6V1J3ZTZzZko3VGsxUGZxWDM2M1JpWFpFbDRXZ1Vob2lLYzlDVG95UDQ1eUgrZjNQRnFtNGtzakwzRE9PTm9PVmhRelFuZTE2Y2RsRm9XcEtJa3hpdnFteWtnamIzbDY0ZklsNjJ5ME90WVNoaFl6US9lMVdjYlhsb0pvYUlpbmJRcTZ0ZlBOTmV6dEF4WlZFV0lhZWNad2x6QzFrZ081dmwzbjc1alN1c3pSVVdVbUVTY3czVlZZU1lmczFqSU9NWVhFaEkzU1h1ME5jbXh4VVgwTWtDYjNoVUhFbEVkYXhaeHhoRExzTEdmanEwenQwbzV2ckV6ZisvMmxBc2xDUWhrZ1NtbThxcmlHUzJqYzhNWDRFUnhqRDlFSkc2RjQzVVZ5SkRwU2xJWkthczVCQmhMWHBHYS9ab3dFTEdhSGIzUlRSdlRJVXFpR1NoT2FiaW11SXBMMGEzbHBmdzJ2MmFNeENSdWltV3hZZFZ3V2xpNHNZdVRjY3FxOGhrbmIxakY4MVNjTVdNa0wzM1pyb3NuS29EWEVSSXpmZlZGOWN4UGhDVnNQeHlXRjZBUFg2OVlNNzZLd21KZzdyL2d0OXhJak9OMFdJaTVoVXovaTVWUnE4a0dub01WUXNtckFCOVNZck1xVG5tMUlFUllBdlpGM1E4OUR6L2p2N2ZGWktqVkNyZ2lKZ2UvdjgyYk95ODAxQmdpS2d0WlA0a1dHNmJTSFQwSU1wNzcvdjUvaFhpL1dpOXhVUEVOQ2E3NzYrUHZ4RUNNb1NFYVY5SVEzeTJkMGNYNXZ3TnorK2l0TWF5OVRSRWJxbzhxTDA5alo5cFFWQkJnZjZLTFNrcU5zRWVtc2hlNXdYbjM2Y0puVmZYMzlocnRpLzJIU0s0UXZwT0lid2hYUWNRL2hDT280aGZDRWR4eEMra0k1akNGOUl4ekdFTDZUakdNSVgwbkVNNFF2cE9JYndoWFFjUS9oQ09vNGhmQ0VkeHhDK2tJNWpDRjlJeHpHRUw2VGpHTUlYMG5FTTRRdnBPSWJ3aFhRY1EvaENPbzRoZkNFZHh4QytrSTVqQ0Y5SXh6R0VMNlRqR01JWDBuRU00UXZwT0lid2hYUWNRL2hDT280aGZDRWR4eEMra0k1akNGOUl4ekdFTDZUam1HRjcrMytxWU1KWnBneDV0Z0FBQUFCSlJVNUVya0pnZ2c9PSJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIzLTA2LTEyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEwNSwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJDaGlwd29uIENsaWZlIEtleSIsImNlcnRpZmljYXRlTnVtYmVyIjoiVTJGMTAwMDIwMjMwNjEyMDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjMtMDYtMTIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MTA1fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTA3LTIzIn0seyJhYWlkIjoiMDAyMiMxMTAwIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWlkIjoiMDAyMiMxMTAwIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ik1vdmVuZGEgRWdvbWV0IEZJRE8gVUFGIGlPUyBUb3VjaCBJRC9GYWNlIElEIEF1dGhlbnRpY2F0b3IifSwiZGVzY3JpcHRpb24iOiJNb3ZlbmRhIEVnb21ldCBGSURPIFVBRiBpT1MgVG91Y2ggSUQvRmFjZSBJRCBBdXRoZW50aWNhdG9yIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoidWFmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9kZXIiXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX3N1cnJvZ2F0ZSJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmYWNlcHJpbnRfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJzb2Z0d2FyZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJzb2Z0d2FyZSJdLCJhdHRhY2htZW50SGludCI6WyJpbnRlcm5hbCJdLCJ0Y0Rpc3BsYXkiOlsiYW55Il0sInRjRGlzcGxheUNvbnRlbnRUeXBlIjoiaW1hZ2UvcG5nIiwidGNEaXNwbGF5UE5HQ2hhcmFjdGVyaXN0aWNzIjpbeyJ3aWR0aCI6NTQwLCJoZWlnaHQiOjg0MCwiYml0RGVwdGgiOjgsImNvbG9yVHlwZSI6MiwiY29tcHJlc3Npb24iOjAsImZpbHRlciI6MCwiaW50ZXJsYWNlIjowfSx7IndpZHRoIjo4MTAsImhlaWdodCI6MTI2MCwiYml0RGVwdGgiOjgsImNvbG9yVHlwZSI6MiwiY29tcHJlc3Npb24iOjAsImZpbHRlciI6MCwiaW50ZXJsYWNlIjowfV0sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6W10sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQU1nQUFBRElDQUlBQUFBaU9qbkpBQUFBQkdkQlRVRUFBTEdQQy94aEJRQUFBQ0JqU0ZKTkFBQjZKZ0FBZ0lRQUFQb0FBQUNBNkFBQWRUQUFBT3BnQUFBNm1BQUFGM0NjdWxFOEFBQUFCbUpMUjBRQS93RC9BUCtndmFlVEFBQUFCM1JKVFVVSDRnTUJEU0kzZjVOOTRBQUFHZUZKUkVGVWVGN3QzWDF3Vk5YZEIvQnp6dDJiZmNsdVNFZ0lFcEpORUNYUUlBUkNVTFErK0ZhbmlwU3FyYmFXY2JSVEhLc3o5bysremZTZnA1M3AwMy9hcHgxbTJtZkdndldscUhXcWRpckZsNktXQ2lLUWhKQUlRaEJJc2trdzcyK2IzYnU3OTU3emUvN1laTjJFN042WHZXZXphODlubk00MG5KdnM3djN1dWVlZWUxNHdBQ0JCc0J2Ukt5QUlWb2hnQ1Z5SVlBbGNpR0FKWEloZ0NWeUlZQWxjaUdBSlhJaGdDVnlJWUFsY2lHQUpYSWhnQ1Z5SVlBbGNpR0FKWEloZ0NWeUlZQWxjaUdBSlhJaGdDVnlJWUFsY2lHQUpYSWhnQ1Z5SVlBbGNpR0FKWEloZ0NWeUlZQWxjaUdBSlhJaGdDVng4SVlJbFZnbklQUTY5QWptUDB0aWhRNkJwOHNhTnBLd01ZYXgzZ0pBTmVSOHNOam9hT1hDQTlmZkhEaDUwYk54WWNNTU4wb29WSWw0TEx1K0RwYlczczhGQnhCanQ2YUc5dmVyUm84NGRPNXkzM29vY2VmL1c4bHArdDdFZ0hJNmRPSUZVRldHTUNFRVlzNkdoeUVzdlJkOTZDMVJWNzJpQm8vd09GcjE0a1Y2NE1PdkNSd2dvU3VUVlY2T3Z2UWFSU09wREJiN3lPVmlNcVMwdE1EVTF0MFdGTVVTamtRTUhJbi81Q3dTREtRNFcrTXJqWUxIQlFiV3RiZjUyT3NaSVZhUC8vS2V5Yng4Ykc1dW5nTUJaSGdkTGpUZmJVOTBBWW93QVloOThvUHpwVDJ4b2FQNHlBamY1R2l3SWhkUVRKNUNtNlJWRWFuTnplTzllMnR1clYxQ3dVNzRHUzd0d2dWNjZaTEMvU2p0MVN0bXpoMTY2cEZkUXNFMStCb3RTdGFrSlFpR0R3VUtFYU9mT2haOStXanQ3VnErb1lJKzhEQlliR05EYTI0Mm1LbzRRMnQwZC91TWYxWk1uOVlvS05zakxZS21uVHJIaFlYUEJRZ2hoekM1ZlZwNTlWdjNvb3kvYWMydEtZWElTcHFiMHltVlAvajMzZ0trcHRha0pVWXFJK1c4RklXeHdNUHpjYys1b3RPRG1tNUVrNlIyUTJ6U05kblZwRnkvU3prN2EzUzJ2WCs5NjRBRXJId3NIK1Jjc3JhT0RkbldacnE0U0NJR0pDZVhQZjRhcEtlZFh2NXEvanhUWjBGRDA3YmRqUjQ1QU1JZzBEUUZnbHdzaUVleng2QjJhRGZuMnNXcWEydFFFNFhCRzMwdU1JUlNLdlBvcUtJcHorM2JzY3VrZGtHTTBUVzF0amZ6OTcvVGlSUVNBTUVhU2hBQllmejhiRzVORXNDeWcvZjNhbVRQV3E2c0VqQ0VTaWJ6eEJrU2pybnZ2eFlXRmVnZmtDdGJmSDMzcnJkaVJJekExRlgvdVB2MFBHRU1veEFJQmFmbnl0TDhnUy9Jc1dGcHJLeHNac1NGWWFPYXh6OXR2UXlqay92YTNjVkdSM2dFTFRWVmpUVTNSL2Z0cFp5ZEM2TW82RzZKUjJ0MHRiOWt5ejdGWmwwL0Jnc2xKNjgzMmVXR01OQzMyd1FlZ0tPNmRPMGxabWQ0QkM0YjE5MGNQSEloOStDR0VRbW5lUGcwRUlCTEpoWXQ3UGdWTE8zZU9kbmZiVTEwbFlJd1lVNDhkUTZycS9zNTNTRVdGM2dGWnAxZFJmUTVqMnRjSHdhQUlsaG1hcGpZM1F5UmlXM1dWREdPMXBRWENZZmNqajBqVjFYcWxzOGRnUlpVQWs1UDA4bVd5WklsZVFlNzBYMnVPb0gxOTJ1blRObGRYeVREV3pwNE5QLzIwMXRHaFZ6UXJWRFYyOUdobzkrN293WU5HNzRJeEJrVmhnWUJldVd3dzhISnpnOXJheXNiR09BWUxJWVF4dlhoUjJidFhQWFZLcnloZnJMOWZlZUVGWmUvZTZRZnR4dDgxWTdTN0crWEFzT3o4Q0JZYkgxZWJtaEJqZWdVelJnZ05CSlJubmxHYm14Zm1zWStGaWlvWnhyU3JpNFZDZXVXNHk0ODJGajE3bHZYMm12amlab0lRTmpRVTNydlhIUW9WM0h5ejZWT2JBYk10cW5sZ3pNYkgyY0FBS1M3V0s4cFhIZ1FMWXJGWVV4T3ZadnU4TUlieGNXWGZQbEFVNXgxM1pPR3hEMFNqNnZIajBUZmZwRjFkQ0tXOTlVc1BZMUFVR2dnNGFtdjFpdkxGL1NQTEhPdnJvMmZQWnFtNlNzQVlnc0hJSzY5QUpPSzg2eTdzZE9vZFlCM3Q2NHZ1MzY4ZU93YUtZajFTQ2FwS0F3SEVtQTIvS2dONUVDejE1RWsyUHA3dFlLSHBiMy9rOWRjaEhIYmRleTkydS9VT01BMmlVZlhZc2VqKy9kTWpwMjJKQXNZc0VJQndHSHU5ZWtVNXl2VmdzYkV4dGJsNXdiNS9HS05ZTFByV1d4QU91eDk4RVB0OGVnZVlZSE5GbFlBeEhSaGdJeU9TQ0ZZYTJ1blR0TGZYK3VjZXY3UExwTGJER0tscTdQMzNVVFRxK3RhM1NHbXAzZ0g2dUZSVUNSaERLRVI3ZXhlMnB6ZW5nd1d4bU5yY2pHSXhpeDg5Z0ZSWkNZcVM2WFByK0V5eUkwZEFVZHdQUDB6S3kvVU9TSWRYUlpVc0ZxTmRYZWltbS9US2NaVFR3V0tCZ0hidW5NVk1BR0NuMDNudnZkanRWcDUvbmcwTVdQdzlTZFRtWmdpSDNZOCtLbFZWNlpXZEI5K0thallhQ0lDaThHZ1hHcFRUd1ZLYm0yRml3bUlnQU1qeTVZNjZPbEpjakoxTzVmbm5hWGQzcHVjU1krM01HV1hQSHRmT25ZNVZxL1JLejVLTmlpb0JZM2I1TWt4T0xtQ3dPTC9ERExEaFlmWGtTZXZkMzRUSW16YkYrd2tkZFhYdVhic2N0YlUyOU4wVG9uVjBSUGJ0Zy9GeHZhTFRJQnFOL2Z2ZjRkLzlMbmJvVU5aNjR5QVlYTmc1dXRsNGs5Wm9aODdReTVjdG5nWUFVbElpTnpRa2Z1QzQ5bHIzcmwyT2RldlNIR1NDMjQwS0N2UUtJWVFRN2VwUzl1NVZubjJXOXZTWWUrcVhDWXdoRXFFTCtqVGEwbW5qRHlJUnRhbkorc05VQU1mYXRYTUc2VXBWVlo3SEhwTTNiVXAxa0ZHeVhMQjVzKzZjQlZDVTZMdnZobmJ2amgwK25MV0s2bk1BdExzYllqRzljcnprYUJ1TGRuZHJIUjBXdjk4QTJPV1NOMjI2OGxFTVdiTEUvZDN2NHNMQzJPSERpRklydjU4eGFmbHkzWnFQZG5WRjkrK1BOVFdoYURUYmtZckRtUFgyUWlpRWpkV3N0bHVJOTZ3TFFHMXBnV0RReW9sSENBRVF2OSt4ZXZXOC8waEtTdHc3ZHpydnZCUEpzcFVHSE1hTytDcTZxVUU0ckx6OGN1eklFZXNkSlhOWWVKMElzYkV4OXRsbmVxVjRzZU50MjQwTkQyc1pOOXZUVEk3QVhxL3J3UWRkOTl5RFhTNXpmd1VBKzN4eVEwUDZ4R05aSmw3djlNU3NEQUVnaExEYmJUcWdNMCtqOWNyeFl2TGxab1hXM2s3NyswMS9sSEVBcEt4TTNyZ3hmU25zY3JudXU4LzFqVy9nd2tJVDJRSncxTmJxOTJqTHNsUlRZL0gxSjJNTU81MEZYLzZ5NjZHSHNOdHQ0blhHYVJydDZrS1U2cFhqSXVmYVdLQW8wODEyYXljR3dGRlhKeG1aRXlITHpydnV3bDZ2OHZMTE1ENXU2TS9Kc3R6WWFHU3FBcW1zeEc0M0tJckZTZ3NBSVNUNS9jNXQyK1F0VzFBa0Vudm5IV3AyYVFhTWFVOFBoTVAyUHVJMEtPZUNSYnU2dERucjFSb0hnRDBldWJIUjZLSU1rbFN3ZFN0Mk9wV1hYbUtEZ3pyWllrenkreDFyMTZZck0wTmF2aHo3ZktBb2VnWG53eGoyZU9UcnIzZHUzeDYvc1FWQ2lOOVBBd0dqN3lzT1l6WTh6SWFISlJFc0JLQTJOVUV3YUtqK3VCS0FWRjF0cms4Y1kzbkxGdVJ5UlY1OGtmYjBwUHU3R01zYk54cDhDSTE5UGxKUllmbzVVcnlpdXZwcTUvYnQ4cVpOaVJzNkxNdVMzNithL1V6aVQ2TjdlcVFWSy9TSzJpKzNnc1VHQjlWVHA4eWRqR1NTSkRjMFdLajU1UTBic051dFBQZGN5dVZHQVBDaVJjazlydWxodDF1cXF0SmFXL1VLSm1FTWU3MEZOOTdvM0xhTlhIWFZuSCtVL1A3NG1oL21QcHhZYktIYTd5YS9CSnlwcDA2Wi9wWW5BSkN5TW9kZXN6MFZ4K3JWbnU5LzM3Rm16Znh0WkFESDZ0WEU3NS9ubjFLUWFtb005czVQVjFUWFh1dDUvSEgzd3c5Zm1TbzBjMjI5OHVjNk1LYWRuUkFPNjVXelh3NEZDOEpodGFYRnlIcTE4d053ckZzbnpYZFdESktxcXoyN2Rza05EZk5reSttVU4yODIxZGtvVlZZYXV1VmtEQmNWT2UrK3UvQUhQNUFiRzVFc3oxc0tGeFdSNWN2MWY5c2NHTFBQUG9PSkNiMXk5c3VoWU5HTEYrbkZpNWFySzF4WWFLTFpuZ0twcUhBLytxaDg0NDN4TVZqVFAyVk1xcXgwMU5XbFBYUXVVbG9xbFplbml3SUF3dGl4Wm8zbmlTZmNEejJVZnZveWRyc2x2OTkwc0JDS043UDBTdGt2WjRMRm1OcmNQTTgyRXdZQlNEVTFqbXV1MFN1bmo1U1ZlUjU1cENDK3pWUDhSQklpTnpTWW5WQ0YzVzVTV1preUNvemg0bUxYamgyZXA1NlM2K3VOZkIrazZtcGtvS2RqRm93aEdsMlFabGF1Tk41WmYzK216ZmJHUnJ1V3VjSkZSZTZkTzNGaFlmVHR0MUUwU2hZdjF1MXhuWWNrU1g3LzUrbE1BRUNFT05hdGMrM1k0ZmpTbDR6Zi8wcCtQL1o0d095OEVnQWFDRUEweW5XaTBaVnlKVmhxV3hzYkdqTDNrU1VBa0tWTDVmcDZ2WEltWUxmYmRmLzkyT09KL3UxdjB1clZ4TkpxWnBMZmo5M3VXY3VHTTBiS3lncnV1TU41MjIxNDBhSzBSODlGU2txa3BVczFzK3NNWUV4N2UyRnE2ajh4V0JBS1piVHdGWUJjWDArV0x0VXJadzUyT2wzYnRwR2lJbEphYXFyWm5rQ1dMY09MRmtGOHdqc0FjamprK25ybjE3L3VXTFhLWERnUVFnaGhqNGY0L2NqOFV2VXdQczR1WHpiWUEyZVhuQWlXZHVHQzlmVnFBYkRYS3pjMFdBeGxlckpjY050dGxzZWQ0c0pDcWFvcXZqZ0FXYnJVK1pXdkZOeHlpNVZlZ3poQ0pMOGZ5Yks1MTVPWUczM2RkWHBGN1pRRHdXSnNlcHNKYThrQWtGYXVsRmF1MUN1WEFXc3ZEQ0ZjVUNCVlZha3RMZkxHamE0ZE96Si9rZFBYVnJPM09KVFM3bTZrYVZsWUt5QWhlMzhwRlhyNXN1bHRKcEk1SFBLbVRicmpPUmVLbzY3T1UxSWliOWxpeXlza1M1ZVM0bUpxZHFRYXhqUStOenFMNjZ4YS9DN2FTR3R0dGJMTlJCd0F1ZW9xZTV2dDluS3NYbDF3KysyMnBBb2hSQW9McGVwcTA3MVpHTFBSMFN6dnJiZkF3WUpnVUcxcHNUNW1DRUJldno0WFZrWk15ZG9YSmhWWkpuNi82VXR6L0dsMGZCMmJiREg1RXUybW5UOXZmYjNhK0hqT3hrYUxoK2NucWFiR3lxQS9WYVU5UGFhUHlzQ0N0ckV5M0dZQ3dISE5OVkpOalY0NVEwWkhSODkxbkFNR3hjWEZwYVdsUlVWRkhwdXVYL2FTS2lwd1VaSHBrVjRZMCs1dVVCUzdMc3E2RmpKWXRLOVArL2hqNi9XTnd5RTNOdG8xMmJlam8rTlh2L3BWSkJLUlpkbmo4VlJYVjIrbzMzRFRUVGRkZmZYVmVvZG1GZmI1cE9YTFdYKy91YzhONHl4dmlMS1F3VkpiVzlub3FMa1BLQ0grWUZodkdwWnhsRkpGVVJSRlFRaU5UNHozOWZVZFAzNzh3SnNIdnZtTmI5NXp6ejNPN0haYnA0RmRMc252VjF0YTlBck9sdlVOVVN4ZGcrd0FrNU5xUzR1NXZyNWtHRHMyYkxCM0x3bU1jZngvQ1NhU0pDR0V1cnU3Ly9CL2YzajF0VmVaNWRmSkFhbXFRdWFESHQ4UVJhK1ViUllzV05xNWN5d1FzRmhkR1p1R1pRb0FVRW9aWTVEVXdpV0VLSXJ5eWl1dm5EWC9JR1dPV0N3Mk5qNDJORFRVMDlNVERBYjFpcWNqMWRRUUl5TzlyaERmRUVXdmxEMFc2RktvcWhsdE0yRndHcFlaZnIvLy92dnVQOWR4N3V6WnM0cWk0Sm5JRWtLR2hvYmVmLy85Tld2V0VFdXZkbUJnNFBEaHcyM3RiVDJCbm9uSkNZZkQ4Y01mL3ZDRzYyL1FPeTRsVWx4TWxpNDEzWXJJN29Zb0N4TXMydHViMFRZVGhxZGhHVmRkWGYza2swOU9UVTBkUEhqdzZUOCtIUXdHY2RMTGEydHZDd2FEaTB5T1IwQUlIZjNvNkRQUFBOUFIwYUZwV3Z3WGVqd2VUYlU2U2hZaE5EUG9UL3ZrRTcyQ2MyVnpReFFyWDhITXFTMHQxcmVaaUsrZVlHd2FsaWtZWTUvUDk3V3ZmVzNyZjIxTnZpQmlqQWNHQmtaSFI5TWNPNjlQUC8xMDkrN2RaODZjQVFCSmt1SVZIZ0NBK2F2WUxJUkkxZFdwQmpHbmxOME5VUllnV0d4OFhEMTVNcE5tdS9GcFdCWTRISTROR3pZVXpCNG5FNDFHaDBlR1V4MHlMd0I0OTkxM0E0R0FORE02RkFCS2lrdldybDI3dUhSeCttTjFFYjhmZXp5bW0xbFozQkJsQVM2RjlPeFoxdGRuc2JveU9RM0xHcC9QSjh1eXFxcUpxeUZqTEJxSnBqOXFqbUF3MkhycTgrbGZBTEIyN2RvbnZ2L0V5cFVyTSs5NmxjckxTV2twblp3MDl6SE9iSWhpZHBpMUJkbXVzU0FXaTUwNFlYcCtYSUw1YVZnTFpXSmlZbUJnSUI1TkFIQzVYQTg4OEVCOWZiM1A1NU1NakhCUER4Y1dTbWtHMUtjeXN5R0tYamtiWkR0WUxCRFFQdm5FWXFvUVFnVUZ5Vk9FYzlsVWFFcE51dWg0dmQ3YVZmWnRRK0p3U0RVMVJxWmd6SkxGSldpeUhTeTFwY1g2ZXJYeDNuWU96WFl1WnRjbUVwRmN0dDdHeGdmOW1hNjBFaHVpY0piVllMR3hNYlcxMWZSbmtSQmZyN2FrUks5Y0xnSms5VjJuUUNvcXJBemNtOWtRUmE5Y3BySWFMTzMwYWRyWFo3bFRsQlFYVzVtRzlRVVZmeHB0K2xzNnN5R0tYcmxNV1RySGxrQTBPcjNOaERVQTBwbzExcVpobWVWd09MQzFpM1ZxOXY5Q3AxT3ljQk16c3lHS1hybE1aUzlZdEt0THM3dzdIQUIydVFvYUc3UFRiQzhxS3BKbmR6OHl4bFN6M1QrejM2aW1hV0c3TDBDUzMyOWx0bUI4UXhUT3NoV3MrSHExWnZ0ZEVnQklaYVcwWm8xZU9YdkUrN0VTL3hkakhJMUcrL3I2MGh4eUphclI1QjcyY0RqYzJkV1pwcndGeE84M3RPN0lGZUlib3VpVnlraVdnc1ZHUnJRTW0rMk5qVm5vMW9zckxpNWV0bXhaY2l3WVk4ZFBISjh3czJ4TC8wQi9aR1lvQWNaWTB6VEY3bk5KU2twSVJZWHBUM1ZtUXhTOWNobkpVckMwTTJmb1o1OVpiN2FYbE1nYk51aVZzNDNYNjEyL2JuM3lUd2doN2UzdEwvejVoYUdoSVNQWFJFVlJQdnp3dzBna2t1Z2c5WHE5L2lyelRhSzBwcGVnTVM4TEc2SllPdE1tUVNTaUhqOXUvUkhWZk50TWNJVXh2dlhXV3l1V1ZTU1A3MU5WOWE5Ly9ldVBmdnlqMy8vKzkxT3AxNWtOQm9QSGpoM2J2WHYzb1VPSEVrK2RFVUszYkwzbEdqc1d3NWtGNCttNTBhWmtaVU9VYkFTTGRuWnE1ODliYmwybDJtYUNxOXJhMnU5OTczdGxaV1dKQ3lMR21GTGEwZEh4cjBQL1N0TU1QL1BKbVYvK3p5L2YyUDlHTkRyOWJMR3dzSEQ3UGRzZmVlUVJIdU9iSld0UG8vbHZpTUkvV0luMWFxMEdTNnF1VHJYTkJEOFk0N3Z1dXV2SFAvcHhaV1hsbkRHbGhKQTBmUWVhT3QyV1NneDAzcnAxNjVOUFBybUV6eWdvc21RSldiellkTEJtTmtUUksyY2Q5MkN4NFdHdHJVMnZWR3J4aGE4c2RERm5iR2hvNkVUVGliR3hzZVFmeGtPV3Boc2RBSUI5UHVJS0FJNGVQZnJtVzI5cWxwZkFUQXQ3UE5aVyt1TzlJUXIzWUdudDdYUmd3SHF6dmJUVWtjVm1lNEtpS0h2Mjdubjk5ZGREb1ZEeTRCbENpTnZ0SmpqbDJ5a3JLOXZVdUdueDRzV0piSTJOamUzYnQrL2pqejlPZFVoR0hBNnB1am9IbjBiemJiallzODFFQnV2VlduYjgrUEgzM25zUEpmV1lBOERLbFN2dnZ2dnUydHJhTkdPVVY2MWE5ZlAvL3ZucDA2ZC8rN3ZmZG5kM3h5K2RJeU1qSHg3OXNMNiszdmIrZDVSWWdpWWNOdGZZMERRYUNDQktUWWZTR0V2bjJ6QjY0WUwyNmFmbTNuQkNZcHVKN0RiYkVVS3Fxbjd3d1FmSmRSVUFWQzZ2L09sUGZ2clF0eDlxMk5nZ3A3NFJreVRKNC9GczNyejV6anZ2VEo1OGNmNzgrUkNmTmcycHFNQVdldmhtbHFEUksyY1J6MkRac2w1dHJYMWptQXlibkp3ODEzRXV1WFpoak4xNDA0M1htVm03YkhYdGFyZmJuYmdnRGc0T0p1NFQ3WVc5WG91RC9vYUcyTEM1OGRiR2NRd1dHeHhVTTFuNEt0NXM5M3IxeXRsdmRHeDBZbUlpT1ZoT3AvUGFhNjlOYzhpVmlvdUxFd1BuTWNhUlNJUXlxNHZxcERYOU5OcnM1enl6SVlwZU9ZczRCa3R0YjJlRGc2YmZjRng4ZDdnRld2aHFjbkl5K1NZT0FHUlpMdktadXpQRlpPNGJ4OGpTUjJIQTlOTm9zNVVXencxUmVBVUxRaUgxeElrTXQ1bXdmYjFhZzhMaE1MMWl5UzdUN1c2VFp6a1RVbFdWbGFYSU1hWmRYWnlhV2J5Q3BWMjRRQzlkc2x4ZDJiTE5oR1g4cWhaTzhLSkZaTmt5MHpVV3hxeS9uOU9HS0h5Q1JlbjBlclZXZ3lXdFdHSExOaE81ZzJ0WXNjZGpaUW5KK05Ob1BzMHNMc0dpQXdPWnJsZTdlYk9WdWoySFVVYWpNUzUzaFhHUzMyOTBzN0VFbmh1aWNBbVcxdGFXMFhxMTVlWHkrbG1qVnZLUngrTnhKUFhBVFUxTm5lODRuNlo4aHF3L2pRNEVnRU0vaVAzQmdxbXA2VzBtckltdlYxdGVybGN1MXhVWEZ5Y0dSMkNNRlVWNS9XK3ZYN3AwU2RPMFROZHVtQTlac29Rc1dXSTZXRE1ib3VpVk04MytZR2tkSGJTejAzSjF4WEdiQ2NQbVhiZkQ3RjJoeitlcnE2dEwvQjVDU0d0cjY4OSs5clBmL085dkxsNjZtUDVZQ3l3L2pZYUpDZGJmcjFmS05MdlBYMks5V3BPbllWb1d0cGt3b0grZ1B4cU5KaWZKNFhENFRHNVZRZ2k1L2ZiYnk4dkxrMGNMZGdlNjMzbm5uYzh1Y3hoV0VOOXN6T3g5Tk1ZUUR2T1lXMkZ6c0doL3YzYm1qTVZVSVlSa3VlRDY2N08yc3UrOFJrWkhqaHcrTXFjZnkrUHhsSmxmbG5MOXV2V1BQZmJZa2lWTGt0Y0tURCtjS3hNV20xbUpEVkZzWmZqNUxtTnNjRkJuYUJnaHNZOCtZaU1qRm9NRmdMMWU3UFBSenM1WmM4QWxpU3hiWm1XZWt4bXhXR3g0ZUxpenMvTWYvL2pIeWRhVHljK1BHV04rdjkvQ3Ftc1k0MjEzYjZ1c3JEejR6NE9uMms2TmpZM0ZZakdYeTVYNW9pRHpJaFVWbjI4MlpoeWZEVkdNQmd0VU5mTGFhMnBycTA3ckp4SXgvWTFKd0JpbXBzSjc5c3pLSlFEMitRcWZlc3F1OWR4VGFXdHIrL1Z2ZmoweU1oSU9oK2NzQ1NsSjB1Ykd6WVdXdWo4d3h2WHI2NjliZTkzNCtQakl5TWpJNkFnQTFQSjVzazY4WHNudk43MUVWSHhEbE9GaGFVR0NoUUFnSEliSlNaMWdtWHBMVjZJVTVpejhHbytwNVh0TXd5TFJ5TWp3aUJKUjVxU0tVcnBtelpxdFc3ZW1PdEFJU1pKS1MwdEw3VjBzRGdDbXBpQjVpZ3JHWlBIaTFBZWtnREdFdzdHalJ4MFRFK2tXQ3dFZ0pTWFNpaFVHNzZzTUJ3c2hoUEgwZjF4ZCtmdDUvMFdFRUVJWTRUbVBqUUdBTVZaVlZiVnIxNjdsV1p3alpCREVZc3FMTDJwdGJaK2ZhWXhCVVF5ZStGa29qYjd6VHV5OTk5SmRiUmh6TkRSNEhuL2NZSnZFVExDKzBBQUJZeXh4QjFkUVVGQlNVdEt3c2VHKysrNWJtNXNMSndGQU1NaEdSdVlteWRyM1VOTWcvZnc4eGxBc1pyeWRJNEkxemVmMWJhamZJRW1TeSsxYVdyNjB1cVo2ZGUxcXY5OWZZUFk1U1RiWmV3MUovM3RNL2lFUnJHbDFkWFcvK01VdkpFbVNKQ21udzVRblJMQ215YktjWmlTN1lKYjVocDRnR0NDQ0pYQWhnaVZ3SVlJbGNDR0NKWEFoZ2lWd0lZSWxjQ0dDSlhBaGdpVndJWUlsY0NHQ0pYQmg1bGtoWTFuWU5Xb3VnQVg0by9rQ1lQcS9MREQ1aHd3SFM1S2srRG8rRnNhUlpRSUF1OTNZN2RZcjk1OEhZK3p4NEtLaUxKMFJ4ckRIWTN6a0REWStlUkpVTlF0RGhPZUJNWmJsTEgxOGVjVEk5QlpiNGNKQ1VsNXU4RVNZQ0pZZ0dHY29mWUpnbGdpV3dJVUlsc0NGQ0piQWhRaVd3SVVJbHNDRkNKYkFoUWlXd0lVSWxzQ0ZDSmJBaFFpV3dJVUlsc0NGQ0piQWhRaVd3SVVJbHNDRkNKYkFoUWlXd0lVSWxzQ0ZDSmJBaFFpV3dJVUlsc0NGQ0piQWhRaVd3SVVJbHNDRkNKYkFoUWlXd0lVSWxzQ0ZDSmJBaFFpV3dJVUlsc0NGQ0piQWhRaVd3SVVJbHNDRkNKYkFoUWlXd0lVSWxzQ0ZDSmJBaFFpV3dJVUlsc0NGQ0piQWhTUHkybXQ2WlFUQk5FZmtsVmYweWdpQ2FRNGtTWHBsQk1FMDBjWVN1QkRCRXJnUXdSSzRFTUVTdUJEQkVyZ1F3Uks0RU1FU3VCREJFcmdRd1JLNEVNRVN1UGgvNVNTaFRuMld4bDhBQUFBbGRFVllkR1JoZEdVNlkzSmxZWFJsQURJd01UZ3RNRE10TURGVU1UTTZNelE2TlRVck1EQTZNREJrRUFUM0FBQUFKWFJGV0hSa1lYUmxPbTF2WkdsbWVRQXlNREU0TFRBekxUQXhWREV6T2pNME9qVTFLekF3T2pBd0ZVMjhTd0FBQUFCSlJVNUVya0pnZ2c9PSJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDE5LTEwLTMwIiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJDbGllbnQvQXV0aGVudGljYXRvciBDb21ibyBDZXJ0aWZpY2F0aW9uIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVQUYxMDAwMjAxOTA1MDYwMDIiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMy42IiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjAuMCJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMTktMTAtMzAifSx7ImFhZ3VpZCI6ImU0MWI0MmEzLTYwYWMtNGFmYi04NzU3LWE5OGYyZDdmNmM5ZiIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiZTQxYjQyYTMtNjBhYy00YWZiLTg3NTctYTk4ZjJkN2Y2YzlmIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlNhZmVLZXkvQ2xhc3NpYyAoRlApIn0sImRlc2NyaXB0aW9uIjoiRGVlcG5ldCBTYWZlS2V5L0NsYXNzaWMgKEZQKSIsImFsdGVybmF0aXZlRGVzY3JpcHRpb25zIjp7ImVuLVVTIjoiRGVlcG5ldCBTYWZlS2V5L0NsYXNzaWMgKEZQKSJ9LCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9LHsibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDblRDQ0FrU2dBd0lCQWdJSWNhRGF1VFI2QUk0d0NnWUlLb1pJemowRUF3SXdnYW94S2pBb0Jna3Foa2lHOXcwQkNRRVdHM04xY0hCdmNuUkFaR1ZsY0c1bGRITmxZM1Z5YVhSNUxtTnZiVEVOTUFzR0ExVUVDd3dFUmtsRVR6RVpNQmNHQTFVRUNnd1FSR1ZsY0c1bGRDQlRaV04xY21sMGVURVFNQTRHQTFVRUJ3d0hSVzVuYkdsemFERVFNQTRHQTFVRUNBd0hSVzVuYkdGdVpERWhNQjhHQTFVRUF3d1labWxrYnk1a1pXVndibVYwYzJWamRYSnBkSGt1WTI5dE1Rc3dDUVlEVlFRR0V3SlZTekFnRncweU5EQXlNamN4TWpFMU5UVmFHQTh5TURjME1ESXlOekV5TVRVMU5Wb3dnYW94S2pBb0Jna3Foa2lHOXcwQkNRRVdHM04xY0hCdmNuUkFaR1ZsY0c1bGRITmxZM1Z5YVhSNUxtTnZiVEVOTUFzR0ExVUVDd3dFUmtsRVR6RVpNQmNHQTFVRUNnd1FSR1ZsY0c1bGRDQlRaV04xY21sMGVURVFNQTRHQTFVRUJ3d0hSVzVuYkdsemFERVFNQTRHQTFVRUNBd0hSVzVuYkdGdVpERWhNQjhHQTFVRUF3d1labWxrYnk1a1pXVndibVYwYzJWamRYSnBkSGt1WTI5dE1Rc3dDUVlEVlFRR0V3SlZTekJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCS2pYYk4ycTBNa1ZzbG82U3pJOGc3OWR3MjAvMysrUVJsclFoTTNodXBwWjVpNUVsU0ZpeXd6V2hwaWc4MUFxMFNJdTJLbWxUWXB0ODZtTEwrZEFaNUdqVURCT01CMEdBMVVkRGdRV0JCUzBHQ3dOTWk2dldhSmxCcnkrZ09uaFlzcnRvREFmQmdOVkhTTUVHREFXZ0JTMEdDd05NaTZ2V2FKbEJyeStnT25oWXNydG9EQU1CZ05WSFJNRUJUQURBUUgvTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUdaY21xbUNoWGkxaEw5ZFoyWHI2TktPM2h5Zk5CbDc1WjJNaXhzOVhUcS9BaUI3NzU5NXZHdTBRcTlIOUFDN2JVWHA0UG0zU0xIdWsra0JZNW52d01UbnlBPT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBTWdBQUFCR0NBTUFBQUMrUENzRUFBQUFqVkJNVkVWSGNFd3lRVTR5UVU0eVFVNWNPRVV5UVU0eVFVNDhQMHd5UVU2VEtqa3lRVTR5UVU0eVFVNHlRVTR5UVU0eVFVNHlRVTR5UVU0eVFVNHlRVTR5UVU0eVFVNHlRVTYvSGk2L0hpNHlRVTR5UVU0eVFVNHlRVTR5UVU3QUhpNi9IaTYvSGk2L0hpNi9IaTR5UVU3QUhpNi9IaTYvSGk2L0hpNi9IaTYvSGk2L0hpNi9IaTYvSGk0eVFVNi9IaTVqdzRSN0FBQUFMWFJTVGxNQXUvUVNCZG5xQ2hvQzRmekFRZmxNSnROZ01uNVdveXVqeW9xVmJiVStIdGdSN0t5dm1ZdHRWOGg3U2J5TFpuUnlBQUFJbkVsRVFWUm8zdTFhaDI3ak9CQ1YxYW5lcldwYmtWdHNLLy8vZWNjbWlsUnhBaHpPR3k5dXNNQTZvamljeCtta0pPbnRLSFlza2NJcWx0NlJRR3IxdmMzOTYvdlFmMHNra3F2MUV3cUQ5OVJKdkFrNWtpR1M2ajFWSWhrS1I2bmU5NXIwRjVCUjlMMzhOd0FKb012b2J5bTU2VWM4TmRCSG1uZkU0WWVlelJHS1duTDZoaUhMREtmQnQvZEs5UjBWSXRzaWVWcHR2S1Z2UTdkSWVmTGZNeHRLOStNeDMvME4wZmI2OWZXVmIzbmFxMjhKWlBzQmtYendkRGh0MzdMU09uL042UE10a2V6ek9aTFRESzZMY21VYS8ycXJhKy9ubktNanRMV1A2VHRxMDZQUXJDZS9FQW5nZjNQVVBxQktGb0JnMG45aDl4Z2xzVExCOEQwUTd4YzJqMVd2TzRrcFhmSUpIU0dPd3d4SUZZYmVyd1VDNVhLbEJWZi8ranJQM2xZVWMvT0xnY2pMUUk3N3BRblo3d1p5K3BqUzRieUk0N2NEMlcrbjFBTHBIWUU4ajh2UU9VelRWTUFhRUFNTkwxYjlBRTlVVjQ4N25nelN1WXY3dWNCMUZRZy96YThjemJLS0xGSVdnQ2grdVFrdFM5dVVyakZyRHJJQ1RlenFvU2xRb2hwU0d1RHpwNlNCODhJbWlhbXdhb29HSS9LbmllZHFSWllxYzY1SW5IRGthc0NKRHBLcndnek1sWTN4SFk4MmpYYVJnZ2tRSTNMa29hZVVPeUZSQnFYRjJrMHJJZUlFT3VZVHhwSlo2Z05YdlNSTEs2Uk4xU09JS1Nyc29WUGRDRnpOUkxNWlZ6clJGQTRYVi9SaUpETDNrbDRMUUlDWmVUd1BLK1ZQQVlUT3VRbEdJSDFmQmh0KzBJazVJSDJoS0NXL3FNWWhjUXVCNnliNEtSQTFvWkxTRXdsZDQ0RlFjVHhMMDRpRU90TlZSQjdJbXFZUm9UWW1CNlJyS0ZPNmVCRndRTFNnRW84UEdtYXpQbEd5YkExY25lQ0hRQ0x5ZmxpbWZsb043dzlBbElaWVZCb29TbHhyM0lFeGNIV2llOWRVVERmRFROQmhocGsxV0ZvZElwQ2JKRTJURFZtZ2c3SWFWWU1OU3NPYlozVmxVaEtybG9mdGNTMk9hNFZuVnBDclVTY0pZbXRuQ2FLbExwMmNyc2pVRm9QTUZvQWt4S1RwZnNWWTZ5V1poMzhQMXEzV2FFMGQ3WlNxeHRSekN0OGdqb28zd0l2d0lKNG53MDNReXdCRkphVW0wdEtOYy9CRXloVmdwUThnczZkUkM5UjRFVmEyS3hrUEJJc2tSNlA5SXNaV3dDQVdiR3ZVY2hTSDJzRTRTTGJad2RIQW9LNWorWHhZN1IyeVY3VXRYQklBdkVxR2hRUFBnU2g0WTdNeHJBWWhCNlFjK1JCeEVUTTdHaFFwYzBFNlFNSnE1Z2lFSDR3OEpnUUZNcnFhNU1wc0pwYkdTOFZ6WGJwejN3QnhtVWtNVkk5QU1GOWhNTExwdnFlZTRLSzBBU0RyWUNCMng2VXpZakVKQnlUaGpIc1UxcGVaNXFoS01vYnNHeUJZZHhzK3orR3RKVUF3eXNJMFJzSlBrQmxnZTBpNEVRTS9xVWNnNld5WlJtVkF0R0JpRktTVHc2K1ZQTmVTb2Y0R1NEZlpIcm9TQVJKaEkzQTRLcEFpUW9XS0UvSkRGdU9FZ2VqQlRQR2h3b0R3TjB5R013QlJzVFFheDNTRHVOclZENEE0ZzlGUEdoaWZiZENjTklVbGhDbVZERWdvMUIxWXpkaDhDSkJvRVloUkxIUDlDWkJpWGlFbTdGRzFDc1RVdmdQaUdMTWdyek1ndkR5QUFRRnIyL05qSU80eklOcG1TcFZCM2FDWURhVS9BeUtjYll3YXdXOHRjSTErQ0VUMFN4eHpDWkNTcEd0alF1b1FmZDJsSVFxa0VFeHJqRXd6SUtOR2lOdkwvakxYYjRBMExOYUlFYzlua2JoYmFpZnc0dmJLUFJFWFR3ZUs5U0ZYUE5NSU9jT0pWbEwzY3lBazVmRzlEVFpVTHZ4YXdWcTd0bmE3Yldveng4UDVCMGY1WnhxWkpXQ2h1SDNldWVLY3kwZDFrcFRJQkZLSDFZdno3RldNTkJKVVV5RklKSGltRWNuMzFnOEhRVFlQc05La0J1QVRDVm1UTDFHMFlLRkRwc0txNjBBc3ZzZlFHYytuR2lFN2x4bnJ4clA2aVFPUjIzSW5WZjFRTk9KU3ZlRTdTemN4eGx3dDF4d1NvL1o1SUgzSDNCMGZsVkgzZjZvUmFWTENZcTZESjBZVFNaZUtyVDZrNHlydGxxZ2ZnNUwwTnE3SzJsQ0xWajZrakIvS2Z6alQ3ZXhDNkV2dGlpSUpjTUsyYStsYmpVZ21Mc3E4YWpBQ05jNjhvUmdtdTFxNEsyY1pLc2w2T214bHpNQkhEUkx1ZEp3a2lWbGoxZXRaR3FEaE1zVEZGL0VsQWpsTTNFQXg0NmhEZnlaQTZFdWRDUGRqSk0wMWl2UkVJM2FYSkNhcitHSG5SYmhtT3UzWG1QSDBlcGZVaXk0ZjBMcEExa0lMKzFwSHhVQitCUUtIdG94NlNJWkhoNlBLZzExcHFPbWtId3ZITWw3SFZaSlZoTHJZbHE5b0JMMk1yU0tkY3gyY05HYmxSTGVvazFpb2NPUW80b0FndTdERmVrRlBCdHRQcDNWSzRZOGFDV3RMK0tMS2xWYUFqRGNBN3RLUkJweWFxbUkvdndZRTlyZmppWVlXMFVER0VwTlNoeHdVdVhQSHBCTlVPbi9Ba3BpY3MydW1YM0N6QXNHUVpDSEMxaDZua1JuWGNneWFJTzdrWjBBa3c4OHMyYk05dmNCdHZWczFpSmdobWxHbndXRmIxZ3Z4aUE2b2Nlbm9zbTE3c3RYVXdYQjJTWUhBeUZEb2tLdXNaZjQ0eXlnM1RkTUpFZDJJTXJRZWV3aml4TUh5RUs3Q3EyN1NGV0ZZcm5idXF1bW1xUjhQUnFNaUFtUG1NTXpZUjU4WUtBdTljZ0JucG01Z1RQSUlya2NVTk0wMVZYRXRTTFAxeFlmQW1ITmxscWdvaXZHekM3ckY4ZTlla0phQXZPQTI4YitrL3h5STlEK1Fmd0dFMlNRQXZOK3g1K1QvOFMzT05lbUlDZ0I5T25uM2xVRDJ0enkva0w3b2RzenovRTRkRmwzNWt3dXo3UW45ZHo5ai8xVXZwOVBwUWk3Uzl1UUxrLzBweitITUcyS3lRKytxdDh2cmZhUTludTczS3dhaUh2UGRia2RrYk0rUEMzemVvdCs3QTVMMzhvbi9NQjZuN2YyUlkxRDdBLzZZcWQzdGJvZnJib3VFYng5bklOMFB1OWRyWkRzdXFoN0hLK1FiOXhITUJNZ05hdWV3NTRCQXVoNWFHcWgyaDEzN3VMemVSMEI3UE43YkFjaHB1OTNpdlc0L2I5STZFT04yUkwrQkNJUzZ6VGtubzYvV0NOamZIbzg3SUVBT3gyTk96UDV3WFFYeWVYNDhpTHFXZ0VqN3o4UHVqMFF0QU5vYmxoU1psdEdTaStUMnNLNlIwKzd5aVVWZDFJZ2tuWS9xSHdxL1VPenJ4RWZBK1hPODRTZnFPZVdBK1VoK0Fxc2FnVURBaTRIZ00vWHQ1YjZqVXZOUmEzOThYSFk3SExXQWV2NjhiNmtXTUJCd0pjNis1WURzL3h3UWNwV0Ywc2labUR6Skk5UTUyaXZNRGpleXp5M01IV2NxczNxK2NnbGtDRzI3MDZpUjYrMmxRTHh5cktPWEsxeVVxOGRzTHVSN01DUndNQzlZdWNUL0NpQk45SjRmc003NnRPRDFhLzREc2dXOUdWb0RRb0lBQUFBQVNVVk9SSzVDWUlJPSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzEiLCJGSURPXzJfMV9QUkUiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkQmxvYiIsImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJsYXJnZUJsb2JLZXkiLCJtaW5QaW5MZW5ndGgiXSwiYWFndWlkIjoiZTQxYjQyYTM2MGFjNGFmYjg3NTdhOThmMmQ3ZjZjOWYiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjp0cnVlLCJ1cCI6dHJ1ZSwidXYiOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJub01jR2FQZXJtaXNzaW9uc1dpdGhDbGllbnRQaW4iOmZhbHNlLCJsYXJnZUJsb2JzIjp0cnVlLCJiaW9FbnJvbGwiOnRydWUsInVzZXJWZXJpZmljYXRpb25NZ210UHJldmlldyI6dHJ1ZSwidXZCaW9FbnJvbGwiOnRydWUsImF1dGhuckNmZyI6dHJ1ZSwidXZBY2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOnRydWUsImFsd2F5c1V2IjpmYWxzZX0sIm1heE1zZ1NpemUiOjIwNDgsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6MTAsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6OTYsInRyYW5zcG9ydHMiOlsidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN31dfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTAyLTI1In1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wMi0yNSJ9LHsiYWFndWlkIjoiYzg5ZTZhMzgtNmMwMC01NDI2LTVhYTUtYzljYmY0OGYwMzgyIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiJjODllNmEzOC02YzAwLTU0MjYtNWFhNS1jOWNiZjQ4ZjAzODIiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiQUNTIEZJRE8gQXV0aGVudGljYXRvciBORkMifSwiZGVzY3JpcHRpb24iOiJBQ1MgRklETyBBdXRoZW50aWNhdG9yIE5GQyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxMDAwMCwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9LHsibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MTAsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQ2Z6Q0NBaVdnQXdJQkFnSUZFSVpBQjNNd0NnWUlLb1pJemowRUF3SXdkVEVMTUFrR0ExVUVCaE1DU0VzeEVqQVFCZ05WQkFnTUNVaHZibWNnUzI5dVp6RVNNQkFHQTFVRUJ3d0pTRzl1WnlCTGIyNW5NU013SVFZRFZRUUtEQnBCWkhaaGJtTmxaQ0JEWVhKa0lGTjVjM1JsYlhNZ1RIUmtMakVaTUJjR0ExVUVBd3dRUVVOVElFWkpSRThnVW05dmRDQkRRVEFlRncweU5ERXdNRE13TmpRMk16WmFGdzB6TkRFd01ETXdOalEyTXpaYU1JR0NNUXN3Q1FZRFZRUUdFd0pJU3pFak1DRUdBMVVFQ2d3YVFXUjJZVzVqWldRZ1EyRnlaQ0JUZVhOMFpXMXpJRXgwWkM0eElqQWdCZ05WQkFzTUdVRjFkR2hsYm5ScFkyRjBiM0lnUVhSMFpYTjBZWFJwYjI0eEtqQW9CZ05WQkFNTUlVRkRVeUJCUmtRd015QkJkSFJsYzNSaGRHbHZiaUJEWlhKMGFXWnBZMkYwWlRCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQkdzZU5heUlPVjRtZnFUM1FTb0w0eFdDYUdMY2lLQTBvQWNpaWgxdUhqVDZvV0NNN3gvQVFjSGpiQmhkR25lNTJKcWk5OVllM2Fxa3ErTGtkdlAvTS9XamdaTXdnWkF3Q1FZRFZSMFRCQUl3QURBTEJnTlZIUThFQkFNQ0JzQXdFd1lMS3dZQkJBR0M1UndDQVFFRUJBTUNCREF3SVFZTEt3WUJCQUdDNVJ3QkFRUUVFZ1FReUo1cU9Hd0FWQ1phcGNuTDlJOERnakFkQmdOVkhRNEVGZ1FVRzZ6QjRTWDlSRlgwU3ZOeUFIelR2S1poR1NVd0h3WURWUjBqQkJnd0ZvQVU1MEdxNlhVcmVMSW5lMVkzelNDeUI2MjlqNkF3Q2dZSUtvWkl6ajBFQXdJRFNBQXdSUUloQUltNzhHQzd4bDBWSXZRamg3RTQrQUlIMFB3NDI0b2R1VVVnZHdXb25HNDBBaUF4MVg2WG1YQnI1YjFqbXBDWWN2TE1mZEg5T2JQM0VrbElYVTlGSGdMb3NBPT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBREFBQUFBd0NBWUFBQUJYQXZtSEFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFEc1FBQUE3RUFaVXJEaHNBQUFpY1NVUkJWR2hEMVpqUGk1VlZHTWY5QzlvYjZESm9JUWkxaURCd0k1UWdFVUVsdEJKMFlTQUdFdVJDRkJNeElrbENheUZJUWlhS0JaVW9sWTdRTkpNNjNuR2FjYTZqNDB3MDA0ekJNQk82TEU3bjg5ejdQZk84NXozdnRkcTUrSEx1ZlgrYzgvays1em5QT2ZldStQdXZ2OExqTERQUUdoNE83Zkh4MEdvTnA4OVZ0YTJkbkp5c2FYcDZLbWx1Ymo2MTB2ejhYRmhZV0NocWNXblJ0TFM0RkI0K2ZCZ2VQSHhnNHJNWGpMNlZEaDQ4MkRYUUJVOUdZanZlYmljMXdRdTRCQSs0UHMvT3pqYkNtd0ZuNHI4b0dSQjBKOW9kSmZoMkhYNHFnaUlQN3dVODBLWG9lM0NEZndSNEhuV0ptZXBwb0tOMkRYNTZxcHd5dEFEUHozVWkzd3NlNlA4TDdsVXhrQ3NIUjNuVUJjMW5xUVR1NGIySkV0Uy9rUUpRTnhEVGhiUXB3UU5INitIVkNwcnZ0TXhDRGsrZUx5NVZvWHVaS00yQW5pOGFhTXAzZzQ1cFkyMEdqNEJWdnVmUjk5R1dQRWhKdlZMSDkwTXdzaG5vSFhrQmUzZ3ZENTdETTFndmFOUUxIRlhoRjIyTVpDQ0hSb0I2QVZtQ3o5TkZzdExZTlZDQ3lhK1ZwT2NFVG45K2pFWURPVGlMOTkrQ2w5SUc1WENLZUsvSVYvcm85dXZIS2hwUW1RU3lHSEdYNTdNLy9CQm1QdnNzM051MUs5emJ2RG5jV2JldXByc3Z2SkEwOGVKTFlXYjM3dkQ3b1VOaDRjS0Y4T2ZNVEJHNkJPL0JwWm9CYlZDK1hHcHhvdGxyMThMMC92MEdNdnJFRTJGMHhZb3crdVNUQmpyNjhzdGhkUHYycEYvMnZ4ZHVmZnh4NVJvYWYrNjVNUGIwMDUxM285cXJWNXY1KzZkT21TRVBMZkNTQVFwSHhRRFJWVnVKZUV5Vlg4K2VUZEMwZC9ic0NhMVBQN1VqU0g5L3Y3V3FaRDRJRERJM1R3cE9tK2lQNjlybGh6Ny9QQXp2M2RzeEh3T0JvZWszM3d6M3YvMjJZcUFFVDFzeDROT0dCeERndDU5L1B0eDk0L1V3OGNreGd4dzhjc1FpT2ZMc001WTY5Ni8wZFFhTFVmTXA0TVVZWEtmTjc1SFhqQVVEaHE2Kytxb0Y2dGFxVldFbXpxQ2dsYnEwQklWM2tnR0Iwd3JlOGpvSzZOWTMzNFNibXpaWng3ZlhyQWwzUHZnZ1RBeGR0M3NNVEtlYStnNVUzWVNYRE9tNzNrVkFEcmRhWVhqclZodVBsSnNmR3JMclloTm5NcEJISDBCZXV2WGRkK0hXSzYvWTFKTG5ZeWRPZEUrdUxYdWVUajJJNUFFVmRWM3o5Mmh6MGFjMEV0TnpaUDE2TXdJVDF4Z1hrWXFWR1pBd3dJTzI2Q0k0RVNEZkJ3WUhESno3eWs4R0ZBaXRwTzhlTnIvdnhYaE4rUTdUelpnSnNJd2RPSkJtQUJVTkxJNk5wUVU3L3U2N3RraEpGYnNYQjFHTkoyMm0zM2tubFVoS284b2lmZDZQcGxWYUtaMUxzVjhCczBoL2pRSFNQY2JNd2VsZllteXFtaTN5ano2eTcyUkx4UUFQOHFLVnVGZ1JicDQrSFFaajFNbHhyaWY0S0VCWkMzVG94VFVBUy9jSUNBc2VVN1Y3VVVvUndWc2JLeUJzQXJhc2lQMndSdGl2S2daNG9iMWxpejB3MU5kbnVjNTFIM1hnaVRDUjE4QTNObTRNd3c2SzZxVFByYlZyTy9kaW4zYXRXeXJUUFJhcXJzVm5WQkM4WkNDWmlNOFB2dldXUFpzTUFNOG1SVWZ0a3ljdDhsd1R2RGVCQWFhZnRVRkVXQmQwWnVhN2NHamtxYWZTL3NDMG16RUhhOFVnaXBuR0NDSmRjK0M4dFQwb211ZmRpZ0dtbHR4WEo4dmduZE9rRnFEMDI4eHZkdnhtVVpWU0NtRGdGN3Q1VDU4VUE5Mm41ak11NGg3UGFxMTVDWjZxUTZBbXZ6aGw3OE5aTVVCMFdPVTJxSXU0b3A2TFJjbXVtZElqVXpMUVBVcWpoUWpobjJlOUViVGZ2L3FxQ0M3eEhYaGFNb1IzTDEyNmxCbUlGNGtRRC9sMFVkN244RTNnRXRPTUFmcTJXY1JBL013QjBLOEZpVVVzZU9UQlUvU2pPQkh3L3ZuejU1Y05BRXduMTQ4ZXM1UXd5SWJJODd4Rm5vRXh3VHFJeG0ybmRrQ2FBYUJ6QWNhUjVPZFlwbGtyNmtzcHBHajdWbUpqWmF6S0RHQ0FtbnpqN2JjN0cxVUR2RVRkWjFBcURQOW1jRkRqMkZFeEVNRms0SSs0NEVnVGlUTVcxeW1GN081Nmg3d20ya0F6QS9UcjRaVSttTDk4dVcvWkFHbGlwVEZPRFMrWERQQ2NQays4OWxwbjBQajg1SlVydGhHbHRIQ3BSWVVCdnJRdmtESVlTSDFGRVZVZjhhbXBaUU9jdlJoamZNTUdTNTlLRlFLWVNzTGdiTnVQbWdGK2pIZ1lMOUtpYVgzb3BObDBEd01HbmtVZWVCWThzL3I5dVhQMkhMTmJNUUFZMnorZFRaODVVd0gyMFpmNEpaYWlIald5Y3FYQkU1a0pOc0s0aUhVUGFBQkpFV1lsdjBjcUFzVzdIaHhaMnNSeE1DQjRuaU4xYXdiUTVMWnQxakdiandjdWlmVkNKQUN6VHJzQVdxaDg1NTZrVXl6UDhCMFlxUVlmVTFNbllVdWJhUHppeFlzR3pwaVZHY2pCeUU5ZXBFYVQzL2w5aEdtSklxQUtrNnZwU0tDV2RhQmZiRGs0bFl3RkMveFA4YWNzMEFTQmRqaTJ4UmxBWEtOZTIzRWhUakVMdlBKNzFZa2FYNE9PY0VBelE1TGdVNVhoendPbmUvdjJwZkV3SUhEU2k3TEpid05tVFNZcUJqeTROMEprMlowdDEyUEg5dU9iMzZzTjRCTHd0SUwyRWFmMWFjSVppQlNaMkxuVDloTkxxYU5IN1pESXVCeWpsVzRHSDFNTmVOckdGTXBGQkc4ZS9yRHo2Nmk3OERERGIxYU95QjZlWnkxdDNGRllBanB2MGRVdnoxa0JFRFRDV04vWFgxdkp4QURRRXZBMUE3Mk1LRjBZbEttOGZ1aDlHeXp0b2xGc2hLd1ovWlltSmRpd3ZEaEpFbWxFMU8yRTJuMmZ2a2lYL3VQSERWcmdnT2FSTHhvb1FhdE5jb3VWeUtsakhRdUltdVZyQkpQSWEvOWQ0dG1yTzNhRUh3OGZ0bHdIbUNyRERpdkFsTy94QjR5dVNSejVINWxDVGZCZVdxd3lwQ2dSdlpMSVpTRFJ3T0NnaWVjVkRGcEpzRjZBNjNNeUFLRGFHbmhVTDNCYTVUalNRa1Y1cm52WjMva08xZ3U0UEYyUTRBbEVaUVlFbmtlZUt0UlU0L05LZy9JcWt4OEpKUDB6VjRIdWJsQUczZ01lWVlDMlprRGdncytoVTRYcGl1K29aTUFiRWJSYUQ5NkJYOTZjZXNFcjh2cGNNZkFvZUVtd0F2YzFYdktuU0s4NitITE9HM2dCM3Y2UDZnS3J4UVRYaXdieURVcXBvcWpMZ0lkSEFLck4xVFBmSXpTUkwxV2FFcnhhRm4vTmdBZjNLbTFLT1R6ZmMzQ1U1N3VpVGl2UWtwb2lUeXRWREpUQWdiUElad1lFRDJBVHVJQ2JCSlRhWEwzZ3VWY3prSU1yYlpBSHorSHoxZ3M0dFFhcXlFY2crL2M1U3hzdFRyOUkxUTRNRENab3IwWURBczl6SGxXaTMzT3hsdk1lS0xVbCtlaVQ1NTIybWpwU01zQ0h4MU1Id3o4Y2VIeTdFaFJ6NVFBQUFBQkpSVTVFcmtKZ2dnPT0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xIiwiRklET18yXzFfUFJFIl0sImV4dGVuc2lvbnMiOlsiY3JlZEJsb2IiLCJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwibWluUGluTGVuZ3RoIl0sImFhZ3VpZCI6ImM4OWU2YTM4NmMwMDU0MjY1YWE1YzljYmY0OGYwMzgyIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOnRydWV9LCJtYXhNc2dTaXplIjoyMDQ4LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjYsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTA0LCJ0cmFuc3BvcnRzIjpbInVzYiIsIm5mYyJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XSwiZm9yY2VQSU5DaGFuZ2UiOmZhbHNlLCJtaW5QSU5MZW5ndGgiOjQsImZpcm13YXJlVmVyc2lvbiI6MTAwMDAsIm1heENyZWRCbG9iTGVuZ3RoIjo2NCwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjN9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMC0xNyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxMDAwMCwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJBQ1MgRklETyBBdXRoZW50aWNhdG9yIE5GQyIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjQxMDE3MDAyIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMTAtMTciLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MTAwMDB9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDUtMTMifSx7ImFhZ3VpZCI6ImEwMjE2N2I5LWFlNzEtNGFjNy05YTA3LTA2NDMyZWJiNmYxYyIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiYTAyMTY3YjktYWU3MS00YWM3LTlhMDctMDY0MzJlYmI2ZjFjIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ill1YmlLZXkgNSBTZXJpZXMgd2l0aCBMaWdodG5pbmcifSwiZGVzY3JpcHRpb24iOiJZdWJpS2V5IDUgU2VyaWVzIHdpdGggTGlnaHRuaW5nIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3MywicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9LHsibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyIsInNlY3AzODRyMV9lY2RzYV9zaGEzODRfcmF3IiwiZWQyNTUxOV9lZGRzYV9zaGE1MTJfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJREhqQ0NBZ2FnQXdJQkFnSUVHMEJUOXpBTkJna3Foa2lHOXcwQkFRc0ZBREF1TVN3d0tnWURWUVFERXlOWmRXSnBZMjhnVlRKR0lGSnZiM1FnUTBFZ1UyVnlhV0ZzSURRMU56SXdNRFl6TVRBZ0Z3MHhOREE0TURFd01EQXdNREJhR0E4eU1EVXdNRGt3TkRBd01EQXdNRm93TGpFc01Db0dBMVVFQXhNaldYVmlhV052SUZVeVJpQlNiMjkwSUVOQklGTmxjbWxoYkNBME5UY3lNREEyTXpFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUUMvandZdWhCVmxxYWlZV0VNc3JXRmlzZ0orUHRNOTFlU3JwSTRUSzdVNTNtd0NJYXdTREh5OHZVbWs1TjJLQWo5YWJ2VDlOUDVTTVMxaFFpM3VzeG9ZR29uWFFnZk82Wlh5VUE5YStLQWtxZEZuQm5seXVnU2VDT2VwOEVkWkZmc2FSRnRNamt3ejVHY3oyUHk0dklZdkNkTUhQdHdhejBiVnV6bmV1ZUlFejZUblFqRTYzUmR0Mnpid25lYndURzVaeWJlV1N3Ynp5K0JKMzRaSGNVaFBBWTg5eUpRWHVFMEl6TVpGY0VCYlBOUmJXRUNSS2dqcS8vcVQ5bm1ET0ZWbFNSQ3Qyd2lxUFN6bHV3bit2K3N1UUVCc1VqVEdNRWQyNXRLWFhUa05XMjF3SVdieGVTeVVvVFh3THZHUzZ4bHdRU2dOcGsycVhZd2Y4aVhnN1ZXWkFnTUJBQUdqUWpCQU1CMEdBMVVkRGdRV0JCUWdJdnowYk5HSmhqZ3BUb2tzeUtwUDl4djlvREFQQmdOVkhSTUVDREFHQVFIL0FnRUFNQTRHQTFVZER3RUIvd1FFQXdJQkJqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFqdmp1T01EU2ErSlhGQ0x5QktzeWNYdEJWWnNKNFVlM0xiYUVzUFk0TVlOL2hJUTVaTTVwN0VqZmNuTUc0Q3RZa05zZk5IYzBBaEJMZHE0NXJuVDg3cS82TzN2VUV0Tk1hZmJoVTZrdGhYN1krOVhGTjlOcG1ZeHIrZWtWWTV4T3hpOGg5SkRJZ29NUDRWQjF1UzBhdW5MMUlHcXJOb29MOW1tRm5MMmtMVlZlZTYvVlI2QzUrS1NUQ01DV3BwTXVKSVpJSTJ2OW80ZGtvWjhZN1FSalFsTGZZemQzcUd0S2J3N3hhRjFVc0cvNXhVYi9CdHdiMlgyZzRJbnBpQi95dC8zQ3BRWHBpV1gvSzRtQnZVS2lHbjA1WnNxZVkxZ3g0ZzB4TEJxY1U5cHNteVB6SytWc2d3MmplUlE1SmxLRHlxRTBoZWJmQzF0dkZ1MENDckpGY3c9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFmQ0FZQUFBQ0dWcytNQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUhZWUFBQjJHQVYyaUU0RUFBQWJOU1VSQlZGaEhwVmQ3VE5WMUZELzNkNTl3ZVFTSWdTOUFRQVhjRkxBUVppOWZwZVZ6MXRZL1dUWnI1V3hwYzdXNWtuTGE1akkzWjg1c3JTMm5NMnNqdFd3WlM3SVVINEg0eENuRVF4NERBWkY3NFY3dXM4ODV2OS9sSW5CdlZKL0I0UHY5bnUvNW51LzVudk01NTZmekEvUXYwSGIvSXJYM1ZGS1BvNDVjbm00aW5VSVdZd0xGUm1aUVV1d2pGRy9OMWlSSGgxRVowTlJWUnVkcXQxQmQrMm5TS3lTL09oeXMwK2xrM2UvM2tROXF2RDRaVXRhNFZWU1V1WTBlaXB5aVRoQWZvY29PUlZnRHV1dzNxS1JpQWQzcmJjRXRqVGpZSW9mNldhSHNDbXpWUFdDTXgrY2doOHRMcVdNS2FNV3NVakxxbzJSdEpJUTBvT3ptZXJwUXU0ZXNaZ3NPTmtHeEg3ZDBrZHZUVDE3czRPTVU3Vkk4WmhqZ0dhTStBcTlpRU51OFBpZjF1ZHowN013dktXZjhHbFZvQ0VZMDRQQzVXZFRhWFlGYlI4dk52TDUrM0tnZmI1eE5NeWE5UmFtSml5bmFNbEdUVnRGbHI2YmE5dStwcW5FWDR1TXVSUmdqU1lFaHJON3V0RkZlNmxxYWw3TmZrdzVpbUFHSHluUHBiazhWbVkweHN0bnB0bEZDVkNZdHpUdUJOODNRcE1MalR0ZXZkUHpTVW5KN2U4bWtqeFozOWZYYktEZmxkWnFidlUrVFVnR25CVkY2ZlEyaVBIZzRXMTZVV1V3dnpiazE2c01aRStQbjBwdno3SlNldUF5ZXM4bGNwQ21hS3VvL3ArcVdyMlVjd0lBSFdydlAwWUV6aFhBdExBYnNzSGhwN2lHYW12eWlqUDhyeXFyWFVXWDlYb293eHlBdWZOQnJwNDNQT0JGWFpsa2Y4TURSaXFjcHlvd0F3cHV6MngrZld2ei9EdGRlOXNtc3p5Z3RjUjZDMXdiZHpCbDZPbHE1V05ZWTRvR2F0aEpNcmtURXgwakFSU0hBVnMrNXJZa1FOWGIrUWdmUExzUTZnWHlJbnNyZVFmbXBtN1JWRllmTDg2bjFmaVVPa1l2U2hrVVB4dmJ1a3pveTZLMWloTTFobzNYelc2RXZTZlhBK2RwaVdHYVdkK2RvWHpMem1Hd0tZRkxDQXNSQWxQQkFoTWxDRlhVN3RCVVZQcjhIZ1ZjSkhXcStGMDBwbHIrRE1UZHJQNHp2eFkxMWtOTWh4VCtTZVRHZytkNFY1TFFKaXR5VUdKTkI4VkZac2pnWUJaTS9JSS9YQ1RrajBxeURPcEYyQVZRMTdDSWpVcC9EblQxVWtMNUY1Z2RqK3NTMXdnMWdFM2dpZ202MGZDWHpTblBYYnlBUGJJWHYrSURwRTE2VGhhSElTOXNreWhsbU1FNUYzY2ZxQUtocTJDMEU1UEgxZ1lhWGFMUERrWkcwSERKT25LV0hwNTFJMHo1U091eDhlMVdBdVp6ZEhRclRrcDhUbWpYb0krbGEwd0dac3p1YnFiTzNpZlE2QS9XN3ZWU1lzVjNtUjBKS3drS2M0V0hpQmttUjhJM0NDZ0k4N29PTDRxelQ1UCtSVUpCZWpFT2dBUEs4aFlQemF0TStlSVRwMklPOXlUUW1lcm9tUFJ4eDFxeEFjc2lsZS91YlNlRWJjV1FHWUVDZ2hjTFkySHlLam9nakgyNWhNcGpwVXYxT3VnbGk0ZWgyZVJ3ME8zMmJKamt5dUNnTnpnMHZ6bFlNU2lTczB1b280TUc3aE1PakNFYVgxeUZFMG5TdmpCenVUbkVwSzg2WjhJb3FGQUl1Ync4a2c5QXJFYVJFV1NaSStqSDRYYnA2ZzlFOUVuSlQzb2FSekROK01VSkJRREhuNTZhOG9VbUVCdXNPeEJzL041K3RKRWJQa0FGRGo4VUd2T3MvSVd2Y1NnbEdCaHZTNy9GVFlmcFdHWWREWThmUEF4V1NBMzVzVEM0cDQrTG00QWFxSW9QZVF0ZnVmSzZKaDBaaHhsYnNVWE9TbVhOaWZENVpUQWt5RG9mYmJjY2x4bkE4V05BcXhDYlJOeWtoWHhRcGFEdzY3ZlhVWWJzaUcwS2h0djJvZUl2aDhyaFFNWU9jRUFxWEcvZUkrem5nT2M1eXhyOHE4MklBTTFjL0ZMRk9wbHF1NWVGUVhyTVp6R2NWQ2pZYkxXRzVJNEJUMWV1UnJsYnh0Tk90TWl0RERFaExYSUl5bkFBdnVPRVdFM1gzTmRBZnQ5NFZnYUc0MlhJUXQwWlg2UGVDRS9xUUZlOXJLNkh4N1lVNTBLdkg3Zlc0ZlMrcTdLS0JKeHNnZ0JYNXBTQUdoMWpJclZoNXpRNnczUmZhYWhCWG0vYUNiQ1pUakNVRlVUeVdacVc5cDYyTWpKUFhWcU9yUGdNTzROdjc0R2tmK293ZnROVkJEUW5qRkpxSFN3MTdwWHZoV1c1S1pxZS9RNDlOL1VTVENBVldvUVhGSUhCSFhYZTNGUHJVRHN1R0RtdEYvaEhLVEhwZWt4aGlBT1BJK1NKcTZTNkhGNEk5WVd6a0JKVG80NmlVTXpXcDhQaXIvUmlkdUx4S1lzU2tzVjh2TGxPUXZoR1gyWWxSME9CaEJqQyt1L2dFY3ZZMEFwSzdZazQxTnhqUFNRbldGSFRGNjZVcmpnZXZCOEN1NWErbDJ2WVNSUHR1VkRvNzNoaGRNU0huVVg3dFRqc1ZaR3hBbC9XcHRpT0lFUTFnbkwyOW1YNi90UjF0bWxrWWo4VzRYK0NTaldjVURHWTFOcFMvQzdoU0txaU1MTS9sMlFtU1daNzNEZHorZ2lvOEJDRU5ZUFE0NnFua3p3WFVicXZCa3hqVVFzV2ZaRmdidW8zckFmK3dON2pPTzkwK3lueDRQaTNMKzBuWUwxU2NoRFVnQVA0Z1BWLzdJZDFxKzFIU2htdUdrSXFXUlBneXhNRnFQOEhmalRualh3WTViUWZiSmN0Nk9JektnTUhvdEYvSGUxZWdzYXhIU3FHNndmZG1RNXg4TnlURkZxQmNwMmlTb3dIUjN5azUrMzZoRjd2WEFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xX1BSRSIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsImxhcmdlQmxvYktleSIsImNyZWRCbG9iIiwibWluUGluTGVuZ3RoIl0sImFhZ3VpZCI6ImEwMjE2N2I5YWU3MTRhYzc5YTA3MDY0MzJlYmI2ZjFjIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibGFyZ2VCbG9icyI6dHJ1ZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOnRydWUsImFsd2F5c1V2IjpmYWxzZX0sIm1heE1zZ1NpemUiOjEyODAsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6OCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoxMjgsInRyYW5zcG9ydHMiOlsidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN30seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTh9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi0zNX1dLCJtYXhTZXJpYWxpemVkTGFyZ2VCbG9iQXJyYXkiOjQwOTYsIm1pblBJTkxlbmd0aCI6NCwiZmlybXdhcmVWZXJzaW9uIjozMjk0NzMsIm1heENyZWRCbG9iTGVuZ3RoIjozMiwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjEsInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjoxMDB9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMC0xMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzMsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWXViaUtleSA1IFNlcmllcyB3aXRoIExpZ2h0bmluZyIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjQxMDEyMDA4IiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMDYtMDQiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDczLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ill1YmlLZXkgNSBTZXJpZXMgd2l0aCBMaWdodG5pbmciLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI0MDYwNDAwNCIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTA2LTA0IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3M31dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNC0xMS0xMiJ9LHsiYWFndWlkIjoiODJiMGE3MjAtMTI3YS00Nzg4LWI1NmQtZDFkNGIyZDgyZWFjIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI4MmIwYTcyMC0xMjdhLTQ3ODgtYjU2ZC1kMWQ0YjJkODJlYWMiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiSUQtT25lIEtleSJ9LCJkZXNjcmlwdGlvbiI6IklELU9uZSBLZXkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MTY3NzcyMTYsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfSx7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDM4NHIxX2VjZHNhX3NoYTM4NF9yYXciLCJzZWNwNTIxcjFfZWNkc2Ffc2hhNTEyX3JhdyIsInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsid2lyZWQiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUMzakNDQWorZ0F3SUJBZ0lHQU9xMEFBQUNNQW9HQ0NxR1NNNDlCQU1FTUlHUk1Rc3dDUVlEVlFRR0V3SlZVekVMTUFrR0ExVUVDQXdDVmtFeER6QU5CZ05WQkFjTUJsSmxjM1J2YmpFdE1Dc0dBMVVFQ2d3a1NVUkZUVWxCSUVsa1pXNTBhWFI1SUdGdVpDQlRaV04xY21sMGVTQlZVMEVnVEV4RE1UVXdNd1lEVlFRRERDeEpSRVZOU1VFZ1NXUmxiblJwZEhrZ1lXNWtJRk5sWTNWeWFYUjVJRlZUUVNCTVRFTWdVbTl2ZENCRFFUQWdGdzB5TkRBNU1UZ3lNakF3TURCYUdBOHlNRFkwTURreE9USXhOVGsxT1Zvd2daRXhDekFKQmdOVkJBWVRBbFZUTVFzd0NRWURWUVFJREFKV1FURVBNQTBHQTFVRUJ3d0dVbVZ6ZEc5dU1TMHdLd1lEVlFRS0RDUkpSRVZOU1VFZ1NXUmxiblJwZEhrZ1lXNWtJRk5sWTNWeWFYUjVJRlZUUVNCTVRFTXhOVEF6QmdOVkJBTU1MRWxFUlUxSlFTQkpaR1Z1ZEdsMGVTQmhibVFnVTJWamRYSnBkSGtnVlZOQklFeE1ReUJTYjI5MElFTkJNSUdiTUJBR0J5cUdTTTQ5QWdFR0JTdUJCQUFqQTRHR0FBUUFsY1RZc0NWMkx4dXdLOFE1UEsrMDMvd1NBUFNwUVpSNmsxMlAycHFmQjFwN00zSlVmVXd2ZW1pdG9oS0pZMkVlcFBMYWRJaXd6MmdWYXJQQjZNRmMvSDRCUm12NXljVVloV3dKeVBpUmZxRkpRcmNuT3IyUW1HVW03bi9HWmhRS1Z6NXVyOEw3Tk9wbm9udnhjdWhjZXVqZWUxeEhwSVUrV3J5Q28yaHBOZlhvWWlLalBEQTZNQjBHQTFVZERnUVdCQlE3VmpsTDNhZ1NUWHZWQUZ5S2I0R0lFY3Awd3pBTEJnTlZIUThFQkFNQ0FQOHdEQVlEVlIwVEJBVXdBd0VCL3pBS0JnZ3Foa2pPUFFRREJBT0JqQUF3Z1lnQ1FnRStmYmJKRmNYaUZnUVpiWnIzeFFkVVdTbmdnMWhOcmtIRkhoNVE2UkVIWEhFWGF5eCtJbWYwMGlQb05wQUU2YzltQ1NUVmVXQnNHT3FEUzRCMzZSVlFvUUpDQWJYd01EK2wxRi9Mc3hSQmU0KzBNSGh3cjIwdjZoa20rczJLT1ZVcjJuK0lBejJjZ2hDQ2xMT1RkWFh2UUdsNDY1M1hYM3Z3WDlWcGd5UlNVVDF0aGlleCJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFESUFBQUF5Q0FJQUFBQ1JYUi9tQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUZpVUFBQllsQVVsU0pQQUFBQW9yU1VSQlZGaEh6VmhwY0ZQWEdkWHlubVF0WGlYTCswSWFzTUhHT3dZYkVsSktnRWtDQWFZTTAweWJNbWxMS0FOaG44bkNaZ2dwNUEvVWhJNHpoTkRTYVdjS0pHeUZNS0dCTkhIeGdvMXRHYk1iYi9LK3lKWWxXY3VUMUhOMWhWQmtXOUlQWW5MRzR6bnYzaXZkODc3dGZsZDhoOFBCRzRYR2UxMTFsWnJlem1IT1p1ZnpYWU5QRXc0ZXd3cGpFa0t5WnlYRkp5bGNneDd3bG5YODhIZkhEMTAzNmkwU0tTc1FDbjRVVFU1Z1d4dG5IekZhSTFUUzlUdCt2bVJscm12Q2lTZXlCclhESythVUdIVFc0RkF4Qk5IQkNZRE5aaC9zTnlaUGlUajUzelU4bnBBT3VtUjF0dmN2U2k5V3hRVER0blJpZ21FMmNVYWp1YlI1R3lNVTQ1SEtzczlPM2krVGlZWE14QmxwTkN4bVRoYk1ucit4RVp6bytHRHRhU0h3VERVQklqSFQyMlU0ZnZnYU9OOWdNTXhPL0RncU5vVC80NFYzd0xEYkhickJrYksyRHdRWFQ2bGw4cUNmZ2laQUlPRGI3YnpLNys4THA4UXM3R3pUUFhNUFBvSERFYTZTQ2pvMXVzRExBWXlNZk1ZZnpWLzg5M3gwTHdEb28rT0g2d01CeEhScGhnUldDeGVnQTdFbGtnVVZWaXhtZUh5U3dwelZMZ0FRQWM1SExCQUt5YVBEd1NkUzdBNUVNWjZ4eERUQ0JhZ01YMld4WUJkZVFLTHdwVDJkdXJQbDZ5L1hiNzVRdldGNGNNUnFzVDJYb3J5czNvUVJoVXFHa20wWU5tL1pzeENQWDkvYXJPMHpjSnc5UGpuOHNub3oxaXg5SThlZ043dSt5eC80ZUJFWDlRZlRpUFcxbFJtaEVSTHdOVXRQaUlNWW1HcDZYanlkZlhTdkYzWmlSY0p2djdwRFI4SVVVcUdRWDFuYVZQYk5Renh1TEpwdjQ0ZzU2YXhmQ0FKWkNGUDE5eGlMaXBlQk56L3NxeWg5SkE1aXJWWXVMVE1PSTIyUCtxMVdHMS9BWjFoQlExMkg4eE84eWRPaVlLMEloYXhvNDNrNjhzZDNYOUxyVEpUN2d6MGdhK0hrL3UyNkFvR1F1SHY3MjJjVWtUS1FFWU0xdHpBWlJGMmxFWWtZRUJpc28yVUlCRWpQam9OV0pQamdnUEdyTCtveDhwdTFoZmk4T3h0OHdjRkRiUGtCaVhRTHQzWGZJdkRxMHBZNzlSMnNpTUdnUERnb1ZFRjhXbjI5RmU0RFFiUWl6aC9lN2diUG1aV000QU1KQ1pmczMzWUpCTmg1YU1uZ3dBamx2dUhmaWJEODZzMHZVYjVueTdrSUpURVZ4OWxTTTZMcDRPMmI3ZXpqQXg1bVU5L1FnR1RPVElBNVFXQkNLMmY3UjBrWitJSmw2UXFsSE00bFMzM0NqeFB0Tmp1Kzk2M05jOEN2bkd2b2F0UFJGb096MkxObUpqaVg4TzdXZHdsWjEvZkFiRFVWclNBU0dhdFV5ZkJ4OE9EUW9FLzJYWFhPODNZWHY0NGtwZHdIL01nYUdqUnQreE54SDdCbnc0VXdaeVlDY0N0Tnc1WUhBNHpvU1pXQjJXckxpU3hnYW1Zc05ReEtGN0xoNEk0cjRQbHpKMDFKaTZMKzlRRmZzbEFTWlRMUjRwVlo0Q2MvcjBUMXB1Y0IvTTVaYkhBVGVFMUZVNUNFSmF1ZFFJeTNOZzFRbnBtZjRONWVKaGVmT0ZKS2VkSGhwZjA5dzVTUEIxK3l0SDNHUFVkSVVRQU83YjRDWDFCT3luY1FFeG9tQmIrajdvSWw2RGdGcHU0M2RJRk16NHVEVWVrZ3NpRlVJZDIxL2l6NDVMU28zTUpKT0REbzFKZ1lWeGJTTzNteVl2Yjg1OEUvK2ZBYjJBbStvRk0yenBhU0ZrTjVUWG1MTzk0cFVHbnJiclNCWk9Rbm9PUzZ6eHdZOWNJL2F3ZTZTV0R0UDdvY2hjUEhjVFN1cklGZWZkR2ZsMUorNHNoMWVURHBaU21zMWlmeGprS0ZuS0NjQWlyVmxVU1dSQ0xDbjN0ckdDeE1LZDIxZ1JoTUdSMHk3N1ZwYUpUcDFHaU1MUXNXeGxWcFdrNHMrSjUzemlPdDhLVjBDc0JzVm40aVNQT0RQcFBKaXZwT3h5bmcwOXMxblpSbjVzRmdUNkliSi9mMXF3OWJHdnZCOS8xbEdXNFc0eGxzREZsWWlWcDE0TE5mZ3ZmMTZFK2ZxSkpJUlhRS2NQQWNOcXM5NzRVazhPclNaczk0cDREeE5DMWFXaHF5Q3hJUkRIUWN3THVGSzJUYlZwMEVSd2orWWVzTHVKRFJLUytNYVMwSFBxK01DZ2JyYU5IU3pvVk9FRGg0ZkFGNWIxQ0QzZ0krR3VnbTBNbUF5RVBGWHZiQUNZWjJpdkw0NUFna08rVmVHT05iSVNKSXl1NVlld1k4WTBaQy9weEpabytzb1JMVmxhU1U1eFltbVl6ZThZRnpLVG8rUkNvbkJxNHFiZlpLQ0dUMy9xUEVEOEJIV3kraWNGRHVoYkZqQzY3NTk3OXFCM3BKMW53MEttdkVFcmJxZjgwZ2FibHg2RjY4N0lIc1F3bWd2TGFpemZQaUNZZE9TbEVXT3JPN3VPZy9ySmcwalhUS0MyUExJa0dnbE8xY1J3d0dieTVZa2thZFFvR2RibFczVTY2S0NiSFpmaUFMZStjVWtNaURYTzJBM25OanZPZnVnNitEb0pQOWUwa1picVowZkRUR2xnVWdlc3F1TmlMWHdGR1gwWTY2cmNLeUF2Vk40a1FnTXovT005Y0FxNWxMenlYblVrTk51NUFSdXVNUytadGI0TXJ1dlpzdVNtVWlyeFQyeExpeXFNSGUrLzFwY0xHRWVXUE5US1BCNHA1Q3FxSU5CRS9OOEphRjVNcWVTY3BIWFVXYnlObndBSGlsL2g0OTRnSGNvRE9mL3VzTkZCMDZOU2JHbFFXZ0hiaC9wN3Vtb2dWOHk5NUZ3MW9UTlJoa01Zd0FjUU9PcVBlc2lxZ0xTaFZKWVFBZER1M0RBS3laOThyVXlLZ1E4QjNyemlpajVMN3ZFTDVrQVJHUnNxTDE1eWpmc0hPK2JzalY5Y0xGTkx4U00ySThreEdCbFQzTGRRRGNxbW1uOFk2WHdWMzV3eEp5dkdxYXROY3UzcVgxeFFmOHlHSVlZVWZiME5kZk5vQ3YyamhIeEFwcHBXSFFWejF1WUhCMG9sQlJqbk1KTllYeWp0WkJlaTZOR0N3cjNwb2hkZGFDOTkvK0lrSWxjd2ZjZVBBakM4QWQ1c0IyVjlmN3pzNlhkWVBFWUhEaTNWclhiU0k5S3c3OUorVVdFNWZ0UEM1cnl6V2lJSmVwVUhYZjNmOEtPSktnb2E1ZHhQb3hGZUJmRnQ3WU9HdzVkYXdLZlBtYk9hR2hFdGdHZ3ozZHcxWXpVWk16TzVFU0tBQlNzMGl1MWQxb0ZZbEpVT3QxNXRWYjU0SUFTQ0RjaFFLNW1QcVhCWVNFU1Q1KzMyV3dYWWNYYXdkSW1jVkpjTE9NK0hGNlhnTHRxK3cyaHpKYVRzdTZ1cW9WZFFRVkgwbXdlaHVSOWUybHUxMGRycDdiTHdLU2haSUlFU1VIeUM5UGhmTW14OGFGb3lnZ2JOWFZKQmxUcGtkakFlemt2SGU0K3JCN3Q3b1JsMFBha1UyN0Y5S1JBKzlkQ29zZ25XTWdDRWdXZ01QcjJNSHZLZi8wN0p0d0RYWnRxSEVWMWRqRU1KZ0thZmppTDFMb1NFK0hEclVrTGpGc3hlL3k4UGpsMzZxMS9jYkFmeGZpLzNwaFNiZEc3OVhLalFrMDVncVZQRG8yQk5XMXZyb2REZ0xTU0NUeG14LzJHZzFXSkduU3p4Um9HRkZSRysvMlFJUXFKaGhuRi9LdXZrcUR4L0ZPUUU5WXpMWVpMOGJ6VjcxNnRMMXBLTUQzZ0p0Z0ZSRFVTV3dHV2ZRU2dZaWhXOEs1a0lzcFdrZ2hsTllPOXdLL3dCbFZNQzlKb0l5U2VaMjFQZ0RISWFUd1J3c1AvdE5IOTViWUhvL3U0ZzRuZUMzd0M3eTJJa29tbUpvVjVkbEFQblBnbUVyTGpSWE1YNXhxR0RiREhhN2had3Fhem5NWFRoRWtKc2RtellwR29MbG1uaW1NZXV1cnYwb1ZzeklTdGhwTng5Szh6NVNSY2g4TjBBU0EzQUJNbHNzTjY2UkJ3U2pFOXZqNDJMMmZMdWhxSDBZU3VaWk1PSkN6ZlQyRzRsUExvQWt5VUJmNHlPcEZTL0wzSFZ1ZzB4b1JjUk1jWjlodXhHQTFteXdsRjVablpLVkFEQjlYTDV4WktEVzRGMkMrc2JHbHVPaWF1cndQRjNiY1F1SFR4MDU5dXM0bHI0MTNoMVZROW15Y3JXQkIzUHJ0ODFXUmtRS0d6d2pKVDlQT1g2cDVEanRuUjlSamtkbGlibnlncWZ5dXFmbUJWajlraHIrZHBudXE5bk1XUFpUQWtIRHg4MU9WTStjK2w1QVl3NHBZZE5pc21NRlZpc2ZqL3gveHFPY1BSZFN2YXdBQUFBQkpSVTVFcmtKZ2dnPT0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiI4MmIwYTcyMDEyN2E0Nzg4YjU2ZGQxZDRiMmQ4MmVhYyIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOnRydWUsInVwIjp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwiZXAiOnRydWUsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImFsd2F5c1V2Ijp0cnVlfSwibWF4TXNnU2l6ZSI6MTI1MCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0IjoxNiwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoyMDgsInRyYW5zcG9ydHMiOlsibmZjIiwidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN30seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTM1fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotMzZ9XSwibWluUElOTGVuZ3RoIjo0LCJmaXJtd2FyZVZlcnNpb24iOjE2Nzc3MjE2LCJjZXJ0aWZpY2F0aW9ucyI6eyJGSURPIjozfSwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjUxfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMTItMjciLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MTY3NzcyMTYsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiSUQtT25lIEtleSIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjQxMjI3MDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMTItMjciLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MTY3NzcyMTZ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDYtMjYifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyIwMTBkZWJmNzEzOTg3YmRjZjQ0M2RiZjYzY2YyMDE4NDMzODU1MThkIl0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjAxMGRlYmY3MTM5ODdiZGNmNDQzZGJmNjNjZjIwMTg0MzM4NTUxOGQiXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ill1YmlLZXkgNSBTZXJpZXMgd2l0aCBMaWdodG5pbmcgKEVudGVycHJpc2UgUHJvZmlsZSkifSwiZGVzY3JpcHRpb24iOiJZdWJpS2V5IDUgU2VyaWVzIHdpdGggTGlnaHRuaW5nIChFbnRlcnByaXNlIFByb2ZpbGUpIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NiwicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoyfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCIsInJlbW90ZV9oYW5kbGUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlEU0RDQ0FqQ2dBd0lCQWdJVVVjbU1YelJJRk9nR1RLMFRiM2dFdVpZWmtCSXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFEbTU1NWJXWTlXVyt0T1kwcklXSGxkaCthTmFub0NaQ0ZoN0drM1laclFtUFV3MGhrU0c2cVlIUXRQK2ZaeVMzM1ZFcnZnK0JRcW5tdW1nTmhmeEZya3dFWkVMZWlkQmNDOEM0QWc0bnFxaVBXcHpzdkkxN05jeFlsSW5MTkxGY1pZLytnT2lONlpPVGloTzUvdkJaTWJqOXJpYUFjcWxpWW1OR0pQZ1RjTUdhRUF5TXpFTU55Mm5tNkVwK3BqUDVhRjZnaTIxdC9VUUZzdUoxajJSai95bk0vU2RSdCtlY2FsNU9Zb3R4SGtGYkw5dnZ2MkEyT3Y1SVRaQ2x3NGJPUzlucHlwUWltT1o1UUFZeXRtWWFRcFdsL3BNWXo2elNqOFJxa1ZETkVKR3FOZlRLQTJpdkxZd1g2bFN0dE1QYXBnMEo4NGw5WDB2b1ZOL0ZwUzRWQ1ZBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlFnS0ZBaEc2UmFXK2hUeTUyZHhlVDhiQzk2SHpBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBWU16Z0xySkxJcjBPb3ZRbkFaclJJR3VhYmlIU1VLU21iTFJXcFJrV2VBdHNDaERFSHBYY0ovYmdETktZV29IcVE4eFJVakI0Q3llcFlldmMzWWxyRzhvN3pIeHBmVmNhb0w1U2V1Smt6SHhLbjRiVGFTcDkrTXZ3YW1ucDY0a1pNaU5iRkxrbmZQOWtZS29SSGtNV2hlUkoxVXNQMXo0U2Nta0NlSUxmc01zNnZxb3ZxaldDbEZzSnBCY3NsdVlIV0Y3YkJKMW40UndnK0FURW9wWTRJZ0d2Nlp2d2MrQTlyK0FUMmhxcG9Ta1lvQWwrQU5Zd2dzbE9mOXNKZTBWK1RBOVlZL1VsYUJtUFBUZDAvL3I5d3ZjZVBXWmtQaktvQUMvelVOaGZEYmg0TFY4R0hzM2x5WDJYb21ML0xOYzhKWXp5SWFERWhHUXZlb1BoaC90cjFnPT0iLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVRuYmJHSVIyTkh2enFJS0ZBZVF3RzFYQmlzMHdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFRWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPc1hqM2swNEJhbjRUWWR0WktxRC9PUEp4eUR5YVBtQ0JVRlVpYVpJZ1R0ZVpuajNYMjVEaGdwWlpYc0M0RDB5ZEljcmxBNndOVUluT1JML0w5ekJiVEVJTUFWTUdvNmc3VUtBbWIyTUY2QUhibmhZSmQ5ZWlrdXBWTldTaEhOWU5jNEdCZE8xWU42QWZVcXZKaEhiZTNWNFNOTVBtQlJFS0pQVno3VGh3Z21nZ1RlOFdzMkswL3dzcXYyd1NFN3BiQ0JzVVpoSVg1MWJaTTNwcUR3SlBUbVJGRXZ0MC82dEc1ZU84RjNqMTRPWHFmRWhtam4xVnZ4S0RZUU9MWkF4Q3d3Z0MwUDRDZGZXdjN5OFBTUjhJMzU0aE8xWStHek5qdklxWDM4TktMeXd1SVlIRmVyT3hObHhFTUJ2RmhZQnVSdVlBa2tnVWFQcU42VUJoc0lMcnNDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNDb1JIaGl5Tm5iblhSV0lMNlpCWG9CWDlZVE1COEdBMVVkSXdRWU1CYUFGQ0FvVUNFYnBGcGI2RlBMblozRjVQeHNMM29mTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFDUUZhZkpJMS81V2c5Q0VFaW1FMVJQNTRSZ1F3VE5UT09Rc0xBQ1RlK3JJdGxGUXpDOVpEaHJWODI4eVg3anp5K0FBc3AzaXpLN1QxdGgyZGw3bSt0dTBzdzJQYS9vbGMwMm50NlB5SXczNDhnYUh6aEkxKzBLRTQ1cXh2RkRlTDJsTXhiUGZDWXZ5RUVhWXpqaVFFTFU1OTUxcFhHV3lLTWEvNGZMdE8rWktPWGhNdVZlcTRyWERQSTU0VzZKSE9pQWFpS2Rpdys1ZTNjMmt0L2pGSVF0TTZ2TVhnOUxORnpkakVUTnQyMFZYOVFldlJwRlpmdWNNRzl3Q2FRRG9GbFB6cFRNSktoUGV2L2ltSm1aWWhLZnIwbExjZW10cWpJeExBb3FaZE9ZZkhCZzYrdkFjZFBJL2lhdUdwVUF2N1grVUtObUR3aloyQmFINHNMd2hCMm0iLCJNSUlEU0RDQ0FqQ2dBd0lCQWdJVURxRVJ3KzRSbkdTZ2d4Z1Vld0pGRVBEUlozWXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFESTdYbkgrWnZEd01DUVU4TThaZVY1cXNjdWJsdlZZYWFSdDNZYmF4bjlnb2RMeDVzd0gwbFhyZGdqaDVoN0ZwVmdDZ1lZWDdFNGJsMXZielVMZW1yTVdUOE4zV01HVWU4UUFKYkJlaW9WN1cvRStoVFpQLzBTS0pWYTNld0tCbzZVTGVNbmZRWkRyVk9SQWs4d1RMcTJ2NUxsajV2TWo3SnRPb3RLYTlKN25IUzhrTG16WFhTYWowU3dFUGg1T0FaVVROVjR6czFidm9UQVFRV3JMNC9KOVF1S3Q2V0NGRTVuVU5pUlFjRWJWRjhtbHFLMmJ4Mno2b2tWbHR5RFZMQ3hZYnBVVEVMdlkxdXNSM0RUR1BVb0lDbE9tNGNycHduRFJMVkh2alllUEdCQi8vcEV5enhBL2djU2N4andhSDFaVXc5Ym5TYkh5dXJLcWJUYTFLdmpBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlRxdDBLUW5neDdaSHJiVkh3RHVueE9uOWloWVRBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBcVFhQ1dNeFRHcVZWWDdTazdra0ptVXVlVFNZS3VVNitLQkJTZ3dJUm5sdzlLN0hlMUlweFowaGR3cFBOaWtLam1jeUZnRlB6aEltd0hKZ3h4dVQ5MFB3M3ZZT2RjSkpOa3REZzM1UFhPZnpTbjE1Y0ZBeDFSTzBtUFRtSWI4ZFhpRVdPcHpvWHZkd1hETTQxWmFDRFlNVDd3NElRdE15dkU3eFVCWnEyYmp0QW5xL05EVUE3YmU0SDhIM2lwQysvK05LbFVyY1VoK2o0OEs2N1dJMHUxbTZGZVF1ZUJBN24wNmo4MjVycURxc2FMczlUYjdLQUhBdzhQbXJXYU5QRzJraktlcnhQRWZlY2l2bEZhd3AyUldadnhyVnRuM1RWMlNCeHlDSkNrWHNORDA1ZENFclZIU0pJcytCZHRUVk5ZOUF3dHlQbW55YjB2NG1TVHp2V2R3PT0iLCJNSUlEUGpDQ0FpYWdBd0lCQWdJVVh6ZWlFREpFT1R0MTRGNW4wbzZaZi9iQndpVXdEUVlKS29aSWh2Y05BUUVOQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU1aNi9UeE04cklUK0Vhb1B2Rzgxb250TU9vLzJtUTJSQndKSFMwUVpjeFZhTlh2bDEyTFVoQlo1TG1pQlNjSVpkMVJueDFvZDU4NWgrL2RoSzdoRW03SkFBTGtLS3RzMWZPNTNLR05MWnVqejVoM3dHbmNyNGh5S0YwRzc0Yi9VM0s5aEU1bUdORDZ6cVljaENSQUhmcllNWVJERjRZTDBYNEQ1bkdkeHZwcEF5Nm5rRW10V21NbndPM2kwVEF1Y3NyYkU0ODVIdkdNNHIwVnBnVmRKcHZnUWppVEpDVElxK0QzNWh3dFQ4UURJdituR3ZwY3lpNXdjSWZDa3p5Q2ltSnVraFl5NktvcU5NS1FFZHBOaVNPdld5RE1UTXQxYndDdkV6cHc5MXUrbXNVdDRyajBlZm5POXMwWk93ZHdNUkRuSDR4Z1VsNVpMd3JyUGtmQzEvMENBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUI4R0ExVWRJd1FZTUJhQUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUU13RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCRFFVQUE0SUJBUUMzSVcvc2dCOXBaOGFwSk5qeHVHb1grRmtJTGtzMHdNTnJkWEwvY29VdnNyaHpzdmw2bWVQTXJiR0pCeUoxWG5xdUI1c2djUkVORnhkUUZtYTNtaW84VXBmMW93TTFacmVYckowbUFERzJCcGxxYkpueGl5WWErUjExcmVJRlRXZUloTU5jWktzRFpyRkF5UHVGakNXU1F2Sm1OV2U5bUZSWUZnTmhYSktrWEliNUgxWGdFRGx3aWVkWVJNN1ZvbEJObGxkNnBSRktsWDh1c3Q2T1RNT2VBRGwyeE5GMG0xTFRoU2RldVh2RHlDMWc5K0lMZnozUzZPSVlnYzNpcm9SY0ZEMzU0ZzdyS2Z1NjdxRkF3OWdDNHlpMHhCVFByWTk1cmg0L0hxYVVZQ0EvTDhsZFJrNkg3WGszNUQrV1ZwbXEyU2gveFQ1SGlGdWhmNHdKYjBiSyIsIk1JSURTakNDQWpLZ0F3SUJBZ0lVUjM4bXEyNlNmMnN6VlYyQmRHNldFTjdrdVdVd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVJZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU5ZMFdiOW9Qb1JvS29ReVdQYUpwejExdnJXVGc2elR0bU5qMlZvS1JueXZLR1JxcHpiODN3NWw2WUE5NlVZa1lCRFFQMGlsTzJEUGU2d1dxVlI1ekRmUnpkY0g4YmgrTDdkR0d2YWU2aFJUWmhrRmtDcFhEczRIY2NrbnJEZjhGQ2xKN0hlMzlKZjQyL0cxUW0yeno5V1dtclBYdGdpSy94MDVHanNRZkd1REcxemY1UVRVVWllOGx3eW1LM1RmZE92TmVlSkFBUGUycG43SXRmUmIrclZyTldpRHpsUm4ydk5uWjJ3UG80d0gvV0o2ZGhYWkcrck1XVCthNkJvY2cxVWZJdzZrZHVuRzRiVHBaenN2YWNGWXlSMG1wZitEZU9ucFNXQW15d0pXSHZUbGYyWVh4RnllWGNUQUNkUWxjTU5HSjJWaFpRNDh4dFA1L1JCUC84a0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ2h5NDJva2lxY1RTMWlxYS9IUldqa0JuNEgvTUI4R0ExVWRJd1FZTUJhQUZPcTNRcENlREh0a2V0dFVmQU82ZkU2ZjJLRmhNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUFuK1JISVBidE1FRE5kVDFnOEgvUml0QWtVZExnQXQxdFdHV25sajlrbmJ2NC80R2xYN0M5cDQ1ZWZQTzkvYVpMNk9WMVhSS0JpNkttdEJXNUs3bnVZRW5NeC81QnFCU2JMVDdyaGR1QzQ5VEJlTWI5UEhkWHNUbFNWTlllZnIxZEdpZHI0ajB4VkJRTGIxcmtuREFiZFdEektmdm5heUtPOEZyd2U3SHg4NDNNRy9ySitjMFhydVV2YmZWVENITGlJV2hNN29ORGhMOHhvYjZ4VW85S0xLY1NMK0l0WXNPMy85V2I4UTlHanNxTDRGWHNEY0cxU2FZaDdLcGZ1TW1PaXhxekpaTzJuSWljUFlSZzFJMlN1aVVmWU83MHRtZEhjYmwra1NRbVNZdDdycTR2aUlMZzJHeDNqOXJJVHVXVGpiYVVhU1NReGdPbU1TSHV5ek1BQyJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFmQ0FZQUFBQ0dWcytNQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUhZWUFBQjJHQVYyaUU0RUFBQWJOU1VSQlZGaEhwVmQ3VE5WMUZELzNkNTl3ZVFTSWdTOUFRQVhjRkxBUVppOWZwZVZ6MXRZL1dUWnI1V3hwYzdXNWtuTGE1akkzWjg1c3JTMm5NMnNqdFd3WlM3SVVINEg0eENuRVF4NERBWkY3NFY3dXM4ODV2OS9sSW5CdlZKL0I0UHY5bnUvNW51LzVudk01NTZmekEvUXYwSGIvSXJYM1ZGS1BvNDVjbm00aW5VSVdZd0xGUm1aUVV1d2pGRy9OMWlSSGgxRVowTlJWUnVkcXQxQmQrMm5TS3lTL09oeXMwK2xrM2UvM2tROXF2RDRaVXRhNFZWU1V1WTBlaXB5aVRoQWZvY29PUlZnRHV1dzNxS1JpQWQzcmJjRXRqVGpZSW9mNldhSHNDbXpWUFdDTXgrY2doOHRMcVdNS2FNV3NVakxxbzJSdEpJUTBvT3ptZXJwUXU0ZXNaZ3NPTmtHeEg3ZDBrZHZUVDE3czRPTVU3Vkk4WmhqZ0dhTStBcTlpRU51OFBpZjF1ZHowN013dktXZjhHbFZvQ0VZMDRQQzVXZFRhWFlGYlI4dk52TDUrM0tnZmI1eE5NeWE5UmFtSml5bmFNbEdUVnRGbHI2YmE5dStwcW5FWDR1TXVSUmdqU1lFaHJON3V0RkZlNmxxYWw3TmZrdzVpbUFHSHluUHBiazhWbVkweHN0bnB0bEZDVkNZdHpUdUJOODNRcE1MalR0ZXZkUHpTVW5KN2U4bWtqeFozOWZYYktEZmxkWnFidlUrVFVnR25CVkY2ZlEyaVBIZzRXMTZVV1V3dnpiazE2c01aRStQbjBwdno3SlNldUF5ZXM4bGNwQ21hS3VvL3ArcVdyMlVjd0lBSFdydlAwWUV6aFhBdExBYnNzSGhwN2lHYW12eWlqUDhyeXFyWFVXWDlYb293eHlBdWZOQnJwNDNQT0JGWFpsa2Y4TURSaXFjcHlvd0F3cHV6MngrZld2ei9EdGRlOXNtc3p5Z3RjUjZDMXdiZHpCbDZPbHE1V05ZWTRvR2F0aEpNcmtURXgwakFSU0hBVnMrNXJZa1FOWGIrUWdmUExzUTZnWHlJbnNyZVFmbXBtN1JWRllmTDg2bjFmaVVPa1l2U2hrVVB4dmJ1a3pveTZLMWloTTFobzNYelc2RXZTZlhBK2RwaVdHYVdkK2RvWHpMem1Hd0tZRkxDQXNSQWxQQkFoTWxDRlhVN3RCVVZQcjhIZ1ZjSkhXcStGMDBwbHIrRE1UZHJQNHp2eFkxMWtOTWh4VCtTZVRHZytkNFY1TFFKaXR5VUdKTkI4VkZac2pnWUJaTS9JSS9YQ1RrajBxeURPcEYyQVZRMTdDSWpVcC9EblQxVWtMNUY1Z2RqK3NTMXdnMWdFM2dpZ202MGZDWHpTblBYYnlBUGJJWHYrSURwRTE2VGhhSElTOXNreWhsbU1FNUYzY2ZxQUtocTJDMEU1UEgxZ1lhWGFMUERrWkcwSERKT25LV0hwNTFJMHo1U091eDhlMVdBdVp6ZEhRclRrcDhUbWpYb0krbGEwd0dac3p1YnFiTzNpZlE2QS9XN3ZWU1lzVjNtUjBKS3drS2M0V0hpQmttUjhJM0NDZ0k4N29PTDRxelQ1UCtSVUpCZWpFT2dBUEs4aFlQemF0TStlSVRwMklPOXlUUW1lcm9tUFJ4eDFxeEFjc2lsZS91YlNlRWJjV1FHWUVDZ2hjTFkySHlLam9nakgyNWhNcGpwVXYxT3VnbGk0ZWgyZVJ3ME8zMmJKamt5dUNnTnpnMHZ6bFlNU2lTczB1b280TUc3aE1PakNFYVgxeUZFMG5TdmpCenVUbkVwSzg2WjhJb3FGQUl1Ync4a2c5QXJFYVJFV1NaSStqSDRYYnA2ZzlFOUVuSlQzb2FSekROK01VSkJRREhuNTZhOG9VbUVCdXNPeEJzL041K3RKRWJQa0FGRGo4VUd2T3MvSVd2Y1NnbEdCaHZTNy9GVFlmcFdHWWREWThmUEF4V1NBMzVzVEM0cDQrTG00QWFxSW9QZVF0ZnVmSzZKaDBaaHhsYnNVWE9TbVhOaWZENVpUQWt5RG9mYmJjY2x4bkE4V05BcXhDYlJOeWtoWHhRcGFEdzY3ZlhVWWJzaUcwS2h0djJvZUl2aDhyaFFNWU9jRUFxWEcvZUkrem5nT2M1eXhyOHE4MklBTTFjL0ZMRk9wbHF1NWVGUVhyTVp6R2NWQ2pZYkxXRzVJNEJUMWV1UnJsYnh0Tk90TWl0RERFaExYSUl5bkFBdnVPRVdFM1gzTmRBZnQ5NFZnYUc0MlhJUXQwWlg2UGVDRS9xUUZlOXJLNkh4N1lVNTBLdkg3Zlc0ZlMrcTdLS0JKeHNnZ0JYNXBTQUdoMWpJclZoNXpRNnczUmZhYWhCWG0vYUNiQ1pUakNVRlVUeVdacVc5cDYyTWpKUFhWcU9yUGdNTzROdjc0R2tmK293ZnROVkJEUW5qRkpxSFN3MTdwWHZoV1c1S1pxZS9RNDlOL1VTVENBVldvUVhGSUhCSFhYZTNGUHJVRHN1R0RtdEYvaEhLVEhwZWt4aGlBT1BJK1NKcTZTNkhGNEk5WVd6a0JKVG80NmlVTXpXcDhQaXIvUmlkdUx4S1lzU2tzVjh2TGxPUXZoR1gyWWxSME9CaEJqQyt1L2dFY3ZZMEFwSzdZazQxTnhqUFNRbldGSFRGNjZVcmpnZXZCOEN1NWErbDJ2WVNSUHR1VkRvNzNoaGRNU0huVVg3dFRqc1ZaR3hBbC9XcHRpT0lFUTFnbkwyOW1YNi90UjF0bWxrWWo4VzRYK0NTaldjVURHWTFOcFMvQzdoU0txaU1MTS9sMlFtU1daNzNEZHorZ2lvOEJDRU5ZUFE0NnFua3p3WFVicXZCa3hqVVFzV2ZaRmdidW8zckFmK3dON2pPTzkwK3lueDRQaTNMKzBuWUwxU2NoRFVnQVA0Z1BWLzdJZDFxKzFIU2htdUdrSXFXUlBneXhNRnFQOEhmalRualh3WTViUWZiSmN0Nk9JektnTUhvdEYvSGUxZWdzYXhIU3FHNndmZG1RNXg4TnlURkZxQmNwMmlTb3dIUjN5azUrMzZoRjd2WEFBQUFBRWxGVGtTdVFtQ0MifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMi0yMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzYsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWXViaUtleSA1IFNlcmllcyB3aXRoIExpZ2h0bmluZyAoRW50ZXJwcmlzZSBQcm9maWxlKSIsImNlcnRpZmljYXRlTnVtYmVyIjoiVTJGMTAwMDIwMjQxMjIyMDAzIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMTItMjIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTAyLTA2In0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiMzQyOTM4ZTBlZTY1ZDUxZWUwNTYxMWMyODIwMmM2NzRkZmQ1YzlkZSIsImQ1M2VkZDIzYWRiNmI1YjRhZGQxMDJmYjRhZDFiNDAzN2ZmNGE3YWUiLCJhMTgzMzUzMmU4MWJjY2M3OTI0NWZhNmY1Mjk2YzQ4MTVkZmY1OTljIiwiZjVmNmVlZjcyOWEwMjY0NzUyMDUzYzIyZTg5ZmMzMDI4ZjE1MzZjMSJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyIzNDI5MzhlMGVlNjVkNTFlZTA1NjExYzI4MjAyYzY3NGRmZDVjOWRlIiwiZDUzZWRkMjNhZGI2YjViNGFkZDEwMmZiNGFkMWI0MDM3ZmY0YTdhZSIsImExODMzNTMyZTgxYmNjYzc5MjQ1ZmE2ZjUyOTZjNDgxNWRmZjU5OWMiLCJmNWY2ZWVmNzI5YTAyNjQ3NTIwNTNjMjJlODlmYzMwMjhmMTUzNmMxIl0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IDUgRklQUyBTZXJpZXMgd2l0aCBMaWdodG5pbmcifSwiZGVzY3JpcHRpb24iOiJZdWJpS2V5IDUgRklQUyBTZXJpZXMgd2l0aCBMaWdodG5pbmciLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI4NzA3LCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50IiwicmVtb3RlX2hhbmRsZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURIakNDQWdhZ0F3SUJBZ0lFRzBCVDl6QU5CZ2txaGtpRzl3MEJBUXNGQURBdU1Td3dLZ1lEVlFRREV5TlpkV0pwWTI4Z1ZUSkdJRkp2YjNRZ1EwRWdVMlZ5YVdGc0lEUTFOekl3TURZek1UQWdGdzB4TkRBNE1ERXdNREF3TURCYUdBOHlNRFV3TURrd05EQXdNREF3TUZvd0xqRXNNQ29HQTFVRUF4TWpXWFZpYVdOdklGVXlSaUJTYjI5MElFTkJJRk5sY21saGJDQTBOVGN5TURBMk16RXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFDL2p3WXVoQlZscWFpWVdFTXNyV0Zpc2dKK1B0TTkxZVNycEk0VEs3VTUzbXdDSWF3U0RIeTh2VW1rNU4yS0FqOWFidlQ5TlA1U01TMWhRaTN1c3hvWUdvblhRZ2ZPNlpYeVVBOWErS0FrcWRGbkJubHl1Z1NlQ09lcDhFZFpGZnNhUkZ0TWprd3o1R2N6MlB5NHZJWXZDZE1IUHR3YXowYlZ1em5ldWVJRXo2VG5RakU2M1JkdDJ6YnduZWJ3VEc1WnliZVdTd2J6eStCSjM0WkhjVWhQQVk4OXlKUVh1RTBJek1aRmNFQmJQTlJiV0VDUktnanEvL3FUOW5tRE9GVmxTUkN0MndpcVBTemx1d24rditzdVFFQnNValRHTUVkMjV0S1hYVGtOVzIxd0lXYnhlU3lVb1RYd0x2R1M2eGx3UVNnTnBrMnFYWXdmOGlYZzdWV1pBZ01CQUFHalFqQkFNQjBHQTFVZERnUVdCQlFnSXZ6MGJOR0poamdwVG9rc3lLcFA5eHY5b0RBUEJnTlZIUk1FQ0RBR0FRSC9BZ0VBTUE0R0ExVWREd0VCL3dRRUF3SUJCakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBanZqdU9NRFNhK0pYRkNMeUJLc3ljWHRCVlpzSjRVZTNMYmFFc1BZNE1ZTi9oSVE1Wk01cDdFamZjbk1HNEN0WWtOc2ZOSGMwQWhCTGRxNDVyblQ4N3EvNk8zdlVFdE5NYWZiaFU2a3RoWDdZKzlYRk45TnBtWXhyK2VrVlk1eE94aThoOUpESWdvTVA0VkIxdVMwYXVuTDFJR3FyTm9vTDltbUZuTDJrTFZWZWU2L1ZSNkM1K0tTVENNQ1dwcE11SklaSUkydjlvNGRrb1o4WTdRUmpRbExmWXpkM3FHdEtidzd4YUYxVXNHLzV4VWIvQnR3YjJYMmc0SW5waUIveXQvM0NwUVhwaVdYL0s0bUJ2VUtpR24wNVpzcWVZMWd4NGcweExCcWNVOXBzbXlQeksrVnNndzJqZVJRNUpsS0R5cUUwaGViZkMxdHZGdTBDQ3JKRmN3PT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZkNBWUFBQUNHVnMrTUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFIWVlBQUIyR0FWMmlFNEVBQUFiTlNVUkJWRmhIcFZkN1ROVjFGRC8zZDU5d2VRU0lnUzlBUUFYY0ZMQVFaaTlmcGVWejF0WS9XVFpyNVd4cGM3VzVrbkxhNWpJM1o4NXNyUzJuTTJzanRXd1pTN0lVSDRINHhDbkVReDREQVpGNzRWN3VzODg1djkvbEluQnZWSi9CNFB2OW51LzVudS81bnZNNTU2ZnpBL1F2MEhiL0lyWDNWRktQbzQ1Y25tNGluVUlXWXdMRlJtWlFVdXdqRkcvTjFpUkhoMUVaME5SVlJ1ZHF0MUJkKzJuU0t5Uy9PaHlzMCtsazNlLzNrUTlxdkQ0WlV0YTRWVlNVdVkwZWlweWlUaEFmb2NvT1JWZ0R1dXczcUtSaUFkM3JiY0V0alRqWUlvZjZXYUhzQ216VlBXQ014K2NnaDh0THFXTUthTVdzVWpMcW8yUnRKSVEwb096bWVycFF1NGVzWmdzT05rR3hIN2Qwa2R2VFQxN3M0T01VN1ZJOFpoamdHYU0rQXE5aUVOdThQaWYxdWR6MDdNd3ZLV2Y4R2xWb0NFWTA0UEM1V2RUYVhZRmJSOHZOdkw1KzNLZ2ZiNXhOTXlhOVJhbUppeW5hTWxHVFZ0RmxyNmJhOXUrcHFuRVg0dU11UlJnalNZRWhyTjd1dEZGZTZscWFsN05ma3c1aW1BR0h5blBwYms4Vm1ZMHhzdG5wdGxGQ1ZDWXR6VHVCTjgzUXBNTGpUdGV2ZFB6U1VuSjdlOG1ranhaMzlmWGJLRGZsZFpxYnZVK1RVZ0duQlZGNmZRMmlQSGc0VzE2VVdVd3Z6YmsxNnNNWkUrUG4wcHZ6N0pTZXVBeWVzOGxjcENtYUt1by9wK3FXcjJVY3dJQUhXcnZQMFlFemhYQXRMQWJzc0hocDdpR2FtdnlpalA4cnlxclhVV1g5WG9vd3h5QXVmTkJycDQzUE9CRlhabGtmOE1EUmlxY3B5b3dBd3B1ejJ4K2ZXdnovRHRkZTlzbXN6eWd0Y1I2QzF3YmR6Qmw2T2xxNVdOWVk0b0dhdGhKTXJrVEV4MGpBUlNIQVZzKzVyWWtRTlhiK1FnZlBMc1E2Z1h5SW5zcmVRZm1wbTdSVkZZZkw4Nm4xZmlVT2tZdlNoa1VQeHZidWt6b3k2SzFpaE0xaG8zWHpXNkV2U2ZYQStkcGlXR2FXZCtkb1h6THptR3dLWUZMQ0FzUkFsUEJBaE1sQ0ZYVTd0QlVWUHI4SGdWY0pIV3ErRjAwcGxyK0RNVGRyUDR6dnhZMTFrTk1oeFQrU2VUR2crZDRWNUxRSml0eVVHSk5COFZGWnNqZ1lCWk0vSUkvWENUa2owcXlET3BGMkFWUTE3Q0lqVXAvRG5UMVVrTDVGNWdkaitzUzF3ZzFnRTNnaWdtNjBmQ1h6U25QWGJ5QVBiSVh2K0lEcEUxNlRoYUhJUzlza3lobG1NRTVGM2NmcUFLaHEyQzBFNVBIMWdZYVhhTFBEa1pHMEhESk9uS1dIcDUxSTB6NVNPdXg4ZTFXQXVaemRIUXJUa3A4VG1qWG9JK2xhMHdHWnN6dWJxYk8zaWZRNkEvVzd2VlNZc1YzbVIwSkt3a0tjNFdIaUJrbVI4STNDQ2dJODdvT0w0cXpUNVArUlVKQmVqRU9nQVBLOGhZUHphdE0rZUlUcDJJTzl5VFFtZXJvbVBSeHgxcXhBY3NpbGUvdWJTZUViY1dRR1lFQ2doY0xZMkh5S2pvZ2pIMjVoTXBqcFV2MU91Z2xpNGVoMmVSdzBPMzJiSmpreXVDZ056ZzB2emxZTVNpU3MwdW9vNE1HN2hNT2pDRWFYMXlGRTBuU3ZqQnp1VG5FcEs4Nlo4SW9xRkFJdWJ3OGtnOUFyRWFSRVdTWkkrakg0WGJwNmc5RTlFbkpUM29hUnpETitNVUpCUURIbjU2YThvVW1FQnVzT3hCcy9ONSt0SkViUGtBRkRqOFVHdk9zL0lXdmNTZ2xHQmh2UzcvRlRZZnBXR1lkRFk4ZlBBeFdTQTM1c1RDNHA0K0xtNEFhcUlvUGVRdGZ1Zks2SmgwWmh4bGJzVVhPU21YTmlmRDVaVEFreURvZmJiY2NseG5BOFdOQXF4Q2JSTnlraFh4UXBhRHc2N2ZYVVlic2lHMEtodHYyb2VJdmg4cmhRTVlPY0VBcVhHL2VJK3puZ09jNXl4cjhxODJJQU0xYy9GTEZPcGxxdTVlRlFYck1aekdjVkNqWWJMV0c1STRCVDFldVJybGJ4dE5PdE1pdERERWhMWElJeW5BQXZ1T0VXRTNYM05kQWZ0OTRWZ2FHNDJYSVF0MFpYNlBlQ0UvcVFGZTlySzZIeDdZVTUwS3ZIN2ZXNGZTK3E3S0tCSnhzZ2dCWDVwU0FHaDFqSXJWaDV6UTZ3M1JmYWFoQlhtL2FDYkNaVGpDVUZVVHlXWnFXOXA2Mk1qSlBYVnFPclBnTU80TnY3NEdrZitvd2Z0TlZCRFFuakZKcUhTdzE3cFh2aFdXNUtacWUvUTQ5Ti9VU1RDQVZXb1FYRklIQkhYWGUzRlByVURzdUdEbXRGL2hIS1RIcGVreGhpQU9QSStTSnE2UzZIRjRJOVlXemtCSlRvNDZpVU16V3A4UGlyL1JpZHVMeEtZc1Nrc1Y4dkxsT1F2aEdYMllsUjBPQmhCakMrdS9nRWN2WTBBcEs3WWs0MU54alBTUW5XRkhURjY2VXJqZ2V2QjhDdTVhK2wydllTUlB0dVZEbzczaGhkTVNIblVYN3RUanNWWkd4QWwvV3B0aU9JRVExZ25MMjltWDYvdFIxdG1sa1lqOFc0WCtDU2pXY1VER1kxTnBTL0M3aFNLcWlNTE0vbDJRbVNXWjczRGR6K2dpbzhCQ0VOWVBRNDZxbmt6d1hVYnF2Qmt4alVRc1dmWkZnYnVvM3JBZit3TjdqT085MCt5bng0UGkzTCswbllMMVNjaERVZ0FQNGdQVi83SWQxcSsxSFNobXVHa0lxV1JQZ3l4TUZxUDhIZmpUbmpYd1k1YlFmYkpjdDZPSXpLZ01Ib3RGL0hlMWVnc2F4SFNxRzZ3ZmRtUTV4OE55VEZGcUJjcDJpU293SFIzeWs1KzM2aEY3dlhBQUFBQUVsRlRrU3VRbUNDIn0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIzLTAyLTA4In1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMy0wMi0wOCJ9LHsiYWFndWlkIjoiMmMwZGY4MzItOTJkZS00YmUxLTg0MTItODhhOGYwNzRkZjRhIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiIyYzBkZjgzMi05MmRlLTRiZTEtODQxMi04OGE4ZjA3NGRmNGEiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiRmVpdGlhbiBGSURPIFNtYXJ0IENhcmQifSwiZGVzY3JpcHRpb24iOiJGZWl0aWFuIEZJRE8gU21hcnQgQ2FyZCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUIyRENDQVg2Z0F3SUJBZ0lRR0JVclFiZERybTIwRlpuRHNYMkNCVEFLQmdncWhrak9QUVFEQWpCTE1Rc3dDUVlEVlFRR0V3SlZVekVkTUJzR0ExVUVDZ3dVUm1WcGRHbGhiaUJVWldOb2JtOXNiMmRwWlhNeEhUQWJCZ05WQkFNTUZFWmxhWFJwWVc0Z1JrbEVUeUJTYjI5MElFTkJNQ0FYRFRFNE1EUXdNVEF3TURBd01Gb1lEekl3TkRnd016TXhNak0xT1RVNVdqQkxNUXN3Q1FZRFZRUUdFd0pWVXpFZE1Cc0dBMVVFQ2d3VVJtVnBkR2xoYmlCVVpXTm9ibTlzYjJkcFpYTXhIVEFiQmdOVkJBTU1GRVpsYVhScFlXNGdSa2xFVHlCU2IyOTBJRU5CTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFc0ZZRUVoaUp1cXFuTWdRalNpaXZCalY3REdDVGY0WEJCSC9CN3V2WnNLeFhTaEYwTDh1RElTV1V2Y0V4aXhSczZnQjNvbGRTcmpveDZMOFQ5NE5PenFOQ01FQXdIUVlEVlIwT0JCWUVGRXU5aHlZUnJSeUp6d1JZdm5EU0NJeHJGaU8zTUE4R0ExVWRFd0VCL3dRRk1BTUJBZjh3RGdZRFZSMFBBUUgvQkFRREFnRUdNQW9HQ0NxR1NNNDlCQU1DQTBnQU1FVUNJREhTYjJtYk5EQVVOWHZwUFUwb1dLZU55ZTBmUTJsOUQwMUFSMitzTFpkaEFpRUFvM3d6Njg0SUZNVnNDQ1JtdUpxeEg2RlFSRVNOcWV6dW8xRStLa0d4V3VNPSIsIk1JSUJmakNDQVNXZ0F3SUJBZ0lCQVRBS0JnZ3Foa2pPUFFRREFqQVhNUlV3RXdZRFZRUUREQXhHVkNCR1NVUlBJREF5TURBd0lCY05NVFl3TlRBeE1EQXdNREF3V2hnUE1qQTFNREExTURFd01EQXdNREJhTUJjeEZUQVRCZ05WQkFNTURFWlVJRVpKUkU4Z01ESXdNREJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCTkJtclJxVk94enRUSlZOMTl2dGRxY0w3dEtRZW9sMm5uTTIveVlndmtzWm5yNTBTS2JWZ0lFa3pIUVZPdTgwTFZFRTNsVmhlTzFIamdneEFsVDZvNFdqWURCZU1CMEdBMVVkRGdRV0JCUkpGV1F0MWJ2RzNqTTZYZ21WL0ljak50Ty9DekFmQmdOVkhTTUVHREFXZ0JSSkZXUXQxYnZHM2pNNlhnbVYvSWNqTnRPL0N6QU1CZ05WSFJNRUJUQURBUUgvTUE0R0ExVWREd0VCL3dRRUF3SUJCakFLQmdncWhrak9QUVFEQWdOSEFEQkVBaUF3ZlBxZ0lXSVVCK1FCQmFWR3NkSHkwczVSTXhsa3pwU1gvelN5VFptVXBRSWdCMndKNm5aUk04b1gvbkE0M1JoNlNKb3ZNMlh3Q0NILy8rTGlyQkFiQjBNPSIsIk1JSUIyRENDQVg2Z0F3SUJBZ0lRRlo5N3dzMkpHUEVvYTVOSStwOHoxakFLQmdncWhrak9QUVFEQWpCTE1Rc3dDUVlEVlFRR0V3SkRUakVkTUJzR0ExVUVDZ3dVUm1WcGRHbGhiaUJVWldOb2JtOXNiMmRwWlhNeEhUQWJCZ05WQkFNTUZFWmxhWFJwWVc0Z1JrbEVUeUJTYjI5MElFTkJNQ0FYRFRFNE1EUXdNVEF3TURBd01Gb1lEekl3TkRnd016TXhNak0xT1RVNVdqQkxNUXN3Q1FZRFZRUUdFd0pEVGpFZE1Cc0dBMVVFQ2d3VVJtVnBkR2xoYmlCVVpXTm9ibTlzYjJkcFpYTXhIVEFiQmdOVkJBTU1GRVpsYVhScFlXNGdSa2xFVHlCU2IyOTBJRU5CTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFbmZBS2Jqdk1YMUV5MWI2aytXUVFkTlZNdDlKZ0dXeUozUHZNNEJTSzVYcVRmbysrMG9Bai80dG53eUlMMEhGQlI5U3Qra3RqcVNYRGZqaVhBdXJzODZOQ01FQXdIUVlEVlIwT0JCWUVGTkdobUUyQmY4TzVhL1lIWjcxUUV2NlFSZkZVTUE4R0ExVWRFd0VCL3dRRk1BTUJBZjh3RGdZRFZSMFBBUUgvQkFRREFnRUdNQW9HQ0NxR1NNNDlCQU1DQTBnQU1FVUNJUUMzc1QxbEJqR2VGK3hLVHB6VjFLWVUyY2thaFRkNG1MSnl6WU9oYUh2NGlnSWdEMkpZa2Z5SDVRNEJwbzhycm9PMEl0N29ZakYya2d5L2VTWjNVOUdsYXF3PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFGQUFBQUFVQ0FNQUFBQXRCa3JsQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUJIWnBWRmgwV0UxTU9tTnZiUzVoWkc5aVpTNTRiWEFBQUFBQUFEdy9lSEJoWTJ0bGRDQmlaV2RwYmowaTc3dS9JaUJwWkQwaVZ6Vk5NRTF3UTJWb2FVaDZjbVZUZWs1VVkzcHJZemxrSWo4K0lEeDRPbmh0Y0cxbGRHRWdlRzFzYm5NNmVEMGlZV1J2WW1VNmJuTTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlrRmtiMkpsSUZoTlVDQkRiM0psSURVdU5pMWpNREUwSURjNUxqRTFOamM1Tnl3Z01qQXhOQzh3T0M4eU1DMHdPVG8xTXpvd01pQWdJQ0FnSUNBZ0lqNGdQSEprWmpwU1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJajRnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJZ2VHMXNibk02ZUcxd1BTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGh0Ykc1ek9uQm9iM1J2YzJodmNEMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzl3YUc5MGIzTm9iM0F2TVM0d0x5SWdlRzFzYm5NNmVHMXdUVTA5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5dGJTOGlJSGh0Ykc1ek9uTjBVbVZtUFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdmMxUjVjR1V2VW1WemIzVnlZMlZTWldZaklpQjRiWEE2UTNKbFlYUnZjbFJ2YjJ3OUlrRmtiMkpsSUZCb2IzUnZjMmh2Y0NCRFF5QXlNREUwSUNoTllXTnBiblJ2YzJncElpQjRiWEE2UTNKbFlYUmxSR0YwWlQwaU1qQXhOaTB4TWkwek1GUXhORG96TXpvd09Dc3dPRG93TUNJZ2VHMXdPazF2WkdsbWVVUmhkR1U5SWpJd01UWXRNVEl0TXpCVU1EYzZNekU2TlRrck1EZzZNREFpSUhodGNEcE5aWFJoWkdGMFlVUmhkR1U5SWpJd01UWXRNVEl0TXpCVU1EYzZNekU2TlRrck1EZzZNREFpSUdSak9tWnZjbTFoZEQwaWFXMWhaMlV2Y0c1bklpQndhRzkwYjNOb2IzQTZTR2x6ZEc5eWVUMGlNakF4TmkweE1pMHpNRlF4TlRvek1Eb3lOeXN3T0Rvd01DWWplRGs3NXBhSDVMdTJJT2FjcXVhZ2grbWltQzB4SU9XM3N1YUprK1c4Z0NZamVFRTdJaUI0YlhCTlRUcEpibk4wWVc1alpVbEVQU0o0YlhBdWFXbGtPakpGTnpGQ1JrWkRRelkzUmpFeFJUWTVOemhFUVRsRFFrSTJORFl6Umprd0lpQjRiWEJOVFRwRWIyTjFiV1Z1ZEVsRVBTSjRiWEF1Wkdsa09qSkZOekZDUmtaRVF6WTNSakV4UlRZNU56aEVRVGxEUWtJMk5EWXpSamt3SWo0Z1BIaHRjRTFOT2tSbGNtbDJaV1JHY205dElITjBVbVZtT21sdWMzUmhibU5sU1VROUluaHRjQzVwYVdRNk1rVTNNVUpHUmtGRE5qZEdNVEZGTmprM09FUkJPVU5DUWpZME5qTkdPVEFpSUhOMFVtVm1PbVJ2WTNWdFpXNTBTVVE5SW5odGNDNWthV1E2TWtVM01VSkdSa0pETmpkR01URkZOamszT0VSQk9VTkNRalkwTmpOR09UQWlMejRnUEM5eVpHWTZSR1Z6WTNKcGNIUnBiMjQrSUR3dmNtUm1PbEpFUmo0Z1BDOTRPbmh0Y0cxbGRHRStJRHcvZUhCaFkydGxkQ0JsYm1ROUluSWlQejQ3N0pYRkFBQUFZRkJNVkVYLy8vOEVWcUlYWmF2RzJPb3FjTEcyek9Pa3d0MEJTSnRxbGNYVjR1K2F1dGxXaGJ6azdQVUFNWTlIY3JLanROYnE4ZmVBbDhhQm9zeno5dnBkanNHR3F0RjNuOHVUc05TWnBjNkpzTlQ1K3YweFlLbnU4UGZmNS9MNDhmZy9mcmljekpnWUFBQURBRWxFUVZSNDJrUlVDWmJESUFqRlhaT1kxVGF0TmMzOWJ6a3NTWWMzcjRNRTRmTUJBYUQ2emw4eS85VE9nZXQ4ZDVqZk43OGJ3TS9kRENScFI1MjF6WGZvakhKMDVJSXloQkFVU1ZBT05kR3pCWXQyZjdLRnJma0phQWtIaDlGWmhjRFhIUmtUS285TUxpaEdhYXZJbW5WM3F5RVgwRXByZ3ovNER3VUQ3a0NIUm5kOFFGTjQzR280VVZtRERnemE0dzI3b2l6ZEEyK2NLK3V1VXBqam8yK3h3Yy80Mlc1MHg1TEdZZURCc1IwSFZJeDV4OGlGNjBDYmxiVEVFa0ZyMjdiTkRCVVZTcTFPS1ZQYkU2MmIzRUg4RnFCZzVPT09FdWMydDhaSmlxTU91R3ArY0tqZzd3VkdjZW96cU40cHhnVlBRa2pGWWdiVkpLRFVoRENqWXJhd1A1cTRFVGdDOWZJTVJIdGl0cFFjQ3ZKT0VMY2JNc1FnbmNpUmtsanB5UWp2RzQ0anFCVUVURmlCaTFQRUl5ZWtPenNXK1R5NWNMSG9zNVIrZE1TMUx0U1N4ZjNnUUhjelIyQ0k0Z01OcFc0SVJBMVFNYTZ0SjQrQzZ1SHVHRThtTkRJeUZxZy9PUC9NTVV1ZVM2SXE4UzkwZEFlQkpTRXkvcUtrSytCTnd6OGNZWTRqYjVKNnU0aVdDSTJCMVo1NkxXNWtFYzRoa2RNcHN2VUM1NTg1U1gwUXViY2dOcXlmZ0RGRWNUdCs0MC8wUzVOeDB3YUN3M09La2NPYkE1SW4wQVlwMDFwamp3Mm42MjZVRGp0SHdhMjhpSHVUS3F0cnYrcmVXNDFOWjZpR2xyN3V1TEpDZmtGdGN0Y0cwNHNnbTFlTlMrWmFEbnBhVEVyR295WDVKSzJpTXo4eHMwbk93V0djUERONDlxYUNkNGJ6Sm96RFptL2FCSytFb3pMdytYaE5CaVl3SGYwc2lPdTFYUGtHL3pLd3ZxWUtjZlN3REVjSC9vVWUwN2VzL1dROHJJeWcyRE9Yajh0amtaZHVEQi9iOGh6RGxsTU1PQ1M1QkVuZDUzNGY4dGkzVVpjNGtNczN4THlhZk1Tc0poZEc4WFBxak5rNXRBZ08yNWZlS0NoblZkRGovSjBGTWtPc1UveE1CdjB3RmhZZUVHZlZIMTNmdURVMHlERkxhNGZjN1JuV0hCZnVURlYydEVtTndhZGM3YWMzVVkyamZCbDdIVDM2ZmUzNGlRTzVtTkNGRkJXMDdLalBncWhPTFUwMXZaOFB1ZVoySkNsRlpOOGprVXM2OXVrYTllUHA2K0VmTDRBRjUrTnl3U2Jpckh0Y0I4TWwvZ2t3QUVqa0s2NEtqSFBlQUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzFfUFJFIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiIyYzBkZjgzMjkyZGU0YmUxODQxMjg4YThmMDc0ZGY0YSIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlfSwibWF4TXNnU2l6ZSI6MTAyNCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6NiwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjo5NiwidHJhbnNwb3J0cyI6WyJuZmMiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fV19fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiTk9UX0ZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjAtMDQtMjQifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIwLTA0LTI0In0seyJhYWd1aWQiOiI1OWY4NWZlNy1mYWE1LTRjOTItOWY1Mi02OTdiOWQ0ZDU0NzMiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjU5Zjg1ZmU3LWZhYTUtNGM5Mi05ZjUyLTY5N2I5ZDRkNTQ3MyIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJSU0EgQXV0aGVudGljYXRvciA0IGZvciBBbmRyb2lkIn0sImRlc2NyaXB0aW9uIjoiUlNBIEF1dGhlbnRpY2F0b3IgNCBmb3IgQW5kcm9pZCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmYWNlcHJpbnRfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImxvY2F0aW9uX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZXllcHJpbnRfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVsZXNzIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDY0RDQ0FoT2dBd0lCQWdJRVRlMTJXVEFNQmdncWhrak9QUVFEQWdVQU1JR1lNUXN3Q1FZRFZRUUdFd0pWVXpFTE1Ba0dBMVVFQ0JNQ1RVRXhFekFSQmdOVkJBY1RDa0oxY214cGJtZDBiMjR4R1RBWEJnTlZCQW9URUZKVFFTQlRaV04xY21sMGVTQk1URU14RXpBUkJnTlZCQXNUQ2s5d1pYSmhkR2x2Ym5NeE56QTFCZ05WQkFNVExsSlRRU0JUYjJaMGQyRnlaUzFDWVhObFpDQkdTVVJQSUVGMWRHaGxiblJwWTJGMGIzSnpJRkp2YjNRZ1EwRXdJQmNOTWpRd05ETXdNVGd4T0RNd1doZ1BNakExTkRBME16QXhPREU0TXpCYU1JR1lNUXN3Q1FZRFZRUUdFd0pWVXpFTE1Ba0dBMVVFQ0JNQ1RVRXhFekFSQmdOVkJBY1RDa0oxY214cGJtZDBiMjR4R1RBWEJnTlZCQW9URUZKVFFTQlRaV04xY21sMGVTQk1URU14RXpBUkJnTlZCQXNUQ2s5d1pYSmhkR2x2Ym5NeE56QTFCZ05WQkFNVExsSlRRU0JUYjJaMGQyRnlaUzFDWVhObFpDQkdTVVJQSUVGMWRHaGxiblJwWTJGMGIzSnpJRkp2YjNRZ1EwRXdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUW5NdlloZmU2N2VPMTBTdy9temhxOHlETTVlcW5KaHl6UEVRMUJkdmNiR0dhTDF1MmhncmI4b05uTHdabHMva2loNGxteUZhS0xKNHp1NFBic0pwZ0lvMFV3UXpBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQk1BNEdBMVVkRHdFQi93UUVBd0lCQmpBZEJnTlZIUTRFRmdRVXRJTVRTQ056SWlRS1gzellkWm8rNFlIcEtIRXdEQVlJS29aSXpqMEVBd0lGQUFOSkFEQkdBaUVBejU1djdGaWFtWHhGdHE2Znd5aG9xTGorcHRDNVRtbFhFdFA1RmZQYk9wOENJUUNMMUs0UnQ5bDJvV3Q0VmtQaklUNjAzZm9GR0hWa3VSenJ1VUFtNzAyRTN3PT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSHNBQUFBdkNBWUFBQUREMkxXZUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFDeE1BQUFzVEFRQ2FuQmdBQUFBVGRFVllkRk52Wm5SM1lYSmxBRWRKVFZBZ01pNDRMamd4Z2N0aUFBQWNIMGxFUVZSNFhzVmNpWHRXeGJuM2orbXR5cG9RRXJJWlpSRkJGS3U0VkcydFZXbjE2bE9mZWl0WWJkVmJiYXRkckxidXl1SkdyVW9yZGFHVjdCdUJFUFlJQ0dRaGdaQ3dFN0oveVh2ZjMrK2RtWE8rc09TTGliM3ZrL2xtenB5WmQ5NTlsbk5PTHBJaEVTUmtBWkl1dmg0TURTVWo0WlgrRExyQi9QV29JTjdQbHhXSTA1V1NBRzFBaDcrdEVLNEhZNVVBZHhscWg5MysycUI0Z01yUU9VbzlicCtUbG9IQWgvMkNGMDI4OExtRFlaZXB3a1hET3cyNUlZY3I2MnVEb2lFbVpZaDVFdG9CbDE4SUJyU0xLVEhlUDVSZEdwUkVWSGNlYVhpV2dsQmRSY1NyNHgzSkc4VVl3ZU1qdUlMeDQ1TUM2eDNOVUx5WGxZTFA0L3dadWJIK0tVS1NzcTA4Q2dRY09JN0J3RmQ1ZkY2NDNwdWlIaW1NaGNhdW1lL0hYSCtpNnhnZVZtSkVTd1RYRUJtTCtIRUNCZjJXNDRhMlo2NmdPY3hzN0JERHFVQ2EzRmdKMXNSb0R4Q3JTeUxCUzlJb081ZnNMd1FXeGgxeTl0WGtrYVNLTExSRDVoUnE0SW5UZk1oWUkzNk1oM2J4cHVjQjE0dkE1dWltNDBWZFRXaTROanE4TUJXWXg1Uk9RTm5UaFNZeFdoeU5nZitVSXMrRkFmampDZzdnQ0dBV0wzTklPQWhvaWVnTW9CWEVtYUp1NHVBODJ4TURzSUg2VGh5WHJ2MTdwYnRoMzRpcHAzRS9jN1R2YW1xVTB3MzdOVFZLb3FOREJvSGFLeUVBeXVkZzVMeWc3V05HbE1DMUtpWXc3TEtCOW5acCsreHoyZnZDODdKenljOWt5MzMzU08yaUc2VG1waHRrNHgyM3kvYWYzaS8xVC81U21sY3VsOFBsWmRKOStDRDdlb015eFdBMFh4T24rV3VDSWpRNmJVNTJwQnJOUGtIRG10dW9KcHZvSG5wRmRMQ0tGakY2Mmk1Q0gyOUZTSjdkcG5lV1MxSGF4VktTbTNuQlZNdzhJMHJaMDZRMEowUEtjcWN6TDgvT2xNcjVzMlQza29mbDRLZHJaV0N3SCtNNm9rY0czeTVTaUFHdmNkSGRJeTBmcjZaQ1MyZWtrNGJTdk9sU25LTjBhQTRhakxaTUxXZEtXYjdTakh1Z1VXbXRYakJYOXZ6bVYzSjgwMFpGRnZHZk1vRWpnaWx5WUdCQVpicVM0MVhmdkVEVDFiSmgwWFd5Y2RHMVVuM05mR24rYUpVT2EyUDdvV0hVS0I4cC9VTDJ2ZmlTTkM1L1V3MUhPWGVHUDlySUUrWnNHRi9jc3BwV3JwU3l0TWtVeW9WU3VVdDJIVE9BdkN3cHlwbnVoSjhsSmRPblNzbTBTNlc4SUYrYVhuNUoranJhT05ySVlCWWN3aG9JMWIrQi9pN3ArT0lMcVZwd2hSUk5tMHpGbGVWbUJSbzRKbEp1T3Vrcm13RmFqRFlxWGE4cmNyS28rT0tNS1ZJNDdSS3BtRHRIbWxhOEpnT25UbExJWGpaakJsVlF6Nkdqc243aGxWS2FtU1psV1dxVWtJZlNYSktUSnNXWlUyWER6WXVrOS9CaGJXeWNXdEF5M2x0V3ZDbjF2MWdpZTUvL25SeXJYczg2M2g0bGdSY1pRa01hSVZCbHIzcGJpcWRlVEEvMWlaNHlMRUZZd2F2UGtTRFFvbHhsa0o2dXdzNVdKdE1teU1ZYkZrbDc4Yjh3MkFVQjVFUVIzT2pzN1R3cGU1NTlSa296SnFnM0s3NHdYam85RjRZWDZySkJPNVNlM0FhS0w4bWJJYVY2WFpLVGJia0t2K3JLT1hKaTYyYU9GZm5ZMktIMWcvZWxaT0xGVXB5bk5LaUNJWThTbFEyTlUya3NuUHB0T2Z6NXY2MnhHOVpQSzRjK2VsOWEzbm1IU3U5cFA4VDcvdDVvUUpWOWJqanc5a29wVHA5QTRVQklDTWNRRU1OZ1hub1FLQlFlQ1RLcTgvWHdLdVJrVG9WWm5xTjlnVE16UTZwbTVVckxYMWVSOElqeXlQZ0lyQWRqL2JhT1VwUEh2RnVVcGxFQzBVUnhWV1NESGxXeVUxeFJ0dFpuVEpKQ3BSK3BhTW9sS3N4THlBKzhHSjdrNlNKUGFnendlT1I3Ly9nc3h4czFPQVVFaVBFejBOZXZYajJYaG01R1pWRUZNcXhRV2tGSDBZd3A2Z0RYUzJLdzEzVlZZL084OS9kSTU0NHZwYSt0amFIZHhySjdvNEVSbFEwbE13em02VHlYcnhZNWZiS3NtM3lwRkUrR0FMOGRCQmxQVUFRRk8vVlNlbkVoaEsvS3FLQjNtNEtLRWI0MEtwVGx6NUNPd21JM3FrS2czK1k2NHpmYUhyV3RlcGZLUW9pMmFPR0VwZEVEaHJRdS9kdFNlZldWc3VzSlhZaXRXQ2tIUC90RWpoWitJWWMrK1ZpYTMxb2h1NTU1V2piZWZZZlNNSU8wQXhlVURCN0xaMS9HRUc0MHBManhjbzBzYzk3Ry9pZ2JNMjFyMXVoVU0xSEhtY0hwcGp4UERTczdMY2lpUEF1T3BEeE1ueUJIMXExakh4ZzNrQ0drbTRKdFVVYXFNSWpMUmdNakt0c3Job1NwWW5ZLytZU2NXRjhqSGVYbGNxeXNYSTZVRjUrVmpsYVVTRWRaa2JTdVcwdFBxVkxodzBqOHZBbWNESzBPYjlYTWZCbm9QdTE0QUdOR1F4QWVmNVRSL2w2cG1GT2docWVHb2taSW11RFJMcStjVnlEdG4vOVRoanA3WkZDOWFTaWh1R0Fvc0JMTkV3bGR3ZmYzeVVEUEdSazRjMXhPcnErVkw1OTZRaW9LY3FRNGJaSWNlTzl0Rzk5RG9PUDhBTnhvUmtwOWV4WWpQbW9XemlmUGxDV21EMVVzalV1TkUrc2FpNElxRXpXRW11c1hXQ2ZTNFdoeEdkQWhPYWtFL0tuQ3lNcUdJSlVZRUFKbE42MVl4dnVEYW5sSmduRkE1aUhjWWRDcTRScWVBNmE0ZUZLR0dkckpmS1o4OWV5dkErMld4ejNMQkhmd0g2dWw5REpNSTZaY1JweDhsTE9rOHFxWjB0VngyTkZrWGhEd2Nadm1GbmdPRjVYUHUzbzUyS2Y4dnMweVdyQWZXVHVidjNNQjIrUEhEUmpuLy9EYVR5aERUaFZxM09DNzVES05RbXFzVUhSRkxuWUdtTGMxVjk2UUh5b3VqbWdEcmdoZE5FYjRTUjFTbUxQVkF2M0t0U0JUR3AyeVV4VUVBQUxHR3ZORVhTMFZ6cWxCUXhrV0tKZ2VTdkp5cEhiQlBCbnM2WEVkRExjSnpTbEkvK29mZTlRTVQrbXBoRWRBU0JDZVJvMGpHcTdKdkNhMHB4eHMwck42RDc3czJ1RVBXNWhJUVg0N1l6U01ESWFEZVAxMGcycitERXJ0M2JmUkdHSGdtTFlneDBJWXFQSlJQa09uTVZVdXAwZzFDTXpsYUxQNWp1OVpkeUoycTNPWHJCQVo4bWdnSmMrR1FJdGR1RG53MWpJVkRGcFFTa2x3TG84bWtFQVVCdVhnM3orVTBuU2Q5LzFxRk1wVy9KVnpaa3JIaHZLQWc1bEQ1OUZ1V255bkdZZTI5M1FoWVJFMjJPY1hObENjZVRGQks0bUtQeTRCYUFnbVROODI4aUlWcGg5MEJQQjdZUzkranUyNkh0RnBybW9tb2xsRUs2ZWRyQXpaZXQ4OVVubnRWYVpzVGJnSEwwY3FtNVVuSGNVNmR6dGFBSEY2UWptcVNnbEdYcUNwVUgxQ0tOcS84ZzAzaGhLQmdrOHhDRUpqdlJHTEhEYWFPTjBwWmJPeFVOSDVXa002UWpqbXJzcVpPZEt5NmoyMjg3N2w4VmhJRzVRTnR5MmlsMkFxb1BGeFNsQnYwSVVnaGUzSG83SmRmd2YwWXJUU090YTZ0bEVMQUs2ak9oOFlMZ2huTlhMOWgvcGs1Mk1QVTdsY256aUZZZ3JDNHZiNGxrM1M5TmVWVWpobEVuYzNaVE0wU3VWTjVTSVdhZWZERHlxbWlBL2daSXJ4TkZwSUxZeXJvam52NUdYenFCRmdaRndZUEdIMjY1VGUzU04xOS95UWh3czJsOW1LdXJ3Z1YvWXZmODF4NUZhZ0xnRU5sTEQ1L3NWVXRqYytlamVpZzI2ek9zcEtJbUhvSHd3RzF3SDhCUnM1K2pXbmFqUXNlb095Wm01Y2xrY0ExOGlNaVFYQ3NTMWJwT2E2T1ZReXBpM1FDdU1zeXBvbWRYZDlUL3BWRG9PblQwcnBuRngzd0tON2ZuZzlqRmREK1liNWMrWDR4bzJHamo5ZUhnWTJUSFNkQ3FTMlFITUoyeVN2N0NUQUFnaDVHRnNMV29FNkpJclNxT05LdU83TzIzVmZPY21ZMHdURmxSU29JUzB6M0xZMGM4Z2NIc0RlNTMrdmN6VkN2ODUzMmljSVVYRlVYVDFidDAybmd4RjZwZHRGbEhrRGhDcWoyelpXZE44cDJqY1lFYXk5TmRleUx2Z2FYbnhCQ25WYlo4b3piNFZYRjA2K1dOby9XYU9OMVp3VC9kTDQyaHM4dkNyTnRvTWRXN1JteUxyTUNkTHczQjlWR09BSStFMm1FVTJPeGxIQW1KVnQ0K3ZBS3FSZzNSNFE0a2lSSTFTaDkrUnhLU3N3Ny9SNEVjb1p4di8rZ2ZWQmM5Y2V3S0wrSEsrclVhUElzWlZyckMvQ2VsRjJ1bFRQdjFLT1ZsWktRZzNLOTRIcGVMK05ZSmpnTkkvYSt6dzFZWVkyS0xpTHp1Wm1xZjN1VFR6Y3dRb2NZUnpURmxMVnJkZEp6MEY3QUlQNXZiTnBqMVJlZWJrVXo4RGhrUEtrdkdEeFdhVHpPczdPdS9idk4wcjBMeGl5KzJFK0NoaTdaME8vUVpkK3RsVVlkTUpTNVEwb21TZ2p3WHRoeVZBUzUxd3FUQldsVzZjelgrNUVEKzBLcEFiZWtEeHMvdkZkVXB3NTBUeEIreklxWU9GRGhVL1ZsWG02YlB2SnZkTCtyMC9sek40RzZldHhEMTVnakI2UE0wSmNNYUhlUnlmV085cjVrd0t3RDNMMVZxWDk4RDgvMXJuWTFqczhIZ1Y5V0ZobXBVbmpTMzhPWWtJZkdPYmUzLzVheXFZclQ1Q3hlamIzM2xwZWx6WlJEcnovcnRKbjdRMU0yTWwxcWNFNGhISC9PazJ5Z1B5Y2E1Y2dNQ0dIUHYrbmJyMXlxV2gvZ3NTd3BhRzU5dlpiMkRZd29RcnhSU3ZvQW05d1FMcGFXcVRtMm5rYUluSHNhSHRVNE1DUmFSSDJyQm8yOFpDaE9ITXlQV1BYNDQ5SzY4b1ZjclJtby9TZlBPWFFtVEVaV290SThUSWlRUmg3UkhEQzF4SThOZEhiSXh0dXZVbktzalNFVTI1S245dGFWUzJZS3ljM2I3RzI2T2Q0UEZwUlp0NnRTZ1pQUHBSRFJodXV1eVk4bU9GWXBNN0E2bEtIOFptekZXeTc0d21Jem5XUnVnNjB5dTVmUHlHVnVzY0c4NWkvd0F4RE1GYlhXVlBrOENmL1FJY1lJeVpFbHRVQ0FtTmFPTDV0aDZ6L3p0VlNOSDFLYkN0bVo4MldiUDhOYndkdTFGVXZtQzJidm4rejFDOTlXTnJYZkN6OVIzQUFZL2lDeHlQRE5ZWm1GZWkvTUFRNjBVOWxjS3lraEhMRERvT0hQekErVlNBVXVYM3BROXBJT1VSYkp4dWtvZDUrUmlNZVhEa2VqQ2VORElxcjdkT1BiUWduWXhzTE5hT0RjVkUyamlGUGI5N0t2ZUhSMGpJTm9aOUk2MS9mbGEvKzhEdXB1LzAyN2h1cjhuV2VqcTFLV1ZaRmxVOVBrNjMvdlZpeE9LRXBXQmFQQ2l3US9MbGFUMnVUYkwvM1hpbk9RSVF3b3luU0hNS2xrSFE3ZzZQSnBGRHFRbjNWRlhsU09uZTI3SGpvQVRteHlhMTRDZVkxUVJIdWNPZEM0R2xFK0VhL2piZmR6UG1YZkdKeFJvVlBrOG81ZVl4c2ZyQ2dPSTRqMHJwbXRVYTlmTktJT2Q0V2RtbkVWVFZ2Ym1pTDdvSGVVRWdOeGtIWklEWWhoejlid3djTDJGb1VaMC9tbzhkQ3RXNElHUThBR0tMeXphT2hITzZYMVpMeE1MLzd0SWJYUUxoT2FGckdKZVo2WXk4U3V2Y2toa3h0Z1NQVXFtdm1rRFo3R3FlNDg3TzVuZUZKblNhRVJUNktkU0VTWlFnVEM2TENyTWxTcXdycTFLMVNJaEVMNmFSaFpHVURjSFNNOWgyMTFYd0dBQm80Qm1UbW90aW1HeGRwRTFzL0dEZytYSjRZNkpHYVc2NVgyblBaajhsSEJkMWF0c0ZRWEZ1bXJ3SGpGc1l4SCs1NCtIN3VuN0hnOHA3cnd4SFB3NVZ3S2wvbk14d05Rc2pkRFEwT2c0ZVlnQ2tNeTVuUkc3ekhHNkNNQng2dEg2Mld1c1YzU2ZYQ2E2WG9jdlZrWFF6aHNhRVhPcmRxNEVGcFlPNm5FalU2UEhyRTA3cGRUendtQ1o2dkc4VEhPVDlFM3JibFIzY0hIc09aTi9qWHhXVGpxaFVPWVRMOTFKOEx5YzN2ck5MMjVpQStDb0pXNURVM0xIUlRuTzhmazFPS01EN0tkdFJqb1ZFeGQ1WVNpQmNLWEdqTnRUQmJOUU00VkxCcXBRanJ1NTkrV3JyYVdxM2ptQUNSSUFxL1hYdDJTL043NzhxdUozOHV0WGZjSWhVYVBndlRKM0hSeGdVYytGQkY4eTJhZkNqR0xmVFVpd296THRXRjRxMXllays5b2FaQTQ4cUpDeGhhY2tYTlQyeXRNMDlVbk9YWldEOWtrbmNZZGVXOEt5VFJiZDVQZkpxSGRZaXJBd3owZEV2bFZiTzVNQXZLZGs0RHBiZXRYZXNVYnQzWWRSUXdMbUdjWVV3Qmc5Zi82bkV5N1FWcklRM1BybldmcVhQbHJoZWVsUk5WMVh3RU9SNUFyNGh4aldzRWY0VEZudVpXUG80OStMZjNwWDdKUTFKNWVhNnNtemFKKzE4TDV4YlNzY2pEUXdrWUkvYnJPT0hxYm0wTmFKM2pLWmhTVEZIZW82ME9DejlFTC9CTEpibFVPdTBTMmZ2S2kyeHJPeFFITVpxNWFFT205dzhzWHlick10VTRzVFdGekVHbk9ncm04VzBhdWF5ZDI3dDV6YWNJWTFjMmlRWVR0Z0x2T3RRaTFicU5xTXJKNVJ6S2NLbWVnK05BRUgxNi96NTBjQkJqL211Q0RZOWZDQjllRTVPQWJRbDRCOXNYME5iMDNnbytEaTJhSHAzZzRibTZoVXVVcDBoaDlpVFovNWMvY3h0bEtqVWdibmNaYW5XTW52b3ZwZnE2cTBJSTk0cUNJV0dCbFRoek9oZ01zbVN2eHJYaHhlVmdWNmRVWEg0WmFlTFVwem5mcGRPOFl0NU1PUko3UU9LNnB3empObWViaFp2eVlKMFIwN1lpeGlvVDVTMC91cFB0eVB4b3FSMEJBanJpeGw0NTJaTWdWQWg2WUtCUEdsNS9oY2JIK1ZIcDg2OUxZVnVJaHhMbE0vT2t0N1hGZGZaZytJS1lYYmIzK1Q4eVhQdjlOUERSeUtkTmxEMi8vNjAxNHZqV3dYWGp0ZGtqb3FNV2NLRi9vSzFJcHhRc01qazFZS3JSeFMzbzNmWDRJOWFPTURwbkdSZGxlMThLRnF1dy9ydlhtMVVxb1p4M1FEQ0VtWi9EVjRUUXpyY2RLd1JEVTRRZWI0VGJWTVBraGEwWlF1cXhkWVgwSWlvR3hvbm55YnBWd3BZTkM3Wlc3UDFWc0w0ZmtIZ2VtYXZ4OURRMnlzWWYzRXBGa0VkNk4zaFZudFdydTV1YnRMWFNCanl1SHlEZzlPQXVzZnJvT1hwWUtndDBlK2p3d0FEOUN4OVZDK2ZKcWJvNlp4Zi9EOG9HZUNIZ3AxOFhUR2UyYjdYM3VGV0FvYi9PTzNoNFgzUHJEZEo3L0doZ2NFd3dERWNRSXJKWUVUL3g2R1B6NUtBMHZ2b2lweHNJbFFjOGpFaTZSOWVGNUZlL2ZZb3JmZlp4dUFoYWhnbGg3c1RXcjBoWC91Z1BvN2IreXEvMjMvN0xSMlNncTRmdjlDVDE5elFvZ0NaL2l5WDg5ZmJMdnVkK3g5ZWJiYUdtZE9YWm9oZXZUZTk3NlFWSjlNZU9wbE9FY1ZPMlA4UUxBbFhUKytwUGY1Q2lxWGJteThXTGhpUXVpQXF5cFBHVlY3WHQ2QWtlRGtsenRKTWFNbjljYXluV3p1UkpvNEIzbk5xeVdkWi9aNTdTYUI1a29WUG4yc3pKc3ZXbjk3dHplazJ1SDRGZXFxbzVlVUkyMzN1UHZWK0hneERGNFUvQm9IQ2NwdGxnTGdIaVpVQ3NEQXE5c1o3Y1hDZVZzNjZnczVnUnFVRnFLQWQrSEx0MnR4N1FWc1picWpBT0N6UmxXdW1qS0NFOUNNRUp0bHUzVmpXM1hPZSsxRER2b1ZCd0tyUndycHpldllmdHhneE9ZRUZ1b2FEQWNxUjBRcmcvS0oyTkRWSjcwMDFVRGcxUkZjNkYxZlIwMmZvVEtOdWo4SkhMRzVkT0F4dHFwU3pEUGtMd0hvMjV2eVJyRXQ5RTZlMW9aMHYwb3hOb3djcVdnSU01NWFaMVZEVHFkQTd2NlpINng1ZnlBUW1tRnRBRkhVRHgyRW9lME8ybGQ3QlVZZHc4KzN6UXR2b2poamxzdmJqUFZvVmpMc0l4NTY1bm50SzlaUy9ibVFEOFlhZ3B4cGNwQlA3RkZBYUJhQTNiV0VPZldTRmN1S0lUcUJOdkFCamNoaHNYa0NZOEsyZW8xRzFqU2Zwa3FYOTBhZmhjQ1JER0J3ckZWL2ZnWWluTmhJR29BV3QvTHZSMGp3MmxONjd3aHlnamdMWmhzK0c1eWdLblpuaGRpOUZDbzZJdEpOV29zREtmZTRWN0ZTdFpKdWpyKzFzZXdUZXU3SUZqeDJUcmcvY3hIQ0ZNaHBDRXBONXpjdHNtMXhKZzFrOElWSnVscytUcUJudlA4R2lURld5RCt1Z3hLc0J5OUl0U21NOFZLQmI5YTEzOWdhNjhjU2FOTjBYQXB6dGpUNThvalcvamZUdjBjU2FpUDc3ZnFYMTdwR1RxRkhvY0RBVEtRQm1mOXRUZXVKQW5nNmw0SHZCNzNNYW5KaHRDaG5UTFZudlA5L2w4Ry9Mak9LQlJ4NEozdDM2d0NqM0RPQUVYOFNqWVJZQnZYTmtZK0VoSnNWVE11WXdld3pDcFJQUGhSTllVMmZTRDI5d0JpNTJKZXdLUk9SRTdjUE83S25qYmtwL0s1c1Uva0pPYk5rbUM1K3FSTXF4WGRNZ1R6MWt3V2ZLbnU2bUZ6OGR4dE1wOUxmbTBzM1I4Nk5DNWN6dGFLaGgrdzJPQ3JIL2tmNlIwR3BSdEwyS1kwak9rS0Q5TGR2N3ZZOW80OVJCcmVCVllNUHg0QmdNTVRlKyt3NGRJd0kweE9FMUE2VG9WcnI5Mm5yYUFYSnh5QTNnbWsrRS9vbXlNdS9NWGVBMFkyeEpkdGZLMHluRGlxeExNUDBaYkZNWnA1WEdhbmZBT3JsM0xyMHN4cDJMMXZQMW5EOG5CVDFmTHFUMjcrSDZiV2JkalhqdHpFZWlRMEV2MUQ1L2pIS3NwbDIzMy8wZ1ZwaUhSbmZiQkdCRjlzQkxmK3VNZjJ0Y2hBTkRoUEJ6UTJkcW80MCtnb3FrRURiUDRMQXFLcUppVkw2ZGhKQnpUMFpFQ3NEbCtOSVdJZ1BLWkxxbjZ6bnd1enJESTllc0RiZzh6cCtvMCthRzFqZkZzWmVjQU1mam1sZTBZNkR2WUt1VlhYVTZQcm5SN1dSQU52SGkwZCtZQVZwY0dKbGdVTExrcjZXMXZ0YTlMVkNFSVpWQVMzaG5IZSswYmJyNWV0dnpzUVdsNC9qbHArZkFET1ZKVkthZDJiSk91dlYvUkVMRHFidi8zV21sNi9WWFo5dEFEL0VTb1NOY041cEgyU0JMS0s4TExmd1U1MHZiRjJpQXVtaUNMVnJQcjUwc3BkSDhrN1B0amo0MXZ3dG1VWFVhbmJQWWptTEd6djFZMnZQcXl2YUNabTJOUk1iYVF4Sk15dFBSOVF6KzNSb25ETjY1c3MxRUx3ZmlJcnlSVFY1ZEtaSkhpZ3JLNUQxZGhiWC9neHlRWWp6VzlVSWVUdStPUnBVb0hyRnNYUTNuYW40OU0zWlNnZ3NiUkpIRGljNkxLK1RQNUVpSStxRnQvN2RYY3JwVE5MYkErT2lZZWhLQ2ZQN2l3MTNsdGEvUFZiNTZXeEVCZlRBTVJQZDNORFZJMWIxWWtFN2Q0UWhrUFc0N1Y0anR2MTNoVTRNYndBemxBTWRIYnhlY0trSnMvWU1GNEtGY1V6SkMyVDZNUEpPTHJoQmdhd244c2pQdkZ3NmFiYitUREJqc3N3RmVNYnRFeEoxYzZQdlVQOStNZW9mMjE3NG42blZKMXpVeFZ6bFFweEdtU0M1M2VxM2dzNjNENWlJRTZUQjBvKzN0SS9ISVNDMGF1dm8wV2ZyNnI3WGNzZVZESE00UERyd25NMHpQSXN3TThMK2NDRStOd2ZJc0lOYmZnbWJXMXN5NXhQczREMWlHTTZTNnQzbmZYOHQ0WG56TkhVUU0xWGh5dktnZHM4L0FOV3poYjhFZ0NNb1AvZ0xJQlJqWEc3dHkxazFzeGVKYmZSdEREdGE1dThUM1NmL3g0YUV2bVZkRmU2UGhrdGY3Sng2Ukt0eDNsK1hqTDFEd3FuaXhhT0FXN09sdllvQndKQ1VMRFV5OS9INjlNN2ZuVGJ6Z3FCdVA0UmdSenhLWWVIUi9QNE9ITmZNODdHSnJpU3Bza2JmemUzSzA3Zk44UndJZnFVSFpnNFJoZ0NreDBubUVJcDNPb3dYTnRnY2dFK3ErZUplM2xSV3p0Y1owTFZObHVNQ2E4L1FIQXY5bFFaVStkYUorWElseG93cnZkVFcrOXlSWVJJU09CS2N3emd2TGVQenpEaFJtT0F3c3pKdlBRSHc4Tk1JYzJMSC9Kck53SUllRGFIOVJnNE42V0E3TDdsYi9JbHJ2dlZHK2Z6WlZwdWVMQld5ZUlHdDRJb0hndkVIcXZLZ21HeHBjbk1OZHJmYzMxODJYNzBpVzZCZHlpcENweU1qYWNML1B5QSsrdGxFSzhFSkV4aGUrL0ZXWk1KQS9GYWQvU3FlSWE5UzViR1lOSDV1ZzZEbUFrRGNuK3Z6d3YvNTd3TFg3dWhFK0FrU2kzeWY4bE94Lzl1ZlRwbGpUQU9RWS82LytnR1F6cW9xYWVyN0VlL1BCdm1qNWd3cDcwek81NklqS0dSb1preXpYb1B0RXVUVzh1NDlPeDVtV3ZTK3V5MS9UNkRXbld4ZFBoenorVG9XN2RSMnMvUC8rZ0g4ZUw0MUhsRDNTZWtoTWJhblEvL0pic2Z1cEp2c3RXYzlOQ2J2UHdBa0NoQ2dHQ3dJdjU2M1FyaFVlRjFkZGNKYlYzM1NFN2Z2VzRIRnoxbHE2Y2R5bytXMU1Bc1pXZ0tLUGJWS2ExaVVFNVdscWlOTDdNLzIzU3ZQeFZPZkRtNjN3MUdndW9JeldWVkVpU1hHTEZzWUZSMGQzZUl2dGZlVW5sOW9iUzhEckgzN2Z5VldsODgyVnBYZk94YlVNVnpqNU9NVEJsNncrSWpCS0VIRmVTRFpac3E5SDlrWUFMUTdaVkRGNFltaVZ0aXl3endJVlA1eGduaERqOXNWdHFGcnFJT2RQZUpsMzdHbFdCWDhyeExYVjhtZkRFaG1wTFdvYjNkdTdaTGYySDJqUXNka2VPckJCWFVsVG5DZ3F4WWhnekFsLzJ0SG96SFRzQTNRRE9EVENFWGtRUjBuUVU2S0tRNHpTZERkR2N6Y1lHWHBpc2NkVTBBaXNTL0tDcFFrU2NKdlVTRTY0akhIVk9zamF5bFZERVZWQ0UxNDY3QkhpNkFqMnhlMzQ4Z3F1UGJxUGVqVCtNdDJpckJXTTBPdEFXSE9BaFdLQWRtYnZuaGMySFpBNnYzUnM3REludURFQ0xINU1sajF3ajRJQ24zem1QSm44M0R2eW5kKzcrTUFEQlVJSy9IMk1nTkhaMUZ3SzJOVndCaURQZTErNUhEUGo3cm8zRDRlOEczYnNhQ2ovV0pvUXg3ZTdiQWtJN1YyZkZpQTZXazROYXlBSFJPQmpCeHZJSjNTS2pBYzQ0TjJNQVA0QWFFOFpBbVhpSEkwZTlHOTl1NmZoeDVoVzRRSXNhQUl4UVFLanpCZVpvci9kakFya1FjRHVnRFcwVU41WW53bWZEaUxKR0prQ2pKUnJNM2RJK3BwVmdGUDRHSUpSeEQyM2ozbTkxQUZMaityZ3NWb2phQVl4R0c0OWwrNHZhT3hMOHRhOGVLOFREZFp4WHcyL1h3L25pTmZzbFE1aXpYVytGcUJPQXpMa3l3SzZUMjR3SVNiZzlQaENrV1J4NURGaXRQK2RzTXF3aWZobG1JNWVmWlVoeGlOOUNXVk9nanBuUmFKRUM1VWlBSGkxbG9ZMnRoU25Hb2ZEWkdFRXBpdkdRaEJNWHd3ZFJXc0FENlVxNkovSi9VVmJXT2hOS2dBd0FBQUFBU1VWT1JLNUNZSUk9IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiRklET18yXzAiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6IjU5Zjg1ZmU3ZmFhNTRjOTI5ZjUyNjk3YjlkNGQ1NDczIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsInVwIjp0cnVlLCJ1diI6dHJ1ZX0sIm1heE1zZ1NpemUiOjIwNDgsInBpblV2QXV0aFByb3RvY29scyI6WzFdfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMDgtMjIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJSU0EgQXV0aGVudGljYXRvciBmb3IgQW5kcm9pZCIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjQwODIyMDAyIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMDgtMjIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MX1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNC0wOS0xMCJ9LHsiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbImJjYjg4ODAxNjFhMmFjYzE3YjU2YjI2ZmM1MDVlYzM1ODBmNjEyY2EiXSwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiYmNiODg4MDE2MWEyYWNjMTdiNTZiMjZmYzUwNWVjMzU4MGY2MTJjYSJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiSUQtT25lIEtleSJ9LCJkZXNjcmlwdGlvbiI6IklELU9uZSBLZXkgKFVTQiBBKSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxNjc3NzIxNiwicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoyfSx7Im1ham9yIjoxLCJtaW5vciI6MX0seyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDM2pDQ0FqK2dBd0lCQWdJR0FPcTBBQUFDTUFvR0NDcUdTTTQ5QkFNRU1JR1JNUXN3Q1FZRFZRUUdFd0pWVXpFTE1Ba0dBMVVFQ0F3Q1ZrRXhEekFOQmdOVkJBY01CbEpsYzNSdmJqRXRNQ3NHQTFVRUNnd2tTVVJGVFVsQklFbGtaVzUwYVhSNUlHRnVaQ0JUWldOMWNtbDBlU0JWVTBFZ1RFeERNVFV3TXdZRFZRUUREQ3hKUkVWTlNVRWdTV1JsYm5ScGRIa2dZVzVrSUZObFkzVnlhWFI1SUZWVFFTQk1URU1nVW05dmRDQkRRVEFnRncweU5EQTVNVGd5TWpBd01EQmFHQTh5TURZME1Ea3hPVEl4TlRrMU9Wb3dnWkV4Q3pBSkJnTlZCQVlUQWxWVE1Rc3dDUVlEVlFRSURBSldRVEVQTUEwR0ExVUVCd3dHVW1WemRHOXVNUzB3S3dZRFZRUUtEQ1JKUkVWTlNVRWdTV1JsYm5ScGRIa2dZVzVrSUZObFkzVnlhWFI1SUZWVFFTQk1URU14TlRBekJnTlZCQU1NTEVsRVJVMUpRU0JKWkdWdWRHbDBlU0JoYm1RZ1UyVmpkWEpwZEhrZ1ZWTkJJRXhNUXlCU2IyOTBJRU5CTUlHYk1CQUdCeXFHU000OUFnRUdCU3VCQkFBakE0R0dBQVFBbGNUWXNDVjJMeHV3SzhRNVBLKzAzL3dTQVBTcFFaUjZrMTJQMnBxZkIxcDdNM0pVZlV3dmVtaXRvaEtKWTJFZXBQTGFkSWl3ejJnVmFyUEI2TUZjL0g0QlJtdjV5Y1VZaFd3SnlQaVJmcUZKUXJjbk9yMlFtR1VtN24vR1poUUtWejV1cjhMN05PcG5vbnZ4Y3VoY2V1amVlMXhIcElVK1dyeUNvMmhwTmZYb1lpS2pQREE2TUIwR0ExVWREZ1FXQkJRN1ZqbEwzYWdTVFh2VkFGeUtiNEdJRWNwMHd6QUxCZ05WSFE4RUJBTUNBUDh3REFZRFZSMFRCQVV3QXdFQi96QUtCZ2dxaGtqT1BRUURCQU9CakFBd2dZZ0NRZ0UrZmJiSkZjWGlGZ1FaYlpyM3hRZFVXU25nZzFoTnJrSEZIaDVRNlJFSFhIRVhheXgrSW1mMDBpUG9OcEFFNmM5bUNTVFZlV0JzR09xRFM0QjM2UlZRb1FKQ0FiWHdNRCtsMUYvTHN4UkJlNCswTUhod3IyMHY2aGttK3MyS09WVXIybitJQXoyY2doQ0NsTE9UZFhYdlFHbDQ2NTNYWDN2d1g5VnBneVJTVVQxdGhpZXgiXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBRElBQUFBeUNBSUFBQUNSWFIvbUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFGaVVBQUJZbEFVbFNKUEFBQUFvclNVUkJWRmhIelZocGNGUFhHZFh5bm1RdFhpWEwrMElhc01IR093WWJFbEpLZ0VrQ0FhWU0wMHliTW1sTEtBTmhuOG5DWmdncDVBL1VoSTR6aE5EU2FXY0tKR3lGTUtHQk5ISHhnbzF0R2JNYmIvSyt5SllsV2N1VDFITjFoVkJrVzlJUFluTEc0em52M2l2ZDg3N3RmbGQ4aDhQQkc0WEdlMTExbFpyZXptSE9adWZ6WFlOUEV3NGV3d3BqRWtLeVp5WEZKeWxjZ3g3d2xuWDg4SGZIRDEwMzZpMFNLU3NRQ240VVRVNWdXeHRuSHpGYUkxVFM5VHQrdm1SbHJtdkNpU2V5QnJYREsrYVVHSFRXNEZBeEJOSEJDWUROWmgvc055WlBpVGo1M3pVOG5wQU91bVIxdHZjdlNpOVd4UVREdG5SaWdtRTJjVWFqdWJSNUd5TVU0NUhLc3M5TzNpK1RpWVhNeEJscE5DeG1UaGJNbnIreEVaem8rR0R0YVNId1REVUJJakhUMjJVNGZ2Z2FPTjlnTU14Ty9EZ3FOb1QvNDRWM3dMRGJIYnJCa2JLMkR3UVhUNmxsOHFDZmdpWkFJT0RiN2J6SzcrOExwOFFzN0d6VFBYTVBQb0hERWE2U0NqbzF1c0RMQVl5TWZNWWZ6Vi84OTN4MEx3RG9vK09INndNQnhIUnBoZ1JXQ3hlZ0E3RWxrZ1VWVml4bWVIeVN3cHpWTGdBUUFjNUhMQkFLeWFQRHdTZFM3QTVFTVo2eHhEVENCYWdNWDJXeFlCZGVRS0x3cFQyZHVyUGw2eS9YYjc1UXZXRjRjTVJxc1QyWG9yeXMzb1FSaFVxR2ttMFlObS9ac3hDUFg5L2FyTzB6Y0p3OVBqbjhzbm96MWl4OUk4ZWdON3UreXgvNGVCRVg5UWZUaVBXMWxSbWhFUkx3TlV0UGlJTVltR3A2WGp5ZGZYU3ZGM1ppUmNKdnY3cERSOElVVXFHUVgxbmFWUGJOUXp4dUxKcHY0NGc1NmF4ZkNBSlpDRlAxOXhpTGlwZUJOei9zcXloOUpBNWlyVll1TFRNT0kyMlArcTFXRzEvQVoxaEJRMTJIOHhPOHlkT2lZSzBJaGF4bzQzazY4c2QzWDlMclRKVDdnejBnYStIay91MjZBb0dRdUh2NzIyY1VrVEtRRVlNMXR6QVpSRjJsRVlrWUVCaXNvMlVJQkVqUGpvTldKUGpnZ1BHckwrb3g4cHUxaGZpOE94dDh3Y0ZEYlBrQmlYUUx0M1hmSXZEcTBwWTc5UjJzaU1HZ1BEZ29WRUY4V24yOUZlNERRYlFpemgvZTdnYlBtWldNNEFNSkNaZnMzM1lKQk5oNWFNbmd3QWpsdnVIZmliRDg2czB2VWI1bnk3a0lKVEVWeDlsU002THA0TzJiN2V6akF4NW1VOS9RZ0dUT1RJQTVRV0JDSzJmN1Iwa1orSUpsNlFxbEhNNGxTMzNDanhQdE5qdSs5NjNOYzhDdm5Hdm9hdFBSRm9PejJMTm1KamlYOE83V2R3bFoxL2ZBYkRVVnJTQVNHYXRVeWZCeDhPRFFvRS8yWFhYTzgzWVh2NDRrcGR3SC9NZ2FHalJ0K3hOeEg3Qm53NFV3WnlZQ2NDdE53NVlIQTR6b1NaV0IyV3JMaVN4Z2FtWXNOUXhLRjdMaDRJNHI0UGx6SjAxSmk2TCs5UUZmc2xBU1pUTFI0cFZaNENjL3IwVDFwdWNCL001WmJIQVRlRTFGVTVDRUphdWRRSXkzTmcxUW5wbWY0TjVlSmhlZk9GSktlZEhocGYwOXc1U1BCMSt5dEgzR1BVZElVUUFPN2I0Q1gxQk95bmNRRXhvbUJiK2o3b0lsNkRnRnB1NDNkSUZNejR1RFVla2dzaUZVSWQyMS9pejQ1TFNvM01KSk9ERG8xSmdZVnhiU08zbXlZdmI4NThFLytmQWIyQW0rb0ZNMnpwYVNGa041VFhtTE85NHBVR25yYnJTQlpPUW5vT1M2enh3WTljSS9hd2U2U1dEdFA3b2NoY1BIY1RTdXJJRmVmZEdmbDFKKzRzaDFlVERwWlNtczFpZnhqa0tGbktDY0FpclZsVVNXUkNMQ24zdHJHQ3hNS2QyMWdSaE1HUjB5NzdWcGFKVHAxR2lNTFFzV3hsVnBXazRzK0o1M3ppT3Q4S1YwQ3NCc1ZuNGlTUE9EUHBQSml2cE94eW5nMDlzMW5aUm41c0ZnVDZJYkovZjFxdzliR3Z2QjkvMWxHVzRXNHhsc0RGbFlpVnAxNExOZmd2ZjE2RStmcUpKSVJYUUtjUEFjTnFzOTc0VWs4T3JTWnM5NHA0RHhOQzFhV2hxeUN4SVJESFFjd0x1RksyVGJWcDBFUndqK1llc0x1SkRSS1MrTWFTMEhQcStNQ2dicmFOSFN6b1ZPRURoNGZBRjViMUNEM2dJK0d1Z20wTW1BeUVQRlh2YkFDWVoyaXZMNDVBZ2tPK1ZlR09OYklTSkl5dTVZZXdZOFkwWkMvcHhKWm8rc29STFZsYVNVNXhZbW1ZemU4WUZ6S1RvK1JDb25CcTRxYmZaS0NHVDMvcVBFRDhCSFd5K2ljRkR1aGJGakM2NzU5NzlxQjNwSjFudzBLbXZFRXJicWY4MGdhYmx4NkY2ODdJSHNRd21ndkxhaXpmUGlDWWRPU2xFV09yTzd1T2cvckpnMGpYVEtDMlBMSWtHZ2xPMWNSd3dHYnk1WWtrYWRRb0dkYmxXM1U2NktDYkhaZmlBTGUrY1VrTWlEWE8yQTNuTmp2T2Z1ZzYrRG9KUDllMGtaYnFaMGZEVEdsZ1VnZXNxdU5pTFh3RkdYMFk2NnJjS3lBdlZONGtRZ016L09NOWNBcTVsTHp5WG5Va05OdTVBUnV1TVMrWnRiNE1ydXZac3VTbVVpcnhUMnhMaXlxTUhlKy8xcGNMR0VlV1BOVEtQQjRwNUNxcUlOQkUvTjhKYUY1TXFlU2NwSFhVV2J5Tm53QUhpbC9oNDk0Z0hjb0RPZi91c05GQjA2TlNiR2xRV2dIYmgvcDd1bW9nVjh5OTVGdzFvVE5SaGtNWXdBY1FPT3FQZXNpcWdMU2hWSllRQWREdTNEQUt5Wjk4clV5S2dROEIzcnppaWo1TDd2RUw1a0FSR1JzcUwxNXlqZnNITytic2pWOWNMRk5MeFNNMkk4a3hHQmxUM0xkUURjcW1tbjhZNlh3VjM1d3hKeXZHcWF0TmN1M3FYMXhRZjh5R0lZWVVmYjBOZGZOb0N2MmpoSHhBcHBwV0hRVnoxdVlIQjBvbEJSam5NSk5ZWHlqdFpCZWk2TkdDd3IzcG9oZGRhQzk5LytJa0lsY3dmY2VQQWpDOEFkNXNCMlY5Zjd6czZYZFlQRVlIRGkzVnJYYlNJOUt3NzlKK1VXRTVmdFBDNXJ5eldpSUplcFVIWGYzZjhLT0pLZ29hNWR4UG94RmVCZkZ0N1lPR3c1ZGF3S2ZQbWJPYUdoRXRnR2d6M2R3MVl6VVpNek81RVNLQUJTczBpdTFkMW9GWWxKVU90MTV0VmI1NElBU0NEY2hRSzVtUHFYQllTRVNUNSszMld3WFljWGF3ZEltY1ZKY0xPTStIRjZYZ0x0cSt3Mmh6SmFUc3U2dXFvVmRRUVZIMG13ZWh1UjllMmx1MTBkcnA3Ykx3S1NoWklJRVNVSHlDOVBoZk1teDhhRm95Z2diTlhWSkJsVHBrZGpBZXprdkhlNCtyQjd0N29SbDBQYWtVMjdGOUtSQSs5ZENvc2duV01nQ0VnV2dNUHIyTUh2S2YvMDdKdHdEWFp0cUhFVjFkakVNSmdLYWZqaUwxTG9TRStIRHJVa0xqRnN4ZS95OFBqbDM2cTEvY2JBZnhmaS8zcGhTYmRHNzlYS2pRazA1Z3FWUERvMkJOVzF2cm9kRGdMU1NDVHhteC8yR2cxV0pHblN6eFJvR0ZGUkcrLzJRSVFxSmhobkYvS3V2a3FEeC9GT1FFOVl6TFlaTDhielY3MTZ0TDFwS01EM2dKdGdGUkRVU1d3R1dmUVNnWWloVzhLNWtJc3BXa2dobE5ZTzl3Sy93QmxWTUM5Sm9JeVNlWjIxUGdESElhVHdSd3NQL3ROSDk1YllIby91NGc0bmVDM3dDN3kySWtvbW1Kb1Y1ZGxBUG5QZ21FckxqUlhNWDV4cUdEYkRIYTdoWndxYXpuTVhUaEVrSnNkbXpZcEdvTGxtbmltTWV1dXJ2MG9Wc3pJU3RocE54OUs4ejVTUmNoOE4wQVNBM0FCTWxzc042NlJCd1NqRTl2ajQyTDJmTHVocUgwWVN1WlpNT0pDemZUMkc0bFBMb0FreVVCZjR5T3BGUy9MM0hWdWcweG9SY1JNY1o5aHV4R0ExbXl3bEY1Wm5aS1ZBREI5WEw1eFpLRFc0RjJDK3NiR2x1T2lhdXJ3UEYzYmNRdUhUeDA1OXVzNGxyNDEzaDFWUTlteWNyV0JCM1BydDgxV1JrUUtHendqSlQ5UE9YNnA1RGp0blI5UmprZGxpYm55Z3FmeXVxZm1CVmo5a2hyK2RwbnVxOW5NV1BaVEFrSER4ODFPVk0rYytsNUFZdzRwWWROaXNtTUZWaXNmai94L3hxT2NQUmRTdmF3QUFBQUJKUlU1RXJrSmdnZz09In0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMTItMjciLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MTY3NzcyMTYsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiSUQtT25lIEtleSAoVVNCIEEpIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVMkYxMDAwMjAyNTAxMTQwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMi0yNyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxNjc3NzIxNn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wNi0yNiJ9LHsiYWFpZCI6IjAwNkYjMDAwMiIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFpZCI6IjAwNkYjMDAwMiIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJIYW5rbyBVQUYgQ2xpZW50L0F1dGhlbnRpY2F0b3IgQ29tYm8gZm9yIGlPUyJ9LCJkZXNjcmlwdGlvbiI6IkhhbmtvIFVBRiBDbGllbnQvQXV0aGVudGljYXRvciBDb21ibyBmb3IgaU9TIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoidWFmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9kZXIiXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX2RlciJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX3N1cnJvZ2F0ZSJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmFjZXByaW50X2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsic29mdHdhcmUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsic29mdHdhcmUiXSwiYXR0YWNobWVudEhpbnQiOlsiaW50ZXJuYWwiXSwidGNEaXNwbGF5IjpbImFueSJdLCJ0Y0Rpc3BsYXlDb250ZW50VHlwZSI6InRleHQvcGxhaW4iLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOltdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUF3d0FBQUVzQ0FZQUFBQnVURFJrQUFBQUJtSkxSMFFBQUFBQUFBRDVRN3QvQUFBQUNYQklXWE1BQUE3REFBQU93d0hIYjZoa0FBQUFCM1JKVFVVSDRBVVVFQmdVU2V3UnpnQUFJQUJKUkVGVWVOcnQzWCtNSEdlZDUvSFBVOVZkL1NOR2pBTlJEQXZaTnB2eHhEZzNOL0hHUzlBNENvbzJtRnNoT1pvaldpMkNMQWlEN3lDY1FNVDVnK1QyN2lDSmRBbXJJQkdRd2cvdEVTSWpsTU55cElnajVHUVJKUmJjQmhtZk44N0VucEFad0F0R1FHYlFKVFA5czU3N3d6MUpISHM4TTExUFZUL1YvWDVKVnJTTHU2cjcrMVMzNjFQUEwyT3RGUUFBQUFDY1QwQUpBQUFBQUJBWUFBQUFBQkFZQUFBQUFCQVlBQUFBQUJBWUFBQUFBQkFZQUFBQUFCQVlBQUFBQUJBWUFBQUFBQkFZQUFBQUFCQVlBQUFBQUJBWUFBQUFBSURBQUFBQUFJREFBQUFBQUlEQUFBQUFBSURBQUFBQUFJREFBQUFBQUlEQUFBQUFBSURBQUFBQUFJREFBQUFBQUlEQUFBQUFBSURBQUFBQUFBRExDcFFBYzhhVUcyVzlKV2pyOHNDb1pvemVFb1lhLy9ORit3SGYzL3N2SXZQeElOUzdPbGJIYlVmUHRJMytHTGYwbTIzV25xWmxBUUFBQ0F6b3dYRmpOaFVydWp4c2Eyc1FhQ3lvcUZhV3BPSzVmOC8zRzI4YmFFTmdOQklZVFNyUVpOUzlxbjlaTldyRk9tdzdla2FCVGhXYm1xMVpXNmYxQVFBQUNBeTRVRUFJOWE0TkZZMnNwZlVMWlZYeS9MbUx3WmtRSVVtcVNDK1V6TEcyZE14SUowWWJkcG9yQXdBQWdNQXdsT2FNS2JjaWJaWjBWY0ZvKzRhS2FyUzJGSVlhRDZWeDZVd1BSTHV0eHpvRlRTK1c5TXpFdkYzZ3lnRUFBQ0F3REhSSVdDcnFuWkgwbDRXS2RrV1VaUFdMdjZCZEJXbFhxWEdtOTZFVDZ5Zk50djZGK1E4QUFBQUVob0VNQ1ZWSzByTXcxSGdZYWp3cVNyTmxNOWNLZEpDZUJ3QUFBQUpETHAyb21NMUJySGNYeXJxK2FycnpFZUJNRUtoV2tqNnozUFBRc0hxMDB0S3pUSm9HQUFBRUJuaHJ6cGh5czZLcmk3RnVMQWVxS2FRbVdRaERqVmVsOFRqVXdrekpIR28yZFlnaFN3QUFnTUFBYnl6M0prUVZUWlVrdHRycms4Qm9KQW8xRlZVMHRkenJzTFZwajFBWkFBQkFZRUJmVEVkbWV6SFFkZVZBay9RbStHVzUxMkcyWWhiYWJYMnYyTmFUREZjQ0FBQUVCbVFXRk1xQlBsZ3RkSmRDaGJjQ281R29xTDBxYXU5TXlSeDR1YW9mTUVrYUFBQVFHT0RjbkRIbFZrSFhGa0x0SWlqa1V4UnFLbXBvaXVBQUFBQUlESERxWk5Yc0xKYjFrWWpWamdnT0FBQUFCQVlzV3g1NlZBcFVrNkVlZ3h3Y2lrMGRZSTREQUFBZ01HQk5UbFRNNXNqcVV3dzlHcDdnRUpkMS9VelJNRGthQUFBUUdMQ3lveHZOeUlZbGZiUWNhSkllaGVHeVBEazZEclZyT2pMN1dZNFZBQUFRR1BDSzVRbk5HNHZheXg0S1F4NGNBdFdxZ1Q3L2ZOa2NialQwWFRhQUF3QUFCSVloTjFNeVd3c2xmU3dLR0g2RVZ4VURUUllybWp4Wk1nOUZUZjJRWVVvQUFNQm5QUE5Pd2RHTlp1UVhrZmw0Rk9xTEFXRUJLeWlGK3BBdDYvNlprdGxLTlFBQWdLL29ZWERzWk5Yc2ZLUFZSNElDeTZSaURZbmRhQ1FLOWNWZlJPYXhzS1h2ME5zQUFBQUlEQU5xZVZKemlVbk42T1dMV05DdU9OUzdaa3JtSDBjYmRwcUtBQUFBWHpBa3lZSHB5R3gvWTExZktnYWFwQnJvK2N2NGFtL0R4K2VNS1ZNUkFBRGdBM29ZRXBnenB0d3A2c1BWZ25aUkRUajdVaGEwS3c0MGRxSml2anEyWkdlcENBQUE2Q2Q2R0hwMDNKaE50cVE3QzRRRnBQSEZERlFyRzkwN1V6UTNVQTBBQUVCZ3lKbVRWYk56UTBYM3N3SVMwaFlWdGZmNXN2a3NRNVFBQUFDQklRZm1qQ24vSWpJZkwwbWZvUnJJU2pIUXBDM3IvdVBHYktJYUFBQ0F3T0NwNDhac2lpUGR4aEFrOU9XTGFqU3lvYUw3VDFiTlRxb0JBQUFJREo2WktabXQxYkx1REVPTlV3MzBVMG42ekV6SmZKQktBQUFBQW9NblRsYk56aWpVRndQRFJtendReFJxNm9XUytRZm1OUUFBQUFLREI1aXZNSHlhTFQwd1g5S2VodlRsT05hY2orOHhERFZ1UzdxVGVRMEFBSURBQVBUQnhMeGQyTEpvbjlwY3Q3ZldyZmExWWgzMjdzc2JxRll0RXhvQUFBQ0JBZWlyc1NVN2UzbmQzamRmMHA1bVJ3ZTgrZ0ozSjBOUFIyWTdMUVVBQU5MQVRzOTkwR3pwQWRmSGpJcmFTMlhUTlRGdkZ5VHRQMjdNb1ZKSmYxY01OT25MZTZzVzlQbnB5Tnk5dFdtUDBGSUFBSURBa0hPakxmdTQ2MlArc21vSURCblpadTFwU2ZlZHFKaURrZFduZk5uQWo5QUFBQURTd0pBa29FZGpTM1oyYzkzZTJwQytIRnN0K0JJYVdIWVZBQUFRR0FDUGJGbTBULzJwckZ2YmJUM213L3VKUWswUkdnQUFBSUVCOE1qRXZGMzRpNmI5UnJPai8reERid09oQVFBQUVCZ0FENDAyN0xTcDZ4WWZlaHNJRFFBQWdNQUFlS2htYmYwdm12WWJpMjNkM2UvZWhpalUxRXpSM0VDckFBQUFBZ1BnbWExTmUrUlBaZDNhNmVoWVgwTkRVWHZacHdFQUFCQVlBQTlOek51RmR6VHNGeG9kUGRUUDk5RmRjcFhRQUFBQUNBeUFqN1kwN01GK0QxR3FGdlQ1RXhXem1kWUFBQUFFQnNCRFc1djJ5R0pkZC9SemlGSWszWDdjbUUyMEJnQUFJREFBSHRwbTdlbWdxWHRhc1E3MzVRdHZORkl0Njg0NVk4cTBCZ0FBSURBQUhxcFpXNys4YnU5cmRuU2dYNkVoam5RYm9RRUFBQkFZQUkrTk51eit4YmJ1N3NlNXcxRGpuYUkrVENzQUFBQUNBK0N4clUxN3BGKzdReGNLMnNVZURRQUFnTUFBZUc2MFlhY1g2N3FqSDZFaEttcnZUTWxzcFJVQUFBQ0JBZkRZTm10UDl5czBGQUo5anBXVEFBQUFnUUhJUVdqb3g4N1FnZEZJSmRJbm1BUU5BQUFJRElEbkp1YnRRdERVUFZtSGhqRFVlQ3ZTRkMwQUFBQUdOakRNR1ZNK3V0R00wS1RJdTVxMTlYNkVoaWpVRlBNWkFBREF3QWFHVGxFZnJ0UzFrU1lGb2FGM2hVQ2ZJM2dEQUlDQkN3elRrZGxlS0dnWHpRbENROElmQktPUkRVdjZLTlVIQUFBREV4aU9ialFqNVZDZnBDa3hxS0ZocWFtdlo3bDZVakhRSlBzekFBQ0FnUWtNRzViMDBjQ0lJUlFZV1AxWWNqVXFhaTlMclFJQWdOd0hocE5WczdNWWFKSm1CS0hCdlVxa1QxQjVBQUNRMjhCd2RLTVpLVnA5aENiRU1JV0dla2RmeStwOFlhaHhoaVlCQUlEY0JvWTN2S3liR0lxRVliTzFhWTgwcEM5bmRiNUNRWC9McWtrQUFCQVljbWVtWkxheUtoS0cxWlpGKzFTem93T1ovRUN3YWhJQUFBU0d2TDNoT1dQS0JhT1AwWFFZWnFNTnV6K3I1VmFMZ1NiWjBBMEFBQUpEYnJRS3VqWUlWS1BwTVBSZjNxYnV5V29TZENIUTUrYU1LVk4xQUFBSURGNDd1dEdNUkVYdHBkbUFNM3MwTE5aMVJ5WS9GRVlqcllLdXBlb0FBQkFZdk1aWWF1QnMyNnc5bmRVazZLaW92VXlBQmdDQXdPQ3RFeFd6bVQwWGdITnRXYlJQdGR0NkxJdHp2ZUZsM1VURkFRQWdNSGdwc3ZvVXpRV2NYOWpTZDdLWXoxQW9hTmVKaXRsTXhRRUFJREI0WlRveTI1bm9ES3lzWm0yOUtkMlZTVGl4dXBHS0F3QkFZUEJLT2RBSGFTcmd3c2FXN0d5am80ZlNQZy9MckFJQVFHRHd5c21xMlVudkF2SXVxeHZzcUtrZnhySG0wajRQZTZFQUFFQmc4TUtjTWVXaTFVZG9KdVNkTVhyZlRNbDhNTzI5REdyVzFwdEdYMDM5aHlOUWJUb3kyMmxaQUFBSURIM1ZLdWphd0lobEhERVFvbEJUY2FUYjBnNE5XUTFOWXFnZ0FBQUVocjRyaE5wRkUyR1FoS0hHc3dnTldReE5vcGNCQUFBQ1ExK3hNaElJRGIycldWdHZXMzByN2M5U01uby9MUW9BR0ViR21JdU5NWlBHbUp1Tk1mY1lZdzRhWSt3cWY3N1IvYnRUeHBnSlkweUZ3SkFBd3gwdzZLR2hYZEovVFBNY293MDczWXAxT08zUHdiNE16djhCdW1jTi8rQ3M5bWRMWHMvdjZRMkJUZW5QTFZ5L3hocGpEcWIwWHJZTTRuWHN3M2ZVUVcyWC85eWMwOStFcWU1MSswZEpUMG42dHFSOWtuYXY0UkI3dW4vMys1SitMbW5SR1BQNWJ2RHdOang0R1Jqb1hjQXc2QzVQbW1vd2JqVDAzZFRERC9zeVlMQzlPY1ZqWDBaNUpVbTdqVEZ2b3d5NWNvMmo0eHpLV1ZDNHBSc1N2ci9HY0xCV2QzV0R4eFBkTU9KZGNDaDRlaU4xSGQ5RnJQV0d1Rk9XMDZkVFN4czBuOVg3ajBKTnpSVE43MGRiOXZFMGpyL04ydE16SlhNZ0NqV1ZadkE1YnN4M3QxbDdtaXNTQTZpVzRySGZRM2xmY2FPayt5bERicmo0TitVUmErMnBuSVNGcVc1SVNOdU83bmtlTWNiY1pxMDlTV0JZd1ltSzJWd09OTWwzRVd1OUljNzdaNGlLMmp0VE1xZEdHM1k2bFJ2NnBnN0VaVjJmNW9walVhVHJKZTNuaXNRQTJwRHl6UUhPdUpuQWtBL2QzaUFYVDljUDVPQ3pYaXpwdit2TU1LSXM3ZGFabnJkL2I2MzFvazdlRFVrS1lyMmJyeU9HVFNIUTU0NGJzeW1OWTllc3JiZmIrbDZxb1NmVVZOb3JQd0Y5Y2syYUJ4K2srUjVKdzVNeFpvSXk1TUwxam83ajlYQ2tiakQ2WVIvQ3dtdDkzNWU1VGw0RmhqbGp5bWtPblFCOEZSaU5WQ0o5SXEyYjdtSmJUOFpXQzJsK2htWkZWOU9TR0VBYlV6NytKWlQ0RlRzcFFTNE0vSENrYmxnNElEOTZBYi9pdytSd3J3SUROeHdZWm1HbzhXYWs5NlZ4N0N4NkdZb3hrNTh4a05KK3VuZ3BKWDdGelpUQWI4TXdIS2s3NGRpWHNMRHMyLzN1Z2ZNcU1IRERnV0ZYQ3ZXaHRKWXBUYnVYSVFoVVk0bFZETmpOMGNVWm5PWUtLdjJLSGNZWTVqRDZiUmlHSS8wMytUbS82T3NaL1NiNUhSaE9WTXhtbGxJRnBNanFVMmtNVGFwWlcyL0ZlalRWSHhUbUlHR3d2RG1EY3hDeXo4WXFpWDRiNk9GSXhwajM2c3dlQ1Y0R2Frbi9ZZWdEQXpjYVFQZTdFS2pXS3VqYU5JNjlXTldQVXcwN1RIN0dZS2xsY0k0OWxQa3NkK1ZsNTl0aE0rakRrYnJYM1owNStINzBaYUVFTHdMRG5ESGxRdUNzbXd2SXZhaW92VWMzR3VmTG9FN00yNFZtSjkwZjY2V2kza2tMWWtCc3lPSWsvUnhtNEtudGxNQkxnejRjNldQS3gxTEhmWG5JNEVWZ1dDcnFuV211RVEvazBSdGUxazFwSERjTzlKTTAzemNiTDJLQVhKUFJlZDVNcWMvQ2I0aWZYUFI4ZXprY3FkdTc4SldjdE1PK2ZqeGs4Q0l3Uk5KZjhqMEV6bFlvYUZjYWs0akhsdXhzcDZOaktRYUd5VFI2UjRBKzJKalJlV3FVK2l4MzBldmkzUTMxeFhMelpOdlgxWkgrWGM2YTVQMURGeGptakNrWEN0ckYxeEU0VjJqVFdUbXNZZE9kL0Z4dDZFcGFEd01ncTY3L1RaVDZIQ3l6UHBqdDRldHdKSmRMK2o0aWFaZWtzZGY4dVVyU3B4MmVJL005eS9vZUdCanZES3lzR0dneWpWNkdTa3ZQcHZtK0N4M21KQ0hmTW43Q1RjQSsxMDJVWU9EYXc5ZmhTSzRtYzB2UzMxdHJiN1RXL3NoYWUvSTFmNDVhYSsvdmhvZW5IWnhuZC9kOUQwOWdZRGdTc09yTjkxKzdQbWJOMm5xYWs1L0RVT01NUzBMT1pUbXZZQXZsUHNjZWhpVjVGWjRIZVRqU1h6azZ6cWV0dFE5ZTZDOVlhMDlLK29Sbjc5di93TUJ3SkdBTmdhR2dYU25kZlA4OHpmZGRlbG52b1BXUVk3VU16N1diY3A4WHc1SUdxeDE4SFk3a1l2N0NJNUsrdFphL2FLMDlLdWxlQitlOEpzc2k5VFV3dENJMnJBSFdvcnFvOTdnKzVtakRUcWU1OHpPOWg4aTVEVm1lckY5cnEzdnVrNVRBQ3dNN0hLbkxSZS9KZzliYXBYVUdqS1F5M1dDdTMwT1NydUo3Q0t5dUdLU3pJa0k3VHUrSkQ3Mkh5TGxyTWo1ZmxaS2ZJL054MmpnbnlBNzBjQ1NIUWYzSDYvejdSeHk5Lzh5K0gzME5EQVhENWl6QW1yNm9SaU16SmJNMWhVT25PaXdwcGZjTVpHRmp4dWRqQ04vNXNZQkNmdzM2Y0tTYWcyTThZcTE5Y1QwdjZQWkdmTlBCdVRPYmE5VzN3SERjbUUxQndOclR3RG80NzVFck5qV2I1aHUyWjFhRUFQSW82OTFVMzBySnoydUtFdlRWb0E5SGNyR2s4VC8zK0RvWC8vNW05cUNoYjRHaFdOSGxmQStCdFl0QzkvOXcxcXl0dDJJZFR1MTdiclNUbGtQZTlHbDFuc3VvL0hreExLbC8zNE9LQm50MUpNbk5rc2JQWmZ5NjE4cnNRVVBmQWtQWUZrTVZnSFZLWTRpUDdlaVoxSDVnQXRWWVhoVTVsS1NidjlmSmpQc28rNG9ZbHRRZnJvYU5IL0w0TTdvWWV2aTdIbC8za29OelovYWdvZEN2RmdwQ3ZZdnZvdC9LUnZmK3NtcUc3bk0zVzNwZ3RHVWY5L1R0WFNWcDJ1VUI0NEtlVC9NTmQ1ZFhQY0kzQ2psU1MvRGFCOVhqTXFuR21NbzZWMW9aRnJkMDY0cHNYZWZnR0Q0UFI1TGM5S0Q4dnNmWHplWHBZdWhMRDhOeFl6WUZSangxQk5hYjhGTllLR0JzeWM2bS9KNnZvT1dRTTBtV1ZQMWRndGUrbmRLZjF3NWp6QVJseUU1M09OSmREZzUxZ0dxbUtyT2V5YjRFQnVZdkFEMStZVk1hNHBQbVBJWlFmTitST3owdnFXcXRUZkpkcWxINkZURWZLbHZETUJ6SmxUOE14ZjFIUDA3Sy9BV2dkMm5zb0p6bVBJWXcxUGljTVdWYURqblM2N2ptcDd2LzdYVWV3d1pLdjZLYktVR21CbjQ0a3FzOUdOYTdwQ3FCWVQwbkRWaHFFZWhWS2tOOEFxWDZvOTRvNnkyMEhIS2sxM0hOUCs3KzkyU1ByNytHMHErSVlVblozVWd6SEFuOUR3eHp4cFRaZndIb1hScERmRjZ1NnJlcC90QzBHWmFFM053c0pWbFNkYUg3MzEvMStQcU50TUFGL1EwbHlBVERrZEQvd01DVFJpQmhZQWcxN3ZxWUUvTjJJZFVmR3NOREF1UkdraVZWbDlkVi8wMlByOTlEK1Mvb3J1N1RiNlJyR0ZaSGd1K0JnU2VOUUhMSGpkbmsrcGhwVG54bUdDSnlKRW00WFY1WC9ZVmVEOEFtWmF2YVRnblN3M0FrK0JNWWVOSUlKQlpGN29jdW1OakpKaklyQllZYUU1K1JFMGttSHM5MS83dVk0QmhWbXVDQ3JxTUV1UWhrREVjaU1DUytjZUJKSTVCVUxPZFBJV09iN2lZeURFZEVUcmlZZVB6ckJLKzlraWE0SUlZbHBlc3FCOGRnT0JLQndVbGdxRkYySVBFMzl4TFhoN1JGcGJyRHJESDZNeG9PT2RCejc1MjE5bVQzdjBtK1MyK2xDVloxTFNWSWpZdmxheG1PUkdCSUpvMXgxOEF3TWthWE9nOE1WdithNnB2dUpKcE1DbVRGMWNUamUzdDgzV1Uwd2FwdW9nUnAvTHRpSmlUdGNIQ29uMUpOQWtNaWFZeTdCcENUSHh1anpWUUJudDh3SlZsUzlmVUJvZGVWeDk1RFM2d2U2aEsyRmM3UHhXN2FUeS8zdElIQTBMc1V4bDBEdzZnWWFOTDFNVXYxZFBkaUNNV1FKSGpQWlMvWWN6MitiZ2ZOc0NaWFV3TG5YQXhIZXBBeUVoaGNuTzBTU2c3NHFXWnRQZFd2UC9PWGtJT3ZRWUxYdm40WVJzK3JqaGxqdHRBVXEySllra01PaHlNOVJUVUpEQTR1U1BmanJnSGt4OUdOWm9RcXdHTWJIQjVyTHNGcmViaTJ1ajNzV2VHVXErRklSeWtsZ1NFeGhpUUE3dVJ4RVlGS25YbE04RnFTSlZXZmVkMy8vWWNFeCtMaDJ0cGNUd21jWVRnUy9Ba01ERWtBM0NtVWxidTF5T01PZ1FGZWMzWjlXbXRmVFBEeUsyaUtOWmxhNVg5ZnBFU3JZemdTdkFzTUFJWTg1Rmk5aVNyQVl6MHZxYnJDeWpDUDlIZzRWaFJibTkwWEdwYkU1bUZyeG5BaytCTVlUbFFNUDRBQUFDK2x0RXhucjh0TDdxRkYxb3hoU2NreEhBbitCQVlBTUtHdXBBcndWSklsVlZmYXBPMFp6d0xNSUxxRkVpUUt5bThUdzVHd0JvWE1ra21zc2tJS25wWS9YN1Fmb0FvQTBMTmFDc2Q4S2NGcjN5enB4U0ZyZzlzbDNiWE8xK3d3eGt3d0hLWm5MbnBvR0k1RVlIQW8xdHNJREFDUWlSUEdHS3F3UGttV1ZQM3BDdi8vRnhJR21HSGJNYmZYT1FjN0pYSEQycHNwQjhkZ09OSVFZRWdTZ015RVJ0dW9BangxVFFySFRMSkt6NlloYklOamtwN3U0WFUzYy9tdVgzYzQwbTRIaDJJNEVvRUJBQnorNEJpeGNSdDhsV1JKMWZQT1ZWaGg1YVMxR3NiNVBvdnE3V24xanU3U29PZnpUUzd0RlRFY0NRUUdBQURXd2JlVmliWU1hVHYwK3JSNnBhVkI1N20wVjhSd0pQZ1hHRmdkQlFEZ0l3Y3JFdjM2QXYvYnZUMGVjL2N3dGtYM2FYVXZ3NUsrWW95cGNEV3ZXVTBNUjRLUGdRRUFBRThsV1ZKVjF0cWxDL3pQQ3dtQ3pMRDJNdHpmNCt1MmN5bXYyVTBPanNGd0pBSURBQUJEbzViZ3RhdU5rWDh1d2JHclE5b2VoM3A4M1hWY3ltdm1ZZ2dldzVFSURBQ1FqamxqeWxRQm5rbXlwT3BxWStSL2wrRFk3eGl5ZHFoS2tyWDJsS1JIZW5qOVhReEx5aFREa1FnTUFKQ09SbGx2b1Fyd3pCVUpYcnZhYnM2L1QzRHN0dzVaTzd3MklCM284Uml2SDVhMHdPV2RDb1lqRVJnQUFCZ3FTWmI3WFcwMzV6OGtPUFpsUTl3bWovYjR1bys4N3Y5K2pzczdGUXhISWpBQUFEQlU5aVY0N1FWM2M3Yld2dGluOTVWcjNicjFzb2ZDSGdlclhtRjFQNmNFQkFZQVNFMjdyaVdxQUY4NEdQTytsdDJjdjluSDk1ZG5EL2Y0dXF1NXNsTjNGU1VnTUFCQWFyWlplNW9xd0NOdlQvajZYNi9oNzh6MzhmM2wyYzk2Zk4xTlhOYXBZOThMQWdNQUFFUGpraVF2WG1VUGhtWFBKRGhGYlZnYnBqc3M2ZlllWHNxd3BHeXc3d1dCQVFDUVkyUFdXdFBMSC9XK00zRmVYWnJndFdzZGF2UlNnbk5zR1BKcitZa2VYL2QrZmdaU3g3NFhCQWIzVEp6b0J4TUFnRFFrV1ZKMXJVT05rdlF3WERQa2JYR2t4Mk5OT2FnOUx1d3VlbklJRE03RlZuT1VHd0RnbVNSTHFtWnhNN3B4bU51aU8rU3JsMkZKdTQweGIrUHlYdEUzSFIySENlWUVCZ0FBQmw2U3BVdlgxSE51clQyWjRCeDdhQ0w5b01mWFhVL3BWdlMvMU50dTJxL0hCSE1DQXdDNDFlbm9HRldBTHh5czh2SzdkZnpkcHhPOHo2RitVdDdkVWJpWCtrMXhsVi9RQVFmSFlJSTVnUUVBM0lxTi9oOVZnRWVTTGxuNiszWDgzUjhuT0UrVnB1cHBaK0hkR3E0NUlPdDF5TkZ4bUdBK0JBcVozU2dVOUR6bFRzOU0wZHhBRmR4ZHEyTkxkcFpLQUFQdmtvU3YvOE02L3U2dkVwem5Ta2tuaDd5dGZ0VGo2K2hsV0lHMTlwUXg1cEZ1c0VwaXFzZEFCd0xEQU4wOHhwb0xBdi9Yd1k2SzJrdHJ1ZEZzNlFGSkJJWlUvb0ZhMXhBT0lHMlhKcnVlN1l2citPdS9TWENxdC9MYllVLzJlSE83bTh2OGdnNDRxTkZ1WTh6YnJMV25LT2ZneW14SVVydXVwVHdXcUNQOUs1Y0o0Q3FCcjJzSUI1QzJKRXVxcm5mQ2FKS3dmTm1RdE1kcUswSWQ0SkoxenRXd3BCc3BKWUhCaVczV25xYmNBQUNQSkZsU2RiMURoSktFNWZjTVNYdXN0aUxVSVM1WnQ3cTlBaTZXV0wyWmFoSVlBTUFKNWpMQk0wbVdWRjN2bklSZkp6alhEcHJxbFp2YlI2aUVjdzg3T01ZT1k4d0VwU1F3T05HS2RaaVNBd0Q2emNHU3F1dWFrOURkZ0N6Sis5MUNxMG1TdmtZSm5QdVpvK1BzcEpRRWhseUlPME8xSXlhUU82VzZma3NWNElta1M2cjJNaWNoeWRDUFMyZ3lwemUzZURYTXZpZzN3NUsrNGlDSWc4QWd4VGJkbFdjS1ZtOXkva1hxNkJrdUU4Q05tclYxcWdCUEpMMEI3MlZPd255QzgxMUtrem05dWNYWkhuWjBuTzJVa3NDUVhMaXVOYXNCREJDR0pNSXpTVy9BZS9uMzdLY0p6bmNGVGViODVoYXZldExSY2E2amxBUUdCMDhHMGwyaTFBYTZ5UGt4aS9sY0RoYndqWW4xRWxXQVJ4TGRnSzl6RHdZWE50Tmt6bTl1OGVyMXZDVHBkZ2VIdXNzWWN6RVZKVEFrc2xSTzFCMjcrb2N4N245UTB3NDV3TENJcmVhb0FqeVNaRW5WWGxmcVNUTEVkUTlONXZ6bUZtZDd3dEZ4cnFhVUJJWkVKdWJ0QWlVSGh2YlhobDFBNFpNa1M2cWU3UEYxaTBuZU1FOXVVN201eGF1T09Eck9UWlNTd0pCWW11T1lpNEVtWFI5emJNbk9jcGtBeVRXYjZmWXdBdXU0OFU2NmtzcytZNHhkN3g4bDI0dEJrdDVNNjUxMWMvczBaWERIWWMvTkhzSXRnY0hCQmRuVFVuUnJObWRNMmZVeDQ1aWhGRUJTN1BZT2o3dzlwKys3UnRPZGRYUDdJSlZ3emxYUHpmc3BKWUVoMlpjOFhQZnVtT3ZTS09zdHJvL1pFZk1ZZ0VUZm9ZNk9VUVY0Sks5N0dteWk2Yzd5RkNWd0hzUU95MDNQelJUVkpEQWt2QmpUdmZrMlJuL20vRDJ6RndPUU5IUS9UeFhna2J6dWFYQWxUWGZXemUxUk1Td3BEUzU2Ym5ZYlk5NUdLUWtNUFV0OVRrQW5oVEdlVE5ZRUVtbGJQVWNWNEpHODdtbXdoYVpMNWVZV1ozUFZjM01qcFNRd0pMdW5UM0Y0UWhwTHE3NWMxVys1VklEZXhTMzloaXJBSXlNNWZkKzdhYnB6SEtRRWJqbnN1Ym1aYWhJWUVta3J2Y0NReGtwSkUvTjJnWW5QUU8rWThBelA3TXZyRzJlWXh6azN0NmZVKzc0WVdKbUxucHNkeHBnSmp6L2pIMmhtendORHg2WTc4ZmxFeFRqdlpXaGJaK3NUQTBNbHphV1VnUjV1dUNzNS93Z3NyWHF1QTVUQXVSODVPczVPajhPbWs5M2FqVEZETVZTd0w0R2hjWkZlU1BjZkJQY1RueG1ERGZUNG84eWlBZkRMMjNQKy90OUJFNTdqVVVyZy9HYjZwTnowM0h4bEFFSzZ6ekxyWFN2MDQ5Tk56TnVGMmJLWkM0SjAxcFFPMjlvcXg4dXROUzdTQzlXR3YxZk1zRDdGVFdNSUd0eUtDNnlRQks5Y2t2UDMvMWFhOEp5YjJ4ZU5NZCtVdElkcU9IVkFidWJOYkpmb2FVN0p5YXhPVk9qWEoyeGJIWWxTMm9RbUNQVXVTZDl3SFhKZUtKbGpZYWh4SDYrWXkrdjJ2bUg4cHZ5eWFnZ01ubU8zZEhqbTBweS8vOHRvd3ZONm1NRGczQ0ZIeDduTzQ4QndyL28zcHlsWHl5UUgvVHB4bWtOOEFxT1JWT1l4aE02K1BNQlFZUDRDUEhSRnp0Ly9QcHJ3dkg1R0NkeHlPS0g4TG1QTXhRTmNxbjdlK0djMjVMZHZnYUhTMHJOcEh0L0UrcmV1ajdsWVlpdzJzQjV4d0taSzhNNUkzajhBWThMUGUzUDdvczQ4TFlaYnJpYVVYKzNwNSt2bmZaMkw0WVV2RFh4Z3FGbGJUM00vaHFKeFB6Ti9ZdDR1cFBtZWdVSFRXbUwrQXJ3ekNFL28zMDR6bmhmTHE3cm5ha0w1VFo1K1BoYzMzTDMyV3JvWVh2aENWb1VLK3RsS25WZy9TZTJEQmFvZDNXaWNQMGxxV0ZaakFOWWlqalhIL2d2d2lZc244OVphay9TUHBMR0ViK01TV3ZPOFdQN2NzVzdQelRjZEhHcVBwM3VJdU9oaCtLc2VYL2NlQitmT2JDK0p2Z2FHWmx2L2t1YnhxdzMzNDhvcUxUMGJXeTN3TXdKY0dIdVh3RU5Kbjh5N2VvS2Q5Qi81UzJuSzg5N2NMa202blVvNDk3Q2o0MXp2NFdmN3RZTmo3Rjd2dzRodWVOcmg0Sm8vTlJTQlladTFwOVBjUWJrWTYwYlh4NnhaVzIvSFRINEcxdURubEFDZVNmcGszc2tTaGc0MmpMcUdwbHpSRHlpQmM2NG1sRTk1R2pKZFBBall2czYvLzA0SDU4eDB6azdRNzhaSzh5bGtFS2gyM0poTnJvLzdjcFVmSk9CQ1lxdUYwWWFkcGhMd1ROSW44eTU3bDVQY3BHeWtLVmU4QVR3cXNkaUM0NXE2R3BhMDI5TmRrZiszaTgrMnpyLy9TUWZuL09sUUJRYWwvQlN5R0xsL0VqTXhieGVhSGJhaUIxWjhFRUF2SFB5VWRFbFZsOHVCSittdFlMK0JDM3VRRWpqbmFsalNlejM4YkM3dVEvY1pZeWJXOGhlTk1lK1ZtdzN4TWwzaHFlK0JZYlJocDlPY0UxQU05UDQwamtzdkE5Qy9Cd0ZBajVJdWhPRnlDY05FLzloN09vSFVGMDlSQXVlZWRIU2NtejM4Yks1R3VueDl0ZEJnakptVTlKaURjejF0clQyWlpaRjg2R0ZJOVdsa1lEUXlIWm50cm85TEx3TndmZ3hIZ3NlU0xxazY1L0M5SkEwZlZacnovTHJEa2xoaTFXMU5YVTBvMzdIV0ovRjUvR3lTZm02TXVjY1lNMm1NMmZLYVA1UEdtSHNjaHRuTWU5RzhDQXpOWnJyREY0cUJya3ZqdVBReUFOaytBQUI2NVdpenMwV0hieW5wK3VsWDBxb1h4QU05OTU1d2RKeS84ZkN6dWJ5ZjI5Y05CaWRlOCtjcHVkMERKdk5lTkM4Q1ErcXJKUVdhVEdQeTg4UzhYV2kyOUFDL0ljQ3I0aUM5L1ZXQUJCSnZkdVo0Q2NPazRXTURUWHBCUExod3o5WFFuYnQ4MjYwOFo3MVNqM1RmNy9BRkJrbHFkNXlNNlZwUkZLV3ovbSt4clNmVEREdEFyc0pDckxteEpUdExKZUFocnpZN2N6RCttQjZHMWNNZHc1TGMxdFRsUGhmYlBmeUlYOHRKVTl6Ymo1TjZFeGhlM3BEdU1taFJxS2swZG42dVdWdHZHbjJWbnhJZy9lQVBKSkIwU2RWN1Bmczg3NkZKQitZR01FOWNEVXZhN2VGbmV6SUhJZk1SYSszaG9RNE1FL04yb1JVcjFTSmN0SmpPdUxteEpUdmI2T2doZmtjdzdOSU8va0FDVjNqNG5wS0VrQjAwNmFwK1JnbmM2dDZzdXZpZDMyZU11ZGl6ejdZazZiOTYzZ1I5ZTNBUitGU0ZWdXdzdVo1WFdyMXJjSE8xQUFBTHBVbEVRVlFNa2hRMTlVT0dKbUdZdGR0NmJHTGVMbEFKZUNycGIvOVBmZnRBbm02QzVkTU5vS3NOeDNBMlZ5djBYTzNoTlhOVTdvWmRPUThML2VwZDhDNHdiRzNhSTJuZmRLZlZ5MUN6dHI3WTBKZjRIY0d3aWcxcm44TnIreng4VDBsRHlDVTA2Nm9lcGdUT3VmcXR2OG5UejNlZi9CdWE5TFNrLzlMUE54RDQxa3FwVDM1T3NaZGhtN1duRzlLWCtTM0IwSVdGV0hQc3ZRQmZPVnFSSlkxZFZaUHV4WEFwcmJ1cUp5bUJXOTJuOEM2R0plM3hjUVBDN3RDa1d4eDlSbGRoWWFyN3ZnZ015NHJ0OUwvY2FmVXlTTktXUmZzVUc3cGgyTFFDSGFRSzhOamJQWDFmY3dsZmZ3Vk51NmFidjl1cGhIT3VoaVZkNytsMWMwclNsQWVoWVRrc25PcDNUUXErTlZMTjJ2cE15UnlJUWsybGRZNG8xTlNKaXZsSldzcy9qamJzL2hkSzV2SXcxSGhXZFpzcG1odGNIL1BsRFhxYU1lbFlUV3kxRU5XWlhBaXZ1Umk2OCtzVTNsZlN2UmhHYU5vMWVZSVNPUGNqUjhlWlVoOTJMVjVyYURER1RPbk1VS0E5d3h3V3ZBd00wcGtkbEtOR2VvRkJra0tyRzNWbW5Gb3FncWJ1NlVTNkxhdlFFQlcxMS9tTllGM1BTeUl3NElKYXNSN2RZbTJkU3NCamlZZnVwREVjb0h0RGt1UVEreVRkUnZPdTZnZ2xjSDd0bmpUR1BLTGt5NlB1TnNac2NiQXZTWnFoNFQvcHpOQzJiMmQ0NnRzbDNkZnZZVWhuM2RmNjJFQlpMTEZhRERRNUhablVOZzZwV1ZzUG1yb250dHh3WTdBdFZ2VmpxZ0RQSlIyNmsrWktPNGttVi9xMk5LV25OMzFMa2o1TkpaeHpOZno2dmI1ZlA5YmFCM1ZtYUdQYXk1cmVLMm5NV251M1QySEIyOEFnU1IyVC9wam9jcWhQemhsVFRqTTBMTloxQjZFQmc2clowUUdHclNFSGtnN2RtVS94dlNWOXN2cG1tbmROV01YTnZVT09qbk56VG9MbktXdnRiWkxlSk9udjVXNGxwYWU3Z1hiTVdudWJyNzB0eGxycmJlTThYemFmTFFhYVRQTWNqWTRlMnRLd3FZYVQ0OFpzcXBaMVoyRE8vS1AxNTR2MkE2N1A4Y3VxK1ordWoxbTMycGZXUEErZlAzZXpwUWRHVy9aeDM2L2xOTnBudmZXY0wya1BnUUVBTUl5NnF6eTlVOUlXU1pmcHpBN3NxMjJxZUsvT0RQZCtUdEkvK3pKSFlUVUZuOTljeCtoZ1Vla0dobEtvRDUyb21QK2I1bzN4Tm10UEh6Zm1qbXBKdHdhQmFuekZNQWpvWFFBQURMUHV6ZjRwdVpzRTdxM0E1emMzdG1SbjA1N0xJRW5GV0I5Tyt4emJyRDF0R3JxajA5RXh2bUlZQkM5WDlRT3FBQURBNEF0OGY0Tlp6R1VJUTQybnNTenA2OVdzcmIralliL0FaWWU4bzNjQkFBQUNnemV5Nm1XSWl0cDdvbUkyYzBrQXE2TjNBUUFBQW9OWHN1aGxrS1RJNmxOcHJwb0VESUpHUncvUnV3QUFBSUhCSzJOTGRyYlpjYmJlNzhyRkNGUnJSZWx1R0Fma1dXeTFFRFgxUXlvQkFBQ0J3VHRaRFlHSVFrMmx1YUVia0dmdHRyNVhZMWRuQUFBSURENmFtTGNMelpZZXlPSmM1VkNmUEc3TUppNFA0RlZ4ckRuWCsxTUFBQUFDZzFQRnRwNk1ZODJsWGhTamtVcWtUekNmQVhoVjAraXJWQUVBQUFLRDEyclcxdHRXMzhyaVhHR284VTR4L2YwWmdEeG94VHJzKzY3ZkFBQ0F3Q0JKR20zWTZTeVdXWldrUWtHN3N0aWZBZkJaYkxYd1VrWC9SQ1VBQUNBdzVFYVdOeTlSVVh1WkJJMWgxbTdyZXl5akNnQUFnU0ZYc3B3QUxURUpHc09yMDlFeEpqb0RBRUJneUtYUmxuMjgwOUd4VElwa05GSXQ2MDVDQTRiTlVsTmZwd29BQUJBWXVKbFpZMmhnNVNRTWsyWkxEMnl6OWpTVkFBQ0F3SkJiMjZ3OW5lWFFwRERVZUJ6cE5rSURCaDFEa1FBQXdFQUVCaW5ib1VtRUJnd0xoaUlCQUlDQkNRekxOemV4VldhcnVMQkhBd1laUTVFQUFNREFCWVp0MXA1dUdmMlBMTTlaS0dqWFRNbDhrRXNJZzZRVjZ6QkRrUUFBd01BRkJrbmFzbWlmYXJmMVdKYm5qRUpORVJvd1NDNnYyL3VvQWdBQUdNakFJRWxoUzkrSlk4MFJHZ0FBQUFBQ3d6bHExdFlYRy9wUzF1ZU5RazI5VURML3dFUm9BQUFBRUJnOHQ4M2EwNHR0M1ozMWVWazlDUUFBQUFTR25OamF0RWVhSFIwZ05BQUFBQUFFaHZNYWJkajlXZTdQOE5yUVlNdTYvN2d4bTdpOEFBQUFRR0R3K2NNMWRVK1crek84Y2w2amtXcFpkODZVekZZdU1RQUFBQkFZUEZXenRyNVkxeDM5Q2cxUnFDOU9SMlk3bHhrQUFBQUlESjdhWnUzcGRxeC83TmY1cXdWOW5tVlhBUUFBUUdEdzJHakRUdmRqNWFSbExMc0tBQUFBQW9QbnRqYnRrVVpIRC9Yci9NdVRvVTlVekdZdU93QUFBQkFZUExTbFlRLzJZN25WVjRwdE5GSTJ1bmVtYUc3ZzBnTUFBQUNCd1VPakRidS9uNkZCa3FLaTlqNWZOcDg5dXRHTWNBa0NBQUNBd09CaGFHaTM5VmcvMzBNeDBPUWI2L29TUzY4Q0FBQ0F3T0Noc0tYdjlHTmp0N09LMzExNjlSZVIrVGdUb2dFQUFFQmc4RWpOMm5yUTFEMzlEZzJTVkNob2x5M3Jmbm9iQUFBQVFHQWdOSnkvSVY3VDI4RGNCZ0FBQUJBWVBBc04vWjRJdmF4UTBLNDMxdlVsVmxJQ0FBQUFnY0dqME9ERDZrbXZOSXJSU0ZUVTN0bXlZVkkwQUFBQStxcEFDVjQxMnJEN1owcEdVYWdwTDRKRG9Gb2tmZkg1c2puY01UbzR0bVJuYWFVTXZoU2hkajFmTmxlNlBHWm90STNLQWdBQUFzT2doSWFpK1gxVTFGNWYzbE14MEdSUm1pUTRaQmZVQXFsR0pRQUFBQWdNNXc4TkxmdjRkR1QrV0Mzbzh6NjlyK1hnOEVMSkhHdFlQVnBwNmRtYXRYVmFEQUFBQUFTR2pHMXQyaU1uS21aZkpOMGVHSG0xYWxFWWFyd3FqY2VoRm1aSzVsRGI2cmtxTFRsMDJuVXRVUVVBQUpBMkpqMWZ3TmlTblYyczZ3NGZsbDA5YitPZFdZcDF5cmVlRUtSdnNhMjd0MWw3bWtvQUFBQUNRNTl0cy9aMDBOUTlyVmlIcVFiNkxiWmFlR2xKdDJ4dDJpTlVBd0FBRUJnOFViTzJmbm5kM3RmbzZDR3FnWDdwZEhUc1QyWGRTczhDQUFESUVpUGYxMkZMd3g2Y0taa1RoVUNmODIxZUF3WmJzNk1Eb3cyN24wb0FBSUNzMGNPd1RxTU5PLzJuc203MWRWNERCa3RzdGJEWTF0MkVCUUFBUUdESWtZbDV1L0NPaHYwQ1E1U1FwazVIeHhicnVvUDVDZ0FBb0o4WWtwUUFRNVNRbGtaSEQyMXAySU5VQWdBQTlCczlEQW1OTnV5MHFldVdkbHVQVVEwa0ZjZWFxMXZ0SXl3QUFBQmYwTVBnUUhlMzVXL01sTXhUOURhZ1Y0Mk9Ib3FhK3VFWXUzY0RBQUNQME1QZ0VMME42TVZyZXhWcWhBVUFBT0FaZWhnY283Y0I2MEd2QWdBQUlEQU1xZEdHblo0ejVwWkdwUGVWUW4ySWl1QzFPaDBkVzJycTYyekNCZ0FBQ0F4RHJOdmJjUEM0TVQ4dGxmUjN4VUNUVkdXNHhWWUw5WTYreGxLcEFBQ0F3SUJYZEo4aTN6Y2RtU2ZLZ1Q0WUJLcFJsZUd6UFB4b0s4T1BBQUFBZ1FIbjAzMnFmR1NtYUc0b0ZQUzN6RzhZRHMyT0RyeGMxUThtNXUwQzFRQUFBQVFHckdxMFpSK2ZNK2JKWmtIWEVod0dWeXZXNFk3UndiR0duYVVhQUFDQXdJQjE2YzV2T0JNY0lrMUZvYWFveXZyRlZndStCYTVYZ2tLZG9BQUFBQWdNY0JNYzloL2RhSDV3MFV2YVFZL0QrblNzamdmR2o4bmtCQVVBQUVCZ1FHcTY0OXNacXBSRHpZNE94SUYrUWxBQUFBQUVCcVJ1ZWFpU3BNZW5JN09kVlpYOEZGc3R0R0k5dWxqVmo1bk1EQUFBQ0F6b2krVlZsVTVVek9aQ1IzOWRLR2dYVmVselVJZzFWNCsxdjlMU3MxdFlIaFVBQUJBWTRJT3hKVHNyNlJ0SE41cUhMM3BKT3dxaGR0SHJrR0ZJc0Zwb3h6ckVzQ01BQUVCZ2dOZVc1emxJZXZ4RXhXd09ZcjI3RU9oNjVqcWtveFhyY0N2V0U1V1duaDJsTndFQUFCQVlrQ2ZkWG9kWlNmdG5TbWFycEtzSUQ4bDFPanJXRG5Wb3NhUm5tSnNBQUFCQVlCZ0lvdzA3TFdtYThOQ2JWcXpEY2FDbkNRa0FBQUFFaHFFS0Q4ZU4yUlFWOUcvQ1FPOE9RNDFUblRQaVdITnRxeU9TZmw1c2F2WnloaHNCQUFBUUdJYlJObXRQU3pxdE0vczdsRnVSTmx0cHJDQ05EMU9BaUswVzRvNytUNmVnNmRhU251L1dCUUFBQUFRR0xPdnU3N0RjKzNCd3pwaHlvNnkzQkcxZGJrSmRHUnB0ZS8wUXBsSmR2ODNqWjIzRk9oeGJ6WGFzZnRXNFNDOHd6QWdBQUtCM3hscExGU0JKZW0ySVVLQkxSaHQydisvditXVFY3RFF0VlJUb1ZMT3BlWG9QQUFBQUNBd0FBQUFBTWhKUUFnQUFBQUFFQmdBQUFBQUVCZ0FBQUFBRUJnQUFBQUFFQmdBQUFBQUVCZ0FBQUFBRUJnQUFBQUFFQmdBQUFBQUVCZ0FBQUFBRUJnQUFBQUFFQmdBQUFBQWdNQUFBQUFBZ01BQUFBQUFnTUFBQUFBQWdNQUFBQUFBZ01BQUFBQUFnTUFBQUFBQWdNQUFBQUFBZ01BQUFBQUFnTUFBQUFBQWdNQUFBQUFEQXN2OFBsZHI2TkhSMys3WUFBQUFBU1VWT1JLNUNZSUk9In0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIwLTEwLTIxIn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMC0xMC0yMSJ9LHsiYWFndWlkIjoiNzlmM2M4YmEtOWUzNS00ODRiLThmNDctNTNhNWEwZjVjNjMwIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI3OWYzYzhiYS05ZTM1LTQ4NGItOGY0Ny01M2E1YTBmNWM2MzAiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiWXViaUtleSA1IEZJUFMgU2VyaWVzIHdpdGggTkZDIChFbnRlcnByaXNlIFByb2ZpbGUpIn0sImRlc2NyaXB0aW9uIjoiWXViaUtleSA1IEZJUFMgU2VyaWVzIHdpdGggTkZDIChFbnRlcnByaXNlIFByb2ZpbGUpIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NiwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9LHsibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMzg0cjFfZWNkc2Ffc2hhMzg0X3JhdyIsImVkMjU1MTlfZWRkc2Ffc2hhNTEyX3JhdyIsInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6OCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6OCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlEUGpDQ0FpYWdBd0lCQWdJVVh6ZWlFREpFT1R0MTRGNW4wbzZaZi9iQndpVXdEUVlKS29aSWh2Y05BUUVOQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU1aNi9UeE04cklUK0Vhb1B2Rzgxb250TU9vLzJtUTJSQndKSFMwUVpjeFZhTlh2bDEyTFVoQlo1TG1pQlNjSVpkMVJueDFvZDU4NWgrL2RoSzdoRW03SkFBTGtLS3RzMWZPNTNLR05MWnVqejVoM3dHbmNyNGh5S0YwRzc0Yi9VM0s5aEU1bUdORDZ6cVljaENSQUhmcllNWVJERjRZTDBYNEQ1bkdkeHZwcEF5Nm5rRW10V21NbndPM2kwVEF1Y3NyYkU0ODVIdkdNNHIwVnBnVmRKcHZnUWppVEpDVElxK0QzNWh3dFQ4UURJdituR3ZwY3lpNXdjSWZDa3p5Q2ltSnVraFl5NktvcU5NS1FFZHBOaVNPdld5RE1UTXQxYndDdkV6cHc5MXUrbXNVdDRyajBlZm5POXMwWk93ZHdNUkRuSDR4Z1VsNVpMd3JyUGtmQzEvMENBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUI4R0ExVWRJd1FZTUJhQUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUU13RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCRFFVQUE0SUJBUUMzSVcvc2dCOXBaOGFwSk5qeHVHb1grRmtJTGtzMHdNTnJkWEwvY29VdnNyaHpzdmw2bWVQTXJiR0pCeUoxWG5xdUI1c2djUkVORnhkUUZtYTNtaW84VXBmMW93TTFacmVYckowbUFERzJCcGxxYkpueGl5WWErUjExcmVJRlRXZUloTU5jWktzRFpyRkF5UHVGakNXU1F2Sm1OV2U5bUZSWUZnTmhYSktrWEliNUgxWGdFRGx3aWVkWVJNN1ZvbEJObGxkNnBSRktsWDh1c3Q2T1RNT2VBRGwyeE5GMG0xTFRoU2RldVh2RHlDMWc5K0lMZnozUzZPSVlnYzNpcm9SY0ZEMzU0ZzdyS2Z1NjdxRkF3OWdDNHlpMHhCVFByWTk1cmg0L0hxYVVZQ0EvTDhsZFJrNkg3WGszNUQrV1ZwbXEyU2gveFQ1SGlGdWhmNHdKYjBiSyIsIk1JSURTakNDQWpLZ0F3SUJBZ0lVUjM4bXEyNlNmMnN6VlYyQmRHNldFTjdrdVdVd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVJZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU5ZMFdiOW9Qb1JvS29ReVdQYUpwejExdnJXVGc2elR0bU5qMlZvS1JueXZLR1JxcHpiODN3NWw2WUE5NlVZa1lCRFFQMGlsTzJEUGU2d1dxVlI1ekRmUnpkY0g4YmgrTDdkR0d2YWU2aFJUWmhrRmtDcFhEczRIY2NrbnJEZjhGQ2xKN0hlMzlKZjQyL0cxUW0yeno5V1dtclBYdGdpSy94MDVHanNRZkd1REcxemY1UVRVVWllOGx3eW1LM1RmZE92TmVlSkFBUGUycG43SXRmUmIrclZyTldpRHpsUm4ydk5uWjJ3UG80d0gvV0o2ZGhYWkcrck1XVCthNkJvY2cxVWZJdzZrZHVuRzRiVHBaenN2YWNGWXlSMG1wZitEZU9ucFNXQW15d0pXSHZUbGYyWVh4RnllWGNUQUNkUWxjTU5HSjJWaFpRNDh4dFA1L1JCUC84a0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ2h5NDJva2lxY1RTMWlxYS9IUldqa0JuNEgvTUI4R0ExVWRJd1FZTUJhQUZPcTNRcENlREh0a2V0dFVmQU82ZkU2ZjJLRmhNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUFuK1JISVBidE1FRE5kVDFnOEgvUml0QWtVZExnQXQxdFdHV25sajlrbmJ2NC80R2xYN0M5cDQ1ZWZQTzkvYVpMNk9WMVhSS0JpNkttdEJXNUs3bnVZRW5NeC81QnFCU2JMVDdyaGR1QzQ5VEJlTWI5UEhkWHNUbFNWTlllZnIxZEdpZHI0ajB4VkJRTGIxcmtuREFiZFdEektmdm5heUtPOEZyd2U3SHg4NDNNRy9ySitjMFhydVV2YmZWVENITGlJV2hNN29ORGhMOHhvYjZ4VW85S0xLY1NMK0l0WXNPMy85V2I4UTlHanNxTDRGWHNEY0cxU2FZaDdLcGZ1TW1PaXhxekpaTzJuSWljUFlSZzFJMlN1aVVmWU83MHRtZEhjYmwra1NRbVNZdDdycTR2aUlMZzJHeDNqOXJJVHVXVGpiYVVhU1NReGdPbU1TSHV5ek1BQyIsIk1JSURTRENDQWpDZ0F3SUJBZ0lVVWNtTVh6UklGT2dHVEswVGIzZ0V1Wllaa0JJd0RRWUpLb1pJaHZjTkFRRUxCUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JCSURFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURtNTU1YldZOVdXK3RPWTBySVdIbGRoK2FOYW5vQ1pDRmg3R2szWVpyUW1QVXcwaGtTRzZxWUhRdFArZlp5UzMzVkVydmcrQlFxbm11bWdOaGZ4RnJrd0VaRUxlaWRCY0M4QzRBZzRucXFpUFdwenN2STE3TmN4WWxJbkxOTEZjWlkvK2dPaU42Wk9UaWhPNS92QlpNYmo5cmlhQWNxbGlZbU5HSlBnVGNNR2FFQXlNekVNTnkybm02RXArcGpQNWFGNmdpMjF0L1VRRnN1SjFqMlJqL3luTS9TZFJ0K2VjYWw1T1lvdHhIa0ZiTDl2dnYyQTJPdjVJVFpDbHc0Yk9TOW5weXBRaW1PWjVRQVl5dG1ZYVFwV2wvcE1ZejZ6U2o4UnFrVkRORUpHcU5mVEtBMml2TFl3WDZsU3R0TVBhcGcwSjg0bDlYMHZvVk4vRnBTNFZDVkFnTUJBQUdqWmpCa01CMEdBMVVkRGdRV0JCUWdLRkFoRzZSYVcraFR5NTJkeGVUOGJDOTZIekFmQmdOVkhTTUVHREFXZ0JUUzd1OWFJbzA2YlZ3amx6M3loZFVtOFNWN2tqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQTRHQTFVZER3RUIvd1FFQXdJQmhqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFZTXpnTHJKTElyME9vdlFuQVpyUklHdWFiaUhTVUtTbWJMUldwUmtXZUF0c0NoREVIcFhjSi9iZ0ROS1lXb0hxUTh4UlVqQjRDeWVwWWV2YzNZbHJHOG83ekh4cGZWY2FvTDVTZXVKa3pIeEtuNGJUYVNwOStNdndhbW5wNjRrWk1pTmJGTGtuZlA5a1lLb1JIa01XaGVSSjFVc1AxejRTY21rQ2VJTGZzTXM2dnFvdnFqV0NsRnNKcEJjc2x1WUhXRjdiQkoxbjRSd2crQVRFb3BZNElnR3Y2WnZ3YytBOXIrQVQyaHFwb1NrWW9BbCtBTll3Z3NsT2Y5c0plMFYrVEE5WVkvVWxhQm1QUFRkMC8vcjl3dmNlUFdaa1BqS29BQy96VU5oZkRiaDRMVjhHSHMzbHlYMlhvbUwvTE5jOEpZenlJYURFaEdRdmVvUGhoL3RyMWc9PSIsIk1JSURTakNDQWpLZ0F3SUJBZ0lVVG5iYkdJUjJOSHZ6cUlLRkFlUXdHMVhCaXMwd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JCSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVFZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU9zWGozazA0QmFuNFRZZHRaS3FEL09QSnh5RHlhUG1DQlVGVWlhWklnVHRlWm5qM1gyNURoZ3BaWlhzQzREMHlkSWNybEE2d05VSW5PUkwvTDl6QmJURUlNQVZNR282ZzdVS0FtYjJNRjZBSGJuaFlKZDllaWt1cFZOV1NoSE5ZTmM0R0JkTzFZTjZBZlVxdkpoSGJlM1Y0U05NUG1CUkVLSlBWejdUaHdnbWdnVGU4V3MySzAvd3NxdjJ3U0U3cGJDQnNVWmhJWDUxYlpNM3BxRHdKUFRtUkZFdnQwLzZ0RzVlTzhGM2oxNE9YcWZFaG1qbjFWdnhLRFlRT0xaQXhDd3dnQzBQNENkZld2M3k4UFNSOEkzNTRoTzFZK0d6Tmp2SXFYMzhOS0x5d3VJWUhGZXJPeE5seEVNQnZGaFlCdVJ1WUFra2dVYVBxTjZVQmhzSUxyc0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ0NvUkhoaXlObmJuWFJXSUw2WkJYb0JYOVlUTUI4R0ExVWRJd1FZTUJhQUZDQW9VQ0VicEZwYjZGUExuWjNGNVB4c0wzb2ZNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUNRRmFmSkkxLzVXZzlDRUVpbUUxUlA1NFJnUXdUTlRPT1FzTEFDVGUrckl0bEZRekM5WkRoclY4Mjh5WDdqenkrQUFzcDNpeks3VDF0aDJkbDdtK3R1MHN3MlBhL29sYzAybnQ2UHlJdzM0OGdhSHpoSTErMEtFNDVxeHZGRGVMMmxNeGJQZkNZdnlFRWFZemppUUVMVTU5NTFwWEdXeUtNYS80Zkx0TytaS09YaE11VmVxNHJYRFBJNTRXNkpIT2lBYWlLZGl3KzVlM2Mya3QvakZJUXRNNnZNWGc5TE5GemRqRVROdDIwVlg5UWV2UnBGWmZ1Y01HOXdDYVFEb0ZsUHpwVE1KS2hQZXYvaW1KbVpZaEtmcjBsTGNlbXRxakl4TEFvcVpkT1lmSEJnNit2QWNkUEkvaWF1R3BVQXY3WCtVS05tRHdqWjJCYUg0c0x3aEIybSIsIk1JSURTRENDQWpDZ0F3SUJBZ0lVRHFFUncrNFJuR1NnZ3hnVWV3SkZFUERSWjNZd0RRWUpLb1pJaHZjTkFRRUxCUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURJN1huSCtadkR3TUNRVThNOFplVjVxc2N1Ymx2VllhYVJ0M1liYXhuOWdvZEx4NXN3SDBsWHJkZ2poNWg3RnBWZ0NnWVlYN0U0YmwxdmJ6VUxlbXJNV1Q4TjNXTUdVZThRQUpiQmVpb1Y3Vy9FK2hUWlAvMFNLSlZhM2V3S0JvNlVMZU1uZlFaRHJWT1JBazh3VExxMnY1TGxqNXZNajdKdE9vdEthOUo3bkhTOGtMbXpYWFNhajBTd0VQaDVPQVpVVE5WNHpzMWJ2b1RBUVFXckw0L0o5UXVLdDZXQ0ZFNW5VTmlSUWNFYlZGOG1scUsyYngyejZva1ZsdHlEVkxDeFlicFVURUx2WTF1c1IzRFRHUFVvSUNsT200Y3Jwd25EUkxWSHZqWWVQR0JCLy9wRXl6eEEvZ2NTY3hqd2FIMVpVdzliblNiSHl1cktxYlRhMUt2akFnTUJBQUdqWmpCa01CMEdBMVVkRGdRV0JCVHF0MEtRbmd4N1pIcmJWSHdEdW54T245aWhZVEFmQmdOVkhTTUVHREFXZ0JUUzd1OWFJbzA2YlZ3amx6M3loZFVtOFNWN2tqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQTRHQTFVZER3RUIvd1FFQXdJQmhqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFxUWFDV014VEdxVlZYN1NrN2trSm1VdWVUU1lLdVU2K0tCQlNnd0lSbmx3OUs3SGUxSXB4WjBoZHdwUE5pa0tqbWN5RmdGUHpoSW13SEpneHh1VDkwUHczdllPZGNKSk5rdERnMzVQWE9melNuMTVjRkF4MVJPMG1QVG1JYjhkWGlFV09wem9YdmR3WERNNDFaYUNEWU1UN3c0SVF0TXl2RTd4VUJacTJianRBbnEvTkRVQTdiZTRIOEgzaXBDKy8rTktsVXJjVWgrajQ4SzY3V0kwdTFtNkZlUXVlQkE3bjA2ajgyNXJxRHFzYUxzOVRiN0tBSEF3OFBtcldhTlBHMmtqS2VyeFBFZmVjaXZsRmF3cDJSV1p2eHJWdG4zVFYyU0J4eUNKQ2tYc05EMDVkQ0VyVkhTSklzK0JkdFRWTlk5QXd0eVBtbnliMHY0bVNUenZXZHc9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFmQ0FZQUFBQ0dWcytNQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUhZWUFBQjJHQVYyaUU0RUFBQWJOU1VSQlZGaEhwVmQ3VE5WMUZELzNkNTl3ZVFTSWdTOUFRQVhjRkxBUVppOWZwZVZ6MXRZL1dUWnI1V3hwYzdXNWtuTGE1akkzWjg1c3JTMm5NMnNqdFd3WlM3SVVINEg0eENuRVF4NERBWkY3NFY3dXM4ODV2OS9sSW5CdlZKL0I0UHY5bnUvNW51LzVudk01NTZmekEvUXYwSGIvSXJYM1ZGS1BvNDVjbm00aW5VSVdZd0xGUm1aUVV1d2pGRy9OMWlSSGgxRVowTlJWUnVkcXQxQmQrMm5TS3lTL09oeXMwK2xrM2UvM2tROXF2RDRaVXRhNFZWU1V1WTBlaXB5aVRoQWZvY29PUlZnRHV1dzNxS1JpQWQzcmJjRXRqVGpZSW9mNldhSHNDbXpWUFdDTXgrY2doOHRMcVdNS2FNV3NVakxxbzJSdEpJUTBvT3ptZXJwUXU0ZXNaZ3NPTmtHeEg3ZDBrZHZUVDE3czRPTVU3Vkk4WmhqZ0dhTStBcTlpRU51OFBpZjF1ZHowN013dktXZjhHbFZvQ0VZMDRQQzVXZFRhWFlGYlI4dk52TDUrM0tnZmI1eE5NeWE5UmFtSml5bmFNbEdUVnRGbHI2YmE5dStwcW5FWDR1TXVSUmdqU1lFaHJON3V0RkZlNmxxYWw3TmZrdzVpbUFHSHluUHBiazhWbVkweHN0bnB0bEZDVkNZdHpUdUJOODNRcE1MalR0ZXZkUHpTVW5KN2U4bWtqeFozOWZYYktEZmxkWnFidlUrVFVnR25CVkY2ZlEyaVBIZzRXMTZVV1V3dnpiazE2c01aRStQbjBwdno3SlNldUF5ZXM4bGNwQ21hS3VvL3ArcVdyMlVjd0lBSFdydlAwWUV6aFhBdExBYnNzSGhwN2lHYW12eWlqUDhyeXFyWFVXWDlYb293eHlBdWZOQnJwNDNQT0JGWFpsa2Y4TURSaXFjcHlvd0F3cHV6MngrZld2ei9EdGRlOXNtc3p5Z3RjUjZDMXdiZHpCbDZPbHE1V05ZWTRvR2F0aEpNcmtURXgwakFSU0hBVnMrNXJZa1FOWGIrUWdmUExzUTZnWHlJbnNyZVFmbXBtN1JWRllmTDg2bjFmaVVPa1l2U2hrVVB4dmJ1a3pveTZLMWloTTFobzNYelc2RXZTZlhBK2RwaVdHYVdkK2RvWHpMem1Hd0tZRkxDQXNSQWxQQkFoTWxDRlhVN3RCVVZQcjhIZ1ZjSkhXcStGMDBwbHIrRE1UZHJQNHp2eFkxMWtOTWh4VCtTZVRHZytkNFY1TFFKaXR5VUdKTkI4VkZac2pnWUJaTS9JSS9YQ1RrajBxeURPcEYyQVZRMTdDSWpVcC9EblQxVWtMNUY1Z2RqK3NTMXdnMWdFM2dpZ202MGZDWHpTblBYYnlBUGJJWHYrSURwRTE2VGhhSElTOXNreWhsbU1FNUYzY2ZxQUtocTJDMEU1UEgxZ1lhWGFMUERrWkcwSERKT25LV0hwNTFJMHo1U091eDhlMVdBdVp6ZEhRclRrcDhUbWpYb0krbGEwd0dac3p1YnFiTzNpZlE2QS9XN3ZWU1lzVjNtUjBKS3drS2M0V0hpQmttUjhJM0NDZ0k4N29PTDRxelQ1UCtSVUpCZWpFT2dBUEs4aFlQemF0TStlSVRwMklPOXlUUW1lcm9tUFJ4eDFxeEFjc2lsZS91YlNlRWJjV1FHWUVDZ2hjTFkySHlLam9nakgyNWhNcGpwVXYxT3VnbGk0ZWgyZVJ3ME8zMmJKamt5dUNnTnpnMHZ6bFlNU2lTczB1b280TUc3aE1PakNFYVgxeUZFMG5TdmpCenVUbkVwSzg2WjhJb3FGQUl1Ync4a2c5QXJFYVJFV1NaSStqSDRYYnA2ZzlFOUVuSlQzb2FSekROK01VSkJRREhuNTZhOG9VbUVCdXNPeEJzL041K3RKRWJQa0FGRGo4VUd2T3MvSVd2Y1NnbEdCaHZTNy9GVFlmcFdHWWREWThmUEF4V1NBMzVzVEM0cDQrTG00QWFxSW9QZVF0ZnVmSzZKaDBaaHhsYnNVWE9TbVhOaWZENVpUQWt5RG9mYmJjY2x4bkE4V05BcXhDYlJOeWtoWHhRcGFEdzY3ZlhVWWJzaUcwS2h0djJvZUl2aDhyaFFNWU9jRUFxWEcvZUkrem5nT2M1eXhyOHE4MklBTTFjL0ZMRk9wbHF1NWVGUVhyTVp6R2NWQ2pZYkxXRzVJNEJUMWV1UnJsYnh0Tk90TWl0RERFaExYSUl5bkFBdnVPRVdFM1gzTmRBZnQ5NFZnYUc0MlhJUXQwWlg2UGVDRS9xUUZlOXJLNkh4N1lVNTBLdkg3Zlc0ZlMrcTdLS0JKeHNnZ0JYNXBTQUdoMWpJclZoNXpRNnczUmZhYWhCWG0vYUNiQ1pUakNVRlVUeVdacVc5cDYyTWpKUFhWcU9yUGdNTzROdjc0R2tmK293ZnROVkJEUW5qRkpxSFN3MTdwWHZoV1c1S1pxZS9RNDlOL1VTVENBVldvUVhGSUhCSFhYZTNGUHJVRHN1R0RtdEYvaEhLVEhwZWt4aGlBT1BJK1NKcTZTNkhGNEk5WVd6a0JKVG80NmlVTXpXcDhQaXIvUmlkdUx4S1lzU2tzVjh2TGxPUXZoR1gyWWxSME9CaEJqQyt1L2dFY3ZZMEFwSzdZazQxTnhqUFNRbldGSFRGNjZVcmpnZXZCOEN1NWErbDJ2WVNSUHR1VkRvNzNoaGRNU0huVVg3dFRqc1ZaR3hBbC9XcHRpT0lFUTFnbkwyOW1YNi90UjF0bWxrWWo4VzRYK0NTaldjVURHWTFOcFMvQzdoU0txaU1MTS9sMlFtU1daNzNEZHorZ2lvOEJDRU5ZUFE0NnFua3p3WFVicXZCa3hqVVFzV2ZaRmdidW8zckFmK3dON2pPTzkwK3lueDRQaTNMKzBuWUwxU2NoRFVnQVA0Z1BWLzdJZDFxKzFIU2htdUdrSXFXUlBneXhNRnFQOEhmalRualh3WTViUWZiSmN0Nk9JektnTUhvdEYvSGUxZWdzYXhIU3FHNndmZG1RNXg4TnlURkZxQmNwMmlTb3dIUjN5azUrMzZoRjd2WEFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJGSURPXzJfMCIsIkZJRE9fMl8xX1BSRSIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsImxhcmdlQmxvYktleSIsImNyZWRCbG9iIiwibWluUGluTGVuZ3RoIl0sImFhZ3VpZCI6Ijc5ZjNjOGJhOWUzNTQ4NGI4ZjQ3NTNhNWEwZjVjNjMwIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibGFyZ2VCbG9icyI6dHJ1ZSwiZXAiOmZhbHNlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6ZmFsc2UsImFsd2F5c1V2Ijp0cnVlfSwibWF4TXNnU2l6ZSI6MTUzNiwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0Ijo4LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjEyOCwidHJhbnNwb3J0cyI6WyJuZmMiLCJ1c2IiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotOH0seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTM1fV0sIm1heFNlcmlhbGl6ZWRMYXJnZUJsb2JBcnJheSI6NDA5NiwibWluUElOTGVuZ3RoIjo4LCJmaXJtd2FyZVZlcnNpb24iOjMyOTQ3NiwibWF4Q3JlZEJsb2JMZW5ndGgiOjMyLCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6MSwiY2VydGlmaWNhdGlvbnMiOnsiRklQUy1DTVZQLTMiOjIsIkZJUFMtQ01WUC0zLVBIWSI6M30sInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjoxMDB9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMi0yMSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzYsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWXViaUtleSA1IEZJUFMgU2VyaWVzIHdpdGggTkZDIChFbnRlcnByaXNlIFByb2ZpbGUpIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNDEyMjEwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMi0yMSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzZ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDEtMTAifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyI3ODY1NDQ3NzJlY2M5ZDNlODUwNDkyMjJhZTMzMjI2MzQ1YjU5YzY5Il0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjc4NjU0NDc3MmVjYzlkM2U4NTA0OTIyMmFlMzMyMjYzNDViNTljNjkiXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ill1YmlLZXkgQmlvIFNlcmllcyJ9LCJkZXNjcmlwdGlvbiI6Ill1YmlLZXkgQmlvIFNlcmllcyAtIEZJRE8gRWRpdGlvbiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjg5NjUsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6Mn0seyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50IiwicmVtb3RlX2hhbmRsZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURIakNDQWdhZ0F3SUJBZ0lFRzBCVDl6QU5CZ2txaGtpRzl3MEJBUXNGQURBdU1Td3dLZ1lEVlFRREV5TlpkV0pwWTI4Z1ZUSkdJRkp2YjNRZ1EwRWdVMlZ5YVdGc0lEUTFOekl3TURZek1UQWdGdzB4TkRBNE1ERXdNREF3TURCYUdBOHlNRFV3TURrd05EQXdNREF3TUZvd0xqRXNNQ29HQTFVRUF4TWpXWFZpYVdOdklGVXlSaUJTYjI5MElFTkJJRk5sY21saGJDQTBOVGN5TURBMk16RXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFDL2p3WXVoQlZscWFpWVdFTXNyV0Zpc2dKK1B0TTkxZVNycEk0VEs3VTUzbXdDSWF3U0RIeTh2VW1rNU4yS0FqOWFidlQ5TlA1U01TMWhRaTN1c3hvWUdvblhRZ2ZPNlpYeVVBOWErS0FrcWRGbkJubHl1Z1NlQ09lcDhFZFpGZnNhUkZ0TWprd3o1R2N6MlB5NHZJWXZDZE1IUHR3YXowYlZ1em5ldWVJRXo2VG5RakU2M1JkdDJ6YnduZWJ3VEc1WnliZVdTd2J6eStCSjM0WkhjVWhQQVk4OXlKUVh1RTBJek1aRmNFQmJQTlJiV0VDUktnanEvL3FUOW5tRE9GVmxTUkN0MndpcVBTemx1d24rditzdVFFQnNValRHTUVkMjV0S1hYVGtOVzIxd0lXYnhlU3lVb1RYd0x2R1M2eGx3UVNnTnBrMnFYWXdmOGlYZzdWV1pBZ01CQUFHalFqQkFNQjBHQTFVZERnUVdCQlFnSXZ6MGJOR0poamdwVG9rc3lLcFA5eHY5b0RBUEJnTlZIUk1FQ0RBR0FRSC9BZ0VBTUE0R0ExVWREd0VCL3dRRUF3SUJCakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBanZqdU9NRFNhK0pYRkNMeUJLc3ljWHRCVlpzSjRVZTNMYmFFc1BZNE1ZTi9oSVE1Wk01cDdFamZjbk1HNEN0WWtOc2ZOSGMwQWhCTGRxNDVyblQ4N3EvNk8zdlVFdE5NYWZiaFU2a3RoWDdZKzlYRk45TnBtWXhyK2VrVlk1eE94aThoOUpESWdvTVA0VkIxdVMwYXVuTDFJR3FyTm9vTDltbUZuTDJrTFZWZWU2L1ZSNkM1K0tTVENNQ1dwcE11SklaSUkydjlvNGRrb1o4WTdRUmpRbExmWXpkM3FHdEtidzd4YUYxVXNHLzV4VWIvQnR3YjJYMmc0SW5waUIveXQvM0NwUVhwaVdYL0s0bUJ2VUtpR24wNVpzcWVZMWd4NGcweExCcWNVOXBzbXlQeksrVnNndzJqZVJRNUpsS0R5cUUwaGViZkMxdHZGdTBDQ3JKRmN3PT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZkNBWUFBQUNHVnMrTUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFIWVlBQUIyR0FWMmlFNEVBQUFiTlNVUkJWRmhIcFZkN1ROVjFGRC8zZDU5d2VRU0lnUzlBUUFYY0ZMQVFaaTlmcGVWejF0WS9XVFpyNVd4cGM3VzVrbkxhNWpJM1o4NXNyUzJuTTJzanRXd1pTN0lVSDRINHhDbkVReDREQVpGNzRWN3VzODg1djkvbEluQnZWSi9CNFB2OW51LzVudS81bnZNNTU2ZnpBL1F2MEhiL0lyWDNWRktQbzQ1Y25tNGluVUlXWXdMRlJtWlFVdXdqRkcvTjFpUkhoMUVaME5SVlJ1ZHF0MUJkKzJuU0t5Uy9PaHlzMCtsazNlLzNrUTlxdkQ0WlV0YTRWVlNVdVkwZWlweWlUaEFmb2NvT1JWZ0R1dXczcUtSaUFkM3JiY0V0alRqWUlvZjZXYUhzQ216VlBXQ014K2NnaDh0THFXTUthTVdzVWpMcW8yUnRKSVEwb096bWVycFF1NGVzWmdzT05rR3hIN2Qwa2R2VFQxN3M0T01VN1ZJOFpoamdHYU0rQXE5aUVOdThQaWYxdWR6MDdNd3ZLV2Y4R2xWb0NFWTA0UEM1V2RUYVhZRmJSOHZOdkw1KzNLZ2ZiNXhOTXlhOVJhbUppeW5hTWxHVFZ0RmxyNmJhOXUrcHFuRVg0dU11UlJnalNZRWhyTjd1dEZGZTZscWFsN05ma3c1aW1BR0h5blBwYms4Vm1ZMHhzdG5wdGxGQ1ZDWXR6VHVCTjgzUXBNTGpUdGV2ZFB6U1VuSjdlOG1ranhaMzlmWGJLRGZsZFpxYnZVK1RVZ0duQlZGNmZRMmlQSGc0VzE2VVdVd3Z6YmsxNnNNWkUrUG4wcHZ6N0pTZXVBeWVzOGxjcENtYUt1by9wK3FXcjJVY3dJQUhXcnZQMFlFemhYQXRMQWJzc0hocDdpR2FtdnlpalA4cnlxclhVV1g5WG9vd3h5QXVmTkJycDQzUE9CRlhabGtmOE1EUmlxY3B5b3dBd3B1ejJ4K2ZXdnovRHRkZTlzbXN6eWd0Y1I2QzF3YmR6Qmw2T2xxNVdOWVk0b0dhdGhKTXJrVEV4MGpBUlNIQVZzKzVyWWtRTlhiK1FnZlBMc1E2Z1h5SW5zcmVRZm1wbTdSVkZZZkw4Nm4xZmlVT2tZdlNoa1VQeHZidWt6b3k2SzFpaE0xaG8zWHpXNkV2U2ZYQStkcGlXR2FXZCtkb1h6THptR3dLWUZMQ0FzUkFsUEJBaE1sQ0ZYVTd0QlVWUHI4SGdWY0pIV3ErRjAwcGxyK0RNVGRyUDR6dnhZMTFrTk1oeFQrU2VUR2crZDRWNUxRSml0eVVHSk5COFZGWnNqZ1lCWk0vSUkvWENUa2owcXlET3BGMkFWUTE3Q0lqVXAvRG5UMVVrTDVGNWdkaitzUzF3ZzFnRTNnaWdtNjBmQ1h6U25QWGJ5QVBiSVh2K0lEcEUxNlRoYUhJUzlza3lobG1NRTVGM2NmcUFLaHEyQzBFNVBIMWdZYVhhTFBEa1pHMEhESk9uS1dIcDUxSTB6NVNPdXg4ZTFXQXVaemRIUXJUa3A4VG1qWG9JK2xhMHdHWnN6dWJxYk8zaWZRNkEvVzd2VlNZc1YzbVIwSkt3a0tjNFdIaUJrbVI4STNDQ2dJODdvT0w0cXpUNVArUlVKQmVqRU9nQVBLOGhZUHphdE0rZUlUcDJJTzl5VFFtZXJvbVBSeHgxcXhBY3NpbGUvdWJTZUViY1dRR1lFQ2doY0xZMkh5S2pvZ2pIMjVoTXBqcFV2MU91Z2xpNGVoMmVSdzBPMzJiSmpreXVDZ056ZzB2emxZTVNpU3MwdW9vNE1HN2hNT2pDRWFYMXlGRTBuU3ZqQnp1VG5FcEs4Nlo4SW9xRkFJdWJ3OGtnOUFyRWFSRVdTWkkrakg0WGJwNmc5RTlFbkpUM29hUnpETitNVUpCUURIbjU2YThvVW1FQnVzT3hCcy9ONSt0SkViUGtBRkRqOFVHdk9zL0lXdmNTZ2xHQmh2UzcvRlRZZnBXR1lkRFk4ZlBBeFdTQTM1c1RDNHA0K0xtNEFhcUlvUGVRdGZ1Zks2SmgwWmh4bGJzVVhPU21YTmlmRDVaVEFreURvZmJiY2NseG5BOFdOQXF4Q2JSTnlraFh4UXBhRHc2N2ZYVVlic2lHMEtodHYyb2VJdmg4cmhRTVlPY0VBcVhHL2VJK3puZ09jNXl4cjhxODJJQU0xYy9GTEZPcGxxdTVlRlFYck1aekdjVkNqWWJMV0c1STRCVDFldVJybGJ4dE5PdE1pdERERWhMWElJeW5BQXZ1T0VXRTNYM05kQWZ0OTRWZ2FHNDJYSVF0MFpYNlBlQ0UvcVFGZTlySzZIeDdZVTUwS3ZIN2ZXNGZTK3E3S0tCSnhzZ2dCWDVwU0FHaDFqSXJWaDV6UTZ3M1JmYWFoQlhtL2FDYkNaVGpDVUZVVHlXWnFXOXA2Mk1qSlBYVnFPclBnTU80TnY3NEdrZitvd2Z0TlZCRFFuakZKcUhTdzE3cFh2aFdXNUtacWUvUTQ5Ti9VU1RDQVZXb1FYRklIQkhYWGUzRlByVURzdUdEbXRGL2hIS1RIcGVreGhpQU9QSStTSnE2UzZIRjRJOVlXemtCSlRvNDZpVU16V3A4UGlyL1JpZHVMeEtZc1Nrc1Y4dkxsT1F2aEdYMllsUjBPQmhCakMrdS9nRWN2WTBBcEs3WWs0MU54alBTUW5XRkhURjY2VXJqZ2V2QjhDdTVhK2wydllTUlB0dVZEbzczaGhkTVNIblVYN3RUanNWWkd4QWwvV3B0aU9JRVExZ25MMjltWDYvdFIxdG1sa1lqOFc0WCtDU2pXY1VER1kxTnBTL0M3aFNLcWlNTE0vbDJRbVNXWjczRGR6K2dpbzhCQ0VOWVBRNDZxbmt6d1hVYnF2Qmt4alVRc1dmWkZnYnVvM3JBZit3TjdqT085MCt5bng0UGkzTCswbllMMVNjaERVZ0FQNGdQVi83SWQxcSsxSFNobXVHa0lxV1JQZ3l4TUZxUDhIZmpUbmpYd1k1YlFmYkpjdDZPSXpLZ01Ib3RGL0hlMWVnc2F4SFNxRzZ3ZmRtUTV4OE55VEZGcUJjcDJpU293SFIzeWs1KzM2aEY3dlhBQUFBQUVsRlRrU3VRbUNDIn0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjEtMDgtMTEiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI4OTY1LCJ1cmwiOiJ3d3cueXViaWNvLmNvbSIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWXViaUtleSBCaW8iLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDIxMDgxMTAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4zIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjQifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjEtMDgtMTEiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI4OTY1fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIxLTA4LTE4In0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiMWI2OTBhNzVlMWZiNzE1NmUzNDM5MDNiZTNhYTM5YjNhYjYxZDNjZCJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyIxYjY5MGE3NWUxZmI3MTU2ZTM0MzkwM2JlM2FhMzliM2FiNjFkM2NkIl0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJaVFBhc3MgU21hcnRBdXRoIn0sImRlc2NyaXB0aW9uIjoiWlRQYXNzIFNtYXJ0QXV0aCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyMSwicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoyfSx7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQ1ZqQ0NBZnVnQXdJQkFnSUpBTmFTckZkVUxydkhNQW9HQ0NxR1NNNDlCQU1DTUlHRk1Rc3dDUVlEVlFRR0V3SlZVekVSTUE4R0ExVUVDQXdJVm1seVoybHVhV0V4RURBT0JnTlZCQWNNQjBGemFHSjFjbTR4RHpBTkJnTlZCQW9NQmxwVVVHRnpjekVpTUNBR0ExVUVDd3daUVhWMGFHVnVkR2xqWVhSdmNpQkJkSFJsYzNSaGRHbHZiakVjTUJvR0ExVUVBd3dUV2xSUVlYTnpJRVpKUkU4Z1VtOXZkQ0JEUVRBZ0Z3MHlOREE1TVRBeE1UUXdNVFZhR0E4eU1EVTBNRGt3TXpFeE5EQXhOVm93Z1lVeEN6QUpCZ05WQkFZVEFsVlRNUkV3RHdZRFZRUUlEQWhXYVhKbmFXNXBZVEVRTUE0R0ExVUVCd3dIUVhOb1luVnliakVQTUEwR0ExVUVDZ3dHV2xSUVlYTnpNU0l3SUFZRFZRUUxEQmxCZFhSb1pXNTBhV05oZEc5eUlFRjBkR1Z6ZEdGMGFXOXVNUnd3R2dZRFZRUUREQk5hVkZCaGMzTWdSa2xFVHlCU2IyOTBJRU5CTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFY1RncENkd0pNYWZ0RU1DT1ZoMTVQRVdKalVEa09WRXN2aStiRUlSSERIZ0c1NWx5d3gyUkREVmw0VGdvN1JFY0dlK1pHTVZzZlRmMFVab0ZRZGtXV0tOUU1FNHdIUVlEVlIwT0JCWUVGSlJ1R01XSEtZc3laZU9iTkJhaTlXY0lmMEhCTUI4R0ExVWRJd1FZTUJhQUZKUnVHTVdIS1lzeVplT2JOQmFpOVdjSWYwSEJNQXdHQTFVZEV3UUZNQU1CQWY4d0NnWUlLb1pJemowRUF3SURTUUF3UmdJaEFPbGQ1dDg2YmNlVWtQY2xXblVtcHo5SUlNL1RBTUNHWEFsQ2VKTHZjQlFOQWlFQTQ0ZEkrQVNlZDEvSFNlZGsrTFhtUUpVTDZpb0VKcnZnNVRLQ3ZHZjVFOEE9Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQkFBQUFBSDBDQVlBQUFDakpsOHJBQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBSk5kSlJFRlVlTnJzM2Y5UkhFbVdBT0NjamYzLzhHQktGZ3hud1pRc1dHVEJGaFlJV1VETEFqUVd3RnFBMWdKNkxJQ3hnRjRMeEZrd1I2MktFU0FCM1UxWDFjdk03NHZJbUx1SU8xRmQrYVB5dmN6S1Nna0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU1yMWsxc0FGRzcvdHV5NURjVzV1aTAzYmtPMjl0UWZhMmlHd3ZadWh2RVNjeHErV2cxRkFtREVnYnZUenNqWXo1Vk1QdHBBMS9MMnRpeDMrTzlkQlB0OWpQTWc3eWU0L3huYWpzbHUvUEhtOUxhOGNTdTQxeWJhZTg5Y1FjNDQ3aEtudncvLzgxWHRnVkJRZDMyZ0w3OE9mV0hmYmRtNW0zdDk0Rzcrc0t6aGg0K2RBR2lIeVRlQUJBQlQranhNY2orYjRJWnoxeWNQYjh1WjIxR2xQcGc1dUMzL0VOak1ialU4YysvR1N6dHpwcmMzOUlkZmg3R3hjVXRtZFRYMGlYL1hraEFZSXdId3A2SW95Z1psMThINmhYdGFmYm04TFVjbVZlSG1CZGR1UjNWQi84bFE3OGFsdU9VOGZkMjlhd2ZHK0xyaGZtdDNjY3VYOUhYSFdxdTVTZ0FvaWlJQm9PUlpMb2FWRnVieHVEOTJia25SOW9ZNnZqVDJaQnY0U0p6dVZqUGMxeS9hV0hibGVsaE1rQnlUQUZBVVJRSkF5ZlJCTHZpY2YwNWdGMEM1Z2Y5Q2tGTlU0dFFLNk92SHYxTnRxWmprMkNMblJNRGY5RWNBS3RRTWt6R0pnT2tjUDFFUDduOTVnZi8xVU45V3lzb0pYaThrQXJaKzFwd1A5ODVZVjg0NGR6eU1jMWtuQXNZY01HU0tGRVd4QTBESllZWExZV1R6ekFlK21FQVY0U0I1djcrV2NxclByaFVrbm1ncjFld0l5Q3E1WXdjQUFId05VQytIQ1p1SjdlNGR2ekJSUG5LTHN0V2tyeXVjNThuNzRyWG8wcmYzb2ZseE11elMvYWxHL3d6cmsyTFpMQ1JJQUFEQU4wZkR4TTF1Z04xcDA4czdlOTRuaVplY0F4MEhhOVlaOUp3TVFZKysrekFRbEF5cjkxbVhSZUpIQWdBQUhtcVMxWnRkT2w1ejR1eCs1eG5vQ1A0RVBkZkoyUUQ3dzNPajB5U3FGejR4SmdFQUFFOC94TDNyK3ZyZ1lOM0F3QzZBUERUSmdXWTh0RGUwaVVXbHY3OGJmbitqS1hEdjJSZDJONkVFQUFDOFBMRVRtRzduZUlQL1c3c0E0dHRQWHBIaCtmNStXdGx2bGlqbUtVMEttaXlWQUFBQVFjOFkyclQ1dG1DN0FPSTZTSkpodkt3Ynhzc2Eya2tmK0V0YThweTcxNlZDSlFFa0FBRGdaVTN5cWNCdEpzZmJUSlpNcUdNR2RkNzNaMTM3cWZ4a1ViaWdEdTFGQWdBQWR1c3VreThJV2k5Z2JMYjgvN1VMSUY1ZG5yb05TQUlJL2ltajNVZ0FBSUJKN2E0ZHYrTC8xeTZBT0ZyQlA4Wkx3VDlsdFI4SkFBRFlmRko3NGpZOHFaL2NOSy84Tit3Q2lOSE96OTBHZHRDT1Nra2luUWorS1NFSklBRUFBTnNGdVpJQVAzYThnMy9ETG9CNTNYM1dUUktHWFRnb1lMenNqRW5zVU44ZlpqdFRTQUlBQUxaemxLd0cvV2lTM096bzM3SUxZRDRPL01ONCtZMWRYK3phckVsV0NRQUEyTjZzV2Z5QWpuZjRiKzJaZE05aWtUYi9mQ09VT2w3MjQ1Q0VHR08yTFFrQUFNanNBZTdMQUY5MWFYZXIvMlArbXp5dEQveVAzUVpHSGk5emNtb01ZdVF4ZC9KWFN5UUFBT0IxOWdWTi8zV2MyYjlML3NFWmVZNlhpMHl1OVdBb01LYkpkOFpJQUFEQTYvVVovTGJpMzkrbDhWYkp4dnkzK2ViWWZXYkN0aGI5VlFBSk1hWTBhVnVUQUFDQURCL2dBU2YwT2YvN3RldURNU2VjWTd4OE9PWjR0WXNpeDJBSkFBRFlqU2JsczdWMWw3bzAvc3J4RkgralpnNWJaSTZBcHdzOGxrdUlNYlhKa2s0U0FBQ3dPN1Y5dW03S2svcnRBaGhILzQ1ejZ6WXdnNU9nNDZXdC84ejFQSjBrOFNRQkFBQVpQc0NET0pwd0F0OGx1d0RHQ3NMQWVQbFZteVRFbU04a1o3RklBQURBYnRXeUMyQnYrSzFUVDQ3WW5TNUpxbUM4Tk1hUWFtcURFZ0FBc1B2QXVJWmRBRk91L2d0WXgvRlB0NEFBNDJXVVQrMzFZMHVyU3BqWndkalBWZ2tBQU5pOTk0WC92cjBaZjZNVnV0M1lGK3dReExIcmdBZlAxMUVYRVNRQUFHQ2NCM2hYOE8rYlkvWC9UbjlmRzAzczFkNjdCUVRSOStjMndKaDlvQ29JWXRUZFdSSUFBQ0RBMm5TaVBQZHZjM0NkWUFjQnp5Nk52dTBhTnRDTU9VYi9mZVNMWDkyV2orb3dXemUzNWFxUTMzSXg4OS92NytNSFRXcnRlMVdTZmh6OGwycmRxVi9UMSszTDBTZHIrOE5EZkZYWS9UOEtjTy92UGwyMzFCMktEM2FXdzNQaC8xVGJ4bjY1Tnc1RjF3M3pwSnVaL240dTUyR3Nodjd3aCtaZDlQeWg5NC9iOGxtVndmYituTGxjcUlMWlhLajdvb09ZMHdEOSs3bFMybUdBL2FUcFM1QjdxMjl0N3p4NHZ6bE5kaWpzVXA4QVdOeVc2K0QxM3MwNHJrVytMOWREL1RXYWNsWHpoeStxQ1NRQWtBRGc2Y25iU2RBSCtHVmg5M29SN1A2Mm1uK1d6OFRuQW45QnpyaTZRRW04eCtWOHhuc1NOUUE4MG1SSFQ0NUZUZ1JJaElJRUFCSUFQS1BmMWhkeGhhdVU5MG9qcmY3clg5czdDQnJvU09aTTI1ZlBreFhQT3hIdnhYbHlKc0dVMnFDSk1lZmRnQVFBRWdDc01iRzlUTGExam1HUllxNlFDQnczRTIyM3pLVkFaelpIK3ZOL1JRdjhCSDNtRDZYdUlnUUpBQ1FBcU9JaGZscklQWTI2YlZnZnkydE1GUHpIMGdYcno0dUpmLzkra2pBbWRoSmc1Mk9rendBQ1VKcitGT20zS2M3cCsvc0YzTk9Ud0lGYW0rd0MyUFIrUmJBYSt1bU5LcG5WMlczNUZPaDZmcWw0ZkQ0YkN1WVBvN1pSQ1FBQVNuMklIMG9BN0VTVDRxOUtIV3Z5V1FYL3ZYZUMvekQ2eis4dEt4MHZmd255dTY4Q1BiUE1INzZPVDhXTzJ4SUFBSlNxbjlDZUNieXFDSzdiWkJmQU9wb2cxL0Z4Q0hpSTQ3RFNOcnJ2L3ZNRFY4TTRGY0hPazFRU0FBQ1VMTW9Edk1uMC92WFgzV1Z5clhZQjVORU8rOVcxVDZvaW5GV3FNMkVhSVFGd2xpVEVJdnFVWXV4UzJ2bTRMUUVBZ0VtdEJFQUpRWFdiN0FKNFNZVHR6cjhsVy8ramlwSXczU3YwYjBXLzd6eDBNNHhYYzNNR0FBQnNFWERNN2VjTTcxdVQ4anVSMmk2QStNSE9tV29JYTNWYlBwY1k4TXo4ZDU2elRMRU9uS09DOFVvQ0FJRFM5VnNyNTE1eGJESzhiemtHMDIzeUdhM0lDWUFyd1U1NC85WWYzRy8rc2tveFhzOW9KUUFBWUROTHQyQWpUY2FCdEYwQVQ5dlhEOG1nam41MnZ3bWt1Q1NOQkFBQU5makRMYWdtaUc2U1hRRDZJZHRhQmVuRFU0aXdBOERoZi9FVlYwY1NBQURVd0NzQWRRWFFkZ0VJTHRuZXNwTGZ1YTgva01IOFFRSUFBTFl3ZHdZL3B3UkFDY0Z6Zjc4N3pSNElUQUtBV2Z6ZExRQUFDZ3ljKzBUR21TcUZuZXRYUk1kTXF0b1dUMjVXYWR5RXprNTNJVWdBQUZDRGR1YS92OHprUHAwV1ZPZE4rcHJNa0FTQXpieDFDK0RCOC91bmtuNlFWd0FBcU1IL3VBVXZhdFA4aVpKZGN4WUE4SlM1ZHhyc3F3SWtBQUJndk9DVytvTGxKamtMUUQrRUg1djdjTGM5VllBRUFMM0ZiZmt6ZURsUlRVQkcra21XbFphWEE3TlNnek83QUw1WnpmejNmMVlGOE4zWUN4SUFsUThDMFNjcS9YYXBENm9LeU1oQmdHdjRYWkE4bXliWkJSQWxBWENnQ3VDQmY3Z0ZTQURVcTUrZ25BZS94bjZybElOaGdOeFlBWDVlbThwZmhkSUdZdGlUQkNDUVpZQnIwQitRQUtqNGdYaWU0cjhMOUM3Ti83NFV3Q2E2OURYQmFxSlpkM0RjdDRFajNTSEVUcFIvcWdaNE1EWkpBaUFCVUtIK25mcm83NmQrU1BsOHhncWd0eGNvdUYwRnZVZHRxdWNkMU9QazBLMElTZnlENUwxbjRvZ3d0MzJ2R3BBQXFFdVg0citiK1BtMmZGSlZRR2I2NUdvVEpPaUttZ0NvYVd0OEgvelh2Z3ZnU3J1REJ5S016YTJ4Q2VyUnIvcEhQL0gvTXBXeFlqTDNmYnpRM0dkem9lNnJkQlJvSEkzYUJ0b01ua0c3TGwrU1hRQlI2bUpobU1LejRzSFk1R3MxVE1JT2dQbnNaUkFZOUt0V2g4bDcvMEJldWhUcmM2VlJ2d0JRNHlxc1hRQ3hkZ0YwaGl2MGg3L0dwdE1rUVFsRm0zdFZjcDFTMG9QWkNxQytwdTdyY0JKd0xHMEQzcWMyMWJmNmJ4ZkFWNmZCNnFJMWJGSDVITEhFbmJkQUJoUFV4K1drc0hzdUFTQUJvTzdMdGo5TW5DSUdtL3BGdkxLb3VLOTB5WUlEUkI0UEw1UFhBY0NEZDRhQnB6UVNBQjdzNnI1TWQ5c21vNDZuNTU1RGRnRUU3RE5SKzRxVlQrWndGSFNNY2pBZ0ZHQi82TkFtUlJJQVNBRHcrdkYwY1Z1dWsxZXBOaFg5bnRrRk1MN0xGSGNPc3BBSVlHSk5pcjBvZDZDSzJLV2YzSUxKM0IzNkYzMUx6OXNVNDV1b1l5UUE1clFjN2kzekpBRGFHZi8rNnJiOFN6WHN4UDhNWStoK0pnRkNmNERxbXhUcklOVStJWEdxS1lXdG42bjBLNHZSWC9VN1MxOFAwRnltdUovUnBCelhLY1puWTUrYlMvU2Y1ZjUzb2ZOMEpBQ0sxRzl0aTU3QiszQmJQaFY2L3lVQUpBQmdqZ0RtMENRM3RJK3B6cDBBemRBV2N0S2YxdTZyUkUvZm0vOGI3cy9WRUN5dTNKYU41SkFVdSsrdXJ2bXgzeCtORzhZUFpobFVvbStGTEgxRnlDc0FkU2NBYkhkV25QN3YzWDluQVR4MHJ2NkxMeGREVU50Si9LMlZGTk5teWgvdkw0YWtiNXU4YXNTSTJndzZSQTJmSEpFQWtBQlFsTm9QVS9YdXY3TUE3anRROTlXVjYySEJ4enZsa21MS3QvbDV2MURycXd2c05KdVl3NkYvTlRSNkNRQUpBRVdwK2ZDL1RwMDhXNXBLeDBkSm9icFhReVVESG1xMWkrb1RaSXRrdHd5dmRKbEJZNjlsNEpjQWtBQlFsQ2tuRVFLOXZFcXRCeU5LRENuM0F4OWJvbzJWeXJkNWU2YzdzS25UREJyM1NVWDFJUUVnQWFBb1Z2OWpCZHgyQWN5dkQvaSs2TFBLbzc3WlZEeG5rQlJUSGlmSGppVEhLR1h3cUMwZ2RiOGxBQlRGdS85eEFveTlvTmRWb3lQOVZwRUllT0JTL1N2cCsxZG1GcWJVUEdVL2swWmNXeVpMQWtBQ1FGR2MvQjlycFQzeXRkWEd0bWZsdWQyaXRjMFpXL1d1cEtkM0JIU20xdHdYY1VYalI2WEdreTRsQUNRQUZHWHNjaTZ3MjNpVjNTNEFBWStTeDhMUlVXVjl3aGNCbEpmbTliNGNRRGFCeGxHbGRTTUJvRjhxU20wN3F5SnU3VzRlWFdPWHdUVUtlQlRsMjF5bWx2N1JKT2RqS0MrWGhXbDIzVTR5YUtTbkZkZVBCSUFFZ0tMVTlFV1ZpSWU3UGZVTXNndEFtMUhzQm9qSStSakt1bWYvMkExUW9ZTk1HbWZOSjFoS0FFZ0FLRXBOVy84WEFlOVQ4OFMxZGhsZHEvbU1vbndiOS9iTUlSU2wrbDNXVmRyUElHUCtSV1pLQWtBQ1FGRkdPeEFvMmlRNDRrcnVTNStkdFFzZ0RxOENLSnVNZjZYUEw1dGtaNHl5K1ZkdUtGaGZ3VGw4S3VSQVZVa0FTQUFvU2pYSjFVWEErL1RTaEtnTFdMOU54WE1iQVkreVNmL3VDdThUblhwV05paTE3N3FXSlE5UUZxcEpBa0FDd0FOSkdhVkVuUFJHRE43V2ZRN1pCUkJIcTM4ckJZeUh1M1NxanBVQ0ZnaDRwUndPQmhGMFNnQWdBYURVTmRsZEJKd0VyYnNTRW5HVnJlWUpuQVBRRkVtemg4blZTM1dzU0FMSWpIc3ZWUUpBQWtBQ1FLbXZuQVJ0Nnptdi90K0p0Z3VnOXJIYnFxY2lDZkJOazd3ZW8wZ0NWQ21YenEreFNRQWdBYURVTmJsZEJKejRiSnFJN2dMV2VXc00xZmNWU1lCQkRvZC9LNUlBN0ZnTzIzODYxU1FCZ01tclVzM0tmMHBsclA1SDdiTzFqOSsyUGl1bGpaZVNBSW9rQUd2TFlTdmNxV3FTQUVBQ1FLa3VzYm9JT05uWjlqVzBObUQ5dDVJQWtnQ0tCU2xKQU9XVno4WEd0RHd2WFFZTnkyY25KQUNRQUZCMi84Q08vaW5Wa2xiL28vWmJZM2crQ3lGS3JGTHlwNmdsQVJTeG1nNHVxeVFCWVBJb0FhQVU5cURPWWN2ZUl1RHo2TFVUbkRaZ2UyZ05wLzkxWW14UU5od1BTdDc2M0NTN1l4UXhRWEg2U2N4MWttR1ZBTkRaSlFDVTJnNnh5aUZMM3dTOGQ0dEMrNjV4L0pzdVdmbFVmSm5xZnF4Z2Q0emlqQXpCUTVhVExRa0FFMGQ5V0xGYWxWZEM5VFRnL2R2VlJMOE4yRDVhUStwZitsVmRLNS9LdXVWY1lreFJMTjdtWUpGQjR4RllTZ0FnQWFEVXRlcC9wd2w0RDQ4Szc3L0c4anpuU2txWjQwUFVjZG04UTVrNlljNk9IR1RRY0s0MUhBa0FKQUNVbmZUUE5zTzJIVzMxLzNxRTM5Z0diQyt0WWZVNys4WmFaYzJBcDZta1R4d2x1d0VVTzJPeWU1RGxjT2lmNzBsS0FDQUJvTHd1WU8weVhtV3E1Wk5mZGdIa28wdDVuSnVrNkQ5VGNEYUE0bFdBakRwckR1KzBkYXBLQWdBSkFHWHIvcGo3QTdlRzFmODdiY0EyMUJwYW41MUhMWkxWVDhVYzluN0NWaUpBOFNxQVNkV3IzMU5GQWdBSkFHV3pCMngvNm00Sk82ZWFDaWYwMGZyeHBhRjFMVjJ5STBBUjhEeE9CRWlPS2I0S0VNaFJCZzNFcEVNQ0FBa0FaZjFWNlg2eVZkcjJ1cHBXLysrMHlTcG16bHFCajVKOHdlck8zakIrK0lxR2NyODBIaFhUMjVjeGxRQ1FBSkFBVUxKZVVib1lzdWhkd1EvU3B1SkErTHpDeEVlSmdjK0JaSUNTNmpvUThLVXgvY2hjUlVrVDd2RCtTYi83NjRHVXc0bjZiMi9MVW5WdG5RQ1kwM0tvUCtaSkFMUXovdjNWYmZtWGFoaXRYNlhLeHNYVEZHdmx1Vy9mYnlhY0tFY0x1Zzl2eTVtdXVMWDlZWHorZGFoZmh4dlg1V3pvUTN5TFI5cWhIL3c2L05mQ1gxMG1pZlVrQUdJRUNPdjRjRnMrcVNvSkFMTHIzK29lQWZEdTFKd0FxU2twc1BkbzNQNDVXUzErS21ETVBXbnladWhIUEYvSGordjZWN2ZtMmZFalY1OXZ5enZWT0w2VFpFdElMUWtBcndEVW13QlE5NVNneG5mL2Y1UUVjUllBZkIvMDlPMndmMDBtdDFjckZxcVBFWkltN2RDMmNqeG5vVkdGNCtveWFBU1h5ZllmQ1FBa0FEREJGL2hLaE1ENjg5dGMzaWwzdmhWamExSmVueWExOER2eVpDcDZRL2lTdkE4bkFZQUVBTVNiek04WjlEYVNJYkNXTnBORWdQN0RsTW14SE9JL1NiRVI5RGMxaHkwaEI2cEtBZ0FKQUV6aVBaKytZeGNBck84Z2VORGpFOWRNSFFkR2Z3WDhTRFh0M25ueVRwUUVnQ0JRQWtEZG93M24ycWFiWkJVVE5nMTZJczkvN1hobGFtM2d4SmlrMkk0ZFpSRDhDeGdrQUpBQWdMc0pTclJuVkJ2azN0Z0ZBT1hNZzA5VURUTWx4cUx1Q205VVQ3a1RxUjlOSUx6M0lRR0FCQUJFYUwrUjIzT1Q3QUtBYlhSQjU3OHdWeExnTkhrTm9Oakt6ZUgwUjF1Z0pBQ1FBSUJlbTZ6K3Z5VGlMZ0JKZkNRQnpJSEpUN1RuaWRjQWRpQ0hRLzg2MVNRQmdBUUFCR203T2JUbEp1Q3pmS0hwSWdtZzc1Q2RpSzhETktxbG5JeU9iejVLQUNBQkFNOXBrOVgvZFVVN3pka25uREJIdHVKSnZrbUFTRHZHTzFXeW5TNkQ0TitBSndHQUJBQkVhcmM1dGVPSXIvZ3ROR0V5Q25pdUEvVWR5VFBtMWlZTHhGbmJUL0hmKysrdnIxRlZFZ0JJQUVEQXlVZjAxZjg3aTJRWEFKUXc1clNxZ3dDaTdJeHhPT2FHb21VMERYUVNBRWdBUUE1dE5zYzJiQmNBbEJIdzZEZDRwb3g4RHNEZkNoL0ltdURYK09HMkxQVXhBQVp0aXBjWS9wakJmYnU1TGI4RnU2YjN5UzRBOGhHbG4vK2lLdkJNZWNEWE1kYTBTUEZYL3M5VjA2U3NvTlhMRGdCeUVtM25Xazd0MXk0QWVKMEl1d0JzZWNZenhYTmtZMjNLNDlBL3F3SVNBRWdBd0gxZHdPZFZiaXNQaStRc0FOaldmcEIrQTVKaUl5NGFsL1lLUUpQaXI2ejNXMG9PaC84Q3dKM2pZTmR6ZGx1dU1ydUhuNEk5WC92Zy8walRKaE45ZjE4RnVJNVdWUkJFaE5jQWRwNUVMaWtCc0RjRS85RXo3WWNaVHFnQUdGZVg0cDFiOHpIRCsrZ3NBSGlkejI0Qi9DVkNVcXlWQUhqYVNZcS9WZkdUZ1JXQUg0aTQrci9LOUY3YUJRRGIrM2VBYTJoVkE0RXNTL3RCcFNRQXVxRkViendmOUNFQWZ2QU1hNEpkMDhlTTc2ZGRBQ0RZZ1YzNUk4QTE3SFNPVUVJQ29GLzFQdzEramF2YjhrNy9BZUFIclA3dlhzUmRBTWVhT3Bud3FpckU2ZzhTQUk4ZXFEbDhUdTlkY3VnZkFOL3JrdFgvTWR3RS9CMUhBZXNhbnVvL2MvcEZGU0FCTUo3Y0V3RG5HVHhNSGZvSHdGT3Mvby9uVThEZlloY0FPZmg5NXIvdmRSa2lLVzRSTitjRVFIL29YeHY4R3MrR0FnQ1BkY25xZjIyL0oyS2RBMUNSdjJkNjNRY3Avb202L2FyL29TWUd3Qk9zL2svem00NkRCZDNITTg0UExtYis3ZjlLRmthSW83c3QvNXo1R3Q2cUJpUUFYcGJEb1gvOVZoR0gvZ0h3M01TekNYWk5Id3U5MXgrRHpSdTY0WnBXTS96dGR1YmYvcnV1VHlCTjhzbEJLcFRiS3dCN3cwTTgrcnRCNzFKNXF5Z0E3TzVaWnZXLzd0L21MQUFpKzdtUzN4bmhqSzVXYzBNQzRIbjllLy83d2EveFEvSU5WUUNlRnUwMCtJZ241dSthc3dCaStGWDN6OExjYlhNMTRkZ0gwZnREMVFtQW8rR0JHZGxaK25ycU1BRDhTTC82L3o3WU5mMld5dCsxZHBic0FrZ0I3b0hUM2ZNdzkyTGJmeXE2MTYzbUpnRWdBZkQwUUhRUy9CcjdiVVFmOUJFQW5uRVVMQWpxVjhCcVNWemJCVEIvQW1EZkVKQkZzQ05STTUyZjNZTHcyZ0RYc0t3dEFkQVBRaGZCcjdHZlFCMG1XNGtBZVA1NUZuSDF2NVpuMTFteUM4QmttaHpxWjZwK3VuUy9XVU54cnk3bGtBQzRTUEV6a1gzd2Y2Vi9BUEFNcS8venEzMFhRSVJUK1A5aEtCRHNCRWtBUk5EM2Z6dGo0dXFmMlcxcC9TRjZBaUNIUS8vNnljUm4vUU9BRnlZUlZ2L25keFl3dURpcHJBNE9EQWZxSjFBQzRNbzlSMytJbzdzdGZ3WXZGL3BGTnJTVmVsMm9ld0pZQkh0K2ZVbjF2dWQ3RUhBKzBVNzAyOXZLZmk5NXpyMm5kQjdnOTE1cmV1YVF6NVNkSjRtajdnREk0ZEMvUGh2elRyOEE0QVZXLzJQcGQrMHRnMTNUVkdjQnJDcjd2V3dtd2pnMTlZcjhId0YrYzVQc0FvaW9UVEdTbFR2L0trYkVCRUEvVVRwTnNWY21ib2JnMzZGL0FMekV1Ly94UkRzTFlLcUo1aXJJM0NYS3hKcUhkUkxodGR1cnd2L2VVOTVyZ3VGRVNWUldjYzVjaEswNEw1Vk9uOGlPVndEcTVSVUE1dFFIL2wrQ1BjTVdxaVhFMkREWFdIR1J2RWJKOTY2RHRJdWppWDkzSTc3Z2lZUllsSFpSdktNTWd2OVRmVUlDd0VUSEpGL2RzNlpGOHU2L0NWNnNkK01qdFVuYm5vMVRqOHNjdXhDdWpjOEViUk9YSHNRcUFRa0FKQURJaDlWLzQwUEU4U0xTZkV2QU03LzlZTzFoRHFmSlFpUGZuQVJxRDBWL0phWUpPRW55a0pJQUVBU2E0S3Q3U3BsRTNKMDA3VGtXTnhpZWNoZUFMeXB4bDZTOER0UVd6bWU2RDEyd1B0RnBtck9KOXBXWW9uZEpYYWI0cS8vNytvUUVnQW1PQklDNlowMU53T2VZU1dYTU1XS09NU1BhZVV0V1BjMi81eHlqSW83WDRvN3A5ZmM4Mm9KMHNVNVQvT0QvU0orUUFCQUVtdHlyZXpKK3R2bk85TlBhVk44dWdDN2diNVlFTVA5dUpFTWU3RHlXQktnNytEOHY5V1pIZkFCNUlFa0FDQUlsQU5ROXI5RWtxLy9HaWRqalJzUTJhczQxamIwVTg0dGJjNSt6RmZFZ2NrbUFlb1AvWXAvYlVXLzI0OEhJKzVJU0FJSkFFM3Qxenlhcy91ZW5UZlh0QW9qNjJlVnpjNjlSRXo5Ulg3czlDbkJ2Zkg2OFBsM2dlTFM0Y1REYW9TTlBaZDBhL1VJQ1FCQW9BYUR1eVh3U2FmS1l4MWd4OWRqUkJaNkRYYWRwRGtPc3lVR0t2ZkMyWnd4NGNYZU14Tmh1WTlISXI2RVh1ZjMvUE1YZit1L2J0QklBZ2tDVGVuWFBwcXorNTJzLzFUVVhpZmlaeWg5OUFrdlE4L3FrNUVYd2VvNFM3SFFwL3VLa2hPNXU2am42MkZkY0hMcklJUGhmNkJzU0FJSkFDUUIxenhZVGJhdi9Famc1SlhCeU9JajV5ekF2a3dqWWZEektvWDZuK3ZSbEtVbXh1M21GaGNydEF2L3JET3EzdU1UOVFRWTMvVnova0FBUUJFb0FxSHNFajVJNEZTUnhJdjdlbDdaQkMzeWVEMkM3RkgvRlAvSTR0Y2pzM3ZYWDY2REFwL1gzNWlTVHdIK3k4ekIrbXZpaEd2MVF2WnZiY2pqOGwva3NSMG9BelAyYjNxcmEyUklBcmJwbmdtZGN0SWxzL3p3N1V6VmJKWEs2UU5lenVpMXZSdnozenpNTnF2dXg5ZmZiY2pYTTIxWkRxU213MlJ2R25sK0c1MXlPZ1dDMGNTcmlXTDd1T05IM2lUK0dQakhXZkRxeTl0NS9meG42UTVQWmI3Z1p4dnNpWXRHOUZQZlVVU1ZlR1lNZEFIVW5BTlE5VXdTTlZ0WEtTZWJVdEF1Z05lOVFqRk9oeDNPbG5yS1lvb0gvYmFLTzFDWGJVd0FvTjJEc2dsM1RSOVd5dFZXS3QzUGllTVIvZTVucVd5bkVPR1g4SkpwKzFmOVRTUWtBQjdjQVVLclRZTmV6VExiK2x4WUFOR25jSk5NSFZjN0VWb0hIcWRWVWdSamM4MXVhYU92LzM5eHJBTmhhbStKOXI5enFWWm5CeVppN0FLNlNwQkhUaXA1MCtwaWNDY2EwejV6SmtrNFNBQUFRTXlqYnhqTFp6cjNMQUNDU0pvMi9DMERBdzFUajFPZmcxM2lUSkZPWnpxVGpyd1FBQUd5blRWYi9TN1pLZGUwQ0VQQXdsY05NcnJOZmtiMVNYWXhzbVNaT2lFa0FBRUM4WUd6YlNjUlN0ZXhVYmJzQUJEeE0wYWRXR1Yzdm9TcGpSRGR6dERFSkFBRFlYSnVzL3RkZ0ZmQytucVJ4RDFjK1RGNEZZQng5Y21tUjRUVWJXeG56dWIyU0FBQ0ErS3orMStOVHNJQzRELzZQQkR4a1pwYVZ6aDFaSkR0akdPZTVQY3ZYSmlRQUFHQXpiYkw2WDF2ZzhsdXdhM3FmeHQwRjBFOUtQNnQ2ZHVoRDVrSDB1MlJuREx0OXJyeWI2NDlMQUFEQVpxeisxNmUyWFFDOWZyVjJwZXJaZ2JPVS8yY21WOGw1QU96T3JBa2xDUUFBV0YrYnJQN1hxTVpkQURmSnFpZXYxNi82Znlqa3QvUzdZajZwVWw2cFR5UXQ1N3dBQ1FBQVdOOXB3QW5wVXJWTW9zWmRBRmZKcWlmYjYvdkwyMVJXRXFsUFpweXBXclowRnFIOVNBQUF3SHE2OVBVemJORW1vMHdYek5TMkM2RDNXUklBd2Y5MzQ2NURBY2wyTEpVQUFJRDFSSHYzL3l4NVIzdHFOZTRDdUd0clhqVmgwK0QveXUrRC93cTFtMG9DQUFCZTFxVjRxLzhDc25rbS9qWHVBdWd0a3EzUENJNGxBZGdtK0ErMUcwWUNBQUJlWnZXZk83WHVBdWdkSm9lZ0lTaVdCQ0RiNEY4Q0FBQmUxaVdyL3p5YzlFZTcvOGNUdHRFUHlaa0FDSVlsQVhqSjV4VDBIQXdKQUFCNE9iaUs1Q3haL1ovYnA0QjFjRHh4RzVRRTRNNVY1VUh3WFJMZ1RGUGczaGdaOWpPcUVnQUE4TFF1V2YwbmozcVl1cTMyRTl6L1RXV2U4czc2bHNrSytGMFN3Q3N5OU1MdmtwSUFBSUNuV2YwbnA3cVl1cjMyUWQ4YndWKzFQcVZ5UC9YM211RHZuWHRTcGJ1ZElPR1RRQklBQVBCalhiTDZUMTcxTVVlYjdTZTkvNXVzZk5ZVzZMd2JnbDIrOTNub0V4Smo5VmltcjhuUVpRNFhLd0VBQU4vclQxWS9DUmhzcmxSTktHZkpMb0E3ZlRENFZodXRKdEQ1N0ZZOGF6VWtBU1J0eTNaemIrekxadGVIQkFBQWZPOG9UZk50OVUwbUdWWllZN0lMNEdGd2FEZEF1WUhPWWJMbGYxT0xaRGRBcWJJZDd5UUFBT0NoUHZCL0greWFmalBwRHVzczJRWHdPRkQ4TUV5TWw1cEhNVzM4VFhMSy9iYXVodjd3d1RoZWhQdkpzRldPUDBBQ0FBQWVzdnJQcHV3QytISFE4M2FZS0s4MGtTd3RoOEQxVU9DNkUvMDQvc1o0bm5YZy96RVZrQXlUQUFDQWI2eitzNDJ6WkJmQWMvZm1qVVJBZG9ILzIrVHpmbU1Ga1IrU0hSVzVCdjZMRXA3SEVnQUE4STNWZjdZVjdidlAzVzFwQTEzUC9VU0FvREttczN1Qi85THRHTlZxNkF0dmh1QlNramRtSFJVVitFK3R2MmwvS3NxYVpReHovNllMdzhCc0x0UTlhK29EL3kvQnhzT0ZhakhlRkRyKzdOK1cwNEI5cnJaeVBZd3pqZTRiSW1sM29VM09YczZIdWtBQ1FKRUFFQVNha0t0N3o2cEp5NWNVYXpjQ0wyc0RQbFBiVEFLZmM4bUFTWVAra3lFSlF6eDlNcWJmalhhcHJVNVdMb2Q3TGhFbUFhQklBQWdDSlFEVWZTV3MvbFBLbUpQN0dIUXdCS2VDbjkwbUV5K0dBRWZRbjE4eW9FK1FuUTZKRysxNWQwbXcwK0hlVnBkby83dCtSU1dXTS85OTd6dENiTjc5WjFmNmQwYmJRTmZURG1XWnlmMzdQSlQ3MTk4SHJiOE13ZEIrc2pQbU9hdWg5UE9PUDRiL21vUGtYWjluNmR1QmdYZDk0SEdmNFBrWTRPWlJmMWpWZkVOK212amhZeklFVEsxTDgyN3BXaVVuL1VvQWJPN3FVUkNFOXZUYUNmQ3lzSHY4T0JGUVcySmc5U2lJdVVvT0thdmQvVmhycjhMRXdQS0YveDBBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFLalcvd3N3QU1peE5kcVJDVXFnQUFBQUFFbEZUa1N1UW1DQyJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTAxLTE2IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIxLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IlpUUGFzcyBTbWFydEF1dGgiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlUyRjEwMDAyMDI1MDExNjAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTAxLTE2IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIxfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTAzLTA2In0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiMmJkOTE1ZWM0MzZmZGFlNDc2YWZmNDBjNTEyNTZjZDYxZTBmMmU0ZSJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyIyYmQ5MTVlYzQzNmZkYWU0NzZhZmY0MGM1MTI1NmNkNjFlMGYyZTRlIl0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJTZWN1cml0eSBLZXkgTkZDIGJ5IFl1YmljbyJ9LCJkZXNjcmlwdGlvbiI6IlNlY3VyaXR5IEtleSBORkMgYnkgWXViaWNvIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3MywicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoyfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCIsInJlbW90ZV9oYW5kbGUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURIakNDQWdhZ0F3SUJBZ0lFRzBCVDl6QU5CZ2txaGtpRzl3MEJBUXNGQURBdU1Td3dLZ1lEVlFRREV5TlpkV0pwWTI4Z1ZUSkdJRkp2YjNRZ1EwRWdVMlZ5YVdGc0lEUTFOekl3TURZek1UQWdGdzB4TkRBNE1ERXdNREF3TURCYUdBOHlNRFV3TURrd05EQXdNREF3TUZvd0xqRXNNQ29HQTFVRUF4TWpXWFZpYVdOdklGVXlSaUJTYjI5MElFTkJJRk5sY21saGJDQTBOVGN5TURBMk16RXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFDL2p3WXVoQlZscWFpWVdFTXNyV0Zpc2dKK1B0TTkxZVNycEk0VEs3VTUzbXdDSWF3U0RIeTh2VW1rNU4yS0FqOWFidlQ5TlA1U01TMWhRaTN1c3hvWUdvblhRZ2ZPNlpYeVVBOWErS0FrcWRGbkJubHl1Z1NlQ09lcDhFZFpGZnNhUkZ0TWprd3o1R2N6MlB5NHZJWXZDZE1IUHR3YXowYlZ1em5ldWVJRXo2VG5RakU2M1JkdDJ6YnduZWJ3VEc1WnliZVdTd2J6eStCSjM0WkhjVWhQQVk4OXlKUVh1RTBJek1aRmNFQmJQTlJiV0VDUktnanEvL3FUOW5tRE9GVmxTUkN0MndpcVBTemx1d24rditzdVFFQnNValRHTUVkMjV0S1hYVGtOVzIxd0lXYnhlU3lVb1RYd0x2R1M2eGx3UVNnTnBrMnFYWXdmOGlYZzdWV1pBZ01CQUFHalFqQkFNQjBHQTFVZERnUVdCQlFnSXZ6MGJOR0poamdwVG9rc3lLcFA5eHY5b0RBUEJnTlZIUk1FQ0RBR0FRSC9BZ0VBTUE0R0ExVWREd0VCL3dRRUF3SUJCakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBanZqdU9NRFNhK0pYRkNMeUJLc3ljWHRCVlpzSjRVZTNMYmFFc1BZNE1ZTi9oSVE1Wk01cDdFamZjbk1HNEN0WWtOc2ZOSGMwQWhCTGRxNDVyblQ4N3EvNk8zdlVFdE5NYWZiaFU2a3RoWDdZKzlYRk45TnBtWXhyK2VrVlk1eE94aThoOUpESWdvTVA0VkIxdVMwYXVuTDFJR3FyTm9vTDltbUZuTDJrTFZWZWU2L1ZSNkM1K0tTVENNQ1dwcE11SklaSUkydjlvNGRrb1o4WTdRUmpRbExmWXpkM3FHdEtidzd4YUYxVXNHLzV4VWIvQnR3YjJYMmc0SW5waUIveXQvM0NwUVhwaVdYL0s0bUJ2VUtpR24wNVpzcWVZMWd4NGcweExCcWNVOXBzbXlQeksrVnNndzJqZVJRNUpsS0R5cUUwaGViZkMxdHZGdTBDQ3JKRmN3PT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZkNBWUFBQUNHVnMrTUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFIWVlBQUIyR0FWMmlFNEVBQUFiTlNVUkJWRmhIcFZkN1ROVjFGRC8zZDU5d2VRU0lnUzlBUUFYY0ZMQVFaaTlmcGVWejF0WS9XVFpyNVd4cGM3VzVrbkxhNWpJM1o4NXNyUzJuTTJzanRXd1pTN0lVSDRINHhDbkVReDREQVpGNzRWN3VzODg1djkvbEluQnZWSi9CNFB2OW51LzVudS81bnZNNTU2ZnpBL1F2MEhiL0lyWDNWRktQbzQ1Y25tNGluVUlXWXdMRlJtWlFVdXdqRkcvTjFpUkhoMUVaME5SVlJ1ZHF0MUJkKzJuU0t5Uy9PaHlzMCtsazNlLzNrUTlxdkQ0WlV0YTRWVlNVdVkwZWlweWlUaEFmb2NvT1JWZ0R1dXczcUtSaUFkM3JiY0V0alRqWUlvZjZXYUhzQ216VlBXQ014K2NnaDh0THFXTUthTVdzVWpMcW8yUnRKSVEwb096bWVycFF1NGVzWmdzT05rR3hIN2Qwa2R2VFQxN3M0T01VN1ZJOFpoamdHYU0rQXE5aUVOdThQaWYxdWR6MDdNd3ZLV2Y4R2xWb0NFWTA0UEM1V2RUYVhZRmJSOHZOdkw1KzNLZ2ZiNXhOTXlhOVJhbUppeW5hTWxHVFZ0RmxyNmJhOXUrcHFuRVg0dU11UlJnalNZRWhyTjd1dEZGZTZscWFsN05ma3c1aW1BR0h5blBwYms4Vm1ZMHhzdG5wdGxGQ1ZDWXR6VHVCTjgzUXBNTGpUdGV2ZFB6U1VuSjdlOG1ranhaMzlmWGJLRGZsZFpxYnZVK1RVZ0duQlZGNmZRMmlQSGc0VzE2VVdVd3Z6YmsxNnNNWkUrUG4wcHZ6N0pTZXVBeWVzOGxjcENtYUt1by9wK3FXcjJVY3dJQUhXcnZQMFlFemhYQXRMQWJzc0hocDdpR2FtdnlpalA4cnlxclhVV1g5WG9vd3h5QXVmTkJycDQzUE9CRlhabGtmOE1EUmlxY3B5b3dBd3B1ejJ4K2ZXdnovRHRkZTlzbXN6eWd0Y1I2QzF3YmR6Qmw2T2xxNVdOWVk0b0dhdGhKTXJrVEV4MGpBUlNIQVZzKzVyWWtRTlhiK1FnZlBMc1E2Z1h5SW5zcmVRZm1wbTdSVkZZZkw4Nm4xZmlVT2tZdlNoa1VQeHZidWt6b3k2SzFpaE0xaG8zWHpXNkV2U2ZYQStkcGlXR2FXZCtkb1h6THptR3dLWUZMQ0FzUkFsUEJBaE1sQ0ZYVTd0QlVWUHI4SGdWY0pIV3ErRjAwcGxyK0RNVGRyUDR6dnhZMTFrTk1oeFQrU2VUR2crZDRWNUxRSml0eVVHSk5COFZGWnNqZ1lCWk0vSUkvWENUa2owcXlET3BGMkFWUTE3Q0lqVXAvRG5UMVVrTDVGNWdkaitzUzF3ZzFnRTNnaWdtNjBmQ1h6U25QWGJ5QVBiSVh2K0lEcEUxNlRoYUhJUzlza3lobG1NRTVGM2NmcUFLaHEyQzBFNVBIMWdZYVhhTFBEa1pHMEhESk9uS1dIcDUxSTB6NVNPdXg4ZTFXQXVaemRIUXJUa3A4VG1qWG9JK2xhMHdHWnN6dWJxYk8zaWZRNkEvVzd2VlNZc1YzbVIwSkt3a0tjNFdIaUJrbVI4STNDQ2dJODdvT0w0cXpUNVArUlVKQmVqRU9nQVBLOGhZUHphdE0rZUlUcDJJTzl5VFFtZXJvbVBSeHgxcXhBY3NpbGUvdWJTZUViY1dRR1lFQ2doY0xZMkh5S2pvZ2pIMjVoTXBqcFV2MU91Z2xpNGVoMmVSdzBPMzJiSmpreXVDZ056ZzB2emxZTVNpU3MwdW9vNE1HN2hNT2pDRWFYMXlGRTBuU3ZqQnp1VG5FcEs4Nlo4SW9xRkFJdWJ3OGtnOUFyRWFSRVdTWkkrakg0WGJwNmc5RTlFbkpUM29hUnpETitNVUpCUURIbjU2YThvVW1FQnVzT3hCcy9ONSt0SkViUGtBRkRqOFVHdk9zL0lXdmNTZ2xHQmh2UzcvRlRZZnBXR1lkRFk4ZlBBeFdTQTM1c1RDNHA0K0xtNEFhcUlvUGVRdGZ1Zks2SmgwWmh4bGJzVVhPU21YTmlmRDVaVEFreURvZmJiY2NseG5BOFdOQXF4Q2JSTnlraFh4UXBhRHc2N2ZYVVlic2lHMEtodHYyb2VJdmg4cmhRTVlPY0VBcVhHL2VJK3puZ09jNXl4cjhxODJJQU0xYy9GTEZPcGxxdTVlRlFYck1aekdjVkNqWWJMV0c1STRCVDFldVJybGJ4dE5PdE1pdERERWhMWElJeW5BQXZ1T0VXRTNYM05kQWZ0OTRWZ2FHNDJYSVF0MFpYNlBlQ0UvcVFGZTlySzZIeDdZVTUwS3ZIN2ZXNGZTK3E3S0tCSnhzZ2dCWDVwU0FHaDFqSXJWaDV6UTZ3M1JmYWFoQlhtL2FDYkNaVGpDVUZVVHlXWnFXOXA2Mk1qSlBYVnFPclBnTU80TnY3NEdrZitvd2Z0TlZCRFFuakZKcUhTdzE3cFh2aFdXNUtacWUvUTQ5Ti9VU1RDQVZXb1FYRklIQkhYWGUzRlByVURzdUdEbXRGL2hIS1RIcGVreGhpQU9QSStTSnE2UzZIRjRJOVlXemtCSlRvNDZpVU16V3A4UGlyL1JpZHVMeEtZc1Nrc1Y4dkxsT1F2aEdYMllsUjBPQmhCakMrdS9nRWN2WTBBcEs3WWs0MU54alBTUW5XRkhURjY2VXJqZ2V2QjhDdTVhK2wydllTUlB0dVZEbzczaGhkTVNIblVYN3RUanNWWkd4QWwvV3B0aU9JRVExZ25MMjltWDYvdFIxdG1sa1lqOFc0WCtDU2pXY1VER1kxTnBTL0M3aFNLcWlNTE0vbDJRbVNXWjczRGR6K2dpbzhCQ0VOWVBRNDZxbmt6d1hVYnF2Qmt4alVRc1dmWkZnYnVvM3JBZit3TjdqT085MCt5bng0UGkzTCswbllMMVNjaERVZ0FQNGdQVi83SWQxcSsxSFNobXVHa0lxV1JQZ3l4TUZxUDhIZmpUbmpYd1k1YlFmYkpjdDZPSXpLZ01Ib3RGL0hlMWVnc2F4SFNxRzZ3ZmRtUTV4OE55VEZGcUJjcDJpU293SFIzeWs1KzM2aEY3dlhBQUFBQUVsRlRrU3VRbUNDIn0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMTAtMTIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDczLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IlNlY3VyaXR5IEtleSBORkMgYnkgWXViaWNvIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVMkYxMDAwMjAyNDEwMTIwMDQiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0wNi0wNCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzMsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiU2VjdXJpdHkgS2V5IE5GQyBieSBZdWJpY28iLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlUyRjEwMDAyMDI0MDYwNDAwMiIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTA2LTA0IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3M31dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNC0xMS0xMiJ9LHsiYWFndWlkIjoiZGVmOGFiMWEtOWY5MS00NGYxLWExMDMtMDg4ZDhkYzdkNjgxIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiJkZWY4YWIxYS05ZjkxLTQ0ZjEtYTEwMy0wODhkOGRjN2Q2ODEiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiSURFTUlBIFNPTFZPIEZseSA4MCBSMyBGSURPIENhcmQgZSJ9LCJkZXNjcmlwdGlvbiI6IklERU1JQSBTT0xWTyBGbHkgODAgUjMgRklETyBDYXJkIGUiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MTEwNzQ0ODgzMSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9LHsibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQ3hEQ0NBaVdnQXdJQkFnSUdBT3JBQUFBQk1Bb0dDQ3FHU000OUJBTUVNSUdFTVFzd0NRWURWUVFHRXdKR1VqRU1NQW9HQTFVRUNBd0RTVVJHTVJNd0VRWURWUVFIREFwRGIzVnlZbVYyYjJsbE1TTXdJUVlEVlFRS0RCcEpSRVZOU1VFZ1UyVmpkWEpsSUZSeVlXNXpZV04wYVc5dWN6RXRNQ3NHQTFVRUF3d2tTVVJGVFVsQklGTmxZM1Z5WlNCVWNtRnVjMkZqZEdsdmJuTWdMU0JTYjI5MElFTkJNQ0FYRFRJMU1EZ3lPREl5TURBd01Gb1lEekl3TmpVd09ESTVNakUxT1RVNVdqQ0JoREVMTUFrR0ExVUVCaE1DUmxJeEREQUtCZ05WQkFnTUEwbEVSakVUTUJFR0ExVUVCd3dLUTI5MWNtSmxkbTlwWlRFak1DRUdBMVVFQ2d3YVNVUkZUVWxCSUZObFkzVnlaU0JVY21GdWMyRmpkR2x2Ym5NeExUQXJCZ05WQkFNTUpFbEVSVTFKUVNCVFpXTjFjbVVnVkhKaGJuTmhZM1JwYjI1eklDMGdVbTl2ZENCRFFUQ0JtekFRQmdjcWhrak9QUUlCQmdVcmdRUUFJd09CaGdBRUFDZThqZFNuVlRLdHprZ3NDS0pGdWlwV0w5dVVpenNScjYvaVRDZStES3JuMDJTbnBzUEhaeW80V1o1OHBVdTY2VDZrdmZCOGFHQTVpN2VxVUpTZ2hRdEdBRWJmbGRTekdJYnRXdlhQaEFqRVJleWZTbjNieG9FQlJmcHQxeGgybDFHSld0Z0VxNllJOVNxa0NJWFdCcDFSM3g2aWFiRTlIVzNPWUZRSURybUpVdUUwb3p3d09qQWRCZ05WSFE0RUZnUVV6K29kRVJ3VkVLTTRWZitzUFVQQ3B6VmV5UzR3Q3dZRFZSMFBCQVFEQWdEL01Bd0dBMVVkRXdRRk1BTUJBZjh3Q2dZSUtvWkl6ajBFQXdRRGdZd0FNSUdJQWtJQk8vbGVqanRwZmFyMHFsMDNTaEdmTVBPUERUeEhFWmRVclBTaXdkSThrb0lrcXRYZ0IvcWJvOFJ2K09DQiswdmVCc3NpNkpQOXJISWhlc2ZYZVJDNURjSUNRZ0d5Y2pvcnVLdzFDOHM0WDNqbGRXS0JSK0RVYzhUVzBpeEVnSjFXU3JtNkozdWxTd3c2Y0Y1MXplZkIwT0FodkYvaEE0Sjg3bnozeHVjRkwxS2JxakljblE9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFESUFBQUF5Q0FJQUFBQ1JYUi9tQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUZpVUFBQllsQVVsU0pQQUFBQW9yU1VSQlZGaEh6VmhwY0ZQWEdkWHlubVF0WGlYTCswSWFzTUhHT3dZYkVsSktnRWtDQWFZTTAweWJNbWxMS0FOaG44bkNaZ2dwNUEvVWhJNHpoTkRTYVdjS0pHeUZNS0dCTkhIeGdvMXRHYk1iYi9LK3lKWWxXY3VUMUhOMWhWQmtXOUlQWW5MRzR6bnYzaXZkODc3dGZsZDhoOFBCRzRYR2UxMTFsWnJlem1IT1p1ZnpYWU5QRXc0ZXd3cGpFa0t5WnlYRkp5bGNneDd3bG5YODhIZkhEMTAzNmkwU0tTc1FDbjRVVFU1Z1d4dG5IekZhSTFUUzlUdCt2bVJscm12Q2lTZXlCclhESythVUdIVFc0RkF4Qk5IQkNZRE5aaC9zTnlaUGlUajUzelU4bnBBT3VtUjF0dmN2U2k5V3hRVER0blJpZ21FMmNVYWp1YlI1R3lNVTQ1SEtzczlPM2krVGlZWE14QmxwTkN4bVRoYk1ucit4RVp6bytHRHRhU0h3VERVQklqSFQyMlU0ZnZnYU9OOWdNTXhPL0RncU5vVC80NFYzd0xEYkhickJrYksyRHdRWFQ2bGw4cUNmZ2laQUlPRGI3YnpLNys4THA4UXM3R3pUUFhNUFBvSERFYTZTQ2pvMXVzRExBWXlNZk1ZZnpWLzg5M3gwTHdEb28rT0g2d01CeEhScGhnUldDeGVnQTdFbGtnVVZWaXhtZUh5U3dwelZMZ0FRQWM1SExCQUt5YVBEd1NkUzdBNUVNWjZ4eERUQ0JhZ01YMld4WUJkZVFLTHdwVDJkdXJQbDZ5L1hiNzVRdldGNGNNUnFzVDJYb3J5czNvUVJoVXFHa20wWU5tL1pzeENQWDkvYXJPMHpjSnc5UGpuOHNub3oxaXg5SThlZ043dSt5eC80ZUJFWDlRZlRpUFcxbFJtaEVSTHdOVXRQaUlNWW1HcDZYanlkZlhTdkYzWmlSY0p2djdwRFI4SVVVcUdRWDFuYVZQYk5Renh1TEpwdjQ0ZzU2YXhmQ0FKWkNGUDE5eGlMaXBlQk56L3NxeWg5SkE1aXJWWXVMVE1PSTIyUCtxMVdHMS9BWjFoQlExMkg4eE84eWRPaVlLMEloYXhvNDNrNjhzZDNYOUxyVEpUN2d6MGdhK0hrL3UyNkFvR1F1SHY3MjJjVWtUS1FFWU0xdHpBWlJGMmxFWWtZRUJpc28yVUlCRWpQam9OV0pQamdnUEdyTCtveDhwdTFoZmk4T3h0OHdjRkRiUGtCaVhRTHQzWGZJdkRxMHBZNzlSMnNpTUdnUERnb1ZFRjhXbjI5RmU0RFFiUWl6aC9lN2diUG1aV000QU1KQ1pmczMzWUpCTmg1YU1uZ3dBamx2dUhmaWJEODZzMHZVYjVueTdrSUpURVZ4OWxTTTZMcDRPMmI3ZXpqQXg1bVU5L1FnR1RPVElBNVFXQkNLMmY3UjBrWitJSmw2UXFsSE00bFMzM0NqeFB0Tmp1Kzk2M05jOEN2bkd2b2F0UFJGb096MkxObUpqaVg4TzdXZHdsWjEvZkFiRFVWclNBU0dhdFV5ZkJ4OE9EUW9FLzJYWFhPODNZWHY0NGtwZHdIL01nYUdqUnQreE54SDdCbnc0VXdaeVlDY0N0Tnc1WUhBNHpvU1pXQjJXckxpU3hnYW1Zc05ReEtGN0xoNEk0cjRQbHpKMDFKaTZMKzlRRmZzbEFTWlRMUjRwVlo0Q2MvcjBUMXB1Y0IvTTVaYkhBVGVFMUZVNUNFSmF1ZFFJeTNOZzFRbnBtZjRONWVKaGVmT0ZKS2VkSGhwZjA5dzVTUEIxK3l0SDNHUFVkSVVRQU83YjRDWDFCT3luY1FFeG9tQmIrajdvSWw2RGdGcHU0M2RJRk16NHVEVWVrZ3NpRlVJZDIxL2l6NDVMU28zTUpKT0REbzFKZ1lWeGJTTzNteVl2Yjg1OEUvK2ZBYjJBbStvRk0yenBhU0ZrTjVUWG1MTzk0cFVHbnJiclNCWk9Rbm9PUzZ6eHdZOWNJL2F3ZTZTV0R0UDdvY2hjUEhjVFN1cklGZWZkR2ZsMUorNHNoMWVURHBaU21zMWlmeGprS0ZuS0NjQWlyVmxVU1dSQ0xDbjN0ckdDeE1LZDIxZ1JoTUdSMHk3N1ZwYUpUcDFHaU1MUXNXeGxWcFdrNHMrSjUzemlPdDhLVjBDc0JzVm40aVNQT0RQcFBKaXZwT3h5bmcwOXMxblpSbjVzRmdUNkliSi9mMXF3OWJHdnZCOS8xbEdXNFc0eGxzREZsWWlWcDE0TE5mZ3ZmMTZFK2ZxSkpJUlhRS2NQQWNOcXM5NzRVazhPclNaczk0cDREeE5DMWFXaHF5Q3hJUkRIUWN3THVGSzJUYlZwMEVSd2orWWVzTHVKRFJLUytNYVMwSFBxK01DZ2JyYU5IU3pvVk9FRGg0ZkFGNWIxQ0QzZ0krR3VnbTBNbUF5RVBGWHZiQUNZWjJpdkw0NUFna08rVmVHT05iSVNKSXl1NVlld1k4WTBaQy9weEpabytzb1JMVmxhU1U1eFltbVl6ZThZRnpLVG8rUkNvbkJxNHFiZlpLQ0dUMy9xUEVEOEJIV3kraWNGRHVoYkZqQzY3NTk3OXFCM3BKMW53MEttdkVFcmJxZjgwZ2FibHg2RjY4N0lIc1F3bWd2TGFpemZQaUNZZE9TbEVXT3JPN3VPZy9ySmcwalhUS0MyUExJa0dnbE8xY1J3d0dieTVZa2thZFFvR2RibFczVTY2S0NiSFpmaUFMZStjVWtNaURYTzJBM25OanZPZnVnNitEb0pQOWUwa1picVowZkRUR2xnVWdlc3F1TmlMWHdGR1gwWTY2cmNLeUF2Vk40a1FnTXovT005Y0FxNWxMenlYblVrTk51NUFSdXVNUytadGI0TXJ1dlpzdVNtVWlyeFQyeExpeXFNSGUrLzFwY0xHRWVXUE5US1BCNHA1Q3FxSU5CRS9OOEphRjVNcWVTY3BIWFVXYnlObndBSGlsL2g0OTRnSGNvRE9mL3VzTkZCMDZOU2JHbFFXZ0hiaC9wN3Vtb2dWOHk5NUZ3MW9UTlJoa01Zd0FjUU9PcVBlc2lxZ0xTaFZKWVFBZER1M0RBS3laOThyVXlLZ1E4QjNyemlpajVMN3ZFTDVrQVJHUnNxTDE1eWpmc0hPK2JzalY5Y0xGTkx4U00ySThreEdCbFQzTGRRRGNxbW1uOFk2WHdWMzV3eEp5dkdxYXROY3UzcVgxeFFmOHlHSVlZVWZiME5kZk5vQ3YyamhIeEFwcHBXSFFWejF1WUhCMG9sQlJqbk1KTllYeWp0WkJlaTZOR0N3cjNwb2hkZGFDOTkvK0lrSWxjd2ZjZVBBakM4QWQ1c0IyVjlmN3pzNlhkWVBFWUhEaTNWclhiU0k5S3c3OUorVVdFNWZ0UEM1cnl6V2lJSmVwVUhYZjNmOEtPSktnb2E1ZHhQb3hGZUJmRnQ3WU9HdzVkYXdLZlBtYk9hR2hFdGdHZ3ozZHcxWXpVWk16TzVFU0tBQlNzMGl1MWQxb0ZZbEpVT3QxNXRWYjU0SUFTQ0RjaFFLNW1QcVhCWVNFU1Q1KzMyV3dYWWNYYXdkSW1jVkpjTE9NK0hGNlhnTHRxK3cyaHpKYVRzdTZ1cW9WZFFRVkgwbXdlaHVSOWUybHUxMGRycDdiTHdLU2haSUlFU1VIeUM5UGhmTW14OGFGb3lnZ2JOWFZKQmxUcGtkakFlemt2SGU0K3JCN3Q3b1JsMFBha1UyN0Y5S1JBKzlkQ29zZ25XTWdDRWdXZ01QcjJNSHZLZi8wN0p0d0RYWnRxSEVWMWRqRU1KZ0thZmppTDFMb1NFK0hEclVrTGpGc3hlL3k4UGpsMzZxMS9jYkFmeGZpLzNwaFNiZEc3OVhLalFrMDVncVZQRG8yQk5XMXZyb2REZ0xTU0NUeG14LzJHZzFXSkduU3p4Um9HRkZSRysvMlFJUXFKaGhuRi9LdXZrcUR4L0ZPUUU5WXpMWVpMOGJ6VjcxNnRMMXBLTUQzZ0p0Z0ZSRFVTV3dHV2ZRU2dZaWhXOEs1a0lzcFdrZ2hsTllPOXdLL3dCbFZNQzlKb0l5U2VaMjFQZ0RISWFUd1J3c1AvdE5IOTViWUhvL3U0ZzRuZUMzd0M3eTJJa29tbUpvVjVkbEFQblBnbUVyTGpSWE1YNXhxR0RiREhhN2had3Fhem5NWFRoRWtKc2RtellwR29MbG1uaW1NZXV1cnYwb1ZzeklTdGhwTng5Szh6NVNSY2g4TjBBU0EzQUJNbHNzTjY2UkJ3U2pFOXZqNDJMMmZMdWhxSDBZU3VaWk1PSkN6ZlQyRzRsUExvQWt5VUJmNHlPcEZTL0wzSFZ1ZzB4b1JjUk1jWjlodXhHQTFteXdsRjVablpLVkFEQjlYTDV4WktEVzRGMkMrc2JHbHVPaWF1cndQRjNiY1F1SFR4MDU5dXM0bHI0MTNoMVZROW15Y3JXQkIzUHJ0ODFXUmtRS0d6d2pKVDlQT1g2cDVEanRuUjlSamtkbGlibnlncWZ5dXFmbUJWajlraHIrZHBudXE5bk1XUFpUQWtIRHg4MU9WTStjK2w1QVl3NHBZZE5pc21NRlZpc2ZqL3gveHFPY1BSZFN2YXdBQUFBQkpSVTVFcmtKZ2dnPT0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiJkZWY4YWIxYTlmOTE0NGYxYTEwMzA4OGQ4ZGM3ZDY4MSIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOnRydWUsInVwIjp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwiZXAiOnRydWUsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImFsd2F5c1V2Ijp0cnVlfSwibWF4TXNnU2l6ZSI6MTU1MCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0IjoxNiwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoyMDgsInRyYW5zcG9ydHMiOlsibmZjIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN31dLCJtaW5QSU5MZW5ndGgiOjQsImZpcm13YXJlVmVyc2lvbiI6MTEwNzQ0ODgzMSwiY2VydGlmaWNhdGlvbnMiOnsiRklETyI6MX0sInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjo1OX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTA4LTI3IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjExMDc0NDg4MzEsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiSURFTUlBIFNPTFZPIEZseSA4MCBSMyBGSURPIENhcmQgZSIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjUwODI3MDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDgtMjciLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MTEwNzQ0ODgzMX1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wOS0xMSJ9LHsiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbImY1MjRjY2EzNWU1ZWViNDNmNWNiZWQ0YTA3MTgyNDE5ZTVkZmEzNDAiXSwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiZjUyNGNjYTM1ZTVlZWI0M2Y1Y2JlZDRhMDcxODI0MTllNWRmYTM0MCJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiU0kwWCBGSURPIENMIFdSSVNUIHYxLjAifSwiZGVzY3JpcHRpb24iOiJTSTBYIEZJRE8gQ0wgV1JJU1QgdjEuMCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbInNvZnR3YXJlIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUJ0akNDQVZ1Z0F3SUJBZ0lCQVRBS0JnZ3Foa2pPUFFRREFqQktNUXN3Q1FZRFZRUUdFd0pFUlRFaE1COEdBMVVFQ2d3WVJ5dEVJRTF2WW1sc1pTQlRaV04xY21sMGVTQkhiV0pJTVJnd0ZnWURWUVFEREE5R1NVUlBJRkp2YjNRZ1EwRWdNREV3SGhjTk1qQXhNVEV5TURBd01EQXdXaGNOTkRBeE1URXlNREF3TURBd1dqQktNUXN3Q1FZRFZRUUdFd0pFUlRFaE1COEdBMVVFQ2d3WVJ5dEVJRTF2WW1sc1pTQlRaV04xY21sMGVTQkhiV0pJTVJnd0ZnWURWUVFEREE5R1NVUlBJRkp2YjNRZ1EwRWdNREV3V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVF3NmN5K3puTXlRNnB0ZDRKanF2bWE0ZThSZStacHBiOTBHcUt2c1JCbkY4V21NNXlaV0lPS2pRZ2ovOCszajlhdlcrU3lBYS8xTWF5d1FENkIwZzlhb3pJd01EQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01CMEdBMVVkRGdRV0JCU3NlcFd1dXhtRDBvOGoxWTI3OGJMVEdDWk52akFLQmdncWhrak9QUVFEQWdOSkFEQkdBaUVBdTMzU3AwRTdCRWRIb3pFR0FDbE5zYTB5UEI2c0VEb1E3VzRraXkwRFoxNENJUUNKTERUSkRBbld4bzMxenp2cld1SU50QnF5MDQ0K0dnRlA2K3dscUc2Nk53PT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBRkFBQUFCUUNBSUFBQUFCYzJYNkFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFBQjNSSlRVVUg0d0lVREMwRm9PVUhJQUFBQ2NkSlJFRlVlTnJ0bTJ0UVZOY2R3UC8vYys4K1dKYUNQQlkxQ2dzQ29wRE1hRDc0QU1Va2ltT25XbTN5SVoxcHE5aXBvN1pXbmFaTk0wMXNtN2JVcUtoa0xOWkhmTXkwSDRxdFZ1MVVNeU0wMGM0b2RzeE13VkNOR2xPRndRQnJXSjU3WCtmZkQrZnVnd1ZXTnNHbU5QY01IOWJMdVdmUDcvLytuNE5JUlBCRkdneStZTU1DdG9BdFlBdllBcmFBTFdBTDJBSzJnQzFnQzlnQ3RvQXRZQXVZQU1icUJJaUlIdE54a2xpV1FoOWlmZ3ZHK0xYNEZTSUNRQ0FRNk96b2FHdDcwTkhlM3RmZmp3Q0FHQ0VXSFB3QkRNUElMOGlmTldzV2hxY0JBQ2lxZXZyVUtZWU1CajhQdmh0ZVlmRG5JWE1CaUhqU2w1SW1aazd5WkhvOEhvOXNrOFdlRVRFR3NCeGJlSWg0NjlhdC9UVTE5UmZxZW5wNllNUXRSQTlWMDFaWFZNeWVQVHRLZ3FxaXZQU0RsK3l5L05rVml3Q0VLTlNTbHBiMmxSWEx2N051M2FSSmsrSTI2WkRHMzd0MmJmVTN2dm5jb21kTy9LRzJ0NmRIWW93aEN2a1JJdUNJQTBZUXNuak1JcWFKcHpHV0duRjlSQXIra3lFKzlQa083UDl0NmJ6NTM5dTQ4Y1BiZDJCa1QyVFJua0NFQUp6emZmdjJyVnp4MWI5ZnV1UjBPQngyT3lLYVRraUVpQ3kycW9saW1CWmgwRmtBeEhZUkFPSnhieFM3RlQ5Qk9ib1NFb0RvN1hQbm5uM20yWk1uVCtJSXppeEhpVitNaXRWci9sWmY3M0E0SWw4YkdCalFORTJTWlZtUzRGSEJURkZWWGRlRzkwSUt5MWRWVmZnVWNaRklLRURYZGNNd25FNm53K0VBSXNZWUFNZ1MyN3A1eTlXR3E5dmYyUDRJSHlZaVZWVXJ2clg2MHNXTFRxZVRpQUJSMWJSRWx5dG4yclNTK2ZQbnpKMlRsWk9UNUhhYkhqU3ltb2tvd1pVUU96cjBCd2JldVhneEtTa0pSeHNaUWhJalFBUWl2OTkvNTlidHk1Y3ZYN2x5NWFPN2R6Vk5zMGtTWTh5T2VQem9VUVNvM1A3cmFFT2o0T0NjRTlHMjE3YmxabVhuZVhPbVpYdnp2RGxUSmszKzdvYU5MUzB0dXE3VFdJenU3dTZzS1ZQRjRoTXpQRjFkWFdPeXJLWnBkMjdkL3RyS1ZWbVRuOGp6NW9pZm5LbFp4NDhlSXlJZU1STWlYenQ3K293bkxWM1FUc3Yyemlnb1BIUDZkSlJFeGhqNGswL0dCRGkwdDBNSERtWlBtUnBDbURyNWlldE4xeU5uaHZOd1lHQmdVZG1paDUyZDRva3N5NmZQbmlrb0xCU0dqV05VSlBUMDlCVFBMTEpKRWlMMjl2WGQrT0JtY2tyS1o2dzZ4TzQ0a1VnaEY5OTlkKzNxTmNKcmlLaWdzUERNWDg3S3dVUVlqdEovcWozUjF0b3FhQlZWUFhUa1NFRmhvWGdOeDdvMkVrdU95Y0toUlZqdzA4S3lzcDlzMjlZL01DQmswZHpjZk8zYXRaQjBUR0JGVVNvcksyMDJtM2o2L0FzdmxDNG9IYjhGYzhYYWlybno1akZFa1dWLzl0cTI2RHhjVjFmWDNkTnQycmFpZm4velpzNzVPS1VWTHJwMTY5YWUvbjVFbENXcHFhbXB1Ymw1RVBBN2RmVU91d01RRlUxYnZuSkZUbTZPeUdtUFk0UU0rVEgxRW1MNUJXVUw4L1B6UkRDenkzTGRoUXNBZ0lBbVZVTkRnM0FCU1pJMnJOL3cvOUVKYnQ2eVJkZDFSSlJrdWVIS0ZTRmpCZ0ErbjYrbHBVWElKaTB0TFM4LzcvR0ovNzlrMVVRQU1HL3VQSmZMSlo3ODY4WU5ZVjB5QUh4dzgyWWdFRWhJU0VBQVQ2Ykg0WERFRlVJTmJ2aTcvSStjTDhyTXZyNStJSE1tTXV6eWQvUFJTSllBRU54dXR3aXJvd3pkNlo2TWxOUUp2dllPQW5qWTZXdC84TEZuWXFZTUFIYy92Q3RDbEtIcnVUbTVraVRGSmM3V2x0YXlzaktudzRuUmpvUm1HUmlNRmdibmpER2JiSzd2Y2lZc0t5OG5BbVFZZW9zSCs0cVFyNHRxSWFBb3gzLy91d1dsY2VRT1NaTFMwek02UCs3Z3hEVk51M2YvdmdsOC8vNTl4aGdCcUpybTlYcmp0aC9PdFlBaUl4TTVJSWFkQmZ0Qk01SWlvcWFxbzlFdUkxQlZsWXo0RWdkakxITmk1dnVOalpJc2M0UDdPanZONXFHdnJ5OGtTN3ZkSG4vVVphSy9ReUllanNEUk1Sa1lpcUtOVVVqcndCSFJsQUFOanJLRE9saENRQUtNZTJQb2Nya0l3Q0FDSUhHQUlZZS9oQWdBalBqVEwrZGM1MXczREJZT2RRakJVd0RpRkxrRHpnMlVaUUt6ZStlYWhveHh6czBtRjJCb09qU0lBRURqQm8rL2oxUVV4V3k1RVlWTVpRQnd1OTJpajdiSk5wK3ZJOTVGRTkySjVVdVgydTEySUdJamh5NENJTTZCcUw2K1hsQ3BtdnJjNGlVTU1YYk9GOEpRTkRVdFBTM2VXTjNiMjhjUXhWRmtTbktLQ1R4bDZoVGhma3hpcmExdGp6d0hpeG9aR1JuSGpoOGJiZlBRMi9Oa1ViRWRtS2pZZCsydVNrNUp3VkdiYUZ6QWhtRzB0N2NEWXdqQUdFdExUemVCOC9NTEVCR0ptQ1RkdjNmUE1BeFpsdVBDam1ObTVHa2xBVU5rWTkrYm1PbzFkTjNmMVlXSVFPU3dPN3c1WHJPMG5ER2pNTkhsRWlkYTdlM3R2YjI5WTlYS2ZJNVZCeUsydExZK2ZQaFF4Q1pQcGljMU5SVUlHQUc0azVLeXZWNUIyT1gzdnhkc3BzYnBDS25xN2ZQbkZVVVIvRVhGeGVHWUR3QWxDMHM1NTRnb0ErellzWE84VjlIaTBHZC9UWTNEWmtNQVZkUG1sY3dYSHNYRTVjT1NKVXZGQVNLVHBQZWJtaTVkdkRUZW1VK2YrclBmMzgwWTQwVGNNSjVidkRoWURRQWdZa25KL0d5djF6QU1BTERiN2J1cnFzYTdWZGZVMU5obG1ZaTRZWlNYbDN1enM0VnRoeFBnTHlzckRTSVJOcTgyTlB6aTlkZWp3c0I0Q1ZlY2FQMzY5YmR1M21TTUVaSGtjTHp5NnF2aGU0L1E3TklGcFVWRlJRYm5SSlRvY3IxMTZLM3F2WHMvWFFMOEhHa0I0T2ZiZm5yK3IrZWNUaWZuWE5QMVJXVmx1ZE55aDdscWtXVjVWMVdWYUdnNDV6WloydjZyeWxkKytLT3VycTd4WXNhZEhSM3Ixbjc3OElFRHRtRERsNXljWExWN2QyUWxOK2h1YVdiUnpEMXZWcXVhS3BqZGJuZHRiVzNKbkxtSER4NE1LTXBZYlVzY2hwdGZPa2EyNC9mN3EzYnNYREMvcEs2dUxpRXhVZlNZbXE0ZlBub2tPU1U1MGlYRDU5SVV2TERadFdQbjNqMTdFbDB1a2FpSUtCQUlKS2RNZU9xcEo0dUxpek15TTFNbnBNbzJhZGpPNWhIZElaQ2lLRDkrK1dXSk1VUU1LTXJPWGJzY1RtZjhYa05Fb0d1YXorZDc4T0JCWTFQajlhYnJmYjI5cm9RRTh4QVBVVlhWSFR0M3Z2ajFGem5ua1JxT3ZoQVgyRFg3ZnZQRzl1MTJteTNZNG5DUnNYUmQ1NGJCaVlCekNOMTNVcWhTcEtIWlAzUTl6d0NJY3laSmRydmRESmlNQlFJQjBTZnpJY0lMWFRqUlNFMFNvc1NZeEZpSUo2UXpEbEQ5WnZYeUZTc2ludzhQSEJyL3VIcDEwNlpOLzc3N2tUc3hVZlJvWnRFYlhEV3NFaHhtUjBnWUZVdHcwRjhNREZIWktCU01GTmw3aVYyWUNLTFpKTTU3K25wblAvMzAzdXJxNmRPbkQzdDNPVHl3V0VMWDllbzkxWDg4VWR2VzFvWUFraVNaZjVNUVZpd043dkVqOEliQTRlZ09iMk9rd0VGbVR3QVl2dE0yZEYyUzVhbFpXUlZyMTY2dVdCTlRhaU1EUS9BQ3RmR2ZqU2RxYSt2cUx2aDhQbDNWek12eENDTVpadDl4cGhRY2Vtd2RvekdJbUd5ejJTWlBucnhzMlpkWFBiOHF2NkRBWnJPRmRqNXNYTURZUlVXVVZYUjJkdnE3L0lGQUFJQ0czOWxvRmZxb2k0TVlSK3pobldHQzA1bWFscG9TdW80YlREa3NNMXIvTTgwQ3RvQXRZQXZZQXJhQUxXQUwyQUsyZ0MxZ0M5Z0N0b0F0WUF2WUFyYUFMZUQvcWZFZmJtTWNWQ3A4Ykc4QUFBQUFTVVZPUks1Q1lJST0ifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiTk9UX0ZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjEtMTItMTMifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIxLTEyLTEzIn0seyJhYWd1aWQiOiI5NzBjOGQ5Yy0xOWQyLTQ2YWYtYWEzMi0zZjQ0OGRiNDllMzUiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6Ijk3MGM4ZDljLTE5ZDItNDZhZi1hYTMyLTNmNDQ4ZGI0OWUzNSIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJXaW5NYWdpYyBGSURPIEVhenkgLSBUUE0ifSwiZGVzY3JpcHRpb24iOiJXaW5NYWdpYyBGSURPIEVhenkgLSBUUE0iLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInJzYXNzYV9wa2NzdjE1X3NoYTI1Nl9yYXciLCJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyIsInJzYXNzYV9wa2NzdjE1X3NoYTFfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsic29mdHdhcmUiXSwiY3J5cHRvU3RyZW5ndGgiOjExMiwiYXR0YWNobWVudEhpbnQiOlsiaW50ZXJuYWwiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUVyVENDQTVXZ0F3SUJBZ0lRUlRmY2dvNnh3SUZHZm10emsxQlNuVEFOQmdrcWhraUc5dzBCQVFzRkFEQkVNUlV3RXdZS0NaSW1pWlB5TEdRQkdSWUZiRzlqWVd3eEdEQVdCZ29Ka2lhSmsvSXNaQUVaRmdoM2FXNXRZV2RwWXpFUk1BOEdBMVVFQXhNSVYybHViV0ZuYVdNd0hoY05NRGd4TVRJME1UZ3pORFE1V2hjTk1qZ3dOekV6TVRjek1qTTNXakJFTVJVd0V3WUtDWkltaVpQeUxHUUJHUllGYkc5allXd3hHREFXQmdvSmtpYUprL0lzWkFFWkZnaDNhVzV0WVdkcFl6RVJNQThHQTFVRUF4TUlWMmx1YldGbmFXTXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFEUUNrbVEvSzhEbjM5cVNDVzV0S0x2dkRMSDNDbFNjZ1FyRGc3K3VZNDRqSGxJWTEvTGw2djJycGo3bmxtVk1sSXpvZ2QzeVhqQ0ZCdkdyNHppR1EyUWM4VXBrYVU5NkVaeEV0SHdaU3R3NllRMGpkbmdrU0xQdk9wOFQ4WWlKcGN2c1Z0UXRpUTBPc1RUdWlPMkVpNEx1TGg3S1IrOHg0YkFSdnprQldzdE5CVHFWU0FaUVllc3FubDhINVNmd2IzSW91OExTaUFzdU9YeXh0Mm1zOTExWXJ4V3ZoL0tuT2VsM09kM2grSzVkUVlQNTMrZlBVemd6NTZUVGo4UjRZNnpSdXpka2JuUjZ4V1hkcks0MTRpWDlENng1cThXMlhKSnBUTUs3RW5TWEcwcTdYRjdwNjhqREtBbnhBRjhrZmgzdWluYzJ1bG1WT1piVFJ6eEY4QjNBZ01CQUFHamdnR1pNSUlCbFRBVEJna3JCZ0VFQVlJM0ZBSUVCaDRFQUVNQVFUQUxCZ05WSFE4RUJBTUNBWVl3RHdZRFZSMFRBUUgvQkFVd0F3RUIvekFkQmdOVkhRNEVGZ1FVak1zVGJZMHdYUUJSMjliV0hJdmJGZlVBRmZVd2dnRUdCZ05WSFI4RWdmNHdnZnN3Z2ZpZ2dmV2dnZktHZ2JWc1pHRndPaTh2TDBOT1BWZHBibTFoWjJsaktESXBMRU5PUFhCb2IyVnVhWGdzUTA0OVEwUlFMRU5PUFZCMVlteHBZeVV5TUV0bGVTVXlNRk5sY25acFkyVnpMRU5PUFZObGNuWnBZMlZ6TEVOT1BVTnZibVpwWjNWeVlYUnBiMjRzUkVNOWQybHViV0ZuYVdNc1JFTTliRzlqWVd3L1kyVnlkR2xtYVdOaGRHVlNaWFp2WTJGMGFXOXVUR2x6ZEQ5aVlYTmxQMjlpYW1WamRFTnNZWE56UFdOU1RFUnBjM1J5YVdKMWRHbHZibEJ2YVc1MGhqaG9kSFJ3T2k4dmNHaHZaVzVwZUM1M2FXNXRZV2RwWXk1c2IyTmhiQzlEWlhKMFJXNXliMnhzTDFkcGJtMWhaMmxqS0RJcExtTnliREFTQmdrckJnRUVBWUkzRlFFRUJRSURBZ0FETUNNR0NTc0dBUVFCZ2pjVkFnUVdCQlRmUVE1V3JXTVJXNzh2a1doMm5pRFQzVjk3ckRBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQWlMcEx0bmFFMEFiSWlTbW1qNEVMUlRSTUd1ZWR4ZDZaVFkyeVVpMVFOc3dhSTJPRm5oL05EV0xXT2dGMzZIT3ZERUxYQllaTTYrQXNQaVZIVTcyc3ZsWWo3WTVIelp2b1VrTTNkdmJ4cjZVMkJKODlKRUVUUklXcVVsWU9xNDdCZTg0T1IyWHZtbmlVdUpyRk96c0FZY3RyWlgyVEZYM0FiVlBzNExTVE5jMGRhMHVxMENxb09TT0lDZnp6MVg3dWY3VHc5TzBLY0tlckZnemVVY21HdEt2NW9LN1JZOVdrRHhkaTIyUnkwR0ViNjB0bmF2N3FrOWphNDVXQmpOMTB4dU5wTnNsQ2FsUm5OWU9HVnRZMW00b3kyZysxeGQxYjB2eGcweEpzVzRrMm92VGRaUVM1SENrbWUwNU01THkwU0ZTVkcvUkh4TXM2SXg0M0NjdENJUT09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUxRQUFBQzBDQU1BQUFBS0UvWUFBQUFCMUZCTVZFVUFBQUQvLy84UkJmY1NDZk1TQ3ZJVEMvRVRDL0FURE84VERlNFZFdWtXRStnWEZPZ1hGZVlBQU04QUFNNFlGK1VhSE9BQUI4OEFCTTRCQjg4QkNNOENDYzhFQ2M4SUQ5QWFIdDBiSDl3YklOd2JJTnNiSWRvY0lkd2NJdG9jSTlrcU1OY0JDOUFEQzlBRURkQUZFZEVORjlNTkY5SVBHTk1QR05JUEdkSVJHdE1SRzlNVEhkTVVIdE1WSDlRVkh0TVdIOU1XSU5NWElOUVlJZFFaSXRRYUk5UWFKTlFiSmRVYkpOUWNKTmNjSmRVZEpkY2RKdFVlSnRjZEp0UWVKOVVlS05VZUo5UWVLTk1lS2RNZktOVWZLZFFmS2RNZkt0SWdLZFlnS3RZZ0tkVWhLdFloSzlVaUs5WWlMTllqTGRjakxOWWtMTllrTGRZbk1OY25MOVlwTXRjcU05Z3NOTmd1TnRneE9ka3hPdGxGVE54TlZONVJWOTVUV2Q5Vlc5OWRZK0ZrYXVKaWFONTRmZWFGaXVPRWllS0ZpdUtHaXVPR2krT3NzT2duUHI4clNMVXRUcTg3Y0kwOWRZbEVobmRKazJwS2xXbE1tMkpObldCTm5XRlZzVTVWc2t0V3MweFdza3hYdFVwV3RFcFdzMHBXdEV0V3MwdFl0MGhXdFVoWHRVaFh0a2xYdFVsWXVVWll1RVZZdUVaYXZVSlp1MFJhdmo5YXZVRmJ3RDVidno5ZXlEaGV4emxkeGpsZHhUbGZ5VFZleURaZXh6ZGV4emhleGpoZnlqTmoxU3BqMHl0aTBpeGkwaTFsMXloazFpa1ZxaUVpQUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUYrbWxVV0hSWVRVdzZZMjl0TG1Ga2IySmxMbmh0Y0FBQUFBQUFQRDk0Y0dGamEyVjBJR0psWjJsdVBTTHZ1NzhpSUdsa1BTSlhOVTB3VFhCRFpXaHBTSHB5WlZONlRsUmplbXRqT1dRaVB6NGdQSGc2ZUcxd2JXVjBZU0I0Yld4dWN6cDRQU0poWkc5aVpUcHVjenB0WlhSaEx5SWdlRHA0YlhCMGF6MGlRV1J2WW1VZ1dFMVFJRU52Y21VZ05TNDJMV014TkRVZ056a3VNVFl6TkRrNUxDQXlNREU0THpBNEx6RXpMVEUyT2pRd09qSXlJQ0FnSUNBZ0lDQWlQaUE4Y21SbU9sSkVSaUI0Yld4dWN6cHlaR1k5SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpFNU9Ua3ZNREl2TWpJdGNtUm1MWE41Ym5SaGVDMXVjeU1pUGlBOGNtUm1Pa1JsYzJOeWFYQjBhVzl1SUhKa1pqcGhZbTkxZEQwaUlpQjRiV3h1Y3pwNGJYQTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzhpSUhodGJHNXpPbVJqUFNKb2RIUndPaTh2Y0hWeWJDNXZjbWN2WkdNdlpXeGxiV1Z1ZEhNdk1TNHhMeUlnZUcxc2JuTTZjR2h2ZEc5emFHOXdQU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNCb2IzUnZjMmh2Y0M4eExqQXZJaUI0Yld4dWN6cDRiWEJOVFQwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOTRZWEF2TVM0d0wyMXRMeUlnZUcxc2JuTTZjM1JGZG5ROUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXpWSGx3WlM5U1pYTnZkWEpqWlVWMlpXNTBJeUlnZUcxd09rTnlaV0YwYjNKVWIyOXNQU0pCWkc5aVpTQlFhRzkwYjNOb2IzQWdRME1nTWpBeE9TQW9WMmx1Wkc5M2N5a2lJSGh0Y0RwRGNtVmhkR1ZFWVhSbFBTSXlNREl3TFRBM0xUSXhWREU0T2pFME9qQTBLekF6T2pBd0lpQjRiWEE2VFc5a2FXWjVSR0YwWlQwaU1qQXlNQzB3T0Mwek1WUXhOam94T0RveE5Dc3dNem93TUNJZ2VHMXdPazFsZEdGa1lYUmhSR0YwWlQwaU1qQXlNQzB3T0Mwek1WUXhOam94T0RveE5Dc3dNem93TUNJZ1pHTTZabTl5YldGMFBTSnBiV0ZuWlM5d2JtY2lJSEJvYjNSdmMyaHZjRHBEYjJ4dmNrMXZaR1U5SWpJaUlIQm9iM1J2YzJodmNEcEpRME5RY205bWFXeGxQU0p6VWtkQ0lFbEZRell4T1RZMkxUSXVNU0lnZUcxd1RVMDZTVzV6ZEdGdVkyVkpSRDBpZUcxd0xtbHBaRG93WWpFd05qRTJZeTB4T1dFMExXVTBORFl0T1RCbFpTMDNOekF6TTJGa01HUXpZV1VpSUhodGNFMU5Pa1J2WTNWdFpXNTBTVVE5SW1Ga2IySmxPbVJ2WTJsa09uQm9iM1J2YzJodmNEbzVOMk00TkdFMk55MDNaREpsTFRCbE5EY3RZakF6TlMxbE4yVTROV0l4WkRrMFpUWWlJSGh0Y0UxTk9rOXlhV2RwYm1Gc1JHOWpkVzFsYm5SSlJEMGllRzF3TG1ScFpEb3lNbVV4TkdSa1pDMDVaakF6TFRoa05HSXRZVGMyTmkwMU1tRTRNamhqTURkaE5qY2lQaUE4ZUcxd1RVMDZTR2x6ZEc5eWVUNGdQSEprWmpwVFpYRStJRHh5WkdZNmJHa2djM1JGZG5RNllXTjBhVzl1UFNKamNtVmhkR1ZrSWlCemRFVjJkRHBwYm5OMFlXNWpaVWxFUFNKNGJYQXVhV2xrT2pJeVpURTBaR1JrTFRsbU1ETXRPR1EwWWkxaE56WTJMVFV5WVRneU9HTXdOMkUyTnlJZ2MzUkZkblE2ZDJobGJqMGlNakF5TUMwd055MHlNVlF4T0RveE5Eb3dOQ3N3TXpvd01DSWdjM1JGZG5RNmMyOW1kSGRoY21WQloyVnVkRDBpUVdSdlltVWdVR2h2ZEc5emFHOXdJRU5ESURJd01Ua2dLRmRwYm1SdmQzTXBJaTgrSUR4eVpHWTZiR2tnYzNSRmRuUTZZV04wYVc5dVBTSnpZWFpsWkNJZ2MzUkZkblE2YVc1emRHRnVZMlZKUkQwaWVHMXdMbWxwWkRvd1lqRXdOakUyWXkweE9XRTBMV1UwTkRZdE9UQmxaUzAzTnpBek0yRmtNR1F6WVdVaUlITjBSWFowT25kb1pXNDlJakl3TWpBdE1EZ3RNekZVTVRZNk1UZzZNVFFyTURNNk1EQWlJSE4wUlhaME9uTnZablIzWVhKbFFXZGxiblE5SWtGa2IySmxJRkJvYjNSdmMyaHZjQ0JEUXlBeU1ERTVJQ2hYYVc1a2IzZHpLU0lnYzNSRmRuUTZZMmhoYm1kbFpEMGlMeUl2UGlBOEwzSmtaanBUWlhFK0lEd3ZlRzF3VFUwNlNHbHpkRzl5ZVQ0Z1BDOXlaR1k2UkdWelkzSnBjSFJwYjI0K0lEd3ZjbVJtT2xKRVJqNGdQQzk0T25odGNHMWxkR0UrSUR3L2VIQmhZMnRsZENCbGJtUTlJbklpUHo1WEJlYWxBQUFPMWtsRVFWUjQydTFkNTU4a1ZSV2RaMDZZQTZKaURwZ0RtRml0TFZ5em1IUE9ZbFpRRVdROUFYTVd6UDZ6ZnJpdjhxdnVxcDd1bnNIZjlLZWQ3ZDZaczdmdXUrSGNjOStjcEFmZzYrUUM5QVhvQzlBWG9DOUFYNEMrQUgwQitnTDBCZWovRjlBMHVQMHpQa2VnRFV1aU5vQWliTUcwY1E1QVN4SXMwQlFGcVBnWmlwWWdRNUo1dHFCaHl6WWxTb0lneXhNanc3SkpVN1lvVWo1RDBKUnQwNVpsVWFJOTltNkRrQ1hEbEVBSnB2WUErMlJIeUJJczJiSUFXTFJncWVjanRrUlpzZzNKRkdFQU9EM3FuVUNURGpETVdFelpsSG91UW9sQy9MOG9FV284eGRJWmdMWnBXNVlFd0pZa0ludEM5aERKSUczVEVreUx0aUhJUExXdGR3Q3RDR0trUVp0S3lTWmhXNFlqK3RtU2JFSzJZS1JFQ2FSRWl5Q1BEUnF5VEZEcWhWNGlJcllsS2lKZHVFWXZPbHVBYkJvK25hMVBkc0FzR3JaSENVV3dMVUdTTE1ua0pBcUtwa3hMMWpGQm01Q01RYURvSG9FbEFMUWgwR0lodkVPa1QyZnE5YUFkanNHaXQ5TW1tQU5oRVppdE1MYVBCMXFSM0lTNWR3Rlp0R3g2SnNiRHh0eTdCd0Z0eVVZWGFoSHBzUGVsYVdud0xCeFJ2ZTlndEU1UitKMnNOYlRremlNRGNBODFnSngwM1B5VmJVSlVlM0FSdVI4NEhtZ1RSUDc1ZEFZcEUrMlRpS3F1L1g5RldXcXI5UWhIUnRXeFFFZmFhd0VoUXA4NzQ3Y0lNeWFLelNmUTRCUVJxZkk0b0RVSUhaTHN1NXhTWUdKbmFxcXhQR3dieldmY05ES0VUbUhxbGFDanVHUHJLdzJNRHBIRHBiUGhaZHV0YzZ0MXF3Z3Z4d0Z0V1dpT0dOVTlZZHVPZ2lKSGsyeEdkK2N2b2YyelpBckhjZzlHMWFidWkzNm1hMDhuMVppWFpsZDhnTDFucEZPa2w1WHVRVUZnQjhpZDQzVCtJYkY1OUZJdkQ3bnRJeDB0elpIY0k2SkErNURWU3lBb2diQ0hTV1kvVE1MYTZFRWJPUzNRYkdKRW9sM01GcGJROWpJbWRCYWdjL2ZVUlE5Ty9qanBmOXZVcUgxUkgydmRReVFhNDBFQ25QT2t5OEhBUmp3UG1kb1hYYk0yamN0aUcrbGtVZ0k0My9mSjBSMHl1dHN6QVEySVhmd3diZERhVkVuQUZnRVQzQnN2dGtQdDRWNVptUXVoVFdGQmpHTFcyQnNKdWJxZWRqU0l2VlE0S2lQQ1R6am8wRTVWSHAwZU5CM0p3NXNhMzVUMng1RHVxVWNNWmdZYjZoTUxPbStnQWRxY0kxeklma1k1SDZBVERacldIR3NiQk1QNXNuUktRUjVsZnJwRWpGZ1d6aHRvQklVVVV3QVZVRXM2Wis0UllTODZRZG1hMWtuZ1lRMjlHei9ka1l1S1RuZVNOOVA1QTUyQzF5SWNHZEpPUjMzdE9uUEpwVkpnTGxuN1BJSk9hb29PeFNUZ21LaFBNVWQwTHFNbE9pWllLNUtxaklqM2xCVHpQRW1Fa0djRklDbkFralh1ZUU0MXNZMHdBam1HRjBzemltd0todkpZRDVKcElNL0xGQStSRm1NRXlUSFRmY294YzR6aEVLbEdYQVk3NWpDVVFlU2hIZ1ZhaUF5UWd4S2lmK0EwKzU1Mm9CK2gyc0hQYUZtaHBBaVdzR2tDaGcwTG1mVUwxN0VOa1NTTVNiSTZ2UXJCa2MvUlBHMHU4U29Gcys2WVB1ZFptWXlJcFdCTW9XSjhFLytsL1lMdXFGUkY4N1UxczFDZ21JZWhGQncwUFUwQ05nWFprQVhHOUJRakpjQitSQ3BxcHZ2QlBYcmJRUWp5TlR0Mk1Ob2lERWUxWlJpSVB0N093V1gvb0ZPaUxTRjBCdG95VDJGMjIxd291a3RRY2FUREkyS3NGMk4zNHlDZ1UySkVMRXJRNHBCZHpMVmlyekJnVU5rK0RPZ1l1QUFobE5EdW5pYWpwM2doMUhCQ0J3RWR2SE1jb0oyYjd5YkREaHFoVWJiZHMxb3M1enJ2WGtFMTFVeVBWek5ITGVlK0pXNnk4K0I4UjcvT3gxS2RTNE1hemF2M3I4dHpDTEt3VzU4WXZWcm4wcUhMc1E4TU9rK1R1SnV0aFZId2tNbHhORHFFQWpJU01IY1N0T1dFcUY3OVN3b0h0M1J3WjlNenY4dzc4b0hvTmNuVG1kSmh0S2FJaWNGNjFwRTJpSTRKakxKZ0hQVVBKSkNOMEZkU3FXeGpyMEpvTkdSK2pnU2FqaEorWmJRTzdSYjZTVHhraUVjQm5ZeHdEM0JWNkloT2dyM0dLRkxWY1VEblFkZzZVek9rSWIxakdEb1JweU9CVGhIMTFoUjhVV2IwTWd2b2FCV1BCenFyTmJIY29jMWg2MlBsMTlGQUp6ZUpjVG5vNk1QNzNRSktoL21Bb052R1pERWJFYkpVOVkrRlZlaUREcm5Ja0Ftb1pVT2pjQ2IzSjlHMFZLek1Ed2xhMFZZdmlucVdISnJPTk1pR1JkWFFRVmRHUWxLL3BQV3lvelRzdDkwbTRHSldQU3pvYUhTM2l4MWhXNERZbTU1bkxySlVDUnpZMG5rWFlLcy9oM2YwcldwQkVGd1NBUngyb3lnazdWdUdpaUpBRWNQb1NEbG95SFIwME1FQ2F5UHZFS0pKRERYVklWZnRwRnBIQkIzSllRTlBSbWYrYjBUbk9oWitab0w4Z1JmT2d1S2I4dytMYklpdjRYRnRONVhTR1lET0N4Z3V2U09Cekt5dk1NajJFYUZuOVVPSHRqU0NVSmdtRW9VSVEwSThDdzdzSEJPTk9hNTdIV2g0MGtlRW9sNkRqM1NTbE5obUdKVThPWk5BREYzT21LcERTOUtuZllBVzZGRXdJSVkvbEdGR2RtbHRNdmVuaEJnTk1iaCtUdlk0WkJtenBmaGEyU1pIRDlzYWQ5MEticjNMZFpNZHN4Z0NXWGw5WkRTbmFkN2MwUFNzRk1ocXpKd3dMejkxejVZZ08rVXNZK28yN25yamtkSFRhVWV6SmJOSmVMaFNUTWlSQldJVGp1aXZEY1YrVnV1Zk1rZkdERTFjcU1FNTZYZGlGck54QjNhbHBVa01OS1dLOWFKZWRhR0lCUjQ5N0ZIMEFNdWFTVXA1V0xRcGk2NTFENkMvTGNabWtYTDRNSG9NWXQ0d1dkcFd4b2hNM053T3I5V2EwdjF2cU56eXE5OXRzSjk5dzIyWGRWd0UyVXphMHg1QmMxRFV4OWJMWUhHVzBmVnJRNUNjaFd5VEFLaHRIZnhhL1hSZlQyd3d6OThIeWN3OVhpdDJ1QlpRZWpFK3pRcWpiUTltWlVhRTJKSXBET25FNE15SXNRMnFqaGFRdDg0RVl1ZlpJc3VpcU5NbUZ5aXJxbXpDQWpYb0xmSTZtbnZzbktYTjgzSTROQjZ5QVMxWjVsL3AwOGdFZit5eWtNTHcwT1FGdVk3WWlsU2hEZjRXeVVoczl0UVd3RmkvTXFJc0VZaVI0ZEJmTFlBOVRpakltakczVGdoZ2ptMTVHOWZOem1EYU8yaFppRFlqZ0dNazFBbWhTbStMTCtieFEvT3hZY3FkbjBOZTU0YVh4dlBWRzBXMkZjb1JUQ3dUQzgwOUtTRnBZTUpjTkVSakkyM0o1QklYcSs5WEx6TGtPb2NJZ2Nhb0dTSFU1em1pYVIybmlyelZEQmdNUFExZ3JCQUNGMEZYVlZWVk0wMmRwTml5bHpFeVliamxZQnRId05nN1lrcUFHT295TDhPdjAxdWZGQUZYZFZWVlZWMUs0NkFJb2RENUlmaVczbDhqZGk4MDZkRnRNVHF4WE8ydGErSk9wcERycW50TkNxYnMwZ1hOZDlCRVlQOFlGZ3RqdGszQWVodVhRRmZUMTdpRnprKzFSSWtyaXZ0K2FCTTVKYlp5Nk1ET0V0V1R6WkJIcUp2cXZSVEJxYXliR3JTQzFEN1hMcWFncTh0YlVRZnJ6WExXWVlqLytsMVZrQnNIQkQxMDVqSnEyS1U5d2hob2oyNkFDV0hnUVlTekoxdWNZNGc2eW1kTXkwcVFneTZybVFQb0lNc2pMZWlwbmVzcGFvc2Vyek1SekNMWGdTY0UzMEllUXJSK3N0M09WVlZYWFZyQWNNWm1BYUY5R2ViMExHblVRVVRzWmREMStLdGV0dWlmdFN5cFpOeXg1Q0ZMWk94M1kyc0Nlb3VoRzlTaE1HS1A1cmNoa2ZKd0lURnVuZ0RvdzRHZUJ6djA2dUNMRUJyWDNCN1ptRFN2dVJvODFBclhTVEY3ejBVUXFiMzdKZC9pa3VVN3d5NFFsRUVmYkJtcWJPbnhYelZlSFpwS1JkRXNSV05uakVyVVhMMTVYMWVKbFVHWFQxM0IxSUUweThsRnlCVEhxN094QXpPelNMNXYwUFU0bFV4QlIwZVhMeE1UczdaOFhDMkh5Sjg4MkJMSnhOTFZYQVdWZVZ4bnlUNnk2bGpUOU1pSTBZZGJmRG5wWWF1M2dvNnRoYVpPTGt4VDQwWXh5L1RQMGxGQVQrdm4vaHMzcDVUdWpOWlpzUXBlSW5PVUUrSFYzNmF6QmwxWFZYVXBwZlNicXdZNHAwdktEUi9sbi96cW4rbUlvTk9zcGEra2xQNThyejJyNzRFUU4xN2RkYy9mLzVUT0RuVHFSOEpibnY3STIrOHJoSXUybHBKa1FYZi8vTjgvL3RhREhuMzVsbzExd2NKWFhlSUZUakt3ZWd2b3FycGNQZnZhMi84d3MxdlJyc3JaVjMvNzN4ODgvaEhWTFRNNEx5K0ZPbXZJRHZTb0JpM0dqK3V2KzlIOTBKVHlSdlMwaG1sZnZlOWYzM3Y0NDk0NUI2Um81TXViSDhJVzBOVm0wTSs2NDM1cFBKRUs1ajh2aDkzOWkzL2MrKzBIWC91T2F2ZFhQUUZlQmwxUFVuaUJ1cW1xNjU5eHg5K0dNNWRRdE1aVmNyYnV1dWVQLy83KzlROTl5OXRMSnFzblg5VEROK3JwMDZqM1lPbnJmblMvMmtZd3J3MDZKdHlDZk9mdi9uUG5keDd5bUhkdWQ5aExsellmeXVFSjJERjZoQkZ1ZnRRUC94SUoybkZ0WXR5d21UbGI2dGUvL080ekgvYW10MjJQRnU5LzBRdHZuZjlRUGRlaHJnNTU4UlorRHpNWDBYRFFrWEVWSWVsZjNyYzl3bFpWWFZmVmk3OWMrdWJ0VDZ3M09uUUR1dDZjWE9yMnJiOWVSYjVpaEYweG5XOStYRlE3eDNkNjdEY2JBcUNlL09DM2JvMGR5MnVQQ0lZL1ZTeThkbEVaMlVNVzVySU0rcXRwcnJoODlaWHRFVzlhbW03eWptUURXVjRaZHdkSFdiMjhDSTF2ZGMzWFp1cjE5S1VuajJQS0l0QWJTMU9iVUw1Z2xSYVhUbVBIb0w4eC9mYVhVa29wZmVTbEM1UExDdERNdHdnUTR0TDVXY2s5ZXFDYmlQM2VHMU5LNmJsdkxLVExCYUNyMldNWVMwbHgrL1dPYlVsOHYydkNwOXZzWGRkVjlhRlhwSlMrK01RcmhTQzRxQnVmYlJFYlJmUHVSV1YyajhKQmZPV0hVMHBmZUVxMTJEM1NPTDZYV1lXUVlXNFlVRG96REx1QXZ1RmpLYVhQdkdCUmJUcExpOVVsQmhLaE85ZzBzTnY4Sk9aRDNrcytubEw2M1BPS0lKYUFMdFU2YmF2dDJmRjhIZ0JwRjB2WDFhVTNwNVErLzZSU3Zib2IxZHYrTzgyTlhESm5CbTQ1b3huMDE2Yy84NE92U1NsOTVRbFhsdnYwcktsSHoyZWlTUmxBRHFubFJpNHN1OGNVZEIxeCt2bXZYd002YldqY3VuNG1MaFlyZ1c3bzZDMDdpUFhsdVlNWVArT3pUMXZRYlJWbkxwZG4vMWt1OXFkSE1OU3UzanFBbXptSVhmZngxQ3VUUjc1NUpMZDFUcFRLVnpUTFVETjNXUVQ2bXR1bUJ6Ri80TjNibTYyWjRXYzkxK3ZtZllQUnBOWnE3alRZcXZQS2xyNnRXRU1XVFBldVY5MjBiY3hjUElramhCaE5NelBhdUc1aGEvVTBGL0xtQ3A0M2ZHS1gyZmc0RkhPa2pHcHV2WWlPY1pjMGZ1V21HNFkvNWEwZmVQbkxicTNxOTd6Mmh2ZFZpMVFJYVhNdUNqVVFCdndkNG1JamFzazlWeGwwLzR2WGZYcnlxZWQ4NnNhcWV2TkhQN2xNaFRBMGR5RlJCL1BWbjd6bCs5d29IdThpcHRXWHNmYXZzVWpLZDRpUVlFcm5GYlNIQzRhTXVzNDY3dVZpcXk4WTdrdVNZaGZoSUpLT2ZZSkcveXJrK0YwNHRwbk9NMmhDUkh0UmZaNFY0c2dYejYyM2RMdGo1ZWFDMCtNYmV2MUY4RkZQTzBSdW9XRkw1eHgwWkpHUVg4VXZ6ZUh4TWEvV21rSmczTEVRaW04Nm5YL1FJUURNRkJPbHM4QzhWbDR2aDNRaS8zcWNRMStydWJlTWlIeURzRTUxR2RjeDNZT1EzZHdPZFZhWTE4ZnBJQjdsczRPOHkvWkYzSXVYenZLMStwY2JiR0Jyemlub2MvSjZRSUwrSDE5dGhkT3dPZzZDQUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIl0sImFhZ3VpZCI6Ijk3MGM4ZDljMTlkMjQ2YWZhYTMyM2Y0NDhkYjQ5ZTM1Iiwib3B0aW9ucyI6eyJwbGF0Ijp0cnVlLCJyayI6dHJ1ZSwidXAiOnRydWUsInV2Ijp0cnVlfSwidHJhbnNwb3J0cyI6WyJpbnRlcm5hbCJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi0yNTd9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi02NTUzNX1dfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTAxLTI2In1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNC0wMS0yNiJ9LHsiYWFndWlkIjoiYzU3MDMxMTYtOTcyYi00ODUxLWEzZTctYWUxMjU5ODQzMzk5IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiJjNTcwMzExNi05NzJiLTQ4NTEtYTNlNy1hZTEyNTk4NDMzOTkiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiTkVPV0FWRSBCYWRnZW8gRklETzIifSwiZGVzY3JpcHRpb24iOiJORU9XQVZFIEJhZGdlbyBGSURPMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQ0hUQ0NBY0tnQXdJQkFnSUNkZFV3Q2dZSUtvWkl6ajBFQXdJd2V6RUxNQWtHQTFVRUJoTUNSbEl4RXpBUkJnTlZCQW9UQ2tObGNuUkZkWEp2Y0dVeEZ6QVZCZ05WQkFzVERqQXdNRElnTkRNME1qQXlNVGd3TVNRd0lnWURWUVFERXh0RFpYSjBSWFZ5YjNCbElFVnNiR2x3ZEdsaklGSnZiM1FnUTBFeEdEQVdCZ05WQkdFVEQwNVVVa1pTTFRRek5ESXdNakU0TURBZUZ3MHhPREF4TWpJeU16QXdNREJhRncweU9EQXhNakl5TXpBd01EQmFNSHN4Q3pBSkJnTlZCQVlUQWtaU01STXdFUVlEVlFRS0V3cERaWEowUlhWeWIzQmxNUmN3RlFZRFZRUUxFdzR3TURBeUlEUXpOREl3TWpFNE1ERWtNQ0lHQTFVRUF4TWJRMlZ5ZEVWMWNtOXdaU0JGYkd4cGNIUnBZeUJTYjI5MElFTkJNUmd3RmdZRFZRUmhFdzlPVkZKR1VpMDBNelF5TURJeE9EQXdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBVHoyak5hS09LL01LZFcyZm1lMXRxNkdSRXVQdXVLVzlIZ1dZZ01Scmp2WlVUT3FMQU5KM01kNUhxdjFFTjF6TWQ0bFd0eWZ6UmxhN3J2NUFSQm9Pb1Rvell3TkRBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUJFR0ExVWREZ1FLQkFoTm5UVzBhNEU4dWpBT0JnTlZIUThCQWY4RUJBTUNBUVl3Q2dZSUtvWkl6ajBFQXdJRFNRQXdSZ0loQU1yaGI4U21mTkxlTE5nYUFWbVE2QU9NaUxOTFZIWDBrRlVPODBDblQzOEVBaUVBek5BZ3Y0ZEgrSERoWlNnWldKaWFQdS9uZlpUZXVHeTRNeWRQTXE1dXJzND0iLCJNSUlFT0RDQ0E5MmdBd0lCQWdJREFJbkJNQW9HQ0NxR1NNNDlCQU1DTUhzeEN6QUpCZ05WQkFZVEFrWlNNUk13RVFZRFZRUUtFd3BEWlhKMFJYVnliM0JsTVJjd0ZRWURWUVFMRXc0d01EQXlJRFF6TkRJd01qRTRNREVrTUNJR0ExVUVBeE1iUTJWeWRFVjFjbTl3WlNCRmJHeHBjSFJwWXlCU2IyOTBJRU5CTVJnd0ZnWURWUVJoRXc5T1ZGSkdVaTAwTXpReU1ESXhPREF3SGhjTk1UZ3dNakl5TWpNd01EQXdXaGNOTWpnd01USXhNak13TURBd1dqQjBNUXN3Q1FZRFZRUUdFd0pHVWpFVE1CRUdBMVVFQ2hNS1EyVnlkRVYxY205d1pURVhNQlVHQTFVRUN4TU9NREF3TWlBME16UXlNREl4T0RBeEhUQWJCZ05WQkFNVEZFTmxjblJGZFhKdmNHVWdTV1JsWTNseklFTkJNUmd3RmdZRFZRUmhFdzlPVkZKR1VpMDBNelF5TURJeE9EQXdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBU0xWTCsxU1RKdmFFUk81V0NSK2pHY0F4THZtUEJEaVpZMU5nRkZJaHBYNk9BWkFwUVltdDZ4U2g3NFN3TSttamduc1NFY2M0QTJVZjEzOUZnWjRycFlvNElDVlRDQ0FsRXdFd1lEVlIwakJBd3dDb0FJVFowMXRHdUJQTG93U2dZSUt3WUJCUVVIQVFFRVBqQThNRG9HQ0NzR0FRVUZCekFDaGk1b2RIUndPaTh2ZDNkM0xtTmxjblJsZFhKdmNHVXVabkl2Y21WbVpYSmxibU5sTDJWalgzSnZiM1F1WTNKME1GTUdBMVVkSUFSTU1Fb3dTQVlKS29GNkFXa3BBUUVBTURzd09RWUlLd1lCQlFVSEFnRVdMV2gwZEhCek9pOHZkM2QzTG1ObGNuUmxkWEp2Y0dVdVpuSXZZMmhoYVc1bExXUmxMV052Ym1acFlXNWpaVENDQVdBR0ExVWRId1NDQVZjd2dnRlRNRCtnUGFBN2hqbG9kSFJ3T2k4dmQzZDNMbU5sY25SbGRYSnZjR1V1Wm5JdmNtVm1aWEpsYm1ObEwyTmxjblJsZFhKdmNHVmZaV05mY205dmRDNWpjbXd3Z1lhZ2dZT2dnWUNHZm14a1lYQTZMeTlzWTNJeExtTmxjblJsZFhKdmNHVXVabkl2WTI0OVEyVnlkRVYxY205d1pTVXlNRVZzYkdsd2RHbGpKVEl3VW05dmRDVXlNRU5CTEc5MVBUQXdNRElsTWpBME16UXlNREl4T0RBc2J6MURaWEowUlhWeWIzQmxMR005UmxJL1kyVnlkR2xtYVdOaGRHVlNaWFp2WTJGMGFXOXVUR2x6ZERDQmhxQ0JnNkNCZ0laK2JHUmhjRG92TDJ4amNqSXVZMlZ5ZEdWMWNtOXdaUzVtY2k5amJqMURaWEowUlhWeWIzQmxKVEl3Uld4c2FYQjBhV01sTWpCU2IyOTBKVEl3UTBFc2IzVTlNREF3TWlVeU1EUXpOREl3TWpFNE1DeHZQVU5sY25SRmRYSnZjR1VzWXoxR1VqOWpaWEowYVdacFkyRjBaVkpsZG05allYUnBiMjVNYVhOME1CRUdBMVVkRGdRS0JBaERhUWJoVEZ0amNqQU9CZ05WSFE4QkFmOEVCQU1DQVFZd0VnWURWUjBUQVFIL0JBZ3dCZ0VCL3dJQkFEQUtCZ2dxaGtqT1BRUURBZ05KQURCR0FpRUFvRWVwSE1DNVg5akJLYUdwaGNLamlkaGlOK1puejd2M1MzaGMzMS9BdW5zQ0lRREtxb2dLMlNaT1haY3Z2SENCNlVRU2FBMG5MbjRSVXd5MWd1RGl2Ylpid2c9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFnQ0FJQUFBRDhHTzJqQUFBQ3FVbEVRVlJJeDJQOC8vOC9BeTBCRXdPTndhZ0ZwRmx3OGNLRmlySXlSM3Q3UzFPejBLRGdCZlBtLy96NWszaXp2bjM5bHArVGEydGx0V1RSSW9Ub2Z4aFl0WEtsbHBxNnNyd0NBaWtvUklWSHZIMzc5ajl4NE5TcFUwQXRRSTFXNWhad1FhZ1B6cDg3VjExWmlYQXZJeGo5WnpoNTRrUk5aUldSUHZqOTZ4Y0RPTTB6TVRLaUI5Rzh1WFAvL2ZzSE5GUkFTTEMrc1hIbTdObHVidTRRbTNidDNMbHU3VnBpTEdDRW1jdUlhY0daVTZmQjRjV1FYMUFRR3gvbjdPSXlhZW9VYlYwZGlJdmFtbHVlUFh0R1VTVC8rZzMySFNPRGhvWUdSSVNGaGFXcHBZV1ZsUlVvK09Iamg2YjZCb29zZ0h2cXo1OC9jRGw5ZmYzTTdDd0llOCtlM2F0WHJxUWdtZUlva0RLenMvWDE5RUd5L3hrNk96b2ZQM3BFV1ViRHNBWVlSQzN0YlJ3Y0hFRDJoL2Z2NjJwcUNSZU9qQ1RtWkUwdHJaeThYQWo3OEtGRHk1WXVKZDUwVkFzWWNlcEtUVTgzTmpXQnFPbnU3SHh3L3dFK08vN2pzZ0MzMTVtWm1SdWJtOW5aMllGcXZueiswbEJmaHpPZy9xTzdsUW0vQitFQW1Id0xpb29nQ280Y09yeGswV0lpUFVFZ2twRkJVbkt5bVprNWhOM1QxWFgzemgxaVlvS0pjRFRCQTRxRnVibXRsWXViQzhqKyt2VnJUVlUxcUhRaHpRZU1CSHlockt4Y1dGd01VWG42MUtuNWMrZFN2OEpKU0V5MHRyR0dzQ2YwOTkrNmRRc3V4Y0xDQ3JIN1A1SXJTWWdEZUtGUzM5VEV4OHNIWkgvLzlyMnVHaEZRTjY1ZmgyVlBOb3FxVENVbHBlS3lVbWd4ZlBwTVNXRVJNQU11WDdhc3Y3Y1hJcWlscllYd0ZyeGVnL3FPdUdaU2RFek0zdDE3RGgwNkNQVDBwazBiTjIzY0NJOUZZS1pKejhoRTk4SGZmMzhoRERZMmRpTDkwZEhkcGF1cml4YXdyQ3lzcmUzdHVucTZpTFRYME5BQVRvSXNUeDQvdG5kd2lJeU9BdFlFeEZqQXpjM3Q0K3NMSkw5OS9Rb3NFMFZGUmUzczdSdGJtb0dWRlVxY2pUWWRoNzhGQUloQkxsTmQ3anUxQUFBQUFFbEZUa1N1UW1DQyIsInN1cHBvcnRlZEV4dGVuc2lvbnMiOlt7ImlkIjoiaG1hYy1zZWNyZXQiLCJmYWlsX2lmX3Vua25vd24iOmZhbHNlfV0sImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIl0sImV4dGVuc2lvbnMiOlsiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiYzU3MDMxMTY5NzJiNDg1MWEzZTdhZTEyNTk4NDMzOTkiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjp0cnVlLCJ1cCI6ZmFsc2V9LCJtYXhNc2dTaXplIjo2NDAsInBpblV2QXV0aFByb3RvY29scyI6WzFdLCJ0cmFuc3BvcnRzIjpbIm5mYyIsInVzYiJdLCJmaXJtd2FyZVZlcnNpb24iOjJ9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiTk9UX0ZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjEtMDktMjEifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIxLTA5LTIxIn0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiNjI4NzU2MTI1ZTJmMjI0MmFkYmU5NzljZjM0Mjk5MmVmYzIxYzZkZSJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyI2Mjg3NTYxMjVlMmYyMjQyYWRiZTk3OWNmMzQyOTkyZWZjMjFjNmRlIl0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IDUgU2VyaWVzIHdpdGggTGlnaHRuaW5nIn0sImRlc2NyaXB0aW9uIjoiWXViaUtleSA1IFNlcmllcyB3aXRoIExpZ2h0bmluZyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzMsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6Mn1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiLCJyZW1vdGVfaGFuZGxlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJREhqQ0NBZ2FnQXdJQkFnSUVHMEJUOXpBTkJna3Foa2lHOXcwQkFRc0ZBREF1TVN3d0tnWURWUVFERXlOWmRXSnBZMjhnVlRKR0lGSnZiM1FnUTBFZ1UyVnlhV0ZzSURRMU56SXdNRFl6TVRBZ0Z3MHhOREE0TURFd01EQXdNREJhR0E4eU1EVXdNRGt3TkRBd01EQXdNRm93TGpFc01Db0dBMVVFQXhNaldYVmlhV052SUZVeVJpQlNiMjkwSUVOQklGTmxjbWxoYkNBME5UY3lNREEyTXpFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUUMvandZdWhCVmxxYWlZV0VNc3JXRmlzZ0orUHRNOTFlU3JwSTRUSzdVNTNtd0NJYXdTREh5OHZVbWs1TjJLQWo5YWJ2VDlOUDVTTVMxaFFpM3VzeG9ZR29uWFFnZk82Wlh5VUE5YStLQWtxZEZuQm5seXVnU2VDT2VwOEVkWkZmc2FSRnRNamt3ejVHY3oyUHk0dklZdkNkTUhQdHdhejBiVnV6bmV1ZUlFejZUblFqRTYzUmR0Mnpid25lYndURzVaeWJlV1N3Ynp5K0JKMzRaSGNVaFBBWTg5eUpRWHVFMEl6TVpGY0VCYlBOUmJXRUNSS2dqcS8vcVQ5bm1ET0ZWbFNSQ3Qyd2lxUFN6bHV3bit2K3N1UUVCc1VqVEdNRWQyNXRLWFhUa05XMjF3SVdieGVTeVVvVFh3THZHUzZ4bHdRU2dOcGsycVhZd2Y4aVhnN1ZXWkFnTUJBQUdqUWpCQU1CMEdBMVVkRGdRV0JCUWdJdnowYk5HSmhqZ3BUb2tzeUtwUDl4djlvREFQQmdOVkhSTUVDREFHQVFIL0FnRUFNQTRHQTFVZER3RUIvd1FFQXdJQkJqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFqdmp1T01EU2ErSlhGQ0x5QktzeWNYdEJWWnNKNFVlM0xiYUVzUFk0TVlOL2hJUTVaTTVwN0VqZmNuTUc0Q3RZa05zZk5IYzBBaEJMZHE0NXJuVDg3cS82TzN2VUV0Tk1hZmJoVTZrdGhYN1krOVhGTjlOcG1ZeHIrZWtWWTV4T3hpOGg5SkRJZ29NUDRWQjF1UzBhdW5MMUlHcXJOb29MOW1tRm5MMmtMVlZlZTYvVlI2QzUrS1NUQ01DV3BwTXVKSVpJSTJ2OW80ZGtvWjhZN1FSalFsTGZZemQzcUd0S2J3N3hhRjFVc0cvNXhVYi9CdHdiMlgyZzRJbnBpQi95dC8zQ3BRWHBpV1gvSzRtQnZVS2lHbjA1WnNxZVkxZ3g0ZzB4TEJxY1U5cHNteVB6SytWc2d3MmplUlE1SmxLRHlxRTBoZWJmQzF0dkZ1MENDckpGY3c9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFmQ0FZQUFBQ0dWcytNQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUhZWUFBQjJHQVYyaUU0RUFBQWJOU1VSQlZGaEhwVmQ3VE5WMUZELzNkNTl3ZVFTSWdTOUFRQVhjRkxBUVppOWZwZVZ6MXRZL1dUWnI1V3hwYzdXNWtuTGE1akkzWjg1c3JTMm5NMnNqdFd3WlM3SVVINEg0eENuRVF4NERBWkY3NFY3dXM4ODV2OS9sSW5CdlZKL0I0UHY5bnUvNW51LzVudk01NTZmekEvUXYwSGIvSXJYM1ZGS1BvNDVjbm00aW5VSVdZd0xGUm1aUVV1d2pGRy9OMWlSSGgxRVowTlJWUnVkcXQxQmQrMm5TS3lTL09oeXMwK2xrM2UvM2tROXF2RDRaVXRhNFZWU1V1WTBlaXB5aVRoQWZvY29PUlZnRHV1dzNxS1JpQWQzcmJjRXRqVGpZSW9mNldhSHNDbXpWUFdDTXgrY2doOHRMcVdNS2FNV3NVakxxbzJSdEpJUTBvT3ptZXJwUXU0ZXNaZ3NPTmtHeEg3ZDBrZHZUVDE3czRPTVU3Vkk4WmhqZ0dhTStBcTlpRU51OFBpZjF1ZHowN013dktXZjhHbFZvQ0VZMDRQQzVXZFRhWFlGYlI4dk52TDUrM0tnZmI1eE5NeWE5UmFtSml5bmFNbEdUVnRGbHI2YmE5dStwcW5FWDR1TXVSUmdqU1lFaHJON3V0RkZlNmxxYWw3TmZrdzVpbUFHSHluUHBiazhWbVkweHN0bnB0bEZDVkNZdHpUdUJOODNRcE1MalR0ZXZkUHpTVW5KN2U4bWtqeFozOWZYYktEZmxkWnFidlUrVFVnR25CVkY2ZlEyaVBIZzRXMTZVV1V3dnpiazE2c01aRStQbjBwdno3SlNldUF5ZXM4bGNwQ21hS3VvL3ArcVdyMlVjd0lBSFdydlAwWUV6aFhBdExBYnNzSGhwN2lHYW12eWlqUDhyeXFyWFVXWDlYb293eHlBdWZOQnJwNDNQT0JGWFpsa2Y4TURSaXFjcHlvd0F3cHV6MngrZld2ei9EdGRlOXNtc3p5Z3RjUjZDMXdiZHpCbDZPbHE1V05ZWTRvR2F0aEpNcmtURXgwakFSU0hBVnMrNXJZa1FOWGIrUWdmUExzUTZnWHlJbnNyZVFmbXBtN1JWRllmTDg2bjFmaVVPa1l2U2hrVVB4dmJ1a3pveTZLMWloTTFobzNYelc2RXZTZlhBK2RwaVdHYVdkK2RvWHpMem1Hd0tZRkxDQXNSQWxQQkFoTWxDRlhVN3RCVVZQcjhIZ1ZjSkhXcStGMDBwbHIrRE1UZHJQNHp2eFkxMWtOTWh4VCtTZVRHZytkNFY1TFFKaXR5VUdKTkI4VkZac2pnWUJaTS9JSS9YQ1RrajBxeURPcEYyQVZRMTdDSWpVcC9EblQxVWtMNUY1Z2RqK3NTMXdnMWdFM2dpZ202MGZDWHpTblBYYnlBUGJJWHYrSURwRTE2VGhhSElTOXNreWhsbU1FNUYzY2ZxQUtocTJDMEU1UEgxZ1lhWGFMUERrWkcwSERKT25LV0hwNTFJMHo1U091eDhlMVdBdVp6ZEhRclRrcDhUbWpYb0krbGEwd0dac3p1YnFiTzNpZlE2QS9XN3ZWU1lzVjNtUjBKS3drS2M0V0hpQmttUjhJM0NDZ0k4N29PTDRxelQ1UCtSVUpCZWpFT2dBUEs4aFlQemF0TStlSVRwMklPOXlUUW1lcm9tUFJ4eDFxeEFjc2lsZS91YlNlRWJjV1FHWUVDZ2hjTFkySHlLam9nakgyNWhNcGpwVXYxT3VnbGk0ZWgyZVJ3ME8zMmJKamt5dUNnTnpnMHZ6bFlNU2lTczB1b280TUc3aE1PakNFYVgxeUZFMG5TdmpCenVUbkVwSzg2WjhJb3FGQUl1Ync4a2c5QXJFYVJFV1NaSStqSDRYYnA2ZzlFOUVuSlQzb2FSekROK01VSkJRREhuNTZhOG9VbUVCdXNPeEJzL041K3RKRWJQa0FGRGo4VUd2T3MvSVd2Y1NnbEdCaHZTNy9GVFlmcFdHWWREWThmUEF4V1NBMzVzVEM0cDQrTG00QWFxSW9QZVF0ZnVmSzZKaDBaaHhsYnNVWE9TbVhOaWZENVpUQWt5RG9mYmJjY2x4bkE4V05BcXhDYlJOeWtoWHhRcGFEdzY3ZlhVWWJzaUcwS2h0djJvZUl2aDhyaFFNWU9jRUFxWEcvZUkrem5nT2M1eXhyOHE4MklBTTFjL0ZMRk9wbHF1NWVGUVhyTVp6R2NWQ2pZYkxXRzVJNEJUMWV1UnJsYnh0Tk90TWl0RERFaExYSUl5bkFBdnVPRVdFM1gzTmRBZnQ5NFZnYUc0MlhJUXQwWlg2UGVDRS9xUUZlOXJLNkh4N1lVNTBLdkg3Zlc0ZlMrcTdLS0JKeHNnZ0JYNXBTQUdoMWpJclZoNXpRNnczUmZhYWhCWG0vYUNiQ1pUakNVRlVUeVdacVc5cDYyTWpKUFhWcU9yUGdNTzROdjc0R2tmK293ZnROVkJEUW5qRkpxSFN3MTdwWHZoV1c1S1pxZS9RNDlOL1VTVENBVldvUVhGSUhCSFhYZTNGUHJVRHN1R0RtdEYvaEhLVEhwZWt4aGlBT1BJK1NKcTZTNkhGNEk5WVd6a0JKVG80NmlVTXpXcDhQaXIvUmlkdUx4S1lzU2tzVjh2TGxPUXZoR1gyWWxSME9CaEJqQyt1L2dFY3ZZMEFwSzdZazQxTnhqUFNRbldGSFRGNjZVcmpnZXZCOEN1NWErbDJ2WVNSUHR1VkRvNzNoaGRNU0huVVg3dFRqc1ZaR3hBbC9XcHRpT0lFUTFnbkwyOW1YNi90UjF0bWxrWWo4VzRYK0NTaldjVURHWTFOcFMvQzdoU0txaU1MTS9sMlFtU1daNzNEZHorZ2lvOEJDRU5ZUFE0NnFua3p3WFVicXZCa3hqVVFzV2ZaRmdidW8zckFmK3dON2pPTzkwK3lueDRQaTNMKzBuWUwxU2NoRFVnQVA0Z1BWLzdJZDFxKzFIU2htdUdrSXFXUlBneXhNRnFQOEhmalRualh3WTViUWZiSmN0Nk9JektnTUhvdEYvSGUxZWdzYXhIU3FHNndmZG1RNXg4TnlURkZxQmNwMmlTb3dIUjN5azUrMzZoRjd2WEFBQUFBRWxGVGtTdVFtQ0MifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMC0xMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzMsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWXViaUtleSA1IFNlcmllcyB3aXRoIExpZ2h0bmluZyIsImNlcnRpZmljYXRlTnVtYmVyIjoiVTJGMTAwMDIwMjQxMDEyMDA4IiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMDYtMDQiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDczLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ill1YmlLZXkgNSBTZXJpZXMgd2l0aCBMaWdodG5pbmciLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlUyRjEwMDAyMDI0MDYwNDAwMyIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTA2LTA0IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3M31dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNC0xMS0xMiJ9LHsiYWFndWlkIjoiYzgwZGJkOWEtNTMzZi00YTE3LWI5NDEtMWEyZjFjN2NlZGZmIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiJjODBkYmQ5YS01MzNmLTRhMTctYjk0MS0xYTJmMWM3Y2VkZmYiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiSElEIENyZXNjZW5kbyBDMzAwMCJ9LCJkZXNjcmlwdGlvbiI6IkhJRCBDcmVzY2VuZG8gQzMwMDAiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzAsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQyt6Q0NBcUdnQXdJQkFnSVVkSGtacW9qNjIzOUUvOEZRYitJSlN1SENhRlV3Q2dZSUtvWkl6ajBFQXdJd2F6RUxNQWtHQTFVRUJoTUNWVk14RXpBUkJnTlZCQW9NQ2toSlJDQkhiRzlpWVd3eElqQWdCZ05WQkFzTUdVRjFkR2hsYm5ScFkyRjBiM0lnUVhSMFpYTjBZWFJwYjI0eEl6QWhCZ05WQkFNTUdrWkpSRThnUVhSMFpYTjBZWFJwYjI0Z1VtOXZkQ0JEUVNBeU1CNFhEVEl5TVRFd05ESXhNRGt6TkZvWERUUTNNVEV3TkRJeE1Ea3pORm93WmpFTE1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBb01Da2hKUkNCSGJHOWlZV3d4SWpBZ0JnTlZCQXNNR1VGMWRHaGxiblJwWTJGMGIzSWdRWFIwWlhOMFlYUnBiMjR4SGpBY0JnTlZCQU1NRlVaSlJFOGdRWFIwWlhOMFlYUnBiMjRnUTBFZ05EQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJKbFUvdHgrQVFrRGVyc3czcEoyVENyc3Jpb1ZXZy9wM0kxODU4ODNSUFJvM3l1ZGQ5OGpWbk50cDdEaUdGN3NKekFqWjJpMlhiM3ZQVVlIK3U5MGZMbWpnZ0VtTUlJQklqQU9CZ05WSFE4QkFmOEVCQU1DQVlZd0VnWURWUjBUQVFIL0JBZ3dCZ0VCL3dJQkFEQWZCZ05WSFNNRUdEQVdnQlM3NkRwbDkzdkIyaDVGREx2eU1NdlVCeWozaXpBZEJnTlZIUTRFRmdRVURMK3pwZnJMdWQzcXBqVlQrbzljNUMwRFg1VXdSQVlEVlIwZkJEMHdPekE1b0RlZ05ZWXphSFIwY0RvdkwyTnliQzVvZVdSeVlXNTBhV1F1WTI5dEwwWkpSRTlCZEhSbGMzUmhkR2x2YmxKdmIzUkRRVEl1WTNKc01IWUdDQ3NHQVFVRkJ3RUJCR293YURBL0JnZ3JCZ0VGQlFjd0FvWXphSFIwY0RvdkwyTnliQzVvZVdSeVlXNTBhV1F1WTI5dEwwWkpSRTlCZEhSbGMzUmhkR2x2YmxKdmIzUkRRVEl1Y0Rkak1DVUdDQ3NHQVFVRkJ6QUJoaGxvZEhSd09pOHZiMk56Y0M1b2VXUnlZVzUwYVdRdVkyOXRNQW9HQ0NxR1NNNDlCQU1DQTBnQU1FVUNJQnVXOVpyTnJoTkl4UXNkeUVnTkN4bkpseXJZR0J1NjFLMnhBK3pBb3B5T0FpRUFwd1MzWFJlUFFBVlZHblREYUUybDlmek9IdjBQMkRQVEE4NTM5MlZEYmpzPSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFWTUFBQUNzQ0FZQUFBREcrRThNQUFBQUlHTklVazBBQUhvbEFBQ0Fnd0FBK2Y4QUFJRHBBQUIxTUFBQTZtQUFBRHFZQUFBWGI1SmZ4VVlBQUFBSmNFaFpjd0FBRDJBQUFBOWdBWHA0UlkwQUFBeWdTVVJCVkhoZTdaMS9iSlRsSGNCdmpoak5jQzRPK2RYZVhWdFVUTXppUDdvWVhaWTUxSWtLZDFmTm5GSGo1b2hCbUE3ajJNUnNab2xteGhoTkpvcnQyNEtnc2lGc2ltN1RBZE1ZUkZRRUZUY1Z4dy9yd0FFRlJDaFErdXVlUGMvMXFRUDNUTnMrMzN2ZXUrdm5rM3pTNDJnZm52ZTl0NTgrNzczWEl3RUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVVFcGtHNi9YUHBuSVJSOGdJaDV0NDFyOWNZYXRCZndQOVEzbjZ4MjBUWnRQMURjcFJNVFBOZGVVMTR1dVZ0Mk1xMjFGQmt4dE1qbXJMcFZxMFI4MzExWlgzMnJ2TG1NS1AyMzBqcW1QM0RzTkVmSHp6RVc3RXhmT0dXbUw4b1drazhrZjFxWFNQWFhWcWFYSlVhUE9xS21xT3JNdW1mcHJiVExWblVxbExyZWZWa1pNbVAxMS9aT2x3N2x6RUJFSG9qbXJ6VVpUYlYzK0wzVmp4MDR3SVIwOWV2VEo0MUtwS2RvYmpDTkhqaHcxZHV6WTVMaDBqZEtyMUxQdHA1Y0JKcVNzUmhGUjB0Nmd6clNWY1hHTURxbXFTU1l6K3ZZd0U4NmFxdFMxdGRYcDY4M3R1akZqVWpWams1UDFLclc5OTlQTGdWelU1ZHdaaUlnK21xQmVPcWZPbHVZbzB1bjBjVHFtWGZhUHc4d0sxZDVPNkZQOHQyclQ2VnYwelMrYnNQYmVXK3Jrb28rY093RVJVY0pjZE1EVzVpaXFxNnVQSDVlcTZWdDFGbGFtT3FJNzYxSTEyMDlKMS9SRjlrdmxFZFA2aG04N054NFJVZEpzd3oyMk9wOWlZcXBYbzUzMmoyWmxtai9wcEpPK3FqOTJwOGVNT2QzZWYweDV4RFRYdE0rNTRZaUlrdWFpRGx1ZEkrazloVThuanRPM0N6RTFkNDRZTVdLTXZuM1EzQjQrZXZqSituYmZLcldFNFhXa2lCakt5NXZQc3VYNWxMcFVhbVp0TXIzZjNLNnRUcjVUdUZOVGwwdytXcE5LM2F6L3JxTzJPajNOM2wyaVRJNm1PamNZRWJFWTVwcWV0ZlU1aXJycTFETzF5ZFNCY1ZXcEcreGRpYnFxNUF5ek90WDNMN1IzbFREMTBYTG5CaU1pRnNOY1UrSFUzVVZ5VlBJTUhkV1ZwOVhXcVZOcmF2UDY5dktxRVZXbjJyOHVjZXFqL2M0TlJrUXNocm1vakY0dk9oQ0lLU0tHMUgwUnFnSWdwb2dZVW1LS2lDZ2dNVVZFRkpDWUlpSUtTRXdSRVFVa3BvaUlBaEpUUkVRQmlTa2lvb0RFRkJGUlFHS0tpQ2dnTVVWRUZKQ1lJaUlLU0V3UkVRVWtwb2lJQWhKVFFTOTdXQ1V1ZUVBbExwd2RWdk52NWlMM25BYnI5eDUwLzF2RjlpS3RhejRETWE3SHdEeitydm4weDZ4Ky9PS1lkekUwMjNHUlBuN01NWFNwM2llVEc5M2JYR2tTVXpsdm52dXlpb3ZqcnB6bm5OT2cxQWYvdXMyNzdNaGgyZm5Kb2Q1dlFOZTgrcVArSm82TGFkRXE5NXo2NGRldVhXQkhxUXc2dTN0VVczdW4ycnhqbjFxOVlhZGFzbnF6dXFuNVpYWHlOUXRVNHVLSFZDSlRnWUVscG5LYWI2YTRxSlNZZnJUblFObkc5SWFIWDNMUHFSK2VxQ016Vk5pei83QmE4ZFpXZGVWOXo2dkVCTDJLclpTd0VsTTVpYWsveEhSbzBkblZvNTVkOTZFYWYrTWl2NmRKU2tGaUtpY3g5WWVZRGwzZWJ0bWp6cHUxMU8veGoxTmlLaWN4OVllWXdodGJkcWxUcHVxVnFya281OWhYSlNzeGxaT1kra05Nd3pQcnNUWHF6c1Z2cUx1V3ZLRXlkeTlUdVh1V3ExOHVmTDF3MzcxTDE2c1Y2N2NWTGlhRnBDZWZWNCsrK0UrVnVHQzJjMytWcE1SVVRtTHFEekVOVDJMQ2IvVXFzRkVsTWczL25aTzVLRlM0VHp0SlB4Nlh6bEZWVXhhcUtYTldxby9iRHR1dkxENjcyOXJWTjM2NnhJVHFxUDFWa2hKVE9ZbXBQOFEwUElYWGhqcm01RlJIN1pqSkRlcU8zNisxWDExOHVudDYxQzJQck5iSDVSR3hMMFdKcVp6RTFCOWlHcDRCeGJSUEhiWkpkeSt6STRSaC9ndnZGMWJJenZtVWdzUlVUbUxxRHpFTno2Qmlhc3cwcWgvcjAvNlFQUG5xQjM3SFJ6RWxwbklTVTMrSWFYZ0dIVk5qTmxKLy8zQ1BIU2tNVDcvV1VwcEJKYVp5RWxOL2lHbDR2R0txSGYrVHhYYWtjUHp4RmIxQ0xiWG5VSW1wbk1UVUgySWFIdCtZbXFpOXQyMnZIUzBjUDF2d3FucytjVWxNNVNTbS9oRFQ4SGpITkJlcDgyNS8ybzRXam53K3I4WlBYK3llVXh3U1V6bUpxVC9FTkR6ZU1kVis1YXBIN0doaDJYZXdRMlQrSWhKVE9ZbXBQOFEwUENJeG1tUk85VCt4STRibG1UVXRoZFd4YzE0aEphWnlFbE4vaUdsNFJHS2FqZFF0ODE2eEk0Wm4rRldDeC85Z0phWnlFbE4vaUdsNHBFNlR6NXl4eEk0WW52Yy8ydHY3NjYrT2VRV1RtTXBKVFAwaHB1R1JpdW5vNngrM0k4YkRpT3NlZGM0cm1NUlVUbUxxRHpFTmoxUk1oMTNSYkVlTUIzUE14dnJjS1RHVms1ajZRMHpESXhWVGN4R3FxN3ZiamhxZXJ1NGV1VzBaak1SVVRtTHFEekVOajFpQTlIR3pkbE9ySFRVZWJwMGY0d3Y1aWFtY3hOUWZZaG9lc1pobUd0WENsUnZ0cVBHd2JiYytmdUo2aDM1aUtpY3g5WWVZaGtjc3BqcGl0ejIyeG80YUQrMGRYU294TWFhMzZTT21jaEpUZjRocGVDUmpHdWRyVGZ1STdhbytNWlV6enBoKzUxZC9VdWZPZWxyRWIvNzhLYlVoaGpldU1CRFQ4SWpGTktiZjBmOHN0ejIreGoyL1lrdE01WXd6cHBVQ01RMlBXRXkxNTl5MjFJNGFINnZlM2U2Y1c5RWxwbklTVTMrSWFYZ3FMYVpiNDdvSVJVemxKS2IrRU5Qd1ZGcE10Kzg5MlB1L3Fqcm1WMVNKcVp6RTFCOWlHcDVLaSttdWZlMHFsbmZoSjZaeUVsTi9pR2w0S2kybWhmYzR2Y3pqR0Jxc3hGUk9ZdW9QTVExUHhaM21mOHhwdml6RXRDd2hwdUdwdEpqdTJIdUltSXBDVE1zU1locWVTb3ZwQnp2M203QTU1MWRVaWFtY2NjYlV2TUhFNjBLdTJiaFRIV2p2c2lPSGhaaUdwOUppdW1UMVp1ZmNpaTR4bFRQT21CNXJmaEtiSjkwbHZQZ2g5ZnJHZU43OWg1aUdSeXltSmZJYlVQWDNMSGZQcjlnU1V6bmpqQ20vbTI4bHBnTkdMS1lsOHJ2NXNaemlHNG1wbk1UVUgySWFIc21ZVG8vNXVzSCtRNTI5WjFldStSVmJZaW9uTWZXSG1JWkhMS2FaUnJYb3BVMTIxSGhZMzdLYmxhazR4SFR3RXROQlFVd2IxWXIxMit5bzhYRDJ6S1h1dVlXUW1NcEpUUDBocHVFUmkrbmtCdFg2eVNFN2FuamEydlVwL2lVeHZURzBrWmpLU1V6OUlhYmhrWHpPTkU2ZVdMWEpQYTlRRWxNNWlhay94RFE4VWpFOThacjVkc1R3OVBUazQzbmJ2U01scG5JU1UzK0lhWGlrWW5ycTlDZnNpT0g1eTdwL21aZzU1eFZNWWlvbk1mV0htSVpISktZNlpKZmMrWndkTVN5SE83djFNUlBqYzZWOUVsTTVpYWsveERROElqSE5OS29scTdmWUVjTXlyWEdWZTA2aEphWnlFbE4vaUdsNFJHSWEwOFduVGR2M3hmY2kvYzlLVE9Va3B2NFEwL0JJeEhUOHRFVjJ0SEMwZCtqVGUzMnN1dVlUaThSVVRtTHFEekVOajNkTTlTbiszT2MzMk5IQ1lLN2Vuelh6U2ZkODRwS1l5a2xNL1NHbTRmR042ZkFmekxNamhXUEd2SmVkYzRsVllpb25NZldIbUliSEs2YVRHOVRjdjRWZGxkNitjSTBKbDNzK2NVcE01U1NtL2hEVDhBdzZwdGxJblgvSG4rMG9ZYmlwZVZVOC95VkpmeVNtY2hKVGY0aHBlQVlWMDB5RE92ZjJaK3dJeGFlN0o2OStOUHZGMGx5UjlrbE01U1NtL2hEVDhQUTdwaVprK3JUZUhHdjNQclhlZm5YeE9kamVxY1pOWGVTZVV5bEpUT1VrcHY0UTAvQWt2blYvNzdzdGZkYUpENmxoVnpTckU2K2VyMDYvYWJISzNMMWMvU0h3Qy9PWHZibTFNQS9YUGlzNWlhbWN4TlFmWWdxR2c0YzcxVlgzUDE5WUNidjJWMGxLVE9Va3B2NFEwNkZOUjFlM2Vualp1eXJ4M1FlYys2bWtKYVp5RWxOL2lPblFwTDJ6U3pXdDJOQjdTbC9LRjVrK1QySXFKekgxaDVnT0hmTDV2SHE3WlkrYU1tZWxTbHlnVjZMbEd0RStpYW1jeE5RZllsclpmTngyV0sxNmI0ZTYwYnpUVTdaUkpTWjVQTmFsSmpHVmM5SnZscW5sYjI0dFhJRU02Y3AzL3EyTy9mNWM1NXdHWmFaUlBmanNQNXovVnJIOTNjcU4raHZNNDZMRHhEbnFwWGUzTzhjdXBpdmUycVl1dWVzNTk1ejY0UWxYejFlNzk3ZXJsdGEyaXZETkxidlYyazJ0aFgzejZ5Zldxb2wzUHFkT01EL3dMOWFuOGZxSHRXc2ZsTDNFRkxFRU5LZTQ1dVZJWmxWZTdwcnRNRmZoeStsS3ZJVEVGQkZSUUdLS2lDZ2dNVVZFRkpDWUlpSUtTRXdSRVFVa3BvaUlBaEpUUkVRQmlTa2lvb0RFRkJGUlFHS0tpQ2dnTVVWRUZKQ1lJaUlLU0V3UkVRVWtwb2lJQWhKVFJFUUJLemFtdWFqVnVjR0lpTVh4b0sxUGhaRnRhSEpzTENKaWNjeEZ1Mng5S293cm1zYzdOeGdSc1JobW9sL1krbFFnNWprTTEwWWpJa3FhaS9LMk9oVktydWtGNTRZaklrcWFpM2JZNmxRd3VhamJ1ZkdJaUJMbXRPZmNkN3d0VGdXVGk2WTdkd0Fpb29TNWFKbXR6UkNnUG5yTnVSTVFFWDNNUnEyMk1rT0liT05HNTg1QVJCeU11YVlLZlNsVWY4aEZpL1FPeU91VnFudm5JQ0ora2ViS2ZYM1RXbHVWSVV3Mk9rMnZVbHVKS2lJTzJGeTBONUZ0dXM3V0JBcVlxTlpINi9USGZUcXNuWW42WnIyekVCR1AwS3hDczFHYmJzU1dSS1poZ3EwSEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVCcGtVajhCNEFvbStNYlQrM0pBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6ImM4MGRiZDlhNTMzZjRhMTdiOTQxMWEyZjFjN2NlZGZmIiwib3B0aW9ucyI6eyJyayI6dHJ1ZSwiY2xpZW50UGluIjp0cnVlfSwicGluVXZBdXRoUHJvdG9jb2xzIjpbMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6NSwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjo4MH19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIzLTAxLTIwIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMwLCJ1cmwiOiJodHRwczovL3d3dy5oaWRnbG9iYWwuY29tLyIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiSElEIENyZXNjZW5kbyBDMzAwMCIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjMwMTIwMDAyIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjMtMDEtMjAiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzB9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjMtMDEtMjQifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyIwMGM0M2ZmY2M4YTk3Nzg4ZjI4YWVjMDg2NGMwOWNkZDM3YWEzN2Y4Il0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjAwYzQzZmZjYzhhOTc3ODhmMjhhZWMwODY0YzA5Y2RkMzdhYTM3ZjgiXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ill1YmlLZXkgNSBTZXJpZXMgd2l0aCBMaWdodG5pbmcgKEVudGVycHJpc2UgUHJvZmlsZSkifSwiZGVzY3JpcHRpb24iOiJZdWJpS2V5IDUgU2VyaWVzIHdpdGggTGlnaHRuaW5nIChFbnRlcnByaXNlIFByb2ZpbGUpIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3MywicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoyfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCIsInJlbW90ZV9oYW5kbGUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlETXpDQ0FodWdBd0lCQWdJVVNPRWpUZi8veXFSZlBXN1FxOHF0SXlDckFnOHdEUVlKS29aSWh2Y05BUUVMQlFBd0x6RXRNQ3NHQTFVRUF3d2tXWFZpYVdOdklFWkpSRThnVW05dmRDQkRRU0JUWlhKcFlXd2dORFV3TWpBek5UVTJNQ0FYRFRJME1EVXdNVEF3TURBd01Gb1lEekl3TmpBd05ETXdNREF3TURBd1dqQXZNUzB3S3dZRFZRUUREQ1JaZFdKcFkyOGdSa2xFVHlCU2IyOTBJRU5CSUZObGNtbGhiQ0EwTlRBeU1ETTFOVFl3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRQ2R2bDI3dzJndTFmUFhlRUZiSWRxeDBCYWx2VkRWV3JRUEo3SHF2aXVFdFpIbHhTTHhTRnRjWHBUb2x2THZvZjhmNHRNZXJRVGtWR3pjbVl6bTFFQlQ0SUp1TW1vRXFma0VFaFdwc0FETUZyalprcWxaWTlFcXhRekxvVkVFb25FNW9HeFNkVkN4Q2NMSWFja3B5Ui9DQ1h2ajFCdC9oVGdFOWhUbEY0cFJxeE1reDNwbEY3eThkRFpsUkhXczd2Ym5obUJDR2VJMFpQRVE2bmwybUNnMnI3NGFkRjJ1Nks5cnJMZmhCQzNRTEU4RVByZ3FVc0kraGt1cTJ0SzRNMlNNT3A4dVVWVmtxVWV1M2gwa3IzV1ZJMFcwMnBrZ3JPZ2lGS0xGTmtTcmJZaGRqTUJEajVpem1xZmM5eEpSS29EWDYxMnFkOFpHVkhwVDVBWUZYKzFoQWdNQkFBR2pSVEJETUIwR0ExVWREZ1FXQkJUWnlVNURpUS9hMlVFZ0U3cUJLMHpoSXNSTlJqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUFNQTRHQTFVZER3RUIvd1FFQXdJQkJqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFYdm5CNFNMdVVKZllNU1ZHQWhzc0wvU21XbGkzRlNjY2d4eWR2S2xBQ2NpZElJV0tRcWEzcS9RU1VFUXpDOURnRWZNZ3I3aUMxQmtUWmJJTGJvVjZVWjVrbk5zdmpFWld1TWVvZ0o4dGdaczFoVnZLd1ppendKK21FY21zamhJckJZdW9MMVQ2eXJPSnZLRmcxanYrQ3k0WndBOUJway9WM1VPaXIxVnlLOGRDdHlIdTZ2Zm9zb3RBZFl4OEZBdVIyNDNnUlRNVjZKeDhKZGlnMkpESUFRTWx6VmVEcFNVSFgvSzJIWFJIeEh3ZmdqYmdVampCdS83MnI4T2ZlaHloekhYSTNLOENGRmRmbE8rOG5FT0pLM3k4RjFpdmdTNXVOLzhTbWNZdy9TVFFZd2hyeFB1d3ozblA4YmFNdW00QkIybm5ZbXBCNjBzWDNibDVrOFFVU3c9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFmQ0FZQUFBQ0dWcytNQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUhZWUFBQjJHQVYyaUU0RUFBQWJOU1VSQlZGaEhwVmQ3VE5WMUZELzNkNTl3ZVFTSWdTOUFRQVhjRkxBUVppOWZwZVZ6MXRZL1dUWnI1V3hwYzdXNWtuTGE1akkzWjg1c3JTMm5NMnNqdFd3WlM3SVVINEg0eENuRVF4NERBWkY3NFY3dXM4ODV2OS9sSW5CdlZKL0I0UHY5bnUvNW51LzVudk01NTZmekEvUXYwSGIvSXJYM1ZGS1BvNDVjbm00aW5VSVdZd0xGUm1aUVV1d2pGRy9OMWlSSGgxRVowTlJWUnVkcXQxQmQrMm5TS3lTL09oeXMwK2xrM2UvM2tROXF2RDRaVXRhNFZWU1V1WTBlaXB5aVRoQWZvY29PUlZnRHV1dzNxS1JpQWQzcmJjRXRqVGpZSW9mNldhSHNDbXpWUFdDTXgrY2doOHRMcVdNS2FNV3NVakxxbzJSdEpJUTBvT3ptZXJwUXU0ZXNaZ3NPTmtHeEg3ZDBrZHZUVDE3czRPTVU3Vkk4WmhqZ0dhTStBcTlpRU51OFBpZjF1ZHowN013dktXZjhHbFZvQ0VZMDRQQzVXZFRhWFlGYlI4dk52TDUrM0tnZmI1eE5NeWE5UmFtSml5bmFNbEdUVnRGbHI2YmE5dStwcW5FWDR1TXVSUmdqU1lFaHJON3V0RkZlNmxxYWw3TmZrdzVpbUFHSHluUHBiazhWbVkweHN0bnB0bEZDVkNZdHpUdUJOODNRcE1MalR0ZXZkUHpTVW5KN2U4bWtqeFozOWZYYktEZmxkWnFidlUrVFVnR25CVkY2ZlEyaVBIZzRXMTZVV1V3dnpiazE2c01aRStQbjBwdno3SlNldUF5ZXM4bGNwQ21hS3VvL3ArcVdyMlVjd0lBSFdydlAwWUV6aFhBdExBYnNzSGhwN2lHYW12eWlqUDhyeXFyWFVXWDlYb293eHlBdWZOQnJwNDNQT0JGWFpsa2Y4TURSaXFjcHlvd0F3cHV6MngrZld2ei9EdGRlOXNtc3p5Z3RjUjZDMXdiZHpCbDZPbHE1V05ZWTRvR2F0aEpNcmtURXgwakFSU0hBVnMrNXJZa1FOWGIrUWdmUExzUTZnWHlJbnNyZVFmbXBtN1JWRllmTDg2bjFmaVVPa1l2U2hrVVB4dmJ1a3pveTZLMWloTTFobzNYelc2RXZTZlhBK2RwaVdHYVdkK2RvWHpMem1Hd0tZRkxDQXNSQWxQQkFoTWxDRlhVN3RCVVZQcjhIZ1ZjSkhXcStGMDBwbHIrRE1UZHJQNHp2eFkxMWtOTWh4VCtTZVRHZytkNFY1TFFKaXR5VUdKTkI4VkZac2pnWUJaTS9JSS9YQ1RrajBxeURPcEYyQVZRMTdDSWpVcC9EblQxVWtMNUY1Z2RqK3NTMXdnMWdFM2dpZ202MGZDWHpTblBYYnlBUGJJWHYrSURwRTE2VGhhSElTOXNreWhsbU1FNUYzY2ZxQUtocTJDMEU1UEgxZ1lhWGFMUERrWkcwSERKT25LV0hwNTFJMHo1U091eDhlMVdBdVp6ZEhRclRrcDhUbWpYb0krbGEwd0dac3p1YnFiTzNpZlE2QS9XN3ZWU1lzVjNtUjBKS3drS2M0V0hpQmttUjhJM0NDZ0k4N29PTDRxelQ1UCtSVUpCZWpFT2dBUEs4aFlQemF0TStlSVRwMklPOXlUUW1lcm9tUFJ4eDFxeEFjc2lsZS91YlNlRWJjV1FHWUVDZ2hjTFkySHlLam9nakgyNWhNcGpwVXYxT3VnbGk0ZWgyZVJ3ME8zMmJKamt5dUNnTnpnMHZ6bFlNU2lTczB1b280TUc3aE1PakNFYVgxeUZFMG5TdmpCenVUbkVwSzg2WjhJb3FGQUl1Ync4a2c5QXJFYVJFV1NaSStqSDRYYnA2ZzlFOUVuSlQzb2FSekROK01VSkJRREhuNTZhOG9VbUVCdXNPeEJzL041K3RKRWJQa0FGRGo4VUd2T3MvSVd2Y1NnbEdCaHZTNy9GVFlmcFdHWWREWThmUEF4V1NBMzVzVEM0cDQrTG00QWFxSW9QZVF0ZnVmSzZKaDBaaHhsYnNVWE9TbVhOaWZENVpUQWt5RG9mYmJjY2x4bkE4V05BcXhDYlJOeWtoWHhRcGFEdzY3ZlhVWWJzaUcwS2h0djJvZUl2aDhyaFFNWU9jRUFxWEcvZUkrem5nT2M1eXhyOHE4MklBTTFjL0ZMRk9wbHF1NWVGUVhyTVp6R2NWQ2pZYkxXRzVJNEJUMWV1UnJsYnh0Tk90TWl0RERFaExYSUl5bkFBdnVPRVdFM1gzTmRBZnQ5NFZnYUc0MlhJUXQwWlg2UGVDRS9xUUZlOXJLNkh4N1lVNTBLdkg3Zlc0ZlMrcTdLS0JKeHNnZ0JYNXBTQUdoMWpJclZoNXpRNnczUmZhYWhCWG0vYUNiQ1pUakNVRlVUeVdacVc5cDYyTWpKUFhWcU9yUGdNTzROdjc0R2tmK293ZnROVkJEUW5qRkpxSFN3MTdwWHZoV1c1S1pxZS9RNDlOL1VTVENBVldvUVhGSUhCSFhYZTNGUHJVRHN1R0RtdEYvaEhLVEhwZWt4aGlBT1BJK1NKcTZTNkhGNEk5WVd6a0JKVG80NmlVTXpXcDhQaXIvUmlkdUx4S1lzU2tzVjh2TGxPUXZoR1gyWWxSME9CaEJqQyt1L2dFY3ZZMEFwSzdZazQxTnhqUFNRbldGSFRGNjZVcmpnZXZCOEN1NWErbDJ2WVNSUHR1VkRvNzNoaGRNU0huVVg3dFRqc1ZaR3hBbC9XcHRpT0lFUTFnbkwyOW1YNi90UjF0bWxrWWo4VzRYK0NTaldjVURHWTFOcFMvQzdoU0txaU1MTS9sMlFtU1daNzNEZHorZ2lvOEJDRU5ZUFE0NnFua3p3WFVicXZCa3hqVVFzV2ZaRmdidW8zckFmK3dON2pPTzkwK3lueDRQaTNMKzBuWUwxU2NoRFVnQVA0Z1BWLzdJZDFxKzFIU2htdUdrSXFXUlBneXhNRnFQOEhmalRualh3WTViUWZiSmN0Nk9JektnTUhvdEYvSGUxZWdzYXhIU3FHNndmZG1RNXg4TnlURkZxQmNwMmlTb3dIUjN5azUrMzZoRjd2WEFBQUFBRWxGVGtTdVFtQ0MifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMC0xMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzMsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWXViaUtleSA1IFNlcmllcyB3aXRoIExpZ2h0bmluZyAoRW50ZXJwcmlzZSBQcm9maWxlKSIsImNlcnRpZmljYXRlTnVtYmVyIjoiVTJGMTAwMDIwMjQxMDEyMDA5IiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMTAtMTIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDczfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI0LTExLTEyIn0seyJhYWd1aWQiOiIwYjhiMDVhNC1lYmQ0LTRiMGItOGY1Zi0zM2Q3YjZlNjA2YWIiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjBiOGIwNWE0LWViZDQtNGIwYi04ZjVmLTMzZDdiNmU2MDZhYiIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJISUQgQ3Jlc2NlbmRvIDQwMDAifSwiZGVzY3JpcHRpb24iOiJISUQgQ3Jlc2NlbmRvIDQwMDAiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MjYyNjU2LCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX0seyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDL0RDQ0FxR2dBd0lCQWdJVVl2Q2EvdFF0TUFIWDc1cVZQOVFpVm5rVi9hOHdDZ1lJS29aSXpqMEVBd0l3YXpFTE1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBb01Da2hKUkNCSGJHOWlZV3d4SWpBZ0JnTlZCQXNNR1VGMWRHaGxiblJwWTJGMGIzSWdRWFIwWlhOMFlYUnBiMjR4SXpBaEJnTlZCQU1NR2taSlJFOGdRWFIwWlhOMFlYUnBiMjRnVW05dmRDQkRRU0F5TUI0WERUSTBNRFV3TWpFNU1UTXlNRm9YRFRRNU1EVXdNakU1TVRNeU1Gb3daakVMTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFvTUNraEpSQ0JIYkc5aVlXd3hJakFnQmdOVkJBc01HVUYxZEdobGJuUnBZMkYwYjNJZ1FYUjBaWE4wWVhScGIyNHhIakFjQmdOVkJBTU1GVVpKUkU4Z1FYUjBaWE4wWVhScGIyNGdRMEVnTmpCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQkxSMHNTYUNVaVF6WDBZdk5ic3hqWlBxMm9SS2sxcGZPZWxETDZBc0x1WnZZa2tQS3dseVJ6OGxOUHJTbWFWZVYzZ1J5cEpsOWJEZjRkdG12ME1uNVl5amdnRW1NSUlCSWpBT0JnTlZIUThCQWY4RUJBTUNBWVl3RWdZRFZSMFRBUUgvQkFnd0JnRUIvd0lCQURBZkJnTlZIU01FR0RBV2dCUzc2RHBsOTN2QjJoNUZETHZ5TU12VUJ5ajNpekFkQmdOVkhRNEVGZ1FVa2N6T01DdzdoUG40MHpac2hDYWFzR1FLdldNd1JBWURWUjBmQkQwd096QTVvRGVnTllZemFIUjBjRG92TDJOeWJDNW9lV1J5WVc1MGFXUXVZMjl0TDBaSlJFOUJkSFJsYzNSaGRHbHZibEp2YjNSRFFUSXVZM0pzTUhZR0NDc0dBUVVGQndFQkJHb3dhREEvQmdnckJnRUZCUWN3QW9ZemFIUjBjRG92TDJOeWJDNW9lV1J5WVc1MGFXUXVZMjl0TDBaSlJFOUJkSFJsYzNSaGRHbHZibEp2YjNSRFFUSXVjRGRqTUNVR0NDc0dBUVVGQnpBQmhobG9kSFJ3T2k4dmIyTnpjQzVvZVdSeVlXNTBhV1F1WTI5dE1Bb0dDQ3FHU000OUJBTUNBMGtBTUVZQ0lRRGFFY0ZJbTdsN2JwdnRRUXZYdmRFWS8rRzRHSFlUZHJuQkNZZjlqbU9zb3dJaEFKSXlGclRNYjVOSXpBSS8vV0RPc1lybGtEUHBmVVBMaXhaMGErb2VDbVJQIl0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQVZNQUFBQ3NDQVlBQUFERytFOE1BQUFBSUdOSVVrMEFBSG9sQUFDQWd3QUErZjhBQUlEcEFBQjFNQUFBNm1BQUFEcVlBQUFYYjVKZnhVWUFBQUFKY0VoWmN3QUFEMkFBQUE5Z0FYcDRSWTBBQUF5Z1NVUkJWSGhlN1oxL2JKVGxIY0J2amhqTmNDNE8rZFhlWFZ0VVRNemlQN29ZWFpZNTFJa0tkMWZObkZIajVvaEJtQTdqMk1Sc1pvbG14aGhOSm9ydDI0S2dzaUZzaW03VEFkTVlSRlFFRlRjVnh3L3J3QUVGUkNoUSt1dWVQYy8xcVFQM1ROcyszM3ZldSt2bmszelM0MmdmbnZlOXQ1OCs3NzNYSXdFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBVUVwa0c2L1hQcG5JUlI4Z0loNXQ0MXI5Y1lhdEJmd1A5UTNuNngyMFRadFAxRGNwUk1UUE5kZVUxNHV1VnQyTXEyMUZCa3h0TWptckxwVnEwUjgzMTFaWDMycnZMbU1LUDIzMGpxbVAzRHNORWZIenpFVzdFeGZPR1dtTDhvV2trOGtmMXFYU1BYWFZxYVhKVWFQT3FLbXFPck11bWZwcmJUTFZuVXFsTHJlZlZrWk1tUDExL1pPbHc3bHpFQkVIb2ptcnpVWlRiVjMrTDNWangwNHdJUjA5ZXZUSjQxS3BLZG9iakNOSGpodzFkdXpZNUxoMGpkS3IxTFB0cDVjQkpxU3NSaEZSMHQ2Z3pyU1ZjWEdNRHFtcVNTWXordll3RTg2YXF0UzF0ZFhwNjgzdHVqRmpValZqazVQMUtyVzk5OVBMZ1Z6VTVkd1ppSWcrbXFCZU9xZk9sdVlvMHVuMGNUcW1YZmFQdzh3SzFkNU82RlA4dDJyVDZWdjB6Uytic1BiZVcrcmtvbytjT3dFUlVjSmNkTURXNWlpcXE2dVBINWVxNlZ0MUZsYW1PcUk3NjFJMTIwOUoxL1JGOWt2bEVkUDZobTg3Tng0UlVkSnN3ejIyT3A5aVlxcFhvNTMyajJabG1qL3BwSk8rcWo5MnA4ZU1PZDNlZjB4NXhEVFh0TSs1NFlpSWt1YWlEbHVkSStrOWhVOG5qdE8zQ3pFMWQ0NFlNV0tNdm4zUTNCNCtldmpKK25iZktyV0U0WFdraUJqS3k1dlBzdVg1bExwVWFtWnRNcjNmM0s2dFRyNVR1Rk5UbDB3K1dwTkszYXovcnFPMk9qM04zbDJpVEk2bU9qY1lFYkVZNXBxZXRmVTVpcnJxMURPMXlkU0JjVldwRyt4ZGlicXE1QXl6T3RYM0w3UjNsVEQxMFhMbkJpTWlGc05jVStIVTNVVnlWUElNSGRXVnA5WFdxVk5yYXZQNjl2S3FFVlduMnI4dWNlcWovYzROUmtRc2hybW9qRjR2T2hDSUtTS0cxSDBScWdJZ3BvZ1lVbUtLaUNnZ01VVkVGSkNZSWlJS1NFd1JFUVVrcG9pSUFoSlRSRVFCaVNraW9vREVGQkZSUUdLS2lDZ2dNVVZFRkpDWUlpSUtTRXdSRVFVa3BvaUlBaEpUUVM5N1dDVXVlRUFsTHB3ZFZ2TnY1aUwzbkFicjl4NTAvMXZGOWlLdGF6NERNYTdId0R6K3J2bjB4NngrL09LWWR6RTAyM0dSUG43TU1YU3AzaWVURzkzYlhHa1NVemx2bnZ1eWlvdmpycHpubk5PZzFBZi91czI3N01oaDJmbkpvZDV2UU5lOCtxUCtKbzZMYWRFcTk1ejY0ZGV1WFdCSHFRdzZ1M3RVVzN1bjJyeGpuMXE5WWFkYXNucXp1cW41WlhYeU5RdFU0dUtIVkNKVGdZRWxwbkthYjZhNHFKU1lmclRuUU5uRzlJYUhYM0xQcVIrZXFDTXpWTml6LzdCYThkWldkZVY5ejZ2RUJMMktyWlN3RWxNNWlhay94SFJvMGRuVm81NWQ5NkVhZitNaXY2ZEpTa0ZpS2ljeDlZZVlEbDNlYnRtanpwdTExTy94ajFOaUtpY3g5WWVZd2h0YmRxbFRwdXFWcXJrbzU5aFhKU3N4bFpPWStrTk13elByc1RYcXpzVnZxTHVXdktFeWR5OVR1WHVXcTE4dWZMMXczNzFMMTZzVjY3Y1ZMaWFGcENlZlY0KysrRStWdUdDMmMzK1ZwTVJVVG1McUR6RU5UMkxDYi9VcXNGRWxNZzMvblpPNUtGUzRUenRKUHg2WHpsRlZVeGFxS1hOV3FvL2JEdHV2TEQ2NzI5clZOMzY2eElUcXFQMVZraEpUT1ltcFA4UTBQSVhYaGpybTVGUkg3WmpKRGVxTzM2KzFYMTE4dW50NjFDMlByTmJINVJHeEwwV0pxWnpFMUI5aUdwNEJ4YlJQSGJaSmR5K3pJNFJoL2d2dkYxYkl6dm1VZ3NSVVRtTHFEekVOejZCaWFzdzBxaC9yMC82UVBQbnFCMzdIUnpFbHBuSVNVMytJYVhnR0hWTmpObEovLzNDUEhTa01UNy9XVXBwQkphWnlFbE4vaUdsNHZHS3FIZitUeFhha2NQenhGYjFDTGJYblVJbXBuTVRVSDJJYUh0K1ltcWk5dDIydkhTMGNQMXZ3cW5zK2NVbE01U1NtL2hEVDhIakhOQmVwODI1LzJvNFdqbncrcjhaUFgreWVVeHdTVXptSnFUL0VORHplTWRWKzVhcEg3R2hoMlhld1EyVCtJaEpUT1ltcFA4UTBQQ0l4bW1STzlUK3hJNGJsbVRVdGhkV3hjMTRoSmFaeUVsTi9pR2w0UkdLYWpkUXQ4MTZ4STRabitGV0N4LzlnSmFaeUVsTi9pR2w0cEU2VHo1eXh4STRZbnZjLzJ0djc2NitPZVFXVG1NcEpUUDBocHVHUml1bm82eCszSThiRGlPc2VkYzRybU1SVVRtTHFEekVOajFSTWgxM1JiRWVNQjNQTXh2cmNLVEdWazVqNlEwekRJeFZUY3hHcXE3dmJqaHFlcnU0ZXVXMFpqTVJVVG1McUR6RU5qMWlBOUhHemRsT3JIVFVlYnAwZjR3djVpYW1jeE5RZllob2VzWmhtR3RYQ2xSdnRxUEd3YmJjK2Z1SjZoMzVpS2ljeDlZZVloa2NzcGpwaXR6MjJ4bzRhRCswZFhTb3hNYWEzNlNPbWNoSlRmNGhwZUNSakd1ZHJUZnVJN2FvK01aVXp6cGgrNTFkL1V1Zk9lbHJFYi83OEtiVWhoamV1TUJEVDhJakZOS2JmMGY4c3R6Mit4ajIvWWt0TTVZd3pwcFVDTVEyUFdFeTE1OXkyMUk0YUg2dmUzZTZjVzlFbHBuSVNVMytJYVhncUxhWmI0N29JUlV6bEpLYitFTlB3VkZwTXQrODkyUHUvcWpybVYxU0pxWnpFMUI5aUdwNUtpK211ZmUwcWxuZmhKNlp5RWxOL2lHbDRLaTJtaGZjNHZjempHQnFzeEZST1l1b1BNUTFQeFozbWY4eHB2aXpFdEN3aHB1R3B0Smp1Mkh1SW1JcENUTXNTWWhxZVNvdnBCenYzbTdBNTUxZFVpYW1jY2NiVXZNSEU2MEt1MmJoVEhXanZzaU9IaFppR3A5Sml1bVQxWnVmY2lpNHhsVFBPbUI1cmZoS2JKOTBsdlBnaDlmckdlTjc5aDVpR1J5eW1KZkliVVBYM0xIZlByOWdTVXpuampDbS9tMjhscGdOR0xLWWw4cnY1c1p6aUc0bXBuTVRVSDJJYUhzbVlUby81dXNIK1E1MjlaMWV1K1JWYllpb25NZldIbUlaSExLYVpSclhvcFUxMjFIaFkzN0tibGFrNHhIVHdFdE5CUVV3YjFZcjEyK3lvOFhEMnpLWHV1WVdRbU1wSlRQMGhwdUVSaStua0J0WDZ5U0U3YW5qYTJ2VXAvaVV4dlRHMGtaaktTVXo5SWFiaGtYek9ORTZlV0xYSlBhOVFFbE01aWFrL3hEUThVakU5OFpyNWRzVHc5UFRrNDNuYnZTTWxwbklTVTMrSWFYaWtZbnJxOUNmc2lPSDV5N3AvbVpnNTV4Vk1ZaW9uTWZXSG1JWkhKS1k2WkpmYytad2RNU3lITzd2MU1SUGpjNlY5RWxNNWlhay94RFE4SWpITk5Lb2xxN2ZZRWNNeXJYR1ZlMDZoSmFaeUVsTi9pR2w0UkdJYTA4V25UZHYzeGZjaS9jOUtUT1VrcHY0UTAvQkl4SFQ4dEVWMnRIQzBkK2pUZTMyc3V1WVRpOFJVVG1McUR6RU5qM2RNOVNuKzNPYzMyTkhDWUs3ZW56WHpTZmQ4NHBLWXlrbE0vU0dtNGZHTjZmQWZ6TE1qaFdQR3ZKZWRjNGxWWWlvbk1mV0htSWJISzZhVEc5VGN2NFZkbGQ2K2NJMEpsM3MrY1VwTTVTU20vaERUOEF3NnB0bEluWC9Ibiswb1liaXBlVlU4L3lWSmZ5U21jaEpUZjRocGVBWVYwMHlET3ZmMlord0l4YWU3SjY5K05QdkYwbHlSOWtsTTVTU20vaERUOFBRN3BpWmsrclRlSEd2M1ByWGVmblh4T2RqZXFjWk5YZVNlVXlsSlRPVWtwdjRRMC9Ba3ZuVi83N3N0ZmRhSkQ2bGhWelNyRTYrZXIwNi9hYkhLM0wxYy9TSHdDL09YdmJtMU1BL1hQaXM1aWFtY3hOUWZZZ3FHZzRjNzFWWDNQMTlZQ2J2MlYwbEtUT1VrcHY0UTA2Rk5SMWUzZW5qWnV5cngzUWVjKzZta0phWnlFbE4vaU9uUXBMMnpTeld0Mk5CN1NsL0tGNWsrVDJJcUp6SDFoNWdPSGZMNXZIcTdaWSthTW1lbFNseWdWNkxsR3RFK2lhbWN4TlFmWWxyWmZOeDJXSzE2YjRlNjBielRVN1pSSlNaNVBOYWxKakdWYzlKdmxxbmxiMjR0WElFTTZjcDMvcTJPL2Y1YzU1d0daYVpSUGZqc1A1ei9Wckg5M2NxTitodk00NkxEeERucXBYZTNPOGN1cGl2ZTJxWXV1ZXM1OTV6NjRRbFh6MWU3OTdlcmx0YTJpdkROTGJ2VjJrMnRoWDN6NnlmV3FvbDNQcWRPTUQvd0w5YW44ZnFIdFdzZmxMM0VGTEVFTktlNDV1VklabFZlN3BydE1GZmh5K2xLdklURUZCRlJRR0tLaUNnZ01VVkVGSkNZSWlJS1NFd1JFUVVrcG9pSUFoSlRSRVFCaVNraW9vREVGQkZSUUdLS2lDZ2dNVVZFRkpDWUlpSUtTRXdSRVFVa3BvaUlBaEpUUkVRQkt6YW11YWpWdWNHSWlNWHhvSzFQaFpGdGFISnNMQ0ppY2N4RnUyeDlLb3dybXNjN054Z1JzUmhtb2wvWStsUWc1amtNMTBZaklrcWFpL0syT2hWS3J1a0Y1NFlqSWtxYWkzYlk2bFF3dWFqYnVmR0lpQkxtdE9mY2Q3d3RUZ1dUaTZZN2R3QWlvb1M1YUptdHpSQ2dQbnJOdVJNUUVYM01ScTIyTWtPSWJPTkc1ODVBUkJ5TXVhWUtmU2xVZjhoRmkvUU95T3VWcW52bklDSitrZWJLZlgzVFdsdVZJVXcyT2sydlVsdUpLaUlPMkZ5ME41RnR1czdXQkFxWXFOWkg2L1RIZlRxc25ZbjZacjJ6RUJHUDBLeENzMUdiYnNTV1JLWmhncTBIQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUJwa1VqOEI0QW9tK01iVCszSkFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiIwYjhiMDVhNGViZDQ0YjBiOGY1ZjMzZDdiNmU2MDZhYiIsIm9wdGlvbnMiOnsicmsiOnRydWUsImNsaWVudFBpbiI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6dHJ1ZSwiYWx3YXlzVXYiOmZhbHNlfSwibWF4TXNnU2l6ZSI6NTEwLCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjEsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6OTQsInRyYW5zcG9ydHMiOlsibmZjIl0sImZvcmNlUElOQ2hhbmdlIjpmYWxzZSwibWluUElOTGVuZ3RoIjo0LCJmaXJtd2FyZVZlcnNpb24iOjI2MjY1NiwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjMwfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjYtMDEtMTQiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MjYyNjU2LCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IkhJRCBDcmVzY2VuZG8gNDAwMCIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjYwMTE0MDAyIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25Qcm9maWxlcyI6WyJjb25zdW1lciJdLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI2LTAxLTE0IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjI2MjY1Nn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNi0wMi0xMyJ9LHsiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjhkOGVjYzRkYWY0MzI0NDA2YTRkN2UwY2Y4NWY1ZTdkYWM2NWUyMDUiLCI4YTY1ODc4NzZlMjI1NGE3ZWQ5MzZmYWU3ZTg2NGI2MGE5YTE3MGU3Il0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjhkOGVjYzRkYWY0MzI0NDA2YTRkN2UwY2Y4NWY1ZTdkYWM2NWUyMDUiLCI4YTY1ODc4NzZlMjI1NGE3ZWQ5MzZmYWU3ZTg2NGI2MGE5YTE3MGU3Il0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJGZWl0aWFuIGVQYXNzIEZJRE8tTkZDKENUQVAyLjEsIENUQVAyLjAsIFUyRikifSwiZGVzY3JpcHRpb24iOiJGZWl0aWFuIGVQYXNzIEZJRE8tTkZDKENUQVAyLjEsIENUQVAyLjAsIFUyRikiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoyfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCIsInJlbW90ZV9oYW5kbGUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNYekNDQWNHZ0F3SUJBZ0lRWmxyZ1g3aHVmdmxsaVUvekdYaGl4REFLQmdncWhrak9QUVFEQkRCTE1Rc3dDUVlEVlFRR0V3SlZVekVkTUJzR0ExVUVDZ3dVUm1WcGRHbGhiaUJVWldOb2JtOXNiMmRwWlhNeEhUQWJCZ05WQkFNTUZFWkZTVlJKUVU0Z1JrbEVUeUJTYjI5MElFTkJNQ0FYRFRJMU1ERXdNVEF3TURBd01Gb1lEekl4TWpReE1qTXhNak0xT1RVNVdqQkxNUXN3Q1FZRFZRUUdFd0pWVXpFZE1Cc0dBMVVFQ2d3VVJtVnBkR2xoYmlCVVpXTm9ibTlzYjJkcFpYTXhIVEFiQmdOVkJBTU1GRVpGU1ZSSlFVNGdSa2xFVHlCU2IyOTBJRU5CTUlHYk1CQUdCeXFHU000OUFnRUdCU3VCQkFBakE0R0dBQVFBTTNLNFJsYmdLeEJzZkNqR1VRdFNLNjFKQ2FvTStabFhCYThTeE9Id0FJcWJIYTEraTdFbzIzUkd4cmZCeDhlVUJEZUV3U0xZNnlOaE1zWU1jbmh6WDhBQmVhMkdBeTVBeWQvMG8weVRYdDROS09nUlZrdHVXN2ZiQUtwT29iQWVyRGs3ck5PRmo1S0lhZmNYeW00eEFmRHBYRVBJTGlxWEZweXlSclJNay9NRGF5T2pRakJBTUIwR0ExVWREZ1FXQkJTVHZHYTRNNUVlckM1WGdkSXgxZ3N0MG5uZXp6QVBCZ05WSFJNQkFmOEVCVEFEQVFIL01BNEdBMVVkRHdFQi93UUVBd0lCQmpBS0JnZ3Foa2pPUFFRREJBT0Jpd0F3Z1ljQ1FnRmVSQ1hJeEk0bGhzSnM3NksrWlZGV2gzYlRtY3JZRTR5MzZYZGE4OUxHMVdqY3htS3YxQVF1cUZOM1BRbG94UmpmeGZoRk9xTGtxNWtHd0hSMlNhc2M4QUpCU2VVTlNqc0dVdE9PYkw2RTlsMVpmOXdrN1JTV3hIdGxzSDBHalNyRjBDYjJHV0kwMlZLTFdXUHdlWFpTSW5acHdsTnpyQ0JFTnBjRG0xNC9PeVVQV1VnPSIsIk1JSUIyVENDQVg2Z0F3SUJBZ0lRRlFOS1crN3piZy83ZCtsVHlySVd3REFLQmdncWhrak9QUVFEQWpCTE1Rc3dDUVlEVlFRR0V3SlZVekVkTUJzR0ExVUVDZ3dVUm1WcGRHbGhiaUJVWldOb2JtOXNiMmRwWlhNeEhUQWJCZ05WQkFNTUZFWmxhWFJwWVc0Z1JrbEVUeUJTYjI5MElFTkJNQ0FYRFRJeU1EWXdPREF3TURBd01Gb1lEekl3TlRJd05qQTNNak0xT1RVNVdqQkxNUXN3Q1FZRFZRUUdFd0pWVXpFZE1Cc0dBMVVFQ2d3VVJtVnBkR2xoYmlCVVpXTm9ibTlzYjJkcFpYTXhIVEFiQmdOVkJBTU1GRVpsYVhScFlXNGdSa2xFVHlCU2IyOTBJRU5CTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFc0ZZRUVoaUp1cXFuTWdRalNpaXZCalY3REdDVGY0WEJCSC9CN3V2WnNLeFhTaEYwTDh1RElTV1V2Y0V4aXhSczZnQjNvbGRTcmpveDZMOFQ5NE5PenFOQ01FQXdIUVlEVlIwT0JCWUVGRXU5aHlZUnJSeUp6d1JZdm5EU0NJeHJGaU8zTUE4R0ExVWRFd0VCL3dRRk1BTUJBZjh3RGdZRFZSMFBBUUgvQkFRREFnRUdNQW9HQ0NxR1NNNDlCQU1DQTBrQU1FWUNJUUNCME5GUVNOMHo0bFd6L3ljMzZld3JUQ3p0dEsvcUZ2bGFQT0toK1QxbzZ3SWhBUDBvS0tBK2NpY3NEeTNZM24rVmxQOGVCM1BCek1raHZXLzlJU1hDdytWQiIsIk1JSUNYRENDQWIyZ0F3SUJBZ0lRR2dIdFVWdW5taU91MjFxSkx5eGlvREFLQmdncWhrak9QUVFEQXpCTE1Rc3dDUVlEVlFRR0V3SlZVekVkTUJzR0ExVUVDZ3dVUm1WcGRHbGhiaUJVWldOb2JtOXNiMmRwWlhNeEhUQWJCZ05WQkFNTUZFWkZTVlJKUVU0Z1JrbEVUeUJTYjI5MElFTkJNQ0FYRFRJMU1ERXdNVEF3TURBd01Gb1lEekl4TURBeE1qTXhNak0xT1RVNVdqQkpNUXN3Q1FZRFZRUUdFd0pWVXpFZE1Cc0dBMVVFQ2d3VVJtVnBkR2xoYmlCVVpXTm9ibTlzYjJkcFpYTXhHekFaQmdOVkJBTU1Fa1pGU1ZSSlFVNGdSa2xFVHlCRFFTQXdNakIyTUJBR0J5cUdTTTQ5QWdFR0JTdUJCQUFpQTJJQUJHME9aNjlLdFpxd21Eb2hCU0dLb3QwZllSakZyRXFZMzRWWnByUEFXcVdqSUVRaHpmdUE1NGZGR1FpNEdyQWNMVDdTZnQwYkxlYm4rcWFBNWFMdFFjSUdKUDZ2OU5TSS8rQU1KU3U3L3owSFhVWVRKSXJxVnBGalJ5K015d3Zpc0tObU1HUXdIUVlEVlIwT0JCWUVGQ2pBemdUbWdQZGZDelVFRnR1VWk2TlZ5M0JJTUI4R0ExVWRJd1FZTUJhQUZKTzhacmd6a1I2c0xsZUIwakhXQ3kzU2VkN1BNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnRUdNQW9HQ0NxR1NNNDlCQU1EQTRHTUFEQ0JpQUpDQVhDWUNHTVdIVjJxNnd2RzJwbGVHZXNJY1BmVXdqNmsxY3pncituSGNuTXdhTGRxQUQwLytwZk1FckpwSGpMYUNoaFJkenFNbWNEVHNJU2pqa2s4YlNkekFrSUIyQVNxOWR2TkxtZFZJNkphUHgvWW1BQnV6d0h0OHRDaUZ6Tm4rNTg5YkYrQkM5enRQM3gzek00ZWdDd1BLOHYwNlM3Yk1waFBEenUyQnJPWFA2WVNrR1E9Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUZBQUFBQVVDQU1BQUFBdEJrcmxBQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQkhacFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR3L2VIQmhZMnRsZENCaVpXZHBiajBpNzd1L0lpQnBaRDBpVnpWTk1FMXdRMlZvYVVoNmNtVlRlazVVWTNwcll6bGtJajgrSUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWtGa2IySmxJRmhOVUNCRGIzSmxJRFV1Tmkxak1ERTBJRGM1TGpFMU5qYzVOeXdnTWpBeE5DOHdPQzh5TUMwd09UbzFNem93TWlBZ0lDQWdJQ0FnSWo0Z1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNGdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlnZUcxc2JuTTZlRzF3UFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIaHRiRzV6T25Cb2IzUnZjMmh2Y0QwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOXdhRzkwYjNOb2IzQXZNUzR3THlJZ2VHMXNibk02ZUcxd1RVMDlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl0YlM4aUlIaHRiRzV6T25OMFVtVm1QU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2YzFSNWNHVXZVbVZ6YjNWeVkyVlNaV1lqSWlCNGJYQTZRM0psWVhSdmNsUnZiMnc5SWtGa2IySmxJRkJvYjNSdmMyaHZjQ0JEUXlBeU1ERTBJQ2hOWVdOcGJuUnZjMmdwSWlCNGJYQTZRM0psWVhSbFJHRjBaVDBpTWpBeE5pMHhNaTB6TUZReE5Eb3pNem93T0Nzd09Eb3dNQ0lnZUcxd09rMXZaR2xtZVVSaGRHVTlJakl3TVRZdE1USXRNekJVTURjNk16RTZOVGtyTURnNk1EQWlJSGh0Y0RwTlpYUmhaR0YwWVVSaGRHVTlJakl3TVRZdE1USXRNekJVTURjNk16RTZOVGtyTURnNk1EQWlJR1JqT21admNtMWhkRDBpYVcxaFoyVXZjRzVuSWlCd2FHOTBiM05vYjNBNlNHbHpkRzl5ZVQwaU1qQXhOaTB4TWkwek1GUXhOVG96TURveU55c3dPRG93TUNZamVEazc1cGFINUx1MklPYWNxdWFnaCttaW1DMHhJT1czc3VhSmsrVzhnQ1lqZUVFN0lpQjRiWEJOVFRwSmJuTjBZVzVqWlVsRVBTSjRiWEF1YVdsa09qSkZOekZDUmtaRFF6WTNSakV4UlRZNU56aEVRVGxEUWtJMk5EWXpSamt3SWlCNGJYQk5UVHBFYjJOMWJXVnVkRWxFUFNKNGJYQXVaR2xrT2pKRk56RkNSa1pFUXpZM1JqRXhSVFk1TnpoRVFUbERRa0kyTkRZelJqa3dJajRnUEhodGNFMU5Pa1JsY21sMlpXUkdjbTl0SUhOMFVtVm1PbWx1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2TWtVM01VSkdSa0ZETmpkR01URkZOamszT0VSQk9VTkNRalkwTmpOR09UQWlJSE4wVW1WbU9tUnZZM1Z0Wlc1MFNVUTlJbmh0Y0M1a2FXUTZNa1UzTVVKR1JrSkROamRHTVRGRk5qazNPRVJCT1VOQ1FqWTBOak5HT1RBaUx6NGdQQzl5WkdZNlJHVnpZM0pwY0hScGIyNCtJRHd2Y21SbU9sSkVSajRnUEM5NE9uaHRjRzFsZEdFK0lEdy9lSEJoWTJ0bGRDQmxibVE5SW5JaVB6NDc3SlhGQUFBQVlGQk1WRVgvLy84RVZxSVhaYXZHMk9vcWNMRzJ6T09rd3QwQlNKdHFsY1hWNHUrYXV0bFdoYnprN1BVQU1ZOUhjcktqdE5icThmZUFsOGFCb3N6ejl2cGRqc0dHcXRGM244dVRzTlNacGM2SnNOVDUrdjB4WUtudThQZmY1L0w0OGZnL2ZyaWN6SmdZQUFBREFFbEVRVlI0MmtSVUNaYkRJQWpGWFpPWTFUYXROYzM5Ynprc1NZYzNyNE1FNGZNQkFhRDZ6bDh5LzlUT2dldDhkNWpmTjc4YndNL2REQ1JwUjUyMXpYZm9qSEowNUlJeWhCQVVTVkFPTmRHekJZdDJmN0tGcmZrSmFBa0hoOUZaaGNEWEhSa1RLbzlNTGloR2FhdkltblYzcXlFWDBFcHJnei80RHdVRDdrQ0hSbmQ4UUZONDNHbzRVVm1ERGd6YTR3MjdvaXpkQTIrY0srdXVVcGpqbzIreHdjLzQyVzUweDVMR1llREJzUjBIVkl4NXg4aUY2MENibGJURUVrRnIyN2JOREJVVlNxMU9LVlBiRTYyYjNFSDhGcUJnNU9PT0V1YzJ0OFpKaXFNT3VHcCtjS2pnN3dWR2Nlb3pxTjRweGdWUFFrakZZZ2JWSktEVWhEQ2pZcmF3UDVxNEVUZ0M5ZklNUkh0aXRwUWNDdkpPRUxjYk1zUWduY2lSa2xqcHlRanZHNDRqcUJVRVRGaUJpMVBFSXlla096c1crVHk1Y0xIb3M1UitkTVMxTHRTU3hmM2dRSGN6UjJDSTRnTU5wVzRJUkExUU1hNnRKNCtDNnVIdUdFOG1OREl5RnFnL09QL01NVXVlUzZJcThTOTBkQWVCSlNFeS9xS2tLK0JOd3o4Y1lZNGpiNUo2dTRpV0NJMkIxWjU2TFc1a0VjNGhrZE1wc3ZVQzU1ODVTWDBRdWJjZ05xeWZnREZFY1R0KzQwLzBTNU54MHdhQ3czT0trY09iQTVJbjBBWXAwMXBqancybjYyNlVEanRId2EyOGlIdVRLcXRydityZVc0MU5aNmlHbHI3dXVMSkNma0Z0Y3RjRzA0c2dtMWVOUytaYURucGFURXJHb3lYNUpLMmlNejh4czBuT3dXR2NQRE40OXFhQ2Q0YnpKb3pEWm0vYUJLK0Vvekx3K1hoTkJpWXdIZjBzaU91MVhQa0cvekt3dnFZS2NmU3dERWNIL29VZTA3ZXMvV1E4ckl5ZzJET1hqOHRqa1pkdURCL2I4aHpEbGxNTU9DUzVCRW5kNTM0Zjh0aTNVWmM0a01zM3hMeWFmTVNzSmhkRzhYUHFqTms1dEFnTzI1ZmVLQ2huVmREai9KMEZNa09zVS94TUJ2MHdGaFllRUdmVkgxM2Z1RFUweURGTGE0ZmM3Um5XSEJmdVRGVjJ0RW1Od2FkYzdhYzNVWTJqZkJsN0hUMzZmZTM0aVFPNW1OQ0ZGQlcwN0tqUGdxaE9MVTAxdlo4UHVlWjJKQ2xGWk44amtVczY5dWthOWVQcDYrRWZMNEFGNStOeXdTYmlySHRjQjhNbC9na3dBRWprSzY0S2pIUGVBQUFBQUVsRlRrU3VRbUNDIn0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDMtMjAiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJlUGFzcyBGSURPLU5GQyBTZXJpZXMiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlUyRjEwMDAyMDI1MDMyMDAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTAzLTIwIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjF9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDQtMDkifSx7ImFhZ3VpZCI6IjViMGU0NmJhLWRiMDItNDRhYy1iOTc5LWNhOWI4NGY1ZTMzNSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiNWIwZTQ2YmEtZGIwMi00NGFjLWI5NzktY2E5Yjg0ZjVlMzM1IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ill1YmlLZXkgNSBGSVBTIFNlcmllcyB3aXRoIExpZ2h0bmluZyBQcmV2aWV3In0sImRlc2NyaXB0aW9uIjoiWXViaUtleSA1IEZJUFMgU2VyaWVzIHdpdGggTGlnaHRuaW5nIFByZXZpZXciLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDcyLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH0seyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3IiwiZWQyNTUxOV9lZGRzYV9zaGE1MTJfcmF3Iiwic2VjcDM4NHIxX2VjZHNhX3NoYTM4NF9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo4LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjgsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlES2pDQ0FoS2dBd0lCQWdJVWVmK1Z2SGtjVFFuRUQrK3dKTS9JeHpTVUxrMHdEUVlKS29aSWh2Y05BUUVMQlFBd0pqRWtNQ0lHQTFVRUF3d2JXWFZpYVdOdklESXdNak1nUmtsRVR5QlFjbVYyYVdWM0lFTkJNQjRYRFRJek1Ea3lOVEV4TXpJME1Wb1hEVEkwTVRJek1URXhNekkwTVZvd0pqRWtNQ0lHQTFVRUF3d2JXWFZpYVdOdklESXdNak1nUmtsRVR5QlFjbVYyYVdWM0lFTkJNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQW91Rk1UT0thRTBZdGV4T29pc1N4cCtFYmk1SUE0ZXNFU2N4MTZselFkcVY2L2VaODJLdEplTlhFdU5rQlZaRHBjMzJnU3R1eExCSDhtZ3NvSEJGYWkyRGtqZkJuNXFid1IvYzUrc25sd1p2amdWQTBoekt3OUN3QWVBd1JENWtyV3Q4OC9DVnlDa01jZ0xTR3dacy9yajdGL0xzM0ViZzdNcUxiYlFKOUNvemJiTGRKVVlJSGNQcFNaUHRvTXJaYjRHdm5pNmlWUzlVdkNLZ3BxYzZMR1Jtb1lHRzRaUjNsR0ovWFFaZnUrR2VKVzY3aWltTWoveW9YT3d4dWN4aXZaSEZrNmNRU2d3dXdpb2VObTR3dms4M0xoU3VXY3RmMmtBeVFjWjdrVW5wTmVlK2Q0TWdybUdVNFhNRkxpVGd1dGFCK2U5VjhkNUpUa1VPSGlMenRrUUlEQVFBQm8xQXdUakFkQmdOVkhRNEVGZ1FVTTVTQjViSHJWK2pwSU9NZEpsN3U3YmNuVFk4d0h3WURWUjBqQkJnd0ZvQVVNNVNCNWJIclYranBJT01kSmw3dTdiY25UWTh3REFZRFZSMFRCQVV3QXdFQi96QU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFDb3dSM0tUTGZpZEp5UUZOcUVGZlVyZlo5YWE5ZWdwT1F0TlJKZExTdEo2eHUyV2ZMd3ZHNG9qR0psQktObmZhNURJY3lRWWYvOHFKNGVsaUFWZU5YdVltZU1tZ05nWlp5dVk2RzF5V0NEMlYzc0Q2WjR1ajNTYmFET0hqM2dIdnN6Z1FocmhUMWgvcHVIUWtuNitoWUtBcDc3a003SWM2QVovUkZianBtTExrMkQwc0UxbHpULzAyaStCaDdNOHNtYWlEWjkrK0pHenhlU3VuOFcxSGxlWlVtMnFLR21SYTRYUGRyeVQ3eDZLR1VHblU0YTNicFVtVmVZOXJRL3NmTWQ1WlRvbyszdW5GV0R6b1ZWMnZOdTgrK1ZMQzl6bzQwRmFLUUxyOVZBSkRKNHlMRU5SN0tybVY4TDBjQ1hLSkdaV0FXdEc1UkdUbUhJaGQrbkI0MWc9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFmQ0FZQUFBQ0dWcytNQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUhZWUFBQjJHQVYyaUU0RUFBQWJOU1VSQlZGaEhwVmQ3VE5WMUZELzNkNTl3ZVFTSWdTOUFRQVhjRkxBUVppOWZwZVZ6MXRZL1dUWnI1V3hwYzdXNWtuTGE1akkzWjg1c3JTMm5NMnNqdFd3WlM3SVVINEg0eENuRVF4NERBWkY3NFY3dXM4ODV2OS9sSW5CdlZKL0I0UHY5bnUvNW51LzVudk01NTZmekEvUXYwSGIvSXJYM1ZGS1BvNDVjbm00aW5VSVdZd0xGUm1aUVV1d2pGRy9OMWlSSGgxRVowTlJWUnVkcXQxQmQrMm5TS3lTL09oeXMwK2xrM2UvM2tROXF2RDRaVXRhNFZWU1V1WTBlaXB5aVRoQWZvY29PUlZnRHV1dzNxS1JpQWQzcmJjRXRqVGpZSW9mNldhSHNDbXpWUFdDTXgrY2doOHRMcVdNS2FNV3NVakxxbzJSdEpJUTBvT3ptZXJwUXU0ZXNaZ3NPTmtHeEg3ZDBrZHZUVDE3czRPTVU3Vkk4WmhqZ0dhTStBcTlpRU51OFBpZjF1ZHowN013dktXZjhHbFZvQ0VZMDRQQzVXZFRhWFlGYlI4dk52TDUrM0tnZmI1eE5NeWE5UmFtSml5bmFNbEdUVnRGbHI2YmE5dStwcW5FWDR1TXVSUmdqU1lFaHJON3V0RkZlNmxxYWw3TmZrdzVpbUFHSHluUHBiazhWbVkweHN0bnB0bEZDVkNZdHpUdUJOODNRcE1MalR0ZXZkUHpTVW5KN2U4bWtqeFozOWZYYktEZmxkWnFidlUrVFVnR25CVkY2ZlEyaVBIZzRXMTZVV1V3dnpiazE2c01aRStQbjBwdno3SlNldUF5ZXM4bGNwQ21hS3VvL3ArcVdyMlVjd0lBSFdydlAwWUV6aFhBdExBYnNzSGhwN2lHYW12eWlqUDhyeXFyWFVXWDlYb293eHlBdWZOQnJwNDNQT0JGWFpsa2Y4TURSaXFjcHlvd0F3cHV6MngrZld2ei9EdGRlOXNtc3p5Z3RjUjZDMXdiZHpCbDZPbHE1V05ZWTRvR2F0aEpNcmtURXgwakFSU0hBVnMrNXJZa1FOWGIrUWdmUExzUTZnWHlJbnNyZVFmbXBtN1JWRllmTDg2bjFmaVVPa1l2U2hrVVB4dmJ1a3pveTZLMWloTTFobzNYelc2RXZTZlhBK2RwaVdHYVdkK2RvWHpMem1Hd0tZRkxDQXNSQWxQQkFoTWxDRlhVN3RCVVZQcjhIZ1ZjSkhXcStGMDBwbHIrRE1UZHJQNHp2eFkxMWtOTWh4VCtTZVRHZytkNFY1TFFKaXR5VUdKTkI4VkZac2pnWUJaTS9JSS9YQ1RrajBxeURPcEYyQVZRMTdDSWpVcC9EblQxVWtMNUY1Z2RqK3NTMXdnMWdFM2dpZ202MGZDWHpTblBYYnlBUGJJWHYrSURwRTE2VGhhSElTOXNreWhsbU1FNUYzY2ZxQUtocTJDMEU1UEgxZ1lhWGFMUERrWkcwSERKT25LV0hwNTFJMHo1U091eDhlMVdBdVp6ZEhRclRrcDhUbWpYb0krbGEwd0dac3p1YnFiTzNpZlE2QS9XN3ZWU1lzVjNtUjBKS3drS2M0V0hpQmttUjhJM0NDZ0k4N29PTDRxelQ1UCtSVUpCZWpFT2dBUEs4aFlQemF0TStlSVRwMklPOXlUUW1lcm9tUFJ4eDFxeEFjc2lsZS91YlNlRWJjV1FHWUVDZ2hjTFkySHlLam9nakgyNWhNcGpwVXYxT3VnbGk0ZWgyZVJ3ME8zMmJKamt5dUNnTnpnMHZ6bFlNU2lTczB1b280TUc3aE1PakNFYVgxeUZFMG5TdmpCenVUbkVwSzg2WjhJb3FGQUl1Ync4a2c5QXJFYVJFV1NaSStqSDRYYnA2ZzlFOUVuSlQzb2FSekROK01VSkJRREhuNTZhOG9VbUVCdXNPeEJzL041K3RKRWJQa0FGRGo4VUd2T3MvSVd2Y1NnbEdCaHZTNy9GVFlmcFdHWWREWThmUEF4V1NBMzVzVEM0cDQrTG00QWFxSW9QZVF0ZnVmSzZKaDBaaHhsYnNVWE9TbVhOaWZENVpUQWt5RG9mYmJjY2x4bkE4V05BcXhDYlJOeWtoWHhRcGFEdzY3ZlhVWWJzaUcwS2h0djJvZUl2aDhyaFFNWU9jRUFxWEcvZUkrem5nT2M1eXhyOHE4MklBTTFjL0ZMRk9wbHF1NWVGUVhyTVp6R2NWQ2pZYkxXRzVJNEJUMWV1UnJsYnh0Tk90TWl0RERFaExYSUl5bkFBdnVPRVdFM1gzTmRBZnQ5NFZnYUc0MlhJUXQwWlg2UGVDRS9xUUZlOXJLNkh4N1lVNTBLdkg3Zlc0ZlMrcTdLS0JKeHNnZ0JYNXBTQUdoMWpJclZoNXpRNnczUmZhYWhCWG0vYUNiQ1pUakNVRlVUeVdacVc5cDYyTWpKUFhWcU9yUGdNTzROdjc0R2tmK293ZnROVkJEUW5qRkpxSFN3MTdwWHZoV1c1S1pxZS9RNDlOL1VTVENBVldvUVhGSUhCSFhYZTNGUHJVRHN1R0RtdEYvaEhLVEhwZWt4aGlBT1BJK1NKcTZTNkhGNEk5WVd6a0JKVG80NmlVTXpXcDhQaXIvUmlkdUx4S1lzU2tzVjh2TGxPUXZoR1gyWWxSME9CaEJqQyt1L2dFY3ZZMEFwSzdZazQxTnhqUFNRbldGSFRGNjZVcmpnZXZCOEN1NWErbDJ2WVNSUHR1VkRvNzNoaGRNU0huVVg3dFRqc1ZaR3hBbC9XcHRpT0lFUTFnbkwyOW1YNi90UjF0bWxrWWo4VzRYK0NTaldjVURHWTFOcFMvQzdoU0txaU1MTS9sMlFtU1daNzNEZHorZ2lvOEJDRU5ZUFE0NnFua3p3WFVicXZCa3hqVVFzV2ZaRmdidW8zckFmK3dON2pPTzkwK3lueDRQaTNMKzBuWUwxU2NoRFVnQVA0Z1BWLzdJZDFxKzFIU2htdUdrSXFXUlBneXhNRnFQOEhmalRualh3WTViUWZiSmN0Nk9JektnTUhvdEYvSGUxZWdzYXhIU3FHNndmZG1RNXg4TnlURkZxQmNwMmlTb3dIUjN5azUrMzZoRjd2WEFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJGSURPXzJfMCIsIkZJRE9fMl8xX1BSRSIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsImxhcmdlQmxvYktleSIsImNyZWRCbG9iIiwibWluUGluTGVuZ3RoIl0sImFhZ3VpZCI6IjViMGU0NmJhZGIwMjQ0YWNiOTc5Y2E5Yjg0ZjVlMzM1Iiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibGFyZ2VCbG9icyI6dHJ1ZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOmZhbHNlLCJhbHdheXNVdiI6dHJ1ZX0sIm1heE1zZ1NpemUiOjEyODAsInBpblV2QXV0aFByb3RvY29scyI6WzJdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjgsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4LCJ0cmFuc3BvcnRzIjpbInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi04fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotMzV9XSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5Ijo0MDk2LCJtaW5QSU5MZW5ndGgiOjgsImZpcm13YXJlVmVyc2lvbiI6MzI5NDcyLCJtYXhDcmVkQmxvYkxlbmd0aCI6MzIsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjoxLCJjZXJ0aWZpY2F0aW9ucyI6eyJGSVBTLUNNVlAtMiI6MiwiRklQUy1DTVZQLTItUEhZIjozfSwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjEwMH19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0wNC0wNyJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjQtMDQtMDcifSx7ImFhZ3VpZCI6IjEyNzU1YzMyLThhZDEtNDZlYi04ODFjLWUwYjM4ZDg0OGIwOSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiMTI3NTVjMzItOGFkMS00NmViLTg4MWMtZTBiMzhkODQ4YjA5IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkZlaXRpYW4gZVBhc3MgRklETyBBdXRoZW50aWNhdG9yIChDVEFQMi4xLCBDVEFQMi4wLCBVMkYpIn0sImRlc2NyaXB0aW9uIjoiRmVpdGlhbiBlUGFzcyBGSURPIEF1dGhlbnRpY2F0b3IgKENUQVAyLjEsIENUQVAyLjAsIFUyRikiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9LHsibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQjJUQ0NBWDZnQXdJQkFnSVFGUU5LVys3emJnLzdkK2xUeXJJV3dEQUtCZ2dxaGtqT1BRUURBakJMTVFzd0NRWURWUVFHRXdKVlV6RWRNQnNHQTFVRUNnd1VSbVZwZEdsaGJpQlVaV05vYm05c2IyZHBaWE14SFRBYkJnTlZCQU1NRkVabGFYUnBZVzRnUmtsRVR5QlNiMjkwSUVOQk1DQVhEVEl5TURZd09EQXdNREF3TUZvWUR6SXdOVEl3TmpBM01qTTFPVFU1V2pCTE1Rc3dDUVlEVlFRR0V3SlZVekVkTUJzR0ExVUVDZ3dVUm1WcGRHbGhiaUJVWldOb2JtOXNiMmRwWlhNeEhUQWJCZ05WQkFNTUZFWmxhWFJwWVc0Z1JrbEVUeUJTYjI5MElFTkJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVzRllFRWhpSnVxcW5NZ1FqU2lpdkJqVjdER0NUZjRYQkJIL0I3dXZac0t4WFNoRjBMOHVESVNXVXZjRXhpeFJzNmdCM29sZFNyam94Nkw4VDk0Tk96cU5DTUVBd0hRWURWUjBPQkJZRUZFdTloeVlSclJ5Snp3Ull2bkRTQ0l4ckZpTzNNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdEZ1lEVlIwUEFRSC9CQVFEQWdFR01Bb0dDQ3FHU000OUJBTUNBMGtBTUVZQ0lRQ0IwTkZRU04wejRsV3oveWMzNmV3clRDenR0Sy9xRnZsYVBPS2grVDFvNndJaEFQMG9LS0ErY2ljc0R5M1kzbitWbFA4ZUIzUEJ6TWtodlcvOUlTWEN3K1ZCIiwiTUlJQjJEQ0NBWDZnQXdJQkFnSVFCVG1rM1p3aWxGWGpzWnl3SERuTWdEQUtCZ2dxaGtqT1BRUURBakJMTVFzd0NRWURWUVFHRXdKRFRqRWRNQnNHQTFVRUNnd1VSbVZwZEdsaGJpQlVaV05vYm05c2IyZHBaWE14SFRBYkJnTlZCQU1NRkVabGFYUnBZVzRnUmtsRVR5QlNiMjkwSUVOQk1DQVhEVEl5TURZd09EQXdNREF3TUZvWUR6SXdOVEl3TmpBM01qTTFPVFU1V2pCTE1Rc3dDUVlEVlFRR0V3SkRUakVkTUJzR0ExVUVDZ3dVUm1WcGRHbGhiaUJVWldOb2JtOXNiMmRwWlhNeEhUQWJCZ05WQkFNTUZFWmxhWFJwWVc0Z1JrbEVUeUJTYjI5MElFTkJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVuZkFLYmp2TVgxRXkxYjZrK1dRUWROVk10OUpnR1d5SjNQdk00QlNLNVhxVGZvKyswb0FqLzR0bnd5SUwwSEZCUjlTdCtrdGpxU1hEZmppWEF1cnM4Nk5DTUVBd0hRWURWUjBPQkJZRUZOR2htRTJCZjhPNWEvWUhaNzFRRXY2UVJmRlVNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdEZ1lEVlIwUEFRSC9CQVFEQWdFR01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lCeVJ6NE9BbFJaOUh6OUtWN2cyUU50QzBDOEp4SC94TEpZOEZaRW10SjNzQWlFQXNyZVQwK2VOa05jVWpJOWg1T1BDb0g2Tm1zT2tndkVBQkpackYwN0FEa1k9IiwiTUlJQjJEQ0NBWCtnQXdJQkFnSVJBTXM4WVhWQm9CTnVYVWpxZkNvWDd5NHdDZ1lJS29aSXpqMEVBd0l3U3pFTE1Ba0dBMVVFQmhNQ1ZWTXhIVEFiQmdOVkJBb01GRVpsYVhScFlXNGdWR1ZqYUc1dmJHOW5hV1Z6TVIwd0d3WURWUVFEREJSR1pXbDBhV0Z1SUVaSlJFOGdSVUVnVW05dmREQWdGdzB5TXpBeE1ERXdNREF3TURCYUdBOHlNRFV5TVRJek1USXpOVGsxT1Zvd1N6RUxNQWtHQTFVRUJoTUNWVk14SFRBYkJnTlZCQW9NRkVabGFYUnBZVzRnVkdWamFHNXZiRzluYVdWek1SMHdHd1lEVlFRRERCUkdaV2wwYVdGdUlFWkpSRThnUlVFZ1VtOXZkREJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCRDJMSEhBUXFZYmRSMVdabHVlcnRNMzByV2hvcllhdldtTVZhNG5kWDlQWnd1UkVwTFE0bTFuRWxxUUtNblJFOC80QytScXdpYXYrbXBJNGt4ZDVlNXVqUWpCQU1CMEdBMVVkRGdRV0JCUzNaWmp5R2xoWjk5TjF2TG9UUFhWVWE0WkVZREFQQmdOVkhSTUJBZjhFQlRBREFRSC9NQTRHQTFVZER3RUIvd1FFQXdJQkJqQUtCZ2dxaGtqT1BRUURBZ05IQURCRUFpQW9EK1I2a29sSVdhTkp6NGh6MDNEM2dlczNHYk1CakFXcGtPVWc5YXlGZ3dJZ2JFdzdBWVN5azY4T3Z4Z1hlemduZFRSVEV1U1dUK2ZkUm5MYUJOc2FUdzA9Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUZBQUFBQVVDQU1BQUFBdEJrcmxBQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQkhacFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR3L2VIQmhZMnRsZENCaVpXZHBiajBpNzd1L0lpQnBaRDBpVnpWTk1FMXdRMlZvYVVoNmNtVlRlazVVWTNwcll6bGtJajgrSUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWtGa2IySmxJRmhOVUNCRGIzSmxJRFV1Tmkxak1ERTBJRGM1TGpFMU5qYzVOeXdnTWpBeE5DOHdPQzh5TUMwd09UbzFNem93TWlBZ0lDQWdJQ0FnSWo0Z1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNGdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlnZUcxc2JuTTZlRzF3UFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIaHRiRzV6T25Cb2IzUnZjMmh2Y0QwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOXdhRzkwYjNOb2IzQXZNUzR3THlJZ2VHMXNibk02ZUcxd1RVMDlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl0YlM4aUlIaHRiRzV6T25OMFVtVm1QU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2YzFSNWNHVXZVbVZ6YjNWeVkyVlNaV1lqSWlCNGJYQTZRM0psWVhSdmNsUnZiMnc5SWtGa2IySmxJRkJvYjNSdmMyaHZjQ0JEUXlBeU1ERTBJQ2hOWVdOcGJuUnZjMmdwSWlCNGJYQTZRM0psWVhSbFJHRjBaVDBpTWpBeE5pMHhNaTB6TUZReE5Eb3pNem93T0Nzd09Eb3dNQ0lnZUcxd09rMXZaR2xtZVVSaGRHVTlJakl3TVRZdE1USXRNekJVTURjNk16RTZOVGtyTURnNk1EQWlJSGh0Y0RwTlpYUmhaR0YwWVVSaGRHVTlJakl3TVRZdE1USXRNekJVTURjNk16RTZOVGtyTURnNk1EQWlJR1JqT21admNtMWhkRDBpYVcxaFoyVXZjRzVuSWlCd2FHOTBiM05vYjNBNlNHbHpkRzl5ZVQwaU1qQXhOaTB4TWkwek1GUXhOVG96TURveU55c3dPRG93TUNZamVEazc1cGFINUx1MklPYWNxdWFnaCttaW1DMHhJT1czc3VhSmsrVzhnQ1lqZUVFN0lpQjRiWEJOVFRwSmJuTjBZVzVqWlVsRVBTSjRiWEF1YVdsa09qSkZOekZDUmtaRFF6WTNSakV4UlRZNU56aEVRVGxEUWtJMk5EWXpSamt3SWlCNGJYQk5UVHBFYjJOMWJXVnVkRWxFUFNKNGJYQXVaR2xrT2pKRk56RkNSa1pFUXpZM1JqRXhSVFk1TnpoRVFUbERRa0kyTkRZelJqa3dJajRnUEhodGNFMU5Pa1JsY21sMlpXUkdjbTl0SUhOMFVtVm1PbWx1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2TWtVM01VSkdSa0ZETmpkR01URkZOamszT0VSQk9VTkNRalkwTmpOR09UQWlJSE4wVW1WbU9tUnZZM1Z0Wlc1MFNVUTlJbmh0Y0M1a2FXUTZNa1UzTVVKR1JrSkROamRHTVRGRk5qazNPRVJCT1VOQ1FqWTBOak5HT1RBaUx6NGdQQzl5WkdZNlJHVnpZM0pwY0hScGIyNCtJRHd2Y21SbU9sSkVSajRnUEM5NE9uaHRjRzFsZEdFK0lEdy9lSEJoWTJ0bGRDQmxibVE5SW5JaVB6NDc3SlhGQUFBQVlGQk1WRVgvLy84RVZxSVhaYXZHMk9vcWNMRzJ6T09rd3QwQlNKdHFsY1hWNHUrYXV0bFdoYnprN1BVQU1ZOUhjcktqdE5icThmZUFsOGFCb3N6ejl2cGRqc0dHcXRGM244dVRzTlNacGM2SnNOVDUrdjB4WUtudThQZmY1L0w0OGZnL2ZyaWN6SmdZQUFBREFFbEVRVlI0MmtSVUNaYkRJQWpGWFpPWTFUYXROYzM5Ynprc1NZYzNyNE1FNGZNQkFhRDZ6bDh5LzlUT2dldDhkNWpmTjc4YndNL2REQ1JwUjUyMXpYZm9qSEowNUlJeWhCQVVTVkFPTmRHekJZdDJmN0tGcmZrSmFBa0hoOUZaaGNEWEhSa1RLbzlNTGloR2FhdkltblYzcXlFWDBFcHJnei80RHdVRDdrQ0hSbmQ4UUZONDNHbzRVVm1ERGd6YTR3MjdvaXpkQTIrY0srdXVVcGpqbzIreHdjLzQyVzUweDVMR1llREJzUjBIVkl4NXg4aUY2MENibGJURUVrRnIyN2JOREJVVlNxMU9LVlBiRTYyYjNFSDhGcUJnNU9PT0V1YzJ0OFpKaXFNT3VHcCtjS2pnN3dWR2Nlb3pxTjRweGdWUFFrakZZZ2JWSktEVWhEQ2pZcmF3UDVxNEVUZ0M5ZklNUkh0aXRwUWNDdkpPRUxjYk1zUWduY2lSa2xqcHlRanZHNDRqcUJVRVRGaUJpMVBFSXlla096c1crVHk1Y0xIb3M1UitkTVMxTHRTU3hmM2dRSGN6UjJDSTRnTU5wVzRJUkExUU1hNnRKNCtDNnVIdUdFOG1OREl5RnFnL09QL01NVXVlUzZJcThTOTBkQWVCSlNFeS9xS2tLK0JOd3o4Y1lZNGpiNUo2dTRpV0NJMkIxWjU2TFc1a0VjNGhrZE1wc3ZVQzU1ODVTWDBRdWJjZ05xeWZnREZFY1R0KzQwLzBTNU54MHdhQ3czT0trY09iQTVJbjBBWXAwMXBqancybjYyNlVEanRId2EyOGlIdVRLcXRydityZVc0MU5aNmlHbHI3dXVMSkNma0Z0Y3RjRzA0c2dtMWVOUytaYURucGFURXJHb3lYNUpLMmlNejh4czBuT3dXR2NQRE40OXFhQ2Q0YnpKb3pEWm0vYUJLK0Vvekx3K1hoTkJpWXdIZjBzaU91MVhQa0cvekt3dnFZS2NmU3dERWNIL29VZTA3ZXMvV1E4ckl5ZzJET1hqOHRqa1pkdURCL2I4aHpEbGxNTU9DUzVCRW5kNTM0Zjh0aTNVWmM0a01zM3hMeWFmTVNzSmhkRzhYUHFqTms1dEFnTzI1ZmVLQ2huVmREai9KMEZNa09zVS94TUJ2MHdGaFllRUdmVkgxM2Z1RFUweURGTGE0ZmM3Um5XSEJmdVRGVjJ0RW1Od2FkYzdhYzNVWTJqZkJsN0hUMzZmZTM0aVFPNW1OQ0ZGQlcwN0tqUGdxaE9MVTAxdlo4UHVlWjJKQ2xGWk44amtVczY5dWthOWVQcDYrRWZMNEFGNStOeXdTYmlySHRjQjhNbC9na3dBRWprSzY0S2pIUGVBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMSIsIkZJRE9fMl8xX1BSRSJdLCJleHRlbnNpb25zIjpbImNyZWRCbG9iIiwiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsImxhcmdlQmxvYktleSIsIm1pblBpbkxlbmd0aCJdLCJhYWd1aWQiOiIxMjc1NWMzMjhhZDE0NmViODgxY2UwYjM4ZDg0OGIwOSIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsIm5vTWNHYVBlcm1pc3Npb25zV2l0aENsaWVudFBpbiI6ZmFsc2UsImxhcmdlQmxvYnMiOnRydWUsImF1dGhuckNmZyI6dHJ1ZSwidXZBY2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOnRydWUsImFsd2F5c1V2IjpmYWxzZX0sIm1heE1zZ1NpemUiOjIwNDgsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6MTAsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6OTYsInRyYW5zcG9ydHMiOlsidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN31dLCJtYXhTZXJpYWxpemVkTGFyZ2VCbG9iQXJyYXkiOjIwNDgsImZvcmNlUElOQ2hhbmdlIjpmYWxzZSwibWluUElOTGVuZ3RoIjo0LCJtYXhDcmVkQmxvYkxlbmd0aCI6MzIsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjoyLCJyZW1haW5pbmdEaXNjb3ZlcmFibGVDcmVkZW50aWFscyI6MTI4fX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjItMDctMTgiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJGZWl0aWFuIGVQYXNzIEZJRE8gQXV0aGVudGljYXRvciAoQ1RBUDIuMSwgQ1RBUDIuMCwgVTJGKSIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjIwNzE4MDAyIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjItMDctMTgiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MX1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNC0xMS0xOSJ9LHsiYWFndWlkIjoiMmE1NWFlZTYtMjdjYi00MmMwLWJjNmUtMDRlZmU5OTllODhhIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiIyYTU1YWVlNi0yN2NiLTQyYzAtYmM2ZS0wNGVmZTk5OWU4OGEiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiSElEIENyZXNjZW5kbyA0MDAwIn0sImRlc2NyaXB0aW9uIjoiSElEIENyZXNjZW5kbyA0MDAwIiwiYWx0ZXJuYXRpdmVEZXNjcmlwdGlvbnMiOnsiZW4tVVMiOiJISUQgQ3Jlc2NlbmRvIDQwMDAifSwiYXV0aGVudGljYXRvclZlcnNpb24iOjI2MjE0NCwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9LHsibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQy9EQ0NBcUdnQXdJQkFnSVVZdkNhL3RRdE1BSFg3NXFWUDlRaVZua1YvYTh3Q2dZSUtvWkl6ajBFQXdJd2F6RUxNQWtHQTFVRUJoTUNWVk14RXpBUkJnTlZCQW9NQ2toSlJDQkhiRzlpWVd3eElqQWdCZ05WQkFzTUdVRjFkR2hsYm5ScFkyRjBiM0lnUVhSMFpYTjBZWFJwYjI0eEl6QWhCZ05WQkFNTUdrWkpSRThnUVhSMFpYTjBZWFJwYjI0Z1VtOXZkQ0JEUVNBeU1CNFhEVEkwTURVd01qRTVNVE15TUZvWERUUTVNRFV3TWpFNU1UTXlNRm93WmpFTE1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBb01Da2hKUkNCSGJHOWlZV3d4SWpBZ0JnTlZCQXNNR1VGMWRHaGxiblJwWTJGMGIzSWdRWFIwWlhOMFlYUnBiMjR4SGpBY0JnTlZCQU1NRlVaSlJFOGdRWFIwWlhOMFlYUnBiMjRnUTBFZ05qQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJMUjBzU2FDVWlRelgwWXZOYnN4alpQcTJvUktrMXBmT2VsREw2QXNMdVp2WWtrUEt3bHlSejhsTlByU21hVmVWM2dSeXBKbDliRGY0ZHRtdjBNbjVZeWpnZ0VtTUlJQklqQU9CZ05WSFE4QkFmOEVCQU1DQVlZd0VnWURWUjBUQVFIL0JBZ3dCZ0VCL3dJQkFEQWZCZ05WSFNNRUdEQVdnQlM3NkRwbDkzdkIyaDVGREx2eU1NdlVCeWozaXpBZEJnTlZIUTRFRmdRVWtjek9NQ3c3aFBuNDB6WnNoQ2Fhc0dRS3ZXTXdSQVlEVlIwZkJEMHdPekE1b0RlZ05ZWXphSFIwY0RvdkwyTnliQzVvZVdSeVlXNTBhV1F1WTI5dEwwWkpSRTlCZEhSbGMzUmhkR2x2YmxKdmIzUkRRVEl1WTNKc01IWUdDQ3NHQVFVRkJ3RUJCR293YURBL0JnZ3JCZ0VGQlFjd0FvWXphSFIwY0RvdkwyTnliQzVvZVdSeVlXNTBhV1F1WTI5dEwwWkpSRTlCZEhSbGMzUmhkR2x2YmxKdmIzUkRRVEl1Y0Rkak1DVUdDQ3NHQVFVRkJ6QUJoaGxvZEhSd09pOHZiMk56Y0M1b2VXUnlZVzUwYVdRdVkyOXRNQW9HQ0NxR1NNNDlCQU1DQTBrQU1FWUNJUURhRWNGSW03bDdicHZ0UVF2WHZkRVkvK0c0R0hZVGRybkJDWWY5am1Pc293SWhBSkl5RnJUTWI1Tkl6QUkvL1dET3NZcmxrRFBwZlVQTGl4WjBhK29lQ21SUCJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFWTUFBQUNzQ0FZQUFBREcrRThNQUFBQUlHTklVazBBQUhvbEFBQ0Fnd0FBK2Y4QUFJRHBBQUIxTUFBQTZtQUFBRHFZQUFBWGI1SmZ4VVlBQUFBSmNFaFpjd0FBRDJBQUFBOWdBWHA0UlkwQUFBeWdTVVJCVkhoZTdaMS9iSlRsSGNCdmpoak5jQzRPK2RYZVhWdFVUTXppUDdvWVhaWTUxSWtLZDFmTm5GSGo1b2hCbUE3ajJNUnNab2xteGhoTkpvcnQyNEtnc2lGc2ltN1RBZE1ZUkZRRUZUY1Z4dy9yd0FFRlJDaFErdXVlUGMvMXFRUDNUTnMrMzN2ZXUrdm5rM3pTNDJnZm52ZTl0NTgrNzczWEl3RUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVVFcGtHNi9YUHBuSVJSOGdJaDV0NDFyOWNZYXRCZndQOVEzbjZ4MjBUWnRQMURjcFJNVFBOZGVVMTR1dVZ0Mk1xMjFGQmt4dE1qbXJMcFZxMFI4MzExWlgzMnJ2TG1NS1AyMzBqcW1QM0RzTkVmSHp6RVc3RXhmT0dXbUw4b1drazhrZjFxWFNQWFhWcWFYSlVhUE9xS21xT3JNdW1mcHJiVExWblVxbExyZWZWa1pNbVAxMS9aT2x3N2x6RUJFSG9qbXJ6VVpUYlYzK0wzVmp4MDR3SVIwOWV2VEo0MUtwS2RvYmpDTkhqaHcxZHV6WTVMaDBqZEtyMUxQdHA1Y0JKcVNzUmhGUjB0Nmd6clNWY1hHTURxbXFTU1l6K3ZZd0U4NmFxdFMxdGRYcDY4M3R1akZqVWpWams1UDFLclc5OTlQTGdWelU1ZHdaaUlnK21xQmVPcWZPbHVZbzB1bjBjVHFtWGZhUHc4d0sxZDVPNkZQOHQyclQ2VnYwelMrYnNQYmVXK3Jrb28rY093RVJVY0pjZE1EVzVpaXFxNnVQSDVlcTZWdDFGbGFtT3FJNzYxSTEyMDlKMS9SRjlrdmxFZFA2aG04N054NFJVZEpzd3oyMk9wOWlZcXBYbzUzMmoyWmxtai9wcEpPK3FqOTJwOGVNT2QzZWYweDV4RFRYdE0rNTRZaUlrdWFpRGx1ZEkrazloVThuanRPM0N6RTFkNDRZTVdLTXZuM1EzQjQrZXZqSituYmZLcldFNFhXa2lCakt5NXZQc3VYNWxMcFVhbVp0TXIzZjNLNnRUcjVUdUZOVGwwdytXcE5LM2F6L3JxTzJPajNOM2wyaVRJNm1PamNZRWJFWTVwcWV0ZlU1aXJycTFETzF5ZFNCY1ZXcEcreGRpYnFxNUF5ek90WDNMN1IzbFREMTBYTG5CaU1pRnNOY1UrSFUzVVZ5VlBJTUhkV1ZwOVhXcVZOcmF2UDY5dktxRVZXbjJyOHVjZXFqL2M0TlJrUXNocm1vakY0dk9oQ0lLU0tHMUgwUnFnSWdwb2dZVW1LS2lDZ2dNVVZFRkpDWUlpSUtTRXdSRVFVa3BvaUlBaEpUUkVRQmlTa2lvb0RFRkJGUlFHS0tpQ2dnTVVWRUZKQ1lJaUlLU0V3UkVRVWtwb2lJQWhKVFFTOTdXQ1V1ZUVBbExwd2RWdk52NWlMM25BYnI5eDUwLzF2RjlpS3RhejRETWE3SHdEeitydm4weDZ4Ky9PS1lkekUwMjNHUlBuN01NWFNwM2llVEc5M2JYR2tTVXpsdm52dXlpb3ZqcnB6bm5OT2cxQWYvdXMyNzdNaGgyZm5Kb2Q1dlFOZTgrcVArSm82TGFkRXE5NXo2NGRldVhXQkhxUXc2dTN0VVczdW4ycnhqbjFxOVlhZGFzbnF6dXFuNVpYWHlOUXRVNHVLSFZDSlRnWUVscG5LYWI2YTRxSlNZZnJUblFObkc5SWFIWDNMUHFSK2VxQ016Vk5pei83QmE4ZFpXZGVWOXo2dkVCTDJLclpTd0VsTTVpYWsveEhSbzBkblZvNTVkOTZFYWYrTWl2NmRKU2tGaUtpY3g5WWVZRGwzZWJ0bWp6cHUxMU8veGoxTmlLaWN4OVllWXdodGJkcWxUcHVxVnFya281OWhYSlNzeGxaT1kra05Nd3pQcnNUWHF6c1Z2cUx1V3ZLRXlkeTlUdVh1V3ExOHVmTDF3MzcxTDE2c1Y2N2NWTGlhRnBDZWZWNCsrK0UrVnVHQzJjMytWcE1SVVRtTHFEekVOVDJMQ2IvVXFzRkVsTWczL25aTzVLRlM0VHp0SlB4Nlh6bEZWVXhhcUtYTldxby9iRHR1dkxENjcyOXJWTjM2NnhJVHFxUDFWa2hKVE9ZbXBQOFEwUElYWGhqcm01RlJIN1pqSkRlcU8zNisxWDExOHVudDYxQzJQck5iSDVSR3hMMFdKcVp6RTFCOWlHcDRCeGJSUEhiWkpkeSt6STRSaC9ndnZGMWJJenZtVWdzUlVUbUxxRHpFTno2Qmlhc3cwcWgvcjAvNlFQUG5xQjM3SFJ6RWxwbklTVTMrSWFYZ0dIVk5qTmxKLy8zQ1BIU2tNVDcvV1VwcEJKYVp5RWxOL2lHbDR2R0txSGYrVHhYYWtjUHp4RmIxQ0xiWG5VSW1wbk1UVUgySWFIdCtZbXFpOXQyMnZIUzBjUDF2d3FucytjVWxNNVNTbS9oRFQ4SGpITkJlcDgyNS8ybzRXam53K3I4WlBYK3llVXh3U1V6bUpxVC9FTkR6ZU1kVis1YXBIN0doaDJYZXdRMlQrSWhKVE9ZbXBQOFEwUENJeG1tUk85VCt4STRibG1UVXRoZFd4YzE0aEphWnlFbE4vaUdsNFJHS2FqZFF0ODE2eEk0Wm4rRldDeC85Z0phWnlFbE4vaUdsNHBFNlR6NXl4eEk0WW52Yy8ydHY3NjYrT2VRV1RtTXBKVFAwaHB1R1JpdW5vNngrM0k4YkRpT3NlZGM0cm1NUlVUbUxxRHpFTmoxUk1oMTNSYkVlTUIzUE14dnJjS1RHVms1ajZRMHpESXhWVGN4R3FxN3ZiamhxZXJ1NGV1VzBaak1SVVRtTHFEekVOajFpQTlIR3pkbE9ySFRVZWJwMGY0d3Y1aWFtY3hOUWZZaG9lc1pobUd0WENsUnZ0cVBHd2JiYytmdUo2aDM1aUtpY3g5WWVZaGtjc3BqcGl0ejIyeG80YUQrMGRYU294TWFhMzZTT21jaEpUZjRocGVDUmpHdWRyVGZ1STdhbytNWlV6enBoKzUxZC9VdWZPZWxyRWIvNzhLYlVoaGpldU1CRFQ4SWpGTktiZjBmOHN0ejIreGoyL1lrdE01WXd6cHBVQ01RMlBXRXkxNTl5MjFJNGFINnZlM2U2Y1c5RWxwbklTVTMrSWFYZ3FMYVpiNDdvSVJVemxKS2IrRU5Qd1ZGcE10Kzg5MlB1L3Fqcm1WMVNKcVp6RTFCOWlHcDVLaSttdWZlMHFsbmZoSjZaeUVsTi9pR2w0S2kybWhmYzR2Y3pqR0Jxc3hGUk9ZdW9QTVExUHhaM21mOHhwdml6RXRDd2hwdUdwdEpqdTJIdUltSXBDVE1zU1locWVTb3ZwQnp2M203QTU1MWRVaWFtY2NjYlV2TUhFNjBLdTJiaFRIV2p2c2lPSGhaaUdwOUppdW1UMVp1ZmNpaTR4bFRQT21CNXJmaEtiSjkwbHZQZ2g5ZnJHZU43OWg1aUdSeXltSmZJYlVQWDNMSGZQcjlnU1V6bmpqQ20vbTI4bHBnTkdMS1lsOHJ2NXNaemlHNG1wbk1UVUgySWFIc21ZVG8vNXVzSCtRNTI5WjFldStSVmJZaW9uTWZXSG1JWkhMS2FaUnJYb3BVMTIxSGhZMzdLYmxhazR4SFR3RXROQlFVd2IxWXIxMit5bzhYRDJ6S1h1dVlXUW1NcEpUUDBocHVFUmkrbmtCdFg2eVNFN2FuamEydlVwL2lVeHZURzBrWmpLU1V6OUlhYmhrWHpPTkU2ZVdMWEpQYTlRRWxNNWlhay94RFE4VWpFOThacjVkc1R3OVBUazQzbmJ2U01scG5JU1UzK0lhWGlrWW5ycTlDZnNpT0g1eTdwL21aZzU1eFZNWWlvbk1mV0htSVpISktZNlpKZmMrWndkTVN5SE83djFNUlBqYzZWOUVsTTVpYWsveERROElqSE5OS29scTdmWUVjTXlyWEdWZTA2aEphWnlFbE4vaUdsNFJHSWEwOFduVGR2M3hmY2kvYzlLVE9Va3B2NFEwL0JJeEhUOHRFVjJ0SEMwZCtqVGUzMnN1dVlUaThSVVRtTHFEekVOajNkTTlTbiszT2MzMk5IQ1lLN2Vuelh6U2ZkODRwS1l5a2xNL1NHbTRmR042ZkFmekxNamhXUEd2SmVkYzRsVllpb25NZldIbUliSEs2YVRHOVRjdjRWZGxkNitjSTBKbDNzK2NVcE01U1NtL2hEVDhBdzZwdGxJblgvSG4rMG9ZYmlwZVZVOC95VkpmeVNtY2hKVGY0aHBlQVlWMDB5RE92ZjJaK3dJeGFlN0o2OStOUHZGMGx5UjlrbE01U1NtL2hEVDhQUTdwaVprK3JUZUhHdjNQclhlZm5YeE9kamVxY1pOWGVTZVV5bEpUT1VrcHY0UTAvQWt2blYvNzdzdGZkYUpENmxoVnpTckU2K2VyMDYvYWJISzNMMWMvU0h3Qy9PWHZibTFNQS9YUGlzNWlhbWN4TlFmWWdxR2c0YzcxVlgzUDE5WUNidjJWMGxLVE9Va3B2NFEwNkZOUjFlM2Vualp1eXJ4M1FlYys2bWtKYVp5RWxOL2lPblFwTDJ6U3pXdDJOQjdTbC9LRjVrK1QySXFKekgxaDVnT0hmTDV2SHE3WlkrYU1tZWxTbHlnVjZMbEd0RStpYW1jeE5RZllsclpmTngyV0sxNmI0ZTYwYnpUVTdaUkpTWjVQTmFsSmpHVmM5SnZscW5sYjI0dFhJRU02Y3AzL3EyTy9mNWM1NXdHWmFaUlBmanNQNXovVnJIOTNjcU4raHZNNDZMRHhEbnFwWGUzTzhjdXBpdmUycVl1dWVzNTk1ejY0UWxYejFlNzk3ZXJsdGEyaXZETkxidlYyazJ0aFgzejZ5Zldxb2wzUHFkT01EL3dMOWFuOGZxSHRXc2ZsTDNFRkxFRU5LZTQ1dVZJWmxWZTdwcnRNRmZoeStsS3ZJVEVGQkZSUUdLS2lDZ2dNVVZFRkpDWUlpSUtTRXdSRVFVa3BvaUlBaEpUUkVRQmlTa2lvb0RFRkJGUlFHS0tpQ2dnTVVWRUZKQ1lJaUlLU0V3UkVRVWtwb2lJQWhKVFJFUUJLemFtdWFqVnVjR0lpTVh4b0sxUGhaRnRhSEpzTENKaWNjeEZ1Mng5S293cm1zYzdOeGdSc1JobW9sL1krbFFnNWprTTEwWWpJa3FhaS9LMk9oVktydWtGNTRZaklrcWFpM2JZNmxRd3VhamJ1ZkdJaUJMbXRPZmNkN3d0VGdXVGk2WTdkd0Fpb29TNWFKbXR6UkNnUG5yTnVSTVFFWDNNUnEyMk1rT0liT05HNTg1QVJCeU11YVlLZlNsVWY4aEZpL1FPeU91VnFudm5JQ0ora2ViS2ZYM1RXbHVWSVV3Mk9rMnZVbHVKS2lJTzJGeTBONUZ0dXM3V0JBcVlxTlpINi9USGZUcXNuWW42WnIyekVCR1AwS3hDczFHYmJzU1dSS1poZ3EwSEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVCcGtVajhCNEFvbStNYlQrM0pBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiMmE1NWFlZTYyN2NiNDJjMGJjNmUwNGVmZTk5OWU4OGEiLCJvcHRpb25zIjp7InJrIjp0cnVlLCJjbGllbnRQaW4iOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOnRydWUsImFsd2F5c1V2IjpmYWxzZX0sIm1heE1zZ1NpemUiOjUxMCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0IjoxLCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjk0LCJ0cmFuc3BvcnRzIjpbIm5mYyJdLCJtaW5QSU5MZW5ndGgiOjQsImZpcm13YXJlVmVyc2lvbiI6MjYyMTQ0LCJyZW1haW5pbmdEaXNjb3ZlcmFibGVDcmVkZW50aWFscyI6MzB9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0wOC0yOSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyNjIxNDQsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiSElEIENyZXNjZW5kbyA0MDAwIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNDA4MjkwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblByb2ZpbGVzIjpbImNvbnN1bWVyIl0sImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMDgtMjkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MjYyMTQ0fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI0LTEwLTAyIn0seyJhYWd1aWQiOiI4MjBkODllZC1kNjVhLTQwOWUtODVjYi1mNzNmMDU3OGY4MmEiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjgyMGQ4OWVkLWQ2NWEtNDA5ZS04NWNiLWY3M2YwNTc4ZjgyYSIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJJRG1lbG9uIEF1dGhlbnRpY2F0b3IifSwiZGVzY3JpcHRpb24iOiJJRG1lbG9uIEF1dGhlbnRpY2F0b3IiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MiwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InZvaWNlcHJpbnRfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJsb2NhdGlvbl9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZhY2VwcmludF9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImV5ZXByaW50X2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiaGFuZHByaW50X2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGF0dGVybl9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQnl6Q0NBWEdnQXdJQkFnSUpBTm1NTks2alZwdXVNQW9HQ0NxR1NNNDlCQU1DTUVFeEpEQWlCZ05WQkFvTUcxWmhibU52YzNseklFUmhkR0VnVTJWamRYSnBkSGtnU1c1akxqRVpNQmNHQTFVRUF3d1FWbUZ1WTI5emVYTWdVbTl2ZENCRFFUQWdGdzB5TWpFeU1UUXhPRFF4TURsYUdBOHlNRGN5TVRJd01URTROREV3T1Zvd1FURWtNQ0lHQTFVRUNnd2JWbUZ1WTI5emVYTWdSR0YwWVNCVFpXTjFjbWwwZVNCSmJtTXVNUmt3RndZRFZRUUREQkJXWVc1amIzTjVjeUJTYjI5MElFTkJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVhbFlnRW9wbktTY0FtK2Q5ZjFYcEdCM3pia1pDRDNoWkVLdXhUY2xwQllsajR5cE5SZzBnTVNhN2dlQmdkNm5jazUwWWFWaGR5NzV1SWMyd2JXWDh0Nk5RTUU0d0hRWURWUjBPQkJZRUZPeHlmMGNEczhZbCtWbldTWjF1WUpBS2tGZVZNQjhHQTFVZEl3UVlNQmFBRk94eWYwY0RzOFlsK1ZuV1NaMXVZSkFLa0ZlVk1Bd0dBMVVkRXdRRk1BTUJBZjh3Q2dZSUtvWkl6ajBFQXdJRFNBQXdSUUloQU8yWHVpUkRYeHkvVWtXaHN1WlFZTlVYZU9qMDhBZVRXQURBcVh2Y0EzMGhBaUJpMmNkR2Q2MVBOd0hEVFlqWFBlblBjRDhTMHJGVERuY05XZnMzRS9XRFhBPT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBZlFBQUFIMENBWUFBQURMMXQrS0FBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUJQNlNVUkJWSGdCN2QzZGJselhkUWZ3ZFNqSkxwbzJvTk1HL1VqUjBFVlM5SzdxRTBRQzhvbGV0TG5MWGEwWHFLMG5pUHdFY1o0Z01sQUV2YlF2aWw0Rm9WK2dwWU1VTmZ3aGoyeDltS0VzTVlvbFM1dzU1L1JzeXBQS01rbk5rRE56OWpubjl3TnNVUVI5WVV2bVgydnZ0ZGFPQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFGaVdJaUFqZDM3MG80MjEwNmRmS09yNFZoM0ZSa1M5RVN4QU1YcjBZNzNiL0UrLysrakRlaFRGMm01ZDE3dFZGRmVqYW42K1Z1M0dNOCtNbnJ0OGVUZUFUaEhvWk9ITzJiL2JpRC82MHMrS3YvaWJjOFV6endZdEs0cmRGUGpOSDZ5YTBDOUdkZk5YTmFuZWpEODR2U1hzSVU4Q25kYWxNSytqK3VXMEdpL1cvelNLci81VkNQWk1OV0ZmMVBWVzg4RldXZFZ2UkZHTm52djV6N2NDYUpWQXAzVzN6Lzd0K3djZHJRdjJEbms4NU12NmRaVThySjVBcDFWM3puN2pYSE5YL3N1anZrYXdkOVpXRWNWbUN2am4vdjNmTmdOWUtvRk9xKzZjL2ViUDZvZ1hadmxhd2Q1dHpUZWJ6WWkxeStXWnRUZWE2bjBVd0VJSmRGcDErK3czLzd2NTRldzgvNHhnNzRXdEtOWXVWNmZYWGhmdXNCZ0NuVlkxZ1g2bitXRTlqa0d3OTRQS0hSWkRvTk9xSnREck9DSEIzZytUeVNUZWYrZks1WjNiZDEvOXdlaXR6UURtSXRCcDFTSUNmVXF3ZDFNSzhvOXVmQlRiTjdlam5KU2ZmYmJZTEtLKy9PM1IyNjhHTUJPQlRxdE9jdVIrR01IZUhTbklyMzk0L2JFZy80S3RPdW9MM3gyOVk4NGRua0tnMDZyRFp0QVhRYkRuNis1djc4YVZkNjdFM3NPOW1iNCtWZXVuWXZ6eStkRm9GTUNCQkRxdFdtYWdUd24yZktRZ3YvN0I5ZmpkM2QvRi9PcmRNdXFYdno5Njk1VUF2a0NnMDZwVkJQcVVZRy9QeVlMODg1cHZXcU5Uc1hkZXRRNmZKOUJwMVNvRGZVcXdyODdEQncvamc5RUhjZWZqTzdGb1ZjVEwzeHU5ZlNtQWZRS2RWclVSNkwvM3g4L0YycC84ZVJSZituS3dXS2x6UFZYa3FYTjl1ZXJOMHpHK29Gb0hnVTdMV2czMHFTYlExNzc2TmNHK0FBZVBvQzFYT29JZlIzWGhCNk4zTndNR1RLRFRxaXdDZlVxd0gxc2JRZjRrUi9BTW5VQ25WVmtGK3BSZ244dk85czcrUFhsYlFmNjR6OGJiTGpaSDhKNXVaWEFFT3EzS010Q25CUHVSNXAwbFh4VmQ4QXlWUUtkVldRZjZWQXIyci94WkZGLytTckRZRWJSbEVlb01rVUNuVlowSTlLa3p6MGJSVk94cnozMDFocWdMUWY1NTlXNGRjZDdhV0laQ29OT3FUZ1g2MU1DQ1BjMlNwMzNydDM1eks3cW4zcTJpdXZDOTBYdXZCZlNjUUtkVm5RejBxWjRIKytwbXlaZXZpUEtGYjQvZTgzSWJ2U2JRYVZXbkEzMnFaOEdld3dqYU1naDErazZnMDZwZUJQcFV4NE85cjBIK3VFbFU1eTJnb2E4RU9xM3FWYUJQZFREWTB5eDV1aWZQYlFSdDhlcmQwekgrQjkzdjlKRkFwMVc5RFBTcERnUjc2bHkvK3Y3VitQVGVwekVVUnRyb3E5TUJMTWY0WWRRM3JrUzVjejI3WU8vZUNOcmkxQkVia3pqenMrYkQ4d0U5b2tLblZiMnUwSitVUWNVKzVDRC9vdnFWNzR6ZXVSalFFd0tkVmcwcTBLZGFDUFp1ejVJdlR4WGxEODJvMHhjQ25WWU5NdENuVmhEc1EraGNQeGxOY3ZTSE8zUm95eEx2MkFYNXJJcDE5K24waFFxZFZnMjZRbi9TZ2lyMmF4OWNFK1J6S3FPNitQM1J1NjhFZEpoQXAxVUMvUURIRFBiaHpKSXZnNk4zdXMrUk8rUm16cU40bmV1TDRPaWQ3bE9oMHlvVitndytxOWlMTDMwNWltZWUvZjJuQmZuaU9YcW55d1E2clJMb2MwakIzbFRyRDU3OTQ3aDZWWkF2eC83UisvUE4wZnR1UU1lc0JkQU42U2orTjlkaTg4MWZDZk9sMlQ5Ni8zRkFCd2wwNkpEM0hwU3hVNVp4djY2Q1pTbGUrcytOYjV3TDZCaUJEaDN5cTN1VC9SKzNTNTNzeTNRNkNsVTZuU1BRb1NPdVBpeDM3MVgxL3NjUDZqcHVWNU5nV1lwenFuUzZScUJEUjd6OWFibisrTTl2bFpPb29nNldRNVZPMXdoMDZJQzdaVFhhSG4vKzNyeHN3bnluVktVdmp5cWRiaEhvMEFHL3ZsZHVIUFQ1ZE96K3NGYWxMNHNxblM0UjZKQzVUOG82cmp3OGZDLzdSeHJrbGtpVlRuY0lkTWpjdExQOU1HbUU3VjVWV29TeUpLcDB1a0tnUThiMnEvTzk2cWxoZmJNY3IydVFXeFpWT3QwZzBDRmpOL2VheXJ1dTE1LzJkZU13eHJaTXFuUzZRS0JEeG41OXYzeHFtRS9kTHNzWWE1QmJrdUxjTHpjMlp2NjFnRFlJZE1oVVd2TTZYU1F6aXpURzlwdHE3QzU5U1NieHpJc0JHUlBva0ttbk5jTWQ1RzVWcnR2enZpejFTd0VaRStpUW9jZlh2TTVycHh3SHkxQ3NhNDRqWndJZE12VGttdGQ1cEFwZGc5eHlhSTRqWndJZE1uTjdVc1dUYTE3blpjLzcwcHpWSEVldUJEcGs1cTM3Wlp4VWFwQnJRbDJEM01JVjYrTTQ4eThCR1JMb2tKR25yWG1keDhmVlpOMFkyK0lWRWY4Y2tDR0JEaGs1VG1mN1VXN1k4NzRNanQzSmtrQ0hUQ3l5T3A5S0RYTEcyQmF0V0Mvam1YOEt5SXhBaDB4OHVMZllNSis2TWRtdjB0Mm5MMUFWOWJtQXpBaDB5TVFpbXVFT2t2YTgzNnJHam9nWHlEMDZPUkxva0lGNTE3ek9LKzE1TjhhMlNNWDZmMng4ODJ4QVJnUTZaR0RSelhCUFNtTnMyNlU5NzR0MEp1SmJBUmtSNk5DeVpWZm5VN3YydkM5WWNTNGdJd0lkV25ibHdYTHV6Zzlpei92aUZCcmp5SXhBaHhZdFlzM3JQRktGM2xUcXdTSVU2Nzk0L3ZtdkIyUkNvRU9MbHRYWmZwVDBacm9HdWNXbzZ6UG5BakloMEtFbHkxZ2tNNHV5cnRlOXhyWVlkZFE2M2NtR1FJZVdMTHV6L1NocGpNMmU5NU9yTmNhUkVZRU9MV2lyT3A5S1kyejJ2SjljWWE4N0dSSG8wSUpWZHJZZnhwNzN4YmdmWnpZQ01pRFFvUVh2WlJEb1NWT2xXelp6UXM5RzhmY0JHUkRvc0dLcldpUXppN0VHdVJQVEdFY3VCRHFzV0p2TmNBZTVWVTdzZVQ4WmdVNFdCRHFzVUU3VitWUnFrTnNwVmVrbklOREpna0NIRmNxaEdlNGc2ZGo5UVYyNVR6K1dZbDJuT3prUTZMQWkyM3VyWGZNNnIrM1NtK25IcGRPZEhBaDBXSkZjT3RzUGswYlk3bFdsS3YwWWRMcVRBNEVPSzlEMklwbFozV3lxZEExeTgyditpMjBFdEV5Z3d3cmsxdGwrbUhFVFRjYlk1bGRIdlJIUU1vRU9TOWFWNm56S252ZmpLSFM2MHpxQkRrdVdhMmY3WWRJWVczcGlOWmlIaGtKYUo5Qmh5WEp2aGp2STNhcGN0K2Q5ZG9VN2RESWcwR0dKY2x3a002dWRjaHpNN2hmUFAvLzFnQllKZEZpaXJqVERIU1JWNkJya1psZldwellDV2lUUVlVbTZYSjFQMmZNK3U3Vlkyd2hva1VDSEplbGFNOXhCVW9OY0Urb2E1R2JRL01GSFl4eXRFdWl3QkxtdmVaM0h4OVZrM1JqYjB4VlJDSFJhSmRCaENiclkyWDZVRytWZWNEVExaV2liUUljRjY5b2ltVm1rQmpsamJKQTNnUTRMMXVYTzlxUGNtT3hYNmU3VEQyRVduYllKZEZpZ1BsYm5VMm5QKzYzS0U2dVFLNEVPQzlTSHp2YWpwRDN2eHRnT1ZrZXhFZEFpZ1E0TDFMZG11Q2VsTWJidDBwNTN5SkZBaHdYcHd5S1pXZXphOHc1WkV1aXdJSDF0aGp1SVBlOWZwQ21PdGdsMFdJQ2hWT2RUcVVKdkt2VUE4aUhRWVFINjNneDNrUFJtdWdZNXlJZEFoeFBxMDVyWGVaUjF2ZTQxTnNpSFFJY1Q2bnRuKzFIU0dKczk3NUFIZ1E0bjBPZEZNck5JWTJ6MnZFTWVCRHFjd0pBNjJ3OWp6enZrUWFERE1RMjlPbjljVTZWYk5nTXRFK2h3VEc5OXFqcWZHbXVRZzlZSmREaW1EeDg2Wm43Y3JYSml6enUwU0tERE1ReHRrY3dzVW9QY1RqbmtLcjEyN1VDckJEb2NnMmE0ZzZWajl3ZDFOY2hncTZNUTZMUktvTU9jVk9kSDJ5NjltUTV0RU9nd0o4MXdSMHNqYlBlcWNvalZxZ3FkVmdsMG1FTmE4M3Bub2pwL21wdE5sVDYwQnJuQ0hUb3RFK2d3aHlHdmVaM0h1QWx6WTJ5d1dnSWRabVNSekh5R3R1ZTkrVGNkQmJSSW9NT01kTGJQSjQyeHBTZFdBMWdKZ1E0elVKMGZ6OTJxWEIvS252Y2lpbEZBaXdRNnpFQm4rL0h0bE9NWWdscFRIQzBUNkRBRGExNlBMMVhvUTJpUUsySnRGTkFpZ1E1UFlaSE15UTFoejNzZGc1eTlKeU1DSFo1Q005ekpwUWE1SnRSN0hYampLSDRiMENLQkRrZFFuUy9PeDlWa3ZjOWpiSDhZNDFGQWl3UTZIRUYxdmxnM3lyM29wM3IzL0dqa3lKMVdDWFE0UkZyenFqcGZyTlFnMThjeHR0cklHaGtRNkhDSS96V3F0aFEzSnZ0VmVxK3FXWHZjeVlGQWh3T2tSVExYOW95cUxVUGE4MzZyNnQwVHExc0JMUlBvY0FCMzU4dVY5cnozYVl6TkhuZHlJTkRoQ2RhOExsOGFZOXN1KzdQbjNWSVpjaURRNFFtcTg5WFk3ZEdlOTcyb3JnYTBUS0REWS9icXBuSWN1enRmbGI3c2VmL0gwVHZ1MEdtZFFJZkhwSjN0UnRWV0oxWG9UYVVlWFZacmlDTVRBaDBlNDdoOTlkS2I2UjF2a0JzRlpFQ2d3MmVzZVcxSFdkZnJYWDZOclZDaGt3bUJEcDlSbmJjbmpiRjFkODk3SWRESmdrQ0hzT2ExYldtTXJhdDczblc0a3d1QkRvMWYzVmVkdDYyYmU5N3JYUjN1NUVLZ00zaHBrWXhSdFR3MFZYclhsczBJYzdJaDBCazhkK2Y1R0hldlFVNmdrdzJCenFCWjg1cWZXK1drUTN2ZTF6WURNaUhRR1RUVmVYNVNnOXhPMlkxZmw5UHg4STJBVEFoMEJzdmRlYjdTc2Z1RHVzcjZQajF0aURzL0dua0huV3dJZEFZcmhibFJ0WHh0bDdtL21WNjdQeWNyQXAzQmN0eWV0elRDZHE4cXM2MkFpMWg3TFNBakFwMUJzdWExRzI0MlZYcXVEWEtUZVBobVFFWUVPb09rT3UrR2NSUG1PWTZ4cGZ2ekg0eEdvNENNQ0hRR3g1clhic2x4ejNzUjlXWkFaZ1E2ZzJQTmE3ZWtNYmIweEdwa3BJN2EvVG5aRWVnTWlsRzFicnBibGV2NTdIbXZkNzg3ZXRmOE9ka1I2QXlLdS9QdTJpbkhrWU02aXMyQURBbDBCc09hMTI1TEZYb09EWExOTjAzSDdXUkpvRE1ZcXZQdXkySFArNm5ZZXowZ1F3S2RRWEIzM2crcFFhNEo5ZFlhNUpvL1NyeG0zU3U1RXVnTWdqV3YvZkZ4TlZsdmE0ek5jVHM1RStnTWd1UDJmcmxSN3NYcTFidU8yOG1aUUtmM3JIbnRuOVFndCtveE5zZnQ1RTZnMDN1cTgzNjZNZG12MGxjWXNQWGxnSXdKZEhyTm10ZitTbnZlYjFXcmVXSzErUjAwc2t5RzNBbDBlczJhMTM1TGU5NVhNY1pXUkZ3T3lKeEFwN2VNcXZWZkdtUGJMcGUvNTMwU2U2OEdaRTZnMDF2dXpvZGhkOGw3M3V2bTd0eFRxWFNCUUtlWHJIa2RsdVh1ZWRjTVJ6Y0lkSHBKZFQ0c3FVSnZLdlZZTk0xd2RJbEFwM2ZjblE5VGVqTjkwUTF5elRmSVN3RWRJZERwSFd0ZWg2bXM2L1ZGdnNhV3F2TnZqOTdXREVkbkNIUjZ4M0g3Y0tVeHRrWHRlVmVkMHpVQ25WNng1blhZMGhqYkl2YThxODdwSW9GT3I2ak9XY1NlZDlVNVhTVFE2WTBQSDZyT2VhU3Awbys5YkVaMVRsY0pkSHJqclUvTm5mUEkrQVFOY3FwenVrcWcwd3RHMVhqU3JYSXk5NTUzMVRsZEp0RHBCWGZuUENrMXlPMlU4LzIrVUozVFpRS2R6clBtbGNPa1kvY0hkVFhqZlhxOXFUcW55d1E2bmFjNjV5amI1V3h2cGs5aWZDR2d3d1E2blphcTgydDc3czQ1WEJwaHUxZVZUNm5TcTFlOHFFYlhDWFE2TFRYQzdkVkcxVGphemFaS1A2eEJMalhDVFdMeTA0Q09FK2gwbXVOMlpqRnVZdnV3TWJiVUNLYzZwdzhFT3AxbHpTdnpPR2pQZXgzMVpZMXc5SVZBcDdOVTU4d2pqYkdsSjFhblAwOUg3VTNFdnh6UUV3S2RUckxtbGVPNFc1WHIwejN2ZFpRWEhiWFRKd0tkVHJMbWxlUGFLY2ZOMzZ0TDN4dTk5MXBBandoME9zZWFWMDdpWGxXTnZqTjYxMUU3dlNQUTZSeDM1eHhYWGNlb3FzYm5BM3BJb05NcDFyeHlFbFU5dVhqeG80OUdBVDBrME9rVTFUbkhWZGYxcFlzM2I3bzNwN2NFT3AyaE91ZTRxaXBlZWZIR05mZm05TnJwZ0k3NGNFK1lNNyttTXQ5NjZlYTFpd0U5cDBLbk05NjZMOUNaejZNbXVNa1BBd1pBb05NSjFyd3lyMmxIdXlZNGhrS2cwd21hNFppSE1HZUlCRHJaVTUwekQySE9VQWwwc25mbGdidHpaaVBNR1RLQlR0WnVUeXByWHBtSk1HZm9CRHBaMDluT0xOSm9takJuNkFRNjJiSklobGxVZFZ5dTduOGl6Qms4aTJYSWxzNTJuaWF0YzMzSkJqallKOURKa3VxY285UVJ1MVUxdVdBM08vdy9nVTZXckhubE1JL3V5eWMvZE1RT255ZlF5WkptT0E2U0hsbXhseDBPSnRCcFdiMys1R2Nza3VGSmFTU3RxT29YWHZybzJoc0JIRWlnMDdZdkJMcG1PQjZYR3QrcSs1Lzg5T0x1N200QWh4TG9aRVYxemxRZDlXWlZUaTY0SzRmWkNIU3lZczByS2NpTE1pNjk2SGdkNWlMUXljYjJuald2UTVidXlhT29McjE0L2ZxckFjeE5vTk95WXRSOEs5OUlINzJuT2gra1ZKRTNmNy84NGcxQkRpY2gwR2xadmQvb1pKSE04RGhhaDhVUzZMU3FpTmlxSTg3cWJCK0d0T0d0T1Z0L1JkYzZMSjVBcDIxYnF2TitTeUZlVkhHNUNmTFhWT093UEVWQWkrNmMzVmovcjArSzkvL24wOGw2MEJ2TmNmcFdVUldiS2NUL1ZZakRTZ2gwV3ZlVHIzM3RwVk94OXBPZ3M2WUJYdGZWVnZYZzN1dU8wMkgxQkRwWitPbGYvdldQaTZLK0ZHUnQvdzQ4NmxFUnhWWmROQ0UraWEzeXdTZHZDbkJvbjBBbkcwMmxmdlpVdmZaaUV4Um5tOEE0RzZ6RW8wYTFlQlRJUll5SzRyT2ZWN0ZibjZwSE1hbDNxMU5uM294N3V5UEJEUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCRDlIL0VEam1LaWxKYmFnQUFBQUJKUlU1RXJrSmdnZz09IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiRklET18yXzAiXSwiZXh0ZW5zaW9ucyI6WyJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiI4MjBkODllZGQ2NWE0MDllODVjYmY3M2YwNTc4ZjgyYSIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJ1cCI6dHJ1ZSwidXYiOnRydWV9LCJtYXhNc2dTaXplIjoyMDQ4fX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMTktMDItMDgiLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IlZhbmNvc3lzIGlPUyBBdXRoZW50aWNhdG9yIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAxOTAxMDkwMDIiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjAuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAxOS0wMi0wOCJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMTktMDItMDgifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyJjNTVmNzRjNzBjNjhlOGRjZTViN2ZkYjRjZGRhNzcyYWQ5Mjk0YzY3IiwiZmQzNjU3M2QyNGJlM2Y3ZjMyYWQ1MDQwMjcxYWI2MTAzNWExZmNhZCJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyJjNTVmNzRjNzBjNjhlOGRjZTViN2ZkYjRjZGRhNzcyYWQ5Mjk0YzY3IiwiZmQzNjU3M2QyNGJlM2Y3ZjMyYWQ1MDQwMjcxYWI2MTAzNWExZmNhZCJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiR29UcnVzdCBJZGVtIENhcmQgVTJGIEF1dGhlbnRpY2F0b3IifSwiZGVzY3JpcHRpb24iOiJHb1RydXN0IElkZW0gQ2FyZCBVMkYgQXV0aGVudGljYXRvciIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyLCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50IiwicmVtb3RlX2hhbmRsZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWxlc3MiLCJuZmMiLCJibHVldG9vdGgiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUJ6akNDQVhPZ0F3SUJBZ0lKQU1oVi92UVl1NEtBTUFvR0NDcUdTTTQ5QkFNQ01Ec3hJREFlQmdOVkJBTU1GMGR2VkhKMWMzUWdSa2xFVHpJZ1VtOXZkQ0JEUVNBeU1SY3dGUVlEVlFRS0RBNUhiMVJ5ZFhOMFNVUWdTVzVqTGpBZUZ3MHhPVEV5TURRd056QXpNREZhRncwME9URXhNall3TnpBek1ERmFNRHN4SURBZUJnTlZCQU1NRjBkdlZISjFjM1FnUmtsRVR6SWdVbTl2ZENCRFFTQXlNUmN3RlFZRFZRUUtEQTVIYjFSeWRYTjBTVVFnU1c1akxqQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJKSGdLOWZOcU5FV0lZVHNaL2dOaTE3enBFcks3RkMxWW8rRnpxUlZNWUdVSmdBSjl2ZzMxaVRDSjFWWXhiQUtNUWJsTEdrVm4vZGZQNzNnZVRLZWQ5T2pZREJlTUF3R0ExVWRFd0VCL3dRQ01BQXdEZ1lEVlIwUEFRSC9CQVFEQWdFR01CMEdBMVVkRGdRV0JCUmdMWFdkV2VyMWtTR3BwZ1BsaVppMUhzWVBoREFmQmdOVkhTTUVHREFXZ0JSZ0xYV2RXZXIxa1NHcHBnUGxpWmkxSHNZUGhEQUtCZ2dxaGtqT1BRUURBZ05KQURCR0FpRUF1anJLV1p3K1MwVGZHMWJKSmNzcW1HdTVXTGJCMkVnb3JEMmhBMnE2Qm9JQ0lRQ2l5eG52QW42TWkrRGRSbnczU1FHUVpvTEtGS3dIcjRYR05JTzVwQUhBSEE9PSIsIk1JSUJxRENDQVUrZ0F3SUJBZ0lCQVRBS0JnZ3Foa2pPUFFRREFqQTdNU0F3SGdZRFZRUUREQmRIYjFSeWRYTjBJRVpKUkU4eUlGSnZiM1FnUTBFZ01qRVhNQlVHQTFVRUNnd09SMjlVY25WemRFbEVJRWx1WXk0d0lCY05NakV3TXpBeU1EWXlNekUzV2hnUE1qQTFNVEF5TWpNd05qSXpNVGRhTURzeElEQWVCZ05WQkFNTUYwZHZWSEoxYzNRZ1JrbEVUeklnVW05dmRDQkRRU0F5TVJjd0ZRWURWUVFLREE1SGIxUnlkWE4wU1VRZ1NXNWpMakJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCQTc2WnlHM2UrRFpvVy9Ldk0zNlhKQUo2Qkw5a1hNTmpFdjRxR0lENWxBOFo4dVJlTTFZZk1pbzVuRUhMVTJTWkxRM3FYUlJ2eEdONEkrSDUrNmZWdzJqUWpCQU1BOEdBMVVkRXdRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0VHTUIwR0ExVWREZ1FXQkJScytVa21NNXhVazYvejVRTnRXQjI2aTR3NzdEQUtCZ2dxaGtqT1BRUURBZ05IQURCRUFpQkErSVg1Ri84N1cvZW1aa2lKVEhxcmlMRlpPYTc5N3pzRS8wS1A3QVU1UWdJZ0I2NHhGcVBTQkM0S2kxVXJyTlg5VjJ0aGIrNDVSYnRTVm1pNjZXVitnbEU9Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWpDQVlBQUFEMTdnaGFBQUFBQkdkQlRVRUFBTEdPZlB0Umt3QUFBQ0JqU0ZKTkFBQ0hEd0FBakE4QUFQMVNBQUNCUUFBQWZYa0FBT21MQUFBODVRQUFHY3h6UElWM0FBQUtMMmxEUTFCSlEwTWdVSEp2Wm1sc1pRQUFTTWVkbG5kVVZOY1doOCs5ZDNxaHpURFNHWHFUTGpDQTlDNGdIUVJSR0dZR0dNb0F3d3hOYklpb1FFUVJFUUZGa0tDQUFhT2hTS3lJWWlFb3FHQVBTQkJRWWpDS3FLaGtSdFpLZkhsNTcrWGw5OGU5MzlwbjczUDMyWHVmdFM0QUpFOGZMaThGbGdJZ21TZmdCM280MDFlRlI5Q3gvUUFHZUlBQnBnQXdXZW1wdmtIdXdVQWtMemNYZXJySUNmeUwzZ3dCU1B5K1planBUNmVELzAvU3JGUytBQURJWDhUbWJFNDZTOFQ1SWs3S0ZLU0s3VE1pcHNZa2lobEdpWmt2U2xERWNtS09XK1NsbjMwVzJWSE03R1FlVzhUaW5GUFp5V3d4OTRoNGU0YVFJMkxFUjhRRkdWeE9wb2h2aTFnelNaak1GZkZiY1d3eWg1a09BSW9rdGdzNHJIZ1JtNGlZeEE4T2RCSHhjZ0J3cExndk9PWUxGbkN5Qk9KRHVhU2tadk81Y2ZFQ3VpNUxqMjVxYmMyZ2UzSXlremdDZ2FFL2s1WEk1TFBwTGluSnFVeGVOZ0NMWi80c0dYRnQ2YUlpVzVwYVcxb2FtaG1aZmxHby83cjROeVh1N1NLOUN2amNNNGpXOTRmdHIveFM2Z0JneklwcXMrc1BXOHgrQURxMkFpQjMvdytiNWlFQUpFVjlhNy94eFhsbzRubUpGd2hTYll5Tk16TXpqYmdjbHBHNG9ML3JmenI4RFgzeFBTUHhkcitYaCs3S2lXVUtrd1IwY2QxWUtVa3BRajQ5UFpYSjR0QU4venpFL3pqd3IvTllHc2lKNWZBNVBGRkVxR2pLdUx3NFVidDViSzZBbThLamMzbi9xWW4vTU94UFdweHJrU2oxbndBMXlnaEkzYUFDNU9jK2dLSVFBUko1VU56MTMvdm1ndzhGNHBzWHBqcXhPUGVmQmYzN3JuQ0orSkhPamZzYzV4SVlUR2NKK1JtTGErSnJDZENBQUNRQkZjZ0RGYUFCZElFaE1BTld3Qlk0QWpld0F2aUJZQkFPMWdJV2lBZkpnQTh5UVM3WURBcEFFZGdGOW9KS1VBUHFRU05vQVNkQUJ6Z05Mb0RMNERxNENlNkFCMkFFaklQbllBYThBZk1RQkdFaE1rU0I1Q0ZWU0FzeWdNd2dCbVFQdVVFK1VDQVVEa1ZEY1JBUEVrSzUwQmFvQ0NxRktxRmFxQkg2RmpvRlhZQ3VRZ1BRUFdnVW1vSitoZDdEQ0V5Q3FiQXlyQTBid3d6WUNmYUdnK0UxY0J5Y0J1ZkErZkJPdUFLdWc0L0I3ZkFGK0RwOEJ4NkJuOE96Q0VDSUNBMVJRd3dSQnVLQytDRVJTQ3pDUnpZZ2hVZzVVb2UwSUYxSUwzSUxHVUdta1hjb0RJcUNvcU1NVWJZb1QxUUlpb1ZLUTIxQUZhTXFVVWRSN2FnZTFDM1VLR29HOVFsTlJpdWhEZEEyYUMvMEtuUWNPaE5kZ0M1SE42RGIwSmZRZDlEajZEY1lESWFHMGNGWVlUd3g0WmdFekRwTU1lWUFwaFZ6SGpPQUdjUE1ZckZZZWF3QjFnN3JoMlZpQmRnQzdIN3NNZXc1N0NCMkhQc1dSOFNwNHN4dzdyZ0lIQStYaHl2SE5lSE80Z1p4RTdoNXZCUmVDMitEOThPejhkbjRFbnc5dmd0L0F6K09ueWRJRTNRSWRvUmdRZ0poTTZHQzBFSzRSSGhJZUVVa0V0V0oxc1FBSXBlNGlWaEJQRTY4UWh3bHZpUEprUFJKTHFSSWtwQzBrM1NFZEo1MGovU0tUQ1pya3gzSkVXUUJlU2U1a1h5Ui9KajhWb0lpWVNUaEpjR1cyQ2hSSmRFdU1TanhRaEl2cVNYcEpMbFdNa2V5WFBLazVBM0phU204bExhVWl4UlRhb05VbGRRcHFXR3BXV21LdEttMG4zU3lkTEYway9SVjZVa1pySXkyakpzTVd5WmY1ckRNUlpreENrTFJvTGhRV0pRdGxIcktKY280RlVQVm9YcFJFNmhGMUcrby9kUVpXUm5aWmJLaHNsbXlWYkpuWkVkb0NFMmI1a1ZMb3BYUVR0Q0dhTytYS0M5eFdzSlpzbU5KeTVMQkpYTnlpbktPY2h5NVFybFd1VHR5NytYcDhtN3lpZks3NVR2a0h5bWdGUFFWQWhReUZRNHFYRktZVnFRcTJpcXlGQXNWVHlqZVY0S1Y5SlVDbGRZcEhWYnFVNXBWVmxIMlVFNVYzcTk4VVhsYWhhYmlxSktnVXFaeVZtVktsYUpxcjhwVkxWTTlwL3FNTGt0M29pZlJLK2c5OUJrMUpUVlBOYUZhclZxLzJyeTZqbnFJZXA1NnEvb2pEWUlHUXlOV28weWpXMk5HVTFYVFZ6TlhzMW56dmhaZWk2RVZyN1ZQcTFkclRsdEhPMHg3bTNhSDlxU09uSTZYVG81T3M4NURYYkt1ZzI2YWJwM3ViVDJNSGtNdlVlK0EzazE5V045Q1AxNi9TditHQVd4Z2FjQTFPR0F3c0JTOTFIb3BiMm5kMG1GRGtxR1RZWVpocytHb0VjM0l4eWpQcU1Qb2hiR21jWVR4YnVOZTQwOG1GaVpKSnZVbUQweGxURmVZNXBsMm1mNXFwbS9HTXFzeXUyMU9ObmMzMzJqZWFmNXltY0V5enJLRHkrNWFVQ3g4TGJaWmRGdDh0TFN5NUZ1MldFNVphVnBGVzFWYkRUT29ESDlHTWVPS05kcmEyWHFqOVducmR6YVdOZ0tiRXphLzJCcmFKdG8yMlU0dTExbk9XVjYvZk14TzNZNXBWMnMzWWsrM2o3WS9aRC9pb09iQWRLaHplT0tvNGNoMmJIQ2NjTkp6U25BNjV2VEMyY1NaNzl6bVBPZGk0N0xlNWJ3cjR1cmhXdWphN3liakZ1Slc2ZmJZWGQwOXpyM1pmY2JEd21PZHgzbFB0S2UzNTI3UFlTOWxMNVpYbzlmTUNxc1Y2MWYwZUpPOGc3d3J2Wi80NlB2d2ZicDhZZDhWdm50OEg2N1VXc2xiMmVFSC9Mejg5dmc5OHRmeFQvUC9QZ0FUNEI5UUZmQTAwRFF3TjdBM2lCSVVGZFFVOUNiWU9iZ2srRUdJYm9nd3BEdFVNalF5dERGMExzdzFyRFJzWkpYeHF2V3Jyb2NyaEhQRE95T3dFYUVSRFJHenE5MVc3MTA5SG1rUldSQTV0RVpuVGRhYXEyc1YxaWF0UFJNbEdjV01PaG1Oamc2TGJvcit3UFJqMWpGblk3eGlxbU5tV0M2c2Zhem5iRWQyR1h1S1k4Y3A1VXpFMnNXV3hrN0cyY1h0aVp1S2Q0Z3ZqNS9tdW5BcnVTOFRQQk5xRXVZUy9SS1BKQzRraFNXMUp1T1NvNU5QOFdSNGlieWVGSldVckpTQlZJUFVndFNSTkp1MHZXa3pmRzkrUXpxVXZpYTlVMEFWL1V6MUNYV0ZXNFdqR2ZZWlZSbHZNME16VDJaSlovR3krckwxczNka1QrUzQ1M3k5RHJXT3RhNDdWeTEzYys3b2VxZjF0UnVnRFRFYnVqZHFiTXpmT0w3Slk5UFJ6WVROaVp0L3lEUEpLODE3dlNWc1MxZStjdjZtL0xHdEhsdWJDeVFLK0FYRDIyeTMxV3hIYmVkdTc5OWh2bVAvamsrRjdNSnJSU1pGNVVVZmlsbkYxNzR5L2FyaXE0V2RzVHY3U3l4TER1N0M3T0x0R3RydHNQdG9xWFJwVHVuWUh0ODk3V1gwc3NLeTEzdWo5bDR0WDFaZXM0K3dUN2h2cE1Lbm9uTy81djVkK3o5VXhsZmVxWEt1YXExV3F0NVJQWGVBZldEd29PUEJsaHJsbXFLYTk0ZTRoKzdXZXRTMjEyblhsUi9HSE00NC9MUSt0TDczYThiWGpRMEtEVVVOSDQvd2pvd2NEVHphMDJqVjJOaWsxRlRTRERjTG02ZU9SUjY3K1kzck41MHRoaTIxcmJUV291UGd1UEQ0czIranZ4MDY0WDJpK3lUalpNdDNXdDlWdDFIYUN0dWg5dXoybVk3NGpwSE84TTZCVXl0T2RYZlpkclY5Yi9UOWtkTnFwNnZPeUo0cE9VczRtMzkyNFZ6T3VkbnpxZWVuTDhSZEdPdU82bjV3Y2RYRjJ6MEJQZjJYdkM5ZHVleCsrV0t2VSsrNUszWlhUbCsxdVhycUd1TmF4M1hMNisxOUZuMXRQMWo4ME5adjJkOSt3K3BHNTAzcm0xMER5d2ZPRGpvTVhyamxldXZ5YmEvYjErK3N2RE13RkRKMGR6aHllT1F1Kys3a3ZhUjdMKzluM0o5L3NPa2grbUhoSTZsSDVZK1ZIdGY5cVBkajY0amx5SmxSMTlHK0owRlBIb3l4eHA3L2xQN1RoL0g4cCtTbjVST3FFNDJUWnBPbnA5eW5iajViL1d6OGVlcnorZW1DbjZWL3JuNmgrK0s3WHh4LzZadFpOVFAra3Y5eTRkZmlWL0t2anJ4ZTlycDcxbi8yOFp2a04vTnpoVy9sM3g1OXgzalgrejdzL2NSODVnZnNoNHFQZWgrN1BubC9lcmlRdkxEd0cvZUU4L3MzQkNrZUFBQUFDWEJJV1hNQUFBN0VBQUFPeEFHVkt3NGJBQUFBSVhSRldIUkRjbVZoZEdsdmJpQlVhVzFsQURJd01UZzZNRFU2TWpnZ01UWTZOREk2TVRUOWh3cmZBQUFJSFVsRVFWUllSNTFYQzFCVTV4WCtkbGxnUWQ0UFVSQWZpU2hhTkcxaTdCaHRtMDVLVWtuVFdCK05RYTBZRzJPRGxqb09HazFpTzUxcU5HUWNrOW9rUkpzMDRJdzZwdU4wVEV4VGFPc1lTN1NTcGhwZjFLQVZCUlpoV1I0cklMdDdiNy96Mzd2c1FoYUMvUzcvc3Z6M3ZNLzV6L214NkFTR0NaMlAvRmdzOHBmNjZJTmZqTVY0T1d4WXpkL0RnK1pYWUVIbEo1L2p2Z1diOE9qcUhXaHNjYW45TzFVdUdGNEVoTVFVM3RyaFJ0N3FsM0dxc2hwSWlBRjhQcURyTnBZVjVPSDFGMWNnSmpvcUtGTENJK0lITjJ4NEVUQ1YvM3piSDVBOGNSRk9WVjhDUmljRFVaRkFOSmZWaXZJREZhajY5eGVLVGlra2o2YlJGSDF3NVlKQkl0RGY2ajlWbnNhOFozYlFXeThRUzYrdDVqdDN0NHJBMXMwRjJMenFjV09QNkwxYXA0eUtHRGZHM0NFR0M0UVlFQXlOangrMTE1djBLWSt1MTVHV3B5TW5YOGMwV1V0MVpEK2hJK2xoZldIUlR0M3I5Wm5VQmhwWGJkVFBJVncvanhHNlk4MFdjNWR5ZlFHNXdSaTBCdktMZDJOLzJRZk1jeXhnWjVnRmt1K1dkb3ljT0FaViszK051elBUakgzQ3Rmc2RPTllXMDFFZndwREFIWTFQQi8rMklXTmZLZUtYekRjSUI4Q2lNVkhCMWZ2Mkg0OWhaV0VKTU1JT3hJemdEdTNUV1A0ZFhUVEVodkpYaXJEMHNUa0dNZEZUZlFaMTMxNEFYM2NqRmJNdStDbFFoYWhpN3VYVGdzamtpUmh6N0JEc09kbnFEVmdmRnFheUx3SmZYRy9DN0NXL3dzM0x6RjlLb2xHZThxYW5WeWxmdTNZaFhudStRRWdWdk0ydGFKajNGRHFyanRMSFZPN1kxTDVFd0lkMnFyWlFSTHo2TlBZOTNHOUdiTzRpWkI0dEozbVlNcS9QQU11NEg5SERDSzV3UTdHUFhqZTFZc2FEOTZMaW5SZVlpV2doVTNDc2ZnN08wdGZvYXd5RlJDdEJ1Z3E1QzJIV1JHUldIWWJ1OVRFeTg2RnI3YVJMNG5zeGlXSnBuQzBwQTFuT2MwcVdNcSsreWNXejNBTkVtc3A3YnNNV2JzWEhIKzNDNmZlMjlTbHZlL2NRTGxqaTRDcDlpLzZta0ZtVWk4OXVyamFNM0xvZGszeDFpUHJtZllpZVBSUFp2aHNZdWIyRUtXZ210NGVVT25saTRXbXRnK1ptU2drVkFZZXpEYU56bGdKcFNUeERYcVNQVGtMOVgzY3JBa0gzeWM5dzQ0Y3I0R211VWVFV01ZWTMzYXJRRW45Y2dQU0RieGpFUkFlRmg5bXNMQ1BXa1luYWpCbndOVFNSTDR3R3RXTnlWeU9zVVhZelFTSk9NcUdXeHY3Q1ZKaTRObXNlcnN5YUJhMzVKcFZMMVF1TEY3MW9nSDNhMXpDcHJyYWY4cEszanlCK2FqNWk2TkRyYkU1KzJNYW0wMWl2aW9KUm5MTE1GQ2lvUFdQVExBc0Y5MGtwc2xIOEprZFJ3dTFVUWliOHBRSVR6djRONFpucGl1NUU5VVZFNU9Sanc1YTlRQnhURmhHT3drMEJ3K1FJRzlMN0kyQ0E2QXhTN0VjWTdHU1VFcElpNjBicTloM0kxdXN4SXZjNzZ2MzFteTVNbTdjQjMzcWtDQjVoVDQ0akU0OGlqNWhORFBrS0JBd1lCTW91dFhncTZGWEt4bWZWdnFCOWNTSEczck1NNXk1ZUF6S1luckJRUGdid1pmY0dTY0ZBeUFGU2o4VWdiMzExRHk1YVl1QStlQWpXOUJUajlJaUJicDZrTHM0SHZ5WnBZRUVZT2dYc1RBTVpCTUlrM2l1WjFraGN1ZXNCTlA1aUhWT1R5SG5Ed1NSR2Q3TlpPVndvTGx5QWpUOWJRQ040eENncU10eG9UbjVJN1JoRkdFREFBRTR2dFFaQVRMTEtZMkhuNnZiQXcwa25QVUIyZGEwWFdrTUw3djE2RnRwcTM4UEw2L1BaaUdpUU1QR1hQVndpRTRDU3d5Y1lRUkVnVjRnaU5Eb2NQM2s4alc0bXZWNVRwOEVkbDRES0QzYmkwME5iRVc4MksxY252VGZIZGJBMCtTNlM1QWxHL3dpRXFBR2JtbXlHYWprTkdqcFYxMHY3N1c1TWFqK0hoNzZScGVqYWVUZVl0ZmdGdlBIN0k3eWtSQ21lWUlqa3I0NUFpQnFRcnFXaGgrSjYyRXdia0xCeUphYnFIVWhhRXhoTVQvOXlEeExHUFk2VC82cGhEK0FFRlcyc3FjNWJScnNWREIwQkNYMVFEZGc0cWZ6SWRyRzNUNzhIRVZPbVlISnpFMGJ0NWFnMjhkYkJTbGdtek1mZXNnK0JkRTVFdVRkSUZDVU5uQ2NseGN0TVNtNVR0aEhGL2xGV0dsWHFtV1AxaFUzazhqVUgvbnppakx4Q1dFSWl4cDloMTd2d2Q5aFNPQ3VJMDU5ZlFjb0RxL0RNdWwyOE16RGNmcTl2OHpUY2FNYVNSZCtGZnZVd2lwYm5LWHFCdDFFR0VndDNRR3FVQVpHUjlGakdyNEFGcERNVmN4YytoeWsvS0VhZHcybnNFMjI4Rjh4Yy9DSm1QbFFJWjF1SGVXK2dDQzk1RzF1Uk0zazg2aS90eDc0ZGEwd084cnhaemdrYUQyL2ROZG9ZcmlLZ003SFFlTHNpK201RXVTdCt3NHIrQjVCcUNwVktGbythMi9EVForY2psUzMycGEzdkFvbEJWelNwbVhZMzUzc2NqdjV1QTNMblREZjJpYTRUcDFEL3lGSjR1aHBZeU1sVWFreFFMMGUzTFQ0Rms5cDRzeVpNQTlSWGxCMDVnZVViT0lhbG95V2FUVVp3aTkxTkdsV01qRmR6VC9KTWJOdThISnVlRHR5SXZjMU8zSmk3RExjK3JlQ0JUU08xVFhHSTF4N2NST3lNN3lIejQ4T3cwQW5aVndZSVkvQzlzTGhrSDE1NXFZeURoVWN3aXFOWnZlT1NPdW4xc09zNThjUlRqK0hBemlLRHdVVGpUOWJCVlY1S3hYR2t0bE9wOFBtb3VoVVI5alJrVkI3Z1JlVitnMWpxVGVUS2hTUVV2SnBQbi8za0ZsN0o1eHJYOEtsUHF1OVozMStuTzFyYVRDb0R6bGYzOENwdTUxVThVYTlCSnRkWS9STFhCZjU5SHJHNnM3VE1wSlJyZi85ci9KY01rSWp3cHcvVjUydjExRG1yZFF2L0wzai8rR2Ztcm9IT2l1UDZmMkt6cUNSYUthekJlSzV4K2tXa2NTOUtieWhZYjFJS1JLNnhnakhvL3dWRHdjT3JWYjNrK2V4eGhqdUZnWmFoSTJJa3owMkl1VDhYWTk3ZkI5dElLVDZWdkVGaGRKNGhJU0lDTmphdGZSNDFHYVBRZmZZczFZN3VVNjR4ejlZSU8rNnErZ1RqLy9taG9WeDhDN0NHaGtUZ1RuRDc4bi8xcTlNZlpzNGpHZXBVaGpxZXVVN1NuYnYybWhSM2hqc3lRR05oK2pQby91aVlYcGVYcnp1S3RnVDlOeG42LzcraDhIL1ZRQ2lJa0tGeUhSckEvd0M0ZStPK1oxY240UUFBQUFCSlJVNUVya0pnZ2c9PSJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIwLTA5LTAyIiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJHb1RydXN0IElkZW0gQ2FyZCBVMkYxMTAwMjAxNzA0MDMwMDEiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlUyRjExMDAyMDE3MDQwMzAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4yLjUiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMy4wIn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMC0wOS0wMiJ9LHsiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjA5NmJmYzhiZGJhYWE3NDBiOWVkOGY3NGIwNTRiNWU4YTgxODQxZDIiXSwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiMDk2YmZjOGJkYmFhYTc0MGI5ZWQ4Zjc0YjA1NGI1ZThhODE4NDFkMiJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiVHJ1c3RLZXkgVDEyMCBVMkYgQXV0aGVudGljYXRvciJ9LCJkZXNjcmlwdGlvbiI6IlRydXN0S2V5IFQxMjAgVTJGIEF1dGhlbnRpY2F0b3IiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfSx7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwicmVtb3RlX2hhbmRsZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoyNTYsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDcFRDQ0FrcWdBd0lCQWdJQkFUQUtCZ2dxaGtqT1BRUURBakNCcnpFTE1Ba0dBMVVFQmhNQ1MxSXhFVEFQQmdOVkJBZ01DRk5sYjNWc0xWTnBNUk13RVFZRFZRUUhEQXBIWVc1bmJtRnRMVWQxTVJjd0ZRWURWUVFLREE1bFYwSk5JRU52TGl3Z1RIUmtMakVpTUNBR0ExVUVDd3daUVhWMGFHVnVkR2xqWVhSdmNpQkJkSFJsYzNSaGRHbHZiakVjTUJvR0ExVUVBd3dUWlZkQ1RTQkRRU0JEWlhKMGFXWnBZMkYwWlRFZE1Cc0dDU3FHU0liM0RRRUpBUllPYVc1bWIwQmxMWGRpYlM1amIyMHdIaGNOTVRnd056QXlNRFV6TVRNNVdoY05Nak13TnpBeE1EVXpNVE01V2pDQnJ6RUxNQWtHQTFVRUJoTUNTMUl4RVRBUEJnTlZCQWdNQ0ZObGIzVnNMVk5wTVJNd0VRWURWUVFIREFwSFlXNW5ibUZ0TFVkMU1SY3dGUVlEVlFRS0RBNWxWMEpOSUVOdkxpd2dUSFJrTGpFaU1DQUdBMVVFQ3d3WlFYVjBhR1Z1ZEdsallYUnZjaUJCZEhSbGMzUmhkR2x2YmpFY01Cb0dBMVVFQXd3VFpWZENUU0JEUVNCRFpYSjBhV1pwWTJGMFpURWRNQnNHQ1NxR1NJYjNEUUVKQVJZT2FXNW1iMEJsTFhkaWJTNWpiMjB3V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVFJZnFIaXNpMG9PL2V5T3FTYURycjlpdEcySXltQmtIblNER1FJSVltVCt2cUE4QWdPODFtb21jMkxkNVBHcEVONm11RTU0d1BIUWp2Yy95Q2loOHUybzFVd1V6QVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUFNQjBHQTFVZERnUVdCQlMzSi9meGlBdjIyaXJkQnM5OFNPRGhGN2tVL2pBTEJnTlZIUThFQkFNQ0FRWXdFUVlKWUlaSUFZYjRRZ0VCQkFRREFnQUhNQW9HQ0NxR1NNNDlCQU1DQTBrQU1FWUNJUURjNDFMRks0TEpDQlUyVlZLSXo3WjZzeFBoVUVraDhuTFNMSzZJWGRrUDV3SWhBSWVLVk9aY2hhVk81YUY3ZmJkWG9TcmN5eTFZWWVVZVBMb2pjS0k5Zlg4NCIsIk1JSUNnakNDQWlpZ0F3SUJBZ0lCQVRBS0JnZ3Foa2pPUFFRREFqQ0JuVEVMTUFrR0ExVUVCaE1DUzFJeERqQU1CZ05WQkFnTUJWTmxiM1ZzTVJBd0RnWURWUVFIREFkSFlXNW5ibUZ0TVJjd0ZRWURWUVFLREE1bFYwSk5JRU52TGl3Z1RIUmtMakVaTUJjR0ExVUVDd3dRUTJWeWRHbG1hV05oZEdVZ1ZXNXBkREVaTUJjR0ExVUVBd3dRWlZkQ1RTQkRaWEowYVdacFkyRjBaVEVkTUJzR0NTcUdTSWIzRFFFSkFSWU9hVzVtYjBCbExYZGliUzVqYjIwd0lCY05Nak13TnpFeE1ETTBOakUwV2hnUE1qQTNNekEyTWpnd016UTJNVFJhTUlHZE1Rc3dDUVlEVlFRR0V3SkxVakVPTUF3R0ExVUVDQXdGVTJWdmRXd3hFREFPQmdOVkJBY01CMGRoYm1kdVlXMHhGekFWQmdOVkJBb01EbVZYUWswZ1EyOHVMQ0JNZEdRdU1Sa3dGd1lEVlFRTERCQkRaWEowYVdacFkyRjBaU0JWYm1sME1Sa3dGd1lEVlFRRERCQmxWMEpOSUVObGNuUnBabWxqWVhSbE1SMHdHd1lKS29aSWh2Y05BUWtCRmc1cGJtWnZRR1V0ZDJKdExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCQWgrb2VLeUxTZzc5N0k2cEpvT3V2MkswYllqS1lHUWVkSU1aQWdoaVpQNitvRHdDQTd6V2FpWnpZdDNrOGFrUTNxYTRUbmpBOGRDTzl6L0lLS0h5N2FqVlRCVE1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdIUVlEVlIwT0JCWUVGTGNuOS9HSUMvYmFLdDBHejN4STRPRVh1UlQrTUFzR0ExVWREd1FFQXdJQkJqQVJCZ2xnaGtnQmh2aENBUUVFQkFNQ0FBY3dDZ1lJS29aSXpqMEVBd0lEU0FBd1JRSWhBTlZuSmRlLy90QkxxOE1ERGkrU0FkNlVkWUlaU25nNFBNcW15TnJ2Wmo2NEFpQVgweFN6QWhGYUNDcC91aHBWZ25sRitYQmdyd0FJc290WkdUQjZya0IzMUE9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUErZ0FBQUV4Q0FZQUFBRHZEWWdxQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUVuUUFBQkowQWQ1bUgzZ0FBRmljU1VSQlZIaGU3ZDBIZUJYRjJzRHhONzNRQ1RWQTZGSUZGS2tDVXV5QUV1bUtZa0ZVYklDQ0lpS0NVZ1FFN0wwZ2RsUXNLQ3BTcklnZ1NDK2hKblJDSjRIMGIyZnZlRC8wa2hDU25jMmVrLy92dVhtWWQ0NlhrSk56OXN5N00vTk9RSlpGQUFBQUFBQkFnUXJVZndJQUFBQUFnQUpFZ2c0QUFBQUFnQWVRb0FNQUFBQUE0QUVrNkFBQUFBQUFlQUFKT2dBQUFBQUFIa0NDRGdBQUFBQ0FCNUNnQXdBQUFBRGdBU1RvQUFBQUFBQjRBQWs2QUFBQUFBQWVRSUlPQUFBQUFJQUhrS0FEQUFBQUFPQUJKT2dBQUFBQUFIZ0FDVG9BQUFBQUFCNUFnZzRBQUFBQWdBZVFvQU1BQUFBQTRBRWs2QUFBQUFBQWVFQkFsa1czUFNzek5WWFNEeVRLcWExYjVkU2FkWks2ZTQra0h6OW05NG4zLy9tQWNRRWhvUkpjdXBRRVIwVkpXSlZLRXQ2Z3ZvUlhyeVpCcFVwSlFDRDM0UUFBQUFCZjROa0VQU3NqUTA1dDNpS0hQdnBFanYrd1FOTDM3Wk9zMURUOUtJQ3pDWXlNbE5BYTFhVEVOWjJsWkpmT0VscWh2UFdPRDlDUEFnQUFBUEFhenlYb0tqRS9NdmM3U1h4emhweGFzVkwzQXNpUGdOQVFLZHF4dlpTOVk0QVVhZEpZOXdJQUFBRHdFazhsNk1kLysxMzJqSHRLVXRhdDF6MEFuRmE4NjlWU1lkZ1FDYXRTUmZjQUFBQUE4QUpQSk9nWkowN0lub2xUNVBBSEg0dGtadXBlQUtZRWhJZExoVkVqSktwWGR3a0lEdGE5QUFBQUFBcFNnU2ZvcDdac2xSMERCMG5xMXUyNkI0QXJBZ0trMkJXWFNwWEpFeVNvYUZIZENRQUFBS0NnRkdpQ2Z1TFA1UkkvWUpCa0hEbWlld0M0TGJ4UlE2bjI1aXNTRWhXbGV3QUFBQUFVaEFKTDBFOHNYU1k3YnJsRE1wT1NkQStBZ2hKYXE0YlUvT2hkQ1M1ZFd2Y0FBQUFBY0Z1QkhKQ3NsclhIMzNrdnlUbmdFYW1idDhyMmdZTWtnL2NrQUFBQVVHQmNUOURUang2VDdiZmRJUm1IRHVzZUFGNXc4cysvWk9jamowa1doUm9CQUFDQUF1SHFFbmQxeG5uOEF3L0pzUy9tNko1ekZ4Z1pJVUdsU2tsSWplb1NWS0s0N2dVS09ldHRuTDV2djZUdGlKZU1JMGNsS3kxTlAzRHVLazRZSzJYNjlOSVJBQUFBQUxlNG1xQWZYYmpJTGdwM3prZXBCUVpLK1BrTkpLcC9QeW5XdXFVRWx5a2pBVUZCK2tFQWY4dE1UWlhVWGJ2azZMZno1TkRNOXlWOXoxNzlTTzRGbGl3aDUvM3dEVVhqQUFBQUFKZTVscUJuSkNWTDNGWFhTRnJDVHQyVE82RTFxMHZGVVNPa2VOczJkcUlPSUhjeVQ1NlVneDk4TFB1ZmVWNHlqeDNYdmJsVG9sdFhpWms2eWJwQ0JPZ2VBQUFBQUthNWx2RWVtZlAxdVNYblZtSlFvbWVzMUo0elc0cGYwbzdrSERoSGdSRVJVdmJXL2xMTGVnK3BvOVRPeGJGdnY1ZFQ4UWs2QWdBQUFPQUdWN0pldGV4Mi8vTXY2U2dYckdROGF0QkFpWGxxdkFTR2grdE9BSGtSVnFXeWZZUmE1TVV0ZGMvWlpaMUtrZjNQdnFBakFBQUFBRzV3SlVFL3NYaUpwTy9hbzZPekNBaVEwamYzaytpaDk3TzhGbkNJdXRGVjdkVVh6MmttL2NTQ1JaSis1S2lPQUFBQUFKam15aDUwVmJuOTZHZGY2Q2huS29HbytmSDdFaGdXcW52eXlmcnhzdExUSmYzRUNjazRmbHl5VXZOZTNScHdpenF0SUxoWU1YdVp1bDBRMGFHYlZhZTI3NUROVjE0aldTa3B1aWRubFo2WklxV3Y2YUlqQUFBQUFDWVpUOUJWY3J5dWVSdkpQSHhFOStRZ09GaXF6M3BQaWpacHJEdnlMbm5kZWprMmY2RWsvYnBZVXJac2xZekVnL29Sd0hjRXgxU1JpTnExcEdpSGRsS3NZM3NKcTFoUlA1SjMrMTU2VmZaUG1xcWpuQlc5cktOVWYvVkZIUUVBQUFBd3lYaUNucnhtcld6cDJsMUhPU3ZhOFJLcC92ckxlWjR0ekR5VklrZSsvVTRTWDN0VFV0WnQwTDJBbndnTWxLS2Qya3VaVy90THNSYk44L3crU1Q5NlZEWjF2Rkl5RGgzV1Bka0xLbDVjNnY3eHN3U0doZWtlQUFBQUFLWVkzNE9lL05kSzNUcTcwbjE2NVMzcHlNcVM0NHQvbDdqTzNXVFhrT0VrNS9CUG1abHlZdDRDMlg3RExiSnQ0Q0JKeVdPVjllQVNKYVRFdFYxMWxETjFWRnZxemwwNkFnQUFBR0NTOFFUOTVQcmNKY3NCa1JGUzdKSzJPc285VlNGKzk4VEpzdU9tQVpLNmRadnVCZnlZU3RSL1dDaWJ1MTRuaCtkOFk4Zm5xa1NYcTNRcloxbHBhWkxDK3dvQUFBQndoZGtFUFN0TDByWnUxMEhPd2h2VWw4RFFjeXNNcDRxK2JiL2pIam40NnB2MlhuZWdNTWs4ZGx4MkRoNG1lNlkrWTcvWHprVkV6Um9TV0xTb2puS1dzaWVYSnpBQUFBQUF5QmVqQ2JyYTNwNlJuS3lqbkttem1zK0ZTczYzM1RwUWtoYjlwSHVBUWlnalF4SmZlTVZlUlhJdVNYcEFSSVFFbDQzU1VjN1NkNU9nQXdBQUFHNHdPNE9lbVNtWnVUek9LYWhDZWQwNk83WHNObjdZQ0RtNWJJWHVBUW8zdFlya3dGc3pkSFIyNnVpMmdORGNGWDdMMkxkZnR3QUFBQUNZWkh3UHVnbjdYM3RUVG56M2c0NEFLUHNtVFpPa0ZYL3BDQUFBQUlDdk1Yck1tdG9YdnFsTHJLUnVqTk05MllzYU5GQ2lodzNWVWZaT2JvcVRMVjJ1czJmUmN5MHcwTjV2RzF3bVNnS2pTdWxPd0tPc2QyVEd6bDJTY2VLRVpKNUkwcDI1RTFxcmh0VCs4bE1KaklqUVBXZVdsWkVoY1oxakpXWGpKdDJUdlpMZHVrcVZhWk4xQkFBQUFNQVUzMHJRclgvcXR0dnVrQk1MYzdudjNENDN1b09VSFhDemhOZXJLOEhGaXVrSEFJL0x6SlMwdzRmbHhPOS95SUhuWDdJU2FlczlsSnUzYWtDQWxCOHhUTXJkZnF2dU9ETVNkQUFBQU1CN2ZHcUplOUtxMWJsT3prTmlxa2oxajJaSzlWZGZrS0xObTVHY3c3Y0VCa3BJVkpTVTZueVYxSjR6V3lvK09Wb0N3c1AxZ3ptd2t2akVsMStUaktSem0za0hBQUFBVVBCOEowRzNFbzhEcjc2aGc1eUZuOTlBYXM3K1NJcGUxRlQzQUw1TEZYUXJjMzBmKzRaVFVNa1N1amQ3R1ljT3l4RjFQam9BQUFBQW4rSXpDWHI2a2FPUzlNdHZPc3BlY01YeVV1MzFseVdrZEduZEEvaUhJbzNPbDhyUFRiVmU1RUc2SjN0SFB2dEN0d0FBQUFENENwOUowSk5XcnBMTVk4ZDFsSTNBUUtrNGRyU0VsQ3VyT3dEL1Vyek54VkxxaGo0NnlsN3lueXNrNC9nSkhRRUFBQUR3QmI2VG9QLzJ1MjVsTDd4ZUhTblI0UklkQWY2cDdJQmJKU0E0V0VmWnlNaVFwSlVyZFFBQUFBREFGL2hNZ3A2OGJwMXVaYTlFbDZ2dC9icUFQd3VyWEVraVdqWFhVZlpPclY2cld3QUFBQUI4Z1U4azZGa1ptWksyYWJPT3NsZnNzazY2QmZpM1ltM2I2RmIyVXZmdjF5MEFBQUFBdnNCSEV2UjBPMGsvbTdBS0ZYUUw4RytoMWF2cFZ2WXlUM0RVR2dBQUFPQkxmR2FKZTY0RTZEOEJmOGRySFFBQUFQQTcvcFdnQXdBQUFBRGdvMGpRQVFBQUFBRHdBQkowQUFBQUFBQThnQVFkQUFBQUFBQVBJRUVIQUFBQUFNQURTTkFCQUFBQUFQQUFFblFBQUFBQUFEeUFCQjBBQUFBQUFBOGdRUWNBQUFBQXdBTkkwQUVBQUFBQThBQVNkQUFBQUFBQVBJQUVIUUFBQUFBQUR5QkJCd0FBQUFEQUEwalFBUUFBQUFEd0FCSjBBQUFBQUFBOGdBUWRBQUFBQUFBUElFRUhBQUFBQU1BRFNOQUJBQUFBQVBBQUVuUUFBQUFBQUR5QUJCMEFBQUFBQUE4Z1FRY0FBQUFBd0FOSTBBRUFBQUFBOEFBU2RBQUFBQUFBUElBRUhRQUFBQUFBRHlCQkJ3QUFBQURBQTBqUUFRQUFBQUR3QUJKMEFBQUFBQUE4Z0FRZEFBQUFBQUFQSUVFSEFBQUFBTUFEU05BQkFBQUFBUEFBRW5RQUFBQUFBRHlBQkIwQUFBQUFBQThnUVFjQUFBQUF3QU5JMEFFQUFBQUE4QUFTZEFBQUFBQUFQSUFFSFFBQUFBQUFEeUJCQndBQUFBREFBMGpRQVFBQUFBRHdBQkowQUFBQUFBQThnQVFkQUFBQUFBQVBDTWl5NkxianN0TFRaVk9YV0VuZEdLZDdzaGMxYUtCRUR4dXFvMy9LVEUyVkRhM2FTOGFoUTdybnpCcXNYUzZCa1pFNk1pYzFQa0ZPcmQrZ0kvaXowSmdZQ2E5WFIwZmVjV1QrQWtrWU1FaEhaMWFpUjZ6RVRKNmdvMy9LeXNpUXVNNnhrckp4ays3SlhzbHVYYVhLdE1rNkFnQUFBR0FLQ1hvZUhKejV2dXgrYkt5TzRNK2krdmVUNk1jZjFaRjNrS0FEQUFBQS9vY2w3Z0FBQUFBQWVBQUpPZ0FBQUFBQUhrQ0NEZ0FBQUFDQUI1Q2dBd0FBQUFEZ0FTVG9BQUFBQUFCNEFBazZBQUFBQUFBZVFJSU9BQUFBQUlBSGtLQURBQUFBQU9BQkpPZ0FBQUFBQUhnQUNUb0FBQUFBQUI1QWdnNEFBQUFBZ0FlUW9BTUFBQUFBNEFFazZBQUFBQUFBZUFBSk9nQUFBQUFBSGtDQ0RnQUFBQUNBQndSa1dYVGJjVm5wNmJLcFM2eWtib3pUUGRtTEdqUlFvb2NOMWRFL1phYW15b1pXN1NYajBDSGRjMllOMWk2WHdNaElIWmx6Y3ZVYU9mN2p6enJ5dnVRL1Y4anhSVC9weUZubEI5OHJFdVMvOTNraUdwMHZ4ZHExMFpGM0hKbS9RQklHRE5MUm1aWG9FU3N4a3lmbzZKK3lNaklrcm5Pc3BHemNwSHV5VjdKYlY2a3liYktPQUFBQUFKaENnbDRJSkw0NVEvWThjZVpFTGI4YXhxMlJnT0JnSGNFdC9weWdaNldsU1ZhbXNjdFM0Uk1nRWhnU1l2MXBOUUFBLzBPTk04V0ZqNTJBNENBSkNBclNVY0Z6OWZPV3p5SWcxMGpRQ3dFU2RQL2p6d242dHFIRDVOU0tsVHBDZmdXVktDNjFQbjVmQWtORGRROEE0SFJ4M2Z0SStsbkdtRTRvUC93QktYM1ZGVG9xV0JsSlNiTGx4bHNrNC9BUjNXTldaSXRtRWpQK0NRa0laSGN0Y0RZazZJVUFDYnIvOGVjRVBhN2Z6WEp5OFJJZEliOUNhMVNYdXZPKzBSRUE0Ti9XdFd3bjZRY082TWljNkVuanBVejNXQjBWb014TTJUNTBtQno3eXAzUGh1QUs1YVgyN0k4bHBGdzUzUU1nSjl6R0FnQS9GbGFycG00QkFDQ1MrTkVzMTVMemdMQXdxVEoxRXNrNWNBNUkwQUhBajRXV0w2OWJBSURDTG5uZGV0a3o3aWtkbVZkdXlMMVNyRVZ6SFFISURSSjBBUEJqWVkwYTZoWUFvRERMT0g1YzRnYy9LRmtuVCtvZXM0cGRjWm1VdSswV0hRSElMUkowQVBCajRUVnI2QllBb05ES3lwTGRrNTZXMUMxYmRZZFpJWldpcGNyNHNSU0ZBL0tBZHcwQStLdWdJQW1yVUVFSEFJREM2dkEzMzhyaER6N1drVm1Ca1JFUzg4SXpFbHl5cE80QmNDNUkwQUhBVHdXVktpV0J4WXJxQ0FCUUdLWEV4OHV1a2FQdFdYVGpnb0trd3FoSHBNajViSzhDOG9vRUhRRDhWRkRSSWhJWUZxWWpBREFyTXpOVFRwNDhLWWNPSFpLdDI3YkowcVZMSlRVMVZUK0tncEI1S2tWMkRINVFNbzhmMXoxbXFhTlp5L1RzcmlNQWVVR0NEZ0IrS3FSeUpRa0lDdElSQU9TTlNyelQwdElrT1RsWkVoTVRaZlBtemJKNDhXSjU3LzMzWmR6NDhUSjR5QkM1TmpaV2F0ZXRLK2ZWcXlkMXJLOTZEUnBJNjdadDViaExpU0hPUU8wN2YycXluRnE1V25lWUZkNm9vVlFlTzFva0lFRDNBTWdMRW5RQThGT2hWV04wQ3dCeXBoTHdBd2NPeU5xMWEyWDI3Tm55NGtzdnlXT2pSMHUvbTI2U2k5dTFrNmJObXRsSmQ2V1lHS25Yc0tHMDY5QkJicjcxVm5sODdGaDV3ZnB2djVrN1YrTGo0Mlh2M3IxeTVPaFJPNmxId1RxNjZDYzUvUDVIT2pJcnNHaFJpWmsrUlFMRHczVVBnTHdpUVFjQVB4VktnVGdBT1RoMjdKaGNldm5sVXJkK2ZZa3NWa3lpcTFTUkprMmJTcSsrZmVYK0lVTmt3bE5QeVVjZmZ5ekxsaTJUOVJzMnlPNDllMGk4ZlVUcTdqMnljL2dJeVVwUDF6MEdCUVJJOUpPUFMzalZxcm9EUUg2UW9BT0Fud3Evb0pGdUFjRC9VdnZERi8vK3Uyelo2czdSVzNCSHB2VjdqWC9vRWNrNGRGajNHR1FsNTFFRGJwYlNYVHZyRGdENVJZSU9BSDRxdkVvVjNRSUFGQmI3WDMxZGtuLzdYVWRtUlY3VVZDb09IYXdqQUU0Z1FRY0FQeFFRRVNFaFpjcnFDQUJRR0J4ZnNsVDJQL2VTanN3S3JsaEJxajQzVlFKRFEzVVBBQ2VRb0FPQUh3b3VYMDRDUW9KMUJBRHdkK2xIamtqQ3NJZXNodmw5NXdHaElWSjU4Z1FKS2N1TllNQnBKT2dBNElkQ1NwYVVnRUF1OFFCUUdLaGljUEhESDVIMFhYdDBqMWxsN3JwRGlyZHFxU01BVG1MMEJnQitLS1JHTmM2aUJZQkM0c0RiNzhpSitRdDFaRmJSOXUyazRyMkRkQVRBYVNUb0FEd2xwRnhaQ2ExUzJiV3ZrSW9WM1Vsa3JlOFJVaW42alA4R0UxOFI5ZXZyYnd3QThHZEpLMWZKdnFuUDZNaXNFT3Z6SldiS1JHNEFBd1lGWkZsMDIzRnF1YzJtTHJHU3VqRk85MlF2YXRCQWlSNDJWRWYvcEk2TDJOQ3F2V1FjT3FSN3pxekIydVVTR0JtcEkvd3Q4YzBac3VlSkNUcHlWc080TlJJUXpENVh0eDJadjBBU0J1Ujg5N3BFajFpSm1Yem0zM3RXUm9iRWRZNlZsSTJiZEUvMlNuYnJLbFdtVGRhUi96a1ZIeTl4bDNVMmZsWnNZSkVpVW1mQmR4SlNKa3IzQUVEQlNreE1sS28xYXRqSHJabXlkOWN1aVlyeTluVnZYY3Qya243Z2dJN01pWjQwWHNwMGo5V1JNOUtQSFpPNGJqMGxiVWU4N2pFbk1DSkNxbi93amhRNXY2SHVBV0FDTStnQUFBQ0FEOXIxeEhoWGtuTUpESlR5ano1RWNnNjRnQVFkQUFBQThERUhQNTB0UnovN1FrZG1sZWphV2NyMDZxa2pBQ2FSb0FNQUFBQSs1R1RjWnRrelpweU96QXFyYzU1VUdUZUdrMEVBbC9CT2cwOVI5UWkyOXJ0WjFsM1F3dmhYM0xVOUpPTkVrdjdPQUFBQUJTL2p4QW1Kdi84QnlVd3lQMFlKTEZaTVlwNmZadTgvQitBT0VuVDRqcXdzMlRmOWVVbjY5WGZKT0hMVTZGZG04a21wT0hxa0JCVXRvcjg1QUtDd3lNek1sUFQwOUROK1pXUmtXQjlIeHVyckFqbktzbDZidXlkTXlsV1IxM3dMQ3BUb01hTWtva1lOM1ZGNHFmZDhUdGNGOVJqZ0ZLcTRGd0wrVXNYOTJNKy95STViN3hUclNxaDd6Q2w3LzkxU1lmQzlPdkllcXJnN2h5cnV2aThsSlVYV3JsMHJmNjFjS2Z2Mzc1Y0RpWW42RVpHdzBGQXBXYktrbEMxYlZtclhyaTMxNnRiMWZFVnB1Q2NwS1VtMmJ0MHFxMWF2bGoxNzlzaTI3ZHRsNDhhTmN1clVLVGw1OHVRWkI5MFJFUkVTRWhJaXBVcVZrZ2IxNjB1bFNwV2thdFdxZHJ0eTVjb1M3RU1ubTFERi9UOThxWXI3a2UrK2wvaDdocWk3U0xySG5OTDkrMG5sVVk4VXVpUFYwdExTSk40YUd5eGZzVUlTRWhJa0xpNU9ObGxmNnJxUW5KeXMvNnYvcDk3ellXRmhVcng0Y1duWW9JRjlIYWhXclpvMGJ0VEl2ajc0MGpVQjNrQ0NYZ2o0UTRLZXVudVBiTFplU3htSGorZ2VjeUpidDVRYU05LzA5RjRyRW5UbmtLRDdwcU5IajhyY2I3K1ZEejc4VUg3ODZTYzcwY3F0T3VlZEo0OC85cGowNk5GRDk2QXdVTW4ydG0zYlpQSHZ2OHVpSDMrVXYvNzZTMWF1V3FVZmRVWjRlTGcwYjlaTUxyamdBbW5Wc3FXMGJOSENIcUI3RlFuNmYvaEtncDZTc0ZQaXJ1a3VtY2VPNlI1eklpNXNJalZudmkyQjRXRzZ4MytwMTcrNndmdkxMNy9JL0FVTDVQY2xTK1NZUTg5eHBKV1h0RzNUUnRwZmNvbTBzSzRIelM2NnlMNU9BRGtoUVM4RWZEMUJ6MHhKa2EzWDk1ZVR5Ly9TUGVZRWxTMGp0YitlTFNGbHkrb2VieUpCZHc0SmV1NzhiaVUxNjlhdjE1RXpMcklHS28zT1AxOUh1WFBBR2tTLy9PcXJNdVhwcDg4NGs1RmJzejc2U0xwZGU2Mk96dDJzVHo2UjQ4ZVA2OGg1VjE1eGhVUkhSK3ZJR1o5OTlwa2NPWHBVUjg2N3hCcUExdlRZVWxpMUhIM1RwazN5MmV6WjhzbW5uOHI2RFJ2c1ByY0VCUVhaTjRSNjlld3BWMTE1cFRSbzBNQ2VhVE5wMWFwVnN1elBQM1dVc3hNblRzaERJMGJZUzNSTmVYcnlaQ2xhdEtpTzhxNTgrZkxTK2VxcmRlUXNYMGpRczlMU1pITy9tK1hrc3VXNng1emdjbVdsMXV4WkVscWh2Tzd4UCtvMXIyN1FmV2g5RnJ6NzNudHk4T0JCNDF0WEFnSUNwRml4WXRLamUzZnBkLzMxMHJ4NWMrUFhnek5STnlzLy8rSUxPWExFN0tSWDZkS2w4L1U1bTFmcTUzdG41c3d6cm9CeWlyckowcnRYTC9zYWJ3SUplaUhnMHdtNjlmTGM4OHp6a3Zqc0MxWmI5eGtTWUYwa3E3NzltaFJyMlZ6M2VCY0p1bk5JMEhQbi9pRkQ1TVdYWHRLUk0rNjc1eDU1ZXNvVUhlVk1EYVptelpvbFF4OThVQkt0Z1ZSK3FPV0dmLzd4aDlTdlgxLzNuQnYxc2Rtb1NSUFpzSEdqN25IZXQ5OThJNTA2ZHRTUk01bzJhMll2NVRibG5iZmZscjU5K3Vpb1lLa1ZGZDkvLzcxTXNsNWZhaEN1bHF3V05EV1FVMHRmQjl4NnEvMDh4Y1RFMkFOMnAwMmROczFPdXYyTlNtbytzQklwRXp5Zm9GdlhuRjBUSnN2Qk45N1NIZWFvTVYzVjExK1M0bTNiNkI3L29tN3Nmajl2bmp3MWFaS3MrT3N2VjIvWW5VNjk5NnRYcXlhRDc3L2ZUdlJVTXV1bTJ3Y09sTGZmZVVkSFpxaWJFYnNURWx4Zk1hQzJMZFUvLzN5anY5c083ZHZMZDNQbkdybUdLeFNKZzZjZCsyMnhISHpoRmVQSnVmVU9rektEQnZwRWNnNzRpNFNkTzNVclo0Y1BINWJyYjdoQmJyN3R0bnduNTRxYXpWT0pFdnlQV3FyNjN2dnYyemNqZXZYdGE4OGtleUU1VjlSZ2NjZU9IVEpxOUdqN0JzKzFzYkd5ZE5teUFrc1FmRTNyVnExMHEvQlJOWGdPempDYlRQMnR6RjIzKzJWeXJtN3lmdm5sbDlLa2FWUHAyYnUzZlcwb3lQZWV1dEc3ZGRzMnVXL3dZS25Yc0tFOFBYVnF2bGFGbmF0ZXZYcnBsamxxbFptcUQrTzJKVXVXR1AvZDlyRmVRNmFTYzRVRUhaNlZkaUJSZGozd3NQR1pUU1d5V1ZNcGY5ZEFIUUZ3d3hycmcvdHNpN2pVbnVHMjdkdkw3QysrY0d5NVdwa3laZXc3Ky9BZjZuWDA4ODgvUzV0MjdlVG1XMitWTFZ1MzZrZThLZm5rU2J1R2d2cjNYbkhWVmZZV0V1U3NSaUd0Sko2NmI3OGtESC9FeWpETko1TkYybDRzRmU2OVcwZitRMjNQdXJwTEYrbHVKYVhxTThWckRoMDZKQTgvOG9oOVkvR0xMNzg4NitlaUV5NnhyajJxMEtWcGM3LzdUcmZjTTMvaFF0MHlRNjBJdUM0MmY4VWV6NFlFSFo2azlsb2xQUGlRcEZzZlRLYXB2Vll4ejArWGdKQVEzUVBBRGNlT0hyVXJaV2RIVmM3dGVPbWxkbFZ0SjExNHdRVkc3M3pEWFdvZjlkQUhIcERMcnJ6U1hyTHFTOVJOSjFYa1VOMkU2dDZ6cDJ6YzVNTFJXVDVJN2ROVlZmSUxHN1hGTStIaFJ5VGp3UCtmVEdGS2NNVUtFak41b2dRWTJsTmJFTlNLbXNsUFB5MHRXcldTaFlzVzZWN3YycnhsaXoyNzMrK21tK3g2S3lhRmhvWktkOE5KcHJKNDhXTGRjb2U2cHFvaW9DYXBteHZxZEJpVFNORGhQVmxac3UrbFZ5WHBwMTkxaHprcUthODBhWnlFbEMyamV3QzQ1ZGp4NC9ieTlUUFp2WHUzWEc0bFhEdDM3ZEk5emltTUEzMS9wV2JEMm5mc0tNKy8rS0xQTHhYLzhxdXY1S0xteldYc0UwL1lOeDN3LzBLQ2c2VkNoUW82S2p6MnYvRzJPMk9oaUFpcCt2eDB2eG9McVdNVHUxNXpqVHd5Y3FSOVBKcXZVTFBuSDgrYVpjK20vN0YwcWU0MTQ3cnJyak4rczFvdGNUZDVTc1MvcWFNeTFWWWlrMjdzMTArM3pDRkJoK2NjLzMySkpENy9zbzdNaWhwd2l4Uy9wSjJPQUxoSnpaNnJzMmIvVFJYNDZ0V25qNUhrWEZIVnh1SDdsbHFEVjdWRTNPbWowZ3FTU2lTZUdEZE9XbDU4c2F4WXNVTDNvbTdkdW9YdWFLcmpmeXlWQTlPZjA1RkJnWUZTWWZoUUtkS2tzZTd3ZlN0WHJyU3ZEUXQ4WU5ZOE8zdjI3clZ2VXM5ODkxMWpTOTVWWFFkMURKeEp1M2J2TnA0d24yN2V2SG02WlVaRVJJUjl5b3BwSk9qd2xMVDkreVhoL2dmdEplNm1SVFMvU0NvTXZVOUhBQXFDdXR0OU9yVThiY2dERDhpU1AvN1FQYzRLQ3cwdHRIdFovWWs2ci9pS3E2K1cvUzVVM2k0SWFsdEgzMzc5WEoxNThyS2FOV3ZxVnVHUWZ1eTQ3QnoraUNzMWVJcGZlWm1VNlhlOWpueWZXbExkdmxNbmlVOUkwRDIrUzkyc0huam5uVEp0K25RalNYcVJJa1drMnpYWDZNaWNiMTNhaDY2ZW8zay8vS0FqTTlUcEtpVktsTkNST1NUbzhBejFRYVFLb2JpeDF5b29xclRFVEoxay9BeDNBRG43N1YvNzA5VHhOMnJHd0pTeVpjdEtLY043eDJEVyt2WHI3UlVXSnMraDk0TEpUejFsN3hPRlNMT0xMdEl0LzZlT1FVMFlPVXJTRW5KM3lrVitoTmF1S1ZVbWpwT0FRUDlJQjM3ODhVZTVxa3NYdjlvaW9xclBqeGc1VXA1NTlsbmQ0eXhWamR5MHhTNFZ3VHlWa2lKL0dMcTUvN2NCdDkybVcyYVJvTU16OXIvK3BpVDkrSXVPekxIM25VOGVMNkdWb25VUGdJSnkraEwzbzBlUDJrZk9xQUdKS2VYTGw3Y0xUc0UzcVdySHNUMTZ5SUZFOHpkeUM5S2RBd2RLVnl2UndIODBiZHBVdC94ZjRydnZ5L0Z2ek04NEJoYUpsSmpwVXlTb1NCSGQ0OXZVcXF0dTNidmJzODcrUnEwc0cvYlFRL0xlZSsvcEh1ZTBiTmxTaWhjdnJpTXoxTEZuS1ZieWJOcm11RGpadTIrZmpweW56cXB2MTdhdGpzd2lRWWNublBoanFleWZQRjFIWnBVZWNMT1U2TkJlUndBS2twb04vZHNiYjc1cC9BaWNwaGRlU0FWM0g2V1dMNnFDVDF1MmJORTkva2tWTVp3d2ZyeU9vUGFlVjZ0YVZVZitMWG5OV3RrN2VhcU9EQW9Na0lwalJrbGszYnE2dzdkdDM3NWR1dmZvNGZmRkZlKzgrMjdIdDMrcGF1UlhYM1dWanN6WXQzKy83TGUrVFB0bTdsemRNa010YjNmcmlGWVNkQlM0OUVPSEpHSEljSFdMVVBlWUU5bWltVlFjd3I1endDdlVIbUsxVkRreE1WSEdqQjJyZTgxUnhhYmdteFl0V2lSdnpaaWhJLytrOW9TKy9lYWJVclJvVWQyRGtpVktTRlJVbEk3OFYvcXhZN0pqOElPU2RkSnd4ZkdBQUNuZDczcUo2bmF0N3ZCdGFzYThkOSsrZGhMbzcxUVJ5UnY2OWJOWEVqbkpkRlZ5Tlh2KzcrMXNUbE9yREV6dWRWYzM5dSs0L1hZZG1VZUNqZ0psbjNjK2JJU2s3OTZqZTh3SktsVktxa3lmekhubmdJZW81ZXo3OXUyVDk5NS9YNUp6T0JQZEtlcjhVdmdlOVRvWk5YcTBQUWp6VjJvQU9PS2hoNlJKa3lhNkIwcjVDaFhzeXNsK0xTdExkajA1UWRLMi9iTm9wZ25oOWV0SjlFTVAyb202UHhqNzVKT3kzTVVURDRLQ2d1eGlvMnBsaC9wU1c2WkNySEdsV3l1emRzVEh5NTJEQmpsNkxXemVySm1VS1dQMmlMMXZ2LzFXdDh3NGV1eVlyRHR0Ulo3VG9pdFdsR2JXOCtRV0VuUVVxUDF2elpBVEMzN1VrVUhXaFRONi9CZ0pMWVRucUFKZXBxcFVyOSt3UVY1NjJmelJpbW9nVmExYU5SM0JsNmlxN2FZcSszdUZPdkpvNkpBaE9zTGZHamRxcEZ2KzY5Q1hjK1RvWjEvb3lKeWdNbEZTOWFYbkpOQlBqcXo3K2VlZlplcTBhVG95UnhWcnZPTHl5K1dGNTU2VFgzLzZTYlp0MlNKN2QrMnl2L2JzM0NrYjFxNlZiK2JNc1crdzFhOVhULysvelBuSytsNU96aGFycXVRZERCOC8rck4xRGMvSXlOQ1I4OVRKRjA2dkxEaGQrL2J0alI5SmR6b1NkQlNZRTM4c2t3TlRudEdSUVZaeVh2cTIvbEx5eXN0MUJ3QXZlZk90dDJUTDFxMDZNcWRxMWFxdWZzRENHV3J2K2JQUFA2OGo4NnBVcVNJMzMzU1RQRDE1c3N5ekJzRWIxNjJUclhGeHNtLzNidG0wZnIyc1c3MWE1bi8vdlR6M3pETXljc1FJdWFaclY2bFh0NjRFNStOVWtLalNwZVdkR1RQc21UajhVKzNhdFhYTFA1M2F2a04yang1cno2S2JGQkFTTEpVblBDRmhmbElnViswM0h6QndvSTdNVUxQaXZYcjJ0Ti96Yzc3OFVnYmVmcnRkc0ZDZEJxSzJvNmd2dFNjNUppWkdMdTNVU2NhT0dTUExseTJUMlo5K0t1YzNiS2ovRnVlcEZVWDNEeDdzMko1NzlYUGVjTDNaby9aVVljKzllL2ZxeUhuZldkZGtrOXhjM3E2UW9LTkFwQ1VlbElUN0gzRG52UE1MbTBqRkI1bVZBTHhxenRkZjY1WlpsYUtqODVWRW9XQWNQSGhRZnZyNVp4MlpVNzE2ZFhsdjVrdzdJWC90MVZmbHZudnZsZmFYWEdLZm02K1NkbFhCVi8wM0ttRnMxNjZkM0huSEhmTDQ2Tkh5NmF4WnN1TFBQMlZYZkx4OC9PR0g5a0MzU3VYSyttL05uU21USmttTTlUM3d2L3g1VzBwR2NyTEVXMk9oek9QbWk1dEYzWGFMbE9qWVFVZStiOUtVS2JMVllGSFI0bGJpUFhQR0RIbjNuWGZzbTd1NXBaYkFkK25jV1JiLytxdWQwSnV5ZmNjT2VmNkZGM1NVZjVkWTF6cFZNTTZVWk91MS9xZDFuVFJCM2NUOTRndHpLMURVNy84aWw0OTZKRUdINjdJeU0yWFg2TEdTdnRmY1VRaC9VOHU1WXA2ZEtvRWNxd1FVZW01L3dNSVpxMWV2dG8vZ00rbmkxcTNsajhXTDdkbXl2TXhpcTBHNVN1Qmp1M1d6aTd5dFc3TkdmbHE0VUhyMjZISFdJNHh1Nk50WGJyamhCaDNsbjdweHNOTWF2T2ZtYTlXS0ZjYlBXbC8xMTE5bi9ONjUvVkw3WS8yUkdndnRmbXFLbkZxelZ2ZVlVNlJOYTZrNDlINGQrVDYxRDl2SjVQVGYxRXFyRDk5L1gzcjM2bVhQTHVlRjJsTDE3UFRwY3YrOTkrYjU3emlicWRiZjc5UzFVYTBHdUxSalJ4MlpNWC9CQXQxeWxxb1FiL0owajhzdnZkVDExVTBrNkhCZDR0c3pYVG5qVTRLREpIckNFeElhWFZGM0FDak1hdGVxcFZ2d0phWm56MVZpL2NGNzd6azZlNlNLUjdWcTFVcmVmL2RkZTNuc3hQSGo3UlVjL3g2b3E1bjJwNTkrMnRFQnZFb3UxSG4vdWZsU1MzVk5LMmQ5anpOOTc5eCtxWnNmL3Vqb0R3dms4QWNmNjhpYzRITGxKR2J5UkFud28rZHhpdldlVWFkL21ESjYxQ2k1N0xMTGRKUjM2clU3ZnR3NFk2dEFEaDgrTEsrKzlwcU84a2RkZzlRTlNwTisrZlZYM1hMV1h5dFhHaTB5YTdySy9abVFvTU5WU1N0WHliNHA1Z3Q2S0tYNjlwYVNuZnhuT1JlQS9GR3pwUEE5Sml2ektwZGJBL0dLRmMzZHlGVko1Z05EaDlxejZtcmZ1dHF2cXFoSzBHKysvcnE5L3h5RlM4cXVYYkp6eENnUmcwV3psSUN3TUlsNWZxcUVsRE4vSThZdE8zZnVsTGNOSHJmWW9ubHplM3VMVTlRS2xSZWZmMTRpRFoxRThKcDFEVkY3MHAyZ2Jrb1VNVmluWmMzYXRmWk5CYWN0TURRenI2aXRSODJ0MTRUYlNORGhtdlJEaHlYaDNxSG16L2kwaERlb0o5R1BQcXh1Q2VvZUFJV1pXbTRZY3c3N0NPRWRhOWV0MHkwenFydFUyVi9OYk44eGNLQzlySHpVeUpFeWVQQmdlOThuQ3BkTWZieHM1cEVqdXNlY3dLSkZKTXpQVHE2WStlNjc5bm5ncG93WlBkcnhXaVdxYnNXdHQ5eWlJMmR0Mjc1ZEZpNWNxS1A4S1ZxMHFIVHAwa1ZIemxOSHc2bHE3azVTKzg5TkZvanIyclZyZ2F6aUlVR0hLN0xTMHlYaG9VY2tMV0duN2pGSGZTQlZlWDZhQkJyZVZ3ZWdZS2dqWWE2Kzhrb1ovK1NUOXBFM0NkWUE1ZWpodzNMTStqcDY2SkJzMzdKRmZyTUdBV3IvMzExMzNHR2ZLOTNtNG92dEdVdjRuc1RFUk4weUk4MkZZcVduVTNzOUh4czFTcDRZTThiWTNsUjQxLzZYWDVQa0pVdDFaRmJHd1VPeTgvRW43ZjN1L3VEa3laUHluTUc5NTYxYXRwU09odlpoMzNQMzNjYjJNYi9sNElvQ1ZUZkRwQ1ZMbHVpV00vYnMyU01iTjIzU2tiT0NBZ1BsK3I1OWRlUXVFblM0SXZIRGorWEUvRVU2TWljZ09FZ3FUWjRnNFp4MURQaWRxS2dvZWZ5eHgrd3EyMTk4L3JrTWUvQkJlK2xaaFFvVjdPV0RFZGFYbXFXc1ZLbVNOTHZvSXJucnpqdmwyV2Vlc1l0L2ZURjdOc2tRemlodTgyWjdGc1p0dkI0THArQXlVYnJsanVOenY1TkRuMytwSTkvMncvejVjdURBQVIwNTc1YWJiemIydnF4bWpVc2JuWCsranB5bDZuUWtKU1hwS0gvYXRXMXJmNWFhb3Y2dFRsNXZmN2NTZnFlVytQOWI1Y3FWcGVtRkYrcklYU1RvTUM1NXpWclpOMjZTV29laWU4d3BxZmFkWDVIL3doNEF2RU1ObDlTeE5TdVdMWk9Sanp4aUorcm5RZzI0MUJKMytDYlRpZXlDaFF0bG04SGptb0RUUmZYc0xwSE5tdXJJQmRiWWE4K1RFeVROWUdMcmxsbXpadW1XODlRS3E2NEdsM2VyWmRMWHhjYnF5Rm43OXUyVHBVdWRXWlZScWxRcHUycTVLV29mZW1wcXFvN3liOUVpYzVOLzNidDNMN0FpbFNUb01Dcmp4QWxKR0RwY3NnenVGL3BiV1AyNkV2M0ljRFdhMHowQWZKMzZjTHovL3Z0bDFrY2ZHUzNrQmU4eWZjeVdxZ1o5ZGRldWtwQ1FvSHNBY3dLQ2c2WFNFNDlMZ0l2SE5tVWVQU1k3UjQxeFphTEVsSlNVRkpuenpUYzZjbDR6NnpwVHBrd1pIWmx4bWNIRTkrTlBQdEd0L092VnE1ZHVPZStFbFJjc1g3NWNSL21uYnJDYW9HN1k5TC9wSmgyNWp3UWR4bVJsWk1qT2thTWxOYzdjMllSL0N5eFdWR0plbUM2QjRlRzZCNEEvR0hUbm5USnA0a1RIaS9iQWQxUnpvYmlmT2tPM1djdVc4c0dISHpvNnV3T2NTVVR0V2xMMnZydDE1STdqOCtiTFFSOWU2djdyYjc4WlBWcXRrK0V6d0pXNmRldnFsdk5VOFRWVmhNMEo2bGc0VlN2REZMVlZ3UW03ZHU4MnR2KzhacTFhY2w3dDJqcHlId2s2ek1qS2tzVDNQNVJqWDVtNzIvbGZnUUZTY2V4ajdEc0gvRXpucTY2U3laTW1HVi9pREc5cjFLaVJicGwxOE9CQjZYL0xMZEswZVhPWjlja25jdlRvVWYwSTRMeHl0L2FYc0xwMWRPU092ZU1tU3VxZXZUcnlMVjkvL2JWdU9VOTl4blJvMzE1SDVvU0hoOHY1RFJ2cXlGbTdyV1QxMEtGRE9zb2ZkVFJrRzRQSGtxcnowSjNZaHo1MzdsemRjbDczMk5nQ25SZ2dRWWNSeWVzM3lMNkpVOXpaZDk2enU1Uyt0cXVPQVBpRDBxVkx5eXN2djF4Zys3L2dIZXBjWXJkdTBxaEI0NFlORytUNmZ2Mmtib01HY3UvOTk4dXlaY3ZzNWJXQWs5U0t2OHFUeGt1QWk2ZExaQncrSWdtUGpMSlhPUG9TVlFUc3g1OSswcEh6MVBGaTZpZzAwOVIxckdLRkNqcHkxckZqeCt5Q2wwN3AzNysvYmpsdjA2Wk5qcXhVTXJhOFBTeE1icjc1WmgwVkRCSjBPQzdqK0hGSnVHZXdaQ1dmMUQzbWhOYXFJWlZHajJUZk9lQkgxQ0RteWJGajdidjRRSTBhMW5VK09scEg3bEhIdTczOHlpdlNxazBiYWRTa2lUd3diSmhkaU1udFk5bmd2NHJVcnllbCsvZlRrVHVTZnZsTkRzMytRa2UrUVMxdFg3OSt2WTZjcDA3L0tGbXlwSTdNS21Idys2eFpzMGEzOHEvOUpaZEk4ZUxGZGVTc25idDJ5ZmJ0MjNXVU4rcW02ZEpseTNUa3JBYjE2eGZJWjg3cFNORGhyS3dzMmZYNGs1SzZiWWZ1TUVmdE82LzY4dk1TYVBBNENBRHVVL3YwYnV6bjdxQVYzcVVHejdIZHV1bW9ZR3pkdGsyZWZlNDVhZDIycmRTb1ZVdjYzWFNUZkR4cmxsMDlHY2d6TmFNNitGNEpxUnFqTzF5UW1XbFhkVS9aYm42YzVoU1Z6S1VhdkRHbTlocUh1clNTb1Z6WnNycmx2TjhXTDlhdC9GT25wYlJzMFVKSHpwdjc3YmU2bFRmeENRbjVUdkt6MCszYWF3dDg5UjRKT2h4MWNOYW5jblMyQzBWSXJEZE94ZEVqSmJ4bURkMEJ3QitvMmZPSGh3KzM5K29CZjd2bjdyczljMVRlWGlzcC8rampqK1dHRzIrVUt0V3FTWXRXcldUTTJMR3k2TWNmalJheGduK3lsN3BQZU1MVmxZQ1p4MDlJd3FPamZXYXB1eXFBWmxMVkdQZHVrSlFyVjA2M25MZG56eDdkeXIvQXdFQzV5ZUNOOHZ4dVdmamhoeDkweTFtaElTRkdsL2ZuRmdrNkhITnk0eWJaTS9wSlYvYWRsNGk5UmtwZlY3QXpLZ0NjVjdsU0pmdnVOWEM2NnRXclM0L3UzWFhrSFdyUCt2SVZLK1RKOGVQbDhpdXZsRXJXUUw5WG56N3lzWlhBcThHeUU0V1E0UCtLdFdndXBhN3ZyU04zSkM5ZUlnZG12cWNqYjFPbkxKaFVxblJwM2ZKdGNYRnh1dVdNSzY2NHd0aktncFVyVithNXRvZTZybjVqNk1pOXBrMmJHcXNUY0M1STBPR0lqS1FraWIvN2ZuZk9PNjk3bmxSK1lqVDd6Z0UvMUtkM2IzdEpNM0E2dGJKaXpPalJVcXhZTWQzalBXclFlUExrU1puOStlZHl3MDAzU2YyR0RlV0txNjZTeno3N2pKbDFuRldGd2ZkS2tPRnp1UDl0LzlSbjVKUVBMSFZYTjhGTWVudkdES2xlcTVZclgwOVBtNmEvcS9NT0hqb2tweHdjaDVjb1VVTGF0bW1qSTJlcGxVanFtTFM4VU5mVFB3MjlKcTY5NWhyNzg2YWdrYUFqMzdJeU0vK3o3M3pMTnQxalRrQkVoRlI1NW1uT093ZjhrRnBhTnVDMjIzUUUvRlBWcWxYbGlURmpQREY0eW8wVFNVbXljTkVpNlgzOTlWS3ZRUU83eU55T0hUdVlWY2NaaFpRdUxaV2VmRnl0TGRZOTVtVW1KY3ZPaDBkS1ZucTY3dkVlVlpUUnlhWGJaNklTdnAwN2Q3cnlwYXF0bTZMT1FWYzNDWjJpcnJVOWUvVFFrYlBVNzFVVjNjeUx6WnMzeTRFREIzVGtIUFh6M21CZHI3MkFCQjM1ZHZpTHIrVG9wNS9yeUNEcmpWUHhzUkVTY1o3NW96QUF1SzkrL2ZwMkVnWms1NDZCQStYcXE2N1NrZS9ZdDMrL1hXU3VWcDA2MHZlR0cyVEZYMy9wUjREL1Y2SmpleW5XcVlPTzNKRzg5RTg1OFA2SE92SWV0UXo2Rk1jYzVrNVdsdU9uVEppY1VmNXF6aHpkT2pmekRPMC92N2gxYTZuZ2dlWHRDZ2s2OGtYdE85ODlZcFI5VVRDdGVMZXVFdFc3cDQ0QStKdE9uVHB4N2pseUZCd2NMRFBlZWtzdWFOSkU5L2llVHovN3pDNHNweEoxZFI0dzhMY0E2L3BYZWV4b0NTcmx6cEZmZjlzL2FhcWMzT1RzL21XbnFQT3k4N3BYdWJESnlNeDBmSWErVEpreWN2bGxsK25JV1V2KytFTXk4bENvOEx2dnY5Y3RaL1h0MDBlM0NoNEpPdklsL3Q0aGtwV1NxaU56UXV2VXRqNjBIck5uMFFINHArczk5T0VJNzFMN0lyLys2aXRwMHJpeDd2RTlhcG43SjU5K0trMmJON2Nyd0NjbkordEhVTmlGbENzckZSNTlXRWZ1eUR4NVVoSWVmRmd5cldUWWExVENlZlRvVVIyaElQVHAxVXUzbkxWdjcxNTcyZis1T0hqd29QeTVmTG1PbkJNUkVlR3BBclVrNk1pWE5KZk9PNDk1ZHFvRUZTMnFld0Q0bTByUjBWS3ZYajBkQVRrclc3YXN6UHZ1TzduODBrdDFqMjlTQloxVUJmaUwyN2ExOTFVQ1N0UTExMGpSRHUxMDVJNVRhOWZKL2xkZjE1RjNxSnRaMUcwb1dCMDdkcFNRa0JBZE9lZWtkZjA3MSswK2E5YXVkWFNmL2QvYVhIeXgwU1B3emhVSk9qeXYvTU1Qc3U4YzhITk5talF4TWdDQS95cFpzcVI4OXVtbk11VCsrKzB6ZTMyWkduUzJ2ZVFTbWZ2dHQ3b0hoVnBnZ0VTUEdpa0JMcC85ZitERlZ5WFpTdFM5Sk4xSHptcjNaOUhSMFhKeHExWTZjdGJYWDMrdFc3bXphTkVpSXpkc2JqUjQ1bnRla0tERDg5SlU5VTd1bmdKK3JSckY0WkFIWVZZQ00rbXBwMlRXUng5SmxjcVZkYTl2U2p4NFVIcjA2aVh2dmYrKzdrRmhGbDQxUnNvUEcrTHExcjZzbEJUWk9mSXh5WEs0MEZoK3NQM0RHL3IyN2F0Ynpqclg1ZXJ6NTgvWExlZW9iVk9tOXRubkZRazZQTy9ncTIvS3NaOS8wUkVBQVA5MFRkZXVzdXF2dit6WmREWFk4bFdxSU5hQWdRTmwxaWVmNkI0VVptVnU2Q3ZoRGR6ZCtuTnE5VnJaKzhKTE9pcDR4ZGplbUd0cUpWRmtaS1NPbk5XaGZYdjdocWpUMU9xaC9mdjM2eWhuaVltSnN2VFBQM1hrSEhYV2UxUlVsSTY4Z1FRZCtSTFpvcGx1bVpPVm1pWTdIeHdocWJ2Tm5vTUpBUEJkUmEyQnZKcE4vOHNhd1BYdTFjdllRTlcwOVBSMHVmMk9PMlQ1aWhXNkI0VlZZR2lvVkprMFFRTEMzVjNxbnZqNjI1SzBhcldPQ3BhcEk3NzhrWHFtMUVrWEpxZ2pVQnMyYUtBajU2amw2cjh0WHF5am5DMysvWGY3K3VpMC9qZmRwRnZlUVlLT2ZLa3k5U2tKS21QK3JsUEdnVVNKSC95QUp5dU1BZ0M4bzNMbHlqSnp4Z3hadVh5NTNIdlBQUkpWdXJSK3hIY2tKU1ZKLzV0dlpua3Y3Qm84Wlc2L1RVZnV5RkpWM1ljL1lsZDNMMmlxTmduMVNYSW53T0FNdXBxZHY3bC9meDA1NjdmZmZ0T3RuUDMwMDArNjVaenk1Y3JKcFowNjZjZzdTTkNSTHlIV0M3dktNMU1rSU1UTUhidlRuVnk2WFBZOSs0S09BQUE0TXpYclZxMWFOWms2WllwczJyQkIzbnJqRFduVnNxVlB6Y1p0MkxoUkpreWNxQ01VV3RacnR2eWR0MHRvclpxNnd4MnBjWnRsNzRzdjY2amdxSVN6U0pFaU9rSk9WQklkR2hxcUkrZDF2dnBxQ1RQdzk2dVo4ZHdVZnZzMWw0bjh1VkRWMjlYcUs2OGhRVWUrRld2ZFNxS3NEdzgzSkw3OHVoejcxZmszS0FEQVB4VXZYbHo2M1hDRC9MUm9rV3hjdDA0bWpCdG5EOHBNRERTZDl0SXJyOGkrZmZ0MGhNSXFNRHhjS2s5NFVpUW9TUGU0UTQyNVRoZzRjL3BjcUgzUDRTNVhzL2RWNWNxV05acWdxMnJ1alJzMzFwRnpWcTFhWlI4NW1STjcvL215WlRweVR1L2V2WFhMV3dLeURCNHVtSldlTHB1NnhFcnF4ampkazcyb1FRTWxldGhRSGYyVFd0YThvVlY3eVRoMFNQZWNXWU8xeXlYUVIvZWNtWlQ0NWd6Wjg4UUVIVG1yWWR3YUNRZ090bi9YMjI2OVE1SisvbFUvWWs1d3ViSlM2NnZQSk1UNnM3QTZNbitCSkF3WXBLTXpLOUVqVm1JbW4vbjNucFdSSVhHZFl5Vmw0eWJkazcyUzNicEtsV21UZGVSL1RzWEhTOXhsbmUzWHNFbUJSWXBJblFYZlNZZ0xXMEpNdUgvSUVIbnhKWE9GZys2KzZ5NlpQbTJhanJ4TmZXdzJhdExFbnVFMDVkdHZ2cEZPSFR2cXlCbE5teldUVmF2TjdTdDk1KzIzcFcrZlBqcnlOdlU3UEhic21Id3pkNjRzdEJKM3RjUnl5OWF0UnZZMzV0ZXdCeDZROGVQRzZjaFphdEJidFVZTnV6aWRLWHQzN2ZKY0FhWi9XOWV5bmFRZk9LQWpjNklualpjeTNXTjFkTzUyVFhoS0RyNyt0bzdjRVZJMVJzNmJNMXVDQ21oOHJkNlRkUnMwa0IwN2R1Z2U1Nm5WTnUzYXR0V1I3enF2ZG0xNWFQaHdIWm54MHNzdnkzMkRCK3ZJT1F0LytFSGF0R21qby8vMXlhZWZTdDhiYnRDUk05UzU1MXMyYlpMdzhIRGQ0eDBrNklXQUd3bTZrbmJ3b01SZDNVMHk5cHYva0l0czNWSnF2UDJhQkJUU2ZVa2s2TTRoUWM4ZEV2VC9SNEorWnI2VW9QK2JTZ0xVVExWSzJOV1htcWxSbFlVTkRwRnlUYzFhcVpsL0U0TklFdlQvOEpVRVBlUDRjZGw0OWJXUzduTFIzTkw5K2tybHgwZlp5KzBMd2lVZE91UzZrRmhlWEhYbGxmTGw1NS9yQ0RsUjE4VnFOV3RLbXNOSDhZMTQ2Q0VaTzJhTWp2N1hnTnR2bHhrelorcklHWDE2OTdicmxYZ1JTOXpobUJEckE3anlsSW11TE1GS1hyeEU5cjd3c2hvcDZ4NEFBUEpHVlQ2dVZLbVMzRDVnZ016KzlGUFpzSGF0L1B6amozTFhIWGRJMVpnWVk1V1JjMlB2M3IyeWN0VXFIYUV3Q3lwV1RDbzlhU1V4Z2U0TzN3OS9PRXVPLzFsd1M5MmJYWFNSYnBteGVzMGF5Y2pJMEJGeVVyWnNXV25ab29XT25KUFRQblIxQTNIeGtpVTZjazZQN3QxMXkzdEkwT0dvNG0wdmxqSjN1YkFmM1hvVEgzenhWVG4reDFMZEFRQ0FNMVRSb0JiTm04dXp6endqNjYxay9hZUZDMlhRWFhjVlNFWDR6TXhNK2ZycnIzV0V3azZOczBwYzAxbEg3bEFyekhZT2YwUXlrZ3JtVklIYXRXdnJsaGtuVHB5d3Q3emc3RlNoeld1NmR0V1JjOVNLdEpTVUZCMzkwNTQ5ZTJUTGxpMDZja2I1OHVYdGxSTmVSWUlPeDVXL1o1QkVORGQ3dDFQSlNrdVRuZmM5SUdrdUxLa0hBQlJPNm9pblpzMmF5VFBUcHNuV3padmxwUmRla05xMWF1bEgzYkhrano5MEM0V2RPa29yK3VGaEVoVGw3czJpdEIzeHNudmk1QUpadWRqQ3dJenQ2VlJ5dmludTdOdHg4Ui9YWG51dDR5ZGlxSlZDMjdkdjE5RS9xVG9oVHE5dzZOSzVzOUdDZXZsRmdnN0hCWWFGU3N3elV5U29iQm5kWTA2Nmxad25ESHRZc3RKWm1nUUFNRXNkK1RUZ3R0dGs1WW9WOHVUWXNSSVJFYUVmTVV2dGlXY0pMdjRXVXJhc1JJOGU2ZnBTOXlNZmZ5TEhmak8zRnp3NzFhdFZNM3JVbWxxbDhzTVBQK2dJWjZOK0g4MmJOZE9SYytaa3MxTEk2UlZFNmppNjNqMTc2c2liU05CaFJHaUZDbEw1NlluL0xTQm5VdEpQdjhxKzUxL1VFUUFBWnFsWmRWVXQrZk5QUDVVaUxoU25WVVhzZkhVSnJoY3I0L3VEa2xkZUljVXVkYmFRNU5uWVM5MkhqWkQwdzRkMWp6dlVscFA2OWVycHlBeVZISHFoS0tTdk1GRVE5RXlGQUpPU2toemZmMTdSeWxGYXQyNnRJMjhpUVljeHhkdGNMS1h2dUUxSFppV3EvZWkvc3dRUUFPQ2VEaDA2eVBCaHczUmtqcHJoVS90a25hYUszem05VlBYZjJOdHJSa0JRa0ZSNi9GRUpMRkZjOTdnamZkOSsyVFYra3F0TDNZT3NuL1hTVHAxMFpNWmZLMWZLdG0zYmRJU3p1ZUx5eXgwdm5ybDh4WXIvT1E5ZEhYK3BLc2M3cVZ1M2J2YjUrbDVHZ2c1enJBLzlpdmZmSXhFdG5WOEc4Mi8yZnZRSEhuTDlyaTRBbUtBU01pZXBtU0duajhYQmZ3b20zWGJiYmNhWHVxdmYzNzhIcms1UWcxVFRDYnJKSTl3S3U5RHk1YVg4ZzBOMDVKNmpuMzhwUnhmOXFDTjNYSEhGRmJwbGhscnA4WlpIajl6eW9obzFha2pEQmcxMDVBeDExT1d1M2J0MTlCK0xGeTkyZEdXRHV0blR6K0h6MUUwZ1FZZFI2cHp5S3BNblNsQ3BrcnJISEhVdWFNSkRJNDJmWncwQXBoMC9mbHkzblBISnA1L0srZzBiZEFRbmxTNVZ5dDZUNll0TUorZktab2VyTCtPZnl2VHFLUkZOTDlDUlN6SXpaZGRqWXlYOTZGSGRZWjQ2VlVFZDhXWFNqSGZlc1pkVTQrelVQdTRiKy9YVGtUUFVUWkxmZnZ0TlIvOHhaODRjM1hKRzFhcFZwZEg1NSt2SXUwalFZVnhZNVVwU2FlcFQ5bklzMDA3TVd5RDczM2hiUndEZ201eGMwaGNmSHkvM0RSNnNJLzl5OE9CQk9YQ2dZRS95VUFOVnRTZmRORFh6NDdUdzhIQUpOSnlrcTJXck1DY2dPRWdxajM5Q0FpTENkWTg3MUtUSXprZEgyOG02RzlSeTZsNkdDM3VwNDd6R1B2R0VqZ3FlMHl1cG5LYU9LWE82RXZyY2I3L1ZyZi9jcVA3bFh3bDdmbDE3elRXZXJ0NytOeEowdUtMRUplMmsxSzAzNmNpc0ExT215L0hGemhhVUFBQTNyWEFvcVZIN2YvdmRlS01rSmlicUh2K2hrdk91MTE0cnpWcTBzQ3N3RitSZzF2UnVYSldjRnk5dVpxOXg0OGFOZGNzTU5TTkc4UzJ6SW1yVmxITDNEckszRnJycDJMZmZ5NUg1QzNSa25xcThiWHJWeDZ1dnZTWnIxNjNUVWNGUTI1SGVmZmRkdWVubW16MWRaTEZhdFdwU3ZYcDFIVGxERllyNysyZGV0V3FWb3lzYTFNM1VXL3IzMTVHM2thRERIZFlGdGVLUSt5UzhTU1BkWWM1L3FvdytMT21IaitnZUFIQ09HaUNXS2xWS1IyYW9ZN1h5bTlTa3BLVElMYmZlNm5nRlhDOVFNeXZYeHNiYXo1UGFzOWpGU3RUNzMzS0w3UDdYL2tVM3FMM2hwbStBaEFRSFM0a1NKWFRrck1xVkt1bVdHY3YrL05NKzR4aG1sZTEvbzRUVnE2TWpsMlJteWE2Um95WE5wVlVzelpzM04xN04vWVNWRUtxYm1rZGRYTDcvTjNYTlg3bHlwVng2K2VWeXk0QUI4dkdzV2ZMc2M4OTU5Z2FYV2puVTcvcnJkZVFNZGVOMTE2NWRkbHNsNjA3KzdPZlZyaTIxclM5ZlFJSU8xd1JHUkVqTWMxTWwwTkFzd09uU2QrMzV6L25vSGw4ZUJNQTNtUzRLdG5yTkdsbTdkcTJPenQzSmt5ZmxaaXM1LzlMaC9YdGVvS3FaOSs3YlY1Yjg4ZjhuZDZnendqLzg2Q05wZk9HRjh0U2tTVVlxbm1mbnA1OS9ObjVqb0VtVEpzYVcwVmN5bktDcjM4WGpZOGJrZWFETk1XMjVFeGdlTGxVbVBHblgvbkZUeHNGRHN2T3hzU3E3MUQzbXFKVWtRMXpZcnJQR3V2YjI2dFBIOFZvZ09WRko2VzIzM3k0dEw3NzR2OGVOcWZmTXFOR2paZjc4K1hic1JkZkZ4anE2L1ViZDhGUTM5UlNuejZidjBxV0w0NVhuVFNGQmg2dkNLbGVXU2xNbTZNaXNFL01YeVlGMzN0TVJBRGpIMUd6bTZjWlBuSmlucEVZTjlHSzdkN2NMdy9rYk5XRHVlOE1OTWkrYmdkdVJJMGZrMGNjZWt6cjE2OHUwNmRPTnoyeXIvZStEaDVpdm9uM2hoUmZxbHZOYXQycWxXK2JNZk84OWVlT05OODdwOWJ4cDB5WVpQSFNvdEd2Zm5rcnd1UlRab0w1RTNlTE9kc0xUSFo4M1h3NTk4WldPekZJSllhWG9hQjJaczJEaFFtblRycDJzVzc5ZTk1aXhkZHMyR1RaOHVOUnIwRUJtdnZ2dS85eVFVcTk5dFRwbysvYnR1c2RiMUJMM2VuWHI2c2daMzgrYloyL1ArdkhubjNXUE0yNnpua2RmUVlJTzE1VzhySk5FM1RsQVIyYnRuelJWa2xhdDFoRUFPTVBwNDJYT1JDWFlMNzM4Y3E2VEdqWHo4Tjc3Nzh0RnpadkwvQVh1N1F0MWkxcXlQMkRnUVBuMnUrOTBUL1pVa2IzaER6OHNOV3ZYdGd2a0xWMjYxUEZqNXJaWkErYk9YYnZhQTJ5VDFMNUprOFd4YXRXcVpYOFBrOVJ6Zjg5OTk5bUp4dXJWcTgrWWNLdlg3MFlyS1gvbm5YZmt5cXV2bGtZWFhDQXZ2UGlpdlkxQkpTN0loWUFBcVhEL1BSSmF2YXJ1Y0lsMWpkb3o3aWxKZFdFclE3Rml4ZVRSa1NOMVpKWkt6bHUyYm0ydnlqbnM0REcrYW9XVG1oVlhLNEhxTjJ3bzA1OTlWazdtY0l6aS9nTUg1TnJycm5OMVpWQnVxWlU5dlh2MTBwRXpWTjBLZGMxMnNxN0lCZGIxUkIwTjV5dEkwRkVnS2d5K1Q4SWFtTjFIcEdSWkY4R0UreDdnZkhRQWpsTEZjVXhUaWZuUUJ4NlFJVU9IMnJNbmFobjN2NmsrZFhhc0tpalV0Rmt6dWVXMjJ5VHg0RUg5cVA5UXladjYyVDZiUFZ2MzVFNnk5Um1nYm5LMGJkOWU2alpvSUk4OS9yZ3NzeEkrTlR1VGw5VUphc0NvS2oxUGZPb3BhWExoaGJMaXI3LzBJK1pVcmx4WnpyY0c4YWFvR2JDU0pjMGZoWnBoUFhjZmZQaWhORy9WU2lyRnhOaEp1TnFHMGNkS1VscGRmTEZVcmxwVkxyQ2UwOXNHRHJSdk1KMytlbGUvTjdVM0ZXZW5scnBYR2pkV3JRZlhQZTdJT0hSSWRvNGNMVmtaNXJjV1huLzk5VWJmRTZkVHliUmFsVk8zZm4xNWNQaHdXYjU4K1Rrbnl1cTFyRmJ6cU8wd2FsVkluWHIxNUtvdVhlenIyWm11NjJleWJ0MDZ1ZU91dXp4WjJWMGw2RTdlNU51d2NhTjg5dm5uZWJwR1owZFZiemQ5STlKSkFkWVA3OXhQL3krcVdOZW1MckdTdWpGTzkyUXZhdEJBaVI0MlZFZi9sSm1hS2h0YXRiZmYvRGxwc0hhNUJFWkc2Z2gvUzN4emh1eDV3c3l5OG9aeGF5UWdqL3M1VG0zYkxsdTZYaWVaU2NtNng1eWlWMTRtMVo2ZjdzcFJiMjVRVlZNVEJnelMwWm1WNkJFck1aUFAvSHZQc2o0UTRqckhTc3JHVGJvbmV5VzdkWlVxMHlicnlQK2NpbytYdU1zNkd6OC9QN0JJRWFtejREc0pLUk9sZTN6TC9VT0d5SXN2dmFRajU5MXREVHltVDV1bUkrLzdhK1ZLYWQ2eXBhTURpSnlvNDdCcVdJbVVPZ3Y0NzJSS0xlZitmY2tTMmJscmw2dDdKYlB6enR0dlM5OCtmWFRrSERWenJoSTVwNWJzcXlKL1phS2k3SnNzSFR0MGtQUFBQOTh1UEZXNmRHbTdVcnJhVDZtKzFNQlpmYW1aTTFXSTdwZGZmcEh2dnY5ZS9zekRBRDAvSG4za0VSbHRKUWdtWGR1dG0zeHoydkZHWGpUNHZ2dGs4cVJKT25MV3VwYnRKTjJGUW1mUms4WkxtZTZ4T2pMSXVpNGxQRFpHRHIvL2tlNXdpZlhlcXZUVU9JbHk0V2Y4MlhvL3FtSnFCWkd3bGk5ZjNpNDQxckpGQzZsUXNhSjliVmJYanJEUVVFbTNyaGxxbWJxNnFhcUtJOGJGeGNtdml4ZkxnZjM3NWVpeFkvcHZ5THVuSmt5UW9TNXNxemtYNm5mUXVrMGIrOXJvbEwrdndVNVExL3kxcTFiNVRJRTRoUmwwRkpqdzZ0VWsycnFRaXd0M3RFNThPMDhPekppcEl3RElIelU0aTdDU1pyZW9HV1MxM1BLdEdUTmsyalBQMkYrcXZYN0RCazhrNTZhb2dhN2E0KzNrZm5wMVUrVkFZcUs5ZFBxcHlaT2wzMDAzeVlYTm1rbTFtaldsZE5teVVyVkdEWHZaYVl5VndLdTQ1bm5uMmZ1Z0gzbjBVZm54cDU5Y1RjN1ZUWU43NzdsSFIrYjBNWEJqeFdrdnZmS0tiTEtTSGVTQ1d1bysrRjRKS2xkV2Q3akVlbS90blRoWlV2ZnQweDNtWE55NmRZRWRtYVZXTGFrYkJKT2ZmbG9lZVBCQnUrWkhwOHN1a3phWFhDTHRPM2EwYnh5bzdUaHE1bjNHekpteWVmTm1SNUp6WmZUamo5djc0NzFFelV4MzY5Wk5SODV3S2psWExtalN4S2VTYzRVRUhRV3ExRlZYU0ttK3p1NWR5YzcreWRNbGVXM0JubTBKd0Q5RVJrWktodzRkZEFRVFZISisvK0RCOHZxYmIrb2VkNmlWQ2ZFSkNZNE5xUE5qMEoxMzJrbTZhWmQyNmlURml4WFRrVGVwbFJRUFBmeXdhNnRXZkYxSVZKUlVHalBLbFVtUTAyVWNPaXdKd3g4eHZ5ck4rcm1lbmpMRjhRSmxYbmZLZWgvYzFMKy83Tml4US9kNHc1V1hYMjdQVkh2UkRRNGZCZWNHRW5RVUxPc0NHejFxaElTZmI3N2dVdGFwVTVKdzcxREpPTzY5SWhzQWZFL1BIajEwQzA1VFN5WWZIRFpNWG4zOWRkMVQrRFNvWDE4ZWZ1Z2hIWmxWcGt3WnVleXl5M1RrWFY5Lzg0MHMrdkZISGVGc1NsemFTWXBkM2tsSDdrbjZkYkVjbkdYK0ZJa2lSWXJJekJrejdNSnhoY20rL2Z2dFdYc3ZyWjVxMUtpUko0dXdoWWFHU3RldVhYWGtPMGpRVWVBQ3c4SWs1b1ZuSkxCWVVkMWpUdXEyN1pMdzBFaDdEellBNUllYWRWUURSRGhMTFcxOGN0dzRlZkhsbDNWUDRhTUdsYTlhUDMrWTlmbm9Calh6OWNqRER6dDZuckVKYXZaOCtFTVBjZXhhTGdVRUJrcmxzYU1sS01yOEtveC9zSDVQZThaUGtsTTc0bldIT1kwYk41WTNYMy9kZnM4VUpxdlhySkZCOTl6ajZGTHcvRkFyR2t6VUlNbXZwaGRlS05XcXVueXFnUU5JME9FSllWVXFTL1NUajlzejZxWWQvMjZlSFB6d1l4MEJRTjZvUWtHeER1KzdNeTBxS2tvdWFkZE9SOTZqRXJCSmt5Zkx1QWtUQ3UxU1pwVWtQek50bWpSdjNsejN1RU1WeSt2YXBZdU92RXNWYUh4bkpqVmxja3N0ZGEvdzBJUDJ2blEzWlNVbnk4N2hJeVRMaFNKdXFrTDMrQ2VmOU93U2ExTSsvT2dqbWZMMDB6b3FlRjA3ZDdZVGRTL3BmK09OUHZtNklFR0haNVRxMmxsSzlycE9Sd1paSHhaN3gwK1M1SFhyZFFjQTVNMndCeDd3bVprYjllOTg3ZVdYN1Vyd1hxVUdVbDJzUVY2dG1qVjFUK0dpQnJjUER4OHV0OTE2cSs1eGozcnV4ejcrdUd1ejl2bnh4TGh4ZHEwQTVFNVU3TFZTcE8zRk9uSlA4ckxsY3VDdEdUb3lSNzEyVlRIRnh3MmZkdUJGVTZkUDk4d1JoT29tWDZYb2FCMFZ2S0pGaThwVlYxMmxJOTlDZ2c3dnNDNncwU05IU0ZnZDg1VVdzNUpQU3Z4ZDkwbUdIMWMvQm1CZXZYcjE3RHYwdmtBTlh0VmV2SmlZR04zalRXcVE5L3ZpeGZiWnVvVnBSaXc0T0ZoR1BQU1FQRFpxVklIOTNPcjFySTUxOC9yenZudjNiaGsvY2FLT2NGYUJnVkpwOUVnSmlJalFIZTdaLyt5TGtoSnZmcW03dXJrMTR1R0g1WldYWHBMSUF2ZzVDNEphdnIxdy9ueDdaWlFYaElTRXlJMzkrdW1vNEYzVXRLbFVyRmhSUjc2RkJCMmVFbFMwaU1TOCtLd0VGamRmOENNdFBrRjJqaHh0NzVVQ2dMeFFpY3lUVHp3aFZTcFgxajNlby82TkkwZU1rQWNmZU1DTzY1eDNudjJubHhVcld0UXUvdlRCdSs5S3hRb1ZkSy8vVXVmY1B6dDl1bjNlZVVFdkVYMWc2RkRwMEw2OWpyenJSU3NSMjdoeG80NXdOdUhWcWtuNVlVUHN5UkEzWlo0NElmRkRoMHVtQzNVRDFMWHUxbHR1a2RtZmZTWmx5N3A4eEp5TFNwUW9JVStPSFNzL0xWb2s5ZXZWMDczZWNGMXNyR2RxV1Z6ZnQ2L25ielptaHdRZG5oTmVvN3BVZk1KS25GMFlwQnliTTFjU1AvaElSd0J3N3RReFdLKy8rcW9ubDdxcldWazFJM3I2ckd5NWN1WHNQNzFPL1h1N2QrOHVmeTVkS2pmMTYrY1RTNi96b21yVnF2TE5uRGx5KzRBQm5oaE1xbG13OTJiT2xFYm5uNjk3dk1rK2RtM0VpRUpicXlBdnl2VHBMZUVONit2SVBTZi9XaVVIM25wSFIrWjE3TkJCZnYvMVYvdXNkRjlOME01RUpiNlhYWHFwL1BuSEgvTFE4T0dlL014UnEzQzhNR3V0S3Z1cjJnUytpZ1FkbmxTcXk5VlNzcWNMKzlHdEQvWjk0NTZTazNHYmRRY0FuTHVPSFR2SzFDbFRDbnoyODNScW1lY0x6ejRyajQ0YytZOS9WNmxTcFh4cTBLcG13bDUvN1RYNStjY2ZwWFdyVnA1Nmp2TkRKY0szOU84dlMzNzdUZHEyYWFON3ZVRWR1L2JGN05tZVQ5TFZzV3Z6NXMzVEVjNG1NQ3hVcWp3MVhnTGN2dGxsamJVT1BQK1NxMk10dFpYbnU3bHpaZHdUVDloN2tYMlp1bDQzYU5CQXZ2anNNNW56NVpmMlRUMnZVamNOZW5idnJxT0NvNjZwNnJQT1Y1R2d3NVBVMFNEcWZQU3d1dWFYWW1hcS9laUQ3cGVNcEdUZEF3RG5idUR0dDl1VmhMMlFRS29sOTNPKytrcHV2ZlhXLy9uM3FKa0ZWWUhlbDZnQjZnVk5tc2lDSDM2UUw2M0VVU1hxdmt6dGpmemVTaDVlZWZsbHord2YvYmZLMW10SUpUaHFOdEtMMUd0Q25VaFF5Y1BiUzd3bzRyemFVbWFnKzBVSU01T1RKV0hZdzVLWmxxWjd6Rk9yYm9ZOStLRDhzWGl4ZEx2bUdwK2NUYTlicDQ2OC9jWWI5bzI4SzY2NHdpZHVVSHJodURWZnIyRkNnZzdQQ2lwU1JLcE1teXlCTHB3em5McDVpK3g2Ykl4ZDRSMEE4a0lOQnRUKzNiZGVmOTNlUTEwUTFMK2gzL1hYMjh2Q3M1dVZWVE1jQmZYdnl5KzF4Rk1OVWhjdFdDQUw1czJUWGoxNytzeFo5T3Azb3hMejk5OTlWMzc5K1dkcFkvMSt2RDZBVkRQcGFzWk9GYThMOTlBV0ExVWM2NFAzM3BQdnYvMVdHdFIzZjhtMlQ3TmVjK1h2dWxQQ3JFVGRiYWRXcjVWOXo3Mm9JL2ZVcmwxYlpuMzhzZnk0Y0tGY2Nmbmxuai92WDFITDh6OTgvMzFaOGVlZmNyMTFUZmVsTFQ1cW1YdjE2dFYxNUw3aXhZdjd4SkdST1NGQmg2ZEYxSzBqRmNlT3NsNnA1bCtxUnovL1NnN08va0pIQUpBM2FqQzFkTWtTVjg4YlYzdk4yN1Z0S3o4dldpUnZ2dkZHamt2NzFOSnFOWXZ1eTFSaTI5YjZlZFZlNmExeGNmTFV4SWx5NFFVWDJNK0QxNmlDVGoydXUwNStYTERBVHN4Nzl1amhVOHYwMWV0bDdKZ3hzbVR4WXVuVXNXT0JQY2Vxa0o3Ni9wOTk4b245UEhhM25sTi8yZTdnTnJYVXZkSzRNZXJDb1h2Y2svanFHNUs4dm1DT3VXM1ZzcVY4OWNVWHNselh0U2pqc2RVcmF1KzJPbUx4THlzcFY2dUYxR3ZjaTllMHMxSHYxZGh1M1hUa1BuV2Q4UG5QdUN5RDFUV3kwdE5sVTVkWVNkMFlwM3V5RnpWb29FUVBHNnFqZjFLVkh6ZTBhaThaaHc3cG5qTnJzSGE1QkVaRzZnaC9TM3h6aHV4NVlvS09uTlV3Ym8wRUdMNTRaR1ZtU3NLSVIrWG94NS9wSG5NQ3JJRkl6YTgra1lnNmRYU1BOeDJadjBBU0JnelMwWm1WNkJFck1aUFAvSHZQeXNpUXVNNnhrckp4ays3SlhzbHVYZTJWRFA0cTdjQUIyVFZ1b3ZXY21GMDlZUStJSG50VWdsMDRvY0NFR2UrOEkvT3NBWU1wbDNicUpEZjM3NjhqLzVCaHZjKyttak5IeG93ZEsrczNiTEJqcHhXeFB2TlVvdnJJd3c5TDgrYk5jejB6cENwZy8yWWxYRTRhZE9lZDBycDFheDI1VHoyL08rTGo1UXRyQVA2NTliVjIzVG81ZXZTb2Z0UTk2dVpCeVpJbHBkbEZGOW1KZVRkcm9PckxleUZQbDJsOUhxOVlzY0krNG16QndvVnk0c1FKL1lnWmF0YXdSbzBhOXA3Vy9qZmRaQys3TjVHVUo0d2NMZW5IanVuSW5LanIrMGp4VmkxMFZQRDJ2L20ySksxWXFTUDNoSjlYV3lyZWM1YzltMStRMVBWaDd0eTVNbVBtVFBseitYSTVmUGl3ZnNRZDZucXRpb3gydU9RU096RnYyYktsUlBwSkhxTSs4OGFOSDYrai8zVXlPVm0rdHA1N0U1K0w2c2F0V2wzbHkwalFDd0ZmVDlDVkRPdURjL04xdlNWMXl6YmRZMDVZN1ZwUzY4dFBKREE4WFBkNER3azY0RHZTMHRMa2o2Vkw1WlZYWHBHNTMzNHJ4NjJrSnErRGtrQnJRS3RtTkZVeXJnWWduYSsrMms1YXZMNVUybTFxYUhQdzRFRlp2WHExZlB2ZGQvYmdlOGtmZjBpNk5TNVJYMDVTTTF4cW9LMFM4aGJXNytWcTYzZWlpcXVwSk4yZnFiUEl2N0VHMkxNKytjUitiaytlUEdrbjhQbWhYdHRxeFVGcksxRlJTMVRidFd0bkY4VHloU1hKOEcxSGpoeXhyeE9xOE9EaXhZdGw5Wm8xOXJYQ3lRUlNYU3ZVbGh4MXJiajhzc3VrZmZ2MjloN3ppRUp5YnZ2cFBwczlXM3IzN2FzajU2am5kMWQ4dk05c2Zjb09DWG9oNEE4SnVwSzhicjFzN1htRFpDV2JMK1pXc25jUHFUTGhpUUsvdTVzZEVuVEFONTA2ZFVyV1dBTS9sYkQvL3Z2dkVwK1FJSWxXSWhsdkRTaFVnbk02dGYrM2ZMbHlkaEV4VmZTdFdiTm0wckJoUTJuY3FKSGZKMzhtcEZwamlaMDdkOHFhdFd2dFB6ZkZ4Y25XclZ2dGdibWFTVXRLU3JKbjRNOUUvUTZpU3BlMm4zZTF2N0dhbFRUV3ExdFhxc1RFMkwrVHlwVXFGY3BCOXQvVWM3ZldlbDVYcmxvbDY5ZXZ0MmZQMUd5a2VsNjNiTmtpL3g1b1ZvcU90bWNPMVpjNjUvNkNDeTZRbWpWclNpUHJ0UjFUcFFvSk9RcWNXaDJ5YmRzMmV5V091bDZvbTFESGpoMnp2OVExWS9lZVBaSjhodkdvU2d5aksxYTBielNwNjRXNmdhcHUyS21xOHVkYjE0b3ExdXRiM1lncXpOUm5YWXZXcmUxcmhkUDYzWENEdlBYR0d6cnlYU1RvaFlDL0pPaUtPck44enlPamRXUldwV2NtUytscnV1cklXMGpRQWY5eHRvOWhac2ZOeSsxUWlOL0Z1Y25wZWVXNWhLL0t6ZldDMTNmMlhudjlkUmwwenowNmNvNjZzZmZEZDkvWkJUaDlIUWw2SVhCazloZHk0T1hYZGVTc1dsOS9iaVhvTHQ3cHRsNnV1NmM5S3ltYnp2NmF5cS9BWXNXazhwaFJFdVRCMXhRSk9nQUFBSHpKdm4zN3BQRUZGOGpCcytSMGVhRzJDL3kxZkxsZnJNQWhRUWQ4RUFrNkFBQUFmSVZLT1crNTlWWjU3NE1QZEk5ejFJcUYxMTU1eFM0bTZRODRud0lBQUFBQVlNejdWbUp1SWpsWHlwVXJKOWZGeHVySTk1R2dBd0FBQUFDTStQWFhYNDNzTy8vYm5RTUgrdnpaNTZjalFRY0FBQUFBT0c3VjZ0WFNxMCtmTTFhOWQwTEZpaFhsdm52djFaRi9JRUVIQUFBQUFEaHEvb0lGY3ZrVlY4aitBd2Qwai9PR1AvaWdmZnlsUHlGQkJ3QUFBQUE0SWkwdFRaNS80UVc1TmpiV1NNWDJ2OVd0VzFjRzNuNjdqdndIQ1RvQUFBQUFJRjlVcGZiMTY5ZkwxVjI2eUpBSEhwQ1VsQlQ5aVBOVTVmWXBreVpKYUdpbzd2RWZKT2dBQUFBQWdEemJzR0dEM0Rsb2tGellySmtzK3ZGSDNXdE9yeDQ5NUlyTEw5ZVJmeUZCQndBQUFBQ2NrME9IRHNuc3p6K1h6bDI2U0tNTExwQTMzM3BMMHRQVDlhUG1SRmVzS005TW42NGovME9DRGdBQUFBRElVVkpTa3F4YnQwN2VldnR0aWIzdU9xbGVxNVpkb2YzN0gzNndsN2U3SVR3OFhENTQ3ejJKaW9yU1BmNkhCQjBBQUFBQUlKbVptWExxMUNsN2RuekR4bzN5MVp3NU11cXh4K1R5SzYrVVduWHEyRXZZQjk1NXA4ejU1aHRqUjZkbEp6QXdVQjU3OUZGcDNicTE3dkZQSk9nQUFBQUFVTWlkT0hGQ1dyZHBJNDJhTkpFYXRXdkwrWTBieTNVOWVzakVTWk5rNGFKRmtwaVlLQmtaR2ZxL2RsK2ZYcjFrNkpBaE92SmZKT2dBQUFBQVVNZ1ZLVkpFZHU3YUpkdTJiN2VYczN0SjJ6WnQ1T1dYWHBLZ29DRGQ0NzlJMEFFQUFBQ2drRk5IbDdWdTFVcEgzdEgwd2d2bDAxbXpKQ0lpUXZmNE54SjBBQUFBQUlEVU9lODgzZktHaTF1M2xybmZmQ09sU3BYU1BmNlBCQjBBQUFBQUlNMmFOZE90Z3FWbTg2L3Awa1crbmpOSFNwVXNxWHNMQnhKMEFBQUFBSUJVcVZ4WnR3cU9TczZIM0grL2ZQakJCMUlrTWxMM0ZoNGs2QUFBQUFBQWlZbUprV0xGaXVuSWZTVktsSkIzWjh5UXB5Wk9sSkNRRU4xYnVKQ2dBd0FBQUFDa2VQSGlFaDRXcGlQM0JBWUV5R1dYWGlyTGx5NlZYcjE2NmQ3Q2lRUWRBQUFBQUdEUFdydTlEejI2WWtWNTZjVVg1YXN2dnJCbjhBczdFblFBQUFBQWdLMUJnd2E2WlZaa1JJVGNQV2lRckZ5eFFtNjk1WlpDY2NaNWJwQ2dBd0FBQUFCc0Z6WnBvbHRtaEllSHl4MERCOHJLdi82UzZWT25Tc2xDVnFYOWJFalFBUUFBQUFDMk9uWHE2SmF6cXNiRXlOakhINWZOR3pmSzg4OCtLOVdxVnRXUDRIUWs2QUFBQUFBQVczUjB0QlF0VWtSSCtWUEorcnY2WFgrOWZEOTNybXhjdjE1R1BQeXdsQzlmWGorS015RkJCd0FBQUFEWWloWXRLdVh5bUVTci8yK2Q4ODZUTysrNFF4Yk5ueThiMXEyVHQ5NThVenAwNk1BZTgxd2lRUWNBQUFBQTJNTEN3aVNtU2hVZG5WbEFRSUJkNUUzdEgyOS95U1Z5MzczM3l0eXZ2NVlOYTlmYVJkK2VlK1ladWZqaWkrMzk1amczSk9nQUFBQUFnUDlxMmFLRi9XZTVzbVdsY2VQRzByRkRCN2t1TnRaZW9qNXp4Z3laUDIrZXJMZVM4VjN4OFRMdnUrL2s2Y21UNWRKT25lemw2OHlVNXc4Sk9nQUFBQURndjBZOStxaWtuVG9sdXhJU1pObVNKZkxkM0xueTBRY2YyRVhlK3ZUdUxXM2J0TEgzcW9lR2h1ci9CNXhDZ2c0QUFBQUErQzhTNzRKRGdnNEFBQUFBZ0FlUW9BTUFBQUFBNEFFazZBQUFBQUFBZUFBSk9nQUFBQUFBSHVBakNYcUEvYit6eVR4MVNyY0EvNWFaZkZLM2NoREUvVGNBQUFEQWwvakVDRDR3TkVTQ2loWFRVZmFTVnEzUkxjQy9uVnkyWExleUZ4SlZScmNBQUFBQStBS2ZtV0lMdjZDeGJtWHY2TmR6ZFF2d1gxbHBhWExzaC9rNnlsNW81V2pkQWdBQUFPQUxmQ1pCanp5L29XNWw3OFM4QlpKKzZKQ09BUDkwN0pkZkpYM1BQaDFsTDdKRk05MENBQUFBNEF0OEprRXZlbkVyNjErYjgwYjBqS05IWmZkVFQ0dGtadW9ld0w5a0pDZkwzdkdUUkxLeWRNK1pCWlV2SitIVnF1a0lBQUFBZ0Mvd21RUTlyRnBWQ2ExZVhVZlpPL3JwNTVMNHlXYzZBdnhIVm5xNjdCbzVXbEkzYjlVOTJTdmVxWU1FQlByTTJ4c0FBQUNBeFdkRzhJR2hvVktxVjNjZDVTQWpRL2FPZkZ3T3ZQT3VaRmx0d0I5a0pDVkovSU1QeTlFdjV1aWVIRmlKZWFuZVBYUUFBQUFBd0ZmNDFCUmJWTi9lRWxTcXBJNnlwMllhOXo0K1RyYmZmcGVjMnJxTkplL3dXZXExZk95blgyVHp0VDNsbUVyT3o3SzBYWWxzY1pFVXlVWE5CZ0FBQUFEZUVwQmwwVzNIcWVSaVU1ZFlTZDBZcDN1eUZ6Vm9vRVFQRzZxajdPMS81WFhaTjNHS2pzNHVJRGhZSXBvMWxhTHQyMGxFclJvU1ZMYXNmZ1R3cUt4TVNZdmZKU2MzYnBUajMvOGdLWnMyNndmT0xpQTBSR3A4K29GRU5zdzVRVmVyUytJNngwckt4azI2SjNzbHUzV1ZLdE1tNndnQUFBQ0FLVDZYb0dlbXBzbm0ySjZTc202RDdnSHd0MUkzWFMrVnh6eW1vK3lSb0FNQUFBRGU0M05WcEFKRFE2VEsxRWtTV0tTSTdnR2doTld2SzlFamh1c0lBQUFBZ0s4eG02QUhCRmoveS9sb3RQOUtUOWVOczR1b2M1NVVtajVKQWtKQ2RBOVF1QVZYS0MvVlhuOUpBc1BEZGM5WnFIVXp1Vnc4bzdhSkFBQUFBRERQZUlJZUdKbTdtZTdjSEIxMXVwS2RPa3JGOFdQc1BiZEFZUllVVlZxcXZmMmFoRmFzcUh2T0xpc3RWVEtPSDlkUnpvS3JWOVV0QUFBQUFDWVpUZERWT2N6QnVhaTZycHphc1VPM2NzbEsvcU42WENkVlhubEJBb3NYMDUxQTRSSmFwN2JVK09SOWUxWEp1VWcvZEZqUzl4L1FVYzVDS2xUUUxRQUFBQUFtR2QrREhuWitmZDNLV2RxV2JaS3ljNmVPY3E5RSszWlM2OHRQSktKNVU5MEQrRCsxN0x4azMxNVM2N09QSkx4YU5kMmJlOGNYL3k2U2thR2pIQVFFU0ZpVnlqb0FBQUFBWUpMeEJEM2l2TnpQN0IzKytEUGRPamRoVmF0S3pmZmZrZWhKNHlTa2FoWGRDL2lob0NDSmFIYWhWUC80WGFreWJvd0VSVWJxQjNKUFZYQS8vUEVuT3NwWllFUzRoRlUvOXhzQUFBQUFBTTZkMFdQV2xMVEVnN0toUlZ1UnpFemRrNzJReXBYa3ZPL25XRWxCaE80NWQ1a3BLWExzeDUvbDREdnZ5cW5WYXlYeldPNzIyUUtlcGJhS1JKV1d5Tll0cGN5QW15V3lYajBKc0JMMXZFcGF0VnEyZGU5ckg0TjROcUUxcWt1ZEg3NnhaOUlCQUFBQW1HVThRVmMyWGR0RFVsYXQwVkhPeWc2NVZ5cmNkN2VPOGlmOXlCRTV1WEdUSkM5ZklTbWJOa3Y2c1dPU2xacW1Id1c4S3lneVFvS0tGNWZ3Q3hwTGtTYU5KYXhhTmJzdnYxUlN2cVh2VFhKeTJYTGRrN1BTdC9XWFNvK08wQkVBQUFBQWsxeEowUGU5L0pyc2YrcHBIZVVzTURKU3FuL3luajFMQ01CWkI5NTVUL1krL21UdWpsZ0xDcFNhWDM0cWtmVjVMd0lBQUFCdU1MNEhYU25aK2FwY0w4bk5URTZXK0R2dnkxUEJPQURaTzdyd1I5azNibUt1eno4UHExVlRJczZyclNNQUFBQUFwcm1Tb0tzcTBFV3Z2a0pIWjVjV255QmIrOXdvSnpkdjBUMEE4c3hLeUk5OCs3MGszSFh2T1czeGlMcmxKcnRhUEFBQUFBQjN1SktnSytYdXZQMmNCdnZwdS9iSTF0amVjdWp6TDNOVnpBckEvOG80Y1VKMlRaZ2tDZmNNa2F5VVZOMTdkaUhWcWtxcDJHdDFCQUFBQU1BTnJpWG9rZlhxU3ZIWXJqcktuVXlWWEF4OVNMYmNjTE9jV0xxTVJCM0lwY3hUcCtUZ3A3TWw3b3F1Y3VpMXQzSjM1dm5mQWdLazNIMkRKREEwVkhjQUFBQUFjSU1yUmVMK2xuWWdVZUk2ZDVNTTY4OXpaaVVOb1RWclNORjJGMHVSQzVyWTdhQVNKZlNEUUNHWGxTbnArdy9JcVUxeGtyUmtxWno0ZGJGa1dIRmVGTEhlWTlYZmVrMENBbDI3ZndjQUFBREE0bXFDcmh6NVlZRzlGMWJTejJGR0x6dWN6UXo4UHdmZXlvRWxpa3V0T2JNbHJISWwzUU1BQUFEQUxhNG42Q3FKMkRQcGFVbDgrWFhkQWNBTEFzSkNKZWJWRjZWNHV6YTZCd0FBQUlDYjNGL0RHaEFnRlI0Y0lpV3Vvd0FWNEJsQmdWSmg5RWlTY3dBQUFLQUFGY2dtVTNVbWV1VnhZNlRvcFIxMEQ0QUNFeGdvNVI0WUxHWDY5TklkQUFBQUFBcUMrMHZjVDVPVm1pbzdIeHNyUno3NlJQY0FjSk5hMWw1eHpDaUo2dDFUOXdBQUFBQW9LQVdhb051c2I1LzQzZ2V5YjhJVXlVeE8xcDBBVEF1SnFTeVZwMHlVb3MwdTBqMEFBQUFBQ2xMQkoramFxZTNiWmVlREkrVGs4aFZXMHE0N0FUZ3VJRFJVU2x6YlJhSWZlMFNDaWhiVnZRQUFBQUFLbW1jU2RDVXJQVjJPZlArRDdKczhUZEoyeE51ejZ3Q2NFUkFTTEJGTkd0dEwyaVByMXJFNk9LWVFBQUFBOEJKUEplaC95MHhKa2VPL0xwYkVOOTZXazM4c3N4TjNBSGxnSmVHQlJTS2wyR1dkcE15dE4wbGsvZnAyVVRnQUFBQUEzdVBKQlAxMHFmdjN5L0ZGUDBuU2I3L0x5WTJiSkczTE5zbEtTOU9QQXZpM0FDc2hENnRWVXlJYm55OUYyN2FSb3ExYVNGQ1JJdnBSQUFBQUFGN2wrUVQ5SDZ4L3FwcE5UenQ4UkRKT0hKZjBnNGNrS3pOVFB3Z1VYb0hoWVJKVXZJUUVseXdwd1NXS1N3Q3o1QUFBQUlEUDhhMEVIUUFBQUFBQVA4VTBHd0FBQUFBQUhrQ0NEZ0FBQUFDQUI1Q2dBd0FBQUFEZ0FTVG9BQUFBQUFCNEFBazZBQUFBQUFBZVFJSU9BQUFBQUlBSGtLQURBQUFBQU9BQkpPZ0FBQUFBQUhnQUNUb0FBQUFBQUI1QWdnNEFBQUFBZ0FlUW9BTUFBQUFBNEFFazZBQUFBQUFBZUFBSk9nQUFBQUFBSGtDQ0RnQUFBQUNBQjVDZ0F3QUFBQURnQVNUb0FBQUFBQUI0QUFrNkFBQUFBQUFGVHVUL0FFaTRQaHNXRHBDaEFBQUFBRWxGVGtTdVFtQ0MifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMC0xMi0yMSIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiVHJ1c3RLZXkgU29sdXRpb25zIFQxMjAgVTJGIEF1dGhlbnRpY2F0b3IiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlUyRjExMDAyMDIwMDgxNDAwMiIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4zLjciLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMC4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIwLTEyLTIxIn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMC0xMi0yMSJ9LHsiYWFndWlkIjoiMDE5NjE0YTMtMjcwMy03ZTM1LWE0NTMtMjg1ZmQwNmM1ZDI0IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiIwMTk2MTRhMy0yNzAzLTdlMzUtYTQ1My0yODVmZDA2YzVkMjQiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiQVRMS2V5IEF1dGhlbnRpY2F0b3IifSwiZGVzY3JpcHRpb24iOiJBVExLZXkgQXV0aGVudGljYXRvciIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX0seyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3IiwiZWQyNTUxOV9lZGRzYV9zaGE1MTJfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQm5UQ0NBVVNnQXdJQkFnSVVlQ3ROTndUaStVbUxnbnVTMDBEQ2p4WjBhRlF3Q2dZSUtvWkl6ajBFQXdJd1BURWFNQmdHQTFVRUF3d1JRWFJzWVc1amRXSmxJRVpKUkU4Z1EwRXhFakFRQmdOVkJBb01DVUYwYkdGdVkzVmlaVEVMTUFrR0ExVUVCaE1DVkZjd0lCY05NalV3TmpFNU1UVXhPVEl6V2hnUE1qRXlOREExTWpjeE5URTVNak5hTUQweEdqQVlCZ05WQkFNTUVVRjBiR0Z1WTNWaVpTQkdTVVJQSUVOQk1SSXdFQVlEVlFRS0RBbEJkR3hoYm1OMVltVXhDekFKQmdOVkJBWVRBbFJYTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFRVJLejMvelBuOVBuN3paR1B5YWNTYmpZMENBTGRQSFBIRUQydzNXYyttVStLN3BvWVd6dmp1STlNM1B5YTlpSnJKMDBsdERBMC9WWlcyOGxyYSt3NGFNZ01CNHdEd1lEVlIwVEJBZ3dCZ0VCL3dJQkFEQUxCZ05WSFE4RUJBTUNBUVl3Q2dZSUtvWkl6ajBFQXdJRFJ3QXdSQUlnTFp2R1pHbGVweGlGQmJVOFdka25YdWNsb1c2c0hObzBZS0RNQzdjUXVHNENJRC9xN2FMV2twcnRIeVpKRWFzdmUxUGs3OTZRYTFHb2hYT1hIWE1EQ1JYdSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFTMEFBQUV0Q0FJQUFBRFNnYUc1QUFBUlRrbEVRVlI0bk8zZFQ0emM1bmtHOEVkckM1QmNwNXkxaThLMUR1UmFBdG9nQVdhQXFLZGFIUzZDNk5DRHREa1VhazlEQVRyWXA2VUM5RkJkbG5zcEdxQ0FLZVJRdEdrd25Gc0ZIelJ5VVFSUVV5ekg4akd1dUVDQUJrWGs1Y1pRcWhoUVp3WW9aS2RyYVhxZ3JPemYyZmxEOG4xSlByK2JWeGI1YWJqUDh1UDc4dnYyeEdnMEFoR0pXcEFlQUJFeGgwUUtNSWRFOHBoRElubk1JWkU4NXBCSUhuTklKSTg1SkpMSEhCTEpZdzZKNURHSFJQS1lReUo1ekNHUlBPYVFTQjV6U0NTUE9TU1N4eHdTeVdNT2llUXhoMFR5bUVNaWVjd2hrVHpta0VnZWMwZ2tqemtra3NjY0VzbGpEb25rTVlkRThwaERJbm5NSVpFODVwQklIbk5JSkk4NUpKTEhIQkxKWXc2SjVER0hSUEplbGg0QVRTY013ekFNNHppTzR4aEFGRVhENGRBMFRjdXlBRFIya1IwblRlWEVhRFNTSGdNZFl6QVlkTHZkYnJkNzU4NmRDZitLWVJnckt5dU80OWkybmVYUUtCM01vV3B4SFB1K0h3VEJjRGljN1FpbWFYcWU1emhPcXVPaWxER0hTZzBHQTkvMzE5ZlhVemthMDZnY2M2aFJFQVN1Njg1OER6eEtzOW4wUEk4elZZV1lRMTNDTVBROHI5ZnJaWGVLVnF2bCszNnRWc3Z1RkRRdDVsQ0x3V0RndW02bjA4bmhYSVpodUs3cmVWNE81NkpKTUljcWVKN24rMzdxRTlIeFROTU1nb0RUVkEyWVEyRmhHRHFPczcyOUxUV0Fack1aQkVIU2ZpUXBmSjlHVEJ6SHRtMHZMeThMaGhCQXI5ZGJXbHJ5UEc4d0dBZ09vK0o0UHhTUWJrOGlMWVpoK0w3UDNvWUk1akJ2R2ZVazBzTGVoZ2ptTUQ4NTlDVFN3dDVHenBqRFBPVFprMGdMZXh0NVlnNHpKOUtUU0F0N0cvbGdEak1rM3BOSUMzc2JXV1BmSWhOS2VoSnBZVzhqYTd3ZnBreG5UeUl0N0cxa1pVVHBhYmZiaG1GSVg5TE1OWnZOalkwTjZRKzdWSmpEZEd4c2JEU2JUZW1BNUtyVmF2WDdmZWtQdmlTWXczbjErLzFXcXlVZENobUdZYXl0clVsZmdUTGc4K0ZjQ3QyVFNBdDdHL05qRG1kVW1wNUVXdGpibUFmN0ZsTXJXVThpTGV4dHpFVjZZbHdrL1g1L2JXMU4rb3BwWnhoR3U5Mld2bFlGd3h4T3FpSTlpYlN3dHpFVjV2QjRGZXhKcElXOWpRbXhUak9PNm5VU2l4Yk8ybmpOZXY2ZnY0cndJTVRuNnA3TnVHNWpFc3poa2ZUMkpONXM0S0tIYjF6ZS8vVXZocmpuNDU2dk1JM3NiWXpISEI1Q2IwOWkwY0pGRCtmSHZqYnd4UkIzUGR6ejh4clRGTmpiT0FwenVFY2N4NDdqYUZ3eWY3cUdDeTR1dURnMVdhMm92NDBQWFB5c20vR3dackcydHVhNkxoZjc3OFljUHFkNm5jUjVCeGM5TEpwVC84VlBlcmpyNFVHWS9wRG13M1ViK3pDSGdPYTltODdhdU9UanpmcGNCL2xwQjNjOTlPTjBocFFlN2tuMVF0VnpxSGZ2cGtVTGZ4SGdyZlQ2SmYrMnJyT0V3ejJwVU9VYzZ1MUpuSzdoa245TU1XWTJXa3M0N0cxVU5JZEtleExURm1ObW83V0VVK1hlUnVWeXFMY25NWE14WmpaYVN6alY3RzFVS0llcWV4THZoUE1XWTJaejd5WStjQVhPZTV5cTlUWXFrVVBWUFFrQTc0WnAxbU9tZGVzcWZocUluZjFvbGVwdGxILzlZVExKMFJ2Q1JVc3loQUF1ZXBKblA5cHdPTHg2OWFwdDIyRVlTbzhsYzJYT1lSaUd0bTFmdlhwVlhUMW10eGN2YWt2SjdZbDBKcjFlYjNsNTJYR2NjaTh2TG1jT0I0T0I0empMeThzYW53WnBlcDFPeDdLc0VqYzJTcGhEei9Nc3k5TFlHS1E1RElmRDlmVjF5N0pLT1UwdFZRN0RNRXdlQlZWUFJHa08yOXZieTh2THRtM0hjU3c5bGpTVkpJZmN1NmxTeXJjblZlRnpPQmdNUE05YldscmlvMkRWSk5QVUlBaWtCNUtDWXVkUWUwK0NNbGFhM2taUmMxaU1uZ1Rsb2dTOWplTGxrRDBKT2xTaGV4c0Z5Nkh2Kyt4SjBGR0syOXNvVEE0SGc0RnQyOWV2WCtkRWxNWkxlaHZGdWpFV0k0ZFJGRm1XeFlrb1RXNTlmZDIyN2FJOE1SWWdoMUVVMmJiTjJ5Qk5xOWZyRlNXS0wwc1A0Qmk2UXBoc0g1cThtZjB3d2oxZjRlWkxZczdhdU9EaWRBMEFIb1JLOXNMWjNOeE11aHJLbHpLcVhuK29LSVNIN2huenhSQi9iK05YMFZ4SFBtdmpuWTI1ampDL3Z6b3g3eEhPTzdqUzN2TVZUWHZoMU92MUtKcnZNbVZNNzd3MDZVL0loL0IwRFJjOTNJZ1AyYmpwbEFGSDNTNHZBaGF0L1NFRWNNckFwZmR3SThZM1Z5VEd0TWZtNXFieTljUjZjK2k2N3VibXB2QWd6anU0SHVFN2EwZHUzTFJvNHF5ZDY1QVUrbVBueUQ5YU5ORzZqWGREOFUrcDArbDB1M3AvYUNyTllSaUd3azNDc3phdVI3alNWcjVNVm9Wak0vWldFKzlzNEVxQVJTdUg0UnhGOHdzM1NuTW9PWXQ0czRGM1E3eXpJYk54VTRtZGIrSEdGaTU2ejJzNXVSc09oMnFiaWhwekdBU0J6UEtsUlF0WEFseS9MN3hoVExsOVp3MDNZbHlRMlNUdTVzMmJPaGN1YXN5aHdBK3RwQmp6dlNpVFhiUnBIOUVTanM1Ym9yb2NDdHdNenp1NEVZOHJ4bEFXaEVvNG5VNUg0Vk9pdWh6bVd0UTZhK05HakN0dEpsQk1Vc0p4dW5tV2NCUXVIZGFWdzhGZ2NPZk9uVHpPOUtJWXczS29CdCs0akJ0YnVPVG5VOEpSMk1EUWxjTThQaUFXWTlTNnNJb2JjUTc3R3ZkNlBXMVRVMTA1ekhiWkdJc3grcDB5bmhkVXp6dVpua2ZiQWtWZE9jendKVUFXWXdwazBjU1ZkcVlsSEcydm0rcktZU1l2c2kxYXo5K01ZUUtMSlNuaFhNcmtUWEhtOEVpWlRObmZiT0I3RWQrTUtiQUxxM2czVFAyb2ZENDhVaVkvb3E0RXZBMFczbHZOMU8rS3ZCL202TTlEUEszamlmUXdhRTVENE13cXpyeWQ1aUhGMTlQdFZlb2N2dlluZUFKOENqd0NkcVFIUXpONEFzUmZYYjdtRDZSSGt5SHQrMkxNN28rdTRPbFgvN29oTUFSZUIxNHIrVStlOHRnQkhtSFBYT1pyM3hRYlRQYkttOFBmK1lQOVgza005SUhmQXhZbHhrTVRlZ1o4Qmh5Y05qNHQ3L2RxbVhQNDFtSHY4aWZYdUEvOFB2QnE3a09pOFo0Qi93UDBnV2ZTSThsZGVYTTR4Zzd3RUhnRmVCMTRSWG93bEJnQ2o2djdHRi9KSENhZUFFOEFBM2dkT0NrOW1DcDdBbndHL0VaNkdLSXFuTU1FU3ppQ0RoWmpxcXJ5T1V5d2hKT3pvNG94VmNVY2ZvVWxuSHhVdUJnekJuTzRGMHM0bWFwMk1XWU01dkF3TE9Ha2pzV1lzWmpEbzdHRWt3b1dZeWJBSEI2SEpaeVpzUmd6TWVad0FpemhUSXZGbUNreGh4TmpDV2RDTE1aTWp6bWNFa3M0WTdBWU15dm1jQ2E3U3pnRUZtUG14VHJnSEI0REQ0Qlh6MG1QUTlwVEM1OHdoSE5oRHVmekRIaTU4cVdiRVhjQW1oZHpTQ1NQT1NTU3h4d1N5V01PaWVReGgwVHltRU1pZWN3aGtUem1rRWdlYzBna2p6a2trc2NjU2p2MWh2Q2JtVnlucXdEWFcwZzc5UVkrRlZwSXhXVkthakNIT3VTOEZ3NlhLU25ESEdxU3cxNDQzRE5HSmVaUW1lejJ3dUdlTVlveGh5cWx2aGNPOTR6UmpUbFVMSlc5Y0ZpTUtRTG1VTDJaU3pnc3hoUUhjMWdRVTVWd1dJd3BHdWF3T0NZcDRiQVlVMHpNWWRHOEtPSDhMdkMxWFRQVkhlQi9nVDZMTVlYRUhCWlRVc0o1Qkp3RVRnSmY4QVpZYk14aHdlM3dCbGdHZk0rYlNCNXpTQ1NQT1NTU3h4d1N5V01PaWVReGgwVHltRU1pZWN3aGtUem1rRWdlYzBna2p6a2trc2NjRXNsakRvbmtNWWRFOHBoRElubk1JWkU4NXBCSUhuTklKSTg1SkpMSEhCTEpZdzZKNURHSFJQS1lReUo1ekNHUlBPYVFTQjV6U0NTUE9TU1N4eHdTeVdNT2llUXhoMFR5bUVNaWVjd2hrVHpta0VnZWMwZ2tqemtra3NjY0VzbGpEb25rTVlkRThwaERJbm5NSVpFODVwQklIbk5JSksrOE9SeitRbm9FUkpNcWJ3NGYvMHg2QkVTVEttOE9QL2FsUjBDcEdqMlNIa0dHeXB0REFEc1BwRWRBNmZuMFg2VkhrS0ZTNS9Bbmp2UUlLQ1VMbitQdU5lbEJaRWhSRG11MVdzcEhmUGdSZnZtamxJOUorVnNZNGNPcjZSNnkyV3ltZThBNUtjcGhvOUZJLzZCM3J6R0t4Yll3d29kL2laL2ZraDVIdGhUbEVJQnBtdWtmOU80MTNMK09oYy9UUHpKbGJlY0JiaTFsRWNKTWZ1alBRVmNPcy9wMFB2YnhqNi9nbHovQ1MxOW1jbnhLM1lrQjdsOUg1eHlHMjFrY25qa2N4N2J0REk5Kzl4cisrUnlHUFN5TU1qd0x6ZW1sTC9GZmY0c2ZMbWJhZWRLV3c1ZWxCN0JIdGprRU1OekcrellNRXl2L2pwTm5zejBYVFd0aGhFZDM4TUYzc3o2UGFacmFjcWpyZnRob05ESjVSTnhudUkzT09mejRBazRNTWo4WFRXall3NjJsSEVJSVlHVmxKWWV6VEVWWERnRTRqcFBUbVI1K2hCOHVzb1FqYitjQmZud0I3OXNaUFFvZWxOLzMyTVFxbk1NRVN6aUNYaFJqSG42VTJ6bnI5YnEyU1NrVTV0Q3lyRmFybGZkWldjTEpXUzdGbUVPNXJwdnpHU2VoTG9jQVBNOFRPR3RTd3JtMXhMZFNzN1V3d21kZC9NTkpmUGpYK1orOFhxOHJuSlJDWnc0dHkxcGRYWlU1TjBzNG1jcXhHSE1vMzFlNkNrZGpEZ0Y0bnBkSDRmUW9MT0ZNNWY4ZUgvLy81RjZNT1doMWRUWHp4dGlzbE9hd1Zxc0ZRU0E4aUFsTE9MKzRuZGVBdFBydmNOeWZTaFJqRGpKTlUrWjVaekpLY3dqQXR1MzMzbnRQZWhUSGxYQ0dQY0VmOEZyY3ZYYjR4RUd1R0xPUFlSamRiamY5QlQzcDBadERBSzdyQ3RST0R6cTBoTE13d3JDSDkyMnhVYWx5Nit2N1B4eTVZc3hCdnU4cjdGWHNwdXU5dG9PUzJXbW4wNUVleUZjbEhNUEV1ZThDM0hkanIrVERPZk0yM2pnUDZQcHcydTIyemhycGJ0cHpDRlZSQkREY1Z2Vk5wc3ZEajJRZkF2Y3hETVAzZmYwaGhQSjU2UXRCRUxUYmJlbFJVSkdZcGhtR1lTRkNpS0xrRUlEak9QZnYzNi9YNjlJRG9RSzRmUGx5RkVYS253bDNLMHdPQVRRYWpTaUsxdGJXRE1PUUhnc3BaWnJtN2R1M2xWZEhEeXBTRGhPZTUwVlJwS0tPU3BvWWhyRzJ0aGJIc2NKbFRjY3FYZzRCV0pZVkJNSEd4Z2FucVpSb3RWcFJGR251MUk5WHlCd21iTnVPb3FqZGJuT2FXbVgxZW4xall5TUlBc3V5cE1jeXV3TG5NT0U0VGh6SFl1K0ZreHpETU5ydGRoUkZhdDhhblZ6aGN3aWdWcXY1dnIrMXRhVnRjMWpLenVycWFoekhSV2xMSEtzTU9VeFlsaFdHNGUzYnR5VVhhbEQybXMzbTF0YVc3L3ZGcW9pT1Y1NGNKbFpXVnVJNFptK2psSktlUkJpR2hYNFVQRlRaY3BoZ2I2TmtDdDJUbUVRNWN3ajJOaWFuZmt1ZW92Y2tKbEhhSENZSzBOdjQyQmRPd204K2tUejdXT1hvU1V5aTVEbE1hTzl0L1B6N1lxZGVHS0g3YmJHekg2MU1QWWxKbkJpTnRFOUxVcFJVdW51OW52UkFEdmlXaTIvOURaNmR6dldrT3cvUS9iYkMvUVJXVjFjOXp5dFRPZlJZMWNwaG90dnR1cTY3dmEzdSt3OFgvd2xMTFR6TmZsSG9pUUgrWTEzaFFzcG1zMW1GV2VoQlZjeGh3dk04My9lSHc2SDBRUFl5VEZ6c1lQRlA4ZXhFSnNkLzZVdjg1OThwMmE1aU45TTBmZDh2YXpuMFdOWE5JWUE0amozUDA3TFNmN2NzZmlOVlhyOU5hVnFHWWJpdVcrNXk2TEVxbmNORUdJYXU2MjV1YmtvUDVJQXpiK1BQL2dXak5CNlRoajNjYlNsOEZHeTFXcDduVlhBaXVnOXorRndRQks3cnFwdW1ZdTRTenM0RC9NUlJ0VzFNb2w2dis3NWZrWExvc1pqRDN4b01CcDduM2J4NVUzb2doNW1oaEtPMUdGT2c3WnR5d3h6dXA3ZTNNWGtKUjJzeEJwWHNTVXlDT1R5YzN0N0crQktPMW1JTUt0eVRtQVJ6T0k3UzNnYUFNMitqK1FPOCtvZlBueHNYUmhnTjhlc1FQVmRoTWFiaVBZbUpqR2lzcmEwdHJ0dVlXYkpPUXZvYUZnQnpPQkd1MjVoQnE5WGEydHFTdm5URndCeE9RZlc2RFUyU2RSTFNsNnRJbU1QcDlQdDl2ZXMyRkVqV1NVaGZwZUpoRG1mQlBha090YnE2MnUvM3BTOU9JYkZlT2p1OXZZM2NzU2N4cDBxc0E4NEk5NlJDcWZkdXlwWDBEYmtNcXRuYllFOGlSY3hoYWlyVjIyQlBJbDE4UGt5WjNuVWJLZUU2aVN6dytUQmwydmVrbWtQVjltN0tFKytIV2RHN2JtTW1YQ2VSS2VZd1d5WG9iYkFua1FQT1M3TlY2TjRHZXhMNUVhNFRWVWF4ZWh2c1NlU004OUpjNmQyVGFoZnUzWlEvNWxDQTJ0NEdleEpTK0h3b1FHRnZnejBKV2J3ZlNsTFMyMkJQUWh4ektFK3d0OEdlaEJLY2w4b1Q2VzJ3SjZFSzc0ZUs1UFA3TnZqN0pCUmlEdFhKdExmQm5vUk96S0ZTcWZjMjJKUFFqTStIU2lXOWpWUWVHazNUWkU5Q09kNFB0UnNNQmtFUUJFRXd3MHoxOHVYTGp1TndJMjM5bU1QQ2lPTzQyKzJHWVJoRjBaZ21SNzFlYnpRYXRtMnZyS3l3SlZnVXpHRlJoV0c0N3l1MVdxM1JhRWlNaGViRkhCTEpZNTJHU0I1elNDU1BPU1NTeHh3U3lXTU9pZVF4aDBUeW1FTWllY3doa1R6bWtFZ2VjMGdranpra2tzY2NFc2xqRG9ua01ZZEU4cGhESW5uTUlaRTg1cEJJSG5OSUpJODVKSkxISEJMSll3Nko1REdIUlBLWVF5SjV6Q0dSUE9hUVNCNXpTQ1NQT1NTU3h4d1N5V01PaWVReGgwVHltRU1pZWN3aGtUem1rRWdlYzBnazcvOEJzT2k0V2V2Qzk1Z0FBQUFBU1VWT1JLNUNZSUk9IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMV9QUkUiLCJGSURPXzJfMSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiMDE5NjE0YTMyNzAzN2UzNWE0NTMyODVmZDA2YzVkMjQiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsImxhcmdlQmxvYnMiOmZhbHNlLCJjcmVkTWdtdCI6ZmFsc2UsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjpmYWxzZSwibWFrZUNyZWRVdk5vdFJxZCI6dHJ1ZX0sIm1heE1zZ1NpemUiOjMwNzIsInBpblV2QXV0aFByb3RvY29scyI6WzFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjEwLCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjI1NSwidHJhbnNwb3J0cyI6WyJ1c2IiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotOH1dLCJmaXJtd2FyZVZlcnNpb24iOjF9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wOC0yOCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IkFUTEtleSIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjUwODI4MDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25Qcm9maWxlcyI6WyJjb25zdW1lciJdLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTA4LTI4IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjF9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjYtMDItMTEifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyIyODA2ZGY2YzYwYjE2NTZhNzhmOTdhMjhlMTY4ZTVlYzhkMjkzN2I0IiwiMjgwNmRmNmM2MGIxNjU2YTc4Zjk3YTI4ZTE2OGU1ZWM4ZDI5MzdiNCJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyIyODA2ZGY2YzYwYjE2NTZhNzhmOTdhMjhlMTY4ZTVlYzhkMjkzN2I0IiwiMjgwNmRmNmM2MGIxNjU2YTc4Zjk3YTI4ZTE2OGU1ZWM4ZDI5MzdiNCJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiUlNBIERTMTAwIn0sImRlc2NyaXB0aW9uIjoiUlNBIERTMTAwIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6Mn1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDTERDQ0FjK2dBd0lCQWdJRVpQL2dOekFNQmdncWhrak9QUVFEQWdVQU1IY3hDekFKQmdOVkJBWVRBbFZUTVFzd0NRWURWUVFJRXdKTlFURVFNQTRHQTFVRUJ4TUhRbVZrWm05eVpERVpNQmNHQTFVRUNoTVFVbE5CSUZObFkzVnlhWFI1SUV4TVF6RVRNQkVHQTFVRUN4TUtUM0JsY21GMGFXOXVjekVaTUJjR0ExVUVBeE1RVWxOQklFWkpSRThnUTBFZ1VtOXZkREFnRncweU1qQTFNVEV3TURFM01UZGFHQTh5TURVeU1EVXhNREF3TVRjeE4xb3dkekVMTUFrR0ExVUVCaE1DVlZNeEN6QUpCZ05WQkFnVEFrMUJNUkF3RGdZRFZRUUhFd2RDWldSbWIzSmtNUmt3RndZRFZRUUtFeEJTVTBFZ1UyVmpkWEpwZEhrZ1RFeERNUk13RVFZRFZRUUxFd3BQY0dWeVlYUnBiMjV6TVJrd0Z3WURWUVFERXhCU1UwRWdSa2xFVHlCRFFTQlNiMjkwTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFTGYyaDY4R3pTRVdFb3AyMlJMdktDMXdOQXRVSXRtdjRUZjJPeElwQjFYUWU5SlAyblJQQ21renpmUVVZbk9rOUo5UGd2akVpNjRidVVLUHJxZDAzTWFORk1FTXdFZ1lEVlIwVEFRSC9CQWd3QmdFQi93SUJBREFPQmdOVkhROEJBZjhFQkFNQ0FRWXdIUVlEVlIwT0JCWUVGTGhSbzR1RTJtbkovVnRHZkIrT04wckFRelFaTUF3R0NDcUdTTTQ5QkFNQ0JRQURTUUF3UmdJaEFMNzE5SzBsUzZqZG9sbGlJOGg0bHlJOHRnRkZqdjROUGcxZGRJRitiSG1TQWlFQTB0aTFhUDBTY3BybUJvTGFHUHhkdVRoZjdNd21pUWJUbTI3TmdhaFJ2S2c9Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUhzQUFBQXZDQVlBQUFERDJMV2VBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBQ3hNQUFBc1RBUUNhbkJnQUFBQVRkRVZZZEZOdlpuUjNZWEpsQUVkSlRWQWdNaTQ0TGpneGdjdGlBQUFjSDBsRVFWUjRYc1ZjaVh0V3hibjNqK210eXBvUUVySVpaUkZCRkt1NFZHMnRWV24xNmxPZmVpdFliZFZiYmF0ZHJMYnV5dUpHclVvcmRhR1Y3QnVCRVBZSUNHUWhnWkN3RTdKL3lYdmYzKytkbVhPK3NPU0xpYjN2ay9sbXpweVpkOTU5bG5OT0xwSWhFU1JrQVpJdXZoNE1EU1VqNFpYK0RMckIvUFdvSU43UGx4V0kwNVdTQUcxQWg3K3RFSzRIWTVVQWR4bHFoOTMrMnFCNGdNclFPVW85YnArVGxvSEFoLzJDRjAyODhMbURZWmVwd2tYRE93MjVJWWNyNjJ1RG9pRW1aWWg1RXRvQmwxOElCclNMS1RIZVA1UmRHcFJFVkhjZWFYaVdnbEJkUmNTcjR4M0pHOFVZd2VNanVJTHg0NU1DNngzTlVMeVhsWUxQNC93WnViSCtLVUtTc3EwOENnUWNPSTdCd0ZkNWZGNjQzcHVpSGltTWhjYXVtZS9IWEgraTZ4Z2VWbUpFU3dUWEVCbUwrSEVDQmYyVzQ0YTJaNjZnT2N4czdCRERxVUNhM0ZnSjFzUm9EeENyU3lMQlM5SW9PNWZzTHdRV3hoMXk5dFhra2FTS0xMUkQ1aFJxNEluVGZNaFlJMzZNaDNieHB1Y0IxNHZBNXVpbTQwVmRUV2k0TmpxOE1CV1l4NVJPUU5uVGhTWXhXaHlOZ2YrVUlzK0ZBZmpqQ2c3Z0NHQVdMM05JT0Fob2llZ01vQlhFbWFKdTR1QTgyeE1Ec0lINlRoeVhydjE3cGJ0aDM0aXBwM0UvYzdUdmFtcVUwdzM3TlRWS29xTkRCb0hhS3lFQXl1ZGc1THlnN1dOR2xNQzFLaVl3N0xLQjluWnArK3h6MmZ2Qzg3Snp5YzlreTMzM1NPMmlHNlRtcGh0azR4MjN5L2FmM2kvMVQvNVNtbGN1bDhQbFpkSjkrQ0Q3ZW9NeXhXQTBYeE9uK1d1Q0lqUTZiVTUycEJyTlBrSERtdHVvSnB2b0hucEZkTENLRmpGNjJpNUNIMjlGU0o3ZHBuZVdTMUhheFZLU20zbkJWTXc4STByWjA2UTBKMFBLY3Fjekw4L09sTXI1czJUM2tvZmw0S2RyWldDd0grTTZva2NHM3k1U2lBR3ZjZEhkSXkwZnI2WkNTMmVrazRiU3ZPbFNuS04wYUE0YWpMWk1MV2RLV2I3U2pIdWdVV210WGpCWDl2em1WM0o4MDBaRkZ2R2ZNb0VqZ2lseVlHQkFaYnFTNDFYZnZFRFQxYkpoMFhXeWNkRzFVbjNOZkduK2FKVU9hMlA3b1dIVUtCOHAvVUwydmZpU05DNS9VdzFIT1hlR1A5cklFK1pzR0YvY3NwcFdycFN5dE1rVXlvVlN1VXQySFRPQXZDd3B5cG51aEo4bEpkT25Tc20wUzZXOElGK2FYbjVKK2pyYU9OcklZQlljd2hvSTFiK0IvaTdwK09JTHFWcHdoUlJObTB6RmxlVm1CUm80SmxKdU91a3Jtd0ZhakRZcVhhOHJjcktvK09LTUtWSTQ3UktwbUR0SG1sYThKZ09uVGxMSVhqWmpCbFZRejZHanNuN2hsVkthbVNabFdXcVVrSWZTWEpLVEpzV1pVMlhEell1azkvQmhiV3ljV3RBeTNsdFd2Q24xdjFnaWU1Ly9uUnlyWHM4NjNoNGxnUmNaUWtNYUlWQmxyM3BiaXFkZVRBLzFpWjR5TEVGWXdhdlBrU0RRb2x4bGtKNnV3czVXSnRNbXlNWWJGa2w3OGI4dzJBVUI1RVFSM09qczdUd3BlNTU5UmtvekpxZzNLNzR3WGpvOUY0WVg2ckpCTzVTZTNBYUtMOG1iSWFWNlhaS1RiYmtLdityS09YSmk2MmFPRmZuWTJLSDFnL2VsWk9MRlVweW5OS2lDSVk4U2xRMk5VMmtzblBwdE9mejV2NjJ4RzlaUEs0YytlbDlhM25tSFN1OXBQOFQ3L3Q1b1FKVjliamp3OWtvcFRwOUE0VUJJQ01jUUVNTmdYbm9RS0JRZUNUS3E4L1h3S3VSa1RvVlpucU45Z1RNelE2cG01VXJMWDFlUjhJanl5UGdJckFkai9iYU9VcFBIdkZ1VXBsRUMwVVJ4VldTREhsV3lVMXhSdHRablRKSkNwUitwYU1vbEtzeEx5QSs4R0o3azZTSlBhZ3p3ZU9SNy8vZ3N4eHMxT0FVRWlQRXowTmV2WGoyWGhtNUdaVkVGTXF4UVdrRkgwWXdwNmdEWFMyS3cxM1ZWWS9PODkvZEk1NDR2cGErdGphSGR4cko3bzRFUmxRMGxNd3ptNlR5WHJ4WTVmYktzbTN5cEZFK0dBTDhkQkJsUFVBUUZPL1ZTZW5FaGhLL0txS0IzbTRLS0ViNDBLcFRsejVDT3dtSTNxa0tnMytZNjR6ZmFIcld0ZXBmS1FvaTJhT0dFcGRFRGhyUXUvZHRTZWZXVnN1c0pYWWl0V0NrSFAvdEVqaForSVljKytWaWEzMW9odTU1NVdqYmVmWWZTTUlPMEF4ZVVEQjdMWjEvR0VHNDBwTGp4Y28wc2M5N0cvaWdiTTIxcjF1aFVNMUhIbWNIcHBqeFBEU3M3TGNpaVBBdU9wRHhNbnlCSDFxMWpIeGcza0NHa200SnRVVWFxTUlqTFJnTWpLdHNyaG9TcFluWS8rWVNjV0Y4akhlWGxjcXlzWEk2VUY1K1ZqbGFVU0VkWmtiU3VXMHRQcVZMaHcwajh2QW1jREswT2I5WE1mQm5vUHUxNEFHTkdReEFlZjVUUi9sNnBtRk9naHFlR29rWkltdURSTHErY1Z5RHRuLzlUaGpwN1pGQzlhU2lodUdBb3NCTE5Fd2xkd2ZmM3lVRFBHUms0YzF4T3JxK1ZMNTk2UWlvS2NxUTRiWkljZU85dEc5OURvT1A4QU54b1JrcDlleFlqUG1vV3ppZlBsQ1dtRDFVc2pVdU5FK3NhaTRJcUV6V0VtdXNYV0NmUzRXaHhHZEFoT2FrRS9LbkN5TXFHSUpVWUVBSmxONjFZeHZ1RGFubEpnbkZBNWlIY1lkQ3E0UnFlQTZhNGVGS0dHZHJKZktaODlleXZBKzJXeHozTEJIZndINnVsOURKTUk2WmNScHg4bExPazhxcVowdFZ4Mk5Ga1hoRHdjWnZtRm5nT0Y1WFB1M281MktmOHZzMHlXckFmV1R1YnYzTUIyK1BIRFJqbi8vRGFUeWhEVGhWcTNPQzc1REtOUW1xc1VIUkZMbllHbUxjMVY5NlFIeW91am1nRHJnaGRORWI0U1IxU21MUFZBdjNLdFNCVEdwMnlVeFVFQUFMR0d2TkVYUzBWenFsQlF4a1dLSmdlU3ZKeXBIYkJQQm5zNlhFZERMY0p6U2xJLytvZmU5UU1UK21waEVkQVNCQ2VSbzBqR3E3SnZDYTBweHhzMHJONkQ3N3MydUVQVzVoSVFYNDdZelNNRElhRGVQMTBnMnIrREVydDNiZlJHR0hnbUxZZ3gwSVlxUEpSUGtPbk1WVXVwMGcxQ016bGFMUDVqdTlaZHlKMnEzT1hyQkFaOG1nZ0pjK0dRSXRkdURudzFqSVZERnBRU2tsd0xvOG1rRUFVQnVYZzN6K1UwblNkOS8xcUZNcFcvSlZ6WmtySGh2S0FnNWxENTlGdVdueW5HWWUyOTNRaFlSRTIyT2NYTmxDY2VURkJLNG1LUHk0QmFBZ21UTjgyOGlJVnBoOTBCUEI3WVM5K2p1MjZIdEZwcm1vbW9sbEVLNmVkckF6WmV0ODlVbm50VmFac1RiZ0hMMGNxbTVVbkhjVTZkenRhQUhGNlFqbXFTZ2xHWHFDcFVIMUNLTnEvOGcwM2hoS0Jnazh4Q0VKanZSR0xIRGFhT04wcFpiT3hVTkg1V2tNNlFqam1yc3FaT2RLeTZqMjI4NzdsOFZoSUc1UU50eTJpbDJBcW9QRnhTbEJ2MElVZ2hlM0hvN0pkZndmMFlyVFNPdGE2dGxFTEFLNmpPaDhZTGdobk5YTDloL3BrNTJNUFU3bGNuemlGWWdyQzR2YjRsazNTOU5lVlVqaGxFbmMzWlRNMFN1Vk41U0lXYWVmRER5cW1pQS9nWklyeE5GcElMWXlyb2pudjVHWHpxQkZnWkZ3WVBHSDI2NVRlM1NOMTkveVFod3MybDltS3Vyd2dWL1l2ZjgxeDVGYWdMZ0VObExENS9zVlV0amMrZWplaWcyNnpPc3BLSW1Ib0h3d0cxd0g4QlJzNStqV25halFzZW9PeVptNWNsa2NBMThpTWlRWENzUzFicE9hNk9WUXlwaTNRQ3VNc3lwb21kWGQ5VC9wVkRvT25UMHJwbkZ4M3dLTjdmbmc5akZkRCtZYjVjK1g0eG8yR2pqOWVIZ1kyVEhTZENxUzJRSE1KMnlTdjdDVEFBZ2g1R0ZzTFdvRTZKSXJTcU9OS3VPN08yM1ZmT2NtWTB3VEZsUlNvSVMwejNMWTBjOGdjSHNEZTUzK3ZjelZDdjg1MzJpY0lVWEZVWFQxYnQwMm5neEY2cGR0RmxIa0RoQ3FqMnpaV2ROOHAyamNZRWF5OU5kZXlMdmdhWG54QkNuVmJaOG96YjRWWEYwNitXTm8vV2FPTjFad1QvZEw0MmhzOHZDck50b01kVzdSbXlMck1DZEx3M0I5VkdPQUkrRTJtRVUyT3hsSEFtSlZ0NCt2QUtxUmczUjRRNGtpUkkxU2g5K1J4S1NzdzcvUjRFY29aeHYvK2dmVkJjOWNld0tMK0hLK3JVYVBJc1pWcnJDL0NlbEYydWxUUHYxS09WbFpLUWczSzk0SHBlTCtOWUpqZ05JL2ErencxWVlZMktMaUx6dVptcWYzdVRUemN3UW9jWVJ6VEZsTFZyZGRKejBGN0FJUDV2Yk5wajFSZWVia1V6OERoa1BLa3ZHRHhXYVR6T3M3T3UvYnZOMHIwTHhpeSsyRStDaGk3WjBPL1FaZCt0bFVZZE1KUzVRMG9tU2dqd1h0aHlWQVM1MXdxVEJXbFc2Y3pYKzVFRCswS3BBYmVrRHhzL3ZGZFVwdzUwVHhCK3pJcVlPRkRoVS9WbFhtNmJQdkp2ZEwrcjAvbHpONEc2ZXR4RDE1Z2pCNlBNMEpjTWFIZVJ5ZldPOXI1a3dLd0QzTDFWcVg5OEQ4LzFyblkxanM4SGdWOVdGaG1wVW5qUzM4T1lrSWZHT2JlMy81YXlxWXJUNUN4ZWpiMzNscGVselpSRHJ6L3J0Sm43UTFNMk1sMXFjRTRoSEgvT2syeWdQeWNhNWNnTUNHSFB2K25icjF5cVdoL2dzU3dwYUc1OXZaYjJEWXdvUXJ4UlN2b0FtOXdRTHBhV3FUbTJua2FJbkhzYUh0VTRNQ1JhUkgyckJvMjhaQ2hPSE15UFdQWDQ0OUs2OG9WY3JSbW8vU2ZQT1hRbVRFWldvdEk4VElpUVJoN1JIREMxeEk4TmRIYkl4dHV2VW5Lc2pTRVUyNUtuOXRhVlMyWUt5YzNiN0cyNk9kNFBGcFJadDZ0U2daUFBwUkRSaHV1dXlZOG1PRllwTTdBNmxLSDhabXpGV3k3NHdtSXpuV1J1ZzYweXU1ZlB5R1Z1c2NHODVpL3dBeERNRmJYV1ZQazhDZi9RSWNZSXlaRWx0VUNBbU5hT0w1dGg2ei96dFZTTkgxS2JDdG1aODJXYlA4TmJ3ZHUxRlV2bUMyYnZuK3oxQzk5V05yWGZDejlSM0FBWS9pQ3h5UEROWVptRmVpL01BUTYwVTlsY0t5a2hITEREb09IUHpBK1ZTQVV1WDNwUTlwSU9VUmJKeHVrb2Q1K1JpTWVYRGtlakNlTkRJcXI3ZE9QYlFnbll4c0xOYU9EY1ZFMmppRlBiOTdLdmVIUjBqSU5vWjlJNjEvZmxhLys4RHVwdS8wMjdodXI4bldlanExS1dWWkZsVTlQazYzL3ZWaXhPS0VwV0JhUENpd1EvTGxhVDJ1VGJMLzNYaW5PUUlRd295blNITUtsa0hRN2c2UEpwRkRxUW4zVkZYbFNPbmUyN0hqb0FUbXh5YTE0Q2VZMVFSSHVjT2RDNEdsRStFYS9qYmZkelBtWGZHSnhSb1ZQazhvNWVZeHNmckNnT0k0ajBycG10VWE5Zk5LSU9kNFdkbW5FVlRWdmJtaUw3b0hlVUVnTnhrSFpJRFloaHo5Ynd3Y0wyRm9VWjAvbW84ZEN0VzRJR1E4QUdLTHl6YU9oSE82WDFaTHhNTC83dEliWFFMaE9hRnJHSmVaNll5OFN1dmNraGt4dGdTUFVxbXZta0RaN0dxZTQ4N081bmVGSm5TYUVSVDZLZFNFU1pRZ1RDNkxDck1sU3F3cnExSzFTSWhFTDZhUmhaR1VEY0hTTTloMjExWHdHQUJvNEJtVG1vdGltR3hkcEUxcy9HRGcrWEo0WTZKR2FXNjVYMm5QWmo4bEhCZDFhdHNGUVhGdW1yd0hqRnNZeEgrNTQrSDd1bjdIZzhwN3J3eEhQdzVWd0tsL25NeHdOUXNqZERRME9nNGVZZ0NrTXk1blJHN3pIRzZDTUJ4NnRINjJXdXNWM1NmWENhNlhvY3ZWa1hRemhzYUVYT3JkcTRFRnBZTzZuRWpVNlBIckUwN3BkVHp3bUNaNnZHOFRIT1Q5RTNyYmxSM2NISHNPWk4valh4V1RqcWhVT1lUTDkxSjhMeWMzdnJOTDI1aUErQ29KVzVEVTNMSFJUbk84ZmsxT0tNRDdLZHRSam9WRXhkNVlTaUJjS1hHak50VEJiTlFNNFZMQnFwUWpydTU5K1dycmFXcTNqbUFDUklBcS9YWHQyUy9ONzc4cXVKMzh1dFhmY0loVWFQZ3ZUSjNIUnhnVWMrRkJGOHkyYWZDakdMZlRVaXdvekx0V0Y0cTF5ZWsrOW9hWkE0OHFKQ3hoYWNrWE5UMnl0TTA5VW5PWFpXRDlra25jWWRlVzhLeVRSYmQ1UGZKcUhkWWlyQXd6MGRFdmxWYk81TUF2S2RrNERwYmV0WGVzVWJ0M1lkUlF3TG1HY1lVd0JnOWYvNm5FeTdRVnJJUTNQcm5XZnFYUGxyaGVlbFJOVjFYd0VPUjVBcjRoeGpXc0VmNFRGbnVaV1BvNDkrTGYzcFg3SlExSjVlYTZzbXphSisxOEw1eGJTc2NqRFF3a1lJL2JyT09IcWJtME5hSjNqS1poU1RGSGVvNjBPQ3o5RUwvQkxKYmxVT3UwUzJmdktpMnhyT3hRSE1acTVhRU9tOXc4c1h5YnJNdFU0c1RXRnpFR25PZ3JtOFcwYXVheWQyN3Q1emFjSVkxYzJpUVlUdGdMdk90UWkxYnFOcU1ySjVSektjS21lZytOQUVIMTYvejUwY0JCai9tdUNEWTlmQ0I5ZUU1T0FiUWw0QjlzWDBOYjAzZ28rRGkyYUhwM2c0Ym02aFV1VXAwaGg5aVRaLzVjL2N4dGxLalVnYm5jWmFuV01udm92cGZxNnEwSUk5NHFDSVdHQmxUaHpPaGdNc21TdnhyWGh4ZVZnVjZkVVhINFphZUxVcHpuZnBkTzhZdDVNT1JKN1FPSzZwd3pqTm1lYmhadnlZSjBSMDdZaXhpb1Q1UzAvdXBQdHlQeG9xUjBCQWpyaXhsNDUyWk1nVkFoNllLQlBHbDUvaGNiSCtWSHA4NjlMWVZ1SWh4TGxNL09rdDdYRmRmWmcrSUtZWGJiMytUOHlYUHY5TlBEUnlLZE5sRDIvLzYwMTR2ald3WFhqdGRram9xTVdjS0Yvb0sxSXB4UXNNamsxWUtyUnhTM28zZlg0STlhT01EcG5HUmRsZTE4S0ZxdXcvcnZYbTFVcW9aeDNRRENFbVovRFY0VFF6cmNkS3dSRFU0UWViNFRiVk1Qa2hhMFpRdXF4ZFlYMElpb0d4b25ueWJwVndwWU5DN1pXN1AxVnNMNGZrSGdlbWF2eDlEUTJ5c1lmM0VwRmtFZDZOM2hWbnRXcnU1dWJ0TFhTQmp5dUh5RGc5T0F1c2Zyb09YcFlLZ3QwZStqd3dBRDlDeDlWQytmSnFibzZaeGYvRDhvR2VDSGdwMThYVEdlMmI3WDN1RldBb2IvT08zaDRYM1ByRGRKNy9HaGdjRXd3REVjUUlySllFVC94NkdQejVLQTB2dm9pcHhzSWxRYzhqRWk2UjllRjVGZS9mWW9yZmZaeHVBaGFoZ2xoN3NUV3IwaFgvdWdQbzdiK3lxLzIzLzdMUjJTZ3E0ZnY5Q1QxOXpRb2dDWi9peVg4OWZiTHZ1ZCt4OWViYmFHbWRPWFpvaGV2VGU5NzZRVko5TWVPcGxPRWNWTzJQOFFMQWxYVCsrcFBmNUNpcVhibXk4V0xoaVF1aUFxeXBQR1ZWN1h0NkFrZURrbHp0Sk1hTW45Y2F5bld6dVJKbzRCM25OcXlXZFovWjU3U2FCNWtvVlBuMnN6SnN2V245N3R6ZWsydUg0RmVxcW81ZVVJMjMzdVB2VitIZ3hERjRVL0JvSENjcHRsZ0xnSGlaVUNzREFxOXNaN2NYQ2VWczY2Z3M1Z1JxVUZxS0FkK0hMdDJ0eDdRVnNaYnFqQU9DelJsV3VtaktDRTlDTUVKdGx1M1ZqVzNYT2UrMUREdm9WQndLclJ3cnB6ZXZZZnR4Z3hPWUVGdW9hREFjcVIwUXJnL0tKMk5EVko3MDAxVURnMVJGYzZGMWZSMDJmb1RLTnVqOEpITEc1ZE9BeHRxcFN6RFBrTHdIbzI1dnlSckV0OUU2ZTFvWjB2MG94Tm93Y3FXZ0lNNTVhWjFWRFRxZEE3djZaSDZ4NWZ5QVFtbUZ0QUZIVUR4MkVvZTBPMmxkN0JVWWR3OCszelF0dm9qaGpsc3ZialBWb1ZqTHNJeDU2NW5udEs5WlMvYm1RRDhZYWdweHBjcEJQN0ZGQWFCYUEzYldFT2ZXU0ZjdUtJVHFCTnZBQmpjaGhzWGtDWThLMmVvMUcxalNmcGtxWDkwYWZoY0NSREdCd3JGVi9mZ1lpbk5oSUdvQVd0L0x2UjBqdzJsTjY3d2h5Z2pnTFpocytHNXlnS25abmhkaTlGQ282SXRKTldvc0RLZmU0VjdGU3RaSnVqcisxc2V3VGV1N0lGangyVHJnL2N4SENGTWhwQ0VwTjV6Y3RzbTF4SmcxazhJVkp1bHMrVHFCbnZQOEdpVEZXeUQrdWd4S3NCeTlJdFNtTThWS0JiOWExMzlnYTY4Y1NhTk4wWEFwenRqVDU4b2pXL2pmVHYwY1NhaVA3N2ZxWDE3cEdUcUZIb2NEQVRLUUJtZjl0VGV1SkFuZzZsNEh2QjczTWFuSmh0Q2huVExWbnZQOS9sOEcvTGpPS0JSeDRKM3QzNndDajNET0FFWDhTallSWUJ2WE5rWStFaEpzVlRNdVl3ZXd6Q3BSUFBoUk5ZVTJmU0QyOXdCaTUySmV3S1JPUkU3Y1BPN0tuamJrcC9LNXNVL2tKT2JOa21DNStxUk1xeFhkTWdUejFrd1dmS251Nm1GejhkeHRNcDlMZm0wczNSODZOQzVjenRhS2hoK3cyT0NySC9rZjZSMEdwUnRMMktZMGpPa0tEOUxkdjd2WTlvNDlSQnJlQlZZTVB4NEJnTU1UZSsrdzRkSXdJMHhPRTFBNlRvVnJyOTJucmFBWEp4eUEzZ21rK0Uvb215TXUvTVhlQTBZMnhKZHRmSzB5bkRpcXhMTVAwWmJGTVpwNVhHYW5mQU9ybDNMcjBzeHAyTDF2UDFuRDhuQlQxZkxxVDI3K0g2YldiZGpYanR6RWVpUTBFdjFENS9qSEtzcGwyMzMvMGdWcGlIUm5mYkJHQkY5c0JMZit1TWYydGNoQU5EaFBCelEyZHFvNDArZ29xa0VEYlA0TEFxS3FKaVZMNmRoSkJ6VDBaRUNzRGwrTklXSWdQS1pMcW42em53dXpyREk5ZXNEYmc4enArbzArYUcxamZGc1plY0FNZmptbGUwWTZEdllLdVZYWFU2UHJuUjdXUkFOdkhpMGQrWUFWcGNHSmxnVUxMa3I2VzF2dGE5TFZDRUlaVkFTM2huSGUrMGJicjVldHZ6c1FXbDQvamxwK2ZBRE9WSlZLYWQyYkpPdXZWL1JFTERxYnYvM1dtbDYvVlhaOXRBRC9FU29TTmNONXBIMlNCTEtLOExMZndVNTB2YkYyaUF1bWlDTFZyUHI1MHNwZEg4azdQdGpqNDF2d3RtVVhVYW5iUFlqbUxHenYxWTJ2UHF5dmFDWm0yTlJNYmFReEpNeXRQUjlReiszUm9uRE42NXNzMUVMd2ZpSXJ5UlRWNWRLWkpIaWdySzVEMWRoYlgvZ3h5UVlqelc5VUllVHUrT1JwVW9IckZzWFEzbmFuNDlNM1pTZ2dzYlJKSERpYzZMSytUUDVFaUkrcUZ0LzdkWGNycFROTGJBK09pWWVoS0NmUDdpdzEzbHRhL1BWYjU2V3hFQmZUQU1SUGQzTkRWSTFiMVlrRTdkNFFoa1BXNDdWNGp0djEzaFU0TWJ3QXpsQU1kSGJ4ZWNLa0pzL1lNRjRLRmNVekpDMlQ2TVBKT0xyaEJnYXduOHNqUHZGdzZhYmIrVERCanNzd0ZlTWJ0RXhKMWM2UHZVUDkrTWVvZjIxNzRuNm5WSjF6VXhWemxRcHhHbVNDNTNlcTNnczYzRDVpSUU2VEIwbyszdEkvSElTQzBhdXZvMFdmcjZyN1hjc2VWREhNNFBEcnduTTB6UElzd004TCtjQ0UrTndmSXNJTmJmZ21iVzFzeTV4UHM0RDFpR002UzZ0M25mWDh0NFhuek5IVVFNMVhoeXZLZ2RzOC9BTld6aGI4RWdDTW9QL2dMSUJSalhHN3R5MWsxc3hlSmJmUnRERHRhNXU4VDNTZi94NGFFdm1WZEZlNlBoa3RmN0p4NlJLdHgzbCtYakwxRHdxbml4YU9BVzdPbHZZb0J3SkNVTERVeTkvSDY5TTdmblRiemdxQnVQNFJnUnp4S1llSFIvUDRPSE5mTTg3R0pyaVNwc2tiZnplM0swN2ZOOFJ3SWZxVUhaZzRSaGdDa3gwbm1FSXAzT293WE50Z2NnRStxK2VKZTNsUld6dGNaMExWTmx1TUNhOC9RSEF2OWxRWlUrZGFKK1hJbHhvd3J2ZFRXKzl5UllSSVNPQktjd3pndkxlUHp6RGhSbU9Bd3N6SnZQUUh3OE5NSWMyTEgvSnJOd0lJZURhSDlSZzRONldBN0w3bGIvSWxydnZWRytmelpWcHVlTEJXeWVJR3Q0SW9IZ3ZFSHF2S2dtR3hwY25NTmRyZmMzMTgyWDcwaVc2QmR5aXBDcHlNamFjTC9QeUErK3RsRUs4RUpFeGhlKy9GV1pNSkEvRmFkL1NxZUlhOVM1YkdZTkg1dWc2RG1Ba0Rjbit2end2LzU3d0xYN3VoRStBa1NpM3lmOGxPeC85dWZUcGxqVEFPUVkvNi8rZ0dRenFvcWFlcjdFZS9QQnZtajVnd3A3MHpPNTZJaktHUm9aa3l6WG9QdEV1VFc4dTQ5T3g1bVd2Uyt1eTEvVDZEV25XeGRQaHp6K1RvVzdkUjJzL1AvK2dIOGVMNDFIbEQzU2VraE1iYW5RLy9KYnNmdXBKdnN0V2M5TkNidlB3QWtDaENnR0N3SXY1NjNRcmhVZUYxZGRjSmJWMzNTRTdmdlc0SEZ6MWxxNmNkeW8rVzFNQXNaV2dLS1BiVkthMWlVRTVXbHFpTkw3TS8yM1N2UHhWT2ZEbTYzdzFHZ3VvSXpXVlZFaVNYR0xGc1lGUjBkM2VJdnRmZVVubDlvYlM4RHJIMzdmeVZXbDg4MlZwWGZPeGJVTVZ6ajVPTVRCbDZ3K0lqQktFSEZlU0RaWnNxOUg5a1lBTFE3WlZERjRZbWlWdGl5d3p3SVZQNXhnbmhEajlzVnRxRnJxSU9kUGVKbDM3R2xXQlg4cnhMWFY4bWZERWhtcExXb2IzZHU3WkxmMkgyalFzZGtlT3JCQlhVbFRuQ2dxeFloZ3pBbC8ydEhvekhUc0EzUURPRFRDRVhrUVIwblFVNktLUTR6U2REZEdjemNZR1hwaXNjZFUwQWlzUy9LQ3BRa1NjSnZVU0U2NGpISFZPc2pheWxWREVWVkNFMTQ2N0JIaTZBajJ4ZTM0OGdxdVBicVBlalQrTXQyaXJCV00wT3RBV0hPQWhXS0FkbWJ2bmhjMkhaQTZ2M1JzN0RJbnVERUNMSDVNbGoxd2o0SUNuM3ptUEpuODNEdnluZCs3K01BREJVSUsvSDJNZ05IWjFGd0syTlZ3QmlEUGUxKzVIRFBqN3JvM0Q0ZThHM2JzYUNqL1dKb1F4N2U3YkFrSTdWMmZGaUE2V2s0TmF5QUhST0JqQnh2SUozU0tqQWM0NE4yTUFQNEFhRThaQW1YaUhJMGU5Rzk5dTZmaHg1aFc0UUlzYUFJeFFRS2p6QmVab3IvZGpBcmtRY0R1Z0RXMFVONVlud21mRGlMSkdKa0NqSlJyTTNkSStwcFZnRlA0R0lKUnhEMjNqM205MUFGTGorcmdzVm9qYUFZeEdHNDlsKzR2YU94TDh0YThlSzhURGRaeFh3Mi9Ydy9uaU5mc2xRNWl6WFcrRnFCT0F6TGt5d0s2VDI0d0lTYmc5UGhDa1dSeDVERml0UCtkc01xd2lmaGxtSTVlZlpVaHhpTjlDV1ZPZ2pwblJhSkVDNVVpQUhpMWxvWTJ0aFNuR29mRFpHRUVwaXZHUWhCTVh3d2RSV3NBRDZVcTZKL0ovVVZiV09oTktnQXdBQUFBQVNVVk9SSzVDWUlJPSJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIzLTA1LTAxIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiUlNBIERTMTAwIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVMkYxMDAwMjAyMzA1MDEwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMy0wNS0wMSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI0LTA5LTEwIn0seyJhYWd1aWQiOiIzMTI0ZTMwMS1mMTRlLTRlMzgtODc2ZC1mYmVlYjA5MGU3YmYiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjMxMjRlMzAxLWYxNGUtNGUzOC04NzZkLWZiZWViMDkwZTdiZiIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IDUgU2VyaWVzIHdpdGggTGlnaHRuaW5nIFByZXZpZXcifSwiZGVzY3JpcHRpb24iOiJZdWJpS2V5IDUgU2VyaWVzIHdpdGggTGlnaHRuaW5nIFByZXZpZXciLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDcyLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH0seyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AzODRyMV9lY2RzYV9zaGEzODRfcmF3Iiwic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciLCJlZDI1NTE5X2VkZHNhX3NoYTUxMl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlES2pDQ0FoS2dBd0lCQWdJVWVmK1Z2SGtjVFFuRUQrK3dKTS9JeHpTVUxrMHdEUVlKS29aSWh2Y05BUUVMQlFBd0pqRWtNQ0lHQTFVRUF3d2JXWFZpYVdOdklESXdNak1nUmtsRVR5QlFjbVYyYVdWM0lFTkJNQjRYRFRJek1Ea3lOVEV4TXpJME1Wb1hEVEkwTVRJek1URXhNekkwTVZvd0pqRWtNQ0lHQTFVRUF3d2JXWFZpYVdOdklESXdNak1nUmtsRVR5QlFjbVYyYVdWM0lFTkJNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQW91Rk1UT0thRTBZdGV4T29pc1N4cCtFYmk1SUE0ZXNFU2N4MTZselFkcVY2L2VaODJLdEplTlhFdU5rQlZaRHBjMzJnU3R1eExCSDhtZ3NvSEJGYWkyRGtqZkJuNXFid1IvYzUrc25sd1p2amdWQTBoekt3OUN3QWVBd1JENWtyV3Q4OC9DVnlDa01jZ0xTR3dacy9yajdGL0xzM0ViZzdNcUxiYlFKOUNvemJiTGRKVVlJSGNQcFNaUHRvTXJaYjRHdm5pNmlWUzlVdkNLZ3BxYzZMR1Jtb1lHRzRaUjNsR0ovWFFaZnUrR2VKVzY3aWltTWoveW9YT3d4dWN4aXZaSEZrNmNRU2d3dXdpb2VObTR3dms4M0xoU3VXY3RmMmtBeVFjWjdrVW5wTmVlK2Q0TWdybUdVNFhNRkxpVGd1dGFCK2U5VjhkNUpUa1VPSGlMenRrUUlEQVFBQm8xQXdUakFkQmdOVkhRNEVGZ1FVTTVTQjViSHJWK2pwSU9NZEpsN3U3YmNuVFk4d0h3WURWUjBqQkJnd0ZvQVVNNVNCNWJIclYranBJT01kSmw3dTdiY25UWTh3REFZRFZSMFRCQVV3QXdFQi96QU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFDb3dSM0tUTGZpZEp5UUZOcUVGZlVyZlo5YWE5ZWdwT1F0TlJKZExTdEo2eHUyV2ZMd3ZHNG9qR0psQktObmZhNURJY3lRWWYvOHFKNGVsaUFWZU5YdVltZU1tZ05nWlp5dVk2RzF5V0NEMlYzc0Q2WjR1ajNTYmFET0hqM2dIdnN6Z1FocmhUMWgvcHVIUWtuNitoWUtBcDc3a003SWM2QVovUkZianBtTExrMkQwc0UxbHpULzAyaStCaDdNOHNtYWlEWjkrK0pHenhlU3VuOFcxSGxlWlVtMnFLR21SYTRYUGRyeVQ3eDZLR1VHblU0YTNicFVtVmVZOXJRL3NmTWQ1WlRvbyszdW5GV0R6b1ZWMnZOdTgrK1ZMQzl6bzQwRmFLUUxyOVZBSkRKNHlMRU5SN0tybVY4TDBjQ1hLSkdaV0FXdEc1UkdUbUhJaGQrbkI0MWc9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFmQ0FZQUFBQ0dWcytNQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUhZWUFBQjJHQVYyaUU0RUFBQWJOU1VSQlZGaEhwVmQ3VE5WMUZELzNkNTl3ZVFTSWdTOUFRQVhjRkxBUVppOWZwZVZ6MXRZL1dUWnI1V3hwYzdXNWtuTGE1akkzWjg1c3JTMm5NMnNqdFd3WlM3SVVINEg0eENuRVF4NERBWkY3NFY3dXM4ODV2OS9sSW5CdlZKL0I0UHY5bnUvNW51LzVudk01NTZmekEvUXYwSGIvSXJYM1ZGS1BvNDVjbm00aW5VSVdZd0xGUm1aUVV1d2pGRy9OMWlSSGgxRVowTlJWUnVkcXQxQmQrMm5TS3lTL09oeXMwK2xrM2UvM2tROXF2RDRaVXRhNFZWU1V1WTBlaXB5aVRoQWZvY29PUlZnRHV1dzNxS1JpQWQzcmJjRXRqVGpZSW9mNldhSHNDbXpWUFdDTXgrY2doOHRMcVdNS2FNV3NVakxxbzJSdEpJUTBvT3ptZXJwUXU0ZXNaZ3NPTmtHeEg3ZDBrZHZUVDE3czRPTVU3Vkk4WmhqZ0dhTStBcTlpRU51OFBpZjF1ZHowN013dktXZjhHbFZvQ0VZMDRQQzVXZFRhWFlGYlI4dk52TDUrM0tnZmI1eE5NeWE5UmFtSml5bmFNbEdUVnRGbHI2YmE5dStwcW5FWDR1TXVSUmdqU1lFaHJON3V0RkZlNmxxYWw3TmZrdzVpbUFHSHluUHBiazhWbVkweHN0bnB0bEZDVkNZdHpUdUJOODNRcE1MalR0ZXZkUHpTVW5KN2U4bWtqeFozOWZYYktEZmxkWnFidlUrVFVnR25CVkY2ZlEyaVBIZzRXMTZVV1V3dnpiazE2c01aRStQbjBwdno3SlNldUF5ZXM4bGNwQ21hS3VvL3ArcVdyMlVjd0lBSFdydlAwWUV6aFhBdExBYnNzSGhwN2lHYW12eWlqUDhyeXFyWFVXWDlYb293eHlBdWZOQnJwNDNQT0JGWFpsa2Y4TURSaXFjcHlvd0F3cHV6MngrZld2ei9EdGRlOXNtc3p5Z3RjUjZDMXdiZHpCbDZPbHE1V05ZWTRvR2F0aEpNcmtURXgwakFSU0hBVnMrNXJZa1FOWGIrUWdmUExzUTZnWHlJbnNyZVFmbXBtN1JWRllmTDg2bjFmaVVPa1l2U2hrVVB4dmJ1a3pveTZLMWloTTFobzNYelc2RXZTZlhBK2RwaVdHYVdkK2RvWHpMem1Hd0tZRkxDQXNSQWxQQkFoTWxDRlhVN3RCVVZQcjhIZ1ZjSkhXcStGMDBwbHIrRE1UZHJQNHp2eFkxMWtOTWh4VCtTZVRHZytkNFY1TFFKaXR5VUdKTkI4VkZac2pnWUJaTS9JSS9YQ1RrajBxeURPcEYyQVZRMTdDSWpVcC9EblQxVWtMNUY1Z2RqK3NTMXdnMWdFM2dpZ202MGZDWHpTblBYYnlBUGJJWHYrSURwRTE2VGhhSElTOXNreWhsbU1FNUYzY2ZxQUtocTJDMEU1UEgxZ1lhWGFMUERrWkcwSERKT25LV0hwNTFJMHo1U091eDhlMVdBdVp6ZEhRclRrcDhUbWpYb0krbGEwd0dac3p1YnFiTzNpZlE2QS9XN3ZWU1lzVjNtUjBKS3drS2M0V0hpQmttUjhJM0NDZ0k4N29PTDRxelQ1UCtSVUpCZWpFT2dBUEs4aFlQemF0TStlSVRwMklPOXlUUW1lcm9tUFJ4eDFxeEFjc2lsZS91YlNlRWJjV1FHWUVDZ2hjTFkySHlLam9nakgyNWhNcGpwVXYxT3VnbGk0ZWgyZVJ3ME8zMmJKamt5dUNnTnpnMHZ6bFlNU2lTczB1b280TUc3aE1PakNFYVgxeUZFMG5TdmpCenVUbkVwSzg2WjhJb3FGQUl1Ync4a2c5QXJFYVJFV1NaSStqSDRYYnA2ZzlFOUVuSlQzb2FSekROK01VSkJRREhuNTZhOG9VbUVCdXNPeEJzL041K3RKRWJQa0FGRGo4VUd2T3MvSVd2Y1NnbEdCaHZTNy9GVFlmcFdHWWREWThmUEF4V1NBMzVzVEM0cDQrTG00QWFxSW9QZVF0ZnVmSzZKaDBaaHhsYnNVWE9TbVhOaWZENVpUQWt5RG9mYmJjY2x4bkE4V05BcXhDYlJOeWtoWHhRcGFEdzY3ZlhVWWJzaUcwS2h0djJvZUl2aDhyaFFNWU9jRUFxWEcvZUkrem5nT2M1eXhyOHE4MklBTTFjL0ZMRk9wbHF1NWVGUVhyTVp6R2NWQ2pZYkxXRzVJNEJUMWV1UnJsYnh0Tk90TWl0RERFaExYSUl5bkFBdnVPRVdFM1gzTmRBZnQ5NFZnYUc0MlhJUXQwWlg2UGVDRS9xUUZlOXJLNkh4N1lVNTBLdkg3Zlc0ZlMrcTdLS0JKeHNnZ0JYNXBTQUdoMWpJclZoNXpRNnczUmZhYWhCWG0vYUNiQ1pUakNVRlVUeVdacVc5cDYyTWpKUFhWcU9yUGdNTzROdjc0R2tmK293ZnROVkJEUW5qRkpxSFN3MTdwWHZoV1c1S1pxZS9RNDlOL1VTVENBVldvUVhGSUhCSFhYZTNGUHJVRHN1R0RtdEYvaEhLVEhwZWt4aGlBT1BJK1NKcTZTNkhGNEk5WVd6a0JKVG80NmlVTXpXcDhQaXIvUmlkdUx4S1lzU2tzVjh2TGxPUXZoR1gyWWxSME9CaEJqQyt1L2dFY3ZZMEFwSzdZazQxTnhqUFNRbldGSFRGNjZVcmpnZXZCOEN1NWErbDJ2WVNSUHR1VkRvNzNoaGRNU0huVVg3dFRqc1ZaR3hBbC9XcHRpT0lFUTFnbkwyOW1YNi90UjF0bWxrWWo4VzRYK0NTaldjVURHWTFOcFMvQzdoU0txaU1MTS9sMlFtU1daNzNEZHorZ2lvOEJDRU5ZUFE0NnFua3p3WFVicXZCa3hqVVFzV2ZaRmdidW8zckFmK3dON2pPTzkwK3lueDRQaTNMKzBuWUwxU2NoRFVnQVA0Z1BWLzdJZDFxKzFIU2htdUdrSXFXUlBneXhNRnFQOEhmalRualh3WTViUWZiSmN0Nk9JektnTUhvdEYvSGUxZWdzYXhIU3FHNndmZG1RNXg4TnlURkZxQmNwMmlTb3dIUjN5azUrMzZoRjd2WEFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xX1BSRSIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsImxhcmdlQmxvYktleSIsImNyZWRCbG9iIiwibWluUGluTGVuZ3RoIl0sImFhZ3VpZCI6IjMxMjRlMzAxZjE0ZTRlMzg4NzZkZmJlZWIwOTBlN2JmIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibGFyZ2VCbG9icyI6dHJ1ZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOnRydWUsImFsd2F5c1V2IjpmYWxzZX0sIm1heE1zZ1NpemUiOjEyODAsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6OCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoxMjgsInRyYW5zcG9ydHMiOlsidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN30seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTh9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi0zNX1dLCJtYXhTZXJpYWxpemVkTGFyZ2VCbG9iQXJyYXkiOjQwOTYsIm1pblBJTkxlbmd0aCI6NCwiZmlybXdhcmVWZXJzaW9uIjozMjk0NzIsIm1heENyZWRCbG9iTGVuZ3RoIjozMiwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjEsInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjoxMDB9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiTk9UX0ZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMDQtMDcifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI0LTA0LTA3In0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiNDQ1NjFhOTVkOWEyNjY0ZDMyYTI2N2RiZmU4NmNlMGJiMTllNTkyNiIsIjQyZGIyNGMyNjQ0YmQwYzMwOTQ4YTMzY2NjMjY2MzVkOTFkYmU0MGYiXSwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiNDQ1NjFhOTVkOWEyNjY0ZDMyYTI2N2RiZmU4NmNlMGJiMTllNTkyNiIsIjQyZGIyNGMyNjQ0YmQwYzMwOTQ4YTMzY2NjMjY2MzVkOTFkYmU0MGYiXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkV4Y2Vsc2VjdSBlU2VjdSBGSURPIFNlY3VyaXR5IEtleSJ9LCJkZXNjcmlwdGlvbiI6IkV4Y2Vsc2VjdSBlU2VjdSBGSURPIFNlY3VyaXR5IEtleSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozLCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50IiwicmVtb3RlX2hhbmRsZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNrakNDQWptZ0F3SUJBZ0lKQUxsaUt2cUdId094TUFvR0NDcUdTTTQ5QkFNQ01JR2xNUXN3Q1FZRFZRUUdFd0pEVGpFU01CQUdBMVVFQ0F3SlIzVmhibWRrYjI1bk1SRXdEd1lEVlFRSERBaFRhR1Z1ZW1obGJqRXpNREVHQTFVRUNnd3FVMmhsYm5wb1pXNGdSWGhqWld4elpXTjFJRVJoZEdFZ1ZHVmphRzV2Ykc5bmVTQkRieTRnVEhSa01SNHdIQVlEVlFRTERCVkZlR05sYkhObFkzVWdSbWxrYnlCVFpYSjJaWEl4R2pBWUJnTlZCQU1NRVVWNFkyVnNjMlZqZFNCR2FXUnZJRU5CTUI0WERURTNNRE13TWpBNU1UVXhNRm9YRFRJM01ESXlPREE1TVRVeE1Gb3dnYVV4Q3pBSkJnTlZCQVlUQWtOT01SSXdFQVlEVlFRSURBbEhkV0Z1WjJSdmJtY3hFVEFQQmdOVkJBY01DRk5vWlc1NmFHVnVNVE13TVFZRFZRUUtEQ3BUYUdWdWVtaGxiaUJGZUdObGJITmxZM1VnUkdGMFlTQlVaV05vYm05c2IyZDVJRU52TGlCTWRHUXhIakFjQmdOVkJBc01GVVY0WTJWc2MyVmpkU0JHYVdSdklGTmxjblpsY2pFYU1CZ0dBMVVFQXd3UlJYaGpaV3h6WldOMUlFWnBaRzhnUTBFd1dUQVRCZ2NxaGtqT1BRSUJCZ2dxaGtqT1BRTUJCd05DQUFUbW45MUVJWVZmNURUMHA5aXBjM01vYmZ3S2FyblA5ZE04Y3JNU1pOUFh5WXYwSDczOHVLakJubmxDcnEzM0lURHdDT0RTbFVhRHc1MEluam51NXlQQ28xQXdUakFkQmdOVkhRNEVGZ1FVcklrdkQ2ekxpRHVjZGhObkFxbG1ySW5ObjVzd0h3WURWUjBqQkJnd0ZvQVVySWt2RDZ6TGlEdWNkaE5uQXFsbXJJbk5uNXN3REFZRFZSMFRCQVV3QXdFQi96QUtCZ2dxaGtqT1BRUURBZ05IQURCRUFpQURkWkJTeTU5RjNkemMrRXZVOUpDdjNlSEp3K0FpdkJYVThINDZlNmVwOUFJZ1V0OS9BZy92VEFqSWtLdElKcy96YkhhZkRjSm1ybnlVL1pQMTE1T2JlbjA9Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUl3QUFBQVlDQVlBQUFBb054VnJBQUFBQ1hCSVdYTUFBQjdDQUFBZXdnRnUwSFUrQUFBRklHbFVXSFJZVFV3NlkyOXRMbUZrYjJKbExuaHRjQUFBQUFBQVBEOTRjR0ZqYTJWMElHSmxaMmx1UFNMdnU3OGlJR2xrUFNKWE5VMHdUWEJEWldocFNIcHlaVk42VGxSamVtdGpPV1FpUHo0Z1BIZzZlRzF3YldWMFlTQjRiV3h1Y3pwNFBTSmhaRzlpWlRwdWN6cHRaWFJoTHlJZ2VEcDRiWEIwYXowaVFXUnZZbVVnV0UxUUlFTnZjbVVnTlM0MkxXTXhORElnTnprdU1UWXdPVEkwTENBeU1ERTNMekEzTHpFekxUQXhPakEyT2pNNUlDQWdJQ0FnSUNBaVBpQThjbVJtT2xKRVJpQjRiV3h1Y3pweVpHWTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5MekU1T1Rrdk1ESXZNakl0Y21SbUxYTjViblJoZUMxdWN5TWlQaUE4Y21SbU9rUmxjMk55YVhCMGFXOXVJSEprWmpwaFltOTFkRDBpSWlCNGJXeHVjenA0YlhBOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOGlJSGh0Ykc1ek9tUmpQU0pvZEhSd09pOHZjSFZ5YkM1dmNtY3ZaR012Wld4bGJXVnVkSE12TVM0eEx5SWdlRzFzYm5NNmNHaHZkRzl6YUc5d1BTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM0JvYjNSdmMyaHZjQzh4TGpBdklpQjRiV3h1Y3pwNGJYQk5UVDBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5NFlYQXZNUzR3TDIxdEx5SWdlRzFzYm5NNmMzUkZkblE5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5elZIbHdaUzlTWlhOdmRYSmpaVVYyWlc1MEl5SWdlRzF3T2tOeVpXRjBiM0pVYjI5c1BTSkJaRzlpWlNCUWFHOTBiM05vYjNBZ1EwTWdLRmRwYm1SdmQzTXBJaUI0YlhBNlEzSmxZWFJsUkdGMFpUMGlNakF4T0Mwd05TMHlNMVF4TkRvME1EbzFOU3N3T0Rvd01DSWdlRzF3T2sxdlpHbG1lVVJoZEdVOUlqSXdNVGt0TURVdE1EVlVNRGs2TXpNNk5EY3JNRGc2TURBaUlIaHRjRHBOWlhSaFpHRjBZVVJoZEdVOUlqSXdNVGt0TURVdE1EVlVNRGs2TXpNNk5EY3JNRGc2TURBaUlHUmpPbVp2Y20xaGREMGlhVzFoWjJVdmNHNW5JaUJ3YUc5MGIzTm9iM0E2UTI5c2IzSk5iMlJsUFNJeklpQndhRzkwYjNOb2IzQTZTVU5EVUhKdlptbHNaVDBpYzFKSFFpQkpSVU0yTVRrMk5pMHlMakVpSUhodGNFMU5Pa2x1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2TWpFNE5XWXlZbVl0T0RWbU9TMWpaalEzTFdGaU9EY3RPVEZqTTJJelpqQmlOemhsSWlCNGJYQk5UVHBFYjJOMWJXVnVkRWxFUFNKaFpHOWlaVHBrYjJOcFpEcHdhRzkwYjNOb2IzQTZaV014WlRnM01qRXROek0zWVMwd05UUmxMV0V6WVRrdE5URmtNVE16TkRabFpUSTVJaUI0YlhCTlRUcFBjbWxuYVc1aGJFUnZZM1Z0Wlc1MFNVUTlJbmh0Y0M1a2FXUTZNakU0TldZeVltWXRPRFZtT1MxalpqUTNMV0ZpT0RjdE9URmpNMkl6WmpCaU56aGxJajRnUEhodGNFMU5Pa2hwYzNSdmNuaytJRHh5WkdZNlUyVnhQaUE4Y21SbU9teHBJSE4wUlhaME9tRmpkR2x2YmowaVkzSmxZWFJsWkNJZ2MzUkZkblE2YVc1emRHRnVZMlZKUkQwaWVHMXdMbWxwWkRveU1UZzFaakppWmkwNE5XWTVMV05tTkRjdFlXSTROeTA1TVdNellqTm1NR0kzT0dVaUlITjBSWFowT25kb1pXNDlJakl3TVRndE1EVXRNak5VTVRRNk5EQTZOVFVyTURnNk1EQWlJSE4wUlhaME9uTnZablIzWVhKbFFXZGxiblE5SWtGa2IySmxJRkJvYjNSdmMyaHZjQ0JEUXlBb1YybHVaRzkzY3lraUx6NGdQQzl5WkdZNlUyVnhQaUE4TDNodGNFMU5Pa2hwYzNSdmNuaytJRHd2Y21SbU9rUmxjMk55YVhCMGFXOXVQaUE4TDNKa1pqcFNSRVkrSUR3dmVEcDRiWEJ0WlhSaFBpQThQM2h3WVdOclpYUWdaVzVrUFNKeUlqOCsvMFZ4UlFBQUdmVkpSRUZVYUFYVndYZmNuM1Y5Ny9IWDUvdjlYdGR2M0RzN0pKQUlBVUxZQlptQ2ltRFZEbGZ0dzIzSHFZdXFQVjBXdGRiV1I2M25WRzJybnJhT3RzaERyUlVmUFIzV1dTM0tWaEFaWVFvRVFrTFduZHp6TjY3cituN2U1MDRpS05XTzg1OCtuMm51aXNTL0ozRzhZWmVaMlpURUltRDg1K1JPTzBaU1VmaUhKUDZGSHlJRVdCakF3ek53Nm9iSTNDeWtDR2FHSk55aExNV3dnbnJvcE5KSUNCTlVjb29pME84Yit4ZkY2UExBcUlNY0dvZDJXK3pZRDlGZzQ5ckFnYjFpMFRKVEhXR0N1bzZVaGVFSmRpOW1WclNOOGNLWXE0MmQrOFNLQ1NPMmdBd2RJQlFRVFB4N1psRFZka2tXYnpUWmNLVEkzZGh2dnJHbHVlTTlkOFVUWDBScitqbW95WUNRT01Tc0JMcEFBakxRUnhwZ3hvK1JBbWxyNG9jSVpoZUdrRjVsQnBMNHJ3aElDWExEZkgrZ0R4ZUZrSGdDQ2VTd2Y3OGhFei9Lak1QRUQ1SWdSWHVSdWYyMHBZQlpRNzJmN1N0R0gzWW1UdnhGTWhjZ0F3bGlBUkxnR1d3R05BZldRcXdtaHNoQmNuNHNHT0ErbDhxQ3h4bVFCVTNEU1pJajhWOFRZRkMwallVRmJlMzFkUDJ5NVpBelR4QVM1TVpBZ1BHanpRQkIxWUR4QTlaWjBLa21jRUhJbWM5M0x2aTNIZkhJa3FaZWpUSWdNRUFPN2w4bnhrOGgzWUxuM1lRMGp1c00xTHlPRU01RTRzZUNnT3ovbFBZY0VJOXhRVHR4eEhnM251a1lJTDVyRWRnT0NDajRmZ1lTc1I1cVJhZWpxMEppdXFwNGdoUU5MdzFWNHNlRkFLOUZNcjVIUUxUalFneWJNY2lOZzdIbjFwV1hmT09oNnNTTDhQa2pNUWRMWUdHYXdkN2ZKWFl2UjBXZkVNQUMxQldFNGxaNkMvOU1tZjZPY3VUcFNJRDRrV1VHMG03RXZlbTJiYzVqaG8xWU94bVBPbk1UcDJhSjdJQ0JpWThKL1Q3UUFrWUFjWkFBUThFb2MwTzJ5TGJSVVVNQ001Q01kaHYyelRsa0kvSmpSR0FSUWhISWpYaU1HY2RLR25lTTBqS0lPeDZwVisvTFp1Y2o3eEFNU1B2bzZ4VjQ5UVhTT016Tnc4Z0VkRm93TXdNalk1RFNYcHJtclJUNkI0eFZpQjlkRWt0dUpOcU90SGMrOEpqK0VEcGQyeFRhakdnQUdlTWdkLzluWUU4STRJSVFRQ3dKZ0lNTFhCQU5tZ3lTa1IySzROejlJRHc2THpZZkxRcmp4NFlaTkRYMGVrNTNMQ0J4U0FwMmpwbGhnaFkxc3paeDAxWE5CWE1FdGhBcVFCVzk1aDAwNlF2RUVhaEp0TXVYVU1RWDBGUlgwMnA5aENMTm93Q2Vyc2Y4UHJCVi9LZkVZY1ovbnpqTStBSHVFQUwvSVRsZ1lNWmhCcTZiRVF2cFNVZEdIbFBWeEJWamRvNnk0UklnRU5zRU82SkJscEVDVkxVVGdoRkxRVFljSXlNS1FaTWhHMVFORktYNDVqMWlZdEpvSlVPVitDRU1HQUVDTUErSS93OENYR0NBTzFqa3Y4MVlJc2dPRW9lSXd5eEFYWW01L2M2cWxZWm5hREpINWN6SmhJQk1tT0FoMy9qbGdYVldRejZSWURBWVhzdEMvUmQwbGtNNUF2STNVSFRmUndCcWZ4NGpvMXVCTDJJUjZnRFpHMElBQk80UUkyRGdEaVlPc1FSeWtJTVpQMGpnR1VMaWNSWUFnUXZNT0VRQ015aGE0Qm5rUElFRUZxQm9RYTdBSFVJRUJEbmZpY2pwcEVseGlJREltczZZblprYmFESllNRHo3M2NnZm1Xa0NSWUxKQ1AwK1dBQUtIbWVBWkVnUUFnVGprTkUycEFnU2h3aklBb3pqZ1o5Qk9rK3d6c0JjN0FPK2d2aWt4S1A4SndTNEdERzRLRVhPRXF6cXRQQUEzekhqQzRLdC9CY0V5NEp4OFdpYk0ySmtLb29hZUFENEN1TGJHQlFseEJFalprR2Y5WFZ0bTRoZ0NJelp2K1hGRHowWU5wNk5MYXhFRG1YbnMweVpFeW9vMHhuSS9vaWNvYWtoUk1CZWczd1RVa24yMVJnbkU4UWhyUTRvZzJjSGJRZjI0cXdpMkhxU0JScUJBRE1lNXc2cGdNNFlESHFRR3pDRGtDQVZNT3lCSEN3QUFnR3hBRGw0Qm9zY1pxQU1DR0lMd2poVVBhRnN3QTZDN21GSm1ubFVIT1FaV2wxV2o0eXlSVUVna0J0bHlUMnRxQU43NTRXNXNXUkNjS3JnRExEamdPVUdDb0dkR0xjQy95cDRoQjlHRU9DWXFYWjRiVzdzUmRGMEZHYUdJQU1wUXNDZVpZRmZNN04zQ1A3YVFId2ZBVG1yUlBaTHJjaXZZR3lXV1ZlQ3RaTWdsNXJLM3BTaVBvYnpoOENBN3lNZ2kxR1pYZXB1cjR6R3BnMnJZbG5YQWplVWhEc1BXZVRQTGZMSDFVRGFmbSttTG95UnR2M0VaTmNtcXl4YU5DQnV2VDZldXdQeE10UnY0K3JSRzl4SU11ZzBNTlFCTE54UGEyUUx1WUZxQU1UbkE4L25vQ0lBeGlFaGd1Y0RMUFkrVGpQNEV1Tmo5K0RXSjRSQU5YTTZkTi9DeUxLeldKd0ZieUJFUUJCTFVJREZtUWR4WFVjcTdzVENnR0gvS1Bweno2QXplaElHTkEya05uamV3ZmJiUHNyWTZ2dG9UejRmYTE2SUJjZ1pXaU9RNjBmWWZ2K0htRmh4QjkzUm44UHp5M0RkanJHZEphbTdNWENRQkVYa0REUEdjZ1VXd1hBR2ZWMWZXMEJ1YXkzeTg3Zzl2OTIyRXcxYklUY3dnU0FGUThKajRINlpYVkZMSHdCbStTNEhBcng0OVRKN1I5a0t4dzhXd1FLUGs2QnNRUUdXemRZWG8vR2pkWk9qTWg4MkRwTWdKanRwOVVUODM5MWtGK2VHb2tqQ0piSU1seEJZcm5Wa3UydHZNdzlIbXZKckJRT1dPRkFFVGxuVkRoOXNXYmlnY2NOTTFCbkVraUFra0xFaEJIdDNHV3dWbWQrOGQ1dnp4ZS9FOU15ejdjeUx6NGZxRVNpVjJWbHMrUHllWW0yUFBrL0ZNc2dIRFBveldJQ3FnbTduQVR5L2dOazlyNkVvbjBkNzlFazBGWWNJQ0FIRUVvRVB2OHFqRDd5VFZjZGR3OFI0UXpXQUxCQmcrV0ZtRnIvS2JITUZVK1h6Q0FteWd3VW8weDcyUGZTWFBIRG4zN0xsS1E5aDFpZEV3R0ZtMXlvNng3eVZzdnRHNmhrd29EUDZOaFptTG1mWnhoWXBYWXpYSUFHQ2FDQzlpMTc5RnpUWFFUcmhRc3BONEl2ZkF1WlprcnBkY1pDZ0UyVm5lelpjSW1LME9ueDFkdGIrTGplNmVOVUsrMkRDanE5ZGhCQzA1QURTaUFYS1ZqU2FSalFpeEdESGdyM1Q0Rm5BcjBwODJ3V2R5RnRiSStHM1RUYmV1QkFRZ0JBTjVQTWpMVDUzeDRPNmV0c0MrODQvd2RaT1lpOXRpTzh5eTdjaTNjaEI0dHhXeXo0UzRjUWlRT2c2dlI1N1RGeVZnanlZWFNSWTFRQU9kR0o4cWFSckpQdG9VM1BRdVNuWUZhUFJObVdEakREWVdkVit2Um5aNEd3ejIyQkFOWlNWbmZpcW80N2xzNVBPVmZQTGJPMktVZHRNWDJBR0JRdzZFOWMwZCsxZHhkcmpOdEZPb0RoQ1ovOTU3SGhnSzBlZkM2RUc1eDRHaTc5T1NoOGdwS2NSL2Rjb3U2ZlFuNGZza0NKUS96M1ViMkJxelU2YVBvd3NPNWJoNEFKY3UvRG1xN1FuQnZTWlovdld0ek4yN0dsMEp6Y3lXQVRaOVZSemI2YmR2b2JONTRxaUJXcWdHb0lpdEVmM3NPZkFteGkzU0xkOUtWVi9GNjN1VnpqNkxJakZPbFJkZ0FVUUVBTU1xM3ZKZGhWcjFrSnVMY01tbjRvcW9MNFpQSU9SR0hDSUdWTkVUaEpnQnRuOXk4TUJyeDhkczdjRmhYZDJvaGcyZm1QTytuU1EzUXkyRDlOa1U5a3BpNDIvb0d5Rmk4cElrQXR2eE1TWW5SK0srQWtMell0RzIzWkJ1d3h2eXoyMTYwYVlRWkZBVVBWNy9xbWlzRDluVkxmMSt2U25lNDRzUU5ZVmplenRwZkhVUm40VHNNNHN2TS9FaVNIQlRGLzloVVg3MDdLdGo0NjAySVhJTjl6VmJKNGFpKy9mY25TNHNCcUl4bFcwWTN6ZHZnVSt1bTNhanpqdEtQNE1iRk10a0duT3M3ODNoUERKRU94UlNSZ2NpWGdieGtzRmxxS3RhS2Y0d3Y1UVY1MTZySjYweWptaDJtOVlFSlRzZm85ZS84aDlCemFld1JIelU0UUNGRnFFOEFhOHVvbWl1SVdtRDU2aExNRGlnN1JISHVTV2E3L0VzUDlSVG5uNnM0Z0dpL1cxeU41SUhPeWtNN0dNaFlVM3M3ajRVc1JxaWxBZ1BrNk92MDY3M3N0UjYyOG5oeHZJMmtoMy9DYm1GMStMdUkzeE5lRGg2VlQ5VnlHT1JQbG1HdjlUSmxidHhJRDU0Vi9TYWo4WGZDZHpleGV4TnRUVldVVGZnQm1ZUVREb0RYZlEwelltV3BBMm5vUDdDZmhnSHlIZmpvbURrampNeFBwQU9BNER6OXdnOFg3VityMlJUbno1WXEwSGRzL2xQeHdwN1RQQm1PTzdna0hsWEh2M3cvNnhpU24vK1ZNMnBiZFhzL1lrajJJNEVLRUtXNTU2VXZIbG1KaW9lbW9yYzBnclFRT1BIaGo2VzJuc2I4cUN4OFVJTVJpNDl0ZFpmMUFVWERCV3BvbUZTcjlsRnM0SkNBdk03WnIxUy92emZIekRlc01NRURSdXQ4NzNtcmNvcC9jRVdCOER6WFJQOTMvcU9pL09Qem45YW12VW5yd3dDNWdlOHRwZkJYeU5KN29iOUR1WW5XallhWjdGWXJaTk1jTksySktDalZkbWRCbkFnQnNmMGhIYjJMTHVkYVFESTFRVnlLQ3o2bVNPbWZvazduK00vRXQ0L1FpdFVlaU9nemNnN1dEWSt6MXlQb21pWEU5amY0aHBCNmIxcEhnNTR5dWZ3WEFBWmhBTlhDK25hbTRsOEI2NjQ5QktCOGdMTU5kN0o1VnVvNHFSRWJ1TXdjSnZZMkVNaTFDTVhvU3FEdGhseEFBZHpkSTBleWs3MzJJNG5PT3V1Mkg5NnROWnRUd3hyQ0FZeEFRTCsyL0NyTS9vYXVoVlQ2WlZkSmh1cnFldEEzUWlPS1FVamU4NnhZd3B3VTdIcjIwbmUwdjJkRzQvNit2dS9pcGdHOTlsZ0ZoaUhOSTR2VWE2SFBkdjdodndpYkZPT0RVQnVSSGpJeHlSSGVvR2drRU1zR3RHMzg3QjMxaDI3R29KRU9EUWJVTzNNdTdkbmxuWkVXWEJWTHNkTzVZNVhoNWVvQ2lLQ0ROeitVUFQrL3pqclpTUXdJQTZ3OXBKWnpEMGF3ZnorZWVTYVN3bWNwWFpOVFZxcDY5WlliOGlCOCtPUjk2ZFV2eGFNRVlsR1dCTFdKS0JBM0o5MjR6VFdPS29YRFNuSzl1WUpBUUVnd1BONk5XN2UydWd6ZG1RUVN3UjRORHViTWI5cjhqRlZxSStBZllab3QrSCtuRDBhU3o1QnNxMzBCdnNndkFObWozZ2ZoUmgrVFNodVJKNUJZaUdBaGdoNkI2S0JBYXNXSDQ2WDcveWMxanJLK3g3QURZKzgrWEUrQWNJd3dSaVNZWjIrVXRJWjFBM014UmhBbWt6bG42ZmJkc2FSSWVpT0pXRERKQkR3NEQyMkxjWTltQjJEa0o2TXJSZ3FuTXpUWDJBYkJ5VWtGalN3dXgwQ1F5ZmptN1BEZU5oMDZEVUYxcDl2WnpHcHVXQVFBWVpNTUFNM0NFQTNUWlFzSFd1MXMvVU1mL1ZVZDF3U2IrR1FRMEdtRUdJUUFwZmYzUi9mdTNLRmR6bEFqTlFnR1lJSjIyQVpwdjQwT2Zod2pNRHp6M2RMdDI1eCtSbzQrcmx0aXdQSVhTNHAxM3lKMVB6UnJzRnFRVjFBd1owUzJNNEJFazdESkZsckJpTnhZdlA1NFZrVml6T2laQnNFZW1uZ0xNRTQ0RDRuaG9vRE03aUlBT0R4V2dVMFRoSkF0d2d3WmZqSlhkc0RTZTJDUGtJVkFNQk1CRFFERGtrZFU3RXV1K2lIcndhZUFtVG96Zmd3R0lGcUlmNEJLVlAweDlDNWpxOHVZNVE4RDNHSWNwUWxOQ2RXTW5ldmN2NDlyYyt5ckxPSWl2WHJtQ3l1SXpLRFJOZ1BLN0pYZUJjek1BZHNQc3h1NDJOUjRINzhaVGhGT29LTUVEZzdHQjBmQ3NSMkx2L0JJNVl0eGtMOEowYnI2TzNQeE1MRGtwa0RwcWswT2tnWXJDanJXTWo5KzNSVGRNTGV2VTRUSzhlZzdJRmJwQU5oQWhCV0FObWNNUnlZNlNBL29MWXZNeTMxemxlMld1NGhDWEdZV1pRTmY3My9ZcEx5NVoybFFGS2pOQUNCZWhWMENtRUFBZGl5WG5kYm5ycDF1bm1qOHBSemw3ZnNuYmR3TTU1djNyZGx2RG95UnNNR2pIWUFUUFQwRXF3Y3NLd0VGRXczQ0NIUUlUVjBleWlXdUFHRVViS0VIN2FBUW5NREFRT0dHQXNDWVlBQTVSOWF5Zlk2UWw3dW1TVTdScm1lSEI3L2FUYkIxUGQ1NUI3RzNETFlMczVyQTAyQVVUVWdBdFNzWkhzTDJiUGdSdG9IQ3h2QUZ0RHNLMFlNSGxjQzA4cnlMMkU2aHFMNHFBUXVyZ21pVVhCc1A4d3ZkWXJxUGJNc243bDFaejZIRmkyNWtKeTNzaGdIa0xnQ1F3UUlDQVZzREI3TGIzZWJsYXRoUkJQWVhiZkNnNnlDRlpBLzVFN0dlNituZEZUWU0yRzB4bHJIME52NWdCWC9lTzlQSHczZEVZNUtDbHcwTEdCY0NvWW9KRk9TK3pjbVQrOVk1ZTJyMTVoZER2RzJuRmpVSUVCQnBoZ1VJdDJhUnk1eXJoOXU1anRpUlBXOFJ5djdIZmRqSUI0VEREREczdjR6bDNEZld1bmpORldvaDJNSmtMdEVJRUE5SVl3VmpLKzZhajRmK2dxbkxaSk4yWEYxd3ptaFJWVURObmFUQU1tNmdYUnpCbXQwcEE3VlEycmxoYzBibVFYTVFuUHJPa05PYzZDaUlZSFdCQ3FCTWtNWTRtRXhZQWxvMTlsOVRtczdXYlQ5ZEEvVnJUdDlCaXRXMVhRc1F5SjY2NVpQSFVIenM5aWd4THhCb3lyZ1FJNEh2UUJ6S1p3UVZtQTVEeTg2eVlxd2ZJV2RPSUZNSElDc2QwRFFUVlloelZYZ0UxQm1BVnp6RWFBSTRFYVl6L1lES2s2RnpwWGNNSFBQa3puS0NDdHA5b2ZlWnlBd0NGeWlBa0NtZXlSMUxxZFhQV1kyUU5tSjVES2hEdFlnUGJZa01YWi80dEZpQ3VBQXo5Qk00UisvMFkybjdPTGRjZEJLamtveVFCak05QTFSQmJVaXl5dW43QzdqbDRMVDFwanpDN0FZQWhtUEVFd2tLQnFJRHNFQzc4STlxYzFqRWVFK0I1MzBXbUZYMTQybXU2cWMvNndBeGx3QVFZSXFneGpIVmE4OHFKd3hVbXJ3bW1QUGx5L2Vxb2REeVN6NVhValltM0ZpcmFXeis0V1FTS1pFVnFnaXNNRVRhT09qR3lvYUhmRmNORkdsQmtMTERFTGcreC9IY3cvVWdRN0tyc2lRZzRxWkhtMjBlNlcyWnh4U0xkcHZKMmQrd3JzOVRsRExBMEdrVVUxZHpRVHU2RGlHSkxOWTN3V3RBME1wUHVCUzhIT0JZRUU4NHQvUXRINk9LdVhRZjlSOFBaVGFZK3NZdmIrQllZek1QS2tmUlRsUG1JOEh4ek1RQWIxNE1zRXU1SlEzSUw3eTRpRDgwaGpzN2hWVE84QjkxdG90MnBTVE1oQUJqU1EvWE1VNVZmQmQ3TTQyRUlJbDdGbTVSeWpKWHppejZDdXR2UGNOMlI2L1VUVGg4WDlINmZWK1J1cUdhQS9UcTUrZ2w0RnFmVU5Mdno1L2FRQ0pBNUtKbG9XN0dRelF4SW1ZK2o2MW9ZanVOYk4yRGNMR0ppQmVKd0JKVEIwUVFyVzNiREMvcUFzd3B1R3RTWE1PY2pFZmhrZG9DUEFYV1BITEV2dm5lOWpjajVpQWVlN2hLaHFlOGJ4YThMN1d1dmlLZmZkblIvKzVqMzYwbk9lVHBoTWlneEFZSlY0YW94V0ZvVEtsVUVHQm5JSTBYN1pqSmNIVkFtYjJEL2pmemJSc3U4b1dkK3p1c2tnaS9ZZys1MmpJZDZKR1dZUWdleUJQWlhPM2RBTkZ3ZlJkVEVtK1R0YXBSOFJ6SjZSM2VoMHdmWTNmR2JmZWJkZGMrekxWbEZySTRPcURXcUR3QUtnQThCYndmOG5LUVZDNjFOVU01OWgxU1MwT3RBZnZaaWk5UUpNc0xodEdja2dObk5RL2pMS2QwQThoNUFYcVB0L0Q5MVBFRk9tR1hZSmNSbGlpVGFqWmdyM2FiSmRoL1JPeEcraFBFV0ljeWk4SDVwM0kxK2ticUEvL0IzV3JvVTdiempBby9mRDFCR3c3YlpQTTZ5T3BDak9vYW4rbGY3c0IybFBRUVI2dTA5Z1pPUmtIREQ3SnRVUXFpR1BTUmFZREdaUEZvY1p3a3lyK3hXL0dRd3JqRUk4cmhXTVpZS1Z3T2RkZk1oZDU4VEMzcmxxTXB4ZnUyZ2FVUVNqY3QwV3NGY1gwaXVhYUpmS1JSYTBJcU5sTjM1ZzZQNnpMbjBPN0NHRG84R2VFWU05blJERzZMblB6dWMzYlp6aW9lWkFYcWJ4c0sxVmhPWERTcGpaQmFYQ1I4ejBCb2M1bHJpelBKcTl2U3p0MGlvVE95MWpVR24yMFdtL3U3M0J0cmZhM0QrWXRaT3pZRFRaYTNwVm1CczI5cnV0a3NyTWtCaFBRYis0dmgxK1R6QmxCbG02eTR5M0oyT0YwQmFMUnIyWVNTVjNQYmpxS1YrYm1WdjNVOFRla1pnRDhkbTQzMDNPRUFPWS9SdVI2Mm0xQ3RBODFYNElVOUJVbXlsYjc4ZktaZVErTEgveVpSVERXNm1iL2VEVGlMZVQycU1NRm9iTTd4NnkraFRJZmpUVy96Z3huWXNERmk2aUdaNkM2ZDlvcFl6eHh6UzZpbVp3QkdPajkxT0gyL0RnWklkVytmc1U2ZTIwT3JEbm9ST3BkU1duUGczV2JOcEh0cmV4c0RCQ3F6WEh5Q1EwRGlIQi9QUkd4aVpYWVBWZWN2TVFNcjVmR2huVitvVjVPeTFFRG5GQTJIR2x3bHVpQWNaaHhpRXU3VFhaZlVMSGhFS1hFM2hhNWF5aWhtaEdBOVJaLytUR2I3am43OGo5RVN4ZUhDd2NEMktZUlRBcmtvWG51UGpKQUgyRHRvS2xnaVV5V1BSTEp6djZoMWdFRnFmWi84aDIvYzBKeDNOcVVaSnlBMlo2aGRBV0kveXJSTGRUOEV6SE5zdWcwektpYVdlS2VnbkdMUU1wRE9hNWNpVFl5YlVMaTJiZE12NUduWFdoWVZlRHVtWjJ0c3hPRzQxSzJhR1czU0RwSlJZMElOaDVZQWdEQndMM3JJcjdGcWs0RFV0Z0JqRyttZXgzSW4wUk04aUNmak5nY0dEQTdDT1FhNUM5aUZpOEQxdFlqOWNnUVdmaUV1cnA5K0xWSDVIQ3ZaZzUrQno5UGl6MGw3R09YNEQ4RmhwYmpzUWhSaUlXNzZZWi9nSXAzb1hVWU0zMXBCTG01MkZRUVh0cVBhM3d2NUMvRkRPWW1ZYlRudjNieFBZT2Vnc2ZZZDJ4TUt3eWcycWVsajJiT2grTDZ5OW90MFJhZlJHNUJ1VnY0SG9ZeFBkTHV3OXczbmhiSFhjd1FJSWlRcEZnV0FsM3NNQVE4WWpnOWliN3JrUVlpWVU5SDdOMUxoRUVqWERROVl0RGYzODBQdE5xQmM5QUkrMEkyWDhwcFhDNXNHTWRJUWx4U0JTTUdsQ1lNV2cwYmRhOHZvVSs3ZG53REowSWV3N29ZMnNhZjlycWtmaHp2VmtubTh6Z3pHRGhUQUVSRVlOUlpkRWZhdXRZbDFlbnhIV0d5QWZjTGR0Znh6RjdWdG0yOC9wOXNTU21aT2U0Y3c0WUJ6bEdQd3QzLzVjUXdwc3d0ZzFySm1JUm5obUNnYUFUS21ZMGRkdm45VHdvT1F2bU9VUmFUUXlYSS84WThGVmNEekIwR002dll6ZzRoYlhIUDVNbVA1TzhXQklUaDVoQk5ROTBmb0d5ZlNHZXZ3aTJDMjlFZC94SXl2WUZEQmVQQmtwQ0FuR1laN0I0Rm1YN004RGxvT3N3N1NhbWtybitNWGo5RkxycGVlREgwVGlZZ1dkb2pYYW82L2NTZURiRDNxMWtiMmlYeCtQMlhGS01pSjhtMkRpeFBBMDE0TnhNdGxtTUowamI5dG5aWnh4bkRPZmtCQlFDdzJHamhjVkswMld5bmdWbHllWXhUSEJjQ3VFQ0M0eldXVm5pM21TNnJ3amNPWmU1dnNxNk9zcjJTZUl4QnBpNGJ1RDV4UUc3TEptOTBNRlNNQ1J3aVNMU202bjFqd3VWM3J1eXhjMHNrVVJyTXREcEdpZE1zWkNDL2FxeXp3cTlNa1VyekkxR0FveGEwRTdhNDVXdTdBLzFKMlBkY0Q4Q0JLcEV1OVNPbk1QTDk4M3o1eE50UFNzUkdHWW9Ba2pnRWdtL1o5OVFIeTRqbDNlRDdSOVVqbUFDT0JXSlE4VGlQbHYrMmZ0MTNCYkU2WVFhQ0RYdWh0a2FpdUxOb05lUXduNUdDcU5ZUHNteUk4YUlSYUx1UTY0YlFpRVFoeGxnRWV4b1RLL2pvSnloMVlHUlNSak1DMUVUQWsra1FFeGJVSDRYaEJrSXM3aEtwcFl2dzJ3RXIxbmltRFdBRVNJTWVtQTJTb3pQUi81OFlvUUV1QUNEWUpjZ0IzT1dPSEFkUWZ4N2FmUHE4TUZxVVovRWFFQUt3Ulo3ZmVZWEt5MGV1ZEt5R3BzYVZrekdTTnRnQk9USXBwdEdNMkFMS1hFQW1IZlJ1S0JnaWZGRUJsbjZsc1Ava091S1lQYVVvZXVvRUd3WXBIdnF4cjllSzl6a01EUytUelNzTURvSkF1ejJyRGNPaC9udktzVm5XTkR4TFFpWXB0MTFpekpmazdUVnpES1BNU0FBQmlIdzRONDV2ZVRoUGY2VFc5YnlsTEpndzZEQ3pOaVpUTmVZK0hxV0hoTEc5RUpOM1lpVTdNQklhYThSZ1NBbEVvdGZxSjkxODEzOTQxZlE3YitTUU1aVkFZWmttTFdSdWhodHlnUWgxQmlMVklzRGpFeElnUE5FRFFnREVwQUlCcmx1eUUyRG1UQ1dpQitnSmdBZGpCSE1FcEtJY1FqMGFPb2haZzRZanpHV3lKQWlVQ0FIVVFNTkIwa1JjRVFiYkJhNGlSL2kvd0gzRDVQTXBkMnQ1UUFBQUFCSlJVNUVya0pnZ2c9PSJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDE5LTA5LTA0IiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJFeGNlbHNlY3UgZVNlY3UgRklETyBTZWN1cml0eSBLZXkiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlUyRjEwMDAyMDE2MDYwNzAwNSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4wLjEiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMC4xIn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAxOS0wOS0wNCJ9LHsiYWFndWlkIjoiYjZlZGUyOWMtMzc3Mi00MTJjLThhNzgtNTM5YzFmNGM2MmQyIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiJiNmVkZTI5Yy0zNzcyLTQxMmMtOGE3OC01MzljMWY0YzYyZDIiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiRmVpdGlhbiBCaW9QYXNzIEZJRE8yIFBsdXMgQXV0aGVudGljYXRvciJ9LCJkZXNjcmlwdGlvbiI6IkZlaXRpYW4gQmlvUGFzcyBGSURPMiBQbHVzIEF1dGhlbnRpY2F0b3IiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQjJEQ0NBWDZnQXdJQkFnSVFHQlVyUWJkRHJtMjBGWm5Ec1gyQ0JUQUtCZ2dxaGtqT1BRUURBakJMTVFzd0NRWURWUVFHRXdKVlV6RWRNQnNHQTFVRUNnd1VSbVZwZEdsaGJpQlVaV05vYm05c2IyZHBaWE14SFRBYkJnTlZCQU1NRkVabGFYUnBZVzRnUmtsRVR5QlNiMjkwSUVOQk1DQVhEVEU0TURRd01UQXdNREF3TUZvWUR6SXdORGd3TXpNeE1qTTFPVFU1V2pCTE1Rc3dDUVlEVlFRR0V3SlZVekVkTUJzR0ExVUVDZ3dVUm1WcGRHbGhiaUJVWldOb2JtOXNiMmRwWlhNeEhUQWJCZ05WQkFNTUZFWmxhWFJwWVc0Z1JrbEVUeUJTYjI5MElFTkJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVzRllFRWhpSnVxcW5NZ1FqU2lpdkJqVjdER0NUZjRYQkJIL0I3dXZac0t4WFNoRjBMOHVESVNXVXZjRXhpeFJzNmdCM29sZFNyam94Nkw4VDk0Tk96cU5DTUVBd0hRWURWUjBPQkJZRUZFdTloeVlSclJ5Snp3Ull2bkRTQ0l4ckZpTzNNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdEZ1lEVlIwUEFRSC9CQVFEQWdFR01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lESFNiMm1iTkRBVU5YdnBQVTBvV0tlTnllMGZRMmw5RDAxQVIyK3NMWmRoQWlFQW8zd3o2ODRJRk1Wc0NDUm11SnF4SDZGUVJFU05xZXp1bzFFK0trR3hXdU09IiwiTUlJQjJEQ0NBWDZnQXdJQkFnSVFGWjk3d3MySkdQRW9hNU5JK3A4ejFqQUtCZ2dxaGtqT1BRUURBakJMTVFzd0NRWURWUVFHRXdKRFRqRWRNQnNHQTFVRUNnd1VSbVZwZEdsaGJpQlVaV05vYm05c2IyZHBaWE14SFRBYkJnTlZCQU1NRkVabGFYUnBZVzRnUmtsRVR5QlNiMjkwSUVOQk1DQVhEVEU0TURRd01UQXdNREF3TUZvWUR6SXdORGd3TXpNeE1qTTFPVFU1V2pCTE1Rc3dDUVlEVlFRR0V3SkRUakVkTUJzR0ExVUVDZ3dVUm1WcGRHbGhiaUJVWldOb2JtOXNiMmRwWlhNeEhUQWJCZ05WQkFNTUZFWmxhWFJwWVc0Z1JrbEVUeUJTYjI5MElFTkJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVuZkFLYmp2TVgxRXkxYjZrK1dRUWROVk10OUpnR1d5SjNQdk00QlNLNVhxVGZvKyswb0FqLzR0bnd5SUwwSEZCUjlTdCtrdGpxU1hEZmppWEF1cnM4Nk5DTUVBd0hRWURWUjBPQkJZRUZOR2htRTJCZjhPNWEvWUhaNzFRRXY2UVJmRlVNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdEZ1lEVlIwUEFRSC9CQVFEQWdFR01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lRQzNzVDFsQmpHZUYreEtUcHpWMUtZVTJja2FoVGQ0bUxKeXpZT2hhSHY0aWdJZ0QySllrZnlINVE0QnBvOHJyb08wSXQ3b1lqRjJrZ3kvZVNaM1U5R2xhcXc9IiwiTUlJQmZqQ0NBU1dnQXdJQkFnSUJBVEFLQmdncWhrak9QUVFEQWpBWE1SVXdFd1lEVlFRRERBeEdWQ0JHU1VSUElEQXlNREF3SUJjTk1UWXdOVEF4TURBd01EQXdXaGdQTWpBMU1EQTFNREV3TURBd01EQmFNQmN4RlRBVEJnTlZCQU1NREVaVUlFWkpSRThnTURJd01EQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJOQm1yUnFWT3h6dFRKVk4xOXZ0ZHFjTDd0S1Flb2wybm5NMi95WWd2a3NabnI1MFNLYlZnSUVrekhRVk91ODBMVkVFM2xWaGVPMUhqZ2d4QWxUNm80V2pZREJlTUIwR0ExVWREZ1FXQkJSSkZXUXQxYnZHM2pNNlhnbVYvSWNqTnRPL0N6QWZCZ05WSFNNRUdEQVdnQlJKRldRdDFidkczak02WGdtVi9JY2pOdE8vQ3pBTUJnTlZIUk1FQlRBREFRSC9NQTRHQTFVZER3RUIvd1FFQXdJQkJqQUtCZ2dxaGtqT1BRUURBZ05IQURCRUFpQXdmUHFnSVdJVUIrUUJCYVZHc2RIeTBzNVJNeGxrenBTWC96U3lUWm1VcFFJZ0Iyd0o2blpSTThvWC9uQTQzUmg2U0pvdk0yWHdDQ0gvLytMaXJCQWJCME09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUZBQUFBQVVDQU1BQUFBdEJrcmxBQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQkhacFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR3L2VIQmhZMnRsZENCaVpXZHBiajBpNzd1L0lpQnBaRDBpVnpWTk1FMXdRMlZvYVVoNmNtVlRlazVVWTNwcll6bGtJajgrSUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWtGa2IySmxJRmhOVUNCRGIzSmxJRFV1Tmkxak1ERTBJRGM1TGpFMU5qYzVOeXdnTWpBeE5DOHdPQzh5TUMwd09UbzFNem93TWlBZ0lDQWdJQ0FnSWo0Z1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNGdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlnZUcxc2JuTTZlRzF3UFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIaHRiRzV6T25Cb2IzUnZjMmh2Y0QwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOXdhRzkwYjNOb2IzQXZNUzR3THlJZ2VHMXNibk02ZUcxd1RVMDlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl0YlM4aUlIaHRiRzV6T25OMFVtVm1QU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2YzFSNWNHVXZVbVZ6YjNWeVkyVlNaV1lqSWlCNGJYQTZRM0psWVhSdmNsUnZiMnc5SWtGa2IySmxJRkJvYjNSdmMyaHZjQ0JEUXlBeU1ERTBJQ2hOWVdOcGJuUnZjMmdwSWlCNGJYQTZRM0psWVhSbFJHRjBaVDBpTWpBeE5pMHhNaTB6TUZReE5Eb3pNem93T0Nzd09Eb3dNQ0lnZUcxd09rMXZaR2xtZVVSaGRHVTlJakl3TVRZdE1USXRNekJVTURjNk16RTZOVGtyTURnNk1EQWlJSGh0Y0RwTlpYUmhaR0YwWVVSaGRHVTlJakl3TVRZdE1USXRNekJVTURjNk16RTZOVGtyTURnNk1EQWlJR1JqT21admNtMWhkRDBpYVcxaFoyVXZjRzVuSWlCd2FHOTBiM05vYjNBNlNHbHpkRzl5ZVQwaU1qQXhOaTB4TWkwek1GUXhOVG96TURveU55c3dPRG93TUNZamVEazc1cGFINUx1MklPYWNxdWFnaCttaW1DMHhJT1czc3VhSmsrVzhnQ1lqZUVFN0lpQjRiWEJOVFRwSmJuTjBZVzVqWlVsRVBTSjRiWEF1YVdsa09qSkZOekZDUmtaRFF6WTNSakV4UlRZNU56aEVRVGxEUWtJMk5EWXpSamt3SWlCNGJYQk5UVHBFYjJOMWJXVnVkRWxFUFNKNGJYQXVaR2xrT2pKRk56RkNSa1pFUXpZM1JqRXhSVFk1TnpoRVFUbERRa0kyTkRZelJqa3dJajRnUEhodGNFMU5Pa1JsY21sMlpXUkdjbTl0SUhOMFVtVm1PbWx1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2TWtVM01VSkdSa0ZETmpkR01URkZOamszT0VSQk9VTkNRalkwTmpOR09UQWlJSE4wVW1WbU9tUnZZM1Z0Wlc1MFNVUTlJbmh0Y0M1a2FXUTZNa1UzTVVKR1JrSkROamRHTVRGRk5qazNPRVJCT1VOQ1FqWTBOak5HT1RBaUx6NGdQQzl5WkdZNlJHVnpZM0pwY0hScGIyNCtJRHd2Y21SbU9sSkVSajRnUEM5NE9uaHRjRzFsZEdFK0lEdy9lSEJoWTJ0bGRDQmxibVE5SW5JaVB6NDc3SlhGQUFBQVlGQk1WRVgvLy84RVZxSVhaYXZHMk9vcWNMRzJ6T09rd3QwQlNKdHFsY1hWNHUrYXV0bFdoYnprN1BVQU1ZOUhjcktqdE5icThmZUFsOGFCb3N6ejl2cGRqc0dHcXRGM244dVRzTlNacGM2SnNOVDUrdjB4WUtudThQZmY1L0w0OGZnL2ZyaWN6SmdZQUFBREFFbEVRVlI0MmtSVUNaYkRJQWpGWFpPWTFUYXROYzM5Ynprc1NZYzNyNE1FNGZNQkFhRDZ6bDh5LzlUT2dldDhkNWpmTjc4YndNL2REQ1JwUjUyMXpYZm9qSEowNUlJeWhCQVVTVkFPTmRHekJZdDJmN0tGcmZrSmFBa0hoOUZaaGNEWEhSa1RLbzlNTGloR2FhdkltblYzcXlFWDBFcHJnei80RHdVRDdrQ0hSbmQ4UUZONDNHbzRVVm1ERGd6YTR3MjdvaXpkQTIrY0srdXVVcGpqbzIreHdjLzQyVzUweDVMR1llREJzUjBIVkl4NXg4aUY2MENibGJURUVrRnIyN2JOREJVVlNxMU9LVlBiRTYyYjNFSDhGcUJnNU9PT0V1YzJ0OFpKaXFNT3VHcCtjS2pnN3dWR2Nlb3pxTjRweGdWUFFrakZZZ2JWSktEVWhEQ2pZcmF3UDVxNEVUZ0M5ZklNUkh0aXRwUWNDdkpPRUxjYk1zUWduY2lSa2xqcHlRanZHNDRqcUJVRVRGaUJpMVBFSXlla096c1crVHk1Y0xIb3M1UitkTVMxTHRTU3hmM2dRSGN6UjJDSTRnTU5wVzRJUkExUU1hNnRKNCtDNnVIdUdFOG1OREl5RnFnL09QL01NVXVlUzZJcThTOTBkQWVCSlNFeS9xS2tLK0JOd3o4Y1lZNGpiNUo2dTRpV0NJMkIxWjU2TFc1a0VjNGhrZE1wc3ZVQzU1ODVTWDBRdWJjZ05xeWZnREZFY1R0KzQwLzBTNU54MHdhQ3czT0trY09iQTVJbjBBWXAwMXBqancybjYyNlVEanRId2EyOGlIdVRLcXRydityZVc0MU5aNmlHbHI3dXVMSkNma0Z0Y3RjRzA0c2dtMWVOUytaYURucGFURXJHb3lYNUpLMmlNejh4czBuT3dXR2NQRE40OXFhQ2Q0YnpKb3pEWm0vYUJLK0Vvekx3K1hoTkJpWXdIZjBzaU91MVhQa0cvekt3dnFZS2NmU3dERWNIL29VZTA3ZXMvV1E4ckl5ZzJET1hqOHRqa1pkdURCL2I4aHpEbGxNTU9DUzVCRW5kNTM0Zjh0aTNVWmM0a01zM3hMeWFmTVNzSmhkRzhYUHFqTms1dEFnTzI1ZmVLQ2huVmREai9KMEZNa09zVS94TUJ2MHdGaFllRUdmVkgxM2Z1RFUweURGTGE0ZmM3Um5XSEJmdVRGVjJ0RW1Od2FkYzdhYzNVWTJqZkJsN0hUMzZmZTM0aVFPNW1OQ0ZGQlcwN0tqUGdxaE9MVTAxdlo4UHVlWjJKQ2xGWk44amtVczY5dWthOWVQcDYrRWZMNEFGNStOeXdTYmlySHRjQjhNbC9na3dBRWprSzY0S2pIUGVBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMV9QUkUiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6ImI2ZWRlMjljMzc3MjQxMmM4YTc4NTM5YzFmNGM2MmQyIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6dHJ1ZSwidXAiOnRydWUsInV2Ijp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWV9LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxXSwiZmlybXdhcmVWZXJzaW9uIjoxfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMTgtMDktMjkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJGZWl0aWFuIEJpb1Bhc3MgRklETzIgQXV0aGVudGljYXRvciIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMTgwOTI5MDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjIiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMiJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAxOC0wOS0yOSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIxLTA3LTMxIn0seyJhYWd1aWQiOiJlZDA0MmEzYS00YjIyLTQ0NTUtYmI2OS1hMjY3YjY1MmFlN2UiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6ImVkMDQyYTNhLTRiMjItNDQ1NS1iYjY5LWEyNjdiNjUyYWU3ZSIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJTZWN1cml0eSBLZXkgTkZDIGJ5IFl1YmljbyAtIEVudGVycHJpc2UgRWRpdGlvbiJ9LCJkZXNjcmlwdGlvbiI6IlNlY3VyaXR5IEtleSBORkMgYnkgWXViaWNvIC0gRW50ZXJwcmlzZSBFZGl0aW9uIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NiwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9LHsibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJlZDI1NTE5X2VkZHNhX3NoYTUxMl9yYXciLCJzZWNwMzg0cjFfZWNkc2Ffc2hhMzg0X3JhdyIsInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NiwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NiwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlEU2pDQ0FqS2dBd0lCQWdJVVIzOG1xMjZTZjJzelZWMkJkRzZXRU43a3VXVXdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFSWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFOWTBXYjlvUG9Sb0tvUXlXUGFKcHoxMXZyV1RnNnpUdG1OajJWb0tSbnl2S0dScXB6YjgzdzVsNllBOTZVWWtZQkRRUDBpbE8yRFBlNndXcVZSNXpEZlJ6ZGNIOGJoK0w3ZEdHdmFlNmhSVFpoa0ZrQ3BYRHM0SGNja25yRGY4RkNsSjdIZTM5SmY0Mi9HMVFtMnp6OVdXbXJQWHRnaUsveDA1R2pzUWZHdURHMXpmNVFUVVVpZThsd3ltSzNUZmRPdk5lZUpBQVBlMnBuN0l0ZlJiK3JWck5XaUR6bFJuMnZObloyd1BvNHdIL1dKNmRoWFpHK3JNV1QrYTZCb2NnMVVmSXc2a2R1bkc0YlRwWnpzdmFjRll5UjBtcGYrRGVPbnBTV0FteXdKV0h2VGxmMllYeEZ5ZVhjVEFDZFFsY01OR0oyVmhaUTQ4eHRQNS9SQlAvOGtDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNoeTQyb2tpcWNUUzFpcWEvSFJXamtCbjRIL01COEdBMVVkSXdRWU1CYUFGT3EzUXBDZURIdGtldHRVZkFPNmZFNmYyS0ZoTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBbitSSElQYnRNRUROZFQxZzhIL1JpdEFrVWRMZ0F0MXRXR1dubGo5a25idjQvNEdsWDdDOXA0NWVmUE85L2FaTDZPVjFYUktCaTZLbXRCVzVLN251WUVuTXgvNUJxQlNiTFQ3cmhkdUM0OVRCZU1iOVBIZFhzVGxTVk5ZZWZyMWRHaWRyNGoweFZCUUxiMXJrbkRBYmRXRHpLZnZuYXlLTzhGcndlN0h4ODQzTUcvckorYzBYcnVVdmJmVlRDSExpSVdoTTdvTkRoTDh4b2I2eFVvOUtMS2NTTCtJdFlzTzMvOVdiOFE5R2pzcUw0RlhzRGNHMVNhWWg3S3BmdU1tT2l4cXpKWk8ybklpY1BZUmcxSTJTdWlVZllPNzB0bWRIY2JsK2tTUW1TWXQ3cnE0dmlJTGcyR3gzajlySVR1V1RqYmFVYVNTUXhnT21NU0h1eXpNQUMiLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVRuYmJHSVIyTkh2enFJS0ZBZVF3RzFYQmlzMHdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFRWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPc1hqM2swNEJhbjRUWWR0WktxRC9PUEp4eUR5YVBtQ0JVRlVpYVpJZ1R0ZVpuajNYMjVEaGdwWlpYc0M0RDB5ZEljcmxBNndOVUluT1JML0w5ekJiVEVJTUFWTUdvNmc3VUtBbWIyTUY2QUhibmhZSmQ5ZWlrdXBWTldTaEhOWU5jNEdCZE8xWU42QWZVcXZKaEhiZTNWNFNOTVBtQlJFS0pQVno3VGh3Z21nZ1RlOFdzMkswL3dzcXYyd1NFN3BiQ0JzVVpoSVg1MWJaTTNwcUR3SlBUbVJGRXZ0MC82dEc1ZU84RjNqMTRPWHFmRWhtam4xVnZ4S0RZUU9MWkF4Q3d3Z0MwUDRDZGZXdjN5OFBTUjhJMzU0aE8xWStHek5qdklxWDM4TktMeXd1SVlIRmVyT3hObHhFTUJ2RmhZQnVSdVlBa2tnVWFQcU42VUJoc0lMcnNDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNDb1JIaGl5Tm5iblhSV0lMNlpCWG9CWDlZVE1COEdBMVVkSXdRWU1CYUFGQ0FvVUNFYnBGcGI2RlBMblozRjVQeHNMM29mTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFDUUZhZkpJMS81V2c5Q0VFaW1FMVJQNTRSZ1F3VE5UT09Rc0xBQ1RlK3JJdGxGUXpDOVpEaHJWODI4eVg3anp5K0FBc3AzaXpLN1QxdGgyZGw3bSt0dTBzdzJQYS9vbGMwMm50NlB5SXczNDhnYUh6aEkxKzBLRTQ1cXh2RkRlTDJsTXhiUGZDWXZ5RUVhWXpqaVFFTFU1OTUxcFhHV3lLTWEvNGZMdE8rWktPWGhNdVZlcTRyWERQSTU0VzZKSE9pQWFpS2Rpdys1ZTNjMmt0L2pGSVF0TTZ2TVhnOUxORnpkakVUTnQyMFZYOVFldlJwRlpmdWNNRzl3Q2FRRG9GbFB6cFRNSktoUGV2L2ltSm1aWWhLZnIwbExjZW10cWpJeExBb3FaZE9ZZkhCZzYrdkFjZFBJL2lhdUdwVUF2N1grVUtObUR3aloyQmFINHNMd2hCMm0iLCJNSUlEUGpDQ0FpYWdBd0lCQWdJVVh6ZWlFREpFT1R0MTRGNW4wbzZaZi9iQndpVXdEUVlKS29aSWh2Y05BUUVOQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU1aNi9UeE04cklUK0Vhb1B2Rzgxb250TU9vLzJtUTJSQndKSFMwUVpjeFZhTlh2bDEyTFVoQlo1TG1pQlNjSVpkMVJueDFvZDU4NWgrL2RoSzdoRW03SkFBTGtLS3RzMWZPNTNLR05MWnVqejVoM3dHbmNyNGh5S0YwRzc0Yi9VM0s5aEU1bUdORDZ6cVljaENSQUhmcllNWVJERjRZTDBYNEQ1bkdkeHZwcEF5Nm5rRW10V21NbndPM2kwVEF1Y3NyYkU0ODVIdkdNNHIwVnBnVmRKcHZnUWppVEpDVElxK0QzNWh3dFQ4UURJdituR3ZwY3lpNXdjSWZDa3p5Q2ltSnVraFl5NktvcU5NS1FFZHBOaVNPdld5RE1UTXQxYndDdkV6cHc5MXUrbXNVdDRyajBlZm5POXMwWk93ZHdNUkRuSDR4Z1VsNVpMd3JyUGtmQzEvMENBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUI4R0ExVWRJd1FZTUJhQUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUU13RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCRFFVQUE0SUJBUUMzSVcvc2dCOXBaOGFwSk5qeHVHb1grRmtJTGtzMHdNTnJkWEwvY29VdnNyaHpzdmw2bWVQTXJiR0pCeUoxWG5xdUI1c2djUkVORnhkUUZtYTNtaW84VXBmMW93TTFacmVYckowbUFERzJCcGxxYkpueGl5WWErUjExcmVJRlRXZUloTU5jWktzRFpyRkF5UHVGakNXU1F2Sm1OV2U5bUZSWUZnTmhYSktrWEliNUgxWGdFRGx3aWVkWVJNN1ZvbEJObGxkNnBSRktsWDh1c3Q2T1RNT2VBRGwyeE5GMG0xTFRoU2RldVh2RHlDMWc5K0lMZnozUzZPSVlnYzNpcm9SY0ZEMzU0ZzdyS2Z1NjdxRkF3OWdDNHlpMHhCVFByWTk1cmg0L0hxYVVZQ0EvTDhsZFJrNkg3WGszNUQrV1ZwbXEyU2gveFQ1SGlGdWhmNHdKYjBiSyIsIk1JSURTRENDQWpDZ0F3SUJBZ0lVVWNtTVh6UklGT2dHVEswVGIzZ0V1Wllaa0JJd0RRWUpLb1pJaHZjTkFRRUxCUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JCSURFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURtNTU1YldZOVdXK3RPWTBySVdIbGRoK2FOYW5vQ1pDRmg3R2szWVpyUW1QVXcwaGtTRzZxWUhRdFArZlp5UzMzVkVydmcrQlFxbm11bWdOaGZ4RnJrd0VaRUxlaWRCY0M4QzRBZzRucXFpUFdwenN2STE3TmN4WWxJbkxOTEZjWlkvK2dPaU42Wk9UaWhPNS92QlpNYmo5cmlhQWNxbGlZbU5HSlBnVGNNR2FFQXlNekVNTnkybm02RXArcGpQNWFGNmdpMjF0L1VRRnN1SjFqMlJqL3luTS9TZFJ0K2VjYWw1T1lvdHhIa0ZiTDl2dnYyQTJPdjVJVFpDbHc0Yk9TOW5weXBRaW1PWjVRQVl5dG1ZYVFwV2wvcE1ZejZ6U2o4UnFrVkRORUpHcU5mVEtBMml2TFl3WDZsU3R0TVBhcGcwSjg0bDlYMHZvVk4vRnBTNFZDVkFnTUJBQUdqWmpCa01CMEdBMVVkRGdRV0JCUWdLRkFoRzZSYVcraFR5NTJkeGVUOGJDOTZIekFmQmdOVkhTTUVHREFXZ0JUUzd1OWFJbzA2YlZ3amx6M3loZFVtOFNWN2tqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQTRHQTFVZER3RUIvd1FFQXdJQmhqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFZTXpnTHJKTElyME9vdlFuQVpyUklHdWFiaUhTVUtTbWJMUldwUmtXZUF0c0NoREVIcFhjSi9iZ0ROS1lXb0hxUTh4UlVqQjRDeWVwWWV2YzNZbHJHOG83ekh4cGZWY2FvTDVTZXVKa3pIeEtuNGJUYVNwOStNdndhbW5wNjRrWk1pTmJGTGtuZlA5a1lLb1JIa01XaGVSSjFVc1AxejRTY21rQ2VJTGZzTXM2dnFvdnFqV0NsRnNKcEJjc2x1WUhXRjdiQkoxbjRSd2crQVRFb3BZNElnR3Y2WnZ3YytBOXIrQVQyaHFwb1NrWW9BbCtBTll3Z3NsT2Y5c0plMFYrVEE5WVkvVWxhQm1QUFRkMC8vcjl3dmNlUFdaa1BqS29BQy96VU5oZkRiaDRMVjhHSHMzbHlYMlhvbUwvTE5jOEpZenlJYURFaEdRdmVvUGhoL3RyMWc9PSIsIk1JSURTRENDQWpDZ0F3SUJBZ0lVRHFFUncrNFJuR1NnZ3hnVWV3SkZFUERSWjNZd0RRWUpLb1pJaHZjTkFRRUxCUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURJN1huSCtadkR3TUNRVThNOFplVjVxc2N1Ymx2VllhYVJ0M1liYXhuOWdvZEx4NXN3SDBsWHJkZ2poNWg3RnBWZ0NnWVlYN0U0YmwxdmJ6VUxlbXJNV1Q4TjNXTUdVZThRQUpiQmVpb1Y3Vy9FK2hUWlAvMFNLSlZhM2V3S0JvNlVMZU1uZlFaRHJWT1JBazh3VExxMnY1TGxqNXZNajdKdE9vdEthOUo3bkhTOGtMbXpYWFNhajBTd0VQaDVPQVpVVE5WNHpzMWJ2b1RBUVFXckw0L0o5UXVLdDZXQ0ZFNW5VTmlSUWNFYlZGOG1scUsyYngyejZva1ZsdHlEVkxDeFlicFVURUx2WTF1c1IzRFRHUFVvSUNsT200Y3Jwd25EUkxWSHZqWWVQR0JCLy9wRXl6eEEvZ2NTY3hqd2FIMVpVdzliblNiSHl1cktxYlRhMUt2akFnTUJBQUdqWmpCa01CMEdBMVVkRGdRV0JCVHF0MEtRbmd4N1pIcmJWSHdEdW54T245aWhZVEFmQmdOVkhTTUVHREFXZ0JUUzd1OWFJbzA2YlZ3amx6M3loZFVtOFNWN2tqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQTRHQTFVZER3RUIvd1FFQXdJQmhqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFxUWFDV014VEdxVlZYN1NrN2trSm1VdWVUU1lLdVU2K0tCQlNnd0lSbmx3OUs3SGUxSXB4WjBoZHdwUE5pa0tqbWN5RmdGUHpoSW13SEpneHh1VDkwUHczdllPZGNKSk5rdERnMzVQWE9melNuMTVjRkF4MVJPMG1QVG1JYjhkWGlFV09wem9YdmR3WERNNDFaYUNEWU1UN3c0SVF0TXl2RTd4VUJacTJianRBbnEvTkRVQTdiZTRIOEgzaXBDKy8rTktsVXJjVWgrajQ4SzY3V0kwdTFtNkZlUXVlQkE3bjA2ajgyNXJxRHFzYUxzOVRiN0tBSEF3OFBtcldhTlBHMmtqS2VyeFBFZmVjaXZsRmF3cDJSV1p2eHJWdG4zVFYyU0J4eUNKQ2tYc05EMDVkQ0VyVkhTSklzK0JkdFRWTlk5QXd0eVBtbnliMHY0bVNUenZXZHc9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFmQ0FZQUFBQ0dWcytNQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUhZWUFBQjJHQVYyaUU0RUFBQWJOU1VSQlZGaEhwVmQ3VE5WMUZELzNkNTl3ZVFTSWdTOUFRQVhjRkxBUVppOWZwZVZ6MXRZL1dUWnI1V3hwYzdXNWtuTGE1akkzWjg1c3JTMm5NMnNqdFd3WlM3SVVINEg0eENuRVF4NERBWkY3NFY3dXM4ODV2OS9sSW5CdlZKL0I0UHY5bnUvNW51LzVudk01NTZmekEvUXYwSGIvSXJYM1ZGS1BvNDVjbm00aW5VSVdZd0xGUm1aUVV1d2pGRy9OMWlSSGgxRVowTlJWUnVkcXQxQmQrMm5TS3lTL09oeXMwK2xrM2UvM2tROXF2RDRaVXRhNFZWU1V1WTBlaXB5aVRoQWZvY29PUlZnRHV1dzNxS1JpQWQzcmJjRXRqVGpZSW9mNldhSHNDbXpWUFdDTXgrY2doOHRMcVdNS2FNV3NVakxxbzJSdEpJUTBvT3ptZXJwUXU0ZXNaZ3NPTmtHeEg3ZDBrZHZUVDE3czRPTVU3Vkk4WmhqZ0dhTStBcTlpRU51OFBpZjF1ZHowN013dktXZjhHbFZvQ0VZMDRQQzVXZFRhWFlGYlI4dk52TDUrM0tnZmI1eE5NeWE5UmFtSml5bmFNbEdUVnRGbHI2YmE5dStwcW5FWDR1TXVSUmdqU1lFaHJON3V0RkZlNmxxYWw3TmZrdzVpbUFHSHluUHBiazhWbVkweHN0bnB0bEZDVkNZdHpUdUJOODNRcE1MalR0ZXZkUHpTVW5KN2U4bWtqeFozOWZYYktEZmxkWnFidlUrVFVnR25CVkY2ZlEyaVBIZzRXMTZVV1V3dnpiazE2c01aRStQbjBwdno3SlNldUF5ZXM4bGNwQ21hS3VvL3ArcVdyMlVjd0lBSFdydlAwWUV6aFhBdExBYnNzSGhwN2lHYW12eWlqUDhyeXFyWFVXWDlYb293eHlBdWZOQnJwNDNQT0JGWFpsa2Y4TURSaXFjcHlvd0F3cHV6MngrZld2ei9EdGRlOXNtc3p5Z3RjUjZDMXdiZHpCbDZPbHE1V05ZWTRvR2F0aEpNcmtURXgwakFSU0hBVnMrNXJZa1FOWGIrUWdmUExzUTZnWHlJbnNyZVFmbXBtN1JWRllmTDg2bjFmaVVPa1l2U2hrVVB4dmJ1a3pveTZLMWloTTFobzNYelc2RXZTZlhBK2RwaVdHYVdkK2RvWHpMem1Hd0tZRkxDQXNSQWxQQkFoTWxDRlhVN3RCVVZQcjhIZ1ZjSkhXcStGMDBwbHIrRE1UZHJQNHp2eFkxMWtOTWh4VCtTZVRHZytkNFY1TFFKaXR5VUdKTkI4VkZac2pnWUJaTS9JSS9YQ1RrajBxeURPcEYyQVZRMTdDSWpVcC9EblQxVWtMNUY1Z2RqK3NTMXdnMWdFM2dpZ202MGZDWHpTblBYYnlBUGJJWHYrSURwRTE2VGhhSElTOXNreWhsbU1FNUYzY2ZxQUtocTJDMEU1UEgxZ1lhWGFMUERrWkcwSERKT25LV0hwNTFJMHo1U091eDhlMVdBdVp6ZEhRclRrcDhUbWpYb0krbGEwd0dac3p1YnFiTzNpZlE2QS9XN3ZWU1lzVjNtUjBKS3drS2M0V0hpQmttUjhJM0NDZ0k4N29PTDRxelQ1UCtSVUpCZWpFT2dBUEs4aFlQemF0TStlSVRwMklPOXlUUW1lcm9tUFJ4eDFxeEFjc2lsZS91YlNlRWJjV1FHWUVDZ2hjTFkySHlLam9nakgyNWhNcGpwVXYxT3VnbGk0ZWgyZVJ3ME8zMmJKamt5dUNnTnpnMHZ6bFlNU2lTczB1b280TUc3aE1PakNFYVgxeUZFMG5TdmpCenVUbkVwSzg2WjhJb3FGQUl1Ync4a2c5QXJFYVJFV1NaSStqSDRYYnA2ZzlFOUVuSlQzb2FSekROK01VSkJRREhuNTZhOG9VbUVCdXNPeEJzL041K3RKRWJQa0FGRGo4VUd2T3MvSVd2Y1NnbEdCaHZTNy9GVFlmcFdHWWREWThmUEF4V1NBMzVzVEM0cDQrTG00QWFxSW9QZVF0ZnVmSzZKaDBaaHhsYnNVWE9TbVhOaWZENVpUQWt5RG9mYmJjY2x4bkE4V05BcXhDYlJOeWtoWHhRcGFEdzY3ZlhVWWJzaUcwS2h0djJvZUl2aDhyaFFNWU9jRUFxWEcvZUkrem5nT2M1eXhyOHE4MklBTTFjL0ZMRk9wbHF1NWVGUVhyTVp6R2NWQ2pZYkxXRzVJNEJUMWV1UnJsYnh0Tk90TWl0RERFaExYSUl5bkFBdnVPRVdFM1gzTmRBZnQ5NFZnYUc0MlhJUXQwWlg2UGVDRS9xUUZlOXJLNkh4N1lVNTBLdkg3Zlc0ZlMrcTdLS0JKeHNnZ0JYNXBTQUdoMWpJclZoNXpRNnczUmZhYWhCWG0vYUNiQ1pUakNVRlVUeVdacVc5cDYyTWpKUFhWcU9yUGdNTzROdjc0R2tmK293ZnROVkJEUW5qRkpxSFN3MTdwWHZoV1c1S1pxZS9RNDlOL1VTVENBVldvUVhGSUhCSFhYZTNGUHJVRHN1R0RtdEYvaEhLVEhwZWt4aGlBT1BJK1NKcTZTNkhGNEk5WVd6a0JKVG80NmlVTXpXcDhQaXIvUmlkdUx4S1lzU2tzVjh2TGxPUXZoR1gyWWxSME9CaEJqQyt1L2dFY3ZZMEFwSzdZazQxTnhqUFNRbldGSFRGNjZVcmpnZXZCOEN1NWErbDJ2WVNSUHR1VkRvNzNoaGRNU0huVVg3dFRqc1ZaR3hBbC9XcHRpT0lFUTFnbkwyOW1YNi90UjF0bWxrWWo4VzRYK0NTaldjVURHWTFOcFMvQzdoU0txaU1MTS9sMlFtU1daNzNEZHorZ2lvOEJDRU5ZUFE0NnFua3p3WFVicXZCa3hqVVFzV2ZaRmdidW8zckFmK3dON2pPTzkwK3lueDRQaTNMKzBuWUwxU2NoRFVnQVA0Z1BWLzdJZDFxKzFIU2htdUdrSXFXUlBneXhNRnFQOEhmalRualh3WTViUWZiSmN0Nk9JektnTUhvdEYvSGUxZWdzYXhIU3FHNndmZG1RNXg4TnlURkZxQmNwMmlTb3dIUjN5azUrMzZoRjd2WEFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xX1BSRSIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsImxhcmdlQmxvYktleSIsImNyZWRCbG9iIiwibWluUGluTGVuZ3RoIl0sImFhZ3VpZCI6ImVkMDQyYTNhNGIyMjQ0NTViYjY5YTI2N2I2NTJhZTdlIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibGFyZ2VCbG9icyI6dHJ1ZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOnRydWUsImFsd2F5c1V2IjpmYWxzZX0sIm1heE1zZ1NpemUiOjE1MzYsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6OCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoxMjgsInRyYW5zcG9ydHMiOlsibmZjIiwidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN30seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTh9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi0zNX1dLCJtYXhTZXJpYWxpemVkTGFyZ2VCbG9iQXJyYXkiOjQwOTYsIm1pblBJTkxlbmd0aCI6NiwiZmlybXdhcmVWZXJzaW9uIjozMjk0NzYsIm1heENyZWRCbG9iTGVuZ3RoIjozMiwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjEsInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjoxMDB9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMi0yMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzYsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiU2VjdXJpdHkgS2V5IE5GQyBieSBZdWJpY28gLSBFbnRlcnByaXNlIEVkaXRpb24iLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI0MTIyMjAwOSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTEyLTIyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3Nn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wMS0xMCJ9LHsiYWFndWlkIjoiYjJjMWE1MGItZGFkOC00ZGM3LWJhNGQtMGNlOTU5NzkwNGJjIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiJiMmMxYTUwYi1kYWQ4LTRkYzctYmE0ZC0wY2U5NTk3OTA0YmMiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiWXViaUtleSA1IFNlcmllcyB3aXRoIE5GQyAtIEVuaGFuY2VkIFBJTiAoRW50ZXJwcmlzZSBQcm9maWxlKSJ9LCJkZXNjcmlwdGlvbiI6Ill1YmlLZXkgNSBTZXJpZXMgd2l0aCBORkMgLSBFbmhhbmNlZCBQSU4gKEVudGVycHJpc2UgUHJvZmlsZSkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2LCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH0seyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbImVkMjU1MTlfZWRkc2Ffc2hhNTEyX3JhdyIsInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Iiwic2VjcDM4NHIxX2VjZHNhX3NoYTM4NF9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjYsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NiwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURQakNDQWlhZ0F3SUJBZ0lVWHplaUVESkVPVHQxNEY1bjBvNlpmL2JCd2lVd0RRWUpLb1pJaHZjTkFRRU5CUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTVo2L1R4TThySVQrRWFvUHZHODFvbnRNT28vMm1RMlJCd0pIUzBRWmN4VmFOWHZsMTJMVWhCWjVMbWlCU2NJWmQxUm54MW9kNTg1aCsvZGhLN2hFbTdKQUFMa0tLdHMxZk81M0tHTkxadWp6NWgzd0duY3I0aHlLRjBHNzRiL1UzSzloRTVtR05ENnpxWWNoQ1JBSGZyWU1ZUkRGNFlMMFg0RDVuR2R4dnBwQXk2bmtFbXRXbU1ud08zaTBUQXVjc3JiRTQ4NUh2R000cjBWcGdWZEpwdmdRamlUSkNUSXErRDM1aHd0VDhRREl2K25HdnBjeWk1d2NJZkNrenlDaW1KdWtoWXk2S29xTk1LUUVkcE5pU092V3lETVRNdDFid0N2RXpwdzkxdSttc1V0NHJqMGVmbk85czBaT3dkd01SRG5INHhnVWw1Wkx3cnJQa2ZDMS8wQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQjhHQTFVZEl3UVlNQmFBRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRTXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJEUVVBQTRJQkFRQzNJVy9zZ0I5cFo4YXBKTmp4dUdvWCtGa0lMa3Mwd01OcmRYTC9jb1V2c3JoenN2bDZtZVBNcmJHSkJ5SjFYbnF1QjVzZ2NSRU5GeGRRRm1hM21pbzhVcGYxb3dNMVpyZVhySjBtQURHMkJwbHFiSm54aXlZYStSMTFyZUlGVFdlSWhNTmNaS3NEWnJGQXlQdUZqQ1dTUXZKbU5XZTltRlJZRmdOaFhKS2tYSWI1SDFYZ0VEbHdpZWRZUk03Vm9sQk5sbGQ2cFJGS2xYOHVzdDZPVE1PZUFEbDJ4TkYwbTFMVGhTZGV1WHZEeUMxZzkrSUxmejNTNk9JWWdjM2lyb1JjRkQzNTRnN3JLZnU2N3FGQXc5Z0M0eWkweEJUUHJZOTVyaDQvSHFhVVlDQS9MOGxkUms2SDdYazM1RCtXVnBtcTJTaC94VDVIaUZ1aGY0d0piMGJLIiwiTUlJRFNqQ0NBaktnQXdJQkFnSVVSMzhtcTI2U2Yyc3pWVjJCZEc2V0VON2t1V1V3RFFZSktvWklodmNOQVFFTEJRQXdMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3SUJjTk1qUXhNakF4TURBd01EQXdXaGdQT1RrNU9URXlNekV5TXpVNU5UbGFNQ1l4SkRBaUJnTlZCQU1NRzFsMVltbGpieUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRUlnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTlkwV2I5b1BvUm9Lb1F5V1BhSnB6MTF2cldUZzZ6VHRtTmoyVm9LUm55dktHUnFwemI4M3c1bDZZQTk2VVlrWUJEUVAwaWxPMkRQZTZ3V3FWUjV6RGZSemRjSDhiaCtMN2RHR3ZhZTZoUlRaaGtGa0NwWERzNEhjY2tuckRmOEZDbEo3SGUzOUpmNDIvRzFRbTJ6ejlXV21yUFh0Z2lLL3gwNUdqc1FmR3VERzF6ZjVRVFVVaWU4bHd5bUszVGZkT3ZOZWVKQUFQZTJwbjdJdGZSYityVnJOV2lEemxSbjJ2Tm5aMndQbzR3SC9XSjZkaFhaRytyTVdUK2E2Qm9jZzFVZkl3NmtkdW5HNGJUcFp6c3ZhY0ZZeVIwbXBmK0RlT25wU1dBbXl3SldIdlRsZjJZWHhGeWVYY1RBQ2RRbGNNTkdKMlZoWlE0OHh0UDUvUkJQLzhrQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZDaHk0Mm9raXFjVFMxaXFhL0hSV2prQm40SC9NQjhHQTFVZEl3UVlNQmFBRk9xM1FwQ2VESHRrZXR0VWZBTzZmRTZmMktGaE1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQW4rUkhJUGJ0TUVETmRUMWc4SC9SaXRBa1VkTGdBdDF0V0dXbmxqOWtuYnY0LzRHbFg3QzlwNDVlZlBPOS9hWkw2T1YxWFJLQmk2S210Qlc1SzdudVlFbk14LzVCcUJTYkxUN3JoZHVDNDlUQmVNYjlQSGRYc1RsU1ZOWWVmcjFkR2lkcjRqMHhWQlFMYjFya25EQWJkV0R6S2Z2bmF5S084RnJ3ZTdIeDg0M01HL3JKK2MwWHJ1VXZiZlZUQ0hMaUlXaE03b05EaEw4eG9iNnhVbzlLTEtjU0wrSXRZc08zLzlXYjhROUdqc3FMNEZYc0RjRzFTYVloN0twZnVNbU9peHF6SlpPMm5JaWNQWVJnMUkyU3VpVWZZTzcwdG1kSGNibCtrU1FtU1l0N3JxNHZpSUxnMkd4M2o5cklUdVdUamJhVWFTU1F4Z09tTVNIdXl6TUFDIiwiTUlJRFNEQ0NBakNnQXdJQkFnSVVEcUVSdys0Um5HU2dneGdVZXdKRkVQRFJaM1l3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRREk3WG5IK1p2RHdNQ1FVOE04WmVWNXFzY3VibHZWWWFhUnQzWWJheG45Z29kTHg1c3dIMGxYcmRnamg1aDdGcFZnQ2dZWVg3RTRibDF2YnpVTGVtck1XVDhOM1dNR1VlOFFBSmJCZWlvVjdXL0UraFRaUC8wU0tKVmEzZXdLQm82VUxlTW5mUVpEclZPUkFrOHdUTHEydjVMbGo1dk1qN0p0T290S2E5SjduSFM4a0xtelhYU2FqMFN3RVBoNU9BWlVUTlY0enMxYnZvVEFRUVdyTDQvSjlRdUt0NldDRkU1blVOaVJRY0ViVkY4bWxxSzJieDJ6Nm9rVmx0eURWTEN4WWJwVVRFTHZZMXVzUjNEVEdQVW9JQ2xPbTRjcnB3bkRSTFZIdmpZZVBHQkIvL3BFeXp4QS9nY1NjeGp3YUgxWlV3OWJuU2JIeXVyS3FiVGExS3ZqQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJUcXQwS1FuZ3g3WkhyYlZId0R1bnhPbjlpaFlUQWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQXFRYUNXTXhUR3FWVlg3U2s3a2tKbVV1ZVRTWUt1VTYrS0JCU2d3SVJubHc5SzdIZTFJcHhaMGhkd3BQTmlrS2ptY3lGZ0ZQemhJbXdISmd4eHVUOTBQdzN2WU9kY0pKTmt0RGczNVBYT2Z6U24xNWNGQXgxUk8wbVBUbUliOGRYaUVXT3B6b1h2ZHdYRE00MVphQ0RZTVQ3dzRJUXRNeXZFN3hVQlpxMmJqdEFucS9ORFVBN2JlNEg4SDNpcEMrLytOS2xVcmNVaCtqNDhLNjdXSTB1MW02RmVRdWVCQTduMDZqODI1cnFEcXNhTHM5VGI3S0FIQXc4UG1yV2FOUEcya2pLZXJ4UEVmZWNpdmxGYXdwMlJXWnZ4clZ0bjNUVjJTQnh5Q0pDa1hzTkQwNWRDRXJWSFNKSXMrQmR0VFZOWTlBd3R5UG1ueWIwdjRtU1R6dldkdz09IiwiTUlJRFNqQ0NBaktnQXdJQkFnSVVUbmJiR0lSMk5IdnpxSUtGQWVRd0cxWEJpczB3RFFZSktvWklodmNOQVFFTEJRQXdMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3SUJjTk1qUXhNakF4TURBd01EQXdXaGdQT1RrNU9URXlNekV5TXpVNU5UbGFNQ1l4SkRBaUJnTlZCQU1NRzFsMVltbGpieUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRUVnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBT3NYajNrMDRCYW40VFlkdFpLcUQvT1BKeHlEeWFQbUNCVUZVaWFaSWdUdGVabmozWDI1RGhncFpaWHNDNEQweWRJY3JsQTZ3TlVJbk9STC9MOXpCYlRFSU1BVk1HbzZnN1VLQW1iMk1GNkFIYm5oWUpkOWVpa3VwVk5XU2hITllOYzRHQmRPMVlONkFmVXF2SmhIYmUzVjRTTk1QbUJSRUtKUFZ6N1Rod2dtZ2dUZThXczJLMC93c3F2MndTRTdwYkNCc1VaaElYNTFiWk0zcHFEd0pQVG1SRkV2dDAvNnRHNWVPOEYzajE0T1hxZkVobWpuMVZ2eEtEWVFPTFpBeEN3d2dDMFA0Q2RmV3YzeThQU1I4STM1NGhPMVkrR3pOanZJcVgzOE5LTHl3dUlZSEZlck94Tmx4RU1CdkZoWUJ1UnVZQWtrZ1VhUHFONlVCaHNJTHJzQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZDQ29SSGhpeU5uYm5YUldJTDZaQlhvQlg5WVRNQjhHQTFVZEl3UVlNQmFBRkNBb1VDRWJwRnBiNkZQTG5aM0Y1UHhzTDNvZk1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQ1FGYWZKSTEvNVdnOUNFRWltRTFSUDU0UmdRd1ROVE9PUXNMQUNUZStySXRsRlF6QzlaRGhyVjgyOHlYN2p6eStBQXNwM2l6SzdUMXRoMmRsN20rdHUwc3cyUGEvb2xjMDJudDZQeUl3MzQ4Z2FIemhJMSswS0U0NXF4dkZEZUwybE14YlBmQ1l2eUVFYVl6amlRRUxVNTk1MXBYR1d5S01hLzRmTHRPK1pLT1hoTXVWZXE0clhEUEk1NFc2SkhPaUFhaUtkaXcrNWUzYzJrdC9qRklRdE02dk1YZzlMTkZ6ZGpFVE50MjBWWDlRZXZScEZaZnVjTUc5d0NhUURvRmxQenBUTUpLaFBldi9pbUptWlloS2ZyMGxMY2VtdHFqSXhMQW9xWmRPWWZIQmc2K3ZBY2RQSS9pYXVHcFVBdjdYK1VLTm1Ed2paMkJhSDRzTHdoQjJtIiwiTUlJRFNEQ0NBakNnQXdJQkFnSVVVY21NWHpSSUZPZ0dUSzBUYjNnRXVaWVprQkl3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRRG01NTViV1k5V1crdE9ZMHJJV0hsZGgrYU5hbm9DWkNGaDdHazNZWnJRbVBVdzBoa1NHNnFZSFF0UCtmWnlTMzNWRXJ2ZytCUXFubXVtZ05oZnhGcmt3RVpFTGVpZEJjQzhDNEFnNG5xcWlQV3B6c3ZJMTdOY3hZbEluTE5MRmNaWS8rZ09pTjZaT1RpaE81L3ZCWk1iajlyaWFBY3FsaVltTkdKUGdUY01HYUVBeU16RU1OeTJubTZFcCtwalA1YUY2Z2kyMXQvVVFGc3VKMWoyUmoveW5NL1NkUnQrZWNhbDVPWW90eEhrRmJMOXZ2djJBMk92NUlUWkNsdzRiT1M5bnB5cFFpbU9aNVFBWXl0bVlhUXBXbC9wTVl6NnpTajhScWtWRE5FSkdxTmZUS0EyaXZMWXdYNmxTdHRNUGFwZzBKODRsOVgwdm9WTi9GcFM0VkNWQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJRZ0tGQWhHNlJhVytoVHk1MmR4ZVQ4YkM5Nkh6QWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQVlNemdMckpMSXIwT292UW5BWnJSSUd1YWJpSFNVS1NtYkxSV3BSa1dlQXRzQ2hERUhwWGNKL2JnRE5LWVdvSHFROHhSVWpCNEN5ZXBZZXZjM1lsckc4bzd6SHhwZlZjYW9MNVNldUprekh4S240YlRhU3A5K012d2FtbnA2NGtaTWlOYkZMa25mUDlrWUtvUkhrTVdoZVJKMVVzUDF6NFNjbWtDZUlMZnNNczZ2cW92cWpXQ2xGc0pwQmNzbHVZSFdGN2JCSjFuNFJ3ZytBVEVvcFk0SWdHdjZadndjK0E5citBVDJocXBvU2tZb0FsK0FOWXdnc2xPZjlzSmUwVitUQTlZWS9VbGFCbVBQVGQwLy9yOXd2Y2VQV1prUGpLb0FDL3pVTmhmRGJoNExWOEdIczNseVgyWG9tTC9MTmM4Sll6eUlhREVoR1F2ZW9QaGgvdHIxZz09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWZDQVlBQUFDR1ZzK01BQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBSFlZQUFCMkdBVjJpRTRFQUFBYk5TVVJCVkZoSHBWZDdUTlYxRkQvM2Q1OXdlUVNJZ1M5QVFBWGNGTEFRWmk5ZnBlVnoxdFkvV1RacjVXeHBjN1c1a25MYTVqSTNaODVzclMybk0yc2p0V3daUzdJVUg0SDR4Q25FUXg0REFaRjc0Vjd1czg4NXY5L2xJbkJ2VkovQjRQdjludS81bnUvNW52TTU1NmZ6QS9RdjBIYi9JclgzVkZLUG80NWNubTRpblVJV1l3TEZSbVpRVXV3akZHL04xaVJIaDFFWjBOUlZSdWRxdDFCZCsyblNLeVMvT2h5czArbGszZS8za1E5cXZENFpVdGE0VlZTVXVZMGVpcHlpVGhBZm9jb09SVmdEdXV3M3FLUmlBZDNyYmNFdGpUallJb2Y2V2FIc0NtelZQV0NNeCtjZ2g4dExxV01LYU1Xc1VqTHFvMlJ0SklRMG9Pem1lcnBRdTRlc1pnc09Oa0d4SDdkMGtkdlRUMTdzNE9NVTdWSThaaGpnR2FNK0FxOWlFTnU4UGlmMXVkejA3TXd2S1dmOEdsVm9DRVkwNFBDNVdkVGFYWUZiUjh2TnZMNSszS2dmYjV4Tk15YTlSYW1KaXluYU1sR1RWdEZscjZiYTl1K3BxbkVYNHVNdVJSZ2pTWUVock43dXRGRmU2bHFhbDdOZmt3NWltQUdIeW5QcGJrOFZtWTB4c3RucHRsRkNWQ1l0elR1Qk44M1FwTUxqVHRldmRQelNVbko3ZThta2p4WjM5ZlhiS0RmbGRacWJ2VStUVWdHbkJWRjZmUTJpUEhnNFcxNlVXVXd2emJrMTZzTVpFK1BuMHB2ejdKU2V1QXllczhsY3BDbWFLdW8vcCtxV3IyVWN3SUFIV3J2UDBZRXpoWEF0TEFic3NIaHA3aUdhbXZ5aWpQOHJ5cXJYVVdYOVhvb3d4eUF1Zk5CcnA0M1BPQkZYWmxrZjhNRFJpcWNweW93QXdwdXoyeCtmV3Z6L0R0ZGU5c21zenlndGNSNkMxd2JkekJsNk9scTVXTllZNG9HYXRoSk1ya1RFeDBqQVJTSEFWcys1cllrUU5YYitRZ2ZQTHNRNmdYeUluc3JlUWZtcG03UlZGWWZMODZuMWZpVU9rWXZTaGtVUHh2YnVrem95NksxaWhNMWhvM1h6VzZFdlNmWEErZHBpV0dhV2QrZG9Yekx6bUd3S1lGTENBc1JBbFBCQWhNbENGWFU3dEJVVlByOEhnVmNKSFdxK0YwMHBscitETVRkclA0enZ4WTExa05NaHhUK1NlVEdnK2Q0VjVMUUppdHlVR0pOQjhWRlpzamdZQlpNL0lJL1hDVGtqMHF5RE9wRjJBVlExN0NJalVwL0RuVDFVa0w1RjVnZGorc1Mxd2cxZ0UzZ2lnbTYwZkNYelNuUFhieUFQYklYditJRHBFMTZUaGFISVM5c2t5aGxtTUU1RjNjZnFBS2hxMkMwRTVQSDFnWWFYYUxQRGtaRzBIREpPbktXSHA1MUkwejVTT3V4OGUxV0F1WnpkSFFyVGtwOFRtalhvSStsYTB3R1pzenVicWJPM2lmUTZBL1c3dlZTWXNWM21SMEpLd2tLYzRXSGlCa21SOEkzQ0NnSTg3b09MNHF6VDVQK1JVSkJlakVPZ0FQSzhoWVB6YXRNK2VJVHAySU85eVRRbWVyb21QUnh4MXF4QWNzaWxlL3ViU2VFYmNXUUdZRUNnaGNMWTJIeUtqb2dqSDI1aE1wanBVdjFPdWdsaTRlaDJlUncwTzMyYkpqa3l1Q2dOemcwdnpsWU1TaVNzMHVvbzRNRzdoTU9qQ0VhWDF5RkUwblN2akJ6dVRuRXBLODZaOElvcUZBSXVidzhrZzlBckVhUkVXU1pJK2pINFhicDZnOUU5RW5KVDNvYVJ6RE4rTVVKQlFESG41NmE4b1VtRUJ1c094QnMvTjUrdEpFYlBrQUZEajhVR3ZPcy9JV3ZjU2dsR0JodlM3L0ZUWWZwV0dZZERZOGZQQXhXU0EzNXNUQzRwNCtMbTRBYXFJb1BlUXRmdWZLNkpoMFpoeGxic1VYT1NtWE5pZkQ1WlRBa3lEb2ZiYmNjbHhuQThXTkFxeENiUk55a2hYeFFwYUR3NjdmWFVZYnNpRzBLaHR2Mm9lSXZoOHJoUU1ZT2NFQXFYRy9lSSt6bmdPYzV5eHI4cTgySUFNMWMvRkxGT3BscXU1ZUZRWHJNWnpHY1ZDalliTFdHNUk0QlQxZXVScmxieHROT3RNaXREREVoTFhJSXluQUF2dU9FV0UzWDNOZEFmdDk0VmdhRzQyWElRdDBaWDZQZUNFL3FRRmU5cks2SHg3WVU1MEt2SDdmVzRmUytxN0tLQkp4c2dnQlg1cFNBR2gxaklyVmg1elE2dzNSZmFhaEJYbS9hQ2JDWlRqQ1VGVVR5V1pxVzlwNjJNakpQWFZxT3JQZ01PNE52NzRHa2Yrb3dmdE5WQkRRbmpGSnFIU3cxN3BYdmhXVzVLWnFlL1E0OU4vVVNUQ0FWV29RWEZJSEJIWFhlM0ZQclVEc3VHRG10Ri9oSEtUSHBla3hoaUFPUEkrU0pxNlM2SEY0STlZV3prQkpUbzQ2aVVNeldwOFBpci9SaWR1THhLWXNTa3NWOHZMbE9RdmhHWDJZbFIwT0JoQmpDK3UvZ0VjdlkwQXBLN1lrNDFOeGpQU1FuV0ZIVEY2NlVyamdldkI4Q3U1YStsMnZZU1JQdHVWRG83M2hoZE1TSG5VWDd0VGpzVlpHeEFsL1dwdGlPSUVRMWduTDI5bVg2L3RSMXRtbGtZajhXNFgrQ1NqV2NVREdZMU5wUy9DN2hTS3FpTUxNL2wyUW1TV1o3M0RkeitnaW84QkNFTllQUTQ2cW5rendYVWJxdkJreGpVUXNXZlpGZ2J1bzNyQWYrd043ak9POTAreW54NFBpM0wrMG5ZTDFTY2hEVWdBUDRnUFYvN0lkMXErMUhTaG11R2tJcVdSUGd5eE1GcVA4SGZqVG5qWHdZNWJRZmJKY3Q2T0l6S2dNSG90Ri9IZTFlZ3NheEhTcUc2d2ZkbVE1eDhOeVRGRnFCY3AyaVNvd0hSM3lrNSszNmhGN3ZYQUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzFfUFJFIiwiRklET18yXzEiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwibGFyZ2VCbG9iS2V5IiwiY3JlZEJsb2IiLCJtaW5QaW5MZW5ndGgiXSwiYWFndWlkIjoiYjJjMWE1MGJkYWQ4NGRjN2JhNGQwY2U5NTk3OTA0YmMiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJsYXJnZUJsb2JzIjp0cnVlLCJlcCI6ZmFsc2UsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjp0cnVlLCJhbHdheXNVdiI6dHJ1ZX0sIm1heE1zZ1NpemUiOjE1MzYsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6OCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoxMjgsInRyYW5zcG9ydHMiOlsibmZjIiwidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN30seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTh9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi0zNX1dLCJtYXhTZXJpYWxpemVkTGFyZ2VCbG9iQXJyYXkiOjQwOTYsIm1pblBJTkxlbmd0aCI6NiwiZmlybXdhcmVWZXJzaW9uIjozMjk0NzYsIm1heENyZWRCbG9iTGVuZ3RoIjozMiwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjEsInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjoxMDB9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wNi0yMSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzYsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWXViaUtleSA1IFNlcmllcyB3aXRoIE5GQyAtIEVuaGFuY2VkIFBJTiAoRW50ZXJwcmlzZSBQcm9maWxlKSIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjUwNjIxMDAyIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDYtMjEiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTA2LTE5In0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiZmZmOTQwZDM1NzliYzQ0MDQwNTU3NDdiMzY3MGQ0M2ExZTk3ZDA1NCJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyJmZmY5NDBkMzU3OWJjNDQwNDA1NTc0N2IzNjcwZDQzYTFlOTdkMDU0Il0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJCbHVpbmsgS2V5IFUyRiBBdXRoZW50aWNhdG9yIn0sImRlc2NyaXB0aW9uIjoiQmx1aW5rIEtleSBVMkYgQXV0aGVudGljYXRvciIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyLCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWxlc3MiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUN6VENDQW5PZ0F3SUJBZ0lKQU0rYTEyVnpuQ3RHTUFrR0J5cUdTTTQ5QkFFd2V6RUxNQWtHQTFVRUJoTUNRMEV4RURBT0JnTlZCQWdUQjA5dWRHRnlhVzh4RHpBTkJnTlZCQWNUQms5MGRHRjNZVEVUTUJFR0ExVUVDaE1LUW14MWFXNXJJRXgwWkRFVE1CRUdBMVVFQXhNS1FteDFhVzVySUV0bGVURWZNQjBHQ1NxR1NJYjNEUUVKQVJZUWJHaGhiV2xrUUdKc2RXbHVheTVqWVRBZUZ3MHhOekExTVRFeE5EUTNOVGRhRncweU1EQTFNVEF4TkRRM05UZGFNSHN4Q3pBSkJnTlZCQVlUQWtOQk1SQXdEZ1lEVlFRSUV3ZFBiblJoY21sdk1ROHdEUVlEVlFRSEV3WlBkSFJoZDJFeEV6QVJCZ05WQkFvVENrSnNkV2x1YXlCTWRHUXhFekFSQmdOVkJBTVRDa0pzZFdsdWF5QkxaWGt4SHpBZEJna3Foa2lHOXcwQkNRRVdFR3hvWVcxcFpFQmliSFZwYm1zdVkyRXdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBVG1CQUlDU0xiblJBZm1hZ2I3R0xzREpRa0hQUzRzMjZEOHJOd2lndEc5aFVjL25DNmR4MU16MjdmYWhueGttdTdxNVREd3NacjdaWjZQZ0FzV1VadllvNEhnTUlIZE1CMEdBMVVkRGdRV0JCVC8rVURUVjV2RVFFQlZkSHMyY05RNkhwZlFWRENCclFZRFZSMGpCSUdsTUlHaWdCVC8rVURUVjV2RVFFQlZkSHMyY05RNkhwZlFWS0YvcEgwd2V6RUxNQWtHQTFVRUJoTUNRMEV4RURBT0JnTlZCQWdUQjA5dWRHRnlhVzh4RHpBTkJnTlZCQWNUQms5MGRHRjNZVEVUTUJFR0ExVUVDaE1LUW14MWFXNXJJRXgwWkRFVE1CRUdBMVVFQXhNS1FteDFhVzVySUV0bGVURWZNQjBHQ1NxR1NJYjNEUUVKQVJZUWJHaGhiV2xrUUdKc2RXbHVheTVqWVlJSkFNK2ExMlZ6bkN0R01Bd0dBMVVkRXdRRk1BTUJBZjh3Q1FZSEtvWkl6ajBFQVFOSkFEQkdBaUVBNWdmNDF6UUpDaGNEWmZFcGoweFNwYmd2WFV5THBoMlN0UkV6RUtkM1J4a0NJUUM2aVNtaktDSytPdnBBZHduMVVrb0xONDNudlk3RHRBVFZEYzRQa1cwNHZ3PT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSGdBQUFCNENBWUFBQUE1WkRiU0FBQUFCbUpMUjBRQS93RC9BUCtndmFlVEFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFRRmtsRVFWUjQydTJkZVhRVVZickFmN1gwbWs0NklRbkxnR3l5Q2dTTUtGRUVud3Z3ZE1aUlJFRjlLaUxEZS9wY1JrYmtnYUtqZ3FpTUNvcmpPSUlndUQ5QVJOeEdrRzFFVmprSUFXU1JWUUlrZ2F5ZDNxcnJ6aDlKeGpXZDZwQjAwa1Y5bk1QaGtIc3FkZTd2ZnV2OTdpMUpDQ0d3eExRaVcxTmdBYmJFQW15SkJkZ1NDN0FsRm1CTExNQ1dXSUF0d0paWWdHTVVuejlvemJhWkFkLzk1Q3o4d1pBMTQyWUZ2SDc3WHFiTlhXTE51RmtCMjIwcWovMzFIZVovdU1xYWRUTUNGa0tRa3B6RUg2Zk40ZHNEUjYyWk54dGdYWUN1Q3pSTjU1cjduaWFpNjlic215dE5xdHgyVmhTWmcza0ZETDMvR2F5dGFET1phRjJBVlBsdnQ5UE84blhiZU9HdGp5MENwZ0dNK0lrdTIrMDJ4ajc5R2lzMjVsb1V6QkprL1Z4U1VqemNNbkVHQlVWbEZvbkVCL3pMLzVNa2lkSnl2K1dQemFyQkFLcXFzREYzSDdjKzlDSVdZNVA0NEo5TGtzdkJ3dVhyV0xoOHZVVWtZZE1rUGJwMk8yeDJicGt3blhYZjdMR29tRTJESy8weHVKd09iaHovSEFWRnBSYVpSQU9zWTh6QkZoYVZzMlBmWVl0TXdwbG9nd0dVSkVub1ZyUmxuaWo2MTFhQ3JsdUFFMUNEUlhXbHNuWnpibWx3QXZwZ0FSaEJMRlhWclMweHA0a1dsZ1lucUlrMkdtVUowSVcxVjV5QUdoeXJPYmZFdEZHMHNMbzlFaFN3b1JoTHN0S2t4UFRCeGoyMXRYV1lpQnFNY1dnUlM0TVRFTEJ1UElxMk5EZ2hOZGlnU01KS2s4d2RSVnRwVW4yS0dqZnRqYVdTMVlCcDB2SENZaFJGUmxVVUhIWVZoODJHb3NnVzROTWxiQlNaQkEzYW05VjcrRGhzc296TnB1SjIyc2xNODlMK041bGtkKy9BeGRubmtOMjlnd1c0UVZNZjBaQWFMQWdFd2dRbGdSU0E0akk0Zkx5UTlkdjNNTy9EbGFBTG1tZW1NaWluTnpkZE9ZRHNjenJRS2lQTkFtekkvemFSN1VKUkdhWlRYWFZSWkJuRkx1TzAyd0R3QjhNc1hyR0J4U3MyNG5FNXVhQlhKeDRZK1h2K28yOFBLOGlLcnNIR3h6ZG1KVXVXSkd5cWlrMVZDR2thWDJ6Y3pxVWpKM0h4eUlkWnUvVmJncUd3QmZqWE5OaG9vYU1wVmJLRUVOaFZGVzlxTWx0M0gyTHduWk1aT09wUnR1emFid0grNlVURm9NRlMwOXdQVmhVWnU2S3c4N3NqbkhmRE9DYk1lSk5Tbjk4Q0hITWVMR2l5bXcyQ3l1T3ZYcStIRjkvK2hMNGpIbVJqN2w0TGNLeG1OeEU2T3V3MmxSTkZKVnc4Y2hJTGxxMC93elU0Qmg5TUF4YzY2bE1rSkZ3T0I3ZE1tTTdkVDg0NmN3SHIxV3FjQUZGMHpKQWxjTHVjdkxwb0dmZFBtOXZrckUvOE5GZzBEUTBXUWlCRVpZTzlKRW4xOXN3a2w1T1gzL3VNbThaUGIxS1E0eFpGeDVJSVJ4cHdnanExYlVtYkZzM3dlbHpZVkptSXJoUFNOTFJJaE5QOXJVa3VKeCtzMk1qa3Z5OW9PdEYvZklJc2dTNUFObERMa2hwVWd5WFd2VEdWU0VRbkZBN2o4d2NwTEM3anEyOTJzMmpaZWxaL3ZRT2hDNUtUWEhYV1pKZlR6aE4vWDBDU3k4bTRrYjgvTXdCWGJTYzFDUk5kWFpKTWNqbElTL0hRcGtVNmZicTI1MytIRCtGNFlURXZ2djBKNzMzMkpjY0tpN0dwU3AzTXVEZkp6V04vZTQvTCsvWGkzRzZOdTNuUk5OT2tSZ3F5V21ha012VyttOW55M3JQTWZ2d3VWRVhCSHd3UksySmRDQ1JKWXVqOXp4Q082R2NBWUJGVEVOM29sNlI1azkzY2ZPVUFEdjNqRllaZWRnRWhUWXU1ZktySU1rZnppeGoxeU13ekpJcldFeThQOXJpZHZEdnRUOHgvOGo3OGdWRE1sc1hqZHJKazVTYSszcm5mNUJwY0ZXZ1p0WFZOTFE4ZWRrVU9tOStkaHNmdGlNbTZpS3IwOEo2cHM4d09PRFliWGQ4bSttUkpHVHYySFdIVGpuMXMzM3VZL0ZNbE1UOGpxMHM3dm5yektadzJXMHp2cHlvSzY3L1p3NXdQVnBnM2l0WjE0OXBiSHhwY1ZPcGo2KzREdlBYUkdyN1lsRXRlL2lsQ2dSRG9Pc2dTcXQxT2kzUXZBODg3aDV1dkdrQk9yODVrcEtYVSt0ejJyVEpaTTI4eUEyNmJoQllEWkc5S0VzKyt2b1FiLzdNL2JxZkRoSGx3VmZVb0hqNzRxZG52OCtxaVpSU2NLa1Vna0dVWnA4T095MkgveWJqU2NqOUxWbTVreWNwTnBIcmNEQjl5RWRQSGo2cjErZDA3dE9Hdms4Wnc0NStleFp1YWJQaTlEaDh2WlBPTzd4aDQzamxtaktKajA4aTZtT2dkM3gyaDE3Q3hQUFRDV3hTVitsQlZCWnVxb3NpL1hsNlI1Ujg2TnlxQ0lXYSs4eWx0Qi84UFgyM2RYZXZ2R2pHa1AvZmQ5anRDWVMybVRPTDVONWFhMHdmSFZKdVZZamZSODVldUl1ZVdpUnc4V29BM0phbE9DOURqZGxKVTVtUElYVS93L1B6YVFUeDY1d2d5MDFJTWV4NmJxckIwMVdhTzVwOHlwd1kzMUhiaHgydTJNUHJQTDJOVGxkUHViMVprR1VWV2VPQ3AyVHo5MnVLb1k5TzlIaWFNSGtweG1TK21lWmdiNTJBcmZpYTZBWHp3NnE5M01IVHNNN2lkam5wTnJiek52RXgrZFNFZnJ0b2NkZHhkdzRmUTQreXppQmlzVm5tUzNIeXlaak5oTFdJeXdQb1BiYXFHZkxBQmsxNWM1bVBrd3kvaGRqcnFiZHZ2cCttTnpNM2puNmV3T1BwVng0L2NPZHp3Z2xSa2lmMTVCUlFXbDVvTGNFdytXQmdMc21hKzgybWQ4bG5Eb1lBa29RTzNUNW9aMVRwYzB2Y2NrajB1UTR0TUNJSFBIK1Q3NDZkTXBzRlZmd3pwbVFSNkpQcUNLUFVGbURwcklUWlZhZEQzZHRodC9IUExMbllmeXF0eFRJdG1xZlRwMHM2dzJZMUVkRGJGc1ZFdlRpYjYzOHBwVU9PamEvQno4NVlRQ21zTllwcC9ybkZoTGNLY3hTdWlhRHBjTmJBdnZncS9RY3NBRzNMM21UTVBOb29qMmduL1FDak1oNnMyNGtseXg2Y1NwQ2k4OC9IcXFHTUc1V1FabjNCSkpuZmZFYlA1WUwzZUtsa25pMHZKeXk5Q2JtRHQvWEZCNUdqK0tiWitlNkRHTWQwNnRpSGQ2ekZVMEpFa2lXUDVKODJtd1RFdWlDaUFDMHQ4K0FPaHVCOXZXYjk5YjdTd2diTmFaUmhLMVNRSlNzckw4UVUwTXdFV01RS3VlZnl4L0ZOeDcxcFVWWlg5MytkSEhkTzZlYnF4OTVJa2dxRXdwUlVWWml0MHhITExUczBhN0t2d3gxUVZxeDh6TFZQcWl3NGt4ZU0yRkVaV0gzQVB4dWxUdS9IeHdicEFTUFdqOFlxaVFOejdBUVNxb3RUcVcyTXYvcGdFc00ybXhqQUJVdFF6dU0xU2s1RmxLYTU0dzFxRWx1bXBVY2Y0L0FGRGVZS284c04yaDgwOGdGT1MzQ2lTWkVqeEpBbnlUeGJYK1BQZlpLU2hLZ3BTSEJrTExVS3Z6bWRGSFhPaXNOallJaFpnVXhSUzRwVG14UVd3MStNa3haTmtLTmlTSlptRFIwL1VyTUZlVDVXL2l3OWhBZGdjZHZwbmQ0ODY3bERlQ1VPcG0wQ1E3SEdUN0xLYkI3QXNRWHFhMXhoZ1dTTHZaQ25IQ290cUJOeTdhM3RDb2Zpa0daRkloSXY2ZENIRFczUDN4dmNuVG5MOFZKa2gxeUYwUVdaNi9DNTJpZHNCOE80ZFdodmUwdFBEWVZadjJsbmp6Kys4WVRBVmNVb3poQzY0KzZiZlJoMnpjbE11UWpPMjRIUWg2TmErdGZrQW45L3piTVA1c05QdFpPbnFUVFgrL0tvQjJmVHIzUlV0MHJEN3FoSVM2V25KRE1ycEZYWGN4MnMyNDNRYk84OGtoTTc1UGM0MkgrQitXVjBObHhjZGRqdnJ2dGxOY1ZuTldqcGp3bWlrT3FRbnNVaHhXVG5qUjExTGFuTE5iVUJGcFQ0MmJOdUx3MjRzS3Baa21YNVpYY3dIdUhQYmxqZ2NObVBScnhEa0Y1V1NHK1VMYURtOU9uUEQ0SXNvS1c4WVV4MEtSN2p1aWh6dXVmSEtxT08yN3oxRVFYR1pvVUtPSklITGJ1ZnNzMXFZRDNCR2FncXQwbE1ORjdTRWdHZm1STytMbXZQRTNlUmtkWTZwdTlHSWFKRUlyVnVrTWZlSmUycE43WjZhL2I3aHdvc3VvSFZtS3BrR2VyQVREbkNTeThIQXZqMm9DQVNORlVkVWhZOVdiV0wxNWgxUngzMzAwa04wNzlnR256OVlMN2x4V05Ob251Wmw3YnlwcEhoY1VaT3hMelpzNTdNdnQ2QWFiRHp3K3dOY2NuN1BYL1JvbXdJd3dCM1hYa280YVB5bXVHU1BtM0hQelkrcW9jMVNQSHo5N2pTdUduQXV3YUJXNStZN0lRVEJVSmplWGRxejdmM3BORytXVW9zSjF4Zy8vUTJTUGNZTEZ1R1F4aDNYWGg3UEtZOHY0TDQ5T3BIZG82UGhMa1JabHRuNTNSSGUvdVNmdFk1ZFBPUC9tRC8xUHB3T2xkSnlmMVVVYkV6S0tnTG91czdNaVg5Z3hXdVA0M0hWZnJ6a2pZL1dzR3YvVVdUWjJCUnFFWjN6ZTNlbVQ3ZjJjUVVzaVRodnJMNzcyVnJ1ZVBSbDdEYkZzR1lGZ2lGeUY3OUE1N1l0YS9kenVtREtxd3Q0KzlQS1UvcGFXS3VxLzBxVk96bjhzSmxoVXhVeTBsSzQrcEx6K1BPZEkwZ3oyRFMvKzJBZVBhKzdQNmFPem5CWVkrNlVleGsrK0VKekF6NVpYRWJ2R3g3QTV3OGF6b3QxWGFkbFJocGIzdnNMU1M2bklWL3I4d2ZJeXkvaTYxM2ZzV1huZmc0Y0xjRG5EK0J5Mm1uYktwTStYZHR4ZnMvT3RHN2VESzlCTXl0RTVYT3pSNHpqZUdHSjRVMFBTWkx3dUJ4OHMvQjVtbms5NWdZTU1HSEdHenc3YnlrZXQ5TzQvd3BINkpmVmlVLy9OZ21IelVaalNEQVVac2hkVTlpVXV5K21qczR5bjUrSm80Y3k1ZDZiNC83T2pRSllJR2gxNldncUF1R1l0djVDSVkyc0xtMVpQWGV5NGNKQ2ZjSWRPR29TMi9jY3dXNDNmaWhUMTNVOGJpZDVYOHh1bEVYWktCOHJrSkNZT1hGTXpLVkd1MTFsMjk3RG5EZmlRWTRjTDR6Yit4NCtWa0QyOEhIazdvc05iblZ3OWRKRFkyZ3NhYlN2VVZ4NzJRVmtkV2tYTzJTYnlzRmpCV1NQZUpCWEZuemU0Ty81eW9MUHliNXhQSWVPbjhTbXhnaFhpM0J1dC9aY2ZVbmZSZ1BjS0NhNld2WWVPa2JXOVdPeDIyeDFxaW1YbEpReCtPSnNwajg0aXU0ZFc5ZnIxWVE3OTMvUDJMKzh6ckl2dCtEMUp0ZnBHV0ZOWTl2QzZYUXlFUDJiRWpEQW91VWIrSzhKMDNFNUhYVnFoZFVpRVJSWm9YK2ZManc4NW5yNm45dnR0TjdueXkyN21EcDdFV3UzN2lHaVIycnR4YW9wYWc0RWdydzFiU3pYWGRhdk1hZTM4UUVMSWJoMTRndjgvN0oxZGI2L1FwSWtRbUdOQ3ArZm5sM2JNZXFheXhoMFlXOWFwSHRKVG5MaGROaC9VZlFRUUNBWW9xemN6L0ZUeFN4ZnY0MjVINndrZC9jQjNFbHU3RGExenIzWEZZRVFJNFpjeVB5cGYwU0NNeHN3Vkc2Q1gzM3ZWRlp1M0lIZGRuclhoa1IwblVoRVIxVVZQQzRubVdrcHRNancwcnlabDJTWHE2cHk1U2YvVkFrblRwWlFVRlJLdVQrQXBrVlFGQmxGUHIyd0pCald1THhmVDVhK09MSEJ6MDRsREdBQitQMUJMcnJ0SWZZY09uYmFrSCtzMmJvdTBIVWRMUkw1ZDUxYWxpVlVSVUdXWldSWnFyZFRFcUd3UnRmMnJWZzdmeW91cDRQR3g5dEVBUDlnMm9KY2NzZWo3TmgzcE40Z3h5MVBEbXRrZFdyTHlqbVB4LzJxcENhWkp2MmF1QndPdm54OUNuMjZkU0FZVEp6dkV3V0RZYks3ZFdEMTY1TnhPUnhONnQyYUZHQkpxangwdlhMMlk0d1pkZ1dsdm9xNG5TS3MwK1JKRXFXK0NzWmNmd1VyWmorRzAyNmpxYjF1a3pMUlA1ZG5YMS9DNUZjWDFUbGRhVWlwVHM4bS9mY3dIcno5bWlhN0NKczBZSUJ2RHh6bDlrZGVZc1BXM1hqanZCTlRjNEdsbkF0NmQySGVsSHZwMXFGMVU1NitwZys0V3FiTi9ZQVpiMzVNVVprUGV4MXZZai9kZkQya1JVaExUdUwrVzMvTCtOdXZUWWo0SUdFQUF4UVdsVExyL2VVOE9Xc1JGWUVRS1hYOHRrS3NVdWJ6NDNMYWVYak1NUDV3M1JWeGJabzdvd0QvZU1LZm52TUJDLzZ4bG1PRlJVUjBVWlhYMW85VzY3cW84ckVTTFRQU3VINVFEaE5IRHlQRjQwcTBxVXBNd05WU1d1NW43K0U4M3Z4b0RZdVdyK2RJWGdFb01tNm40MGNmMUJEODJuWFYwby8rcXI1TnB5SVFoSWhPNjFhWlhEOG9oMXQrTjVET2JWc1o3dml3QURld2JObTFuOCsvMnNyNjdmczRlRFNma3lWbCtBTWhORjFIMS9VZmJ2dVJwS3A3S1NzWFEycXltNDV0V3BDVDFZVWgvZnMwK3BkU0xNQUd4QjhNNGZNSDhRZUNoTUlhL21BSXJhcWJVMVZsWEhZSGRwdUN5K2tneWVXSWE2K3lCZGlTK2l2R1dGTmdBYmJFQW15SkJkZ1NDN0FsRm1CTExNQ1dXSUF0d0phWVJmNEYwTU1sNjUzSVlLd0FBQUFBU1VWT1JLNUNZSUk9In0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMTktMDEtMDciLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IkJsdWluayBMdGQsIEluamVjdG9yLCBVMkYiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlUyRjEwMDAyMDE1MDgxMTAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjAifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDE5LTAxLTA3In0seyJhYWd1aWQiOiI4NTIwMzQyMS00OGY5LTQzNTUtOWJjOC04YTUzODQ2ZTUwODMiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6Ijg1MjAzNDIxLTQ4ZjktNDM1NS05YmM4LThhNTM4NDZlNTA4MyIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IDUgRklQUyBTZXJpZXMgd2l0aCBMaWdodG5pbmcifSwiZGVzY3JpcHRpb24iOiJZdWJpS2V5IDUgRklQUyBTZXJpZXMgd2l0aCBMaWdodG5pbmciLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI4NzA2LCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciLCJlZDI1NTE5X2VkZHNhX3NoYTUxMl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjYsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo2LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlESGpDQ0FnYWdBd0lCQWdJRUcwQlQ5ekFOQmdrcWhraUc5dzBCQVFzRkFEQXVNU3d3S2dZRFZRUURFeU5aZFdKcFkyOGdWVEpHSUZKdmIzUWdRMEVnVTJWeWFXRnNJRFExTnpJd01EWXpNVEFnRncweE5EQTRNREV3TURBd01EQmFHQTh5TURVd01Ea3dOREF3TURBd01Gb3dMakVzTUNvR0ExVUVBeE1qV1hWaWFXTnZJRlV5UmlCU2IyOTBJRU5CSUZObGNtbGhiQ0EwTlRjeU1EQTJNekV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRQy9qd1l1aEJWbHFhaVlXRU1zcldGaXNnSitQdE05MWVTcnBJNFRLN1U1M213Q0lhd1NESHk4dlVtazVOMktBajlhYnZUOU5QNVNNUzFoUWkzdXN4b1lHb25YUWdmTzZaWHlVQTlhK0tBa3FkRm5Cbmx5dWdTZUNPZXA4RWRaRmZzYVJGdE1qa3d6NUdjejJQeTR2SVl2Q2RNSFB0d2F6MGJWdXpuZXVlSUV6NlRuUWpFNjNSZHQyemJ3bmVid1RHNVp5YmVXU3dienkrQkozNFpIY1VoUEFZODl5SlFYdUUwSXpNWkZjRUJiUE5SYldFQ1JLZ2pxLy9xVDlubURPRlZsU1JDdDJ3aXFQU3psdXduK3Yrc3VRRUJzVWpUR01FZDI1dEtYWFRrTlcyMXdJV2J4ZVN5VW9UWHdMdkdTNnhsd1FTZ05wazJxWFl3ZjhpWGc3VldaQWdNQkFBR2pRakJBTUIwR0ExVWREZ1FXQkJRZ0l2ejBiTkdKaGpncFRva3N5S3BQOXh2OW9EQVBCZ05WSFJNRUNEQUdBUUgvQWdFQU1BNEdBMVVkRHdFQi93UUVBd0lCQmpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQWp2anVPTURTYStKWEZDTHlCS3N5Y1h0QlZac0o0VWUzTGJhRXNQWTRNWU4vaElRNVpNNXA3RWpmY25NRzRDdFlrTnNmTkhjMEFoQkxkcTQ1cm5UODdxLzZPM3ZVRXROTWFmYmhVNmt0aFg3WSs5WEZOOU5wbVl4citla1ZZNXhPeGk4aDlKRElnb01QNFZCMXVTMGF1bkwxSUdxck5vb0w5bW1Gbkwya0xWVmVlNi9WUjZDNStLU1RDTUNXcHBNdUpJWklJMnY5bzRka29aOFk3UVJqUWxMZll6ZDNxR3RLYnc3eGFGMVVzRy81eFViL0J0d2IyWDJnNElucGlCL3l0LzNDcFFYcGlXWC9LNG1CdlVLaUduMDVac3FlWTFneDRnMHhMQnFjVTlwc215UHpLK1ZzZ3cyamVSUTVKbEtEeXFFMGhlYmZDMXR2RnUwQ0NySkZjdz09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWZDQVlBQUFDR1ZzK01BQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBSFlZQUFCMkdBVjJpRTRFQUFBYk5TVVJCVkZoSHBWZDdUTlYxRkQvM2Q1OXdlUVNJZ1M5QVFBWGNGTEFRWmk5ZnBlVnoxdFkvV1RacjVXeHBjN1c1a25MYTVqSTNaODVzclMybk0yc2p0V3daUzdJVUg0SDR4Q25FUXg0REFaRjc0Vjd1czg4NXY5L2xJbkJ2VkovQjRQdjludS81bnUvNW52TTU1NmZ6QS9RdjBIYi9JclgzVkZLUG80NWNubTRpblVJV1l3TEZSbVpRVXV3akZHL04xaVJIaDFFWjBOUlZSdWRxdDFCZCsyblNLeVMvT2h5czArbGszZS8za1E5cXZENFpVdGE0VlZTVXVZMGVpcHlpVGhBZm9jb09SVmdEdXV3M3FLUmlBZDNyYmNFdGpUallJb2Y2V2FIc0NtelZQV0NNeCtjZ2g4dExxV01LYU1Xc1VqTHFvMlJ0SklRMG9Pem1lcnBRdTRlc1pnc09Oa0d4SDdkMGtkdlRUMTdzNE9NVTdWSThaaGpnR2FNK0FxOWlFTnU4UGlmMXVkejA3TXd2S1dmOEdsVm9DRVkwNFBDNVdkVGFYWUZiUjh2TnZMNSszS2dmYjV4Tk15YTlSYW1KaXluYU1sR1RWdEZscjZiYTl1K3BxbkVYNHVNdVJSZ2pTWUVock43dXRGRmU2bHFhbDdOZmt3NWltQUdIeW5QcGJrOFZtWTB4c3RucHRsRkNWQ1l0elR1Qk44M1FwTUxqVHRldmRQelNVbko3ZThta2p4WjM5ZlhiS0RmbGRacWJ2VStUVWdHbkJWRjZmUTJpUEhnNFcxNlVXVXd2emJrMTZzTVpFK1BuMHB2ejdKU2V1QXllczhsY3BDbWFLdW8vcCtxV3IyVWN3SUFIV3J2UDBZRXpoWEF0TEFic3NIaHA3aUdhbXZ5aWpQOHJ5cXJYVVdYOVhvb3d4eUF1Zk5CcnA0M1BPQkZYWmxrZjhNRFJpcWNweW93QXdwdXoyeCtmV3Z6L0R0ZGU5c21zenlndGNSNkMxd2JkekJsNk9scTVXTllZNG9HYXRoSk1ya1RFeDBqQVJTSEFWcys1cllrUU5YYitRZ2ZQTHNRNmdYeUluc3JlUWZtcG03UlZGWWZMODZuMWZpVU9rWXZTaGtVUHh2YnVrem95NksxaWhNMWhvM1h6VzZFdlNmWEErZHBpV0dhV2QrZG9Yekx6bUd3S1lGTENBc1JBbFBCQWhNbENGWFU3dEJVVlByOEhnVmNKSFdxK0YwMHBscitETVRkclA0enZ4WTExa05NaHhUK1NlVEdnK2Q0VjVMUUppdHlVR0pOQjhWRlpzamdZQlpNL0lJL1hDVGtqMHF5RE9wRjJBVlExN0NJalVwL0RuVDFVa0w1RjVnZGorc1Mxd2cxZ0UzZ2lnbTYwZkNYelNuUFhieUFQYklYditJRHBFMTZUaGFISVM5c2t5aGxtTUU1RjNjZnFBS2hxMkMwRTVQSDFnWWFYYUxQRGtaRzBIREpPbktXSHA1MUkwejVTT3V4OGUxV0F1WnpkSFFyVGtwOFRtalhvSStsYTB3R1pzenVicWJPM2lmUTZBL1c3dlZTWXNWM21SMEpLd2tLYzRXSGlCa21SOEkzQ0NnSTg3b09MNHF6VDVQK1JVSkJlakVPZ0FQSzhoWVB6YXRNK2VJVHAySU85eVRRbWVyb21QUnh4MXF4QWNzaWxlL3ViU2VFYmNXUUdZRUNnaGNMWTJIeUtqb2dqSDI1aE1wanBVdjFPdWdsaTRlaDJlUncwTzMyYkpqa3l1Q2dOemcwdnpsWU1TaVNzMHVvbzRNRzdoTU9qQ0VhWDF5RkUwblN2akJ6dVRuRXBLODZaOElvcUZBSXVidzhrZzlBckVhUkVXU1pJK2pINFhicDZnOUU5RW5KVDNvYVJ6RE4rTVVKQlFESG41NmE4b1VtRUJ1c094QnMvTjUrdEpFYlBrQUZEajhVR3ZPcy9JV3ZjU2dsR0JodlM3L0ZUWWZwV0dZZERZOGZQQXhXU0EzNXNUQzRwNCtMbTRBYXFJb1BlUXRmdWZLNkpoMFpoeGxic1VYT1NtWE5pZkQ1WlRBa3lEb2ZiYmNjbHhuQThXTkFxeENiUk55a2hYeFFwYUR3NjdmWFVZYnNpRzBLaHR2Mm9lSXZoOHJoUU1ZT2NFQXFYRy9lSSt6bmdPYzV5eHI4cTgySUFNMWMvRkxGT3BscXU1ZUZRWHJNWnpHY1ZDalliTFdHNUk0QlQxZXVScmxieHROT3RNaXREREVoTFhJSXluQUF2dU9FV0UzWDNOZEFmdDk0VmdhRzQyWElRdDBaWDZQZUNFL3FRRmU5cks2SHg3WVU1MEt2SDdmVzRmUytxN0tLQkp4c2dnQlg1cFNBR2gxaklyVmg1elE2dzNSZmFhaEJYbS9hQ2JDWlRqQ1VGVVR5V1pxVzlwNjJNakpQWFZxT3JQZ01PNE52NzRHa2Yrb3dmdE5WQkRRbmpGSnFIU3cxN3BYdmhXVzVLWnFlL1E0OU4vVVNUQ0FWV29RWEZJSEJIWFhlM0ZQclVEc3VHRG10Ri9oSEtUSHBla3hoaUFPUEkrU0pxNlM2SEY0STlZV3prQkpUbzQ2aVVNeldwOFBpci9SaWR1THhLWXNTa3NWOHZMbE9RdmhHWDJZbFIwT0JoQmpDK3UvZ0VjdlkwQXBLN1lrNDFOeGpQU1FuV0ZIVEY2NlVyamdldkI4Q3U1YStsMnZZU1JQdHVWRG83M2hoZE1TSG5VWDd0VGpzVlpHeEFsL1dwdGlPSUVRMWduTDI5bVg2L3RSMXRtbGtZajhXNFgrQ1NqV2NVREdZMU5wUy9DN2hTS3FpTUxNL2wyUW1TV1o3M0RkeitnaW84QkNFTllQUTQ2cW5rendYVWJxdkJreGpVUXNXZlpGZ2J1bzNyQWYrd043ak9POTAreW54NFBpM0wrMG5ZTDFTY2hEVWdBUDRnUFYvN0lkMXErMUhTaG11R2tJcVdSUGd5eE1GcVA4SGZqVG5qWHdZNWJRZmJKY3Q2T0l6S2dNSG90Ri9IZTFlZ3NheEhTcUc2d2ZkbVE1eDhOeVRGRnFCY3AyaVNvd0hSM3lrNSszNmhGN3ZYQUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzFfUFJFIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiI4NTIwMzQyMTQ4Zjk0MzU1OWJjODhhNTM4NDZlNTA4MyIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlfSwibWF4TXNnU2l6ZSI6MTIwMCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0Ijo4LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjEyOCwidHJhbnNwb3J0cyI6WyJ1c2IiLCJsaWdodG5pbmciXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotOH1dLCJtaW5QSU5MZW5ndGgiOjYsImZpcm13YXJlVmVyc2lvbiI6MzI4NzA2LCJjZXJ0aWZpY2F0aW9ucyI6eyJGSVBTLUNNVlAtMiI6MiwiRklQUy1DTVZQLTItUEhZIjozfX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDIzLTAzLTI4IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyODcwNiwidXJsIjoiaHR0cHM6Ly93d3cueXViaWNvLmNvbS9wcm9kdWN0cy8iLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ill1YmlLZXkgNSBGSVBTIFNlcmllcyB3aXRoIExpZ2h0bmluZyIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjMwMzI4MDA1IiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjMiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMyJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMS0wMi0xOCIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWUsgNUNpIEZJUFMiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDIxMDExODAwNSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4zLjciLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMyJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMS0wMi0xOCJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjMtMDMtMjkifSx7ImFhaWQiOiIwMDI0IzE1MzEiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhaWQiOiIwMDI0IzE1MzEiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiRytEVm9pY2VLZXlzdG9yZUFuZHJvaWQifSwiZGVzY3JpcHRpb24iOiJHK0QgVm9pY2VLZXlzdG9yZUFuZHJvaWQiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJ1YWYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfSx7Im1ham9yIjoxLCJtaW5vciI6Mn1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9kZXIiXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX2RlciJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoidm9pY2VwcmludF9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsic29mdHdhcmUiXSwiYXR0YWNobWVudEhpbnQiOlsiaW50ZXJuYWwiXSwidGNEaXNwbGF5IjpbImFueSIsInByaXZpbGVnZWRfc29mdHdhcmUiXSwidGNEaXNwbGF5Q29udGVudFR5cGUiOiJpbWFnZS9wbmciLCJ0Y0Rpc3BsYXlQTkdDaGFyYWN0ZXJpc3RpY3MiOlt7IndpZHRoIjo1NDAsImhlaWdodCI6OTYwLCJiaXREZXB0aCI6MTYsImNvbG9yVHlwZSI6MiwiY29tcHJlc3Npb24iOjAsImZpbHRlciI6MCwiaW50ZXJsYWNlIjowfV0sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlCbURDQ0FUMENCR1FkUFIwd0NnWUlLb1pJemowRUF3SXdWakVMTUFrR0ExVUVCaE1DU1U0eEN6QUpCZ05WQkFnTUFrMUlNUTB3Q3dZRFZRUUhEQVJRVlU1Rk1Rc3dDUVlEVlFRS0RBSkhSREVMTUFrR0ExVUVDd3dDUkZNeEVUQVBCZ05WQkFNTUNFRlZWRWhTVDA5VU1CNFhEVEl6TURNeU5EQTJNRE13T1ZvWERUUXpNRE15TkRBMk1ETXdPVm93VmpFTE1Ba0dBMVVFQmhNQ1NVNHhDekFKQmdOVkJBZ01BazFJTVEwd0N3WURWUVFIREFSUVZVNUZNUXN3Q1FZRFZRUUtEQUpIUkRFTE1Ba0dBMVVFQ3d3Q1JGTXhFVEFQQmdOVkJBTU1DRUZWVkVoU1QwOVVNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVTSXBJL2RLWUNEWWh6d0Qyd1NmWUFPYi9uTmFpUGNXRjIxdnhaay9UZ0QwT0p0Y0QrT1BtNjRud1pkRldTRVlTVzdpT3FucG1KeWRlOG1nci90bkFpekFLQmdncWhrak9QUVFEQWdOSkFEQkdBaUVBM2J2aGF6UUZQd215WGx4Sy94Q1hmaDdnMVgxRW9iTEMzTCsyR09SeHA3Z0NJUUNmTkVUWC9tMkJlYlJMWEk0TE1QMUVRR1BYRkRmN09rNzRVN3hiaU00VmtBPT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCwvOWovNEFBUVNrWkpSZ0FCQVFBQUFRQUJBQUQvMndCREFBTUNBZ01DQWdNREF3TUVBd01FQlFnRkJRUUVCUW9IQndZSURBb01EQXNLQ3dzTkRoSVFEUTRSRGdzTEVCWVFFUk1VRlJVVkRBOFhHQllVR0JJVUZSVC8yd0JEQVFNRUJBVUVCUWtGQlFrVURRc05GQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJUL3dnQVJDQURJQU1nREFTSUFBaEVCQXhFQi84UUFIQUFCQUFNQUF3RUJBQUFBQUFBQUFBQUFBQWNJQ1FRRkJnSUQvOFFBR3dFQkFBSURBUUVBQUFBQUFBQUFBQUFBQUFFREFnVUdCQWYvMmdBTUF3RUFBaEFERUFBQUFheWo2RjV3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVnZDNlRFQ1eExKMzZ4Rm9jNWw4bEdQU1hLc3pORE0wOU5WZE4rOFA4WmRMS0JIcGllK3ZoVHVvZk5YTkF2bStNeVVtUm4xZFFaZ0FITTRjdzFMaWNQMVZMZVF1alR6SjJkSk0zMzVwaGFhVWplYWJLVVJ2ZFY3U1oxZFRTNlN1Rmt3US9iSHI3NjV0MkYxbWRrODdOUHFFK1NZeUhSMWdBTEIxOGx2eVRlalBYUXFtdWdzZ1lkVlZwMXlhSGZYTFczdlVRazJwYUlxZDVNcllxSVBmamRMTm1UWXkyK0NUb3hzYjZJdHRTdTZsQTlCWkhBNnFvQUJ5T09OSFAycFBlbmpycy84QXhtbmNZYkxDaWE2ejB4U21hWnQ5SFJNbFVSdmRGK3F6b1l1czNsZEtWMXU2aWFtM3Q3UHJ0Sm4wR2VudS9BOURXR3h4QUFBZXY4Z3hYS2svT1pxYzlKbWJLbHBNelpHa3pOa2FUTTJScE53TTZFcmgxajh3Mk9JZXlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQLzhRQUtCQUFBUU1EQXdRQkJRRUFBQUFBQUFBQUJRQUVCZ0lEQnhVWElBRVFFellSRWhZd05IQTEvOW9BQ0FFQkFBRUZBdjZiR0lTUmxOWWJGZ1VaUzNGTW1sUGd0S1cyYmZTTHJFMVBTdVcrQzB2QmFYZ3RMd1dsNExTY2lHTHlrMWlnT1Jwa3NRSXhlOStHQVFtcVVQRzdlMDBzUG43WWEzZTVkQnRxOTV4YU9aWUhGQXl4SjdjcEJreGhIaTI4NHRiemkxdk9MVEhMUUozVzFkMkgxaDZ5c0VXczVoMXlLRU9iUnJjZk9nWWl5QkZTV1F0NHlLUFNGN0kzdkRFbnR5eWY3dHdqY29mUmg0Q05ONUFNbEFLM0l3bHkzVlp1Y3NWTU9qMlhMTFJtcDlJKzFHSmoxZE8waDViU0hsQW9DVmpwOVRYSGhZOUpkcER5MmtQSnppdzQwYmRzT21hbTVkWkhZZEI4dzVZWStOZVU0K3JwTHV6YjlibWUvd0FQdGpYNnZ2VlpmK1B1dmxpNGgwWVM5WmRDVk16M2FuSnNqb3AzUGtpM1BraXg1TlRCNlJLZFRvMkZsRzU4a1c1OGtWL0pFaGRXTzJIQWxWNGdzaGtPaEtYOHJGK3RyZmpSeTFJd3g0RzJrUXlTUlIvRjNYREVudHl5Zjd0d2lzTmZTbHlJRk53ZytZU0dpTkE2cXV0ZFhPRVRHN0UzN0IrM0tOTDdlMDZ0UGNYeDk1WHRDQ1cwSUpiUWdrQmdBdU9QMGF4MEpQRXRvUVMyaEJMYUVFbU9NNCt4cnRXcUxGc29WYWhtVXhsbDZXRXZ3eDZVa0l6ZkM1ZUdQS1c4cURPcWRkR3JYUnExMGF0ZEdyWFJxMTBhdGRHclhScTEwYW5NdEN0S1RlWUI3V2s5Skg4a2MvMDMvOFFBSFJFQUFnSUNBd0VBQUFBQUFBQUFBQUFBQUFFUkVnSVFJQ0V4VVAvYUFBZ0JBd0VCUHdINnl4azZSS0Y3cVVTaDR6eWZTMURFbVpFUFdMTXVDOU10V1JZYmdzaHVSZW1YbkZPU3BWaXhZMUpWbFdKUU56eXNXTEZpeFlibjdILy94QUF1RVFBQkF3RUZCZ1VGQVFBQUFBQUFBQUFDQUFFREJBVVJGU0ZTRWhRZ01VRlJFeUl5WVlFUUpGQng4RFAvMmdBSUFRSUJBVDhCL0xWbGQ0UGtqNXI3aXB6emRSMGxReHM3aXFyL0FBUDlLT001WDJRelc1MU9sYnJVam5zdW9LK1dGN2p6WlJtTWdzWTh1Q1UvQ2pjK3lwWXQ2bXVMOXVoRmhhNFZ2VUd0bFUxTUpRa3pFck9rR09WM043c2x2Y0d0a0VvUytoNzFhRk14ZzhyYzJWbFN2ZThYendWWTdVQnN5c3MyR1oyZnI5TUxtN3QvZkNrczZXTVhOM2JKUVFGVUZzQXNMbTd0L2ZDb2FZNlpuWStxcXpZSUNkMVpZM3pYKzNEVlU1VXNtMFBMb29iVUc2NlZsaWNIdXA3UWhraUlHNnFobkNua2NqN0xFNFBkUGFrSFM5Vk5VZFdWM1RzcUttM2VQemMzNFNGamJaSkhaY1JaaTl5d2tkYXdrZGF3a2Rhd2tkYXdrTlNocElvUFMyZjVqLy9FQUVNUUFBRURBZ0FIQ3dvRUJRVUFBQUFBQUFFQ0F3UUFFUkFTRXlFeFFaTUZJQ0lqTXpWUllaR2gwUlF3TWpSU1luR0J3ZUZDYzdHeVUzQ1NzL0JVY25TQ3d2L2FBQWdCQVFBR1B3TCtadDJFWktNRHdwRG5vL0xwb0Y5czdvUGUwOTZQOU5XWWlNTWpvUTJCWEpwN0szV0lRa0h5VnpWN3VBQWdFWkJlbjVWeWFleXVUVDJWeWFleXVUVDJWeWFleXJQd283dzk5b0dsS2loVzU3M1MzblIvU2ZwVnBUZU15bzhCOXZPaFhtaTlJdW5jNWs4TWo4WjlrVWhsbHRMVFNCWktFaXdGRitVK2lPMFB4dUt0UlMwSkVyM20yN0R2SXIxS1oySjhhbXcyNGtwSzMyVk5ncXhiQzQrT0Fma0wrbUI2QTlGa09PTld1cEdMYk9MOVBYWHFVenNUNDE2bE03RStOZXBUT3hQalFTNFg0blc2M203cjBsNk84aDlwV2hiYXJpbkk4bHBMekxnc3BDcTRGM0lMMmRsdzZ2ZFBYNWhtT3lNWjExWVFrZFpxUEJZOUZwTmlmYU9zMDVNZjRYNFcyOWExZEZHUk1keHZaUVBSUU9nRGVqOGhmMHdUL2czL0FHMDcwUFJYT0xQS01xOUZZL3pYVE0yTWVBdlNrNlVuV0RVaUV1Mk1vWGJWN0s5UnBUYXhpclNiRUhVZCswdFF1STdhbmZwOWNIa1FQRXcwZ1c5NDV6OU1JVUJIc2MvSzFvamJXdEViYTBKY3NNNUhKcVR3RjNPQ1ZOaWhuSU9ZbUxqdVdPWklGYUkyMXJSRzJ0T3Z1Q1BpTnBLMVdjMURDL3VjbzhWSVJqcEh2ajdmcGduQklzbDBoNGZNWisrKy9tOVBrMy9vWU4xY2JUbHpoYS8yanpHNlAvSGMvYWNPNXVMMHIvWXJBbTMrbVJmdE8vanBVYkprSVV6OVIzZ1lFYm9KVHhNdE9jKytNMzZXd2hJbml3emNpMzRWemdOZzM0VnpnTmczNFVJczJYbG1Na3BXTGswcHovSVlKY1NITXlVZEdKaXB5U0RwUURyRmM0RFlOK0ZjNERZTitGT011VGdwdHhKU29aRkdnL0xESjNVV25pbVU1SkI2VkhUM2ZyZzNRV2szUTJySkQvcUxIdnZ2MjNtbFlqamFncEtocUlxUE5hdGRZc3RQc3IxaW5ZVWtjQmVoUTBvVnFJb3R5bTd0RThXK24wRi81MGIwZmtMK21DZjhHLzdhZDZBeWd0UlFlTWtxSEJIdzZUVE1PS25GWmFGdXM5WnArVVNNc1JpTXA2VjZ2R2lwUnVvNXlUNWc0MTNJTHZMTkQ5dzY2Ymt4WFV2TUxGMHFUU21ubTB1dHEwb1dMZzBWQ0txT1QvQmNJN3EweXRyOXEweXRyOXEweXRyOXE4c2lGL0s0cFR4aTdqOU1EczZTWDhzNWErSXV3ekMzUjFWcGxiWDdWcGxiWDdWcGxiWDdVRmVSbVFvZngxbFhkb3BLRzBKYlFuTUVwRmdLY2xUSFF5eWpXZGZVS3l5cnR4bTh6TFhzanArUG1zZUU5WkI5TmxlZEN2bFFUUGJYQWQxbTJPanV6MWR2ZFNJZW92QUd1Y0l1MlRYT0VYYkpybkNMdGsxemhGMnlhNXdpN1pOYzRSZHNtdWNJdTJUWE9FWGJKcm5DTHRrMWQzZFNJT29PaFI3QlJUdWN5dWE3cVd2Z0k4YXkwNTdIdDZMWXpJUjhCL003LzhRQUtCQUJBQUVCQlFnREFRRUFBQUFBQUFBQUFSRUFJVEZCVVdFUWNZR1JvY0h3OFNBdzBiRncvOW9BQ0FFQkFBRS9JZjhBVFlqbzRhRFRNME9NVVk2M3ZFdEJaRythQkZ1RCtoWHE5RzVFQ0hOc3U1YUJOUFY2OVhyMWV2VjY5WHBjNVlmMnltWk8wUloxVCtpZ1o0VGdoT0RvL1VUQnU2Ti9OL1hBMzBhNDBTT1FWZXFyQWQyL1NvTUhndXJPbXhHRWhucENBdVczNFVTTHFobGhNU1BnUm8wYnB0c3QzTzZYYWFvYmlWQ0VKTWllWTBERTAzaG0wSFU0eDg5ZHFYSkJSbUVTRGJpdXF5MWJwaXdNTHVIOVhBR2wzT1c3Y3N2NjQvWlJ3VnNvU3VPTStZcWZ1ZVFmTkZDcUp2d3ZVNkxUKzI3K0JoUG5aa0gzT3c5WjhOaFplaGFZbkpIRGJBNW9QQlhuUHl2T2ZsRTJERzh4RmthYkhtUkdJR3NqTWE4NStWNXo4cS9VUEZnbHcwMnBOa1pmSjN6NU5uSHZJQ2ZtRkIzVzYzN2JEYVBNNVlkSTIrV3krdFFGYkp0TjF0c1diY3g2Zm5QQXBYTk9vTGpzVEJEQnVCRWNRdWUwb1lJR0Z0b1VKMnJCTE1pTFFkaG5BcFlNbGFqZXUxQ2hpRmdYa0lTekx0U2dKZGtyRzdZd3dnNFowSHpOQXZSaUpIblNoQ0MyNjcvUkdzY3VYWWMwZnBqVGxMTWRodndkVnYyVWNJTkJyQ2NUK0E0eFZqMWxONWptSzIxYXRFV01kQmUwS2Z3MlFsWDZISU9oZURMUmRic2tuRHFLeC9IU2lKOUJadFJxMHk4eFBOSWNDdlNxZWxVOUtvYlFOaElHK3lHekRkZjdBRUdnVjZWVDBxbnBWTU5JRWp1Y1NnREZEZ1pBVVNXcmJ4WUJpdVZMUWxudkVhc2VCaDlTK1laNWg1dFNHc0RkRkx4c09YR2pVNS9CRm12UHU5ZWZkNjgrNzE1OTNyejd2WG4zZXZQdTllZmQ2OCs3MHlpbjY0TFdCdVFSMXR0Ym9OOVNVNlZHV0J2di93Qk8vOW9BREFNQkFBSUFBd0FBQUJENzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc2b01qZzR4dlAzNzc2bXB6eXl2emVwcjc3NzNqNVQvejVlL3o3NzY0cHY4QXZxLzZJRysrKyt2Yy93RC9BUDhBdGY4QXZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnYveEFBZUVRRUFBZ0VGQVFFQUFBQUFBQUFBQUFBQkFCRXhFQ0FoVVdGQlVQL2FBQWdCQXdFQlB4RDliTWRCcXpNRVVNejJsbjJCaEVScDJCYlVXQ1puaExCeEFweFBLSW1aUTFEOTJjUkR4ckFXb0F0MGl3aHNib0RUSHJwQVJqQ2pXaG01dEdvTXpMOVMvVXYxTDlTL1VYTDlqLy9FQUNnUkFRQUJBUVVJQXdFQkFBQUFBQUFBQUFFQUVTRkJZWEhoSURGUmdaR2hzZEhCOFBGUUVQL2FBQWdCQWdFQlB4RCtzYjMxOXVOWURvN3RQUkZVMEU4NXp2a29kVnZtTjdlNCtLdEpVKzN3N3pKK0dLelZiR0dSWXRWcVcvVEZnWXFCZFAzSUM5VWFGWVhRVkZ1WlAxSVVvMGNJWE5OOWlZNVFEbXlsSGgrT213M0JIaTJYQVN6T3g4ZjR1MTdqRkhrRmJGOVIrZ0lWdDVGdzhaKzR3cGcxRzZ2eUV2QkJPYlpFVWJoZVRZUVNqTngycXE0WVpuZVVWZGVKZnl1bjFHc3JRMUNGbXNxRlVVV1pucWZVYXdCVUxrZTRNSlM0TGJmbGpaeWNPQnk4N0wwS2pjeHFxd2J6dmIzbUs2YXpGZE5aaXVtc3hYVFdGUzE5Q1czbkcxMDVmMlAveEFBbUVBRUFBUU1EQkFNQUF3RUFBQUFBQUFBQkVRQWhNUkJCWVNCUmNZRXd3ZkJ3a2FIUi85b0FDQUVCQUFFL0VQNU52Y1U0WmtpNStBdEtRMEhyQlo3cWVlSnZtaml0QU5lZ3I5TjlVekdNQWpzc2FTR2t4QjZOZnB2cXYwMzFYNmI2cjlOOVYrbStxUE1VSnIvU2l4OCtub2c0b3FtQlBia3NER05zYktTRS9FUzB4VEhBMkZrU3VnRUlRU1dYaGNBc0ZXVmZUUjJDdDFGaEs3RlRKdEFwZUhTREN6SjNmdWhNRVRBdkhRME9MbTlsbzFnREprZWhnd1lORCt4RStXRGxBNzBicDU3b2NJa201a3B0M2Z0ckNNSUlSQkVRYVAwS1V3WFdXdWtPSWt2RDRIRmR3ZFBnbEwxakF1SlYrWStDWUxCVS9pd09BVjJ4WmdNaERBTVlQajFCdElnWWx2QktXL3lORkpCRzJwc20xREE5Z29xd2gyR09BWVQwa0paR25pa0p3MUIySndaQnZSaWJlaEFnN2lKMWx0aWtraUw4Z2prYU1CRlEvd0JuZndjKzdyZFBhWXNKSi92WFBObGdkOEJoYTdSOXNSSjNWSkhLeEd1ZVpGYjFkREVac0syckx6MFpDaW8ya203OGVoQ1Q0RVN0Kyt2S3FKTjd2K2s2QkxKVGRPSFdmaDl2eDNzYlJXZTQ5YU5PRVFoK2R1c2FOUzBFSS9RT1JveUlTbDNuMmhYZDR1b0dIeXFBUUd1VEphRkd6YTdZWkxhWTBtV2Z0ZHcwbDExekJiV1RKdjFEc3NuQ2twSkVkU0lDSmFXUzQ0ZkhReXIrR1RFbnRNOTllTTVkRERjZ0gxUXhFUzVLQ2IydUp6dUZNcVNEUzhTbkNMd2lsbFRBYkNyc283UE5oeVF2eHRGQktCUWhuc0xlRzNKQzlaejhJVjNkQkxLZTdZQ0NwckxSYXZGbTkza1RLVWdYTWtKbFYzVlorQis2c1RGWURZRmJXRGRGQWJBcE1HNG1RYktCRVJCSzRGbnVpRWllU21BRmRLOEo0UUhRelpzek5WeXkvQmNzYjZFbW1DUEo4Sk1pK1o2R2JOblBNMCt4Y3oyRkRVS0JkZ0FBNEtrYUNmT3dDOGFBU3RYcVk2U3Q0Yk1Zb3hBU0IrSjlnd1RGNWlJV21BdE1TVkRZb0tKM0N1ZG1KM1pvRWVKZ2J5WWV6NHYvQVA4QS93RC9BUDhBL3dEL0FQZ2dSTDZ4UWVpb2IwUlYvQmI4anNvQTNiRW1Nall3SlVxQ1ZqK1R2Ly9aIn0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTA0LTE2In1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wNC0xNiJ9LHsiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbImQwMDJmNGMwYTg4YTdjMjdkNTIwMWM2YTUxYTBlMDU0NmI2ZDhmNzUiLCI2N2VmMGY0YzM2YjUxNzgwYTNmYWNjMGE5MjMyNDU5M2FiMTk2Njg1IiwiYjk1MjA2MjI4ZWFkNDkyYjllMTQ1MDRhYmVmY2IyMDU0NmIwZTUzYiIsIjliZThjODZmM2I3ZGE5ZjUwMjZhNTY2MDdiMmI5M2YwZmZkMDU4YWUiLCI3Mjk1NDk5NTMxYzBmYjA1OWQ2Yzg4ZDFiMjk2NjU1NDc3NTdjNmM2IiwiZWE1NDQyYzljYzU2ZjY0NTZkYjUzNDRiMzY5Njg5YzY0N2E3YTFlMSIsIjA3ZTQ0YTdjMmU3ZTBiNjA1NGMwMjkyZmJhNjkxZWViZmRiNDgxYmQiLCI3NWQ5MjY2YTc5NTk5ZTljYWM2MDRhYzJiZTNmMDNhMGYwNDQ0ZDc0Il0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbImQwMDJmNGMwYTg4YTdjMjdkNTIwMWM2YTUxYTBlMDU0NmI2ZDhmNzUiLCI2N2VmMGY0YzM2YjUxNzgwYTNmYWNjMGE5MjMyNDU5M2FiMTk2Njg1IiwiYjk1MjA2MjI4ZWFkNDkyYjllMTQ1MDRhYmVmY2IyMDU0NmIwZTUzYiIsIjliZThjODZmM2I3ZGE5ZjUwMjZhNTY2MDdiMmI5M2YwZmZkMDU4YWUiLCI3Mjk1NDk5NTMxYzBmYjA1OWQ2Yzg4ZDFiMjk2NjU1NDc3NTdjNmM2IiwiZWE1NDQyYzljYzU2ZjY0NTZkYjUzNDRiMzY5Njg5YzY0N2E3YTFlMSIsIjA3ZTQ0YTdjMmU3ZTBiNjA1NGMwMjkyZmJhNjkxZWViZmRiNDgxYmQiLCI3NWQ5MjY2YTc5NTk5ZTljYWM2MDRhYzJiZTNmMDNhMGYwNDQ0ZDc0Il0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IDUgU2VyaWVzIHdpdGggTkZDIn0sImRlc2NyaXB0aW9uIjoiWXViaUtleSA1IFNlcmllcyB3aXRoIE5GQyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyLCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50IiwicmVtb3RlX2hhbmRsZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJREhqQ0NBZ2FnQXdJQkFnSUVHMEJUOXpBTkJna3Foa2lHOXcwQkFRc0ZBREF1TVN3d0tnWURWUVFERXlOWmRXSnBZMjhnVlRKR0lGSnZiM1FnUTBFZ1UyVnlhV0ZzSURRMU56SXdNRFl6TVRBZ0Z3MHhOREE0TURFd01EQXdNREJhR0E4eU1EVXdNRGt3TkRBd01EQXdNRm93TGpFc01Db0dBMVVFQXhNaldYVmlhV052SUZVeVJpQlNiMjkwSUVOQklGTmxjbWxoYkNBME5UY3lNREEyTXpFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUUMvandZdWhCVmxxYWlZV0VNc3JXRmlzZ0orUHRNOTFlU3JwSTRUSzdVNTNtd0NJYXdTREh5OHZVbWs1TjJLQWo5YWJ2VDlOUDVTTVMxaFFpM3VzeG9ZR29uWFFnZk82Wlh5VUE5YStLQWtxZEZuQm5seXVnU2VDT2VwOEVkWkZmc2FSRnRNamt3ejVHY3oyUHk0dklZdkNkTUhQdHdhejBiVnV6bmV1ZUlFejZUblFqRTYzUmR0Mnpid25lYndURzVaeWJlV1N3Ynp5K0JKMzRaSGNVaFBBWTg5eUpRWHVFMEl6TVpGY0VCYlBOUmJXRUNSS2dqcS8vcVQ5bm1ET0ZWbFNSQ3Qyd2lxUFN6bHV3bit2K3N1UUVCc1VqVEdNRWQyNXRLWFhUa05XMjF3SVdieGVTeVVvVFh3THZHUzZ4bHdRU2dOcGsycVhZd2Y4aVhnN1ZXWkFnTUJBQUdqUWpCQU1CMEdBMVVkRGdRV0JCUWdJdnowYk5HSmhqZ3BUb2tzeUtwUDl4djlvREFQQmdOVkhSTUVDREFHQVFIL0FnRUFNQTRHQTFVZER3RUIvd1FFQXdJQkJqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFqdmp1T01EU2ErSlhGQ0x5QktzeWNYdEJWWnNKNFVlM0xiYUVzUFk0TVlOL2hJUTVaTTVwN0VqZmNuTUc0Q3RZa05zZk5IYzBBaEJMZHE0NXJuVDg3cS82TzN2VUV0Tk1hZmJoVTZrdGhYN1krOVhGTjlOcG1ZeHIrZWtWWTV4T3hpOGg5SkRJZ29NUDRWQjF1UzBhdW5MMUlHcXJOb29MOW1tRm5MMmtMVlZlZTYvVlI2QzUrS1NUQ01DV3BwTXVKSVpJSTJ2OW80ZGtvWjhZN1FSalFsTGZZemQzcUd0S2J3N3hhRjFVc0cvNXhVYi9CdHdiMlgyZzRJbnBpQi95dC8zQ3BRWHBpV1gvSzRtQnZVS2lHbjA1WnNxZVkxZ3g0ZzB4TEJxY1U5cHNteVB6SytWc2d3MmplUlE1SmxLRHlxRTBoZWJmQzF0dkZ1MENDckpGY3c9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFmQ0FZQUFBQ0dWcytNQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUhZWUFBQjJHQVYyaUU0RUFBQWJOU1VSQlZGaEhwVmQ3VE5WMUZELzNkNTl3ZVFTSWdTOUFRQVhjRkxBUVppOWZwZVZ6MXRZL1dUWnI1V3hwYzdXNWtuTGE1akkzWjg1c3JTMm5NMnNqdFd3WlM3SVVINEg0eENuRVF4NERBWkY3NFY3dXM4ODV2OS9sSW5CdlZKL0I0UHY5bnUvNW51LzVudk01NTZmekEvUXYwSGIvSXJYM1ZGS1BvNDVjbm00aW5VSVdZd0xGUm1aUVV1d2pGRy9OMWlSSGgxRVowTlJWUnVkcXQxQmQrMm5TS3lTL09oeXMwK2xrM2UvM2tROXF2RDRaVXRhNFZWU1V1WTBlaXB5aVRoQWZvY29PUlZnRHV1dzNxS1JpQWQzcmJjRXRqVGpZSW9mNldhSHNDbXpWUFdDTXgrY2doOHRMcVdNS2FNV3NVakxxbzJSdEpJUTBvT3ptZXJwUXU0ZXNaZ3NPTmtHeEg3ZDBrZHZUVDE3czRPTVU3Vkk4WmhqZ0dhTStBcTlpRU51OFBpZjF1ZHowN013dktXZjhHbFZvQ0VZMDRQQzVXZFRhWFlGYlI4dk52TDUrM0tnZmI1eE5NeWE5UmFtSml5bmFNbEdUVnRGbHI2YmE5dStwcW5FWDR1TXVSUmdqU1lFaHJON3V0RkZlNmxxYWw3TmZrdzVpbUFHSHluUHBiazhWbVkweHN0bnB0bEZDVkNZdHpUdUJOODNRcE1MalR0ZXZkUHpTVW5KN2U4bWtqeFozOWZYYktEZmxkWnFidlUrVFVnR25CVkY2ZlEyaVBIZzRXMTZVV1V3dnpiazE2c01aRStQbjBwdno3SlNldUF5ZXM4bGNwQ21hS3VvL3ArcVdyMlVjd0lBSFdydlAwWUV6aFhBdExBYnNzSGhwN2lHYW12eWlqUDhyeXFyWFVXWDlYb293eHlBdWZOQnJwNDNQT0JGWFpsa2Y4TURSaXFjcHlvd0F3cHV6MngrZld2ei9EdGRlOXNtc3p5Z3RjUjZDMXdiZHpCbDZPbHE1V05ZWTRvR2F0aEpNcmtURXgwakFSU0hBVnMrNXJZa1FOWGIrUWdmUExzUTZnWHlJbnNyZVFmbXBtN1JWRllmTDg2bjFmaVVPa1l2U2hrVVB4dmJ1a3pveTZLMWloTTFobzNYelc2RXZTZlhBK2RwaVdHYVdkK2RvWHpMem1Hd0tZRkxDQXNSQWxQQkFoTWxDRlhVN3RCVVZQcjhIZ1ZjSkhXcStGMDBwbHIrRE1UZHJQNHp2eFkxMWtOTWh4VCtTZVRHZytkNFY1TFFKaXR5VUdKTkI4VkZac2pnWUJaTS9JSS9YQ1RrajBxeURPcEYyQVZRMTdDSWpVcC9EblQxVWtMNUY1Z2RqK3NTMXdnMWdFM2dpZ202MGZDWHpTblBYYnlBUGJJWHYrSURwRTE2VGhhSElTOXNreWhsbU1FNUYzY2ZxQUtocTJDMEU1UEgxZ1lhWGFMUERrWkcwSERKT25LV0hwNTFJMHo1U091eDhlMVdBdVp6ZEhRclRrcDhUbWpYb0krbGEwd0dac3p1YnFiTzNpZlE2QS9XN3ZWU1lzVjNtUjBKS3drS2M0V0hpQmttUjhJM0NDZ0k4N29PTDRxelQ1UCtSVUpCZWpFT2dBUEs4aFlQemF0TStlSVRwMklPOXlUUW1lcm9tUFJ4eDFxeEFjc2lsZS91YlNlRWJjV1FHWUVDZ2hjTFkySHlLam9nakgyNWhNcGpwVXYxT3VnbGk0ZWgyZVJ3ME8zMmJKamt5dUNnTnpnMHZ6bFlNU2lTczB1b280TUc3aE1PakNFYVgxeUZFMG5TdmpCenVUbkVwSzg2WjhJb3FGQUl1Ync4a2c5QXJFYVJFV1NaSStqSDRYYnA2ZzlFOUVuSlQzb2FSekROK01VSkJRREhuNTZhOG9VbUVCdXNPeEJzL041K3RKRWJQa0FGRGo4VUd2T3MvSVd2Y1NnbEdCaHZTNy9GVFlmcFdHWWREWThmUEF4V1NBMzVzVEM0cDQrTG00QWFxSW9QZVF0ZnVmSzZKaDBaaHhsYnNVWE9TbVhOaWZENVpUQWt5RG9mYmJjY2x4bkE4V05BcXhDYlJOeWtoWHhRcGFEdzY3ZlhVWWJzaUcwS2h0djJvZUl2aDhyaFFNWU9jRUFxWEcvZUkrem5nT2M1eXhyOHE4MklBTTFjL0ZMRk9wbHF1NWVGUVhyTVp6R2NWQ2pZYkxXRzVJNEJUMWV1UnJsYnh0Tk90TWl0RERFaExYSUl5bkFBdnVPRVdFM1gzTmRBZnQ5NFZnYUc0MlhJUXQwWlg2UGVDRS9xUUZlOXJLNkh4N1lVNTBLdkg3Zlc0ZlMrcTdLS0JKeHNnZ0JYNXBTQUdoMWpJclZoNXpRNnczUmZhYWhCWG0vYUNiQ1pUakNVRlVUeVdacVc5cDYyTWpKUFhWcU9yUGdNTzROdjc0R2tmK293ZnROVkJEUW5qRkpxSFN3MTdwWHZoV1c1S1pxZS9RNDlOL1VTVENBVldvUVhGSUhCSFhYZTNGUHJVRHN1R0RtdEYvaEhLVEhwZWt4aGlBT1BJK1NKcTZTNkhGNEk5WVd6a0JKVG80NmlVTXpXcDhQaXIvUmlkdUx4S1lzU2tzVjh2TGxPUXZoR1gyWWxSME9CaEJqQyt1L2dFY3ZZMEFwSzdZazQxTnhqUFNRbldGSFRGNjZVcmpnZXZCOEN1NWErbDJ2WVNSUHR1VkRvNzNoaGRNU0huVVg3dFRqc1ZaR3hBbC9XcHRpT0lFUTFnbkwyOW1YNi90UjF0bWxrWWo4VzRYK0NTaldjVURHWTFOcFMvQzdoU0txaU1MTS9sMlFtU1daNzNEZHorZ2lvOEJDRU5ZUFE0NnFua3p3WFVicXZCa3hqVVFzV2ZaRmdidW8zckFmK3dON2pPTzkwK3lueDRQaTNMKzBuWUwxU2NoRFVnQVA0Z1BWLzdJZDFxKzFIU2htdUdrSXFXUlBneXhNRnFQOEhmalRualh3WTViUWZiSmN0Nk9JektnTUhvdEYvSGUxZWdzYXhIU3FHNndmZG1RNXg4TnlURkZxQmNwMmlTb3dIUjN5azUrMzZoRjd2WEFBQUFBRWxGVGtTdVFtQ0MifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMC0wNS0xMiIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWXViaUtleSA1IE5GQyIsImNlcnRpZmljYXRlTnVtYmVyIjoiVTJGMTEwMDIwMTkxMDE3MDA2IiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjEuMSIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4zIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIwLTA1LTEyIn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMC0wNS0xMiJ9LHsiYWFndWlkIjoiZmNjMDExOGYtY2Q0NS00MzViLThkYTEtOTc4MmIyZGEwNzE1IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiJmY2MwMTE4Zi1jZDQ1LTQzNWItOGRhMS05NzgyYjJkYTA3MTUiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiWXViaUtleSA1IEZJUFMgU2VyaWVzIHdpdGggTkZDIn0sImRlc2NyaXB0aW9uIjoiWXViaUtleSA1IEZJUFMgU2VyaWVzIHdpdGggTkZDIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NiwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9LHsibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJlZDI1NTE5X2VkZHNhX3NoYTUxMl9yYXciLCJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyIsInNlY3AzODRyMV9lY2RzYV9zaGEzODRfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo4LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjgsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlEU2pDQ0FqS2dBd0lCQWdJVVRuYmJHSVIyTkh2enFJS0ZBZVF3RzFYQmlzMHdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFRWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPc1hqM2swNEJhbjRUWWR0WktxRC9PUEp4eUR5YVBtQ0JVRlVpYVpJZ1R0ZVpuajNYMjVEaGdwWlpYc0M0RDB5ZEljcmxBNndOVUluT1JML0w5ekJiVEVJTUFWTUdvNmc3VUtBbWIyTUY2QUhibmhZSmQ5ZWlrdXBWTldTaEhOWU5jNEdCZE8xWU42QWZVcXZKaEhiZTNWNFNOTVBtQlJFS0pQVno3VGh3Z21nZ1RlOFdzMkswL3dzcXYyd1NFN3BiQ0JzVVpoSVg1MWJaTTNwcUR3SlBUbVJGRXZ0MC82dEc1ZU84RjNqMTRPWHFmRWhtam4xVnZ4S0RZUU9MWkF4Q3d3Z0MwUDRDZGZXdjN5OFBTUjhJMzU0aE8xWStHek5qdklxWDM4TktMeXd1SVlIRmVyT3hObHhFTUJ2RmhZQnVSdVlBa2tnVWFQcU42VUJoc0lMcnNDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNDb1JIaGl5Tm5iblhSV0lMNlpCWG9CWDlZVE1COEdBMVVkSXdRWU1CYUFGQ0FvVUNFYnBGcGI2RlBMblozRjVQeHNMM29mTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFDUUZhZkpJMS81V2c5Q0VFaW1FMVJQNTRSZ1F3VE5UT09Rc0xBQ1RlK3JJdGxGUXpDOVpEaHJWODI4eVg3anp5K0FBc3AzaXpLN1QxdGgyZGw3bSt0dTBzdzJQYS9vbGMwMm50NlB5SXczNDhnYUh6aEkxKzBLRTQ1cXh2RkRlTDJsTXhiUGZDWXZ5RUVhWXpqaVFFTFU1OTUxcFhHV3lLTWEvNGZMdE8rWktPWGhNdVZlcTRyWERQSTU0VzZKSE9pQWFpS2Rpdys1ZTNjMmt0L2pGSVF0TTZ2TVhnOUxORnpkakVUTnQyMFZYOVFldlJwRlpmdWNNRzl3Q2FRRG9GbFB6cFRNSktoUGV2L2ltSm1aWWhLZnIwbExjZW10cWpJeExBb3FaZE9ZZkhCZzYrdkFjZFBJL2lhdUdwVUF2N1grVUtObUR3aloyQmFINHNMd2hCMm0iLCJNSUlEUGpDQ0FpYWdBd0lCQWdJVVh6ZWlFREpFT1R0MTRGNW4wbzZaZi9iQndpVXdEUVlKS29aSWh2Y05BUUVOQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU1aNi9UeE04cklUK0Vhb1B2Rzgxb250TU9vLzJtUTJSQndKSFMwUVpjeFZhTlh2bDEyTFVoQlo1TG1pQlNjSVpkMVJueDFvZDU4NWgrL2RoSzdoRW03SkFBTGtLS3RzMWZPNTNLR05MWnVqejVoM3dHbmNyNGh5S0YwRzc0Yi9VM0s5aEU1bUdORDZ6cVljaENSQUhmcllNWVJERjRZTDBYNEQ1bkdkeHZwcEF5Nm5rRW10V21NbndPM2kwVEF1Y3NyYkU0ODVIdkdNNHIwVnBnVmRKcHZnUWppVEpDVElxK0QzNWh3dFQ4UURJdituR3ZwY3lpNXdjSWZDa3p5Q2ltSnVraFl5NktvcU5NS1FFZHBOaVNPdld5RE1UTXQxYndDdkV6cHc5MXUrbXNVdDRyajBlZm5POXMwWk93ZHdNUkRuSDR4Z1VsNVpMd3JyUGtmQzEvMENBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUI4R0ExVWRJd1FZTUJhQUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUU13RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCRFFVQUE0SUJBUUMzSVcvc2dCOXBaOGFwSk5qeHVHb1grRmtJTGtzMHdNTnJkWEwvY29VdnNyaHpzdmw2bWVQTXJiR0pCeUoxWG5xdUI1c2djUkVORnhkUUZtYTNtaW84VXBmMW93TTFacmVYckowbUFERzJCcGxxYkpueGl5WWErUjExcmVJRlRXZUloTU5jWktzRFpyRkF5UHVGakNXU1F2Sm1OV2U5bUZSWUZnTmhYSktrWEliNUgxWGdFRGx3aWVkWVJNN1ZvbEJObGxkNnBSRktsWDh1c3Q2T1RNT2VBRGwyeE5GMG0xTFRoU2RldVh2RHlDMWc5K0lMZnozUzZPSVlnYzNpcm9SY0ZEMzU0ZzdyS2Z1NjdxRkF3OWdDNHlpMHhCVFByWTk1cmg0L0hxYVVZQ0EvTDhsZFJrNkg3WGszNUQrV1ZwbXEyU2gveFQ1SGlGdWhmNHdKYjBiSyIsIk1JSURTRENDQWpDZ0F3SUJBZ0lVRHFFUncrNFJuR1NnZ3hnVWV3SkZFUERSWjNZd0RRWUpLb1pJaHZjTkFRRUxCUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURJN1huSCtadkR3TUNRVThNOFplVjVxc2N1Ymx2VllhYVJ0M1liYXhuOWdvZEx4NXN3SDBsWHJkZ2poNWg3RnBWZ0NnWVlYN0U0YmwxdmJ6VUxlbXJNV1Q4TjNXTUdVZThRQUpiQmVpb1Y3Vy9FK2hUWlAvMFNLSlZhM2V3S0JvNlVMZU1uZlFaRHJWT1JBazh3VExxMnY1TGxqNXZNajdKdE9vdEthOUo3bkhTOGtMbXpYWFNhajBTd0VQaDVPQVpVVE5WNHpzMWJ2b1RBUVFXckw0L0o5UXVLdDZXQ0ZFNW5VTmlSUWNFYlZGOG1scUsyYngyejZva1ZsdHlEVkxDeFlicFVURUx2WTF1c1IzRFRHUFVvSUNsT200Y3Jwd25EUkxWSHZqWWVQR0JCLy9wRXl6eEEvZ2NTY3hqd2FIMVpVdzliblNiSHl1cktxYlRhMUt2akFnTUJBQUdqWmpCa01CMEdBMVVkRGdRV0JCVHF0MEtRbmd4N1pIcmJWSHdEdW54T245aWhZVEFmQmdOVkhTTUVHREFXZ0JUUzd1OWFJbzA2YlZ3amx6M3loZFVtOFNWN2tqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQTRHQTFVZER3RUIvd1FFQXdJQmhqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFxUWFDV014VEdxVlZYN1NrN2trSm1VdWVUU1lLdVU2K0tCQlNnd0lSbmx3OUs3SGUxSXB4WjBoZHdwUE5pa0tqbWN5RmdGUHpoSW13SEpneHh1VDkwUHczdllPZGNKSk5rdERnMzVQWE9melNuMTVjRkF4MVJPMG1QVG1JYjhkWGlFV09wem9YdmR3WERNNDFaYUNEWU1UN3c0SVF0TXl2RTd4VUJacTJianRBbnEvTkRVQTdiZTRIOEgzaXBDKy8rTktsVXJjVWgrajQ4SzY3V0kwdTFtNkZlUXVlQkE3bjA2ajgyNXJxRHFzYUxzOVRiN0tBSEF3OFBtcldhTlBHMmtqS2VyeFBFZmVjaXZsRmF3cDJSV1p2eHJWdG4zVFYyU0J4eUNKQ2tYc05EMDVkQ0VyVkhTSklzK0JkdFRWTlk5QXd0eVBtbnliMHY0bVNUenZXZHc9PSIsIk1JSURTRENDQWpDZ0F3SUJBZ0lVVWNtTVh6UklGT2dHVEswVGIzZ0V1Wllaa0JJd0RRWUpLb1pJaHZjTkFRRUxCUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JCSURFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURtNTU1YldZOVdXK3RPWTBySVdIbGRoK2FOYW5vQ1pDRmg3R2szWVpyUW1QVXcwaGtTRzZxWUhRdFArZlp5UzMzVkVydmcrQlFxbm11bWdOaGZ4RnJrd0VaRUxlaWRCY0M4QzRBZzRucXFpUFdwenN2STE3TmN4WWxJbkxOTEZjWlkvK2dPaU42Wk9UaWhPNS92QlpNYmo5cmlhQWNxbGlZbU5HSlBnVGNNR2FFQXlNekVNTnkybm02RXArcGpQNWFGNmdpMjF0L1VRRnN1SjFqMlJqL3luTS9TZFJ0K2VjYWw1T1lvdHhIa0ZiTDl2dnYyQTJPdjVJVFpDbHc0Yk9TOW5weXBRaW1PWjVRQVl5dG1ZYVFwV2wvcE1ZejZ6U2o4UnFrVkRORUpHcU5mVEtBMml2TFl3WDZsU3R0TVBhcGcwSjg0bDlYMHZvVk4vRnBTNFZDVkFnTUJBQUdqWmpCa01CMEdBMVVkRGdRV0JCUWdLRkFoRzZSYVcraFR5NTJkeGVUOGJDOTZIekFmQmdOVkhTTUVHREFXZ0JUUzd1OWFJbzA2YlZ3amx6M3loZFVtOFNWN2tqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQTRHQTFVZER3RUIvd1FFQXdJQmhqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFZTXpnTHJKTElyME9vdlFuQVpyUklHdWFiaUhTVUtTbWJMUldwUmtXZUF0c0NoREVIcFhjSi9iZ0ROS1lXb0hxUTh4UlVqQjRDeWVwWWV2YzNZbHJHOG83ekh4cGZWY2FvTDVTZXVKa3pIeEtuNGJUYVNwOStNdndhbW5wNjRrWk1pTmJGTGtuZlA5a1lLb1JIa01XaGVSSjFVc1AxejRTY21rQ2VJTGZzTXM2dnFvdnFqV0NsRnNKcEJjc2x1WUhXRjdiQkoxbjRSd2crQVRFb3BZNElnR3Y2WnZ3YytBOXIrQVQyaHFwb1NrWW9BbCtBTll3Z3NsT2Y5c0plMFYrVEE5WVkvVWxhQm1QUFRkMC8vcjl3dmNlUFdaa1BqS29BQy96VU5oZkRiaDRMVjhHSHMzbHlYMlhvbUwvTE5jOEpZenlJYURFaEdRdmVvUGhoL3RyMWc9PSIsIk1JSURTakNDQWpLZ0F3SUJBZ0lVUjM4bXEyNlNmMnN6VlYyQmRHNldFTjdrdVdVd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVJZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU5ZMFdiOW9Qb1JvS29ReVdQYUpwejExdnJXVGc2elR0bU5qMlZvS1JueXZLR1JxcHpiODN3NWw2WUE5NlVZa1lCRFFQMGlsTzJEUGU2d1dxVlI1ekRmUnpkY0g4YmgrTDdkR0d2YWU2aFJUWmhrRmtDcFhEczRIY2NrbnJEZjhGQ2xKN0hlMzlKZjQyL0cxUW0yeno5V1dtclBYdGdpSy94MDVHanNRZkd1REcxemY1UVRVVWllOGx3eW1LM1RmZE92TmVlSkFBUGUycG43SXRmUmIrclZyTldpRHpsUm4ydk5uWjJ3UG80d0gvV0o2ZGhYWkcrck1XVCthNkJvY2cxVWZJdzZrZHVuRzRiVHBaenN2YWNGWXlSMG1wZitEZU9ucFNXQW15d0pXSHZUbGYyWVh4RnllWGNUQUNkUWxjTU5HSjJWaFpRNDh4dFA1L1JCUC84a0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ2h5NDJva2lxY1RTMWlxYS9IUldqa0JuNEgvTUI4R0ExVWRJd1FZTUJhQUZPcTNRcENlREh0a2V0dFVmQU82ZkU2ZjJLRmhNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUFuK1JISVBidE1FRE5kVDFnOEgvUml0QWtVZExnQXQxdFdHV25sajlrbmJ2NC80R2xYN0M5cDQ1ZWZQTzkvYVpMNk9WMVhSS0JpNkttdEJXNUs3bnVZRW5NeC81QnFCU2JMVDdyaGR1QzQ5VEJlTWI5UEhkWHNUbFNWTlllZnIxZEdpZHI0ajB4VkJRTGIxcmtuREFiZFdEektmdm5heUtPOEZyd2U3SHg4NDNNRy9ySitjMFhydVV2YmZWVENITGlJV2hNN29ORGhMOHhvYjZ4VW85S0xLY1NMK0l0WXNPMy85V2I4UTlHanNxTDRGWHNEY0cxU2FZaDdLcGZ1TW1PaXhxekpaTzJuSWljUFlSZzFJMlN1aVVmWU83MHRtZEhjYmwra1NRbVNZdDdycTR2aUlMZzJHeDNqOXJJVHVXVGpiYVVhU1NReGdPbU1TSHV5ek1BQyJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFmQ0FZQUFBQ0dWcytNQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUhZWUFBQjJHQVYyaUU0RUFBQWJOU1VSQlZGaEhwVmQ3VE5WMUZELzNkNTl3ZVFTSWdTOUFRQVhjRkxBUVppOWZwZVZ6MXRZL1dUWnI1V3hwYzdXNWtuTGE1akkzWjg1c3JTMm5NMnNqdFd3WlM3SVVINEg0eENuRVF4NERBWkY3NFY3dXM4ODV2OS9sSW5CdlZKL0I0UHY5bnUvNW51LzVudk01NTZmekEvUXYwSGIvSXJYM1ZGS1BvNDVjbm00aW5VSVdZd0xGUm1aUVV1d2pGRy9OMWlSSGgxRVowTlJWUnVkcXQxQmQrMm5TS3lTL09oeXMwK2xrM2UvM2tROXF2RDRaVXRhNFZWU1V1WTBlaXB5aVRoQWZvY29PUlZnRHV1dzNxS1JpQWQzcmJjRXRqVGpZSW9mNldhSHNDbXpWUFdDTXgrY2doOHRMcVdNS2FNV3NVakxxbzJSdEpJUTBvT3ptZXJwUXU0ZXNaZ3NPTmtHeEg3ZDBrZHZUVDE3czRPTVU3Vkk4WmhqZ0dhTStBcTlpRU51OFBpZjF1ZHowN013dktXZjhHbFZvQ0VZMDRQQzVXZFRhWFlGYlI4dk52TDUrM0tnZmI1eE5NeWE5UmFtSml5bmFNbEdUVnRGbHI2YmE5dStwcW5FWDR1TXVSUmdqU1lFaHJON3V0RkZlNmxxYWw3TmZrdzVpbUFHSHluUHBiazhWbVkweHN0bnB0bEZDVkNZdHpUdUJOODNRcE1MalR0ZXZkUHpTVW5KN2U4bWtqeFozOWZYYktEZmxkWnFidlUrVFVnR25CVkY2ZlEyaVBIZzRXMTZVV1V3dnpiazE2c01aRStQbjBwdno3SlNldUF5ZXM4bGNwQ21hS3VvL3ArcVdyMlVjd0lBSFdydlAwWUV6aFhBdExBYnNzSGhwN2lHYW12eWlqUDhyeXFyWFVXWDlYb293eHlBdWZOQnJwNDNQT0JGWFpsa2Y4TURSaXFjcHlvd0F3cHV6MngrZld2ei9EdGRlOXNtc3p5Z3RjUjZDMXdiZHpCbDZPbHE1V05ZWTRvR2F0aEpNcmtURXgwakFSU0hBVnMrNXJZa1FOWGIrUWdmUExzUTZnWHlJbnNyZVFmbXBtN1JWRllmTDg2bjFmaVVPa1l2U2hrVVB4dmJ1a3pveTZLMWloTTFobzNYelc2RXZTZlhBK2RwaVdHYVdkK2RvWHpMem1Hd0tZRkxDQXNSQWxQQkFoTWxDRlhVN3RCVVZQcjhIZ1ZjSkhXcStGMDBwbHIrRE1UZHJQNHp2eFkxMWtOTWh4VCtTZVRHZytkNFY1TFFKaXR5VUdKTkI4VkZac2pnWUJaTS9JSS9YQ1RrajBxeURPcEYyQVZRMTdDSWpVcC9EblQxVWtMNUY1Z2RqK3NTMXdnMWdFM2dpZ202MGZDWHpTblBYYnlBUGJJWHYrSURwRTE2VGhhSElTOXNreWhsbU1FNUYzY2ZxQUtocTJDMEU1UEgxZ1lhWGFMUERrWkcwSERKT25LV0hwNTFJMHo1U091eDhlMVdBdVp6ZEhRclRrcDhUbWpYb0krbGEwd0dac3p1YnFiTzNpZlE2QS9XN3ZWU1lzVjNtUjBKS3drS2M0V0hpQmttUjhJM0NDZ0k4N29PTDRxelQ1UCtSVUpCZWpFT2dBUEs4aFlQemF0TStlSVRwMklPOXlUUW1lcm9tUFJ4eDFxeEFjc2lsZS91YlNlRWJjV1FHWUVDZ2hjTFkySHlLam9nakgyNWhNcGpwVXYxT3VnbGk0ZWgyZVJ3ME8zMmJKamt5dUNnTnpnMHZ6bFlNU2lTczB1b280TUc3aE1PakNFYVgxeUZFMG5TdmpCenVUbkVwSzg2WjhJb3FGQUl1Ync4a2c5QXJFYVJFV1NaSStqSDRYYnA2ZzlFOUVuSlQzb2FSekROK01VSkJRREhuNTZhOG9VbUVCdXNPeEJzL041K3RKRWJQa0FGRGo4VUd2T3MvSVd2Y1NnbEdCaHZTNy9GVFlmcFdHWWREWThmUEF4V1NBMzVzVEM0cDQrTG00QWFxSW9QZVF0ZnVmSzZKaDBaaHhsYnNVWE9TbVhOaWZENVpUQWt5RG9mYmJjY2x4bkE4V05BcXhDYlJOeWtoWHhRcGFEdzY3ZlhVWWJzaUcwS2h0djJvZUl2aDhyaFFNWU9jRUFxWEcvZUkrem5nT2M1eXhyOHE4MklBTTFjL0ZMRk9wbHF1NWVGUVhyTVp6R2NWQ2pZYkxXRzVJNEJUMWV1UnJsYnh0Tk90TWl0RERFaExYSUl5bkFBdnVPRVdFM1gzTmRBZnQ5NFZnYUc0MlhJUXQwWlg2UGVDRS9xUUZlOXJLNkh4N1lVNTBLdkg3Zlc0ZlMrcTdLS0JKeHNnZ0JYNXBTQUdoMWpJclZoNXpRNnczUmZhYWhCWG0vYUNiQ1pUakNVRlVUeVdacVc5cDYyTWpKUFhWcU9yUGdNTzROdjc0R2tmK293ZnROVkJEUW5qRkpxSFN3MTdwWHZoV1c1S1pxZS9RNDlOL1VTVENBVldvUVhGSUhCSFhYZTNGUHJVRHN1R0RtdEYvaEhLVEhwZWt4aGlBT1BJK1NKcTZTNkhGNEk5WVd6a0JKVG80NmlVTXpXcDhQaXIvUmlkdUx4S1lzU2tzVjh2TGxPUXZoR1gyWWxSME9CaEJqQyt1L2dFY3ZZMEFwSzdZazQxTnhqUFNRbldGSFRGNjZVcmpnZXZCOEN1NWErbDJ2WVNSUHR1VkRvNzNoaGRNU0huVVg3dFRqc1ZaR3hBbC9XcHRpT0lFUTFnbkwyOW1YNi90UjF0bWxrWWo4VzRYK0NTaldjVURHWTFOcFMvQzdoU0txaU1MTS9sMlFtU1daNzNEZHorZ2lvOEJDRU5ZUFE0NnFua3p3WFVicXZCa3hqVVFzV2ZaRmdidW8zckFmK3dON2pPTzkwK3lueDRQaTNMKzBuWUwxU2NoRFVnQVA0Z1BWLzdJZDFxKzFIU2htdUdrSXFXUlBneXhNRnFQOEhmalRualh3WTViUWZiSmN0Nk9JektnTUhvdEYvSGUxZWdzYXhIU3FHNndmZG1RNXg4TnlURkZxQmNwMmlTb3dIUjN5azUrMzZoRjd2WEFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJGSURPXzJfMCIsIkZJRE9fMl8xX1BSRSIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsImxhcmdlQmxvYktleSIsImNyZWRCbG9iIiwibWluUGluTGVuZ3RoIl0sImFhZ3VpZCI6ImZjYzAxMThmY2Q0NTQzNWI4ZGExOTc4MmIyZGEwNzE1Iiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibGFyZ2VCbG9icyI6dHJ1ZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOmZhbHNlLCJhbHdheXNVdiI6dHJ1ZX0sIm1heE1zZ1NpemUiOjE1MzYsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6OCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoxMjgsInRyYW5zcG9ydHMiOlsibmZjIiwidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN30seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTh9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi0zNX1dLCJtYXhTZXJpYWxpemVkTGFyZ2VCbG9iQXJyYXkiOjQwOTYsIm1pblBJTkxlbmd0aCI6OCwiZmlybXdhcmVWZXJzaW9uIjozMjk0NzYsIm1heENyZWRCbG9iTGVuZ3RoIjozMiwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjEsImNlcnRpZmljYXRpb25zIjp7IkZJUFMtQ01WUC0zIjoyLCJGSVBTLUNNVlAtMy1QSFkiOjN9LCJyZW1haW5pbmdEaXNjb3ZlcmFibGVDcmVkZW50aWFscyI6MTAwfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMTItMjEiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2LCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ill1YmlLZXkgNSBGSVBTIFNlcmllcyB3aXRoIE5GQyIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjQxMjIxMDAyIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMTItMjEiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTAxLTEwIn0seyJhYWd1aWQiOiJkODIxYTdkNC1lOTdjLTRjYjYtYmQ4Mi00MjM3NzMxZmQ0YmUiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6ImQ4MjFhN2Q0LWU5N2MtNGNiNi1iZDgyLTQyMzc3MzFmZDRiZSIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJIeXBlciBGSURPIEJpbyBTZWN1cml0eSBLZXkifSwiZGVzY3JpcHRpb24iOiJIeXBlciBGSURPIEJpbyBTZWN1cml0eSBLZXkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUJ4ekNDQVd5Z0F3SUJBZ0lDRUFzd0NnWUlLb1pJemowRUF3SXdPakVMTUFrR0ExVUVCaE1DUTBFeEVqQVFCZ05WQkFvTUNVaFpVRVZTVTBWRFZURVhNQlVHQTFVRUF3d09TRmxRUlZKR1NVUlBJREF5TURBd0lCY05NVGd3TVRBeE1EQXdNREF3V2hnUE1qQTBOekV5TXpFeU16VTVOVGxhTURveEN6QUpCZ05WQkFZVEFrTkJNUkl3RUFZRFZRUUtEQWxJV1ZCRlVsTkZRMVV4RnpBVkJnTlZCQU1NRGtoWlVFVlNSa2xFVHlBd01qQXdNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVyS1VJMUcwUzdhNklPTGxtSGlwTGxCdXhUWWpzRUVTUXZ6UWgzZEI3ZHZ4eFdXbTdrV0w5MXJxNlM3YXlaRzBnWlBSK3pZcWRGendBWURjRzQrYVg2Nk5nTUY0d0hRWURWUjBPQkJZRUZMWlljZk1Nd2tRQUdidDNyeXpaRlBGeXBtc0lNQjhHQTFVZEl3UVlNQmFBRkxaWWNmTU13a1FBR2J0M3J5elpGUEZ5cG1zSU1Bd0dBMVVkRXdRRk1BTUJBZjh3RGdZRFZSMFBBUUgvQkFRREFnRUdNQW9HQ0NxR1NNNDlCQU1DQTBrQU1FWUNJUUNHMi9wcE1HdDdwa2NSaWU1WUlvaFMzdURQSXJtaVJjVGpxRGNsS1ZXZzBnSWhBTmNQTkRaSEUyL3paK3VCNVRoRzlPWnVzK3hTYjRrbmtyYkF5WEtYMnptLyJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFJMEFBQUFXQ0FZQUFBRDkveDhsQUFBQUJITkNTVlFJQ0FnSWZBaGtpQUFBQjNGSlJFRlVhSUh0bWsxeTI5Z1J4MzhOSXRMU3pBbk1uTURNTmttVjZhcXB5bko0QTlNbk1DU1NWYUcwTUx3UXNSQmx3U2NRZFlLUlZsbWxSRzVtRytvRVE1MGcxQzVVU0hRV2ovaCsvTkJFdG1jbStxOEl2RWEvZmtEM3YvdjFZNFZOT0F4YS9QbTdLai8rWTFvYTgvd3FmL25yMy9uVGQzZlc4V2Y4WnVHdUhXbjNtd2dYd0J2cmVHVXZCQnBBZzhQZ0haOTZ3eTlpNFRPK0xkcjlKaUt2VmxkakJyMlJZeFhzbnRTQml3Mktob2k4VGE0ZExqZ01XazlvNmpOK0NlajBQVVJtd0JpSnJvbW8wUWthWmFmcG50U0o1QWFSNmdaRmIwdjNueDNuTndpcE11aU5VQjJpRWxLSkpxRDFmSHJ5L0NvcUYyc2R4ampGK2RvNWpPT3dNVlZsNlU2aWEwNlBKN254VHRBQVhxK3V4aXlZNHBJNjZXTCttZENmNVo3cG50UlI1L3RVaGt0K0YxV0o1QlVpdFpJTnFsT1dNaWJzcGJWWXArK0J2RmhyZDZ3MzdFMU5ZRlZlSTJwNVR6Smg4ZTl4eWNaNGJTcXZjcytKanZpUDNDVzJQTWFPR0Y1UW82S3ZTMnNWSFhGNk5NYnpxN2o3NzgzYVpjYlozejduNUx5Z2xyemppTHZrKzBXWU9VU3FxTllZSEUvb0JNMjgwN2g3VnlEMXpKMXJCcjFSc3VCU3l0SURWRm9JcjVKYkRoZTArelBPanE2c0N4WThZcWRRUjRCSlFhSUJmRmo5L2dqekVQWVBBUE1pSzN0L0FQS01Gb21ISkk1MUQvUFA2TjRRa2RmWUlHS3F1Vnd0SnV1RElZYkxHSmlpRWlKcTE0MUNaVy9HWVhDUTZPNmUxSW1jSDRBYW9nVnhBVmZIcTNVL3pnNkFkaEFpdkFleG1DTFFDZUthMURmcUZTRHZOQzYxWk56Uk1XRHNGdXFySlExQmpIT2hzelE5dGZ0RHlMeGs1WmJGdkpVc1d2V0hna2tmR1J5RkxPY05sTnZDMk1XcUx2cmZZU0kyVEs1RjNocmpWL0NDV2k1ZFJualdLTGZCNFNLbjY2a2dVa1gwSE04M2pCTEpGY0xUejlNSmZPTXdYd2hMUXRwQkNQSVR5RSs0dEZnOERBM1RIQWF0VEtRYWgxbk9HNFQrRE0rdmxtb2MxVXZPam94bkdwa0dsZjFSd2pnaVZaUUw0STlQWXZ5ZzU5UHV0eEI1Q1VBRkQvRE1iL1dUS0ZPOTQ5TlJPVFdxWGlJU1UyNE5KOE9ZRGczaXlFb2ZPQUFwTWlBczV1VjdXZDFabGhTcDR1N1hnVkZpOXpyZG9tdWNmSXNkU2pNaEdOVTdJQzVjODdMR2pzZkRwRUN2ZU5zMWthcm5HWHE3WjBremlWWjNmd2hrYy9jMVowY3BBNTBlVDZ5T2c5VHBCRDZEbnYrekRDNUN4VisxQUFCOWkrZjdzRi9OT2J1SXZSQVhtU1pwRnFEVGJ5V3M2dGdZUUNZNStVM0k2eDdSRHBxNWRGM0VRcTV5OWNobTVadnR5TTRqMGxvcjJ3bDJtMjVIdUZUVXo3RkloSmRmbEZiVFNPYVc1U3BseFVWenpDYWhQNk43MGtLZGY2YVA2bnZpWEdtRDhwSnVQMThiUkx5MHBXYys5WWJKeHpaUjdLRmFTNTFkeHd5T2R2dlEzeElWYm1qM2ZaWVAxenVuVVJ1NkozV3k1ZEd1VHY0RWNCRnBacTd2MSs1OGlpbkwzYnNwRk0xd2VqeWgweDhuVVN4U3hRdHFheU5MYUtFRmRyQTVURHJvQXpmR0huMmYzK1hKYnM0WlVjdlZidkVPSVkrYlVuU3F6amc3K3YxRzNTb05zTENNU1dHR0VZVWF5QkIzSDlyQkVPRnl3d2N2MjJHQ280RTY5aDN1VjRCRHZDc0JVUDYxUnM2U3NzU2VKN1ZBOXp0VDhRNHdML2Nhb0ZSamJhYnhGaW9qVkVhWitnUGdubWh1MytXVmRLeHBRMlIxWjFsVjlTNnhhZm5nb1hwcGZkWTR4dE9rOEs4RUZ6VERETlE0REZwNXRwRVpFalVJajFkYnZQNFErTjZpSys0eFpJdSs4Y2JaVmUrUVFxUXJ0WHpoV01BQ0Q3Y3cvM0lEeTZ5ZG0xdWNxR1ZORVlZWkNzNitybGkxNGhwSFU1dk1IQzI4d01mVkpvcFhXT01IdkdCWUNqQ2JIVkhScnE4UEZ5VkVTT2xhOUp6dXlTUnB1aTNtNllzMVBZRnNOL2crK1dYNk9JVWV3NWFQS1RJc0Zjb202ajdZSDhBd1Y3dWYwcjN5ZVN1YlpYYzR1K1IrWTlldU5jSWJWS3VJWkZzU1lhbHBHZHR1MmdmaDZuMWRFVE85NlpYazE3SEpEck1yU3E4M2xRRmJaYlcrcFM3SXdWazE0YTR6aHBvdGR0eG5pUjNHYk12elBRR0pURVBLMXNkUlBuK3g0aXdiZmNKMkJvaDNPRi9LbnVJN1JMYzM2QWE5RVpweGt1aVJmUnp6WGRLZ3JXd0t0SUtzbTJtT21sNVNwdDFpMmVJWFlQbzBpM21MeXQ0a29VeVJLaEUzZEUvZWNIbzg0VEJvNVhvYkFCSHYrSFE4c1o1VktiZWM5VXI3KzE4UDlKeE9VSFpHaVE2c0RBTG1IYnI3VStCRnJ0MWdqampLVHFUVWNnMi9TbVRSdThVTzFhdE1nZDFhSGRGTXJMSXdJaTByUHRBTzNpSk1VYTFEdGw3VHJZRmxuTVpzbDV1cllzN1FaZXc0N2I1bklpZERYeEZwK3oxeWhnalpvdlNPNVVOajI4Uy9iS3dyOGpmc1dFSi9ScWZ2SjhjQXF1L3hnaUZLbGVTSUlEdEZWcTllTXJBNTR4WTdsdUxqMGlUN3pZcHp4YklTK2FqVFNHV3BBVFVrWTRoeXUvYjRKNFAwN09uMGVFTDNwSUU2ZWNjcGRrdFZMM05kMTN3ajZ4NUhtNXh0NkQrb1RKTHpGMXRSRnpGZG5YK3NML3Aya2RrMlQvbUJ6VVU3cEozYnJPNXNOM2R3Rk5MdTF4RnFDQ1lOTEJqaThoRTBQbHVxQXk5V0c1QVpFVmY1THZZajdBaDdVN3lnVGdVUDBYcXFHK01Bd3BURktnV2VIaytNclBvZzlmeDMwekhJaU9VOExFNWxuYjUweDlCcDZqaFptT09EZkYrbEUyUmJURysrWnBQcEdkOEc1Zi9UbkI1UFZnWHVmWDVBeHlXSHlTTGkzYlBEL0gvQS9zKzlvdU1vdHl3ZW1sWlpJM0R3L0hmUFp4aDBUK3AwK3FQa2lOK0dUdjlYdkV0NnhzL0Jmd0doaG1uWWNheWRnUUFBQUFCSlJVNUVya0pnZ2c9PSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzFfUFJFIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiJkODIxYTdkNGU5N2M0Y2I2YmQ4MjQyMzc3MzFmZDRiZSIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwidXYiOmZhbHNlLCJ1c2VyVmVyaWZpY2F0aW9uTWdtdFByZXZpZXciOmZhbHNlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWV9LCJtYXhNc2dTaXplIjoyMDQ4LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0IjoxMCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjo5NiwidHJhbnNwb3J0cyI6WyJ1c2IiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fV19fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMS0wMi0wOSIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiSHlwZXIgRklET8KuIEJpbyBTZWN1cml0eSBLZXkiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDIxMDIwODAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4zLjciLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMyJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMS0wMi0wOSJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjEtMDItMDkifSx7ImFhZ3VpZCI6Ijk4NzY2MzFiLWQ0YTAtNDI3Zi01NzczLTBlYzcxYzllMDI3OSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiOTg3NjYzMWItZDRhMC00MjdmLTU3NzMtMGVjNzFjOWUwMjc5IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlNvbXUgU2VjcDI1NlIxIEZJRE8yIENUQVAyIEF1dGhlbnRpY2F0b3IifSwiZGVzY3JpcHRpb24iOiJTb211IFNlY3AyNTZSMSBGSURPMiBDVEFQMiBBdXRoZW50aWNhdG9yIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlCOURDQ0Fab0NDUURFUjJPU2ovUytqREFLQmdncWhrak9QUVFEQWpDQmdERUxNQWtHQTFVRUJoTUNWVk14RVRBUEJnTlZCQWdNQ0UxaGNubHNZVzVrTVJJd0VBWURWUVFLREFsVGIyeHZJRXRsZVhNeEVEQU9CZ05WQkFzTUIxSnZiM1FnUTBFeEZUQVRCZ05WQkFNTURITnZiRzlyWlhsekxtTnZiVEVoTUI4R0NTcUdTSWIzRFFFSkFSWVNhR1ZzYkc5QWMyOXNiMnRsZVhNdVkyOXRNQ0FYRFRFNE1URXhNVEV5TlRFME1sb1lEekl3TmpneE1ESTVNVEkxTVRReVdqQ0JnREVMTUFrR0ExVUVCaE1DVlZNeEVUQVBCZ05WQkFnTUNFMWhjbmxzWVc1a01SSXdFQVlEVlFRS0RBbFRiMnh2SUV0bGVYTXhFREFPQmdOVkJBc01CMUp2YjNRZ1EwRXhGVEFUQmdOVkJBTU1ESE52Ykc5clpYbHpMbU52YlRFaE1COEdDU3FHU0liM0RRRUpBUllTYUdWc2JHOUFjMjlzYjJ0bGVYTXVZMjl0TUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFV0hBTjBDQ0pWWmRNczBva3RaNW05M3V4bUIxaXlxOEVMUkx0cVZGTFNPaUhRRWFiNTZxUlRCL1F6cnBHQVkrK1kybXcrdlJ1UU1OaEJpVTBLendqQmpBS0JnZ3Foa2pPUFFRREFnTklBREJGQWlFQXo5U2xyQVhJbEV1ODd2cmE1NHJJQ1BzKzRiMHFocDNQZHpjVGc3cnZuUDBDSUdqeHpsdGVRUXgralFHZDdyd1NadUU1UldVUFZ5Z1loVXN0UU85ek5VT3MiXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBTFFBQUFDMENBTUFBQUFLRS9ZQUFBQUFCR2RCVFVFQUFMR1BDL3hoQlFBQUFDQmpTRkpOQUFCNkpnQUFnSVFBQVBvQUFBQ0E2QUFBZFRBQUFPcGdBQUE2bUFBQUYzQ2N1bEU4QUFBQytsQk1WRVgvLy8vdzhQRFgxOWUrdmIybHBLU2tvNk8vdnI3YTJkbjE5UFg2K3ZxN3VycDZlSGhmWEZ4R1FrTXNLU29qSHlBekx6Qk5Ta3RvWldhS2lJalMwZExZMTlpRGdZSDgrL3paMk5sNGRuY3hMUzZYbFpXNnVibjQrUGpvNStkNGRYWWxJU0k1TlRhdXJLMysvdjY0dDdjc0tDbFpWbGZ2Nysram9hSGs1T1E1TmpmcjYrdmczK0JsWW1KV1UxU29wcWZIeHNZbUl5TTlPVHBTVDFBL1BEMDRORFY4ZVhyVzFkWDgvUHplM3Q2SGhZVXRLaXE4dXJzdkt5emo0K1B2N3U1ZlhGMW5aR1hSME5Fbkl5VGg0T0QwOVBRckp5aGFWMWptNXVaK2ZIMUVRRUhGeE1US3ljcTN0YmFpb0tHTmk0eTJ0TFh1N2U3R3hjV3hzTENlbkp5Umo1Q21wYVhRejgrUmo0OC9PenpFdzhTV2xKUlZVbE1tSWlOVFVGR1VrcFA5L2YzSXg4ZUlob1pIUkVWa1lXS2tvcUtlblozVTA5TmhYbC9UMHRKS1IwZDdlWGtrSUNHQ2dJQnNhbXByYVduVjFOUXFKaWRyYUdubDVlVzBzN05YVkZUczdPeEZRVUwyOXZZK09qdDJjM1FvSkNWY1dWcWFtSm5NeTh2TnpNeWJtWm82TnpqbjV1YzNNelRwNmVsWVZWWDcrL3RtWkdSaVgyRE96YzFTVGsrVms1T1BqWTNxNnVvME1URnRhMnVCZjM5TVNVcUdoSVZlVzF2THlzdXdyNitxcUtpM3RyWTFNVEx5OHZMajR1SmJXRm5LeWNsQ1B6OHBKU2FxcWFsSVJVYmMzTnlzcTZ1eXNiR3pzckoxY25QZjN0OHpNREV1S2l1Wmw1aWhuNkNjbXByMjlmWEp5TWhQVEUyTGlJbjM5L2RkV2xzOE9EbHpjWEZ5Y0hDQWZuNVVVVktYbHBaTFIwaDBjbkpZVlZhNXVMaERRRUNRam82Zm5aNUpSa1p4Ym05allHRXdMQzFNU0VsbFkyUHo4L05CUGo5UlRrN2IydHJEd3NKUVRVMnBwNmh3Ylc1T1MweUxpWXBnWFY3UHpzNzUrZmxxWjJneUxpODdPRGpDd2NHZG01dUpoNGVycXFwQVBUNm5wYWJRME5DRWdZSitlM3p4OGZHdHJLekF2Nzl5YjNDRmc0U1NrSkZ1YTJ5MXM3Uzl1N3l3cnEvRHdzT01pb3VFZ29QYzI5dVlscGU5dkwxOWVudnQ3ZTNkM2QwMk1qT3ZyYTdwNk9pZ25wOXBabWQzZEhYQndNRGk0ZUZHUTBSL2ZYNk9qSXh2YkczVzF0YWMxMlY0QUFBQUFXSkxSMFFBaUFVZFNBQUFBQWQwU1UxRkIrSUpHaGM2SEkwdDhtQUFBQTJUU1VSQlZIamE3Vng1ZkJSRkZpN0NIVWthUkF5M3dVQzR4SkFBUzdqQ0VRZ29rVlBrVEJpeWlrQ0d5NFVWQ1VIT29JYVFjQ2NZZ3NncHl4RkFFVGNDSWdSdzVVZ011QXJveGd0V0ZQQllWMTEzZjcvTjFPdWVldFZkM1RNMUVTWi85UGRQcHQ1Ui9hVzd1dnBWMWFzaXhJWU5HelpzMkxCaHc0WU5HelpzMkxCaHc0WU5HelpzU0tOU1FPVXFWYXRWcitGdkhsNmladUE5dFlLQ0ZSVzE2OXhiOXo1ZnE2cDNQMFBJSGFSY3YwRkR4WUNnUnI3ZDhjYW9qaVozakhMVEIwSVZJWm85R0ZaUlNUZHZvWmdpdkdYRkpOMHFWTEZBVU91S1NMcUtZbzAyYlNzZTZZZGFlQ0N0dEt0d3BNTWU5c1JaVVNJcUd1bjJPb0tSVVIwNlJ1cGtuU1E3Mnp0TytnSE1MdmdQbmFQTFpDRmR1bmJqV0hldldLU2I5RUFYaUlweHkzdjJ3cVI3Vnl6U2ZWRDlzWDJSb2w4ZHBJbVQrOFRjYWRLQnFQNytuS1lldnRVREtoVHBxcWorUjNqVm8wZzEwT2paTXY2eFFZTUhEeG9TUDFTUzlJQmh3eCt2TytLSndKRSsveitqVVAyamVWVkViNFl4T3JlQXNlTVNOTGZReFBHZHZTWHRtSkQwUjlib25ueEs3Z2xxbUlnYndXTmVPajA5U2QrVDE1cnNGZW51VS9RZGJISlRIMGczeDFVNHAzcnp4TnBPY3lvR09LZWpqNzBKNlJtSlJqOWxabEpOYWRKOStDb2FQaFB4Snc4ZW5hTVVJYUpZR3hHVG5tVVNMOHorc3l6cEdzYWFucDFhYlk2NVErTmd4UVRCalMxSkR6YnpVNTZyTDh0NnJxaWFsSG1wOWNUbTgyTk5yNjJrUEc5QmVvRzVuN0pRTm82Y2IxWlRtd2VHVkRKWUwxcHNjVzJsMlJKVDBnTVRyQnlYcGtteVhtWmVWOElMTC9LMmpwZXd1bHV2OU9YaE03RmtkcGdKNll3VjJLeFQ1dU5aSzdtUnh5cEowcFZNWGl6QTZqWFlkaTNTUks2anNWL05WTnlYckRjaC9RaVNaTU9keUptT1pMRWJKRm5mdDBLeHdzdTVic3VRalV5Y0Y2aEpONkVuLzRwRFNIb0RlaE1XYmxiOW9oc2dzN21TcEVucmxaYXNsZkdhNGF0SXVJWDU0dy9VVmlIcGJlZ0JiV2VPOXpKeHdrT3lyT2VNMkdISk90a0JkaWhjallwRzdtaktwTGVJZE5wT1ZzNUUxMzBSMmIwbVM3cnN1cnRHVzdIK0N6WGFuY2NramJEM0tpYmZtU1lndlFlVnVYZGtMNU92bGlkZDFsNkhXelNTdk9vdWsrN29hWEpmc2I3SWRJK0E5RDVXbk1KZGRCMjZSTDR2ckFtSmlaaGUyNFQxZnBjK2laVVA4SjdvOGFjTFNNOW14WU9jM3d4a09OODMwbVZ3OUVsL2VhYUF0Tk1WUTc3T3lvbThXeERUdkNFZ2pUcWRmWnpmVUdTNDNtZlNMalJwdi95UUlZNTdzMHhSaXhXZjRWMzJNODAwQVduMElBYnhqbkZNODFTNVNMdlFPajJJSiswYWloMW14YW04K1Z0TTgxY2o2WHhVTE9BZDMyYWFJK1VtWFlhalhHajBOdDhJa25qYmUvaUdveU9kZzRyVmVNZGpaZzNIVjh6SGpidEZtU0NjRmQvaFRZOHpUVzhqYVlLNlN0MWsxYnRNTTlGYlh0RjFUakRzMFd0UDRsdGRTRWdtM3dnUVVNTkpGcEJHMFEzZkNQb2h3eTNFV3l4RVhsbDY1U2FrZEpZTmlySlk4UlJ2aVQ2b3l3V2tUN05pQTg3dkRESWM1alhwcGNpcm8xNDVIQ2s3RVM3MDREOEZMWkZoZ1lCME1pc3U1YTVRZ083S1VPSXQwR3V2S08vcGxLaGZWdjVXVm02TE9zSk4yRENWeVdNTEJhUlIyZGtGTzZKM1lhL1huTW43bUhURDZwd3VCbjhlenhMK01aOURoZzRVdDRRVEFlbCtxQ1BLUW81OTBWMDQ3ejNwSE83ekY0V2ptYzZkc0lvT1doc2hBUnJUWUk0VFJhVEpCVmJ1VWNnYzcwZDJSZDZUeGoyQ0MzVmUzVkRzRXM4cCtDQVB5MnZUeVltY0VpYTVlRWFyb2dnOWtlemRRdEo0SURvN1IzT3Nna1pjOHlRNGsxekZnQldIbjMxWEwxTWY2bGdrMmpFU1pKZnduTUtIUkVnYU4xNWxwUm9oanNjWGtBdVhraFV2c0ZoZGw2dUJtMHhrNHQ4ck43Ly9IQjZnWHN3M0lUMEREOFozVG1yVS9xTzVIK01MUENuRm1mU3pITmVxY0UveXhjZGFtYVVVRVJQUzVFUEwraS9LVGpLTkxGRThBWDBScWxyWlhTYW1wTWxaQzcrOEs1S2NDYW5meGdQbnEzZ2RJTW5jemgxRmlValA2Vy8rZ0xaS2N5N3JrTTlaVVk1c3hGdEhtTFNRV0JZTENlZnkwajR4dVVEMkdxK1pZamdpc2swNWp3dlFXK2NlRU5rZFlOTWpabE85VCt3VU9YYVFYOFpXOGVrUjhXajgzRDhFUzBURnV6cnA3UllmTFVZR1pwUHFQWk1NYzdSVEdudWlab1d3K09UbmRCV2VXbVUyQjV0LytTUzZmTnlUVlhaejZwRm80WU9mV3N4NGN5bnEvTElQTnZZbE00Tkh5NEVMN3NtYzlQQ1VPdjE3Ynh0VjJ0UFN0dmhTNnFyUDl1Ly83UFBVVXJrRm4wcER4bVpsaGsrYXUrL29TRWU1R2R1d1ljT0dEUnMyYk5pd1ljTkdoY1hsY0JlK01ORnVvZHJ3L3I2dlRONFIxS1ZEekMvRnlxM3FLSFNYdjFsS2tQNUs1ZHpLM3lRbFNLK0hQR3BuVlg5emxDQmRvSEord3Q4VUpVZ0h3cHlkODMxL001UWdmUTA0aDI3eW9VNS9rYTZjQXB4ZjlUYy9DZEtsc0V3VStxQy82VW1RdmdTY0U2NzdtNTBFNlgvQzZtTENjSCtUa3lBOUVQSmRFbnhaVmZBWDZmYkFPZklyZjFPVElMMEhwc3NqVFhQdHc5WWtUUjgzdXMzZWRzbHIwWkl4Y1RSeFFaeWVXMHgxckR4ZzJMcXZ6NDQ3bmpYeFd2WDgzNE4wTGl6QXhqWTNzYys0Z1hKRThrNnlIUTdmVUVtVVErQ3ppQzZRdWxQeTRsRUdseEo4dmhLUmhvNzBHdGovRkd1eUZCSjlGTzlBY3VGMWQ1NEc1STZNRVhoOWkwUEZDZUc2R2hxTzNVMGt3Wk4rSGppbm1Held5dGlyR0xCRGk3VWhUL2tkZ1J2ZEpSTDNLZjFkV2JCak0wcDJ3WllqWFFTTFppazN4Yll4cDdSbWNmcFcwb1ZtYW1Hbm1rVlJUSk9DNG5JTWJwT3BHZVErZGxGekJmTGVycld0M1dFdHMzWmVOSkVDSmowU25uMWVOYkhwQm1qTm9lYzd3K3QyK3pva1RmU1lBZnJQYWNrWUZFSmFSN3pyWnlHa3lZMityTzRUdWJJTThsUys5cGwwSDdnTGVhVml5K2hEVkwwUVpaVTFuVWRGaDJHLzRuZTAwRUh2Ri9LOVN4eEVmLzlBVFdhalBtWVBEY3ljN3hFWk1OS1QxWWVWTWtOc09ZSnFlM0VyZFE1d2gxUmxBc3ZmMytqOGJpSVRldE5MZnNUcWYxRjFKcEdCbS9UVDdteUVSNFZ2OHhrNkp2aitVOTF0cEM5WnR3eGEyRXJkZGRtUlpCcTlFOURKMEwyeFAvSDZEaTVaYlljdnBEdWpwSjV0SXNOL1U5VVBldkY3VkF5TC9qWHBFcnR1Y3l1a1NjRkw0NkFmZ1JGOERWL1FHcVN5SjFUU0FWeUN2U0JTV2tJRDdIQ2pvcDFMdmhGK1ExNEYzL2RFVUJuc0RReWgvZDFadmdKSXNoOVBKQUNrejhFT2pMeXhNQzdjMmRkZ2Q4VHNmbHlpQ3NoQmVJajJCUjl3ZXByeGZVcGRBNmZkNVBmOGduaklWaGVrWmxicW9odWM5N09XV25YYUVFUFFiVGtsRG1NRmJYRkRwb25Vc1RpWjhSY25hejZFUUFjMFZiSmJ0aUx0NnVzYzBJa1ozcVpDT2dVaTNDQzhHTFdiSWRUNUtOTFNGaHVab1piVUhWekhxNU55Z1pHR2I4b1N5RmZSZDV6WHFQUnhVUTEwSTBrM2VBWnA5RDg0Z2JRYnVmNGlROHYyTzVaK1JYYS9sb2gwU21VUVZJTnYxR0krSG9Ea3gwdHRCYmhGVmVxOTIwY0xNOXgrejlOeXFidU1EbDZZT1c1VndlM3lrZFk0RTNJREJCZTQxK1dxNGdFcUwyakNXVzQvK2gvaGVQVnozdTNYNU92V2VTVldwRkdNVkZQTncxcUF6VDd6UkZvYm05SEdza1BiZ2xwY1l1aVl0elRUZWJiNHBBdVJCSkJPdVlaRTI5V1lHcDlaYzhFVGFTMU9nazI3MnJCbnZhdVFzSWk3WXRxc3BUcGY1N0lBSWdVZ3pYLzZJYXhSVHZWam9wT2VTR3Q3cjBMb2pUeXVsdWhtUjJOT1prQlNJcDhvRjN5TnlFQTQ3M0VRcW5xZFNlaXUxdENZREZPNDQ1WEI5T2JDSHRDaGxGcWc2THI1RThiM1FxZEVKTHhJSkNBa1hVUGRBOFFtbUdCUG1UZUhITFdtbitwdjZlOUJycC9OVEEvYUNMbVNXa3ZMKys0b00rWVNUNHROaHFtOGJ1N05nL0JWOE9wMGtoZGNsaEErMDlSMjZ3RC9sNlFTL1EzeWxiU1doWHRPNndiVzBPSW4zdFFJWjBLNG9wVHQ5QzN6dEJOMU02UW15bVFqbTVBT2V3RlkzMURMTmVrTVRxSTNOVWJUVWRsVm9xWjExL0xvc0ptMi9CM2xKMDF1UTNmcUxGWExOQ1pKRWQyMVdSUExnSWVWTkNCczR5Q0Vubnd3aENuKzQzNEdQR0NNWDB5OGh1bEt3RUFZNjJlcnNRNGtUazh6MnYxSW8xbThYakNBQmxjVFlQb21HeDExUU45TDVUZERGWkR2SzVFb2E3N21jaDRheUdyNG5NK0I5OFdZTnZ3Yi9hcjF3eUk2TGtpR1FXVlhKQjlEcXpoaHFBSUNCNGs0eEp4MENBUy9kQ3VpMi9DMFBxTjFOeDFydjhYSjZGQzJkdHF2cmovNEU1M2ZUWHhMNlJjeVZpSlgxbUpKTGdhbUZDSmhtMFVHRE1oMEhWZ2E3SENld0FrZE5NT2FUb2J4NHpQWW8zUklkejdFQURybGVjeDd6cGFMbjBQVWZoOG1SOVdzNkt2NFcrSDRrc3ArMWQwbEd2blRscjJXazZ2N1hZNXpuNXRpMktpVS9qdVIxalpIL2hkSzZ1NlNZKzdiR3JiK0JKV3MySzd6YTZvbFNaZm8wcFRWTXk3bVhXTC81WnFYcVdpbXAzTkZ2Q2Fkcng0d0ErdHl4ZHBaRHg5MzNUTGhmejlYcWZzS0ZPT0tESTY5VlV2ZHRsYlNVOXVnc25IOFYvRjlseFJ0ZlZNN0pTeFZnck0xYVZJUFZsK0N2Nk9sRU9HK2oxQkJRRlNxNmd5cDduMU50bm9za3hycldwUFc5cldzaEo3Zk1TTE9jTGsyc3dSdTZzYTVRMGJOZHRIQk5Vb0R1Zkc1QjlMa0ovNDV0NTdHWDIzSGdueWgyMVNxL1VqMC83VFNIMnlTa0NsN1JPWk5laWFtZVloVjZRWTF1T3FleTlpYzdqN0FxOFd4STRVbWJzKzY5RDNFWjkra0ZTejdtQjBVVi9LRzdOa2V2bUZSN3F5am96YmxOalgvSEVCUWVNdThpdWlZOXB0KzY3cXJlMEFPcVRDQXJ1MXBmOU9Rd28rMDAzbkozelRrQUVmVUJKYS9vcnVJWEJyVkh5Ny9icUc3Z2R1MDZ3cTdDVkZzQlY2bXhpaFNObDU0NnlkMTNTN0k0Vzg2M3BKbWlKUGZ6ZWwzMGs1dno5N3pPeGpwRks4UHZ2QTdma21FT0RyMFlFejVLN3Q3S0x3eXB2bkFMdm4rcG1IRGhnMGJObXpZc0dIRGhnMGJkdy8vQjJaSElKNkRtNlQ4QUFBQUpYUkZXSFJrWVhSbE9tTnlaV0YwWlFBeU1ERTRMVEE1TFRJMlZESXpPalU0T2pJNEt6QXlPakF3ZnpQWWRRQUFBQ1YwUlZoMFpHRjBaVHB0YjJScFpua0FNakF4T0Mwd09TMHlObFF5TXpvMU9Eb3lPQ3N3TWpvd01BNXVZTWtBQUFCWGVsUllkRkpoZHlCd2NtOW1hV3hsSUhSNWNHVWdhWEIwWXdBQWVKemo4Z3dJY1ZZb0tNcFB5OHhKNVZJQUF5TUxMbU1MRXlNVFM1TVVBeE1nUklBMHcyUURJN05VSU12WTFNakV6TVFjeEFmTGdFaWdTaTRBNmhjUmRQSkNOWlVBQUFBQVNVVk9SSzVDWUlJPSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIl0sImV4dGVuc2lvbnMiOlsiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiOTg3NjYzMWJkNGEwNDI3ZjU3NzMwZWM3MWM5ZTAyNzkiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWV9LCJtYXhNc2dTaXplIjoxMjAwLCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxXX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIwLTA0LTAzIiwidXJsIjoiaHR0cHM6Ly9zb2xva2V5cy5jb20iLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IlNvbXUgRklETzIgQXV0aGVudGljYXRvciIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMTkxMjA2MDA0IiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjMuNyIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4wLjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjAtMDQtMDMifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIwLTA0LTAzIn0seyJhYWd1aWQiOiJmNTZmNThiMy1kNzExLTRhZmMtYmE3ZC02YWMwNWY4OGNiMTkiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6ImY1NmY1OGIzLWQ3MTEtNGFmYy1iYTdkLTZhYzA1Zjg4Y2IxOSIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJXaW5NYWdpYyBGSURPIEVhenkgLSBQaG9uZSJ9LCJkZXNjcmlwdGlvbiI6Ildpbk1hZ2ljIEZJRE8gRWF6eSAtIFBob25lIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmFjZXByaW50X2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbInNvZnR3YXJlIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImludGVybmFsIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlFclRDQ0E1V2dBd0lCQWdJUVJUZmNnbzZ4d0lGR2ZtdHprMUJTblRBTkJna3Foa2lHOXcwQkFRc0ZBREJFTVJVd0V3WUtDWkltaVpQeUxHUUJHUllGYkc5allXd3hHREFXQmdvSmtpYUprL0lzWkFFWkZnaDNhVzV0WVdkcFl6RVJNQThHQTFVRUF4TUlWMmx1YldGbmFXTXdIaGNOTURneE1USTBNVGd6TkRRNVdoY05Namd3TnpFek1UY3pNak0zV2pCRU1SVXdFd1lLQ1pJbWlaUHlMR1FCR1JZRmJHOWpZV3d4R0RBV0Jnb0praWFKay9Jc1pBRVpGZ2gzYVc1dFlXZHBZekVSTUE4R0ExVUVBeE1JVjJsdWJXRm5hV013Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRRFFDa21RL0s4RG4zOXFTQ1c1dEtMdnZETEgzQ2xTY2dRckRnNyt1WTQ0akhsSVkxL0xsNnYycnBqN25sbVZNbEl6b2dkM3lYakNGQnZHcjR6aUdRMlFjOFVwa2FVOTZFWnhFdEh3WlN0dzZZUTBqZG5na1NMUHZPcDhUOFlpSnBjdnNWdFF0aVEwT3NUVHVpTzJFaTRMdUxoN0tSKzh4NGJBUnZ6a0JXc3ROQlRxVlNBWlFZZXNxbmw4SDVTZndiM0lvdThMU2lBc3VPWHl4dDJtczkxMVlyeFd2aC9Lbk9lbDNPZDNoK0s1ZFFZUDUzK2ZQVXpnejU2VFRqOFI0WTZ6UnV6ZGtiblI2eFdYZHJLNDE0aVg5RDZ4NXE4VzJYSkpwVE1LN0VuU1hHMHE3WEY3cDY4akRLQW54QUY4a2ZoM3VpbmMydWxtVk9aYlRSenhGOEIzQWdNQkFBR2pnZ0daTUlJQmxUQVRCZ2tyQmdFRUFZSTNGQUlFQmg0RUFFTUFRVEFMQmdOVkhROEVCQU1DQVlZd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBZEJnTlZIUTRFRmdRVWpNc1RiWTB3WFFCUjI5YldISXZiRmZVQUZmVXdnZ0VHQmdOVkhSOEVnZjR3Z2Zzd2dmaWdnZldnZ2ZLR2diVnNaR0Z3T2k4dkwwTk9QVmRwYm0xaFoybGpLRElwTEVOT1BYQm9iMlZ1YVhnc1EwNDlRMFJRTEVOT1BWQjFZbXhwWXlVeU1FdGxlU1V5TUZObGNuWnBZMlZ6TEVOT1BWTmxjblpwWTJWekxFTk9QVU52Ym1acFozVnlZWFJwYjI0c1JFTTlkMmx1YldGbmFXTXNSRU05Ykc5allXdy9ZMlZ5ZEdsbWFXTmhkR1ZTWlhadlkyRjBhVzl1VEdsemREOWlZWE5sUDI5aWFtVmpkRU5zWVhOelBXTlNURVJwYzNSeWFXSjFkR2x2YmxCdmFXNTBoamhvZEhSd09pOHZjR2h2Wlc1cGVDNTNhVzV0WVdkcFl5NXNiMk5oYkM5RFpYSjBSVzV5YjJ4c0wxZHBibTFoWjJsaktESXBMbU55YkRBU0Jna3JCZ0VFQVlJM0ZRRUVCUUlEQWdBRE1DTUdDU3NHQVFRQmdqY1ZBZ1FXQkJUZlFRNVdyV01SVzc4dmtXaDJuaURUM1Y5N3JEQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFpTHBMdG5hRTBBYklpU21tajRFTFJUUk1HdWVkeGQ2WlRZMnlVaTFRTnN3YUkyT0ZuaC9ORFdMV09nRjM2SE92REVMWEJZWk02K0FzUGlWSFU3MnN2bFlqN1k1SHpadm9Va00zZHZieHI2VTJCSjg5SkVFVFJJV3FVbFlPcTQ3QmU4NE9SMlh2bW5pVXVKckZPenNBWWN0clpYMlRGWDNBYlZQczRMU1ROYzBkYTB1cTBDcW9PU09JQ2Z6ejFYN3VmN1R3OU8wS2NLZXJGZ3plVWNtR3RLdjVvSzdSWTlXa0R4ZGkyMlJ5MEdFYjYwdG5hdjdxazlqYTQ1V0JqTjEweHVOcE5zbENhbFJuTllPR1Z0WTFtNG95MmcrMXhkMWIwdnhnMHhKc1c0azJvdlRkWlFTNUhDa21lMDVNNUx5MFNGU1ZHL1JIeE1zNkl4NDNDY3RDSVE9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFMUUFBQUMwQ0FNQUFBQUtFL1lBQUFBQjFGQk1WRVVBQUFELy8vOFJCZmNTQ2ZNU0N2SVRDL0VUQy9BVERPOFREZTRWRXVrV0UrZ1hGT2dYRmVZQUFNOEFBTTRZRitVYUhPQUFCODhBQk00QkI4OEJDTThDQ2M4RUNjOElEOUFhSHQwYkg5d2JJTndiSU5zYklkb2NJZHdjSXRvY0k5a3FNTmNCQzlBREM5QUVEZEFGRWRFTkY5TU5GOUlQR05NUEdOSVBHZElSR3RNUkc5TVRIZE1VSHRNVkg5UVZIdE1XSDlNV0lOTVhJTlFZSWRRWkl0UWFJOVFhSk5RYkpkVWJKTlFjSk5jY0pkVWRKZGNkSnRVZUp0Y2RKdFFlSjlVZUtOVWVKOVFlS05NZUtkTWZLTlVmS2RRZktkTWZLdElnS2RZZ0t0WWdLZFVoS3RZaEs5VWlLOVlpTE5ZakxkY2pMTllrTE5Za0xkWW5NTmNuTDlZcE10Y3FNOWdzTk5ndU50Z3hPZGt4T3RsRlROeE5WTjVSVjk1VFdkOVZXOTlkWStGa2F1SmlhTjU0ZmVhRml1T0VpZUtGaXVLR2l1T0dpK09zc09nblByOHJTTFV0VHE4N2NJMDlkWWxFaG5kSmsycEtsV2xNbTJKTm5XQk5uV0ZWc1U1VnNrdFdzMHhXc2t4WHRVcFd0RXBXczBwV3RFdFdzMHRZdDBoV3RVaFh0VWhYdGtsWHRVbFl1VVpZdUVWWXVFWmF2VUpadTBSYXZqOWF2VUZid0Q1YnZ6OWV5RGhleHpsZHhqbGR4VGxmeVRWZXlEWmV4emRleHpoZXhqaGZ5ak5qMVNwajB5dGkwaXhpMGkxbDF5aGsxaWtWcWlFaUFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFGK21sVVdIUllUVXc2WTI5dExtRmtiMkpsTG5odGNBQUFBQUFBUEQ5NGNHRmphMlYwSUdKbFoybHVQU0x2dTc4aUlHbGtQU0pYTlUwd1RYQkRaV2hwU0hweVpWTjZUbFJqZW10ak9XUWlQejRnUEhnNmVHMXdiV1YwWVNCNGJXeHVjenA0UFNKaFpHOWlaVHB1Y3pwdFpYUmhMeUlnZURwNGJYQjBhejBpUVdSdlltVWdXRTFRSUVOdmNtVWdOUzQyTFdNeE5EVWdOemt1TVRZek5EazVMQ0F5TURFNEx6QTRMekV6TFRFMk9qUXdPakl5SUNBZ0lDQWdJQ0FpUGlBOGNtUm1PbEpFUmlCNGJXeHVjenB5WkdZOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6RTVPVGt2TURJdk1qSXRjbVJtTFhONWJuUmhlQzF1Y3lNaVBpQThjbVJtT2tSbGMyTnlhWEIwYVc5dUlISmtaanBoWW05MWREMGlJaUI0Yld4dWN6cDRiWEE5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM4aUlIaHRiRzV6T21SalBTSm9kSFJ3T2k4dmNIVnliQzV2Y21jdlpHTXZaV3hsYldWdWRITXZNUzR4THlJZ2VHMXNibk02Y0dodmRHOXphRzl3UFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzQm9iM1J2YzJodmNDOHhMakF2SWlCNGJXeHVjenA0YlhCTlRUMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzk0WVhBdk1TNHdMMjF0THlJZ2VHMXNibk02YzNSRmRuUTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl6Vkhsd1pTOVNaWE52ZFhKalpVVjJaVzUwSXlJZ2VHMXdPa055WldGMGIzSlViMjlzUFNKQlpHOWlaU0JRYUc5MGIzTm9iM0FnUTBNZ01qQXhPU0FvVjJsdVpHOTNjeWtpSUhodGNEcERjbVZoZEdWRVlYUmxQU0l5TURJd0xUQTNMVEl4VkRFNE9qRTBPakEwS3pBek9qQXdJaUI0YlhBNlRXOWthV1o1UkdGMFpUMGlNakF5TUMwd09DMHpNVlF4TmpveE9Eb3hOQ3N3TXpvd01DSWdlRzF3T2sxbGRHRmtZWFJoUkdGMFpUMGlNakF5TUMwd09DMHpNVlF4TmpveE9Eb3hOQ3N3TXpvd01DSWdaR002Wm05eWJXRjBQU0pwYldGblpTOXdibWNpSUhCb2IzUnZjMmh2Y0RwRGIyeHZjazF2WkdVOUlqSWlJSEJvYjNSdmMyaHZjRHBKUTBOUWNtOW1hV3hsUFNKelVrZENJRWxGUXpZeE9UWTJMVEl1TVNJZ2VHMXdUVTA2U1c1emRHRnVZMlZKUkQwaWVHMXdMbWxwWkRvd1lqRXdOakUyWXkweE9XRTBMV1UwTkRZdE9UQmxaUzAzTnpBek0yRmtNR1F6WVdVaUlIaHRjRTFOT2tSdlkzVnRaVzUwU1VROUltRmtiMkpsT21SdlkybGtPbkJvYjNSdmMyaHZjRG81TjJNNE5HRTJOeTAzWkRKbExUQmxORGN0WWpBek5TMWxOMlU0TldJeFpEazBaVFlpSUhodGNFMU5Pazl5YVdkcGJtRnNSRzlqZFcxbGJuUkpSRDBpZUcxd0xtUnBaRG95TW1VeE5HUmtaQzA1WmpBekxUaGtOR0l0WVRjMk5pMDFNbUU0TWpoak1EZGhOamNpUGlBOGVHMXdUVTA2U0dsemRHOXllVDRnUEhKa1pqcFRaWEUrSUR4eVpHWTZiR2tnYzNSRmRuUTZZV04wYVc5dVBTSmpjbVZoZEdWa0lpQnpkRVYyZERwcGJuTjBZVzVqWlVsRVBTSjRiWEF1YVdsa09qSXlaVEUwWkdSa0xUbG1NRE10T0dRMFlpMWhOelkyTFRVeVlUZ3lPR013TjJFMk55SWdjM1JGZG5RNmQyaGxiajBpTWpBeU1DMHdOeTB5TVZReE9Eb3hORG93TkNzd016b3dNQ0lnYzNSRmRuUTZjMjltZEhkaGNtVkJaMlZ1ZEQwaVFXUnZZbVVnVUdodmRHOXphRzl3SUVORElESXdNVGtnS0ZkcGJtUnZkM01wSWk4K0lEeHlaR1k2YkdrZ2MzUkZkblE2WVdOMGFXOXVQU0p6WVhabFpDSWdjM1JGZG5RNmFXNXpkR0Z1WTJWSlJEMGllRzF3TG1scFpEb3dZakV3TmpFMll5MHhPV0UwTFdVME5EWXRPVEJsWlMwM056QXpNMkZrTUdRellXVWlJSE4wUlhaME9uZG9aVzQ5SWpJd01qQXRNRGd0TXpGVU1UWTZNVGc2TVRRck1ETTZNREFpSUhOMFJYWjBPbk52Wm5SM1lYSmxRV2RsYm5ROUlrRmtiMkpsSUZCb2IzUnZjMmh2Y0NCRFF5QXlNREU1SUNoWGFXNWtiM2R6S1NJZ2MzUkZkblE2WTJoaGJtZGxaRDBpTHlJdlBpQThMM0prWmpwVFpYRStJRHd2ZUcxd1RVMDZTR2x6ZEc5eWVUNGdQQzl5WkdZNlJHVnpZM0pwY0hScGIyNCtJRHd2Y21SbU9sSkVSajRnUEM5NE9uaHRjRzFsZEdFK0lEdy9lSEJoWTJ0bGRDQmxibVE5SW5JaVB6NVhCZWFsQUFBTzFrbEVRVlI0MnUxZDU1OGtWUldkWjA2WUE2SmlEcGdEbUZpdExWeXptSFBPWWxaUUVXUTlBWE1XelA2emZyaXY4cXZ1cXA3dW5zSGY5S2VkN2Q2WnM3ZnV1K0hjYzkrY3BBZmc2K1FDOUFYb0M5QVhvQzlBWDRDK0FIMEIrZ0wwQmVqL0Y5QTB1UDB6UGtlZ0RVdWlOb0FpYk1HMGNRNUFTeElzMEJRRnFQZ1ppcFlnUTVKNXRxQmh5ellsU29JZ3l4TWp3N0pKVTdZb1VqNUQwSlJ0MDVabFVhSTk5bTZEa0NYRGxFQUpwdllBKzJSSHlCSXMyYklBV0xSZ3FlY2p0a1Jac2czSkZHRUFPRDNxblVDVERqRE1XRXpabEhvdVFvbEMvTDhvRVdvOHhkSVpnTFpwVzVZRXdKWWtJbnRDOWhESklHM1RFa3lMdGlISVBMV3Rkd0N0Q0dLa1FadEt5U1poVzRZait0bVNiRUsyWUtSRUNhUkVpeUNQRFJxeVRGRHFoVjRpSXJZbEtpSmR1RVl2T2x1QWJCbytuYTFQZHNBc0dyWkhDVVd3TFVHU0xNbmtKQXFLcGt4TDFqRkJtNUNNUWFEb0hvRWxBTFFoMEdJaHZFT2tUMmZxOWFBZGpzR2l0OU1tbUFOaEVaaXRNTGFQQjFxUjNJUzVkd0ZadEd4NkpzYkR4dHk3QndGdHlVWVhhaEhwc1BlbGFXbndMQnhSdmU5Z3RFNVIrSjJzTmJUa3ppTURjQTgxZ0p4MDNQeVZiVUpVZTNBUnVSODRIbWdUUlA3NWRBWXBFKzJUaUtxdS9YOUZXV3FyOVFoSFJ0V3hRRWZhYXdFaFFwODc0N2NJTXlhS3pTZlE0QlFScWZJNG9EVUlIWkxzdTV4U1lHSm5hcXF4UEd3YnpXZmNOREtFVG1IcWxhQ2p1R1ByS3cyTURwSERwYlBoWmR1dGM2dDFxd2d2eHdGdFdXaU9HTlU5WWR1T2dpSkhrMnhHZCtjdm9mMnpaQXJIY2c5RzFhYnVpMzZtYTA4bjFaaVhabGQ4Z0wxbnBGT2tsNVh1UVVGZ0I4aWQ0M1QrSWJGNTlGSXZEN250SXgwdHpaSGNJNkpBKzVEVlN5QW9nYkNIU1dZL1RNTGE2RUViT1MzUWJHSkVvbDNNRnBiUTlqSW1kQmFnYy9mVVJROU8vampwZjl2VXFIMVJIMnZkUXlRYTQwRUNuUE9reThIQVJqd1BtZG9YWGJNMmpjdGlHK2xrVWdJNDMvZkowUjB5dXRzekFRMklYZnd3YmREYVZFbkFGZ0VUM0JzdnRrUHQ0VjVabVF1aFRXRkJqR0xXMkJzSnVicWVkalNJdlZRNEtpUENUempvMEU1VkhwMGVOQjNKdzVzYTM1VDJ4NUR1cVVjTVpnWWI2aE1MT20rZ0FkcWNJMXpJZmtZNUg2QVREWnJXSEdzYkJNUDVzblJLUVI1bGZycEVqRmdXemh0b0JJVVVVd0FWVUVzNlorNFJZUzg2UWRtYTFrbmdZUTI5R3ovZGtZdUtUbmVTTjlQNUE1MkMxeUljR2RKT1IzM3RPblBKcFZKZ0xsbjdQSUpPYW9vT3hTVGdtS2hQTVVkMExxTWxPaVpZSzVLcWpJajNsQlR6UEVtRWtHY0ZJQ25Ba2pYdWVFNDFzWTB3QWptR0Ywc3ppbXdLaHZKWUQ1SnBJTS9MRkErUkZtTUV5VEhUZmNveGM0emhFS2xHWEFZNzVqQ1VRZVNoSGdWYWlBeVFneEtpZitBMCs1NTJvQitoMnNIUGFGbWhwQWlXc0drQ2hnMExtZlVMMTdFTmtTU01TYkk2dlFyQmtjL1JQRzB1OFNvRnMrNllQdWRabVl5SXBXQk1vV0o4RS8rbC9ZTHVxRlJGODdVMXMxQ2dtSWVoRkJ3MFBVMENOZ1haa0FYRzlCUWpKY0IrUkNwcXB2dkJQWHJiUVFqeU5UdDJNTm9pREVlMVpSaUlQdDdPd1dYL29GT2lMU0YwQnRveVQyRjIyMXdvdWt0UWNhVERJMktzRjJOMzR5Q2dVMkpFTEVyUTRwQmR6TFZpcnpCZ1VOaytET2dZdUFBaGxORHVuaWFqcDNnaDFIQkNCd0VkdkhNY29KMmI3eWJERGhxaFViYmRzMW9zNXpydlhrRTExVXlQVnpOSExlZStKVzZ5OCtCOFI3L094MUtkUzRNYXphdjNyOHR6Q0xLd1c1OFl2VnJuMHFITHNROE1PaytUdUp1dGhWSHdrTWx4TkRxRUFqSVNNSGNTdE9XRXFGNzlTd29IdDNSd1o5TXp2OHc3OG9Ib05jblRtZEpodEthSWljRjYxcEUyaUk0SmpMSmdIUFVQSkpDTjBGZFNxV3hqcjBKb05HUitqZ1NhamhKK1piUU83UmI2U1R4a2lFY0JuWXh3RDNCVjZJaE9ncjNHS0ZMVmNVRG5RZGc2VXpPa0liMWpHRG9ScHlPQlRoSDExaFI4VVdiME1ndm9hQldQQnpxck5iSGNvYzFoNjJQbDE5RkFKemVKY1RubzZNUDczUUpLaC9tQW9OdkdaREViRWJKVTlZK0ZWZWlERHJuSWtBbW9aVU9qY0NiM0o5RzBWS3pNRHdsYTBWWXZpbnFXSEpyT05NaUdSZFhRUVZkR1FsSy9wUFd5b3pUc3Q5MG00R0pXUFN6b2FIUzNpeDFoVzREWW01NW5MckpVQ1J6WTBua1hZS3MvaDNmMHJXcEJFRndTQVJ4Mm95Z2s3VnVHaWlKQUVjUG9TRGxveUhSMDBNRUNheVB2RUtKSkREWFZJVmZ0cEZwSEJCM0pZUU5QUm1mK2IwVG5PaForWm9MOGdSZk9ndUtiOHcrTGJJaXY0WEZ0TjVYU0dZRE9DeGd1dlNPQnpLeXZNTWoyRWFGbjlVT0h0alNDVUpnbUVvVUlRMEk4Q3c3c0hCT05PYTU3SFdoNDBrZUVvbDZEajNTU2xOaG1HSlU4T1pOQURGM09tS3BEUzlLbmZZQVc2RkV3SUlZL2xHRkdkbWx0TXZlbmhCZ05NYmgrVHZZNFpCbXpwZmhhMlNaSEQ5c2FkOTBLYnIzTGRaTWRzeGdDV1hsOVpEU25hZDdjMFBTc0ZNaHF6Snd3THo5MXo1WWdPK1VzWStvMjducmprZEhUYVVlekpiTkplTGhTVE1pUkJXSVRqdWl2RGNWK1Z1dWZNa2ZHREUxY3FNRTU2WGRpRnJOeEIzYWxwVWtNTktXSzlhSmVkYUdJQlI0OTdGSDBBTXVhU1VwNVdMUXBpNjUxRDZDL0xjWm1rWEw0TUhvTVl0NHdXZHBXeG9oTTNOd09yOVdhMHYxdnFOenlxOTl0c0o5OXcyMlhkVndFMlV6YTB4NUJjMURVeDliTFlIR1cwZlZyUTVDY2hXeVRBS2h0SGZ4YS9YUmZUMnd3ejk4SHljdzlYaXQydUJaUWVqRSt6UXFqYlE5bVpVYUUySklwRE9uRTRNeUlzUTJxamhhUXQ4NEVZdWZaSXN1aXFOTW1GeWlycW16Q0FqWG9MZkk2bW52c25LWE44M0k0TkI2eUFTMVo1bC9wMDhnRWYreXlrTUx3ME9RRnVZN1lpbFNoRGY0V3lVaHM5dFFXd0ZpL01xSXNFWWlSNGRCZkxZQTlUaWpJbWpHM1RnaGdqbTE1RzlmTnptRGFPMmhaaURZamdHTWsxQW1oU20rTEwrYnhRL094WWNxZG4wTmU1NGFYeHZQVkcwVzJGY29SVEN3VEM4MDlLU0ZwWU1KY05FUmpJMjNKNUJJWHErOVhMekxrT29jSWdjYW9HU0hVNXptaWFSMm5pcnpWREJnTVBRMWdyQkFDRjBGWFZWVlZNMDJkcE5peWx6RXlZYmpsWUJ0SHdOZzdZa3FBR09veUw4T3YwMXVmRkFGWGRWVlZWVjFLNDZBSW9kRDVJZmlXM2w4amRpODA2ZEZ0TVRxeFhPMnRhK0pPcHBEcnFudE5DcWJzMGdYTmQ5QkVZUDhZRmd0anRrM0FlaHVYUUZmVDE3aUZ6aysxUklrcml2dCthQk01SmJaeTZNRE9FdFdUelpCSHFKdnF2UlRCcWF5YkdyU0MxRDdYTHFhZ3E4dGJVUWZyelhMV1lZai8rbDFWa0JzSEJEMTA1akpxMktVOXdoaG9qMjZBQ1dIZ1FZU3pKMXVjWTRnNnltZE15MHFRZ3k2cm1RUG9JTXNqTGVpcG5lc3Bhb3NlcnpNUnpDTFhnU2NFMzBJZVFyUitzdDNPVlZWWFhWckFjTVptQWFGOUdlYjBMR25VUVVUc1pkRDErS3RldHVpZnRTeXBaTnl4NUNGTFpPeDNZMnNDZW91aEc5U2hNR0tQNXJjaGtmSndJVEZ1bmdEb3c0R2VCenYwNnVDTEVCclgzQjdabURTdnVSbzgxQXJYU1RGN3owVVFxYjM3SmQvaWt1VTd3eTRRbEVFZmJCbXFiT254WHpWZUhacEtSZEVzUldObmpFclVYTDE1WDFlSmxVR1hUMTNCMUlFMHk4bEZ5QlRIcTdPeEF6T3pTTDV2MFBVNGxVeEJSMGVYTHhNVHM3WjhYQzJIeUo4ODJCTEp4TkxWWEFXVmVWeG55VDZ5NmxqVDlNaUkwWWRiZkRucFlhdTNnbzZ0aGFaT0xreFQ0MFl4eS9UUDBsRkFUK3ZuL2hzM3A1VHVqTlpac1FwZUluT1VFK0hWMzZhekJsMVhWWFVwcGZTYnF3WTRwMHZLRFIvbG4venFuK21Jb05Pc3BhK2tsUDU4cnoycjc0RVFOMTdkZGMvZi81VE9EblRxUjhKYm52N0kyKzhyaEl1MmxwSmtRWGYvL044Ly90YURIbjM1bG8xMXdjSlhYZUlGVGpLd2Vndm9xcnBjUGZ2YTIvOHdzMXZScnNyWlYzLzczeDg4L2hIVkxUTTRMeStGT212SUR2U29CaTNHait1dis5SDkwSlR5UnZTMGhtbGZ2ZTlmMzN2NDQ5NDVCNlJvNU11Ykg4SVcwTlZtME0rNjQzNXBQSkVLNWo4dmg5MzlpMy9jKyswSFgvdU9hdmRYUFFGZUJsMVBVbmlCdXFtcTY1OXh4OStHTTVkUXRNWlZjcmJ1dXVlUC8vNys5UTk5eTl0TEpxc25YOVRETitycDA2ajNZT25yZm5TLzJrWXdydzA2SnR5Q2ZPZnYvblBuZHg3eW1IZHVkOWhMbHpZZnl1RUoyREY2aEJGdWZ0UVAveElKMm5GdFl0eXdtVGxiNnRlLy9PNHpIL2FtdDIyUEZ1OS8wUXR2bmY5UVBkZWhyZzU1OFJaK0R6TVgwWERRa1hFVkllbGYzcmM5d2xaVlhWZlZpNzljK3VidFQ2dzNPblFEdXQ2Y1hPcjJyYjllUmI1aWhGMHhuVzkrWEZRN3gzZDY3RGNiQXFDZS9PQzNibzBkeTJ1UENJWS9WU3k4ZGxFWjJVTVc1cklNK3F0cHJyaDg5Wlh0RVc5YW1tN3lqbVFEV1Y0WmR3ZEhXYjI4Q0kxdmRjM1hadXIxOUtVbmoyUEtJdEFiUzFPYlVMNWdsUmFYVG1QSG9MOHgvZmFYVWtvcGZlU2xDNVBMQ3RETXR3Z1E0dEw1V2NrOWVxQ2JpUDNlRzFOSzZibHZMS1RMQmFDcjJXTVlTMGx4Ky9XT2JVbDh2MnZDcDl2c1hkZFY5YUZYcEpTKytNUXJoU0M0cUJ1ZmJSRWJSZlB1UldWMmo4SkJmT1dIVTBwZmVFcTEyRDNTT0w2WFdZV1FZVzRZVURvekRMdUF2dUZqS2FYUHZHQlJiVHBMaTlVbEJoS2hPOWcwc052OEpPWkQza3MrbmxMNjNQT0tJSmFBTHRVNmJhdnQyZkY4SGdCcEYwdlgxYVUzcDVRKy82UlN2Ym9iMWR2K084Mk5YREpuQm00NW94bjAxNmMvODRPdlNTbDk1UWxYbHZ2MHJLbEh6MmVpU1JsQURxbmxSaTRzdThjVWRCMXgrdm12WHdNNmJXamN1bjRtTGhZcmdXN282QzA3aVBYbHVZTVlQK096VDF2UWJSVm5McGRuLzFrdTlxZEhNTlN1M2pxQW16bUlYZmZ4MUN1VFI3NTVKTGQxVHBUS1Z6VExVRE4zV1FUNm10dW1CekYvNE4zYm02Mlo0V2M5MSt2bWZZUFJwTlpxN2pUWXF2UEtscjZ0V0VNV1RQZXVWOTIwYmN4Y1BJa2poQmhOTXpQYXVHNWhhL1UwRi9MbUNwNDNmR0tYMmZnNEZIT2tqR3B1dllpT2NaYzBmdVdtRzRZLzVhMGZlUG5MYnEzcTk3ejJodmRWaTFRSWFYTXVDalVRQnZ3ZDRtSWphc2s5VnhsMC80dlhmWHJ5cWVkODZzYXFldk5IUDdsTWhUQTBkeUZSQi9QVm43emwrOXdvSHU4aXB0V1hzZmF2c1VqS2Q0aVFZRXJuRmJTSEM0YU11czQ2N3VWaXF5OFk3a3VTWWhmaElKS09mWUpHL3lyaytGMDR0cG5PTTJoQ1JIdFJmWjRWNHNnWHo2MjNkTHRqNWVhQzArTWJldjFGOEZGUE8wUnVvV0ZMNXh4MFpKR1FYOFV2emVIeE1hL1dta0pnM0xFUWltODZuWC9RSVFETUZCT2xzOEM4Vmw0dmgzUWkvM3FjUTErcnViZU1pSHlEc0U1MUdkY3gzWU9RM2R3T2RWYVkxOGZwSUI3bHM0Tzh5L1pGM0l1WHp2SzErcGNiYkdCcnppbm9jL0o2UUlMK0gxOXRoZE93T2c2Q0FBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCJdLCJhYWd1aWQiOiJmNTZmNThiM2Q3MTE0YWZjYmE3ZDZhYzA1Zjg4Y2IxOSIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJ1cCI6dHJ1ZSwidXYiOnRydWV9LCJ0cmFuc3BvcnRzIjpbImludGVybmFsIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN31dfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTAxLTI2In1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNC0wMS0yNiJ9LHsiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbImE4Njc3OTdlZWQxNDQ2ZWMxODRlM2I1NjAwYWUwMGI0OWFiYTYyMTQiXSwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiYTg2Nzc5N2VlZDE0NDZlYzE4NGUzYjU2MDBhZTAwYjQ5YWJhNjIxNCJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiU2VjdXJpdHkgS2V5IE5GQyBieSBZdWJpY28gLSBFbnRlcnByaXNlIEVkaXRpb24ifSwiZGVzY3JpcHRpb24iOiJTZWN1cml0eSBLZXkgTkZDIGJ5IFl1YmljbyAtIEVudGVycHJpc2UgRWRpdGlvbiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzMsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6Mn1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiLCJyZW1vdGVfaGFuZGxlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlESGpDQ0FnYWdBd0lCQWdJRUcwQlQ5ekFOQmdrcWhraUc5dzBCQVFzRkFEQXVNU3d3S2dZRFZRUURFeU5aZFdKcFkyOGdWVEpHSUZKdmIzUWdRMEVnVTJWeWFXRnNJRFExTnpJd01EWXpNVEFnRncweE5EQTRNREV3TURBd01EQmFHQTh5TURVd01Ea3dOREF3TURBd01Gb3dMakVzTUNvR0ExVUVBeE1qV1hWaWFXTnZJRlV5UmlCU2IyOTBJRU5CSUZObGNtbGhiQ0EwTlRjeU1EQTJNekV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRQy9qd1l1aEJWbHFhaVlXRU1zcldGaXNnSitQdE05MWVTcnBJNFRLN1U1M213Q0lhd1NESHk4dlVtazVOMktBajlhYnZUOU5QNVNNUzFoUWkzdXN4b1lHb25YUWdmTzZaWHlVQTlhK0tBa3FkRm5Cbmx5dWdTZUNPZXA4RWRaRmZzYVJGdE1qa3d6NUdjejJQeTR2SVl2Q2RNSFB0d2F6MGJWdXpuZXVlSUV6NlRuUWpFNjNSZHQyemJ3bmVid1RHNVp5YmVXU3dienkrQkozNFpIY1VoUEFZODl5SlFYdUUwSXpNWkZjRUJiUE5SYldFQ1JLZ2pxLy9xVDlubURPRlZsU1JDdDJ3aXFQU3psdXduK3Yrc3VRRUJzVWpUR01FZDI1dEtYWFRrTlcyMXdJV2J4ZVN5VW9UWHdMdkdTNnhsd1FTZ05wazJxWFl3ZjhpWGc3VldaQWdNQkFBR2pRakJBTUIwR0ExVWREZ1FXQkJRZ0l2ejBiTkdKaGpncFRva3N5S3BQOXh2OW9EQVBCZ05WSFJNRUNEQUdBUUgvQWdFQU1BNEdBMVVkRHdFQi93UUVBd0lCQmpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQWp2anVPTURTYStKWEZDTHlCS3N5Y1h0QlZac0o0VWUzTGJhRXNQWTRNWU4vaElRNVpNNXA3RWpmY25NRzRDdFlrTnNmTkhjMEFoQkxkcTQ1cm5UODdxLzZPM3ZVRXROTWFmYmhVNmt0aFg3WSs5WEZOOU5wbVl4citla1ZZNXhPeGk4aDlKRElnb01QNFZCMXVTMGF1bkwxSUdxck5vb0w5bW1Gbkwya0xWVmVlNi9WUjZDNStLU1RDTUNXcHBNdUpJWklJMnY5bzRka29aOFk3UVJqUWxMZll6ZDNxR3RLYnc3eGFGMVVzRy81eFViL0J0d2IyWDJnNElucGlCL3l0LzNDcFFYcGlXWC9LNG1CdlVLaUduMDVac3FlWTFneDRnMHhMQnFjVTlwc215UHpLK1ZzZ3cyamVSUTVKbEtEeXFFMGhlYmZDMXR2RnUwQ0NySkZjdz09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWZDQVlBQUFDR1ZzK01BQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBSFlZQUFCMkdBVjJpRTRFQUFBYk5TVVJCVkZoSHBWZDdUTlYxRkQvM2Q1OXdlUVNJZ1M5QVFBWGNGTEFRWmk5ZnBlVnoxdFkvV1RacjVXeHBjN1c1a25MYTVqSTNaODVzclMybk0yc2p0V3daUzdJVUg0SDR4Q25FUXg0REFaRjc0Vjd1czg4NXY5L2xJbkJ2VkovQjRQdjludS81bnUvNW52TTU1NmZ6QS9RdjBIYi9JclgzVkZLUG80NWNubTRpblVJV1l3TEZSbVpRVXV3akZHL04xaVJIaDFFWjBOUlZSdWRxdDFCZCsyblNLeVMvT2h5czArbGszZS8za1E5cXZENFpVdGE0VlZTVXVZMGVpcHlpVGhBZm9jb09SVmdEdXV3M3FLUmlBZDNyYmNFdGpUallJb2Y2V2FIc0NtelZQV0NNeCtjZ2g4dExxV01LYU1Xc1VqTHFvMlJ0SklRMG9Pem1lcnBRdTRlc1pnc09Oa0d4SDdkMGtkdlRUMTdzNE9NVTdWSThaaGpnR2FNK0FxOWlFTnU4UGlmMXVkejA3TXd2S1dmOEdsVm9DRVkwNFBDNVdkVGFYWUZiUjh2TnZMNSszS2dmYjV4Tk15YTlSYW1KaXluYU1sR1RWdEZscjZiYTl1K3BxbkVYNHVNdVJSZ2pTWUVock43dXRGRmU2bHFhbDdOZmt3NWltQUdIeW5QcGJrOFZtWTB4c3RucHRsRkNWQ1l0elR1Qk44M1FwTUxqVHRldmRQelNVbko3ZThta2p4WjM5ZlhiS0RmbGRacWJ2VStUVWdHbkJWRjZmUTJpUEhnNFcxNlVXVXd2emJrMTZzTVpFK1BuMHB2ejdKU2V1QXllczhsY3BDbWFLdW8vcCtxV3IyVWN3SUFIV3J2UDBZRXpoWEF0TEFic3NIaHA3aUdhbXZ5aWpQOHJ5cXJYVVdYOVhvb3d4eUF1Zk5CcnA0M1BPQkZYWmxrZjhNRFJpcWNweW93QXdwdXoyeCtmV3Z6L0R0ZGU5c21zenlndGNSNkMxd2JkekJsNk9scTVXTllZNG9HYXRoSk1ya1RFeDBqQVJTSEFWcys1cllrUU5YYitRZ2ZQTHNRNmdYeUluc3JlUWZtcG03UlZGWWZMODZuMWZpVU9rWXZTaGtVUHh2YnVrem95NksxaWhNMWhvM1h6VzZFdlNmWEErZHBpV0dhV2QrZG9Yekx6bUd3S1lGTENBc1JBbFBCQWhNbENGWFU3dEJVVlByOEhnVmNKSFdxK0YwMHBscitETVRkclA0enZ4WTExa05NaHhUK1NlVEdnK2Q0VjVMUUppdHlVR0pOQjhWRlpzamdZQlpNL0lJL1hDVGtqMHF5RE9wRjJBVlExN0NJalVwL0RuVDFVa0w1RjVnZGorc1Mxd2cxZ0UzZ2lnbTYwZkNYelNuUFhieUFQYklYditJRHBFMTZUaGFISVM5c2t5aGxtTUU1RjNjZnFBS2hxMkMwRTVQSDFnWWFYYUxQRGtaRzBIREpPbktXSHA1MUkwejVTT3V4OGUxV0F1WnpkSFFyVGtwOFRtalhvSStsYTB3R1pzenVicWJPM2lmUTZBL1c3dlZTWXNWM21SMEpLd2tLYzRXSGlCa21SOEkzQ0NnSTg3b09MNHF6VDVQK1JVSkJlakVPZ0FQSzhoWVB6YXRNK2VJVHAySU85eVRRbWVyb21QUnh4MXF4QWNzaWxlL3ViU2VFYmNXUUdZRUNnaGNMWTJIeUtqb2dqSDI1aE1wanBVdjFPdWdsaTRlaDJlUncwTzMyYkpqa3l1Q2dOemcwdnpsWU1TaVNzMHVvbzRNRzdoTU9qQ0VhWDF5RkUwblN2akJ6dVRuRXBLODZaOElvcUZBSXVidzhrZzlBckVhUkVXU1pJK2pINFhicDZnOUU5RW5KVDNvYVJ6RE4rTVVKQlFESG41NmE4b1VtRUJ1c094QnMvTjUrdEpFYlBrQUZEajhVR3ZPcy9JV3ZjU2dsR0JodlM3L0ZUWWZwV0dZZERZOGZQQXhXU0EzNXNUQzRwNCtMbTRBYXFJb1BlUXRmdWZLNkpoMFpoeGxic1VYT1NtWE5pZkQ1WlRBa3lEb2ZiYmNjbHhuQThXTkFxeENiUk55a2hYeFFwYUR3NjdmWFVZYnNpRzBLaHR2Mm9lSXZoOHJoUU1ZT2NFQXFYRy9lSSt6bmdPYzV5eHI4cTgySUFNMWMvRkxGT3BscXU1ZUZRWHJNWnpHY1ZDalliTFdHNUk0QlQxZXVScmxieHROT3RNaXREREVoTFhJSXluQUF2dU9FV0UzWDNOZEFmdDk0VmdhRzQyWElRdDBaWDZQZUNFL3FRRmU5cks2SHg3WVU1MEt2SDdmVzRmUytxN0tLQkp4c2dnQlg1cFNBR2gxaklyVmg1elE2dzNSZmFhaEJYbS9hQ2JDWlRqQ1VGVVR5V1pxVzlwNjJNakpQWFZxT3JQZ01PNE52NzRHa2Yrb3dmdE5WQkRRbmpGSnFIU3cxN3BYdmhXVzVLWnFlL1E0OU4vVVNUQ0FWV29RWEZJSEJIWFhlM0ZQclVEc3VHRG10Ri9oSEtUSHBla3hoaUFPUEkrU0pxNlM2SEY0STlZV3prQkpUbzQ2aVVNeldwOFBpci9SaWR1THhLWXNTa3NWOHZMbE9RdmhHWDJZbFIwT0JoQmpDK3UvZ0VjdlkwQXBLN1lrNDFOeGpQU1FuV0ZIVEY2NlVyamdldkI4Q3U1YStsMnZZU1JQdHVWRG83M2hoZE1TSG5VWDd0VGpzVlpHeEFsL1dwdGlPSUVRMWduTDI5bVg2L3RSMXRtbGtZajhXNFgrQ1NqV2NVREdZMU5wUy9DN2hTS3FpTUxNL2wyUW1TV1o3M0RkeitnaW84QkNFTllQUTQ2cW5rendYVWJxdkJreGpVUXNXZlpGZ2J1bzNyQWYrd043ak9POTAreW54NFBpM0wrMG5ZTDFTY2hEVWdBUDRnUFYvN0lkMXErMUhTaG11R2tJcVdSUGd5eE1GcVA4SGZqVG5qWHdZNWJRZmJKY3Q2T0l6S2dNSG90Ri9IZTFlZ3NheEhTcUc2d2ZkbVE1eDhOeVRGRnFCY3AyaVNvd0hSM3lrNSszNmhGN3ZYQUFBQUFFbEZUa1N1UW1DQyJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTEwLTEyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3MywiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJTZWN1cml0eSBLZXkgTkZDIGJ5IFl1YmljbyAtIEVudGVycHJpc2UgRWRpdGlvbiIsImNlcnRpZmljYXRlTnVtYmVyIjoiVTJGMTAwMDIwMjQxMDEyMDA1IiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMDYtMDQiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDczLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IlNlY3VyaXR5IEtleSBORkMgYnkgWXViaWNvIC0gRW50ZXJwcmlzZSBFZGl0aW9uIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVMkYxMDAwMjAyNDA2MDQwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0wNi0wNCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzN9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjQtMTEtMTIifSx7ImFhZ3VpZCI6IjZlYzVjZmYyLWEwZjktNDE2OS05NDViLWYzM2I1NjNmN2I5OSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiNmVjNWNmZjItYTBmOS00MTY5LTk0NWItZjMzYjU2M2Y3Yjk5IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ill1YmlLZXkgQmlvIFNlcmllcyAtIE11bHRpLXByb3RvY29sIEVkaXRpb24gKEVudGVycHJpc2UgUHJvZmlsZSJ9LCJkZXNjcmlwdGlvbiI6Ill1YmlLZXkgQmlvIFNlcmllcyAtIE11bHRpLXByb3RvY29sIEVkaXRpb24gKEVudGVycHJpc2UgUHJvZmlsZSkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2LCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH0seyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3IiwiZWQyNTUxOV9lZGRzYV9zaGE1MTJfcmF3Iiwic2VjcDM4NHIxX2VjZHNhX3NoYTM4NF9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjYsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIiwiYmFEZXNjIjp7InNlbGZBdHRlc3RlZEZSUiI6MC4wLCJzZWxmQXR0ZXN0ZWRGQVIiOjAuMCwiaUFQQVJUaHJlc2hvbGQiOjAuMCwibWF4VGVtcGxhdGVzIjo1LCJtYXhSZXRyaWVzIjo1LCJibG9ja1Nsb3dkb3duIjowfX0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NiwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwiLCJiYURlc2MiOnsic2VsZkF0dGVzdGVkRlJSIjowLjAsInNlbGZBdHRlc3RlZEZBUiI6MC4wLCJpQVBBUlRocmVzaG9sZCI6MC4wLCJtYXhUZW1wbGF0ZXMiOjUsIm1heFJldHJpZXMiOjUsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRFNqQ0NBaktnQXdJQkFnSVVUbmJiR0lSMk5IdnpxSUtGQWVRd0cxWEJpczB3RFFZSktvWklodmNOQVFFTEJRQXdMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3SUJjTk1qUXhNakF4TURBd01EQXdXaGdQT1RrNU9URXlNekV5TXpVNU5UbGFNQ1l4SkRBaUJnTlZCQU1NRzFsMVltbGpieUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRUVnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBT3NYajNrMDRCYW40VFlkdFpLcUQvT1BKeHlEeWFQbUNCVUZVaWFaSWdUdGVabmozWDI1RGhncFpaWHNDNEQweWRJY3JsQTZ3TlVJbk9STC9MOXpCYlRFSU1BVk1HbzZnN1VLQW1iMk1GNkFIYm5oWUpkOWVpa3VwVk5XU2hITllOYzRHQmRPMVlONkFmVXF2SmhIYmUzVjRTTk1QbUJSRUtKUFZ6N1Rod2dtZ2dUZThXczJLMC93c3F2MndTRTdwYkNCc1VaaElYNTFiWk0zcHFEd0pQVG1SRkV2dDAvNnRHNWVPOEYzajE0T1hxZkVobWpuMVZ2eEtEWVFPTFpBeEN3d2dDMFA0Q2RmV3YzeThQU1I4STM1NGhPMVkrR3pOanZJcVgzOE5LTHl3dUlZSEZlck94Tmx4RU1CdkZoWUJ1UnVZQWtrZ1VhUHFONlVCaHNJTHJzQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZDQ29SSGhpeU5uYm5YUldJTDZaQlhvQlg5WVRNQjhHQTFVZEl3UVlNQmFBRkNBb1VDRWJwRnBiNkZQTG5aM0Y1UHhzTDNvZk1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQ1FGYWZKSTEvNVdnOUNFRWltRTFSUDU0UmdRd1ROVE9PUXNMQUNUZStySXRsRlF6QzlaRGhyVjgyOHlYN2p6eStBQXNwM2l6SzdUMXRoMmRsN20rdHUwc3cyUGEvb2xjMDJudDZQeUl3MzQ4Z2FIemhJMSswS0U0NXF4dkZEZUwybE14YlBmQ1l2eUVFYVl6amlRRUxVNTk1MXBYR1d5S01hLzRmTHRPK1pLT1hoTXVWZXE0clhEUEk1NFc2SkhPaUFhaUtkaXcrNWUzYzJrdC9qRklRdE02dk1YZzlMTkZ6ZGpFVE50MjBWWDlRZXZScEZaZnVjTUc5d0NhUURvRmxQenBUTUpLaFBldi9pbUptWlloS2ZyMGxMY2VtdHFqSXhMQW9xWmRPWWZIQmc2K3ZBY2RQSS9pYXVHcFVBdjdYK1VLTm1Ed2paMkJhSDRzTHdoQjJtIiwiTUlJRFNEQ0NBakNnQXdJQkFnSVVVY21NWHpSSUZPZ0dUSzBUYjNnRXVaWVprQkl3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRRG01NTViV1k5V1crdE9ZMHJJV0hsZGgrYU5hbm9DWkNGaDdHazNZWnJRbVBVdzBoa1NHNnFZSFF0UCtmWnlTMzNWRXJ2ZytCUXFubXVtZ05oZnhGcmt3RVpFTGVpZEJjQzhDNEFnNG5xcWlQV3B6c3ZJMTdOY3hZbEluTE5MRmNaWS8rZ09pTjZaT1RpaE81L3ZCWk1iajlyaWFBY3FsaVltTkdKUGdUY01HYUVBeU16RU1OeTJubTZFcCtwalA1YUY2Z2kyMXQvVVFGc3VKMWoyUmoveW5NL1NkUnQrZWNhbDVPWW90eEhrRmJMOXZ2djJBMk92NUlUWkNsdzRiT1M5bnB5cFFpbU9aNVFBWXl0bVlhUXBXbC9wTVl6NnpTajhScWtWRE5FSkdxTmZUS0EyaXZMWXdYNmxTdHRNUGFwZzBKODRsOVgwdm9WTi9GcFM0VkNWQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJRZ0tGQWhHNlJhVytoVHk1MmR4ZVQ4YkM5Nkh6QWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQVlNemdMckpMSXIwT292UW5BWnJSSUd1YWJpSFNVS1NtYkxSV3BSa1dlQXRzQ2hERUhwWGNKL2JnRE5LWVdvSHFROHhSVWpCNEN5ZXBZZXZjM1lsckc4bzd6SHhwZlZjYW9MNVNldUprekh4S240YlRhU3A5K012d2FtbnA2NGtaTWlOYkZMa25mUDlrWUtvUkhrTVdoZVJKMVVzUDF6NFNjbWtDZUlMZnNNczZ2cW92cWpXQ2xGc0pwQmNzbHVZSFdGN2JCSjFuNFJ3ZytBVEVvcFk0SWdHdjZadndjK0E5citBVDJocXBvU2tZb0FsK0FOWXdnc2xPZjlzSmUwVitUQTlZWS9VbGFCbVBQVGQwLy9yOXd2Y2VQV1prUGpLb0FDL3pVTmhmRGJoNExWOEdIczNseVgyWG9tTC9MTmM4Sll6eUlhREVoR1F2ZW9QaGgvdHIxZz09IiwiTUlJRFNqQ0NBaktnQXdJQkFnSVVSMzhtcTI2U2Yyc3pWVjJCZEc2V0VON2t1V1V3RFFZSktvWklodmNOQVFFTEJRQXdMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3SUJjTk1qUXhNakF4TURBd01EQXdXaGdQT1RrNU9URXlNekV5TXpVNU5UbGFNQ1l4SkRBaUJnTlZCQU1NRzFsMVltbGpieUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRUlnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTlkwV2I5b1BvUm9Lb1F5V1BhSnB6MTF2cldUZzZ6VHRtTmoyVm9LUm55dktHUnFwemI4M3c1bDZZQTk2VVlrWUJEUVAwaWxPMkRQZTZ3V3FWUjV6RGZSemRjSDhiaCtMN2RHR3ZhZTZoUlRaaGtGa0NwWERzNEhjY2tuckRmOEZDbEo3SGUzOUpmNDIvRzFRbTJ6ejlXV21yUFh0Z2lLL3gwNUdqc1FmR3VERzF6ZjVRVFVVaWU4bHd5bUszVGZkT3ZOZWVKQUFQZTJwbjdJdGZSYityVnJOV2lEemxSbjJ2Tm5aMndQbzR3SC9XSjZkaFhaRytyTVdUK2E2Qm9jZzFVZkl3NmtkdW5HNGJUcFp6c3ZhY0ZZeVIwbXBmK0RlT25wU1dBbXl3SldIdlRsZjJZWHhGeWVYY1RBQ2RRbGNNTkdKMlZoWlE0OHh0UDUvUkJQLzhrQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZDaHk0Mm9raXFjVFMxaXFhL0hSV2prQm40SC9NQjhHQTFVZEl3UVlNQmFBRk9xM1FwQ2VESHRrZXR0VWZBTzZmRTZmMktGaE1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQW4rUkhJUGJ0TUVETmRUMWc4SC9SaXRBa1VkTGdBdDF0V0dXbmxqOWtuYnY0LzRHbFg3QzlwNDVlZlBPOS9hWkw2T1YxWFJLQmk2S210Qlc1SzdudVlFbk14LzVCcUJTYkxUN3JoZHVDNDlUQmVNYjlQSGRYc1RsU1ZOWWVmcjFkR2lkcjRqMHhWQlFMYjFya25EQWJkV0R6S2Z2bmF5S084RnJ3ZTdIeDg0M01HL3JKK2MwWHJ1VXZiZlZUQ0hMaUlXaE03b05EaEw4eG9iNnhVbzlLTEtjU0wrSXRZc08zLzlXYjhROUdqc3FMNEZYc0RjRzFTYVloN0twZnVNbU9peHF6SlpPMm5JaWNQWVJnMUkyU3VpVWZZTzcwdG1kSGNibCtrU1FtU1l0N3JxNHZpSUxnMkd4M2o5cklUdVdUamJhVWFTU1F4Z09tTVNIdXl6TUFDIiwiTUlJRFBqQ0NBaWFnQXdJQkFnSVVYemVpRURKRU9UdDE0RjVuMG82WmYvYkJ3aVV3RFFZSktvWklodmNOQVFFTkJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNWjYvVHhNOHJJVCtFYW9Qdkc4MW9udE1Pby8ybVEyUkJ3SkhTMFFaY3hWYU5YdmwxMkxVaEJaNUxtaUJTY0laZDFSbngxb2Q1ODVoKy9kaEs3aEVtN0pBQUxrS0t0czFmTzUzS0dOTFp1ano1aDN3R25jcjRoeUtGMEc3NGIvVTNLOWhFNW1HTkQ2enFZY2hDUkFIZnJZTVlSREY0WUwwWDRENW5HZHh2cHBBeTZua0VtdFdtTW53TzNpMFRBdWNzcmJFNDg1SHZHTTRyMFZwZ1ZkSnB2Z1FqaVRKQ1RJcStEMzVod3RUOFFESXYrbkd2cGN5aTV3Y0lmQ2t6eUNpbUp1a2hZeTZLb3FOTUtRRWRwTmlTT3ZXeURNVE10MWJ3Q3ZFenB3OTF1K21zVXQ0cmowZWZuTzlzMFpPd2R3TVJEbkg0eGdVbDVaTHdyclBrZkMxLzBDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01COEdBMVVkSXdRWU1CYUFGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFNd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkRRVUFBNElCQVFDM0lXL3NnQjlwWjhhcEpOanh1R29YK0ZrSUxrczB3TU5yZFhML2NvVXZzcmh6c3ZsNm1lUE1yYkdKQnlKMVhucXVCNXNnY1JFTkZ4ZFFGbWEzbWlvOFVwZjFvd00xWnJlWHJKMG1BREcyQnBscWJKbnhpeVlhK1IxMXJlSUZUV2VJaE1OY1pLc0RackZBeVB1RmpDV1NRdkptTldlOW1GUllGZ05oWEpLa1hJYjVIMVhnRURsd2llZFlSTTdWb2xCTmxsZDZwUkZLbFg4dXN0Nk9UTU9lQURsMnhORjBtMUxUaFNkZXVYdkR5QzFnOStJTGZ6M1M2T0lZZ2MzaXJvUmNGRDM1NGc3cktmdTY3cUZBdzlnQzR5aTB4QlRQclk5NXJoNC9IcWFVWUNBL0w4bGRSazZIN1hrMzVEK1dWcG1xMlNoL3hUNUhpRnVoZjR3SmIwYksiLCJNSUlEU0RDQ0FqQ2dBd0lCQWdJVURxRVJ3KzRSbkdTZ2d4Z1Vld0pGRVBEUlozWXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFESTdYbkgrWnZEd01DUVU4TThaZVY1cXNjdWJsdlZZYWFSdDNZYmF4bjlnb2RMeDVzd0gwbFhyZGdqaDVoN0ZwVmdDZ1lZWDdFNGJsMXZielVMZW1yTVdUOE4zV01HVWU4UUFKYkJlaW9WN1cvRStoVFpQLzBTS0pWYTNld0tCbzZVTGVNbmZRWkRyVk9SQWs4d1RMcTJ2NUxsajV2TWo3SnRPb3RLYTlKN25IUzhrTG16WFhTYWowU3dFUGg1T0FaVVROVjR6czFidm9UQVFRV3JMNC9KOVF1S3Q2V0NGRTVuVU5pUlFjRWJWRjhtbHFLMmJ4Mno2b2tWbHR5RFZMQ3hZYnBVVEVMdlkxdXNSM0RUR1BVb0lDbE9tNGNycHduRFJMVkh2alllUEdCQi8vcEV5enhBL2djU2N4andhSDFaVXc5Ym5TYkh5dXJLcWJUYTFLdmpBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlRxdDBLUW5neDdaSHJiVkh3RHVueE9uOWloWVRBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBcVFhQ1dNeFRHcVZWWDdTazdra0ptVXVlVFNZS3VVNitLQkJTZ3dJUm5sdzlLN0hlMUlweFowaGR3cFBOaWtLam1jeUZnRlB6aEltd0hKZ3h4dVQ5MFB3M3ZZT2RjSkpOa3REZzM1UFhPZnpTbjE1Y0ZBeDFSTzBtUFRtSWI4ZFhpRVdPcHpvWHZkd1hETTQxWmFDRFlNVDd3NElRdE15dkU3eFVCWnEyYmp0QW5xL05EVUE3YmU0SDhIM2lwQysvK05LbFVyY1VoK2o0OEs2N1dJMHUxbTZGZVF1ZUJBN24wNmo4MjVycURxc2FMczlUYjdLQUhBdzhQbXJXYU5QRzJraktlcnhQRWZlY2l2bEZhd3AyUldadnhyVnRuM1RWMlNCeHlDSkNrWHNORDA1ZENFclZIU0pJcytCZHRUVk5ZOUF3dHlQbW55YjB2NG1TVHp2V2R3PT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZkNBWUFBQUNHVnMrTUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFIWVlBQUIyR0FWMmlFNEVBQUFiTlNVUkJWRmhIcFZkN1ROVjFGRC8zZDU5d2VRU0lnUzlBUUFYY0ZMQVFaaTlmcGVWejF0WS9XVFpyNVd4cGM3VzVrbkxhNWpJM1o4NXNyUzJuTTJzanRXd1pTN0lVSDRINHhDbkVReDREQVpGNzRWN3VzODg1djkvbEluQnZWSi9CNFB2OW51LzVudS81bnZNNTU2ZnpBL1F2MEhiL0lyWDNWRktQbzQ1Y25tNGluVUlXWXdMRlJtWlFVdXdqRkcvTjFpUkhoMUVaME5SVlJ1ZHF0MUJkKzJuU0t5Uy9PaHlzMCtsazNlLzNrUTlxdkQ0WlV0YTRWVlNVdVkwZWlweWlUaEFmb2NvT1JWZ0R1dXczcUtSaUFkM3JiY0V0alRqWUlvZjZXYUhzQ216VlBXQ014K2NnaDh0THFXTUthTVdzVWpMcW8yUnRKSVEwb096bWVycFF1NGVzWmdzT05rR3hIN2Qwa2R2VFQxN3M0T01VN1ZJOFpoamdHYU0rQXE5aUVOdThQaWYxdWR6MDdNd3ZLV2Y4R2xWb0NFWTA0UEM1V2RUYVhZRmJSOHZOdkw1KzNLZ2ZiNXhOTXlhOVJhbUppeW5hTWxHVFZ0RmxyNmJhOXUrcHFuRVg0dU11UlJnalNZRWhyTjd1dEZGZTZscWFsN05ma3c1aW1BR0h5blBwYms4Vm1ZMHhzdG5wdGxGQ1ZDWXR6VHVCTjgzUXBNTGpUdGV2ZFB6U1VuSjdlOG1ranhaMzlmWGJLRGZsZFpxYnZVK1RVZ0duQlZGNmZRMmlQSGc0VzE2VVdVd3Z6YmsxNnNNWkUrUG4wcHZ6N0pTZXVBeWVzOGxjcENtYUt1by9wK3FXcjJVY3dJQUhXcnZQMFlFemhYQXRMQWJzc0hocDdpR2FtdnlpalA4cnlxclhVV1g5WG9vd3h5QXVmTkJycDQzUE9CRlhabGtmOE1EUmlxY3B5b3dBd3B1ejJ4K2ZXdnovRHRkZTlzbXN6eWd0Y1I2QzF3YmR6Qmw2T2xxNVdOWVk0b0dhdGhKTXJrVEV4MGpBUlNIQVZzKzVyWWtRTlhiK1FnZlBMc1E2Z1h5SW5zcmVRZm1wbTdSVkZZZkw4Nm4xZmlVT2tZdlNoa1VQeHZidWt6b3k2SzFpaE0xaG8zWHpXNkV2U2ZYQStkcGlXR2FXZCtkb1h6THptR3dLWUZMQ0FzUkFsUEJBaE1sQ0ZYVTd0QlVWUHI4SGdWY0pIV3ErRjAwcGxyK0RNVGRyUDR6dnhZMTFrTk1oeFQrU2VUR2crZDRWNUxRSml0eVVHSk5COFZGWnNqZ1lCWk0vSUkvWENUa2owcXlET3BGMkFWUTE3Q0lqVXAvRG5UMVVrTDVGNWdkaitzUzF3ZzFnRTNnaWdtNjBmQ1h6U25QWGJ5QVBiSVh2K0lEcEUxNlRoYUhJUzlza3lobG1NRTVGM2NmcUFLaHEyQzBFNVBIMWdZYVhhTFBEa1pHMEhESk9uS1dIcDUxSTB6NVNPdXg4ZTFXQXVaemRIUXJUa3A4VG1qWG9JK2xhMHdHWnN6dWJxYk8zaWZRNkEvVzd2VlNZc1YzbVIwSkt3a0tjNFdIaUJrbVI4STNDQ2dJODdvT0w0cXpUNVArUlVKQmVqRU9nQVBLOGhZUHphdE0rZUlUcDJJTzl5VFFtZXJvbVBSeHgxcXhBY3NpbGUvdWJTZUViY1dRR1lFQ2doY0xZMkh5S2pvZ2pIMjVoTXBqcFV2MU91Z2xpNGVoMmVSdzBPMzJiSmpreXVDZ056ZzB2emxZTVNpU3MwdW9vNE1HN2hNT2pDRWFYMXlGRTBuU3ZqQnp1VG5FcEs4Nlo4SW9xRkFJdWJ3OGtnOUFyRWFSRVdTWkkrakg0WGJwNmc5RTlFbkpUM29hUnpETitNVUpCUURIbjU2YThvVW1FQnVzT3hCcy9ONSt0SkViUGtBRkRqOFVHdk9zL0lXdmNTZ2xHQmh2UzcvRlRZZnBXR1lkRFk4ZlBBeFdTQTM1c1RDNHA0K0xtNEFhcUlvUGVRdGZ1Zks2SmgwWmh4bGJzVVhPU21YTmlmRDVaVEFreURvZmJiY2NseG5BOFdOQXF4Q2JSTnlraFh4UXBhRHc2N2ZYVVlic2lHMEtodHYyb2VJdmg4cmhRTVlPY0VBcVhHL2VJK3puZ09jNXl4cjhxODJJQU0xYy9GTEZPcGxxdTVlRlFYck1aekdjVkNqWWJMV0c1STRCVDFldVJybGJ4dE5PdE1pdERERWhMWElJeW5BQXZ1T0VXRTNYM05kQWZ0OTRWZ2FHNDJYSVF0MFpYNlBlQ0UvcVFGZTlySzZIeDdZVTUwS3ZIN2ZXNGZTK3E3S0tCSnhzZ2dCWDVwU0FHaDFqSXJWaDV6UTZ3M1JmYWFoQlhtL2FDYkNaVGpDVUZVVHlXWnFXOXA2Mk1qSlBYVnFPclBnTU80TnY3NEdrZitvd2Z0TlZCRFFuakZKcUhTdzE3cFh2aFdXNUtacWUvUTQ5Ti9VU1RDQVZXb1FYRklIQkhYWGUzRlByVURzdUdEbXRGL2hIS1RIcGVreGhpQU9QSStTSnE2UzZIRjRJOVlXemtCSlRvNDZpVU16V3A4UGlyL1JpZHVMeEtZc1Nrc1Y4dkxsT1F2aEdYMllsUjBPQmhCakMrdS9nRWN2WTBBcEs3WWs0MU54alBTUW5XRkhURjY2VXJqZ2V2QjhDdTVhK2wydllTUlB0dVZEbzczaGhkTVNIblVYN3RUanNWWkd4QWwvV3B0aU9JRVExZ25MMjltWDYvdFIxdG1sa1lqOFc0WCtDU2pXY1VER1kxTnBTL0M3aFNLcWlNTE0vbDJRbVNXWjczRGR6K2dpbzhCQ0VOWVBRNDZxbmt6d1hVYnF2Qmt4alVRc1dmWkZnYnVvM3JBZit3TjdqT085MCt5bng0UGkzTCswbllMMVNjaERVZ0FQNGdQVi83SWQxcSsxSFNobXVHa0lxV1JQZ3l4TUZxUDhIZmpUbmpYd1k1YlFmYkpjdDZPSXpLZ01Ib3RGL0hlMWVnc2F4SFNxRzZ3ZmRtUTV4OE55VEZGcUJjcDJpU293SFIzeWs1KzM2aEY3dlhBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiRklET18yXzAiLCJGSURPXzJfMV9QUkUiLCJGSURPXzJfMSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJsYXJnZUJsb2JLZXkiLCJjcmVkQmxvYiIsIm1pblBpbkxlbmd0aCJdLCJhYWd1aWQiOiI2ZWM1Y2ZmMmEwZjk0MTY5OTQ1YmYzM2I1NjNmN2I5OSIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwidXYiOmZhbHNlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibGFyZ2VCbG9icyI6dHJ1ZSwiZXAiOnRydWUsImJpb0Vucm9sbCI6ZmFsc2UsInVzZXJWZXJpZmljYXRpb25NZ210UHJldmlldyI6ZmFsc2UsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjpmYWxzZSwiYWx3YXlzVXYiOnRydWV9LCJtYXhNc2dTaXplIjoxNTM2LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjgsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4LCJ0cmFuc3BvcnRzIjpbInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi04fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotMzV9XSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5Ijo0MDk2LCJtaW5QSU5MZW5ndGgiOjYsImZpcm13YXJlVmVyc2lvbiI6MzI5NDc2LCJtYXhDcmVkQmxvYkxlbmd0aCI6MzIsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjoxLCJwcmVmZXJyZWRQbGF0Zm9ybVV2QXR0ZW1wdHMiOjMsInV2TW9kYWxpdHkiOjIsInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjoxMDB9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wMi0wMSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzYsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWXViaUtleSBCaW8gU2VyaWVzIC0gTXVsdGktcHJvdG9jb2wgRWRpdGlvbiAoRW50ZXJwcmlzZSBQcm9maWxlKSIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjUwMjAxMDA0IiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDItMDEiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTAyLTA2In0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiM2M2MDkyMzc0YzBkMDg2MmJhZGUxODc4Yjg2NDdmNzIwMDUxOWMyMyJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyIzYzYwOTIzNzRjMGQwODYyYmFkZTE4NzhiODY0N2Y3MjAwNTE5YzIzIl0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJBcmN1bHVzIEZJRE8yL1UyRiBLZXkgQ2FyZCBbUDcxXSJ9LCJkZXNjcmlwdGlvbiI6IkFyY3VsdXMgRklETzIvVTJGIEtleSBDYXJkIFtQNzFdIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEwMCwicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfSx7Im1ham9yIjoxLCJtaW5vciI6Mn1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjYsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NiwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUMrakNDQXFDZ0F3SUJBZ0lVVFhKeTI4bHBRVmxoSXA3RVRCaStVNGJjYUQ4d0NnWUlLb1pJemowRUF3SXdnWUF4Q3pBSkJnTlZCQVlUQWxWVE1STXdFUVlEVlFRSURBcE9aWGNnU21WeWMyVjVNUkV3RHdZRFZRUUhEQWhUYjIxbGNuTmxkREVVTUJJR0ExVUVDZ3dMUTI5dGNHOVRaV04xY21VeEVEQU9CZ05WQkFzTUIwRnlZM1ZzZFhNeElUQWZCZ05WQkFNTUdFTnZiWEJ2VTJWamRYSmxMVVpKUkU4dFEwRXRVbTl2ZERBZ0Z3MHlNekEwTVRneE5UUTFOVEJhR0E4eU1EVXpNRFF4TURFMU5EVTFNRm93Z1lBeEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlEQXBPWlhjZ1NtVnljMlY1TVJFd0R3WURWUVFIREFoVGIyMWxjbk5sZERFVU1CSUdBMVVFQ2d3TFEyOXRjRzlUWldOMWNtVXhFREFPQmdOVkJBc01CMEZ5WTNWc2RYTXhJVEFmQmdOVkJBTU1HRU52YlhCdlUyVmpkWEpsTFVaSlJFOHRRMEV0VW05dmREQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJDZ0c3cjZWQS9oK0J5blVueURaTUQwVlprWVc2UkducGgwdzI1Z1FEV01vcUFhaVVhRkc1TUNsa2hha0lCcExGKzZ4SkJoTzFncys3QzFrL2p1VnV2MmpnZk13Z2ZBd0hRWURWUjBPQkJZRUZKejFnRnRUVEJOZmZmREt2ZGpwVUV5cDcwenRNSUhBQmdOVkhTTUVnYmd3Z2JXQUZKejFnRnRUVEJOZmZmREt2ZGpwVUV5cDcwenRvWUdHcElHRE1JR0FNUXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0F3S1RtVjNJRXBsY25ObGVURVJNQThHQTFVRUJ3d0lVMjl0WlhKelpYUXhGREFTQmdOVkJBb01DME52YlhCdlUyVmpkWEpsTVJBd0RnWURWUVFMREFkQmNtTjFiSFZ6TVNFd0h3WURWUVFEREJoRGIyMXdiMU5sWTNWeVpTMUdTVVJQTFVOQkxWSnZiM1NDRkUxeWN0dkphVUZaWVNLZXhFd1l2bE9HM0dnL01Bd0dBMVVkRXdRRk1BTUJBZjh3Q2dZSUtvWkl6ajBFQXdJRFNBQXdSUUlnY2dYR01EUDJyZmg0RVRZOUVKTHd1WG8xUzlVaXF0RW1QaHE5L2RpUzBuQUNJUURveUxab3N4OHJSQUYxdnBSWGNzVlFERFNIb0VzL1BibUYzRXIvbUoweDZ3PT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBK2dBQUFQb0NBWUFBQUJObzlUa0FBQUFCR2RCVFVFQUFMR1BDL3hoQlFBQUFDQmpTRkpOQUFCNkpnQUFnSVFBQVBvQUFBQ0E2QUFBZFRBQUFPcGdBQUE2bUFBQUYzQ2N1bEU4QUFBQWhHVllTV1pOVFFBcUFBQUFDQUFGQVJJQUF3QUFBQUVBQVFBQUFSb0FCUUFBQUFFQUFBQktBUnNBQlFBQUFBRUFBQUJTQVNnQUF3QUFBQUVBQWdBQWgya0FCQUFBQUFFQUFBQmFBQUFBQUFBQUFFZ0FBQUFCQUFBQVNBQUFBQUVBQTZBQkFBTUFBQUFCQUFFQUFLQUNBQVFBQUFBQkFBQUQ2S0FEQUFRQUFBQUJBQUFENkFBQUFBRHJFZUtrQUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUN6R2xVV0hSWVRVdzZZMjl0TG1Ga2IySmxMbmh0Y0FBQUFBQUFQSGc2ZUcxd2JXVjBZU0I0Yld4dWN6cDRQU0poWkc5aVpUcHVjenB0WlhSaEx5SWdlRHA0YlhCMGF6MGlXRTFRSUVOdmNtVWdOaTR3TGpBaVBnb2dJQ0E4Y21SbU9sSkVSaUI0Yld4dWN6cHlaR1k5SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpFNU9Ua3ZNREl2TWpJdGNtUm1MWE41Ym5SaGVDMXVjeU1pUGdvZ0lDQWdJQ0E4Y21SbU9rUmxjMk55YVhCMGFXOXVJSEprWmpwaFltOTFkRDBpSWdvZ0lDQWdJQ0FnSUNBZ0lDQjRiV3h1Y3pwMGFXWm1QU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNScFptWXZNUzR3THlJS0lDQWdJQ0FnSUNBZ0lDQWdlRzFzYm5NNlpYaHBaajBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5bGVHbG1MekV1TUM4aVBnb2dJQ0FnSUNBZ0lDQThkR2xtWmpwWlVtVnpiMngxZEdsdmJqNDNNand2ZEdsbVpqcFpVbVZ6YjJ4MWRHbHZiajRLSUNBZ0lDQWdJQ0FnUEhScFptWTZVbVZ6YjJ4MWRHbHZibFZ1YVhRK01qd3ZkR2xtWmpwU1pYTnZiSFYwYVc5dVZXNXBkRDRLSUNBZ0lDQWdJQ0FnUEhScFptWTZXRkpsYzI5c2RYUnBiMjQrTnpJOEwzUnBabVk2V0ZKbGMyOXNkWFJwYjI0K0NpQWdJQ0FnSUNBZ0lEeDBhV1ptT2s5eWFXVnVkR0YwYVc5dVBqRThMM1JwWm1ZNlQzSnBaVzUwWVhScGIyNCtDaUFnSUNBZ0lDQWdJRHhsZUdsbU9sQnBlR1ZzV0VScGJXVnVjMmx2Ymo0ek1EQXdQQzlsZUdsbU9sQnBlR1ZzV0VScGJXVnVjMmx2Ymo0S0lDQWdJQ0FnSUNBZ1BHVjRhV1k2UTI5c2IzSlRjR0ZqWlQ0eFBDOWxlR2xtT2tOdmJHOXlVM0JoWTJVK0NpQWdJQ0FnSUNBZ0lEeGxlR2xtT2xCcGVHVnNXVVJwYldWdWMybHZiajR6TURBd1BDOWxlR2xtT2xCcGVHVnNXVVJwYldWdWMybHZiajRLSUNBZ0lDQWdQQzl5WkdZNlJHVnpZM0pwY0hScGIyNCtDaUFnSUR3dmNtUm1PbEpFUmo0S1BDOTRPbmh0Y0cxbGRHRStDbDlFSzM4QUFFQUFTVVJCVkhnQjdOMS9qR1ZaUWgvMmUrNnI3cG5wMzlWZFBUMWRWZDB6dXd3THc5aUUwUHhZMnlSdVNJUkRMTEJqNU1nRVFndzQvaUd3SEFLSkk1d2ZzbVhGaW1VbFZtSkhTcFJFVGtpa1NMRWk1YTlFaW1OR09KRWNkb2Rka05kcjBBSkRkanpzN0E0c0M3c3owMTMxN3NrNTU3N3FxZjVkVmUvWC9mRjVVRjJ2M3J2MzNITStwN2Fxdm5QT1BhZXFQQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQXdJb0V3b3F1NHpJRUNCQWdRSUJBdndYeTN3ejFyQWt4Zlc3NjNSeTFKMENBQUFFQ0JBZ1FJRUNBQUFFQy9SUHdIL1Q3MTJkcVRJQUFBUUk5RlBBTHQ0ZWRwc29FQ0JBZ1FHQ0ZBbm5VdkhuK3hvMnZtamJOWDZwQ2VDYjk4ZkRMNzd6NTVsOWVZUjFjaWdBQkFnUUlqRUpnWXhTdDFFZ0NCQWdRSUVEZ3BBSWxvTytINllmcnllU0hRZ2hWMDhSUHBjSUU5Sk9LT284QUFRSUVDRHhHUUVCL0RJeVhDUkFnUUlBQWdROEU2ampaaXJHcDhzM25JZFMvL2NFN25oRWdRSUFBQVFLTEVqaFk3R1ZSNVNtSEFBRUNCQWdRR0tCQVV6WFg4K2g1U3VlcGRkRi80QjlnSDJzU0FRSUVDS3hmUUVCZmZ4K29BUUVDQkFnUTZMeEFIY0xGTnB4M3Zxb3FTSUFBQVFJRWVpc2dvUGUyNjFTY0FBRUNCQWlzVGlETmJyOVl4VHpCM1lNQUFRSUVDQkJZbG9DQXZpeFo1UklnUUlBQWdXRUlsUDNPUTRqWGh0RWNyU0JBZ0FBQkF0MFZFTkM3MnpkcVJvQUFBUUlFdWlCUWhzM1Q0UGtMWGFpTU9oQWdRSUFBZ1NFTENPaEQ3bDF0STBDQUFBRUM4d3ZrZ0o1dVFRL255d3J1ODVlbkJBSUVDQkFnUU9BeEFnTDZZMkM4VElBQUFRSUVDRlI1eWZacWQzZjNtUmpqT2ZlZys0NGdRSUFBQVFMTEZSRFFsK3VyZEFJRUNCQWcwR2VCRXREdmJHeWtGZHlyUzMxdWlMb1RJRUNBQUlFK0NBam9mZWdsZFNSQWdBQUJBbXNVYU9LZHpTcVdnRzRaOXpYMmcwc1RJRUNBd1BBRkJQVGg5N0VXRWlCQWdBQ0Jrd3FVRWZTcTJUaVg5a0EvbmFhNGx4WGRUMXFZOHdnUUlFQ0FBSUVuQ3dqb1QvYnhMZ0VDQkFnUUdMTkFHOURyNW54NkVtSUlBdnFZdnh1MG5RQUJBZ1NXTGlDZ0w1M1lCUWdRSUVDQVFMOEZRbk52RDNSVDNQdmRsV3BQZ0FBQkFoMFhFTkE3M2tHcVI0QUFBUUlFMWkzUVZPRjZtdUtlbDNRWDBOZmRHYTVQZ0FBQkFvTVdFTkFIM2IwYVI0QUFBUUlFNWhkSW02QmZuTDhVSlJBZ1FJQUFBUUpQRXhEUW55YmtmUUlFQ0JBZ01IS0J0RFNjZ0Q3eTd3SE5KMENBQUlIVkNBam9xM0YyRlFJRUNCQWcwRGVCdkVCY1dSUXVoSHYzb1BldERlcExnQUFCQWdSNkpTQ2c5NnE3VkpZQUFRSUVDS3hVb0FUMEdLc1gwaFpySzcyd2l4RWdRSUFBZ1RFS0NPaGo3SFZ0SmtDQUFBRUNSeGVZaEJETzU4TlRSRyszWFR2NnVZNGtRSUFBQVFJRWppRWdvQjhEeTZFRUNCQWdRR0JFQWlXTTcrN3VubzR4bmgxUnV6V1ZBQUVDQkFpc1RVQkFYeHU5Q3hNZ1FJQUFnZTRMdkQrWlhFcGJyRjJhelhBM2d0NzlMbE5EQWdRSUVPaXhnSURlNDg1VGRRSUVDQkFnc0VTQkVzYWJlR2N6M1grZVZuR1A1cmN2RVZ2UkJBZ1FJRUFnQ3dqb3ZnOElFQ0JBZ0FDQnh3cUVadU5jZXZPWmNrQ01SdEFmSytVTkFnUUlFQ0F3djRDQVByK2hFZ2dRSUVDQXdHQUZZbDFmVEl2RTViOFhyQkUzMkY3V01BSUVDQkRvaW9DQTNwV2VVQThDQkFnUUlOQXRnVEphSHBybTJxeGE5bG5yVnYrb0RRRUNCQWdNVUVCQUgyQ25haElCQWdRSUVGaVVRQXp4V2xva0xvK2ZOK2ttZEZQY0Z3V3JIQUlFQ0JBZzhBZ0JBZjBSS0Y0aVFJQUFBUUlFV29HNnF0TUNjZmxoQUwxMThDOEJBZ1FJRUZpZWdJQytQRnNsRXlCQWdBQ0IzZ3VrRWZSTHZXK0VCaEFnUUlBQWdaNElDT2c5NlNqVkpFQ0FBQUVDS3habzh2VkNURlBjeThQczl0YkJ2d1FJRUNCQVlIa0NBdnJ5YkpWTWdBQUJBZ1Q2TEZEbXREY3h2cEQyUVU5SjNmM25mZTVNZFNkQWdBQ0JmZ2dJNlAzb0o3VWtRSUFBQVFLckZzZ0JmVktIU2Q0SDNZTUFBUUlFQ0JCWWdZQ0F2Z0prbHlCQWdBQUJBajBUS1BQWnQ3ZTNuMG1qNStkbnk4T1o0OTZ6VGxSZEFnUUlFT2lmZ0lEZXZ6NVRZd0lFQ0JBZ3NHeUJFc2J2VGlhWFloVXZsaW51ZVpLN0J3RUNCQWdRSUxCVUFRRjlxYndLSjBDQUFBRUMvUlZvUXNncnVNKzJXZXR2TzlTY0FBRUNCQWowUlVCQTcwdFBxU2NCQWdRSUVGaWRRQmt0RDAxenJncmg5T3l5UnRCWDUrOUtCQWdRSURCU0FRRjlwQjJ2MlFRSUVDQkE0QWtDYlJpdm13dnBTWDVldGx4N3d2SGVJa0NBQUFFQ0JCWWdJS0F2QUZFUkJBZ1FJRUJnaUFLaHFXZDdvRmV6ZGVLRzJFcHRJa0NBQUFFQzNSRVEwTHZURjJwQ2dBQUJBZ1E2SmRDRXRBZDZTQVBvYWFXNFRsVk1aUWdRSUVDQXdFQUZCUFNCZHF4bUVTQkFnQUNCZVFYcXFwNHRFQ2VmejJ2cGZBSUVDQkFnY0JRQkFmMG9TbzRoUUlBQUFRTGpFaWlKUE1hWVYzSDNJRUNBQUFFQ0JGWWtJS0N2Q05wbENCQWdRSUJBVHdUeW9uQWxvSWNRWi9lZzU1YzhDQkFnUUlBQWdXVUxDT2pMRmxZK0FRSUVDQkRvbjBCWnRiMko2UjcwYUhwNy83cFBqUWtRSUVDZ3J3SUNlbDk3VHIwSkVDQkFnTUJTQmY3NHBBNlRzK1VTb1d5MXR0U3JLWndBQVFJRUNCQ29LZ0hkZHdFQkFnUUlFQ0J3V0tETVo3OTI3V2VmamJFNWIvejhNSTNuQkFnUUlFQmd1UUlDK25KOWxVNkFBQUVDQkhvcE1EMTkrbUlhTjc4NG0rTHVKdlJlOXFKS0V5QkFnRURmQkFUMHZ2V1kraElnUUlBQWdlVUtsREErcmFyTGFhazRxN2d2MTFycEJBZ1FJRURnUGdFQi9UNE9YeEFnUUlBQUFRSlpvSjdFczFVSXAyY2FSdEI5V3hBZ1FJQUFnUlVJQ09nclFIWUpBZ1FJRUNEUU40RTREUmRUS3MvQjNHM29mZXM4OVNWQWdBQ0IzZ29JNkwzdE9oVW5RSUFBQVFKTEVTaWo1YUZwWHBpVlhyWmNXOHFWRkVxQUFBRUNCQWpjSnlDZzM4ZmhDd0lFQ0JBZ1FDQUxoQkN2cFgveStIa2VRUytoblF3QkFnUUlFQ0N3WEFFQmZibStTaWRBZ0FBQkFyMFVpR0Z5b2EyNEdlNjk3RUNWSmtDQUFJRmVDZ2pvdmV3MmxTWkFnQUFCQXNzV2lGWndYemF4OGdrUUlFQ0F3QU1DQXZvRElMNGtRSUFBQVFJakYyanZPWS94NEI3MGtYTm9QZ0VDQkFnUVdKMkFnTDQ2YTFjaVFJQUFBUUo5RUNoejJtTVZybFhSN2VkOTZEQjFKRUNBQUlIaENBam93K2xMTFNGQWdBQUJBb3NReUtsOFV0ZlZ1VkpZc0VEY0lsQ1ZRWUFBQVFJRWppSWdvQjlGeVRFRUNCQWdRR0FjQW1XMTltdlhyajJiMW00L04xc2V6Z3J1NCtoN3JTUkFnQUNCRGdnSTZCM29CRlVnUUlBQUFRSWRFU2hoZlAvVXFVdHBldnRtTzhYZENIcEgra1kxQ0JBZ1FHQUVBZ0w2Q0RwWkV3a1FJRUNBd0JFRlNrQnZRdGhNSzhYTnRsazc0cGtPSTBDQUFBRUNCT1lXRU5EbkpsUUFBUUlFQ0JBWWxrQWQ0OWtRd3VsWnEweHhIMWIzYWcwQkFnUUlkRmhBUU85dzU2Z2FBUUlFQ0JCWXNVQUo0N0d1TDh4U2Vidmwyb29yNFhJRUNCQWdRR0NzQWdMNldIdGV1d2tRSUVDQXdHTUV3blI2ZmZiV2JKMjR4eHpvWlFJRUNCQWdRR0NoQWdMNlFqa1ZSb0FBQVFJRStpOFFRcnhXaFRTR0hzdEc2UDF2a0JZUUlFQ0FBSUdlQ0Fqb1Bla28xU1JBZ0FBQkFxc1NpR0ZpZ2JoVllic09BUUlFQ0JBNEpDQ2dIOEx3bEFBQkFnUUlqRnhnTnFVOWJiSG1RWUFBQVFJRUNLeGNRRUJmT2JrTEVpQkFnQUNCVGdya2RlSGFnQjdURlBmeWJMWlVYQ2VycTFJRUNCQWdRR0I0QWdMNjhQcFVpd2dRSUVDQXdFa0Z5cXJ0c1FyWERyTDZTUXR5SGdFQ0JBZ1FJSEI4QVFIOStHYk9JRUNBQUFFQ1F4YVkxQ0djTFEwTWxTSDBJZmUwdGhFZ1FJQkE1d1FFOU01MWlRb1JJRUNBQUlHMUNKUXdmdlhxMWVmUzZ1M243SysybGo1d1VRSUVDQkFZdVlDQVB2SnZBTTBuUUlBQUFRS0hCYWFuVHFVRjR1TGxGTkx6eTBiUUQrTjRUb0FBQVFJRWxpd2dvQzhaV1BFRUNCQWdRS0FuQWlXTXg3cStsS0s1YmRaNjBtbXFTWUFBQVFMREVoRFFoOVdmV2tPQUFBRUNCT1lTQ0J2eGJCWENxVmtoUnREbjBuUXlBUUlFQ0JBNG5vQ0Fmand2UnhNZ1FJQUFnYUVLdEdGOFdsOU1UL0p6dDZFUHRhZTFpd0FCQWdRNkt5Q2dkN1pyVkl3QUFRSUVDS3hlSURUTjlkbFY4NVpyUnRCWDN3V3VTSUFBQVFJakZoRFFSOXo1bWs2QUFBRUNCQjRTQ09INU5NVTlqWiszcThROTlMNFhDQkFnUUlBQWdhVUpDT2hMbzFVd0FRSUVDQkRvb1VBSUZvanJZYmVwTWdFQ0JBZ01RMEJBSDBZL2FnVUJBZ1FJRUZpUVFKTzJXZk1nUUlBQUFRSUUxaUd3c1k2THVpWUJBZ1FJRUNEUU9ZRjh6M21hMmg0TzdrSHZYQVZWaUFBQkFnUUlERjNBQ1ByUWUxajdDQkFnUUlEQTBRVEtxdTBoeHF2dEF1N1doenNhbTZNSUVDQkFnTURpQkFUMHhWa3FpUUFCQWdRSTlGa2dCL1JKTlFublNpT0NGZHo3M0pucVRvQUFBUUw5RkJEUSs5bHZhazJBQUFFQ0JCWXBVSWJMcjE2OStselZWT2RuRzZBYlFsK2tzTElJRUNCQWdNQVJCQVQwSXlBNWhBQUJBZ1FJREZ5Z2hQSHBxVk9ic1lxWDBoWnJ1YmtDK3NBN1hmTUlFQ0JBb0hzQ0FucjMra1NOQ0JBZ1FJREFxZ1ZLR0k5MWZTbmxjdHVzclZyZjlRZ1FJRUNBd0V4QVFQZXRRSUFBQVFJRUNCU0I5RWZCbVRSdWZpcDlrWWZRamFEN3ZpQkFnQUFCQWlzV0VOQlhETzV5QkFnUUlFQ2dnd0x0Q0hvSWwyYXBmSFliZWdkcnFrb0VDQkFnUUdEQUFnTDZnRHRYMHdnUUlFQ0F3SEVFUXRNYzdJRXVvQjhIenJFRUNCQWdRR0JCQWdMNmdpQVZRNEFBQVFJRWVpOFF3dk5WU0dQb3NWMGxydmZ0MFFBQ0JBZ1FJTkF6QVFHOVp4Mm11Z1FJRUNCQVlHa0N3UUp4UzdOVk1BRUNCQWdRT0lLQWdINEVKSWNRSUVDQUFJR0JDOHltdERlYkEyK241aEVnUUlBQWdVNExiSFM2ZGlwSGdBQUJBZ1FJTEZzZ3J3dlhsSXZFa081QnQ0RDdzc0dWVDRBQUFRSUVIaWRnQlAxeE1sNG5RSUFBQVFMakVTZ2o2Q0hHcStOcHNwWVNJRUNBQUlIdUNRam8zZXNUTlNKQWdBQUJBdXNRMktnbTRXeTVjTEFIK2pvNndEVUpFQ0JBZ0lDQTdudUFBQUVDQkFpTVc2QnNmYjYxdGZWY211aCszdjVxNC81bTBIb0NCQWdRV0srQWdMNWVmMWNuUUlBQUFRS2RFTmcvZGVweXJPSm0ybUl0MTZlRTlrNVVUQ1VJRUNCQWdNQ0lCQVQwRVhXMnBoSWdRSUFBZ1VjSWxEQWVKcE9MYVEvMEM0OTQzMHNFQ0JBZ1FJREFpZ1FFOUJWQnV3d0JBZ1FJRU9peVFKakVmUC81cVZrZGphQjN1YlBValFBQkFnUUdLeUNnRDdack5Zd0FBUUlFQ0J4Sm9JVHh5VFJjbXFWeXQ2RWZpYzFCQkFnUUlFQmc4UUlDK3VKTmxVaUFBQUVDQkhvbk1BMU4yZ085UFBLZTZFYlFaeGcrRVNCQWdBQ0JWUW9JNkt2VWRpMENCQWdRSU5CUmdSRHJxK2tlOUNvdEVtY0V2YU45cEZvRUNCQWdNSHdCQVgzNGZheUZCQWdRSUVEZzZRSVdpSHU2a1NNSUVDQkFnTUNTQlFUMEpRTXJuZ0FCQWdRSWRGeGdObUxlWE81NFBWV1BBQUVDQkFnTVhtQmo4QzNVUUFJRUNCQWdRT0JKQW0xQWp6SGRnMjUyKzVPZ3ZFZUFBQUVDQkpZdFlBUjkyY0xLSjBDQUFBRUMzUllvcVR5RXNOVldNOStJN2tHQUFBRUNCQWlzUTBCQVg0ZTZheElnUUlBQWdlNEk1SUErU1F2RTVYM1FyZDllRVB4RGdBQUJBZ1RXSXlDZ3I4ZmRWUWtRSUVDQVFCY0V5bWo1MXRiV21UUzcvY0pzZ3JzUjlDNzBqRG9RSUVDQXdDZ0ZCUFJSZHJ0R0V5QkFnQUNCSWxEQytQVDA2YzIwdTlwbTJtSXR2eWlnKytZZ1FJQUFBUUpyRWhEUTF3VHZzZ1FJRUNCQW9BTUNiUml2NjB1cEx1YzdVQjlWSUVDQUFBRUNveFlRMEVmZC9ScFBnQUFCQWdUU2tQbEdQSlB1UWM4N3UrUWhkQ1BvdmlrSUVDQkFnTUNhQkFUME5jRzdMQUVDQkFnUTZJQkFDZU9UL2JBNVMrV3oyOUE3VUROVklFQ0FBQUVDSXhRUTBFZlk2WnBNZ0FBQkFnUU9DMHhEay9aQVQ0OW9JL1RETHA0VElFQ0FBSUZWQ3dqb3F4WjNQUUlFQ0JBZzBER0JFT3ZuMHhUM1ZLdDJsYmlPVlU5MUNCQWdRSURBYUFRRTlORjB0WVlTSUVDQUFJSEhDSVJnZ2JqSDBIaVpBQUVDQkFpc1VrQkFYNlcyYXhFZ1FJQUFnVzRKelBaVmF5NTNxMXBxUTRBQUFRSUV4aWtnb0krejM3V2FBQUVDQkFqa09lMU5aa2g3b0Y5dlo3ZlBsb3BqUTRBQUFRSUVDS3hGUUVCZkM3dUxFaUJBZ0FDQlRnaTBJK2doYkpYYXlPZWQ2QlNWSUVDQUFJSHhDZ2pvNCsxN0xTZEFnQUFCQWxWMXU5cElDOFNkblZHSTZMNG5DQkFnUUlEQUdnVUU5RFhpdXpRQkFnUUlFRmlqUUFuam03L3c0Yk5wYzdVTE5rQmZZMCs0TkFFQ0JBZ1FtQWtJNkw0VkNCQWdRSURBaUFXYUMxKzVuTzVCMzV6dHNHWUVmY1RmQzVwT2dBQUJBdXNYRU5EWDN3ZHFRSUFBQVFJRTFpRlF3dmd6K3hzWDBoVDNjK3VvZ0dzU0lFQ0FBQUVDOXdzSTZQZDcrSW9BQVFJRUNJeExZR01qMzM5K2F0Wm9JK2pqNm4ydEpVQ0FBSUdPQ1Fqb0hlc1ExU0ZBZ0FBQkFpc1NLR0c4MmQvZm5LVnl0Nkd2Q041bENCQWdRSURBNHdRRTlNZkplSjBBQVFJRUNJeEFvQW5oK3F5WmVVOTBJK2dqNkhOTkpFQ0FBSUh1Q2dqbzNlMGJOU05BZ0FBQkFrc1hDSFc4bXU1QnI5SWljVWJRbDY3dEFnUUlFQ0JBNE1rQ0F2cVRmYnhMZ0FBQkFnU0dMUkRyODhOdW9OWVJJRUNBQUlIK0NBam8vZWtyTlNWQWdBQUJBb3NVS0NQbUljWXJpeXhVV1FRSUVDQkFnTURKQlFUMGs5czVrd0FCQWdRSTlGbWdCUFFZNHZYWkh1aDlib3U2RXlCQWdBQ0JRUWdJNklQb1JvMGdRSUFBQVFMSEZtanZPWS9WVm50bXZoSGRnd0FCQWdRSUVGaW5nSUMrVG4zWEprQ0FBQUVDNnhPSTFlMXFJNFJ3cGxSQlBGOWZUN2d5QVFJRUNCQ1lDUWpvdmhVSUVDQkFnTUQ0QkVvY3YveUxMK2R3Zm1HMmZMdUlQcjd2QXkwbVFJQUFnWTRKQ09nZDZ4RFZJVUNBQUFFQ0t4QW9ZYnk1OE9YTGFYZTF6ZGs5NkFMNkN1QmRnZ0FCQWdRSVBFbEFRSCtTanZjSUVDQkFnTUF3QlVvWUQvc2JGMUx6emcyemlWcEZnQUFCQWdUNkp5Q2c5Ni9QMUpnQUFRSUVDQ3hFNE5Sa2NxNEtZU01WbG1lNUcwRmZpS3BDQ0JBZ1FJREF5UVVFOUpQYk9aTUFBUUlFQ1BSVm9KM2l2cisvT1V2bHM5dlErOW9jOVNaQWdBQUJBc01RRU5DSDBZOWFRWUFBQVFJRWppM1FoSEM5bkJUTENQcXh6M2NDQVFJRUNCQWdzRmdCQVgyeG5rb2pRSUFBQVFLOUVRaDF2SnFtdUtmNlJpUG92ZWsxRlNWQWdBQ0JJUXNJNkVQdVhXMGpRSUFBQVFKUEVtaENYaVRPZ3dBQkFnUUlFT2lJZ0lEZWtZNVFEUUlFQ0JBZ3NFS0JNbUtleHM0dnIvQ2FMa1dBQUFFQ0JBZzhSVUJBZndxUXR3a1FJRUNBd01BRThwejJKcmNwaG5pOW5kMCtXeXB1WUEzVkhBSUVDQkFnMERjQkFiMXZQYWErQkFnUUlFQmdmb0gybnZOWVhTbEZCVnVzelUrcUJBSUVDQkFnTUwrQWdENi9vUklJRUNCQWdFRC9CRzdkT2hWQ09OZS9pcXN4QVFJRUNCQVlyb0NBUHR5KzFUSUNCQWdRSVBBb2dUS2YvZUlYdnBERCtYbkx0eitLeUdzRUNCQWdRR0E5QWh2cnVheXJFaUJBZ0FBQkFtc1NPTGpoZkRQR3VEbXJ3OEZyYTZxU3l4SWdRSUFBQVFKWndBaTY3d01DQkFnUUlEQkNnZFAxTkcreFpvcjdDUHRla3drUUlFQ2d1d0lDZW5mN1JzMElFQ0JBZ01EU0JFSXpPVnVGY0RDVHpnajYwcVFWVElBQUFRSUVqaTRnb0IvZHlwRUVDQkFnUUdBSUFpV01OOVgrNVZrcWR4djZFSHBWR3dnUUlFQmdFQUlDK2lDNlVTTUlFQ0JBZ01BeEJacjYrdXlNdkNlNkVmUmo4am1jQUFFQ0JBZ3NRMEJBWDRhcU1na1FJRUNBUU1jRllvaGJhWXA3VmFXVjRqcGVWZFVqUUlBQUFRS2pFUkRRUjlQVkdrcUFBQUVDQkE0SmhIRCswRmVlRWlCQWdBQUJBaDBRRU5BNzBBbXFRSUFBQVFJRVZpaFFSc3hEVTIydDhKb3VSWUFBQVFJRUNCeEJRRUEvQXBKRENCQWdRSURBZ0FSS1FHK3FlRDFOYng5UXN6U0ZBQUVDQkFqMFgwQkE3MzhmYWdFQkFnUUlFRGlPUUY0VUxxMEtGNjYwSitVYjBUMElFQ0JBZ0FDQkxnZ0k2RjNvQlhVZ1FJQUFBUUtyRVRnSTR4c3BscDhwbHp4NFpUWFhkeFVDQkFnUUlFRGdDUUlDK2hOd3ZFV0FBQUVDQklZb2NPbWxsODdGS2w2WVRYQVgwWWZZeWRwRWdBQUJBcjBVRU5CNzJXMHFUWUFBQVFJRVRpUlF3bmlNNzIxV01hU1BkcjI0RTVYa0pBSUVDQkFnUUdEaEFnTDZ3a2tWU0lBQUFRSUVPaXRRQXZycHNIRXhiWUIrcnJPMVZERUNCQWdRSURCU0FRRjlwQjJ2MlFRSUVDQXdYb0VRTjg1VUlVeVNRQjVDTjhWOXZOOEtXazZBQUFFQ0hSTVEwRHZXSWFwRGdBQUJBZ1NXS0ZEQ2VCUDNyc3hTdVgzV2xvaXRhQUlFQ0JBZ2NGd0JBZjI0WW80blFJQUFBUUo5RjJqcTY2VUpzU3BicnZXOU9lcFBnQUFCQWdTR0lpQ2dENlVudFlNQUFRSUVDQnhSSUlhNGxhYTRwNk1Ob0IrUnpHRUVDQkFnUUdBbEFnTDZTcGhkaEFBQkFnUUlkRWVnRHVGOGQycWpKZ1FJRUNCQWdNQ0JnSUIrSU9FekFRSUVDQkFZdmtBWk1vOU50VFg4cG1vaEFRSUVDQkRvbjRDQTNyOCtVMk1DQkFnUUlIQVNnVHludmR4ejNsVHhlcnNIK215cHVKT1U1aHdDQkFnUUlFQmc0UUlDK3NKSkZVaUFBQUVDQkRvclVMWlZDMVc0VW1xWW5uUzJwaXBHZ0FBQkFnUkdLQ0NnajdEVE5aa0FBUUlFUml4dzY5WkdXaC91eklnRk5KMEFBUUlFQ0hSV1FFRHZiTmVvR0FFQ0JBZ1FXS2hBR1MyLzhQYmI1Mk9NRjYzZnZsQmJoUkVnUUlBQWdZVUlDT2dMWVZRSUFRSUVDQkRvdkVBSjZNK0dzSm0yVjl0czcwRTN4YjN6dmFhQ0JBZ1FJREFxQVFGOVZOMnRzUVFJRUNBd2RvRlkxeGVxS3BqaVB2WnZCTzBuUUlBQWdVNEtDT2lkN0JhVklrQ0FBQUVDeXhFSU1aNnBRdGlZbFc2UnVPVXdLNVVBQVFJRUNKeElRRUEvRVp1VENCQWdRSUJBN3dSS0dKL0d1RFZMNVdYTHRkNjFRb1VKRUNCQWdNQ0FCUVQwQVhldXBoRWdRSUFBZ1FjRlF0TmNuNzFXdGx4NzhIMWZFeUJBZ0FBQkF1c1RFTkRYWisvS0JBZ1FJRUJnNVFMcEh2UXJhWXA3V2ljdVdzaDk1Zm91U0lBQUFRSUVuaXdnb0QvWng3c0VDQkFnUUdCUUFuV0k1d2ZWSUkwaFFJQUFBUUlERWhEUUI5U1pta0tBQUFFQ0JKNGdVRWJNbTZhNitvUmp2RVdBQUFFQ0JBaXNVZUJnRmRjMVZzR2xDUkFnUUlBQWdSVUlsSUFlcW5pOW1qMWJ3VFZkZ2dBQkFnUUlFRGlHZ0JIMFkyQTVsQUFCQWdRSTlGaWdyTm9lcTNDNXRDRlV0bGpyY1dlcU9nRUNCQWdNVTBCQUgyYS9haFVCQWdRSUVEZ3NNQXZqdHpkU0xEOXorQTNQQ1JBZ1FJQUFnZTRJQ09qZDZRczFJVUNBQUFFQ1N4VzRlUE5YejZmVjJ5L08xbTgzZ3I1VWJZVVRJRUNBQUlIakN3am94emR6QmdFQ0JBZ1E2SnZBUVJqZlRQZWZiNlk5MW5MOUQxN3JXMXZVbHdBQkFnUUlERlpBUUI5czEyb1lBUUlFQ0JDNEoxREMrT202dm1DSyt6MFRUd2dRSUVDQVFPY0VCUFRPZFlrS0VTQkFnQUNCNVFpRXBqbGJoVEJKcGVjaGRDUG95MkZXS2dFQ0JBZ1FPTEdBZ0g1aU9pY1NJRUNBQUlIZUNKUXdQbzM3VzdOVVh1YTQ5NmIyS2txQUFBRUNCRVlpSUtDUHBLTTFrd0FCQWdRSWhDWmNMd3F4S2x1dUVTRkFnQUFCQWdTNkpTQ2dkNnMvMUlZQUFRSUVDQ3hOSU5iMWxUVEZQWlZ2QUgxcHlBb21RSUFBQVFKekNBam9jK0E1bFFBQkFnUUk5RW1nRHZGOG4rcXJyZ1FJRUNCQVlHd0NBdnJZZWx4N0NSQWdRR0NNQW1YSXZHbXFxd2JQeDlqOTJreUFBQUVDZlJIWTZFdEYxWk1BQVFJRUNCQTRrVUNlMDE3dU9ROVZiTzlCdDREN2lTQ2RSSUFBQVFJRWxpMWdCSDNad3NvblFJQUFBUUxyRnlqYnFzVVFMcGVxQkFsOS9WMmlCZ1FJRUNCQTRHRUJBZjFoRTY4UUlFQ0FBSUVoQ1pTZDFWNTk5ZFZUcVZGbmh0UXdiU0ZBZ0FBQkFrTVRFTkNIMXFQYVE0QUFBUUlFSGlIdy8zM3hpeGVxR0M5YXYvMFJPRjRpUUlBQUFRSWRFUkRRTzlJUnFrR0FBQUVDQkpZa1VFYlFuNjNyUzJtQnVNMFUwdk5seW10THVwNWlDUkFnUUlBQWdSTUtDT2duaEhNYUFRSUVDQkRvazBDY1RDNmtXRzZLZTU4NlRWMEpFQ0JBWUhRQ0F2cm91bHlEQ1JBZ1FHQ01BcUZwemxZaFRHWnRONEkreG04Q2JTWkFnQUNCemdzSTZKM3ZJaFVrUUlBQUFRSnpDWlF3M3NTNE5VdmxaY3UxdVVwME1nRUNCQWdRSUxBVUFRRjlLYXdLSlVDQUFBRUNIUk5vbXRrZTZPbE9kUGVnZDZ4elZJY0FBUUlFQ0xRQ0FycnZCQUlFQ0JBZ01BS0Jlaks1bkthNFYybVJPQXU1ajZDL05aRUFBUUlFK2lrZ29QZXozOVNhQUFFQ0JBZ2NTeUNHZVA1WUp6aVlBQUVDQkFnUVdMbUFnTDV5Y2hja1FJQUFBUUlyRlNnajVtbmcvUG1WWHRYRkNCQWdRSUFBZ1dNTGJCejdEQ2NRSUVDQUFBRUNmUkpvcDdUSG1PNUJkL3Q1bnpwT1hRa1FJRUJnZkFKRzBNZlg1MXBNZ0FBQkF1TVNhRmR0RC9WbWFYWkl1NkY3RUNCQWdBQUJBcDBVRU5BNzJTMHFSWUFBQVFJRUZpTFFodkZidDA2bDBzNHNwRVNGRUNCQWdBQUJBa3NUTU1WOWFiUUtKa0NBQUFFQzNSQTQvN25QWFVqajVoZGpHOWVOb0hlalc5U0NBQUVDQkFnOEpHQUUvU0VTTHhBZ1FJQUFnY0VJbEREK2JBaWI2ZmJ6L0pFZkF2cGd1bGREQ0JBZ1FHQm9BZ0w2MEhwVWV3Z1FJRUNBd0FjQ2JSaWZOT2RUTERmRi9RTVh6d2dRSUVDQVFDY0ZCUFJPZG90S0VTQkFnQUNCQlFyRWpiTlZDUGwzdm1YY0Y4aXFLQUlFQ0JBZ3NHZ0JBWDNSb3NvalFJQUFBUUxkRVNnajZFM1RYSjNOYTI4bnVYZW5mbXBDZ0FBQkFnUUlIQklRMEE5aGVFcUFBQUVDQkFZcEVKcTBCM3A2eEtyZGNtMlFqZFFvQWdRSUVDRFFmd0VCdmY5OXFBVUVDQkFnUU9DSkFyR2FYRWxUM05NeEJ0Q2ZDT1ZOQWdRSUVDQ3daZ0VCZmMwZDRQSUVDQkFnUUdEWkFuV0k1NVo5RGVVVElFQ0FBQUVDOHdzSTZQTWJLb0VBQVFJRUNIUlZvRXhwanpFKzMxWndkaWQ2VjJ1clhnUUlFQ0JBWU9RQ0F2ckl2d0UwbndBQkFnUUdLL0RCblBhbTJxbWk2ZTJEN1drTkkwQ0FBSUhCQ0Fqb2crbEtEU0ZBZ0FBQkFnOEp0TnVxMWVGaWVTZWszZEE5Q0JBZ1FJQUFnYzRLQ09pZDdSb1ZJMENBQUFFQ2N3bTBZZnpsbDArblVzN09WWktUQ1JBZ1FJQUFnWlVJQ09ncllYWVJBZ1FJRUNDd0hvRnpYLzd5aFRTOS9lSnNncnNSOVBWMGc2c1NJRUNBQUlFakNRam9SMkp5RUFFQ0JBZ1E2SjFBQ2VQUFRpYWJxZWFYM0lQZXUvNVRZUUlFQ0JBWW9ZQ0FQc0pPMTJRQ0JBZ1FHSkhBWkhJK3RmYTVFYlZZVXdrUUlFQ0FRRzhGQlBUZWRwMktFeUJBZ0FDQnB3dUVHTTlXSVV4bVI1cmkvblF5UnhBZ1FJQUFnYlVKQ09ocm8zZGhBZ1FJRUNDd1ZJRVN4cWN4WHAybDhySW4rbEt2cUhBQ0JBZ1FJRUJnTGdFQmZTNCtKeE1nUUlBQWdXNExoS3E1WG1vWXF4elFqYUIzdTd2VWpnQUJBZ1JHTGlDZ2ovd2JRUE1KRUNCQVlOZ0NhWGI3WnByaW5obzVXOGQ5Mk0zVk9nSUVDQkFnMEdzQkFiM1gzYWZ5QkFnUUlFRGdhUUx4d3RPTzhENEJBZ1FJRUNEUURRRUJ2UnY5b0JZRUNCQWdRR0RSQW1YSVBGYngrVVVYckR3Q0JBZ1FJRUJnT1FJQytuSmNsVXFBQUFFQ0JOWXQwQzRLMTFUWDJ6M1EzWDYrN2c1eGZRSUVDQkFnOERRQkFmMXBRdDRuUUlBQUFRTDlGR2h2T3EvRHhWTDlZSUc0Zm5haldoTWdRSURBbUFRRTlESDF0cllTSUVDQXdGZ0UydUh5VjE4OW5ScDhkaXlOMWs0Q0JBZ1FJTkIzQVFHOTd6Mm8vZ1FJRUNCQTRERUM1Ny80eFF0cGV2dWwySTZsbStQK0dDY3ZFeUJBZ0FDQnJnZ0k2RjNwQ2ZVZ1FJQUFBUUtMRXloaC9ObTYza3hGWHBwdHNTYWdMODVYU1FRSUVDQkFZQ2tDQXZwU1dCVktnQUFCQWdUV0pwQ0RlUG45SGtPNS8veTVXVTBFOUxWMWlRc1RJRUNBQUlHakNRam9SM055RkFFQ0JBZ1E2S0xBUVJpZlZMZHZiNlFLVG1hVm5PYlBNY1pKRlVMK1hkOU9jcCs5NlJNQkFnUUlFQ0RRVFlIOHk5eURBQUVDQkFnUTZMN0FRUmcvR0FuUG9Uc0g4VFo4di9iYXZSWnNiMitmK2QwUW5nc2gvb0VxTGQ2ZURzakhISngzN3poUENCQWdRSUFBZ1c0SkNPamQ2ZysxSVVDQUFBRUNCd0p0SUwrZGd2VnJKV0RuTUY1R3hnOE9TSjlQWFhycGhaMk52Y21IWWwxOWJUcmhxMU1PZitWT1ZlMmNqdkZHV2h6dXdpeS9tekYzQ00xVEFnUUlFQ0RRVlFFQnZhczlvMTRFQ0JBZ01EYUJIS0p6S004ZkI2UGoweFRPRHg2VGF6ZHZ2aml0OWwrTk1YeDlGY00vbXdONTNJOGZqblU0RjBJK0xUMVNLajhvb0gzQnZ3UUlFQ0JBZ0VCZkJBVDB2dlNVZWhJZ1FJREFFQVZ5S0QrNFIveSswZkZyMTY2ZGJaNmRmQ1NGOFc5Sm1mdGJVMlQvaHYzWWZGV282Z3R0R0c5bnRwY29uMjQyajAzVG50OEc5WnpSRDM4TTBVNmJDQkFnUUlEQTRBUUU5TUYxcVFZUklFQ0FRSWNGY21nK0dDbHYwdk9EaitybGwxOSs1a3Z2dmZkS1U5ZS9QMVROUHorTjRadmlOTDRVNm5yU1p1NllGMzNMZWJ5cG1pYWZseUo0ZWFjdEx3Uy8wd3VLZndnUUlFQ0FRSDhGL0RMdmI5K3BPUUVDQkFqMFJ5Q3ZycDdEK1g3NnVEZFN2blhqeG5ZSzNSOU5pN2w5NXhmdnZQOEgwaEZmbXlKMyt0MWNweUNlb25qKy8razBuM01ReHR0UmNXRzhrUGlIQUFFQ0JBZ01UVUJBSDFxUGFnOEJBZ1FJZEVIZzhFaDVEdVQzUXZtVkYxOThwWnBPLzRWMHdIZWxlZWtwbklmTFZkb0pMYlNqNHltUU55bVFwMlRlYm84VzBtZS9xN3ZRbytwQWdBQUJBZ1JXSU9DWC9ncVFYWUlBQVFJRVJpT1FnM2tlTGI4dmxGKytlZlBWdW1uKzVUUkMvdDF4dXYvTmFkcjZzM2t4dHpKQ0h1TTBUVmxQSzd1VjZlb3BrT2NSOUZ5TUJ3RUNCQWdRSURBMkFRRjliRDJ1dlFRSUVDQ3dhSUhEbytWNU9ucVprbjUxZC9mbEdPTDNwSy8vV0JvcC8rYXFEcWRMS0U4dnROUFcwMm1oaFBsSkN1ZUxycFB5Q0JBZ1FJQUFnUjRLQ09nOTdEUlZKa0NBQUlGT0NPUlVuVWZMY3lBdlU5Z3Yzcnk1dWRFMGZ6aFU4VTgwVmJ5ZFpxbWZiVWZLMHgzbFRacTZmbStVM0xUMVR2U2dTaEFnUUlBQWdZNEpDT2dkNnhEVklVQ0FBSUhPQ3h4ZThLMk1sbC9lMmZsb3VvMzhCOU5VOWU5SmcrRTdaWXA2dnFlOExQQTJHeWwzTDNubk8xWUZDUkFnUUlEQXVnVUU5SFgzZ09zVElFQ0FRRjhFOHUvTXZMMVpHUzIvc0x0NytYUlZmVzlhM2UwSFV4Yi90cnltVzVyS25rYkt5L3ZwbnZLMEZMdFEzcGUrVlU4Q0JBZ1FJTkFKQVFHOUU5MmdFZ1FJRUNEUVVZR0RhZXc1bExlajVYbkJ0emo5b1JUS3Z5L2RWNzZkRjNyTHE3MlYwZktjMHR2N3lqdmFITlVpUUlBQUFRSUV1aXdnb0hlNWQ5U05BQUVDQk5ZbEVLcmI2Zjd5MTBvb0w4SDh5czdPZDZRUjhUOFhtdWE3cTdwKzVsNG9UeThhTFY5WE43a3VBUUlFQ0JBWWxvQ0FQcXorMUJvQ0JBZ1FtRStnVHFmbmovMVpPQStYZDNmL1dIcmh6OGRRL2NHOHhsdGE3QzFOZEk5NzZaaTgrcnJmby9ONU81c0FBUUlFQ0JBNEpPQVBpME1ZbmhJZ1FJREFhQVUrQ09ZcGZsKzdkdTFzYytyVW4yaEM5ZWZTSFBkYlJTWGRZSjdDZVpOQ2VUNzIxR2lsTkp3QUFRSUVDQkJZbW9DQXZqUmFCUk1nUUlCQUR3VHVDK2JiMjl0YmQrcjZSOUlONS85bXVyLzhxMEplaWIycy9KWVdod3ZWeGl5Yzk2Qlpxa2lBQUFFQ0JBajBVVUJBNzJPdnFUTUJBZ1FJekN0d1h6RGZldkhGNjdIWi85RTdWZmpoTkkzOWVncmxhYTMyNmNHKzVYbmhONzh2NXhWM1BnRUNCQWdRSVBCVUFYOXdQSlhJQVFRSUVDQXdJSUc2dXAzdU1XOFhmMnRtd2Z6SDRuVC96NFM2dnBJbXNhZDd6RXN3dDBYYWdEcGRVd2dRSUVDQVFGOEVCUFMrOUpSNkVpQkFnTUI4QXJmVEtIZ081cTlWVGRuRFBNWi9Ld1h6SDAzQi9ISzdmM2xqNGJmNWhKMU5nQUFCQWdRSXpDa2dvTThKNkhRQ0JBZ1E2THhBL2wwM3plSDhwWmRlZXZiTDA3MGZUUlBZZnlKdGxYYTlTbXUrcFlYZjJtQnU0YmZPZDZRS0VpQkFnQUNCb1FzSTZFUHZZZTBqUUlEQWVBWHlmZVpwRWZheWwzbDFaWGYzQjM1M2YrL2ZUeVBtWDFPQ2VaeHRsU2FZai9jN1JNc0pFQ0JBZ0VESEJQSWZMeDRFQ0JBZ1FHQklBcUc2ZFN0dmc1WTJMSyttVzd1N2YzRHJ4dTdQcHNYZmZqcDlmRTNNaTcrMTcrVmovQjVNQ0I0RUNCQWdRSUJBTndTTW9IZWpIOVNDQUFFQ0JCWWprSCt2N1ZldnY3NTNlWHY3UnBpRXY1S21zLy9KUEl5ZXByS25WZG56L3dXLyt4WmpyUlFDQkFnUUlFQmd3UUwrU0Zrd3FPSUlFQ0JBWUMwQ2VTUThmK1RSOFdwclorZkhZeDMrb3pSaWZqRUY4N3hyMmpSRmM3L3pNbzRIQVFJRUNCQWcwRmtCZjZ4MHRtdFVqQUFCQWdTT0tKQi9sNVZwNjVkM2RuNWZDTlhmVEF2QWZjdWgrOHczaFBNalNqcU1BQUVDQkFnUVdLdUFnTDVXZmhjblFJQUFnVGtFN28yYWIyOXZuN2xUaC84NGxmVVgwcWg1VmU0ekR5Ry9uKzh6OXlCQWdBQUJBZ1FJOUVKQVFPOUZONmtrQVFJRUNEd2djRy9VL01yTjdYL3hUaFArZGxxZC9TTmxPbnNUMDNSMjk1ay80T1ZMQWdRSUVDQkFvQWNDZVhUQmd3QUJBZ1FJOUVYZ1lJWDIvZDNkM2VmUzFtbi9lUlhyL3pPTm11ZHdudmN6enh1citZL1BmZWxOOVNSQWdBQUJBZ1R1RS9CSHpIMGN2aUJBZ0FDQkRndE1VdDJtZVlYMnF6ZTN2KzI5R1Avck5JdjlsUlRNMHlwd2FVdTFZRHA3aC90TzFRZ1FJRUNBQUlFakNCaEJQd0tTUXdnUUlFQmd6UUx0dnViVFhJdkxOM2IrZzZhcC8wSGFMKzJWbE0zenFIbmVQTTEvY0Y1ekY3azhBUUlFQ0JBZ01MK0FQMmptTjFRQ0FRSUVDQ3hQSUc5aFBybTNyM2tkL2s0YU5mK09HSnUwcjNtMW45YURzd2pjOHV5VlRJQUFBUUlFQ0t4WXdBajZpc0ZkamdBQkFnU09MSkNudE9mSC90YU43ZThKZGZpRmRLLzVkNVFWMnFzcUdqVnZjZnhMZ0FBQkFnUUlERWRBUUI5T1gyb0pBUUlFaGlTUVozamxLZTN4eW8yZHYxcFY5ZitXbm0vR0dQZG1LN1Rua1hVUEFnUUlFQ0JBZ01DZ0JFeHhIMVIzYWd3QkFnUUdJUERxcTZlclQzM3E3c1diTnpkUE5jMy9sQUw1ZCtYdDAxTExtdlJoU3ZzQXVsZ1RDQkFnUUlBQWdVY0xDT2lQZHZFcUFRSUVDS3hlb0wzZlBJWHpTenM3MzdBUm0vKzFxc09IOGtKdzZZMzgrK3BneXZ2cWErYUtCQWdRSUVDQUFJRVZDSmppdmdKa2x5QkFnQUNCcHdyazMwZjVZLy95N3U3M2JvVHdEOVB6RCtXOXpWTTR6NlBtcHJRbkJBOENCQWdRSUVCZzJBSUMrckQ3VitzSUVDRFFCNEU4TXA2bnIwK3Y3T3o4VkIycXZ4dXIrRXdLNS92cE5WUGErOUNENmtpQUFBRUNCQWdzUk1BVTk0VXdLb1FBQVFJRVRpaVFmdy9sSUY1dDdlNytWMmxLKzUrZTNXK2VWbWtQZmtlZEVOVnBCQWdRSUVDQVFEOEYvUEhUejM1VGF3SUVDUFJmNEhhNnIveTFGTTVmZXVuWnJmMzlmTDk1WGd4dUx6VXMvMjR5dzZ2L1Bhd0ZCQWdRSUVDQXdERUYvQUYwVERDSEV5QkFnTUFDQkc3ZE9wWEQrYzdPenBVcisvdi85NkZ3N243ekJmQXFnZ0FCQWdRSUVPaW5nSURlejM1VGF3SUVDUFJYSUlmejExL2YyOXpldm5rblZQOVBDTld0dEZMNzNkUWc5NXYzdDFmVm5BQUJBZ1FJRUZpQWdDbnVDMEJVQkFFQ0JBZ2NVU0R2Y2Y3NjYzZTN0cmUvSms3cW4wbG5YWTh4NXBYYVR4K3hCSWNSSUVDQUFBRUNCQVlyWUFSOXNGMnJZUVFJRU9pWVFCNDVUM3VjYjEyL2ZpdE5hZjhIS1pTWGNKNXFhZVM4WTEybE9nUUlFQ0JBZ01CNkJJeWdyOGZkVlFrUUlEQXVnZG0wOWl1N3U5K2F0bEQ3bWJSQyszTlYza1l0Qk9GOFhOOEpXa3VBQUFFQ0JBZzhRY0FJK2hOd3ZFV0FBQUVDQ3hBNEZNNnJHUDkrVmFWd25xYTEyMFp0QWJhS0lFQ0FBQUVDQkFZbElLQVBxanMxaGdBQkFoMFRtSVh6U3pzNy8weFZwWEFld3BuME9lOTdidVM4WTEybE9nUUlFQ0JBZ01ENkJVeHhYMzhmcUFFQkFnU0dLVEFMNTJWQnVEcjhINm1SWjhySXVYQSt6UDdXS2dJRUNCQWdRR0J1QVNQb2N4TXFnQUFCQWdRZUliQ1J0MUpMOTV6dnhEcjh2YlFnM0F2bG5uUGgvQkZVWGlKQWdBQUJBZ1FJdEFJQ3V1OEVBZ1FJRUZpMFFKNmR0WC94NXMzTk5KMzk3NFVRZGh2M25DL2FXSGtFQ0JBZ1FJREFBQVVFOUFGMnFpWVJJRUJnalFLVGRPMXlqL2xHTS8zZlV6ai8ydGsrNSs0NVgyT251RFFCQWdRSUVDRFFEd0VCdlIvOXBKWUVDQkRvZzBEK25UTE5GYjF5WS9kL0NYWDlyV25rL0c3NlVqalBLQjRFQ0JBZ1FJQUFnYWNJQ09oUEFmSTJBUUlFQ0J4WklOMXFuc0w1N3U1L2tVYk8vMGhzbXIzMHd1a2puKzFBQWdRSUVDQkFnTURJQlFUMGtYOERhRDRCQWdRV0luQzd5dmVkVDdkdTdQeEVxTU9QeGVuVVZtb0xnVlVJQVFJRUNCQWdNQ1lCQVgxTXZhMnRCQWdRV0liQXE2K2VybDZyOXJkdWJuOTNWWVcva1ViT1k5cnYzTytYWlZncmt3QUJBZ1FJRUJpMGdIM1FCOTI5R2tlQUFJR2xDMnhVbi9yVTNTdlhyNzhTbS9BL3AxWGI4d1diOUpFWGkvTWdRSUFBQVFJRUNCQTRob0FSam1OZ09aUUFBUUlFN2hNb0s3WmZ1M2J0YkxVeCtidnB2dk16Vll4NWFydHdmaCtUTHdnUUlFQ0FBQUVDUnhNUTBJL201Q2dDQkFnUWVGaWdESmZ2bjlyNDcxTTQvN3F5WW5zSVptWTk3T1FWQWdRSUVDQkFnTUNSQkFUMEl6RTVpQUFCQWdUdUU3aDFLMitkMXFRVjIvKzl0SjNhOTFxeC9UNGRYeEFnUUlBQUFRSUVUaVFnb0orSXpVa0VDQkFZc1VBTzU2Ky92cmUxcy9QdFZhaitXZ3JuR2NPMDloRi9TMmc2QVFJRUNCQWdzQmdCQVgweGprb2hRSURBV0FRbU9aeWYzOW01RWtQNDZWbWpwK216M3lkaitRN1FUZ0lFQ0JBZ1FHQnBBdjZnV2hxdGdna1FJREE0Z1pCYVZJYkxUOWZodjAzN25lL0VHUGZTYTBiUEI5ZlZHa1NBQUFFQ0JBaXNRMEJBWDRlNmF4SWdRS0NQQXJkdTVRWGc0cFViTzM4cExRcjNSK0owdXA4U2U3NFgzWU1BQVFJRUNCQWdRR0FCQWdMNkFoQVZRWUFBZ2NFTHpPNDd2M3pqeGgrcXF2QlgwMzNuc1FyQnlQbmdPMTREQ1JBZ1FJQUFnVlVLQ09pcjFIWXRBZ1FJOUZPZzNIZWVWbXpmcVdQelA4NmFrS2U2NXludkhnUUlFQ0JBZ0FBQkFnc1NFTkFYQktrWUFnUUlERlFnaC9DOENGeDZ4UDhoalpwdlZlNDdiem44UzRBQUFRSUVDQkJZc0lDQXZtQlF4UkVnUUdCUUFyZXFmTjk1dGJXNys1ZlRmdWZmTVZzVXpuM25nK3BralNGQWdBQUJBZ1M2SWxEKzhPcEtaZFNEQUFFQ0JEb2tjQ3N0QVBkNlZmWTdqNkg2RDZ0ODMzblZCdllPMVZKVkNCQWdRSUFBQVFLREVUQ0NQcGl1MUJBQ0JBZ3NWS0RPNFh6end4KytHT3ZxdjV1VjdMN3poUklyakFBQkFnUUlFQ0J3djRDQWZyK0hyd2dRSUVDZ0ZTZ0x3TlYzNy95dEVPcVg3SGZ1MjRJQUFRSUVDQkFnc0h3QkFYMzV4cTVBZ0FDQmZnbmtMZFhTd25CWGRuYis5VkNISDRqVFpwclN1bHVpK3RXTGFrdUFBQUVDQkFqMFVFQkE3MkducVRJQkFnU1dLSkNtdHIrK2w3ZFVTNXVvL1djeDMzWWV5blpxdGxSYklycWlDUkFnUUlBQUFRSlpRRUQzZlVDQUFBRUNCd0lmaFBBUS84dTBhdnVWOU1aZSt2Qzc0a0RJWndJRUNCQWdRSURBRWdYODBiVkVYRVVUSUVDZ1Z3SzNidVZwN0UyYTJ2NkQ2Yjd6NzhsVDI5UFh0bFRyVlNlcUxBRUNCQWdRSU5CbkFRRzl6NzJuN2dRSUVGaWNRSm5hdm5YanhuYWEwUDZmeGlZdDJONU9iVi9jRlpSRWdBQUJBZ1FJRUNEd1JBRUIvWWs4M2lSQWdNQm9CTnJwN1RIK2RWUGJSOVBuR2txQUFBRUNCQWgwVEVCQTcxaUhxQTRCQWdSV0xuQ3JUR09mYnQzWS9wNDBhdjc5YWZRODczZHUxZmFWZDRRTEVpQkFnQUFCQW1NWEVOREgvaDJnL1FRSWpGMGdWSzlYZTl2YjIyZGlESDhqcmRtZUgvblRCd3ZHbFpmOFE0QUFBUUlFQ0JBZ3NHd0JBWDNad3NvblFJQkF0d1VtdVhwM0p1R24wdFQycjY1aXpLdTJsOWU2WFcyMUkwQ0FBQUVDQkFnTVQwQkFIMTZmYWhFQkFnU09LcENEK1A3bG16ZGZUUVBtLzA1WkdFNDRQNnFkNHdnUUlFQ0FBQUVDQ3hjUTBCZE9xa0FDQkFqMFJxRE1hSy9qOUsrbEJkdFBwOUh6L1ZSenZ4ZDYwMzBxU29BQUFRSUVDQXhOd0I5aVErdFI3U0ZBZ01EUkJObzl6Mi9jK0tOcDlQeTdZMHg3bm9kZ1liaWoyVG1LQUFFQ0JBZ1FJTEFVQVFGOUthd0tKVUNBUUtjRjhnSndhYlQ4MXFrMGF2NVhPbDFUbFNOQWdBQUJBZ1FJakVoQVFCOVJaMnNxQVFJRWlzQ3RXMldrZk92bTUzNDAxT0gzcG52UDg5UjJDOFA1OWlCQWdBQUJBZ1FJckZuQWRNWTFkNERMRXlCQVlNVUNkZlg2NjN2bnQ3ZTMwclpxZjdHS2FjdnpFUHpIMmhWM2dzc1JJRUNBQUFFQ0JCNGw0SSt5UjZsNGpRQUJBc01WS0QvM1Q5ZjFUNFFRWGtqTnpOdXErVjB3M1A3V01nSUVDQkFnUUtCSEF2NG82MUZucVNvQkFnVG1GQ2picWwyN2VmUERWUlYvekxacWMybzZuUUFCQWdRSUVDQ3dZQUVCZmNHZ2lpTkFnRUNIQmZMaWNOVzBhZjVpcU90ejZhblI4dzUzbHFvUklFQ0FBQUVDNHhNUTBNZlg1MXBNZ01BNEJjcm8rWlVYcjc4U1EvVW5aNlBuMWlFWjUvZUNWaE1nUUlBQUFRSWRGUkRRTzlveHFrV0FBSUZsQ0lUcEpOOTdmanB0cjVaWGJpOGo2c3U0ampJSkVDQkFnQUFCQWdTT0wyRDA1UGhtemlCQWdFRGZCUExvK1hSemQvZnJZeFgvamFxSlZtN3ZXdytxTHdFQ0JBZ1FJREFLQVNQb28raG1qU1JBWU9RQ1phUThwZlFmUy9lZWI4eEd6LzM4SC9rM2hlWVRJRUNBQUFFQzNSUHdCMXIzK2tTTkNCQWdzRWlCZS9lZXB3bnRQMWp1UFE4aHYrWkJnQUFCQWdRSUVDRFFNUUVCdldNZG9qb0VDQkJZc0VCN24za3orZEVxaEdmY2U3NWdYY1VSSUVDQUFBRUNCQllvSUtBdkVGTlJCQWdRNkpoQUdUMi9kUDM2aTZsZVB6QWJQZmR6djJPZHBEb0VDQkFnUUlBQWdRTUJmNmdkU1BoTWdBQ0I0UW1VMGZPTmpmcEgwc3J0RjkxN1Byd08xaUlDQkFnUUlFQmdXQUlDK3JENlUyc0lFQ0J3SUpERCtmN0ZtemMzWXd3L0hLM2NmdURpTXdFQ0JBZ1FJRUNnc3dJQ2VtZTdSc1VJRUNBd2g4RHRxaXdFdHhIM3Z5L1VZYWVLVGQ3MzNNLzhPVWlkU29BQUFRSUVDQkJZdG9BLzFwWXRySHdDQkFpc1hpQlVyMVVsa0ljcS9FaWEycDczUFc4WGkxdDlYVnlSQUFFQ0JBZ1FJRURnaUFJQytoR2hIRWFBQUlFZUNaVFI4NnU3dS85U1N1YmZHR05zVXQzOXZPOVJCNm9xQVFJRUNCQWdNRTRCZjdDTnM5KzFtZ0NCWVF1a0lmT3FTcW44VDZXUjh5cU5vT2VBYmdSOTJIMnVkUVFJRUNCQWdNQUFCQVQwQVhTaUpoQWdRT0NRUUI0OW4xN1ozdjdhOVBtN1psdXJsUkgxUThkNFNvQUFBUUlFQ0JBZzBFRUJBYjJEbmFKS0JBZ1FtRU9nSFNtZmhPOVBpOE05Tzl0YXplajVIS0JPSlVDQUFBRUNCQWlzU2tCQVg1VzA2eEFnUUdENUF2bG4rdjcyOXZhWktsYi9hcnIzM09Kd3l6ZDNCUUlFQ0JBZ1FJREF3Z1FFOUlWUktvZ0FBUUpyRnlnLzArOU1KdCtaRm0zL3lPemVjei9uMTk0dEtrQ0FBQUVDQkFnUU9KcUFQOXlPNXVRb0FnUUk5RUdnTEE0WHF1YjdMQTdYaCs1U1J3SUVDQkFnUUlEQS9RSWI5My9wS3dJRUNCRG9xVUQrRDY3VHplM3RtN0VLZjZocTBzTHRJVmdjcnFlZHFkb0VDQkFnUUlEQU9BV01vSSt6MzdXYUFJR2hDZHh1OXptdko1UHZUdFBiTDFvY2JtZ2RyRDBFQ0JBZ1FJREFHQVNNb0kraGw3V1JBSUdoQzRUcXRXcS9ORExHUDk0Mk5tK0E3a0dBQUFFQ0JBZ1FJTkFuQVNQb2Zlb3RkU1ZBZ01DakJjclA4czBiTjM1UEZhcmYxNjdlbnA1NUVDQkFnQUFCQWdRSTlFcEFRTzlWZDZrc0FRSUVIaWxRd25nZG1qeTkvZlJzZXJ1Zjc0K2s4aUlCQWdRSUVDQkFvTHNDL29EcmJ0K29HUUVDQkk0cTBFNXZiOElmVGVIYzN1ZEhWWE1jQVFJRUNCQWdRS0JqQWdKNnh6cEVkUWdRSUhCTWdiSlMrOVdkblcrb3FuaXJURyt2MmdYampsbU93d2tRSUVDQUFBRUNCTllzSUtDdnVRTmNuZ0FCQW5NS2xPbnRUUWpmR2VwNll2WDJPVFdkVG9BQUFRSUVDQkJZbzRDQXZrWjhseVpBZ01DY0FqbWNsK250YVdMN0h5N1QyNjBOTnllcDB3a1FJRUNBQUFFQzZ4TVEwTmRuNzhvRUNCQ1lWNkQ4REwrNnUvdlZvWXJmT0Z1OTNjLzFlVldkVDRBQUFRSUVDQkJZazRBLzVOWUU3N0lFQ0JCWWdFQ1ozcDVHejc4OWhQcGNGYXRwS3RQUDlRWEFLb0lBQVFJRUNCQWdzQTRCZjhpdFE5MDFDUkFnc0JpQmxNM1QwbkJWL003OGIvb29YeSttYUtVUUlFQ0FBQUVDQkFpc1drQkFYN1c0NnhFZ1FHQXhBbm4wZkhyeDVzM050Sy9hUjBzMFQ4UG9peWxhS1FRSUVDQkFnQUFCQXVzUThNZmNPdFJka3dBQkF2TUxsTzNWSmpGK1N3alZUaG85YjFLUmZxYlA3Nm9FQWdRSUVDQkFnTURhQlB3eHR6WjZGeVpBZ01EOEFpRk9iMWNwb2FmWjdUbWdleEFnUUlBQUFRSUVDUFJZUUVEdmNlZXBPZ0VDb3hXNHQ3MXZSQ2xvQUFCQUFFbEVRVlJhQ09IYnlxM242Y2xvTlRTY0FBRUNCQWdRSURBUUFRRjlJQjJwR1FRSWpFcWcvT3krZFAzNmk3RUt2N2RzcjVadVJCK1ZnTVlTSUVDQUFBRUNCQVlvSUtBUHNGTTFpUUNCd1F1VU1GNVBKdCtVbmx4TXJjM1Qyd1gwd1hlN0JoSWdRSUFBQVFKREZ4RFFoOTdEMmtlQXdHQUY2aEIvLzZIN3p3WDB3ZmEwaGhFZ1FJQUFBUUpqRVJEUXg5TFQya21Bd0pBRXBya3hhV3UxajdaYm43di9mRWlkcXkwRUNCQWdRSURBZUFVRTlQSDJ2WllUSU5CUGdmeHpPMTdlMmRsTnM5cGZLZmVmQjl1cjliTXIxWm9BQVFJRUNCQWdjTCtBZ0g2L2g2OElFQ0RRZFlIMjUzWmR2NXJHelRkVFpkMS8zdlVlVXo4Q0JBZ1FJRUNBd0JFRkJQUWpRam1NQUFFQ1hSSklONXgvODZIN3o3dFVOWFVoUUlBQUFRSUVDQkE0b2NER0NjOXpHZ0VDQkFpc1hpQXZCSmRIelBNTjZOOVlQbHU4dldYd0x3RUNCQWdRSUVCZ0FBSkcwQWZRaVpwQWdNQm9CRXBBdjNidDJ0bVUwTCt1dERwSTZLUHBmUTBsUUlBQUFRSUVCaThnb0ErK2l6V1FBSUVCQ1pTdDFQYWZtOXhJQzhTOVdCYUlzLy81Z0xwWFV3Z1FJRUNBQUlHeEN3am9ZLzhPMEg0Q0JQb2tVQUo2M0M4THhEMmJLbTZCdUQ3MW5yb1NJRUNBQUFFQ0JKNGlJS0EvQmNqYkJBZ1E2SnBBQ1BGckR5MFFWMEo3MStxb1BnUUlFQ0JBZ0FBQkFzY1hFTkNQYitZTUFnUUlyRXNnNWd1blJQNzFhWkc0ZGRYQmRRa1FJRUNBQUFFQ0JKWWtJS0F2Q1ZheEJBZ1FXSUxBTkpXWjhubjRjQ2s3cEozUVBRZ1FJRUNBQUFFQ0JBWWpZSnUxd1hTbGhoQWcwRkdCZ3hDZFB4ODh6OFBmN1hacFI2OTAvZytxelpYZDNlMjBPTnlIWnFmNWo2eEg5M01rQVFJRUNCQWdRS0R6QWdKNjU3dElCUWtRNkxuQXdWejBnODhIemNsaC9jSFhEdDU3MU9jUzdzTmtjaTFPOXpkbkJ4d0Uva2NkN3pVQ0JBZ1FJRUNBQUlHZUNRam9QZXN3MVNWQW9CY0NaYlQ3K2VlZnZ6WTlkZXEvU2VQbTUwS3NQaGREMkV1MXY1QlM5ZDk4NTgwM1gwdlBKK2tqVDFzL3lxTU40OVBwSzJsbWU1MUcwZk41K1h3UEFnUUlFQ0JBZ0FDQmdRZ0k2QVBwU00wZ1FLQjdBczF6ejlYVmRQL2JRMTJmell1NjVZU2RubGZOdE5sTlQ3OHBmY3p1S1QvQ1NQcnQyMVgxMm10VnJLdmRrRXRxbWxSZ205bFRPUjRFQ0JBZ1FJQUFBUUlERUhELzRnQTZVUk1JRU9pbXdIUXllVGRGNkxkaTA2UjhIdStrei92TmRIb25qWURmMnRyZC9mNVpyWTgyQ3Y3YWErMTArS2I2U0RkYnExWUVDQkFnUUlBQUFRTHpDZ2pvOHdvNm53QUJBbzhST1AyVnIreW5WTjNNUnJvMzB1YzhheWw5NUt3ZGZ6TDlrOFA1ZnZwNDJsQjRmdjlnS3Z5SDJpM1dublpLT3NPREFBRUNCQWdRSUVDZ1Z3SUNlcSs2UzJVSkVPaUpRQm50ZnZ2dHQ5OUxvZngzSDRqU2t6eVNYdFgxTjF6ZTNmMmhXWHVlTm9wZWluanBwWmVlVFZIK2FqbW56SFB2aVlacUVpQkFnQUFCQWdRSUhFbEFRRDhTazRNSUVDQndJb0c4bGRyQnlQY0hCZVQ5eS9NOTZhSDY4ZXJsbDU5SmJ4eGxGTDM2bmJ0M3I2Yno4alpydWF3SGN2OEh4WHRHZ0FBQkFnUUlFQ0RRVHdFQnZaLzlwdFlFQ1BSRUlJWHdyenlpcW1rVVBlNm5uUDUxVis2OCt5T3o5NTgwaWw3Q2VKeE1McVpVZis0UjVYbUpBQUVDQkFnUUlFQmdBQUlDK2dBNlVSTUlFT2lrUUJ1cVk4aWo2UG0yOHpMc2ZhK21hWXA2SGdrUFZmMlQxNjVkTzV0ZWYrb29ldDAwMTFJcHAwdHBSdER2VVhwQ2dBQUJBZ1FJRUJpS2dJQStsSjdVRGdJRXVpYlFUa0Z2bXZjZVU3RkoyaXB0UDQySWYyanYxS2svTlR2bWNhUG9iZGl2NDR0cFJENC9jdWh2bjVVdi9VT0FBQUVDQkFnUUlEQUVBUUY5Q0wyb0RRUUlkRmNneER3eS91aEhtdVBlanFMSG43eDQ4K1ptT2lnZis5aWZ5M1UxMmN3M3J1YzkyeDVkb0ZjSkVDQkFnQUFCQWdUNkxQRFlQd1Q3M0NoMUowQ0F3Sm9GY29BdUk5enBuM2ZhcDQvTTFHVVVQZFQxN3NaMCttZExuVytWcmRjZVdmMlV5OXNWM0IvNXJoY0pFQ0JBZ0FBQkFnVDZMaUNnOTcwSDFaOEFnVzRMaFBEd0t1NkhheHhDbmJaZFN4aysvUG56Mjl0YjFldlZYbnI3d1ovTmJib1A4Zm9EZDdJZkxzbHpBZ1FJRUNCQWdBQ0JuZ3M4K0VkZ3o1dWorZ1FJRU9pTVFCbEJUOG42bmFmY0xaNS9EdStGT2x3L0hjSmZtTlgrd1ovTkphQ24rZkRQNTlYbVBBZ1FJRUNBQUFFQ0JJWXA4T0FmZ2NOc3BWWVJJRUJnVFFJaFBtVUV2YTFYMm5hdHliZVgvOW1yTDczMFFucnB3WHZSWnlQbzlabjI4Skw5MTlRaWx5VkFnQUFCQWdRSUVGaVdnSUMrTEZubEVpQXdib0hidDl2MmgvQ2xJMERrbjhWN1ZWMXZUZmYzZjJKMi9NSFA1NXpHYzBDdjAwNXQ3UjdvYVl1MjJURStFU0JBZ0FBQkFnUUlERWpnNEEvQUFUVkpVd2dRSU5BZGdiUlFlN3NQK3RPcnRERWJSZi9UbTl2Yk45UGg5NDJpYjIxdG5VMmo4UmRtRTl3RjlLZDdPb0lBQVFJRUNCQWcwRHNCQWIxM1hhYkNCQWowUXVDMTEwbzFwMDN6YnRvV0xUMS9hcWJPQit5bFFIOWhNZ2svWGs1dUY0c3JKOVoxZlNhVmNxNHRhL2F1VHdRSUVDQkFnQUFCQW9NU0VOQUgxWjBhUTRCQTV3UkM4K1JWM08rdmNMa1hQZVg1UDdPMXMvT1I5TlorTmR0MmJXOWo0NW1xYW1iM29EODk3ZDlmcks4SUVDQkFnQUFCQWdUNklDQ2c5NkdYMUpFQWdkNEtoRmgvc1ZRK1BMUjEycVBhbEg4bXB4WGQ2K2RpWGJXajZPKy9Xa2JRTitvNkJmUnc2bEVuZVkwQUFRSUVDQkFnUUdBWUFnTDZNUHBSS3dnUTZLaEEyaHJ0N2pHclZ1NUZyMkw0NGNzM2I3NWFmZXBUNWZ4NHFxblQ5UGVuenBNLzVyVWNUb0FBQVFJRUNCQWcwQ0VCQWIxRG5hRXFCQWdNU3FDczU1Wkd3MzhubG52UWp6d3R2YjBYdlE2blE1eit1d2NpOVY3OVRDcHdjdkMxendRSUVDQkFnQUFCQXNNVEVOQ0gxNmRhUklCQWh3UlNxSDR2VlNlSDllT01mczlHMGF0L2JldkdqVy9LemRtZk5IbUJ1SU1wN3NjcEs1L3VRWUFBQVFJRUNCQWcwQU1CQWIwSG5hU0tCQWowVnlDdEVQZCtGVUxlTWkwL3lxaDYrL1NKLzRZVXh2ZlQ2UHRHR24zL3FmYklrTTg5NnZsUExOeWJCQWdRSUVDQUFBRUMzUlFRMEx2WkwycEZnRUQvQlVxWW5weHE3cWJoN3VPczVONjJQSVE4aWg3VHVQdS9jdm1GRjc2dWlwUGZTVUUvajV3TDZmMy8zdEFDQWdRSUVDQkFnTUFqQlFUMFI3SjRrUUFCQW9zUm1PeFA5dE1vK1BFRGVyNThPaTluOHJDeDhWTXByQi84dkRhOWZURmRveFFDQkFnUUlFQ0FRT2NFTmpwWEl4VWlRSURBZ0FUMjl2ZlR0bWw1QlAwRXVUcUVzaTk2T3ZON0o2SCtSS3ppN3lTYUMra2pqNktmb01BQndXb0tBUUlFQ0JBZ1FHQ0FBZ2NqTWdOc21pWVJJRUJnL1FJYisvdDMwNVpwZWFHNC9EanU5UFFjd3ZNYThNL0cyUHg0ZW5id0gxV0Y4OExwSHdJRUNCQWdRSURBc0FRRTlHSDFwOVlRSU5BZGdSTEc5ODd0dlorbXFiODd4NEIzQ2VtcFdUdnA0MHgzbXFjbUJBZ1FJRUNBQUFFQ2l4WVEwQmN0cWp3Q0JBZ2NFamo5bGRQN2FXcjYzVGtucEIrRTlFTWxlMHFBQUFFQ0JBZ1FJREEwQVFGOWFEMnFQUVFJZEVXZ2pLQy8vZmJiNzZiVjE3ODhtNU4rM0NudWg5dGlXdnRoRGM4SkVDQkFnQUFCQWdNVUVOQUgyS21hUklCQXB3UnlLRC9ZQjcxVEZWTVpBZ1FJRUNCQWdBQ0JiZ2tJNk4zcUQ3VWhRR0JZQW1YVU8rMlU5cFhTckRUWGZWak4weG9DQkFnUUlFQ0FBSUZGQ2dqb2k5UlVGZ0VDQk80WEtBRTl4dERjLzdLdkNCQWdRSUFBQVFJRUNEd3NJS0EvYk9JVkFnUUlMRmFnYVdiYnJCbEFYeXlzMGdnUUlFQ0FBQUVDd3hJUTBJZlZuMXBEZ0VBWEJVSjBEM29YKzBXZENCQWdRSUFBQVFJZEV4RFFPOVlocWtPQXdLQUUybnZRcStvMzU5Z0hmVkFnR2tPQUFBRUNCQWdRSVBCNEFRSDk4VGJlSVVDQXdHSUVRakNDdmhoSnBSQWdRSUFBQVFJRUJpMGdvQSs2ZXpXT0FJRTFDN1NMeEZYVk8xVjV0dWJhdUR3QkFnUUlFQ0JBZ0VDbkJRVDBUbmVQeWhFZ01BU0JFTU4wQ08zUUJnSUVDQkFnUUlBQWdlVUtDT2pMOVZVNkFRSUUwdTNuNFVzWUNCQWdRSUFBQVFJRUNEeE5RRUIvbXBEM0NSQWdNS2RBQ1BaQm41UFE2UVFJRUNCQWdBQ0JVUWdJNktQb1pvMGtRR0NkQXRPbWViZUtlUS8wNEU3MGRYYUVheE1nUUlBQUFRSUVPaTRnb0hlOGcxU1BBSUVCQ0lTbXZRZGRQQjlBWjJvQ0FRSUVDQkFnUUdCNUFnTDY4bXlWVElBQWdTSVFZdjNiTTRvYzBmTlF1Z2NCQWdRSUVDQkFnQUNCaHdRRTlJZEl2RUNBQUlIRkNvUVk3ODVpdVRIMHhkSXFqUUFCQWdRSUVDQXdLQUVCZlZEZHFURUVDSFJNb0l5V2g3citVbXdUdW9EZXNRNVNIUUlFQ0JBZ1FJQkFsd1FFOUM3MWhyb1FJREJJZ2FhcTNrOE5TNTg4Q0JBZ1FJQUFBUUlFQ0R4ZVFFQi92STEzQ0JBZ3NCQ0JqUmpmVHd1NDc4OEtjdy82UWxRVlFvQUFBUUlFQ0JBWW5vQ0FQcncrMVNJQ0JEb21NRDExNm02YTI5NnU1TjZ4dXFrT0FRSUVDQkFnUUlCQWR3UUU5TzcwaFpvUUlEQlFnWHAvZnovR0tLQVB0SDgxaXdBQkFnUUlFQ0N3S0FFQmZWR1N5aUZBZ01EREFtVTYrOTUwdXBmZUV0QWY5dkVLQVFJRUNCQWdRSURBSVFFQi9SQ0dwd1FJRUZpR3dNYmUzdDJxQ3UrbGoyVVVyMHdDQkFnUUlFQ0FBSUdCQ0Fqb0ErbEl6U0JBb0xzQ2UyZlB2cCtpK2J1emZHNlJ1TzUybFpvUklFQ0FBQUVDQk5ZcUlLQ3ZsZC9GQ1JBWWc4QXo3NzIzbC9aQlQ2UG9IZ1FJRUNCQWdBQUJBZ1FlTHlDZ1A5N0dPd1FJRUpoWG9JeVd2LzMyMisrbGJkYStZb0w3dkp6T0owQ0FBQUVDQkFnTVcwQkFIM2IvYWgwQkF0MFFhRkkxRHZaQjcwYU4xSUlBQVFJRUNCQWdRS0J6QWdKNjU3cEVoUWdRR0tKQUNOVlhodGd1YlNKQWdBQUJBZ1FJRUZpY2dJQytPRXNsRVNCQTRGRUNaV1o3YktwMmNiaDBNL3FqRHZJYUFRSUVDQkFnUUlBQUFRSGQ5d0FCQWdTV0s5RGVlaDdqdTh1OWpOSUpFQ0JBZ0FBQkFnVDZMaUNnOTcwSDFaOEFnWDRJaE9nZTlINzBsRm9TSUVDQUFBRUNCTlltSUtDdmpkNkZDUkFZZ1VDZXpsNUcwTk0vNzdSUHpYQWZRYjlySWdFQ0JBZ1FJRURnUkFJQytvblluRVNBQUlGakNvUXdQZVlaRGlkQWdBQUJBZ1FJRUJpWmdJQStzZzdYWEFJRVZpN1FMaEtYUjlEYnU5RlhYZ0VYSkVDQUFBRUNCQWdRNkllQWdONlBmbEpMQWdSNkxoQ2lFZlNlZDZIcUV5QkFnQUFCQWdTV0xpQ2dMNTNZQlFnUUdMWEE3ZHR0ODBQNDBxZ2ROSjRBQVFJRUNCQWdRT0NwQWdMNlU0a2NRSUFBZ2ZrRlFnak4vS1VvZ1FBQkFnUUlFQ0JBWU1nQ0F2cVFlMWZiQ0JCWXY4QnJyNVU2VEp2bTNTcmVXOVI5L2ZWU0F3SUVDQkFnUUlBQWdjNEpDT2lkNnhJVklrQmdrQUtoc1lyN0lEdFdvd2dRSUVDQUFBRUNpeE1RMEJkbnFTUUNCQWc4VmlERStvdmx6VkQ1dWZ0WUpXOFFJRUNBQUFFQ0JNWXQ0QS9GY2ZlLzFoTWdzQ0tCRU9QZWlpN2xNZ1FJRUNCQWdBQUJBajBWRU5CNzJuR3FUWUJBYndUeWplZFZtRXgrTzVaNzBPMkczcHVlVTFFQ0JBZ1FJRUNBd0lvRkJQUVZnN3NjQVFMakZHaGl2Sk5hYnBXNGNYYS9WaE1nUUlBQUFRSUVqaVFnb0IrSnlVRUVDQkNZVDJDanF0NnJRdGlmbFZKRzFlY3IwZGtFQ0JBZ1FJQUFBUUpERXhEUWg5YWoya09BUU5jRVNoaWZubXJ1aHFxeWtudlhla2Q5Q0JBZ1FJQUFBUUlkRWhEUU85UVpxa0tBd0hBRkp2dVQvWFFQdW9BKzNDN1dNZ0lFQ0JBZ1FJREEzQUlDK3R5RUNpQkFnTURUQmZiMjkvTXE3Z2RUM0o5K2dpTUlFQ0JBZ0FBQkFnUkdKeUNnajY3TE5aZ0FnWFVJYk96djMwMUx4TDAvdTdaNzBOZlJDYTVKZ0FBQkFnUUlFT2k0Z0lEZThRNVNQUUlFZWk5UXd2amV1YjMzUXdqdnBnM1hldDhnRFNCQWdBQUJBZ1FJRUZpT2dJQytIRmVsRWlCQTRENkI1OTUvYmk5VzhhNThmaCtMTHdnUUlFQ0FBQUVDQkE0SkNPaUhNRHdsUUlEQUVnVEtDUHBiYjcyVnQxbjc4bXo4M0JUM0pVQXJrZ0FCQWdRSUVDRFFkd0VCdmU4OXFQNEVDUFJGSUlkeWk4VDFwYmZVa3dBQkFnUUlFQ0N3QmdFQmZRM29Ma21Bd09nRXlzQjVDTlZYU3N2VFhQZlJDV2d3QVFJRUNCQWdRSURBVXdVRTlLY1NPWUFBQVFKekM1U0FIbU5vNWk1SkFRUUlFQ0JBZ0FBQkFvTVZFTkFIMjdVYVJvQkE1d1NhWnJiTm1nSDB6dldOQ2hFZ1FJQUFBUUlFT2lBZ29IZWdFMVNCQUlIQkM3UnJ3NFc4RC9wc21iakJOMWtEQ1JBZ1FJQUFBUUlFamlzZ29COVh6UEVFQ0JBNHZzQkJRUCtFZkg1OFBHY1FJRUNBQUFFQ0JNWWlJS0NQcGFlMWt3Q0J0UXZFRUQ4V1k1cmVIc0lrVmNZODk3WDNpQW9RSUVDQUFBRUNCTG9sSUtCM3F6L1VoZ0NCWVFxMGk4Tk53NmVyR0g4ck5UR1BxQXZvdyt4cnJTSkFnQUFCQWdRSW5GaEFRRDh4blJNSkVDQndaSUVTeG4vcm4vN1ROOU1aL3lTay9kYlNRMEEvTXA4RENSQWdRSUFBQVFMakVCRFF4OUhQV2ttQXdIb0ZjaGpQMDlyVEkveDhtdUtlNG5tZTYrNUJnQUFCQWdRSUVDQkE0QU1CQWYwREM4OElFQ0N3UElIYnMrWGg2dmp4Rk03VGRkcGg5T1ZkVU1rRUNCQWdRSUFBQVFKOUV4RFErOVpqNmt1QVFEOEZYbXVudERkTitQa1V6L2RTWExkUVhEOTdVcTBKRUNCQWdBQUJBa3NURU5DWFJxdGdBZ1FJM0NkUUZvbzdXMVdmU1NQb3Z6b2JRRzhYajd2dk1GOFFJRUNBQUFFQ0JBaU1WVUJBSDJ2UGF6Y0JBcXNXS1BlaHYvbm1tKytsNmUzL0tPUVo3KzVEWDNVZnVCNEJBZ1FJRUNCQW9OTUNBbnFudTBmbENCQVltRUJadmoyMTZXT3pPOUlIMWp6TklVQ0FBQUVDQkFnUW1FZEFRSjlIejdrRUNCQTRua0M3Y250YUtLNE1ub2ZnUHZUaitUbWFBQUVDQkFnUUlEQm9BUUY5ME4ycmNRUUlkRXlnQlBRUTYwK0hHTjlKZGNzajZtMW83MWhGVlljQUFRSUVDQkFnUUdEMUFnTDY2czFka1FDQjhRcVVNUDdPWnovN1Zvcm12eFRhbmRZRTlQRitQMmc1QVFJRUNCQWdRT0ErQVFIOVBnNWZFQ0JBWUtrQ09Zem5hZTFwZmJqdzhiS1N1NFhpbGdxdWNBSUVDQkFnUUlCQW53UTIrbFJaZFNWQWdNQUFCTnFGNHVyNGVqdTV2UjFHSDBDN05JRUFBUUlFQ0JBZ1FHQk9BU1BvY3dJNm5RQUJBc2NVS0ZQYW15WjhNajNaUzFQZExSUjNURUNIRXlCQWdBQUJBZ1NHS2lDZ0Q3Vm50WXNBZ2E0S05MbGlaNnZxTTJtZSs2K1dhZTRXaXV0cVg2a1hBUUlFQ0JBZ1FHQ2xBZ0w2U3JsZGpBQUJBbVZpKytUTk45OThMeTNpL285Q1hzZzl4aExhMlJBZ1FJQUFBUUlFQ0l4YlFFQWZkLzlyUFFFQzZ4Rm83ME92cW8rVmpkYldVd2RYSlVDQUFBRUNCQWdRNkppQWdONnhEbEVkQWdSR0lkQnVyUmJqeDhzaTdpRzREMzBVM2E2UkJBZ1FJRUNBQUlFbkN3am9UL2J4TGdFQ0JKWWhVQUo2cU90UGh4amZTUmZJSStwdGFGL0cxWlJKZ0FBQkFnUUlFQ0RRQ3dFQnZSZmRwSklFQ0F4TW9JVHhkejc3MmJkU05QK2wwTzYwSnFBUHJKTTFod0FCQWdRSUVDQndYQUVCL2JoaWppZEFnTUQ4QWptTTUybnRhWDI0OEhwWnliM01kWisvWUNVUUlFQ0FBQUVDQkFqMFYwQkE3Mi9mcVRrQkF2MFdLQXZGcFg5K0xxWDAxSkoyR0wzZlRWSjdBZ1FJRUNCQWdBQ0JlUVFFOUhuMG5FdUFBSUdUQzVRcDdVMWRmekk5MlV0VDNTMFVkM0pMWnhJZ1FJQUFBUUlFQmlFZ29BK2lHeldDQUlFZUNwUzl6eS9VOWEra0VmUmZtZDJIYmovMEhuYWtLaE1nUUlBQUFRSUVGaVVnb0M5S1Vqa0VDQkE0bmtDNUQvMk5OOTU0UDAxdS84V3lrTHY3MEk4bjZHZ0NCQWdRSUVDQXdNQUVCUFNCZGFqbUVDRFFLNEZ5SDNvVnc4ZkxSbXU5cXJyS0VpQkFnQUFCQWdRSUxGcGdZOUVGS284QUFRSUVqaXhRN2tOUEErZXZsMTNRUXppNEQ3ME43a2N1eG9FRUNCQWdRSUFBQVFKREVEQ0NQb1JlMUFZQ0JQb3FVQUo2ZmVyVVB3NHhmajQxSWdmejhscGZHNlRlQkFnUUlFQ0FBQUVDSnhjUTBFOXU1MHdDQkFqTUsxREMrQmZlZU9Oektaci84bXloT0FGOVhsWG5FeUJBZ0FBQkFnUjZLaUNnOTdUalZKc0FnVUVJNURBK3U5V29UdmVocHdGMEM4VU5vbU0xZ2dBQkFnUUlFQ0J3RWdIM29KOUV6VGtFQ0JCWXRFQ01IeTlGem9iUkYxMjg4Z2dRSUVDQUFBRUNCTG92WUFTOSszMmtoZ1FJREZ1Z1RHbHY2dnFUNmNsZWF1ckJRbkhEYnJYV0VTQkFnQUFCQWdRSVBDUWdvRDlFNGdVQ0JBaXNWS0RKVjd0UTE3K1NwcmYveW13QXZieTIwbHE0R0FFQ0JBZ1FJRUNBd05vRkJQUzFkNEVLRUNBd2NvRThnajU1NDQwMzNrKzNvUDlpV2NqZGZlZ2ovNWJRZkFJRUNCQWdRR0NzQWdMNldIdGV1d2tRNkpKQTJmYzh4dkI2MldpdFN6VlRGd0lFQ0JBZ1FJQUFnWlVKQ09ncm8zWWhBZ1FJUEZhZzNJZWVwcmgvdkF5ZWgrQSs5TWRTZVlNQUFRSUVDQkFnTUZ3QkFYMjRmYXRsQkFqMFI2QUU5TEN4OGVrUTQrZFR0Zk9JZWh2YSs5TUdOU1ZBZ0FBQkFnUUlFSmhUUUVDZkU5RHBCQWdRV0lCQUNlUHYvUHF2LzBhSzVyODhXeWhPUUY4QXJDSUlFQ0JBZ0FBQkFuMFNFTkQ3MUZ2cVNvREFVQVZ5R045b0cxZC92RXFyeGFYcDdnTDZVSHRidXdnUUlFQ0FBQUVDanhHWS9VSDRtSGU5VElBQUFRS3JGWWp4WSswRmMwcjNJRUNBQUFFQ0JBZ1FHSk9BRWZReDliYTJFaURRWllFeVloNG4wMCtrSjNmVFZIY0x4WFc1dDlTTkFBRUNCQWdRSUxBRUFRRjlDYWlLSkVDQXdBa0VtbnpPK2ZETXI2WDU3Yjh5dXcrOXZIYUNzcHhDZ0FBQkFnUUlFQ0RRUXdFQnZZZWRwc29FQ0F4U0lJK2dUOTU0NDQzM1ExUDlRbW1oKzlBSDJkRWFSWUFBQVFJRUNCQjRuSUNBL2pnWnJ4TWdRR0QxQXUxOTUzWDFzYkpRM09xdjc0b0VDQkFnUUlBQUFRSnJGQkRRMTRqdjBnUUlFSGhBb055SFhqWFZKOHJnZVFoNUljLzJ0UWNPOUNVQkFnUUlFQ0JBZ01Ed0JBVDA0ZldwRmhFZzBGK0JFc2JyMDN2L09EWGhjN05tQ09qOTdVODFKMENBQUFFQ0JBZ2NTMEJBUHhhWGd3a1FJTEJVZ1JMR1AvOXJuMzg3elhYL3BkbENjUUw2VXNrVlRvQUFBUUlFQ0JEb2pvQ0EzcDIrVUJNQ0JBamtNSjZudGFkSGZMM2NoMjZodUpiRHZ3UUlFQ0JBZ0FDQkVRZ0k2Q1BvWkUwa1FLQ1BBdkZqVlV4NWZUYU0zc2NXcURNQkFnUUlFQ0JBZ01EeEJBVDA0M2s1bWdBQkFzc1dLRlBhWXgzelZtdDMwc2NrZlpqbXZteDE1Uk1nUUlBQUFRSUVPaUFnb0hlZ0UxU0JBQUVDaHdTYS9QeDhlT2JYWWhWL2RUYUFYbDQ3ZEl5bkJBZ1FJRUNBQUFFQ0F4UVEwQWZZcVpwRWdFQ3ZCZkpvK2VTTk45NTRQOFR3eWRJUzk2SDN1a05WbmdBQkFnUUlFQ0J3VkFFQi9haFNqaU5BZ01EcUJOSWk3dWtSWmd2RnJlNjZya1NBQUFFQ0JBZ1FJTEJHQVFGOWpmZ3VUWUFBZ2NjSXRQZWN4L0I2R1R3UElhL3M3ajcweDJCNW1RQUJBZ1FJRUNBd0ZBRUJmU2c5cVIwRUNBeEpvSVR4K3RUZFQ2ZFkvcmxad3dUMElmV3d0aEFnUUlBQUFRSUVIaUVnb0Q4Q3hVc0VDQkJZczBBSjQ1Ly90YysvbmVhNi85SnNvVGdCZmMyZDR2SUVDQkFnUUlBQWdXVUxDT2pMRmxZK0FRSUVqaStRdzNpZTFwN3ZRLy81dEJkNm11Q2VOMFgzSUVDQUFBRUNCQWdRR0xLQWdEN2szdFUyQWdRR0lCQi9Mb1h6Rk5SelN2Y2dRSUFBQVFJRUNCQVlzb0NBUHVUZTFUWUNCUG9zVVBZK2o5UHFreW1nMzBrTm1hUVBvK2g5N2xGMUowQ0FBQUVDQkFnOFJVQkFmd3FRdHdrUUlMQW1nUkxHZi9QTW1WK0xJWHhtTm9CZVF2dWE2dU95QkFnUUlFQ0FBQUVDU3hZUTBKY01ySGdDQkFpY1VDQUg5RW4xbWMvY1NlUG12K0ErOUJNcU9vMEFBUUlFQ0JBZzBDTUJBYjFIbmFXcUJBaU1UcURjZHg3citMR090enltYWZqNzVhT3FwcW11ZWFUZmRQeU9kNXJxRVNCQWdBQUJBdDBUYUZjSjdsNjkxSWdBQVFJRVppRzNic0luVWdMT0M4WGxuOWs1K0habndiZ1E5bEl3UHhVbWsvYjNTVnJRN3Q2Qzg3SGF2MWZkVU9YL0lKenIzWjI2cDhwNEVDQkFnQUFCQWdTNkpHQUV2VXU5b1M0RUNCQzRYNkNNUWsvMjlqNmRZdTF2ekxKdE4rNURUK0U3M3hjZll2Vi9wWHA5YXhXYmZ6czI4YWRUSVAvNTlQVVhjMTNEcE43SXdUM1U2VDhzaEhBUTBQTi9hMmhIMjB1QUx5UHVSdDN2NzNkZkVTQkFnQUFCQWlNVk1JSSswbzdYYkFJRWVpRlFBdnJiYjcvOStTdTd1LzhrNWVIcjNka05QWS9vMTNtMC9MZCs4ODAzZnk1cDVvLzhtRnplM3Q2ZVRDWWZhbUx6YWhYREt5bkZ2NUpDK1kzMDNzMFUxSjhyZ1QwZk9XdE1hZVFIRFp0K01BU2ZCdHRUems5SEh2N0laM29RSUVDQUFBRUNCQVlwSUtBUHNsczFpZ0NCZ1FqazdKcC9UcWZSNmpReUhlcHZyNW9tbGdYak90TEFsSnkva3F0eTdkcTFzK2svSkx5Zm5rNS82NjIzUHBzKzU0K2ZUUi9sa1RMN21iMjYzazZqN0Ntb3g0L0V1bjR4aGZZVTNxdnJLWkJ2cHh5K0ZVUDFYQ3B2VXRXenlWMEhBYjVOOEFkRlBSamc4K3M1d09mSDRjOEh6OXQzL0V1QXdMd0NCN05nY2psNTFvc0hBUUlFQ0N4QlFFQmZBcW9pQ1JBZ3NHaUJOSHIrYytYZTd0bCthNHN1LzdqbHBhM2ZVcDVPajFCOUtYOUs0VHdIOVZDOSt1cnAvSFgxcVU4ZFRNWFA4VHErOWRaYjc2YlBuNWw5L0V6NmZPK1J3dnZXM1NwZUNYWDlRanJwNVZUdUN5bTBmemlWdHB1ZVgwbHJ6dTJrR2ZLWFVsNS9OamtjQ3ZDNWlKTGUyMzgvR0lYUGJ4d0s4dm5ML0VpbDNUOGlQM3V4dk9rZkFnUWVGc2loUEgvay82RUo1US83ZUlVQUFRSUxGeWgvWHkyOFZBVVNJRUNBd0tJRThoL0h6ZGIyOXRla2tlVlBwaHU0bjAxZjV6K1cxLzN6dTBuL3JhQk8vOUhnSDZZcDdQL0pkRDkrNHJkLzR6ZCsvWUZHVDJiMVBBanIrZTFRM1U0ZnIrV25aYlgzdysrVkZ4LzRwMDZqODF2VGpZMUw2Y0RMYVVYN2x5WWh2SkN5K0pVVTRqK1VaaE5jUzBWZVNpUmJTV1VyZmYxTStud3FCZm4wOGlHaVErRzlmZG9HKzNSVWZwTHZpMC9GSDd4Mjc3dzJ6cmNWdXZkaUxybDlxZng3K1BtaGx3ZjdkSnI2UGZmci8vdk9aOS84NkdCYk9jNkc1ZS9sd3g4NWtCLzhqNkxNa3BtZU92WE42WVhmVTkrNTgzZSs4SVV2ZkhsMi9MMWp4c21tMVFRSUVGaXN3Tmorc0Zpc250SUlFQ0N3ZklIOGN6cSsvUExMejN6eHp2cy9uNzc0dWhTSzh4L09PU1N0KzVFRzB0c1VuRUx2YjZkcXZwNyt2UCtaMkZSLy8wd0luM3p6elRmZmU2Q0NlZFpXL21NK2gvTDgrZUIzVVA1OCtIbjZzcngvY0d6KytrbVArdUxObXhmVGY3bllqRTF6YmhyajFYVHdUajBKbTZtQXkrbTJnTzJtQ3RmckVDNmtVaSttTkg0NXZiK1pBdnlwRlBKUHo1cVFhakNyUXI1cXVYeitmT2pab1pBL2U3bEpoNldqeXdubDJQYWZXVGtmak5ibmx3L2E5K0R6OXBUKy9DdWc5NmV2amxyVHcvOGg3YjcvWVBiOGpSdGZOYTJhZnk0VjlPM3AyL3lqNlg4ckg4bi9XNy9iTkYvOS83ZDNKL0NWWFBXWjk2dnFYcWxYZGJzMzI3U2tqdU9Ra05Bc2hvWWtMTVp0WTJBeW1UZXpKSUY1RThneU1IbDVtUXpEZk1KbUlEUHZPMkVOVG5nSldaaGhHVExKUUJJbWsyU1NNUFBpclkwTkdCdDVBUnBzTUUyM2RLL3Nka3ZxUlhTM3U2VmJaNTcvcVZ2U2xheHVhN2xMTGIreTFicTZTOVU1MzFQU3ZVK2RVNmVteDhjbmRMOC9nTGpjRGZFOEJCQkFBSUVuRjJqOXdQRGt6K1laQ0NDQUFBSzlFTEFQMEExTkZQZGZOY0hhTDdoR1kxWmhNaXVuS0tWaFd4M2Jla3ZSbDBLeUdYMUhrZlJMbWlUdTVtcGw1b3RIanh6OTNpSzROQlJZdWszWHNlZ3Bjei9hZTlYODEvNzlRWERnZ0QyWXZtNXhRcmJIbGw3Mjdlc2JlUFRSTFZHMXVxWGkzQVpOSkw4dGlxUEx0UEtkUVNVYzBNR0Y3YUZyWEtvVjd0S1Erd0dGa1UwSzRCYnMxVXNmYkZZZCszU0FaSjFWMU9mNU5OVGIxdVpLTVhjanVjdi9PSDlmczJCMng4VUR2ajJ4dFE4L2VhRTV0QzVQOW5QcmM5dHhtNERlRHNYZXJXUCs5eWo1bmRLbEVPZVhMVU5EMjdXRFAwZXgyd0w1Uy9YSU0vVjdvTjhCN2Q1MmdFcGYrbmNpaU4xem0zTk5FTkRuK2JpRkFBSUl0RVZnOFJ0N1cxYktTaEJBQUFFRTJpcmdKNHJidVdmd1RlcXcrbERHQXJwVjFNTG0vREJ4RFlIMjhkWENhL0tCL3BRZXZVOC8zYWJuSFFqUG5SdHBEbysxMTZaTGVzQmh3YkRhOU1HTGZFL2Z4K3g3ZXR1ZTNubzdLVjlhem91c2JLbUhiSUs3MmRuWmdYUHIxMi9TVVlYMW9YcnBkV1JnUnlWb2JOY1FncTA2TFg2alJzaHYxV3UzaDdHRzNvZHVxeWIwVzYrTmJsTDlCM1QvWm4wTktHdjM2OFQ5cXU3VEVQeVc0clhldGdKWUVGcGltYnQzNmNmbjYraWZ1UFNUNWxmYjNQN0NBd0Jwb2RMdjgwOVBidG45QlBURkt2bjRPVDBnWmdlMTdHdHUyYjVuejk2bzBYaXhoWEx0TlMvVXNhZGh2My9xaHlTVTI3bm4ra0h6VHVoRmZmbzZvYmtxbjMxOGZIeFV0d25vYzVMY1FBQUJCTm9qa0g0Z2FzL2FXQXNDQ0NDQVFDY0VmT1FLWFhSdmJMa3I2VDIzK3k0VXBEcFJob3V0MDhwaFVVOGYxcE1pNllOOXJLSGxHbG51MCtjV2ZidEd0Ni94SC9qWHJ6dWswUUJmRENKM1N4U0hYenBXcTMxSHIyL3R5VXZEaE5VeDdTVy8wUGE5alI1TXYxL29lZW45cVZsUzV1VGU1TDc5KzlPZWVWdlgzRmR6Z2p1YjVHN0Z5OURRMElhVHptMVVyK1RHS0FyWE5ZSnd2WkEyQ21hYmZMWlltTmVwL0J1MDRnMmhjNXVkMC9uMG9YcnNZdzNCajhMMUtsaS9DckpSMGNodWIxWmtzamtJckVlektsT2JBOEFtNWFzSTMveVRldGkvL3JMeitwNHVjenB6TjlKSDVyN2JydVhYNEcvTTNiM3dSckwvYVdERXdwQzM4RW44MUdNQnZ3ZW9EQmFlYmJIZkxUdnc1WmZObDErK2EwTzErbndYdXBkcWY3dGFRMTZlSFZTaVpISkgyKzIxVTJrVWpKN3Y5NmxJKzRSK0gvMnV0U0RZcCt2ak93SUlJSUJBZXdXU04vUDJycE8xSVlBQUFnaTBWOEErYU1lYUxPM1MyZjYrKzNYYkxrMW1INWJURCtEdDNWcDcxMmF4ejNyWC9TZC9mZWF2Nk1zV0g0RlZEWnY5L1FFOWVxdnV1NlhSMzMvZjhVT0gvTXp3TGNWSUR5YXZ0SGU5WlJVcnZ0bjYvcGplVHIvYnlscHZweXUzdXRxUzFEbjVudHl6MW44MU8vNGxwMDl2WEhmMmJQKzVLTnJRVjZuMHg5VnFSYjM1bStKR28xOURGclpwaDFpbm52enRVYUN6Ny9VY3hheXFoWDJGc0w3UXhUdlVCV3E5OTVwSVQ5RS9DamVxU0RvbUVPaTdVNjlvMks5aHk5YlRield6MFFDMmI5bEJBTE8zeU5adnIxUE5aclZ1Vzg4RG1pVHVLajNHa2cwQjJ4K3R6ZXo3d3Q4VG5kYXg2OUZIOTJwV3g2dlY0aS9UVTU2bkp6M0Y4cmZhMFJyWHZpY0h5UHd2NXR4NkZ0Y3MvWnRERC9waUdYNUdBQUVFMmloZ2Y4aFpFRUFBQVFTeUxXQi9xMzM0VTgremdxeUdvc2FhS003M2JHVzc0QmNvbmM2OTFnR0dKQXpNbjd1ZUJJVlI5YzUrS1hMaExlcGh2bU5pZlB5aFJldFlTZS82b3BmMjVNZjBmZlpDMzROZy8vNmtZTWw1OVdtNHQvdGFieWZQNmN5L2RubThQanNBb05ITFFUU3phYlBhSit5clZ2dG1vNmcvakdiaW9LSGUvWWFDdVYxZXI5RzRYRmNVT0RWUnE5M2VtZUt3MW1VSTJQNWtYeGJLYlQrWjZ5SFg3V0RuOFBCdWpiWjVnWjV3alg3Y3I2ZnMxWUVWTzhDaS8rMGYrMlh6UGV2MmV2dXlkVDNaUWtCL01pRWVSd0FCQk5vZ3NKdy95RzNZREt0QUFBRUVFRmlqZ1BWa3p1NGNIcnhSdzVkL0k0UG5vYSttZWhZU2x1NWR0d2ZpMklhVmYxMDl2MTlRTUx4Wkp6L2ZjM0owOVBpaURmV2lkMzFSRVRyeTQxTHZ6K2w5NmZmV0RTOTFYK3ZqWm0zTGhiNG5qL0p2bGdXc2pkTXczWHBLU0JCY2NjWDZIWTNHTXhXOHI5T1Q5cXVabjZmZkdidnNvRzYyOXBMclozOHFpZy9rdHI2VkxBVDBsV2p4WEFRUVFHQ1ZBdWtIbTFXK25KY2hnQUFDQ0hSVFFKKzM3MDQ2dit5VGR5WVcrOUJ1aXdXSGxTNVdoK2FaMDgzcXFHZGR3VnpyVlAxQ25Yc2RoajloWHdvWmJ3bGpWOTh4TlBobDNYOXJIRVIzSEI4Yis2WmUzeHBVckF6MlpTSFV5cFdHVWQzTTNiSlUyWmU2cjEwVmE5MmZXbStuNjIrOXoyNWJXUmIwMnFaUDVIdmJCTXpaOXVkVzd6bnpyVDl3MlEvMnhSWDlia1RYdTltWkYrdDVUMU12ZVRPUTZ5Y2JwWkpja2pINXZXamZsUjhhS2xBbjkwVVZuZ1VCQkJBb3I0RDkwV2RCQUFFRUVNaStnSDNJam5mdTN2MDBuVUY4bno0ZDI4Umk5aUc1bDMvSGJXWm5YVmZOZjFhZlVWbnNvRzg3eTVOZWhzeTJvOG1xZE9aMDg3aUVZdng1YmVscjZodTh2ZUxDV3l1enMvYzgrdWlqeDdUOTFpVTlDTDN3bk56V1ozQWJnV3dKMk8rUG5jWmhTK3ZCcDJEWHJsMmJnL1hybjl0d2JyOSs2YTdSNzRPZFM2NkpCdlZ2KzNySmt5MHY4YTkreTJlMEpadkZmYVl4Mi9pUkU0OCtlbGkzcmF4ekJ3MTBtd1VCQkJCQVlJMEM5a2JBZ2dBQ0NDQ1FmUUg3ZSsyQ2ZVSGZqcU5EOStveitUUFVrMjRmak5NUDg5MnVnVDg0b0VJOW9BMC9SZWNrWCtxdmYyNlRUZGxFY08wTjZtbmRrblBYTFpIby9Ic2YxdE53RXJpam1scjhMajN4Wm5XZGYrRjRyWGF4M25VcmU5cnpuNjZiN3dqMFFzQityeGYza3MrVlk5ZlEwQS9Ib1h1Ujl1M3J0YXUvUUR2dWxYNi9Ud081aFdNYlVwTWN1VXJYTS9mNk50M3cyL0NUQTlydlcreitaL0Q0NDYrYW1KaVkxdnFUdjB0dDJoQ3JRUUFCQkJEb3pBY29YQkZBQUFFRU9pUGdlNnMwVWR5ZnFDLzUxVDA5RDExQlBLeFVOSnQzOEZ2bkdvM2ZXeGRGNzFkdjlpL2JoL2lXb0o3MllIZENJeG5Dbm9RVFA0VFhPdGt0THVpdUdYMGRWSXIvZ25MTExaWHo1Kzg2ZXZUb1k0c0trUjVFc1BVUTFoZmg4R05IQlN6VXBnZldGdlNTYjkyeloxdDFkbmFmRGovdDErL1dkWHJlcy9RN1paZlY4em5jLytNUHpHa1ZxeitYM0ZhM25NVWZFRXVEdVg2blJsU205MDdXYXYrOStXTEMrWElVZVE0Q0NDQ3dRZ0g3NDhxQ0FBSUlJSkFQQVF1OHN3cm8vMW9CL2ZkNkdkQnR1S3NtaGRibHZZUDNUSTZOdmN2NHRnMFBQNk1TeE8vVWZmL2NPdlQwZ2Q2R3FHdTJkaDlHT3YxK2svYXVXM0N4eTRQcHU3NlNuc2JIZE90dTNYOWJFTWEzVHd4cy8zcHc4T0Q1bGliM0FWOC9XODg2dmVzdE1OeHNpNER0KzdhUDJmZkZCNFNpN1h2Mi9GamtHbGZyc1d1MXU3NVErKzVReTc1cmU2Ukd5dWdSZndUS3IwZFA3ZWlTL0M2RlVWVi9aN1RsK0Z2YTJtOVBqdFUvMWJKVnE0djlyckFnZ0FBQ0NMUlp3UDdBc2lDQUFBSUk1RVBBOTZEdkdoNitXcGRRK2tMejg3RjlTTzcrMzNLRkJuMTRyeWlFM3pKWnE3OWNaVWpEYmFBRENKcll6YjFUaWVMLzhKL2lMYWduajZlOWhwM1dUcmFud3FXaFJyMkFmcHZxM2RmbDZVSUxITGVyeExmcSsxZlVJMWhmVkNBcnB4VjljWmhhOURSK1JPQ0NBcTBIZlJhY28zM1paWmRkR3ZmMVBjK0Y3bnJ0b0Zmcll2VFAxQ2tpNjJ4TnRzdGFJdlpmbHRMdHYyUmY3TWJ2dUUzM2JyOGZDdWE2SWxzY0g5R21ieHlvVmo5KytQRGh4NXMxdFlPRVZoL0NlUk9FYndnZ2dFQzdCYnJ4QjcvZFpXWjlDQ0NBUUZrRjdFTi9QTEI3OTg3K0tIcEFIOTEzK3cvVTg4Tmx1K3ZpQWcxenR5SHQ3cThWY3YrcDMvamV2ZjFwNy9TT1BidXZEK0x3QnZVSVhtZVBOYS9kYmplN0ZkUnRXN1kwQTQ5dVdmaFkyTHMrcFF4MHQ5TEdiWHJzdGczT2ZhTldxNTMxcjByK3NmZEpLMjk2QU1KQ093c0Npd1hzZDlQMkZmdGFlR0JIdnhPN2poL2ZHMGZSMVlGQ3VmWWt1ekxCcFphLzlmdXIveTJVMjRSdyt0NjlYdkxXOGx0NUxYVDMrUU5aTGo3cXd1RERybi9ESDB3OS9QQXAvMFROZlJHTUJEWVJKQXNDQ0NDQVFJY0Y3STJFQlFFRUVFQWdId0xwMzJ5M1kzandKZ1hMNi9YaDNqNVlkenZ3em1zMXowVmZJcVRidWJVK3pPNFlIdjRuU2lIdlVCNTV2cjFRUFhNMmtWemF3emkvcnU3Y3NxQnRnZDE2MTgxemJySTVsY3NlZTBpdWQyaUV3czE2enBlbnhzZkhGaFhMck8xMUMwUFlvaWZ4WXlrRTBuM1k5cHNGdmVRN2g0ZDNheDk2Z1VhU1hLZmNmYlVlZjdyQ3IvODkxWDVtT00xaDVINGZ0UDNKMXRYdFpXR1B1WE1LNCtFZjlNM01mR2p1aWdqNzlpbVlqMWpkZktHN1hVQzJod0FDQ0pSUklQMndWOGE2VTJjRUVFQWdqd0xwZWVnZjBCRHp0L2J5UFBRVVQra2tPUis5dFNkOS9xQ0JmYkMzQUJQc0hCcjZCZlhNS2FpSGUzMnZZVytEK256eGs0TWMxbnU1cUhjOU9LR2lqeWlPMytZYTdyYjFRWEQvK1BqNG1mU0YrdTREdnI1Yi9leUxFQ09FQWkrdHZlUVdXdjErYmZYZHZYdjN4c2ZEOEZuYXQxK2l2ZUtsT3JqelBOM2VybjFLejBwN3lYV0ZBMXQ2ZDNES2IxNy9MQXptY2F6aDYrRW40amorN2VQajQ2UE5KekdVUGRYaU93SUlJTkJsQVFKNmw4SFpIQUlJSUxCR0FSL1F0dzhPL2x3VWhaL3RlUTk2c3pKS0trdUZkQXMwRmxwOW1mMVQ3VEp4aiszK2w1cUErczBLS2orb25uZmQ3VHB4RFhXL3VSWCtrNFRzcFh2WGJWVVBLWHg5U1plOHVyVlJuYjN6eEdGL0hlaldUZEM3M3FwUmpOdTJEOXVYN1JzTGVza3Z1Znp5SzZwOWZTL1E3bks5SG42UkhuOWFNa1M4R2NqdCtmUDdrcTJqOTUrNWJDaTl2MFJocEZQZjljc1hCbjhTek1idm4zemtFWnVYd1JiN1hiWGZXUTQybVFZTEFnZ2cwQU9CM3I5WjlLRFNiQklCQkJESXNZQVB2Zjc2eUlHN1gvWFlxQzhMRHozL2U2NUNORU42L0tlYU9PNDFUV05mWGwrKy9ScUtmOERPdFEyQ1hidDJiWTdYclh1RFN2MXYxTk80dXpuczE0SzZoVng3VFJZV0pTMExaYXJaRTNyWG5hNEJIZDZyaWI1dXFRVFI3WTNUcCsrZm1wcEt6dGROU203dFlYV3h0ckV2QW84UU1yNVltN1YrSlQzZXpVSnYzNzU5UzJYVHBxc2F6bDJySFhTL2RvNTkybmNITXRwTDNrcWQ3TWM2S3FieVJyWXphby84eTdBU3YzZml5UGk5elNjU3pGdkZ1STBBQWdqMFVLRG5IK2g2V0hjMmpRQUNDT1JSd1A1dXUwQVRUKzA0ZVhKRUkyaWZrWlZlZEY4dVhRWk92WWg5NnB6N3BDYU9lMjBUT0EzcDltTVl0QVIxRFEzZWVUNE0zK2pDMEM0ZGQ0a1A2anF2WGFFbjdZMXVycUxuMzVLUWJUMmlsc2g4TDZTYVFqZDlSMlFZSE5KRFgxVEwzRktKb2pzZkd4djc3cUlTbTBIcVFGaGZoTlBqSDlOOTdRazl4M1lnckJIR0x3NWRlSjNDN1F2VitGZnF1MzREbTczazg1ZEFzOTlMYTEvN25xVkZ2ZmdxbEs2NFlJVlNxVytLZytpM2pvK04zZEVzcEw5ZnR4ZU1EbWcreGpjRUVFQUFnUjRJWk8yTnBBY0ViQklCQkJESW5ZQjlxRzdvY21aL29nL2VyODdDZWVnTEJPY25qcnRRU0xlbmg4RytmVlZOUU9Wbmh0YVEvU0hsbmpmci9sOVR3TitRNGFDZVZqWHBsZlRwSjZ6NnpPNkRtMlczMk01VGZ5QjB3YzM2Zmx0ajNicDdqeDg2ZERKOVlmTzc5VmhhNkcvOVd2UVVmdXlBZ0gzdVNjTzByWDVCTC9uV1BYdTJWWUxaNXltUTcxZkxYS2ZIZFY1NXRORmU0WS9OMlBFWk80QmtkK2dnVFhOZHRwNnNMWDU0dlg2WGJEL1Q0cjZvT3IzM1dLMzJ1ZVRudVlNSkJQTW1DTjhRUUFDQnJBallteFFMQWdnZ2dFQytCT3hEOTZ3Qytoc1YwRCtjdVlDdU5LQVEwd2dybFdvUXUwOU0xR3F2YS9LbVBjaXQycEdDZWlVTjZuN29mdWh1MEJwK1NlR2lvcUR1MTZVQTNBd2FyUy9OekcwTDJjbk04SXQ3MTVOQWQwVFovY3M2ZC8wV3VYeGhvbDcvOXFLU200dDkyWG9JVEl0dzJ2QmpHc2p0KytKZThuRDduajFQajF6amFqWFZTL1g0VDZnSmh4ZjFraXVRcTJuOG5YUEJ0ZzNGNnNncWt0bmhGY3l0dUpyNDdmNUtGTHp2MkdqOUw1cGJTL2UxQlFjbU9sSVNWb29BQWdnZ3NDb0JBdnFxMkhnUkFnZ2cwRk1CMzRPK2E4L3VGOGR4ZUVlekpCYnVzdlEzZlNVaDNhcXdJRGhjTWpoNFZUVUtibEJvZXFVRkRmVmVLbmdvWEdXNzE3TFpGQ3FwbFZXbFZxaXJXTEN6T3ZnbGpzK3FvUjVRVXgzUXNQN2JadUo0WkxwZW4weGYyUHh1QnlPc1BWdS9GajJGSHk4aVlOajJaZnVVTFF2QzZHVS9kTm1samNlclA2NUhyMU1EdlVTUFAxUHQwMjlQYlBhU0p3ZUYxSEJhaTYwalM3OVhWc3lsRmp2dzBGQ1IrMnhmMDJrWEQydi9ldC9VMk5pbmRMODlab3Mvc0pmYzVGOEVFRUFBZ2F3SzVPRk5KNnQybEFzQkJCRG9sWUNGaG5qejVaZnZXbGV0M3EvNHNGdkp3bnBlTGJobmFWbHBTTGV5V3gzc3ZjbUhxa3YzN0g1UkhFZnYxRDAvWlE4cVFLVTl6Rm1ycXhWdnFjVkNkck4zWGJlZU9ObGNUZmZlWmNQaDQwcmx6cW5SVVp0Tk93MVV1amwzNE1MV2s5YmQ3bWRaS0pBR2N2dHVUdWFWTEpxdllkZUpFMDl2VklMOWNyNU9qZkI4UGVseXk5OTJES1VaeXJXLzZXZUw1SW01ZmMvRFl2VzAzNVUralRoUk1JL3JxdEtONjUzN1R5MlhCTFJndnRBa0R6V2pqQWdnZ0VCSkJmTHlCbFRTNXFIYUNDQ0F3SklDNmQ5dXQyTjQ4Q1psaXV2VlkyYVhUN0lQNGxsYlZoUFNyUTVwQVBlaGRQdnc3cGRIemdkMTYvRzBJR0lUeVpsRCtqeTdPdytMUEpidVhWZFFQSzhLZkYxUE9GRFJjUGpINC9pZTZmSHhpVVdWU3R2WVFyeUZzL2tndXVpSkJmL1IydDYrN0dDVkdTdzRlTEY5OSs3aElJcCtYTmNTdTA1emwxK2pGUDZqZHNxRW51Y245Yk4vbTYreDE5dFgranVsbTdsWUZnUnpqV1UvRm9mQlIrSkszMGRPSEQ1OHd0ZGd2LzRlSENDWTU2STFLU1FDQ0NEUUlwQzNONlNXb25NVEFRUVFLTFdBQlRVN0QvMERPZy85clJrOEQ3MjFjZVpDK2tWbWQyOTlmdXR0cTZlRktmc0t0ZzhOL2F6NkNkV2pIajdIZm00RzlUUmsyVjE1V2l4azJkQjlmZGYvaTN2WGcyQmM5MzlWNTY1cjV1M2dDOGRydFcvNDU4L1gwTjdETFhRbTYwbSt6ejlhdkZ0cElMZnZDNGF0QjFkY3NYNzd6TXhWT21helgxSDdXZ1h5NStuMjlndjBrcWVCUEkrZmdmenZrdDlYa2g3ejB4cW0vNGRScGZLaGlTTkhIdkZObmdUenVkK1o0dTBHMUFnQkJCQW90a0FlMzV5SzNTTFVEZ0VFRUZpZWdBL29tdjM4NTZJby9HeHo2SGVXZTVQWEV0Sk54TmMzcGRteFovQ1hGVXZmcGhtMmY2dzVSRGxyMTFCUGk3cVM3Mm5RdG5CbE04UGI0bDl2QnlKMFM3M3I0UjFoR044U1ZkZDk1Ykh2ZmUvb29wV2JrUzMyZWx1WGZlVjVzY3FuWWRycXNxQ1gvSkxMTDcraTJ0ZjNBZzFJZUpscStrSTkvalFiNWowM2JEMXhzTmVrQjNEeS9KbG5ZVEIzVHZ1NyswUTFySHp3Nk9qb0lkVXhDT2d4OXd6OGd3QUNDT1JkSU05dlZubTNwL3dJSUlEQVdnUXNkTVNhOWZ5cDZvTFZwR1BCUm4xWmlNbnkzL1c1a0w2TTJkMVZsU2NzVmpjN0NPRjdUNjlRcituMDdPeS9WTFhmckdDMlJ5SFd3bGtXcjZIK2hJb3M0NDRrWUNmRDRaL1l1KzdjWTFySDNTNE1ibzBpZC92RXpxZDhQWjBKdjdudTFNcldrd2IyWld5MjUwOUp5MjBGV2RCTHZuMzc5aTJWVFp1dWFqaDNyWGIrNjFUM3EvVGtMUzI5NUVtSXRWK0IrY25kYkgzNVhwd2NORG1pRGtacHhMNDFaZmhwRjBYdjFYd0ZCNXNWV3pES0pOK1ZwZlFJSUlBQUF2bC80NklORVVBQWdYSUsyTjl2QzEvVm5VT0RJd29wejhwQkw3cTFsSlY1Vm9HNkw0Z2JINXVvamYrYWZyYTYySmVsaitVdFNXK2hEM0RicnJ4eWEzVHUzQnZVMmZ4dmRkN3hMaC9VZzZBSVBlcXRGbW5RTmlNZHBGQmFzOTUxL2EvNjZyN1FKcGM3b0s5YnRCL2NNMVd2MTNTN2RiRURHNm14cmN1K3NyQlltZXhnazMyM01pM29KZDg1T1BnamNlUmVyR3Q0WDZ0bnZGaFB1OExYTzUzY3paNXZReWlVWHZWYSt5cktvb01OK24yUWl1cGJhVGJXMytpKzkwN1dhbmMzSzBrd0wwcHJVdzhFRUVDZ1JjRGVFRmtRUUFBQkJQSXBZS0dyc1dObzhMOG84TDRtNCtlaHR3clA5YVRyblBUZlZ1QjRteDYwY0xYUzRCanFHdXJWdE9mNHNzc3V1M1Mydi85TlNxeS9MbytCbHFCdVFhWkk3M2VKMDRWNzF5YzFjZUE5ZXRKdENuZTNUcXhiOS9YZzRZZlB0VFNBV2RpK1krdXh3Ry9mdTdtazI3ZHRMdWdsM3pJMHRMMHZpcDhieE5GTDlkaTFLdG96MUphYjdJbk5VeG1LMlV0dUZaeGYvRUVLQytaMmwrcDlpMXJvZlpQMStpM05wL2o3ZFh2QndZem1ZM3hEQUFFRUVNaTVRSkUrc09TOEtTZytBZ2dnc0dJQkM1NnpPNGFILzVVNlUzOC9Sd0hkS21vOWhJMndFbFVWMGorZ2tQNTIzWmYyZ0M2L0o5M1daT0Y3dndMbmdTVHNYZktVcC94QXBScTlWWk9yL1F2MU02OHYyTkQzcE1ZTC8wMkRkck4zWGZPVys5NTF1eDUyYkk4OXBNQitoM3FpYjNLejdpdkh4OGRIRjc3Y2gzWDdQSkN1cDkyQjNkclYxbTlmVnNiVzlxMXNHeHJhV3duZEM5VVBmcjJlOGdJVmZiZTZqUzJaTmtPNUJkRkM5cEtMWXNIaVJ3UG9nSVQ5WGx1TnZ4Skc4WHNtUnNmL3R2bXMxSkZndm9DTkh4QkFBSUZpQ2RpYkpRc0NDQ0NBUUQ0RnJDZXRzVzMzN2hkcG9yZzdtMVd3Y0pXWHYrMFcwbU9GOUlwQyt2c1YwbTlRMlMyRVdCMVdFeEx0dGZibGUyVzM3OW56OU5BMTNxWTEvWkpDVHhKV2RWQkFPajRBNlhsRlhCSzdDL2F1QjhlRFVEUERCOEh0T3AzNTFvMWhlSCt0Vmp1N0NNSjhiRDBXcEZmVERyYTZ0QzNzOVFzQzVlV1hYNzVydGxMNUNaMURmcjJDdUlhdEI4L1NBWVUrZTFHemw5eXVHNjl0SzZYYmY4bituSmQ5MnFxeDBpV3ByNEs1SFZqUjc4STNOQkhnZXlmR3hqL1RYRkZxYVk2cmJZK1Zsb25uSTRBQUFnajBTS0RJYjNnOUltV3pDQ0NBUU5jRTdJTjdQTEI3OTg3K0tMeGZlV1pRd2NZK3hLZERZTHRXa0RWczZFSWgzVmJaMnRPNmtrMmtnY1lIOVoxNzl1eHpjZU1HK2Z5c3Zla3BCTnFsemV6OFhuTXErdnRnR3JUTjB1cmIycnV1SDRQdktBTi9RVGEzVktMb3JxTkhqbnpQN214WlVxTjBQUmNLaUdadWx2WmwyNXB2dTZjK2RkM09tVE43WXhlK0pJcUQ2N1dDNXl1SVhtcjVXNDFoN1dHeFUyMmw3OFU3bDF3VUYxek15SDVmKyt3QWtpWk8vSzRPbnR3NE1WYi9XUE4rZTZFZExQSDdzZjNBZ2dBQ0NDQlFmSUdpZnpBcGZndFNRd1FRS0xOQStqZmM3UmdlL0x5QzFzdlUrMll6UHVldGgvaENJZDNDb0gydGRrbkRaUkxVaDRhdWNhRjdsNXl1dHhVcUdLWTl1L2E4TWl5SjUzenZ1bVlHdDE3cVpsQU9nbFBTdms5R3QxVEN5bTNCMmJQM0h6dDI3UHVMWU5KOXkreHMvN05nYnV0TkxYVlQxNnNmSEJ6U3Q1L1VFNjdWSVlGcmhQMmpDcUhldVRrM1FOSnJiTnVmWDQrOXRBeUxlZGsrNllPNWZtY2ZFY0tId25Qbi9xakYyNXpOZEMzN3YxN09nZ0FDQ0NDUU53RjdZMlJCQUFFRUVNaXZnSDJRbjkweHRQdDlZVlI1ZTg3T1EyOVZ2MUJJdCtmTTk4YTJ2bUw1dHkwWVd0RHg2OUdsNmY2aDB1RTdsUTN0MnRrMjlOMHV6V2J2aDJVSjZsYnRkR2tOeWhiWXJSZmJobG5idDBQcTNQNml3clgxcnQvNTJOallkOU1YTGY2K2UvZnVqWS9yU2dKNnRRWHkvWHFOOVpKdm13di92cGRjQjQ5c0tWY3ZlU3ZWb21BZUg5ZlJrZDg3NTl4SHB1djFTZjlFcm1YZTZzVnRCQkJBb0pRQ0JQUlNOanVWUmdDQkFnbjRnTDU5YU9obm96RDRiODFlNGJ3R3pRdUZkQXMyN2VoSk5Dc0w2VWxRSDk3OUt1ZkNHM1JwdG1mN1lkWkpVRStIeHhkb0YxbFdWUkxqbHQ1MUJXbGJKSzltY1c1YU54L1FrMjRQNCtDVytPelprWGpkdW0zVlN1VkY2bkYvbVZySERuYjhpQitxblR6Zk5wcGVBczArYTZSRDRPMytNaTUyMmI5bWozbXNjLzdELzZTZlA2aDVGK29lWTkrK1BsMk53SHJNMTNvd3lxK09meEJBQUFFRThpdEFRTTl2MjFGeUJCQkF3QVFzK01TWERnLy9VTVBGRCtpMlhaTEt3bFplLzc1ZktLU3JTbTBMTC82Z2hxMVFTMFU5NnIraWJ1UzNLVnorc1BVY3EvdllldFRMR3RRVGxlVGZwWHZYazk3d0l6TGFxZ0IvaVg5cUdzcmRYQys1SFNUSzZ6N1lhckNXMjNaa1E1TVNoaFh0VzZHTjFGQ1ArUjhMNWYzSGFyV0hteXRlY05Cb0xSdmp0UWdnZ0FBQ3hSRElheTlMTWZTcEJRSUlJTkFtZ2RPblRuMS8wNVl0UDYvQWRKbFdhYjF3RmpEenVDakQ2TC9ZMmV6dUw5a3dzR1g5MlZPbmJsWkYyaG4yek1mV1orR29jZWJVcWZ1MmJOajRTUmVHeDNUdk04Tks1UklGSzN2Y2VqM0wzUE9ybHZBSEtzekNEcHlvUnp4TzdDeVlPN2RlN1pUZWx4d1VzbXQzejc5R0x5dnBZcFBlZVQwNzc5N0dJYmcvcitocUFzZnE5WTlwZjV1U2l1MTd0bkNlZWVMQXZ3Z2dnQUFDVFFFQ09yc0NBZ2dna0g4Qisxcyt1MkhyRmwxRE9ucDJFQ3RFSlNFcHJ6VzdVRWh2OTBHSEpHenVDL3BPZitmMDQyZW1wKzlhdDMzSEo2TkcvTGdTNlRQVTZ6bEFVUGU3a0FWMGE1T29KWHlibmQyYjNsZm1BeG1ld3YrVFhNYlBoVkZZdFZ5dVV3UCtYZ2MyZm1XeVZ2Ly9UazlQSDlWekNPYnpXdHhDQUFFRUVGaENnSUMrQkFwM0lZQUFBamtUc0wvbDhjYXRsd3lxcSs0ZktsVG1QYUFiZnpPa3h3M3JTZDg0c0NWVXorTnR1ci85NzF1UE5FY2M3QXVxajMvcnhCbHQ1L2FOMjdiL2FaQk04djRzQmZVTlBxamI4TzE4SC9ndzEzWXRTV2h2MTlyeXZ4Nk5KQWdzbU50RWU1RnUzKzZpK05lbXhzYmZmWFo2dXFicTJYNXJCekhvTWM5L1cxTURCQkJBb0tNQzdmK2cwOUhpc25JRUVFQUFnU1VFL0JEa0RaczM5K214MXpaRFpKN1BRMCtyYUlPRTArSHUxMjdZUEhCZVllY0xlckFUNzEwdVNJSjZHR2dtN1RNUG5EeDE1dFQwNTdkY3N1M1BkVzcvZWhYajJRcnFmUXJxNlhuRkJOUzBsY3I5M1NiQ2k3VnZWQzJZNjVkdVJPSDgxelg1Mjl2UG5wdytKQm9MNWJhL0Vzekx2WjlRZXdRUVFHRFpBcDM0a0xQc2pmTkVCQkJBQUlHMkNQaUFYaDBZT0Z1SndsOVVxTjJpdGRvUVpBc0hlVitzSjkxbUVuZnFTYisrd3lFOXNUbzhaMWM1ZmZMazVObFQwMyszZnV2V3Y0cWMyNlluUEZOaExIRk5oak1Yd1RqdiswZ3Z5bThUNkRWMEJZQ3E3UTg2YXZNdDdUVnYwVkQyZjZVNUV4NVVnV3l2dGVIczludVluQTZnR3l3SUlJQUFBZ2c4bVFBQi9jbUVlQndCQkJESWgwQjRmbnI2ek1hdFcvNkJFdTBQcVJkUHc5d0xFZEJOMzhKT2QwTzZUWW8yZjVDajh2aXBVNDlxNlB0ZjZqU0N6Mm5Dcjh0MUVPUnB6YUhNeWFXeGtzTUlTVGw5WWZtbm9BSVd0dTE2N2xWTkpxaURNKzZ3ZHM5M1RhNWIvMytkUFhKa3BGbG5nbmtUZ204SUlJQUFBaXNYSUtDdjNJeFhJSUFBQWxrVThLRmc0NWFCcDZ0SDc4Vit0dTFpblMvdCs5SG5ldEszYXJqN3lZNE5kMjl0M3pTbzIvdGxwTjdSbW9hK2YyYmp3TUFkK25tUHpqbStzaG5VN1lDSVBaY2U5VmE5NHR5MnRrMkNlUlJWTlB2Yll6clo0ZDF1L1liWFRoMCtmR2N3TmRVSWRHcEVjSGp1d0U1eGFrNU5FRUFBQVFTNktrQkE3eW8zRzBNQUFRUTZKbURCTU42d1plc2xTckt2VkV4d0JlcEJUOUhtZTlMRExnMTNUN2VjOUtoYk1RcGZmQUFBTjg5SlJFRlVTTFAzelZEbndoL1MwUGMvM3JoMTgzMGFmSCtsZ3Zwd0V0VDlSSElFOVhtM3ZOOUtnN2xkeTl6YS9xUjJoZDlkRjd2WFBGYXZmLzdzMU5TNVlOKyt2dUNSUjV6Q09VUFo4OTdhbEI4QkJCRElnQUFCUFFPTlFCRVFRQUNCTmdtNGdhMWJ6OGZPYWFLNFlKM1dhZUdpYU1PdUYvYWtkM2JpdUtXYXhVeHRzUkVMZ1hyVEgxU3Yrc2MzYnQzNmJUM3dOSVc0eTNXM1p2SDJRZDJlVWpSL3ExTTVscVFOZlRCWGovazU5WmgvVkZjd2ZNMVVmZnl2cG5VNlNiUEhQRkE0dDlNY1dCQkFBQUVFRUdpTEFCOGMyc0xJU2hCQUFJSE1DRlIyRGczZW8zT2tuNk41MVN3NEZQVkFyQVZsWGRaS0UzUTE0bmRNMXV2dmE5YlZlakhURUsyYkhWOHNxTnZRWjF1cU80Y0hYNmRNL2hiNVgrbGlYOFFaM1c5dHdOQjNFOHIrWW1OUEdqcXNZcGRMcyt1WTIwaVVQdzRhN2dPVDQrTTIrWnN0L25RU2ZhZkgzSFB3RHdJSUlJQkFPd1dLK3NHdG5VYXNDd0VFRU1pTGdQMU5iMnpZdXVVRk92Mzhxa0RkZlFxS1JRMkd2ZTVKVC9jSkMybiswbXdhNGp5ckh2V3ZEbXpZOEFsWHFSelgvVGJqKzFiMXBsdFpMYWhiVzNCZ1hBaVpYSndPdE5pRi9YUXRjLzJyNi91NXo0WVY5MHVUbytNZjFTa05FeXF6QlhOclB5Nlpsc2tHcEZBSUlJQkFNUVFJNk1Wb1IycUJBQUlJbUlEOVRZODEwL2hUbEM1K1dqMkJSVHdQdmJXbGs3RGJ6VXV3dFc2OTlYWnkvckdWcDNyNjlPbHptdkg5UzdyczNhZXFHaHF0c0dmWFVOOUVVRzhGeTlSdFhjdmNSbU9FZGkzelVEZHZpb0xvVnlmR2FyOXo1dVQwSXlxcC9WN1p3UldDZWFhYWpjSWdnQUFDeFJRZ29CZXpYYWtWQWdpVVU4QUNvdHN3TUtDZVB2YzY5ZlZacUxCeDFrbVFMYWFKci9QYzdPNERXODdwblBBN1ZOVjBHSEszYTIwOTZwRW1EcXVlZitpaDc1K1pucjV0dytiTm45WUJFeXZuVlFycTYzeFFUODV2THVyb2htNmJyM1o3YVRDMzRleHFDM2RuNk1MWFQ5VHEvMTRIV0VhMVVvTDVhbVY1SFFJSUlJREFxZ1dLL0tGdDFTaThFQUVFRU1pcGdBVytlR0J3Y0VkL0dOeW5udHRoaGNFaW40ZmUya3p6NTZTN3hxOVBqbzMvZ1I2MGtON0xYazlyRC92eTU2anZHaHI2WVJYeWJlcWgvUlVGOVlxTGRaSzZ0VStvSWRYRlBvaWk2bVZxVVREWHVlVlJaRDNtdWhuZnE1TVFQakExV3YrTFppbnRzNUcxU1RxM1FLWUtUMkVRUUFBQkJJb3RRRUF2ZHZ0U093UVFLSmRBK2pmZDdSZ2ErbC9LSHEvUVJHVjJYcTBGMVRJcy9uenc1akRsTjB5TzFmOUlsYmE2OXpwb3BRRThDZXFEZzFlNUtMaEJFZkdWU1VCMHNjWTUySFhVeTlKT3Zkb1g1U3pyTkpqSDhjTlJHTDN2Mk5qWXAxU2daQzZCSkpqMzhxQk9yMnpZTGdJSUlJQkFSZ1RzeUQ0TEFnZ2dnRUF4Qkt3WDJjS2crbVBkVjlVenF4dDJWMmtXZTA5clRyd2QvcUZtVkgrOWZyWlFiTUUzUFhpaG0xMWZMUEJaT2F4dEtzZnE5ZnNueHVxdnFrVHV4U3J0Mzl2d2Fqdi9XWS9aOCt5THBiMENGcjc5SkgxaHBWS1YrWmdHTDd4cG9OcjNUSVh6VCtxeE9OanY5eEg3WmJGMkt0VXZqZXJMZ2dBQ0NDQ1FJWUhrZzF5R0NrUlJFRUFBQVFUV0pHQWhOZDY0WmV0V0pkSlg2YmFGalRJZGpMVWdiaUUzVXZEOVJ4dTNEaHpWek9wMzYyY0x3QmJVZXJsWVc5aVh2ZmRHcDA5T0gxSFpQcjErNjlZdmEyYXlIMUI1ZjlEQ3VwNWhsL2txVzd0MW9sM21UaUd3VXdwMHpiUUozZkcrdUgvZHJ4dy9jdVQyRXlkT3pBYjdncjdnRVZrZjd2bSswWW42czA0RUVFQUFnUndLOUxKSElZZGNGQmtCQkJESXZJQVA2SmZ0MlhQbGJOeDRRS1hkckM4TGUyWDdlMjloM0VLNlZmLy9Wby8xUjNVajdhVTJqeXdzNlVFRGYrQkFweVg4TTQxOGVLZm1rM3V1TDJBYzYvUUVYd0VPcHErc3RkSmdYbFV3RDNTdS83UXVaL0RSU3JYNnU4Y09IMzYwdWFxczdRc3JxeUhQUmdBQkJCQW9yRURaUHJBVnRpR3BHQUlJSUxCSW9MSnphTkNHdVYrbE1kL1dvMXpHa09mcnZVUkk5K2VDTC9McTFZLzJQbXh0WTJYMXVYekhuc0ZmVW4vdURRcVhQMnB6bWVsNjloYlU3Y0JMbVVaQ3FMcXJXSkxaOFpOZzdweUd0YnVQVjhQS2pVZEhSdy81dFZtUCtZaTM3dlZvaWxWVWpwY2dnQUFDQ0pSQm9Jd2YyTXJRcnRRUkFRVEtMZUFEMzRhdFczNVN1ZTRxQlR4TlFPWURYdGxVL0dnQ1ZWb1ovUW5EM2JQU2kyNXRrb1pGMzZOKzl1VDBBMmVIOTN4c3crT1BQNlllOWFlSFVXVzd6cHUySUcvblVkdDNEcTRMb1dWUmo3ay9MU0RRT2VZVm00VkFQMy9HUmRFdlRvM1ZQblg2NU1uamVxN1pCaHJPUG5jZ3hQL01Qd2dnZ0FBQ0NHUk1nSUNlc1FhaE9BZ2dnRUFiQk94dmU3eHg2NWJkQ3FZL3JiQmlNNFNYdGZmVndxeUZzaXllazc2NHFTMm9XM21yd2JGak03cWUrOTBiTHIzc1B3Y3pzNmQwMzdQVm96N1FFdFN0UFFucXpVbjFOTWxleFE3RHlPUnZkQ3pxTlpPMTJ1K2ZQWG55bUxkTW5Bam13bUJCQUFFRUVNaStBQUU5KzIxRUNSRkFBSUdWQ2xoUWNSc0d0cWpYMEwxV01jNysxbHVQY1ZrRFhWNTYwdE4yVG9MNnZuMTladzhlUEt1Z2Z1ZldqWnMrMVlqQ0dZVlFDK29iQ2VvNjZLSitjZ3ZtTmp4Q25lYTNhS0s5MTAzVzZ1OC9jK3JVdUNCdG43ZDJKNWluZXhYZkVVQUFBUVJ5SVZEV0QydTVhQndLaVFBQ0NLeFN3QWZTZ2NIQkhmMWhlTDlpK1pBQ25RV1ZzaCtVOVFaSlIrdUNpZU95ZEU3NjRpYVBOTk40UmVkTjIvRDJZTnZ1M1hzMEZPQnQ2aXYrRjdxZTkzcE5nS1pETDNhdGUzK1p0c1d2TGVMUGFURDNROVlWekw4U1J1NDlFNlBqZjl1c2JMcVBXMXV6SUlBQUFnZ2drRHVCOUkwc2R3V253QWdnZ0FBQ0Z4VUl6MDlQbjltMFpjdkxGZWFlV3ZKaDdpblV3cDcwTFZ2cTZtMzlhcUNlNnVDUlI5THp3TlBuWnVXNzAzblRWallyZStYeDZlbmpaNmVuUDdkaDg4QmY2c0RMZ081N1Z2Tzg2MWh0YkpkbnN3UHZSVHo0YmdiK1FJUkdFRVE2eS96cllSaS9hYkkyL3FZeko2ZS8zYXl6aFhaNnpJWEFnZ0FDQ0NDUVh3RUNlbjdianBJamdBQUNGeE93c0JKdjJEcndZem9uOXlWMnJTbjFzbHJJSy90aTRkVkNYQ1NQbjltOGRmT0RaeDc4OXRlYTE4UE9ha2kzTnJOVEZLeDg5cjVkVVVoLzdPeXA2Yi9lZE1ubXYzZHhzRk4xZWJwR0JsajdwaE9tRmFXdHJkNXBNSzhvbUIvU2dQWWJKc2ZxcjljMTVMK214Mnl4ZlQzMThYZndEd0lJSUlBQUFua1ZLTW9iZUY3OUtUY0NDQ0RRV1FFWGptZ0l0UHBVL1FSYW5kMVdmdFp1SVZkRHBXMzJ2T2pQZHUwWmZLVWZRbTZYNE1yK1lnY1hiRWkrRCtvVG80K002THpybjlYUmhwY29tZDlrSVYzL1ZYMXZlbklnSXZzMVdycUVkakRDejFxdkh2TSt0VlZkQjVuZXZENk9uemt4V3YrUGVtdzIyTitjbVQzeHNJRE9nZ0FDQ0NDQVFPNEZpamdNTHZlTlFnVVFRQUNCTmdqWUFkaDQ2NTQ5VjFianhnTzZ2VmxmRm1MNHV5K0U1bUpoVjdOLzJ4VHZ3YXVPamRiL3d2ZWtOOC8zVHArVThlL3BTRGlyUzdCdGFPaW5vc0M5UzBIOWhmYXpCazVZNzdPMWVmbzh1enZMaSsyamRnQ2lUOEhjeW45Y28vWS9mTTY1MzUrdTF5ZDl3Wk5ybWR0ekNPVWVoSDhRUUFBQkJJb2t3QWUxSXJVbWRVRUFBUVNlS0JEdEdCNjhSeUhudVpwUUt3bWtUM3hPbWU5cGhuUmRoeTUwZVEzcDFuNEx6ci9lUHJ6N1ZaRUwzNmFKNUo1amx3VVBrcUJ1QjIyeU9uSnVjVEEvbzhNSzZpbVBicHdZRzdOWjJRTS9WOERJQ01IY1kvQVBBZ2dnZ0VCUkJmSnlSTDJvL3RRTEFRUVE2S1NBL1kyMzY2SC9wRVkrUDBjaGpmUFFuNmh0Z2RWQ2VxU0UrUE9iTDlueXJUTVBUbjg5Qitla0w2NkpEUW0zZys3K2ZHeWRuLzRObmFQOThmVURXMGJWRC8xam1raHVsMzg4bWZIZFhwdWRBL1JKbVNycU1hL1lqUFM2WE5vbk5XVC8xUk8xK21jMGlkOTBjeEsvUUJQNStWRUNWbmdXQkJCQUFBRUVpaXBBUUM5cXkxSXZCQkJBSUJuV0hHOGEySEs1dW9mL2tRWUVPOFd5clBhZzlySzlXa0o2cUpBK2tOZVFib2JKUkhkMmZ2YmhvS0ZycU4rM2ZjdldqNTkzd2JFd2NNOVFVTDlFSWRqQ3VUKy9XOTk3RmRUVHlld0NIOHl0SUxIN3N6Z01YejFWcTMxY3dYeEtkOW5CaGpTWU01emRZL0FQQWdnZ2dFRFJCWHIxeGx4MFYrcUhBQUlJWkVIQURzSTJkZ3dOL2JoTzE3MUx0KzF2dmdVZC92WUxZWW1sT2R3OTErZWt0MVlyMUVpQWFub045VXV1dU9LU2FIYjJqUXJxYjFRbzN1R3ZvWjRFZFF2QzNkd256RmxueGlkWEZkQVEvTC9US1B6M1R0WHJYMjRXM284QzBHMTZ6SnNnZkVNQUFRUVFLSTlBTjkrUXk2TktUUkZBQUlGc0NGalBzRTBVdDAwVHhkMnZTTFJIdmFkSkNNMUcrYkpZaW1aSXovMDU2YTIyWWJCZms4UWQ4Sk92QlpmKzRLV1h6YzcwLzRhQyt1c1YxQWVhUWIxYkIyNmNKWE1ybklMNUFaMVk4SjdKMGZHYm00Vk5SL1VSekZ0Ymo5c0lJSUFBQXFVU0lLQ1hxcm1wTEFJSWxFd2cvUnZ2ZGc0TmZVNTlwRC9sWXFkWnZadERoMHVHc1lMcU5rTjZTMDk2TXR6YUppakw4eElwcUVkcFVMOU1NL3czWE9PdDZyMytWVldxWDErZER1bnArdTlUQi9wdlRkWnFmOVhFdEFOSjlwVjMzMloxK0lZQUFnZ2dnTURxQmV3TmtRVUJCQkJBb0pnQ0ZvaVNYc2tvdUVjOTZQclI3bUo1RWdGL2FvQlJ4Uzc4YzMrZGRBdVArL2JsNFRycEY2dGEzQXpuOXQ1ZlBUbzZlbWhpclA1Nm5ReitGZCtwN1RvNnBEd0o1MkVZVjRQd2w1dmgzSnh0T0x1ZE4wODRGd0lMQWdnZ2dBQUNCSFQyQVFRUVFLQUVBcG9YN0Y2TktiWXpmL203djd6MmJvWjBwNUFlL0xsZFh6d1lHWmtKOXU2MW51YThMMmtnOXBPdzZSSjgzUnRTN2pTZ3ZsTHgyeFdpSFRFaW1PZDliNkw4Q0NDQUFBSnRGZUNEV2xzNVdSa0NDQ0NRT1FFL3EzYzFpcjZtYzM2blZUcjd1MDgzK3ZLYWFhNG5YWmNxK3g4N0J3ZXZEUTRlUEYrQW52UzA5bWt3VDArRlNPL3Z4UGY1YllTNmtGcXlwTjg3c1QzV2lRQUNDQ0NBUUM0RkNPaTViRFlLalFBQ0NDeGJ3QWYwbzBlT0hORUk5KzgwNStmeTl5MTdEZVYrb3E3TjdYdDVxN280MmVkOVNMZWU5UHdQZDI5dDFXNEU1VzVzbzdWTzNFWUFBUVFRUUNDWEFnVDBYRFliaFVZQUFRUldKR0E5d2JHR3VkdE03bjc2N0JXOXV1eFB0a24xNWtQNlRRVU42V1Z2WmVxUEFBSUlJSUJBSmdRSTZKbG9CZ3FCQUFJSWRGVEFEeS9XeU9KN2txMGtsN25xNkJhTHR2TDVrRjRwY0U5NkoxdHRmb2g3SjdmQ3VoRkFBQUVFRU1pNUFBRTk1dzFJOFJGQUFJRmxDUGpoeFRaUm5LYm9palUxbC9Xb00rUjRHWEFMbmpJZjBtMjRPejNwQzNDZTlBZjJ0eWNsNGdrSUlJQUFBZ2dra3dYaGdBQUNDQ0JRYkFFZmptYUM0R0ZWczVaY2JzMWYycXJZdGU1RTdlWkRPajNwSy9PbEIzMWxYandiQVFRUVFLQ2tBdlNnbDdUaHFUWUNDSlJLd0FKNmVLcFdtOUlsdFE3NnBLU0xYNWRLb0oyVm5RL3BSWms0cmh2aG1mMnRuZnNnNjBJQUFRUVFLS3dBQWIyd1RVdkZFRUFBZ1RrQkMwYzJyRjB4M1gwMTZVRW5MM21QMWY1VHJKRGVqWjJoR3djQlZ0dWF2QTRCQkJCQUFJSE1DQkRRTTlNVUZBUUJCQkRvdklBNnprY0NwendXaHZ6OVh5djN3cERPT2VrWDkrekdRWUNMbDRCSEVVQUFBUVFReUlFQUg5QnkwRWdVRVFFRUVHaURnTC8yZVRYcSs1cHo3dnRhbi8zOUp6U3RGWFkrcENmbnBBOE43US9zT3VsNzkvYXZkZFZkZkgwM2VyZTdzWTB1a3JFcEJCQkFBQUVFT2lOQVFPK01LMnRGQUFFRXNpYmdBL3JSSTBjT3EvZjh3VEM1MHBxL0wyc0Z6VjE1MHBBZWhsV05VUGlmTzRZdmYzNXc4T0Q1SElYMGJoeW82Y1kyY3JmclVHQUVFRUFBQVFRV0N4RFFGNHZ3TXdJSUlGQmNBWDk1dGRBRjkvdnowTldWWHR5cWRybG1QcVM3R2JtdUQxemwxcDNEVDNsZXprSjZwOEhvUWUrME1PdEhBQUVFRUNpRUFBRzlFTTFJSlJCQUFJRmxDYVFoNlo3azJVazMrckpleVpPV0k5QVh4UEdzUXZwbTU2SURoUFFGWkJ3TVdzREJEd2dnZ0FBQ0NDd3RRRUJmMm9WN0VVQUFnU0lLSkNFcERPOTFjUndIb1ovWm5XSHU3V3hwRFhQWEpIeldrNzZKa0w0QU5qMDR0T0JPZmtBQUFRUVFRQUNCaFFJRTlJVWUvSVFBQWdnVVdjQUg5TmxLNVdHRjgxRS96SjJKNGpyUjNtbFBlbDVDZWpmQ016M29uZGpUV0NjQ0NDQ0FRT0VFQ09pRmExSXFoQUFDQ0Z4UXdFSlNlT0x3NFJNNkQvMmdUMldhMWV5Q3orYUIxUXZrcXllOUcvdEFOdzRDckw2OWVDVUNDQ0NBQUFJWkVTQ2daNlFoS0FZQ0NDRFFCUUVMWWpaUm5KYnducVFIdlJ2WkxObGlDZi9OVzA5Nko1dUlIYTJUdXF3YkFRUVFRS0F3QWdUMHdqUWxGVUVBQVFSV0lCREY5K3BjYWVYMGtQZUJGYkN0K0tuNTZrbGZjZlZXOEFKNjBGZUF4Vk1SUUFBQkJNb3J3QWV6OHJZOU5VY0FnWElLK0VuaFpxUDQ2NHJucDBSZzd3UDBibloyWDFpNkozM2Z2cjdPYmpaVGEyY2Z5MVJ6VUJnRUVFQUFnYXdLRU5DejJqS1VDd0VFRU9pTWdBL29KdzQvZWtTci8zYVlYR21ObWR3N1l6Mi8xcVY2MGtkR1pvTHloSFI2ME9mM0JtNGhnQUFDQ0NCd1FRRUMrZ1ZwZUFBQkJCQW9ySUNkaCs0MFVkeDkvangwWjJQZFdib2dzS0FuZmR2UTBMT0M4b1IwOXJFdTdHQnNBZ0VFRUVBZy93SUU5UHkzSVRWQUFBRUVWaXFROW1aK05YbGgwbzIrMHBYdy9GVUlOSHZTTlhKaFV4UzRtM2JzM3YyakpRbnA2VDYzQ2pSZWdnQUNDQ0NBUUhrRUNPamxhV3RxaWdBQ0NLUUNTVzltR043cjRqaldOZEY5ajNyNklOODdMdEFuOTFtRjlFdkRLTHc5QXlHOUcrR1pIdlNPNzFac0FBRUVFRUNnQ0FJRTlDSzBJblZBQUFFRVZpYmd3OUpzcGZLd3d2bG9jcm0xZ1BQUVYyYTR0bWVySnoxMmJrYjJsNGFWOEVDUFEzbzN3bk0zRGdLc3JVMTROUUlJSUlBQUFoa1FJS0Jub0JFb0FnSUlJTkJsQVF0azRZbkRoMC9vUFBTRFBqazVabkx2Y2h2bzJFalFwOVAvWjlRVWwyV2tKNzJUQk4wNENOREo4ck51QkJCQUFBRUV1aUpBUU84S014dEJBQUVFTWlWZ1ljbUd0V3NKNzBsNjBNbFBpVWZYLyszTFVFOTZKeXRQRDNvbmRWazNBZ2dnZ0VCaEJBam9oV2xLS29JQUFnaXNRaUJ5STRGTjRoNkd2QitzZ3E4ZEx5bEpUenBIZ05xeHM3QU9CQkJBQUlIQ0MvQ0JyUEJOVEFVUlFBQ0JKUVg4T2VlelVlTWJTazZuOUF4N1B5QkVMVW5WbFR1WDdrbWZHK25RbFRKMGNpUDBvSGRTbDNVamdBQUNDQlJHZ0lCZW1LYWtJZ2dnZ01DS0JIeEFQM0g0MGNPSzVROXFSbkY3TVJQRnJZaXd2VTllMEpPdWllTzJEUTgvUTF0bzZLc0k3OVVjL0dudjdzTGFFRUFBQVFRS0tsQ0VOLzJDTmczVlFnQUJCRG91NE05RGQ2Rzd6NStIcmhuTE9yNUZOdkJrQWpaeDNEbWRjWENacnBQKyt1YVRPLzFlM1kzZTdXNXM0OGxzZVJ3QkJCQkFBSUhNQzNUNlRUL3pBQlFRQVFRUUtMRkFFcHBjK05YRUlPbEdMN0ZITnFydVhNV09sSVJCcUJuZXU3SjA0OEJNTjdiUkZTdzJnZ0FDQ0NDQVFDY0ZDT2lkMUdYZENDQ0FRTFlGZkdpS0t2RzlMbzRiU29UV284NHc5MnkzV1Y1TFJ3OTZYbHVPY2lPQUFBSUlkRldBZ041VmJqYUdBQUlJWkVyQUIvUkdaZjEzMVZ0N0pMbmNHaFBGWmFXRk5OUzlTS0dXSHZTczdGaVVBd0VFRUVBZzB3SUU5RXczRDRWREFBRUVPaXBnb1NrOGZ1alFTUmU0Yi9vMHFCc2QzU0lyUndBQkJCQkFBQUVFRUxpZ0FBSDlnalE4Z0FBQ0NCUmV3TUs0bnloT1o1L2ZuZlNnazg4TDMrcFVFQUVFRUVBQUFRUXlLMEJBejJ6VFVEQUVFRUNnZXdLaEMwY0NtOFJkMDRkM2I2dHNLU01DM1J4S0gycm9QdnRZUmhxZVlpQ0FBQUlJWkUrQU44bnN0UWtsUWdBQkJMb3A0Q2VGbTJrMERpcWVuOVNHN1gyQmJ2UnV0a0R2dHRYOERCRFdiZlNFem5qditBU0JZUmpPQnJPejMyOVdtZjJzZDIzUGxoRkFBQUVFTWlwQVFNOW93MUFzQkJCQW9Fc0NQcFNkZU9TUkk0cmxEeWxBMldZN0h0UzZWRGMyc3h5QktQN1BObnBDTGQvZndiWS9IMGIrMk05ZlQ5VHIzOVoyN0FmMnMrVzBEODlCQUFFRUVDaVZBQUc5Vk0xTlpSRkFBSUVsQmZ4NTZDNTA5L256MERVR2VjbG5jV2ZSQkJxcVVHVnlkUHptd01WdmJaN2RZRzNmMXVDc0ZWbzRYNmRMK2QxVk9ULzcycUloVWg4RUVFQUFBUVRhS1VCQWI2Y202MElBQVFUeUtlQzd6U003RDkwdlNUZDZQcXRDcVZjb1lDRTltcWlOZjFBQitoMGFRZUVQMXVpK2RvWDBtU2dNKzdYdUF4dUM4THFqUjQrZTFycHRHKzFhdjFiRmdnQUNDQ0NBUUhFRXFzV3BDalZCQUFFRUVGaWxRTkpqWG9sSFhDTnNhS3h6R3FBNGlMdEswSnk5ek5xL01sbXZ2Mi9INEdBUVJ1RjdOWWpDQXJSOXJYb2ZzSjd6Skp5N203WHVWelRYWjU4N1p2WEZnZ0FDQ0NDQUFBSkxDS3o2alhlSmRYRVhBZ2dnZ0VBK0JYeEFiMVRXZnpjTXd0SGtjbXRNRkpmUHBseFZxYTM5TFl6N2tPNWlaejNwNmVlRDFmWjBOM3ZPQ2VlcmFoRmVoQUFDQ0NCUVdvSDBEYmkwQUZRY0FRUVFRTUNIOGZENG9VTW5YZUFPK3ZIdXVvRkxxUVRhRnRLMW92TUsrSDBLK3ZTY2wyb1hvcklJSUlBQUF1MFFJS0MzUTVGMUlJQUFBdmtXc0hEbXp6MVd4K25kU1E4NitUemZUYnFxMHJjanBNOUVVYVJ6emdubnEyb0JYb1FBQWdnZ1VIb0JBbnJwZHdFQUVFQUFnWG1CMExrUlA0bjcvQkRuK1FlNVZRYUJWWWQwdlhCR3M3VmJ6L2xmY2M1NUdYWVY2b2dBQWdnZzBBa0JBbm9uVkZrbkFnZ2drRDhCZjY3eFRLTnhVRVUvcFM5N2Y2QWJQWC90Mkk0U3J6eWtPemVybnZPK29CSC8yV1N0OXM5VUNIOU91NzR6SVZ3N1dvUjFJSUFBQWdpVVJvQ0FYcHFtcHFJSUlJREFSUVY4UUQveHlDTkhGTXUvcVhPSUxaNnZkb0t3aTI2SUIzTWg4R1FoM1I3M1gvcG5KcXhVcWtIc1BqTlJyLytmemRyWktSTjJDVGNXQkJCQUFBRUVFRmlCQUFGOUJWZzhGUUVFRUNpNGdEOFBQUWpkdmMzejBDMkFzWlJYd05yZjk0VGJKZGhhWm5kdkhWMFIrNTV6QytlMTJpODBxUWpuNWQxbnFEa0NDQ0NBd0JvRkNPaHJCT1RsQ0NDQVFJRUVtaE80UnlPQnMyeG0zZWdzSlJkWUtxU0x4RitHVFFNdHdvcUMrNmNKNXlYZlM2ZytBZ2dnZ0VEYkJLcHRXeE1yUWdBQkJCREl1NER2TWE4MEd2ZkZVVGdiaElHOVIxZ1BLZ2R6ODk2eWF5dC9HdEpENjBuZlBqaDRJSWlpZ1RCMkRadFFVUGNkYUs2ZW52TzFPZk5xQkJCQUFBRUUvSWN2R0JCQUFBRUVFREFCSDlEZCtmTVBoK3ZYSFhaaCtGVDFwUHY3NENtOVFMb2ZSRlAxK3BlWDBMQ0RPSnh6dmdRTWR5R0FBQUlJSUxBU0FYcEZWcUxGY3hGQUFJRmlDMWdJQ3ljbUpxWmRxSW5pcks0dUNlM0ZyamExVzRHQVB5ZGR6N2ZSRmRaamJ0OXRWMkZDUVNHd0lJQUFBZ2dnc0ZZQkF2cGFCWGs5QWdnZ1VCd0JDK2dXdW15NXV6bFJYUElUL3lJd0wyQTk1WGI1dFBSNzJycysvd3h1SVlBQUFnZ2dnTUNxQkFqb3EyTGpSUWdnZ0VDeEJWd1FmZFZQRkJmNnljQ0tYVmxxaHdBQ0NDQ0FBQUlJWkVTQWdKNlJocUFZQ0NDQVFFWUVrcUhLamNZM2RmYjVDWlhKM2lmb0ljMUk0MUFNQkJCQUFBRUVFQ2kyQUFHOTJPMUw3UkJBQUlHVkN2aUFQalUrUHFZWFBxVExhRms4NS96aWxTcnlmQVFRUUFBQkJCQkFZQlVDQlBSVm9QRVNCQkJBb09BQ3lYbm9vUnRwbm9kT0QzckJHNXpxSVlBQUFnZ2dnRUEyQkFqbzJXZ0hTb0VBQWdoa1NjQlA0QjRGMFlnL0R6MUo2VmtxSDJWQkFBRUVFRUFBQVFRS0tVQkFMMlN6VWlrRUVFQmdUUUpKajNtamNaOHVnejZyaTJoWmp6ckQzTmRFeW9zUlFBQUJCQkJBQUlFbkZ5Q2dQN2tSejBBQUFRVEtKdUFEK3Jvb2VsQVZmOWlmaDg1RWNXWGJCNmd2QWdnZ2dBQUNDUFJBZ0lEZUEzUTJpUUFDQ0dSY3dIckxxN1ZhN2F4NnovK3JIK0d1cnZTTWw1bmlJWUFBQWdnZ2dBQUN1UmNnb09lK0Nha0FBZ2dnMEJFQlA2UTlicmovb214K1NpRzlxcTBRMGp0Q3pVb1JRQUFCQkJCQUFJRkVnSURPbm9BQUFnZ2dzSlNBNzBVL1BqNCtHcnJnTDhMSXYxM01MdlZFN2tNQUFRUVFRQUFCQkJCb2p3QUJ2VDJPckFVQkJCQW9va0RTWXg0MVB1cml1S0VLOXVtTFh2UWl0alIxUWdBQkJCQkFBSUZNQ0JEUU05RU1GQUlCQkJESXBJRDFva2NUbzQrTUJFSDROMzZ5T09jc3FMTWdnQUFDQ0NDQUFBSUlkRUNBZ040QlZGYUpBQUlJRkVUQWVzdjkrNFF1alA0UjMzVWVocnh2RktSeHFRWUNDQ0NBQUFJSVpFK0FEMXJaYXhOS2hBQUNDR1JKd000N2p5WnF0UU1hM1g2VGV0R2p3SzZOem9JQUFnZ2dnQUFDQ0NEUWRnRUNldHRKV1NFQ0NDQlFPQUgvWHVGQzkwRmZzekNzNkR2bm9oZXVtYWtRQWdnZ2dBQUNDUFJhZ0lEZTZ4Wmcrd2dnZ0VEMkJleTg4M0JxZFB3bXBmTFBxeGM5VkR6blhQVHN0eHNsUkFBQkJCQkFBSUdjQ1JEUWM5WmdGQmNCQkJEb2dZRDFsbHV2ZWVEQytFYS8vVEE1TjkzZjVoOEVFRUFBQVFRUVFBQ0J0Z2dRME52Q3lFb1FRQUNCd2d2NGM5R3RGMTNub0grT2M5RUwzOTVVRUFFRUVFQUFBUVI2SUVCQTd3RTZtMFFBQVFSeUt1RGZNMklYdk50Wm4zb1lWdlV2NTZMbnRERXBOZ0lJSUlBQUFnaGtUNENBbnIwMm9VUUlJSUJBVmdXc0Y3MHlWYTkvV1pkZCswd1k2UzJFNjZKbnRhMG9Gd0lJSUlBQUFnamtVSUNBbnNOR284Z0lJSUJBcndYaUtIcTN3dms1ZXRGNzNSSnNId0VFRUVBQUFRU0tKRUJBTDFKclVoY0VFRUNnOHdJMmUzdDFhblQwbStvKy8wUGZpeDRFWEJlOTgrNXNBUUVFRUVBQUFRUktJRUJBTDBFalUwVUVFRUNnelFLeHJhOXlmdmI5TG80ZjA4bm9mZnJSMzlmbTdiQTZCQkJBQUFFRUVFQ2dWQUlFOUZJMU41VkZBQUVFMmlKZ1lieDY5T2hSQytmdkNTT2RrZTRjQWIwdHRLd0VBUVFRUUFBQkJNb3NRRUF2Yyt0VGR3UVFRR0QxQWpiVVBaaXMxVDZpYkg2dmhycFhOWis3djIvMXErU1ZDQ0NBQUFJSUlJQkF1UVVJNk9WdWYycVBBQUlJckZiQUxxL21MN1BtZ3VnZC9scHJZYUN1ZEM2N3RscFFYb2NBQWdnZ2dBQUNDQkRRMlFjUVFBQUJCRllya0Z4MmJXenMvdytkdit5YXZhY3dZZHhxTlhrZEFnZ2dnQUFDQ0pSZWdJQmUrbDBBQUFRUVFHQk5Bcjd6dkJISGIzZk9uZENhbURCdVRaeThHQUVFRUVBQUFRVEtMRUJBTDNQclUzY0VFRUJnN1FKeHNHOWYzL0h4OGRFd2NQL0JYM2FOQ2VQV3Jzb2FFRUFBQVFRUVFLQ1VBZ1QwVWpZN2xVWUFBUVRhS0RBeTRvZTFUNHpWUDZUTHJ0MlZUQmpuR09yZVJtSldoUUFDQ0NDQUFBTGxFQ0NnbDZPZHFTVUNDQ0RRU1lGMHdqaGRiUzM0dHhycXJxdXZoWDRDdVU1dWxIVWpnQUFDQ0NDQUFBSkZFeUNnRjYxRnFROENDQ0RRR3dIck1hOU8xZXQzaFdGNG94L3F6b1J4dldrSnRvb0FBZ2dnZ0FBQ3VSVWdvT2UyNlNnNEFnZ2drRG1CMkVxMDNnWC9UcWVoZjB0QnZVOFhYV09vZSthYWlRSWhnQUFDQ0NDQVFGWUZDT2haYlJuS2hRQUNDT1JQd0FKNnRWYXJuUTFDOTBaZi9EQ3c5eGsvMDN2K3FrT0pFVUFBQVFRUVFBQ0I3Z29RMEx2cnpkWVFRQUNCb2d2NG9lNlRvK00zdThEOW9ZYTYyL3NNdmVoRmIzWHFod0FDQ0NDQUFBSnRFU0NndDRXUmxTQ0FBQUlJdEFqNG9lN3JHdTR0bXRYOVFZYTZ0OGh3RXdFRUVFQUFBUVFRdUlnQUFmMGlPRHlFQUFJSUlMQXFBVC9VZlh4OC9Fem9namY0OGUxaFVOR2FHT3ErS2s1ZWhBQUNDQ0NBQUFKbEVTQ2dsNldscVNjQ0NDRFFYUUUvMUgyaVhyL05oY0VITmRROTFPWVo2dDdkTm1CckNDQ0FBQUlJSUpBekFRSjZ6aHFNNGlLQUFBSTVFdkJEM2FkR2ErOElYSHh2TXRUZEVkSnoxSUFVRlFFRUVFQUFBUVM2SzBCQTc2NDNXME1BQVFUS0pPQ0h1cXZDczJIa1h1ZWNhd1JoV05YUERIVXYwMTVBWFJGQUFBRUVFRUJnMlFJRTlHVlQ4VVFFRUVBQWdWVUl6QWI3OXZVZE96SitYeGdHYjlWUWQ4VnpCWFVXQkJCQUFBRUVFRUFBZ1NjSUVOQ2ZRTUlkQ0NDQUFBSnRGUmdac1dIdDRjUlkvWGVET1A1Y1dLbFUxWVUrMDladHNESUVFRUFBQVFRUVFLQUFBZ1QwQWpRaVZVQUFBUVF5TG1CRDJ2MzdUVmp0ZTYxQyttTmhFUGJwUG5yU005NXdGQThCQkJCQUFBRUV1aXRBUU8rdU4xdERBQUVFeWlyUThFUGREeDkrVkdlZ3YxYkQzVzJ4ZnprZjNWUHdEd0lJSUlBQUFnZ2cwT3pSQUFJQkJCQkFBSUdPQzR5TTJMRDJxaTY5OW5mT0JlL1grZWgya0poWjNUc096d1lRUUFBQkJCQkFJQzhDOUtEbnBhVW9Kd0lJSUZBTUFUK3NmYkpXdThIRjduWi82VFhPUnk5R3kxSUxCQkJBQUFFRUVGaXpBQUY5ellTc0FBRUVFRUJnQlFJMnBOMHV0YVpMbzhldjBhWFhKalhTbmZQUlZ3RElVeEZBQUFFRUVFQ2d1QUlFOU9LMkxUVkRBQUVFc2lyZ0w3MDJOVDQrcHV1ai95cm5vMmUxbVNnWEFnZ2dnQUFDQ0hSYmdJRGViWEcyaHdBQ0NDQVFCSFkrdXE2UFBqRTYvcmN1Y08vMjU2TnpmWFQyREFRUVFBQUJCQkFvdVFBQnZlUTdBTlZIQUFFRWVpYVFYQjg5bUJ5ci8yWVFOLzVYOC9ybzUzdFdIamFNQUFJSUlJQUFBZ2owV0lDQTN1TUdZUE1JSUlCQWlRWHNmUFNLMWYrY0MxK3RjOUxITkdsY3YzNWtabmREWVVFQUFRUVFRQUNCMGdrUTBFdlg1RlFZQVFRUXlKU0F2ejc2ZEwxdWs4WDlmT0NjaFhPYlJDN09WQ2twREFJSUlJQUFBZ2dnMEFVQkFub1hrTmtFQWdnZ2dNQkZCSnJubyt2U2ExOEpnL0FOT2g5ZFU3enJQeFlFRUVBQUFRUVFRS0JrQWdUMGtqVTQxVVVBQVFReUtXQWhYVDNuRTdYYXgzUjk5TjhMSzFGRkNkM3VZMEVBQVFRUVFBQUJCRW9qUUVBdlRWTlRVUVFRUUNEekFuNVl1M3JTLzQzT1I3OHRpaUs3UGpvaFBmUE5SZ0VSUUFBQkJCQkFvRjBDQlBSMlNiSWVCQkJBQUlHMUNsaEE5NVBHelFUaHp6a1hIOWFrY1gwYTdNNmtjV3VWNWZVSUlJQUFBZ2dna0FzQkFub3Vtb2xDSW9BQUFxVVI4SlBHbmFyVnBxSTQrS2VhTk81Y0VQcEo0eHFsRWFDaUNDQ0FBQUlJSUZCYUFRSjZhWnVlaWlPQUFBSVpGV2hPR25lc1hyL2ZCZUV2cUJmZENtcnZWMHdjbDlFbW8xZ0lJSUFBQWdnZzBCNEJBbnA3SEZrTEFnZ2dnRUE3QmVabmR2L3ZtalR1WFpyWlBWUThweGU5bmNhc0N3RUVFRUFBQVFReUowQkF6MXlUVUNBRUVFQUFBUzh3TW1Mbm5rZVQ5ZnA3Rk5JL3FabmRxK3BDUDQ4T0FnZ2dnQUFDQ0NCUVZBRUNlbEZibG5vaGdBQUMrUmVZRzlLdW1kMWZHOFR4N1pyWnZWL1ZZbWIzL0xjdE5VQUFBUVFRUUFDQkpRUUk2RXVnY0JjQ0NDQ0FRR1lFNW1aMmIvU3YrOGU2L05xMy9jenVoUFRNTkJBRlFRQUJCQkJBQUlIMkNSRFEyMmZKbWhCQUFBRUVPaVBRQ1BZSDFlT0hEcDBNWS9jenpnV25BcnY4V3NBNTZaM2hacTBJSUlBQUFnZ2cwQ3NCQW5xdjVOa3VBZ2dnZ01EeUJRN29XdWo3OXZWTmpJOC9wRG5kZjBhWFgwdDcxcGs0YnZtS1BCTUJCQkJBQUFFRU1pNUFRTTk0QTFFOEJCQkFBSUdtUUhObTk0bGE3Zll3akY3TjVkZllNeEJBQUFFRUVFQ2dhQUlFOUtLMUtQVkJBQUVFaWl4Z0lUMElxaE5qWTU5UkovcmJtcGRmczk3MHVRbmxpbHg5Nm9ZQUFnZ2dnQUFDeFJZZ29CZTdmYWtkQWdnZ1VFUUJHOVplbWF5Ti8zYmc0dC9WNWRjcSt0a3V5Y2FDQUFJSUlJQUFBZ2prV29DQW51dm1vL0FJSUlCQUtRV3N0OXg2emNPSnNmcHY2QnJwbjFaUGVoL1hTQy9sdmtDbEVVQUFBUVFRS0pRQUFiMVF6VWxsRUVBQWdkSUlXRWozNzJHNlJ2b3Y2dkpydDlvMTBnbnBwV2wvS29vQUFnZ2dnRUFoQlFqb2hXeFdLb1VBQWdpVVFzQVBkYmVhRGxUN2Z0bzVOeEtGWWI5K3RQUFVXUkJBQUFFRUVFQUFnZHdKRU5CejEyUVVHQUVFRUVDZ1JjQkNldlh3NGNPUHIydkUvMERYU1ArT1puZTNhNlFUMGx1UXVJa0FBZ2dnZ0FBQytSQWdvT2VqblNnbEFnZ2dnTUNGQld5Q3VPcjQrUGpFYktYeUN2V2tId3NzcER2SHhIRVhOdU1SQkJCQUFBRUVFTWlnQUFFOWc0MUNrUkJBQUFFRVZpd3dHK3piMTNmeXlKSHZSUzU0dWNMNW1TQ01xcnI0R2lGOXhaUzhBQUVFRUVBQUFRUjZKVUJBNzVVODIwVUFBUVFRYUsrQVhTTmRJZjFZdlg1L0hMdVg2OUxvczBFWVZMVVJHd2JQZ2dBQ0NDQ0FBQUlJWkY2QWdKNzVKcUtBQ0NDQUFBTExGckNRdm5kdi8vSHg4Uys2TVBwcHZjNW1lN2ZycEJQU2w0M0lFeEZBQUFFRUVFQ2dWd0lFOUY3SnMxMEVFRUFBZ2M0SUhEeDQzbnJTcDhiR1B1K2k0RlU2SDkyMll5SGRycDNPZ2dBQ0NDQ0FBQUlJWkZhQWdKN1pwcUZnQ0NDQUFBS3JGbWdPZDU4YXJYOVduZWkvcXBuZGJWWDJua2RJWHpVcUwwUUFBUVFRUUFDQlRnc1EwRHN0elBvUlFBQUJCSG9qWUNGZHM3dFBqdFUvcGN1dnZiRVowcTBzaFBUZXRBaGJSUUFCQkJCQUFJRW5FU0NnUHdrUUR5T0FBQUlJNUZyQVh5ZDlzbGI3U0J5NE40ZFJsTDd2RWRKejNhd1VIZ0VFRUVBQWdXSUtwQjlVaWxrN2FvVUFBZ2dnVUhZQm15VE9RbnBsYXF6K083R0wvMTB6cE52OTlzV0NBQUlJSUlBQUFnaGtSb0NBbnBtbW9DQUlJSUFBQWgwU3NDQnVQZVlXMG44cmpodi9YaUU5blRTT2tONGhkRmFMQUFJSUlJQUFBaXNYSUtDdjNJeFhJSUFBQWdqa1R5QU42ZEZVYmZ3L0tLVC9QejZrTzJlOTY0VDAvTFVuSlVZQUFRUVFRS0NRQWdUMFFqWXJsVUlBQVFRUVdFTEFncmg5VlJUUy85L0F1UnZEU3FXcWU2eDNuWkMrQkJoM0lZQUFBZ2dnZ0VCM0JRam8zZlZtYXdnZ2dBQUN2Uld3SUc2QlBKd1lxNzBsQ2VrYTdrNVBlbTliaGEwamdBQUNDQ0NBZ0JjZ29MTWpJSUFBQWdpVVRjQkN1bDBZdlJuUzQ5OUpldElkUGVsbDJ4T29Md0lJSUlBQUFoa1RJS0JuckVFb0RnSUlJSUJBVndSOEw3cTJwSkJlZjNOenVMdDYwaG51M2hWOU5vSUFBZ2dnZ0FBQ1N3b1EwSmRrNFU0RUVFQUFnUklJdElUMDJsdGM3TjRmVnZ6czd0YkR6am5wSmRnQnFDSUNDQ0NBQUFKWkV5Q2daNjFGS0E4Q0NDQ0FRRGNGNWtMNlpLMTJROHQxMHUxKysySkJBQUVFRUVBQUFRUzZKa0JBN3hvMUcwSUFBUVFReUtoQUdzUVhYeWZkaXBzK2x0R2lVeXdFRUVBQUFRUVFLSklBQWIxSXJVbGRFRUFBQVFSV0s1RE83dTZ2ays1Yy9KdWhMcFRlWEJraGZiV3F2QTRCQkJCQUFBRUVWaVNRZnZoWTBZdDRNZ0lJSUlBQUFnVVVTTTg5cjB5TzFkOGRPL2VtVUNsZDliUXZRbm9CRzV3cUlZQUFBZ2dna0RVQkFucldXb1R5SUlBQUFnajBVaUR0U2E5TTFXb2ZkaTc0MXdycFZoNTd2Mnowc21Cc0d3RUVFRUFBQVFTS0wwQkFMMzRiVTBNRUVFQUFnWlVKcENHOXFvbmpmbDhoL1RWQkV0SXJXZzBoZldXV1BCc0JCQkJBQUFFRVZpQkFRRjhCRms5RkFBRUVFQ2lOZ0lWMEMrTVcwdi9VaGU3bmRkdUd1ZHUxMG1mMW5RVUJCQkJBQUFFRUVHaTdBQUc5N2FTc0VBRUVFRUNnSUFJVzBtZUR2WHY3cDBici84MkYwVS81bjhPd0dqaEhTQzlJSTFNTkJCQkFBQUVFc2lSQVFNOVNhMUFXQkJCQUFJSHNDUnc4ZUQ3WXQ2OXZhbXpzOHk1MjF3U0JPeHRFVVZVRm5jbGVZU2tSQWdnZ2dBQUNDT1JaZ0lDZTU5YWo3QWdnZ0FBQzNSRVlHWm54UGVuajQxK0tYUEJDNTl5a0pvL3IwOFlKNmQxcEFiYUNBQUlJSUlCQUtRUUk2S1ZvWmlxSkFBSUlJTEJtZ1daUCtyRjYvZjVxR1AyRTFuZklRcnJHd1o5Zjg3cFpBUUlJSUlBQUFnZ2dJQUVDT3JzQkFnZ2dnQUFDeXhWbzlxUS9OamIyM1VyL3pBdDBMdnI5VVJUMUU5S1hDOGp6RUVBQUFRUVFRT0JpQWdUMGkrbndHQUlJSUlBQUFvc0ZtajNwUjc5NzlMSCsyTDBvYnNSM1dralgweGp1dnRpS254RkFBQUVFRUVCZ1JRSUU5QlZ4OFdRRUVFQUFBUVFrWUQzcG1qaHVmSHo4ekZTOWZvMXJ4UDhqaktLKzV1enVOdnM3Q3dJSUlJQUFBZ2dnc0dJQkF2cUt5WGdCQWdnZ2dBQUNFckNRYnRkRjEvWFJKK3YxZnh5NzREK0dsWXJON203WFM3Y3ZGZ1FRUUFBQkJCQkFZRVVDQlBRVmNmRmtCQkJBQUFFRUZnZzA5Sk9GOUVDWFlYdTljL0c3MVpOdVA0ZjZJcVFiREFzQ0NDQ0FBQUlJTEZ1QWdMNXNLcDZJQUFJSUlJREFrZ0lXMHUzOU5Kb2NxLzltSExzM2FYWjNDK2hSNElMWkpWL0JuUWdnZ0FBQ0NDQ0F3QklDQlBRbFVMZ0xBUVFRUUFDQkZRcFliN21kZTE2WnF0VStyT0h1UDZmYmpTQUtxODN6MGxlNE9wNk9BQUlJSUlBQUFtVVVJS0NYc2RXcE13SUlJSUJBSndRc29EZHM4amlGOUwrTUkzZU5JdnRKRFhtdmNobTJUbkN6VGdRUVFBQUJCSW9uUUVBdlhwdFNJd1FRUUFDQlhnbzByNVYrZkhUOGk2RnpQKzVjOEYwdXc5YkxCbUhiQ0NDQUFBSUk1RWVBZ0o2ZnRxS2tDQ0NBQUFKNUVXaGVLMzJpWHY5Mm8xcDlub3ZqTC9uTHNDWFhTdWN5YkhscFI4cUpBQUlJSUlCQWx3VUk2RjBHWjNNSUlJQUFBaVVSYUY0ci9jVGh3eWNtYS9XckF4ZC90aG5TdVF4YlNYWUJxb2tBQWdnZ2dNQktCUWpvS3hYaitRZ2dnQUFDQ0N4WElMbFd1cjgyK3NSWS9aVXVkaDlvWG9iTjNuOXQ5bmNXQkJCQUFBRUVFRUJnVG9DQVBrZkJEUVFRUUFBQkJEb2lZSmRhODlkR242elYzcTVycGI4aDhGZGgwMzNPY1JtMmpwQ3pVZ1FRUUFBQkJQSXBRRURQWjd0UmFnUVFRQUNCZkFta3ZlVVZYU3Y5ajF3UXZrTEZQM094R2Q1MUtYWE9WYzlYRzFOYUJCQkFBQUVFMWl4QVFGOHpJU3RBQUFFRUVFQmdXUUxKWmRqMjd1MmZHaHY3dklzYXozZk9mY2RtZU5jRE00dlhvTWVzMTUwRkFRUVFRQUFCQkVva1FFQXZVV05UVlFRUVFBQ0JEQWcwWjNpZkduMzBtK0dtYy9zMHcvc3RDdWw5dW1hNjliTFBhUGo3ckI4Qkh3WGpHU2d0UlVBQUFRUVFRQUNCTGdxRVhkd1dtMElBQVFRUVFBQ0JWR0RmdnI0Z21VUXUyREU4K0FkaEVMN0JIdExROWlCMjdwNjQ3L1RMamg4NmZ0THUwaGZEM1EySEJRRUVFRUFBZ1lJTEVOQUwzc0JVRHdFRUVFQWcwd0kyak4yZm43NTllUGdWbWpUdWVyMHhqMVZuWmo1eDlPalIwM3JNUnJyWlpkbFlFRUFBQVFRUVFBQUJCQkJBQUFFRUVFQ2d3d0lXd3BjNjVXeXArenBjRkZhUEFBSUlJSUFBQXIwVW9BZTlsL3BzR3dFRUVFQUFnWGtCdTE1NnVsaXZPc1BhVXcyK0k0QUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0xSWDRIOEQ3ZHVUUy9ENCt2MEFBQUFBU1VWT1JLNUNZSUk9In0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjMtMDgtMTYiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MTAwLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IkFyY3VsdXMgRklETzIvVTJGIEtleSBDYXJkIFtQNzFdIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVMkYwMDAwMjAyMzA4MTYwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMy0wOC0xNiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxMDB9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjMtMDktMTIifSx7ImFhZ3VpZCI6Ijg4MmFkYWY1LTNhYTktNDcwOC04ZTdkLTM5NTcxMDM3NzViNCIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiODgyYWRhZjUtM2FhOS00NzA4LThlN2QtMzk1NzEwMzc3NWI0IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlQtU2hpZWxkIFRydXN0U2VjIEZJRE8yIEJpbyBhbmQgY2xpZW50IFBJTiB2ZXJzaW9uIn0sImRlc2NyaXB0aW9uIjoiVC1TaGllbGQgVHJ1c3RTZWMgRklETzIgQmlvIGFuZCBjbGllbnQgUElOIHZlcnNpb24iLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MiwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9LHsibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSIsImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwiLCJiYURlc2MiOnsic2VsZkF0dGVzdGVkRlJSIjowLjAsInNlbGZBdHRlc3RlZEZBUiI6MkUtMDUsImlBUEFSVGhyZXNob2xkIjowLjAsIm1heFRlbXBsYXRlcyI6NSwibWF4UmV0cmllcyI6NSwiYmxvY2tTbG93ZG93biI6MzB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjAsImJsb2NrU2xvd2Rvd24iOjB9fSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQ1dEQ0NBZitnQXdJQkFnSVVaa29oR1U2QStGMkJLYkc1OVdKeWRhUE5vMWN3Q2dZSUtvWkl6ajBFQXdJd2dZQXhDekFKQmdOVkJBWVRBa1ZITVE0d0RBWURWUVFJREFWRFlXbHliekVSTUE4R0ExVUVDZ3dJVkhKMWMzUnpaV014RURBT0JnTlZCQXNNQjFKdmIzUWdRMEV4RlRBVEJnTlZCQU1NREhSeWRYTjBjMlZqTG01bGRERWxNQ01HQ1NxR1NJYjNEUUVKQVJZV2JTNW5hR0YwZEdGelFIUnlkWE4wYzJWakxtNWxkREFnRncweU5EQTVNRGt3TnpRM01UWmFHQTh5TURjME1EZ3lPREEzTkRjeE5sb3dnWUF4Q3pBSkJnTlZCQVlUQWtWSE1RNHdEQVlEVlFRSURBVkRZV2x5YnpFUk1BOEdBMVVFQ2d3SVZISjFjM1J6WldNeEVEQU9CZ05WQkFzTUIxSnZiM1FnUTBFeEZUQVRCZ05WQkFNTURIUnlkWE4wYzJWakxtNWxkREVsTUNNR0NTcUdTSWIzRFFFSkFSWVdiUzVuYUdGMGRHRnpRSFJ5ZFhOMGMyVmpMbTVsZERCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQkdRNE94eFRJQW1RYnJ6aDk4QzYyb3lrN0h3TkFGbVAzY0RxOG9tSEV1UWJ5M21UcVc2cWtET1lzQWYxSllDc01EK0FBbS94YzhVMEJjaml2c2RCODhXalV6QlJNQjBHQTFVZERnUVdCQlI1YjhkdWpOMmhpMXQyWVBvamxUVkpUR0t0ZWpBZkJnTlZIU01FR0RBV2dCUjViOGR1ak4yaGkxdDJZUG9qbFRWSlRHS3RlakFQQmdOVkhSTUJBZjhFQlRBREFRSC9NQW9HQ0NxR1NNNDlCQU1DQTBjQU1FUUNJSC9VUkJ2bTJhZTJjM1I5WXFONzBkRElwMkMvbjR4NWF3TnBleTRyU3NZbUFpQmtRN1Q2Y3crZFp5ZVp3RGFsS1MxOFRiQUozUWd3Y3pvL21HYUxqL055ckE9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUNYa0FBQWNrQ0FZQUFBQVRBSlZyQUFBQUNYQklXWE1BQUM0akFBQXVJd0Y0cFQ5MkFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUJGNmxKUkVGVWVOcnMzVTJJWGVkNXdQSFh4aVdPYVpoQkdFSXdSaE1xS2RDbXVZTVd4MTRVZTFEd3Frb2xNQTdaNU9wcVk3d3BIa05Lc3dpSkRBN1p1YU9sblpxTUZOZHBxTUVqS05RT2hoeDVsNC9lYUpiR0FvOFFGazBDeVV3RXFaVkRtSjdqTTJOTlpVbnpkZWZPYzg3NS9lRGxnTDdtM3VkZTdmNDg3ejJycTZzSkFBQUFBQUFBQUFDQW1PNDFBZ0FBQUFBQUFBQUFnTGhFWGdBQUFBQUFBQUFBQUlHSnZBQUFBQUFBQUFBQUFBSVRlUUVBQUFBQUFBQUFBQVFtOGdJQUFBQUFBQUFBQUFoTTVBVUFBQUFBQUFBQUFCQ1l5QXNBQUFBQUFBQUFBQ0F3a1JjQUFBQUFBQUFBQUVCZ0lpOEFBQUFBQUFBQUFJREFSRjRBQUFBQUFBQUFBQUNCaWJ3QUFBQUFBQUFBQUFBQ0Uza0JBQUFBQUFBQUFBQUVKdklDQUFBQUFBQUFBQUFJVE9RRkFBQUFBQUFBQUFBUW1NZ0xBQUFBQUFBQUFBQWdNSkVYQUFBQUFBQUFBQUJBWUNJdkFBQUFBQUFBQUFDQXdFUmVBQUFBQUFBQUFBQUFnWW04QUFBQUFBQUFBQUFBQWhONUFRQUFBQUFBQUFBQUJDYnlBZ0FBQUFBQUFBQUFDRXprQlFBQUFBQUFBQUFBRUpqSUN3QUFBQUFBQUFBQUlEQ1JGd0FBQUFBQUFBQUFRR0FpTHdBQUFBQUFBQUFBZ01CRVhnQUFBQUFBQUFBQUFJR0p2QUFBQUFBQUFBQUFBQUlUZVFFQUFBQUFBQUFBQUFRbThnSUFBQUFBQUFBQUFBaE01QVVBQUFBQUFBQUFBQkNZeUFzQUFBQUFBQUFBQUNBd2tSY0FBQUFBQUFBQUFFQmdJaThBQUFBQUFBQUFBSURBUkY0QUFBQUFBQUFBQUFDQmlid0FBQUFBQUFBQUFBQUNFM2tCQUFBQUFBQUFBQUFFSnZJQ0FBQUFBQUFBQUFBSVRPUUZBQUFBQUFBQUFBQVFtTWdMQUFBQUFBQUFBQUFnTUpFWEFBQUFBQUFBQUFCQVlDSXZBQUFBQUFBQUFBQ0F3RVJlQUFBQUFBQUFBQUFBZ1ltOEFBQUFBQUFBQUFBQUFoTjVBUUFBQUFBQUFBQUFCQ2J5QWdBQUFBQUFBQUFBQ0V6a0JRQUFBQUFBQUFBQUVKaklDd0FBQUFBQUFBQUFJRENSRndBQUFBQUFBQUFBUUdBaUx3QUFBQUFBQUFBQWdNQkVYZ0FBQUFBQUFBQUFBSUdKdkFBQUFBQUFBQUFBQUFJVGVRRUFBQUFBQUFBQUFBUW04Z0lBQUFBQUFBQUFBQWhNNUFVQUFBQUFBQUFBQUJDWXlBc0FBQUFBQUFBQUFDQXdrUmNBQUFBQUFBQUFBRUJnSWk4QUFBQUFBQUFBQUlEQVJGNEFBQUFBQUFBQUFBQ0JpYndBQUFBQUFBQUFBQUFDRTNrQkFBQUFBQUFBQUFBRUp2SUNBQUFBQUFBQUFBQUlUT1FGQUFBQUFBQUFBQUFRbU1nTEFBQUFBQUFBQUFBZ01KRVhBQUFBQUFBQUFBQkFZQ0l2QUFBQUFBQUFBQUNBd0VSZUFBQUFBQUFBQUFBQWdZbThBQUFBQUFBQUFBQUFBaE41QVFBQUFBQUFBQUFBQkNieUFnQUFBQUFBQUFBQUNFemtCUUFBQUFBQUFBQUFFSmpJQ3dBQUFBQUFBQUFBSURDUkZ3QUFBQUFBQUFBQVFHQWlMd0FBQUFBQUFBQUFnTUJFWGdBQUFBQUFBQUFBQUlHSnZBQUFBQUFBQUFBQUFBSVRlUUVBQUFBQUFBQUFBQVFtOGdJQUFBQUFBQUFBQUFoTTVBVUFBQUFBQUFBQUFCQ1l5QXNBQUFBQUFBQUFBQ0F3a1JjQUFBQUFBQUFBQUVCZ0lpOEFBQUFBQUFBQUFJREFSRjRBQUFBQUFBQUFBQUNCaWJ3QUFBQUFBQUFBQUFBQ0Uza0JBQUFBQUFBQUFBQUVKdklDQUFBQUFBQUFBQUFJVE9RRkFBQUFBQUFBQUFBUW1NZ0xBQUFBQUFBQUFBQWdNSkVYQUFBQUFBQUFBQUJBWUNJdkFBQUFBQUFBQUFDQXdFUmVBQUFBQUFBQUFBQUFnWW04QUFBQUFBQUFBQUFBQWhONUFRQUFBQUFBQUFBQUJDYnlBZ0FBQUFBQUFBQUFDRXprQlFBQUFBQUFBQUFBRUpqSUN3QUFBQUFBQUFBQUlEQ1JGd0FBQUFBQUFBQUFRR0FpTHdBQUFBQUFBQUFBZ01CRVhnQUFBQUFBQUFBQUFJR0p2QUFBQUFBQUFBQUFBQUlUZVFFQUFBQUFBQUFBQUFRbThnSUFBQUFBQUFBQUFBaE01QVVBQUFBQUFBQUFBQkNZeUFzQUFBQUFBQUFBQUNBd2tSY0FBQUFBQUFBQUFFQmdJaThBQUFBQUFBQUFBSURBUkY0QUFBQUFBQUFBQUFDQmlid0FBQUFBQUFBQUFBQUNFM2tCQUFBQUFBQUFBQUFFSnZJQ0FBQUFBQUFBQUFBSVRPUUZBQUFBQUFBQUFBQVFtTWdMQUFBQUFBQUFBQUFnTUpFWEFBQUFBQUFBQUFCQVlDSXZBQUFBQUFBQUFBQ0F3RVJlQUFBQUFBQUFBQUFBZ1ltOEFBQUFBQUFBQUFBQUFoTjVBUUFBQUFBQUFBQUFCQ2J5QWdBQUFBQUFBQUFBQ0V6a0JRQUFBQUFBQUFBQUVKaklDd0FBQUFBQUFBQUFJRENSRndBQUFBQUFBQUFBUUdBaUx3QUFBQUFBQUFBQWdNQkVYZ0FBQUFBQUFBQUFBSUdKdkFBQUFBQUFBQUFBQUFJVGVRRUFBQUFBQUFBQUFBUW04Z0lBQUFBQUFBQUFBQWhNNUFVQUFBQUFBQUFBQUJDWXlBc0FBQUFBQUFBQUFDQXdrUmNBQUFBQUFBQUFBRUJnSWk4QUFBQUFBQUFBQUlEQVJGNEFBQUFBQUFBQUFBQ0JpYndBQUFBQUFBQUFBQUFDRTNrQkFBQUFBQUFBQUFBRUp2SUNBQUFBQUFBQUFBQUlUT1FGQUFBQUFBQUFBQUFRbU1nTEFBQUFBQUFBQUFBZ01KRVhBQUFBQUFBQUFBQkFZQ0l2QUFBQUFBQUFBQUNBd0VSZUFBQUFBQUFBQUFBQWdZbThBQUFBQUFBQUFBQUFBaE41QVFBQUFBQUFBQUFBQkNieUFnQUFBQUFBQUFBQUNFemtCUUFBQUFBQUFBQUFFSmpJQ3dBQUFBQUFBQUFBSURDUkZ3QUFBQUFBQUFBQVFHQWlMd0FBQUFBQUFBQUFnTUJFWGdBQUFBQUFBQUFBQUlHSnZBQUFBQUFBQUFBQUFBSVRlUUVBQUFBQUFBQUFBQVFtOGdJQUFBQUFBQUFBQUFoTTVBVUFBQUFBQUFBQUFCQ1l5QXNBQUFBQUFBQUFBQ0F3a1JjQUFBQUFBQUFBQUVCZ0lpOEFBQUFBQUFBQUFJREFSRjRBQUFBQUFBQUFBQUNCaWJ3QUFBQUFBQUFBQUFBQ0Uza0JBQUFBQUFBQUFBQUVKdklDQUFBQUFBQUFBQUFJVE9RRkFBQUFBQUFBQUFBUW1NZ0xBQUFBQUFBQUFBQWdNSkVYQUFBQUFBQUFBQUJBWUNJdkFBQUFBQUFBQUFDQXdFUmVBQUFBQUFBQUFBQUFnWW04QUFBQUFBQUFBQUFBQWhONUFRQUFBQUFBQUFBQUJDYnlBZ0FBQUFBQUFBQUFDRXprQlFBQUFBQUFBQUFBRUpqSUN3QUFBQUFBQUFBQUlEQ1JGd0FBQUFBQUFBQUFRR0FpTHdBQUFBQUFBQUFBZ01CRVhnQUFBQUFBQUFBQUFJR0p2QUFBQUFBQUFBQUFBQUlUZVFFQUFBQUFBQUFBQUFRbThnSUFBQUFBQUFBQUFBaE01QVVBQUFBQUFBQUFBQkNZeUFzQUFBQUFBQUFBQUNBd2tSY0FBQUFBQUFBQUFFQmdJaThBQUFBQUFBQUFBSURBUkY0QUFBQUFBQUFBQUFDQmlid0FBQUFBQUFBQUFBQUNFM2tCQUFBQUFBQUFBQUFFSnZJQ0FBQUFBQUFBQUFBSVRPUUZBQUFBQUFBQUFBQVFtTWdMQUFBQUFBQUFBQUFnTUpFWEFBQUFBQUFBQUFCQVlDSXZBQUFBQUFBQUFBQ0F3RVJlQUFBQUFBQUFBQUFBZ1ltOEFBQUFBQUFBQUFBQUFoTjVBUUFBQUFBQUFBQUFCQ2J5QWdBQUFBQUFBQUFBQ0V6a0JRQUFBQUFBQUFBQUVKaklDd0FBQUFBQUFBQUFJRENSRndBQUFBQUFBQUFBUUdBaUx3QUFBQUFBQUFBQWdNQkVYZ0FBQUFBQUFBQUFBSUdKdkFBQUFBQUFBQUFBQUFJVGVRRUFBQUFBQUFBQUFBUW04Z0lBQUFBQUFBQUFBQWhNNUFVQUFBQUFBQUFBQUJDWXlBc0FBQUFBQUFBQUFDQXdrUmNBQUFBQUFBQUFBRUJnSWk4QUFBQUFBQUFBQUlEQVJGNEFBQUFBQUFBQUFBQ0JpYndBQUFBQUFBQUFBQUFDRTNrQkFBQUFBQUFBQUFBRUp2SUNBQUFBQUFBQUFBQUlUT1FGQUFBQUFBQUFBQUFRbU1nTEFBQUFBQUFBQUFBZ01KRVhBQUFBQUFBQUFBQkFZQ0l2QUFBQUFBQUFBQUNBd0VSZUFBQUFBQUFBQUFBQWdZbThBQUFBQUFBQUFBQUFBaE41QVFBQUFBQUFBQUFBQkNieUFnQUFBQUFBQUFBQUNFemtCUUFBQUFBQUFBQUFFSmpJQ3dBQUFBQUFBQUFBSURDUkZ3QUFBQUFBQUFBQVFHQWlMd0FBQUFBQUFBQUFnTUJFWGdBQUFBQUFBQUFBQUlHSnZBQUFBQUFBQUFBQUFBSVRlUUVBQUFBQUFBQUFBQVFtOGdJQUFBQUFBQUFBQUFoTTVBVUFBQUFBQUFBQUFCQ1l5QXNBQUFBQUFBQUFBQ0F3a1JjQUFBQUFBQUFBQUVCZ0lpOEFBQUFBQUFBQUFJREFSRjRBQUFBQUFBQUFBQUNCaWJ3QUFBQUFBQUFBQUFBQ0Uza0JBQUFBQUFBQUFBQUVKdklDQUFBQUFBQUFBQUFJVE9RRkFBQUFBQUFBQUFBUW1NZ0xBQUFBQUFBQUFBQWdNSkVYQUFBQUFBQUFBQUJBWUNJdkFBQUFBQUFBQUFDQXdFUmVBQUFBQUFBQUFBQUFnWW04QUFBQUFBQUFBQUFBQWhONUFRQUFBQUFBQUFBQUJDYnlBZ0FBQUFBQUFBQUFDRXprQlFBQUFBQUFBQUFBRUpqSUN3QUFBQUFBQUFBQUlEQ1JGd0FBQUFBQUFBQUFRR0FpTHdBQUFBQUFBQUFBZ01CRVhnQUFBQUFBQUFBQUFJR0p2QUFBQUFBQUFBQUFBQUlUZVFFQUFBQUFBQUFBQUFRbThnSUFBQUFBQUFBQUFBaE01QVVBQUFBQUFBQUFBQkNZeUFzQUFBQUFBQUFBQUNBd2tSY0FBQUFBQUFBQUFFQmdJaThBQUFBQUFBQUFBSURBUkY0QUFBQUFBQUFBQUFDQmlid0FBQUFBQUFBQUFBQUNFM2tCQUFBQUFBQUFBQUFFSnZJQ0FBQUFBQUFBQUFBSVRPUUZBQUFBQUFBQUFBQVFtTWdMQUFBQUFBQUFBQUFnTUpFWEFBQUFBQUFBQUFCQVlDSXZBQUFBQUFBQUFBQ0F3RVJlQUFBQUFBQUFBQUFBZ1ltOEFBQUFBQUFBQUFBQUFoTjVBUUFBQUFBQUFBQUFCQ2J5QWdBQUFBQUFBQUFBQ0V6a0JRQUFBQUFBQUFBQUVKaklDd0FBQUFBQUFBQUFJRENSRndBQUFBQUFBQUFBUUdBaUx3QUFBQUFBQUFBQWdNQkVYZ0FBQUFBQUFBQUFBSUdKdkFBQUFBQUFBQUFBQUFJVGVRRUFBQUFBQUFBQUFBUW04Z0lBQUFBQUFBQUFBQWhNNUFVQUFBQUFBQUFBQUJDWXlBc0FBQUFBQUFBQUFDQXdrUmNBQUFBQUFBQUFBRUJnSWk4QUFBQUFBQUFBQUlEQVJGNEFBQUFBQUFBQUFBQ0JpYndBQUFBQUFBQUFBQUFDRTNrQkFBQUFBQUFBQUFBRUp2SUNBQUFBQUFBQUFBQUlUT1FGQUFBQUFBQUFBQUFRbU1nTEFBQUFBQUFBQUFBZ01KRVhBQUFBQUFBQUFBQkFZQ0l2QUFBQUFBQUFBQUNBd0VSZUFBQUFBQUFBQUFBQWdZbThBQUFBQUFBQUFBQUFBaE41QVFBQUFBQUFBQUFBQkNieUFnQUFBQUFBQUFBQUNFemtCUUFBQUFBQUFBQUFFSmpJQ3dBQUFBQUFBQUFBSURDUkZ3QUFBQUFBQUFBQVFHQWlMd0FBQUFBQUFBQUFnTUJFWGdBQUFBQUFBQUFBQUlHSnZBQUFBQUFBQUFBQUFBSVRlUUVBQUFBQUFBQUFBQVFtOGdJQUFBQUFBQUFBQUFoTTVBVUFBQUFBQUFBQUFCQ1l5QXNBQUFBQUFBQUFBQ0F3a1JjQUFBQUFBQUFBQUVCZ0lpOEFBQUFBQUFBQUFJREFSRjRBQUFBQUFBQUFBQUNCaWJ3QUFBQUFBQUFBQUFBQ0Uza0JBQUFBQUFBQUFBQUVKdklDQUFBQUFBQUFBQUFJVE9RRkFBQUFBSHZrM1I4ZFBmNkh0N0tmbUFRQUFBQUF1eUh5QWdBQUFJQTlVT1RaNU5Sbjc1dGJYVjE5WXZIODBZR0pBQUFBQUxCVElpOEFBQUFBR0xFcThDb2YrYjMzcHI5YSs2VWZDTDBBQUFBQTJDbVJGd0FBQUFDTTBIcmdWWjdlTGI5VmhWN3pKZ1FBQUFEQWRvbThBQUFBQUdCRTdoSjRyVHNsOUFJQUFBQmd1MFJlQUFBQUFEQUNSWjVObDQrbGRPZkFhNTNRQ3dBQUFJQnR1V2QxZGRVVUFBQUFBR0FYMWdLdnZEd1R0LzdlSHo5Y1RVdS8rZlB0L3RwaWVXWjYvZUd5Q1FJQUFBQndOelo1QVFBQUFNQXVGSGsyU0hjSXZEWlJiZnpLRjg4Zm5USkZBQUFBQU81RzVBVUFBQUFBTzFUazJXejUrRUhhZnVDMXJncTlMaTJlUHpwdG1nQUFBQURjaWNnTEFBQUFBSGFneUxQNTh2RXZJL2lucWtDczJ1ZzFNRlVBQUFBQWJ1ZWUxZFZWVXdBQUFBQ0FMU3J5YkxKOExKVG44YTM4K1Q5K3VKcVdmdlBucmY3enovWDZ3emxUQmdBQUFHQWprUmNBQUFBQWJGR1JaOVcxaXZPcHZtWnhTN1laZVZYT2xXZTIxeDh1bXpnQUFBQUFGZGMxQWdBQUFNQVdGSGwyc256a2FSdUIxdzZkU3ZYMWpaT21EZ0FBQUVCRjVBVUFBQUFBbXlqeTdFejVlS004RTJQNmtWVkl0clI0L3VpMDZRTUFBQURndWtZQUFBQUF1SU1pejZwdFd2UGxPYkhUZjJNSDF6WGU2blN2UDV6M2FRQUFBQUIwbDhnTEFBQUFBRzZqeUxOcWk5WjgydVgxakNPSXZDcm55alBiNncrWGZUSUFBQUFBM2VPNlJnQUFBQUM0UlpGbko4dEhubllaZUkzUXFlcjFMSjQvT3VYVEFRQUFBT2dla1JjQUFBQUFiRkRrMlZ6NWVLTThFOEZlV2hXY1hWbzhmL1NrVHdrQUFBQ2dXMXpYQ0FBQUFBRHBvN2hycW53c3BCRnY3eHJSZFkyM090dnJEMmQ5YWdBQUFBRGRJUElDQUFBQW9QUFdybWVjVDN1d3ZXdVBJcS9LWW5sTzl2ckRKWjhnQUFBQVFMdTVyaEVBQUFDQVRndDhQZU5tWE44SUFBQUEwQkUyZVFFQUFBRFFTWHQxUGVPdDluQ1QxMGF1YndRQUFBQm9NWkVYQUFBQUFKMVQ1Tm1nZkZRYnZQWjhlOWVZSXE5S2RYM2pvTmNmWHZJSkF3QUFBTFNMeUFzQUFBQ0F6aWp5YkxKOHpKZm54TGgrNWhnanI4cEtlYzcwK3NNNW56WUFBQUJBZTRpOEFBQUFBT2lFSXM5bVVoMTRIUnpuengxejVMWHVRcXEzZWkzNzVBRUFBQUNhNzE0akFBQUFBS0R0aWp5ck5sdjlOSTA1OE5wSDFhYXlwY1h6UjAvNjlBRUFBQUNhenlZdkFBQUFBRnFyeUxQcFZHL3Y2dTNYYTlpblRWNGJuVTMxRlk2MmVnRUFBQUEwbEUxZUFBQUFBTFJTa1dkbnlzZXYwajRHWGtFOFc1NUxpK2VQenZoV0FBQUFBRFNUVFY0QUFBQUF0RXFFN1YwYkJkamt0Wkd0WGdBQUFBQU5aSk1YQUFBQUFLMVI1TmxzK2NpVDdWMTNZcXNYQUFBQVFBUFo1QVVBQUFCQTQwWGIzclZSc0UxZUc5bnFCUUFBQU5BUU5ua0JBQUFBMEdoRm5wMHBINzlLdG5kdGw2MWVBQUFBQUExaGt4Y0FBQUFBalJSNWU5ZEdnVGQ1YldTckZ3QUFBRUJnSWk4QUFBQUFHcVhJczhueU1WdWU3elRoOVRZazhxcXNsR2ZRNnc4WGZNc0FBQUFBWWhGNUFRQUFBTkFZUlo3TnBIcDcxOEdtdk9ZR1JWN3JMcFJudHRjZkx2bkdBUUFBQU1RZzhnSUFBQUFndkxYdFhmUGxPZEcwMTk3QXlLdFNiZldxcm0rYzgrMERBQUFBMkg4aUx3QUFBQUJDSy9Lc3VwcnhUSGttbXZqNkd4cDVyVnRNOVJXT2wzd1RBUUFBQVBhUHlBc0FBQUNBa0lvOG15NGYxU2FweDV2OFBob2VlYTA3bStyTlhzdSttUUFBQUFEakovSUNBQUFBSUpTMXF4blBsT2ZaTnJ5ZmxrUmVsZW9LeDlsZWZ6anZXd29BQUFBd1hpSXZBQUFBQU1JbzhteVE2dTFkRTIxNVR5Mkt2TlpkVEhYczVRcEhBQUFBZ0RFUmVRRUFBQUN3NzlweU5lUHR0RER5V3VjS1J3QUFBSUF4RVhrQkFBQUFzRy9hZGpYajdiUTQ4cXE0d2hFQUFBQmdERVJlQUFBQUFPeUxJczltVXgxNFRiVDVmYlk4OGxwWFhlRlliZlhLZmJNQkFBQUFSay9rQlFBQUFNQllGWGsyaytxckdYdGRlTDhkaWJ6V25VdDE3TFhrbXc0QUFBQXdPaUl2QUFBQUFNYWl5TE9wVk1kZEo3cjB2anNXZVZWVzFqN251VjUvdU95YkR3QUFBTEI3SWk4QUFBQUE5bFNSWjVPcHZwYngyUzYrL3c1R1h1dXVwSHFyMTd6L0JRQUFBQUM3SS9JQ0FBQUFZTThVZVRhYjZzQnJvcXN6NkhEa3RXNnhQTE85L2pEM1B3SUFBQUJnWjBSZUFBQUFBSXhja1dlRFZNZGRCN3MrQzVIWHh5NldaOURyRDVlTUFnQUFBR0I3UkY0QUFBQUFqRXlSWnpPcGpyc2VONDJheU9zVHpxWDZHc2Nsb3dBQUFBRFlHcEVYQUFBQUFMdFc1TmxVK1poUDRxNVBFSG5kMWtwNTVxclQ2dytYalFNQUFBRGc3a1JlQUFBQUFPellXdHgxcGp5blRPUDJSRjUzOVZIczFlc1B6eGdGQUFBQXdKMkp2QUFBQUFEWXRpTFBKbE1kZHoxckduY244dHFTSzZtK3duSGVLQUFBQUFBK1NlUUZBQUFBd0phdHhWMnphMmZDUkRZbjh0b1dzUmNBQUFEQWJZaThBQUFBQU5pVXVHdm5SRjQ3VXNWZWcxNS9tQnNGQUFBQWdNZ0xBQUFBZ0xzUWQrMmV5R3RYTHFaNnMxZHVGQUFBQUVDWGlid0FBQUFBK0FSeDEraUl2RVpDN0FVQUFBQjBtc2dMQUFBQWdJK0p1MFpQNURWU1lpOEFBQUNnazBSZUFBQUFBSWk3OXBESWEwK0l2UUFBQUlCT0VYa0JBQUFBZEppNGErK0p2UFpVRlh2TjlmckRCYU1BQUFBQTJremtCUUFBQU5CQjRxN3hFWG1OeFpWVWIvYWFOd29BQUFDZ2pVUmVBQUFBQUIxUzVObFVxc091UVJKM2pZWElhNnpFWGdBQUFFQXJpYndBQUFBQU9tQXQ3anBUbmxPbU1WNGlyMzFSeFY1ejVabnY5WWZMeGdFQUFBQTBuY2dMQUFBQW9NV0tQSnRKOWRZdWNkYytFWG50cTVWVXgxNXpZaThBQUFDZ3lVUmVBQUFBQUMyMEZuZWRLYy9qcHJHL1JGNGhWTEhYUXFxdmNsd3lEZ0FBQUtCcFJGNEFBQUFBTFZMazJTRFZjZGRCMDRoQjVCWE91VlJmNDVnYkJRQUFBTkFVSWk4QUFBQ0FoaXZ5YkxKOHpLYjZXa1p4VnpBaXI3QXVwdm9heHdXakFBQUFBS0lUZVFFQUFBQTBWSkZuVTZuZTJuV3lQQk1tRXBQSUs3d3JhLytQRm5yOTRiSnhBQUFBQUJHSnZBQUFBQUFhcHNpem1WUnY3anBoR3ZHSnZCcGpwVHp6cWQ3dXRXUWNBQUFBUUNRaUx3QUFBSUNHS1BKc2tPcU5RNjVrYkJDUlZ5T2RLODk4cnovTWpRSUFBQUNJUU9RRkFBQUFFTmphbFl5RFZHL3VjaVZqQTRtOEdtMHgxWnU5NW8wQ0FBQUEyRThpTHdBQUFJQ0FYTW5ZSGlLdlZuQ1ZJd0FBQUxDdlJGNEFBQUFBUVJSNU5wbHVidTF5SldOTGlMeGE1MEtxcjNKY01Bb0FBQUJnWEVSZUFBQUFBUHVzeUxQcFZJZGRKNU1yR1Z2bjJ1Ly9JaTFmLzErRGFKOHI1WmxMZGZDMWJCd0FBQURBWGhKNUFRQUFBT3lUSXM4R3FZNjdlcWJSUHRkdlBKQmVmUE56NmNmLytkL3BHNE8vVFk4Ky9MNmh0TmU1Vk1kZXVWRUFBQUFBZTBIa0JRQUFBREJHUlo1TnBUcnNHaVJidTFycjNkOCtsTDd4OHUvVFcyOWYvUGpYbmpsOU1nMys3bi9TL2ZmZE1LRDJzdDBMQUFBQTJCTWlMd0FBQUlBOVZ1VFpaS3F2WXJTMXF3TmVldWRJK3Nmdi9OdHRmKytKWTQrbHA3L3ltWFQ0d0RXRGFqL2J2UUFBQUlDUkVYa0JBQUFBN0pFaXo2WlRIWFpWZ1pldFhTMzN3Y3FENlovT3JhYlgzM2h6MHovN3JlZWVTc2UvZU5WV3IyNnczUXNBQUFEWU5aRVhBQUFBd0FpdGJlMGFyQjFidXpyaXRWOThJYjN3OHMvUzVjdnZiZm52Mk9yVlNSZFNIWHN0R0FVQUFBQ3dIU0l2QUFBQWdCRW84cXphMWxXZFU2YlJIZFgycmhkZS8xUjY1ZFdkTnp1MmVuVlN0ZDJyK3RMTTlmckRKZU1BQUFBQU5pUHlBZ0FBQU5paElzK20wczNyR0ErYVNMZTg5TTZSZFBhSFA5L1c5cTQ3c2RXcjB4WlRmWjNqZ3VzY0FRQUFnRHNSZVFFQUFBQnNnK3NZZWZlM0Q2WG5mL1JoZXYyTk4wZitiOXZxMVhublVoMTd1YzRSQUFBQStIOUVYZ0FBQUFCYlVPVFpJTlVidTA2WVJqZGR2L0ZBK3Y3Rmg5STN2L2ZhbnY2Y1E0Y09wMjgvL1RmcFM1KzlZdWpkdFZLZStlcjArc05MeGdFQUFBQ0l2QUFBQUFEdW9NaXptVlJ2N0tyaXJna1Q2YTZmWGo2VVh2enh0ZlRXMnhmSDlqTy8vclhqNmZUTUg5S0JUMS8zQVhSYlZmdXRYK2U0WkJ3QUFBRFFUU0l2QUFBQWdBMktQSnRPTjhPdWd5YlNiUitzUEpqTy90ZGZwcm1YL21OZmZuNjExZXYwazlQcDcvLzZzZytEeW1LNnVlRnIyVGdBQUFDZ08wUmVBQUFBUU9jVmVUYVY2ckNyT3NJdVB2TFNPMGZTMlIvK1BGMisvTjYrdjVZbmpqMldudjdLWjlMaEE5ZDhNS3k3VUo2RlZHLzRFbndCQUFCQXk0bThBQUFBZ0U1YUM3dXFiVjJEOHZSTWhIVy92UHI1OVB6NVg0LzFhc2F0ZXViMHlmVFZSMzduQ2tkdUpmZ0NBQUNBbGhONUFRQUFBSjBoN09KdXFxc1pYM2o5VSttVlZ4ZkN2OWJ2L3ZOVDZjdEhycWI3Nzd2aGcrTldWZkJWWGVlNFlCUUFBQURRSGlJdkFBQUFvTldFWFd6bStvMEgwdmN2UHBTKytiM1hHdlc2cXlzY256ejJZSHIwNGZkOWlOek9TbHJiN2xXZTNJWXZBQUFBYURhUkZ3QUFBTkE2d2k2MjZyVmZmQ0c5OFBMUDB1WEw3elgyUFh6OWE4ZlRQenl5bWc0ZnVPWUQ1VzVjNlFnQUFBQU5KdklDQUFBQVdxSElzK255TVpPRVhXekJMNjkrUGoxLy90ZnByYmN2dHVZOVBYUDZaUHJxSTc5TEJ6NTkzUWZNWmdSZkFBQUEwREFpTHdBQUFLQ3gxc0t1UWFxM2RoMDBFVFpUeFYydi9PUlA2WlZYRjFyN0hyLzEzRlBwK0JldnB2dnZ1K0VEWnl1cTBuRTkrRm95RGdBQUFJaEo1QVVBQUFBMFNwRm5WZEMxZmlaTWhLMzRZT1hCOUsvNVJQcnUzTDkzNHYwZU9uUTRuWDV5T24zNWlOaUxiVmxNTjRPdlM4WUJBQUFBY1lpOEFBQUFnTkNLUEp0TU42T3VtU1RzWWh1dTMzZ2d2ZmptNXpvVGQ5M3FpV09QcFNlUFBaZ2VmZmo5LzJQdmJvQ3J1czk3VWI5MkVFaUFaQ1B4TGVsZ2pDU0luVmhLYkxBNXFRMGhKamdOeGRqR1BZeGRhRk5QcnBPWk0yT243WjNlenZFazUyYlNTVTk3MHFhVDZianBxY2U5SlVsSmpUOUt5ZGdVQndUdTFBbGdMTks0d1VnR3VYeC9HaERtd3dyeDFSTElDSXd4a3ZhVzl0N3JlV1lXMHBhYjZmNy8xcktOWi85NFh3OERQZlZtbkMxOE5kWXYzdlNjT0FBQUFHQmdLWGtCQUFBQU9lZmNHc2FaY1hZVlk3MUU2S21rM1BXRG4xYkZYeTVaSHkwdHphblBROW1MUGpyYWNUWEcrU2xmUjBRQ0FBQUEvVXZKQ3dBQUFNZ0o1OVl3em95ekU3c21TSVRlVU82NnZLVHM5WC85Um1uVWx1OFdCbjFoclNNQUFBRDBNeVV2QUFBQVlFQzBOMDY3THM2dllMeGJJdlNGY2xmUExGbzROK2JkK3E2eUY1bVFySFZzalBPckhVMzVBZ0FBZ0N4UThnSUFBQUQ2aldsZFpKcHlWOThvZTVFRmErTjg0Y3VVTHdBQUFNZ1FKUzhBQUFBZ2E5b2JwelhFK1ZMWERJbVFLY3BkbWFYc1JaWWNqWE9GcnppNzJ0R1VMd0FBQU9nbEpTOEFBQUFnWTg2dFlKelo3VEt0aTR4Uzdzb3VaUyt5YkhPY0wzdzFpZ01BQUFDdW5KSVhBQUFBMEd2dGpkT3VqUXRMWGZWU0lSdVV1L3BYVXZiNjFNY0d4MjNWMjRWQk5sbnRDQUFBQUZkSXlRc0FBQURva2ZiR2FUUGpmS25MQ2theVNybHJZTTJlZFVmY04ydWtzaGY5SVZudDJOaDFLWDBCQUFEQWhaUzhBQUFBZ010UzZtSWc3RG82TXY2MjhacjQ0WXBYbEx0eWdMSVhBK0ROdUxEMDFTb1NBQUFBMGt6SkN3QUFBTGlBVWhjRHFhdmM5Y2ZmWGlxTUhGUlRVeHRmdUs4aFBsTzNJNG9IblJZSS9VbnBDd0FBZ0ZSVDhnSUFBSUNVVStvaUYyemNNVEdlK0pkMzRvbnZQU2VNUE5CVjlwbytjVitVbDdRSmhJR1FsTDZTbFk2TlliMGpBQUFBS2FEa0JRQUFBQ25TM2pqdDJqaGY2R29JcFM0RzJQSi9yNHZuMTcrdDNKWEhmdS9MOThYYytnUEtYZ3kwbzNGKzBsZFQvZUpOalNJQkFBQ2drQ2g1QVFBQVFBRnJiNXgyWFZ4WTZxcVhDZ090N2ZUUVdMTzFLdjdQOHAyeDhzVzFBaWtRaXhiT2pYbTN2aHUxNWJ1RlFhNUkvZ0hUR09jbWZ0VXYzblJFSkFBQUFPUXJKUzhBQUFBb0lOMVdMemFjKzNxTlZNZ1Z1NDZPakJXYnkrTXZsNnlQbHBabWdSU28yYlB1aVB0bWpZemJxcmNMZzF5ek9jNnZlR3l5NGhFQUFJQjhvdVFGQUFBQWVhcmJsSzZ1UXBjcFhlU2tqVHNteG84MlhSMS8vTzJsd2tpUm1wcmErTUo5RGZHWnVoMVJQT2kwUU1oRnlZckhydEpYY2pXWjlnVUFBRUN1VXZJQ0FBQ0FQTkRlT08zYU9GL21tbm51ZTFPNnlHbkwvNzB1bmwvL2Rqenh2ZWVFa1hLLzkrWDc0ak0zdGtWbDZRRmhrT3ZlalBNckhwUFNWNk5JQUFBQXlBVktYZ0FBQUpDRExscTdtRndUcEVJK2FEczlOSDd3MDZwWThkTE9XUG5pV29Gd2dVVUw1OGFuUGpiWUtrZnlUYkxtc1RIT0Y3K3NlUVFBQUtEZktYa0JBQURBQUR0WDZHcm9kbG03U042eGtwR2VtRDNyanBnNWRVeE1uN2d2eWt2YUJFSStTbHFzVGFINEJRQUFRRDlSOGdJQUFJQitjdEhLUlJPNktBakpTc2FsYXc3RnNtZGZFQWE5a3F4eW5GNTNLbXJMZHd1RGZOZTkrTlZxMVNNQUFBQ1pwT1FGQUFBQVdkRGVPTzI2T0Yva210bHhKYThWdWlnSXU0Nk9qQi8rZEVUODdWTWJvcVdsV1NCa1JETGQ2NzVaSTZOaDNPNG9IblJhSUJTS1pOVmpaK2tyenExOHJGKzg2WWhZQUFBQTZDa2xMd0FBQU9pamJ1c1dyenYzZFlaVUtFUnJXbXJpSDllZWpDZSs5NXd3eUpxYW10cVlOL3VtK015TmJWRlpla0FnRktJM28xdnBLODVPL2JMdUVRQUFnTXRTOGdJQUFJQXIxTjQ0cldzeTEzVmhPaGNwa1V6dFdyRzVQRmE4dEROV3ZyaFdJUFNyZStmTmljOU9HeGEzVlc4WEJtbHc4ZFN2cFB6VktoWUFBQUFTU2w0QUFBQndrWE5scnV2aS9MckY1UHQ2eVpBbXlkU3U1emYrTXI3OTNhZUV3WUJMcG5zdC9JMkdtRDdwcU9sZXBGSFNzRzBONVM4QUFJQlVVL0lDQUFBZ3RjNnRXYnd1VE9hQ1RxWjJrUSs2cG5zMWpOc2R4WU5PQzRRMDYxNytzdllSQUFDZ3dDbDVBUUFBVU5ET1RlVzZOczZXdUpLdlhkTzVycEVPbkxYODMrdmkrZlZ2eHhQZmUwNFk1STFrdXRlODJUZkZaMjVzTTkwTExwU3NmVHdTWjZkK0pWK1Q0bGRUL2VKTlIwUURBQUNRdjVTOEFBQUF5SHZ0amRPdWkvUHJGYnNYdXF4WWhBL3crb0hLK05HclErTnZuOW9RTFMzTkFpR3ZKZE85Ym04b2kra1RkcGp1QlplWFRQL3FLbjYxbnJzVXdBQUFBUEtBa2hjQUFBQjU0UU1tY2lseVFRKzBuUjRhYTdaV3hkSTFoMkxac3k4SWhJTDBlMSsrTHhvbW5vbWJ4cndwRE9pWjdnV3c5NHBnOVlzM3RZb0dBQUJnNENsNUFRQUFrQk82VGVQcXVycEtYRllyUWgrdGFhbUpkYSs5RzMvODdhWENJRFZtejdvamJxMGZFN01tNzR2eWtqYUJRTjhrcmNuV3VMQUExdm5WRkRBQUFJRCtvZVFGQUFCQXYyaHZuRGJ6M0xmZHkxdkoxK3M2cmdrU2dzemFkWFJrL1BDbkkyTE5obDJ4OHNXMUFpSFZrbldPbjUwMkxCckc3YmJPRWJKamMxeFkvbXJ0dWt3Q0F3QUF5QXdsTHdBQUFQcXNXNEhydW5OWFY0a3JNVU5DMEQrU2RZei8vTFBxV1BIeVFlc1ljMHhOVFcwODl2QzArSjMvKy92Q0dHRFdPY0tBT0JwbkMyQ0p4bk5mM3l1RUtZSUJBQUI4T0NVdkFBQUFQbEI3NDdTdWFWdmRTMXZkZjFZdkpSaDR5VHJHNXpmK01yNzkzYWVFa1lPU2d0Y3ozN3d4Mms0VnhhY1d1VWU1ZEY4Vy9rWkRUSjkwTkNwTER3Z0Vja1BYNk1tdUFsalhkTERPbjFrTkNRQUFwSm1TRndBQVFNcTBOMDY3THM1TzIwcDBGYllTTTg5OVZkNkNQTEJ4eDhUNDBhYXI0NGNyWG9tV2xtYUI1S2l1Z3RlVVVUdGl3NDdybGJ4eTFPeFpkOFN2LzlxWXFCKy9MOHBMMmdRQ3VhK3JETmE5Qk5aNjdrb29oQUVBQUFWSHlRc0FBQ0RQZFZ1Vm1PaGUycm91enBlNWtxOFRwQVg1N2ZVRGxmR2pWNGZHbWcyN1l1V0xhd1dTNHhiY2MxZDg5MHNubzNUSThjN1hTbDc1NGQ1NWMrS3owNFpGdzdqZFVUem90RUFnLzIyT3MyV3dSRk8zNzF2amZDbnNTUDNpVFUyaUFnQUFjcG1TRndBQVFBNjRxS2lWdU56cjYwSmhDMUpqMTlHUnNYWnJSYXg0K1dBc2UvWUZnZVNKaXd0ZUNTV3YvUE9sTDh5UGhrbFh4MjNWMjRVQjZkSzlHTlo5V2xpaU5jNlh3enBmMXkvZTFDb3lBQUFnMjVTOEFBQUFNdWpjS3NUZnVlakgzYWRyUlZpSENIeUl0dE5EWTgzV3FsaTY1cEJpVng1NjVPSDc0NnYzN3IrZzRKVlE4c3BmeWRyTmViTnZpb2FKWitLbU1XOEtCTGljbzNGaEtTelJHaGNXdzZKKzhhYi9LU29BQUtBbkJva0FBQUFnbzY3cnVMNG1CcUNudW9wZC8vcmFPL0h0N3lvQzVhdkhIbDBZWDUzZkxJZ0MwOUxTSEgvZWN2YStkaFcrcHRlZGl0cnkzY0lCTG5aTnh6WGpvcC9OdU1ULzNmOFVGUUFBMEJOS1hnQUFBSmwxblFpQUs2WFlWVmkrOC9VSDQrRTd0Z2lpd0hVdmZNMmVkVWZjV2o4bXBrODZHcFdsQjRRREFBQUFaSTJTRndBQVFHWmRKd0xndzZ4cHFZbDFyNzBiUDF6eFNyUzByQlZJQVZqMm5RZGozc2NWdk5KbTFlcDFIZGZaN3hXK0FBQUFnR3hTOGdJQUFBRG9CeGNXdS81QklBVWlXZDMzekRkdmpDbWpGTHpTVHVFTDZJbk5mLy9KaHZyRm01b2tBUUFBWENrbEx3QUFBSUFzVWV3cWJBdnV1U3UrK2tCeFRCbTFReGhjUU9FTHVBTFhpZ0FBQU9nSkpTOEFBQUNBREZMc1NvZUhGczJQUC8ydHQ2SjBpTklPbDZmd0JRQUFBR1NDa2hjQUFFQm0rUlA1a0RKdHA0ZkdtcTFWOGErdnZSUGYvdTVUSFQvWklKUUM5OWlqQytPcjg1c0ZRWThwZkFFQUFBQzlwZVFGQUFDUVdRMGlnTUwzL21JWGFiSHNPdy9Hdkk5dkVRUjlkbkhoNitPVFIwWER4RE54MDVnM2hRTUFBQUM4ajVJWEFBQUF3QlhZZFhSa3JOMWFFVTF2bkZic1NxR2FtdHA0NXBzM3hwUlJDbDVrWHZmQ1YvS3N6WnQ5azhJWEFBQUFjQUVsTHdBQUFJQVAwRlhzV3ZIeXdWajI3UE1DU2FrRjk5d1YzLzNTeVNnZHNrTVlaRjFMUzNQOGVjdjVkYUJmK3NMOGFKaDBkVFNNMngzRmcwNExDQXBITWdHNFVRd0FBTUNWVXZJQ0FBQUE2T2IxQTVYeG8xZUh4cG9OdTJMbGk0cGRhZmZZb3d2anEvT2JCY0dBK2Vzbm4zdnYrNlR3TmJtNktPckg3NHZ5a2piaFFINjdWZ1FBQUVCUEtIa0JBQUFBcWJlbXBTYld2Zlp1YlB6NW5sajU0bk1Db2RPeTd6d1k4ejV1UFNPNW8zdmg2OTU1YytMbWo1WkZRL1hScUN3OUlCd0FBQUFvY0VwZUFBQUFRT3EwblI0YWE3Wld4YisrOWs2cytIRlR0TFQ4ZzFCNHo1dzdaOFNmUFR3aXBveFM4Q0ozUGJOOFpjZDE5dnZacys2SVcrdkhSTjI0OXJocHpKdkNBUUFBZ0FLazVBVUFBQUNrUXJLRzhaWFc0YkhpNVlPeDdOa1hCTUlsUGJSb2Z2enBiNzBWcFVOMkNJTzhzV3IxdW83cjdQYzFOYlZ4NSswM1JzT2txNk5oM080b0huUmFRQUFBQUZBQWxMd0FBQUF5NnpvUlFPNUkxakMrdXUycVdMTmhseldNZktqdmZQM0JlUGdPMDd2SWJ5MHR6WjFYbDBVTDU4WW42MHFpZnZ5K0tDOXBFeEFBQUFEa0tTVXZBQUNBekpvZ0FoZzQxakRTRzhua28vL3ZhdzB4dFZyQmk4S3paT21LV0hMdWUyc2RBUUFBSUg4cGVRRUFBQUI1TFZuRDJQaUxZYkcyNlpBMWpQVFkrZldNMjRSQndmdWd0WTUxSXcrYThnVUFBQUE1VHNrTEFBQUF5Q3ZKdEs2Tk84Ykh1dGZlalkwLzMyTU5JNzFtUFNOcGR2RmF4M3ZuelltYlAxb1dEZFZIbzdMMGdJQUFBQUFneHloNUFRQUFBRGt2bWRiMVN1dndlT2xueCtPSjd5bDEwVGZXTThMN1BiTjhaY2QxL3UrUmViTnZpcnJLZDZOaDNPNG9IblJhUUFBQUFEREFsTHdBQUFDQW5HTmFGOWxpUFNOOHVHVEMxNStiOGdYWk5sTUVBQUJBVHloNUFRQUFBRG5CdEM2eTdlLys3TUY0WUtycFhkQlRwbndCQUFEQXdGUHlBZ0FBQUFaRU1xMXJ6ZGFxZUhYYkdkTzZ5S29GOTl3VlgzMmdPS2FNVXZDQ3ZyclVsSzhiSnBWRi9YODVFYlhsdXdVRUFBQUFXYUxrQlFBQUFQU2JqVHNteGl2YmkySnQwNkZZOXV3TEFpSHIvdVNQSG9ndnp0d1ZwVU9zbUlOczZKenlkZTc3Wk1yWG5iZmZHSk9yaTZKKy9MNG9MMmtURUFBQUFHU0lraGNBQUFDUU5idU9qb3kxV3l1aTZZM1RzZUxIVGRIUzhvOUNvVjhrWlpPLytzTmI0dE8xcndzRCtra3k1YXVsMjVTdjJiUHVpSTlQSGhVTkU4OUVYY1ZlcXgwQkFBQ2dENVM4QUFBQWdJeEpWakJ1M0RFKzFyMzI3cmtWak04TGhYNzN5TVAzeDFmdjNSK2xRN1lLQXdiUXF0WHJPcTd6cjVQVmpqZC90Q3pxeGxydENBQUFBRDJsNUFVQUFBRDBpUldNNUlwa2V0ZGpEMCtMQjZadUVRYmtvTTdWanN2UC8vM2F0ZHF4YnZUUnFDeTFVaFVBQUFBdVI4a0xBQUFBNkpIWEQxVEdLNjNETzFjd2Z2dTdUM1g4WklOUUdIQVBMWm9majkxL01pckxGTHdnSDN6UWFzZTZ5bmVqYnVUQktDOXBFeElBQUFCMG8rUUZBQUFBWE5hdW95UGpsZjhzajM5OTdaMVk4ZU9tYUdsUjZpSzMvTjJmUFdoNkYrUzVTNjEydkdGU1dkU05hNCs2aXIxUlBPaTBrQUFBQUVnMUpTOEFBQURnQWwybHJsZTNuWW1OUDk4VEsxOThYaWprcEFYMzNCVmZmYUE0cG94UzhJSkMwN25hc2R2cnBQUjE4MGZMb203c2lhZ3QzeTBnQUFBQVVrZkpDd0FBQUZLdTdmVFEyTGhqZkx5Njdhcll1T1Z3TEh0V3FZdmM5NTJ2UHhnUDM2SGNCV25SV2ZwYWZ2NzFvb1Z6WThxRUVxVXZBQUFBVWtQSkN3QUFBRkxtL2FXdUY0UkMzakM5QzBnc1dicmlndGRKNmV1VGRTVlJOL3BvVkpZZUVCQUFBQUFGUjhrTEFBQUFDcHhTRjRXZ3BxWTJIbGs4emZRdTRKS1MwdGVTYnYrOHVQUDJHMk55ZFpIU0Z3QUFBQVZEeVFzQUFBQUtqRklYaGVhaFJmUGpzZnRQUm1XWmdoZnc0VnBhbWp1dkxrcGZBQUFBRkFJbEx3QUFBTWh6U2wwVXFxU1k4ZGpEMCtLQnFjcGRRTzhwZlFFQUFGQUlsTHdBQUFBZ3p5aDFrUWFQUEh4L1BQcjVZNlozQVJsM2Nla3JzV2poM0pneW9TVHF4cDZJMnZMZFFnSUFBQ0RuS0hrQkFBQkFqdHQxZEdTODhwL2wwYkxuWGFVdUN0NmNPMmZFNy8yMzhmSHAycTNDQVByTmtxVXJMbml0OUFVQUFFQ3VVZklDQUFDQUhOTlY2bnAxMjVuWStQTTlzZkxGNTRWQ0t2ekpIejBRWDV5NUswcUhLSGdCQSt2aTB0ZTk4K2JFRFpQS29tNWNlOVJWN0kzaVFhZUZCQUFBUUw5UzhnSUFBSUFCOXZxQnluaWxkWGcwdlhFNlZ2eTRLVnBhTmdpRlZGbHd6MTN4MVFlS1k4cW8xNFVCNUtSbmxxK01aN3E5VGtwZjExVU9qN3JLZDZOdTVNRW9MMmtURWdBQUFGbWw1QVVBQUFEOWJPT09pZkhLOXFKb2FuNDdudmplY3gwL1Vlb2luV3BxYXVPeGg2ZkZBMU8zQ0FQSUswbnBxN3Zacys2SVNSUEtZM0oxVWRTTlBocVZwUWVFQkFBQVFFWXBlUUVBQUVBV0phc1h0eDY0Tmw3ZGRsVnMzSEk0bGozN1FpaDFRY1FqRDk4Zlg3MTNmNVFPVWZBQzh0K3ExZXRpVmJmWFNZbDEraTJUWThxRWtxZ2JleUpxeTNjTENRQUFnRDVSOGdJQUFJQU02bHE5Mkx6N2w3SHg1M3RpNVl2UEN3VzZtWFBualBqcWI0K09xZFhiaEFFVXJKYVc1czZydTJURjR3MlR5cUp1WEh0VWxSMjI0aEVBQUlBZVVmSUNBQUNBWG1vN1BUUmUzei9HNmtXNEFzbFVtMGNXVDR1SDcwZ21keDBYQ0pBNnlZckhaN3E5dHVJUkFBQ0FubER5QWdBQWdDdVVUT2w2ZmUrd2VIWGJtWGo5elNQblZpOENIK2F4UnhmR1Z6NjN4MnJHQXZmM2Z6by92djQzcjcxdmVoRndhUmV2ZUV3c1dqaTNjOFZqZFVWNzFGWHNqZUpCcHdVRkFBQkFKeVV2QUFBQXVJU0xwM1N0L1VsU1hEQ2xDM3Bpd1QxM3hWZnVMWTJwMVVvL2FWQS9abnY4NVZldWl5ZFdYdDg1c1Fqb3VTVkxWMXp3T3BuMjlmSEpvNko2MU5XbWZSV2VSaEVBQUFBOW9lUUZBQUFBY1haSzF5dXR3Nk41OXk5TjZZSStTbFl6L3NrajAyTGV4NVBKWFFvSmFWSTFmSC84NGQzRk1hWmlmanorNUhNQ2dUN3FuUGExK3NLZkpkTytKb3dyaWJweDdWRlZkampLUzlvRUJRQUFrQUpLWGdBQUFLVE9ycU1qWSt1QmEyUHI3cXM3cDNROThiMmtpR0JLRjJUQ2Q3NytZRHh3NjA2ckdWT3NlTkNwK05MTTdWRlh2U0MrOHZWbEFvRU11OVMwcjBrVHlxTjZkRkhValQwUnRlVzdoUVFBQUZDQWxMd0FBQUFvZUJ0M1RPeGN1L2pHN25maUYyL3NqNVV2UGk4VXlMQkhIcjQvSHYzOHNhZ3NVKzdpckZtVG11TkhmelU3dnYzMDZjNXBSRUIyZEU3N3V1aG45ODZiRTlkVkRvKzZ5bmVqK3RyajFqd0NBQUFVQUNVdkFBQUFDa3BTNk5xNmQvQkZheGRONllKc2VXalIvUGpkenhiRjFPcHR3dUI5a3ZXTjMzaXdPRzZhZkY5ODYvR25CUUw5NUpubEs5LzNNMnNlQVFBQThwdVNGd0FBUUdadDdyanF4ZEEvWGo5UUdhL3ZIUll0ZTk2TjVoMG5yRjJFZmpUbnpobnh4YnVyWXQ3SFRlN2k4cEwxall0dmE0bjZpZlBqNjMveldyUzBOQXNGQnNERmF4NXJhbXBqK2kyVFk4cUVrcWl1YUkrNmlyMGRmNytlRmhRQUFFQ09VdklDQUFESXJDTWl5STVkUjBmR0svOVpydEFGQXl3cEJUeXllRm84ZkVkUzdsTHc0c3JWajlrZTMvK2o4dmk3ZjUwZmp6LzVuRUJnZ0NXRnk0dExsN05uM1JHVEpwUkg5ZWlpcUJ0N0lxckxEaWwrQVFBQTVBZ2xMd0FBQUhKT1V1amFldURhMkxyNzZtaHFmanZXL2lTWi9LTFFCUVB0TzE5L01CNjRkV2VVRGxIdW9uZVNxVjVmbXJrOTZxb1h4Ri85WUxPcFhwQmpWcTFlRjZzdStwbmlGd0FBUUc1UThnSUFBR0JBZGExYzNQTldLSFJCam5yczBZWHgwS3kzb3JKTXVZdk1tRFdwT2Y2cnFWNlFGeFMvQUFBQWNvT1NGd0FBQVAybXE5Qmw1U0xraDRjV3pZL0g3ajhabFdXbUxaRjVYVk85cG45MGZuejliMTR6MVF2eXlJY1Z2Nm9yMnFPcTdIQ1VsN1FKQ3dBQUlFT1V2QUFBQU1pS2pUc214dGE5ZzZONTl5OWo3OEZUQ2wyUVI1SnkxKzkrdGlpbVZtOFRCbGxYUDJaN2ZQK1B5dU9mZjM1L2ZPTXZuaElJNUtsTEZiOXFhbXBqK2kyVFk4cUVrcWdvUFJQVjF4NlB5dElEd2dJQUFPZ0ZKUzhBQUFENlpOZlJrYkhuV0dtOHNyMG8zdGo5VHZ6aWpmMng4c1cxb2RBRitVZTVpNEdTVFBXNnYyRnJUUCtyMmJIMHBTR3haT2tLb1VBQlNDYjBYV3BLMzZLRmMyUFVpQ0ZSUGVycXFCcVIybldQVFo0UUFBQ2dKNVM4QUFBQTZKVS8vNWZhK0grKytRTkJRQUdZYytlTStPTGRWVEh2NDF1RXdZQ3FHcjQvL3VCekVaLzYyTDN4di8vdTM2MXdoQUoxcVNKbnN1N3h2bGtqNDdicTdXbUo0WWduQVFBQTZJbXJSUUFBQUVCdk5PODRJUVRJYzBtNWE5bDNIb3gvZnV5NGdoYzVaWHIxRzUwckhQLzREKzhYQnFSRXN1N3hVTnRIQkFFQUFQQUJUUElDQUFESXJHVHR5Z3d4QUxuc3dzbGR5bDNrcG1TRjQ5d2J0c2Iwdjc0OW52cHBSVHorNUhOQ0FRQUFBRkpMeVFzQUFDQ3pyRjBCY3BaeUYvbW9vdVJZZkdubXNmaE0vZWZqbjM1eTFTWFh2QUVBQUFBVU9pVXZBQUFBZ0FLbjNFVWhxQjJ4TS83Z2N4R2YrdGk5OGZUcWc1MnIzWURDVWpmV09uQUFBSUFQb3VRRkFBQUFVS0NVdXloRTA2dmZpT20vSGZIeUxHVXZBQUFBSUQyVXZBQUFBQUFLekVPTDVzZnZmcllvcGxadkMrVXVDbFZTOXZyRWc4VXhjK3I5OGVUVFRkSFMwaXdVSUo5WTh3NEFBUFNJa2hjQUFBQkFnYml3M0FXRnIzalFxWmg3dzlhNHM2NDhYdHlxN0FYa2ovckZtNXFrQUFBQTlJU1NGd0FBQUwzU1VEdE1DSkFqSG50MFlYenU1alBLWGFTV3NoY0FBQUJRNkpTOEFBQUFNc3VmeUFmNlRWTHVlbWpXVzFGWnBzd0NpWXZMWG8wYjlzV3ExZXNFQXdBQUFPUTlKUzhBQUlETU9pSUNJSnRxYW1yamtjWFQ0b0ZiZDBicEVPVXV1SlN1c3RmY0d5SmVublZ2UEwzNm9MSVhBQUFBa05lVXZBQUFBQUR5d0p3N1o4UVg3NjZLVDljbDVhNHRBb0VyTkwzNmpaaisyMmZMWHYreS91MTRadmxLb1FBQUFBQjVSOGtMQUFBQUlJYzl0R2grZkc3YXNKajM4YVRZcGR3RnZkVlo5cXFPZUdEVzUrT2ZmbkpWTEZtNlFpakFRRGtxQWdBQW9LZVV2QUFBQUFCeTBHT1BMb3pmL05TcG1ESnFoekFnZzJwSDdJdy8rRnpFd3R0bngrcWZsOFczSG45YUtKQWpxc3NPcGVXb1RlNDJBQURRVTBwZUFBQUFBRG1pcHFZMkhsazhMZVkySEl6S3NtYUJRQlpWRGQ4ZmkyL2JINSt2dnoxZTNqNDJubnk2S1ZwYS9IMEhBNmw0MEdraEFBQUFmQUFsTHdBQWdBd3Ftcm0rc2IxeG1pQ0FIbGx3ejEyeGNGYUZsWXd3QUNwS2pzWGNHNUpyYUx5ODQ5NzRsL1Z2eHpQTFZ3b0dBQUFBeUNsS1hnQUFBUFJLM2ZoZkNRSDZLRm5KK0xtYno4VFU2bTBkcnc0SUJBYlk5T28zT3E2SUIyWjlQbDUrdmRncVJ3QUFBQ0JuS0hrQkFBRFFLNlZEemdnQmVtSE9uVE5pN2gxVjhjQ3RPenYrUHJJYURuSlI3WWlkVVh0YnhHL2VjbXU4dVBXL1JPT0dmYkZxOVRyQkFBQUFBQU5HeVFzQUFBQ2dIenp5OFAzeDY3Y01pay9YYmcwckdTRS9GQTg2RlhOdjJOcHhSV3krYTM2OC9JdUl4NTk4VGpCQVh6V0tBQUFBNkNrbEx3QUFBSUFzNlpyYU5iZmhZRlNXYlJNSTVMSDZNZHM3cm9qN2I3MDlYdDQrMW5RdkFBQUFvRjhwZVFFQUFHVGUybzVyaGhnZ3ZVenRnc0pWVVhJczV0NXd6SFF2eUxCNzU4M3ArSFcvSUFBQUFENkFraGNBQUFCQUJwamFCZW5UTmQzcmQzN3QxdmkzTjZ2anBhYTJlR2I1U3NGQUx3d2JXaVFFQUFDQXkxRHlBZ0FBb0ZkS2k5OFJBblI0N05HRjhibWJ6OFRVNnFUWVpXb1hwRkh4b0ZNeGExSnp4eFh4MEp6WjhYTEx0YkgwbjV1aXBhVlpPTUNsSEJFQkFBRFFVMHBlQUFBQTlNcmtVYnVFUUdvdHVPZXVXRGlySWo1ZHR6TktoeWh4QU9kVkRkOGY5emNrMTlEWXZNODZSK0NTbWtRQUFBRDBsSklYQUFCQTVyVjJYRFBFQUlVbFdjZjQ2YW1WOGQrbUg0cktzZ01kUHprZ0ZPQ3l1cTl6ZkhWUFpmekwrcmV0Y3dRQUFBQjZSY2tMQUFBZzgxcEZBSVdocHFZMkZzNjlPVzYvOGFyNGRPM1dqcCs4TGhTZ3g1SjFqdE9yMytpNEl2NzdyOThlbTNlUGlaZWEyaFMrQUFBQWdDdW01QVVBQUFCd2tVY2V2ajl1LzlqZ21QZnhMUjJ2ckdNRU1xZWk1RmpNbXBSY0VRL05tUjB2dDF3YlA5MjhMMWF0WGljY1VtM0N1QkloQUFBQVhJYVNGd0FBQUVDSEJmZmNGUXRuVmNTbjYzWkc2WkJ0QWdHeXJtcjQvcmkvSWJraWR0Nm44RVc2bFF4T3oxbnJGMjlxZE1jQkFJQ2VVdklDQUFESXZOYTBIRFFweFN4NzlnVjNuTHgraHVmKzE0cVlNZmxnVkpZZDZQakpBYUVBQTBMaEN3QUFBTGdjSlM4QUFJRE1hMDNMUWE4WlZ1eHVrM2NVdTRCY3AvQUZBQUFBWEV6SkN3QUFBQ2g0aWwxQXZsTDRBZ0FBQUJKS1hnQUFBRUJCVXV3Q0NrMzN3dGVoMzd3OU51OGVFeTgxdGNVenkxY0toN3hYVVhvbUxVZGQ2MjREQUFDOW9lUUZBQUNRZWEwaWdJSHh5TVAzeCswZkd4eWZydHNacFVNVXU0RENWVkZ5TEdaTlNxNkkvLzdydDhmV2c2Tmk4eHUvaXNlZmZFNDQ1T2N6UGV5MEVBQUFBQzVEeVFzQUFDRERpbWF1YjIxdm5KYUtzOVpXRDNYREdWQTFOYld4Y083TjBURHBJK2VLWGR1RUFxUk9VdmlhWHAxY0ViL3phN2ZHNjRmR3hlYnRINGwvV3ZXemFHbHBGaEFBQUFBVUFDVXZBQUFBZW0xWThWVkNvTi9OdVhOR2ZIcHFaZHgrUTN0TXJVNUtYUW9NQUYyS0I1MksrakhiTzY2SXhiY05qWjNIWjhmTExkZkdmN3h4ekZwSHlBMUhSQUFBQVBTR2toY0FBQUNROHg1YU5EOXV2MmxZekpoOE1DckxEbmI4NUhXaEFGeUJxdUg3NC82Ry9SRU5GNjUxWFBYU2E2Wjh3Y0JvRWdFQUFOQWJTbDRBQUFEWnNibmpxaGNEOUU0eXJXdnF4OGJGN1RkZUZiZjhsOTFST21TSFVBRDZxUHRheHkvTkhCck5iMzArbXQ0Y2Fzb1hPYUcyZkxjUUFBQUFMa1BKQ3dBQUlEdFNzWWFsdE1TNlJqTG5rWWZ2ajAvVURJNVBYdmQyVEJtVmxMcE1tQUhJcHRvUk96dXVNT1VMQUFBQThvQ1NGd0FBQUwxV04vWWRJZEJyQys2NUsyNlpVaDYzMzlBZVU2dTNkZnhrbTFBQUJzaWxwbnk5dm1kb3ZQSUxVNzRndzZ4ckJBQUFla1hKQ3dBQUlEdGFPNjRaWW9EejNyK0M4VURIVHc4SUJpQUhkVTM1bW50RHhCL2VmV3U4Zm1oY2JOMVRGRC9kdkM5V3JWNG5JT2k5SXlJQUFBQjZROGtMQUFBZ08xcEZRTnAxbGJvYUpuMGticDV3TUNyTERvWVZqQUQ1cDNqUXFhZ2ZzNzNqaXJpL0llTFFiNTVkN2RpODY2cjRwMVUvczlxUlBydDMzcHlPWC9jTEFnQUE0REtVdkFBQUFPaTEwbUxyR2psUHFRc2dIYnF2ZGx4ODI5RFllWHgyYk4xM1RXemQ4Y3RZOWRKclNsLzAyTENoUldrNnJrbGVBQUJBcnloNUFRQUEwR3VUUiswU1Fvb3R1T2V1dUdWS2VYemkrbmVqYnN4aHBTNkFsS29hdnIvem1qVXA0a3N6bGI3Z2N1b1hiMnFTQWdBQTBCdEtYZ0FBQU5uUjJIRjlUUXdVaXBxYTJwZ3gvY1pvcUIwV241ejRUa3dadlQ5S2h4em8rQ3NIaEFQQUJaUytBQUFBSVBPVXZBQUFBSUQzU2FaMFRabHdiZWZxeGJxeGI4ZVVVVHM2ZnJwRE1BRDBtTklYSDJiQ3VKSzBIUFdvdXcwQUFQU1draGNBQUFCOWtreDQ4dUZzZnB0ejU0eVlNbWwwMUZRTzdwelNOYlY2VzV5ZDBHVktGd0NaZDZuUzE0NjNTcU41MTFYeHM5Y1B4S3JWNjRTVU1pV0RVM05VcXhvQkFJQmVVL0lDQUFESWdxS1o2eHZiRzZlbDRxd3picnRSeVN1UFhGem9PcnQyOFhqSFh6a3VIQUFHUkZmcGEzcDF4NHZiSWc3OTV1Mng4MWhGYk4xVEZQL3h4ckY0WnZsS0lRRUFBSkI2U2w0QUFBQlFvTHBXTHRaVWZpUnF4eXAwQVpBZktrcU9kVjcxWXpwZU5FUjg3Yjc2YUg2cktsN2ZNelMydkhreVh0NzR1b0k1QUFBQXFhUGtCUUFBQUhrdW1jNVZOVzVFTk5RT2k0NHZVVGYyN1pneWFrZFl1UWhBb2FnZHNiUGppcGg3UThlTHoxMjQ0bkg3cnVPbWZlVzV1ckVuMG5MVVJuY2JBQURvTFNVdkFBQ0E3Rm5iY2MwbzlFUFdWZzkxcC92SnhXV3VjZGUrRTFPcnQ4WFp5VnltY3dHUUhoZXNlT3p3aDNmZkdqdmFSblpPKzlxNXZ6MVd2ZlNhYVY4QUFBQVVGQ1V2QUFBQSttUlk4VlZDeUxDSEZzMlA0VU9Mb3FaeXNESVhBRnlCNGtHbjNwdjJGVGRFZkdubTBEaDA4dmJZZWF3aXR1NHBpamYzbkl3bFMxY0lDZ0FBZ0x5bDVBVUFBQUFEb0h1UnE3UWtvbmJzT3pIK21tTlJXWGF3NDYvdUVCQUE5RkZGeWJIT3EzNU14NHVHaUQvNFhIM3NQRDdhbXNlY3ZGZHRhVGxxbzdzTkFBRDBscElYQUFCQTlqUkdDdFkxbHBhWTVIVXBDKzY1SzY0WlhoeTFWVU5qV0VkR2RlTitGY09MZnhsVFJ1K1AwaUhKTkM1RkxnRG9ieGV2ZWZ6YWZmWFIvRlpWN0RoY0Vqc1B2S3Y0TlVESzAxUHlBZ0FBNkRVbEx3QUFBUHFrYnV3N3FUdHpWNEZyWEVWeGpDbi95SHVUdUJKbjF5b21Ebmc0QUNBUHZMZm1jZExaMTRwZlpORVJFUUFBQUwybDVBVUFBSkE5UHNUSkkzUHVuQkZWNDBaMGZ0ODFmU3Z4eVlsbnkxdWx4ZTB4WlZUWDlDMEZMZ0FvWkpjcWZuV3RldHg1NkNQeDVwNlRzV1RwQ2tGbFFFMU5iV3JPV3I5NFU1TTdEZ0FBOUphU0Z3QUFRUGI0RUNlSFBMUm9malRVRG51dnRKVTR2em94Y2Z6Y0JRRHdmbDJySGlOWjlkZ1E4UWVmcTQ5REo4dGk1N0dLMkhHb0tMYThlVEwyN2o4V3ExYXZFMVlQVEw5bGNzZXZ1d1FCQUFEd0laUzhBQUFBNkpOYnFyZm54ZnRNQ2w0UDM3SEZEUU1BTXFhaTVGam5WVDhtWXU0TlozOTI2c0ZiWTBmYnlQZldQZTUvNjdTcFh5VGVGQUVBQU5BWFNsNEFBQURaMHlxQzNMSHY4QmtoQUFCWlZ6em8xUHZXUFY0ODlXdm4vdmJZZCtoa1BMTjhwY0Q4dHdFQUFNQVZVZklDQUFESWtxS1o2MXZiRzZjSklrZnNPWFJLQ0FEQWdPays5U3ZPVGYzNjJuMzFzZlA0NkRqMDlyRFVscittVENqeGNBQUFBRndCSlM4QUFBRDZiTUU5ZDhXeVoxL0k2ZmQ0OUxpU0Z3Q1FlNnFHNysrNDRyTGxyOFBIZm1YdFkvNXJFZ0VBQU5BWFNsNEFBQURadGJuanFpLzBRMTR6ckRqbjMyTlNRdnZCSXpkN0lnR0F2SEJCK2V1Y3JyV1BoMCtWeFk3REpYSGk5Rld4NWMyVDhmYUpkcXNmYzk4UkVRQUFBSDJoNUFVQUFKQmRQc3dCQUNCanV0WSsxbzQ0KzNydXVlbGZEOHo2ZkN4NDlFZDVkNTY2c1NmOGR3RUFBTUFWdUZvRUFBQUFXWldLRDNNYWFvZmx4ZnZjc09ONlR5UUFBQVBCdWtZQUFLQlBsTHdBQUFDeXk0YzVBQUFBQUFCQW55aDVBUUFBa0JyTmV3Y0xBUUFnaDlTVzcwN0xVZjNoRHdBQW9FK1V2QUFBQUxJckZSL20zRHl4UFMvZVo5dEpEeVFBQVAydmZ2R21JMUlBQUFENlFza0xBQUFndTN5WWswUDJIVDRqQkFDQUhGRlRVNXVXb3g1MXR3RUFnTDVTOGdJQUFNaXVWSlM4U292ZnlZdjN1ZWZRS1U4a0FFQ09tSDdMNUxRYzFhcEdBQUNnejVTOEFBQUFzcWhvNXZwVWZLQXplZFN1dkhpZlI0OHJlUUVBQUFBQWtIK1V2QUFBQUVpTlpjKytJQVFBZ0J3eGFzU1F0QnpWSkM4QUFLRFBsTHdBQUFDeWIyMGFEam5uemhudU5BQUFWNnlpTERVZlVSeHh0d0VBZ0w1UzhnSUFBQ0FqcXNhT3lJdjN1V0hIOVc0V0FBRDlxVlVFQUFCQVh5bDVBUUFBWkYrckNBQUE0RUoxWTAvNDd3RUFBSUFycE9RRkFBQ1FmYTFwT0dSRDdiQzhlSi9OZXdkN0lnRUE2RS9XTlFJQUFIMm01QVVBQUpCOVB0VEpJVzBuWlFDUURhdmZxQlVDMENNVkpXMnBPR2Y5NGsxTjdqWUFBTkJYU2w0QUFBRFpsNG9QZGNhTnlJLzN1ZS93R1U4a1FCWjg1ZXZMNHE4Yko4YXBYeFlMQTdnaTVTa3BlUUVBQUdTQ2toY0FBQUFaTWY3YTlyeDRuM3NPblhLekFMTGs4U2VmaXdlL2VUaWEzNm9TQnNCWmEwVUFBQUJrZ3BJWEFBQkFsaFhOWE44b2hkeHg5TGlTRjBBMnRiUTB4NEpIZnhSUE5kV1o2Z1Y4b0VVTDV3b0JBQUNnQjVTOEFBQUF5SWhicXJmbnhmdGM5dXdMYmhaQVAvakdYendWajMxL2lLbGVRTm8xaVFBQUFNZ0VKUzhBQUlEK1lVMExBS216YXZXNnpxbGVmOTA0MFZRdjRBS2pSZ3hKeTFHUHVOc0FBRUFtS0hrQkFBQ1FNUXZ1dVNzdjN1ZUdIZGU3V1FEOTZQRW5uNHNIdjNrNFZyOVJLd3lnVTBWWmFqNmVhSFczQVFDQVRGRHlBZ0FBNkIrcFdOTnl6VEJUV2dDNHRKYVc1dmpLMTVmRi8vdjBXQ3NjZ1JpYW1rRmVTbDRBQUVCbUtIa0JBQUQwajFTc2FTa2RWcFFYNzdONTcyQlBKTUFBZVdiNXlzNFZqbi8va3hvckhDSEZxa2FjU010Ulc5MXRBQUFnRTVTOEFBQUEra2NxSm5sTkdwOGY1YW0ya3g1SWdJSDJyY2VmN2x6aHVPSS82cFM5Z0lKVnYzaFRxeFFBQUlCTVVQSUNBQURvSDBkRWtEdjJIVDRqQklBY2tLeHcvQi8vNjZsNDdQdEQ0dVVka3dRQ0tWSmJ2anNOeDN6VG5RWUFBREpsa0FnQUFBRDZSU29tZWQwOHNUMHYzdWVlUTZjOGtRQTVaTlhxZFIxWHhMM3o1c1FEc3daRjdZaWRRZ0VLUWFzSUFBQ0FUREhKQ3dBQW9COFV6Vnh2a2xjT09YcGN5UXNnRnoyemZHVXNlUFJIOGIrZnI0N210Nm9FQWdVcUtYU21SS3U3RFFBQVpJcVNGd0FBUVA4cCtIVXRrMGZ2eTR2M3VlelpGenlOa0FGcm11dUVRRllzV2JxaXMrejE5eitwaVVNbnl3UUNCV2JZMEtLMEhMWFYzUVlBQURKRnlRc0FBS0QvdEJiNkFVdUhuSENYSVFXU2N0ZHZmR040L09PNms4SWdxNzcxK05NeDYwc3ZLWHRCZ1JrMVlvamYvd01BQVBTUWtoY0FBRUQvYVVyRElSZmNjMWRldk04Tk82NzNSRUlQYlRsUUhWOStvanJtZlBFZll1V0xhd1ZDdjFIMmdzSlNVWmFhanlaYTNXMEFBQ0JUQm9rQUFBQ2czeHhKd3lHdkdWYnNUa09CMlhWc1pEeXhla1I4NDl0TGhjR0FTc3BlMytyNCt2dGZ2aTgrWDc4L0trcU9DUVh5VUVYcG1iUWN0ZFhkQmdBQU1rWEpDd0FBb1Ara1lwTFgySkg1VWZKcTNqczRwbFo3S09GeWxMdklWZDNMWHJNK2RpeXFodThYQ3VTUmltR25VM0hPK3NXYld0MXRBQUFnVTVTOEFBQUErazhxSm5tTkhmR1J2SGlmYlNjOWtQQkJ1c3BkUzFlOEVpMHR6UUloWjNXVnZSWXRuQnQzMy9adTFJN1lLUlRJQTBPTDJ0Tnd6RGZkYVFBQUlKT1V2QUFBQVBwUEtpWjVqUnVSSCs5ejMrRXpua2k0aU1sZDVLc2xTMWQwWEdmTFhwLzYyT0NZWHYyR1VDQ0hWWlllU01NeFc5MXBBQUFnazVTOEFBQUEra25SelBWSDJodW5GZnc1eDErYkg1TVo5aHc2NWFHRWN6YnN1RDZlZitVanlsM2t2YzZ5VjhmWDJiUHVpUHRtall4UGpOc1Z4WVA4OHg1eVNVMU5iVnFPMnVwdUF3QUFtYVRrQlFBQTBMODJkMXoxaFh6QWNXVnRlZkUrang3M29UOHMvL2NwOGZ6NnQrT0pKVThKZzRLeWF2VzZqdXRzbWVRTDl6WEU5SWw3bzZMa21HQWdCMHkvWlhMSHI3dlNjTlJXZHhzQUFNZ2tKUzhBQUlEK2RhVFFEMWg1emNHOGVKL0xubjBoZnZESXpaNUlVcWZ0OVBENHdVK3JZc1c2bmJIeXhlOExoSUxXMHRJYy8rTi9OWGQrLy90ZnZpK21UejRWdFNOMkNnWUcwTENTMUh3czBlUnVBd0FBbWFUa0JRQUEwTDhhTzY0WmhYN0lPWGZPaUpVdnJuVzNJWWRZeVVqYWZldnhwenUvM2p0dlRueDIyckNZWHYyR1VHQUFWSTh1U3N0Umo3amJBQUJBSmlsNUFRQUE5SzlVZk5oVE5YWkVYcnpQcFBReXRYcWJwNUtDbFV6dCt1ZWZWY1UvckV5bWRsbkpDSWxubHEvc3VNNnVjbHo0R3cweGE3SlZqdENmaGc1Snh6bnJGMjlxZExjQkFJQk1VdklDQUFEb1g2bFkyekoyWkxFN0RRTm9UWE5kdlBUYXU2WjJ3V1VrcXh5LzhSY2RWOGYzWC83Qy9KaiswWWo2TWRzRkExbFdOZUtFRUFBQUFIcEJ5UXNBQUtCL3BXS1MxOWdSSDhtTDk5bThkM0JNcmZaUVVoaDJIUnNaUDN5NUl0WnMyQlVyWC93SGdVQVBQUDdrYy9GNHg5ZlpzKzZJbVZQSHhQU0pwbnRCdGxTVXRLWGhtUGFXQXdBQUdhZmtCUUFBMEkrS1pxNXZhbStjVnZEbnJCdi9xN3g0bjIwblBaUGt0NlRZdGZiMWtiSGkzdzdGc21kZkVBajAwYXJWNnpxdXM5OHZXamczUHZXeHdURzkrZzNCUUFhVnA2UGtkY1NkQmdBQU1rM0pDd0FBb1ArOTJYRk5LT1FEbGc0NWt4ZnZjOS9oTTU1RzhrN2I2ZUd4Wm10VnZQVHpkK0l2di91VVFDQkxsaXhkRVVzNnZ0YlUxTWJkczIrS1dSODdGbFhEOXdzRytpQ1psdGZ4YjdJMEhMWEozUVlBQURKTnlRc0FBS0QvdFVhQmw3d21qOTZYRis5eno2RlRua2J5Z21JWERKeVdsdWI0Vm5MRjJZTEtyLy9hNktnZnY4ODZSK2lGc2FQTElpVWxyMVozR3dBQXlEUWxMd0FBZ1A2WC9NbitHWVY4d05JaEovTGlmUjQ5cnVSRjdsTHNndHpUZlozamw3OHdQK29uWFIyZkdMY3JpZ2Y1OXdsY2lRbmpTdEp5MUZaM0d3QUF5RFFsTHdBQWdQNTNKQTJIZk9pMzVzY1QzM3N1cDkvanNtZGZpQjg4Y3JNbmtweXg2OWpJV1B2NnlIaTFSYkVMY3QzalQ1Ny9kOXp2Zi9tK3FKOTRKdXJIYkJjTVhFYko0TlFjMWJwR0FBQWc0NVM4QUFBQStsOWp4L1cxUWo5azZiQWlkeHF1d0pZRDFiR3BkVmlzK0xkRG5jVkRJUDk4Ni9Hbk83L1cxTlRHM2JOdlV2aUNEMUJkMFo2S2M5WXYzblRFM1FZQUFESk55UXNBQUtEL3BlSkRuMG5qODJOVXc0WWQxOGZVNm0yZVN2cjl1WHZwUDRwaXpZWmRzZkxGNXdRQ0JhS2xwVG0rMVhFbEZMN2cvVXFLVWxIeVd1dE9Bd0FBMmFEa0JRQUEwTStLWnE1dmFtK2NWdkRuTEMyNXlzMkdjOXBPRDQ4MVc2dmlwWisvRXovNmNWTzB0RmpGQ0lWTzRRdmVyN1o4ZHhxT2FZb1hBQUNRRlVwZUFBQUFBMk56eDFWZnlBZXNHL3RPWHJ6UDVyMkRZMnExQjVMTVM5WXdydjNGc0ZqN3FqV01rSFlLWDNEMjJVK0pKbmNiQUFESUJpVXZBQUNBZ1ZId2Y4Si9YRmxiWHJ6UHRwTWVSakpqMTdHUjhjcWJJNlBwalRPeGRNVXIwZEppRFNQd2ZoY1h2bWJmZm1QVVQ3bzZQakZ1VnhRUE9pVWdDdGIwV3lZbi83Wk13MUdWdkFBQWdLeFE4Z0lBQUJnWWpSM1hqRUkrWU9VMUIvUGlmZTQ3Zk1iVFNLK3RhYTZMVjdkZEZSdTNIRGF0QytpeHBQRFZjcTd3bFZpMGNHNThzcTQ0NnNmdmk0cVNZd0tpb0l3YU1TUXRSN1d1RVFBQXlBb2xMd0FBZ0lHUmlnOS9GdHh6Vjg0WFgvWWNNaldGSzllMWdyR3ArZTE0WWtreXFlc1ZvUUFaczJUcGlsaHk3dnZacys2SVcrdkhSTU9FRTFFN1lxZHd5SHNWWlZlbjRwejFpemMxdXRzQUFFQTJLSGtCQUFBTWpGU3NjYWthWFpyejcvSG9jU1V2UGxoUzZ0clVPaXhlYlhrbmZ2VGpKaXNZZ1g2emF2VzZqdXZzOTkzWE90YU5QR0RLRjNtcHVxSTlEY2M4Nms0REFBRFpvdVFGQUFBd01GSlI4cG8wZm5ET3Y4ZGswdGdQSHJuWkUwa25wUzRnRjEyODF2SGVlWFBpaGtsbFVUZXVQZXJIYkJjUWVhR2tLQlVscnlaM0dnQUF5QllsTHdBQWdBRlFOSFA5a2ZiR2FRVi96bkVqM0d0eW0xSVhrSStlV2I0eW51bjJldEhDdWZISnV1S29HM00wcW9idkZ4QTVxYlo4ZHhxT3FlUUZBQUJralpJWEFBREF3Rm5iY2MwbzVBT092elkvSmpaczJIRjlUSzNlNW9sTUFhVXVvQkF0V2JvaWxwejd2bXUxWTEzMW9LZ2Z2ODlxUjNMQzdGbDNkUHphbG9hakhuRzNBUUNBYkZIeUFnQUFHRGl0VWVBbHI4bWo5N25MREtpa3dMZHArK0JvYW40N25saVNGTHBlRVFwUTBDNWU3WmlVYTI2YVBDcHFLOStOdXBFSGxMNFlFR05IbDBWS1NsNk43allBQUpBdFNsNEFBQUFEcDdYUUQxZzY1RVRuUkpIdUh6Ym5vdWE5ZzJOcXRRY3kzKzA2TmpLMjdpdVBWN2RkRlJ1M0hJNWx6NzRRU2wxQTJxMWF2YTdqT3YrNmUrbXJla1NiOVk3MGl3bmpTdnorSGdBQW9JK1V2QUFBQUFaT1k4ZjF0VUkvNUl6YmJzejVrbGZiU1E5alB1cGF2ZGl5NjB4cytQbWVXUG5pU3FFQWZJaUxTMS9kMXp0V2w1K00yaEU3aFVUR1ZaU200NXoxaXplMXV0c0FBRUMyS0hrQkFBQU1uQ05wT09UWWtjVTUveDczSFQ3amFjeHhiYWVIeDhiL0hCOWI5MXh0OVNKQUJsMjgzakd4YU9IY21ES2hKS29yMm1OeXhaNG9IblJLVVBSSjFZZ1RhVGptV25jYUFBRElKaVV2QUFDQUFWSTBjMzFUZStPMGdqL24yQkVmeWZuM3VPZVFENjl6ellZZDEzZXUwWHkxNVozWThzYitXUG1pejAwQitzdVNwU3N1ZU4yMTRyRnExRldtZmRFckZTVnRhVGhtcXpzTkFBQmtrNUlYQUFEQXdOcmNjZFVYOGdGdm50aWU4Ky94NkhFbHI0R1VyRjNjdW5kWXRPeCtOelp1T1J6TG5uMGhUT2tDeUIwWHIzaE1KTk8rSm93cmlhcUtNMUU5b2kycWh1OFhGQitvWE1rTEFBQ2d6NVM4QUFBQUJsWnJGSGpKYTF4WjduK29sNVNLZnZESXpaN0dmckRyMk1qWXVxODhYdDEyVlRUdlBHSHRJa0NldW5qYVYwTHhpMHRKbm91TzN3R2s0YWlON2pZQUFKQk5TbDRBQUFBRHE2bmp1cnVRRDFoNXpVRjNPYVc2Q2wxYjkxd2RUYzF2eDlxWFg0dVdGb1V1Z0VMMVljV3ZrY05QVy9XWVFxTkdERW5MVVkrNDJ3QUFRRFlwZVFFQUFBeXNwalFjY3NFOWQ1MWJ3WmU3TnV5NFBxWldiL05FOXBKQ0Z3Q1hjcW5pMTczejVzU1lpcEtvR2wwVWs4ZWRpUExpWTFGUmNreFlCYXFpN09wVW5MTis4YVltZHhzQUFNZ21KUzhBQUlDQjFacUdRMWFOTG5XbkM4aVdBOVd4ZGUrd2FObjlicmVWaXdCd1paNVp2dko5UDZ1cHFZM3B0MHp1blBwVlVmcHVWSmVmak9yU2cxRTg2SlRBOGx6ZDJCTnBPT1ptZHhvQUFNZzJKUzhBQUlBQlZEUnpmVk43NDdTQ1ArZWs4WU56L2owMjd4MGNVNnM5a3hkTEpwd2wyYlRzT2hON0RwMDZWK2d5b1F1QXpHcHBhZTY4THRhOS9GWFM4ZHNKazcveXo5Q2k5alFjczlXZEJnQUFzazNKQ3dBQVlPQWxmL0svdnBBUFdEZitWem4vSHR0T3B2c2hUTll0N2o1YUZwdTJKNFd1ZDJMTEcvdGo1WXRyUTZFTGdJSDBRZVd2eEtLRmMyTjR5YURPdFk4VnBXZGk1UERUVVR0aXA5QnlUR1hwZ1RRYzA2cEdBQUFnNjVTOEFBQUFCbDVyRkhqSmEvdzF1ZCtnMm5mNFRHb2V1SzdwWEhzUG4xMjN1UGJsMTZLbFJaa0xnUHl5Wk9tS1MvNjhhL3JYNkJGRG9yenM2dmNLWU5ZLzlyOTc1ODNwK0hWL0dvN2E2RzREQUFEWnB1UUZBQUF3OEpJLytYOTNJUjl3OHFoZE9mOGVrMVdFaFdiTGdlclljNlFrdHU2NTJuUXVBRkxqY3RPL0VrbnhhTmpRb3BneW9lVHM3MVBHbmVqOGFncFk1bDFYT1R4U1V2SnFkYmNCQUlCc1UvSUNBQUFZZUtsWTc3TGducnRpMmJNdjVPejdPM284ZjB0ZTNWY3RKaFBKa3NMYUUwdWVDMlV1QUhpL1o1YXZ2T3hmVDlaQUppYU1LNG1Td1JIVkZlMHhkSEI3bEJjZmk0cVNZd0xzZ1lxeXExTnh6dnJGbTFyZGJRQUFJTnVVdkFBQUFBWmVLa3BlVmFOTGMvcjlKUVcwSHp4eWMwNi94dzh1Y3dFQW1mSkJheUM3dTdnSU5uVEl1MUZkZm5ZOXRiV1E1OVdOUFpHR1k2NTFwd0VBZ1A2ZzVBVUFBRERBaW1hdWIyMXZuRmJ3NTV3MGZyQ2JmWVdVdVFBZ3QxMUpFYXltcGphbTN6SzU4L3ZSSTRaRStibXBWaFdsWjJMazhOT2QzeGY2ZExDS2tyWTBQQTZ0L280QUFBRDZnNUlYQUFCQWJrZ21BTXdvNUFQZVBMRTk1OS9qaGgzWHg5VHFiZjMyLzIvTGdlclljNlFrdHU2NVdwa0xBQXBNUzB0ejUzV2xacys2SThhT0xudnY5WlFKSmU5OTM3MFlsc2lYYVdIbFNsNEFBQUFabytRRkFBQ1FHMXFqd0V0ZTQ4cmFVbmxqMjA0UGp5MzdSOGVlSTROanoxc1JUYzF2eDlIanB6clhRMGE4NHNrSEFEcXRXcjJ1MS8vYmUrZk42ZmoxbHpsMW5yTXJMWGVsNGRZMWVub0JBSUQrb09RRkFBQ1FHNW82cnQ4dTVBTldYbk13NTk5ajg5N0JNYlc2ZC8vYlMwM2xXdnZ5YTlIU29zZ0ZBR1RYTTh0WDV0eDdHalZpU0pwK0h3OEFBSkIxU2w0QUFBQzVJUlVmRGozMFcvUGppZS9sN2pyQ3RwT1gvK3RKa2F2dFZGRnMyajQ0M2o3NWJqVHZQQkU3OTd3VksxOU10bTBxY3dFQWRLa2VkWFVham5tMGZ2R21JKzQyQUFEUUg1UzhBQUFBY2tNcVNsNjExVU56K3YwbEU3ZzI3TGkrODN0RkxnQ0EzcXNhY2NMdjRRRUFBREpJeVFzQUFDQUhGTTFjZjZTOWNkcWJIZDlPS09SempoMlIyeE1kdnZIdHBmRU5qeU1BUUo5Vmx4MUt3ekViM1drQUFLQy9YQzBDQUFDQW5ORmE2QWVzRy91T3V3d0FVT0JtejdvamlnZWQ5dnQzQUFDQURGTHlBZ0FBeUIyTmhYN0FXNnEzdThzQUFBVnU3T2l5dEJ6VnVrWUFBS0RmS0hrQkFBRGtqbFI4U0RUbnpobnVOQUJBQVpzeW9TUVY1NnhmdkVuSkN3QUE2RGRLWGdBQUFMbWpOUTJIL09pazBlNDBBRUFCcTY1b1Q4TXhON3ZUQUFCQWYxTHlBZ0FBeUJGRk05ZW5ZaExBcFBHRDNXd0FnQUpXTWZSRUdvNXBpaGNBQU5DdmxMd0FBQUJ5eTlwQ1AyRGQrRis1eXdBQUJheXk5RUFhanFua0JRQUE5Q3NsTHdBQWdOeFM4QjhXMVkwNjRpNERBQlNvUlF2bituMDdBQUJBRmloNUFRQUE1SmJXUWo5ZzVUVUhvNmFtMXAwR0FDaEFFOGFWcE9Xb1NsNEFBRUMvVXZJQ0FBRElMZjgvZTNmVEc5ZDVwZ240QkZIcFk5S1VNcFJsUmFacHQ2MGlsVmlXaW81b1MwNHNzVVNMcGhMVGhMNGNjeFNyMElMY3NZTUFNVWVZblh2QjdMSWtrRDlRK2dmVVB6amExcUpBTHNjUVFCS3lsUmhpYThoUmhoaTFZWHVxN1BTMDAvN1NCOGs2NXp6WEJSQm5mWi9uWFJSNGJqeHZpSTlGUTBmMm16UUFRQUU5dnZPVENERVhLN1dtOWJRQUFNQ0dVdklDQUFESWtGSzFrVWJJT2REM0E4TUdBQ2lnM2gvK05VSk1XN3dBQUlBTnArUUZBQUNRUFhORkQ5ai8yS2VtREFCUVFEMWR0eUxFVlBJQ0FBQTJuSklYQUFCQTloVCtvMUgvTHJmYkFBQVV6Wm54MFNoUlU5TUdBQUEybXBJWEFBQkE5aFMrNU5Xell5a3BsL3RNR2dDZ1FQNng1eC84WGdjQUFGZ25TbDRBQUFEWkUrS2owZENSL1NZTkFGQWd2YnRDZkhKWXJOU2ExdElDQUFBYlRza0xBQUFnWTByVlJob2g1MERmRHd3YkFLQkFIdit2cXhGaTJ1SUZBQUIwaEpJWEFBQkFOczBWUFdEL1k1K2FNZ0JBZ2ZSMTM0d1FVOGtMQUFEb0NDVXZBQUNBYkNyOHg2UCtYVzY1QVFBb2lqUGpvMUdpcHFZTkFBQjBncElYQUFCQU5oVys1Tld6WXlrcGwvdE1HZ0NnQUo3WnU5M3ZkQUFBZ0hXazVBVUFBSkJOSVQ0ZURSM1piOUlBQUFYdytNNVBJc1Jjck5TYTF0RUNBQUFkb2VRRkFBQ1FRYVZxSTQyUWM2RHZCNFlOQUZBQXZULzhhNFNZdG5nQkFBQWRvK1FGQUFDUVhYTkZEOWovMktlbURBQlFBRDFkdHlMRVZQSUNBQUE2UnNrTEFBQWd1d3IvRWFsL2w5dHVBQUR5N3NMRVdKU29xV2tEQUFDZG91UUZBQUNRWFlVdmVmWHNXRXBHVHd5Wk5BQkFqajI1WjV2ZjV3QUFBT3RNeVFzQUFDQzcwZ2doZjdMM1VaTUdBTWl4L2owZlI0aTVXS2sxcmFFRkFBQTZSc2tMQUFBZ28wclZSb2hOQVhzZjIyellBQUE1OXZqMjJ4RmlwaVlOQUFCMGtwSVhBQUJBdGwwcmVzQkRUMzFzeWdBQU9WVXU5eVhkMis1RWlPcXFSZ0FBb0tPVXZBQUFBTEt0OEIrVEJudm5UUmtBSUtkT0hOM3ZkemtBQU1BR1VQSUNBQURJdGhBZms4NmRQbW5TQUFBNTFQdG9LVVRPU3EyWm1qWUFBTkJKU2w0QUFBRFpsa1lJT2ZqamJwTUdBTWloL2grdFJvaDV6YVFCQUlCT1UvSUNBQURJc0ZLMXNkQjZyQlE5WjNuUDl3d2JBQ0NIK3JwdlJvanBxa1lBQUtEamxMd0FBQUN5THkxNndFTlAzRFpsQUlDY09UTStHaVdxa2hjQUFOQnhTbDRBQUFEWlYvaVBTajA3bHBKeXVjK2tBUUJ5NUptOTI2TkVUVTBiQUFEb05DVXZBQUNBN0VzamhCeDdlY0NrQVFCeTVQR2RuMFNJdVZLcE5SZE1Hd0FBNkRRbEx3QUFnT3dMY1QzTTNzYzJtelFBUUk3MFA3SVVJV1pxMGdBQVFCWW9lUUVBQUdSY3FkcFliajNtaXA3ejBGTWZHellBUUU2TURCOUx1cmZkaVJCMTFyUUJBSUFzVVBJQ0FBREloOEovWEJyc25UZGxBSUNjMlB0a2Q1U29xV2tEQUFCWm9PUUZBQUNRRDJtRWtKZmVQR1hTQUFBNXNLKzNGQ0pucGRaTVRSc0FBTWdDSlM4QUFJQjhTQ09FN092OUx5WU5BSkFEL1krdVJJZzVaOUlBQUVCV0tIa0JBQURrUUtuYVdHZzlDdjhsN2JtblB6TnNBSUFjNk9tNkZTRm1hdElBQUVCV0tIa0JBQURrUjFyMGdJTzlOMDBaQUNEakxreU1SWWs2YTlvQUFFQldLSGtCQUFEa1IrRS9NblZ0V1UzT25UNXAwZ0FBR2Ziako3ZEZpWnFhTmdBQWtCVktYZ0FBQVBtUlJnaTU3OGtmbWpRQVFJYjEvMmcxUXN6RlNxMjVZTm9BQUVCV0tIa0JBQURrUktuYVNDUGtmTzdwN3hzMkFFQ0c5WFdIdUdMYlZZMEFBRUNtS0hrQkFBRGt5N1dpQnp6MHhHMVRCZ0RJcUFzVFkxR2lwcVlOQUFCa2laSVhBQUJBdmhSK28wRFBqcVZrOU1TUVNRTUFaTkNUZTdaRmlacWFOZ0FBa0NWS1hnQUFBUG1TUmdnNStPd2Vrd1lBeUtEK1BSOUhpTGxTcVRWZDF3Z0FBR1NLa2hjQUFFQytwQkZDUHZmMDkwMGFBQ0NEK25mK0pVSk1CUzhBQUNCemxMd0FBQUJ5cEZSdExMY2VjMFhQZWVpSjI0WU5BSkF4WjhaSGs2MmI3a2FJbXBvMkFBQ1FOVXBlQUFBQStaTVdQV0RQanFWazlNU1FTUU1BWk1nemU3Zjd2UTBBQU5BaFNsNEFBQUQ1RStMNm1NRm45NWcwQUVDRzlPLzVPRVRPU3EyWm1qWUFBSkExU2w0QUFBRDVrMFlJK2R6VDN6ZHBBSUFNNmQvNWx3Z3hyNWswQUFDUVJVcGVBQUFBT1ZPcU5oWmFqOFdpNXp6MHhHM0RCZ0RJaURQam84bldUWGNqUkUxTkd3QUF5Q0lsTHdBQWdIeEtpeDZ3WjhkU01ucGl5S1FCQURMZ21iM2IvYzRHQUFEb0lDVXZBQUNBZkVvamhCeDhkbzlKQXdCa1FQK2VqNk5FblRWdEFBQWdpNVM4QUFBQThpbU5FUEs1cDc5djBnQUFHWEJ3OTJLRW1IT1ZXblBadEFFQWdDeFM4Z0lBQU1paFVyV3gwSG9VL2t2Ym9TZHVHellBUUlkZG1CaUxFalUxYlFBQUlLdVV2QUFBQVBJckxYckFuaDFMeWVpSklaTUdBT2lnSHorNXplOXJBQUNBRGxQeUFnQUF5SzgwUXNqanovZVlOQUJBQi9YL2FOWHZhd0FBZ0E1VDhnSUFBTWl2TkVMSTU1Nyt6S1FCQURxa1hPNUwrcnB2Um9nNlY2azFsMDBjQUFESUtpVXZBQUNBbkNwVkd3dXR4MkxSY3c3MjNqUnNBSUFPT1hGMGY1U29xV2tEQUFCWnB1UUZBQUNRYjJuUkEzWnRXVTNPblQ1cDBnQUFIYkN2dCtSM05RQUFRQVlvZVFFQUFPUmJHaUhrME1CT2t3WUE2SUQrUjFmOHJnWUFBTWdBSlM4QUFJQjhTeU9FUFBUVXh5WU5BTERCUm9hUEpUMWR0eUpFdlZhcE5aZE5IQUFBeURJbEx3QUFnQndyVlJzTHJjZGkwWE1POXM0bjVYS2ZnUU1BYktBRCszWkZpWnFhTmdBQWtIVktYZ0FBQVBtWFJnZzU5dktBU1FNQWJLRCtucy84bmdZQUFNZ0lKUzhBQUlEOFN5T0VITmk3eGFRQkFEYnk5OWVlbXlGeVZtck4xTFFCQUlDc1UvSUNBQURJdjVrSUlZZjYvOVdrQVFBMnlKbngwV1RycHJzUm9sNHpiUUFBSUErVXZBQUFBSEt1Vkcwc3R4NXpSYy9aczJNcEdUMHhaT0FBQUJ2Z21iM2JvMFJOVFJzQUFNZ0RKUzhBQUlCaVNDT0VQUDU4ajBrREFHeUF5aE9yVWFMT21EWUFBSkFIU2w0QUFBREZrRVlJK2R6VG41azBBTUE2SzVmN2tyN3VteEdpcmxScXpWa1RCd0FBOGtESkN3QUFvQmpTQ0NFSGUyK2FOQURBT2p0eGRML2YwQUFBQUJtajVBVUFBRkFBcFdwanVmVzRWdlNjWFZ0V2swdHZuakp3QUlCMU5MQTN6S2VEMUxRQkFJQzhVUElDQUFBb2pqUkN5S01ILzhHa0FRRFdVZjhqUzFHaXpwZzJBQUNRRjBwZUFBQUF4UkhpSTlXaGYveXJTUU1BckpNejQ2Tko5N1k3RWFJdVZtck5CUk1IQUFEeVFza0xBQUNnSUVyVnhtenJzVkwwblB0MmZaaU1uaGd5Y0FDQWRmRE0zdTFSb3FhbURRQUE1SW1TRndBQVFMR2tFVUlPUHJ2SHBBRUExa0hsaWRVb1VWM1ZDQUFBNUlxU0Z3QUFRTEdFK0ZoMWJQLzNUQm9BWUkyVnkzMUpYL2ZOS0hGVEV3Y0FBUEpFeVFzQUFLQlkwZ2doajVldm16UUF3Qm9iSHprWUplcGNwZFpjTm5FQUFDQlBsTHdBQUFBS3BGUnRMTFFlaXhHeVRyNzl1b0VEQUt5aC9wN1Bva1IxVlNNQUFKQTdTbDRBQUFERkUrS2oxVXY3TjVzMEFNQWFHdGdUNXFwR0pTOEFBQ0IzbEx3QUFBQ0tKNDBROHRBVHQwMGFBR0NObkJrZlRiWnV1aHNoNmtxbDFwdzFjUUFBSUcrVXZBQUFBQXFtVkcyRTJFelFzMk1wT1hmNnBJRURBS3lCb3dQYm8wUk5UUnNBQU1nakpTOEFBSUJpdWhZaDVOREFUcE1HQUZnRC9ZK3VSSW5xcWtZQUFDQ1hsTHdBQUFDS0tjVEhxK3BQL285SkF3QThwSkhoWTBsUDE2MG9jVk1UQndBQThrakpDd0FBb0pqU0NDSDM3Zm93R1QweFpOb0FBQS9oY0dWM2xLaHpsVnB6d2NRQkFJQThVdklDQUFBb29GSzFNZHQ2TEViSU92anNIZ01IQUhnSWxTZFdvMFJOVFJzQUFNZ3JKUzhBQUlEaVNpT0VQTGIvZXlZTkFQQ0F5dVcrcEsvN1pwUzRNeVlPQUFEa2xaSVhBQUJBY1lYNGlIVzhmUDN6ajVNQUFOeS84WkdEVWFLdVZHck4xTVFCQUlDOFV2SUNBQUFvcUZLMUVXWlR3UnRqaHd3Y0FPQUJERHoxU1pTb3FXa0RBQUI1cHVRRkFBQlFiRmNqaEh6dTZlK2JOQURBQXppNGV6RktWRmMxQWdBQXVhYmtCUUFBVUd4cGhKREgrejh3YVFDQSsvVE94Vk9SNGlwNUFRQUF1YWJrQlFBQVVHd2hQbVoxYlZsTkp0OSszYlFCQU83RHdONHdud2ptS3JYbXNva0RBQUI1cHVRRkFBQlFZS1ZxWTZIMUNIRUh6MHY3TnhzNEFNQjlHTmh6TTBwVVc3d0FBSURjVS9JQ0FBQW92aEFmdFZ6WkNBQnc3OXBYTlc3ZGROZnZZUUFBZ0p4UThnSUFBQ2krTUZjMm5qdDkwclFCQU83QnZ0NVNsS2lMbFZwejFzUUJBSUM4VS9JQ0FBQW91Rksxa2JZZUt4R3lqcjM0aUlFREFOeUR5bU1mUlltYW1qWUFBRkFFU2w0QUFBQXhoTmptTmRUL3J5WU5BUEFkem95UEp0M2I3dmdkREFBQWtDTktYZ0FBQURHa0VVTDI3Rmh5WlNNQXdIYzRPckE5VE5aS3JhbmtCUUFBRklLU0Z3QUFRQXhoUG02NXNoRUE0TnNGdXFyeHFta0RBQUJGb2VRRkFBQVFRS25hV0U2Q2ZPUnlaU01Bd0RkelZTTUFBRUErS1hrQkFBREVrVVlJNmNwR0FJQnZGdW1xeGtUSkN3QUFLQkFsTHdBQWdEaGMyUWdBRUZ5Z3F4cm5Lclhtc29rREFBQkZvZVFGQUFBUVJLbmFXR2c5NWlKa2RXVWpBTUJYQmJ1cXNXN2lBQUJBa1NoNUFRQUF4QkppbTVjckd3RUF2c3BWalFBQUFQbWw1QVVBQUJDTEt4c0JBSUlLZEZYallxWFdYREJ4QUFDZ1NKUzhBQUFBQWlsVkc3T3R4MktFcks1c0JBRDREOEd1YXJURkN3QUFLQndsTHdBQWdIaGMyUWdBRUV5d3F4cnJKZzRBQUJTTmtoY0FBRUE4cm13RUFBZ20yRldOc3lZT0FBQVVqWklYQUFCQU1LVnFJMjA5VmlKa2ZlM2dEUU1IQU1KNzUrSXBWelVDQUFEa25KSVhBQUJBVENFK2ZuVnRXVTBtMzM3ZHRBR0EwQWIyaHZvVWtKbzRBQUJRUkVwZUFBQUFNWVhaY1BEUy9zMm1EUUNFTnJEblpwU29LNVZhMHlZdkFBQ2drSlM4QUFBQUFpcFZHKzJQWHlHdWJEemUvNEdCQXdCaHRhOXEzTHJwYnBTNENsNEFBRUJoS1hrQkFBREU1Y3BHQUlDQ0MzWlZvNUlYQUFCUVdFcGVBQUFBY1lYNUNQYUx3VTJtRFFDRVV5NzNKVWQ2NTZQRWRWVWpBQUJRYUVwZUFBQUFRZjN0eXNZUWpwZXZmLzZSRXdBZ2t2R1JnNUhpS25nQkFBQ0ZwdVFGQUFBUTI5VW9RZDhZTzJUYUFFQW9BMDk5RWltdWtoY0FBRkJvU2w0QUFBQ3hoZmtZOXVwUFB6VnRBQ0NNa2VGanljSGRpMUhpdXFvUkFBQW9QQ1V2QUFDQTJNSjhEQnZzblU5R1R3eVpPQUFRd3VISzdraHhVeE1IQUFDS1Rza0xBQUFnc0ZLMXNad0V1ckx4K1BNOWhnNEFoUERpM3BWSWNXM3hBZ0FBQ2svSkN3QUFnREFmeGQ0NC9MOU1Hd0FvdkRQam8wbFAxeTIvWndFQUFBcEV5UXNBQUlBd0g4VjZkaXdsNTA2Zk5IRUFvTkNPRG15UEZQZHFwZFpjTm5VQUFLRG9sTHdBQUFDQ2kzWmw0OWlManhnNkFGQm9sY2MraWhUWEZpOEFBQ0FFSlM4QUFBRGF3bndjZSszZ0RkTUdBQXJybll1bmt1NXRkNkxFWGFuVW1uVlRCd0FBSWxEeUFnQUFvQzFNeWF0cnkyb3krZmJySmc0QUZOTEEzbEQvOXJmRkN3QUFDRVBKQ3dBQWdIKy9zdkZLbEx5L0dOeGs2QUJBNFpUTGZjbVIzdmxJa1pXOEFBQ0FNSlM4QUFBQStIZGhQcElkTDEvLy9DTW9BRUNSakk4Y2pCUzNmVldqa2hjQUFCQ0draGNBQUFDZksxVWI3WTlrSzFIeXZ2WDY4NFlPQUJUS3kvdnZSSXFyNEFVQUFJU2k1QVVBQU1DWGhmbFk5dXB6cTZZTkFCVEd5UEN4cEtmcmx0K3RBQUFBQmFYa0JRQUF3SmVGK1ZpMmI5ZUh5Ym5USjAwY0FDaUVYNzYwTzFKY1Z6VUNBQURoS0hrQkFBRHcvMFc3c25IaStFNURCd0FLNGNVbmIwU0txK0FGQUFDRW8rUUZBQURBZnhibW85bngvZzlNR3dESXZYY3Vua3EyYnJvYktYTGQxQUVBZ0dpVXZBQUFBUGpQcHFNRTdkcXltcnczT1dIaUFFQ3UvZXdub2VJdVZtck4xTlFCQUlCb2xMd0FBQUQ0TzZWcVk3YjFXSXlTOTlXZmZtcm9BRUJ1alF3ZlN3N3VYb3dVMlZXTkFBQkFTRXBlQUFBQWZKMHdIODhHZStlVDBSTkRKZzRBNU5MaHl1NW9rZXVtRGdBQVJLVGtCUUFBd05lcFJ3bzdkdlJ4RXdjQWNtbDQzMGVSNHJhdmFwdzFkUUFBSUNJbEx3QUFBTDdpYjFjMnprWEpPMWE1YmVnQVFPNWNtQmhMdXJmZGlSUjUydFFCQUlDb2xMd0FBQUQ0SnZVb1FYdDJMQ1dUYjc5dTRnQkFydno4MmMzUklzK1lPZ0FBRUpXU0Z3QUFBTjhrMUVlMFh3eHVNbkVBSURmSzViN2tTTzk4cE1oemxWcHp3ZVFCQUlDb2xMd0FBQUQ0V3FWcVk2SDF1QllsNy9IeTlXVDB4SkRCQXdDNU1QSGFRTFRJcm1vRUFBQkNVL0lDQUFEZzI5UWpoUjA3K3JpSkF3QzVNTHp2bzJpUlhkVUlBQUNFcHVRRkFBREF0d24xTVcyc2N0dkVBWURNdXpBeGxuUnZ1eE1wOHRWS3JibHM4Z0FBUUdSS1hnQUFBSHlqVXJYUi9waDJKVXJlbmgxTHllVGJyeHM4QUpCcFAzOTJjN1RJZFZNSEFBQ2lVL0lDQUFEZ3U0VGE1dldybjMvUHhBR0F6Q3FYKzVJanZmT1JJcTlVYWsxWE5RSUFBT0VwZVFFQUFQQ3RTdFZHKzZQYVlwUzhnNzN6eWVpSklZTUhBRExwNHRtQmFKSHJwZzRBQUtEa0JRQUF3TDBKdFQzaHY3M1NhK0lBUUNhOStOUkgwU0xYVFIwQUFFREpDd0FBZ0h0VGp4VDJ0WU0zVEJ3QXlKeDNMcDVLdXJmZGlSUjVzVkpyenBvOEFBQ0FraGNBQUFEM29GUnR0RCt1elVYSjI3VmxOWGx2Y3NMZ0FZQk0rZGxQd2tXZU5uVUFBSUF2S0hrQkFBQndyK3FSd2s3ODdQK2FPQUNRR1NQRHg1S0R1eGVqeFo0eGVRQUFnQzhvZVFFQUFIQ3Y2cEhDN3R2MVlYTHU5RWxUQndBeTRaY3Y3WTRXK1dxbDFsd3dlUUFBZ0M4b2VRRUFBSEJQU3RYR2N1dHhOVkxtaWVNN0RSNEE2TGh5dVM5NThja2IwV0xYVFI0QUFPQS9LSGtCQUFCd1ArcVJ3bzRmZVAvemo2b0FBQjM5VFRKeU1ObTY2VzZreUN1Vld0TlZqUUFBQUYraTVBVUFBTUE5SzFVYjdZOXRpNUV5djN2aEJZTUhBRHJxNWYxM29rV3Vtem9BQU1EZlUvSUNBQURnZm9YYXFqQld1VzNpQUVESFhKZ1lTM3E2YmtXTFhUZDVBQUNBdjZma0JRQUF3UDJhamhTMlo4ZFM4dDdraEtrREFCM3g4MmMzUjRzOFY2azFaMDBlQUFEZzd5bDVBUUFBY0Y5SzFjWkM2M0V0VXVaWGYvcXB3UU1BRzI1aytGaHlwSGMrV3V4cGt3Y0FBUGdxSlM4QUFBQWVSRDFTMk1IZStlVGM2Wk9tRGdCc3FGKyt0RHRpN0JtVEJ3QUErQ29sTHdBQUFCNUUrK1BiU3FUQUU4ZDNtam9Bc0dISzViN2t4U2R2Ukl0OXBWSnJMcHMrQUFEQVZ5bDVBUUFBY045SzFVYjc0MXVvTFF2akI5Ny8vR01yQU1DRy9QWVlPWmhzM1hRM1d1eTZ5UU1BQUh3OUpTOEFBQUFlMUhTMHdPOWVlTUhVQVlBTk1WYTVGUzN5WXFYV1RFMGVBQURnNnlsNUFRQUE4RUJLMWNaczZ6RVhLZlA1d3g4WVBBQ3c3aTVNakNYZDIrNUVpejF0OGdBQUFOOU15UXNBQUlDSEVlcGpYTmVXMWVTOXlRbFRCd0RXMWZqaHp5TEdycHM4QUFEQU4xUHlBZ0FBNEdITXRQNVdJZ1YrcTdwaTZnREF1aGtaUHBiMGRkK01GdnRLcGRaY05uMEFBSUJ2cHVRRkFBREFBeXRWRysyUGNUT1JNdmZzV0VvdXZYbks4QUdBZFhGMitKR0lzZXNtRHdBQThPMlV2QUFBQUhoWTA5RUNYM3BsczZrREFHdXV2Y1hyU085OHROaUxsVm96TlgwQUFJQnZwK1FGQUFEQVF5bFZHN090eDF5a3pJTzk4OG5vaVNIREJ3RFdWUFg1M1JGalQ1czhBQURBZDFQeUFnQUFZQzJFK3pqM3orT1Btem9Bc0diSzViN2s1ZjRiRWFQWFRSOEFBT0M3S1hrQkFBQ3dGbVphZnl1UkFvOGZlTjgyTHdCZzdYNWJqQnhNdG02Nkd5MzJsVXF0dVd6NkFBQUEzMDNKQ3dBQWdJZFdxamJhSCtkbW91VWVPMnFiRndDd1JyOHJLcmNpeHE2YlBBQUF3TDFSOGdJQUFHQ3RoTHV5OGZ6aER6Ni9XZ2tBNEdGYy91M1pwSHZibldpeEZ5dTFabXI2QUFBQTkwYkpDd0FBZ0RWUnFqWm1XNDlya1RKM2JWbE4zcjN3Z3VFREFBL2w1ZjEzSXNhZU5ua0FBSUI3cCtRRkFBREFXcXBIQ3p4V3VXM3FBTUFEdXpBeGx2UjBoYnVxY1NWeFZTTUFBTUI5VWZJQ0FBQmd6WlNxalhyeXhVZTdNSHAyTENYdlRVNFlQZ0R3UU1ZUGZ4WXg5a3lsMWx3MmZRQUFnSHVuNUFVQUFNQmFxMGNML0ZaMXhkUUJnUHQyWm53MDZldStHVEc2cXhvQkFBRHVrNUlYQUFBQWF5M2NSenZidkFDQUIvSEtDeitJR1B0YXBkYWNOWDBBQUlEN28rUUZBQURBbWlwVkd3dXR4OVZvdVYvOTZhZUdEd0RjczVIaFk4bVIzdm1JMGV1bUR3QUFjUCtVdkFBQUFGZ1A0Ylo1RGZiT0o1ZmVQR1h5QU1BOU9UdjhTTVRZSzVWYXMyNzZBQUFBOTAvSkN3QUFnRFZYcWpiUzFtTXhXdTVMcjJ3MmZBRGdPd1hlNGpWdCtnQUFBQTlHeVFzQUFJRDFZcHNYQU1EWENMckZxNjF1K2dBQUFBOUd5UXNBQUlEMVVtLzlyVVFMYlpzWEFQQnR5dVcrWkdEUHpZalJyMVJxelFVbkFBQUE0TUVvZVFFQUFMQXVTdFhHY3VzeEV5MTNlNXZYNklraEJ3QUErRm9Yenc0a1d6ZmRqUmk5YnZvQUFBQVBUc2tMQUFDQTlUUVZNZlEvano5dThnREFWN1MzZUwzY2Z5Tmk5TGxLclprNkFRQUFBQTlPeVFzQUFJQjFVNm8yRmxxUGE5RnlqeDk0M3pZdkFPQXJBbS94bWpaOUFBQ0FoNlBrQlFBQXdIcWJpaGphTmk4QTRNc0NiL0ZhcWRTYWRTY0FBQURnNFNoNUFRQUFzSzVLMVViYWVpeEd5MjJiRndEd1piWjRBUUFBOERDVXZBQUFBTmdJVXhGRDIrWUZBTFFGM3VMVnB1UUZBQUN3QnBTOEFBQUEyQWd6cmIrVmFLRnQ4d0lBMmdKdjhicFNxVFdYblFBQUFJQ0hwK1FGQUFEQXVpdFZHKzJQZXlHM09Oam1CUUN4MmVJRkFBREFXbER5QWdBQVlLUFVJNGEyelFzQVlndTh4ZXRhcGRhY2RRSUFBQURXaHBJWEFBQUFHNkpVYlN5MEhsY2lacmZOQ3dCaXNzVUxBQUNBdGFMa0JRQUF3RVlLK2JIUE5pOEFpQ253RnEvRlNxMDU0d1FBQUFDc0hTVXZBQUFBTmt5cDJtaGYyWE10WW5iYnZBQWdsdUJidkthY0FBQUFnTFdsNUFVQUFNQkdzODBMQUNpOHdGdThWbHAvdG5nQkFBQ3NNU1V2QUFBQU5sU3AybWgvOUZ1TW1OMDJMd0NJSWZnV3IrbEtyYm5zRkFBQUFLd3RKUzhBQUFBNllTcGlhTnU4QUNDR3dGdTgycWFkQUFBQWdMV241QVVBQU1DR0sxVWI5ZVNMcTN6Q3NjMExBSW90K0Jhdks3WjRBUUFBckE4bEx3QUFBRG9sNUphSDlqYXZTMitlTW4wQUtLamdXN3ltbkFBQUFJRDFvZVFGQUFCQXA3UkxYaUczZVYxNlpiUHBBMEFCQmQvaWRiVlNheTQ0QlFBQUFPdER5UXNBQUlDT0tGVWI3YXQ4WmlKbUgreWR0ODBMQUFyb2YvelRnY2hidkthZEFBQUFnUFdqNUFVQUFFQW5UVVVOYnBzWEFCVEx5UEN4NUVqdmZOVDQxeXExWnVvVUFBQUFyQjhsTHdBQUFEcW1WRzBzdEI1WEltYTN6UXNBaXVYczhDT1I0OXZpQlFBQXNNNlV2QUFBQU9pMHNCOEZKOGNOSHdDS0lQZ1dyOFZLclRuakZBQUFBS3d2SlM4QUFBQTZxbFJ0ekxZZTF5Sm0zN2ZydytTOXlRbUhBQUJ5N3NMSjdzanhwNXdBQUFDQTlhZmtCUUFBUUJaTVJRMytWblhGOUFFZ3h5NU1qQ1VIZHk5R2pkL2U0bFYzQ2dBQUFOYWZraGNBQUFBZFY2bzIwaVRvTnErZUhVdTJlUUZBam8wZi9peHkvR2tuQUFBQVlHTW9lUUVBQUpBVllUOFNYajc1NTZSYzduTUNBQ0JuMmx1OCtycHZSbzNmWGtkYWR3b0FBQUEyaHBJWEFBQUFtVkNxTm1aYWo1QjNIWFZ0V1UzZXZmQ0NRd0FBT1hPeCtyOGp4NSt1MUpyTFRnRUFBTURHVVBJQ0FBQWdTNmFpQmo5LytBUGJ2QUFnUnk3LzltelN2ZTFPMVBqdExWNnVhZ1FBQU5oQVNsNEFBQUJrUnFuYXFDZUJ0M245OGZlMmVRRkFIclNMMldPVlc1RmZnUzFlQUFBQUcwekpDd0FBZ0t5WmlocDgvTUQ3eWVpSklTY0FBREx1NHRrQlc3d0FBQURZVUVwZUFBQUFaRXJrYlY1dGw5OTR6Q0VBZ0F4cmIvRjZ1ZjlHNUZjd1k0c1hBQURBeGxQeUFnQUFJSXVtb2dZL1hyNmVYSHJ6bEJNQUFCbjF1L01EeWRaTmQvMU9Bd0FBWUVNcGVRRUFBSkJGTThrWFZ3R0ZkT21WelU0QUFHVFF5UEN4NVBqZTY1RmZ3WlZLcmJuZ0pBQUFBR3c4SlM4QUFBQXlwMVJ0dEs4QW1vNmFmN0IzUG5sdmNzSkJBSUNNdVhDeU8vb3JtSElLQUFBQU9rUEpDd0FBZ0t4cWw3ekNidk42cTdyaUJBQkFobHlZR0VzTzdsNk0vQXBzOFFJQUFPZ2dKUzhBQUFBeUtmbzJyNTRkUzhtZi92QnJCd0VBTW1MaXBYK0wvZ3FtbkFJQUFJRE9VZklDQUFBZ3kwSnY4enAvK0lPa1hPNXpDZ0Nnd3k3LzltelMwM1VyOGl1d3hRc0FBS0REbEx3QUFBRElyT2pidkxxMnJDWi8vUDBMRGdJQWRGQzdjRDFXdVJYOU5VdzVDUUFBQUoybDVBVUFBRURXaGQ3bU5YN2cvZVRjNlpOT0FRQjB5TVd6QTBuM3RqdVJYNEV0WGdBQUFCbWc1QVVBQUVDbVJkL20xWGI1OUhZSEFRQTZZR1Q0V1BKeS80M29yMkhLU1FBQUFPZzhKUzhBQUFEeUlQUTJyOEhlK1dUeTdkZWRBZ0RZWUdlSEgwbTJicm9iK1JYWTRnVUFBSkFSU2w0QUFBQmtubTFlU2ZMdUwvN3FJQURBQnJvd01aWWM2WjJQL2hxbW5BUUFBSUJzVVBJQ0FBQWdMMEp2OCtyWnNaVDg2USsvZGdvQVlJTk12UFJ2MFYrQkxWNEFBQUFab3VRRkFBQkFMdGptbFNUbkQzK1FsTXQ5RGdNQXJMUEx2ejJiOUhUZGl2NGFwcHdFQUFDQTdGRHlBZ0FBSUU5Q2IvUHEyckthL1BIM0x6Z0ZBTENPMm9YcVh3MStHUDAxMk9JRkFBQ1FNVXBlQUFBQTVJWnRYa2t5ZnVEOTVOS2JweHdHQUZnbnZ6cy9rR3pkZERmNmE1aHlFZ0FBQUxKRnlRc0FBSUJjS1ZVYlU2M0hZdVIzTURudUhBREFlaGdaUHBZYzMzczkrbXV3eFFzQUFDQ0RsTHdBQUFESW82bkk0ZmZ0K2pCNWIzTENLUUNBTmZhYjE3cThCRnU4QUFBQU1rbkpDd0FBZ053cFZSdjFKUGcycjhzbi81eVV5MzBPQXdDc2tYY3Vua3I2dW05R2Z3MS9zTVVMQUFBZ201UzhBQUFBeUt1cHlPRzd0cXdtLy9LYncwNEJBS3lCZG5INlY0ZHZSMzhOSzYyL2FhY0JBQUFnbTVTOEFBQUF5Q1hidkpMay9QUC9NemwzK3FUREFBQVA2ZUxaZ2FSNzI1M29yMkc2VW1zdU93MEFBQURacE9RRkFBQkFuazFGZndHWFQyOTNDZ0RnSVl3TUgwdGVmZVo2OU5kZ2l4Y0FBRURHS1hrQkFBQ1FXMy9iNW5VdDhqc1k3SjFQM3B1Y2NCZ0E0QUg5NXJVdUw4RVdMd0FBZ014VDhnSUFBQ0R2cHFLL2dNc24vNXlVeTMxT0FnRGNwM2N1bmtyNnVtOUdmdzN0NjY5dDhRSUFBTWc0SlM4QUFBQnlyVlJ0cEVud2JWNWRXMWFUUC83K0JZY0JBTzVEdXlEOVR5Lzl4WXRJa2lsYnZBQUFBTEpQeVFzQUFJQWltSXIrQXNZUHZKOWNldk9Va3dBQTkraDM1d2VTclp2dVJuOE5pNVZhcys0MEFBQUFaSitTRndBQUFMbjN0MjFlVjZPL2g4bHhad0VBN3NXWjhkSGsrTjdyWG9TaVBBQUFRRzRvZVFFQUFGQVVrOUZmd0w1ZEh5Wi8rc092blFRQStBNlhYdm5NUzBpU2E3WjRBUUFBNUllU0Z3QUFBSVZRcWpZV1dvOHIwZC9EK2NNZkpLTW5oaHdJQVBnRy8vTGZYMDk2dW01NUViWjRBUUFBNUlxU0Z3QUFBRVV5MWZwYmlmd0N1cmFzSnBmZmVNeEpBSUN2VVM3M0pXUFAzdkFpdnRqaWxYb05BQUFBK2ZIL0JHRHYvbVBzcXU4Ny83OWIrY29tbXduVUd6ZEtYQ3RReGppQ2t1dElNRmphQ0YreitFZUtNeDRiTytzWWZCbXZGUXh5VThZT0RVRlFQRTRoWVdtVWpFbWk0a1NvWTVMUWFJT0VRZC9xRzNZajlUcGY2U3ZsSnJxMWxYOEtUTEF0WXBLTjZXWUdWNmJ1cU11ZTQrc0VITnZqK1hGL25IdnY0eUVkSGFYaXg1M1hIUnFrUFBYNWlMd0FBQUJvRzJkTzh4cnE5QjJXZFkvRXdMWU5maUVBNEhjOGRPYzFNV2ZXS1VORTlKc0FBQUNndFlpOEFBQUFhRGRwNURYVzZTUDg1ZHBmblQ2dEJBQ291bXRMWDN6NGZVY05FYkV2WDZ3Y01RTUFBRUJyRVhrQkFBRFFWbktGOG1oVXIyM3NhT20xalEvZWVZTmZDQUNJNmpXTm43amhmeHVpR3NJUG1nRUFBS0QxaUx3QUFBQm9PN2xDT1QzTnErT1A2dGgwL1l1eDlmWSt2eEFBZEx6dG14YkgzRXRPR0NKaXlDbGVBQUFBclVua0JRQUFRTHNhTUVFeVFxOE5BT2hzNjNwWHhySXJSd3hSUGNWcnlBd0FBQUN0U2VRRkFBQkFXOG9WeXZ1VDE0Rk8zMkhSdkdQeDFkMjMrWVVBb0dOdFhmR1dFYW9HODhYS3FCa0FBQUJhazhnTEFBQ0FkalpvZ29odE43NFU2OWV1TWdRQUhlZVIremJFL0s3amhvZzRtaTlXbk9JRkFBRFF3a1JlQUFBQXRLMWNvVnhLWHZzc0ViRno3WHVNQUVCSFdYN1RqWEhMMWE1cFBLUGZCQUFBQUsxTjVBVUFBRUM3R3pSQnhIVUxEc2VqOTI4eUJBQWQ0ODZQZHhtaDZrQytXQ21aQVFBQW9MV0p2QUFBQUdocnVVTDVTUExhYlltSVR5MDlGaXR2WG1vSUFOcmVnenMyeE1LNXJ4bWlhc0FFQUFBQXJVL2tCUUFBUUNjWVNwNnhUaCtoYS9iSjJGVjhuOThHQU5wYWVrM2o2ajk1MVJCVisvTEZ5a0V6QUFBQXRENlJGd0FBQUcwdlZ5aVBobE1zVG5OdEl3RHRMcjJtY2M2c1U0YW9CdTcrL1FjQUFLQk5pTHdBQUFEb0NMbENlVGg1SGJLRWF4c0JhRit1YVR6TFVMNVlHVFVEQUFCQWV4QjVBUUFBMEVtY1poR3ViUVNnUGJtbThTeEg4OFhLb0JrQUFBRGFoOGdMQUFDQWpwRXJsRXZKNnpsTHVMWVJnUGJqbXNhekNOc0JBQURhak1nTEFBQ0FUdU4vOUR6RHRZMEF0QXZYTko3bFFMNVkyVzhHQUFDQTlpTHlBZ0FBb0tQa0N1VWp5V3UzSlZ6YkNFQjdjRTNqT1FUdEFBQUFiVWprQlFBQVFDY2FTcDZqWm5CdEl3Q3R6eldOWjltVEwxWU9tZ0VBQUtEOWlMd0FBQURvT0xsQ2VUUjVEVnFpeXJXTkFMUXExelNlWmN5LzN3QUFBTFF2a1JjQUFBQWRLVmNvRHlldkE1WndiU01BcmNrMWplY1l6QmNybzJZQUFBQm9UeUl2QUFBQU90bUFDYXBjMndoQXEzRk40MWtPNVl1VklUTUFBQUMwTDVFWEFBQUFIU3RYS0I5TVhuc3NVZVhhUmdCYWhXc2F6eUZjQndBQWFITWlMd0FBQURyZFlQS01tYUY2YmVPWDd2d0RRd0NRYWV0NlY4YjZ4U09HZU51K2ZMRlNNZ01BQUVCN0Uza0JBQURRMFhLRjhtZzQvZUszRnMwN0ZsL2RmWnNoQU1pc3JTdmVNc0xiMGxCOTBBd0FBQUR0VCtRRkFBQkF4OHNWeXNQSjY0QWxxcmJkK0ZLc1g3dktFQUJremlQM2JZajVYY2NOOGJhaGZMRnl4QXdBQUFEdFQrUUZBQUFBVlU3emVvZGRuNXdUM2QwTERRRkFabXpldURwdXVkbzFqZTl3TkYrc0RKb0JBQUNnTTRpOEFBQUFJRTZmNW5Vd2VlMnhSRlY2YmVPRGQ5NWdDQUF5SVEyUHR4VGVNTVRaK2swQUFBRFFPVVJlQUFBQThMYkI1Qmt6UTlXbTYxK01yYmYzR1FLQXBydTMvOXFZZThrSlE3eHRYNzVZS1prQkFBQ2djNGk4QUFBQTRJeGNvVHdhcm0wOHkyTzMvOXExalFBMDFWMWIrbUxKZ3NPR2VOdVlmMThCQUFEb1BDSXZBQUFBZUlkY29UeWN2QTVZb3FwcjlzbjQrbjNYR1FLQXBsaCswNDNSLzlGZkd1SnNnL2xpWmRRTUFBQUFuVVhrQlFBQUFPZHlPc1k3TE9zZWlVZnYzMlFJQUJydXpvOTN4WnhacHd6eHRrUDVZbVhJREFBQUFKMUg1QVVBQUFDL0kxY29IMHhldXkzeHRrOHRQUmJyMTY0eUJBQU44OGg5RzJMaDNOY01jYlorRXdBQUFIUW1rUmNBQUFDY1gzcEt4bEV6VktYWE51NzY1QnhEQU5BUTYzcFh4aTFYanhqaWJIdnl4Y3BCTXdBQUFIUW1rUmNBQUFDY1I2NVFIZzNYTnA1bDBieGpNZnpZN1lZQW9LNjZ1eGZHbi8zcG00WTQyMWp5REpvQkFBQ2djNG04QUFBQTRBSnloZkwrNVBXY0pkNjI2Zm9YWTJEYkJrTUFVRGYzOWw4YmN5ODVZWWl6OWVlTGxWRXpBQUFBZEM2UkZ3QUFBRXdzUGMxcnpBeHYrOHUxdnpwOXlnb0ExTnJPdTIrTkpRc09HK0pzQi9MRnluNHpBQUFBZERhUkZ3QUFBRXdnVnlnZkNkY2puYVZyOXNsNDZxR1BHQUtBbWxwKzA0M3hpZXVPR2VKc2FXamVid1lBQUFCRVhnQUFBSEFSdVVKNUtIa2Rzc1Ricmx0d09MNjYrelpEQUZBekErdm14SnhacHd4eHRzRjhzWExFREFBQUFJaThBQUFBWUhMNlRYQzJiVGUrRkZ0djd6TUVBRFAybFljMnhQeXU0NFk0MjZGOHNUSmtCZ0FBQUZJaUx3QUFBSmlFWEtGOE1IbnR0c1RaSGx4L0tycTdGeG9DZ0dtN2EwdGZMTHR5eEJEbjZqY0JBQUFBdnlIeUFnQUFnTWxMVDlNNGFvYTN6Yi8wOWZqNmZkY1pBb0JwV1g3VGpkSC8wVjhhNGx4NzhzWEtRVE1BQUFEd0d5SXZBQUFBbUtSY29Ud2FUdFU0eDdMdWtYajAvazJHQUdES0J0Yk5pVG16VGhuaWJHbFFQbWdHQUFBQTNrbmtCUUFBQUZPUUs1Ukx5V3VQSmM2MmM4WExzWDd0S2tNQU1HbGZlV2hEek84NmJvaHo5ZWVMbFZFekFBQUE4RTRpTHdBQUFKaTZ3ZVFaTThQWi92cU8zNHZ1N29XR0FPQ2k3dHJTRjh1dUhESEV1ZEpyR2t0bUFBQUE0SGVKdkFBQUFHQ0tYTnQ0ZnZNdmZUMitmdDkxaGdCZ1FzdHZ1akg2UC9wTFE1d3JEY2dIelFBQUFNRDVpTHdBQUFCZ0duS0Y4djdrOVp3bHpyYXNleVFldlgrVElRQzRvSUYxYzJMT3JGT0dPSmRyR2dFQUFMZ2drUmNBQUFCTVgzKzR0dkVjTzFlOEhGdHY3ek1FQU9mNHlrTWJZbjdYY1VPYzY3bDhzYkxmREFBQUFGeUl5QXNBQUFDbXliV05GL2JZN2IrTzd1NkZoZ0RndDNiZWZXc3N1M0xFRU9jYTgrOFRBQUFBWEl6SUN3QUFBR2JBdFkzbjF6WDdaRHoxMEVjTUFjQnA2M3BYeGlldU8yYUk4M05OSXdBQUFCY2w4Z0lBQUlDWjZ3L1hOcDdqdWdXSFkvaXgydzBCME9IU2t4MjNybmdyNXN3NlpZeHp1YVlSQUFDQVNSRjVBUUFBd0F5NXR2SENObDMvWWd4czIyQUlnQTUyYi8rMU1iL3J1Q0hPNVpwR0FBQUFKazNrQlFBQUFEWGcyc1lMKzh1MXY0cjFhMWNaQXFBRFBiaGpReXhaY05nUTUrZWFSZ0FBQUNaTjVBVUFBQUMxMHgrdWJUeEgxK3lUc2V1VGMwNWYxd1ZBNTlpOGNYV3NYenhpaVBOelRTTUFBQUJUSXZJQ0FBQ0FHbkZ0NDRVdG1uY3N2bjdmZFlZQTZCQnAyTHQ5K2V1R09EL1hOQUlBQURCbElpOEFBQUNvSWRjMlh0aXk3cEY0OVA1TmhnRG9BSHNHcm9nNXMwNFo0dnhjMHdnQUFNQ1VpYndBQUFDZzl2ckR0WTNudFhQRnk3SDE5ajVEQUxTeEp4NWVGL083amh2aS9GelRDQUFBd0xTSXZBQUFBS0RHWE5zNHNjZHUvM1dzdkhtcElRRGEwTTY3YjQwbEN3NGI0dnhjMHdnQUFNQzBpYndBQUFDZ0RsemJlR0ZkczAvR2wrNzhnK2p1WG1nTWdEYXlybmRsRkplOFlvZ0xjMDBqQUFBQTB5YnlBZ0FBZ1BycFQ1NmpaampYb25uSDR0RS83ekVFUUp0SXc5M1BybkZUOFFUMnVLWVJBQUNBbVJCNUFRQUFRSjI0dG5GaXZkZStGSS9ldjhrUUFHMWd6OEFWTVdmV0tVT2NYeHA4RDVvQkFBQ0FtUkI1QVFBQVFCM2xDdVZTOHRwamlmUGJ1ZUxsR05pMndSQUFMZXlKaDlmRi9LN2pocmd3MXpRQ0FBQXdZeUl2QUFBQXFML0I1RGxraHZQN3k3Vy9pdlZyVnhrQ29BVTl1R05ETEZsdzJCQVh0anRmckpUTUFBQUF3RXlKdkFBQUFLRE9YTnM0c2E3WkoyUFhKK2RFZC9kQ1l3QzBrTTBiVjhmNnhTT0d1TEJEK1dKbDBBd0FBQURVZ3NnTEFBQUFHaUJYS0I5TVhyc3RjWDZMNWgyTHB4NzZpQ0VBV3NTNjNwV3hmZm5yaHJpd3NSQjRBd0FBVUVNaUx3QUFBR2lRWEtFOG1Md09XT0w4cmx0d09JWWZ1OTBRQUJtWG5yeTRkY1ZiTVdmV0tXTmMyR0MrV0Rsb0JnQUFBR3BGNUFVQUFBQ04xUi9WMHowNGowM1h2eGdQREd3MEJFQ0dmWEg3VlRHLzY3Z2hMdXhBdmxnWk1nTUFBQUMxSlBJQ0FBQ0FCc29WeWtmQzlVMFQyclhtWjdGKzdTcERBR1RRRXcrdmk0VnpYelBFaGFVaGQ1OFpBQUFBcURXUkZ3QUFBRFJZcmxEZW43ejJXZUxDOW01N1UrZ0ZrREU3Nzc0MWxpdzRiSWlKOWVlTGxWRXpBQUFBVUdzaUx3QUFBR2lPZ2VRNWFvYno2NXA5TW5aOWNrNTBkeTgwQmtBR2JONjRPb3BMWGpIRXhQYmtpNVg5WmdBQUFLQWVSRjRBQUFEUUJMbENPVDNsdzNWT0UxZzA3MWc4OWRCSERBSFFaT3Q2VjhiMjVhOGJZbUtIa21mUURBQUFBTlNMeUFzQUFBQ2FKRmNvSDB4ZXV5MXhZZGN0T0J6UFBINmJJUUNhSkQxUmNldUt0MkxPckZQR3VMQ3hjRTBqQUFBQWRTYnlBZ0FBZ0NiS0ZjcUR5ZXVBSlM2czk5cVg0dEg3TnhrQ29BbjJERndSODd1T0cySmlnL2xpNWFBWkFBQUFxQ2VSRndBQUFEUmZlbTNqbUJrdWJPZUtsK09CZ1kyR0FHaWdKeDVlSi9DNnVPZnl4Y3FRR1FBQUFLZzNrUmNBQUFBMFdhNVFUcTkzNnJmRXhIYXUra1dzWDd2S0VBQU44TWg5RzJMSmdzT0dtTmhSLy8wTkFBQkFvNGk4QUFBQUlBTnloZkwrNUxYSEVoZldOZnRrN04zMlpxeThlYWt4QU9wbzU5MjN4aTFYanhqaTR2cnp4Y3FvR1FBQUFHZ0VrUmNBQUFCa1JLNVFIa2hlaHl4eFlXbm85YVU3L3lDNnV4Y2FBNkFPTm05Y0hjVWxyeGppNG5ibmk1V1NHUUFBQUdnVWtSY0FBQUJrUzEveWpKbmh3aGJOT3hiUGZ1RWFRd0RVMkxyZWxiRjkrZXVHdUxnRCtXSmwwQXdBQUFBMGtzZ0xBQUFBTWlSWEtCOUpYdjJXbUZnYWVqM3orRzJHQUtpUjlJVEV6NjRaaXptelRobGpZbW1JM1djR0FBQUFHazNrQlFBQUFCbVRLNVQzSjY4OWxwaFk3N1V2eGZCanR4c0NZSWJTd0d2UHdCVUNyOG5weXhjcm8yWUFBQUNnMFVSZUFBQUFrRTJEeVhQSURCUGJkUDJMOGNEQVJrTUF6TUFYdDE4Vjg3dU9HK0xpZHVlTGxaSVpBQUFBYUFhUkZ3QUFBR1JRcmxCT1R3bEpyNE1hczhiRWRxMzVtZEFMWUpxZWVIaGRMSno3bWlFdTdrQytXQmswQXdBQUFNMGk4Z0lBQUlDTXloWEtSNUpYdnlVdWJ1ZXFYOFQ2dGFzTUFUQUZhZUMxWk1GaFExeGNHbHozbVFFQUFJQm1FbmtCQUFCQWh1VUs1ZjNKYTQ4bEp0WTErMlRzM2ZhbTBBdGdrbmJlZmF2QWEvTDY4c1hLcUJrQUFBQm9KcEVYQUFBQVpGeXVVQjVJWG9jc01iSGZoRjdkM1F1TkFUQ0JOUEFxTG5uRkVKT3pJMStzbE13QUFBQkFzNG04QUFBQW9EV2sxMFNObVdGaWFlajE3QmV1RVhvQlhNRG1qYXNGWHBQM1hMNVlHVElEQUFBQVdTRHlBZ0FBZ0JhUUs1U1BKSzkrUzF6Y29ubkhoRjRBNTdHdWQyVnNYLzY2SVNibnFQL2VCUUFBSUV0RVhnQUFBTkFpY29YeS91UzEyeElYbDRaZVg3L3ZPa01BbkpFR1hwOWRNeFp6WnAweXhzV2xKMmYyNVl1VlVWTUFBQUNRRlNJdkFBQUFhQ0c1UW5rd2VSMnd4TVV0Nng2Slp4Ni96UkJBeDB0UE52eXpQMzFUNERWNUEvbGk1YUFaQUFBQXlCS1JGd0FBQUxTZXZxaGVJOFZGOUY3N2t0QUw2R2hwNExWbjRJcVllOGtKWTB6T3ZueXhNbXdHQUFBQXNrYmtCUUFBQUMwbVZ5aW4xMGYxV1dKeTB0RHIwZnMzR1FMb09MOEp2T1ozSFRmRzVCektGeXY5WmdBQUFDQ0xSRjRBQUFEUWduS0ZjbnFOMUJaTFRNN09GUy9IQXdNYkRRRjBGSUhYbEl5RmdCb0FBSUFNRTNrQkFBQkFpOG9WeXNQSmE1OGxKbWZYbXA4SnZZQ084Y1RENndSZVU5T1hMMWFPbUFFQUFJQ3NFbmtCQUFCQUM4c1Z5djNKNjVBbEprZm9CWFNDTlBCYXN1Q3dJU1p2Ujc1WUtaa0JBQUNBTEJONUFRQUFRT3NyUlBXYUtTWWhEYjNXcjExbENLQXRDYnltYkYrK1dCa3lBd0FBQUZrbjhnSUFBSUFXbHl1VVI2TWFlakZKZTdlOUtmUUMybzdBYThyU2t6QUh6QUFBQUVBckVIa0JBQUJBRzhnVnlnZVQxeFpMVEU3WDdKTkNMNkN0N0x6N1ZvSFgxS1FuWVBibGk1VlJVd0FBQU5BS1JGNEFBQURRSm5LRjhuRHkybWVKeVJGNkFlMGlEYnlLUzE0eHhOU2tnZGNSTXdBQUFOQXFSRjRBQUFEUVJuS0ZjbjlVcjU5aUVvUmVRS3NUZUUzTGpueXhVaklEQUFBQXJVVGtCUUFBQU8ybmtEeEh6VEE1UWkrZ1ZRbThwbVZmdmxnWk1nTUFBQUN0UnVRRkFBQUFiU1pYS0k4bXI3N2tHYlBHNUtTaDExL2Y4WHZSM2IzUUdFQkxFSGhOeTZGOHNkSnZCZ0FBQUZxUnlBc0FBQURhVUs1UVBwaThCaXd4ZWZNdmZUMmUvY0kxUWk4Zzh3UmUwNUtHendVekFBQUEwS3BFWGdBQUFOQ21jb1h5Y1BMYWJZbkpXelR2bU5BTHlEU0IxN1NjRHJ6eXhjcW9LUUFBQUdoVklpOEFBQUJvWTdsQ2VUQjU3YlBFNUFtOWdLd1NlRTNiUUw1WU9XZ0dBQUFBV3BuSUN3QUFBTnBmZW0zaklUTk1udEFMeUJxQjE3VHR6aGNydzJZQUFBQ2cxWW04QUFBQW9NM2xDdVgwZXFwQ1ZLK3JZcEtFWGtCV0NMeW1iVisrV0JrMEF3QUFBTzFBNUFVQUFBQWRRT2cxUFVJdm9Oa0VYdE9Xbm1BNVlBWUFBQURhaGNnTEFBQUFPa1N1VUQ0WS9nZnZLUk42QWMwaThKcTJOR2d1NUl1VlVWTUFBQURRTGtSZUFBQUEwRUZ5aGZKdzh0cHRpYWtSZWdHTkp2Q2FOb0VYQUFBQWJVbmtCUUFBQUIwbVZ5Z1BKcTk5bHBnYW9SZlFLQUt2R2VuUEZ5c0h6UUFBQUVDN0VYa0JBQUJBQjhvVnl2M0o2NUFscGtib0JkU2J3R3RHdHVTTGxmMW1BQUFBb0IySnZBQUFBS0J6RlVMb05XVkNMNkJlQkY0enNpOWZyQXliQVFBQWdIWWw4Z0lBQUlBT2xTdVVSNU5YZi9LTVdXTnEwdERyUjEvN1FLeGZ1OG9ZUUUwSXZHYmt1WHl4MG04R0FBQUEycG5JQ3dBQUFEcFlybEErR05VVHZaaWlydGtuWSsrMk40VmV3SXdKdkdZa1BaR3kzd3dBQUFDME81RVhBQUFBZExnem9kY1dTMHlkMEF1WUtZSFhqS1FuVVJieXhjcW9LUUFBQUdoM0lpOEFBQUFnRGIyR2s5Y09TMHlkMEF1WUxvSFhqQWk4QUFBQTZDZ2lMd0FBQU9DMFhLRThsTHoyV1dMcWhGN0FWRDN4OERxQjE4ejA1WXVWZzJZQUFBQ2dVNGk4QUFBQWdOL0tGY3I5SWZTYWx0K0VYbHR2N3pNR01LRTA4RnF5NExBaHBtOUx2bGdwbVFFQUFJQk9JdklDQUFBQWZ0ZEE4aHd5dzlTbG9kZmZiRDBXRHd4c05BWndYZ0t2R2R1UkwxYUd6UUFBQUVDbkVYa0JBQUFBWjhrVnlxUEpxeEJDcjJuYnRlWm5RaS9nSEFLdkdkdVhMMWFHekFBQUFFQW5FbmtCQUFBQTV6Z1RlcVgzRG81WlkzcUVYc0J2ZEhjdmpMLy8yZ3FCMTh5a2dWZS9HUUFBQU9oVUlpOEFBQURndkhLRjhwR29udWdsOUpxbU5QUWFmdXgyUTBBSFN3T3ZQUU5YeFB5dTQ4YVl2dlJreVFFekFBQUEwTWxFWGdBQUFNQUY1UXJsZzFFOTBZdHAyblQ5aS9ITTQ3Y1pBanFRd0tzbTBzQ3JrQzlXUmswQkFBQkFKeE41QVFBQUFCUEtGY3FsNUxYRkV0UFhlKzFMUWkvb01PdDZWOFkzN24yL3dHdG0wcE1rQlY0QUFBQVFJaThBQUFCZ0VuS0Y4bkFJdldZa0RiMysvNmMrY2Zwa0g2QzlwWUhYWjllTXhkeExUaGhqK2dSZUFBQUE4QTRpTHdBQUFHQlN6b1JlZXl3eGZkY3RPQnpQZnVFYW9SZTBzYzBiVjU4T3ZPYk1PbVdNNmZ0TjRIWFFGQUFBQUZBbDhnSUFBQUFtTFZjb0R5U3ZmWmFZdmtYempwME92VmJldk5RWTBHWjIzbjFyZk9aanh3UmVNOWNuOEFJQUFJQ3ppYndBQUFDQUtja1Z5djBoOUpxUk5QUjYrdDZJOVd0WEdRUGFSQnA0RlplOFlvaVoyNUl2VmtwbUFBQUFnTE9KdkFBQUFJQXBPeE42SGJERTlIWE5QaGw3dDcwWlcyL3ZNd2EwdUNjZVhpZndxbzAwOEJvMkF3QUFBSnhMNUFVQUFBQk1WMW9uSFRMRDlLV2gxOTlzUFJZUERHdzBCclNvTlBCYXN1Q3dJV1pPNEFVQUFBQVRFSGtCQUFBQTA1SXJsRWVUVnlHRVhqTzJhODNQNHRIN054a0NXa2gzOThMNCs2K3RFSGpWeGo2QkZ3QUFBRXhNNUFVQUFBQk1tOUNyZG5hdWVEbWVlZncyUTBBTFNBT3ZQUU5YeFB5dTQ4YVl1VFR3NmpjREFBQUFURXprQlFBQUFNeklPMEt2TVd2TVRPKzFMOFVMMy96azZZQUV5S1oxdlN2ajIvZi9SNEZYYlFpOEFBQUFZSkpFWGdBQUFNQ01DYjFxWjFuM1NEejdoV3VFWHBCQm16ZXVqcyt1R1lzNXMwNFpZK1lFWGdBQUFEQUZJaThBQUFDZ0puS0Y4c0VRZXRYRW9ubkg0bjkrcVR2V3IxMWxETWlJblhmZkdwLzUyREdCVjIwY0VIZ0JBQURBMUlpOEFBQUFnSm9SZXRYTy9FdGZqNzNiM295dHQvY1pBNXJzS3c5dGlPS1NWd3hSRzRlU3gvOWpBd0FBZ0NrU2VRRUFBQUExSmZTcW5hN1pKK052dGg2TEJ3WTJHZ09hSUwwMjlZbUgxOFd5SzBlTVVSdHA0RlhJRnl1anBnQUFBSUNwRVhrQkFBQUFOU2YwcXExZGEzNFd3NC9kYmdob29EVHcyak53UlN4WmNOZ1l0U0h3QWdBQWdCa1FlUUVBQUFCMThZN1FpeHJZZFAyTDhjemp0NTBPVDRENld0ZTdNcjV4Ny90amZ0ZHhZOVNHd0FzQUFBQm1TT1FGQUFBQTFNMlowR3VMSldxajk5cVg0dGt2WEpPWjBHdnNYLzdWbDBMYnVXdExYM3gyelZqTXZlU0VNV3BENEFVQUFBQTFJUElDQUFBQTZpcFhLQStIMEt0bUZzMDdGai82MmdkaS9kcFZUZjhzenp6Ny9kaTBaMTc4K05VLzlzWFFGaDdjc1NIdUtoeU5PYk5PR2FNMkJGNEFBQUJRSXlJdkFBQUFvTzZFWHJYVk5mdGs3TjMyWmp3d3NMSHBueVVOdmY3VDV1L0ZYL3pkSDhleE45N3J5NkZsUGZId3VsaS9lTVFRdFNQd0FnQUFnQm9TZVFFQUFBQU5JZlNxclRUMDJyWG1aL0hWM2JkbDR2UHMyZnU5V0w3emxkajd3dy9GaVZQdjlnWFJNdExyVC8vK2F5dGl5WUxEeHFnZGdSY0FBQURVbU1nTEFBQUFhQmloVisxdHUvR2xlT2J4MjA2SEtzMDJNdkp5ZlBxaDc4U212NDc0aDVldjh1V1FlZXQ2VjhZMzduMS96Tzg2Ym96YUVYZ0JBQUJBSFlpOEFBQUFnSVlTZXRWZTc3VXZ4Yk5mdUNaVzNydzBFNS9uaFI4Y2lKV2YrcnU0KzhrRnJuQWtzKzdhMGhlZlhUTVdjeTg1WVl6YUVYZ0JBQUJBbllpOEFBQUFnSVlUZXRYZW9ubkg0dWw3STlhdlhaV1p6L1RrdC9iSEZiMHZ4SmRmV09RS1J6TGxrZnMyeEYyRm96Rm4xaWxqMUk3QUN3QUFBT3BJNUFVQUFBQTBoZENyOXJwbW40eW4vL3lmNDRHQmpabjZYSi83NHROeHcvYlg0dm1mZnNpWFJGT2wxNW8rOVZoZjNITDFpREZxUytBRkFBQUFkU2J5QWdBQUFKcEc2RlVmdTliOExKNTUvTFpNZmFhUmtaZGovYWUvRTV2MnpJc2Z2L3JIdmlRYWJ2bE5OOGFlZ1N2aXcrODdhb3phRW5nQkFBQkFBNGk4QUFBQWdLWVNldFZINzdVdnhVLy9lOS9wazR1eTVKbG52eC8vYWZQMzR2UDdGOGF4Tjk3cmk2SWhObTljSFg5MTI3L0YvSzdqeHFndGdSY0FBQUEwaU1nTEFBQUFhTHAzaEY1ajFxaWRSZk9PeFkrKzlvRll2M1pWNWo3YncwUGZqZVU3WDRtOVAzU0ZJL1gxeUgwYjRqTWZPeFp6WnAweVJtMEp2QUFBQUtDQlJGNEFBQUJBSnB3SnZRb2g5S3FwcnRrbjQray8vK2Q0WUdCajVqNWJlb1hqcHgvNlRuejg0WGU3d3BHYVMwK3hlK3F4dnJqbDZoRmoxSjdBQ3dBQUFCcnM5OTU2NnkwckFBQUFBSmt4WHVwWm5MeEt5WE9wTldycitaOWVGWjk3dkh3NnJzcWlyWnY3NHNFTmI4Yjg5N3plbHZ1bklWdDZWU1gxdDY1M1pXeGQ4WmJyR2V0RDRBVUFBQUJONENRdkFBQUFJRk55aGZMQmNLSlhYZlJlKzFJOCs0VnJZdVhOU3pQNStaNzgxdjY0b3ZlRjAxYzRuamoxYmw4WTAzTFhscjc0N0pveGdWZDlDTHdBQUFDZ1NVUmVBQUFBUU9ZSXZlcG4wYnhqOGZTOUVRUGJObVQyTTZaWE9ONncvYlY0L3FjZjhvVXhKVjk1YUVQY1ZUZ2FjMmFkTWtidEhRaUJGd0FBQURTTjZ4b0JBQUNBekhKMVkzM3QvZUZWOGVsZDM4bjBaMHl2Y1B5dkszSngvWUpYV241djF6WFdUM2Yzd3ZqaTlxdGk0ZHpYakZFZisvTEZTcjhaQUFBQW9IbEVYZ0FBQUVDbW5RbTk5aWZQQjYxUmV6OTU5WW9vZnY0ZlkyVGs1VXgvemdjSE5zYU9qLzBpdW1iL1M4dHVMZktxajgwYlY4ZjI1YTg3dmF0K0JGNEFBQUNRQWE1ckJBQUFBREx0ek5XTmFlaDF5QnExZDkyQ3cvR2pyMzBnMXE5ZGxlblArZkRRZDA5ZjRmajBqMTNoeU5zZXVXOURmT1pqeHdSZTlTUHdBZ0FBZ0l3UWVRRUFBQUNabHl1VVI1TlhJWVJlZGRFMSsyUTgvZWYvSEkvZXZ5blRuek05YmF6L0w3NFRIMy80M2FkUHhhSnpwZGN6UHZWWVg5eHk5WWd4NmtmZ0JRQUFBQm5pdWtZQUFBQ2daWXlYZWk1TFhxWGt5VnVqUHY1aHBEdTIvN2VmWlA3Nnh0UTkyemJFd0MxdnhQejN2TjRTMjdxdXNUYlc5YTZNUC92VE4yUHVKU2VNVVQ5YjhzWEtzQmtBQUFBZ081emtCUUFBQUxTTWQ1em90YzhhOWJHc2V5VCs1NWU2TTM5OVkyclAzdS9GRmIwdnhONGZmaWhPbkhxM0w2OERQTGhqUXp4MDY2OEVYdlVsOEFJQUFJQU1jcElYQUFBQTBKTEdTejNEeWVzT1M5VFBsLy9Id3ZqY0Y1OXVpYys2OHVhbDhhazFmeFM5MS81VFpqK2prN3ltTDcyZThhRTdyNGtQdisrb01lcEw0QVVBQUFBWkpmSUNBQUFBV3BiUXEvNSs4dW9WVWZ6OFA3YkU5WTJwclp2NzRwN2VpQS9OZXpWem4wM2tOVDJiTjY2TzdjdGZqem16VGhtamZzYVNweTlmckpSTUFRQUFBTm5rdWtZQUFBQ2daZVVLNWY3a3RjTVM5WFBkZ3NQeG82OTlJTGJlM3RjU24vZkpiKzJQRDIvWUgxOStZWkVySE52QUkvZHRpTTk4N0pqQXE3N1N3S3NnOEFJQUFJQnNFM2tCQUFBQUxTMVhLQThscnkyV3FKK3UyU2ZqYjdZZWk2L3V2cTFsUG5ONnplUU4yMStMcDMvOElWOWdDMXArMDQzeHZhL2NFcmRjUFdLTStrcnZ2MHdEcjRPbUFBQUFnR3h6WFNNQUFBRFFGc1pMUGYzSkt3MitMclZHL2J4NGZIN2MrNDFmeHdzL09OQXluM245MmxXeFkxMVhYTC9nbGFaK0R0YzFUczVkVy9xaS82Ty9kSHBYL1IyS2F1QTFhZ29BQUFESVBwRVhBQUFBMERiR1N6MkxrMWNwaEY1MWRlTFV1K0t2bnYzREdOcmJXc0hTUGRzMnhNQXRiOFQ4OTd6ZWxMKy95R3RpM2QwTFkvdW14YkhzU3FkM05ZREFDd0FBQUZxTXlBc0FBQUJvSzBLdnhubitwMWZGNXg0dng4akl5eTN6bWRPUTZKNWlUMnk2NGVmUk5mdGZHdnIzRm5sZDJMcmVsYkYxeFZzeHYrdTRNZXB2WC9JTUNMd0FBQUNndFlpOEFBQUFnTFl6WHVxNUxLcWhWOTRhOVhWczdMM3g4RE96NDhsdjcyK3B6NzN5NXFXeDg3OThJSll0ZktsaGYwK1IxL2s5dUdORHJGL3M5SzRHMlpjdlZ2ck5BQUFBQUsxSDVBVUFBQUMwSmFGWFkrMzk0Vlh4NlYzZmFiblB2WFZ6WHp5NDRjMkdYT0VvOGpyYjhwdHVqRHMvM2hVTDU3NW1qTWJZa1M5V2hzd0FBQUFBclVua0JRQUFBTFMxOFZMUGNQSzZ3eEwxOStMeCtYSHZOMzRkTC96Z1FNdDk5a2Z2M3hTZktoeXI2eFdPSXErMzNiV2xML28vK3N1WU0rdVVNUnBqUzc1WUdUWURBQUFBdEs3Zk53RUFBQURRem5LRmNuL3kybU9KK2xzMDcxZzhmVzgxbUdvMW4vdmkwM0hEOXRmaStaOSt5QmRaUjkzZEMrT3B4L3JpcnNKUmdWZGpqQ1hQUndSZUFBQUEwUHFjNUFVQUFBQjBoUEZTVDMveStsdExOTVpQWHIwaWlwLy94eGdaZWJubFB2djZ0YXRpeDdxdXVIN0JLelg5NjNiNlNWNmJONjZPTFlVM1l1NGxKL3dEMGhoSGs2Y3ZYNndjTkFVQUFBQzBQcEVYQUFBQTBESEdTejE5eVdzNGVTNjFSdjJkT1BXdStLdG4vekNHOXJabTJQVGd3TWJZZXRPdlkvNTdYcS9KWDY5VEk2LzA5Szd0bXhiSHNpdEgvRVBST0llU3A1QXZWa1pOQVFBQUFPMUI1QVVBQUFCMGxQRlN6K0xrVlFxaFY4UDh3MGgzYlA5dlAybkpVNzNTUU9tZVlrOXN1L0dmWnZ6WDZzVEl5K2xkVGZGYzh2UUx2QUFBQUtDOWlMd0FBQUNBampOZTZya3NxcUZYM2hxTjBlcW5lcTI4ZVdrOGRNY2Z6dWdLeDA2THZMN3kwQWFuZHpYZXZueXgwbThHQUFBQWFEOGlMd0FBQUtBam5RbTlocE5ualRVYXA1VlA5VXB0M2R3WEQyNTRjMXBYT0haSzVMV3VkMlZzWGZGV3pPODY3aGUrc2Jia2k1VmhNd0FBQUVCN0Vua0JBQUFBSFcyODFET2N2TzZ3Uk9PMCtxbGVxYTkrL3JiWWRNUFBvMnYydjB6NnorbUV5T3VSK3piRUxWYzd2YXZCeHFKNlBlTitVd0FBQUVEN0Vua0JBQUFBSFcrODFOT2Z2UDdXRW8zVjZxZDZkWGN2akVmdjZZbmVhLzlwVW45OE8wZGVtemV1amkyRk4yTHVKU2Y4WWpmVzBlVHB5eGNyQjAwQkFBQUE3VTNrQlFBQUFCQ25RNjlDOGtwUHdyblVHbzNURHFkNnBWYzQvdGNWdWJoK3dTc1Qvbkh0R0htbG9kdjJUWXRqMlpWTzcycUNROGxUeUJjcm82WUFBQUNBOWlmeUFnQUFBRGhqdk5Tek9Ia05KMC9lR28zVjZxZDZwUjRjMkJnN1B2YUxDMTdoMkc2Umw5TzdtbXBmOGd3SXZBQUFBS0J6aUx3QUFBQUEzbUc4MUhOWlZFLzBXbXFOeGtwUDlmcm1nZm54dVM4KzNiSS9RM3F5MVlQYmVtTFQ5ZWRlNGRndWtaZlR1NXB1ZDc1WUdUUURBQUFBZEJhUkZ3QUFBTUI1akpkNmhwUFhIWlpvdkorOGVrWHNmdXAveFFzL09OQ3lQOFBLbTVmR1EzZjg0VmxYT0xaRDVIWFhscjdvLytndlk4NnNVMzVSRzI4c2Vmcnp4Y3ArVXdBQUFFRG5FWGtCQUFBQVhNQjRxYWMvZWYydEpacGo3dyt2aWsvditrNUwvd3ozYk5zUUE3ZThFZlBmODNwTFIxN0xiN294TnErYUd4OSszMUcvbU0yUkR0K1hMMVlPbWdJQUFBQTZrOGdMQUFBQVlBTGpwWjVDVks5dnZOUWFqZmZpOGZreDlIekVrOTl1N2NPTHZ2cjUyK0txOS8rZldQbXB2MnU1ei83Z2pnMngrazllZFhwWDh4eEtua0srV0JrMUJRQUFBSFF1a1JjQUFBREFSWXlYZWk2UGF1aVZ0MFp6UFAzalJmSHdOMzRVSXlNdkc2TkIxdld1akswcjNvcjVYY2VOMFR6NzhzVkt2eGtBQUFBQWtSY0FBQURBSkl5WGVpNUxYa1BKYzRjMW11UEVxWGZGbDcvLy9uaGs2THZHcUtQdTdvV3hmZFBpV0hibGlER2FhMHUrV0JrMkF3QUFBSkFTZVFFQUFBQk13WGlwWnpCNTdiSkU4L3prMVN0aTkxUC9LMTc0d1FGajFOaGRXL3FpLzZPL2REVmpjNDFGOVhyR2c2WUFBQUFBZmtQa0JRQUFBREJGNDZXZXZ1UTFuRHlYV3FONTl2N3dxdGp6cmJJckhHdGcrVTAzeHAwZjc0cUZjMTh6Um5NZGltcmdOV29LQUFBQTRKMUVYZ0FBQUFEVE1GN3FXUnpWMEN0dmplWTVOdmJlMlBQL3ZqdUc5bjdQR05PUVhzMjQ1ZGJGY2N2VnJtYk1nSDM1WXFYZkRBQUFBTUQ1aUx3QUFBQUFwbW04MUhOWjhocEtuanVzMFZ5dWNKeTY5R3JHVDl6d3YyUHVKU2VNMFh4YjhzWEtzQmtBQUFDQUN4RjVBUUFBQU16UWVLbG5JSGw5eFJMTjV3ckhpMXZYdXpJK3VXeVdxeG16NFdqeTlPV0xsWU9tQUFBQUFDWWk4Z0lBQUFDb2dmRlNUeUY1N1UrZVM2M1JYQ2RPdlN1Ky9QMzN4eU5EM3pYR082UlhNMjdmdERpV1hlbHF4b3hJajUxTEE2OVJVd0FBQUFBWEkvSUNBQUFBcUpFejF6ZVdraWR2amVaTHIzQjg4bi84V3p6NTdmMGR2OFdET3piRTZqOTVOZWJNT3VVWEl4djI1SXVWQVRNQUFBQUFreVh5QWdBQUFLaXg4VkxQVVBLNnh4TFo4UHhQcjRwdlB2L3plT0VIQnpydVo5KzhjWFZzL09pL3hmeXU0MzRSc21Fc2Vmcnp4WXJ5RUFBQUFKZ1NrUmNBQUFCQUhZeVhldnFUVnhwN3ViNHhBOUlySEovKzBSL0ZubStWWTJUazViYi9lWmZmZEdQYytmR3VXRGozTlY5K2RoeUs2dldNUjB3QkFBQUFUSlhJQ3dBQUFLQk94a3M5aTVQWGNMaStNVFBTMk92TDMzOS9QREwwM2JiOCticTdGOGIyVFl0ajJaVWp2dXhzMlpjOEEvbGlaZFFVQUFBQXdIU0l2QUFBQUFEcWFMelVjMWxVVC9TNnd4clo4ZUx4K1RIMGZNU1QzMjZmVy9NZXVXOUQvT2VyWG8wNXMwNzVnck1qdlo0eGpidUdUUUVBQUFETWhNZ0xBQUFBb0FGYzM1aE5QM24xaXZqeXMyL0VNODkrdjJWL2hwMTMzeHFyODhkajdpVW5mS0haa2w3UDJKOHZWZzZhQWdBQUFKZ3BrUmNBQUFCQWc3aStNYnVlLytsVjhjM25meDR2L09CQXkzem16UnRYeDViQ0crS3ViSEk5SXdBQUFGQlRJaThBQUFDQUJuSjlZN2Fsc2RmbkhpL0h5TWpMbWYyTWFkelZlOE5ic1hEdWE3Nnc3SEU5SXdBQUFGQVhJaThBQUFDQUpuQjlZM2FkT1BXdWVQcEhmeFI3dnBXdDJHdjVUVGZHblIvdkVuZGxsK3NaQVFBQWdMb1JlUUVBQUFBMGllc2JzeTByc1ZjYWQ5MTYwM3RqeVlMRHZwVHNjajBqQUFBQVVGY2lMd0FBQUlBbU9uTjk0MkR5M0dPTmJHcFc3Q1h1YWducDlZenA2VjM3VFFFQUFBRFVrOGdMQUFBQUlBUEdTejE5VVQzVnkvV05HZFdvMkV2YzFUTFM2eG43OHNYS0VWTUFBQUFBOVNieUFnQUFBTWlJOFZMUDVWRU52WlphSTd2cUZYdUp1MXJLN255eE1tZ0dBQUFBb0ZGRVhnQUFBQUFaTTE3cUdVeGV1eXlSYmJXS3ZjUmRMU1c5bmpFOXZhdGtDZ0FBQUtDUlJGNEFBQUFBR1RSZTZsbWN2UFluendldGtXMi9pYjMrbi8vdjUvSENEdzVNK3MvYnZIRjE5Tjd3Vml5Yys1b1JXOE56eWRPZkwxWkdUUUVBQUFBMG1zZ0xBQUFBSUtQR1N6MlhKYStoNUxuREdxM2grWjllRmQ5OGZ1TFk2NjR0ZmZHZlB6d3U3bW9kNmVsZGcvbGlaY2dVQUFBQVFMT0l2QUFBQUFBeWJyelUwNWU4aHBQblVtdTBobjhZNlk3L2Z1RE5lUExiKzAvLzUrN3VoZEc3L01PeE9uODg1bDV5d2tDdDQxQlVyMmM4WWdvQUFBQ2dtVVJlQUFBQUFDMWd2TlJ6ZVZSRHI2WFdhQjIvZU9NL1J1WG91K1A5LytIbk1XZldLWU8wbHQzNVltWFFEQUFBQUVBV2lMd0FBQUFBV3NoNHFXY2dlWDNGRXEzajVMKytGVWQrOWUrR2FCMUhrNmMvWDZ5VVRBRUFBQUJreGUrYkFBQUFBS0IxNUFybG9lVDFrYWhlSXdmVTFwN2tXU3p3QWdBQUFMTEdTVjRBQUFBQUxXcTgxRE9ZdkhaWkl0dWM1TlVTeHFKNmV0ZCtVd0FBQUFCWjVDUXZBQUFBZ0JhVks1UUhrOWV5cUY0dkIwelBjOGx6dWNBTEFBQUF5REluZVFFQUFBQzB1UEZTejJYSmF6QjU3ckZHOWpqSks3T2MzZ1VBQUFDMERKRVhBQUFBUUpzWUwvVVVrdGR3OG56UUd0a2g4c3FrOVBTdU5QQWFOUVVBQUFEUUNrUmVBQUFBQUczRXFWN1pJL0xLbFBUMHJzRjhzVEprQ2dBQUFLQ1ZpTHdBQUFBQTJwQlR2YkpENUpVWkI2SjZldGNSVXdBQUFBQ3RSdVFGQUFBQTBLYWM2cFVOSXErbWMzb1hBQUFBMFBKRVhnQUFBQUJ0enFsZXpTWHlhcXJub25wNjE2Z3BBQUFBZ0ZZbThnSUFBQURvQUU3MWFoNlJWMU9rcDNlbGNkZCtVd0FBQUFEdFFPUUZBQUFBMEVHYzZ0VjRJcStHYzNvWEFBQUEwSFpFWGdBQUFBQWRhTHpVTTVpOGRsbWkva1JlRFhNMGVRYWMzZ1VBQUFDMG85ODNBUUFBQUVEbnlSWEtnOG5ySThsenlCcTBnVDNKczFqZ0JRQUFBTFFySjNrQkFBQUFkTGp4VXM5QThocE1ua3V0VVh0TzhxcXI5UFN1OUdyR2tpa0FBQUNBZGlieUFnQUFBQ0FOdlM1UFhzUEpzOVFhdFNYeXFwdmQrV0psMEF3QUFBQkFKeEI1QVFBQUFQQmI0NldldnFqR1hrNzFxaEdSVjgwZGlPcnBYVWRNQVFBQUFIUUtrUmNBQUFBQVp4a3Y5VndXMWVzYjc3SEd6SW04YW1Zc2VRYnl4Y3F3S1FBQUFJQk9JL0lDQUFBQTRMekdTejJGNURXVVBIbHJUSi9JcXliMlJUWHdHalVGQUFBQTBJbEVYZ0FBQUFCTWFMelVNeERWazcxYzRUZ05JcThaT1JUVnVLdGtDZ0FBQUtDVGlid0FBQUFBdUtqeFVzL2xVVDNWYTQwMXBrYmtOUzNwMVl4RCtXSmwwQlFBQUFBQUlpOEFBQUFBcHVETUZZN0R5Zk5CYTB5T3lHdktub3ZxNlYxSFRBRUFBQUJRSmZJQ0FBQUFZTXJHU3oyRHlTdTl4dEVWamhjaDhwcTBvOG5UNzJwR0FBQUFnSE9KdkFBQUFBQ1lGbGM0VG83STY2SmN6UWdBQUFCd0VTSXZBQUFBQUdiRUZZNFRFM2xOeU5XTUFBQUFBSk1nOGdJQUFBQ2dKbHpoZUg0aXIvTnlOU01BQUFEQUZJaThBQUFBQUtpWjhWTFBaVkc5d3ZFT2ExU0p2TTZTWHMwNG1DOVdoa3dCQUFBQU1Ia2lMd0FBQUFCcTdzd1Zqb1BKczdUVHR4QjUvZGErcUY3Tk9Hb0tBQUFBZ0trUmVRRUFBQUJRTitPbG52Nm9udXpWc1ZjNGlyemlRRlRqcm9QK2lRQUFBQUNZSHBFWEFBQUFBSFYxNWdySGdlVFoxWWsvZndkSFhrZWpHbmZ0OTA4QkFBQUF3TXlJdkFBQUFBQm9pUEZTeitWUnZjTHhqazc2dVRzdzhocExucUY4c1RMb3R4NEFBQUNnTmtSZUFBQUFBRFRVZUttbkVOWFlhMmtuL0x3ZEZubnRpK3JwWGFOKzB3RUFBQUJxUitRRkFBQUFRRk9NbDNyNm94cDdmYkNkZjg0T2lid09KRTkvdmxnNTRqY2JBQUFBb1BaRVhnQUFBQUEwMVhpcFp6QjVEU1RQcGUzNDg3VjU1SFVvcWlkM2xmd21Bd0FBQU5TUHlBc0FBQUNBcGhzdjlWd1cxZEJyVjd2OWJHMGFlUjFObnNGOHNUTHN0eGNBQUFDZy9rUmVBQUFBQUdUR2VLbm44cWhlNFhoSHUveE1iUlo1alNYUFVMNVlHZlRiQ2dBQUFOQTRJaThBQUFBQU1tZTgxTE00ZVEwbHo5SlcvMW5hS1BMYUhkWEFhOVJ2S0FBQUFFQmppYndBQUFBQXlLenhVazhocWlkN3RXenMxUWFSMTc2b1hzMTR4RzhrQUFBQVFIT0l2QUFBQUFESXZQRlNUMzlVWTY4UHR0cG5iK0hJNjdua0dSQjNBUUFBQURTZnlBc0FBQUNBbHRHS3NWY0xSbDRIb25weVY4bHZIQUFBQUVBMmlMd0FBQUFBYURuanBaN0I1RFdRUEpkbS9iTzJVT1FsN2dJQUFBRElLSkVYQUFBQUFDMXB2TlJ6V1ZSRHIwekhYaTBRZVIyTjZyV00rLzFXQVFBQUFHU1R5QXNBQUFDQWxwYjEyQ3ZEa1ZjYWQ2VW5kdzM3TFFJQUFBRElOcEVYQUFBQUFHMGhxN0ZYQmlNdmNSY0FBQUJBaXhGNUFRQUFBTkJXM2hGNzdjckM1OGxRNUNYdUFnQUFBR2hSSWk4QUFBQUEydEo0cWVmeTVEV1lQSGMwODNOa0lQSVNkd0VBQUFDME9KRVhBQUFBQUczdFRPeVZudXpWSDAyNHhyR0prWmU0Q3dBQUFLQk5pTHdBQUFBQTZBanZ1TVl4ZlJvV2V6VWg4aEozQVFBQUFMUVprUmNBQUFBQUhhWFJzVmNESXk5eEZ3QUFBRUNiRW5rQkFBQUEwSkVhRlhzMUlQSVNkd0VBQUFDME9aRVhBQUFBQUIydDNyRlhIU092QTFHTnUwcStSUUFBQUlEMkp2SUNBQUFBZ0RQR1N6Mzl5V3N3ZVQ1WXE3OW1IU0l2Y1JjQUFBQkFoeEY1QVFBQUFNRHZxR1hzVmNQSWExL3lESXU3QUFBQUFEcVB5QXNBQUFBQUxtQzgxRk9JYXV5MWRMcC9qUnBFWG1uY2xaN2NkY1EzQWdBQUFOQ1pSRjRBQUFBQWNCRm5ZcStCNUZrejFUOTNtcEhYV1BJTVJmWGtyaU8rQVFBQUFJRE9KdklDQUFBQWdFa2FML1ZjSHRXVHZlNlk3Sjh6eGNqcmFMd2RkNDFhSEFBQUFJQ1V5QXNBQUFBQXBtaTgxSE5aVkUvMlNwOUxKL3BqSnhsNUhVcWVvWHl4TW14ZEFBQUFBSDZYeUFzQUFBQUFwdWxNN05VWDFkTzlQbmkrUCtZaWtkZUI5TS9ORnlzbGF3SUFBQUJ3SVNJdkFBQUFBS2lCOFZKUEdudWxKM3N0ZmVmLy9UeVIxMWp5N0k5cTNIWEVjZ0FBQUFCY2pNZ0xBQUFBQUdwb3ZOU3pPS3F4MXgzcGYzNUg1SFUwZVlhamVpM2pxS1VBQUFBQW1DeVJGd0FBQUFEVVFYcVY0Ny8rMjF0RC8vNS80cGFqdi9yM3Y4Z1hLOE5XQVFBQUFHQTZSRjRBQUFBQUFBQUFBQUFaOXZzbUFBQUFBQUFBQUFBQXlDNlJGd0FBQUFBQUFBQUFRSWFKdkFBQUFBQUFBQUFBQURKTTVBVUFBQUFBQUFBQUFKQmhJaThBQUFBQUFBQUFBSUFNRTNrQkFBQUFBQUFBQUFCa21NZ0xBQUFBQUFBQUFBQWd3MFJlQUFBQUFBQUFBQUFBR1NieUFnQUFBQUFBQUFBQXlEQ1JGd0FBQUFBQUFBQUFRSWFKdkFBQUFBQUFBQUFBQURKTTVBVUFBQUR3ZjltNzIrTTBrdlZ2d00ycFF4WGZyQ2NDY3lLUS9rb0FOZ0xyUkdBMkFtc2pNSTVndFJFWVI3RGFDRHdrb0pValdCekJrYjlSeFFlZWJ0T3NXVm1TZWRlOFhGZFYxK0I5a2VHZVlYclEvTGdiQUFBQUFLREVoTHdBQUFBQUFBQUFBQUJLVE1nTEFBQUFBQUFBQUFDZ3hJUzhBQUFBQUFBQUFBQUFTa3pJQ3dDT3FOVnFuYWtDQUFBQUFBQUFBSnNROGdLQUkybTFXcU80dVZBSkFBQUFBQUFBQURZaDVBVUFSNUFEWHE5VkFnQUFBQUFBQUlCTi9Wc0pBT0J3V3EzV1Nkd1VjWnlxQmdBQUFBQUFBQURiME1rTEFBNUV3QXNBQUFBQUFBQ0FmUkR5QW9BRGFMVmFaM0V6Q1FKZUFBQUFBQUFBQU94SXlBc0E5cXpWYWwyRVJRZXZGNm9CQUFBQUFBQUF3SzZFdkFCZ2oxcXQxbVhjL0I0RXZBQUFBQUFBQUFEWWszOHJBUURzUjZ2VkdzWE5hNVVBQUFBQUFBQUFZSitFdkFCZ1I2MVc2eVFzbG1jOFZRMEFBQUFBQUFBQTlzMXlqUUN3ZzFhcmRSWTNreURnQlFBQUFBQUFBTUNCQ0hrQndKWmFyZFpsM1B3Wnh3dlZBQUFBQUFBQUFPQlFMTmNJQUJ2S3l6TmV4ZkZhTlFBQUFBQUFBQUE0TkNFdkFOaEFYcDV4RkN6UENBQUFBQUFBQU1DUldLNFJBTmJVYXJVR2NWTUVBUzhBQUFBQUFBQUFqa2duTHdENGdidzg0eWlPVjZvQkFBQUFBQUFBd0xFSmVRSEFFL0x5ak5keHZGUU5BQUFBQUFBQUFKNkQ1Um9CNEJHdFZtc1lOMzhHQVM4QUFBQUFBQUFBbnBGT1hnQndUNnZWNm9iRjhvdzkxUUFBQUFBQUFBRGd1ZW5rQlFBcldxM1daZHpjQmdFdkFBQUFBQUFBQUVwQ0p5OEFDRi9EWFNkaDBiM3JsV29BQUFBQUFBQUFVQ1k2ZVFIUWVLMVc2eUp1SmtIQUN3QUFBQUFBQUlBUzBza0xnTWJTdlFzQUFBQUFBQUNBS3RESkM0QkdhclZhbDZHQjNidmk2KzdhK3dBQUFBQUFBQURWSXVRRlFLT2trRk1jUlh6NGF4d3ZHbGlDMjd3OEpRQUFBQUFBQUFBVkllUUZRR08wV3ExaDNQd1ZSNi9CWlVqQnR0OWpMYTRjRVFBQUFBQUFBQURWSU9RRlFPMjFXcTErSEpQNDhLMXEvTzFOck1tdDVSc0JBQUFBQUFBQXlrL0lDNERhYXJWYUozR000c09QY2J4VWtlK2Noc1h5alpkS0FRQUFBQUFBQUZCZVFsNEExRklPTGszaWVLMGFUMHJMTi80YTYxWG82Z1VBQUFBQUFBQlFUa0plQU5SS1hwcnhOajc4TlN3Q1RLeW5GM1QxQWdBQUFBQUFBQ2dsSVM4QWFpRjFvVnBabXZGVVJiYXk3T3FWd2w1OTVRQUFBQUFBQUFBb0J5RXZBQ3F0MVdxZHhER01EMVAzTGtzejdrY0t5WDFNb1RsTE9BSUFBQUFBQUFBOFB5RXZBQ3FyMVdvTndpTGM5VFpZbXZFUVVtZ3VkZlVhcGpDZGNnQUFBQUFBQUFBOER5RXZBQ29uTFNXWWxoU01EOS9IOFZKRkRpcUY1MUtJYnBJN3BnRUFBQUFBQUFCd1pFSmVBRlJHcTlVNmk2T0lEeitHeFpLQ0hNL1hzRmVzL3lSM1VBTUFBQUFBQUFEZ1NJUzhBQ2k5VnF2VmpXTVVILzRaUjA5Rm5sWHFuUForR2ZheWpDTUFBQUFBQUFEQTRRbDVBVkJhSytHdXYrSjRyU0tsOGpYc0ZmSXlqc0plQUFBQUFBQUFBSWNqNUFWQTZRaDNWY3JYWlJ6REl1eDFsZmFka2dBQUFBQUFBQURzbDVBWEFLV1J1a0dscmxEeDRXMFE3cXFhRlBaNkU4ZGZLYUFYUjE5SkFBQUFBQUFBQVBaRHlBdUFaN2ZTdVdzU0ZsMmhYcWhLcGFXQTNzZTRUMi9qR0NnSEFBQUFBQUFBd0c2RXZBQjROZzhzeXlqY1ZTK25jYnlQKy9qT1VvNEFBQUFBQUFBQTJ4UHlBdURvSGdoM1VXK3JTemtXcWJ0WFdwcFRXUUFBQUFBQUFBRFdJK1FGd05HMFdxMStITmRCdUt2SmVuRzhqMk9TZ241eG5Da0pBQUFBQUFBQXdOT0V2QUE0dU55NXFZZ1BQOGJ4U2tVSWkrNWVLZWozWnp3MlV1QnJhRGxIQUFBQUFBQUFnSWNKZVFGd0VHazV2amd1VTRBbkxEbzM5VlNGUjd5TTQyMVlMT2Q0bTQ4Ynl6a0NBQUFBQUFBQVpFSmVBT3hWNnNZVXgxVjhPSW5qMTdBSThNQzZUdk54ODcrMHRHZnVBaWZ3QlFBQUFBQUFBRFNha0JjQWU5RnF0UzVTS0NjKy9DdU9OMkd4SEIvc0lpM3RtYnJBclFhK3Vzb0NBQUFBQUFBQU5NMi9sUUNBYmVVT1M0TTRMb09PWFJ6V3F6elNjZmNwYmtaeFhNL244NG5TQUFBQUFBQUFBSFdua3hjQUcydTFXdjA0UnZIaC80SWxHVG0rNVpLT2Y4WGo4RFl0RHhySG1iSUFBQUFBQUFBQWRhV1RGd0JyMGJXTGtqck40MDA4UnIvRWJWb3l0QWlMTGw5M3lnTUFBQUFBQUFEVVFXcytuNnNDQUk5UEZLM1dSVmlFdTE2cHhsNjhpM1B2OEJuM1o1TW0vbkg0RnZpNmRlZ0JBQUFBQUFBQVZhV1RGd0RmeVV2ZkRmSjRvU0pVVkMrUHQvZTZmQlh6K1h5aVBBQUFBQUFBQUVCVkNIa0I4RldyMWVyR1RlcmFaVGxHNmlpRkZWL25rWTczeitHZm9TOUxPd0lBQUFBQUFBQ2xKZVFGMEdDdFZ1c2tmT3ZZZGFvaU5FZ0tNcjdKSTcwWFBvVWMrQXBDWHdBQUFBQUFBRURKQ0hrQk5Fd09kbDNrOFVwRjRLdlRQSVMrQUFBQUFBQUFnTklSOGdKb2dKV2xHTlBvcVFqODBFT2hyOXZ3TGZRMVVTSUFBQUFBQUFEZ1dJUzhBR3FxMVdxZHhVMC9XSW9SOW1FWitucWQzMTlmd2lMdzlUWDROWi9QQ3lVQ0FBQUFBQUFBRHFVMW44OVZBYUF1Si9WV0szWHE2b2RGeDY2WEtsSks3K0xjTzN6R1k4VEVmempMSlI1VDhPczI3dWRiSlFFQUFBQUFBQUQyUVNjdmdBckx5ekQyd3lMVWxiWXZWQVdlemJMYjEvTDltYnA5TFpkNFhBYS9Kc29FQUFBQUFBQUFiRXJJQzZCQ1dxM1dTVmlFdWRMUXJRdktMWVV1ZTNrczM4UDNnMThUSGI4QUFBQUFBQUNBSHhIeUFpaTVWcXZWRDkrQ1hUMFZnVXA3S1BpVk51T1FRMTloMGZHclVDb0FBQUFBQUFCZ1NjZ0xvR1NFdXFDUkhncCtmUTU1bWNlZzZ4Y0FBQUFBQUFBMG1wQVh3RE5xdFZyZHVEa0xpMEJYMmdwMUFVc3Y4M2kxY3M1SW0wOGhkL3pLNDA3bkx3QUFBQUFBQUtnM0lTK0FJOHBkdWxaRFhTOVZCZGpRYVI3M3cxK3A4OWNranF2NWZINnRUQUFBQUFBQUFGQWZRbDRBQjdJUzZGcU9VMVVCRG1qWithdUlROGdMQUFBQUFBQUFha1RJQzJCSEswc3VyZzRkdWdBQUFBQUFBQUNBdlJEeUFsaFRxOVZLNGExdVdJUzR1bm4wVkFZQUFBQUFBQUFBT0NRaEw0QVZlWW5GSkcxUHdyZEFsODVjQUFBQUFBQUFBTUN6RVBJQ0dpTXZxNWpHTXJ5VjlQTldSeTRBQUFBQUFBQUFvSlNFdklCS2E3VmFEd1cyVmgrbmYzK3FVZ0FBQUFBQUFBQkFWUWw1QVZXWFFsd2ZsUUhXOWlXT0Y4b0FBQUFBQUFBQVVCMy9VZ0tneXVieitVUVZZQ1BkT01iS0FBQUFBQUFBQUZBZFFsNUFIWHhSQWxqUGZENi9pNk1mSC83aXZRTUFBQUFBQUFCUURVSmVRQjNjS2dGc1pqNmZYOFhOV1J4L3FBWUFBQUFBQUFCQXVRbDVBVUJEcGVWTzQ3aUlEMytLNDdPS0FBQUFBQUFBQUpTVGtCZFFCNFVTd1BibTgza1JSemMrZkJjczRRZ0FBQUFBQUFCUU9rSmVBTUJYOC9sOEdEZmRPRDZvQmdBQUFBQUFBRUI1Q0hrQmRYQ3JCTEFmOC9uOExvNUJmUGlmSU93RkFBQUFBQUFBVUFwQ1hrQWQzQ2tCN05kOFBwOElld0VBQUFBQUFBQ1VnNUFYVUFjVEpZRERFUFlDQUFBQUFBQUFlSDVDWGtEbHBSQ0tLc0RoMzJmQ1hnQUFBQUFBQUFEUFE4Z0xxSXN2U2dDSHR4TDIrbjl4dlBQZUF3QUFBQUFBQURnOElTK2dMbTZWQUk1blBwL2Z4VEdNRDd0eC9CekhaMVVCQUFBQUFBQUFPQXdoTHdCZ2F6bnNOWXFqRy8vNFU3Q1VJd0FBQUFBQUFNRGVDWGtCZFZFb0FUeXYrWHhlNUtVYy94TVdTem5xN2dVQVFHM054dWRkVlFBQUFBRGdXUDZ0QkFEQVBzM244MG5jRE5Ob3RWcjl1QjNFOFZwbEFBQ29vdG40UEYzVGR2TklqMC9pT0kxam5QOE1BQUFBQUFjbjVBWFV4YTBTUVBtazdsNXhVN1JhcmN1NHZZZ2piVTlWQmdDQU1wbU56MU53Nnl5UDlMZ2ZGcUd1bDZvREFBQUFRQmtJZVFGMWNhY0VVRjd6K1R5OVIwZHB0RnF0YmxnRXZnWkI0QXNBZ0NQS1N5eW1jYmF5VGVPRjZnQUFBQUJRWmtKZVFGMU1sQUNxSVMvbmVKVkdxOVZLTjlRR1lSSDYwaVVCQUlDOVdBbHo5Y08zcFJaN0tnTUFBQUJBVlFsNUFiV1FRaU90VmtzaG11TnpXQ3o3bDRZYk5kVis3OTR1OTJVT2ZQV0REbDhBQUt4cE5qNi8zNUdyNjFvU0FBQUFnRG9TOGdMcTVFdXd4RVlUOXZIVmZENGZwaiswV3ExTEphbVBIUGhLNDJwbFNjZCtISzlVQndDZzJXYmo4M1JkMkEzZnVuT2RCR0V1QUFBQUFCcEV5QXVva3hRTzBkV3BucjZHdThJaTRIV25IUFYzYjBuSGRBT3ZINzZGdml6ckNBQlFRN1B4ZWJydVczYmtXbDREZGwzL0FRQUFBSUNRRndEbEp0eEZ5UHYrT28rd3NxeGpHcnA4QVFCVXpHeDgzZzMvN01pMURIYnB6QXdBQUFBQWp4RHlBdXFrQ0RwNTFjWG5PSWJ6K1h5a0ZOeTN1cXhqK25PcjFlcUhiNkV2NXdBQWdKS1lqYy92ZCtUcXVsNERBQUFBZ08wSWVRRlFKbitFUmRldVFpbFlWejVlL2o1bWhMNEFBSTRyaDdtNjRWdEhydlQ0VkdVQUFBQUFZSCtFdklBNnVWV0NTa3BkdTBacHpPZnppWEt3cTBkQ1g4c2xIdFAycFNvQkFPekhiSHllcnJFK3FnUUFBQUFBSEphUUYxQW5kMHBRR1YvaXVBNkxZRmVoSEJ6U1N1aHJ1YnhqTjN6ck10SFAyeGNxQlFBQUFBQUFBSlNWa0JkUUp4TWxLTDIwSEdNS2QxM1A1M09oUEo1RjdoZzN5Y2ZpVjRKZkFBQUFBQUFBUUprSmVRRzFrWUliclZaTEljcEhzSXRLbkQvQzk4R3ZrL0F0OU5YTm82ZGFBQUFBQUFBQXdMRUplUUYxazVZQjFIM24rUWwyVVhuNTJDM3krRnZ1K3BWR1A0NWxFQ3o5K2FXcUFRQUFBQUFBQUljZzVBWFV6VzNRYWVjNXBIRGRkUjZGWUJkMXR0TDFxN2ovNzFxdFZqOC9UTnRsQUN4dFQxVU9BQUFBQUFBQTJKYVFGd0RiK2hRV0laZlJmRDYvVlE3NEdnQXI4c1BpL3I5YldmNXh1VTM2ZWRzTk9vRUJBQUFBQUFBQWp4RHlBdXFtQ0RwNUhjcXlXMWVxY1pHN0dRRnJXbG4rTWVUMzBvTld1b0YxODdqL1dHY3dBQUFBQUFBQWFCZ2hMd0NlTWc3ZmxtRFVyUXVPWUtVYjJGcGFyZGF5TzlqU1JCVUJBQUFBQUFDZ1hvUzhnTG9SUk5wTkNuVVZZUkhxS3BRRHlrOEFFd0FBQUFBQUFPcFB5QXVvbXpzbDJNamZvYTQ0YnZOeWNnQUFBQUFBQUFCQWlRaDVBWFV6VVlJbjZkUUZBQUFBQUFBQUFCVWo1QVhVeW53K243UmFMWVZZK0J3V3kxY1dZUkhxc3FRYkFBQUFBQUFBQUZTUWtCZFFSMS9pZU5IQTE1MjZkQzFEWFducHhZbERBUUFBQUFBQUFBQ3FUOGdMcUtNVWRPclYvRFYreXEvemE2aExseTRBQUFBQUFBQUFxQzhoTDREeVd5Njd1TnFsNjA1WkFBQUFBQUFBQUtBWmhMeUFPaXBDZFR0NUNYUUJBQUFBbEVDNzArbkdUUnI5L0kvTzRqako0M1NMSC9rbExIN25rOXl0UEM3U24yZlRxVTd0QVBDOGMvNUpudTlYNS8yd3c5eC8zM2psOFcyK0hsaGVDNFI0TFZEWUd3QThSY2dMNFBtc0xybVl3bHd1M2dFQUFBQ2VRYnZUU1RkeSsyRnhRN2NiRHZNRndoZjNmdTZydkgyYm4wUGFwTjhYVGNMS0Z3Qm4wNmt2QUFMQTduTjlOM3dMYjUrc3pQa3ZqL2cwZW84OFhyMFdTRklZYkJrSXY4M1hBeE43RVFBaEw2Q095dmF0eCtXM05JdVFmMGszbjg5OU14TUFBQURnbWVRYnZSZGhjYU0zalJjbGVXcW5lYVFBMlBLR2IrcjhYaXlIbTd3QXNOWThuK2IzczVYeG9rSXZZUmtBZTdYeW10SW1oYjlXZytDdUNRQWFSc2dMcUtQbi9IWmp1c0NlNVBIMUl0dHlpd0FBQUFEUEwzZnJHb1JGdU90bGhaNTZlcTZ2ODBpdkkzWDdLdUlZV2VJUkFMN09qZjN3TGRTVnRpOXErbEo3ZWJ6SnIxc1FIS0JoaEx5QU9qckdSZXhxNi96bGNvc3VuZ0VBQUFCS1pLVmoxMldvVnJEcktjdHVYMi9pNjBzZDVLL1RtRTJuMXhYWUY5MGYvR2VOV0o0eTFtSzVUQmpVV253L0Y2ckFnYzZqeXpCWEdxOGFYSXI3UWZEUCticWdLUHQxd1RQUHNST0JPS0NxaEx5QTJrbGhxMWFydGE4ZnQ5cVpLNFc1SnBaYUJBQUFBQ2kzM05GakVQSk56eHA3a1YvajY1VWJ1MWNsdlhHWjlzZmJIL3czUDRWRk41SzZTemVmUDNxbjBnQXRKV0NQYzNzS2JTK1hXbjZwSWc5S2RVbGR2dDdrNVIzL0NOL0M0RTFaZFNaZGIvejZnLy9tWFJ4RGh3dFFSVUplUUYybGJ6R3UyNDQzL1FKc0VuS0lLM3dMYzAyVUVRQUFBS0E2MnAzT0lDeHU3dlVhK1BKWGIreW1tN3BYSmV1aW8zTVZOTytjZk5LZ1lBbUhPWWFXd2E0MFhxakl4bDdsOFQ1Zkc2U3cxNmptci9uRWJnZnFUTWdMcUtzVTFGcjlaZDZYOEMzRU5jbVA3K2J6ZWFGVUFBQUFBTldXYndKZkJaMDlscjdlMUkxMVNWM3FoeVVKZTNYdEZtaWNGTzRzbElFdDVuVEJyc05kRzZUcnBXWG56enF1WE9ONkE2ZzFJUytncmtaaDhZczlRUzRBQUFDQW1zckxNZzVETXp0M3JTUFY1V05Kd2w2bmRnY0FqOHpuM2JpNURJdGdsOEQyWWEwdTlmd3BMTUplb3hxOXZxNWRETlNaa0JkUVMvUDVmS1FLQUFBQUFQV1VsZ0FMaXkvNHZUN3lYLzA1Zk9zVVA4bi9yTmpnLysrR2J6Y2YrMkd4cE5BeHdrL0xzTmVIdUwwODl2SnA4ZSsxVkNNMFUxY0orTUg4TUFqTlhXYTVETkkxeVB2YzNTdU5VYnhHbUZUOE5ibm1BR3BOeUFzQUFBQUFnTXJJTjRUVGpjaERMK0dVQWwxRkhHa3BvOXREZHNIS0lhamw2SWZEQmI5U0tPNGkvbjJwcTlmVkVYZGIzNUVMamRSVkFoNlk4OUp4a2VieXkxQ3Q1UmkvNUd1Q1NSNTMrYy9KM2FaTEgrYkErdGtEYzJYNlo4dC9kNno2cEwvbmJSbzVFRDZzWXRncjE5UVNuMEN0Q1hrQkFBQUFBRkI2K2NiZGRUaHN0NCswYk5Fby9UM0h2TG1aYnd6ZjNudXQvYkJZdGlwdDk3bDBWYnI1K1d2OE85TFBIaHpwZGZZZHdRQ05uOGU3WWJIRTh1c0tQTjFQZVY3K2UreTdDMmIrZWNYS1B5b2V1ZlpaaHNDN2VYdm9ybWZMcFJ5ckdQYlN4UXVvUFNFdkFBQUFBQUJLTFFlU1J1RXczUmxTeDY3VTFlcTZMRGN5ODQzZjZ6eVduYjRHZWV5ckJ1a204VzM4MlduNXh0RUI5MTI2UWYzS1VReU4xRmNDNGp5UWpvTmhLUGVTakNuVVZTekhzWmMxL3NIMXdQSjVyZFowMmZsenVYMTVnTCsraW1FdklTK2c5b1M4QUFBQUFBQW9yWGFua3dKWWJ3N3dvOGR4WE0ybTArdXkxeUIzK2tyTFdsMHVPM0NGL1FTblVtRHNmYjRCZjNtZ205b1hqdUx2M09Yajd5SEhYSjZyckQ3bEdsVk5OeHdtYUFGVm5iL1QzRElNNVExMy9SRVdZZXFpYWtzVFB0QUJkQm4yNm9mOUI2dXJGUFlTOGdKcVQ4Z0xBQUFBQUlEU3lSMmdpamhPOS95alU0QWtCWnFLS3RZbGg5S3VWNWE5U2lHcVhVTkI2UWJ1V2Z5WmczemplSitFdkw3Zmg2bkcvVFhmQittRzlVbitZMzlsbS9aL1hRTkZsWDEvUHJFZnUzbWZMUzJYWUZ0YTd1ZVRBNXp6bnRPSmQzd2o1KzkrS0crNEt3VnNSMkhSdmZPdUxqVmZDWDFkM1Z2eWVSL1hDS3ZYQ2hjNWZIOVYwdnF0Ry9KeWJnSXFTOGdMQUFBQUFJQlN5Y0dXRkdiYVo0amxTMWgwb0xpcVE0MXlKNDFCdnBsN21jY3VOM0pUc0tUSVFhL3JQZTNIYnJCVTQ2NzdlVFYwVjl5cjd6SW9sRzdpOTBPOXdrRjEyNC9wL1RxNTk0K3YxemdQTHNNYXkzM2REZFVLOXprbW16VjNwK056R0JaaG9ESkp5ektQMHFoYXg2NHR6emYzbDN6ZWR3ZlF0MkhSV2JTTTExVHJubk4wL0FJcVM4Z0xBQUFBQUlEU3lCMUEwbzNKZlM1Wmx6cDNYTlNwYThkU2ZrM0RaV2VOc052TjlWVHozK1BQZWhkLzduQVBUMi9naUQ3NHZpL3lXQVlzVXMwdmd5VWY2N0IvbHdHLzR0NDVjaG40NnVkaGlVK2VlOTVPeDJTYU05NlU3S21senAycDQ5U280ZWVTWlFmUWs1VTVZdGV3YURybi9CcC9adnBaZ3pKMFg4elhqd0MxOXk4bEFBQUFBQUNnREZJWHFiajVHUFliV0VpQnBYNGRBMTZyMHV1TEk5WHZQMkVSYXR2RjI3Z3ZSanZ1eTJXSE1ZNTNERXh5T0s4YngyOHFVdXYzZXBIMmRUNjNwZmZhZitQNEVCWWRDOHQyWHUvYWE3V2V0OU41ZmhMS0ZmQktjK0JQOGIxeDF2U0Exd1BuamhSNlMrL0puL0k1WTFjcExQWXhIZ2ZYSlhpdjkrMWxvQW1FdkFBQUFBQUFlSFk1NFBWK2p6OHloUjMrdTZlT1ZKV1Jnejc5c0FoOTdCTDRlQjMzU1pIRFd0dlFUZXI1am9GMEkvOXlEOGNBMWRubjF5bmttUU5mUDRmZGc1NzcxTFdIYWpsbjkrTkkzZVorTGRHNWZobnU2cGVoczFUSnp4bkZTakQ4dHozTUZXa3B5TnUwaE9NenZxeStQUXMwZ1pBWEFBQUFBQURQNmtBQnIzNWVvcWlSOG12dnh2SEhEaittRjhmR1FTOWR2RXAxRFBTRG9GZlQ5dnNvQnoxVHA1NnhpckRuK2Zva0x3K2N1bTZlbHVScGZRNkxVTGR3MStibmkwa09CYWZyaFhjN3poY3A3SmM2Z2FhdzE5a3p2SnllUFFvMGdaQVhBQUFBQUFEUDVvQUJyOXVtMXpaM2RMb0l1M1YwU2pmeE53MTY2ZUpWbm1NZ3ZROEdLdEhJZlYrc2hMMCtQK05UNmRzYnRabXYwNzVNNTVTeUxNMlk1clcwSkhPM3lhSHVQVjR2RE1OK3dsN3B1dUhQMU5WcmgyNmdteDZiRi9ZaTBCUkNYZ0FBQUFBQVBJc0RCTHdTQWE5NzhzM3YxRlhqMDVZL0l0MnduYXpUbVNQK045MjRlYXZxcGR2LzcxU2lzZnMvaGIyNmpnRjJtS3RYdTNlOUxNblRTbDBxejVxMkpQTVJ6aGVyWWE4UE8vNjRkQzFRSEttclY5L2VBNXBDeUFzQUFBQUFnS1BMTi8zMkhmRDZXY0RyWVhsSnBsVHpiVy9hcHM1YzY5eXNIYWwyS2FXQXhtZGxhUFE1WUJnMy8vY014OEdKNmxkK3JpNWI5NjYwTk9ORm10ZnNvWU9kTDFMWWF4QWYvaWZzdHV6cjMxMjlEdnlVZGZJQ0drUElDd0FBQUFDQW84bzNqWXM5LzlqZlp0UHBTSFdmbG0vYS9yemwvLzVrMEN2Kzg3Uk1ZMCtWUzduZjcrSm1xQktOUHc1U1dDZTlmLzg0NGw5N3B2S1ZuYXZUT2VQUFVKN3VYU2xzWkduRzQ1NHpKbm5aMTdUczh5NEIwYmZ4ZUxyTjNUNFBjVTM1MHQ0Q21rTElDd0FBQUFDQW8wbkxQb1ZGdDZjWGUveXhuMmJUNmFYcXJpZUg0VkpIbnk5Yi9POFBCcjN5amR1aDZwWit2K3ZtNVRoSUhYcFMxNXZmVklQSDV1azRpbEN1cFhkL1NXR2pIRmpsK09lTjViTFB1eXo3bXJwNnBhRFh2cnR1OWUwaG9FbUV2QUFBQUFBQU9LWlJXTnpvMjVjVVZMSk16NFp5UjU5KzJDNzBrNEplb3h6WVc3b08rdzN1Y2JqM0g0UWNqUDM1Q0grVlRsNFZzckk4WTFtNk1xWTUvdi9pOFhwbDd6ejdPZU51WmRuWFQxdittSFNkOEhzOHp2YTVQd2RiL0Q5ZGV4U29LaUV2QUFBQUFBQ09JaS9uOTJyUFAzYVFsaE5TM2MydExOMjJ6YzNhRk5RcmNzZVhVZGh2Y0kvREdTa0JLK2VBZER3Y091Z2wvRm1kT1hvUXlyVThZNXFidW5tdW9rVFhEbkhzMnRYclRlb1dkeThzdnMweGU3Ymw5WWZsSFlIS0V2SUNBQUFBQU9EZzhvMjRYL2Y4WThkNUNTRzJsSmUrNm9mdGcxN3A1dnRybGF6TS9wNEVTemJ5ejJOaUZJN1QwWXR5ejlHcHM5TDdFajJsRHlsSVpIbkdVcDg3aG1HM3JsNnBXOXp0L2VXZk56U3dKNENtRWZJQ0FBQUFBT0NnY3FlR2ZZZXgwaEpPQTlYZDNZNUJMOTB3cWtjd2t2dm5nRkhjL0hMQU9hQ3Z5dVdkbjNNM3hqY2xlbHJ2NGpGcGZxL0d1V081OVBOdlcvNklkQTJST25wdHUreTI1YnFCeGhIeUFnQUFBQURnMElaaC8yR2dLOHMwN3MrT1FTK3F4ZEpuUEhRT1NKMmNQcWhFYytRQWRoSEsxWTN4NTl3aGlncGRQOFNSbHVQK2IxZ0U4RGVWbG5UOVBTOFh1c254ZXhFRXpZRUdFdklDQUFBQUFPQmdjZ2VYZlhjSVNUY1JyMVIzdjFhQ1hwYnpxemNoTHg0N0J3emlabnlBSDkxVjNkTE56Y3VBMTJtSm50YlB1YXNjMVR4L3BDNlJhZW5GYmNQaTcrTnhPZHpndngrb090QkVRbDRBQUFBQUFCelNJY0pZbHptUXhKN2x1cWJ1R0Y5VW83YjdXTWlMcHh6aS9kOVYxdkpvZHpvcGlETUo1UWw0cGVOTndLc2U4MHM2cnZwaCs2NkFiL1B5b1Q4Nmh0TTU1WldLQTAwazVBVUFBQUFBd0VHME81MjBmTSsrYnlKL2NTUDRzSElJcUI4RXZlck1zcHc4OXY1ZkJqMnA1N3ljQWw1RldDeVJWeFlYNXZWNm5VTnlWOEIzVy82STEyc0V2UVlxRFRUVnY1VUFBQUFBMk5Wc2ZONWYrV082Y1hDeTh1ZVQvTSsya1c0eVBkUnRvbGg1UEduM2JpYjJBa0M1NUtXZ2hnZjQwWlpwUE1iY1BwM2U1cERlZTlXb0paM3dlT3I5WDhUMy8yOWhmMHZ0bnFscUtlYmxNZ2E4VWdldnd0NnA1WGxrR0krNXlaYlhFU25vdFZ4QzlpR1hLZ3cwbFpBWEFBRHJmVEFmbjNmRHcrMzF0NzF4bjI3WXIvNVMrYmJkdS9GTFpvRHl6Z1A5UEEvY0h5K1A4TmMvdEF6RDIzdlBiL253YzFnc1BaSVU5K1ljWVRDQTQwbzM0QTV4STFuSTYxanovM1E2eWtzaXZWV04ya25YUkQxbDRBbkRzT2pvdFkvci9SUGxmRjRsRG5pTjdKM2FYMGVraDNzTGVzVi9OaWpaY1F4d1ZFSmVBQUJOL0lBOVBsOE5acTEyVyttdi9HZG54LzdBL0lNYjlKTTg3dHE5bTF0N0VlQmc1K0t6UEFkMDg3eHc5UGxnUnkvRHR4dFJ2VWZtbXJRODBWMmVZNWFkd29TTkFmWW9kL0U2UkplRlAvSlNZaHpyMm1EUmlhTWZCSUxxWnFJRS9PQzlmNWZERkIvMzhPT0V2SjUzVGhidzRqblBKU25vZGJ2bE1aaUNYc1c5WTJXb3FrQ1RDWGtCQU5UeHcvTzNybHZMc1F4eXBjY3ZLL0FTMXJsQi95Vjg2OHlTdHBNODNLUUgyR3pPNklkRm1Lc2ZtblB6OXZTaE9TYldZam0zTEVmcS9GVTRTZ0MyY3FndVhpT2xmUllYK2ZPV3poblFwTThLaTJVYngzdjRuSENxbXM4amg2NkxrcDIvZnhQd2F0eTU1RFlIeHYvYzRuOS9uenQ2alhMdzlPV2UzaHRuNlhuWk8wRFZDSGtCQUZUNUEvS2kyMG8zTEVKY3l5QlhVMjdRdjFoNXJhL3UxU1Z0MGk4aEoza1V3UkpkQUt0elI3cFIydzg2Y2p3MnQvVHV6U21wODlmZjRTL0JMNENuSGJDTDE1ZlpkSHF0d3M5dy9iRG82Sk91SHo2cVJtMjRzYzI2Qm5IOHBReVZuWStMVUs2QTE0YzRwMXphTzQyOGxraEJyNS9EZGtzM3ZzL2R3UFo1N09nd0NGU1NrQmNBUUZVK0NDODZyYXd1b2VYRy9OTldiOUsvelRXODM2SGwxdEtQUUVQbWtIUlRkamwwNE5qY2FSNnZjejNUWnB6bmtpTFBKeE5sQXZqYjRFRHpUYUcwejNnOXNlam84Mjc1K1lySzB3R2JkZC83ay9qZS83QzhGdDVXL0JuZDlMTlU5RGhXQWw1bDZxS1d2andqNE5YczgwbnF4cFVlYmhQMEtvTGZad0FJZVFFQWxQSUQ3Mks1eFg1WUJMclNWbHY3L1hpcVEwc1I4czM2NTdwUkg1L0xWZDduVFhUWjlNQmQ3cTUwMWRDWG53SXlmdEc3LzJOS3NPdXdsdlBKbTF6dnoza3VLWUlRY1ZPY3hmMWVLSU81bm9mMzk0RitydmZjYzE5ZlRLZkQzTkhMWjFSb2xtSFlNZVFWRmw5WW5DamwwVnlWN0Z5ZHZuaDVrVHBEMmpXTnY1WklRYTkwUHRnME5PNzNHZ0JCeUFzQW9Cd2ZiaGZoanY3SzhLSDF1SllkV3BiN0kvM2lxWWdqTFFWenpOQlhPZzZhMnFGTmkvUm1MYmZLNGVhVGJsamNXQitZUzQ3dVpWamMrRnAyKzFvTmZSVTZmZFhTQytkdGN6M2ZhM2M2L1h4T1BJUkNoVXNoWFdmOHFReVZKMmpCK3A4ejl0VE5pNlBOeFZjbDNGY1hPcm14Y2s0WjVxQ1hjd3JBaG9TOEFBQ2U0NFBzWXVuRjVVakJIamZpeXlYdGoxZDVwUDIxN1BRMTBvRUNLT204TWdpTEc2NENKK1h4VU9ockdSNitWaDZneGdZSG0rK21VOWZpWmJqdWlQdkJzbzIxMlk4S3dTYUdZYmRBUnZyOVY2R01oeFhmMTJrZWZsT3lwL1V1TGZscjczQnZIaHJFNHpXZEYzUUhCZGlBa0JjQXdERSt0UDR6MU9VR2ZQVXNPMzI5eVlHdlVWZ0V2bnp6R1hqT3VTVjF4VW5MSlEzRDRUcW1zRDlwSDczSmM4bHF4OGhyOHdsUU14Y0grcmxqcFMzUmRjaWlBOGZBTlFnMDZuMmZ1bm1sYy9HMnY5ZlMxZlBBY21EbWZjbWUxampOR2ZZT2oraUh4VEt1dmdBTnNDWWhMd0NBQTdEOFlxMmxzTmV2WWJHMHhVZzVnR2VZWTlMTmtjczh6Qy9WdE5veDhuM2NwMzhFZ1MrZ0J0cWR6c1VCNTZhSkNwZk9JSTZQeWdDTk10emhmUy9rZGRnNU9OVzNLTm5UU2w5dXViQjNlTXhzT3IzTDE0K3VKd0RXSk9RRkFMQ1BENlRqODI3NEZ1ZzY1STBOeXNOU01jQnp6RGNwMkRVMHo5VE9NdkIxRmZkeENuc04yNzJiaWJJQUZYVElHN25PaTJXN0xwbE9pM2FuOHlIc3Rud2JVTDMzZlZxR2ZKc3VmbWNxZUZEWEpmeWNPRWdoSHJ1R05jNHJsb0VHV0pPUUZ3REF0aDlBRjBzd3Bwc1lhWHVxSXMzUzd0MEllUUhIbkhQU2ZITVZMSWxVZCttbXpPczR4d3lVQXFnb0lhL21HUVpmZElLbVNaOUxmbFdHOG1oM091bGMzQ3ZaMC9vd20wNnY3UjNXa1plQlR0Y1Rmc2NPOEFOQ1hnQUE2MzdZWEN5UGRSRytCYnY4RXJ1NXhrb0FIR251NlliRjByQTkxVERIQUpSWnU5TTVPL0JucElrcWwvQmFaVHFkeEgyZkFoKzZiMVQzdXNOMUpwdEtuMCsyQ1hsMWxlNGc4MisvaE9mZzFPM3QwdDVoUStsMzdyZkI3OXdCbnZRdkpRQUFlRnk2dVo2V3hvb2pmY0Q4WHh6dncySTVKUjgybTAwWEwrQVljOUF3YnY0S2JyeVpZd0NxNFVJSkdpdUZ2TDRvQXpUa2M4cGkrYjBQVy95dnVoTHZXYnZUU1Y5SUxXTzNyRXZMTkxMRnVXVVNGaDFDajZXdjZrQVY2ZVFGQUhEL0ErWDRQSDBEZlJBV055bjhBb3FIdUFFUEhIb2VHZ1hMRkRSVm9RUkFSZldWb0tIWEx0UHBuVzVlMERncFdQUmFHWjVkK3R4WXRpK2kvbUdaUm5hNHByakt5emI2c2h2QUk0UzhBQUNDWUJjYks1UUFPTkI4TkF4dWtEYWRJREZRVlc3R05Wc0tlYVdsdVhTOWhpWjhicGxPcjl1ZHpwZE4zL05wYWNINC94WXF1THRZeTBGWXJEWlFKdW1ZR05nNzdDaGRUL3lwREFBUEUvSUNBQnBMc0lzdGZXbjNiaWJLQU94NVRsb3VzK0VHZWJOOU5zY0FWZFR1ZE01VW9lSFhNcnA1UVJQcDV2Vjg4MjQzTE1LMVpUTzBUQ043dUthNGpjZjRPOWNVQUEvN2x4SUFBQTJXdmhIMEpnaDRzUmtkVm9DOW1vM1ArM0V6Q1FKZW1HT0E2aEx5SWttQmd5L0tBSTE2ejIvcVJObjJZaFRLMXpueGMxcHF6NjVoaitlWHo4b0E4RDBoTHdBQTJFeWhCTUMrek1ibmc3ajVHQ3h0aERrR3FMYXVFcEM3dDdqQkQ4MTV6NmN2S0d3YXdoQUszbEZlcHJHTVh4QWEyRHZzK1pwaXFCSUEzeFB5QWdDQXplaXlBdXpGYkh3K2lwdjNLb0U1QnFpQmZrMytEbmFubXhjMHk3VVNIRSs3MHprSjVRelRqbWZUYVdFUHNVL3htQnFsWTBzbEFQNUp5QXNBQURiakJqeXdrOW40L0NRSHZGNnJCcXZhdlp0Q0ZZQ0s2aW9CWDY5ekZwMDNoRDZnT1RhOWZ0WEphemZwYzJRWnUwQmYyalVjeUZBSkFQNUp5QXNBQU5iM3BkMjdtU2dEc0swVThBcUxHeUVDWHR6bkc4cEFsYjA4d3Q4aEdGQWRReVdvakVJSjJPbnp6WFNhUXAyYmRPODdVYlh0dER1ZGZ0eThLdUZUKzVDWDdvUkRuR01LbjVVQi9rbklDd0FBMXVlWFZzRFdWZ0plcDZxQk9RYW9pM2FuMHozU1g5VlY3WXBjODB5bmsrQ0dMRFNKN24zSE1TcnA4eHJhTlJ6WVFBa0F2aEh5QWdDQTlSVktBR3hEd0F0ekRGQmozU1A5UGViUWFoa3BBYmlPZlVCUHVUYlg3blNHNFRoZE16ZjFJUWQ3NFdEeU1mYmhBRDlhWjBHZ2tvUzhBQUJnZmJxc0FOdEszMjUzY3hwekRNQU84bEpWVk1Cc09oMkZ6Wlp3QTZyOVdZZkR6WDBwaUhKWjBxYzN0SWVvOExGbUtYQ2drb1M4QUFCZ2ZXN0FBeHViamM5SHdUZldlZHJuZHU5bW9neEFSUjN6QmxsZnVTdEY4QU9hOEhsbk9yMkxtMC9yL3ZjNXRNVDZydUo0VWNMbnBZc1h4enpQcEdQdEQ1VUFFUElDQUlCMWZYRURIdGpVYkh3K2pKdlhLc0VQRkVvQVZOZ3hiOWIzbGJ0U3JwUUFHbU9UVUtmdU9XdHFkenJkRW4rZUhObER1SzRBT0Q0aEx3QUFXSTh1WHNCR1p1UHpRZHk4VlFuTU1RQjcwOU1CcGtMWFF0TnBtdDgrcXdRMFFxRUVCMUhXVU1zNG51UHRjNDU5WFpHT3ViRktBRTBuNUFVQUFPc3BsQUJZMTJ4OG5yNmQ3bHVtbUdNQTl1OUNDU3JGa28zUWhNOC9td1YrZFBKYVE3dlQ2Y2ZOcTVJK1BaOTFjZXdCUEJNaEx3QUFXSTh1SzhCYVp1UHoxR0ZrRk1jTDFXQWQ3ZDZOT1FaZ2ZVSmUxVEpTQW1pTWRUdnM2TWk0bm1GSm45Zm4yWFFxd011enlNZWVMcUZBb3dsNUFRREFldHlBQjlZMWpPTlVHVmlUNVNZQU52T3EzZWwwbGFFYUxOa0lqVklvd1g3a0xsNjlrajQ5blpSd0RBSThJeUV2QUFENHNjL3QzczFFR1lBZm1ZM1ArM0h6UmlYWVFLRUVBQnU3VklKSzBmRUZYTmV1Nml2VkR3MUwvTnhHZGcrT1FZRG5JK1FGQUFBL3Bvc1g4RU1yeXpTQ09RYmdzQWJ0VHNkeVg5WGgrZ2lhOEhsb09pMVVZWGNsNytMMUllN25PM3VKWno3WHBHUHdnMG9BVFNYa0JRQUFQK1lHUExDTzFGWGtwVEt3b1VJSkFEYjJJdWptVlJsNXljWXZLZ0dOc001UzVGMWxldEt3eE05TlowYktZcVFFUUZNSmVRRUF3SThWU2dBOFpUWSs3OGJOVzVWZ1EyazVZTitFQjlqT3BXNWVsU0lZQU0xUXJQSGYrR0xNSTByZXhldnpiRHAxTHFjVWN1ZkF6enYrbUs1S0FsWDBieVVBQUlBZjBza0wrSkdSRXJDRlFna0F0cGE2ZVYzRk1WQ0t5c3g1cjVVQmFpK0ZnUHJLc0xYTGt1OWJLSk5SMk8zTGRnS25RQ1VKZVFFQXdOTjBXUUdlTkJ1ZjkwTjV2MjFOdVFrUkE4NWx1M25kN25SR3Vac0Q1WmJDQWUrVkFXcisyV2l4UEd0ZkpUWVg1N051M0x3cThWTzhzcGNvbVZIUVVSMW9JTXMxQWdEQTA5eUFCMzVrcUFSc3FWQUNvQWFlK3dzUmJqcFh3R3c2VGNmSko1VUFxT1RueWsveFBENnhpeWpadGNYRXRRWFFSRUplQUFEd05DRXY0Rkc2ZUxHTGR1L0dIQU93dTlOMnB5UG9WUTJGRWdBODhMbWcwem1KbTRzU1A4V1J2VVJKdVFZRUdrZklDd0FBbmxZb0FmQ0VTeVZnUzJNbEFPcWdKRXNsdm1sM09oZjJSdW1QbGNzNFdqOFlQbjhCVGYxYythTEV6Ky9hTHNLeENWQU9RbDRBQVBBMFhWYUFCODNHNTkyNGVhVVNiS2xRQW9DOUdyVTduVE5sQUtDQ0JpViticFpxcExUeWN0Qi9xQVRRSkVKZUFBRHd1TS90M3MyZE1nQ1AwTVdMWFJSS0FOUklHYm9UcGc0b283emtGUUJVUXB5M0JuSHpzc1JQY1dRdlVYSzZlUUdOSXVRRkFBQ1AwOFVMZU1wQUNUREhBSHcxS2Nuek9JMmpFUFFDd09mS3ZTbnNJaHlqQU9VaDVBVUFBSTl6QXg1NDBHeDhQZ2lMamlHd2pVODZSUUkxTXluUmN4SDBBcUFTNGx6VmpadGVpWi9pNTlsMDZuZGpsRnBlVHZTVFNnQk5JZVFGQUFDUEs1UUFlTVNGRXJBRE4wb0ExODJISmVnRlFCVmNsdno1V1FhUHFoZ3BBZEFVUWw0QUFQQTROK0dCNzh6RzUrbUc4U3VWWUFlRkVnQ3VtdzlPMEF1QXNodjQzQUxQZDZ6RzY4UXpwUU9xUnNnTEFBQWVaaWt0NERGOUpXQkhRc1JBcmN5bTAzVGQvTG1FVDAzUUM0QlNpbk5UNmc3OW91VHp1MDVlVk9WYTlIYkxhMUhYaUVEbENIa0JBTUREM0lBSEhtT3BSbmJ4cGQyN01jY0FkVlNVOUhtbG9OZEVwd1lBU21aUTh1YzN0b3R3TFFwUVBrSmVBQUR3TURmZ2djZjBsUUR6QzhCM2loSS90OVFwcGNoZFV3RGdXZVVPazYvTTY3QlhPczhCamZCdkpRQUFnQWU1Q1E5OFp6WSs3OGJOUzVWZ0I0VVNBTTV2enlJRnZYNXZkenJ2WnRQcDBPNEN5aTZlcjlKbmorNFAvck83dkV3WjFUSXdyNE5qRm1BYlFsNEFBUENBZHUrbVVBWGdBWDBsMk1xWHNBalBUdkpJaWszT3U3UHgrVU8xNzRadk43N1N0K0dYUzNHbDdZdVMxc0w4QXRUU2JEcE5TeUorQ292bEVjdnNiWHllYVU2NWlNLzV6cDREU215UXpsay8rRy9HUHFOVWR0K1dmVjczdVlXcVhZdmVWZVJhRkdBblFsNEFBUEM5VDBvQVBLS3ZCR3VmUjRzOGJ0dTltOG11UDNDYjhHM3V2SlpHQ24yZDVQMlgvdnljM2RoMFdnRHFMSjJycTNCanJSZEhDcVZkdUlrTndESGxEbTFsbnl2SDloU3VSUUhLU2NnTEFBQys1d1k4OEpnekpYaFV1aEV3aXVPNjNic3BSV2VVSEM1TG8xajk1N1B4K2JMcjEzTDB3M0dDWDUvS1VodUFBMG56d0p1S1BOZlU4ZkZqdTlQNWJUYWRYdHAxQUJ6SlJRV2VZMkUzVVZGRmhhNUZBYllpNUFVQUFOOFQ4Z0llNHh1aDMvc1F4M0FmM2JxT0pRZXRpckJ5OHlJSHYvb3I0eEQ3MnZ3QzFOcHNPcjF0ZHpxZncvTjJUTnpVbTd4ODR5QTlmM3NSZ0FNYlZPQTVGbllURmVYWUJXcFB5QXNBZ0cya0d6ZVRCejQ4VDFiKytWUDY5LzdjelNOSkhWVmVQUFByYzNNSCtNNXNmSzZMMXorbHpsMkRLb1c3bnBLRFg5ZDVIQ3IwVlRoc2dBWkk1OUdxZFZCSTUvZy8yNTNPdTlsME9yUUxBVGpJWjQ1cUxOV1krTDBZbFJTdjQrN2krK3hUOEFVOW9NYUV2QUFBZU1pWHNQaUZUaHAzcTlzOUxUTlYvUEJEK2JlbHRMcjNSdS9RTHo2K3hzSWhBRHlncXdSLyt5V2VLNi9xL0FLZkNIMWRoTzJYZDNTekJHaUNVYWp1TWpsdjI1MU9PczlmenFaVG53a0EyTGNxTE5YNEtRVmw3Q29xTEYzRENYa0J0U1hrQlFCQTZzU3lESFJOeWhKd1dsbEs2enV6OFhrM0xBSmdhZlREZnJ0L2ZYSklBSS9ReVdzUkF1N0hjM1Rqd2tvUGhMN1NYTFFNZkwxYXAzWk5yQnZRUEhuSnhpcDNVRWpQKzJOOERiL0Y3ZENOYmdEMnFBb2hMNTlacUxvaXJQK0ZnMzdRY1J1b0dDRXZBSUJtU2pjc3JxdmFzU292RFpiRzlmS2ZyUVMvK25tN2JjY3Z2OHdDSHROVmdtWUd2SjZZaTFJM3M2dDdYYjdTZUNoNFhLaGE3WHh4M2JBUlFabG1TZWZIOXhWL0Rlbm00S0RkNmFTdVhpTzdGSGdHSjBwUW84OFBuVTdhbjcwS1BGWFh0MVNkWXhpb05TRXZBSUFHYXZkdUxtdjRtaWJoKytEWGF1Z3JiZGRaV3NzdkFvREhkQnYrK244UjhIcDBEcnJmNVdzWjlsb05mS2xkL2FSbHJQdktBQTlLNThPcnNMOXV1ODhsUGYvMzdVNW5FQlpMT0RxWEE4ZWtrM0M5WEZUa2VacnJxTFI0dlRhSjEyNWZhbkFkQ3ZBZ0lTOEFBR29yaHhIKy91WFVTcWVWTkI3cjl1V1hXUURmRzhkejZwVXlyRDMvUEJUNHVsWVpvQ25TRW9mdFRtY1UxbDhxcCt6UzU0WS9MZUVJd0E3NkZabkRDN3VLR2tqSDhTdGxBT3BJeUFzQWdNYTQzMmtsbVkzUCsrRmI4S3RYMVNVc2dhUG9OZmkxRCszK3JlZWVmOHc3QUEyU3dzRnZhdmFhbGtzNHBxQ1g4RE1BbTZoQ0o2OVBkaE0xa2I3RUsrUUYxSktRRndBQWpaWkRYWVZLQUR6cXN3QXNBSnZLUytWOGlBOWYxK3lscGFWL2ZvMnY3VElzbG5BVTVBWGdTWEhPT0F2VldEcHVZbTlSRTBVY2I1VUJxS04vS1FFQUFBRHdCRGV2QWRqV3NNYXY3V1VjdjdjN25TS092bDBOd0JPcU1rL2MybFhVaEdNWnFDMGhMd0FBQU9BcGhSSUFzSTNVelN0dVB0VDhaYWJsbkQvbXNOZVp2UTdzK2Z4Q1BmUjk5b09qWG9QZXhjMW5sUURxU01nTEFBQUFmbUEyUGo5cDhNdWZPQUlBMk1Hd0lhOHpoVEgrYkhjNm96aTZkanNBSzE3NTdBZU9aNEI5RVBJQ0FBQ0FIMnRzWjQ1Mjc4WXlCd0JzTFhmemV0ZWdsL3c2anIrRXZRRDQrbm1xUWt2NjVqa2I2cUpRQXFDT2hMd0FBQUFBQURpa3F6aStOT3cxQzNzQlc2dFNNSWdmcXNxKy9HUlhVVFByZkdIdFJKbUFxaEh5QWdBQUFBRGdZR2JUNlYzY1hEYjA1UXQ3QVRSYlZicEMzOWxWMU15a1J1OVBnTDhKZVFFQUFBQ1BtbzNQL2RJVGdOM25rK2wwRkRmakJwZEEyQXZZaEd2dyt1aFg1SGtXZGhVMXUvYThWUVdnanY2dEJBQUFBUEMwZHUrbW1JM1BtL3J5TFY4QXdMNmtibDUvTnJ3R0tlejF1dDNwZklqYkt6Y2dBZGZnTmY0Y3VRajF2cWpJMDlYSml6cjY1UWZuMDRrU0FWVWo1QVVBQUFBOHBSOThxeHVBUFVpQnBuYW44eTQrZktzYWY0ZTlVbmV6WWF5TnVSYTRmdzJPL1hoTVFzZlU4ZHJ6U2hXQXVyRmNJd0FBQVBDVUN5VUFZRjltMCtrd2JqNnB4Tjk2Y1h4c2R6cEZIQVBsQUxLdUV0UkNsWmJkbk5oZEFGQitRbDRBQUFEQVUwNW40L091TWdDd1I0TTR2aWpEUDZTdzEvdDJwek1SOW9KbWkrZUF0TFRZUzVXb2hjcUV2R2JUNmNUdUFvRHlFL0lDQUFBQWZtU2dCQURzUzFxMk1XNHVWZUpCS2RpUndsNTNjUXh6MkFOb2xyNFMxRWF2SXM5VDhCb0FLa0xJQ3dBQUFOYlQ1S1dsM3M3RzUyY09BUUQyWlRhZGp1TG1nMG84NmtXYWYrUDRYN3ZUR2NYUlZSSm9qTDRTVkY4OGIxZnA4OU90UFFZQTFTRGtCUUFBQU91NWEvanJIODNHNTdxSkFMQlBxWnZYSjJYNG9kZHgvTlh1ZEs3ajZDc0gxTjZGRXRSQ1Z3a0FnSDBUOGdJQUFBRFdjUnBISWVnRndMN01wdE1Vb0U1aEJzdEVyZWRWSEIvYm5jNXRIQVBsZ1BySlFjNlhLbEVMVmVya1ZkaGRBRkFOUWw0QUFBQ3dIa3RZQ0hvQnNHZXo2WFFTRmt1VENYcHROaCsvYjNjNmt6Z3U0ekF2UTMwTWxhQTJMSGNQQU95ZGtCY0FBQUNzNTA0SnZrbzNsbTluNC9PK1VnQ3dEN1BwTkFXcEwxVmlZNm5iejY5eHBMRFhNSTZ1a2tCMXhmZHc2bXpZVTRuYXFOSTVlV0ozQVVBMUNIa0JBQURBZW5UeStpYmRWUDQ0RzU4UGxRS0FmWmhOcDZPNCtWa2x0dklpanJkeC9OWHVkRWJDWGxBOXVTUGZTQ1ZxNWJSQ3ozVmlkd0ZBTlFoNUFRQUF3SHAwOHZyZTI5bjRmS0tyRndEN0lPaTFGNi9ESXV4MUhZZjVHU29nQjd5S3NBaHNVbzk5YXFsR0FPQWdoTHdBQUFCZ0RlM2VUYUVLRDFwMjlicU9vNnNjQU94QzBHdHZYcVg1dWQzcEZNSmVVT0xQR044Q1hxZXFVU3NuRlh1K3VsWURRRVVJZVFFQUFNRDZQaXZCbzlMTjVML1NFbzV4bkNnSEFOc1M5TnFyWGxpRXZTWnhESlFEeWlNdnJWb0VBYTg2NmxkczN0VzFHZ0FxUXNnTEFBQUExdWNiemovMk5vNkpzQmNBdXhEMDJydlVlZk85c0JlVVEzd2ZYdVRQRmdKZUFBQ3NUY2dMQUFBQTFpZmt0WjRYUWRnTGdCM2xvTmRQY1h4UmpiMVpEWHNOODFKeHdKR2s1VlBUTXFyeDRlLzVtcGw2Nmxmb3VlcFdEUUFWSXVRRkFBQUE2eXVVWUNQM3cxNWRKUUZnRTdQcE5NMjkvZUFtOUw2OVhNN1J3bDV3ZUtselZ3NTNmUXlMWlZTaExDWktBQURWSWVRRkFBQUFhMnIzYmdwVjJNb3k3UFhYYkh3K2l1Tk1TUUJZMTJ3NlRaMDAwOXd4Vm8yRHpkSENYckRQencyZFRqY3RqUnJIS0k2N3NPamNKZHpWSFBZMUFIQVFRbDRBQUFDd0dUZVlkL002amo5bjQvTWlqZ3ZsQUdBZHMrbjBMbzUrZlBpYmFoeUVzQmRzSWIxWDhoS01nL3plS1hLbzY2ODQzdWRyWDhzeUFnQ3dGLzlXQWdBQUFOaElFWHd6ZXg5U0RYdXo4WGxhZm1zVXgxVzdkM09uTEFBOFpUYWRYdVlsejlMY0lUaXhmOHV3VjZyelZacWZVOEJPV1RpeXMzajhQZWZmMzgzanUrY1Z4OG5LWStjZ3ZoT1AzYXAxTFo3WWF3QlFIVUplQUFBQXNKbnJzTGo1eVg2OHpQVjhPeHVmZjRqYmtXVXhBWGpLYkRxOVRrdWg1VGxaOFBvd2hMMTRUcjhxQVJWV3RVNklFN3NNQUtyRGNvMEFBQUN3Z1hidjVqWnVQcXZFUWFUbGJEN094dWVUT0M3ajZDb0pBQTlaV2I3eGx6aStxTWpCV01ZUkFBQ2dKSVM4QUFBQVlIUFhTbkJRcWJ0WDZ1RHcxMng4ZmgzSGhaSUE4SkRaZEpxNlRLV2xzY2FxY1ZEQ1hnRHI2U3NCQUhBb1FsNEFBQUN3dVpFU0hNMnJPSDZmamMvdjRoakZjYVlrQUt5YVRhZVQzTlhydjBHM3pVTmJEWHRkS2djQUFNRHhDSGtCQUFEQWhpelorQ3pTVGVXMG5PT2ZzL0g1YlY3T1VSY1JBUDQybTA1VHA4MFVCbjZuR2tlWmwzOXRkem9wN0RWUURnQUFnTU1UOGdJQUFJRHRYQ25Cc3prTmkrVWMvNWU3ZS9XVkJJQmtOcDNleFRHTUQvOFRMT0Y0REdtSjVmZnRUdWMyRHZNeFFBamRpajNmVzdzTUFLcER5QXNBQUFDMk00cmppekk4dTlUZDYrTnNmRDdSM1F1QXBaVWxISDhLdW04ZVF3cGdmMngzT2tVY2xsWUdtcXhic2VkN1o1Y0JRSFVJZVFFQUFNQVcycjJiOU12d2E1VW9qZFJKUkhjdkFQNWhOcDBXY1hUancxK0NjUFl4OU9MNHM5M3BqT0lRdkFZQUFOZ2pJUzhBQUFEWTNsQUpTbW5aM2VzMmpvRnlBRENiVHRNeXk5MDQzZ1ZocjJQTnhaTjJwM09wRkFBQUFQdnhieVVBQUFDQTdiUjdOMm1Kd0E5aGNTT1Q4a2xMUjcyUCt5amQyRTlqbFBhWnNnQTAwMnc2VFYwNGg2bkxWRmdFdGMzZmgvVWlqbDlqdlFkeGU1bTZxaWtKYTBxZDkyNUwrTHpTVXFTckhlcjZlZHNOaTY2eUFBQndVRUplQUFBQXNKdGhjSk80N05KTjVyZHA1RkJlQ25zVnlnTFFUTFBwZEJJM2czYW5NelNQSDBVS1hYK005ZjR0MVR1SDdlQXB0eVVOQlQ3NW5PSXgzZzJMd0ZjL0xBSmhhUWgvTlkrbGFnR0FnN0ZjSXdBQUFPd2dkNGI2b0JLVnNWektzWWpqUWprQW1pdUZ2ZUlZeElmL2llTVBGVG00TjNIY3RqdWR2bEpRNDNOS0VVY0tNMTdFMGMzbmw5U1o3Sk1LTmNhcEVnQUFoeUxrQlFBQUFMdTdqT09MTWxSS0w0N2ZaK1B6dE9UbVFEa0FtaXNITTFMdzk2YzR4aXB5VUttcjBjZmNSUTJhY242NWl1UE1PUVlBZ0YwSmVRRUFBTUNPMnIyYnRPelFVQ1VxS2Qxc2ZpL3NCVUR1d05NUGdoakg4TGJkNlJSeFdOYU1KcDVqVW1jdlh4QUJBR0JqUWw0QUFBQ3dCKzNlelZXd0RFdVZDWHNCOE5XOXNKY2xtUThuZGRXY3REdWRNNldnWWVlWTlMa2huV00rcXdZQUFKc1E4Z0lBQUlEOUdTaEI1UWw3QWZCVkRudWx1ZUEvUWRqclVGN0VrVHA2bVhOcDJ2bmxObTVTd05HWFJBQUFXSnVRRndBQUFPeEp1M2VUYnRhOFU0bGFFUFlDNEt2WmREb1I5anFvRlBSNkwraEZBODh0YWNuM2kyRHBSZ0FBMWlUa0JRQUFBSHZVN3QwTWcyL2sxOGt5N0hVYlIxODVBSnJyWHRqcnR5Q1lzVzhwNkRWU0JwcDJYZ21Mb0JjQUFQeVFrQmNBQUFEc24yL2sxODlwSEI5bjQvTWlqcTV5QURSWERudGR4b2RwUG5obnp0K3IxNEplTlBDY1VnVGRnQUVBV0lPUUZ3QUFBT3hadTNjemladUJTdFJTTDQ2L1p1UHpxemhPbEFPZ3VkSlNhM0VNd3lMczlYTWNuMVZsTHdTOWFLSXI1eEFBQUg1RXlBc0FBQUFPb04yN3VRNitrVjluYitLWXpNYm5sdGNCYUxnYzlockYwUTJMc05kWVZYWW02RVhqemlOeE0xUUpBQUNlSXVRRkFBQUFCOUx1M1F6ajVvTksxTmFMT0g2M2hDTUFTem5zMVk4UGY0cmpEeFhaU1FwNkRaV0JKcDAvZ201ZUFBQThRY2dMQUFBQURxamR1eG5FelNlVnFMVzBoT1B0Ykh4K3FSUUFKTFBwdElnamRYdjhUMWdFdnIrb3lsYmV0anVkZ1RMUUlDTWxxRHpuZXdEZ1lJUzhBQUFBNFBENlFkQ3I3bEpYcjE5MTlRSmcxV3c2bmNReGlBL1QzUEJMMEtWbkcrL2JuVTVmR1dpSWtSSlUzbTNGbnUrSlhRWUExU0hrQlFBQUFBZlc3dDNjQlVHdnBsaDI5YnBRQ2dDV1p0UHBYUnhYY1hUakgzK09ZNndxRzdsdWR6cGRaYUFCNTRxSnp3d2MyWmtTQUVCMUNIa0JBQURBRVFoNk5VcnE2dlg3Ykh4K3BSUUEzRGViVGtkeHBHdUMvd3VMcFJ4WmIyNU5RUzhkWjJpQ1Fna0FBSGlJa0JjQUFBQWN5VXJRNncvVmFJUTNzL0g1cmVVYkFYakliRHE5elVzNS9yODQzZ1ZMT2Y3SWFSd0MxRFJCb1FRQUFEeEV5QXNBQUFDT0tBVzk0a2hMK2VuYzBRenBoblFLZWxrR0JZQUg1YVVjaHl0TE9lcjYrYmpYN1U3SGtzalUzYTBTQUFEd0VDRXZBQUFBZUFidDNzMGdibjVSaVVaSVMwejlPUnVmRDVRQ2dLZmtwUnhUTVBpbm9QUG5ZMGJ0VHFlckROVDRQRENKbXk4cVVWbUZFZ0FBaHlMa0JRQUFBTStrM2J0SlN3NzlON2lKMHhUdlorUHpTMlVBNEVkbTAya1JSK3BZOVordzZQN3BXdUdiRko0ZUtRTTFwNXNYeDlKWEFnQ29EaUV2QUFBQWVFYnQzczExM0tTT0haWm1hb1pmWitQemtUSUFzSTdVMFNlT1FYellqZU5kRVBaYTZyVTdIY0ZwNmt6SUN3Q0E3d2g1QVFBQXdETnI5MjRtY2FTZzEyK3EwUWl2QmIwQTJNUnNPcjJMWXhnV1lhK2Y0L2lzS21IWTduUk9sSUdhdWxPQ3lwb29BUUJ3S0VKZUFBQUFVQkx0M2szcVNQRlQwS1dqQ1FTOUFOaFlEbnVONHVnR1lTL0xObEpuT25sVjE2Uml6MWRZRmdBcVJNZ0xBQUFBU3FUZHV5bkNva3ZIQjlXb3ZSVDB1bElHQUxZaDdQWFZxM2FuMDNjMFVFTTZlWEVzcDBvQUFOVWg1QVVBQUFBbDArN2QzTVV4Q0l1dVhwWmpxcmMzcy9INVFCa0EySmF3VnhDWXBvNG1TbEJadXJBQkFBY2o1QVVBQUFBbGxidDZuY1h4TGxqQ3NjN2V6OGJuZldVQVlCY05EbnVkdGp1ZGdTT0FtcjJmSjZwUTJYMVh1UzVzOFJ4cXlVWUFxQWdoTHdBQUFDaXgzTlZyR0JaaEwwczQxdGYxYkh6ZVZRWUFkdFhRc05mUW5nZEtwR3BmMERtenl3Q2dHb1M4QUFBQW9BTGF2WnZKeWhLT1l4V3BuUmRoRWZUeUxYb0E5bUlsN1BWTHFIOUgwSmU2ZVZGRGxtMnZMa3MyQWdBSEllUUZBQUNVZ1crTndwclNFbzV4OUlPd1Z4MmRCcDFJQU5pejJYUjZGVGZkVVAvbG44MmgxTTFFQ1NxcmFrczIrcDBNQUZTRWtCY0FBRkFHT3RmQWhvUzlhdXZOYkh6ZVZ3WUE5bWsybmQ3Rk1RejFYdjVaTnkrZ0xLcld5Y3Z2WkFDZ0lvUzhBQUFBb01LRXZXcHBaTmxHQUE1aE5wMU80aGpFaC85WDArdUdvYjBNbE1Da1lzKzNhNWNCUURVSWVRRUFBRUFOcklTOS9oUHEyNkdqS1Y0R042a0JPS0RaZEhvYlI3cHUrRG5VYXduSDFNMnJidzhEejJ4U3NlZmJ0Y3NBb0JxRXZBQUFBS0JHMnIyYlNSeURzQWg3L1JicWRlTzJTZEt5aldmS0FNQWh6YWJUVVZqYzNQK3RSaTlyWU05U0V4TWxxS3lxTGRmWXRjc0FvQnFFdkFBQWdES3dMQm5zV1E1N1hZYkZMK3gvaWVPenFsVE9sUklBY0dpejZmOW43MjZQbkxpMnRnRTNUejJxMGo5NEl4aWRDTUNUZ09RSXdCRWdJakNPQURrQ2p5T3dpT0FNRVZpVHdIaUl3Q0tDWi9pbkt2Mll0emZhQWpITXB6N1g3cjZ1cWk2QkR3YzBxN3YzN2xiZldudDJXVy9wbWlFdDRmaXhBVC9TNjA2MzYvNkNKcGdxUWJuamFtRnYrY2hlQTRBeUNIa0JBQUFSNkZZRE85THBuMS9XMjBtOTllcmYvbEp2WjZwU2pQNzg3SGlnREFEc1ExN0NNVjJYLzk2QUgyZG9qd0lIVnRSOVY2ZmI3ZGxsTkUxOVhJL3JiWExINW90VlFIR0V2QUFBQUtBbE92M3owM29iVkl1bEhOOVhsbklzd1VnSkFOaW4rV3lXNXA3U3Uzb043VW5nd0N6WkNJZjN1dDc2ZDJ5K2RBb1VSOGdMQUFBQVdpWXY1VGlzRmgva3Y2bWFzVFJUVStubUJjRGVOYUNyMTNOZGFZQURteGIyZm9WZEFLQUFRbDRBQUJESFJZdC9kaDhtd2dIa3BSekg5WmJPd2RTeFEzZXZtRVpLQU1BaHJIVDErbFRnMjM5bER3SUhwSk1YSEZDbjJ4Mm9BdEJFUWw0QUFCREhaWXQvOXFkMlB4eFdwMzkrb2J0WFdLbWJWMDhaQURpRTFOV3JXbndwNDBOaGIxM0lDemprMkRrcDdDMzc4aDFOODB3SmdDWVM4Z0lBQUFDK3V0YmQ2ei8xOW1kVlp2ZU9wbm1yQkFBY3ludzJ1NnkzRkpyNnJhQzMzZTkwdXg3d0FvZFUwaGRuaEx4b0dzYzAwRWhDWGdBQVFBanpzK09CS2tBc25mNzV0TjdlMWx1di91MHYxV0k1Unc1RE54SUFEbi9OUHB1ZDFDOC9WK1VzNyt3ZWc1TFB0MUc5UGJsbmM0ekhWdEtTalU4Rlkya1lJUytna1lTOEFBQUFnSHQxK3VlbmVUbkgvMWN0dW5oWXpuRy9qdVpueDRKZXNYaG9BTFJTWG9Kc1VNaTF3TUFlQXc3b29yRDM2L3FXSnVrcEFkQkVRbDRBQUJESHRPVS92dzhUb1FCNU9jZVR2SnpqVDlXaXU5ZG5sZGtMSWE5WW5pb0IwRmJ6MlN3RkZ3WlYvS0RYd040Q0RtaFMyUHMxWnRJa3o1VUFhQ0loTHdBQWlHUGE4cC9mc2dCUW1FNy8vQ0ozOStyVjI1dDYrNlFxT3pWUUFnQ2ltTTltbDFYOG9KY0h2TUFoeDhuU09ubjE3RFdhb05QdCtpSXAwRmhDWGdBQVFCUURKWUF5NWU1ZTQzcnIxYi85dVZwMDkyTDcwcEtOUHF3R0lJd1NnbDZkYnRkOUJuQklad1c5Vi9jYU5JVmpHV2lzLzFVQ0FBQWdDSjI4b0FFNi9mTkovVEtabngyUDZ0ZGh2YjJ0TEd1M1RZTjZpOVFSWU5ybW5WRWY1NE44ekVQN3h2dEZjR2J3Z0Q4Nm1jOW16cE1tajRXejJXVStIdEoranRnNTYwVlYzcEpwUUhPazhhZGZ5SHZWL1pDbUVQSUNHa3ZJQ3dBQWdrZ1BpZWRueDIwdWdROFRvVmxqMnJSK0dhV3RIdHVHK2RkSEtyT3hRYjJkUk5yUExaKzdvTzNqMGJzSC9Ma1U1SjhvVjdNRkQzcDUwQXNjMHVTQjgyV002L3Q2TEJmT3BpSFhxUUNOWkxsR0FBQWdETXVRUVROZFc4cnhURVUyWXB5MFA4QjVRc3hyK2NYU2pjTjYreHpzcmZYc0hlQ0FZK01rNExoNGw0RzlSZ1A0SWluUVdFSmVBQUJBSkQwbGdPWktIUXZyYlZBSmUyM2lhSDUyYkt5TXcxTERjTCsrRXJUSGZEWkxTd29QSFlNQTM1a1U5RjZGc3lsYTdpd0swRmhDWGdBQUVFdmJRdzgrVElRV1dBbDcvYWZlM3F1SXNkSytnSWFQKzkydWM2VkY1clBaYWYzeWU3QmpVQ2dYT0tSSlFlOTFZSGRST01jdzBHaENYZ0FBUUNRREpZRDI2UFRQcC9VMnJIVDJlcXhvWVlsUExkNFhRZ1BnR284YnpHZXpVZjN5MGR3SjhNVnBRZS8xcVhBMnJqc0I0aEx5QWdDQVdLWXQvL2t0cFFJdFpCbkhSNHYyMEtYTmM1ZDVDOG9jdDlpUFlhRDNJcFFMVGJodjZIWXY2KzNxbm0wYzdYM1BaN04wdmZ5eG9GSVBIRzBVT2tZOGM0OEdOSjJRRndBQXhESnRld0htWjhjZUFrSkxyWVM5M3RUYlp4VzVsUWZWNWkwb3pVQUpXamcrem1ZWFZaeGxHNDNWVVBxOXdxSzcxTk1IL05GcDBCOWhZdDRHeHk3QXBvUzhBQUFnbHFrUytFQUcycTdUUHgvWEw3MTYrMU0xYnVTYnliRUlEc0Q5ampyZGJrOFpXdW1rYXZleXZzRDJEQXAvLzJPMUJzY3V3S2FFdkFBQUlKYXBFdmhBQnZnUzlMcXN0N2ZWWWdsSEQ0ZXZtWjhkUitybU5XbjU3aER5QXRkNDNEWmZ6V2FYOWNzb3dGdnAyUnRnSGpud2VIaFIwSDNOMDl3NURVcnpTZ21BcGhQeUFnQ0FXS1pLVUwxVUFtQXBMZUZZTFVJMFo2cnhIUTlkNGhnb0FUaFh1TjE4Tmh0WGh3ODI5T3dKYU0wOGNoSDRaemd0cU43Q01oUWxCeE9QVkFKb09pRXZBQUFJcE5NL242ckNsdzQxUGt3RVZzZkcxTlZyVVAveXZXb1EwUE5nbmRVZ3FvRVN0TnBJQ1lDMTd3Y1c0WTJuRC96amw0Ri9sSEZCWmZlNURLNDFBUUlTOGdJQWdIZytLb0VQRTRFZmRmcm53MHJRYTJrUTZMMU03QTd6Rmp6QVVhZmI3U2xET3dYcDVnVzQxanIwV0ZqU2tvM1A2M25iRnhrb3lWQUpnRFlROGdJQWdIZ3VsY0REY3VCbU9laGw2VWFpR1NnQk9GZTQxNGtTQUd0cTBtY0VZM1dIN2NwZkpIaXVFa0FiQ0hrQkFFQThFeVdvbmxxeUViaERHaDgrSzBNWUYwcmdBUmc4MEVBSldtMTh3SDliTnhvb1ZPNG05ZUR3eG53Mm14Z0xYZVBpZmd5Z3FZUzhBQUFnbnFrU2ZERlVBdUFtbmY1NTZuajR0dVZsR0FUYkgyMG5uQXdQNHp4cHNmbHNsdWFMRHdmNjUzWDNBSE5IbExGd1dwWFRtZmlsSlJzcHhGQUpnTFlROGdJQWdIaW1TdkRGeS9uWmNVOFpnSnQwK3Vmait1V1RTb1JoWHdpdndFTTg3WFM3TDVTaDFjWktBRHpTd0Zqb0doZHUvV3hnY1cwcHpBMjBocEFYQUFBRTArbWZUMVRocTZFU0FIYzRVWUl3cGtwUXZaNmZIZXQwQVBmenNMamQzT3NBdTV3M2l2aml3WHcyRzFmbExEOXYzaWE2b1JJQWJTTGtCUUFBTVgxVWdpL2VlbUFPM09GVUNjS1lLc0ZpM2xJQ3VKZUh4UzEyd0NVYmRaeUVBblc2M1VIOThyU2gxNlRqUXQ2bkpSdHhiUWtRaUpBWEFBREVORldDTDlLSHVSNllBemZxOU0rTmxlYXRhSVpLQVBkNjdtRng2MDNNVThBRE5UbThjV0kvd0lhZkNYUzc2ZGc4VWdtZ1RZUzhBQUFncGdzbCtDcDE4K29wQTNDTE15VXdid1Z5Vk05WlEyV0FlM2xZYk00QWFQVjhNWi9OcHRWaE9odXV3NWZ2aU1xOUY5QTZRbDRBQUJEVFJBbStTdDI4VHBRQklMUkxKZmhxcEFSd0x5R3ZGcHZQWnU1MWdIdDF1dDBYMWVNNzlKUVdJaTNsczQ3VWhiUG5xQ1RZR0pHT3laY3FBYlNOa0JjQUFNVGsyKzNmZTZrekNrQmNuZjc1UkJXK1N0MjhSc29BZDEvYldiS3g5VDRxQVhDUGRUNERLT3FMQnpuMFdrcG5ZdDI4YU1JWUFWQThJUzhBQUFpbzB6OVBIMHg2OFBHOWsvblo4UXRsQUs3cEtVRVluNVRnSzBzTncvMTA4MnEzZlgrcFJjZEpNRTlFTlM3a2ZRNGRramdtQVE1UHlBc0FBT0xTemV0N2Fkbkc4ZnpzV05jSFFxaVB4UlRpR0FseUhOeVJFb1F4VllMdjV5eGxnRHNKZVprejNGc0JOK3AwdTRNMXIvT0xDM1RPWjdOMHpWakNseVdlMXZ0bDZPZ2t5Qmd4OUZrQTBGWkNYZ0FBRU5kRUNYN3dQTlZGMElzZzBzUHBkL1gyYjMxTW5scFNkUDkwOXpOdkJkZTNiQ1BjeVpLTjdTWjBCZHhsM1h1clVzZVdVcTRaTGRsSTZXTUVRUEdFdkFBQUlLNkpFdHhJMElzbytpdS9mbGx2ZjlYSDVXVzlwWTV6QStYWkMzV094UVA3SDcwVEFJVTc2ZWJWWHZ2dXRqTlZjakEvUkZWUU42L251Y3NhSEV4OURLWXZlL1ZWQW1ncklTOEFBQWlxMHorZlZtVjh5SGNJS2VoMW9Zc1BoM0xIc1plV2FIdGRiMy9YZjJaYWJ5ZU8wNTBhS0VFb1FsNDMrNnZ0UWE4VWZMVzBMYmNZS2dGN01sVUNLRU5laHUxcEMzLzBVU0h2VXpjdkhJTUFCeVRrQlFBQXNVMlU0RlpIOWZiUC9PelloenNjd3VDQngraXYrVGdWK05xeUhCaDUyZUlTVEtPOW9SeE8vdXpvdkZFS2VwMjA3Qng5a2NlOWRGejhYVy9HUDI3UzczUzdQV1ZvNFR3K20rMzdQdWRTMWFFWXd5WmRJejlpWEJ6WEx4OExlS3N2emQwYzdKNXpjZXk5VmdtZ3pZUzhBQUFndG9rUzNPdVArZG54UkhpR1BYdnM4WFk5OEpXV2RMUkUxV1pHTGYvNXAwSGZsMjVldC9zMXoxZTlwdjZBMTRKZC8rUng3MmpOY1pQMkdDb0JPeCtmWmpQekV4UWdCemo2RzV6cjA4SkxVTXFYMkVhT1ZoeDdBSWNoNUFVQUFMR2RLc0dEcEErQi84bkJtWjV5c0FlYmhCVlM0Q0Y5OC9TLzlmRjZXVytuYVNrM3grN0RwYVhmS3QvZWpXcWlCUGZPVi8vV3gvQ28zcDQxNEZ6czVmRXJ6YitwUzg3MVlOZXFnZDNQTFlaS3dJNTlVZ0lvUnFzN2RlY3VoMmNGdk5YWHVubXhiL1V4bCs2ZmZGa09hTDMvVlFJQUFJaXIwejlQQVpEVXJ2KzVhanhJQ24yOHJtdVdQaFE5cWVzbkpNZXViT3VjZkZvdGxoejhzdXhnUHQ4bnl5Mk5BVXI5dmR5MXo3a2R0Mk9XVGlrUDg2N2UzdVlsSE1kNXFjdFN6ciswRGZKMjlJai9lODl1NXhaSG5XNzMxWHcyTTdheksxTWxLTTZMU25DOHJZWks4S1VHL3hid1BrZjJGM3VXUXFCUGxRRm9PeUV2QUFDSWIxeHZmeWpEbzZST0tmMzUyZkhuYWhFR21hVFhLSUdaM0xFcGJlbGJpQy95cnkxalZZamNSV3BYbnVmdDEveHZuVlhmUWw4WGJROTk1WUJKcW9VUGRxc3E2ckV3c1dzZUxCM0hLZXoxcmo2MlArVDVLdEpjdFF4MExiZitobi9sVWVwZUpyektMWWFWQUMvbUpyNTVwZ1R0MCtsMmh4dGU1NTgxb1E1cHljbTZGbjh1N3drRFM5MjhSZzFZSXBNeXhvYzBMN3hWQ1FBaEx3QUFLRUY2NENYa3RaNzBBZkhydlAyVnV5U2xMalBUYXZHdzU3TFRQOTlLMTVtODdOWnFVR3VRWDFmLys0dEtPS1VKOWhuSTYrZnRYVDdPVmp0OVhaVFMvV2RMNTlpbzhzM2RWU0U3WnVsQXViWmxSNysvOWhudVhBa2RMN2RCbnJkMnRmOTBadUhXY3lBdCsrUkJNVzJhTTRFZkNIQjhrKzU5aGdYYyt5emZKK3hqZlBCWkFFQWw1QVVBQU9HbEVJY0g1bHZ6ZktXT3k5RE04bjk3N0xkK245a25yZlVpd0RHODdQU1Z1dFZOcXNYRHkvUTZiVkx3SzRjblgxV0xod2RIRHIzdjVvYkkzWkFteHNlTlhBOTNmczduK0dYMUxhaXcrdXZiOUtydmwwaGMvZjJoUXNkQ1h0eGxtTWQ3MkRZaEw0aCtiZHZ0RGx3L3J0d0h6V2FYZFUxU3FPV3Y0RzgxZGZNYTErL1g5UjI3SEI5MDhRSllJZVFGQUFCbEdGZTZlZTFhWHdsNG9FR2c5NUpDR3NzT1FOY0RJY3V1ZFY5K1hjb1NhYm16VUtyeHEveHo4YVBvUzlGTXF2akx5NVRrNmNvY1ZmbzVZV2xpN3ZLMjArMmVwQWZiU3RGODliN2UxM2p3V1llNE8xa1drVEJ6d0JiK2prYk5IL1hZTmM1TFdFYi9yR0lVN0I2WlpvNFB1bmdCWkVKZUFBQlFCa3MyUWdDNXMxVDBqbExMUUVqLzJudFBMeWtjdE93QTlMVVRVS2QvUGpsUVBkTUQzbFRUUWJVSWY3eW9kT3g2aU9nZFNTWjJFYmZvS1FIM3pGOHA0RHRXaWxiWVY3akluSFEzNFZzT0xpM1hXMjBueU43RXJuM0RldnMzK0h2czEvdncxWHcyTzNVMHM2UHg0WjFLQUh3ajVBVUFBQVhJU3phbWNJWnVVM0JZcFQ4SXU3RWIwTXF5cGNzdVlFdVRHLzZPWlVEc0xyM3F4ekRITXRDMS9MVnY0cTR2OUFPczFEWE9uTVU5WXhEY1psUUplYldGa0Jld092WnpnOVNKc05QdC9sN0ZEN21jMU85em9oc254Z2VBM1JQeUFnQ0Fjb3dyRDBmaDBBWU4vL21lWGh0bmpEa3hsZENsNE5UeHcwMVNCNzlPLy94Q0piakZVVnFhS2kxUnBSU050Ni9nL0VTcFhYTVRWKzdTODFvbDdyaDJtczFHcVZOVy9jdm5rZWZ2YXJHazNzZ2VZNHZqd3d2akE4Q1Ava2NKQUFDZ0dPbUIrV2RsZ0lPeXBBMkg5cm1RZ0l6bFdyaE5Ud200eDFzbE1CWnN5YWY1YkNaVUNyR050dmgzTmZsOEh4YndIdC9sVUE1c3k0a1NBUHhJeUFzQUFBcVJscitxTEY4RGgrWkRhdzV0VXNpY05hMWZQdHBkR0VkWncvTk90enRRQm1OQlcrWk1hS3NkZFBGcTdGS0JPYkQ2V3dGdmRleklaa3ZqUStwZXB6TTB3QTJFdkFBQW9DeSt4UVlITWo4N2ZsWXRscUdBUTVvVTlGN0hkaGMzR0NnQkR6QlNnc2JieDdKanVrcENiRDdmZU16OTZHeVc2blVXZld6dmRMczZjcktSK2hoNlpud0F1SjJRRndBQUZDUjNSdm1nRW5BUUF5VWdnSkllV0kvdExtN1FVd0llb04vcGRvZkswTkI3bXYxMGF2czhuODJFdk1yMVRBbGFNUTY4VklsSFM5Mk5QZ2QvajM5WXRwRU5wYUNnTDlnQjNFTElDd0FBeXVQYmJIQVlQcWptMEQ3bXNHOFI4akxEZ3NsY2Q1UTdJOEo5UmtyUVdJTTkvQnNDWG1WN3JnVEcrTWVhejJhVHBoZXQvaG5UOWZXckF0N3EyQ0hPV3ZlUWk0RGdPNVVBdUoyUUZ3QUFGS2JUUDU5VThWdjBReE1ObElBREczdlBOSVRRTEE5eHBKdFhZKzBqb0NEa0JVSGxzYjJ2RXV2SlliYmZnNy9OdEd5akx5amkvaEZnQjRTOEFBQ2dUQ01sZ0wwVFN1RFFpbnRnM2VtZnAvZjh5YTdEZU1xYVRqcmRyczV2RFpMMzU2NjdOSDJ5VktQeG1OQmpnUERQaHVveGJsVEYvL0xmci9YK2ZtVnY4WWp4WVZUcDVBaHdMeUV2QUFBb2tHNWVzRi96cytOZS9mSlVKVGlnb3BacXZNYURQSzRUS3VDaDB0ejdWaGthWlI4UC9NZksvS2h6TE9ZOWI3ZmJzM3NhYWJTajQrNXpTOGZUNkYrbUdEdVhlZUNZYjVsR2dBY1M4Z0lBZ0hLTmxBRDJSaUNCUXlzNUtEV3Uydm5namR2MWxJQkhlT2NCY2FNTTl6VHZZSzRnbUhvc0g5UXZ2Kzdvcjc5b1d6M25zOWxsdFFoNlJiN09Ub0crVTEwNXVXZHNTTWVIRHB3QUR5VGtCUUFBaGRMTkMvWkt5SXREU2c5dWl2M1F1NTZ2MGdNbzNieFkxVmNDSG1tc0JBMjRmMW1FOVhaOS9yK2Z6MlpUMVladzUvOHpZL24yMWVOZENyY05nNy9ONSs0RmVNQjEzcEV5QUR5TWtCY0FBSlJ0cUFTd0Z3TWw0SUJPY2xDcTZKK2gwczJMRmZPelkrRlpIcVBmNlhaZktZTjdsd2NZSzNOajlKU2dVVWFWRU1kdXJxbG1zL1Jsa0RmQjMrYnJlaDYzL0RJL3lNZkZTNVVBZURnaEx3QUFLRmluZno2dFgvNVVDZGc1WVFRT2FkeUErVW8zTDY3cktRR1BIUXN0OTFTOFhUL2dQNXZQWmhObGZ1RGNIUDk4TWs4MDUxZ2JWTHRicG5IcG9zMDFyc2UrZEwvd1B2amIvS00rRm9iT0NGYkdodlE1eXg4cUFmQTRRbDRBQUZDK1ViMTlVZ2JZamR4dDVxbEtjQ0R2YzZDM0NYVHpZcFh3TEkrVjV1S3hNcFFwUDlqZjlmWFVTS1dOdzRRNzkxT1ljQi9MamwrMnZkYnoyU3lOczlHRFhpYzUySU94b1ZlL1RGUUM0UEdFdkFBQW9IQzVPNHEyOTdBN1BvVG1VRklnYXRTdytXcGt0MkpzWlFNdkxkdFlyRjJQLzdwNE5jOUFDUm9oQmJ4OFlXWlBjdERyWStDM21JNkZpYUJYdTYyRVA0ME5BR3NROGdJQWdBYm85TS9UaHlNZlZBSjJ3Z2ZRSE1wSmc3cDRMZWVyMU0xTDkwbU1yV3pDc28ybGpmMkxMbDVITy81blJpb040Yzc5ZEY3MlZXTHZCbFVaUVM5emVYdWx6ekNmci9IL1M1M3FkSVlHV2svSUN3QUFtbU5ZK2JBRGRrRVFnVU5JNC9sSmcrY3JPRklDMXBRZURwOHFReG55US96Ump2K1pEN3A0TmZJYVZ6aW83SE0vZFYxOHQ4ZC8waGlRMWVOaDZwNDdxQVM5aURrMmpOY2MzODl5cHpyM2trRHJDWGtCVUxKTEpRRDRKaStETlZRSjJEb1BtRGlFWVI3WG16aGZUU3JkSjZuTno0NEhxc0M2YzNQdUVFTjhhVm41b3ozOEd6eWVjQVc3dWRaYkxNVTNWb2tEWG1PVkVmUktuWndFdmRvMU5xUng0ZlVhLzlkMEhML0t4M1lLK3YrcG1rQ2JDWGtCVUt5cnE2dDBZZittMHJVRzRLdThiT043bFlEdG1KOGQ2K0xGSVp6bDhiekpocTdqcVhSS1pEUHZPdDN1UUJrQzM1dDB1NzFxOTUxOGZwL1BabFBWYnV3eDVCd3ZiNStsd0U2NmpuMnFHZ2UrbHhYMEl0YllNSzdXRDNnTjh2RzhOS3EzVDZvS3RKV1FGd0JGdTdxNlNqY0h2Y3EzTndCV3BXK3lmMVFHMkFvQkJQWXRCWitHVGY4aGRaOGs2eWtCR3pyTlFTSmlHdS80Ny84MG44MUd5cnkyUVFIdlVmQ2pwT3U3UlZCblVoMW1TZWFwUGZBalFTK0NqQTNwZW1CYkFhL2xjZTFlRW1ndElTOEFpbmQxZFhWWmJ5blE4Rk85bmFrSTBIWXJEODUxU0lITkRaU0FQVXZMTkU1Yk1sL3BQb2tnTFp0S25XSk9QUmdPT01aM3UrbHptbDB2ZVQxVTZZMlVjTjZZSjhweVVpMENPM3VubzkrZHRTa3A2T1djYjk3MXdMamFZc0JyNWJpZXVKY0Uya3JJQzRER3VMcTZ1cWkzZE1QNlM2VmRMOUJ5bmY3NVJlV2hCMnlERDVuWnAvY3RXS2J4T3QwbjI2MnZCQ3pIdjJyOUx5aWtCOE9uU2hqb1htVFJYVzIwNDMvbXoveUFsL1U5TCtBOXVoWXY1N3dmVitzRk9kaURsYUJYNUM5SUMzbzFhMHg0dHF1QTE3VjdTVjl3QlZwSHlBdUF4cm02dWtvZjdxYWJ3ZDlkNUFOdGxvTUN2NnNFYk9TNUVyQW5IK3R4ZTlqQ3VVcjN5WmFibngzM1ZNSDRONS9OMGpqd2FvTy9vNThmSkJKRHVnOTV1dU5qNXEweWJ6RC9saE9pRVBZbzQzaEs0NitBVi9ScnJ0bnNzdDRHVmV6dVIybnVTRUd2Z1QxVzlKaXdYTHAxbHdHdlpYaHhwT0pBMndoNUFkQkllUW5IZElHZlBnejZvQ0pBVzNYNjUya3MxTDRjMWpBL094Nm9BbnVTQWs2dFBkNXk5MGtQNjl2TEEzeStuUCs1SzlPYkRmNmUxNEplQWNiMHhUN1laVWcrelpsRGxkNVlLZGNkUjVaakxlS2NQM1RBUzFmWXg5em5Mb0xWMFlOZWY5ZkhsckcrekRFaFhkdGZySGt0OE9DQTE4cnhuSmFKdGFvTDBDcENYZ0EwMnRYVjFiVGUwcmVCZjNiREQ3UlY3Z3dqNkFXUEozakFQbndKZU9XT1ZtMmVxOGIxeTU4T0IyTXRyZk4rZGNtOSt0ZHBMTmcwNkNVMGVxaXhmUEZBZnRkaGo3ZjFjWEtoMmhzYmVLOXM0WndmVnpFNmVGM2FHNCtUZzE1dmdyL052NFMzaTd3T1NOZDFSMnY4M3g4ZDhGb3hVbjJnVFlTOEFHaUZxNnVyU2IybGh3ZS9WWmFDQWRvcFBld1Nkb1hIRVR4Z0gxN2xUbGF0VjljaHpWVkN5Y1phMm1WMC9UOXNJZWoxaCs0ZkJ4akRGNTA3L3RyeFAvTStIeDlzdHE5U1o2eVhCYjNsZ2IwVzhqaEs1NklsR2d1V3g5TmZxdGlmbGFmdzlrUkh2L2p6U3IyZDVPdUFkWlpyVHZQN2l6VURYc3RqV1Rjdm9EV0V2QUJvbGF1cnEzU3owYXM4UEFKYUpuZUlHVlNDWHZBWWdnZnMycHQ2Zko0b3czZnoxZEJjWmF5bE5kSUR2ZWxOLzhNV2dsNjZmK3h6N0Y0RXZIWTluNTNsempOc3JyUTZEdXl5VU9kN0NuT2NWckVDWGpwNXJha2VWMC96T1JZNUlOT3Z0Mmw5M0JrTFlsOEQvTHJCOWVBMjVxV1J2UUcwaFpBWEFLMXpkWFYxV1cvcHh1R25lanRURWFBdFZvSmV4ajY0eC96c09IMVQrTGxLc0VOdjhoS0YvQ2pOVllKZTdYR2tCSzAxdW5NdTNzN1NqY2JaWGQ5akxMcXJwSkRBMHgzK00ybE9lS1hhVzFQYWtxYlA2K09zWjdlRk9OL1RmcGhVOFRyQjZZcTd5YjN2WWduY0ZOU0ovRmxSbW1QK3JvL0JrVDBXYWt4SSsrT2ZhdjNQVHQ1c0s4Q3RteGZRSmtKZUFMVFcxZFhWUmIwTnFzV0h4bTRBZ0ZaSVFhOTZTMk9mam9ad041MWwySlcwSE1vdkFsNTN6MVdWb0ZlcnpNK09CNnJRT3JkMjhmcnUyTmhTME1zeVR6c2FyeGQxblZTN0RXdW1lWE80N2hKTy9MRFBobFdaNFZvaHY4TWZPMm11VG1FZ1g0UnA0clZZUGNiV1c5ckh2d2QvcSsveThvMDllKzJ3NDBHOXBmSGczUVp6Kzg4N1dJSjVaTzhBYlNEa0JVRHJYVjFkcFp1SkZ3WGN4QUpzVFY0T1M5QUxiamRRQW5ZZ2ZaZzlxTWZnVTZXNGQ1NFM5R29Yd2RyMkdULzBEMjRqNkZWdkUwR3ZMWS9UM3dKZXV3eDhmSmszYzVjWnRtTlU2UHQrYTljZDlIeFB4ODNmMVc0NzloRkFQZDZtZmYxekhuK2pTc3MzWHRUSHBYSGhBSE4vN3BMNjl3YnovOGM4dDA5MjhCWlBneCs3QUZzaDVBVUExZGNsSE5OTjdIOHF5NWdCTFpHRFhtOVVBbTRrY01DMmZma3d1eDU3UGFoKytEeTFESG9KSlRkZlR3bmFOUjQrOXNIZVN0QnIzUWQzNlVIa05IZWlZZFB4V2NDcjFQMDJxc3BkSXZmSStYdVFZNmEzWWJlZWZabmFXOXVUNStoMGJSWjkrY1kvY2xjdjkrNTdtUGZ6SEpMT3RkY2IvRlVmZGptMzU2NmZZM3NNYURvaEx3QlljWFYxTmMxTE9LWnZMRm5DRVdpOHZGellUNVZ2dXNGMVBpaG1tNzU4bUMzZ3RkWThkYW43cERHWHhqbFo1LytVZzE2RERhNWIwd1BodjNYKzJIQmNYanhNbjFZQ1hpWHV0M2VGL3hnbjl1UmVqNWxSL2ZKdlZjYnlqRk43YkxzS1dyNHhkZlg2Sngydk9uYnViQ3hJOTJMTHNPY20zZngrcTQrcFYzdFlmdGxjQVRTZWtCY0EzT0RxNm1wU2I3MThJeXY0QURSYURoMmtNVThuUTZqTno0N1RoOE5IS3NHVy9GYVBzNjl5VnlyV242dUdsZTZUVGRaWGdsWlplOG5hSFBvWlZKc3Q1YnJzL09GaDhHUEg0bTczVmJYbzRMWExKZHNFdkxhLzM1YWQxMHIzUEM4VHhvN1A4M3FiVnVXSEF0bkd2ZkZpK2NhZnF2aExxS2ZqZFpvRFNXeGgza2loK0R3Vy9GVnQ5dmxJK2lMOVQvV3hkTEtuWTNaYXdQRUtzQkVoTHdDNFExN0NzVmZwSEFBMFhPNlVNcWppZjBzVDlrRkhHYmJoeTRmWjlkanFtOFRibTZ2RzFlSWhrNDY3RFRRL08rNnBRaXQ4MkxTRHcwclFhNU12S0tSZzRUU0hsbmpJR0x6bzZ2UGZTc0NydFAyMkRIZzliY2lQOUZyUWEyZkh5aUFGWVBONTdnc3ZmRGZ2MWx1NlI0NytlVkVhNS81S3dTVHorOXJqUUc5bFdjWS90akFXcEdjcUx3NHdyNXNuZ0VZVDhnS0FlMXhkWFYzVzI3QmFMT0dveXczUWFKMysrYWdxNDF1YXNFc0RKV0JEZjliYkM4c3o3bVNlU2pWTkQ1aytxRWJqQ05pMncrazIvcEtWWmFUKzNPQ3ZTUStELzV1N2V2WHNtbHZHM2NVRDMrVXlUYnVVN2o4RXZMYTc3NVlCcitjTis5RmVPMiszZDR5a3prZTVXOC9mVmFHZE5ldHhZMkp2N3FYT282cU16NHVPVnVaMzkvWVBHd3NHT1VEN2I3WDVzb3hKQ20zL1VoOHp3ejBzejNpVHNiMEtOSm1RRndBOFVGN0NNZDBZdnFrczRRZzBXSHFBWG04bGZFc1Rka1hRZ0hXbERsTS8xMlBvVzhzejduU2VTdDBuMDdmemYzTmRidXlsT0tmYi9Ndm1zOW5iK3VXWERjZUNGR3I0TjNXdXNJVGp0ZkcyMjAzMVRhR3JYWWVFQkx5MnYrL1NtRHFwbWhmd1dqMXZMNXkzYXg4ZnIzS2dZMXB0dmhRYkxiTFMxYXVFNi9BMFR2eWRPM3NON2IwZnhvSFZKUmxUeVBQMWx2N3E5R1djWG4yY25CN3dPTDJzZkNrSWFEQWhMd0I0cEt1cnEzRzFXTUx4VDlVQW1peDM5ZnBQcFlzaDdUTlFBaDRwUGVENHZSNDNlL1UyVVk2OXpWTnBLY3dYNXFuR0VQSnF2Zys3Nk9hUUh5S200MmZUemlLcGM0VUh3ZFhYamg0cGNKV1dhdHIxTW4vdlUyRGdRSjArbXJqdm51V2x0djZwbWh2d1ducTZjdDZPZFBhNjk3ajRFdXlxdDNTdXBTVVpYMWZOV2NhVFBhdkg3SFFkbnM2NTl3VzgzUlJpWEM3ajJQcXhJbzhGNmRycC82cnRMTW00ZWsrY3VuZTlDaktudXk4SEdrdklDd0RXa0pkd1ROOW9GWDRBR3EzVFA1L1cyNkJhZEVqNHBDTHNRSG9nZXhyc1BVM3NGaDRoUGRoNGtZT3hIRzZlMG0yM2ZFSmV6YmV6K1hVK20wMXpaNUZOTzlHbXdNTmZiZTM2a1pkbUhGZUxqaDc3Q0FpOVNVczVPVFcyc3UrV25ablNRL3QzTGZ2eGwyR3YxSkh2SW5lbTZiWDhlRmlHdWs1eVlETWRGMDBOZHJuK081QzhkSElhdzMrdXl2aDgvR2hsckRoTjUwamI1b2lWa09mTExmOFQ2Y3Z3QiszZWRZTlRaeW5RVkUrdXJxNVVBUUEyblZDZlBFazNoU2ZWL2Q5OCtiMmVlMGNxRnNQODdMaTFGMEtkL3ZrVFJ3QnJuamNwNEpyR01kLzRaVjBwTERqSjIyblVKZTNxWTcxWHZ3enpadmtTYnBJZVpBeFR5RWdwd3B5M3ovSWM5YXRxbERrL3BHNTR5bERRUGNXaVc5Qmp3aVEvN1dNNXZ0U0ZxbjRaYjJuKy9wVC9ycE1tZDVyS2daaTBQMS92Nlo5TUlmK2g1UmszUHM1VHNIR1FOL2RuTjUrL0YzbEw5eDRYVFR5UDg3SHdiT1Y0NkxYcy91V3MzcThEaDN1SVkzR1k1NUtTanI4VUVreGhvTk5nQWFWTjk4V3pQQjY4eXR1dTVvaDBUenlxYXpjSldvZUhMRGx0REFHS0krUUZBTnVjV0o4OFNUZXliKys0Y1JMeUNrVElDOVkrZDU3bHNlNnU4UTZXVmtOZGt4SURNZlV4L3lJZjc2OGM4MVQ1ZzJ6TE1vWStaM3ZWSXBUUlY0MGlmRWo3cXo2bmZOdSt0SHVLeDRXOFBzMW5zOTRlMzlzdVFwK3BjK000Nm9QTU5ldjBLbC9qN0hPOFROMCtScFpudkhPL3BHdlBaL20zeS9CT01zaS9mNjVLRzEvTHBlTnZHVEs4eUw5ZlhFY0VPTWR6OEhKMXpGdzlKZ1lyLzgyOWlZQkd4REdzMUM4SGZzNmZXNlJyMGtucUVscmczUEVxanhHN250Yy81Ymw4SEx3bUp3KzRGalNHQU1VUjhnS0FiVSt1VDU3MHF0dS9BU3ZrRllpUUYyeDhEaTNEWHNOS3B5TytTWjBabHQrV256U3R5MUY5M0MrL0NUdHczTGRPZXJnLzBybXJxUE4xa0svTGhiM2lTUStHMGtPWFUrZFV3ZmNVand0NXZUL0Vzbno1Z2VlNDJtNG9KaDIvNlFId3VNUk9WTGttdzN3OWM3VG44MzdZcEpEY0kybytNUmZCemdob3hCejNtdkRsd1BUWlJocS92M3krRVNuMGxldTcyczF4WDZIUHova2F2b2dPcHpuTS9sOWpDTkEwUWw0QXNLdEo5c21UUWI3cFdmMHdXY2dyRUNFdjJPcjVOS3dXSDk3NVZubTdwQS80dmdhNjBxK2pMcis0bytOKytaQjA0Tmh2OURHZXJ1ZkdnaWhGbjZ1RFBFZTlWSTJEK2hxTXFjOG5TN1ExNFo3aWNTR3YzK2F6MmNrQjMrdXV1b29zaitzdjEwSlJIM2ptNWR5V1FmVkRoTlJiM2IxTHlBdDI2aUFoWWg0OC9qM0w5OHh2cS9LL0pMWDgvQ050MCtXdmR6MjM1VG04bDdmbHI0OE84TE1YRSs2NmR2ejkzejEvVE1nTEtJNlFGd0RzZXJKOThtVDF3MlFocjBDRXZHQW41NVZsN1pwck5kRDE1Y05Nb1pmdmp2MWU5YTNEbHlCSitkTHljYW5EMEZncEduZWVqc3hSZXlYWTFlUjdpc2VGdkg0NmROZXJIUzNoZU4zWjZ2WFNJYnArM05EZDQ1RGhvbFNQdHlWMlBOdnlQcGxVUWw2d0s3L1hZOHhJR1lvWUM0ZFZjNzhjbUxwK1hWYmZMd1ZiVmRlV2c3M0ZZT1hYdmVyYlVxMFI1bzBpdzEzWGpydDB6RDI3NDQ5TW95ODdDWENka0JjQTdHUENmZkprK1dIeXBaQlhIRUplc05Qeks0MTc2U0g2c1BKQW8wVHBvZnpGNmliUTllaHpZQm40U3BzdVgyVklIOHlQSzh2SHRXbU8wb0Z5ZCtmU2FUNlhCTHVhZkUveDhKRFg1L2xzOWl6USsrN2wrL1BYZS9vblU5QnBXbjNyK3BFZWtrNDNDWUN0QkxtcWZLMngvUDIrbG10NnlMWGt5RVBUci90cjRwNElka2JJcTd3eGNWRHBzaHRkOGVFdWdDWVQ4Z0lBV2t2SUMvWjJydldxYjh2RGVMZ1J5NDNMRGJScHljVTluZ09Edk9rZ0ZJdGdsL056dWV6cW9aWXdhOHBjTXFueWtuWE9wUmJkVXp3ODVCVnlHWno2L2FmelAvME1Md09jUXc4SlJQWUtHS2ZTenpJNjVOS2NRYytWaWZzZzJCa2hyM0xIeGw2K0RoKzZEZzkxZjN3aXBBMFFtNUFYQUFDd055dmRVd2FWc01zK0xSOGVUdk0yU2E4ZXhCL3NQRmhkUW1uZ1BOajd1WkNPZjJFVWJqczNoNVVPZkE5eGxzK2xkQjVObEtPZEhoSHlDdjBBL2dDZHZab29kZTVLd2E2eGpoODNIbU5wbkJUeWd0MzR1UjUzWEl1VVAwNHV2eGhvTGo2TTkza09keTRCRkVESUN3QUFPSmhyWVpmMGE5L2UzRXo2MW1WNnNEYkpyenB6bFhjZXBFM29hM3VXb2E0dm02WGplTVI1MmJ0MlhyWjlmaExxNGdkNXVhWEJBLzdvNlh3MnV5amc1MG5uZlZvK2FtZ3VmdFMxcDQ0Zjl4OWJhZHdVOG9MZEVQSnExbmk1L0dKZzJpem51UHM1UE0zZkF0b0FoUkh5QWdBQXdzZ1AxVi9rYlZDVnNTek5QcVV1Q2RPYk5oMkpHbjBlcEZjUG14OG1mVkNkZ2dTVGFoRndGT3JDZWJuK2ViUU1DazhjQWJSTnA5c2RWb3V3bDJET2oxS0FPblhFUENraHZCZmtlSm80bG1CbmhMeWFPM1lLZkczZnA1VTVmS29jQUdVUzhnSUFBTUtibngwUHFrWGdLMjNwd1hyNnNLOUpEMHFXSGJpU1NYNWRkdUtxUEdBbkwzWDZZdVg0SCtUWHRpNHB0d3c4VHZLclFCZUhPQytYODlMeWZIeFJsUk5Pdmg0YS9yS2tyL01JdnJmUzNldFY1WXNISDZyRmcrRlRIVDhlZlJ4TktpRXYySldmQkU1Yk01WXVBMThEYy9LamZGeVp2NTByQUEwZzVBVUFBQlF0TDNYM3JQcjJnTDI2OXV1bFhUMVlPYnZsdjArdS9YNmF0eThFdDlqaU9kQ3J2b1VnZTllTy8vVDdFajhBVDExQ0xxNmRTK24xVWdpRndzN0x1K2FtYlFZMVY4UENWYlVTRkw1Mkh1bjhDR3ZxZEx2cC9CMVc3UXA4Q1hZQkVIRk83bFhmQWw5cDAvbjYrM3ZwU1o2L0p6cDJBVFNQa0JjQUFBQzB3RW9nc3FwdURrTDI4bmFieHdSU3p1NzQzeWEzL1Y3NEVZQVNOUGpoOG5JWnB6UWZUd1M3QUNob1hoNVUzNVpXYjFQSDYyV29hemwzKzFJVVFNTUplUUVBQUFBQXdKcHlsNjlCOWUwQmN5bWR2bElvT3owTW5xUlgzVDRBYU5EY3ZKeVRlL2sxYmFXSHNqK3Z6dHZtYm9CMkV2SUNBQUFBQUlBdDZYUzd5NDZaZytwYnA4eitBZDlTQ25NdGwzRk4yMVNuRHdCYVBEOHY1K1psdCt0b0FiQ1BLL1AydFBvVzZOSmhFd0FoTHdBQUFBQUEySWZjV1NRWnJQem53YlUvZHRjU3ljc3VIcXN1Vi83YjExL1BaN09KaWdQQWcrZm9YclVJZnlYTEFOaHRjL1hTZlNIdXN4disyelJ2MStkd1FTNEE3aVhrQlFBQUFBQUFBQUFBRU5qL0tBRUFBQUFBQUFBQUFFQmNRbDRBQUFBQUFBQUFBQUNCQ1hrQkFBQUFBQUFBQUFBRUp1UUZBQUFBQUFBQUFBQVFtSkFYQUFBQUFBQUFBQUJBWUVKZUFBQUFBQUFBQUFBQWdRbDVBUUFBQUFBQUFBQUFCQ2JrQlFBQUFBQUFBQUFBRUppUUZ3QUFBQUFBQUFBQVFHQkNYZ0FBQUFBQUFBQUFBSUVKZVFFQUFBQUFBQUFBQUFRbTVBVUFBQUFBQUFBQUFCQ1lrQmNBQUFBQUFBQUFBRUJnUWw0QUFBQUFBQUFBQUFDQkNYa0JBQUFBQUFBQUFBQUVKdVFGQUFBQUFBQUFBQUFRbUpBWEFBQUFBQUFBQUFCQVlFSmVBQUFBQUFBQUFBQUFnUWw1QVFBQUFBQUFBQUFBQkNia0JRQUFBQUFBQUFBQUVKaVFGd0FBQUFBQUFBQUFRR0JDWGdBQUFBQUFBQUFBQUlFSmVRRUFBQUFBQUFBQUFBUW01QVVBQUFBQUFBQUFBQkNZa0JjQUFBQUFBQUFBQUVCZ1FsNEFBQUFBQUFBQUFBQ0JDWGtCQUFBQUFBQUFBQUFFSnVRRkFBQUFBQUFBQUFBUW1KQVhBQUFBQUFBQUFBQkFZRUplQUFBQUFBQUFBQUFBZ1FsNUFRQUFBQUFBQUFBQUJDYmtCUUFBQUFBQUFBQUFFSmlRRndBQUFBQUFBQUFBUUdCQ1hnQUFBQUFBQUFBQUFJRUplUUVBQUFBQUFBQUFBQVFtNUFVQUFBQUFBQUFBQUJDWWtCY0FBQUFBQUFBQUFFQmdRbDRBQUFBQUFBQUFBQUNCQ1hrQkFBQUFBQUFBQUFBRUp1UUZBQUFBQUFBQUFBQVFtSkFYQUFBQUFBQUFBQUJBWUVKZUFBQUFBQUFBQUFBQWdRbDVBUUFBQUFBQUFBQUFCQ2JrQlFBQUFBQUFBQUFBRUppUUZ3QUFBQUFBQUFBQVFHQkNYZ0FBQUFBQUFBQUFBSUVKZVFFQUFBQUFBQUFBQUFRbTVBVUFBQUFBQUFBQUFCQ1lrQmNBQUFBQUFBQUFBRUJnUWw0QUFBQUFBQUFBQUFDQkNYa0JBQUFBQUFBQUFBQUVKdVFGQUFBQUFBQUFBQUFRbUpBWEFBQUFBQUFBQUFCQVlFSmVBQUFBQUFBQUFBQUFnUWw1QVFBQUFBQUFBQUFBQkNia0JRQUFBQUFBQUFBQUVKaVFGd0FBQUFBQUFBQUFRR0JDWGdBQUFBQUFBQUFBQUlFSmVRRUFBQUFBQUFBQUFBUW01QVVBQUFBQUFBQUFBQkNZa0JjQUFBQUFBQUFBQUVCZ1FsNEFBQUFBQUFBQUFBQ0JDWGtCQUFBQUFBQUFBQUFFSnVRRkFBQUFBQUFBQUFBUW1KQVhBQUFBQUFBQUFBQkFZRUplQUFBQUFBQUFBQUFBZ1FsNUFRQUFBQUFBQUFBQUJDYmtCUUFBQUFBQUFBQUFFSmlRRndBQUFBQUFBQUFBUUdCQ1hnQUFBQUFBQUFBQUFJRUplUUVBQUFBQUFBQUFBQVFtNUFVQUFBQUFBQUFBQUJDWWtCY0FBQUFBQUFBQUFFQmdRbDRBQUFBQUFBQUFBQUNCQ1hrQkFBQUFBQUFBQUFBRUp1UUZBQUFBQUFBQUFBQVFtSkFYQUFBQUFBQUFBQUJBWUVKZUFBQUFBQUFBQUFBQWdRbDVBUUFBQUFBQUFBQUFCQ2JrQlFBQUFBQUFBQUFBRUppUUZ3QUFBQUFBQUFBQVFHQkNYZ0FBQUFBQUFBQUFBSUVKZVFFQUFBQUFBQUFBQUFRbTVBVUFBQUFBQUFBQUFCQ1lrQmNBQUFBQUFBQUFBRUJnUWw0QUFBQUFBQUFBQUFDQkNYa0JBQUFBQUFBQUFBQUVKdVFGQUFBQUFBQUFBQUFRbUpBWEFBQUFBQUFBQUFCQVlFSmVBQUFBQUFBQUFBQUFnUWw1QVFBQUFBQUFBQUFBQkNia0JRQUFBQUFBQUFBQUVKaVFGd0FBQUFBQUFBQUFRR0JDWGdBQUFBQUFBQUFBQUlFSmVRRUFBQUFBQUFBQUFBUW01QVVBQUFBQUFBQUFBQkNZa0JjQUFBQUFBQUFBQUVCZ1FsNEFBQUFBQUFBQUFBQ0JDWGtCQUFBQUFBQUFBQUFFSnVRRkFBQUFBQUFBQUFBUW1KQVhBQUFBQUFBQUFBQkFZRUplQUFBQUFBQUFBQUFBZ1FsNUFRQUFBQUFBQUFBQUJDYmtCUUFBQUFBQUFBQUFFSmlRRndBQUFBQUFBQUFBUUdCQ1hnQUFBQUFBQUFBQUFJRUplUUVBQUFBQUFBQUFBQVFtNUFVQUFBQUFBQUFBQUJDWWtCY0FBQUFBQUFBQUFFQmdRbDRBQUFBQUFBQUFBQUNCQ1hrQkFBQUFBQUFBQUFBRUp1UUZBQUFBQUFBQUFBQVFtSkFYQUFBQUFBQUFBQUJBWUVKZUFBQUFBQUFBQUFBQWdRbDVBUUFBQUFBQUFBQUFCQ2JrQlFBQUFBQUFBQUFBRUppUUZ3QUFBQUFBQUFBQVFHQkNYZ0FBQUFBQUFBQUFBSUVKZVFFQUFBQUFBQUFBQUFRbTVBVUFBQUFBQUFBQUFCQ1lrQmNBQUFBQUFBQUFBRUJnUWw0QUFBQUFBQUFBQUFDQkNYa0JBQUFBQUFBQUFBQUVKdVFGQUFBQUFBQUFBQUFRbUpBWEFBQUFBQUFBQUFCQVlFSmVBQUFBQUFBQUFBQUFnUWw1QVFBQUFBQUFBQUFBQkNia0JRQUFBQUFBQUFBQUVKaVFGd0FBQUFBQUFBQUFRR0JDWGdBQUFBQUFBQUFBQUlFSmVRRUFBQUFBQUFBQUFBUW01QVVBQUFBQUFBQUFBQkNZa0JjQUFBQUFBQUFBQUVCZ1FsNEFBQUFBQUFBQUFBQ0JDWGtCQUFBQUFBQUFBQUFFSnVRRkFBQUFBQUFBQUFBUW1KQVhBQUFBQUFBQUFBQkFZRUplQUFBQUFBQUFBQUFBZ1FsNUFRQUFBQUFBQUFBQUJDYmtCUUFBQUFBQUFBQUFFSmlRRndBQUFBQUFBQUFBUUdCQ1hnQUFBQUFBQUFBQUFJRUplUUVBQUFBQUFBQUFBQVFtNUFVQUFBQUFBQUFBQUJDWWtCY0FBQUFBQUFBQUFFQmdRbDRBQUFBQUFBQUFBQUNCQ1hrQkFBQUFBQUFBQUFBRUp1UUZBQUFBQUFBQUFBQVFtSkFYQUFBQUFBQUFBQUJBWUVKZUFBQUFBQUFBQUFBQWdRbDVBUUFBQUFBQUFBQUFCQ2JrQlFBQUFBQUFBQUFBRUppUUZ3QUFBQUFBQUFBQVFHQkNYZ0FBQUFBQUFBQUFBSUVKZVFFQUFBQUFBQUFBQUFRbTVBVUFBQUFBQUFBQUFCQ1lrQmNBQUFBQUFBQUFBRUJnUWw0QUFBQUFBQUFBQUFDQkNYa0JBQUFBQUFBQUFBQUVKdVFGQUFBQUFBQUFBQUFRbUpBWEFBQUFBQUFBQUFCQVlFSmVBQUFBQUFBQUFBQUFnUWw1QVFBQUFBQUFBQUFBQkNia0JRQUFBQUFBQUFBQUVKaVFGd0FBQUFBQUFBQUFRR0JDWGdBQUFBQUFBQUFBQUlFSmVRRUFBQUFBQUFBQUFBUW01QVVBQUFBQUFBQUFBQkNZa0JjQUFBQUFBQUFBQUVCZ1FsNEFBQUFBQUFBQUFBQ0JDWGtCQUFBQUFBQUFBQUFFSnVRRkFBQUFBQUFBQUFBUW1KQVhBQUFBQUFBQUFBQkFZRUplQUFBQUFBQUFBQUFBZ1FsNUFRQUFBQUFBQUFBQUJDYmtCUUFBQUFBQUFBQUFFSmlRRndBQUFBQUFBQUFBUUdCQ1hnQUFBQUFBQUFBQUFJRUplUUVBQUFBQUFBQUFBQVFtNUFVQUFBQUFBQUFBQUJDWWtCY0FBQUFBQUFBQUFFQmdRbDRBQUFBQUFBQUFBQUNCQ1hrQkFBQUFBQUFBQUFBRUp1UUZBQUFBQUFBQUFBQVFtSkFYQUFBQUFBQUFBQUJBWUVKZUFBQUFBQUFBQUFBQWdRbDVBUUFBQUFBQUFBQUFCQ2JrQlFBQUFBQUFBQUFBRUppUUZ3QUFBQUFBQUFBQVFHQkNYZ0FBQUFBQUFBQUFBSUVKZVFFQUFBQUFBQUFBQUFRbTVBVUFBQUFBQUFBQUFCQ1lrQmNBQUFBQUFBQUFBRUJnUWw0QUFBQUFBQUFBQUFDQkNYa0JBQUFBQUFBQUFBQUVKdVFGQUFBQUFBQUFBQUFRMlA4WG9GMDdGZ0FBQUFBWTVHODlqUjNGa2VRRkFBQUFBQUFBQUFBd0pua0JBQUFBQUFBQUFBQ01TVjRBQUFBQUFBQUFBQUJqa2hjQUFBQUFBQUFBQU1DWTVBVUFBQUFBQUFBQUFEQW1lUUVBQUFBQUFBQUFBSXhKWGdBQUFBQUFBQUFBQUdPU0Z3QUFBQUFBQUFBQXdKamtCUUFBQUFBQUFBQUFNQ1o1QVFBQUFBQUFBQUFBakVsZUFBQUFBQUFBQUFBQVk1SVhBQUFBQUFBQUFBREFtT1FGQUFBQUFBQUFBQUF3Sm5rQkFBQUFBQUFBQUFDTVNWNEFBQUFBQUFBQUFBQmpraGNBQUFBQUFBQUFBTUNZNUFVQUFBQUFBQUFBQURBbWVRRUFBQUFBQUFBQUFJeEpYZ0FBQUFBQUFBQUFBR09TRndBQUFBQUFBQUFBd0pqa0JRQUFBQUFBQUFBQU1DWjVBUUFBQUFBQUFBQUFqRWxlQUFBQUFBQUFBQUFBWTVJWEFBQUFBQUFBQUFEQW1PUUZBQUFBQUFBQUFBQXdKbmtCQUFBQUFBQUFBQUNNU1Y0QUFBQUFBQUFBQUFCamtoY0FBQUFBQUFBQUFNQ1k1QVVBQUFBQUFBQUFBREFtZVFFQUFBQUFBQUFBQUl4SlhnQUFBQUFBQUFBQUFHT1NGd0FBQUFBQUFBQUF3SmprQlFBQUFBQUFBQUFBTUNaNUFRQUFBQUFBQUFBQWpFbGVBQUFBQUFBQUFBQUFZNUlYQUFBQUFBQUFBQURBbU9RRkFBQUFBQUFBQUFBd0pua0JBQUFBQUFBQUFBQ01TVjRBQUFBQUFBQUFBQUJqa2hjQUFBQUFBQUFBQU1DWTVBVUFBQUFBQUFBQUFEQW1lUUVBQUFBQUFBQUFBSXhKWGdBQUFBQUFBQUFBQUdPU0Z3QUFBQUFBQUFBQXdKamtCUUFBQUFBQUFBQUFNQ1o1QVFBQUFBQUFBQUFBakVsZUFBQUFBQUFBQUFBQVk1SVhBQUFBQUFBQUFBREFtT1FGQUFBQUFBQUFBQUF3Sm5rQkFBQUFBQUFBQUFDTVNWNEFBQUFBQUFBQUFBQmpraGNBQUFBQUFBQUFBTUNZNUFVQUFBQUFBQUFBQURBbWVRRUFBQUFBQUFBQUFJeEpYZ0FBQUFBQUFBQUFBR09TRndBQUFBQUFBQUFBd0pqa0JRQUFBQUFBQUFBQU1DWjVBUUFBQUFBQUFBQUFqRWxlQUFBQUFBQUFBQUFBWTVJWEFBQUFBQUFBQUFEQW1PUUZBQUFBQUFBQUFBQXdKbmtCQUFBQUFBQUFBQUNNU1Y0QUFBQUFBQUFBQUFCamtoY0FBQUFBQUFBQUFNQ1k1QVVBQUFBQUFBQUFBREFtZVFFQUFBQUFBQUFBQUl4SlhnQUFBQUFBQUFBQUFHT1NGd0FBQUFBQUFBQUF3SmprQlFBQUFBQUFBQUFBTUNaNUFRQUFBQUFBQUFBQWpFbGVBQUFBQUFBQUFBQUFZNUlYQUFBQUFBQUFBQURBbU9RRkFBQUFBQUFBQUFBd0pua0JBQUFBQUFBQUFBQ01TVjRBQUFBQUFBQUFBQUJqa2hjQUFBQUFBQUFBQU1DWTVBVUFBQUFBQUFBQUFEQW1lUUVBQUFBQUFBQUFBSXhKWGdBQUFBQUFBQUFBQUdPU0Z3QUFBQUFBQUFBQXdKamtCUUFBQUFBQUFBQUFNQ1o1QVFBQUFBQUFBQUFBakVsZUFBQUFBQUFBQUFBQVk1SVhBQUFBQUFBQUFBREFtT1FGQUFBQUFBQUFBQUF3Sm5rQkFBQUFBQUFBQUFDTVNWNEFBQUFBQUFBQUFBQmpraGNBQUFBQUFBQUFBTUNZNUFVQUFBQUFBQUFBQURBbWVRRUFBQUFBQUFBQUFJeEpYZ0FBQUFBQUFBQUFBR09TRndBQUFBQUFBQUFBd0pqa0JRQUFBQUFBQUFBQU1DWjVBUUFBQUFBQUFBQUFqRWxlQUFBQUFBQUFBQUFBWTVJWEFBQUFBQUFBQUFEQW1PUUZBQUFBQUFBQUFBQXdKbmtCQUFBQUFBQUFBQUNNU1Y0QUFBQUFBQUFBQUFCamtoY0FBQUFBQUFBQUFNQllMWEtyVGN4Y2dBRUFBQUFBU1VWT1JLNUNZSUk9IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiRklET18yXzEiLCJGSURPXzJfMCIsIlUyRl9WMiJdLCJleHRlbnNpb25zIjpbImhtYWMtc2VjcmV0IiwiY3JlZFByb3RlY3QiXSwiYWFndWlkIjoiODgyYWRhZjUzYWE5NDcwODhlN2QzOTU3MTAzNzc1YjQiLCJvcHRpb25zIjp7InJrIjp0cnVlLCJjbGllbnRQaW4iOnRydWUsInV2Ijp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwiYmlvRW5yb2xsIjp0cnVlLCJ1dkJpb0Vucm9sbCI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImFsd2F5c1V2IjpmYWxzZX0sIm1heE1zZ1NpemUiOjIyMDAsInBpblV2QXV0aFByb3RvY29scyI6WzEsMl19fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wMS0wNiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IlQtU2hpZWxkIEZJRE8yIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNTAxMDYwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wMS0wNiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTAzLTA2In0seyJhYWd1aWQiOiI0OWExNWMxYy0zZjYzLTNmNTEtMjNhNy1iOWUwMDA5NmVkZDEiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjQ5YTE1YzFjLTNmNjMtM2Y1MS0yM2E3LWI5ZTAwMDk2ZWRkMSIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJJREVYIENUQVAyLjEgQmlvbWV0cmljcyJ9LCJkZXNjcmlwdGlvbiI6IklERVggQ1RBUDIuMSBCaW9tZXRyaWNzIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjI1MDcsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfSx7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjowLCJibG9ja1Nsb3dkb3duIjowfX0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUJ2akNDQVdPZ0F3SUJBZ0lJRGExRVRtRlByYUV3Q2dZSUtvWkl6ajBFQXdJd1N6RUxNQWtHQTFVRUJoTUNUazh4SERBYUJnTlZCQW9URTBsRVJWZ2dRbWx2YldWMGNtbGpjeUJCVTBFeEhqQWNCZ05WQkFNVEZVbEVSVmd0UmtsRVR5MVNiMjkwTFVOQklFVkRRekFnRncweU5UQTRNamd3TURBd01EQmFHQTh5TURVMU1EZ3lOekl6TlRrMU9Wb3dTekVMTUFrR0ExVUVCaE1DVGs4eEhEQWFCZ05WQkFvVEUwbEVSVmdnUW1sdmJXVjBjbWxqY3lCQlUwRXhIakFjQmdOVkJBTVRGVWxFUlZndFJrbEVUeTFTYjI5MExVTkJJRVZEUXpCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQkVuK1lGUlBWemYvRjIyTlNrZytLcVF2bGhhMVg0R29BdWt0bjg5d1puRW9TRVNBZlluWFZCVVZRQ1R0c2M4UVRkZzhuQTlZSmFPdVVHQ2ZacmgrUGllakx6QXRNQXdHQTFVZEV3UUZNQU1CQWY4d0hRWURWUjBPQkJZRUZOTzMvTEdqb254WHJsV0ZhZDhwNGNlOVo4cXdNQW9HQ0NxR1NNNDlCQU1DQTBrQU1FWUNJUURQNWZQNEFQOTlTOHR3NzN6VHJJbFdld203MDBNZEdDS0FpN0NFWjhvZTJ3SWhBSzZVK2JOWTE4TG1lR1hQQWpSK3FvR0hwWlZuK3NLUFA1K3BRZzVab3NpdCJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFNMEFBQUROQ0FNQUFBQXNZZ1JiQUFBQW5GQk1WRVgvLy84Y1UyQWZYVzB5dXQwY1ZtVXFrcTcrL3Y0d3J0QWZZWEVoWm5jaWI0RWtkNHd4c2RRZVdtb3JtcmN3cTh3enZlRWhhbjB2cDhjdG5ic2pjb2NwamFneXR0Y2JVRjBsZTVFbmlxTW1nSmduaEowdW9jQXVwTU1tZnBVcmxySW5oNkF5dE5ZeXVOcnordnFOeE0vczlmWitxTEhENGVpNTE5MkJ0c0xnNy9HbXp0YlU2T3RmdU05VnFyOVRsNmRob0s5S2lwcEFnSTg5azZlV0F1TlBBQUFaTlVsRVFWUjQydXhhNjQ2cnVnNk9OSUwxWjhTTWloZ0pIU3E2U3JLNEJOSktmZjkzTy9FbEliUzAwRm50N0hObWo2a0t1VGoyRnp1T1F5dmV2eE9KSHpULzgyaGVYbDRtOTdQcVdacm4rUnFXOTFrVzhVSkUzY2Y3V2ZVc3pmTjhEY3ZMTElmQSt2ZEpsL2ZnYzFFeDF6anQ5RVNXYWZWbFYvR3lSTzh2ZDlNL3hpSmU5a0ZwdjJxWS9mMlM5NS9xdjM5Zjd2WitIYzI1MUQxVjdIM0JYVUdYdFN6N0paYUE1K1ZTekpscVhzeWVCcVJMVExyZDVMa0M1Nkt3SDIvVWRlK0xWOFI0L2E5UHdJVjE5K2ZDQ00xM29uOGJtby9KYlQ5WHVzYjNNZmI5V0NGaWRmM1ZudUxqYTJqL0pWSytDczNIRDVvZk5OOEp6ZS9mdno4KzNOZElIL2dKS3k3YVA4UHkrNUpscHROTmxvOGJMT0wzZHlMeCtwM29CODBQbWg4MG4wSHp5OUdyL3dEaEUzL2hneU40UEdOaG5uT1dDYzlZRjRyaHdXNnp6R3IyT3FlWitQV2Q2Qy9RdkQ1SWhkY0g4TDMrTlpydlpac2ZOTTlIOC9adHJsL2k3VHZSRDVyL2J6Uy9oa1g2OVhkYUxBdDRmUmlhb1ZQVlRWTGQ4SGRvNm1xSjVPWXhhRFp2ZzRvWFNQMGxtbDRzQ0JBcjBXeVc2RzB6S0JIZkVDY0F6YzBSM2pZYm5oaDRuR252eFcwNEF0QnNsa2xZRVF2WFpxanNjRGVJME53Y1lqSTdGNjJBWm9Ia1pyTlpWbFdzUUx5RVJvaHF1RDJBMUZwTE9WeWIzcFZvVnRobURSb0ZhRlI5ZzM3ZDlMUWFmRVhZWU5ISVdkaHYrc2JRM1dQUmJNazI5WFVMTDdtMFZMQzYwQ203V3BydDNPSzg2cVNTMEd3ZmdHWUxsMFB6U2JJanlJN1F3SUt1T2oxc3R1dlpINGdHZFNGUFcwQ3o5VFEzaHRGOWhXZ1FrS3FIdCsxMkhhVHRYV2kyaTFRNDIxeHB4L3FOMzgvTjJ5YW9kNDhiTStoYVVhQ0hOVlRMelhhelhVSGVObXRvQlJyd3RQZ0dtbTN4WmpYbGZFR3BycXRyTFFlenVjQnNZMXVQUTJFWTdPVXFOTnRIb3pHMzBZQVgrZDNWYlVGVjEwTUFLNHJ6bWE0cjJxTGl1S3FIZndCTndiYTVacm4rMm00VVYxTkU5bDRVRzluSGdrTmMxWmhpVVRxaktlNUQ0NFRpM1g3eDNkNk1SOE45Q3FxbngxcGMzMXV0MHFxMmdMYUJMaFpQNTJ3WWQ1SmxlbUdCSmpUK2lPWlNNOGU1WlFHaVdDYklPaEdOcnpGMmQyOGFiZUJaM3dCRGFSd0FtZ3hvZE9YUWdubHVrME96aGxhZ1NSbU5LOXVGMHBIem80aU5iT3E2dDV0MkE5bUxSVm4zSFFUQk1TZU5JWkdRRytUbElheDc4ZzRrdXNGWGZ3V2F3akFhbGpsMHRLM0hRanQ4N0MwZXJqVmRyU3BHNHRhUURLMWdtb29hYmNxcWI0RkpuMnNicVZqSldGMFZrU0lrakhYZTZXQ1JCSGkybU82Z0Nhdm1uN0FORlRweUlGZ00yMUg1V1V6YkFWT0EyT1BwUTZXR1RzUnM1V2F6Ykp0MERacDBtU2EyMFJoZnEyWW8wdFIrVXBRQ3ZjamxpckdFYldab01BTncvbFliNUVMR29YZHd3RHBYaEJjU3U4aTBXS0dwQUpFM3J6UjF0b0grcG9PNXJLUlhDUWdYQ3NRQ1N4QU5iQ1pBRFFqSkJvMTQ5TGRPdW1IdFlEMzZMTmk2MlY0VHo3WkpGeFcxMXoyMmdRRk5oV0JHS0lXUlRhK0M4eHh1ODEydEIrUDc0STVKRVJuc1lOeE1GS1oybVNqQW1TZVBacFZ0bGltMERlWUZ0YmU2a1hVWHoyeWFzTkhiekQvbzE3Ty9XY1ZyTXc1ZHU5cXFLYTZoaVIrSkptSGIwSE5sMVJ5Y0xyb2YxOFRNMXFuczZrbzhIcGNCd0JiakI5ODBGV09NZGZFVmFNQTJndEdraFc1YTV5bXltMmFhWnprTlpmNmo0a1lyM2xLRmF2MVVGYnJpMmtyUHppV2pTUjZOSnFFUkUrY2s4ZFFTSVJCWEJBOGE3VFBVdEtFQ25NU3JCeHRQTE1ibCtGdzB5UmthckV2OGJqR2VBVEMzMGRvR2hkQmlrUG5iR2JCWGtveGJyNFhqaDZKOUZEeXp4WTRUNGZlaFNSWXBzSTJ2U2xxZkVkQ0tiNlF4cmdPRXVjNjN4ZVJ2aUNZQmk1THFha2dTeDlDcW1NUDNjQ25lbzFuV05GbUJKcmxFZzRHQmR3cWJzVFNEOFRBZER4ekxZcDhIcU1iMUtMU2k2bEJ6V2JFMWUzTVZUZkpZTkNHWXpvT0JiTEtjTlNsa0FUNEpnS1RPV1lLRFcyZENPTnl0U1dmUnhMSjhHaHJUK1ZWdU02OWtYbEJacG1FV1lMczZZeGg2V3hnYUl1VlRrbzBFVjJ6elNEUnhnS1kwUFNpSHkxWVhONlNVNEhEK1RacGQrYnJnQVJveWJGMzR2a1hOWHRtZFcvckJ0aWtkbXRLQmNXNW1aN3U4c0FnUTNMbFVJQjZmQlJES3RLRVI5TWptN0gzdWErV0RiV01GS2FXcWhqUXZNU3FoM05xVVpZakRSaXd6dFBiOEtWdWJkZ0lVQklmMmNUbG5pMmpLRkRNYTYxY2xsV0U1OGN1cHFpMm5hQlRRTlRUVGFsRXVVMktRcUZEVTdueGNGNnd1ZDZMc2svYk9TdG04c3pXTUNMSUEzbEx0dXNEdXB1Y2Zma29IT3RGc3diNllTRTlSZUZxdUlWRW1pNWRYR0s3R3VWbHR4bHJyVDdXNnlOY3FlNkxqVGtNZHV4Y0JtaFJyTVNqSG5SL0Yyb3ZQYnRySnVwUytjSW55UHBJVmk3UnFSSzRTWTlkRjlvbW9PNDNxUmpaL0VUNElJNk9tN0t3ZVo5MzBITXhOK1VtNkQwMWtYRDVqdmR1N2d1NkNuL1RHcElienRVNFhrZk10ZGxIVU51M3BiS1BkOUVlbG9kOXFiT2orR2pUU0dVQTdEY3FoRDJ4eDlqS05ONXEyakNKckh1MTIvTnBZdnFnbE05dEk0SWR2MlYyYjVKTm9JaEFVVURrdGNnMWRVVm16cXAxeDNTQ1BkUHFydnNGWGF2WlUzWTJacDEzNk9rVnUvNW9HNEVTbGp0bG5Jd0NIamtzNUFjUTZKM0pXc1hLcUZ4Y2pSQk9GaUM2eEJKU3lLOFRTMWJlVlUxclpnNC9yREpHbzFiVnlSd1ZRSDNzcnRscHpzcVdDZm9xMkdlQW9UUXZLU1UxMFFlV2xjbUVydElub0hxSWN4MjRiVHY2ZytMU3Z0TGtRWlhlYTJtV25QYWszdUswSHA2TmxXOG1SNWNnNWRoTjlodTVEMC9LeDE0a3ZldUZkWjQ0eUcrNHFsNVN4ZFVqYkh1ZUR0aGloaG5EQ2NFaGxubzRtay95UzB6aS9pTjFDdmpFREhXYzFCdzhIeWkwVWtwNXoxOERYSk0yUGZyNXROSm1pQ1JjTkhCblBVZVBIenpabllNeUZPNVpkTEZES1dqNEpOT04wUU9RT25mbDVhQnFLWHkzcFNqTWJWeE13NWRIbWFwQ3N0ZWJrckVQbXFNZy95eWJrYWppYWowc25raFFIMit6SmFNbys5T21NTnA5UWtjam92blBKbWozSG5kQlFtZWJZWVRLeUZaWnFiRFQ4UzQ1WFBvT1ZneW5EeE1CcjBXVCtJdEdSZStaNzhIMms3QVNjeEpaVE1nMXFSU01jdFpydW5uVjdBdVpUVFhzcGRNM2M2clA2UTF2TmNVUVpFa085SVNjNitISFBkSm5ld29LM1RUWWl5c2JuOER0ekU2a0pNeWtGV21UQUErdjlJaDJvR29NV1VQU0NWcUtZQTYzOS9nQ2p0RDZMUFRubDZHeFFHYS9uT0x0WmRvR0lsY2VieUJ4RndkUDRuSVh0TGVuWVl2bEVicWM5Zkh5TmM1N2NpS281Mm1hSkNzWU12ZVd6MnNtMkdPVzZTaWZwaEdjNUllZDBtTk5zVkY3Z0UzMkNwK0E1cU5UazRvYWdZUllBQldybDhEUjUzWWxYMTBaT1FldHJQQkVVMk1kbjI5cWZlT2F6STZZY2RUU3J4RXhsNUtwRmRnZFJBT29PdmhDemVqREhuY2ZRUWJZR3YwTzVQenBZSXh4N0Roa290L1ZySll0cWZ4eHF2YUFXRjg0cHU1ZldvNGxvR21PY3d5dzdVR1NTM2p1Y1JlcldvczN6N05UMi92VlRjMkxUeFIzNFhjYXhIWlpPNWhsRjQyV2greW56UkRSVzR5NFFhdWhmUUR5Zk9hZjMxbnRPdWU5UEw4eHhxOGtCTHZpZHhpYkphOStXYXY5TElodmRTYXJhL0lsbzhpT2xtS2hQTG1rUFBMTGhtZ3R2UVkvcCtReW5UUDZIRWpZeXpwSERuenBtNHp1UTJLdFBYdkJjTkdRT0lYTWZFV0oxeUVlZ2NPaWZjdVRIaHBQT3JqMzFuREJiamp4enJ6UnM2ZGcyZkVqVHVlUER5ZmtNbW56dE5VWGpJZ0toSWMrQkluVE5tTVhlVHpicHBCTkwwL0dmVVlBbGQyZUwvcFJiRmc0aHZmUFNIRjZpb1czeXV5NlJyNlpkUzJHcGhjS0lKaWpGT3VpOTR3ZHZIaGNTSk14TTVsMlRocWFqaG5ITThOY2VFblFYclVkalYzcUFobnhCS0VMak5oRGpJQnhNMjVwRFJveHQrQzhwTmtmdXRpZU5uU2liRVg0MlR2YlFWcGtub3JHZVJxNGVvSW5Wa1pUdlFtejVTWGNWdkNHczVaRjBsZDNFT0JiejdzVDdERm1YN1U1QTBUaWQ2RTdQUkxOelFSa053SG5CRVFvN0RnSXNmOXg3aEdyK1pORGpFTDV4Nnc4N2NpNmNIUnh1Ui9NeEduZjNwNWY1VTIxenJPaGdBaEwvUXovalYzOTJ2Z1YyYjFCekYrUTQrSmV0ZkdldncvaXZOQnRIZG1BY2ZwdWRCU3R2WEhpN1U3WjdxbTBPYXJUTnp2QWlJdHRVYkJ1NzluZTc1cis4WE5sdXBMd1M1Z29OK0FySmtRaElxQ1UycytoZ3lQdS8yKy9hYk5QcDduVFBTWTh6aytDMTZuT1Y3ZkthcExIZDJTL2J4VG5BSXl0VkZnTFlPdWhKdkJOTmdiNDhCS2lDbDlGY25uYWZaQXM0QU1nYktkZHkwalJrbXcwZ2Y5Z083TTVQaEduRndqUmZrRzdrRlFDS280WDNDYjZSd09VdjNBdG9MaC9FekZSSFBJOUlsYUcxRnFLK1pqcW41UmNJWVhrUWs5VWJyelMzVUViTkdrbDE4REVTenN2LzQxNUFVMTlJdHp0RVV4dFdEZUFMcFFaaVE4OUttLzlmRzNmTkFJcXFvSjU0cTNyZWFnYUFmWnlMNFlhSUVmOEN6YVdtZm13UnhuQ2p4dGExdzhuZGJWYzc5NGs3VGVPbis5d1dQaTlNZFY0emJOUlFGQTV1ZzZ4ZmtNM2lRaHJEZHBIV21PbkRaWGtKVGYyc2N3VlByQXpvdGRURFRrQ3Y1cVdwRlNDQVIxTHRIUnNDQ0s0R2lWSVBNVHVsckQvNDhzZUFjVHlBQ3JVT2JZdjZKWmU4a3RqaVFjQVIrWVJxeGxVeXFMNTY0aE1hRm1Kd291eFVCcVhHR3o3ekYvRm9lKzZubDR1azVHLzJPRUdocitwd05DRFBXOUJBWXhmRnFEK3Btc20za1pxa29HclZCamp4RXdEUThwUGppN3hUU3pzN2lKWXRvbG5LOEJYaTNBQktPSDY4VHpZZmVIU3gzOGpINDZldFNFM0lCa1BxaHRpcU1ObHVzR3ViLzhlRmdGRU5Eb0h6a2h5cEdobExVeVZWQjhzTzluMW9RT3VoNFZkU2VkanlLMktMUkRDQWIyaUQxT3JxQzNPbFBVbW5xaTFONFVBZ0ZSdDQyRmdxNnZBNlJuUEJSVGpCOXJkb3FycnlYOWNST08xSWlFTEZnOHo2V1hrUE5mN3FFdzg0cHRRY0hKeVJscXU3QzJkRUVTT2oxVUlpZGEyOW9qSlN3OVNBV0NxZHdwbWZxcjZETWFsZWNBMDExQVZvVmRVbktiM1RLT2RxSTBZTCtJWVdEK1oyTmVWRDlzRmsreUsveGFtYWdXSnNTOG9MUlZ4V3NxT1pHazY5VGYwS2d5K2hxY2dlV3kva1czaVFpYUlBS3RRY0taZHIrbFFMbHZkNXh3Mzl4UFlNYkY5SWpJTXZNTzAzSm9ZTjU0MW9HaHI4K3ExQkx3L3NJNEtyZVFBbDRXelUxTnRPNnBtdlJhMjJhaHFTald0L3JwaW1veTZCQ3FTRkU4NkRROEJTdlU4MnhISTZOYkU0aUh6RGF6SmNtenpNdHhQbkpEOFkxTk5FSjZOU0xLYWhNV3loSW5CbmgwdHZVRFpkOHo0MERmWEtMUDZkVGVLbG9aYkRhMmRRNVM0bDdWUUpuTG9MUjlYNEVCR3hUZDBIbHRqUUJJckZRVGluZDZJWldqSU5tN2pockR0VFo4M2JvYzdyanFUUkU1eW1YdEpvbXVCbHcxVXlPalFOb1VtTXI3bVVxK1o1Tk0wTFRocU80Nk5wZkJlSEZRZ0JDeC9nUUc5MWRMS1BpRG1iZlRrdjNiam1EaEhZSTZTRVpxTk9aaWRxWU83Sjk1UHVKVFNPT0hYRVk0MitUWTVlc0pjTjVINHJNYTNmRnEwd2VtZnB5Q1Jod1dDU2pZSHZrclJ1L2lKYWtMMXIzb21tSkRPNnRjUXZyeUgzNUcwbVp0WlFqVmJEektlNEVHMjVkOUdtU0VxSkdNRkMzeTExMFVUcjZQcHhMOStLaGcwQWtrYkoyMVBFVE5Pd3ZROVZDbHlValIxWkRJNnJFdUVKbUw0alJrdnFDcnZTK1Vwczl5bUwxdjNhWGdUVEpPVnJyakc4Vm9NKzBxMFVkU3Z5TzNPTi9PVk9KNFhjT0FQY2xlVVgzbDl0MTJXaitMSkNteFNMYzJqb3lQb214TlNMekpXdm9pbloxblE2QUF3c1hqZ1VPOUdTV3pwYlRsN3hNWEFuQytKdHQ4Tmc5OFlYaHp0MDgwNmVoR1h6dCs1bE5Ec3ZWRXhZZWJiM3dpa1pIdFp2c2dwTFNrN09yTlArclRBRnl4NHUwaUE2MVJHYS9kK2hLVHZlL044aTRiZzJYVEZZdmxBVDRJQzI4Zm1UYjNoMm1VcVRsdzNxZjRoR1NWdEI1Vkk4TTA2Rm9YS2IrUjVua0U0enpMSWp1dGpBcW1yc0tzWVFCaHk4Q01WcWVOajkvYklwV1J5dFZjRUhNMk1GclZhVmc1eUFXSzF2eWR2SWU5U0o2d0NHRFpwTmM4QlppWlRISjRYMVJIdDNuV0tsYmNkZHZZcEdLV0RDLy9aL3BRYkpMNUVLaWRMWm9RWjlzeHlnT3hCTXFXUUxOSmtINTZjOFJ4ZE9lYVQ5T2hwalZyazYwRTZZcWxUVXdiaGFRbkpnUkUxS2xkODQ4NHhkYzFhcWhOTUxXZndveFU5aDZoU3BTajd6ajJTVmtpRXo3U1FMcmY3anNIa29LWEV6N1hsNVdqWnYyMGxLcDNXQjhVQXFPQlFzZ1dqZ0xHYnN6Qm1ndWUvS201OWFtb1pCTXNjbzE0a21LYnlUTmNIVWJLRUVhL3JvTXJnZzZ5Y3BtdXlrZEJLZlVMalBXWG5tckh5TTVwN2piZzJFNDhxeXJQNXBQMGl4YkhEaVFZNG1VTnY0dXJpOEx3Q1NzRkdwdUE2M3F5RHl1Mmp1dUw5Q2M2eThITnN3WVRieEVZNWpRQjl5S1FCT1B0aUlwWDFZMWo2YzBUWEQ0YU0ydXJQYk1RbVRQSkxOYjZMQkZnckNHUUpsR2tTOWRLWSs3SzkxZTlCU2wzb2JwbVV4eXpJTmV4UGhwSXVzSXBxZGpGSDFEOUJvdFpDdXJFUjc5eGVlUFJ4dHc1MXVwMjY3MWxGdTdhRkZZTEJma0ZiRC9WdW4zNEJHZXNTSXVFeWlTKzRYL0dNQkhzNW1vdHZHemd6NFZpTXhnWUdPaHlXamFCNE5ZNU8rU2YwK0dxb3ByZVN2MEltK2R1UEdoN0VMRmV0K3NZSEd1cVlINlFuYzNFd3lIK0VpQkQ0dXNDdXRZK0ZvVHdrMlJuaWl4R3pzTklxQjE4TGdaS3hXc1VpakFtTFdrMnZSNnlnWkp5VWROdWRxN2ZqTkRVczhEdjdldCt1b0pUOGQ0NUxYWWZyRkhvUkhCMWhhQlpzQTlJempCN3JqdXJzVU5JY2F0STdyUVYxckt3VWxPamdrbzdYUzhSLzNJV2gwRko4ZnZCTXpXd3p5RmdBc29qRzdHc1VUclFhMGE3Y2R2dHdjb0d6VDZQc0xwN2RjdnVMRGI4NmZlelJhcXpOaldzaElCS0FoQVZBSWNhek9mejJhVUo3N0s2c0E4MFlsVGEzY1ZtMlh3MU1ERXlDK2tPUHN0TW51aDNNNzlHMXJIR3Q4TnA3aGR2QTljQXZ5SEJGZXo2UU9RVHFTemJWTXZOdHB0VnNKWUhaREszTUQ4dk9WQjF4UDkzemxNTDhKbDR0b3hhMmZWenhvZkxvcXpuV0FWUGhJTklnOWtzMHQwWnlERXYyanl5UFpuRXFTdWMzS2NIeFhBT3NjSWQweHJMZHU3Wi9EMG5WUVZ3U1RGZURsUTlDMEg5MFRhSUpzcnNOWDRXVFBNY0RPNFdqUXBtTThZL3ZnUlNJeUNrTHlrdmNiSmhMNTc2SVIyWHlQc0d5a09JMUhPUGtXN2tuTk1mMjh0RXU0Sm5sMVY4KzFwRjNsVVdwZTVFWFIvTHBzY3BhTmppbm0rRzhTM2tEbklXZ1ByMEs1Z1Nka3lITU5KdHI1T1VaOHZtUFlEb2dOS1pYc2pFNTVqQ1ovQ1UyZSt6S2p6NU5zVGdVQzc3bE1kWnhSb0JDZjY3akR5d0tMazFoY3FIWW1XcmZneXlwdXZ1YnNOTmRkNTJlNnJvQk9sck1QSkJqUTVEcS80b3hZalFJVDc4LzFqVTkwWGpheDAvZ3ZtdHhRSmVUSEVsWm54ejMvN3B6ZGVUaExoWk5mT2IwYjNrRG9OdzRTTkxjNHc0QW9NTWwvZGw0MnQrTFl3SEltQUFVVXVtdjlPd3F1OGR6S1ZOeWpkRXl6RE1HRHBHVTB4Uk9NUG84bU5UZmpDcG1JT2dOTndxWSt2QzIwSEUreGdSQVBmeTRuWVZGSHN2bGROSW01RTh2OUdKalBub0U1dXJTeVBRZEZiZUd5dTVOcGlQbGxOTVVqMlFCWXVRa2djSXJDOTlRSVVwOGxzRHZEUnJ0RUVsSzQ3c0YyK1B3VndVbE4zTjdlZ3NiSnB2aGVvL2pERFIvV2tud1dFNzJaMHFtUWMzY3o2UjVlV0J4MlozOHFOTmM2TTdmUk9PU3Nnb2pTYTdJcDh2cy96TEhJcHZCdDJDZWdiMitpT1hYbndNTS94b2RMYmI3TTNTdGhPNi9qeU9aYWRMbDY3ZzRVbTgvaDBkemdUSmlnb01LaEtTQXovc1ovL0V2K1FsU1FUZUhkT1V0aFYxcE5kMk1NeHdMQ1ZNelFkU1BGd3BScFpJS202Zm5LK3pvZHZ2Q0NVQW1hYTVmbkp6N1FKY1Jqem93RlgvQmtYalpSN2NSWjNMOE1WOU9CTzdOTDJYWk5vOGFqcElaY3o5VmVQYlRFTnMvc3BuUENtVkFwYnNzbWNIQmlPU2wrZGw0Mmo1dzNBbGJyZzViVzc2cW5adlA1M1JSdEdlZVRsWlAyNnpJY3JsYStGM3hQTnJmY0UyZ2kyVHhLcFdUUHVlME9EdE5oWnhEbWNCNVBsaFZrNVJnd2M4YWxjeE00ZlF0SmhDYjdWVFEveWFiSXRIOWlaOXk4V0UzMDNGVnJyQTdKblN2SXJrVFAzV0xmZ2lZMXhROEZac1VnZXpkOXB6aXhEdGNtOFdsYmJqOGhUL1pEc2RtYlpQTk1TdFA2VGpralpqUFpXcE5lYXlDZ0dhUDVzWTVlUXBPaHlMTkg3c0FYL0EweEorNVdsaUxMQittQXh5UEx1T3B4cGNPdlN6czhPZVdYZjQrcEM1cG5YTUtsRlE5K2RodzVUS3pkeU1hM2FvUmlYQWRNZzZIUkFXTjhvd2hPM2UwWnQ1V3NLTExIUHdGTjhmTlA4Z1Jpa2MwUGxVanVUM2J3aXdKREZpbys5NXMzUEZNb3NxZEtlMWsyVDZKSmpHUFVNZnZuRC96L2cxL2t2bWVncGpMbU1jaGl4MmN1V1EvYksrNytuSnozUTh4YjBEaDFmK0R5cXdhMExldnNWYzJYWS8xcVlHcUtVL0lIUmRNNjEvRG52L2JPSmNkaEVBYkRnRmlRR1hudEMweXIyVTJWK3g5dWFJQUU4ekt0b3FoQ09Da1B3d2YrZ1hRUlZlcEphc3g2RTh4Zlg5elc3THg5cjlsSnNtdjlmTmZ4ZkVuKzh5RGlmNXVqbjZwbWVVUE5GbnJsdWRxK0FVeS9HdmY3Nyt2MlJ0eFdRK0pOQ3Jaa1hMVWNFNittZjI4TWQvWHNUUXdVQy90ZHVEcjNoZzNVcWpFRlcwaDV2WEdUV1RVSnZpUmpMTTRaVFIwMzl1eE5IbGxlRjRaVmJMNGVkOFllWDNTWUk4bnJtU3g3L1hFVDNGY1REeFd2U1Z3VHByZzVpWHlsN04yeTVvcFI1MUxxb1RnemZKeHViMDZ4cGJOOXlYVDF4ZGszejFscVBzT21tcW5tS2pWcW9FdW9rV3lxbVdxdVZBUFE2QUo3UXQxUWIzOFhVWFdrSFY2aUJod1o4dUFEZ0ZBTEhVRlJSRUhjVEJCUWNlN2hnS2hvNE1CVWtDeXlNZ0pLUUdxK0kvRzR2bEExVlJsRnFaY1F4U0JzWkFKR3NxbG1xcmxJalI3SnJCcG8zZEJ1cmpDdkUrY3d3KzNOVkRQVlhLTkdTbWsvZWl0c3VkNnJvYUNEMTNkeGlmWU1SWFNDZU1aejhUUVUwUjdSUFVnbE1oSGFndWxvTEVsb1NkWEl5QkovamtoK21yU3o3SXNzZGtvaFI3S3A1cVBWSU9KV2ZLYUl2bmE0ZHNNamp4R1pJTWdneUNCNDVDV2tFTm1CaUtoU0NPME5OUldFeEx5SEpuT21GS1puYXNnK3piRFBUWEdGTUZzVktUc1FpZHg2bDVCWHBzRlNaSUkrTUZ1S3ptSWZKcWVsaVFTblAvdjBpT1B1eEdUOEFsS2VKa0dPeUZEZ1NEYlZmSzc5QTZjWUR6SGdWTzlkQUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIkZJRE9fMl8wIiwiRklET18yXzEiLCJGSURPXzJfMV9QUkUiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImNyZWRCbG9iIiwibGFyZ2VCbG9iS2V5IiwiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiNDlhMTVjMWMzZjYzM2Y1MTIzYTdiOWUwMDA5NmVkZDEiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjp0cnVlLCJ1cCI6dHJ1ZSwidXYiOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJsYXJnZUJsb2JzIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwiYWx3YXlzVXYiOnRydWV9LCJtYXhNc2dTaXplIjoxMDI0LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxLDJdLCJ0cmFuc3BvcnRzIjpbIm5mYyJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5IjoyMDQ4LCJtaW5QSU5MZW5ndGgiOjQsImZpcm13YXJlVmVyc2lvbiI6MjUwNywibWF4Q3JlZEJsb2JMZW5ndGgiOjEyOCwicHJlZmVycmVkUGxhdGZvcm1VdkF0dGVtcHRzIjozLCJ1dk1vZGFsaXR5IjoyLCJyZW1haW5pbmdEaXNjb3ZlcmFibGVDcmVkZW50aWFscyI6NTB9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNi0wMS0xNiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyNTA3LCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IklERVggQ1RBUDIuMSBCaW9tZXRyaWNzIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNjAxMTYwMDIiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblByb2ZpbGVzIjpbImNvbnN1bWVyIl0sImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjYtMDEtMTYiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MjUwN31dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNi0wMi0wMiJ9LHsiYWFndWlkIjoiZjRjNjNlZmYtZDI2Yy00MjQ4LTgwMWMtMzczNmM3ZWFhOTNhIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiJmNGM2M2VmZi1kMjZjLTQyNDgtODAxYy0zNzM2YzdlYWE5M2EiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiRklETyBLZXlQYXNzIFMzIn0sImRlc2NyaXB0aW9uIjoiRklETyBLZXlQYXNzIFMzIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQ1VUQ0NBZmVnQXdJQkFnSUpBTnI1QUpaekFrcUFNQW9HQ0NxR1NNNDlCQU1DTUlHRU1Rc3dDUVlEVlFRR0V3SldUakVMTUFrR0ExVUVDQXdDVGxNeER6QU5CZ05WQkFjTUJraGhJRTV2YVRFUU1BNEdBMVVFQ2d3SFRVdEhjbTkxY0RFUE1BMEdBMVVFQ3d3R1VtOXZkRU5CTVJJd0VBWURWUVFEREFsdGF5NWpiMjB1ZG00eElEQWVCZ2txaGtpRzl3MEJDUUVXRVhOMWNIQnZjblJBYldzdVkyOXRMblp1TUI0WERUSXdNRFV5TURBNE1ESXhNMW9YRFRNd01EVXhPREE0TURJeE0xb3dnWVF4Q3pBSkJnTlZCQVlUQWxaT01Rc3dDUVlEVlFRSURBSk9VekVQTUEwR0ExVUVCd3dHU0dFZ1RtOXBNUkF3RGdZRFZRUUtEQWROUzBkeWIzVndNUTh3RFFZRFZRUUxEQVpTYjI5MFEwRXhFakFRQmdOVkJBTU1DVzFyTG1OdmJTNTJiakVnTUI0R0NTcUdTSWIzRFFFSkFSWVJjM1Z3Y0c5eWRFQnRheTVqYjIwdWRtNHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUnhTbE81MWphYWNyVVFuejBPS214SjYwdytiQlFJUG55bUViMm4xZW1nQUFpaGZweWFlSkhUMHJVb0RCT3hNeUZ4NWdlMlNlbmNsN3FFM2xwR1FwZ09vMUF3VGpBZEJnTlZIUTRFRmdRVVdwRllRTkwveVZwaDJkaXJuN2M4VFlKSTZnQXdId1lEVlIwakJCZ3dGb0FVV3BGWVFOTC95VnBoMmRpcm43YzhUWUpJNmdBd0RBWURWUjBUQkFVd0F3RUIvekFLQmdncWhrak9QUVFEQWdOSUFEQkZBaUFoUzBkeDR0TzIrYk8vaW5IdncyM29RQjNLdkxJajhuWmNtcnBsU0YrTHFRSWhBT2xWT1ZYZm1CMGhSSTZxVFI2Wk80T01lcTIwSGtXUTFiYkxOTDAyZXlNbyJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFoWUFBQURmQkFNQUFBQllFWWUxQUFBQUcxQk1WRVVBVEpoQWViS0Fwc3kvMHVYZXUxem16SVh2M2E3Mzd0Yi8vLy9MWm42U0FBQVB5RWxFUVZSNDJ1MmRUWktqT2hMSEFXKzhWRlJ0V0ZMMGhpWDJiRGhBZGI4TDlHSU84R0ptRGpBeDhaWklldDNOc2NjSUJQcElTU2tNMWVDeUYxM1JHQXZwUnlyL3FRK1NKTkUrcHk3OCtmV3VmNzZCWjlIRS9LaGw4K0oySUd1NlhYM01DaU9xOXdQRm9yWlk1QW9LSW82a3phNVpJQXpqTzRvRnNWZ29YOTZzb2l6ZmNHYjQrMWlrMFdZQnMrQVdpa3p0UDhJaW1HWXIrMk1ScnQyZktCYXRWZkJadFpscVpKTHRta1VhNlRrZExJckU3WW5ZMURmcXBOa3ppNUJoL0JmSHdzZjRSb0NYdDA5MW8zTGVOWXNzMGl4QUZsNUZKVm52S2dRZWt1MmFoZDlzZitCWWVCWDFaZ3hNNkVoMU8yL2ZMRTR4Z3VwZzRWTlVsdlNkb3ovcGZMT2ZadGNzZk5VRHpBSml3WHc5citjZ1dCUm53V1hYTEU0eG5oTmswZnE2U0R1eTRQM0J2Yk5JWWp3bnlNS25xRjJiU2NOcGhPL1lONHM4eGl3QUZ0d2J0VXdzWHJzRHNIREdXKzg0RnY0eDZzQ2lMSVN0N0o2Rnl6QitJRm5ZaWxwMXRyOFFnSGJ2TDF5RzhSM0p3anRHdlZuTndLSk8rOTYwZXhhd3JQNTh4N0ZnL2xoV3hoZkQzMmIzTEU1b3p3bXdhUDE5cnRkU0VWL2NydEx1UE81MEdjYXZkeVFMRWlpTm5BWVd0MDVTWkFkZ2NVS2JoY1dDaDl5UEdLZjJuYVhrT3grbk9nM2pPNUlGOVUzakRDZmtFNVhxQ0N4eW5LQUNMUHlLT25TaVpyU2d0RHNDaXhSckZoYUxjRXhmRDhMQ3ljN25PMTJHOGZNZHlZSWhmQTlKMHFxN2tuMlpoWWRGaXZPY0Zvc1dFY1V5L0dyTUxsam92ZnpYTzVZRndlanpNTWRYZFVkaG9abjIzMWdXSEJuUWwyWFpkWWRob2QzUDcxZ1dRVVhkN3lmQkdjYVBkeXlMSXFpb2gyU2hHTWFmYUJaSi9LcmtJVmprQ0JVeFdMQzRhZlhqc0VqaiswZ2R2MEI3REJaS083QytrOFF0UFIySUJjb3d2bmtWTmVzZWhJVmlHRGdXQjFiVUlJdFRaQXgrWUVVTnNwaDcreThVaXdNcmFwZ0Z3akMrK2JySTZZRll6SWJ4RThIaXlJcUtZSEdPbWVNaitLWFovYk1nQzJUMTIyTW9xc1hpeTRKNDY1dG5HdWQ4WUJaVjdUR000RnBSY2VDZ0UyREJQWVl4eXVyWFAxMHNEcTJvTmd2QS9abXkrazhYaTJNcktzQ0NodUt0cjUyTHhiRVZGV0RoTll6ZWUvN2haSEZzUllWWStBeWpsOVcvWEN6WXNSVVZZc0VUcjJIODBibFl0QWZ2SWdDTHppZXJmNy8veDhuaTRJb0tzdkRLNnRmT3hZSWZYRkZCRmw3RDZKd3NqcTZvTUFzYVdHaUdXZFJIbnNaeHNnREVNUXV6T0xxaU9saFEvM29peU9Md2l1cGc0WTIzSEN3T3I2Z3VGclhYTUVBVzVPaUs2bUxoamJkQUZzZFhWQmNMdjZ4Q0xPaXhwM0Y4TEh6eEZzamkrSXJxWk5INUpqNGhGc25oRmRYTndoZHZBU3pZNFlOT0R3dkFNTTRlRnZYeEZkWERncm9kQU1EaUFSVFZ3NExIK0l0SFVGUVBDOHZzZlRyeUVPN0N3NEpIeEJlUGJoZUdZZmpqenVLaC9ZWHBQZjNqa2ZhaGRjUVFoOEE0OVFGRzdINFcxUEVGRkhlU0I0NDdEY05JUS9OYWp6d2VNYnhuY0w3enZwbGYxcWVNS1J2L0NYcmRydjB2dml4dnVNaFNvNWZwWmNIeDgrRDNxQ3FUOW1ja1l1T1NrTWpTcGswQ1hPVlZ5akJVaUJxVHdxYyt3K0kzN0JxOHgrQzgxbkpWZlhOZG40Mkh4aXh0TXd1dVhFem4xd0t0S0d4WGZsVXUrWXBrd2NGbXJUdmZXVGdyd1BSdEVCTUxyamxxTFpFZGpzVUZWcnpnMDVOQTExOTFIdnppcnNISWdwcmpaRU96VkJnb0ZxWnZlOFd4b05EUk5kZEhMSitydEd4a1FRd1d0UWM2aGdWM1NWNUlDQW5nQmJIclpvaE80cDFrSGxpOEdmTW53Q3pUYXhRTDU1UmRpQVVGMnJUaWVtcnRlLzZSZ1hOSnhMY2hGOEdDT25jM2gxaHdRQnpYVzJmbjNnYzFRQmExZDZjMmdnVng3bTRPQm91MWZYdlgyMzlSZXgrTWhWaHcvMDd0TUF2cTN2WWVaTUh0RnFIMzVaeVhtTVY4bHlFV3JmOG5ZUllrY2FiUkNnOGkvdEVoV2NUdmdKNGFsdDNDUXZabTNtV1ZSV2syNWFXQ2ZoSmtNVmV5ajA1TG92cjVKUU9xMWZieEVWMEhyb1lBTVZ0b3FWRlJadndreUtJMVNpeVUyN1ltaTFoVjVhWWtVdDJlbU8xNGFwZldaRWdXeEl4aWl2a1NhN0tJVmRYVzZrbTFaay9NUm1vRkZOTkZHeFFMYnQ4a01oMVprMFhzZnZEQ1ZodWlWb05acFRDZ1dLSzJMc1NDMm82TVRiZHRWUmFScWdyWURsVUZpRmx5MUFKZGo2ckZoRmpVUUxWcXlYZFZGbkdxeWlCYzZuMnpNNFlVa0xVUjVXQ0lCUUVLb1BJcXE3S0lVOVVXempjMU93eTdSempTTXMzRUFpdzQ2TkxKZUhCVkZuR3FXb2NheHVEQm10bnh1RkwxQUF1NEFGbVJkVmxFcVNvQnI2alVnNWxGVU5naEYyWlk2bVRSZ3NiS3hxUHJzb2hTVmRod2xJWXhzMDR0WEtSeU9NQ2locDNZaUhoZEZqR3F5bUdIMGxvc1RFNTU1N2l2WVJZRjNNamg4Tm9zSWxTVndUZFphWmlEUlFWVFRSRXNDRnlsOFZjcnM0aFFWUXAvelUwV1dhaFhxY2NETEJ3RjBFMVlSS2hxNjdqZ0FoWkZGSXZNWWFMNXlpd2lOaXU1V0pDcFlWWXZjc0dkKzQ2ZkJmT3lPSy9OQXErcXJZTlVZYkE0UTY3a0hoWm5SeWRiblFWZVZldWd3YU5adFB0a2dWZlZZbThzVHF1elFHZUpXY3JpZkMrTHlzRWlXNTBGZXBPOGkwWDdPQ3pRcXJxVVJYWWNGbWhWL1F3c3NLcGFSN1BnNjJqcUI3TEE3Z0Z1bzFsMFc3SGdHMmtxV2xWZHNWYUlSZEo1UXRWbExOaG1MSkNxNm9yQkY3RHdqODJTSUF1NkdRdWtxbEtITC9Hd1dEWm1EN05vdHhtYjRWWFZNWDhSWm5HR3FTcXR6U05aRkp1TTJTTlUxYVVLSGhhT09iNTZQZ3lFWTh5Y0tITU5qWnN0V0NCVjFkSDdQU3djYzcvRWJPM0pNV2ZFZkgxczlUbStHRlYxekY1NldERGZ4c3ZLY0IzNm5jazlMT2dtOCtCUnFscjdaclZoZ3dmSnRxcUJ1WlpvS3crTFlpeDFFeFk0VmFXd0wvR3hLS0IrcGEwTEV0UFl1TFg0Vk1GZEpOK0dCVTVWT2R4L2ZDeUNhOHYyaW10ckxVcFdzSHRydG1HQjNOSkhiTVBndVpkRmNNK0JiSHBqZkoxcExMUnQwenpaWkowOVVsVnJLL3JnNU94bDBkbSsrS0l2M0RLalRNMXFKQXROeVl0dDlsOUVxaW96UXpGT2tnQ0wyaXlPT1RhNDU3cUY1am9MQmNZbDJXWmZUcXlxRW1OL0ZrbENMS2FDeCtkQnJoYnJRbTNKOUVSQlk3Q1luaHQ1VXpZRWJNTUNtZlpnTnAvK1BkUnZROHU5TE9iZWw1VTNFb1ZkL0xSeTk5SjBaUUp0aHF1RzJyMTg2Zmk4cC9HMEhRdmM0MmZBWHRjUUMrcmY2K3JZUDVzRExPenFiY1FDT1ZhdG8xazQ5dTAyL2hPYUVJdTAyNDRGVWxWNVBBdnFOd3Z3QkgxVGRlVjZLZjFHTExBendIVTBDK2krYS9HQzU5Sk9GbW0zSlF2azQyZWNSTE5nU2FCbzZyUWFKNHRtVXhiWUdXQVd6Y0sycFZOZ09OU0VXTHgybTdKQUp4TzZSTE13MjVvR3ZGRGVtU3dJUE8yMkdRdWNxcG93c2c3QlFvZVJObjVqZSswc0ZuclB4RDZUdVp3RlB2bllWYTgzZ29YNmVHOFc2SG12bmMxQ296a1hrSlRhcDhHdytOKy90TSsvd1pONGFYNmNENS9MeDVDemFycnA2VndFZUh2a1k5L3BGMytSK21zR2xUSDc5Tnk0VXNCT1VqTW9qUzR3VHlTTm9LcTQ3N1g1QzI3ZG4vMmxxVUN5V1BKaGZqL3daTEZuRnFnbkdKOHNQaHNMaG4wVS9oT3dvUGc0NStGWjFPaDBFWS9QZ3VDeUFud0dGalRaVGxLUHhxTGVVRVlPeG9JbEc3ck9nN0VneVlhdWMrOHNTbWhpSXZ1Y0xMUlJkNEhNSWZLWUxMaVM1K05LMExsbEhwS0ZuSUFxeTlCVTFlT3pvSjRWdjgvR292WGxsUHBrTE9xUE5JdWRzeWcrMGl4MnpzSy9aUDdaV2VUZEoyVmg3emw0N1Q0ckN5MWI3ZVlvZGo4Mll3cU50TnFZdkg5dGNBZmpWRjRXY2pQWmIzWmUzZlB6WlBGazhXVHhaUEZrOFdUeFpQRms4V1R4WlBGazhXVHhaUEZrOFdUeFpQSGdMSzVsR2RpUDdmbXc4cTczdE9temRER2IramRoY2JscmMwRHJmUEFEVjJYMTdiOGtXVzhuenlJV05GbUR4ZEpsSWJYaGRmSzdXWkNWV0l6TGhSem9McXpDc09ESkloYlhaalVXUEZtSnhiZ2NRZ0FESVFtR1JidUlCWE04QjVnczZ5SlpyRm1mZFJaeVhjUXkraGwzSmRaMi9DeUtSYXRMclRESXdtcEVzdXkrTm5lekdCeHdmaDhMc21oVmZrMFdkZlNtUTVCRmYxZXo0YStqandSWkxIdjMrZEJIMW1GUlJPK29nbG53VVVvNDBObDVnMk94eUdPeGJrVVc2U29zZWdQTC9UZHdHeFpkdDJZZmFmUXdzaHBDVVRXd25NN2d0K01PRnRTd2NXWkVveXFMT1ZMVldHUm1PUHdsRlBOV3E3Sm90U2F3UWRLS09WNjR6QTkrM3Y2UUtidmIyV1RCNVh2Rmh2cTlhUm1QS3ZYbENrTjhtZG0rVTNPNyttTjdmWEZuTnIya0pldUxvK05UNHZKa2tXMU5uckJRVTJjcEcycVowdmtwZTZxbEdpR0ptMFhmbHJseGwwVExNYWl4SU5wckN5dkZRcFZJdnJZemJaa3N5Tm9zdUxwcmhGcWJyWWdTVldwWi8yd1d0Y0tDcTJVWUxHcjFPNFVGVlljMVdnRXlKYUhCSWxtYnhWQzFWd1cvdXR1S3F2OEpzR2pIOTgxVjZ0RGlaTE5JOUJRL2xUWWFrREMwQW1UeXhzMVpjR1dYbWFnTEVXd3VvaHFGT05JL0x6Nm03NnFFajFORytCcUxTamJ1OW9PWG9aT3JMUHJ4dU1CYkRiVTNXTkI1d011SCszTVpESU9LVkV0bFpiTElwdXZmMUZENDR6dFpLQThMTW5HNzZkQWpTSDhwR1RUSXRHNjVXMVA3MzBrVzhxVzFSRkpRNHM1NnRFS2lvRlBkcFlBaFJ3WkVYTEtZVTdscUxCcUZoZWFLRjdNWS9Wd2pyOFdUS1pSajBublZvM0UzSGhac2Jod2REVTE0ZW9NRkdmOE8zK25hTVFsTVBSeW5VejY1Qm1CeDZ0Wm5NY0E0aVd2TmplMHZTR1ZWcVpMdHpjVkM2U1AxbklFek0xbE0yZ0N3R0hRc2x4SGdxUEJNU2NHbnNqaHZ3V0tBVWNucXppelU0S0hxSmhrTXNwaENuOEppd2FlZkY4TXQxMkoyQVNNZGdiSFpnVmNRaTJvVEZnTEdDV0tSS3JIeTJBb1BpMjVpY1pKeWtCb3MyTlQ2WW5CSSt2aEZ3TWpGTlRpWms2czBIOGhDQ0FiRUlzT3pLRlFXWjNWMkk0S0ZJTkMvd2U4OG9aZ3ZZYkRvTm1MUlgvbE9GbVFNeUNybEZKQkY1Mk14U01pdEFLSys3TzlEV1FqUGZSY0xkVHhDbHR2RklPYkRTM1p1MzlPMC9IZ1dGR2FCOXhmdGNQemVQakpvaUxDTGRDemd3MWt3bUVXQ1prSGtBRTdWRVp0Rk4wMXorRm1jYWhGMDllcnMwaEdReFhrcnU1aHZZcEFGVGVTUHExRStuQ3hPSVJaWno0TTEwZ2xOOFFVZk9SWWhGc1Y5TEhyaHNsaU1JV2pIcXlBTG9nN0NXOWxFZ0VVeC9yMzYvRVU5cDQ0L2pjTWtoV1BpWkVIa1dHNTlIZWxiS0N3MXlLS1F5eHF5M2FKdVY1MUZNLzZnVjBxZXVYWGtOSTFIYW5HeFFockdFTCtMNkYxblVjL3ZFVzJHZUc0SmkzRmhtU2lzRlJiRC9NbzFVVmtVWXNDcGpGTzUrUG1VTjNNZXAxNFNuVVUvdmhYUlpKOUZ6Mkl4VkVSTVlNbHg2bFVmcC9iVnljUnRxd3dXdDM5ZituRnFMVWZYK2JLNTMzbmR6R1l4VFdzcExHcHova0xMN2FEUFh5Z3NwbGRSak5OREZndHRFcWxXbHlhNXJDQ2QwMFRxTEdUV2tlbUU1ajRXRGNCaWV0Kzh3b0xDTEY3VnlWd09zSkR2L2FJaEZxazZyNVhQSSttem1sNWRaekc5LzBTbTl1dnVZakdYcjdKZ05vdmhlaWFMVEova3Y5Z3NxRDdmZVhLeXFGenpuZW9ySEhRV3crbXpJZWQzc1hqcFFCWkRvMTVWVFIzNEdDeSttQXNlb3R5WGRoNmJqVVZOZzlIR3hhSnl6b1BMbzFWbnNlQXlaQzlHRzkxa2p4SmJ1T3ZtMmp1N0ZseVY0Nmk5Ti9ENnlEVzBnZWh0dURINzI2L1ZicGZ6SWJBK3Q4YzhqVThXYTZ5UlBoZ0x1dTBqN1FkaGNSMFh6TGJNZEhBVUZrVWZFMitaTHVkQUxNZ0haSDA0Q292dDg2SWNqa1h6Wk5HSGxyMnphSDdMbGNXV292OER3aWZFektwNHJVZ0FBQUFBU1VWT1JLNUNZSUk9IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiRklET18yXzAiLCJVMkZfVjIiXSwiZXh0ZW5zaW9ucyI6WyJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiJmNGM2M2VmZmQyNmM0MjQ4ODAxYzM3MzZjN2VhYTkzYSIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZX0sInBpblV2QXV0aFByb3RvY29scyI6WzFdfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjEtMDMtMTAiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDIwMDcxNzAwMSJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMS0wMy0xMCJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjEtMDMtMTAifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyJjYzA2MTIyYTAwYzI4N2Y2OWU2NzZlY2EwZTAyOTI3MTNmNWNkYjNiIl0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbImNjMDYxMjJhMDBjMjg3ZjY5ZTY3NmVjYTBlMDI5MjcxM2Y1Y2RiM2IiXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ik5FT1dBVkUgQmFkZ2VvIEZJRE8yIChDVEFQIDEuMikifSwiZGVzY3JpcHRpb24iOiJORU9XQVZFIEJhZGdlbyBGSURPMiAoQ1RBUCAxLjIpIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH0seyJtYWpvciI6MSwibWlub3IiOjJ9LHsibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJpc0tleVJlc3RyaWN0ZWQiOnRydWUsImlzRnJlc2hVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZWQiOnRydWUsIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlCM2pDQ0FZV2dBd0lCQWdJVUt5VURHcmhSUWJVM3JtbGwrcmUxdFliUnM5NHdDZ1lJS29aSXpqMEVBd0l3UERFTE1Ba0dBMVVFQmhNQ1EwZ3hFREFPQmdOVkJBb01CMWRKVTJWTFpYa3hHekFaQmdOVkJBTU1FbE5sWVd4VFVTQkpUMVFnVWs5UFZDQkhRVEFnRncweU5EQTRNRGt4TVRBME1UUmFHQTh5TURZME1EY3pNREV4TURReE0xb3dQREVMTUFrR0ExVUVCaE1DUTBneEVEQU9CZ05WQkFvTUIxZEpVMlZMWlhreEd6QVpCZ05WQkFNTUVsTmxZV3hUVVNCSlQxUWdVazlQVkNCSFFUQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJGeVk2T05EbHVobmozODNNUnc1SmZ3Z01rSnJuVzArSXRsT1RoNDJuREx0ZlprcnpSREZoOUtGRGFPRisyMVoybTlLU05xcjFNS2txak9pUnoyczROaWpZekJoTUE4R0ExVWRFd0VCL3dRRk1BTUJBZjh3SHdZRFZSMGpCQmd3Rm9BVXhUc2ZUS2U1SnRIOXRJVXBQM1IxeWRPV3pJa3dIUVlEVlIwT0JCWUVGTVU3SDB5bnVTYlIvYlNGS1Q5MGRjblRsc3lKTUE0R0ExVWREd0VCL3dRRUF3SUJoakFLQmdncWhrak9QUVFEQWdOSEFEQkVBaUJSSkRINDBpeThhN0xOZ1pmTFVkdXc4YkxEemtUOWkwb0l2VmplVmVMa1VnSWdXNXIzQjg0eDZ0OGNvTENKTG9GTGlwWjc1bitOKzNtOTl6RkxkUmx2SWRNPSIsIk1JSURJakNDQXNlZ0F3SUJBZ0lVUHIxMXZtQTVqci8rMURZVm5iRHVsTEMyNTZJd0NnWUlLb1pJemowRUF3SXdPakVMTUFrR0ExVUVCaE1DUTBneEVEQU9CZ05WQkFvTUIxZEpVMlZMWlhreEdUQVhCZ05WQkFNTUVGTmxZV3hUVVNCSlQxUWdTVU5CSURFd0hoY05NalF4TURJeE1UTXpOekkwV2hjTk16UXhNREU1TVRNek56SXpXakNCeWpFTE1Ba0dBMVVFQmhNQ1JsSXhEVEFMQmdOVkJBZ01CRkJCUTBFeEVUQVBCZ05WQkFjTUNFZGhjbVJoYm01bE1SQXdEZ1lEVlFRS0RBZE9SVTlYUVZaRk1TSXdJQVlEVlFRTERCbEJkWFJvWlc1MGFXTmhkRzl5SUVGMGRHVnpkR0YwYVc5dU1VQXdQZ1lEVlFRREREZE9SVTlYUVZaRklFSmhaR2RsYnlCR1NVUlBNaUF0SUVaSlJFOGdWVEpHSUVGMGRHVnpkR0YwYVc5dUlFTmxjblJwWm1sallYUmxNU0V3SHdZSktvWklodmNOQVFrQkZoSmpiMjUwWVdOMFFHNWxiM2RoZG1VdVpuSXdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBVFFSOGtjM2JYbFp2cmVDWE9TOWNBMmgrVFZDVGx2QXpISVRZRlNpNndoQWZ0WHgwMEdzNkNLRmFGYmFMVWh0a29PaU5FMUI3RjhBZGozajB6RzQ1MG1vNElCR0RDQ0FSUXdDUVlEVlIwVEJBSXdBREFmQmdOVkhTTUVHREFXZ0JTb01hT0s5bGxaeU1Ma3N3WjhPWHgxOHh6RjdEQkxCZ2dyQmdFRkJRY0JBUVEvTUQwd093WUlLd1lCQlFVSE1BS0dMMmgwZEhBNkx5OXdkV0pzYVdNdWQybHpaV3RsZVM1amIyMHZZM0owTDNObFlXeHpjV2x2ZEdsallURXVZMlZ5TUJNR0ExVWRKUVFNTUFvR0NDc0dBUVVGQndNQ01FQUdBMVVkSHdRNU1EY3dOYUF6b0RHR0wyaDBkSEE2THk5d2RXSnNhV011ZDJselpXdGxlUzVqYjIwdlkzSnNMM05sWVd4emNXbHZkR2xqWVRFdVkzSnNNQjBHQTFVZERnUVdCQlRNQmhJcUFNS0g5cDVuYnNvT0FwSnhQMXpiT3pBT0JnTlZIUThCQWY4RUJBTUNCNEF3RXdZTEt3WUJCQUdDNVJ3Q0FRRUVCQU1DQUFNd0NnWUlLb1pJemowRUF3SURTUUF3UmdJaEFQT2JGc2wzVWFtVEt3VThSUmxzZkhKQUZHTjJ5bzg1Wk44eDhLQ1N6SDdPQWlFQXZMYWlTY3hPZU1nWFlJZlJZZlZ0Y1ovbWtLLzJLL3E4YlpoRTl3cVRGZ2c9IiwiTUlJQ2REQ0NBaG1nQXdJQkFnSVVScFFMV1FybUdEU01HZy9vN3g3eC83b1VpWlV3Q2dZSUtvWkl6ajBFQXdJd1BERUxNQWtHQTFVRUJoTUNRMGd4RURBT0JnTlZCQW9NQjFkSlUyVkxaWGt4R3pBWkJnTlZCQU1NRWxObFlXeFRVU0JKVDFRZ1VrOVBWQ0JIUVRBZUZ3MHlOREE0TURreE1URXdNVGRhRncwME9UQTRNRE14TVRFd01UWmFNRG94Q3pBSkJnTlZCQVlUQWtOSU1SQXdEZ1lEVlFRS0RBZFhTVk5sUzJWNU1Sa3dGd1lEVlFRRERCQlRaV0ZzVTFFZ1NVOVVJRWxEUVNBeE1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRUIzNGJFOXlQZlFSY0VvSTBZRkI4ZWMwQ1NFMHVqbUdlQ1JGZGRCQkJVSkorNjNacnVWdW9yd1Bjb3BkMU5WUVpIZlRWaDNkVjRKcDdWN21Tckg2aHZxT0IrakNCOXpBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQU1COEdBMVVkSXdRWU1CYUFGTVU3SDB5bnVTYlIvYlNGS1Q5MGRjblRsc3lKTUUwR0NDc0dBUVVGQndFQkJFRXdQekE5QmdnckJnRUZCUWN3QW9ZeGFIUjBjRG92TDNCMVlteHBZeTUzYVhObGEyVjVMbU52YlM5amNuUXZjMlZoYkhOeGFXOTBjbTl2ZEdkaExtTmxjakJDQmdOVkhSOEVPekE1TURlZ05hQXpoakZvZEhSd09pOHZjSFZpYkdsakxuZHBjMlZyWlhrdVkyOXRMMk55YkM5elpXRnNjM0ZwYjNSeWIyOTBaMkV1WTNKc01CMEdBMVVkRGdRV0JCU29NYU9LOWxsWnlNTGtzd1o4T1h4MTh4ekY3REFPQmdOVkhROEJBZjhFQkFNQ0FZWXdDZ1lJS29aSXpqMEVBd0lEU1FBd1JnSWhBTHNCNnpCYlVWWHV5ajBuMkRNd0hkOEZ4MW16UDBwUjNuOVNIeFAyYWZTOEFpRUF6emF3Ynl6WS9vaThoMUIxNG45aHFCM256QmVUbms2akg1VHhZNmVTU2lrPSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFnQ0FJQUFBRDhHTzJqQUFBQ3FVbEVRVlJJeDJQOC8vOC9BeTBCRXdPTndhZ0ZwRmx3OGNLRmlySXlSM3Q3UzFPejBLRGdCZlBtLy96NWszaXp2bjM5bHArVGEydGx0V1RSSW9Ub2Z4aFl0WEtsbHBxNnNyd0NBaWtvUklWSHZIMzc5ajl4NE5TcFUwQXRRSTFXNWhad1FhZ1B6cDg3VjExWmlYQXZJeGo5WnpoNTRrUk5aUldSUHZqOTZ4Y0RPTTB6TVRLaUI5Rzh1WFAvL2ZzSE5GUkFTTEMrc1hIbTdObHVidTRRbTNidDNMbHU3VnBpTEdDRW1jdUlhY0daVTZmQjRjV1FYMUFRR3gvbjdPSXlhZW9VYlYwZGlJdmFtbHVlUFh0R1VTVC8rZzMySFNPRGhvWUdSSVNGaGFXcHBZV1ZsUlVvK09Iamg2YjZCb29zZ0h2cXo1OC9jRGw5ZmYzTTdDd0llOCtlM2F0WHJxUWdtZUlva0RLenMvWDE5RUd5L3hrNk96b2ZQM3BFV1ViRHNBWVlSQzN0YlJ3Y0hFRDJoL2Z2NjJwcUNSZU9qQ1RtWkUwdHJaeThYQWo3OEtGRHk1WXVKZDUwVkFzWWNlcEtUVTgzTmpXQnFPbnU3SHh3L3dFK08vN2pzZ0MzMTVtWm1SdWJtOW5aMllGcXZueiswbEJmaHpPZy9xTzdsUW0vQitFQW1Id0xpb29nQ280Y09yeGswV0lpUFVFZ2twRkJVbkt5bVprNWhOM1QxWFgzemgxaVlvS0pjRFRCQTRxRnVibXRsWXViQzhqKyt2VnJUVlUxcUhRaHpRZU1CSHlockt4Y1dGd01VWG42MUtuNWMrZFN2OEpKU0V5MHRyR0dzQ2YwOTkrNmRRc3V4Y0xDQ3JIN1A1SXJTWWdEZUtGUzM5VEV4OHNIWkgvLzlyMnVHaEZRTjY1ZmgyVlBOb3FxVENVbHBlS3lVbWd4ZlBwTVNXRVJNQU11WDdhc3Y3Y1hJcWlscllYd0ZyeGVnL3FPdUdaU2RFek0zdDE3RGgwNkNQVDBwazBiTjIzY0NJOUZZS1pKejhoRTk4SGZmMzhoRERZMmRpTDkwZEhkcGF1cml4YXdyQ3lzcmUzdHVucTZpTFRYME5BQVRvSXNUeDQvdG5kd2lJeU9BdFlFeEZqQXpjM3Q0K3NMSkw5OS9Rb3NFMFZGUmUzczdSdGJtb0dWRlVxY2pUWWRoNzhGQUloQkxsTmQ3anUxQUFBQUFFbEZUa1N1UW1DQyJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wMy0xMyJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDMtMTMifSx7ImFhZ3VpZCI6ImQzODRkYjIyLTRkNTAtZWJkZS0yZWFjLTU3NjVjZjFlMmE0NCIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiZDM4NGRiMjItNGQ1MC1lYmRlLTJlYWMtNTc2NWNmMWUyYTQ0IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkV4Y2Vsc2VjdSBlU2VjdSBGSURPMiBGaW5nZXJwcmludCBTZWN1cml0eSBLZXkifSwiZGVzY3JpcHRpb24iOiJFeGNlbHNlY3UgZVNlY3UgRklETzIgRmluZ2VycHJpbnQgU2VjdXJpdHkgS2V5IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwiLCJiYURlc2MiOnsic2VsZkF0dGVzdGVkRlJSIjowLjAsInNlbGZBdHRlc3RlZEZBUiI6MC4wLCJpQVBBUlRocmVzaG9sZCI6MC4wLCJtYXhUZW1wbGF0ZXMiOjAsIm1heFJldHJpZXMiOjAsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2ludGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQ1NEQ0NBZTJnQXdJQkFnSUpBTTlSell1NEVJSWxNQW9HQ0NxR1NNNDlCQU1DTUg4eEN6QUpCZ05WQkFZVEFrTk9NU3d3S2dZRFZRUUtEQ05GZUdObGJITmxZM1VnUkdGMFlTQlVaV05vYm05c2IyZDVJRU52TGl3Z1RIUmtMakVlTUJ3R0ExVUVDd3dWUlhoalpXeHpaV04xSUVacFpHOGdVMlZ5ZG1WeU1TSXdJQVlEVlFRRERCbEZlR05sYkhObFkzVWdSbWxrYnlCU2IyOTBJRU5CSURBeU1DQVhEVEU1TVRBeU16QTVOVEEwTTFvWUR6SXdOVGt4TURFek1EazFNRFF6V2pCL01Rc3dDUVlEVlFRR0V3SkRUakVzTUNvR0ExVUVDZ3dqUlhoalpXeHpaV04xSUVSaGRHRWdWR1ZqYUc1dmJHOW5lU0JEYnk0c0lFeDBaQzR4SGpBY0JnTlZCQXNNRlVWNFkyVnNjMlZqZFNCR2FXUnZJRk5sY25abGNqRWlNQ0FHQTFVRUF3d1pSWGhqWld4elpXTjFJRVpwWkc4Z1VtOXZkQ0JEUVNBd01qQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJIbHEyalVRTWFsSGovQlJlUWVmR2l6NEV2WUp5RkxXUHo0UmZoSkdLcXFsKzhuOTZoVDFtNWdYb1R2b0xyalNVN1gwY0Jlb1RzZ2h5aDIyK3lyczQrU2pVREJPTUIwR0ExVWREZ1FXQkJRKzhTR1cyQlhicWIyZGNBT2lXSk9VK0dDc1BqQWZCZ05WSFNNRUdEQVdnQlErOFNHVzJCWGJxYjJkY0FPaVdKT1UrR0NzUGpBTUJnTlZIUk1FQlRBREFRSC9NQW9HQ0NxR1NNNDlCQU1DQTBrQU1FWUNJUURxOHhJVzBaSzV5ejNFQXptdXg4OExDVFlPMTU3ZlRmeU9pT3pDMkFEeWF3SWhBTzFQV1lsZUZnSC8zbXVEOGNCQU1yMTFmRUtkRi9BYUMxNmZ0eGFlek5YSCJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFJd0FBQUFZQ0FZQUFBQW9OeFZyQUFBQUNYQklXWE1BQUI3Q0FBQWV3Z0Z1MEhVK0FBQUZJR2xVV0hSWVRVdzZZMjl0TG1Ga2IySmxMbmh0Y0FBQUFBQUFQRDk0Y0dGamEyVjBJR0psWjJsdVBTTHZ1NzhpSUdsa1BTSlhOVTB3VFhCRFpXaHBTSHB5WlZONlRsUmplbXRqT1dRaVB6NGdQSGc2ZUcxd2JXVjBZU0I0Yld4dWN6cDRQU0poWkc5aVpUcHVjenB0WlhSaEx5SWdlRHA0YlhCMGF6MGlRV1J2WW1VZ1dFMVFJRU52Y21VZ05TNDJMV014TkRJZ056a3VNVFl3T1RJMExDQXlNREUzTHpBM0x6RXpMVEF4T2pBMk9qTTVJQ0FnSUNBZ0lDQWlQaUE4Y21SbU9sSkVSaUI0Yld4dWN6cHlaR1k5SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpFNU9Ua3ZNREl2TWpJdGNtUm1MWE41Ym5SaGVDMXVjeU1pUGlBOGNtUm1Pa1JsYzJOeWFYQjBhVzl1SUhKa1pqcGhZbTkxZEQwaUlpQjRiV3h1Y3pwNGJYQTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzhpSUhodGJHNXpPbVJqUFNKb2RIUndPaTh2Y0hWeWJDNXZjbWN2WkdNdlpXeGxiV1Z1ZEhNdk1TNHhMeUlnZUcxc2JuTTZjR2h2ZEc5emFHOXdQU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNCb2IzUnZjMmh2Y0M4eExqQXZJaUI0Yld4dWN6cDRiWEJOVFQwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOTRZWEF2TVM0d0wyMXRMeUlnZUcxc2JuTTZjM1JGZG5ROUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXpWSGx3WlM5U1pYTnZkWEpqWlVWMlpXNTBJeUlnZUcxd09rTnlaV0YwYjNKVWIyOXNQU0pCWkc5aVpTQlFhRzkwYjNOb2IzQWdRME1nS0ZkcGJtUnZkM01wSWlCNGJYQTZRM0psWVhSbFJHRjBaVDBpTWpBeE9DMHdOUzB5TTFReE5EbzBNRG8xTlNzd09Eb3dNQ0lnZUcxd09rMXZaR2xtZVVSaGRHVTlJakl3TVRrdE1EVXRNRFZVTURrNk16TTZORGNyTURnNk1EQWlJSGh0Y0RwTlpYUmhaR0YwWVVSaGRHVTlJakl3TVRrdE1EVXRNRFZVTURrNk16TTZORGNyTURnNk1EQWlJR1JqT21admNtMWhkRDBpYVcxaFoyVXZjRzVuSWlCd2FHOTBiM05vYjNBNlEyOXNiM0pOYjJSbFBTSXpJaUJ3YUc5MGIzTm9iM0E2U1VORFVISnZabWxzWlQwaWMxSkhRaUJKUlVNMk1UazJOaTB5TGpFaUlIaHRjRTFOT2tsdWMzUmhibU5sU1VROUluaHRjQzVwYVdRNk1qRTROV1l5WW1ZdE9EVm1PUzFqWmpRM0xXRmlPRGN0T1RGak0ySXpaakJpTnpobElpQjRiWEJOVFRwRWIyTjFiV1Z1ZEVsRVBTSmhaRzlpWlRwa2IyTnBaRHB3YUc5MGIzTm9iM0E2WldNeFpUZzNNakV0TnpNM1lTMHdOVFJsTFdFellUa3ROVEZrTVRNek5EWmxaVEk1SWlCNGJYQk5UVHBQY21sbmFXNWhiRVJ2WTNWdFpXNTBTVVE5SW5odGNDNWthV1E2TWpFNE5XWXlZbVl0T0RWbU9TMWpaalEzTFdGaU9EY3RPVEZqTTJJelpqQmlOemhsSWo0Z1BIaHRjRTFOT2tocGMzUnZjbmsrSUR4eVpHWTZVMlZ4UGlBOGNtUm1PbXhwSUhOMFJYWjBPbUZqZEdsdmJqMGlZM0psWVhSbFpDSWdjM1JGZG5RNmFXNXpkR0Z1WTJWSlJEMGllRzF3TG1scFpEb3lNVGcxWmpKaVppMDROV1k1TFdObU5EY3RZV0k0TnkwNU1XTXpZak5tTUdJM09HVWlJSE4wUlhaME9uZG9aVzQ5SWpJd01UZ3RNRFV0TWpOVU1UUTZOREE2TlRVck1EZzZNREFpSUhOMFJYWjBPbk52Wm5SM1lYSmxRV2RsYm5ROUlrRmtiMkpsSUZCb2IzUnZjMmh2Y0NCRFF5QW9WMmx1Wkc5M2N5a2lMejRnUEM5eVpHWTZVMlZ4UGlBOEwzaHRjRTFOT2tocGMzUnZjbmsrSUR3dmNtUm1Pa1JsYzJOeWFYQjBhVzl1UGlBOEwzSmtaanBTUkVZK0lEd3ZlRHA0YlhCdFpYUmhQaUE4UDNod1lXTnJaWFFnWlc1a1BTSnlJajgrLzBWeFJRQUFHZlZKUkVGVWFBWFZ3WGZjbjNWOTcvSFg1L3Y5WHRkdjNEczdKSkFJQVVMWUJabUNpbURWRGxmdHcyM0hxWXVxUFYwV3RkYldSNjNuVkcycm5yYU90c2hEclJVZlBSM1dXUzNLVmhBWllRb0VRa0xXbmR6ek42N3IrbjdlNTA0aUtOV084NTgrbjJudWlzUy9KM0c4WVplWjJaVEVJbUQ4NStST08wWlNVZmlISlA2Rkh5SUVXQmpBd3pOdzZvYkkzQ3lrQ0dhR0pOeWhMTVd3Z25yb3BOSklDQk5VY29vaTBPOGIreGZGNlBMQXFJTWNHb2QyVyt6WUQ5Rmc0OXJBZ2IxaTBUSlRIV0dDdW82VWhlRUpkaTltVnJTTjhjS1lxNDJkKzhTS0NTTzJnQXdkSUJRUVRQeDdabERWZGtrV2J6VFpjS1RJM2RodnZyR2x1ZU05ZDhVVFgwUnIram1veVlDUU9NU3NCTHBBQWpMUVJ4cGd4bytSQW1scjRvY0laaGVHa0Y1bEJwTDRyd2hJQ1hMRGZIK2dEeGVGa0hnQ0NlU3dmNzhoRXovS2pNUEVENUlnUlh1UnVmMjBwWUJaUTcyZjdTdEdIM1ltVHZ4Rk1oY2dBd2xpQVJMZ0dXd0dOQWZXUXF3bWhzaEJjbjRzR09BK2w4cUN4eG1RQlUzRFNaSWo4VjhUWUZDMGpZVUZiZTMxZFAyeTVaQXpUeEFTNU1aQWdQR2p6UUJCMVlEeEE5WlowS2ttY0VISW1jOTNMdmkzSGZISWtxWmVqVElnTUVBTzdsOG54azhoM1lMbjNZUTBqdXNNMUx5T0VNNUU0c2VDZ096L2xQWWNFSTl4UVR0eHhIZzNudWtZSUw1ckVkZ09DQ2o0ZmdZU3NSNXFSYWVqcTBKaXVxcDRnaFFOTHcxVjRzZUZBSzlGTXI1SFFMVGpRZ3liTWNpTmc3SG4xcFdYZk9PaDZzU0w4UGtqTVFkTFlHR2F3ZDdmSlhZdlIwV2ZFTUFDMUJXRTRsWjZDLzlNbWY2T2N1VHBTSUQ0a1dVRzBtN0V2ZW0yYmM1amhvMVlPeG1QT25NVHAyYUo3SUNCaVk4Si9UN1FBa1lBY1pBQVE4RW9jME8yeUxiUlVVTUNNNUNNZGh2MnpUbGtJL0pqUkdBUlFoSElqWGlNR2NkS0duZU0waktJT3g2cFYrL0xadWNqN3hBTVNQdm82eFY0OVFYU09Nek53OGdFZEZvd013TWpZNURTWHBybXJSVDZCNHhWaUI5ZEVrdHVKTnFPdEhjKzhKaitFRHBkMnhUYWpHZ0FHZU1nZC85bllFOEk0SUlRUUN3SmdJTUxYQkFObWd5U2tSMks0Tno5SUR3Nkx6WWZMUXJqeDRZWk5EWDBlazUzTENCeFNBcDJqcGxoZ2hZMXN6WngwMVhOQlhNRXRoQXFRQlc5NWgwMDZRdkVFYWhKdE11WFVNUVgwRlJYMDJwOWhDTE5vd0NlcnNmOFByQlYvS2ZFWWNaL256ak0rQUh1RUFML0lUbGdZTVpoQnE2YkVRdnBTVWRHSGxQVnhCVmpkbzZ5NFJJZ0VOc0VPNkpCbHBFQ1ZMVVRnaEZMUVRZY0l5TUtRWk1oRzFRTkZLWDQ1ajFpWXRKb0pVT1YrQ0VNR0FFQ01BK0kvdzhDWEdDQU8xamt2ODFZSXNnT0VvZUl3eXhBWFltNS9jNnFsWVpuYURKSDVjekpoSUJNbU9BaDMvamxnWFZXUXo2UllEQVlYc3RDL1JkMGxrTTVBdkkzVUhUZlJ3QnFmeDRqbzF1QkwySVI2Z0RaRzBJQUJPNFFJMkRnRGlZT3NRUnlrSU1aUDBqZ0dVTGljUllBZ1F2TU9FUUNNeWhhNEJua1BJRUVGcUJvUWE3QUhVSUVCRG5maWNqcHBFbHhpSURJbXM2WW5aa2JhREpZTUR6NzNjZ2ZtV2tDUllMSkNQMCtXQUFLSG1lQVpFZ1FBZ1Rqa05FMnBBZ1Nod2pJQW96amdaOUJPayt3enNCYzdBTytndmlreEtQOEp3UzRHREc0S0VYT0VxenF0UEFBM3pIakM0S3QvQmNFeTRKeDhXaWJNMkprS29vYWVBRDRDdUxiR0JRbHhCRWpaa0dmOVhWdG00aGdDSXpaditYRkR6MFlOcDZOTGF4RURtWG5zMHlaRXlvbzB4bkkvb2ljb2FraFJNQmVnM3dUVWtuMjFSZ25FOFFoclE0b2cyY0hiUWYyNHF3aTJIcVNCUnFCQURNZTV3NnBnTTRZREhxUUd6Q0RrQ0FWTU95QkhDd0FBZ0d4QURsNEJvc2NacUFNQ0dJTHdqaFVQYUZzd0E2QzdtRkptbmxVSE9RWldsMVdqNHl5UlVFZ2tCdGx5VDJ0cUFONzU0VzVzV1JDY0tyZ0RMRGpnT1VHQ29HZEdMY0MveXA0aEI5R0VPQ1lxWFo0Ylc3c1JkRjBGR2FHSUFNcFFzQ2VaWUZmTTdOM0NQN2FRSHdmQVRtclJQWkxyY2l2WUd5V1dWZUN0Wk1nbDVySzNwU2lQb2J6aDhDQTd5TWdpMUdaWGVwdXI0ekdwZzJyWWxuWEFqZVVoRHNQV2VUUExmTEgxVURhZm0rbUxveVJ0djNFWk5jbXF5eGFOQ0J1dlQ2ZXV3UHhNdFJ2NCtyUkc5eElNdWcwTU5RQkxOeFBhMlFMdVlGcUFNVG5BOC9ub0NJQXhpRWhndWNETFBZK1RqUDRFdU5qOStEV0o0UkFOWE02ZE4vQ3lMS3pXSndGYnlCRVFCQkxVSURGbVFkeFhVY3E3c1RDZ0dIL0tQcHp6NkF6ZWhJR05BMmtObmpld2ZiYlBzclk2dnRvVHo0ZmExNklCY2daV2lPUTYwZllmditIbUZoeEI5M1JuOFB6eTNEZGpyR2RKYW03TVhDUUJFWGtERFBHY2dVV3dYQUdmVjFmVzBCdWF5M3k4N2c5djkyMkV3MWJJVGN3Z1NBRlE4Smo0SDZaWFZGTEh3Qm0rUzRIQXJ4NDlUSjdSOWtLeHc4V3dRS1BrNkJzUVFHV3pkWVhvL0dqZFpPak1oODJEcE1nSmp0cDlVVDgzOTFrRitlR29rakNKYklNbHhCWXJuVmt1MnR2TXc5SG12SnJCUU9XT0ZBRVRsblZEaDlzV2JpZ2NjTk0xQm5Fa2lBa2tMRWhCSHQzR1d3Vm1kKzhkNXZ6eGUvRTlNeXo3Y3lMejRmcUVTaVYyVmxzK1B5ZVltMlBQay9GTXNnSERQb3pXSUNxZ203bkFUeS9nTms5cjZFb24wZDc5RWswRlljSUNBSEVFb0VQdjhxakQ3eVRWY2RkdzhSNFF6V0FMQkJnK1dGbUZyL0tiSE1GVStYekNBbXlnd1VvMHg3MlBmU1hQSERuMzdMbEtROWgxaWRFd0dGbTF5bzZ4N3lWc3Z0RzZoa3dvRFA2TmhabUxtZlp4aFlwWFl6WElBR0NhQ0M5aTE3OUZ6VFhRVHJoUXNwTjRJdmZBdVpaa3JwZGNaQ2dFMlZuZXpaY0ltSzBPbngxZHRiK0xqZTZlTlVLKzJEQ2pxOWRoQkMwNUFEU2lBWEtWalNhUmpRaXhHREhncjNUNEZuQXIwcDgyd1dkeUZ0YkkrRzNUVGJldUJBUWdCQU41UE1qTFQ1M3g0TzZldHNDKzg0L3dkWk9ZaTl0aU84eXk3Y2kzY2hCNHR4V3l6NFM0Y1FpUU9nNnZSNTdURnlWZ2p5WVhTUlkxUUFPZEdKOHFhUnJKUHRvVTNQUXVTbllGYVBSTm1XRGpERFlXZFYrdlJuWjRHd3oyMkJBTlpTVm5maXFvNDdsczVQT1ZmUExiTzJLVWR0TVgyQUdCUXc2RTljMGQrMWR4ZHJqTnRGT29EaENaLzk1N0hoZ0swZWZDNkVHNXg0R2k3OU9TaDhncEtjUi9kY291NmZRbjRmc2tDSlEvejNVYjJCcXpVNmFQb3dzTzViaDRBSmN1L0RtcTdRbkJ2U1paL3ZXdHpOMjdHbDBKemN5V0FUWjlWUnpiNmJkdm9iTjU0cWlCV3FnR29JaXRFZjNzT2ZBbXhpM1NMZDlLVlYvRjYzdVZ6ajZMSWpGT2xSZGdBVVFFQU1NcTN2SmRoVnIxa0p1TGNNbW40b3FvTDRaUElPUkdIQ0lHVk5FVGhKZ0J0bjl5OE1Ccng4ZHM3Y0ZoWGQyb2hnMmZtUE8rblNRM1F5MkQ5TmtVOWtwaTQyL29HeUZpOHBJa0F0dnhNU1luUitLK0FrTHpZdEcyM1pCdXd4dnl6MjE2MGFZUVpGQVVQVjcvcW1pc0Q5blZMZjErdlNuZTQ0c1FOWVZqZXp0cGZIVVJuNFRzTTRzdk0vRWlTSEJURi85aFVYNzA3S3RqNDYwMklYSU45elZiSjRhaSsvZmNuUzRzQnFJeGxXMFkzemR2Z1UrdW0zYWp6anRLUDRNYkZNdGtHbk9zNzgzaFBESkVPeFJTUmdjaVhnYnhrc0ZscUt0YUtmNHd2NVFWNTE2cko2MHlqbWgybTlZRUpUc2ZvOWUvOGg5QnphZXdSSHpVNFFDRkZxRThBYTh1b21pdUlXbUQ1NmhMTURpZzdSSEh1U1dhNy9Fc1A5UlRubjZzNGdHaS9XMXlONUlIT3lrTTdHTWhZVTNzN2o0VXNScWlsQWdQazZPdjA2NzNzdFI2MjhuaHh2STJraDMvQ2JtRjErTHVJM3hOZURoNlZUOVZ5R09SUGxtR3Y5VEpsYnR4SUQ1NFYvU2FqOFhmQ2R6ZXhleE50VFZXVVRmZ0JtWVFURG9EWGZRMHpZbVdwQTJub1A3Q2ZoZ0h5SGZqb21Ea2pqTXhQcEFPQTREejl3ZzhYN1YrcjJSVG56NVlxMEhkcy9sUHh3cDdUUEJtT083Z2tIbFhIdjN3LzZ4aVNuLytWTTJwYmRYcy9Za2oySTRFS0VLVzU1NlV2SGxtSmlvZW1vcmMwZ3JRUU9QSGhqNlcybnNiOHFDeDhVSU1SaTQ5dGRaZjFBVVhEQldwb21GU3I5bEZzNEpDQXZNN1pyMVMvdnpmSHpEZXNNTUVEUnV0ODczbXJjb3AvY0VXQjhEelhSUDkzL3FPaS9PUHpuOWFtdlVucnd3QzVnZTh0cGZCWHlOSjdvYjlEdVluV2pZYVo3RllyWk5NY05LMkpLQ2pWZG1kQm5BZ0JzZjBoSGIyTEx1ZGFRREkxUVZ5S0N6Nm1TT21mb2s3bitNL0V0NC9RaXRVZWlPZ3pjZzdXRFkrejF5UG9taVhFOWpmNGhwQjZiMXBIZzU0eXVmd1hBQVpoQU5YQytuYW00bDhCNjY0OUJLQjhnTE1OZDdKNVZ1bzRxUkVidU13Y0p2WTJFTWkxQ01Yb1NxRHRobHhBQWR6ZEkwZXlrNzMySTRuT091dTJIOTZ0Tlp0VHd4ckNBWXhBUUwrMi9Dck0vb2F1aFZUNlpWZEpodXJxZXRBM1FpT0tRVWplODZ4WXdwd1U3SHIyMG5lMHYyZEc0LzYrdnUvaXBnRzk5bGdGaGlITkk0dlVhNkhQZHY3aHZ3aWJGT09EVUJ1UkhqSXh5Ukhlb0dna0VNc0d0RzM4N0IzMWgyN0dvSkVPRFFiVU8zTXU3ZG5sblpFV1hCVkxzZE81WTVYaDVlb0NpS0NETnorVVBUKy96anJaU1F3SUE2dzlwSlp6RDBhd2Z6K2VlU2FTd21jcFhaTlRWcXA2OVpZYjhpQjgrT1I5NmRVdnhhTUVZbEdXQkxXSktCQTNKOTI0elRXT0tvWERTbks5dVlKQVFFZ3dQTjZOVzdlMnVnemRtUVFTd1I0TkR1Yk1iOXI4akZWcUkrQWZZWm90K0grbkQwYVN6NUJzcTMwQnZzZ3ZBTm1qM2dmaFJoK1RTaHVSSjVCWWlHQWhnaDZCNktCQWFzV0g0Nlg3L3ljMWpySyt4N0FEWSs4K1hFK0FjSXd3UmlTWVoyK1V0SVoxQTNNeFJoQW1remxuNmZiZHNhUkllaU9KV0RESkJEdzREMjJMY1k5bUIyRGtKNk1yUmdxbk16VFgyQWJCeVVrRmpTd3V4MENReWZqbTdQRGVOaDA2RFVGMXA5dlp6R3B1V0FRQVlaTU1BTTNDRUEzVFpRc0hXdTFzL1VNZi9WVWQxd1NiK0dRUTBHbUVHSVFBcGZmM1IvZnUzS0ZkemxBak5RZ0dZSUoyMkFacHY0ME9maHdqTUR6ejNkTHQyNXgrUm80K3JsdGl3UElYUzRwMTN5SjFQelJyc0ZxUVYxQXdaMFMyTTRCRWs3REpGbHJCaU54WXZQNTRWa1Zpek9pWkJzRWVtbmdMTUU0NEQ0bmhvb0RNN2lJQU9EeFdnVTBUaEpBdHdnd1pmakpYZHNEU2UyQ1BrSVZBTUJNQkRRRERra2RVN0V1dStpSHJ3YWVBbVRvemZnd0dJRnFJZjRCS1ZQMHg5QzVqcTh1WTVROEQzR0ljcFFsTkNkV01uZXZjdjQ5cmMreXJMT0lpdlhybUN5dUl6S0RSTmdQSzdKWGVCY3pNQWRzUHN4dTQyTlI0SDc4WlRoRk9vS01FRGc3R0IwZkNzUjJMdi9CSTVZdHhrTDhKMGJyNk8zUHhNTERrcGtEcHFrME9rZ1lyQ2pyV01qOSszUlRkTUxldlU0VEs4ZWc3SUZicEFOaEFoQldBTm1jTVJ5WTZTQS9vTFl2TXkzMXpsZTJXdTRoQ1hHWVdaUU5mNzMvWXBMeTVaMmxRRktqTkFDQmVoVjBDbUVBQWRpeVhuZGJucnAxdW5tajhwUnpsN2ZzbmJkd001NXYzcmRsdkRveVJzTUdqSFlBVFBUMEVxd2NzS3dFRkV3M0NDSFFJVFYwZXlpV3VBR0VVYktFSDdhQVFuTURBUU9HR0FzQ1lZQUE1UjlheWZZNlFsN3VtU1U3UnJtZUhCNy9hVGJCMVBkNTVCN0czRExZTHM1ckEwMkFVVFVnQXRTc1pIc0wyYlBnUnRvSEN4dkFGdERzSzBZTUhsY0MwOHJ5TDJFNmhxTDRxQVF1cmdtaVVYQnNQOHd2ZFlycVBiTXNuN2wxWno2SEZpMjVrSnkzc2hnSGtMZ0NRd1FJQ0FWc0RCN0xiM2VibGF0aFJCUFlYYmZDZzZ5Q0ZaQS81RTdHZTYrbmRGVFlNMkcweGxySDBOdjVnQlgvZU85UEh3M2RFWTVLQ2x3MExHQmNDb1lvSkZPUyt6Y21UKzlZNWUycjE1aGREdkcybkZqVUlFQkJwaGdVSXQyYVJ5NXlyaDl1NWp0aVJQVzhSeXY3SGZkaklCNFRERERHM3Y0emwzRGZXdW5qTkZXb2gyTUprTHRFSUVBOUlZd1ZqSys2YWo0ZitncW5MWkpOMlhGMXd6bWhSVlVETm5hVEFNbTZnWFJ6Qm10MHBBN1ZRMnJsaGMwYm1RWE1RblByT2tOT2M2Q2lJWUhXQkNxQk1rTVk0bUV4WUFsbzE5bDlUbXM3V2JUOWRBL1ZyVHQ5Qml0VzFYUXNReUo2NjVaUEhVSHpzOWlneEx4Qm95cmdRSTRIdlFCektad1FWbUE1RHk4NnlZcXdmSVdkT0lGTUhJQ3NkMERRVFZZaHpWWGdFMUJtQVZ6ekVhQUk0RWFZei9ZREtrNkZ6cFhjTUhQUGt6bktDQ3RwOW9mZVp5QXdDRnlpQWtDbWV5UjFMcWRYUFdZMlFObUo1REtoRHRZZ1BiWWtNWFovNHRGaUN1QUF6OUJNNFIrLzBZMm43T0xkY2RCS2prb3lRQmpNOUExUkJiVWl5eXVuN0M3amw0TFQxcGp6QzdBWUFobVBFRXdrS0JxSURzRUM3OEk5cWMxakVlRStCNTMwV21GWDE0Mm11NnFjLzZ3QXhsd0FRWUlxZ3hqSFZhODhxSnd4VW1yd21tUFBseS9lcW9kRHlTejVYVWpZbTNGaXJhV3orNFdRU0taRVZxZ2lzTUVUYU9Pakd5b2FIZkZjTkZHbEJrTExERUxnK3gvSGN3L1VnUTdLcnNpUWc0cVpIbTIwZTZXMlp4eFNMZHB2SjJkK3dyczlUbERMQTBHa1VVMWR6UVR1NkRpR0pMTlkzd1d0QTBNcFB1QlM4SE9CWUVFODR0L1F0SDZPS3VYUWY5UjhQWlRhWStzWXZiK0JZWXpNUEtrZlJUbFBtSThIeHpNUUFiMTRNc0V1NUpRM0lMN3k0aUQ4MGhqczdoVlRPOEI5MXRvdDJwU1RNaEFCalNRL1hNVTVWZkJkN000MkVJSWw3Rm01UnlqSlh6aXo2Q3V0dlBjTjJSNi9VVFRoOFg5SDZmVitSdXFHYUEvVHE1K2dsNEZxZlVOTHZ6NS9hUUNKQTVLSmxvVzdHUXpReEltWStqNjFvWWp1TmJOMkRjTEdKaUJlSndCSlRCMFFRclczYkRDL3FBc3dwdUd0U1hNT2NqRWZoa2RvQ1BBWFdQSExFdnZuZTlqY2o1aUFlZTdoS2hxZThieGE4TDdXdXZpS2ZmZG5SLys1ajM2MG5PZVRwaE1pZ3hBWUpWNGFveFdGb1RLbFVFR0JuSUkwWDdaakpjSFZBbWIyRC9qZnpiUnN1OG9XZCt6dXNrZ2kvWWcrNTJqSWQ2SkdXWVFnZXlCUFpYTzNkQU5Gd2ZSZFRFbStUdGFwUjhSeko2UjNlaDB3ZlkzZkdiZmViZGRjK3pMVmxGckk0T3FEV3FEd0FLZ0E4QmJ3ZjhuS1FWQzYxTlVNNTloMVNTME90QWZ2WmlpOVFKTXNMaHRHY2tnTm5OUS9qTEtkMEE4aDVBWHFQdC9EOTFQRUZPbUdYWUpjUmxpaVRhalpncjNhYkpkaC9ST3hHK2hQRVdJY3lpOEg1cDNJMStrYnFBLy9CM1dyb1U3YnpqQW8vZkQxQkd3N2JaUE02eU9wQ2pPb2FuK2xmN3NCMmxQUVFSNnUwOWdaT1JrSEREN0p0VVFxaUdQU1JhWURHWlBGb2Nad2t5cit4Vy9HUXdyakVJOHJoV01aWUtWd09kZGZNaGQ1OFRDM3JscU1weGZ1MmdhVVFTamN0MFdzRmNYMGl1YWFKZktSUmEwSXFObE4zNWc2UDZ6TG4wTzdDR0RvOEdlRVlNOW5SREc2TG5QenVjM2JaemlvZVpBWHFieHNLMVZoT1hEU3BqWkJhWENSOHowQm9jNWxyaXpQSnE5dlN6dDBpb1RPeTFqVUduMjBXbS91NzNCdHJmYTNEK1l0Wk96WURUWmEzcFZtQnMyOXJ1dGtzck1rQmhQUWIrNHZoMStUekJsQmxtNnk0eTNKMk9GMEJhTFJyMllTU1YzUGJqcUtWK2JtVnYzVThUZWtaZ0Q4ZG00MzAzT0VBT1kvUnVSNjJtMUN0QTgxWDRJVTlCVW15bGI3OGZLWmVRK0xIL3laUlREVzZtYi9lRFRpTGVUMnFNTUZvYk03eDZ5K2hUSWZqVFcvemd4bllzREZpNmlHWjZDNmQ5b3BZenh4elM2aW1ad0JHT2o5MU9IMi9EZ1pJZFcrZnNVNmUyME9yRG5vUk9wZFNXblBnM1diTnBIdHJleHNEQkNxelhIeUNRMERpSEIvUFJHeGlaWFlQVmVjdk1RTXI1ZkdoblYrb1Y1T3kxRURuRkEySEdsd2x1aUFjWmh4aUV1N1RYWmZVTEhoRUtYRTNoYTVheWlobWhHQTlSWi8rVEdiN2puNzhqOUVTeGVIQ3djRDJLWVJUQXJrb1hudVBqSkFIMkR0b0tsZ2lVeVdQUkxKenY2aDFnRUZxZlovOGgyL2MwSngzTnFVWkp5QTJaNmhkQVdJL3lyUkxkVDhFekhOc3VnMHpLaWFXZUtlZ25HTFFNcERPYTVjaVRZeWJVTGkyYmRNdjVHblhXaFlWZUR1bVoydHN4T0c0MUsyYUdXM1NEcEpSWTBJTmg1WUFnREJ3TDNySXI3RnFrNERVdGdCakcrbWV4M0luMFJNOGlDZmpOZ2NHREE3Q09RYTVDOWlGaThEMXRZajljZ1FXZmlFdXJwOStMVkg1SEN2Wmc1K0J6OVBpejBsN0dPWDREOEZocGJqc1FoUmlJVzc2WVovZ0lwM29YVVlNMzFwQkxtNTJGUVFYdHFQYTN3djVDL0ZET1ltWWJUbnYzYnhQWU9lZ3NmWWQyeE1Ld3lnMnFlbGoyYk9oK0w2eTlvdDBSYWZSRzVCdVZ2NEhvWXhQZEx1dzl3M25oYkhYY3dRSUlpUXBGZ1dBbDNzTUFROFlqZzlpYjdya1FZaVlVOUg3TjFMaEVFalhEUTlZdERmMzgwUHROcUJjOUFJKzBJMlg4cHBYQzVzR01kSVFseFNCU01HbENZTVdnMGJkYTh2b1UrN2Rud0RKMElldzdvWTJzYWY5cnFrZmh6dlZrbm04emd6R0RoVEFFUkVZTlJaZEVmYXV0WWwxZW54SFdHeUFmY0xkdGZ4ekY3VnRtMjgvcDlzU1NtWk9lNGN3NFlCemxHUHd0My81Y1F3cHN3dGcxckptSVJuaG1DZ2FBVEttWTBkZHZuOVR3b09Rdm1PVVJhVFF5WEkvOFk4RlZjRHpCMEdNNnZZemc0aGJYSFA1TW1QNU84V0JJVGg1aEJOUTkwZm9HeWZTR2V2d2kyQzI5RWQveEl5dllGREJlUEJrcENBbkdZWjdCNEZtWDdNOERsb09zdzdTYW1rcm4rTVhqOUZMcnBlZURIMFRpWWdXZG9qWGFvNi9jU2VEYkQzcTFrYjJpWHgrUDJYRktNaUo4bTJEaXhQQTAxNE54TXRsbU1KMGpiOXRuWlp4eG5ET2ZrQkJRQ3cyR2poY1ZLMDJXeW5nVmx5ZVl4VEhCY0N1RUNDNHpXV1ZuaTNtUzZyd2pjT1plNXZzcTZPc3IyU2VJeEJwaTRidUQ1eFFHN0xKbTkwTUZTTUNSd2lTTFNtNm4xand1VjNydXl4YzBza1VSck10RHBHaWRNc1pDQy9hcXl6d3E5TWtVcnpJMUdBb3hhMEU3YTQ1V3U3QS8xSjJQZGNEOENCS3BFdTlTT25NUEw5ODN6NXhOdFBTc1JHR1lvQWtqZ0VnbS9aOTlRSHk0amwzZUQ3UjlVam1BQ09CV0pROFRpUGx2KzJmdDEzQmJFNllRYUNEWHVodGthaXVMTm9OZVF3bjVHQ3FOWVBzbXlJOGFJUmFMdVE2NGJRaUVRaHhsZ0VleG9USy9qb0p5aDFZR1JTUmpNQzFFVEFrK2tRRXhiVUg0WGhCa0lzN2hLcHBZdncyd0VyMW5pbURXQUVTSU1lbUEyU296UFIvNThZb1FFdUFDRFlKY2dCM09XT0hBZFFmeDdhZlBxOE1GcVVaL0VhRUFLd1JaN2ZlWVhLeTBldWRLeUdwc2FWa3pHU050Z0JPVElwcHRHTTJBTEtYRUFtSGZSdUtCZ2lmRkVCbG42bHNQL2tPdUtZUGFVb2V1b0VHd1lwSHZxeHI5ZUs5emtNRFMrVHpTc01Eb0pBdXoyckRjT2gvbnZLc1ZuV05EeExRaVlwdDExaXpKZms3VFZ6REtQTVNBQUJpSHc0TjQ1dmVUaFBmNlRXOWJ5bExKZ3c2REN6TmlaVE5lWStIcVdIaExHOUVKTjNZaVU3TUJJYWE4UmdTQWxFb3RmcUo5MTgxMzk0MWZRN2IrU1FNWlZBWVprbUxXUnVoaHR5Z1FoMUJpTFZJc0RqRXhJZ1BORURRZ0RFcEFJQnJsdXlFMkRtVENXaUIrZ0pnQWRqQkhNRXBLSWNRajBhT29oWmc0WWp6R1d5SkFpVUNBSFVRTU5CMGtSY0VRYmJCYTRpUi9pL3dIM0Q1UE1wZDJ0NVFBQUFBQkpSVTVFcmtKZ2dnPT0iLCJzdXBwb3J0ZWRFeHRlbnNpb25zIjpbeyJpZCI6ImhtYWMtc2VjcmV0IiwiZmFpbF9pZl91bmtub3duIjpmYWxzZX1dLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJGSURPXzJfMCJdLCJhYWd1aWQiOiJkMzg0ZGIyMi00ZDUwLWViZGUtMmVhYy01NzY1Y2YxZTJhNDQifX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMTktMDktMDQiLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IkV4Y2Vsc2VjdSBlU2VjdSBGSURPMiBGaW5nZXJwcmludCBLZXkiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDE5MDcwODAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4zLjYiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMyJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAxOS0wOS0wNCJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMTktMDktMDQifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyI4NWY0NGY5ZmYwZjNiZTZjMzczYzIxMWUzNDZlMmU2YmM0ZWIyZDVjIl0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjg1ZjQ0ZjlmZjBmM2JlNmMzNzNjMjExZTM0NmUyZTZiYzRlYjJkNWMiXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkFDUyBGSURPIEF1dGhlbnRpY2F0b3IgQ2FyZCJ9LCJkZXNjcmlwdGlvbiI6IkFDUyBGSURPIEF1dGhlbnRpY2F0b3IgQ2FyZCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxMDAwMCwicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfSx7Im1ham9yIjoxLCJtaW5vciI6Mn0seyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQ1FUQ0NBZWVnQXdJQkFnSVVGLzB3VFBQNkZFcXhwc2liSmlMRnREajRxaHd3Q2dZSUtvWkl6ajBFQXdJd2RURUxNQWtHQTFVRUJoTUNTRXN4RWpBUUJnTlZCQWdNQ1VodmJtY2dTMjl1WnpFU01CQUdBMVVFQnd3SlNHOXVaeUJMYjI1bk1TTXdJUVlEVlFRS0RCcEJaSFpoYm1ObFpDQkRZWEprSUZONWMzUmxiWE1nVEhSa0xqRVpNQmNHQTFVRUF3d1FRVU5USUVaSlJFOGdVbTl2ZENCRFFUQWdGdzB5TWpBMU16QXdPVEl6TXpWYUdBOHlNRFV5TURVeU1qQTVNak16TlZvd2RURUxNQWtHQTFVRUJoTUNTRXN4RWpBUUJnTlZCQWdNQ1VodmJtY2dTMjl1WnpFU01CQUdBMVVFQnd3SlNHOXVaeUJMYjI1bk1TTXdJUVlEVlFRS0RCcEJaSFpoYm1ObFpDQkRZWEprSUZONWMzUmxiWE1nVEhSa0xqRVpNQmNHQTFVRUF3d1FRVU5USUVaSlJFOGdVbTl2ZENCRFFUQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJCd1lnS1Z3akNWNitsdjdnbnBGRVJ6VTJ1TkQ4Z2RFa1BDTmNzL3ZGRHMyc0s0Mkp1eG5oRm5JZ01CMkR5VTBJclhJTGpmLzJYVDBZU1RkMXNQaVRTYWpVekJSTUIwR0ExVWREZ1FXQkJUblFhcnBkU3Q0c2lkN1ZqZk5JTElIcmIyUG9EQWZCZ05WSFNNRUdEQVdnQlRuUWFycGRTdDRzaWQ3VmpmTklMSUhyYjJQb0RBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUFvR0NDcUdTTTQ5QkFNQ0EwZ0FNRVVDSVFEY29YSjNyek5NQS9mWmtoMDhQb0ZyTXg0M0dZTWhaTWZMUHcvM01mSnBHQUlnZWN0S3dtSllNOUo4U1g4eC9hUVY0aUd2S1dvQmZyMVhQVEFNWE9oVkVZRT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBREFBQUFBd0NBWUFBQUJYQXZtSEFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFEc1FBQUE3RUFaVXJEaHNBQUFpY1NVUkJWR2hEMVpqUGk1VlZHTWY5QzlvYjZESm9JUWkxaURCd0k1UWdFVUVsdEJKMFlTQUdFdVJDRkJNeElrbENheUZJUWlhS0JaVW9sWTdRTkpNNjNuR2FjYTZqNDB3MDA0ekJNQk82TEU3bjg5ejdQZk84NXozdnRkcTUrSEx1ZlgrYzgvays1em5QT2ZldStQdXZ2OExqTERQUUdoNE83Zkh4MEdvTnA4OVZ0YTJkbkp5c2FYcDZLbWx1Ymo2MTB2ejhYRmhZV0NocWNXblJ0TFM0RkI0K2ZCZ2VQSHhnNHJNWGpMNlZEaDQ4MkRYUUJVOUdZanZlYmljMXdRdTRCQSs0UHMvT3pqYkNtd0ZuNHI4b0dSQjBKOW9kSmZoMkhYNHFnaUlQN3dVODBLWG9lM0NEZndSNEhuV0ptZXBwb0tOMkRYNTZxcHd5dEFEUHozVWkzd3NlNlA4TDdsVXhrQ3NIUjNuVUJjMW5xUVR1NGIySkV0Uy9rUUpRTnhEVGhiUXB3UU5INitIVkNwcnZ0TXhDRGsrZUx5NVZvWHVaS00yQW5pOGFhTXAzZzQ1cFkyMEdqNEJWdnVmUjk5R1dQRWhKdlZMSDkwTXdzaG5vSFhrQmUzZ3ZENTdETTFndmFOUUxIRlhoRjIyTVpDQ0hSb0I2QVZtQ3o5TkZzdExZTlZDQ3lhK1ZwT2NFVG45K2pFWURPVGlMOTkrQ2w5SUc1WENLZUsvSVYvcm85dXZIS2hwUW1RU3lHSEdYNTdNLy9CQm1QdnNzM051MUs5emJ2RG5jV2JldXByc3Z2SkEwOGVKTFlXYjM3dkQ3b1VOaDRjS0Y4T2ZNVEJHNkJPL0JwWm9CYlZDK1hHcHhvdGxyMThMMC92MEdNdnJFRTJGMHhZb3crdVNUQmpyNjhzdGhkUHYycEYvMnZ4ZHVmZnh4NVJvYWYrNjVNUGIwMDUxM285cXJWNXY1KzZkT21TRVBMZkNTQVFwSHhRRFJWVnVKZUV5Vlg4K2VUZEMwZC9ic0NhMVBQN1VqU0g5L3Y3V3FaRDRJRERJM1R3cE9tK2lQNjlybGh6Ny9QQXp2M2RzeEh3T0JvZWszM3d6M3YvMjJZcUFFVDFzeDROT0dCeERndDU5L1B0eDk0L1V3OGNreGd4dzhjc1FpT2ZMc001WTY5Ni8wZFFhTFVmTXA0TVVZWEtmTjc1SFhqQVVEaHE2Kytxb0Y2dGFxVldFbXpxQ2dsYnEwQklWM2tnR0Iwd3JlOGpvSzZOWTMzNFNibXpaWng3ZlhyQWwzUHZnZ1RBeGR0M3NNVEtlYStnNVUzWVNYRE9tNzNrVkFEcmRhWVhqclZodVBsSnNmR3JMclloTm5NcEJISDBCZXV2WGRkK0hXSzYvWTFKTG5ZeWRPZEUrdUxYdWVUajJJNUFFVmRWM3o5Mmh6MGFjMEV0TnpaUDE2TXdJVDF4Z1hrWXFWR1pBd3dJTzI2Q0k0RVNEZkJ3WUhESno3eWs4R0ZBaXRwTzhlTnIvdnhYaE4rUTdUelpnSnNJd2RPSkJtQUJVTkxJNk5wUVU3L3U2N3RraEpGYnNYQjFHTkoyMm0zM2tubFVoS284b2lmZDZQcGxWYUtaMUxzVjhCczBoL2pRSFNQY2JNd2VsZllteXFtaTN5ano2eTcyUkx4UUFQOHFLVnVGZ1JicDQrSFFaajFNbHhyaWY0S0VCWkMzVG94VFVBUy9jSUNBc2VVN1Y3VVVvUndWc2JLeUJzQXJhc2lQMndSdGl2S2daNG9iMWxpejB3MU5kbnVjNTFIM1hnaVRDUjE4QTNObTRNd3c2SzZxVFByYlZyTy9kaW4zYXRXeXJUUFJhcXJzVm5WQkM4WkNDWmlNOFB2dldXUFpzTUFNOG1SVWZ0a3ljdDhsd1R2RGVCQWFhZnRVRkVXQmQwWnVhN2NHamtxYWZTL3NDMG16RUhhOFVnaXBuR0NDSmRjK0M4dFQwb211ZmRpZ0dtbHR4WEo4dmduZE9rRnFEMDI4eHZkdnhtVVpWU0NtRGdGN3Q1VDU4VUE5Mm41ak11NGg3UGFxMTVDWjZxUTZBbXZ6aGw3OE5aTVVCMFdPVTJxSXU0b3A2TFJjbXVtZElqVXpMUVBVcWpoUWpobjJlOUViVGZ2L3FxQ0M3eEhYaGFNb1IzTDEyNmxCbUlGNGtRRC9sMFVkN244RTNnRXRPTUFmcTJXY1JBL013QjBLOEZpVVVzZU9UQlUvU2pPQkh3L3ZuejU1Y05BRXduMTQ4ZXM1UXd5SWJJODd4Rm5vRXh3VHFJeG0ybmRrQ2FBYUJ6QWNhUjVPZFlwbGtyNmtzcHBHajdWbUpqWmF6S0RHQ0FtbnpqN2JjN0cxVUR2RVRkWjFBcURQOW1jRkRqMkZFeEVNRms0SSs0NEVnVGlUTVcxeW1GN081Nmg3d20ya0F6QS9UcjRaVSttTDk4dVcvWkFHbGlwVEZPRFMrWERQQ2NQays4OWxwbjBQajg1SlVydGhHbHRIQ3BSWVVCdnJRdmtESVlTSDFGRVZVZjhhbXBaUU9jdlJoamZNTUdTNTlLRlFLWVNzTGdiTnVQbWdGK2pIZ1lMOUtpYVgzb3BObDBEd01HbmtVZWVCWThzL3I5dVhQMkhMTmJNUUFZMnorZFRaODVVd0gyMFpmNEpaYWlIald5Y3FYQkU1a0pOc0s0aUhVUGFBQkpFV1lsdjBjcUFzVzdIaHhaMnNSeE1DQjRuaU4xYXdiUTVMWnQxakdiandjdWlmVkNKQUN6VHJzQVdxaDg1NTZrVXl6UDhCMFlxUVlmVTFNbllVdWJhUHppeFlzR3pwaVZHY2pCeUU5ZXBFYVQzL2w5aEdtSklxQUtrNnZwU0tDV2RhQmZiRGs0bFl3RkMveFA4YWNzMEFTQmRqaTJ4UmxBWEtOZTIzRWhUakVMdlBKNzFZa2FYNE9PY0VBelE1TGdVNVhoendPbmUvdjJwZkV3SUhEU2k3TEpid05tVFNZcUJqeTROMEprMlowdDEyUEg5dU9iMzZzTjRCTHd0SUwyRWFmMWFjSVppQlNaMkxuVDloTkxxYU5IN1pESXVCeWpsVzRHSDFNTmVOckdGTXBGQkc4ZS9yRHo2Nmk3OERERGIxYU95QjZlWnkxdDNGRllBanB2MGRVdnoxa0JFRFRDV04vWFgxdkp4QURRRXZBMUE3Mk1LRjBZbEttOGZ1aDlHeXp0b2xGc2hLd1ovWlltSmRpd3ZEaEpFbWxFMU8yRTJuMmZ2a2lYL3VQSERWcmdnT2FSTHhvb1FhdE5jb3VWeUtsakhRdUltdVZyQkpQSWEvOWQ0dG1yTzNhRUh3OGZ0bHdIbUNyRERpdkFsTy94QjR5dVNSejVINWxDVGZCZVdxd3lwQ2dSdlpMSVpTRFJ3T0NnaWVjVkRGcEpzRjZBNjNNeUFLRGFHbmhVTDNCYTVUalNRa1Y1cm52WjMva08xZ3U0UEYyUTRBbEVaUVlFbmtlZUt0UlU0L05LZy9JcWt4OEpKUDB6VjRIdWJsQUczZ01lWVlDMlprRGdncytoVTRYcGl1K29aTUFiRWJSYUQ5NkJYOTZjZXNFcjh2cGNNZkFvZUVtd0F2YzFYdktuU0s4NitITE9HM2dCM3Y2UDZnS3J4UVRYaXdieURVcXBvcWpMZ0lkSEFLck4xVFBmSXpTUkwxV2FFcnhhRm4vTmdBZjNLbTFLT1R6ZmMzQ1U1N3VpVGl2UWtwb2lUeXRWREpUQWdiUElad1lFRDJBVHVJQ2JCSlRhWEwzZ3VWY3prSU1yYlpBSHorSHoxZ3M0dFFhcXlFY2crL2M1U3hzdFRyOUkxUTRNRENab3IwWURBczl6SGxXaTMzT3hsdk1lS0xVbCtlaVQ1NTIybWpwU01zQ0h4MU1Id3o4Y2VIeTdFaFJ6NVFBQUFBQkpSVTVFcmtKZ2dnPT0ifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMy0wNy0yMCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxMDAwMCwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJBQ1MgRklETyBBdXRoZW50aWNhdG9yIENhcmQiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlUyRjEwMDAyMDIzMDcyMDAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIzLTA3LTIwIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEwMDAwfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIzLTEwLTAzIn0seyJhYWd1aWQiOiIwZGIwMWNkNi01NjE4LTQ1NWItYmI0Ni0xZWMyMDNkMzIxM2UiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjBkYjAxY2Q2LTU2MTgtNDU1Yi1iYjQ2LTFlYzIwM2QzMjEzZSIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJHb2xkS2V5IFNlY3VyaXR5IFRva2VuIn0sImRlc2NyaXB0aW9uIjoiR29sZEtleSBTZWN1cml0eSBUb2tlbiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxMiwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfc3Vycm9nYXRlIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjYsIm1heFJldHJpZXMiOjAsImJsb2NrU2xvd2Rvd24iOjB9fV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUJ2VENDQVdPZ0F3SUJBZ0lDRUFBd0NnWUlLb1pJemowRUF3SXdYekVMTUFrR0ExVUVCaE1DVlZNeEhEQWFCZ05WQkFvTUUwZHZiR1JMWlhrZ1EyOXljRzl5WVhScGIyNHhJakFnQmdOVkJBc01HVUYxZEdobGJuUnBZMkYwYjNJZ1FYUjBaWE4wWVhScGIyNHhEakFNQmdOVkJBTU1CVVpKUkU4eU1DQVhEVEkxTURJeE1USXhNREkwTUZvWUR6SXdOek13TVRNd01qRXdNalF3V2pCZk1Rc3dDUVlEVlFRR0V3SlZVekVjTUJvR0ExVUVDZ3dUUjI5c1pFdGxlU0JEYjNKd2IzSmhkR2x2YmpFaU1DQUdBMVVFQ3d3WlFYVjBhR1Z1ZEdsallYUnZjaUJCZEhSbGMzUmhkR2x2YmpFT01Bd0dBMVVFQXd3RlJrbEVUekl3V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVM2blR0SUl1YVV4dlh6cDBJQmtlSXprbVF5S1VaNnlxdldGa3JRZEI3SEVnSm42NjRNc3djNnI0V1NMNkRyNzNkb0xLRVJDVGhmd1NjeStRR1hmZDdob3cwd0N6QUpCZ05WSFJNRUFqQUFNQW9HQ0NxR1NNNDlCQU1DQTBnQU1FVUNJQyswQk16K01lQUU3dlAvdjFuOEEzTnNUTFBMU0YrQnhjaklNbFV4NzNqVEFpRUFvOW1lM3pYTmhqZXBPNEcxdXZ3SUVpOGozUmNoN0pWeERnek5LY0NOZGFvPSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFFQUFBQUJBQ0FZQUFBQ3FhWEhlQUFBQUJHZEJUVUVBQUxHUEMveGhCUUFBQUNCalNGSk5BQUI2SmdBQWdJUUFBUG9BQUFDQTZBQUFkVEFBQU9wZ0FBQTZtQUFBRjNDY3VsRThBQUFBaEdWWVNXWk5UUUFxQUFBQUNBQUZBUklBQXdBQUFBRUFBUUFBQVJvQUJRQUFBQUVBQUFCS0FSc0FCUUFBQUFFQUFBQlNBU2dBQXdBQUFBRUFBZ0FBaDJrQUJBQUFBQUVBQUFCYUFBQUFBQUFBQUdBQUFBQUJBQUFBWUFBQUFBRUFBNkFCQUFNQUFBQUJBQUVBQUtBQ0FBUUFBQUFCQUFBQVFLQURBQVFBQUFBQkFBQUFRQUFBQUFCYU5zTjBBQUFBQ1hCSVdYTUFBQTdFQUFBT3hBR1ZLdzRiQUFBQ3ltbFVXSFJZVFV3NlkyOXRMbUZrYjJKbExuaHRjQUFBQUFBQVBIZzZlRzF3YldWMFlTQjRiV3h1Y3pwNFBTSmhaRzlpWlRwdWN6cHRaWFJoTHlJZ2VEcDRiWEIwYXowaVdFMVFJRU52Y21VZ05pNHdMakFpUGdvZ0lDQThjbVJtT2xKRVJpQjRiV3h1Y3pweVpHWTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5MekU1T1Rrdk1ESXZNakl0Y21SbUxYTjViblJoZUMxdWN5TWlQZ29nSUNBZ0lDQThjbVJtT2tSbGMyTnlhWEIwYVc5dUlISmtaanBoWW05MWREMGlJZ29nSUNBZ0lDQWdJQ0FnSUNCNGJXeHVjenAwYVdabVBTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM1JwWm1Zdk1TNHdMeUlLSUNBZ0lDQWdJQ0FnSUNBZ2VHMXNibk02WlhocFpqMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzlsZUdsbUx6RXVNQzhpUGdvZ0lDQWdJQ0FnSUNBOGRHbG1aanBaVW1WemIyeDFkR2x2Ymo0NU5qd3ZkR2xtWmpwWlVtVnpiMngxZEdsdmJqNEtJQ0FnSUNBZ0lDQWdQSFJwWm1ZNlVtVnpiMngxZEdsdmJsVnVhWFErTWp3dmRHbG1aanBTWlhOdmJIVjBhVzl1Vlc1cGRENEtJQ0FnSUNBZ0lDQWdQSFJwWm1ZNldGSmxjMjlzZFhScGIyNCtPVFk4TDNScFptWTZXRkpsYzI5c2RYUnBiMjQrQ2lBZ0lDQWdJQ0FnSUR4MGFXWm1Pazl5YVdWdWRHRjBhVzl1UGpFOEwzUnBabVk2VDNKcFpXNTBZWFJwYjI0K0NpQWdJQ0FnSUNBZ0lEeGxlR2xtT2xCcGVHVnNXRVJwYldWdWMybHZiajR4TWpFOEwyVjRhV1k2VUdsNFpXeFlSR2x0Wlc1emFXOXVQZ29nSUNBZ0lDQWdJQ0E4WlhocFpqcERiMnh2Y2xOd1lXTmxQakU4TDJWNGFXWTZRMjlzYjNKVGNHRmpaVDRLSUNBZ0lDQWdJQ0FnUEdWNGFXWTZVR2w0Wld4WlJHbHRaVzV6YVc5dVBqRXlNVHd2WlhocFpqcFFhWGhsYkZsRWFXMWxibk5wYjI0K0NpQWdJQ0FnSUR3dmNtUm1Pa1JsYzJOeWFYQjBhVzl1UGdvZ0lDQThMM0prWmpwU1JFWStDand2ZURwNGJYQnRaWFJoUGdwaTU4Z1NBQUFQVDBsRVFWUjRBZDFiQ1hSVTFSbSs5NzczWmlhTFZDa3Fva0ltRTZFdXAxWkxoVWx3QVJJQ1NHbkxFZWpSZW1vOTFsYU9DNXJKc0xUS3VCS1NBRnFPUzdYYTRqbHRQVkJiOTRVbFVTRUxDQzZ0Vk5Ga0Fpb3FSVVZKSnNrczc5MSsvNTE1eVNTQVpKa1pPRjRQa3pjemQ5NjczM2YvL2I4eWRrd055VmtnSUk2cEpXVnNNUkxndTBieWRkZUgzK0tMeEs0WDNQQ0IwMTFXZDFFbWtSNTljU1B3Z1lCRm9FM1g1NnM1RjljcEFtYXYwVEpCeE5FbElBbDhmbm45dmNaM1Rwbkx1UHdxRThEdForajJSY2IvSm9GMyt4dnVFN3JyUnF2amF3WkRrR1FMMHIrcW8wTUFHVHpPSkdNQmxsL2VzRUk0Y202MHdtMWg0VHpPbVg3SVBaK1FlUldJZzhjcXVIU1gxMWNKWjg3TkFHL2lQZFlpbVpRc281dVNXUUtTd09mN0dpbzBaNDZ2R3p5VFhIY3l6dm0zMVFiWXZwMUxUM25kM2R5UnZjQUt0OFA2cTUwM0lmNE9NL1JsTFJOdGR5b2hYVHRiZVlhZUFwdjZkeG1TQUlBUDNBNjloOWo3NisvZ2p0ekZWb1RBSzRNWEU4NWMzUXEzYmhLZHc2WUZsNVY4cldBR01tTU1NMEJBQWp4OFBjUitpV1prMzlvVGZJNWhodHNhUk9lSkpVMnJ6Z2puK3hzZUxGalljQWtMY091U1FHM2E3VUdhWFE2QngwNENETVQrOTl5UmN5ZkVYa0lTYUpPeDh6a0diTUNXa0d5ZHZMZTZOSVJZNEZFdForalZVSVg5M0JJbHpjdkhiLy9odGR1TTdRK1BqU3FwU01OTEdpV2dHM3krcjM0Uk43SVQ0QlVLRy96ckJyZEtDTHpIMy9BdzdBQ0JqM0ROY1lJVTFvYUNoZlhuRVhnaUlRM1kxUzNUSkFIZDREM2xEWDVtdUpiSmFLZnljWkFIR0x3YzZIem9EU1ljazRMTHhuNE5zYjhmc2NBOHF4UHVrRE1OaTRveHphRkxNN0xmWW5MU3JxcWl0OUlsQ1dtUUFJQ2Z2UmJ4UGJlUTJKUXh3OWtUdkVPQmZ5dW1tY1VFM3UydnUwK0JwMWdBaVFCdEMySUJEZUJqWEhlY0lDVGY2UFkxZmo5ZGtwQmlBaExnMTg0eDgvMzE4NFVqcXhvN3J4Q3BuU2Z3a2ZaL08zU3QrTU9LQy9kN0VBaHBSaTVGZ1hZZ2hNMkhzOUIwK2l0a0RDUVl6cUZ3SGhzOXZycHppSVJVRzhaVUVoRGZlWUIzbHpmY3dEWFhTaGtqOFBpUHhGNkJiOXNoZEdmeGUwdkhmUUdDN29GUjlNVTlnb29GeUUwU1dWRnB4VDdFN21OdFJFS1lKR0dZNUx5bW9LenhyRmNDRTJPcEpDRjFCTXhlSTVqYSticDVRbmY4b1RkNE14SjYxMktSNHFhbDUrK0R0YjlkR05tTEZIaFZDSUhrSURTbTdBQWtHSkpiTjJEM245U3loc1RYcDBod25tZ0pxL1lNZjhPWnFTUWhOUVJRN2c3d0hsLzliN0R6OTJQeFNUdWZEYkVQN1l4eHEzaFgxY1RQbERzMHNtNVQ3akFlR2dNOERTSUJ3aUkwSmkxNUlGamx2Y3pzT0ZBTHo2QVRMMHlSNERySmxLekc3WDk5VEtwSUdEd0JzNlVDN3k3ZmZBM1RIUThwOEl4WlN1d05BdC8rZ2VDaStLUEtDWi9rKytvV01MaEQ1UkVJRk9XRXZZYVVGQjFyTHZvNEVwT1h3ajUwa1FDcGdqbzRoek1yV3B1L2FOUG9WSkF3T0FMV0VIaHV3dFZkSlRUbkk5SlM4UW9RU0VzWVdib1ZiVy9HYnBZMFZZNy9HR252emR6SXFwRFJEc0pHZHVFZzhQU0ZZb1VMR0VYR1BsNVoyR0hsREo5dVJWcGZvM0NaUGlNU2hPRTZoY1gwR3MvQytvTEJrakJ3QWloTW5jUE5Bbi9qbFV6VC95d3RyRmxpNXdFZVFBRytzOFdRV2tuTDhxTGRibC85OVRCa0syRFFBSUhUbkQ0OTkrekFEc2V1Z0x1ek05c3hEWkpRbDB3Q3ZNT3AwbVMxQmVWMW5zR1EwS2VGRVBQSlExbGhXR05FZUpkTExoNlBneWZaSmZBdUhidThtMnR5eXM3cWNTMGVmK08xUWpkV2RhbEdIOEhUODNhd3MySU1VdlpKWUd4N2F5ZzgxUXkzTm5hUkVJVTZHSzdUb0dzMVkzeGIzQU1sb2Q4RUVIaDZHTVIrTHRPMHZ5cWR4UXNLUEFudzRZOWd4VXViS3dxYjh2Mk52NEpWK3lQY0d1SHA4ODdUWkRWMnJPVWtaVVRDdmdjbXRqbTRuQUpKMk5xTGhKRlJZZFhrelcvSUd3Z0ovU0xBQnUvMk4xNkduWCtDUWpiOFE3U0tDN1h6NFQwbVo2VXRsUk4ySXNLN0VpN3RzVGhCQXdCdmswQi9FeVRzckp6UXlrUm9Da0xtN1QxSTBGMTV3bUExK1FzMmord3ZDWDBtd0FhZlg3WjVGcXpYV3JVK2FTbndFRVVOeHVsVEliVFMzWlhlZDBrNkVOSS9IaWNJYy9vaDlzbTRlMXduU0tCNlFVdzNTOHpPdGpjcHVLSTVVRGxTQnplelJJM25sbGRQN3c4SmZTTEFCcC9ucS9zSkU5cVQ4WWpOQkhnNGI4TUo4T0c5c09tbFRjc3UySUhFWmhiazRnbXk1dEFLc3VaOWVrWVBzSWQ3a3lDQnd1aW95WW9SUzd5ZFRBSThqMGNLbzJiMHpmV245cFdFSXk3T0JvL29iWWJnL0NrdThCT3JCL2g5RnJPbUJwY1Yvc2Z0M3p5VFdmSWZhbzQwS2I1UGZYT0RTSUFkZ292OFVwY0dTQWk5SXh6WlNoSXNTQUt1QzJJYXJ4bTFlTnNwZlNIaEd3bXd3WHZLR3FZQnpOTmM2TFNwaVoxM2FGWXM4b1ZnZkNxbHE1Nnl6ZE5ReFBnbkpUS1lrd0N2WXJqRDdlZkFQNGNSSmhMZVh6NzJjeGtWeFRMUzhkOXVFdHBSYThnYXJVVWpOYVBtdjNaRUVnNUxnQTNlWGQ0NFJRcjVMRUpVQVd0T0lvM3FyUU5pSDlrdk5GN2FWT1Y5QTZXdVlpbTBwd0JlUzh6QnpxY0p2RTFiSWlscXVXLzgzbGcwV214Rk90NVRKQ0RFUXZSSmt2QTlZZWdiM1RjMW5reVNRSVRaUDAzK2UyZ0NFTnZUajVDQ1R1TE1laDQ3bndDR29yVU9uVGNqQjVDeHc5V04zMTdnUS8yT3M2Y0IzaUZOSWlnTllwKzg0cVJyVzhSMzMzdlJwM3BNZ29UMlp1N0lJclVUUklMbXlENlRPNnlObzh1MkRXTkV3aUg2alFjVEVFQ1Voc1FtcjZ5K0ZDbm9Pa3JPMWE1S0dETUJBMEJpcjdGTGdoVkZyM3R1MlhxNnhlVXprSWhzZ0kvQ09LWi81NU1Jb0V1YmhQZFhGdTZSRVZFRU94RGttZ0ZjWEpFQTczQjJURVEya1dFa1hMM1BIeHhNUU9JQk1IZ2s3ckhlRVRzRW0xdFJxY1NwZWNnTGV4RFNWeXF2d05EUm9YamdLQTZoV1I0RVpFTmdxS0NCbEYxaXhGZmtpb3I0bW5zdjcyQUNVTW9pVVFsV2V6Y2d0QzloVml6TWhhR0JDQmg3eStLNk1aUUovbXFCcjg1TGJlM21LdTlkeU82V29Qb0RMbFJPbjFFU2JGdFZVRjUvc2RSNExkZGR3eENlSkxMUkxKM0ZPb042akUyZ25FU3BRS0lWYnhOeE1BSDBEVVNGYnR4U05XR1RrR0lxVkNCQ2RvQm9oZkV6VWJYTnNqaC9PYyszYVJ4TkQxWVYzZ0ZMZkJjTUQ1d0NTS0RpUmdaR0YzallJZXo1eThvT3hjSUlSbGtpSWV2WWJXcDhNcW1ITW9La0FyM0dvUW5BSkZ1M21xcTlyd0RQZExpMmFKd0UwQkFuNFRqQnRIWDUvaTFqNlo2UWhGc1JtQ3dUVHBBQW90Sk5nZzNlNDk4OEVYYm9KZWk5VTVvSWo0aDZ3MGtKMlI0ZVk4VzdLcnk3YUs0eWdyVFFYdU93Qk5BOG00UmdaZUZHcU1NTXN2S0tCQWk3SWtGM1FOL005UVhsRGVmVGZLak5RbGpmRllqVGlRUnNTbm9rb1FzOHZKU1VXZy93S2pLTmhqOURpRHE1ZVdWaGt6MlgxbmVvOFkwRTBBOXNFbHFxaXRhaFpqbERCVUtJQ1dBVEVpUTRqd2ZTOVhubGRUK2crY0ZLYnhuUzFsVWdBYld0MUpOZ0EwSlJkVEpjUHNDVCs0M3ZmQ0lzMzRlY3BMaWw4a2M3N2JtMHJzT05JeEpBUDdSSmFLNHFmQWtiaTNEWGdsTk1rQkNGenVtT29lQmpBOVh2YVQ3SW9sTDNROEtWUzAyT2cvU081Z3hrMklBSVBFVDlSWWk5MFFWZUJXZGhhcVJNb1p6RW5udWs1L1NKQUxxSlRVS3d1dWg1eWMyZmdnUkllRGNKS0hkL2wzTnJQZFh2YVQ0TTQzVklXeC9sOFZLV0tnalE1d01kTmlDS09oR0x2Z2hWTkZDQ1UrU3F5TlNNNG55Tk5jWHVJdEY2Ky9Lc1BoTkFON05KUUw3L0RJejl6NkRuQ1JMd1RrbUM4eVRVQ2RaVDZacm1CNnNMcnpFamJhdXBzb3UzZlZvUS9hNzNzTUdqRGxFQ3hRTjREZUJWV0k0OU1CQ2xSdG9zblpVR0t5ZHM2MjhMclY4RTBNSnNFcG9yQzUrQ0Fid3NUZ0lhRzRpUzQ2VnI1M0JMeWczSURNZlEvSlpLNzFYby9mOU51QVpHUWhmNDhyb3B5TEpld003SEkxUGNtK0lUcUVBSGwwaklsbnEzOUJjOHJhL2ZCTkNQYkJLQ1ZVVlBvdW83VjdYMDhFSlZmYXJhTXQwMWdrdHRRMzU1NHhrMEgrcndDOW5adXJhL0pCUU16MVhsTndyTFlXTW9KN0hCNDJtVW4wVERRcHJUNFlMckJnS2UxallnQXVpSE5na3QxZDQxRU1mTGJSSm9YMVQ5M25DZWhuaGtBMVZ0TVYwMjUzaC9iblcyL3FzL0pEU3RtaDVHLzNDcTRLdzNlSUVJTlFaYk1LT3Arc0pYQmdxZWNBeVlBUG94a2NBUVpHQ0gvNDQ0NlVycTZrQVZjRStRb0txMldTTVJNVzRZaGFvdGRZdEg1b1RuZ0lUbmprU0M0UEc0UFgvQmxrdGhaWjZEcSt2S1JzbjdJQjZoY09mSEZLNlRpZ3ptQUVVOFlTQTBneG5VSUVHbEJvV1RYekxEK0l0cWtQVG9FWFFFVVNtYVJQRTQxZnJiUXdlZTFweTVVK0VxMFVtUmljTVBGRFFoLzBUUnhaS3hjY3lVTGxTV1hvMjN5bFNhRFMxQU5vcG1BUEtjbVpDOFoyMzdNSmlsRDBvQ3VoNU1aU3EweUpxWGUxZERIYTZHWmFhdkVwTFFFZE9Nckh5c2ZiM25kMXRQM3hFNE94S055Vmt3akJzUkxHRWlUeHgvUWZZR080cmY0ejIvQXZPZnBmdkVyVDIrVUpJRkt5UFpyRlNCcDBXbVJnTG9UalFTVFZLMHg2OUJoL2dSaE12MEtRSUd1MVhXc1pQNmhOUXFPOW4zZGs0dUR6MlBPT0hpdUNRd1d4SXNWWDFTSlhjS05qQUFucHdNcW5GenllYWtZdWZWZmZHU0dnbXc3N1oyamtxbFc2cThmMkxSOEc4Um9PQWJhb09oT0JFdldJNUJkTHh1akgvemlMM1Y1NFo0cDVnSjhOVHlJdkMySk1SMTNFSWZtQVpIOG8wNmkyVG1GYWtHSDcrOWVrcEtYM0JRd2o0cjBEZ1BKTndmUHlVQ0RPcWdoT29ZdjJNeHZXUlgxUVdmNWMxLzgzaGhkTDZFYzBQalVPRk50Z20wKzBLcGt4Vzlxcm5TdTVvTUx1dGpoTmRYUkttVmdQaFRKYU5UbmxSVXFSei9BSXQwM0lSbUtlMGtIWS9XRWdYTGN3UXpYM1l2Ymp4NTE3M25mZVhReGFVNFE3QWQ5UVNTQkVTTTFFQUZlRWdRdk11djB3V2VscHRhRzBCMzdCb3dhblJZQ2tXSWVHdmN0VUsxeHBPT3pKalIwSnVhNWlxbFV5UElJVTZTUXF4RGMrTmNrR1NxYmxPMFl4NkNyUWVwTjZqYVkxMzNUdDFGT2lRZ3NUcllhNUlFRkZseDJtTWxLbXMrZ0V1U2hCQzhRODU1bGhsK2NVUlo3YkRtNnFML1dWS2JDdkE3dEt6ak5iVFhyMWZneWJET1VSS1JPdFJKZDBxakJOaFBnU1FFSUdrSWhPaUVDRnBaRlRDSWtBUFl1SzdEVTZHdGtSaWJSdDBlT3Y2Q3pLb0l3ZFZqNVBEak1wcWV3Z3F0TUFNRTBHT0loTnZ4TDJEQlJTNUdTZkZ1ZFVZb3ZnSWNuTXpWNmJ5d1lUbG1VcmVIUHNaY1FmUFZkUnBmMHFnQ3lhdkdEZ2FXNEY5QXdFWGVJOFB0dDZGMlNNRU5XUVFOMWoraVp3LzFvbjRmb0Y5UmJKOEo4UFNzREJGQWowcVFBTEZ1cmk2OEU3cCtCMHJwaVNveXZzVHhHU2pGY1RSeis0am5VbFpGb3Z0OTA4Z2dBYlNNaEM2REJPajRFdE11cFpNOW9HOFJNYXFMREw1a21BQkMyVTBDMUFILzcwQ29nanRjOFA5a0ZGRlN5UERJUEFFRTBDWUJ4aEdTc0FqMWc2VW9tNEdEaENoa2tJU2pRNEJOQW5rRzBJRyt3K0xZZ2IyUFFnZUdaQkQ3TWZJb2NuYzBFRERoL05FRTVmdVBrYVZsYmhrVThIU1A1T3Z1VDlOMDlYOGZQWVlDSlZjNEtRQUFBQUJKUlU1RXJrSmdnZz09IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiRklET18yXzAiXSwiZXh0ZW5zaW9ucyI6WyJobWFjLXNlY3JldCIsImNyZWRQcm90ZWN0Il0sImFhZ3VpZCI6IjBkYjAxY2Q2NTYxODQ1NWJiYjQ2MWVjMjAzZDMyMTNlIiwib3B0aW9ucyI6eyJyayI6dHJ1ZSwiY2xpZW50UGluIjp0cnVlfSwibWF4TXNnU2l6ZSI6MTcwMCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0IjoxNiwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoxMjgsInRyYW5zcG9ydHMiOlsibmZjIiwidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN31dLCJtaW5QSU5MZW5ndGgiOjYsImZpcm13YXJlVmVyc2lvbiI6MTIsIm1heENyZWRCbG9iTGVuZ3RoIjozMiwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjI1Nn19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMC0wOCJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjQtMTAtMDgifSx7ImFhZ3VpZCI6ImI5M2ZkOTYxLWYyZTYtNDYyZi1iMTIyLTgyMDAyMjQ3ZGU3OCIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiYjkzZmQ5NjEtZjJlNi00NjJmLWIxMjItODIwMDIyNDdkZTc4IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkFuZHJvaWQgQXV0aGVudGljYXRvciJ9LCJkZXNjcmlwdGlvbiI6IkFuZHJvaWQgQXV0aGVudGljYXRvciIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhdHRlcm5faW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmYWNlcHJpbnRfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInRlZSJdLCJpc0tleVJlc3RyaWN0ZWQiOmZhbHNlLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJ0ZWUiXSwiYXR0YWNobWVudEhpbnQiOlsiaW50ZXJuYWwiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNERENDQVpHZ0F3SUJBZ0lRYmtlcHgyeXBjeVJBaVE4RFZkMk5IVEFLQmdncWhrak9QUVFEQXpCSE1Rc3dDUVlEVlFRR0V3SlZVekVpTUNBR0ExVUVDaE1aUjI5dloyeGxJRlJ5ZFhOMElGTmxjblpwWTJWeklFeE1RekVVTUJJR0ExVUVBeE1MUjFSVElGSnZiM1FnVWpNd0hoY05NVFl3TmpJeU1EQXdNREF3V2hjTk16WXdOakl5TURBd01EQXdXakJITVFzd0NRWURWUVFHRXdKVlV6RWlNQ0FHQTFVRUNoTVpSMjl2WjJ4bElGUnlkWE4wSUZObGNuWnBZMlZ6SUV4TVF6RVVNQklHQTFVRUF4TUxSMVJUSUZKdmIzUWdVak13ZGpBUUJnY3Foa2pPUFFJQkJnVXJnUVFBSWdOaUFBUWZUek9ITXltS29ZVGV5OGNoV0VHSjZsYWRLMHVGeGgxTUo3eC9KbEZ5YitLZjFxUEt6RVVVUm91dDczNkdqT3l4ZmkvL3FYR2RHSVJGQkVGVmJpdnFKbis3a0FIalN4bTY1RlNXUlFteDFXeVJSSzJFRTQ2YWpBMkFEREwyNENlalFqQkFNQTRHQTFVZER3RUIvd1FFQXdJQkJqQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01CMEdBMVVkRGdRV0JCVEI4U2E2b0MydWhZSFAwL0VxRXIyNENtZjl2REFLQmdncWhrak9QUVFEQXdOcEFEQm1BakVBZ0Z1a2ZDUEFsYVVzM0w2SmJ5TzVvOTFsQUZKZWthekluWEowZ2xNTGZhbEF2V2hneGVHNFZEdkJOaGNsMk1HOUFqRUFualdTZElVbFVmVWs3R1JTSkZDbEg5dm95OGwyN095Q2J2V0ZHRlBvdU9PYUthcVcwNE1qeWFSN1liUE1BdWhkIiwiTUlJRG9UQ0NBb21nQXdJQkFnSUxCQUFBQUFBQkQ0V3FMVWd3RFFZSktvWklodmNOQVFFRkJRQXdPekVZTUJZR0ExVUVDaE1QUTNsaVpYSjBjblZ6ZEN3Z1NXNWpNUjh3SFFZRFZRUURFeFpEZVdKbGNuUnlkWE4wSUVkc2IySmhiQ0JTYjI5ME1CNFhEVEEyTVRJeE5UQTRNREF3TUZvWERUSXhNVEl4TlRBNE1EQXdNRm93T3pFWU1CWUdBMVVFQ2hNUFEzbGlaWEowY25WemRDd2dTVzVqTVI4d0hRWURWUVFERXhaRGVXSmxjblJ5ZFhOMElFZHNiMkpoYkNCU2IyOTBNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQStNaTh2UlJRWmhQLzhOTjU3Q1B5dHhySGpvWHhFbk9tR2FvUTI1eWlaWFJhZHo1UmZWYjIzQ08yMU8xZldMRTNUZFZKRG03MWFvZlcwb3pTSjhiaS96YWZtR1dnRTA3R0ttU2IxWkFTenhRRzlEdmoxQ2krNkE3NHEwNUlsRzJPbFRFUVhPMmlMYjNWT20yeUhMdGd3RVpMQWZWSnJuNUdpdEIwamFFTUFzN3UvT2VQdUd0bTgzOUVBTDltSlJRcjNSQXdIUWVXUDAzMmE3aVB0M3NNcFRqcjNrZmIxVjA1L0lpbjg5Y3FkUEhvV3FJN24xQzZwb3hGTmNKUVpaWGNZNEx2M2I5M1RaeGl5V056RnRBcEQwbXBTUEN6cXJkc3hhY3dPVUJkcnNUaVhTWlQ4TTRjSXdoaHFKUVp1Z1JpUU93Zk9IQjNFZ1p4cHpBWVhTVW5wUUlEQVFBQm80R2xNSUdpTUE0R0ExVWREd0VCL3dRRUF3SUJCakFQQmdOVkhSTUJBZjhFQlRBREFRSC9NQjBHQTFVZERnUVdCQlMyQ0hzTmVzeXNJRXlHVmpKZXo2dHVoUzF3VnpBL0JnTlZIUjhFT0RBMk1EU2dNcUF3aGk1b2RIUndPaTh2ZDNkM01pNXdkV0pzYVdNdGRISjFjM1F1WTI5dEwyTnliQzlqZEM5amRISnZiM1F1WTNKc01COEdBMVVkSXdRWU1CYUFGTFlJZXcxNnpLd2dUSVpXTWw3UHEyNkZMWEJYTUEwR0NTcUdTSWIzRFFFQkJRVUFBNElCQVFCVzd3b2pvRlJPbFpmSitJbmFSY0hVb3dBbDlCOFRxN2VqaFZocHdqQ3QyQldLTGVQSnpZRmErSE1qV3FkOEJmUDlJanNPMFFiRTJ6Wk1jd1NPNWJBaTVNWHpMcVhaSStPNFRrb2dwMjRDSko4aVlHZDdpeDF5Q2NVeFhPbDVuNEJIUGEyaEN3Y1VQVWYvQTJrYURBdEU1Mk1scDMreXliaDJoTzBqOW4wSHEwViswOSt6dittS3RzMm9vbWNyVXRXM1pmQTVUR09na1htVFVnOVUzWU83bjlHUHAxTnp3OHYvTU94OEJMallSQitUWDNFSklyZHVQdW9jQTA2ZEdpQmgrNEUzN0Y3OENrV3IxK2NYVmRDZzZtQ2JwdmJqakZzcHdnWmdGSjB0bDB5cGt4V2RZY1FCWDBqV1dMMVdNUkpPRWNnaDRMTVJrV1hidEthSU9NNVYiLCJNSUlEVERDQ0FqU2dBd0lCQWdJSWZFOEVPUnpVbVMwd0RRWUpLb1pJaHZjTkFRRUZCUUF3UkRFTE1Ba0dBMVVFQmhNQ1ZWTXhGREFTQmdOVkJBb01DMEZtWm1seWJWUnlkWE4wTVI4d0hRWURWUVFEREJaQlptWnBjbTFVY25WemRDQk9aWFIzYjNKcmFXNW5NQjRYRFRFd01ERXlPVEUwTURneU5Gb1hEVE13TVRJek1URTBNRGd5TkZvd1JERUxNQWtHQTFVRUJoTUNWVk14RkRBU0JnTlZCQW9NQzBGbVptbHliVlJ5ZFhOME1SOHdIUVlEVlFRRERCWkJabVpwY20xVWNuVnpkQ0JPWlhSM2IzSnJhVzVuTUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUF0SVRNTXhjdWE1UnNhMkZTb091anozbVVUT1dVZ0puTFZXUkVaWTluWk9JRzQxdzNTZll2bTRTRUhpM3lZSjB3VHN5RWhlSXN6eDZlL2phck0zYzFSTmcxbGhvOU51aDZEdGpWUjZGcWFZdlovTHM2cm5sYTFmVFdjYnVha0NOcm1yZUlkSWNNSGwrNW5pMzZxMU1yM0x0MlBwTk1DQWlNSHFJakhOUnFyU0s2bVFFdWJXWEx2aVJtVlNSTFFFU3hHOWZod29YQTNoQS9QZTI0L1BIeEkxUGN2MldYYjluNVFIR05mYjJWMU02K29GNG5JOTc5cHRBbURnQXA2enhHOEQxZ3Z6OVEwdHdtUVZHZUZEZENCS053VjZnYmgrMHQrbnZ1akFyanFXYUpHY3RCK2QxRU5tSFA0bmRHeUgzMjlKS0JOdjNiTlBGeWZ2TU1GcjIwRlFJREFRQUJvMEl3UURBZEJnTlZIUTRFRmdRVUJ4L1M1NXphd202aVFMU3dlbEFRVUhURXlMMHdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QU9CZ05WSFE4QkFmOEVCQU1DQVFZd0RRWUpLb1pJaHZjTkFRRUZCUUFEZ2dFQkFJbFhzaFo2cU1MOTF0bWJtelRDbkxReUZFMm5wTi9zdnFlKytFUGJrVGZPdERJdVVGVWFOVTUyUTNFZzc1TjNUaFZ3TG9mRHdSMXQzTXUxSjlRc1Z0RlNVenBFMG5QSXhCc0ZaVnBpa3B6dVFZMHgyK2MwNmxraDFRRjYxMlM0WkRuTnllMnY3VXNEU0tlZ21RR0EzR1dqTnE1bFdVaFBna3ZJWmZGWEhlVlpMZ28vYk5qUjllVUp0R3hVQUFyZ0ZVMkhkVzIzV0paYTNXM1NBS0QwbTBpK3d6ZWt1amJnZkllRmx4b1ZvdDR1b2x1OXJ4ajVrRkROY0ZuNEoyZEh5OGVnQnpwOTBTeGRiQms2WnJWOS9aRnZnckcrQ0pQYkZFZnhvamZIUlo0OHgzZXZaS2lUMy9acGc0Smc4a2xDTk8xYUFGU0ZIQlkya2d4YytxYXR2OXM9IiwiTUlJRHJ6Q0NBcGVnQXdJQkFnSVFDRHZnVnBCQ1JyR2hkV3JKV1pISFNqQU5CZ2txaGtpRzl3MEJBUVVGQURCaE1Rc3dDUVlEVlFRR0V3SlZVekVWTUJNR0ExVUVDaE1NUkdsbmFVTmxjblFnU1c1ak1Sa3dGd1lEVlFRTEV4QjNkM2N1WkdsbmFXTmxjblF1WTI5dE1TQXdIZ1lEVlFRREV4ZEVhV2RwUTJWeWRDQkhiRzlpWVd3Z1VtOXZkQ0JEUVRBZUZ3MHdOakV4TVRBd01EQXdNREJhRncwek1URXhNVEF3TURBd01EQmFNR0V4Q3pBSkJnTlZCQVlUQWxWVE1SVXdFd1lEVlFRS0V3eEVhV2RwUTJWeWRDQkpibU14R1RBWEJnTlZCQXNURUhkM2R5NWthV2RwWTJWeWRDNWpiMjB4SURBZUJnTlZCQU1URjBScFoybERaWEowSUVkc2IySmhiQ0JTYjI5MElFTkJNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQTRqdmhFWExlcUtUVG8xZXFVS0tQQzNlUXlhS2w3aExPbGxzQkNTRE1BWk9uVGpDM1UvZER4R2tBVjUzaWpTTGRod1pBQUlFSnpzNGJnNy9melR0eFJ1TFdac2NGczNZbkZvOTduaDZWZmU2M1NLTUkydGF2ZWd3NUJtVi9TbDBmdkJmNHE3N3VLTmQwZjNwNG1WbUZhRzVjSXpKTHYwN0E2RnB0NDNDL2R4Qy8vQUgyaGRtb1JCQllNcWwxR05YUm9yNUg0aWRxOUpveitFa0lZSXZVWDdRNmhMK2hxa3BNZlQ3UFQxOXNkbDZnU3plUm50d2k1bTNPRkJxT2Fzdit6Yk1VWkJmSFd5bWVNci95N3ZyVEMwTFVxN2RCTXRvTTFPLzRnZFc3alZnL3RSdm9TU2lpY05veEJOMzNzaGJ5VEFwT0I2anRTajFldFgramtNT3ZKd0lEQVFBQm8yTXdZVEFPQmdOVkhROEJBZjhFQkFNQ0FZWXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QWRCZ05WSFE0RUZnUVVBOTVRTlZiUlRMdG04S1BpR3h2RGw3STkwVlV3SHdZRFZSMGpCQmd3Rm9BVUE5NVFOVmJSVEx0bThLUGlHeHZEbDdJOTBWVXdEUVlKS29aSWh2Y05BUUVGQlFBRGdnRUJBTXVjTjZwSUV4SUsrdDFFbkU5U3NQVGZyZ1QxZVhrSW95UVkvRXNyaE1BdHVkWEgvdlRCSDFqTHVHMmNlblRubUNtckViWGpjS0NoelV5SW1aT01rWERpcXc4Y3ZwT3AvMlBWNUFkZzA2Ty9uVnNKOGRXTzQxUDBqbVA2UDZmYnRHYmZZbWJXMFc1QmpmSXR0ZXAzU3ArZFdPSXJXY0JBSSswdEtJSkZQbmxVa2lhWTRJQklxRGZ2OE5aNVlCYmVyT2dPelc2c1JCYzRMMG5hNFVVK0tyazJVODg2VUFiM0x1akVWMGxzWVNFWTFRU3RlRHdzT29CcnArdXZGUlRwMkluQnVUaHM0cEZzaXY5a3VYY2xWekRBR3lTajRkenAzMGQ4dGJRa0NBVXc3QzI5Qzc5RnYxQzVxZlBybUFFU3JjaUl4cGcwWDQwS1BNYnAxWldWYmQ0PSIsIk1JSURsakNDQW42Z0F3SUJBZ0lRQzVNY090WTVaK3BuSTcvRHI1cjBTekFOQmdrcWhraUc5dzBCQVFzRkFEQmxNUXN3Q1FZRFZRUUdFd0pWVXpFVk1CTUdBMVVFQ2hNTVJHbG5hVU5sY25RZ1NXNWpNUmt3RndZRFZRUUxFeEIzZDNjdVpHbG5hV05sY25RdVkyOXRNU1F3SWdZRFZRUURFeHRFYVdkcFEyVnlkQ0JCYzNOMWNtVmtJRWxFSUZKdmIzUWdSekl3SGhjTk1UTXdPREF4TVRJd01EQXdXaGNOTXpnd01URTFNVEl3TURBd1dqQmxNUXN3Q1FZRFZRUUdFd0pWVXpFVk1CTUdBMVVFQ2hNTVJHbG5hVU5sY25RZ1NXNWpNUmt3RndZRFZRUUxFeEIzZDNjdVpHbG5hV05sY25RdVkyOXRNU1F3SWdZRFZRUURFeHRFYVdkcFEyVnlkQ0JCYzNOMWNtVmtJRWxFSUZKdmIzUWdSekl3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRRFo1eWd2VWo4MmNrbUlrelR6K0dvZU1WU0FuNjFVUWJWSDM1YW8xSytBTGJrS3ozWDlpYVY5SlByaklnd3J2SlVYQ3pPL0dVMUJCcEFBdlF4TkVQNEh0ZWNjYmlKVk1XV1h2ZE1YMGg1aTg5dnFiRkNNUDRRTWxzKzN5d1BneW0yaEZFd2JpZDN0QUxCU2ZLK1JiTEU0RTlIcEVnakFBTEFjS3hIYWQzQTJtNjdPZVlmY2duRG1DWFJ3Vldtdm8yaWZ2OTIyZWJQeW5YQXBWZlNyLzVWaDg4bEFieDNSdnBPNzA0Z3F1NTIvY2xwV2NUcy8xUFBSQ3Y0bzc2UHUyWm12QTlPUFlMZnlrcUd4dlltSkh6RE53Nll1WWpPdUZnSjNSRnJuZ1FvOHAwUXVlYmcvQkx4Y29JZmhHNjlSanMzc0xQcjQvbTN3T255cWkrUm5sVEdOQWdNQkFBR2pRakJBTUE4R0ExVWRFd0VCL3dRRk1BTUJBZjh3RGdZRFZSMFBBUUgvQkFRREFnR0dNQjBHQTFVZERnUVdCQlRPdzBxNW1WWHl1TnRndjZsK3ZWYTFsemFuMWpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQXlxVlZqT1BJUVc1cEo2ZDFFZTg4aGpadjBwM0dlRGdkYVphaWtta3VPR3liZlFUVWlhV3hNVGVLeVNITXEyek5peHlhMXI5STBqSm13WXJBOHk4Njc4RGoxSkdHMFZEakE5dHpkMjlLT1ZQdDNpYkh0WDJ2SzBMUmRXTGpTaXNDeDFCTDRHbmlsbXdPUkdZUVJJK3RCZXY0ZWF5bUcrZzNOSjFUeVdHcW9sS3ZTbkFXaHNJNnlMRVRjRGJZeis3MENqVFZXMHo5QjV5aXV0a0JjbHp6VGNIZERyRWNEY1JqdnEzMEZQdUo3S0pCRGt6TXlGZEEwRzREcXMwTWpvbVptV3p3UERDdk9OOXZ2S08rS1NBbnEzVC9FeUo0M3BkU1ZSNkR0VlFnQSs2dXdFOVczamZNdzMrcUJDZTcwM2U0WXRzWGZKd29JaE56Yk04bTlZb3A1dz09IiwiTUlJRmd6Q0NBMnVnQXdJQkFnSU9SZWE3QTRNenc0VmxTT2IvUlZFd0RRWUpLb1pJaHZjTkFRRU1CUUF3VERFZ01CNEdBMVVFQ3hNWFIyeHZZbUZzVTJsbmJpQlNiMjkwSUVOQklDMGdVall4RXpBUkJnTlZCQW9UQ2tkc2IySmhiRk5wWjI0eEV6QVJCZ05WQkFNVENrZHNiMkpoYkZOcFoyNHdIaGNOTVRReE1qRXdNREF3TURBd1doY05NelF4TWpFd01EQXdNREF3V2pCTU1TQXdIZ1lEVlFRTEV4ZEhiRzlpWVd4VGFXZHVJRkp2YjNRZ1EwRWdMU0JTTmpFVE1CRUdBMVVFQ2hNS1IyeHZZbUZzVTJsbmJqRVRNQkVHQTFVRUF4TUtSMnh2WW1Gc1UybG5iakNDQWlJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dJUEFEQ0NBZ29DZ2dJQkFKVUg2SFBLWnZuc0ZNcDdQUGNOQ1BHMFJRc3NnclJJeHV0YlBLNkR1RUdTTXhTa2IzL3BLc3pHc0locnhiYUowY2F5L3hUT1VSUWg3RXJkRzFyRzFvZnVUVG9WQnUxa1pndVNnTXBFM25PVVR2T25pWDlQZUdNSXlCSlFiVUptTDAyNWVTaE5VaHFLR29DM0dZRU9mc1NLdkdSTUlSeERhTmM5UElyRnNtYlZrSnEzTVFiRnZ1SnRNZ2FtSHZtNTY2cWp1TCsrZ21OUTBQQVlpZC9rRDNuMTZxSWZLdEp3TG52bnZKTzdiVlBpU0h5TUVBYzQvMmF5ZDJGKzRPcU1QS3EwcFBiemxVb1NCMjM5akxLSno5Q2dZWGZJV0hTdzFDTTY5MTA2eXFMYm5RbmVYVVF0a1BHQnpWZVMrbjY4VUFSak5OOXJreGkrYXpheU9lU3NKRGEzOE8rMkhCTlhrN2Jlc3ZqaWhiZHpvcmcxcWtYeTRKMDJvVzlVaXZGeVZtNHVpTVZSUWtRVmxPNmp4VGlXbTA1T1dndEg4d1kyU1hjd3ZIRTM1YWJzSVFoMS9PWmhGajkzMWRtUmw0UUtiTlFDVFhUQUZPMzlPZnVEOGw0VW9RU3dDK24rN28vaGJndXlDTE5oWmdscXNRWTZaWlpad1BBMS9jbmFLSTBhRVlkd2dRcW9tblVkbmpxR0JRQ2UyNERXSmZuY0JaNG5XVXgyT1Z2cSthV2gySU1QMGYvZk1CSDVoYzh6U1BYS2JXUVVMSHBZVDlOTENFbkZsV1FhWXc1NVBmV3pqTXBZclp4Q1JYbHVEb2NaWEZTeFpiYS9qSnZjRStrTmI3Z3UzR2R1eVlzUnRZUVVpZ0FaY0lONWtaZVIxQm9udnpjZU1nZllGR004S0V5dkFnTUJBQUdqWXpCaE1BNEdBMVVkRHdFQi93UUVBd0lCQmpBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUIwR0ExVWREZ1FXQkJTdWJBV2preFBpb3VmaTF4eld4L0IveUdkVG9EQWZCZ05WSFNNRUdEQVdnQlN1YkFXamt4UGlvdWZpMXh6V3gvQi95R2RUb0RBTkJna3Foa2lHOXcwQkFRd0ZBQU9DQWdFQWd5WHQ2Tkg5bFZMTm5zQUVvSkZwNWx6UWhON2NyYUpQNkVkNDFtV1lxVnVvUElkOEFvclJicmNXYytaZndGU1kxWFMrd2MzaUVaR3RJeGc5M2VGeVJKYTBsVjdBZTQ2WmVCWkRFMVpYczZLek83VjMzRUJ5cktQcm16VStzUWdob2VmRVF6ZDVNcjYxNTV3c1RMeERLWm1PTU5Pc0llRGpIZnJZQnpOMlZBQWlLcmxOSUM1d2FOcmxVL3lEWE5PZDh2OUVERVJtOHRManZVWUFHbTBDdWlWZGphRXhVZDFVUmh4TjI1bVc3eG9jQkZ5bUZlOTQ0SG4rWGRzK3FreFYvWm9WcVcvaHB2dmZjRERwdys1Q1J1M0Nrd1dKK24xamV6L1FjWUY4QU9pWXJnNTROTU1sKzY4S255QnIzVHNUanhLTTRrRWFTSHB6b0hkcHg3WmNmNExJSHY1WUd5Z3JxR3l0WG0zQUJkSjd0K3VBL2lVMy9nS2JhS3hDWGNQdTljemM4RkIxMGpacG5PWjdCTjl1Qm1tMjNnb0pTRm1INjNzVVlIcGtxbWxENzVISFRPd1kzV3p2VXkyTW1lRmU4bkkrejFUSXZXZnNwQTlNUmYvVHVUQWpCMHlQRUwrR2x0bVpXclNaVnh5a3pMc1ZpVk82TEFVUDVNU2VHYkVZTk5WTW5icnQ5eCt2SkpVRWVLZ0R1KzZCNWRwZmZJdEtvWkIwSmFlelBrdklMRmE5eDhqdk9PSmNrdkI1OTV5RXVuUXRZUUVnZm43UjhrOEhXVitMTFVOUzYwWU1sT0gxWmtkNWQ5VlVXeCt0SkRmTFJWcE9vRVJJeU5pd21jVVZoQW4yMWtsSndHVzQ1aHB4YnFDbzhZTG9SVDVzMWdMWENtZURCVnJKcEJBPSIsIk1JSUVEekNDQXZlZ0F3SUJBZ0lCQURBTkJna3Foa2lHOXcwQkFRVUZBREJvTVFzd0NRWURWUVFHRXdKVlV6RWxNQ01HQTFVRUNoTWNVM1JoY21acFpXeGtJRlJsWTJodWIyeHZaMmxsY3l3Z1NXNWpMakV5TURBR0ExVUVDeE1wVTNSaGNtWnBaV3hrSUVOc1lYTnpJRElnUTJWeWRHbG1hV05oZEdsdmJpQkJkWFJvYjNKcGRIa3dIaGNOTURRd05qSTVNVGN6T1RFMldoY05NelF3TmpJNU1UY3pPVEUyV2pCb01Rc3dDUVlEVlFRR0V3SlZVekVsTUNNR0ExVUVDaE1jVTNSaGNtWnBaV3hrSUZSbFkyaHViMnh2WjJsbGN5d2dTVzVqTGpFeU1EQUdBMVVFQ3hNcFUzUmhjbVpwWld4a0lFTnNZWE56SURJZ1EyVnlkR2xtYVdOaGRHbHZiaUJCZFhSb2IzSnBkSGt3Z2dFZ01BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkRRQXdnZ0VJQW9JQkFRQzNNc2orNlhHbUJJV3REQkZrMzg1Tjc4Z0RHSWMvb2F2N1BLYWY4TU9oMnRUWWJpdFRrUHNrcEQ2RThKN29YK3psSjBUMUtLWS9lOTdnS3ZESXIxTXZuc29GQVpNZWoyWWNPYWROK2xxMmN3UWxadXQzZitkWnhrcVpKUlJVNnliSDgzOFoxVEJ3ajYrd1Jpci9yZXNwN2RlZnFnU0hvOVQ1aWFVMFg5dERrWUkyMldZOHNiaTVndjJjT2o0UXlEdnZCbVZtZXBzWkdEMy9jVkU4TUM1ZnZqMTNjN0pkQm16REkxYWFLNFVta2h5bkFyUGtQdzJ2Q0htQ3VEWTk2cHpUTmJPOGFjcjF6SjNvL1dTTkY0QXpibDVLWFpuSkhvZTBuUnJBMVc0VE5TTmUzNXRmUGUvVzkzYkM2ajY3ZUEwY1FtZHJCTmo0MXRwdmkvSkVvQUdyQWdFRG80SEZNSUhDTUIwR0ExVWREZ1FXQkJTL1g3ZlJ6dDBmaHZSYlZhemMxeERDRHFtSTV6Q0JrZ1lEVlIwakJJR0tNSUdIZ0JTL1g3ZlJ6dDBmaHZSYlZhemMxeERDRHFtSTU2RnNwR293YURFTE1Ba0dBMVVFQmhNQ1ZWTXhKVEFqQmdOVkJBb1RIRk4wWVhKbWFXVnNaQ0JVWldOb2JtOXNiMmRwWlhNc0lFbHVZeTR4TWpBd0JnTlZCQXNUS1ZOMFlYSm1hV1ZzWkNCRGJHRnpjeUF5SUVObGNuUnBabWxqWVhScGIyNGdRWFYwYUc5eWFYUjVnZ0VBTUF3R0ExVWRFd1FGTUFNQkFmOHdEUVlKS29aSWh2Y05BUUVGQlFBRGdnRUJBQVdkUDRpZDBja2FWYUdzYWZQeldkcWJBWWNhVDFlcG9Ya0pLdHYzTDdJZXpNZGVhdGlEaDZHWDcwazFQbmNHUVZoaXY0NVl1QXBuUCt5ejNTRm1IOGxVK25MTVBVeEEySUd2ZDU2RGVydWl4L1UwRjQ3WkVVRDAvQ3dxVFJWL3AySmRMaVhUQUFzZ0doMW8rUmU0OUwyTDdTaFozVTBXaXhlRHlMSmx4eTE2cGFxOFU0WnQzVmVreXZnZ1FRdG84UFQ3ZEw1V1hYcDU5ZmtkaGVNdGxiNzFjWkJEekkwZm1nQUtoeW5wVlNKWUFDUHE0eEpES1Z0SENOMk1RV3BsQnFqbElhcEJ0SlVobGJsOTBUU3JFOWF0dk56aVBUbk52VDUxY0tFWVdRUEpJclNQbk5WZUt0ZWx0dFFLYmZpM1FCRkdtaDk1RG1LL0Q1ZnM0QzhmRjVRPSIsIk1JSUVIVENDQXdXZ0F3SUJBZ0lRVG9FdGlvSmw0QXNDN2o0MUFrYmxQVEFOQmdrcWhraUc5dzBCQVFVRkFEQ0JnVEVMTUFrR0ExVUVCaE1DUjBJeEd6QVpCZ05WQkFnVEVrZHlaV0YwWlhJZ1RXRnVZMmhsYzNSbGNqRVFNQTRHQTFVRUJ4TUhVMkZzWm05eVpERWFNQmdHQTFVRUNoTVJRMDlOVDBSUElFTkJJRXhwYldsMFpXUXhKekFsQmdOVkJBTVRIa05QVFU5RVR5QkRaWEowYVdacFkyRjBhVzl1SUVGMWRHaHZjbWwwZVRBZUZ3MHdOakV5TURFd01EQXdNREJhRncweU9URXlNekV5TXpVNU5UbGFNSUdCTVFzd0NRWURWUVFHRXdKSFFqRWJNQmtHQTFVRUNCTVNSM0psWVhSbGNpQk5ZVzVqYUdWemRHVnlNUkF3RGdZRFZRUUhFd2RUWVd4bWIzSmtNUm93R0FZRFZRUUtFeEZEVDAxUFJFOGdRMEVnVEdsdGFYUmxaREVuTUNVR0ExVUVBeE1lUTA5TlQwUlBJRU5sY25ScFptbGpZWFJwYjI0Z1FYVjBhRzl5YVhSNU1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBMEVDTGkzTGprUnYzVWNFYlZBU1kwNm0vd2VhS1hUdUgrN3VJemczakx6OEdsdkNpS1ZDWnJ0czdvVmV3ZEZGeHplMUNrVTFCL3FuSTJHcUdkMFM3V1dhWFVGNjAxQ3h3Uk0vYU41VkNhVHd3eEhHelV2QWhUYUhZdWpsOEhKNmpKSjN5Z3hhWXFoWjhRNXNWVzdldU5KSCsxR0ltR0VhYVArdkIrZkdRVit1c2VnMkwyM0l3YW1iVjRFYWpjTnhvMmY4RVNJbDMzclhwKzJkdFFlbThPYjB5MldJQzhiR29QVzQzbk9JdjR0T2lKb3ZHdUZWRGlPRWpQcVhTSkRscVI2c0ExS0d6cVNYK0RUK25IYnJUVWNFTHBOcXNPTzlWVUNRRlpVYVRORTh0amEzRzFDRVowbzdLQldGeEIzTkg1WW9aRXIwRVRjNU9uS1ZJckxzbTl3SURBUUFCbzRHT01JR0xNQjBHQTFVZERnUVdCQlFMV09XTHhrd1ZONlJBcVRDcEliNUhObHBXL3pBT0JnTlZIUThCQWY4RUJBTUNBUVl3RHdZRFZSMFRBUUgvQkFVd0F3RUIvekJKQmdOVkhSOEVRakJBTUQ2Z1BLQTZoamhvZEhSd09pOHZZM0pzTG1OdmJXOWtiMk5oTG1OdmJTOURUMDFQUkU5RFpYSjBhV1pwWTJGMGFXOXVRWFYwYUc5eWFYUjVMbU55YkRBTkJna3Foa2lHOXcwQkFRVUZBQU9DQVFFQVBwaWVtL1liNmRjNXQzaXVIWElZU2RPSDVFT0M2ei9KcXZXb3RlOVZmQ0ZTWmZuVkRlRnM5RDZNazNPUkxnTEVUZ2R4YjhDUE9HRUlxQjZCQ3NBdklDOUJpNUhjU0VXODhjYmV1blpyTThnQUxURkdUTzNubmMrSWxQOHp3RmJvSklZbXVOZzRPTjhxYTkwU3pNYy9SeGRNb3NJR2xnblcyLzQvUEVaQjMxamlWZzg4TzhFY2t6WFpPRktzN3Nqc0xqQk9sRFcwSkI5TGVHbmE4Z0k0ekpWU2svQndKVm1jSUdmRTd2bUxWMkgwa25aOVA0U05WYmZvNWF6VjhmVVpWcVphKzVBY3I1UHI1UnpVWjVkZEJBNitDNE9tRjRPNU1CS2d4VE1WQmJrTis4Y0ZkdVBZU28zOE5CZWp4aUVvdmpCRk1SN0hlTDVZWVRpc08rSUJaUT09IiwiTUlJRHVqQ0NBcUtnQXdJQkFnSUxCQUFBQUFBQkQ0WW01ZzB3RFFZSktvWklodmNOQVFFRkJRQXdUREVnTUI0R0ExVUVDeE1YUjJ4dlltRnNVMmxuYmlCU2IyOTBJRU5CSUMwZ1VqSXhFekFSQmdOVkJBb1RDa2RzYjJKaGJGTnBaMjR4RXpBUkJnTlZCQU1UQ2tkc2IySmhiRk5wWjI0d0hoY05NRFl4TWpFMU1EZ3dNREF3V2hjTk1qRXhNakUxTURnd01EQXdXakJNTVNBd0hnWURWUVFMRXhkSGJHOWlZV3hUYVdkdUlGSnZiM1FnUTBFZ0xTQlNNakVUTUJFR0ExVUVDaE1LUjJ4dlltRnNVMmxuYmpFVE1CRUdBMVVFQXhNS1IyeHZZbUZzVTJsbmJqQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQUtiUEpBNitMbThvbVVWQ3hLcytJVlNiQzlOL2hIRDZFclBMdjRkZnhuK0cwN0l3WE5iOXJmRjczT1g0WUpZSmtoRDEwRlBlKzN0K2M0aXNVb2g3U3FiS1NhWmVxS2VNV2hHOGVvTHJ2b3pwczZ5V0pRZVhTcGtxQnkrMEhuZS9pZysxQW53YmxyakZ1VG9zdk5ZU3VldFpmZUxRQm9aZlhrbHF0VGxlaURUc3ZIZ01DSmlFYktqTlM3U2dmUXg1VGZDNExjc2h5dFZzVzMzaG9DbUVvZm5UbEVuTEpHS1JJTHpkQzlYWnpQbnFKd29yYzVIR25SdXN5TXZvNEtEMEw1Q0xUZnV3Tmh2MkdYcUY0RzN5WVJPSVhKL2drd3BSbDRwYXpxK3IxZmVxQ2FwZ3ZkelpYOTl5cVdBVFhnQUJ5VXI2UDZUcUJ3TWhBbzZDeWdQQ200OENBd0VBQWFPQm5EQ0JtVEFPQmdOVkhROEJBZjhFQkFNQ0FRWXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QWRCZ05WSFE0RUZnUVVtK0lIVjJjY0hzQnFCdDVadEpvdDM5d1poaTR3TmdZRFZSMGZCQzh3TFRBcm9DbWdKNFlsYUhSMGNEb3ZMMk55YkM1bmJHOWlZV3h6YVdkdUxtNWxkQzl5YjI5MExYSXlMbU55YkRBZkJnTlZIU01FR0RBV2dCU2I0Z2RYWnh3ZXdHb0czbG0wbWkzZjNCbUdMakFOQmdrcWhraUc5dzBCQVFVRkFBT0NBUUVBbVlGVGh4eG9sNGFSN09CS3VFUUxxNEdzSjAvV3diZ2NRM2l6REpyODZpdzhibUViVFVzcDlaOEZIU2JCdU9tREFHSkZ0cWtJazdtcE0wc1ltc0w0aDRoTzI5MXhOQnJCVk5wR1ArRFRLcXR0VkNMMU9tTE5JRys2S1luWDNaSHUwMXlpUHFGYlFmWGY1V1JETGVuVk9hdlNvdCszaTlEQWdCa2NSY0F0ak9qNExhUjBWa25GQmJWUEZkNXVSSGc1aDZoK3UvTjVHSkc3OUcrZHdmQ01OWXhkQWZ2RGJibnZSRzE1UmpGK0N2NnBnc0gvNzZ0dUlNUlF5VitkVFpzWGpBemxBY21nUVdwelUvcWxVTFJ1SlEvN1RCajAvVkxaam1teDZCRVAzb2pZK3gxSjk2cmVsYzhnZU1KZ0V0c2xRSXhxL0g1Q09FQmtFdmVlZ2VHVExnPT0iLCJNSUlCNFRDQ0FZZWdBd0lCQWdJUktqaWtISllLQk41Q3NpaWxDK2cwbUFJd0NnWUlLb1pJemowRUF3SXdVREVrTUNJR0ExVUVDeE1iUjJ4dlltRnNVMmxuYmlCRlEwTWdVbTl2ZENCRFFTQXRJRkkwTVJNd0VRWURWUVFLRXdwSGJHOWlZV3hUYVdkdU1STXdFUVlEVlFRREV3cEhiRzlpWVd4VGFXZHVNQjRYRFRFeU1URXhNekF3TURBd01Gb1hEVE00TURFeE9UQXpNVFF3TjFvd1VERWtNQ0lHQTFVRUN4TWJSMnh2WW1Gc1UybG5iaUJGUTBNZ1VtOXZkQ0JEUVNBdElGSTBNUk13RVFZRFZRUUtFd3BIYkc5aVlXeFRhV2R1TVJNd0VRWURWUVFERXdwSGJHOWlZV3hUYVdkdU1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRXVNWjUwNDlzSlE2Zkxqa1pIQU9rcnBybE9RY0pGc3Bqc2JtRytJcFh3VmZPUXZwem9mZGxRdjhld1FDeWJuTU8vOGNoNVJpa3F0bHhQNmpVdWM2TUhhTkNNRUF3RGdZRFZSMFBBUUgvQkFRREFnRUdNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdIUVlEVlIwT0JCWUVGRlN3ZTYxRnVPSkFmL3NLYnZ1K004azhvNFRWTUFvR0NDcUdTTTQ5QkFNQ0EwZ0FNRVVDSVFEY2txR2dFNmJQQTdEbXhDR1hrUG9VVnkwRDdPNDgwMjdLcUd4MnZLTGV1d0lnSjZpRkp6V2JWc2FqOGtmU3QyNGJBZ0FYcW1lbUZaSGUrcFRzZXd2NG40UT0iLCJNSUlGMkRDQ0E4Q2dBd0lCQWdJUVRLcjV5dHRqYitBZjkwN1lXd09HblRBTkJna3Foa2lHOXcwQkFRd0ZBRENCaFRFTE1Ba0dBMVVFQmhNQ1IwSXhHekFaQmdOVkJBZ1RFa2R5WldGMFpYSWdUV0Z1WTJobGMzUmxjakVRTUE0R0ExVUVCeE1IVTJGc1ptOXlaREVhTUJnR0ExVUVDaE1SUTA5TlQwUlBJRU5CSUV4cGJXbDBaV1F4S3pBcEJnTlZCQU1USWtOUFRVOUVUeUJTVTBFZ1EyVnlkR2xtYVdOaGRHbHZiaUJCZFhSb2IzSnBkSGt3SGhjTk1UQXdNVEU1TURBd01EQXdXaGNOTXpnd01URTRNak0xT1RVNVdqQ0JoVEVMTUFrR0ExVUVCaE1DUjBJeEd6QVpCZ05WQkFnVEVrZHlaV0YwWlhJZ1RXRnVZMmhsYzNSbGNqRVFNQTRHQTFVRUJ4TUhVMkZzWm05eVpERWFNQmdHQTFVRUNoTVJRMDlOVDBSUElFTkJJRXhwYldsMFpXUXhLekFwQmdOVkJBTVRJa05QVFU5RVR5QlNVMEVnUTJWeWRHbG1hV05oZEdsdmJpQkJkWFJvYjNKcGRIa3dnZ0lpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElDRHdBd2dnSUtBb0lDQVFDUjZGU1MwZ3BXc2F3TkpOM0Z6MFJuZEprck42TjlJM0FBY2J4VDM4VDZLaEtQUzM4UVZyMmZjSEszWVgvSlN3OFhwejNqc0FSaDd2OFJsOGYwaGo0SytqNWMrWlBtTkhyWkZHdm5uTE9Gb0lKNmRxOXhrTmZzL1EzNm5HejYzN0NDOUJSKytiN0VwaTlQZjVsL3RmeG5RM0s5REFEV2lldHJMTlB0ajVnY0ZLdCs1ZU51L05pbzVKSWsya05yWXJoVi9lckJ2R3kyaS9NT2pacmttMnhwbWZoNFNEQkYxYTNoRFR4RllQd3lsbEVudkdmRHlpNjJhK3BHeDhjZ29MRWZaZDVJQ0xxa1RxbnlnMFkzaE92b3pJRklRMmRPY2lxYlhMMU1HeWlLWENKN3RLdVkyZTdnVVlQRENVWk9iVDZaK3BVWDJud3pWMEU4alZIdEM3WmNyeXhqR3Q5WHlEKzg2VjNFbTY5Rm1lS2pXaVMwdXFsV1BjOXZxdjlKV0w3d3FQLzB1SzNwTi91NnVQUUxPdm5vUTBJZWlkaUV5eFB4MmJ2aGlXQzRqQ2hXckJRZG5Bcm5jZXZQRHQwOXFaYWhTTDA4OTYrMURTSk13QkdCN0ZZNzl0T2k0bHUzc2dRaVVwV0FrMm5vamt4bDhaRURMWEIwQXVxTFp4VXBhVklDdTlmZlVHcFZScitnb3loaGYzRFF3NktxTENHcVI4NG9uQVpGZHIrQ0dDZTAxYTYweTFEbWEvUk1obkV3NmFiZkZvYmcyUDlBM2Z2UVFvaC9vek02TGx3ZVFSR0JZODRZY1dzcjdLYUt0ekZjT21wSDRNTjVXZFlnR3EveWFwaXFjcnhYU3RKTG5ic1EvTEJNUWVYdEhUMWVLSjJjekwrelVkcW5SK1dFVXdJREFRQUJvMEl3UURBZEJnTlZIUTRFRmdRVXU2OStBajM2cHZFOGhJNnQ3amlZN05reU10UXdEZ1lEVlIwUEFRSC9CQVFEQWdFR01BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0RRWUpLb1pJaHZjTkFRRU1CUUFEZ2dJQkFBcngxVWFFdDY1UnUyeXlUVUVVQUpOTW5Ndmx3RlRQb0NXT0F2bjlzS0lOOVNDWVBCTXRyRmFpc05aK0VaTHBMcnFlTHBweXNiMFpSR3hoTmFLYXRCWVNhVnFNNGRjK3BCcm9Md1Awcm1FZEVCc3FwSXQ2eGY0RnB1SEExc2orbnE2UEs3bzltZmpZY3dsWVJtNm1uUFRYSjlPVjJqZURjaHpUYytDaVI1a0RPRjNWU1hrQUtSekg3SnNnSEFja2FWZDRzam44T29TZ3RaeDhqYjh1azJJbnR6bmFGeGl1dlR3SmFQK0VtenpWMWdzRDQxZWVGUGZSNjAvSXZZY2p0N1pKUTNtRlhMcnJrZ3VoeHVob3FFd1dzUnFaQ3VoVExKSzdvUWtZZFF4bHFIdkxJN2Nhd2lpRnd4di8wQ3RpNzZSN0NaR1laNHdVQWMxb0JtcGpJWFVEZ0lpS2JvSEdoZktwcEMzbjlLVWtFRWVEeXMzMGpYbFlzUWFiNXhvcTJaMEIxNVI5N1FOS3l2RGI2S2tCUHZWV21ja2Vqa2s5dStVSnVlQlBTWkk5Rm9KQXpNeFp4dVk2N1JJdWFUeHNsYkg5cWgxN2Y0YStIZzR5UnZ2N0U0OTFmMHlMUzBaai9nQTBRSERCdzdtaDNhWnc0Z1N6UWJ6cGdKSHFaSng2NFNJRHFaeHVidzVsVDJ5SGgxN3picUQ1ZGFXYlFPaFRzaWVkU3JuQWR5R04vNGZ5M3J5TTd4ZmZ0MGtMMGZKdU1Bc2FEazUyN1JIODllbFdzbjIveDIwS2s0eWwwTUMySGI0NlRwU2kxMjVzQzhLS2ZQb2c4OFRrNWMwTnFNdVJrckY4aGV5MUZHbG1Eb0xuemM3SUxhWlJmeUhCTlZPRkJrcGRuNjI3RzE5MCIsIk1JSUNIakNDQWFTZ0F3SUJBZ0lSWUZsSjRDWXV1MVg1Q25lS2NmbEsyR3d3Q2dZSUtvWkl6ajBFQXdNd1VERWtNQ0lHQTFVRUN4TWJSMnh2WW1Gc1UybG5iaUJGUTBNZ1VtOXZkQ0JEUVNBdElGSTFNUk13RVFZRFZRUUtFd3BIYkc5aVlXeFRhV2R1TVJNd0VRWURWUVFERXdwSGJHOWlZV3hUYVdkdU1CNFhEVEV5TVRFeE16QXdNREF3TUZvWERUTTRNREV4T1RBek1UUXdOMW93VURFa01DSUdBMVVFQ3hNYlIyeHZZbUZzVTJsbmJpQkZRME1nVW05dmRDQkRRU0F0SUZJMU1STXdFUVlEVlFRS0V3cEhiRzlpWVd4VGFXZHVNUk13RVFZRFZRUURFd3BIYkc5aVlXeFRhV2R1TUhZd0VBWUhLb1pJemowQ0FRWUZLNEVFQUNJRFlnQUVSMFVPbHZ0OVhiL3BPZEVoK0o4THR0VjdIcEk2U0ZrYzhHSXhMY0I2S1A0YXAxeXp0c3lYNTBYVVdQclJkMjFEb3NDSFpUUUtIM3JkNnp3em9jV2RUYVJ2UVpVNGY4a2VoT3ZSbmttU2g1U0hERHFGU21hZm5WbVRUWmRoQm9aS28wSXdRREFPQmdOVkhROEJBZjhFQkFNQ0FRWXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QWRCZ05WSFE0RUZnUVVQZVlwU0p2cUI4b2hSRW9tM203ZTBvUFFuMWt3Q2dZSUtvWkl6ajBFQXdNRGFBQXdaUUl4QU9WcEVzbHUyOFl4dWdsQjRaZjQrLzJhNG4wU3llMThaTlBMQlNXTFZ0bWc1MTVkVGd1RG5GdDJLYUFKSmlGcVlnSXdjZEsxajF6cU8rRjRDWVdvZFpJN3lGejlTTzhOZENLb0NPSnV4VW5PeHd5OHAyRnA4ZmM3NFNyTCtTdnpacEEzIiwiTUlJQ2p6Q0NBaFdnQXdJQkFnSVFYSXVaeFZxVXhkSnhWdDdOaVlETUpqQUtCZ2dxaGtqT1BRUURBekNCaURFTE1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBZ1RDazVsZHlCS1pYSnpaWGt4RkRBU0JnTlZCQWNUQzBwbGNuTmxlU0JEYVhSNU1SNHdIQVlEVlFRS0V4VlVhR1VnVlZORlVsUlNWVk5VSUU1bGRIZHZjbXN4TGpBc0JnTlZCQU1USlZWVFJWSlVjblZ6ZENCRlEwTWdRMlZ5ZEdsbWFXTmhkR2x2YmlCQmRYUm9iM0pwZEhrd0hoY05NVEF3TWpBeE1EQXdNREF3V2hjTk16Z3dNVEU0TWpNMU9UVTVXakNCaURFTE1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBZ1RDazVsZHlCS1pYSnpaWGt4RkRBU0JnTlZCQWNUQzBwbGNuTmxlU0JEYVhSNU1SNHdIQVlEVlFRS0V4VlVhR1VnVlZORlVsUlNWVk5VSUU1bGRIZHZjbXN4TGpBc0JnTlZCQU1USlZWVFJWSlVjblZ6ZENCRlEwTWdRMlZ5ZEdsbWFXTmhkR2x2YmlCQmRYUm9iM0pwZEhrd2RqQVFCZ2NxaGtqT1BRSUJCZ1VyZ1FRQUlnTmlBQVFhckZSYXFmbG9JK2Q2MVNSdlU4WmEyRXVyeHRXMjBlWnpjYTdkbk5ZTVlmM2JvSWtEdUFVVTdGZk83bDAvNGlHenp2ZlVpbm5nbzROK0xaZlFZY1R4bWR3bGtXT3JmekNqdEhEaXg2RXpuUE8vTGx4VHNWK3pmVEovaWpUamVYbWpRakJBTUIwR0ExVWREZ1FXQkJRNjRRbUcxTThad3BaMmRFbDIzT0ExeG1Oam1qQU9CZ05WSFE4QkFmOEVCQU1DQVFZd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBS0JnZ3Foa2pPUFFRREF3Tm9BREJsQWpBMlo2RVdDTnprbHdCQkhVNis0V01Cenp1cVFoRmtvSjJVT1FJUmVWeDdIZnBrdWU0V1FyTy9pc0lKeE96a3NVMENNUURwS21GSGpGSktTMDRZY1BiV1JOWnU5WU82YlZpOUpObFdTT3J2eEtKR2dZaHFPa2JScVp0TnlXSGEwVjFYYWhnPSIsIk1JSUVQakNDQXlhZ0F3SUJBZ0lFU2xPTUtEQU5CZ2txaGtpRzl3MEJBUXNGQURDQnZqRUxNQWtHQTFVRUJoTUNWVk14RmpBVUJnTlZCQW9URFVWdWRISjFjM1FzSUVsdVl5NHhLREFtQmdOVkJBc1RIMU5sWlNCM2QzY3VaVzUwY25WemRDNXVaWFF2YkdWbllXd3RkR1Z5YlhNeE9UQTNCZ05WQkFzVE1DaGpLU0F5TURBNUlFVnVkSEoxYzNRc0lFbHVZeTRnTFNCbWIzSWdZWFYwYUc5eWFYcGxaQ0IxYzJVZ2IyNXNlVEV5TURBR0ExVUVBeE1wUlc1MGNuVnpkQ0JTYjI5MElFTmxjblJwWm1sallYUnBiMjRnUVhWMGFHOXlhWFI1SUMwZ1J6SXdIaGNOTURrd056QTNNVGN5TlRVMFdoY05NekF4TWpBM01UYzFOVFUwV2pDQnZqRUxNQWtHQTFVRUJoTUNWVk14RmpBVUJnTlZCQW9URFVWdWRISjFjM1FzSUVsdVl5NHhLREFtQmdOVkJBc1RIMU5sWlNCM2QzY3VaVzUwY25WemRDNXVaWFF2YkdWbllXd3RkR1Z5YlhNeE9UQTNCZ05WQkFzVE1DaGpLU0F5TURBNUlFVnVkSEoxYzNRc0lFbHVZeTRnTFNCbWIzSWdZWFYwYUc5eWFYcGxaQ0IxYzJVZ2IyNXNlVEV5TURBR0ExVUVBeE1wUlc1MGNuVnpkQ0JTYjI5MElFTmxjblJwWm1sallYUnBiMjRnUVhWMGFHOXlhWFI1SUMwZ1J6SXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFDNmhMWnkyNTRNYStLWjZUQUJwM2JxTXJpVlFSckoybUZPV0hMUC92YUNlYjl6WVFZS3BTZllzMS9UUlU0Y2N0Wk9Ndkp5aWcvM2d4blFhb0NBQUVVZXNNZm5tcjhTVnljY28yZ3ZDb2U5YW1zT1htWHpISGZWMUlXTmNDRzBzekxuaTZMVmhqa0NzYmpTUjg3a3lVbkVPNmZlKzFSOVY3N3c2RzdDZWJJNkMxWGlVSmdXTWhOY0wzaFd3Y0tVcy9KYTVDZWFueVRYeHV6UW15V0M0OHpDeEVYRmpKZDZCbXNxRVorcENtNUlPMi9iMUJFWlF2ZVBCNy8xVTErY1B2UVhMT1pwckU0eVRHSjM2cmZvNWJzMHZCbUxycHhSNTdkK3RWT3hNeUxsYmM5d1BCcjY0cHRudG9QMGphV3ZZa3hONEZpc1pEUVNBL2kyalpSakpLUnhBZ01CQUFHalFqQkFNQTRHQTFVZER3RUIvd1FFQXdJQkJqQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01CMEdBMVVkRGdRV0JCUnFjaVo2MEI3dmZlYzdhVkhVYkkyZmtCSm1xekFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBZVo4ZGxzYTJlVDhpallmVGh3TUVZR3BybWk1WmlYTVJyRVBSOVJQL2pUa3J3UEs5VDNDTXFTL3FGOFFMVko3VUc1YVlNenlvcldLaUFIYXJXV2x1QmgxK3hMbEVqWml2RXRSaDJ3b1pSa2Z6Ni9kandVQUZRS1hTdC9TMW1qYS9xWWgyaUFSVkJDdWNoMzhhTnp4K0xhVWEyTlNKWHNxOXJEMXMyRzJ2MWZOMkQ4MDdpRGdpbld5VG1zUTl2NEliWlQrbUQxMnEvT1d5RmNxMXJjYThQZENFNk9vR2NyQk5PVEo0dno0Um5BdWtuWm9oOC9DYkN6QjQyOEhjaDBQK3ZHT2F5c1hDSE1uSGpmODdFbGdJNXJZOTdIb3NUdnVEbHM0TVBHbUhWSE9rYzhLVC8xRVFyQlZVQWRqOEJiR0pvWDkwZzVwSjE5eE9lNHBJYjR0RjlnPT0iLCJNSUlDQ2pDQ0FaR2dBd0lCQWdJUWJrZXB5SXVVdHVpN095cllvckxCbVRBS0JnZ3Foa2pPUFFRREF6QkhNUXN3Q1FZRFZRUUdFd0pWVXpFaU1DQUdBMVVFQ2hNWlIyOXZaMnhsSUZSeWRYTjBJRk5sY25acFkyVnpJRXhNUXpFVU1CSUdBMVVFQXhNTFIxUlRJRkp2YjNRZ1VqUXdIaGNOTVRZd05qSXlNREF3TURBd1doY05Nell3TmpJeU1EQXdNREF3V2pCSE1Rc3dDUVlEVlFRR0V3SlZVekVpTUNBR0ExVUVDaE1aUjI5dloyeGxJRlJ5ZFhOMElGTmxjblpwWTJWeklFeE1RekVVTUJJR0ExVUVBeE1MUjFSVElGSnZiM1FnVWpRd2RqQVFCZ2NxaGtqT1BRSUJCZ1VyZ1FRQUlnTmlBQVR6ZEhPbmFJdGdya080TmNXQk1IdExTWjM3d1dITzV0NUd2V3ZWWVJnMXJrRGRjL2VKa1RCYTZ6enVoWHlpUUhZN3FjYTRSOWdxNTVLUmFuUHBzWEk1bnltZm9walRYMTVZaG1VUG9ZUmxCdEhjaThuSGM4aU1haS9seEt2UkhZcWpRakJBTUE0R0ExVWREd0VCL3dRRUF3SUJCakFQQmdOVkhSTUJBZjhFQlRBREFRSC9NQjBHQTFVZERnUVdCQlNBVE5icmRQOUpOcVBWMlB5MVBzVnE4SlFkakRBS0JnZ3Foa2pPUFFRREF3Tm5BREJrQWpCcVVGSjBDTVJ3M0o1UWRDSG9qWG9odzArV2JoWFJJalZoTGZvSU4rNFpiYTNic3N4OUJ6VDFZQmtzdFRUWmJ5QUNNQU54c2JxallBdUc3Wm9JYXBWb24rS3o0Wk5rZkY2VHB0OTVMWTJGNDVUUEkxMXh6UEt3VGRiK21jaVVxWFdpNHc9PSIsIk1JSUNSakNDQWMyZ0F3SUJBZ0lRQzZGYStoM2ZvTFZKUksvTkpLQnM3REFLQmdncWhrak9QUVFEQXpCbE1Rc3dDUVlEVlFRR0V3SlZVekVWTUJNR0ExVUVDaE1NUkdsbmFVTmxjblFnU1c1ak1Sa3dGd1lEVlFRTEV4QjNkM2N1WkdsbmFXTmxjblF1WTI5dE1TUXdJZ1lEVlFRREV4dEVhV2RwUTJWeWRDQkJjM04xY21Wa0lFbEVJRkp2YjNRZ1J6TXdIaGNOTVRNd09EQXhNVEl3TURBd1doY05Nemd3TVRFMU1USXdNREF3V2pCbE1Rc3dDUVlEVlFRR0V3SlZVekVWTUJNR0ExVUVDaE1NUkdsbmFVTmxjblFnU1c1ak1Sa3dGd1lEVlFRTEV4QjNkM2N1WkdsbmFXTmxjblF1WTI5dE1TUXdJZ1lEVlFRREV4dEVhV2RwUTJWeWRDQkJjM04xY21Wa0lFbEVJRkp2YjNRZ1J6TXdkakFRQmdjcWhrak9QUUlCQmdVcmdRUUFJZ05pQUFRWjU3eXNSR1h0emJnL1dQdU5zVmVwUkMwRkZmTHZDLzhRZEorMVlsSmZabjRmNWR3YlJYa0x6TVpUQ3AyTlhRTFpxVm5lQWxyMmxTb09qVGhLaWtuR3ZNWURPQWRmVmRwK0NXN2lmMTdRUlNBUFdYWVExcUFrOEMzZU52SnNLVG1qUWpCQU1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0RnWURWUjBQQVFIL0JBUURBZ0dHTUIwR0ExVWREZ1FXQkJUTDBMMnA0WmdGVWFGTk42S0RlYzZOSFNya2hEQUtCZ2dxaGtqT1BRUURBd05uQURCa0FqQWxwSUZGQW1zU1MzVjBUOGdqNDNEeWRYTGVmSW53ejVGeVlaNWVFSkpaVnJtRHh4RG5PT2xZSmpaOTFlUTBoamtDTUh3MlUvQXc1V0pqT3BuaXRxTTdtelQ2SHRvUWtuRmVrUk9uM2FSdWtzd3kxdlVoWnNjdjZwWmphbVZGa3BVQnRBPT0iLCJNSUlEdHpDQ0FwK2dBd0lCQWdJUURPZmc1UmZZUnY2UDVXRDhHL0F3T1RBTkJna3Foa2lHOXcwQkFRVUZBREJsTVFzd0NRWURWUVFHRXdKVlV6RVZNQk1HQTFVRUNoTU1SR2xuYVVObGNuUWdTVzVqTVJrd0Z3WURWUVFMRXhCM2QzY3VaR2xuYVdObGNuUXVZMjl0TVNRd0lnWURWUVFERXh0RWFXZHBRMlZ5ZENCQmMzTjFjbVZrSUVsRUlGSnZiM1FnUTBFd0hoY05NRFl4TVRFd01EQXdNREF3V2hjTk16RXhNVEV3TURBd01EQXdXakJsTVFzd0NRWURWUVFHRXdKVlV6RVZNQk1HQTFVRUNoTU1SR2xuYVVObGNuUWdTVzVqTVJrd0Z3WURWUVFMRXhCM2QzY3VaR2xuYVdObGNuUXVZMjl0TVNRd0lnWURWUVFERXh0RWFXZHBRMlZ5ZENCQmMzTjFjbVZrSUVsRUlGSnZiM1FnUTBFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUUN0RGhYTzVFT0FYTEdIODdkZytYRVNwYTdjSnBTSXF2VE85U0E1S0ZoZ0RQaUEycWtWbFRKaFBMV3hLSVNLaXR5ZkNneURGM3FQa0t5SzUzbFRYREdFS3ZZUG1ESTJkc3plM1R5b291OXEreUh5VW1IZm55RFhIK0t4MmY0WVpOSVNXMS81V0JnMXZFZk5vVGI1YTMvVXNEZyt3UnZEakRQWjJDOFkvaWdQczZlRDFzTnVSTUJoTlpZVy9sbWNpM1p0MS9HaVN3MHIvd3R5MnA1ZzBJNlFOY1o0VlljZ29jL2xiUXJJU1h3eG1ETnNJdW1IMERKYW9yb1RnaEh0T1JlZG1UcHlvZWI2cE5uVkZ6RjFyb1Y5SXE0L0FVYUc5aWg1eUxIYTVGY1h4SDRjRHJDMGtxWldzNzJ5bCsycXAvQzN4YWcvbFJiUS82R1c2d2hmR0hkUEFnTUJBQUdqWXpCaE1BNEdBMVVkRHdFQi93UUVBd0lCaGpBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUIwR0ExVWREZ1FXQkJSRjY2S3Y5SkxMZ2pFdFVZdW5weUdkODIzSUR6QWZCZ05WSFNNRUdEQVdnQlJGNjZLdjlKTExnakV0VVl1bnB5R2Q4MjNJRHpBTkJna3Foa2lHOXcwQkFRVUZBQU9DQVFFQW9nNjgzK0x0OE9OeWMzcGtsTC8zY21iWU11UkNkV0t1aCt2eTFkbmVWck9mek00VUtMa05sMkJjRWt4WTVOTTlnMGxGV0pjMWFScW9SK3BXeG5tckV0aG5nWVRmZndrOGxPYTRKaXdndlQyektJbjNYLzhpNHBlRUgrbGw3NGZnMzhGblNiTmQ2N0lKS3VzbTdYaStmVDhyODdjbU5XMWZpUUcyU1Z1ZkFRV2JxejBsd2N5MmY4THhiNGJHK21SbzY0RXRsT3RDdC9xTUh0MWk4YjVRWjdkc3ZmUHhIMnNNTmdjV2Z6ZDhxVnR0ZXZFU1JtQ0QxeWNFdmt2T2w3N0RaeXBvRWQrQTV3d3pacjhURFJSdTgzOGZZeEFlK28wYkpXMXNqNlczWVFHeDBxTW1vUkJ4bmEzaXcvbkRtVkczS3djSXppN21VTEtuK2dwRkw2THc4Zz09IiwiTUlJRldqQ0NBMEtnQXdJQkFnSVFia2VweGxxejV5REZNSm8vYUZMeWJ6QU5CZ2txaGtpRzl3MEJBUXdGQURCSE1Rc3dDUVlEVlFRR0V3SlZVekVpTUNBR0ExVUVDaE1aUjI5dloyeGxJRlJ5ZFhOMElGTmxjblpwWTJWeklFeE1RekVVTUJJR0ExVUVBeE1MUjFSVElGSnZiM1FnVWpJd0hoY05NVFl3TmpJeU1EQXdNREF3V2hjTk16WXdOakl5TURBd01EQXdXakJITVFzd0NRWURWUVFHRXdKVlV6RWlNQ0FHQTFVRUNoTVpSMjl2WjJ4bElGUnlkWE4wSUZObGNuWnBZMlZ6SUV4TVF6RVVNQklHQTFVRUF4TUxSMVJUSUZKdmIzUWdVakl3Z2dJaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQ0R3QXdnZ0lLQW9JQ0FRRE8zdjJtKyt6c0ZEUThCd1phYkZuM0dUWGQ5OEdkVmFyVHpUdWtrM0x2Q3ZwdG5mYndoWUJib1VoU256bkZ0KzRvck8vTGRtZ1V1ZCt0QVd5Wkg4UWlIWi8rY25mZ0xGdXY1QVMvVDNLZ0dqU1k2RGxvN0pVbGUzYWg1bW01aFJtOWlZeityZTAyNm5POC80UGl5MzNCMHM1S3M0MEZub3RKazkvQlc5QnVYdkF1TUM2Qy9QcTh0QmNLU09XSW04V2JhOTZ3eXJRRDhOcjBrTGhsWlBkY1RLM29mbVplbWRlNHdqN0kwQk9kcmU3a1JYdUpWZmVLSDJKU2hCS3p3a0NYNDRvZlI1R21kRnJTK0xGaktCQzRzd200Vm5kQW9pYVllY2IrM3lYdVB1V2dmOVJoRDFGTFBEK00ydUZ3ZE5qQ2FLSDV3UXpwb2VKL3UxVThkZ2J1YWs3TWtvZ3dUWnE5VHd0SW1vUzFtS1BWKzNQQlYySGRLRloxRTY2SGp1Y01VUWtRZFloTXZJMzVlenpVSWtnZkt0enJhN3RFc2NzemNUSkdyNjFLOFl6b2REcXM1eG9pYzREU01QY2xRc2NpT3pzU3JaWXV4c04yQjZvZ3R6VkpWK21TU2VoMkZuSXhaeXVXZm9xang1UldJcjlxUzM0QkliSWpNdC9rbWtSdFdWdGQ5UUNnSEp2R2VKZU5rUCtieUtxMHJ4RlJPVjdaKzJldDFWc1JuVEthRzczVnVsdWx5Y3NsYVZOVkoxemd5amJMaUdIN0hyZlF5KzRXKzlPbVRONlNwZFRpMy9VR1ZONHVuVXUwa3pDcWdjN2RHdHhSY3cxUGNPbmx0aFloR1hteTVva0xkV1RLMWF1OENjRVlvZi9VVktHRlBQMFVKQU95aDlPa3R3SURBUUFCbzBJd1FEQU9CZ05WSFE4QkFmOEVCQU1DQVFZd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBZEJnTlZIUTRFRmdRVXUvL0tqaU9mVDVuSzIrSm9wcVVWSnhjZTJRNHdEUVlKS29aSWh2Y05BUUVNQlFBRGdnSUJBTFpwOEtaMy9wN3VDNEd0NGNDcHgvazFIVUNDcStZRXROL0w5eDBQZy9CK0UwMk5qTzdqTXlMRE9meEEzMjVCUzBKVHZoYUk4ZEk0WHNSb21SeVlVcE9NNTJqdEcycHplZ1ZBVFg5bE85Wlk4YzZEUjJEai81ZXBuR0IzR0ZXMWZnaVR6OUQyUEdjREZXRUorWUY1OWV4VHBKL0pqd0dMYzhSM2R0eURvdlVNU1Jxb2R0NlNtMlQ0c3l6Rko5TUh3QWlBcEppUzR3R1dBcW9DN284N3hkRnRDak13YzNpNVQxUVd2d3NIb2FSYzVzdkpYSVNQRCtBVmR5eCtKbjdheEV2YnB4WjNCN0ROZGVoeVF0YVZoSjJHZy9Ma2tNMEpSOVNMQTNEYVdzWURRdlR0TjZMd0cxQlVTdzdZaE40WktKbUJSNjRKR3o5STBjTnY0ckJnRi9YdUl3S2wyZ0JiYlpDcjdxTHBHenZweDBRblJZNXJuL1draEx4MytXdVhyRDVSUmFJUnBzeUY3Z3BvOGo1UU9Ib2tZaDRYSURkdGFrMjNDWnZKL0tSWTliYjduRTRZdTVVQzU2R3Rtd2Z1Tm1zazBqbUd3Wk9EVU5LQlJxaGZZbGNzdTJ4a2lBaHU3eE5VWDkwdHhHZGowOCtKTjcrZElQVDdlb09ib0I2QkFGREM1QXdpV1ZJUTdVTldod0Q0RkZLbkhZdVRqS0pOUm44bnhuR2JKTjdrMm9hTERYNXJJTUhBbnVGbDJHcWpwdWlGaXpvSENCeTY5WTlWbWhoMWZ1WHNnV2JSSVhPaE5VUUxnRDFibkY1dktoZVcwWU1qaUdadDVvYmljREl2VWlMbnlPZC94Q3hnWFMvRHI1NUZCY09FQXJmOUxBaFNUNExkby9EVWhna0MiLCJNSUlDK1RDQ0FvQ2dBd0lCQWdJTkFLYUxlU2tBQUFBQVVOQ1IrVEFLQmdncWhrak9QUVFEQXpDQnZ6RUxNQWtHQTFVRUJoTUNWVk14RmpBVUJnTlZCQW9URFVWdWRISjFjM1FzSUVsdVl5NHhLREFtQmdOVkJBc1RIMU5sWlNCM2QzY3VaVzUwY25WemRDNXVaWFF2YkdWbllXd3RkR1Z5YlhNeE9UQTNCZ05WQkFzVE1DaGpLU0F5TURFeUlFVnVkSEoxYzNRc0lFbHVZeTRnTFNCbWIzSWdZWFYwYUc5eWFYcGxaQ0IxYzJVZ2IyNXNlVEV6TURFR0ExVUVBeE1xUlc1MGNuVnpkQ0JTYjI5MElFTmxjblJwWm1sallYUnBiMjRnUVhWMGFHOXlhWFI1SUMwZ1JVTXhNQjRYRFRFeU1USXhPREUxTWpVek5sb1hEVE0zTVRJeE9ERTFOVFV6Tmxvd2diOHhDekFKQmdOVkJBWVRBbFZUTVJZd0ZBWURWUVFLRXcxRmJuUnlkWE4wTENCSmJtTXVNU2d3SmdZRFZRUUxFeDlUWldVZ2QzZDNMbVZ1ZEhKMWMzUXVibVYwTDJ4bFoyRnNMWFJsY20xek1Ua3dOd1lEVlFRTEV6QW9ZeWtnTWpBeE1pQkZiblJ5ZFhOMExDQkpibU11SUMwZ1ptOXlJR0YxZEdodmNtbDZaV1FnZFhObElHOXViSGt4TXpBeEJnTlZCQU1US2tWdWRISjFjM1FnVW05dmRDQkRaWEowYVdacFkyRjBhVzl1SUVGMWRHaHZjbWwwZVNBdElFVkRNVEIyTUJBR0J5cUdTTTQ5QWdFR0JTdUJCQUFpQTJJQUJJUVR5ZEM2YlVGNzRtelE2MVZmWmdJYUpQUmJpV2xINDdqQ2ZmSHlBc1dmb1BaYjFZc0dHWVpQVXhCdEJ5UW5vYUQ0MVVjWllVeDl5cE1uNm5RTTcyK1dDZjVqN0hCZE5xMW5kNjdKblh4VlJEcWlZMUVmOWVOaTFLbEhCejdNSUtOQ01FQXdEZ1lEVlIwUEFRSC9CQVFEQWdFR01BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0hRWURWUjBPQkJZRUZMZGo1eHJkamVrSXBsV0RwT0JxVUVGbEVVSkpNQW9HQ0NxR1NNNDlCQU1EQTJjQU1HUUNNR0Y1Mk9WQ1I5OGNybE9aRjdadkhIM2h2eEdVMFFPSWRlU05pYVNLZDBiZWJXSHZBdlg3dGQvTS9rNy8vcW5tcHdJd1c1blhoVGNHdFhzSS9lc25pMHFVK2VINnA0NG1DT2g4a21odGM5aHZKcXdoQXJpWnR5WkJXeVZncnRCSUd1NEciLCJNSUlGWURDQ0EwaWdBd0lCQWdJSkFPajZHV01VMHZvWU1BMEdDU3FHU0liM0RRRUJDd1VBTUJzeEdUQVhCZ05WQkFVVEVHWTVNakF3T1dVNE5UTmlObUl3TkRVd0hoY05NVFl3TlRJMk1UWXlPRFV5V2hjTk1qWXdOVEkwTVRZeU9EVXlXakFiTVJrd0Z3WURWUVFGRXhCbU9USXdNRGxsT0RVellqWmlNRFExTUlJQ0lqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FnOEFNSUlDQ2dLQ0FnRUFyN2JIZ2l1eHB3SHNLN1F1aTh4VUZtT3I3NWd2TXNkL2RURURESmRTU3h0ZjZBbjd4eXFwUlI5MFBMMmFieE0xZEVxbFhuZjJ0cXcxTmU0WHdsNWpsUmZkbkpMbU4wcFR5LzRsajQvN3R2MFNrM2lpS2t5cG5FVXRSNldmTWdIMFFaZktITTErZGkreTlURlJ0djZ5Ly8wcmIrVCtXOGE5bnNOTC9nZ2puYXI4NjQ2MXFPMHJPczJjWGpwM2tPRzFGRUo1TVZtRm1CR3RucktwYTczWHBYeVRxUnhCL00wbjFuL1c5bkdxQzRGU1lhMDRUNk41UklaR0JOMnoyTVQ1SUtHYkZsYkM4VXJXMER4VzdBWUltUVFjSHRHbC9tMDBRTFZXdXRIUW9WSlluRlBsWFRjSFl2QVNMdStSaGhzYkRteE1nSkowbWNEcHZzQzRQanZCK1R4eXdFbGdTNzB2RTBYbUxEK09KdHZzQnNsSFp2UEJLQ09kVDBNUyt0Z1NPSWZnYSt6MVoxZzcrRFZhZ2Y3cXV2bWFnOGpmUGlveUt2eG5LL0Vnc1RVVmkyZ2h6cTh3bTI3dWQvbUlNN0FZMnFFT1JSOEdvM1RWQjRIeldRZ3BacnQzaTVNSWxDYVk1MDRMelNSaWlnSEN6QVBsSHdzK1cwckI1TitlcjUvMnBKS25mQlNEaUNpRkFWdENMT1o3Z0xpTW0wamhPMkI2dFVYSEkvK01SUGp5MDJpNTlsSU5NUlJldjU2R0t0Y2Q5cU8vMGtVSldkWlRkQTJYb1M4Mml4UHZadFhRcFVwdUwxMmFiKzlFYURLOFo0UkhKWVlmQ1QzUTV2TkFYYWlXUSs4UFRXbTJRZ0JSL2Jrd1NXYytOcFVGZ05QTjlQdlFpOFdFZzVVbUFHTUNBd0VBQWFPQnBqQ0JvekFkQmdOVkhRNEVGZ1FVTm1IaEFIeUlCUWxSaTBSc1IvOGFUTW5xVHhJd0h3WURWUjBqQkJnd0ZvQVVObUhoQUh5SUJRbFJpMFJzUi84YVRNbnFUeEl3RHdZRFZSMFRBUUgvQkFVd0F3RUIvekFPQmdOVkhROEJBZjhFQkFNQ0FZWXdRQVlEVlIwZkJEa3dOekExb0RPZ01ZWXZhSFIwY0hNNkx5OWhibVJ5YjJsa0xtZHZiMmRzWldGd2FYTXVZMjl0TDJGMGRHVnpkR0YwYVc5dUwyTnliQzh3RFFZSktvWklodmNOQVFFTEJRQURnZ0lCQUNESXc0MUwzS2xYRzBhTWlTLy9jcXJHK0VTaEhVR284SE5zdzMwVzFrSnRqbjZVQndSTTZqbm1pd2ZCUGI4VkE5MWNoYjJ2c3NBdFgyemJUdnFCSjkrTEJQR0Nkdy9FNTNSYmY4NnFoeEthaUFIT2pwdkF5NVkzbTAwbXFDMHcvWnd2anUxdHdiNHZoTGFKNU5rVUpZc1VTN3JtSktISEJuRVRMaThHRnFpRXNxVFdwRy82aWJZQ3Y3cllEQkpEY1I5VzYyQlc5amZJb0JRY3hVQ1VKb3VNUEgyNWxMTmNEYzFzc3F2QzJ2N2lVZ0k5TGVvTTFzTm92cVBtUVVpRzlySGxpMXZYeHpDeWFNVGp3ZnRrSkxrZjY3MjRERmh1S3VnMmpJVFYwUWtYdmFKV0Y0blVhSE9UTkE0dUpVOVdEdlpMSTFqODNBKy94bkFKVXVjSXYvekdKMUFNSDJib0hxRjhDWTE2THBzWWdCdDZ0S3h4V0gwMFhjeURDZFcyS2xCQ2VxYlFQY3NGbVd5V3VneGRjZWtoWXNBV3lvU2Y4MThOVXNaZEJXQmFSL091a1hyTkxma1E3OUl5Wm9oWmJ2YWJPL1grTVZUM3JyaUFvS2M4b0UyVXdzNkRGKzYwUFY3L1dJUGpOdlh5U2Rxc3BJbVNONzhtZmx4RHF3THFSQllrQTNJNzVxcHBMR0c5cnA3VUNkUmp4TWw4WkRCbGQrN3l2SFZndDFjVnpKeDl4bnlHQ0MyM1VhaWNNRFNYWXJCNEk0V0hYUEdqeGhadUN1UEJMVGRPTFU4WVJ2TVlkRXZZZWJXSE1wdndHQ0Y2YkF4M0pCcEllT1Exd0RCNXkwVVNpY1YzWWdZR21pK05aZmhBNFVSU2g3N1lkNnV1Sk9KRU5SYU5WVHprIiwiTUlJRGR6Q0NBbCtnQXdJQkFnSUVBZ0FBdVRBTkJna3Foa2lHOXcwQkFRVUZBREJhTVFzd0NRWURWUVFHRXdKSlJURVNNQkFHQTFVRUNoTUpRbUZzZEdsdGIzSmxNUk13RVFZRFZRUUxFd3BEZVdKbGNsUnlkWE4wTVNJd0lBWURWUVFERXhsQ1lXeDBhVzF2Y21VZ1EzbGlaWEpVY25WemRDQlNiMjkwTUI0WERUQXdNRFV4TWpFNE5EWXdNRm9YRFRJMU1EVXhNakl6TlRrd01Gb3dXakVMTUFrR0ExVUVCaE1DU1VVeEVqQVFCZ05WQkFvVENVSmhiSFJwYlc5eVpURVRNQkVHQTFVRUN4TUtRM2xpWlhKVWNuVnpkREVpTUNBR0ExVUVBeE1aUW1Gc2RHbHRiM0psSUVONVltVnlWSEoxYzNRZ1VtOXZkRENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFLTUV1eUtybUQxWDZDWnltclY1MUNuaTRlaVZnTEd3NDF1T0t5bWFaTitoWGUyd0NRVnQyeWd1em1LaVl2NjBpTm9TNnpqcklaM0FRU3NCVW51SWQ5TWNqOGU2dVlpMWFnbm5jK2dSUUtmUnpNcGlqUzNsand1bVVOS29VTU1vNnZXckpZZUttcFljcVdlNFB3elY5L2xTRXkvQ0c5VndjUENQd0JMS0JzdWE0ZG5LTTNwMzF2anN1ZkZvUkVKSUU5TEF3cVN1WG1EK3RxWUYvTFRkQjFrQzFGa1ltR1AxcFdQZ2tBeDlYYklHZXZPRjZ1dlVBNjVlaEQ1Zi94WHRhYno1T1RaeWRjOTNVazN6eVpBc3VUM2x5U05UUHg4a21DRmNCNWtwdmNZNjdPZHVoanBybDNSak03MW9HREh3ZUkxMnYveWVqbDBxaHFkTmtOd25HamtDQXdFQUFhTkZNRU13SFFZRFZSME9CQllFRk9XZFdUQ0NSMWpNclBvSVZEYUdlenExQkUzd01CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRTXdEZ1lEVlIwUEFRSC9CQVFEQWdFR01BMEdDU3FHU0liM0RRRUJCUVVBQTRJQkFRQ0ZERjJPNUc5UmFFSUZvTjI3VHljbGhBTzk5MlQ5TGRjdzQ2UVFGK3ZhS1NtMmVUOTI5aGtUSTdnUUN2bFlwTlJoY0wwRVlXb1NpaGZWQ3IzRnZEQjgxdWtNSlkyR1FFL3N6S04rT01ZM0VVL3QzV2d4amt6U3N3RjA3cjUxWGdkSUduOXcveFpjaE1CNWhiZ0YvWCsrWlJHakQ4QUN0UGhTTnprRTFha3hlaGkvb0NyMEVwbjNvMFdDNHp4ZTlaMmV0Y2llZkM3SXBKNU9DQlJMYmYxd2JXc2FZNzFrNWgrM3p2RHlueTY3RzdmeVVJaHprc0xpNHhhTm1qSUNxNDRZM2VrUUVlNStOYXVRcno0d2xIclFNejJuWlEvMS9JNmVZczlIUkN3Qlhic2R0VExTUjlJNEx0RCtnZHd5YWg2MTdqelYvT2VCSFJuREpFTHFZem1wIiwiTUlJRjNqQ0NBOGFnQXdJQkFnSVFBZjF0TVB5anlsR29HN3hrRGpVRExUQU5CZ2txaGtpRzl3MEJBUXdGQURDQmlERUxNQWtHQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdUQ2s1bGR5QktaWEp6WlhreEZEQVNCZ05WQkFjVEMwcGxjbk5sZVNCRGFYUjVNUjR3SEFZRFZRUUtFeFZVYUdVZ1ZWTkZVbFJTVlZOVUlFNWxkSGR2Y21zeExqQXNCZ05WQkFNVEpWVlRSVkpVY25WemRDQlNVMEVnUTJWeWRHbG1hV05oZEdsdmJpQkJkWFJvYjNKcGRIa3dIaGNOTVRBd01qQXhNREF3TURBd1doY05Nemd3TVRFNE1qTTFPVFU1V2pDQmlERUxNQWtHQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdUQ2s1bGR5QktaWEp6WlhreEZEQVNCZ05WQkFjVEMwcGxjbk5sZVNCRGFYUjVNUjR3SEFZRFZRUUtFeFZVYUdVZ1ZWTkZVbFJTVlZOVUlFNWxkSGR2Y21zeExqQXNCZ05WQkFNVEpWVlRSVkpVY25WemRDQlNVMEVnUTJWeWRHbG1hV05oZEdsdmJpQkJkWFJvYjNKcGRIa3dnZ0lpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElDRHdBd2dnSUtBb0lDQVFDQUVtVVhOZzdEMndpejBLeFhEWGJ0elNmVFRLMVFnMkhpcWlCTkNTMWtDZHpPaVovTVBhbnM5cy9CM1BIVHNkWjdOeWdSSzBmYU9jYThPaG0wWDZhOWZaMmpZMEsyZHZLcE95dVIrT0p2ME93V0lKQUpQdUxvZE1rWXRKSFVZbVRiZjZNRzhZZ1lhcEFpUEx6K0UvQ0hGSHYyNUIrTzFPUlJ4aEZuUmdoUnk0WVVWRCs4TS81K2JKei9GcDBZdlZHT05hYW5ac2h5WjlzaFpySFVtM2dEd0ZBNjZNenczTHllVFA2dkJaWTFIMWRhdC8vTytUMjNMTGIyVk4zSTV4STZUYTVNaXJkY21yUzNJRDNLZnlJMHJuNDdhR1lCUk9jQlRrWlRtek5nOTVTK1V6ZVFjMFB6TXNOVDc5dXEvblJPYWNkcmpHQ1Qzc1RIRE4vaE1xN01renRSZUpWbmkrNDlWdjRNMEdrUEd3L3pKU1pyTTIzM2JrZjZjMFBsZmc2bFpyRXBmREtFWTFXSnhBM0JrMVF3R1JPczAzMDNwK3RkT213MVhOdEIxeExhcVVrTDM5aUFpZ21UWW82MVpzOGxpTTJFdUxFL3BEa1AyUUtlNnhKTWxYenphd1dwWGhhRHpMaG40dWdUbmN4Ymd0Tk1zKzFiLzk3bGM2d2pPeTBBdnpWVmRBbEoyRWxZR24rU051WlJrZzd6Sm4wY1RSZTh5ZXhESnRDL1FWOUFxVVJFOUpublY0ZWVVQjlYVktnKy9YUmpMN0ZRWlFubVdFSXVReHBNdFBBbFIxbjZCQjZUMUNaR1NsQ0JzdDYrZUxmOFp4WGh5VmVFSGc5ajF1bGl1dFpmVlM3cVhNWW9DQVFsT2JnT0s2bnlUSmNjQno4TlV2WHQ3eStDRHdJREFRQUJvMEl3UURBZEJnTlZIUTRFRmdRVVUzbS9XcW9yU3M5VWdPSFltOENkOHJJRFpzc3dEZ1lEVlIwUEFRSC9CQVFEQWdFR01BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0RRWUpLb1pJaHZjTkFRRU1CUUFEZ2dJQkFGelVmQTNQOXdGOVFabGxESFBGVXAvTCtNK1pCbjhiMmtNVm41NENWVmVXRlBGU1BDZUhsQ2p0SHpvQk42SjIvRk5Rd0lTYnhtdE91b3doVDZLT1ZXS1I4MmtWMkx5STQ4U3FDLzN2cU9sTFZTb0dJRzFWZUNrWjdsOHdYRXNrRVZYL0pKcHVYaW9yN2d0Tm4zLzNBVGlVRkpWREJ3bjdZS251SEtzU2pLQ2FYcWVZYWxsdGl6OEkrOGpSUmE4WUZXU1FFZzl6S0M3RjRpUk8vRmpzOFBSRi9pS3o2eStPMHRsRllRWEJsMitvZG5LUGk0dzJyNzhOQmM1eGplYW1ieDlzcG5GaXhkalFnM0lNOFdjUmlReWNFMHh5Tk4rODFYSGZxbkhkNGJsc2pEd1NYV1hhdlZjU3RrTnIvK1hlVFdZUlVjK1pydXdYdHVoeGtZemVTZjdkTlhHaUZTZVVITTloNHlhN2I2Tm5KU0ZkNXQwZEN5NW9HenVDcit5RFo0WFVtRkYwc2JtWmdJbi9mM2daWEhsS1lDNlNRSzVNTnlvc3ljZGl5QTVkOXpaYnl1QWxKUUcwM1JvSG5IY0FQOURjMWV3OTFQcTdQOHlGMW05L3FTM2Z1UUwzOVplYXRUWGF3MmV3aDBxcEtKNGpqdjljSjJ2aHNFL3pCKzRBTHRSWmg4dFNRWlhxOUVmWDdtUkJWWHlOV1FLVjNXS2R3cm51V2loMGhLV2J0NURIREFmZjlZazJkRExXS01Hd3NBdmduRXpESE5iODQybTFSMGFCTDZLQ3E5TmpSSERFamY4dE03cXRqM3UxY0lpdVBoblBRQ2pZL01pUXUxMlpJdlZTNWxqRkg0Z3hRKzZJSGRmR2pqeERhaDJuR041OVBSYnhZdm5La0tqOSIsIk1JSUR4VENDQXEyZ0F3SUJBZ0lCQURBTkJna3Foa2lHOXcwQkFRc0ZBRENCZ3pFTE1Ba0dBMVVFQmhNQ1ZWTXhFREFPQmdOVkJBZ1RCMEZ5YVhwdmJtRXhFekFSQmdOVkJBY1RDbE5qYjNSMGMyUmhiR1V4R2pBWUJnTlZCQW9URVVkdlJHRmtaSGt1WTI5dExDQkpibU11TVRFd0x3WURWUVFERXloSGJ5QkVZV1JrZVNCU2IyOTBJRU5sY25ScFptbGpZWFJsSUVGMWRHaHZjbWwwZVNBdElFY3lNQjRYRFRBNU1Ea3dNVEF3TURBd01Gb1hEVE0zTVRJek1USXpOVGsxT1Zvd2dZTXhDekFKQmdOVkJBWVRBbFZUTVJBd0RnWURWUVFJRXdkQmNtbDZiMjVoTVJNd0VRWURWUVFIRXdwVFkyOTBkSE5rWVd4bE1Sb3dHQVlEVlFRS0V4RkhiMFJoWkdSNUxtTnZiU3dnU1c1akxqRXhNQzhHQTFVRUF4TW9SMjhnUkdGa1pIa2dVbTl2ZENCRFpYSjBhV1pwWTJGMFpTQkJkWFJvYjNKcGRIa2dMU0JITWpDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTDl4WWdqeCtsazA5eHZKR0tQM2dFbFk2U0tERTZiRklFTUJPNFR4NW9WSm55ZnE5b1FiVHFDMDIzQ1l4eklCc1FVK0IwN3U5UHBQTDFrd0l1ZXJHVlpyNG9BSC9QTVdkWUE1VVh2bCtUVzJkRTZwallJVDVMWS9xUU9EK3FLK2loVnFmOTRMdzdZWkZBWEs2c09vQkpRN1Jud3lEZk1BWmlMSWpXbHROb3dSR0xmVHNoeGd0RGo2QW96TzA5MUdCOTRLUHV0ZGZNaDgrN0FyVTZTU1ltbFJKUVZoR2tTQmpDeXBRNVlqMzZ3Nmdab09LY1VjcWVsZEhyYWVuakFLT2M3eGlJRDdTMTNNTXV5RllrTWxOQUpXSndHUnREdHdLajl1c2VpY2lBRjluOVQ1MjFOdFlKMi9MT2RZcTdoZlJ2ek94QnNEUEFuclNURmNhVWF6NEVjQ0F3RUFBYU5DTUVBd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBT0JnTlZIUThCQWY4RUJBTUNBUVl3SFFZRFZSME9CQllFRkRxYWhRY1FaeWkyNy9hOUJVRnVJTUdVMmcvZU1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQ1oyMTE1MWZtWFdXY0RZZkYrT3dZeGRTMmhJSTVQWlllMDk2YWN2TmpwTDlEYld1N1BkSXh6dERoQzJnVjcrQUoxdVAybHNkZXU5dGZlRTh0VEVINktSdEdYK3JjdUt4R3JrTEFuZ1Bub24xcnBONStyNU45c3M0VVhuVDNaSkU5NWtUWFdYd1RyZ0lPcm1nSXR0UkQwMkpESEJITkE3WElsb0ttZjdKNnJhQktaVjhhUEVqb0pwTDFFL1FZVk44R2I1REtqN1RqbzJHVHpMSDRVL0FMcW44My9CMmdYMnlLUU9DMTZqZEZVOFdualh6UEtlajE3Q3VQS2YxODU1ZUoxdXNWMkdEUE9MUEF2VEszM3NlZk9UNmpFbTBwVUJzVi9mZFVJRCtJYy9uNFh1S3hlOXRRV3NrTUpERTMycDJ1MG1ZUmx5bnFJNHVKRXZsejM2aHoxIiwiTUlJRU1qQ0NBeHFnQXdJQkFnSUJBVEFOQmdrcWhraUc5dzBCQVFVRkFEQjdNUXN3Q1FZRFZRUUdFd0pIUWpFYk1Ca0dBMVVFQ0F3U1IzSmxZWFJsY2lCTllXNWphR1Z6ZEdWeU1SQXdEZ1lEVlFRSERBZFRZV3htYjNKa01Sb3dHQVlEVlFRS0RCRkRiMjF2Wkc4Z1EwRWdUR2x0YVhSbFpERWhNQjhHQTFVRUF3d1lRVUZCSUVObGNuUnBabWxqWVhSbElGTmxjblpwWTJWek1CNFhEVEEwTURFd01UQXdNREF3TUZvWERUSTRNVEl6TVRJek5UazFPVm93ZXpFTE1Ba0dBMVVFQmhNQ1IwSXhHekFaQmdOVkJBZ01Fa2R5WldGMFpYSWdUV0Z1WTJobGMzUmxjakVRTUE0R0ExVUVCd3dIVTJGc1ptOXlaREVhTUJnR0ExVUVDZ3dSUTI5dGIyUnZJRU5CSUV4cGJXbDBaV1F4SVRBZkJnTlZCQU1NR0VGQlFTQkRaWEowYVdacFkyRjBaU0JUWlhKMmFXTmxjekNDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFMNUFuZlJ1NGVwMmh4eE5SVVNPdmtiSWd3YWR3U3IrR0IrTzVBTDY4NnRkVUlvV01RdWFCdERGY0NMTlNTMVVZOHkyYm1oR0MxUHF5MHdrd0x4eVR1cnhGYTcwVkpvU0NzTjZzak5nNHRxSlZmTWlXUFBlM00vdmc0YWlqSlJQbjJqeW1KQkdoQ2ZIZHIvanpEVXNpMTRIWkdXQ3dFaXdxSkg1WVo5MklGQ29rY2RtdGV0NFlnTlc4SW9hRStveG94NmdtZjA0OXZZbk1saHZCL1ZydVBzVUs2KzNxc3pXWTE5empOb0ZtYWc0cU1zWGVEWlJyT21lOUhnNmpjOFAyVUxpbUF5ckw1OE9BZDd2bjVsSjhTM2ZySFJORzVpMVI4WGxLZEg1a0JqSFlweStnOGNtZXo2S0pjZkEzWjNtTldnUUlKMlAyTjdTdzRTY0RWN29MOGtDQXdFQUFhT0J3RENCdlRBZEJnTlZIUTRFRmdRVW9CRUtJejZXOFFmczRxOHA3NEtsZjlBd3BMUXdEZ1lEVlIwUEFRSC9CQVFEQWdFR01BOEdBMVVkRXdFQi93UUZNQU1CQWY4d2V3WURWUjBmQkhRd2NqQTRvRGFnTklZeWFIUjBjRG92TDJOeWJDNWpiMjF2Wkc5allTNWpiMjB2UVVGQlEyVnlkR2xtYVdOaGRHVlRaWEoyYVdObGN5NWpjbXd3TnFBMG9ES0dNR2gwZEhBNkx5OWpjbXd1WTI5dGIyUnZMbTVsZEM5QlFVRkRaWEowYVdacFkyRjBaVk5sY25acFkyVnpMbU55YkRBTkJna3Foa2lHOXcwQkFRVUZBQU9DQVFFQUNGYjhBdkNiNlArayt0Wjd4a1NBemsvRXhmWUFXTXltdHJ3VVNXZ0VkdWptN2wzc0FnOWcxbzFRR0U4bVRnSGo1ckNsN3IrOGRGUkJ2LzM4RXJqSFQxcjBpV0FGZjJDM0JVcno5dkhDdjhTNWRJYTJMWDFyek5MelJ0MHZ4dUJxdzhNMEF5eDlsdDFhd2c2bkNwbkJCWXVyREMvelhEclBiRGRWQ1lmZVUwQnNXTy84dHF0bGJnVDJHOXc4NEZvVnhwN1o4VmxJTUNGbEEyenM2U0Z6N0pzRG9lQTNyYUFWR0kvNnVnTE9weXlwRUJNczFPVUlKcXNpbDJENGtGNTAxS0thVTczeXFXamdvbTdDMTJ5eG93K2V2K3RvNTFieXJ2TGpLemc2Q1lHMWE0WFh2aTN0UHhxM3NtUGk5V0lzZ3RScUFFRlE4VG1EbjVYcE5wYVliZz09IiwiTUlJRDNUQ0NBc1dnQXdJQkFnSUJBREFOQmdrcWhraUc5dzBCQVFzRkFEQ0JqekVMTUFrR0ExVUVCaE1DVlZNeEVEQU9CZ05WQkFnVEIwRnlhWHB2Ym1FeEV6QVJCZ05WQkFjVENsTmpiM1IwYzJSaGJHVXhKVEFqQmdOVkJBb1RIRk4wWVhKbWFXVnNaQ0JVWldOb2JtOXNiMmRwWlhNc0lFbHVZeTR4TWpBd0JnTlZCQU1US1ZOMFlYSm1hV1ZzWkNCU2IyOTBJRU5sY25ScFptbGpZWFJsSUVGMWRHaHZjbWwwZVNBdElFY3lNQjRYRFRBNU1Ea3dNVEF3TURBd01Gb1hEVE0zTVRJek1USXpOVGsxT1Zvd2dZOHhDekFKQmdOVkJBWVRBbFZUTVJBd0RnWURWUVFJRXdkQmNtbDZiMjVoTVJNd0VRWURWUVFIRXdwVFkyOTBkSE5rWVd4bE1TVXdJd1lEVlFRS0V4eFRkR0Z5Wm1sbGJHUWdWR1ZqYUc1dmJHOW5hV1Z6TENCSmJtTXVNVEl3TUFZRFZRUURFeWxUZEdGeVptbGxiR1FnVW05dmRDQkRaWEowYVdacFkyRjBaU0JCZFhSb2IzSnBkSGtnTFNCSE1qQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQUwzdHdRUDg5by84QXJGdlc1OUkyWjE1NHFLM0EyRldHTU5IdHRmS1BUVXVpVVAzb1dtYjNvb2EvUk1nbkxSSmR6SXBWdjI1N0l6ZEl2cHkzQ2RobCs3MldvVHNiaG01aVN6Y2hGdlZkUHRyWDhXSnBSQlNpVVpWOUxoMUhPWi81RlN1Uy9oVmNsY0NHZmdYY1ZuckhpZ0hkTVdkU0w1c3RQU2tzUE5rTjNtU3dPeEdYbi9oYlZOTVlxL05Id3RqdXpxZCsveDVBSmhoZE04bWdrQmo4N0p5YWhrTm1jclVEblhNTi91TGljRlo4V0ovWDdOZlpURDRwN2ROZGxvZWRsNDB3T2lXVnBtS3MvQi9wTTI5M0RJeGZKSFA0RjhSK0d1cVNWelJtWlRSb3VOald3bDJ0VlppNFV0MEhaYlVKdFFJQkZuUW1BNE81dDc4dyt3ZmtQRUNBd0VBQWFOQ01FQXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QU9CZ05WSFE4QkFmOEVCQU1DQVFZd0hRWURWUjBPQkJZRUZId01NaCtuMlRCL3hIMW9vMktvb2M2ckIxc25NQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUFSV2ZvbFR3TnZsSms3bWgrQ2hUblVkZ1dVWHVFb2syMWlYUW5Db0tqVXNIVTQ4VFJxbmVTZmlvWW1VZVlzMGNZdGJwVWdTcElCN0xpS1ozc3g0bWN1akpVREppNURuVW94OWc2MURMdTM0amQvSXJvQW93NTdVdnRydXp2RTAzbFJUczJROUdjSEdjZzhSbm9OQVgzRldPZHQ1b1V3RjVva3hCRGdCUGZnOG4vVXFnci9RaDAzN1pUbFpGa1NJSGM0MHpJK09JRjFsblA2YUkreHk4NGZ4ZXo2bkg3UGZySHhCeTIyL0wvS3BML1Fsd1ZLdk9vWUtBS1F2VlI0Q1NGeDA5RjlIZGtXc0tsaFBkQUtBQ0w4eDN2TENXUkZDenRBZ2ZkOWZETDFtTXBZam4wcTdwQlpjMlQ1Tm5SZUphSDFaZ1V1ZnprVnFTcjdVSXVPaFduMCIsIk1JSUNpVENDQWcrZ0F3SUJBZ0lRSDBldnFtSUFjRkJVVEFHZW0yT1pLakFLQmdncWhrak9QUVFEQXpDQmhURUxNQWtHQTFVRUJoTUNSMEl4R3pBWkJnTlZCQWdURWtkeVpXRjBaWElnVFdGdVkyaGxjM1JsY2pFUU1BNEdBMVVFQnhNSFUyRnNabTl5WkRFYU1CZ0dBMVVFQ2hNUlEwOU5UMFJQSUVOQklFeHBiV2wwWldReEt6QXBCZ05WQkFNVElrTlBUVTlFVHlCRlEwTWdRMlZ5ZEdsbWFXTmhkR2x2YmlCQmRYUm9iM0pwZEhrd0hoY05NRGd3TXpBMk1EQXdNREF3V2hjTk16Z3dNVEU0TWpNMU9UVTVXakNCaFRFTE1Ba0dBMVVFQmhNQ1IwSXhHekFaQmdOVkJBZ1RFa2R5WldGMFpYSWdUV0Z1WTJobGMzUmxjakVRTUE0R0ExVUVCeE1IVTJGc1ptOXlaREVhTUJnR0ExVUVDaE1SUTA5TlQwUlBJRU5CSUV4cGJXbDBaV1F4S3pBcEJnTlZCQU1USWtOUFRVOUVUeUJGUTBNZ1EyVnlkR2xtYVdOaGRHbHZiaUJCZFhSb2IzSnBkSGt3ZGpBUUJnY3Foa2pPUFFJQkJnVXJnUVFBSWdOaUFBUURSM3N2ZGNtQ0ZZWDdkZVNSRnRTcllwbjFQbElMQnM1QkFIK1g0UW9rUEIwQkJPNDkwbzBKbHd6Z2RlVDYrM2VLS3ZVRFlFczJpeFlqRnEwSmNmUks5Q2hRdFA2SUhHNC9iQzh2Q1ZsYnBWc0xNNW5pd3oySitXb3M3N0xUQnVtalFqQkFNQjBHQTFVZERnUVdCQlIxY2FjWlNCbThuWjNxUVVmZmxNUklkNW5UZVRBT0JnTlZIUThCQWY4RUJBTUNBUVl3RHdZRFZSMFRBUUgvQkFVd0F3RUIvekFLQmdncWhrak9QUVFEQXdOb0FEQmxBakVBN3dOYmVxeTNlQXB5dDRqZi83VkdGQWtLK3FEbWZRakdHb2U5R0toenZTYktZQXlkenBtZnoxd1BNT0crRkRIcUFqQVU5Sk04U2FjemVwQkdSN05qZlJPYlRyZHZHRGVBVS83ZElPQTFtamJSeHdHNTV0emQ4LzhkTERvV1Y5bVNPZFk9IiwiTUlJRHhUQ0NBcTJnQXdJQkFnSVFBcXhjSm1vTFFKdVBDM255cmtZbGR6QU5CZ2txaGtpRzl3MEJBUVVGQURCc01Rc3dDUVlEVlFRR0V3SlZVekVWTUJNR0ExVUVDaE1NUkdsbmFVTmxjblFnU1c1ak1Sa3dGd1lEVlFRTEV4QjNkM2N1WkdsbmFXTmxjblF1WTI5dE1Tc3dLUVlEVlFRREV5SkVhV2RwUTJWeWRDQklhV2RvSUVGemMzVnlZVzVqWlNCRlZpQlNiMjkwSUVOQk1CNFhEVEEyTVRFeE1EQXdNREF3TUZvWERUTXhNVEV4TURBd01EQXdNRm93YkRFTE1Ba0dBMVVFQmhNQ1ZWTXhGVEFUQmdOVkJBb1RERVJwWjJsRFpYSjBJRWx1WXpFWk1CY0dBMVVFQ3hNUWQzZDNMbVJwWjJsalpYSjBMbU52YlRFck1Da0dBMVVFQXhNaVJHbG5hVU5sY25RZ1NHbG5hQ0JCYzNOMWNtRnVZMlVnUlZZZ1VtOXZkQ0JEUVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTWJNNVhQbSs5Uzc1UzB0TXFiZjVZRS95YzBsU2JaeEtzUFZsRFJub2dvY3NGOXBwa0N4eExleWo5Q1lwS2xCV1RyVDNKVFdQTnQwT0tSS3pFMGxndmRLcFZNU09PN3pTVzF4a1g1anRxdW1YOE9raFBoUFlsRysrTVhzMnppUzR3YmxDSkVNeENoQlZmdkxXb2tWZm5Ib05iOU5jZ2s5dmpvNFVGdDNNUnVOczhja1JacW5yRzBBRkZvRXQ3b1Q2MUVLbUVGQklrNWxZWWVCUVZDbWVWeUozaGxLVjlVdTVsMGNVeXgrbU0wYUJoYWthSFBRTkFRVFhLRngwMXA4VmR0ZVpPRTNoekJXQk9VUnRDbUFFdkY1T1lpaUFoRjhKMmEzaUxkNDhzb0txRGlyQ21UQ3YyWmRsWVRCb1NVZWgxMGFVQXNnRXN4QnUyNExVVGk0UzhzQ0F3RUFBYU5qTUdFd0RnWURWUjBQQVFIL0JBUURBZ0dHTUE4R0ExVWRFd0VCL3dRRk1BTUJBZjh3SFFZRFZSME9CQllFRkxFK3cya0QrTDlIQWRTWUpob0lBdTlqWkN2RE1COEdBMVVkSXdRWU1CYUFGTEUrdzJrRCtMOUhBZFNZSmhvSUF1OWpaQ3ZETUEwR0NTcUdTSWIzRFFFQkJRVUFBNElCQVFBY0dnYVgzTmVjbnp5SVpnWUlWeUhiSVVmNEttZXF2eGd5ZGtBUVY4R0s4M3JaRVdXT05mcWUvRVcxbnRsTU1VdTRrZWhETEk2emVNN2I0MU41Y2RibElaUUIybFdIbWlSazlvcG16TjZjTjgyb05MRnBteVBJbm5naUszQkQ0MVZITVdFWjcxakZoUzlPTVBhZ01SWWp5T2ZpWlJZenk3OGFHNkE5K01wZWl6R0xZQWlKTFF3R1hGSzN4UGtLbU5FVlg1OFN2bncyWXppOVJLUi81Q1lyQ3NTWGFRM3BqT0xBRUZlNHlIWVNrVlh5U0duWXZDb0NXdzlFMUNBeDIvUzZjQ1pka0dDZXZFc1hDUysweXg1RGFNa0hKOEhTWFBmcUlibG9FcHc4bkwrZS9JQmNtMlBON0VlcUpTZG5vRGZ6QUlKOVZOZXArT2t1RTZOMzZCOUsiLCJNSUlDUHpDQ0FjV2dBd0lCQWdJUUJWVld2UEplcERVMXc2UVAxYXRGY2pBS0JnZ3Foa2pPUFFRREF6QmhNUXN3Q1FZRFZRUUdFd0pWVXpFVk1CTUdBMVVFQ2hNTVJHbG5hVU5sY25RZ1NXNWpNUmt3RndZRFZRUUxFeEIzZDNjdVpHbG5hV05sY25RdVkyOXRNU0F3SGdZRFZRUURFeGRFYVdkcFEyVnlkQ0JIYkc5aVlXd2dVbTl2ZENCSE16QWVGdzB4TXpBNE1ERXhNakF3TURCYUZ3MHpPREF4TVRVeE1qQXdNREJhTUdFeEN6QUpCZ05WQkFZVEFsVlRNUlV3RXdZRFZRUUtFd3hFYVdkcFEyVnlkQ0JKYm1NeEdUQVhCZ05WQkFzVEVIZDNkeTVrYVdkcFkyVnlkQzVqYjIweElEQWVCZ05WQkFNVEYwUnBaMmxEWlhKMElFZHNiMkpoYkNCU2IyOTBJRWN6TUhZd0VBWUhLb1pJemowQ0FRWUZLNEVFQUNJRFlnQUUzYWZadTRxNEMvc0xmeUhTOEw2K2MvTXpYUnE4Tk9yZXhwdTgwSlgyOE16UUM3cGhXMUZHZnA0dG4rNk9Zd3dYN0FkdzljK0VMa0NEbk9nL1FXMDdyZE9rRkZrMmVKMERRKzRRRTJ4eTNxNklwNkZydFVQT1o5d2ovd01jbytJK28wSXdRREFQQmdOVkhSTUJBZjhFQlRBREFRSC9NQTRHQTFVZER3RUIvd1FFQXdJQmhqQWRCZ05WSFE0RUZnUVVzOXRJcFBtaHhkaXVOa0hNRVdOcFlpbThTOFl3Q2dZSUtvWkl6ajBFQXdNRGFBQXdaUUl4QUsyODhtdy9Fa3JSTFRuRENnbVhjL1NJTm95SUo3dm1pSTFRaGFkaitaNHkzbWFURC9ITXNRbVAzV3lyK210L29BSXdPV1pid21TTnVKNVEzS2pWU2FMdHg5elJTWDhYQWJqSWhvOU9qSWdycUpxcGlzWFJBTDM0Vk9LYTVWdDhzeWNYIiwiTUlJRmtEQ0NBM2lnQXdJQkFnSVFCWnNiVjU2T0lUTGlPUWU5cDNkMVhEQU5CZ2txaGtpRzl3MEJBUXdGQURCaU1Rc3dDUVlEVlFRR0V3SlZVekVWTUJNR0ExVUVDaE1NUkdsbmFVTmxjblFnU1c1ak1Sa3dGd1lEVlFRTEV4QjNkM2N1WkdsbmFXTmxjblF1WTI5dE1TRXdId1lEVlFRREV4aEVhV2RwUTJWeWRDQlVjblZ6ZEdWa0lGSnZiM1FnUnpRd0hoY05NVE13T0RBeE1USXdNREF3V2hjTk16Z3dNVEUxTVRJd01EQXdXakJpTVFzd0NRWURWUVFHRXdKVlV6RVZNQk1HQTFVRUNoTU1SR2xuYVVObGNuUWdTVzVqTVJrd0Z3WURWUVFMRXhCM2QzY3VaR2xuYVdObGNuUXVZMjl0TVNFd0h3WURWUVFERXhoRWFXZHBRMlZ5ZENCVWNuVnpkR1ZrSUZKdmIzUWdSelF3Z2dJaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQ0R3QXdnZ0lLQW9JQ0FRQy81cEJ6YU42NzVGMUtQREFpTUdrejdNS25KUzdKSVQzeWl0aFp3dUVwcHoxWXEzYWF6YTU3RzRRTnhEQWY4eHVrT0JiclZzYVhiUjJyc25ueXloSFM1Ri9XQlR4U0QxSWZ4cDRWcFg2K242bFhGbGxWY3E5b2szRENzcnAxbVdwek1wVFJFRVFRTHQrQzh3ZUU1blE3YlhIaUxRd2I3aURWeVNBZFl5a3R6dXhlVHNpVCtDRmhtelRyQmNaZTdGc2F2T3ZKejgyc05FQmZzWHBtN25mSVNLaG1WMWVmVkZpT0RDdTNUNmN3MlZidXludGQ0NjNKVDE3bE5lY3h5OXFUWHR5T2o0RGF0cEdZUUpCNXczakh0ckhFdFdvWU9BTVFqZGpVTjZRdUJYMkk5WUkrRUpGd3ExV0NRVExYMndSekttNlJBWHdoVE5TOHJoc0RkVjE0WnRrNk1VU2FNMEMvQ05kYVNhVEM1cW1nWjkya0o3eWhUem0xRVZnWDl5UmNSbzlrOThGcGlIYVlkajFaWFVKMmg0bVhhWHBJOE9DaUVodG1tblRLM2tzZTV3NWpydWJVNzVLU09wNDkzQURrUlNXSnRwcEVHU3Qrd0pTMDBtRnQ2elBaeGQ5TEJBRE1mUnlWdzQvM0liS3lFYmU3Zi9MVmpIQXNRV0Nxc1dNWVJKVWFkbUorOW9DdysraGtwalBSaVFmaHZiZm1RNlFZdUtaM0FlRVBsQXdoSGJKVUtTV0piT1VPVWxGSGRMNG1yTFpCZGQ1NnJGK05QOG04MDBFUkVsdmxFRkRyTWNYS2NoWWlDZDk4VEhVL1krd2hYOFFnVVd0dnNhdUdpMC9DMWtWZm5TRDhvUjdGd0kraXNYNEtKcG4xNUdrdm1CMHQ5ZG1wc2gzbEd3SURBUUFCbzBJd1FEQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01BNEdBMVVkRHdFQi93UUVBd0lCaGpBZEJnTlZIUTRFRmdRVTdOZmpndEp4WFdSTTN5NW5QK2U2bUs0Y0QwOHdEUVlKS29aSWh2Y05BUUVNQlFBRGdnSUJBTHRoMlgycGJMNFh4SkVidzZHaUFJM2paR2dQVnM5M3JuRDUvWnBLbWJuSmVGd01ERi9rNWhRcFZnczJTVjFFWStDdG5KWVlaaHNqRFQxNTZXMXIxbFQ0MGp6QlEwQ3VIVkQxVXZ5UU83dVltV2xyeDhHbnFHaWtKOXlkK1NldU1JVzU5bWROT2o2UFdUa2lVMFRyeUYwRHl1MVFlbjFpSVFxQXlITm0wYUFGWUYvb3BiU25yNmozYlRXY2ZGcUsxcUk0bWZONGkvUk4waUFMM2dUdWpKdEhnWElOd0JReTd6QlpMcTdnY2ZKVzVHcVhiNUpRYlphTmFIcWFzallVZWdieUpMa0pFVkRYQ0xHNGlYcUVJMkZDS2VXanphSWdRZGZSbkdUWjZpYWhpeFRYVEJteVVFRnhQVDlOY0NPR0RFcmNnZExNTXBTRURRZ0pseHhQd081cklIUXcwdUE1TkJDRklSVUJDT2hWTXQ1eFNka29GMUJONXI1TjBYV3MwTXI3UWJoRHBhclR3d1ZFVHl3Mm0rTDY0a1c0STFOc0JtOW5WWDlHdFV3L2JpaGFlU2JTcEtoaWw5SWU0dTFLaTd3Yi9VZEtEZDluWm42eVcwSFFPK1QwTy9RRVkrbnZ3bFFBVWFDS0tzbk9lTXpWNm9jRUdMUE9yMG1Jci9PU21iYXo1bUVQMG9VQTUxQWE1QnVWblJtaHVaeXhtN0VBSHUvUUQwOUNiTWtLdk81RCtqcHhwY2hOSnFVMS9ZbGR2SVZpSFRMU29DdFU3WnBYd2R2NkVNOFp0NHRLRzQ4QnRpZVZVK2kyaVcxYnZHalVJK2lMVWFKVytmQ21nS0RXSHJPOER3OVRkU21xNmhOMzVONk1nU0d0QnhCSEVhMkhQUWZSZGJ6UDgyWisiLCJNSUlGV2pDQ0EwS2dBd0lCQWdJUWJrZXB4VXRIREEzc005Q0p1UnowNFRBTkJna3Foa2lHOXcwQkFRd0ZBREJITVFzd0NRWURWUVFHRXdKVlV6RWlNQ0FHQTFVRUNoTVpSMjl2WjJ4bElGUnlkWE4wSUZObGNuWnBZMlZ6SUV4TVF6RVVNQklHQTFVRUF4TUxSMVJUSUZKdmIzUWdVakV3SGhjTk1UWXdOakl5TURBd01EQXdXaGNOTXpZd05qSXlNREF3TURBd1dqQkhNUXN3Q1FZRFZRUUdFd0pWVXpFaU1DQUdBMVVFQ2hNWlIyOXZaMnhsSUZSeWRYTjBJRk5sY25acFkyVnpJRXhNUXpFVU1CSUdBMVVFQXhNTFIxUlRJRkp2YjNRZ1VqRXdnZ0lpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElDRHdBd2dnSUtBb0lDQVFDMkVRS0xIdU9oZDVzNzNMK1VQcmVWcDBBOG9mMkMrWDB5Qm9KeDl2YU1mL3ZvMjd4cUxwZVhvNHhMK1N2MnNmbk9oQjJ4K2NXWDN1KzU4cVBwdkJLSlhxZXFVcXY0SXlmTHBMR2NZOXZYbVg3d0NsN3JhS2IweGxwSERVMFFNK05Pc1JPanlCaHNTK3o4Q1pEZm5XUXBKU01Ib2JUU1BTNWc0TS9TQ1llN3pVandUY0xDZW9pS3U3clBXUm5XcjQrd0I3Q2VNZkdDd2NEZkxxWnRiQmtPdGRoK0pocEZBejJ3ZWFTVUtLMFBmeWJscUFqK2x1ZzhhSlJUN29NNmlDc1ZsZ215NEhxTUxuWFduT3VuVm1TUGxrOW9yajJYd29TUHdMeEF3QXRjdmZhSHN6VnNyQmhRZjRUZ1RNMlMweURwTTd4U21hOHl0U216SlNxMFNQbHk0Y3BrOSthQ0VJM29uY0tLaVBvNFpvcjhZL2tCK1hqOWUxeDMrbmFIK3V6ZnNRNTVsVmUwdlNidjFnSFI2eFlLdTQ0THRjWEZpbFdyMDZ6cWtVc3B6Qm1rTWlWT0t2RmxSTkFDenFyT1NiVHFuM3lEc0VCNzUwT3JwMnlqajMySmdmcE1wZi9WanNQT1MrQzEyTE9PUmM5MndPMUFLLzFURDdDbjFUc05zWXFpQTk0eHJjeDM2bTk3UHRiZmtTSVM1cjc2MkRMOEVHTVVVWExlWGRZV2s3MHBhRFB2T21ic0I0b20zeFBYVjJWNEo5NWVTUlFBb2dCL21xZ2h0cW14bGJDbHVRMFdFZHJIYkVnOFFPQitEVnJOVmp6Umx3VzV5MHZ0T1V1Y3hEL1NWUk51SkxEV2NmcjB3YnJNN1J2MS9vRkIyQUNZUFRySXJucVlOeGdGbFFJREFRQUJvMEl3UURBT0JnTlZIUThCQWY4RUJBTUNBUVl3RHdZRFZSMFRBUUgvQkFVd0F3RUIvekFkQmdOVkhRNEVGZ1FVNUs4ckpuRWFLMGduaFM5U1ppenY4SWtUY1Q0d0RRWUpLb1pJaHZjTkFRRU1CUUFEZ2dJQkFEaVdDdTQ5dEpZZVgrK2RuQXN6bnl2Z3l2M1NqZ29mUVhTbGZLcUUxT1h5SHVZM1VqS2NDOUZoSGI4b3diWkVLVFYxZDVpeWZObTlkS3lLYU9PcE1Ra3BBV0J6NDBkOFU2aVFTaWZ2UzllZmsrZUNOczZhYUF5QzU4L1VFQlp2WHc2WlhQWWZjWDN2NzNzdmZ1bzIxcGR3Q3hYdTExeFdhak9sNDBrNERMaDkrNDJGcExGWlh2UnE0ZDJoOW1SRXJ1WlJneUZteGhFKzg4NUg3cHdvSHlYYS82eG1sZDAxRDF6dklDeGkvWkc2cWN6OFdweVRnWU1wbDBwOFduSzBPZEMzZDh0NS9XazZramZ0YmpobFJuN3BZTDE1aUpkZk9CTDA3cTliZ3NpRzFlR1piWXdFOG5hNlNmWnU2VzBlWDZEdko0SjJRUGltMDFoY0R5eEMya0xHZTRnMHg4SFlSWnZCUHNWaEhkbGpVRW4yTklWcTRCakZia2VyUVVJcG0vWmdEZEl4MDJPWUk1TmFBSUZJdE8vTmlzM0p6NW51Mlo2cU51Rm9TM0ZKRkRZb09qMGR6cHFQSmVhQWNXRXJ0WHZNK1NVV2dlRXhYNkdqZmhha25CWnFseGk5ZG5LbEM1NGROdVl2b1MrK2NKRVBxT2JhK01TU1FHd2xmbnV6Q2R5eUY2MkFSUEJvcFkrVWRmOTBXdWlvQW53TUNlS3BTd3VnaFF0aXVlK2hNWkw3Ny9aUkJJbHM2S2wwb2JzWHM3WDlTUTk4UE95REdDQkRUdFdUdXJRMHNSOFdOaDhNNW1RNUZremM0UDRkeUtsaVBVRHF5c1UwQXJTdWlZZ3pOZHdzRTNQWUovSFFjdTUxT3lMZW1HaG1XL0hHWTBkVkhMcWxDRkYxcGtnbCIsIk1JSUZSakNDQXk2Z0F3SUJBZ0lJYll3VVJyR21DdTR3RFFZSktvWklodmNOQVFFTUJRQXdRVEVMTUFrR0ExVUVCaE1DVlZNeEZEQVNCZ05WQkFvTUMwRm1abWx5YlZSeWRYTjBNUnd3R2dZRFZRUUREQk5CWm1acGNtMVVjblZ6ZENCUWNtVnRhWFZ0TUI0WERURXdNREV5T1RFME1UQXpObG9YRFRRd01USXpNVEUwTVRBek5sb3dRVEVMTUFrR0ExVUVCaE1DVlZNeEZEQVNCZ05WQkFvTUMwRm1abWx5YlZSeWRYTjBNUnd3R2dZRFZRUUREQk5CWm1acGNtMVVjblZ6ZENCUWNtVnRhWFZ0TUlJQ0lqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FnOEFNSUlDQ2dLQ0FnRUF4QkxmcVYvK1FkM2Q5WitLNC9hczRUeDRtcnpZOEg5Nm9ETXEzSTBnVzY0dGIrZVQyVFp3YW1qUGpsR2poVnRuQktBUUpHOWRLSUxCbDFmWVNDa1R0dUcra1UzZmhReFRHSm9lSktKUGovQ2loUXZMOUNsLzBxUlk3aVpOeWFxb2U1cloramplUkZjVjVmaU15TmxJNGcwV0p4MGV5SU9GSmJlNnFsVkJ6QU1pU3kyUmpZdm1pYTlteCtuL0srazhyTnJTczhQaGFKeUorSG9BVnQ3MFZaVnMrN3BrM1dLTDN3dDNNdXRpekNhYW03dXFZb05NdEFaNk1NZ3B2KzBHVFplNUhNUXhLOVZmdkZNU0Y1eVpWeWxtZDJFaE1RY3VKVW1kR1BMdTh5dHhqTFc2T1FkSmQvenZMcEtRQlkwdEwzZDc3ME8vTmJ1YTJQbHpweXp5MEZmdUtFNG1YNCtRYUFrdnVQamNCdWt1bWo1UnA5RWl4QXFuT0Voc3Mvbi9mYXVHVitPNjFvVjRkN3BENmtoLzl0aStJMjBldjlFMmJGaGM4ZTZrR1ZRYTlRUFNkdWJoakwwOHM5TklTK0xJK0grU3FIWkduRUpsUHFRZXdRY0RXa1l0dUpmenQ5V3lWU0h2dXR4TUFKZjdGSlVuTTcvb1EwZEcwZ2laRm1BN21uN1M1dTA0NnV3QkhqeElWa2tKeDB3M0FKNklEc0J6NFc5bTZYSkhNRDRRNVFzRHlacENBR3pGbEg1aHhJcmZmNElhQzFuRVdUSjNzN3hnYVZZNS9iUUdleXpXWkRiWnZVanRoQjkrcFNLUEtyaEM5SUszMUZPUWVFNHRHdjJCYjBUWE93RjBsa0xnQU9JdWErckY3bktzdTcvKzZxcW8rTnoyc25tS3RtY0NBd0VBQWFOQ01FQXdIUVlEVlIwT0JCWUVGSjNBWjZZTUl0a205VVdycG1WU0VTZllSYXhqTUE4R0ExVWRFd0VCL3dRRk1BTUJBZjh3RGdZRFZSMFBBUUgvQkFRREFnRUdNQTBHQ1NxR1NJYjNEUUVCREFVQUE0SUNBUUN6VjAwUVlrNDY1S3pxdUJ5dk1pUElzMGxhVVp4MktJMTVxbGRHRjlYMVV2YTNST2dJUkw4WWhOSUxnTTNGRXYwQVZRVmhoMEhjdFNTZVBNVFl5UHR3bmk5NGxvTWdOdDU4RDJrVGlLVjFOcGdJcHNiZnJNN2pXTmEzUHQ2NjgrczBRTmlpZ2ZWNFB5L1ZwZnpab3RSZUJBNFhyZjVCOE9XeWN2cEVnak5DNkMxWTkxYU1Zais2UXJDY0RGeCtMbVVtWEZOUEFMSjRmcUVObVMyTnVCMk9vc1N3L1dEUU1LU095QVJpcWNUdE5kNTZsKzBPT0Y2U0w1TndwYW1jYjZkOUV4MSt4Z2hJc1Y1bjYxRUlKZW5tSld0U0taR2Mwamx6Q0ZmZW1RYTBXNTBRQnVIQ0FLaTRIRW9DQ2hUUXdVSEsrNHcxSVgyQ09QS3BWSkVaTlpPVWJXbzZ4YkxRdTRtR2sraWJ5UTg2cDNxNG9mQjRSdnI4TnkvbGlvVHozLzRFMmFGb29DOGs0Z21WQnRXVnl1RWtsdXQ4OXBNRnUrMXo2UzNSZFRuWDV5VGIyRTVmUTQrZTBCUTV2MVZ3U0psWE1iU2M3a3FZQTVZd0gyQUc3aHNqL29GZ0l4cEhZb1dsekJrMGdHK3pyQnJqbi9CN1NLM1ZBZGxudHFseWsrb3Racld5dU9ROVBMTHZUSXpxNndlL3F6V2FWWWE4R0thMXFGNjBnMnhyYVVEVG45enh3MmxydWVGdENmVHhxbEIyQ25wOWVoZWhWWlpDbVRFSjNXQVJqUVV3ZnVhT1J0R2RGTnJIRitRRmxvekVKTFVienhRSHNrRDRvNTVCaHJ3RTBHdVd5Q3FBTlAyLzd3YWozVmpGaFQwK2ovNmVLZUMydUFsb0dSd1lRdz09IiwiTUlJRFZEQ0NBanlnQXdJQkFnSURBalJXTUEwR0NTcUdTSWIzRFFFQkJRVUFNRUl4Q3pBSkJnTlZCQVlUQWxWVE1SWXdGQVlEVlFRS0V3MUhaVzlVY25WemRDQkpibU11TVJzd0dRWURWUVFERXhKSFpXOVVjblZ6ZENCSGJHOWlZV3dnUTBFd0hoY05NREl3TlRJeE1EUXdNREF3V2hjTk1qSXdOVEl4TURRd01EQXdXakJDTVFzd0NRWURWUVFHRXdKVlV6RVdNQlFHQTFVRUNoTU5SMlZ2VkhKMWMzUWdTVzVqTGpFYk1Ca0dBMVVFQXhNU1IyVnZWSEoxYzNRZ1IyeHZZbUZzSUVOQk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBMnN3WVl6RDk5QmNqR2xaK1c5ODhiRGprY2JkNGtkUzhvZGhNK0toRHRnUHBUU0VIQ0lqYVdDOW1PU205QlhpTG5Uam9CYmRxZm5HazVzUmdwckR2Z09TSktBK2VKZGJ0Zy9PdHBwSEhtTWxDR0RVVW5hMllScEl1VDhyeGgwUEJGcFZYTFZEdmlTMkFlbGV0OHU1ZmE5SUFqYmtVK0JRVk5kbkFScU43Y3NpUnY4bFZLODNRbHo2Y0ptVE0zODZER1hIS1R1YlUxWHVwR2MxVjNzanMwbDQ0VStWY1Q0d3QvbEFqTnZ4bTVzdU9wRGtaQUxlVkFqbVJDdzcrT0M3UkhRV2E5azArYnc4SEhhOHNIbzlnT2VMNk5sTVRPZFJlSml2YlBhZ1V2VExyR0FNb1VnUng1YXN6UGVFNHV3YzJoR0tjZWVvV01QUmZ3Q3ZvY1d2aytRSURBUUFCbzFNd1VUQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01CMEdBMVVkRGdRV0JCVEFlcGhvalluN3F3VmtEQkY5cW4xbHVNck1UakFmQmdOVkhTTUVHREFXZ0JUQWVwaG9qWW43cXdWa0RCRjlxbjFsdU1yTVRqQU5CZ2txaGtpRzl3MEJBUVVGQUFPQ0FRRUFOZU1wYXVVdlhWU09LVkNVbjVrYUZPU1BlQ3BpbEtJblo1N1F6eHBlUituQnNxVFAzVUVhQlU2YlMrNUtiMVZTc3lTaE53cnJaSFlxTGl6ei9UdDFrTC82Y2RqSFBUZlN0UVdWWXJtbTNvazlObnM0ZDBpWHJLWWdqeTZteVF6Q3NwbEZBTWZPRVZFaUl1Q2w2cllWU0FsazZsNVBkUGNGUHNlS1VnemJGYlM5Ylp2bHhyRlVhS25qYVpDMm1xVVB1TGsvSUgydVNyVzRuT1FkdHF2bWxLWEJ4NE90Mi9Vbmh3NEViTlgvM2FCZDdZZFN0eXNWQXE0NXBtcDA2ZHJFNTd4Tk5CNnBYRTB6WDVJSkw0aG1YWGVYeHgxMkU2blY1ZkVXQ1JFMTFhemJKSEZ3TEpoV0M5a1h0TkhqVVN0ZWRlalYwTnhQTk8zQ0JXYUFvY3ZtTXc9PSIsIk1JSURURENDQWpTZ0F3SUJBZ0lJZDNjR0p5YXBzWHd3RFFZSktvWklodmNOQVFFTEJRQXdSREVMTUFrR0ExVUVCaE1DVlZNeEZEQVNCZ05WQkFvTUMwRm1abWx5YlZSeWRYTjBNUjh3SFFZRFZRUUREQlpCWm1acGNtMVVjblZ6ZENCRGIyMXRaWEpqYVdGc01CNFhEVEV3TURFeU9URTBNRFl3TmxvWERUTXdNVEl6TVRFME1EWXdObG93UkRFTE1Ba0dBMVVFQmhNQ1ZWTXhGREFTQmdOVkJBb01DMEZtWm1seWJWUnlkWE4wTVI4d0hRWURWUVFEREJaQlptWnBjbTFVY25WemRDQkRiMjF0WlhKamFXRnNNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQTlodFBad2Nyb1JYMUJpTExId0d5NDNORkJrUkpMTHRKSlJUV3pzTzNxeXhQeGtFeWxGZjZFcWRiRHVLUEh4NkdHYWVxdFMyNVh3Mkt3cStGTlhreUxic2NZamZ5c1Z0S1Bjck5jVi9wUXI2VTZNamUrU0pJWk1ibHE4WXJiYTBGOFByVkM4K2E1ZkJRcElzN1I2VWpXM3A2K0RNL3VPK1psK01nd2RZb2ljK1UrN2xGN2VOQUZ4SFVkUEFMTWVJckptcWJURmV1ckNBK3VrVjZCZk85bTJrVnJuMU9JR1BFTlhZNkJ3TEpOLzNIUis3bzhYWWRjeFh5bDZTMXlIcDUyVUtxSzM5Yy9zNG1UNk5tZ1RXdlJMcFVIaHd3TW1XZDVqeVRYbEJPZXVNNjFHN01HdnY1MGpldUpDcXJWd01pS0ExSmRYKzNLTnAxdjQ3ajNBNTVNUUlEQVFBQm8wSXdRREFkQmdOVkhRNEVGZ1FVblpQR1U0dGV5cTgvbng0UDVabVZ2Q1QybEk4d0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBT0JnTlZIUThCQWY4RUJBTUNBUVl3RFFZSktvWklodmNOQVFFTEJRQURnZ0VCQUZpczlBUU96Y0FOL3dyOTFMb1dYeW05ZTJpWldFblN0QjAzVFg4bmZVWUdYVVBHaGk0K2M3SW1mVStUcWJiRUtwcXJJWmNVc2Q2TTA2dUpGZGhySk5UeEZxN1lwRnpVZjFHTzdSZ0JzWk5qdmJ6NFlZQ2FuckhPUW5EaXFYMEdKWDBub2Y1djdMTWVKTnJqUzFVYUFEczF0RHZaMTEwdy9ZRVRpZkxDQml2dFo4U095VU95WEdzVmlRSzhZdnhPOHJVenFySnYwd3FpVU9QMk8rZ3VSTUxiWmppcE0xWkk4VzBiTTQwTmpEOWdONTNUeW0xK05INE5uM0oyaXh1ZmN2MVNOVUZGQXBZdkhMS2FjMGtoc1VsSFJVZTA3Mm8wRWNsTm1zeFp0OVlDbmxwT1piV1VyaHZmS2JBVzhiOEFuZ2M2RjJTMUJMVWpJWmtLbFR1WGZPOD0iLCJNSUlEZFRDQ0FsMmdBd0lCQWdJTEJBQUFBQUFCRlV0YXc1UXdEUVlKS29aSWh2Y05BUUVGQlFBd1Z6RUxNQWtHQTFVRUJoTUNRa1V4R1RBWEJnTlZCQW9URUVkc2IySmhiRk5wWjI0Z2JuWXRjMkV4RURBT0JnTlZCQXNUQjFKdmIzUWdRMEV4R3pBWkJnTlZCQU1URWtkc2IySmhiRk5wWjI0Z1VtOXZkQ0JEUVRBZUZ3MDVPREE1TURFeE1qQXdNREJhRncweU9EQXhNamd4TWpBd01EQmFNRmN4Q3pBSkJnTlZCQVlUQWtKRk1Sa3dGd1lEVlFRS0V4QkhiRzlpWVd4VGFXZHVJRzUyTFhOaE1SQXdEZ1lEVlFRTEV3ZFNiMjkwSUVOQk1Sc3dHUVlEVlFRREV4SkhiRzlpWVd4VGFXZHVJRkp2YjNRZ1EwRXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFEYUR1YVpqYzZqNDArS2Z2dnhpNE1sYStwSUgvRXFzTG1WRVFTOThHUFI0bWRtenh6ZHp4dElLKzZOaVk2YXJ5bUFaYXZweHkwU3k2c2NUSEFIb1QwS01NMFZqVS80M2RTTVVCVWM3MUR1eEM3My9PbFM4cEY5NEczVk5UQ09Ya056OGtIcDFXcmpzb2s2VmprNGJ3WThpR2xiS2szRnAxUzRiSW5NbS9rOHl1WDlpZlVTUEpKNGx0YmNkRzZUUkdIUmpjZEdzblVPaHVnWml0VnRiTlY0RnBXaTZjZ0tPT3Z5SkJOUGMxU1RFNFU2Rzd3ZU5MV0xCWXk1ZDR1eDJ4OGdrYXNKVTI2UXpuczNkTGx3UjVFaVVXTVdlYTZ4cmtFbUNNZ1pLOUZHcWtqV1pDclhnelQvTENyQmJCbERTZ2VGNTlOODlpRm83K3J5VXA5L2s1RFBBZ01CQUFHalFqQkFNQTRHQTFVZER3RUIvd1FFQXdJQkJqQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01CMEdBMVVkRGdRV0JCUmdlMllhUlEyWHlvbFFMMzBFelRTby8vejlTekFOQmdrcWhraUc5dzBCQVFVRkFBT0NBUUVBMW5QbmZFOTIwSTIvN0xxaXZqVEZLREsxZlB4c25Dd3J2UW1lVTc5clhxb1JTTGJsQ0tPenlqMWhUZE5HQ2JNK3c2RGpZMVViOHJydnJUbmhRN2s0bytZdmlpWTc3NkJRVnZuR0N2MDR6Y1FMY0ZHVWw1Z0UzOE5mbE5VVnlSUkJuTVJkZFdRVkRmOVZNT3lHai84Tjd5eTVZMGIycXZ6ZnZHbjlMaEpJWkpyZ2xmQ203eW1QQWJFVnRRd2RwZjVwTEdra2VCNnpweHh4WXU3S3lKZXNGMTJLd3ZoSGhtNHF4Rll4bGRCbmlZVXIrV3ltWFVhZERLcUM1SmxSM1hDMzIxWTlZZVJxNFZ6Vzl2NDkza0hNQjY1alVyOVRVL1FyNmNmOXR2ZUNYNFhTUVJqYmdiTUVITVVmcElCdkZTREozZ3lJQ2gzV1psWGkvRWpKS1NacDRBPT0iLCJNSUlFa1RDQ0EzbWdBd0lCQWdJRVJXdFFWREFOQmdrcWhraUc5dzBCQVFVRkFEQ0JzREVMTUFrR0ExVUVCaE1DVlZNeEZqQVVCZ05WQkFvVERVVnVkSEoxYzNRc0lFbHVZeTR4T1RBM0JnTlZCQXNUTUhkM2R5NWxiblJ5ZFhOMExtNWxkQzlEVUZNZ2FYTWdhVzVqYjNKd2IzSmhkR1ZrSUdKNUlISmxabVZ5Wlc1alpURWZNQjBHQTFVRUN4TVdLR01wSURJd01EWWdSVzUwY25WemRDd2dTVzVqTGpFdE1Dc0dBMVVFQXhNa1JXNTBjblZ6ZENCU2IyOTBJRU5sY25ScFptbGpZWFJwYjI0Z1FYVjBhRzl5YVhSNU1CNFhEVEEyTVRFeU56SXdNak0wTWxvWERUSTJNVEV5TnpJd05UTTBNbG93Z2JBeEN6QUpCZ05WQkFZVEFsVlRNUll3RkFZRFZRUUtFdzFGYm5SeWRYTjBMQ0JKYm1NdU1Ua3dOd1lEVlFRTEV6QjNkM2N1Wlc1MGNuVnpkQzV1WlhRdlExQlRJR2x6SUdsdVkyOXljRzl5WVhSbFpDQmllU0J5WldabGNtVnVZMlV4SHpBZEJnTlZCQXNURmloaktTQXlNREEySUVWdWRISjFjM1FzSUVsdVl5NHhMVEFyQmdOVkJBTVRKRVZ1ZEhKMWMzUWdVbTl2ZENCRFpYSjBhV1pwWTJGMGFXOXVJRUYxZEdodmNtbDBlVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFMYVZ0a05DK3NadEttOUkzNVJNT1ZjRjdzTjVFVUZvTnUzcy9wb0JqNkU0S1B6M0VFWm1MazBlR3JFYVRzYlJ3SldJc01uL01Zc3pBOXUzZzNzK0lJUmU3YkpXS0tmNDRMbEFjVGZGeTBjT2x5cG93Q0tWWWhYYlI5bjEwQ3YvZ2t2SnJUN2VUTnVRZ0ZBL0NZcUVBT3d3Q2owWXpmdjlLbG1hSTVVWExFV2VIMjVEZVcwTVhKaitTS2ZGSTBkY1h2MXU1eDYwOW1oRjBZYURXNktLamJIaktZRCtKWEdJcmI2OGo2eFNsa3VxVVkza0V6RVo2RTVObjl1c3MyclZ2RGxVY2NwNmVuK1EzWDBkZ05tQnUxa213aEgrNXBQaTk0RGtaZnMwTnc0cGdIQk5yemlHTHA1L1Y2K2VGNjdySE1zb0lWKzJITmpub2dRaStkUGEyTXNDQXdFQUFhT0JzRENCclRBT0JnTlZIUThCQWY4RUJBTUNBUVl3RHdZRFZSMFRBUUgvQkFVd0F3RUIvekFyQmdOVkhSQUVKREFpZ0E4eU1EQTJNVEV5TnpJd01qTTBNbHFCRHpJd01qWXhNVEkzTWpBMU16UXlXakFmQmdOVkhTTUVHREFXZ0JSb2tPUm5wS1pUZ01lR1pxVHg5MHREKzRTOWJUQWRCZ05WSFE0RUZnUVVhSkRrWjZTbVU0REhobWFrOGZkTFEvdUV2VzB3SFFZSktvWklodlo5QjBFQUJCQXdEaHNJVmpjdU1UbzBMakFEQWdTUU1BMEdDU3FHU0liM0RRRUJCUVVBQTRJQkFRQ1QxREN3MXdNZ0t0RDVZK2lSREFVZ3FWOFp5bnR5VHRTeDI5Q1crMVJhR1N3TUNQZXl2SVdvblg5dE8xS3pLdHZuMUlTTVkvWVB5eVlCa1ZCczlGOFU0cE4wd0JPZU1EcFE0N1JneFJ6d0lrU05jVWVzeUJySjZadWFBR0FULzNCK1h4Rk5TUnV6RlZKN3lWVGF2NTJWcjJ1YTJKN3A4ZVJEamVJUlJEcS9yNzJEUW5OU2k2cTdweW5QOVdRY0NrM1J2S3FzbnlyUS8zOS8ybjNxc2Uwd0pjR0UyalRTVzNpRFZ1eWNOc01tNGhIMlowa2RrcXVNKyt2L2V1NkZTcWRRZ1BDblhFcVVMbDhGbVR4U1FlRE50R1BQQVVPNm5JUGNqMkE3ODFxMHRIdXUyZ3VRT0hYdmdSMW0wdmRYY0RhenYvd29yM0VsaFZzVC9oNS9XclE4IiwiTUlJRUFEQ0NBdWlnQXdJQkFnSUJBREFOQmdrcWhraUc5dzBCQVFVRkFEQmpNUXN3Q1FZRFZRUUdFd0pWVXpFaE1COEdBMVVFQ2hNWVZHaGxJRWR2SUVSaFpHUjVJRWR5YjNWd0xDQkpibU11TVRFd0x3WURWUVFMRXloSGJ5QkVZV1JrZVNCRGJHRnpjeUF5SUVObGNuUnBabWxqWVhScGIyNGdRWFYwYUc5eWFYUjVNQjRYRFRBME1EWXlPVEUzTURZeU1Gb1hEVE0wTURZeU9URTNNRFl5TUZvd1l6RUxNQWtHQTFVRUJoTUNWVk14SVRBZkJnTlZCQW9UR0ZSb1pTQkhieUJFWVdSa2VTQkhjbTkxY0N3Z1NXNWpMakV4TUM4R0ExVUVDeE1vUjI4Z1JHRmtaSGtnUTJ4aGMzTWdNaUJEWlhKMGFXWnBZMkYwYVc5dUlFRjFkR2h2Y21sMGVUQ0NBU0F3RFFZSktvWklodmNOQVFFQkJRQURnZ0VOQURDQ0FRZ0NnZ0VCQU42ZDErcFhHRW1oVyt2WFgwaUc2cjdkLytUdlp4ejBaV2l6VjNHZ1huZTc3WnRKNlhDQVBWWVlZd2h2MnZMTTBEOS9BbFFpVkJEWXNvSFV3SFU5UzMvSGQ4TStlS3NhQTdVZ2F5OXFLN0hGaUg3RXV4Nnd3ZGhGSjIrcU4xajNoeWJYMkMzMnFSZTNIM0kyVHFZWFAyV1lrdHNxYmwyaS9vamdDOTUvNVkwVjRldkxPdFhpRXFJVExkaU9yMThTUGFBSUJRaTJYS1ZsT0FSRm1SNmpZR0IweFVHbGNtSWJZc1VmYjE4YVFyNENVV1dvcmlNWWF2eDRBNmxOZjRERCtxdGEvS0ZBcE1vWkZ2Nnl5TzllY3czdWQ3MmE5bm1ZdkxFSFo2SVZEZDJnV01aRWV3bytZaWhmdWtFSFUxalBFWDQ0ZE1YNC83VnBrSStFZE9xWEc2OENBUU9qZ2NBd2diMHdIUVlEVlIwT0JCWUVGTkxFc05LUjFFd1JjYk5oeXoyaC90Mm9hdFRqTUlHTkJnTlZIU01FZ1lVd2dZS0FGTkxFc05LUjFFd1JjYk5oeXoyaC90Mm9hdFRqb1dla1pUQmpNUXN3Q1FZRFZRUUdFd0pWVXpFaE1COEdBMVVFQ2hNWVZHaGxJRWR2SUVSaFpHUjVJRWR5YjNWd0xDQkpibU11TVRFd0x3WURWUVFMRXloSGJ5QkVZV1JrZVNCRGJHRnpjeUF5SUVObGNuUnBabWxqWVhScGIyNGdRWFYwYUc5eWFYUjVnZ0VBTUF3R0ExVWRFd1FGTUFNQkFmOHdEUVlKS29aSWh2Y05BUUVGQlFBRGdnRUJBREpMODdMS1BwSDhFc2FoQjR5T2Q2QXpCaFJja0I0WTl3aW1QUW9aK1llQUVXNXA1SllYTVA4MGtXTnlPTzdNSEFHakhaUW9wREgyZXNSVTEvYmxNVmdEb3N6T1l0dVVSWE8xdjBYSkpMWFZnZ0t0STNscGpiaTJUYzdQVE1vekkrZ2NpS3FkaTBGdUZza2c1WW1lelR2YWNQZCttU1lnRkZRbHEyNXpoZWFiSVowS2JJSU9xUGpDRFBvUUhteVc3NGNOeEE5aGk2M3VneXVWK0k2U2hISTU2eURxZysyRHpaZHVDTHpyVGlhMmN5dmswL1pNL2laeDRtRVJkRXIvVnhxSEQzVklMczlSYVJlZ0FoSmhsZFhSUUxJUVRPN0VyQkJEcHFXZUN0V1ZZcG9OejRpQ3hUSU01Q3VmUmVZTm55aWNzYmtxV2xldE53K3ZIWC9idlo4PSIsIk1JSURYekNDQWtlZ0F3SUJBZ0lMQkFBQUFBQUJJVmhUQ0tJd0RRWUpLb1pJaHZjTkFRRUxCUUF3VERFZ01CNEdBMVVFQ3hNWFIyeHZZbUZzVTJsbmJpQlNiMjkwSUVOQklDMGdVak14RXpBUkJnTlZCQW9UQ2tkc2IySmhiRk5wWjI0eEV6QVJCZ05WQkFNVENrZHNiMkpoYkZOcFoyNHdIaGNOTURrd016RTRNVEF3TURBd1doY05Namt3TXpFNE1UQXdNREF3V2pCTU1TQXdIZ1lEVlFRTEV4ZEhiRzlpWVd4VGFXZHVJRkp2YjNRZ1EwRWdMU0JTTXpFVE1CRUdBMVVFQ2hNS1IyeHZZbUZzVTJsbmJqRVRNQkVHQTFVRUF4TUtSMnh2WW1Gc1UybG5iakNDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNd2xkcEI1Qm5naUZ2WEFnN2FFeWlpZS9RVjJFY1d0aUhMOFJnSkR4N0tLblFSZkpNc3VTK0ZnZ2tiaFVxc01nVWR3Yk4xazBldjFMS01QZ2owTUs2NlgxN1lVaGhCNXV6c1RnSGVNQ09GSjBtcGlMeDllK3BabzM0a25sVGlmQnRjK3ljc21XUTF6M3JESTZTWU9neFhHNzF1TDBnUmd5a21tS1BacE8vYkx5Q2lSNVoyS1lWYzNySFFVM0hUZ091NXlMeTZjKzlDN3YvVTlBT0VHTStpQ0s2NVRwam9XYzR6ZFFRNGdPc0MwcDZIcHNrK1FMakpnNlZmTHVRU1NhR2psT0NaZ2RiS2ZkLytSRk8rdUlFbjhyVUFWU05FQ01XRVpYcmlYNzYxM3QyU2Flcjlmd1JQdm0yTDdEV3pnVkdrV3FRUGFidW1EazNGMnhtbUZnaGNDQXdFQUFhTkNNRUF3RGdZRFZSMFBBUUgvQkFRREFnRUdNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdIUVlEVlIwT0JCWUVGSS93UzMrb0xrVWtyazFRK21PYWk5N2kzUnU4TUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFCTFFOdkFVS3IreUF6djk1WlVSVW03bGdBSlFheXpFNGFHS0Fjenltdm1kTG02QUMydXBBclQ5Zkh4RDRxL2MyZEtnOGRFZTNqZ3IyNXNid01wampNNVJjT081TGxYYktyOEVwYnNVOFl0NUNSc3VaUmorOXhUYUdkV1BvTzR6elVodzhsby9zN2F3bE9xekpDSzZmQmRSb3lWM1hwWUtCb3ZIZDdOQURkQmorMUViZGRUS0pkKzgyY0VIaFhYaXBhMDA5NU1KNlJNRzNOemR2UVhtY0lmZWc3akxRaXRDaHdzL3p5clZRNFBrWDQyNjhOWFNiN2hMaTE4WUl2RFFWRVRJNTNPOXpKcmxBR29tZWNzTXg4Nk95WFNoa0RPT3l5R2VNbGhMeFM2N3R0VmI5K0U3Z1VKVGIwbzJITE8wMkpRWlI3cmtwZURNZG16dGNwSFdEOWYiLCJNSUlFS2pDQ0F4S2dBd0lCQWdJRU9HUGUrREFOQmdrcWhraUc5dzBCQVFVRkFEQ0J0REVVTUJJR0ExVUVDaE1MUlc1MGNuVnpkQzV1WlhReFFEQStCZ05WQkFzVU4zZDNkeTVsYm5SeWRYTjBMbTVsZEM5RFVGTmZNakEwT0NCcGJtTnZjbkF1SUdKNUlISmxaaTRnS0d4cGJXbDBjeUJzYVdGaUxpa3hKVEFqQmdOVkJBc1RIQ2hqS1NBeE9UazVJRVZ1ZEhKMWMzUXVibVYwSUV4cGJXbDBaV1F4TXpBeEJnTlZCQU1US2tWdWRISjFjM1F1Ym1WMElFTmxjblJwWm1sallYUnBiMjRnUVhWMGFHOXlhWFI1SUNneU1EUTRLVEFlRncwNU9URXlNalF4TnpVd05URmFGdzB5T1RBM01qUXhOREUxTVRKYU1JRzBNUlF3RWdZRFZRUUtFd3RGYm5SeWRYTjBMbTVsZERGQU1ENEdBMVVFQ3hRM2QzZDNMbVZ1ZEhKMWMzUXVibVYwTDBOUVUxOHlNRFE0SUdsdVkyOXljQzRnWW5rZ2NtVm1MaUFvYkdsdGFYUnpJR3hwWVdJdUtURWxNQ01HQTFVRUN4TWNLR01wSURFNU9Ua2dSVzUwY25WemRDNXVaWFFnVEdsdGFYUmxaREV6TURFR0ExVUVBeE1xUlc1MGNuVnpkQzV1WlhRZ1EyVnlkR2xtYVdOaGRHbHZiaUJCZFhSb2IzSnBkSGtnS0RJd05EZ3BNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXJVMUxxUktHc3VxaklBY1ZGbVFxSzB2UnZ3dEtUWTd0Z0hhbFo3ZDRRTUJ6UXNob3dOdFRLOTFldUhhWU5aT0xHcDE4RXpvT0gxdTNIcy9sSkJRZXNZR3BqWDI0ekd0TEEvRUNETnlycFVBa0FIOTBsS0dkQ0NtemlBdjFoM2VkVmMza3czN1hhbVNyaFJTR2xWdVhNbEJ2UGNpNlpnemovTDI0U2NGMmlVa1ovY0Nvdlltalp5L0duN3h4R1dDNExla3N5WkIyWm51VTRxOTQxbVZUWFR6V25MTFBLUVA1TDZSUXN0Ukl6Z1V5VllyOXNtUk1EdVNZQjNYYmY5KzVDRlZnaFRBcCtYdElwR21HNHpVL0hvWmRlbm9WdmU4QWpoVWlWQmNBa0NhVHZBNUphSkcvK0VmVG5aVkN3UTVOMzI4bXo4TVlJV0ptUTNEVzFjQUg0UUlEQVFBQm8wSXdRREFPQmdOVkhROEJBZjhFQkFNQ0FRWXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QWRCZ05WSFE0RUZnUVVWZVNCMFJHQXZ0aUp1UWlqTWZtaEpBa1d1WEF3RFFZSktvWklodmNOQVFFRkJRQURnZ0VCQUR1YmoxYWJNT2RUbVh4NmVhZE5sOWNabFpEN0JoL0tNM3hHWTQrV1ppVDZRQnNoSjhybWNuUHlULzR4bWYzSURFeG9VOGFBZ2hPWStyYXQybDA5OGM1dTloVVJsSUlNN2orVnJ4R3JEOWN2M2g4RGoxY3NIc203bWhwRWxlc1lUNllmelgxWEVDK2JCQWxhaExWdTJCMDY0ZGFlMFd4NVhua2NGTVhqMEV5VE8yVTg3ZDg5dnFibGxSckR0Um5EdlY1YnUvOGo3MmdaeXhLVEoxd0RMVzh3MEI2MkdxemVXdmZScXFnbnB2NTVnY1I1bVROWHVoS3dxZUJDYkpQS1Z0NytiWVFMQ0l0K2plclhtQ0hHOCtjOGVTOWVuTkZNRlkzaDdDSTN6SnBEQzVmY2dKQ05zMmViYjBnSUZWYlB2L0VyZkY2YWR1bFprTVY4Z3pVUlpWRT0iLCJNSUlCL2pDQ0FZV2dBd0lCQWdJSWRKY2xpc2MvZWxRd0NnWUlLb1pJemowRUF3TXdSVEVMTUFrR0ExVUVCaE1DVlZNeEZEQVNCZ05WQkFvTUMwRm1abWx5YlZSeWRYTjBNU0F3SGdZRFZRUUREQmRCWm1acGNtMVVjblZ6ZENCUWNtVnRhWFZ0SUVWRFF6QWVGdzB4TURBeE1qa3hOREl3TWpSYUZ3MDBNREV5TXpFeE5ESXdNalJhTUVVeEN6QUpCZ05WQkFZVEFsVlRNUlF3RWdZRFZRUUtEQXRCWm1acGNtMVVjblZ6ZERFZ01CNEdBMVVFQXd3WFFXWm1hWEp0VkhKMWMzUWdVSEpsYldsMWJTQkZRME13ZGpBUUJnY3Foa2pPUFFJQkJnVXJnUVFBSWdOaUFBUU5NRjRiRlowRDBLRjVOYmM2UEpKNnloVWN6V0x6bkNaY0J6M2xWUHFqMXN3UzZ2UVVYK2lPR2Fzdkxram1yQmhEZUt6UU44TzlzczBzNWtmaUd1Wmp1RDB1TDNqRVQ5djBENlJvVEZWeWE1VWRUaGhDbFhqTU56eVI0cHRsS3ltalFqQkFNQjBHQTFVZERnUVdCQlNhcnlsNndCRTFOU1pSTUFERGF2NUExYTdXUERBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUE0R0ExVWREd0VCL3dRRUF3SUJCakFLQmdncWhrak9QUVFEQXdObkFEQmtBakFYQ2ZPSGlGQmFyOGpBUXI5SFgvVnNhb2JneENkMDVEaFQxd1YvR3pUanhpK3p5Z2s4TjUzWDU3aEc4ZjJoNG5FQ01FSlpoMFBVVWQrNjB3a3lXczZJZmxjOW5GOUNhL1VITGJYd2dwUDVXVyt1WlBwWTVZc2U0Mk8rdFlITmJ3S01lUT09IiwiTUlJRGpqQ0NBbmFnQXdJQkFnSVFBenJ4NXFjUnFhQzdLR1N4SFFuNjVUQU5CZ2txaGtpRzl3MEJBUXNGQURCaE1Rc3dDUVlEVlFRR0V3SlZVekVWTUJNR0ExVUVDaE1NUkdsbmFVTmxjblFnU1c1ak1Sa3dGd1lEVlFRTEV4QjNkM2N1WkdsbmFXTmxjblF1WTI5dE1TQXdIZ1lEVlFRREV4ZEVhV2RwUTJWeWRDQkhiRzlpWVd3Z1VtOXZkQ0JITWpBZUZ3MHhNekE0TURFeE1qQXdNREJhRncwek9EQXhNVFV4TWpBd01EQmFNR0V4Q3pBSkJnTlZCQVlUQWxWVE1SVXdFd1lEVlFRS0V3eEVhV2RwUTJWeWRDQkpibU14R1RBWEJnTlZCQXNURUhkM2R5NWthV2RwWTJWeWRDNWpiMjB4SURBZUJnTlZCQU1URjBScFoybERaWEowSUVkc2IySmhiQ0JTYjI5MElFY3lNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXV6Zk5OTng3YThteWFKQ3RTblgvUnJvaENnaU45UmxVeWZ1STIvT3U4anFKa1R4NjVxc0dHbXZQckMzb1hna2tSTHBpbW43V282aCs0RlIxSUFXc1VMZWNZeHBzTU56YUh4bXgxeDdlL2RmZ3k1U0RONjdzSDBOTzNYc3MwcjB1cFMva3FiaXRPdFNacExZbDZadHJBR0NTWVA5UElVa1k5MmVRcTJFR25JL3l1dW0wNlpJeWE3WHpWK2hkRzgyTUhhdVZCSlZKOHpVdGx1TkpiZDEzNC90SlM3U3NWUWVwajVXenRDTzdURzFGOFBhcHNwVXd0UDFNVll3blNsY1VmSUtkelhPUzB4WktCZ3lNVU5HUEhnbStGNkhtSWNyOWcrVVF2SU9sQ3NSbktQWnpGQlE5Um5iRGh4U0pJVFJOcnc5RkRLWkpvYnE3bk1XeE00TXBoUUlEQVFBQm8wSXdRREFQQmdOVkhSTUJBZjhFQlRBREFRSC9NQTRHQTFVZER3RUIvd1FFQXdJQmhqQWRCZ05WSFE0RUZnUVVUaUpVSUJpVjV1TnU1Zy82K3JrUzdRWVhqemt3RFFZSktvWklodmNOQVFFTEJRQURnZ0VCQUdCbktKUnZEa2hqNnpIZDZtY1kxWWw5UE1XTFNuL3B2dHNyRjkrd1gzTjNLaklUT1lGblFvUWo4a1ZuTmV5SXYvaVBzR0VNTktTdUlFeUV4dHY0TmVGMjJkK21RcnZIUkFpR2Z6WjBKRnJhYkEwVVdUVzk4a25kdGgvSnN3MUhLajJaTDd0Y3U3WFVJT0daWDFOR0ZkdG9tL0R6TU5VK01lS05oSjdqaXRyYWxqNDFFNlZmOFBsd1VIQkhRUkZYR1U3QWo2NEd4SlVURnk4YkpaOTE4ckdPbWFGdkU3RkJjZjZJS3NoUEVDQlYxL01VUmVYZ1JQVHFoNVV5a3c3K1UwYjZMSjMvaXlLNVM5a0pSYVRlcExpYVdOMGJmVktmamxsRGlJR2tuaWJWYjYzZERjWTNmZTBEa2h2bGQxOTI3anlOeEYxV1c2TFpabTZ6TlRmbE1yWT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQkFBQUFBUUNBWUFBQUFmOC85aEFBQUI3a2xFUVZSNEFhV1BQMnNVUVJpSG41bWR2ZXhkL3BsRWN2bERDaTFFL0VNYWJVV0k5amFLV1BvVi9BN0JRaEFiRzd0OENDVUlLUVFMdXdoQ1VCc0xCU1VtR2tMdWRtOW41bldIek1BZWdvM1A4T3k5czh2dmZkK2p6Y3RQejJZYStaZGJ1NDhtRzBtYThFaDgvYkYzeVdHR3dQdlY4MWQ3KzkvMmxweTNNcnR5N2pzd1BQejhZYjIwbFFKMmlhaW4ydzlvazAyYUxVUldzdHh1aUhna25uckVLM0dFUmc5cG9aN3MzQ1V4bC9kdlZmcm50bVJhZzlCdUlDSmdyWGZIblJ2QVd5SmFEeFhCK2V6Q1dxWDN0NmU2aS9yaS9FMUFrZEJvTGkvY1pyTDVwcWVIYjJ5dnU5UklVS2ZpV0g5NUlWbW1WNmV1Y0sxL2o4Sk1Jd1JvNmpOY1g3N1AydlE2WkVaN09YcmVTRkE5M3JuRDNNeDZyN1lmVHhRS0drTjRXUDhlVzcrYno0WjNlSEVFOUZGWkFKWHVsaVhWeVVFZmlmOVpISU5XK0JRNWZTYyszb1RqenRUWlJreDRMRWh0ZmgxYXZCTVNJa0JyQStKdk9Bb2htMUFGZ0pHUnBiT29YUy9YMUtYZ0haRTRYMVNzeHB0MThpWUltR0ppUkZXV0tDWGtCZGlSNEwwUVVFS2FtSUt4aG9RWm02ZkFkTURWalQ3Y1F3QkVZaDNEU3NsNEErdHJRVHdKYlVDc1Q1UCtDb2RUWnRZRG1OSlljckVEUVNDaElNc1Z6b1ZRMmtMRk1DQ1FGVzRBb0RiZmJSREk3ZklpNWFBTDQxanRWTmlRaVBVam1VQk9nQU1DbTY4My9zcy9UYVZYdHg0cUtNb0FBQUFBU1VWT1JLNUNZSUk9IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiRklET18yXzAiXSwiYWFndWlkIjoiYjkzZmQ5NjFmMmU2NDYyZmIxMjI4MjAwMjI0N2RlNzgiLCJvcHRpb25zIjp7InBsYXQiOnRydWUsInJrIjp0cnVlLCJ1diI6dHJ1ZX0sInRyYW5zcG9ydHMiOlsiaW50ZXJuYWwiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fV19fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMC0wOC0yMCIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiQW5kcm9pZCBTYWZldHlOZXQgQXV0aGVudGljYXRvciIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMTkwMjI1MDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjMuNiIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4xLjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjAtMDgtMDUiLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IkFuZHJvaWQgU2FmZXR5TmV0IEF1dGhlbnRpY2F0b3IiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDE5MDIyNTAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4zLjYiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMS4wIn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMC0xMi0xNyJ9LHsiYWFndWlkIjoiYWE3OWY0NzYtZWEwMC00MTdlLTk2MjgtMWU4MzY1MTIzOTIyIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiJhYTc5ZjQ3Ni1lYTAwLTQxN2UtOTYyOC0xZTgzNjUxMjM5MjIiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiSElEIENyZXNjZW5kbyA0MDAwIEZJRE8ifSwiZGVzY3JpcHRpb24iOiJISUQgQ3Jlc2NlbmRvIDQwMDAgRklETyIsImFsdGVybmF0aXZlRGVzY3JpcHRpb25zIjp7ImVuLVVTIjoiSElEIENyZXNjZW5kbyA0MDAwIEZJRE8ifSwiYXV0aGVudGljYXRvclZlcnNpb24iOjI2MjQwMCwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9LHsibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQy96Q0NBcVNnQXdJQkFnSVVUUmxXWU1LY0JuUEU2MUg5RjBRN1B3UFkrSFl3Q2dZSUtvWkl6ajBFQXdJd2F6RUxNQWtHQTFVRUJoTUNWVk14RXpBUkJnTlZCQW9NQ2toSlJDQkhiRzlpWVd3eElqQWdCZ05WQkFzTUdVRjFkR2hsYm5ScFkyRjBiM0lnUVhSMFpYTjBZWFJwYjI0eEl6QWhCZ05WQkFNTUdrWkpSRThnUVhSMFpYTjBZWFJwYjI0Z1VtOXZkQ0JEUVNBeU1DQVhEVEkxTURVeE16RTJOVGN3TVZvWUR6SXdOVEF3TlRFek1UWTFOekF4V2pCbk1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDZ3dLU0VsRUlFZHNiMkpoYkRFaU1DQUdBMVVFQ3d3WlFYVjBhR1Z1ZEdsallYUnZjaUJCZEhSbGMzUmhkR2x2YmpFZk1CMEdBMVVFQXd3V1JrbEVUeUJCZEhSbGMzUmhkR2x2YmlCRFFTQXhNVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCTXlEMUxvTXQ2cDZ6MVhlL0VxYVBlRUJNcGhkWkhDeURpR2ZOUW1VclJPeklvRFhQeXlURW5ZWlM3aUdzRkRKNUVrQUtnMEkybGsyVVUxS1I3TGNsM0NqZ2dFbU1JSUJJakFPQmdOVkhROEJBZjhFQkFNQ0FZWXdFZ1lEVlIwVEFRSC9CQWd3QmdFQi93SUJBREFmQmdOVkhTTUVHREFXZ0JTNzZEcGw5M3ZCMmg1RkRMdnlNTXZVQnlqM2l6QWRCZ05WSFE0RUZnUVVsdnFFMURBTERUVzI1Z0ZoSFUvZ01scjZKMUV3UkFZRFZSMGZCRDB3T3pBNW9EZWdOWVl6YUhSMGNEb3ZMMk55YkM1b2VXUnlZVzUwYVdRdVkyOXRMMFpKUkU5QmRIUmxjM1JoZEdsdmJsSnZiM1JEUVRJdVkzSnNNSFlHQ0NzR0FRVUZCd0VCQkdvd2FEQS9CZ2dyQmdFRkJRY3dBb1l6YUhSMGNEb3ZMMk55YkM1b2VXUnlZVzUwYVdRdVkyOXRMMFpKUkU5QmRIUmxjM1JoZEdsdmJsSnZiM1JEUVRJdWNEZGpNQ1VHQ0NzR0FRVUZCekFCaGhsb2RIUndPaTh2YjJOemNDNW9lV1J5WVc1MGFXUXVZMjl0TUFvR0NDcUdTTTQ5QkFNQ0Ewa0FNRVlDSVFDRXluMDBnN3VQWmM0bXAwMmRMbm9rYWx5a01Ob01hYkZyVy9uam81ZWp1QUloQUxxaTlWeHZEdlJ2enl0bmpPanNsbXYwSXo1UnM4ZWcxTFMvOWprcXNXUG4iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBVk1BQUFDc0NBWUFBQURHK0U4TUFBQUFJR05JVWswQUFIb2xBQUNBZ3dBQStmOEFBSURwQUFCMU1BQUE2bUFBQURxWUFBQVhiNUpmeFVZQUFBQUpjRWhaY3dBQUQyQUFBQTlnQVhwNFJZMEFBQXlnU1VSQlZIaGU3WjEvYkpUbEhjQnZqaGpOY0M0TytkWGVYVnRVVE16aVA3b1lYWlk1MUlrS2QxZk5uRkhqNW9oQm1BN2oyTVJzWm9sbXhoaE5Kb3J0MjRLZ3NpRnNpbTdUQWRNWVJGUUVGVGNWeHcvcndBRUZSQ2hRK3V1ZVBjLzFxUVAzVE5zKzMzdmV1K3ZuazN6UzQyZ2ZudmU5dDU4Kzc3M1hJd0VBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFVRXBrRzYvWFBwbklSUjhnSWg1dDQxcjljWWF0QmZ3UDlRM242eDIwVFp0UDFEY3BSTVRQTmRlVTE0dXVWdDJNcTIxRkJreHRNam1yTHBWcTBSODMxMVpYMzJydkxtTUtQMjMwanFtUDNEc05FZkh6ekVXN0V4Zk9HV21MOG9Xa2s4a2YxcVhTUFhYVnFhWEpVYVBPcUttcU9yTXVtZnByYlRMVm5VcWxMcmVmVmtaTW1QMTEvWk9sdzdsekVCRUhvam1yelVaVGJWMytMM1ZqeDA0d0lSMDlldlRKNDFLcEtkb2JqQ05Iamh3MWR1elk1TGgwamRLcjFMUHRwNWNCSnFTc1JoRlIwdDZnenJTVmNYR01EcW1xU1NZeit2WXdFODZhcXRTMXRkWHA2ODN0dWpGalVqVmprNVAxS3JXOTk5UExnVnpVNWR3WmlJZyttcUJlT3FmT2x1WW8wdW4wY1RxbVhmYVB3OHdLMWQ1TzZGUDh0MnJUNlZ2MHpTK2JzUGJlVytya29vK2NPd0VSVWNKY2RNRFc1aWlxcTZ1UEg1ZXE2VnQxRmxhbU9xSTc2MUkxMjA5SjEvUkY5a3ZsRWRQNmhtODdOeDRSVWRKc3d6MjJPcDlpWXFwWG81MzJqMlpsbWovcHBKTytxajkycDhlTU9kM2VmMHg1eERUWHRNKzU0WWlJa3VhaURsdWRJK2s5aFU4bmp0TzNDekUxZDQ0WU1XS012bjNRM0I0K2V2akorbmJmS3JXRTRYV2tpQmpLeTV2UHN1WDVsTHBVYW1adE1yM2YzSzZ0VHI1VHVGTlRsMHcrV3BOSzNhei9ycU8yT2ozTjNsMmlUSTZtT2pjWUViRVk1cHFldGZVNWlycnExRE8xeWRTQmNWV3BHK3hkaWJxcTVBeXpPdFgzTDdSM2xURDEwWExuQmlNaUZzTmNVK0hVM1VWeVZQSU1IZFdWcDlYV3FWTnJhdlA2OXZLcUVWV24ycjh1Y2Vxai9jNE5Sa1FzaHJtb2pGNHZPaENJS1NLRzFIMFJxZ0lncG9nWVVtS0tpQ2dnTVVWRUZKQ1lJaUlLU0V3UkVRVWtwb2lJQWhKVFJFUUJpU2tpb29ERUZCRlJRR0tLaUNnZ01VVkVGSkNZSWlJS1NFd1JFUVVrcG9pSUFoSlRRUzk3V0NVdWVFQWxMcHdkVnZOdjVpTDNuQWJyOXg1MC8xdkY5aUt0YXo0RE1hN0h3RHorcnZuMHg2eCsvT0tZZHpFMDIzR1JQbjdNTVhTcDNpZVRHOTNiWEdrU1V6bHZudnV5aW92anJwem5uTk9nMUFmL3VzMjc3TWhoMmZuSm9kNXZRTmU4K3FQK0pvNkxhZEVxOTV6NjRkZXVYV0JIcVF3NnUzdFVXM3VuMnJ4am4xcTlZYWRhc25xenVxbjVaWFh5TlF0VTR1S0hWQ0pUZ1lFbHBuS2FiNmE0cUpTWWZyVG5RTm5HOUlhSFgzTFBxUitlcUNNelZOaXovN0JhOGRaV2RlVjl6NnZFQkwyS3JaU3dFbE01aWFrL3hIUm8wZG5WbzU1ZDk2RWFmK01pdjZkSlNrRmlLaWN4OVllWURsM2VidG1qenB1MTFPL3hqMU5pS2ljeDlZZVl3aHRiZHFsVHB1cVZxcmtvNTloWEpTc3hsWk9ZK2tOTXd6UHJzVFhxenNWdnFMdVd2S0V5ZHk5VHVYdVdxMTh1ZkwxdzM3MUwxNnNWNjdjVkxpYUZwQ2VmVjQrKytFK1Z1R0MyYzMrVnBNUlVUbUxxRHpFTlQyTENiL1Vxc0ZFbE1nMy9uWk81S0ZTNFR6dEpQeDZYemxGVlV4YXFLWE5XcW8vYkR0dXZMRDY3MjlyVk4zNjZ4SVRxcVAxVmtoSlRPWW1wUDhRMFBJWFhoanJtNUZSSDdaakpEZXFPMzYrMVgxMTh1bnQ2MUMyUHJOYkg1Ukd4TDBXSnFaekUxQjlpR3A0QnhiUlBIYlpKZHkrekk0UmgvZ3Z2RjFiSXp2bVVnc1JVVG1McUR6RU56NkJpYXN3MHFoL3IwLzZRUFBucUIzN0hSekVscG5JU1UzK0lhWGdHSFZOak5sSi8vM0NQSFNrTVQ3L1dVcHBCSmFaeUVsTi9pR2w0dkdLcUhmK1R4WGFrY1B6eEZiMUNMYlhuVUltcG5NVFVIMklhSHQrWW1xaTl0MjJ2SFMwY1AxdndxbnMrY1VsTTVTU20vaERUOEhqSE5CZXA4MjUvMm80V2pudytyOFpQWCt5ZVV4d1NVem1KcVQvRU5EemVNZFYrNWFwSDdHaGgyWGV3UTJUK0loSlRPWW1wUDhRMFBDSXhtbVJPOVQreEk0YmxtVFV0aGRXeGMxNGhKYVp5RWxOL2lHbDRSR0thamRRdDgxNnhJNFpuK0ZXQ3gvOWdKYVp5RWxOL2lHbDRwRTZUejV5eHhJNFludmMvMnR2NzY2K09lUVdUbU1wSlRQMGhwdUdSaXVubzZ4KzNJOGJEaU9zZWRjNHJtTVJVVG1McUR6RU5qMVJNaDEzUmJFZU1CM1BNeHZyY0tUR1ZrNWo2UTB6REl4VlRjeEdxcTd2YmpocWVydTRldVcwWmpNUlVUbUxxRHpFTmoxaUE5SEd6ZGxPckhUVWVicDBmNHd2NWlhbWN4TlFmWWhvZXNaaG1HdFhDbFJ2dHFQR3diYmMrZnVKNmgzNWlLaWN4OVllWWhrY3NwanBpdHoyMnhvNGFEKzBkWFNveE1hYTM2U09tY2hKVGY0aHBlQ1JqR3VkclRmdUk3YW8rTVpVenpwaCs1MWQvVXVmT2VsckViLzc4S2JVaGhqZXVNQkRUOElqRk5LYmYwZjhzdHoyK3hqMi9Za3RNNVl3enBwVUNNUTJQV0V5MTU5eTIxSTRhSDZ2ZTNlNmNXOUVscG5JU1UzK0lhWGdxTGFaYjQ3b0lSVXpsSktiK0VOUHdWRnBNdCs4OTJQdS9xanJtVjFTSnFaekUxQjlpR3A1S2krbXVmZTBxbG5maEo2WnlFbE4vaUdsNEtpMm1oZmM0dmN6akdCcXN4RlJPWXVvUE1RMVB4WjNtZjh4cHZpekV0Q3docHVHcHRKanUySHVJbUlwQ1RNc1NZaHFlU292cEJ6djNtN0E1NTFkVWlhbWNjY2JVdk1IRTYwS3UyYmhUSFdqdnNpT0hoWmlHcDlKaXVtVDFadWZjaWk0eGxUUE9tQjVyZmhLYko5MGx2UGdoOWZyR2VONzloNWlHUnl5bUpmSWJVUFgzTEhmUHI5Z1NVem5qakNtL20yOGxwZ05HTEtZbDhydjVzWnppRzRtcG5NVFVIMklhSHNtWVRvLzV1c0grUTUyOVoxZXUrUlZiWWlvbk1mV0htSVpITEthWlJyWG9wVTEyMUhoWTM3S2JsYWs0eEhUd0V0TkJRVXdiMVlyMTIreW84WEQyektYdXVZV1FtTXBKVFAwaHB1RVJpK25rQnRYNnlTRTdhbmphMnZVcC9pVXh2VEcwa1pqS1NVejlJYWJoa1h6T05FNmVXTFhKUGE5UUVsTTVpYWsveERROFVqRTk4WnI1ZHNUdzlQVGs0M25idlNNbHBuSVNVMytJYVhpa1lucnE5Q2ZzaU9INXk3cC9tWmc1NXhWTVlpb25NZldIbUlaSEpLWTZaSmZjK1p3ZE1TeUhPN3YxTVJQamM2VjlFbE01aWFrL3hEUThJakhOTktvbHE3ZllFY015clhHVmUwNmhKYVp5RWxOL2lHbDRSR0lhMDhXblRkdjN4ZmNpL2M5S1RPVWtwdjRRMC9CSXhIVDh0RVYydEhDMGQralRlMzJzdXVZVGk4UlVUbUxxRHpFTmozZE05U24rM09jMzJOSENZSzdlbnpYelNmZDg0cEtZeWtsTS9TR200ZkdONmZBZnpMTWpoV1BHdkplZGM0bFZZaW9uTWZXSG1JYkhLNmFURzlUY3Y0VmRsZDYrY0kwSmwzcytjVXBNNVNTbS9oRFQ4QXc2cHRsSW5YL0huKzBvWWJpcGVWVTgveVZKZnlTbWNoSlRmNGhwZUFZVjAweURPdmYyWit3SXhhZTdKNjkrTlB2RjBseVI5a2xNNVNTbS9oRFQ4UFE3cGlaaytyVGVIR3YzUHJYZWZuWHhPZGplcWNaTlhlU2VVeWxKVE9Va3B2NFEwL0Frdm5WLzc3c3RmZGFKRDZsaFZ6U3JFNitlcjA2L2FiSEszTDFjL1NId0MvT1h2Ym0xTUEvWFBpczVpYW1jeE5RZllncUdnNGM3MVZYM1AxOVlDYnYyVjBsS1RPVWtwdjRRMDZGTlIxZTNlbmpadXlyeDNRZWMrNm1rSmFaeUVsTi9pT25RcEwyelN6V3QyTkI3U2wvS0Y1aytUMklxSnpIMWg1Z09IZkw1dkhxN1pZK2FNbWVsU2x5Z1Y2TGxHdEUraWFtY3hOUWZZbHJaZk54MldLMTZiNGU2MGJ6VFU3WlJKU1o1UE5hbEpqR1ZjOUp2bHFubGIyNHRYSUVNNmNwMy9xMk8vZjVjNTV3R1phWlJQZmpzUDV6L1ZySDkzY3FOK2h2TTQ2TER4RG5xcFhlM084Y3VwaXZlMnFZdXVlczU5NXo2NFFsWHoxZTc5N2VybHRhMml2RE5MYnZWMmsydGhYM3o2eWZXcW9sM1BxZE9NRC93TDlhbjhmcUh0V3NmbEwzRUZMRUVOS2U0NXVWSVpsVmU3cHJ0TUZmaHkrbEt2SVRFRkJGUlFHS0tpQ2dnTVVWRUZKQ1lJaUlLU0V3UkVRVWtwb2lJQWhKVFJFUUJpU2tpb29ERUZCRlJRR0tLaUNnZ01VVkVGSkNZSWlJS1NFd1JFUVVrcG9pSUFoSlRSRVFCS3phbXVhalZ1Y0dJaU1YeG9LMVBoWkZ0YUhKc0xDSmljY3hGdTJ4OUtvd3Jtc2M3TnhnUnNSaG1vbC9ZK2xRZzVqa00xMFlqSWtxYWkvSzJPaFZLcnVrRjU0WWpJa3FhaTNiWTZsUXd1YWpidWZHSWlCTG10T2ZjZDd3dFRnV1RpNlk3ZHdBaW9vUzVhSm10elJDZ1Buck51Uk1RRVgzTVJxMjJNa09JYk9ORzU4NUFSQnlNdWFZS2ZTbFVmOGhGaS9RT3lPdVZxbnZuSUNKK2tlYktmWDNUV2x1VklVdzJPazJ2VWx1SktpSU8yRnkwTjVGdHVzN1dCQXFZcU5aSDYvVEhmVHFzblluNlpyMnpFQkdQMEt4Q3MxR2Jic1NXUktaaGdxMEhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQnBrVWo4QjRBb20rTWJUKzNKQUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzEiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6ImFhNzlmNDc2ZWEwMDQxN2U5NjI4MWU4MzY1MTIzOTIyIiwib3B0aW9ucyI6eyJyayI6dHJ1ZSwiY2xpZW50UGluIjp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjp0cnVlLCJhbHdheXNVdiI6ZmFsc2V9LCJtYXhNc2dTaXplIjo1MTAsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6MSwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjo5NCwidHJhbnNwb3J0cyI6WyJuZmMiXSwiZm9yY2VQSU5DaGFuZ2UiOmZhbHNlLCJtaW5QSU5MZW5ndGgiOjQsImZpcm13YXJlVmVyc2lvbiI6MjYyNDAwLCJyZW1haW5pbmdEaXNjb3ZlcmFibGVDcmVkZW50aWFscyI6MzB9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wNy0yOCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyNjI0MDAsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiSElEIENyZXNjZW5kbyBGSURPICIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjUwNzI4MDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDctMjgiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MjYyNDAwfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTA4LTAxIn0seyJhYWd1aWQiOiIxZTkwNmUxNC03N2FmLTQ2YmMtYWU5Zi1mZTZlZjE4MjU3ZTQiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjFlOTA2ZTE0LTc3YWYtNDZiYy1hZTlmLWZlNmVmMTgyNTdlNCIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJWZXJpZGl1bUlEIFBhc3NrZXkgaU9TIFNESyJ9LCJkZXNjcmlwdGlvbiI6IlZlcmlkaXVtSUQgUGFzc2tleSBpT1MgU0RLIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfSx7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImV5ZXByaW50X2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJoYW5kcHJpbnRfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhdHRlcm5faW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoidm9pY2VwcmludF9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmFjZXByaW50X2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibG9jYXRpb25faW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInRlZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJzb2Z0d2FyZSJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVsZXNzIiwiYmx1ZXRvb3RoIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDR0RDQ0FiNmdBd0lCQWdJVUx1TEp5bHZKcUs4SkV6emVhV1RZb2NIYWV1TXdDZ1lJS29aSXpqMEVBd0l3ZkRFTE1Ba0dBMVVFQmhNQ1ZWTXhFVEFQQmdOVkJBZ01DRTVsZHlCWmIzSnJNUkV3RHdZRFZRUUhEQWhPWlhjZ1dXOXlhekVWTUJNR0ExVUVDZ3dNVm1WeWFXUnBkVzBnVEZSRU1STXdFUVlEVlFRTERBcFdaWEpwWkdsMWJVbEVNUnN3R1FZRFZRUUREQkpXWlhKcFpHbDFiVWxFSUZKUFQxUWdRMEV3SUJjTk1qRXdPREV5TVRJd05qTTFXaGdQTWpBMU1UQXpNRGd4TWpBMk16VmFNSUdITVFzd0NRWURWUVFHRXdKVlV6RVJNQThHQTFVRUNBd0lUbVYzSUZsdmNtc3hFVEFQQmdOVkJBY01DRTVsZHlCWmIzSnJNUlV3RXdZRFZRUUtEQXhXWlhKcFpHbDFiU0JNVkVReEV6QVJCZ05WQkFzTUNsWmxjbWxrYVhWdFNVUXhKakFrQmdOVkJBTU1IVlpsY21sa2FYVnRTVVFnUVhSMFpYTjBZWFJwYjI0Z1NYTnpkV1Z5TUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFRlY3Q1QxWTUwWVV0RHM1bkNmdnBZMzhMN0lLd0hoaDFFQ0V0ekZHZ0pxTXJXYzlPQ3hFUnVyYmpsdzFlbnljY3I0WURQbkR2K3l2czZjSThZUlozU3FNUU1BNHdEQVlEVlIwVEJBVXdBd0VCL3pBS0JnZ3Foa2pPUFFRREFnTklBREJGQWlFQWlKdjN3SFVxeXVKMGNBdDkyOW1xQWFQekZoamhuYXlzcWpOdHhLcFV6QmNDSUVRWFI3czg2TzZCbkJIMzBJV3VXTHh1dC90c2hpYVQ2RXUwTmtoNkhkNjEiXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZ0NBWUFBQUVFZlVwaUFBQUFCR2RCVFVFQUFMR1BDL3hoQlFBQUFDQmpTRkpOQUFCNkpnQUFnSVFBQVBvQUFBQ0E2QUFBZFRBQUFPcGdBQUE2bUFBQUYzQ2N1bEU4QUFBQWVHVllTV1pOVFFBcUFBQUFDQUFGQVJJQUF3QUFBQUVBQVFBQUFSb0FCUUFBQUFFQUFBQktBUnNBQlFBQUFBRUFBQUJTQVNnQUF3QUFBQUVBQWdBQWgya0FCQUFBQUFFQUFBQmFBQUFBQUFBQUFFZ0FBQUFCQUFBQVNBQUFBQUVBQXFBQ0FBUUFBQUFCQUFBQUlLQURBQVFBQUFBQkFBQUFJQUFBQUFBUWRJZENBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBQ1ptbFVXSFJZVFV3NlkyOXRMbUZrYjJKbExuaHRjQUFBQUFBQVBIZzZlRzF3YldWMFlTQjRiV3h1Y3pwNFBTSmhaRzlpWlRwdWN6cHRaWFJoTHlJZ2VEcDRiWEIwYXowaVdFMVFJRU52Y21VZ05pNHdMakFpUGdvZ0lDQThjbVJtT2xKRVJpQjRiV3h1Y3pweVpHWTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5MekU1T1Rrdk1ESXZNakl0Y21SbUxYTjViblJoZUMxdWN5TWlQZ29nSUNBZ0lDQThjbVJtT2tSbGMyTnlhWEIwYVc5dUlISmtaanBoWW05MWREMGlJZ29nSUNBZ0lDQWdJQ0FnSUNCNGJXeHVjenAwYVdabVBTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM1JwWm1Zdk1TNHdMeUlLSUNBZ0lDQWdJQ0FnSUNBZ2VHMXNibk02WlhocFpqMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzlsZUdsbUx6RXVNQzhpUGdvZ0lDQWdJQ0FnSUNBOGRHbG1aanBQY21sbGJuUmhkR2x2Ymo0eFBDOTBhV1ptT2s5eWFXVnVkR0YwYVc5dVBnb2dJQ0FnSUNBZ0lDQThkR2xtWmpwU1pYTnZiSFYwYVc5dVZXNXBkRDR5UEM5MGFXWm1PbEpsYzI5c2RYUnBiMjVWYm1sMFBnb2dJQ0FnSUNBZ0lDQThaWGhwWmpwUWFYaGxiRmxFYVcxbGJuTnBiMjQrT1RZOEwyVjRhV1k2VUdsNFpXeFpSR2x0Wlc1emFXOXVQZ29nSUNBZ0lDQWdJQ0E4WlhocFpqcFFhWGhsYkZoRWFXMWxibk5wYjI0K09UWThMMlY0YVdZNlVHbDRaV3hZUkdsdFpXNXphVzl1UGdvZ0lDQWdJQ0FnSUNBOFpYaHBaanBEYjJ4dmNsTndZV05sUGpFOEwyVjRhV1k2UTI5c2IzSlRjR0ZqWlQ0S0lDQWdJQ0FnUEM5eVpHWTZSR1Z6WTNKcGNIUnBiMjQrQ2lBZ0lEd3ZjbVJtT2xKRVJqNEtQQzk0T25odGNHMWxkR0UrQ3JPdGxsRUFBQWJPU1VSQlZGZ0p0UmRyYkpOVjlONzdmVis3N2duYlNGeWM0T2ptZzJpTURqRktvc0FZQkh5QlkyRDhZV0tNemhCK09GOXMrMk14eWpBaUd2OU5Rd3d4TVhFUEVnenZEWXJBRWpRYm9BTXh0TjBZUTUzUXRkMnJhL3M5cnVmYzlpdnQxcTZRd0czUzc5NTdudmVjYzg4NWw1RFpobjE3bTBhWEgra2FJSno4ZVBXc3Z3bVI1YUF2SFBFT0JKdVkxVVpjNzc5QWt6aFV2dDJpeEhkS2Q3WGFyQ0VhcE1zUGQvSnJselJpVEUwUXltaWpmUFhjS0NlY1UwOVRiUnc3aVUvaW9uekhYZzVxZExxY3E2c3JZZ0JhdnFQakNEZU1haE5SSm9US1ZaMWRmTEEzUUxnQjNBMERZRnoxTkcyMElCSnpybDVaTnRqai94S0JsTEYrVCtTaVpBSk5Mck4rMDJwYXNhUDlDeTVaUGdBZGtrZGxTNDh5TnZsZnhBZ0ZDWlU0WVN0UG5PS1ZMUzJLaVJZWUdRZ2pVQXhRbUs0NDNLa1RTV0pYenZrZW9Cci9Dd0FNZ1ZTU2lYdnJlc280NTJUb25HOE1nSmROSUtGVWRaZXBRcnc4MEJQZ2trVHprUW9BbkZIalJWZEQ3UUd4TnYvc3pSMGN2QnN4MTRuZnRNZE1SSm8rWCtad3lrTTUvb2RrVzBHZlVIZzZRc3AxYmF1RSsrWE43ZGVHRk84VVVmVStIVUtFVlhVZWR3b0NoeU10TXpqQ3BvcW5iQm9jQTJ6Qzd5V1V4TzBQQVlkQmE4eVg4L0tZT2pyK09NbFdMcEJmQ0RuaFdLN1ptOXN4OWxRUUVQZURFSVovbkdnUW9HNFI5WlR6K1J6c1R5VkdBbGVELzQ1NXRSS3VhM0hjK0lRU25kbHlKUjRPM2xjNlZUaU1RbVFDM3VTVVR2WC81cytTRmNaQVlrbWN3SnhRa0VmcFBrL0RodlhtbGpzMlljNDFxOHFHem80T3l6SUZUanpSS3hyTHlpYWV4ZzFzem9EUG1raHNNc0h2VFFLSFE2NndQRkpKc25QUDhGRHdFM2ZES3g4bkl0NlZ1WDE3KzdxMHJrc3JNZVp1OE5BZmxKS0cyMklncnBYRFlWVHMvSm1EOFI4RVg4bzNiWkJXWkF3QWt1MjJSNTlqU3RaeEl4d0VyeE1EaU0rejJsWXVRalFUZlhuMlkzdUliaHdYbHhtY2FucU0rUXFQUGJQTTZZeUhaaEtqVmpQK084YTVwbTVLZ3NVV2pERGxKSXNZemRPQmVONHlsMVpjOGRVaENIODlHencrTTV5QmlJbEk1TWE3SzQ1MlljWUF1MFNEYWN4ZnRGbFNjb1l4S1FQeGRHTWJFTkt3WjNuTEJNaVFPTXVxbkNjeFpEbms1UE1RNFR1NWxqS0hxSlJKekZXL2xwYUc4L3RvVlplVEc1b0dnaUVGU2l3MGVINGlpMmdxM3FRVWR1R1FCbGszaFBlenFCYnFHOVVBSWtJTjZyNkJYLzFaUk5mUVJUT0lxV0xGNi9wbWpCaFE0SUloSXBVbDR2T00zWmowYWZNWU9qVDVRaUdPdU1Jc0VzblBMZlNHY0NOeHlGZk9YTmRoWXg0ZUljVlFLYUhqcnZvMVJRUlRXbHNkNGlZTkprbmtDV29GTDhWVWlrUFI4SlR1ZGpkdEtCSjdiUnRuRU9NK0s1a3MraE10Q21VWGpZTEc0OHlXUTJUR24vVFlqUzJJbEhuRXptMXYzbnNGeXlvU1lPck9UQmgxeGEzZzNSRWM3Q042djYxVHk3ODVhQ1dUVTYyUXNSODJBL0dPQ0VqSkpIWWZFVGEyb0xnVzhsQ1FoTlVRK09jbGlMN1J1NllBbmhhRmxybXN4U0RVV2ZIMUlXNVEvUWR3c1lXckVRTTZBaEd5V0VWdVBhY2h4MWxHb3QvOUM0czJZenhJQ2htR3VyblVDTVp5QWljb09jNkZMZTN1enNWVjJwUVdSMDB6d1FQRXpQeVBaYVFjNnNUdm1NR2d4dTNraG01RTgwbnFUSVljbVRVWWRxMDRlb3hMcXY2cUthSTJ3Vy9tM3ZTdmFXSk1YblkzM1k1bHdtRHNFcHh1VVRRRGNyd0ZxVjBNTklJZnRsUFFWNHIwWUJqOCsxWGRaM2pWMGE3OS9ybHpoVlVxZTNxU2N6QVdORWMwZndYdUwxNEN2aDJxMkhVQW1QRjZJeExtY0dMa20vbjZRVnZDSUxkaFI4SHdCTkMvWW1wazZ2ZzRwSGRlVFpTc0FEVHF3VGtqZ1plRnBnUUV3eWdmV2FMWXJSMjdoVkRLVDBQODNCUHRONFdKTThXUzBFNnk1WUpJdXQ4SWVBdmNqVFdMVTJscjBVUENLQXBuckszNjFHa1NHQno5eWR2ZnRwVGxrVko5eWxEalRXNm0wNktwb1Znd2E0N0MxYkFQMHUzcmwrdlhIQ1pveVl1TGhNSXpGUUNETWtVaVdrUVBldDNqa1VuZlNKRWswMXFtRUs1UFRZSWQwZ2RVMUZyaVg0TzZJek9MbFVJdC9zNzEzdG90YUdsczRRVVVXZ3NUVnlnZ0tnRzRBMzdxeEkxUTRFWi9NQWZja2cvOU5nSGhpSXZ0WGFhQkdGQjZjbVJvT3dZNGxWK0RKMVdQdUNIYnRpRVQzbHUzR0Z2VnBDRXpDWXJobEQ1KzNUV3VoaWEwUXRuQ3NLNmg2Y0RGU2JqcEZpbzhLUlIwTEFUaE5pZ3NueUppL0pac1RGMkZUR2JNZFhya3c3OHZqRmwwUXk2RXA0bUtqeW9RbnltZzBJUllhUEVCMWlzeGFhSDdvM1YwVHIvM2N6T3hZYzQzaGN6MlpmTksvUHM4alRWWldTb3JoT0xhaVV4QkF4UVE5MU1DQTVVcThBcWtWS2N5ZXdjS05YVTMxRHhkTXBrM2hEaENLQWJlYlF6V1d4ZlZ0TThlSEhOdHJYa2VtUkxaOGdaWVZCZkNPQmV0a1ZDTTBZTTJiYUlRK2hKTFFZRjNEOGdSbHNLWHdtM0l6SXhxdmkwWGZOWlJBZytrL2ZoSUVsUUphVGN6bDF2RCtCOWNNQTdneXF2dVRRQUFBQUJKUlU1RXJrSmdnZz09IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiRklET18yXzAiLCJGSURPXzJfMSJdLCJleHRlbnNpb25zIjpbImhtYWMtc2VjcmV0IiwiY3JlZFByb3RlY3QiXSwiYWFndWlkIjoiMWU5MDZlMTQ3N2FmNDZiY2FlOWZmZTZlZjE4MjU3ZTQiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwidXAiOnRydWUsInV2Ijp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6dHJ1ZX0sIm1heE1zZ1NpemUiOjEyMDAsInBpblV2QXV0aFByb3RvY29scyI6WzJdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjUxMiwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoxMjgsInRyYW5zcG9ydHMiOlsiYmxlIiwid2lyZWxlc3MiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fV0sImZpcm13YXJlVmVyc2lvbiI6MX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTA3LTE0IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiVmVyaWRpdW1JRCBQYXNza2V5IGlPUyBTREsiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI1MDcxNDAwMiIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTA3LTE0IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjF9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDctMjgifSx7ImFhZ3VpZCI6IjJmYzA1NzlmLTgxMTMtNDdlYS1iMTE2LWJiNWE4ZGI5MjAyYSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiMmZjMDU3OWYtODExMy00N2VhLWIxMTYtYmI1YThkYjkyMDJhIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ill1YmlLZXkgNSBTZXJpZXMgd2l0aCBORkMifSwiZGVzY3JpcHRpb24iOiJZdWJpS2V5IDUgU2VyaWVzIHdpdGggTkZDIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyODcwNiwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3IiwiZWQyNTUxOV9lZGRzYV9zaGE1MTJfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlESGpDQ0FnYWdBd0lCQWdJRUcwQlQ5ekFOQmdrcWhraUc5dzBCQVFzRkFEQXVNU3d3S2dZRFZRUURFeU5aZFdKcFkyOGdWVEpHSUZKdmIzUWdRMEVnVTJWeWFXRnNJRFExTnpJd01EWXpNVEFnRncweE5EQTRNREV3TURBd01EQmFHQTh5TURVd01Ea3dOREF3TURBd01Gb3dMakVzTUNvR0ExVUVBeE1qV1hWaWFXTnZJRlV5UmlCU2IyOTBJRU5CSUZObGNtbGhiQ0EwTlRjeU1EQTJNekV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRQy9qd1l1aEJWbHFhaVlXRU1zcldGaXNnSitQdE05MWVTcnBJNFRLN1U1M213Q0lhd1NESHk4dlVtazVOMktBajlhYnZUOU5QNVNNUzFoUWkzdXN4b1lHb25YUWdmTzZaWHlVQTlhK0tBa3FkRm5Cbmx5dWdTZUNPZXA4RWRaRmZzYVJGdE1qa3d6NUdjejJQeTR2SVl2Q2RNSFB0d2F6MGJWdXpuZXVlSUV6NlRuUWpFNjNSZHQyemJ3bmVid1RHNVp5YmVXU3dienkrQkozNFpIY1VoUEFZODl5SlFYdUUwSXpNWkZjRUJiUE5SYldFQ1JLZ2pxLy9xVDlubURPRlZsU1JDdDJ3aXFQU3psdXduK3Yrc3VRRUJzVWpUR01FZDI1dEtYWFRrTlcyMXdJV2J4ZVN5VW9UWHdMdkdTNnhsd1FTZ05wazJxWFl3ZjhpWGc3VldaQWdNQkFBR2pRakJBTUIwR0ExVWREZ1FXQkJRZ0l2ejBiTkdKaGpncFRva3N5S3BQOXh2OW9EQVBCZ05WSFJNRUNEQUdBUUgvQWdFQU1BNEdBMVVkRHdFQi93UUVBd0lCQmpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQWp2anVPTURTYStKWEZDTHlCS3N5Y1h0QlZac0o0VWUzTGJhRXNQWTRNWU4vaElRNVpNNXA3RWpmY25NRzRDdFlrTnNmTkhjMEFoQkxkcTQ1cm5UODdxLzZPM3ZVRXROTWFmYmhVNmt0aFg3WSs5WEZOOU5wbVl4citla1ZZNXhPeGk4aDlKRElnb01QNFZCMXVTMGF1bkwxSUdxck5vb0w5bW1Gbkwya0xWVmVlNi9WUjZDNStLU1RDTUNXcHBNdUpJWklJMnY5bzRka29aOFk3UVJqUWxMZll6ZDNxR3RLYnc3eGFGMVVzRy81eFViL0J0d2IyWDJnNElucGlCL3l0LzNDcFFYcGlXWC9LNG1CdlVLaUduMDVac3FlWTFneDRnMHhMQnFjVTlwc215UHpLK1ZzZ3cyamVSUTVKbEtEeXFFMGhlYmZDMXR2RnUwQ0NySkZjdz09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWZDQVlBQUFDR1ZzK01BQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBSFlZQUFCMkdBVjJpRTRFQUFBYk5TVVJCVkZoSHBWZDdUTlYxRkQvM2Q1OXdlUVNJZ1M5QVFBWGNGTEFRWmk5ZnBlVnoxdFkvV1RacjVXeHBjN1c1a25MYTVqSTNaODVzclMybk0yc2p0V3daUzdJVUg0SDR4Q25FUXg0REFaRjc0Vjd1czg4NXY5L2xJbkJ2VkovQjRQdjludS81bnUvNW52TTU1NmZ6QS9RdjBIYi9JclgzVkZLUG80NWNubTRpblVJV1l3TEZSbVpRVXV3akZHL04xaVJIaDFFWjBOUlZSdWRxdDFCZCsyblNLeVMvT2h5czArbGszZS8za1E5cXZENFpVdGE0VlZTVXVZMGVpcHlpVGhBZm9jb09SVmdEdXV3M3FLUmlBZDNyYmNFdGpUallJb2Y2V2FIc0NtelZQV0NNeCtjZ2g4dExxV01LYU1Xc1VqTHFvMlJ0SklRMG9Pem1lcnBRdTRlc1pnc09Oa0d4SDdkMGtkdlRUMTdzNE9NVTdWSThaaGpnR2FNK0FxOWlFTnU4UGlmMXVkejA3TXd2S1dmOEdsVm9DRVkwNFBDNVdkVGFYWUZiUjh2TnZMNSszS2dmYjV4Tk15YTlSYW1KaXluYU1sR1RWdEZscjZiYTl1K3BxbkVYNHVNdVJSZ2pTWUVock43dXRGRmU2bHFhbDdOZmt3NWltQUdIeW5QcGJrOFZtWTB4c3RucHRsRkNWQ1l0elR1Qk44M1FwTUxqVHRldmRQelNVbko3ZThta2p4WjM5ZlhiS0RmbGRacWJ2VStUVWdHbkJWRjZmUTJpUEhnNFcxNlVXVXd2emJrMTZzTVpFK1BuMHB2ejdKU2V1QXllczhsY3BDbWFLdW8vcCtxV3IyVWN3SUFIV3J2UDBZRXpoWEF0TEFic3NIaHA3aUdhbXZ5aWpQOHJ5cXJYVVdYOVhvb3d4eUF1Zk5CcnA0M1BPQkZYWmxrZjhNRFJpcWNweW93QXdwdXoyeCtmV3Z6L0R0ZGU5c21zenlndGNSNkMxd2JkekJsNk9scTVXTllZNG9HYXRoSk1ya1RFeDBqQVJTSEFWcys1cllrUU5YYitRZ2ZQTHNRNmdYeUluc3JlUWZtcG03UlZGWWZMODZuMWZpVU9rWXZTaGtVUHh2YnVrem95NksxaWhNMWhvM1h6VzZFdlNmWEErZHBpV0dhV2QrZG9Yekx6bUd3S1lGTENBc1JBbFBCQWhNbENGWFU3dEJVVlByOEhnVmNKSFdxK0YwMHBscitETVRkclA0enZ4WTExa05NaHhUK1NlVEdnK2Q0VjVMUUppdHlVR0pOQjhWRlpzamdZQlpNL0lJL1hDVGtqMHF5RE9wRjJBVlExN0NJalVwL0RuVDFVa0w1RjVnZGorc1Mxd2cxZ0UzZ2lnbTYwZkNYelNuUFhieUFQYklYditJRHBFMTZUaGFISVM5c2t5aGxtTUU1RjNjZnFBS2hxMkMwRTVQSDFnWWFYYUxQRGtaRzBIREpPbktXSHA1MUkwejVTT3V4OGUxV0F1WnpkSFFyVGtwOFRtalhvSStsYTB3R1pzenVicWJPM2lmUTZBL1c3dlZTWXNWM21SMEpLd2tLYzRXSGlCa21SOEkzQ0NnSTg3b09MNHF6VDVQK1JVSkJlakVPZ0FQSzhoWVB6YXRNK2VJVHAySU85eVRRbWVyb21QUnh4MXF4QWNzaWxlL3ViU2VFYmNXUUdZRUNnaGNMWTJIeUtqb2dqSDI1aE1wanBVdjFPdWdsaTRlaDJlUncwTzMyYkpqa3l1Q2dOemcwdnpsWU1TaVNzMHVvbzRNRzdoTU9qQ0VhWDF5RkUwblN2akJ6dVRuRXBLODZaOElvcUZBSXVidzhrZzlBckVhUkVXU1pJK2pINFhicDZnOUU5RW5KVDNvYVJ6RE4rTVVKQlFESG41NmE4b1VtRUJ1c094QnMvTjUrdEpFYlBrQUZEajhVR3ZPcy9JV3ZjU2dsR0JodlM3L0ZUWWZwV0dZZERZOGZQQXhXU0EzNXNUQzRwNCtMbTRBYXFJb1BlUXRmdWZLNkpoMFpoeGxic1VYT1NtWE5pZkQ1WlRBa3lEb2ZiYmNjbHhuQThXTkFxeENiUk55a2hYeFFwYUR3NjdmWFVZYnNpRzBLaHR2Mm9lSXZoOHJoUU1ZT2NFQXFYRy9lSSt6bmdPYzV5eHI4cTgySUFNMWMvRkxGT3BscXU1ZUZRWHJNWnpHY1ZDalliTFdHNUk0QlQxZXVScmxieHROT3RNaXREREVoTFhJSXluQUF2dU9FV0UzWDNOZEFmdDk0VmdhRzQyWElRdDBaWDZQZUNFL3FRRmU5cks2SHg3WVU1MEt2SDdmVzRmUytxN0tLQkp4c2dnQlg1cFNBR2gxaklyVmg1elE2dzNSZmFhaEJYbS9hQ2JDWlRqQ1VGVVR5V1pxVzlwNjJNakpQWFZxT3JQZ01PNE52NzRHa2Yrb3dmdE5WQkRRbmpGSnFIU3cxN3BYdmhXVzVLWnFlL1E0OU4vVVNUQ0FWV29RWEZJSEJIWFhlM0ZQclVEc3VHRG10Ri9oSEtUSHBla3hoaUFPUEkrU0pxNlM2SEY0STlZV3prQkpUbzQ2aVVNeldwOFBpci9SaWR1THhLWXNTa3NWOHZMbE9RdmhHWDJZbFIwT0JoQmpDK3UvZ0VjdlkwQXBLN1lrNDFOeGpQU1FuV0ZIVEY2NlVyamdldkI4Q3U1YStsMnZZU1JQdHVWRG83M2hoZE1TSG5VWDd0VGpzVlpHeEFsL1dwdGlPSUVRMWduTDI5bVg2L3RSMXRtbGtZajhXNFgrQ1NqV2NVREdZMU5wUy9DN2hTS3FpTUxNL2wyUW1TV1o3M0RkeitnaW84QkNFTllQUTQ2cW5rendYVWJxdkJreGpVUXNXZlpGZ2J1bzNyQWYrd043ak9POTAreW54NFBpM0wrMG5ZTDFTY2hEVWdBUDRnUFYvN0lkMXErMUhTaG11R2tJcVdSUGd5eE1GcVA4SGZqVG5qWHdZNWJRZmJKY3Q2T0l6S2dNSG90Ri9IZTFlZ3NheEhTcUc2d2ZkbVE1eDhOeVRGRnFCY3AyaVNvd0hSM3lrNSszNmhGN3ZYQUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzFfUFJFIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiIyZmMwNTc5ZjgxMTM0N2VhYjExNmJiNWE4ZGI5MjAyYSIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlfSwibWF4TXNnU2l6ZSI6MTIwMCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0Ijo4LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjEyOCwidHJhbnNwb3J0cyI6WyJuZmMiLCJ1c2IiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotOH1dLCJtaW5QSU5MZW5ndGgiOjQsImZpcm13YXJlVmVyc2lvbiI6MzI4NzA2fX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjAtMDUtMTIiLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ill1YmlLZXkgNSBORkMgU2VyaWVzIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAxOTA4MjYwMDIiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMS4xIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjMifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjAtMDUtMTIifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIwLTA1LTEyIn0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiYWFmYjVlY2Y0YjNjMzZmY2Q3YjhhZjk5YWIxOGY2YjE0OGU1MTU2NiIsImU3ZmM5MDg3MTc2MDcyMmVlNjI1YTE5YmIzOGJiYjg0Nzc1Nzg2MzUiXSwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiYWFmYjVlY2Y0YjNjMzZmY2Q3YjhhZjk5YWIxOGY2YjE0OGU1MTU2NiIsImU3ZmM5MDg3MTc2MDcyMmVlNjI1YTE5YmIzOGJiYjg0Nzc1Nzg2MzUiXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ill1YmlLZXkgNSBTZXJpZXMgd2l0aCBORkMgS1ZaUjU3In0sImRlc2NyaXB0aW9uIjoiWXViaUtleSA1IFNlcmllcyB3aXRoIE5GQyBLVlpSNTciLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2LCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjJ9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50IiwicmVtb3RlX2hhbmRsZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRFNqQ0NBaktnQXdJQkFnSVVUbmJiR0lSMk5IdnpxSUtGQWVRd0cxWEJpczB3RFFZSktvWklodmNOQVFFTEJRQXdMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3SUJjTk1qUXhNakF4TURBd01EQXdXaGdQT1RrNU9URXlNekV5TXpVNU5UbGFNQ1l4SkRBaUJnTlZCQU1NRzFsMVltbGpieUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRUVnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBT3NYajNrMDRCYW40VFlkdFpLcUQvT1BKeHlEeWFQbUNCVUZVaWFaSWdUdGVabmozWDI1RGhncFpaWHNDNEQweWRJY3JsQTZ3TlVJbk9STC9MOXpCYlRFSU1BVk1HbzZnN1VLQW1iMk1GNkFIYm5oWUpkOWVpa3VwVk5XU2hITllOYzRHQmRPMVlONkFmVXF2SmhIYmUzVjRTTk1QbUJSRUtKUFZ6N1Rod2dtZ2dUZThXczJLMC93c3F2MndTRTdwYkNCc1VaaElYNTFiWk0zcHFEd0pQVG1SRkV2dDAvNnRHNWVPOEYzajE0T1hxZkVobWpuMVZ2eEtEWVFPTFpBeEN3d2dDMFA0Q2RmV3YzeThQU1I4STM1NGhPMVkrR3pOanZJcVgzOE5LTHl3dUlZSEZlck94Tmx4RU1CdkZoWUJ1UnVZQWtrZ1VhUHFONlVCaHNJTHJzQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZDQ29SSGhpeU5uYm5YUldJTDZaQlhvQlg5WVRNQjhHQTFVZEl3UVlNQmFBRkNBb1VDRWJwRnBiNkZQTG5aM0Y1UHhzTDNvZk1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQ1FGYWZKSTEvNVdnOUNFRWltRTFSUDU0UmdRd1ROVE9PUXNMQUNUZStySXRsRlF6QzlaRGhyVjgyOHlYN2p6eStBQXNwM2l6SzdUMXRoMmRsN20rdHUwc3cyUGEvb2xjMDJudDZQeUl3MzQ4Z2FIemhJMSswS0U0NXF4dkZEZUwybE14YlBmQ1l2eUVFYVl6amlRRUxVNTk1MXBYR1d5S01hLzRmTHRPK1pLT1hoTXVWZXE0clhEUEk1NFc2SkhPaUFhaUtkaXcrNWUzYzJrdC9qRklRdE02dk1YZzlMTkZ6ZGpFVE50MjBWWDlRZXZScEZaZnVjTUc5d0NhUURvRmxQenBUTUpLaFBldi9pbUptWlloS2ZyMGxMY2VtdHFqSXhMQW9xWmRPWWZIQmc2K3ZBY2RQSS9pYXVHcFVBdjdYK1VLTm1Ed2paMkJhSDRzTHdoQjJtIiwiTUlJRFBqQ0NBaWFnQXdJQkFnSVVYemVpRURKRU9UdDE0RjVuMG82WmYvYkJ3aVV3RFFZSktvWklodmNOQVFFTkJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNWjYvVHhNOHJJVCtFYW9Qdkc4MW9udE1Pby8ybVEyUkJ3SkhTMFFaY3hWYU5YdmwxMkxVaEJaNUxtaUJTY0laZDFSbngxb2Q1ODVoKy9kaEs3aEVtN0pBQUxrS0t0czFmTzUzS0dOTFp1ano1aDN3R25jcjRoeUtGMEc3NGIvVTNLOWhFNW1HTkQ2enFZY2hDUkFIZnJZTVlSREY0WUwwWDRENW5HZHh2cHBBeTZua0VtdFdtTW53TzNpMFRBdWNzcmJFNDg1SHZHTTRyMFZwZ1ZkSnB2Z1FqaVRKQ1RJcStEMzVod3RUOFFESXYrbkd2cGN5aTV3Y0lmQ2t6eUNpbUp1a2hZeTZLb3FOTUtRRWRwTmlTT3ZXeURNVE10MWJ3Q3ZFenB3OTF1K21zVXQ0cmowZWZuTzlzMFpPd2R3TVJEbkg0eGdVbDVaTHdyclBrZkMxLzBDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01COEdBMVVkSXdRWU1CYUFGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFNd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkRRVUFBNElCQVFDM0lXL3NnQjlwWjhhcEpOanh1R29YK0ZrSUxrczB3TU5yZFhML2NvVXZzcmh6c3ZsNm1lUE1yYkdKQnlKMVhucXVCNXNnY1JFTkZ4ZFFGbWEzbWlvOFVwZjFvd00xWnJlWHJKMG1BREcyQnBscWJKbnhpeVlhK1IxMXJlSUZUV2VJaE1OY1pLc0RackZBeVB1RmpDV1NRdkptTldlOW1GUllGZ05oWEpLa1hJYjVIMVhnRURsd2llZFlSTTdWb2xCTmxsZDZwUkZLbFg4dXN0Nk9UTU9lQURsMnhORjBtMUxUaFNkZXVYdkR5QzFnOStJTGZ6M1M2T0lZZ2MzaXJvUmNGRDM1NGc3cktmdTY3cUZBdzlnQzR5aTB4QlRQclk5NXJoNC9IcWFVWUNBL0w4bGRSazZIN1hrMzVEK1dWcG1xMlNoL3hUNUhpRnVoZjR3SmIwYksiLCJNSUlEU0RDQ0FqQ2dBd0lCQWdJVVVjbU1YelJJRk9nR1RLMFRiM2dFdVpZWmtCSXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFEbTU1NWJXWTlXVyt0T1kwcklXSGxkaCthTmFub0NaQ0ZoN0drM1laclFtUFV3MGhrU0c2cVlIUXRQK2ZaeVMzM1ZFcnZnK0JRcW5tdW1nTmhmeEZya3dFWkVMZWlkQmNDOEM0QWc0bnFxaVBXcHpzdkkxN05jeFlsSW5MTkxGY1pZLytnT2lONlpPVGloTzUvdkJaTWJqOXJpYUFjcWxpWW1OR0pQZ1RjTUdhRUF5TXpFTU55Mm5tNkVwK3BqUDVhRjZnaTIxdC9VUUZzdUoxajJSai95bk0vU2RSdCtlY2FsNU9Zb3R4SGtGYkw5dnZ2MkEyT3Y1SVRaQ2x3NGJPUzlucHlwUWltT1o1UUFZeXRtWWFRcFdsL3BNWXo2elNqOFJxa1ZETkVKR3FOZlRLQTJpdkxZd1g2bFN0dE1QYXBnMEo4NGw5WDB2b1ZOL0ZwUzRWQ1ZBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlFnS0ZBaEc2UmFXK2hUeTUyZHhlVDhiQzk2SHpBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBWU16Z0xySkxJcjBPb3ZRbkFaclJJR3VhYmlIU1VLU21iTFJXcFJrV2VBdHNDaERFSHBYY0ovYmdETktZV29IcVE4eFJVakI0Q3llcFlldmMzWWxyRzhvN3pIeHBmVmNhb0w1U2V1Smt6SHhLbjRiVGFTcDkrTXZ3YW1ucDY0a1pNaU5iRkxrbmZQOWtZS29SSGtNV2hlUkoxVXNQMXo0U2Nta0NlSUxmc01zNnZxb3ZxaldDbEZzSnBCY3NsdVlIV0Y3YkJKMW40UndnK0FURW9wWTRJZ0d2Nlp2d2MrQTlyK0FUMmhxcG9Ta1lvQWwrQU5Zd2dzbE9mOXNKZTBWK1RBOVlZL1VsYUJtUFBUZDAvL3I5d3ZjZVBXWmtQaktvQUMvelVOaGZEYmg0TFY4R0hzM2x5WDJYb21ML0xOYzhKWXp5SWFERWhHUXZlb1BoaC90cjFnPT0iLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVIzOG1xMjZTZjJzelZWMkJkRzZXRU43a3VXVXdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFSWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFOWTBXYjlvUG9Sb0tvUXlXUGFKcHoxMXZyV1RnNnpUdG1OajJWb0tSbnl2S0dScXB6YjgzdzVsNllBOTZVWWtZQkRRUDBpbE8yRFBlNndXcVZSNXpEZlJ6ZGNIOGJoK0w3ZEdHdmFlNmhSVFpoa0ZrQ3BYRHM0SGNja25yRGY4RkNsSjdIZTM5SmY0Mi9HMVFtMnp6OVdXbXJQWHRnaUsveDA1R2pzUWZHdURHMXpmNVFUVVVpZThsd3ltSzNUZmRPdk5lZUpBQVBlMnBuN0l0ZlJiK3JWck5XaUR6bFJuMnZObloyd1BvNHdIL1dKNmRoWFpHK3JNV1QrYTZCb2NnMVVmSXc2a2R1bkc0YlRwWnpzdmFjRll5UjBtcGYrRGVPbnBTV0FteXdKV0h2VGxmMllYeEZ5ZVhjVEFDZFFsY01OR0oyVmhaUTQ4eHRQNS9SQlAvOGtDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNoeTQyb2tpcWNUUzFpcWEvSFJXamtCbjRIL01COEdBMVVkSXdRWU1CYUFGT3EzUXBDZURIdGtldHRVZkFPNmZFNmYyS0ZoTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBbitSSElQYnRNRUROZFQxZzhIL1JpdEFrVWRMZ0F0MXRXR1dubGo5a25idjQvNEdsWDdDOXA0NWVmUE85L2FaTDZPVjFYUktCaTZLbXRCVzVLN251WUVuTXgvNUJxQlNiTFQ3cmhkdUM0OVRCZU1iOVBIZFhzVGxTVk5ZZWZyMWRHaWRyNGoweFZCUUxiMXJrbkRBYmRXRHpLZnZuYXlLTzhGcndlN0h4ODQzTUcvckorYzBYcnVVdmJmVlRDSExpSVdoTTdvTkRoTDh4b2I2eFVvOUtMS2NTTCtJdFlzTzMvOVdiOFE5R2pzcUw0RlhzRGNHMVNhWWg3S3BmdU1tT2l4cXpKWk8ybklpY1BZUmcxSTJTdWlVZllPNzB0bWRIY2JsK2tTUW1TWXQ3cnE0dmlJTGcyR3gzajlySVR1V1RqYmFVYVNTUXhnT21NU0h1eXpNQUMiLCJNSUlEU0RDQ0FqQ2dBd0lCQWdJVURxRVJ3KzRSbkdTZ2d4Z1Vld0pGRVBEUlozWXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFESTdYbkgrWnZEd01DUVU4TThaZVY1cXNjdWJsdlZZYWFSdDNZYmF4bjlnb2RMeDVzd0gwbFhyZGdqaDVoN0ZwVmdDZ1lZWDdFNGJsMXZielVMZW1yTVdUOE4zV01HVWU4UUFKYkJlaW9WN1cvRStoVFpQLzBTS0pWYTNld0tCbzZVTGVNbmZRWkRyVk9SQWs4d1RMcTJ2NUxsajV2TWo3SnRPb3RLYTlKN25IUzhrTG16WFhTYWowU3dFUGg1T0FaVVROVjR6czFidm9UQVFRV3JMNC9KOVF1S3Q2V0NGRTVuVU5pUlFjRWJWRjhtbHFLMmJ4Mno2b2tWbHR5RFZMQ3hZYnBVVEVMdlkxdXNSM0RUR1BVb0lDbE9tNGNycHduRFJMVkh2alllUEdCQi8vcEV5enhBL2djU2N4andhSDFaVXc5Ym5TYkh5dXJLcWJUYTFLdmpBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlRxdDBLUW5neDdaSHJiVkh3RHVueE9uOWloWVRBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBcVFhQ1dNeFRHcVZWWDdTazdra0ptVXVlVFNZS3VVNitLQkJTZ3dJUm5sdzlLN0hlMUlweFowaGR3cFBOaWtLam1jeUZnRlB6aEltd0hKZ3h4dVQ5MFB3M3ZZT2RjSkpOa3REZzM1UFhPZnpTbjE1Y0ZBeDFSTzBtUFRtSWI4ZFhpRVdPcHpvWHZkd1hETTQxWmFDRFlNVDd3NElRdE15dkU3eFVCWnEyYmp0QW5xL05EVUE3YmU0SDhIM2lwQysvK05LbFVyY1VoK2o0OEs2N1dJMHUxbTZGZVF1ZUJBN24wNmo4MjVycURxc2FMczlUYjdLQUhBdzhQbXJXYU5QRzJraktlcnhQRWZlY2l2bEZhd3AyUldadnhyVnRuM1RWMlNCeHlDSkNrWHNORDA1ZENFclZIU0pJcytCZHRUVk5ZOUF3dHlQbW55YjB2NG1TVHp2V2R3PT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZkNBWUFBQUNHVnMrTUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFIWVlBQUIyR0FWMmlFNEVBQUFiTlNVUkJWRmhIcFZkN1ROVjFGRC8zZDU5d2VRU0lnUzlBUUFYY0ZMQVFaaTlmcGVWejF0WS9XVFpyNVd4cGM3VzVrbkxhNWpJM1o4NXNyUzJuTTJzanRXd1pTN0lVSDRINHhDbkVReDREQVpGNzRWN3VzODg1djkvbEluQnZWSi9CNFB2OW51LzVudS81bnZNNTU2ZnpBL1F2MEhiL0lyWDNWRktQbzQ1Y25tNGluVUlXWXdMRlJtWlFVdXdqRkcvTjFpUkhoMUVaME5SVlJ1ZHF0MUJkKzJuU0t5Uy9PaHlzMCtsazNlLzNrUTlxdkQ0WlV0YTRWVlNVdVkwZWlweWlUaEFmb2NvT1JWZ0R1dXczcUtSaUFkM3JiY0V0alRqWUlvZjZXYUhzQ216VlBXQ014K2NnaDh0THFXTUthTVdzVWpMcW8yUnRKSVEwb096bWVycFF1NGVzWmdzT05rR3hIN2Qwa2R2VFQxN3M0T01VN1ZJOFpoamdHYU0rQXE5aUVOdThQaWYxdWR6MDdNd3ZLV2Y4R2xWb0NFWTA0UEM1V2RUYVhZRmJSOHZOdkw1KzNLZ2ZiNXhOTXlhOVJhbUppeW5hTWxHVFZ0RmxyNmJhOXUrcHFuRVg0dU11UlJnalNZRWhyTjd1dEZGZTZscWFsN05ma3c1aW1BR0h5blBwYms4Vm1ZMHhzdG5wdGxGQ1ZDWXR6VHVCTjgzUXBNTGpUdGV2ZFB6U1VuSjdlOG1ranhaMzlmWGJLRGZsZFpxYnZVK1RVZ0duQlZGNmZRMmlQSGc0VzE2VVdVd3Z6YmsxNnNNWkUrUG4wcHZ6N0pTZXVBeWVzOGxjcENtYUt1by9wK3FXcjJVY3dJQUhXcnZQMFlFemhYQXRMQWJzc0hocDdpR2FtdnlpalA4cnlxclhVV1g5WG9vd3h5QXVmTkJycDQzUE9CRlhabGtmOE1EUmlxY3B5b3dBd3B1ejJ4K2ZXdnovRHRkZTlzbXN6eWd0Y1I2QzF3YmR6Qmw2T2xxNVdOWVk0b0dhdGhKTXJrVEV4MGpBUlNIQVZzKzVyWWtRTlhiK1FnZlBMc1E2Z1h5SW5zcmVRZm1wbTdSVkZZZkw4Nm4xZmlVT2tZdlNoa1VQeHZidWt6b3k2SzFpaE0xaG8zWHpXNkV2U2ZYQStkcGlXR2FXZCtkb1h6THptR3dLWUZMQ0FzUkFsUEJBaE1sQ0ZYVTd0QlVWUHI4SGdWY0pIV3ErRjAwcGxyK0RNVGRyUDR6dnhZMTFrTk1oeFQrU2VUR2crZDRWNUxRSml0eVVHSk5COFZGWnNqZ1lCWk0vSUkvWENUa2owcXlET3BGMkFWUTE3Q0lqVXAvRG5UMVVrTDVGNWdkaitzUzF3ZzFnRTNnaWdtNjBmQ1h6U25QWGJ5QVBiSVh2K0lEcEUxNlRoYUhJUzlza3lobG1NRTVGM2NmcUFLaHEyQzBFNVBIMWdZYVhhTFBEa1pHMEhESk9uS1dIcDUxSTB6NVNPdXg4ZTFXQXVaemRIUXJUa3A4VG1qWG9JK2xhMHdHWnN6dWJxYk8zaWZRNkEvVzd2VlNZc1YzbVIwSkt3a0tjNFdIaUJrbVI4STNDQ2dJODdvT0w0cXpUNVArUlVKQmVqRU9nQVBLOGhZUHphdE0rZUlUcDJJTzl5VFFtZXJvbVBSeHgxcXhBY3NpbGUvdWJTZUViY1dRR1lFQ2doY0xZMkh5S2pvZ2pIMjVoTXBqcFV2MU91Z2xpNGVoMmVSdzBPMzJiSmpreXVDZ056ZzB2emxZTVNpU3MwdW9vNE1HN2hNT2pDRWFYMXlGRTBuU3ZqQnp1VG5FcEs4Nlo4SW9xRkFJdWJ3OGtnOUFyRWFSRVdTWkkrakg0WGJwNmc5RTlFbkpUM29hUnpETitNVUpCUURIbjU2YThvVW1FQnVzT3hCcy9ONSt0SkViUGtBRkRqOFVHdk9zL0lXdmNTZ2xHQmh2UzcvRlRZZnBXR1lkRFk4ZlBBeFdTQTM1c1RDNHA0K0xtNEFhcUlvUGVRdGZ1Zks2SmgwWmh4bGJzVVhPU21YTmlmRDVaVEFreURvZmJiY2NseG5BOFdOQXF4Q2JSTnlraFh4UXBhRHc2N2ZYVVlic2lHMEtodHYyb2VJdmg4cmhRTVlPY0VBcVhHL2VJK3puZ09jNXl4cjhxODJJQU0xYy9GTEZPcGxxdTVlRlFYck1aekdjVkNqWWJMV0c1STRCVDFldVJybGJ4dE5PdE1pdERERWhMWElJeW5BQXZ1T0VXRTNYM05kQWZ0OTRWZ2FHNDJYSVF0MFpYNlBlQ0UvcVFGZTlySzZIeDdZVTUwS3ZIN2ZXNGZTK3E3S0tCSnhzZ2dCWDVwU0FHaDFqSXJWaDV6UTZ3M1JmYWFoQlhtL2FDYkNaVGpDVUZVVHlXWnFXOXA2Mk1qSlBYVnFPclBnTU80TnY3NEdrZitvd2Z0TlZCRFFuakZKcUhTdzE3cFh2aFdXNUtacWUvUTQ5Ti9VU1RDQVZXb1FYRklIQkhYWGUzRlByVURzdUdEbXRGL2hIS1RIcGVreGhpQU9QSStTSnE2UzZIRjRJOVlXemtCSlRvNDZpVU16V3A4UGlyL1JpZHVMeEtZc1Nrc1Y4dkxsT1F2aEdYMllsUjBPQmhCakMrdS9nRWN2WTBBcEs3WWs0MU54alBTUW5XRkhURjY2VXJqZ2V2QjhDdTVhK2wydllTUlB0dVZEbzczaGhkTVNIblVYN3RUanNWWkd4QWwvV3B0aU9JRVExZ25MMjltWDYvdFIxdG1sa1lqOFc0WCtDU2pXY1VER1kxTnBTL0M3aFNLcWlNTE0vbDJRbVNXWjczRGR6K2dpbzhCQ0VOWVBRNDZxbmt6d1hVYnF2Qmt4alVRc1dmWkZnYnVvM3JBZit3TjdqT085MCt5bng0UGkzTCswbllMMVNjaERVZ0FQNGdQVi83SWQxcSsxSFNobXVHa0lxV1JQZ3l4TUZxUDhIZmpUbmpYd1k1YlFmYkpjdDZPSXpLZ01Ib3RGL0hlMWVnc2F4SFNxRzZ3ZmRtUTV4OE55VEZGcUJjcDJpU293SFIzeWs1KzM2aEY3dlhBQUFBQUVsRlRrU3VRbUNDIn0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDYtMjEiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2LCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ill1YmlLZXkgNSBTZXJpZXMgd2l0aCBORkMgS1ZaUjU3IiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVMkYxMDAwMjAyNTA2MjEwMDMiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wNi0yMSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzZ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDYtMTkifSx7ImFhZ3VpZCI6IjMxYzNmN2ZmLWJmMTUtNDMyNy04M2VjLTkzMzZhYmNiY2QzNCIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiMzFjM2Y3ZmYtYmYxNS00MzI3LTgzZWMtOTMzNmFiY2JjZDM0IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ildpbk1hZ2ljIEZJRE8gRWF6eSAtIFNvZnR3YXJlIn0sImRlc2NyaXB0aW9uIjoiV2luTWFnaWMgRklETyBFYXp5IC0gU29mdHdhcmUiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInJzYXNzYV9wa2NzdjE1X3NoYTFfcmF3Iiwic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciLCJyc2Fzc2FfcGtjc3YxNV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbInNvZnR3YXJlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbInNvZnR3YXJlIl0sImNyeXB0b1N0cmVuZ3RoIjoxMTIsImF0dGFjaG1lbnRIaW50IjpbImludGVybmFsIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlFclRDQ0E1V2dBd0lCQWdJUVJUZmNnbzZ4d0lGR2ZtdHprMUJTblRBTkJna3Foa2lHOXcwQkFRc0ZBREJFTVJVd0V3WUtDWkltaVpQeUxHUUJHUllGYkc5allXd3hHREFXQmdvSmtpYUprL0lzWkFFWkZnaDNhVzV0WVdkcFl6RVJNQThHQTFVRUF4TUlWMmx1YldGbmFXTXdIaGNOTURneE1USTBNVGd6TkRRNVdoY05Namd3TnpFek1UY3pNak0zV2pCRU1SVXdFd1lLQ1pJbWlaUHlMR1FCR1JZRmJHOWpZV3d4R0RBV0Jnb0praWFKay9Jc1pBRVpGZ2gzYVc1dFlXZHBZekVSTUE4R0ExVUVBeE1JVjJsdWJXRm5hV013Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRRFFDa21RL0s4RG4zOXFTQ1c1dEtMdnZETEgzQ2xTY2dRckRnNyt1WTQ0akhsSVkxL0xsNnYycnBqN25sbVZNbEl6b2dkM3lYakNGQnZHcjR6aUdRMlFjOFVwa2FVOTZFWnhFdEh3WlN0dzZZUTBqZG5na1NMUHZPcDhUOFlpSnBjdnNWdFF0aVEwT3NUVHVpTzJFaTRMdUxoN0tSKzh4NGJBUnZ6a0JXc3ROQlRxVlNBWlFZZXNxbmw4SDVTZndiM0lvdThMU2lBc3VPWHl4dDJtczkxMVlyeFd2aC9Lbk9lbDNPZDNoK0s1ZFFZUDUzK2ZQVXpnejU2VFRqOFI0WTZ6UnV6ZGtiblI2eFdYZHJLNDE0aVg5RDZ4NXE4VzJYSkpwVE1LN0VuU1hHMHE3WEY3cDY4akRLQW54QUY4a2ZoM3VpbmMydWxtVk9aYlRSenhGOEIzQWdNQkFBR2pnZ0daTUlJQmxUQVRCZ2tyQmdFRUFZSTNGQUlFQmg0RUFFTUFRVEFMQmdOVkhROEVCQU1DQVlZd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBZEJnTlZIUTRFRmdRVWpNc1RiWTB3WFFCUjI5YldISXZiRmZVQUZmVXdnZ0VHQmdOVkhSOEVnZjR3Z2Zzd2dmaWdnZldnZ2ZLR2diVnNaR0Z3T2k4dkwwTk9QVmRwYm0xaFoybGpLRElwTEVOT1BYQm9iMlZ1YVhnc1EwNDlRMFJRTEVOT1BWQjFZbXhwWXlVeU1FdGxlU1V5TUZObGNuWnBZMlZ6TEVOT1BWTmxjblpwWTJWekxFTk9QVU52Ym1acFozVnlZWFJwYjI0c1JFTTlkMmx1YldGbmFXTXNSRU05Ykc5allXdy9ZMlZ5ZEdsbWFXTmhkR1ZTWlhadlkyRjBhVzl1VEdsemREOWlZWE5sUDI5aWFtVmpkRU5zWVhOelBXTlNURVJwYzNSeWFXSjFkR2x2YmxCdmFXNTBoamhvZEhSd09pOHZjR2h2Wlc1cGVDNTNhVzV0WVdkcFl5NXNiMk5oYkM5RFpYSjBSVzV5YjJ4c0wxZHBibTFoWjJsaktESXBMbU55YkRBU0Jna3JCZ0VFQVlJM0ZRRUVCUUlEQWdBRE1DTUdDU3NHQVFRQmdqY1ZBZ1FXQkJUZlFRNVdyV01SVzc4dmtXaDJuaURUM1Y5N3JEQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFpTHBMdG5hRTBBYklpU21tajRFTFJUUk1HdWVkeGQ2WlRZMnlVaTFRTnN3YUkyT0ZuaC9ORFdMV09nRjM2SE92REVMWEJZWk02K0FzUGlWSFU3MnN2bFlqN1k1SHpadm9Va00zZHZieHI2VTJCSjg5SkVFVFJJV3FVbFlPcTQ3QmU4NE9SMlh2bW5pVXVKckZPenNBWWN0clpYMlRGWDNBYlZQczRMU1ROYzBkYTB1cTBDcW9PU09JQ2Z6ejFYN3VmN1R3OU8wS2NLZXJGZ3plVWNtR3RLdjVvSzdSWTlXa0R4ZGkyMlJ5MEdFYjYwdG5hdjdxazlqYTQ1V0JqTjEweHVOcE5zbENhbFJuTllPR1Z0WTFtNG95MmcrMXhkMWIwdnhnMHhKc1c0azJvdlRkWlFTNUhDa21lMDVNNUx5MFNGU1ZHL1JIeE1zNkl4NDNDY3RDSVE9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFMUUFBQUMwQ0FNQUFBQUtFL1lBQUFBQjFGQk1WRVVBQUFELy8vOFJCZmNTQ2ZNU0N2SVRDL0VUQy9BVERPOFREZTRWRXVrV0UrZ1hGT2dYRmVZQUFNOEFBTTRZRitVYUhPQUFCODhBQk00QkI4OEJDTThDQ2M4RUNjOElEOUFhSHQwYkg5d2JJTndiSU5zYklkb2NJZHdjSXRvY0k5a3FNTmNCQzlBREM5QUVEZEFGRWRFTkY5TU5GOUlQR05NUEdOSVBHZElSR3RNUkc5TVRIZE1VSHRNVkg5UVZIdE1XSDlNV0lOTVhJTlFZSWRRWkl0UWFJOVFhSk5RYkpkVWJKTlFjSk5jY0pkVWRKZGNkSnRVZUp0Y2RKdFFlSjlVZUtOVWVKOVFlS05NZUtkTWZLTlVmS2RRZktkTWZLdElnS2RZZ0t0WWdLZFVoS3RZaEs5VWlLOVlpTE5ZakxkY2pMTllrTE5Za0xkWW5NTmNuTDlZcE10Y3FNOWdzTk5ndU50Z3hPZGt4T3RsRlROeE5WTjVSVjk1VFdkOVZXOTlkWStGa2F1SmlhTjU0ZmVhRml1T0VpZUtGaXVLR2l1T0dpK09zc09nblByOHJTTFV0VHE4N2NJMDlkWWxFaG5kSmsycEtsV2xNbTJKTm5XQk5uV0ZWc1U1VnNrdFdzMHhXc2t4WHRVcFd0RXBXczBwV3RFdFdzMHRZdDBoV3RVaFh0VWhYdGtsWHRVbFl1VVpZdUVWWXVFWmF2VUpadTBSYXZqOWF2VUZid0Q1YnZ6OWV5RGhleHpsZHhqbGR4VGxmeVRWZXlEWmV4emRleHpoZXhqaGZ5ak5qMVNwajB5dGkwaXhpMGkxbDF5aGsxaWtWcWlFaUFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFGK21sVVdIUllUVXc2WTI5dExtRmtiMkpsTG5odGNBQUFBQUFBUEQ5NGNHRmphMlYwSUdKbFoybHVQU0x2dTc4aUlHbGtQU0pYTlUwd1RYQkRaV2hwU0hweVpWTjZUbFJqZW10ak9XUWlQejRnUEhnNmVHMXdiV1YwWVNCNGJXeHVjenA0UFNKaFpHOWlaVHB1Y3pwdFpYUmhMeUlnZURwNGJYQjBhejBpUVdSdlltVWdXRTFRSUVOdmNtVWdOUzQyTFdNeE5EVWdOemt1TVRZek5EazVMQ0F5TURFNEx6QTRMekV6TFRFMk9qUXdPakl5SUNBZ0lDQWdJQ0FpUGlBOGNtUm1PbEpFUmlCNGJXeHVjenB5WkdZOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6RTVPVGt2TURJdk1qSXRjbVJtTFhONWJuUmhlQzF1Y3lNaVBpQThjbVJtT2tSbGMyTnlhWEIwYVc5dUlISmtaanBoWW05MWREMGlJaUI0Yld4dWN6cDRiWEE5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM4aUlIaHRiRzV6T21SalBTSm9kSFJ3T2k4dmNIVnliQzV2Y21jdlpHTXZaV3hsYldWdWRITXZNUzR4THlJZ2VHMXNibk02Y0dodmRHOXphRzl3UFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzQm9iM1J2YzJodmNDOHhMakF2SWlCNGJXeHVjenA0YlhCTlRUMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzk0WVhBdk1TNHdMMjF0THlJZ2VHMXNibk02YzNSRmRuUTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl6Vkhsd1pTOVNaWE52ZFhKalpVVjJaVzUwSXlJZ2VHMXdPa055WldGMGIzSlViMjlzUFNKQlpHOWlaU0JRYUc5MGIzTm9iM0FnUTBNZ01qQXhPU0FvVjJsdVpHOTNjeWtpSUhodGNEcERjbVZoZEdWRVlYUmxQU0l5TURJd0xUQTNMVEl4VkRFNE9qRTBPakEwS3pBek9qQXdJaUI0YlhBNlRXOWthV1o1UkdGMFpUMGlNakF5TUMwd09DMHpNVlF4TmpveE9Eb3hOQ3N3TXpvd01DSWdlRzF3T2sxbGRHRmtZWFJoUkdGMFpUMGlNakF5TUMwd09DMHpNVlF4TmpveE9Eb3hOQ3N3TXpvd01DSWdaR002Wm05eWJXRjBQU0pwYldGblpTOXdibWNpSUhCb2IzUnZjMmh2Y0RwRGIyeHZjazF2WkdVOUlqSWlJSEJvYjNSdmMyaHZjRHBKUTBOUWNtOW1hV3hsUFNKelVrZENJRWxGUXpZeE9UWTJMVEl1TVNJZ2VHMXdUVTA2U1c1emRHRnVZMlZKUkQwaWVHMXdMbWxwWkRvd1lqRXdOakUyWXkweE9XRTBMV1UwTkRZdE9UQmxaUzAzTnpBek0yRmtNR1F6WVdVaUlIaHRjRTFOT2tSdlkzVnRaVzUwU1VROUltRmtiMkpsT21SdlkybGtPbkJvYjNSdmMyaHZjRG81TjJNNE5HRTJOeTAzWkRKbExUQmxORGN0WWpBek5TMWxOMlU0TldJeFpEazBaVFlpSUhodGNFMU5Pazl5YVdkcGJtRnNSRzlqZFcxbGJuUkpSRDBpZUcxd0xtUnBaRG95TW1VeE5HUmtaQzA1WmpBekxUaGtOR0l0WVRjMk5pMDFNbUU0TWpoak1EZGhOamNpUGlBOGVHMXdUVTA2U0dsemRHOXllVDRnUEhKa1pqcFRaWEUrSUR4eVpHWTZiR2tnYzNSRmRuUTZZV04wYVc5dVBTSmpjbVZoZEdWa0lpQnpkRVYyZERwcGJuTjBZVzVqWlVsRVBTSjRiWEF1YVdsa09qSXlaVEUwWkdSa0xUbG1NRE10T0dRMFlpMWhOelkyTFRVeVlUZ3lPR013TjJFMk55SWdjM1JGZG5RNmQyaGxiajBpTWpBeU1DMHdOeTB5TVZReE9Eb3hORG93TkNzd016b3dNQ0lnYzNSRmRuUTZjMjltZEhkaGNtVkJaMlZ1ZEQwaVFXUnZZbVVnVUdodmRHOXphRzl3SUVORElESXdNVGtnS0ZkcGJtUnZkM01wSWk4K0lEeHlaR1k2YkdrZ2MzUkZkblE2WVdOMGFXOXVQU0p6WVhabFpDSWdjM1JGZG5RNmFXNXpkR0Z1WTJWSlJEMGllRzF3TG1scFpEb3dZakV3TmpFMll5MHhPV0UwTFdVME5EWXRPVEJsWlMwM056QXpNMkZrTUdRellXVWlJSE4wUlhaME9uZG9aVzQ5SWpJd01qQXRNRGd0TXpGVU1UWTZNVGc2TVRRck1ETTZNREFpSUhOMFJYWjBPbk52Wm5SM1lYSmxRV2RsYm5ROUlrRmtiMkpsSUZCb2IzUnZjMmh2Y0NCRFF5QXlNREU1SUNoWGFXNWtiM2R6S1NJZ2MzUkZkblE2WTJoaGJtZGxaRDBpTHlJdlBpQThMM0prWmpwVFpYRStJRHd2ZUcxd1RVMDZTR2x6ZEc5eWVUNGdQQzl5WkdZNlJHVnpZM0pwY0hScGIyNCtJRHd2Y21SbU9sSkVSajRnUEM5NE9uaHRjRzFsZEdFK0lEdy9lSEJoWTJ0bGRDQmxibVE5SW5JaVB6NVhCZWFsQUFBTzFrbEVRVlI0MnUxZDU1OGtWUldkWjA2WUE2SmlEcGdEbUZpdExWeXptSFBPWWxaUUVXUTlBWE1XelA2emZyaXY4cXZ1cXA3dW5zSGY5S2VkN2Q2WnM3ZnV1K0hjYzkrY3BBZmc2K1FDOUFYb0M5QVhvQzlBWDRDK0FIMEIrZ0wwQmVqL0Y5QTB1UDB6UGtlZ0RVdWlOb0FpYk1HMGNRNUFTeElzMEJRRnFQZ1ppcFlnUTVKNXRxQmh5ellsU29JZ3l4TWp3N0pKVTdZb1VqNUQwSlJ0MDVabFVhSTk5bTZEa0NYRGxFQUpwdllBKzJSSHlCSXMyYklBV0xSZ3FlY2p0a1Jac2czSkZHRUFPRDNxblVDVERqRE1XRXpabEhvdVFvbEMvTDhvRVdvOHhkSVpnTFpwVzVZRXdKWWtJbnRDOWhESklHM1RFa3lMdGlISVBMV3Rkd0N0Q0dLa1FadEt5U1poVzRZait0bVNiRUsyWUtSRUNhUkVpeUNQRFJxeVRGRHFoVjRpSXJZbEtpSmR1RVl2T2x1QWJCbytuYTFQZHNBc0dyWkhDVVd3TFVHU0xNbmtKQXFLcGt4TDFqRkJtNUNNUWFEb0hvRWxBTFFoMEdJaHZFT2tUMmZxOWFBZGpzR2l0OU1tbUFOaEVaaXRNTGFQQjFxUjNJUzVkd0ZadEd4NkpzYkR4dHk3QndGdHlVWVhhaEhwc1BlbGFXbndMQnhSdmU5Z3RFNVIrSjJzTmJUa3ppTURjQTgxZ0p4MDNQeVZiVUpVZTNBUnVSODRIbWdUUlA3NWRBWXBFKzJUaUtxdS9YOUZXV3FyOVFoSFJ0V3hRRWZhYXdFaFFwODc0N2NJTXlhS3pTZlE0QlFScWZJNG9EVUlIWkxzdTV4U1lHSm5hcXF4UEd3YnpXZmNOREtFVG1IcWxhQ2p1R1ByS3cyTURwSERwYlBoWmR1dGM2dDFxd2d2eHdGdFdXaU9HTlU5WWR1T2dpSkhrMnhHZCtjdm9mMnpaQXJIY2c5RzFhYnVpMzZtYTA4bjFaaVhabGQ4Z0wxbnBGT2tsNVh1UVVGZ0I4aWQ0M1QrSWJGNTlGSXZEN250SXgwdHpaSGNJNkpBKzVEVlN5QW9nYkNIU1dZL1RNTGE2RUViT1MzUWJHSkVvbDNNRnBiUTlqSW1kQmFnYy9mVVJROU8vampwZjl2VXFIMVJIMnZkUXlRYTQwRUNuUE9reThIQVJqd1BtZG9YWGJNMmpjdGlHK2xrVWdJNDMvZkowUjB5dXRzekFRMklYZnd3YmREYVZFbkFGZ0VUM0JzdnRrUHQ0VjVabVF1aFRXRkJqR0xXMkJzSnVicWVkalNJdlZRNEtpUENUempvMEU1VkhwMGVOQjNKdzVzYTM1VDJ4NUR1cVVjTVpnWWI2aE1MT20rZ0FkcWNJMXpJZmtZNUg2QVREWnJXSEdzYkJNUDVzblJLUVI1bGZycEVqRmdXemh0b0JJVVVVd0FWVUVzNlorNFJZUzg2UWRtYTFrbmdZUTI5R3ovZGtZdUtUbmVTTjlQNUE1MkMxeUljR2RKT1IzM3RPblBKcFZKZ0xsbjdQSUpPYW9vT3hTVGdtS2hQTVVkMExxTWxPaVpZSzVLcWpJajNsQlR6UEVtRWtHY0ZJQ25Ba2pYdWVFNDFzWTB3QWptR0Ywc3ppbXdLaHZKWUQ1SnBJTS9MRkErUkZtTUV5VEhUZmNveGM0emhFS2xHWEFZNzVqQ1VRZVNoSGdWYWlBeVFneEtpZitBMCs1NTJvQitoMnNIUGFGbWhwQWlXc0drQ2hnMExtZlVMMTdFTmtTU01TYkk2dlFyQmtjL1JQRzB1OFNvRnMrNllQdWRabVl5SXBXQk1vV0o4RS8rbC9ZTHVxRlJGODdVMXMxQ2dtSWVoRkJ3MFBVMENOZ1haa0FYRzlCUWpKY0IrUkNwcXB2dkJQWHJiUVFqeU5UdDJNTm9pREVlMVpSaUlQdDdPd1dYL29GT2lMU0YwQnRveVQyRjIyMXdvdWt0UWNhVERJMktzRjJOMzR5Q2dVMkpFTEVyUTRwQmR6TFZpcnpCZ1VOaytET2dZdUFBaGxORHVuaWFqcDNnaDFIQkNCd0VkdkhNY29KMmI3eWJERGhxaFViYmRzMW9zNXpydlhrRTExVXlQVnpOSExlZStKVzZ5OCtCOFI3L094MUtkUzRNYXphdjNyOHR6Q0xLd1c1OFl2VnJuMHFITHNROE1PaytUdUp1dGhWSHdrTWx4TkRxRUFqSVNNSGNTdE9XRXFGNzlTd29IdDNSd1o5TXp2OHc3OG9Ib05jblRtZEpodEthSWljRjYxcEUyaUk0SmpMSmdIUFVQSkpDTjBGZFNxV3hqcjBKb05HUitqZ1NhamhKK1piUU83UmI2U1R4a2lFY0JuWXh3RDNCVjZJaE9ncjNHS0ZMVmNVRG5RZGc2VXpPa0liMWpHRG9ScHlPQlRoSDExaFI4VVdiME1ndm9hQldQQnpxck5iSGNvYzFoNjJQbDE5RkFKemVKY1RubzZNUDczUUpLaC9tQW9OdkdaREViRWJKVTlZK0ZWZWlERHJuSWtBbW9aVU9qY0NiM0o5RzBWS3pNRHdsYTBWWXZpbnFXSEpyT05NaUdSZFhRUVZkR1FsSy9wUFd5b3pUc3Q5MG00R0pXUFN6b2FIUzNpeDFoVzREWW01NW5MckpVQ1J6WTBua1hZS3MvaDNmMHJXcEJFRndTQVJ4Mm95Z2s3VnVHaWlKQUVjUG9TRGxveUhSMDBNRUNheVB2RUtKSkREWFZJVmZ0cEZwSEJCM0pZUU5QUm1mK2IwVG5PaForWm9MOGdSZk9ndUtiOHcrTGJJaXY0WEZ0TjVYU0dZRE9DeGd1dlNPQnpLeXZNTWoyRWFGbjlVT0h0alNDVUpnbUVvVUlRMEk4Q3c3c0hCT05PYTU3SFdoNDBrZUVvbDZEajNTU2xOaG1HSlU4T1pOQURGM09tS3BEUzlLbmZZQVc2RkV3SUlZL2xHRkdkbWx0TXZlbmhCZ05NYmgrVHZZNFpCbXpwZmhhMlNaSEQ5c2FkOTBLYnIzTGRaTWRzeGdDV1hsOVpEU25hZDdjMFBTc0ZNaHF6Snd3THo5MXo1WWdPK1VzWStvMjducmprZEhUYVVlekpiTkplTGhTVE1pUkJXSVRqdWl2RGNWK1Z1dWZNa2ZHREUxY3FNRTU2WGRpRnJOeEIzYWxwVWtNTktXSzlhSmVkYUdJQlI0OTdGSDBBTXVhU1VwNVdMUXBpNjUxRDZDL0xjWm1rWEw0TUhvTVl0NHdXZHBXeG9oTTNOd09yOVdhMHYxdnFOenlxOTl0c0o5OXcyMlhkVndFMlV6YTB4NUJjMURVeDliTFlIR1cwZlZyUTVDY2hXeVRBS2h0SGZ4YS9YUmZUMnd3ejk4SHljdzlYaXQydUJaUWVqRSt6UXFqYlE5bVpVYUUySklwRE9uRTRNeUlzUTJxamhhUXQ4NEVZdWZaSXN1aXFOTW1GeWlycW16Q0FqWG9MZkk2bW52c25LWE44M0k0TkI2eUFTMVo1bC9wMDhnRWYreXlrTUx3ME9RRnVZN1lpbFNoRGY0V3lVaHM5dFFXd0ZpL01xSXNFWWlSNGRCZkxZQTlUaWpJbWpHM1RnaGdqbTE1RzlmTnptRGFPMmhaaURZamdHTWsxQW1oU20rTEwrYnhRL094WWNxZG4wTmU1NGFYeHZQVkcwVzJGY29SVEN3VEM4MDlLU0ZwWU1KY05FUmpJMjNKNUJJWHErOVhMekxrT29jSWdjYW9HU0hVNXptaWFSMm5pcnpWREJnTVBRMWdyQkFDRjBGWFZWVlZNMDJkcE5peWx6RXlZYmpsWUJ0SHdOZzdZa3FBR09veUw4T3YwMXVmRkFGWGRWVlZWVjFLNDZBSW9kRDVJZmlXM2w4amRpODA2ZEZ0TVRxeFhPMnRhK0pPcHBEcnFudE5DcWJzMGdYTmQ5QkVZUDhZRmd0anRrM0FlaHVYUUZmVDE3aUZ6aysxUklrcml2dCthQk01SmJaeTZNRE9FdFdUelpCSHFKdnF2UlRCcWF5YkdyU0MxRDdYTHFhZ3E4dGJVUWZyelhMV1lZai8rbDFWa0JzSEJEMTA1akpxMktVOXdoaG9qMjZBQ1dIZ1FZU3pKMXVjWTRnNnltZE15MHFRZ3k2cm1RUG9JTXNqTGVpcG5lc3Bhb3NlcnpNUnpDTFhnU2NFMzBJZVFyUitzdDNPVlZWWFhWckFjTVptQWFGOUdlYjBMR25VUVVUc1pkRDErS3RldHVpZnRTeXBaTnl4NUNGTFpPeDNZMnNDZW91aEc5U2hNR0tQNXJjaGtmSndJVEZ1bmdEb3c0R2VCenYwNnVDTEVCclgzQjdabURTdnVSbzgxQXJYU1RGN3owVVFxYjM3SmQvaWt1VTd3eTRRbEVFZmJCbXFiT254WHpWZUhacEtSZEVzUldObmpFclVYTDE1WDFlSmxVR1hUMTNCMUlFMHk4bEZ5QlRIcTdPeEF6T3pTTDV2MFBVNGxVeEJSMGVYTHhNVHM3WjhYQzJIeUo4ODJCTEp4TkxWWEFXVmVWeG55VDZ5NmxqVDlNaUkwWWRiZkRucFlhdTNnbzZ0aGFaT0xreFQ0MFl4eS9UUDBsRkFUK3ZuL2hzM3A1VHVqTlpac1FwZUluT1VFK0hWMzZhekJsMVhWWFVwcGZTYnF3WTRwMHZLRFIvbG4venFuK21Jb05Pc3BhK2tsUDU4cnoycjc0RVFOMTdkZGMvZi81VE9EblRxUjhKYm52N0kyKzhyaEl1MmxwSmtRWGYvL044Ly90YURIbjM1bG8xMXdjSlhYZUlGVGpLd2Vndm9xcnBjUGZ2YTIvOHdzMXZScnNyWlYzLzczeDg4L2hIVkxUTTRMeStGT212SUR2U29CaTNHait1dis5SDkwSlR5UnZTMGhtbGZ2ZTlmMzN2NDQ5NDVCNlJvNU11Ykg4SVcwTlZtME0rNjQzNXBQSkVLNWo4dmg5MzlpMy9jKyswSFgvdU9hdmRYUFFGZUJsMVBVbmlCdXFtcTY1OXh4OStHTTVkUXRNWlZjcmJ1dXVlUC8vNys5UTk5eTl0TEpxc25YOVRETitycDA2ajNZT25yZm5TLzJrWXdydzA2SnR5Q2ZPZnYvblBuZHg3eW1IZHVkOWhMbHpZZnl1RUoyREY2aEJGdWZ0UVAveElKMm5GdFl0eXdtVGxiNnRlLy9PNHpIL2FtdDIyUEZ1OS8wUXR2bmY5UVBkZWhyZzU1OFJaK0R6TVgwWERRa1hFVkllbGYzcmM5d2xaVlhWZlZpNzljK3VidFQ2dzNPblFEdXQ2Y1hPcjJyYjllUmI1aWhGMHhuVzkrWEZRN3gzZDY3RGNiQXFDZS9PQzNibzBkeTJ1UENJWS9WU3k4ZGxFWjJVTVc1cklNK3F0cHJyaDg5Wlh0RVc5YW1tN3lqbVFEV1Y0WmR3ZEhXYjI4Q0kxdmRjM1hadXIxOUtVbmoyUEtJdEFiUzFPYlVMNWdsUmFYVG1QSG9MOHgvZmFYVWtvcGZlU2xDNVBMQ3RETXR3Z1E0dEw1V2NrOWVxQ2JpUDNlRzFOSzZibHZMS1RMQmFDcjJXTVlTMGx4Ky9XT2JVbDh2MnZDcDl2c1hkZFY5YUZYcEpTKytNUXJoU0M0cUJ1ZmJSRWJSZlB1UldWMmo4SkJmT1dIVTBwZmVFcTEyRDNTT0w2WFdZV1FZVzRZVURvekRMdUF2dUZqS2FYUHZHQlJiVHBMaTlVbEJoS2hPOWcwc052OEpPWkQza3MrbmxMNjNQT0tJSmFBTHRVNmJhdnQyZkY4SGdCcEYwdlgxYVUzcDVRKy82UlN2Ym9iMWR2K084Mk5YREpuQm00NW94bjAxNmMvODRPdlNTbDk1UWxYbHZ2MHJLbEh6MmVpU1JsQURxbmxSaTRzdThjVWRCMXgrdm12WHdNNmJXamN1bjRtTGhZcmdXN282QzA3aVBYbHVZTVlQK096VDF2UWJSVm5McGRuLzFrdTlxZEhNTlN1M2pxQW16bUlYZmZ4MUN1VFI3NTVKTGQxVHBUS1Z6VExVRE4zV1FUNm10dW1CekYvNE4zYm02Mlo0V2M5MSt2bWZZUFJwTlpxN2pUWXF2UEtscjZ0V0VNV1RQZXVWOTIwYmN4Y1BJa2poQmhOTXpQYXVHNWhhL1UwRi9MbUNwNDNmR0tYMmZnNEZIT2tqR3B1dllpT2NaYzBmdVdtRzRZLzVhMGZlUG5MYnEzcTk3ejJodmRWaTFRSWFYTXVDalVRQnZ3ZDRtSWphc2s5VnhsMC80dlhmWHJ5cWVkODZzYXFldk5IUDdsTWhUQTBkeUZSQi9QVm43emwrOXdvSHU4aXB0V1hzZmF2c1VqS2Q0aVFZRXJuRmJTSEM0YU11czQ2N3VWaXF5OFk3a3VTWWhmaElKS09mWUpHL3lyaytGMDR0cG5PTTJoQ1JIdFJmWjRWNHNnWHo2MjNkTHRqNWVhQzArTWJldjFGOEZGUE8wUnVvV0ZMNXh4MFpKR1FYOFV2emVIeE1hL1dta0pnM0xFUWltODZuWC9RSVFETUZCT2xzOEM4Vmw0dmgzUWkvM3FjUTErcnViZU1pSHlEc0U1MUdkY3gzWU9RM2R3T2RWYVkxOGZwSUI3bHM0Tzh5L1pGM0l1WHp2SzErcGNiYkdCcnppbm9jL0o2UUlMK0gxOXRoZE93T2c2Q0FBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCJdLCJhYWd1aWQiOiIzMWMzZjdmZmJmMTU0MzI3ODNlYzkzMzZhYmNiY2QzNCIsIm9wdGlvbnMiOnsicGxhdCI6dHJ1ZSwicmsiOnRydWUsInVwIjp0cnVlLCJ1diI6dHJ1ZX0sInRyYW5zcG9ydHMiOlsiaW50ZXJuYWwiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotMjU3fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotNjU1MzV9XX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0wMS0yNiJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjQtMDEtMjYifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyJlMDc3OTI2NTA0Y2Q3NWViNDA1YTQ1YmUxNjBmNzgzMDQ0ZTNmNWEyIl0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbImUwNzc5MjY1MDRjZDc1ZWI0MDVhNDViZTE2MGY3ODMwNDRlM2Y1YTIiXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkFUS2V5LkhlbGxvIFR5cGVDIn0sImRlc2NyaXB0aW9uIjoiQVRLZXkuSGVsbG8gVHlwZUMiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MiwicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCIsImJhRGVzYyI6eyJzZWxmQXR0ZXN0ZWRGUlIiOjAuMCwic2VsZkF0dGVzdGVkRkFSIjowLjAsImlBUEFSVGhyZXNob2xkIjowLjAsIm1heFRlbXBsYXRlcyI6MCwibWF4UmV0cmllcyI6MCwiYmxvY2tTbG93ZG93biI6MH19XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWxlc3MiLCJibHVldG9vdGgiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUJTVENCNzZBREFnRUNBaER5Rk1YcU9mL25FWWVEZ0c1dmJtbGpNQW9HQ0NxR1NNNDlCQU1DTUNneEpqQWtCZ05WQkFNVEhVVm5hWE5VWldNZ1JtbHVaMlZ5Y0hKcGJuUWdWVEpHSUZaRUlFTkJNQjRYRFRFNE1ERXlNekF3TURBd01Gb1hEVEl6TURFeU16QTFOVGsxT1Zvd0pURWpNQ0VHQTFVRUF4TWFSV2RwYzFSbFl5QkdhVzVuWlhKd2NtbHVkQ0JWTWtZZ1ZrUXdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBU2o2L0U5QzRjVEZzRUh2T0pHRVZ2a0RnSFJ3SldRcjR1Q3RWY2JLc0ZVS205bHVMNmFSUjUyRlJHVElkemJqVU1rMWllRHlSSHU3S0tXUk5GMTRNK05NQW9HQ0NxR1NNNDlCQU1DQTBrQU1FWUNJUUNRaGpvbHFadmVBRGIwdzd2ZHM4KzFwRnkzV0JVaUpzREx2a1dENnVQL3FRSWhBS0tIdTRMYWlaRHF0UlRxOS9hRks0TDRvU3BhUVZHN2h6dlpjVlAyWVd5SiJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFNZ0FBQUJxQ0FZQUFBRDVqQjU3QUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQURzSUFBQTdDQVJVb1NvQUFBQnpaU1VSQlZIaGU3WjBIWUZSRkdzZi82YjBIUWtpalNKRWlnaHBBbE42YklCQTZ5aWtJbkFVVkRqenVQRSs5cGxob0tpcnFJVVZBRkZDNmlDakZBK2xJazZhVVFJQkFFdEt6bS91K2VlOWxhNUxkelNiWmxmbnBzSnZadDdQejVzMS92dm5temN6ektDWWdrVWlzNHFtK1NpUVNLMGlCU0NSbElBVWlrWlNCRkloRVVnWlNJTldJSEIxeGZVb2R4Y281Zng2cHE5WkNuNThQRHc4UE5WYmlETGpJUGJ5OGtQaklLUGhHaHF1eEVsZWtWSUZjKzJFbjlqODJBWVVabWVKaVNweEhzVTRQTHo4L1BMQjFMWUxxMTFkakphNUk2VjBzTmhwc09XUndmdkJVWHlVdVR4aytpSElSUFR3ODRlRXBnMU9Ec1Zna0xvM2RUanIzeUdTd1AwamNrOUo5a08yN3NQL3hpU2pLeUlLSHQrS0RpRVA1Z2hjVm9WaXZGM0dTY2lBcjRlbnJxNzVWTEVheFRrZHg1SU44K3pXQzZ0VVRjUkxYeEQ2QmtDaThBZ01SMnFReGZNTERwVWhzZ1VyMzJyYnZSZU1pQmVKKzJDVVFmV0VoQXVza29jV3NtUWk3dHlXSzh3dEV2TVFLSmU2RkJ6WTF2QXNnVVdpamdWSWc3b1A5QXFsWEZ5M256MFpZODJZaVRsSStHNUlhb2Jpd1NBckVEYkgvVGpyTFNYYXRiSUtMU3JRL1Zwc2dpVHNncDVwSUpHVWdCU0tSbElIOVBraGQ4a0hlZXh0aExjanhOS0lvTnhkWlB4K0R2cUNBM05MYjZ3WllNZjNuNGUyTmlQdnVLUm1wWWtUQlV2RnVUR29zaHNhbEQrSitPRTBnMldmT1l1K2o0NUYzSlEyZW5tU1liaGVOVU9ucHlTZnpqWXhFeDExYjFVZ0ZLUkQzeDJrQ3VYWHFEUDQzYUFUeVVsTnZ2OG1OVk9GOW82UFI1ZWhlazNaQkNzVDljWjRQUWpYRHc4dVRnamM4cVNKNFVwZmpkZ2hjNmJsN0pWN1ZvcEQ4ZnBCT3VrUlNCbElnRWtrWnVMVkEySDBxSzBna0ZjVnRCU0lFb05kRG41ZFBJUTg2TmZCN1BjOFJvOCtrU0NRVnhUMEZ3aFpDcDROUFJEZ2EvbmtxR3I0d0ZZMm1UMEdqRjZhSTkzZE0vaU44b2lMRk1YeXNST0lvYmlrUXJ2TDZvaUxFcHd4QmcrZWVRb1BubjBhREtjL1FLNGVuMFdqR24xRDc0WWZFNmoxcFJTUVZ3ZjBFUWhXZTc4Y0VKU1VpYWR3amFxUWxpV05Hd0NjOFZMVWlhcVJFWWlkdUp4QzJDSjdlWG9nYk9oZ0J0V1BWV0V1QzY5ZERUSTl1UWlEVUlWTmpKUkw3Y0MrQnNPOUJYYXVBdURqVWZxaXZHbGs2ZFNjOHJ2Z2k5QjJKeEJIY1J5QXNEbjdSRjZOR2w0NElibmlIRWw4R1FRMGJJTzdoQWVCMTRYSjVzTVFSM01xQ2NIZkpseXhDL0lpaGFvd1paajBwbnZvUk4yUWcvR3BFSzc2SVJHSW5iaU1RVWZmSkNzU25QSXl3NWsxRm5ERnBtN2NnZGQxNjlTOEQ0UzFiSU9yK05zS0N5QkV0aWIyNGowRElqK0Q3SHZIRGhxZ3hCblQ1K1RnOTZ4MmNYN2lFTElWbFZ5cCtSQXE4L1B5VmJwWVVpY1FPM0VJZzNQTHJDNHNRMjc4dlFwbzBWbU1OWFAxbUs2NXYzNFgwLy8yRUczdCtVbU1OUkxXN0g3VUg5aE1pay9LUTJJUHJDNFNkYy9JZi9HcEdpMHB1RHQ4VE9iOWtHVHg4ZmFETHljRzVqejZsNzVoYUVaNkd6OFBDUHNGQjBoZVIySVhMQzRSYmZPNGF4WFRyalBCV0xaVklJNjU5OXozU2QveFlzajRqZGRWcVhOKzFXLzNVUUdUYlpOVG8yaG42Z2tMcGkwaHN4clVGd2hWWlgweitneTlpQno0RVQzbzFoaWNtWGxqeEpYUzV1WFFtZENycXh0QVhscXhRanpEQTAwNWlCL1NEVDFpSWNQYWxMeUt4QlpjV0NGZGhYWDRlWW5wMlI0MU83WlZJSXpLUEhrZmF1bzFpUlY4Slh0NUkyL1FOMG5kYitpTFJIZG9odW1ONzZtWkpYMFJpRzY0ckVQWTlxS1gzRGdwQzB1UFc1MXlkZmU5RDZQTHl4WTFBdGh4ODM0TXRCVC8wSjNYbGFndC93enNvR0xWNjk2U3pKa0d4RlpGSXlzRmxCU0phZUtyZ3RmcjBSR2l6SmlMT21LdmYvWUMwemQvQ2s1enpFclF0ZDhncHY3RDhjK1NjT2FmOGJVVGM0QUdJYXR0YU9QZlNGNUdVaDJzS2hDc3VCWDVzUUszK2ZlQWRHS1Irb01DVzRmTHFyNkRMVVh3UDQ3Mm9oQ1dodUtMTUxQejYzMFZxckNsc2tjUU9JK3J2U0NTbDRaSUM0U3JMSW9ob2s0eVk3bDJWU0NOdTdEK0l5K3MyQ1V0UkdwNStmdVRBZjRHYkJ3NnFNUWFpMnJWRnphNmR4TDBWS1E5SldiaXNCZUc3NDRtUGpoTDNNTXk1dkdZdDh0UFNoS1ZndUt0a0hBVHNpOXpNd0tWVlgxbFlDWit3VU1UMDZrN2ZKOHRqOXBsRVlvekxDVVJVY21yWjJYTFU2TnhCalRXUXZuc1BMaTVkTHJwSTRzNTRHWUVkOFV2THYwVFcwUlBxdHczRUR1eVAwT1pOeVZMSk9WcVMwbkU5QzZJbmdkQi9DYU9Hd2pzZ1FJMDBrUHZyZVlTMGFJNmFMS0F1SGNzTU5idDFRWERqQnNpOWVGSDl0Z0h2d0VENmplSFE1NUVmSXdVaUtRWG5iVDE2K2d4MkR4bUZ2TlFyOE9SdWtaSGpiQ3ZDZXVpS0VKbWNqUHVXTHhUUEVqZUZzK3BZdXVKYlpua3F1SEVUZTRhTkpqL2xNRHg5ZkV5Y2ZWc1J4VWVXeWpjcUNsME9tOTdCRndWTG44dXRSOTBYMTdJZ1hObUtQVkNyZjI4cjRtRHNyOENNcVBoV0tyOHZ6dzRlUGxTSVV2eTJSR0tHeXdoRVdBOXFpVU9iTmtiOGtJRnFiT1hEdTUrRU5tOUd2MDIvTDBVaU1jTjFMQWhWVHVydklUNWxFTHhEUTlYSXlzY25OQVN4ZlhvcGQ5YWxRQ1JtdUlSQU5Pc1IzS2doNmp6eG1CcGJkU1NPSFltZytuVXBIM0pFUzJLS1N6anBJZ3ZrdUVaMWJJK0VrVVBGKy9KYWMrNFNlUWI2bzBiN0I4U3oyNDNoQ1k3WHQrMUEwYTFiSmZkS1NvWHl5YjkwL3VORnVMNTdqemplSG1kZDVGMDY2YjliWEVjZ0ZQanhiYnpvU2FsWktpSVp5N1E0TDBGMUV0RjIweG9FMTZtanhpcmtwVjdHanA0UElldm9jVEZkeFJMK1BmVXRRM2xsa1lsNVhmUmVDa1NpVWUxZExLV0NVUmVMbnlOT3JUZlB1UFVPcGhCQ0lTd0V2aEVSWWkyNmIyU0VSZkFPQ3hVUDZ6SEh3OU9ML0JqNnJwWHZjRm8rOU1wcGk5L2czd29Lb3BJZ1M4S1dpeXA3S1cyRzVEYWtXZ1dpdGI3ZTRhRm85dGEvY2RlczE5RjgxbXNpM0RWN3B0aUkyaXN3UUFqSWFkRHYrVkZyMzNENkZQcU5OMHArcjhXc21ianpsUmZoRjF1TGhDSkZJbEdvZGd2Q2M2NTQ1Q3B4NURDeFkwbkM4QlFSNG9jT1JtQmNiUlRleXJiV3c2b1F2QUl4TUNHT2ZtT1E0ZmVHRFViZGNXTVIwNjBMSFVIaWtBS1JFTlVtRUc2aHVWL09JMWYxbnB5Z3hocmdaMzJjZW5zZXZkRUx2OEJwVURlTzc2Q2YrK0FURkdXVCtNeW9PM0U4ZktqcnhZTUFVaVNTNnJNZ2F1V0w2ZDRaZnRGUjRyMHhGNWF0UlBhdjU4VUFnVE1OQ0R2Z3ZMbER4c0VqdUw3elJ6WFdRR0JTUEtJN2RTU2ZxTkRFajVmY25sVFBLQmI5cEw1SUIvL1lHQ1N2V0lUZ08rcXJIeWdVWm1WaFY4OEJJazN4QkZrcmFYRmVBcWliMVBxTHBkUmRTbEJqRmZLdlhNV1BnNGNqKytRcHE2TllmTW84WWhhUmZBL2FybG1wVEhzM0l2dk1PZXdha0lLQ3RHdUtRTXM0RjFGOGxUU0tkWk1zM1k5N2RpTXJNNHNNbjlLVzhUUFpRME5DMGFIRGcvRDM5eGR4dGxCQTU3dmwyKytRazJOcU5UbjdSYm9pM05Xc0dabzB1Vk9OQlU2Yy9BV1hVeS9CeTB0WjcwLzJYbGpWcGsyYUlNcW9RY3ZJek1UMkg3WWpoeXkrWndVc3ZZNTZDdno3elpvYVZvOGVQWG9NUjQ0ZWhaZlpVTDFPcjhOOTk5eUx1blZOUnkvdEpUYzNqOHJrVytSUjNyVnJ6TmRNUjllbmJldGtKQ1ltVm85QVJBVmwzNFA2L1MzbXZLbkdHa2hkdXhFSEp6d2xLcEpXcWN5cGlFQzRWdkNOU1UvL0FITE9YME90ZnIzVkQxVG9zOE5UWHNDRkpjc0E3N0luTVZhbVFJNGVPNGJ4RXliaTdObGY0VTM1WUFvTEM5Q3dZVU1zVzdvSU1UVnJpamhiV1BMWk1reWIvbWRWYU5yNUZDT2Zya09UTzV0ZzNweFp1UFBPUm1vOE1PT3ZMK0t6WlNzUXlJTWtCSjhtaSt5OWVYUFF1WE1uRWNlY0pDRU5HemthYVdscEpXS3lIeVVmazU5NUd0UC9ORVdOQXpaczNJd25KazRTWmF4Y0F3N0ZWQWFGR0RSd0lPYk01cnBUK3JVcGoyKzJmSXZIeDA4UWpZNkhoeUpDSFYybmdLQkFiTm00VGdqRVZKcFZBVmRPcWlEOGJJKzZrOGFya1FhS3NuTnc3djBGME5IRllIK2hVdURDcHJSMTFKcWVuYjlBV0JNVDZMT0VVY1BnRThtUFRxak9qZWFLNGVYdFM4R2JCT0tsQm5vdmhHWjd4Vmk0ZURGZWZ1VWZRaHppKzJwYW5BYTN3dlBmbldzaURpWXZyd0MzYnQxQ05sMFBKV1RUMzlrb29BcGtETmNyYnhLR2FSN3REY3IzelMxRnp4N2QwTExWM2ZUT1F4eWpIZXRMamQ2T25UdXhkOThCNVVBSHlNbkp4Y0pGaTRXMThQSHhFV2w3Y2ZvKzN1amZwNDhRQjFQbEF1RldsUitmeHVzMVF1KzAzRVkwZmRlUHlOaC9VTnpmY0x4dEtCOXVrYmpWeUR6eU0yNVkyU0tJTjZrTGJkRmNpTGtVSTFzRktEY3R1ZXZDbFp1RGttL2JiMlllUEhnSU0yZStKVnBvcmdoYUd0eHErdm43WWVxVTU5Q2dnZVdqSkR5cDIrbEYxOEEwV0p0bFlKbEhlNFAyZld2bk5IYk1HQlFWRllyMzRqZzZudk55NCtaTmJQNW1pNGgzQkxiT2UvZnVFNExUOHNDOWl2RHdjSFR2emlPWkNsVXZFQktIUDNVTjZvei9neHBqUUUvOTBGTnZ6QkZEdjVSckxoSDFrMHFDTHJndU94Zm5GaXdrSVZnK1pLZitVeFBGOGx5eElYYTFpY1J4dUE4LzdjOHprSjZlTGlxVnFBUjBIaXdPUHBzWFo3eUFod2NNVUE2dUVOUXI0SjZCZzBGSlFmdkhsUFlQUG9pMmJkcVFTQXpYUnhQU2loV2ZpNjZkSTd3KzgwMWtrYS9MNWFMQlhiZTJyVnVqUytmT2Frd1ZDMFFVQmxXMkdwM2JJNlN4cVVsbjBuZnV3czE5KzhVb1V5Vkxvd1FQTXFuWGQrekVqWjhzelhWa20yUmg2VmpVVnE2ZFMxTllVSWlYWG40VkowNzhBajgvUDFOeDBPdW9FY014YXVRSTlXakg0ZlRZT3JHajYyakk1VmR5bUF0VlMyRk1lSGdZZW5UdlZwSnZEbnd1WExFdlhrckYxcTNiMUNOdDUvU3Awemh3NElEbzFtbmx3cUdJZWd0RFV3WUxxNkpSZFFMaFRGQUcvR0pxSW41NGlocHBnTzk3bkpuenJpSU1iaUhVVnFJeUVTMFJXYXFDR3hrNC9mWWNOZFlBVDMxSmVuUTB2RVBjYTlOcnJuVFBQajhWMjdmdm9OTlR1aVZhSmVBK2Q5L2V2VEZqK2pUMTZJb1JHaHFDM3IxN1lkQ2doL0h3d0FFT2hVRVVCZzkrR0UydDdIL0cxNmhmdno2b1hidTJ5TDh4Zm42K1dQRHhKOGpNekZKanlvZlQrSFRKVXVTUnFJMTlIclpRZDk5MUZ6cDJOTjBIb2NvRXdxZkdsU3dpdVpYRkNCaVR2bXMzYnU0L1JCNmZveU1oanNFeTlDSXJjblhiZG1UK2ZFeUpOQ0l5K1Y1RXRXMGpuSFh6QytTcXZQdmUrOWl5OVR2NEIvaVh0SkJNRVhVaDJOK1lNV002QXRUUnFZb1NXeXNXcjc3eWQ4eVo5UmJlZnVzTmh3T1BvdlVqNTlnYXNiVnFvWE9uRGtMY3huQkxmL2JjT1h5ejVSczFwbng0UkhEYnR1OUZvNkhCNWNPTy8ralJJOVVZQTFWblFjaEU4bXpadXBPZWdIZVE2ZlIwRnM3NXhaK2hLQ05EV0E3UnNsY1ZxaFdoSmdSbjVzNjN0QlRrcDRnTkpLaWw1SE9nMGxRL2NFMVdyVjZEMlhQbklUYzNSMVFDclN5NWhheFh2ejdtem40YnRXSmlSSnl6RUE1NkJRTzM1bVZkOXhIRGh5RW9NTENrcThYSGNtQy9ZY25TNWFLYlp3dHIxNjhUb2lweHpDa3RIcjV1MmZKdWRPeGd1WXRPbFFpRU02SExMeURmb3hNaTdtMmx4aHJJUG5NV1Z6WnNKbi9BYUJ2UnFvWmFvMnZmYjBmR29jTnFoSUdJMXZjaHZFVnpNZnJteXZMNFljZDIvUE5mL3hIdnVYWFZLZ0RmaEFzSkRxWnUxWi9RdUpHbDcrY09OR3JZVUhSL2pKMTFobjJSSTBlTzRORGhJMnBNMlN4ZThwa1FwRlkyREtmWmxSenpPQ3VQRmE5OGdYQW1TUFU4djZtT2xVMm9lUlhmaVgvOFJ6ektnSEl0TWw3VjhHK3l2MUZ3OWFyVlJ5ZjRSa1pTM2g5VkxJMWFxSzdHYjcvOWhtblRadUR5bFNzV0kxWTh2UHZzNU1ubzJ0VXdmT2x1Y0JkbzdLTmp4SDBLUGk4TzRycFJ1RUU5ajlWa09ia2hLSXRGNUh1Y3YzQkJYR3V0bm5INTFLaFpBd01IOWhkL20xUHBBdUhxSk81N1VCK1NOMm96NThhZWZVamY4VCt4VldoMXc5TmFMcTVjaFh3U2lqa3h2WHNJZjBSUGxsQnJlVndGbnBMeTE3LzlIUmN1WGhJVlNZTXZQdmZieDQ5N0RJK01HYVhHdWkrdFdyWVVVMktNZlJHdTZBSCsvc0t2T0hIU2NvTkFqY3lzVzFpejVpdjRxSlpWbzZDZ0VQMzc5VVdONkJwcWpDbVZLeEN1U0JTOHlQZUlIemxVTEg0eWh1ODlYRnoydVpoN1JiazJ5WGhWSTM2YldoYjJnMDYrOXBZYWEwcWRjV09WaC9pbzUrVWFGR1A2akw4SXA5eFgzZW1lejBVVFI5OCt2VEhsdWNsa1ZhcWtOMTJwc0dVY2xwSWlLcm5lcVB5RnMwNFc5S3V2dmxaakxObTJiUnNPSGpvazB0RGdyaFYzcTBhU2YxTWFsVnBxZkFyczlJYVM2cTA5QUNmcnhDbGMvbXE5MG5WeEpoWFFtUWRac3JUMW01QjV4SEpFSytLZWxtSkRiVjc5V04zeTRINDA4OTc3QzdCMjNYcjRxWmFEeGNFV0xwOHNYZHMyclRGdHl2TWkvdmRDcDg0ZGtKU1VCRDNWSzJOTDdrdmR5T1VyVnVMcTFXdHFqQ2tydi9oU1dBc3VINjJNZURpOGU0K3VxRi9QZExLc01aVnZRWWo2VDArME91bncvS0tseUZNM29SWXR1TjJ3NzJDWkxtOTQ3VWg2V3VFVlhFc1h6em8weDU5YW0wVGVWRUpyalkwdVVOWGlBUit5Rmp4aU5XdjJIT0ZqYUhubkN5OUdyT3JWd1pzelgwZGlraktucUxMSXpjMFZMZk9lbjM0U1V6Y2NDVC90M1N1K2Y4SEtGckhteE5TTVFjK2VQZWlkd2NsbWVGVHE4cFhMK0hyZFdqWEdBTTlNM3ZMdFZuRU1vMzJQdTZOREJnMHVzYnpXcUR5QlVDWjRia3RJMHp2aEhSbE8xdUlYY1orQkE3OVAyN3dWYVJzMnc0djZqNDVVWnZvUytQRUZXY2RQVURpSnpLT1VOb1dzWXlmRW85bUs4d3ZGTVhiRGxZeStkbW4xMTdpMmJUdmxsZEkyeXJkL1hCeDhveUxwd09vUkI1ZVZsN2NuamxCK1huNzFWWEVYMm5nNGw3dFcwVkhSZU9uRnY2SzJsVkVaWjNQeDBpVThNL2w1UERMMmNZeDlmSnhqNGJIeEdEVm1MRlo4L29XYWF0bU1IalVDUVVFQjRseTVzbXZuN2ttTjVhYk5XNUIyMVhUNnllTEZTOFd4Zkp4MkxIYy83NysvTFpvYVRmRzNSdVVKaEROREY0NDNtejR3N2tuc0hqUUN1NGVPVnNMZ0VUajQ1RE5rUGE0S3g5Z1IyQ0lWcHFmajBOUFBpL1IycDFDNkhJYU14SUVKVHlNbk5kV2h0RVVoVXRwNUZ5OWovNFNuS044akRma2VOQno3eDAxQ0VUbDhkS1R5aFNxRys5QlhxZHltVDUrT0d6Y3l4TXhlN2FKcjVCZmtpM2x0VlFGWFBHV203eTB4MjlleGNFdk1peW8wbjFWZENqek52MitmUG1RcFRaMTF0cVNIRGgwV013ZzBqaHo1R1d1K1dxTU9YaWhXaHdQUDNoMmFNc1RFSjdGR3BYYXhXQ0M4L2p2LzJuWGtYNytPZ3V2cEl2RGZSVm5Ld2gzemkyc3IvRDIyVUlYcEdaUzJrcTVJbTBKaCtrMitjaFZLbXpyNTVMQm5tdWFiQS9WeDJhOFNLVHVZZmtYZ3ZOM015TUNsMU10V0x5NWJFNjV3ZjN2NVpSTFFEVFcyOHVEOGNNdk5lYWxvMExwQXRqQ01LamN2M0dKTG9IV1orUHVabVpuNGVpMzV0U29yVnE3RWpac1pJbjN0Y25FWGxCZCtkV3h2NlJlYlU2a0NZVmdrMmpQTWpRTzMwbzVXWUEzK1BpL21za2liNHB5U05sODBzN1JGK3B4MkJkTjNGSkV2Tldob3JTSUhqdWNLKzl0djUvSHlLLzlFTmorbXJ0SXgvTDRqUVVsQis4YzJtalp0SWxiOTZZMTJ2T0Z6Wnl1eTlidHRPSFBtckdnZ3ZsNjNRWXh5R2NQTytaalJveEVSRWE3R2xFNmxDMFRpZk13RndpMGlkM1VZcm5EOEVWZVVEWnMyWXRteTVTSytzdURmNDY0TzU4SFJ3Tk5GZUo0WUw2VzFGZTR5OGYyTGdBQS9jZTZhME5pSzZIUkZlSHYySEt4ZHY1NjZvMmtsWmNYSHNNWGhLVGU5aEtOZlBwVWdFRlhSbk9IYklZaHpMZm1ueXVDTHpSV0Q1eUIxNzlZVkNRbnhvckl4aWhYeEZOYmpuWGZuNCt4Wnk2ZjlPb3RBL3dDMGFuVTMybEJyM2pyNVBvZENHd284SkoxZ3RuUzZQSGdhZkVKOFFrbmp3UEM1OC9Mazc3WjlqN256M2hOZEt5MWVFOUd3bE1Fa0xOdlc4enQzVGZyZ1VjaTdmRmwwVFc0cnFGWHlwZjV3bDhONzFBZ0ZSVGNWVzVNKzZhbkpPSGYyckxBSUduekpsTXZtZ2I1OWUySG1mLzZOOVJzMjRybXAwOFQ5QVJhSFZpRzRkZTdVc1FQZW5Qa2FJaU41OU0wMnBrNTdBWXVYTEVVUTd6cEpjRm9zeGc4L21JOGVKRWdOcnB6c3BQT05PNjJsZGdUZUVNTGYzMCtzWGJHSEJSOTlqRmYrOFc4U2dySTZrZEhLaDROeFdiRDE0SWJrZy9udmlybGR0dUEwQzhLcjduZ2pCcDVUeFdzN2JyY2dwcUNvWlZIWjhNWG1mblR2bnQzeEtqbmpMQjd1Ym5UcjB0bkVhZVdLd1JzcGNHdjZ6dnozUlp5ejRRb1lFaEtDc05CUWhOS3JveUVzTE5SdWNUQThSWjZuOEhORFlIemVIRFJ4YUxDRnZiOXRHNXZGd1RqTmdoUmN2NDRMaTVlaDRGYTJTYVp1QzZnSXZRSUNjTWV6VDZvUkNxSmc2VE5uV2hDK1hCenVhZFVTSDMzNEFZS0REYytRUDNmdUhDWTkrUXgrUG5wVUhNL1hnWTlsMFFTSEJPTzl1WFBRcnQzOTZ0RmxZNnNGY1FYNFp1bGJzK2FVT2hLbVZISEtmMEVodnQrNkJYWHJKQ2tmMklEVEJDS3hwRElFd2kxbGZGd2NGbjZ5QVBXc2ZKY243VDMreENScUxRdlZvVTFEVjZ0NTgrYjQ1S01QRUIxbHVWR2ZPZTRra0xOVVBrT0dqY0sxYTFkTnVxSWFuSGRlODlHRkxPekhIOXBuU2VVb2xwdkJGenNnSUJBaG9XRnFqQ2tkT3JRWGQ1cTVKVFZ1KzNpbzgvQ1JJMktkK3UrTnV0Um9QL2hBVy9LSERNUEdHdnczKzBuY2pYdHNyT1Z5aS9LUUFuRkxMQ3VDTVkvOTRWSGNmWGNMc2hySzFIeTJJaHg0MWQ2NmRldng5YnAxNnBHL0gvcjA3b1h3aURBaEJ2T3k0V0hvbGkxYm9sVXJ5OFY2NWVHZ1FHNHpINk1pVklNL0ZsZTdObDc4eXd2a240U1EvMkdZcjhSV2hTdlE2NisvaVdQSGo2dEgvejU0c04wRGFOTzZkY2xRdHdhZk8wOHJTUmt5Q0lGV25ydGZIbllMaEs5M3RTNk5kU05ZR3RYVmxMUzRxd1grT0drQ1hTL0RWajhzRXJGMjR0ZGZ4YjVRcmtucGxyRXNlQk84MnJHeEp0YUQzL01BQmNmMzdORmRqYlVQdTV4MGRpNTlJaUpRcTE4dkJNVFZGanQ5U0VxSHhjR0ZlK3JOMldMZUdFKzdZU3JpcExPejJiQkJBeXhldEJBMWEwU0x1TkxnVGErbi8rVkZyRnExaXZ3V1ErdkpsNXhiV3Q0SGQrS0VKOVJZVTJ4MTBxK25wK1BMTDFjak95ZmI2Z2lTclhCK1dpY25pMkZZUnpoOStneWVtUGhIbkRwOVdqUUMzQmdvRFFQdzdETlA0YWtuSjZsSDJvZDlBbEVQNVFWRDlLLzRYMUlHcEJBdU15OC9QL0hLRjQycEtvRXd4NCtmUk1xSUVTU1dXK0ptR3VlQjg4S2JwRVdFaDJIK08vT1FuSHlmZXJRQld3Vnk0dVJKREI4eEdsZlMwa1RGZEFUeXFKQ2ZsNDluSi9QbTFWUFZXUHVZUC84RHZQYUdZaFcxQVFvZXVVdE1UTUJuaXo5RlhGeWMrTXhlN0pLOGRvRjVOMEx1Wm5uNHlsQm1vRExpM2VXTnhWSFZORzdjRU5PblRoWDljRzVSR2M0TFQ1TlBUNytCVi8vNUwyVHdka3NPd3BXUnAzYXdnQjBPNnZlOXJDeCtzd1dldmJ4NjdWb1NSSkZKT2ZPbzFyQWhReHdXQitPQUQyS1lUU3FEN2NGaDJGQ1R3TFFnb3V5MDNPeWdjdUMxRjhicGNJdS83OEFCTFBqb0UvRzNvMWc3WDBlREkrelk5U04rT2ZtTGFBUzBOTGpMRmhrWmdUNTl6UjV0WVNlT2R4b2xWWURpWUpzSDNpcEpxK1Myd0VKNGN0SkVOR3ZXUkZRY1F6ckY0dEVGcytlK1EzNks1UkpqZDRDbjNQQ01aZTcrYVQ0UW54ZXYyZS9jc1NQcUpObCsxOXdhcFFxRSs4bjYzRHdVNWVhZ0tFY0dad1pkVHE2WXY4V09lMW40K3ZpaFZreE5KTVRISVQ2dXRocmlFRU54NXMvU0tJL1kyRmpoclBLR0I3elByWlplUW53OFltdkZZT255RmNMaDF1QzE1dnowS081K2FZSDN3T1YrdlRFOFNuVHJWcGJKY1hZSC9oMEtYTm50WmUrKy9kaStjNmRvQkRUcndYa0tEUXREMzM3V3R6SzFoMUtkZEY3YmZYcmVmT2hJSU5yb2k4UTU4TXhWRCtwM04zbHBobmdNWFdrVVVHWE16TWdVcmI1MjhmbHk4WU5lb2lJakhSbzFTdU1Wa1d3OTZMM1dvV0VubVpmb1JrVkZsa3dZL0c3YkR6aDIvSmp3RHhnK1hxOHJRcy91M1pCVXgvRG9NMTZVdEhiOUJ1U1E4RDNWcHpUWkM2Zk5UM2JpYWZQSjkxa09HSlRGbUVmSFVsNjNpNDBYdUl5NGZBckltblNqZkg3dzdqeXJ6OUczaDFJRndvOHAwQlhZdHQrcHhERjRzengzYkh5NHlqanFMemlUNHlkT0lHWG9TR1NSQmRORzBManJ5TTloWExIOE16eHd2MjBUTTh1aWRJRklKQzRNQytGdkw3MkNSVXVXbUV6SzVHSHcxbTJTc1dMcEV2WElpaUg3VGhLM0pQVnlLbmJzMmtsQ01iVHYvSjYzSWUzVHM1Y2FVM0drUUNSdXllZGZmQ21lc092RDkrUlU2OEdUTTVzMmI0NWV2UnliVm1JTktSQ0oyMUZJRHYyeVpaK0xtNHVNNWhQeDZGV245ZytLM1JlZGhSU0l4TzM0NzhKUGNlblNKWk5SUEJaSGplaG9EQjltK1hpL2lpQUZJbkVyZUZySnhvMmJ4WHR0SkUxMHI4ZzVIL0JRZjBTVFNKeUpGSWpFcmRpMCtSdnMzYmNQT3IxZTNCL2l3SGZSNHhNVE1MeU14eGc0aWh6bWxiZ1YvSURTN1R0MndKTm5KcXUzT3ZQSmVqelFyaDJlR1BjSCtQbzY5MEZNVWlBU1NSbklMcFpFVWlyQS93RkF6cmdXV25kMGpBQUFBQUJKUlU1RXJrSmdnZz09In0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMTktMDItMjYiLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IkF1dGhlblRyZW5kIFRlY2hub2xvZ3kgSW5jLiBBVEtleS5IZWxsbyBUeXBlQyIsImNlcnRpZmljYXRlTnVtYmVyIjoiVTJGMTAwMDIwMTgwMjI4MDA0IiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjMuMyIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4wLjAifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDE5LTAyLTI2In0seyJhYWlkIjoiNGU0ZSM0MDBiIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWlkIjoiNGU0ZSM0MDBiIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlRvdWNoIElEIG9yIEZhY2UgSUQifSwiZGVzY3JpcHRpb24iOiJUb3VjaCBJRCBvciBGYWNlIElEIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjI1NiwicHJvdG9jb2xGYW1pbHkiOiJ1YWYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfSx7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX3N1cnJvZ2F0ZSJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCIsImJhRGVzYyI6eyJzZWxmQXR0ZXN0ZWRGUlIiOjAuMCwic2VsZkF0dGVzdGVkRkFSIjowLjAsImlBUEFSVGhyZXNob2xkIjowLjAsIm1heFRlbXBsYXRlcyI6MCwibWF4UmV0cmllcyI6NSwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmFjZXByaW50X2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImF0dGFjaG1lbnRIaW50IjpbImludGVybmFsIl0sInRjRGlzcGxheSI6WyJhbnkiXSwidGNEaXNwbGF5Q29udGVudFR5cGUiOiJ0ZXh0L3BsYWluIiwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBRWdBQUFCSUNBWUFBQUJWN2JOSEFBQUFBWE5TUjBJQXJzNGM2UUFBQUJ4cFJFOVVBQUFBQWdBQUFBQUFBQUFrQUFBQUtBQUFBQ1FBQUFBa0FBQUZKYnVKMkVrQUFBVHhTVVJCVkhnQjdKWXhiaU5IRUVVRkoxNFlDNWpKQWdzbkhzT09IUEVBQzJoeUIrSU5OS0V6TW5TbXVjQmllUVB5Qm1MZ25MeUJlQVBTSjFqZWdINmY2aHFVeTlQYVhnMEpPK0FBWDkxZFZWMzkvNS9tUURmSDQvSG1pcndIVjNPK2NFR3VCbDBOeXY5OFNqNHQxeHQwdlVIWEczVFJYOEdnNWpjRG41OS9yTDRESDhBTWJCeFd6RnZ3RzNnLzhKaGhHa3MrVkxtYTF4Skg5QVRJaEdNaFpGN3oydk55L0V2aXc5ejlTc2FJck1HKzBKUSs4N1IzOHBYSER0Tlk0bUt1cHBRb29rWmdIb3hacy80RXB1RDJCU2l2T3RXYmFicDlvOUx6Yy94TDRzUGNMV0NJa0Fwc3dXY2dvYmQ5MjRpcnJuWVl4enB5TXZvT0xNQmY0RjgxY1kvV0pVYmthb1p0N21QalloSUEvZ1IzTG56RFdtYk13QXJzZ2QyTXZsSDVEV2hCWndoem1mVTcrTlgzN3B2bnhKZkVMMllReE4rREQwYVl1UVRKbEMzb002STBkbUQvSEZTdTl6dWI5NDBsUnVScUxtSVE1TDgxb2hJQzlQWWxyTlNFMGpyZHJGcG5NWDVqWjhZeEo3NGtmaEdEakNDa1p5Qm56STdjQWt6QkxhaHNuNDBwcm0rT3ZsMVBJR2ZjaXR3UHRpK09KVWJrYWk1aUVHVEhZTnNqNkRNeGllMitKVkhNUzJ2MjZUWk9nY3lOWnVsRjlQYk5pUytKbjkwZ1NPby9ZNUgxQW1UTUF4aDVBN1FHTlppQkZzekJCcXpTV3JFSnFQdyt6WW5kZ3gwNEJ2d1VhMHVNeU5XYzFTQ0l5cHhJK0pGWVphU1pqMEFEWkVTc2ZXbTlwMzRKYXV1bGtiVnVsRjZBN2QzNHZPWTU4U1h4WVpzZEV3aStkU1JGVnFRYlZ5SXhMVGdBRS9QYWNlOTdNNi9Bayt0YiszTkxqTWpWbk5PZ3BTTW9jN3J2Z2VaZzYvTFJtRFU1NGNIaE1jWFU2NWlCak9yTVlQNHAxVzMrVndaQjZ2dEVURUlreUp2VHNJNjNSalVMMFB0ZnRSZW51ZnFCS1hnQ2ZXYk5pWisrYjR3NlR6VzE5Y25kanBMNFdXNFFaR2FKVko4NVVaQ00rY2ZIMm9Sb2xEQ0RqOXVjbk14YWc5aDNTOHlidExROUpVYmthczVsa01pSmNHT2tORTh4RXlMemFzdHJaRDFLZFN2R1BiQmFQeDZJSzY5K25iSE1hN0FEc1hhY2VuZjFPZkVsOGNFR1FYQ2NTRDZhZU5ZaTU0bkhtMVdSWDRZYVg1K2J5eXp0cTVJSkkrYUwwRWMxWnRJdnFpc3hJbGN6YkRPSFEyWUc5RzJ3NnoxbTdnVkdjMVF2RWI3bU5mTlc0dlhRNnlIMDI3UHVibHRPZkVuOEhBYk5qUXlqelBIaW96bDYrOUVNMVN6QUhUaTkrV2ZaSitGVmlpdXZ1cmgzUTh4ZVRCUHlHK3RUWWtTdVpyQkJSa0pFd1RhUTdBUVRseGd2VUlMdlFmZW1tY3ZnR1dnVGF1dXZrWmpxbzFFNjAweGFNUGRudE5xWEUxOFNIN1pacDZjSFl0R2N4dVdXZ2ZpamlWSU44d25ZaHhvdlZQdXJWRHRpcnYwKzcwMWFoOXpiRWlOeU5XY3hDRUxSZ0ZaaTlKQ2JCY0tMNTh6ejM1NjlYbmljejIwdis2YWg3MFk1WWpMUTM3SW1KNzRrUHNnZ2lMd0JLK0NGZEFZUWIwTHVpYlg5SENSa0cvTHFvNXAxZ2hkcVoyaVA5WWo5VHdhUzkvRk5pUkc1bXFFR2ZZU01FZGZvelJtSDNKZk1VWDVzTjhSR1l2ZGdGM3A1a3hZaGQrcEJiSjNpLzZsQkcwY3Vtbk53T2QyRVRqeHpDVHc2K0wwVjhTVlE3em5RZWdTaUVWdG5vc3kxZnFjNDY3SEZjcmVqSkQ3MEJrbUVpRDA0c2lKMk1IS00wUnlKTnpFYXZUbHR5Rmxkby82cURmbDVpbmRtcEx6VnI3VXVNU0pYTTlTZ1B5QlFpYVFlNWczdzVraGdjMG8rNTVlc1RiUkdiMDdNK2JxdWovYUVIclg2RS9QNzl5bFdxelludmlRK3lDQ1JzQWNpODBCY04yZmk4bDVBTktjTmUvV1RlUUM3RUIrckg3RytuMVFWYWs5bnE3YkVpRnpOM3dBQUFQLy9YOUxsUHdBQUJQTkpSRUZVN1ZxN2ppTlZGQndrSkJDc3RCMFFFZXkySUdTRHpwYU1Ec25XTWNsMlNMQ1NIUkJzTnY0QXhEZ2lRbkwvd1hSQVBpM3hBVGI4Z1AwSDIzOHdWTFZQbWRvcno0TngwRzNKVjZvNTk5WTU1L3BVeloxWmFUVVh0N2UzRjAvRkJkYTNML01DV0FPM2hnL2ttZWZDZm1ZNTFxMkFMSExWUGJrc2FuWDNsbjFBa2ZSVWNWZHRmQlBjN0tuNjJQZGtjOWlNWWQ3WlFCSkI4VG1INDhMZWgwN05vZERPN3RnYnQrdmVmd05vdU81ZkhMaDNHMXhxWEk2K2ZFaURXaHVjQXE2QS9tVWNFUEdRT1RTQmdpWUE3eVhtUUJWUkJqSG1BZWNtOFprMFdmeU0zSkFHTlRITUJySGtNRnpZWjBBYk9RM0x3WHZ6RVBtZDdwSjhHYjJxdnkvV1VWdmJIVTF3TStOYWNrTWE5QjdEWEhJSUxaeExJQlh2NWxRSDhwWDE4eVhkWjQ1eWVYeVd6b3daVUNUOXo0WTA2RE1UeG9HYlpEZ092UVQwY21pT0M2SVpFOTNCaURQdm1RS1h3Qld3QWJ4SCswWFVlNzYvSytsNVBaaEJKcWpHVU9tcm9aQXBhN2l3WjQzRU1kS2NZcGU5L3l2cVNtQUZlUCtXWGVEOFhwbm1YRG1ZUVJqdXkyUm9DYUNZWGp4aURxeVR1by9NUVc0Q1VGUnI0R3VzZ0V6MlliOEU5Qm40TjdnM2lEWGkxc0hOakNzR015aUcyZGd3RlA2V1BCZjJITFN6UElYUXZGNDBZZ2xzQVFtOEt5NnNaeG4xcS9pTTNQdUQ0NzI2S3h2YUlBNi9BZHdZRHRqYWtCcjJpZ0s0a0dPZitNZkVOZXI3VjdtNzRiK3Z5VDE5VFhDOWlVTWI5RnlqWXFpN2pPSExtbGhkbllqcURRYVhzd1l4QTk0QVM4RE42NWpUUFlyZytDcFZWNUlQYnNIOW9BYkZNRDloSUg2SE5hVEhKZmk5S094VGMvYXZpbmVsQy9VbFFJTjFaM3VncHJWOHlUek81QXJ1eDJCUWJRTkt5QTI0a2dOeVljOVh3YUdWWjZ6NjVDNWY0ZHhFRGVQRWNnWE9idEsranpYUm8zdG53ZldSK3pFWVZHSklEWGlOZmNuQnRIQ2VBSjNWN00wQmx3R3BjYnFyWVo3M0lQSU84VnZkSFRudm53ZFhNbklOYmhDSHdQQy9BRG4zV2ppWGdBOVBnWHdKRldzUWFjNGFrUEJEc1dZdEYrcHVyTlpmbUg5R0ZiWFBHTGxHWWRCdWxGNUVBUkVMWUd0aUpId0ZybUF0WW1vT2pac0NlVVQxTUpiUlUyRXZma0dPQzF4cmZObVQ5bVUwQm1ISWYyeFFDV0hzeFd0bW5HbmkybXFaNzQyem1wbmxHL0k0NThhMVZyczF2aFN2T0NhRFNodVV4bXdBdm9wTXcySS9BVHBBQnU3TkFjZCtyMld1cjdOKzlYVUhPT1krRjY4NEdvTTRFQWI4RGJnQ0NnMFlQTVczZ0FReXVqbDE1Rnk0MStkeHo3N2Y3aFgzTjdsMGpjb2dIdzZDQzRBL0t1c1FMeUdNS3lCblBTSnJQTmUvSW5CdVVJWXpvYm8yZXVmR3ZTS1hydEVaaElGZkFWc2JYS0lZK1dxbUVvRjlsZFRObVFQblpud0libUsxVFhEcjRCWThIMXFqTTRoRFl1aFUrQWJjSmRDL2pxaVpoVGdhUnl3bEVQdTU1ZXFvcjQxamJ4N25hL1VkaXFNMEtBVDlEQUg4ZmZUR0I4YzVBeHBBeHFUbUZFbXVqSjdPZUpvekIvaWp1amZkUDBmNzBScWtBUlVwSkVTNTBOUWMxbXdCbWRlL0Rwd1h4alhZcys1UFJ0MS9WeHk5UVJEeEF2Z2Q2QUFKVjV4S0dISVV2YmFhVFhDRmNlemppL3BSZlEvRjBSdEVBUkNVQXplQWpPRStsempzYVVKbmVmNHlKNWNCYStOL3hmNEw5VDBtbm9SQkVnSnhyNEh2ZFdiRWVRYklPRVkzcDQwY3VlazNMMTUrNHIyUDJaK1VRUzRJZ3I4Qy9nZ0RaTkFHWjcyY3Y3Qy9CdDRDejczMy8reFAxaUNKaEhqK0dQMEFmQWQ4R3ZoYStXUGpZQVlkODhHbjBudlUvNVdjaXNoajVqd2I5TUNmLzV3Tk9odjA5RDhRNDQvbStRV2RYOUJ4TCtoZlV3VFl5UkNhclo4QUFBQUFTVVZPUks1Q1lJST0ifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiTk9UX0ZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMTgtMDUtMTkifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDE4LTA1LTE5In0seyJhYWlkIjoiMDAyNCMyMzMxIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWlkIjoiMDAyNCMyMzMxIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkcrRFZvaWNlS2V5Y2hhaW5pT1MifSwiZGVzY3JpcHRpb24iOiJHK0QgVm9pY2VLZXljaGFpbmlPUyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6InVhZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9LHsibWFqb3IiOjEsIm1pbm9yIjoyfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X2RlciJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJ2b2ljZXByaW50X2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJzb2Z0d2FyZSJdLCJhdHRhY2htZW50SGludCI6WyJpbnRlcm5hbCJdLCJ0Y0Rpc3BsYXkiOlsiYW55IiwicHJpdmlsZWdlZF9zb2Z0d2FyZSJdLCJ0Y0Rpc3BsYXlDb250ZW50VHlwZSI6ImltYWdlL3BuZyIsInRjRGlzcGxheVBOR0NoYXJhY3RlcmlzdGljcyI6W3sid2lkdGgiOjU0MCwiaGVpZ2h0Ijo5NjAsImJpdERlcHRoIjoxNiwiY29sb3JUeXBlIjoyLCJjb21wcmVzc2lvbiI6MCwiZmlsdGVyIjowLCJpbnRlcmxhY2UiOjB9XSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUJtRENDQVQwQ0JHUWRQUjB3Q2dZSUtvWkl6ajBFQXdJd1ZqRUxNQWtHQTFVRUJoTUNTVTR4Q3pBSkJnTlZCQWdNQWsxSU1RMHdDd1lEVlFRSERBUlFWVTVGTVFzd0NRWURWUVFLREFKSFJERUxNQWtHQTFVRUN3d0NSRk14RVRBUEJnTlZCQU1NQ0VGVlZFaFNUMDlVTUI0WERUSXpNRE15TkRBMk1ETXdPVm9YRFRRek1ETXlOREEyTURNd09Wb3dWakVMTUFrR0ExVUVCaE1DU1U0eEN6QUpCZ05WQkFnTUFrMUlNUTB3Q3dZRFZRUUhEQVJRVlU1Rk1Rc3dDUVlEVlFRS0RBSkhSREVMTUFrR0ExVUVDd3dDUkZNeEVUQVBCZ05WQkFNTUNFRlZWRWhTVDA5VU1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRVNJcEkvZEtZQ0RZaHp3RDJ3U2ZZQU9iL25OYWlQY1dGMjF2eFprL1RnRDBPSnRjRCtPUG02NG53WmRGV1NFWVNXN2lPcW5wbUp5ZGU4bWdyL3RuQWl6QUtCZ2dxaGtqT1BRUURBZ05KQURCR0FpRUEzYnZoYXpRRlB3bXlYbHhLL3hDWGZoN2cxWDFFb2JMQzNMKzJHT1J4cDdnQ0lRQ2ZORVRYL20yQmViUkxYSTRMTVAxRVFHUFhGRGY3T2s3NFU3eGJpTTRWa0E9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LC85ai80QUFRU2taSlJnQUJBUUFBQVFBQkFBRC8yd0JEQUFNQ0FnTUNBZ01EQXdNRUF3TUVCUWdGQlFRRUJRb0hCd1lJREFvTURBc0tDd3NORGhJUURRNFJEZ3NMRUJZUUVSTVVGUlVWREE4WEdCWVVHQklVRlJULzJ3QkRBUU1FQkFVRUJRa0ZCUWtVRFFzTkZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlQvd2dBUkNBRElBTWdEQVNJQUFoRUJBeEVCLzhRQUhBQUJBQU1BQXdFQkFBQUFBQUFBQUFBQUFBY0lDUVFGQmdJRC84UUFHd0VCQUFJREFRRUFBQUFBQUFBQUFBQUFBQUVEQWdVR0JBZi8yZ0FNQXdFQUFoQURFQUFBQWF5ajZGNXdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRWdkM2VEVDV4TEozNnhGb2M1bDhsR1BTWEtzek5ETTA5TlZkTis4UDhaZExLQkhwaWUrdmhUdW9mTlhOQXZtK015VW1SbjFkUVpnQUhNNGN3MUxpY1AxVkxlUXVqVHpKMmRKTTMzNXBoYWFVamVhYktVUnZkVjdTWjFkVFM2U3VGa3dRL2JIcjc2NXQyRjFtZGs4N05QcUUrU1l5SFIxZ0FMQjE4bHZ5VGVqUFhRcW11Z3NnWWRWVnAxeWFIZlhMVzN2VVFrMnBhSXFkNU1yWXFJUGZqZExObVRZeTIrQ1RveHNiNkl0dFN1NmxBOUJaSEE2cW9BQnlPT05IUDJwUGVuanJzLzhBeG1uY1liTENpYTZ6MHhTbWFadDlIUk1sVVJ2ZEYrcXpvWXVzM2xkS1YxdTZpYW0zdDdQcnRKbjBHZW51L0E5RFdHeHhBQUFldjhneFhLay9PWnFjOUptYktscE16Wkdrek5rYVRNMlJwTndNNkVyaDFqOHcyT0lleUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVAvOFFBS0JBQUFRTURBd1FCQlFFQUFBQUFBQUFBQlFBRUJnSURCeFVYSUFFUUV6WVJFaFl3TkhBMS85b0FDQUVCQUFFRkF2NmJHSVNSbE5ZYkZnVVpTM0ZNbWxQZ3RLVzJiZlNMckUxUFN1VytDMHZCYVhndEx3V2w0TFNjaUdMeWsxaWdPUnBrc1FJeGU5K0dBUW1xVVBHN2UwMHNQbjdZYTNlNWRCdHE5NXhhT1pZSEZBeXhKN2NwQmt4aEhpMjg0dGJ6aTF2T0xUSExRSjNXMWQySDFoNnlzRVdzNWgxeUtFT2JScmNmT2dZaXlCRlNXUXQ0eUtQU0Y3STN2REVudHl5Zjd0d2pjb2ZSaDRDTk41QU1sQUszSXdseTNWWnVjc1ZNT2oyWExMUm1wOUkrMUdKajFkTzBoNWJTSGxBb0NWanA5VFhIaFk5SmRwRHkya1BKeml3NDBiZHNPbWFtNWRaSFlkQjh3NVlZK05lVTQrcnBMdXpiOWJtZS93QVB0alg2dnZWWmYrUHV2bGk0aDBZUzlaZENWTXozYW5Kc2pvcDNQa2kzUGtpeDVOVEI2UktkVG8yRmxHNThrVzU4a1YvSkVoZFdPMkhBbFY0Z3Noa09oS1g4ckYrdHJmalJ5MUl3eDRHMmtReVNSUi9GM1hERW50eXlmN3R3aXNOZlNseUlGTndnK1lTR2lOQTZxdXRkWE9FVEc3RTM3QiszS05MN2UwNnRQY1h4OTVYdENDVzBJSmJRZ2tCZ0F1T1AwYXgwSlBFdG9RUzJoQkxhRUVtT000K3hydFdxTEZzb1ZhaG1VeGxsNldFdnd4NlVrSXpmQzVlR1BLVzhxRE9xZGRHclhScTEwYXRkR3JYUnExMGF0ZEdyWFJxMTBhbk10Q3RLVGVZQjdXazlKSDhrYy8wMy84UUFIUkVBQWdJQ0F3RUFBQUFBQUFBQUFBQUFBQUVSRWdJUUlDRXhVUC9hQUFnQkF3RUJQd0g2eXhrNlJLRjdxVVNoNHp5ZlMxREVtWkVQV0xNdUM5TXRXUlliZ3NodVJlbVhuRk9TcFZpeFkxSlZsV0pRTnp5c1dMRml4WWJuN0gvL3hBQXVFUUFCQXdFRkJnVUZBUUFBQUFBQUFBQUNBQUVEQkFVUkZTRlNFaFFnTVVGUkV5SXlZWUVRSkZCeDhEUC8yZ0FJQVFJQkFUOEIvTFZsZDRQa2o1cjdpcHp6ZFIwbFF4czdpcXIvQUFQOUtPTTVYMlF6VzUxT2xiclVqbnN1b0srV0Y3anpaUm1NZ3NZOHVDVS9DamMreXBZdDZtdUw5dWhGaGE0VnZVR3RsVTFNSlFrekVyT2tHT1YzTjdzbHZjR3RrRW9TK2g3MWFGTXhnOHJjMlZsU3ZlOFh6d1ZZN1VCc3lzczJHWjJmcjlNTG03dC9mQ2tzNldNWE4zYkpRUUZVRnNBc0xtN3QvZkNvYVk2Wm5ZK3FxellJQ2QxWlkzelgrM0RWVTVVc20wUExvb2JVRzY2VmxpY0h1cDdRaGtpSUc2cWhuQ25rY2o3TEU0UGRQYWtIUzlWTlVkV1YzVHNxS20zZVB6YzM0U0ZqYlpKSFpjUlppOXl3a2Rhd2tkYXdrZGF3a2Rhd2tOU2hwSW9QUzJmNWovL0VBRU1RQUFFREFnQUhDd29FQlFVQUFBQUFBQUVDQXdRQUVSQVNFeUV4UVpNRklDSWpNelZSWVpHaDBSUXdNalJTWW5HQndlRkNjN0d5VTNDU3MvQlVjblNDd3YvYUFBZ0JBUUFHUHdMK1p0MkVaS01Ed3BEbm8vTHBvRjlzN29QZTA5NlA5TldZaU1Nam9RMkJYSnA3SzNXSVFrSHlWelY3dUFBZ0VaQmVuNVZ5YWV5dVRUMlZ5YWV5dVRUMlZ5YWV5clB3bzd3OTlvR2xLaWhXNTczUzNuUi9TZnBWcFRlTXlvOEI5dk9oWG1pOUl1bmM1azhNajhaOWtVaGxsdExUU0JaS0Vpd0ZGK1UraU8wUHh1S3RSUzBKRXIzbTI3RHZJcjFLWjJKOGFtdzI0a3BLMzJWTmdxeGJDNCtPQWZrTCttQjZBOUZrT09OV3VwR0xiT0w5UFhYcVV6c1Q0MTZsTTdFK05lcFRPeFBqUVM0WDRuVzYzbTdyMGw2TzhoOXBXaGJhcmluSThscEx6TGdzcENxNEYzSUwyZGx3NnZkUFg1aG1PeU1aMTFZUWtkWnFQQlk5RnBOaWZhT3MwNU1mNFg0VzI5YTFkRkdSTWR4dlpRUFJRT2dEZWo4aGYwd1QvZzMvQUcwNzBQUlhPTFBLTXE5RlkvelhUTTJNZUF2U2s2VW5XRFVpRXUyTW9YYlY3SzlScFRheGlyU2JFSFVkKzB0UXVJN2FuZnA5Y0hrUVBFdzBnVzk0NXo5TUlVQkhzYy9LMW9qYld0RWJhMEpjc001SEpxVHdGM09DVk5paG5JT1ltTGp1V09aSUZhSTIxclJHMnRPdnVDUGlOcEsxV2MxREMvdWNvOFZJUmpwSHZqN2ZwZ25CSXNsMGg0Zk1aKysrL205UGszL29ZTjFjYlRsemhhLzJqekc2UC9IYy9hY081dUwwci9ZckFtMyttUmZ0Ty9qcFViSmtJVXo5UjNnWUVib0pUeE10T2MrK00zNld3aEluaXd6Y2kzNFZ6Z05nMzRWemdOZzM0VUlzMlhsbU1rcFdMazBwei9JWUpjU0hNeVVkR0ppcHlTRHBRRHJGYzREWU4rRmM0RFlOK0ZPTXVUZ3B0eEpTb1pGR2cvTERKM1VXbmltVTVKQjZWSFQzZnJnM1FXazNRMnJKRC9xTEh2dnYyM21sWWpqYWdwS2hxSXFQTmF0ZFlzdFBzcjFpbllVa2NCZWhRMG9WcUlvdHltN3RFOFcrbjBGLzUwYjBma0wrbUNmOEcvN2FkNkF5Z3RSUWVNa3FIQkh3NlRUTU9LbkZaYUZ1czlacCtVU01zUmlNcDZWNnZHaXBSdW81eVQ1ZzQxM0lMdkxORDl3NjZia3hYVXZNTEYwcVRTbW5tMHV0cTBvV0xnMFZDS3FPVC9CY0k3cTB5dHI5cTB5dHI5cTB5dHI5cThzaUYvSzRwVHhpN2o5TURzNlNYOHM1YStJdXd6QzNSMVZwbGJYN1ZwbGJYN1ZwbGJYN1VGZVJtUW9meDFsWGRvcEtHMEpiUW5NRXBGZ0tjbFRIUXl5aldkZlVLeXlydHhtOHpMWHNqcCtQbXNlRTlaQjlObGVkQ3ZsUVRQYlhBZDFtMk9qdXoxZHZkU0llb3ZBR3VjSXUyVFhPRVhiSnJuQ0x0azF6aEYyeWE1d2k3Wk5jNFJkc211Y0l1MlRYT0VYYkpybkNMdGsxZDNkU0lPb09oUjdCUlR1Y3l1YTdxV3ZnSThheTA1N0h0NkxZeklSOEIvTTcvOFFBS0JBQkFBRUJCUWdEQVFFQUFBQUFBQUFBQVJFQUlURkJVV0VRY1lHUm9jSHc4U0F3MGJGdy85b0FDQUVCQUFFL0lmOEFUWWpvNGFEVE0wT01VWTYzdkV0QlpHK2FCRnVEK2hYcTlHNUVDSE5zdTVhQk5QVjY5WHIxZXZWNjlYcGM1WWYyeW1aTzBSWjFUK2lnWjRUZ2hPRG8vVVRCdTZOL04vWEEzMGE0MFNPUVZlcXJBZDIvU29NSGd1ck9teEdFaG5wQ0F1VzM0VVNMcWhsaE1TUGdSbzBicHRzdDNPNlhhYW9iaVZDRUpNaWVZMERFMDNobTBIVTR4ODlkcVhKQlJtRVNEYml1cXkxYnBpd01MdUg5WEFHbDNPVzdjc3Y2NC9aUndWc29TdU9NK1lxZnVlUWZORkNxSnZ3dlU2TFQrMjcrQmhQblprSDNPdzlaOE5oWmVoYVluSkhEYkE1b1BCWG5QeXZPZmxFMkRHOHhGa2FiSG1SR0lHc2pNYTg1K1Y1ejhxL1VQRmdsdzAycE5rWmZKM3o1Tm5IdklDZm1GQjNXNjM3YkRhUE01WWRJMitXeSt0UUZiSnROMXRzV2JjeDZmblBBcFhOT29ManNUQkRCdUJFY1F1ZTBvWUlHRnRvVUoyckJMTWlMUWRobkFwWU1sYWpldTFDaGlGZ1hrSVN6THRTZ0pka3JHN1l3d2c0WjBIek5BdlJpSkhuU2hDQzI2Ny9SR3NjdVhZYzBmcGpUbExNZGh2d2RWdjJVY0lOQnJDY1QrQTR4VmoxbE41am1LMjFhdEVXTWRCZTBLZncyUWxYNkhJT2hlRExSZGJza25EcUt4L0hTaUo5Qlp0UnEweTh4UE5JY0N2U3FlbFU5S29iUU5oSUcreUd6RGRmN0FFR2dWNlZUMHFucFZNTklFanVjU2dERkRnWkFVU1dyYnhZQml1VkxRbG52RWFzZUJoOVMrWVo1aDV0U0dzRGRGTHhzT1hHalU1L0JGbXZQdTllZmQ2OCs3MTU5M3J6N3ZYbjNldlB1OWVmZDY4KzcweWluNjRMV0J1UVIxdHRib045U1U2VkdXQnZ2L3dCTy85b0FEQU1CQUFJQUF3QUFBQkQ3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3NzZvTWpnNHh2UDM3NzZtcHp5eXZ6ZXByNzc3M2o1VC96NWUvejc3NjRwdjhBdnEvNklHKysrK3ZjL3dEL0FQOEF0ZjhBdnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2di94QUFlRVFFQUFnRUZBUUVBQUFBQUFBQUFBQUFCQUJFeEVDQWhVV0ZCVVAvYUFBZ0JBd0VCUHhEOWJNZEJxek1FVU16MmxuMkJoRVJwMkJiVVdDWm5oTEJ4QXB4UEtJbVpRMUQ5MmNSRHhyQVdvQXQwaXdoc2JvRFRIcnBBUmpDaldobTV0R29Nekw5Uy9VdjFMOVMvVVhMOWovL0VBQ2dSQVFBQkFRVUlBd0VCQUFBQUFBQUFBQUVBRVNGQllYSGhJREZSZ1pHaHNkSEI4UEZRRVAvYUFBZ0JBZ0VCUHhEK3NiMzE5dU5ZRG83dFBSRlUwRTg1enZrb2RWdm1ON2U0K0t0SlUrM3c3ekorR0t6VmJHR1JZdFZxVy9URmdZcUJkUDNJQzlVYUZZWFFWRnVaUDFJVW8wY0lYTk45aVk1UURteWxIaCtPbXczQkhpMlhBU3pPeDhmNHUxN2pGSGtGYkY5UitnSVZ0NUZ3OForNHdwZzFHNnZ5RXZCQk9iWkVVYmhlVFlRU2pOeDJxcTRZWm5lVVZkZUpmeXVuMUdzclExQ0Ztc3FGVVVXWm5xZlVhd0JVTGtlNE1KUzRMYmZsalp5Y09CeTg3TDBLamN4cXF3Ynp2YjNtSzZhekZkTlppdW1zeFhUV0ZTMTlDVzNuRzEwNWYyUC94QUFtRUFFQUFRTURCQU1BQXdFQUFBQUFBQUFCRVFBaE1SQkJZU0JSY1lFd3dmQndrYUhSLzlvQUNBRUJBQUUvRVA1TnZjVTRaa2k1K0F0S1EwSHJCWjdxZWVKdm1qaXRBTmVncjlOOVV6R01BanNzYVNHa3hCNk5mcHZxdjAzMVg2YjZyOU45VittK3FQTVVKci9TaXg4K25vZzRvcW1CUGJrc0RHTnNiS1NFL0VTMHhUSEEyRmtTdWdFSVFTV1hoY0FzRldWZlRSMkN0MUZoSzdGVEp0QXBlSFNEQ3pKM2Z1aE1FVEF2SFEwT0xtOWxvMWdESmtlaGd3WU5EK3hFK1dEbEE3MGJwNTdvY0lrbTVrcHQzZnRyQ01JSVJCRVFhUDBLVXdYV1d1a09Ja3ZENEhGZHdkUGdsTDFqQXVKVitZK0NZTEJVL2l3T0FWMnhaZ01oREFNWVBqMUJ0SWdZbHZCS1cveU5GSkJHMnBzbTFEQTlnb3F3aDJHT0FZVDBrSlpHbmlrSncxQjJKd1pCdlJpYmVoQWc3aUoxbHRpa2tpTDhnamthTUJGUS93Qm5md2MrN3JkUGFZc0pKL3ZYUE5sZ2Q4QmhhN1I5c1JKM1ZKSEt4R3VlWkZiMWRERVpzSzJyTHowWkNpbzJrbTc4ZWhDVDRFU3QrK3ZLcUpON3YrazZCTEpUZE9IV2ZoOXZ4M3NiUldlNDlhTk9FUWgrZHVzYU5TMEVJL1FPUm95SVNsM24yaFhkNHVvR0h5cUFRR3VUSmFGR3phN1laTGFZMG1XZnRkdzBsMTF6QmJXVEp2MURzc25Da3BKRWRTSUNKYVdTNDRmSFF5citHVEVudE05OWVNNWRERGNnSDFReEVTNUtDYjJ1Snp1Rk1xU0RTOFNuQ0x3aWxsVEFiQ3JzbzdQTmh5UXZ4dEZCS0JRaG5zTGVHM0pDOVp6OElWM2RCTEtlN1lDQ3ByTFJhdkZtOTNrVEtVZ1hNa0psVjNWWitCKzZzVEZZRFlGYldEZEZBYkFwTUc0bVFiS0JFUkJLNEZudWlFaWVTbUFGZEs4SjRRSFF6WnN6TlZ5eS9CY3NiNkVtbUNQSjhKTWkrWjZHYk5uUE0wK3hjejJGRFVLQmRnQUE0S2thQ2ZPd0M4YUFTdFhxWTZTdDRiTVlveEFTQitKOWd3VEY1aUlXbUF0TVNWRFlvS0ozQ3VkbUozWm9FZUpnYnlZZXo0di9BUDhBL3dEL0FQOEEvd0QvQVBnZ1JMNnhRZWlvYjBSVi9CYjhqc29BM2JFbU1qWXdKVXFDVmorVHYvL1oifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiTk9UX0ZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDQtMTYifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTA0LTE2In0seyJhYWd1aWQiOiI5ZGRkMTgxNy1hZjVhLTQ2NzItYTJiOS0zZTNkZDk1MDAwYTkiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjlkZGQxODE3LWFmNWEtNDY3Mi1hMmI5LTNlM2RkOTUwMDBhOSIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJXaW5kb3dzIEhlbGxvIFZCUyBIYXJkd2FyZSBBdXRoZW50aWNhdG9yIn0sImRlc2NyaXB0aW9uIjoiV2luZG93cyBIZWxsbyBWQlMgSGFyZHdhcmUgQXV0aGVudGljYXRvciIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxOTA0MiwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInJzYXNzYV9wa2NzdjE1X3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJhdHRjYSIsImJhc2ljX3N1cnJvZ2F0ZSJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZXllcHJpbnRfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmYWNlcHJpbnRfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwidGVlIl0sImlzS2V5UmVzdHJpY3RlZCI6ZmFsc2UsIm1hdGNoZXJQcm90ZWN0aW9uIjpbInRlZSJdLCJhdHRhY2htZW50SGludCI6WyJpbnRlcm5hbCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRjlUQ0NBOTJnQXdJQkFnSVFYYll3VGd5L0o3OUp1TWhwVUI1ZHl6QU5CZ2txaGtpRzl3MEJBUXNGQURDQmpERUxNQWtHQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdUQ2xkaGMyaHBibWQwYjI0eEVEQU9CZ05WQkFjVEIxSmxaRzF2Ym1ReEhqQWNCZ05WQkFvVEZVMXBZM0p2YzI5bWRDQkRiM0p3YjNKaGRHbHZiakUyTURRR0ExVUVBeE10VFdsamNtOXpiMlowSUZSUVRTQlNiMjkwSUVObGNuUnBabWxqWVhSbElFRjFkR2h2Y21sMGVTQXlNREUwTUI0WERURTBNVEl4TURJeE16RXhPVm9YRFRNNU1USXhNREl4TXpreU9Gb3dnWXd4Q3pBSkJnTlZCQVlUQWxWVE1STXdFUVlEVlFRSUV3cFhZWE5vYVc1bmRHOXVNUkF3RGdZRFZRUUhFd2RTWldSdGIyNWtNUjR3SEFZRFZRUUtFeFZOYVdOeWIzTnZablFnUTI5eWNHOXlZWFJwYjI0eE5qQTBCZ05WQkFNVExVMXBZM0p2YzI5bWRDQlVVRTBnVW05dmRDQkRaWEowYVdacFkyRjBaU0JCZFhSb2IzSnBkSGtnTWpBeE5EQ0NBaUl3RFFZSktvWklodmNOQVFFQkJRQURnZ0lQQURDQ0Fnb0NnZ0lCQUorbitibkt0L0pISVJDL29JL3hna2dzWWRQelAwZ3B2ZHVEQTJHYlJ0dGgrTDRXVXlvWktHQnc3dXo1YmpqUDhBcWw0WUV4eWpSM0VaUTRMcW5aQ2hNcG9Db2ZiZURSNE1qQ0UxVEd3V2doR3BTMG1NM0d0V0Q5WGlNRTRyRTJLMFZXM3BkTjBDTHprWWJ2WmJzMndRVEZmRTYyeU5RaURqeUhGV0FaNEJRSDRlV2E4d3JETVV4SUFuZVVDcFU2ekN3TStsNlFoNG9oWDA2M0JIelhsVFNUYzFmRHNpUGFLdU1NaldqSzl2cDVVSEZQYStkTUFXcjZPbGpRWlBGSWczYVo0Y1VmelM5eStuNzdIczFOWFBCbjZFNERiNjc5ejREVGhJWHlvS2VaVHYxYWFXT1dsL2V4c0RMR3QybVRNVHl5a1ZWOHVEMWVSallyaUZwbW9SRHdKS0FFTU9mYVVSYXJ6cDdoa2E5VE9FbEd5RDJnT1Y0RnNjcjJNeEFZQ3l3TG1PTHpBNFZEU1lMdUtBaFBTcDd5YXdFVDMwQXZZMUhSZk13QnhldFNxV1AyK3laUk5ZSmxIcG9yNVFUdVJEZ3pSK1plaithV3g2cldOWXg0M2tMdGhvemVWSjNRQ3NENWlFSS9PWmxtV241V1lmN084TEIvMUE3c2NyWXY0NEZEOGNrM1oraHhYcGtrbEFzakpNc0haYTltQnFoK1ZSMUFpY1g0dVpHOG0xNng2NVpVMnVVcEJhM3JuOENUTm13MTdaSE9pdVNXSnRTOStQclpWQThsamdmNFFnQTFnNk5QT0VpTEcyZm44R20rcjVBays5dHF2NzJLRGQyRlBCSjdYeDRzdFlqL1dqTlB0RVVoVzRyY0xLM2t0TGZjeTZlYTdSb2N3NXk1QWdNQkFBR2pVVEJQTUFzR0ExVWREd1FFQXdJQmhqQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01CMEdBMVVkRGdRV0JCUjZqQXJPTDBoaUYrS1UwYTVWd1ZMc2NYU2tWakFRQmdrckJnRUVBWUkzRlFFRUF3SUJBREFOQmdrcWhraUc5dzBCQVFzRkFBT0NBZ0VBVzRpb28xK0o5VldDMFVudFNCWGNYUm0xZVBUVmFtdHN4VnkvR3BQNEVtSmQzVWI1M0p6TkJmWWRnZlVMNTFDcHBTM1pZNkJvYWdCK0Rxb0EyR2JTTCs3c0ZHSEJsNWthNkZOZWxyd3NINlZWdzR4Vi84a2xJam1xT3lmYXRQWXN6MHNVZFpldityZWVpR3BLVm9Ycks2QkRuVVUyNy9tZ1B0ZW01WUtXdkhCL3Nvb2ZVckxLelpWM1dmR2R4OXpCcjhWMHhXNnZPM0NLYXFrcVU5eTZFc1F3MzRuN2VKQ2JFVlZROFZkRmQ5aVYxcG1Yd2FCQWZCd2t2aVBUS0VQOUNtK3piRklPTHIzVjNDTDloSmorZ2tUVXVYV2xKSjZ3VlhFRzVpNHJJYkxBVjU5VXJXNExvblArc2VxdldNSllVRnh1L25pRjBSM2ZTR00rTlUxMUR0QlZraFJadDF1MGtGaFpxakR6MWRXeWZUL043SGtlM1dzRHFVRnNCaSs4U0V3OTByV3gyYVVrTHZLbzgzb1U0TXg0bmErMkkzbDlGMmEyVk5HazRLN2wzYTAwZzUxbWlQaXEwRGEwanF3MzBQYUxsdVRNVEdZNStSblpWaDUwSkQ2bmsrRWEzd1JrVThhaVlGbnBJeGZLQlo3MndobVlZYS9lZ2o5SUtlcXBSMHZ1TGViYlUwZkpCZjg4MEsxaldEM1o1U0Z5SlhvMDU3TXYwT1B3NW10dHl0RTU4NVpJeTVKc2FSWGxzT29XR1JYRTNrVVQvTUtSMVVvQWdSNTRjOEJzaCs5RHEyd3FJSzltUm4xNXp2QkRleUhHNitjenVyTG9wemlPVWVXb2t4Wk4xc3lyRWRLbGhGb1BZYXZtNnQrUHpJY3BkeFp3SEErVjNqTEpQZkk9Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUVnQUFBQklDQVlBQUFCVjdiTkhBQUFDa1VsRVFWUjQydXlhaTNHRE1BeUdReWVnR3pBQ25hQ01rQkhvQmhraG5TQWowQTJTRGFBVDBFNlFiRUEzY09YVzZYRXBCdG5JbU12OXV0T2xseGpGL3FLSExUZFJTbTBnZG5rQUFnQUNJQUFDSUFBQ0lBQUNJQWdBQVJBQUFSQUFBUkFBQVJCRUFGQ1NKSU5La3BMdVNUdFNaYlF6NzZXMjV6aEtrcEZXUGJ0YXo2UTc1dlB1b2x1dVBtcXhsWksyeWk3NnM5UnpuamxwTjJLN0NyRldhVUFITlMwSFQwQXR3M1lwRFNqeGJkb1B1YXppRzN1azU3OWN2SWRlV3NiUUQ3TDdOQVlvV3BLbUx5OGNodWVPNXJlQjdLS0tyUW5RSmREWW45QUpaSGM1UUJUN2VuSU5ZMmhqeHJxSXRzdkpXU2R4RnhLdVlsT2xXSm1FNnpQUGNzSnVON1dGaUY3bWU1RE9Bd3M0T3laeUc2VE9zci9LUXppRGFKbS9tY3kyVjFWMCtUMEplWHhxcWxyV0M5bUdHeTNPNnd3RmFJMFNkUitFTWc5QUVBQUNJQUJ5cVZpWmIrL3ByZ0ZkTjZxYjMwNmozbFRXczBCSjc2UWp3MGt0TyszYWQ2MFBRaE1yZk05WXdxSzdsVVBlNGorL09SNDBjRGFxSmVKK3hvODBKc1dpaDFXVEJBY2I4eXNLcmIrVGZvd1FLeTN2NTV3YkJrazQ5RkpiUXVzcXI0c25hZEw5aEV0WEMzbk8xRzFIRzZVZnhJajVvRG5KbEhQT1ZWQWVyV0dtdllReHdjNzBoaVRoN0JpZHkzLzNaRkU2aXN4ZjhlcE5oVUNsNG41ZnRZcVdLek1QM0lJcXVhRm5xdVhPMHNaMXluL1JXcTY5U3VLNkdkUFhPUmZTejRIUG5rMWJOWE8wK1VaemU1SHFLSW9kTll3bkhWVmNPVWl2TmNTdHhqNENHRlloV0FXZ1hnbXVGNEp6ZE1objZ3RFVtMURwbUZ5Vlk3SXZRcWVUUmRvZDJ2MkY4bE5uL2djcFcrclVzT2k5bUFtRndsU28zUHc5SlEzcCs4YmhnbkFNa1BNNjEzQnhPQlFxYzJGRUI0U21QUVNBQUFpQUFBaUFBQWlBQUFpQUlBQUVRQUFFUUFBRVFQY28zd0lNQURPWGdGaE9UZ2h1QUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIkZJRE9fMl8wIl0sImFhZ3VpZCI6IjlkZGQxODE3YWY1YTQ2NzJhMmI5M2UzZGQ5NTAwMGE5Iiwib3B0aW9ucyI6eyJwbGF0Ijp0cnVlLCJyayI6dHJ1ZSwidXAiOnRydWV9LCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjEwMCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjozMiwidHJhbnNwb3J0cyI6WyJpbnRlcm5hbCJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTI1N31dLCJtaW5QSU5MZW5ndGgiOjQsImZpcm13YXJlVmVyc2lvbiI6MTkwNDJ9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMC0wOC0wNSIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiV2luZG93cyBIZWxsbyBWQlMgSGFyZHdhcmUgQXV0aGVudGljYXRvciIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMTkwNDE4MDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjMuNiIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4xLjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjAtMDgtMDUifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIwLTA4LTA1In0seyJhYWd1aWQiOiJkODUyMmQ5Zi01NzViLTQ4NjYtODhhOS1iYTk5ZmEwMmYzNWIiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6ImQ4NTIyZDlmLTU3NWItNDg2Ni04OGE5LWJhOTlmYTAyZjM1YiIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IEJpbyBTZXJpZXMifSwiZGVzY3JpcHRpb24iOiJZdWJpS2V5IEJpbyBTZXJpZXMgLSBGSURPIEVkaXRpb24iLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI4OTY1LCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH0seyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3IiwiZWQyNTUxOV9lZGRzYV9zaGE1MTJfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIiwiYmFEZXNjIjp7InNlbGZBdHRlc3RlZEZSUiI6MC4wLCJzZWxmQXR0ZXN0ZWRGQVIiOjAuMCwiaUFQQVJUaHJlc2hvbGQiOjAuMCwibWF4VGVtcGxhdGVzIjo1LCJtYXhSZXRyaWVzIjo1LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCIsImJhRGVzYyI6eyJzZWxmQXR0ZXN0ZWRGUlIiOjAuMCwic2VsZkF0dGVzdGVkRkFSIjowLjAsImlBUEFSVGhyZXNob2xkIjowLjAsIm1heFRlbXBsYXRlcyI6NSwibWF4UmV0cmllcyI6NSwiYmxvY2tTbG93ZG93biI6MH19XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURIakNDQWdhZ0F3SUJBZ0lFRzBCVDl6QU5CZ2txaGtpRzl3MEJBUXNGQURBdU1Td3dLZ1lEVlFRREV5TlpkV0pwWTI4Z1ZUSkdJRkp2YjNRZ1EwRWdVMlZ5YVdGc0lEUTFOekl3TURZek1UQWdGdzB4TkRBNE1ERXdNREF3TURCYUdBOHlNRFV3TURrd05EQXdNREF3TUZvd0xqRXNNQ29HQTFVRUF4TWpXWFZpYVdOdklGVXlSaUJTYjI5MElFTkJJRk5sY21saGJDQTBOVGN5TURBMk16RXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFDL2p3WXVoQlZscWFpWVdFTXNyV0Zpc2dKK1B0TTkxZVNycEk0VEs3VTUzbXdDSWF3U0RIeTh2VW1rNU4yS0FqOWFidlQ5TlA1U01TMWhRaTN1c3hvWUdvblhRZ2ZPNlpYeVVBOWErS0FrcWRGbkJubHl1Z1NlQ09lcDhFZFpGZnNhUkZ0TWprd3o1R2N6MlB5NHZJWXZDZE1IUHR3YXowYlZ1em5ldWVJRXo2VG5RakU2M1JkdDJ6YnduZWJ3VEc1WnliZVdTd2J6eStCSjM0WkhjVWhQQVk4OXlKUVh1RTBJek1aRmNFQmJQTlJiV0VDUktnanEvL3FUOW5tRE9GVmxTUkN0MndpcVBTemx1d24rditzdVFFQnNValRHTUVkMjV0S1hYVGtOVzIxd0lXYnhlU3lVb1RYd0x2R1M2eGx3UVNnTnBrMnFYWXdmOGlYZzdWV1pBZ01CQUFHalFqQkFNQjBHQTFVZERnUVdCQlFnSXZ6MGJOR0poamdwVG9rc3lLcFA5eHY5b0RBUEJnTlZIUk1FQ0RBR0FRSC9BZ0VBTUE0R0ExVWREd0VCL3dRRUF3SUJCakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBanZqdU9NRFNhK0pYRkNMeUJLc3ljWHRCVlpzSjRVZTNMYmFFc1BZNE1ZTi9oSVE1Wk01cDdFamZjbk1HNEN0WWtOc2ZOSGMwQWhCTGRxNDVyblQ4N3EvNk8zdlVFdE5NYWZiaFU2a3RoWDdZKzlYRk45TnBtWXhyK2VrVlk1eE94aThoOUpESWdvTVA0VkIxdVMwYXVuTDFJR3FyTm9vTDltbUZuTDJrTFZWZWU2L1ZSNkM1K0tTVENNQ1dwcE11SklaSUkydjlvNGRrb1o4WTdRUmpRbExmWXpkM3FHdEtidzd4YUYxVXNHLzV4VWIvQnR3YjJYMmc0SW5waUIveXQvM0NwUVhwaVdYL0s0bUJ2VUtpR24wNVpzcWVZMWd4NGcweExCcWNVOXBzbXlQeksrVnNndzJqZVJRNUpsS0R5cUUwaGViZkMxdHZGdTBDQ3JKRmN3PT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZkNBWUFBQUNHVnMrTUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFIWVlBQUIyR0FWMmlFNEVBQUFiTlNVUkJWRmhIcFZkN1ROVjFGRC8zZDU5d2VRU0lnUzlBUUFYY0ZMQVFaaTlmcGVWejF0WS9XVFpyNVd4cGM3VzVrbkxhNWpJM1o4NXNyUzJuTTJzanRXd1pTN0lVSDRINHhDbkVReDREQVpGNzRWN3VzODg1djkvbEluQnZWSi9CNFB2OW51LzVudS81bnZNNTU2ZnpBL1F2MEhiL0lyWDNWRktQbzQ1Y25tNGluVUlXWXdMRlJtWlFVdXdqRkcvTjFpUkhoMUVaME5SVlJ1ZHF0MUJkKzJuU0t5Uy9PaHlzMCtsazNlLzNrUTlxdkQ0WlV0YTRWVlNVdVkwZWlweWlUaEFmb2NvT1JWZ0R1dXczcUtSaUFkM3JiY0V0alRqWUlvZjZXYUhzQ216VlBXQ014K2NnaDh0THFXTUthTVdzVWpMcW8yUnRKSVEwb096bWVycFF1NGVzWmdzT05rR3hIN2Qwa2R2VFQxN3M0T01VN1ZJOFpoamdHYU0rQXE5aUVOdThQaWYxdWR6MDdNd3ZLV2Y4R2xWb0NFWTA0UEM1V2RUYVhZRmJSOHZOdkw1KzNLZ2ZiNXhOTXlhOVJhbUppeW5hTWxHVFZ0RmxyNmJhOXUrcHFuRVg0dU11UlJnalNZRWhyTjd1dEZGZTZscWFsN05ma3c1aW1BR0h5blBwYms4Vm1ZMHhzdG5wdGxGQ1ZDWXR6VHVCTjgzUXBNTGpUdGV2ZFB6U1VuSjdlOG1ranhaMzlmWGJLRGZsZFpxYnZVK1RVZ0duQlZGNmZRMmlQSGc0VzE2VVdVd3Z6YmsxNnNNWkUrUG4wcHZ6N0pTZXVBeWVzOGxjcENtYUt1by9wK3FXcjJVY3dJQUhXcnZQMFlFemhYQXRMQWJzc0hocDdpR2FtdnlpalA4cnlxclhVV1g5WG9vd3h5QXVmTkJycDQzUE9CRlhabGtmOE1EUmlxY3B5b3dBd3B1ejJ4K2ZXdnovRHRkZTlzbXN6eWd0Y1I2QzF3YmR6Qmw2T2xxNVdOWVk0b0dhdGhKTXJrVEV4MGpBUlNIQVZzKzVyWWtRTlhiK1FnZlBMc1E2Z1h5SW5zcmVRZm1wbTdSVkZZZkw4Nm4xZmlVT2tZdlNoa1VQeHZidWt6b3k2SzFpaE0xaG8zWHpXNkV2U2ZYQStkcGlXR2FXZCtkb1h6THptR3dLWUZMQ0FzUkFsUEJBaE1sQ0ZYVTd0QlVWUHI4SGdWY0pIV3ErRjAwcGxyK0RNVGRyUDR6dnhZMTFrTk1oeFQrU2VUR2crZDRWNUxRSml0eVVHSk5COFZGWnNqZ1lCWk0vSUkvWENUa2owcXlET3BGMkFWUTE3Q0lqVXAvRG5UMVVrTDVGNWdkaitzUzF3ZzFnRTNnaWdtNjBmQ1h6U25QWGJ5QVBiSVh2K0lEcEUxNlRoYUhJUzlza3lobG1NRTVGM2NmcUFLaHEyQzBFNVBIMWdZYVhhTFBEa1pHMEhESk9uS1dIcDUxSTB6NVNPdXg4ZTFXQXVaemRIUXJUa3A4VG1qWG9JK2xhMHdHWnN6dWJxYk8zaWZRNkEvVzd2VlNZc1YzbVIwSkt3a0tjNFdIaUJrbVI4STNDQ2dJODdvT0w0cXpUNVArUlVKQmVqRU9nQVBLOGhZUHphdE0rZUlUcDJJTzl5VFFtZXJvbVBSeHgxcXhBY3NpbGUvdWJTZUViY1dRR1lFQ2doY0xZMkh5S2pvZ2pIMjVoTXBqcFV2MU91Z2xpNGVoMmVSdzBPMzJiSmpreXVDZ056ZzB2emxZTVNpU3MwdW9vNE1HN2hNT2pDRWFYMXlGRTBuU3ZqQnp1VG5FcEs4Nlo4SW9xRkFJdWJ3OGtnOUFyRWFSRVdTWkkrakg0WGJwNmc5RTlFbkpUM29hUnpETitNVUpCUURIbjU2YThvVW1FQnVzT3hCcy9ONSt0SkViUGtBRkRqOFVHdk9zL0lXdmNTZ2xHQmh2UzcvRlRZZnBXR1lkRFk4ZlBBeFdTQTM1c1RDNHA0K0xtNEFhcUlvUGVRdGZ1Zks2SmgwWmh4bGJzVVhPU21YTmlmRDVaVEFreURvZmJiY2NseG5BOFdOQXF4Q2JSTnlraFh4UXBhRHc2N2ZYVVlic2lHMEtodHYyb2VJdmg4cmhRTVlPY0VBcVhHL2VJK3puZ09jNXl4cjhxODJJQU0xYy9GTEZPcGxxdTVlRlFYck1aekdjVkNqWWJMV0c1STRCVDFldVJybGJ4dE5PdE1pdERERWhMWElJeW5BQXZ1T0VXRTNYM05kQWZ0OTRWZ2FHNDJYSVF0MFpYNlBlQ0UvcVFGZTlySzZIeDdZVTUwS3ZIN2ZXNGZTK3E3S0tCSnhzZ2dCWDVwU0FHaDFqSXJWaDV6UTZ3M1JmYWFoQlhtL2FDYkNaVGpDVUZVVHlXWnFXOXA2Mk1qSlBYVnFPclBnTU80TnY3NEdrZitvd2Z0TlZCRFFuakZKcUhTdzE3cFh2aFdXNUtacWUvUTQ5Ti9VU1RDQVZXb1FYRklIQkhYWGUzRlByVURzdUdEbXRGL2hIS1RIcGVreGhpQU9QSStTSnE2UzZIRjRJOVlXemtCSlRvNDZpVU16V3A4UGlyL1JpZHVMeEtZc1Nrc1Y4dkxsT1F2aEdYMllsUjBPQmhCakMrdS9nRWN2WTBBcEs3WWs0MU54alBTUW5XRkhURjY2VXJqZ2V2QjhDdTVhK2wydllTUlB0dVZEbzczaGhkTVNIblVYN3RUanNWWkd4QWwvV3B0aU9JRVExZ25MMjltWDYvdFIxdG1sa1lqOFc0WCtDU2pXY1VER1kxTnBTL0M3aFNLcWlNTE0vbDJRbVNXWjczRGR6K2dpbzhCQ0VOWVBRNDZxbmt6d1hVYnF2Qmt4alVRc1dmWkZnYnVvM3JBZit3TjdqT085MCt5bng0UGkzTCswbllMMVNjaERVZ0FQNGdQVi83SWQxcSsxSFNobXVHa0lxV1JQZ3l4TUZxUDhIZmpUbmpYd1k1YlFmYkpjdDZPSXpLZ01Ib3RGL0hlMWVnc2F4SFNxRzZ3ZmRtUTV4OE55VEZGcUJjcDJpU293SFIzeWs1KzM2aEY3dlhBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiRklET18yXzAiLCJGSURPXzJfMV9QUkUiLCJGSURPXzJfMSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJsYXJnZUJsb2JLZXkiLCJjcmVkQmxvYiIsIm1pblBpbkxlbmd0aCJdLCJhYWd1aWQiOiJkODUyMmQ5ZjU3NWI0ODY2ODhhOWJhOTlmYTAyZjM1YiIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwidXYiOmZhbHNlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibGFyZ2VCbG9icyI6dHJ1ZSwiYmlvRW5yb2xsIjpmYWxzZSwidXNlclZlcmlmaWNhdGlvbk1nbXRQcmV2aWV3IjpmYWxzZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOmZhbHNlLCJhbHdheXNVdiI6dHJ1ZX0sIm1heE1zZ1NpemUiOjEyMDAsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6OCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoxMjgsInRyYW5zcG9ydHMiOlsidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN30seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTh9XSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5IjoxMDI0LCJtaW5QSU5MZW5ndGgiOjQsImZpcm13YXJlVmVyc2lvbiI6MzI4OTY1LCJtYXhDcmVkQmxvYkxlbmd0aCI6MzIsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjoxLCJwcmVmZXJyZWRQbGF0Zm9ybVV2QXR0ZW1wdHMiOjMsInV2TW9kYWxpdHkiOjIsInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjoyNX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIxLTA4LTA2IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyODk2NCwidXJsIjoid3d3Lnl1Ymljby5jb20iLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ill1YmlLZXkgQmlvIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyMTA4MDYwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMyIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS40In0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIxLTA4LTA2IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyODk2NH1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMS0wOC0xMCJ9LHsiYWFndWlkIjoiMDUwZGQwYmMtZmYyMC00MjY1LThkNWQtMzA1YzRiMjE1MTkyIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiIwNTBkZDBiYy1mZjIwLTQyNjUtOGQ1ZC0zMDVjNGIyMTUxOTIiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiZVRva2VuIEZ1c2lvbiBGSVBTIn0sImRlc2NyaXB0aW9uIjoiZVRva2VuIEZ1c2lvbiBGSVBTIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjUsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfSx7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwiaXNLZXlSZXN0cmljdGVkIjp0cnVlLCJpc0ZyZXNoVXNlclZlcmlmaWNhdGlvblJlcXVpcmVkIjp0cnVlLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURkVENDQWwyZ0F3SUJBZ0lKQUlDVVR2a2d0ajVDTUEwR0NTcUdTSWIzRFFFQkN3VUFNRkV4Q3pBSkJnTlZCQVlUQWtaU01Rd3dDZ1lEVlFRS0RBTkVTVk14Q3pBSkJnTlZCQXNNQWtOVE1TY3dKUVlEVlFRRERCNUhaVzFoYkhSdklFMTFiSFJwUVhCd0lFWkpSRThnVTNWaVkyRWdRMEV3SGhjTk1qQXdOekEzTVRRek56RTRXaGNOTXpBd056QTFNVFF6TnpFNFdqQlJNUXN3Q1FZRFZRUUdFd0pHVWpFTU1Bb0dBMVVFQ2d3RFJFbFRNUXN3Q1FZRFZRUUxEQUpEVXpFbk1DVUdBMVVFQXd3ZVIyVnRZV3gwYnlCTmRXeDBhVUZ3Y0NCR1NVUlBJRk4xWW1OaElFTkJNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXZBS09lcUM1L3AwRDFpc0NZS1FKbFZVT3JCNkk3RExvY3VuRS9SbThkdUdUYnl4UWh0M0NiRlZUdjNOMkxwMmZianhsSSszc09TR2szM0ZUWWtUcXhjZEpJcko3U3NrQmNVU05yZktPYVFULzZLUWNQNENtN1YrNjU1VHErVFd4eXhXUWhEeWd0MTVxb1A3TXVLNmJUOVN3cENqcGZLaGFNU215UWFNb1VjUkFiTHFkekJDYWMwaHpCK1plK2dxSmxuV1Y5VWFTSTJyRnNWdUg0WkUwY1JPK01PcGFMZ00vczI0OG5HR0hwMjJld1NRZmJuUGFCYmI4aXF5QVArY3U1MkdMc1VwS1JKZWJFK1I2K1BNUTlKQ2RXZVFaUjNEa2ZTaWRrdjNtY2I0anExaUl0YStNcUtoUm53cmZYaDkxMUtXTG5ZQWw5RU5DaExYMGM2U2oxUUlEQVFBQm8xQXdUakFkQmdOVkhRNEVGZ1FVV0x2aFJCVVBuOHVMSWY2OCtndi9OWkl3R1NJd0h3WURWUjBqQkJnd0ZvQVVXTHZoUkJVUG44dUxJZjY4K2d2L05aSXdHU0l3REFZRFZSMFRCQVV3QXdFQi96QU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFGTHJEaGFlZ2VLSHhZakgzRVAzdlVCS2huek0yMDZBU3hnZVlDTzJFYzlwT2xZSmFlcUZFK3NVYW1VVi9wd2pEbHFOYVNnRmd5N1R3ZVlrdk9tTW40cVNjc0hxdkozekdPQWlhZndhaDF2VUhmQ2xYUjgrYXhPMmlHT1VGMEpLclo5WVlqYkFhNS80SENsdjdqRlBPZE1XVE9ReW5nb2lIQXMzamt1WWpwQ0xGbEI0Vk9pM2Qxd2pBMXBuVGRCS2tBYjd0OG5UdncrL1hiRnZjUWE3M1ZIN3Nqdm9CcUQzZmRNZlJjdVZxNHFVWnRaVDZjR2FnVEhENjFUdHFoOW9NQ1pYY0RiUjFQR1puTmJxeWNzV1BESUswbnBtSzMvM2xmVjhjK1pzcnk2ZTE3MG1mSk1acDdPOG02Q1N6Ni9WTEsreURKZDc4NDF3cG1lS1RmNkluWkE9PSIsIk1JSUM2VENDQWRHZ0F3SUJBZ0lKQUpiVHlydTFYL0lQTUEwR0NTcUdTSWIzRFFFQkN3VUFNQ014SVRBZkJnTlZCQU1NR0VkbGJXRnNkRzhnVFhWc2RHbEJjSEFnUmtsRVR5QkRRVEFlRncweE9EQTJNVEl4TkRRMU5UQmFGdzB5T0RBMk1Ea3hORFExTlRCYU1DTXhJVEFmQmdOVkJBTU1HRWRsYldGc2RHOGdUWFZzZEdsQmNIQWdSa2xFVHlCRFFUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU1WaktIV3BiRDdUU2xNeG9jalRsNm5JZjd4MzJQbXNROXpHdUxHR3FBMFVRWm9JcTNYTHpMNkxZVXZKNUE1ZzB1eUZHbGxIRWZHQUtyRWFDUThGVnZQUy9VaDBGeWZ6V2hSQXppVFNpampNSUlWampqVXY5bTl2Rm1jWFNjZ0hpZzdPZHo4ODU4VjBrck5IOTlxR20zd2pnYU9lclRXbXQralhDVWZuMDFJa1RQd3hHMkhsZ0VkNDVqTkxTVjdWb29sK0tlOEUya2k0bEVrVGVIemJvdWxSNUdVYnAzbk1pN0U0N1ZNUWEzYk53bnpXQmJzYUJTU1FoTGszbTVIYUtoaHhhNndKREs0N05pTUNrQ2tkSUh1V1NRTFZBZm04NVVBT050RU9Qd2kwT3VLM3FiZTh5S09GR2YwS2hCNU1NZUF5bTdNVi9NNFcwYTQ5b2dQRDlwTUNBd0VBQWFNZ01CNHdEQVlEVlIwVEJBVXdBd0VCL3pBT0JnTlZIUThCQWY4RUJBTUNBb1F3RFFZSktvWklodmNOQVFFTEJRQURnZ0VCQUpXejV4TE1rNVdOWWJBYjZ5T3hFQ0JvWjJXZUIvcWw0VkozTy8zL3ROc3hPWW56TGVXbzU0MHpRaDlyQW1heHo3ZXVtQmxza01xNHlHUFNOWEI5eWNXR0hna2NDZVN6TjJ3djhDSXpEQnMyb0JaalROazY1TEJaRHNzVE9CdE1XLyt1VEZIUWZidU8zSVNMaEkwRFhmUkVpOU5ETTNqZmsxMXhIY3NmaDJSTVYrUWROZndWYVpackNxK291RytFdmt2N0txcStveXUwVkZNL3R6NjhUR2w2eWxoUEZSMXFoOXd0dHBWakFPT0NFUUNMcVAyZFAyOGx3WUJ5Q3FIUXFWSHdidWp2L0xaalpuS1czTFluZFppeFBQU1JDSnNzRER3SnZoL2Y2blR4ZzlaRSsvSmNZcmU1Q2FJOG56VkhhU09Dak5KN0Z6VUxHNjRKaVdPdlE1MD0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBUXdBQUFBZ0NBWUFBQURubFVacUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFFblFBQUJKMEFkNW1IM2dBQUFBWmRFVllkRk52Wm5SM1lYSmxBSEJoYVc1MExtNWxkQ0EwTGpBdU1qSHhJR21WQUFBSzFFbEVRVlI0WHUxZERYQWNaUm0rTk9BZktvZzZXTzBRY3JlWDNPNzFSNDFvSGRTcXFEQU9nMytjWUVYQm9sWFJURW4yMjB0YUtUYzY0bWdCcXpCaUVVVnBCZHFpd3docVNkSVMydXBZU2d2UnRwVFNja2xqV3pIYWdqcFNSZHI0dkx0dmpydmsyN3ZkdmQxTGpuN1B6RE4zdC9kKzcvdCtmOC8rNzhhSzBORGFhcjJxT2RYWm9xV3lIOVIwYTBGY3Q2N1dkSEdUWm9qVkNjUHFTZWpXMW9RdUhzT3kvZUJUc0RtTS81NFpUOWorTFdHSWc3RGZCL3NCY0RQc2Y0WGZQOFgzYjJ1RzFaSFF6VThtVXVLZHlXVEhtNXFhY2kvakhBS0J5aWYwYkJyK0x3YVhJUFlQa01kcWZMOFhkV3BsczFBQTMxL1FqT3c5OEw4UzliOEJYSVIyK25EYzZEb3psc2swc2xua1FNeGtQR1hPOUVKdFZuWUdGNHNVeVZuZDhVVGFlcDhidys2TGFrQmo1aXpkYk5KUzFyeEVXbnlXeGczNkVtUGRXb1BQRGVqZjdlQVRHTXNIYUR6VHVDNmhiajBOL3BYbUFzcnVnczBXTFA4TnVCSmpaSm1XRWxjbDA5bVBKMUptVzB0TDUrdWlIQnVHa1hzbGpYODduaTRFelZuazlBdmtzUW41N0VTZGhyQjhCTXVQak9XUC8vNE9Ic1IvZTdEOFlkVGxmdFJoRmZnZExHOUh1MXdBZnpyNTVqQU9raVFLaHZWYkdCNkMwLy9pKzJpTmVSeDhGZ252UmZ4ZmFpbnpTazdORTBpSVVQYmY0M3dXbU5UTmQ3QnBLRUE3TFpmRkFZOXpwM3laVFNNRGlRVmkvVStTZzVRWUFJZk9tRzJld3NVakEvcmhXN0w0QmVybWo5aDBVb0IyT0IrVFpUVzRCL2s4T3lHL3lDaU9vVzFJWUg2SDhYUHo5TGJjS3ppbFFHaHBNWnZoWnlIR3dHM2c0MkJrODVaOG85MEc4WDBOaVNzMUl2MlFHazhLZFdzenQ0c25JUDhScVI5bURRWERJZFpTYkJvWjBJbDNTMk9YWlhZcEY0OE1VMTR3bksxYmVXNDFwTDNGRVFDSmxQVld0REcyZnV5VnJOUjN0QlRkU2pCOFlySUZveVZ0bm8yT0N6Qmd4RE5CQjZwWEtNSHd4aUQ5Z0szS2M2UGNrdkJHSlJpK01jbUMwWUQ0ZmRLNFhvaDlXL1lUQ1pSZ2VLTnZ3Y2hrR3RHMmUyVytha3NsR0w0eG1ZSkJheGxwVEkra05SUWRtR1Izb1VNSmhqZjZGUXc2Y0NyelUzdENNTERXdVFzZDNSK0F3M0tuQlE1S3luamhqZHhPbm5EaUNFWnVHanJzWVdsTUp0cGlXVUszQm1UL0ZmRXVkaGc2VVBlNkZnejBiUjZmYTZNbW5ZM2tsRHdoYVlqTFVVNmVzMjd0MGd6em03VmdVdTk2RDZma0h4Q2E2MlVWR0NNcThnMDJqUlFuaW1Cb1J2WWlhVHdtMm50Zlc5dkNrN1cwZFlIcy93SjE2M2s2ZU1adVEwVzlDd2JHOUsxc09xV0F2SVUwWDV0aURadE5iU2pCY0dFRWd0SFdkc3ZKOEUybkF1VXhpYnA1aFdNOTJvRGYyeWI4WDBLeDNyRU5GMG93b2dIbTBoSnB2amFWWVBqQ2lTQVlpYlQxZVdrc0ppYkNrL1BtNVU1aWM4cnhRcGxkTVJQcDdIbHNIaHFVWUVRREpSZ2g0c1V1R0hTUkQrcElWK1RKNHhIMUxHOWRqQ0hUaU1sUjRWaUcyRTdIUmJoQUtGQ0NFUTJVWUlTSUY3dGdvSjJ6MGpoTXRIT2VqbDJ3ZVFGWS9sR1pmU25GZkRZUEJVb3dva0hDTUJkTDg3V3BCTU1YS2dxR0lTNXZUcHRuaDBYVSswNVpuQUpERkF6RDZEZ2QvcDZXeG1IR0RmRkZOaCtIMFFiMHdhT3lNbU9FK09VTkkvY1NMbEExNmwwdzBGNjc0N3E0cFJwR2NkcWE3a3VSNVV0RUg0NWdEbXdLaS9EWmo4LzdJRVMzNHJPemVhYVl6V2xVaDNvUmpKb3pSTUdvT0FFTmEwaTJkVEdHZUVwOFRGSm1QRHZZdkdyVXUyQ0VRYnFoa3NPRkJzeWxpMld4YXNUajZOZDEycHNYdjU3VENRWWxHQzRNU1RCYVc2MDNvbzFkYjZxenFWdGZZbk01NkFwQnc5b3hvVndSTVlsR05LMzkxVnlpS2lqQmlFWXdtbFBkTGJKWXRTVGE3cUhpQSt1K29RVERoU0VKQnRwdmhkVC9HSFd4djl6V3hSaTB0UGlFdEh3SnhiVnNYaFdVWUVRakdIUndHdU9oMGdWNWtUT2VNaS9oaFB4RENZWUxReENNczFxdFZnenU4cmV2cHl5UGp3SHdzcFZoL1N1VldqS2RDd1NHRW95b0JBTzVwODMzb3ArZWs4V3NGZEYrd2E4U1ZvTGh3aEFFQTM3V1RQQmJSSFRjQWV4R3ZKVE5IZlFNTmNmNkJzK1A5ZWJueGZxZVBKV1gya0NaekhnZkV4akNHUUlsR05FSkJzRitFSkV1ZHN2aTFvYmlUNXlLZjlTTllPaldaalR5ZmFIUnVkOUFIb3RZcFdBNE54cUpZMUxmVE5UNUsyd2VpNjBmTWlBVUQ0S2pCZmJtajhiNjhzdGoydzdhRDJxaGZVLzB4eTZacnpIUzJxdWxwVE5sK3d5SXVoY01qQlU2NjFRTm0yY3VQb1BEUllUUkJqcGJSMk1BT1Y5SFp6T1E5OC93L2ZZd2lQSHRmamUwYnYyRmsvQ1BlaEdNT3JzT28vTHQ2N28xWERnVnVpRS9Cd0x4anhLeEtPWEcyTTZkdGkzNnc4T1JkbkdQN1RjZ2tGdWRDOGJVdkE2amxraWtPOCtUdGcySU1YU1l6ZnhEQ1lZTHF4QU1MN2V2bzc3dHRuRi8vMG5Za3RnaEVZbHhITHFhekoydGpFcWJzOWl5U1dYbjJ2NERRQWxHL2FPc1lCaldBVGJ6RHlVWUxnd3NHTGxwS0x0VjZwTkpIVlo0WUhMZi9uZkpCV0lDaDJIZFFFWGk2ZXdsTXI4bGRKNUhZdHY3aFJLTStrYzV3VUQ3N0dVei8xQ0M0Y0tBZ3VIcDlHZEtYTVhtRUl4OHUwUWNYUGpZYSsweW1Vd2oydXR4cWU4aW9vNFgydlkrb1FTai9sRmhsK1NQYk9ZZlNqQmNHRUF3NkhvSzdBNlVuY2lvNThHbXBzdGVlQjFENzlCWDVlSWc0ZjNEcDNPcEdPTE1sL2tmeHgyeHpGcmZqOFZYZ2xIL3FMQkxzb1hOL0VNSmhnc0RDRVlpVmY3MmRXYnBKZHc5Kzg2UmlzTjQ5Zzd1aDNWaEY0UEY2UW1KLzFMcTFnSXU0aG1WQkFNVDl1N3g3MHdKZy9UWWZVNmhMSlJnVkVhRlhaSUgyTXcvbEdDNDBLZGd6SjV0bmdLZkI2UyttUGovMEl3WkhTL25JZzVHUnhzaEJnTlNrU2psWWk1UkFQcnVVbG1jWW1KeS9YbkczSEV4SzZEaUZrWkV4QmpZeUNtVVJTWEJRRHVQb0E1Ym8yYlN5TDZkVS9JRTNpcVVuZ1lObTJnRDE3TjArRzhWcCtRZlNqQmM2Rk13NHJwbFNmMFVFVEZOTmk5RnovRE1XRy8raUVRa0hQYm1OOFMyYlp0NCtiaHpqMG41SjNpQmRGczFsL0FFMUwydUJhTldUT3JpQTV5U0p5RHY3OHI4MUp5ZXJ5NldRQW1HQzMwSVJ0T2MzR2xvcDhOU1AyUFV4Vk5sMS9UcjhxMnh2dng2OFBraXNmZ25mbDhmNng5MGZRVWw0bjVHR3ErWXVqaHk1cXp1MTNDUmlsQ0M0WTExS1JqMFdrZ3RGL3dtUlNVWUx2UWhHRjRtR0FhTFlQUHkyRGcwUGRZejlIN3Nwc3lOOVF4VWZDMGlYZnlGUHRvbmkxbE1HcXhjcENLVVlIaGozUWtHeENLcFcrL21kSUpCQ1lZTFBRb0d2WVFhOXVYZjcxbHA2NkpLbEh0OC9Rc1VSKzBYVFh1QUVneHZyQS9Cb0xmcjJRZkhyL0d6bGVtS0tTTVl1bmtIVFN6RWxMNCtzRmFDZ2ZvK0IrN1dqT3puMkxRc25OY0dpRDFVVHViUG9kbkY1cEdBenBnZ3Z1dFdCdXI2SDd0T3VyaVVpNVFGWFNXS010L0hCTjVFYXlYVXIrdzlNY0VwanZHSzR2Zklid1ZkdzhJcGxBV05CWlM1RHZXaE41WG40ZWRvcWQ4b2lGeXgyd2sraXUvMEl1aWw5S3dUVHNrVDRtbHhEdHJ6Um01WGpQVW8ycFhlNkc0OWdqeHZ3K2ZDaE5HaGNmaHdRQzlqYVRMRUc5eG9HRmVXdmlZK1V1U20yUStjb1hkeTZOWWlOT3d5VlBySEdCaDNKb3p1VUNzZVQ1bVhRZkYvamhnL3hPZlhOZDI4Z2pvMGFIM3BMQWxOTkdkdEw1WWk1NXZRZ2JlajQrNmcvOWdzTXFBT0gzSGFTZndFYlhjRHZtZVRodlVwVGU5Nnk0UXpNNzZRbTlZMFo5RnBkUGNtNnZOcHNBdDlzdHhwTyt2WDRFYkUyMG9UQ2NzR1NvbmwrQi9mNldhL1ZjVjUwYVNQeDd0T0RlRUJ4ZzEweHkrZGtvWGdmQWd4RmlEZTE5QU8zME0vckVRTzl5TG1BNGkvQmIrM2wrYm5rUElITjRQclVMKzErRndCMjJ2aG94MWlmMUc4MVhwYnZBMjVaaksrcjJseFIyNGExZDhSUHpFZnV3b1djc0VXaUpNellqK0kzdytWdEtzaEhnSC9BUFpTbnFqVHpmaTh4aDY3dW5VdVBkckEyOE54WXJIL0F6M3RJNGo1K1RPTEFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xIiwiRklET18yXzFfUFJFIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsIm1pblBpbkxlbmd0aCJdLCJhYWd1aWQiOiIwNTBkZDBiY2ZmMjA0MjY1OGQ1ZDMwNWM0YjIxNTE5MiIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOnRydWUsInVwIjp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibm9NY0dhUGVybWlzc2lvbnNXaXRoQ2xpZW50UGluIjpmYWxzZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOnRydWUsImFsd2F5c1V2IjpmYWxzZX0sInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxJZExlbmd0aCI6OTYsInRyYW5zcG9ydHMiOlsidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN31dLCJmb3JjZVBJTkNoYW5nZSI6ZmFsc2UsIm1pblBJTkxlbmd0aCI6NCwiZmlybXdhcmVWZXJzaW9uIjo1LCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6NCwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjEwMH19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTEwLTIzIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjUsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiZVRva2VuIEZ1c2lvbiBGSVBTIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNDEwMjMwMDIiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMC0yMyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjo1fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI0LTExLTI3In0seyJhYWlkIjoiMDAyNCMxNTIyIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWlkIjoiMDAyNCMxNTIyIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkcrREZhY2VLZXlzdG9yZUFuZHJvaWQifSwiZGVzY3JpcHRpb24iOiJHK0QgRmFjZUtleXN0b3JlQW5kcm9pZCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6InVhZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjJ9LHsibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X2RlciJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfZGVyIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmYWNlcHJpbnRfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbInNvZnR3YXJlIl0sImF0dGFjaG1lbnRIaW50IjpbImludGVybmFsIl0sInRjRGlzcGxheSI6WyJhbnkiLCJwcml2aWxlZ2VkX3NvZnR3YXJlIl0sInRjRGlzcGxheUNvbnRlbnRUeXBlIjoiaW1hZ2UvcG5nIiwidGNEaXNwbGF5UE5HQ2hhcmFjdGVyaXN0aWNzIjpbeyJ3aWR0aCI6NTQwLCJoZWlnaHQiOjk2MCwiYml0RGVwdGgiOjE2LCJjb2xvclR5cGUiOjIsImNvbXByZXNzaW9uIjowLCJmaWx0ZXIiOjAsImludGVybGFjZSI6MH1dLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQm1EQ0NBVDBDQkdRZFBSMHdDZ1lJS29aSXpqMEVBd0l3VmpFTE1Ba0dBMVVFQmhNQ1NVNHhDekFKQmdOVkJBZ01BazFJTVEwd0N3WURWUVFIREFSUVZVNUZNUXN3Q1FZRFZRUUtEQUpIUkRFTE1Ba0dBMVVFQ3d3Q1JGTXhFVEFQQmdOVkJBTU1DRUZWVkVoU1QwOVVNQjRYRFRJek1ETXlOREEyTURNd09Wb1hEVFF6TURNeU5EQTJNRE13T1Zvd1ZqRUxNQWtHQTFVRUJoTUNTVTR4Q3pBSkJnTlZCQWdNQWsxSU1RMHdDd1lEVlFRSERBUlFWVTVGTVFzd0NRWURWUVFLREFKSFJERUxNQWtHQTFVRUN3d0NSRk14RVRBUEJnTlZCQU1NQ0VGVlZFaFNUMDlVTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFU0lwSS9kS1lDRFloendEMndTZllBT2Ivbk5haVBjV0YyMXZ4WmsvVGdEME9KdGNEK09QbTY0bndaZEZXU0VZU1c3aU9xbnBtSnlkZThtZ3IvdG5BaXpBS0JnZ3Foa2pPUFFRREFnTkpBREJHQWlFQTNidmhhelFGUHdteVhseEsveENYZmg3ZzFYMUVvYkxDM0wrMkdPUnhwN2dDSVFDZk5FVFgvbTJCZWJSTFhJNExNUDFFUUdQWEZEZjdPazc0VTd4YmlNNFZrQT09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsLzlqLzRBQVFTa1pKUmdBQkFRQUFBUUFCQUFELzJ3QkRBQU1DQWdNQ0FnTURBd01FQXdNRUJRZ0ZCUVFFQlFvSEJ3WUlEQW9NREFzS0N3c05EaElRRFE0UkRnc0xFQllRRVJNVUZSVVZEQThYR0JZVUdCSVVGUlQvMndCREFRTUVCQVVFQlFrRkJRa1VEUXNORkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCVC93Z0FSQ0FESUFNZ0RBU0lBQWhFQkF4RUIvOFFBSEFBQkFBTUFBd0VCQUFBQUFBQUFBQUFBQUFjSUNRUUZCZ0lELzhRQUd3RUJBQUlEQVFFQUFBQUFBQUFBQUFBQUFBRURBZ1VHQkFmLzJnQU1Bd0VBQWhBREVBQUFBYXlqNkY1d0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFZ2QzZURUNXhMSjM2eEZvYzVsOGxHUFNYS3N6TkRNMDlOVmROKzhQOFpkTEtCSHBpZSt2aFR1b2ZOWE5Bdm0rTXlVbVJuMWRRWmdBSE00Y3cxTGljUDFWTGVRdWpUekoyZEpNMzM1cGhhYVVqZWFiS1VSdmRWN1NaMWRUUzZTdUZrd1EvYkhyNzY1dDJGMW1kazg3TlBxRStTWXlIUjFnQUxCMThsdnlUZWpQWFFxbXVnc2dZZFZWcDF5YUhmWExXM3ZVUWsycGFJcWQ1TXJZcUlQZmpkTE5tVFl5MitDVG94c2I2SXR0U3U2bEE5QlpIQTZxb0FCeU9PTkhQMnBQZW5qcnMvOEF4bW5jWWJMQ2lhNnoweFNtYVp0OUhSTWxVUnZkRitxem9ZdXMzbGRLVjF1NmlhbTN0N1BydEpuMEdlbnUvQTlEV0d4eEFBQWV2OGd4WEtrL09acWM5Sm1iS2xwTXpaR2t6TmthVE0yUnBOd002RXJoMWo4dzJPSWV5QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUC84UUFLQkFBQVFNREF3UUJCUUVBQUFBQUFBQUFCUUFFQmdJREJ4VVhJQUVRRXpZUkVoWXdOSEExLzlvQUNBRUJBQUVGQXY2YkdJU1JsTlliRmdVWlMzRk1tbFBndEtXMmJmU0xyRTFQU3VXK0MwdkJhWGd0THdXbDRMU2NpR0x5azFpZ09ScGtzUUl4ZTkrR0FRbXFVUEc3ZTAwc1BuN1lhM2U1ZEJ0cTk1eGFPWllIRkF5eEo3Y3BCa3hoSGkyODR0YnppMXZPTFRITFFKM1cxZDJIMWg2eXNFV3M1aDF5S0VPYlJyY2ZPZ1lpeUJGU1dRdDR5S1BTRjdJM3ZERW50eXlmN3R3amNvZlJoNENOTjVBTWxBSzNJd2x5M1ZadWNzVk1PajJYTExSbXA5SSsxR0pqMWRPMGg1YlNIbEFvQ1ZqcDlUWEhoWTlKZHBEeTJrUEp6aXc0MGJkc09tYW01ZFpIWWRCOHc1WVkrTmVVNCtycEx1emI5Ym1lL3dBUHRqWDZ2dlZaZitQdXZsaTRoMFlTOVpkQ1ZNejNhbkpzam9wM1BraTNQa2l4NU5UQjZSS2RUbzJGbEc1OGtXNThrVi9KRWhkV08ySEFsVjRnc2hrT2hLWDhyRit0cmZqUnkxSXd4NEcya1F5U1JSL0YzWERFbnR5eWY3dHdpc05mU2x5SUZOd2crWVNHaU5BNnF1dGRYT0VURzdFMzdCKzNLTkw3ZTA2dFBjWHg5NVh0Q0NXMElKYlFna0JnQXVPUDBheDBKUEV0b1FTMmhCTGFFRW1PTTQreHJ0V3FMRnNvVmFobVV4bGw2V0V2d3g2VWtJemZDNWVHUEtXOHFET3FkZEdyWFJxMTBhdGRHclhScTEwYXRkR3JYUnExMGFuTXRDdEtUZVlCN1drOUpIOGtjLzAzLzhRQUhSRUFBZ0lDQXdFQUFBQUFBQUFBQUFBQUFBRVJFZ0lRSUNFeFVQL2FBQWdCQXdFQlB3SDZ5eGs2UktGN3FVU2g0enlmUzFERW1aRVBXTE11QzlNdFdSWWJnc2h1UmVtWG5GT1NwVml4WTFKVmxXSlFOenlzV0xGaXhZYm43SC8veEFBdUVRQUJBd0VGQmdVRkFRQUFBQUFBQUFBQ0FBRURCQVVSRlNGU0VoUWdNVUZSRXlJeVlZRVFKRkJ4OERQLzJnQUlBUUlCQVQ4Qi9MVmxkNFBrajVyN2lwenpkUjBsUXhzN2lxci9BQVA5S09NNVgyUXpXNTFPbGJyVWpuc3VvSytXRjdqelpSbU1nc1k4dUNVL0NqYyt5cFl0Nm11TDl1aEZoYTRWdlVHdGxVMU1KUWt6RXJPa0dPVjNON3NsdmNHdGtFb1MraDcxYUZNeGc4cmMyVmxTdmU4WHp3Vlk3VUJzeXNzMkdaMmZyOU1MbTd0L2ZDa3M2V01YTjNiSlFRRlVGc0FzTG03dC9mQ29hWTZablkrcXF6WUlDZDFaWTN6WCszRFZVNVVzbTBQTG9vYlVHNjZWbGljSHVwN1Foa2lJRzZxaG5DbmtjajdMRTRQZFBha0hTOVZOVWRXVjNUc3FLbTNlUHpjMzRTRmpiWkpIWmNSWmk5eXdrZGF3a2Rhd2tkYXdrZGF3a05TaHBJb1BTMmY1ai8vRUFFTVFBQUVEQWdBSEN3b0VCUVVBQUFBQUFBRUNBd1FBRVJBU0V5RXhRWk1GSUNJak16VlJZWkdoMFJRd01qUlNZbkdCd2VGQ2M3R3lVM0NTcy9CVWNuU0N3di9hQUFnQkFRQUdQd0wrWnQyRVpLTUR3cERuby9McG9GOXM3b1BlMDk2UDlOV1lpTU1qb1EyQlhKcDdLM1dJUWtIeVZ6Vjd1QUFnRVpCZW41VnlhZXl1VFQyVnlhZXl1VFQyVnlhZXlyUHdvN3c5OW9HbEtpaFc1NzNTM25SL1NmcFZwVGVNeW84Qjl2T2hYbWk5SXVuYzVrOE1qOFo5a1VobGx0TFRTQlpLRWl3RkYrVStpTzBQeHVLdFJTMEpFcjNtMjdEdklyMUtaMko4YW13MjRrcEszMlZOZ3F4YkM0K09BZmtMK21CNkE5RmtPT05XdXBHTGJPTDlQWFhxVXpzVDQxNmxNN0UrTmVwVE94UGpRUzRYNG5XNjNtN3IwbDZPOGg5cFdoYmFyaW5JOGxwTHpMZ3NwQ3E0RjNJTDJkbHc2dmRQWDVobU95TVoxMVlRa2RacVBCWTlGcE5pZmFPczA1TWY0WDRXMjlhMWRGR1JNZHh2WlFQUlFPZ0RlajhoZjB3VC9nMy9BRzA3MFBSWE9MUEtNcTlGWS96WFRNMk1lQXZTazZVbldEVWlFdTJNb1hiVjdLOVJwVGF4aXJTYkVIVWQrMHRRdUk3YW5mcDljSGtRUEV3MGdXOTQ1ejlNSVVCSHNjL0sxb2piV3RFYmEwSmNzTTVISnFUd0YzT0NWTmlobklPWW1ManVXT1pJRmFJMjFyUkcydE92dUNQaU5wSzFXYzFEQy91Y284VklSanBIdmo3ZnBnbkJJc2wwaDRmTVorKysvbTlQazMvb1lOMWNiVGx6aGEvMmp6RzZQL0hjL2FjTzV1TDByL1lyQW0zK21SZnRPL2pwVWJKa0lVejlSM2dZRWJvSlR4TXRPYysrTTM2V3doSW5pd3pjaTM0VnpnTmczNFZ6Z05nMzRVSXMyWGxtTWtwV0xrMHB6L0lZSmNTSE15VWRHSmlweVNEcFFEckZjNERZTitGYzREWU4rRk9NdVRncHR4SlNvWkZHZy9MREozVVduaW1VNUpCNlZIVDNmcmczUVdrM1EyckpEL3FMSHZ2djIzbWxZamphZ3BLaHFJcVBOYXRkWXN0UHNyMWluWVVrY0JlaFEwb1ZxSW90eW03dEU4VytuMEYvNTBiMGZrTCttQ2Y4Ry83YWQ2QXlndFJRZU1rcUhCSHc2VFRNT0tuRlphRnVzOVpwK1VTTXNSaU1wNlY2dkdpcFJ1bzV5VDVnNDEzSUx2TE5EOXc2NmJreFhVdk1MRjBxVFNtbm0wdXRxMG9XTGcwVkNLcU9UL0JjSTdxMHl0cjlxMHl0cjlxMHl0cjlxOHNpRi9LNHBUeGk3ajlNRHM2U1g4czVhK0l1d3pDM1IxVnBsYlg3VnBsYlg3VnBsYlg3VUZlUm1Rb2Z4MWxYZG9wS0cwSmJRbk1FcEZnS2NsVEhReXlqV2RmVUt5eXJ0eG04ekxYc2pwK1Btc2VFOVpCOU5sZWRDdmxRVFBiWEFkMW0yT2p1ejFkdmRTSWVvdkFHdWNJdTJUWE9FWGJKcm5DTHRrMXpoRjJ5YTV3aTdaTmM0UmRzbXVjSXUyVFhPRVhiSnJuQ0x0azFkM2RTSU9vT2hSN0JSVHVjeXVhN3FXdmdJOGF5MDU3SHQ2TFl6SVI4Qi9NNy84UUFLQkFCQUFFQkJRZ0RBUUVBQUFBQUFBQUFBUkVBSVRGQlVXRVFjWUdSb2NIdzhTQXcwYkZ3LzlvQUNBRUJBQUUvSWY4QVRZam80YURUTTBPTVVZNjN2RXRCWkcrYUJGdUQraFhxOUc1RUNITnN1NWFCTlBWNjlYcjFldlY2OVhwYzVZZjJ5bVpPMFJaMVQraWdaNFRnaE9Eby9VVEJ1Nk4vTi9YQTMwYTQwU09RVmVxckFkMi9Tb01IZ3VyT214R0VobnBDQXVXMzRVU0xxaGxoTVNQZ1JvMGJwdHN0M082WGFhb2JpVkNFSk1pZVkwREUwM2htMEhVNHg4OWRxWEpCUm1FU0RiaXVxeTFicGl3TUx1SDlYQUdsM09XN2NzdjY0L1pSd1Zzb1N1T00rWXFmdWVRZk5GQ3FKdnd2VTZMVCsyNytCaFBuWmtIM093OVo4TmhaZWhhWW5KSERiQTVvUEJYblB5dk9mbEUyREc4eEZrYWJIbVJHSUdzak1hODUrVjV6OHEvVVBGZ2x3MDJwTmtaZkozejVObkh2SUNmbUZCM1c2MzdiRGFQTTVZZEkyK1d5K3RRRmJKdE4xdHNXYmN4NmZuUEFwWE5Pb0xqc1RCREJ1QkVjUXVlMG9ZSUdGdG9VSjJyQkxNaUxRZGhuQXBZTWxhamV1MUNoaUZnWGtJU3pMdFNnSmRrckc3WXd3ZzRaMEh6TkF2UmlKSG5TaENDMjY3L1JHc2N1WFljMGZwalRsTE1kaHZ3ZFZ2MlVjSU5CckNjVCtBNHhWajFsTjVqbUsyMWF0RVdNZEJlMEtmdzJRbFg2SElPaGVETFJkYnNrbkRxS3gvSFNpSjlCWnRScTB5OHhQTkljQ3ZTcWVsVTlLb2JRTmhJRyt5R3pEZGY3QUVHZ1Y2VlQwcW5wVk1OSUVqdWNTZ0RGRGdaQVVTV3JieFlCaXVWTFFsbnZFYXNlQmg5UytZWjVoNXRTR3NEZEZMeHNPWEdqVTUvQkZtdlB1OWVmZDY4KzcxNTkzcno3dlhuM2V2UHU5ZWZkNjgrNzB5aW42NExXQnVRUjF0dGJvTjlTVTZWR1dCdnYvd0JPLzlvQURBTUJBQUlBQXdBQUFCRDc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nm9Namc0eHZQMzc3Nm1wenl5dnplcHI3NzczajVUL3o1ZS96Nzc2NHB2OEF2cS82SUcrKysrdmMvd0QvQVA4QXRmOEF2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2L3hBQWVFUUVBQWdFRkFRRUFBQUFBQUFBQUFBQUJBQkV4RUNBaFVXRkJVUC9hQUFnQkF3RUJQeEQ5Yk1kQnF6TUVVTXoybG4yQmhFUnAyQmJVV0NabmhMQnhBcHhQS0ltWlExRDkyY1JEeHJBV29BdDBpd2hzYm9EVEhycEFSakNqV2htNXRHb016TDlTL1V2MUw5Uy9VWEw5ai8vRUFDZ1JBUUFCQVFVSUF3RUJBQUFBQUFBQUFBRUFFU0ZCWVhIaElERlJnWkdoc2RIQjhQRlFFUC9hQUFnQkFnRUJQeEQrc2IzMTl1TllEbzd0UFJGVTBFODV6dmtvZFZ2bU43ZTQrS3RKVSszdzd6SitHS3pWYkdHUll0VnFXL1RGZ1lxQmRQM0lDOVVhRllYUVZGdVpQMUlVbzBjSVhOTjlpWTVRRG15bEhoK09tdzNCSGkyWEFTek94OGY0dTE3akZIa0ZiRjlSK2dJVnQ1Rnc4Wis0d3BnMUc2dnlFdkJCT2JaRVViaGVUWVFTak54MnFxNFlabmVVVmRlSmZ5dW4xR3NyUTFDRm1zcUZVVVdabnFmVWF3QlVMa2U0TUpTNExiZmxqWnljT0J5ODdMMEtqY3hxcXdienZiM21LNmF6RmROWml1bXN4WFRXRlMxOUNXM25HMTA1ZjJQL3hBQW1FQUVBQVFNREJBTUFBd0VBQUFBQUFBQUJFUUFoTVJCQllTQlJjWUV3d2ZCd2thSFIvOW9BQ0FFQkFBRS9FUDVOdmNVNFpraTUrQXRLUTBIckJaN3FlZUp2bWppdEFOZWdyOU45VXpHTUFqc3NhU0dreEI2TmZwdnF2MDMxWDZiNnI5TjlWK20rcVBNVUpyL1NpeDgrbm9nNG9xbUJQYmtzREdOc2JLU0UvRVMweFRIQTJGa1N1Z0VJUVNXWGhjQXNGV1ZmVFIyQ3QxRmhLN0ZUSnRBcGVIU0RDekozZnVoTUVUQXZIUTBPTG05bG8xZ0RKa2VoZ3dZTkQreEUrV0RsQTcwYnA1N29jSWttNWtwdDNmdHJDTUlJUkJFUWFQMEtVd1hXV3VrT0lrdkQ0SEZkd2RQZ2xMMWpBdUpWK1krQ1lMQlUvaXdPQVYyeFpnTWhEQU1ZUGoxQnRJZ1lsdkJLVy95TkZKQkcycHNtMURBOWdvcXdoMkdPQVlUMGtKWkduaWtKdzFCMkp3WkJ2UmliZWhBZzdpSjFsdGlra2lMOGdqa2FNQkZRL3dCbmZ3Yys3cmRQYVlzSkovdlhQTmxnZDhCaGE3UjlzUkozVkpIS3hHdWVaRmIxZERFWnNLMnJMejBaQ2lvMmttNzhlaENUNEVTdCsrdktxSk43ditrNkJMSlRkT0hXZmg5dngzc2JSV2U0OWFOT0VRaCtkdXNhTlMwRUkvUU9Sb3lJU2wzbjJoWGQ0dW9HSHlxQVFHdVRKYUZHemE3WVpMYVkwbVdmdGR3MGwxMXpCYldUSnYxRHNzbkNrcEpFZFNJQ0phV1M0NGZIUXlyK0dURW50TTk5ZU01ZEREY2dIMVF4RVM1S0NiMnVKenVGTXFTRFM4U25DTHdpbGxUQWJDcnNvN1BOaHlRdnh0RkJLQlFobnNMZUczSkM5Wno4SVYzZEJMS2U3WUNDcHJMUmF2Rm05M2tUS1VnWE1rSmxWM1ZaK0IrNnNURllEWUZiV0RkRkFiQXBNRzRtUWJLQkVSQks0Rm51aUVpZVNtQUZkSzhKNFFIUXpac3pOVnl5L0Jjc2I2RW1tQ1BKOEpNaStaNkdiTm5QTTAreGN6MkZEVUtCZGdBQTRLa2FDZk93QzhhQVN0WHFZNlN0NGJNWW94QVNCK0o5Z3dURjVpSVdtQXRNU1ZEWW9LSjNDdWRtSjNab0VlSmdieVllejR2L0FQOEEvd0QvQVA4QS93RC9BUGdnUkw2eFFlaW9iMFJWL0JiOGpzb0EzYkVtTWpZd0pVcUNWaitUdi8vWiJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wNC0xNiJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDQtMTYifSx7ImFhZ3VpZCI6IjUwYTQ1YjBjLTgwZTctZjk0NC1iZjI5LWY1NTJiZmEyZTA0OCIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiNTBhNDViMGMtODBlNy1mOTQ0LWJmMjktZjU1MmJmYTJlMDQ4IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkFDUyBGSURPIEF1dGhlbnRpY2F0b3IifSwiZGVzY3JpcHRpb24iOiJBQ1MgRklETyBBdXRoZW50aWNhdG9yIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEwMDAwLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX0seyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MTAsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6MCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MTAsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6MCwiYmxvY2tTbG93ZG93biI6MH19LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQ1FUQ0NBZWVnQXdJQkFnSVVGLzB3VFBQNkZFcXhwc2liSmlMRnREajRxaHd3Q2dZSUtvWkl6ajBFQXdJd2RURUxNQWtHQTFVRUJoTUNTRXN4RWpBUUJnTlZCQWdNQ1VodmJtY2dTMjl1WnpFU01CQUdBMVVFQnd3SlNHOXVaeUJMYjI1bk1TTXdJUVlEVlFRS0RCcEJaSFpoYm1ObFpDQkRZWEprSUZONWMzUmxiWE1nVEhSa0xqRVpNQmNHQTFVRUF3d1FRVU5USUVaSlJFOGdVbTl2ZENCRFFUQWdGdzB5TWpBMU16QXdPVEl6TXpWYUdBOHlNRFV5TURVeU1qQTVNak16TlZvd2RURUxNQWtHQTFVRUJoTUNTRXN4RWpBUUJnTlZCQWdNQ1VodmJtY2dTMjl1WnpFU01CQUdBMVVFQnd3SlNHOXVaeUJMYjI1bk1TTXdJUVlEVlFRS0RCcEJaSFpoYm1ObFpDQkRZWEprSUZONWMzUmxiWE1nVEhSa0xqRVpNQmNHQTFVRUF3d1FRVU5USUVaSlJFOGdVbTl2ZENCRFFUQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJCd1lnS1Z3akNWNitsdjdnbnBGRVJ6VTJ1TkQ4Z2RFa1BDTmNzL3ZGRHMyc0s0Mkp1eG5oRm5JZ01CMkR5VTBJclhJTGpmLzJYVDBZU1RkMXNQaVRTYWpVekJSTUIwR0ExVWREZ1FXQkJUblFhcnBkU3Q0c2lkN1ZqZk5JTElIcmIyUG9EQWZCZ05WSFNNRUdEQVdnQlRuUWFycGRTdDRzaWQ3VmpmTklMSUhyYjJQb0RBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUFvR0NDcUdTTTQ5QkFNQ0EwZ0FNRVVDSVFEY29YSjNyek5NQS9mWmtoMDhQb0ZyTXg0M0dZTWhaTWZMUHcvM01mSnBHQUlnZWN0S3dtSllNOUo4U1g4eC9hUVY0aUd2S1dvQmZyMVhQVEFNWE9oVkVZRT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBREFBQUFBd0NBWUFBQUJYQXZtSEFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFEc1FBQUE3RUFaVXJEaHNBQUFpY1NVUkJWR2hEMVpqUGk1VlZHTWY5QzlvYjZESm9JUWkxaURCd0k1UWdFVUVsdEJKMFlTQUdFdVJDRkJNeElrbENheUZJUWlhS0JaVW9sWTdRTkpNNjNuR2FjYTZqNDB3MDA0ekJNQk82TEU3bjg5ejdQZk84NXozdnRkcTUrSEx1ZlgrYzgvays1em5QT2ZldStQdXZ2OExqTERQUUdoNE83Zkh4MEdvTnA4OVZ0YTJkbkp5c2FYcDZLbWx1Ymo2MTB2ejhYRmhZV0NocWNXblJ0TFM0RkI0K2ZCZ2VQSHhnNHJNWGpMNlZEaDQ4MkRYUUJVOUdZanZlYmljMXdRdTRCQSs0UHMvT3pqYkNtd0ZuNHI4b0dSQjBKOW9kSmZoMkhYNHFnaUlQN3dVODBLWG9lM0NEZndSNEhuV0ptZXBwb0tOMkRYNTZxcHd5dEFEUHozVWkzd3NlNlA4TDdsVXhrQ3NIUjNuVUJjMW5xUVR1NGIySkV0Uy9rUUpRTnhEVGhiUXB3UU5INitIVkNwcnZ0TXhDRGsrZUx5NVZvWHVaS00yQW5pOGFhTXAzZzQ1cFkyMEdqNEJWdnVmUjk5R1dQRWhKdlZMSDkwTXdzaG5vSFhrQmUzZ3ZENTdETTFndmFOUUxIRlhoRjIyTVpDQ0hSb0I2QVZtQ3o5TkZzdExZTlZDQ3lhK1ZwT2NFVG45K2pFWURPVGlMOTkrQ2w5SUc1WENLZUsvSVYvcm85dXZIS2hwUW1RU3lHSEdYNTdNLy9CQm1QdnNzM051MUs5emJ2RG5jV2JldXByc3Z2SkEwOGVKTFlXYjM3dkQ3b1VOaDRjS0Y4T2ZNVEJHNkJPL0JwWm9CYlZDK1hHcHhvdGxyMThMMC92MEdNdnJFRTJGMHhZb3crdVNUQmpyNjhzdGhkUHYycEYvMnZ4ZHVmZnh4NVJvYWYrNjVNUGIwMDUxM285cXJWNXY1KzZkT21TRVBMZkNTQVFwSHhRRFJWVnVKZUV5Vlg4K2VUZEMwZC9ic0NhMVBQN1VqU0g5L3Y3V3FaRDRJRERJM1R3cE9tK2lQNjlybGh6Ny9QQXp2M2RzeEh3T0JvZWszM3d6M3YvMjJZcUFFVDFzeDROT0dCeERndDU5L1B0eDk0L1V3OGNreGd4dzhjc1FpT2ZMc001WTY5Ni8wZFFhTFVmTXA0TVVZWEtmTjc1SFhqQVVEaHE2Kytxb0Y2dGFxVldFbXpxQ2dsYnEwQklWM2tnR0Iwd3JlOGpvSzZOWTMzNFNibXpaWng3ZlhyQWwzUHZnZ1RBeGR0M3NNVEtlYStnNVUzWVNYRE9tNzNrVkFEcmRhWVhqclZodVBsSnNmR3JMclloTm5NcEJISDBCZXV2WGRkK0hXSzYvWTFKTG5ZeWRPZEUrdUxYdWVUajJJNUFFVmRWM3o5Mmh6MGFjMEV0TnpaUDE2TXdJVDF4Z1hrWXFWR1pBd3dJTzI2Q0k0RVNEZkJ3WUhESno3eWs4R0ZBaXRwTzhlTnIvdnhYaE4rUTdUelpnSnNJd2RPSkJtQUJVTkxJNk5wUVU3L3U2N3RraEpGYnNYQjFHTkoyMm0zM2tubFVoS284b2lmZDZQcGxWYUtaMUxzVjhCczBoL2pRSFNQY2JNd2VsZllteXFtaTN5ano2eTcyUkx4UUFQOHFLVnVGZ1JicDQrSFFaajFNbHhyaWY0S0VCWkMzVG94VFVBUy9jSUNBc2VVN1Y3VVVvUndWc2JLeUJzQXJhc2lQMndSdGl2S2daNG9iMWxpejB3MU5kbnVjNTFIM1hnaVRDUjE4QTNObTRNd3c2SzZxVFByYlZyTy9kaW4zYXRXeXJUUFJhcXJzVm5WQkM4WkNDWmlNOFB2dldXUFpzTUFNOG1SVWZ0a3ljdDhsd1R2RGVCQWFhZnRVRkVXQmQwWnVhN2NHamtxYWZTL3NDMG16RUhhOFVnaXBuR0NDSmRjK0M4dFQwb211ZmRpZ0dtbHR4WEo4dmduZE9rRnFEMDI4eHZkdnhtVVpWU0NtRGdGN3Q1VDU4VUE5Mm41ak11NGg3UGFxMTVDWjZxUTZBbXZ6aGw3OE5aTVVCMFdPVTJxSXU0b3A2TFJjbXVtZElqVXpMUVBVcWpoUWpobjJlOUViVGZ2L3FxQ0M3eEhYaGFNb1IzTDEyNmxCbUlGNGtRRC9sMFVkN244RTNnRXRPTUFmcTJXY1JBL013QjBLOEZpVVVzZU9UQlUvU2pPQkh3L3ZuejU1Y05BRXduMTQ4ZXM1UXd5SWJJODd4Rm5vRXh3VHFJeG0ybmRrQ2FBYUJ6QWNhUjVPZFlwbGtyNmtzcHBHajdWbUpqWmF6S0RHQ0FtbnpqN2JjN0cxVUR2RVRkWjFBcURQOW1jRkRqMkZFeEVNRms0SSs0NEVnVGlUTVcxeW1GN081Nmg3d20ya0F6QS9UcjRaVSttTDk4dVcvWkFHbGlwVEZPRFMrWERQQ2NQays4OWxwbjBQajg1SlVydGhHbHRIQ3BSWVVCdnJRdmtESVlTSDFGRVZVZjhhbXBaUU9jdlJoamZNTUdTNTlLRlFLWVNzTGdiTnVQbWdGK2pIZ1lMOUtpYVgzb3BObDBEd01HbmtVZWVCWThzL3I5dVhQMkhMTmJNUUFZMnorZFRaODVVd0gyMFpmNEpaYWlIald5Y3FYQkU1a0pOc0s0aUhVUGFBQkpFV1lsdjBjcUFzVzdIaHhaMnNSeE1DQjRuaU4xYXdiUTVMWnQxakdiandjdWlmVkNKQUN6VHJzQVdxaDg1NTZrVXl6UDhCMFlxUVlmVTFNbllVdWJhUHppeFlzR3pwaVZHY2pCeUU5ZXBFYVQzL2w5aEdtSklxQUtrNnZwU0tDV2RhQmZiRGs0bFl3RkMveFA4YWNzMEFTQmRqaTJ4UmxBWEtOZTIzRWhUakVMdlBKNzFZa2FYNE9PY0VBelE1TGdVNVhoendPbmUvdjJwZkV3SUhEU2k3TEpid05tVFNZcUJqeTROMEprMlowdDEyUEg5dU9iMzZzTjRCTHd0SUwyRWFmMWFjSVppQlNaMkxuVDloTkxxYU5IN1pESXVCeWpsVzRHSDFNTmVOckdGTXBGQkc4ZS9yRHo2Nmk3OERERGIxYU95QjZlWnkxdDNGRllBanB2MGRVdnoxa0JFRFRDV04vWFgxdkp4QURRRXZBMUE3Mk1LRjBZbEttOGZ1aDlHeXp0b2xGc2hLd1ovWlltSmRpd3ZEaEpFbWxFMU8yRTJuMmZ2a2lYL3VQSERWcmdnT2FSTHhvb1FhdE5jb3VWeUtsakhRdUltdVZyQkpQSWEvOWQ0dG1yTzNhRUh3OGZ0bHdIbUNyRERpdkFsTy94QjR5dVNSejVINWxDVGZCZVdxd3lwQ2dSdlpMSVpTRFJ3T0NnaWVjVkRGcEpzRjZBNjNNeUFLRGFHbmhVTDNCYTVUalNRa1Y1cm52WjMva08xZ3U0UEYyUTRBbEVaUVlFbmtlZUt0UlU0L05LZy9JcWt4OEpKUDB6VjRIdWJsQUczZ01lWVlDMlprRGdncytoVTRYcGl1K29aTUFiRWJSYUQ5NkJYOTZjZXNFcjh2cGNNZkFvZUVtd0F2YzFYdktuU0s4NitITE9HM2dCM3Y2UDZnS3J4UVRYaXdieURVcXBvcWpMZ0lkSEFLck4xVFBmSXpTUkwxV2FFcnhhRm4vTmdBZjNLbTFLT1R6ZmMzQ1U1N3VpVGl2UWtwb2lUeXRWREpUQWdiUElad1lFRDJBVHVJQ2JCSlRhWEwzZ3VWY3prSU1yYlpBSHorSHoxZ3M0dFFhcXlFY2crL2M1U3hzdFRyOUkxUTRNRENab3IwWURBczl6SGxXaTMzT3hsdk1lS0xVbCtlaVQ1NTIybWpwU01zQ0h4MU1Id3o4Y2VIeTdFaFJ6NVFBQUFBQkpSVTVFcmtKZ2dnPT0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xIiwiRklET18yXzFfUFJFIl0sImV4dGVuc2lvbnMiOlsiY3JlZEJsb2IiLCJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwibWluUGluTGVuZ3RoIl0sImFhZ3VpZCI6IjUwYTQ1YjBjODBlN2Y5NDRiZjI5ZjU1MmJmYTJlMDQ4Iiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibm9NY0dhUGVybWlzc2lvbnNXaXRoQ2xpZW50UGluIjpmYWxzZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOnRydWV9LCJtYXhNc2dTaXplIjoyMDQ4LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxLDJdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjIwLCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjEwNCwidHJhbnNwb3J0cyI6WyJ1c2IiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fV0sIm1pblBJTkxlbmd0aCI6NCwiZmlybXdhcmVWZXJzaW9uIjoxMDAwMCwibWF4Q3JlZEJsb2JMZW5ndGgiOjEyOCwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjIwfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjItMTEtMTciLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MTAwMDAsInVybCI6Imh0dHBzOi8vd3d3LmFjcy5jb20uaGsvIiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJBQ1MgRklETyBBdXRoZW50aWNhdG9yIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyMjExMTcwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMi0xMS0xNyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxMDAwMH1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMy0wMS0xOCJ9LHsiYWFndWlkIjoiZjdjNTU4YTAtZjQ2NS0xMWU4LWI1NjgtMDgwMDIwMGM5YTY2IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiJmN2M1NThhMC1mNDY1LTExZTgtYjU2OC0wODAwMjAwYzlhNjYiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiS09OQUkgU2VjcDI1NlIxIEZJRE8yIENvbmZvcm1hbmNlIFRlc3RpbmcgQ1RBUDIgQXV0aGVudGljYXRvciJ9LCJkZXNjcmlwdGlvbiI6IktPTkFJIFNlY3AyNTZSMSBGSURPMiBDb25mb3JtYW5jZSBUZXN0aW5nIENUQVAyIEF1dGhlbnRpY2F0b3IiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MiwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCIsImJhRGVzYyI6eyJzZWxmQXR0ZXN0ZWRGUlIiOjAuMCwic2VsZkF0dGVzdGVkRkFSIjowLjAsImlBUEFSVGhyZXNob2xkIjowLjAsIm1heFRlbXBsYXRlcyI6MSwibWF4UmV0cmllcyI6MSwiYmxvY2tTbG93ZG93biI6MzB9fSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sImlzS2V5UmVzdHJpY3RlZCI6dHJ1ZSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNKRENDQWNtZ0F3SUJBZ0lCQVRBTUJnZ3Foa2pPUFFRREFnVUFNSEV4Q3pBSkJnTlZCQVlUQWt0U01RMHdDd1lEVlFRS0V3UkxiMjVoTVNJd0lBWURWUVFMRXhsQmRYUm9aVzUwYVdOaGRHOXlJRUYwZEdWemRHRjBhVzl1TVM4d0xRWURWUVFERXlaR1NVUlBNaTR3SUVGMWRHaGxiblJwWTJGMGIzSWdVbTl2ZENCRFpYSjBhV1pwWTJGMFpUQWVGdzB3TVRBeE1ERXdNREF3TURCYUZ3MHpNREV5TXpFeU16VTVOVGxhTUhFeEN6QUpCZ05WQkFZVEFrdFNNUTB3Q3dZRFZRUUtFd1JMYjI1aE1TSXdJQVlEVlFRTEV4bEJkWFJvWlc1MGFXTmhkRzl5SUVGMGRHVnpkR0YwYVc5dU1TOHdMUVlEVlFRREV5WkdTVVJQTWk0d0lFRjFkR2hsYm5ScFkyRjBiM0lnVW05dmRDQkRaWEowYVdacFkyRjBaVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCSnU1RUM0amE2bUx2dFBXMnVEdXZ4VWQxSHZEenB1TmhUWEV6Ukh0QjRvZjNCMXdkdmFjcXZLK2REc2p3cCs4UkJodTB0eld4KzFVNE9KYUxQYzI4VitqVURCT01Bd0dBMVVkRXdRRk1BTUJBZjh3SFFZRFZSME9CQllFRk43aUxZMURBT2RvY1dsU3A5am1yL2ZsSFAxeU1COEdBMVVkSXdRWU1CYUFGTjdpTFkxREFPZG9jV2xTcDlqbXIvZmxIUDF5TUF3R0NDcUdTTTQ5QkFNQ0JRQURSd0F3UkFJZ0YvdERxeHRYY0tIQkFxL05CWkQyTkxQekU2MFU1c2tkakVZZmZwR3JOMllDSUcreElyOTVpcDc0L21iaUZrUm56aS9pcGsrUXV1WUMvYUZRZTlwQ0FqbmMiXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBU01BQUFBd0NBWUFBQUJhRlJ5c0FBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFFblFBQUJKMEFkNW1IM2dBQUVHMlNVUkJWSGhlN1gwSGVKeG5sYTdhcUJlWFZFTFl3QTExTHl4a2wyWGhoa0FvQ1FUQ0xydFBsdWZDaGN2ZUpkd0FTOWdzc1BBc2daREVYYlo2Y1M5SlhPTVNKMjZKNDdqM0psdTJ1alRTU0pyUmpFWmxlbEU1OTMzUFA3ODhWbXlORitjK2ErZlJlZlRwTC9QLzMzZStjdDd2blBPVlAwa21hWkp1WWhxT2hhWldtN3kyNjAzWnVIVzdyTjN5cXV6Y2UwQjZCbjFqdjRlSFIyUjRkRVJHY1M0eUVoY202VWFoU1RDYXBKdWFDRFFuejlUS3NoZldTRkY1dGN5dnFKYTVwUlV5cTZoVWloY3RrWE1YNjJRbzloeUJpR0ZraEhkR1lzZEp1bEZvRW93bTZhWW1oMnRBRnE5NFVaNmROVS9CcUxDOFNvcXFGc244cW9VeXU3UmNscTVjSmE3K0FRV2pvWkhoeThCb2FDakNLQ2JwQnFGSk1KcWttNW9PbnpnakM4cXFwTENrUWlxWHJUUzBvcEl5bVZOV0lmTXFxbVRPL0FWUzE5UXNVYUJRT0JvQkJDa2NhUmdlam1vY2szUmowQ1FZVGRKTlRXczN2aUt6aThzVWhOUkVLNjlVcmVqNW9oS1pDekFxS2l1WDQ2ZlBYR2FtWGRLS0puMUdOeEpOZ3RFazNkUzBhZnN1S1ZtNFJJR0ladG1DNmtWU3RteUZ6Q2d1bGZrNG4xZFVMSWVPSFg4YkdFVWlJVDFPMG8xRGsyQTBTVGMxblRoL1VjR0lwdGxNQUJBMW9ubVYxWVptVkwxUU5hUDY1aFkxMHppYVJqT05QcVBSVWNMVEpCamRTRFFKUnBOMFV4T05yV1ZyMTZ0L2lLTm5zNkFkVVNPYVdWNGhzeW9xNVlVMWF3MGd3blBSWVlBUWppWVFUWTZtM1ZpVTVKS295TkNnU0dnQTlkTW5RUmxFQmFPUzBHa01YOE5ndzlCSW1IMk5CbjJKdFQyQ2Y4YUFoVVNqckhpRFJ2Z3pmNDlST0J6VlJoTEdQMzJOVWVBa0VnSlBPSTVFb25vL2lLQ3hvR2NiUnFRQlJCN0NNY1M3dzNocEFQeGZ2Q0NlMWF1bGE4Wk1HWmcxVHdabXpKZmVad3ZGKzhkbkpQQ0hQNHIzOTgrTHQ3eGFodmJ2aytHZURqUk1EL0labG5aRUcyRDh3NGhyQ0tyN1NGUWJ1Si9weGZrM1I4RjRmRERKanpna2dySVRqOEZMZUFSMy9PQVE4YkFNd3VCK2VGVDVEK0ExR2dkNEEzbnk0SmtCUFpjaGxLRzFWU0pIRG92bjlWMFNPWGxTWkxBUDhlTGRjQmpsRUFSUHpEdUlaUlJoNzg1MFdPNVJDUXo3a1ljUjhlS25JSDVUdnZGd0dDbndsekRTNG5OUlpBeXg0b2NBK0FEUHczeURFVjQ5akZKZ1IyTGx6SURveVlkM05LcnBoWkdURU5MUk9tS3hhT0V4djBQaTBwSkZIWU8vSVR6cFJRaXdYR2dpc1lyZkFTeGdGQU9CZ0d4NDVSVXByYTZXK1dWbE1xZW9TSW9ySzJYZDVzMW9mMUVaR3JvOElkWjFBTzlNMG8xRlNhNTdQaWsyeSszU25YYWJuTXVZTG1jLzhra0pQanRicExrQkRabE5iR0lpQ0FYUnVJZGpMWXVWcndpQ0VBNUd0T0VPK2tOeXRyWk9Ocjd5bWhTWFY4bU1PWVV5ZDBHSmxORE9uMThzSlpWVXB5dmx4YlhyeE9zTEdNSk9RTU9maHpFZzZtRlBDTnlNYXNNZkhnWDRkTFdJRkM4Vi84TmZsZ3QzM1NhMW1jblNtWlVrQTVsSjRrNU5rcTZrSkhHbUpVa25qcmJzSkduS1RaSjZYRGZqdWowM1Izbys5VkVKZlBkckltdGVnNFE2a0Y1UWhrTitCUXVmSHhDQk5BRXZsOUdWd0dnRVV0WC96QnlwKzd0dnk4bXZmRTNPZitQYk1ycHFFVEx0a2w0K1lHUkRQRkhrQzhJb29VRVozcnhSdkk4L0tZSDd2eVh0bVhuU25aNGw5cFJVY1NhRFYvRFhScDd6ODZRaE8xZDYvK0poNlgzaVNYRy9zbG9DWFJkUXdPQnFDS0NBUHdXeUdBWERDczFHWWlFRE9CVEs5YUV3ZnNPSkQ1azZWaWUxS1hkSWUwNkJPSkp6eElaMEp3cDJTNVowSktWTGEwcTZYRWl4eVBuOEFtbit5TDNpZk9qeklvOS9EM1ZRS1dLdFIzcDlFUG9ZSUxNcEJQRlBPelB5Z2pZQlVJdWdETmlaS0pGUGh1c2tmOWhvWTV6VTJON1ZMU2ZPbkpXYUN4ZkY3dXBWTmxoWDJ0R0FDT0FteGRmaEpOMFlsTlJYa0lMR2xpVGRDSU1Jb2FSTWFVa3FrTnB2L1MwRXZpYjIyTldKWUVRZ2lxL2NJUXBMakd3dXQyeDc4eTBwaFFvOWo4T3RzVkJZWG1rY0s2dGtObXo5ZWVWbHN1dXR0N1JoTVNZRk5jU3RXbEFJdlZpVWNVYkYzMzVST243MFUybVljcmNjdTNXS3RFTmcyOVBTcENjdFZYckF2eE9CWUVRZzZzS3hDZGNVY0dkU3N2UW5wZUdZcHNMZWlHRE5USmRqR1puUzhlSDdSRmF1UW5LQVg2OFB3bVBJc0dxSWNXUUNVWHlnNVBWLzlwdlNpL2o2VXBMRWptUGJ0S2xpZitKbitDbWdHbFlVUituckVsZmhiRGw4NzBlbExXODYrQU1BNFZrUEF0OVY4RXhQRWdmQXRCdTh1OUxTOFh1eUhBU0kyc0NuRTREUVhIQ1gyUDdsWHlSY2UxckxpWEZEZVRRS2pLd3lxUFppbEQveG5BK09RcnNhVldUQXcwZjJTRFBTZGlDOUtJSUxQRThVT3NDTERVZDNSb3E0OFR6Zk04bzVUVHdXQUZOcXZqU21USlhhajM5S3VrcG1pamdCVE9nMnlKOFQvTkJFVXZ4aGdSSU1jYzdmR0VhRytQLzZpZFdnVlJFanRyLzRhNU11MVpsQjhlQTBTZi8xbEZTTDNyZ2hCMXJETkFnUmprT1orU3E0cHpPbmlUejltOWhqRTlHbENtVTF4elI1UFhwOUlWbjE4a2FaVTFZdXp4Yk9WK0NaWDFVTis3NVM1c0ttbjFsY0luTXF5bkN2VWw0L2VFRDZnajZWSno5NmVZSWNEUk5lai9ML3NGdmNwVVhTL2Q1UGlBM0NmQ0hmb3NKc2g1RFlrSWRPQ0V5M0JZSUQ0V25CZVRPQXFEa0RXdEFVQ0xVbFZmcndiRC95NVFUNGRHVm5hcTlQQUdad1pXWkpEYlNFTXc4OExITDJwRVJEL1VoMVJQd0I2a21YVXp3UU1VU2hTL20vL0tqNEVFOHYwZzJRRDV4ZnlKd3VzbVFGdEN1UGpMeTZSYnJ2L1F5RU9WMzZrcE9sRGhwY004cTdBVHkyUVd0ckFBalZndTg2SEpzQlJ0WjBhSG1wNUM4Vm5ZTUJVTlRxMm5IZWo4N0M4WUcvRW5kSktiaWgrUVhSWjVuemhJVUZrNDlha0lvNS9rR0hWRE5QWUZiQllKR09OMTZUeGx2ZUp5MU1HL0UxcGFWTUdOcFFobzNVMk1CREY4NVp2bDNwcWRLV21peXR5RXNieXI4Wjk2alp0U04vWnovMDU5SzlGTnBTRkZBSmZtaksrV20va1RjRDRmVVFHSTNJS1BtNlRob1pRa3RCMElKQWlJYVJVT3g4S0RLc2RSUVBPanhub0xaa2RIaVRkS05RRXRYd2RnaXBOU2REemtDUUxxS0J1cE1zMG1YSmxOYTc3NGc5TmdHeEFjUXFsUUFVaVE2cklEajdQYkoyNHhhWkF3MW9aa21aenZrb3JGcW9Ea1lHWHZPM09XV2xzbVBmWGhsRXcyUjdqYUpYRCtHY1lFVGZRb0R0YU5nbkF6Ly9oYlNDTjJvUTdSQU1ha0NlbEV4eFFhZ28vRmJlQi8vdEZnZ0k3blVnZEFLY0tIQ3RFUDVXYUlCdEJDdGNzM2UzSjZlTE5TdEhnaWtwY2g3WFBYZytpSHlmbm5LYmhOYXVoQlQzR2dKOUJZb0hJM1QzMHZ6Z2d3b2lEVXdmY1EzazVJb2pMVWNpOTM5SklxV3o1UGhkZHdNTWsyVVV2M1ZCc0MvbUdRRFVqN1RKZXkvdURTWkQwNEMyNFlWQUR5Wm5pQXZuanFRVTVEUEZNRFVSZHg4NmkxNEF3amxjWDd6emRvazg5ZzlJbnI0bkEzVG9lNk9vMHpOREh4TVZJUTJvR0dwNWZ1Ym85Qm5rTjExY1dSblNtcDJzSURKUk1MV2hidkRJdkJHRU92a3VBS2sxdzZLQTZnQnZiZ1JxZUt5WGxwUnA0dmpaejhGS0ozZ1prWDRFZ3BKUndkU2J5Q1g0ZXljY3lLaUMydlAxY3VqZ01kbTM5NUNjT2xralhaMDk0aG1FTnNycUFSRjQ0djFHUnIxTjBvMUdTYzI1NmRLQmh1YTB3RnlEUUxWQlNMb3B6R2hjclRBUkVsTE10Nk9xTVM0cER6MTlnN0p4MjA2Wk1iOVlKNkJ4SWhxSFhoazQ2c0c1SUlXVjFUcExkcy9CZytLQkdjYjNRa1AwY3BpakhMRXc0aEh2ZDM4Q1FjZ1FPL2p6Z0NjMitBNkVucFJjRllCQm1ESGRsblJwU2N1QTZWVWd0cXlwNk1YejhZNUZoWndDVHlCaklGaDE1a0tZY2kxU0EzQ3lwbHJVVjBPdGtML1RiT3EzM0NYQlpTc2dNQURGTWRCNU8rbjlxRS9xUHZkNUFKNUYvTm5UWWNMQWJJSDJWWWQ0bk8rNUJVQUNEYTRnVjJyQmUwYytnQXBnUWkwdEFnM0hud1RRU2s2RlJwVXU3dVJNUEpzQ1VBV1lRaU9obGxTSHZEWWczODdzUEswZmdnSHJwUnZnU3FBbFFEbm56WUYwZTlXL1piaGtvd0R3ZmdPTW9JSUV3U0xMbHM1amhTMnZUZHlmL2JUVUk2NEI4c2c0SmdqZEFFVTdlSE9rWjB0N012Z0RiN2EwWkpqeWhqOHVDSjRkNmVBWFBEbFFqaVBRUXFtWkhybnJGaG40M25kRVhFNHRSeWRxVnVFQW1oSHhrZHJSTytIQjlrTVRXcmgwaFN3b3JaQ0toVXYwT0x1d1NGNWN1MEZjNkJCTnVwSWpleEtVYml4S29tQUxHcHdmUndxNEM0MThBR1pDTnhwVVBjNFRFdXMzVnFmVWpLZ1JFWWllTFZ5Z1E2eXppeXBrZnZraURZVmxBS2FTS3BsUldDcmxpMWZLMWwxdmpRMjNrb2FpYUtMMGQ3Q1JSbzJSTGZuUkQrWEluZE5nQ3REblkyaEJ6dHcwOWZrMDV1UklFNFQyWW5hcW5MMmxRRHJ1K3dzWmVQZ2hjWDdoQzlMNytmdkY5NFVIeFBQQTU2VDd6KzZCTnBVakhSQ2FGZ0l1QUlFOVBrMnJqaFNMdEdhbVNTZE1EVGVFMzRNZW43NnpsbW52azVFOUwybXZTclgrcWczWEh4RDdWNytoWmlLRnV3ZmcwNXlkRGhBQmYrQ3RQY2Vpd09SR1dmWWlEVHJRTzhDM05XczZBR0dLTkFMNGFZSTFRSmd2Z0xjVzhOQ0owTVg0Y0UzTmlGcGZIUVM5QVh5MzRSNUJTZjFOQUllNjZYZUtiSHBaQVVmOXhXR0t1VjgxSVU0eTdzWVY5U1JrSWxaUDBFczJyNVhhK3o0aTNvemJ4RXBBbmlDMEF6UzdvVUcyWmFUSkJhVEp6c3BPTUFRL1hwaVlkWHlHb0FVd3I4VjFEVHN6WEErQ2IxOVNqdmlmbTQ5ZXhpMTlnQjhGSVA1RDlScXdjRGs0L0NsRXpabHIwVGdEbSt2U0dEanZpTE95S3dCU1BUMDlzU2VSMmpqdGFOSm5kR05Sa2cyTmlZTFlCRUd0bjRZZUhNTEp4dTlKblFJQnk0dzlOZ0doUGpscVJxS1BpS2FaYWtRQUlwcGk4MHVycFloZ0ZEdWFZZGVlZzJOTmtiM1dDRWRjQ0VRMCthZ1pSY0xTVkhOV2JCREFGdkJIOEhHbFpxR1I1Nmh3WDV5U0tZT2YvRy9TdmVFbEVXc3pHanlFREdnNE5EeXFJeXNxZUlpTFE5azZURDhNS1RoMVN0dy8vNVhVdk9mREFJSjhjYVZQVnpPT21naWQ0QVE2QjdTYUkxTlM1ZFMwZEpGcGQyZ0RKaUJkVlR0QzZIem9VYkhHd0VOSHd5Q1EvZFF1Y2Q1QXJSTm1UVitxRVg5TG1rVTZQdkZSOFQ3K1BmRS8vMHNaK2NOTUNUejlQTTVuNi9RRDMwK2ZBcEErSk0xWnQ4QWtoVmFGL0RjaTFDUHVyc3hNQ0hpZUJCQ2NDRTFwdVVKTnJ2bC9may9FQXkyQXpQVDVVSDVCQ1F3YjJxYUVVWjRSR0VsUm1Fb0Q2Q3g0RDNuaTBMNi92bEg4KzQ5TUhBNGRrSkVqQnlXOGRaTjRpdWRMOUxlL0ZkK2ozNWFHVysrR1dacXZBd1hVa3RxUjV5NmMyNUh2Ym5SbXJURG4yak96WkcvQnZiQ2pUcUlPZkJMaEZBR3FiMmd1UnQxZlB4Z1Eyemp6MnRTNGVWNjBjUEhZdmYzNzkwc29aUGorekZHMVNib3hLYW1UUG9BSlFxSjVSQnpOWVJXN1BRSGRSNFltR1gxRE04ckt4d0pueExLQnpKaGZKUE9LU21YL2dVTUdnQ0Vhem5oaGxPTG52Sm1vK0JHWnpsY1o2SmIrZTlGelF4QnQwTnk2OHFCTm9OR1BJTkQwYWZ6VjAyaUpFTHdFMUJQcmtSa2w1Y0JQcG50c0VueDZ0aHhOdWd0bVhySU0wRXdEbU5DWlhJdjRPN0x5TlMyT0dza1R2OEg3YmlPLzRJMUtHNmNYU0FUQ1JTMWpOQ0lERHo2aXdraWZGRWU5YU1vUTRPMHB5ZEk0emZCejFlZmNLK2VlK3FVTWRiUXpBdlhzNnV3Y0xVZU9kUmx6cDNUb216MTR1MFBPTEYwbnA5NzNFV2hjVTFXVE82Y0Nud1lBb3A4UDhTT05EdDVMU1JQWnNSWVJSWVd1ZDhQUkZsVVRMUkVSWTNYVWphL2dTTkNsbzV0MTRTT2pxSDhacHBlSFRNZk9xY0c2QjZSanh4NXB2bTJLOHRiQndROGNxVDAxWjJVclFBMm1wQUJNTTZYL20xOUhqQzVWZEhXK0laM3BBRXpOKzNVU28xaFFoamFIZHFjanRRQWd1Z0FLS3hiSm5QSnFXZkVpdE52WWM4eW1VU1NtSzRDWm5waE1iY284eG5kS1Y3bzN2dE15MHpFVzVUSTlJNWpMVWN6bnRkeGp2dGQ0TXJVM3BoV2YzcnRScTBzSVJnU2hSUE9JckRhSGJIcDFoNnJLbkpKUGpZaE82c0pGaXhXSTZLaW0yVllFa05wNzhJajQvR3pjUmh5Y0hLZ3hBNXRDS3BJc2JNalRxaFhTQUhEZzBMTExraXVOQUlzdUNEdDlSSzc3UGlkeTloeWVOWGlhaUNoYXNBV05MaFQxWi9TUlNMK3pWV1RkV3FtNWZScUVDVDA1VEE4ZE1Vck5rUG9zYUdESjZXcHUyRDcyMXdBR0xyUmtZOUFJRGNDQVpCa0FEUjBqQmtZdENHOERJL0RyZU4rSFJFb1hpOWlSNWlnWVladERYUFNsYUFGcU9iQUlSaVJFRFE2bXE0UVFuSU9xVlhSLzhTR1laUm5pemN6UUFZYVdYSmhPdWRDMmNFNHRoTnFkNnhkUGdLZFFiRklqT3c5andtZ2lndDZIdW8xQUthVXBSNVVGZ1R3TXhRS3lTRVVUWjBaZ2xobndtTGlSa2JZV3FYdjBNWUJQbGpSRCsydk96eEVYeW9BbWNGY0IyaERLdHVVVEg1ZWhnVVlqazN3WFlLVDF3cnhmSnpIS2ljQ29FbTJReVVTQXVDd1BvMHpNVERCY0c1bEFRQkFZYjdielBCSmhnVnhPWVRXWjQ5TzZVa2hNNDlPS1A3NmI2SnJBYUtKNVJOU0lDRVN6Q290bDVvSVMxWUNvTG5PaG9xNmF4aldCaUEzbExRQlJJRGFyZW93UU42Y0RzbFVGVlVwQlE4UFMvclhIVkV1aGh1S3daS2dQaHFOSk5IczhjMmFnSVVkMUJDa2hvZUVMWjNRVC85QTJ3aEhPWFdJSTR0SWp2VE9la3E3a1hLbURlZEdUbGl5ZXRHeXBzU1RESEV4VnMrTU10TEJvZVJFZ3g2OEtoL0xPN01kQUpCRVljWnFFNDUvL1NhVFhodlI4NGh1QmZvYTg4blZPNHpRTGcrdW02RDJMQUFCR1lLSXFJRUVBeUtjMG5aWDZEMzlNUjdVR0MzTGtGSGh0QlFnTkpDUHUxQlJwQm1oZWVQK0hrY2NCZFdRemNzNit2cWEyem1mQUEvbmhQTVVRemlsV09EV0FCM1hDRGlPRTRFZndnQi92TURWUzFoVUN5K1I4TFRTaTZSTEl2bE1jeWNZOExuWWE5STlSdTZ6Skx4RDNyZzFHcEpvZUlaQ21PYzZ2a3hqbFJHQzBvTFJNZ2VoUEJhTXJhU3NreWdQRGVBMkY5eTZmM1gwcExlNFVRQTNwMGlKZDQ5MzRPSmplZUxlQWFXYVNUTkNMLy8zZFFra2NrWmtvbUFWR1l2Wk5kd3lQNmlPaWFVYU5DRUMwb0hLaDBSQVFPSEkybzZoRVRiTUZ1TjV6NExCNEFzWmtPSFBCb2hZb0l1TFNBaVlUVkw4UkhtaHBFRnYyKzlWWlN4N29lK21BMFBVREpDNmtaOHZvMmNQcUIrcS94TnBWaVlJVVpvK3ZUQ1BnZENneUNwRWFoUmFCRzU0bXNYLzY4OUtjbkNKT2dKRUxhWEYrRGRQbGFCSkhqQnozZndYQzdZUkF4Z1EwMXVIUjdKZ1lqS0N4cEUwVjM1WTFLc2dEQ0w1aHhJSjNLYzR4R05heXZPVFBNRXhpaW1zRTVlS0VFSEVtZkhoVnRUU2tacW1UbkpNUjZadHF5YlJBMkZPa0JhYXNOU2xicEt2VllBMlIwdVJUU1UxRVJGam1nOG5qVkJuaU1WWldHZ2ZzWmdvTVQ0MHdxblZvbUpkKzVLdGI3RC84am9JUWgvblBvaHc0U3RpZm1xMmczZ0F6c3ZzNW1OVlJhaFdJQUFKSHpjak04ZlhRdFlBUjAyRmcxalRBVnJ5MFdIWmk0dk9jcm1LK0d3b2JuV2w4WUhrSFF3QWE1RzM4L1lpT0VMTUlPV1dGTGc4V3J3R00zT3lORkE5RzVqbGxRd1BPK1J6ZjU3azU0R1BLMEx1SkVvTVI4bXYyRGl6czhmT0k2Q09pYVVZTmlOczRjTHRQSGdsTVBOSkhSTk9NR2hIZkM0U0NXcmhHZ2FJcDRZK3JwN2dHaWhOeWg0SSs2VnUrV0xXQURnaVpnK1lUem52U0tIalFqREp2Ull2bzQvSXNvNFVsSUFvMm13Q0JSQjluNnpXRkRIR01BaFpHeXN2RmxsWUFMY05JeTUyV0prMVRNN1IzRHdBRW0xS255WEJIRGVLaGRvQVhXUnhzTTlwdUpnYWordFNwSW80V25XZERaVWVkOVBoVHJRNG1HNTN0WTAwcWRrSSsxV1RqZzJDOGczZDhOckYrNWpPSUh6d2hES1NtU2wxNm1tb2lyU2duRHpTNDRkM2JOVnU2a1JnajRrVUNDb0V6K3E3b0pRcU4rQ1FDcldkMGxCb2JNa20wNVlJMitvZ2k2RWdpT3AvODhnQ1RMdXl6QWl4THhBdEE3RU1aMEovRkNhYm5MT2tBejFSeHBsckUvby8vaU1RQ3hveHNhTllqeUx0T1A3aE9ZaFluQXFQaThnb3RUd1ltclVBQUVMcldWZnY2RHY3eEdBODRVZVRCRE9hOWVERGlzK1k1ZzlubUdVd3dJckRFMC9qMWNxb2g0Y2hBdVRIUCtaNEpUdThtU21pbW1UVnh0WGxFZEZiVEhEUG5EaWtRbFZYSm5BV2xVbHl4VUozVjlCSHB1eWhBbzFJWWx4SDR4elZiOUZ2d1BJb0czL21ELzYwYUFHZjhVc2p0NlAwNTZZNGFrclhnenhBUjlBcktna3BjQWlMd2dHbW16OU1vNjk4TWlFTVZZRWViMU9iY1pveW1aYWZvc1BuNWFSWmoxamJTcFQ5RXRtNVJQdFdVUkt2alRGL0dPVEVZY2JiMUZPU3JUNU1URHpMSUZoc2VOaVlCNGh4V294WXhpWXVLNldkZ0dZVUF6aXFza0gvRDlCb1ExNDkvSlBhQ1BPV3ZGM1ZEL3hZRG5lOTBJcnVLNStta1VhTk1qZndtSkRMR0IyTmxRaGxsemdpRVhrYUVQNDBNUVMxSC9NNDJRRkJob0FYQkNZeXVZMitKTC9VZTVZTWFaVzltaXB6blNDMnVQWnhOL3NsUDR3VjFpV3NFQkx5SVZ1TDFFZG1lQ0l5NGhRajVaV0EyakZiTVRKbGhZanAyNnF6WTdNNnhPQmdHZkVFNWNPUzRuRDUzUVlMUTluaVA5Y2oxbDF0ZTJ5SHJONzBpTzk3WUl4Y2FtdkU3ZGR4TDc1NnFPYWZCdEJKTUloQWRPM1pNZkQ1MkJ1U1JaV1Fzc0c3djZnUWZKeEZmL1dWeG1TM3czVUtKd1lpMUhjc3o1V2o4UENLT2x0RlpUUjhSVFROcVJBU2lCU1dWc20zbm0yUEQvaVJUN1NRSUJZZTRzTlBvVmRDUDRCd0pvWVNIY1c3NzJIMDZOTjROTTQzTEZsd0FJeHVPRFZuSjB2L0JUOHR3bEN2YThWYmtHcnhHcHFDeDlwQTRCWnpCQkVLdUpLREVOOXovZVowbDdTaElrem9JMDBVQWl4dGd3cUhxcGd3QXlyL05SQndlUEVrQmdwWVg1cW81MHNSZ1pFL1B4ek11QXpmQmcwNzlnNjFIRnhZRm44blRqMFZBTW50Z0paNHdnUDllUDhCMzFDOGppeXZsVkVxS0RHUWI4Nnk2b0MyMnBXZkZURFlBNTlPL0EyZUkzMkRSQUxFRXhHY0c2ZUJYZENGdmdBdUFCbjhaR1hVcjM5UkNXWHp4Z1huWC9JOTY4TXdBbUd5V3czbTNxOW5ZQm0yVzg2YzRrNXoxeDQ2bGZlcWR5Q0RMRDhRSVJ1bUZVbWk2TGlJUDEycW1tVjJnQVVKbW1Kam1vTVBkdG11M3ptNW5ISjVBV041NGE3OHNXZkdDSEQ1K1N1OTUwY1ozN241THFwY3NsMFhMVnNyaTVhdGs2Y29YZGZIM3ZrT0g4YnV4aUpsaDlmb042bFRmZi9pSVhwdGt0OXRsMGFKRjB0WFZkWm1QaUlDeitkV3RpRytGdkxoMkRkTFhlZlFhZEtyRXU0aXVRVE5DKzV4Z0hoSEJpS05tZWw1VW9wb1JOU0lDRWF0ZC8ra0pEa1I2T3NNUktZR0ltM1Zvc1k5UXhHa0tBR0JHZlRBN3BvdU53czFHbkpVR01FcVdqc3hrT1ptWEpNUDNmeDJQQVlTQzNPd2tzYmdScmxSb1dHL3E5ekNjc2RRN09KOXBCQXg0Y1dkMDV1OGxuR0k0eW11bVFnc0RJTmt0eVRyQ1ZnUHRKdkRBOThIZklJUUptZ3Q0cEQ2Z1R1SUVZT1JOeWtEYTNjb0h1VlV3QzBMckFBQVl3bXlBa2RuQVZFdGk0Qm9yUG9BYkxQMitTSy9JdnAxeU1UTlB0WStMMERvNGU3NHhMVjFjME43T1RZZEovY3dmdEZ4WmxPSWRObllOU0VUMmN6SzRickZZbjN4QzJqNy9KYmtJUUdsT3lnUVE1d0JZMHNTT0RvQXowM1grRUk0TXZiRnpUbG5nb3R1R2xGeTBwRHZrYkpZeEFrbHp1dE9TSXEzSk9kS2FsNno4TnJJY0FGcmNiTVhJYUFnbHAvcmhkUkdMNkU4Rm8ydlpBNXN6dXFucE1CMXFQM1E1Y0xlSlY5QWhtL0cyZHpta3JHcVJiTmk4VllHSjk3aFR4VXZyWHBhNUM0cDBCd0g5VkJMdWI5aThSV2JPblNjVkN4ZnBmZE5IUkRDYU4yK2VPSjNPc1pFN0VqWGR5a1VMOFR6elVpSXQ3VllKUk5qeURLM3AzVVFKd1VqRm5ZaUJybnpwQzV2bCtlcmxNcmRzaVpwaXo1ZVd5ckxTSlZKY0JPMm9yRXhtTGtSaldGSXBieDdkRDFNREVrR2ZVQ0pDWFlSMFdObW9XRGw5V0J6UUpqalJrZVlJZlNTMnpBeGRqR25OVEpYK3Yva0tlSUp0elhaazJqZlhRMndMYUNpK3ZkdWtPVDFiN0RRSElXdzJBQ0FCa1dYUWtaMHA4cWxQb2ZwcHBzSE14RHRjLzZXcEo1aG54SGxTZkY0emgyZjF3S2FOZXlNMFRhK0JkQmdjaVlYMzdKV09qSFRwZ2NDM3BhVWFpNFBKTDgyaDFEUVpmRzRtNGpUbWhXa0NLbmRRK3puRVRCUkFOQzRjNkl3ZjJydFc1TXVQU0JNSENYS042UUU2ZHlrbFZXZFVOeU0vamZsSjZvK2FLSFRnK2JNQVJUZUF5d1ZOaURzajlFTTd1b0Q4OTJzWklIN3daa1U2ekx4YUlDZ1Fka1R2UU8wbEJLUHhacHFSSmlEcEduMUdaYVhWOHRMYWpZcnZweHNiWlhaNXVXemZ2VnQvR3lVNmdWNS9mYmRVVlMwVWo4ZkgvbTZNdkY2LzdxdTBlZHMyNVRPTXpMKzhkYXRVTFYwcVJSVVZzdnJsbC9VNW11ZGRYWGFwQk44Mlc1ZkdNYXlUN1VScTZ1cGtYa21KQWxkWkZVQnc2MnVhQi9xcTNvbnl1NUVvSVJqUkdPSHM2QTFWSzZSNlZvbHFQYityS0pHNVN4ZWloNEI1Tm5PdVZGUXZoWXE1U2tvTEsrWE1vZE5heDlTQURNMGhBZUZaZFczamowOFBIOTByM1dtNU9vdlpsWnltdld4N09zd1JDQnhYczN2K3g4T1h3T2dkcUEwVkRvQ1JmOTkyQlNPT0JsMEdScmh1NVVqZW5YZEIwRGtkQUF6amoxTVVSOVhHbkZnem1oaU0yTVFUMDdXQUVRWCtTbUNFdmxmajhFZVFNbHQ1ZDYvWWZ2VWIyWXY4dEdRVnlFQ3FSVFVjVzBhcTlLUm5pQWZhSVpkeWNBREJtY3lwQ2FrVEJyN2JsSk9xenY1MlM2cFl3VTlQaGtYT2NhMGZ6TFdyZ1ZGRStieCsrbFBBNkQvandDNHFycEF0cis2VUV4Y3VTdW15WllpN1NoeDlPcHRMRTJkOEd6ZHRrUlVyWDdnVVA0SnBjaE40dHU3Y0tWNTBDTUhoWWRuNDZxc0tTQ2ZQblZPZ09uUDJuRDVuYmJjaHJWTHA2blpjRnMrbTExNlRGYXRYeTREUEwxdGUyeWJMVnIxd21YUDgzVVNKelRUa2VIL05TZFY0Rmk1Y0xNL05tU1BQdmJoWW5sbGFMZk1YbE1wL3JGc2k4MkhQYmx1L1U2Sk9WREQrZk9HWUNubU5taEhnVG8vVUV5S0gzcFN1MUJ3VlloT01LSGhXQ0RwWDQwZSs4SWo0M2tFd1Vwb0FqS2lkY2ZGcXM0Vm1CdUZWR2RaejllYmU0R0RFR2RtRDBTRnhVTFh0YXBmV1AzOVFiRGwzQTNDeWRVREFTMU9NZWMxSlYyMUdsOTF3aXhVQVNpUHF2eFgzSmdwT0FFNFhnRVozVTBCZW0zQ1BQaUpxV213L056MFlsVmJKa3BVdlNmbVNaYnI5VFhIMUltbnQ3TlJsUjR5TS9kSExHemZMcHMydmFOeThiNlpEUUtKWjl0ck9YV09PN0RVYlhwYVh0N3dpSWJTZDVTKzhLSlhRcURoZG9OdmVBM2txbGs1b1NPYTdnV0JZQVd2ZkVjTy94TDI4U3dHR0RZM04rb3oyaGU4aVNqeTBEeE9OVHNlTEFaYzA5WGFJeSswUWEwZWJxcFZ1bTBzY0VhY000aUVPU3BxQm9LSjFmUzJsRmFWbzRqbjhFVjlNTUtKbTVJQ1FFQnk0em9uTEh0b2hlSkVIdmc1K2ZFWWkxOUNZcm9rbUFDTVh0L213Y09FcmdabGdoSXlwb3d0QXdqeE9DRVlBc3Y5aU1LSjV4anFKOXRkSjNmMFBBTnh6aFN2eHVjaldEbjd0NmVrNjRzV042RGlWZ21ZYkYrNXk1YjByTTF0bnZVOFV2SGlYV2hGOVNIMEVwbXhqQWJMdWtKQUdvRU04VndhajJES2c2NlQvNzJDRU9EaWhkeUUwbi9OTkxiTDhwWmRrOGZJVnhvNmsrSjJ4RUhEb21DWXZuRnhwcGtjLzBmcE5tM1VIVS9QZVMrdldLeUR4dkxYREp2TkxTdFhKYmJNNzFML1ZadXZVM3doVy9Cb3V3YWk1UXlkMzZBamNvbVhMNWJWdE80eTBFN04vVTFGQ01GSzU2eHNRMzRHM3hQdjZacEdEMjBTMmJ4VFp1VTFHOXV3UmVSWDI4MW1ZWnRFK1BCdWJ5TVphUWJnbVVVc0FSbXpNVFJDVUxwaG9GQnJ2Zlo5SEgyOE03UnRDOXc3UU9ERGlGaG1kRU5aM0JSaWhxTHhlbHd6ODI1UEdqT2k4TEoyeDNRbGVlYzMxYnJwVEE4NTFqVmx1dWx6TTVpNEduR0Nab2V2ZUpncFdtTlRkZUs3dHppa0tTRnpmeHlrUjNDenUvSlNNbXg2TXVPQzJkTkZTT1YvZnBIRWNPWEZTbnAwNVM4N1dYakFHSUJFMnZySlZ6U2N6blVHL3NVaVpnWTdxZFJzM0taOE1tMTk5VGE5TlRXbm43amZWRjNUZ3lGRXBxYWdVYTJmWDJMc0VyYm5GeFdyV01RMmFhWHkyQXZtajF2Uk9sTitOUkluTnRHQy9SR2VVU1dmMkI5RUQ1dW8ycnU3Y1BBVU1iam5hbG5hckhFNlpJa2YvNm5Pb2xYV0FiN3NNaFFlTWdtTHBKeUswQnhPTTZPQUxIWGdEUXBhdFF0eWJZdEVlbTg1cjlzSTAyZXdmK0FSZ0FMcWF5dWUxSkhBTkJEQUs3TjhoTFJrNWw0RlJKM2k0MmMwMFRlSDBVV2lXK2VMQjh5ZW4wN2RqYURMY01zVUYvbGl1MXBRc3NYM2lVK0w0NXg5STc3Ty9rc2lNMzR2OCt0ZmlmV2JHaE1FNjR4a1pmUFkveEQ3dktUa1BUYWdlYWVoUVB0TGdpTnJWd2VqbU1OTTRiZVVGbUdFQjdocUo2MGdZMnM2R2pWSzlaS242amhqTFd3Y09xbFp6c2RFQUxBWnFSZFJ5WnMyZXEzNGhtbDEwT2xPcjRmdW1BN3JIM2FmYUR1UGpCTTFPUjQvdTY4MUp3dFNhWGxpM1RqOHNRSk9PNEVSUW1qdHZ2dFRWTjc0ajVYY2pVVUl3Y3JIQ09xM1MrT1d2U2dPWFM2Z0pnOFpNWVV1enFQQUdJYXowUFp6THpoUEh2ejhKVGFvVDlXd0lYRUxDTTZhQTAvS0tIdDR6cGhtNVUyRkNJQjJ1d3lJb2NWdlh1aWwzNHpuRFRPTXcvVHRDY1dERUhSL2p3WWdDZnpNN3NQbnRqdjZmUEtuTFhGaHY5Zm5nTTRsemxRcDBHZ08xb1JQUUNIdC84UXVSNW5wa2pFWTUxOGYxSXdwT1lhQzRYejNvRGdhakhsUmNvelJPZmE5MEpLWHEzbGdjbGFRSmQ3T0QwZXpLS2xtOVphc082dyt4dVNFQ09wdG5GaGJLN2tQR05qZ2REb2M2cXBlc1dpWG42dXRsTUJpVTA3VzFzbkQ1Y25ueHBUWFMxeitvSmhYVHBtK0pQaWFURjc1UFovYUM4bklOdHA0ZUNZMk15TkhUcC9XNjArbFV1VER6UUsxcjhaSmw2alJYdjlXN2lCS1BwcUVFV0FoaXV5Qm5IdmhMTkNwajQvc3VOT2hPcU9jVUJBcHRMOVJ6T2pGcmtyUEU4NU5mQTVDOCtobWdoSVJLQ25QcEFSSmh4Y2pKZzJLMzVFa3I0dVVFT2dvMTkxbm0vQlZPaER4dG1XS0FFVjdoOFBBN1FoT0JFY3Bnd3FIOUd4eU14Tjh2YlhmOXVmckJlbEJIM0RpdU5YZXFuSUhXeWUwOWJFblFjQi85cGtoL2w4NUxha0ZTYW9XU1VRVDI2Qk1GN3JHdno0b2JXdk1kTUszVGRTVHVmQTVONjNjSEdLM2QrcHFSUmJ3YzhCbDE5dEtHRGJLZ3VrcUJpRHhjYkc2V2lzV0xaZmFDQlZLK2FKRU94NWN0WENnOXpsNU4wM1JzcjEyM1FUWUQzSGhPZ09LN3RBaFdybG1qNEdQdDd0WjdqR1B4eXBYYTNmS2FaaDFOUXZLeGZjY3VxVjY0V0hyZHVtSE11NFlTZ3BFdThCejI2UW9tYWJOS3gvLzRCNERFRkRWZjJpQndQUWcrYUE0Y1BiSG1HMSs4NkVlREREeitJNVJpdTlpWkN1dWNzM3g1d2xtK28wT0FFME13dFdwSHVNZ0N3SUlMcnY3cXpydEQvUm5jWUorak05d0F2anM3SHoxdHVqUmszeUp5ZUFzMEkvUTJyQ255eGNXbi9PYVoraUVZRTlkMUdZN2JSTVJQSVlXUWNPaXQ3WEptNnEwNndzU3ZacHlhem1IdFBOMm4rZ1Q0Y0QvMEVOTEVrMlJhSjRFR2pRbDhBQmdUakc3RWVVYUJqanBvS2JmcGpwaHRlZW1vbXl4cHpBY0lFVGp4N25rY0k2Vno4S0JYZWROMWFPRkJ2Rzc0TkV6UzJmTnhZWXc0WXFwVjU1UFdwS25xd0s1QitYR25oVjZVeGRYQTZHYVpaOVRaMlNsdXQxc25KOGF2NE9lNnNXNEF4K0RnNE5qRXhTQTBvbnBvUmx6V1liVmFkZkppL0NKWVhqTXVsOHQxZVJtQ1BCNlA3a3JKSTRseDg5cWsrTDJNdUdUSVpyUHBURzM5d2dxaVVpMDlsa0h6M1BqNkNvRC9zbDBDak1BZEJIZzB0am01Uk15WFNjb2plNXhZdkVQY3ZJeVhzZmpqMDB3WUVBK2ZONFBHeTN0eDVaRFlaMFNtMFhpNEpTeVhhb2lyVFM1ODVnRUpwQllvOE5SQ0VEcWdMZkhiWDFUNzdianV0cVRLZ1hTTEFVaGhRRUlZcWo4WEZDSkJDdkJRQUhHaWZCU1FXRFlRSUoyUGpOczBoVnJ2L1pqaFRJV3dzSEZ6TWw1bmNxcnVrOU5oS1pEKzUzK0g1L1h6aVpvWkNwOHVMVUVjVVFDVGJzRkJ2WnJsbllDMDZDRlF3d2ZmZ0dZelRmd1p5ZHF6dHlMZERtaCs1TU9XbHlHanYzb0tqTWUyVGxXbUFXQTh4LzhiV1RQcVAzVkEzTW5UZFA1UEkzaGlSMUdYWTFFSE5pZVVXaEhrMEhiVVJaUzFxd0FlNVAvaElRa0dMZ21mbG5Nc1hFWjhCRW14ZTNHazNhNkRESjBGYWVwYjdMZGszdFNha1puWGVBRWw4WnEvbWVERTgvajlqRXpnaUFldjhhQVVmNHduTTYzNHVFMktQeDliTWhMTDFEQTZlVlBRRlRRZzZMd1haZWNTYXcrWE5wUXp3Q2djWm8wYlpLWnI4alNXWjhSdGdnZmp1MVNJQ0RHQTRmRnQ5MkxYSmw5anY0OEw5Snd4Y0QxbVlqRHloSlZCcW9rc2JoZG5ydGd2S2lCUlErS1FPL2NZMG8zdExlazZwTXVadVFRa052eStIejJKMWcwN0dFMmNLeHhZTkl4SEFZbTlLdkxNWGYrVUpaWURCTGIxc2NlZ25SajdDVkU3WWdPbnc1WDdSUGR4VXQ3RDM4S0RIbU5YUTBhSVRQRlZ4cXNWeG5Ma0pEOXVVSmFJV09kaHZMbi9EYVNUS3o2WWFOemJpQ1lodDkzVnlYOXBPU0pybHN0b05HSm9XNG91ZUpFRmVvT0QwU0EwdnI3a0FnVWVCUWdBN01VczhBZGVtVGRQY3I0TTdsNnZtN0w1MEdjd2Y3cGJRS3lIWm5tT0Q1Y1IreG9jdkg2N09OUHYxSkUwRytLM1pscFVXNzVad0doOHZnZ2VwbUR5dDNqTktCNVl6UGZpTlF4VGtBbFE1bmw4MmNXL1R4b1RmSkNaMXBWb2ZIeWtNWUNJQjRTNFlPNHdhWUlTUWVoUzNpL1g5a2p4K2REOE05NXhjYjhOWE1hQjBaWGVlVnZBNzR4SFQvR2ZJZUhRdnFIUEdKVVpWUWRCREpDZ0lkRmtZK1BqQndlcHZkRGhUSCtTcm1XQ2dGQnpha2pLa2M0bi9oa1J1Q1ZBcVlUY003dHE0ckFnOGFmTENNRVY4NGpTRmVmQ0NwaGtXZXJqWUh6MDQ3UWo4QXNVRktyMktYZUxIRDlzN0dwb2xEVUtQZlorTExQY0JkSlkxSnFBa0w2ZlMxZTJiNFhtVmFDZzE1aHJqQWgxQTJDNUxxNDk5Ullacmptc2ozTTFsZEVRa0poR1B4RVlBYVQvcTMxR1IvZWpidEoxcjJ3Q1VHOHl0SmIwRkdPN1dwWWx5am13cWxxZlZ6NVp4VndaaTRiSWRFMGhNc1BiQ085b3B6RFNLMWJMZEUySGU1VDNUQzlRcmV2cVlIVGpETzB6WDFjQ0NBcS95OTA3dGcvUitHMUE5Q3Urc1dJZWZ6U0R1ZFVIMzQzZkJzUzhSekxMbGNKUFBreGV4blp3aUtWdkJzWm92aDhQWkNieG5obW4rWTY1RDVJWnpMeVF2RjZ2cm8wam1XbkhnNTRaQ0Z3TVYwclRUSS9FT1BpTStSeVA1cnZ4NWN4emZnV1ljNnI0WkVJd3NyUEMrRDdWRHJ4QlFESk9vZUsxV2NYNzJiL1M3M2h4WmIwdkRXWU5BSWthRWswMitwQWFDRXJwVTJYd2h6K0YzUG9Va0tnaEdXd2lZcHhUNFJ3Tng3YWZaUnExWi9EK2RBaWVNV2ZGQWNIbVJMeGVOR2cyYnFZWCtLZWY0MkdQZnZDUnlxYUtOY3VEQUJFZEZjOW93RndyUHlHRmtCa3ZEWlAvZUZyYUxUbXExZkV6MlFTOWJnQVJQNmJvdU8vTDBBQ002UXJVSEJUMFNMcXAwZzBPUm0xTmNqWXQyNWhIQkhEdlFwNnNYTFlCL2pwd1hwdWNJdUVmL3dTRk1LRHIxbm9Id0JQWUk0L0J3T0JsamZGSzVFTVAxMC8rdW1xbE1UTkh2NnJiWWtuUmJZSWR5UHZORGtiRnBTVnk4UEFoOFFlTkFRc0tOWU1KQ0F6aHlPV0N6dmJSWWV2UzgvRWdZQWJlSnlERWExK204TWFYZGZ3N1pwb213REdRelByaCsyWSt6RGppMy9FRi9OSnU2OURyTUxSOHZZOTNkdTdjS1N0WHJyeHNQeVg2djBobVBEeU9MeVB5ZnFYNy94bmlkQVp1cWVJTGhST2JhVnlYUm9XZCs3WVFoVmhjTk5ub1ExS25kdU5SdWZqTmg2VEprcVdBUkEySkpodDlTRlRUMi9qNUg1Z0dmVW5UREVDQ2hxVHdNWVQ0b21nVXNHTlZKTDBSUkk5N3pEc0s0dXhmZmxIcUlXZzBKZmlKb1l0bzFCd3k1aWR4V3VqWG1mNStpVzVlaWNlNVJ3NTVNVUJOa1JJUmNuR29BVk1Ua3hZMWVHcjl5Ny9XajFoMjVLV294dUJPc2VnaTBETTRIM3grMWxoak5wb0xpS0NubFhDRGo2WjUvWEwrbzUvUWNpUVlVVnZwUXIxeU1TemZhYzFPbGZyODIwVGUyQ0pPbENVZCt1U3hkeGcyRzZUS2JJemppZmVOMzVDSHNFY2N2MzFLRjlkeUJMSWxNME8xWTViajFjSEk2TzJ2bDk0Sk1DS056eWNGak1KMjVNUnhzWGJhZExzT3ZzRlY5R1o4UEtkcmt1YzhjbnNSbnJkMmRFbmxvcVhpN0J2VTZ6Q0FoKzhUbGhpQ0FBSUcvbWFTQ1VvbW1UNG92bXZFYjZRZkh3K3ZDVFltT01hRGxBSmQ3QjF6WThPT2JydVVWeTlVYllUWDFFaVk3NWFXRmpsKy9EanVJQzh4UURUSkJETUducHNnWmw3SEg4M0FaeGg0bnp5TS85M2MxNHpId3VJeU9YNjZSdmxKN0RQeWNYeHJSQUVKQnlVdE9FVEVVVFlDd0ZETmNRVWsxWkJnc3RHSFJLYzJSOWs0RDRscU93R0pHcEthYk1FZWNJekdqdmhZVEZvTjZudEF3VE1OaFA2cUNySG13WXhBWFB5dVdWZVNNYVdBbzBKY0MwWE42OElIN3hFNWZCQUM1MFltd3pJd2lsNkxrYWwyaEVpTWZXRW5waUh3c1g2Tk9BcHVrVG9Ja2h0eDAwZmxCNmpVWmNHa2VlOFVDVjA4cm8xTnpXdmtXMHNVNThibkEyNXNNR0w5ZUo3OHBlYUoyNEIwSkhOclhmREY5eEFYQndsMHE1YXZRZnM3OWpycVprQ0d3aHc5TmFLNEVyRUJVMWkxNFE0NFJiYnRrdVpwNzlYUk9mcmJHdEFaRGFUbDNGUmdkQ1ZpUHMxM1RlSDN3ZFF5N3psNlhkTGpIdEMyWWQ1amFHbnZoTkF2bHNiV2RyM214MG5OMy9pK2UzQUFRT1hXOC9HaldYNC8yaVBJMUhMTTkzb0grdlZJUzZEZjYwRzZ4aGVQNHdXZEF0NlB1UHZ3ck1mbjFYdDh4cHdTd0VtWW5NSE5OVzY4WmpESkJFT09EcHBFVGFrWGZBNTRCc2Mwdy9pME5IN1VKZE96OXpqUTcva3VlNFpiN3ZLNVFmTHJjb3E3dis4eVRaSHZGbGRVeTk1RFIzVTc1OFJneERsQUFDUnFTRFRadEhnOEtNQWg3bjRjRlFlVUQ5VklvQ0hSWktOWlJYOEVSOWs0N004R1NVQ2loa1NUalQ0a2RXcUhBenJzVDJlcGdqR2k1TmRCUWpqWEJ1dXlTdjg5MDhRS2s2bk9raXlCcEFKeHBtWHA5L1BwaTNKQVE2Si9ZdTg5OTBtd2JERUFxVjhGaUtDcHhjbzQrSFdMQk9TdE9TcW5QL1JKNVp0RDh6Um5PSmt6bUpRbUozUFRSUDd1UWJEV0p3SGtVL2xDWVdvYlJyRU1rT2tiSEl6ME8ybnJOME5UemRCcEMvd3VIRGVSSXhpMVo4R3NCcDhEaUllVEZldmU4eEh4LzdGUXBJZGZnWTNWNnhWSWhSU1Z4Z2JjT24rdTdMampRNmlMVlAyTTFBV1VRWGZCVkpRRE9nK2tjVE9ERWFtd3VFaE9udVhYWWFoaGhPWFZIZHQxazdPVkw3Mm91MWFVVmk2VUY5YXMxeS9iOHBrMUd6YnBsMjI1S1JzQnFiU3lRZzRkTzZwYVZMZXpSelpzM3FUN0VqSGU2aVdMVlN2aHlCakxzNjJ0VFpZdVhTbzdkdXlRNWN1WFMybHBxY2JaMU5ZcXkxYXQxRTNXR04vTXVYTTA3Wm9MdFdONW92L3E2UEZqVWxsZEpUTm16WlNTc2xMWi9NcVdNYTJJaTNNNVMzek8vQVU2MjN2R25MbTZ0SVYwNk5BaFdiMTY5Umd3RWdTUEhqMnE2Yzh0bkNmbFNQTzE3ZHNVNkpnV2ZWOU1hOU9XemZMU210VXl2MmlCekprM1Y5UHJzbmZyTXdRYVB2L2k2cGRrQWZMNjNJem5aZG1LNVhLdTl2d1lJUEdab3ZJcU9YcnFMRnU0SlBHNzlYVVFiS3JZM0RLQ0RiWXVHMm84ekJVS1ppSktOQStwbHBQZklDejhaRGJUNnNGNVIycSsyTC8vT0VyUWJiUUhMOTRsTndyaGFLaThHRWF2c1hXdmVOT01vWFlIR2pUQnFCMm1JTFV1UjU2eGVUNC9ZVjJmUFZVdWZ2SXpFdnpEYkpHRFI4QVVZY2tIanZ6SU1OVmRPZ1VoWFB5Z0laR0J5UEw2WHVuKzliTmlMOGlXcHZ3TUFHK3FoQUVrZllpL0VlQm5uWkl0enZ4Y0ZUZzJsUEZxL0NYeXlJVkhIbEdobzUrSjROdVNEdUZEdmtNNHI4dk1SVjZRcnJuTEcwMWRxRys2dnU1cVVjWVJIZkY4alVYU2MyeTNSRkp1MVh3N2tWNFR6Q0ZxaTl5Z3Z5Y3BXNkl6bnNPRFBzUnR6TE1hd0xtVjd6cmNZbnYwYitVWUJ3UUtPS0ptOE5xUU5SV2Fwa1hhTWl6U2s1NkorazVYL2h2ejhzWDJ0UWNrK093dnhMbWtXRUxiMTR1Y2VGTWlCM2RLWlAwTE12cUhaeVR3bFc5Sno2MzNTbHRtSnRKT2xtQktyb0pPWTNhS25BY0FONk91K1FGS21tM2NwWk5nT0Rya0JVZkdWTldoa1FIa2laVitmY1N5TVlHSUcvc1JpR2FYNExweWtjeXZYZ0l3TWdTYXdUUVpTS3JWWFFOeG9lcmV3NGMxSFc0QndyMkpPTEZ4L1pZdDBtNjNxNytqc0xoRWw0UXd4aTRBK2ZIVFovUWVmK05xL1A0Qmo2YTY2b1dYRkFqcW1wcWxyYXRMNDJEOHpnRm9WL2pkN25iTGZPNExWbGdvYit6Yko0ZE9uTkIwRzYxV25WQlpVbFVsSjJwcWRJTGxpK3ZYNjhSS3hrdWhibXUzNmhZa1hPTkdQczVlcUpjeWdPSGg0eWRVckxnZlVtMTlnL0pWYytHaW1tcm1HcnFEUjQvcGZaN1RCZE1FT2VZNk9hNmI2M2E2NU1TWnM3bzc1ZGJ0Ty9RWkJ0NGowSzljOWFMdU5IQzI1cnlVbEpiTGpwMnZLMDhNbk54WnZYU0Z0TUJzNWFaenIrN1lLY1VsWlFxY3BqTi9EcTRQbkRpbCtVL2lDbXRxQmR4VG1SdGt1Ym12TXI5Nm1wd2lmV25YOEVYWkJQT1FRa2xaQUpOMHFjOU1VY0R6QWp3bzhIVjMzU2JXeDc4bDBhQlB6VUN5eGt4eStRa1pVM3RyT0NUK0wzMUphdStZTG5ZTDk4OHhQaExZQkMyTC9pZ0NFN1dqUHZUQUhBWGovdFd0NmFuU2dtZjVMWG11OW1jUHpla0FmUURBenZRQ0NIQ09ORUs3b0daQS9teGNjb0pqSXdUMURNQXpCTk9TY2UzSm15SlNNVjhiTFh1S3E0SlJ3Q2R0bi9zcXpOTTBzY09zN01sTUYwZHlqazc4SXlDMVpyRU1nMk9xTW91SXBKOGcwaHNUMHpCM2xTUmcrMGZFY1dTbk5LWmtpdzNwY0hDaEUzbHJTMG1SZGtzV1RLMDg2Zi85TTNnQno3TUZVODVqZmdtdGx3UGI1TUwwMnhUSWhyT3pkTjBZVis5eldRL042Qm9BQnJWT2RoWnNEMjZVYlg4eXdSK2RRSEkreXBEYVRnRTZxeXhwdGFBK2tiY2FoQURxazUvbHZnQU5sdVhwUWJteUUrdlBTcGV6N0lCd1RyQnlReU1Hc3F2R3hmeUVBRWJ2eEF4Nlp0VUFvaXJqQXhBNE1zd3NxWkRuRnBUSy9CS0FhY3hNWWcxU2NDZXN6M0hFVGRBT256eXBzNlJacEdzM2JaTEtKVXNVUUxTWUVRMFh5VzdhK3FxbXdWWDc5TTNRSE9LcWZMb2RtSkxUNVphcXhVdmt6UGxhZlk3djl2VDNLNkEwUUNQaU5XZHpGMEliMlhQd29BSWY3ekVRcE9ZVUZjbU9OOThjdTNlaHFVbDU2K3cySE9VWDYrczBidkxEaWJuQm9WRjVZZTBHWGN2RzlIamYzQ1dBT3dTWUkxZ0VId0lMd1lqeDhoNUJoMXVWY0kwYzd6RlB2TGR3NmJLeDkzYnYzYWZ2bUxzWGNPSHVTNnZYNnVadmRPaHo3VjFqVTRzMHdGU2xDY1ozbVA2OG9tSnB0YmJwT3h3bDVKZURqcHpoeHk0NG1zWTVJV3d3VVB0NVpPRGV4ZjFvWkd5c0NTbkJQQ1MzSlVkblUxc0JTTncwalo4OHZvQkdTai9GRUFRcTlDUjY4OTUyR0VKb21xaHR0aEd1aUdMUFRoK1MrRHVrNlcrK2JFd1hRT08zVDBFRGg5RHdZNFpPeXkyNlRFUzN2NEFRZEFKRXlYODNnSlJhM2lCNmZYNFhucjA5TllpK1pKZ08wQUpvanRIM3hLK2d1cElCdkJESUhtcUdBRG11YUc5RnZJRW5mNDhDOUd1anZWckQxZnNqZm1sOStPOTEzZGRGOEVHLzJZQmxpdmp5YnBjR3hNV1BDZmlrbDkra0JRQWhneWgxbWxFY3didXFIWFFaZ1ljb0hrUmxSeThlbGhvQUhiK0J6L1RzMEl6b1MrdE16NVBtNUduaWV1NTVQSThFQ0Y2c2ZXZ0NMTUxlSU9wa0dKcklra1Z5S21VS0FDUkhKM1A2OHl5NmZvd0FSUTJtQS9sdlI1azBJMzZPWHJJRHFRZnduVU1abnNHOVdqelRsb1V5eERrQmh4MUJGOHFkUnc0Mk5PUWJJNnJVcmp0enMzVUxFWUp4SDNoMkpnR1VSNmtSb3N3VWtIVzU4M1VUMnh5RmtvQTBGejB6djdIUHZkZ1ppcXE1K0xSc3pJSE1XalRCaUdRZUp5S2FOa2RQR250ZE0zQ3JFUE1ydFdaWSsvSkdYWWx2WGxQWVp4Zk9WNjJDYVhJenREWnJod292dHgraG9DdlBBQ0tlSHpwMlhNR0NXaFhCd3R4R2hJSDdaL00raGZoQ1E2UGU0eUpjYWpZY2llcm90R2thRE50ZmYwTTFHRzZCVzdWa3VSU1dsT3NXSm55SDhYTVJMclVaOG1VQ0Q4T3hVNmMxWGZPYWVlUldKK1kxQTAwNmJxR3JBSXRyYW45MGhoTjB6S1V1WEhlMzVaVlh4L2hwYld1WGxhdlhxWWIyM0t5NUNzYlVESzBkN1dOYTZ0eWlValhUNko1SnNqLzJKVG1YazZtelpmdnlBUlJvU0J4cDZVU0Q0NmIwaWNod3NSa01YMmtlVWdkNnpUWnFJV2pJRkNMMndwM1pNTE95WU1yZ25NUG5nMC85VlB5aEpnZ3NXaW5rMVEvWm8rOW4xQmRCajRRZXd0RWk5WTgraWdaTmJZME9VZ2hBRmt3cnZNL1BDamxoWXVtV0h3UlVDK0xOVGtjdm4ycjRxQ0JNTGRCNjZOTlJIMHRjNE9laGFiSnc2Z0MzdWVXK1BMMHB0MHZQczgraHN2eTZOL1dWeUFRb0JtNmM0djNkcytBbFRiemdxK2NXYUFTTUU2QkhUU0VJbmprVGh5NTJuZGxNeHpwS1RYZXJORXowaVFrTmp3T3VISnNZYmpnbHR2eTdWZmlEeU5zRjVJSGFJc3U0QWFEdm5QTXMrQTVxYnh5T0dKcW11a1pRcHRSY293Q2t3T1oxY2pCN0dyU2ZWTzBrR21CbXFha0dMWktMV3dsU0JCcCs3NHlERGwzSVZ5Y0F1eXMxQytZMkFDWTFVMXBUMGxGZUZ1MVlQTWd6dFovbXpBTHgvZUM3NHY3eDk5RnhaQ1BmNEE5bFg0OTY1eWVnbUZZQXNOelBURE5ENk1DMEtLNlRxRUdzV3J0V3pSdHFSNldMbGtEMUx6ZkFhQ0ZNbXdyRFoyU0NrV21ta2E3RlZDTVltU1lZV3pjMUlHNERZbW9JNXA1RlhGSFAzeGtvOUJSY2dvZ3BxSzdlUGdVQ21qN2N2K2pOQXdkME1TMkYzQlJ3UjY5YkFZdnZNVjRUTUFodUJDMXpGSXlCMmhkTktZZXpSNGZzZCt5Q0NRUndvc25GcjVrMFdXMnlhczE2QlVwemp5WHVFTUIzK0M3QnlZeUw3OFNERWZOSUh4UFB5UWZmSjJDU0J3SVo3MU9ib3YvSi9LWWNIdEhkQ0JqWS92aEZJSnB3YTE3ZUxMVU56ZExuOGN1ZS9RZTBERXdBcFlPN3BIS2hIRG9PTXcwM2ttVGpjam43bnZjYmpRV0M0MEx2MkQwVkFJSWpWM2dub2tUemtMcS85bVd4Wm1SckR4eWs5Z0doWjAvTTRlWGFLZm5heTlvekliai8rbU1JdHgwUWdDcWd4c0JJS0VRNEtFVTgwdmFyZjVlVzVGdjE0NEEwdzZKbzVHZGpvRWtUc0JYQ3lWNjVHL25vNVhRQzlNaDJtQlZkeVprNlRFL1Rqcjg3OFJ3M3NhY2dFNHc0SjZZWjJvTHRBNStGWWI4ZXdvSStPeGdncEw2TjRvR0lRZkhrOEVucHZPMkRxcTBNNVdaSVBYamlWekg4QUlsQmFwY3duWXlHNVdVTklGL2NqQjV2am1WdUFrSTVVSU5RWGlKNC82ZS9sQ2Jrand0ZXZZamZDMDJtQTJCYm41NHNmYk4vaDRlZ1Y3THNxSDJnWHFpRnNlS1pGSGtOQjl3eWRIQ2JuUHJDcDZVbEowUExoMlowVHdyTXpBd0FPanNQbEtXVlpSa0RPNEswK3FrUXFHRnlIWndWcGhvL0JzQ3liNXA2bDNRODgwZWtDKzFyOCtzd1R6K2d6M1pCby9JaERnS2NGZVVSRkNkQUdMbWg2a3N6L0pvMHc0bkpFSXpUVWxwZExjL09ucTFxUHpXa1l2VEdoZVZWQUFXWTJySG5WR2owLzdXVHVkY1EzeWNBVVVqandZaENUVk1vWG5nSkd0UWFXdHFOT1QwTVhMbFBnTnIxNWg1OWp2WGhHaHhVamFyWjJxNEN6NzJNcUFFUkxQZzduMlBnN3dRcC9tNkNDQUVxM3VSNWVkTkczZS9JZktlenAxZktGeTY1N0I3NUlSaVJQek1lSGsrZXJWSFE1VFhUM2JicmRRVW5tbW5tUFc0Z3g3SXc0eUtBRVZpWU5nTkJpVUJrN25qSkJjSXpaODJSYzNXTlkza2hDSE83bEhodGp0OVZQSExpdFA0T0ZjTXU5dC84WGhwdi9TaE1wd3hvSzhtNnhTdk5LRGE4UkpSd0hsSW9LTjZmUFExTjZ6MXFhakZ1RlNRRUozcFE1eFREUWQyYmRLZjRmek1UYi9PVGpvakxiMVMybnpraDJQbkFlaVFpM29PN3hmYlZiNG9yTFY5T280RlRzOUk1TkRoWGdBSFkyWERzc0JnOU4vMUUzRFNONjdGYXAyYnFPak91eXVjUU4zMWpoM096cERudE52RTgvbStvNFRaa0FJbFJrSEgwUnlnMWwyZzhFREZRN21tcVJWQXhYYmQvQ0dBSFFPZWFMUEJFY0tySm5LYmdRMkJWbFlEelIxQTI5SjdnOWNRRUJLRzF4ZXpyS0Z6VFJUbjhqWWZrUkZhMmFvWUVDUzd6YUFEZzlqLzNERm9PQUNzRzRvTW91RUZjOEhQZWVpT21qSG5wVGJlZGs2RS9QQzNOdDl3cFZtZzFEb0FtUVljbWJUUEtrclBkR3dwd3hIa3I2b3l6dHptcm5xT0UxSEFKL2cyWmFkTC94T01pNTQ4alg0aVorVUZXbTMvOEM2bUJ1ZFlHcllqN2FiTXRkZDJhSitFb1Ixb0k5SGlPREdtWlhCK3hqWENVYTgvK2ZRcElOSDFtenkrV29xcUZNcXVvQktCUUJZRXo5SGV5cCtZQnpMTnJkV0FYemkrUzAyZHE5RjMyL212V3J0Y2VuOWRzS2dRZkNxcHBEakZRMkNuME5IY09IVDRxNTJzdjZyTnZ2TFZYelJScVIvUUwwZi9FN1VEY2ZjWW9sYTJ6VzFmamo5OEhteE1veTZIMTJSMU92YWJncTZaVlhLckQ1ZlM5N0h4OWx3SVdRYUsrdVUyLzR2TXNUQ1A2ZWFpcHNmb0pZTlNlcUMxUjI2TWpuZnhTNnlFWXFkemltczlUQ3lMLy9LUlNQTjk4bmtCTTA1V0FHOC9udXZVdlh3Wkd6QnY5VnZRYnZibnZvRzQwOS96c09mTEdtN3YxR1pyTTg2SEZybDYvVWI4eGwwVExUVHk5RXQyeFhicWYvRmRwK1BvM3BPNHJEMHZISS84Z3ZtLy9FSzhrb0FUemtQUnpPZHgyNFV5dDlNK1pKUTNmZkZUYzl6OGsvVjk4UkZvZS9vYTBQdmhWY1g3OU1SbjQ0dmVsNWJzQUJKOGZNa1BYcHJHaHZ3cDdDR0lJVkdKQnFUZ0ZYSWp2bU1qUGZ5dUJXKzhXSndTVFMwWW9TQzRJQzdVZkRuZXpoeWZ3YWMrTyt4ekdwbk9hd3RFNmRaclkvL3ZIUldZdUVuSGFFUzF5RURWY3F2WWh3OU52Skg2SjRrSElKTXFWa3hrSElNa1JtRkUvZTBwOVNOMFBmbE5OeS9hZlB5R08ySU13VEhDQ1hBREFSNUhMWUt5OEppSk9vV2YwVVpTQlA4Q0pvWGpmYlpmUXNxWFM5dGova3ZhdlBpcHRqLzY5T0wvMUF4bllzRWtDc2ZWK0JCM09RT2RubUhUUkgvSkNrNDFhbHBaakNNZ1V3bE9oZHRUOWV1bCsvRWZTOXZGUFMydkJYZEFnODFDV3VkQWFwOENVblFMQXkwZklnV21iSjIxMzNpTmRmL2N0a1JYbFFKMlRScm1GZEZlalMyMGdCQkRmdjF2NnZ2ZTQxSC85TzNMNk85K1I0TC84QklDS3ZGQXF3UWZyV05jaVhpZFIwMkZ0Y0JKaGJYMmRqa0p4eEd2RGxsZGxEUVRqNEZGai8yZ0dQa2ZUZ0hTdFlNUzloNXBiMnBSdHZuL3MrRW5adC8rZ25qTXdGZ0lBQmRZMGh3aFFPOTdZclJ1aUxWK3hTdW9ibXZSWm1rbDAvTkp2UkxOeXd5dXZTSHRINTFoY0hKWGlQa1U4YWpFaEVBQUpUaHlaNHNnY255TVlFY0Eydkx4Si9TKzh4eEdxVjdadFYyMkZFeTVmMjdWYlI5U1lWdnltYndRVSttNWVXTE5XVHA4N3IvYzQ2c2QzNDAxRGpyelJOMGJBWVJ3MHNmZzdmeU1ZY2E2U21xWnhlMzd2ZVd1ZkhEaDRXTS9KTnplQVc3THlSZlVaTFg5aHRmcW1xQWxTaXpNbmFoNDllUWJndUJueEg0Sm1oTGJLZ2ZBK0ZTdW8yWDdBQjB3aXJxUTNaaEFtb0FUemtQcVJQVjE0cVNVR1lROGJYeElkSFlWWTBPeGd1aEVPTVliUlgrTTlUbFQwZXZCR0NObzhmZ3NFVkFENWxSSisvb2piYnVpWFJ5Qlo1Smd0Mm05dEV2Zk9yV0tiL1p3NC91K1BwT09yWDVPQkJ4NlM4UDJQeU1DRFh4TDdnMStRTG1nVGc0Ly9IeEdveXJKbm53eTVuV3I2Y01TZGdrdHRqT2x4bnlJQ05ISElEN1pOaWdlaWVEQWlFM3gvSUJUUkl6VVJIZEVLY0FJWVloOXNrZWJZY3pSQjlkT1BLQ3Z1aG5rdFZncjNidUpucDdYOEVIVS9HR09ETUFDR09TRFlvQ3p0Ym4yR1N6b1VjVUpzemVRRFhJRVhBanR2cTUrRzhvaEk2TG9oZ0dqOWtNRlI5TkRCRHVsclBpeDlSM1pLZE85T0dkMTdUQWJmM0NmOUoyR3E5SGJvY3pUOXlBTS9nTWs0R0ZoZVh2MFdHaU5IZlBqVC9ERzdMQm0zUTdwd09lcUZ3T0k5K282RzN3R25FWG5STldJNFp3aHd4QTcxdzYraHNQV2FNNWdKVml4Q2FoRW1YWXNEVzR1ZE8wNHdTN2pndFhtUFI4Wk40VFFGMVRSdEdIalBmSTRqVEx4bkFoWjU0eVpxL0kxVFRzd2xKZWJYbHhuTTlKaTJHYytWZ2puYjJZelhQSEpFamVjTThUNGkvUTJ5YlY0em1IeHpYcExKSXdQZmk3K09OMDgxTGZCR0hzaHJmRjU1SkZEeEdZNm1tUi9CMURoUUIvemRlTWJNaDhqL0E4eVBJcE9TNXk0ZUFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJGSURPXzJfMCJdLCJhYWd1aWQiOiJmN2M1NThhMC1mNDY1LTExZTgtYjU2OC0wODAwMjAwYzlhNjYifX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjAtMDQtMjkiLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IktPTkEgRklETzIgQklPUEFTUyIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMTkwNDAyMDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjMuNyIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4wLjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjAtMDQtMjkifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIwLTA0LTI5In0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiZGQ2NmEwOWE0NmExYjdhZDU0Y2EzMzVlZmRhZGEyZmNhYmY4NGJjYiJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyJkZDY2YTA5YTQ2YTFiN2FkNTRjYTMzNWVmZGFkYTJmY2FiZjg0YmNiIl0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJTSEFMTyBBVVRIIn0sImRlc2NyaXB0aW9uIjoiU0hBTE8gQVVUSCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxMzEwODEsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6Mn1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwicmVtb3RlX2hhbmRsZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUJtRENDQVQ2Z0F3SUJBZ0lVQklnZlhwZDV3a01xeGhLV3RoWGo1cnA0d3o4d0NnWUlLb1pJemowRUF3SXdLVEVuTUNVR0ExVUVBd3dlUVZoRlRFd2dWVEpHSUVOQklGTmxjbWxoYkNBeE5ESXlORFUwTVRjMU1CNFhEVEl3TURJd016QTBOVGd3TmxvWERUUTNNRFl5TVRBME5UZ3dObG93S1RFbk1DVUdBMVVFQXd3ZVFWaEZURXdnVlRKR0lFTkJJRk5sY21saGJDQXhOREl5TkRVME1UYzFNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVlc2NNSko4RE9FbTM2ZHVTemV5bStFSE1lNzNGT29NSlNodjFqbVByNFAzS29tZFVBeSsxM3IvZW55d0w2RDBhNDFINmZvUlNWdTBCSThXbnN4eERjYU5FTUVJd0RBWURWUjBUQkFVd0F3RUIvekFUQmdOVkhTVUVEREFLQmdnckJnRUZCUWNEQXpBZEJnTlZIUTRFRmdRVTJSZTRJdTJJLytLWHV3SDZFTUprM3FyTS9XQXdDZ1lJS29aSXpqMEVBd0lEU0FBd1JRSWhBUFJDcXJEc0lBTW9GOWJTUk5KOWppZVN6RURTVU1Ray8vNGtUR0xiM0dlRkFpQmRnNTVNUXU0clM3VFBxRFVZaGxLUlB4OHV4enhBQmMwUUY0ZUM4K0VyRFE9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFRQUFBQUVBQ0FZQUFBQmNjcWhtQUFBQUNYQklXWE1BQUFzU0FBQUxFZ0hTM1g3OEFBQUFHM1JGV0hSVGIyWjBkMkZ5WlFCRFpXeHplWE1nVTNSMVpHbHZJRlJ2YjJ6QnArRjhBQUFNMkVsRVFWUjRuTzNkZmRCbWRWbkE4ZThGaTRKaEVDcElEbE5rTlU2YU1tSkRJME5EallpNElLQVRacE5OK1E2Q0NGSlpFN2JrQzVFdmxQRm0yaDlOMmF6NWdwQ2hwcE4vQ0NvS3VxS0RTa3N5eGJUQ3NyeFlxQ3k3ZS9YSE9XdmJ5ajdQczg5OTd2dDN6dS8zL2N3dytOZDVyaG04dnZjNTV6NzNmVWRtSXFsTllRQ2tkaGtBcVdFR1FHcVlBWkFhWmdDa2hoa0FxV0VHUUdxWUFaQWFaZ0NraGhrQXFXRUdRR3FZQVpBYVpnQ2toaGtBcVdFR1FHcVlBWkFhWmdDV0VSSDdBcjhCL0E1d1JObHAxTEFFYmdldUJLN0xnUmJYQUN3aEl2WURMZ05lVlhvV3FiY0R1QkM0ZUlnSUdJQTk2SmYvQ3VBVnBXZVJkdk13OEV1WitkVlpEMlFBSGtGRXJLRTcxWEw1TlZZWFplYTZXUTlpQUhiVEwvOVZ3TXRMenlJdDRhck1QSFBXZ3hpQVhmU24vVmZpOG12OERNQ1FYSDVOakFFWXlpN0wveklnQ284anJZUUJHRUovemIvemJyL0xyNmt3QUxQcWwvOXlmSjlmMDJNQVp0RXYvMlhBcTB2UElxMkNBVml0L3ByLzNjQnJTczhpclpJQldBMlhYNVV3QUh1clArMy9LMXgrVFo4QjJCdGU4NnN5Qm1DbHZOdXZDaG1BbGZDMFg1VXlBTXZwbDMvbkRUOGY4bEZORE1CU1hINVZ6Z0RzU2Y4MVhqdFArMTErMWNnQVBKSisrZDhObkZWNkZtbU9ETUR1K3RQK3Z3QmVXM29XYWM0TXdLNWNmalhHQU96azhxdEJCZ0IrZU0xL0tYQk82Vm1rQlRJQS9mSy9DM2hkNlZta0JXczdBTDd5cTNIdEJtQ1g1VDhiMytkWG05b01nTXN2QVMwR3dPV1hmcWl0QUxqODB2L1RUZ0M4MnkvOWlEWUMwQy8vMjRIelNzOGlqVWo5QWVpWC84K0I4MHZQSW8xTTNRRncrYVVsWFptWk0zL2lkWlFCY1BtbFpWMlltVytaOVNDakM0RFgvTkt5ZmdBY2xabmZtdlZBb3dwQXYvenZBTTdGdC9xa1IvSXc4THJNdkdxSWc0MG1BQzcvUW0wRk5nUDNBOThISGdKMkZKMUl5MGxnSS9EWG1YbmpVQWNkUlFCYy9ybDZHUGc2Y0FOd0kzQUw4QjkwaS85d1pycjREU3NlZ0lqWWgvKzc0ZWZ5RDJNNzhBVmdQZkJQd0oyWnViM3NTQnFqb2dIb2wvOFM0QTI0L0VONEVQZ0EzVGNpMytLcnU1WlRMQUQ5YWYvRndPOFZHYUF1RHdGL0QxeWNtYmVYSGtiVFVTUUEvZksvRGZqOWhmL3h1aVRkZGYyNW1mbkYwc05vZWhZZUFKZC9NRDhBM2d5OE16TWZLajJNcG1taEFYRDVCL09md0c5bTV2V2xCOUcwTFN3QS9RMi9QOE5yL2xuZERKeVdtWGVXSGtUVHQ1QUE3SEszLzRLNS83RzYvU3R3ZW1aK3QvUWdxc1BjQTlBdi84N1RmdC9xVzczUEFLZGs1b09sQjFFOTVob0FsMzh3RzRCZnpjejdTdytpdXN3dEFDNy9ZRFlCejg3TU8wb1BvdnJNSlFBdS8yQzJBaWRuNXFkS0Q2STZEUjZBZnZuZkN2d0JMditzTHM3TVB5bzloT28xYUFENjVYOEw4SWVESGJSZHQ5Q2QrbnZUVDNNeldBRDZoM3plREx3UlgvbG50UTA0S1RNL1hYb1ExVzNJQUx5UjdycmY1Wi9kMWNDTHN2Um50Vlc5UVFJUUVVY0Ezd1FlTS9QQnRCWDQ1Y3o4U3VsQlZMK2hBdkJid04vTlBvN292c0RqVkYvOXRRaERCZUFzNFBMWnh4RndndGYrV2hRRE1DNjNBVS8zNDcxYUZBTXdMcjd2cjRVeUFPTnlqTi9zbzBVeUFPUHhYOERQWnViM1N3K2lkaGlBOGJnbU0wOHJQWVRhWWdERzQ0OHo4NjJsaDFCYkRNQjRuSnFaMTVZZVFtMHhBT1B4MU15OHRmUVFhb3NCR0ljZHdDR1orVURwUWRRV0F6QU9Ed0NIK3c2QUZzMEFqTU4zZ0ovMkNVQXRtZ0VZaHp1QkoyZm0xdEtEcUMwR1lCdzhBMUFSQm1BY3ZnczgwWHNBV2pRRE1BNEpQQzR6N3lzOWlOcGlBTWJqNlpuNXRkSkRxQzBHWUR4ZW1KbFhseDVDYlRFQTQ3RXVNeThxUFlUYVlnREc0N3JNWEZ0NkNMWEZBSXpIM2NDUm1mbTkwb09vSFFaZ1hINGxNejliZWdpMXd3Q015NldaZVg3cElkUU9BekF1ZHdDLzRBTkJXaFFETUQ1K01ZZ1d4Z0NNejZlQkV6TnpSK2xCVkQ4RE1EN2JnT016ODRiU2c2aCtCbUNjUGdtc3pjenRwUWRSM1F6QU9PMmdlelQ0bXRLRHFHNEdZTHcyQXMveWV3STFUd1pnM0s3SXpOZVdIa0wxTWdEanRoMDRJek0vVW5vUTFja0FqTi85d0xIK1pvRG13UUJNdzBiZ3VNejhUdWxCVkJjRE1CMWZCcDZibVZ0S0Q2SjZHSUJwdVFsNFFXWnVLajJJNm1BQXB1ZGJkTThJZUU5QU16TUEwM1FQOEFyZzJoemlQNkNhWlFDbWF4dHdHZkNtelB6djBzTm9tZ3pBOUgwRE9BLzRsSjhnMU40eUFIWFlBWHdNV0FkczhMSkFLMlVBNnJJZHVBNzRTK0F6bmhGb09RYWdYaHVCOWNEVmRHY0Z4a0Evd2dEVUw0Rk53UFhBamNEWGdHOERtekx6d1pLRHFUd0QwS1p0L1QvZkEvNm4vOS9lTnhpMzdjQnR3SHVBZng3cVBvOEJrS1psQi9BbTRHMURSTUFBU05PekZUZ21NemZNZWlBRElFM1RSWm01YnRhREdBQnBtcTdLekROblBZZ0JrS2JKQUVnTk13QlN3d3lBMURBRElEWE1BRWdOTXdCU3d3eUExREFESURWc1ZBRjRFZkNobVE4a2FhVkdGWUJEZ0Z1QncyWSttS1NWR0U4QUFDTGlkT0Q5d0FHREhGRFNVc1lWQUlDSWVDWndMdkFNWU0xZ0IxWUphNEQ5Z1lQN2Y2OEI5aTA2a1hZMXZnQ29UaEZ4RVBBazRPZUFvNEJqZ0djRFB3NUV3ZEZhWmdCVVRrUThDamdXT0IzNGRlQ0paU2RxamdIUU9QUXhPQms0R3pnZXp3b1d3UUJvWENKaUg3ckxnNHVBNTJBSTVza0FhSno2RUt3RjNnSDhmT0Z4YW1VQU5HNFI4Vmk2czRHemdmMEtqMU1iQTZEeGk0Z0FUZ0xlQnh4ZWVKeWFHQUJOUjBROEdmZ0FjSFRwV1NwaEFEUXQvU1BqNjRFVFNzOVNBUU9nNlltSUE0Ri9wTHNzME9vWkFFMVRINEhyZ09OS3p6SmhCa0RURlJHUEJ6NUg5M2l4OXA0QjBMUkZ4RlBwZnJMOHgwclBNa0VHUU5NWEVTOEgzb3RQRGU0dEE2RHA2NThUdUFZNHBmUXNFMk1BVkllSU9CTFlRUGZ4WXEyTUFWQTlJbUlkOENlbDU1Z1FBNkI2Uk1SUDBIMnZwTjhyc0RJR1FIV0ppQXVCUHkwOXgwUVlBTlVsSW40UytDYncyTkt6VElBQlVIMGk0aCtBbDVTZVl3SU1nT29URVd1Qmo1V2VZd0lNZ09yVGY0bkl2d09QTHozTHlCa0ExU2tpUGdxY1ducU9rVE1BcWxORW5BZThxL1FjSTJjQVZLZUlPQmE0dnZRY0kyY0FWS2VJT0F6NE52N081RklNZ09vVUVZOEcvZzA0b3ZRc0kyWUFWSytJdUFtL1FIUXBCa0QxaW9oUEFzOHRQY2VJR1FEVkt5SStETHl3OUJ3alpnQlVyNGhZRDd5NDlCd2paZ0JVTDg4QWxtVUFWSytJK0FSd1l1azVSc3dBcUY0UmNUUHd6Tkp6akpnQlVKMGk0bEhBUm53T1lDa0dRSFhxbndTOEE5aS84Q2hqWmdCVUp6OExzQ0lHUUhXS2lOY0RsNWFlWStRTWdPb1VFVmNEcDVXZVkrUU1nT3JUZnlQUVJ1RFEwck9NbkFGUWZTTGlST0FUcGVlWUFBT2cra1RFM3dLL1hYcU9DVEFBcWt0RVBBRzREVGk0OUN3VFlBQlVsNGk0QUhoNzZUa213Z0NvSGhGeElOMXZBL3IwMzhvWUFOVWpJczRIM2xsNmpna3hBS3BEUkJ3S2ZCMTRRdWxaSnNRQXFBNFI4VGZBeTByUE1URUdRTk1YRWM4SHJnWDJMVDNMeEJnQVRWdi9jK0EzQVllWG5tV0NESUNtS3lMMkJ6NE9IRjk0bEtreUFKcW1pTmdYZUMvd3U2Vm5tVEFEb09tSmlIMkFTNEFMU3M4eWNRWkEwOUsvOGw4Q3ZLSDBMQlV3QUpxT2lEZ0FlQS93MHRLelZPS3l6RHhuMW9NWUFNMWRSUHdVOEg3ZzJOS3pWT1NWbWZtK1dROWlBRFEzRVJGMFArNXhPWEJZNFhGcWNqdHdkR1krTU91QkRJRG1JaUtPb0x2ZVB3TWY4aG5TSnVCNW1YbkxFQWN6QUJwVVJCd0NuQU84SGovWFA3UzdnQk16ODZ0REhkQUFhQkFSY1NUZDgveXZ3dS96bTRlNzZGNzVOd3g1VUFPZ1ZlbXY3dzhGbmdPOEJQZzE0SUNpUTlYckx1Q2t6UHpLMEFjMkFGcFMvK0RPZnNDamdTY0JUd09PQm80RGpnSWVVMjY2SnN4dCtXSGdBRVRFVStpdS80NmkreitOcG0wTjNlSWZCRHdPZjZwcjBlYTYvREJnQUNMaWVjQUhnUU1IT2FEVXRya3ZQd3dVZ0lnNENQZ0dmcXhUR3NKQ2xoK0dDOERwd0VkbUgwZHEzbHp1OXUvSlVBRTRpKzVwTDBtcmR6ZmQ4cy85bFg4bkF5Q053OTNBMnN5OGFaRi8xQUJJNVJWWmZqQUFVbW1iNlc3NDNWemlqeHNBcVp5aXl3OEdRQ3FsK1BLREFaQksyQXc4djhRMS8rNE1nTFJZbzFsK01BRFNJbTJoZTU5L0ZNc1BCa0JhbEh2b1h2bS9WSHFRWFJrQWFmN3VvWHVmLzR1bEI5bWRBWkRtYXpOdzhoaVhId3lBTkUralhuNHdBTks4alBhMGYxY0dRQnJlSkpZZkRJQTB0QzEwVC9pTjZtNy9uaGdBYVRqMzByM1ZkMlBwUVZiS0FFakR1SmZ1aHQvblN3K3lOd3lBTkx0SkxqOFlBR2xXOTlMZDhQdEM2VUZXd3dCSXE3ZUY3cFYva3NzUEJrQmFyY2t2UHhnQWFUVzJBS2RNOFpwL2R3WkEyanZWTEQ4WUFHbHYzRWQzMnYrNTBvTU14UUJJSzNNZjNTdi9EYVVIR1pJQmtKWlg1ZktEQVpDV1UrM3lnd0dRbGxMMThvTUJrUGFrK3VXSDRRSndKbkRGN09OSW85REU4c053QVRnQitKZlp4NUdLYTJiNVliZ0E3QTk4Q1hqYXpBZVR5cmtmZUVGbWZyYjBJSXN5U0FBQUl1SVhnWThDUHpQSUFhWEYyZ1Nja1puWGx4NWtrUVlMQUVCRUhBeThHSGdHc045Z0I1Ym1aeHR3SzdBK016ZVhIbWJSQmcyQXBHa3hBRkxERElEVU1BTWdOY3dBU0EwekFGTERESURVTUFNZ05jd0FTQTB6QUZMRERJRFVNQU1nTmN3QVNBMHpBRkxERElEVU1BTWdOY3dBU0EzN1gzRVE2V29IT3ZMVUFBQUFBRWxGVGtTdVFtQ0MifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMy0wMS0xNyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJ1cmwiOiJodHRwczovL3d3dy5heGVsbC5jby5qcC9lbi8iLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IlNIQUxPIEFVVEgiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlUyRjEwMDAyMDIzMDExNzAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIzLTAxLTE3IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjF9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjMtMDEtMjcifSx7ImFhZ3VpZCI6IjNmNTk2NzJmLTIwYWEtNGFmZS1iNmY0LTdlNWU5MTZiNmQ5OCIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiM2Y1OTY3MmYtMjBhYS00YWZlLWI2ZjQtN2U1ZTkxNmI2ZDk4IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkFyY3VsdXMgRklETyAyLjEgS2V5IENhcmQgW1A3MV0ifSwiZGVzY3JpcHRpb24iOiJBcmN1bHVzIEZJRE8gMi4xIEtleSBDYXJkIFtQNzFdIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEwMCwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9LHsibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo2LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo2LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUMrakNDQXFDZ0F3SUJBZ0lVVFhKeTI4bHBRVmxoSXA3RVRCaStVNGJjYUQ4d0NnWUlLb1pJemowRUF3SXdnWUF4Q3pBSkJnTlZCQVlUQWxWVE1STXdFUVlEVlFRSURBcE9aWGNnU21WeWMyVjVNUkV3RHdZRFZRUUhEQWhUYjIxbGNuTmxkREVVTUJJR0ExVUVDZ3dMUTI5dGNHOVRaV04xY21VeEVEQU9CZ05WQkFzTUIwRnlZM1ZzZFhNeElUQWZCZ05WQkFNTUdFTnZiWEJ2VTJWamRYSmxMVVpKUkU4dFEwRXRVbTl2ZERBZ0Z3MHlNekEwTVRneE5UUTFOVEJhR0E4eU1EVXpNRFF4TURFMU5EVTFNRm93Z1lBeEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlEQXBPWlhjZ1NtVnljMlY1TVJFd0R3WURWUVFIREFoVGIyMWxjbk5sZERFVU1CSUdBMVVFQ2d3TFEyOXRjRzlUWldOMWNtVXhFREFPQmdOVkJBc01CMEZ5WTNWc2RYTXhJVEFmQmdOVkJBTU1HRU52YlhCdlUyVmpkWEpsTFVaSlJFOHRRMEV0VW05dmREQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJDZ0c3cjZWQS9oK0J5blVueURaTUQwVlprWVc2UkducGgwdzI1Z1FEV01vcUFhaVVhRkc1TUNsa2hha0lCcExGKzZ4SkJoTzFncys3QzFrL2p1VnV2MmpnZk13Z2ZBd0hRWURWUjBPQkJZRUZKejFnRnRUVEJOZmZmREt2ZGpwVUV5cDcwenRNSUhBQmdOVkhTTUVnYmd3Z2JXQUZKejFnRnRUVEJOZmZmREt2ZGpwVUV5cDcwenRvWUdHcElHRE1JR0FNUXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0F3S1RtVjNJRXBsY25ObGVURVJNQThHQTFVRUJ3d0lVMjl0WlhKelpYUXhGREFTQmdOVkJBb01DME52YlhCdlUyVmpkWEpsTVJBd0RnWURWUVFMREFkQmNtTjFiSFZ6TVNFd0h3WURWUVFEREJoRGIyMXdiMU5sWTNWeVpTMUdTVVJQTFVOQkxWSnZiM1NDRkUxeWN0dkphVUZaWVNLZXhFd1l2bE9HM0dnL01Bd0dBMVVkRXdRRk1BTUJBZjh3Q2dZSUtvWkl6ajBFQXdJRFNBQXdSUUlnY2dYR01EUDJyZmg0RVRZOUVKTHd1WG8xUzlVaXF0RW1QaHE5L2RpUzBuQUNJUURveUxab3N4OHJSQUYxdnBSWGNzVlFERFNIb0VzL1BibUYzRXIvbUoweDZ3PT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBK2dBQUFQb0NBWUFBQUJObzlUa0FBQUFCR2RCVFVFQUFMR1BDL3hoQlFBQUFDQmpTRkpOQUFCNkpnQUFnSVFBQVBvQUFBQ0E2QUFBZFRBQUFPcGdBQUE2bUFBQUYzQ2N1bEU4QUFBQWhHVllTV1pOVFFBcUFBQUFDQUFGQVJJQUF3QUFBQUVBQVFBQUFSb0FCUUFBQUFFQUFBQktBUnNBQlFBQUFBRUFBQUJTQVNnQUF3QUFBQUVBQWdBQWgya0FCQUFBQUFFQUFBQmFBQUFBQUFBQUFFZ0FBQUFCQUFBQVNBQUFBQUVBQTZBQkFBTUFBQUFCQUFFQUFLQUNBQVFBQUFBQkFBQUQ2S0FEQUFRQUFBQUJBQUFENkFBQUFBRHJFZUtrQUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUN6R2xVV0hSWVRVdzZZMjl0TG1Ga2IySmxMbmh0Y0FBQUFBQUFQSGc2ZUcxd2JXVjBZU0I0Yld4dWN6cDRQU0poWkc5aVpUcHVjenB0WlhSaEx5SWdlRHA0YlhCMGF6MGlXRTFRSUVOdmNtVWdOaTR3TGpBaVBnb2dJQ0E4Y21SbU9sSkVSaUI0Yld4dWN6cHlaR1k5SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpFNU9Ua3ZNREl2TWpJdGNtUm1MWE41Ym5SaGVDMXVjeU1pUGdvZ0lDQWdJQ0E4Y21SbU9rUmxjMk55YVhCMGFXOXVJSEprWmpwaFltOTFkRDBpSWdvZ0lDQWdJQ0FnSUNBZ0lDQjRiV3h1Y3pwMGFXWm1QU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNScFptWXZNUzR3THlJS0lDQWdJQ0FnSUNBZ0lDQWdlRzFzYm5NNlpYaHBaajBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5bGVHbG1MekV1TUM4aVBnb2dJQ0FnSUNBZ0lDQThkR2xtWmpwWlVtVnpiMngxZEdsdmJqNDNNand2ZEdsbVpqcFpVbVZ6YjJ4MWRHbHZiajRLSUNBZ0lDQWdJQ0FnUEhScFptWTZVbVZ6YjJ4MWRHbHZibFZ1YVhRK01qd3ZkR2xtWmpwU1pYTnZiSFYwYVc5dVZXNXBkRDRLSUNBZ0lDQWdJQ0FnUEhScFptWTZXRkpsYzI5c2RYUnBiMjQrTnpJOEwzUnBabVk2V0ZKbGMyOXNkWFJwYjI0K0NpQWdJQ0FnSUNBZ0lEeDBhV1ptT2s5eWFXVnVkR0YwYVc5dVBqRThMM1JwWm1ZNlQzSnBaVzUwWVhScGIyNCtDaUFnSUNBZ0lDQWdJRHhsZUdsbU9sQnBlR1ZzV0VScGJXVnVjMmx2Ymo0ek1EQXdQQzlsZUdsbU9sQnBlR1ZzV0VScGJXVnVjMmx2Ymo0S0lDQWdJQ0FnSUNBZ1BHVjRhV1k2UTI5c2IzSlRjR0ZqWlQ0eFBDOWxlR2xtT2tOdmJHOXlVM0JoWTJVK0NpQWdJQ0FnSUNBZ0lEeGxlR2xtT2xCcGVHVnNXVVJwYldWdWMybHZiajR6TURBd1BDOWxlR2xtT2xCcGVHVnNXVVJwYldWdWMybHZiajRLSUNBZ0lDQWdQQzl5WkdZNlJHVnpZM0pwY0hScGIyNCtDaUFnSUR3dmNtUm1PbEpFUmo0S1BDOTRPbmh0Y0cxbGRHRStDbDlFSzM4QUFFQUFTVVJCVkhnQjdOMS9qR1ZaUWgvMmUrNnI3cG5wMzlWZFBUMWRWZDB6dXd3THc5aUUwUHhZMnlSdVNJUkRMTEJqNU1nRVFndzQvaUd3SEFLSkk1d2ZzbVhGaW1VbFZtSkhTcFJFVGtpa1NMRWk1YTlFaW1OR09KRWNkb2Rka05kcjBBSkRkanpzN0E0c0M3c3owMTMxN3NrNTU3N3FxZjVkVmUvWC9mRjVVRjJ2M3J2MzNITStwN2Fxdm5QT1BhZXFQQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQXdJb0V3b3F1NHpJRUNCQWdRSUJBdndYeTN3ejFyQWt4Zlc3NjNSeTFKMENBQUFFQ0JBZ1FJRUNBQUFFQy9SUHdIL1Q3MTJkcVRJQUFBUUk5RlBBTHQ0ZWRwc29FQ0JBZ1FHQ0ZBbm5VdkhuK3hvMnZtamJOWDZwQ2VDYjk4ZkRMNzd6NTVsOWVZUjFjaWdBQkFnUUlqRUpnWXhTdDFFZ0NCQWdRSUVEZ3BBSWxvTytINllmcnllU0hRZ2hWMDhSUHBjSUU5Sk9LT284QUFRSUVDRHhHUUVCL0RJeVhDUkFnUUlBQWdROEU2ampaaXJHcDhzM25JZFMvL2NFN25oRWdRSUFBQVFLTEVqaFk3R1ZSNVNtSEFBRUNCQWdRR0tCQVV6WFg4K2g1U3VlcGRkRi80QjlnSDJzU0FRSUVDS3hmUUVCZmZ4K29BUUVDQkFnUTZMeEFIY0xGTnB4M3Zxb3FTSUFBQVFJRWVpc2dvUGUyNjFTY0FBRUNCQWlzVGlETmJyOVl4VHpCM1lNQUFRSUVDQkJZbG9DQXZpeFo1UklnUUlBQWdXRUlsUDNPUTRqWGh0RWNyU0JBZ0FBQkF0MFZFTkM3MnpkcVJvQUFBUUlFdWlCUWhzM1Q0UGtMWGFpTU9oQWdRSUFBZ1NFTENPaEQ3bDF0STBDQUFBRUM4d3ZrZ0o1dVFRL255d3J1ODVlbkJBSUVDQkFnUU9BeEFnTDZZMkM4VElBQUFRSUVDRlI1eWZacWQzZjNtUmpqT2ZlZys0NGdRSUFBQVFMTEZSRFFsK3VyZEFJRUNCQWcwR2VCRXREdmJHeWtGZHlyUzMxdWlMb1RJRUNBQUlFK0NBam9mZWdsZFNSQWdBQUJBbXNVYU9LZHpTcVdnRzRaOXpYMmcwc1RJRUNBd1BBRkJQVGg5N0VXRWlCQWdBQ0Jrd3FVRWZTcTJUaVg5a0EvbmFhNGx4WGRUMXFZOHdnUUlFQ0FBSUVuQ3dqb1QvYnhMZ0VDQkFnUUdMTkFHOURyNW54NkVtSUlBdnFZdnh1MG5RQUJBZ1NXTGlDZ0w1M1lCUWdRSUVDQVFMOEZRbk52RDNSVDNQdmRsV3BQZ0FBQkFoMFhFTkE3M2tHcVI0QUFBUUlFMWkzUVZPRjZtdUtlbDNRWDBOZmRHYTVQZ0FBQkFvTVdFTkFIM2IwYVI0QUFBUUlFNWhkSW02QmZuTDhVSlJBZ1FJQUFBUUpQRXhEUW55YmtmUUlFQ0JBZ01IS0J0RFNjZ0Q3eTd3SE5KMENBQUlIVkNBam9xM0YyRlFJRUNCQWcwRGVCdkVCY1dSUXVoSHYzb1BldERlcExnQUFCQWdSNkpTQ2c5NnE3VkpZQUFRSUVDS3hVb0FUMEdLc1gwaFpySzcyd2l4RWdRSUFBZ1RFS0NPaGo3SFZ0SmtDQUFBRUNSeGVZaEJETzU4TlRSRyszWFR2NnVZNGtRSUFBQVFJRWppRWdvQjhEeTZFRUNCQWdRR0JFQWlXTTcrN3VubzR4bmgxUnV6V1ZBQUVDQkFpc1RVQkFYeHU5Q3hNZ1FJQUFnZTRMdkQrWlhFcGJyRjJhelhBM2d0NzlMbE5EQWdRSUVPaXhnSURlNDg1VGRRSUVDQkFnc0VTQkVzYWJlR2N6M1grZVZuR1A1cmN2RVZ2UkJBZ1FJRUFnQ3dqb3ZnOElFQ0JBZ0FDQnh3cUVadU5jZXZPWmNrQ01SdEFmSytVTkFnUUlFQ0F3djRDQVByK2hFZ2dRSUVDQXdHQUZZbDFmVEl2RTViOFhyQkUzMkY3V01BSUVDQkRvaW9DQTNwV2VVQThDQkFnUUlOQXRnVEphSHBybTJxeGE5bG5yVnYrb0RRRUNCQWdNVUVCQUgyQ25haElCQWdRSUVGaVVRQXp4V2xva0xvK2ZOK2ttZEZQY0Z3V3JIQUlFQ0JBZzhBZ0JBZjBSS0Y0aVFJQUFBUUlFV29HNnF0TUNjZmxoQUwxMThDOEJBZ1FJRUZpZWdJQytQRnNsRXlCQWdBQ0IzZ3VrRWZSTHZXK0VCaEFnUUlBQWdaNElDT2c5NlNqVkpFQ0FBQUVDS3habzh2VkNURlBjeThQczl0YkJ2d1FJRUNCQVlIa0NBdnJ5YkpWTWdBQUJBZ1Q2TEZEbXREY3h2cEQyUVU5SjNmM25mZTVNZFNkQWdBQ0JmZ2dJNlAzb0o3VWtRSUFBQVFLckZzZ0JmVktIU2Q0SDNZTUFBUUlFQ0JCWWdZQ0F2Z0prbHlCQWdBQUJBajBUS1BQWnQ3ZTNuMG1qNStkbnk4T1o0OTZ6VGxSZEFnUUlFT2lmZ0lEZXZ6NVRZd0lFQ0JBZ3NHeUJFc2J2VGlhWFloVXZsaW51ZVpLN0J3RUNCQWdRSUxCVUFRRjlxYndLSjBDQUFBRUMvUlZvUXNncnVNKzJXZXR2TzlTY0FBRUNCQWowUlVCQTcwdFBxU2NCQWdRSUVGaWRRQmt0RDAxenJncmg5T3l5UnRCWDUrOUtCQWdRSURCU0FRRjlwQjJ2MlFRSUVDQkE0QWtDYlJpdm13dnBTWDVldGx4N3d2SGVJa0NBQUFFQ0JCWWdJS0F2QUZFUkJBZ1FJRUJnaUFLaHFXZDdvRmV6ZGVLRzJFcHRJa0NBQUFFQzNSRVEwTHZURjJwQ2dBQUJBZ1E2SmRDRXRBZDZTQVBvYWFXNFRsVk1aUWdRSUVDQXdFQUZCUFNCZHF4bUVTQkFnQUNCZVFYcXFwNHRFQ2VmejJ2cGZBSUVDQkFnY0JRQkFmMG9TbzRoUUlBQUFRTGpFaWlKUE1hWVYzSDNJRUNBQUFFQ0JGWWtJS0N2Q05wbENCQWdRSUJBVHdUeW9uQWxvSWNRWi9lZzU1YzhDQkFnUUlBQWdXVUxDT2pMRmxZK0FRSUVDQkRvbjBCWnRiMko2UjcwYUhwNy83cFBqUWtRSUVDZ3J3SUNlbDk3VHIwSkVDQkFnTUJTQmY3NHBBNlRzK1VTb1d5MXR0U3JLWndBQVFJRUNCQ29LZ0hkZHdFQkFnUUlFQ0J3V0tETVo3OTI3V2VmamJFNWIvejhNSTNuQkFnUUlFQmd1UUlDK25KOWxVNkFBQUVDQkhvcE1EMTkrbUlhTjc4NG0rTHVKdlJlOXFKS0V5QkFnRURmQkFUMHZ2V1kraElnUUlBQWdlVUtsREErcmFyTGFhazRxN2d2MTFycEJBZ1FJRURnUGdFQi9UNE9YeEFnUUlBQUFRSlpvSjdFczFVSXAyY2FSdEI5V3hBZ1FJQUFnUlVJQ09nclFIWUpBZ1FJRUNEUU40RTREUmRUS3MvQjNHM29mZXM4OVNWQWdBQ0IzZ29JNkwzdE9oVW5RSUFBQVFKTEVTaWo1YUZwWHBpVlhyWmNXOHFWRkVxQUFBRUNCQWpjSnlDZzM4ZmhDd0lFQ0JBZ1FDQUxoQkN2cFgveStIa2VRUytoblF3QkFnUUlFQ0N3WEFFQmZibStTaWRBZ0FBQkFyMFVpR0Z5b2EyNEdlNjk3RUNWSmtDQUFJRmVDZ2pvdmV3MmxTWkFnQUFCQXNzV2lGWndYemF4OGdrUUlFQ0F3QU1DQXZvRElMNGtRSUFBQVFJakYyanZPWS94NEI3MGtYTm9QZ0VDQkFnUVdKMkFnTDQ2YTFjaVFJQUFBUUo5RUNoejJtTVZybFhSN2VkOTZEQjFKRUNBQUlIaENBam93K2xMTFNGQWdBQUJBb3NReUtsOFV0ZlZ1VkpZc0VEY0lsQ1ZRWUFBQVFJRWppSWdvQjlGeVRFRUNCQWdRR0FjQW1XMTltdlhyajJiMW00L04xc2V6Z3J1NCtoN3JTUkFnQUNCRGdnSTZCM29CRlVnUUlBQUFRSWRFU2hoZlAvVXFVdHBldnRtTzhYZENIcEgra1kxQ0JBZ1FHQUVBZ0w2Q0RwWkV3a1FJRUNBd0JFRlNrQnZRdGhNSzhYTnRsazc0cGtPSTBDQUFBRUNCT1lXRU5EbkpsUUFBUUlFQ0JBWWxrQWQ0OWtRd3VsWnEweHhIMWIzYWcwQkFnUUlkRmhBUU85dzU2Z2FBUUlFQ0JCWXNVQUo0N0d1TDh4U2Vidmwyb29yNFhJRUNCQWdRR0NzQWdMNldIdGV1d2tRSUVDQXdHTUV3blI2ZmZiV2JKMjR4eHpvWlFJRUNCQWdRR0NoQWdMNlFqa1ZSb0FBQVFJRStpOFFRcnhXaFRTR0hzdEc2UDF2a0JZUUlFQ0FBSUdlQ0Fqb1Bla28xU1JBZ0FBQkFxc1NpR0ZpZ2JoVllic09BUUlFQ0JBNEpDQ2dIOEx3bEFBQkFnUUlqRnhnTnFVOWJiSG1RWUFBQVFJRUNLeGNRRUJmT2JrTEVpQkFnQUNCVGdya2RlSGFnQjdURlBmeWJMWlVYQ2VycTFJRUNCQWdRR0I0QWdMNjhQcFVpd2dRSUVDQXdFa0Z5cXJ0c1FyWERyTDZTUXR5SGdFQ0JBZ1FJSEI4QVFIOStHYk9JRUNBQUFFQ1F4YVkxQ0djTFEwTWxTSDBJZmUwdGhFZ1FJQkE1d1FFOU01MWlRb1JJRUNBQUlHMUNKUXdmdlhxMWVmUzZ1M243SysybGo1d1VRSUVDQkFZdVlDQVB2SnZBTTBuUUlBQUFRS0hCYWFuVHFVRjR1TGxGTkx6eTBiUUQrTjRUb0FBQVFJRWxpd2dvQzhaV1BFRUNCQWdRS0FuQWlXTXg3cStsS0s1YmRaNjBtbXFTWUFBQVFMREVoRFFoOVdmV2tPQUFBRUNCT1lTQ0J2eGJCWENxVmtoUnREbjBuUXlBUUlFQ0JBNG5vQ0Fmand2UnhNZ1FJQUFnYUVLdEdGOFdsOU1UL0p6dDZFUHRhZTFpd0FCQWdRNkt5Q2dkN1pyVkl3QUFRSUVDS3hlSURUTjlkbFY4NVpyUnRCWDN3V3VTSUFBQVFJakZoRFFSOXo1bWs2QUFBRUNCQjRTQ09INU5NVTlqWiszcThROTlMNFhDQkFnUUlBQWdhVUpDT2hMbzFVd0FRSUVDQkRvb1VBSUZvanJZYmVwTWdFQ0JBZ01RMEJBSDBZL2FnVUJBZ1FJRUZpUVFKTzJXZk1nUUlBQUFRSUUxaUd3c1k2THVpWUJBZ1FJRUNEUU9ZRjh6M21hMmg0TzdrSHZYQVZWaUFBQkFnUUlERjNBQ1ByUWUxajdDQkFnUUlEQTBRVEtxdTBoeHF2dEF1N1doenNhbTZNSUVDQkFnTURpQkFUMHhWa3FpUUFCQWdRSTlGa2dCL1JKTlFublNpT0NGZHo3M0pucVRvQUFBUUw5RkJEUSs5bHZhazJBQUFFQ0JCWXBVSWJMcjE2OStselZWT2RuRzZBYlFsK2tzTElJRUNCQWdNQVJCQVQwSXlBNWhBQUJBZ1FJREZ5Z2hQSHBxVk9ic1lxWDBoWnJ1YmtDK3NBN1hmTUlFQ0JBb0hzQ0FucjMra1NOQ0JBZ1FJREFxZ1ZLR0k5MWZTbmxjdHVzclZyZjlRZ1FJRUNBd0V4QVFQZXRRSUFBQVFJRUNCU0I5RWZCbVRSdWZpcDlrWWZRamFEN3ZpQkFnQUFCQWlzV0VOQlhETzV5QkFnUUlFQ2dnd0x0Q0hvSWwyYXBmSFliZWdkcnFrb0VDQkFnUUdEQUFnTDZnRHRYMHdnUUlFQ0F3SEVFUXRNYzdJRXVvQjhIenJFRUNCQWdRR0JCQWdMNmdpQVZRNEFBQVFJRWVpOFF3dk5WU0dQb3NWMGxydmZ0MFFBQ0JBZ1FJTkF6QVFHOVp4Mm11Z1FJRUNCQVlHa0N3UUp4UzdOVk1BRUNCQWdRT0lLQWdINEVKSWNRSUVDQUFJR0JDOHltdERlYkEyK241aEVnUUlBQWdVNExiSFM2ZGlwSGdBQUJBZ1FJTEZzZ3J3dlhsSXZFa081QnQ0RDdzc0dWVDRBQUFRSUVIaWRnQlAxeE1sNG5RSUFBQVFMakVTZ2o2Q0hHcStOcHNwWVNJRUNBQUlIdUNRam8zZXNUTlNKQWdBQUJBdXNRMktnbTRXeTVjTEFIK2pvNndEVUpFQ0JBZ0lDQTdudUFBQUVDQkFpTVc2QnNmYjYxdGZWY211aCszdjVxNC81bTBIb0NCQWdRV0srQWdMNWVmMWNuUUlBQUFRS2RFTmcvZGVweXJPSm0ybUl0MTZlRTlrNVVUQ1VJRUNCQWdNQ0lCQVQwRVhXMnBoSWdRSUFBZ1VjSWxEQWVKcE9MYVEvMEM0OTQzMHNFQ0JBZ1FJREFpZ1FFOUJWQnV3d0JBZ1FJRU9peVFKakVmUC81cVZrZGphQjN1YlBValFBQkFnUUdLeUNnRDdack5Zd0FBUUlFQ0J4Sm9JVHh5VFJjbXFWeXQ2RWZpYzFCQkFnUUlFQmc4UUlDK3VKTmxVaUFBQUVDQkhvbk1BMU4yZ085UFBLZTZFYlFaeGcrRVNCQWdBQ0JWUW9JNkt2VWRpMENCQWdRSU5CUmdSRHJxK2tlOUNvdEVtY0V2YU45cEZvRUNCQWdNSHdCQVgzNGZheUZCQWdRSUVEZzZRSVdpSHU2a1NNSUVDQkFnTUNTQlFUMEpRTXJuZ0FCQWdRSWRGeGdObUxlWE81NFBWV1BBQUVDQkFnTVhtQmo4QzNVUUFJRUNCQWdRT0JKQW0xQWp6SGRnMjUyKzVPZ3ZFZUFBQUVDQkpZdFlBUjkyY0xLSjBDQUFBRUMzUllvcVR5RXNOVldNOStJN2tHQUFBRUNCQWlzUTBCQVg0ZTZheElnUUlBQWdlNEk1SUErU1F2RTVYM1FyZDllRVB4RGdBQUJBZ1RXSXlDZ3I4ZmRWUWtRSUVDQVFCY0V5bWo1MXRiV21UUzcvY0pzZ3JzUjlDNzBqRG9RSUVDQXdDZ0ZCUFJSZHJ0R0V5QkFnQUNCSWxEQytQVDA2YzIwdTlwbTJtSXR2eWlnKytZZ1FJQUFBUUpyRWhEUTF3VHZzZ1FJRUNCQW9BTUNiUml2NjB1cEx1YzdVQjlWSUVDQUFBRUNveFlRMEVmZC9ScFBnQUFCQWdUU2tQbEdQSlB1UWM4N3UrUWhkQ1BvdmlrSUVDQkFnTUNhQkFUME5jRzdMQUVDQkFnUTZJQkFDZU9UL2JBNVMrV3oyOUE3VUROVklFQ0FBQUVDSXhRUTBFZlk2WnBNZ0FBQkFnUU9DMHhEay9aQVQ0OW9JL1RETHA0VElFQ0FBSUZWQ3dqb3F4WjNQUUlFQ0JBZzBER0JFT3ZuMHhUM1ZLdDJsYmlPVlU5MUNCQWdRSURBYUFRRTlORjB0WVlTSUVDQUFJSEhDSVJnZ2JqSDBIaVpBQUVDQkFpc1VrQkFYNlcyYXhFZ1FJQUFnVzRKelBaVmF5NTNxMXBxUTRBQUFRSUV4aWtnb0krejM3V2FBQUVDQkFqa09lMU5aa2g3b0Y5dlo3ZlBsb3BqUTRBQUFRSUVDS3hGUUVCZkM3dUxFaUJBZ0FDQlRnaTBJK2doYkpYYXlPZWQ2QlNWSUVDQUFJSHhDZ2pvNCsxN0xTZEFnQUFCQWxWMXU5cElDOFNkblZHSTZMNG5DQkFnUUlEQUdnVUU5RFhpdXpRQkFnUUlFRmlqUUFuam03L3c0Yk5wYzdVTE5rQmZZMCs0TkFFQ0JBZ1FtQWtJNkw0VkNCQWdRSURBaUFXYUMxKzVuTzVCMzV6dHNHWUVmY1RmQzVwT2dBQUJBdXNYRU5EWDN3ZHFRSUFBQVFJRTFpRlF3dmd6K3hzWDBoVDNjK3VvZ0dzU0lFQ0FBQUVDOXdzSTZQZDcrSW9BQVFJRUNJeExZR01qMzM5K2F0Wm9JK2pqNm4ydEpVQ0FBSUdPQ1Fqb0hlc1ExU0ZBZ0FBQkFpc1NLR0c4MmQvZm5LVnl0Nkd2Q041bENCQWdRSURBNHdRRTlNZkplSjBBQVFJRUNJeEFvQW5oK3F5WmVVOTBJK2dqNkhOTkpFQ0FBSUh1Q2dqbzNlMGJOU05BZ0FBQkFrc1hDSFc4bXU1QnI5SWljVWJRbDY3dEFnUUlFQ0JBNE1rQ0F2cVRmYnhMZ0FBQkFnU0dMUkRyODhOdW9OWVJJRUNBQUlIK0NBam8vZWtyTlNWQWdBQUJBb3NVS0NQbUljWXJpeXhVV1FRSUVDQkFnTURKQlFUMGs5czVrd0FCQWdRSTlGbWdCUFFZNHZYWkh1aDlib3U2RXlCQWdBQ0JRUWdJNklQb1JvMGdRSUFBQVFMSEZtanZPWS9WVm50bXZoSGRnd0FCQWdRSUVGaW5nSUMrVG4zWEprQ0FBQUVDNnhPSTFlMXFJNFJ3cGxSQlBGOWZUN2d5QVFJRUNCQ1lDUWpvdmhVSUVDQkFnTUQ0QkVvY3YveUxMK2R3Zm1HMmZMdUlQcjd2QXkwbVFJQUFnWTRKQ09nZDZ4RFZJVUNBQUFFQ0t4QW9ZYnk1OE9YTGFYZTF6ZGs5NkFMNkN1QmRnZ0FCQWdRSVBFbEFRSCtTanZjSUVDQkFnTUF3QlVvWUQvc2JGMUx6emcyemlWcEZnQUFCQWdUNkp5Q2c5Ni9QMUpnQUFRSUVDQ3hFNE5Sa2NxNEtZU01WbG1lNUcwRmZpS3BDQ0JBZ1FJREF5UVVFOUpQYk9aTUFBUUlFQ1BSVm9KM2l2cisvT1V2bHM5dlErOW9jOVNaQWdBQUJBc01RRU5DSDBZOWFRWUFBQVFJRWppM1FoSEM5bkJUTENQcXh6M2NDQVFJRUNCQWdzRmdCQVgyeG5rb2pRSUFBQVFLOUVRaDF2SnFtdUtmNlJpUG92ZWsxRlNWQWdBQ0JJUXNJNkVQdVhXMGpRSUFBQVFKUEVtaENYaVRPZ3dBQkFnUUlFT2lJZ0lEZWtZNVFEUUlFQ0JBZ3NFS0JNbUtleHM0dnIvQ2FMa1dBQUFFQ0JBZzhSVUJBZndxUXR3a1FJRUNBd01BRThwejJKcmNwaG5pOW5kMCtXeXB1WUEzVkhBSUVDQkFnMERjQkFiMXZQYWErQkFnUUlFQmdmb0gybnZOWVhTbEZCVnVzelUrcUJBSUVDQkFnTUwrQWdENi9vUklJRUNCQWdFRC9CRzdkT2hWQ09OZS9pcXN4QVFJRUNCQVlyb0NBUHR5KzFUSUNCQWdRSVBBb2dUS2YvZUlYdnBERCtYbkx0eitLeUdzRUNCQWdRR0E5QWh2cnVheXJFaUJBZ0FBQkFtc1NPTGpoZkRQR3VEbXJ3OEZyYTZxU3l4SWdRSUFBQVFKWndBaTY3d01DQkFnUUlEQkNnZFAxTkcreFpvcjdDUHRla3drUUlFQ2d1d0lDZW5mN1JzMElFQ0JBZ01EU0JFSXpPVnVGY0RDVHpnajYwcVFWVElBQUFRSUVqaTRnb0IvZHlwRUVDQkFnUUdBSUFpV01OOVgrNVZrcWR4djZFSHBWR3dnUUlFQmdFQUlDK2lDNlVTTUlFQ0JBZ01BeEJacjYrdXlNdkNlNkVmUmo4am1jQUFFQ0JBZ3NRMEJBWDRhcU1na1FJRUNBUU1jRllvaGJhWXA3VmFXVjRqcGVWZFVqUUlBQUFRS2pFUkRRUjlQVkdrcUFBQUVDQkE0SmhIRCswRmVlRWlCQWdBQUJBaDBRRU5BNzBBbXFRSUFBQVFJRVZpaFFSc3hEVTIydDhKb3VSWUFBQVFJRUNCeEJRRUEvQXBKRENCQWdRSURBZ0FSS1FHK3FlRDFOYng5UXN6U0ZBQUVDQkFqMFgwQkE3MzhmYWdFQkFnUUlFRGlPUUY0VUxxMEtGNjYwSitVYjBUMElFQ0JBZ0FDQkxnZ0k2RjNvQlhVZ1FJQUFBUUtyRVRnSTR4c3BscDhwbHp4NFpUWFhkeFVDQkFnUUlFRGdDUUlDK2hOd3ZFV0FBQUVDQklZb2NPbWxsODdGS2w2WVRYQVgwWWZZeWRwRWdBQUJBcjBVRU5CNzJXMHFUWUFBQVFJRVRpUlF3bmlNNzIxV01hU1BkcjI0RTVYa0pBSUVDQkFnUUdEaEFnTDZ3a2tWU0lBQUFRSUVPaXRRQXZycHNIRXhiWUIrcnJPMVZERUNCQWdRSURCU0FRRjlwQjJ2MlFRSUVDQXdYb0VRTjg1VUlVeVNRQjVDTjhWOXZOOEtXazZBQUFFQ0hSTVEwRHZXSWFwRGdBQUJBZ1NXS0ZEQ2VCUDNyc3hTdVgzV2xvaXRhQUlFQ0JBZ2NGd0JBZjI0WW80blFJQUFBUUo5RjJqcTY2VUpzU3BicnZXOU9lcFBnQUFCQWdTR0lpQ2dENlVudFlNQUFRSUVDQnhSSUlhNGxhYTRwNk1Ob0IrUnpHRUVDQkFnUUdBbEFnTDZTcGhkaEFBQkFnUUlkRWVnRHVGOGQycWpKZ1FJRUNCQWdNQ0JnSUIrSU9FekFRSUVDQkFZdmtBWk1vOU50VFg4cG1vaEFRSUVDQkRvbjRDQTNyOCtVMk1DQkFnUUlIQVNnVHludmR4ejNsVHhlcnNIK215cHVKT1U1aHdDQkFnUUlFQmc0UUlDK3NKSkZVaUFBQUVDQkRvclVMWlZDMVc0VW1xWW5uUzJwaXBHZ0FBQkFnUkdLQ0NnajdEVE5aa0FBUUlFUml4dzY5WkdXaC91eklnRk5KMEFBUUlFQ0hSV1FFRHZiTmVvR0FFQ0JBZ1FXS2hBR1MyLzhQYmI1Mk9NRjYzZnZsQmJoUkVnUUlBQWdZVUlDT2dMWVZRSUFRSUVDQkRvdkVBSjZNK0dzSm0yVjl0czcwRTN4YjN6dmFhQ0JBZ1FJREFxQVFGOVZOMnRzUVFJRUNBd2RvRlkxeGVxS3BqaVB2WnZCTzBuUUlBQWdVNEtDT2lkN0JhVklrQ0FBQUVDeXhFSU1aNnBRdGlZbFc2UnVPVXdLNVVBQVFJRUNKeElRRUEvRVp1VENCQWdRSUJBN3dSS0dKL0d1RFZMNVdYTHRkNjFRb1VKRUNCQWdNQ0FCUVQwQVhldXBoRWdRSUFBZ1FjRlF0TmNuNzFXdGx4NzhIMWZFeUJBZ0FBQkF1c1RFTkRYWisvS0JBZ1FJRUJnNVFMcEh2UXJhWXA3V2ljdVdzaDk1Zm91U0lBQUFRSUVuaXdnb0QvWng3c0VDQkFnUUdCUUFuV0k1d2ZWSUkwaFFJQUFBUUlERWhEUUI5U1pta0tBQUFFQ0JKNGdVRWJNbTZhNitvUmp2RVdBQUFFQ0JBaXNVZUJnRmRjMVZzR2xDUkFnUUlBQWdSVUlsSUFlcW5pOW1qMWJ3VFZkZ2dBQkFnUUlFRGlHZ0JIMFkyQTVsQUFCQWdRSTlGaWdyTm9lcTNDNXRDRlV0bGpyY1dlcU9nRUNCQWdNVTBCQUgyYS9haFVCQWdRSUVEZ3NNQXZqdHpkU0xEOXorQTNQQ1JBZ1FJQUFnZTRJQ09qZDZRczFJVUNBQUFFQ1N4VzRlUE5YejZmVjJ5L08xbTgzZ3I1VWJZVVRJRUNBQUlIakN3am94emR6QmdFQ0JBZ1E2SnZBUVJqZlRQZWZiNlk5MW5MOUQxN3JXMXZVbHdBQkFnUUlERlpBUUI5czEyb1lBUUlFQ0JDNEoxREMrT202dm1DSyt6MFRUd2dRSUVDQVFPY0VCUFRPZFlrS0VTQkFnQUNCNVFpRXBqbGJoVEJKcGVjaGRDUG95MkZXS2dFQ0JBZ1FPTEdBZ0g1aU9pY1NJRUNBQUlIZUNKUXdQbzM3VzdOVVh1YTQ5NmIyS2txQUFBRUNCRVlpSUtDUHBLTTFrd0FCQWdRSWhDWmNMd3F4S2x1dUVTRkFnQUFCQWdTNkpTQ2dkNnMvMUlZQUFRSUVDQ3hOSU5iMWxUVEZQWlZ2QUgxcHlBb21RSUFBQVFKekNBam9jK0E1bFFBQkFnUUk5RW1nRHZGOG4rcXJyZ1FJRUNCQVlHd0NBdnJZZWx4N0NSQWdRR0NNQW1YSXZHbXFxd2JQeDlqOTJreUFBQUVDZlJIWTZFdEYxWk1BQVFJRUNCQTRrVUNlMDE3dU9ROVZiTzlCdDREN2lTQ2RSSUFBQVFJRWxpMWdCSDNad3NvblFJQUFBUUxyRnlqYnFzVVFMcGVxQkFsOS9WMmlCZ1FJRUNCQTRHRUJBZjFoRTY4UUlFQ0FBSUVoQ1pTZDFWNTk5ZFZUcVZGbmh0UXdiU0ZBZ0FBQkFrTVRFTkNIMXFQYVE0QUFBUUlFSGlIdy8zM3hpeGVxR0M5YXYvMFJPRjRpUUlBQUFRSWRFUkRRTzlJUnFrR0FBQUVDQkpZa1VFYlFuNjNyUzJtQnVNMFUwdk5seW10THVwNWlDUkFnUUlBQWdSTUtDT2duaEhNYUFRSUVDQkRvazBDY1RDNmtXRzZLZTU4NlRWMEpFQ0JBWUhRQ0F2cm91bHlEQ1JBZ1FHQ01BcUZwemxZaFRHWnRONEkreG04Q2JTWkFnQUNCemdzSTZKM3ZJaFVrUUlBQUFRSnpDWlF3M3NTNE5VdmxaY3UxdVVwME1nRUNCQWdRSUxBVUFRRjlLYXdLSlVDQUFBRUNIUk5vbXRrZTZPbE9kUGVnZDZ4elZJY0FBUUlFQ0xRQ0FycnZCQUlFQ0JBZ01BS0Jlaks1bkthNFYybVJPQXU1ajZDL05aRUFBUUlFK2lrZ29QZXozOVNhQUFFQ0JBZ2NTeUNHZVA1WUp6aVlBQUVDQkFnUVdMbUFnTDV5Y2hja1FJQUFBUUlyRlNnajVtbmcvUG1WWHRYRkNCQWdRSUFBZ1dNTGJCejdEQ2NRSUVDQUFBRUNmUkpvcDdUSG1PNUJkL3Q1bnpwT1hRa1FJRUJnZkFKRzBNZlg1MXBNZ0FBQkF1TVNhRmR0RC9WbWFYWkl1NkY3RUNCQWdBQUJBcDBVRU5BNzJTMHFSWUFBQVFJRUZpTFFodkZidDA2bDBzNHNwRVNGRUNCQWdBQUJBa3NUTU1WOWFiUUtKa0NBQUFFQzNSQTQvN25QWFVqajVoZGpHOWVOb0hlalc5U0NBQUVDQkFnOEpHQUUvU0VTTHhBZ1FJQUFnY0VJbEREK2JBaWI2ZmJ6L0pFZkF2cGd1bGREQ0JBZ1FHQm9BZ0w2MEhwVWV3Z1FJRUNBd0FjQ2JSaWZOT2RUTERmRi9RTVh6d2dRSUVDQVFDY0ZCUFJPZG90S0VTQkFnQUNCQlFyRWpiTlZDUGwzdm1YY0Y4aXFLQUlFQ0JBZ3NHZ0JBWDNSb3NvalFJQUFBUUxkRVNnajZFM1RYSjNOYTI4bnVYZW5mbXBDZ0FBQkFnUUlIQklRMEE5aGVFcUFBQUVDQkFZcEVKcTBCM3A2eEtyZGNtMlFqZFFvQWdRSUVDRFFmd0VCdmY5OXFBVUVDQkFnUU9DSkFyR2FYRWxUM05NeEJ0Q2ZDT1ZOQWdRSUVDQ3daZ0VCZmMwZDRQSUVDQkFnUUdEWkFuV0k1NVo5RGVVVElFQ0FBQUVDOHdzSTZQTWJLb0VBQVFJRUNIUlZvRXhwanpFKzMxWndkaWQ2VjJ1clhnUUlFQ0JBWU9RQ0F2ckl2d0UwbndBQkFnUUdLL0RCblBhbTJxbWk2ZTJEN1drTkkwQ0FBSUhCQ0Fqb2crbEtEU0ZBZ0FBQkFnOEp0TnVxMWVGaWVTZWszZEE5Q0JBZ1FJQUFnYzRLQ09pZDdSb1ZJMENBQUFFQ2N3bTBZZnpsbDArblVzN09WWktUQ1JBZ1FJQUFnWlVJQ09ncllYWVJBZ1FJRUNDd0hvRnpYLzd5aFRTOS9lSnNncnNSOVBWMGc2c1NJRUNBQUlFakNRam9SMkp5RUFFQ0JBZ1E2SjFBQ2VQUFRpYWJxZWFYM0lQZXUvNVRZUUlFQ0JBWW9ZQ0FQc0pPMTJRQ0JBZ1FHSkhBWkhJK3RmYTVFYlZZVXdrUUlFQ0FRRzhGQlBUZWRwMktFeUJBZ0FDQnB3dUVHTTlXSVV4bVI1cmkvblF5UnhBZ1FJQUFnYlVKQ09ocm8zZGhBZ1FJRUNDd1ZJRVN4cWN4WHAybDhySW4rbEt2cUhBQ0JBZ1FJRUJnTGdFQmZTNCtKeE1nUUlBQWdXNExoS3E1WG1vWXF4elFqYUIzdTd2VWpnQUJBZ1JHTGlDZ2ovd2JRUE1KRUNCQVlOZ0NhWGI3WnByaW5obzVXOGQ5Mk0zVk9nSUVDQkFnMEdzQkFiM1gzYWZ5QkFnUUlFRGdhUUx4d3RPTzhENEJBZ1FJRUNEUURRRUJ2UnY5b0JZRUNCQWdRR0RSQW1YSVBGYngrVVVYckR3Q0JBZ1FJRUJnT1FJQytuSmNsVXFBQUFFQ0JOWXQwQzRLMTFUWDJ6M1EzWDYrN2c1eGZRSUVDQkFnOERRQkFmMXBRdDRuUUlBQUFRTDlGR2h2T3EvRHhWTDlZSUc0Zm5haldoTWdRSURBbUFRRTlESDF0cllTSUVDQXdGZ0UydUh5VjE4OW5ScDhkaXlOMWs0Q0JBZ1FJTkIzQVFHOTd6Mm8vZ1FJRUNCQTRERUM1Ny80eFF0cGV2dWwySTZsbStQK0dDY3ZFeUJBZ0FDQnJnZ0k2RjNwQ2ZVZ1FJQUFBUUtMRXloaC9ObTYza3hGWHBwdHNTYWdMODVYU1FRSUVDQkFZQ2tDQXZwU1dCVktnQUFCQWdUV0pwQ0RlUG45SGtPNS8veTVXVTBFOUxWMWlRc1RJRUNBQUlHakNRam9SM055RkFFQ0JBZ1E2S0xBUVJpZlZMZHZiNlFLVG1hVm5PYlBNY1pKRlVMK1hkOU9jcCs5NlJNQkFnUUlFQ0RRVFlIOHk5eURBQUVDQkFnUTZMN0FRUmcvR0FuUG9Uc0g4VFo4di9iYXZSWnNiMitmK2QwUW5nc2gvb0VxTGQ2ZURzakhISngzN3poUENCQWdRSUFBZ1c0SkNPamQ2ZysxSVVDQUFBRUNCd0p0SUwrZGd2VnJKV0RuTUY1R3hnOE9TSjlQWFhycGhaMk52Y21IWWwxOWJUcmhxMU1PZitWT1ZlMmNqdkZHV2h6dXdpeS9tekYzQ00xVEFnUUlFQ0RRVlFFQnZhczlvMTRFQ0JBZ01EYUJIS0p6S004ZkI2UGoweFRPRHg2VGF6ZHZ2aml0OWwrTk1YeDlGY00vbXdONTNJOGZqblU0RjBJK0xUMVNLajhvb0gzQnZ3UUlFQ0JBZ0VCZkJBVDB2dlNVZWhJZ1FJREFFQVZ5S0QrNFIveSswZkZyMTY2ZGJaNmRmQ1NGOFc5Sm1mdGJVMlQvaHYzWWZGV282Z3R0R0c5bnRwY29uMjQyajAzVG50OEc5WnpSRDM4TTBVNmJDQkFnUUlEQTRBUUU5TUYxcVFZUklFQ0FRSWNGY21nK0dDbHYwdk9EaitybGwxOSs1a3Z2dmZkS1U5ZS9QMVROUHorTjRadmlOTDRVNm5yU1p1NllGMzNMZWJ5cG1pYWZseUo0ZWFjdEx3Uy8wd3VLZndnUUlFQ0FRSDhGL0RMdmI5K3BPUUVDQkFqMFJ5Q3ZycDdEK1g3NnVEZFN2blhqeG5ZSzNSOU5pN2w5NXhmdnZQOEgwaEZmbXlKMyt0MWNweUNlb25qKy8razBuM01ReHR0UmNXRzhrUGlIQUFFQ0JBZ01UVUJBSDFxUGFnOEJBZ1FJZEVIZzhFaDVEdVQzUXZtVkYxOThwWnBPLzRWMHdIZWxlZWtwbklmTFZkb0pMYlNqNHltUU55bVFwMlRlYm84VzBtZS9xN3ZRbytwQWdBQUJBZ1JXSU9DWC9ncVFYWUlBQVFJRVJpT1FnM2tlTGI4dmxGKytlZlBWdW1uKzVUUkMvdDF4dXYvTmFkcjZzM2t4dHpKQ0h1TTBUVmxQSzd1VjZlb3BrT2NSOUZ5TUJ3RUNCQWdRSURBMkFRRjliRDJ1dlFRSUVDQ3dhSUhEbytWNU9ucVprbjUxZC9mbEdPTDNwSy8vV0JvcC8rYXFEcWRMS0U4dnROUFcwMm1oaFBsSkN1ZUxycFB5Q0JBZ1FJQUFnUjRLQ09nOTdEUlZKa0NBQUlGT0NPUlVuVWZMY3lBdlU5Z3Yzcnk1dWRFMGZ6aFU4VTgwVmJ5ZFpxbWZiVWZLMHgzbFRacTZmbStVM0xUMVR2U2dTaEFnUUlBQWdZNEpDT2dkNnhEVklVQ0FBSUhPQ3h4ZThLMk1sbC9lMmZsb3VvMzhCOU5VOWU5SmcrRTdaWXA2dnFlOExQQTJHeWwzTDNubk8xWUZDUkFnUUlEQXVnVUU5SFgzZ09zVElFQ0FRRjhFOHUvTXZMMVpHUzIvc0x0NytYUlZmVzlhM2UwSFV4Yi90cnltVzVyS25rYkt5L3ZwbnZLMEZMdFEzcGUrVlU4Q0JBZ1FJTkFKQVFHOUU5MmdFZ1FJRUNEUVVZR0RhZXc1bExlajVYbkJ0emo5b1JUS3Z5L2RWNzZkRjNyTHE3MlYwZktjMHR2N3lqdmFITlVpUUlBQUFRSUV1aXdnb0hlNWQ5U05BQUVDQk5ZbEVLcmI2Zjd5MTBvb0w4SDh5czdPZDZRUjhUOFhtdWE3cTdwKzVsNG9UeThhTFY5WE43a3VBUUlFQ0JBWWxvQ0FQcXorMUJvQ0JBZ1FtRStnVHFmbmovMVpPQStYZDNmL1dIcmh6OGRRL2NHOHhsdGE3QzFOZEk5NzZaaTgrcnJmby9ONU81c0FBUUlFQ0JBNEpPQVBpME1ZbmhJZ1FJREFhQVUrQ09ZcGZsKzdkdTFzYytyVW4yaEM5ZWZTSFBkYlJTWGRZSjdDZVpOQ2VUNzIxR2lsTkp3QUFRSUVDQkJZbW9DQXZqUmFCUk1nUUlCQUR3VHVDK2JiMjl0YmQrcjZSOUlONS85bXVyLzhxMEplaWIycy9KWVdod3ZWeGl5Yzk2Qlpxa2lBQUFFQ0JBajBVVUJBNzJPdnFUTUJBZ1FJekN0d1h6RGZldkhGNjdIWi85RTdWZmpoTkkzOWVncmxhYTMyNmNHKzVYbmhONzh2NXhWM1BnRUNCQWdRSVBCVUFYOXdQSlhJQVFRSUVDQXdJSUc2dXAzdU1XOFhmMnRtd2Z6SDRuVC96NFM2dnBJbXNhZDd6RXN3dDBYYWdEcGRVd2dRSUVDQVFGOEVCUFMrOUpSNkVpQkFnTUI4QXJmVEtIZ081cTlWVGRuRFBNWi9Ld1h6SDAzQi9ISzdmM2xqNGJmNWhKMU5nQUFCQWdRSXpDa2dvTThKNkhRQ0JBZ1E2THhBL2wwM3plSDhwWmRlZXZiTDA3MGZUUlBZZnlKdGxYYTlTbXUrcFlYZjJtQnU0YmZPZDZRS0VpQkFnQUNCb1FzSTZFUHZZZTBqUUlEQWVBWHlmZVpwRWZheWwzbDFaWGYzQjM1M2YrL2ZUeVBtWDFPQ2VaeHRsU2FZai9jN1JNc0pFQ0JBZ0VESEJQSWZMeDRFQ0JBZ1FHQklBcUc2ZFN0dmc1WTJMSyttVzd1N2YzRHJ4dTdQcHNYZmZqcDlmRTNNaTcrMTcrVmovQjVNQ0I0RUNCQWdRSUJBTndTTW9IZWpIOVNDQUFFQ0JCWWprSCt2N1ZldnY3NTNlWHY3UnBpRXY1S21zLy9KUEl5ZXByS25WZG56L3dXLyt4WmpyUlFDQkFnUUlFQmd3UUwrU0Zrd3FPSUlFQ0JBWUMwQ2VTUThmK1RSOFdwclorZkhZeDMrb3pSaWZqRUY4N3hyMmpSRmM3L3pNbzRIQVFJRUNCQWcwRmtCZjZ4MHRtdFVqQUFCQWdTT0tKQi9sNVZwNjVkM2RuNWZDTlhmVEF2QWZjdWgrOHczaFBNalNqcU1BQUVDQkFnUVdLdUFnTDVXZmhjblFJQUFnVGtFN28yYWIyOXZuN2xUaC84NGxmVVgwcWg1VmU0ekR5Ry9uKzh6OXlCQWdBQUJBZ1FJOUVKQVFPOUZONmtrQVFJRUNEd2djRy9VL01yTjdYL3hUaFArZGxxZC9TTmxPbnNUMDNSMjk1ay80T1ZMQWdRSUVDQkFvQWNDZVhUQmd3QUJBZ1FJOUVYZ1lJWDIvZDNkM2VmUzFtbi9lUlhyL3pPTm11ZHdudmN6enh1citZL1BmZWxOOVNSQWdBQUJBZ1R1RS9CSHpIMGN2aUJBZ0FDQkRndE1VdDJtZVlYMnF6ZTN2KzI5R1Avck5JdjlsUlRNMHlwd2FVdTFZRHA3aC90TzFRZ1FJRUNBQUlFakNCaEJQd0tTUXdnUUlFQmd6UUx0dnViVFhJdkxOM2IrZzZhcC8wSGFMKzJWbE0zenFIbmVQTTEvY0Y1ekY3azhBUUlFQ0JBZ01MK0FQMmptTjFRQ0FRSUVDQ3hQSUc5aFBybTNyM2tkL2s0YU5mK09HSnUwcjNtMW45YURzd2pjOHV5VlRJQUFBUUlFQ0t4WXdBajZpc0ZkamdBQkFnU09MSkNudE9mSC90YU43ZThKZGZpRmRLLzVkNVFWMnFzcUdqVnZjZnhMZ0FBQkFnUUlERWRBUUI5T1gyb0pBUUlFaGlTUVozamxLZTN4eW8yZHYxcFY5ZitXbm0vR0dQZG1LN1Rua1hVUEFnUUlFQ0JBZ01DZ0JFeHhIMVIzYWd3QkFnUUdJUERxcTZlclQzM3E3c1diTnpkUE5jMy9sQUw1ZCtYdDAxTExtdlJoU3ZzQXVsZ1RDQkFnUUlBQWdVY0xDT2lQZHZFcUFRSUVDS3hlb0wzZlBJWHpTenM3MzdBUm0vKzFxc09IOGtKdzZZMzgrK3BneXZ2cWErYUtCQWdRSUVDQUFJRVZDSmppdmdKa2x5QkFnQUNCcHdyazMwZjVZLy95N3U3M2JvVHdEOVB6RCtXOXpWTTR6NlBtcHJRbkJBOENCQWdRSUVCZzJBSUMrckQ3VitzSUVDRFFCNEU4TXA2bnIwK3Y3T3o4VkIycXZ4dXIrRXdLNS92cE5WUGErOUNENmtpQUFBRUNCQWdzUk1BVTk0VXdLb1FBQVFJRVRpaVFmdy9sSUY1dDdlNytWMmxLKzUrZTNXK2VWbWtQZmtlZEVOVnBCQWdRSUVDQVFEOEYvUEhUejM1VGF3SUVDUFJmNEhhNnIveTFGTTVmZXVuWnJmMzlmTDk1WGd4dUx6VXMvMjR5dzZ2L1Bhd0ZCQWdRSUVDQXdERUYvQUYwVERDSEV5QkFnTUFDQkc3ZE9wWEQrYzdPenBVcisvdi85NkZ3N243ekJmQXFnZ0FCQWdRSUVPaW5nSURlejM1VGF3SUVDUFJYSUlmejExL2YyOXpldm5rblZQOVBDTld0dEZMNzNkUWc5NXYzdDFmVm5BQUJBZ1FJRUZpQWdDbnVDMEJVQkFFQ0JBZ2NVU0R2Y2Y3NjYzZTN0cmUvSms3cW4wbG5YWTh4NXBYYVR4K3hCSWNSSUVDQUFBRUNCQVlyWUFSOXNGMnJZUVFJRU9pWVFCNDVUM3VjYjEyL2ZpdE5hZjhIS1pTWGNKNXFhZVM4WTEybE9nUUlFQ0JBZ01CNkJJeWdyOGZkVlFrUUlEQXVnZG0wOWl1N3U5K2F0bEQ3bWJSQyszTlYza1l0Qk9GOFhOOEpXa3VBQUFFQ0JBZzhRY0FJK2hOd3ZFV0FBQUVDQ3hBNEZNNnJHUDkrVmFWd25xYTEyMFp0QWJhS0lFQ0FBQUVDQkFZbElLQVBxanMxaGdBQkFoMFRtSVh6U3pzNy8weFZwWEFld3BuME9lOTdidVM4WTEybE9nUUlFQ0JBZ01ENkJVeHhYMzhmcUFFQkFnU0dLVEFMNTJWQnVEcjhINm1SWjhySXVYQSt6UDdXS2dJRUNCQWdRR0J1QVNQb2N4TXFnQUFCQWdRZUliQ1J0MUpMOTV6dnhEcjh2YlFnM0F2bG5uUGgvQkZVWGlKQWdBQUJBZ1FJdEFJQ3V1OEVBZ1FJRUZpMFFKNmR0WC94NXMzTk5KMzk3NFVRZGh2M25DL2FXSGtFQ0JBZ1FJREFBQVVFOUFGMnFpWVJJRUJnalFLVGRPMXlqL2xHTS8zZlV6ai8ydGsrNSs0NVgyT251RFFCQWdRSUVDRFFEd0VCdlIvOXBKWUVDQkRvZzBEK25UTE5GYjF5WS9kL0NYWDlyV25rL0c3NlVqalBLQjRFQ0JBZ1FJQUFnYWNJQ09oUEFmSTJBUUlFQ0J4WklOMXFuc0w1N3U1L2tVYk8vMGhzbXIzMHd1a2puKzFBQWdRSUVDQkFnTURJQlFUMGtYOERhRDRCQWdRV0luQzd5dmVkVDdkdTdQeEVxTU9QeGVuVVZtb0xnVlVJQVFJRUNCQWdNQ1lCQVgxTXZhMnRCQWdRV0liQXE2K2VybDZyOXJkdWJuOTNWWVcva1ViT1k5cnYzTytYWlZncmt3QUJBZ1FJRUJpMGdIM1FCOTI5R2tlQUFJR2xDMnhVbi9yVTNTdlhyNzhTbS9BL3AxWGI4d1diOUpFWGkvTWdRSUFBQVFJRUNCQTRob0FSam1OZ09aUUFBUUlFN2hNb0s3WmZ1M2J0YkxVeCtidnB2dk16Vll4NWFydHdmaCtUTHdnUUlFQ0FBQUVDUnhNUTBJL201Q2dDQkFnUWVGaWdESmZ2bjlyNDcxTTQvN3F5WW5zSVptWTk3T1FWQWdRSUVDQkFnTUNSQkFUMEl6RTVpQUFCQWdUdUU3aDFLMitkMXFRVjIvKzl0SjNhOTFxeC9UNGRYeEFnUUlBQUFRSUVUaVFnb0orSXpVa0VDQkFZc1VBTzU2Ky92cmUxcy9QdFZhaitXZ3JuR2NPMDloRi9TMmc2QVFJRUNCQWdzQmdCQVgweGprb2hRSURBV0FRbU9aeWYzOW01RWtQNDZWbWpwK216M3lkaitRN1FUZ0lFQ0JBZ1FHQnBBdjZnV2hxdGdna1FJREE0Z1pCYVZJYkxUOWZodjAzN25lL0VHUGZTYTBiUEI5ZlZHa1NBQUFFQ0JBaXNRMEJBWDRlNmF4SWdRS0NQQXJkdTVRWGc0cFViTzM4cExRcjNSK0owdXA4U2U3NFgzWU1BQVFJRUNCQWdRR0FCQWdMNkFoQVZRWUFBZ2NFTHpPNDd2M3pqeGgrcXF2QlgwMzNuc1FyQnlQbmdPMTREQ1JBZ1FJQUFnVlVLQ09pcjFIWXRBZ1FJOUZPZzNIZWVWbXpmcVdQelA4NmFrS2U2NXludkhnUUlFQ0JBZ0FBQkFnc1NFTkFYQktrWUFnUUlERlFnaC9DOENGeDZ4UDhoalpwdlZlNDdiem44UzRBQUFRSUVDQkJZc0lDQXZtQlF4UkVnUUdCUUFyZXFmTjk1dGJXNys1ZlRmdWZmTVZzVXpuM25nK3BralNGQWdBQUJBZ1M2SWxEKzhPcEtaZFNEQUFFQ0JEb2tjQ3N0QVBkNlZmWTdqNkg2RDZ0ODMzblZCdllPMVZKVkNCQWdRSUFBQVFLREVUQ0NQcGl1MUJBQ0JBZ3NWS0RPNFh6end4KytHT3ZxdjV1VjdMN3poUklyakFBQkFnUUlFQ0J3djRDQWZyK0hyd2dRSUVDZ0ZTZ0x3TlYzNy95dEVPcVg3SGZ1MjRJQUFRSUVDQkFnc0h3QkFYMzV4cTVBZ0FDQmZnbmtMZFhTd25CWGRuYis5VkNISDRqVFpwclN1bHVpK3RXTGFrdUFBQUVDQkFqMFVFQkE3MkducVRJQkFnU1dLSkNtdHIrK2w3ZFVTNXVvL1djeDMzWWV5blpxdGxSYklycWlDUkFnUUlBQUFRSlpRRUQzZlVDQUFBRUNCd0lmaFBBUS84dTBhdnVWOU1aZSt2Qzc0a0RJWndJRUNCQWdRSURBRWdYODBiVkVYRVVUSUVDZ1Z3SzNidVZwN0UyYTJ2NkQ2Yjd6NzhsVDI5UFh0bFRyVlNlcUxBRUNCQWdRSU5CbkFRRzl6NzJuN2dRSUVGaWNRSm5hdm5YanhuYWEwUDZmeGlZdDJONU9iVi9jRlpSRWdBQUJBZ1FJRUNEd1JBRUIvWWs4M2lSQWdNQm9CTnJwN1RIK2RWUGJSOVBuR2txQUFBRUNCQWgwVEVCQTcxaUhxQTRCQWdSV0xuQ3JUR09mYnQzWS9wNDBhdjc5YWZRODczZHUxZmFWZDRRTEVpQkFnQUFCQW1NWEVOREgvaDJnL1FRSWpGMGdWSzlYZTl2YjIyZGlESDhqcmRtZUgvblRCd3ZHbFpmOFE0QUFBUUlFQ0JBZ3NHd0JBWDNad3NvblFJQkF0d1VtdVhwM0p1R24wdFQycjY1aXpLdTJsOWU2WFcyMUkwQ0FBQUVDQkFnTVQwQkFIMTZmYWhFQkFnU09LcENEK1A3bG16ZGZUUVBtLzA1WkdFNDRQNnFkNHdnUUlFQ0FBQUVDQ3hjUTBCZE9xa0FDQkFqMFJxRE1hSy9qOUsrbEJkdFBwOUh6L1ZSenZ4ZDYwMzBxU29BQUFRSUVDQXhOd0I5aVErdFI3U0ZBZ01EUkJObzl6Mi9jK0tOcDlQeTdZMHg3bm9kZ1liaWoyVG1LQUFFQ0JBZ1FJTEFVQVFGOUthd0tKVUNBUUtjRjhnSndhYlQ4MXFrMGF2NVhPbDFUbFNOQWdBQUJBZ1FJakVoQVFCOVJaMnNxQVFJRWlzQ3RXMldrZk92bTUzNDAxT0gzcG52UDg5UjJDOFA1OWlCQWdBQUJBZ1FJckZuQWRNWTFkNERMRXlCQVlNVUNkZlg2NjN2bnQ3ZTMwclpxZjdHS2FjdnpFUHpIMmhWM2dzc1JJRUNBQUFFQ0JCNGw0SSt5UjZsNGpRQUJBc01WS0QvM1Q5ZjFUNFFRWGtqTnpOdXErVjB3M1A3V01nSUVDQkFnUUtCSEF2NG82MUZucVNvQkFnVG1GQ2picWwyN2VmUERWUlYvekxacWMybzZuUUFCQWdRSUVDQ3dZQUVCZmNHZ2lpTkFnRUNIQmZMaWNOVzBhZjVpcU90ejZhblI4dzUzbHFvUklFQ0FBQUVDNHhNUTBNZlg1MXBNZ01BNEJjcm8rWlVYcjc4U1EvVW5aNlBuMWlFWjUvZUNWaE1nUUlBQUFRSWRGUkRRTzlveHFrV0FBSUZsQ0lUcEpOOTdmanB0cjVaWGJpOGo2c3U0ampJSkVDQkFnQUFCQWdTT0wyRDA1UGhtemlCQWdFRGZCUExvK1hSemQvZnJZeFgvamFxSlZtN3ZXdytxTHdFQ0JBZ1FJREFLQVNQb28raG1qU1JBWU9RQ1phUThwZlFmUy9lZWI4eEd6LzM4SC9rM2hlWVRJRUNBQUFFQzNSUHdCMXIzK2tTTkNCQWdzRWlCZS9lZXB3bnRQMWp1UFE4aHYrWkJnQUFCQWdRSUVDRFFNUUVCdldNZG9qb0VDQkJZc0VCN24za3orZEVxaEdmY2U3NWdYY1VSSUVDQUFBRUNCQllvSUtBdkVGTlJCQWdRNkpoQUdUMi9kUDM2aTZsZVB6QWJQZmR6djJPZHBEb0VDQkFnUUlBQWdRTUJmNmdkU1BoTWdBQ0I0UW1VMGZPTmpmcEgwc3J0RjkxN1Byd08xaUlDQkFnUUlFQmdXQUlDK3JENlUyc0lFQ0J3SUpERCtmN0ZtemMzWXd3L0hLM2NmdURpTXdFQ0JBZ1FJRUNnc3dJQ2VtZTdSc1VJRUNBd2g4RHRxaXdFdHhIM3Z5L1VZYWVLVGQ3MzNNLzhPVWlkU29BQUFRSUVDQkJZdG9BLzFwWXRySHdDQkFpc1hpQlVyMVVsa0ljcS9FaWEycDczUFc4WGkxdDlYVnlSQUFFQ0JBZ1FJRURnaUFJQytoR2hIRWFBQUlFZUNaVFI4NnU3dS85U1N1YmZHR05zVXQzOXZPOVJCNm9xQVFJRUNCQWdNRTRCZjdDTnM5KzFtZ0NCWVF1a0lmT3FTcW44VDZXUjh5cU5vT2VBYmdSOTJIMnVkUVFJRUNCQWdNQUFCQVQwQVhTaUpoQWdRT0NRUUI0OW4xN1ozdjdhOVBtN1psdXJsUkgxUThkNFNvQUFBUUlFQ0JBZzBFRUJBYjJEbmFKS0JBZ1FtRU9nSFNtZmhPOVBpOE05Tzl0YXplajVIS0JPSlVDQUFBRUNCQWlzU2tCQVg1VzA2eEFnUUdENUF2bG4rdjcyOXZhWktsYi9hcnIzM09Kd3l6ZDNCUUlFQ0JBZ1FJREF3Z1FFOUlWUktvZ0FBUUpyRnlnLzArOU1KdCtaRm0zL3lPemVjei9uMTk0dEtrQ0FBQUVDQkFnUU9KcUFQOXlPNXVRb0FnUUk5RUdnTEE0WHF1YjdMQTdYaCs1U1J3SUVDQkFnUUlEQS9RSWI5My9wS3dJRUNCRG9xVUQrRDY3VHplM3RtN0VLZjZocTBzTHRJVmdjcnFlZHFkb0VDQkFnUUlEQU9BV01vSSt6MzdXYUFJR2hDZHh1OXptdko1UHZUdFBiTDFvY2JtZ2RyRDBFQ0JBZ1FJREFHQVNNb0kraGw3V1JBSUdoQzRUcXRXcS9ORExHUDk0Mk5tK0E3a0dBQUFFQ0JBZ1FJTkFuQVNQb2Zlb3RkU1ZBZ01DakJjclA4czBiTjM1UEZhcmYxNjdlbnA1NUVDQkFnQUFCQWdRSTlFcEFRTzlWZDZrc0FRSUVIaWxRd25nZG1qeTkvZlJzZXJ1Zjc0K2s4aUlCQWdRSUVDQkFvTHNDL29EcmJ0K29HUUVDQkk0cTBFNXZiOElmVGVIYzN1ZEhWWE1jQVFJRUNCQWdRS0JqQWdKNnh6cEVkUWdRSUhCTWdiSlMrOVdkblcrb3FuaXJURyt2MmdYampsbU93d2tRSUVDQUFBRUNCTllzSUtDdnVRTmNuZ0FCQW5NS2xPbnRUUWpmR2VwNll2WDJPVFdkVG9BQUFRSUVDQkJZbzRDQXZrWjhseVpBZ01DY0FqbWNsK250YVdMN0h5N1QyNjBOTnllcDB3a1FJRUNBQUFFQzZ4TVEwTmRuNzhvRUNCQ1lWNkQ4REwrNnUvdlZvWXJmT0Z1OTNjLzFlVldkVDRBQUFRSUVDQkJZazRBLzVOWUU3N0lFQ0JCWWdFQ1ozcDVHejc4OWhQcGNGYXRwS3RQUDlRWEFLb0lBQVFJRUNCQWdzQTRCZjhpdFE5MDFDUkFnc0JpQmxNM1QwbkJWL003OGIvb29YeSttYUtVUUlFQ0FBQUVDQkFpc1drQkFYN1c0NnhFZ1FHQXhBbm4wZkhyeDVzM050Sy9hUjBzMFQ4UG9peWxhS1FRSUVDQkFnQUFCQXVzUThNZmNPdFJka3dBQkF2TUxsTzNWSmpGK1N3alZUaG85YjFLUmZxYlA3Nm9FQWdRSUVDQkFnTURhQlB3eHR6WjZGeVpBZ01EOEFpRk9iMWNwb2FmWjdUbWdleEFnUUlBQUFRSUVDUFJZUUVEdmNlZXBPZ0VDb3hXNHQ3MXZSQ2xvQUFCQUFFbEVRVlJhQ09IYnlxM242Y2xvTlRTY0FBRUNCQWdRSURBUUFRRjlJQjJwR1FRSWpFcWcvT3krZFAzNmk3RUt2N2RzcjVadVJCK1ZnTVlTSUVDQUFBRUNCQVlvSUtBUHNGTTFpUUNCd1F1VU1GNVBKdCtVbmx4TXJjM1Qyd1gwd1hlN0JoSWdRSUFBQVFKREZ4RFFoOTdEMmtlQXdHQUY2aEIvLzZIN3p3WDB3ZmEwaGhFZ1FJQUFBUUpqRVJEUXg5TFQya21Bd0pBRXBya3hhV3UxajdaYm43di9mRWlkcXkwRUNCQWdRSURBZUFVRTlQSDJ2WllUSU5CUGdmeHpPMTdlMmRsTnM5cGZLZmVmQjl1cjliTXIxWm9BQVFJRUNCQWdjTCtBZ0g2L2g2OElFQ0RRZFlIMjUzWmR2NXJHelRkVFpkMS8zdlVlVXo4Q0JBZ1FJRUNBd0JFRkJQUWpRam1NQUFFQ1hSSklONXgvODZIN3o3dFVOWFVoUUlBQUFRSUVDQkE0b2NER0NjOXpHZ0VDQkFpc1hpQXZCSmRIelBNTjZOOVlQbHU4dldYd0x3RUNCQWdRSUVCZ0FBSkcwQWZRaVpwQWdNQm9CRXBBdjNidDJ0bVUwTCt1dERwSTZLUHBmUTBsUUlBQUFRSUVCaThnb0ErK2l6V1FBSUVCQ1pTdDFQYWZtOXhJQzhTOVdCYUlzLy81Z0xwWFV3Z1FJRUNBQUlHeEN3am9ZLzhPMEg0Q0JQb2tVQUo2M0M4THhEMmJLbTZCdUQ3MW5yb1NJRUNBQUFFQ0JKNGlJS0EvQmNqYkJBZ1E2SnBBQ1BGckR5MFFWMEo3MStxb1BnUUlFQ0JBZ0FBQkFzY1hFTkNQYitZTUFnUUlyRXNnNWd1blJQNzFhWkc0ZGRYQmRRa1FJRUNBQUFFQ0JKWWtJS0F2Q1ZheEJBZ1FXSUxBTkpXWjhubjRjQ2s3cEozUVBRZ1FJRUNBQUFFQ0JBWWpZSnUxd1hTbGhoQWcwRkdCZ3hDZFB4ODh6OFBmN1hacFI2OTAvZytxelpYZDNlMjBPTnlIWnFmNWo2eEg5M01rQVFJRUNCQWdRS0R6QWdKNjU3dElCUWtRNkxuQXdWejBnODhIemNsaC9jSFhEdDU3MU9jUzdzTmtjaTFPOXpkbkJ4d0Uva2NkN3pVQ0JBZ1FJRUNBQUlHZUNRam9QZXN3MVNWQW9CY0NaYlQ3K2VlZnZ6WTlkZXEvU2VQbTUwS3NQaGREMkV1MXY1QlM5ZDk4NTgwM1gwdlBKK2tqVDFzL3lxTU40OVBwSzJsbWU1MUcwZk41K1h3UEFnUUlFQ0JBZ0FDQmdRZ0k2QVBwU00wZ1FLQjdBczF6ejlYVmRQL2JRMTJmell1NjVZU2RubGZOdE5sTlQ3OHBmY3p1S1QvQ1NQcnQyMVgxMm10VnJLdmRrRXRxbWxSZ205bFRPUjRFQ0JBZ1FJQUFBUUlERUhELzRnQTZVUk1JRU9pbXdIUXllVGRGNkxkaTA2UjhIdStrei92TmRIb25qWURmMnRyZC9mNVpyWTgyQ3Y3YWErMTArS2I2U0RkYnExWUVDQkFnUUlBQUFRTHpDZ2pvOHdvNm53QUJBbzhST1AyVnIreW5WTjNNUnJvMzB1YzhheWw5NUt3ZGZ6TDlrOFA1ZnZwNDJsQjRmdjlnS3Z5SDJpM1dublpLT3NPREFBRUNCQWdRSUVDZ1Z3SUNlcSs2UzJVSkVPaUpRQm50ZnZ2dHQ5OUxvZngzSDRqU2t6eVNYdFgxTjF6ZTNmMmhXWHVlTm9wZWluanBwWmVlVFZIK2FqbW56SFB2aVlacUVpQkFnQUFCQWdRSUhFbEFRRDhTazRNSUVDQndJb0c4bGRyQnlQY0hCZVQ5eS9NOTZhSDY4ZXJsbDU5SmJ4eGxGTDM2bmJ0M3I2Yno4alpydWF3SGN2OEh4WHRHZ0FBQkFnUUlFQ0RRVHdFQnZaLzlwdFlFQ1BSRUlJWHdyenlpcW1rVVBlNm5uUDUxVis2OCt5T3o5NTgwaWw3Q2VKeE1McVpVZis0UjVYbUpBQUVDQkFnUUlFQmdBQUlDK2dBNlVSTUlFT2lrUUJ1cVk4aWo2UG0yOHpMc2ZhK21hWXA2SGdrUFZmMlQxNjVkTzV0ZWYrb29ldDAwMTFJcHAwdHBSdER2VVhwQ2dBQUJBZ1FJRUJpS2dJQStsSjdVRGdJRXVpYlFUa0Z2bXZjZVU3RkoyaXB0UDQySWYyanYxS2svTlR2bWNhUG9iZGl2NDR0cFJENC9jdWh2bjVVdi9VT0FBQUVDQkFnUUlEQUVBUUY5Q0wyb0RRUUlkRmNneER3eS91aEhtdVBlanFMSG43eDQ4K1ptT2lnZis5aWZ5M1UxMmN3M3J1YzkyeDVkb0ZjSkVDQkFnQUFCQWdUNkxQRFlQd1Q3M0NoMUowQ0F3Sm9GY29BdUk5enBuM2ZhcDQvTTFHVVVQZFQxN3NaMCttZExuVytWcmRjZVdmMlV5OXNWM0IvNXJoY0pFQ0JBZ0FBQkFnVDZMaUNnOTcwSDFaOEFnVzRMaFBEd0t1NkhheHhDbmJaZFN4aysvUG56Mjl0YjFldlZYbnI3d1ovTmJib1A4Zm9EZDdJZkxzbHpBZ1FJRUNCQWdBQ0JuZ3M4K0VkZ3o1dWorZ1FJRU9pTVFCbEJUOG42bmFmY0xaNS9EdStGT2x3L0hjSmZtTlgrd1ovTkphQ24rZkRQNTlYbVBBZ1FJRUNBQUFFQ0JJWXA4T0FmZ2NOc3BWWVJJRUJnVFFJaFBtVUV2YTFYMm5hdHliZVgvOW1yTDczMFFucnB3WHZSWnlQbzlabjI4Skw5MTlRaWx5VkFnQUFCQWdRSUVGaVdnSUMrTEZubEVpQXdib0hidDl2MmgvQ2xJMERrbjhWN1ZWMXZUZmYzZjJKMi9NSFA1NXpHYzBDdjAwNXQ3UjdvYVl1MjJURStFU0JBZ0FBQkFnUUlERWpnNEEvQUFUVkpVd2dRSU5BZGdiUlFlN3NQK3RPcnRERWJSZi9UbTl2Yk45UGg5NDJpYjIxdG5VMmo4UmRtRTl3RjlLZDdPb0lBQVFJRUNCQWcwRHNCQWIxM1hhYkNCQWowUXVDMTEwbzFwMDN6YnRvV0xUMS9hcWJPQit5bFFIOWhNZ2svWGs1dUY0c3JKOVoxZlNhVmNxNHRhL2F1VHdRSUVDQkFnQUFCQW9NU0VOQUgxWjBhUTRCQTV3UkM4K1JWM08rdmNMa1hQZVg1UDdPMXMvT1I5TlorTmR0MmJXOWo0NW1xYW1iM29EODk3ZDlmcks4SUVDQkFnQUFCQWdUNklDQ2c5NkdYMUpFQWdkNEtoRmgvc1ZRK1BMUjEycVBhbEg4bXB4WGQ2K2RpWGJXajZPKy9Xa2JRTitvNkJmUnc2bEVuZVkwQUFRSUVDQkFnUUdBWUFnTDZNUHBSS3dnUTZLaEEyaHJ0N2pHclZ1NUZyMkw0NGNzM2I3NWFmZXBUNWZ4NHFxblQ5UGVuenBNLzVyVWNUb0FBQVFJRUNCQWcwQ0VCQWIxRG5hRXFCQWdNU3FDczU1Wkd3MzhubG52UWp6d3R2YjBYdlE2blE1eit1d2NpOVY3OVRDcHdjdkMxendRSUVDQkFnQUFCQXNNVEVOQ0gxNmRhUklCQWh3UlNxSDR2VlNlSDllT01mczlHMGF0L2JldkdqVy9LemRtZk5IbUJ1SU1wN3NjcEs1L3VRWUFBQVFJRUNCQWcwQU1CQWIwSG5hU0tCQWowVnlDdEVQZCtGVUxlTWkwL3lxaDYrL1NKLzRZVXh2ZlQ2UHRHR24zL3FmYklrTTg5NnZsUExOeWJCQWdRSUVDQUFBRUMzUlFRMEx2WkwycEZnRUQvQlVxWW5weHE3cWJoN3VPczVONjJQSVE4aWg3VHVQdS9jdm1GRjc2dWlwUGZTVUUvajV3TDZmMy8zdEFDQWdRSUVDQkFnTUFqQlFUMFI3SjRrUUFCQW9zUm1PeFA5dE1vK1BFRGVyNThPaTluOHJDeDhWTXByQi84dkRhOWZURmRveFFDQkFnUUlFQ0FRT2NFTmpwWEl4VWlRSURBZ0FUMjl2ZlR0bWw1QlAwRXVUcUVzaTk2T3ZON0o2SCtSS3ppN3lTYUMra2pqNktmb01BQndXb0tBUUlFQ0JBZ1FHQ0FBZ2NqTWdOc21pWVJJRUJnL1FJYisvdDMwNVpwZWFHNC9EanU5UFFjd3ZNYThNL0cyUHg0ZW5id0gxV0Y4OExwSHdJRUNCQWdRSURBc0FRRTlHSDFwOVlRSU5BZGdSTEc5ODd0dlorbXFiODd4NEIzQ2VtcFdUdnA0MHgzbXFjbUJBZ1FJRUNBQUFFQ2l4WVEwQmN0cWp3Q0JBZ2NFamo5bGRQN2FXcjYzVGtucEIrRTlFTWxlMHFBQUFFQ0JBZ1FJREEwQVFGOWFEMnFQUVFJZEVXZ2pLQy8vZmJiNzZiVjE3ODhtNU4rM0NudWg5dGlXdnRoRGM4SkVDQkFnQUFCQWdNVUVOQUgyS21hUklCQXB3UnlLRC9ZQjcxVEZWTVpBZ1FJRUNCQWdBQ0JiZ2tJNk4zcUQ3VWhRR0JZQW1YVU8rMlU5cFhTckRUWGZWak4weG9DQkFnUUlFQ0FBSUZGQ2dqb2k5UlVGZ0VDQk80WEtBRTl4dERjLzdLdkNCQWdRSUFBQVFJRUNEd3NJS0EvYk9JVkFnUUlMRmFnYVdiYnJCbEFYeXlzMGdnUUlFQ0FBQUVDd3hJUTBJZlZuMXBEZ0VBWEJVSjBEM29YKzBXZENCQWdRSUFBQVFJZEV4RFFPOVlocWtPQXdLQUUybnZRcStvMzU5Z0hmVkFnR2tPQUFBRUNCQWdRSVBCNEFRSDk4VGJlSVVDQXdHSUVRakNDdmhoSnBSQWdRSUFBQVFJRUJpMGdvQSs2ZXpXT0FJRTFDN1NMeEZYVk8xVjV0dWJhdUR3QkFnUUlFQ0JBZ0VDbkJRVDBUbmVQeWhFZ01BU0JFTU4wQ08zUUJnSUVDQkFnUUlBQWdlVUtDT2pMOVZVNkFRSUUwdTNuNFVzWUNCQWdRSUFBQVFJRUNEeE5RRUIvbXBEM0NSQWdNS2RBQ1BaQm41UFE2UVFJRUNCQWdBQ0JVUWdJNktQb1pvMGtRR0NkQXRPbWViZUtlUS8wNEU3MGRYYUVheE1nUUlBQUFRSUVPaTRnb0hlOGcxU1BBSUVCQ0lTbXZRZGRQQjlBWjJvQ0FRSUVDQkFnUUdCNUFnTDY4bXlWVElBQWdTSVFZdjNiTTRvYzBmTlF1Z2NCQWdRSUVDQkFnQUNCaHdRRTlJZEl2RUNBQUlIRkNvUVk3ODVpdVRIMHhkSXFqUUFCQWdRSUVDQXdLQUVCZlZEZHFURUVDSFJNb0l5V2g3citVbXdUdW9EZXNRNVNIUUlFQ0JBZ1FJQkFsd1FFOUM3MWhyb1FJREJJZ2FhcTNrOE5TNTg4Q0JBZ1FJQUFBUUlFQ0R4ZVFFQi92STEzQ0JBZ3NCQ0JqUmpmVHd1NDc4OEtjdy82UWxRVlFvQUFBUUlFQ0JBWW5vQ0FQcncrMVNJQ0JEb21NRDExNm02YTI5NnU1TjZ4dXFrT0FRSUVDQkFnUUlCQWR3UUU5TzcwaFpvUUlEQlFnWHAvZnovR0tLQVB0SDgxaXdBQkFnUUlFQ0N3S0FFQmZWR1N5aUZBZ01EREFtVTYrOTUwdXBmZUV0QWY5dkVLQVFJRUNCQWdRSURBSVFFQi9SQ0dwd1FJRUZpR3dNYmUzdDJxQ3UrbGoyVVVyMHdDQkFnUUlFQ0FBSUdCQ0Fqb0ErbEl6U0JBb0xzQ2UyZlB2cCtpK2J1emZHNlJ1TzUybFpvUklFQ0FBQUVDQk5ZcUlLQ3ZsZC9GQ1JBWWc4QXo3NzIzbC9aQlQ2UG9IZ1FJRUNCQWdBQUJBZ1FlTHlDZ1A5N0dPd1FJRUpoWG9JeVd2LzMyMisrbGJkYStZb0w3dkp6T0owQ0FBQUVDQkFnTVcwQkFIM2IvYWgwQkF0MFFhRkkxRHZaQjcwYU4xSUlBQVFJRUNCQWdRS0J6QWdKNjU3cEVoUWdRR0tKQUNOVlhodGd1YlNKQWdBQUJBZ1FJRUZpY2dJQytPRXNsRVNCQTRGRUNaV1o3YktwMmNiaDBNL3FqRHZJYUFRSUVDQkFnUUlBQUFRSGQ5d0FCQWdTV0s5RGVlaDdqdTh1OWpOSUpFQ0JBZ0FBQkFnVDZMaUNnOTcwSDFaOEFnWDRJaE9nZTlINzBsRm9TSUVDQUFBRUNCTlltSUtDdmpkNkZDUkFZZ1VDZXpsNUcwTk0vNzdSUHpYQWZRYjlySWdFQ0JBZ1FJRURnUkFJQytvblluRVNBQUlGakNvUXdQZVlaRGlkQWdBQUJBZ1FJRUJpWmdJQStzZzdYWEFJRVZpN1FMaEtYUjlEYnU5RlhYZ0VYSkVDQUFBRUNCQWdRNkllQWdONlBmbEpMQWdSNkxoQ2lFZlNlZDZIcUV5QkFnQUFCQWdTV0xpQ2dMNTNZQlFnUUdMWEE3ZHR0ODBQNDBxZ2ROSjRBQVFJRUNCQWdRT0NwQWdMNlU0a2NRSUFBZ2ZrRlFnak4vS1VvZ1FBQkFnUUlFQ0JBWU1nQ0F2cVFlMWZiQ0JCWXY4QnJyNVU2VEp2bTNTcmVXOVI5L2ZWU0F3SUVDQkFnUUlBQWdjNEpDT2lkNnhJVklrQmdrQUtoc1lyN0lEdFdvd2dRSUVDQUFBRUNpeE1RMEJkbnFTUUNCQWc4VmlERStvdmx6VkQ1dWZ0WUpXOFFJRUNBQUFFQ0JNWXQ0QS9GY2ZlLzFoTWdzQ0tCRU9QZWlpN2xNZ1FJRUNCQWdBQUJBajBWRU5CNzJuR3FUWUJBYndUeWplZFZtRXgrTzVaNzBPMkczcHVlVTFFQ0JBZ1FJRUNBd0lvRkJQUVZnN3NjQVFMakZHaGl2Sk5hYnBXNGNYYS9WaE1nUUlBQUFRSUVqaVFnb0IrSnlVRUVDQkNZVDJDanF0NnJRdGlmbFZKRzFlY3IwZGtFQ0JBZ1FJQUFBUUpERXhEUWg5YWoya09BUU5jRVNoaWZubXJ1aHFxeWtudlhla2Q5Q0JBZ1FJQUFBUUlkRWhEUU85UVpxa0tBd0hBRkp2dVQvWFFQdW9BKzNDN1dNZ0lFQ0JBZ1FJREEzQUlDK3R5RUNpQkFnTURUQmZiMjkvTXE3Z2RUM0o5K2dpTUlFQ0JBZ0FBQkFnUkdKeUNnajY3TE5aZ0FnWFVJYk96djMwMUx4TDAvdTdaNzBOZlJDYTVKZ0FBQkFnUUlFT2k0Z0lEZThRNVNQUUlFZWk5UXd2amV1YjMzUXdqdnBnM1hldDhnRFNCQWdBQUJBZ1FJRUZpT2dJQytIRmVsRWlCQTRENkI1OTUvYmk5VzhhNThmaCtMTHdnUUlFQ0FBQUVDQkE0SkNPaUhNRHdsUUlEQUVnVEtDUHBiYjcyVnQxbjc4bXo4M0JUM0pVQXJrZ0FCQWdRSUVDRFFkd0VCdmU4OXFQNEVDUFJGSUlkeWk4VDFwYmZVa3dBQkFnUUlFQ0N3QmdFQmZRM29Ma21Bd09nRXlzQjVDTlZYU3N2VFhQZlJDV2d3QVFJRUNCQWdRSURBVXdVRTlLY1NPWUFBQVFKekM1U0FIbU5vNWk1SkFRUUlFQ0JBZ0FBQkFvTVZFTkFIMjdVYVJvQkE1d1NhWnJiTm1nSDB6dldOQ2hFZ1FJQUFBUUlFT2lBZ29IZWdFMVNCQUlIQkM3UnJ3NFc4RC9wc21iakJOMWtEQ1JBZ1FJQUFBUUlFamlzZ29COVh6UEVFQ0JBNHZzQkJRUCtFZkg1OFBHY1FJRUNBQUFFQ0JNWWlJS0NQcGFlMWt3Q0J0UXZFRUQ4V1k1cmVIc0lrVmNZODk3WDNpQW9RSUVDQUFBRUNCTG9sSUtCM3F6L1VoZ0NCWVFxMGk4Tk53NmVyR0g4ck5UR1BxQXZvdyt4cnJTSkFnQUFCQWdRSW5GaEFRRDh4blJNSkVDQndaSUVTeG4vcm4vN1ROOU1aL3lTay9kYlNRMEEvTXA4RENSQWdRSUFBQVFMakVCRFF4OUhQV2ttQXdIb0ZjaGpQMDlyVEkveDhtdUtlNG5tZTYrNUJnQUFCQWdRSUVDQkE0QU1CQWYwREM4OElFQ0N3UElIYnMrWGg2dmp4Rk03VGRkcGg5T1ZkVU1rRUNCQWdRSUFBQVFKOUV4RFErOVpqNmt1QVFEOEZYbXVudERkTitQa1V6L2RTWExkUVhEOTdVcTBKRUNCQWdBQUJBa3NURU5DWFJxdGdBZ1FJM0NkUUZvbzdXMVdmU1NQb3Z6b2JRRzhYajd2dk1GOFFJRUNBQUFFQ0JBaU1WVUJBSDJ2UGF6Y0JBcXNXS1BlaHYvbm1tKytsNmUzL0tPUVo3KzVEWDNVZnVCNEJBZ1FJRUNCQW9OTUNBbnFudTBmbENCQVltRUJadmoyMTZXT3pPOUlIMWp6TklVQ0FBQUVDQkFnUW1FZEFRSjlIejdrRUNCQTRua0M3Y250YUtLNE1ub2ZnUHZUaitUbWFBQUVDQkFnUUlEQm9BUUY5ME4ycmNRUUlkRXlnQlBRUTYwK0hHTjlKZGNzajZtMW83MWhGVlljQUFRSUVDQkFnUUdEMUFnTDY2czFka1FDQjhRcVVNUDdPWnovN1Zvcm12eFRhbmRZRTlQRitQMmc1QVFJRUNCQWdRT0ErQVFIOVBnNWZFQ0JBWUtrQ09Zem5hZTFwZmJqdzhiS1N1NFhpbGdxdWNBSUVDQkFnUUlCQW53UTIrbFJaZFNWQWdNQUFCTnFGNHVyNGVqdTV2UjFHSDBDN05JRUFBUUlFQ0JBZ1FHQk9BU1BvY3dJNm5RQUJBc2NVS0ZQYW15WjhNajNaUzFQZExSUjNURUNIRXlCQWdBQUJBZ1NHS2lDZ0Q3Vm50WXNBZ2E0S05MbGlaNnZxTTJtZSs2K1dhZTRXaXV0cVg2a1hBUUlFQ0JBZ1FHQ2xBZ0w2U3JsZGpBQUJBbVZpKytUTk45OThMeTNpL285Q1hzZzl4aExhMlJBZ1FJQUFBUUlFQ0l4YlFFQWZkLzlyUFFFQzZ4Rm83ME92cW8rVmpkYldVd2RYSlVDQUFBRUNCQWdRNkppQWdONnhEbEVkQWdSR0lkQnVyUmJqeDhzaTdpRzREMzBVM2E2UkJBZ1FJRUNBQUlFbkN3am9UL2J4TGdFQ0JKWWhVQUo2cU90UGh4amZTUmZJSStwdGFGL0cxWlJKZ0FBQkFnUUlFQ0RRQ3dFQnZSZmRwSklFQ0F4TW9JVHhkejc3MmJkU05QK2wwTzYwSnFBUHJKTTFod0FCQWdRSUVDQndYQUVCL2JoaWppZEFnTUQ4QWptTTUybnRhWDI0OEhwWnliM01kWisvWUNVUUlFQ0FBQUVDQkFqMFYwQkE3Mi9mcVRrQkF2MFdLQXZGcFg5K0xxWDAxSkoyR0wzZlRWSjdBZ1FJRUNCQWdBQ0JlUVFFOUhuMG5FdUFBSUdUQzVRcDdVMWRmekk5MlV0VDNTMFVkM0pMWnhJZ1FJQUFBUUlFQmlFZ29BK2lHeldDQUlFZUNwUzl6eS9VOWEra0VmUmZtZDJIYmovMEhuYWtLaE1nUUlBQUFRSUVGaVVnb0M5S1Vqa0VDQkE0bmtDNUQvMk5OOTU0UDAxdS84V3lrTHY3MEk4bjZHZ0NCQWdRSUVDQXdNQUVCUFNCZGFqbUVDRFFLNEZ5SDNvVnc4ZkxSbXU5cXJyS0VpQkFnQUFCQWdRSUxGcGdZOUVGS284QUFRSUVqaXhRN2tOUEErZXZsMTNRUXppNEQ3ME43a2N1eG9FRUNCQWdRSUFBQVFKREVEQ0NQb1JlMUFZQ0JQb3FVQUo2ZmVyVVB3NHhmajQxSWdmejhscGZHNlRlQkFnUUlFQ0FBQUVDSnhjUTBFOXU1MHdDQkFqTUsxREMrQmZlZU9Oektaci84bXloT0FGOVhsWG5FeUJBZ0FBQkFnUjZLaUNnOTdUalZKc0FnVUVJNURBK3U5V29UdmVocHdGMEM4VU5vbU0xZ2dBQkFnUUlFQ0J3RWdIM29KOUV6VGtFQ0JCWXRFQ01IeTlGem9iUkYxMjg4Z2dRSUVDQUFBRUNCTG92WUFTOSszMmtoZ1FJREZ1Z1RHbHY2dnFUNmNsZWF1ckJRbkhEYnJYV0VTQkFnQUFCQWdRSVBDUWdvRDlFNGdVQ0JBaXNWS0RKVjd0UTE3K1NwcmYveW13QXZieTIwbHE0R0FFQ0JBZ1FJRUNBd05vRkJQUzFkNEVLRUNBd2NvRThnajU1NDQwMzNrKzNvUDlpV2NqZGZlZ2ovNWJRZkFJRUNCQWdRR0NzQWdMNldIdGV1d2tRNkpKQTJmYzh4dkI2MldpdFN6VlRGd0lFQ0JBZ1FJQUFnWlVKQ09ncm8zWWhBZ1FJUEZhZzNJZWVwcmgvdkF5ZWgrQSs5TWRTZVlNQUFRSUVDQkFnTUZ3QkFYMjRmYXRsQkFqMFI2QUU5TEN4OGVrUTQrZFR0Zk9JZWh2YSs5TUdOU1ZBZ0FBQkFnUUlFSmhUUUVDZkU5RHBCQWdRV0lCQUNlUHYvUHF2LzBhSzVyODhXeWhPUUY4QXJDSUlFQ0JBZ0FBQkFuMFNFTkQ3MUZ2cVNvREFVQVZ5R045b0cxZC92RXFyeGFYcDdnTDZVSHRidXdnUUlFQ0FBQUVDanhHWS9VSDRtSGU5VElBQUFRS3JGWWp4WSswRmMwcjNJRUNBQUFFQ0JBZ1FHSk9BRWZReDliYTJFaURRWllFeVloNG4wMCtrSjNmVFZIY0x4WFc1dDlTTkFBRUNCQWdRSUxBRUFRRjlDYWlLSkVDQXdBa0VtbnpPK2ZETXI2WDU3Yjh5dXcrOXZIYUNzcHhDZ0FBQkFnUUlFQ0RRUXdFQnZZZWRwc29FQ0F4U0lJK2dUOTU0NDQzM1ExUDlRbW1oKzlBSDJkRWFSWUFBQVFJRUNCQjRuSUNBL2pnWnJ4TWdRR0QxQXUxOTUzWDFzYkpRM09xdjc0b0VDQkFnUUlBQUFRSnJGQkRRMTRqdjBnUUlFSGhBb055SFhqWFZKOHJnZVFoNUljLzJ0UWNPOUNVQkFnUUlFQ0JBZ01Ed0JBVDA0ZldwRmhFZzBGK0JFc2JyMDN2L09EWGhjN05tQ09qOTdVODFKMENBQUFFQ0JBZ2NTMEJBUHhhWGd3a1FJTEJVZ1JMR1AvOXJuMzg3elhYL3BkbENjUUw2VXNrVlRvQUFBUUlFQ0JEb2pvQ0EzcDIrVUJNQ0JBamtNSjZudGFkSGZMM2NoMjZodUpiRHZ3UUlFQ0JBZ0FDQkVRZ0k2Q1BvWkUwa1FLQ1BBdkZqVlV4NWZUYU0zc2NXcURNQkFnUUlFQ0JBZ01EeEJBVDA0M2s1bWdBQkFzc1dLRlBhWXgzelZtdDMwc2NrZlpqbXZteDE1Uk1nUUlBQUFRSUVPaUFnb0hlZ0UxU0JBQUVDaHdTYS9QeDhlT2JYWWhWL2RUYUFYbDQ3ZEl5bkJBZ1FJRUNBQUFFQ0F4UVEwQWZZcVpwRWdFQ3ZCZkpvK2VTTk45NTRQOFR3eWRJUzk2SDN1a05WbmdBQkFnUUlFQ0J3VkFFQi9haFNqaU5BZ01EcUJOSWk3dWtSWmd2RnJlNjZya1NBQUFFQ0JBZ1FJTEJHQVFGOWpmZ3VUWUFBZ2NjSXRQZWN4L0I2R1R3UElhL3M3ajcweDJCNW1RQUJBZ1FJRUNBd0ZBRUJmU2c5cVIwRUNBeEpvSVR4K3RUZFQ2ZFkvcmxad3dUMElmV3d0aEFnUUlBQUFRSUVIaUVnb0Q4Q3hVc0VDQkJZczBBSjQ1Ly90YysvbmVhNi85SnNvVGdCZmMyZDR2SUVDQkFnUUlBQWdXVUxDT2pMRmxZK0FRSUVqaStRdzNpZTFwN3ZRLy81dEJkNm11Q2VOMFgzSUVDQUFBRUNCQWdRR0xLQWdEN2szdFUyQWdRR0lCQi9Mb1h6Rk5SelN2Y2dRSUFBQVFJRUNCQVlzb0NBUHVUZTFUWUNCUG9zVVBZK2o5UHFreW1nMzBrTm1hUVBvK2g5N2xGMUowQ0FBQUVDQkFnOFJVQkFmd3FRdHdrUUlMQW1nUkxHZi9QTW1WK0xJWHhtTm9CZVF2dWE2dU95QkFnUUlFQ0FBQUVDU3hZUTBKY01ySGdDQkFpY1VDQUg5RW4xbWMvY1NlUG12K0ErOUJNcU9vMEFBUUlFQ0JBZzBDTUJBYjFIbmFXcUJBaU1UcURjZHg3citMR090enltYWZqNzVhT3FwcW11ZWFUZmRQeU9kNXJxRVNCQWdBQUJBdDBUYUZjSjdsNjkxSWdBQVFJRVppRzNic0luVWdMT0M4WGxuOWs1K0habndiZ1E5bEl3UHhVbWsvYjNTVnJRN3Q2Qzg3SGF2MWZkVU9YL0lKenIzWjI2cDhwNEVDQkFnQUFCQWdTNkpHQUV2VXU5b1M0RUNCQzRYNkNNUWsvMjlqNmRZdTF2ekxKdE4rNURUK0U3M3hjZll2Vi9wWHA5YXhXYmZ6czI4YWRUSVAvNTlQVVhjMTNEcE43SXdUM1U2VDhzaEhBUTBQTi9hMmhIMjB1QUx5UHVSdDN2NzNkZkVTQkFnQUFCQWlNVk1JSSswbzdYYkFJRWVpRlFBdnJiYjcvOStTdTd1LzhrNWVIcjNka05QWS9vMTNtMC9MZCs4ODAzZnk1cDVvLzhtRnplM3Q2ZVRDWWZhbUx6YWhYREt5bkZ2NUpDK1kzMDNzMFUxSjhyZ1QwZk9XdE1hZVFIRFp0K01BU2ZCdHRUems5SEh2N0laM29RSUVDQUFBRUNCQVlwSUtBUHNsczFpZ0NCZ1FqazdKcC9UcWZSNmpReUhlcHZyNW9tbGdYak90TEFsSnkva3F0eTdkcTFzK2svSkx5Zm5rNS82NjIzUHBzKzU0K2ZUUi9sa1RMN21iMjYzazZqN0Ntb3g0L0V1bjR4aGZZVTNxdnJLWkJ2cHh5K0ZVUDFYQ3B2VXRXenlWMEhBYjVOOEFkRlBSamc4K3M1d09mSDRjOEh6OXQzL0V1QXdMd0NCN05nY2psNTFvc0hBUUlFQ0N4QlFFQmZBcW9pQ1JBZ3NHaUJOSHIrYytYZTd0bCthNHN1LzdqbHBhM2ZVcDVPajFCOUtYOUs0VHdIOVZDOSt1cnAvSFgxcVU4ZFRNWFA4VHErOWRaYjc2YlBuNWw5L0V6NmZPK1J3dnZXM1NwZUNYWDlRanJwNVZUdUN5bTBmemlWdHB1ZVgwbHJ6dTJrR2ZLWFVsNS9OamtjQ3ZDNWlKTGUyMzgvR0lYUGJ4d0s4dm5ML0VpbDNUOGlQM3V4dk9rZkFnUWVGc2loUEgvay82RUo1US83ZUlVQUFRSUxGeWgvWHkyOFZBVVNJRUNBd0tJRThoL0h6ZGIyOXRla2tlVlBwaHU0bjAxZjV6K1cxLzN6dTBuL3JhQk8vOUhnSDZZcDdQL0pkRDkrNHJkLzR6ZCsvWUZHVDJiMVBBanIrZTFRM1U0ZnIrV25aYlgzdysrVkZ4LzRwMDZqODF2VGpZMUw2Y0RMYVVYN2x5WWh2SkN5K0pVVTRqK1VaaE5jUzBWZVNpUmJTV1VyZmYxTStud3FCZm4wOGlHaVErRzlmZG9HKzNSVWZwTHZpMC9GSDd4Mjc3dzJ6cmNWdXZkaUxybDlxZng3K1BtaGx3ZjdkSnI2UGZmci8vdk9aOS84NkdCYk9jNkc1ZS9sd3g4NWtCLzhqNkxNa3BtZU92WE42WVhmVTkrNTgzZSs4SVV2ZkhsMi9MMWp4c21tMVFRSUVGaXN3Tmorc0Zpc250SUlFQ0N3ZklIOGN6cSsvUExMejN6eHp2cy9uNzc0dWhTSzh4L09PU1N0KzVFRzB0c1VuRUx2YjZkcXZwNyt2UCtaMkZSLy8wd0luM3p6elRmZmU2Q0NlZFpXL21NK2gvTDgrZUIzVVA1OCtIbjZzcngvY0d6KytrbVArdUxObXhmVGY3bllqRTF6YmhyajFYVHdUajBKbTZtQXkrbTJnTzJtQ3RmckVDNmtVaSttTkg0NXZiK1pBdnlwRlBKUHo1cVFhakNyUXI1cXVYeitmT2pab1pBL2U3bEpoNldqeXdubDJQYWZXVGtmak5ibmx3L2E5K0R6OXBUKy9DdWc5NmV2amxyVHcvOGg3YjcvWVBiOGpSdGZOYTJhZnk0VjlPM3AyL3lqNlg4ckg4bi9XNy9iTkYvOS83ZDNKL0NWWFBXWjk2dnFYcWxYZGJzMzI3U2tqdU9Ra05Bc2hvWWtMTVp0WTJBeW1UZXpKSUY1RThneU1IbDVtUXpEZk1KbUlEUHZPMkVOVG5nSldaaGhHVExKUUJJbWsyU1NNUFBpclkwTkdCdDVBUnBzTUUyM2RLL3Nka3ZxUlhTM3U2VmJaNTcvcVZ2U2xheHVhN2xMTGIreTFicTZTOVU1MzFQU3ZVK2RVNmVteDhjbmRMOC9nTGpjRGZFOEJCQkFBSUVuRjJqOXdQRGt6K1laQ0NDQUFBSzlFTEFQMEExTkZQZGZOY0hhTDdoR1kxWmhNaXVuS0tWaFd4M2Jla3ZSbDBLeUdYMUhrZlJMbWlUdTVtcGw1b3RIanh6OTNpSzROQlJZdWszWHNlZ3Bjei9hZTlYODEvNzlRWERnZ0QyWXZtNXhRcmJIbGw3Mjdlc2JlUFRSTFZHMXVxWGkzQVpOSkw4dGlxUEx0UEtkUVNVYzBNR0Y3YUZyWEtvVjd0S1Erd0dGa1UwSzRCYnMxVXNmYkZZZCszU0FaSjFWMU9mNU5OVGIxdVpLTVhjanVjdi9PSDlmczJCMng4VUR2ajJ4dFE4L2VhRTV0QzVQOW5QcmM5dHhtNERlRHNYZXJXUCs5eWo1bmRLbEVPZVhMVU5EMjdXRFAwZXgyd0w1Uy9YSU0vVjdvTjhCN2Q1MmdFcGYrbmNpaU4xem0zTk5FTkRuK2JpRkFBSUl0RVZnOFJ0N1cxYktTaEJBQUFFRTJpcmdKNHJidVdmd1RlcXcrbERHQXJwVjFNTG0vREJ4RFlIMjhkWENhL0tCL3BRZXZVOC8zYWJuSFFqUG5SdHBEbysxMTZaTGVzQmh3YkRhOU1HTGZFL2Z4K3g3ZXR1ZTNubzdLVjlhem91c2JLbUhiSUs3MmRuWmdYUHIxMi9TVVlYMW9YcnBkV1JnUnlWb2JOY1FncTA2TFg2alJzaHYxV3UzaDdHRzNvZHVxeWIwVzYrTmJsTDlCM1QvWm4wTktHdjM2OFQ5cXU3VEVQeVc0clhldGdKWUVGcGltYnQzNmNmbjYraWZ1UFNUNWxmYjNQN0NBd0Jwb2RMdjgwOVBidG45QlBURkt2bjRPVDBnWmdlMTdHdHUyYjVuejk2bzBYaXhoWEx0TlMvVXNhZGh2My9xaHlTVTI3bm4ra0h6VHVoRmZmbzZvYmtxbjMxOGZIeFV0d25vYzVMY1FBQUJCTm9qa0g0Z2FzL2FXQXNDQ0NDQVFDY0VmT1FLWFhSdmJMa3I2VDIzK3k0VXBEcFJob3V0MDhwaFVVOGYxcE1pNllOOXJLSGxHbG51MCtjV2ZidEd0Ni94SC9qWHJ6dWswUUJmRENKM1N4U0hYenBXcTMxSHIyL3R5VXZEaE5VeDdTVy8wUGE5alI1TXYxL29lZW45cVZsUzV1VGU1TDc5KzlPZWVWdlgzRmR6Z2p1YjVHN0Z5OURRMElhVHptMVVyK1RHS0FyWE5ZSnd2WkEyQ21hYmZMWlltTmVwL0J1MDRnMmhjNXVkMC9uMG9YcnNZdzNCajhMMUtsaS9DckpSMGNodWIxWmtzamtJckVlektsT2JBOEFtNWFzSTMveVRldGkvL3JMeitwNHVjenB6TjlKSDVyN2JydVhYNEcvTTNiM3dSckwvYVdERXdwQzM4RW44MUdNQnZ3ZW9EQmFlYmJIZkxUdnc1WmZObDErK2EwTzErbndYdXBkcWY3dGFRMTZlSFZTaVpISkgyKzIxVTJrVWpKN3Y5NmxJKzRSK0gvMnV0U0RZcCt2ak93SUlJSUJBZXdXU04vUDJycE8xSVlBQUFnaTBWOEErYU1lYUxPM1MyZjYrKzNYYkxrMW1INWJURCtEdDNWcDcxMmF4ejNyWC9TZC9mZWF2Nk1zV0g0RlZEWnY5L1FFOWVxdnV1NlhSMzMvZjhVT0gvTXp3TGNWSUR5YXZ0SGU5WlJVcnZ0bjYvcGplVHIvYnlscHZweXUzdXRxUzFEbjVudHl6MW44MU8vNGxwMDl2WEhmMmJQKzVLTnJRVjZuMHg5VnFSYjM1bStKR28xOURGclpwaDFpbm52enRVYUN6Ny9VY3hheXFoWDJGc0w3UXhUdlVCV3E5OTVwSVQ5RS9DamVxU0RvbUVPaTdVNjlvMks5aHk5YlRield6MFFDMmI5bEJBTE8zeU5adnIxUE5aclZ1Vzg4RG1pVHVLajNHa2cwQjJ4K3R6ZXo3d3Q4VG5kYXg2OUZIOTJwV3g2dlY0aS9UVTU2bkp6M0Y4cmZhMFJyWHZpY0h5UHd2NXR4NkZ0Y3MvWnRERC9waUdYNUdBQUVFMmloZ2Y4aFpFRUFBQVFTeUxXQi9xMzM0VTgremdxeUdvc2FhS003M2JHVzc0QmNvbmM2OTFnR0dKQXpNbjd1ZUJJVlI5YzUrS1hMaExlcGh2bU5pZlB5aFJldFlTZS82b3BmMjVNZjBmZlpDMzROZy8vNmtZTWw1OVdtNHQvdGFieWZQNmN5L2RubThQanNBb05ITFFUU3phYlBhSit5clZ2dG1vNmcvakdiaW9LSGUvWWFDdVYxZXI5RzRYRmNVT0RWUnE5M2VtZUt3MW1VSTJQNWtYeGJLYlQrWjZ5SFg3V0RuOFBCdWpiWjVnWjV3alg3Y3I2ZnMxWUVWTzhDaS8rMGYrMlh6UGV2MmV2dXlkVDNaUWtCL01pRWVSd0FCQk5vZ3NKdy95RzNZREt0QUFBRUVFRmlqZ1BWa3p1NGNIcnhSdzVkL0k0UG5vYSttZWhZU2x1NWR0d2ZpMklhVmYxMDl2MTlRTUx4Wkp6L2ZjM0owOVBpaURmV2lkMzFSRVRyeTQxTHZ6K2w5NmZmV0RTOTFYK3ZqWm0zTGhiNG5qL0p2bGdXc2pkTXczWHBLU0JCY2NjWDZIWTNHTXhXOHI5T1Q5cXVabjZmZkdidnNvRzYyOXBMclozOHFpZy9rdHI2VkxBVDBsV2p4WEFRUVFHQ1ZBdWtIbTFXK25KY2hnQUFDQ0hSVFFKKzM3MDQ2dit5VGR5WVcrOUJ1aXdXSGxTNVdoK2FaMDgzcXFHZGR3VnpyVlAxQ25Yc2RoajloWHdvWmJ3bGpWOTh4TlBobDNYOXJIRVIzSEI4Yis2WmUzeHBVckF6MlpTSFV5cFdHVWQzTTNiSlUyWmU2cjEwVmE5MmZXbStuNjIrOXoyNWJXUmIwMnFaUDVIdmJCTXpaOXVkVzd6bnpyVDl3MlEvMnhSWDlia1RYdTltWkYrdDVUMU12ZVRPUTZ5Y2JwWkpja2pINXZXamZsUjhhS2xBbjkwVVZuZ1VCQkJBb3I0RDkwV2RCQUFFRUVNaStnSDNJam5mdTN2MDBuVUY4bno0ZDI4Umk5aUc1bDMvSGJXWm5YVmZOZjFhZlVWbnNvRzg3eTVOZWhzeTJvOG1xZE9aMDg3aUVZdng1YmVscjZodTh2ZUxDV3l1enMvYzgrdWlqeDdUOTFpVTlDTDN3bk56V1ozQWJnV3dKMk8rUG5jWmhTK3ZCcDJEWHJsMmJnL1hybjl0d2JyOSs2YTdSNzRPZFM2NkpCdlZ2KzNySmt5MHY4YTkreTJlMEpadkZmYVl4Mi9pUkU0OCtlbGkzcmF4ekJ3MTBtd1VCQkJCQVlJMEM5a2JBZ2dBQ0NDQ1FmUUg3ZSsyQ2ZVSGZqcU5EOStveitUUFVrMjRmak5NUDg5MnVnVDg0b0VJOW9BMC9SZWNrWCtxdmYyNlRUZGxFY08wTjZtbmRrblBYTFpIby9Ic2YxdE53RXJpam1scjhMajN4Wm5XZGYrRjRyWGF4M25VcmU5cnpuNjZiN3dqMFFzQityeGYza3MrVlk5ZlEwQS9Ib1h1Ujl1M3J0YXUvUUR2dWxYNi9Ud081aFdNYlVwTWN1VXJYTS9mNk50M3cyL0NUQTlydlcreitaL0Q0NDYrYW1KaVkxdnFUdjB0dDJoQ3JRUUFCQkJEb3pBY29YQkZBQUFFRU9pUGdlNnMwVWR5ZnFDLzUxVDA5RDExQlBLeFVOSnQzOEZ2bkdvM2ZXeGRGNzFkdjlpL2JoL2lXb0o3MllIZENJeG5Dbm9RVFA0VFhPdGt0THVpdUdYMGRWSXIvZ25MTExaWHo1Kzg2ZXZUb1k0c0trUjVFc1BVUTFoZmg4R05IQlN6VXBnZldGdlNTYjkyeloxdDFkbmFmRGovdDErL1dkWHJlcy9RN1paZlY4em5jLytNUHpHa1ZxeitYM0ZhM25NVWZFRXVEdVg2blJsU205MDdXYXYrOStXTEMrWElVZVE0Q0NDQ3dRZ0g3NDhxQ0FBSUlJSkFQQVF1OHN3cm8vMW9CL2ZkNkdkQnR1S3NtaGRibHZZUDNUSTZOdmN2NHRnMFBQNk1TeE8vVWZmL2NPdlQwZ2Q2R3FHdTJkaDlHT3YxK2svYXVXM0N4eTRQcHU3NlNuc2JIZE90dTNYOWJFTWEzVHd4cy8zcHc4T0Q1bGliM0FWOC9XODg2dmVzdE1OeHNpNER0KzdhUDJmZkZCNFNpN1h2Mi9GamtHbGZyc1d1MXU3NVErKzVReTc1cmU2Ukd5dWdSZndUS3IwZFA3ZWlTL0M2RlVWVi9aN1RsK0Z2YTJtOVBqdFUvMWJKVnE0djlyckFnZ0FBQ0NMUlp3UDdBc2lDQUFBSUk1RVBBOTZEdkdoNitXcGRRK2tMejg3RjlTTzcrMzNLRkJuMTRyeWlFM3pKWnE3OWNaVWpEYmFBRENKcll6YjFUaWVMLzhKL2lMYWduajZlOWhwM1dUcmFud3FXaFJyMkFmcHZxM2RmbDZVSUxITGVyeExmcSsxZlVJMWhmVkNBcnB4VjljWmhhOURSK1JPQ0NBcTBIZlJhY28zM1paWmRkR3ZmMVBjK0Y3bnJ0b0Zmcll2VFAxQ2tpNjJ4TnRzdGFJdlpmbHRMdHYyUmY3TWJ2dUUzM2JyOGZDdWE2SWxzY0g5R21ieHlvVmo5KytQRGh4NXMxdFlPRVZoL0NlUk9FYndnZ2dFQzdCYnJ4QjcvZFpXWjlDQ0NBUUZrRjdFTi9QTEI3OTg3K0tIcEFIOTEzK3cvVTg4Tmx1K3ZpQWcxenR5SHQ3cThWY3YrcDMvamV2ZjFwNy9TT1BidXZEK0x3QnZVSVhtZVBOYS9kYmplN0ZkUnRXN1kwQTQ5dVdmaFkyTHMrcFF4MHQ5TEdiWHJzdGczT2ZhTldxNTMxcjByK3NmZEpLMjk2QU1KQ093c0Npd1hzZDlQMkZmdGFlR0JIdnhPN2poL2ZHMGZSMVlGQ3VmWWt1ekxCcFphLzlmdXIveTJVMjRSdyt0NjlYdkxXOGx0NUxYVDMrUU5aTGo3cXd1RERybi9ESDB3OS9QQXAvMFROZlJHTUJEWVJKQXNDQ0NDQVFJY0Y3STJFQlFFRUVFQWdId0xwMzJ5M1kzandKZ1hMNi9YaDNqNVlkenZ3em1zMXowVmZJcVRidWJVK3pPNFlIdjRuU2lIdlVCNTV2cjFRUFhNMmtWemF3emkvcnU3Y3NxQnRnZDE2MTgxemJySTVsY3NlZTBpdWQyaUV3czE2enBlbnhzZkhGaFhMck8xMUMwUFlvaWZ4WXlrRTBuM1k5cHNGdmVRN2g0ZDNheDk2Z1VhU1hLZmNmYlVlZjdyQ3IvODkxWDVtT00xaDVINGZ0UDNKMXRYdFpXR1B1WE1LNCtFZjlNM01mR2p1aWdqNzlpbVlqMWpkZktHN1hVQzJod0FDQ0pSUklQMndWOGE2VTJjRUVFQWdqd0xwZWVnZjBCRHp0L2J5UFBRVVQra2tPUis5dFNkOS9xQ0JmYkMzQUJQc0hCcjZCZlhNS2FpSGUzMnZZVytEK256eGs0TWMxbnU1cUhjOU9LR2lqeWlPMytZYTdyYjFRWEQvK1BqNG1mU0YrdTREdnI1Yi9leUxFQ09FQWkrdHZlUVdXdjErYmZYZHZYdjN4c2ZEOEZuYXQxK2l2ZUtsT3JqelBOM2VybjFLejBwN3lYV0ZBMXQ2ZDNES2IxNy9MQXptY2F6aDYrRW40amorN2VQajQ2UE5KekdVUGRYaU93SUlJTkJsQVFKNmw4SFpIQUlJSUxCR0FSL1F0dzhPL2x3VWhaL3RlUTk2c3pKS0trdUZkQXMwRmxwOW1mMVQ3VEp4aiszK2w1cUErczBLS2orb25uZmQ3VHB4RFhXL3VSWCtrNFRzcFh2WGJWVVBLWHg5U1plOHVyVlJuYjN6eEdGL0hlaldUZEM3M3FwUmpOdTJEOXVYN1JzTGVza3Z1Znp5SzZwOWZTL1E3bks5SG42UkhuOWFNa1M4R2NqdCtmUDdrcTJqOTUrNWJDaTl2MFJocEZQZjljc1hCbjhTek1idm4zemtFWnVYd1JiN1hiWGZXUTQybVFZTEFnZ2cwQU9CM3I5WjlLRFNiQklCQkJESXNZQVB2Zjc2eUlHN1gvWFlxQzhMRHozL2U2NUNORU42L0tlYU9PNDFUV05mWGwrKy9ScUtmOERPdFEyQ1hidDJiWTdYclh1RFN2MXYxTk80dXpuczE0SzZoVng3VFJZV0pTMExaYXJaRTNyWG5hNEJIZDZyaWI1dXFRVFI3WTNUcCsrZm1wcEt6dGROU203dFlYV3h0ckV2QW84UU1yNVltN1YrSlQzZXpVSnYzNzU5UzJYVHBxc2F6bDJySFhTL2RvNTkybmNITXRwTDNrcWQ3TWM2S3FieVJyWXphby84eTdBU3YzZml5UGk5elNjU3pGdkZ1STBBQWdqMFVLRG5IK2g2V0hjMmpRQUNDT1JSd1A1dXUwQVRUKzA0ZVhKRUkyaWZrWlZlZEY4dVhRWk92WWg5NnB6N3BDYU9lMjBUT0EzcDltTVl0QVIxRFEzZWVUNE0zK2pDMEM0ZGQ0a1A2anF2WGFFbjdZMXVycUxuMzVLUWJUMmlsc2g4TDZTYVFqZDlSMlFZSE5KRFgxVEwzRktKb2pzZkd4djc3cUlTbTBIcVFGaGZoTlBqSDlOOTdRazl4M1lnckJIR0x3NWRlSjNDN1F2VitGZnF1MzREbTczazg1ZEFzOTlMYTEvN25xVkZ2ZmdxbEs2NFlJVlNxVytLZytpM2pvK04zZEVzcEw5ZnR4ZU1EbWcreGpjRUVFQUFnUjRJWk8yTnBBY0ViQklCQkJESW5ZQjlxRzdvY21aL29nL2VyODdDZWVnTEJPY25qcnRRU0xlbmg4RytmVlZOUU9Wbmh0YVEvU0hsbmpmci9sOVR3TitRNGFDZVZqWHBsZlRwSjZ6NnpPNkRtMlczMk01VGZ5QjB3YzM2Zmx0ajNicDdqeDg2ZERKOVlmTzc5VmhhNkcvOVd2UVVmdXlBZ0gzdVNjTzByWDVCTC9uV1BYdTJWWUxaNXltUTcxZkxYS2ZIZFY1NXRORmU0WS9OMlBFWk80QmtkK2dnVFhOZHRwNnNMWDU0dlg2WGJEL1Q0cjZvT3IzM1dLMzJ1ZVRudVlNSkJQTW1DTjhRUUFDQnJBallteFFMQWdnZ2dFQytCT3hEOTZ3Qytoc1YwRCtjdVlDdU5LQVEwd2dybFdvUXUwOU0xR3F2YS9LbVBjaXQycEdDZWlVTjZuN29mdWh1MEJwK1NlR2lvcUR1MTZVQTNBd2FyUy9OekcwTDJjbk04SXQ3MTVOQWQwVFovY3M2ZC8wV3VYeGhvbDcvOXFLU200dDkyWG9JVEl0dzJ2QmpHc2p0KytKZThuRDduajFQajF6amFqWFZTL1g0VDZnSmh4ZjFraXVRcTJuOG5YUEJ0ZzNGNnNncWt0bmhGY3l0dUpyNDdmNUtGTHp2MkdqOUw1cGJTL2UxQlFjbU9sSVNWb29BQWdnZ3NDb0JBdnFxMkhnUkFnZ2cwRk1CMzRPK2E4L3VGOGR4ZUVlekpCYnVzdlEzZlNVaDNhcXdJRGhjTWpoNFZUVUtibEJvZXFVRkRmVmVLbmdvWEdXNzE3TFpGQ3FwbFZXbFZxaXJXTEN6T3ZnbGpzK3FvUjVRVXgzUXNQN2JadUo0WkxwZW4weGYyUHh1QnlPc1BWdS9GajJGSHk4aVlOajJaZnVVTFF2QzZHVS9kTm1samNlclA2NUhyMU1EdlVTUFAxUHQwMjlQYlBhU0p3ZUYxSEJhaTYwalM3OVhWc3lsRmp2dzBGQ1IrMnhmMDJrWEQydi9ldC9VMk5pbmRMODlab3Mvc0pmYzVGOEVFRUFBZ2F3SzVPRk5KNnQybEFzQkJCRG9sWUNGaG5qejVaZnZXbGV0M3EvNHNGdkp3bnBlTGJobmFWbHBTTGV5V3gzc3ZjbUhxa3YzN0g1UkhFZnYxRDAvWlE4cVFLVTl6Rm1ycXhWdnFjVkNkck4zWGJlZU9ObGNUZmZlWmNQaDQwcmx6cW5SVVp0Tk93MVV1amwzNE1MV2s5YmQ3bWRaS0pBR2N2dHVUdWFWTEpxdllkZUpFMDl2VklMOWNyNU9qZkI4UGVseXk5OTJES1VaeXJXLzZXZUw1SW01ZmMvRFl2VzAzNVUralRoUk1JL3JxdEtONjUzN1R5MlhCTFJndnRBa0R6V2pqQWdnZ0VCSkJmTHlCbFRTNXFIYUNDQ0F3SklDNmQ5dXQyTjQ4Q1psaXV2VlkyYVhUN0lQNGxsYlZoUFNyUTVwQVBlaGRQdnc3cGRIemdkMTYvRzBJR0lUeVpsRCtqeTdPdytMUEpidVhWZFFQSzhLZkYxUE9GRFJjUGpINC9pZTZmSHhpVVdWU3R2WVFyeUZzL2tndXVpSkJmL1IydDYrN0dDVkdTdzRlTEY5OSs3aElJcCtYTmNTdTA1emwxK2pGUDZqZHNxRW51Y245Yk4vbTYreDE5dFgranVsbTdsWUZnUnpqV1UvRm9mQlIrSkszMGRPSEQ1OHd0ZGd2LzRlSENDWTU2STFLU1FDQ0NEUUlwQzNONlNXb25NVEFRUVFLTFdBQlRVN0QvMERPZy85clJrOEQ3MjFjZVpDK2tWbWQyOTlmdXR0cTZlRktmc0t0ZzhOL2F6NkNkV2pIajdIZm00RzlUUmsyVjE1V2l4azJkQjlmZGYvaTN2WGcyQmM5MzlWNTY1cjV1M2dDOGRydFcvNDU4L1gwTjdETFhRbTYwbSt6ejlhdkZ0cElMZnZDNGF0QjFkY3NYNzd6TXhWT21helgxSDdXZ1h5NStuMjlndjBrcWVCUEkrZmdmenZrdDlYa2g3ejB4cW0vNGRScGZLaGlTTkhIdkZObmdUenVkK1o0dTBHMUFnQkJCQW90a0FlMzV5SzNTTFVEZ0VFRUZpZWdBL29tdjM4NTZJby9HeHo2SGVXZTVQWEV0Sk54TmMzcGRteFovQ1hGVXZmcGhtMmY2dzVSRGxyMTFCUGk3cVM3Mm5RdG5CbE04UGI0bDl2QnlKMFM3M3I0UjFoR044U1ZkZDk1Ykh2ZmUvb29wV2JrUzMyZWx1WGZlVjVzY3FuWWRycXNxQ1gvSkxMTDcraTJ0ZjNBZzFJZUpscStrSTkvalFiNWowM2JEMXhzTmVrQjNEeS9KbG5ZVEIzVHZ1NyswUTFySHp3Nk9qb0lkVXhDT2d4OXd6OGd3QUNDT1JkSU05dlZubTNwL3dJSUlEQVdnUXNkTVNhOWZ5cDZvTFZwR1BCUm4xWmlNbnkzL1c1a0w2TTJkMVZsU2NzVmpjN0NPRjdUNjlRcituMDdPeS9WTFhmckdDMlJ5SFd3bGtXcjZIK2hJb3M0NDRrWUNmRDRaL1l1KzdjWTFySDNTNE1ibzBpZC92RXpxZDhQWjBKdjdudTFNcldrd2IyWld5MjUwOUp5MjBGV2RCTHZuMzc5aTJWVFp1dWFqaDNyWGIrNjFUM3EvVGtMUzI5NUVtSXRWK0IrY25kYkgzNVhwd2NORG1pRGtacHhMNDFaZmhwRjBYdjFYd0ZCNXNWV3pES0pOK1ZwZlFJSUlBQUF2bC80NklORVVBQWdYSUsyTjl2QzEvVm5VT0RJd29wejhwQkw3cTFsSlY1Vm9HNkw0Z2JINXVvamYrYWZyYTYySmVsaitVdFNXK2hEM0RicnJ4eWEzVHUzQnZVMmZ4dmRkN3hMaC9VZzZBSVBlcXRGbW5RTmlNZHBGQmFzOTUxL2EvNjZyN1FKcGM3b0s5YnRCL2NNMVd2MTNTN2RiRURHNm14cmN1K3NyQlltZXhnazMyM01pM29KZDg1T1BnamNlUmVyR3Q0WDZ0bnZGaFB1OExYTzUzY3paNXZReWlVWHZWYSt5cktvb01OK24yUWl1cGJhVGJXMytpKzkwN1dhbmMzSzBrd0wwcHJVdzhFRUVDZ1JjRGVFRmtRUUFBQkJQSXBZS0dyc1dObzhMOG84TDRtNCtlaHR3clA5YVRyblBUZlZ1QjRteDYwY0xYUzRCanFHdXJWdE9mNHNzc3V1M1Mydi85TlNxeS9MbytCbHFCdVFhWkk3M2VKMDRWNzF5YzFjZUE5ZXRKdENuZTNUcXhiOS9YZzRZZlB0VFNBV2RpK1krdXh3Ry9mdTdtazI3ZHRMdWdsM3pJMHRMMHZpcDhieE5GTDlkaTFLdG96MUphYjdJbk5VeG1LMlV0dUZaeGYvRUVLQytaMmwrcDlpMXJvZlpQMStpM05wL2o3ZFh2QndZem1ZM3hEQUFFRUVNaTVRSkUrc09TOEtTZytBZ2dnc0dJQkM1NnpPNGFILzVVNlUzOC9Sd0hkS21vOWhJMndFbFVWMGorZ2tQNTIzWmYyZ0M2L0o5M1daT0Y3dndMbmdTVHNYZktVcC94QXBScTlWWk9yL1F2MU02OHYyTkQzcE1ZTC8wMkRkck4zWGZPVys5NTF1eDUyYkk4OXBNQitoM3FpYjNLejdpdkh4OGRIRjc3Y2gzWDdQSkN1cDkyQjNkclYxbTlmVnNiVzlxMXNHeHJhV3duZEM5VVBmcjJlOGdJVmZiZTZqUzJaTmtPNUJkRkM5cEtMWXNIaVJ3UG9nSVQ5WGx1TnZ4Skc4WHNtUnNmL3R2bXMxSkZndm9DTkh4QkFBSUZpQ2RpYkpRc0NDQ0NBUUQ0RnJDZXRzVzMzN2hkcG9yZzdtMVd3Y0pXWHYrMFcwbU9GOUlwQyt2c1YwbTlRMlMyRVdCMVdFeEx0dGZibGUyVzM3OW56OU5BMTNxWTEvWkpDVHhKV2RWQkFPajRBNlhsRlhCSzdDL2F1QjhlRFVEUERCOEh0T3AzNTFvMWhlSCt0Vmp1N0NNSjhiRDBXcEZmVERyYTZ0QzNzOVFzQzVlV1hYNzVydGxMNUNaMURmcjJDdUlhdEI4L1NBWVUrZTFHemw5eXVHNjl0SzZYYmY4bituSmQ5MnFxeDBpV3ByNEs1SFZqUjc4STNOQkhnZXlmR3hqL1RYRkZxYVk2cmJZK1Zsb25uSTRBQUFnajBTS0RJYjNnOUltV3pDQ0NBUU5jRTdJTjdQTEI3OTg3K0tMeGZlV1pRd2NZK3hLZERZTHRXa0RWczZFSWgzVmJaMnRPNmtrMmtnY1lIOVoxNzl1eHpjZU1HK2Z5c3Zla3BCTnFsemV6OFhuTXErdnRnR3JUTjB1cmIycnV1SDRQdktBTi9RVGEzVktMb3JxTkhqbnpQN214WlVxTjBQUmNLaUdadWx2WmwyNXB2dTZjK2RkM09tVE43WXhlK0pJcUQ2N1dDNXl1SVhtcjVXNDFoN1dHeFUyMmw3OFU3bDF3VUYxek15SDVmKyt3QWtpWk8vSzRPbnR3NE1WYi9XUE4rZTZFZExQSDdzZjNBZ2dBQ0NDQlFmSUdpZnpBcGZndFNRd1FRS0xOQStqZmM3UmdlL0x5QzFzdlUrMll6UHVldGgvaENJZDNDb0gydGRrbkRaUkxVaDRhdWNhRjdsNXl1dHhVcUdLWTl1L2E4TWl5SjUzenZ1bVlHdDE3cVpsQU9nbFBTdms5R3QxVEN5bTNCMmJQM0h6dDI3UHVMWU5KOXkreHMvN05nYnV0TkxYVlQxNnNmSEJ6U3Q1L1VFNjdWSVlGcmhQMmpDcUhldVRrM1FOSnJiTnVmWDQrOXRBeUxlZGsrNllPNWZtY2ZFY0tId25Qbi9xakYyNXpOZEMzN3YxN09nZ0FDQ0NDUU53RjdZMlJCQUFFRUVNaXZnSDJRbjkweHRQdDlZVlI1ZTg3T1EyOVZ2MUJJdCtmTTk4YTJ2bUw1dHkwWVd0RHg2OUdsNmY2aDB1RTdsUTN0MnRrMjlOMHV6V2J2aDJVSjZsYnRkR2tOeWhiWXJSZmJobG5idDBQcTNQNml3clgxcnQvNTJOallkOU1YTGY2K2UvZnVqWS9yU2dKNnRRWHkvWHFOOVpKdm13di92cGRjQjQ5c0tWY3ZlU3ZWb21BZUg5ZlJrZDg3NTl4SHB1djFTZjlFcm1YZTZzVnRCQkJBb0pRQ0JQUlNOanVWUmdDQkFnbjRnTDU5YU9obm96RDRiODFlNGJ3R3pRdUZkQXMyN2VoSk5Dc0w2VWxRSDk3OUt1ZkNHM1JwdG1mN1lkWkpVRStIeHhkb0YxbFdWUkxqbHQ1MUJXbGJKSzltY1c1YU54L1FrMjRQNCtDVytPelprWGpkdW0zVlN1VkY2bkYvbVZySERuYjhpQitxblR6Zk5wcGVBczArYTZSRDRPMytNaTUyMmI5bWozbXNjLzdELzZTZlA2aDVGK29lWTkrK1BsMk53SHJNMTNvd3lxK09meEJBQUFFRThpdEFRTTl2MjFGeUJCQkF3QVFzK01TWERnLy9VTVBGRCtpMlhaTEt3bFplLzc1ZktLU3JTbTBMTC82Z2hxMVFTMFU5NnIraWJ1UzNLVnorc1BVY3EvdllldFRMR3RRVGxlVGZwWHZYazk3d0l6TGFxZ0IvaVg5cUdzcmRYQys1SFNUSzZ6N1lhckNXMjNaa1E1TVNoaFh0VzZHTjFGQ1ArUjhMNWYzSGFyV0hteXRlY05Cb0xSdmp0UWdnZ0FBQ3hSRElheTlMTWZTcEJRSUlJTkFtZ2RPblRuMS8wNVl0UDYvQWRKbFdhYjF3RmpEenVDakQ2TC9ZMmV6dUw5a3dzR1g5MlZPbmJsWkYyaG4yek1mV1orR29jZWJVcWZ1MmJOajRTUmVHeDNUdk04Tks1UklGSzN2Y2VqM0wzUE9ybHZBSEtzekNEcHlvUnp4TzdDeVlPN2RlN1pUZWx4d1VzbXQzejc5R0x5dnBZcFBlZVQwNzc5N0dJYmcvcitocUFzZnE5WTlwZjV1U2l1MTd0bkNlZWVMQXZ3Z2dnQUFDVFFFQ09yc0NBZ2dna0g4Qisxcyt1MkhyRmwxRE9ucDJFQ3RFSlNFcHJ6VzdVRWh2OTBHSEpHenVDL3BPZitmMDQyZW1wKzlhdDMzSEo2TkcvTGdTNlRQVTZ6bEFVUGU3a0FWMGE1T29KWHlibmQyYjNsZm1BeG1ld3YrVFhNYlBoVkZZdFZ5dVV3UCtYZ2MyZm1XeVZ2Ly9UazlQSDlWekNPYnpXdHhDQUFFRUVGaENnSUMrQkFwM0lZQUFBamtUc0wvbDhjYXRsd3lxcSs0ZktsVG1QYUFiZnpPa3h3M3JTZDg0c0NWVXorTnR1ci85NzF1UE5FY2M3QXVxajMvcnhCbHQ1L2FOMjdiL2FaQk04djRzQmZVTlBxamI4TzE4SC9ndzEzWXRTV2h2MTlyeXZ4Nk5KQWdzbU50RWU1RnUzKzZpK05lbXhzYmZmWFo2dXFicTJYNXJCekhvTWM5L1cxTURCQkJBb0tNQzdmK2cwOUhpc25JRUVFQUFnU1VFL0JEa0RaczM5K214MXpaRFpKN1BRMCtyYUlPRTArSHUxMjdZUEhCZVllY0xlckFUNzEwdVNJSjZHR2dtN1RNUG5EeDE1dFQwNTdkY3N1M1BkVzcvZWhYajJRcnFmUXJxNlhuRkJOUzBsY3I5M1NiQ2k3VnZWQzJZNjVkdVJPSDgxelg1Mjl2UG5wdytKQm9MNWJhL0Vzekx2WjlRZXdRUVFHRFpBcDM0a0xQc2pmTkVCQkJBQUlHMkNQaUFYaDBZT0Z1SndsOVVxTjJpdGRvUVpBc0hlVitzSjkxbUVuZnFTYisrd3lFOXNUbzhaMWM1ZmZMazVObFQwMyszZnV2V3Y0cWMyNlluUEZOaExIRk5oak1Yd1RqdiswZ3Z5bThUNkRWMEJZQ3E3UTg2YXZNdDdUVnYwVkQyZjZVNUV4NVVnV3l2dGVIczludVluQTZnR3l3SUlJQUFBZ2c4bVFBQi9jbUVlQndCQkJESWgwQjRmbnI2ek1hdFcvNkJFdTBQcVJkUHc5d0xFZEJOMzhKT2QwTzZUWW8yZjVDajh2aXBVNDlxNlB0ZjZqU0N6Mm5Dcjh0MUVPUnB6YUhNeWFXeGtzTUlTVGw5WWZtbm9BSVd0dTE2N2xWTkpxaURNKzZ3ZHM5M1RhNWIvMytkUFhKa3BGbG5nbmtUZ204SUlJQUFBaXNYSUtDdjNJeFhJSUFBQWxrVThLRmc0NWFCcDZ0SDc4Vit0dTFpblMvdCs5SG5ldEszYXJqN3lZNE5kMjl0M3pTbzIvdGxwTjdSbW9hK2YyYmp3TUFkK25tUHpqbStzaG5VN1lDSVBaY2U5VmE5NHR5MnRrMkNlUlJWTlB2Yll6clo0ZDF1L1liWFRoMCtmR2N3TmRVSWRHcEVjSGp1d0U1eGFrNU5FRUFBQVFTNktrQkE3eW8zRzBNQUFRUTZKbURCTU42d1plc2xTckt2VkV4d0JlcEJUOUhtZTlMRExnMTNUN2VjOUtoYk1RcGZmQUFBTjg5SlJFRlVTTFAzelZEbndoL1MwUGMvM3JoMTgzMGFmSCtsZ3Zwd0V0VDlSSElFOVhtM3ZOOUtnN2xkeTl6YS9xUjJoZDlkRjd2WFBGYXZmLzdzMU5TNVlOKyt2dUNSUjV6Q09VUFo4OTdhbEI4QkJCRElnQUFCUFFPTlFCRVFRQUNCTmdtNGdhMWJ6OGZPYWFLNFlKM1dhZUdpYU1PdUYvYWtkM2JpdUtXYXhVeHRzUkVMZ1hyVEgxU3Yrc2MzYnQzNmJUM3dOSVc0eTNXM1p2SDJRZDJlVWpSL3ExTTVscVFOZlRCWGovazU5WmgvVkZjd2ZNMVVmZnl2cG5VNlNiUEhQRkE0dDlNY1dCQkFBQUVFRUdpTEFCOGMyc0xJU2hCQUFJSE1DRlIyRGczZW8zT2tuNk41MVN3NEZQVkFyQVZsWGRaS0UzUTE0bmRNMXV2dmE5YlZlakhURUsyYkhWOHNxTnZRWjF1cU80Y0hYNmRNL2hiNVgrbGlYOFFaM1c5dHdOQjNFOHIrWW1OUEdqcXNZcGRMcyt1WTIwaVVQdzRhN2dPVDQrTTIrWnN0L25RU2ZhZkgzSFB3RHdJSUlJQkFPd1dLK3NHdG5VYXNDd0VFRU1pTGdQMU5iMnpZdXVVRk92Mzhxa0RkZlFxS1JRMkd2ZTVKVC9jSkMybiswbXdhNGp5ckh2V3ZEbXpZOEFsWHFSelgvVGJqKzFiMXBsdFpMYWhiVzNCZ1hBaVpYSndPdE5pRi9YUXRjLzJyNi91NXo0WVY5MHVUbytNZjFTa05FeXF6QlhOclB5Nlpsc2tHcEZBSUlJQkFNUVFJNk1Wb1IycUJBQUlJbUlEOVRZODEwL2hUbEM1K1dqMkJSVHdQdmJXbGs3RGJ6VXV3dFc2OTlYWnkvckdWcDNyNjlPbHptdkg5UzdyczNhZXFHaHF0c0dmWFVOOUVVRzhGeTlSdFhjdmNSbU9FZGkzelVEZHZpb0xvVnlmR2FyOXo1dVQwSXlxcC9WN1p3UldDZWFhYWpjSWdnQUFDeFJRZ29CZXpYYWtWQWdpVVU4QUNvdHN3TUtDZVB2YzY5ZlZacUxCeDFrbVFMYWFKci9QYzdPNERXODdwblBBN1ZOVjBHSEszYTIwOTZwRW1EcXVlZitpaDc1K1pucjV0dytiTm45WUJFeXZuVlFycTYzeFFUODV2THVyb2htNmJyM1o3YVRDMzRleHFDM2RuNk1MWFQ5VHEvMTRIV0VhMVVvTDVhbVY1SFFJSUlJREFxZ1dLL0tGdDFTaThFQUVFRU1pcGdBVytlR0J3Y0VkL0dOeW5udHRoaGNFaW40ZmUya3p6NTZTN3hxOVBqbzMvZ1I2MGtON0xYazlyRC92eTU2anZHaHI2WVJYeWJlcWgvUlVGOVlxTGRaSzZ0VStvSWRYRlBvaWk2bVZxVVREWHVlVlJaRDNtdWhuZnE1TVFQakExV3YrTFppbnRzNUcxU1RxM1FLWUtUMkVRUUFBQkJJb3RRRUF2ZHZ0U093UVFLSmRBK2pmZDdSZ2ErbC9LSHEvUVJHVjJYcTBGMVRJcy9uenc1akRsTjB5TzFmOUlsYmE2OXpwb3BRRThDZXFEZzFlNUtMaEJFZkdWU1VCMHNjWTUySFhVeTlKT3Zkb1g1U3pyTkpqSDhjTlJHTDN2Mk5qWXAxU2daQzZCSkpqMzhxQk9yMnpZTGdJSUlJQkFSZ1RzeUQ0TEFnZ2dnRUF4Qkt3WDJjS2crbVBkVjlVenF4dDJWMmtXZTA5clRyd2QvcUZtVkgrOWZyWlFiTUUzUFhpaG0xMWZMUEJaT2F4dEtzZnE5ZnNueHVxdnFrVHV4U3J0Mzl2d2Fqdi9XWS9aOCt5THBiMENGcjc5SkgxaHBWS1YrWmdHTDd4cG9OcjNUSVh6VCtxeE9OanY5eEg3WmJGMkt0VXZqZXJMZ2dBQ0NDQ1FJWUhrZzF5R0NrUlJFRUFBQVFUV0pHQWhOZDY0WmV0V0pkSlg2YmFGalRJZGpMVWdiaUUzVXZEOVJ4dTNEaHpWek9wMzYyY0x3QmJVZXJsWVc5aVh2ZmRHcDA5T0gxSFpQcjErNjlZdmEyYXlIMUI1ZjlEQ3VwNWhsL2txVzd0MW9sM21UaUd3VXdwMHpiUUozZkcrdUgvZHJ4dy9jdVQyRXlkT3pBYjdncjdnRVZrZjd2bSswWW42czA0RUVFQUFnUndLOUxKSElZZGNGQmtCQkJESXZJQVA2SmZ0MlhQbGJOeDRRS1hkckM4TGUyWDdlMjloM0VLNlZmLy9Wby8xUjNVajdhVTJqeXdzNlVFRGYrQkFweVg4TTQxOGVLZm1rM3V1TDJBYzYvUUVYd0VPcHErc3RkSmdYbFV3RDNTdS83UXVaL0RSU3JYNnU4Y09IMzYwdWFxczdRc3JxeUhQUmdBQkJCQW9yRURaUHJBVnRpR3BHQUlJSUxCSW9MSnphTkNHdVYrbE1kL1dvMXpHa09mcnZVUkk5K2VDTC9McTFZLzJQbXh0WTJYMXVYekhuc0ZmVW4vdURRcVhQMnB6bWVsNjloYlU3Y0JMbVVaQ3FMcXJXSkxaOFpOZzdweUd0YnVQVjhQS2pVZEhSdy81dFZtUCtZaTM3dlZvaWxWVWpwY2dnQUFDQ0pSQm9Jd2YyTXJRcnRRUkFRVEtMZUFEMzRhdFczNVN1ZTRxQlR4TlFPWURYdGxVL0dnQ1ZWb1ovUW5EM2JQU2kyNXRrb1pGMzZOKzl1VDBBMmVIOTN4c3crT1BQNlllOWFlSFVXVzd6cHUySUcvblVkdDNEcTRMb1dWUmo3ay9MU0RRT2VZVm00VkFQMy9HUmRFdlRvM1ZQblg2NU1uamVxN1pCaHJPUG5jZ3hQL01Qd2dnZ0FBQ0NHUk1nSUNlc1FhaE9BZ2dnRUFiQk94dmU3eHg2NWJkQ3FZL3JiQmlNNFNYdGZmVndxeUZzaXllazc2NHFTMm9XM21yd2JGak03cWUrOTBiTHIzc1B3Y3pzNmQwMzdQVm96N1FFdFN0UFFucXpVbjFOTWxleFE3RHlPUnZkQ3pxTlpPMTJ1K2ZQWG55bUxkTW5Bam13bUJCQUFFRUVNaStBQUU5KzIxRUNSRkFBSUdWQ2xoUWNSc0d0cWpYMEwxV01jNysxbHVQY1ZrRFhWNTYwdE4yVG9MNnZuMTladzhlUEt1Z2Z1ZldqWnMrMVlqQ0dZVlFDK29iQ2VvNjZLSitjZ3ZtTmp4Q25lYTNhS0s5MTAzVzZ1OC9jK3JVdUNCdG43ZDJKNWluZXhYZkVVQUFBUVJ5SVZEV0QydTVhQndLaVFBQ0NLeFN3QWZTZ2NIQkhmMWhlTDlpK1pBQ25RV1ZzaCtVOVFaSlIrdUNpZU95ZEU3NjRpYVBOTk40UmVkTjIvRDJZTnZ1M1hzMEZPQnQ2aXYrRjdxZTkzcE5nS1pETDNhdGUzK1p0c1d2TGVMUGFURDNROVlWekw4U1J1NDlFNlBqZjl1c2JMcVBXMXV6SUlBQUFnZ2drRHVCOUkwc2R3V253QWdnZ0FBQ0Z4VUl6MDlQbjltMFpjdkxGZWFlV3ZKaDdpblV3cDcwTFZ2cTZtMzlhcUNlNnVDUlI5THp3TlBuWnVXNzAzblRWallyZStYeDZlbmpaNmVuUDdkaDg4QmY2c0RMZ081N1Z2Tzg2MWh0YkpkbnN3UHZSVHo0YmdiK1FJUkdFRVE2eS96cllSaS9hYkkyL3FZeko2ZS8zYXl6aFhaNnpJWEFnZ0FDQ0NDUVh3RUNlbjdianBJamdBQUNGeE93c0JKdjJEcndZem9uOXlWMnJTbjFzbHJJSy90aTRkVkNYQ1NQbjltOGRmT0RaeDc4OXRlYTE4UE9ha2kzTnJOVEZLeDg5cjVkVVVoLzdPeXA2Yi9lZE1ubXYzZHhzRk4xZWJwR0JsajdwaE9tRmFXdHJkNXBNSzhvbUIvU2dQWWJKc2ZxcjljMTVMK214Mnl4ZlQzMThYZndEd0lJSUlBQUFua1ZLTW9iZUY3OUtUY0NDQ0RRV1FFWGptZ0l0UHBVL1FSYW5kMVdmdFp1SVZkRHBXMzJ2T2pQZHUwWmZLVWZRbTZYNE1yK1lnY1hiRWkrRCtvVG80K002THpybjlYUmhwY29tZDlrSVYzL1ZYMXZlbklnSXZzMVdycUVkakRDejFxdkh2TSt0VlZkQjVuZXZENk9uemt4V3YrUGVtdzIyTitjbVQzeHNJRE9nZ0FDQ0NDQVFPNEZpamdNTHZlTlFnVVFRQUNCTmdqWUFkaDQ2NTQ5VjFianhnTzZ2VmxmRm1MNHV5K0U1bUpoVjdOLzJ4VHZ3YXVPamRiL3d2ZWtOOC8zVHArVThlL3BTRGlyUzdCdGFPaW5vc0M5UzBIOWhmYXpCazVZNzdPMWVmbzh1enZMaSsyamRnQ2lUOEhjeW45Y28vWS9mTTY1MzUrdTF5ZDl3Wk5ybWR0ekNPVWVoSDhRUUFBQkJJb2t3QWUxSXJVbWRVRUFBUVNlS0JEdEdCNjhSeUhudVpwUUt3bWtUM3hPbWU5cGhuUmRoeTUwZVEzcDFuNEx6ci9lUHJ6N1ZaRUwzNmFKNUo1amx3VVBrcUJ1QjIyeU9uSnVjVEEvbzhNSzZpbVBicHdZRzdOWjJRTS9WOERJQ01IY1kvQVBBZ2dnZ0VCUkJmSnlSTDJvL3RRTEFRUVE2S1NBL1kyMzY2SC9wRVkrUDBjaGpmUFFuNmh0Z2RWQ2VxU0UrUE9iTDlueXJUTVBUbjg5Qitla0w2NkpEUW0zZys3K2ZHeWRuLzRObmFQOThmVURXMGJWRC8xam1raHVsMzg4bWZIZFhwdWRBL1JKbVNycU1hL1lqUFM2WE5vbk5XVC8xUk8xK21jMGlkOTBjeEsvUUJQNStWRUNWbmdXQkJCQUFBRUVpaXBBUUM5cXkxSXZCQkJBSUJuV0hHOGEySEs1dW9mL2tRWUVPOFd5clBhZzlySzlXa0o2cUpBK2tOZVFib2JKUkhkMmZ2YmhvS0ZycU4rM2ZjdldqNTkzd2JFd2NNOVFVTDlFSWRqQ3VUKy9XOTk3RmRUVHlld0NIOHl0SUxIN3N6Z01YejFWcTMxY3dYeEtkOW5CaGpTWU01emRZL0FQQWdnZ2dFRFJCWHIxeGx4MFYrcUhBQUlJWkVIQURzSTJkZ3dOL2JoTzE3MUx0KzF2dmdVZC92WUxZWW1sT2R3OTErZWt0MVlyMUVpQWFub045VXV1dU9LU2FIYjJqUXJxYjFRbzN1R3ZvWjRFZFF2QzNkd256RmxueGlkWEZkQVEvTC9US1B6M1R0WHJYMjRXM284QzBHMTZ6SnNnZkVNQUFRUVFLSTlBTjkrUXk2TktUUkZBQUlGc0NGalBzRTBVdDAwVHhkMnZTTFJIdmFkSkNNMUcrYkpZaW1aSXovMDU2YTIyWWJCZms4UWQ4Sk92QlpmKzRLV1h6YzcwLzRhQyt1c1YxQWVhUWIxYkIyNmNKWE1ybklMNUFaMVk4SjdKMGZHYm00Vk5SL1VSekZ0Ymo5c0lJSUFBQXFVU0lLQ1hxcm1wTEFJSWxFd2cvUnZ2ZGc0TmZVNTlwRC9sWXFkWnZadERoMHVHc1lMcU5rTjZTMDk2TXR6YUppakw4eElwcUVkcFVMOU1NL3czWE9PdDZyMytWVldxWDErZER1bnArdTlUQi9wdlRkWnFmOVhFdEFOSjlwVjMzMloxK0lZQUFnZ2dnTURxQmV3TmtRVUJCQkJBb0pnQ0ZvaVNYc2tvdUVjOTZQclI3bUo1RWdGL2FvQlJ4Uzc4YzMrZGRBdVArL2JsNFRycEY2dGEzQXpuOXQ1ZlBUbzZlbWhpclA1Nm5ReitGZCtwN1RvNnBEd0o1MkVZVjRQd2w1dmgzSnh0T0x1ZE4wODRGd0lMQWdnZ2dBQUNCSFQyQVFRUVFLQUVBcG9YN0Y2TktiWXpmL203djd6MmJvWjBwNUFlL0xsZFh6d1lHWmtKOXU2MW51YThMMmtnOXBPdzZSSjgzUnRTN2pTZ3ZsTHgyeFdpSFRFaW1PZDliNkw4Q0NDQUFBSnRGZUNEV2xzNVdSa0NDQ0NRT1FFL3EzYzFpcjZtYzM2blZUcjd1MDgzK3ZLYWFhNG5YWmNxK3g4N0J3ZXZEUTRlUEYrQW52UzA5bWt3VDArRlNPL3Z4UGY1YllTNmtGcXlwTjg3c1QzV2lRQUNDQ0NBUUM0RkNPaTViRFlLalFBQ0NDeGJ3QWYwbzBlT0hORUk5KzgwNStmeTl5MTdEZVYrb3E3TjdYdDVxN280MmVkOVNMZWU5UHdQZDI5dDFXNEU1VzVzbzdWTzNFWUFBUVFRUUNDWEFnVDBYRFliaFVZQUFRUldKR0E5d2JHR3VkdE03bjc2N0JXOXV1eFB0a24xNWtQNlRRVU42V1Z2WmVxUEFBSUlJSUJBSmdRSTZKbG9CZ3FCQUFJSWRGVEFEeS9XeU9KN2txMGtsN25xNkJhTHR2TDVrRjRwY0U5NkoxdHRmb2g3SjdmQ3VoRkFBQUVFRU1pNUFBRTk1dzFJOFJGQUFJRmxDUGpoeFRaUm5LYm9palUxbC9Xb00rUjRHWEFMbmpJZjBtMjRPejNwQzNDZTlBZjJ0eWNsNGdrSUlJQUFBZ2dra3dYaGdBQUNDQ0JRYkFFZmptYUM0R0ZWczVaY2JzMWYycXJZdGU1RTdlWkRPajNwSy9PbEIzMWxYandiQVFRUVFLQ2tBdlNnbDdUaHFUWUNDSlJLd0FKNmVLcFdtOUlsdFE3NnBLU0xYNWRLb0oyVm5RL3BSWms0cmh2aG1mMnRuZnNnNjBJQUFRUVFLS3dBQWIyd1RVdkZFRUFBZ1RrQkMwYzJyRjB4M1gwMTZVRW5MM21QMWY1VHJKRGVqWjJoR3djQlZ0dWF2QTRCQkJCQUFJSE1DQkRRTTlNVUZBUUJCQkRvdklBNnprY0NwendXaHZ6OVh5djN3cERPT2VrWDkrekdRWUNMbDRCSEVVQUFBUVFReUlFQUg5QnkwRWdVRVFFRUVHaURnTC8yZVRYcSs1cHo3dnRhbi8zOUp6U3RGWFkrcENmbnBBOE43US9zT3VsNzkvYXZkZFZkZkgwM2VyZTdzWTB1a3JFcEJCQkFBQUVFT2lOQVFPK01LMnRGQUFFRXNpYmdBL3JSSTBjT3EvZjh3VEM1MHBxL0wyc0Z6VjE1MHBBZWhsV05VUGlmTzRZdmYzNXc4T0Q1SElYMGJoeW82Y1kyY3JmclVHQUVFRUFBQVFRV0N4RFFGNHZ3TXdJSUlGQmNBWDk1dGRBRjkvdnowTldWWHR5cWRybG1QcVM3R2JtdUQxemwxcDNEVDNsZXprSjZwOEhvUWUrME1PdEhBQUVFRUNpRUFBRzlFTTFJSlJCQUFJRmxDYVFoNlo3azJVazMrckpleVpPV0k5QVh4UEdzUXZwbTU2SURoUFFGWkJ3TVdzREJEd2dnZ0FBQ0NDd3RRRUJmMm9WN0VVQUFnU0lLSkNFcERPOTFjUndIb1ovWm5XSHU3V3hwRFhQWEpIeldrNzZKa0w0QU5qMDR0T0JPZmtBQUFRUVFRQUNCaFFJRTlJVWUvSVFBQWdnVVdjQUg5TmxLNVdHRjgxRS96SjJKNGpyUjNtbFBlbDVDZWpmQ016M29uZGpUV0NjQ0NDQ0FRT0VFQ09pRmExSXFoQUFDQ0Z4UXdFSlNlT0x3NFJNNkQvMmdUMldhMWV5Q3orYUIxUXZrcXllOUcvdEFOdzRDckw2OWVDVUNDQ0NBQUFJWkVTQ2daNlFoS0FZQ0NDRFFCUUVMWWpaUm5KYnducVFIdlJ2WkxObGlDZi9OVzA5Nko1dUlIYTJUdXF3YkFRUVFRS0F3QWdUMHdqUWxGVUVBQVFSV0lCREY5K3BjYWVYMGtQZUJGYkN0K0tuNTZrbGZjZlZXOEFKNjBGZUF4Vk1SUUFBQkJNb3J3QWV6OHJZOU5VY0FnWElLK0VuaFpxUDQ2NHJucDBSZzd3UDBibloyWDFpNkozM2Z2cjdPYmpaVGEyY2Z5MVJ6VUJnRUVFQUFnYXdLRU5DejJqS1VDd0VFRU9pTWdBL29KdzQvZWtTci8zYVlYR21ObWR3N1l6Mi8xcVY2MGtkR1pvTHloSFI2ME9mM0JtNGhnQUFDQ0NCd1FRRUMrZ1ZwZUFBQkJCQW9ySUNkaCs0MFVkeDkvangwWjJQZFdib2dzS0FuZmR2UTBMT0M4b1IwOXJFdTdHQnNBZ0VFRUVBZy93SUU5UHkzSVRWQUFBRUVWaXFROW1aK05YbGgwbzIrMHBYdy9GVUlOSHZTTlhKaFV4UzRtM2JzM3YyakpRbnA2VDYzQ2pSZWdnQUNDQ0NBUUhrRUNPamxhV3RxaWdBQ0NLUUNTVzltR043cjRqaldOZEY5ajNyNklOODdMdEFuOTFtRjlFdkRLTHc5QXlHOUcrR1pIdlNPNzFac0FBRUVFRUNnQ0FJRTlDSzBJblZBQUFFRVZpYmd3OUpzcGZLd3d2bG9jcm0xZ1BQUVYyYTR0bWVySnoxMmJrYjJsNGFWOEVDUFEzbzN3bk0zRGdLc3JVMTROUUlJSUlBQUFoa1FJS0Jub0JFb0FnSUlJTkJsQVF0azRZbkRoMC9vUFBTRFBqazVabkx2Y2h2bzJFalFwOVAvWjlRVWwyV2tKNzJUQk4wNENOREo4ck51QkJCQUFBRUV1aUpBUU84S014dEJBQUVFTWlWZ1ljbUd0V3NKNzBsNjBNbFBpVWZYLyszTFVFOTZKeXRQRDNvbmRWazNBZ2dnZ0VCaEJBam9oV2xLS29JQUFnaXNRaUJ5STRGTjRoNkd2QitzZ3E4ZEx5bEpUenBIZ05xeHM3QU9CQkJBQUlIQ0MvQ0JyUEJOVEFVUlFBQ0JKUVg4T2VlelVlTWJTazZuOUF4N1B5QkVMVW5WbFR1WDdrbWZHK25RbFRKMGNpUDBvSGRTbDNVamdBQUNDQlJHZ0lCZW1LYWtJZ2dnZ01DS0JIeEFQM0g0MGNPSzVROXFSbkY3TVJQRnJZaXd2VTllMEpPdWllTzJEUTgvUTF0bzZLc0k3OVVjL0dudjdzTGFFRUFBQVFRS0tsQ0VOLzJDTmczVlFnQUJCRG91NE05RGQ2Rzd6NStIcmhuTE9yNUZOdkJrQWpaeDNEbWRjWENacnBQKyt1YVRPLzFlM1kzZTdXNXM0OGxzZVJ3QkJCQkFBSUhNQzNUNlRUL3pBQlFRQVFRUUtMRkFFcHBjK05YRUlPbEdMN0ZITnFydVhNV09sSVJCcUJuZXU3SjA0OEJNTjdiUkZTdzJnZ0FDQ0NDQVFDY0ZDT2lkMUdYZENDQ0FRTFlGZkdpS0t2RzlMbzRiU29UV284NHc5MnkzV1Y1TFJ3OTZYbHVPY2lPQUFBSUlkRldBZ041VmJqYUdBQUlJWkVyQUIvUkdaZjEzMVZ0N0pMbmNHaFBGWmFXRk5OUzlTS0dXSHZTczdGaVVBd0VFRUVBZzB3SUU5RXczRDRWREFBRUVPaXBnb1NrOGZ1alFTUmU0Yi9vMHFCc2QzU0lyUndBQkJCQkFBQUVFRUxpZ0FBSDlnalE4Z0FBQ0NCUmV3TUs0bnloT1o1L2ZuZlNnazg4TDMrcFVFQUVFRUVBQUFRUXlLMEJBejJ6VFVEQUVFRUNnZXdLaEMwY0NtOFJkMDRkM2I2dHNLU01DM1J4S0gycm9QdnRZUmhxZVlpQ0FBQUlJWkUrQU44bnN0UWtsUWdBQkJMb3A0Q2VGbTJrMERpcWVuOVNHN1gyQmJ2UnV0a0R2dHRYOERCRFdiZlNFem5qditBU0JZUmpPQnJPejMyOVdtZjJzZDIzUGxoRkFBQUVFTWlwQVFNOW93MUFzQkJCQW9Fc0NQcFNkZU9TUkk0cmxEeWxBMldZN0h0UzZWRGMyc3h5QktQN1BObnBDTGQvZndiWS9IMGIrMk05ZlQ5VHIzOVoyN0FmMnMrVzBEODlCQUFFRUVDaVZBQUc5Vk0xTlpSRkFBSUVsQmZ4NTZDNTA5L256MERVR2VjbG5jV2ZSQkJxcVVHVnlkUHptd01WdmJaN2RZRzNmMXVDc0ZWbzRYNmRMK2QxVk9ULzcycUloVWg4RUVFQUFBUVRhS1VCQWI2Y202MElBQVFUeUtlQzd6U003RDkwdlNUZDZQcXRDcVZjb1lDRTltcWlOZjFBQitoMGFRZUVQMXVpK2RvWDBtU2dNKzdYdUF4dUM4THFqUjQrZTFycHRHKzFhdjFiRmdnQUNDQ0NBUUhFRXFzV3BDalZCQUFFRUVGaWxRTkpqWG9sSFhDTnNhS3h6R3FBNGlMdEswSnk5ek5xL01sbXZ2Mi9INEdBUVJ1RjdOWWpDQXJSOXJYb2ZzSjd6Skp5N203WHVWelRYWjU4N1p2WEZnZ0FDQ0NDQUFBSkxDS3o2alhlSmRYRVhBZ2dnZ0VBK0JYeEFiMVRXZnpjTXd0SGtjbXRNRkpmUHBseFZxYTM5TFl6N2tPNWlaejNwNmVlRDFmWjBOM3ZPQ2VlcmFoRmVoQUFDQ0NCUVdvSDBEYmkwQUZRY0FRUVFRTUNIOGZENG9VTW5YZUFPK3ZIdXVvRkxxUVRhRnRLMW92TUsrSDBLK3ZTY2wyb1hvcklJSUlBQUF1MFFJS0MzUTVGMUlJQUFBdmtXc0hEbXp6MVd4K25kU1E4NitUemZUYnFxMHJjanBNOUVVYVJ6emdubnEyb0JYb1FBQWdnZ1VIb0JBbnJwZHdFQUVFQUFnWG1CMExrUlA0bjcvQkRuK1FlNVZRYUJWWWQwdlhCR3M3VmJ6L2xmY2M1NUdYWVY2b2dBQWdnZzBBa0JBbm9uVkZrbkFnZ2drRDhCZjY3eFRLTnhVRVUvcFM5N2Y2QWJQWC90Mkk0U3J6eWtPemVybnZPK29CSC8yV1N0OXM5VUNIOU91NzR6SVZ3N1dvUjFJSUFBQWdpVVJvQ0FYcHFtcHFJSUlJREFSUVY4UUQveHlDTkhGTXUvcVhPSUxaNnZkb0t3aTI2SUIzTWg4R1FoM1I3M1gvcG5KcXhVcWtIc1BqTlJyLytmemRyWktSTjJDVGNXQkJCQUFBRUVFRmlCQUFGOUJWZzhGUUVFRUNpNGdEOFBQUWpkdmMzejBDMkFzWlJYd05yZjk0VGJKZGhhWm5kdkhWMFIrNTV6QytlMTJpODBxUWpuNWQxbnFEa0NDQ0NBd0JvRkNPaHJCT1RsQ0NDQVFJRUVtaE80UnlPQnMyeG0zZWdzSlJkWUtxU0x4RitHVFFNdHdvcUMrNmNKNXlYZlM2ZytBZ2dnZ0VEYkJLcHRXeE1yUWdBQkJCREl1NER2TWE4MEd2ZkZVVGdiaElHOVIxZ1BLZ2R6ODk2eWF5dC9HdEpENjBuZlBqaDRJSWlpZ1RCMkRadFFVUGNkYUs2ZW52TzFPZk5xQkJCQUFBRUUvSWN2R0JCQUFBRUVFREFCSDlEZCtmTVBoK3ZYSFhaaCtGVDFwUHY3NENtOVFMb2ZSRlAxK3BlWDBMQ0RPSnh6dmdRTWR5R0FBQUlJSUxBU0FYcEZWcUxGY3hGQUFJRmlDMWdJQ3ljbUpxWmRxSW5pcks0dUNlM0ZyamExVzRHQVB5ZGR6N2ZSRmRaamJ0OXRWMkZDUVNHd0lJQUFBZ2dnc0ZZQkF2cGFCWGs5QWdnZ1VCd0JDK2dXdW15NXV6bFJYUElUL3lJd0wyQTk1WGI1dFBSNzJycysvd3h1SVlBQUFnZ2dnTUNxQkFqb3EyTGpSUWdnZ0VDeEJWd1FmZFZQRkJmNnljQ0tYVmxxaHdBQ0NDQ0FBQUlJWkVTQWdKNlJocUFZQ0NDQVFFWUVrcUhLamNZM2RmYjVDWlhKM2lmb0ljMUk0MUFNQkJCQUFBRUVFQ2kyQUFHOTJPMUw3UkJBQUlHVkN2aUFQalUrUHFZWFBxVExhRms4NS96aWxTcnlmQVFRUUFBQkJCQkFZQlVDQlBSVm9QRVNCQkJBb09BQ3lYbm9vUnRwbm9kT0QzckJHNXpxSVlBQUFnZ2dnRUEyQkFqbzJXZ0hTb0VBQWdoa1NjQlA0QjRGMFlnL0R6MUo2VmtxSDJWQkFBRUVFRUFBQVFRS0tVQkFMMlN6VWlrRUVFQmdUUUpKajNtamNaOHVnejZyaTJoWmp6ckQzTmRFeW9zUlFBQUJCQkJBQUlFbkZ5Q2dQN2tSejBBQUFRVEtKdUFEK3Jvb2VsQVZmOWlmaDg1RWNXWGJCNmd2QWdnZ2dBQUNDUFJBZ0lEZUEzUTJpUUFDQ0dSY3dIckxxN1ZhN2F4NnovK3JIK0d1cnZTTWw1bmlJWUFBQWdnZ2dBQUN1UmNnb09lK0Nha0FBZ2dnMEJFQlA2UTlicmovb214K1NpRzlxcTBRMGp0Q3pVb1JRQUFCQkJCQUFJRkVnSURPbm9BQUFnZ2dzSlNBNzBVL1BqNCtHcnJnTDhMSXYxM01MdlZFN2tNQUFRUVFRQUFCQkJCb2p3QUJ2VDJPckFVQkJCQW9va0RTWXg0MVB1cml1S0VLOXVtTFh2UWl0alIxUWdBQkJCQkFBSUZNQ0JEUU05RU1GQUlCQkJESXBJRDFva2NUbzQrTUJFSDROMzZ5T09jc3FMTWdnQUFDQ0NDQUFBSUlkRUNBZ040QlZGYUpBQUlJRkVUQWVzdjkrNFF1alA0UjMzVWVocnh2RktSeHFRWUNDQ0NBQUFJSVpFK0FEMXJaYXhOS2hBQUNDR1JKd000N2p5WnF0UU1hM1g2VGV0R2p3SzZOem9JQUFnZ2dnQUFDQ0NEUWRnRUNldHRKV1NFQ0NDQlFPQUgvWHVGQzkwRmZzekNzNkR2bm9oZXVtYWtRQWdnZ2dBQUNDUFJhZ0lEZTZ4Wmcrd2dnZ0VEMkJleTg4M0JxZFB3bXBmTFBxeGM5VkR6blhQVHN0eHNsUkFBQkJCQkFBSUdjQ1JEUWM5WmdGQmNCQkJEb2dZRDFsbHV2ZWVEQytFYS8vVEE1TjkzZjVoOEVFRUFBQVFRUVFBQ0J0Z2dRME52Q3lFb1FRQUNCd2d2NGM5R3RGMTNub0grT2M5RUwzOTVVRUFFRUVFQUFBUVI2SUVCQTd3RTZtMFFBQVFSeUt1RGZNMklYdk50Wm4zb1lWdlV2NTZMbnRERXBOZ0lJSUlBQUFnaGtUNENBbnIwMm9VUUlJSUJBVmdXc0Y3MHlWYTkvV1pkZCswd1k2UzJFNjZKbnRhMG9Gd0lJSUlBQUFnamtVSUNBbnNOR284Z0lJSUJBcndYaUtIcTN3dms1ZXRGNzNSSnNId0VFRUVBQUFRU0tKRUJBTDFKclVoY0VFRUNnOHdJMmUzdDFhblQwbStvKy8wUGZpeDRFWEJlOTgrNXNBUUVFRUVBQUFRUktJRUJBTDBFalUwVUVFRUNnelFLeHJhOXlmdmI5TG80ZjA4bm9mZnJSMzlmbTdiQTZCQkJBQUFFRUVFQ2dWQUlFOUZJMU41VkZBQUVFMmlKZ1lieDY5T2hSQytmdkNTT2RrZTRjQWIwdHRLd0VBUVFRUUFBQkJNb3NRRUF2Yyt0VGR3UVFRR0QxQWpiVVBaaXMxVDZpYkg2dmhycFhOWis3djIvMXErU1ZDQ0NBQUFJSUlJQkF1UVVJNk9WdWYycVBBQUlJckZiQUxxL21MN1BtZ3VnZC9scHJZYUN1ZEM2N3RscFFYb2NBQWdnZ2dBQUNDQkRRMlFjUVFBQUJCRllya0Z4MmJXenMvdytkdit5YXZhY3dZZHhxTlhrZEFnZ2dnQUFDQ0pSZWdJQmUrbDBBQUFRUVFHQk5Bcjd6dkJISGIzZk9uZENhbURCdVRaeThHQUVFRUVBQUFRVEtMRUJBTDNQclUzY0VFRUJnN1FKeHNHOWYzL0h4OGRFd2NQL0JYM2FOQ2VQV3Jzb2FFRUFBQVFRUVFLQ1VBZ1QwVWpZN2xVWUFBUVRhS0RBeTRvZTFUNHpWUDZUTHJ0MlZUQmpuR09yZVJtSldoUUFDQ0NDQUFBTGxFQ0NnbDZPZHFTVUNDQ0RRU1lGMHdqaGRiUzM0dHhycXJxdXZoWDRDdVU1dWxIVWpnQUFDQ0NDQUFBSkZFeUNnRjYxRnFROENDQ0RRR3dIck1hOU8xZXQzaFdGNG94L3F6b1J4dldrSnRvb0FBZ2dnZ0FBQ3VSVWdvT2UyNlNnNEFnZ2drRG1CMkVxMDNnWC9UcWVoZjB0QnZVOFhYV09vZSthYWlRSWhnQUFDQ0NDQVFGWUZDT2haYlJuS2hRQUNDT1JQd0FKNnRWYXJuUTFDOTBaZi9EQ3c5eGsvMDN2K3FrT0pFVUFBQVFRUVFBQ0I3Z29RMEx2cnpkWVFRQUNCb2d2NG9lNlRvK00zdThEOW9ZYTYyL3NNdmVoRmIzWHFod0FDQ0NDQUFBSnRFU0NndDRXUmxTQ0FBQUlJdEFqNG9lN3JHdTR0bXRYOVFZYTZ0OGh3RXdFRUVFQUFBUVFRdUlnQUFmMGlPRHlFQUFJSUlMQXFBVC9VZlh4OC9Fem9namY0OGUxaFVOR2FHT3ErS2s1ZWhBQUNDQ0NBQUFKbEVTQ2dsNldscVNjQ0NDRFFYUUUvMUgyaVhyL05oY0VITmRROTFPWVo2dDdkTm1CckNDQ0FBQUlJSUpBekFRSjZ6aHFNNGlLQUFBSTVFdkJEM2FkR2ErOElYSHh2TXRUZEVkSnoxSUFVRlFFRUVFQUFBUVM2SzBCQTc2NDNXME1BQVFUS0pPQ0h1cXZDczJIa1h1ZWNhd1JoV05YUERIVXYwMTVBWFJGQUFBRUVFRUJnMlFJRTlHVlQ4VVFFRUVBQWdWVUl6QWI3OXZVZE96SitYeGdHYjlWUWQ4VnpCWFVXQkJCQUFBRUVFRUFBZ1NjSUVOQ2ZRTUlkQ0NDQUFBSnRGUmdac1dIdDRjUlkvWGVET1A1Y1dLbFUxWVUrMDladHNESUVFRUFBQVFRUVFLQUFBZ1QwQWpRaVZVQUFBUVF5TG1CRDJ2MzdUVmp0ZTYxQyttTmhFUGJwUG5yU005NXdGQThCQkJCQUFBRUV1aXRBUU8rdU4xdERBQUVFeWlyUThFUGREeDkrVkdlZ3YxYkQzVzJ4ZnprZjNWUHdEd0lJSUlBQUFnZ2cwT3pSQUFJQkJCQkFBSUdPQzR5TTJMRDJxaTY5OW5mT0JlL1grZWgya0poWjNUc096d1lRUUFBQkJCQkFJQzhDOUtEbnBhVW9Kd0lJSUZBTUFUK3NmYkpXdThIRjduWi82VFhPUnk5R3kxSUxCQkJBQUFFRUVGaXpBQUY5ellTc0FBRUVFRUJnQlFJMnBOMHV0YVpMbzhldjBhWFhKalhTbmZQUlZ3RElVeEZBQUFFRUVFQ2d1QUlFOU9LMkxUVkRBQUVFc2lyZ0w3MDJOVDQrcHV1ai95cm5vMmUxbVNnWEFnZ2dnQUFDQ0hSYmdJRGViWEcyaHdBQ0NDQVFCSFkrdXE2UFBqRTYvcmN1Y08vMjU2TnpmWFQyREFRUVFBQUJCQkFvdVFBQnZlUTdBTlZIQUFFRWVpYVFYQjg5bUJ5ci8yWVFOLzVYOC9ybzUzdFdIamFNQUFJSUlJQUFBZ2owV0lDQTN1TUdZUE1JSUlCQWlRWHNmUFNLMWYrY0MxK3RjOUxITkdsY3YzNWtabmREWVVFQUFRUVFRQUNCMGdrUTBFdlg1RlFZQVFRUXlKU0F2ejc2ZEwxdWs4WDlmT0NjaFhPYlJDN09WQ2twREFJSUlJQUFBZ2dnMEFVQkFub1hrTmtFQWdnZ2dNQkZCSnJubyt2U2ExOEpnL0FOT2g5ZFU3enJQeFlFRUVBQUFRUVFRS0JrQWdUMGtqVTQxVVVBQVFReUtXQWhYVDNuRTdYYXgzUjk5TjhMSzFGRkNkM3VZMEVBQVFRUVFBQUJCRW9qUUVBdlRWTlRVUVFRUUNEekFuNVl1M3JTLzQzT1I3OHRpaUs3UGpvaFBmUE5SZ0VSUUFBQkJCQkFvRjBDQlBSMlNiSWVCQkJBQUlHMUNsaEE5NVBHelFUaHp6a1hIOWFrY1gwYTdNNmtjV3VWNWZVSUlJQUFBZ2dna0FzQkFub3Vtb2xDSW9BQUFxVVI4SlBHbmFyVnBxSTQrS2VhTk81Y0VQcEo0eHFsRWFDaUNDQ0FBQUlJSUZCYUFRSjZhWnVlaWlPQUFBSVpGV2hPR25lc1hyL2ZCZUV2cUJmZENtcnZWMHdjbDlFbW8xZ0lJSUFBQWdnZzBCNEJBbnA3SEZrTEFnZ2dnRUE3QmVabmR2L3ZtalR1WFpyWlBWUThweGU5bmNhc0N3RUVFRUFBQVFReUowQkF6MXlUVUNBRUVFQUFBUzh3TW1Mbm5rZVQ5ZnA3Rk5JL3FabmRxK3BDUDQ4T0FnZ2dnQUFDQ0NCUVZBRUNlbEZibG5vaGdBQUMrUmVZRzlLdW1kMWZHOFR4N1pyWnZWL1ZZbWIzL0xjdE5VQUFBUVFRUUFDQkpRUUk2RXVnY0JjQ0NDQ0FRR1lFNW1aMmIvU3YrOGU2L05xMy9jenVoUFRNTkJBRlFRQUJCQkJBQUlIMkNSRFEyMmZKbWhCQUFBRUVPaVBRQ1BZSDFlT0hEcDBNWS9jenpnV25BcnY4V3NBNTZaM2hacTBJSUlBQUFnZ2cwQ3NCQW5xdjVOa3VBZ2dnZ01EeUJRN29XdWo3OXZWTmpJOC9wRG5kZjBhWFgwdDcxcGs0YnZtS1BCTUJCQkJBQUFFRU1pNUFRTTk0QTFFOEJCQkFBSUdtUUhObTk0bGE3Zll3akY3TjVkZllNeEJBQUFFRUVFQ2dhQUlFOUtLMUtQVkJBQUVFaWl4Z0lUMElxaE5qWTU5UkovcmJtcGRmczk3MHVRbmxpbHg5Nm9ZQUFnZ2dnQUFDeFJZZ29CZTdmYWtkQWdnZ1VFUUJHOVplbWF5Ti8zYmc0dC9WNWRjcSt0a3V5Y2FDQUFJSUlJQUFBZ2prV29DQW51dm1vL0FJSUlCQUtRV3N0OXg2emNPSnNmcHY2QnJwbjFaUGVoL1hTQy9sdmtDbEVVQUFBUVFRS0pRQUFiMVF6VWxsRUVBQWdkSUlXRWozNzJHNlJ2b3Y2dkpydDlvMTBnbnBwV2wvS29vQUFnZ2dnRUFoQlFqb2hXeFdLb1VBQWdpVVFzQVBkYmVhRGxUN2Z0bzVOeEtGWWI5K3RQUFVXUkJBQUFFRUVFQUFnZHdKRU5CejEyUVVHQUVFRUVDZ1JjQkNldlh3NGNPUHIydkUvMERYU1ArT1puZTNhNlFUMGx1UXVJa0FBZ2dnZ0FBQytSQWdvT2VqblNnbEFnZ2dnTUNGQld5Q3VPcjQrUGpFYktYeUN2V2tId3NzcER2SHhIRVhOdU1SQkJCQUFBRUVFTWlnQUFFOWc0MUNrUkJBQUFFRVZpd3dHK3piMTNmeXlKSHZSUzU0dWNMNW1TQ01xcnI0R2lGOXhaUzhBQUVFRUVBQUFRUjZKVUJBNzVVODIwVUFBUVFRYUsrQVhTTmRJZjFZdlg1L0hMdVg2OUxvczBFWVZMVVJHd2JQZ2dBQ0NDQ0FBQUlJWkY2QWdKNzVKcUtBQ0NDQUFBTExGckNRdm5kdi8vSHg4Uys2TVBwcHZjNW1lN2ZycEJQU2w0M0lFeEZBQUFFRUVFQ2dWd0lFOUY3SnMxMEVFRUFBZ2M0SUhEeDQzbnJTcDhiR1B1K2k0RlU2SDkyMll5SGRycDNPZ2dBQ0NDQ0FBQUlJWkZhQWdKN1pwcUZnQ0NDQUFBS3JGbWdPZDU4YXJYOVduZWkvcXBuZGJWWDJua2RJWHpVcUwwUUFBUVFRUUFDQlRnc1EwRHN0elBvUlFBQUJCSG9qWUNGZHM3dFBqdFUvcGN1dnZiRVowcTBzaFBUZXRBaGJSUUFCQkJCQUFJRW5FU0NnUHdrUUR5T0FBQUlJNUZyQVh5ZDlzbGI3U0J5NE40ZFJsTDd2RWRKejNhd1VIZ0VFRUVBQWdXSUtwQjlVaWxrN2FvVUFBZ2dnVUhZQm15VE9RbnBsYXF6K083R0wvMTB6cE52OTlzV0NBQUlJSUlBQUFnaGtSb0NBbnBtbW9DQUlJSUFBQWgwU3NDQnVQZVlXMG44cmpodi9YaUU5blRTT2tONGhkRmFMQUFJSUlJQUFBaXNYSUtDdjNJeFhJSUFBQWdqa1R5QU42ZEZVYmZ3L0tLVC9QejZrTzJlOTY0VDAvTFVuSlVZQUFRUVFRS0NRQWdUMFFqWXJsVUlBQVFRUVdFTEFncmg5VlJUUy85L0F1UnZEU3FXcWU2eDNuWkMrQkJoM0lZQUFBZ2dnZ0VCM0JRam8zZlZtYXdnZ2dBQUN2Uld3SUc2QlBKd1lxNzBsQ2VrYTdrNVBlbTliaGEwamdBQUNDQ0NBZ0JjZ29MTWpJSUFBQWdpVVRjQkN1bDBZdlJuUzQ5OUpldElkUGVsbDJ4T29Md0lJSUlBQUFoa1RJS0JuckVFb0RnSUlJSUJBVndSOEw3cTJwSkJlZjNOenVMdDYwaG51M2hWOU5vSUFBZ2dnZ0FBQ1N3b1EwSmRrNFU0RUVFQUFnUklJdElUMDJsdGM3TjRmVnZ6czd0YkR6am5wSmRnQnFDSUNDQ0NBQUFKWkV5Q2daNjFGS0E4Q0NDQ0FRRGNGNWtMNlpLMTJROHQxMHUxKysySkJBQUVFRUVBQUFRUzZKa0JBN3hvMUcwSUFBUVFReUtoQUdzUVhYeWZkaXBzK2x0R2lVeXdFRUVBQUFRUVFLSklBQWIxSXJVbGRFRUFBQVFSV0s1RE83dTZ2ays1Yy9KdWhMcFRlWEJraGZiV3F2QTRCQkJCQUFBRUVWaVNRZnZoWTBZdDRNZ0lJSUlBQUFnVVVTTTg5cjB5TzFkOGRPL2VtVUNsZDliUXZRbm9CRzV3cUlZQUFBZ2dna0RVQkFucldXb1R5SUlBQUFnajBVaUR0U2E5TTFXb2ZkaTc0MXdycFZoNTd2Mnowc21Cc0d3RUVFRUFBQVFTS0wwQkFMMzRiVTBNRUVFQUFnWlVKcENHOXFvbmpmbDhoL1RWQkV0SXJXZzBoZldXV1BCc0JCQkJBQUFFRVZpQkFRRjhCRms5RkFBRUVFQ2lOZ0lWMEMrTVcwdi9VaGU3bmRkdUd1ZHUxMG1mMW5RVUJCQkJBQUFFRUVHaTdBQUc5N2FTc0VBRUVFRUNnSUFJVzBtZUR2WHY3cDBici84MkYwVS81bjhPd0dqaEhTQzlJSTFNTkJCQkFBQUVFc2lSQVFNOVNhMUFXQkJCQUFJSHNDUnc4ZUQ3WXQ2OXZhbXpzOHk1MjF3U0JPeHRFVVZVRm5jbGVZU2tSQWdnZ2dBQUNDT1JaZ0lDZTU5YWo3QWdnZ0FBQzNSRVlHWm54UGVuajQxK0tYUEJDNTl5a0pvL3IwOFlKNmQxcEFiYUNBQUlJSUlCQUtRUUk2S1ZvWmlxSkFBSUlJTEJtZ1daUCtyRjYvZjVxR1AyRTFuZklRcnJHd1o5Zjg3cFpBUUlJSUlBQUFnZ2dJQUVDT3JzQkFnZ2dnQUFDeXhWbzlxUS9OamIyM1VyL3pBdDBMdnI5VVJUMUU5S1hDOGp6RUVBQUFRUVFRT0JpQWdUMGkrbndHQUlJSUlBQUFvc0ZtajNwUjc5NzlMSCsyTDBvYnNSM1dralgweGp1dnRpS254RkFBQUVFRUVCZ1JRSUU5QlZ4OFdRRUVFQUFBUVFrWUQzcG1qaHVmSHo4ekZTOWZvMXJ4UDhqaktLKzV1enVOdnM3Q3dJSUlJQUFBZ2dnc0dJQkF2cUt5WGdCQWdnZ2dBQUNFckNRYnRkRjEvWFJKK3YxZnh5NzREK0dsWXJON203WFM3Y3ZGZ1FRUUFBQkJCQkFZRVVDQlBRVmNmRmtCQkJBQUFFRUZnZzA5Sk9GOUVDWFlYdTljL0c3MVpOdVA0ZjZJcVFiREFzQ0NDQ0FBQUlJTEZ1QWdMNXNLcDZJQUFJSUlJREFrZ0lXMHUzOU5Kb2NxLzltSExzM2FYWjNDK2hSNElMWkpWL0JuUWdnZ0FBQ0NDQ0F3QklDQlBRbFVMZ0xBUVFRUUFDQkZRcFliN21kZTE2WnF0VStyT0h1UDZmYmpTQUtxODN6MGxlNE9wNk9BQUlJSUlBQUFtVVVJS0NYc2RXcE13SUlJSUJBSndRc29EZHM4amlGOUwrTUkzZU5JdnRKRFhtdmNobTJUbkN6VGdRUVFBQUJCSW9uUUVBdlhwdFNJd1FRUUFDQlhnbzByNVYrZkhUOGk2RnpQKzVjOEYwdXc5YkxCbUhiQ0NDQUFBSUk1RWVBZ0o2ZnRxS2tDQ0NBQUFKNUVXaGVLMzJpWHY5Mm8xcDlub3ZqTC9uTHNDWFhTdWN5YkhscFI4cUpBQUlJSUlCQWx3VUk2RjBHWjNNSUlJQUFBaVVSYUY0ci9jVGh3eWNtYS9XckF4ZC90aG5TdVF4YlNYWUJxb2tBQWdnZ2dNQktCUWpvS3hYaitRZ2dnQUFDQ0N4WElMbFd1cjgyK3NSWS9aVXVkaDlvWG9iTjNuOXQ5bmNXQkJCQUFBRUVFRUJnVG9DQVBrZkJEUVFRUUFBQkJEb2lZSmRhODlkR242elYzcTVycGI4aDhGZGgwMzNPY1JtMmpwQ3pVZ1FRUUFBQkJQSXBRRURQWjd0UmFnUVFRQUNCZkFta3ZlVVZYU3Y5ajF3UXZrTEZQM094R2Q1MUtYWE9WYzlYRzFOYUJCQkFBQUVFMWl4QVFGOHpJU3RBQUFFRUVFQmdXUUxKWmRqMjd1MmZHaHY3dklzYXozZk9mY2RtZU5jRE00dlhvTWVzMTUwRkFRUVFRQUFCQkVva1FFQXZVV05UVlFRUVFBQ0JEQWcwWjNpZkduMzBtK0dtYy9zMHcvc3RDdWw5dW1hNjliTFBhUGo3ckI4Qkh3WGpHU2d0UlVBQUFRUVFRQUNCTGdxRVhkd1dtMElBQVFRUVFBQ0JWR0RmdnI0Z21VUXUyREU4K0FkaEVMN0JIdExROWlCMjdwNjQ3L1RMamg4NmZ0THUwaGZEM1EySEJRRUVFRUFBZ1lJTEVOQUwzc0JVRHdFRUVFQWcwd0kyak4yZm43NTllUGdWbWpUdWVyMHhqMVZuWmo1eDlPalIwM3JNUnJyWlpkbFlFRUFBQVFRUVFBQUJCQkJBQUFFRUVFQ2d3d0lXd3BjNjVXeXArenBjRkZhUEFBSUlJSUFBQXIwVW9BZTlsL3BzR3dFRUVFQUFnWGtCdTE1NnVsaXZPc1BhVXcyK0k0QUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0xSWDRIOEQ3ZHVUUy9ENCt2MEFBQUFBU1VWT1JLNUNZSUk9IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMSJdLCJleHRlbnNpb25zIjpbImhtYWMtc2VjcmV0IiwiY3JlZFByb3RlY3QiLCJjcmVkQmxvYiIsIm1pblBpbkxlbmd0aCJdLCJhYWd1aWQiOiIzZjU5NjcyZjIwYWE0YWZlYjZmNDdlNWU5MTZiNmQ5OCIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImVwIjpmYWxzZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlfSwibWF4TXNnU2l6ZSI6MTAyNCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMSwyXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0IjoxMCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoxMjgsInRyYW5zcG9ydHMiOlsibmZjIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN31dLCJmb3JjZVBJTkNoYW5nZSI6ZmFsc2UsIm1pblBJTkxlbmd0aCI6NCwibWF4Q3JlZEJsb2JMZW5ndGgiOjMyLCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6MX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIzLTA4LTE2IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEwMCwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJBcmN1bHVzIEZJRE8gMi4xIEtleSBDYXJkIFtQNzFdIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyMzA4MTYwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMy0wOC0xNiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxMDB9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjMtMDktMTIifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyIzM2UyNWY0YWMxYTQzMWVhOWJkYTM3ZGJkZDNmZWJlYjFlMGQ4OGFjIl0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjMzZTI1ZjRhYzFhNDMxZWE5YmRhMzdkYmRkM2ZlYmViMWUwZDg4YWMiXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IklERU1JQSBJRC1PTkUgQ2FyZCJ9LCJkZXNjcmlwdGlvbiI6IklERU1JQSBJRC1PTkUgQ2FyZCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjo4MiwicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfSx7Im1ham9yIjoxLCJtaW5vciI6Mn1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQ1V6Q0NBZm1nQXdJQkFnSUpBTDFmL3Z1MlhXdVJNQW9HQ0NxR1NNNDlCQU1DTUlHRU1Rc3dDUVlEVlFRR0V3SlZVekVSTUE4R0ExVUVDQXdJVm1seVoybHVhV0V4RHpBTkJnTlZCQWNNQmxKbGMzUnZiakVQTUEwR0ExVUVDZ3dHU1VSRlRVbEJNU0l3SUFZRFZRUUxEQmxCZFhSb1pXNTBhV05oZEc5eUlFRjBkR1Z6ZEdGMGFXOXVNUnd3R2dZRFZRUUREQk5KUkVWTlNVRWdSa2xFVHlCU2IyOTBJRU5CTUNBWERUSXpNRGt4TkRBMU16Z3dNMW9ZRHpJd05UTXdPVEEyTURVek9EQXpXakNCaERFTE1Ba0dBMVVFQmhNQ1ZWTXhFVEFQQmdOVkJBZ01DRlpwY21kcGJtbGhNUTh3RFFZRFZRUUhEQVpTWlhOMGIyNHhEekFOQmdOVkJBb01Ca2xFUlUxSlFURWlNQ0FHQTFVRUN3d1pRWFYwYUdWdWRHbGpZWFJ2Y2lCQmRIUmxjM1JoZEdsdmJqRWNNQm9HQTFVRUF3d1RTVVJGVFVsQklFWkpSRThnVW05dmRDQkRRVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCSGJUK1Jwa0FvOUVjTCtPZWxDajhoaWhuZkZVS0RPcE5zc2RySHdzZStxdUZZVjBITDlqd1FYTzM1NW1rSTRkaHAzVHNuYk1KMEFKOWpyNm83Qm9DRW1qVURCT01CMEdBMVVkRGdRV0JCUW5zNmFoeHMvL2dwYmE3WERaQk5zZ0RHMGxFREFmQmdOVkhTTUVHREFXZ0JRbnM2YWh4cy8vZ3BiYTdYRFpCTnNnREcwbEVEQU1CZ05WSFJNRUJUQURBUUgvTUFvR0NDcUdTTTQ5QkFNQ0EwZ0FNRVVDSVFEYlZNUXFXem56YjBlRVlXUWFRSW4wZGxZRG9XUUFiVUk0NmI5anNDMXVGZ0lnZCt4RTBydWZXLzduaktjMXFrc2kzVWhNb2pjRlpDKzNjTFRSaFdnS3hqVT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZ0NBSUFBQUQ4R08yakFBQUFDWEJJV1hNQUFDNGpBQUF1SXdGNHBUOTJBQUFLVDJsRFExQlFhRzkwYjNOb2IzQWdTVU5ESUhCeWIyWnBiR1VBQUhqYW5WTm5WRlBwRmozMzN2UkNTNGlBbEV0dlVoVUlJRkpDaTRBVWtTWXFJUWtRU29naG9ka1ZVY0VSUlVVRUc4aWdpQU9Pam9DTUZWRXNESW9LMkFma0lhS09nNk9JaXNyNzRYdWphOWE4OStiTi9yWFhQdWVzODUyenp3ZkFDQXlXU0ROUk5ZQU1xVUllRWVDRHg4VEc0ZVF1UUlFS0pIQUFFQWl6WkNGei9TTUJBUGgrUER3cklzQUh2Z0FCZU5NTENBREFUWnZBTUJ5SC93L3FRcGxjQVlDRUFjQjBrVGhMQ0lBVUFFQjZqa0ttQUVCR0FZQ2RtQ1pUQUtBRUFHRExZMkxqQUZBdEFHQW5mK2JUQUlDZCtKbDdBUUJibENFVkFhQ1JBQ0FUWlloRUFHZzdBS3pQVm9wRkFGZ3dBQlJtUzhRNUFOZ3RBREJKVjJaSUFMQzNBTURPRUF1eUFBZ01BREJSaUlVcEFBUjdBR0RJSXlONEFJU1pBQlJHOGxjODhTdXVFT2NxQUFCNG1iSTh1U1E1UllGYkNDMXhCMWRYTGg0b3pra1hLeFEyWVFKaG1rQXV3bm1aR1RLQk5BL2c4OHdBQUtDUkZSSGdnL1A5ZU00T3JzN09ObzYyRGw4dDZyOEcveUppWXVQKzVjK3JjRUFBQU9GMGZ0SCtMQyt6R29BN0JvQnQvcUlsN2dSb1hndWdkZmVMWnJJUFFMVUFvT25hVi9OdytINDhQRVdoa0xuWjJlWGs1TmhLeEVKYlljcFhmZjVud2wvQVYvMXMrWDQ4L1BmMTRMN2lKSUV5WFlGSEJQamd3c3owVEtVY3o1SUpoR0xjNW85SC9MY0wvL3dkMHlMRVNXSzVXQ29VNDFFU2NZNUVtb3p6TXFVaWlVS1NLY1VsMHY5azR0OHMrd00rM3pVQXNHbytBWHVSTGFoZFl3UDJTeWNRV0hUQTR2Y0FBUEs3YjhIVUtBZ0RnR2lENGM5My8rOC8vVWVnSlFDQVprbVNjUUFBWGtRa0xsVEtzei9IQ0FBQVJLQ0JLckJCRy9UQkdDekFCaHpCQmR6QkMveGdOb1JDSk1UQ1FoQkNDbVNBSEhKZ0theUNRaWlHemJBZEttQXYxRUFkTk1CUmFJYVRjQTR1d2xXNERqMXdEL3BoQ0o3QktMeUJDUVJCeUFnVFlTSGFpQUZpaWxnampnZ1htWVg0SWNGSUJCS0xKQ0RKaUJSUklrdVJOVWd4VW9wVUlGVklIZkk5Y2dJNWgxeEd1cEU3eUFBeWd2eUd2RWN4bElHeVVUM1VETFZEdWFnM0dvUkdvZ3ZRWkhReG1vOFdvSnZRY3JRYVBZdzJvZWZRcTJnUDJvOCtROGN3d09nWUJ6UEViREF1eHNOQ3NUZ3NDWk5qeTdFaXJBeXJ4aHF3VnF3RHU0bjFZOCt4ZHdRU2dVWEFDVFlFZDBJZ1lSNUJTRmhNV0U3WVNLZ2dIQ1EwRWRvSk53a0RoRkhDSnlLVHFFdTBKcm9SK2NRWVlqSXhoMWhJTENQV0VvOFRMeEI3aUVQRU55UVNpVU15SjdtUUFrbXhwRlRTRXRKRzBtNVNJK2tzcVpzMFNCb2prOG5hWkd1eUJ6bVVMQ0FyeUlYa25lVEQ1RFBrRytRaDhsc0tuV0pBY2FUNFUrSW9Vc3BxU2hubEVPVTA1UVpsbURKQlZhT2FVdDJvb1ZRUk5ZOWFRcTJodGxLdlVZZW9FelIxbWpuTmd4WkpTNld0b3BYVEdtZ1hhUGRwcitoMHVoSGRsUjVPbDlCWDBzdnBSK2lYNkFQMGR3d05oaFdEeDRobktCbWJHQWNZWnhsM0dLK1lUS1laMDRzWngxUXdOekhybU9lWkQ1bHZWVmdxdGlwOEZaSEtDcFZLbFNhVkd5b3ZWS21xcHFyZXFndFY4MVhMVkkrcFhsTjlya1pWTTFQanFRblVscXRWcXAxUTYxTWJVMmVwTzZpSHFtZW9iMVEvcEg1Wi9Za0dXY05NdzA5RHBGR2dzVi9qdk1ZZ0MyTVpzM2dzSVdzTnE0WjFnVFhFSnJITjJYeDJLcnVZL1IyN2l6MnFxYUU1UXpOS00xZXpVdk9VWmo4SDQ1aHgrSngwVGdubktLZVg4MzZLM2hUdktlSXBHNlkwVExreFpWeHJxcGFYbGxpclNLdFJxMGZydlRhdTdhZWRwcjFGdTFuN2dRNUJ4MG9uWENkSFo0L09CWjNuVTlsVDNhY0tweFpOUFRyMXJpNnFhNlVib2J0RWQ3OXVwKzZZbnI1ZWdKNU1iNmZlZWIzbitoeDlMLzFVL1czNnAvVkhERmdHc3d3a0J0c016aGc4eFRWeGJ6d2RMOGZiOFZGRFhjTkFRNlZobFdHWDRZU1J1ZEU4bzlWR2pVWVBqR25HWE9NazQyM0diY2FqSmdZbUlTWkxUZXBON3BwU1RibW1LYVk3VER0TXg4M016YUxOMXBrMW16MHgxekxubStlYjE1dmZ0MkJhZUZvc3RxaTJ1R1ZKc3VSYXBsbnV0cnh1aFZvNVdhVllWVnBkczBhdG5hMGwxcnV0dTZjUnA3bE9rMDZybnRabnc3RHh0c20ycWJjWnNPWFlCdHV1dG0yMmZXRm5ZaGRudDhXdXcrNlR2Wk45dW4yTi9UMEhEWWZaRHFzZFdoMStjN1J5RkRwV090NmF6cHp1UDMzRjlKYnBMMmRZenhEUDJEUGp0aFBMS2NScG5WT2IwMGRuRjJlNWM0UHppSXVKUzRMTExwYytMcHNieHQzSXZlUktkUFZ4WGVGNjB2V2RtN09id3UybzI2L3VOdTVwN29mY244dzBueW1lV1ROejBNUElRK0JSNWRFL0M1K1ZNR3Zmckg1UFEwK0JaN1huSXk5akw1RlhyZGV3dDZWM3F2ZGg3eGMrOWo1eW4rTSs0enczM2pMZVdWL01OOEMzeUxmTFQ4TnZubCtGMzBOL0kvOWsvM3IvMFFDbmdDVUJad09KZ1VHQld3TDcrSHA4SWIrT1B6cmJaZmF5MmUxQmpLQzVRUlZCajRLdGd1WEJyU0ZveU95UXJTSDM1NWpPa2M1cERvVlFmdWpXMEFkaDVtR0x3MzRNSjRXSGhWZUdQNDV3aUZnYTBUR1hOWGZSM0VOejMwVDZSSlpFM3B0bk1VODVyeTFLTlNvK3FpNXFQTm8zdWpTNlA4WXVabG5NMVZpZFdFbHNTeHc1TGlxdU5tNXN2dC84N2ZPSDRwM2lDK043RjVndnlGMXdlYUhPd3ZTRnB4YXBMaElzT3BaQVRJaE9PSlR3UVJBcXFCYU1KZklUZHlXT0NubkNIY0puSWkvUk50R0kyRU5jS2g1TzhrZ3FUWHFTN0pHOE5Ya2t4VE9sTE9XNWhDZXBrTHhNRFV6ZG16cWVGcHAySUcweVBUcTlNWU9Ta1pCeFFxb2hUWk8yWitwbjVtWjJ5NnhsaGJMK3hXNkx0eThlbFFmSmE3T1FyQVZaTFFxMlFxYm9WRm9vMXlvSHNtZGxWMmEvelluS09aYXJuaXZON2N5enl0dVFONXp2bi8vdEVzSVM0WksycFlaTFZ5MGRXT2E5ckdvNXNqeHhlZHNLNHhVRks0WldCcXc4dUlxMkttM1ZUNnZ0VjVldWZyMG1lazFyZ1Y3QnlvTEJ0UUZyNnd0VkN1V0ZmZXZjMSsxZFQxZ3ZXZCsxWWZxR25ScytGWW1LcmhUYkY1Y1ZmOWdvM0hqbEc0ZHZ5citaM0pTMHFhdkV1V1RQWnRKbTZlYmVMWjViRHBhcWwrYVhEbTROMmRxMERkOVd0TzMxOWtYYkw1Zk5LTnU3ZzdaRHVhTy9QTGk4WmFmSnpzMDdQMVNrVlBSVStsUTI3dExkdFdIWCtHN1I3aHQ3dlBZMDdOWGJXN3ozL1Q3SnZ0dFZBVlZOMVdiVlpmdEorN1AzUDY2SnF1bjRsdnR0WGExT2JYSHR4d1BTQS8wSEl3NjIxN25VMVIzU1BWUlNqOVlyNjBjT3h4KysvcDN2ZHkwTk5nMVZqWnpHNGlOd1JIbms2ZmNKMy9jZURUcmFkb3g3ck9FSDB4OTJIV2NkTDJwQ212S2FScHRUbXZ0YllsdTZUOHcrMGRicTNucjhSOXNmRDV3MFBGbDVTdk5VeVduYTZZTFRrMmZ5ejR5ZGxaMTlmaTc1M0dEYm9yWjc1MlBPMzJvUGIrKzZFSFRoMGtYL2krYzd2RHZPWFBLNGRQS3kyK1VUVjdoWG1xODZYMjNxZE9vOC9wUFRUOGU3bkx1YXJybGNhN251ZXIyMWUyYjM2UnVlTjg3ZDlMMTU4UmIvMXRXZU9UM2R2Zk42Yi9mRjkvWGZGdDErY2lmOXpzdTcyWGNuN3EyOFQ3eGY5RUR0UWRsRDNZZlZQMXYrM05qdjNIOXF3SGVnODlIY1IvY0doWVBQL3BIMWp3OURCWStaajh1R0RZYnJuamcrT1RuaVAzTDk2ZnluUTg5a3p5YWVGLzZpL3N1dUZ4WXZmdmpWNjlmTzBaalJvWmZ5bDVPL2JYeWwvZXJBNnhtdjI4YkN4aDYreVhnek1WNzBWdnZ0d1hmY2R4M3ZvOThQVCtSOElIOG8vMmo1c2ZWVDBLZjdreG1Uay84RUE1anovR016TGRzQUFBQWdZMGhTVFFBQWVpVUFBSUNEQUFENS93QUFnT2tBQUhVd0FBRHFZQUFBT3BnQUFCZHZrbC9GUmdBQUF0aEpSRUZVZU5yc2x0OUxrMUVZeDcvdk50ZTB2WE9rN3lTN3F5V0JZdm5qSWt0R1UwdkRDd2t0VjRLWHB2M3dCLzRCQmlJYS9RQzF3amtWVXhOc1V1dXV6ZDFrNmlCTEN4SUZ6Y0RYT1Rad1k4cjJzcjFycDR1WFp1b2dncnlKZlM4ZWVMNmM1M3c0NStFNUhJb1Fnb09VQ0Flc0dDQUdpQUVBeVg2TFpkbjE5WFdHWWRScTlUOGdrTjFxYTIwVkRsVlpjWlVRWXB1WktTMHRIVGNhOXl3ejZIdXJxNnMvenM2U1Aya1h3R0kyQXpqS3FIUTYzZnQzazRTUXBvWUdBTVdGUlh2S0xtb0xBQXdPRFB3ZG9MZEhEMkJrYU9oMzg0M0o1SEs1OXBUVjFkd0U4R3A4ZlArT1M0dEw1cmZtSDZHUWtPNzBvTHV6YzJqd3VTb3AyZEJyT0N5bms1S085UFgzWjJaa01Da3BxeXZmR0lZQmNMKzl3MnFkS0NvcUNnUUNBSGllRjJvZlAzeGtNcjFXMElyYXVscHRRWUhQN3dORjdlMkJObDhESU8zNENRQU5kK3U3dTdvQVNFQUJxS3VwSllSVTZhNERvR1h4cWFvVXBad1dBOWFKQ1VKSTRRVXRnRlBxa3duU1F3RDY5UHJvVnhRTUJ0dmIyaWlLZXREUndmTjhLQlRpT083Wms2Y0Erbm9OTE1zQ3lNbzh6Zm45SE1mbG5Na0NzTFM0T0QwMURVQjM5Um9oeE9sMHloTVM0aWlSM1c2UGJMc3pCM0Z4Y2JSQ1FRaFJKQ1pLSkJLeFdDeVR5ZVJ5R29CVUt2MHkveG1BVGxjcGk0K1h5V1FhalFhQXorZWJtcHdFVUY1UkRrQ2xVaFZxQzNnU25wK2JpejRIbk44UHdPLzNSNXhBZ012TnprNW1ra1dVQ01EcTZuZkJkemcyQkRDdFVBQndPbDIvZklkQWlnNElCb09SS0lqbmVRVk5iM20zaWkrWGlFSHArd3pwR2VsdXQvdWwwUWdnRUFpVVhTbTdkZWYydlphV3RMUzBoWVd2SCtZKzVaL055OG5OamY1VVNDU1NTSXc0NFhEWTRkaFFLcFhEdzhOaWlxcHZiQndkZVZGMW93b0F1N2FXbW5yTTBLUGYzdDYrVkZMYzFOeDhQdS9jNk5pWVNDU0tQc2tldDJkNWVkbmo4VVFjcjlkclg3ZTczWnRDeXJKclZxczFIQTRUUXBaWFZyeGVyK0M3TjkwV2k4Vm1zKzBmQ3lyMnE0Z0JZb0QvQVBCekFJNlZOcUdRUFVxbkFBQUFBRWxGVGtTdVFtQ0MifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMy0xMC0xOSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjo4MiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJJREVNSUEgSUQtT05FIENhcmQiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlUyRjEwMDAyMDIzMTAxOTAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIzLTEwLTE5IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjgyfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIzLTEyLTA4In0seyJhYWd1aWQiOiI0MmI0ZmI0YS0yODY2LTQzYjItOWJmNy02YzY2NjljMmU1ZDMiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjQyYjRmYjRhLTI4NjYtNDNiMi05YmY3LTZjNjY2OWMyZTVkMyIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJHb29nbGUgVGl0YW4gU2VjdXJpdHkgS2V5IHYyIn0sImRlc2NyaXB0aW9uIjoiR29vZ2xlIFRpdGFuIFNlY3VyaXR5IEtleSB2MiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyIsImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MTAsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6MCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjAsImJsb2NrU2xvd2Rvd24iOjB9fV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNJakNDQWNpZ0F3SUJBZ0lCQWpBS0JnZ3Foa2pPUFFRREFqQmtNUXN3Q1FZRFZRUUdFd0pWVXpFUE1BMEdBMVVFQ2d3R1IyOXZaMnhsTVNJd0lBWURWUVFMREJsQmRYUm9aVzUwYVdOaGRHOXlJRUYwZEdWemRHRjBhVzl1TVNBd0hnWURWUVFEREJkVWFYUmhiaUJUWldOMWNtbDBlU0JMWlhrZ1VtOXZkREFnRncweU1URXlNREV4TlRJMk16RmFHQTh5TVRJeE1USXdNakUxTWpZek1Wb3daekVMTUFrR0ExVUVCaE1DVlZNeER6QU5CZ05WQkFvTUJrZHZiMmRzWlRFaU1DQUdBMVVFQ3d3WlFYVjBhR1Z1ZEdsallYUnZjaUJCZEhSbGMzUmhkR2x2YmpFak1DRUdBMVVFQXd3YVZHbDBZVzRnVTJWamRYSnBkSGtnUzJWNUlGTnBaMjVwYm1jd1dUQVRCZ2NxaGtqT1BRSUJCZ2dxaGtqT1BRTUJCd05DQUFSR1NYLzBXbW9TdFlmaG1selNQQjRTQVJobVRCcFBpMG8zeVl5Z1M0c21uLzRPRmRHTkpkc1B4a3ViNjJwT2xXZTBJNmNKU2g5VzNFQUhBMlpQTytTK28yWXdaREFPQmdOVkhROEJBZjhFQkFNQ0FRWXdFZ1lEVlIwVEFRSC9CQWd3QmdFQi93SUJBREFkQmdOVkhRNEVGZ1FVUlRxUVlPc1BKODk3WDQwdmF2K1hvVytTNnNnd0h3WURWUjBqQkJnd0ZvQVUyZDZKckZDb0VaQWUvTFVwSU15Ymx0RHNNaDB3Q2dZSUtvWkl6ajBFQXdJRFNBQXdSUUlnU3IzTjE0SGR0Q2ZqN1FaMFI3a1dnNkkzMTdRRU5iOHErZmJOa282bks0b0NJUUQ1SmgxNGdyRGM2RjdnSGliOVFUdjhzVXM2dzhnRjFKWUtNSytMRE9ZUFlnPT0iLCJNSUlDTWpDQ0FkbWdBd0lCQWdJQkFUQUtCZ2dxaGtqT1BRUURBakJrTVFzd0NRWURWUVFHRXdKVlV6RVBNQTBHQTFVRUNnd0dSMjl2WjJ4bE1TSXdJQVlEVlFRTERCbEJkWFJvWlc1MGFXTmhkRzl5SUVGMGRHVnpkR0YwYVc5dU1TQXdIZ1lEVlFRRERCZFVhWFJoYmlCVFpXTjFjbWwwZVNCTFpYa2dVbTl2ZERBZ0Z3MHlNVEV5TURFeE5USXpOVEZhR0E4eU1USXhNVEl3TWpFMU1qTTFNVm93WkRFTE1Ba0dBMVVFQmhNQ1ZWTXhEekFOQmdOVkJBb01Ca2R2YjJkc1pURWlNQ0FHQTFVRUN3d1pRWFYwYUdWdWRHbGpZWFJ2Y2lCQmRIUmxjM1JoZEdsdmJqRWdNQjRHQTFVRUF3d1hWR2wwWVc0Z1UyVmpkWEpwZEhrZ1MyVjVJRkp2YjNRd1dUQVRCZ2NxaGtqT1BRSUJCZ2dxaGtqT1BRTUJCd05DQUFScW1OV3pjRE5INjNvOFR6b2RCMmprOWI0OVZQc2ZJdlhwZGhhV3hmTGF5bzRMQmJEclh5eEYzSlIxUDZXNlpzcVdDRVlyWDBvWUl4QW9nM2hDRTR5ZG8zb3dlREFPQmdOVkhROEJBZjhFQkFNQ0FRWXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QWRCZ05WSFE0RUZnUVUyZDZKckZDb0VaQWUvTFVwSU15Ymx0RHNNaDB3SHdZRFZSMGpCQmd3Rm9BVTJkNkpyRkNvRVpBZS9MVXBJTXlibHREc01oMHdGUVlMS3dZQkJBR0M1UndDQVFFRUJnUUVBd0lBQURBS0JnZ3Foa2pPUFFRREFnTkhBREJFQWlBTklRNDgvbk1wMktmWU5pb3ZjeXhXWEpMaXVsNFN2K3pjUkplenJkL1dXQUlnVnVjUTUzMWZxelk3T0RvSytkSUR5a1J1ZHZsVy95QnF6YS9BZFMwU3E2UT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBREFBQUFBd0NBWUFBQUJYQXZtSEFBQUQxRWxFUVZSNEFleVhVNWdjVFJTRzYyTDkyN2IvYUpMcG50MjQxekdtZDJQYnhsMXMyOVlvdG0zYmRxWTNuTjVvVWFrVHE0M2xlWjV2MlhpL3FvTWFsQmtpTzg0eFRORDFxTkF3YnlUZGtzaEJ0TTRiWlR0RnZwOTdUZHU0U0hvNlVWdTRGdTVKYzNBQTRhS28wUVR1TmhGV0tJNW9QRHpEZEhBQ3pjQ0tBb2crZ2gyekZqSWMvQ1lUK2lONTJUSWliSVFneFc0emxrOE5TaGVxN1BOdHh3YnJrdTVwNVkyZ3U4UERUZFFETHNwV1VoLzRLSHF3cWZDZ0NQcVlsNkcvTlhMbDB6LzhqU2lLMVFoeis3VVp3SmtLbnhCai9kY2JhZk1wQkU1NlBzUXF2cStUd04rZUw0b0RyalVNSG9LTHBGY3BoSitzNU9YWG1MQmZ5UUo1RElHSGRxbGttbDZQcGlPUnlvQ2pCNEUvcEJzOFhvZjgrRUhmbnVDS1dWTmt3RitEVk5QOFRvYnhRM3BGOHFvQU5tbTFQMzdvL0FnbnhPY1JnYmY1cnNkUU9WRjZpNlRWQWN2QUFPangwa0I4cC9IZlFpWXFwamQyU0o4dkNYZ1N3TDh1dnVjUDJCdE52UTYvREtYSFNGNGRVQkdBMzZjSGt6N0RDV1V0QUkrNWFCdVZQZzJzOGg4T3NFSjZORDhFVXVvb1NxOUJJTGNCcUxqODJpS0ZFZEdUeDNvcXZBZS9US2lBcjBrWmVMelNuMHBqQTZCelFqdUFwVVFLL2NOMFlDQkp0UUVFa2ZZR2NKWTFBQ2tVbEo0TmNES0sySktlRGV5U05MRGF2MkU2TUhCSllCTDdqeGVENTFjRkpmZWVsMitwQ2dPVDVRcDZ2T1FjNk1XdkVqSlFVd2orOUlyUGNBVlBES2FjTExiT1l2OUZCa1ZrVDc2dDVBNzBTaHd1Y0pnTC92Rjk4Q3VXL0l5THVNb0MvRE01Mk9uR0dmQnRreklRMmNOWFVldzRzZWtGK01QVkFiamZncndBL1k1b1IxeWszdkRoUFJMTHlxa0JwaC8vTFlJUVM2UHJLei9DZFdjekFDdWthNkV6N0QvcUJjOTA4WDVJNEk1SjVuL1B4RTFTbndtQ05pNzkva2FzdXlSQVN1a1k3WTdYNWJOc1JFL2ZQRG1yVDFLc0taSUt5bUd2QzRBeWRZcHlscytwYWVWNzhJdGt0cy9iVEJjc2I1QVNzRjBLVER5Z1hQYk96T1JhaXFaMFBoY2JHemF4NjVId1BsNlovVCt4cy95SE8rMWhCQ3dKQU9YTHp0Rk90amZjSy9oY2QveWZsSU50U3E3Yjl1SSsyL1RHbUJsd1ZQSUlMYkQ2d2dFdmdoZW8xRzJpZlVUclFBQU1Cb1d1cDJkVndZV0dMUmNwWGo0V3FRbXJrNTBNTHpCTEJjYU9KSVBxN3BzR2V2aTZxMjl2NnhnL3loWG5NZE9FYldvN0hONzMzSXU4OTVEVThRTVdUU1pnK3BwcGdwNVY3WEhSd1Z0ZndPc1RKSTliUXNjeHgwVGNZRmc0cEhlUXdXVWhMemhrR0RnVXVvdGxrWkVCSzJOMXNUVkpnWi9URWY0QmVXWi95N3h5bnlLekFnWVg3YkJYSkVXK1RIcG1DT3FVMVJIWDBUcXI4cGNvTFFNT2RtQUdjaGQ2L3ZQZFNYb25QV0RDUHhtd1FBRGliSEMvWWhpQVVRQUEwUzBLV1NWR0EwNEFBQUFBU1VWT1JLNUNZSUk9Iiwic3VwcG9ydGVkRXh0ZW5zaW9ucyI6W3siaWQiOiJobWFjLXNlY3JldCIsImZhaWxfaWZfdW5rbm93biI6ZmFsc2V9LHsiaWQiOiJjcmVkUHJvdGVjdCIsImZhaWxfaWZfdW5rbm93biI6ZmFsc2V9XSwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiRklET18yXzAiLCJVMkZfVjIiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6IjQyYjRmYjRhMjg2NjQzYjI5YmY3NmM2NjY5YzJlNWQzIiwib3B0aW9ucyI6eyJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZX0sIm1heE1zZ1NpemUiOjIyMDAsInBpblV2QXV0aFByb3RvY29scyI6WzFdfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjMtMDYtMTIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJHb29nbGUgVGl0YW4gU2VjdXJpdHkgS2V5IHYyIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyMzA2MTIwMDIiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMy0wNi0xMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIzLTA5LTAzIn0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiZjI4NDBlMzExYTk1ZTVlZmIwZGMwY2Y2OWIyMzE2YWQ5Yjk1NWFhMiIsIjcxOThiMTBkNDEzOTYyZjJjOTFjZjgzNmM5NTY4YmNiNzI1N2RmYmYiLCJhYmE0NzA2MjNjZjg4OTQyNTMwNzI0NmI1ODJiMWNhMTlkMjA4OGMzIiwiNWUyNGYwZWIzNDlhNzA3YjNhYzRkZTUzNmI5MDVlNTlmNWJjYjg0NSJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyJmMjg0MGUzMTFhOTVlNWVmYjBkYzBjZjY5YjIzMTZhZDliOTU1YWEyIiwiNzE5OGIxMGQ0MTM5NjJmMmM5MWNmODM2Yzk1NjhiY2I3MjU3ZGZiZiIsImFiYTQ3MDYyM2NmODg5NDI1MzA3MjQ2YjU4MmIxY2ExOWQyMDg4YzMiLCI1ZTI0ZjBlYjM0OWE3MDdiM2FjNGRlNTM2YjkwNWU1OWY1YmNiODQ1Il0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IDUgRklQUyBTZXJpZXMifSwiZGVzY3JpcHRpb24iOiJZdWJpS2V5IDUgRklQUyBTZXJpZXMiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI4NzA3LCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50IiwicmVtb3RlX2hhbmRsZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURIakNDQWdhZ0F3SUJBZ0lFRzBCVDl6QU5CZ2txaGtpRzl3MEJBUXNGQURBdU1Td3dLZ1lEVlFRREV5TlpkV0pwWTI4Z1ZUSkdJRkp2YjNRZ1EwRWdVMlZ5YVdGc0lEUTFOekl3TURZek1UQWdGdzB4TkRBNE1ERXdNREF3TURCYUdBOHlNRFV3TURrd05EQXdNREF3TUZvd0xqRXNNQ29HQTFVRUF4TWpXWFZpYVdOdklGVXlSaUJTYjI5MElFTkJJRk5sY21saGJDQTBOVGN5TURBMk16RXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFDL2p3WXVoQlZscWFpWVdFTXNyV0Zpc2dKK1B0TTkxZVNycEk0VEs3VTUzbXdDSWF3U0RIeTh2VW1rNU4yS0FqOWFidlQ5TlA1U01TMWhRaTN1c3hvWUdvblhRZ2ZPNlpYeVVBOWErS0FrcWRGbkJubHl1Z1NlQ09lcDhFZFpGZnNhUkZ0TWprd3o1R2N6MlB5NHZJWXZDZE1IUHR3YXowYlZ1em5ldWVJRXo2VG5RakU2M1JkdDJ6YnduZWJ3VEc1WnliZVdTd2J6eStCSjM0WkhjVWhQQVk4OXlKUVh1RTBJek1aRmNFQmJQTlJiV0VDUktnanEvL3FUOW5tRE9GVmxTUkN0MndpcVBTemx1d24rditzdVFFQnNValRHTUVkMjV0S1hYVGtOVzIxd0lXYnhlU3lVb1RYd0x2R1M2eGx3UVNnTnBrMnFYWXdmOGlYZzdWV1pBZ01CQUFHalFqQkFNQjBHQTFVZERnUVdCQlFnSXZ6MGJOR0poamdwVG9rc3lLcFA5eHY5b0RBUEJnTlZIUk1FQ0RBR0FRSC9BZ0VBTUE0R0ExVWREd0VCL3dRRUF3SUJCakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBanZqdU9NRFNhK0pYRkNMeUJLc3ljWHRCVlpzSjRVZTNMYmFFc1BZNE1ZTi9oSVE1Wk01cDdFamZjbk1HNEN0WWtOc2ZOSGMwQWhCTGRxNDVyblQ4N3EvNk8zdlVFdE5NYWZiaFU2a3RoWDdZKzlYRk45TnBtWXhyK2VrVlk1eE94aThoOUpESWdvTVA0VkIxdVMwYXVuTDFJR3FyTm9vTDltbUZuTDJrTFZWZWU2L1ZSNkM1K0tTVENNQ1dwcE11SklaSUkydjlvNGRrb1o4WTdRUmpRbExmWXpkM3FHdEtidzd4YUYxVXNHLzV4VWIvQnR3YjJYMmc0SW5waUIveXQvM0NwUVhwaVdYL0s0bUJ2VUtpR24wNVpzcWVZMWd4NGcweExCcWNVOXBzbXlQeksrVnNndzJqZVJRNUpsS0R5cUUwaGViZkMxdHZGdTBDQ3JKRmN3PT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZkNBWUFBQUNHVnMrTUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFIWVlBQUIyR0FWMmlFNEVBQUFiTlNVUkJWRmhIcFZkN1ROVjFGRC8zZDU5d2VRU0lnUzlBUUFYY0ZMQVFaaTlmcGVWejF0WS9XVFpyNVd4cGM3VzVrbkxhNWpJM1o4NXNyUzJuTTJzanRXd1pTN0lVSDRINHhDbkVReDREQVpGNzRWN3VzODg1djkvbEluQnZWSi9CNFB2OW51LzVudS81bnZNNTU2ZnpBL1F2MEhiL0lyWDNWRktQbzQ1Y25tNGluVUlXWXdMRlJtWlFVdXdqRkcvTjFpUkhoMUVaME5SVlJ1ZHF0MUJkKzJuU0t5Uy9PaHlzMCtsazNlLzNrUTlxdkQ0WlV0YTRWVlNVdVkwZWlweWlUaEFmb2NvT1JWZ0R1dXczcUtSaUFkM3JiY0V0alRqWUlvZjZXYUhzQ216VlBXQ014K2NnaDh0THFXTUthTVdzVWpMcW8yUnRKSVEwb096bWVycFF1NGVzWmdzT05rR3hIN2Qwa2R2VFQxN3M0T01VN1ZJOFpoamdHYU0rQXE5aUVOdThQaWYxdWR6MDdNd3ZLV2Y4R2xWb0NFWTA0UEM1V2RUYVhZRmJSOHZOdkw1KzNLZ2ZiNXhOTXlhOVJhbUppeW5hTWxHVFZ0RmxyNmJhOXUrcHFuRVg0dU11UlJnalNZRWhyTjd1dEZGZTZscWFsN05ma3c1aW1BR0h5blBwYms4Vm1ZMHhzdG5wdGxGQ1ZDWXR6VHVCTjgzUXBNTGpUdGV2ZFB6U1VuSjdlOG1ranhaMzlmWGJLRGZsZFpxYnZVK1RVZ0duQlZGNmZRMmlQSGc0VzE2VVdVd3Z6YmsxNnNNWkUrUG4wcHZ6N0pTZXVBeWVzOGxjcENtYUt1by9wK3FXcjJVY3dJQUhXcnZQMFlFemhYQXRMQWJzc0hocDdpR2FtdnlpalA4cnlxclhVV1g5WG9vd3h5QXVmTkJycDQzUE9CRlhabGtmOE1EUmlxY3B5b3dBd3B1ejJ4K2ZXdnovRHRkZTlzbXN6eWd0Y1I2QzF3YmR6Qmw2T2xxNVdOWVk0b0dhdGhKTXJrVEV4MGpBUlNIQVZzKzVyWWtRTlhiK1FnZlBMc1E2Z1h5SW5zcmVRZm1wbTdSVkZZZkw4Nm4xZmlVT2tZdlNoa1VQeHZidWt6b3k2SzFpaE0xaG8zWHpXNkV2U2ZYQStkcGlXR2FXZCtkb1h6THptR3dLWUZMQ0FzUkFsUEJBaE1sQ0ZYVTd0QlVWUHI4SGdWY0pIV3ErRjAwcGxyK0RNVGRyUDR6dnhZMTFrTk1oeFQrU2VUR2crZDRWNUxRSml0eVVHSk5COFZGWnNqZ1lCWk0vSUkvWENUa2owcXlET3BGMkFWUTE3Q0lqVXAvRG5UMVVrTDVGNWdkaitzUzF3ZzFnRTNnaWdtNjBmQ1h6U25QWGJ5QVBiSVh2K0lEcEUxNlRoYUhJUzlza3lobG1NRTVGM2NmcUFLaHEyQzBFNVBIMWdZYVhhTFBEa1pHMEhESk9uS1dIcDUxSTB6NVNPdXg4ZTFXQXVaemRIUXJUa3A4VG1qWG9JK2xhMHdHWnN6dWJxYk8zaWZRNkEvVzd2VlNZc1YzbVIwSkt3a0tjNFdIaUJrbVI4STNDQ2dJODdvT0w0cXpUNVArUlVKQmVqRU9nQVBLOGhZUHphdE0rZUlUcDJJTzl5VFFtZXJvbVBSeHgxcXhBY3NpbGUvdWJTZUViY1dRR1lFQ2doY0xZMkh5S2pvZ2pIMjVoTXBqcFV2MU91Z2xpNGVoMmVSdzBPMzJiSmpreXVDZ056ZzB2emxZTVNpU3MwdW9vNE1HN2hNT2pDRWFYMXlGRTBuU3ZqQnp1VG5FcEs4Nlo4SW9xRkFJdWJ3OGtnOUFyRWFSRVdTWkkrakg0WGJwNmc5RTlFbkpUM29hUnpETitNVUpCUURIbjU2YThvVW1FQnVzT3hCcy9ONSt0SkViUGtBRkRqOFVHdk9zL0lXdmNTZ2xHQmh2UzcvRlRZZnBXR1lkRFk4ZlBBeFdTQTM1c1RDNHA0K0xtNEFhcUlvUGVRdGZ1Zks2SmgwWmh4bGJzVVhPU21YTmlmRDVaVEFreURvZmJiY2NseG5BOFdOQXF4Q2JSTnlraFh4UXBhRHc2N2ZYVVlic2lHMEtodHYyb2VJdmg4cmhRTVlPY0VBcVhHL2VJK3puZ09jNXl4cjhxODJJQU0xYy9GTEZPcGxxdTVlRlFYck1aekdjVkNqWWJMV0c1STRCVDFldVJybGJ4dE5PdE1pdERERWhMWElJeW5BQXZ1T0VXRTNYM05kQWZ0OTRWZ2FHNDJYSVF0MFpYNlBlQ0UvcVFGZTlySzZIeDdZVTUwS3ZIN2ZXNGZTK3E3S0tCSnhzZ2dCWDVwU0FHaDFqSXJWaDV6UTZ3M1JmYWFoQlhtL2FDYkNaVGpDVUZVVHlXWnFXOXA2Mk1qSlBYVnFPclBnTU80TnY3NEdrZitvd2Z0TlZCRFFuakZKcUhTdzE3cFh2aFdXNUtacWUvUTQ5Ti9VU1RDQVZXb1FYRklIQkhYWGUzRlByVURzdUdEbXRGL2hIS1RIcGVreGhpQU9QSStTSnE2UzZIRjRJOVlXemtCSlRvNDZpVU16V3A4UGlyL1JpZHVMeEtZc1Nrc1Y4dkxsT1F2aEdYMllsUjBPQmhCakMrdS9nRWN2WTBBcEs3WWs0MU54alBTUW5XRkhURjY2VXJqZ2V2QjhDdTVhK2wydllTUlB0dVZEbzczaGhkTVNIblVYN3RUanNWWkd4QWwvV3B0aU9JRVExZ25MMjltWDYvdFIxdG1sa1lqOFc0WCtDU2pXY1VER1kxTnBTL0M3aFNLcWlNTE0vbDJRbVNXWjczRGR6K2dpbzhCQ0VOWVBRNDZxbmt6d1hVYnF2Qmt4alVRc1dmWkZnYnVvM3JBZit3TjdqT085MCt5bng0UGkzTCswbllMMVNjaERVZ0FQNGdQVi83SWQxcSsxSFNobXVHa0lxV1JQZ3l4TUZxUDhIZmpUbmpYd1k1YlFmYkpjdDZPSXpLZ01Ib3RGL0hlMWVnc2F4SFNxRzZ3ZmRtUTV4OE55VEZGcUJjcDJpU293SFIzeWs1KzM2aEY3dlhBQUFBQUVsRlRrU3VRbUNDIn0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIzLTAyLTA4In1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMy0wMi0wOCJ9LHsiYWFndWlkIjoiMzYxYTMwODItMDI3OC00NTgzLWExNmYtNzJhNTI3Zjk3M2U0IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiIzNjFhMzA4Mi0wMjc4LTQ1ODMtYTE2Zi03MmE1MjdmOTczZTQiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiZVdCTSBlRkE1MDAgRklETzIgQXV0aGVudGljYXRvciJ9LCJkZXNjcmlwdGlvbiI6ImVXQk0gZUZBNTAwIEZJRE8yIEF1dGhlbnRpY2F0b3IiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfZGVyIl0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjI1NiwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNwVENDQWtxZ0F3SUJBZ0lCQVRBS0JnZ3Foa2pPUFFRREFqQ0JyekVMTUFrR0ExVUVCaE1DUzFJeEVUQVBCZ05WQkFnTUNGTmxiM1ZzTFZOcE1STXdFUVlEVlFRSERBcEhZVzVuYm1GdExVZDFNUmN3RlFZRFZRUUtEQTVsVjBKTklFTnZMaXdnVEhSa0xqRWlNQ0FHQTFVRUN3d1pRWFYwYUdWdWRHbGpZWFJ2Y2lCQmRIUmxjM1JoZEdsdmJqRWNNQm9HQTFVRUF3d1RaVmRDVFNCRFFTQkRaWEowYVdacFkyRjBaVEVkTUJzR0NTcUdTSWIzRFFFSkFSWU9hVzVtYjBCbExYZGliUzVqYjIwd0hoY05NVGd3TnpBeU1EVXpNVE01V2hjTk1qTXdOekF4TURVek1UTTVXakNCcnpFTE1Ba0dBMVVFQmhNQ1MxSXhFVEFQQmdOVkJBZ01DRk5sYjNWc0xWTnBNUk13RVFZRFZRUUhEQXBIWVc1bmJtRnRMVWQxTVJjd0ZRWURWUVFLREE1bFYwSk5JRU52TGl3Z1RIUmtMakVpTUNBR0ExVUVDd3daUVhWMGFHVnVkR2xqWVhSdmNpQkJkSFJsYzNSaGRHbHZiakVjTUJvR0ExVUVBd3dUWlZkQ1RTQkRRU0JEWlhKMGFXWnBZMkYwWlRFZE1Cc0dDU3FHU0liM0RRRUpBUllPYVc1bWIwQmxMWGRpYlM1amIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUUlmcUhpc2kwb08vZXlPcVNhRHJyOWl0RzJJeW1Ca0huU0RHUUlJWW1UK3ZxQThBZ084MW1vbWMyTGQ1UEdwRU42bXVFNTR3UEhRanZjL3lDaWg4dTJvMVV3VXpBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQU1CMEdBMVVkRGdRV0JCUzNKL2Z4aUF2MjJpcmRCczk4U09EaEY3a1UvakFMQmdOVkhROEVCQU1DQVFZd0VRWUpZSVpJQVliNFFnRUJCQVFEQWdBSE1Bb0dDQ3FHU000OUJBTUNBMGtBTUVZQ0lRRGM0MUxGSzRMSkNCVTJWVktJejdaNnN4UGhVRWtoOG5MU0xLNklYZGtQNXdJaEFJZUtWT1pjaGFWTzVhRjdmYmRYb1NyY3l5MVlZZVVlUExvamNLSTlmWDg0IiwiTUlJQ2dqQ0NBaWlnQXdJQkFnSUJBVEFLQmdncWhrak9QUVFEQWpDQm5URUxNQWtHQTFVRUJoTUNTMUl4RGpBTUJnTlZCQWdNQlZObGIzVnNNUkF3RGdZRFZRUUhEQWRIWVc1bmJtRnRNUmN3RlFZRFZRUUtEQTVsVjBKTklFTnZMaXdnVEhSa0xqRVpNQmNHQTFVRUN3d1FRMlZ5ZEdsbWFXTmhkR1VnVlc1cGRERVpNQmNHQTFVRUF3d1FaVmRDVFNCRFpYSjBhV1pwWTJGMFpURWRNQnNHQ1NxR1NJYjNEUUVKQVJZT2FXNW1iMEJsTFhkaWJTNWpiMjB3SUJjTk1qTXdOekV4TURNME5qRTBXaGdQTWpBM016QTJNamd3TXpRMk1UUmFNSUdkTVFzd0NRWURWUVFHRXdKTFVqRU9NQXdHQTFVRUNBd0ZVMlZ2ZFd3eEVEQU9CZ05WQkFjTUIwZGhibWR1WVcweEZ6QVZCZ05WQkFvTURtVlhRazBnUTI4dUxDQk1kR1F1TVJrd0Z3WURWUVFMREJCRFpYSjBhV1pwWTJGMFpTQlZibWwwTVJrd0Z3WURWUVFEREJCbFYwSk5JRU5sY25ScFptbGpZWFJsTVIwd0d3WUpLb1pJaHZjTkFRa0JGZzVwYm1adlFHVXRkMkp0TG1OdmJUQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJBaCtvZUt5TFNnNzk3STZwSm9PdXYySzBiWWpLWUdRZWRJTVpBZ2hpWlA2K29Ed0NBN3pXYWlaell0M2s4YWtRM3FhNFRuakE4ZENPOXovSUtLSHk3YWpWVEJUTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0hRWURWUjBPQkJZRUZMY245L0dJQy9iYUt0MEd6M3hJNE9FWHVSVCtNQXNHQTFVZER3UUVBd0lCQmpBUkJnbGdoa2dCaHZoQ0FRRUVCQU1DQUFjd0NnWUlLb1pJemowRUF3SURTQUF3UlFJaEFOVm5KZGUvL3RCTHE4TUREaStTQWQ2VWRZSVpTbmc0UE1xbXlOcnZaajY0QWlBWDB4U3pBaEZhQ0NwL3VocFZnbmxGK1hCZ3J3QUlzb3RaR1RCNnJrQjMxQT09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQStnQUFBRXhDQVlBQUFEdkRZZ3FBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRW5RQUFCSjBBZDVtSDNnQUFGaWNTVVJCVkhoZTdkMEhlQlhGMnNEeE43M1FDVFZBNkZJRkZLa0NVdXlBRXVtS1lrRlViSUNDSWlLQ1VnUUU3TDBnZGxRc0tDcFNySWdnU0MraEpuUkNKNEgwYjJmdmVELzBraENTbmMyZWsvL3Z1WG1ZZDQ2WGtKTno5c3k3TS9OT1FKWkZBQUFBQUFCQWdRclVmd0lBQUFBQWdBSkVnZzRBQUFBQWdBZVFvQU1BQUFBQTRBRWs2QUFBQUFBQWVBQUpPZ0FBQUFBQUhrQ0NEZ0FBQUFDQUI1Q2dBd0FBQUFEZ0FTVG9BQUFBQUFCNEFBazZBQUFBQUFBZVFJSU9BQUFBQUlBSGtLQURBQUFBQU9BQkpPZ0FBQUFBQUhnQUNUb0FBQUFBQUI1QWdnNEFBQUFBZ0FlUW9BTUFBQUFBNEFFazZBQUFBQUFBZUVCQWxrVzNQU3N6TlZYU0R5VEtxYTFiNWRTYWRaSzZlNCtrSHo5bTk0bjMvL21BY1FFaG9SSmN1cFFFUjBWSldKVktFdDZndm9SWHJ5WkJwVXBKUUNEMzRRQUFBQUJmNE5rRVBTc2pRMDV0M2lLSFB2cEVqdit3UU5MMzdaT3MxRFQ5S0lDekNZeU1sTkFhMWFURU5aMmxaSmZPRWxxaHZQV09EOUNQQWdBQUFQQWF6eVhvS2pFL012YzdTWHh6aHB4YXNWTDNBc2lQZ05BUUtkcXh2WlM5WTRBVWFkSlk5d0lBQUFEd0VrOGw2TWQvKzEzMmpIdEtVdGF0MXowQW5GYTg2OVZTWWRnUUNhdFNSZmNBQUFBQThBSlBKT2daSjA3SW5vbFQ1UEFISDR0a1p1cGVBS1lFaElkTGhWRWpKS3BYZHdrSUR0YTlBQUFBQUFwU2dTZm9wN1pzbFIwREIwbnExdTI2QjRBckFnS2syQldYU3BYSkV5U29hRkhkQ1FBQUFLQ2dGR2lDZnVMUDVSSS9ZSkJrSERtaWV3QzRMYnhSUTZuMjVpc1NFaFdsZXdBQUFBQVVoQUpMMEU4c1hTWTdicmxETXBPU2RBK0FnaEphcTRiVS9PaGRDUzVkV3ZjQUFBQUFjRnVCSEpDc2xyWEgzM2t2eVRuZ0VhbWJ0OHIyZ1lNa2cvY2tBQUFBVUdCY1Q5RFRqeDZUN2JmZElSbUhEdXNlQUY1dzhzKy9aT2NqajBrV2hSb0JBQUNBQXVIcUVuZDF4bm44QXcvSnNTL202SjV6RnhnWklVR2xTa2xJamVvU1ZLSzQ3Z1VLT2V0dG5MNXZ2NlR0aUplTUkwY2xLeTFOUDNEdUtrNFlLMlg2OU5JUkFBQUFBTGU0bXFBZlhiaklMZ3AzemtlcEJRWksrUGtOSktwL1B5bld1cVVFbHlrakFVRkIra0VBZjh0TVRaWFVYYnZrNkxmejVORE05eVY5ejE3OVNPNEZsaXdoNS8zd0RVWGpBQUFBQUplNWxxQm5KQ1ZMM0ZYWFNGckNUdDJUTzZFMXEwdkZVU09rZU5zMmRxSU9JSGN5VDU2VWd4OThMUHVmZVY0eWp4M1h2YmxUb2x0WGlaazZ5YnBDQk9nZUFBQUFBS2E1bHZFZW1mUDF1U1huVm1KUW9tZXMxSjR6VzRwZjBvN2tIRGhIZ1JFUlV2YlcvbExMZWcrcG85VE94YkZ2djVkVDhRazZBZ0FBQU9BR1Y3SmV0ZXgyLy9NdjZTZ1hyR1E4YXRCQWlYbHF2QVNHaCt0T0FIa1JWcVd5ZllSYTVNVXRkYy9aWloxS2tmM1B2cUFqQUFBQUFHNXdKVUUvc1hpSnBPL2FvNk96Q0FpUTBqZjNrK2loOTdPOEZuQ0l1dEZWN2RVWHoya20vY1NDUlpKKzVLaU9BQUFBQUpqbXloNTBWYm45NkdkZjZDaG5Lb0dvK2ZIN0VoZ1dxbnZ5eWZyeHN0TFRKZjNFQ2NrNGZseXlVdk5lM1Jwd2l6cXRJTGhZTVh1WnVsMFEwYUdiVmFlMjc1RE5WMTRqV1NrcHVpZG5sWjZaSXFXdjZhSWpBQUFBQUNZWlQ5QlZjcnl1ZVJ2SlBIeEU5K1FnT0ZpcXozcFBpalpwckR2eUxubmRlamsyZjZFay9icFlVclpzbFl6RWcvb1J3SGNFeDFTUmlOcTFwR2lIZGxLc1kzc0pxMWhSUDVKMysxNTZWZlpQbXFxam5CVzlyS05VZi9WRkhRRUFBQUF3eVhpQ25yeG1yV3pwMmwxSE9TdmE4UktwL3ZyTGVaNHR6RHlWSWtlKy9VNFNYM3RUVXRadDBMMkFud2dNbEtLZDJrdVpXL3RMc1JiTjgvdytTVDk2VkRaMXZGSXlEaDNXUGRrTEtsNWM2djd4c3dTR2hla2VBQUFBQUtZWTM0T2UvTmRLM1RxNzBuMTY1UzNweU1xUzQ0dC9sN2pPM1dUWGtPRWs1L0JQbVpseVl0NEMyWDdETGJKdDRDQkp5V09WOWVBU0phVEV0VjExbEROMVZGdnF6bDA2QWdBQUFHQ1M4UVQ5NVByY0pjc0JrUkZTN0pLMk9zbzlWU0YrOThUSnN1T21BWks2ZFp2dUJmeVlTdFIvV0NpYnUxNG5oK2Q4WThmbnFrU1hxM1FyWjFscGFaTEMrd29BQUFCd2hka0VQU3RMMHJadTEwSE93aHZVbDhEUWN5c01wNHErYmIvakhqbjQ2cHYyWG5lZ01NazhkbHgyRGg0bWU2WStZNy9YemtWRXpSb1NXTFNvam5LV3NpZVhKekFBQUFBQXlCZWpDYnJhM3A2Um5LeWpuS216bXMrRlNzNjMzVHBRa2hiOXBIdUFRaWdqUXhKZmVNVmVSWEl1U1hwQVJJUUVsNDNTVWM3U2Q1T2dBd0FBQUc0d080T2VtU21adVR6T0thaENlZDA2TzdYc05uN1lDRG01YklYdUFRbzN0WXJrd0ZzemRIUjI2dWkyZ05EY0ZYN0wyTGRmdHdBQUFBQ1laSHdQdWduN1gzdFRUbnozZzQ0QUtQc21UWk9rRlgvcENBQUFBSUN2TVhyTW10b1h2cWxMcktSdWpOTTkyWXNhTkZDaWh3M1ZVZlpPYm9xVExWMnVzMmZSY3kwdzBONXZHMXdtU2dLalN1bE93S09zZDJUR3psMlNjZUtFWko1STBwMjVFMXFyaHRUKzhsTUpqSWpRUFdlV2xaRWhjWjFqSldYakp0MlR2WkxkdWtxVmFaTjFCQUFBQU1BVTMwclFyWC9xdHR2dWtCTUxjN252M0Q0M3VvT1VIWEN6aE5lcks4SEZpdWtIQUkvTHpKUzB3NGZseE85L3lJSG5YN0lTYWVzOWxKdTNha0NBbEI4eFRNcmRmcXZ1T0RNU2RBQUFBTUI3ZkdxSmU5S3ExYmxPemtOaXFrajFqMlpLOVZkZmtLTE5tNUdjdzdjRUJrcElWSlNVNm55VjFKNHpXeW8rT1ZvQ3dzUDFnem13a3ZqRWwxK1RqS1J6bTNrSEFBQUFVUEI4SjBHM0VvOERyNzZoZzV5Rm45OUFhczcrU0lwZTFGVDNBTDVMRlhRcmMzMGYrNFpUVU1rU3VqZDdHWWNPeXhGMVBqb0FBQUFBbitJekNYcjZrYU9TOU10dk9zcGVjTVh5VXUzMWx5V2tkR25kQS9pSElvM09sOHJQVGJWZTVFRzZKM3RIUHZ0Q3R3QUFBQUQ0Q3A5SjBKTldycExNWThkMWxJM0FRS2s0ZHJTRWxDdXJPd0QvVXJ6TnhWTHFoajQ2eWw3eW55c2s0L2dKSFFFQUFBRHdCYjZUb1AvMnUyNWxMN3hlSFNuUjRSSWRBZjZwN0lCYkpTQTRXRWZaeU1pUXBKVXJkUUFBQUFEQUYvaE1ncDY4YnAxdVphOUVsNnZ0L2JxQVB3dXJYRWtpV2pYWFVmWk9yVjZyV3dBQUFBQjhnVThrNkZrWm1aSzJhYk9Pc2xmc3NrNjZCZmkzWW0zYjZGYjJVdmZ2MXkwQUFBQUF2c0JIRXZSME8way9tN0FLRlhRTDhHK2gxYXZwVnZZeVQzRFVHZ0FBQU9CTGZHYUplNjRFNkQ4QmY4ZHJIUUFBQVBBNy9wV2dBd0FBQUFEZ28walFBUUFBQUFEd0FCSjBBQUFBQUFBOGdBUWRBQUFBQUFBUElFRUhBQUFBQU1BRFNOQUJBQUFBQVBBQUVuUUFBQUFBQUR5QUJCMEFBQUFBQUE4Z1FRY0FBQUFBd0FOSTBBRUFBQUFBOEFBU2RBQUFBQUFBUElBRUhRQUFBQUFBRHlCQkJ3QUFBQURBQTBqUUFRQUFBQUR3QUJKMEFBQUFBQUE4Z0FRZEFBQUFBQUFQSUVFSEFBQUFBTUFEU05BQkFBQUFBUEFBRW5RQUFBQUFBRHlBQkIwQUFBQUFBQThnUVFjQUFBQUF3QU5JMEFFQUFBQUE4QUFTZEFBQUFBQUFQSUFFSFFBQUFBQUFEeUJCQndBQUFBREFBMGpRQVFBQUFBRHdBQkowQUFBQUFBQThnQVFkQUFBQUFBQVBJRUVIQUFBQUFNQURTTkFCQUFBQUFQQUFFblFBQUFBQUFEeUFCQjBBQUFBQUFBOGdRUWNBQUFBQXdBTkkwQUVBQUFBQThBQVNkQUFBQUFBQVBJQUVIUUFBQUFBQUR5QkJCd0FBQUFEQUEwalFBUUFBQUFEd0FCSjBBQUFBQUFBOGdBUWRBQUFBQUFBUENNaXk2TGJqc3RMVFpWT1hXRW5kR0tkN3NoYzFhS0JFRHh1cW8zL0tURTJWRGEzYVM4YWhRN3JuekJxc1hTNkJrWkU2TWljMVBrRk9yZCtnSS9pejBKZ1lDYTlYUjBmZWNXVCtBa2tZTUVoSFoxYWlSNnpFVEo2Z28zL0t5c2lRdU02eGtySnhrKzdKWHNsdVhhWEt0TWs2QWdBQUFHQUtDWG9lSEp6NXZ1eCtiS3lPNE0raSt2ZVQ2TWNmMVpGM2tLQURBQUFBL29jbDdnQUFBQUFBZUFBSk9nQUFBQUFBSGtDQ0RnQUFBQUNBQjVDZ0F3QUFBQURnQVNUb0FBQUFBQUI0QUFrNkFBQUFBQUFlUUlJT0FBQUFBSUFIa0tBREFBQUFBT0FCSk9nQUFBQUFBSGdBQ1RvQUFBQUFBQjVBZ2c0QUFBQUFnQWVRb0FNQUFBQUE0QUVrNkFBQUFBQUFlQUFKT2dBQUFBQUFIa0NDRGdBQUFBQ0FCd1JrV1hUYmNWbnA2YktwUzZ5a2JvelRQZG1MR2pSUW9vY04xZEUvWmFhbXlvWlc3U1hqMENIZGMyWU4xaTZYd01oSUhabHpjdlVhT2Y3anp6cnl2dVEvVjhqeFJUL3B5Rm5sQjk4ckV1Uy85M2tpR3AwdnhkcTEwWkYzSEptL1FCSUdETkxSbVpYb0VTc3hreWZvNkoreU1qSWtybk9zcEd6Y3BIdXlWN0piVjZreWJiS09BQUFBQUpoQ2dsNElKTDQ1US9ZOGNlWkVMYjhheHEyUmdPQmdIY0V0L3B5Z1o2V2xTVmFtc2N0UzRSTWdFaGdTWXYxcE5RQUEvME9OTThXRmo1MkE0Q0FKQ0FyU1VjRno5Zk9XenlJZzEwalFDd0VTZFAvanp3bjZ0cUhENU5TS2xUcENmZ1dWS0M2MVBuNWZBa05EZFE4QTRIUngzZnRJK2xuR21FNG9QL3dCS1gzVkZUb3FXQmxKU2JMbHhsc2s0L0FSM1dOV1pJdG1FalArQ1FrSVpIY3RjRFlrNklVQUNici84ZWNFUGE3ZnpYSnk4UklkSWI5Q2ExU1h1dk8rMFJFQTROL1d0V3duNlFjTzZNaWM2RW5qcFV6M1dCMFZvTXhNMlQ1MG1Cejd5cDNQaHVBSzVhWDI3SThscEZ3NTNRTWdKOXpHQWdBL0ZsYXJwbTRCQUNDUytORXMxNUx6Z0xBd3FUSjFFc2s1Y0E1STBBSEFqNFdXTDY5YkFJRENMbm5kZXRrejdpa2RtVmR1eUwxU3JFVnpIUUhJRFJKMEFQQmpZWTBhNmhZQW9ERExPSDVjNGdjL0tGa25UK29lczRwZGNabVV1KzBXSFFISUxSSjBBUEJqNFRWcjZCWUFvTkRLeXBMZGs1NlcxQzFiZFlkWklaV2lwY3I0c1JTRkEvS0FkdzBBK0t1Z0lBbXJVRUVIQUlEQzZ2QTMzOHJoRHo3V2tWbUJrUkVTODhJekVseXlwTzRCY0M1STBBSEFUd1dWS2lXQnhZcnFDQUJRR0tYRXg4dXVrYVB0V1hUamdvS2t3cWhIcE1qNWJLOEM4b29FSFFEOFZGRFJJaElZRnFZakFEQXJNek5UVHA0OEtZY09IWkt0MjdiSjBxVkxKVFUxVlQrS2dwQjVLa1YyREg1UU1vOGYxejFtcWFOWnkvVHNyaU1BZVVHQ0RnQitLcVJ5SlFrSUN0SVJBT1NOU3J6VDB0SWtPVGxaRWhNVFpmUG16Yko0OFdKNTcvMzNaZHo0OFRKNHlCQzVOalpXYXRldEsrZlZxeWQxcks5NkRScEk2N1p0NWJoTGlTSE9RTzA3ZjJxeW5GcTVXbmVZRmQ2b29WUWVPMW9rSUVEM0FNZ0xFblFBOEZPaFZXTjBDd0J5cGhMd0F3Y095TnExYTJYMjdObnk0a3N2eVdPalIwdS9tMjZTaTl1MWs2Yk5tdGxKZDZXWUdLblhzS0cwNjlCQmJyNzFWbmw4N0ZoNXdmcHZ2NWs3VitMajQyWHYzcjF5NU9oUk82bEh3VHE2NkNjNS9QNUhPaklyc0doUmlaaytSUUxEdzNVUGdMd2lRUWNBUHhWS2dUZ0FPVGgyN0poY2V2bmxVcmQrZllrc1ZreWlxMVNSSmsyYlNxKytmZVgrSVVOa3dsTlB5VWNmZnl6TGxpMlQ5UnMyeU80OWUwaThmVVRxN2oyeWMvZ0l5VXBQMXowR0JRUkk5Sk9QUzNqVnFyb0RRSDZRb0FPQW53cS9vSkZ1QWNEL1V2dkRGLy8rdTJ6WjZzN1JXM0JIcHZWN2pYL29FY2s0ZEZqM0dHUWw1MUVEYnBiU1hUdnJEZ0Q1UllJT0FINHF2RW9WM1FJQUZCYjdYMzFka24vN1hVZG1SVjdVVkNvT0hhd2pBRTRnUVFjQVB4UVFFU0VoWmNycUNBQlFHQnhmc2xUMlAvZVNqc3dLcmxoQnFqNDNWUUpEUTNVUEFDZVFvQU9BSHdvdVgwNENRb0oxQkFEd2QrbEhqa2pDc0llc2h2bDk1d0doSVZKNThnUUpLY3VOWU1CcEpPZ0E0SWRDU3BhVWdFQXU4UUJRR0toaWNQSERINUgwWFh0MGoxbGw3cnBEaXJkcXFTTUFUbUwwQmdCK0tLUkdOYzZpQllCQzRzRGI3OGlKK1F0MVpGYlI5dTJrNHIyRGRBVEFhU1RvQUR3bHBGeFpDYTFTMmJXdmtJb1YzVWxrcmU4UlVpbjZqUDhHRTE4UjlldnJid3dBOEdkSksxZkp2cW5QNk1pc0VPdnpKV2JLUkc0QUF3WUZaRmwwMjNGcXVjMm1MckdTdWpGTzkyUXZhdEJBaVI0MlZFZi9wSTZMMk5DcXZXUWNPcVI3enF6QjJ1VVNHQm1wSS93dDhjMFpzdWVKQ1RweVZzTzROUklRekQ1WHR4Mlp2MEFTQnVSODk3cEVqMWlKbVh6bTMzdFdSb2JFZFk2VmxJMmJkRS8yU25icktsV21UZGFSL3prVkh5OXhsM1UyZmxac1lKRWlVbWZCZHhKU0prcjNBRURCU2t4TWxLbzFhdGpIclpteWQ5Y3VpWXJ5OW5WdlhjdDJrbjdnZ0k3TWlaNDBYc3AwajlXUk05S1BIWk80YmowbGJVZTg3akVuTUNKQ3FuL3dqaFE1djZIdUFXQUNNK2dBQUFDQUQ5cjF4SGhYa25NSkRKVHlqejVFY2c2NGdBUWRBQUFBOERFSFA1MHRSei83UWtkbWxlamFXY3IwNnFrakFDYVJvQU1BQUFBKzVHVGNadGt6WnB5T3pBcXJjNTVVR1RlR2swRUFsL0JPZzA5UjlRaTI5cnRaMWwzUXd2aFgzTFU5Sk9ORWt2N09BQUFBQlMvanhBbUp2LzhCeVV3eVAwWUpMRlpNWXA2Zlp1OC9CK0FPRW5UNGpxd3MyVGY5ZVVuNjlYZkpPSExVNkZkbThrbXBPSHFrQkJVdG9yODVBS0N3eU16TWxQVDA5RE4rWldSa1dCOUh4dXJyQWpuS3NsNmJ1eWRNeWxXUjEzd0xDcFRvTWFNa29rWU4zVkY0cWZkOFR0Y0Y5UmpnRktxNEZ3TCtVc1g5Mk0rL3lJNWI3eFRyU3FoN3pDbDcvOTFTWWZDOU92SWVxcmc3aHlydXZpOGxKVVhXcmwwcmY2MWNLZnYzNzVjRGlZbjZFWkd3MEZBcFdiS2tsQzFiVm1yWHJpMzE2dGIxZkVWcHVDY3BLVW0yYnQwcXExYXZsajE3OXNpMjdkdGw0OGFOY3VyVUtUbDU4dVFaQjkwUkVSRVNFaElpcFVxVmtnYjE2MHVsU3BXa2F0V3FkcnR5NWNvUzdFTW5tMURGL1Q5OHFZcjdrZSsrbC9oN2hxaTdTTHJIbk5MOSswbmxVWThVdWlQVjB0TFNKTjRhR3l4ZnNVSVNFaElrTGk1T05sbGY2cnFRbkp5cy82di9wOTd6WVdGaFVyeDRjV25Zb0lGOUhhaFdyWm8wYnRUSXZqNzQwalVCM2tDQ1hnajRRNEtldW51UGJMWmVTeG1IaitnZWN5SmJ0NVFhTTkvMDlGNHJFblRua0tEN3BxTkhqOHJjYjcrVkR6NzhVSDc4NlNjNzBjcXRPdWVkSjQ4LzlwajA2TkZEOTZBd1VNbjJ0bTNiWlBIdnY4dWlIMytVdi83NlMxYXVXcVVmZFVaNGVMZzBiOVpNTHJqZ0FtblZzcVcwYk5IQ0hxQjdGUW42Zi9oS2dwNlNzRlBpcnVrdW1jZU82UjV6SWk1c0lqVm52aTJCNFdHNngzK3AxNys2d2Z2TEw3L0kvQVVMNVBjbFMrU1lRODl4cEpXWHRHM1RSdHBmY29tMHNLNEh6UzY2eUw1T0FEa2hRUzhFZkQxQnoweEprYTNYOTVlVHkvL1NQZVlFbFMwanRiK2VMU0ZseStvZWJ5SkJkdzRKZXU3OGJpVTE2OWF2MTVFekxySUdLbzNPUDE5SHVYUEFHa1MvL09xck11WHBwODg0azVGYnN6NzZTTHBkZTYyT3p0MnNUejZSNDhlUDY4aDVWMTV4aFVSSFIrdklHWjk5OXBrY09YcFVSODY3eEJxQTF2VFlVbGkxSEgzVHBrM3kyZXpaOHNtbm44cjZEUnZzUHJjRUJRWFpONFI2OWV3cFYxMTVwVFJvME1DZWFUTnAxYXBWc3V6UFAzV1VzeE1uVHNoREkwYllTM1JOZVhyeVpDbGF0S2lPOHE1OCtmTFMrZXFyZGVRc1gwalFzOUxTWkhPL20rWGtzdVc2eDV6Z2NtV2wxdXhaRWxxaHZPN3hQK28xcjI3UWZXaDlGcno3M250eThPQkI0MXRYQWdJQ3BGaXhZdEtqZTNmcGQvMzEwcng1YytQWGd6TlJOeXMvLytJTE9YTEU3S1JYNmRLbDgvVTVtMWZxNTN0bjVzd3pyb0J5aXJySjBydFhML3NhYndJSmVpSGcwd202OWZMYzg4enprdmpzQzFaYjl4a1NZRjBrcTc3OW1oUnIyVnozZUJjSnVuTkkwSFBuL2lGRDVNV1hYdEtSTSs2NzV4NTVlc29VSGVWTURhWm16Wm9sUXg5OFVCS3RnVlIrcU9XR2YvN3hoOVN2WDEvM25CdjFzZG1vU1JQWnNIR2o3bkhldDk5OEk1MDZkdFNSTTVvMmEyWXY1VGJsbmJmZmxyNTkrdWlvWUtrVkZkOS8vNzFNc2w1ZmFoQ3VscXdXTkRXUVUwdGZCOXg2cS8wOHhjVEUyQU4ycDAyZE5zMU91djJOU21vK3NCSXBFenlmb0Z2WG5GMFRKc3ZCTjk3U0hlYW9NVjNWMTErUzRtM2I2Qjcvb203c2ZqOXZuancxYVpLcytPc3ZWMi9ZblU2OTk2dFhxeWFENzcvZlR2UlVNdXVtMndjT2xMZmZlVWRIWnFpYkVic1RFbHhmTWFDMkxkVS8vM3lqdjlzTzdkdkxkM1BuR3JtR0t4U0pnNmNkKzIyeEhIemhGZVBKdWZVT2t6S0RCdnBFY2c3NGk0U2RPM1VyWjRjUEg1YnJiN2hCYnI3dHRud241NHFhelZPSkV2eVBXcXI2M3Z2djJ6Y2pldlh0YTg4a2V5RTVWOVJnY2NlT0hUSnE5R2o3QnMrMXNiR3lkTm15QWtzUWZFM3JWcTEwcS9CUk5YZ096akNiVFAydHpGMjMrMlZ5cm03eWZ2bmxsOUtrYVZQcDJidTNmVzBveVBlZXV0RzdkZHMydVcvd1lLblhzS0U4UFhWcXZsYUZuYXRldlhycGxqbHFsWm1xRCtPMkpVdVdHUC9kOXJGZVE2YVNjNFVFSFo2VmRpQlJkajN3c1BHWlRTV3lXVk1wZjlkQUhRRnd3eHJyZy90c2k3alVudUcyN2R2TDdDKytjR3k1V3BreVpldzcrL0FmNm5YMDg4OC9TNXQyN2VUbVcyK1ZMVnUzNmtlOEtmbmtTYnVHZ3ZyM1huSFZWZllXRXVTc1JpR3RKSjY2Yjc4a0RIL0V5akROSjVORjJsNHNGZTY5VzBmK1EyM1B1cnBMRitsdUphWHFNOFZyRGgwNkpBOC84b2g5WS9HTEw3ODg2K2VpRXk2eHJqMnEwS1ZwYzcvN1RyZmNNMy9oUXQweVE2MEl1QzQyZjhVZXo0WUVIWjZrOWxvbFBQaVFwRnNmVEthcHZWWXh6MCtYZ0pBUTNRUEFEY2VPSHJVclpXZEhWYzd0ZU9tbGRsVnRKMTE0d1FWRzczekRYV29mOWRBSEhwRExycnpTWHJMcVM5Uk5KMVhrVU4yRTZ0NnpwMnpjNU1MUldUNUk3ZE5WVmZJTEc3WEZNK0hoUnlUandQK2ZUR0ZLY01VS0VqTjVvZ1FZMmxOYkVOU0ttc2xQUHkwdFdyV1NoWXNXNlY3djJyeGxpejI3MysrbW0reDZLeWFGaG9aS2Q4Tkpwcko0OFdMZGNvZTZwcW9pb0NhcG14dnFkQmlUU05EaFBWbFpzdStsVnlYcHAxOTFoemtxS2E4MGFaeUVsQzJqZXdDNDVkang0L2J5OVRQWnZYdTNYRzRsWER0MzdkSTl6aW1NQTMxL3BXYkQybmZzS00rLytLTFBMeFgvOHF1djVLTG16V1hzRTAvWU54M3cvMEtDZzZWQ2hRbzZLanoydi9HMk8yT2hpQWlwK3Z4MHZ4b0xxV01UdTE1empUd3ljcVI5UEpxdlVMUG5IOCthWmMrbS83RjBxZTQxNDdycnJqTitzMW90Y1RkNVNzUy9xYU15MVZZaWsyN3MxMCszekNGQmgrY2MvMzJKSkQ3L3NvN01paHB3aXhTL3BKMk9BTGhKelo2cnMyYi9UUlg0NnRXbmo1SGtYRkhWeHVIN2xscURWN1ZFM09tajBncVNTaVNlR0RkT1dsNThzYXhZc1VMM29tN2R1b1h1YUtyamZ5eVZBOU9mMDVGQmdZRlNZZmhRS2RLa3NlN3dmU3RYcnJTdkRRdDhZTlk4TzN2MjdyVnZVczk4OTExalM5NVZYUWQxREp4SnUzYnZOcDR3bjI3ZXZIbTZaVVpFUklSOXlvcHBKT2p3bExUOSt5WGgvZ2Z0SmU2bVJUUy9TQ29NdlU5SEFBcUN1dHQ5T3JVOGJjZ0REOGlTUC83UVBjNEtDdzB0dEh0Wi9ZazZyL2lLcTYrVy9TNVUzaTRJYWx0SDMzNzlYSjE1OHJLYU5XdnFWdUdRZnV5NDdCeitpQ3MxZUlwZmVabVU2WGU5am55ZldsTGR2bE1uaVU5STBEMitTOTJzSG5qbm5USnQrblFqU1hxUklrV2syelhYNk1pY2IxM2FoNjZlbzNrLy9LQWpNOVRwS2lWS2xOQ1JPU1RvOEF6MVFhUUtvYml4MXlvb3FyVEVUSjFrL0F4M0FEbjc3Vi83MDlUeE4yckd3SlN5WmN0S0tjTjd4MkRXK3ZYcjdSVVdKcytoOTRMSlR6MWw3eE9GU0xPTEx0SXQvNmVPUVUwWU9VclNFbkozeWtWK2hOYXVLVlVtanBPQVFQOUlCMzc4OFVlNXFrc1h2OW9pb3FyUGp4ZzVVcDU1OWxuZDR5eFZqZHkweFM0VndUeVZraUovR0xxNS83Y0J0OTJtVzJhUm9NTXo5ci8rcGlUOStJdU96TEgzblU4ZUw2R1ZvblVQZ0lKeStoTDNvMGVQMmtmT3FBR0pLZVhMbDdjTFRzRTNxV3JIc1QxNnlJRkU4emR5QzlLZEF3ZEtWeXZSd0g4MGJkcFV0L3hmNHJ2dnkvRnZ6TTg0QmhhSmxKanBVeVNvU0JIZDQ5dlVxcXR1M2J2YnM4NytScTBzRy9iUVEvTGVlKy9wSHVlMGJObFNpaGN2cmlNejFMRm5LVmJ5Yk5ybXVEalp1MitmanB5bnpxcHYxN2F0anN3aVFZY25uUGhqcWV5ZlBGMUhacFVlY0xPVTZOQmVSd0FLa3BvTi9kc2JiNzVwL0FpY3BoZGVTQVYzSDZXV0w2cUNUMXUyYk5FOS9ra1ZNWnd3ZnJ5T29QYWVWNnRhVlVmK0xYbk5XdGs3ZWFxT0RBb01rSXBqUmtsazNicTZ3N2R0Mzc1ZHV2Zm80ZmZGRmUrOCsyN0h0MytwYXVSWFgzV1Zqc3pZdDMrLzdMZStUUHRtN2x6ZE1rTXRiM2ZyaUZZU2RCUzQ5RU9ISkdISWNIV0xVUGVZRTltaW1WUWN3cjV6d0N2VUhtSzFWRGt4TVZIR2pCMnJlODFSeGFiZ214WXRXaVJ2elppaEkvK2s5b1MrL2VhYlVyUm9VZDJEa2lWS1NGUlVsSTc4Vi9xeFk3Smo4SU9TZGRKd3hmR0FBQ25kNzNxSjZuYXQ3dkJ0YXNhOGQ5KytkaExvNzFRUnlSdjY5Yk5YRWpuSmRGVnlOWHYrNysxc1RsT3JERXp1ZFZjMzl1KzQvWFlkbVVlQ2pnSmxuM2MrYklTazc5NmplOHdKS2xWS3FreWZ6SG5uZ0llbzVlejc5dTJUOTk1L1g1SnpPQlBkS2VyOFV2Z2U5VG9aTlhxMFBRanpWMm9BT09LaGg2UkpreWE2QjByNUNoWHN5c2wrTFN0TGRqMDVRZEsyL2JOb3Bnbmg5ZXRKOUVNUDJvbTZQeGo3NUpPeTNNVVRENEtDZ3V4aW8ycGxoL3BTVzZaQ3JIR2xXeXV6ZHNUSHk1MkRCamw2TFd6ZXJKbVVLV1AyaUwxdnYvMVd0OHc0ZXV5WXJEdHRSWjdUb2l0V2xHYlc4K1FXRW5RVXFQMXZ6WkFUQzM3VWtVSFdoVE42L0JnSkxZVG5xQUplcHFwVXI5K3dRVjU2MmZ6Umltb2dWYTFhTlIzQmw2aXE3YVlxKzN1Rk92Sm82SkFoT3NMZkdqZHFwRnYrNjlDWGMrVG9aMS9veUp5Z01sRlM5YVhuSk5CUGpxejcrZWVmWmVxMGFUb3lSeFZydk9MeXkrV0Y1NTZUWDMvNlNiWnQyU0o3ZCsyeXYvYnMzQ2tiMXE2VmIrYk1zVyt3MWE5WFQvKy96UG5LK2w1T3poYXJxdVFkREI4LytyTjFEYy9JeU5DUjg5VEpGMDZ2TERoZCsvYnRqUjlKZHpvU2RCU1lFMzhza3dOVG50R1JRVlp5WHZxMi9sTHl5c3QxQndBdmVmT3R0MlRMMXEwNk1xZHExYXF1ZnNEQ0dXcnYrYlBQUDY4ajg2cFVxU0kzMzNTVFBEMTVzc3l6QnNFYjE2MlRyWEZ4c20vM2J0bTBmcjJzVzcxYTVuLy92VHozekRNeWNzUUl1YVpyVjZsWHQ2NEU1K05Va0tqU3BlV2RHVFBzbVRqOFUrM2F0WFhMUDUzYXZrTjJqeDVyejZLYkZCQVNMSlVuUENGaGZsSWdWKzAzSHpCd29JN01VTFBpdlhyMnROL3pjNzc4VWdiZWZydGRzRkNkQnFLMm82Z3Z0U2M1SmlaR0x1M1VTY2FPR1NQTGx5MlQyWjkrS3VjM2JLai9GdWVwRlVYM0R4N3MySjU3OVhQZWNMM1pvL1pVWWMrOWUvZnF5SG5mV2Rka2s5eGMzcTZRb0tOQXBDVWVsSVQ3SDNEbnZQTUxtMGpGQjVtVkFMeHF6dGRmNjVaWmxhS2o4NVZFb1dBY1BIaFFmdnI1WngyWlU3MTZkWGx2NWt3N0lYL3QxVmZsdm52dmxmYVhYR0tmbTYrU2RsWEJWLzAzS21GczE2NmQzSG5ISGZMNDZOSHk2YXhac3VMUFAyVlhmTHg4L09HSDlrQzNTdVhLK20vTm5TbVRKa21NOVQzd3YveDVXMHBHY3JMRVcyT2h6T1BtaTV0RjNYYUxsT2pZUVVlK2I5S1VLYkxWWUZIUjRsYmlQWFBHREhuM25YZnNtN3U1cFpiQWQrbmNXUmIvK3F1ZDBKdXlmY2NPZWY2RkYzU1VmNWRZMXpwVk1NNlVaT3UxL3FkMW5UUkIzY1Q5NGd0eksxRFU3LzhpbDQ5NkpFR0g2N0l5TTJYWDZMR1N2dGZjVVFoL1U4dTVZcDZkS29FY3F3UVVlbTUvd01JWnExZXZ0by9nTStuaTFxM2xqOFdMN2RteXZNeGlxMEc1U3VCanUzV3ppN3l0VzdOR2ZscTRVSHIyNkhIV0k0eHU2TnRYYnJqaEJoM2xuN3B4c05NYXZPZm1hOVdLRmNiUFdsLzExMTluL042NS9WTDdZLzJSR2d2dGZtcUtuRnF6VnZlWVU2Uk5hNms0OUg0ZCtUNjFEOXZKNVBUZjFFcXJEOTkvWDNyMzZtWFBMdWVGMmxMMTdQVHBjdis5OStiNTd6aWJxZGJmNzlTMVVhMEd1TFJqUngyWk1YL0JBdDF5bHFvUWIvSjBqOHN2dmRUMTFVMGs2SEJkNHRzelhUbmpVNEtESkhyQ0V4SWFYVkYzQUNqTWF0ZXFwVnZ3SmFabnoxVmkvY0Y3N3prNmU2U0tSN1ZxMVVyZWYvZGRlM25zeFBIajdSVWMveDZvcTVuMnA1OSsydEVCdkVvdTFIbi91ZmxTUzNWTksyZDlqek45Nzl4K3Fac2YvdWpvRHd2azhBY2Y2OGljNEhMbEpHYnlSQW53bytkeGl2V2VVYWQvbURKNjFDaTU3TExMZEpSMzZyVTdmdHc0WTZ0QURoOCtMSysrOXBxTzhrZGRnOVFOU3BOKytmVlgzWExXWHl0WEdpMHlhN3JLL1ptUW9NTlZTU3RYeWI0cDVndDZLS1g2OXBhU25meG5PUmVBL0ZHenBQQTlKaXZ6S3BkYkEvR0tGYzNkeUZWSjVnTkRoOXF6Nm1yZnV0cXZxcWhLMEcrKy9ycTkveHlGUzhxdVhiSnp4Q2dSZzBXemxJQ3dNSWw1ZnFxRWxETi9JOFl0TzNmdWxMY05IcmZZb25semUzdUxVOVFLbFJlZmYxNGlEWjFFOEpwMURWRjcwcDJnYmtvVU1WaW5aYzNhdGZaTkJhY3RNRFF6cjZpdFI4MnQxNFRiU05EaG12UkRoeVhoM3FIbXovaTBoRGVvSjlHUFBxeHVDZW9lQUlXWldtNFljdzc3Q09FZGE5ZXQweTB6cXJ0VTJWL05iTjh4Y0tDOXJIelV5SkV5ZVBCZ2U5OG5DcGRNZmJ4czVwRWp1c2Vjd0tKRkpNelBUcTZZK2U2Nzlubmdwb3daUGRyeFdpV3Fic1d0dDl5aUkyZHQyNzVkRmk1Y3FLUDhLVnEwcUhUcDBrVkh6bE5IdzZscTdrNVMrODlORm9qcjJyVnJnYXppSVVHSEs3TFMweVhob1Vja0xXR243akZIZlNCVmVYNmFCQnJlVndlZ1lLZ2pZYTYrOGtvWi8rU1Q5cEUzQ2RZQTVlamh3M0xNK2pwNjZKQnMzN0pGZnJNR0FXci8zMTEzM0dHZks5M200b3Z0R1V2NG5zVEVSTjB5STgyRllxV25VM3M5SHhzMVNwNFlNOGJZM2xSNDEvNlhYNVBrSlV0MVpGYkd3VU95OC9FbjdmM3UvdURreVpQeW5NRzk1NjFhdHBTT2h2WmgzM1AzM2NiMk1iL2w0SW9DVlRmRHBDVkxsdWlXTS9iczJTTWJOMjNTa2JPQ0FnUGwrcjU5ZGVRdUVuUzRJdkhEaitYRS9FVTZNaWNnT0VncVRaNGc0WngxRFBpZHFLZ29lZnl4eCt3cTIxOTgvcmtNZS9CQmUrbFpoUW9WN09XREVkYVhtcVdzVkttU05Mdm9Jcm5yemp2bDJXZWVzWXQvZlRGN05za1F6aWh1ODJaN0ZzWnR2QjRMcCtBeVVicmxqdU56djVORG4zK3BJOS8ydy96NWN1REFBUjA1NzVhYmJ6YjJ2cXhtalVzYm5YKytqcHlsNm5Ra0pTWHBLSC9hdFcxcmY1YWFvdjZ0VGw1dmY3Y1NmcWVXK1A5YjVjcVZwZW1GRitySVhTVG9NQzU1elZyWk4yNlNXb2VpZTh3cHFmYWRYNUgvd2g0QXZFTU5sOVN4TlN1V0xaT1JqenhpSityblFnMjQxQkozK0NiVGlleUNoUXRsbThIam1vRFRSZlhzTHBITm11cklCZGJZYTgrVEV5VE5ZR0xybGxtelp1bVc4OVFLcTY0R2wzZXJaZExYeGNicXlGbjc5dTJUcFV1ZFdaVlJxbFFwdTJxNUtXb2ZlbXBxcW83eWI5RWljNU4vM2J0M0w3QWlsU1RvTUNyanhBbEpHRHBjc2d6dUYvcGJXUDI2RXYzSWNEV2EwejBBZkozNmNMei8vdnRsMWtjZkdTM2tCZTh5ZmN5V3FnWjlkZGV1a3BDUW9Ic0Fjd0tDZzZYU0U0OUxnSXZITm1VZVBTWTdSNDF4WmFMRWxKU1VGSm56elRjNmNsNHo2enBUcGt3WkhabHhtY0hFOStOUFB0R3QvT3ZWcTVkdU9lK0VsUmNzWDc1Y1IvbW5ickNhb0c3WTlML3BKaDI1andRZHhtUmxaTWpPa2FNbE5jN2MyWVIvQ3l4V1ZHSmVtQzZCNGVHNkI0QS9HSFRublRKcDRrVEhpL2JBZDFSem9iaWZPa08zV2N1VzhzR0hIem82dXdPY1NVVHRXbEwydnJ0MTVJN2o4K2JMUVI5ZTZ2N3JiNzhaUFZxdGsrRXp3Slc2ZGV2cWx2TlU4VFZWaE0wSjZsZzRWU3ZERkxWVndRbTdkdTgydHYrOFpxMWFjbDd0MmpweUh3azZ6TWpLa3NUM1A1UmpYNW03Mi9sZmdRRlNjZXhqN0RzSC9Fem5xNjZTeVpNbUdWL2lERzlyMUtpUmJwbDE4T0JCNlgvTExkSzBlWE9aOWNrbmN2VG9VZjBJNEx4eXQvYVhzTHAxZE9TT3ZlTW1TdXFldlRyeUxWOS8vYlZ1T1U5OXhuUm8zMTVINW9TSGg4djVEUnZxeUZtN3JXVDEwS0ZET3NvZmRUUmtHNFBIa3FyejBKM1loejUzN2x6ZGNsNzMyTmdDblJnZ1FZY1J5ZXMzeUw2SlU5elpkOTZ6dTVTK3RxdU9BUGlEMHFWTHl5c3Z2MXhnKzcvZ0hlcGNZcmR1MHFoQjQ0WU5HK1Q2ZnYya2JvTUdjdS85OTh1eVpjdnM1YldBazlTS3Y4cVR4a3VBaTZkTFpCdytJZ21QakxKWE9Qb1NWUVRzeDU5KzBwSHoxUEZpNmlnMDA5UjFyR0tGQ2pweTFyRmp4K3lDbDA3cDM3Ky9iamx2MDZaTmpxeFVNcmE4UFN4TWJyNzVaaDBWREJKME9DN2orSEZKdUdld1pDV2YxRDNtaE5hcUlaVkdqMlRmT2VCSDFDRG15YkZqN2J2NFFJMGExblUrT2xwSDdsSEh1NzM4eWl2U3FrMGJhZFNraVR3d2JKaGRpTW50WTluZ3Y0clVyeWVsKy9mVGtUdVNmdmxORHMzK1FrZStRUzF0WDc5K3ZZNmNwMDcvS0ZteXBJN01LbUh3KzZ4WnMwYTM4cS85SlpkSThlTEZkZVNzbmJ0MnlmYnQyM1dVTitxbTZkSmx5M1RrckFiMTZ4ZklaODdwU05EaHJLd3MyZlg0azVLNmJZZnVNRWZ0TzYvNjh2TVNhUEE0Q0FEdVUvdjBidXpuN3FBVjNxVUd6N0hkdXVtb1lHemR0azJlZmU0NWFkMjJyZFNvVlV2NjNYU1RmRHhybGwwOUdjZ3pOYU02K0Y0SnFScWpPMXlRbVdsWGRVL1pibjZjNWhTVnpLVWF2REdtOWhxSHVyU1NvVnpac3JybHZOOFdMOWF0L0ZPbnBiUnMwVUpIenB2NzdiZTZsVGZ4Q1FuNVR2S3owKzNhYXd0ODlSNEpPaHgxY05hbmNuUzJDMFZJckRkT3hkRWpKYnhtRGQwQndCK28yZk9IaHcrMzkrb0JmN3ZuN3JzOWMxVGVYaXNwLytqamorV0dHMitVS3RXcVNZdFdyV1RNMkxHeTZNY2ZqUmF4Z24reWw3cFBlTUxWbFlDWngwOUl3cU9qZldhcHV5cUFabExWR1BkdWtKUXJWMDYzbkxkbnp4N2R5ci9Bd0VDNXllQ044dnh1V2ZqaGh4OTB5MW1oSVNGR2wvZm5GZ2s2SEhOeTR5YlpNL3BKVi9hZGw0aTlSa3BmVjdBektnQ2NWN2xTSmZ2dU5YQzY2dFdyUzQvdTNYWGtIV3JQK3ZJVksrVEo4ZVBsOGl1dmxFcldRTDlYbno3eXNaWEFxOEd5RTRXUTRQK0t0V2d1cGE3dnJTTjNKQzllSWdkbXZxY2piMU9uTEpoVXFuUnAzZkp0Y1hGeHV1V01LNjY0d3RqS2dwVXJWK2E1dG9lNnJuNWo2TWk5cGsyYkdxc1RjQzVJME9HSWpLUWtpYi83Zm5mT082OTdubFIrWWpUN3pnRS8xS2QzYjN0Sk0zQTZ0Ykppek9qUlVxeFlNZDNqUFdyUWVQTGtTWm45K2VkeXcwMDNTZjJHRGVXS3E2NlN6ejc3akpsMW5GV0Z3ZmRLa09GenVQOXQvOVJuNUpRUExIVlhOOEZNZW52R0RLbGVxNVlyWDA5UG02YS9xL01PSGpva3B4d2NoNWNvVVVMYXRtbWpJMmVwbFVqcW1MUzhVTmZUUHcyOUpxNjk1aHI3ODZhZ2thQWozN0l5TS8rejczekxOdDFqVGtCRWhGUjU1bW5PT3dmOGtGcGFOdUMyMjNRRS9GUFZxbFhsaVRGalBERjR5bzBUU1VteWNORWk2WDM5OVZLdlFRTzd5TnlPSFR1WVZjY1poWlF1TFpXZWZGeXRMZFk5NW1VbUpjdk9oMGRLVm5xNjd2RWVWWlRSeWFYYlo2SVN2cDA3ZDdyeXBhcXRtNkxPUVZjM0NaMmlyclU5ZS9UUWtiUFU3MVVWM2N5THpaczN5NEVEQjNUa0hQWHozbUJkcjcyQUJCMzVkdmlMcitUb3A1L3J5Q0RyalZQeHNSRVNjWjc1b3pBQXVLOSsvZnAyRWdaazU0NkJBK1hxcTY3U2tlL1l0MysvWFdTdVZwMDYwdmVHRzJURlgzL3BSNEQvVjZKamV5bldxWU9PM0pHODlFODU4UDZIT3ZJZXRRejZGTWNjNWs1V2x1T25USmljVWY1cXpoemRPamZ6RE8wL3Y3aDFhNm5nZ2VYdENnazY4a1h0Tzk4OVlwUjlVVEN0ZUxldUV0VzdwNDRBK0p0T25UcHg3amx5RkJ3Y0xEUGVla3N1YU5KRTkvaWVUei83ekM0c3B4SjFkUjR3OExjQTYvcFhlZXhvQ1NybHpwRmZmOXMvYWFxYzNPVHMvbVducVBPeTg3cFh1YkRKeU14MGZJYStUSmt5Y3ZsbGwrbklXVXYrK0VNeThsQ284THZ2djljdFovWHQwMGUzQ2g0Sk92SWwvdDRoa3BXU3FpTnpRdXZVdGo2MEhyTm4wUUg0cCtzOTlPRUk3MUw3SXIvKzZpdHAwcml4N3ZFOWFwbjdKNTkrS2syYk43Y3J3Q2NuSit0SFVOaUZsQ3NyRlI1OVdFZnV5RHg1VWhJZWZGZ3lyV1RZYTFUQ2VmVG9VUjJoSVBUcDFVdTNuTFZ2NzE1NzJmKzVPSGp3b1B5NWZMbU9uQk1SRWVHcEFyVWs2TWlYTkpmT080OTVkcW9FRlMycWV3RDRtMHJSMFZLdlhqMGRBVGtyVzdhc3pQdnVPN244MGt0MWoyOVNCWjFVQmZpTDI3YTE5MVVDU3RRMTEwalJEdTEwNUk1VGE5ZkovbGRmMTVGM3FKdFoxRzBvV0IwN2RwU1FrQkFkT2Vla2RmMDcxKzArYTlhdWRYU2YvZC9hWEh5eDBTUHd6aFVKT2p5di9NTVBzdThjOEhOTm1qUXhNZ0NBL3lwWnNxUjg5dW1uTXVUKysrMHplMzJaR25TMnZlUVNtZnZ0dDdvSGhWcGdnRVNQR2lrQkxwLzlmK0RGVnlYWlN0UzlKTjFIem1yM1o5SFIwWEp4cTFZNmN0YlhYMyt0VzdtemFORWlJemRzYmpSNDVudGVrS0REODlKVTlVN3VuZ0orclJyRjRaQUhZVllDTSttcHAyVFdSeDlKbGNxVmRhOXZTang0VUhyMDZpWHZ2ZisrN2tGaEZsNDFSc29QRytMcTFyNnNsQlRaT2ZJeHlYSzQwRmgrc1AzREcvcjI3YXRiempyWDVlcno1OC9YTGVlb2JWT205dG5uRlFrNlBPL2dxMi9Lc1o5LzBSRUFBUDkwVGRldXN1cXZ2K3paZERYWThsV3FJTmFBZ1FObDFpZWY2QjRVWm1WdTZDdmhEZHpkK25OcTlWclorOEpMT2lwNHhkamVtR3RxSlZGa1pLU09uTldoZlh2N2hxalQxT3FoL2Z2MzZ5aG5pWW1Kc3ZUUFAzWGtISFhXZTFSVWxJNjhnUVFkK1JMWm9wbHVtWk9WbWlZN0h4d2hxYnZObm9NSkFQQmRSYTJCdkpwTi84c2F3UFh1MWN2WVFOVzA5UFIwdWYyT08yVDVpaFc2QjRWVllHaW9WSmswUVFMQzNWM3Fudmo2MjVLMGFyV09DcGFwSTc3OGtYcW0xRWtYSnFnalVCczJhS0FqNTZqbDZyOHRYcXlqbkMzKy9YZjcrdWkwL2pmZHBGdmVRWUtPZktreTlTa0pLbVArcmxQR2dVU0pIL3lBSnl1TUFnQzhvM0xseWpKenhneFp1WHk1M0h2UFBSSlZ1clIreEhja0pTVkovNXR2Wm5rdjdCbzhaVzYvVFVmdXlGSlYzWWMvWWxkM0wyaXFOZ24xU1hJbndPQU11cHFkdjdsL2Z4MDU2N2ZmZnRPdG5QMzAwMCs2NVp6eTVjckpwWjA2NmNnN1NOQ1JMeUhXQzd2S00xTWtJTVRNSGJ2VG5WeTZYUFk5KzRLT0FBQTRNelhyVnExYU5aazZaWXBzMnJCQjNucmpEV25Wc3FWUHpjWnQyTGhSSmt5Y3FDTVVXdFpydHZ5ZHQwdG9yWnE2d3gycGNadGw3NHN2NjZqZ3FJU3pTSkVpT2tKT1ZCSWRHaHFxSStkMXZ2cHFDVFB3OTZ1Wjhkd1VmdnMxbDRuOHVWRFYyOVhxSzY4aFFVZStGV3ZkU3FLc0R3ODNKTDc4dWh6NzFmazNLQURBUHhVdlhsejYzWENEL0xSb2tXeGN0MDRtakJ0bkQ4cE1ERFNkOXRJcnI4aStmZnQwaE1JcU1EeGNLazk0VWlRb1NQZTRRNDI1VGhnNGMvcGNxSDNQNFM1WHMvZFY1Y3FXTlpxZ3EycnVqUnMzMXBGelZxMWFaUjg1bVJONy8vbXlaVHB5VHUvZXZYWExXd0t5REI0dW1KV2VMcHU2eEVycXhqamRrNzJvUVFNbGV0aFFIZjJUV3RhOG9WVjd5VGgwU1BlY1dZTzF5eVhRUi9lY21aVDQ1Z3paODhRRUhUbXJZZHdhQ1FnT3RuL1gyMjY5UTVKKy9sVS9ZazV3dWJKUzY2dlBKTVQ2czdBNk1uK0JKQXdZcEtNeks5RWpWbUltbi9uM25wV1JJWEdkWXlWbDR5YmRrNzJTM2JwS2xXbVRkZVIvVHNYSFM5eGxuZTNYc0VtQlJZcEluUVhmU1lnTFcwSk11SC9JRUhueEpYT0ZnKzYrNnk2WlBtMmFqcnhOZld3MmF0TEVudUUwNWR0dnZwRk9IVHZxeUJsTm16V1RWYXZON1N0OTUrMjNwVytmUGpyeU52VTdQSGJzbUh3emQ2NHN0QkozdGNSeXk5YXRSdlkzNXRld0J4NlE4ZVBHNmNoWmF0QmJ0VVlOdXppZEtYdDM3ZkpjQWFaL1c5ZXluYVFmT0tBamM2SW5qWmN5M1dOMWRPNTJUWGhLRHI3K3RvN2NFVkkxUnM2Yk0xdUNDbWg4cmQ2VGRSczBrQjA3ZHVnZTU2blZOdTNhdHRXUjd6cXZkbTE1YVBod0habngwc3N2eTMyREIrdklPUXQvK0VIYXRHbWpvLy8xeWFlZlN0OGJidENSTTlTNTUxczJiWkx3OEhEZDR4MGs2SVdBR3dtNmtuYndvTVJkM1UweTlwdi9rSXRzM1ZKcXZQMmFCQlRTZlVrazZNNGhRYzhkRXZUL1I0SitacjZVb1ArYlNnTFVUTFZLMk5XWG1xbFJsWVVORHBGeVRjMWFxWmwvRTROSUV2VC84SlVFUGVQNGNkbDQ5YldTN25MUjNOTDkra3JseDBmWnkrMEx3aVVkT3VTNmtGaGVYSFhsbGZMbDU1L3JDRGxSMThWcU5XdEttc05IOFkxNDZDRVpPMmFNanY3WGdOdHZseGt6WitySUdYMTY5N2JybFhnUlM5emhtQkRyQTdqeWxJbXVMTUZLWHJ4RTlyN3dzaG9wNng0QUFQSkdWVDZ1VkttUzNENWdnTXorOUZQWnNIYXQvUHpqajNMWEhYZEkxWmdZWTVXUmMyUHYzcjJ5Y3RVcUhhRXdDeXBXVENvOWFTVXhnZTRPM3c5L09FdU8vMWx3UzkyYlhYU1JicG14ZXMwYXljakkwQkZ5VXJac1dXblpvb1dPbkpQVFBuUjFBM0h4a2lVNmNrNlA3dDExeTN0STBPR280bTB2bGpKM3ViQWYzWG9USDN6eFZUbit4MUxkQVFDQU0xVFJvQmJObTh1enp6d2o2NjFrL2FlRkMyWFFYWGNWU0VYNHpNeE0rZnJycjNXRXdrNk5zMHBjMDFsSDdsQXJ6SFlPZjBReWtncm1WSUhhdFd2cmxoa25UcHl3dDd6ZzdGU2h6V3U2ZHRXUmM5U0t0SlNVRkIzOTA1NDllMlRMbGkwNmNrYjU4dVh0bFJOZVJZSU94NVcvWjVCRU5EZDd0MVBKU2t1VG5mYzlJR2t1TEtrSEFCUk82b2luWnMyYXlUUFRwc25Xelp2bHBSZGVrTnExYXVsSDNiSGtqejkwQzRXZE9rb3IrdUZoRWhUbDdzMml0QjN4c252aTVBSlp1ZGpDd0l6dDZWUnl2aW51N050eDhSL1hYbnV0NHlkaXFKVkMyN2R2MTlFL3FUb2hUcTl3Nk5LNXM5R0NldmxGZ2c3SEJZYUZTc3d6VXlTb2JCbmRZMDY2bFp3bkRIdFlzdEpabWdRQU1Fc2QrVFRndHR0azVZb1Y4dVRZc1JJUkVhRWZNVXZ0aVdjSkx2NFdVcmFzUkk4ZTZmcFM5eU1mZnlMSGZqTzNGenc3MWF0Vk0zclVtbHFsOHNNUFArZ0laNk4rSDgyYk5kT1JjK1prczFMSTZSVkU2amk2M2oxNzZzaWJTTkJoUkdpRkNsTDU2WW4vTFNCblV0SlB2OHErNTEvVUVRQUFacWxaZFZVdCtmTlBQNVVpTGhTblZVWHNmSFVKcmhjcjQvdURrbGRlSWNVdWRiYVE1Tm5ZUzkySGpaRDB3NGQxanp2VWxwUDY5ZXJweUF5VkhIcWhLS1N2TUZFUTlFeUZBSk9Ta2h6ZmYxN1J5bEZhdDI2dEkyOGlRWWN4eGR0Y0xLWHZ1RTFIWmlXcS9laS9zd1FRQU9DZURoMDZ5UEJodzNSa2pwcmhVL3RrbmFhSzN6bTlWUFhmMk50clJrQlFrRlI2L0ZFSkxGRmM5N2dqZmQ5KzJUVitrcXRMM1lPc24vWFNUcDEwWk1aZksxZkt0bTNiZElTenVlTHl5eDB2bnJsOHhZci9PUTlkSFgrcEtzYzdxVnUzYnZiNStsNUdnZzV6ckEvOWl2ZmZJeEV0blY4RzgyLzJmdlFISG5MOXJpNEFtS0FTTWllcG1TR25qOFhCZndvbTNYYmJiY2FYdXF2ZjM3OEhyazVRZzFUVENickpJOXdLdTlEeTVhWDhnME4wNUo2am4zOHBSeGY5cUNOM1hISEZGYnBsaGxycDhaWkhqOXp5b2hvMWFrakRCZzEwNUF4MTFPV3UzYnQxOUIrTEZ5OTJkR1dEdXRuVHorSHoxRTBnUVlkUjZwenlLcE1uU2xDcGtyckhISFV1YU1KREk0MmZadzBBcGgwL2ZseTNuUEhKcDUvSytnMGJkQVFubFM1Vnl0NlQ2WXRNSitmS1pvZXJMK09meXZUcUtSRk5MOUNSU3pJelpkZGpZeVg5NkZIZFlaNDZWVUVkOFdYU2pIZmVzWmRVNCt6VVB1NGIrL1hUa1RQVVRaTGZmdnROUi84eFo4NGMzWEpHMWFwVnBkSDU1K3ZJdTBqUVlWeFk1VXBTYWVwVDluSXMwMDdNV3lENzMzaGJSd0RnbTV4YzBoY2ZIeS8zRFI2c0kvOXk4T0JCT1hDZ1lFL3lVQU5WdFNmZE5EWHo0N1R3OEhBSk5KeWtxMldyTUNjZ09FZ3FqMzlDQWlMQ2RZODcxS1RJemtkSDI4bTZHOVJ5Nmw2R0MzdXA0N3pHUHZHRWpncWUweXVwbkthT0tYTzZFdnJjYjcvVnJmL2NxUDdsWHdsN2ZsMTd6VFdlcnQ3K054SjB1S0xFSmUyazFLMDM2Y2lzQTFPbXkvSEZ6aGFVQUFBM3JYQW9xVkg3Zi92ZGVLTWtKaWJxSHYraGt2T3UxMTRyelZxMHNDc3dGK1JnMXZSdVhKV2NGeTl1WnE5eDQ4YU5kY3NNTlNORzhTMnpJbXJWbEhMM0RySzNGcnJwMkxmZnk1SDVDM1JrbnFxOGJYclZ4NnV2dlNacjE2M1RVY0ZRMjVIZWZmZGR1ZW5tbXoxZFpMRmF0V3BTdlhwMUhUbERGWXI3KzJkZXRXcVZveXNhMU0zVVcvcjMxNUcza2FEREhkWUZ0ZUtRK3lTOFNTUGRZYzUvcW93K0xPbUhqK2dlQUhDT0dpQ1dLbFZLUjJhb1k3WHltOVNrcEtUSUxiZmU2bmdGWEM5UU15dlh4c2JhejVQYXM5akZTdFQ3MzNLTDdQN1gva1UzcUwzaHBtK0FoQVFIUzRrU0pYVGtyTXFWS3VtV0djdisvTk0rNHhobWxlMS9vNFRWcTZNamwyUm15YTZSb3lYTnBWVXN6WnMzTjE3Ti9ZU1ZFS3FibWtkZFhMNy9OM1hOWDdseXBWeDYrZVZ5eTRBQjh2R3NXZkxzYzg5NTlnYVhXam5VNy9ycmRlUU1kZU4xMTY1ZGRsc2w2MDcrN09mVnJpMjFyUzlmUUlJTzF3UkdSRWpNYzFNbDBOQXN3T25TZCszNXovbm9IbDhlQk1BM21TNEt0bnJOR2xtN2RxMk96dDNKa3lmbFppczUvOUxoL1h0ZW9LcVo5KzdiVjViODhmOG5kNmd6d2ovODZDTnBmT0dGOHRTa1NVWXFubWZucDU5L05uNWpvRW1USnNhVzBWY3luS0NyMzhYalk4YmtlYUROTVcyNUV4Z2VMbFVtUEduWC9uRlR4c0ZEc3ZPeHNTcTcxRDNtcUpVa1ExellyclBHdXZiMjZ0UEg4Vm9nT1ZGSjZXMjMzeTR0TDc3NHY4ZU5xZmZNcU5HalpmNzgrWGJzUmRmRnhqcTYvVWJkOEZRMzlSU256NmJ2MHFXTDQ1WG5UU0ZCaDZ2Q0tsZVdTbE1tNk1pc0UvTVh5WUYzM3RNUkFEakgxR3ptNmNaUG5KaW5wRVlOOUdLN2Q3Y0x3L2tiTldEdWU4TU5NaStiZ2R1UkkwZmswY2Nla3pyMTY4dTA2ZE9OejJ5ci9lK0RoNWl2b24zaGhSZnFsdk5hdDJxbFcrYk1mTzg5ZWVPTk44N3A5YnhwMHlZWlBIU290R3Zmbmtyd3VSVFpvTDVFM2VMT2RzTFRIWjgzWHc1OThaV096RklKWWFYb2FCMlpzMkRoUW1uVHJwMnNXNzllOTVpeGRkczJHVFo4dU5ScjBFQm12dnZ1Lzl5UVVxOTl0VHBvKy9idHVzZGIxQkwzZW5YcjZzZ1ozOCtiWjIvUCt2SG5uM1dQTTI2em5rZGZRWUlPMTVXOHJKTkUzVGxBUjJidG56UlZrbGF0MWhFQU9NUHA0MlhPUkNYWUw3MzhjcTZUR2pYejhONzc3OHRGelp2TC9BWHU3UXQxaTFxeVAyRGdRUG4ydSs5MFQvWlVrYjNoRHo4c05Xdlh0Z3ZrTFYyNjFQRmo1clpaQStiT1hidmFBMnlUMUw1Sms4V3hhdFdxWlg4UGs5UnpmODk5OTltSnh1clZxOCtZY0t2WDcwWXJLWC9ublhma3lxdXZsa1lYWENBdnZQaWl2WTFCSlM3SWhZQUFxWEQvUFJKYXZhcnVjSWwxamRvejdpbEpkV0VyUTdGaXhlVFJrU04xWkpaS3psdTJibTJ2eWpuczRERythb1dUbWhWWEs0SHFOMndvMDU5OVZrN21jSXppL2dNSDVOcnJybk4xWlZCdXFaVTl2WHYxMHBFelZOMEtkYzEyc3E3SUJkYjFSQjBONXl0STBGRWdLZ3krVDhJYW1OMUhwR1JaRjhHRSt4N2dmSFFBamxMRmNVeFRpZm5RQng2UUlVT0gyck1uYWhuM3Y2aytkWGFzS2lqVXRGa3p1ZVcyMnlUeDRFSDlxUDlReVp2NjJUNmJQVnYzNUU2eTlSbWdibkswYmQ5ZTZqWm9JSTg5L3Jnc3N4SStOVHVUbDlVSmFzQ29LajFQZk9vcGFYTGhoYkxpcjcvMEkrWlVybHhaenJjRzhhYW9HYkNTSmMwZmhacGhQWGNmZlBpaE5HL1ZTaXJGeE5oSnVOcUcwY2RLVWxwZGZMRlVybHBWTHJDZTA5c0dEclJ2TUozK2VsZS9ON1UzRldlbmxycFhHamRXclFmWFBlN0lPSFJJZG80Y0xWa1o1cmNXWG4vOTlVYmZFNmRUeWJSYWxWTzNmbjE1Y1Bod1diNTgrVGtueXVxMXJGYnpxTzB3YWxWSW5YcjE1S291WGV6cjJabXU2MmV5YnQwNnVlT3V1enhaMlYwbDZFN2U1TnV3Y2FOODl2bm5lYnBHWjBkVmJ6ZDlJOUpKQWRZUDc5eFAveStxV05lbUxyR1N1akZPOTJRdmF0QkFpUjQyVkVmL2xKbWFLaHRhdGJmZi9EbHBzSGE1QkVaRzZnaC9TM3h6aHV4NXdzeXk4b1p4YXlRZ2ovczVUbTNiTGx1NlhpZVpTY202eDV5aVYxNG0xWjZmN3NwUmIyNVFWVk1UQmd6UzBabVY2QkVyTVpQUC9IdlBzajRRNGpySFNzckdUYm9uZXlXN2RaVXEweWJyeVArY2lvK1h1TXM2R3o4L1A3QklFYW16NERzSktST2xlM3pML1VPR3lJc3Z2YVFqNTkxdERUeW1UNXVtSSsvN2ErVkthZDZ5cGFNRGlKeW80N0JxV0ltVU9ndjQ3MlJLTGVmK2Zja1MyYmxybDZ0N0piUHp6dHR2Uzk4K2ZYVGtIRFZ6cmhJNXA1YnNxeUovWmFLaTdKc3NIVHQwa1BQUFA5OHVQRlc2ZEdtN1VycmFUNm0rMU1CWmZhbVpNMVdJN3BkZmZwSHZ2djllL3N6REFEMC9IbjNrRVJsdEpRZ21YZHV0bTN4ejJ2RkdYalQ0dnZ0azhxUkpPbkxXdXBidEpOMkZRbWZSazhaTG1lNnhPakxJdWk0bFBEWkdEci8va2U1d2lmWGVxdlRVT0lseTRXZjgyWG8vcW1KcUJaR3dsaTlmM2k0NDFySkZDNmxRc2FKOWJWYlhqckRRVUVtM3JobHFtYnE2cWFxS0k4YkZ4Y212aXhmTGdmMzc1ZWl4WS9wdnlMdW5Ka3lRb1M1c3F6a1g2bmZRdWswYis5cm9sTCt2d1U1UTEveTFxMWI1VElFNGhSbDBGSmp3NnRVazJycVFpd3QzdEU1OE8wOE96SmlwSXdESUh6VTRpN0NTWnJlb0dXUzEzUEt0R1ROazJqUFAyRitxdlg3REJrOGs1NmFvZ2E3YTQrM2tmbnAxVStWQVlxSzlkUHFweVpPbDMwMDN5WVhObWttMW1qV2xkTm15VXJWR0RYdlphWXlWd0t1NDVubm4yZnVnSDNuMFVmbnhwNTljVGM3VlRZTjc3N2xIUitiME1YQmp4V2t2dmZLS2JMS1NIZVNDV3VvKytGNEpLbGRXZDdqRWVtL3RuVGhaVXZmdDB4M21YTnk2ZFlFZG1hVldMYWtiQkpPZmZsb2VlUEJCdStaSHA4c3VremFYWENMdE8zYTBieHlvN1RocTVuM0d6Sm15ZWZObVI1SnpaZlRqajl2NzQ3MUV6VXgzNjlaTlI4NXdLamxYTG1qU3hLZVNjNFVFSFFXcTFGVlhTS20renU1ZHljNyt5ZE1sZVczQm5tMEp3RDlFUmtaS2h3NGRkQVFUVkhKKy8rREI4dnFiYitvZWQ2aVZDZkVKQ1k0TnFQTmowSjEzMmttNmFaZDI2aVRGaXhYVGtUZXBsUlFQUGZ5d2E2dFdmRjFJVkpSVUdqUEtsVW1RMDJVY09pd0p3eDh4dnlyTitybWVuakxGOFFKbFhuZktlaC9jMUwrLzdOaXhRL2Q0dzVXWFgyN1BWSHZSRFE0ZkJlY0dFblFVTE9zQ0d6MXFoSVNmYjc3Z1V0YXBVNUp3NzFESk9PNjlJaHNBZkUvUEhqMTBDMDVUU3lZZkhEWk1YbjM5ZGQxVCtEU29YMThlZnVnaEhabFZwa3dadWV5eXkzVGtYVjkvODQwcyt2RkhIZUZzU2x6YVNZcGQza2xIN2tuNmRiRWNuR1grRklraVJZckl6Qmt6N01KeGhjbSsvZnZ0V1hzdnJaNXExS2lSSjR1d2hZYUdTdGV1WFhYa08walFVZUFDdzhJazVvVm5KTEJZVWQxalR1cTI3Wkx3MEVoN0R6WUE1SWVhZFZRRFJEaExMVzE4Y3R3NGVmSGxsM1ZQNGFNR2xhOWFQMytZOWZub0JqWHo5Y2pERHp0Nm5yRUphdlo4K0VNUGNleGFMZ1VFQmtybHNhTWxLTXI4S294L3NINVBlOFpQa2xNNzRuV0hPWTBiTjVZM1gzL2RmczhVSnF2WHJKRkI5OXpqNkZMdy9GQXJHa3pVSU1tdnBoZGVLTldxdW55cWdRTkkwT0VKWVZVcVMvU1RqOXN6NnFZZC8yNmVIUHp3WXgwQlFONm9Ra0d4RHUrN015MHFLa291YWRkT1I5NmpFckJKa3lmTHVBa1RDdTFTWnBVa1B6TnRtalJ2M2x6M3VFTVZ5K3ZhcFl1T3ZFc1ZhSHhuSmpWbGNrc3RkYS93MElQMnZuUTNaU1VueTg3aEl5VExoU0p1cWtMMytDZWY5T3dTYTFNKy9PZ2ptZkwwMHpvcWVGMDdkN1lUZFMvcGYrT05Qdm02SUVHSFo1VHEybGxLOXJwT1J3WlpIeFo3eDArUzVIWHJkUWNBNU0yd0J4N3dtWmtiOWU5ODdlV1g3VXJ3WHFVR1VsMnNRVjZ0bWpWMVQrR2lCcmNQRHg4dXQ5MTZxKzV4ajNydXh6Nyt1R3V6OXZueHhMaHhkcTBBNUU1VTdMVlNwTzNGT25KUDhyTGxjdUN0R1RveVI3MTJWVEhGeHcyZmR1QkZVNmRQOTh3UmhPb21YNlhvYUIwVnZLSkZpOHBWVjEybEk5OUNnZzd2c0M2dzBTTkhTRmdkODVVV3M1SlBTdnhkOTBtR0gxYy9CbUJldlhyMTdEdjB2a0FOWHRWZXZKaVlHTjNqVFdxUTkvdml4ZmJadW9WcFJpdzRPRmhHUFBTUVBEWnFWSUg5M09yMXJJNTE4L3J6dm52M2Joay9jYUtPY0ZhQmdWSnA5RWdKaUlqUUhlN1ovK3lMa2hKdmZxbTd1cmsxNHVHSDVaV1hYcExJQXZnNUM0SmF2cjF3L254N1paUVhoSVNFeUkzOSt1bW80RjNVdEtsVXJGaFJSNzZGQkIyZUVsUzBpTVM4K0t3RUZqZGY4Q010UGtGMmpoeHQ3NVVDZ0x4UWljeVRUendoVlNwWDFqM2VvLzZOSTBlTWtBY2ZlTUNPNjV4M252Mm5seFVyV3RRdS92VEJ1KzlLeFFvVmRLLy9VdWZjUHp0OXVuM2VlVUV2RVgxZzZGRHAwTDY5anJ6clJTc1IyN2h4bzQ1d051SFZxa241WVVQc3lSQTNaWjQ0SWZGRGgwdW1DM1VEMUxYdTFsdHVrZG1mZlNabHk3cDh4SnlMU3BRb0lVK09IU3MvTFZvazlldlYwNzNlY0Yxc3JHZHFXVnpmdDYvbmJ6Wm1od1FkbmhOZW83cFVmTUpLbkYwWXBCeWJNMWNTUC9oSVJ3Qnc3dFF4V0srLytxb25sN3FyV1ZrMUkzcjZyR3k1Y3VYc1A3MU8vWHU3ZCs4dWZ5NWRLamYxNitjVFM2L3pvbXJWcXZMTm5EbHkrNEFCbmhoTXFsbXc5MmJPbEVibm42OTd2TWsrZG0zRWlFSmJxeUF2eXZUcExlRU42K3ZJUFNmL1dpVUgzbnBIUitaMTdOQkJmdi8xVi91c2RGOU4wTTVFSmI2WFhYcXAvUG5ISC9MUThPR2UvTXhScTNDOE1HdXRLdnVyMmdTK2lnUWRubFNxeTlWU3NxY0wrOUd0RC9aOTQ1NlNrM0diZFFjQW5MdU9IVHZLMUNsVENuejI4M1JxbWVjTHp6NHJqNDRjK1k5L1Y2bFNwWHhxMEtwbXdsNS83VFg1K2NjZnBYV3JWcDU2anZOREpjSzM5Tzh2UzM3N1RkcTJhYU43dlVFZHUvYkY3Tm1lVDlMVnNXdno1czNURWM0bU1DeFVxancxWGdMY3Z0bGxqYlVPUFArU3EyTXR0WlhudTdselpkd1RUOWg3a1gyWnVsNDNhTkJBdnZqc001bno1WmYyVFQydlVqY05lbmJ2cnFPQ282NnA2clBPVjVHZ3c1UFUwU0RxZlBTd3V1YVhZbWFxL2VpRDdwZU1wR1RkQXdEbmJ1RHR0OXVWaEwyUVFLb2w5M08rK2twdXZmWFcvL24zcUprRlZZSGVsNmdCNmdWTm1zaUNIMzZRTDYzRVVTWHF2a3p0amZ6ZVNoNWVlZmxseit3Zi9iZksxbXRJSlRocU50S0wxR3RDblVoUXljUGJTN3dvNHJ6YVVtYWcrMFVJTTVPVEpXSFl3NUtabHFaN3pGT3Jib1k5K0tEOHNYaXhkTHZtR3ArY1RhOWJwNDY4L2NZYjlvMjhLNjY0d2lkdVVIcmh1RFZmcjJGQ2dnN1BDaXBTUktwTW15eUJMcHd6bkxwNWkreDZiSXhkNFIwQThrSU5CdFQrM2JkZWY5M2VRMTBRMUwraDMvWFgyOHZDczV1VlZUTWNCZlh2eXkrMXhGTU5VaGN0V0NBTDVzMlRYajE3K3N4WjlPcDNveEx6OTk5OVYzNzkrV2RwWS8xK3ZENkFWRFBwYXNaT0ZhOEw5OUFXQTFVYzY0UDMzcFB2di8xV0d0UjNmOG0yVDdOZWMrWHZ1bFBDckVUZGJhZFdyNVY5ejcyb0kvZlVybDFiWm4zOHNmeTRjS0ZjY2ZubG5qL3ZYMUhMOHo5OC8zMVo4ZWVmY3IxMVRmZWxMVDVxbVh2MTZ0VjE1TDdpeFl2N3hKR1JPU0ZCaDZkRjFLMGpGY2VPc2w2cDVsK3FSei8vU2c3Ty9rSkhBSkEzYWpDMWRNa1NWODhiVjN2TjI3VnRLejh2V2lSdnZ2Rkdqa3Y3MU5KcU5ZdnV5MVJpMjliNmVkVmU2YTF4Y2ZMVXhJbHk0UVVYMk0rRDE2aUNUajJ1dTA1K1hMREFUc3g3OXVqaFU4djAxZXRsN0pneHNtVHhZdW5Vc1dPQlBjZXFrSjc2L3A5OThvbjlQSGEzbmxOLzJlN2dOclhVdmRLNE1lckNvWHZjay9qcUc1Szh2bUNPdVczVnNxVjg5Y1VYc2x6WHRTampzZFVyYXUrMk9tTHhMeXNwVjZ1RjFHdmNpOWUwczFIdjFkaHUzWFRrUG5XZDhQblB1Q3lEMVRXeTB0TmxVNWRZU2QwWXAzdXlGelZvb0VRUEc2cWpmMUtWSHplMGFpOFpodzdwbmpOcnNIYTVCRVpHNmdoL1MzeHpodXg1WW9LT25OVXdibzBFR0w1NFpHVm1Tc0tJUitYb3g1L3BIbk1DcklGSXphOCtrWWc2ZFhTUE54Mlp2MEFTQmd6UzBabVY2QkVyTVpQUC9IdlB5c2lRdU02eGtySnhrKzdKWHNsdVhlMlZEUDRxN2NBQjJUVnVvdldjbUYwOVlRK0lIbnRVZ2wwNG9jQ0VHZSs4SS9Pc0FZTXBsM2JxSkRmMzc2OGovNUJodmMrK21qTkh4b3dkSytzM2JMQmpweFd4UHZOVW92ckl3dzlMOCtiTmN6MHpwQ3BnLzJZbFhFNGFkT2VkMHJwMWF4MjVUejIvTytMajVRdHJBUDY1OWJWMjNUbzVldlNvZnRROTZ1WkJ5WklscGRsRkY5bUplVGRyb09yTGV5RlBsMmw5SHE5WXNjSSs0bXpCd29WeTRzUUovWWdaYXRhd1JvMGE5cDdXL2pmZFpDKzdONUdVSjR3Y0xlbkhqdW5JbktqciswanhWaTEwVlBEMnYvbTJKSzFZcVNQM2hKOVhXeXJlYzVjOW0xK1ExUFZoN3R5NU1tUG1UUGx6K1hJNWZQaXdmc1FkNm5xdGlveDJ1T1FTT3pGdjJiS2xSUHBKSHFNKzg4YU5INitqLzNVeU9WbSt0cDU3RTUrTDZzYXRXbDNseTBqUUN3RmZUOUNWRE91RGMvTjF2U1YxeXpiZFkwNVk3VnBTNjh0UEpEQThYUGQ0RHdrNjREdlMwdExrajZWTDVaVlhYcEc1MzM0cng2MmtKcStEa2tCclFLdG1ORlV5cmdZZ25hKysyazVhdkw1VTJtMXFhSFB3NEVGWnZYcTFmUHZkZC9iZ2U4a2ZmMGk2TlM1UlgwNVNNMXhxb0swUzhoYlc3K1ZxNjNlaWlxdXBKTjJmcWJQSXY3RUcyTE0rK2NSK2JrK2VQR2tuOFBtaFh0dHF4VUZySzFGUlMxVGJ0V3RuRjhUeWhTWEo4RzFIamh5eHJ4T3E4T0RpeFl0bDlabzE5clhDeVFSU1hTdlVsaHgxcmJqOHNzdWtmZnYyOWg3emlFSnlidnZwUHBzOVczcjM3YXNqNTZqbmQxZDh2TTlzZmNvT0NYb2g0QThKdXBLOGJyMXM3WG1EWkNXYkwrWldzbmNQcVRMaGlRSy91NXNkRW5UQU41MDZkVXJXV0FNL2xiRC8vdnZ2RXArUUlJbFdJaGx2RFNoVWduTTZ0ZiszZkxseWRoRXhWZlN0V2JObTByQmhRMm5jcUpIZkozOG1wRnBqaVowN2Q4cWF0V3Z0UHpmRnhjbldyVnZ0Z2JtYVNVdEtTckpuNE05RS9RNmlTcGUybjNlMXY3R2FsVFRXcTF0WHFzVEUyTCtUeXBVcUZjcEI5dC9VYzdmV2VsNVhybG9sNjlldnQyZlAxR3lrZWw2M2JOa2kveDVvVm9xT3RtY08xWmM2NS82Q0N5NlFtalZyU2lQcnRSMVRwUW9KT1FxY1doMnliZHMyZXlXT3VsNm9tMURIamgyenY5UTFZL2VlUFpKOGh2R29TZ3lqSzFhMGJ6U3A2NFc2Z2FwdTJLbXE4dWRiMTRvcTF1dGIzWWdxek5SblhZdldyZTFyaGRQNjNYQ0R2UFhHR3pyeVhTVG9oWUMvSk9pS09yTjh6eU9qZFdSV3BXY21TK2xydXVySVcwalFBZjl4dG85aFpzZk55KzFRaU4vRnVjbnBlZVc1aEsvS3pmV0MxM2YyWG52OWRSbDB6ejA2Y282NnNmZkRkOS9aQlRoOUhRbDZJWEJrOWhkeTRPWFhkZVNzV2w5L2JpWG9MdDdwdGw2dXU2YzlLeW1ienY2YXlxL0FZc1drOHBoUkV1VEIxeFFKT2dBQUFIekp2bjM3cFBFRkY4akJzK1IwZWFHMkMveTFmTGxmck1BaFFRZDhFQWs2QUFBQWZJVktPVys1OVZaNTc0TVBkSTl6MUlxRjExNTV4UzRtNlE4NG53SUFBQUFBWU16N1ZtSnVJamxYeXBVcko5ZkZ4dXJJOTVHZ0F3QUFBQUNNK1BYWFg0M3NPLy9iblFNSCt2elo1NmNqUVFjQUFBQUFPRzdWNnRYU3EwK2ZNMWE5ZDBMRmloWGx2bnZ2MVpGL0lFRUhBQUFBQURocS9vSUZjdmtWVjhqK0F3ZDBqL09HUC9pZ2ZmeWxQeUZCQndBQUFBQTRJaTB0VFo1LzRRVzVOamJXU01YMnY5V3RXMWNHM242N2p2d0hDVG9BQUFBQUlGOVVwZmIxNjlmTDFWMjZ5SkFISHBDVWxCVDlpUE5VNWZZcGt5WkphR2lvN3ZFZkpPZ0FBQUFBZ0R6YnNHR0QzRGxva0Z6WXJKa3MrdkZIM1d0T3J4NDk1SXJMTDllUmZ5RkJCd0FBQUFDY2swT0hEc25zenorWHpsMjZTS01MTHBBMzMzcEwwdFBUOWFQbVJGZXNLTTlNbjY0ai8wT0NEZ0FBQUFESVVWSlNrcXhidDA3ZWV2dHRpYjN1T3FsZXE1WmRvZjM3SDM2d2w3ZTdJVHc4WEQ1NDd6Mkppb3JTUGY2SEJCMEFBQUFBSUptWm1YTHExQ2w3ZG56RHhvM3kxWnc1TXVxeHgrVHlLNitVV25YcTJFdllCOTU1cDh6NTVodGpSNmRsSnpBd1VCNTc5RkZwM2JxMTd2RlBKT2dBQUFBQVVNaWRPSEZDV3JkcEk0MmFOSkVhdFd2TCtZMGJ5M1U5ZXNqRVNaTms0YUpGa3BpWUtCa1pHZnEvZGwrZlhyMWs2SkFoT3ZKZkpPZ0FBQUFBVU1nVktWSkVkdTdhSmR1MmI3ZVhzM3RKMnpadDVPV1hYcEtnb0NEZDQ3OUkwQUVBQUFDZ2tGTkhsN1Z1MVVwSDN0SDB3Z3ZsMDFtekpDSWlRdmY0TnhKMEFBQUFBSURVT2U4ODNmS0dpMXUzbHJuZmZDT2xTcFhTUGY2UEJCMEFBQUFBSU0yYU5kT3RncVZtODYvcDBrVytuak5IU3BVc3FYc0xCeEowQUFBQUFJQlVxVnhadHdxT1NzNkgzSCsvZlBqQkIxSWtNbEwzRmg0azZBQUFBQUFBaVltSmtXTEZpdW5JZlNWS2xKQjNaOHlRcHlaT2xKQ1FFTjFidUpDZ0F3QUFBQUNrZVBIaUVoNFdwaVAzQkFZRXlHV1hYaXJMbHk2VlhyMTY2ZDdDaVFRZEFBQUFBR0RQV3J1OUR6MjZZa1Y1NmNVWDVhc3Z2ckJuOEFzN0VuUUFBQUFBZ0sxQmd3YTZaVlprUklUY1BXaVFyRnl4UW02OTVaWkNjY1o1YnBDZ0F3QUFBQUJzRnpacG9sdG1oSWVIeXgwREI4ckt2LzZTNlZPblNzbENWcVg5YkVqUUFRQUFBQUMyT25YcTZKYXpxc2JFeU5qSEg1Zk5HemZLODg4K0s5V3FWdFdQNEhRazZBQUFBQUFBVzNSMHRCUXRVa1JIK1ZQSitydjZYWCs5ZkQ5M3JteGN2MTVHUFB5d2xDOWZYaitLTXlGQkJ3QUFBQURZaWhZdEt1WHltRVNyLzIrZDg4NlRPKys0UXhiTm55OGIxcTJUdDk1OFV6cDA2TUFlODF3aVFRY0FBQUFBMk1MQ3dpU21TaFVkblZsQVFJQmQ1RTN0SDI5L3lTVnkzNzMzeXR5dnY1WU5hOWZhUmQrZWUrWVp1ZmppaSszOTVqZzNKT2dBQUFBQWdQOXEyYUtGL1dlNXNtV2xjZVBHMHJGREI3a3VOdFplb2o1enhneVpQMitlckxlUzhWM3g4VEx2dSsvazZjbVQ1ZEpPbmV6bDY4eVU1dzhKT2dBQUFBRGd2MFk5K3Fpa25Ub2x1eElTWk5tU0pmTGQzTG55MFFjZjJFWGUrdlR1TFczYnRMSDNxb2VHaHVyL0I1eENnZzRBQUFBQStDOFM3NEpEZ2c0QUFBQUFnQWVRb0FNQUFBQUE0QUVrNkFBQUFBQUFlQUFKT2dBQUFBQUFIdUFqQ1hxQS9iK3p5VHgxU3JjQS81YVpmRkszY2hERS9UY0FBQURBbC9qRUNENHdORVNDaWhYVFVmYVNWcTNSTGNDL25WeTJYTGV5RnhKVlJyY0FBQUFBK0FLZm1XSUx2NkN4Ym1YdjZOZHpkUXZ3WDFscGFYTHNoL2s2eWw1bzVXamRBZ0FBQU9BTGZDWkJqenkvb1c1bDc4UzhCWkorNkpDT0FQOTA3SmRmSlgzUFBoMWxMN0pGTTkwQ0FBQUE0QXQ4SmtFdmVuRXI2MStiODBiMGpLTkhaZmRUVDR0a1p1b2V3TDlrSkNmTDN2R1RSTEt5ZE0rWkJaVXZKK0hWcXVrSUFBQUFnQy93bVFROXJGcFZDYTFlWFVmWk8vcnA1NUw0eVdjNkF2eEhWbnE2N0JvNVdsSTNiOVU5MlN2ZXFZTUVCUHJNMnhzQUFBQ0F4V2RHOElHaG9WS3FWM2NkNVNBalEvYU9mRndPdlBPdVpGbHR3QjlrSkNWSi9JTVB5OUV2NXVpZUhGaUplYW5lUFhRQUFBQUF3RmY0MUJSYlZOL2VFbFNxcEk2eXAyWWE5ejQrVHJiZmZwZWMycnFOSmUvd1dlcTFmT3luWDJUenRUM2xtRXJPejdLMFhZbHNjWkVVeVVYTkJnQUFBQURlRXBCbDBXM0hxZVJpVTVkWVNkMFlwM3V5RnpWb29FUVBHNnFqN08xLzVYWFpOM0dLanM0dUlEaFlJcG8xbGFMdDIwbEVyUm9TVkxhc2ZnVHdxS3hNU1l2ZkpTYzNicFRqMy84Z0taczI2d2ZPTGlBMFJHcDgrb0ZFTnN3NVFWZXJTK0k2eDByS3hrMjZKM3NsdTNXVkt0TW02d2dBQUFDQUtUNlhvR2VtcHNubTJKNlNzbTZEN2dId3QxSTNYUytWeHp5bW8reVJvQU1BQUFEZTQzTlZwQUpEUTZUSzFFa1NXS1NJN2dHZ2hOV3ZLOUVqaHVzSUFBQUFnSzh4bTZBSEJGai95L2xvdFA5S1Q5ZU5zNHVvYzU1VW1qNUpBa0pDZEE5UXVBVlhLQy9WWG45SkFzUERkYzlacUhVenVWdzhvN2FKQUFBQUFERFBlSUllR0ptN21lN2NIQjExdXBLZE9rckY4V1BzUGJkQVlSWVVWVnFxdmYyYWhGYXNxSHZPTGlzdFZUS09IOWRSem9LclY5VXRBQUFBQUNZWlRkRFZPY3pCdWFpNnJwemFzVU8zY3NsSy9xTjZYQ2RWWG5sQkFvc1gwNTFBNFJKYXA3YlUrT1I5ZTFYSnVVZy9kRmpTOXgvUVVjNUNLbFRRTFFBQUFBQW1HZCtESG5aK2ZkM0tXZHFXYlpLeWM2ZU9jcTlFKzNaUzY4dFBKS0o1VTkwRCtEKzE3THhrMzE1UzY3T1BKTHhhTmQyYmU4Y1gveTZTa2FHakhBUUVTRmlWeWpvQUFBQUFZSkx4QkQzaXZOelA3QjMrK0RQZE9qZGhWYXRLemZmZmtlaEo0eVNrYWhYZEMvaWhvQ0NKYUhhaFZQLzRYYWt5Ym93RVJVYnFCM0pQVlhBLy9QRW5Pc3BaWUVTNGhGVS85eHNBQUFBQUFNNmQwV1BXbExURWc3S2hSVnVSekV6ZGs3MlF5cFhrdk8vbldFbEJoTzQ1ZDVrcEtYTHN4NS9sNER2dnlxblZheVh6V083MjJRS2VwYmFLUkpXV3lOWXRwY3lBbXlXeVhqMEpzQkwxdkVwYXRWcTJkZTlySDRONE5xRTFxa3VkSDc2eFo5SUJBQUFBbUdVOFFWYzJYZHREVWxhdDBWSE95ZzY1VnlyY2Q3ZU84aWY5eUJFNXVYR1RKQzlmSVNtYk5rdjZzV09TbFpxbUh3VzhLeWd5UW9LS0Y1ZndDeHBMa1NhTkpheGFOYnN2djFSU3ZxWHZUWEp5MlhMZGs3UFN0L1dYU28rTzBCRUFBQUFBazF4SjBQZTkvSnJzZitwcEhlVXNNREpTcW4veW5qMUxDTUJaQjk1NVQvWSsvbVR1amxnTENwU2FYMzRxa2ZWNUx3SUFBQUJ1TUw0SFhTblorYXBjTDhuTlRFNlcrRHZ2eTFQQk9BRFpPN3J3UjlrM2JtS3V6ejhQcTFWVElzNnJyU01BQUFBQXBybVNvS3NxMEVXdnZrSkhaNWNXbnlCYis5d29KemR2MFQwQThzeEt5STk4KzcwazNIWHZPVzN4aUxybEpydGFQQUFBQUFCM3VKS2dLK1h1dlAyY0J2dnB1L2JJMXRqZWN1anpMM05WekFyQS84bzRjVUoyVFpna0NmY01rYXlVVk4xN2RpSFZxa3FwMkd0MUJBQUFBTUFOcmlYb2tmWHFTdkhZcmpyS25VeVZYQXg5U0xiY2NMT2NXTHFNUkIzSXBjeFRwK1RncDdNbDdvcXVjdWkxdDNKMzV2bmZBZ0trM0gyREpEQTBWSGNBQUFBQWNJTXJSZUwrbG5ZZ1VlSTZkNU1NNjg5elppVU5vVFZyU05GMkYwdVJDNXJZN2FBU0pmU0RRQ0dYbFNucCt3L0lxVTF4a3JSa3FaejRkYkZrV0hGZUZMSGVZOVhmZWswQ0FsMjdmd2NBQUFEQTRtcUNyaHo1WVlHOUYxYlN6MkZHTHp1Y3pRejhQd2ZleW9FbGlrdXRPYk1sckhJbDNRTUFBQURBTGE0bjZDcUoyRFBwYVVsOCtYWGRBY0FMQXNKQ0plYlZGNlY0dXphNkJ3QUFBSUNiM0YvREdoQWdGUjRjSWlXdW93QVY0QmxCZ1ZKaDlFaVNjd0FBQUtBQUZjZ21VM1VtZXVWeFk2VG9wUjEwRDRBQ0V4Z281UjRZTEdYNjlOSWRBQUFBQUFxQyswdmNUNU9WbWlvN0h4c3JSejc2UlBjQWNKTmExbDV4ekNpSjZ0MVQ5d0FBQUFBb0tBV2FvTnVzYjUvNDNnZXliOElVeVV4TzFwMEFUQXVKcVN5VnAweVVvczB1MGowQUFBQUFDbExCSitqYXFlM2JaZWVESStUazhoVlcwcTQ3QVRndUlEUlVTbHpiUmFJZmUwU0NpaGJWdlFBQUFBQUttbWNTZENVclBWMk9mUCtEN0pzOFRkSjJ4TnV6NndDY0VSQVNMQkZOR3R0TDJpUHIxckU2T0tZUUFBQUE4QkpQSmVoL3kweEprZU8vTHBiRU45NldrMzhzc3hOM0FIbGdKZUdCUlNLbDJHV2RwTXl0TjBsay9mcDJVVGdBQUFBQTN1UEpCUDEwcWZ2M3kvRkZQMG5TYjcvTHlZMmJKRzNMTnNsS1M5T1BBdmkzQUNzaEQ2dFZVeUlibnk5RjI3YVJvcTFhU0ZDUkl2cFJBQUFBQUY3bCtRVDlINngvcXBwTlR6dDhSREpPSEpmMGc0Y2tLek5UUHdnVVhvSGhZUkpVdklRRWx5d3B3U1dLU3dDejVBQUFBSURQOGEwRUhRQUFBQUFBUDhVMEd3QUFBQUFBSGtDQ0RnQUFBQUNBQjVDZ0F3QUFBQURnQVNUb0FBQUFBQUI0QUFrNkFBQUFBQUFlUUlJT0FBQUFBSUFIa0tBREFBQUFBT0FCSk9nQUFBQUFBSGdBQ1RvQUFBQUFBQjVBZ2c0QUFBQUFnQWVRb0FNQUFBQUE0QUVrNkFBQUFBQUFlQUFKT2dBQUFBQUFIa0NDRGdBQUFBQ0FCNUNnQXdBQUFBRGdBU1RvQUFBQUFBQjRBQWs2QUFBQUFBQUZUdVQvQUVpNFBoc1dEcENoQUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIkZJRE9fMl8wIl0sImFhZ3VpZCI6IjM2MWEzMDgyLTAyNzgtNDU4My1hMTZmLTcyYTUyN2Y5NzNlNCJ9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAxOS0wNy0xOCIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiZVdCTSBlRkE1MDAgRklETzIgQXV0aGVudGljYXRvciIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMTkwNzA5MDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjMuNCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4wLjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMTktMDctMTgifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDE5LTA3LTE4In0seyJhYWlkIjoiMDAyNCMyMzAwIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWlkIjoiMDAyNCMyMzAwIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkcrREZpbmdlcnByaW50S2V5Y2hhaW5pT1MifSwiZGVzY3JpcHRpb24iOiJHK0QgRmluZ2VycHJpbnRLZXljaGFpbmlPUyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6InVhZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjJ9LHsibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X2RlciJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJhdHRhY2htZW50SGludCI6WyJpbnRlcm5hbCJdLCJ0Y0Rpc3BsYXkiOlsiYW55IiwicHJpdmlsZWdlZF9zb2Z0d2FyZSJdLCJ0Y0Rpc3BsYXlDb250ZW50VHlwZSI6ImltYWdlL3BuZyIsInRjRGlzcGxheVBOR0NoYXJhY3RlcmlzdGljcyI6W3sid2lkdGgiOjU0MCwiaGVpZ2h0Ijo5NjAsImJpdERlcHRoIjoxNiwiY29sb3JUeXBlIjoyLCJjb21wcmVzc2lvbiI6MCwiZmlsdGVyIjowLCJpbnRlcmxhY2UiOjB9XSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUJtRENDQVQwQ0JHUWRQUjB3Q2dZSUtvWkl6ajBFQXdJd1ZqRUxNQWtHQTFVRUJoTUNTVTR4Q3pBSkJnTlZCQWdNQWsxSU1RMHdDd1lEVlFRSERBUlFWVTVGTVFzd0NRWURWUVFLREFKSFJERUxNQWtHQTFVRUN3d0NSRk14RVRBUEJnTlZCQU1NQ0VGVlZFaFNUMDlVTUI0WERUSXpNRE15TkRBMk1ETXdPVm9YRFRRek1ETXlOREEyTURNd09Wb3dWakVMTUFrR0ExVUVCaE1DU1U0eEN6QUpCZ05WQkFnTUFrMUlNUTB3Q3dZRFZRUUhEQVJRVlU1Rk1Rc3dDUVlEVlFRS0RBSkhSREVMTUFrR0ExVUVDd3dDUkZNeEVUQVBCZ05WQkFNTUNFRlZWRWhTVDA5VU1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRVNJcEkvZEtZQ0RZaHp3RDJ3U2ZZQU9iL25OYWlQY1dGMjF2eFprL1RnRDBPSnRjRCtPUG02NG53WmRGV1NFWVNXN2lPcW5wbUp5ZGU4bWdyL3RuQWl6QUtCZ2dxaGtqT1BRUURBZ05KQURCR0FpRUEzYnZoYXpRRlB3bXlYbHhLL3hDWGZoN2cxWDFFb2JMQzNMKzJHT1J4cDdnQ0lRQ2ZORVRYL20yQmViUkxYSTRMTVAxRVFHUFhGRGY3T2s3NFU3eGJpTTRWa0E9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LC85ai80QUFRU2taSlJnQUJBUUFBQVFBQkFBRC8yd0JEQUFNQ0FnTUNBZ01EQXdNRUF3TUVCUWdGQlFRRUJRb0hCd1lJREFvTURBc0tDd3NORGhJUURRNFJEZ3NMRUJZUUVSTVVGUlVWREE4WEdCWVVHQklVRlJULzJ3QkRBUU1FQkFVRUJRa0ZCUWtVRFFzTkZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlQvd2dBUkNBRElBTWdEQVNJQUFoRUJBeEVCLzhRQUhBQUJBQU1BQXdFQkFBQUFBQUFBQUFBQUFBY0lDUVFGQmdJRC84UUFHd0VCQUFJREFRRUFBQUFBQUFBQUFBQUFBQUVEQWdVR0JBZi8yZ0FNQXdFQUFoQURFQUFBQWF5ajZGNXdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRWdkM2VEVDV4TEozNnhGb2M1bDhsR1BTWEtzek5ETTA5TlZkTis4UDhaZExLQkhwaWUrdmhUdW9mTlhOQXZtK015VW1SbjFkUVpnQUhNNGN3MUxpY1AxVkxlUXVqVHpKMmRKTTMzNXBoYWFVamVhYktVUnZkVjdTWjFkVFM2U3VGa3dRL2JIcjc2NXQyRjFtZGs4N05QcUUrU1l5SFIxZ0FMQjE4bHZ5VGVqUFhRcW11Z3NnWWRWVnAxeWFIZlhMVzN2VVFrMnBhSXFkNU1yWXFJUGZqZExObVRZeTIrQ1RveHNiNkl0dFN1NmxBOUJaSEE2cW9BQnlPT05IUDJwUGVuanJzLzhBeG1uY1liTENpYTZ6MHhTbWFadDlIUk1sVVJ2ZEYrcXpvWXVzM2xkS1YxdTZpYW0zdDdQcnRKbjBHZW51L0E5RFdHeHhBQUFldjhneFhLay9PWnFjOUptYktscE16Wkdrek5rYVRNMlJwTndNNkVyaDFqOHcyT0lleUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVAvOFFBS0JBQUFRTURBd1FCQlFFQUFBQUFBQUFBQlFBRUJnSURCeFVYSUFFUUV6WVJFaFl3TkhBMS85b0FDQUVCQUFFRkF2NmJHSVNSbE5ZYkZnVVpTM0ZNbWxQZ3RLVzJiZlNMckUxUFN1VytDMHZCYVhndEx3V2w0TFNjaUdMeWsxaWdPUnBrc1FJeGU5K0dBUW1xVVBHN2UwMHNQbjdZYTNlNWRCdHE5NXhhT1pZSEZBeXhKN2NwQmt4aEhpMjg0dGJ6aTF2T0xUSExRSjNXMWQySDFoNnlzRVdzNWgxeUtFT2JScmNmT2dZaXlCRlNXUXQ0eUtQU0Y3STN2REVudHl5Zjd0d2pjb2ZSaDRDTk41QU1sQUszSXdseTNWWnVjc1ZNT2oyWExMUm1wOUkrMUdKajFkTzBoNWJTSGxBb0NWanA5VFhIaFk5SmRwRHkya1BKeml3NDBiZHNPbWFtNWRaSFlkQjh3NVlZK05lVTQrcnBMdXpiOWJtZS93QVB0alg2dnZWWmYrUHV2bGk0aDBZUzlaZENWTXozYW5Kc2pvcDNQa2kzUGtpeDVOVEI2UktkVG8yRmxHNThrVzU4a1YvSkVoZFdPMkhBbFY0Z3Noa09oS1g4ckYrdHJmalJ5MUl3eDRHMmtReVNSUi9GM1hERW50eXlmN3R3aXNOZlNseUlGTndnK1lTR2lOQTZxdXRkWE9FVEc3RTM3QiszS05MN2UwNnRQY1h4OTVYdENDVzBJSmJRZ2tCZ0F1T1AwYXgwSlBFdG9RUzJoQkxhRUVtT000K3hydFdxTEZzb1ZhaG1VeGxsNldFdnd4NlVrSXpmQzVlR1BLVzhxRE9xZGRHclhScTEwYXRkR3JYUnExMGF0ZEdyWFJxMTBhbk10Q3RLVGVZQjdXazlKSDhrYy8wMy84UUFIUkVBQWdJQ0F3RUFBQUFBQUFBQUFBQUFBQUVSRWdJUUlDRXhVUC9hQUFnQkF3RUJQd0g2eXhrNlJLRjdxVVNoNHp5ZlMxREVtWkVQV0xNdUM5TXRXUlliZ3NodVJlbVhuRk9TcFZpeFkxSlZsV0pRTnp5c1dMRml4WWJuN0gvL3hBQXVFUUFCQXdFRkJnVUZBUUFBQUFBQUFBQUNBQUVEQkFVUkZTRlNFaFFnTVVGUkV5SXlZWUVRSkZCeDhEUC8yZ0FJQVFJQkFUOEIvTFZsZDRQa2o1cjdpcHp6ZFIwbFF4czdpcXIvQUFQOUtPTTVYMlF6VzUxT2xiclVqbnN1b0srV0Y3anpaUm1NZ3NZOHVDVS9DamMreXBZdDZtdUw5dWhGaGE0VnZVR3RsVTFNSlFrekVyT2tHT1YzTjdzbHZjR3RrRW9TK2g3MWFGTXhnOHJjMlZsU3ZlOFh6d1ZZN1VCc3lzczJHWjJmcjlNTG03dC9mQ2tzNldNWE4zYkpRUUZVRnNBc0xtN3QvZkNvYVk2Wm5ZK3FxellJQ2QxWlkzelgrM0RWVTVVc20wUExvb2JVRzY2VmxpY0h1cDdRaGtpSUc2cWhuQ25rY2o3TEU0UGRQYWtIUzlWTlVkV1YzVHNxS20zZVB6YzM0U0ZqYlpKSFpjUlppOXl3a2Rhd2tkYXdrZGF3a2Rhd2tOU2hwSW9QUzJmNWovL0VBRU1RQUFFREFnQUhDd29FQlFVQUFBQUFBQUVDQXdRQUVSQVNFeUV4UVpNRklDSWpNelZSWVpHaDBSUXdNalJTWW5HQndlRkNjN0d5VTNDU3MvQlVjblNDd3YvYUFBZ0JBUUFHUHdMK1p0MkVaS01Ed3BEbm8vTHBvRjlzN29QZTA5NlA5TldZaU1Nam9RMkJYSnA3SzNXSVFrSHlWelY3dUFBZ0VaQmVuNVZ5YWV5dVRUMlZ5YWV5dVRUMlZ5YWV5clB3bzd3OTlvR2xLaWhXNTczUzNuUi9TZnBWcFRlTXlvOEI5dk9oWG1pOUl1bmM1azhNajhaOWtVaGxsdExUU0JaS0Vpd0ZGK1UraU8wUHh1S3RSUzBKRXIzbTI3RHZJcjFLWjJKOGFtdzI0a3BLMzJWTmdxeGJDNCtPQWZrTCttQjZBOUZrT09OV3VwR0xiT0w5UFhYcVV6c1Q0MTZsTTdFK05lcFRPeFBqUVM0WDRuVzYzbTdyMGw2TzhoOXBXaGJhcmluSThscEx6TGdzcENxNEYzSUwyZGx3NnZkUFg1aG1PeU1aMTFZUWtkWnFQQlk5RnBOaWZhT3MwNU1mNFg0VzI5YTFkRkdSTWR4dlpRUFJRT2dEZWo4aGYwd1QvZzMvQUcwNzBQUlhPTFBLTXE5RlkvelhUTTJNZUF2U2s2VW5XRFVpRXUyTW9YYlY3SzlScFRheGlyU2JFSFVkKzB0UXVJN2FuZnA5Y0hrUVBFdzBnVzk0NXo5TUlVQkhzYy9LMW9qYld0RWJhMEpjc001SEpxVHdGM09DVk5paG5JT1ltTGp1V09aSUZhSTIxclJHMnRPdnVDUGlOcEsxV2MxREMvdWNvOFZJUmpwSHZqN2ZwZ25CSXNsMGg0Zk1aKysrL205UGszL29ZTjFjYlRsemhhLzJqekc2UC9IYy9hY081dUwwci9ZckFtMyttUmZ0Ty9qcFViSmtJVXo5UjNnWUVib0pUeE10T2MrK00zNld3aEluaXd6Y2kzNFZ6Z05nMzRWemdOZzM0VUlzMlhsbU1rcFdMazBwei9JWUpjU0hNeVVkR0ppcHlTRHBRRHJGYzREWU4rRmM0RFlOK0ZPTXVUZ3B0eEpTb1pGR2cvTERKM1VXbmltVTVKQjZWSFQzZnJnM1FXazNRMnJKRC9xTEh2dnYyM21sWWpqYWdwS2hxSXFQTmF0ZFlzdFBzcjFpbllVa2NCZWhRMG9WcUlvdHltN3RFOFcrbjBGLzUwYjBma0wrbUNmOEcvN2FkNkF5Z3RSUWVNa3FIQkh3NlRUTU9LbkZaYUZ1czlacCtVU01zUmlNcDZWNnZHaXBSdW81eVQ1ZzQxM0lMdkxORDl3NjZia3hYVXZNTEYwcVRTbW5tMHV0cTBvV0xnMFZDS3FPVC9CY0k3cTB5dHI5cTB5dHI5cTB5dHI5cThzaUYvSzRwVHhpN2o5TURzNlNYOHM1YStJdXd6QzNSMVZwbGJYN1ZwbGJYN1ZwbGJYN1VGZVJtUW9meDFsWGRvcEtHMEpiUW5NRXBGZ0tjbFRIUXl5aldkZlVLeXlydHhtOHpMWHNqcCtQbXNlRTlaQjlObGVkQ3ZsUVRQYlhBZDFtMk9qdXoxZHZkU0llb3ZBR3VjSXUyVFhPRVhiSnJuQ0x0azF6aEYyeWE1d2k3Wk5jNFJkc211Y0l1MlRYT0VYYkpybkNMdGsxZDNkU0lPb09oUjdCUlR1Y3l1YTdxV3ZnSThheTA1N0h0NkxZeklSOEIvTTcvOFFBS0JBQkFBRUJCUWdEQVFFQUFBQUFBQUFBQVJFQUlURkJVV0VRY1lHUm9jSHc4U0F3MGJGdy85b0FDQUVCQUFFL0lmOEFUWWpvNGFEVE0wT01VWTYzdkV0QlpHK2FCRnVEK2hYcTlHNUVDSE5zdTVhQk5QVjY5WHIxZXZWNjlYcGM1WWYyeW1aTzBSWjFUK2lnWjRUZ2hPRG8vVVRCdTZOL04vWEEzMGE0MFNPUVZlcXJBZDIvU29NSGd1ck9teEdFaG5wQ0F1VzM0VVNMcWhsaE1TUGdSbzBicHRzdDNPNlhhYW9iaVZDRUpNaWVZMERFMDNobTBIVTR4ODlkcVhKQlJtRVNEYml1cXkxYnBpd01MdUg5WEFHbDNPVzdjc3Y2NC9aUndWc29TdU9NK1lxZnVlUWZORkNxSnZ3dlU2TFQrMjcrQmhQblprSDNPdzlaOE5oWmVoYVluSkhEYkE1b1BCWG5QeXZPZmxFMkRHOHhGa2FiSG1SR0lHc2pNYTg1K1Y1ejhxL1VQRmdsdzAycE5rWmZKM3o1Tm5IdklDZm1GQjNXNjM3YkRhUE01WWRJMitXeSt0UUZiSnROMXRzV2JjeDZmblBBcFhOT29ManNUQkRCdUJFY1F1ZTBvWUlHRnRvVUoyckJMTWlMUWRobkFwWU1sYWpldTFDaGlGZ1hrSVN6THRTZ0pka3JHN1l3d2c0WjBIek5BdlJpSkhuU2hDQzI2Ny9SR3NjdVhZYzBmcGpUbExNZGh2d2RWdjJVY0lOQnJDY1QrQTR4VmoxbE41am1LMjFhdEVXTWRCZTBLZncyUWxYNkhJT2hlRExSZGJza25EcUt4L0hTaUo5Qlp0UnEweTh4UE5JY0N2U3FlbFU5S29iUU5oSUcreUd6RGRmN0FFR2dWNlZUMHFucFZNTklFanVjU2dERkRnWkFVU1dyYnhZQml1VkxRbG52RWFzZUJoOVMrWVo1aDV0U0dzRGRGTHhzT1hHalU1L0JGbXZQdTllZmQ2OCs3MTU5M3J6N3ZYbjNldlB1OWVmZDY4KzcweWluNjRMV0J1UVIxdHRib045U1U2VkdXQnZ2L3dCTy85b0FEQU1CQUFJQUF3QUFBQkQ3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3NzZvTWpnNHh2UDM3NzZtcHp5eXZ6ZXByNzc3M2o1VC96NWUvejc3NjRwdjhBdnEvNklHKysrK3ZjL3dEL0FQOEF0ZjhBdnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2di94QUFlRVFFQUFnRUZBUUVBQUFBQUFBQUFBQUFCQUJFeEVDQWhVV0ZCVVAvYUFBZ0JBd0VCUHhEOWJNZEJxek1FVU16MmxuMkJoRVJwMkJiVVdDWm5oTEJ4QXB4UEtJbVpRMUQ5MmNSRHhyQVdvQXQwaXdoc2JvRFRIcnBBUmpDaldobTV0R29Nekw5Uy9VdjFMOVMvVVhMOWovL0VBQ2dSQVFBQkFRVUlBd0VCQUFBQUFBQUFBQUVBRVNGQllYSGhJREZSZ1pHaHNkSEI4UEZRRVAvYUFBZ0JBZ0VCUHhEK3NiMzE5dU5ZRG83dFBSRlUwRTg1enZrb2RWdm1ON2U0K0t0SlUrM3c3ekorR0t6VmJHR1JZdFZxVy9URmdZcUJkUDNJQzlVYUZZWFFWRnVaUDFJVW8wY0lYTk45aVk1UURteWxIaCtPbXczQkhpMlhBU3pPeDhmNHUxN2pGSGtGYkY5UitnSVZ0NUZ3OForNHdwZzFHNnZ5RXZCQk9iWkVVYmhlVFlRU2pOeDJxcTRZWm5lVVZkZUpmeXVuMUdzclExQ0Ztc3FGVVVXWm5xZlVhd0JVTGtlNE1KUzRMYmZsalp5Y09CeTg3TDBLamN4cXF3Ynp2YjNtSzZhekZkTlppdW1zeFhUV0ZTMTlDVzNuRzEwNWYyUC94QUFtRUFFQUFRTURCQU1BQXdFQUFBQUFBQUFCRVFBaE1SQkJZU0JSY1lFd3dmQndrYUhSLzlvQUNBRUJBQUUvRVA1TnZjVTRaa2k1K0F0S1EwSHJCWjdxZWVKdm1qaXRBTmVncjlOOVV6R01BanNzYVNHa3hCNk5mcHZxdjAzMVg2YjZyOU45VittK3FQTVVKci9TaXg4K25vZzRvcW1CUGJrc0RHTnNiS1NFL0VTMHhUSEEyRmtTdWdFSVFTV1hoY0FzRldWZlRSMkN0MUZoSzdGVEp0QXBlSFNEQ3pKM2Z1aE1FVEF2SFEwT0xtOWxvMWdESmtlaGd3WU5EK3hFK1dEbEE3MGJwNTdvY0lrbTVrcHQzZnRyQ01JSVJCRVFhUDBLVXdYV1d1a09Ja3ZENEhGZHdkUGdsTDFqQXVKVitZK0NZTEJVL2l3T0FWMnhaZ01oREFNWVBqMUJ0SWdZbHZCS1cveU5GSkJHMnBzbTFEQTlnb3F3aDJHT0FZVDBrSlpHbmlrSncxQjJKd1pCdlJpYmVoQWc3aUoxbHRpa2tpTDhnamthTUJGUS93Qm5md2MrN3JkUGFZc0pKL3ZYUE5sZ2Q4QmhhN1I5c1JKM1ZKSEt4R3VlWkZiMWRERVpzSzJyTHowWkNpbzJrbTc4ZWhDVDRFU3QrK3ZLcUpON3YrazZCTEpUZE9IV2ZoOXZ4M3NiUldlNDlhTk9FUWgrZHVzYU5TMEVJL1FPUm95SVNsM24yaFhkNHVvR0h5cUFRR3VUSmFGR3phN1laTGFZMG1XZnRkdzBsMTF6QmJXVEp2MURzc25Da3BKRWRTSUNKYVdTNDRmSFF5citHVEVudE05OWVNNWRERGNnSDFReEVTNUtDYjJ1Snp1Rk1xU0RTOFNuQ0x3aWxsVEFiQ3JzbzdQTmh5UXZ4dEZCS0JRaG5zTGVHM0pDOVp6OElWM2RCTEtlN1lDQ3ByTFJhdkZtOTNrVEtVZ1hNa0psVjNWWitCKzZzVEZZRFlGYldEZEZBYkFwTUc0bVFiS0JFUkJLNEZudWlFaWVTbUFGZEs4SjRRSFF6WnN6TlZ5eS9CY3NiNkVtbUNQSjhKTWkrWjZHYk5uUE0wK3hjejJGRFVLQmRnQUE0S2thQ2ZPd0M4YUFTdFhxWTZTdDRiTVlveEFTQitKOWd3VEY1aUlXbUF0TVNWRFlvS0ozQ3VkbUozWm9FZUpnYnlZZXo0di9BUDhBL3dEL0FQOEEvd0QvQVBnZ1JMNnhRZWlvYjBSVi9CYjhqc29BM2JFbU1qWXdKVXFDVmorVHYvL1oifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiTk9UX0ZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDQtMTYifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTA0LTE2In0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiZDk0N2E1NjNhNWU4OGVjMmNkMjYzMDQzMTQ1NjdhOTE5ODlmMTU1MSIsIjM1NWY3YzBhZDUyNDkzMDIzZDc1MjFiYzUxMGEwOTY2OGQ0YTYwNTEiLCI2ZDFlMmZiZDFmZWQ3Mzc3MWIwMzlhOGJhNDQ0NDU2MDIxYjJlNDg0IiwiZDc1ZTdiZjliMjQ0NGI0NjY5ODgyN2QxYmUyZTFiOGY3ODFjYzRhNCJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyJkOTQ3YTU2M2E1ZTg4ZWMyY2QyNjMwNDMxNDU2N2E5MTk4OWYxNTUxIiwiMzU1ZjdjMGFkNTI0OTMwMjNkNzUyMWJjNTEwYTA5NjY4ZDRhNjA1MSIsIjZkMWUyZmJkMWZlZDczNzcxYjAzOWE4YmE0NDQ0NTYwMjFiMmU0ODQiLCJkNzVlN2JmOWIyNDQ0YjQ2Njk4ODI3ZDFiZTJlMWI4Zjc4MWNjNGE0Il0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IDUgRklQUyBTZXJpZXMgd2l0aCBORkMifSwiZGVzY3JpcHRpb24iOiJZdWJpS2V5IDUgRklQUyBTZXJpZXMgd2l0aCBORkMiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI4NzA3LCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50IiwicmVtb3RlX2hhbmRsZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJREhqQ0NBZ2FnQXdJQkFnSUVHMEJUOXpBTkJna3Foa2lHOXcwQkFRc0ZBREF1TVN3d0tnWURWUVFERXlOWmRXSnBZMjhnVlRKR0lGSnZiM1FnUTBFZ1UyVnlhV0ZzSURRMU56SXdNRFl6TVRBZ0Z3MHhOREE0TURFd01EQXdNREJhR0E4eU1EVXdNRGt3TkRBd01EQXdNRm93TGpFc01Db0dBMVVFQXhNaldYVmlhV052SUZVeVJpQlNiMjkwSUVOQklGTmxjbWxoYkNBME5UY3lNREEyTXpFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUUMvandZdWhCVmxxYWlZV0VNc3JXRmlzZ0orUHRNOTFlU3JwSTRUSzdVNTNtd0NJYXdTREh5OHZVbWs1TjJLQWo5YWJ2VDlOUDVTTVMxaFFpM3VzeG9ZR29uWFFnZk82Wlh5VUE5YStLQWtxZEZuQm5seXVnU2VDT2VwOEVkWkZmc2FSRnRNamt3ejVHY3oyUHk0dklZdkNkTUhQdHdhejBiVnV6bmV1ZUlFejZUblFqRTYzUmR0Mnpid25lYndURzVaeWJlV1N3Ynp5K0JKMzRaSGNVaFBBWTg5eUpRWHVFMEl6TVpGY0VCYlBOUmJXRUNSS2dqcS8vcVQ5bm1ET0ZWbFNSQ3Qyd2lxUFN6bHV3bit2K3N1UUVCc1VqVEdNRWQyNXRLWFhUa05XMjF3SVdieGVTeVVvVFh3THZHUzZ4bHdRU2dOcGsycVhZd2Y4aVhnN1ZXWkFnTUJBQUdqUWpCQU1CMEdBMVVkRGdRV0JCUWdJdnowYk5HSmhqZ3BUb2tzeUtwUDl4djlvREFQQmdOVkhSTUVDREFHQVFIL0FnRUFNQTRHQTFVZER3RUIvd1FFQXdJQkJqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFqdmp1T01EU2ErSlhGQ0x5QktzeWNYdEJWWnNKNFVlM0xiYUVzUFk0TVlOL2hJUTVaTTVwN0VqZmNuTUc0Q3RZa05zZk5IYzBBaEJMZHE0NXJuVDg3cS82TzN2VUV0Tk1hZmJoVTZrdGhYN1krOVhGTjlOcG1ZeHIrZWtWWTV4T3hpOGg5SkRJZ29NUDRWQjF1UzBhdW5MMUlHcXJOb29MOW1tRm5MMmtMVlZlZTYvVlI2QzUrS1NUQ01DV3BwTXVKSVpJSTJ2OW80ZGtvWjhZN1FSalFsTGZZemQzcUd0S2J3N3hhRjFVc0cvNXhVYi9CdHdiMlgyZzRJbnBpQi95dC8zQ3BRWHBpV1gvSzRtQnZVS2lHbjA1WnNxZVkxZ3g0ZzB4TEJxY1U5cHNteVB6SytWc2d3MmplUlE1SmxLRHlxRTBoZWJmQzF0dkZ1MENDckpGY3c9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFmQ0FZQUFBQ0dWcytNQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUhZWUFBQjJHQVYyaUU0RUFBQWJOU1VSQlZGaEhwVmQ3VE5WMUZELzNkNTl3ZVFTSWdTOUFRQVhjRkxBUVppOWZwZVZ6MXRZL1dUWnI1V3hwYzdXNWtuTGE1akkzWjg1c3JTMm5NMnNqdFd3WlM3SVVINEg0eENuRVF4NERBWkY3NFY3dXM4ODV2OS9sSW5CdlZKL0I0UHY5bnUvNW51LzVudk01NTZmekEvUXYwSGIvSXJYM1ZGS1BvNDVjbm00aW5VSVdZd0xGUm1aUVV1d2pGRy9OMWlSSGgxRVowTlJWUnVkcXQxQmQrMm5TS3lTL09oeXMwK2xrM2UvM2tROXF2RDRaVXRhNFZWU1V1WTBlaXB5aVRoQWZvY29PUlZnRHV1dzNxS1JpQWQzcmJjRXRqVGpZSW9mNldhSHNDbXpWUFdDTXgrY2doOHRMcVdNS2FNV3NVakxxbzJSdEpJUTBvT3ptZXJwUXU0ZXNaZ3NPTmtHeEg3ZDBrZHZUVDE3czRPTVU3Vkk4WmhqZ0dhTStBcTlpRU51OFBpZjF1ZHowN013dktXZjhHbFZvQ0VZMDRQQzVXZFRhWFlGYlI4dk52TDUrM0tnZmI1eE5NeWE5UmFtSml5bmFNbEdUVnRGbHI2YmE5dStwcW5FWDR1TXVSUmdqU1lFaHJON3V0RkZlNmxxYWw3TmZrdzVpbUFHSHluUHBiazhWbVkweHN0bnB0bEZDVkNZdHpUdUJOODNRcE1MalR0ZXZkUHpTVW5KN2U4bWtqeFozOWZYYktEZmxkWnFidlUrVFVnR25CVkY2ZlEyaVBIZzRXMTZVV1V3dnpiazE2c01aRStQbjBwdno3SlNldUF5ZXM4bGNwQ21hS3VvL3ArcVdyMlVjd0lBSFdydlAwWUV6aFhBdExBYnNzSGhwN2lHYW12eWlqUDhyeXFyWFVXWDlYb293eHlBdWZOQnJwNDNQT0JGWFpsa2Y4TURSaXFjcHlvd0F3cHV6MngrZld2ei9EdGRlOXNtc3p5Z3RjUjZDMXdiZHpCbDZPbHE1V05ZWTRvR2F0aEpNcmtURXgwakFSU0hBVnMrNXJZa1FOWGIrUWdmUExzUTZnWHlJbnNyZVFmbXBtN1JWRllmTDg2bjFmaVVPa1l2U2hrVVB4dmJ1a3pveTZLMWloTTFobzNYelc2RXZTZlhBK2RwaVdHYVdkK2RvWHpMem1Hd0tZRkxDQXNSQWxQQkFoTWxDRlhVN3RCVVZQcjhIZ1ZjSkhXcStGMDBwbHIrRE1UZHJQNHp2eFkxMWtOTWh4VCtTZVRHZytkNFY1TFFKaXR5VUdKTkI4VkZac2pnWUJaTS9JSS9YQ1RrajBxeURPcEYyQVZRMTdDSWpVcC9EblQxVWtMNUY1Z2RqK3NTMXdnMWdFM2dpZ202MGZDWHpTblBYYnlBUGJJWHYrSURwRTE2VGhhSElTOXNreWhsbU1FNUYzY2ZxQUtocTJDMEU1UEgxZ1lhWGFMUERrWkcwSERKT25LV0hwNTFJMHo1U091eDhlMVdBdVp6ZEhRclRrcDhUbWpYb0krbGEwd0dac3p1YnFiTzNpZlE2QS9XN3ZWU1lzVjNtUjBKS3drS2M0V0hpQmttUjhJM0NDZ0k4N29PTDRxelQ1UCtSVUpCZWpFT2dBUEs4aFlQemF0TStlSVRwMklPOXlUUW1lcm9tUFJ4eDFxeEFjc2lsZS91YlNlRWJjV1FHWUVDZ2hjTFkySHlLam9nakgyNWhNcGpwVXYxT3VnbGk0ZWgyZVJ3ME8zMmJKamt5dUNnTnpnMHZ6bFlNU2lTczB1b280TUc3aE1PakNFYVgxeUZFMG5TdmpCenVUbkVwSzg2WjhJb3FGQUl1Ync4a2c5QXJFYVJFV1NaSStqSDRYYnA2ZzlFOUVuSlQzb2FSekROK01VSkJRREhuNTZhOG9VbUVCdXNPeEJzL041K3RKRWJQa0FGRGo4VUd2T3MvSVd2Y1NnbEdCaHZTNy9GVFlmcFdHWWREWThmUEF4V1NBMzVzVEM0cDQrTG00QWFxSW9QZVF0ZnVmSzZKaDBaaHhsYnNVWE9TbVhOaWZENVpUQWt5RG9mYmJjY2x4bkE4V05BcXhDYlJOeWtoWHhRcGFEdzY3ZlhVWWJzaUcwS2h0djJvZUl2aDhyaFFNWU9jRUFxWEcvZUkrem5nT2M1eXhyOHE4MklBTTFjL0ZMRk9wbHF1NWVGUVhyTVp6R2NWQ2pZYkxXRzVJNEJUMWV1UnJsYnh0Tk90TWl0RERFaExYSUl5bkFBdnVPRVdFM1gzTmRBZnQ5NFZnYUc0MlhJUXQwWlg2UGVDRS9xUUZlOXJLNkh4N1lVNTBLdkg3Zlc0ZlMrcTdLS0JKeHNnZ0JYNXBTQUdoMWpJclZoNXpRNnczUmZhYWhCWG0vYUNiQ1pUakNVRlVUeVdacVc5cDYyTWpKUFhWcU9yUGdNTzROdjc0R2tmK293ZnROVkJEUW5qRkpxSFN3MTdwWHZoV1c1S1pxZS9RNDlOL1VTVENBVldvUVhGSUhCSFhYZTNGUHJVRHN1R0RtdEYvaEhLVEhwZWt4aGlBT1BJK1NKcTZTNkhGNEk5WVd6a0JKVG80NmlVTXpXcDhQaXIvUmlkdUx4S1lzU2tzVjh2TGxPUXZoR1gyWWxSME9CaEJqQyt1L2dFY3ZZMEFwSzdZazQxTnhqUFNRbldGSFRGNjZVcmpnZXZCOEN1NWErbDJ2WVNSUHR1VkRvNzNoaGRNU0huVVg3dFRqc1ZaR3hBbC9XcHRpT0lFUTFnbkwyOW1YNi90UjF0bWxrWWo4VzRYK0NTaldjVURHWTFOcFMvQzdoU0txaU1MTS9sMlFtU1daNzNEZHorZ2lvOEJDRU5ZUFE0NnFua3p3WFVicXZCa3hqVVFzV2ZaRmdidW8zckFmK3dON2pPTzkwK3lueDRQaTNMKzBuWUwxU2NoRFVnQVA0Z1BWLzdJZDFxKzFIU2htdUdrSXFXUlBneXhNRnFQOEhmalRualh3WTViUWZiSmN0Nk9JektnTUhvdEYvSGUxZWdzYXhIU3FHNndmZG1RNXg4TnlURkZxQmNwMmlTb3dIUjN5azUrMzZoRjd2WEFBQUFBRWxGVGtTdVFtQ0MifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiTk9UX0ZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjMtMDItMDcifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIzLTAyLTA3In0seyJhYWd1aWQiOiIyZmZkNjQ1Mi0wMWRhLTQ3MWYtODIxYi1lYTRiZjZjODY3NmEiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjJmZmQ2NDUyLTAxZGEtNDcxZi04MjFiLWVhNGJmNmM4Njc2YSIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJJRFByaW1lIDk0MSBGaWRvIn0sImRlc2NyaXB0aW9uIjoiSURQcmltZSA5NDEgRmlkbyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MTAsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6MCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjAsImJsb2NrU2xvd2Rvd24iOjB9fV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlEZFRDQ0FsMmdBd0lCQWdJSkFJQ1VUdmtndGo1Q01BMEdDU3FHU0liM0RRRUJDd1VBTUZFeEN6QUpCZ05WQkFZVEFrWlNNUXd3Q2dZRFZRUUtEQU5FU1ZNeEN6QUpCZ05WQkFzTUFrTlRNU2N3SlFZRFZRUUREQjVIWlcxaGJIUnZJRTExYkhScFFYQndJRVpKUkU4Z1UzVmlZMkVnUTBFd0hoY05NakF3TnpBM01UUXpOekU0V2hjTk16QXdOekExTVRRek56RTRXakJSTVFzd0NRWURWUVFHRXdKR1VqRU1NQW9HQTFVRUNnd0RSRWxUTVFzd0NRWURWUVFMREFKRFV6RW5NQ1VHQTFVRUF3d2VSMlZ0WVd4MGJ5Qk5kV3gwYVVGd2NDQkdTVVJQSUZOMVltTmhJRU5CTUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUF2QUtPZXFDNS9wMEQxaXNDWUtRSmxWVU9yQjZJN0RMb2N1bkUvUm04ZHVHVGJ5eFFodDNDYkZWVHYzTjJMcDJmYmp4bEkrM3NPU0drMzNGVFlrVHF4Y2RKSXJKN1Nza0JjVVNOcmZLT2FRVC82S1FjUDRDbTdWKzY1NVRxK1RXeHl4V1FoRHlndDE1cW9QN011SzZiVDlTd3BDanBmS2hhTVNteVFhTW9VY1JBYkxxZHpCQ2FjMGh6QitaZStncUpsbldWOVVhU0kyckZzVnVINFpFMGNSTytNT3BhTGdNL3MyNDhuR0dIcDIyZXdTUWZiblBhQmJiOGlxeUFQK2N1NTJHTHNVcEtSSmViRStSNitQTVE5SkNkV2VRWlIzRGtmU2lka3YzbWNiNGpxMWlJdGErTXFLaFJud3JmWGg5MTFLV0xuWUFsOUVOQ2hMWDBjNlNqMVFJREFRQUJvMUF3VGpBZEJnTlZIUTRFRmdRVVdMdmhSQlVQbjh1TElmNjgrZ3YvTlpJd0dTSXdId1lEVlIwakJCZ3dGb0FVV0x2aFJCVVBuOHVMSWY2OCtndi9OWkl3R1NJd0RBWURWUjBUQkFVd0F3RUIvekFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBRkxyRGhhZWdlS0h4WWpIM0VQM3ZVQktobnpNMjA2QVN4Z2VZQ08yRWM5cE9sWUphZXFGRStzVWFtVVYvcHdqRGxxTmFTZ0ZneTdUd2VZa3ZPbU1uNHFTY3NIcXZKM3pHT0FpYWZ3YWgxdlVIZkNsWFI4K2F4TzJpR09VRjBKS3JaOVlZamJBYTUvNEhDbHY3akZQT2RNV1RPUXluZ29pSEFzM2prdVlqcENMRmxCNFZPaTNkMXdqQTFwblRkQktrQWI3dDhuVHZ3Ky9YYkZ2Y1FhNzNWSDdzanZvQnFEM2ZkTWZSY3VWcTRxVVp0WlQ2Y0dhZ1RIRDYxVHRxaDlvTUNaWGNEYlIxUEdabk5icXljc1dQRElLMG5wbUszLzNsZlY4Yytac3J5NmUxNzBtZkpNWnA3TzhtNkNTejYvVkxLK3lESmQ3ODQxd3BtZUtUZjZJblpBPT0iLCJNSUlDNlRDQ0FkR2dBd0lCQWdJSkFKYlR5cnUxWC9JUE1BMEdDU3FHU0liM0RRRUJDd1VBTUNNeElUQWZCZ05WQkFNTUdFZGxiV0ZzZEc4Z1RYVnNkR2xCY0hBZ1JrbEVUeUJEUVRBZUZ3MHhPREEyTVRJeE5EUTFOVEJhRncweU9EQTJNRGt4TkRRMU5UQmFNQ014SVRBZkJnTlZCQU1NR0VkbGJXRnNkRzhnVFhWc2RHbEJjSEFnUmtsRVR5QkRRVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNVmpLSFdwYkQ3VFNsTXhvY2pUbDZuSWY3eDMyUG1zUTl6R3VMR0dxQTBVUVpvSXEzWEx6TDZMWVV2SjVBNWcwdXlGR2xsSEVmR0FLckVhQ1E4RlZ2UFMvVWgwRnlmeldoUkF6aVRTaWpqTUlJVmpqalV2OW05dkZtY1hTY2dIaWc3T2R6ODg1OFYwa3JOSDk5cUdtM3dqZ2FPZXJUV210K2pYQ1VmbjAxSWtUUHd4RzJIbGdFZDQ1ak5MU1Y3Vm9vbCtLZThFMmtpNGxFa1RlSHpib3VsUjVHVWJwM25NaTdFNDdWTVFhM2JOd256V0Jic2FCU1NRaExrM201SGFLaGh4YTZ3SkRLNDdOaU1Da0NrZElIdVdTUUxWQWZtODVVQU9OdEVPUHdpME91SzNxYmU4eUtPRkdmMEtoQjVNTWVBeW03TVYvTTRXMGE0OW9nUEQ5cE1DQXdFQUFhTWdNQjR3REFZRFZSMFRCQVV3QXdFQi96QU9CZ05WSFE4QkFmOEVCQU1DQW9Rd0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFKV3o1eExNazVXTlliQWI2eU94RUNCb1oyV2VCL3FsNFZKM08vMy90TnN4T1luekxlV281NDB6UWg5ckFtYXh6N2V1bUJsc2tNcTR5R1BTTlhCOXljV0dIZ2tjQ2VTek4yd3Y4Q0l6REJzMm9CWmpUTms2NUxCWkRzc1RPQnRNVy8rdVRGSFFmYnVPM0lTTGhJMERYZlJFaTlORE0zamZrMTF4SGNzZmgyUk1WK1FkTmZ3VmFaWnJDcStvdUcrRXZrdjdLcXErb3l1MFZGTS90ejY4VEdsNnlsaFBGUjFxaDl3dHRwVmpBT09DRVFDTHFQMmRQMjhsd1lCeUNxSFFxVkh3YnVqdi9MWmpabktXM0xZbmRaaXhQUFNSQ0pzc0REd0p2aC9mNm5UeGc5WkUrL0pjWXJlNUNhSThuelZIYVNPQ2pOSjdGelVMRzY0SmlXT3ZRNTA9Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQVF3QUFBQWdDQVlBQUFEbmxVWnFBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRW5RQUFCSjBBZDVtSDNnQUFBQVpkRVZZZEZOdlpuUjNZWEpsQUhCaGFXNTBMbTVsZENBMExqQXVNakh4SUdtVkFBQUsxRWxFUVZSNFh1MWREWEFjWlJtK05PQWZLb2c2V08wUWNyZVgzTzcxUjQxb0hkU3FxREFPZzMrY1lFWEJvbFhSVEVuMjIwdGFLVGM2NG1nQnF6QmlFVVZwQmRxaXd3aHFTZElTMnVwWVNndlJ0cFRTY2tsald6SGFnanBTUmRyNHZMdHZqcnZrMjd2ZHZkMUxqbjdQekROM3QvZCs3L3QrZjgvKzc4YUswTkRhYXIycU9kWFpvcVd5SDlSMGEwRmN0NjdXZEhHVFpvalZDY1BxU2VqVzFvUXVIc095L2VCVHNEbU0vNTRaVDlqK0xXR0lnN0RmQi9zQmNEUHNmNFhmUDhYM2IydUcxWkhRelU4bVV1S2R5V1RIbTVxYWNpL2pIQUtCeWlmMGJCcitMd2FYSVBZUGtNZHFmTDhYZFdwbHMxQUEzMS9Rak93OThMOFM5YjhCWElSMituRGM2RG96bHNrMHNsbmtRTXhrUEdYTzlFSnRWbllHRjRzVXlWbmQ4VVRhZXA4YncrNkxha0JqNWl6ZGJOSlMxcnhFV255V3hnMzZFbVBkV29QUERlamY3ZUFUR01zSGFEelR1QzZoYmowTi9wWG1Bc3J1Z3MwV0xQOE51QkpqWkptV0VsY2wwOW1QSjFKbVcwdEw1K3VpSEJ1R2tYc2xqWDg3bmk0RXpWbms5QXZrc1FuNTdFU2RockI4Qk11UGpPV1AvLzRPSHNSL2U3RDhZZFRsZnRSaEZmZ2RMRzlIdTF3QWZ6cjU1akFPa2lRS2h2VmJHQjZDMC8vaSsyaU5lUng4RmdudlJmeGZhaW56U2s3TkUwaUlVUGJmNDN3V21OVE5kN0JwS0VBN0xaZkZBWTl6cDN5WlRTTURpUVZpL1UrU2c1UVlBSWZPbUcyZXdzVWpBL3JoVzdMNEJlcm1qOWgwVW9CMk9CK1RaVFc0Qi9rOE95Ry95Q2lPb1cxSVlINkg4WFB6OUxiY0t6aWxRR2hwTVp2aFp5SEd3RzNnNDJCazg1WjhvOTBHOFgwTmlTczFJdjJRR2s4S2RXc3p0NHNuSVA4UnFSOW1EUVhESWRaU2JCb1owSWwzUzJPWFpYWXBGNDhNVTE0d25LMWJlVzQxcEwzRkVRQ0psUFZXdERHMmZ1eVZyTlIzdEJUZFNqQjhZcklGb3lWdG5vMk9DekJneEROQkI2cFhLTUh3eGlEOWdLM0tjNlBja3ZCR0pSaStNY21DMFlENGZkSzRYb2g5Vy9ZVENaUmdlS052d2Noa0d0RzJlMlcrYWtzbEdMNHhtWUpCYXhscFRJK2tOUlFkbUdSM29VTUpoamY2RlF3NmNDcnpVM3RDTUxEV3VRc2QzUitBdzNLbkJRNUt5bmpoamR4T25uRGlDRVp1R2pyc1lXbE1KdHBpV1VLM0JtVC9GZkV1ZGhnNlVQZTZGZ3owYlI2ZmE2TW1uWTNrbER3aGFZakxVVTZlczI3dDBnenptN1ZnVXU5NkQ2ZmtIeENhNjJVVkdDTXE4ZzAyalJRbmltQm9SdllpYVR3bTJudGZXOXZDazdXMGRZSHMvd0oxNjNrNmVNWnVRMFc5Q3diRzlLMXNPcVdBdklVMFg1dGlEWnROYlNqQmNHRUVndEhXZHN2SjhFMm5BdVV4aWJwNWhXTTkyb0RmMnliOFgwS3gzckVORjBvd29nSG0waEpwdmphVllQakNpU0FZaWJUMWVXa3NKaWJDay9QbTVVNWljOHJ4UXBsZE1SUHA3SGxzSGhxVVlFUURKUmdoNHNVdUdIU1JEK3BJVitUSjR4SDFMRzlkakNIVGlNbFI0VmlHMkU3SFJiaEFLRkNDRVEyVVlJU0lGN3Rnb0oyejBqaE10SE9lamwyd2VRRlkvbEdaZlNuRmZEWVBCVW93b2tIQ01CZEw4N1dwQk1NWEtncUdJUzV2VHB0bmgwWFUrMDVabkFKREZBekQ2RGdkL3A2V3htSEdEZkZGTmgrSDBRYjB3YU95TW1PRStPVU5JL2NTTGxBMTZsMHcwRjY3NDdxNHBScEdjZHFhN2t1UjVVdEVINDVnRG13S2kvRFpqOC83SUVTMzRyT3plYWFZeldsVWgzb1JqSm96Uk1Hb09BRU5hMGkyZFRHR2VFcDhURkptUER2WXZHclV1MkNFUWJxaGtzT0ZCc3lsaTJXeGFzVGo2TmQxMnBzWHY1N1RDUVlsR0M0TVNUQmFXNjAzb28xZGI2cXpxVnRmWW5NNTZBcEJ3OW94b1Z3Uk1ZbEdOSzM5MVZ5aUtpakJpRVl3bWxQZExiSll0U1RhN3FIaUErdStvUVREaFNFSkJ0cHZoZFQvR0hXeHY5eld4UmkwdFBpRXRId0p4YlZzWGhXVVlFUWpHSFJ3R3VPaDBnVjVrVE9lTWkvaGhQeERDWVlMUXhDTXMxcXRWZ3p1OHJldnB5eVBqd0h3c3BWaC9TdVZXaktkQ3dTR0VveW9CQU81cDgzM29wK2VrOFdzRmRGK3dhOFNWb0xod2hBRUEzN1dUUEJiUkhUY0FleEd2SlROSGZRTU5jZjZCcytQOWVibnhmcWVQSldYMmtDWnpIZ2ZFeGpDR1FJbEdORUpCc0YrRUpFdWRzdmkxb2JpVDV5S2Y5U05ZT2pXWmpUeWZhSFJ1ZDlBSG90WXBXQTROeHFKWTFMZlROVDVLMndlaTYwZk1pQVVENEtqQmZibWo4YjY4c3RqMnc3YUQycWhmVS8weHk2WnJ6SFMycXVscFRObCt3eUl1aGNNakJVNjYxUU5tMmN1UG9QRFJZVFJCanBiUjJNQU9WOUhaek9ROTgvdy9mWXdpUEh0ZmplMGJ2MkZrL0NQZWhHTU9yc09vL0x0NjdvMVhEZ1Z1aUUvQndMeGp4S3hLT1hHMk02ZHRpMzZ3OE9SZG5HUDdUY2drRnVkQzhiVXZBNmpsa2lrTzgrVHRnMklNWFNZemZ4RENZWUxxeEFNTDdldm83N3R0bkYvLzBuWWt0Z2hFWWx4SExxYXpKMnRqRXFiczlpeVNXWG4ydjREUUFsRy9hT3NZQmpXQVRiekR5VVlMZ3dzR0xscEtMdFY2cE5KSFZaNFlITGYvbmZKQldJQ2gySGRRRVhpNmV3bE1yOGxkSjVIWXR2N2hSS00ra2M1d1VENzdHVXovMUNDNGNLQWd1SHA5R2RLWE1YbUVJeDh1MFFjWFBqWWErMHltVXdqMnV0eHFlOGlvbzRYMnZZK29RU2ovbEZobCtTUGJPWWZTakJjR0VBdzZIb0s3QTZVbmNpbzU4R21wc3RlZUIxRDc5Qlg1ZUlnNGYzRHAzT3BHT0xNbC9rZnh4Mnh6RnJmajhWWGdsSC9xTEJMc29YTi9FTUpoZ3NEQ0VZaVZmNzJkV2JwSmR3OSs4NlJpc040OWc3dWgzVmhGNFBGNlFtSi8xTHExZ0l1NGhtVkJBTVQ5dTd4NzB3SmcvVFlmVTZoTEpSZ1ZFYUZYWklIMk13L2xHQzQwS2Rneko1dG5nS2ZCNlMrbVBqLzBJd1pIUy9uSWc1R1J4c2hCZ05Ta1NqbFlpNVJBUHJ1VWxtY1ltSnkvWG5HM0hFeEs2RGlGa1pFeEJqWXlDbVVSU1hCUUR1UG9BNWJvMmJTeUw2ZFUvSUUzaXFVbmdZTm0yZ0QxN04wK0c4VnArUWZTakJjNkZNdzRycGxTZjBVRVRGTk5pOUZ6L0RNV0cvK2lFUWtIUGJtTjhTMmJadDQrYmh6ajBuNUozaUJkRnMxbC9BRTFMMnVCYU5XVE9yaUE1eVNKeUR2NzhyODFKeWVyeTZXUUFtR0MzMElSdE9jM0dsb3A4TlNQMlBVeFZObDEvVHI4cTJ4dnZ4NjhQa2lzZmduZmw4ZjZ4OTBmUVVsNG41R0dxK1l1amh5NXF6dTEzQ1JpbENDNFkxMUtSajBXa2d0Ri93bVJTVVlMdlFoR0Y0bUdBYUxZUFB5MkRnMFBkWXo5SDdzcHN5TjlReFVmQzBpWGZ5RlB0b25pMWxNR3F4Y3BDS1VZSGhqM1FrR3hDS3BXKy9tZElKQkNZWUxQUW9HdllRYTl1WGY3MWxwNjZKS2xIdDgvUXNVUiswWFRYdUFFZ3h2ckEvQm9MZnIyUWZIci9HemxlbUtLU01ZdW5rSFRTekVsTDQrc0ZhQ2dmbytCKzdXak96bjJMUXNuTmNHaUQxVVR1YlBvZG5GNXBHQXpwZ2d2dXRXQnVyNkg3dE91cmlVaTVRRlhTV0tNdC9IQk41RWF5WFVyK3c5TWNFcGp2R0s0dmZJYndWZHc4SXBsQVdOQlpTNUR2V2hONVhuNGVkb3FkOG9pRnl4MndrK2l1LzBJdWlsOUt3VFRza1Q0bWx4RHRyelJtNVhqUFVvMnBYZTZHNDlnanh2dytmQ2hOR2hjZmh3UUM5amFUTEVHOXhvR0ZlV3ZpWStVdVNtMlErY29YZHk2TllpTk93eVZQckhHQmgzSm96dVVDc2VUNW1YUWZGL2poZy94T2ZYTmQyOGdqbzBhSDNwTEFsTk5HZHRMNVlpNTV2UWdiZWo0KzZnLzlnc01xQU9IM0hhU2Z3RWJYY0R2bWVUaHZVcFRlOTZ5NFF6TTc2UW05WTBaOUZwZFBjbTZ2TnBzQXQ5c3R4cE8rdlg0RWJFMjBvVENjc0dTb25sK0IvZjZXYS9WY1Y1MGFTUHg3dE9EZUVCeGcxMHh5K2Rrb1hnZkFneEZpRGUxOUFPMzBNL3JFUU85eUxtQTRpL0JiKzNsK2Jua1BJSE40UHJVTCsxK0Z3QjIydmhveDFpZjFHODFYcGJ2QTI1WmpLK3IybHhSMjRhMWQ4UlB6RWZ1d29XY3NFV2lKTXpZaitJM3crVnRLc2hIZ0gvQVBaU25xalR6Zmk4eGg2N3VuVXVQZHJBMjhOeFlySC9BejN0STRqNStUT0xBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiXSwiZXh0ZW5zaW9ucyI6WyJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiIyZmZkNjQ1MjAxZGE0NzFmODIxYmVhNGJmNmM4Njc2YSIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOnRydWUsInVwIjp0cnVlfSwicGluVXZBdXRoUHJvdG9jb2xzIjpbMV0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN31dfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjItMDUtMTQiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJJRFByaW1lIDk0MSBGaWRvIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyMjAzMTQwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMi0wNS0xNCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI0LTA2LTE4In0seyJhYWd1aWQiOiIzMGI1MDM1ZS1kMjk3LTRmZjctYjAwYi1hZGRjOTZiYTZhOTgiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjMwYjUwMzVlLWQyOTctNGZmNy1iMDBiLWFkZGM5NmJhNmE5OCIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJPbmVTcGFuIERJR0lQQVNTIEZYNyJ9LCJkZXNjcmlwdGlvbiI6Ik9uZVNwYW4gRElHSVBBU1MgRlg3IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfSx7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJpc0ZyZXNoVXNlclZlcmlmaWNhdGlvblJlcXVpcmVkIjp0cnVlLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJzb2Z0d2FyZSJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJibHVldG9vdGgiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNEVENDQWJTZ0F3SUJBZ0lFZUtSS2hUQUtCZ2dxaGtqT1BRUURBakJsTVFzd0NRWURWUVFHRXdKVlV6RVFNQTRHQTFVRUNoTUhUMjVsVTNCaGJqRWlNQ0FHQTFVRUN4TVpRWFYwYUdWdWRHbGpZWFJ2Y2lCQmRIUmxjM1JoZEdsdmJqRWdNQjRHQTFVRUF4TVhUMjVsVTNCaGJpQkVTVWRKVUVGVFV5QkdXRGNnUTBFd0lCY05NalF3TXpJNU1URXpOalU1V2hnUE1qQTFOREF6TXpBeE1UTTJOVGxhTUdVeEN6QUpCZ05WQkFZVEFsVlRNUkF3RGdZRFZRUUtFd2RQYm1WVGNHRnVNU0l3SUFZRFZRUUxFeGxCZFhSb1pXNTBhV05oZEc5eUlFRjBkR1Z6ZEdGMGFXOXVNU0F3SGdZRFZRUURFeGRQYm1WVGNHRnVJRVJKUjBsUVFWTlRJRVpZTnlCRFFUQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJNT1RhWWROUGxXVVZ2VTZPNmg5RXliT0RrTkEwWW0vMU1iR3VPeEwyU3p6T3RhVXNYZE56ZWt1SEpuS1Y1WGtCN28xTXhmYmNLelU4NmVONVk0eXhYK2pVREJPTUIwR0ExVWREZ1FXQkJTK01GelBLU0Z0ZWZFSEg4ZCtqb2pkSFdwZzd6QWZCZ05WSFNNRUdEQVdnQlMrTUZ6UEtTRnRlZkVISDhkK2pvamRIV3BnN3pBTUJnTlZIUk1FQlRBREFRSC9NQW9HQ0NxR1NNNDlCQU1DQTBjQU1FUUNJRU1ycUFjd0x1QWFLU1U0MDVCeUxEZyt1dForOWhYdXVYSHkyRUowUFczMkFpQnBpK21WU2R1cFo5MHlhQzhuRHI1cFRPUFZVWW5heTdqTFNiY2g4MFdxbHc9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFRQUFBQUI3Q0FZQUFBQ2I0RjdRQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUxpTUFBQzRqQVhpbFAzWUFBRzFuU1VSQlZIaGU3YjBKbEdaWGRSNTYvcm5HcnVwNW5tZk5za0JDYUFLTUJBYUJKUHdpYkdMekRIN0U4VXRpTzM2eDMwcklpcC9qZUszWVdYYWVzNTdqckNTZTFvb1hOckpCSUFrSk1BaUVRQWdoTkhlcnU5WHpYTlZkMVVQTi8vUys3OXZuM09FZnFxcGJyWUYyZlZYN1AvTzVaOXI3N0hQdXVmZTZPY3hoRHY5d2tmSG1IT1l3aHd2RXFsV3JPdnY2K2hiUlBsNnZpNWM2TTVrNlRhQ1l5K1UydVh4ZUR2M21jaTRISTFNbzFHdFRsU3V5K1N4OWhhekM0TVovdFZyZG5zMHd1NnhEWnBsc05sdlBLbXJHMVdxMWpRZ3AwVVh1elNCT1pjdjJYSGJaaXUzd09lRHE5ZlAxV3YzRTFQalk0Y0g5SjM3bjRKZis4b3ppdHNHY0FKakQyd3AzM0hGSC9zaVJJK3RLcFpLYm5KdzBUd3ozRXY3QUNIa3d3Slo4UGw4SE11U3FmQzRQeHNuVmFhOU4xYlpsY2puakZRRHgrVU9lY3RWYWJSMDRxZE5Dd0ZSZ1ZMZ1Jsa1ZZWlVYR1pmcWRtTGVlQVJpRm5GZXYxMnBMY0sxbDlJT0pLUEJYT0RQSklwdE0wYnY4ZnpEVENGS0JZQml5YWc4RXRnMW1DWVBGbzNyMTlhNndicU5sNm1ueTdCazM4T3F1Zjd2M0MzLzF1ejVhU3pTV2N3NC92c2lBZVRqQk5HRndjSkE4c01sY01ZckZvc3lxcTI0R0V4WENETVVmMnNobzVYSjVMWmlvVzB4RmZ0SVBma0dZcVpaaFNscEF0NExKSEdZbjQ4d0h3eXozYmdCekZSbkRHS203V2dWREJrYWl3YlNNa3lVVFpncm1Iek9iZ1hZTy9HQUd4TzZMWlN4TDF6cVVqTjhPelVFdDRqWjRtYk5ObnQ2N1RXaExaRys2eFpVMmJVVWluelBNOHZDUU8vN0NjMGNxUFlYTkIvL3lMeWNVMEFMSjFwMURDOXh3d3cwRndQUzRCcHc3ZDI0OXdveUw5RnMwQThPM1dxNnVnbTBlMUVBeFUyQ3FURDVUcjFhcW5GVVdrWW1Nb1FKam9mT3E5YjVxdmJveW15SGpXUGZRQ3RaQWtub2Zac0NWU2FZd0JpUHIxRHN3eTYybFRmNHl5RUFjUzJJazhYWXFMYWp0UUVPQUgwNzZUU0VLSXhMaEtmOEE4MHo3SjF4TllSNHB6K2xueElEWTJpWjIyMHhpekNKS0doZWM0UFVpN3IrQTNLM3ZjUjFicjRBTmhWRjU2bTdxOUNsMy9JYy9nSHgySDl2M3hiLzZJbjFib1RtM09RaHIxNjd0V0xCbzBSLzBkSGY5REpobXZqRVJRNnpKUENQNTlndGhnQjhRWnNTakl6MVRZRUNuM0lEY0xRYTY5MmdLZ2ROOG12MEQwaUhlMVQ1NmE4d1lmOFljREROR1l3T0dTTmFZczh6NU1rSVlSQVJybjNTM1IrbjlIM1RGamRBQUlrQUFEQTY0NDA5L3o5WHF0VWYyZnVGemQvdUFKc3p1Q3Y4QWNmWFZWMzltMGVMRi8zMXFxaXlWU3BCaDlyYURzMDFBKy9odFExS1lYYXdHVEp2b0FydCsxdEYvakliVVJUWHEydzg5UC9kcGwrMWY0RjBBNmpVNWVOS2QvTjRUcmx5dlRZNVBuVjl3L09HSHgzeG9DdFFmNTlBQ1BiMDkxMkNkNmlvVnJKQXJOU080cTlXNnFOYU9hcTJwM283UVdXbmlHcm1aWEVRb25LaVZYd05GUUp3bXVrQzB5citSaE9ZQTFDQng1ZUFPZmtsMzhMdTAxQkpSZWQ5c3RDcGhncWhLWGlCbGUrYTVUQzRQd2hJekVKZVhES3U3VW1laDV3UEl2Q1htQkVBYllPM2VSZVlYZzdYcXFEZU1aa0lpbnJkeU9USTlNWTVSbEh3R1NxYUpxVlhlQ1dyemg1U2dnT0FPZmtsMzhMdTBhTHlDQ0Q5SmFoMEoxQmF0SWpkUTQwVkVyYU5HZEJISTVNSDhZUGhNbG94dmhCOWR6dU9EM216Q25BQm9neXh2QVhGS2J1eWdRQUd0d2xwUTB6Z1FnVDFlRC9rLzVEUnJtdTFmcTdTWE0xclZWaTNScXQxRkNKK0pFbmtGSlAxaWVwMS9uUDNGOE53dEJuRmpHQVhRWFJscVZmVTVBWERoOEJwczFNaU5mMnhjTmZEcy9rSlhwMmtPRjQ5VzdYbXBhVHEwaXQrZUxuNGNKT0pKcXJRZ3p2aGtlbWtCbnVBZlg4K3QyblR2eHpmUzBvZzVBZEFHMVdyMU1ta2JEWUFFd3FCb3BpRFVPS2dpQWZlMklKdmQwdFFxM3B0SmFxWUd2emVDd25WQWNVK2wvbmc3dWJGdEZKUC9aczNXc3U0MjJKckE0TXNTbXphdGZWZHZiOS9IY29XODduL1hxdlh0ZmtFdnFHRWcvMmhBMWQ5UXE5YzZRbk9nUGV2WmJHRlpMbGNxelc2enFFVXplcThXSVc4aWtsZWZUVVhlMnRKZWVyd1o5WG5yMjZ6LzF6OXJHa0FDNDhlT3VLRW52K2tteTFPdVdxdTdtblAvYzkrRGYvMFpIeHpoY3V0eFljMmFOZStidjdEdmF4QjhPYnVGNXdkLzJnQmdTL21abXhLMHE2c0hicTZ0THJTSkxzc21iWU1mOTdxK1RjdmZvbGpUbGJULzEvOXRrd0FZT3dvQjhOMXZ1S21wS1ZlcDFUaXNYOXo3NE45YzY0TWpYSlpMZ082ZXpvL2tzN25jMU9Ta0dvRDM4a1dRaG5TWEl5cTdjdG1vSXFycXRsKzVVdUVCQ3E4bDhPZENhRGE0MkhUVDRVTHliQlgzWW1nbUlBNGJjUllVcTd4dkppV0wwQ3I4RWxJMlRkbnBDUEVicVdXZW52QmpiZDJpYjRJTDgrQzJ0ZmY4Ny8zeVRPQ3lGQURaWEhaenVVd201bjMyQkVFUGdwRW14RGZpZnFtMzQ0ZjM3dFBycXRkSlhLZUJkUHkzVmFkSFlibUxwSkErU2EzaWtWckZmU01JOWNMZ2JFdSs3cm1vRFFLMXl1dU5wc1l5WEdKcXFIc3JScjU0QXBNM2tDRjJ3Q2htcytPYjVVZ2dpbm81NFpwcnJueTRXcTEvdUFiVjUyTFIwOVByaXNVdUNKTzhTWVZMQW5ZSURPYlgwUEp0dk9jd2h4aHR4bUh2ci8wYkRKejB5Qms5ZWdoTGdNZWgxVUxUclZhNUIwRDhFcFlCLzkyc2hzdHl2RjE3M2RVUGxhY3FkOXY2LytMUTNkM2pPanQ3WGFGUWtrYncrbkZKTXJtODBkQkViN3NXbTZGQWIxVjVlMzdsTi9Icldka2JvMGNPdTlQZmU5elZJZ0dnVTZmL1plK1hQdityRnNOd21RcUFxNzQ4TlZYNXlPdnBrYTZ1YmpkdjNuelgwZEd0NVVBejNyanVUZ3VjUzN3ZG45MGxMMzFEaHE4Ny94WlM5NUtYT1luWG1ma2JXcmFBTmhmcC9HZS8zc1RKRWdCUGZTc1dBR2pQZWliejk5QUE3dlJSaE10VEFGenJCVUNFV1ZZVDBSZ3pCN1cvV0N5NWhRdVhRQWowYTJQUTBMNmJwOU0yTEdqbUlUSWJ4cC9tTXNLTTEvSkJNMlFUb3lIaXJOSTFGSExHTkRORW1OVTFMd0lYTXZoYmxtR216cmdBTk9Va2o5bmxYL2duL3lKNWd4dFV4eExnc0J1Q0FLaFh5cTdNNTFsUVZzUTVzUGZCejYrM2VJWUxhWU1mRzJ6YnZ1WEw4L3NYZkdUcDB1VnVjbktpaVNsUy9RWTdtaVp5TUl3dnlqaHg4b1JiczNxOVc3Um9pWnVZaU4rbkVCZzltV2ZyL0pOaGhPVWRBWTYwTStHQzFWeitOeGtSYUJJMkRmRlRTSGkxQ1BXZWNVajdPREhTVHJoYUptcVBhYU1yc0gyTUtLVFo4b1lqWGJUbTY4NFUzZ3B4bXRuRmJ3UlQ1VDc5eStEa05DdVBRQUJRQTNEVmhBQ291N09sVW4zSmpnY2VtUExSTGs4QnNHN0Qyb2M2U3gxM3ordnJzOTE4ZXFLQitOZSt4Z3FOd05kUkxWcTgxTTN2WDZoYmgySDNuTzNNblZmYk9RNStURW0vc0NzYi9OQkJhbmpyM0ViaDBkcU00eEVoVElBUmhjZ2V1UklCYWJUMm5qNWQyZ3V1Vm5FU1pTVGthdkFMYUJkbS90RlBoS2FZTGVLazRkczY4VHR0ZEdER0xCT0JiYXJWQU44YlRYR2JFMGMrczRnYm9KQTJ3WmxmK0F3SFpTcVlHc0RwNzM4N0xRRGduNnZtRnU5KytIT25MRlpvdWNzTTZ6YXNmcWlqMkhsM1gxOC9CQUR2NXh1REdrL09yc3BqWTJQdTNQa1JTK3RiVnZkdzRlWWY4elhtWnY2OHhXZjVjckRvYW9nbklaR0RrUERoRWhqZVA1OHZ4SEhnejF1RWZKdWR4YVdKcThEVTllQVgzRG5FNVFWQ1BMNXhLSnRCZXJ1b3lxQVN3c3FsVEN1b092NG5hWSt0NmNFc2w3Y1RQalRsbDBTVDl5dzRxR1dNbHA1V3h4bUJ0SmE4VlNacFA3bWFvdm5VclpLM2hJK3YzeGFZZFQ2R0tIcXpwUW4xVDM0S3YrbDJHZUZKd0tjaEFDb1Y3UUZVTVU2WlE3WlNYN1hua2I4OWFyRm0zWm8vWGxpM0RnS2dJeFlBNUFaVk5KaXpxUGJBd0lDcklpbjNBamdJQ2dVd0xKaVlUTTg4eVlCa01ESW9oWUFFQWdscHhjZ2crb2w0QU1INzg5clZHaDh6Wmt3SWdKemx3N1JUNVVtOUkwQjVNU2ZHUVZGWjZvZ0pjVDBLQXp1b0JIL0daLzZNbXRCQUNLWmpPVmptZkQ3dmhZMlZnU2JqRm9zZHJsZ293cTRUMDhpckV0V053a3N0aG5nRTQ1VktIU2dmU29QcnFRendweEF5Z1daMVpuc1E0VnBFckRHWXFWLy9rN1NuZnUwL3Nwc3R0bnVYZDV0bkhCVFo0cERZQzliZ2prSVQ0UWsvd3VlVjhvME1XTHlkOENXS0lXZnMxMlJMR1hGb0NyaCt5eER2My8xTHZ4TDFVY0RvOGFNUUFOK0JCbEJ4RlM4QTJDdlZldWFPQTEvKy9CTVdLL1RPTk9BNzhjcmxzcjMzcmdXV2drNTZNL0V6ZTB5NTllUFY4UkpVN3FheWxMQmc0ZHNoSjJzMWhaV3kyWHFabGpKK3daQ05NSytDTzNSby8zL0dnTHl0cjMrK0dJdlZ0UGJCai8xSERTcHZJYllSUjQ4ZGxRRG83T2p5UGo2dG9tVmNEZ00rbDgyN0tsUXNNbUZJcnZmS2h0eWpRV2hwRGJSa1hBbU1WeXAxZ1VseWlsOUZSNDJQajdqejU0ZmR4TVM0bUp3WEM4a1lod3pMdCtEU1gyL0Q5VXhOWnFXYkdrRVlGRXhINFVMVVVCRXlKWXNUaElRRUdRYUd0Qmo4NWNuc1lPQnlCVzFMdndReE04Ymx0YmliekhEbUVRa2hlU0YvTHJmZ1p2d0Myb2V2UzJUejErcThqc1hONjkyanFITklBd3ZkRU5pNmZnWFhaNzRVUWhSYVFZc3h3WUpFS0N1RkVQMTVnak1JRytaQlArWkJ2eHFFTEUwVGRCUnVpZnFrRU55aHBRTVExOXRpeTRXaU9lR0Y1ZGsrVWpKazNpLy9YL2hObDMvc3hIRTM5SU1nQUNwYUFuQ1lWdDBzQmNEUC9kd24vLzNwVXdNL244dGxlb3VsNGtLMEhQL1ZpWHd6anIzTmhoNCtnYmVvLy9GakRZK0NOdFFoZlVGRzlsYUExbVIwcnFuWnNleDhEbWFiSFJzN01jNkFOZzd3UGEvdGNXUGo0NjZmR2dEaVdveUVFSmdGWWdIQU4wa24wb0NueUpZVUFHUzZLdFpYaWFIaUsrRGR5WExheFQyeUxRUkFGUUxnZkNRQU9JQUZaSkhNbjlkbSsrYnlPVEdZQmoyRkFQS2hsbUt6YmxTQ0ZtQU9iWkFNZ04yV0s2WVpXSnRiQlBhSnRCRDJoYitTeFRWdFF3SkgvbUJ1TFZtQ2xnUS9oRE1rbExNS0ZaVnBqRm50ZXV4dkNrVFdNekMralR0ckUxMVY1VEZvZkNUaXNwaHFKK1JIZ2FNMlJ2NU14ejZqdHNMMkwwQzdZMTJRVlBrbjgyeVBtZVBNS2h2QklrYlJaNTB1amQ1L3l0dUF5YzZEQURnSkFSQnBBQmNoQVA3UGYvRXJENThaSFBwd1oyZlJkWFhhNjlSRFEwVm9tenFOK0RhYVFRTVlEVDhkVWxtM2Q2UVFRcDU2K2lrM05EenMrcUVCY05CWmtjazRaczRHUjQ4ZVFjUFZOTnNvVFNJWkdZNERpd09KZzA0ZEY4TFIwRW1uUmtOb3M4aE9EYUN6aFFDZ0JqRGtCUUJuTnNSblpvb1I4dlFDQU8wbkFjQVBUOUNOZkRoamFvWlhIRW1xQ0pFMWxHVTZORVVKSG1ieU40clNGUGRDd0pJR1d4c2dRUHNkS0hmRVdQU2owQU16czJVaURReEd6bXM5bXFUQTlBRnNMekk0MjVtbjQ2YW1KaUhnR1FjQ0hPblp6MzE5QzZTSndFTnB3dVdtUi90WVVYbG5oRVhVNzZ6VEdISkxscm11ajMwQzlVKzNJSmNBdzg4ODZRVUFsZ0NvSTJ2VktBQ3N0VnFnQTRPenU2c2JaaWNhcFVQRVJ1S2FPS0xDN0tpcnN5dEZuRlc1bnB5T09MZ2p5cE5Lbm9LN21mS2V5S0RHTWtTd3hlWnNZTEV4UUpGWHZMWTJ4Z29Ea3BRQ2tqVGx6amowREtNaEdoVk5NUzhLeWdWNVVtT2dwSzlnUnJXQjdRVVRrQ3JsUlYyV2lVaGVLSUdDRDZzVEtQWk0wTFJnUGhheDdSOHk1cDZKWnJGYW9LcVdLcnpGeXdlK3lqenN3b2U3WUU3QWoxU3VURmw3ZUpvRXcvTmhNS2JsTy9OS25kMnVxN3ZYelp1MzBDMVl1TlIxd0QwMFBPZ09IZDRMSVh3ZThXd1p3clpyNk9VR2hCaU5oRjhZVGFTUVJ0QVg0NGwvaU5TZVFqN2VqckZadXVOT3RaSDJueUxDWkhKcXdEUW1kUXpSdWtPbUVRQWQ5YTdPSHRmVDArTktXQWQzekpxNlhTY2FNeUs2azVUd1kxdzJ2TXlMb0JLcFJPcEtrZFJXMURXcWJySU5CRnFTMUFMd1prTnpoejFOWkg0ajloczdRZ3YvQnFUYVhWQkVUK2xBK2hqUythUmRDY1FKRU1rWWhldG1DZ0ZxRG1ZYTh6Q1RwbHpwa2ZhOENJUk1ZcksvdEcvYWNhbGdtY1ZYdkJoWW9TZ1F1UGxLazJPeGQ5NThMQjlIc1FRODVFNmNQQ3Jod2ZZMnhwc2xJV2V3YU9vditESkNVL3hBY2F3MmxNd3Q0d3BYWCsreTh4ZWlHcWlMQkQ3TnVwdUNBRHUvZjdlclFVaFNDR1FSQnYwSnFacmJpbm0xeE8vOGg5OS9hUFRzMk4yclZ5MXppeGJwODJjZXVIUXFWWnNzRUtsdDVpazB4MHI3d0RWdFJzMkJmL29YZitMMjdOM2w1dmN2TUNaQUhDdnp0Qmw1V0J3dUFkaHNYUmdVQVpZVENNeXZiN2xCNWE1aGdJUnJNRUkwSUdHa3J0WndhUzRCcUdWbHN0emtxbU9nTmV3Qm9OT1lyOG1XZUppelZhbVJVTWpaSGtCWVN0VnQxeDRWWlJpSmR4MGlRZVZqR1JvS0V4Qzgyd1FicHV0WGhzUWxqWDliSUVTRjJUWk9DekNKdFRmU2NZejV3ZGl5VkJlU2NRTzBSd0VoZXY3OEdTME51SjhVcmpzOTRqaHRZemNFbUhNMmVjZklRQnZ2dVA4WFlOcG5BZ09vQVF6ODZQdHU3TkErakIyTVlJNGg1TTJpWTZSV2FxNndjZC9ERHh6eTBkczMwUi8veWY5NGFQamsrYnZ2dWU4dXQvMktiZDYzRlY1SEs3OXV0R2cwZVAzaVp6N3R2dnZkSjkzOCtRc3VmaFB3NkZGa2xaSEdFaU1lY0JJQVdJUFdvSkpHQTZPdXBqWTdBV3QwdFliTFNnQkFZOHBrTGw0QWNLbkVjaGdRVjBzVjN1cGoyVXdJNkc0Q0w1NjZma05oUEdZUkJXQUpaRndFbWhNMStreVhMZHZBTkIxYm8zUGZRNHg2Z1FXYWZVd1RCS09qNTNTdHhZdVhZcWxwZHlYYUlkSDcwemthWEVDVHgvUW8zSENUeTE5L2szZkZHTlAzQUI1M21XclptQi90UmU0bkgwQWMvT21lUng3OFAzeFVvZTBTSUR5alBUSXlyaDNuOXBSOUM2bEZlUXFZQlZHcjVFeDhjUWc1Y0xpQUVyTk5Dc244d2EyZVBidy9menhSU0pBaW1OMVVzL1pnYUlqUmVQVW9KZktsc0FoazEwRnNiNVcvWHhMRUZNSmlRaFFqeTdJMU1XeTZjRkFjS1JETFl1VVJ6UWpXMUJQYlBBZ3hJTW8vQWx1Y2EvWEVuKytyWmdvYVVUTzFDMk43ZEhYTmt6RGxzbUJreEE2SDRWK0V5NlVRdkVUNGljbktFRHprMWgrY1RYRm5vSTRPbDd2eU9xUktnN2RxaDNlK3FJMC9NcjgxbGhtb3g4bnFaSUgzQzFOQWRxM3hoMy80UncvdGZIbm4zUi83Nlh2YzdYZmNJajhOSExQSXpwNlFDZExUUm8zRVFlZmprSmhZZGd3eGN6T1BnTGdvYWhZNXJZRllhLzNSOUswUTNHYTN1QUcvK3V1LzZyNy8vZSs3K1F1d0JHQVArdmlFMHN3Q3VnMVlyYnZ1bm5seWgvUUJrUVlRbGdBaG1OWHlwdjlwU0FtZ0REeUEwMW5xMXNCaXJKUUdNR2wzQVVLYnhmbjRPa1JMQU41VHoxczh4TkVTQUg4MDdmWVhCckVTd0xlekMxRVFEOXFGOS9RRXYxWnRBcThtWHg4dktvZCtXeUFLYUk3UjZCTkhUWVpZZlNONHAwWU82aEIyL2FYaGNKbWowTWFjWndFa2lkS0c1QTJYam92RnV4QlZOenB5VmcrSWNVa3dlM0Q4ZStzMFVKUW9YdnNFK1J2ZTVmTFgzZWhkTWM0ZDJPdE9QL2MwMXZ5MitjZlpuMlBEZURQemlUMWZlZkJ6UG1xRXFIcU4rRGVmL1hjUFBmUDBVM2YvelAzM3VxdXV1bElaelk1d1VUSSs3QzJGZ3NnUGJraHVPejl2SjlTNHdTYVRuWnB5VzBkTDVjdkZicVVEYWFlZWY2cE54djNXNy93Lzd0bm5mdVFXWUFsZzE0bkQrQi9ESENrdkR3cUFDbFpNUGIxOWNqZkdsQUNBQ3M0Nmdnc3RDTlpVdCtuYUNFTDVYS1hzNmxQK0dRd1VwbGlBQU1BU0lKdmxyYXpwQlFERHFTbEVqTmNnQU9TSFBIVWFqMjBEdTdXaFdzVmwwUTc1SzYrUnZYcm9nS3RQVHFnTW12RjAyOHpuaTNyVStTbTA0U0dWTjFVYnh2ZnhDTm95M1QwdUV4aUIxOEsxZldFTkxEL1NDYWhmOWRnUnN5dGJ5MXQ1NnQvaVdYOFpXUXdQT0RSeGVEdGhNN2FsYlJUc0ZpK0s2SE9Qb2ZaQ21YbmJNTzl2SFJMSk1Sc0Q2VFhHRUk1K09UVTA0QmJPWCt4NmUvbmV5RFpJSkUvbWxBWkM3SC8yd0JLazlQRlBPYXdmdlllaE9qbmxqajcrcUt1Tm5YY1psTkUwZ0pxLy8xOS85TFd2ZkpuZkI3UzFVd0p4elJzUUdvRUhNcmlUT0h2Q1JWRUFrdTFJSnlrUkI5UWMza0JXK0lTYkpzb0Zpa3lXRTJFVUt0SE90NW9VZG04ajVDMUxrdkREOUJGRlhvYkdVWk1DQnRDbUxTNjNhbzNMTGxzUlVVNjAzTXlseTExMjhSS1hYYmthdEVhcGxMVXVZT1V6bUxzZHJCanRDMk1NWUlJeFhoY2JVMGhZOUpvS3EwSGNCVTJBZ21ocTB0VW5KbHg5Wk5SaFduUFFiVjM5ekxCejQyT3V1TzBLTEtkNE81V2Jpa2pEdkhrSGhNSkdqTVo4Y2ExVmExMTlmTnpWejU2QjBEamozUEN3aEVkOWFOalZoazRiblQ3bHFnTW4xVWU1WlN1Um5NSXlXUmZVTzlIZzdBZnJiK3NUODBWOC9NdkZIeXNDd3YyNDRGMFBUU3F3ZXovZUN0TkVvL3d0VEgxc3VRQThIcDExSGNXYzYrNHNpcnBLQmRjSmQ2bVFkU1dFRlQyVnNLenNLSUx4UURRWEwxam9UcDArNmNiR0oxUzJsbisrL1ZsWGJ4amh5b0gwcS9CQWNxYmlORkp1N2NZbTVpZk9IZHpyYXVPalhJVXFIdXVISmlSL2pOY3JtVitDUnhQekUyMEZRTmlFSXNOeWJSRVJHenVpMEFGdFNNeWVwTVk0N2ZPUUZpRVRibCtXTUNoQ1o0c1VuZ3p6SFV5RGRqbTlYMlMyZ3hLbHJXMlM1RmFzZERVd1RCVnFWM1cvSjlnckIxNER3WVM3Y25DZnF4NCtpRHhzMkdVWExiYkVRRHBiNjdKWllacW9HRUlhUUlJdk8vVUcxOTNyS2llT3VmTHhvMjVxejZ1dU1uUUtkTnBWaGsrNzZsblVBUXhNcXB3NzY2cm5ZRDgxNkxKTGxscDZscDN0eUl4aGhMNTNFR3hLTnpUb3FpUG5YRTBFSVRJNjZtb1FLTFRUWDJGakk3cDJadjU4Tkp3dFdVSS9CdEkxV0dUdkh6RXNTU0VHMmZrREN1R3BTU0l4WHZTbi9CTjVJcHlxUEN5b0VrOHE4aENWRWQwK1k1blV1dXcwS29VZzI5ZmNQUkNpaXlBRVRwNDg1aVloVENQR2JVZkpQM2lZWUVpR0IvSzJLS0NaY2x1dmpHSUg0c25MMFNNSE5ldXpqQ3kvNmt5N3kvejIzcTk5NlRBc0xkRmVBNkQ0QUpJenVzalAza2FORE41QTdJeUxvblNIMm94dkhSamMwZXhQb3R0WE9wU2JiZ1A4Z2kxWVpnUWFrcnU5Vk8wanNMRTlvSHBuTUt2V0JnZThSeXZZeGJKOEhxRmNkdFdEKzExbTBSS3BjTWxpcElzVXJwRzRWZ0p0aXg5Rmorc3FPeXFjV2JqWVZVNFB1cWxkTzF4NTkwNlVoUzlMUlNqYktraytQcWxDWmwyd1NQVk1nb3pQY0ZlRWRzQTdMQkFxVVhvUkp4bGZtS1EvUzRXMEZTdy9jbXZXS293TUdjWHgvWmNreXlZUlpsbjZueGlLeS9Cb3JIaFNDa1pnTUs5bGNmVkhPNEo0Q1RLMG90RXpLcnFscC9aa2QxUEFKZ3dtQTBvcnlyamU3bTdYMjlQclRrQUljTHdHeG81SW1aa0paNG9ZNUVQc1R3SGVQMG5tRlZFVzE4d3NYd1ZiR2xNUTRoVUlib0gxOEhWRXNRNjUydVQvYXdHdE1ZMEd3SXdnQU5CeGpZd2Rhd014azE0c3BZUUVHUnpYbFNrL01qN0orL3ZCWUhGZ1p4aE51WDNIczdNOTRPMHQwUStieHY4Rm45YkljZDI4R29PMUJYSlE2Ym1lMVRwck9rQjF6aTFmNlNxUXpsUkptU2EzTnZWQ2xnUkNpZGpWRjRkUW1wQVRkSGFYd1V4ZVBYRmNiVVJQTTlsbWpBRFFqUHpOSkpYM3YrYXlhOVlwQ3BjQTlOUE1ENU4xcWgwOURLc3hGdjM0cHo3QUh3YzFUZm1MbEkycm5UOUhqdU8yZXB6T3A2VnBNTlBTK1RDNTdTZjlSejhMQytPQTl0amYvQXlXSXZLVFB4blg0dG1ZWXgwdFB2ZVc5TUFWeXd1UVNXMXB4VW1ScjQrdnVIazlYVHd3NTRhdzdBbE1HaEYrWWpJbUY2TWp0REdjSHZSTi82WGprTExybWw3cUs0d2NPUlRQL2dDcndHUGgvK3luZjZidjkzL2xYei96NEtOUGZ1Mi8vZG5mL0RhQ21HMEtiUVVBbVluZ1o3RmoxZDhZTTlZR0dvVkRJc3hUVXhwUHdiOHRoVTdob0lKZEVsNmRaRXh1ekUvVHg0SGJPcEttaWc3QUhteVJKUkIrRk5maXB3akJWYXhkTmRNMXJMY3lrUHJVRHVybk1KZ2J3WVFSd0NoTGw3a0t0UVMwalh5Z1lxT0FManV2cnlIdTYwRkRueWJ5emE3YjRDcjdYb09mZWNhdDRkSGs5QjdNY2d6clNiUnRabDYvUmg4RkdOdlpkWFc3T3VwZk80dTZlREJWNkNPdHZlbUQvOENVdkw1TWdKdVErZldibE1yYTNzSUpwcVBOdklJOWprTkRVQURKVXFoY0lReGd2T2phUUtxRjRHVjVXeGgvVVdxbG9UK1psTXpEKy8xNnJnQ0pBd055ak9zYkVqQXRYc0gxeit0MUk2UG4zUlEwcTRqSlBabGJXVVJsc0NBZjVuMFZMdi9naUh3alV2eDF6Wi8zNDJtLzhlT0hFVU1WRUxFZTk3N3ZnKzcybSs3b1c3MTYwOVVyVjYyN3MxRHMrSGYvL0Y5K05uVUdnR2dyQU5nb3pDeWNMVzlTK2NsNFRlUTFnd1FGd2RBWXQzVjZTdURZYlFQSys3RmlnY25wRndtQmhMKzNXN2Z5bDNVd215R1lqYUIvb0dDdFk3QWV4SXk5d1h2UkV5cmdpbFZZMTBjSHFacmhzM0Rja1YrNHlOVk94Y3NFQmxXUEhuTFpGYXM1eFhpZlFFVFMzZ3lOaXdZMCt5RTkvalA4c2hIYlkrUThuSEdldE11bGFQRmZDdDVaUHJEWDVWYXZrMVA5QVVzV1doSDNPaXlEa05hSWZhSmxndUl5bkZHc1h4aFhnM1J5MHRYT1lNYkVFb09wRkVlR1hPWVFyR1pNTDVJTGlDdytuYzliTGlYeGRnK1ZNQkhGNFBNVVVYaHdMNEF6Zmc2TVQrSVRnOXo0dEc0aWlmbjVjZzBRMjRKM293cUZ2T3VHTnRQVjJlRk9ENSsyNjRQRXpHWUZHZlBTTStrdnlOdUhlOTlnODBraTBuaGFzcHhSVWhnL05laHE0Mk9xQTdVQXR2VWFqSzlQZlBSKzE5ZS93UFhQWCtqNjVpOXlpNWVzY0lWUzhROSsvYk8vZzhFWG83MEdRQWFEYWN4UGhnZERreEVESlpoNzVobWR3Z0Jta2xyR0M0U084YVlHRlR2S003dkM2UGFWVGRsOW1MVVllMTAxZ1I5TnRkRXN3RWhJZzcvYXhMaXJZeWJNb2lHSkxNOFZ3SzNiYURNZ0Q4RlJnUnJkaEtrcFY4T2FQTmRpTFJmQTBnZHFENnNNeTJrV0szZEFidDE2VnpsOElQYnhsaWhQV0RnNEk4UkpZV1diZ2RDL2xXT0huVnV5VFAyZHdXQ3FRZDJ0VGFJT0RPYzFaZEl3ZXlRRU5INThQcjVmck84d1hyZ1VXb242ZTVVNmhnb1ZwY01QYkNFa0daRytJY1M3R0RmRXg0K2w5M2IrUmVHS1lXSGVUZ2JrclZPRzgyRWpUbjhoakxBeGFWb2M0MUl6ME4wVzJEblUrcUhSalkrUHVnbTBDOHVwUDFhRlJmYkZOaXY5TFVDRzl5Zk0yOExqdnpoT2hodklqTlNBTVV3b0ZLd2tscCt0L3ZFUDMrZjYrM3BkWjFmSnFMUGt1cnU3M1pMRnkzb3JFNVAvdDA4cXRCVUFhZ01hZ1NuSjZJSHBnNTl2R0JNR0pnamFDd01La0FZaGtpSU9FTE56a0lqWk5aaFFNZnB6UUlVd0gxOGR5blRlVkFQUXJrNXZoUGtndEVWWU0wTGUxZU5ITVdPdjFJWllkdGx5ek9CdE4xU1ZiN2F2MzJVWEwxTTVLU3dhd1RqVUNqTG9FTWVYWUppM3lwd0UrOXJ1NTJkY3FWVFNzZWIrK1h4TmVRZlMrRlFoVFNLdHlvQ2xCNjhSblRzZ29pVEpRUlFuREswaWsxWU54cXlyRFoxeW1mNzVXazZRYWRrZWFrTzFjMmh2a2lVenV4ODhoTEtONDRzb1dLaGRyZUt0VVVVUUVCS2lLeDc3R0JhWFFkdm5lWDNVS3lERU13c05NckNpdzg3cm9KMURtSTVvV3hndHNSdDFoTVdlbVVDN2hEYW5YVkZaQm94WjNnNzhpWGU0amx0dmQxMHdDNTNvTi9RTDgrTjR6ME5yNENQejJndGdOc3FLZWZDWDdXaCs4dktHd24xQUlzZ1FQRUpDMGpJSXpNamZpTXV0U1doVEFnckRWdStCNW5mWGJiZGd6UENGT2taY3hSWkxCYXplZWxEdTdLZi81Vy85Z2Mxb1FIS2JPNFdiM25Yekp3Wk9udGl5ZnQwYXFBOVFaWEdCcUFNOUE2YjhJZ1kxLzBCeGVJTDRCOU1RYW1SUVI1ak4vOUhxYmQ0MFNlbFRCUk5RanZqNTd2ZWVkTWVQSHdkL29lYnNaQjh4empzSjc1YzIzSG5ldmtJZFN3VzBJRHQ1MHhZdzFhRHVuV3R6RFdwaUZsUm5uaGdNR1o3TGg1VE9iN3ZDWmFuNkQ1NlUraDNuR0lNKzJmS1VLM0ZUWjNoWWZoeG9lc1IxYWdMQ3RPd1dMcGp2M25IRE85MGR0Ny9IdmZNZE43b3JycmpLWFFtNjl0cnIzZFhYWEF0cHZsVDE0YU9yQk8yNjF3ODFOcmRtbmFzZVBBQmZzQVV1WnRWdUxnY0QxSllNUTd2Vi9WRm1NajdmZGtTVC9wbFZxM1dZS0lPQmp0R3VPeHM1YUFPOEU1RHBtdzhCc1VCYWttamhZcnNTdENkcjc5RFBWa1pqSEl5TjhYRUpsR3hQcjZWRFhzb1RBalRUVDRMUUlTRy93b1pOTHI5b0NaWU4wRUJPUTdEeGpWRG9WNEpqU1JjRXNlemhhZ3FsSC9WM0lBdzNqVDNXRTJVcEZNRFl4YndyVXJoVEc4RVlacFVaeG5oaE1zc3NYK2x5aXhjclRoNU1WRmk0eE9WUWxzd2lMR05RN2hyYm83ZlBuWU5tMDlzekw5bzROTVQxYjQzWmhXZXZ2Y0U1ZnlndG9JcXhlRzdQRGxpZ3RiQk5VZFlQdmVjbjNaMjMzS2diV0VrNlBUanNUcDQ0NlVaSHpoY3kxY2tkMy92TzR5OHdqN1lhQUtwdUpodEJhbnVybWIvRnJLKzRzVHVkSmswV2x0WUtrdnNGVWRxRVg1S1NlU2Z0RVJyYVZvT2xDZlFEY1lRRUF3UjJBbDhiQS9CQUMyZXRMRG9nQjJZUXJjRGdCV2tRWTgyVlhicGNneGFqeDdLTmJxRWhneGFvajQySldjbFFZWERTd2xlUzMzSDdlOTE5OTkwUHByOVM3MlNJWVJINUVORDY5UnZjKysvOGdQdm9SKzl6Q3prUUZjYkNvdjQ4Qzk0QndVVWZlQ2wvYndZaGJHRm1qLzRTZGpHclp3UUpkL3pWdUFZK2N0aFZqaDdSK1FadTZQSFdYdVhRZmxjbUhRVHRlMDBhU01hLzRvdDV4TERyQ21RU0NLd0s4enR5eUZXUEhIRTFNQkExTEpMWmVSMHNZeURrbEpMbHBzVXp2OW82bFQ5QklRWjQ3MUJYUlF0Um1RMzhUWXRrR0dkOUZNY1RJd1NOVStNSnhEaThKVWpWdndhMXU3enpKVGYxeW90dWFzZExycnA3aDhzY09hQzdCbndUbFJWVEJXVm1nb29STytOdzd4Y0gwUzlKNWxYdHRpUHBWZ21qTXNZUXg2VVYyWEs4ODVaMzA5VUVac1U2OElVblUrWEtlNzMzTkVzQVg0REFWQ0l2QkdKbU15RkFlOG92c3MrQ2xKNzVCZ0hENVVRZ2U1dUpYdXFBd2RlT3VERWplOW5zVkpsaldDZXJlVlFsMnF5eFNHa0VYMUJvWndHendiNDljTU04c00rSWgzd3c0Rk8wYTZlcjd0MGp4cWhpWUxjRHIwQnRvWGIyakQ5eWE1N2RQVDN1b3grNTEyM2VzazNYWnJtbFJWbU15RXhpeWRLbDdrTWYrb2hidmRwT0doTGF2T1JHSXhPQVFwMlpJWGU0Ky9yNnNDNjB0endwakVGeUFiQll0VzJtbGxhSDJad0htMnJjLzREbXdqMFF6c0w4NklTSWRoQy9Ra00zNjA0aHlRRzNBRFBsdW5YcjNmTGxLeURjNG43aHJkUUtoRWlkSnhKSmZDRXFsaXpLUDBGOC8yTmx6NnZHYUx3elE2Rk1vSkJrNmxCV1E2aUYxWlVVbG9iOG83L1M4SWN1SDBjdTJuMjZTSnNGNmZZYWhUQVBSM0h2ZzhMcDlLREdLVlh3RENaS2xvZ1BvaFZCZkJtSjh2SHdsL0N3Y3FnczlQUCtjYkQzcHpWSmZIVVo3OFpFOVRTVXo1OVYrUmlMdit6Ym03WnZkTDJZZXhxcHM0VEpobkV3TWFGZTBVYWcrYmJBalRmZTlJbkJnWk5iVnE5ZTZSWXZUaXdCMkRBd1kvWGUzTE1qRkRYaERwQXRkalpBaWFJNFpzYlhEM3NCRWlhKzQzYS90dHU5aHBtSTkyalZhUHEzeGd1ZFB4TkdNT3ZVcWxnQ0tBOEFBNXVIZnlDVmRJeVdBNUVxb1FZWS9rejl4Qi9VZmpFMnl1UXY2VUVIUzQrWWZKdlNtZzB1eS91M2ZrQlRWWDNmZTMvUzljNmJCMEhJcDdtWWhXcnJJUStWWDNVQWhVZCsyZkZySUFENC9NSWtseWhnbW5CR244eExjQS9oRnF4aGJ3VnBHWEgxTlc3TDVxMXFzNkZoYURnd2xUL0t3ZWNUTk5OeFE0ekxHZVRCdXhka1ZKNFFySi9Gd09Qc2puelpEeXFhL1dBR1JYb0k0YjdGUzl3SDduaVB1L0dkTjd1Tkd6ZTdMVnUzYWVuQ2g1Uk9RS1BLWUFsVFBYSlFaU1BZbHRhZWZqd2w4dU8xYXBqdHFsanZjaStBK3hJSXNuWWdXRzdmMk43SGwwbk5GUG1GT0RTWWxzOENjQW5BTmJ5TlkwNUFYdlhIeE1SeVpDSEFzdEM0Nmx4U25UaW1PeGdzSThlYlNzbjZNMHZrUjc5eENMRjVIQ2VFQlFGbWFYREdidHJzdnpYQS9ObnQxM2hIakpIRDBMalFkN3hkeTNJdnd6TGw1Kys5MTNHN0VrUFhWUUtoYTArY0hIWkhvR1ZOUVVDTmpaMmZldnA3VC93eDgyaXJBU0EvRllnWmMrYVBabXhTbzByZXBBV2tLZVd2Um83SkdqdG9BSTJ6UDJkMmFnQjI4TUtJSHpxSVozdHBBSndsNkErVDYyam1HeEFHa2t5Nk9iamFrdFU1SmtzVFBIajdMN3RtUGF3WVFRcnlNZkFqazBBbVljQzFBemUvcU5veWxjV3R1NnV1dWthenVURWl2RFJ5TTI3dzFJRDd6bmUrNWY3Mjd6N3ZQdi9BWDd0SEgzM1lIZVp0U0JYV0UwQ3Q1NmFiYm1aQ0pNY2c1cWs3TEZIQVZkb3Z1T2VlajdsVm1KVmZlZVZsOThRVGordDlDZU5nN050dXZjTzlGK3ZHSUZTWVhxZmRXRElJR0s2N2VaQklZUkJzMmM0dVBVL0FtUFR6U1FUTGduNFpkeXNZdmdmQzdPKy84VFgzMTUvN1grN0JMLzZkMi9YcXErNzY2My9DOVY1MXJhdFFvMkxScmZncHlNdjdoN1ptZWFnUjFNNmRsZmJFUzFJRWhldUZhMGVRTzFqa1kxbUdLR2czamoyT0xZNFptaHliOHVPSE5PaEdORDdmVWVmSlNQeXhYVTNENVJPZ050bElZUGp4eit1YkJtdkMxSzVvWTBUWGppekI4QjcyM3g1OGJ3U01VSFFCK1pmUG4xT3BtSnAvNjFZc2MxMlkwanZCMVIyZ29qYzc0UWNSaWlUTlYybXJBV0F3ZmVMVTRNQ1dWYXVXdThXTEZscGxrVUV6MDh5V1dPYTBYd29NNTA5a04xTytEV2xvcWl3VVRyNFRyR09zSTNiczJPSDI3OThmejk1QTFIaXdwQnF5d1JVd3dwa2MvWmg2S1NnOVlNbEFWZGRCR2N4TU1jT0Ntb0NBQm44K21KUHBndnA5NnBUakczMDRhSGhiNmZiYjM0UDZWTnpVMUlRRUg2dTZaODh1OTdXdlArWk9EcHgwNDFoYjhtdEY1OUhwZTEvYjQwWkdSOXo2OVJ1eGpEWm01V0R2NzEvZ1RwdzRZUnVES0ZlR0x5N3Q3WE1mdU8wMlY0TFc4ZEJERDdxOVdLS2NoaW85T0RqZ2R1OSsxZlgyOXJyTm03WkE0eG1Cc0JtRXlyN0liZHF3MVowNWM4WnR2QVphd3JKbGJtbC9ueHNkSGRXTE5NbUErWTFiWEFZejRiWnQyN1ZQc1hidE91MVZEUE5CSUJTOHU3dlgzZnl1ZDd2ZEowKzRIY2VQdWFuVFEwaC9Ib0xyb0RzK051NkdvVUZRalg0UEJNOHBsR1haMHVYdWxwdHZkVmRlZVkyYkI2RXhQRFNrOS9jUjNPL2dCdWlONzd4SkdzU3ErZk9oaFN4M1E4aUw2dStLbFN2ZGRkQm9CdEdlMUc2b2NXemRzbDBNZkpxYVJxTDlrd0tDTmpvTDFBSUsxSGpnNExoQ0g3UHRxWTBVdUsrRGZOQ2dpbXZqemhncGpFSEYxeGkxL0NlbnltcHJuaVhnc0JBaVM3Q21QUkt1QkdMZitwSmxMcmVPaDZkOHVlbUg2NTdic3hQTE1YNUx3bmp6UGU5OGg3dmpodXNWajJBT0lUNDFnTU5IanVrOWl1aUxVek5xQU4wOWZPY2VQd0poVE5XSzJzMzRiUW1ORjd1dDhVak1SK2NNSURsMU94R05Ib2d6dkxTQnhHd2ZpSU1rbVB4OFZ6Q1pGMkVkbzkrbzAwTEh4VzUyYUNQQlh6a0VzSmZvZzdTREorMmhIblJ3UUNvMlcxdEk1MkJ1TVB1NmphNENkWkpwZUIzbXkxZXUxZXNWUFFiTXV0TC9GR1orenRTc3MrV0VqSlUzZitwdTk2NVhNWnUvUkErNXc5WFc4S3k5ZDlWT0huT3IxNi9YT3Z5NTUzOEVCdVVkQnl1Z0JqVE03MzMvdTJyblRaczJ3eThyWnJ6OTlqdmNoei84RVhmRGxtMXVVV2VudSthYTY5eFBmK3dmdWZuYzVFUWI1MGJPdVh0Kyt1T1lKTjZ0c2pMSGQ5MzhidmNocE9HeWhJS0NMK0ZjQTJaZWlldG5JZkM0Vk9HbTMrbDh3VldQSFpiZ291RDVxUTkrMk4yQnBjSW92OFFFNFhMVmxWZTdqM3prWHRmSjl4Y0E3M3ZmK3lWTXFLMGNRcnZ4aGJMdjJiRGVyZHQyQmE1ZGMzM3ordHoyN1ZlaWZQZUQ4VHJjZ1FQN3RiL3gzdmUrMzIxWXYwRk1TZEpqNHl5cG1weHRiOW90MzViTFhmdFNzYWoxTVFVT0QvWjA5dlM2VGo3Rk9YRENsaVlvaTFwWkZ0aVFqbmw0cDM1NHk3WVRQTU82MDhzQ2FTR1lPdUhoclZHd1FJOUE1aVRsVWh2QkJqSjlIV1BGdS9TL2FYWHFqSS92YVFQN080RFpCclFWQUpsc1RybkdETnRNcGdLQjBCR05ZVW1LWitxa1g5cE5TaTBCcFBxRDZSUE1UelUvVXZWVFFzQ1luMitHMVN6bEJZRGFCWTJaSW5hY3lqTWRCUld1QlZCWHFkZU5aL3BEZExWYUFnbi9ITmJwVEF0SjV6M3B6Um16MHc2U2pHT2RpN296N3M1WGQwZ3RUZVVGSkR2VkJFQXlSbDB6dW56d3cvck9oOFFuQXd3T0RzWnRvTGhFM2ZIRHA1d3ArUlVsZTV5WXJ6bkQ3SUpCLy9rSC84NDkrS1V2dUc5ODgrdmFaOWk4ZWF1YTVRWXNKZWIzOWJrSEgvb2lsaWZmRmozNmxZZmR5aFVyc1pTNVduWDQ3bmUvbzJYSlhWZ0tmUExqbndCVDMrZXV3U3lmdzdYUWlTb2Z4dzN2ZW5CcDg1MG5uM0RmZnVKYjd0SEhIa0VkNW1tcHdNcFNxL2o2MzMvVlBmNnRiN2dmL3ZBSDd1R0hIOFFNTnVLdXdKSkp4NUo5VFo1Ly9sbjMyRmNmY1Q5NDV2dnVrYTg4SkwrdFc3ZkxKT096MWxIOUU4VEpoMjFLNXMxejFrYzl0Uit4YkxtckhEL2lHNXlONlNlR3lLU2Y1YzM0Rkh3OEdxd3pCU0FyR0g4UVYzOGU1aFZaWThCbC8wMlVhYmo5WjFDSUx4L3FCM01STkxWMm9JSVRnVWs5MmdxQVFxR2cwY2VLSnBsMFprTDhsRUR3NlJ2OUlqZG5maU90cFdTU01QTnpMVVpCUU9iM2dxQ3N0VCtaM3hoZnpBL0dqelFCa0pnSWlEdkt6R1RuelVRQ0dvMjJpSmdWVEQzVVFtQ21VVnltWVloTXduNWxCT0t1TzVZVGZJUTRCQWQwWVUydDlnamx3OSs1cG1jTmtuc0xaaHNkR1ZFYktqdC83VEJ6aHBLRU5IUkZLckNDYUxmWmtkZlVBTTdaZHdYWVRoUXVGUWdreHVLZXd3UlVUWDVzbFZpSm1YRUlTNFlWRUFqYndHUmtORzR5Y3UyOEFtSE1kOS9ldmU1eldQdC82MXZmZEs4ZDNPOFdMRjNtYm9XcS9pRm9Dclk1QzZBY2UvZStCclVVNmo3TEJPTDVEUzQvRm1JcGtnVkQvUkNheTNuVWs1ckJ1OTk5SzVZTjcwZFpNVk5qTE9RaGhNVnN1TjZ4WThlVUpmT2dKa0ZWbHk5TWtSZmJ4cmVycWk3UXo3UUFFc2NaUFRoMnltaVRXbmUzcTNLekVYNVIzN0N0L1hpMi9IQmxQakFFb1pIRHRmTGNMRVQ3MmNhdWhVZlhTemhpYTdCWldjeXZHWFgwVFRPczd3aExsM0ZybGpjZkZaNEpiUVVBMXB4NVpod3piWUxZSUpIYk16aW8xYXd1djRiNEhHREJUdE9XQUhTRDRSTmFRS1FCaVBuQjlFRUw0T3lmMGdSTUNBUmluZ1M3UU0zTHpycEFDckJPYnliZTk4NnNXZWZxZkxLdHAwZHZ4NUVKSm9rT3NYaml3UlkrQUZORkdpRndwWWR0R3NFU1gxWXpvOURncjdRK3ZYWWtOTmhvTVFPRk53STRQcmlYd2JCRlBNM28vY3hpZGw1bklaWUlGS3hVazFrM3B1ZlpCMTZZZjZIdndvRGpua1VYQnZxNlZXdTBEOEhiZkd2QmpFZU9IQllERTR6TGw1dnUycjNUZlJzYXhOKzgrSUo3ZWQ4K3R4VHIyUlcrTEFMaVdaR3R6SFV3ZEFXWDZVQTdGaUJnYnZ2b2ZWcCtyRnl6eHAxSDNQMFFqQlBVSU1UNE1IaEFpTVhDRC8vOHYrVVg4c1lmSCtMaTNrVis0MlpSNFlxclhXSDdWWHErUHJ0bHU4dFN1NEYvRFhYSlFtdlJMVXFrMWJqRVdBeU1iN2VsT1Y2aDhpUFAwdFhYdVJMeUttNjdFclRkRmZpQ0dKVE5hZ1BRNGgxbURSN2VFL0JWdnlDd3J0Wm1ySzNoMkVEODNFbnNtN3hTTTlvS0FLZ3lFcWtSZytOaVlTQ2txRkVZek9DT21iK1pBdU5UQ0xDaEk3Y1lQd2lCSk9PSFdkK0VRQ0NtVVVPejVpaDNZR29qTVBBc2lBT1laUnFmR0l0b2dpWm1SZHJId0ZoOGYzeVpqTW8xV2srM3ZTS0xCMkE0dzVGNEJwTkhkenU2a0NldXJiVmhLQmRiMTNDT3R3MkYySFBGOGdTVENNa3VOYXpHMmpjRkpPZGFPVVlHYStJRGJueHMzRjJ6ZmJ2cndmSWd2Z1F0R1hjTkJ6QlU5ZDI3ZDhtSDdjaytZemlLTElTMkU0dWhYYmpKT0lYKytPYU9WOXhqVU5sSlg0WDYvY3d6UDNDdnZQd2lOSnB1OTQ1MzN1ZzNLSEVWekthVnlYRTNBQzJDTTdhK3ZpUFVVYzhWWWhoRkJIcFdyWElMc1J3NWYyclFkWjA0NnJZdlh1eGUyZkdTK3hxdThmSlRUN3BEenozamltUnMxTFA4NnN2U1dPQ1VQS0FzbEpBS0ZBQzc3cnp3Y0pFL3M4RjNJNVIzNzNEbFhUdmMxS3V2dU1tZHI3aHhIdXpaczlOVjl1N1IyNXc0NWptV3hQQWNoeHFuMWhZRU5SQjNZSytySVM4ZUJpb2pEeDV4NW0xRk5TYUkvUjMrek5NamhDZThEQ0ZlVEZXK3NZblZhU1QxVXd5V3J4VVlOWTM0b20wRkFOWkVldDZUekJBWWxMTkRFQWl5by9SeFdLT0FRSlVUYVZ1NVk3czFjREJqOG93UHV3a0FrTC85RjJiKzFocEFlZ2x3TWNUQnkzd21NZEFDY1VhVE9ZN0JoelhpdVplZmR4TThDWGY4cUtzZVArYXFKOW9RejgrZk82TmpyU3FYL3czZE1EREl6NnZTQjEzbFBUZHYyZXFXOEswOFJMSUhmWGdCZ3VmbXF4UDNodVZmMXl5c25GRUg4a0FaYmZpREEvdGRGNWp1N2c5LzFGMEpWWG81Vk1YVnE5ZTYyMjY3dy8zRTlUZG8xdDZCd2FzK1JWdGJHK0N5L3JxYVdVbjhCKzNBOG1BQm1QVFdGU3RjUDdTYjNubDl1cy8vMFh2dmMrdldiOUFHOG5YWDNlRHV2ZWRqYmhObTFWV1lhVGZXS3U3NjFTdlZYd042a1lyTnpsdzZmT0N1RCtvVzVWck12ajkxMjN0MHV1M1pIejBqd2M4eFFRMkZiYkVNYmY2VFAzbVhLNWFDZG9ReE5JQzJRNkdDdXMveWlXQzNENTVpTWx1MlFyY3dkVHdaZmFxZGZWQUdZeENsWUVhV0JsSkVkZVdCSjQ3WHpoNHpOWGJOdExnWlY4U1NKb2Y4c2hodnBvWHhxOC84dnFHeEZHTHJMd1ZMcm5wN3E0ZTVRcnNIQ3NqNThXeGd6VmhZa01ycnZZRGhjM1lzbkVna0YxaG1IdzJJYlcwRmdBbVhScVlHUlV5Y1pQN21zSm1ZWCs2VTMvUkNJR2dCMUFDaXpVQnBBL0hNSCs4QkJFa1lHdlhDQ1Q5V0xwcEo0aURnbXAyREU1SVpzZlduSmtkNE8vQllhNWJuOXd1OGU1Q094L1UrYi9YRi9uWmk3NjQ3UHlqMVdrajA5Q0lJa285ODlGN1h5OXVSQ2ZBMklXOGRKc0hCdnhleisxZS8rcWphODFZdy9UMGYvWmo3MEFmdmRodldiY1RzK3JJMjN0U2ZkYXgvMFg2c1B6OG56VWRRZVUyV2ltdHE1czhxSGp4MTJuMGJzLzh5TU1ISFAvNlAzU2MrOFVuMzdsdHVkM3QyNzNiNzl1L1ZMY2F2ZmUxUlZZZTMrbjdxMnV2Y0xlKzh5VTFDYS9yNkM4L3IxcC9WdFM3Tll4UU05OEVQZkFpQzRLZkVVRi83K3FPNlZjbGJqNDgvL2cwMGQ0Lzc4SWZ1Y2JmZCtoNjNIL2svKyt3ejdwemZoemt6UE9RR1FSUG9jN2FPV2dpRlBIYnNxRHR4NHJqTGNHT09oNWtnaUxrUlJ0SmhKODhRUm5iMklROHlCczY0TXE3REpaN2FSV09TbXFGRXROMHR3REltZ3p5bGNhQWVHczlvWDZvaEdqOEJWazIxbTdmR25wNzBhd0VwS0EySXIyb0xKWTJBNityT2lyd3M3SFRET3hxSWtFTEZsTVdiSGczT0dMLzVyei83K3k4KzkreHZiTm0wem0zYnVzV0tpZEl3WTJNUS9yUGlhVHVkY3NuZTZJWk5IdWFPMGFvWXNWOVVlTy9uMjV6L2RKbUQ4SDVQZmYvNzd2a1hYM1RkR0RpbXpyYUFUOUlPWjlIb282UGNCTU9BQ0FWZ21XSE5ZYzFYZ2VySW1ZUzNTdm1aTTcwOEFvR0tHZitra0prM3orV3dadVd4Mm9LK21kaWpYV04rRkRSYktyZ1B2UDh1T3dISUg2YjNaVHh6ZGhnRGZWaHQxbzFseHRLbFMvMnVNemVnK0YxK1hxc094dmloZS9tbEYyR0hHMzU1cU9LRlRWdGRCU3F1NVpWeEM2NzdDZGVMSmN3VVprVE94QnpZT2VuT1dReDB2dFRDNlQ3K0ZMOVloRUZPOVpnTW9BeHdmVjZMNitjYTZnQjFTeHVZTE1jNW5wejBNeFh2SlBCeS9LaDdOOWZhaC9kRGU1b1VsZFp1Y0RXKzlSaGF6eWQvL2xQdTFWZDN1dTgrOVIyWDR5ZmpObTF6RXp0ZVZEa0NPTHV5cml5N3ZZTGQraE1qU016S21qdG9RL21Ock9mTG1veWlzY1UyMklCMS9jQ0plT01XWUIzRGpGZ3NaTjNDZWQxNjRTZjNtcGlTeWJtaFdWdXdHSFhJdXFtamZPRUdoWWVkMlNodDNPSnlFSWoySUJlRUpTY0tFTFhUc2NtS2ZaQ0d3a0R3WldtQlVNdzA2S2xhUmNodHU4cmxibjIvZHhsWXp4TlBmdE5WaGdiMVVwQUszSi81Nlh2ZGIzenlIeXZjOTFnMHc3KzBZNzk3NHNtbk1hNkgzZWxUQXhOLytCOS9xeHR0VUF2aHpXQkRJd2ZOZ2cxazZuK3djK1pvQ0l1SWpCN2JGUzYzemFReGhUaEdiTkNrRnFEVGdPRnVBTFdBeENuQXNEbW9wWUEwQW44U1VJMkxINXF0Q0QrcFAvUkdrdUFGY1BhVEpRS1BzR3FEekhkdzFJbkphT2trRWVvY2hCaEVlaU5RQTRaNys5d1BmdlJEN3lKOEpoZ0wvTXJ4dW5VYjNQb05HOFg4aE1wcE5qcmNnZE9uM1lzdnZ1RDlHUUlHV2JIYWJqdkN5VUZQeXhCbS9DTndIOFdTaFcwVjVzRncvb0QxR2FNS1BENm1KeCs1aVprRTMzSmNIMEU5b0Nrd0tXZnBzenpZNDVtZmpNWHJNMWVlUkJ6RDlZZUhobldRaWRmbk9weFA5dVZLSGNiQVpFUlFBZXRwYnBKYU9mR2pLbGc5RExHcCt2a2dSWmxDbjJPSnhYY3UwaDNJWVFMZ3BtS05CNk5TNFBLREVkQkd2Q0QrUS8yWmtNeXJzVGg0UXZYVit5RXRtY3RCNjhyemZaRFFVTUttdGQ2V3BIRmF4dElSQWtKM09Tei9KRUs1QXFWQkQrdTVZRGRDMmFReHBjSGxDc3RCd1cyTmxuRTc5dnBOWnNCU21zbFFnOWxRejl3RER6d2dSMXNCSUFtQzFLYjZCdVlNekdwbVVoREkzUkEzeGZ5d3g4d1BNNUdPbE56OVoyT2EydzRCQllydkNBUXlway9kRmFnazdnS2cvRGFvV3hFakJESkw5RWMzbXNjR280VUltSW4wRU0vSkU1WU9pQnZYNEwwdHorZ2lIckR5eWJsd1JKZHVoZmFCeWFCZXYvVGNEOTNUUDNncU1YdDRoQ3dTV1VXQTM2dTdkcnB2UHZtRXkvaU5LNVpmZHlWUU9MNmROd2sreUVNQmxvZHc0T3pLcy9uMittOEVna0w3RUh3aWp3L3RaRENvRlV5Tmd3SVF3b09nOE5BbUhFZVJiNGlvcmFBWmNaZThmZ2FNcVkwNlQ4aTdCdFU4djNxZEd4b2F3b3gweHVVb0VORjNkV2dtVVIxOWVTTEFuM21yYUlvakQ3blozM3lxa01JWjZnZ0RsVGEzZHAwZE9mWWV2SDZjS2QzVUx2alVKNFF5K3haOXd2eTR3eCt1VTkyN0MxclVGcVZsbkNJMEdHNGlrdmxKYktzd3Zsa09ubUVvVDAzYUpScWd5OCtBVmxHNGYyUUZTcVBZYTY5cnM3YkYwdXdFeHFWSHFDbEpWVUY2OVkyeWlmTnFyd0dnVW9SbWVGUXNNSHZhREdGc01MTWI0NVBNYm00Zm4yN2E1VGE3cFdsMk41TFVMQzhjZ3VSTmFnbEpZajRHVmIySlVuOHFLM3lUVVdqUXo2dytFQU5xMVdveEJRcGdqWXNCWklNcWpTZ2RRVWVVT1FEQlZScytyVjFtK1pFSitacXRJNXlwNjVqRm4zZGYrdElYM0ZFK0hodnFrZXpOQkhpNDU2dGYvWXI3emhQZmN1V1R4eUZJK3UxamtTaFRGZ3pHMlovRlN4YVJkczVzUE0vUFo5anRQbnF5eEtGTlFDenJ5V01xSCt2Si9RUzk0Z3hDT0tvVDQvbjBTcVArcnV1ZEJHVXduMElWYk1zSG1ucFlDdlYrK052ZjFPWmpidVVhVnoxK1dHT0VZeVBrYTRibGwrbnMxSG8rcm9yTjRocExpb3Q4RHgvVVlTc201RU5MUEc3TTltWVlJVU5wWkJHUitWRms3ZlNUeXRRMFlmS3JVQnF2STlDR29HSHdRVEMrcjZBR2UzbkUzZ0ZJVFpRVGtXa0JOU3dIdTF3UGhCN0hJTXZYRW0yOHB3TWZycXBPSk8vdUdBb1VuT2kvTUE1UG5EcnR6bzJPdXpJdVAxbDI3dng0M1owNlYzUEhoNnR1ZUlSZkNqWXRCMlhlZC8vOTkydVdhWFhDUUhqWExiZmVPWGppK0MzOS9iMXV3WUw1U21qRU5veE5XdlRuL2Rpb1VUaitGQjdpS3N6c0ZzYjQ4clZ3L1FlN1lqUzdhYzVBeDArY2RLZE9uYkpISCtFV3ZORWFGcGlNd3Mwd0xqdUNKeG1HcndTckhqMXFicEJPajJGUTZvczg2SUNrTUdqWnp6NmM3ODR2Z2tIejZMZ0N0SUhKbzRmY09JUUNCeE5CZGZrMVB0SDQyaDUzRmpQb0tHYWVjNWkxejJMRzVNYld3WU1IM0ZOUGZkZTlCSlgvdkQ4d3hLd3pveU91Z1BXcEhIeThWcHRIdUY2cWZZekpxbERiQytzMzZrTWVGY2F0MnlCV2UrR2ZkWkdnSFJ2UjY2ajRtQysxSHo0R3JTYkZqd2xuQ21RS2NKc04rUkVVbG9ISFZNdFlPeXRQTmFLL1Bvckc2OWZBUk5sVmEyVG5vOEExMUkwUU05SFAvN0V1aGEzYmRROC91eHdhRHBjblk5QVVCTVd3dWpOZmFEYzVQcTBJYlNLL1lxV3I3dDluMFFBRUM1WkNGdFV4cDNyVzNCVDZlZ3FjVTY3d1lTQUtBekFLL0NrSUttamp3alhYWXkyMndFM3NlQVV6Zk1VRVFJZ0xvdlpaN094eWk3RmtDSDFpVncxWE5xUmRNOEZpOHhOZjJmV2JvTlgxeWgwQjQyZms0RjVJZFBZZHlnbkJ0V1g5ZGZDZTU4Nk1WTjNJV05WTlROYTVWZU9Hc0VRY2dERG51SjRZR3p2NTlQZWUrSy9Nb3EwQXVQbG1DSUNUeDIvcDYrdlIyMm5VYk94QTJsSW1EZHI1anovNjBUTmhwejh0d2Q0WXY5a09rcDErWm8vSWh4azFoSG5pbTA5T1FSb1d3SmgwcHhHN1V5RU4wY2lNM0Z0UWV2UUQzd2prZUdLdFdKUjZuU1ZoVmlqMDkwRVM5Mk50Mk92NGtKQlViM1FFTXZBNU5VQ2pGUTNQTStkWFh5LzFkeEt6OXpnLzFwRktrOUVkamRPbkJ0MVJ6THFIY2UyOVAvcWhPM0xra0R1SkpjZ1VsZ3ljdmFoZWgxR2x0L2hTOVFZVDhMMEVLTHh2RXpJb2lDYUltaHRHTnBnVTB3UmZmYzd6QWZQblE0VmVJaWJYc3c0TEZ6cTNBRVFUZGM0dVgySFA2UE5jQStxck4vZndzL0VRaWhrUzMrYUQrSHhsdUNzV2xFYXZROWMxclhGUkVycytCeXp6eWtNRmh4Q3FncWtkMnBKdkdNcnFiVUQrN1VKMEwxamtNa3VXSVNYeVlkdWgzV29EZHRnb1FOWDMvY2UzRlJldnZvNVR1cjJlYlNIcjQrdUY4dkZ0VFNUZUdjaWh2clZDeVUwT253RmpjUFlQUkdiaUdRQnU4S0hNQzVlZ0haYTZTaWJuS3NWT1YrMlo1MnA5ZkJNUWlHYmZRamVWTDdyRkhTVTlqOEFUbW1td2hMNlRBQTJCMk9uUjZHRnUvZUludTNTRnk3QWNDWERKd2xlQzE3SHNSYU9xZmVkRHE5dkdaWXJYaGptbVNLY0hCOXdwYUg3akVPamo0Mk4vLzRPbnZ2TUY1dEZlQUx6NzNYY09uRGh4UzkrOEhvd0QrOFllKzFFbUkzaFRuYXQvQ3pkL3Mxdkh4M2IrNlQ5cHR4Z05kdjJtN1phSnBaMkJUZzZnc2hRQUJiNXRoNm1aVndJcFJ4SnhYTHUxU0FHQWh1NmZEOVZ5TGRhelE1cGQ1QWxpNTJSaDVzbDRHTlJTamNIOHVmVWJNRWdIbXJwVW9DZDZueHRocFVWOHJWZldUWjAvNDhZZ25ibW5FY0gzUEEwKzhVVm0wTVliS0dnYjRidUlHazIrbm1SQ2FpdDEzbXVuWDJNaGZMNEVQK3RWNDVkOXVLSEZsMXhBMFBCakoxVVFkK21ySUxxNWVhblpIOW9IMSsvVUxQaFVJSTgxODNOaVNhSmdwTHF1ejRJaFA5WkFtbEZVRHJhYkx5dVp2cnNieTZxamVzY0FOeGYxOWg5b0J5SnUza0U0OEZOclZrZU1jNzZxalNmZTJQN0tOc3BZNE1zN3lPZzhlOEVYbzJpekxoREtWUGRFZXhWYVltWVpOSVh6STY3S2pVU3EvTmExYWVKVnVQZUI4VEQ1eXN1dWdqWmcya0JsdEZOM3JZTFpmN0dPTWNkTDBFWTBsSlhsVDNrRmg5VktydUFGd1pmMVR3UUdzTzhuVVk4SzJrb0NBSVU5Y1hyQXZlY25icmJiNXR3VEUwMjVJZlR6RU1MTzhUeEtOdjlIVHozNStIUE1nd3ZBbHFCYUpCT1ptb3JIbVlPbVYvMkNQMDFKZFRLZnhZblcvZDZ1ZENSdmovS1JHZXhJTTQxZDEwdlk0L1ROWnBMcEE2VWRTY1FCeVdDZkJjV3NQUmpDVzJuRmt0NExHSWpmdkt0Q3RlSXRwaHJVUGpJR3Y1TlhPM25TWmt3a1QrWXB5QVBYQWxOenR1TDZVZ05hU0kwR2dlVmdmZmphTEtyTTVtZDFEUG1HZXhWMXJQL3JXUFpVZHU5MHVRMWhzQ1N1bnNqZXJFaEhyUVB0WnFCdkNERklUVjY3M2xWZWV0N2VDd2cvcFJGQllJbUNHMXJUenBmZDFEUGZkMlcybHpMdzVCRlpVVTdlRGFuc2Z0VU9TR0dOcSs4TTBndzBDY0t5aHJkY3VVU29RbFBpMjRIQ09BdjlIQUZsemE5WjV5cXZ2S1RiclJsb0lZMUlwOEFNZitpQWhMdTVZa3FDV3MzVUM4KzZxZWVmMWR1V2t6RlZGc3kwOCtmMzZ3UWtHUzhJUFRGM291Nkdaay9HUy9wR29ZbG9WYXI2Uk1LUDZJQzJwd05NSkdSMENrTDQ2WmVlMWJjS1JrYlBRUnM1NTBaQVBNWEtDV1ppY254OFFVL3Z3ejc1Tkp1QWdLcEloaEp6QmRNYVBtSit6NmdSczdld0t4M0oyNk44WkFhN01YYktycnpOTGpOcGorS0ZmQkltNHNRVjhKUkNISkNLa25Db0E2RmU1NmgrVXFxallaR3gxTW8wRUZuWEl4RW9BMmErckw2REZ5dFlJVlRJNWFYYWxuZTg1Q3F2N2JKYmEvQzIwaEN3cVo2eFdadVkwQnR4K0tXZnVNMFJILytoVGJqeHhsZVJhK2NmZzlKdU56YU1tQWdhcGcxL0ZqdEpaSG95SVJtMHhsZDlyVmtyZjZnZmlCQW9KT0FQa053RjkxNkVSYk0vZlYzSWF4TzhNeEJldlI2Z3VOb3dRUDBnYkN1dnZPaXFFQlphT3FpZHJLMzA2OHZCZHBSV01vbTJPbnBJZHpBc28wYkNUeURVaXg5RXpmT1FGdk1nOGE2RnB4eWY3YUIyeDJVSzQwSnc4NnRSdHZGRzlxbTdGU3VXdXlWTGxyakJrMEdRQi9qYStrdWwwZUJCSitQWlR5cVkxaHlZdHpyTTI0RU1qNmx6eVhJN2VzNkppbVdHOXlQZmZkd05EdytDVG9uT2dNYlFoM3phRkdQbWYzNzJzNzltUjArQjZUVUFEaXd3VkJPemNRRDZRVWVUL2hHenAreU1hK0VXdjlIdTgyaGpwNW0weTB6YUl6UDQwd3dEdzh3WVlkQllTS0MwSXdsNGNIT1A2aVIzMkFHK3JKSXplNm8zRStsUUhKOVhUUy9OREROTFFBam1sNEtySjQvcHlHc1ZLaHkvM1orRjJxN085M0VFT2dNQnZQMm9GNC82WTY4RTR6S2RabEhNb0Ztb2ZCekl0WVA3WFhIalpzaWFJdVJRM2lpYjEyMC9FZy9YOENRWjE1RXk2UVlwbmo5Z3hLZmJ1Rm1aT1g0TVlYbVhHWVU2anZ6eVhCSWhEZk1US1gvN1ZIa3I0bE9HZ2VUR0dwcVVnWXBQdDhNU29BanRodnNpZGpzdUIrWUw1U01oSFUyV0QvYmdyL3hSVnZsM2RPZ0ZIZzVMRnZwbFJzSFVwVTVYZ0dCUm5mMW1yUjdaUlRoTkhoOHVsWXF1TUhUS2RhNWE1VXFkSFhBWFhDZlc4cDE4SjBCWHArdlpzczBWc0hibSt3TDBPZllUUjEwbnRDdWx5N01jV2MzK2ZCc3dWZTNXc0E3MFBCdTZFNGh0RVJxOElpY1Q4ZzVVQS9Lb3Q1YVNhQXNLSkFxd1F4aGJ6Kzk2aFFkKzNPblQzQThiZ0JadzFwMDVPM1N1czZmdlAvcWtRdHM5Z0p2ZWRmT2Rwd1lHYnVucDdYSUxNWnVKYmZUdmh5ZVpUNGE1eGRTeTBqUzdZcVRzZE5KbWZncFRpcVJka1dLL3BKMm1yR1pQbXNFZnYyNWdjTkNkaHNxb3Q3S0VNUDE2cEJ4SnhBRjh3S2lHV1VxdncrS3BMM1lBVDZoaGtIS2RxVmtSNEtEbVpxUE5DUElDWU1Fc0tPMUJzekhTZVhETnE4TTFZS284bUlrZE5qbU05U2lXR2VXQkV5aEJzbkJSaG1aalhWQXV2cVlLWWwyRGovZXhlWjgrdjM2amN4QTZuSmpGMU1nWHVic09QcDJHTmFJWW5zeUg4dk1VSXVOd2hndU1MeWJ6REVXR1laekNLakEvbGpjWmFCOEtRN3dNaEV4cDh6YVhRZnZLajR3WW1GRW1DZXE5WjQ2UUxybysycW9JQnFwak1HZXJQRHR2anlIbkN4MHVQMytoY3pxeForcHNOQ01qbkhtRkJ1WXZWVjZkaEVTWTdHdWdtbE9Zb3QxTlFDQ1BzUkhkNmNnTUQ1a2ZQM0d1TUphRlp5RDQyVzhJZ1VMT0ZkQzJIU3RXdWdKbVNaNGc1U25ON3JVYkhSWlZyZ2cvUGVmUGt1RW43MnF1eU5lM25SMTJLMWV0ZEV1V0xuRW5qbU41d21XUWxRN1VpSVEvREZiRmZMeGZBeXpNUXhiOHNHNWJyNUpYQkdhRXNrMWc3UEJ1QU1jSVI5Q1J3Wk51R2NicEdNYmZLTnIwM0xsaHpLMlZYLzdEMy8xMzM3R0VocllhQUdkV01nUVpTTE8ybjJIRmROSHM2OE85R1daL2hTbE5nejNrb2ZnK0Q3bGplNVErOGt2WWFZTHNtdTNOQURaRUlDSGxDSWhqeFRaME10U3FBZ1pJdUpVbUlJQUNRUnR5R0h6eVFwbDU2eXJjRGpPeUhkZ3BIcGVGeXF4ZGI5WVRBeWU3Y3BVT0EvSEZuK1hLcEJzYkgzSGo1NGExajBBMXRCMVlKcG4reVVFZUt3NERKTHQ4bFIxT2dxRGhnSW9HRmNyTzk5ano5Sm94STQ4UGw4U0VnU2xqcGswUVowZG9KUVZxRlZqK01LMFlpa0lPcW1qOTlDbVhYN0hLL0NtQUZJYXJTZ1dGWFlkcmVMaUliakt4cGRlMStJSkxDSWdNVkduR1J3U2x3WFRsOGd6akpwNVBKeWk5eFl0YVFlN1lWUDB3Ty9PRm5SYkZOZ2oxVnVGejU3UTBVQUNqVStpUkVBRkZRcGtnS0NHc0NsZ3ZGenVLcnFPL0h4b0FCRURmWXRlemZMMHJuaG1GTnREaitFWmpDZ3dKQWdqc0FsVCtJdnFBMzU2b2xLdFFyOGVqSXFVdGpVajRlU3RxSzJzSWFVN2x3NkdKaElrbmlRNStwNENicnhTR2JHdGMrK3pZbUh0eTF5c0Q1ODhOL2NYdzJjSGZya3lWLytrZi9kNS8rQXVmSkVKN0RlQ21kOTA1U0EyZ3U5TXRDQm9BUVVhVXlYLzl5SVMzR0ZDdUtDejJOM2V3aDN5OEg5MTBtY1dIeWRJUTMyRFhhVy95L1hCRFE4T2F5WUpmTTN3YS9TYmdQVGhnb1RkaDh1ZHJuZ0YxS0lFSTNPbGZ2TmlZa2Y3eTRqM2o1TW5GcXF0QWM2aERqZVJaYlRjMW9aMTBIUnNkNHR0NWVLKzV6RnN5K2hoSUdYbGxNRnRyRFl1MGNjRVN3eUZZb1lyclVWVE1iTG5PVHUyUzEvaDllSlFsU2JvTkNzR1MzYmhGTy90a1NxclFMRElmL0NFc3JtZGdUMlRZd2dhazRYMTgxa0ZsUVppWUIxYk9pTnlRUkRsVUtOUWxJSmtQaXh1WVY5ZEE0c0xtN2E2NmZ3L0NrS255NVdFY0R0cXNOZ0d6M0JzQWd4RXFDNjRaeW1ld01jSE1wVjFRWTFtL1NkOG4wRk4rUGxxSXoyUEExSTU0aDRLM1NSbk9FR1NydHdJWElLeEswQUxJM0c0UzJzMFZWN25pb2lWZzhHVjZkVmtkQXBxQ204OGhVSkF6SFNjaXp2NzhTdE5TOUNrUGJVVVhCbWdUUlQrTlNQaUZ5QjZwMkFxemRneW9vYjc2dG1RQ2JOZnExSlNyb0V3b3BQcURUVHM4TWQ3NXlzRHBYL3pxbi8zWHYzN3F5Y2VmdGRocHROVUFBamp6dHA3NS9ZeExNK2tPZHM3a21zMURXdG9aUm51Y2ovbHgxbXdJYStWSEUyVFhhVysyQjV2RktOaUUyRHRDVUd0YlFRTVVNd0tYQXJ5ZW5rTEVqTWFuNWZoS01uc3NtZWFFRzl2M21xdXRYZXV5VjE3bHNqQ3J4NCtnbkt3SEQ1T0E4Y3VURWhZY1lMeHZ6b00wYVRRVURPQjdCZmlOUHU1SDZHT2RVS2RaZHo5aW90aEtpYkx3Rmw5aDNVYVg3WjRIUDdaUmt2bmo0Y1V3NWRQVnBZRm5MejYxT0dIbU5GVWZESW13NGczdmNzVWJiOWJIVVJoZC91UVFwYkVzaUdCcVE1RXF2bmJLS1dTWnAya0t1TEI5aHhGaGVaNUhZRjVLNTY5UGdsK1VtUURoc1hDUkJGSVdRdGFXTXFadEtMNlB3eE9DZWI0clVXbXRiRG1Tc2xPdFZaWWltRG5mMit0eUMzbk9vUk9Cdk9VTExhSmVVZHhTQWNzOUpLVFdzQUN6L3dxVWs4d2ZGOG55TnpMSXhiTEFFdnNTYVZjaUU0T1BuL1JWbE4zKzdrb0R1cWlSUVd2angyYllUdEp3SURtejJkci9oK0NHekdPMDFRRGVlZU9OZDU0YUhMaUY3NnZqU1VCMWtBK0w3UGhSODlIdFBXamFZUFIyYi9KSDhXUlZKTmxEUExQT3pzL3liMjl5L1Q4OGRBYXFMdC8zN2hNQnNRMUlPWkx3ZVlIWWtHT2E1ZWp3UGVMQjJVcEhnOEdJRE5PR05lTHpsVkRnRXBnZ3pNQU9uWkpmdmRybHVjbUhBY1NqdXZyRUdQNG9QSGpZQklWVU9mWHdEVzlmOGRnclh5elMyVzEycGhWMVE0V0c2czhEUjdpTWp1aHloc2I2ajhOZERPQm5TODZhUEFsSmxaNHpZRzdKY3BmbmpuRmx5bVc2a1JlWEJyM3pYSlpxTisvSGcrU215Um1HVDhDQkdVTnJjRUJKQ0RCLzVGbTQ0bHExandobDR1MUFmZWFMNlduNmcxRTVNaFR6Ulp3OGx5b0g5a21RcXptWmx4cFZyUTAzMmd6Q0xiOTVxK0xud0pEVXRMZzAwb0Vlbm5FZ1FmMm1XczlOdjhMOGhkQW9YbE81SXNabjVyN2tjcGZMZWxOUERubFF1QlNYTEhVbHJOczdsaTJESGVvelpuc2VubUo0amdlOWtBWnpqMTdFd2FVWjNXVDZVb0hMR0tqY3ZmMVEvYnYxR0hkNGJrT1hKRVZJT1FDNDdiK0pJZ1FIVExQR29jcWZKb1VudnhLTWZrdUM1ZVl0U0w0cUhJTUsxWThtd3RYOVc2OGNPTFBybFdlOE80VzJBdURHbTI2Q0FCaThwYnVyQTB1QWZ0K2NBQWRxWklWTi94ekEzaDNzRmlBL2tTV0k3QmJYK3lWTldWdUVSVjVtbWM2a0FCZ2FIcFo2R1B5RmhEV05PQ0RZTklnd3FGSUNJTlZkZGFuZUhPVFp2dmoxWHpsUU9PQ2kzWDB5d2J3K01LSU5kaDRtcWZxSGljSitCKzJxS2Y3NXpvRDYrYk4yNEVpTWtyZ21CamdxSk9LRE9mbitCUmpjWUZKcUpJaEdacmNabFl6QWJRcmJJQ3RDcThpV01LTlI4emg1Vk90NERpU0h0TnhVNUZsUk1ra0dTeElOTUFvT01pTnZmZkZhdkxTbVN5c0dMYnlOeHpKUUtEQk45ZGhSTzZqRTVZN3lCVUhZWktIWlpLRnhaQ3BWdFExZjRFRWRoV1VWYy9vY2pYbkJZQ2dyNzVEd0N6ejE0Vk91anI3a1BvUU9Ga0dUcVp3YVVQdnhvQkxYNHRKSTJON1VBcENlQ0gydUxzUVBoVklXQXBXZkxYTm5vRG1keGRMcHpDbVhnOGxsVkpYbk9uaHdpL3N3L0FBcHlsS2VtSFNqdTNmcnpBUExtODl5RExKdElJUzV0RUxmOGVVd0J0YkMxOFdzSHBIRkErNFc0Y0ZMTHZ6RXZvYmdiMEJwUmlDVXRqUzhEUW9vZFBlNlNkU0hleDljN2tRODRkd3RDN2R2K2F1aFYxOE5aNVFqdEJVQTc3anB4anRQRHd6ZXd0c2hDeFo0YWNPeHg1K0UzYTVCMCt3SzV6L2Q4bWZ3ZEhiQ3UybUxMVzNEWmpLbEFReERBOERnVUM3bTNZQzBaOG9GaHdZbkJvSUVRTG9IQkQ3Ung4TXBQTVZHTFlCbjZrbjZjZ3pYOFZqVDYxQVFpT2Y5Y3p3ZUMwYVllblduemZUVUZGRGVwQURJem9jNkN5YlVoaDd2UEdCSmtUb1l3elB3SUpyY0xPT09QRDlRcWd3UW56djVaQ0tDZzUvZkhSQmhacXVmT2VzcVJ3KzZ6TGxoVTVmSjhHSldYQU96cm9RQUJRTUdEKzhhNU5kdHN2MElDZ3JrejJ6VkpzaFgyZ0Qvc0F6aXVwa3pNSGZ2bFI3NTZMUWk4NkdiMXlJVHdjMWJpRHpQem8yc2FGY2RwdTNNdzkwRllRcWhabDlnTnExRDRid28rd1EvdG56aVdoN3JkOVF0UjQxaDNRWUlDcFNWK3l0K0RGaFprU2ZTRnpadTFxbEFDaW9PK0R6VWZvaGluemMvbVlHY2tZemZDT0FtNVJSZjhZWFY4UlQ2dnNKbENWK1V3aVZkbFZvVjc5eGtzZXJnOHdpOEJrbVhCTlFxOWtkUCtpc3dpZ0I0ZCtTZER1TmYwaStPWXY3NjVmTVpYQ3BDeTdJd0E4Y0NoZklVRDZSQkM4aHdud2NWQTE5MDFPcTUxY083WG5uQVI0MWdvNlVWdUplQXYzZ2RibzB2T3loYTI2dERmQno2YVZiellUNk5yZDhiN1RiNFpZYjBYbXFsMS93TXB6azloWmN5Y0QyZGdvMkhCT2hobnNFV1JVazVra2kwTWlCMUhDbzBaNldBVkI0SmNJM0t3VGYxOUZPWXRRWXh5NElaa3RraFBtcUtUREhZb1o3eTVSWFRRVW5SeVZ3cTZMZ3JtQ1VIMWRwQ2VQRzRBTnpZS3ZIc2V3WHRjbkMvQkpUTnRHUXNydWRKdkR0QUpqUTdsMDFNeDdmZDVLRTJSd01aUDdwMWhtdVRDZkpRejhzdi9FZ25CRGx6OHR0NElUMzNUNWpPOGlXakl3T3NrWGdIeFU3b2xkUUdETk1TaGZXQnNNNnZYWWYxK2dFd21PMi9NRThyYnlpem1hRklkRk40YUkzUGpUNDJvMEpJQnQyS1BRdmhCSUVYblFOZytUajAyZmFlbUNrZmthNmVPT3Ftb0hGTW9MMzRUQUtQMDQ1REVGTjBkUEZobkdwTkc4TldEaU95VWRJdFA1bFdkL05MeEVuK2VULzhzQkFzY29SR2Y3UDZPTS85Z0E2akVBL0VnMEZGTEl0NExvS2ZOR1A3VU5paWUvKzNqZmZjZjYvU0p1QnphOGFuZnZFenYvL3FqcGQrZ3p1a0N4YjAyYkFpVThwZ3EvR2ZQNjM4ekpTZkplTnZrMm4vd1ExN2JHRlFrMXV4WldsT2t6UkhSa1oxRjRBdlpxQlFZUHdrMGk2Z3lRTU5nNFpqcStsMFYyaDBBdm5udG16VEVWTE81T3pFQU5uVUVYSXlFNnlWcjNKMXpDZzhOSkxIZWo2L2VZdXI3bmlaTllCQ1lBK2ZVTmpwZ1JmTVlEcDNFQ0Z4WFlBdVVoYU00akNvczZQbnRjekpMMTJCNlF0TXhDUElZQ2pHNHF6WjA5dm5lcTYvMFZWZTIrMHFVR21ybFVuRU42YWtNQTZEVDIySGZ6SmpnYmZvd0lDUXV5NkRtYlY4OHBpcm5JR3FMY0ZBRFFOcFZxOXpaWjZCSHpxbDZqS01wakxoUDVpZGdsdGFEajFRSG5VUE4wcTRMSUpncWI5bVIzckQydDB0aEVERDBvT2ZYK1AxczFDNTJRWGhpVXpyMzdxYmdzYkM3ei93Z253RmV2aTZFaC9XNG5zWmVRclNOcWJSNzJpYjRwYnR1Tlp1WnFDMnkwUG9kZVRaYTRqREhQSER1cFo2dWwzbnRpdmM1SXZQdWNreU5BbUU2WjJFWUc2K2Y3RUh6RitlOG5lRUFsZ3ViMjJFUnF3Q0V6RlVCME1ZMFFxUHZNMVhUWmtDKzhsYkFWbmhVWC9maDExbTdVYjVKY0czUFozWjhZS3JRakR6N1VzVmFGOTYzTGxXTzVJcDFxL2E5OEFEMGIzdDVtdDUzUCt6UC91ZmRyNzgwci9pdCtyWjZCRlFpYmdhSHNrNkJGc2lVaXBGYzNBemZFTk5HeWVnS1d1czF6QlErU1JmaVdmM0pRQU1xZnltelp5RGx4dDUyU1lCd0NmaCtNUmFCVE9FOTRrYU1YU01BSU5uNkxrTXlLSWppaENrbWlGWFlyWkdoMVNoRFZCcjBST0hHVEF2MU5TcG5YeDFseTl2Vkw0NFA5cjR0RjhPak1rdkViT2VPVEkreXByZnV0ME9Ba0dnRUJRQS9kdXZjVVhrcllkNk9BQ3dKczlUQUlBSjlCNTh4dU4yT0JoVHpNOVRmam1vOVlEZXF3aUd6S3hiajJYTFM1cEZkRmNFMTY4dFcrN0dYbmxKVEFiK1JUUVRETklBMlhmMXJPcG1UVUUzVFE1aWUrRkdGdVYzV0w5emljRTQybk1BbzA2Ky9LSzRVZS9hcC9hUTRhMVNFd0FVa3JSSUZlZnlCYTVPYUdKOHJUbXZuZVY5K2kxWHVQSXJMMGo0c0N6VUNqTCsrUXlXaS9LSXQvNDZpNXdWVGZPa0FHYll2SGZlNUtvUVN1WHpJKzdzR0Q4dVUzZWxqcEx1LzNlVVNsaVpZYm5rWWFKa2VxaTRWbkV6dlR2NCtBaTAyRy9rYm9hMUkrSEhtbmZYT1Jidit6azBhRnFSWjA3bjl1MXhZd2RlMDROQ0ZYMXV6aStQNnBsUDdIdm9nYzlaVEl4UmJ6Wmg2N1lyN2pwOWF2RGRITGpuenAxM2ZES09nNEtQUi9LcnVlUXJGbG9tUzZUeVd5ZFR2ZEpSVGtoeW1uWmNsQXpBKzYwME1kQ2dpdkUrZFZETGRFSU5BMUJVc0lZdkZqckV4TVZpaDZoVTZrUm5kSnJaMFFWN2wyWUIyanY1VGprUUg4amd1byszNFRoZ214cTJmVHNEaVVDT2JKRHRBZmdXUjc2Y2FTcDdNS05FY1ZzTEFPN2VjMU9RYXJwVVZReG9sc3RoL1Z2WXNFbFA0R21KZ3pibHlUNCtHTVNYakRiRDV3NkROdTZRVi9uQ1NxWkxxTmhjeC9QWWJsM3ZxVU5jRE5xdU5XQzBZN2krR0k5OWhaV3RMd3U2VVlPY3dnUHM3L3VEcWptR2hOb012UWhHenFCZnFGTG1KOEIwNk1mODVtMXVZczh1VitYK0JPT2hVRHFlaTJ0UTJOSXJ0RG1Ga0YxWGd3UXdmNzdocHJRTm1oR2ZtVUFjTW1xRlR3UkNTMEdMTUV2a2k3U0tiRXlqZktraGNTRERKS3p1RnNpOWlpb2RXQmR6M3lYZjE2OHorL3grUTRVek9aZGVDSVpZaHhDZ0lJQUQxK0I0NVZrQWZnUmsvT3g1TnpMSnZRb2VFZTUwWGJ5RGd6Z3FQOHhBMG9KbUlFVDBkdG40NDlPYTI2SjQvNlRib3pHdmRCelkrY2MrZ0FCMGk1ZkJMdzNlcVRtL2J6YzBnQW5UWk5RM0ZJenUxVE43ZG43VFIxUE9MZkdQUHY2enZ6YzBlUG8zeDhiT3VUVnIxb01aN2Zpb0NJM0d3Y3pPUzY1dFdEZ1p5dGJzU2RQKzVZZ2dkOXJMSTZSTEl2YUliTTBXdCtQVkYwVXNNOVZCd2NaZUc4U0J3YWExMDlMbDdzU3VWM1hmbXVBT05WOUlrVno3aCt2eVZ6WmY2RHpVU2EyN3g4ZkFYRGtJTU5NQTJFNThvQ2l6WUpHYm9tcE9RYmxoaTV2Q2pCb0d0aEFWQ2ZsWmx2WVFDZ1k0bnpOZ0gyamR6ZlV6N0l4VDJyUU5Td09iOGZoUmpXN01aQ1hNY0x3bUR5ZHg5Z3pyYWpFRnJrY2h5ZlI4anIxWTdGUmNZMXFJZGZpei9mamhDMGZWdkhlZXEyVHFiblRmTGgxZTRtamlwVTF6NExLQkE2eU92UGxvcldrQWFuL1V4VmNCNE5qSnVLNlY2K3hwd01IakxyTmlsUnQ3L29mTUR1blkxaEJKRUNyTWdDOHFvVnRsZ3IyQ1pRelg1WVEyQVZGL3J1a0YyRXZYWE8rbVh2aVI2N2p1SFc1cTF3N2R5cU0yUUhDODh0aHZieWZYeG1CNmFENThFUWpyV2tkRnVIenFCT1BiZS8yOUlFcVVQSWIzU3dXbDQ3RzgzdWIvdmR2N3l5MnJkeWZqTjZDUlIyUmw0eEtvYy8zdSs1MXIrSHhZQmN2VFk5OTRXSnZIZkkyZTNtdWdrTXgvMmYvSUYzNVZWbUFhRFdEclhWakwzY0pIQ3BjdVhhWk9VN0hSTU93VWRoUUhGVSt6VmFwVFVLVklXSjlodWFCRE1PVUpIWVNoeWNFeU9UWGVnaWJjQkV4K0ZKTTBtYUl4K0xXZ3FSWitTaCs3N2MybnB6QzRJZStiMnpPQk9EQVZEUTU3VDE3R1RVSUlrS0hZMExubEs3UkdiWWFKdGRBeHZGK05FYWI3L2VabGdwTmdlYlIzc0dnSjFMTVIzZFBsTS9lVTFLbXlLa1A4S0ZPemF6ZWJ4NHNSVVlLRVFwajV3cTdvNCtPdXdNZFZPZE4zZExyQ21iTmlFakk0dFEweVBZZUJObW9SaDhTQngvTHA0RlBXbm1uZ1JjT013VGpjUFMrczN5eU5abkxQVGxkR0cxZlIzMXBuSXo5cWNoUUMxUGl5V0hKd3FjR3hvWEFKQU5NQ0FpUHlXdnkwRnc4RzhlVGYrTXZQUzhWbWZOdkVwYnJPb1dtQ2k4M0F2bFE5a0JjM0Rma3dEdmQ0MkE2Mk1Ra3RFdmxXQjA3b0xUL1o4MmYxWEFDdnpTVUsxWGdLTzFUZFFleTVNb3BDRm1jL1UrTWs0MVBiek9rT0FadVVFeEJKelp0d0p5ajZveWFDdjRZdy9jdXVER1hTN1lNaU8zOW9EZllrSmVQRWJublE1Zmh0QTJrQURVOVRVdU01ejFleVFSZ2J6L29BbDNrYUdzQmozdEZlQUt6ZnVIRkx0Vno1RVBtK3A1Y2ZZVFRHRi9PL2xlUUhicG80bThYRVQxR2ZQczE3eEswRVFPd3hUUkFHQmhnQmczUmtZRURQMW1zM240ZFlFbXZCR093Sy9nSzRKaC9MWlZ3T2ZtV0pBREdUbGs2MjZWZkIramVMR1pzcU5oK3pSWUFZSUNvdkxKb1ZQUEVrRzEvQ1VZWDZMSC9rckFIQXdjQW9TS3Y3N1ZBSmVUUzJ2R3VuNjhDQUw0STVtWjU3T2R3TXN1eVluak1pMUY4d0x1LzVFL2FLY2RzZ3RGZHpNVi84UU5Ya1laekpFMGZkNU9tVGFtUEdVVjBRajh1MUVnUU8zVlhlK2dNVDhjazVuVU5BK2ZoUVZoRU1HTHZSUmpuTXZxZE91TWxqQjEwZS9jcW44TWlvZWN6UXZQVmNMTUdlQjNQRFRXYlgzUVc0QzlDaytJVmdNci9kdWFCMlpYbXpJWmcvbjl6VHdnWjl5UGdNMTNLVDdjR3lJcTIrQm95MEJmZ3hEemFqa2U5TE9zeG1GRWZ3VG10N3RsZExPMUxCd24vWWZScDVLVVQrQ2svNmVYdVN2RzhpWG5ERERFNHU5ZmdnRmNNOTFhRFpuSWVteHFYUlJRbUF0ZXRXWDQwMTF6MlU1dk42dTlDMHh2d1JhWUJjUEpHWlcvazNFYS9UUkp4ZGpGTE1ENmxIazkvRDQwRWc3WWhIRlk4c0NadEhrd2NuY0RBQ3pKSGhJVzFTWmJsTHpTLzhZSUFyQUMxS1JncE1haVlhbW8yUG1WanZyaE9Uc0x6R0xMWitoUjBtejI3cjlXR0lxemNOMFkrekgxVzFobnhKM04zVzIzTG9ENmp2VWNZdzZLeFF1UGJZaUI0Q3lrS2o0TDRKbVR6YzRtTmF4aXpxa2RjT01BM0RxTnh3RDREcVBvOG44NW54TXVVWTVCKzFOR2dwR1doNnA0NjQydm5UdUFxMEFjUW53eGFMWUNBdWJaQi9GVnBncmNiZCtacG5WZzR0SHZpeDEyUlRJTENjWkZRSkF6QWVaKzBTQkZBUjRkenY0VDRFVGM3SXV0V1k1ejRRbWRmSUh1dWxQeGljK3hFTVkxd3hzV2toakcrUFFFTmpnSC9VTnB6WllZL2JDbDZ3eW85L01MbEVZQU1GdjhndU41M2h6N1F1VWhUT2ZnaC8zbTcvZEN1eDdQNWZhUWh2Ukc0TERhYVJ3a0o4VXVSVzdoSUFkUXFBQkRpK3p1L2REUXMxSzR3aDc0ODBLUUZndWJiQUxiZmYvdW1CNDhmK2xNODQ4MU5NVWZuaW5HRDFEaG5lbGJRVHNLVGpHUnI5NUxaL3VkS0d0eERKT0VtN054aFhxaUtjSEJCa3dnQWZLMGFUUnd4VEYrdnVKTlR6MHJVM3VNclJ3enA2Ty9uU2M2N09kd00yUUgwU0xBRytQT3d3MnhBemI3dWZqc0dNbWF3RDJrWG0wQUVNWXFyZVpGSUxEMnQ3TXEwTlpxcm8xR2k0Y1dmcmZ3NDBDaGZkQ2tSNUpiUjhPR0hha2UwQjJMVjlXWkFQelhCZWc0eEZ4dU5ha2JDOHdNQ0lRMUFkVjN0UW1DRWZwbVdaZkkxVlRxclNETGNJdHFRZ0dOZGJmSHZyUjllMVBrK2FDb2pDYU5LTkh5UTNRV2VtTFgxaXYrRHZHU0pwOHZMSWdrdFVXNXB3ZjRKcllyNGxGMElZNGJhWFpXa3NyMUJ1RWtFUC9pZmNNc3hNL2dZL0t6Y05LNzg1ZloxbWRNZlpHQkpYaVB4OWFmQlR2K1Y5cm9ZbFdoSlRtQVNQZitNUmJRNXpZcWtpWDd0UzV0Y09QUEtGUDdKWWlld2FjYzJkZDNhUDd0dnpmcTduaTEybGV1dkhZbUpVS3R5RHRVNFBLSldRVGh2eHhUTWpJOUFkcDBWSi8xUTNNeDBkYWdXN0lUVTlKaVltZkIyNGd3MHhEMlN6dGZzbXA4cS9SN1hQYmg4bDBPQnNEVEFSR1E2TU1ZcVpwdFEzejJXd25zLzE5dHNETGNjT2l5RmlCaldHNXFEaDVjenRON0VnZldrM05SUHhtVGRNSWpDb2RZTVZMQjdjWElkN2hpTkR3eExjeHVCV2JWNmZjWlVuZXdEbEl2TnBWNSt6S055YVdZdWRzTk9md3NMQytFV2prTGYrV0FUWmd3bWIvdVdqYTVrcFk5WmdkTldRZVNvdFRWcVNadXl2UDVwQmVDdk1kelBxcXFFUGszN21TN2Vaa1R0QThXSWtYYnhHdVRMaHBpWkhvZW1NMmY1VmVVSkMxUVFBazRjVTNnelhONGYvYjQ1akZiSjZFSEU5Vy91WktWLytOQ0V1UjNRVmI4RTRlZmQ3WFgxRFdnQk1ESjEySjUvNEdwYXNrOUV0UUl3VVY4dlVmL25nd3cvK054OHR6dXR5d3RxMXEzOEJzOXVmYytDSHhtN1RyZzJJSXpIdHNtV3JvNWttREVhNnlXVE1seHRVN0d6T0lGTHRRY3lCQThMVWY3b3NUOGJYYmpQZDdBeTViUVlPY1prZjc1OXIzWTJlWWVkWWZyeU1mcU9CUUROcEQrWFNacDZZM29TTzdQUVhtZHRNM2czZ1N0bksxb2pJcDBVWW9YcVlKWUpaVy9uRG9YK3J0MngwUjNaengzYWpBRjlOSUYzbkFOWEJyQkVVcWdEOHhGRWpXSGc2d0JpWmg0MU1XNkRBTmFFSjRjNXg0R1BwVjJsOWV0Z3RyUnptN2N1ZnJtT3dLNlRCTHhrL1JrTVI3VG9KUDFvck45L2hIRjhISDRBc1JvNGRjYWQrOENRQ1l3SGd4ZWsvT2ZESWcvL0RyS21zTGg5SUFOUWdBTERHRkROTmkzUjRjSEd6aUx2aS9CWWZUNk9KT2YwNlBkemE0bzgzWmthcmpwd0pUVkZtbFVwb0xoSjltSHFtd3M3MkNtOHMzaDZsTUZCWThud0p6d1h3MVYrOFcyQWxSSCtvb0kxMlE1cTVrd3h2WVNsLzlrdndReFp4TG9TNUdySUhiRHlVYjdyVlpYZ0xPSUd6Ky9hNDRSZWZoUVl3Z1RGYnN5VUFJOWV6ZHh6NHloZWVzRmlOMTdsTXNIYkQ2bCtvVEZiK1hEMWk3WDNCNk9JR0hkSnExbFpIdGNNRk51RTAwV2ZQM2cwSXlXWlpWdzIybHJqb0VydzVTQld1dWFSdlJ0blpjcnlETUEvTHdiNTU4MTFQTjVhSDBxUW9BSXlzSkRadVVrd2VpTGxFYm1xTndhMllpSi9HVFBXYWV1Zk56dkc3RlFud0pPRHdpei9VSGtDRlMwM21qWXlneDF5OTc1RXZ2dXlqdlNsdDlxWmo4K1lOdnpBeU12cm5WSGUxbVhVaDhDMUNEWUNkeXVmMXJSTm5pVVNMdmg1MlNnNkV0dm1rdk9sb0tPY0ZGUHR0ZzFrM1dUSml1NHJPT3JNSXMwbVI3SnRTc2RNdFdiekNMVnU2VnU4UkRKdVJNY1BIeTd5a2FSdXd3Uy8yVjEzQXFjMDFNaDlGU1lETzhldXVkZlVORzh6RDQreSszZTZNTkFBS0FDd3hFUkZYbUNyVWVoYS85dGhmUlk4RlgzZ0wvUmlBQXVEOHlNaWYyK3V2R3FzNHV5cno1SjdlWFFlWlNVRmlTTGQreXBWMCtFdlFTS2RvZ1NoQ0hGTzJHUk1TelpIaXRPbXdkdjdUSVk2WlNEUDc1RzJSTHNiRlpzaDBvWVZuMTZmeGxkcGM4MktMQW5BUFp1bVNOVzdEdXUydUY5cUJidjE2eHJhOUhqUEYrRFNUZHMvOEpnUjhoZ21rdkJJT1daRmcvTHBySUFENHZZSVlGQURETC8wSUxEOEJBY0QxUDJObmpoNzR5b044ZERUQzdGcnV4d3diTnEzOTFPajVzVC9Ud1JidmQ2SGcvZTE4anM4bDhCa0VmdTc1VXFPNVpKSFBtOW9yeWVHVnZIQnEyS1hRTkVpUkxLUnNOWUF2REkzbGVkMFp0b1Z5am45U3NOazRSbkNiRVllRldUdjJycnZseTlhNVZTczI2azRMbDVERzZIYkhKekIrTEJSQ09OMGgzMFNEcHRCS0Y4eTQ4V3V2Y3JVV0F1QU1CVURRQU9DSDNMOTI4Q3RmK29ERk1GeWdmdnpqZ1huOXZkZVh5NVY3d3EyeFpyVDBUSUU3KzNvZXdDOGpURUpmSXZKL2ZzUjRNL1p2bWVaU2sxMzRiUWoyalNmKyszWDFtMGQyMTRjemVwcnNya200Z3hKVFBqcUhvVnVzbUhUR0owYmQ0T2xqYUdjZWZPclFKcko5Y1pnbkxEM1RpOURyNkFqckMxeWIxK0J4YW0vcUlTdm1uK1ZrNUIrbTh3ZWg3TzNPUEFoVmRKT0w1N3Q2Zi9wWmdNbWhVMjVpOExqalIxcHRkS2t0djN4bXo2dGZWUVNQeTFJQTlNK2J0NzVhcVh5Y0hka2FvVW5hRXpzM3ZHR0hBNkFsRTEwd0llZWttMy9tbWZaL1E2bWhERWxpM1Z2NXo0cW15ZmYxMGtXVlMwa3VnbHJsRlJOaU5GTUxmODd1NTg0UHVZbkpVZGMzYjVFWU9CWXdTZE5JUW9aK01rTjRiTmYySGV5U2lrSXduUnViMStucS9JaHJBdU9uQnR3a1h5UHVOd0I5OUQ4NXMyZlhpN0o1eExsY1JsaTdkdVc3SnFmS1QvRXp6cFRPMDFaU2pkb012Z2lsVU93d3FSdnRBY3dXbDZoWkc3S1pYYTZYNk5vWERGejNvc3I3Wm1PYVV2bWc5akdhUTlvTUg0RjhSK0hRMGRIdHRtOTlSM1F5TlJZb3RDdXFJY29ybVdtckM4RFBNcGYxNU1yRnJyb2xmUkRveko2ZDd0ek9GMTJONzU3Z3RWRFFhaTUvMWVHSC9pNzFXdUZXdWYvWVkrWEtsWnZycnJMNy9MbFJ5bUx2T3gwZ1piMHRZRjVmcitzb2RVdkZvMG8yTzdSb3pndG80VXZYR1c5Z3Q4NlE5WVZmK1EwczY4VWlVU1N6enFLTWlCTEhqY2VjOFduZGRYZjF1dXV2ZlRlRVFNSDhQZWNIVFlEcFRCdElhZ1lKdXk3UVlGY096dTNzenJyUjFXdGdpMGY3V1FxQVhTKzVxZ1FBUERLWmthN3U0c0lkRHp5UU9zY2U4cmpja0Z1eGN0a0RFeE1UOSttVlV0T2dkUVB3ZFZvOWV2bElGdXN2cW1kdk9sU3dpK3VldDArblhtQkozb0NDeno3TGl5dnI5S2tZNnBrU0ROL1IwZW5XckxUTnVzQ29xZlJnNmlTTTBSUDJDTFNISEp3YlhyZk9aYSs2MXJzQUJKM1ovWW9iMmJORGoxbmJBOWFadnovNDZKZnV0QWd4MGxlOHpMQml6WXE3WGExMmd4eCtKelNDZDVoaHY1QzMvWmxjYmpsM1pEczdPNWU3ZXZaMnZjbTJvV09TdU5BR1RIWjgzSVZ2TEpyTE9NdFNYMERsMGdQMDdRWmZ0bGtVY2ZhMVNNUnNiWTBRemNzdytGUWtsd0t6UTNxRXlCVmxGZWVadWZJYTEzLzcrODN0Y2ViVlY5em8zcDJ1VXFuWUhZQnM1dDhmZk9STHYyV2hNV1pmMzM5ZzJMWnQyNGZISnlZZWxzbzJqUUNZSHBZdW1UcmRwYTB3YzR4TGcvWjF1ckRhWGtUYlhFU1NOQm96WUp2RmZyUEpQcDFpR2lqU0xQT09BczBTeDQxVmM2citmQitqdmJ6MTBxQzAvV3EzNkFNZjlTN0RtWjB2dTlIOXV5UUE5SWk2cTk5NjZOR0h2dXVESTd3RnV1MlBCMnExS2I1NVF4MFhiOXBjS0hHVEowMXVSc0lWbTRpRnVOU0VuellVbFg5V2Y2alhqTlR3bDd6R1JWQmptNWwvMHQxTWR0akd6RVo3SXlYVDZmNThncHJqSnNwV0MrVGphZ2ZlNHVCSHhMbUVyMHdMN2t0RnlUSWEyYVBaQ0NYR2E5MmxINWsxamN2eU51Q2x3SUlGaXdybFN2bFhkUXVtb2JFdmxGS0RwSkZTZjRqZWt0Nll2MVpYU2hIS04zdHFTSjVDWStEcm84WS8rYU1NTGR0WGpOcmdSeWFOM0NFOEtVdzhLVjltN2UwRTdFUnlkazlSRkFDN3ZCSnBFY1pnenNweVhyUm1tUVkvYWRhNVlZdXVGV2g4NElRcm54MVMzWENocngvNjhoZi8wa2RQNGRLVTRETEU1czJiTjB4TVR1eXRWbXBhdHhsOGM3Vm90YlRYakJIZVZMeXhsNTRtOTB0MVljOC95ay8yaUtVMDJNMHJtSW5RaEYvQ04vWnZRRlJjTUtiWllkSkN0L3k4bWZXbUFoVXJrZGdndnlSQ0ZLVGhkdzE0S0lqUG0xd0tsTFpzZHd1U1N3QlU3c3dyTDdpeEkvdDBCNkNXeWZ6elE0OSsrWTk5YUFvTnBaeER3S3BWcXhaZzhoOGNIUjF2WGlZbFIwK2JGa3dPaWxZRFJBajVNSXoyWUJKSzBpb1I0ZjBWcHdIUm9FeEFqbmE1d2RjSHBNTmIrY2QrUk1McUVZZkhZYkZmRXVhVkRMQ0s2eGMvWWxIdm9NRlp1Sm5aYWVKUGptYWtMaHM1bXE4OGE1RHBaZmlET3dteTE3UEZ1Y2FYYS9DRG05ckcrUGk0WHNneWEvaHJOeVBqQ3VzMnVBVWZ1cys3QWJUSG1aZWZjMlBIRG1JQmxxbGxDbTdGL29jZWF2bENudFo1emtGWXMzYlZFeE1UVTdmeDJHWUtmc1MxR1hjQVF1eS9OUklqdG4wZXMwZTdnZEVhbCtLS01TNXRiczJ3V2lUcUFtdUtGYncxOG1zUkxuZlNmeHA3NVBKZUFpcVo3REYxSDRVUENWYnl1TDJGaVVkM2VZeVh3b0FCakc4Wm1UWE9lMktjNzJ6a2NkNWlpQUxEV3dMZ2JQSUxTSVR4RS9GOWQzMUVkZ0dGT3ZNS0JjQWhWODlrdjNYZ3NZZmU2ME9hMENiM09SQmJ0Mjd0SFo4Yy82VjZ0WG85Vm9ndGdjNWVoVmJza2FOZXp4aHYyM0N4WDQrVXcvVmh0bGhCaTgxZ0NPVDdtdVRtVHh4WlF5dzRNNjRZNGdXa3dodWdmRnNoNFIxYjI4UnRSTXUwQWRQa01jdnNaNFBHckVLRHpId0pINk5OeE9BZE5iQzRtRVpzYXJiM0pobmRSQURVYktqMGZNQ0hZQmlYalRxRkdqRjl6UHkwWVhtcDI0RmRYVFowbWhDdXFkOVc4Q0hNYjhWcTEvditENWtiNENiZ21aZWVjK01uajZBdytmdjNQL2JscG8rQ0JyVFBmdzV2TzJ6YXRHa1ZCcGMySkNid2gvODIvUmQvd3c3UkYyY3l1VVZWblllcTJxR1FTcVVwWGNOeHFVd2hYOWlLRVowSmdvK3ZDVytDdkdMUm1NdmxWdFl6Ymg2OUFqUFY2clZweHhpWW9RZ200Y1BzaUdkNXBSV3UxdHlheVdRM0lLMFcwWHh1bzFLcGpJQUJEeWN1bGdVRDZpMFp5RitaSUU1eTA3c0VmOTJRTjBGSlFVeFhBK0FYZXljY3ZCRHRZbFR6cEJaQWh1Y0RQM0xyWVNGb0JqeE42alVEcG1PS01YMHdwcUNYaXJTR2p6Z0RGR1hGS3RmenZwK1NtK0FicHJrRUdCODh0aitmclc5LzdiSEhFdC8yUzJNV2w1akRIQzQvUUpqT0E3UUlIeGdZMEQ0UG1IVnhxVlJhaVBWNWxsOGdLaFE2MXJxczY4UnNuUzNtaXV1cjlXb0pRcVk3bDgzZVZxM1cvTlFkaTRjQXlZV1VKZE9keVdZNk9mTlQ3ZWRkQ0g3ZmtDK1BuZCsvQ01GcE5wd2RVeVppclZqcGV0LzdRZStBQUsxVTNOa2RMN2p5eUxsUHYvYmx2LzF6NzkwU3M3dldIT1l3aDR2R05kZGMwejB4TWRGSiszaG12Rmc5WC8wVXRJUi9sYy9sK3ZzaEFLZzF0TWMwWVNGb0dRWEFYZDRCeFd5cTdNN3YzdUZjZWVMbmR6N3dWLy9MZTdmRTNFR2dPY3poRGNhTEw3NDR1bnYzN2xPa3c3c09Id04rRjd4N0Z4UUVMRnVxVUJUaXYyYU5JdmkxSU8wZEdlbndUOVdvVmlucklTRG9OS0RwTVNjQTVqQ0h0d0FuVHB4NEJxejduL1VKTnAwZUJJR1I5ZnB1SFU2S1NTY1NSUmFubWNqNHpNZW94dThzK28rOHpJUTVBVENIT2J4RnlHVXluK2RyNWlOR0RvS2dnZUkzQ0NVRlF4QVdpRE01WVovRjg2UVBnaUt1YmZsT2p6a0JNSWM1dkVWWXVuVHBMbkQrc0JnN1VNVGdNYVZtLzBnd3dDOFF2eXhkZ1NEaGd6OGdmaGNRQWNrYk5HMHhKd0RtTUllM0NNOCsreXcvcGZ4c3JPSUhwazR3ZWpUVEo0VkJBMUZ3OEp1SDFBQWdBR3BURTdZM01LY0J6R0VPYjIvVXF0V0JlTFkzaG05azdpU2x0SVdJc080bjQ0dktyam81YVFLZ1VwL3hMdCtjQUpqREhONUMxRE9aNC9Gc0QyWnVReVlRZ29CSUV6ODNyM1YvR1ZvQXpCcVdBSXl2ejgzUGdEa0JNSWM1dklYSTFPdkgwck05bURwSmdjbEZyWVNDSGJ2a3pqOWZBRXJtRDBzQTZBWCtLdTB4SndEbU1JZTNGTFd6c2VwUGlobGJKS0dRcEVhaDRMOHF6VWVNK1FKUTNoSGdHUUFLaGxsZ1RnRE1ZUTV2SWFpbGs5RWJaL2ZBM0duaFFHb2xGS0R1VDQ2NzZzUzRxNHlQK1RNQjNBU2NHWE1DWUE1emVBdkJ1L1d0R0RvYzZ0SEJIcmhiVWhBV2lGTVpHeFZWSVFBYzA4RWZscGJ2QUVoaVRnRE1ZUTV2SmNESWtib2ZVWXRaUDBrUUd5THZybUhtcjQ2YkJsQ2JtdlFDQU9scTdyQy9TbHZNQ1lBNXpPRXRSTGxjUGpFMVZkYlRnYVJ5dWVMS0ZaaWUrUDdBQ3RiNGdYaDBtTHY3cEtBSlNPV3ZsblVud0NHT3ZnZFlkeThjZk9lMXUveGwybUpPQU14aERtOGh3TUREK05XbW5XYnpPaGs3cG1vTlRFL0c5MVFCbzBkMkx5Qm9kNTc1U2JWYS9aREwxVDdsZnZ1M1o5d0puUEdnd0J6bU1JYzNEa3VYTHUzT0ZySjNGcktGRmk4STVBeFBNNzZmSDJ3WmwrblB1c3h5bHdVTEkwNSs4M2FYeVdYR2E1bnNqa0xPZmVPMXh4NDc1NlBPWVE1em1NTWM1akNIT2N4aERuT1l3eHptTUlkLzhIRHUvd2MvL0VmOTEzYkRsZ0FBQUFCSlJVNUVya0pnZ2c9PSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzFfUFJFIiwiRklET18yXzEiXSwiZXh0ZW5zaW9ucyI6WyJ1dm0iLCJjcmVkQmxvYiIsImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJsYXJnZUJsb2JLZXkiLCJtaW5QaW5MZW5ndGgiXSwiYWFndWlkIjoiMzBiNTAzNWVkMjk3NGZmN2IwMGJhZGRjOTZiYTZhOTgiLCJvcHRpb25zIjp7InJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImxhcmdlQmxvYnMiOnRydWUsInVzZXJWZXJpZmljYXRpb25NZ210UHJldmlldyI6ZmFsc2UsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJhbHdheXNVdiI6ZmFsc2V9LCJtYXhNc2dTaXplIjo4MDkyLCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxLDJdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjgsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MzIyLCJ0cmFuc3BvcnRzIjpbInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5IjoyMDA4LCJtaW5QSU5MZW5ndGgiOjQsIm1heENyZWRCbG9iTGVuZ3RoIjo2NCwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjQsInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjoxNDF9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wMy0wNiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ik9uZVNwYW4gRElHSVBBU1MgRlg3IiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNTAzMDYwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0wOC0wMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ik9uZVNwYW4gRElHSVBBU1MgRlg3IiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNDA4MDIwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0wOC0wMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTEwLTIxIn0seyJhYWd1aWQiOiI1ZWFmZjc1YS1kZDQzLTQ1MWYtYWY5Zi04N2M5ZWVhZTI5M2UiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjVlYWZmNzVhLWRkNDMtNDUxZi1hZjlmLTg3YzllZWFlMjkzZSIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJTd2lzc2JpdCBpU2hpZWxkIEtleSAyIEZJUFMgRW50ZXJwcmlzZSJ9LCJkZXNjcmlwdGlvbiI6IlN3aXNzYml0IGlTaGllbGQgS2V5IDIgRklQUyBFbnRlcnByaXNlIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfSx7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjYsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo2LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNpVENDQWc2Z0F3SUJBZ0lVT2ttVTM1SWljWG9WUGpmdndwRzdNTjZ0SFBVd0NnWUlLb1pJemowRUF3TXdRekVMTUFrR0ExVUVCaE1DUkVVeEZEQVNCZ05WQkFvTUMxTjNhWE56WW1sMElFRkhNUjR3SEFZRFZRUUREQlZUZDJsemMySnBkQ0JHU1VSUElGSnZiM1FnUTBFd0lCY05NakV4TURBM01Ea3pNRFF5V2hnUE1qQTFNVEV3TURjd09UTXdOREphTUVNeEN6QUpCZ05WQkFZVEFrUkZNUlF3RWdZRFZRUUtEQXRUZDJsemMySnBkQ0JCUnpFZU1Cd0dBMVVFQXd3VlUzZHBjM05pYVhRZ1JrbEVUeUJTYjI5MElFTkJNSFl3RUFZSEtvWkl6ajBDQVFZRks0RUVBQ0lEWWdBRXRnT0M3SUt4aXBNSjdiVlBUVDgzT2U5MHh6SFBDZWJ4eUN0Zy9XcnNUclJhU25ZaWdtSkNCOC9qcUJONE9RRzJkWjVqY05zTDZTd0hvc1lEUkpjK08xems5aTVHRVpXZjNJcjk5MkE2ZHVNc3A1MWxxNGZBZ2EvVXpUTjkvRWJ6bzRIQU1JRzlNQjBHQTFVZERnUVdCQlRmeHpnOEdHellBaWRLTDYzdWhTaXJhWEpJS0RCK0JnTlZIU01FZHpCMWdCVGZ4emc4R0d6WUFpZEtMNjN1aFNpcmFYSklLS0ZIcEVVd1F6RUxNQWtHQTFVRUJoTUNSRVV4RkRBU0JnTlZCQW9NQzFOM2FYTnpZbWwwSUVGSE1SNHdIQVlEVlFRRERCVlRkMmx6YzJKcGRDQkdTVVJQSUZKdmIzUWdRMEdDRkRwSmxOK1NJbkY2RlQ0Mzc4S1J1ekRlclJ6MU1Bd0dBMVVkRXdRRk1BTUJBZjh3RGdZRFZSMFBBUUgvQkFRREFnRUdNQW9HQ0NxR1NNNDlCQU1EQTJrQU1HWUNNUURzdjRLNk5mSnZmdnpkME95Z3dKL0FCaUx0Z3RKV2hYVGVVbGx0ZHFhNFdzT005dHZ4NjM2djVGSXZaUmtLMVhvQ01RQ2RvUFErYTRmREJFaU51ajBXczMzdVVRaEdycHNlUERHZlZYbjRrRXBiVElCZU9kVkF4Ly9Uck1DL1NWYitic2c9Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQU5FQUFBRE1DQUlBQUFCaUVOSDlBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFBN0RBY2R2cUdRQUFDWnZTVVJCVkhoZTdaMEhkQnpWMVlEWERUZWFzU2syRUV3eFlNQ0FBUU9HbjBEb0VDZEFDS1lrUUNDaEJFaUFFRWdnaElRRUhBaWhkeExBWGJMYUZxMTY3NzJ2ZXU5OXAvZVoxWC9mekVwYTFnV0RaNldWOXQzekhSMGRnM1puMy92bXZ2dG01NzJ4ak9IQU1iV0JuY014MVhFZzUxUlZIWFVUTmMxdDlvS0t0K0x6SDQzTXV6bThkSDFFdzZsUm5TdHRneXNjN21OaWlXT2MxREZPRWpQYm9hQ3ZvY2RYMllkT2krcTRPTEwrMXZEU3h5TnozNDdQaXkyb3FHdnRjQk1FMk9MMTV0dGl2ODRKZ3REVzBaRlU1bm8zcmZ3Ulc4bDFZYVZydHBZZi9YWHRuRzF0bG1pM0pVNnlKSTlaVWpHaEJQUTQ5SHZVNk54dHJjZHNyVDE3ZThYMXUwc2V0eFYva0Y2ZVdsN2IyZFVsaXFMWG5nUEd2cDFqR01iVjFCcVdWZktjTmZmRzhOSXp3aHFPRHUrY3Y2ZlBFamxzaVNFc05zYmk0Q3l4dkk2QUNRMzA3bmF3cVBmQmdZamh3eUlHamc3ck9ITjMzUzFoSlgrMjVVZmxsdFczdEhNYzUzVm8vN0VQNXdpQ0tLMXYvaXk5OUtHb292VTd5bGZzYkpvVDFvY2tpNWVSNXZDTGpiWllTZlRHbUZBRCtoMmNpK1dRQ2VDRG5aMGIxbnZjenNaTGRwUTlHbFAwWldaWlpWTXJSVkZlay9ZVC9zNUJoZ1BoUGtncXZDdWlhTTN1K2tYaFBYT2lSaXhXR2drTzJKbHg0YkJ6b1FscHNWTElBVERCVU1KS3pZMGFXUkxlc3phczd0NDlCWitsRlZVMHRCdzQyMzNET1o3bmE1dmJQa3N2dVd0UDRTazdYZlBDK3kxeGVtNnpRMGFsOW5wN1RNZ0RWb0IyOFJKSXNpQzg3N1FkMWZkRkZueVZXZGJZMWdIekFhOVZlOFdrY3pEdmFPdm9oQnJ1b2FqQ004UHJGMFQySTVkaElJY1hoWmZHZ3lsbWI5QlFDOXBCY1M5QThsdXdwL2VjOE5ySFlncWljOHM2dTdvMVRmTzY5YzJZZE01TmtNbGxydWRpY2kvY1Zyb292QnZKQ3pVakpGSnNHK2JBZ0NIZ2lWT3d4SWxMd2pvM2JDOTUwWmFiVVZHM3Y4SnUwamxYUy90N2FlVTNoWlV1Mzk1Z2lSelNwd3NzcnRzd0J3ZUpNaFE0czJmZzJHMTFtOEpMUHNtb2FHanIyT2ZWazBubjdQbmxqMXFMejloVk55KzhEMmtMTlJ6ODlIOXBER1kvd01RQ1RTbkkrV0c5WisrcS9aMjlKS0dvY25CNDJLdVhUMHc2OTFaYzN2VmhKY3ZDTzlCZkdqVWNUbktZZ3dmVmRycDJObWI1N3JhYmR4ZTluNUJYMDlMdTFjc25KcDE3TkNMM3pHM2xoMFgwbzBvT0NidlhpMkl3QndhY0FYUGl4SVhodld1L0x2MWRkRjVLZFpOWEw1K1lkTzdtOE5LanY2NzFWbkl3WS9WN09Rem1ZSEF3NE55Y2lLRmp2cXE1TGJJc3ZMTERxNWRQVERxM1BxSisvczRPL2MvMGJ4cDhYd2lET1Vqcyt2QWE0MTZ3by8zeTZJYlBxd2U4ZXZuRXBIT25SbmVpTCs5dEU5ODA3UFZ5R015M1l0T3JPaGdubzBiUHRuVzk2M0o3OWZLSlNlZFcyZ2IxNnlPY2Zya0ZPNGY1WGhqeXhISVdwN2c2ZHVqTk9zYXJsMDlNT3JmQzRiWWtlOUJWRnI5WHdXQytLMDRCWEZybGRHK3A1NzE2K2NTa2M4ZkVrdWdlS2V3YzV0QnhpdURTQ1hIRTZ3MEh2Q1o4akpOQ3pvR2hmbitQd1h4WERPZmlxZGUrelRrOXoySG5NSWVPTjgrUnJ6WHM0KzRTN0J3bUFHRG5NRk1OZGc0ejFXRG5MTkVoajErREJKclFkYzVvN3FoOUVSbEt3T2VkWXUxbXVYT0dXUHZFVnpLLy94Uk56SmtnaHBnN2U0RlBaM3hNLzNZTEtMUFdPY01lUXlsMFFyc25tVkF0Q3JYN0FpdXh5RVlzdFJOSE9vaGxEbko1TEhXc2t6cmVTYTJNbzFiRlV5ZkdVeWVOYzNMQzdPR1VCUExrQkhKVkhIVk1MTG5FUnM2YnlwdlRacFZ6NDFscVVqajlGemlQNTFxUld3dDF0NDZLSlZjNFNmQnBkUUoxWmpLOUxwVytLSjIrUElPK0tvdStOcHU1SVllOUpZL2RsTS9lVnNEK3JJQzlzNUQ5ZVNGN2w4N21vbG5DM1VYc2ZjWG81Nlk4OXJJTUdoUmNiQ2U5amViWHBJRmc5amhucEM1SVl4R1F6TkR2TUhBc3NwRndIcDhVVDU2WlRLMVBvNi9Nb20vSVpVQ21lNHE1aDh2NEp5cjU1MnFFdjlRS3I5WUxielFLN3pRTEg3U0lIN2RLbjdWSi8ydVh2dTZRdG5WSzI3dWtIVjNTVHAxZHM0WGQzVkpranhUV0xjSG5mYUtTMjVqSkxJdlZuWU1HOUd2VlFEQWJuRE5PMFBHc05pK0dXR0tIVEVhZGxraXZUMk91elVHSjZwRnk5b1VhL3ZVRzRjTldFV1NLNkpHZEEwcnFrSkk3cXBZUWFpV2wxZEphRTZPMXNGbzdwM1Z3V2hlbjlmQmFyNkQxNmZUUExnWkZ6UzE3aGlSUG1Wdjl1Rlc4dllBN1BvNnlST21GaDEvYkJvSVo3TnlFYW5xSkJwWFprWGJ5NUhqcWdsVDYyaHhtY3hIM1pDWC9TcDN3Zm91NHJWTzA5MHNaUTBxeFc2bWwxVllXeVRRaWVTakZ3NnRqc21kczN5c3RReUFHQmMrZWJ2bVhKZHlKNEp4UjdQbzFjaUNZMmM3cHVRMFMyeEVPY25VaURXTUVGQ3QvckJiZWJSSER1MlZJWTJXRTJzUnFQV0NZN0tFVkQ2ZDZSTTBqYTJPcVo4emovV1FoSFpEQ3c3dWtYMkRudmgxdmVrTzVEUXFSdGNrVVZHbVBsTVBRS1c3dmxOS0dsR3BLaFpHUlZzQXRyTmFCb3BQVGRuWks5eFp6TUlIRnpoMFFQYjB0dEtIWi90Vlp6T1BsSEF5Z3puNmxpbFM3ZVkyUVljVDBRQ2JEOGEwQmxlc083TnlCOEE2bWJoaE1WempKOWVrMFRQaTNOQWpXWHJtR1VxRSt3MG50dXdaMjd0dlFuVnRnSTA2TUo2L1BZWjUzOFdIZGNnV2g5Z3Nvc1hrUEZNZDNDZXpjL2pFeVhCU3h4SWF1dE4xUndMN1JLS1FNeVoyOHBtRFpEaUd3Yy90SGQyNnBqVHczaFg2d2xQdXNWU3gycTZPU0J3dDNpSUdkMnhkZ213NWt1SFdwOU1ObDNMWU95VVdwM01GdXc0M2pRSUdkMnhkNmhsdHNKODVKb1VDNDdaMVNBNjNpNnMyc3dNNTlrL0VNZDVpVldKTk0zVi9LYmRXRms3Qnc1Z1YyN3B2b2s0YjVWdUxrQk9wbmhld25iV0l0em5CbUIzYnVtK2pPSFJ0SDNwakx2Tmtrd0tTQnc4S1pIZGk1Y1l4UkZjbzRHM2xST3YwbkY1ODJyTUFzMVhzb09Nd0w3Tnc0dW5BTHJNU3BpYWlNaStpUmU0VDliTEtONDlBQ096ZU9QcW91anlWdnlHWGViaGFyS0ZYR09TNHdnWjBiSjRxWVp5WE9TNlgvVU0wbEQ4ckRFczV4Z1lvZVh0dmRKZDBYMHM3cGxkemNhR0s1azl5VXovNnZYV3hqTlFWL2RSK3dHQlMxaUc0SjNiTVpIN0xPZWI5VUpTNUFTWTdQR0piWktmeDZDOTVKODZEYk9RRjRXd0RHZEZuekF0bDI5dEhNYUZzN3BidUx1SldoNnh4ODVpZ0NqdWEyZlBhek5xbVptYUtySTZMcW9XUVBET0w5Z3RiTm8vVVFyYXdHL2RISWFQVzBXZ3RRYW8xT05hVldrWk5Vemt6Z3lGMzZCMGtjVUxZMENqZm5zY2M2OWZVUWdGK1BCSUpnYzI1dURIRmVDZ1ZKTG5rd3NOZEhRR2RHR1JzUXdTMjFqRkF6aDVYNEFkbmFLKy9wbG5kM3lkczY1YTg2cEMvYXBVL2J4STlieFk5YXhBOWF4UGVieGZlYXhYZDEzdEdCS2M1TUJJNGNQZzU4aXIvV0NmZVZjT3ZUNlNNZG9ibldFRjBpY1I5dUo2L1BacUNiR3hnTlJyUUFCUXpaVUNsbURTdTd1NlYzVzhTWGE0V25xN2hIeXJrSFN6bVl4RzB1NU80czVHNHJZRGNWc0xmbU1iZmtNVGZsTWpmbU1qZmtNTmZuTU5kbEk2N1YrZEhNQkMzanpVV2Y0b3BNNXB3VSt2ZzQ4akRiWHQwUk9JTEZPZjJhM0x3WTlFM1hBeVdjdlU4ZUNVeVNnNG9OWHJtVVVIZDFTUys1aEx1TDJhdXptWFZwOUJsSmFIVTdsRFhIeDZGMS9DdWNGSHprbzRGWThpZ0hDV2tBT01LT2dMTmkxckRVVGk2MG9TOFk1L2gxUjBBSkZ1ZFFNWUhXcFY2VVRyOVVpNzdwQ3NRMU9SQU9LcmIwWWVYZmplSXZpcmtONmZSSjhlUVJEaElHZEVONnhNVG1NVVpON1V2RXJBTStGTFQ4MUF5cEV3U0xjK2pERThjNXFSL25zUiszU3MycytjTXFDRGNrZXRJR2xiL1hDVEJLUWxaRCszUkFjeHUyR2I4WXY0Y09FNS9hcnpzQ1NoQTVGMDJjbmtqL3BveUw2WlVIUlBPem5GdjI1STZvcjlVTDErVXdLMkpKMU9Mb1JQZHBlcjlEd2dTSW9IQU8ranNTaWpueW9qVG1aWmVRTTZKUVpsK1dnNUc2aGxJL2JKRTI1Yk1ueGxGejlYZWN0aE05eEFrZTV4YlpTSmhTd1J5K2xsSkZHQWpOQzlVekJvblQyaXMvWE1hdFRxVG13OXNaSTR2ZllXQ21odWwzYnR5QVpiSGs3UVhzcmk2NW16ZjVMaEpHUVJQVk54dkVIMll4aTIzZTJoSG50bWtqU0p5YkUwMmNHRTg5V01vNSt4WEM3S3NrZllJVzFTUC91b3cvUFpIU2MrcVV6OVF3dmt5L2MzcVNXMkFsejBxbWYxL0ZaNCtvZ3FscnVqeWVzVHBLZmJ0WnZENkhSVStRZ3JlRFNzN3ZHREJUU1pBNHQ4Uk9YcHhPLzZWV2dFSFExRnB1REVyRDNCSGxEOVg4ZWFrMGxJekcyL2tmQTJZcW1YN25JT3RFRTBjNXlLdXltSDgxQ2k3SzVKV3JidG5qNkpmdjEyL1hRWnMxZzNCNFlKMWVnc1M1RlU3eXBsem0vUmFoaVRIVE9VaVpYYnkyclZQYWxNZUMxcFBYUi95T0FUT1ZUTE56cUtKSFAxZnE5eTk5MFNhMmMyYk9XU1Z0ckk1V1AyZ1JyODVpRnFJWkt4WXVDQWdTNTA2T0p6Y1hzWkNRdWdVem5XUFZNU2dRdHpTS2wyYlFhRHQ2N0Z3d0VBVE9vU3NYcXhNb0tMbkN1K1UrVTcvMUloVlB6b2p5Y3Exd1lScU4zZzVmSlFrR2dzUzUweE9waDBxNXFCNTUwRlRuUm1WUDJwRHl4eHIrM0JRS3ZSMTJMaGlZZnVjaWtBZG5KRkdQbEhQV1BubklWT2VHSlUvaW9QeDBGWGQyOHZqVllMOER3RXc5UWVMY21pVHEwWExPWnJaejhHcHhBL0tUbGR5WjJMbmdJWGljZTZ3YzNSNXNybk13VWp2NzVTY3F1RFhZdWVCaDF1YzVjTzVKN0Z4UUVTUnpDS2puakxzMXpaMURESXVlK0FINWQzaHNEU3FDeExuVDlIbHJaSS9KZHdpUFNKNlVRZlJsNjFxWXQyTG5nb1FnY1c1MUF2WExFaTZzVys0VnpIU09rRDFadzhxTEx2NzgxUEhyYzc3dmpwa1dnc1M1aytPcHpVWGN0azZwaXpmemV3aEc4UlM3MVgvV0N4dlNHZnc5UkxBUUpNNmg3MXNMMkMvYXhUWlRkMFFYVlU4dHJiN2JMRjZWeGFCbHcrQWN2cEZwMmdrQzU5RFBGVTYwaDZ2cDk1V29uckZPWHR2YU1YNWZpWEh6SEU1MTAwdVFPSGUwZnYvY0d3RzRmdzVLdXRnKytVSDljWkhlNVY3WXVlbGxtcDBEOU55ejFJYnVFLzVybmZuM0NVdmFXT0dvK3FKTHVDaU5XWUx2RXc0R2dzUzVCVmJ5N0dUcW1XbytaMFFCUzh5TlZsYjdiN3QwUndGN0F0cE5rckJFNEZRM3JVeS9jOUQ5K3Jxdkh5U1FENWR4Q1FPeTZRdXEzYkluWTFoK3ljWEQ3QlV0aVFEbmNGVTNqUVNKYzhEeVdQTE9RamE4UitvVFRWN2ZLbXNlbUVsRTlraVBsSE5uSmRPTDRVMVJ0ak4ydmhuM3o4RDN3REFCWXZxZEE2Q3pJNG1sZHJSUitpZHRZaU9yU3FidUlReXZKV3Jvb3NuL090RGV1ZWNtVS9CZWh1aGU1d3dtek1QeUJaVGdjVzYrbGJ3MGcvNUhnMUJNS0d3QU5uV2xGVThscVg3VklUMVp5VjJkelp5ZVNCM25wR0R1TXQ4NGdDZzk1M2t4VXVDQm1maWZUV0pDL2UvS3hIbGk0TnV3d1VuUU9PZUdrZzZtRVU5Vjh2RUQ4b2pwOHdnOTJ6R0twNUhSNGdia3Q1ckZ4OHI1Vy9QWWk5T1kwNUI4NUpFT1lxRU5QU01BN2Y1bmRKNWYxODRJWm9SMndlTWNOTm1xT09ybmhlelhIVktucWF1L2ZBUG1KME9TVmtHcTlqNzV3eGJwTHk3aHNRcHVjeEhhdy9XSDJjeWxHY3lGYWN3NUtkU2FaR3AxSXRwNTg4UjRhbVVjZFh3Y0NWNGVxN1BDREtCNEJZN1JXYVp6dEFOeGxBN2EwMVBmMWhQdGhtbER1MkV1QVd6RVlodXh5RVlzdEtKblBTNndFcENoNThYczZ5U1p5TVRCYVdGUU9BZm9qUVhOZldVbTgzcURBSU5nNExaTWh4Zm1WTStnNEdsaXRCSzNtaklvdy9RQ3h0ejNXOFF0RGNMTHRjSnoxZnlURmR5dnl6Z28vdTR1OXU0dC9KTjg5c2Q1N0MxNTdNMjVpSnR5MFNiRDM1c2JjNW5yZ1J6bTJoenZIcjlYWnpFL3pHS3V5cVN2ektRM1p0S1haOUpRYVZ5YVRsK1NSbCtVUnE5UG95OUlvODVQcGM1Tm9kWW1VMmNsVVdja1VhY21VajlJb0ZicCs5R0N3V0RxSWp1eTBPdlp4SGlObmRzMzBDNVJjUHFTMEpTL3JlREFBMGJ4dm5WQUE4eUcybkZJUlB2ejE5Rm9BL1hjRVRWMVNISDJ5OUc5VWxpM3RMMEw2YWh2b0M1OTFDcDkyQ3A5MEFKMlN1KzFpSWZDdS9yKzVmOXBFdDlxRXYvZEtMN1pLUDZyVWR6U0tNTDU5czhHNGRVRzRlLzF3aXQxd2w5ckJjakVMN3FFUDdtRUYycjRQMWJ6ejFieHY2K0NVNEovdklML1RUbjNFSndZcGR6ZFJkd2RhTHR0OXBwc1prTTZ5dE0vU0VRV0xyYVIzcTBMZ2txK0lISXVHbDJsZzFIbXAvbG9vV3NucnltQkdtRDNFU0NmcUtIOTFFblpNeXFCaFo1K1Fldmh0UzVlYTljZkY5SENhSkFYb1J4czBLay9OT3BvaEl0QzFGQmF0VTRWcFZVU1NnV2hsQk5LR2FHVUVrcUpXeWwySzRXalNzR29raitxNUkwcTJTTks1ckNTUHFUQWlaRTBLRVB0NjBDbmh3eW5COVFrSDdXQ3RlTHoxZndEcGR5Tk9jeTZWQnBTSUxxNVlVSTd2MmFmRm9MRk9RQzBpMFJseW9aMCt0VTZBVnA1YWxKZFVJWEhnOUQwbjhZdmNESVlEK1VCWlAzRUVBQVZ5Z04waHNCa25GVFFTVElnb05PalNYL1dCUmdaM2kxREtuMjJtcit6a0lVeCt1UjRWQlJPNXJ6cFRYaEI1QndBSlVnMGNVb0Myb2d1dkZ2cU1YVk4vNndQYUN4Wjg0Q0lvR0EzcjlWU1dzYVFzcXRMZ2hQNDNtS1lvZE13ZDBFN3hFL01MWHhiZmlvSk91ZGdKbUdIbVFUOWozb2VCcGZBelNSQ0lYalYweWQ0aWtiVkhaMFNsSU13QVZxVGhIYUw5eWE4NmRJdXVKelRNLzk4OU4wcmRYOEpDMlVLMUZXbWZpVVJpa0hMSGloSlljRDlvRVY4cUpTN01JMyt4cTJFVTI5ZWNEbG5OQUY2dENGNVJRYjlXcjBBRlRSajlsZitvUmxnWGkydFFzVUMwOTRyTXBubHNSUWFadzN6Zkx0Z0NnZ3U1d3dpaVRsUmFJWEVQVVhzMWs2cFBRRFBKd25OZ1BJWUd0UGVwL3k1UnJncWEvd2hHVk9mN1lMUk9iMGhJTlZka0VvL1U4VW5EOGltNzJvZHNnRVQ0VjdCa3pRZ3YrUVMvaStMV2VhWWp0b3VHSjNUVHp0b2k2Tmp5ZXR5bVA4MGlaV2t5dUhaaEVrQjdUZ2dhSEg5OG5NMS9JWjArb2lKMnM2dkZ3SkhNRHBub0xmQzZnVHFubUx1cXc2cGtkYXdkV1lGVE1zNk9jM2FoM1p5T1RlRldtREZlYzVBUC9rV1c4bHpVdWpIS2ppWXcvYUpIbHpabVJXeU50YkthWEF5Lzd5UVBTbWVtZy9hVGRrSUc3ek82U01zTk1UaGRuSkRCdjE4alpBMHFQU0wrTXFKYWNHcmFNSDVsZ2J4Mm16RysrU01xUmxoZzljNUFKelRyeEl2aXlXaDRIMjVUa2dkVW9ZRGNHdGR5TWF3NUVrWVVINWZ5YTlOcGhmRTZOcE5RYW9MYXVjQVBkWEJmR0tGazd3MmgzbTFuczhZa29mTXZYVTloRVB4akRXejJ1ZHQwby96MkJWT2ZSdWhLZEF1MkowRGpJWkFUeFFtcjgybS8xYkhKdzhxZllMSDNHV3dJUnVzNnNrWVZwNnQ0dGVsMGd0dHhpTTBBcnlUMEF4d0R0Q2RteHRESE90RXo5dDh5U1hBVkI5bVhwTEphLzVETWVETWJXUzBUOXFrbitheng4VlJxS2tqc1hQQWVLcURVeEFHMlNzeUdEZ3Z3N3NsRjZYU2dYaHVmNGlGVy9MQTBQRk1GYjgyaGRhMzE4RE9HVUJiNk9aQnRqdktUcTVQb3g0dVpUOXJFNHRHMVNGOERlWFFBb2FMT2twN3IxbThKcHRkWXF6Q05GcmJyd3ZNWXNZNFo2QnJCeWZpWWh0eFpoSjFSeUh6ejNyQjJxdTRLQTNNd3pjRGZNL3dqSTJJbnVoZStkNWlibVU4TmM4UURqczNDYlNGZm12blFpdHhZang1UlNielNCbi9RWXNFb3dOTXdRZ1p6eTIrVDRqYVdJNyt4RkdZU1N3TzlFNUNNODg1d0RnTDBSRGdYbW9uejBxaWI4MWpuNjBXUG0wVDQvcVZja0p0NTdSaEVkMHhpelBmUVFhMFV5MnQvcWRKdkM0bjhOZUhaNlJ6Z09FYzBnNFNIbHAyZW00S2ZXTXU4NXN5RGtiYnJSMVM0b0JTU3FndHJEWWdlQ2pGSTZqb1doUzZySWN0M0U5MDg5ck9MdW0rWXZSVkdHcll3TTBrWnFwekV4am1SYUdseFVjNXlETVNxZi9MWkRZWHNrOVg4YTgxaUorMlNXSGRzck5mVGg5QzY2WktDYVdLVkdvcHRIeXJsVVByQzZHaGV3V3RYL0FNaUo1QjBRUFpjVVJDNndsZ0tnZkRORURxVURxMHZ1YkZGK2I3QWprWTRGUUVyNkkxTlRDNlNScGFaYVBxUzIrbVB1Q0RKdzBxMEc1bko5UG9CaWZzM0g2WlNIaEFORnJnRHVhdGlpUFBTcVkyWkREWDViSjNGSEFQbEhKUFZQRFAxL0N2MUFsYkdvUzNtOFFQVzhVdjJ0SGlQRGl6OS9SSVVEN2IrdVRZZmptaFgwNGFrRk1HMFdLK3pHRWxXeWQzV01rZlVZR0NVVVNoRzFIMGZTa20xQkpDaFJ4Y1JxaFFCbFFTYWhXcHVpZ1ZocllHR2lWbU9CTjZlRzFRMU55eXhxcWVLYnNXeENwamNHRC9iQkEyWk5DQi9jcC94anZueTRSOGVudk5zNks5bmxiRVVpZkhVekRKUFQrTnVqU0R2aXFMdmo2SHVUV1B1YTJBdmF1UXZhOFlHZm5yTXU3UmN2Q1MrMTBsOTB3VjkxdzEvM3cxLzJjWC82S0xmOG5Gdit6aVg2a1YvZ2JVSVY2dG4rUWYzeDNvVkdqcjF4dUVmelVJYnpRS2J6WUtieldKN3pTamhkWWZ0WXFmdDB0ZnRrdmJPNldJSHNuV0R4TWpHZEl6Sk9aZVhvUHNHTkQ4QjFrVzB2L0hiUktVZEl2dDJMbURaQ0xub2QwNjBBWW82RitpMFNVOXlIK0xiY1FSZHJRbkNOVElVUDhkNzBUcDhLUUV0UDNDNmtUcXRFUnFUUklGMlhGdE1uVk9DblZlQ3JVdUZlM1ZjRUVxZFdFcXRUNk51UWhJUjF5c2M4bjNCYkl2Y0drR2Mxa0djM2ttc3pHVGdhazMxQU0vekdaK2xNUGNrTXZjbk12OEpKKzVFODZIRWhiT0JFalBVTnBIOXNnbGJuVkExQUkzSzlKdklkWjJkY3UzRjdETFlCcGhOR1lndEp0Vnp2bWhDK2UxOENBeC9zUkFmeEVvRXlleEl1WWVHcEI5QVJpOGZJRlRZcUdOV0dRbmxqcUl3eDFRSGhETG5TVDB5cW1KMVBrcDlIWFp6RU9sM0w4YVJTaE1teGd0Y0xkTVEvM3E2SmNmS0dGUGpBdmtQZXV6MlRsZ1FpQmZzU0lOak0yTERwS0p2eklWMytQeEhoNmtad04wMlBOajBGMnJ5Mk9SZkpBSVllamYwU1hWMFNvWG1IUUhVeGtvWktIR09DT0o4dDdhQlBnMTZhRXp5NTM3Zmt5WU9sMTQvZE1aMXhGcTAzVXAxTU5sM0s0dXFZVlJBekczVUxTeGdsSGxoUnIwcUNwdzNYc0FmbzF6NkdEbmdvdDl5Z2Zhb2QyUGlTVldZbDBLRGJPYytINFphanZWN05zSTRlWEtTUlhtU1plbE0xRDdZdWRDRzhPL0NIU24valZaekw4YUE3WGF2SVpTWVRaOXRiNE1FVHNYOG9CMmU1QUVxeE9vQjBxNFBkMVNyNm5QNHpPaWdVWTNtTnlZTTc3aUdsS3MzMkVjT3RpNW1ZUmUyeDJsUDZkcVM2TlFUWnI4ekNDSUZrYjd0Rlg4U1I1ekF2UTRkZzZESkloQ2sxbVlWejVaeWNFYzAvVHJKaDJjOW1XN2RHY0JjMkxnN2huR3pzMGtqS291R2kwTjJWekU2by8xTnZuNUxkMjh0cjFUdXFlSVBUbHczL1JqNTJZWStuaTMxRTdlbE10ODBTNjFzS3BzNnV5MVY5REN1dVZmbG5DbkpJdzdCNkw3SGNNaGdwMmJZWUFCa1dpejc2c3ltYmVieENwUzVVMGRYdnNFTGFKSGZyQ1VnNWtLZGc2amc1eHp6NDBoTnFUUi82Z1RDa2NWMnRRckp2MmlGdFVyUDFUR25XbzRGNEdkdytqT3pZa2hMa2lsWDNJSldjTUtZZW8zRWxBZ1J2ZktENWR4cHlWaTV6QUd1blB3ODl3VTZybHFQblZRSGpWMWM3NUo1NUwwWmYzWU9jeUVjMnVUcVdlcStDVDBiRFJUeDFaaGZHdzFuTVAxSEdiQ2c3T1RxZDlYOG9uOThyRFp6a1gyeUwrQ09RU01yZGc1RE1Md0lJWlltMEk5WGNVbm1wM25ZTjY2cDF0K0FGOHJ3VXd5N2h6VWMzK281bFBNcnVkNmVXMVhsM3hmTWZjRDdCekdpKzRjekZ2UFQ2UC83Qkl5eko2M2RuSGF0azVwYzFFZ1Z4eGk1MllZdW5Oelk0aUwwK2xYNm9TOFVjWGNYWUxhV2UyLzdkTHRoZXhLL0gwcnhndHlqcGh2SlRkbU1XODBpZVdreWZlcE56UGFSNjNpcmZuTWNkRGp5TG05RHVEUXdjN05NSFRuRnRuSmEzT1pqMXZGQmthVlRMMmZxWTdXM200U3I4dGxsdVA3NXpBSUVBNDgwRGRZaHVGdlo1ZlV3MnRtS3VjWnF5TFYxeHVFSzdPWXlXZUMrUjNEb1lPZG0wbm96czJKSms1T0lCOHFZK01IWk5MVVlnNzBMWEdyZjNFSkY2Y3hTd08zT3hOMmJpYWhTN0RZUmw2WUNwTld2dEN0S0tZT3JKSytJOWd6VmZ3NXlmUkNZL3NJN0Z4SW8xZHlJQUZVOTV2eTJFOWF4V2JXNVAyVWFXVXNjVkQ1VFJtL09vR2FQejZPK3gvR29ZT2RteGtZQmtTZ2ZURE9UYUdmcnVKZ1lEWDNVUm1RTUlkRVQxU3Z2TG1ZQTYzbkdNTEIrL29keWFHRG5RdGVvTDhOb084aHcrbVBHRDNPU2QxUndQNjNYV3lnTmNIVWdWWDFqTFZ6MnBjZDBpMzU3T1NENTdCem9ZVmhteUZjQlBwbG1RTTlEK2pWZWlGdkJOMnFhZTVLQ0RDNG1sTGZiaGJoTFE2ejZXOGFDT0dBb0hOdTRzekdHRVFUODZLSnhWWmlaVHgxVFRZRFU0ZUVBYmxQTUg5bEsweUJzMGVVbDF6QytXbjBISmhBaElwemhtMlJ2cHZUekFvaTlzTDNQMDM4RHZpb0JpeXdvdjNMVG9vbkwwcWpmMTdFUWljbERzamR2Q2Ficnh4NnFLdTFWMzZrWEw5YkUvb0NuUFB0R2hNSkt1Zm1XZ25JNm92c3hCSTdPYXV3VGJMVXJ1TWdEM2VRVURZZDZTQ1BpaVdYeFpMTDQ4aGo0OGdUNHFrVDQ5RitlR3VTcUhOVHFFdlM2UjlsTS9jVXN5KzRlS2kwQ3R6S0lOcW14TnNwNWtZTG8zM1dKdjIwZ0QwdVR0OThMaFNjZzN4K3BJTTRKWkc2SUkyK0xKTytRdWZ5V2NIR0RNUVZtY3lWT3NZT2h6QlFYbWRzY3BqSGJNcG5iaTlrN3lwaWYxSEMvYXFVZTd5Q2Y3b0s3Zks1cFVINHFGVU03NUV5aDVWR1ZpTUR0dU1oZUZ4R3FIK3ZFeTdQWUE1M0dLT05md2VaUnJBNHAyL0Zla29pV3JiNVJDWDNjaDF2N0lRS3JUQUxlRlVIYmV4YWp6WjJCWlBlYUJUKzNTUzgweXkrM3lwKzNDcCszaVpDR3R2WkpVWDB5TFplT1dGQXlSaFdpa1lWRjRXZU96QWtlVGdWYVJHNFFGZm1CcFJIeXZqVEUrbkRBbmMxMkNBb25OUExPS2hkTGt5ajRmemUxUzFCTVZ2c1JoU09LZ1V6bjBLM1VvUlFpOTNlRGF6TENiV0NSTHRYMTR6dlh0M01hcUJYRjYvQi9HQklSRnUyYzZwSG1aS0hoa0wyaFBmOXVsUGFsTThlSFJ2SUhUWU5nc1U1Zlowd3pOTC8zU1JDa29jNWxLVHZYUStJc3d2alE4RWt3QUQ2MndEU21LWURsazJGYUQ1Qkt4NDRKVjZ0Rnk3Sm9OR3orUU1xSEJCVXprR0pBK1ZMQ3h1QVdSbU8vVWN2V3JzdlFSMEp4YlF4NXZoM2tMa0VsWE0vekdMZWF4SHJhRlUyOVFvN2pnTUVETi9scEFJbDV0Vlp6TkdCdTMvSmw2Qnk3cW9zQnNwcUtISE0zWU1EeC80Q1dubEUwcXg5S01tdFRxQVdRRjlnNTNBRU5GZ1ZrcHo2WnFOd1ZSYTlkT0k1SklCZkI1a0xkaTZVbzVOREt3dTlPMy9wdllDZHd4SEFJR1V0WTBoNW9VYTRKSjA1UEhDN3BPOE5kaTQwUTFEUlhTUXdZN3N4bHpuV1NhTEg4QnNEcTEvWEJBTHNYQWlHb25tYUdHMTdsM1IvQ1hkcUlqVXZadnpaYUg3OUVpQ3djNkVXaWdkdEdoelZJLysyZ2o4dmxkWWZZYWc3NTljcGdRTTdGMUtoalkzMThKNjRmdm01YW41REJzeFY5VnRJRFB3NkpYQmc1MEluSk0zVHlXdU9maG5tRFZkazBnRjgwczJCd2M2RlNJamFXQXVyUnZkS3oxYnpHek9aWmJIajh3YnNISGJPOUlBQ3ppMTVLZ2gxVzZmMFpBVjNTVG85K1IwWHREemcxeDJCQmpzM3UwUFcwSVhmdENIbFAwM2lQY1hzdWxUcUNJZTN3YWZCTmdQczNLd01hRDlHOGNEOHRNU3Q3dXFTLytRU2JzcGxUa21nRnRxbUw3MU5nSjJiZlNHb3lMWml0eHJlSmIxYUw5eFR6RjJjVGg4WFI4NkhwcDRZVW4zYmY0b0pLdWV1em1JK2FFSDdXMmxUY24vczdBZzRQU1VOZlZ0UHlKNWVRYXVuMVp3UlpYZVhCRDM2UUFtM01aTmVGVStpOUFhTkRMYjV0ZnkwRUZUT1haUEZmTmdpTmpFbWI4TXgrMExUOTdPQjBYTlU4dlR3V2lPamxSQnE4cUM4dTF0NnUxbDRyb2JmWE1SZW1jbWNsa2dkNmREdk5aOVl4ZWpYOHROQ1VEbTNNWU41clY2QTA3UlAwTnl5QnhpV1pqVWlZa2huVUdkQVFQVHA5QXJnazZlTDk4QWtvSjNUV2xtdGlVVnB6RVdwNVNSYVpwRStKRHY3NWJCdTZkTTJjVXVqOEV3MWYyOHhlMDAydlRhRlBzNEpwZHY0OWQ1cEgwejlDQXJuQVAyeHBPZWtVTDh1NHo1b0ZhTjY1ZGgraEsxdk5tUHRSY1QweXRHOWNsUVBJcUpiMnRNdFFicmExU1h0NkpTMmRrcGZkVWovYlJjL2F4TS9haEhmYXhGaCt2bDZnL2hLSGY5OERmOVVKZmRRR1hkWEVYdHpIbnRsRm5OZUtnMnpoR1d4cEhmaEZzeE1qZlJtbU9mWDROTklzRGdYVGN5TEllQTRMczlrN2l4aUh5N2pIaTFIZ0lLekdQaVlCcURPcjBxNUIwdTUrMHZZWDVhd2tLN3VMbUx2S21SL1ZzRGVWc0QrSkorOUpZKzlNWWU5TnB1OUtwTzVMSU5abjBhdlRhWmg2RnlWUUVIWEhPNUFGZHRjdlJtOUJLRnFFd1NMY3pIRW5CaGlzWjA0Tm80OEpaRTZJNGs2TXhteEptazJBeC9UNEhRZ2tRS0hUazFFaS9naFhmMGdnVHBKWDlPL01vNkM3am5PU2E3UWwvc2Y1U0FQdDVPTGJHaFlnQmJ6Nm1Xa05DL0JONWo2RVR6T0dVQTdBbkRLaGhUR3AwWkVmd052cnRvbklKYUIzNzhEZTdWcWNCRmN6a0Y3b2JOV1AxLzk5cElKYWZSTU5pSFpCRE5GTWorQ0xjOU50aVBtd1BpMTJ3d2k2SnpEekhxd2M1aXBCanVIbVdxd2M1aXA1cUNkbzdCekdITXduSXVuWG1zUXZYcjVoSTl6c2FRbFpjd1N5L3YvUFFielhRSG5VaURQRWE4ZjJMa1ZEcmNsMllPZHc1Z0FqSlpKbmxYTzBTMzF2RmN2bjVoMGJxVjFBT25wNEN4V3ltSWwvVjhGZ3prWXdCendKNVlEN1ZZN0J0K3NwYjE2K2NTa2M2ZEZkVmlpUmkwMkJnRi81dmRhR016QllLTXNOdHBpcHkyUkkydXRuZS9XakhyMThvbEo1eTdhVXpkL1J6djZNMGgxOEdlK0w0VEJIQ1JnbTRPMVJMc1AyOUcyTWFyK2krcCtyMTQrTWVuY3JlRWx5NzUyellrYXRzUkpGanZqLzFvWXpNSGdZQ3h4NHB5SXdSVmYxOXdSV1JwUjFlSFZ5eWNtbmZ0dFpPN1oyOG9XUnZSYjRpV2tLaTdwTU44VmNBYk1pUk1YaGZlZXQ3WDBtWmk4dE9wbXIxNCtNZW5jTy9GNU40YVZIQlBXZ1pJYy9DVWFYckYybUlNR2hBTm5kSE5XN0c3OWNWalJSNG41cnBaMnIxNCtNZW1jczZEeXQ3YVNzM2JYelEvdjlRcUxaeEtZZzhjUUxvWmNzTHZuM04ydVp4d2x5U1ZWUThNalhyMThZdEs1dXRhT0Q5UExidzByV2JHdHpoSXhhSW1YMFdRQ3B6ck1RVUdpSzd0UWxZWDNINyt0OXJidzRpK3lLcHM3dWlSSjh1cmxFNVBPRVNTWlZsNzdKMnZ1SlR0S2w0UjN3NmlNWGdWZnE4TjhLMkFJZU9JVUxISEM0V0VkRzNlVy9OV2VtMU5WVDlQN3VEZ0hNZW1jcXFvZG5WMlJPYVdQeGhTdURhczlMS0lQWlVzbm1LZGZPc0htWWZiR3FPSDBLOEFXRzdWd1Q4KzZzSnFuYklYMi9QS2VubDdQZnBiTlR6b0hJUWhDUTJ2N2w1bGw5MFlVbkxhamVrRjRIN3B1Z2k2ZFFHR0lhenZNWG9BVjRBWVk0aFFYaHZldTJWNzVZRlRCOXV5eWxvNHVVZHpITjYxR2ZNTTVDSlpsS3hwYVBrMHB1aSt5Y08zdXVxWGgzWE1qaDFIbWhOb09RUEpCemdQL2NOb0xTWXhoMUpndUdFcFlxWGxSdzRlSGRhMExxMzB3c3ZETGpPS2E1alpJWGw2ZjloWCt6a0ZRRkZYWjJQcFZadm1qMFlVYmRwUWV2N054YmxndnVvQUNGU0lZRFcrRGg5cVFCUTJtREJwTWpRSFF4c3piM2IxeVI4UEduYVZQV2d1M1o1ZTdXdG9aaHZHYXRKL1loM01RSE1jMXRMUkg1NWE5YU0vYnRLZjA3TEM2NVdIdGg0WDNXdllNV3FMZDNuZUZJUnlxUFV3SUllZ1pod0VINWtRTXdtQzZmSGZiT2J0cmI5c0RrNFk4cU9HYTJ6c1BuT0dNMkxkekVEQWVkM1YzcDFmV2ZaeFo4WlNqNU9hdzRyVmJTNWQvN1pxN3RRWGRDZ0JIa0R5Rzd2SEVoQTdRNDlEdmtjUHp0N1VjdTlWMTNyYXlXOE9LbjNhVWZKWlprVlZWMzlQVHM4OHJJM3ZIZnAyRDBEU05KTW42MXZiNG9vcjNFd3VlaXM3N2FVVFpaVkVOWjF1N1RuRU1ybks2VDNBU0oraHIwREd6SFFyNkducDh0V053cmJWelkxVDk3UkdsVDhma2Y1aVVuMVJjMmRUZUNmVVkyT0wxNXR2aVFNNFpJY3Z5NE9CZ2RWTnJTblZ6V0dYNzU5VUQ3N3JjYjlZeFcrcjUxNEFHOUNod3pPeW5ub2NlLzNjZDgyN042QmZWL1h1cTJ0TnFtbDNOclVORFE0cWllRjA1dVBoMjUzRGdNRGV3Y3ppbU5zYkcvaCs5UDcrS2ZLTytSZ0FBQUFCSlJVNUVya0pnZ2c9PSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzEiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImNyZWRCbG9iIiwibWluUGluTGVuZ3RoIiwiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiNWVhZmY3NWFkZDQzNDUxZmFmOWY4N2M5ZWVhZTI5M2UiLCJvcHRpb25zIjp7InJrIjp0cnVlLCJjbGllbnRQaW4iOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJlcCI6ZmFsc2UsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6dHJ1ZSwiYWx3YXlzVXYiOmZhbHNlfSwibWF4TXNnU2l6ZSI6ODk2LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxLDJdLCJ0cmFuc3BvcnRzIjpbInVzYiIsIm5mYyJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XSwiZm9yY2VQSU5DaGFuZ2UiOmZhbHNlLCJtaW5QSU5MZW5ndGgiOjYsImZpcm13YXJlVmVyc2lvbiI6MSwibWF4Q3JlZEJsb2JMZW5ndGgiOjMyLCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6OCwidXZNb2RhbGl0eSI6MjA0OSwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjMwMH19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTAyLTI3IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiU3dpc3NiaXQgaVNoaWVsZCBLZXkgMiBGSVBTIEVudGVycHJpc2UiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI1MDIyNzAwMiIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTAyLTI3IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjF9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDMtMjUifSx7ImFhZ3VpZCI6ImI0MTUwOTRjLTQ5ZDMtNGM4Yi1iM2ZlLTdkMGFkMjhhNmJjNCIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiYjQxNTA5NGMtNDlkMy00YzhiLWIzZmUtN2QwYWQyOGE2YmM0IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlpUUGFzcyBTbWFydEF1dGgifSwiZGVzY3JpcHRpb24iOiJaVFBhc3MgU21hcnRBdXRoIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIxLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH0seyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNWakNDQWZ1Z0F3SUJBZ0lKQU5hU3JGZFVMcnZITUFvR0NDcUdTTTQ5QkFNQ01JR0ZNUXN3Q1FZRFZRUUdFd0pWVXpFUk1BOEdBMVVFQ0F3SVZtbHlaMmx1YVdFeEVEQU9CZ05WQkFjTUIwRnphR0oxY200eER6QU5CZ05WQkFvTUJscFVVR0Z6Y3pFaU1DQUdBMVVFQ3d3WlFYVjBhR1Z1ZEdsallYUnZjaUJCZEhSbGMzUmhkR2x2YmpFY01Cb0dBMVVFQXd3VFdsUlFZWE56SUVaSlJFOGdVbTl2ZENCRFFUQWdGdzB5TkRBNU1UQXhNVFF3TVRWYUdBOHlNRFUwTURrd016RXhOREF4TlZvd2dZVXhDekFKQmdOVkJBWVRBbFZUTVJFd0R3WURWUVFJREFoV2FYSm5hVzVwWVRFUU1BNEdBMVVFQnd3SFFYTm9ZblZ5YmpFUE1BMEdBMVVFQ2d3R1dsUlFZWE56TVNJd0lBWURWUVFMREJsQmRYUm9aVzUwYVdOaGRHOXlJRUYwZEdWemRHRjBhVzl1TVJ3d0dnWURWUVFEREJOYVZGQmhjM01nUmtsRVR5QlNiMjkwSUVOQk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRWNUZ3BDZHdKTWFmdEVNQ09WaDE1UEVXSmpVRGtPVkVzdmkrYkVJUkhESGdHNTVseXd4MlJERFZsNFRnbzdSRWNHZStaR01Wc2ZUZjBVWm9GUWRrV1dLTlFNRTR3SFFZRFZSME9CQllFRkpSdUdNV0hLWXN5WmVPYk5CYWk5V2NJZjBIQk1COEdBMVVkSXdRWU1CYUFGSlJ1R01XSEtZc3laZU9iTkJhaTlXY0lmMEhCTUF3R0ExVWRFd1FGTUFNQkFmOHdDZ1lJS29aSXpqMEVBd0lEU1FBd1JnSWhBT2xkNXQ4NmJjZVVrUGNsV25VbXB6OUlJTS9UQU1DR1hBbENlSkx2Y0JRTkFpRUE0NGRJK0FTZWQxL0hTZWRrK0xYbVFKVUw2aW9FSnJ2ZzVUS0N2R2Y1RThBPSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUJBQUFBQUgwQ0FZQUFBQ2pKbDhyQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUpOZEpSRUZVZU5yczNmOVJIRW1XQU9DY2pmMy84R0JLRmd4bndaUXNXR1RCRmhZSVdVRExBalFXd0ZxQTFnSjZMSUN4Z0Y0THhGa3dSNjJLRVNBQjNVMVgxY3ZNNzR2SW1MdUlPMUZkK2FQeXZjektTZ2tBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFNcjFrMXNBRkc3L3R1eTVEY1c1dWkwM2JrTzI5dFFmYTJpR3d2WnVodkVTY3hxK1dnMUZBbURFZ2J2VHpzall6NVZNUHRwQTEvTDJ0aXgzK085ZEJQdDlqUE1nN3llNC94bmFqc2x1L1BIbTlMYThjU3U0MXliYWU4OWNRYzQ0N2hLbnZ3Ly84MVh0Z1ZCUWQzMmdMNzhPZldIZmJkbTVtM3Q5NEc3K3NLemhoNCtkQUdpSHlUZUFCQUJUK2p4TWNqK2I0SVp6MXljUGI4dVoyMUdsUHBnNXVDMy9FTmpNYmpVOGMrL0dTenR6cHJjMzlJZGZoN0d4Y1V0bWRUWDBpWC9Ya2hBWUl3SHdwNklveWdabDE4SDZoWHRhZmJtOExVY21WZUhtQmRkdVIzVkIvOGxRNzhhbHVPVThmZDI5YXdmRytMcmhmbXQzY2N1WDlIWEhXcXU1U2dBb2lpSUJvT1JaTG9hVkZ1Ynh1RDkyYmtuUjlvWTZ2alQyWkJ2NFNKenVWalBjMXkvYVdIYmxlbGhNa0J5VEFGQVVSUUpBeWZSQkx2aWNmMDVnRjBDNWdmOUNrRk5VNHRRSzZPdkh2MU50cVpqazJDTG5STURmOUVjQUt0UU1rekdKZ09rY1AxRVA3bjk1Z2YvMVVOOVd5c29KWGk4a0FyWisxcHdQOTg1WVY4NDRkenlNYzFrbkFzWWNNR1NLRkVXeEEwREpZWVhMWVdUenpBZSttRUFWNFNCNXY3K1djcXJQcmhVa25tZ3IxZXdJeUNxNVl3Y0FBSHdOVUMrSENadUo3ZTRkdnpCUlBuS0xzdFdrcnl1YzU4bjc0clhvMHJmM29mbHhNdXpTL2FsRy93enJrMkxaTENSSUFBREFOMGZEeE0xdWdOMXAwOHM3ZTk0bmlaZWNBeDBIYTlZWjlKd01RWSsrK3pBUWxBeXI5MW1YUmVKSEFnQUFIbXFTMVp0ZE9sNXo0dXgrNXhub0NQNEVQZGZKMlFEN3czT2oweVNxRno0eEpnRUFBRTgveEwzcit2cmdZTjNBd0M2QVBEVEpnV1k4dERlMGlVV2x2NzhiZm4raktYRHYyUmQyTjZFRUFBQzhQTEVUbUc3bmVJUC9XN3NBNHR0UFhwSGgrZjUrV3Rsdmxpam1LVTBLbWl5VkFBQUFRYzhZMnJUNXRtQzdBT0k2U0pKaHZLd2J4c3NhMmtrZitFdGE4cHk3MTZWQ0pRRWtBQURnWlUzeXFjQnRKc2ZiVEpaTXFHTUdkZDczWjEzN3FmeGtVYmlnRHUxRkFnQUFkdXN1a3k4SVdpOWdiTGI4LzdVTElGNWRucm9OU0FJSS9pbWozVWdBQUlCSjdhNGR2K0wvMXk2QU9GckJQOFpMd1Q5bHRSOEpBQURZZkZKNzRqWThxWi9jTksvOE4rd0NpTkhPejkwR2R0Q09Ta2tpblFqK0tTRUpJQUVBQU5zRnVaSUFQM2E4ZzMvRExvQjUzWDNXVFJLR1hUZ29ZTHpzakVuc1VOOGZaanRUU0FJQUFMWnpsS3dHL1dpUzNPem8zN0lMWUQ0Ty9NTjQrWTFkWCt6YXJFbFdDUUFBMk42c1dmeUFqbmY0YisyWmRNOWlrVGIvZkNPVU9sNzI0NUNFR0dPMkxRa0FBTWpzQWU3TEFGOTFhWGVyLzJQK216eXREL3lQM1FaR0hpOXpjbW9NWXVReGQvSlhTeVFBQU9CMTlnVk4vM1djMmI5TC9zRVplWTZYaTB5dTlXQW9NS2JKZDhaSUFBREE2L1VaL0xiaTM5K2w4VmJKeHZ5MytlYllmV2JDdGhiOVZRQUpNYVkwYVZ1VEFBQ0FEQi9nQVNmME9mLzd0ZXVETVNlY1k3eDhPT1o0dFlzaXgyQUpBQURZalNibHM3VjFsN28wL3NyeEZIK2paZzViWkk2QXB3czhsa3VJTWJYSmtrNFNBQUN3TzdWOXVtN0trL3J0QWhoSC80NXo2ell3ZzVPZzQ2V3QvOHoxUEowazhTUUJBQUFaUHNDRE9KcHdBdDhsdXdER0NzTEFlUGxWbXlURW1NOGtaN0ZJQUFEQWJ0V3lDMkJ2K0sxVFQ0N1luUzVKcW1DOE5NYVFhbXFERWdBQXNQdkF1SVpkQUZPdS9ndFl4L0ZQdDRBQTQyV1VUKzMxWTB1clNwalp3ZGpQVmdrQUFOaTk5NFgvdnIwWmY2TVZ1dDNZRit3UXhMSHJnQWZQMTFFWEVTUUFBR0NjQjNoWDhPK2JZL1gvVG45ZkcwM3MxZDY3QlFUUjkrYzJ3Smg5b0NvSVl0VGRXUklBQUNEQTJuU2lQUGR2YzNDZFlBY0J6eTZOdnUwYU50Q01PVWIvZmVTTFg5MldqK293V3plMzVhcVEzM0l4ODkvdjcrTUhUV3J0ZTFXU2ZoejhsMnJkcVYvVDErM0wwU2RyKzhORGZGWFkvVDhLY08vdlBsMjMxQjJLRDNhV3czUGgvMVRieG42NU53NUYxdzN6cEp1Wi9uNHU1MkdzaHY3d2grWmQ5UHloOTQvYjhsbVZ3ZmIrbkxsY3FJTFpYS2o3b29PWTB3RDkrN2xTMm1HQS9hVHBTNUI3cTI5dDd6eDR2emxOZGlqc1VwOEFXTnlXNitEMTNzMDRya1crTDlkRC9UV2FjbFh6aHkrcUNTUUFrQURnNmNuYlNkQUgrR1ZoOTNvUjdQNjJtbitXejhUbkFuOUJ6cmk2UUVtOHgrVjh4bnNTTlFBODBtUkhUNDVGVGdSSWhJSUVBQklBUEtQZjFoZHhoYXVVOTBvanJmN3JYOXM3Q0Jyb1NPWk0yNWZQa3hYUE94SHZ4WGx5SnNHVTJxQ0pNZWZkZ0FRQUVnQ3NNYkc5VExhMWptR1JZcTZRQ0J3M0UyMjN6S1ZBWnpaSCt2Ti9SUXY4QkgzbUQ2WHVJZ1FKQUNRQXFPSWhmbHJJUFkyNmJWZ2Z5MnRNRlB6SDBnWHJ6NHVKZi85K2tqQW1kaEpnNTJPa3p3QUNVSnIrRk9tM0tjN3ArL3NGM05PVHdJRmFtK3dDMlBSK1JiQWErdW1OS3BuVjJXMzVGT2g2ZnFsNGZENGJDdVlQbzdaUkNRQUFTbjJJSDBvQTdFU1Q0cTlLSFd2eVdRWC92WGVDL3pENnorOHRLeDB2ZndueXU2OENQYlBNSDc2T1Q4V08yeElBQUpTcW45Q2VDYnlxQ0s3YlpCZkFPcG9nMS9GeENIaUk0N0RTTnJydi92TURWOE00RmNIT2sxUVNBQUNVTE1vRHZNbjAvdlhYM1dWeXJYWUI1TkVPKzlXMVQ2b2luRldxTTJFYUlRRndsaVRFSXZxVVl1eFMydm00TFFFQWdFbXRCRUFKUVhXYjdBSjRTWVR0enI4bFcvK2ppcEl3M1N2MGIwVy83engwTTR4WGMzTUdBQUJzRVhETTdlY003MXVUOGp1UjJpNkErTUhPbVdvSWEzVmJQcGNZOE16OGQ1NnpUTEVPbktPQzhVb0NBSURTOVZzcjUxNXhiREs4YnprRzAyM3lHYTNJQ1lBcndVNTQvOVlmM0cvK3Nrb3hYczlvSlFBQVlETkx0MkFqVGNhQnRGMEFUOXZYRDhtZ2puNTJ2d21rdUNTTkJBQUFOZmpETGFnbWlHNlNYUUQ2SWR0YUJlbkRVNGl3QThEaGYvRVZWMGNTQUFEVXdDc0FkUVhRZGdFSUx0bmVzcExmdWE4L2tNSDhRUUlBQUxZd2R3WS9wd1JBQ2NGemY3ODd6UjRJVEFLQVdmemRMUUFBQ2d5YyswVEdtU3FGbmV0WFJNZE1xdG9XVDI1V2FkeUV6azUzSVVnQUFGQ0RkdWEvdjh6a1BwMFdWT2ROK3ByTWtBU0F6YngxQytEQjgvdW5rbjZRVndBQXFNSC91QVV2YXRQOGlaSmRjeFlBOEpTNWR4cnNxd0lrQUFCZ3ZPQ1crb0xsSmprTFFEK0VINXY3Y0xjOVZZQUVBTDNGYmZremVEbFJUVUJHK2ttV2xaYVhBN05TZ3pPN0FMNVp6ZnozZjFZRjhOM1lDeElBbFE4QzBTY3EvWGFwRDZvS3lNaEJnR3Y0WFpBOG15YlpCUkFsQVhDZ0N1Q0JmN2dGU0FEVXE1K2duQWUveG42cmxJTmhnTnhZQVg1ZW04cGZoZElHWXRpVEJDQ1FaWUJyMEIrUUFLajRnWGllNHI4TDlDN04vNzRVd0NhNjlEWEJhcUpaZDNEY3Q0RWozU0hFVHBSL3FnWjRNRFpKQWlBQlVLSCtuZnJvNzZkK1NQbDh4Z3FndHhjb3VGMEZ2VWR0cXVjZDFPUGswSzBJU2Z5RDVMMW40b2d3dDMydkdwQUFxRXVYNHIrYitQbTJmRkpWUUdiNjVHb1RKT2lLbWdDb2FXdDhIL3pYdmd2Z1NydURCeUtNemEyeENlclJyL3BIUC9IL01wV3hZakwzZmJ6UTNHZHpvZTZyZEJSb0hJM2FCdG9NbmtHN0xsK1NYUUJSNm1KaG1NS3o0c0hZNUdzMVRNSU9nUG5zWlJBWTlLdFdoOGw3LzBCZXVoVHJjNlZSdndCUTR5cXNYUUN4ZGdGMGhpdjBoNy9HcHRNa1FRbEZtM3RWY3AxUzBvUFpDcUMrcHU3cmNCSndMRzBEM3FjMjFiZjZieGZBVjZmQjZxSTFiRkg1SExIRW5iZEFCaFBVeCtXa3NIc3VBU0FCb083THRqOU1uQ0lHbS9wRnZMS291SzkweVlJRFJCNFBMNVBYQWNDRGQ0YUJwelFTQUI3czZyNU1kOXNtbzQ2bjU1NURkZ0VFN0ROUis0cVZUK1p3RkhTTWNqQWdGR0IvNk5BbVJSSUFTQUR3K3ZGMGNWdXVrMWVwTmhYOW50a0ZNTDdMRkhjT3NwQUlZR0pOaXIwb2Q2Q0syS1dmM0lMSjNCMzZGMzFMejlzVTQ1dW9ZeVFBNXJRYzdpM3pKQURhR2YvKzZyYjhTelhzeFA4TVkraCtKZ0ZDZjREcW14VHJJTlUrSVhHcUtZV3RuNm4wSzR2UlgvVTdTMThQMEZ5bXVKL1JwQnpYS2Nablk1K2JTL1NmNWY1M29mTjBKQUNLMUc5dGk1N0IrM0JiUGhWNi95VUFKQUJnamdEbTBDUTN0SStwenAwQXpkQVdjdEtmMXU2clJFL2ZtLzhiN3MvVkVDeXUzSmFONUpBVXUrK3Vydm14M3grTkc4WVBaaGxVb20rRkxIMUZ5Q3NBZFNjQWJIZFduUDd2M1g5bkFUeDBydjZMTHhkRFVOdEovSzJWRk5ObXloL3ZMNGFrYjV1OGFzU0kyZ3c2UkEyZkhKRUFrQUJRbE5vUFUvWHV2N01BN2p0UTk5V1Y2MkhCeHp2bGttTEt0L2w1djFEcnF3dnNOSnVZdzZGL05UUjZDUUFKQUVXcCtmQy9UcDA4VzVwS3gwZEpvYnBYUXlVREhtcTFpK29UWkl0a3R3eXZkSmxCWTY5bDRKY0FrQUJRbENrbkVRSzl2RXF0QnlOS0RDbjNBeDlib28yVnlyZDVlNmM3c0tuVERCcjNTVVgxSVFFZ0FhQW9WdjlqQmR4MkFjeXZEL2krNkxQS283N1pWRHhua0JSVEhpZkhqaVRIS0dYd3FDMGdkYjhsQUJURnUvOXhBb3k5b05kVm95UDlWcEVJZU9CUy9TdnArMWRtRnFiVVBHVS9rMFpjV3laTEFrQUNRRkdjL0I5cnBUM3l0ZFhHdG1mbHVkMml0YzBaVy9XdXBLZDNCSFNtMXR3WGNVWGpSNlhHa3k0bEFDUUFGR1hzY2k2dzIzaVYzUzRBQVkrU3g4TFJVV1Y5d2hjQmxKZm05YjRjUURhQnhsR2xkU01Cb0Y4cVNtMDdxeUp1N1c0ZVhXT1h3VFVLZUJUbDIxeW1sdjdSSk9kaktDK1hoV2wyM1U0eWFLU25GZGVQQklBRWdLTFU5RVdWaUllN1BmVU1zZ3RBbTFIc0JvakkrUmpLdW1mLzJBMVFvWU5NR21mTkoxaEtBRWdBS0VwTlcvOFhBZTlUODhTMWRobGRxL21Nb253YjkvYk1JUlNsK2wzV1ZkclBJR1ArUldaS0FrQUNRRkZHT3hBbzJpUTQ0a3J1UzUrZHRRc2dEcThDS0p1TWY2WFBMNXRrWjR5eStWZHVLRmhmd1RsOEt1UkFWVWtBU0FBb1NqWEoxVVhBKy9UU2hLZ0xXTDlOeFhNYkFZK3lTZi91Q3U4VG5YcFdOaWkxNzdxV0pROVFGcXBKQWtBQ3dBTkpHYVZFblBSR0RON1dmUTdaQlJCSHEzOHJCWXlIdTNTcWpwVUNGZ2g0cFJ3T0JoRjBTZ0FnQWFEVU5kbGRCSndFcmJzU0VuR1ZyZVlKbkFQUUZFbXpoOG5WUzNXc1NBTElqSHN2VlFKQUFrQUNRS212bkFSdDZ6bXYvdCtKdGd1ZzlySGJxcWNpQ2ZCTms3d2VvMGdDVkNtWHpxK3hTUUFnQWFEVU5ibGRCSno0YkpxSTdnTFdlV3NNMWZjVlNZQkJEb2QvSzVJQTdGZ08yMzg2MVNRQmdNbXJVczNLZjBwbHJQNUg3Yk8xajkrMlBpdWxqWmVTQUlva0FHdkxZU3ZjcVdxU0FFQUNRS2t1c2JvSU9Oblo5alcwTm1EOXQ1SUFrZ0NLQlNsSkFPV1Z6OFhHdER3dlhRWU55MmNuSkFDUUFGQjIvOENPL2luVmtsYi9vL1piWTNnK0N5RktyRkx5cDZnbEFSU3htZzR1cXlRQllQSW9BYUFVOXFET1ljdmVJdUR6NkxVVG5EWmdlMmdOcC85MVlteFFOaHdQU3Q3NjNDUzdZeFF4UVhINlNjeDFrbUdWQU5EWkpRQ1UyZzZ4eWlGTDN3UzhkNHRDKzY1eC9Kc3VXZmxVZkpucWZxeGdkNHppakF6QlE1YVRMUWtBRTBkOVdMRmFsVmRDOVRUZy9kdlZSTDhOMkQ1YVErcGYrbFZkSzUvS3V1VmNZa3hSTE43bVlKRkI0eEZZU2dBZ0FhRFV0ZXAvcHdsNEQ0OEs3Ny9HOGp6blNrcVo0MFBVY2RtOFE1azZZYzZPSEdUUWNLNDFIQWtBSkFDVW5mVFBOc08ySFczMS8zcUUzOWdHYkMrdFlmVTcrOFphWmMyQXA2bWtUeHdsdXdFVU8yT3llNURsY09pZjcwbEtBQ0FCb0x3dVlPMHlYbVdxNVpOZmRnSGtvMHQ1bkp1azZEOVRjRGFBNGxXQWpEcHJEdSswZGFwS0FnQUpBR1hyL3BqN0E3ZUcxZjg3YmNBMjFCcGFuNTFITFpMVlQ4VWM5bjdDVmlKQThTcUFTZFdyMzFORkFnQUpBR1d6QjJ4LzZtNEpPNmVhQ2lmMDBmcnhwYUYxTFYyeUkwQVI4RHhPQkVpT0tiNEtFTWhSQmczRXBFTUNBQWtBWmYxVjZYNnlWZHIydXBwVy8rKzB5U3BtemxxQmo1Sjh3ZXJPM2pCKytJcUdjcjgwSGhYVDI1Y3hsUUNRQUpBQVVMSmVVYm9Zc3VoZHdRL1NwdUpBK0x6Q3hFZUpnYytCWklDUzZqb1E4S1V4L2NoY1JVa1Q3dkQrU2IvNzY0R1V3NG42YjIvTFVuVnRuUUNZMDNLb1ArWkpBTFF6L3YzVmJmbVhhaGl0WDZYS3hzWFRGR3ZsdVcvZmJ5YWNLRWNMdWc5dnk1bXV1TFg5WVh6K2RhaGZoeHZYNVd6b1EzeUxSOXFoSC93Ni9OZkNYMTBtaWZVa0FHSUVDT3Y0Y0ZzK3FTb0pBTExyMytvZUFmRHUxSndBcVNrcHNQZG8zUDQ1V1MxK0ttRE1QV255WnVoSFBGL0hqK3Y2VjdmbTJmRWpWNTl2eXp2Vk9MNlRaRXRJTFFrQXJ3RFVtd0JROTVTZ3huZi9mNVFFY1JZQWZCLzA5TzJ3ZjAwbXQxY3JGcXFQRVpJbTdkQzJjanhub1ZHRjQrb3lhQVNYeWZZZkNRQWtBRERCRi9oS2hNRDY4OXRjM2lsM3ZoVmphMUplbnlhMThEdnlaQ3A2US9pU3ZBOG5BWUFFQU1TYnpNOFo5RGFTSWJDV05wTkVnUDdEbE1teEhPSS9TYkVSOURjMWh5MGhCNnBLQWdBSkFFemlQWisrWXhjQXJPOGdlTkRqRTlkTUhRZEdmd1g4U0RYdDNubnlUcFFFZ0NCUUFrRGRvdzNuMnFhYlpCVVROZzE2SXM5LzdYaGxhbTNneEppazJJNGRaUkQ4Q3hna0FKQUFnTHNKU3JSblZCdmszdGdGQU9YTWcwOVVEVE1seHFMdUNtOVVUN2tUcVI5TklMejNJUUdBQkFCRWFMK1IyM09UN0FLQWJYUkI1Nzh3VnhMZ05Ia05vTmpLemVIMFIxdWdKQUNRQUlCZW02eit2eVRpTGdCSmZDUUJ6SUhKVDdUbmlkY0FkaUNIUS84NjFTUUJnQVFBQkdtN09iVGxKdUN6ZktIcElnbWc3NUNkaUs4RE5LcWxuSXlPYno1S0FDQUJBTTlwazlYL2RVVTd6ZGtubkRCSHR1Skp2a21BU0R2R08xV3luUzZENE4rQUp3R0FCQUJFYXJjNXRlT0lyL2d0TkdFeUNuaXVBL1VkeVRQbTFpWUx4Rm5iVC9IZisrK3ZyMUZWRWdCSUFFREF5VWYwMWY4N2kyUVhBSlF3NXJTcWd3Q2k3SXh4T09hR29tVTBEWFFTQUVnQVFBNXROc2MyYkJjQWxCSHc2RGQ0cG94OERzRGZDaC9JbXVEWCtPRzJMUFV4QUFadGlwY1kvcGpCZmJ1NUxiOEZ1NmIzeVM0QThoR2xuLytpS3ZCTWVjRFhNZGEwU1BGWC9zOVYwNlNzb05YTERnQnlFbTNuV2s3dDF5NEFlSjBJdXdCc2VjWXp4WE5rWTIzSzQ5QS9xd0lTQUVnQXdIMWR3T2RWYmlzUGkrUXNBTmpXZnBCK0E1SmlJeTRhbC9ZS1FKUGlyNnozVzBvT2gvOEN3SjNqWU5kemRsdXVNcnVIbjRJOVgvdmcvMGpUSmhOOWYxOEZ1STVXVlJCRWhOY0FkcDVFTGlrQnNEY0UvOUV6N1ljWlRxZ0FHRmVYNHAxYjh6SEQrK2dzQUhpZHoyNEIvQ1ZDVXF5VkFIamFTWXEvVmZHVGdSV0FINGk0K3IvSzlGN2FCUURiKzNlQWEyaFZBNEVzUy90QnBTUUF1cUZFYnp3ZjlDRUFmdkFNYTRKZDA4ZU03NmRkQUNEWWdWMzVJOEExN0hTT1VFSUNvRi8xUHcxK2phdmI4azcvQWVBSHJQN3ZYc1JkQU1lYU9wbndxaXJFNmc4U0FJOGVxRGw4VHU5ZGN1Z2ZBTi9ya3RYL01kd0UvQjFIQWVzYW51by9jL3BGRlNBQk1KN2NFd0RuR1R4TUhmb0h3Rk9zL28vblU4RGZZaGNBT2ZoOTVyL3ZkUmtpS1c0Uk4rY0VRSC9vWHh2OEdzK0dBZ0NQZGNucWYyMi9KMktkQTFDUnYyZDYzUWNwL29tNi9hci9vU1lHd0JPcy9rL3ptNDZEQmQzSE04NFBMbWIrN2Y5S0ZrYUlvN3N0LzV6NUd0NnFCaVFBWHBiRG9YLzlWaEdIL2dIdzNNU3pDWFpOSHd1OTF4K0R6UnU2NFpwV00venRkdWJmL3J1dVR5Qk44c2xCS3BUYkt3Qjd3ME04K3J0QjcxSjVxeWdBN081Wlp2Vy83dC9tTEFBaSs3bVMzeG5oaks1V2MwTUM0SG45ZS8vN3dhL3hRL0lOVlFDZUZ1MDArSWduNXUrYXN3QmkrRlgzejhMY2JYTTE0ZGdIMGZ0RDFRbUFvK0dCR2RsWitucnFNQUQ4U0wvNi96N1lOZjJXeXQrMWRwYnNBa2dCN29IVDNmTXc5MkxiZnlxNjE2M21KZ0VnQWZEMFFIUVMvQnI3YlVRZjlCRUFubkVVTEFqcVY4QnFTVnpiQlRCL0FtRGZFSkJGc0NOUk01MmYzWUx3MmdEWHNLd3RBZEFQUWhmQnI3R2ZRQjBtVzRrQWVQNTVGbkgxdjVabjExbXlDOEJrbWh6cVo2cCt1blMvV1VOeHJ5N2xrQUM0U1BFemtYM3dmNlYvQVBBTXEvL3pxMzBYUUlSVCtQOWhLQkRzQkVrQVJORDNmenRqNHVxZjJXMXAvU0Y2QWlDSFEvLzZ5Y1JuL1FPQUZ5WVJWdi9uZHhZd3VEaXByQTRPREFmcUoxQUM0TW85UjMrSW83c3Rmd1l2Ri9wRk5yU1ZlbDJvZXdKWUJIdCtmVW4xdnVkN0VIQSswVTcwMjl2S2ZpOTV6cjJuZEI3ZzkxNXJldWFRejVTZEo0bWo3Z0RJNGRDL1BodnpUcjhBNEFWVy8yUHBkKzB0ZzEzVFZHY0JyQ3I3dld3bXdqZzE5WXI4SHdGK2M1UHNBb2lvVFRHU2xUdi9La2JFQkVBL1VUcE5zVmNtYm9iZzM2Ri9BTHpFdS8veFJEc0xZS3FKNWlySTNDWEt4SnFIZFJMaHRkdXJ3di9lVTk1cmd1RkVTVlJXY2M1Y2hLMDRMNVZPbjhpT1Z3RHE1UlVBNXRRSC9sK0NQY01XcWlYRTJERFhXSEdSdkViSjk2NkR0SXVqaVg5M0k3N2dpWVJZbEhaUnZLTU1ndjlUZlVJQ3dFVEhKRi9kczZaRjh1Ni9DVjZzZCtNanRVbmJubzFUajhzY3V4Q3VqYzhFYlJPWEhzUXFBUWtBSkFESWg5Vi80MFBFOFNMU2ZFdkFNNy85WU8xaERxZkpRaVBmbkFScUQwVi9KYVlKT0VueWtKSUFFQVNhNEt0N1NwbEUzSjAwN1RrV054aWVjaGVBTHlweGw2UzhEdFFXem1lNkQxMndQdEZwbXJPSjlwV1lvbmRKWGFiNHEvLzcrb1FFZ0FtT0JJQzZaMDFOd09lWVNXWE1NV0tPTVNQYWVVdFdQYzIvNXh5aklvN1g0bzdwOWZjODJvSjBzVTVUL09EL1NKK1FBQkFFbXR5cmV6Sit0dm5POU5QYVZOOHVnQzdnYjVZRU1QOXVKRU1lN0R5V0JLZzcrRDh2OVdaSGZBQjVJRWtBQ0FJbEFOUTlyOUVrcS8vR2lkampSc1EyYXM0MWpiMFU4NHRiYzUrekZmRWdja21BZW9QL1lwL2JVVy8yNDhISSs1SVNBSUpBRTN0MXp5YXMvdWVuVGZYdEFvajYyZVZ6YzY5UkV6OVJYN3M5Q25CdmZINjhQbDNnZUxTNGNURGFvU05QWmQwYS9VSUNRQkFvQWFEdXlYd1NhZktZeDFneDlkalJCWjZEWGFkcERrT3N5VUdLdmZDMlp3eDRjWGVNeE5odVk5SElyNkVYdWYzL1BNWGYrdS9idEJJQWdrQ1RlblhQcHF6KzUycy8xVFVYaWZpWnloOTlBa3ZROC9xazVFWHdlbzRTN0hRcC91S2toTzV1NmpuNjJGZGNITHJJSVBoZjZCc1NBSUpBQ1FCMXp4WVRiYXYvRWpnNUpYQnlPSWo1eXpBdmt3allmRHpLb1g2bit2UmxLVW14dTNtRmhjcnRBdi9yRE9xM3VNVDlRUVkzL1Z6L2tBQVFCRW9BcUhzRWo1STRGU1J4SXY3ZWw3WkJDM3llRDJDN0ZIL0ZQL0k0dGNqczN2WFg2NkRBcC9YMzVpU1R3SCt5OHpCK212aWhHdjFRdlp2YmNqajhsL2tzUjBvQXpQMmIzcXJhMlJJQXJicG5nbWRjdElscy96dzdVelZiSlhLNlFOZXp1aTF2UnZ6M3p6TU5xdnV4OWZmYmNqWE0yMVpEcVNtdzJSdkdubCtHNTF5T2dXQzBjU3JpV0w3dU9OSDNpVCtHUGpIV2ZEcXk5dDUvZnhuNlE1UFpiN2daeHZzaVl0RzlGUGZVVVNWZUdZTWRBSFVuQU5ROVV3U05WdFhLU2ViVXRBdWdOZTlRakZPaHgzT2xucktZb29IL2JhS08xQ1hiVXdBb04yRHNnbDNUUjlXeXRWV0t0M1BpZU1SL2U1bnFXeW5FT0dYOEpKcCsxZjlUU1FrQUI3Y0FVS3JUWU5lelRMYitseFlBTkduY0pOTUhWYzdFVm9ISHFkVlVnUmpjODF1YWFPdi8zOXhyQU5oYW0rSjlyOXpxVlpuQnlaaTdBSzZTcEJIVGlwNTArcGljQ2NhMHo1ekprazRTQUFBUU15amJ4akxaenIzTEFDQ1NKbzIvQzBEQXcxVGoxT2ZnMTNpVEpGT1p6cVRqcndRQUFHeW5UVmIvUzdaS2RlMENFUEF3bGNOTXJyTmZrYjFTWFl4c21TWk9pRWtBQUVDOFlHemJTY1JTdGV4VWJic0FCRHhNMGFkV0dWM3ZvU3BqUkRkenRERUpBQURZWEp1cy90ZGdGZkMrbnFSeEQxYytURjRGWUJ4OWNtbVI0VFViV3huenViMlNBQUNBK0t6KzErTlRzSUM0RC82UEJEeGtacGFWemgxWkpEdGpHT2U1UGN2WEppUUFBR0F6YmJMNlgxdmc4bHV3YTNxZnh0MEYwRTlLUDZ0NmR1aEQ1a0gwdTJSbkRMdDlycnliNjQ5TEFBREFacXorMTZlMlhRQzlmclYycGVyWmdiT1UvMmNtVjhsNUFPek9yQWtsQ1FBQVdGK2JyUDdYcU1aZEFEZkpxaWV2MTYvNmZ5amt0L1M3WWo2cFVsNnBUeVF0NTd3QUNRQUFXTjlwd0FucFVyVk1vc1pkQUZmSnFpZmI2L3ZMMjFSV0VxbFBacHlwV3JaMEZxSDlTQUFBd0hxNjlQVXpiTkVtbzB3WHpOUzJDNkQzV1JJQXdmOTM0NjVEQWNsMkxKVUFBSUQxUkh2My95eDVSM3RxTmU0Q3VHdHJYalZoMCtEL3l1K0Qvd3ExbTBvQ0FBQmUxcVY0cS84Q3Nua20valh1QXVndGtxM1BDSTRsQWRnbStBKzFHMFlDQUFCZVp2V2ZPN1h1QXVnZEpvZWdJU2lXQkNEYjRGOENBQUJlMWlXci96eWM5RWU3LzhjVHR0RVB5WmtBQ0lZbEFYako1eFQwSEF3SkFBQjRPYmlLNUN4Wi9aL2JwNEIxY0R4eEc1UUU0TTVWNVVId1hSTGdURlBnM2hnWjlqT3FFZ0FBOExRdVdmMG5qM3FZdXEzMkU5ei9UV1dlOHM3Nmxza0srRjBTd0NzeTlNTHZrcElBQUlDbldmMG5wN3FZdXIzMlFkOGJ3VisxUHFWeVAvWDNtdUR2blh0U3BidWRJT0dUUUJJQUFQQmpYYkw2VDE3MU1VZWI3U2U5LzV1c2ZOWVc2THdiZ2wyKzkzbm9FeEpqOVZpbXI4blFaUTRYS3dFQUFOL3JUMVkvQ1Joc3JsUk5LR2ZKTG9BN2ZURDRWaHV0SnRENTdGWThhelVrQVNSdHkzWnpiK3pMWnRlSEJBQUFmTzhvVGZOdDlVMG1HVlpZWTdJTDRHRndhRGRBdVlIT1liTGxmMU9MWkRkQXFiSWQ3eVFBQU9DaFB2Qi9IK3lhZmpQcER1c3MyUVh3T0ZEOE1FeU1sNXBITVczOFRYTEsvYmF1aHY3d3dUaGVoUHZKc0ZXT1AwQUNBQUFlc3ZyUHB1d0MrSEhRODNhWUtLODBrU3d0aDhEMVVPQzZFLzA0L3NaNG5uWGcvekVWa0F5VEFBQ0FiNnorczQyelpCZkFjL2ZtalVSQWRvSC8yK1R6Zm1NRmtSK1NIUlc1QnY2TEVwN0hFZ0FBOEkzVmY3WVY3YnZQM1cxcEExM1AvVVNBb0RLbXMzdUIvOUx0R05WcTZBdHZodUJTa2pkbUhSVVYrRSt0djJsL0tzcWFaUXh6LzZZTHc4QnNMdFE5YStvRC95L0J4c09GYWpIZUZEcis3TitXMDRCOXJyWnlQWXd6amU0YkltbDNvVTNPWHM2SHVrQUNRSkVBRUFTYWtLdDd6NnBKeTVjVWF6Y0NMMnNEUGxQYlRBS2ZjOG1BU1lQK2t5RUpReng5TXFiZmpYYXByVTVXTG9kN0xoRW1BYUJJQUFnQ0pRRFVmU1dzL2xQS21KUDdHSFF3QktlQ245MG1FeStHQUVmUW4xOHlvRStRblE2SkcrMTVkMG13MCtIZVZwZG8vN3QrUlNXV00vOTk3enRDYk43OVoxZjZkMGJiUU5mVERtV1p5ZjM3UEpUNzE5OEhyYjhNd2RCK3NqUG1PYXVoOVBPT1A0Yi9tb1BrWFo5bjZkdUJnWGQ5NEhHZjRQa1k0T1pSZjFqVmZFTittdmpoWXpJRVRLMUw4MjdwV2lVbi9Vb0FiTzdxVVJDRTl2VGFDZkN5c0h2OE9CRlFXMkpnOVNpSXVVb09LYXZkL1ZocnI4TEV3UEtGL3gwQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBS2pXL3dzd0FNaXhOZHFSQ1VxZ0FBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsImNyZWRCbG9iIiwibWluUGluTGVuZ3RoIl0sImFhZ3VpZCI6ImI0MTUwOTRjNDlkMzRjOGJiM2ZlN2QwYWQyOGE2YmM0Iiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwiZXAiOmZhbHNlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOnRydWUsImFsd2F5c1V2IjpmYWxzZX0sIm1heE1zZ1NpemUiOjQwOTYsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6MTAsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4LCJ0cmFuc3BvcnRzIjpbIm5mYyIsInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XSwiZm9yY2VQSU5DaGFuZ2UiOmZhbHNlLCJtaW5QSU5MZW5ndGgiOjQsIm1heENyZWRCbG9iTGVuZ3RoIjozMiwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjEsInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjo1MDB9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wMS0xNiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyMSwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJaVFBhc3MgU21hcnRBdXRoIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNTAxMTYwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wMS0xNiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyMX1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wMy0wNiJ9LHsiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbImQwZmRlZjUyN2JiMmM3ZmY3YmIyZWM5MTBjYzgxMTM4OTRmMzk0ZDYiXSwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiZDBmZGVmNTI3YmIyYzdmZjdiYjJlYzkxMGNjODExMzg5NGYzOTRkNiJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiWXViaUtleSBCaW8gU2VyaWVzIC0gTXVsdGktcHJvdG9jb2wgRWRpdGlvbiAoRW50ZXJwcmlzZSBQcm9maWxlIn0sImRlc2NyaXB0aW9uIjoiWXViaUtleSBCaW8gU2VyaWVzIC0gTXVsdGktcHJvdG9jb2wgRWRpdGlvbiAoRW50ZXJwcmlzZSBQcm9maWxlKSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzYsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6Mn1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiLCJyZW1vdGVfaGFuZGxlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRFNEQ0NBakNnQXdJQkFnSVVVY21NWHpSSUZPZ0dUSzBUYjNnRXVaWVprQkl3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRRG01NTViV1k5V1crdE9ZMHJJV0hsZGgrYU5hbm9DWkNGaDdHazNZWnJRbVBVdzBoa1NHNnFZSFF0UCtmWnlTMzNWRXJ2ZytCUXFubXVtZ05oZnhGcmt3RVpFTGVpZEJjQzhDNEFnNG5xcWlQV3B6c3ZJMTdOY3hZbEluTE5MRmNaWS8rZ09pTjZaT1RpaE81L3ZCWk1iajlyaWFBY3FsaVltTkdKUGdUY01HYUVBeU16RU1OeTJubTZFcCtwalA1YUY2Z2kyMXQvVVFGc3VKMWoyUmoveW5NL1NkUnQrZWNhbDVPWW90eEhrRmJMOXZ2djJBMk92NUlUWkNsdzRiT1M5bnB5cFFpbU9aNVFBWXl0bVlhUXBXbC9wTVl6NnpTajhScWtWRE5FSkdxTmZUS0EyaXZMWXdYNmxTdHRNUGFwZzBKODRsOVgwdm9WTi9GcFM0VkNWQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJRZ0tGQWhHNlJhVytoVHk1MmR4ZVQ4YkM5Nkh6QWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQVlNemdMckpMSXIwT292UW5BWnJSSUd1YWJpSFNVS1NtYkxSV3BSa1dlQXRzQ2hERUhwWGNKL2JnRE5LWVdvSHFROHhSVWpCNEN5ZXBZZXZjM1lsckc4bzd6SHhwZlZjYW9MNVNldUprekh4S240YlRhU3A5K012d2FtbnA2NGtaTWlOYkZMa25mUDlrWUtvUkhrTVdoZVJKMVVzUDF6NFNjbWtDZUlMZnNNczZ2cW92cWpXQ2xGc0pwQmNzbHVZSFdGN2JCSjFuNFJ3ZytBVEVvcFk0SWdHdjZadndjK0E5citBVDJocXBvU2tZb0FsK0FOWXdnc2xPZjlzSmUwVitUQTlZWS9VbGFCbVBQVGQwLy9yOXd2Y2VQV1prUGpLb0FDL3pVTmhmRGJoNExWOEdIczNseVgyWG9tTC9MTmM4Sll6eUlhREVoR1F2ZW9QaGgvdHIxZz09IiwiTUlJRFBqQ0NBaWFnQXdJQkFnSVVYemVpRURKRU9UdDE0RjVuMG82WmYvYkJ3aVV3RFFZSktvWklodmNOQVFFTkJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNWjYvVHhNOHJJVCtFYW9Qdkc4MW9udE1Pby8ybVEyUkJ3SkhTMFFaY3hWYU5YdmwxMkxVaEJaNUxtaUJTY0laZDFSbngxb2Q1ODVoKy9kaEs3aEVtN0pBQUxrS0t0czFmTzUzS0dOTFp1ano1aDN3R25jcjRoeUtGMEc3NGIvVTNLOWhFNW1HTkQ2enFZY2hDUkFIZnJZTVlSREY0WUwwWDRENW5HZHh2cHBBeTZua0VtdFdtTW53TzNpMFRBdWNzcmJFNDg1SHZHTTRyMFZwZ1ZkSnB2Z1FqaVRKQ1RJcStEMzVod3RUOFFESXYrbkd2cGN5aTV3Y0lmQ2t6eUNpbUp1a2hZeTZLb3FOTUtRRWRwTmlTT3ZXeURNVE10MWJ3Q3ZFenB3OTF1K21zVXQ0cmowZWZuTzlzMFpPd2R3TVJEbkg0eGdVbDVaTHdyclBrZkMxLzBDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01COEdBMVVkSXdRWU1CYUFGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFNd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkRRVUFBNElCQVFDM0lXL3NnQjlwWjhhcEpOanh1R29YK0ZrSUxrczB3TU5yZFhML2NvVXZzcmh6c3ZsNm1lUE1yYkdKQnlKMVhucXVCNXNnY1JFTkZ4ZFFGbWEzbWlvOFVwZjFvd00xWnJlWHJKMG1BREcyQnBscWJKbnhpeVlhK1IxMXJlSUZUV2VJaE1OY1pLc0RackZBeVB1RmpDV1NRdkptTldlOW1GUllGZ05oWEpLa1hJYjVIMVhnRURsd2llZFlSTTdWb2xCTmxsZDZwUkZLbFg4dXN0Nk9UTU9lQURsMnhORjBtMUxUaFNkZXVYdkR5QzFnOStJTGZ6M1M2T0lZZ2MzaXJvUmNGRDM1NGc3cktmdTY3cUZBdzlnQzR5aTB4QlRQclk5NXJoNC9IcWFVWUNBL0w4bGRSazZIN1hrMzVEK1dWcG1xMlNoL3hUNUhpRnVoZjR3SmIwYksiLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVIzOG1xMjZTZjJzelZWMkJkRzZXRU43a3VXVXdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFSWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFOWTBXYjlvUG9Sb0tvUXlXUGFKcHoxMXZyV1RnNnpUdG1OajJWb0tSbnl2S0dScXB6YjgzdzVsNllBOTZVWWtZQkRRUDBpbE8yRFBlNndXcVZSNXpEZlJ6ZGNIOGJoK0w3ZEdHdmFlNmhSVFpoa0ZrQ3BYRHM0SGNja25yRGY4RkNsSjdIZTM5SmY0Mi9HMVFtMnp6OVdXbXJQWHRnaUsveDA1R2pzUWZHdURHMXpmNVFUVVVpZThsd3ltSzNUZmRPdk5lZUpBQVBlMnBuN0l0ZlJiK3JWck5XaUR6bFJuMnZObloyd1BvNHdIL1dKNmRoWFpHK3JNV1QrYTZCb2NnMVVmSXc2a2R1bkc0YlRwWnpzdmFjRll5UjBtcGYrRGVPbnBTV0FteXdKV0h2VGxmMllYeEZ5ZVhjVEFDZFFsY01OR0oyVmhaUTQ4eHRQNS9SQlAvOGtDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNoeTQyb2tpcWNUUzFpcWEvSFJXamtCbjRIL01COEdBMVVkSXdRWU1CYUFGT3EzUXBDZURIdGtldHRVZkFPNmZFNmYyS0ZoTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBbitSSElQYnRNRUROZFQxZzhIL1JpdEFrVWRMZ0F0MXRXR1dubGo5a25idjQvNEdsWDdDOXA0NWVmUE85L2FaTDZPVjFYUktCaTZLbXRCVzVLN251WUVuTXgvNUJxQlNiTFQ3cmhkdUM0OVRCZU1iOVBIZFhzVGxTVk5ZZWZyMWRHaWRyNGoweFZCUUxiMXJrbkRBYmRXRHpLZnZuYXlLTzhGcndlN0h4ODQzTUcvckorYzBYcnVVdmJmVlRDSExpSVdoTTdvTkRoTDh4b2I2eFVvOUtMS2NTTCtJdFlzTzMvOVdiOFE5R2pzcUw0RlhzRGNHMVNhWWg3S3BmdU1tT2l4cXpKWk8ybklpY1BZUmcxSTJTdWlVZllPNzB0bWRIY2JsK2tTUW1TWXQ3cnE0dmlJTGcyR3gzajlySVR1V1RqYmFVYVNTUXhnT21NU0h1eXpNQUMiLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVRuYmJHSVIyTkh2enFJS0ZBZVF3RzFYQmlzMHdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFRWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPc1hqM2swNEJhbjRUWWR0WktxRC9PUEp4eUR5YVBtQ0JVRlVpYVpJZ1R0ZVpuajNYMjVEaGdwWlpYc0M0RDB5ZEljcmxBNndOVUluT1JML0w5ekJiVEVJTUFWTUdvNmc3VUtBbWIyTUY2QUhibmhZSmQ5ZWlrdXBWTldTaEhOWU5jNEdCZE8xWU42QWZVcXZKaEhiZTNWNFNOTVBtQlJFS0pQVno3VGh3Z21nZ1RlOFdzMkswL3dzcXYyd1NFN3BiQ0JzVVpoSVg1MWJaTTNwcUR3SlBUbVJGRXZ0MC82dEc1ZU84RjNqMTRPWHFmRWhtam4xVnZ4S0RZUU9MWkF4Q3d3Z0MwUDRDZGZXdjN5OFBTUjhJMzU0aE8xWStHek5qdklxWDM4TktMeXd1SVlIRmVyT3hObHhFTUJ2RmhZQnVSdVlBa2tnVWFQcU42VUJoc0lMcnNDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNDb1JIaGl5Tm5iblhSV0lMNlpCWG9CWDlZVE1COEdBMVVkSXdRWU1CYUFGQ0FvVUNFYnBGcGI2RlBMblozRjVQeHNMM29mTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFDUUZhZkpJMS81V2c5Q0VFaW1FMVJQNTRSZ1F3VE5UT09Rc0xBQ1RlK3JJdGxGUXpDOVpEaHJWODI4eVg3anp5K0FBc3AzaXpLN1QxdGgyZGw3bSt0dTBzdzJQYS9vbGMwMm50NlB5SXczNDhnYUh6aEkxKzBLRTQ1cXh2RkRlTDJsTXhiUGZDWXZ5RUVhWXpqaVFFTFU1OTUxcFhHV3lLTWEvNGZMdE8rWktPWGhNdVZlcTRyWERQSTU0VzZKSE9pQWFpS2Rpdys1ZTNjMmt0L2pGSVF0TTZ2TVhnOUxORnpkakVUTnQyMFZYOVFldlJwRlpmdWNNRzl3Q2FRRG9GbFB6cFRNSktoUGV2L2ltSm1aWWhLZnIwbExjZW10cWpJeExBb3FaZE9ZZkhCZzYrdkFjZFBJL2lhdUdwVUF2N1grVUtObUR3aloyQmFINHNMd2hCMm0iLCJNSUlEU0RDQ0FqQ2dBd0lCQWdJVURxRVJ3KzRSbkdTZ2d4Z1Vld0pGRVBEUlozWXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFESTdYbkgrWnZEd01DUVU4TThaZVY1cXNjdWJsdlZZYWFSdDNZYmF4bjlnb2RMeDVzd0gwbFhyZGdqaDVoN0ZwVmdDZ1lZWDdFNGJsMXZielVMZW1yTVdUOE4zV01HVWU4UUFKYkJlaW9WN1cvRStoVFpQLzBTS0pWYTNld0tCbzZVTGVNbmZRWkRyVk9SQWs4d1RMcTJ2NUxsajV2TWo3SnRPb3RLYTlKN25IUzhrTG16WFhTYWowU3dFUGg1T0FaVVROVjR6czFidm9UQVFRV3JMNC9KOVF1S3Q2V0NGRTVuVU5pUlFjRWJWRjhtbHFLMmJ4Mno2b2tWbHR5RFZMQ3hZYnBVVEVMdlkxdXNSM0RUR1BVb0lDbE9tNGNycHduRFJMVkh2alllUEdCQi8vcEV5enhBL2djU2N4andhSDFaVXc5Ym5TYkh5dXJLcWJUYTFLdmpBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlRxdDBLUW5neDdaSHJiVkh3RHVueE9uOWloWVRBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBcVFhQ1dNeFRHcVZWWDdTazdra0ptVXVlVFNZS3VVNitLQkJTZ3dJUm5sdzlLN0hlMUlweFowaGR3cFBOaWtLam1jeUZnRlB6aEltd0hKZ3h4dVQ5MFB3M3ZZT2RjSkpOa3REZzM1UFhPZnpTbjE1Y0ZBeDFSTzBtUFRtSWI4ZFhpRVdPcHpvWHZkd1hETTQxWmFDRFlNVDd3NElRdE15dkU3eFVCWnEyYmp0QW5xL05EVUE3YmU0SDhIM2lwQysvK05LbFVyY1VoK2o0OEs2N1dJMHUxbTZGZVF1ZUJBN24wNmo4MjVycURxc2FMczlUYjdLQUhBdzhQbXJXYU5QRzJraktlcnhQRWZlY2l2bEZhd3AyUldadnhyVnRuM1RWMlNCeHlDSkNrWHNORDA1ZENFclZIU0pJcytCZHRUVk5ZOUF3dHlQbW55YjB2NG1TVHp2V2R3PT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZkNBWUFBQUNHVnMrTUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFIWVlBQUIyR0FWMmlFNEVBQUFiTlNVUkJWRmhIcFZkN1ROVjFGRC8zZDU5d2VRU0lnUzlBUUFYY0ZMQVFaaTlmcGVWejF0WS9XVFpyNVd4cGM3VzVrbkxhNWpJM1o4NXNyUzJuTTJzanRXd1pTN0lVSDRINHhDbkVReDREQVpGNzRWN3VzODg1djkvbEluQnZWSi9CNFB2OW51LzVudS81bnZNNTU2ZnpBL1F2MEhiL0lyWDNWRktQbzQ1Y25tNGluVUlXWXdMRlJtWlFVdXdqRkcvTjFpUkhoMUVaME5SVlJ1ZHF0MUJkKzJuU0t5Uy9PaHlzMCtsazNlLzNrUTlxdkQ0WlV0YTRWVlNVdVkwZWlweWlUaEFmb2NvT1JWZ0R1dXczcUtSaUFkM3JiY0V0alRqWUlvZjZXYUhzQ216VlBXQ014K2NnaDh0THFXTUthTVdzVWpMcW8yUnRKSVEwb096bWVycFF1NGVzWmdzT05rR3hIN2Qwa2R2VFQxN3M0T01VN1ZJOFpoamdHYU0rQXE5aUVOdThQaWYxdWR6MDdNd3ZLV2Y4R2xWb0NFWTA0UEM1V2RUYVhZRmJSOHZOdkw1KzNLZ2ZiNXhOTXlhOVJhbUppeW5hTWxHVFZ0RmxyNmJhOXUrcHFuRVg0dU11UlJnalNZRWhyTjd1dEZGZTZscWFsN05ma3c1aW1BR0h5blBwYms4Vm1ZMHhzdG5wdGxGQ1ZDWXR6VHVCTjgzUXBNTGpUdGV2ZFB6U1VuSjdlOG1ranhaMzlmWGJLRGZsZFpxYnZVK1RVZ0duQlZGNmZRMmlQSGc0VzE2VVdVd3Z6YmsxNnNNWkUrUG4wcHZ6N0pTZXVBeWVzOGxjcENtYUt1by9wK3FXcjJVY3dJQUhXcnZQMFlFemhYQXRMQWJzc0hocDdpR2FtdnlpalA4cnlxclhVV1g5WG9vd3h5QXVmTkJycDQzUE9CRlhabGtmOE1EUmlxY3B5b3dBd3B1ejJ4K2ZXdnovRHRkZTlzbXN6eWd0Y1I2QzF3YmR6Qmw2T2xxNVdOWVk0b0dhdGhKTXJrVEV4MGpBUlNIQVZzKzVyWWtRTlhiK1FnZlBMc1E2Z1h5SW5zcmVRZm1wbTdSVkZZZkw4Nm4xZmlVT2tZdlNoa1VQeHZidWt6b3k2SzFpaE0xaG8zWHpXNkV2U2ZYQStkcGlXR2FXZCtkb1h6THptR3dLWUZMQ0FzUkFsUEJBaE1sQ0ZYVTd0QlVWUHI4SGdWY0pIV3ErRjAwcGxyK0RNVGRyUDR6dnhZMTFrTk1oeFQrU2VUR2crZDRWNUxRSml0eVVHSk5COFZGWnNqZ1lCWk0vSUkvWENUa2owcXlET3BGMkFWUTE3Q0lqVXAvRG5UMVVrTDVGNWdkaitzUzF3ZzFnRTNnaWdtNjBmQ1h6U25QWGJ5QVBiSVh2K0lEcEUxNlRoYUhJUzlza3lobG1NRTVGM2NmcUFLaHEyQzBFNVBIMWdZYVhhTFBEa1pHMEhESk9uS1dIcDUxSTB6NVNPdXg4ZTFXQXVaemRIUXJUa3A4VG1qWG9JK2xhMHdHWnN6dWJxYk8zaWZRNkEvVzd2VlNZc1YzbVIwSkt3a0tjNFdIaUJrbVI4STNDQ2dJODdvT0w0cXpUNVArUlVKQmVqRU9nQVBLOGhZUHphdE0rZUlUcDJJTzl5VFFtZXJvbVBSeHgxcXhBY3NpbGUvdWJTZUViY1dRR1lFQ2doY0xZMkh5S2pvZ2pIMjVoTXBqcFV2MU91Z2xpNGVoMmVSdzBPMzJiSmpreXVDZ056ZzB2emxZTVNpU3MwdW9vNE1HN2hNT2pDRWFYMXlGRTBuU3ZqQnp1VG5FcEs4Nlo4SW9xRkFJdWJ3OGtnOUFyRWFSRVdTWkkrakg0WGJwNmc5RTlFbkpUM29hUnpETitNVUpCUURIbjU2YThvVW1FQnVzT3hCcy9ONSt0SkViUGtBRkRqOFVHdk9zL0lXdmNTZ2xHQmh2UzcvRlRZZnBXR1lkRFk4ZlBBeFdTQTM1c1RDNHA0K0xtNEFhcUlvUGVRdGZ1Zks2SmgwWmh4bGJzVVhPU21YTmlmRDVaVEFreURvZmJiY2NseG5BOFdOQXF4Q2JSTnlraFh4UXBhRHc2N2ZYVVlic2lHMEtodHYyb2VJdmg4cmhRTVlPY0VBcVhHL2VJK3puZ09jNXl4cjhxODJJQU0xYy9GTEZPcGxxdTVlRlFYck1aekdjVkNqWWJMV0c1STRCVDFldVJybGJ4dE5PdE1pdERERWhMWElJeW5BQXZ1T0VXRTNYM05kQWZ0OTRWZ2FHNDJYSVF0MFpYNlBlQ0UvcVFGZTlySzZIeDdZVTUwS3ZIN2ZXNGZTK3E3S0tCSnhzZ2dCWDVwU0FHaDFqSXJWaDV6UTZ3M1JmYWFoQlhtL2FDYkNaVGpDVUZVVHlXWnFXOXA2Mk1qSlBYVnFPclBnTU80TnY3NEdrZitvd2Z0TlZCRFFuakZKcUhTdzE3cFh2aFdXNUtacWUvUTQ5Ti9VU1RDQVZXb1FYRklIQkhYWGUzRlByVURzdUdEbXRGL2hIS1RIcGVreGhpQU9QSStTSnE2UzZIRjRJOVlXemtCSlRvNDZpVU16V3A4UGlyL1JpZHVMeEtZc1Nrc1Y4dkxsT1F2aEdYMllsUjBPQmhCakMrdS9nRWN2WTBBcEs3WWs0MU54alBTUW5XRkhURjY2VXJqZ2V2QjhDdTVhK2wydllTUlB0dVZEbzczaGhkTVNIblVYN3RUanNWWkd4QWwvV3B0aU9JRVExZ25MMjltWDYvdFIxdG1sa1lqOFc0WCtDU2pXY1VER1kxTnBTL0M3aFNLcWlNTE0vbDJRbVNXWjczRGR6K2dpbzhCQ0VOWVBRNDZxbmt6d1hVYnF2Qmt4alVRc1dmWkZnYnVvM3JBZit3TjdqT085MCt5bng0UGkzTCswbllMMVNjaERVZ0FQNGdQVi83SWQxcSsxSFNobXVHa0lxV1JQZ3l4TUZxUDhIZmpUbmpYd1k1YlFmYkpjdDZPSXpLZ01Ib3RGL0hlMWVnc2F4SFNxRzZ3ZmRtUTV4OE55VEZGcUJjcDJpU293SFIzeWs1KzM2aEY3dlhBQUFBQUVsRlRrU3VRbUNDIn0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDItMDEiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2LCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ill1YmlLZXkgQmlvIFNlcmllcyAtIE11bHRpLXByb3RvY29sIEVkaXRpb24gKEVudGVycHJpc2UgUHJvZmlsZSkiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlUyRjEwMDAyMDI1MDIwMTAwNCIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTAyLTAxIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3Nn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wMi0wNiJ9LHsiYWFndWlkIjoiNjkyZGI1NDktN2FlNS00NGQ1LWExZTUtZGQyMGE0OTNiNzIzIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI2OTJkYjU0OS03YWU1LTQ0ZDUtYTFlNS1kZDIwYTQ5M2I3MjMiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiSElEIENyZXNjZW5kbyBLZXkifSwiZGVzY3JpcHRpb24iOiJISUQgQ3Jlc2NlbmRvIEtleSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxMCwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURDRENDQXErZ0F3SUJBZ0lRUUFGcVVOVEhaOGtCTjh1L2JDayt4REFLQmdncWhrak9QUVFEQWpCck1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDaE1LU0VsRUlFZHNiMkpoYkRFaU1DQUdBMVVFQ3hNWlFYVjBhR1Z1ZEdsallYUnZjaUJCZEhSbGMzUmhkR2x2YmpFak1DRUdBMVVFQXhNYVJrbEVUeUJCZEhSbGMzUmhkR2x2YmlCU2IyOTBJRU5CSURFd0hoY05NVGt3TkRJME1Ua3pNVEl6V2hjTk5EUXdOREkzTVRrek1USXpXakJtTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNoTUtTRWxFSUVkc2IySmhiREVpTUNBR0ExVUVDeE1aUVhWMGFHVnVkR2xqWVhSdmNpQkJkSFJsYzNSaGRHbHZiakVlTUJ3R0ExVUVBeE1WUmtsRVR5QkJkSFJsYzNSaGRHbHZiaUJEUVNBeU1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRTRuSzljdHprNkdFR0ZOUUJjcm5CQm1XVStkQ251SFFBQVJyQjJFeWM4TWJzbGprU0ZoWnRmei9SdzZTdVZJRGs1VmFrRHpyS0JBT0o5djBSdmcvNDA2T0NBVGd3Z2dFME1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01JR0VCZ2dyQmdFRkJRY0JBUVI0TUhZd0xnWUlLd1lCQlFVSE1BR0dJbWgwZEhBNkx5OW9hV1F1Wm1sa2J5NXZZM053TG1sa1pXNTBjblZ6ZEM1amIyMHdSQVlJS3dZQkJRVUhNQUtHT0doMGRIQTZMeTkyWVd4cFpHRjBhVzl1TG1sa1pXNTBjblZ6ZEM1amIyMHZjbTl2ZEhNdlNFbEVSa2xFVDFKdmIzUmpZVEV1Y0Rkak1COEdBMVVkSXdRWU1CYUFGQjJtM2l3V1NZSHZXVEhiSmlIQXlLRHArQ1NqTUVjR0ExVWRId1JBTUQ0d1BLQTZvRGlHTm1oMGRIQTZMeTkyWVd4cFpHRjBhVzl1TG1sa1pXNTBjblZ6ZEM1amIyMHZZM0pzTDBoSlJFWkpSRTlTYjI5MFkyRXhMbU55YkRBZEJnTlZIUTRFRmdRVURMQ2J1THNsY2Nsck9aSXo1N0Z1MGltU01ROHdDZ1lJS29aSXpqMEVBd0lEUndBd1JBSWdEQ1c1SXJiakVJL3kzNWxQang5YSsvc0Y0bFBTb1pkQkhnRmdUV0MrOFZJQ0lFcXMyU1B6VUhnSFZoNjVBamwxb0lVbWhoMEMybHlSL1pkazdPM3UxVElLIl0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQVZNQUFBQ3NDQVlBQUFERytFOE1BQUFBSUdOSVVrMEFBSG9sQUFDQWd3QUErZjhBQUlEcEFBQjFNQUFBNm1BQUFEcVlBQUFYYjVKZnhVWUFBQUFKY0VoWmN3QUFEMkFBQUE5Z0FYcDRSWTBBQUF5Z1NVUkJWSGhlN1oxL2JKVGxIY0J2amhqTmNDNE8rZFhlWFZ0VVRNemlQN29ZWFpZNTFJa0tkMWZObkZIajVvaEJtQTdqMk1Sc1pvbG14aGhOSm9ydDI0S2dzaUZzaW03VEFkTVlSRlFFRlRjVnh3L3J3QUVGUkNoUSt1dWVQYy8xcVFQM1ROcyszM3ZldSt2bmszelM0MmdmbnZlOXQ1OCs3NzNYSXdFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBVUVwa0c2L1hQcG5JUlI4Z0loNXQ0MXI5Y1lhdEJmd1A5UTNuNngyMFRadFAxRGNwUk1UUE5kZVUxNHV1VnQyTXEyMUZCa3h0TWptckxwVnEwUjgzMTFaWDMycnZMbU1LUDIzMGpxbVAzRHNORWZIenpFVzdFeGZPR1dtTDhvV2trOGtmMXFYU1BYWFZxYVhKVWFQT3FLbXFPck11bWZwcmJUTFZuVXFsTHJlZlZrWk1tUDExL1pPbHc3bHpFQkVIb2ptcnpVWlRiVjMrTDNWangwNHdJUjA5ZXZUSjQxS3BLZG9iakNOSGpodzFkdXpZNUxoMGpkS3IxTFB0cDVjQkpxU3NSaEZSMHQ2Z3pyU1ZjWEdNRHFtcVNTWXordll3RTg2YXF0UzF0ZFhwNjgzdHVqRmpValZqazVQMUtyVzk5OVBMZ1Z6VTVkd1ppSWcrbXFCZU9xZk9sdVlvMHVuMGNUcW1YZmFQdzh3SzFkNU82RlA4dDJyVDZWdjB6Uytic1BiZVcrcmtvbytjT3dFUlVjSmNkTURXNWlpcXE2dVBINWVxNlZ0MUZsYW1PcUk3NjFJMTIwOUoxL1JGOWt2bEVkUDZobTg3Tng0UlVkSnN3ejIyT3A5aVlxcFhvNTMyajJabG1qL3BwSk8rcWo5MnA4ZU1PZDNlZjB4NXhEVFh0TSs1NFlpSWt1YWlEbHVkSStrOWhVOG5qdE8zQ3pFMWQ0NFlNV0tNdm4zUTNCNCtldmpKK25iZktyV0U0WFdraUJqS3k1dlBzdVg1bExwVWFtWnRNcjNmM0s2dFRyNVR1Rk5UbDB3K1dwTkszYXovcnFPMk9qM04zbDJpVEk2bU9qY1lFYkVZNXBxZXRmVTVpcnJxMURPMXlkU0JjVldwRyt4ZGlicXE1QXl6T3RYM0w3UjNsVEQxMFhMbkJpTWlGc05jVStIVTNVVnlWUElNSGRXVnA5WFdxVk5yYXZQNjl2S3FFVlduMnI4dWNlcWovYzROUmtRc2hybW9qRjR2T2hDSUtTS0cxSDBScWdJZ3BvZ1lVbUtLaUNnZ01VVkVGSkNZSWlJS1NFd1JFUVVrcG9pSUFoSlRSRVFCaVNraW9vREVGQkZSUUdLS2lDZ2dNVVZFRkpDWUlpSUtTRXdSRVFVa3BvaUlBaEpUUVM5N1dDVXVlRUFsTHB3ZFZ2TnY1aUwzbkFicjl4NTAvMXZGOWlLdGF6NERNYTdId0R6K3J2bjB4NngrL09LWWR6RTAyM0dSUG43TU1YU3AzaWVURzkzYlhHa1NVemx2bnZ1eWlvdmpycHpubk5PZzFBZi91czI3N01oaDJmbkpvZDV2UU5lOCtxUCtKbzZMYWRFcTk1ejY0ZGV1WFdCSHFRdzZ1M3RVVzN1bjJyeGpuMXE5WWFkYXNucXp1cW41WlhYeU5RdFU0dUtIVkNKVGdZRWxwbkthYjZhNHFKU1lmclRuUU5uRzlJYUhYM0xQcVIrZXFDTXpWTml6LzdCYThkWldkZVY5ejZ2RUJMMktyWlN3RWxNNWlhay94SFJvMGRuVm81NWQ5NkVhZitNaXY2ZEpTa0ZpS2ljeDlZZVlEbDNlYnRtanpwdTExTy94ajFOaUtpY3g5WWVZd2h0YmRxbFRwdXFWcXJrbzU5aFhKU3N4bFpPWStrTk13elByc1RYcXpzVnZxTHVXdktFeWR5OVR1WHVXcTE4dWZMMXczNzFMMTZzVjY3Y1ZMaWFGcENlZlY0KysrRStWdUdDMmMzK1ZwTVJVVG1McUR6RU5UMkxDYi9VcXNGRWxNZzMvblpPNUtGUzRUenRKUHg2WHpsRlZVeGFxS1hOV3FvL2JEdHV2TEQ2NzI5clZOMzY2eElUcXFQMVZraEpUT1ltcFA4UTBQSVhYaGpybTVGUkg3WmpKRGVxTzM2KzFYMTE4dW50NjFDMlByTmJINVJHeEwwV0pxWnpFMUI5aUdwNEJ4YlJQSGJaSmR5K3pJNFJoL2d2dkYxYkl6dm1VZ3NSVVRtTHFEekVOejZCaWFzdzBxaC9yMC82UVBQbnFCMzdIUnpFbHBuSVNVMytJYVhnR0hWTmpObEovLzNDUEhTa01UNy9XVXBwQkphWnlFbE4vaUdsNHZHS3FIZitUeFhha2NQenhGYjFDTGJYblVJbXBuTVRVSDJJYUh0K1ltcWk5dDIydkhTMGNQMXZ3cW5zK2NVbE01U1NtL2hEVDhIakhOQmVwODI1LzJvNFdqbncrcjhaUFgreWVVeHdTVXptSnFUL0VORHplTWRWKzVhcEg3R2hoMlhld1EyVCtJaEpUT1ltcFA4UTBQQ0l4bW1STzlUK3hJNGJsbVRVdGhkV3hjMTRoSmFaeUVsTi9pR2w0UkdLYWpkUXQ4MTZ4STRabitGV0N4LzlnSmFaeUVsTi9pR2w0cEU2VHo1eXh4STRZbnZjLzJ0djc2NitPZVFXVG1NcEpUUDBocHVHUml1bm82eCszSThiRGlPc2VkYzRybU1SVVRtTHFEekVOajFSTWgxM1JiRWVNQjNQTXh2cmNLVEdWazVqNlEwekRJeFZUY3hHcXE3dmJqaHFlcnU0ZXVXMFpqTVJVVG1McUR6RU5qMWlBOUhHemRsT3JIVFVlYnAwZjR3djVpYW1jeE5RZllob2VzWmhtR3RYQ2xSdnRxUEd3YmJjK2Z1SjZoMzVpS2ljeDlZZVloa2NzcGpwaXR6MjJ4bzRhRCswZFhTb3hNYWEzNlNPbWNoSlRmNGhwZUNSakd1ZHJUZnVJN2FvK01aVXp6cGgrNTFkL1V1Zk9lbHJFYi83OEtiVWhoamV1TUJEVDhJakZOS2JmMGY4c3R6Mit4ajIvWWt0TTVZd3pwcFVDTVEyUFdFeTE1OXkyMUk0YUg2dmUzZTZjVzlFbHBuSVNVMytJYVhncUxhWmI0N29JUlV6bEpLYitFTlB3VkZwTXQrODkyUHUvcWpybVYxU0pxWnpFMUI5aUdwNUtpK211ZmUwcWxuZmhKNlp5RWxOL2lHbDRLaTJtaGZjNHZjempHQnFzeEZST1l1b1BNUTFQeFozbWY4eHB2aXpFdEN3aHB1R3B0Smp1Mkh1SW1JcENUTXNTWWhxZVNvdnBCenYzbTdBNTUxZFVpYW1jY2NiVXZNSEU2MEt1MmJoVEhXanZzaU9IaFppR3A5Sml1bVQxWnVmY2lpNHhsVFBPbUI1cmZoS2JKOTBsdlBnaDlmckdlTjc5aDVpR1J5eW1KZkliVVBYM0xIZlByOWdTVXpuampDbS9tMjhscGdOR0xLWWw4cnY1c1p6aUc0bXBuTVRVSDJJYUhzbVlUby81dXNIK1E1MjlaMWV1K1JWYllpb25NZldIbUlaSExLYVpSclhvcFUxMjFIaFkzN0tibGFrNHhIVHdFdE5CUVV3YjFZcjEyK3lvOFhEMnpLWHV1WVdRbU1wSlRQMGhwdUVSaStua0J0WDZ5U0U3YW5qYTJ2VXAvaVV4dlRHMGtaaktTVXo5SWFiaGtYek9ORTZlV0xYSlBhOVFFbE01aWFrL3hEUThVakU5OFpyNWRzVHc5UFRrNDNuYnZTTWxwbklTVTMrSWFYaWtZbnJxOUNmc2lPSDV5N3AvbVpnNTV4Vk1ZaW9uTWZXSG1JWkhKS1k2WkpmYytad2RNU3lITzd2MU1SUGpjNlY5RWxNNWlhay94RFE4SWpITk5Lb2xxN2ZZRWNNeXJYR1ZlMDZoSmFaeUVsTi9pR2w0UkdJYTA4V25UZHYzeGZjaS9jOUtUT1VrcHY0UTAvQkl4SFQ4dEVWMnRIQzBkK2pUZTMyc3V1WVRpOFJVVG1McUR6RU5qM2RNOVNuKzNPYzMyTkhDWUs3ZW56WHpTZmQ4NHBLWXlrbE0vU0dtNGZHTjZmQWZ6TE1qaFdQR3ZKZWRjNGxWWWlvbk1mV0htSWJISzZhVEc5VGN2NFZkbGQ2K2NJMEpsM3MrY1VwTTVTU20vaERUOEF3NnB0bEluWC9Ibiswb1liaXBlVlU4L3lWSmZ5U21jaEpUZjRocGVBWVYwMHlET3ZmMlord0l4YWU3SjY5K05QdkYwbHlSOWtsTTVTU20vaERUOFBRN3BpWmsrclRlSEd2M1ByWGVmblh4T2RqZXFjWk5YZVNlVXlsSlRPVWtwdjRRMC9Ba3ZuVi83N3N0ZmRhSkQ2bGhWelNyRTYrZXIwNi9hYkhLM0wxYy9TSHdDL09YdmJtMU1BL1hQaXM1aWFtY3hOUWZZZ3FHZzRjNzFWWDNQMTlZQ2J2MlYwbEtUT1VrcHY0UTA2Rk5SMWUzZW5qWnV5cngzUWVjKzZta0phWnlFbE4vaU9uUXBMMnpTeld0Mk5CN1NsL0tGNWsrVDJJcUp6SDFoNWdPSGZMNXZIcTdaWSthTW1lbFNseWdWNkxsR3RFK2lhbWN4TlFmWWxyWmZOeDJXSzE2YjRlNjBielRVN1pSSlNaNVBOYWxKakdWYzlKdmxxbmxiMjR0WElFTTZjcDMvcTJPL2Y1YzU1d0daYVpSUGZqc1A1ei9Wckg5M2NxTitodk00NkxEeERucXBYZTNPOGN1cGl2ZTJxWXV1ZXM1OTV6NjRRbFh6MWU3OTdlcmx0YTJpdkROTGJ2VjJrMnRoWDN6NnlmV3FvbDNQcWRPTUQvd0w5YW44ZnFIdFdzZmxMM0VGTEVFTktlNDV1VklabFZlN3BydE1GZmh5K2xLdklURUZCRlJRR0tLaUNnZ01VVkVGSkNZSWlJS1NFd1JFUVVrcG9pSUFoSlRSRVFCaVNraW9vREVGQkZSUUdLS2lDZ2dNVVZFRkpDWUlpSUtTRXdSRVFVa3BvaUlBaEpUUkVRQkt6YW11YWpWdWNHSWlNWHhvSzFQaFpGdGFISnNMQ0ppY2N4RnUyeDlLb3dybXNjN054Z1JzUmhtb2wvWStsUWc1amtNMTBZaklrcWFpL0syT2hWS3J1a0Y1NFlqSWtxYWkzYlk2bFF3dWFqYnVmR0lpQkxtdE9mY2Q3d3RUZ1dUaTZZN2R3QWlvb1M1YUptdHpSQ2dQbnJOdVJNUUVYM01ScTIyTWtPSWJPTkc1ODVBUkJ5TXVhWUtmU2xVZjhoRmkvUU95T3VWcW52bklDSitrZWJLZlgzVFdsdVZJVXcyT2sydlVsdUpLaUlPMkZ5ME41RnR1czdXQkFxWXFOWkg2L1RIZlRxc25ZbjZacjJ6RUJHUDBLeENzMUdiYnNTV1JLWmhncTBIQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUJwa1VqOEI0QW9tK01iVCszSkFBQUFBRWxGVGtTdVFtQ0MiLCJzdXBwb3J0ZWRFeHRlbnNpb25zIjpbeyJpZCI6ImhtYWMtc2VjcmV0IiwiZmFpbF9pZl91bmtub3duIjpmYWxzZX1dLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCJdLCJleHRlbnNpb25zIjpbImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6IjY5MmRiNTQ5N2FlNTQ0ZDVhMWU1ZGQyMGE0OTNiNzIzIiwib3B0aW9ucyI6eyJyayI6dHJ1ZSwiY2xpZW50UGluIjp0cnVlfSwicGluVXZBdXRoUHJvdG9jb2xzIjpbMV19fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAxOS0xMC0wOCIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiSElEIENyZXNjZW5kbyBLZXkiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDE5MDgyMTAwMiIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4zLjYiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMyJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAxOS0xMC0wOCJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMTktMTAtMDgifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyI5OTYyOWU5OTJlNmQ4ZjNiMDFhYjE3YjQwMWMxMjE4M2E3ODM2ZDc5Il0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjk5NjI5ZTk5MmU2ZDhmM2IwMWFiMTdiNDAxYzEyMTgzYTc4MzZkNzkiXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlNlY3VyaXR5IEtleSBORkMgYnkgWXViaWNvIC0gRW50ZXJwcmlzZSBFZGl0aW9uIn0sImRlc2NyaXB0aW9uIjoiU2VjdXJpdHkgS2V5IE5GQyBieSBZdWJpY28gLSBFbnRlcnByaXNlIEVkaXRpb24gKEVudGVycHJpc2UgUHJvZmlsZSkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDczLCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjJ9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50IiwicmVtb3RlX2hhbmRsZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRE16Q0NBaHVnQXdJQkFnSVVTT0VqVGYvL3lxUmZQVzdRcThxdEl5Q3JBZzh3RFFZSktvWklodmNOQVFFTEJRQXdMekV0TUNzR0ExVUVBd3drV1hWaWFXTnZJRVpKUkU4Z1VtOXZkQ0JEUVNCVFpYSnBZV3dnTkRVd01qQXpOVFUyTUNBWERUSTBNRFV3TVRBd01EQXdNRm9ZRHpJd05qQXdORE13TURBd01EQXdXakF2TVMwd0t3WURWUVFERENSWmRXSnBZMjhnUmtsRVR5QlNiMjkwSUVOQklGTmxjbWxoYkNBME5UQXlNRE0xTlRZd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUUNkdmwyN3cyZ3UxZlBYZUVGYklkcXgwQmFsdlZEVldyUVBKN0hxdml1RXRaSGx4U0x4U0Z0Y1hwVG9sdkx2b2Y4ZjR0TWVyUVRrVkd6Y21Zem0xRUJUNElKdU1tb0VxZmtFRWhXcHNBRE1Gcmpaa3FsWlk5RXF4UXpMb1ZFRW9uRTVvR3hTZFZDeENjTElhY2tweVIvQ0NYdmoxQnQvaFRnRTloVGxGNHBScXhNa3gzcGxGN3k4ZERabFJIV3M3dmJuaG1CQ0dlSTBaUEVRNm5sMm1DZzJyNzRhZEYydTZLOXJyTGZoQkMzUUxFOEVQcmdxVXNJK2hrdXEydEs0TTJTTU9wOHVVVlZrcVVldTNoMGtyM1dWSTBXMDJwa2dyT2dpRktMRk5rU3JiWWhkak1CRGo1aXptcWZjOXhKUktvRFg2MTJxZDhaR1ZIcFQ1QVlGWCsxaEFnTUJBQUdqUlRCRE1CMEdBMVVkRGdRV0JCVFp5VTVEaVEvYTJVRWdFN3FCSzB6aElzUk5SakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VBTUE0R0ExVWREd0VCL3dRRUF3SUJCakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBWHZuQjRTTHVVSmZZTVNWR0Foc3NML1NtV2xpM0ZTY2NneHlkdktsQUNjaWRJSVdLUXFhM3EvUVNVRVF6QzlEZ0VmTWdyN2lDMUJrVFpiSUxib1Y2VVo1a25Oc3ZqRVpXdU1lb2dKOHRnWnMxaFZ2S3daaXp3SittRWNtc2poSXJCWXVvTDFUNnlyT0p2S0ZnMWp2K0N5NFp3QTlCcGsvVjNVT2lyMVZ5SzhkQ3R5SHU2dmZvc290QWRZeDhGQXVSMjQzZ1JUTVY2Sng4SmRpZzJKRElBUU1selZlRHBTVUhYL0sySFhSSHhId2ZnamJnVWpqQnUvNzJyOE9mZWh5aHpIWEkzSzhDRkZkZmxPKzhuRU9KSzN5OEYxaXZnUzV1Ti84U21jWXcvU1RRWXdocnhQdXd6M25QOGJhTXVtNEJCMm5uWW1wQjYwc1gzYmw1azhRVVN3PT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZkNBWUFBQUNHVnMrTUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFIWVlBQUIyR0FWMmlFNEVBQUFiTlNVUkJWRmhIcFZkN1ROVjFGRC8zZDU5d2VRU0lnUzlBUUFYY0ZMQVFaaTlmcGVWejF0WS9XVFpyNVd4cGM3VzVrbkxhNWpJM1o4NXNyUzJuTTJzanRXd1pTN0lVSDRINHhDbkVReDREQVpGNzRWN3VzODg1djkvbEluQnZWSi9CNFB2OW51LzVudS81bnZNNTU2ZnpBL1F2MEhiL0lyWDNWRktQbzQ1Y25tNGluVUlXWXdMRlJtWlFVdXdqRkcvTjFpUkhoMUVaME5SVlJ1ZHF0MUJkKzJuU0t5Uy9PaHlzMCtsazNlLzNrUTlxdkQ0WlV0YTRWVlNVdVkwZWlweWlUaEFmb2NvT1JWZ0R1dXczcUtSaUFkM3JiY0V0alRqWUlvZjZXYUhzQ216VlBXQ014K2NnaDh0THFXTUthTVdzVWpMcW8yUnRKSVEwb096bWVycFF1NGVzWmdzT05rR3hIN2Qwa2R2VFQxN3M0T01VN1ZJOFpoamdHYU0rQXE5aUVOdThQaWYxdWR6MDdNd3ZLV2Y4R2xWb0NFWTA0UEM1V2RUYVhZRmJSOHZOdkw1KzNLZ2ZiNXhOTXlhOVJhbUppeW5hTWxHVFZ0RmxyNmJhOXUrcHFuRVg0dU11UlJnalNZRWhyTjd1dEZGZTZscWFsN05ma3c1aW1BR0h5blBwYms4Vm1ZMHhzdG5wdGxGQ1ZDWXR6VHVCTjgzUXBNTGpUdGV2ZFB6U1VuSjdlOG1ranhaMzlmWGJLRGZsZFpxYnZVK1RVZ0duQlZGNmZRMmlQSGc0VzE2VVdVd3Z6YmsxNnNNWkUrUG4wcHZ6N0pTZXVBeWVzOGxjcENtYUt1by9wK3FXcjJVY3dJQUhXcnZQMFlFemhYQXRMQWJzc0hocDdpR2FtdnlpalA4cnlxclhVV1g5WG9vd3h5QXVmTkJycDQzUE9CRlhabGtmOE1EUmlxY3B5b3dBd3B1ejJ4K2ZXdnovRHRkZTlzbXN6eWd0Y1I2QzF3YmR6Qmw2T2xxNVdOWVk0b0dhdGhKTXJrVEV4MGpBUlNIQVZzKzVyWWtRTlhiK1FnZlBMc1E2Z1h5SW5zcmVRZm1wbTdSVkZZZkw4Nm4xZmlVT2tZdlNoa1VQeHZidWt6b3k2SzFpaE0xaG8zWHpXNkV2U2ZYQStkcGlXR2FXZCtkb1h6THptR3dLWUZMQ0FzUkFsUEJBaE1sQ0ZYVTd0QlVWUHI4SGdWY0pIV3ErRjAwcGxyK0RNVGRyUDR6dnhZMTFrTk1oeFQrU2VUR2crZDRWNUxRSml0eVVHSk5COFZGWnNqZ1lCWk0vSUkvWENUa2owcXlET3BGMkFWUTE3Q0lqVXAvRG5UMVVrTDVGNWdkaitzUzF3ZzFnRTNnaWdtNjBmQ1h6U25QWGJ5QVBiSVh2K0lEcEUxNlRoYUhJUzlza3lobG1NRTVGM2NmcUFLaHEyQzBFNVBIMWdZYVhhTFBEa1pHMEhESk9uS1dIcDUxSTB6NVNPdXg4ZTFXQXVaemRIUXJUa3A4VG1qWG9JK2xhMHdHWnN6dWJxYk8zaWZRNkEvVzd2VlNZc1YzbVIwSkt3a0tjNFdIaUJrbVI4STNDQ2dJODdvT0w0cXpUNVArUlVKQmVqRU9nQVBLOGhZUHphdE0rZUlUcDJJTzl5VFFtZXJvbVBSeHgxcXhBY3NpbGUvdWJTZUViY1dRR1lFQ2doY0xZMkh5S2pvZ2pIMjVoTXBqcFV2MU91Z2xpNGVoMmVSdzBPMzJiSmpreXVDZ056ZzB2emxZTVNpU3MwdW9vNE1HN2hNT2pDRWFYMXlGRTBuU3ZqQnp1VG5FcEs4Nlo4SW9xRkFJdWJ3OGtnOUFyRWFSRVdTWkkrakg0WGJwNmc5RTlFbkpUM29hUnpETitNVUpCUURIbjU2YThvVW1FQnVzT3hCcy9ONSt0SkViUGtBRkRqOFVHdk9zL0lXdmNTZ2xHQmh2UzcvRlRZZnBXR1lkRFk4ZlBBeFdTQTM1c1RDNHA0K0xtNEFhcUlvUGVRdGZ1Zks2SmgwWmh4bGJzVVhPU21YTmlmRDVaVEFreURvZmJiY2NseG5BOFdOQXF4Q2JSTnlraFh4UXBhRHc2N2ZYVVlic2lHMEtodHYyb2VJdmg4cmhRTVlPY0VBcVhHL2VJK3puZ09jNXl4cjhxODJJQU0xYy9GTEZPcGxxdTVlRlFYck1aekdjVkNqWWJMV0c1STRCVDFldVJybGJ4dE5PdE1pdERERWhMWElJeW5BQXZ1T0VXRTNYM05kQWZ0OTRWZ2FHNDJYSVF0MFpYNlBlQ0UvcVFGZTlySzZIeDdZVTUwS3ZIN2ZXNGZTK3E3S0tCSnhzZ2dCWDVwU0FHaDFqSXJWaDV6UTZ3M1JmYWFoQlhtL2FDYkNaVGpDVUZVVHlXWnFXOXA2Mk1qSlBYVnFPclBnTU80TnY3NEdrZitvd2Z0TlZCRFFuakZKcUhTdzE3cFh2aFdXNUtacWUvUTQ5Ti9VU1RDQVZXb1FYRklIQkhYWGUzRlByVURzdUdEbXRGL2hIS1RIcGVreGhpQU9QSStTSnE2UzZIRjRJOVlXemtCSlRvNDZpVU16V3A4UGlyL1JpZHVMeEtZc1Nrc1Y4dkxsT1F2aEdYMllsUjBPQmhCakMrdS9nRWN2WTBBcEs3WWs0MU54alBTUW5XRkhURjY2VXJqZ2V2QjhDdTVhK2wydllTUlB0dVZEbzczaGhkTVNIblVYN3RUanNWWkd4QWwvV3B0aU9JRVExZ25MMjltWDYvdFIxdG1sa1lqOFc0WCtDU2pXY1VER1kxTnBTL0M3aFNLcWlNTE0vbDJRbVNXWjczRGR6K2dpbzhCQ0VOWVBRNDZxbmt6d1hVYnF2Qmt4alVRc1dmWkZnYnVvM3JBZit3TjdqT085MCt5bng0UGkzTCswbllMMVNjaERVZ0FQNGdQVi83SWQxcSsxSFNobXVHa0lxV1JQZ3l4TUZxUDhIZmpUbmpYd1k1YlFmYkpjdDZPSXpLZ01Ib3RGL0hlMWVnc2F4SFNxRzZ3ZmRtUTV4OE55VEZGcUJjcDJpU293SFIzeWs1KzM2aEY3dlhBQUFBQUVsRlRrU3VRbUNDIn0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMTAtMTIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDczLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IlNlY3VyaXR5IEtleSBORkMgYnkgWXViaWNvIC0gRW50ZXJwcmlzZSBFZGl0aW9uIChFbnRlcnByaXNlIFByb2ZpbGUpIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVMkYxMDAwMjAyNDEwMTIwMDYiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMC0xMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzN9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjQtMTEtMTIifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyIzMTExNmE2NDcwNjlkMTQ5M2Y1OGZjNWI1NGU1NDQ5ZTJhNTJkNDNlIl0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjMxMTE2YTY0NzA2OWQxNDkzZjU4ZmM1YjU0ZTU0NDllMmE1MmQ0M2UiXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ill1YmlrZXkgRWRnZSJ9LCJkZXNjcmlwdGlvbiI6Ill1YmlrZXkgRWRnZSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50IiwicmVtb3RlX2hhbmRsZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURIakNDQWdhZ0F3SUJBZ0lFRzBCVDl6QU5CZ2txaGtpRzl3MEJBUXNGQURBdU1Td3dLZ1lEVlFRREV5TlpkV0pwWTI4Z1ZUSkdJRkp2YjNRZ1EwRWdVMlZ5YVdGc0lEUTFOekl3TURZek1UQWdGdzB4TkRBNE1ERXdNREF3TURCYUdBOHlNRFV3TURrd05EQXdNREF3TUZvd0xqRXNNQ29HQTFVRUF4TWpXWFZpYVdOdklGVXlSaUJTYjI5MElFTkJJRk5sY21saGJDQTBOVGN5TURBMk16RXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFDL2p3WXVoQlZscWFpWVdFTXNyV0Zpc2dKK1B0TTkxZVNycEk0VEs3VTUzbXdDSWF3U0RIeTh2VW1rNU4yS0FqOWFidlQ5TlA1U01TMWhRaTN1c3hvWUdvblhRZ2ZPNlpYeVVBOWErS0FrcWRGbkJubHl1Z1NlQ09lcDhFZFpGZnNhUkZ0TWprd3o1R2N6MlB5NHZJWXZDZE1IUHR3YXowYlZ1em5ldWVJRXo2VG5RakU2M1JkdDJ6YnduZWJ3VEc1WnliZVdTd2J6eStCSjM0WkhjVWhQQVk4OXlKUVh1RTBJek1aRmNFQmJQTlJiV0VDUktnanEvL3FUOW5tRE9GVmxTUkN0MndpcVBTemx1d24rditzdVFFQnNValRHTUVkMjV0S1hYVGtOVzIxd0lXYnhlU3lVb1RYd0x2R1M2eGx3UVNnTnBrMnFYWXdmOGlYZzdWV1pBZ01CQUFHalFqQkFNQjBHQTFVZERnUVdCQlFnSXZ6MGJOR0poamdwVG9rc3lLcFA5eHY5b0RBUEJnTlZIUk1FQ0RBR0FRSC9BZ0VBTUE0R0ExVWREd0VCL3dRRUF3SUJCakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBanZqdU9NRFNhK0pYRkNMeUJLc3ljWHRCVlpzSjRVZTNMYmFFc1BZNE1ZTi9oSVE1Wk01cDdFamZjbk1HNEN0WWtOc2ZOSGMwQWhCTGRxNDVyblQ4N3EvNk8zdlVFdE5NYWZiaFU2a3RoWDdZKzlYRk45TnBtWXhyK2VrVlk1eE94aThoOUpESWdvTVA0VkIxdVMwYXVuTDFJR3FyTm9vTDltbUZuTDJrTFZWZWU2L1ZSNkM1K0tTVENNQ1dwcE11SklaSUkydjlvNGRrb1o4WTdRUmpRbExmWXpkM3FHdEtidzd4YUYxVXNHLzV4VWIvQnR3YjJYMmc0SW5waUIveXQvM0NwUVhwaVdYL0s0bUJ2VUtpR24wNVpzcWVZMWd4NGcweExCcWNVOXBzbXlQeksrVnNndzJqZVJRNUpsS0R5cUUwaGViZkMxdHZGdTBDQ3JKRmN3PT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZkNBWUFBQUNHVnMrTUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFIWVlBQUIyR0FWMmlFNEVBQUFiTlNVUkJWRmhIcFZkN1ROVjFGRC8zZDU5d2VRU0lnUzlBUUFYY0ZMQVFaaTlmcGVWejF0WS9XVFpyNVd4cGM3VzVrbkxhNWpJM1o4NXNyUzJuTTJzanRXd1pTN0lVSDRINHhDbkVReDREQVpGNzRWN3VzODg1djkvbEluQnZWSi9CNFB2OW51LzVudS81bnZNNTU2ZnpBL1F2MEhiL0lyWDNWRktQbzQ1Y25tNGluVUlXWXdMRlJtWlFVdXdqRkcvTjFpUkhoMUVaME5SVlJ1ZHF0MUJkKzJuU0t5Uy9PaHlzMCtsazNlLzNrUTlxdkQ0WlV0YTRWVlNVdVkwZWlweWlUaEFmb2NvT1JWZ0R1dXczcUtSaUFkM3JiY0V0alRqWUlvZjZXYUhzQ216VlBXQ014K2NnaDh0THFXTUthTVdzVWpMcW8yUnRKSVEwb096bWVycFF1NGVzWmdzT05rR3hIN2Qwa2R2VFQxN3M0T01VN1ZJOFpoamdHYU0rQXE5aUVOdThQaWYxdWR6MDdNd3ZLV2Y4R2xWb0NFWTA0UEM1V2RUYVhZRmJSOHZOdkw1KzNLZ2ZiNXhOTXlhOVJhbUppeW5hTWxHVFZ0RmxyNmJhOXUrcHFuRVg0dU11UlJnalNZRWhyTjd1dEZGZTZscWFsN05ma3c1aW1BR0h5blBwYms4Vm1ZMHhzdG5wdGxGQ1ZDWXR6VHVCTjgzUXBNTGpUdGV2ZFB6U1VuSjdlOG1ranhaMzlmWGJLRGZsZFpxYnZVK1RVZ0duQlZGNmZRMmlQSGc0VzE2VVdVd3Z6YmsxNnNNWkUrUG4wcHZ6N0pTZXVBeWVzOGxjcENtYUt1by9wK3FXcjJVY3dJQUhXcnZQMFlFemhYQXRMQWJzc0hocDdpR2FtdnlpalA4cnlxclhVV1g5WG9vd3h5QXVmTkJycDQzUE9CRlhabGtmOE1EUmlxY3B5b3dBd3B1ejJ4K2ZXdnovRHRkZTlzbXN6eWd0Y1I2QzF3YmR6Qmw2T2xxNVdOWVk0b0dhdGhKTXJrVEV4MGpBUlNIQVZzKzVyWWtRTlhiK1FnZlBMc1E2Z1h5SW5zcmVRZm1wbTdSVkZZZkw4Nm4xZmlVT2tZdlNoa1VQeHZidWt6b3k2SzFpaE0xaG8zWHpXNkV2U2ZYQStkcGlXR2FXZCtkb1h6THptR3dLWUZMQ0FzUkFsUEJBaE1sQ0ZYVTd0QlVWUHI4SGdWY0pIV3ErRjAwcGxyK0RNVGRyUDR6dnhZMTFrTk1oeFQrU2VUR2crZDRWNUxRSml0eVVHSk5COFZGWnNqZ1lCWk0vSUkvWENUa2owcXlET3BGMkFWUTE3Q0lqVXAvRG5UMVVrTDVGNWdkaitzUzF3ZzFnRTNnaWdtNjBmQ1h6U25QWGJ5QVBiSVh2K0lEcEUxNlRoYUhJUzlza3lobG1NRTVGM2NmcUFLaHEyQzBFNVBIMWdZYVhhTFBEa1pHMEhESk9uS1dIcDUxSTB6NVNPdXg4ZTFXQXVaemRIUXJUa3A4VG1qWG9JK2xhMHdHWnN6dWJxYk8zaWZRNkEvVzd2VlNZc1YzbVIwSkt3a0tjNFdIaUJrbVI4STNDQ2dJODdvT0w0cXpUNVArUlVKQmVqRU9nQVBLOGhZUHphdE0rZUlUcDJJTzl5VFFtZXJvbVBSeHgxcXhBY3NpbGUvdWJTZUViY1dRR1lFQ2doY0xZMkh5S2pvZ2pIMjVoTXBqcFV2MU91Z2xpNGVoMmVSdzBPMzJiSmpreXVDZ056ZzB2emxZTVNpU3MwdW9vNE1HN2hNT2pDRWFYMXlGRTBuU3ZqQnp1VG5FcEs4Nlo4SW9xRkFJdWJ3OGtnOUFyRWFSRVdTWkkrakg0WGJwNmc5RTlFbkpUM29hUnpETitNVUpCUURIbjU2YThvVW1FQnVzT3hCcy9ONSt0SkViUGtBRkRqOFVHdk9zL0lXdmNTZ2xHQmh2UzcvRlRZZnBXR1lkRFk4ZlBBeFdTQTM1c1RDNHA0K0xtNEFhcUlvUGVRdGZ1Zks2SmgwWmh4bGJzVVhPU21YTmlmRDVaVEFreURvZmJiY2NseG5BOFdOQXF4Q2JSTnlraFh4UXBhRHc2N2ZYVVlic2lHMEtodHYyb2VJdmg4cmhRTVlPY0VBcVhHL2VJK3puZ09jNXl4cjhxODJJQU0xYy9GTEZPcGxxdTVlRlFYck1aekdjVkNqWWJMV0c1STRCVDFldVJybGJ4dE5PdE1pdERERWhMWElJeW5BQXZ1T0VXRTNYM05kQWZ0OTRWZ2FHNDJYSVF0MFpYNlBlQ0UvcVFGZTlySzZIeDdZVTUwS3ZIN2ZXNGZTK3E3S0tCSnhzZ2dCWDVwU0FHaDFqSXJWaDV6UTZ3M1JmYWFoQlhtL2FDYkNaVGpDVUZVVHlXWnFXOXA2Mk1qSlBYVnFPclBnTU80TnY3NEdrZitvd2Z0TlZCRFFuakZKcUhTdzE3cFh2aFdXNUtacWUvUTQ5Ti9VU1RDQVZXb1FYRklIQkhYWGUzRlByVURzdUdEbXRGL2hIS1RIcGVreGhpQU9QSStTSnE2UzZIRjRJOVlXemtCSlRvNDZpVU16V3A4UGlyL1JpZHVMeEtZc1Nrc1Y4dkxsT1F2aEdYMllsUjBPQmhCakMrdS9nRWN2WTBBcEs3WWs0MU54alBTUW5XRkhURjY2VXJqZ2V2QjhDdTVhK2wydllTUlB0dVZEbzczaGhkTVNIblVYN3RUanNWWkd4QWwvV3B0aU9JRVExZ25MMjltWDYvdFIxdG1sa1lqOFc0WCtDU2pXY1VER1kxTnBTL0M3aFNLcWlNTE0vbDJRbVNXWjczRGR6K2dpbzhCQ0VOWVBRNDZxbmt6d1hVYnF2Qmt4alVRc1dmWkZnYnVvM3JBZit3TjdqT085MCt5bng0UGkzTCswbllMMVNjaERVZ0FQNGdQVi83SWQxcSsxSFNobXVHa0lxV1JQZ3l4TUZxUDhIZmpUbmpYd1k1YlFmYkpjdDZPSXpLZ01Ib3RGL0hlMWVnc2F4SFNxRzZ3ZmRtUTV4OE55VEZGcUJjcDJpU293SFIzeWs1KzM2aEY3dlhBQUFBQUVsRlRrU3VRbUNDIn0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjAtMTItMjkiLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ill1YmlrZXkgRWRnZSAodjQpIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVMkYxMDAwMjAxNTA1MjAwMDIiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMCJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjAtMTItMjkifSx7ImFhZ3VpZCI6IjIzMzE1YWQwLTZhY2EtNGJhMS05NTJlLWYwNDRmMWUzNjk3NiIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiMjMzMTVhZDAtNmFjYS00YmExLTk1MmUtZjA0NGYxZTM2OTc2IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkNsaWZlIEtleSAyIE5GQyJ9LCJkZXNjcmlwdGlvbiI6IkNsaWZlIEtleSAyIE5GQyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyNTcwLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX0seyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlCempDQ0FYV2dBd0lCQWdJVUVWMnVZMFYwMWpxYlhQRWpNZll6Q2UrNVZCd3dDZ1lJS29aSXpqMEVBd0l3SURFZU1Cd0dBMVVFQXd3VlEyaHBjSGR2YmlCR1NVUlBNaUJEUVNBd01EQXhNQ0FYRFRJek1ETXdOekF6TVRnd05Gb1lEekl3TnpNd01qSXlNRE14T0RBMFdqQWdNUjR3SEFZRFZRUUREQlZEYUdsd2QyOXVJRVpKUkU4eUlFTkJJREF3TURFd1dUQVRCZ2NxaGtqT1BRSUJCZ2dxaGtqT1BRTUJCd05DQUFTY0kxVGpVTE9VT0xPU3ZKSThpWDdqbGovc2ExZ2lPZEJFcTIwVzZ3a1huenhRSjZLZzFOdW9oc2UraUlTNDBxTUN5eTNBcGFaeHdOUisvMjhWR21Qd280R0tNSUdITUIwR0ExVWREZ1FXQkJRejg5SlFYVHhieWpTbFMzNW1zUEg3YXlpR2V6QkZCZ05WSFNNRVBqQThvU1NrSWpBZ01SNHdIQVlEVlFRRERCVkRhR2x3ZDI5dUlFWkpSRTh5SUVOQklEQXdNREdDRkJGZHJtTkZkTlk2bTF6eEl6SDJNd252dVZRY01BOEdBMVVkRXdRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0VHTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUR3aDhTQXNJdFFLYUt0YTFrdDJidjJwcnZGNVV0V0FrVFYwZWc4a0xmTEtBaUFnZXg5eHBLR0NMUGVpKzhUdUVreHlLUUM5RjY3dDk2SFZ2UVBFK3VVZkJRPT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBVEFBQUFDd0NBSUFBQUFIWHFYSUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFEc01BQUE3REFjZHZxR1FBQUJEdVNVUkJWSGhlN1ozN2J4M2xFWVlUMzJNbnRwTmdURzQ0Y2V6Y25OaEpiTWNYSElKRWdhb3FSZEFpVlJVQ1N0VVdrSG9CVVZWVklZQ1VxcUdrdi9TSGxsWkl0RktMb1ArayszRysxOXZOYTUvanZjenN6cDR6ang2aEpHZDMzdG5kR1U3aU9QYUJiY2R4ek9BTDZUaUc4SVYwSEVQNFFqcU9JWHdoSGNjUXZwQ09Zd2hmU01jeGhDK2s0eGpDRjlKeERPRUw2VGlHOElWMEhFUDRRanFPSVh3aEhjY1F2cENPWXdoZlNNY3hoQytrNHhpaVJ4ZnkydnpSSDMxbjl0M1hGajU2Ky9wN3J5OThlK3NVWG5DY1d1bm1oWnc1TWZiZlB6OVYwZy9lWEVJNXg5R24yeFl5dk4zUlJzbTZ0amlGSk1kUm9Fc1drdGFtR3BIdE9ISTBleUZwUStyeTZ0d2tHbktjY2pSeUlTZVBETkZLR0JIOU9VNVJHcmFRTHo5M2xuYkFvT2pWY2ZMVG1JVjhkdk1remIxeDBiZmo1S0VaQzBtejNpQnhBWTZURGVzTFNmUGRSTC82OUE0dXhuSDJ3KzVDRGczMjBXUTNXbHlWNDNURTZFTFNOSGVIL2xicDdJdkZoYVE1N2pKeGtZNnpGN1lXOHEvdnI5UDRkcVc0V3NmWmhhR0ZwS250Ym4vMXloVmN0dU9rc0xLUU5LKzk0UDFmTCtQaUhXY0hFd3RKazlwVDRoWTRUb3Y2RjVJR05LTTRPU2QvKzJDRDZsZ1F6VGxPN1F0Sm85bkJSNCtONEJ3NUtLSkcwWkRUODlTNWtEU1VlNHBESDJaeDRjcVRteHZGUkltSG9kQmFSQ3VWc0hUeDJNdlBuWDM5aGJrSDc2MVNHNTJkT1RHR0VqMEdUZEdOeFd0NFFacmFGcEtlTkltRFV0emVXS2ViVWw2VVRrRnRWQ3lhRUlVaXBIenRoVGtFZEMvSGp4MmxnZGxUSEMxRVBRdEpUemN0anRoaGZXV1pybDlEaE8xQUxWWG1iMzhpLy8vZDZlT0hLRVhRYzZjT0k2YTdtQmdmcHduWlY1eFptaG9Xa2g1cUlsN2VnUzY0R3BIZGd0cXJSbVNMUWhIaUlxWmJvSkhJSlVxVW9PcUZwR2NaeFdzNzBFVldML3BvUWExV0lJTGxXRnVjb2doeGtkUjhhQklLaUVKRnFYUWg2U2xHOFZvTHVyWjZSVTh0cUdkdGtTb0gxZGNRU1UyR0JxQ3dLRmVJT2hjU3Y5cUNMc21JbHkvTW83L3Q3ZmQvdmtUOXE0cFVJZjcxaHkycXJ5SENtZ2s5K3BLaWFINnFXOGgyRDI5dCtTWmRqS0F6Wjg0Z3BqMGJ0MWJwTEJMSHRhQ3JVQldSUWxCeEpSSFdOT2lKaTRqU09hbG9JZHM5TnJvR0tWRzlLRlF0aUJkYTBMWG9pVHdocUxpZXlHc085S3lsUlBXY1ZMR1FFNGNIOTN4Z2RBSGxSVjFSa3VMcnF5djRKZC9KamlLc09TU1BXRndFNUtHS2hkejl0TXA4cXMxdU4yK3R4cktxeEN6OHBKazdTWlgxUkY0VFNLWklRMlRrUVgwaGR6OG5hcnFNVyt0cnNXWmxoRkQ4cUpsdk9GUmN5ZjYrZzhnelQzcWNORVJNWnFwYnlQaFRhcmVNc1dEMXJGeS9qaDgxY0NlcHNwN0lNdzhObGJpSXlZenVRdExqb1Y0TEc2dFo0TlQwYUhLTmVqNjdlUko1RWxCeEpSRm1tM016ajlOb2lZdWt6Q2d1NVBOUG5Vay9HMnEwc0xHYUhaSVJWQlZoRWxCbFBaRm5HQm90RFpHVUdjV0ZURCtWcTVjdlVhTUZuSnM5RjZ0Wkl4bEJWUkVtQVZWV0VtR0dvUUhURUVtWjBWcklmM3k0bVg0cTFHVUJZeDJiL1BRSEY1SXAxQk5oRWxCbFBaRm5GWm94RGNmR1JoR1dEYTJGVEQ4UGFyR0FzWTVsa2hGVUZXRVNVR1VsRVdZVkdqTU5oNGVIRVpZTmxZWDg3TzQzWDdvbS9wajZLMkNzWTUvMElDcUpKQW1vc3A3SU13bE5tb1pJeW96S1FvYkg4TWZXMXppazVnb1lDemFDOUJUcWlUQUpxTEtTQ0RNSkRadUdTTXFNL0VMR1Q1U0xQNmJtOGhxTE5JajBJQ3FKSkFtb3NwN0lzMGY0QXg2Tm5MaEl5b3o4UWlZUGdEckxhMzkvZjZ6VElBYjZENllIVWNQcDQ0Y1FKZ0VWVnhKaEpxR3BFeGN4bWRGYVNHcXJnTEZhNDBnUG9wSklrb0FxNjRrOGU5RFVpWXVZekFndlpITHJxYTI4eGlJTkpUMklHZzRQU2Y3ZWdZb3JpVEI3cUg2eURqTHlvTEtRMUZaZVk2bm1raDVFSlpFa0FWWFdFM24yb1BFVEZBRjVrRnpJZ3dkUmpkcks1ZURnWUN6U2FHZ1d4VjI5K2dpU0pLRGlTaUxNSkRTRUlxSjBUaVFYTXQ1MGFpdXZzVlRUZVdialpIb1dOVVNTQkZSWlQrVFpnNGF3dkZPUEhFZnBuQWovbGpWQW5lVVNKYm9DbWtWeFQwejVoMXNsb1ZFc0tZcm1SM2docWEyOG9rcTNRT01vTG1Ja29NcDZJczhrTkkyRlJibENHRnBJbE9naWFCYkY5USszaWtNeldVQVVLb3JrUXZiMTlWRnp1VVNWN29MR1VWekVTRUNWOVVTZVZXZ3NzenM1TVk0U0paQmNTT292bHlqUmRkQXNpb3NZSWFpNGtnaXpEYzNudnVLMDB2aENxa1BqS0M1aUpLREtlaUxQUERTbHU5MWN1NFZEaGZDRlZJZG1VVnpFQ0VIRmxVUllvM2o4OU9uMTFaVWJpOWRFZm12YURyR0ZwQVhMSlVwMEx6U080aUpHQXFxc0ovS2NoL0dGckFLYVJYRVJJd1FWVnhKaHpzUDRRbFlFamFPNGlKR0FLdXVKUENlRkwyUkYwQ3lLaXhnaHFMaVNDSE5TeUN6azB0VUYyckhzSHAyY1JKVnVoOFpSWE1SSVFKWDFSSjZ6Zzh4QzBvN2xFaVY2QUpwRmNSRWpCQlZYRW1IT0RyNlFsVUxqS0M1aUpLREtlaUxQYWVFTFdTazBpK0lpUmdncXJpVENuQmEra0ZWRDR5Z3VZaVNneWtwKy9lQU84aHhmeU9xaGNSUVhNUkxjKzhVTktxNGs4aHhmeUZxZ2NSUVhNUkpRWlNVLy8vZ0o1UFU4dnBBMThNVzlMWnBJV1JFandYZnZuS2JpU2lLdjUvR0ZyQWNhUjNFUkl3RlZWbkorUnZFenRodUVMMlE5ZlBYcEhacElXUkVqd2RzL3ZFVEZsVVJlYitNTFdSczBqdUlpUmdLcXJPVG95QUR5ZWhoZnlOcWdjUlFYTVJKODh1NHlGVmNTZVQyTUwyU2QwRGlLaXhnSnFMS1NDSk9EaGszUTZha3BaSWppQzFrbk5JN2lJa1lDN1k4TUp5S3ZORFJtNGlKR212b1g4c3FsaTZqU2s5QTRpb3NZQ2FpeWtnZ3J3ZHpzT1pveERSRW1UZjBMR1VTVm5vVEdVVnpFU0tEOWtlRkU1QlZpWUdDQXBrdERoQ2tnczVBQjZqaVhLTkdyMERpS2k1alNoQ2RGbFpWRVhpSFNjNlVud2hUd2hhd2ZHa2R4RVZPTzgyZlBoaWRGbGZWRWFrN1NRNlVud25Ud2hUUUJqYU80aUNsQjhyQ29zcEpJemNQNjZrclNwS3JJMDhIRVFnWlJwVmVoY1JRWE1VVkpQeW1xckNleU01TnVVaytFcVNHMmtNdExpOVI2TGxHbFYrbnZQMGpqS091WG56eUpwRUxRdzZMaVNpSTdHOVNobnNoVFEyd2hBOVI2TGxHaWg2RnhGQmN4K2FFbkZhVEtlcUtEL2RoYVg2TU9sZXp2NjBPa0dsWVc4Z25wNzVIUU9MNy9yUmthUjFuLy9tR1IvK3ZSWTBxazRrcWlpZjJnM3ZSRW5pWldGaktJS2owTWphTzRpTWtEUGFORXFxd24rbWdQTmFibnphVkZSR29pdVpBQnVvWmNva1FQRS82a1IrTW82OTIzbHBDVURYcEFKQlZYRXEyMElmNWxURFVpVWhteGhiei96bkw0TDExRFhtT3BYb2JHVVZ6RVpJT2VEa21WOVVRM2UwRXRxWXBJWllUZklVdCtHaUdxOURBMGkrSys4ZEk4a3ZhREhzMmVVbkVsMGRBdXFCbFZFYW1QNUVLR2UzZmd3QUc2a3J5aVZnK1Rua1VORWRNUmVpanRwTXA2b3EySG9XWlVSYVErOGd0NWUyT2RMaWFYcU5YRHBBZFJ3eXdmYnFXSDBrRXFyaVRhU2tGdHFJcklTaEJleU04LzN2UTN5ZktrWjFGRHhMU0JIa2RucWJLZWFLN0Yrc295dGFFcVVpdEIrTStRNGNhRmhTei9GN1VvMTZ1a0IxSER1MisyL1hEcnpKblQ5Q3oybFlvcmlmNWFVQU9xam8yT0lyVVM1QmN5NkcrUzVVa0dVVW5FN0lJZVJCYXBzcDVvc1h0L3Z4clFXc2lSNFdHNnNMeWlZcStTVEtHU2I3eTR4NGRiNlJGa2w0b3JpUzViVUFOS2JsYitDV1RDQ3htSTk2NzhtMlFRRlh1VlpCQ1ZSRXdLdXYvWnBjcDZvdEdxRmhKaEZhSzFrSU1EZmI2VEpVbW1VTWxuTms0aXFRWGQrYnhTY1NYUmF3dHFRRU1rVllqOFFnYml2UXNMT1Q4N1MxZVkxMGVuSGtIUjN1UDI4blF5aUVvaUtXU1YrOHVxSUZYV0V4M3JMeVJpcWtWeElZTTk5U2I1NnZmT0p4Y2V2YlB5R0Y0ckNoVVU5L0xzUkF5aWUxNU1LcTVrYkRoQ0RjaUtqR3BSV2NoQXZIYzNMeC92a1oxTXhtVlBjVkIrcUk2R1NKSVlicXFzSnpyV1hFZ0VWSTd1UWdiRFFvcnM1SkhEaDFIYUhqTW5EeWZYMjBFY25STXFJdTdra2FFWVJEZThtRlJjeWRodzRORElDRFVnSlFJcVIyc2hBOG50azlySklFb2JJN25TTE9LY3pORHBHaUxKM3lSM1JPazZxR0loZzJFaFQ1NTRqQzY3bUtodWh2UmxaaGNuWjRQT0ZiZS8vMkFNb2x0ZFRDcXVaR3c0Y09YaVJXcWd2Q2hkQjRvTEdVamZRYWszeWVEd0VINlhWVHZwQzh3clNtU0FUdFFRU2Y0bXVibHhZZTQ4NnRhQjdrSUdrdHYzejN0Ymdqc1pSRURsSkovY21GeGFZV09kTE5DSjRpSkdZcmczYjYxU2NTWFJzZlJDb21oTlZMZVF3ZmpaQXJKZjBCWXhWWkVrcHErcmpMSGF2dEJaR2lLcE9XK1NYOXpiUXNlaU80bUtOYUcra0lIMFRSd2EvR1luKy92NzZTNlVGRWxxakk2T3BvUFNWMVRlV0xNekMrY242U3h4a1NReDNPdkwxNm00a3VoWWJpRlJyajZxV01oQStpWmV2M1FzL2lMZGkvSU9EUTdHeWxLTWpXRVBvL0VYMDljaVphemNHVHBGUXlRMTUwMFM3YmFnQm9xSld2VlIwVUlHMHZmeHl6L2hDMm5UN1pCeW9jVDNuTHc0UDBmVmdyYzMxdU9yNmF1UU5kYnZBQjJ2SVpJa25zdnR0YXRVWEVsMExORXpDdFZLZFFzNU10eXZkeXV6T0Q4N096MDFOVEUrZnZ6WTBTc1hMOUNySFVTWCtpdUJtUGJROFJvaVNlS2hVR1VsUjBjRzBISHBubEdsVnFwYnlBRGR5aUJlcUdvbjgzcGo4VnBzNzhGN0s5UzVrakd1SFhTd2hraVNlQ0pIeGdhcHVKTG91RnpQS0ZFM2xTNWtnRzVsRks4WlcwdjBWTWthSk43NzVVMmt0b0dPMXhCSjVSNUgvTjRRVkZuSjJHMkUyc2d1enErYnFoY3lRSGN6aXRkYTBKMnFYdlJSN1NwRzF4ZW5rTjBHT2w1REpFbTg0Y3pQakZOeEpXTmNnTnJJS0U0MlFBMExHYUM3bVlpWFc5QXRxOERIcGg5Rjl2YjIwK3NucUxjS3pQSUZHc1BHMGxrYUlremlEWWNxSzRtd0Z0UkpGbkdtQWVwWnlBRGQwTFE0b2tWZlh4L2RPM0ducHg1NlU3cjcxaEwxVTVub1lEL29MQTJSSlBHRzg4ekdTU3F1SlBMeTl6eC9maFpuR3FDMmhRelFEU1Z4VUFxNmoyVmNYTGlDb2ltb2dTcjlUNTV2cUVybktva3dpVGNjcXF3a3dscFFQNTNGT1Rhb2N5RURyenpQLzhxZWZPZlZQVFluY0dsK25tNXJCeTlmNlBRTkxTaXhlajk2K3pwYXlReFYwQkJKK1JjU3A2VjQ0NlY1S3E0azhud2hTMEszdFowNHVqUmpod2FvY28yT0h5N3kyVVZVUkVtRVNjdzNWVllTWWR2Ym80Y09VVmZ0eEFsbU1MR1FBYnF6V1J3ZTZzZko3VGsxUGZxWDM2M1JpWFpFbDRXZ1Vob2lLYzlDVG95UDQ1eUgrZjNQRnFtNGtzakwzRE9PTm9PVmhRelFuZTE2Y2RsRm9XcEtJa3hpdnFteWtnamIzbDY0ZklsNjJ5ME90WVNoaFl6US9lMVdjYlhsb0pvYUlpbmJRcTZ0ZlBOTmV6dEF4WlZFV0lhZWNad2x6QzFrZ081dmwzbjc1alN1c3pSVVdVbUVTY3czVlZZU1lmczFqSU9NWVhFaEkzU1h1ME5jbXh4VVgwTWtDYjNoVUhFbEVkYXhaeHhoRExzTEdmanEwenQwbzV2ckV6ZisvMmxBc2xDUWhrZ1NtbThxcmlHUzJqYzhNWDRFUnhqRDlFSkc2RjQzVVZ5SkRwU2xJWkthczVCQmhMWHBHYS9ab3dFTEdhSGIzUlRSdlRJVXFpR1NoT2FiaW11SXBMMGEzbHBmdzJ2MmFNeENSdWltV3hZZFZ3V2xpNHNZdVRjY3FxOGhrbmIxakY4MVNjTVdNa0wzM1pyb3NuS29EWEVSSXpmZlZGOWN4UGhDVnNQeHlXRjZBUFg2OVlNNzZLd21KZzdyL2d0OXhJak9OMFdJaTVoVXovaTVWUnE4a0dub01WUXNtckFCOVNZck1xVG5tMUlFUllBdlpGM1E4OUR6L2p2N2ZGWktqVkNyZ2lKZ2UvdjgyYk95ODAxQmdpS2d0WlA0a1dHNmJTSFQwSU1wNzcvdjUvaFhpL1dpOXhVUEVOQ2E3NzYrUHZ4RUNNb1NFYVY5SVEzeTJkMGNYNXZ3TnorK2l0TWF5OVRSRWJxbzhxTDA5alo5cFFWQkJnZjZLTFNrcU5zRWVtc2hlNXdYbjM2Y0puVmZYMzlocnRpLzJIU0s0UXZwT0lid2hYUWNRL2hDT280aGZDRWR4eEMra0k1akNGOUl4ekdFTDZUakdNSVgwbkVNNFF2cE9JYndoWFFjUS9oQ09vNGhmQ0VkeHhDK2tJNWpDRjlJeHpHRUw2VGpHTUlYMG5FTTRRdnBPSWJ3aFhRY1EvaENPbzRoZkNFZHh4QytrSTVqQ0Y5SXh6R0VMNlRqR01JWDBuRU00UXZwT0lid2hYUWNRL2hDT280aGZDRWR4eEMra0k1akNGOUl4ekdFTDZUam1HRjcrMytxWU1KWnBneDV0Z0FBQUFCSlJVNUVya0pnZ2c9PSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzEiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImNyZWRCbG9iIiwiaG1hYy1zZWNyZXQiLCJsYXJnZUJsb2JLZXkiLCJtaW5QaW5MZW5ndGgiXSwiYWFndWlkIjoiMjMzMTVhZDA2YWNhNGJhMTk1MmVmMDQ0ZjFlMzY5NzYiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJsYXJnZUJsb2JzIjp0cnVlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOnRydWUsImFsd2F5c1V2IjpmYWxzZX0sIm1heE1zZ1NpemUiOjEyMDAsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6MjAsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4LCJ0cmFuc3BvcnRzIjpbInVzYiIsIm5mYyJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5IjoyMDQ4LCJmb3JjZVBJTkNoYW5nZSI6ZmFsc2UsIm1pblBJTkxlbmd0aCI6NCwiZmlybXdhcmVWZXJzaW9uIjoyNTcwLCJtYXhDcmVkQmxvYkxlbmd0aCI6MzIsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjoxLCJyZW1haW5pbmdEaXNjb3ZlcmFibGVDcmVkZW50aWFscyI6NTB9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0xMi0wOCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyNTcwLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IkNsaWZlIEtleSAyIE5GQyIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjUxMjA4MDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25Qcm9maWxlcyI6WyJjb25zdW1lciJdLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTEyLTA4IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjI1NzB9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMTItMTkifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyI0ZTI5ZGYwNWE1OWMxN2E3M2M3ZWE2NGE5NGZkZmZmMWY5ZTlhZTBmIiwiYmYxMjM2NWFmY2IxNGQzZGQ4MjBiZTdlYzRiZTE2M2NiN2M4NWRlMCIsIjE2ZTc3NDk2NDUwYjIwYzMyYzBiZGVjMmEyNGIyOTE3YmYxODE1ZjMiLCI4NTlkZjA3NzQxMjlmMDJiYzQxYmZiYTkxZjNjYmEyNzFkYTdjODY2IiwiZWM5ZjcwOTg3OGRkMTRkYmI2NzZiYmU0OWYxNDA1ZWM3NzBkMDJmMCIsIjJjYzFhZmJhZTA4NTY5YTVkZTA4ODk4MjRlNWM0MDRkMzU3MjFhZDMiLCI4ZTkwMDAzN2QwOTVhZDdhOGFkYTZjNGMxODE0M2I3ZGJlYjQ0Njc0IiwiYjg4MDIzZjI1NDVmZGQ2ZWE2MjA2MGFiODlkMzMyOTQxMzJiOWJjOSJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyI0ZTI5ZGYwNWE1OWMxN2E3M2M3ZWE2NGE5NGZkZmZmMWY5ZTlhZTBmIiwiYmYxMjM2NWFmY2IxNGQzZGQ4MjBiZTdlYzRiZTE2M2NiN2M4NWRlMCIsIjE2ZTc3NDk2NDUwYjIwYzMyYzBiZGVjMmEyNGIyOTE3YmYxODE1ZjMiLCI4NTlkZjA3NzQxMjlmMDJiYzQxYmZiYTkxZjNjYmEyNzFkYTdjODY2IiwiZWM5ZjcwOTg3OGRkMTRkYmI2NzZiYmU0OWYxNDA1ZWM3NzBkMDJmMCIsIjJjYzFhZmJhZTA4NTY5YTVkZTA4ODk4MjRlNWM0MDRkMzU3MjFhZDMiLCI4ZTkwMDAzN2QwOTVhZDdhOGFkYTZjNGMxODE0M2I3ZGJlYjQ0Njc0IiwiYjg4MDIzZjI1NDVmZGQ2ZWE2MjA2MGFiODlkMzMyOTQxMzJiOWJjOSJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiU2VjdXJpdHkgS2V5IGJ5IFl1YmljbyJ9LCJkZXNjcmlwdGlvbiI6IlNlY3VyaXR5IEtleSBieSBZdWJpY28iLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCIsInJlbW90ZV9oYW5kbGUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlESGpDQ0FnYWdBd0lCQWdJRUcwQlQ5ekFOQmdrcWhraUc5dzBCQVFzRkFEQXVNU3d3S2dZRFZRUURFeU5aZFdKcFkyOGdWVEpHSUZKdmIzUWdRMEVnVTJWeWFXRnNJRFExTnpJd01EWXpNVEFnRncweE5EQTRNREV3TURBd01EQmFHQTh5TURVd01Ea3dOREF3TURBd01Gb3dMakVzTUNvR0ExVUVBeE1qV1hWaWFXTnZJRlV5UmlCU2IyOTBJRU5CSUZObGNtbGhiQ0EwTlRjeU1EQTJNekV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRQy9qd1l1aEJWbHFhaVlXRU1zcldGaXNnSitQdE05MWVTcnBJNFRLN1U1M213Q0lhd1NESHk4dlVtazVOMktBajlhYnZUOU5QNVNNUzFoUWkzdXN4b1lHb25YUWdmTzZaWHlVQTlhK0tBa3FkRm5Cbmx5dWdTZUNPZXA4RWRaRmZzYVJGdE1qa3d6NUdjejJQeTR2SVl2Q2RNSFB0d2F6MGJWdXpuZXVlSUV6NlRuUWpFNjNSZHQyemJ3bmVid1RHNVp5YmVXU3dienkrQkozNFpIY1VoUEFZODl5SlFYdUUwSXpNWkZjRUJiUE5SYldFQ1JLZ2pxLy9xVDlubURPRlZsU1JDdDJ3aXFQU3psdXduK3Yrc3VRRUJzVWpUR01FZDI1dEtYWFRrTlcyMXdJV2J4ZVN5VW9UWHdMdkdTNnhsd1FTZ05wazJxWFl3ZjhpWGc3VldaQWdNQkFBR2pRakJBTUIwR0ExVWREZ1FXQkJRZ0l2ejBiTkdKaGpncFRva3N5S3BQOXh2OW9EQVBCZ05WSFJNRUNEQUdBUUgvQWdFQU1BNEdBMVVkRHdFQi93UUVBd0lCQmpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQWp2anVPTURTYStKWEZDTHlCS3N5Y1h0QlZac0o0VWUzTGJhRXNQWTRNWU4vaElRNVpNNXA3RWpmY25NRzRDdFlrTnNmTkhjMEFoQkxkcTQ1cm5UODdxLzZPM3ZVRXROTWFmYmhVNmt0aFg3WSs5WEZOOU5wbVl4citla1ZZNXhPeGk4aDlKRElnb01QNFZCMXVTMGF1bkwxSUdxck5vb0w5bW1Gbkwya0xWVmVlNi9WUjZDNStLU1RDTUNXcHBNdUpJWklJMnY5bzRka29aOFk3UVJqUWxMZll6ZDNxR3RLYnc3eGFGMVVzRy81eFViL0J0d2IyWDJnNElucGlCL3l0LzNDcFFYcGlXWC9LNG1CdlVLaUduMDVac3FlWTFneDRnMHhMQnFjVTlwc215UHpLK1ZzZ3cyamVSUTVKbEtEeXFFMGhlYmZDMXR2RnUwQ0NySkZjdz09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWZDQVlBQUFDR1ZzK01BQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBSFlZQUFCMkdBVjJpRTRFQUFBYk5TVVJCVkZoSHBWZDdUTlYxRkQvM2Q1OXdlUVNJZ1M5QVFBWGNGTEFRWmk5ZnBlVnoxdFkvV1RacjVXeHBjN1c1a25MYTVqSTNaODVzclMybk0yc2p0V3daUzdJVUg0SDR4Q25FUXg0REFaRjc0Vjd1czg4NXY5L2xJbkJ2VkovQjRQdjludS81bnUvNW52TTU1NmZ6QS9RdjBIYi9JclgzVkZLUG80NWNubTRpblVJV1l3TEZSbVpRVXV3akZHL04xaVJIaDFFWjBOUlZSdWRxdDFCZCsyblNLeVMvT2h5czArbGszZS8za1E5cXZENFpVdGE0VlZTVXVZMGVpcHlpVGhBZm9jb09SVmdEdXV3M3FLUmlBZDNyYmNFdGpUallJb2Y2V2FIc0NtelZQV0NNeCtjZ2g4dExxV01LYU1Xc1VqTHFvMlJ0SklRMG9Pem1lcnBRdTRlc1pnc09Oa0d4SDdkMGtkdlRUMTdzNE9NVTdWSThaaGpnR2FNK0FxOWlFTnU4UGlmMXVkejA3TXd2S1dmOEdsVm9DRVkwNFBDNVdkVGFYWUZiUjh2TnZMNSszS2dmYjV4Tk15YTlSYW1KaXluYU1sR1RWdEZscjZiYTl1K3BxbkVYNHVNdVJSZ2pTWUVock43dXRGRmU2bHFhbDdOZmt3NWltQUdIeW5QcGJrOFZtWTB4c3RucHRsRkNWQ1l0elR1Qk44M1FwTUxqVHRldmRQelNVbko3ZThta2p4WjM5ZlhiS0RmbGRacWJ2VStUVWdHbkJWRjZmUTJpUEhnNFcxNlVXVXd2emJrMTZzTVpFK1BuMHB2ejdKU2V1QXllczhsY3BDbWFLdW8vcCtxV3IyVWN3SUFIV3J2UDBZRXpoWEF0TEFic3NIaHA3aUdhbXZ5aWpQOHJ5cXJYVVdYOVhvb3d4eUF1Zk5CcnA0M1BPQkZYWmxrZjhNRFJpcWNweW93QXdwdXoyeCtmV3Z6L0R0ZGU5c21zenlndGNSNkMxd2JkekJsNk9scTVXTllZNG9HYXRoSk1ya1RFeDBqQVJTSEFWcys1cllrUU5YYitRZ2ZQTHNRNmdYeUluc3JlUWZtcG03UlZGWWZMODZuMWZpVU9rWXZTaGtVUHh2YnVrem95NksxaWhNMWhvM1h6VzZFdlNmWEErZHBpV0dhV2QrZG9Yekx6bUd3S1lGTENBc1JBbFBCQWhNbENGWFU3dEJVVlByOEhnVmNKSFdxK0YwMHBscitETVRkclA0enZ4WTExa05NaHhUK1NlVEdnK2Q0VjVMUUppdHlVR0pOQjhWRlpzamdZQlpNL0lJL1hDVGtqMHF5RE9wRjJBVlExN0NJalVwL0RuVDFVa0w1RjVnZGorc1Mxd2cxZ0UzZ2lnbTYwZkNYelNuUFhieUFQYklYditJRHBFMTZUaGFISVM5c2t5aGxtTUU1RjNjZnFBS2hxMkMwRTVQSDFnWWFYYUxQRGtaRzBIREpPbktXSHA1MUkwejVTT3V4OGUxV0F1WnpkSFFyVGtwOFRtalhvSStsYTB3R1pzenVicWJPM2lmUTZBL1c3dlZTWXNWM21SMEpLd2tLYzRXSGlCa21SOEkzQ0NnSTg3b09MNHF6VDVQK1JVSkJlakVPZ0FQSzhoWVB6YXRNK2VJVHAySU85eVRRbWVyb21QUnh4MXF4QWNzaWxlL3ViU2VFYmNXUUdZRUNnaGNMWTJIeUtqb2dqSDI1aE1wanBVdjFPdWdsaTRlaDJlUncwTzMyYkpqa3l1Q2dOemcwdnpsWU1TaVNzMHVvbzRNRzdoTU9qQ0VhWDF5RkUwblN2akJ6dVRuRXBLODZaOElvcUZBSXVidzhrZzlBckVhUkVXU1pJK2pINFhicDZnOUU5RW5KVDNvYVJ6RE4rTVVKQlFESG41NmE4b1VtRUJ1c094QnMvTjUrdEpFYlBrQUZEajhVR3ZPcy9JV3ZjU2dsR0JodlM3L0ZUWWZwV0dZZERZOGZQQXhXU0EzNXNUQzRwNCtMbTRBYXFJb1BlUXRmdWZLNkpoMFpoeGxic1VYT1NtWE5pZkQ1WlRBa3lEb2ZiYmNjbHhuQThXTkFxeENiUk55a2hYeFFwYUR3NjdmWFVZYnNpRzBLaHR2Mm9lSXZoOHJoUU1ZT2NFQXFYRy9lSSt6bmdPYzV5eHI4cTgySUFNMWMvRkxGT3BscXU1ZUZRWHJNWnpHY1ZDalliTFdHNUk0QlQxZXVScmxieHROT3RNaXREREVoTFhJSXluQUF2dU9FV0UzWDNOZEFmdDk0VmdhRzQyWElRdDBaWDZQZUNFL3FRRmU5cks2SHg3WVU1MEt2SDdmVzRmUytxN0tLQkp4c2dnQlg1cFNBR2gxaklyVmg1elE2dzNSZmFhaEJYbS9hQ2JDWlRqQ1VGVVR5V1pxVzlwNjJNakpQWFZxT3JQZ01PNE52NzRHa2Yrb3dmdE5WQkRRbmpGSnFIU3cxN3BYdmhXVzVLWnFlL1E0OU4vVVNUQ0FWV29RWEZJSEJIWFhlM0ZQclVEc3VHRG10Ri9oSEtUSHBla3hoaUFPUEkrU0pxNlM2SEY0STlZV3prQkpUbzQ2aVVNeldwOFBpci9SaWR1THhLWXNTa3NWOHZMbE9RdmhHWDJZbFIwT0JoQmpDK3UvZ0VjdlkwQXBLN1lrNDFOeGpQU1FuV0ZIVEY2NlVyamdldkI4Q3U1YStsMnZZU1JQdHVWRG83M2hoZE1TSG5VWDd0VGpzVlpHeEFsL1dwdGlPSUVRMWduTDI5bVg2L3RSMXRtbGtZajhXNFgrQ1NqV2NVREdZMU5wUy9DN2hTS3FpTUxNL2wyUW1TV1o3M0RkeitnaW84QkNFTllQUTQ2cW5rendYVWJxdkJreGpVUXNXZlpGZ2J1bzNyQWYrd043ak9POTAreW54NFBpM0wrMG5ZTDFTY2hEVWdBUDRnUFYvN0lkMXErMUhTaG11R2tJcVdSUGd5eE1GcVA4SGZqVG5qWHdZNWJRZmJKY3Q2T0l6S2dNSG90Ri9IZTFlZ3NheEhTcUc2d2ZkbVE1eDhOeVRGRnFCY3AyaVNvd0hSM3lrNSszNmhGN3ZYQUFBQUFFbEZUa1N1UW1DQyJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIwLTA1LTEyIiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJTZWN1cml0eSBLZXkgYnkgWXViaWNvIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVMkYxMTAwMjAxOTEwMTcwMTAiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMS4xIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjMifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjAtMDUtMTIifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIwLTA1LTEyIn0seyJhYWd1aWQiOiIxZDFiNGUzMy03NmExLTQ3ZmItOTdhMC0xNGIxMGQwOTMzZjEiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjFkMWI0ZTMzLTc2YTEtNDdmYi05N2EwLTE0YjEwZDA5MzNmMSIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJDcnlwdG5veCBGSURPMi4xIn0sImRlc2NyaXB0aW9uIjoiQ3J5cHRub3ggRklETzIuMSIsImFsdGVybmF0aXZlRGVzY3JpcHRpb25zIjp7ImVuLVVTIjoiQ3J5cHRub3ggQ1RBUCBGSURPMi4xIn0sImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxMCwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9LHsibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjowLCJibG9ja1Nsb3dkb3duIjowfX1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNRVENDQWFLZ0F3SUJBZ0lHQUlGRFVYUXJNQW9HQ0NxR1NNNDlCQU1ETUU4eEN6QUpCZ05WQkFZVEFrTklNUTh3RFFZRFZRUUlFd1pIUlU1RlZrRXhGREFTQmdOVkJBb1RDME5TV1ZCVVRrOVlJRk5CTVJrd0Z3WURWUVFERXhCRFVsbFFWRTVQV0NCU1QwOVVJRU5CTUI0WERUSXdNRFl4TkRBd01EQXdNRm9YRFRRNU1USXlPVEl6TlRrMU9Wb3dWekVMTUFrR0ExVUVCaE1DUTBneER6QU5CZ05WQkFnVEJrZEZUa1ZXUVRFVU1CSUdBMVVFQ2hNTFExSlpVRlJPVDFnZ1UwRXhJVEFmQmdOVkJBTVRHRU5TV1ZCVVRrOVlJRWxPVkVWU1RVVkVTVUZVUlNCRFFUQjJNQkFHQnlxR1NNNDlBZ0VHQlN1QkJBQWlBMklBQkdoY2lrdVJZZ05rYWswcE84WGdQV3dHOVJaWExRZXFRRXZLSGZDbjM3Z2FSNVU5cmhwNFc4SlRiZlU5dDhDRmdEMER4TlhFSkU5S0dObkxBdEw3MDhoQ0hlbzZTNW9lem5HREZuOUo4MGJPN2JkU0RZSFM1YnprRUtQTE51YW1XS05GTUVNd0VnWURWUjBUQVFIL0JBZ3dCZ0VCL3dJQkFEQWRCZ05WSFE0RUZnUVVkckV0VXlXYU10cFZBUTdKR3FRcDNqek5TaGN3RGdZRFZSMFBBUUgvQkFRREFnRUdNQW9HQ0NxR1NNNDlCQU1EQTRHTUFEQ0JpQUpDQWJXYS94Y0t4N0tDY29Vc3A4U1ZabldTeEQ4bjkxVHFDSkthanM3a0pCejJEenZaWnRQeEtzTVkzOGxILzhNWVRDM3dsUndkWmM1czYxRWhsYmRuT2d1QkFrSUJGbUpMc09QeU1RV1V4bVdsMnp1QVM3Y3RxVTAzVTc0QzNVVUhTS0RIM1dTSkgreTNpL1hzQ3MvRk0rRGsvM0ZqT2dRVHhpb2FxSWMzaHJ3aFBsbW9yTm89Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUVBQUFBQkFDQU1BQUFDZHQ0SHNBQUFCaFdsRFExQkpRME1nVUhKdlptbHNaUUFBS00rVmtUMUl3MUFVaFU5YnhTSVZPNGlJT0dTb0xscVFLaUk0V1lVaVZDbTFRaFdYL05TMjBLUWhhWEZ4RkZ3TERxS0xmNHVqa3k0T0RxNU9naUtJazRPNzZLSWxucGVJTGRJT1BranVsOE85SisrZEIvalBTNnB1ZDR3RHVsR3gwb200bEYxZGs3cGVFRUlRM1JqRmpLemE1bXdxbFVUYjlYRVBuNmgzVWVHRi82MGVMV2VyZ0U4aUw2bW1WU0diNUtuTmlpbjRqTnluRm1TTmZFVWVzN2hCOHF2UUZZKy9CT2RkOW9jRlc1bjBIRGxDRHVlYldHbGl0V0RwNUVseVJOTU4rdnV6SG11Q3Q4Z3h2VlJWZi9ZcFRoaktHU3ZMUXVjemhBUVdzSWdVSkNpb29vZ1NLb2l5R2xTU2JzMUJoc1V2RzJsMng1bHhhNzlCMXk5RkY0VXVSYWljbVVjWk91ZUZEOFNkL00zYTNwaUllVTRoT25jK084N2JNTkMxQzlScmp2TjU3RGoxRXlEd0JGd2JqZm55RVREOVRyM1cwQ0tIUU84MmNISFQwSlE5NEhJSEdIZzBaVXYrdlMzKzI4dU5LeUJlcHc5QWhsa2xiNEg5QTJBa1Q2LzFOdWNNTnVmV3BxZmY3V21aSC9BTmhjdDBTT3doNXBBQUFBTEJVRXhVUmYvLy8vdjcrL0h4OGV6czdPdnI2KzN0N2ZUMDlQNysvdHpjM0oyZG5XbHBhVDQrUGlNakl4WVdGaEFRRUE4UER4RVJFUm9hR2lzckswNU9Ubng4ZkxXMXRkM2QzWUdCZ1FBQUFBZ0lDRWxKU2FLaW92RHc4TlRVMUZsWldRb0tDZ2NIQng0ZUhrTkRRMTVlWG0xdGJYQndjR3BxYWpzN094Y1hGd1VGQlJrWkdlbnA2V3RyYTJKaVlxeXNyT0xpNHZ6OC9ObloyWjZlbmxKU1VnME5EUk1URTR1TGkvYjI5clMwdEIwZEhRSUNBalkyTnFhbXB2UHo4Ky92NzlQVDA4M056ZGJXMXVYbDVmTHk4dXJxNnBHUmtTUWtKREV4TWN6TXpQMzkvWHA2ZWljbko2NnVycWVucDJOall5NHVMZ0VCQVFNREE3aTR1UG41K1pPVGt4UVVGQXdNREphV2xsZFhWM2w1ZWZYMTljdkx5MTlmWHdzTEN4Z1lHT1RrNU9ibTVsUlVWSEZ4Y2ZyNitrMU5UYnE2dWg4Zkg0T0RnNGlJaUg5L2YyZG5aejgvUHhJU0VvbUppZmYzOTQrUGo1U1VsRmhZV0NrcEtkcmEyakl5TW82T2p2ajQrTDYrdm1ob2FEUTBOTEd4c1gxOWZiYTJ0b1dGaFJVVkZaQ1FrTXJLeWhzYkc5dmIyems1T1lhR2hsTlRVekF3TUNFaElTVWxKVG82T21WbFphR2hvZWZuNStqbzZHQmdZSEp5Y2h3Y0hNSEJ3Y2ZIeDFCUVVJS0NnbHBhV3QvZjN6VTFOVlZWVlFRRUJGeGNYTzd1N3REUTBETXpNK0hoNGFDZ29FcEtTcnU3dTVLU2t0ZlgxOFRFeE1iR3h0N2Uza1JFUkZaV1ZxdXJxd2tKQ1plWGwzaDRlS2lvcUR3OFBMS3lzbzJOalNBZ0lGdGJXNysvdjBoSVNKaVltTTdPem5WMWRZeU1qSitmbjVxYW1rSkNRbEZSVWJ5OHZHRmhZUVlHQm5OemM4L1B6NFNFaE5IUjBiMjl2Wm1abWJtNXVkTFMwaVltSmkwdExRNE9EdURnNERjM043Q3dzTURBd0dabVppZ29LRVpHUnNuSnlUZzRPSldWbFV4TVRLU2twS09qb3lvcUtvZUhoK1BqNDZtcHFkWFYxVWRIUjhqSXlKdWJtMTFkWGJPenMzUjBkRzl2YjI1dWJyZTN0MFZGUlV0TFN5SWlJcVdscFVCQVFDckEzTllBQUFBSmNFaFpjd0FBTGlJQUFDNGlBYXJpM1pJQUFBVWhTVVJCVkZoSDdaZnJYNVJGRk1mUEl2Qlk0c3BsdGQ4YUFSb29peGNXeE5RSFVXUU5lU1RkWjExREFsY2x2THVTTjFiTkJBV0ZOTkhNdkpDM3NpUXZYZEFTTDVrbXBpbVcyVVZMeTdTc3pQNkt6ck1NK3FIUHN3djdwdDc0ZlRYem16UHpuRGt6Tytjc1BlUS93QkRVSVRna1ZCSzl3SkE2UHZKb3A3RE94aTdoRVpGUnBxNUJRbTR2M1I2TFJDdk0zUitQRm1OdEl6MFJFNnROaXV2Ujg4bjRoRjR4dlJNdFdqZkoxRWNZdEVGdzN6ZzJUK3pYUDdsbDg5YVUxQUZwckExOGFwQlEvQ0FOSGdMSTZVTXp1RzBkbGp3OGMwU1dUVnRvNU5QWnZNU29ISytSSDVUUjdHN3VNd2FpWVdQRzJzTlZudVRvbko0d3pra1VPdjVaSUcrQ01QUkJSajV2L2JrQ2tnb251bmp1ZmRSSnBzbEVVNHBVcU04WEMxczlCazNselUrVHFGdStGamJIOUtpRUdUTm56WjdUUlhQRVBiZUVEQzlZb000VHhqb1V6d2NXTENURFBJNll1cWgwb1pESnMzZ0plNCtsdzRsZU5IYnlmWnpTTWhXNWt5azZueDFOZjhucnFlSXBjWHJQSW5oNUdaQldicVVWSVZwWG42NFdyS3lna1pVY3FsS2VydVNzV2wxVlBlVGxOV3RmV2Nlak5ldGxxQnVVWmxOZE9yd0s4MGFLN2cxVTgyR1ZwTm9kV3ZpOHhCYTlKbEdCSGRoa0ZjWjY5QVZlSjlyTVlkaENsTGxWbTJnZU5YVmI5OGhhYmxuZVdMY1dXTFJkMk9xeHc0eWRIcG9BaE8waWFiY1pjRzBlMTN6eGd2cS95WWZDdDNzSXIreWJHTWh2VVRjMzh0ai9QUmJJbTk0V0E0enl6bEwySW0rdjZPcFNaOEc3VnRyblBlYjl0VGh3c1BVcjRIblBZWGxmdFBVeFFSMU1oUlo4NEtRVU44d2ZDdmsreXBoNnZ3K0xKeGVIREhRWStJaVVqeUVmRVhMN2FWQnhsR3J5VUNuUllCbXIvUjIzUHNlMGJ4OEhUcER5Q2N3VlFnMkFrM0NIY0Foamt5bEZ4bm9oQmtJWUZrbldRNmlTMkJmMVV5RUdnQzBQOHluTGhWTkVVeEZ1RTJvQTFKM0daM1JHUlNNcFlkZ3F4RUE0NjhBTStodzRSMEZsT0NuRVFNaVVNWlBPQThkcHV4c3hRZ3lFTHh6OFMxd01IQ0ZiR2FLRUdBZ2Nnd1Rhb2ZJcTBnVkVDakVRK0JTS2FJb0xFNG1LNE1vU2FpQms0NktrVk1NdWFTOUNxaEFEb1FoTmZXZytZaS9SNURoODZlL2g4a0VwTUU3N0xad2phUnZ3bFZBRFlMZ0R2YWhQR3RJbHlvbEQ5VWdodDUvaWkwanlTSWVoWGliNkdvamk1UGh2ckR0RVE1K1p3QmpLcVVWdkoyMi9BcHp5Q1AwK0tkK1l2eFZOWFdwYytLNlk4cUYrencrMEc3aGFJd2FhQ1cxczRsZTlRUFIwaVllNlgzdVYwOWpUalFPQkh0Y2ViTVA1d3dVdFRXQ1c2T3VTN0VaMk5LV3F5TjdGUHk2ZW9QNVlQeUtVTTZidGJHTVlwMmZqNkhBY1dDR01kYmtPeEV0U1A4QitnL1BjYkMyeE9TSXVwa2RPa3JYVytpMDBEMXJxOFkxekorU2ZxSVJMaE9uYWh4cjJQU2d4aktkK1pzVjZzNDFObkVtRDhSZkt1TXA1L0JoblorbkdyZHRWaVUwUlM4ZGUwOHF6dWdMcTZJYXJzTmxXbjkwT0pKNmxrcjdzODg1ZlcxL25Eck9hZmlPNnBmcmZoR0pTa1hpWmxLR0pYS2paU3l0YXFxSFF2ZkZjb1pnenljRGVjUWIzamZVT0orVVRDbVV0T2MwN3I4MGRjSFJ1L2ZMZmI2N1U0cEIwMEVNR0U0ODNDR05kckNZdVE3WWxFMVhjaWRCbXRlQ3dqN2VSdExlU2o3T24vNndqbmVEWWw5WHorZHYrMkxERzZKQmx1VGJwWm1NaDd5YmxOcnZWVk42eUw1ODBWUEVYVjE3bjI4U0UxS1ZjMG1wV0tyNGN3MFdHdktuT0svc250TkhJUzdqK0xNKzBOVjltWi9ENW8xZjRYcWxWWGR2NTB0eEkwSmJnNjdCZ1R0VEp1MnYrMGlMS0ozdXZUZThmRUx5bjhvQjNsa0F0dTcxWTU0bndoM1RwWHZ6ZjA3bldRdDZGdTh1bXRmL2ZSaXNVNjZBTWo5VnZhZk9RL3htaWZ3RGtuVTY1UHF2RFlnQUFBQUJKUlU1RXJrSmdnZz09IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMSJdLCJleHRlbnNpb25zIjpbImNyZWRCbG9iIiwiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsIm1pblBpbkxlbmd0aCJdLCJhYWd1aWQiOiIxZDFiNGUzMzc2YTE0N2ZiOTdhMDE0YjEwZDA5MzNmMSIsIm9wdGlvbnMiOnsicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJhbHdheXNVdiI6ZmFsc2V9LCJtYXhNc2dTaXplIjo4NjAsInBpblV2QXV0aFByb3RvY29scyI6WzEsMl0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6OCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoxMjgsInRyYW5zcG9ydHMiOlsibmZjIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN31dLCJmb3JjZVBJTkNoYW5nZSI6ZmFsc2UsIm1pblBJTkxlbmd0aCI6NCwibWF4Q3JlZEJsb2JMZW5ndGgiOjY0LCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6NCwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjY0fX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDEtMTYiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MTAsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiY3J5cHRvdmlzaW9uIGVQYXNzbGV0IFN1aXRlIEZJRE8gQXV0aGVudGljYXRvciB2MS4wIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNTAxMTYwMDIiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wMS0xNiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxMH1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wMS0yMyJ9LHsiYWFndWlkIjoiYmJmNGI2YTctNjc5ZC1mNmZjLWM0ZjItOGFjMGRkZjkwMTVhIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiJiYmY0YjZhNy02NzlkLWY2ZmMtYzRmMi04YWMwZGRmOTAxNWEiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiRXhjZWxzZWN1IGVTZWN1IEZJRE8yIFBSTyBTZWN1cml0eSBLZXkifSwiZGVzY3JpcHRpb24iOiJFeGNlbHNlY3UgZVNlY3UgRklETzIgUFJPIFNlY3VyaXR5IEtleSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9pbnRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIiwiYmx1ZXRvb3RoIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDU0RDQ0FlMmdBd0lCQWdJSkFNOVJ6WXU0RUlJbE1Bb0dDQ3FHU000OUJBTUNNSDh4Q3pBSkJnTlZCQVlUQWtOT01Td3dLZ1lEVlFRS0RDTkZlR05sYkhObFkzVWdSR0YwWVNCVVpXTm9ibTlzYjJkNUlFTnZMaXdnVEhSa0xqRWVNQndHQTFVRUN3d1ZSWGhqWld4elpXTjFJRVpwWkc4Z1UyVnlkbVZ5TVNJd0lBWURWUVFEREJsRmVHTmxiSE5sWTNVZ1JtbGtieUJTYjI5MElFTkJJREF5TUNBWERURTVNVEF5TXpBNU5UQTBNMW9ZRHpJd05Ua3hNREV6TURrMU1EUXpXakIvTVFzd0NRWURWUVFHRXdKRFRqRXNNQ29HQTFVRUNnd2pSWGhqWld4elpXTjFJRVJoZEdFZ1ZHVmphRzV2Ykc5bmVTQkRieTRzSUV4MFpDNHhIakFjQmdOVkJBc01GVVY0WTJWc2MyVmpkU0JHYVdSdklGTmxjblpsY2pFaU1DQUdBMVVFQXd3WlJYaGpaV3h6WldOMUlFWnBaRzhnVW05dmRDQkRRU0F3TWpCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQkhscTJqVVFNYWxIai9CUmVRZWZHaXo0RXZZSnlGTFdQejRSZmhKR0txcWwrOG45NmhUMW01Z1hvVHZvTHJqU1U3WDBjQmVvVHNnaHloMjIreXJzNCtTalVEQk9NQjBHQTFVZERnUVdCQlErOFNHVzJCWGJxYjJkY0FPaVdKT1UrR0NzUGpBZkJnTlZIU01FR0RBV2dCUSs4U0dXMkJYYnFiMmRjQU9pV0pPVStHQ3NQakFNQmdOVkhSTUVCVEFEQVFIL01Bb0dDQ3FHU000OUJBTUNBMGtBTUVZQ0lRRHE4eElXMFpLNXl6M0VBem11eDg4TENUWU8xNTdmVGZ5T2lPekMyQUR5YXdJaEFPMVBXWWxlRmdILzNtdUQ4Y0JBTXIxMWZFS2RGL0FhQzE2ZnR4YWV6TlhIIl0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUl3QUFBQVlDQVlBQUFBb054VnJBQUFBQ1hCSVdYTUFBQjdDQUFBZXdnRnUwSFUrQUFBRklHbFVXSFJZVFV3NlkyOXRMbUZrYjJKbExuaHRjQUFBQUFBQVBEOTRjR0ZqYTJWMElHSmxaMmx1UFNMdnU3OGlJR2xrUFNKWE5VMHdUWEJEWldocFNIcHlaVk42VGxSamVtdGpPV1FpUHo0Z1BIZzZlRzF3YldWMFlTQjRiV3h1Y3pwNFBTSmhaRzlpWlRwdWN6cHRaWFJoTHlJZ2VEcDRiWEIwYXowaVFXUnZZbVVnV0UxUUlFTnZjbVVnTlM0MkxXTXhORElnTnprdU1UWXdPVEkwTENBeU1ERTNMekEzTHpFekxUQXhPakEyT2pNNUlDQWdJQ0FnSUNBaVBpQThjbVJtT2xKRVJpQjRiV3h1Y3pweVpHWTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5MekU1T1Rrdk1ESXZNakl0Y21SbUxYTjViblJoZUMxdWN5TWlQaUE4Y21SbU9rUmxjMk55YVhCMGFXOXVJSEprWmpwaFltOTFkRDBpSWlCNGJXeHVjenA0YlhBOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOGlJSGh0Ykc1ek9tUmpQU0pvZEhSd09pOHZjSFZ5YkM1dmNtY3ZaR012Wld4bGJXVnVkSE12TVM0eEx5SWdlRzFzYm5NNmNHaHZkRzl6YUc5d1BTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM0JvYjNSdmMyaHZjQzh4TGpBdklpQjRiV3h1Y3pwNGJYQk5UVDBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5NFlYQXZNUzR3TDIxdEx5SWdlRzFzYm5NNmMzUkZkblE5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5elZIbHdaUzlTWlhOdmRYSmpaVVYyWlc1MEl5SWdlRzF3T2tOeVpXRjBiM0pVYjI5c1BTSkJaRzlpWlNCUWFHOTBiM05vYjNBZ1EwTWdLRmRwYm1SdmQzTXBJaUI0YlhBNlEzSmxZWFJsUkdGMFpUMGlNakF4T0Mwd05TMHlNMVF4TkRvME1EbzFOU3N3T0Rvd01DSWdlRzF3T2sxdlpHbG1lVVJoZEdVOUlqSXdNVGt0TURVdE1EVlVNRGs2TXpNNk5EY3JNRGc2TURBaUlIaHRjRHBOWlhSaFpHRjBZVVJoZEdVOUlqSXdNVGt0TURVdE1EVlVNRGs2TXpNNk5EY3JNRGc2TURBaUlHUmpPbVp2Y20xaGREMGlhVzFoWjJVdmNHNW5JaUJ3YUc5MGIzTm9iM0E2UTI5c2IzSk5iMlJsUFNJeklpQndhRzkwYjNOb2IzQTZTVU5EVUhKdlptbHNaVDBpYzFKSFFpQkpSVU0yTVRrMk5pMHlMakVpSUhodGNFMU5Pa2x1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2TWpFNE5XWXlZbVl0T0RWbU9TMWpaalEzTFdGaU9EY3RPVEZqTTJJelpqQmlOemhsSWlCNGJYQk5UVHBFYjJOMWJXVnVkRWxFUFNKaFpHOWlaVHBrYjJOcFpEcHdhRzkwYjNOb2IzQTZaV014WlRnM01qRXROek0zWVMwd05UUmxMV0V6WVRrdE5URmtNVE16TkRabFpUSTVJaUI0YlhCTlRUcFBjbWxuYVc1aGJFUnZZM1Z0Wlc1MFNVUTlJbmh0Y0M1a2FXUTZNakU0TldZeVltWXRPRFZtT1MxalpqUTNMV0ZpT0RjdE9URmpNMkl6WmpCaU56aGxJajRnUEhodGNFMU5Pa2hwYzNSdmNuaytJRHh5WkdZNlUyVnhQaUE4Y21SbU9teHBJSE4wUlhaME9tRmpkR2x2YmowaVkzSmxZWFJsWkNJZ2MzUkZkblE2YVc1emRHRnVZMlZKUkQwaWVHMXdMbWxwWkRveU1UZzFaakppWmkwNE5XWTVMV05tTkRjdFlXSTROeTA1TVdNellqTm1NR0kzT0dVaUlITjBSWFowT25kb1pXNDlJakl3TVRndE1EVXRNak5VTVRRNk5EQTZOVFVyTURnNk1EQWlJSE4wUlhaME9uTnZablIzWVhKbFFXZGxiblE5SWtGa2IySmxJRkJvYjNSdmMyaHZjQ0JEUXlBb1YybHVaRzkzY3lraUx6NGdQQzl5WkdZNlUyVnhQaUE4TDNodGNFMU5Pa2hwYzNSdmNuaytJRHd2Y21SbU9rUmxjMk55YVhCMGFXOXVQaUE4TDNKa1pqcFNSRVkrSUR3dmVEcDRiWEJ0WlhSaFBpQThQM2h3WVdOclpYUWdaVzVrUFNKeUlqOCsvMFZ4UlFBQUdmVkpSRUZVYUFYVndYZmNuM1Y5Ny9IWDUvdjlYdGR2M0RzN0pKQUlBVUxZQlptQ2ltRFZEbGZ0dzIzSHFZdXFQVjBXdGRiV1I2M25WRzJybnJhT3RzaERyUlVmUFIzV1dTM0tWaEFaWVFvRVFrTFduZHp6TjY3cituN2U1MDRpS05XTzg1OCtuMm51aXNTL0ozRzhZWmVaMlpURUltRDg1K1JPTzBaU1VmaUhKUDZGSHlJRVdCakF3ek53Nm9iSTNDeWtDR2FHSk55aExNV3dnbnJvcE5KSUNCTlVjb29pME84Yit4ZkY2UExBcUlNY0dvZDJXK3pZRDlGZzQ5ckFnYjFpMFRKVEhXR0N1bzZVaGVFSmRpOW1WclNOOGNLWXE0MmQrOFNLQ1NPMmdBd2RJQlFRVFB4N1psRFZka2tXYnpUWmNLVEkzZGh2dnJHbHVlTTlkOFVUWDBScitqbW95WUNRT01Tc0JMcEFBakxRUnhwZ3hvK1JBbWxyNG9jSVpoZUdrRjVsQnBMNHJ3aElDWExEZkgrZ0R4ZUZrSGdDQ2VTd2Y3OGhFei9Lak1QRUQ1SWdSWHVSdWYyMHBZQlpRNzJmN1N0R0gzWW1UdnhGTWhjZ0F3bGlBUkxnR1d3R05BZldRcXdtaHNoQmNuNHNHT0ErbDhxQ3h4bVFCVTNEU1pJajhWOFRZRkMwallVRmJlMzFkUDJ5NVpBelR4QVM1TVpBZ1BHanpRQkIxWUR4QTlaWjBLa21jRUhJbWM5M0x2aTNIZkhJa3FaZWpUSWdNRUFPN2w4bnhrOGgzWUxuM1lRMGp1c00xTHlPRU01RTRzZUNnT3ovbFBZY0VJOXhRVHR4eEhnM251a1lJTDVyRWRnT0NDajRmZ1lTc1I1cVJhZWpxMEppdXFwNGdoUU5MdzFWNHNlRkFLOUZNcjVIUUxUalFneWJNY2lOZzdIbjFwV1hmT09oNnNTTDhQa2pNUWRMWUdHYXdkN2ZKWFl2UjBXZkVNQUMxQldFNGxaNkMvOU1tZjZPY3VUcFNJRDRrV1VHMG03RXZlbTJiYzVqaG8xWU94bVBPbk1UcDJhSjdJQ0JpWThKL1Q3UUFrWUFjWkFBUThFb2MwTzJ5TGJSVVVNQ001Q01kaHYyelRsa0kvSmpSR0FSUWhISWpYaU1HY2RLR25lTTBqS0lPeDZwVisvTFp1Y2o3eEFNU1B2bzZ4VjQ5UVhTT016Tnc4Z0VkRm93TXdNalk1RFNYcHJtclJUNkI0eFZpQjlkRWt0dUpOcU90SGMrOEpqK0VEcGQyeFRhakdnQUdlTWdkLzluWUU4STRJSVFRQ3dKZ0lNTFhCQU5tZ3lTa1IySzROejlJRHc2THpZZkxRcmp4NFlaTkRYMGVrNTNMQ0J4U0FwMmpwbGhnaFkxc3paeDAxWE5CWE1FdGhBcVFCVzk1aDAwNlF2RUVhaEp0TXVYVU1RWDBGUlgwMnA5aENMTm93Q2Vyc2Y4UHJCVi9LZkVZY1ovbnpqTStBSHVFQUwvSVRsZ1lNWmhCcTZiRVF2cFNVZEdIbFBWeEJWamRvNnk0UklnRU5zRU82SkJscEVDVkxVVGdoRkxRVFljSXlNS1FaTWhHMVFORktYNDVqMWlZdEpvSlVPVitDRU1HQUVDTUErSS93OENYR0NBTzFqa3Y4MVlJc2dPRW9lSXd5eEFYWW01L2M2cWxZWm5hREpINWN6SmhJQk1tT0FoMy9qbGdYVldRejZSWURBWVhzdEMvUmQwbGtNNUF2STNVSFRmUndCcWZ4NGpvMXVCTDJJUjZnRFpHMElBQk80UUkyRGdEaVlPc1FSeWtJTVpQMGpnR1VMaWNSWUFnUXZNT0VRQ015aGE0Qm5rUElFRUZxQm9RYTdBSFVJRUJEbmZpY2pwcEVseGlJREltczZZblprYmFESllNRHo3M2NnZm1Xa0NSWUxKQ1AwK1dBQUtIbWVBWkVnUUFnVGprTkUycEFnU2h3aklBb3pqZ1o5Qk9rK3d6c0JjN0FPK2d2aWt4S1A4SndTNEdERzRLRVhPRXF6cXRQQUEzekhqQzRLdC9CY0V5NEp4OFdpYk0ySmtLb29hZUFENEN1TGJHQlFseEJFalprR2Y5WFZ0bTRoZ0NJelp2K1hGRHowWU5wNk5MYXhFRG1YbnMweVpFeW9vMHhuSS9vaWNvYWtoUk1CZWczd1RVa24yMVJnbkU4UWhyUTRvZzJjSGJRZjI0cXdpMkhxU0JScUJBRE1lNXc2cGdNNFlESHFRR3pDRGtDQVZNT3lCSEN3QUFnR3hBRGw0Qm9zY1pxQU1DR0lMd2poVVBhRnN3QTZDN21GSm1ubFVIT1FaV2wxV2o0eXlSVUVna0J0bHlUMnRxQU43NTRXNXNXUkNjS3JnRExEamdPVUdDb0dkR0xjQy95cDRoQjlHRU9DWXFYWjRiVzdzUmRGMEZHYUdJQU1wUXNDZVpZRmZNN04zQ1A3YVFId2ZBVG1yUlBaTHJjaXZZR3lXV1ZlQ3RaTWdsNXJLM3BTaVBvYnpoOENBN3lNZ2kxR1pYZXB1cjR6R3BnMnJZbG5YQWplVWhEc1BXZVRQTGZMSDFVRGFmbSttTG95UnR2M0VaTmNtcXl4YU5DQnV2VDZldXdQeE10UnY0K3JSRzl4SU11ZzBNTlFCTE54UGEyUUx1WUZxQU1UbkE4L25vQ0lBeGlFaGd1Y0RMUFkrVGpQNEV1Tmo5K0RXSjRSQU5YTTZkTi9DeUxLeldKd0ZieUJFUUJCTFVJREZtUWR4WFVjcTdzVENnR0gvS1Bweno2QXplaElHTkEya05uamV3ZmJiUHNyWTZ2dG9UejRmYTE2SUJjZ1pXaU9RNjBmWWZ2K0htRmh4QjkzUm44UHp5M0RkanJHZEphbTdNWENRQkVYa0REUEdjZ1VXd1hBR2ZWMWZXMEJ1YXkzeTg3Zzl2OTIyRXcxYklUY3dnU0FGUThKajRINlpYVkZMSHdCbStTNEhBcng0OVRKN1I5a0t4dzhXd1FLUGs2QnNRUUdXemRZWG8vR2pkWk9qTWg4MkRwTWdKanRwOVVUODM5MWtGK2VHb2tqQ0piSU1seEJZcm5Wa3UydHZNdzlIbXZKckJRT1dPRkFFVGxuVkRoOXNXYmlnY2NOTTFCbkVraUFra0xFaEJIdDNHV3dWbWQrOGQ1dnp4ZS9FOU15ejdjeUx6NGZxRVNpVjJWbHMrUHllWW0yUFBrL0ZNc2dIRFBveldJQ3FnbTduQVR5L2dOazlyNkVvbjBkNzlFazBGWWNJQ0FIRUVvRVB2OHFqRDd5VFZjZGR3OFI0UXpXQUxCQmcrV0ZtRnIvS2JITUZVK1h6Q0FteWd3VW8weDcyUGZTWFBIRG4zN0xsS1E5aDFpZEV3R0ZtMXlvNng3eVZzdnRHNmhrd29EUDZOaFptTG1mWnhoWXBYWXpYSUFHQ2FDQzlpMTc5RnpUWFFUcmhRc3BONEl2ZkF1WlprcnBkY1pDZ0UyVm5lelpjSW1LME9ueDFkdGIrTGplNmVOVUsrMkRDanE5ZGhCQzA1QURTaUFYS1ZqU2FSalFpeEdESGdyM1Q0Rm5BcjBwODJ3V2R5RnRiSStHM1RUYmV1QkFRZ0JBTjVQTWpMVDUzeDRPNmV0c0MrODQvd2RaT1lpOXRpTzh5eTdjaTNjaEI0dHhXeXo0UzRjUWlRT2c2dlI1N1RGeVZnanlZWFNSWTFRQU9kR0o4cWFSckpQdG9VM1BRdVNuWUZhUFJObVdEakREWVdkVit2Um5aNEd3ejIyQkFOWlNWbmZpcW80N2xzNVBPVmZQTGJPMktVZHRNWDJBR0JRdzZFOWMwZCsxZHhkcmpOdEZPb0RoQ1ovOTU3SGhnSzBlZkM2RUc1eDRHaTc5T1NoOGdwS2NSL2Rjb3U2ZlFuNGZza0NKUS96M1ViMkJxelU2YVBvd3NPNWJoNEFKY3UvRG1xN1FuQnZTWlovdld0ek4yN0dsMEp6Y3lXQVRaOVZSemI2YmR2b2JONTRxaUJXcWdHb0lpdEVmM3NPZkFteGkzU0xkOUtWVi9GNjN1VnpqNkxJakZPbFJkZ0FVUUVBTU1xM3ZKZGhWcjFrSnVMY01tbjRvcW9MNFpQSU9SR0hDSUdWTkVUaEpnQnRuOXk4TUJyeDhkczdjRmhYZDJvaGcyZm1QTytuU1EzUXkyRDlOa1U5a3BpNDIvb0d5Rmk4cElrQXR2eE1TWW5SK0srQWtMell0RzIzWkJ1d3h2eXoyMTYwYVlRWkZBVVBWNy9xbWlzRDluVkxmMSt2U25lNDRzUU5ZVmplenRwZkhVUm40VHNNNHN2TS9FaVNIQlRGLzloVVg3MDdLdGo0NjAySVhJTjl6VmJKNGFpKy9mY25TNHNCcUl4bFcwWTN6ZHZnVSt1bTNhanpqdEtQNE1iRk10a0duT3M3ODNoUERKRU94UlNSZ2NpWGdieGtzRmxxS3RhS2Y0d3Y1UVY1MTZySjYweWptaDJtOVlFSlRzZm85ZS84aDlCemFld1JIelU0UUNGRnFFOEFhOHVvbWl1SVdtRDU2aExNRGlnN1JISHVTV2E3L0VzUDlSVG5uNnM0Z0dpL1cxeU41SUhPeWtNN0dNaFlVM3M3ajRVc1JxaWxBZ1BrNk92MDY3M3N0UjYyOG5oeHZJMmtoMy9DYm1GMStMdUkzeE5lRGg2VlQ5VnlHT1JQbG1HdjlUSmxidHhJRDU0Vi9TYWo4WGZDZHpleGV4TnRUVldVVGZnQm1ZUVREb0RYZlEwelltV3BBMm5vUDdDZmhnSHlIZmpvbURrampNeFBwQU9BNER6OXdnOFg3VityMlJUbno1WXEwSGRzL2xQeHdwN1RQQm1PTzdna0hsWEh2M3cvNnhpU24vK1ZNMnBiZFhzL1lrajJJNEVLRUtXNTU2VXZIbG1KaW9lbW9yYzBnclFRT1BIaGo2VzJuc2I4cUN4OFVJTVJpNDl0ZFpmMUFVWERCV3BvbUZTcjlsRnM0SkNBdk03WnIxUy92emZIekRlc01NRURSdXQ4NzNtcmNvcC9jRVdCOER6WFJQOTMvcU9pL09Qem45YW12VW5yd3dDNWdlOHRwZkJYeU5KN29iOUR1WW5XallhWjdGWXJaTk1jTksySktDalZkbWRCbkFnQnNmMGhIYjJMTHVkYVFESTFRVnlLQ3o2bVNPbWZvazduK00vRXQ0L1FpdFVlaU9nemNnN1dEWSt6MXlQb21pWEU5amY0aHBCNmIxcEhnNTR5dWZ3WEFBWmhBTlhDK25hbTRsOEI2NjQ5QktCOGdMTU5kN0o1VnVvNHFSRWJ1TXdjSnZZMkVNaTFDTVhvU3FEdGhseEFBZHpkSTBleWs3MzJJNG5PT3V1Mkg5NnROWnRUd3hyQ0FZeEFRTCsyL0NyTS9vYXVoVlQ2WlZkSmh1cnFldEEzUWlPS1FVamU4NnhZd3B3VTdIcjIwbmUwdjJkRzQvNit2dS9pcGdHOTlsZ0ZoaUhOSTR2VWE2SFBkdjdodndpYkZPT0RVQnVSSGpJeHlSSGVvR2drRU1zR3RHMzg3QjMxaDI3R29KRU9EUWJVTzNNdTdkbmxuWkVXWEJWTHNkTzVZNVhoNWVvQ2lLQ0ROeitVUFQrL3pqclpTUXdJQTZ3OXBKWnpEMGF3ZnorZWVTYVN3bWNwWFpOVFZxcDY5WlliOGlCOCtPUjk2ZFV2eGFNRVlsR1dCTFdKS0JBM0o5MjR6VFdPS29YRFNuSzl1WUpBUUVnd1BONk5XN2UydWd6ZG1RUVN3UjRORHViTWI5cjhqRlZxSStBZllab3QrSCtuRDBhU3o1QnNxMzBCdnNndkFObWozZ2ZoUmgrVFNodVJKNUJZaUdBaGdoNkI2S0JBYXNXSDQ2WDcveWMxanJLK3g3QURZKzgrWEUrQWNJd3dSaVNZWjIrVXRJWjFBM014UmhBbWt6bG42ZmJkc2FSSWVpT0pXRERKQkR3NEQyMkxjWTltQjJEa0o2TXJSZ3FuTXpUWDJBYkJ5VWtGalN3dXgwQ1F5ZmptN1BEZU5oMDZEVUYxcDl2WnpHcHVXQVFBWVpNTUFNM0NFQTNUWlFzSFd1MXMvVU1mL1ZVZDF3U2IrR1FRMEdtRUdJUUFwZmYzUi9mdTNLRmR6bEFqTlFnR1lJSjIyQVpwdjQwT2Zod2pNRHp6M2RMdDI1eCtSbzQrcmx0aXdQSVhTNHAxM3lKMVB6UnJzRnFRVjFBd1owUzJNNEJFazdESkZsckJpTnhZdlA1NFZrVml6T2laQnNFZW1uZ0xNRTQ0RDRuaG9vRE03aUlBT0R4V2dVMFRoSkF0d2d3WmZqSlhkc0RTZTJDUGtJVkFNQk1CRFFERGtrZFU3RXV1K2lIcndhZUFtVG96Zmd3R0lGcUlmNEJLVlAweDlDNWpxOHVZNVE4RDNHSWNwUWxOQ2RXTW5ldmN2NDlyYyt5ckxPSWl2WHJtQ3l1SXpLRFJOZ1BLN0pYZUJjek1BZHNQc3h1NDJOUjRINzhaVGhGT29LTUVEZzdHQjBmQ3NSMkx2L0JJNVl0eGtMOEowYnI2TzNQeE1MRGtwa0RwcWswT2tnWXJDanJXTWo5KzNSVGRNTGV2VTRUSzhlZzdJRmJwQU5oQWhCV0FObWNNUnlZNlNBL29MWXZNeTMxemxlMld1NGhDWEdZV1pRTmY3My9ZcEx5NVoybFFGS2pOQUNCZWhWMENtRUFBZGl5WG5kYm5ycDF1bm1qOHBSemw3ZnNuYmR3TTU1djNyZGx2RG95UnNNR2pIWUFUUFQwRXF3Y3NLd0VGRXczQ0NIUUlUVjBleWlXdUFHRVViS0VIN2FBUW5NREFRT0dHQXNDWVlBQTVSOWF5Zlk2UWw3dW1TVTdScm1lSEI3L2FUYkIxUGQ1NUI3RzNETFlMczVyQTAyQVVUVWdBdFNzWkhzTDJiUGdSdG9IQ3h2QUZ0RHNLMFlNSGxjQzA4cnlMMkU2aHFMNHFBUXVyZ21pVVhCc1A4d3ZkWXJxUGJNc243bDFaejZIRmkyNWtKeTNzaGdIa0xnQ1F3UUlDQVZzREI3TGIzZWJsYXRoUkJQWVhiZkNnNnlDRlpBLzVFN0dlNituZEZUWU0yRzB4bHJIME52NWdCWC9lTzlQSHczZEVZNUtDbHcwTEdCY0NvWW9KRk9TK3pjbVQrOVk1ZTJyMTVoZER2RzJuRmpVSUVCQnBoZ1VJdDJhUnk1eXJoOXU1anRpUlBXOFJ5djdIZmRqSUI0VEREREczdjR6bDNEZld1bmpORldvaDJNSmtMdEVJRUE5SVl3VmpLKzZhajRmK2dxbkxaSk4yWEYxd3ptaFJWVURObmFUQU1tNmdYUnpCbXQwcEE3VlEycmxoYzBibVFYTVFuUHJPa05PYzZDaUlZSFdCQ3FCTWtNWTRtRXhZQWxvMTlsOVRtczdXYlQ5ZEEvVnJUdDlCaXRXMVhRc1F5SjY2NVpQSFVIenM5aWd4THhCb3lyZ1FJNEh2UUJ6S1p3UVZtQTVEeTg2eVlxd2ZJV2RPSUZNSElDc2QwRFFUVlloelZYZ0UxQm1BVnp6RWFBSTRFYVl6L1lES2s2RnpwWGNNSFBQa3puS0NDdHA5b2ZlWnlBd0NGeWlBa0NtZXlSMUxxZFhQV1kyUU5tSjVES2hEdFlnUGJZa01YWi80dEZpQ3VBQXo5Qk00UisvMFkybjdPTGRjZEJLamtveVFCak05QTFSQmJVaXl5dW43QzdqbDRMVDFwanpDN0FZQWhtUEVFd2tLQnFJRHNFQzc4STlxYzFqRWVFK0I1MzBXbUZYMTQybXU2cWMvNndBeGx3QVFZSXFneGpIVmE4OHFKd3hVbXJ3bW1QUGx5L2Vxb2REeVN6NVhValltM0ZpcmFXeis0V1FTS1pFVnFnaXNNRVRhT09qR3lvYUhmRmNORkdsQmtMTERFTGcreC9IY3cvVWdRN0tyc2lRZzRxWkhtMjBlNlcyWnh4U0xkcHZKMmQrd3JzOVRsRExBMEdrVVUxZHpRVHU2RGlHSkxOWTN3V3RBME1wUHVCUzhIT0JZRUU4NHQvUXRINk9LdVhRZjlSOFBaVGFZK3NZdmIrQllZek1QS2tmUlRsUG1JOEh4ek1RQWIxNE1zRXU1SlEzSUw3eTRpRDgwaGpzN2hWVE84QjkxdG90MnBTVE1oQUJqU1EvWE1VNVZmQmQ3TTQyRUlJbDdGbTVSeWpKWHppejZDdXR2UGNOMlI2L1VUVGg4WDlINmZWK1J1cUdhQS9UcTUrZ2w0RnFmVU5Mdno1L2FRQ0pBNUtKbG9XN0dRelF4SW1ZK2o2MW9ZanVOYk4yRGNMR0ppQmVKd0JKVEIwUVFyVzNiREMvcUFzd3B1R3RTWE1PY2pFZmhrZG9DUEFYV1BITEV2dm5lOWpjajVpQWVlN2hLaHFlOGJ4YThMN1d1dmlLZmZkblIvKzVqMzYwbk9lVHBoTWlneEFZSlY0YW94V0ZvVEtsVUVHQm5JSTBYN1pqSmNIVkFtYjJEL2pmemJSc3U4b1dkK3p1c2tnaS9ZZys1MmpJZDZKR1dZUWdleUJQWlhPM2RBTkZ3ZlJkVEVtK1R0YXBSOFJ6SjZSM2VoMHdmWTNmR2JmZWJkZGMrekxWbEZySTRPcURXcUR3QUtnQThCYndmOG5LUVZDNjFOVU01OWgxU1MwT3RBZnZaaWk5UUpNc0xodEdja2dObk5RL2pMS2QwQThoNUFYcVB0L0Q5MVBFRk9tR1hZSmNSbGlpVGFqWmdyM2FiSmRoL1JPeEcraFBFV0ljeWk4SDVwM0kxK2ticUEvL0IzV3JvVTdiempBby9mRDFCR3c3YlpQTTZ5T3BDak9vYW4rbGY3c0IybFBRUVI2dTA5Z1pPUmtIREQ3SnRVUXFpR1BTUmFZREdaUEZvY1p3a3lyK3hXL0dRd3JqRUk4cmhXTVpZS1Z3T2RkZk1oZDU4VEMzcmxxTXB4ZnUyZ2FVUVNqY3QwV3NGY1gwaXVhYUpmS1JSYTBJcU5sTjM1ZzZQNnpMbjBPN0NHRG84R2VFWU05blJERzZMblB6dWMzYlp6aW9lWkFYcWJ4c0sxVmhPWERTcGpaQmFYQ1I4ejBCb2M1bHJpelBKcTl2U3p0MGlvVE95MWpVR24yMFdtL3U3M0J0cmZhM0QrWXRaT3pZRFRaYTNwVm1CczI5cnV0a3NyTWtCaFBRYis0dmgxK1R6QmxCbG02eTR5M0oyT0YwQmFMUnIyWVNTVjNQYmpxS1YrYm1WdjNVOFRla1pnRDhkbTQzMDNPRUFPWS9SdVI2Mm0xQ3RBODFYNElVOUJVbXlsYjc4ZktaZVErTEgveVpSVERXNm1iL2VEVGlMZVQycU1NRm9iTTd4NnkraFRJZmpUVy96Z3huWXNERmk2aUdaNkM2ZDlvcFl6eHh6UzZpbVp3QkdPajkxT0gyL0RnWklkVytmc1U2ZTIwT3JEbm9ST3BkU1duUGczV2JOcEh0cmV4c0RCQ3F6WEh5Q1EwRGlIQi9QUkd4aVpYWVBWZWN2TVFNcjVmR2huVitvVjVPeTFFRG5GQTJIR2x3bHVpQWNaaHhpRXU3VFhaZlVMSGhFS1hFM2hhNWF5aWhtaEdBOVJaLytUR2I3am43OGo5RVN4ZUhDd2NEMktZUlRBcmtvWG51UGpKQUgyRHRvS2xnaVV5V1BSTEp6djZoMWdFRnFmWi84aDIvYzBKeDNOcVVaSnlBMlo2aGRBV0kveXJSTGRUOEV6SE5zdWcwektpYVdlS2VnbkdMUU1wRE9hNWNpVFl5YlVMaTJiZE12NUduWFdoWVZlRHVtWjJ0c3hPRzQxSzJhR1czU0RwSlJZMElOaDVZQWdEQndMM3JJcjdGcWs0RFV0Z0JqRyttZXgzSW4wUk04aUNmak5nY0dEQTdDT1FhNUM5aUZpOEQxdFlqOWNnUVdmaUV1cnA5K0xWSDVIQ3ZaZzUrQno5UGl6MGw3R09YNEQ4RmhwYmpzUWhSaUlXNzZZWi9nSXAzb1hVWU0zMXBCTG01MkZRUVh0cVBhM3d2NUMvRkRPWW1ZYlRudjNieFBZT2Vnc2ZZZDJ4TUt3eWcycWVsajJiT2grTDZ5OW90MFJhZlJHNUJ1VnY0SG9ZeFBkTHV3OXczbmhiSFhjd1FJSWlRcEZnV0FsM3NNQVE4WWpnOWliN3JrUVlpWVU5SDdOMUxoRUVqWERROVl0RGYzODBQdE5xQmM5QUkrMEkyWDhwcFhDNXNHTWRJUWx4U0JTTUdsQ1lNV2cwYmRhOHZvVSs3ZG53REowSWV3N29ZMnNhZjlycWtmaHp2VmtubTh6Z3pHRGhUQUVSRVlOUlpkRWZhdXRZbDFlbnhIV0d5QWZjTGR0Znh6RjdWdG0yOC9wOXNTU21aT2U0Y3c0WUJ6bEdQd3QzLzVjUXdwc3d0ZzFySm1JUm5obUNnYUFUS21ZMGRkdm45VHdvT1F2bU9VUmFUUXlYSS84WThGVmNEekIwR002dll6ZzRoYlhIUDVNbVA1TzhXQklUaDVoQk5ROTBmb0d5ZlNHZXZ3aTJDMjlFZC94SXl2WUZEQmVQQmtwQ0FuR1laN0I0Rm1YN004RGxvT3N3N1NhbWtybitNWGo5RkxycGVlREgwVGlZZ1dkb2pYYW82L2NTZURiRDNxMWtiMmlYeCtQMlhGS01pSjhtMkRpeFBBMDE0TnhNdGxtTUowamI5dG5aWnh4bkRPZmtCQlFDdzJHamhjVkswMld5bmdWbHllWXhUSEJjQ3VFQ0M0eldXVm5pM21TNnJ3amNPWmU1dnNxNk9zcjJTZUl4QnBpNGJ1RDV4UUc3TEptOTBNRlNNQ1J3aVNMU202bjFqd3VWM3J1eXhjMHNrVVJyTXREcEdpZE1zWkNDL2FxeXp3cTlNa1VyekkxR0FveGEwRTdhNDVXdTdBLzFKMlBkY0Q4Q0JLcEV1OVNPbk1QTDk4M3o1eE50UFNzUkdHWW9Ba2pnRWdtL1o5OVFIeTRqbDNlRDdSOVVqbUFDT0JXSlE4VGlQbHYrMmZ0MTNCYkU2WVFhQ0RYdWh0a2FpdUxOb05lUXduNUdDcU5ZUHNteUk4YUlSYUx1UTY0YlFpRVFoeGxnRWV4b1RLL2pvSnloMVlHUlNSak1DMUVUQWsra1FFeGJVSDRYaEJrSXM3aEtwcFl2dzJ3RXIxbmltRFdBRVNJTWVtQTJTb3pQUi81OFlvUUV1QUNEWUpjZ0IzT1dPSEFkUWZ4N2FmUHE4TUZxVVovRWFFQUt3Ulo3ZmVZWEt5MGV1ZEt5R3BzYVZrekdTTnRnQk9USXBwdEdNMkFMS1hFQW1IZlJ1S0JnaWZGRUJsbjZsc1Ava091S1lQYVVvZXVvRUd3WXBIdnF4cjllSzl6a01EUytUelNzTURvSkF1ejJyRGNPaC9udktzVm5XTkR4TFFpWXB0MTFpekpmazdUVnpES1BNU0FBQmlIdzRONDV2ZVRoUGY2VFc5YnlsTEpndzZEQ3pOaVpUTmVZK0hxV0hoTEc5RUpOM1lpVTdNQklhYThSZ1NBbEVvdGZxSjkxODEzOTQxZlE3YitTUU1aVkFZWmttTFdSdWhodHlnUWgxQmlMVklzRGpFeElnUE5FRFFnREVwQUlCcmx1eUUyRG1UQ1dpQitnSmdBZGpCSE1FcEtJY1FqMGFPb2haZzRZanpHV3lKQWlVQ0FIVVFNTkIwa1JjRVFiYkJhNGlSL2kvd0gzRDVQTXBkMnQ1UUFBQUFCSlJVNUVya0pnZ2c9PSIsInN1cHBvcnRlZEV4dGVuc2lvbnMiOlt7ImlkIjoiaG1hYy1zZWNyZXQiLCJmYWlsX2lmX3Vua25vd24iOmZhbHNlfSx7ImlkIjoiY3JlZFByb3RlY3QiLCJmYWlsX2lmX3Vua25vd24iOmZhbHNlfV0sImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIkZJRE9fMl8wIl0sImFhZ3VpZCI6ImJiZjRiNmE3LTY3OWQtZjZmYy1jNGYyLThhYzBkZGY5MDE1YSJ9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMC0wOC0wMyIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiZVNlY3UgRklETzLCriBQcm8iLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDE5MTIxMDAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4xLjEiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMyJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMC0wOC0wMyJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjAtMDgtMDMifSx7ImFhZ3VpZCI6IjNlMjI0MTVkLTdmZGYtNGVhNC04YTBjLWRkNjBjNDI0OWI5ZCIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiM2UyMjQxNWQtN2ZkZi00ZWE0LThhMGMtZGQ2MGM0MjQ5YjlkIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkZlaXRpYW4gaWVQYXNzIEZJRE8gQXV0aGVudGljYXRvciJ9LCJkZXNjcmlwdGlvbiI6IkZlaXRpYW4gaWVQYXNzIEZJRE8gQXV0aGVudGljYXRvciIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUJmakNDQVNXZ0F3SUJBZ0lCQVRBS0JnZ3Foa2pPUFFRREFqQVhNUlV3RXdZRFZRUUREQXhHVkNCR1NVUlBJREF5TURBd0lCY05NVFl3TlRBeE1EQXdNREF3V2hnUE1qQTFNREExTURFd01EQXdNREJhTUJjeEZUQVRCZ05WQkFNTURFWlVJRVpKUkU4Z01ESXdNREJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCTkJtclJxVk94enRUSlZOMTl2dGRxY0w3dEtRZW9sMm5uTTIveVlndmtzWm5yNTBTS2JWZ0lFa3pIUVZPdTgwTFZFRTNsVmhlTzFIamdneEFsVDZvNFdqWURCZU1CMEdBMVVkRGdRV0JCUkpGV1F0MWJ2RzNqTTZYZ21WL0ljak50Ty9DekFmQmdOVkhTTUVHREFXZ0JSSkZXUXQxYnZHM2pNNlhnbVYvSWNqTnRPL0N6QU1CZ05WSFJNRUJUQURBUUgvTUE0R0ExVWREd0VCL3dRRUF3SUJCakFLQmdncWhrak9QUVFEQWdOSEFEQkVBaUF3ZlBxZ0lXSVVCK1FCQmFWR3NkSHkwczVSTXhsa3pwU1gvelN5VFptVXBRSWdCMndKNm5aUk04b1gvbkE0M1JoNlNKb3ZNMlh3Q0NILy8rTGlyQkFiQjBNPSIsIk1JSUIyRENDQVg2Z0F3SUJBZ0lRRlo5N3dzMkpHUEVvYTVOSStwOHoxakFLQmdncWhrak9QUVFEQWpCTE1Rc3dDUVlEVlFRR0V3SkRUakVkTUJzR0ExVUVDZ3dVUm1WcGRHbGhiaUJVWldOb2JtOXNiMmRwWlhNeEhUQWJCZ05WQkFNTUZFWmxhWFJwWVc0Z1JrbEVUeUJTYjI5MElFTkJNQ0FYRFRFNE1EUXdNVEF3TURBd01Gb1lEekl3TkRnd016TXhNak0xT1RVNVdqQkxNUXN3Q1FZRFZRUUdFd0pEVGpFZE1Cc0dBMVVFQ2d3VVJtVnBkR2xoYmlCVVpXTm9ibTlzYjJkcFpYTXhIVEFiQmdOVkJBTU1GRVpsYVhScFlXNGdSa2xFVHlCU2IyOTBJRU5CTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFbmZBS2Jqdk1YMUV5MWI2aytXUVFkTlZNdDlKZ0dXeUozUHZNNEJTSzVYcVRmbysrMG9Bai80dG53eUlMMEhGQlI5U3Qra3RqcVNYRGZqaVhBdXJzODZOQ01FQXdIUVlEVlIwT0JCWUVGTkdobUUyQmY4TzVhL1lIWjcxUUV2NlFSZkZVTUE4R0ExVWRFd0VCL3dRRk1BTUJBZjh3RGdZRFZSMFBBUUgvQkFRREFnRUdNQW9HQ0NxR1NNNDlCQU1DQTBnQU1FVUNJUUMzc1QxbEJqR2VGK3hLVHB6VjFLWVUyY2thaFRkNG1MSnl6WU9oYUh2NGlnSWdEMkpZa2Z5SDVRNEJwbzhycm9PMEl0N29ZakYya2d5L2VTWjNVOUdsYXF3PSIsIk1JSUIyRENDQVg2Z0F3SUJBZ0lRR0JVclFiZERybTIwRlpuRHNYMkNCVEFLQmdncWhrak9QUVFEQWpCTE1Rc3dDUVlEVlFRR0V3SlZVekVkTUJzR0ExVUVDZ3dVUm1WcGRHbGhiaUJVWldOb2JtOXNiMmRwWlhNeEhUQWJCZ05WQkFNTUZFWmxhWFJwWVc0Z1JrbEVUeUJTYjI5MElFTkJNQ0FYRFRFNE1EUXdNVEF3TURBd01Gb1lEekl3TkRnd016TXhNak0xT1RVNVdqQkxNUXN3Q1FZRFZRUUdFd0pWVXpFZE1Cc0dBMVVFQ2d3VVJtVnBkR2xoYmlCVVpXTm9ibTlzYjJkcFpYTXhIVEFiQmdOVkJBTU1GRVpsYVhScFlXNGdSa2xFVHlCU2IyOTBJRU5CTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFc0ZZRUVoaUp1cXFuTWdRalNpaXZCalY3REdDVGY0WEJCSC9CN3V2WnNLeFhTaEYwTDh1RElTV1V2Y0V4aXhSczZnQjNvbGRTcmpveDZMOFQ5NE5PenFOQ01FQXdIUVlEVlIwT0JCWUVGRXU5aHlZUnJSeUp6d1JZdm5EU0NJeHJGaU8zTUE4R0ExVWRFd0VCL3dRRk1BTUJBZjh3RGdZRFZSMFBBUUgvQkFRREFnRUdNQW9HQ0NxR1NNNDlCQU1DQTBnQU1FVUNJREhTYjJtYk5EQVVOWHZwUFUwb1dLZU55ZTBmUTJsOUQwMUFSMitzTFpkaEFpRUFvM3d6Njg0SUZNVnNDQ1JtdUpxeEg2RlFSRVNOcWV6dW8xRStLa0d4V3VNPSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFGQUFBQUFVQ0FNQUFBQXRCa3JsQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUJIWnBWRmgwV0UxTU9tTnZiUzVoWkc5aVpTNTRiWEFBQUFBQUFEdy9lSEJoWTJ0bGRDQmlaV2RwYmowaTc3dS9JaUJwWkQwaVZ6Vk5NRTF3UTJWb2FVaDZjbVZUZWs1VVkzcHJZemxrSWo4K0lEeDRPbmh0Y0cxbGRHRWdlRzFzYm5NNmVEMGlZV1J2WW1VNmJuTTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlrRmtiMkpsSUZoTlVDQkRiM0psSURVdU5pMWpNREUwSURjNUxqRTFOamM1Tnl3Z01qQXhOQzh3T0M4eU1DMHdPVG8xTXpvd01pQWdJQ0FnSUNBZ0lqNGdQSEprWmpwU1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJajRnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJZ2VHMXNibk02ZUcxd1BTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGh0Ykc1ek9uQm9iM1J2YzJodmNEMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzl3YUc5MGIzTm9iM0F2TVM0d0x5SWdlRzFzYm5NNmVHMXdUVTA5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5dGJTOGlJSGh0Ykc1ek9uTjBVbVZtUFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdmMxUjVjR1V2VW1WemIzVnlZMlZTWldZaklpQjRiWEE2UTNKbFlYUnZjbFJ2YjJ3OUlrRmtiMkpsSUZCb2IzUnZjMmh2Y0NCRFF5QXlNREUwSUNoTllXTnBiblJ2YzJncElpQjRiWEE2UTNKbFlYUmxSR0YwWlQwaU1qQXhOaTB4TWkwek1GUXhORG96TXpvd09Dc3dPRG93TUNJZ2VHMXdPazF2WkdsbWVVUmhkR1U5SWpJd01UWXRNVEl0TXpCVU1EYzZNekU2TlRrck1EZzZNREFpSUhodGNEcE5aWFJoWkdGMFlVUmhkR1U5SWpJd01UWXRNVEl0TXpCVU1EYzZNekU2TlRrck1EZzZNREFpSUdSak9tWnZjbTFoZEQwaWFXMWhaMlV2Y0c1bklpQndhRzkwYjNOb2IzQTZTR2x6ZEc5eWVUMGlNakF4TmkweE1pMHpNRlF4TlRvek1Eb3lOeXN3T0Rvd01DWWplRGs3NXBhSDVMdTJJT2FjcXVhZ2grbWltQzB4SU9XM3N1YUprK1c4Z0NZamVFRTdJaUI0YlhCTlRUcEpibk4wWVc1alpVbEVQU0o0YlhBdWFXbGtPakpGTnpGQ1JrWkRRelkzUmpFeFJUWTVOemhFUVRsRFFrSTJORFl6Umprd0lpQjRiWEJOVFRwRWIyTjFiV1Z1ZEVsRVBTSjRiWEF1Wkdsa09qSkZOekZDUmtaRVF6WTNSakV4UlRZNU56aEVRVGxEUWtJMk5EWXpSamt3SWo0Z1BIaHRjRTFOT2tSbGNtbDJaV1JHY205dElITjBVbVZtT21sdWMzUmhibU5sU1VROUluaHRjQzVwYVdRNk1rVTNNVUpHUmtGRE5qZEdNVEZGTmprM09FUkJPVU5DUWpZME5qTkdPVEFpSUhOMFVtVm1PbVJ2WTNWdFpXNTBTVVE5SW5odGNDNWthV1E2TWtVM01VSkdSa0pETmpkR01URkZOamszT0VSQk9VTkNRalkwTmpOR09UQWlMejRnUEM5eVpHWTZSR1Z6WTNKcGNIUnBiMjQrSUR3dmNtUm1PbEpFUmo0Z1BDOTRPbmh0Y0cxbGRHRStJRHcvZUhCaFkydGxkQ0JsYm1ROUluSWlQejQ3N0pYRkFBQUFZRkJNVkVYLy8vOEVWcUlYWmF2RzJPb3FjTEcyek9Pa3d0MEJTSnRxbGNYVjR1K2F1dGxXaGJ6azdQVUFNWTlIY3JLanROYnE4ZmVBbDhhQm9zeno5dnBkanNHR3F0RjNuOHVUc05TWnBjNkpzTlQ1K3YweFlLbnU4UGZmNS9MNDhmZy9mcmljekpnWUFBQURBRWxFUVZSNDJrUlVDWmJESUFqRlhaT1kxVGF0TmMzOWJ6a3NTWWMzcjRNRTRmTUJBYUQ2emw4eS85VE9nZXQ4ZDVqZk43OGJ3TS9kRENScFI1MjF6WGZvakhKMDVJSXloQkFVU1ZBT05kR3pCWXQyZjdLRnJma0phQWtIaDlGWmhjRFhIUmtUS285TUxpaEdhYXZJbW5WM3F5RVgwRXByZ3ovNER3VUQ3a0NIUm5kOFFGTjQzR280VVZtRERnemE0dzI3b2l6ZEEyK2NLK3V1VXBqam8yK3h3Yy80Mlc1MHg1TEdZZURCc1IwSFZJeDV4OGlGNjBDYmxiVEVFa0ZyMjdiTkRCVVZTcTFPS1ZQYkU2MmIzRUg4RnFCZzVPT09FdWMydDhaSmlxTU91R3ArY0tqZzd3VkdjZW96cU40cHhnVlBRa2pGWWdiVkpLRFVoRENqWXJhd1A1cTRFVGdDOWZJTVJIdGl0cFFjQ3ZKT0VMY2JNc1FnbmNpUmtsanB5UWp2RzQ0anFCVUVURmlCaTFQRUl5ZWtPenNXK1R5NWNMSG9zNVIrZE1TMUx0U1N4ZjNnUUhjelIyQ0k0Z01OcFc0SVJBMVFNYTZ0SjQrQzZ1SHVHRThtTkRJeUZxZy9PUC9NTVV1ZVM2SXE4UzkwZEFlQkpTRXkvcUtrSytCTnd6OGNZWTRqYjVKNnU0aVdDSTJCMVo1NkxXNWtFYzRoa2RNcHN2VUM1NTg1U1gwUXViY2dOcXlmZ0RGRWNUdCs0MC8wUzVOeDB3YUN3M09La2NPYkE1SW4wQVlwMDFwamp3Mm42MjZVRGp0SHdhMjhpSHVUS3F0cnYrcmVXNDFOWjZpR2xyN3V1TEpDZmtGdGN0Y0cwNHNnbTFlTlMrWmFEbnBhVEVyR295WDVKSzJpTXo4eHMwbk93V0djUERONDlxYUNkNGJ6Sm96RFptL2FCSytFb3pMdytYaE5CaVl3SGYwc2lPdTFYUGtHL3pLd3ZxWUtjZlN3REVjSC9vVWUwN2VzL1dROHJJeWcyRE9Yajh0amtaZHVEQi9iOGh6RGxsTU1PQ1M1QkVuZDUzNGY4dGkzVVpjNGtNczN4THlhZk1Tc0poZEc4WFBxak5rNXRBZ08yNWZlS0NoblZkRGovSjBGTWtPc1UveE1CdjB3RmhZZUVHZlZIMTNmdURVMHlERkxhNGZjN1JuV0hCZnVURlYydEVtTndhZGM3YWMzVVkyamZCbDdIVDM2ZmUzNGlRTzVtTkNGRkJXMDdLalBncWhPTFUwMXZaOFB1ZVoySkNsRlpOOGprVXM2OXVrYTllUHA2K0VmTDRBRjUrTnl3U2Jpckh0Y0I4TWwvZ2t3QUVqa0s2NEtqSFBlQUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzFfUFJFIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiIzZTIyNDE1ZDdmZGY0ZWE0OGEwY2RkNjBjNDI0OWI5ZCIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlfSwibWF4TXNnU2l6ZSI6MTAyNCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6NiwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjo5NiwidHJhbnNwb3J0cyI6WyJ1c2IiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fV19fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMC0wNC0yNCIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiRmVpdGlhbiBpZVBhc3MgRklET8KuIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyMDA0MTcwMDIiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMiIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4zIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIwLTA0LTI0In1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMC0wNC0yNCJ9LHsiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjkxMGE3NjNkZGY3OWRiZjQ5NmM0ODJlN2YzMTNjNTIwYTg5ZjdiZWMiXSwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiOTEwYTc2M2RkZjc5ZGJmNDk2YzQ4MmU3ZjMxM2M1MjBhODlmN2JlYyJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiWXViaUtleSA1IFNlcmllcyB3aXRoIE5GQyJ9LCJkZXNjcmlwdGlvbiI6Ill1YmlLZXkgNSBTZXJpZXMgd2l0aCBORkMiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDczLCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjJ9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50IiwicmVtb3RlX2hhbmRsZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJREhqQ0NBZ2FnQXdJQkFnSUVHMEJUOXpBTkJna3Foa2lHOXcwQkFRc0ZBREF1TVN3d0tnWURWUVFERXlOWmRXSnBZMjhnVlRKR0lGSnZiM1FnUTBFZ1UyVnlhV0ZzSURRMU56SXdNRFl6TVRBZ0Z3MHhOREE0TURFd01EQXdNREJhR0E4eU1EVXdNRGt3TkRBd01EQXdNRm93TGpFc01Db0dBMVVFQXhNaldYVmlhV052SUZVeVJpQlNiMjkwSUVOQklGTmxjbWxoYkNBME5UY3lNREEyTXpFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUUMvandZdWhCVmxxYWlZV0VNc3JXRmlzZ0orUHRNOTFlU3JwSTRUSzdVNTNtd0NJYXdTREh5OHZVbWs1TjJLQWo5YWJ2VDlOUDVTTVMxaFFpM3VzeG9ZR29uWFFnZk82Wlh5VUE5YStLQWtxZEZuQm5seXVnU2VDT2VwOEVkWkZmc2FSRnRNamt3ejVHY3oyUHk0dklZdkNkTUhQdHdhejBiVnV6bmV1ZUlFejZUblFqRTYzUmR0Mnpid25lYndURzVaeWJlV1N3Ynp5K0JKMzRaSGNVaFBBWTg5eUpRWHVFMEl6TVpGY0VCYlBOUmJXRUNSS2dqcS8vcVQ5bm1ET0ZWbFNSQ3Qyd2lxUFN6bHV3bit2K3N1UUVCc1VqVEdNRWQyNXRLWFhUa05XMjF3SVdieGVTeVVvVFh3THZHUzZ4bHdRU2dOcGsycVhZd2Y4aVhnN1ZXWkFnTUJBQUdqUWpCQU1CMEdBMVVkRGdRV0JCUWdJdnowYk5HSmhqZ3BUb2tzeUtwUDl4djlvREFQQmdOVkhSTUVDREFHQVFIL0FnRUFNQTRHQTFVZER3RUIvd1FFQXdJQkJqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFqdmp1T01EU2ErSlhGQ0x5QktzeWNYdEJWWnNKNFVlM0xiYUVzUFk0TVlOL2hJUTVaTTVwN0VqZmNuTUc0Q3RZa05zZk5IYzBBaEJMZHE0NXJuVDg3cS82TzN2VUV0Tk1hZmJoVTZrdGhYN1krOVhGTjlOcG1ZeHIrZWtWWTV4T3hpOGg5SkRJZ29NUDRWQjF1UzBhdW5MMUlHcXJOb29MOW1tRm5MMmtMVlZlZTYvVlI2QzUrS1NUQ01DV3BwTXVKSVpJSTJ2OW80ZGtvWjhZN1FSalFsTGZZemQzcUd0S2J3N3hhRjFVc0cvNXhVYi9CdHdiMlgyZzRJbnBpQi95dC8zQ3BRWHBpV1gvSzRtQnZVS2lHbjA1WnNxZVkxZ3g0ZzB4TEJxY1U5cHNteVB6SytWc2d3MmplUlE1SmxLRHlxRTBoZWJmQzF0dkZ1MENDckpGY3c9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFmQ0FZQUFBQ0dWcytNQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUhZWUFBQjJHQVYyaUU0RUFBQWJOU1VSQlZGaEhwVmQ3VE5WMUZELzNkNTl3ZVFTSWdTOUFRQVhjRkxBUVppOWZwZVZ6MXRZL1dUWnI1V3hwYzdXNWtuTGE1akkzWjg1c3JTMm5NMnNqdFd3WlM3SVVINEg0eENuRVF4NERBWkY3NFY3dXM4ODV2OS9sSW5CdlZKL0I0UHY5bnUvNW51LzVudk01NTZmekEvUXYwSGIvSXJYM1ZGS1BvNDVjbm00aW5VSVdZd0xGUm1aUVV1d2pGRy9OMWlSSGgxRVowTlJWUnVkcXQxQmQrMm5TS3lTL09oeXMwK2xrM2UvM2tROXF2RDRaVXRhNFZWU1V1WTBlaXB5aVRoQWZvY29PUlZnRHV1dzNxS1JpQWQzcmJjRXRqVGpZSW9mNldhSHNDbXpWUFdDTXgrY2doOHRMcVdNS2FNV3NVakxxbzJSdEpJUTBvT3ptZXJwUXU0ZXNaZ3NPTmtHeEg3ZDBrZHZUVDE3czRPTVU3Vkk4WmhqZ0dhTStBcTlpRU51OFBpZjF1ZHowN013dktXZjhHbFZvQ0VZMDRQQzVXZFRhWFlGYlI4dk52TDUrM0tnZmI1eE5NeWE5UmFtSml5bmFNbEdUVnRGbHI2YmE5dStwcW5FWDR1TXVSUmdqU1lFaHJON3V0RkZlNmxxYWw3TmZrdzVpbUFHSHluUHBiazhWbVkweHN0bnB0bEZDVkNZdHpUdUJOODNRcE1MalR0ZXZkUHpTVW5KN2U4bWtqeFozOWZYYktEZmxkWnFidlUrVFVnR25CVkY2ZlEyaVBIZzRXMTZVV1V3dnpiazE2c01aRStQbjBwdno3SlNldUF5ZXM4bGNwQ21hS3VvL3ArcVdyMlVjd0lBSFdydlAwWUV6aFhBdExBYnNzSGhwN2lHYW12eWlqUDhyeXFyWFVXWDlYb293eHlBdWZOQnJwNDNQT0JGWFpsa2Y4TURSaXFjcHlvd0F3cHV6MngrZld2ei9EdGRlOXNtc3p5Z3RjUjZDMXdiZHpCbDZPbHE1V05ZWTRvR2F0aEpNcmtURXgwakFSU0hBVnMrNXJZa1FOWGIrUWdmUExzUTZnWHlJbnNyZVFmbXBtN1JWRllmTDg2bjFmaVVPa1l2U2hrVVB4dmJ1a3pveTZLMWloTTFobzNYelc2RXZTZlhBK2RwaVdHYVdkK2RvWHpMem1Hd0tZRkxDQXNSQWxQQkFoTWxDRlhVN3RCVVZQcjhIZ1ZjSkhXcStGMDBwbHIrRE1UZHJQNHp2eFkxMWtOTWh4VCtTZVRHZytkNFY1TFFKaXR5VUdKTkI4VkZac2pnWUJaTS9JSS9YQ1RrajBxeURPcEYyQVZRMTdDSWpVcC9EblQxVWtMNUY1Z2RqK3NTMXdnMWdFM2dpZ202MGZDWHpTblBYYnlBUGJJWHYrSURwRTE2VGhhSElTOXNreWhsbU1FNUYzY2ZxQUtocTJDMEU1UEgxZ1lhWGFMUERrWkcwSERKT25LV0hwNTFJMHo1U091eDhlMVdBdVp6ZEhRclRrcDhUbWpYb0krbGEwd0dac3p1YnFiTzNpZlE2QS9XN3ZWU1lzVjNtUjBKS3drS2M0V0hpQmttUjhJM0NDZ0k4N29PTDRxelQ1UCtSVUpCZWpFT2dBUEs4aFlQemF0TStlSVRwMklPOXlUUW1lcm9tUFJ4eDFxeEFjc2lsZS91YlNlRWJjV1FHWUVDZ2hjTFkySHlLam9nakgyNWhNcGpwVXYxT3VnbGk0ZWgyZVJ3ME8zMmJKamt5dUNnTnpnMHZ6bFlNU2lTczB1b280TUc3aE1PakNFYVgxeUZFMG5TdmpCenVUbkVwSzg2WjhJb3FGQUl1Ync4a2c5QXJFYVJFV1NaSStqSDRYYnA2ZzlFOUVuSlQzb2FSekROK01VSkJRREhuNTZhOG9VbUVCdXNPeEJzL041K3RKRWJQa0FGRGo4VUd2T3MvSVd2Y1NnbEdCaHZTNy9GVFlmcFdHWWREWThmUEF4V1NBMzVzVEM0cDQrTG00QWFxSW9QZVF0ZnVmSzZKaDBaaHhsYnNVWE9TbVhOaWZENVpUQWt5RG9mYmJjY2x4bkE4V05BcXhDYlJOeWtoWHhRcGFEdzY3ZlhVWWJzaUcwS2h0djJvZUl2aDhyaFFNWU9jRUFxWEcvZUkrem5nT2M1eXhyOHE4MklBTTFjL0ZMRk9wbHF1NWVGUVhyTVp6R2NWQ2pZYkxXRzVJNEJUMWV1UnJsYnh0Tk90TWl0RERFaExYSUl5bkFBdnVPRVdFM1gzTmRBZnQ5NFZnYUc0MlhJUXQwWlg2UGVDRS9xUUZlOXJLNkh4N1lVNTBLdkg3Zlc0ZlMrcTdLS0JKeHNnZ0JYNXBTQUdoMWpJclZoNXpRNnczUmZhYWhCWG0vYUNiQ1pUakNVRlVUeVdacVc5cDYyTWpKUFhWcU9yUGdNTzROdjc0R2tmK293ZnROVkJEUW5qRkpxSFN3MTdwWHZoV1c1S1pxZS9RNDlOL1VTVENBVldvUVhGSUhCSFhYZTNGUHJVRHN1R0RtdEYvaEhLVEhwZWt4aGlBT1BJK1NKcTZTNkhGNEk5WVd6a0JKVG80NmlVTXpXcDhQaXIvUmlkdUx4S1lzU2tzVjh2TGxPUXZoR1gyWWxSME9CaEJqQyt1L2dFY3ZZMEFwSzdZazQxTnhqUFNRbldGSFRGNjZVcmpnZXZCOEN1NWErbDJ2WVNSUHR1VkRvNzNoaGRNU0huVVg3dFRqc1ZaR3hBbC9XcHRpT0lFUTFnbkwyOW1YNi90UjF0bWxrWWo4VzRYK0NTaldjVURHWTFOcFMvQzdoU0txaU1MTS9sMlFtU1daNzNEZHorZ2lvOEJDRU5ZUFE0NnFua3p3WFVicXZCa3hqVVFzV2ZaRmdidW8zckFmK3dON2pPTzkwK3lueDRQaTNMKzBuWUwxU2NoRFVnQVA0Z1BWLzdJZDFxKzFIU2htdUdrSXFXUlBneXhNRnFQOEhmalRualh3WTViUWZiSmN0Nk9JektnTUhvdEYvSGUxZWdzYXhIU3FHNndmZG1RNXg4TnlURkZxQmNwMmlTb3dIUjN5azUrMzZoRjd2WEFBQUFBRWxGVGtTdVFtQ0MifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMC0xMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzMsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWXViaUtleSA1IFNlcmllcyB3aXRoIE5GQyIsImNlcnRpZmljYXRlTnVtYmVyIjoiVTJGMTAwMDIwMjQxMDEyMDAzIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMDYtMDQiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDczLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ill1YmlLZXkgNSBTZXJpZXMgd2l0aCBORkMiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlUyRjEwMDAyMDI0MDYwNDAwMCIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTA2LTA0IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3M31dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNC0xMS0xMiJ9LHsiYWFndWlkIjoiMjM3ODY0NTItZjAyZC00MzQ0LTg3ZWQtYWFmNzAzNzI2ODgxIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiIyMzc4NjQ1Mi1mMDJkLTQzNDQtODdlZC1hYWY3MDM3MjY4ODEiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiU2FmZU5ldCBlVG9rZW4gRnVzaW9uIENDIn0sImRlc2NyaXB0aW9uIjoiU2FmZU5ldCBlVG9rZW4gRnVzaW9uIENDIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MTAsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6MCwiYmxvY2tTbG93ZG93biI6MH19LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjowLCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUM2VENDQWRHZ0F3SUJBZ0lKQUpiVHlydTFYL0lQTUEwR0NTcUdTSWIzRFFFQkN3VUFNQ014SVRBZkJnTlZCQU1NR0VkbGJXRnNkRzhnVFhWc2RHbEJjSEFnUmtsRVR5QkRRVEFlRncweE9EQTJNVEl4TkRRMU5UQmFGdzB5T0RBMk1Ea3hORFExTlRCYU1DTXhJVEFmQmdOVkJBTU1HRWRsYldGc2RHOGdUWFZzZEdsQmNIQWdSa2xFVHlCRFFUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU1WaktIV3BiRDdUU2xNeG9jalRsNm5JZjd4MzJQbXNROXpHdUxHR3FBMFVRWm9JcTNYTHpMNkxZVXZKNUE1ZzB1eUZHbGxIRWZHQUtyRWFDUThGVnZQUy9VaDBGeWZ6V2hSQXppVFNpampNSUlWampqVXY5bTl2Rm1jWFNjZ0hpZzdPZHo4ODU4VjBrck5IOTlxR20zd2pnYU9lclRXbXQralhDVWZuMDFJa1RQd3hHMkhsZ0VkNDVqTkxTVjdWb29sK0tlOEUya2k0bEVrVGVIemJvdWxSNUdVYnAzbk1pN0U0N1ZNUWEzYk53bnpXQmJzYUJTU1FoTGszbTVIYUtoaHhhNndKREs0N05pTUNrQ2tkSUh1V1NRTFZBZm04NVVBT050RU9Qd2kwT3VLM3FiZTh5S09GR2YwS2hCNU1NZUF5bTdNVi9NNFcwYTQ5b2dQRDlwTUNBd0VBQWFNZ01CNHdEQVlEVlIwVEJBVXdBd0VCL3pBT0JnTlZIUThCQWY4RUJBTUNBb1F3RFFZSktvWklodmNOQVFFTEJRQURnZ0VCQUpXejV4TE1rNVdOWWJBYjZ5T3hFQ0JvWjJXZUIvcWw0VkozTy8zL3ROc3hPWW56TGVXbzU0MHpRaDlyQW1heHo3ZXVtQmxza01xNHlHUFNOWEI5eWNXR0hna2NDZVN6TjJ3djhDSXpEQnMyb0JaalROazY1TEJaRHNzVE9CdE1XLyt1VEZIUWZidU8zSVNMaEkwRFhmUkVpOU5ETTNqZmsxMXhIY3NmaDJSTVYrUWROZndWYVpackNxK291RytFdmt2N0txcStveXUwVkZNL3R6NjhUR2w2eWxoUEZSMXFoOXd0dHBWakFPT0NFUUNMcVAyZFAyOGx3WUJ5Q3FIUXFWSHdidWp2L0xaalpuS1czTFluZFppeFBQU1JDSnNzRER3SnZoL2Y2blR4ZzlaRSsvSmNZcmU1Q2FJOG56VkhhU09Dak5KN0Z6VUxHNjRKaVdPdlE1MD0iLCJNSUlEZFRDQ0FsMmdBd0lCQWdJSkFJQ1VUdmtndGo1Q01BMEdDU3FHU0liM0RRRUJDd1VBTUZFeEN6QUpCZ05WQkFZVEFrWlNNUXd3Q2dZRFZRUUtEQU5FU1ZNeEN6QUpCZ05WQkFzTUFrTlRNU2N3SlFZRFZRUUREQjVIWlcxaGJIUnZJRTExYkhScFFYQndJRVpKUkU4Z1UzVmlZMkVnUTBFd0hoY05NakF3TnpBM01UUXpOekU0V2hjTk16QXdOekExTVRRek56RTRXakJSTVFzd0NRWURWUVFHRXdKR1VqRU1NQW9HQTFVRUNnd0RSRWxUTVFzd0NRWURWUVFMREFKRFV6RW5NQ1VHQTFVRUF3d2VSMlZ0WVd4MGJ5Qk5kV3gwYVVGd2NDQkdTVVJQSUZOMVltTmhJRU5CTUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUF2QUtPZXFDNS9wMEQxaXNDWUtRSmxWVU9yQjZJN0RMb2N1bkUvUm04ZHVHVGJ5eFFodDNDYkZWVHYzTjJMcDJmYmp4bEkrM3NPU0drMzNGVFlrVHF4Y2RKSXJKN1Nza0JjVVNOcmZLT2FRVC82S1FjUDRDbTdWKzY1NVRxK1RXeHl4V1FoRHlndDE1cW9QN011SzZiVDlTd3BDanBmS2hhTVNteVFhTW9VY1JBYkxxZHpCQ2FjMGh6QitaZStncUpsbldWOVVhU0kyckZzVnVINFpFMGNSTytNT3BhTGdNL3MyNDhuR0dIcDIyZXdTUWZiblBhQmJiOGlxeUFQK2N1NTJHTHNVcEtSSmViRStSNitQTVE5SkNkV2VRWlIzRGtmU2lka3YzbWNiNGpxMWlJdGErTXFLaFJud3JmWGg5MTFLV0xuWUFsOUVOQ2hMWDBjNlNqMVFJREFRQUJvMUF3VGpBZEJnTlZIUTRFRmdRVVdMdmhSQlVQbjh1TElmNjgrZ3YvTlpJd0dTSXdId1lEVlIwakJCZ3dGb0FVV0x2aFJCVVBuOHVMSWY2OCtndi9OWkl3R1NJd0RBWURWUjBUQkFVd0F3RUIvekFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBRkxyRGhhZWdlS0h4WWpIM0VQM3ZVQktobnpNMjA2QVN4Z2VZQ08yRWM5cE9sWUphZXFGRStzVWFtVVYvcHdqRGxxTmFTZ0ZneTdUd2VZa3ZPbU1uNHFTY3NIcXZKM3pHT0FpYWZ3YWgxdlVIZkNsWFI4K2F4TzJpR09VRjBKS3JaOVlZamJBYTUvNEhDbHY3akZQT2RNV1RPUXluZ29pSEFzM2prdVlqcENMRmxCNFZPaTNkMXdqQTFwblRkQktrQWI3dDhuVHZ3Ky9YYkZ2Y1FhNzNWSDdzanZvQnFEM2ZkTWZSY3VWcTRxVVp0WlQ2Y0dhZ1RIRDYxVHRxaDlvTUNaWGNEYlIxUEdabk5icXljc1dQRElLMG5wbUszLzNsZlY4Yytac3J5NmUxNzBtZkpNWnA3TzhtNkNTejYvVkxLK3lESmQ3ODQxd3BtZUtUZjZJblpBPT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBUXdBQUFBZ0NBWUFBQURubFVacUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFFblFBQUJKMEFkNW1IM2dBQUFBWmRFVllkRk52Wm5SM1lYSmxBSEJoYVc1MExtNWxkQ0EwTGpBdU1qSHhJR21WQUFBSzFFbEVRVlI0WHUxZERYQWNaUm0rTk9BZktvZzZXTzBRY3JlWDNPNzFSNDFvSGRTcXFEQU9nMytjWUVYQm9sWFJURW4yMjB0YUtUYzY0bWdCcXpCaUVVVnBCZHFpd3docVNkSVMydXBZU2d2UnRwVFNja2xqV3pIYWdqcFNSZHI0dkx0dmpydmsyN3ZkdmQxTGpuN1B6RE4zdC9kKzcvdCtmOC8rNzhhSzBORGFhcjJxT2RYWm9xV3lIOVIwYTBGY3Q2N1dkSEdUWm9qVkNjUHFTZWpXMW9RdUhzT3kvZUJUc0RtTS81NFpUOWorTFdHSWc3RGZCL3NCY0RQc2Y0WGZQOFgzYjJ1RzFaSFF6VThtVXVLZHlXVEhtNXFhY2kvakhBS0J5aWYwYkJyK0x3YVhJUFlQa01kcWZMOFhkV3BsczFBQTMxL1FqT3c5OEw4UzliOEJYSVIyK25EYzZEb3psc2swc2xua1FNeGtQR1hPOUVKdFZuWUdGNHNVeVZuZDhVVGFlcDhidys2TGFrQmo1aXpkYk5KUzFyeEVXbnlXeGczNkVtUGRXb1BQRGVqZjdlQVRHTXNIYUR6VHVDNmhiajBOL3BYbUFzcnVnczBXTFA4TnVCSmpaSm1XRWxjbDA5bVBKMUptVzB0TDUrdWlIQnVHa1hzbGpYODduaTRFelZuazlBdmtzUW41N0VTZGhyQjhCTXVQak9XUC8vNE9Ic1IvZTdEOFlkVGxmdFJoRmZnZExHOUh1MXdBZnpyNTVqQU9raVFLaHZWYkdCNkMwLy9pKzJpTmVSeDhGZ252UmZ4ZmFpbnpTazdORTBpSVVQYmY0M3dXbU5UTmQ3QnBLRUE3TFpmRkFZOXpwM3laVFNNRGlRVmkvVStTZzVRWUFJZk9tRzJld3NVakEvcmhXN0w0QmVybWo5aDBVb0IyT0IrVFpUVzRCL2s4T3lHL3lDaU9vVzFJWUg2SDhYUHo5TGJjS3ppbFFHaHBNWnZoWnlIR3dHM2c0MkJrODVaOG85MEc4WDBOaVNzMUl2MlFHazhLZFdzenQ0c25JUDhScVI5bURRWERJZFpTYkJvWjBJbDNTMk9YWlhZcEY0OE1VMTR3bksxYmVXNDFwTDNGRVFDSmxQVld0REcyZnV5VnJOUjN0QlRkU2pCOFlySUZveVZ0bm8yT0N6Qmd4RE5CQjZwWEtNSHd4aUQ5Z0szS2M2UGNrdkJHSlJpK01jbUMwWUQ0ZmRLNFhvaDlXL1lUQ1pSZ2VLTnZ3Y2hrR3RHMmUyVytha3NsR0w0eG1ZSkJheGxwVEkra05SUWRtR1Izb1VNSmhqZjZGUXc2Y0NyelUzdENNTERXdVFzZDNSK0F3M0tuQlE1S3luamhqZHhPbm5EaUNFWnVHanJzWVdsTUp0cGlXVUszQm1UL0ZmRXVkaGc2VVBlNkZnejBiUjZmYTZNbW5ZM2tsRHdoYVlqTFVVNmVzMjd0MGd6em03VmdVdTk2RDZma0h4Q2E2MlVWR0NNcThnMDJqUlFuaW1Cb1J2WWlhVHdtMm50Zlc5dkNrN1cwZFlIcy93SjE2M2s2ZU1adVEwVzlDd2JHOUsxc09xV0F2SVUwWDV0aURadE5iU2pCY0dFRWd0SFdkc3ZKOEUybkF1VXhpYnA1aFdNOTJvRGYyeWI4WDBLeDNyRU5GMG93b2dIbTBoSnB2amFWWVBqQ2lTQVlpYlQxZVdrc0ppYkNrL1BtNVU1aWM4cnhRcGxkTVJQcDdIbHNIaHFVWUVRREpSZ2g0c1V1R0hTUkQrcElWK1RKNHhIMUxHOWRqQ0hUaU1sUjRWaUcyRTdIUmJoQUtGQ0NFUTJVWUlTSUY3dGdvSjJ6MGpoTXRIT2VqbDJ3ZVFGWS9sR1pmU25GZkRZUEJVb3dva0hDTUJkTDg3V3BCTU1YS2dxR0lTNXZUcHRuaDBYVSswNVpuQUpERkF6RDZEZ2QvcDZXeG1IR0RmRkZOaCtIMFFiMHdhT3lNbU9FK09VTkkvY1NMbEExNmwwdzBGNjc0N3E0cFJwR2NkcWE3a3VSNVV0RUg0NWdEbXdLaS9EWmo4LzdJRVMzNHJPemVhYVl6V2xVaDNvUmpKb3pSTUdvT0FFTmEwaTJkVEdHZUVwOFRGSm1QRHZZdkdyVXUyQ0VRYnFoa3NPRkJzeWxpMld4YXNUajZOZDEycHNYdjU3VENRWWxHQzRNU1RCYVc2MDNvbzFkYjZxenFWdGZZbk01NkFwQnc5b3hvVndSTVlsR05LMzkxVnlpS2lqQmlFWXdtbFBkTGJKWXRTVGE3cUhpQSt1K29RVERoU0VKQnRwdmhkVC9HSFd4djl6V3hSaTB0UGlFdEh3SnhiVnNYaFdVWUVRakdIUndHdU9oMGdWNWtUT2VNaS9oaFB4RENZWUxReENNczFxdFZnenU4cmV2cHl5UGp3SHdzcFZoL1N1VldqS2RDd1NHRW95b0JBTzVwODMzb3ArZWs4V3NGZEYrd2E4U1ZvTGh3aEFFQTM3V1RQQmJSSFRjQWV4R3ZKVE5IZlFNTmNmNkJzK1A5ZWJueGZxZVBKV1gya0NaekhnZkV4akNHUUlsR05FSkJzRitFSkV1ZHN2aTFvYmlUNXlLZjlTTllPaldaalR5ZmFIUnVkOUFIb3RZcFdBNE54cUpZMUxmVE5UNUsyd2VpNjBmTWlBVUQ0S2pCZmJtajhiNjhzdGoydzdhRDJxaGZVLzB4eTZacnpIUzJxdWxwVE5sK3d5SXVoY01qQlU2NjFRTm0yY3VQb1BEUllUUkJqcGJSMk1BT1Y5SFp6T1E5OC93L2ZZd2lQSHRmamUwYnYyRmsvQ1BlaEdNT3JzT28vTHQ2N28xWERnVnVpRS9Cd0x4anhLeEtPWEcyTTZkdGkzNnc4T1JkbkdQN1RjZ2tGdWRDOGJVdkE2amxraWtPOCtUdGcySU1YU1l6ZnhEQ1lZTHF4QU1MN2V2bzc3dHRuRi8vMG5Za3RnaEVZbHhITHFhekoydGpFcWJzOWl5U1dYbjJ2NERRQWxHL2FPc1lCaldBVGJ6RHlVWUxnd3NHTGxwS0x0VjZwTkpIVlo0WUhMZi9uZkpCV0lDaDJIZFFFWGk2ZXdsTXI4bGRKNUhZdHY3aFJLTStrYzV3VUQ3N0dVei8xQ0M0Y0tBZ3VIcDlHZEtYTVhtRUl4OHUwUWNYUGpZYSsweW1Vd2oydXR4cWU4aW9vNFgydlkrb1FTai9sRmhsK1NQYk9ZZlNqQmNHRUF3NkhvSzdBNlVuY2lvNThHbXBzdGVlQjFENzlCWDVlSWc0ZjNEcDNPcEdPTE1sL2tmeHgyeHpGcmZqOFZYZ2xIL3FMQkxzb1hOL0VNSmhnc0RDRVlpVmY3MmRXYnBKZHc5Kzg2UmlzTjQ5Zzd1aDNWaEY0UEY2UW1KLzFMcTFnSXU0aG1WQkFNVDl1N3g3MHdKZy9UWWZVNmhMSlJnVkVhRlhaSUgyTXcvbEdDNDBLZGd6SjV0bmdLZkI2UyttUGovMEl3WkhTL25JZzVHUnhzaEJnTlNrU2psWWk1UkFQcnVVbG1jWW1KeS9YbkczSEV4SzZEaUZrWkV4QmpZeUNtVVJTWEJRRHVQb0E1Ym8yYlN5TDZkVS9JRTNpcVVuZ1lObTJnRDE3TjArRzhWcCtRZlNqQmM2Rk13NHJwbFNmMFVFVEZOTmk5RnovRE1XRy8raUVRa0hQYm1OOFMyYlp0NCtiaHpqMG41SjNpQmRGczFsL0FFMUwydUJhTldUT3JpQTV5U0p5RHY3OHI4MUp5ZXJ5NldRQW1HQzMwSVJ0T2MzR2xvcDhOU1AyUFV4Vk5sMS9UcjhxMnh2dng2OFBraXNmZ25mbDhmNng5MGZRVWw0bjVHR3ErWXVqaHk1cXp1MTNDUmlsQ0M0WTExS1JqMFdrZ3RGL3dtUlNVWUx2UWhHRjRtR0FhTFlQUHkyRGcwUGRZejlIN3Nwc3lOOVF4VWZDMGlYZnlGUHRvbmkxbE1HcXhjcENLVVlIaGozUWtHeENLcFcrL21kSUpCQ1lZTFBRb0d2WVFhOXVYZjcxbHA2NkpLbEh0OC9Rc1VSKzBYVFh1QUVneHZyQS9Cb0xmcjJRZkhyL0d6bGVtS0tTTVl1bmtIVFN6RWxMNCtzRmFDZ2ZvK0IrN1dqT3puMkxRc25OY0dpRDFVVHViUG9kbkY1cEdBenBnZ3Z1dFdCdXI2SDd0T3VyaVVpNVFGWFNXS010L0hCTjVFYXlYVXIrdzlNY0VwanZHSzR2Zklid1ZkdzhJcGxBV05CWlM1RHZXaE41WG40ZWRvcWQ4b2lGeXgyd2sraXUvMEl1aWw5S3dUVHNrVDRtbHhEdHJ6Um01WGpQVW8ycFhlNkc0OWdqeHZ3K2ZDaE5HaGNmaHdRQzlqYVRMRUc5eG9HRmVXdmlZK1V1U20yUStjb1hkeTZOWWlOT3d5VlBySEdCaDNKb3p1VUNzZVQ1bVhRZkYvamhnL3hPZlhOZDI4Z2pvMGFIM3BMQWxOTkdkdEw1WWk1NXZRZ2JlajQrNmcvOWdzTXFBT0gzSGFTZndFYlhjRHZtZVRodlVwVGU5Nnk0UXpNNzZRbTlZMFo5RnBkUGNtNnZOcHNBdDlzdHhwTyt2WDRFYkUyMG9UQ2NzR1NvbmwrQi9mNldhL1ZjVjUwYVNQeDd0T0RlRUJ4ZzEweHkrZGtvWGdmQWd4RmlEZTE5QU8zME0vckVRTzl5TG1BNGkvQmIrM2wrYm5rUElITjRQclVMKzErRndCMjJ2aG94MWlmMUc4MVhwYnZBMjVaaksrcjJseFIyNGExZDhSUHpFZnV3b1djc0VXaUpNellqK0kzdytWdEtzaEhnSC9BUFpTbnFqVHpmaTh4aDY3dW5VdVBkckEyOE54WXJIL0F6M3RJNGo1K1RPTEFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCJdLCJleHRlbnNpb25zIjpbImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6IjIzNzg2NDUyZjAyZDQzNDQ4N2VkYWFmNzAzNzI2ODgxIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6dHJ1ZSwidXAiOnRydWV9LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fV19fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMi0wOC0xNiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IlNhZmVOZXQgZVRva2VuIEZ1c2lvbiBDQyIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjIwODIyMDAyIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjItMDgtMTYiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6Mn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNC0wNi0xOCJ9LHsiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbImI2ZWRmMDI0M2I2MmIyMjY4MGIxYWI2ZTFiNDg1YjMwMmE1Y2EzY2IiXSwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiYjZlZGYwMjQzYjYyYjIyNjgwYjFhYjZlMWI0ODViMzAyYTVjYTNjYiJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiU2VjdXJpdHkgS2V5IE5GQyBieSBZdWJpY28gLSBFbnRlcnByaXNlIEVkaXRpb24gKEVudGVycHJpc2UgUHJvIn0sImRlc2NyaXB0aW9uIjoiU2VjdXJpdHkgS2V5IE5GQyBieSBZdWJpY28gLSBFbnRlcnByaXNlIEVkaXRpb24gKEVudGVycHJpc2UgUHJvZmlsZSkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2LCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjJ9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50IiwicmVtb3RlX2hhbmRsZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRFBqQ0NBaWFnQXdJQkFnSVVYemVpRURKRU9UdDE0RjVuMG82WmYvYkJ3aVV3RFFZSktvWklodmNOQVFFTkJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNWjYvVHhNOHJJVCtFYW9Qdkc4MW9udE1Pby8ybVEyUkJ3SkhTMFFaY3hWYU5YdmwxMkxVaEJaNUxtaUJTY0laZDFSbngxb2Q1ODVoKy9kaEs3aEVtN0pBQUxrS0t0czFmTzUzS0dOTFp1ano1aDN3R25jcjRoeUtGMEc3NGIvVTNLOWhFNW1HTkQ2enFZY2hDUkFIZnJZTVlSREY0WUwwWDRENW5HZHh2cHBBeTZua0VtdFdtTW53TzNpMFRBdWNzcmJFNDg1SHZHTTRyMFZwZ1ZkSnB2Z1FqaVRKQ1RJcStEMzVod3RUOFFESXYrbkd2cGN5aTV3Y0lmQ2t6eUNpbUp1a2hZeTZLb3FOTUtRRWRwTmlTT3ZXeURNVE10MWJ3Q3ZFenB3OTF1K21zVXQ0cmowZWZuTzlzMFpPd2R3TVJEbkg0eGdVbDVaTHdyclBrZkMxLzBDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01COEdBMVVkSXdRWU1CYUFGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFNd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkRRVUFBNElCQVFDM0lXL3NnQjlwWjhhcEpOanh1R29YK0ZrSUxrczB3TU5yZFhML2NvVXZzcmh6c3ZsNm1lUE1yYkdKQnlKMVhucXVCNXNnY1JFTkZ4ZFFGbWEzbWlvOFVwZjFvd00xWnJlWHJKMG1BREcyQnBscWJKbnhpeVlhK1IxMXJlSUZUV2VJaE1OY1pLc0RackZBeVB1RmpDV1NRdkptTldlOW1GUllGZ05oWEpLa1hJYjVIMVhnRURsd2llZFlSTTdWb2xCTmxsZDZwUkZLbFg4dXN0Nk9UTU9lQURsMnhORjBtMUxUaFNkZXVYdkR5QzFnOStJTGZ6M1M2T0lZZ2MzaXJvUmNGRDM1NGc3cktmdTY3cUZBdzlnQzR5aTB4QlRQclk5NXJoNC9IcWFVWUNBL0w4bGRSazZIN1hrMzVEK1dWcG1xMlNoL3hUNUhpRnVoZjR3SmIwYksiLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVRuYmJHSVIyTkh2enFJS0ZBZVF3RzFYQmlzMHdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFRWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPc1hqM2swNEJhbjRUWWR0WktxRC9PUEp4eUR5YVBtQ0JVRlVpYVpJZ1R0ZVpuajNYMjVEaGdwWlpYc0M0RDB5ZEljcmxBNndOVUluT1JML0w5ekJiVEVJTUFWTUdvNmc3VUtBbWIyTUY2QUhibmhZSmQ5ZWlrdXBWTldTaEhOWU5jNEdCZE8xWU42QWZVcXZKaEhiZTNWNFNOTVBtQlJFS0pQVno3VGh3Z21nZ1RlOFdzMkswL3dzcXYyd1NFN3BiQ0JzVVpoSVg1MWJaTTNwcUR3SlBUbVJGRXZ0MC82dEc1ZU84RjNqMTRPWHFmRWhtam4xVnZ4S0RZUU9MWkF4Q3d3Z0MwUDRDZGZXdjN5OFBTUjhJMzU0aE8xWStHek5qdklxWDM4TktMeXd1SVlIRmVyT3hObHhFTUJ2RmhZQnVSdVlBa2tnVWFQcU42VUJoc0lMcnNDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNDb1JIaGl5Tm5iblhSV0lMNlpCWG9CWDlZVE1COEdBMVVkSXdRWU1CYUFGQ0FvVUNFYnBGcGI2RlBMblozRjVQeHNMM29mTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFDUUZhZkpJMS81V2c5Q0VFaW1FMVJQNTRSZ1F3VE5UT09Rc0xBQ1RlK3JJdGxGUXpDOVpEaHJWODI4eVg3anp5K0FBc3AzaXpLN1QxdGgyZGw3bSt0dTBzdzJQYS9vbGMwMm50NlB5SXczNDhnYUh6aEkxKzBLRTQ1cXh2RkRlTDJsTXhiUGZDWXZ5RUVhWXpqaVFFTFU1OTUxcFhHV3lLTWEvNGZMdE8rWktPWGhNdVZlcTRyWERQSTU0VzZKSE9pQWFpS2Rpdys1ZTNjMmt0L2pGSVF0TTZ2TVhnOUxORnpkakVUTnQyMFZYOVFldlJwRlpmdWNNRzl3Q2FRRG9GbFB6cFRNSktoUGV2L2ltSm1aWWhLZnIwbExjZW10cWpJeExBb3FaZE9ZZkhCZzYrdkFjZFBJL2lhdUdwVUF2N1grVUtObUR3aloyQmFINHNMd2hCMm0iLCJNSUlEU0RDQ0FqQ2dBd0lCQWdJVURxRVJ3KzRSbkdTZ2d4Z1Vld0pGRVBEUlozWXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFESTdYbkgrWnZEd01DUVU4TThaZVY1cXNjdWJsdlZZYWFSdDNZYmF4bjlnb2RMeDVzd0gwbFhyZGdqaDVoN0ZwVmdDZ1lZWDdFNGJsMXZielVMZW1yTVdUOE4zV01HVWU4UUFKYkJlaW9WN1cvRStoVFpQLzBTS0pWYTNld0tCbzZVTGVNbmZRWkRyVk9SQWs4d1RMcTJ2NUxsajV2TWo3SnRPb3RLYTlKN25IUzhrTG16WFhTYWowU3dFUGg1T0FaVVROVjR6czFidm9UQVFRV3JMNC9KOVF1S3Q2V0NGRTVuVU5pUlFjRWJWRjhtbHFLMmJ4Mno2b2tWbHR5RFZMQ3hZYnBVVEVMdlkxdXNSM0RUR1BVb0lDbE9tNGNycHduRFJMVkh2alllUEdCQi8vcEV5enhBL2djU2N4andhSDFaVXc5Ym5TYkh5dXJLcWJUYTFLdmpBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlRxdDBLUW5neDdaSHJiVkh3RHVueE9uOWloWVRBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBcVFhQ1dNeFRHcVZWWDdTazdra0ptVXVlVFNZS3VVNitLQkJTZ3dJUm5sdzlLN0hlMUlweFowaGR3cFBOaWtLam1jeUZnRlB6aEltd0hKZ3h4dVQ5MFB3M3ZZT2RjSkpOa3REZzM1UFhPZnpTbjE1Y0ZBeDFSTzBtUFRtSWI4ZFhpRVdPcHpvWHZkd1hETTQxWmFDRFlNVDd3NElRdE15dkU3eFVCWnEyYmp0QW5xL05EVUE3YmU0SDhIM2lwQysvK05LbFVyY1VoK2o0OEs2N1dJMHUxbTZGZVF1ZUJBN24wNmo4MjVycURxc2FMczlUYjdLQUhBdzhQbXJXYU5QRzJraktlcnhQRWZlY2l2bEZhd3AyUldadnhyVnRuM1RWMlNCeHlDSkNrWHNORDA1ZENFclZIU0pJcytCZHRUVk5ZOUF3dHlQbW55YjB2NG1TVHp2V2R3PT0iLCJNSUlEU0RDQ0FqQ2dBd0lCQWdJVVVjbU1YelJJRk9nR1RLMFRiM2dFdVpZWmtCSXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFEbTU1NWJXWTlXVyt0T1kwcklXSGxkaCthTmFub0NaQ0ZoN0drM1laclFtUFV3MGhrU0c2cVlIUXRQK2ZaeVMzM1ZFcnZnK0JRcW5tdW1nTmhmeEZya3dFWkVMZWlkQmNDOEM0QWc0bnFxaVBXcHpzdkkxN05jeFlsSW5MTkxGY1pZLytnT2lONlpPVGloTzUvdkJaTWJqOXJpYUFjcWxpWW1OR0pQZ1RjTUdhRUF5TXpFTU55Mm5tNkVwK3BqUDVhRjZnaTIxdC9VUUZzdUoxajJSai95bk0vU2RSdCtlY2FsNU9Zb3R4SGtGYkw5dnZ2MkEyT3Y1SVRaQ2x3NGJPUzlucHlwUWltT1o1UUFZeXRtWWFRcFdsL3BNWXo2elNqOFJxa1ZETkVKR3FOZlRLQTJpdkxZd1g2bFN0dE1QYXBnMEo4NGw5WDB2b1ZOL0ZwUzRWQ1ZBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlFnS0ZBaEc2UmFXK2hUeTUyZHhlVDhiQzk2SHpBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBWU16Z0xySkxJcjBPb3ZRbkFaclJJR3VhYmlIU1VLU21iTFJXcFJrV2VBdHNDaERFSHBYY0ovYmdETktZV29IcVE4eFJVakI0Q3llcFlldmMzWWxyRzhvN3pIeHBmVmNhb0w1U2V1Smt6SHhLbjRiVGFTcDkrTXZ3YW1ucDY0a1pNaU5iRkxrbmZQOWtZS29SSGtNV2hlUkoxVXNQMXo0U2Nta0NlSUxmc01zNnZxb3ZxaldDbEZzSnBCY3NsdVlIV0Y3YkJKMW40UndnK0FURW9wWTRJZ0d2Nlp2d2MrQTlyK0FUMmhxcG9Ta1lvQWwrQU5Zd2dzbE9mOXNKZTBWK1RBOVlZL1VsYUJtUFBUZDAvL3I5d3ZjZVBXWmtQaktvQUMvelVOaGZEYmg0TFY4R0hzM2x5WDJYb21ML0xOYzhKWXp5SWFERWhHUXZlb1BoaC90cjFnPT0iLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVIzOG1xMjZTZjJzelZWMkJkRzZXRU43a3VXVXdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFSWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFOWTBXYjlvUG9Sb0tvUXlXUGFKcHoxMXZyV1RnNnpUdG1OajJWb0tSbnl2S0dScXB6YjgzdzVsNllBOTZVWWtZQkRRUDBpbE8yRFBlNndXcVZSNXpEZlJ6ZGNIOGJoK0w3ZEdHdmFlNmhSVFpoa0ZrQ3BYRHM0SGNja25yRGY4RkNsSjdIZTM5SmY0Mi9HMVFtMnp6OVdXbXJQWHRnaUsveDA1R2pzUWZHdURHMXpmNVFUVVVpZThsd3ltSzNUZmRPdk5lZUpBQVBlMnBuN0l0ZlJiK3JWck5XaUR6bFJuMnZObloyd1BvNHdIL1dKNmRoWFpHK3JNV1QrYTZCb2NnMVVmSXc2a2R1bkc0YlRwWnpzdmFjRll5UjBtcGYrRGVPbnBTV0FteXdKV0h2VGxmMllYeEZ5ZVhjVEFDZFFsY01OR0oyVmhaUTQ4eHRQNS9SQlAvOGtDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNoeTQyb2tpcWNUUzFpcWEvSFJXamtCbjRIL01COEdBMVVkSXdRWU1CYUFGT3EzUXBDZURIdGtldHRVZkFPNmZFNmYyS0ZoTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBbitSSElQYnRNRUROZFQxZzhIL1JpdEFrVWRMZ0F0MXRXR1dubGo5a25idjQvNEdsWDdDOXA0NWVmUE85L2FaTDZPVjFYUktCaTZLbXRCVzVLN251WUVuTXgvNUJxQlNiTFQ3cmhkdUM0OVRCZU1iOVBIZFhzVGxTVk5ZZWZyMWRHaWRyNGoweFZCUUxiMXJrbkRBYmRXRHpLZnZuYXlLTzhGcndlN0h4ODQzTUcvckorYzBYcnVVdmJmVlRDSExpSVdoTTdvTkRoTDh4b2I2eFVvOUtMS2NTTCtJdFlzTzMvOVdiOFE5R2pzcUw0RlhzRGNHMVNhWWg3S3BmdU1tT2l4cXpKWk8ybklpY1BZUmcxSTJTdWlVZllPNzB0bWRIY2JsK2tTUW1TWXQ3cnE0dmlJTGcyR3gzajlySVR1V1RqYmFVYVNTUXhnT21NU0h1eXpNQUMiXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZkNBWUFBQUNHVnMrTUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFIWVlBQUIyR0FWMmlFNEVBQUFiTlNVUkJWRmhIcFZkN1ROVjFGRC8zZDU5d2VRU0lnUzlBUUFYY0ZMQVFaaTlmcGVWejF0WS9XVFpyNVd4cGM3VzVrbkxhNWpJM1o4NXNyUzJuTTJzanRXd1pTN0lVSDRINHhDbkVReDREQVpGNzRWN3VzODg1djkvbEluQnZWSi9CNFB2OW51LzVudS81bnZNNTU2ZnpBL1F2MEhiL0lyWDNWRktQbzQ1Y25tNGluVUlXWXdMRlJtWlFVdXdqRkcvTjFpUkhoMUVaME5SVlJ1ZHF0MUJkKzJuU0t5Uy9PaHlzMCtsazNlLzNrUTlxdkQ0WlV0YTRWVlNVdVkwZWlweWlUaEFmb2NvT1JWZ0R1dXczcUtSaUFkM3JiY0V0alRqWUlvZjZXYUhzQ216VlBXQ014K2NnaDh0THFXTUthTVdzVWpMcW8yUnRKSVEwb096bWVycFF1NGVzWmdzT05rR3hIN2Qwa2R2VFQxN3M0T01VN1ZJOFpoamdHYU0rQXE5aUVOdThQaWYxdWR6MDdNd3ZLV2Y4R2xWb0NFWTA0UEM1V2RUYVhZRmJSOHZOdkw1KzNLZ2ZiNXhOTXlhOVJhbUppeW5hTWxHVFZ0RmxyNmJhOXUrcHFuRVg0dU11UlJnalNZRWhyTjd1dEZGZTZscWFsN05ma3c1aW1BR0h5blBwYms4Vm1ZMHhzdG5wdGxGQ1ZDWXR6VHVCTjgzUXBNTGpUdGV2ZFB6U1VuSjdlOG1ranhaMzlmWGJLRGZsZFpxYnZVK1RVZ0duQlZGNmZRMmlQSGc0VzE2VVdVd3Z6YmsxNnNNWkUrUG4wcHZ6N0pTZXVBeWVzOGxjcENtYUt1by9wK3FXcjJVY3dJQUhXcnZQMFlFemhYQXRMQWJzc0hocDdpR2FtdnlpalA4cnlxclhVV1g5WG9vd3h5QXVmTkJycDQzUE9CRlhabGtmOE1EUmlxY3B5b3dBd3B1ejJ4K2ZXdnovRHRkZTlzbXN6eWd0Y1I2QzF3YmR6Qmw2T2xxNVdOWVk0b0dhdGhKTXJrVEV4MGpBUlNIQVZzKzVyWWtRTlhiK1FnZlBMc1E2Z1h5SW5zcmVRZm1wbTdSVkZZZkw4Nm4xZmlVT2tZdlNoa1VQeHZidWt6b3k2SzFpaE0xaG8zWHpXNkV2U2ZYQStkcGlXR2FXZCtkb1h6THptR3dLWUZMQ0FzUkFsUEJBaE1sQ0ZYVTd0QlVWUHI4SGdWY0pIV3ErRjAwcGxyK0RNVGRyUDR6dnhZMTFrTk1oeFQrU2VUR2crZDRWNUxRSml0eVVHSk5COFZGWnNqZ1lCWk0vSUkvWENUa2owcXlET3BGMkFWUTE3Q0lqVXAvRG5UMVVrTDVGNWdkaitzUzF3ZzFnRTNnaWdtNjBmQ1h6U25QWGJ5QVBiSVh2K0lEcEUxNlRoYUhJUzlza3lobG1NRTVGM2NmcUFLaHEyQzBFNVBIMWdZYVhhTFBEa1pHMEhESk9uS1dIcDUxSTB6NVNPdXg4ZTFXQXVaemRIUXJUa3A4VG1qWG9JK2xhMHdHWnN6dWJxYk8zaWZRNkEvVzd2VlNZc1YzbVIwSkt3a0tjNFdIaUJrbVI4STNDQ2dJODdvT0w0cXpUNVArUlVKQmVqRU9nQVBLOGhZUHphdE0rZUlUcDJJTzl5VFFtZXJvbVBSeHgxcXhBY3NpbGUvdWJTZUViY1dRR1lFQ2doY0xZMkh5S2pvZ2pIMjVoTXBqcFV2MU91Z2xpNGVoMmVSdzBPMzJiSmpreXVDZ056ZzB2emxZTVNpU3MwdW9vNE1HN2hNT2pDRWFYMXlGRTBuU3ZqQnp1VG5FcEs4Nlo4SW9xRkFJdWJ3OGtnOUFyRWFSRVdTWkkrakg0WGJwNmc5RTlFbkpUM29hUnpETitNVUpCUURIbjU2YThvVW1FQnVzT3hCcy9ONSt0SkViUGtBRkRqOFVHdk9zL0lXdmNTZ2xHQmh2UzcvRlRZZnBXR1lkRFk4ZlBBeFdTQTM1c1RDNHA0K0xtNEFhcUlvUGVRdGZ1Zks2SmgwWmh4bGJzVVhPU21YTmlmRDVaVEFreURvZmJiY2NseG5BOFdOQXF4Q2JSTnlraFh4UXBhRHc2N2ZYVVlic2lHMEtodHYyb2VJdmg4cmhRTVlPY0VBcVhHL2VJK3puZ09jNXl4cjhxODJJQU0xYy9GTEZPcGxxdTVlRlFYck1aekdjVkNqWWJMV0c1STRCVDFldVJybGJ4dE5PdE1pdERERWhMWElJeW5BQXZ1T0VXRTNYM05kQWZ0OTRWZ2FHNDJYSVF0MFpYNlBlQ0UvcVFGZTlySzZIeDdZVTUwS3ZIN2ZXNGZTK3E3S0tCSnhzZ2dCWDVwU0FHaDFqSXJWaDV6UTZ3M1JmYWFoQlhtL2FDYkNaVGpDVUZVVHlXWnFXOXA2Mk1qSlBYVnFPclBnTU80TnY3NEdrZitvd2Z0TlZCRFFuakZKcUhTdzE3cFh2aFdXNUtacWUvUTQ5Ti9VU1RDQVZXb1FYRklIQkhYWGUzRlByVURzdUdEbXRGL2hIS1RIcGVreGhpQU9QSStTSnE2UzZIRjRJOVlXemtCSlRvNDZpVU16V3A4UGlyL1JpZHVMeEtZc1Nrc1Y4dkxsT1F2aEdYMllsUjBPQmhCakMrdS9nRWN2WTBBcEs3WWs0MU54alBTUW5XRkhURjY2VXJqZ2V2QjhDdTVhK2wydllTUlB0dVZEbzczaGhkTVNIblVYN3RUanNWWkd4QWwvV3B0aU9JRVExZ25MMjltWDYvdFIxdG1sa1lqOFc0WCtDU2pXY1VER1kxTnBTL0M3aFNLcWlNTE0vbDJRbVNXWjczRGR6K2dpbzhCQ0VOWVBRNDZxbmt6d1hVYnF2Qmt4alVRc1dmWkZnYnVvM3JBZit3TjdqT085MCt5bng0UGkzTCswbllMMVNjaERVZ0FQNGdQVi83SWQxcSsxSFNobXVHa0lxV1JQZ3l4TUZxUDhIZmpUbmpYd1k1YlFmYkpjdDZPSXpLZ01Ib3RGL0hlMWVnc2F4SFNxRzZ3ZmRtUTV4OE55VEZGcUJjcDJpU293SFIzeWs1KzM2aEY3dlhBQUFBQUVsRlRrU3VRbUNDIn0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMTItMjIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2LCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IlNlY3VyaXR5IEtleSBORkMgYnkgWXViaWNvIC0gRW50ZXJwcmlzZSBFZGl0aW9uIChFbnRlcnByaXNlIFByb2ZpbGUpIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVMkYxMDAwMjAyNDEyMjIwMDQiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMi0yMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzZ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDEtMTEifSx7ImFhZ3VpZCI6IjVlMjY0ZDlkLTI4ZWYtNGQzNC05NWI0LTU5NDFlN2E0ZmFhOCIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiNWUyNjRkOWQtMjhlZi00ZDM0LTk1YjQtNTk0MWU3YTRmYWE4IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IklkZWVtIFpTTSBGSURPMiBBdXRoZW50aWNhdG9yIn0sImRlc2NyaXB0aW9uIjoiSWRlZW0gWlNNIEZJRE8yIEF1dGhlbnRpY2F0b3IiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MywicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInJzYXNzYV9wa2NzdjE1X3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoidm9pY2VwcmludF9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZhY2VwcmludF9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGF0dGVybl9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImhhbmRwcmludF9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImV5ZXByaW50X2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibG9jYXRpb25faW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMTIsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDWGpDQ0FnV2dBd0lCQWdJVU9xSnVRYkdYMW9kZ0l5Q1h6UDBvUE1kOXgrTXdDZ1lJS29aSXpqMEVBd0l3U1RFbE1DTUdBMVVFQXd3Y1NXUmxaVzBnUmtsRVR6SWdRWFIwWlhOMFlYUnBiMjRnVW05dmRERVRNQkVHQTFVRUNnd0tTV1JsWlcwZ1NXNWpMakVMTUFrR0ExVUVCaE1DVlZNd0hoY05NalV3TkRJeU1Ua3dPREl6V2hjTk16VXdOREl3TVRrd09ESXpXakJKTVNVd0l3WURWUVFEREJ4SlpHVmxiU0JHU1VSUE1pQkJkSFJsYzNSaGRHbHZiaUJTYjI5ME1STXdFUVlEVlFRS0RBcEpaR1ZsYlNCSmJtTXVNUXN3Q1FZRFZRUUdFd0pWVXpCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQkNKU1B0ZWZtSGNVYm5uTi9zd2Q5Y2tLNkZKQlA1Qkp5TTFkMjFUbkFCb1NxdDA2MTZsMStxUFlueDNGT25RRWlQbFB1aTVNajVVTlFNVTErS0ZCVDN5amdjb3dnY2N3RHdZRFZSMFRBUUgvQkFVd0F3RUIvekFPQmdOVkhROEJBZjhFQkFNQ0FRWXdIUVlEVlIwT0JCWUVGTjFjTmZ5Y1loNGk0MzA2aTgyY28vYkhhM3dqTUlHRUJnTlZIU01FZlRCN2dCVGRYRFg4bkdJZUl1TjlPb3ZObktQMngydDhJNkZOcEVzd1NURWxNQ01HQTFVRUF3d2NTV1JsWlcwZ1JrbEVUeklnUVhSMFpYTjBZWFJwYjI0Z1VtOXZkREVUTUJFR0ExVUVDZ3dLU1dSbFpXMGdTVzVqTGpFTE1Ba0dBMVVFQmhNQ1ZWT0NGRHFpYmtHeGw5YUhZQ01nbDh6OUtEekhmY2ZqTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUNMTm1qeHVFSjI1RkRnTTZHallCWFhVZDNjMHIyMk01SlBxNjNFS1JNdW1BaUJPL3BCbUVlNnlJbmNYWjFseTAvak9seG1uVzZsN05Ka2ZVK29Yd09SekxnPT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZ0NBSUFBQUQ4R08yakFBQUpEa2xFUVZSSVN6MldhNnllVlpYSDEyMC96L05lenEzblZucUREb1cyOUNJd0RXMlJHWEZxd0JJbGcxVVNaL3lneGhpZG1laEV4V1RpTlg1UVp6UXhNVEh4eTJSaUhDUXo2RGpoSW9ZSXpvQ2xJQ3BVS05BQ3BZVzJwNWR6djd6djgreTkxMXArT01YOTRaK2Q3SlgvMnI5a0pldVBLNzNtcC9jOWZQN0lvN251QVNLNHcrV0RTSWlJUUlDRURsUzEvSldUSVJ2dTNHWkprUmlCQ0JHUlZpK0FSTWdJeEVCUVZPMXFkUGVodXcvaUF6OS9mUDdoYisyNXFjbUtpTzdnQUlSSXlJVEV5SUlzeU93dTNRRjY3Sm1CcEhUdzFod3RFRE15SXdreUF3dUpvQWh5V0syWE12enhoWE1MK2g1NTdUZVAzM2I5bXhMV0VqYUFpRzkvQ3BtSUdaaVJDRmlRWkhDSUJnZXdNUjRjeHBVNkFESXlrNFMzcmVWeUd4WVVJU2x1MkxQaC9wKy9JSG42MU1BTm84czlSR1FBUVdBaU5oUkNjUklIcVFvcVNra21kWmE1Wlc2VStrbTRDS0dVN0p5Vm5RS1JPQXF6R0FtU0lKSVpkUWVIbU40UUVVRG9Cd0VKRElSSXZNcWVMQUJKMWVKc2NuWTZYSmlSUnVtTk01UWRubjRlTzEyZm5JU0p5YUl6Vk1UTXdOeHFseVFDekVpTVJBNUFqQ3drQ3l0eWNXNDBha21NeUV6RVJ0eXFjR2dJT2NoS0RLK2REaWRPU3k5eXU0UGJ0aEVLbnBtbS9obW9UdW5XYStQMmJlWGdTQWtzaXozcjE1R1lnUWlSREtBczg5eGNrbU92bDBXeElSc2hBU0tpb0RraXdnZHViMW9zdjNxcU9INWEvbm9mN3RoS2E5WndVUVlVVVplRkZYcmxEWDM4Y08vbDF4YytlS2hkdGZrWGoxNmFtZEZXbTh3QUFCd2dNRDczN0JKKzhkQW4zdnZPK2FpQkdKSFlrZHR0L08yeFVnMVZ2UmZsb3gvRThYSE9Kc21DazZBSWgxQzFRdEVLQzh0dzcvMlhadWZ5NXF1cXFRdDY4T0JFVmdNSEFIZXpJUGpRUXhkay9XVGVjYzFpazFzc2pCS0FSRVMyYk1rZi9uUjU0QUQrNDBlWldCYjdqQ0ljaEZnd0JHRHBxL1I3M09xRVQzMXk4NDkvOHRibnYzenB0V04vT1RoVXBLU0VBTzZXTFJSdzlMbDV5VTdSMnRFcU5pWVROUjVveWNzbitOcnQ4SkVQQkdMT0lGS3VUbDVBWGxWMkZtUk9odUQwb2JzM25YNHp2bmhzZnYvZThYb2xJWUtiV3RaU1BOYVprSW1rd2hBd0ZFNmhxSXFreFlPUDBZZnVEQU9ERWowQUI1QUNRMmtVRElPaUFBZEhCbVJpaWNsYmxkeDExOXFISHJ5NHVGQXp1YVhrS1YzV2JFSk1YQlNjQXdzN2NMc1RqcCtFNUw3enVxbzFVQlVveE9Ja1ViSFZMa01ac3BNNmxxVmtneWFhSURMRGpoMURRYVplUFRGLy9hN0JyQmxjMGRSTndWU0FDS2dBRWlCR1pKRHc0cXQ1Lzk3UTZwU3Z2NlZTWUtnNGxENDYxcHBmdHNYei9hSGhLaFJ5Y2JyZmJrdTNLeW5xeVpNckV4UEYvcjBEeno4M3YzTnJTMU1DeTVaVVZTMmJjS0JRQmN1QmhFbllPWnk1a045M1k2dXg4TVF6aTFWSHA4NHY3dHcxZFAwN3lpY1B6eTR1MmZickJrWkh5NS85ejlsdFd3Y08zYlgralRQTFA3bnZyWGZmTXJKbGMvWFVrN094MXdpcVdRTFBaSXF1QklUQXdVbWNBb1d5VGlGbUhCNnRxQ2h2MkRPOFpxejY4ci9PdGJ2RkU0ZG52L0taNlMzWGRqb2RtWjZ1di9GdkY3NzV1Zk16MDczZlBUdjN6ZTlkZVBycGhlRXVOSTB0TGRTZVlvNHB4NVJqTkRWNTZRUTgraHZJcWtCZVZyNnc3SXNyVUhhS2RyZTZhYy9nRDM1NDZxdGZtRGp3TjJzZi83K0xJOXRoZmk3dDJ6dCs5T2pNWno4eE5qNFJIbnpnM05SVSt2d25KNWtna09ib0QvOXlmczB3cHFpdUp1ekhYalp5Sk9PZ1hCZ1hKc0VvQUJGeHFOclZJNythZnViWjVwNTdyaUdSbTIrZXVQL2U3ZWVuNm5zK2QrejRLOHViTm9SYi8ycnc2OStaR2huQ20yNXNMYzBuc0docVRTL0ZYbXg2S2ZaejdPZmNtT3plSGU0OE9OZ2twaEJDV1RRSlQ1ODVBeHhPbjYzditkS3JoKzZjUEh4a1pueThuSnVMODNQeHFyL28vT2o3OCt2V3lmUjAvcnU3eS8yN092dHVyRjQ2RWMrZHRhYVhDUHh2YnkrNkxVOHBXOVpTYkhrSmhJUzRLQW1KUWdBT25aWjB1aksvcE4xdStLZC8yREErMWpwN3R0OHFjWGlRWHp0ZWgwRGYvZUhhZGtWdm51cFZRYi8rTDJPVG83aTA0SWZlTHpPWDZrSzhDcXJKUUxPck9tUTNFVU5XS3BVUVNOUzRMSXVycitrY1A3Rjh4eDNyNzdwems0T25tTXNDcXdKSHVwQmluaGdMbG5YZHFHc1RONjFGVGVucURkQ3QrTWxubWsxWEFIbXErd3FtcW9xY2N5SWlJUXFCUW1BUlpIYWdYYnVIanp5MXFPcHJKOHV4TldIait0YklvSlRCTjY0cnI5eFlzbWYyTk5SMWpVM1RiNXBlSEdpcFVEN3lPNzN1YWdQTHJ0azFnMmJRQ09aQ3dsd1U3RTdDQUJTVFg3VjVZSFNNano0L3UrZkc0ZDV5QkROd2RkWCtLbmpPYnRsVjBiTG1iRm1SOUlYakdsQzNiTlJZcStlTXJwN1ZQYm9aY2VDaUxFSVJwSkNpSUFCdnRlaU9nK1AzL3VlNXhZVTZzTGttMEF4L1ZrdVFrK2RrS1ZuT2dybTNrbjcyaUwvcnBqelFpcGFpUUVTUDVBMTVRMjZ5dEtRWFo1cTZOaUlFY0ZOZm5BZk45dWovcjJ5OTcrekgvMzZ5UU8zVkNUMmpaYy9xcHA2enFXclNRcFE5Lys5aitQQVRjR0F2bkQxdnNYRlVkRWRURHN5THk0Z0hiL25NdHAxbFRvQjRPUThSK2x1bjBqOS9kdXozZjFpZW05VlBmV3pOU05mcmZvcDEwcHhkRlYwRmM4RTZ2MmozUGtEMWl0NStTL3IzL3lxeVlhZnlsQndkM0lISVQ1NWkvUGJYdm5UbzBMcTZseEVkM056TXNncjV1c25RNzhWZlBETDcvSXZwdGx2TEhWdG9xS01FR1V4VDFJVkZlK1YxLy9WaHZHcWQzblp6cjl2TzV5L2dTcy9KelZSWGJRcE12M3g2WEViSHd1Wk5uVjR2SXJpcnVtWTNCVlhMc1JYMDluZFhWMTdoTDd4VUgvMGpESFpnZE1nQWZIYk9sNWVoRWp1d0wxMjlQbmJLbEJzZEg4cWpIVFhOWU9xV1RhM2dlbVJnUk5EZFZDMW5Bak5WME95YUxXdU9FVXc3cGUzYVNoUERORFdWKzMxOTlpaW1hUHV1MS9ZNkhSdEpZME5KTU1kYVZaVWdnMmZYMVRXUVRjMVEwVTBzRzFqV0p1bnE4K1VwVnJCc1dldCtFcktOYTMzdGlCUG8zRHoxVm16L08yclhUSmhqYlhXallCbGQ4eXE2cVp1Qm1UdFRRWTRzamlNTHN6TmxhR2xNNE9xZTNkUXR1Mll3QmN5YU5QYlVYZGQwMDhoQUtOa3FxUmQ3cGxuUmxDRTdxSHRteUE0R29BNEdESVM0dkhDZVI5OHJWMnkrNGRlUC9mZk4rNjVNZGVPV3dmUnREbHZsZFRjM3pkR2FGYjAwTFhVZkxseUVwZ0YwZEFOWGNnTTNCME4zWHczbkRzZ01mL2o5bGl2ZmR3djJlczJQL3VPaFkwZU91Q1hMRHVidUFMWmE2TzRPQnFzYXhNK2NRODJ3Y2IzbENHNEE0TERxNmI0YSt4RUFFTjBzZEtyZGQ3enJZeDkvLzU4QUlCR1ZoaTNkTjJ3QUFBQUFTVVZPUks1Q1lJST0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJGSURPXzJfMCJdLCJleHRlbnNpb25zIjpbImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6IjVlMjY0ZDlkMjhlZjRkMzQ5NWI0NTk0MWU3YTRmYWE4Iiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsInVwIjp0cnVlLCJ1diI6dHJ1ZX0sIm1heE1zZ1NpemUiOjIwNDgsImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotMjU3fV0sImZpcm13YXJlVmVyc2lvbiI6M319LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wNC0yMyJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDQtMjMifSx7ImFhZ3VpZCI6ImQyZmJkMDkzLWVlNjItNDg4ZC05ZGFkLTFlMzYzODlmODgyNiIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiZDJmYmQwOTMtZWU2Mi00ODhkLTlkYWQtMWUzNjM4OWY4ODI2IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ill1YmlLZXkgNSBGSVBTIFNlcmllcyJ9LCJkZXNjcmlwdGlvbiI6Ill1YmlLZXkgNSBGSVBTIFNlcmllcyAoUkMgUHJldmlldykiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2LCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH0seyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbImVkMjU1MTlfZWRkc2Ffc2hhNTEyX3JhdyIsInNlY3AzODRyMV9lY2RzYV9zaGEzODRfcmF3Iiwic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjgsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjgsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlETXpDQ0FodWdBd0lCQWdJVVNPRWpUZi8veXFSZlBXN1FxOHF0SXlDckFnOHdEUVlKS29aSWh2Y05BUUVMQlFBd0x6RXRNQ3NHQTFVRUF3d2tXWFZpYVdOdklFWkpSRThnVW05dmRDQkRRU0JUWlhKcFlXd2dORFV3TWpBek5UVTJNQ0FYRFRJME1EVXdNVEF3TURBd01Gb1lEekl3TmpBd05ETXdNREF3TURBd1dqQXZNUzB3S3dZRFZRUUREQ1JaZFdKcFkyOGdSa2xFVHlCU2IyOTBJRU5CSUZObGNtbGhiQ0EwTlRBeU1ETTFOVFl3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRQ2R2bDI3dzJndTFmUFhlRUZiSWRxeDBCYWx2VkRWV3JRUEo3SHF2aXVFdFpIbHhTTHhTRnRjWHBUb2x2THZvZjhmNHRNZXJRVGtWR3pjbVl6bTFFQlQ0SUp1TW1vRXFma0VFaFdwc0FETUZyalprcWxaWTlFcXhRekxvVkVFb25FNW9HeFNkVkN4Q2NMSWFja3B5Ui9DQ1h2ajFCdC9oVGdFOWhUbEY0cFJxeE1reDNwbEY3eThkRFpsUkhXczd2Ym5obUJDR2VJMFpQRVE2bmwybUNnMnI3NGFkRjJ1Nks5cnJMZmhCQzNRTEU4RVByZ3FVc0kraGt1cTJ0SzRNMlNNT3A4dVVWVmtxVWV1M2gwa3IzV1ZJMFcwMnBrZ3JPZ2lGS0xGTmtTcmJZaGRqTUJEajVpem1xZmM5eEpSS29EWDYxMnFkOFpHVkhwVDVBWUZYKzFoQWdNQkFBR2pSVEJETUIwR0ExVWREZ1FXQkJUWnlVNURpUS9hMlVFZ0U3cUJLMHpoSXNSTlJqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUFNQTRHQTFVZER3RUIvd1FFQXdJQkJqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFYdm5CNFNMdVVKZllNU1ZHQWhzc0wvU21XbGkzRlNjY2d4eWR2S2xBQ2NpZElJV0tRcWEzcS9RU1VFUXpDOURnRWZNZ3I3aUMxQmtUWmJJTGJvVjZVWjVrbk5zdmpFWld1TWVvZ0o4dGdaczFoVnZLd1ppendKK21FY21zamhJckJZdW9MMVQ2eXJPSnZLRmcxanYrQ3k0WndBOUJway9WM1VPaXIxVnlLOGRDdHlIdTZ2Zm9zb3RBZFl4OEZBdVIyNDNnUlRNVjZKeDhKZGlnMkpESUFRTWx6VmVEcFNVSFgvSzJIWFJIeEh3ZmdqYmdVampCdS83MnI4T2ZlaHloekhYSTNLOENGRmRmbE8rOG5FT0pLM3k4RjFpdmdTNXVOLzhTbWNZdy9TVFFZd2hyeFB1d3ozblA4YmFNdW00QkIybm5ZbXBCNjBzWDNibDVrOFFVU3c9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFmQ0FZQUFBQ0dWcytNQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUhZWUFBQjJHQVYyaUU0RUFBQWJOU1VSQlZGaEhwVmQ3VE5WMUZELzNkNTl3ZVFTSWdTOUFRQVhjRkxBUVppOWZwZVZ6MXRZL1dUWnI1V3hwYzdXNWtuTGE1akkzWjg1c3JTMm5NMnNqdFd3WlM3SVVINEg0eENuRVF4NERBWkY3NFY3dXM4ODV2OS9sSW5CdlZKL0I0UHY5bnUvNW51LzVudk01NTZmekEvUXYwSGIvSXJYM1ZGS1BvNDVjbm00aW5VSVdZd0xGUm1aUVV1d2pGRy9OMWlSSGgxRVowTlJWUnVkcXQxQmQrMm5TS3lTL09oeXMwK2xrM2UvM2tROXF2RDRaVXRhNFZWU1V1WTBlaXB5aVRoQWZvY29PUlZnRHV1dzNxS1JpQWQzcmJjRXRqVGpZSW9mNldhSHNDbXpWUFdDTXgrY2doOHRMcVdNS2FNV3NVakxxbzJSdEpJUTBvT3ptZXJwUXU0ZXNaZ3NPTmtHeEg3ZDBrZHZUVDE3czRPTVU3Vkk4WmhqZ0dhTStBcTlpRU51OFBpZjF1ZHowN013dktXZjhHbFZvQ0VZMDRQQzVXZFRhWFlGYlI4dk52TDUrM0tnZmI1eE5NeWE5UmFtSml5bmFNbEdUVnRGbHI2YmE5dStwcW5FWDR1TXVSUmdqU1lFaHJON3V0RkZlNmxxYWw3TmZrdzVpbUFHSHluUHBiazhWbVkweHN0bnB0bEZDVkNZdHpUdUJOODNRcE1MalR0ZXZkUHpTVW5KN2U4bWtqeFozOWZYYktEZmxkWnFidlUrVFVnR25CVkY2ZlEyaVBIZzRXMTZVV1V3dnpiazE2c01aRStQbjBwdno3SlNldUF5ZXM4bGNwQ21hS3VvL3ArcVdyMlVjd0lBSFdydlAwWUV6aFhBdExBYnNzSGhwN2lHYW12eWlqUDhyeXFyWFVXWDlYb293eHlBdWZOQnJwNDNQT0JGWFpsa2Y4TURSaXFjcHlvd0F3cHV6MngrZld2ei9EdGRlOXNtc3p5Z3RjUjZDMXdiZHpCbDZPbHE1V05ZWTRvR2F0aEpNcmtURXgwakFSU0hBVnMrNXJZa1FOWGIrUWdmUExzUTZnWHlJbnNyZVFmbXBtN1JWRllmTDg2bjFmaVVPa1l2U2hrVVB4dmJ1a3pveTZLMWloTTFobzNYelc2RXZTZlhBK2RwaVdHYVdkK2RvWHpMem1Hd0tZRkxDQXNSQWxQQkFoTWxDRlhVN3RCVVZQcjhIZ1ZjSkhXcStGMDBwbHIrRE1UZHJQNHp2eFkxMWtOTWh4VCtTZVRHZytkNFY1TFFKaXR5VUdKTkI4VkZac2pnWUJaTS9JSS9YQ1RrajBxeURPcEYyQVZRMTdDSWpVcC9EblQxVWtMNUY1Z2RqK3NTMXdnMWdFM2dpZ202MGZDWHpTblBYYnlBUGJJWHYrSURwRTE2VGhhSElTOXNreWhsbU1FNUYzY2ZxQUtocTJDMEU1UEgxZ1lhWGFMUERrWkcwSERKT25LV0hwNTFJMHo1U091eDhlMVdBdVp6ZEhRclRrcDhUbWpYb0krbGEwd0dac3p1YnFiTzNpZlE2QS9XN3ZWU1lzVjNtUjBKS3drS2M0V0hpQmttUjhJM0NDZ0k4N29PTDRxelQ1UCtSVUpCZWpFT2dBUEs4aFlQemF0TStlSVRwMklPOXlUUW1lcm9tUFJ4eDFxeEFjc2lsZS91YlNlRWJjV1FHWUVDZ2hjTFkySHlLam9nakgyNWhNcGpwVXYxT3VnbGk0ZWgyZVJ3ME8zMmJKamt5dUNnTnpnMHZ6bFlNU2lTczB1b280TUc3aE1PakNFYVgxeUZFMG5TdmpCenVUbkVwSzg2WjhJb3FGQUl1Ync4a2c5QXJFYVJFV1NaSStqSDRYYnA2ZzlFOUVuSlQzb2FSekROK01VSkJRREhuNTZhOG9VbUVCdXNPeEJzL041K3RKRWJQa0FGRGo4VUd2T3MvSVd2Y1NnbEdCaHZTNy9GVFlmcFdHWWREWThmUEF4V1NBMzVzVEM0cDQrTG00QWFxSW9QZVF0ZnVmSzZKaDBaaHhsYnNVWE9TbVhOaWZENVpUQWt5RG9mYmJjY2x4bkE4V05BcXhDYlJOeWtoWHhRcGFEdzY3ZlhVWWJzaUcwS2h0djJvZUl2aDhyaFFNWU9jRUFxWEcvZUkrem5nT2M1eXhyOHE4MklBTTFjL0ZMRk9wbHF1NWVGUVhyTVp6R2NWQ2pZYkxXRzVJNEJUMWV1UnJsYnh0Tk90TWl0RERFaExYSUl5bkFBdnVPRVdFM1gzTmRBZnQ5NFZnYUc0MlhJUXQwWlg2UGVDRS9xUUZlOXJLNkh4N1lVNTBLdkg3Zlc0ZlMrcTdLS0JKeHNnZ0JYNXBTQUdoMWpJclZoNXpRNnczUmZhYWhCWG0vYUNiQ1pUakNVRlVUeVdacVc5cDYyTWpKUFhWcU9yUGdNTzROdjc0R2tmK293ZnROVkJEUW5qRkpxSFN3MTdwWHZoV1c1S1pxZS9RNDlOL1VTVENBVldvUVhGSUhCSFhYZTNGUHJVRHN1R0RtdEYvaEhLVEhwZWt4aGlBT1BJK1NKcTZTNkhGNEk5WVd6a0JKVG80NmlVTXpXcDhQaXIvUmlkdUx4S1lzU2tzVjh2TGxPUXZoR1gyWWxSME9CaEJqQyt1L2dFY3ZZMEFwSzdZazQxTnhqUFNRbldGSFRGNjZVcmpnZXZCOEN1NWErbDJ2WVNSUHR1VkRvNzNoaGRNU0huVVg3dFRqc1ZaR3hBbC9XcHRpT0lFUTFnbkwyOW1YNi90UjF0bWxrWWo4VzRYK0NTaldjVURHWTFOcFMvQzdoU0txaU1MTS9sMlFtU1daNzNEZHorZ2lvOEJDRU5ZUFE0NnFua3p3WFVicXZCa3hqVVFzV2ZaRmdidW8zckFmK3dON2pPTzkwK3lueDRQaTNMKzBuWUwxU2NoRFVnQVA0Z1BWLzdJZDFxKzFIU2htdUdrSXFXUlBneXhNRnFQOEhmalRualh3WTViUWZiSmN0Nk9JektnTUhvdEYvSGUxZWdzYXhIU3FHNndmZG1RNXg4TnlURkZxQmNwMmlTb3dIUjN5azUrMzZoRjd2WEFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJGSURPXzJfMCIsIkZJRE9fMl8xX1BSRSIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsImxhcmdlQmxvYktleSIsImNyZWRCbG9iIiwibWluUGluTGVuZ3RoIl0sImFhZ3VpZCI6ImQyZmJkMDkzZWU2MjQ4OGQ5ZGFkMWUzNjM4OWY4ODI2Iiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibGFyZ2VCbG9icyI6dHJ1ZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOmZhbHNlLCJhbHdheXNVdiI6dHJ1ZX0sIm1heE1zZ1NpemUiOjE1MzYsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6OCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoxMjgsInRyYW5zcG9ydHMiOlsidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN30seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTh9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi0zNX1dLCJtYXhTZXJpYWxpemVkTGFyZ2VCbG9iQXJyYXkiOjQwOTYsIm1pblBJTkxlbmd0aCI6OCwiZmlybXdhcmVWZXJzaW9uIjozMjk0NzUsIm1heENyZWRCbG9iTGVuZ3RoIjozMiwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjEsImNlcnRpZmljYXRpb25zIjp7IkZJUFMtQ01WUC0zIjoyLCJGSVBTLUNNVlAtMy1QSFkiOjN9LCJyZW1haW5pbmdEaXNjb3ZlcmFibGVDcmVkZW50aWFscyI6MTAwfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTEwLTE1In1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNC0xMC0xNSJ9LHsiYWFndWlkIjoiMjM0Y2Q0MDMtMzVhMi00Y2MyLTgwMTUtNzdlYTI4MGM3N2Y1IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiIyMzRjZDQwMy0zNWEyLTRjYzItODAxNS03N2VhMjgwYzc3ZjUiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiRmVpdGlhbiBlUGFzcyBGSURPMi1ORkMgU2VyaWVzIChDVEFQMi4xLCBDVEFQMi4wLCBVMkYpIn0sImRlc2NyaXB0aW9uIjoiRmVpdGlhbiBlUGFzcyBGSURPMi1ORkMgU2VyaWVzIChDVEFQMi4xLCBDVEFQMi4wLCBVMkYpIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfSx7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQjJEQ0NBWCtnQXdJQkFnSVJBTXM4WVhWQm9CTnVYVWpxZkNvWDd5NHdDZ1lJS29aSXpqMEVBd0l3U3pFTE1Ba0dBMVVFQmhNQ1ZWTXhIVEFiQmdOVkJBb01GRVpsYVhScFlXNGdWR1ZqYUc1dmJHOW5hV1Z6TVIwd0d3WURWUVFEREJSR1pXbDBhV0Z1SUVaSlJFOGdSVUVnVW05dmREQWdGdzB5TXpBeE1ERXdNREF3TURCYUdBOHlNRFV5TVRJek1USXpOVGsxT1Zvd1N6RUxNQWtHQTFVRUJoTUNWVk14SFRBYkJnTlZCQW9NRkVabGFYUnBZVzRnVkdWamFHNXZiRzluYVdWek1SMHdHd1lEVlFRRERCUkdaV2wwYVdGdUlFWkpSRThnUlVFZ1VtOXZkREJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCRDJMSEhBUXFZYmRSMVdabHVlcnRNMzByV2hvcllhdldtTVZhNG5kWDlQWnd1UkVwTFE0bTFuRWxxUUtNblJFOC80QytScXdpYXYrbXBJNGt4ZDVlNXVqUWpCQU1CMEdBMVVkRGdRV0JCUzNaWmp5R2xoWjk5TjF2TG9UUFhWVWE0WkVZREFQQmdOVkhSTUJBZjhFQlRBREFRSC9NQTRHQTFVZER3RUIvd1FFQXdJQkJqQUtCZ2dxaGtqT1BRUURBZ05IQURCRUFpQW9EK1I2a29sSVdhTkp6NGh6MDNEM2dlczNHYk1CakFXcGtPVWc5YXlGZ3dJZ2JFdzdBWVN5azY4T3Z4Z1hlemduZFRSVEV1U1dUK2ZkUm5MYUJOc2FUdzA9IiwiTUlJQjJUQ0NBWDZnQXdJQkFnSVFGUU5LVys3emJnLzdkK2xUeXJJV3dEQUtCZ2dxaGtqT1BRUURBakJMTVFzd0NRWURWUVFHRXdKVlV6RWRNQnNHQTFVRUNnd1VSbVZwZEdsaGJpQlVaV05vYm05c2IyZHBaWE14SFRBYkJnTlZCQU1NRkVabGFYUnBZVzRnUmtsRVR5QlNiMjkwSUVOQk1DQVhEVEl5TURZd09EQXdNREF3TUZvWUR6SXdOVEl3TmpBM01qTTFPVFU1V2pCTE1Rc3dDUVlEVlFRR0V3SlZVekVkTUJzR0ExVUVDZ3dVUm1WcGRHbGhiaUJVWldOb2JtOXNiMmRwWlhNeEhUQWJCZ05WQkFNTUZFWmxhWFJwWVc0Z1JrbEVUeUJTYjI5MElFTkJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVzRllFRWhpSnVxcW5NZ1FqU2lpdkJqVjdER0NUZjRYQkJIL0I3dXZac0t4WFNoRjBMOHVESVNXVXZjRXhpeFJzNmdCM29sZFNyam94Nkw4VDk0Tk96cU5DTUVBd0hRWURWUjBPQkJZRUZFdTloeVlSclJ5Snp3Ull2bkRTQ0l4ckZpTzNNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdEZ1lEVlIwUEFRSC9CQVFEQWdFR01Bb0dDQ3FHU000OUJBTUNBMGtBTUVZQ0lRQ0IwTkZRU04wejRsV3oveWMzNmV3clRDenR0Sy9xRnZsYVBPS2grVDFvNndJaEFQMG9LS0ErY2ljc0R5M1kzbitWbFA4ZUIzUEJ6TWtodlcvOUlTWEN3K1ZCIiwiTUlJQjJEQ0NBWDZnQXdJQkFnSVFCVG1rM1p3aWxGWGpzWnl3SERuTWdEQUtCZ2dxaGtqT1BRUURBakJMTVFzd0NRWURWUVFHRXdKRFRqRWRNQnNHQTFVRUNnd1VSbVZwZEdsaGJpQlVaV05vYm05c2IyZHBaWE14SFRBYkJnTlZCQU1NRkVabGFYUnBZVzRnUmtsRVR5QlNiMjkwSUVOQk1DQVhEVEl5TURZd09EQXdNREF3TUZvWUR6SXdOVEl3TmpBM01qTTFPVFU1V2pCTE1Rc3dDUVlEVlFRR0V3SkRUakVkTUJzR0ExVUVDZ3dVUm1WcGRHbGhiaUJVWldOb2JtOXNiMmRwWlhNeEhUQWJCZ05WQkFNTUZFWmxhWFJwWVc0Z1JrbEVUeUJTYjI5MElFTkJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVuZkFLYmp2TVgxRXkxYjZrK1dRUWROVk10OUpnR1d5SjNQdk00QlNLNVhxVGZvKyswb0FqLzR0bnd5SUwwSEZCUjlTdCtrdGpxU1hEZmppWEF1cnM4Nk5DTUVBd0hRWURWUjBPQkJZRUZOR2htRTJCZjhPNWEvWUhaNzFRRXY2UVJmRlVNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdEZ1lEVlIwUEFRSC9CQVFEQWdFR01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lCeVJ6NE9BbFJaOUh6OUtWN2cyUU50QzBDOEp4SC94TEpZOEZaRW10SjNzQWlFQXNyZVQwK2VOa05jVWpJOWg1T1BDb0g2Tm1zT2tndkVBQkpackYwN0FEa1k9Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUZBQUFBQVVDQU1BQUFBdEJrcmxBQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQkhacFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR3L2VIQmhZMnRsZENCaVpXZHBiajBpNzd1L0lpQnBaRDBpVnpWTk1FMXdRMlZvYVVoNmNtVlRlazVVWTNwcll6bGtJajgrSUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWtGa2IySmxJRmhOVUNCRGIzSmxJRFV1Tmkxak1ERTBJRGM1TGpFMU5qYzVOeXdnTWpBeE5DOHdPQzh5TUMwd09UbzFNem93TWlBZ0lDQWdJQ0FnSWo0Z1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNGdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlnZUcxc2JuTTZlRzF3UFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIaHRiRzV6T25Cb2IzUnZjMmh2Y0QwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOXdhRzkwYjNOb2IzQXZNUzR3THlJZ2VHMXNibk02ZUcxd1RVMDlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl0YlM4aUlIaHRiRzV6T25OMFVtVm1QU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2YzFSNWNHVXZVbVZ6YjNWeVkyVlNaV1lqSWlCNGJYQTZRM0psWVhSdmNsUnZiMnc5SWtGa2IySmxJRkJvYjNSdmMyaHZjQ0JEUXlBeU1ERTBJQ2hOWVdOcGJuUnZjMmdwSWlCNGJYQTZRM0psWVhSbFJHRjBaVDBpTWpBeE5pMHhNaTB6TUZReE5Eb3pNem93T0Nzd09Eb3dNQ0lnZUcxd09rMXZaR2xtZVVSaGRHVTlJakl3TVRZdE1USXRNekJVTURjNk16RTZOVGtyTURnNk1EQWlJSGh0Y0RwTlpYUmhaR0YwWVVSaGRHVTlJakl3TVRZdE1USXRNekJVTURjNk16RTZOVGtyTURnNk1EQWlJR1JqT21admNtMWhkRDBpYVcxaFoyVXZjRzVuSWlCd2FHOTBiM05vYjNBNlNHbHpkRzl5ZVQwaU1qQXhOaTB4TWkwek1GUXhOVG96TURveU55c3dPRG93TUNZamVEazc1cGFINUx1MklPYWNxdWFnaCttaW1DMHhJT1czc3VhSmsrVzhnQ1lqZUVFN0lpQjRiWEJOVFRwSmJuTjBZVzVqWlVsRVBTSjRiWEF1YVdsa09qSkZOekZDUmtaRFF6WTNSakV4UlRZNU56aEVRVGxEUWtJMk5EWXpSamt3SWlCNGJYQk5UVHBFYjJOMWJXVnVkRWxFUFNKNGJYQXVaR2xrT2pKRk56RkNSa1pFUXpZM1JqRXhSVFk1TnpoRVFUbERRa0kyTkRZelJqa3dJajRnUEhodGNFMU5Pa1JsY21sMlpXUkdjbTl0SUhOMFVtVm1PbWx1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2TWtVM01VSkdSa0ZETmpkR01URkZOamszT0VSQk9VTkNRalkwTmpOR09UQWlJSE4wVW1WbU9tUnZZM1Z0Wlc1MFNVUTlJbmh0Y0M1a2FXUTZNa1UzTVVKR1JrSkROamRHTVRGRk5qazNPRVJCT1VOQ1FqWTBOak5HT1RBaUx6NGdQQzl5WkdZNlJHVnpZM0pwY0hScGIyNCtJRHd2Y21SbU9sSkVSajRnUEM5NE9uaHRjRzFsZEdFK0lEdy9lSEJoWTJ0bGRDQmxibVE5SW5JaVB6NDc3SlhGQUFBQVlGQk1WRVgvLy84RVZxSVhaYXZHMk9vcWNMRzJ6T09rd3QwQlNKdHFsY1hWNHUrYXV0bFdoYnprN1BVQU1ZOUhjcktqdE5icThmZUFsOGFCb3N6ejl2cGRqc0dHcXRGM244dVRzTlNacGM2SnNOVDUrdjB4WUtudThQZmY1L0w0OGZnL2ZyaWN6SmdZQUFBREFFbEVRVlI0MmtSVUNaYkRJQWpGWFpPWTFUYXROYzM5Ynprc1NZYzNyNE1FNGZNQkFhRDZ6bDh5LzlUT2dldDhkNWpmTjc4YndNL2REQ1JwUjUyMXpYZm9qSEowNUlJeWhCQVVTVkFPTmRHekJZdDJmN0tGcmZrSmFBa0hoOUZaaGNEWEhSa1RLbzlNTGloR2FhdkltblYzcXlFWDBFcHJnei80RHdVRDdrQ0hSbmQ4UUZONDNHbzRVVm1ERGd6YTR3MjdvaXpkQTIrY0srdXVVcGpqbzIreHdjLzQyVzUweDVMR1llREJzUjBIVkl4NXg4aUY2MENibGJURUVrRnIyN2JOREJVVlNxMU9LVlBiRTYyYjNFSDhGcUJnNU9PT0V1YzJ0OFpKaXFNT3VHcCtjS2pnN3dWR2Nlb3pxTjRweGdWUFFrakZZZ2JWSktEVWhEQ2pZcmF3UDVxNEVUZ0M5ZklNUkh0aXRwUWNDdkpPRUxjYk1zUWduY2lSa2xqcHlRanZHNDRqcUJVRVRGaUJpMVBFSXlla096c1crVHk1Y0xIb3M1UitkTVMxTHRTU3hmM2dRSGN6UjJDSTRnTU5wVzRJUkExUU1hNnRKNCtDNnVIdUdFOG1OREl5RnFnL09QL01NVXVlUzZJcThTOTBkQWVCSlNFeS9xS2tLK0JOd3o4Y1lZNGpiNUo2dTRpV0NJMkIxWjU2TFc1a0VjNGhrZE1wc3ZVQzU1ODVTWDBRdWJjZ05xeWZnREZFY1R0KzQwLzBTNU54MHdhQ3czT0trY09iQTVJbjBBWXAwMXBqancybjYyNlVEanRId2EyOGlIdVRLcXRydityZVc0MU5aNmlHbHI3dXVMSkNma0Z0Y3RjRzA0c2dtMWVOUytaYURucGFURXJHb3lYNUpLMmlNejh4czBuT3dXR2NQRE40OXFhQ2Q0YnpKb3pEWm0vYUJLK0Vvekx3K1hoTkJpWXdIZjBzaU91MVhQa0cvekt3dnFZS2NmU3dERWNIL29VZTA3ZXMvV1E4ckl5ZzJET1hqOHRqa1pkdURCL2I4aHpEbGxNTU9DUzVCRW5kNTM0Zjh0aTNVWmM0a01zM3hMeWFmTVNzSmhkRzhYUHFqTms1dEFnTzI1ZmVLQ2huVmREai9KMEZNa09zVS94TUJ2MHdGaFllRUdmVkgxM2Z1RFUweURGTGE0ZmM3Um5XSEJmdVRGVjJ0RW1Od2FkYzdhYzNVWTJqZkJsN0hUMzZmZTM0aVFPNW1OQ0ZGQlcwN0tqUGdxaE9MVTAxdlo4UHVlWjJKQ2xGWk44amtVczY5dWthOWVQcDYrRWZMNEFGNStOeXdTYmlySHRjQjhNbC9na3dBRWprSzY0S2pIUGVBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMSIsIkZJRE9fMl8xX1BSRSJdLCJleHRlbnNpb25zIjpbImNyZWRCbG9iIiwiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsImxhcmdlQmxvYktleSIsIm1pblBpbkxlbmd0aCJdLCJhYWd1aWQiOiIyMzRjZDQwMzM1YTI0Y2MyODAxNTc3ZWEyODBjNzdmNSIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsIm5vTWNHYVBlcm1pc3Npb25zV2l0aENsaWVudFBpbiI6ZmFsc2UsImxhcmdlQmxvYnMiOnRydWUsImF1dGhuckNmZyI6dHJ1ZSwidXZBY2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOnRydWUsImFsd2F5c1V2IjpmYWxzZX0sIm1heE1zZ1NpemUiOjE0MDAsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6NiwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjo5NiwidHJhbnNwb3J0cyI6WyJuZmMiLCJ1c2IiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fV19fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMi0wNy0xOCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IkZlaXRpYW4gZVBhc3MgRklETzItTkZDIFNlcmllcyAoQ1RBUDIuMSwgQ1RBUDIuMCwgVTJGKSIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjIwNzE4MDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjItMDctMTgiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MX1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNC0wNi0xOCJ9LHsiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbImJmOGYzOWE1ODI2ZWI5MTBkZTRlNDM2NjM1YTUzMGUzZWNjZTQxMGYiXSwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiYmY4ZjM5YTU4MjZlYjkxMGRlNGU0MzY2MzVhNTMwZTNlY2NlNDEwZiJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiSGlkZWV6IEtleSA0IFUyRiBTREsifSwiZGVzY3JpcHRpb24iOiJIaWRlZXogS2V5IDQgVTJGIFNESyIsImFsdGVybmF0aXZlRGVzY3JpcHRpb25zIjp7InVrLVVBIjoiVTJGIEtleSBTREsgLSDQstGW0LQgSGlkZWV6In0sImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyLCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIiwiYmx1ZXRvb3RoIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDTWpDQ0FkbWdBd0lCQWdJQkFqQUtCZ2dxaGtqT1BRUURBakNCaHpFWE1CVUdBMVVFQXd3T1NHbGtaV1Y2SUZKdmIzUWdRMEV4SHpBZEJna3Foa2lHOXcwQkNRRVdFR3hsWjJGc1FHaHBaR1ZsZWk1amIyMHhHakFZQmdOVkJBb01FVWhwWkdWbGVpQkhjbTkxY0NCSmJtTXVNU0l3SUFZRFZRUUxEQmxCZFhSb1pXNTBhV05oZEc5eUlFRjBkR1Z6ZEdGMGFXOXVNUXN3Q1FZRFZRUUdFd0pWVXpBZUZ3MHlNVEE0TVRZeE56STBNRFZhRncwME9UQXhNREV4TnpJME1EVmFNSUdNTVJ3d0dnWURWUVFEREJOSWFXUmxaWG9nUmtsRVR5QlNiMjkwSUVOQk1SOHdIUVlKS29aSWh2Y05BUWtCRmhCc1pXZGhiRUJvYVdSbFpYb3VZMjl0TVJvd0dBWURWUVFLREJGSWFXUmxaWG9nUjNKdmRYQWdTVzVqTGpFaU1DQUdBMVVFQ3d3WlFYVjBhR1Z1ZEdsallYUnZjaUJCZEhSbGMzUmhkR2x2YmpFTE1Ba0dBMVVFQmhNQ1ZWTXdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUzBBY1QvaFJGVWJsRmNJcDZiaDRQMlpTcTFhamlVYWdoZWM5dWRTRkdJb1VaNDBZM0lFUGx0azJUeGJ3TS9ScFdtQ0ZyWnNBZGZ5eDIxcnZZZHBMOFJveTh3TFRBTUJnTlZIUk1FQlRBREFRSC9NQjBHQTFVZERnUVdCQlRsWjhEdjNxQUtlS2MxQzJPaU52SHpHcWcxSlRBS0JnZ3Foa2pPUFFRREFnTkhBREJFQWlBSHB0c3grNkdxdjZuYmErYlQ5Zlc3bjh4c2ZIOFJoSUs4VllGUEtFc0JaQUlnUWhPU0R4a0RrY3k5bmJQVDR4MEVtREQ5VXNMNTAxdGtTc2NmV2EwYUxidz0iLCJNSUlDWkRDQ0FndWdBd0lCQWdJVUl5bGJTRUFFMTV6U0V2d0YwcjhHd1VkLzVvRXdDZ1lJS29aSXpqMEVBd0l3Z1ljeEZ6QVZCZ05WQkFNTURraHBaR1ZsZWlCU2IyOTBJRU5CTVI4d0hRWUpLb1pJaHZjTkFRa0JGaEJzWldkaGJFQm9hV1JsWlhvdVkyOXRNUm93R0FZRFZRUUtEQkZJYVdSbFpYb2dSM0p2ZFhBZ1NXNWpMakVpTUNBR0ExVUVDd3daUVhWMGFHVnVkR2xqWVhSdmNpQkJkSFJsYzNSaGRHbHZiakVMTUFrR0ExVUVCaE1DVlZNd0hoY05NakV3T0RFMk1UY3lNekU0V2hjTk5Ea3dNVEF4TVRjeU16RTRXakNCaHpFWE1CVUdBMVVFQXd3T1NHbGtaV1Y2SUZKdmIzUWdRMEV4SHpBZEJna3Foa2lHOXcwQkNRRVdFR3hsWjJGc1FHaHBaR1ZsZWk1amIyMHhHakFZQmdOVkJBb01FVWhwWkdWbGVpQkhjbTkxY0NCSmJtTXVNU0l3SUFZRFZRUUxEQmxCZFhSb1pXNTBhV05oZEc5eUlFRjBkR1Z6ZEdGMGFXOXVNUXN3Q1FZRFZRUUdFd0pWVXpCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQkFxbG1BTUF6NGg1SXdmVlp3U2I0akFpNW90ODVGRTBidXVDS3M0bWZ1ZDIxcXNvNXJwdUtINDNzS3Fick5GUVN0eDVSU0M5Ym1CcWRTMmx5Y2wzNWxhalV6QlJNQjBHQTFVZERnUVdCQlJXSWlSVldheVpCbkg1QmxUblFEaUd5UTZPTFRBZkJnTlZIU01FR0RBV2dCUldJaVJWV2F5WkJuSDVCbFRuUURpR3lRNk9MVEFQQmdOVkhSTUJBZjhFQlRBREFRSC9NQW9HQ0NxR1NNNDlCQU1DQTBjQU1FUUNJRVpYaDc2WEZoTHhKSVQ4RnNJb1FIVHdmSENFOHNVc0t5UHJjTHYvM3RvTUFpQitwalk5Ykk2bktUNnFGdXFnUm4rYlhCQWRNZWcvMnZYOHdHNGFCdG9NQUE9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFJQUFBQUNBQ0FZQUFBRzBPVkZkQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUF5UnBWRmgwV0UxTU9tTnZiUzVoWkc5aVpTNTRiWEFBQUFBQUFEdy9lSEJoWTJ0bGRDQmlaV2RwYmowaTc3dS9JaUJwWkQwaVZ6Vk5NRTF3UTJWb2FVaDZjbVZUZWs1VVkzcHJZemxrSWo4K0lEeDRPbmh0Y0cxbGRHRWdlRzFzYm5NNmVEMGlZV1J2WW1VNmJuTTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlrRmtiMkpsSUZoTlVDQkRiM0psSURVdU15MWpNREV4SURZMkxqRTBOVFkyTVN3Z01qQXhNaTh3TWk4d05pMHhORG8xTmpveU55QWdJQ0FnSUNBZ0lqNGdQSEprWmpwU1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJajRnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJZ2VHMXNibk02ZUcxd1BTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZJaUI0Yld4dWN6cDRiWEJOVFQwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOTRZWEF2TVM0d0wyMXRMeUlnZUcxc2JuTTZjM1JTWldZOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXpWSGx3WlM5U1pYTnZkWEpqWlZKbFppTWlJSGh0Y0RwRGNtVmhkRzl5Vkc5dmJEMGlRV1J2WW1VZ1VHaHZkRzl6YUc5d0lFTlROaUFvVFdGamFXNTBiM05vS1NJZ2VHMXdUVTA2U1c1emRHRnVZMlZKUkQwaWVHMXdMbWxwWkRveE1qRkRPVUkyT1RWQk1ERXhNVVUxUWtSQlJFUXdRa0pGTVVaRlJqaEdSQ0lnZUcxd1RVMDZSRzlqZFcxbGJuUkpSRDBpZUcxd0xtUnBaRG94TWpGRE9VSTJRVFZCTURFeE1VVTFRa1JCUkVRd1FrSkZNVVpGUmpoR1JDSStJRHg0YlhCTlRUcEVaWEpwZG1Wa1JuSnZiU0J6ZEZKbFpqcHBibk4wWVc1alpVbEVQU0o0YlhBdWFXbGtPakV5TVVNNVFqWTNOVUV3TVRFeFJUVkNSRUZFUkRCQ1FrVXhSa1ZHT0VaRUlpQnpkRkpsWmpwa2IyTjFiV1Z1ZEVsRVBTSjRiWEF1Wkdsa09qRXlNVU01UWpZNE5VRXdNVEV4UlRWQ1JFRkVSREJDUWtVeFJrVkdPRVpFSWk4K0lEd3ZjbVJtT2tSbGMyTnlhWEIwYVc5dVBpQThMM0prWmpwU1JFWStJRHd2ZURwNGJYQnRaWFJoUGlBOFAzaHdZV05yWlhRZ1pXNWtQU0p5SWo4K3ZyNVhJZ0FBRS85SlJFRlVlTnBpRERsNmdRRVA0QUxpQkNDZWhrc0JFdzd4LzFDc0RkVzhEMGtNQmJCZzBRZ0NBa0Q4RVVuY0NVby9SbExEaUc0QWlnUU9JSXVrOWk4UU02TzdBSjltZEhYL2tjUGdQd21hVVF4aEl0Rm1kSEFGWkFBM0VKOGhFQnYvY2NqcmdBeUlCMkpqTWwwQURvTnBEQlFBRmlJQ2lxQUxZR0FkaVpiL1IzWUJJNTZBd3V0QzlMeHdnQVRiUGRIREFPWUtKU0MraDBkekFCQzdBUEZlYklISWlKWXZDQVlzUUFBeEVpZ1B3b0g0Q3hCdkpTVWEveE53RVNPK0FnVTVTek9pYWNMcVBTWTB6VllFRWcrR0lTeGtaR2RHcEF3R1R3ZnBaSlFGY0JmOEo3TThBT241eDBRZ3RjR3dFN0ZKR1JmWVMycTlBQUw5QkxMMVRQUkNGUjBVWVVrUHlDQU5pRTh3VVZDZ2dvQWxzaGZxU0MxTWtMMEFja1VqT1dtQkNWdHRRNFR0akxoaUFTU3hCeTBOSUdNdDlEQURDQ0JDNVFFNitBekVQR2hpMzZEdENHU3dISWlqaUsxWEdJaE16ZitobGpPaVlXNDBmaWNRUjZMcFN5YTNnWU1jNW94RUpya0tMT3JuNEtxaW1mQllERE9BaVlFeWdPNXdrUG1xdUFwVUVCQ2xNSE1SNDVCYlFMd2R1VUIrRGNUbmdkaUlnZllBdVZaZ2hZV0FDQkIzazlHMFFNYVR5WERNTDVBRFFxR2NaZVFVUlVnZ2g1em1EUk0wSHc4WVlFSnJkRlNSRUkvbUJGSTdTWVg1UWlqZFNvTGpUNUZZUHNDQUNiWXFPWUZBL0ZJVG5JYlM1dGhxbzFRYU93SzVrRHVGclNTY1EyUUxsMVFnQnpXdkh6MjZXQWdVRnRKQS9BU0wvQjFvdGowRzdkTktRaHY4b0toa0phSTRKcnFUOUJSTkl5akUvZ0N4Q3A0bXpGbTBoSVlYQUFRUXFlMEJsQVlWMUtMdlFMd2ZpTy9Tb3B1SURIeUFlRE1KNWN0L1loVVNBaWVnaG0zR0VhL1k0dmNmVWhPTW9oRDRqeVZOeUJEYjl3R0NxNFE2M0xoQ29BR0w1WXg0TENlVTR2K1Q0b0FsUUZ4UFpobVA3cEFMaEJ5QjdnQXpJSTRtWXdRSkZ6REUwZXJDNllDVFZMU2NBVWYzRjI4bm05cVc0eHFnbUlvdkRkRENjblN6czlBZDhKOE9scU03b2g1YmRVd3Z3QWZONm1BSGFBOUFVL0F6Y2tsNGdJTFVUV25hWVdLQzlna290WnpjQmt3Zk9mMis1MVNJZ2pKWURZdnNBQzRpTlV2Z2tmTWkwb3dtbUozSURwaEhwT1lsZU9TMkVXa0dPNngyUlhaQU9KR2FZNm1ZRytZelFkdHdsQlNyRE5ER0tUbTVZQm9MdEYzM253cU9JQmJzdzFjYmZxRkRJZVNJendIY2RDd041WkFkZ0J5Y0xUUzBGRG1xSDZPSHdDY29YVTJueWdnakN2aXhOUmhvNVB2UHVOSUFSb09CeGkwanZDMmlEelRxbGhQVkwyQ0VSa2taaFJZekEvRkdmT1VHQzRHZ0FybThFNHZjR2lEZXhBQVpjQVIxeDAyaFJiazVqb0tIa2R5dUdhN0JpaEFvcHJpMFpDSWg0WUJ3RHhGcXJVbnBUUUVFRUNYakE4UUNEU0F1aFBhNFNDbHBRWlBqb05IWFJiUjBIQk9WemR2T2dEbUVmSjBCTXNXRjd2a1NwSmppQmVLWGFQS2dTbm9oQS9hWkg2UEJFZ0FGYUE3endLSHVJOVNUeU9NcHZXaU5BQWswK1ZsNDdEMkxaT2N2ZWdlQUhwTGwvVGpVdkVQempBQVpMWjEwTkROVzRGREhpdVNlQjdRTWdNVlFTeTRTNFdCaEdtVFhTQ1R6RlhDb2tXZkF2M2lHckFDb2d4b1lnNjFGVFdTU3BUWjRpR1N2SDU3YW4yQkFrRHBFQ1FPOGRHcThFd00yTStDZlhQZ1BUYjF4cEtTQVloeUd3VUo5c0hnZWwvdXdkV1QvRTVzQ2RqTkFWaXFoQjlSL2hxRURjS1dJLzRSYTQrdlJQRy9CUVA1Q3M4R2FJbkNPRUFjeVFOYXBnY0JNcU1hVERNTURZRnM2Z1JFQTY1QVVaekFNVHdEeTIyd291eHM1QUpDNzRFcDBjSWdudExHRTNJcGNRYWRBU0VWcWlzTURBSGtJZ0piREFURFBnc1l3QmRIa3dwSGs5OUFwTUR4QUFXQ0pwUXFrTmdnanNTQjFwbEhCcTQvZUlXTmlJR0Z1blFLd2t0d1lvckk3ME1jVE5FRUI4QjJMd3NCQlVtamRvcko1THRoYWd2dXdLRnhGbzRZSnFXTUw5NmpvQmxNc1ludVljRmdDYWlGeTBpQVFEcENnMW92SzloL0ZJdGFOYmQwV0RMeWxRWkoyUk92anUwRjdjMG9NNUMxQ0k2WHd3N2FZNlFyNnlqbGtBRW9Cd1RUTzQ3dWh2Ym43TkxibkFvN0lRR2tKWXVzWXJSa0dyYjlYV01RdXc3SWpjZ0NBdGx4WmtUQW1NQlFBcUhNbmlrVmNEMWR2OERnRDl0bUZvUmdJVTVFNmR6aHJKR3dESXFkd0ZFUkRLUkRtWW1uU2I4TG1MMEp6VTlkQXJTVjhBd3FERU93Q1lsZGkyeUdFQmtXMWNBd29NQTFTeno5Rzgzd2RvUWdqZFc0T3VjRFVIV1NlQjBXTURKckhtd2xwWWlIUkVsZ2dnUHJ1bDdESWY0UG10UTBNa0swQjFCdzhCUTNQK1VJTE5pMXFOYm1wTVRrNmc0SDBmWVhVQktCMVQyUlBqMUVqTDJlZ05XTnJhT2haVUl0UkdNMCtpdVlHV1dqZ3lGWUc3SnRSV0tCdGYyZG9RMFFCcWNQRkRDM0Fia0hiSXFDUy9EWTlrZzlBQVBLdUxTU0xJQW9mTmFSQUpCSVNJN3NRV2tTUUpVWkptZDN3SmF4ZUlvZ3NFSXd1aEQwSTBvTkcwVU5sUlE5WlVZRVFCUktJa1JIZHlDTHlJU3FRSWdzaXFNZ0tvWWNTcEZEcjlKL2gzNll6dTdQN3o2eTdmeC84b0xPek8zTytuY3VaTTJmT2h1RWZJS09ZZmdXMFFFSGhQeEVCV0ptaE1Dc3pMb1F5YW1tTUtQTnhEdzZlbDM3L2poaTJDVmdaQTJUZ0cyMkhwSUh6dkl2d3FsTnNPVVRhRzNyR2QrbytrU1pnTVZVV3ovaHM5TWlMNTBEUVhVNmNobTN3eUkvNWJ0THpPNk5Hd0h5cVdJOUdYckdUaXdyTE4wZDZDNld2MEhqR09pcnZYaFFJR0ZFWUcyUTBnL3RldmtBMzVTc2tiZE1ObFVSRTNWZ1FzRWR6WWJTTjhoencrZndQTkVEbmFLeEN6NmF5VWcweUMrQ1VsZStSWnplWThYZ2RwSmVFVStaSGpiVUF1dVM5c3RrQ1JqMkV2MGh2M0xTN2J6ODkxMnVqcEE5b3o4OEdBVzdON0FkVnNNYXlUbkdUeW5ua2t1Y29yVStNRXVBbS9GWklIc1FJQytnT084M2xPdW9RcmFiR0FPMjRQV05nL01nZ3ZTT0x1YjZERktsanFiU0FVUmRWTlNxbXNYRzBlT0xRNG1XNGNTUGdpaUw5S1NUYzVLS0VLbERIdCtrTlFrQUo4UDd3NlAxZkN0SEVmbEJIdEJueVM4QXpKZzFENXF5SGFBUHJ1RlpoTmRxdVM4QkZKcTBMTk9NRlJRRFhxVXZJT0tOTGdPd1QvQUFTeHNnNEFRZEZibnU5dzRzQTJWbmkzZS9mY29nbmJqQ0syUVl2QXVUbDZIU0lON0E3TjBwcGJTb0Nqa1JJeVRFSlBIWjJXdEpjV1FJYTBsQjRnWjIwamhCWUl4T1E2N2lZQmVrSlhFa0tVL3M1bVFCeE9oRlBmWXhBK3FKWUh0c0VBY0k1dWd6K0g4emtab0VGSVJYZUFYODdTbU9NdlpVaHRnQ3hXdnhEUUc2SXJMZVJ3UEo4alBFODdvSjlMNVJsanI4M2lhVmtWVWpDbzZOaXVhYjl3ZFlzNUhRTUx4UXRJSXltVjYwcHZKY2RJbFhJRG1EWm1VeS9MN1pROE5VQTk2eTJVSTk1MHY5ek1pRVpubDJnd25DaFFlMkZyU0cwekdsSXdFU1A5WUFKQlNRSWlrSWdZRUltby9pc01seElIa1FEWEZ5OERCR3gwWWw4d3dVSDljQVlObHdQenFieDUxc0lBNWFaZnhyd1B0T0hzYmw0VWYxSXdBdm13Z3pEaGZjRXVNZjA2VFhPc05PSEJIQWZzcWcxWEhpNXovd0hReG9YQnBDQTI4eUZPZ3VGNmU1RW84N1FaTGpzUXRVRkpJQTdIenpaQWdIRDhHL1FUeG5vUG1mRDlON0lwTjN4ZWl0SXdoY0xsUkdhSjU0VHdyQ09RNHBXYUJMY2VITEt1UnptQnNJV3k1VkM5N2RySVFpdlFxZVRBSzZKYklIMFFMM2JSVUZBbCtKNmZob1FjTUp0blpFcE5Va1oxMk11Zkk0aWZSZEhBTGVwV0JwekFyaFFvME5jRjBDOFZEemtlSXdKV09abEZQSGFHa1BzamFud1p4WHB2VzRFZEN0dWFvNGhBWncyTzFjMUN6Z3hoVW5ibndadi94UFh6VGtDK2hYS3lhR1l2LzBDTnoxQUJ1ZWJ2eThtd25QT1hadTlGQ0VPMlV4YWV3d0lrSjI3TVB6ZjVTQUUvSVRraDVFRU5rWmNlTTY1cTBSSEZWWUI0d2ZJbjZWNkhWSGh4elBDR2dscmk5R0ZuWjVqUlpic0JhbmlxMS9oZFFsQTFFakw0ODhSRTM0aHRRQmZ3dnNoQUlFdU5Pc2MvK01XZHpXTTdVbnlJbXFoVHh6amxxK05WYitWZHdZaHdDMXV0TitocVV2czgrTWcxT1ExOEFUQUpMSlBJT2svSE9YaGVDUzhXeTRvWmk1WEJEMDRpU1E4aElUZnZqemk0azkyWE1iemdXaDlmazdhMkh0SE44S2RxVHhTVkdaQndreUd6L0Rqb29keFFnTHRiNlJ5Y25RcEpEN1BNYWlSRi9OVmdQbU4xNVBnWWZFeDNRV0FlYlBZR2hhRjNQZTdxTno2VkI5a2FnQjdUQlhDcHZqT291RGlNNmZHZkpkTmorQUQxSGV4a3BXZ2prS3RDL0dCQWZIcDRjT21HYlY1ZXZ5K05Cdk1wa1hXRXBxK3BrSnlCeGk3MGxzaURJL0UzZ0x6dThNc2ZnblEzcm1HV2xGRmNYeDU2RkprSklTYW1NWk5MNW1pZmJDSW91Z3E5cEtFeXBJd0E4MnVsTjBNTkFzcSt4SmhvV0NaNWFPWFZwYmFBN09Ya2Q2TW9xTDhFSlJtRDVNa1A1UWEyQVBMTXN6ZlBXdDNodE9abVQyUE0yZm0zUDJIZzlkelp2Yk0zbXZON0wzV1h1dS9Hc0VmVUcrUXprTUNaWnQrQnF1UG82OStUdEJGVTR0VVlpTktPcjMrb1M5MU5IbXYraENnOGY1T1B6c3NYL3FGd1RFRnZHZFlONGgxbnFCUFZGb1IvY3pVSmxxb0xjSjVLRWFYcmdrM1MwSktrNnhSeXZuOXRhb3h2dCt6K0Qyb2d6MGpnZkFQU1hsdnFMOHVzcGZvZDNIQTJoVUgzSnZhaHJsUDNpRHp4YTVpcDFNQUJRdUhUejJEeUx3NFY1S0htV0VxVHBRSzhSQlRBSHRqKzlTSmNKdCtaMzZubE1XWENhL0ppdkF1TlhwTWY5NlRuSVhqTjFvQm1KTmY5Z3pRbGhRRzZDOTl1ay8xQ0JUaTZQVVIybGlyRnFrNW43L1RvQmx1cjFKd2VGejc5RFFGWURYOGhWUnlKSktTMXZLcW5TWGxOQ2VFZGF3KzNUK2tlTSs4RGE3MUtBUlA5NlB5Ly9qU3FNRExlRURIWXFzRTB5RVVXZ0Z3VXIydUhZWGhZMlNDdHRpMG0rNFJ4c2txakN6VHZQYXIwclY0RkdKWndqYlBWb3ZqaUw1dGVqV0RBbHl2SFRva3RVTlBiSUNMOTE2MVdIcXBTYmN5WjJzWEZPSVdqMUt5Ly81K2d2WW1TYVdRL1ZWRlZBREQ2dlJjelBOeFRvelN3ZVR0Y1g5V2pwR1VzRVBuZTZNUVNRSkxUR3Job2lJb2dDbEVGeWZHZXFQYTRRd1lVYlRibXNqZmNwOUhHZUpXTHBxdFk3czZqd3F3VFB3TDhRVUIxK2RncWRTUitFV2FIeXVrZHExTlcwelJzVjZZQndXWXFqZHpjNHp6R0FCODVYdWs1OEpVbXlWZjROc1k1ekwyMXpSQ0FTQTJKYUI2VllSeldPRU8wZzQvS3c1ZTRQQTZYY2ZtcVlqbkVnbTNYV0s2OWVNb0FGNHpDT1JPc3p5K1MyMzBWaWt6NkRvRW8wTVZJVXFtNEFpMWxxYlhXd0ZJZVZ4c2Vld0c3Y2hGMHR4VUxQWENNb2xlWTR1M3g2WjZLQUJQTDVzdzUxb2NhK2lpcjNReVRBVWJ4WTVDMTRBSGp2S2QvZEpTZ0hhZG84S3F6YjBqZG5UWkR2RmdLSVJ0d29Fb1g0cUwvS3lrQ25DNWhKY0UvRnlWNDFJbm8weGdBdUpzUElTRVlvNk5xd0JqeEQ5L0ZQd3E1WTBkcWduODZlU1NPVjVWUmVnTU9RNU8wTkZSRllDay9hQnlEY3p2YkdOKzQrVFFjQ3hWUlhnZzRCaDJHdHRzRllBZHJ0ZDhHaklGeXphNGNjOGQ3bGJaclBXUjh4dTJDb0FwVVIxcTlaWllWcXB6YURnbXE2eTJWbjAvVEdwUXNWVXJBQXNMTDBrR1FSVURkREhvVUN5UXJYR0tsT01uRENBTXZUaElBYXJuRVNKaGZuSmpXVmhRZzZoNlYzVys5ejllLzNHSHZpYThZRnVXT1ByZm0yaFFXT1BnT2gycTlqSWJLamhPZHFuQ0gyNml2aEpNVzgyWFN1UVJZWGl2VkN0QUxYT0NzR2tDSWo4cDhDQkFqdnU0Q2p3S2lGdGtsL09qQXZlZG9KcGE5TkNkUmdITUZFQzZrbDlTYXhIclNKRGtZYUp2dTJJSTN3emVoMUlKNXk0aXQvNzVQdCtQVlZQL1B3VUk4dUpkVUxCTzg3U1R2cFZtL0gyN1RnMExDellXNDBMNjFLMEFKQ29HK1l6NTdiaUNkQmpUWjBZZDI1OHI0YTd4dktDZnp2ZEJWa0ovRklCRXl1RUJCdzRNYVNndldKZlJmYlpMOUtDTlJvQ2QyNkM2ZDhoOG1DbFoyamVrc2ZFNTd5eXYreXhaaktiRlhGZGtpVEFhZk9RK29LU1dRTmdDWjBMT096c3E0K3VWYXBqTWVVT1k4NjQ3TUxXa3dnL2JGajVUOHMwZituTURydmwzanNjRHF0Q3dVaWpkK1lrSUhoS0VBeGFOWHAzakRyUFJrV1YwTWJ1Z20zSThIamJUSVJGZUIxRUEvUDAyeERhVGN0eGhzb1ptWm5pOWpoeVBSWXZsdzBxVTEyNFVnSWllenl4T2FNdjVXb0Mzd0dVWlhJZFNHQi9rZUJ5bWlBODdiQlhZSStpdUg4S3JvTXV5OFp0eXZ2QXhjWFB2MXFIdDlkcjJ4emtmZzA3TDR3ZzJQVnp5RE53K2k1TW1TUHBWdHVxQmNTcXNoMU5veStUMVRTeEF2eWRaK2tLWThqZUxaL1hQYnQ5YXk0dmNJOFhCYktuazRlRVhoNUZqZDhpOFNPN2VPWkpPWm0vV3NDMDg5SUphQWVLbGljTWp1TU95QVFweHJoT0hQQUU2M3dVV3g1R2tneFByZTZteS8ySHVlTXp5WXJ4YWozZGpuaHUwSHYwOGFIbnNBaVA4YWdVQXNGclpWTTBpVE94cE4rNjV3V3F4Uy9KaGlwdm4vYUw2cE4vRXZvSWdwRW16M05nM0hJdkZmOSsvbHYvaW55QUZNUGEwYlpXVVI2UjJrUkdIYkhDRGxMTzFiVEN2bG5sY0NqaDRUUVRiZTVpVFJlWVlFMkVhWHVIM1VBZk5HOWVwY0cwQUUrZEFKNVBNUUxEdUZzdGpJWm55WlhBSld6amdXclVwbzloYmxhQ1BrMDNkUVpDdWJYMXUrQVlEOXdWc1ZvNTQvNTZ3dEF6WUpUdlJ5YWl1NXA2dDhCK1MyZ1hVSXlzQWdQYk54c2RNR0RtZXRwT2NyRkxIR1dyRzJaUUdtbmIwTThlbTBTZ1VNZVNWRVdRUVJxc08xeDhaS1lPY3pGSURLZmcyWGxwbzl1QWJmc2EyNGFnY1FWQ1pFU0VjeHZJRllUTnhCaU9jN0JLRHNIeWJzaTRyOU9HTFJKSWRseVp1cW1wbEdIM3JkalZYSE9JQkhvYXcyQU9jZDBNbEpnTnBFcUpJQWtrSUtMMGo1RGpNbGNsT2xwRkI3RVZZallPWnV1amVGZmNpYVZERlVsV1RiZE9nalNTMkgrOTBNclVHTVFqTEEzNWZwR08rUE9tRjBpU0x2bFZ2YXFuUDc5UjhXK0prRzRvbnBVeVBIeVQ0MjlPNldEM280anYxSnVmNEtNbDZKMk5mUUwxem84OTBrS3JnRGJLb0cwanU0VVlKenFUWm93dkdiZnJoNzYrbHpFVFdETUF2TWx5dElqNGo5ZCtCSVF2b1M5U2tyaHV5TGh4SmpaeFZrcXdjQ3BtL082VmNyMituTG9CMnEvbXpSK3BQT1krekM0cDc2RmZnU3laYWVvaitQVVJONExpZzRCV1UreTlsSlpCR1ZnNUZHZUREN2VtUlJiemx5R2grc1JFWGIyVFpPSnhKdmZWdHdIYnkyejFJNk5Ed3RXcmYrelJLK0kxV0FDL1lSQm92bFVoYzVzdm5SU05YQ3c2Y1pTdDFMV1Q2ZDRVRVJ5ZjNPQVdveGxjNkY1WThnM2FobE4yZGUzTXM3TDA2clozbnVXK2NaZE4xdlpJN05FUDFjTGFoaVltREVHRzByckQ3MTFIQVdDa3drY0JCQklIVWowVWV2RjVIampURFc5WWhMdjRGTUZiQjdvLy9KSVVBQUFBQVNVVk9SSzVDWUlJIn0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjEtMTItMTAiLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IkhpZGVleiBLZXkgNCIsImNlcnRpZmljYXRlTnVtYmVyIjoiVTJGMTAwMDIwMjEwNDA5MDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjMiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMyJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMS0xMi0xMCJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjEtMDktMTMifSx7ImFhZ3VpZCI6IjY5OTkxODBkLTYzMGMtNDQyZC1iOGY3LTQyNGI5MGE0M2ZhZSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiNjk5OTE4MGQtNjMwYy00NDJkLWI4ZjctNDI0YjkwYTQzZmFlIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ikh5cGVyIEZJRE8gUHJvIChDVEFQMi4xLCBDVEFQMi4wLCBVMkYpIn0sImRlc2NyaXB0aW9uIjoiSHlwZXIgRklETyBQcm8gKENUQVAyLjEsIENUQVAyLjAsIFUyRikiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9LHsibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQ1JEQ0NBYVdnQXdJQkFnSVFjdEVPVDJXWGVDa0Rkei9zWTdVcFZqQUtCZ2dxaGtqT1BRUURCREE5TVFzd0NRWURWUVFHRXdKRFFURVNNQkFHQTFVRUNnd0pTRmxRUlZKVFJVTlZNUm93R0FZRFZRUUREQkZJZVhCbGNuTmxZM1VnVW05dmRDQkRRVEFnRncweU5UQXhNREV3TURBd01EQmFHQTh5TVRJME1USXpNVEl6TlRrMU9Wb3dQVEVMTUFrR0ExVUVCaE1DUTBFeEVqQVFCZ05WQkFvTUNVaFpVRVZTVTBWRFZURWFNQmdHQTFVRUF3d1JTSGx3WlhKelpXTjFJRkp2YjNRZ1EwRXdnWnN3RUFZSEtvWkl6ajBDQVFZRks0RUVBQ01EZ1lZQUJBRkZyUGI4S0RMQXc0SHNZTFU1Y3dldm9QUzBKNlFhbzhIYngybzExK3JZdnN4QXdyVjNQL08yTXRrdUE0YkRrbVlTQTBZTDVBK0oyWW80di9kMS9RUDJVUUYxZHFQRmttVTI3VlpoQzRQWENkY1grRk1kdXViLzQvTEV3VmFPTXdQVFVBZzk4U1J3Y0JqU3p1TVdCbHhlMkcwV1FGbmROMnRuMlkyc1p1Ylg3eVFJSDZOQ01FQXdIUVlEVlIwT0JCWUVGT0poYWZPVlpxNjl0ekJOYTUyVFQ2QmNzTjFhTUE4R0ExVWRFd0VCL3dRRk1BTUJBZjh3RGdZRFZSMFBBUUgvQkFRREFnRUdNQW9HQ0NxR1NNNDlCQU1FQTRHTUFEQ0JpQUpDQWNxNFd2VnFPbE1wYlU0ZTc2U3llY1pVckt5T1NHb1RxdEhKbHJHVzU1QWxIelgwWVZobVZOdFlqQ3ErL0lUYmRqS2ZiLzRSSysxS25xbmxTS3ZaYXI3dkFrSUJRanpjYVZpb0EwbzBWb3lveWFOa0JoMDhTSjJ2L3BoaFp1MTk2VWhSZnFLNlBwOS8xWTR1RFNhVGdoT1F2MEhEazFrdUpPUnN3Q2VsbU1mSVFUYzFFUUU9IiwiTUlJQ1FEQ0NBYUdnQXdJQkFnSVFBY2I1WmNBeU9KbDF4Lzg5Z1lrbWV6QUtCZ2dxaGtqT1BRUURBekE5TVFzd0NRWURWUVFHRXdKRFFURVNNQkFHQTFVRUNnd0pTRmxRUlZKVFJVTlZNUm93R0FZRFZRUUREQkZJZVhCbGNuTmxZM1VnVW05dmRDQkRRVEFnRncweU5UQXhNREV3TURBd01EQmFHQTh5TVRBd01USXpNVEl6TlRrMU9Wb3dPekVMTUFrR0ExVUVCaE1DUTBFeEVqQVFCZ05WQkFvTUNVaFpVRVZTVTBWRFZURVlNQllHQTFVRUF3d1BTSGx3WlhKelpXTjFJRU5CSURBeU1IWXdFQVlIS29aSXpqMENBUVlGSzRFRUFDSURZZ0FFenJWbWUyVzFwMWFxNG8vRUxiRjJzK0phVDZ0UTJab01HMFBjSDc5d2RKd09yUWVBMkVQQ2V3dStlbVNzZ2ZiVVlVSXJMMFdoR0NQN1J6ZnNWaGZCUWxkN0xaZVVoVFBpTzEyenVQOGs5UXF2TGNjbmJqeW0xenpSM0ludlhFTVlvMll3WkRBZEJnTlZIUTRFRmdRVWxpVjBacWkzYWpreEREZThwenM3T0RMRFdqSXdId1lEVlIwakJCZ3dGb0FVNG1GcDg1Vm1ycjIzTUUxcm5aTlBvRnl3M1Zvd0VnWURWUjBUQVFIL0JBZ3dCZ0VCL3dJQkFEQU9CZ05WSFE4QkFmOEVCQU1DQVFZd0NnWUlLb1pJemowRUF3TURnWXdBTUlHSUFrSUEwQVFKSHUvSHhKNHdWREI3dnUxenN1R2RPRVlpQzd0SjUyc3p5bTFHeFhSbk8rRFl0eWE5eWd3ckVaKzhMbzBDWW04endBVitCTTJuaGdYb3YxT0libVlDUWdFcDc2Q0Z3NDh2YWRtemNWbnA0bTFmYkxBcEhUdXVPL3pETVBUS1dhejBndWRyYUYwZWFlZEZ2THg3Q3BYK0gvZ1ZKQUpXalVGVU5VTWdxa2RVbDBNb2tBPT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFERGNBQUFIb0NBWUFBQUdRMmRWWkFBQUFDWEJJV1hNQUFDNGpBQUF1SXdGNHBUOTJBQUFnQUVsRVFWUjRuT3pkMzNYVXZOYkFZZmtzN2tNcUFDcHdVZ0doQXVEYUZ5RVZBQldRVkVDb0lNbUZyNEVLSUJXQUt3QXFDS25BWjRsM0R6Z1R6NHovU1BLVzlIdlc0anZmQzhtTXh2YllrcmEwZDlHMnJmR2xxSnVqdGlxL2Vuc0RBSUFYLy9QNFlIRCsxTEd2NmVOMUFRQjNlWGs0K0hvdytIeDlBTUEvemg4T3ZoOE0zYjhyNnViQTlYc0JBSXg1NFBJWWhIb3dkSHdyNnFacHE1S0hCQUFNVU5UTkcyUE0rODVQUHV1TERUc0xTRys0aWZlKzZZalh0TC83ZE1qUHRsVlpUSDBmQUVoWlVUZm54cGpYWSs2alRoNE9SZDM4TnNiczlmelQ1SWREVVRjUGpURTNZMzZIQndRQTNOWHB1RisxVmZscTArSHAvTnh0VzVVUFowOHJ5YngvMzROaHJsRVBCbWxMeXdNQ0FQNGpuZXhCSGVmVno2d2VFaTVpRHQ5Y240YzVzUXNlRUFEdzE1MU85cWFwK3ZWN3ByMlB6bHF0dEVBQU90aHJBRUFLaG5TV3UvZk0xYzlQZmpob2ZURDRlQzBBU0kxOUNHeDdjRXg2T0doL01QaDhUUURJd2VpSFEydzNjUjRRQUhEZnJuUkVvd0xTc2ZidWZRV3BoN1I5NnZ2dWV1MDc2NUVISHNPNXgyREsrM2c0dnlkdFZWNE8vZUZRbllPK1krdmp2VjFkeHpQYWR0MVc1WkhIMXg5bHl2R1kwN1p0N3pmbU96dFVVVGN2akRFZlhiL3VtdDR0QjRNZkRrWGRuSTU5eDExN0hJcTZHZndsbjh2dXhiQnJkME85WDBqMjRoaHl3Yzk1U0NwNU1GZ1hSZDFjckw5WExvYXVXZTh6WmxQcEZrLzdncGZhdWJvV1Y2L1RzN3BuNXdOem9qZStEbTNudnZIRmZvVDFmeDh6cmZSdTdCc1ArTEhqTWE5cGpEbWNjVEh1RlhVejZzc0UzV1JZbkd0SytPTXhOeno1MmJrUGh1Z1VkZk9UcWVYZDFoS2IydEhLc0lmRDJJTTdkdW5VUUhiWDN2ZWhyNy9CeGNUZlUyL29NWm55UlFrMWJUWFIwOVhGbktPaEk4YU1qODBqQlUxWjFOcEk3Nmk3U21uMS82OTlkLzlNWSsxOE9DaDVNSmoxS1NIZjB5TVk3ZGVDaDJ6cm5HenF0bDNUWE85NVc5LzF2RXQzMm16cncwSFJnNkgzZFhsQTNPVmo5REJpMVBCNDZHdjZ3RTBRWFZ3UC8zUWZFSnVtMW91NitiNGVUOWtZa0o1d2NKL3QrZ0dYRDRidXYwK2RLa2swb1BscmdhSDBrOER2aHdGeW5XNWI1UlBDUDUzNzVOOEZIVDErZFR0NXZRK0hDVUcrWnNES0pPY1BodTdQVFh4QWZHcXJNcWt2a0QyNXJsWXVqUmcxL0J6VHhqV2JPaFV2aHFRWVRrRGY1Mzg0ZHFwc3cva2M4eHJYeHBoUkt4SVYxNGNmbmJUVEdITm1qRWw2Y2NQWXp2Q21rY09vVlEyN2l1MzRmREIwZjM3Qyt6d2YrZk94c0QzNUh5SGFPbmYwdGVVRzgzVzFqRStHd3Q0V0V5dzVndHp5K1gwdkNWNFp2U1RXbGFWSDdpVG8zTzVlek1GMW5DSEVnMkhPNzZVNE56bTBKeDlMSUhQb3ByY3BlM0ZpNFBNbXR0U0RZV2s4R0hhNzgzRHc4R0FZdmNuTlFVOTB5Z1BpZk01N2FoVGk0Zy81QlJ2NFhxUDI0aUE5cVhZUWxqQTVLNnVuVFc3N3UzN0FVOHFLSE9hMmUvVWRUMVo2SUdJN093aU1Hb2I1KzNBWWVVTzQ5ZEFXTy9mNWU5c1BqTm5oUFBZQ2tGS25TZkU4SGNFWExBRjBCTERKcEpHRGp4eEZBK2MrZmU1dzlsSHFOQXByVytlSDNDeDhkQTdnM3FDTmliTCtmYzZLTXlUb2YyWms3OEZIanpIMDVybWNlRHBmV3RlUkw3bExXNTJSR3hNZnJWSTRzMDhBeGxFTjZWbDhQUmc2UGd5TktkajlIVVBTRVkraFpOaCt1MnRrTktLZGgyNmFOTTdBOW0xZFVyMkpyeFRPRWJzcDZzYjc1NXY3M2FEejU5ZllhYVVUbDYwSjhHQ3c3ekVtNVcyU1dTdGQ5dlJYeVE5REdob1AyaFd6aXRXU0hZek9hSUxZUkdaR2pSekdGRmtaOEZyZUh3eTR3L2I0djgwNUpFc1ZURXFadzgvL3VlOHZwMllQNkxPcGxnSFM5RCtQUlNvMlV2eGdPRnZnUFlOWW9zZVBvT2QzWXhvWTF6ZHpHVWtrT1VyRFAzWmFLZWpESWZTRFljeEYzRlpsMGh0bzV0d2t0UGNXNmMxdTUrSDQ3T1UrNmt2ZC84YmNFRU1Fa0R4Y2NOa3VVVVVleGlTbzVDSHFoOGNraEl2RlFTZnZrSjVnWnpEYjlWQ1ZuczE5VTI0T2pCcjBtbm8rWFQwbytJNmxhL1JTMW9sMUVHNTNCYk9MdWpsdzJjdVgxeHRqWitxT2lhYkdNY2dUdElPcmgwS2tEeGNuMlZRN2hXQU81aTVZbVByZTBPbUJtYkNpWWV3RFl1QlNTdGNYNXFqWDg3VU1jbW9jbzZnYmJ3K0hNZWRiMlJmNHc4aWx5Y254ZFQ1a3djTHFRZkdiNlZqM2JGTEFtT0tha3pmQjJWVk9RK2JabG9nelRIZzlYNk9HMkwzMDNmN2NlNC9keisrcVNKT0ROajAwL3lxcTdTeWNrM0JWUmRmZWpTMm90S1MvTVljSkovZkxyaCtJNU1HUTdPYXBiWWFjbTdZcVB5M2F5TXlNcUFFZTVMekk5NElTc0ptYUZaQ2VlMk4zblMrSi9FdklSTEFLaGpOTHdDN2g3YTczSklnK3pKMkhROGhLYWhvZURFd25RWnNSb3dkdWNEM2FxbFJkdUd0c2JOZHZhN2E3TjNJSThZQlE4bURJY2pvSlVWRFRhU25xWnVQTzY1Z3RuSzlxWjdZQ0RRdEdOZ1drYlVyR2Nzd0xEUTFLS1hvd01KMkVQeHpjS001Y3JrS3huWlpWVnRSdGZBYUNKYTNPenJpaXVKNzRIck52MEhNK2YvZjlYUnpIRWFzQXk4N1BQVnN0N0pFU3AycVdzUGMrSE5xcVBKaHk0blpkckR3WWtDam5xMUNHM21pMmZlZEM5WTVkcDdtZmEwcXlRZGYxODBmNE1xUWpzSVNOQWVtcEgzN1RRYmExRXNhKzFvNEh3NlRjL1R3WUVKSGVUS3VBQ1hBdjI3cGF5ZFVEUXRaTGo4MFJzcXVvek9oTmN6d1lFSk50bVZhN0ZnNWNxc3hrdk5SM1BhVjd6TTZsckhNZUVFWGRyTGIzNzl4SXMrWjJXNHJwaVYrR1JTcVlBWE9NV0wyMHlKTFQxRE1aVHhIaUFSSGlQUWJ0YzVqUmtJdUpjUWJuTld5cFo0REVQUXI5OFNKSnlIaTc0SHRIOTlwZGd6ZkJoV3FRcDRMNFRDY2hXdHIyUHNTVSt0dDJORk9hWWdyNVdjYm1WcHBkYW5JYkhnekp1VTYxTG5kb1UxYmdyT1Z0R3JNMHRjK1RDSGRMLytVdysreXpNYlVieHViTzJ2VWFJUlZ0TzY2OUVrZTRjTjNHTVFjZzBveWlBQkNOMGJtVnBDN0RsY3NQeUlnQkFIU1psSGhQaW93NGVVRHdZQUFBZlNablpaVUh4TTdTbnp0ZXc4ZE5mR2RXUmdEQWRyTlNkc3NVMDlUOUExNlNpMm5QeWdnQU1aajFjREN5ZjJEQ0NPREtSMFpVcHBNQXdJM1pENGVWa1RXbFp4ZEduL1ArQUlEdG5EMGN6UERTa3dTZ0FVQTVwdzhIcytOR3pZTUJBT0xnL09GZ050eXdlVEFBUUR5OFBCek0ybzJiQndNQXhHVjArb3dsMmRxcnRrb2QxeGdBK09WdDVPQTZRNlRrZENvWExtd0NBRm53OG5Ed2RBUC9tK3lQQndRQStPWDg0ZURqeHQzM21qd2dBTUNmc2ZVY3RncjFZT2orRzRGcEFCaE9Tc3F1S2dkZXQxVjUxUGZMemdMU2ZUZnh1VGR1NmpZQXdIeFQ3cVZPSGc2YjNuak9UWHRPMVNzQXdOMTc2YTU3NVByUHpZNDVoSjVLQ3RrT0FJalowQWREOTJkV3Z6TXI1cURsd2REOVhVWVFBUERQcmpyVzZ4dVdWejh6ZWVUZzZjRXdPNDAzSXdnQUdINHYzTEFhOU5Pa2g0T0xtM2pQYTlxSStaNmoxK0lCQVFER3ZPdzdCbmFFc0dPVzVmbm9oME5STndldWJ1SnJ2cmg4TVI0UUFITFhWdVduQ1lmZzJreWNWdnJtK25qN3VwSHpnQUNBKyt5OWNjdjk4YXNaRzVEV0ZvQWUrdnErZ3RTNzJqNzFmWWNjazExQkpwZnRtZm9lUHM3dG1NK3d0dG5IbTAxdDh2RDVuN1ZWK1hYdWl4UjE4OUFZY3pQeDEvZUhsUGdOMFRHYmNqM2I1SjAyUjl2RXQvelFWdVdiRGE4NzZqczdsSy9YdGRmU2FyYW01L2YvZk1iQkk0Y1lId3loM3dmK3JYbzhjdVBmeGZ1RFlSTlAxOXlYSFQyK25XMlMzNTM2WUxCdTVyVEJKWWxUN2xUVXpXbW56Vk1mRE5ackxaOTlxRTN4NFc0bm8rZnovQWtiREhvNFREa1lRemRjVEhqTjI3Ry9OL1g5WWpHMDV6RG5wakxrNXdJdkkzNlU4ME5mYmxLRGFySGJHMFN1eDBvKzl6c0ZUVm5LeHZqd3JxcWRPeDhPeWg0TTluL3RrUGhrN085UGZWL29sdms1dlpBcG9vMms1K2hqQVlsNnVYL2ZOMVhrWE4vWHNEWVYvTGRlenRhSFExRTNvK2MzZlQ0WU92OTk2WE0rUDBhK1JnOHg1TGZLL0Nhd2E0cUlCMFBtUmg0THUrRG9seGt3cmZSMHpHRWQ4R0FZdlQ5aTE5Qm43T3RKTzNxRFNwanNqRU8zbkUzZnE0eW5rZ1pOdCtXZ214SmpWNGJyVHFxTngyYmJhaVhYaWUrbTdJOFltZzlrd3BmZ3ZUSG1mT1R2cURmMFdBeGR3VFZpMUhDNjlMR3gxMWRibGQrWGJzZENzaHdkYkhFeCtUY1ROUFFCc1g1UDZIMDRlTXFJT25aL3hOc3g3ejlsdWlUUlBFeG5JUU53RG83aHN3MS9QM1pUcEwyK1lqdWZtejY3SGRrK1Y5SVd0VndzNnhWMjA5ZmdEbzdEOXcxcTdIZjEzc1BCeDROaFlweGhWTStlQjhSL2JDKytxSnVkRDRkZG56M1VsTVNXTDVyWC9SS2Q5MS9zL0cvNTdOMWxoblBXNVE5cHd5S2ZmNm05UnlIYWtJbzdNWWV4QVdpUEQ0WkpKNDJUL1o5UXh5RzE5OUdvcmNxREljMHE2dVp4ZGdkbkJ1NFZ1NjBIcE1jRW9EL3Yrb0dRRDRhT3dkTlJKdk5WRFpzK095czkxT2xObnJibU10dWpNeElQaG1IK1Bod21UQ2U5Y04wWUZ5ZHQ3SFNVOFpSbGRtbSt2d0I4d2NJWm1EeHQxTXBDWUpkSktidDkzQmdjcjU0WjI3NXNWM3VzSDFOR0RRRE02dUd3ZEJESFIreGliRHRUWEJ2dHEzZlBxQ0Vkc2VVS2NxQ0ovaE1FTXJ1RzlGeStndHJpZXNUUFpyczJlblY4Qng3bksvOHRRdGZBQkhPek5pSjJFaG9tL2FBWUd1Q0hNUStLdWhrY3lITGRZL1Q4WUxDdmY3VGt4YTdoaXpaeGsrQzIxMHRxaERYMzJBUWFSZTNjOCtGeUkyTG5tRno1T3Q4K2pqc3J0dHl5STRmamhkNzdjTmNQcEJnb1hzak8zcjdIdlBHenNhSnNHZ2ZuNnppeTBRU2pBb2RHRmZ0eHFObVY2cUNvbXhlT0FzVkJkd3hyWkh0L1JkMHMxUW5ZaWh1L2Q3Y3V2a2NoUmhNTzhIQndhSkdZdzhCNXY0K08zaTdyQjhQSzNGNms5aUEwUWZKK2t1TGVwV05XdE9VaCtNUEJkNXdCeU0ydTc1VDgrNUNOZElQeEhVMWYwSWRENkFjREYvQmRxYVlsWWRTd205MUlKOGRwWjZ4dktJWGZyeWdUNG1rMTZ1SGdPemkyNU1YR0RTWk91Wiszc1ovZnh2bzYxYjhtbGR4VkxOZVU3VjQ4R0x2VTBTNFhhNnR5U0hIM3Y1WjRNQ2pwMVV4ZGUrNHRUakwyZkN1KytmNWFGU1daSTlhSGk2TlVNMy9qRVhQcWkwOXBpNmZOdExaVzl0YWZzV1ZWN2MrNWZ1OFVUVm10OUdOTTN2eElIZ3hlY3RsUFhYcytKT1YySUdNMkVYcVgreWpCQk5yMW52aDByQjFkc0I5aWdEOFBod21qaDBHOWhWaEdETEVXNzVocTZQbTJtd2hEdE1YM2UyaTFka00rbWxEZ3lJdHU1YkFFRC9zakJXMXdhVlFXNmpFbUI2UmRYRGdlSGd5ajExL1RHNFVHUXpzb0lXL1lmRGVXTmJBRDU2M2M4ZCtIdzVRTFljNkZLaFd1UmhuUVJtckhJbHBEdjRPc3dsTnBaM3d4dHZPMlBuTDRNUFlGcG54Z1d3eCtRdW5EZmRmdG9HY0VoVkpiUWFTT2o1dTB5OXhXV3R4NU9MUlYrV1pLdXlZYzdHOGpmNzdadHNLQUJ3TlNNWFJITTZPSGVaWTZma1BmVjhQNXZiZGFhV29XejZGQjZvazM4bzNwTm5nd1lBNFhYMElmMllxSHRNdldmUGUxYUVDU1hub3JndVhydUkrNWYzVis3cTNQdWZzdDczdmRQWC9hSHZpOVMxbDlQU0JjMzhnbkhzeVRDYjhEYUxTeE5HZ09Jd3U3d3N2UlNzUDNSZDI4SC9NTEcrNUx2MGF1aG5xNmNOYmRyYmF0VnRvNng3K0p5NkwxSGg0TTlqVXB4QTcxSWdwT3p5b3k1TWtpSFVBWG16STEyZmh3bUxPTDBFVmRZazhQQnFhVEVJMFlybGVOZ2RnY09vQWhybzJ0K3h6bU5HQms2VWxuN3h2eU5RRU5saG85YVA1T0xkVzJsTzR6T3pmQnVYaEFqTEhyL1FoQUl5ZGFwNWNpR2RVaytZQUk5YmtHN1pBTzFSaEdERUN2S2JVWWZNMjczOGIwblpLMkJzOFJKdS83eFBWcmhqejJneFB2dVM1VTMvZjZIbDUyVWxBZDBNVFdZdGlWYmRTc3JSYVVlZmZMenI5OTNiYTZhUmVsRDRSQldSWmNMaGNkY3h3a2UvWGNQRlZuUzhWMWlyWWQxMlpQRDRpVG9VR2tFZTkvNjZGRUlnQmtZWFRpUFU5VFA4NVhGL0JnQUlEcEptVmxkZm1BSU00QUFQcE1UdG50cUJJVkR3WUFVR2p5dzhITXZCSHpZQUFBdldZOUhNekVHeklQQmdEUWJmYkR3WXhmM3NXREFRQ1VjL0p3TUFOdjBPeGxBSUE0T0hzNG1CMDNmMDhQaHBNNUNRSUJBUDJjUGh6TXY0ZkExZHBmSDNvNC9vTTN6Z0VBeGhtOVEzb00yYzNjYkt2a052RTFEOXVxSExSMUhnQXc0VjdyOCtIZ2l6d2duam1xQXVWRlVUZjI0VlVhQXVZQUFBQkl3T0NrckJyRVVCYTNxQnViMHVsbTdlLyt0SnNCQkFBQUFHSVZ4Y0FoaGdHREdkRE96ci92c3dBWEFBQUFNVkU5Y0VobHdORGpSc3A2WGJWVitTcEVHd0VBQUlBNVZPNXhHTmdSWDN5UFExRTNObXF3NStLMVdNWUVBQUNBT1lxNmVXT01lVC9qSmJhdWlsRTFjQmc1YzcvWXdLR29HeHNsdVBEeDJnd2dBQUFBTU5TVy92T1R0aXAvN25xWkxZT05lOW52VkF3Y2lycXhlVldQUi83YUlnT0hVTXVuR0VBQUFBQmdrL1UrcWF1K1kwK2luNWR0Vlg0eUdnWU9NenJpUVFjT1MrMjNZQUFCQUFDQXJtNi8xRmRmc2FnYk8xaDRMdi81Si9xdzJPYm9oRGMrZTNsL0JoQUFBQUNRV21GL2JPb2ZGblZqSjllZkRqMVlmYS9UVnVXTHpxcWdQN1hKbkplTzNzVjJoQ09weC9CSlV6dGpPVzRBQUFEd3FwejQ0cy9rejl2MWY5alV4K3htLzdRL0V5emlNSEVmUTNCOUJkeVV0WThJQkFBQVFPYkc5Z1U3Uy96dC81NVBtWkFPTW5CZ1daSjdEQ0FBQUFBdzFJeCs3cGt4NXAzeFBYQmd3T0FmQXdoZ3VLSnVqb3d4Ui9JTDluOGZ6Z2o1cmx6Ym1adFZ4Z25vMUhQdUh4dGpIams0OTZkTDF4U2FvNmdibTJyeGhSeVR3ZXVoeFdlNTlxUDkvTGtxNnVaMDRqazNjdDNiYy82VmM1K09vZjFJTDFtVlhCWkcyMkoyVnFWQTdRd3FsZ0dFaThGYTZNL3FzODArQnE5TFhBc2VQc2RKVzVXWFBlL3ozVUdIUDdTenRpcFBYYjFuYW51ZUJqKzA0dnpjdmRleGIwWGQyQUhCeCtDZmRydGZiVlUrbnZLTGlWM3pYakpEYWwxdVBlVDdMWVA3THlIZXk0V3htNDlkdHJmelhkaDRIZlcxejc1WDMvZG9WeHU2ditNMDRoRHFncDE3VWNnTXl6ZDNMZHBvUC9RWFdFN3V2WUlkMEUyK3pEOGR6SUIycjRYZmJWVStEUFhCUFR6VXQxV3ZqRzNRWUwwcjZ1WmQ1NyszVnVkRVVpNkt1dmxiTk5SajZrVGJJZitoL01BOXN2Y0tvdVR1UkpKd2huUHVoeDFvamQzblVLd1hmQnR4Zm40NXk2b2tGNjdYVHJMOVVBNEdEVzJBUWNPVnRQVjNwODFYbnQrenE1UXNUTUU2alpoUFp1SHVaVHFZWVU4R0k5NjVmbkN0dmorSlgxWTM4ajM5UHVCbmtaQlZscnlpYmw2NStGU2RySHZhQncxd3BITU5rVzB4UTkyKzhKVG5mRnVWNSt2OWFibWU3aTI1WGFzWDhYaDJ4Q0hFUmV0aWxMcDB4V2RKWi9VcWNCalJka3pZL3hBUisyV1dER1N1cmhFN3UzZlpUYWZtbW85Qmc2KzJLbFV5RzVldFA1R0lxZWRlZXhaQXVCZnBNazM0Y1dMdkladWllRzFWSHUxNjF6RkxsRlkvTzNuZ0VHSzVUd29EaHA2Zis3MEtLNFZxR3h1bzQ3SzZSaHhlSDhkMlJzTGwrdm9WQmczdU1IakkxNVJ6TDlHS2l3RS9pa1FRWFVDWDdKdTZYRjBYcnZwNjY4dVkxbDl6MHNBaHdNVTdlKzF2cUxvUmMwN1E2bmRERGlEb21NUmoweWFtaWQ3SjRNSFpCazFKTHVBTTF5YmYwWnhOT1BjTUdqTENvQUdiclBjbEhWNHJuMjNsNlBXL0hEVndDSERoWHJsWVVoSG9DM2JZVnFXVHRja2hCeEJFSCtMaWVQQndJWU9IMlprOFpFMmxzNHhrWEkvL01IaklsMTJHTWlTeEJaM0l2SEMrTVVUZmMyUEVKUHBidTFSNnlQc01HamlFV0VjWjBiSWtieG1MUWc4ZzZKekV3ZkhnNFV0Uk4wL2FxcHk4YVZwU3ZEbkwvclRrZFJqVGNraGZjcjBQT0FqbiszZ3VMckYyZlhKNjFCakZkcjE3VEhLUzFYblAxV3AvcmN1UHYzUGc0UHVobU9JK0JsZnY0L3R6eWV2ZmhrelppV2tjRHg1K0ZIVXphVG1nekY3TXpsc3RrcmoyT3Q5WEp6bTk1YlVlenhuY3diOGw5cXU1eHVSUkZKd09Uam5ubUd0ck9sYlBOOE45QnpNK3YwTmxkVnJpeXlidnVlLzViZllJZzhiQjhUVTQrbUhrZU4vUWg5UUdySkxCNHBlamx5TkZhMFJjZmplbG9pL2cyaUdEQnJqUU8zQ3dlVng5ZGlaZDVHaVg5bm10K3J6VWdHR3REYitsRGJjKzM0ZkJReHhjWGd0anpybDBabHdOR3V4U3FUZU9Ya3NWaDZIL3BDcmE1OERocytMZGdKOUJCaHcrbDMrNTJwTUozQnM0eUlYNjNNZVIwZEFSSCtpbG95VlUzMTE5OGUzc3JPOWp4K0FoRGpKVGYrYWlzVVBPdWFSOWROS1prWHNBUzNBQUJZcTZ1WmN4QmVsaEx3TmN1ak53OEIxbGlPRE0zVXJINWw3bHZESHNaaVk1bHM0M3VzbHgvT0Q2ZFZjWVBNUkJhakk4Y2RIWWJlZThxSnNqVjJrZkNaTUQ2bnlVYXJHek02MEJ5TVBmemRGOVphWmRpYUhENEtxTmdmWmMyR1VlYjN5OUZ4bVg0aUF6OTA0MlRmZWRjN3RCMTJaaGNuRXd1SjZBd2E0SC9PQ2g0d0tzVDN2dUk0UFRNMEkxSjlGcFlLV2JWY25iOGlUTlJ6dW1BY002eDVsMm9rTjA1RCt1cm9QdTRFRlNBUDV3MVQ0WHJ4TURxVy9oUXJDSHZVU1Znbk5SVDBRVGgvZWpuYWtUN1hyMW9tNThmL3IzUmQyOFgvL0wyTC9QUzEzdnhwamZTK3d6a09nMDRNeWZnWU92RHBqbUcwek1BNFl1WDRNSG9nNXg4VEI0Y0pJQ01NTkJnNVA2Rm9FZjlrNmlTbVBaam04cTE0ZkxlL0RRUFVCTFRSeHRlRTluQlZFRFdPUjZOeU92K1FVSE9NQldveXBIajZINGdYRG00cUhzT0RYbFhOY09jK3NqVWk0SER5Nk9RQTZEQnBlREJjUkZROFJUVWRUNVcwOEU1S1N0eXN0bG1wTUVCZzVReWR2QVFTTkhtWks4VjlHZXdNZWdZY2c2V3lpanBTTVJ5NkJCNDNJM0luMWhwSEx1RlM5WnZTanFwcHRZWVZMUlNRQzYvQytIY0ppck5MQnljOVkyYVBCQ2lsa2h6bk8zWk1mek14M2ZXVndWa0VOOEptZkxpeVRWK1kxa2NHSnZHaEN4clpXajU5Q1EzczNsZ0VIcnpZNmJNUG9zMUlsNDFsWWxlZUduKzBDKzlXdzljMUVVY2ZYTWsrKy8ycWl4UEZPcDU0STdVa3VZa0tvSDlrUjV5czVnMDd0ZHRsVzVNME9FQjA1Q290bzc1UjdiZCtMcGRSR1FMR0VJc2hlSEtNTThITDk4K1RyM2ZWSGpvbTVzZXRYWFNnNzJJNUp3YlBXVkt1THFaYm0zZEJWeGVPdnA5WThEZDc2dlpiWmwxcURCZHJZMER4cUt1dm50dVZnZkc5b1NJUVAzWno0L0RRLyt5YzRpcXFZUHQ1NHRjZTV0VktNYmxkQncvZG5uMlpMdkg5amc1V2pNdmtPclA1dWpiWkdYdm56TnJvU1lWVWdsdmVvdXZ0c1hVeWNtZEZ0alhSWW1EeUF2R3lqcDlBNm45Vmh4RHYyTHNaNVJ3T2pFWG9EMytDdTM2NzJvbTFOcU9jQ2x2MW1WZkdkbWtOZStiYXZ5b2N2WFpjRGdEaDJJdExuK2pxZHd2WERONTJ2VHVYZDhyM1grekF0RjlsemMyWGZoSzZ1Z0hhUzQyT09CWG5hNVUxWURoOGlXd0VXWHdmTE81dWdBQjNyUFpZNzQxRGMrbS8vYTk0bEJBMXh4ZFo2NVhwQXF4OWUyczJlZUJuWVpzS2NsVGxyMlhRQ0RGSFhqWktBYll3YkxlMW1WNUdadzV2Tk5OWFRXUTdWaDZzM1Z6dXhJKzU2N2I5VWRaM1FDQWVBZnVTZCtkblZJVXMxK3g3TWpEamxtc0hMVnNkL0MyL0orN1hyVHNkcjFjQ0Z1Q0VzTUlPekZGR3JBTUdQUUVLUmVoTFNSdFk4QXNNYW1GbmI1SEpUbjNRSEhHVU01dlA1c0Jxc29VajA3L014ZTkrMzZldTBZYkszakVHbzJJZFFBUXQ3RDl5anhaTTZBSWRBRjJUQlRCQUM3T2I1WGZzdTkwNEhGL01qdDJwTSsxWGZYcitudzVieXU3dkhsd2E3WGxRMlZYalpFclZ1ZEVOZWQybEJmbHBrUmhpQVlNQURBT0s0VEM2UlF2NkNvRzdzMis0dUNwcVJ1MzJYL3EzTWRmMUM4SWYzS1lmMmhzdk9aSjlYNGtxVmVqeHkxNTY5WVYzenNIRGdZMlJEbEs1MWpIMWNEQ0FZTS96QmdBTkJIeXl4a0RDbExpN3F4bGRFL3VuaTlxWU9Ib201c2JaWUxGMjFRNUVtb3BpaWFkWDgycEZhRDdYOTVLdEw3dXFpYm9KdlNoMTd2dHY1UVVUYytDcGZlZURxV1U3elUwcEN4dGk1VldoZTZXTXpVcFR1K0M2U3RURDBlTm5RVzhPWjF5NkFCQU9acnEvS1RoMzBQTDBiK1dtcURCbnRjczl1OE8wYU96L0RVUDdPOWx5aG94aVNqQmc0cmNrS3ZRalZ5NkFEQ3pzVEl6M2t0S09OZzQzUHB2bFgzU1R1anpDRU9BRm81N3RSOHpIbmZBeE5id3pCNFNFZnNuMnZTd01GSUtHbUp5cjN5NTE1bldHNjh2bWRpcm1ZTUdJSkVRY3dDa1NFQXlJM2NZMjlkZmV3Y0J3ODhwOGFSNDZWbXJVMElpVjBqSDFMNFBJUDJPR3l6T2dpQmIzcXJkV3FmQTlRNStHUE95YmFEaGtCbDlXMjJKTkw5QVVBQU5xTHJNbmxJQ3B1bWgyREFNTjNxR1ovVFFETmtraDVmVXJybVp3OGNWaFlhUUhnZk5EZzYyZDRIRGR5SUFTQTgxOGxENUhYZXRsVjVudGpwUEtOdWtEdWRQbGZVSGVxaFZ0OHpFOWVnS2NYdnNidUJ3MG9LSTBNVFVVZWNBUU1BTE05eHl0YjNSZDI4Nzd1L2R6cU1vU0xaVTltYVJwZUsyNWVFYm9mYS9IZGRPTXY4NVpMTHZzcjZheWthU0Z5M1ZYbWtvQjFlRlczcjczaEhtamJ1aWVzTUQ1NHVhczA1bUFlUlBPQ1RERWxqUjVzMzQzUG8raHhUeVNSTjlNc1R4NTZMbVovN1o2Z3NQdHF1VDZrZWJKL0x0bDFQSjc3TXRUSG0wMUl6cVhPT3FSWkwzM3VLdXJHUm54Y09FclhZYStHcjlraVNYRE9uTTY1NUk4WGFMc2tBNW5uZzhQZE42dWJTWVRFUFg3enREM0E5Y0NES0FBQUFnTkNDREJ4V3RBNGdmSGZFWFEwY0dEQUFBQUJnS1VFSERpdGFCaENoT3VJT0JnNlR5cVFEQUFBQXJpd3ljRmhaYWcvRUV2VW5KdjdxcjdZcUh6dHVEZ0FBQUREYW9nT0hsWUJabUY0dVVlWjd5c0NCWlVrQUFBRFFSTVhBb2N0VEJxSmJXNmpIdytzT011WXpNV0FBQUFDQVJzN3JPTXpsdXBBYzlSZ0FBQUNBK2RRTkhGYm1EaUFpNm9nZnRsWDVYVUU3QUFBQWdJM1VEaHhXeGxiSmpHakFRRlZOQUFBQVJPTi9zVFRVN2xHUVFjSGhoaC81RU1tZ3dRNFlDZ1lOQUFBQWlJbTZ6ZEZqckpZeGFSOHcySGF5aHdFQUFBQXhpM3JnQUFBQUFDQ01hSllxcmRpaWNaNVN0anBsMnhoRE93RUFBSUFob2hvNEZIVnp1VVNsNmJHNkF3WVpRQnhvYnpNQUFBQ3dUVFFEaDZKdWJNclNZd1ZOMldwRGxPR2JESG9BQUFDQUtFVXhjSkJVcktXQ3BteTFZMm5Tc1h3T0FBQUFJRHJxQnc0U2FkaFp2MkZwUmQzOEhOQ0VQZlk5QUFBQUlFYXFCdzR5YUlnaDBuQnVqSGswNHVjWlBBQUFBQ0FxYWdjT3NpY2doa0dEM2ZqOGVzTHZNWGdBQUFCQU5CNW9iS2hOdVJyRFJtanhiZW92VWhnT0FBQUFQaFIxODlnWVl5ZmluMjU0K2JPMktrL0h2TFc2QW5BeWc3K3pNNjZodyswcWFzRGdBUUFBQUhQTjdKczJiVlZ1TFNHZ2F1QlExTTFEWTh6TmtKOWR1clB0ZXFrUmd3Y0FBQUJNNGJoZmV0dFc1Y08rZjlBMmNCamNtQ1U3Mmg3M0oreTNWVW5LVmdBQUFPeTBaYVhPVlZ1VnJ3YSt4dSsrREtaOWZXMDFBNGV4bmZHbEJnNEJOalVmdGxYNTNmTjdBQUFBSUdKRjNSd1pZNzUwUDhHYy9uSGZJR1Q5OVZSa1ZZb2x3MUNnZG42VHplRUFBQURBSnQxQnc5WGNTWFU3Y2IzK0d1dDkzOFVIRGhFTkdrSkdBUzRrSFMwQUFBQnd4MXIvZWZDeXBDRjZCZzkvKzhDTERod2lHalNjTGxCVDRwakJBd0FBQUxaeE9XaFlXUnM4L08wREw3YkhZZTZnSWRRZWg2SHBZVDNhbVJvTEFBQUFlZWoyb1RmMWgwZjBzNi9icWp6YThCcDJRSEloLzNuU1Z1WGxJaEdIb202K0x2RytFeTA1YUxES3dNdWtBQlRJYVQ0QUFDQUFTVVJCVkFBQWtJZW5td1laZHFEUStjOC9BNGpnQXdlWndkOVV3VTRWUlV1cEdEd0FBQUNnNjBub283RkV4R0hwR2Z4QkZPNi9ZUEFBQUFDUXNlNysxN1lxZjQ0NEVzODZmNXIxZjl5eUd1aFo5ejhlaER6MHBGMmQ3Yy9nZ1QwUEFBQUFXVHFlOHFIYnF1d09EQTVrTXJxYitLZDNOWkQ5dmFMK044NElGbkZnME9BTWtRY0FBQURNOFduczc5b3NvMEVHRGd3YW5DdEoxUW9BQUlDSjNrejR0U1B2UzVVbzhPYU5yZlBnSlhjdkFBQUEwakdnUC81aHlJZjFHbkdJcFROZTFNMmJCUXE4dVhBc09YWUJBQUNBU2RxcUhCU0I4Qlp4a0E2dCtzNTRVVGVQalRIdkZUUmxxZ3ZaTU0yK0IyQ0xvbTVXQlc2TzVJOXhrQnE2a1hXaW4vZ082dVhwM0Y4YlkreG13L08yS245SGZHeGV5SktGc2NkajlmbS9ybTI2aEhMeWZYZzFjWlB0clRIRzN1c3UxM0w4STI2SFExdnZyWEswN3lWS3JpcEhSN1N2WVpmOVdCNWVzajlqVWxhQWp0dTJLaDg2YmRnV3Z0dnMrRG84WEtvVFc5U052UWIzWEwzZWxvcVlieUlZOEh1dCtwN1F2V3ZVL2R6UmQ5RzNqWlZZbDJJM05ScGozZ1YrKzdkdFZaNjdlQ0hYOTVhbHVlckRiTE5XOVRja083ZzRHdnNjY25SUGU5bFc1ZWhOdjFPNGFPK1U2MkJJMWVqMW54Tm5mZmVBSVczb3ZOYVpsNGdEbTZFWGNXTS9VaVJ0ZGZIUUQvMEFpYW5OM3hhOEZrSjl4aGlpaE9YUUczenViS2UycmNyVGdZZEIrNkRCckZkaVhlcmNLM2pHdlMvcVp2MjcrbVJrN3ZtVlpBWU5QdldrMkZ5Q1BWZmZPaWs4UHd4ZEJ1UEFteW5aZ3BaaW96K2hJblp5anoxZHZ5L1krZzBqSmpvK09kL2pFT2hHZGE5d3hWaUpEUnIrU1BFellScVpuUXZLdy9YM2JNRFBSTU1lSDc2amVRcDk3cFZmYXovNEhyalhPZWNhbDRpL1Z0Q0dsRnpQL0N5LzF2NTc2ekxGb203K3JwU3dVU1NuQTRkQU40UGJ1ZUgvVURldEpXYVp1Q0hIeWNPMUV2M3NYS3JycGhsQTVFdk92YmRCUGRkV2Z1ejFGTU01MzFLVkdDUE5YUWJaVnVYam52T3o3UnE2NmY2SHM0RkR3RUhEckhYdG9RY05EQjR3d3BYTGcxWFV6WlRsQUZQZnkrazFsOE95SHI2bjJkcnpjZTY1bnZJajU1d2xYQm1iK3IzdmU4WVdkVE5vVXQ3SndDRlFNYkxvQmcyYi9qc0VIaUx4OFZDVDQxRU94eTFtZkUvejVmTGNjeDNsaDNNT0Q3NnR2MlIzbVpJeDVyTnhNWENRZEthK042dTVHRFFFeVRLemFaREE0QUVET1YzWEh5SThUTFJoSHI2bitYSng3cmwrOHNNNWg4MGV0VG9JbTVZLzJtZHA5OCt1ZjkvdzdMM3AvTHhOM2V3azR2REQ5eGwwTUdnSVVsTmlWNGRub2NFRGVaWWo0bUZkLzl4YzlRaUFqa0MrNWd6dXVXN3l3em1IK2ErdjBNMGN0YmNXR1hCaTA0Qmsxc0FoeEFVOHQ3TXRCek5FSHVQOUlUKzB3T0RoMk1jRkJYOWNYeU0rQjQ5RUc0RFpKZzN1WlVJTUdXSFFnRFhkZnVlTnk3NmVyTkw1dTMrbSsyeWVQSENJWWRBZ2JnYjkxRHduWTRxdkxkQTVDbkVNb0ZjTWVlK05neFJ6VWFOVGtLK0o1MzZKd2w1WXlOQ05xOGlIOUR0dk94LzR4a1hXdHA2MHZuY214aWNOSEdJWk5JU3FLVEdsN0xwOHZ0c0JQK29FblpLNGVJZzZEQzJ1TmVZMVhVY2JWRlhhQlFCRjdtMWNCV1FwZjdjdnVUY2xMYlBkcjd6aDk1NnNUNHlQcmh3ZFlwTnhSSU9HV1RVbDdBa1BXZVhSSGhPV2dtVExscGwzUG5od0tLbGliMVBaRkxwOU9iYVJ2cUp1M3JSVmVUN2tneklSbEJkYlhUajNZNEROcEMvNWVIM1A4ZHo3eEtiKzRxaUlnNFRLdkhaeUl4bzB6TjYwTGE5eDRLSVM5bEJGM1VSVGlqMTNIcUlPenRaRXV5NWlsV3F4dHdsSW9adXY5N2tmQUd6MGhVT0RiZHFxL0NsOWhqTUhCMnAvVy85ajdGSWxyNkd5eUFZTnpqcDFnUWNQendPOUQ5eHd1ZTdmNVpwb1owV0hpSUlCUVBLQ3BNVFBYVnVWcDUzVXFrTWorZGRyYVZtM1Rnd09YcXJrdTBPZTY2Q2g4NW9Ib1pZdHNXUXBIbmJkditOQ1VRZHRWYzY2Z1llc1NPM1oyT1ZSUi9MSGE0cGJGK2NvTnZaaEY3akpVODc5aTFETFNoZGtaeXU5UnYrSUx2NHhlSDlqd1B2dEIyT01seFVKblBObHlIRjMzdGNiTkhDSVpOQ3dhSUUzUjYvTjRBRjluamtNVlg5emNDTnh0cHhteVd0d3dzUHMzczlMcWx2WFdhdGNuS05CY3IwSFREejNkd1kzMHFGenVyVE1KakhZTlloeXZkNDl0MnNnd3MvcmEvbmkvcGhza01ES3pxVktBVWE3ZytvZmJLT2x3SnVqOXpnSWxXMnBxSnNYSWQ0SDg3aWVyWm1UNnpsRUplcVl0Rlg1aWdGNG51d21kZy9uL3QyQW4zRTJjT0RhemRLekljdFJnRTIyRGh5a2crRnpzOTdaM0lzM1ZJRzNrRGRZRjV1dUIvb1k2SDB3aytQcmIwNWREMmZMZEZMcXROQUJ5OWNDNTk1VjFxMFRSNjhEVHlSVGpqTXlZR0R5QjdQc2lqajRMQngyNjJoZGE0amlab2NCM3VPT1VBOGowdnBoS01jVnFGTXM5a1pITEYrL0FuNXlKNTNKS2ZXSEVOd1BoMi80Z2RNSEZ6WU9IQUxzYTVnOXF4Nm8wM3UxMUViRmdJTUhLbEpHd09YMU1QRzc0Mnd0ZjRyRjN1aUk1WXZhRzlDdXJjbzNuQ1M0MER0dzhOMlJqS3pBbTdQYzkxTUVHanhRa1JKYk9hNDh6Y3c4QUlURFBSZk9iSW80ZU90SXhyUVdPT0JlZzYxQ0hMT0VVbXdtYmNHb3c1Qk5tNE13TXcvTXdocDFqTUk5Rnk3ZEd6aTRyZ2k3NWlxV3MrZXFnK1lxTWhKZzhFREYybmdFM1IvZ3N1SjBCcHVJVTl5N2dRUzUvRjREeUVkZnhNRlpSZGgxU3kvN0dVcmJvS0hENitZbU5rckh3ZVgrZ0lIbjNIdldzb1F3R3d6ZlhGMWpmSzhWbTVNMmV3MlRHWERxenNEQlo4Y3hscGxHeFlNR05qZWhLOGlhVlpmRnBraFpDc3puTXAwbWswV3FPWG5lcDVpSUFzdmFXUURPa1pjeG5HZk5nNFlWMzUwdkNuekZ3ZVdhMVIzWHE2dUsxUUFVWXZDZ0ZoT0ZVT252d01GelovZVQ5dE1mdzZCaHhmUGd3Vm1CTC9nVllCRHBMTVZrUnRFR1p2Y1FIZnZja2ora2xkWEQyN0p4WUE3dkVZZElPZ3o3TGw3RTg4Wnl3SnNOQTE1WHhZZENGc2RhR2dOdnhPekhhaERCV1FUUTU4L0FJZk1DWUNkdFZjN3U4TXNTbjJBekJENEhaRHcwNHVIck9uQzRNWS9pV0VDRU9sR0lSUXFnQXREcGdiVEtTOTJHQ0tJTmpZdTE0cExXYm9tWnhqT1grZlZqd3dESExYczhPOS9aRzBjdlR1RWh4Vnh1ZmgvTDVTYmZERDBMdVArbzdOeHJUMkt2Q2JEVU5jLzFqbFE4eVBsTXRsVTVPOUlpTTdPTHBMVnJxL0swcUp0c0J3NzRqKzNzYXgxRTVWUjR5SEYxN1ZBVzIveGUxRTB5ZTE5Q0Y5QzBuVkI3L0Jad1VkVE5oWWw3MzlJaTEzeEsxenZ5NW0zZ29QMEw0ckI5cm1abXAvcEY4VGJZNkptZEdaeDdJR1NmanFzbGQwNzJEa1dFUVh5K3Nyc0hkeVlyYnR1cWRMYTBFWUJ1Lzh1eGVtUk1HWlIyWWYwNGpLUG9tWEMyVDhmRjNxRllPTDRYNUxTWlBHbzI0dXo0M0o4Ti9VRkZrM043bmYwUU1VYmRBSXp3SUxmcWtTa05Hb0ExSjFxK3p6bUU1SXU2ZVdHTStlamhwWE5PVmhHRm9tNXNqdjMzcnR0cWw1OUdmbWplclpiUHNpd0hTSk92cFVwdk5SNHRCZzFJbWQxUHNGcC9qTjBVN3dzaHJiTm5xZHpETmU5dldyV0xBUVNRRmk5MUhOcXFQTmQybEJnMElCT0w3eXVnb3dBRTlVVHo0YVl1QkpBVzd3WGdORWg1ME9BeTN6N2lwMkMybXZYNTh3eGU0NDdrSEU3NVFHMVYvb3doN1RHREJ5QU5YZ1lPUytZRzd6SHBacnhPY1ZYb3BiTTZRWmtsWi96WnJEOVBBbXZjTVZGYmxaTUxyVW5hWS9WWnpDVDZ3R1FYRURGZkVZZkZjb092dVpwek0xNHA2dVl5WkZWb0lGTE1sczlEdENaZlYzTS91WTAyUnJKTThJYkJBeEN2bEpjcTJkelNzMVBORm5Wak01d2N1Mm1TV3g2aklIUUFJN2RFQjRMWjhubUkxdVRMeGJOcXhYNzNJeGhBRUNrSElxMG83bTNnVU5UTm9odWtYUlNra1ZtUmIyNWE1SVdYS0FnZHdHU0VuTUhPcmRpYlUyd296NWV2Yzk4WlFOeHFQTGpzZVlBblR6bXdmdjFQS3M3NjhIcXBENVZRVmVpTnVPbGlsNUF6MktRUW5lVlp4RzNIUE40SDNIWVNMWklvQklBSS9NOWh4ZGw3aXJyNUdmb1E1SkIyVlFwUEFVTjRYM1pHaDJTV0p6R0dxakdmZE9hRERyZzdBd2duU1VQbVlnSU1pSS92UFE2UFFoNlJqR28xK0toVyt3ZWR3TFN3N0V3djZjUUZuMXhSNURyWEQ3NzBmZFltRGVrTUlqNHMyUllBY1ZsVmpyNzF0VjdlZHNKRDNDUnpHVFF3UTNOSHlFM2M3d0srbDJ2N3ZwYmRNZEFjVDlNeDQveUZwZkY0dDFYNXhoaGovNndTYmdUTklHZ1RrTGpJZmpnVTF6d3d6NStCZzEwRDZiTkRXdFROZDU5TG9oZzBPQlBWV3V1UXMrbEYzVVE3Y0xETElZcmF5MVltbFpzdWxmb2dIVFRrNTBUcUxLalhUU29TOEhsb0U1RFFtVWRVY2s0cC9HREF6N2hRMm9Qc2FUMm5rODFsRVF3YXZIYzZXR3VkTGp1NGRuMk51OGhjbGlpYnplb1YzNmZzUlQxWVhFM0lTVXB5emRrRmdTVmtPeEgwZCtEZ28yT3g1c2JEck1LSmk4R0lqWWk0YVk1WDd6Mi9QcGxkTUViMHRUNVlzcEN2VGVkZW5nV2xvd1B6T29YT2hTd2pXZzBpZm9iZXU1aXhYeGtlNit1STBxbkd2SHg1bHFBRjRCd1BUQm9YNFYrcE4rSHFRZUZGaUdnSXM2UHBjOWxSWnRNMVV1UjZTVzFxZTlKc2ltY0czTUZFc2J6TnNVOUpmWnBFM1JrNGhMZ2h1THFSdXJqQlN3aDJzWG9UUXdRYU5QQWd3QmpaWnNOQitsemZENHU2U2E0aXVCeWprQVVtcytOcWNxYW9tMmdtQmR1cWRGSTRPTVRTN3B6MVJSeTgzd3drYzRNR0lkWnRUbDRDRkdpMmlnMnVBT0RQanhTUGJjZ0NrNWdseDByS3ZwZDJaKzNld0NIUXpXQ3ZxSnRGdzNDQk91VlhVNWNBaFFweHM4RVZBTzd5RUhWSU5ZMzJsWUkyQUVIbEh0SFl0TWZCZXhsOFk4eHhVVGRIQWQ3bm5sQXorVzFWdnByeWl3RUhEU3hSQW9CK1R6Z3UyMDE5eGlHc29tNDRUMjY1aW1oRW1XU2tkK0FRc0F6K2w5QzVjTFhQNUFlY21mS1MyQjhBVXVDNnFqZkZPN0dnaTl3T2ZnemZ0MWlUakd6TXFoUndOdm9tMU9CQisweCt5TDBmUGd2eUFVQUtQQ3haSW1zTUZsSFVEWm53SEdBQ1lFYzYxcENEQjk5dkVNR2c0WHVvVXY4c1VRS0F3Vnd1SjNpZTBtR1hkT2J3eCtXeThWanFEamo3dnJudTkwVlM4OHU3SVhVY2dpeHA4ZG14ajJEUWNCbXFsZ1NEQmdBWXp2Vnlnc1JtTEZXbk00K2Q2MlhqOXRyVG5oNVk2L2ZOY1hISXFPMGNPSVJjMHVMamhocHFoRGhqMEdBM0xSMjdiMUd2azBEdkF3REo4TEJrYVpIRUlDNnhaQ05hUDNJN2R6SmdtalFJczB2cDVYaTVIalJFbTVIc3daQWZzamZOVUJlYXZNKytpNUcyZE1xOWp4Qm5EQm9PQW01YXVuVlJhUnRBT3JSMElDS0poRFlPbnlkZjdPRjM5RnJCeURyNVdKYTg5Rkp5elorTWVCNjd2TzcrV2pzT240MHg1MVBUeDBkaWIrMHpuL1ZGTjJSUWYrcTcva1hNR2NrR0RSeE00TUdEYkppZU5YaVFEZGNoT3VXSE0zNDNSQUc2UDZqWEFFQXIyeUhWbm1IRVJ0OWRQZ1B0YTAwWk1ESFRud1RiTnhrMGNIQjkzVzFnOTk0OEwycXZLOVBmanFnTS9kSVk4OUZuWSt3QXVLaWJxQWZCU3hteXg2SHJROEIyM3NpTS9PVGZkOWlXVGV5SWRkSlNxSkEzZi9ZMUFNQjgzRXVCeVY0TS9jVzJLbFBQUHZaTFFSc21HelZ3YUtzeWRMVzhiMU1LbHdUcWxEZFRaOGdZTkFBQWlCN3dqQnJvV1JTdHhDQnRWYXJlb0w3TDJJakRFbC95QzhrNk5FakFERXFUb2lFTUdnQWdYaDQyU3BQaUVWc2x2dmVnRi8wWHZVWVBITXd5Si9TNHFKdWRWVHdqU0xzYWNuYnBaY0QzQW9DY1BISDRXWE5POFJodFpwa0Z1THptc0pBVUJrU1RCZzVtbVEvL2FGdkhPNEpCUThqMGU3OHlXQ01JQUl0b3EzTG5STllZdVM1WmlqbXpUR2l1cjdrWUVIWFFhZkxBd1N4MFV2dHVzTm9IRGVLTDA4WnNFZnY2T1FEUXpzT1NwY0diUjFOQXAzQzhUSTlaeUtROFhxVnkvbVlOSEVUd1RUdmRnY0xVb2g1anpUbmg3R3NBZ0NTZE9meFF2dE5QYXNJU3BZbHllOFl2a0pUSGk1VE8yK3lCZzJ6YUNYNFRrRXFBZHRQMG51LzNpdVdFTTJnQWdIQmMxNTdJWk1sU3d4S2wyZllqYi84b0NmUnRranBmTGlJT3EzV0t0eTVlYTZUakFPOFJ4UWxuMEFBQTRYbFlzcFJ5c2M2WFV6TVM0aDliSERmRHlFT1VuOWUyZTA0eFk0MmNEQnhNdXBXSlR5STU0WE9xVndNQTVuRlowQ2xFOGRMZ3BBTkYwZzZITWgwOFJKTXhNdFh6NDJ6Z1lOSTdTTmR0VlE2dUg3R2d6MU9yVndNQTVuT2RrR0pJK3ZHSTdCTVI5MGNHWkRFY1h5ZkwwK3pnTTRMUCt5VGxhOTdwd01Ha00zaTRiYXN5WlByVXlkcXF6Q29UQndCbzVQalo5MmpUUDhqN3VOeVU3Y1dxUTV2YU1nMnR0QThnWEtlVDdYemV6eTVmZDQ3T05aOTA2dHdIUGw3VUhyaVlOM25Gc3V3cTRrSGFiWWhON1k3RjJHWmZzcXRpQ3U5U1djSnk1V3J2WFZFM1h6ZE5ZTW1tN0hzYnM0dTZzWC8zenNYN1QzREZwdWZsZGZzRlJkM1k3OVh6aFJwMUhXSUN0anQ1dXNUMW4yTTByV2hiZi8zN0dBY1BQaTRDSDhjaGhZdDFSbEc4bjB1TjZHZTArYnVXbWJlaWJ1em14RW1EWThtaXBzS2Nvb3FhUHNjY2dRdExlakhsWE1SdzdqVzJVZHIwYXViZ3h1YlZ2MXhpaVd4Uk4zWkpXT3gxaW40dnVieFlyZ0hid1g3cTRPV3U1RnBRZXorVlpBTnZaZzRvcm8weDUrelIrWS9YZ1lPSmJQRGdxelB1K2hpd1hoUUFBQUNoT2QvanNJNGFDRzR4YUFBQUFNQVN2QThjVEFTZDNZZzY0OUdrSVFNQUFFQmFnZ3djak9MT2VVU0Rob2IxZFFBQUFGaEtzSUdEMGRsSmo2WndHdFUyQVFBQXNLU2dBd2VqYS9Cd0ZVdmhOUFkxQUFBQVlHbkJCdzVHUjBmNE5wWjgwd3dhQUFBQW9NRWlBd2V6Y0llWUFtOEFBQURBT0lzTkhNeENIV1BTcmdJQUFBRGpMVHB3TUlFN3lCRjF4dmNWdEFFQUFBRDRhL0dCZ3duVW9ZOW8wSERTVnVWdkJlMEFBQUFBL2xJeGNEQ2VPL2FSMVdxNFZOQU9BQUFBNEE0MUF3ZnpyNE4vNitFMVkzQkxyUVlBQUFCb3BXcmdZUDVsUEdvY3ZWdzBld1ZpeWZRRUFBQ0FQS2tiT0poL1ZaSlBacjVNTkhzRnlLQUVBQUFBN1ZRT0hNeC9uV203MXY5dzRxOUhzMWVBUVFNQUFBQmlVTFJ0cTc2WlJkMk1hcVMyenZpbTlqTm9BQUFBUUN6VVJoeTZ4blN3S2ZBR0FBQUF1QmZGd01FTTdHZ3phQUFBQUFEOGlHYmdZSFowdUJrMEFBQUFBUDVFTlhBd0d6cmVEQm9BQUFBQXY2SWJPSmgvSGZER01HZ0FBQUFBZ29naXExSUtpcnA1Ykl6NVlZeDUxbGJsMTl5UHh4eEYzZGo2SEh0U2JadkNlUUFBQUFBQUFBQ2d3QU5PZ2w5RjNkZzZkTWNwZjhaUWVvN2xYcWRFeG40c2hjSUJBQUFBQUFBQUlFVUVIRHdwNnVhN01hWk04c01GVnRUTmdUSG0yNDUzdlNucVA3dmxUOXFxdkV6dEdBQUFBQUFBQUFDQWRxUlVjbXhBb0lHVVNpTjBkakNNMWJSVmVhRDk4d0VBQUFBQUFBQkFLdGpoNEVpbnJnQWNjSEE4eTFXd2dzSjdBQUFBQUFBQUFPQWZBWWVaU0oza1ZsRTNkdmZIVTVjdlNwMEhBQUFBQUFBQUFQQ1BnTU5FUGliR2MxYlV6U3RqeklYblEwQ2RCd0FBQUFBQUFBRHdoQm9PSXhWMVl5ZXFqMmU4QkRVY09vcTZlV2dEQVF1OS9YVmJsVWNMdlRjQUFBQUFBQUFBSklVZERnTVZkZlBDR1BNeGlzWkdZa1pCYUZlZVNodHUyNnA4bU5PeEJ3QUFBQUFBQUtCYlVUZHZqREdubm1zSFg5bjNhS3Z5cDRzWFk0ZkREaDVXNEdlL3c2R29HM3Z4UGxMUWxIc29NQTBBQUFBQUFBQWdOSVVwL0o5TUNVSVFjTmpDMHdyOGJBTU9SZDJjRzJOZUsyaktFQlNZQmdBQUFBQUFBT0ROelBubmEyT01uV2YrYm96NU00KzVtbmVXUmZRSDhuTTJwZnhqK2QrcGk4RFAycW84SGZLREJCeDZlRTcxazEzQW9hZ2JlM0YvVTlDVUtRN2JxdndlWDdNQkFBQUFBQUFBYUZQVXpTdGp6TVdBWm4xdXEvSkZpT2FQYU5QTzFQUUVIRHFLdXJFVHk2WG50OGtxNEtDZ1RvTXJKMjFWWHFieFVRQUFBQUFBQUFDRU5DQjF2NW82c3dNeTFUUnRWUjcwL1FNQmgzRVJIQmV5Q0RnVWRmUGJjekdUcFJCNEFBQUFBQUFBQUREWWp2b01xdWNidHkwbzc2dUhtM1hBd1VOQjZDR1NEamdVZGZQSkdQTmNRVk44dTJxcjhsWGFIeEVBQUFBQUFBREFIRnNXWnY5cXEvSnhEQWQzVzhyODlhQkR0Z0dIQlZQOUpCbHdLT3JHNWhQN3FLQXBvVjIzVlhtVTEwY0dBQUFBQUFBQXNNdVdGUDZqNW9pTHVqbVNvczlHL3ZmaGhOSUFuNDB4NTNQbXBqZk5xWGVERHRrRkhCU2sra2txNExEUUxoR05OdVl0QXdBQUFBQUFBSkNYTGJzQ3hnWWJ0cVZqbW11L3JjcmZZMTVqVjlEaGY1NGFxazVSTjIva1lLUllWMkFSY2p3Sk52eW50TWREb3BZQUFBQUFBQUFBOHRZWGJQaXNiREg2VFZFM1A4ZjhRbC9kQnZOdkYwYjZBUWU3QWw4bXh0OHJhRTRTN0tUNmdpbXB0Q1B3QUFBQUFBQUFBR1JzTmZtK3JxM0tGd3FQeXFPaWJzYldxdjNjODNkZjdQOTU0S1pOT2pFcDdwYmRKVUxnWnJCU3JqOVNMUUVBQUFBQUFBQjUrZFR6YWE5OUhZRk51dzVXQnN5VFh4aGpMa2U4MzR0TnI1bGt3R0ZMTVE1TU81NjJXdm9QanQwa0JCNEFBQUFBQUFDQXZOeEw2OTlXWmUrdWgwRE9qREh2ZkwrVjNkbVJWTUJCdG41Y0tHaEtNdGdsNGd5QkJ3QUFBQUFBQUFDcHVPNHBadjBxbVlBREUrTnVGWFh6bXdMYlhxd0NEMWR0Vlk3TmpRWUFBQUFBQUFBQWcwam1tc3Vld01DNjJ3bEg5R3ZQNno2T1B1REF4TGhiUmQzWUMvQTRwYytrMUhGUk4vWTRuN1JWT1RnL0dnQUFBQUFBQUFCME9WaU0vOWpSQVgwYWJjQ0JpWEczcEhMNmw1UStVeVF1aXJxeGFjQmV0bFhaVjB3R0FBQUFBQUFBQUh6WmI2dnl0NlBYdm80dTRFQUJZN2VLdW5sb2pMbEo2VE5GNm1OUk43YmxUOXFxL0puN3dmQ2xxSnUrclY0aC9XcXIwbFhFV0sxWWozTlJONmNoQ2lpTjlNc1ljK0R3d1I4ZHBmV1pidHVxZk9qamhXVUJnTlg5WC90ZXBZLzNpNEI5T05xQS9HVXF6OGVpYnV6bmVLU2dLZmpuV1Z1Vlg1YzZIdks5dDkvekExbFo5bGorLzF4M2NkdGN3Si9hcWp4WDBKYW9GWFZqcjZNWE5wZHlaUGVkWDNMdi94cmJvaXp1OFNvbFBjYVdPWjFYOGwxZmNndzIxN1drWnZtNjhEUFpIc2VQUzcyL1NEWUZ0NUxGNDJRYStlZXNyY3JUbWEvUld3UzdhTnQ0U2g4a1VxZGgwUUZORjNVdjlHcXJzc2o5R0xpbTZYcFArZnpHZkp5MTN4Tnp1eS9Fc0pOeHpEa3A2c1pPbkwzMjI2SnNSVE1vbysrbG1vc0IxeDJrZnZYSytmbUtrUVRsejduTy92Z2d3ZW52U3pXQWU3eHFhdVpoeGhxUmV6MG5Ocy84RzllVHhoS2svYWJrT0Y2M1ZkazdrUnNyQlFzVHV3NURQQy82bmd0VHgvVkRqdC9xdFljZWF4ZHpEQnVlZlNkUjdIQW82dVo3eGl2N25PTjQ2cmY2d2hKNEFJSjZwam0xbk53WFhHNXpWRXNtNTVNSk5naUNEZjZzNmlKMVpiR2pET294Q2V6UHU2SnUxbmNsSnJzaTFKQlNlQWo3bkgwdHU4YnZZRXlGV0NqZDJhdlJYaWM5dGRXMFZYbmdvSjFlZGpCRHBjWE90YzJzNEh2UmhBMVdEVW1kNzJ1T3dRWURWUWNjbEVVWDUzSjFBNXlNaDFkODVNdnZMWFVIZ0gvc3FxZWlidmFWcDVtN3NXMU1PZWdncWExVVQ4NHpjUkdGUjJ1cmJUNjBWZmttOTRNQ0pHNDkrQmgxalRRQ0RPN1k1d0hQYm1pa0pIMVBDc29RazdqQUJHK05NZS9YZnMwdW1QQityY3F1cm1MQTdqczd4L0IyU2lwTEdidjNVaHR3U0dnNzR1S1R4UW5XYWJpVGd6R0RyYXQ3OGhtVFhyVUZhQ0FUK1VNZXlrdXk5L01rQjgxSzYyaDBzV28rWG5iVjZ5cVFSZDVXSUE4Zk82dmRvOGpoWHRTTkRaQThWOUFVQUo0VWRmT21ad0lTOHlXVmZnaHBzSlA0UmQzYys3N2IrMENvV2xVMjRENWdmdU85dEduc1dMZHY3RzZETE9aL0kxL0lPMXRrS1pFSlpCdG9LQlFFRzlxRWdnMG5ja3p2REJiazd3b3BMSmt5dTJxcmxaMC9BRHpTdmdvdXhVQ3I3TUxUSEd6NFRMQWhHUmZ5UEYwc3p6ZUE0SDdJOTE1bElXcHBXMHV3QVVoWDUzdE9zQUhJeTl1ZVR4djBQaUR6R3g5Mi9OajZEdkd0TnYzc0twQ2lKdUJnSnhxa3NZOFVOR2NPTFlHRzN3bE5TRFZ5VExldVJyUXBxK1JMMVBkbFRzazNDcElCL2hGMENDZUNsSCsyT09rTEJlMkFXNlVNL3FOTnVRSmd0TmZ5dlZleEVyWXpBUWtnVVh6UGdieHQyc2t3NGI2d2E3SFVyMjMvYU5QTHloekg3YmFmcy9QSnV4cXk1V2YyVi8rUGlwUktxZHg4TlV4T3BaYnJjOG94bFMvemVXSTFRTzZSN3czcFBRQ1BCbTQvWEV3S09ZbGwwa2R6c09HWjVMOUV1cDZUM3h2SXpoZWJibW1wNzczc3RGQmRyd2pBUEFRWkFLeHNtbGVRdnh0VWMwcnEwYzJ1U1RkM2dmeVdlOXV6YnEzSlJRTU9FaEhaVzdJTkxpZ0pOQ1ExdWU3aW1MWlYrVjF5c2FkV3c2SnJ0ZVdKZk5TQUo5STUrS2wxQjE3TUU2VVNiUGlpb0NtYkpGMmdHM2ZKODNSU3dUUUFjWkx2ZmRCN1BaT1FRTm9vQkEyZ3o1YkZqQitYWEFReGxLU2pMVGY4K0wxYVdZdWtWT3FrVDRvNjJOQ3BIYkFvT1phcEJCc09YUjlUTzREUWNxNDh1bUR3QXZnak80aythejNFTVg3L2k3cDVyRG5ZSU04TmdnMzVlUys3UlFIazR5WlVpaVg2NjBEYVpGRXR3UVlBdldSZThxcnYzMWJwMXlSb3FVWW5MVnh2c0tHdjFxNVpJdUFnamRTY09tRW5UWUdHaERxdFYzSmN2Ulp3N0p5N3JUbkxZa1VSVE1BZnllRi9wdlVReC9ROGtHREREd1ZONlVWcW5ld2RheTBzQzhDYkwvSnM4b1pnQTVDMkZCYlZBdkN2cmNwWE8rWWxQM2FDRDhGVCs2NDJDUXlZYzk2NllEeFlTcVZFMGllcFNLMndZeHRMYkJhcFFiREtXYVk1VGNvTXBkd1U3bTFwQWpCUFc1V244dEJYdVRJL2h2UktrdWFPWUFPMHM0VmxMMzB2aEFDZ2luMDJlWGtHc0hNS1NCc0JSUUJqZGVZbGJmMkc1eHQrL2VtRyswdGpqTEcvOTJuS2VFVjJVYnphOHI0YkRSMHZldzg0RkhWemFveDU1L3Q5UER2VU1PQzBVYWJZZDRkMGFaalVXUVU3RWd2aXJQeUlJUThjRUJ0YlFMaW9tMzJ0dFdFMEJ4MjAxOVRoZm9rMTMzeE5QZ0xReWVNejlKaFREcVNKWUFPQU9TU1R3aDhqNXRCTCtmUE96dnQ1Wm5kaVBCNjdBTjlid0NHUlFyMHFDdkVtV1BSWVhSSE90aXB0MGUwa0F3L1NBYkxWNG9OdnhRSlNKZmV3VFVXZkZxYzQ2S0QxV1hhN1dtRUNkTmtkVFcxVkJzbnREa0FIdStxdnJjcFByaHF6UkRvRUFHR1F6aGlBU3phamdqSG1kUFdTTWg5OE9XVW53a1EydVBES1JUL0lTOEFoZ2ZSSjExb0dsNGxGeTlWUGVpY2NlUGpDYmdmQVBmdWRJdWd3ak9Mbm1acG5QbFI2eW1uSkJwTkdXUG5vZUhjVDk1SGxIZVorQUdDY3B4b3U2dVlnd1N3SjBhSS9qeFRKUXNmQlJhVGx2blJ2SWQwU2M3Rk9BdzZTQXlybWl2eHFWamdtVXZOaXhSYUVmcVdqS2NPa0duaVFDVDhWS2NLQVZCQjBHTmFPcGR1d3dabXNJc25LVXRlRXJOQ3h4L3QxVE1mYkZwQnVxL0tOZ3FhNHByWUlmbUNUY3QvR1pzSHYvWUY4NzBPdHpIUENGcERPcUJiYUwyUE1FYlhma3NNOS9qK1hIcS90YjU1ZTE3ZlA5cjdNbkFDUUhrM2ZhMmNCaDloWDRtdFpCU29GeFZMSjhSbDlpb3BFQXcvZmlycFpwRmcza0NxQ0R0dmZmNm4zM3VHbHk1UVoyRTFXNkx5UlAzOFZkV01uQWg0cFBvU3YxOXVjZ2h5RGJRaFBCcjUzVnVaRmtpN1dQaDhPNXI2STFPRFRLTG9GWVJpSGU3eGZFUldDSjIwb2dFWE1EamdVZFdNSFlPOGpQbjFhQ2tJZlJCd2h2eWUxMUQyZHdFTXFPMDhlYVM0c0M4UklnZzRxN3hHMlhVc01OaFFIRzU2d2tsT1BWUUJjSnVZdWNqOGVRT3BXZFpDTTdrVTlydHFrYm9FUFhJR2xod0FBSUFCSlJFRlUvWC9BQ2UyTFJOWFZ6UVNRbC8vTitiUXlrUkJyc0tHeG5TMGx3WVkyb1dERGZzcWRXRHRobDlMbnM5ZWVwRUlENElCTTZsOHJQSlo3RWd3SlJtdXdRWjc5QkJzVWFxdnlVdXN6bG1jbDRJZGQxSlA0QkxpcW5PSUVHNEQ1YktwRnhZZHhYL3E2QkJzQUxHcFN3TUd1eG84NWhaTGNnR2R2a1oxTEpudFRLUXA5a3RPRFRUNXJLaDMyajVMT0FvQURVckJNWTk3Y3ZWRGZkYzNCQmdYTndBNUt6MU9LTlJ3QVRmYTFuWTJpYmloQUNxQ1B5bHBVQkJvQWFESTY0Q0RiWG1OZGpmOVNTZkhNN3drRkdsWTdSV0xKWWVpVVhFK0hDWHlVUndsZGs4RGlKRy91UzRWbjRwRTh4NzBoMkFCSHRIMS9uaXBvQTVBc21TVFR0a09RZ0FPQU8yeEJlWTFIaEg0dUFHMUdCUnhrRWlIR3dybTNNaW0rZUhISWlJL2hQVnAyaWl6TnB1V1NCN3pHTkNxakVIUUEzSkZuemhPRmg3UXM2dWFyanhjbTJBQlhLT2dONUVkMkNHcmlvajFlbnJjQUZxTnVvU1g5WEFBYURRNDRSRHdSZVVoVmZyZTBwUlBTY20zYVFWSUtEM3RKOWNWM0JuREExZ3BRZWw5NFd0U04wd0dUMG43Q0xZTXdBTUJFN0d3Q3NFN2JmVUhqam1vQTJCMXdzRnZHWWcwMmFDa0tuWkJEWllHRzN4cXZ6VVRTTE4xbzNTNEt4RWpwcFBleHE2Q0QwbjdDTlFzT29oZjl6a0VBMlZPMXc0SGR6RUJhMkJFS1FLdXRBWWVpYmw0WlkzNUVlUFpVMUdwSXlGdE53UnM3UVNhZDVUMEZ6ZW5WU2JOMHE3QjVRLzBnNkFDNG96am9jRHJuQlpST1hsd3BUTTJCOFVoRkFpQnFiVldxdTQreG14bVlSbUVoK1JNRmJRQ0FYZzgyL1lNRUd5NWlPMndFR3B4cU5OVm9LT3JtSUxhQzVYWjFyWFRvYnhRMFp3b2JjT1E3QlRoaW4xRUtKK2pmRlhXektuUTlpdEpndzBsYmxlcnk2d0lBb0lqZHpXeGtCenNaQVlCaFppM1NjWTMrTGdETmVuYzRTT1EydG1BRGVab2QwbFlRV2lhMW9nbzJyTFJWK1R2bWE1T3QxNEJiU25jL3ZaT0ZCb01wdlRjOFlmQ1ZGSGFwQUlCZjMyVEhRK3U2dGhPUUlPcTZBTUJBbTFJcWZZbnNBRjZScDlrTmpRV2hVNW53bHVQNlZrRlRSaVBvQUxnbHp5eHQrZWt2aGdZZGxONFQ5bTJSYmdYdGdEc003QUVzeWRWeitpeVNzM2pjQ1Q2cy9wQWZIdERwaXZNQ1FMTjdBWWNJSnhadDZvUlJxekxSUzF0QjZPOHBUbkszVlhsdUo4VVVOR1cwb203ZVJOWmtRRFdwTWZCQldSc3ZkdVduMVZxczMrNG1VOUFVQUVBNm5OUmZtSkt5VUpIblBVR0kzd3B6MlFPNVlVY1NBTlh1QkJ5S3VvbHRaZUF6VWlmTWRxVzBJSFNwb0RsZVJKeGk2YjJDTmdCSmFhdnlqY0tDYjEra1pzNDlkcEpoMmFiZFJ6ckZOQlYxODBMWkI5TzJJd2xJVGxFMzJnb3N1MnhQNC9DMWxyWW5mWVgxUU1SNVFwOFJVRTFqUVhvQTZQcGJORm9LMno2SzZPaTg1Q1k3eTYybU5GUXhGb1NlUzJueDJLM3NMZ2ZacFlGNXg1RVVWZmpMQnM1bGt1V0hvcU5pY3pvLzZhWW9rbUREM3JMTnVvdGdROUkrS3Z0d01hOVE3cFh4czhpT0lVZ1RvNHlNUlZXbFVYTTUxclMxOFRMNHpyMHU2dWIxMnQvOXN2VjRTSGtZWHNiM2VBcWhBNEFDM1IwT054R2RrQThNRkthVEhRMmFnZzNSRm9TZUs4TEpNblk1QUI3SVFGeGJ1clVmTWdHMDJnRkpzQUZCS0UzYnhTS1hkR2dMWm1WUG5qVXhqVVduZWhsbnMyZDVKUDJKOWQwUXBHcUZMMTdtRlVnakJnRGpQSWp4ZUVrS0NveTNyeW5ITmF1OC8zcWliR1V6Z0FYSS9WbmJ6cWVib201K0tkc0IrYXV0eXNjSzJnSEhiUDJtbEZNcUFyaFA0KzQ1NFR3RmtsMHdWOVNOTGZSNjdQcTFJL1MrcUp2MWhVeWZqVEd2cU1rRUFFRDgvZ1FjRk9iTDNJZ1ZqWk9jYUtwMXdZVENYWFpsYzFHbmxOWVZ3QndLMDYxcENqYll1a092RkxRRGpoUjFZMU1WdlZOK1BNOFV0QUZJaG93OVZhVlA2dUdsam94OWhoVjE4emlDejcrRTU3TFFvZnZXdDhhWUExSXlRUUYyT0FEQUNLc2REckYwZUNqWU44N250aXJWRkYyTVpGSmhLV2NjR3dBck1kWjRDZUF0TldUaTBVazljQ1Ivb3AxY2E2c3l1Zm9OZ0EveXZiZnBrUTRTK041N20rQnVxL0pJVWdxUnFuUzNQVW5KMVAxQkZoOEFBS0JjYkNtVjZGZ01RMEhvK0xCaUFzQWRFblRRbW1vaXRHZmswSGVIWU5ZbzdHNUFFdmplajNMbyt3MGtnSDdPZVpua3VLaWJibG9xVmJ2NUFRREEzYUxSNnJHVmNqY0tRa2NybGhWZ254VzBBY2lHM005L1pYN0c5d2syWUNuc2JnQ3lZK3NFZlEvMW9TVmRjSTdGcEYyNjZCU2paaWNrQUFBS1BLRGFmaklvQ0IycG9tNWlXcEZESng0SXpCWklsdnRFZGtVbXFkdUVKWEg5QWZteHo5elFIOW9XazdaREFuYUZPL0c2cUp2WDhrS3F4c2NBQU9Ua2Z6R2xjb21wdUhWQUo3S3JRVVZueWhhRUp0Z3duQlNOaTJZU2tWWEd3RElrVi9IYm5BNC9rNzFZRXRjZmtKK2x2L2QyWjRXTTZ3b3Bsb3g1Ym1UWGc1cmQvd0FBNU1JR0hHS2FRSHhLaCtHdlJqcWtLbGJIRjNYelNnSU5wWUxtUkVHdTVSOFJOVG4zdEM3QW9pVGY4N01jemdLVHZWZ1MxeCtRSDIzZmU1dFNzUk44SUtYcFBEY3NpQU1BZExHWTFyOEg5aUFYZFJOVG0yL3NYSzJDZGl4R1U0ZFlWdWpITkdtdVFvekhiWWt0NWdEdWttZjJ2andMazhSa0w1YkU5UWRrNTVmMlBtNWJsUys2LzUxcm1zVzVKT2p3VWxKWUFjQTl5dVpIVTF4c2ZhQ2dEUWdrcXFMUks3bXVVT2lzY2xGQnpnUEJocEdLdW5rVDRYRmpXemVnaEUyaGwraWs2QzhtZTdHZ1E2NC9JQzh5dG9wdVFZMU5zN2dhRjNiR2h5Y0ttaGFEajZScHhrUmNOd2d0eGV3aGV3cmFnRUJXQVllWHNSM3d6SUlPcWdiQlJkMzhabHZxTkVYZC9EVEd2SSt0M1haYnQ0Sm1BT2hJYkhMMG1sMVVXTWloVE5oOTV3UUEyZGhQTGNCbzArejJCQ0hzanNockJjM1Q1cW5zRWdFQUFKNDhNUDkxVUQ1RmxsYnBENW4wZnRKVzVVOEZ6ZkhoUTF1VmI3UTB4aGFFcGtiRGRCRUhhVmd4QlNobEp4UVNDQUNmdFZWNXFxQWR5TWN0Z1hRZ08rcFRKN2xtZDBRYVk0N1dYOWJXM2pQR1hFVC9BZWM1THVybUUrbVZNRlNFcWNnQllGRVBWbThlOGFURmo2SnVQcS9udG95Y0xRaXRKcmNabmRKNWlycXhoVjVmUjlyOFgxb0trd1BvRjNuUTRSa0Z1eEJJZHBPTnVNZk9GSjNUcjhuS2xVMC9sUHRCV0NmZmdUdmZnNkp1YkJEV1RyNC9WZEhJTUQ3bVhoc3lNZGR5anllSUJBQUtQRmhyd3FFeDVsdUVKK2E1bld4SllXdXNzdFJKRDFNdVRCcEM3Q3VQbVp6eEkrVTg0YVJiVzRZRUhleHV2MGNSTlR2bEhZcFlIanRuZHFCbUJSSkVRZUNKY3QwTlllczV0RlY1NzNPbmdIdDgyb3E2T1dMUkRnRE43Z1FjYlA3YW9tN09qREh2WWp4ck10RjFFdW5LcFgzcDZLbkFwT0U4S2FTZm9wTUt4TVVHQ0cxNkFCdUUxOTV3N2k5dzVMT3NabVRBRGVUalRMNzNhc1pOS2N0Z04wUk9PenFRbGpjVXNrNWZTb0VsKzFrVU5BTUJyZTl3c0oySzA2SnU3S3JtNDBoUHhFVlJOeGNSVFdZY2FpcFVhQXRDVXpsK3VxSnVEaUxkSlhRSGs0RkFuR3g2d2FKdVRqVXZIT0QrQXJFcVpHcjdIYllmWkhlNy9DUjRBR0NIZCt4ZVdsWnF1eUZZS1k1SXFWOWdGTEZiUlhOaXAzMzMyMGhwZW5iL1V0Q0c1TjBMT0pqL09oR3ZKRFZEbERzZHpMOFYrcHJ6ZHFwcVd5eXJZalZMWlZjSWs0RkEzR1RoZ0IwNGY5SDJRYmkvNk1CNUFQSXo1WHV2dFc4cjdTSjlrakliZGtQRWtPN1IxdHRUVXo4UnFsMnpLeVlMNTRybVFsTzYzalI5RnVwNUJmQy9UVzhoSzBkT0l2OTh4N1pES3RzK3RiaTFIWDR0d1FhN0VrVTY3UVFiSnJJZDZVU0NEUTJUVUVBYVpLWGV2cVlQdy8wRkFPSWk5KzFicFkzK0tKUFpVTXltZTVTeHIrWnJLZW8wdUFoSzFlNHEyVlVFOTlqeGxEN09jUUFiQXc3bTN5cUZKd2w4emhzdEU4SnRWYW9JZnRnZ2pCeVRaSXVBK1diVGxzZ3hqS2xJNnlhMjlna3JlNENFS010dmZUM2dad0FBeXNqWTVhM1M4L0tJdW5QeHNOY1NpdzhRTTRXcHQ1akw4VURiZVU0aHVLN3RNNUJHTDR5dEFRZnozNG40bVVySFFIWTdxS21Yc0JUcG1OOGs4bkhlaHI0K2JaMEdPWWJScGh6cmtsVkhiQ2tEQUFEQVBXMVZubXZiTmRlbGNFYzd0aURvQUxoVDFNMExEbWZ5VWxqZ21zSm53RWc3QXc0ckNYVU1TdW1VWnJmOXpCYUVUbWdWVUNNVDVlZWgzckN6S3lUNm90RGlsZzQvQUFBQWRyRzc1cFQzRysyTzlqY0syb0Zobm5HY0VDbHR1M1kvS21oRGlocE5ueW5tZVR5RmJWZDFibE0yT09CZy9nVWRQaVJ5UEM0azhKQjhHcG1pYmk3bFM2NmwwdjRzRW1nSWV0NFMyeFZpcE5BZUs4RUFBQUF3bUl3SHRRN1czMVBYSVE2a3MwREUxTzBvSUxXY0Yrb0MyRVhkZkZMUWpGSHNYS1RDWnJFNElaQlJBUWZ6WCtmZ2plWXR0Uk44UzNVYmJsRTNSL0x3T1ZiUW5OazZCY2VDa1dzanFRZTRITWZvSGxZQUFBQlluaXo4MGJwQ25ib09BTHhSVmlQdEwrNTdiaWtOaWo2UEtlZ2d3UVoxYzVFRXZNTVpIWEF3Y1d5cG5VSk5ZZW01T3FsL3ZzVDlTZjQ2WENEUThEUEJoL1lKS1pRQUFBQXdseDJ3YSs1WFV0ZEJ0Nkp1SHVkK0RCQzFNNDJONTc3bjNDK0ZiWG9ld3p5VjRvWFBHczlwc2lZRkhGYWtrL2t5cFlNVCs0cjJ4RkwvWE1scS9HQ0Z2b3U2K1NySE1LbWlOaFNHQmdBQWdHc1IxSFU0VmRBTzNQZURZNEpZdFZXcCtiNlN6RUxhcGJWVnFUWXdLdk9XNnVaM091bmNWZEo4VGxQMFlPNW5rdFFzUldvM3RkWG5pV1ZGdUMwSW5VcU5CaWxtSERReUw0T1JkeUhmTTVBbmJWV1N5eFlBQUFCZTJQR1NwSGw0cnZBSXY3UEZwS2xkcG9Pc3ZrNnBMaDd5ZGFVNWRYVm5mdTV6VzVYcTZrN0FpZU9pYmxiWDRHTHpQdHpYc2Nuc2dNT0tkRFJmMldMTUtSMXQ3WUVIclhuUnBsb2dkWkxOUWZzdDVIc0djdDFXNVZHQ253c0FBQURLMkFrdFNaT2pjZVg2bmgzVGtWcDBHUW1QdDVDeHRpcGZkU1o3TlZ0UHdYTnJpK2FTL1dDdy9VZ20wMzhVZGRQOTd3OVNmOWU1b203T2pUR3ZGL21VODZSVWl6Z0t6Z0lPNXIrYnJyMXBxZDVDTTFYbk0rMXJLQlNVWU1jdDZIRk5PUXJMWUFvQUFPeEN5b1Y3VlBUeFl5YXJLOVh1ZkpkMmhSNXpKTFU0TEZFcTgvSFB4VDMrTGs5ajVNTUk1MlJzVm95TG9tNlNXaWpzSzB1R2ZWNFVkZk1yd3BUYnI0dTZpVEVvNE1zdituamh6YXJoc0luY3pBL2pPeHlEM0VpK3RJTWwzcnhURURxVllNTkxxUzhRc3VPZlVwMkxyaWNFR3dBQUFDYnhzaEl3UjlJZnZWWDYwWVBWZFZCY05CTWR5dlB4dzVHaWJwenYvcGRhazllY0l4WHNUcmF2UGhwQzN2LzRjUTZYNFNYZ1lPVG1LNTNOWnNDUHgraWJCQjZDcGExSnRDRDBwMUJ2YU90Y0pMclNZM1VzcWRVQUFBQ0F4Y2xLVTYwcng5OUovVHZnS3ZzamdGbElZNXlOSjdrZmdJaHg3aGJpTGVDdzBsYmxRZUtycnI5STRPSGMxeHNVZGZNem9ZbnlXNWtjZnhYcURXMmhPRGwrcVJUVi9pdjBzUVFBQUFDR2tKWGpXbk1tNzVGeUJveWo0QUpaQnRJbml6dmY1bjRjSW5UR3d0emxlQTg0ck1oTitFVG5ZWERpdFFRZXZydDZRWnZ6VXpyQ3NlV0w2eVdUNDg3ejZtMGp4Kzk5eVBjTVpKK09EUUFBQURTemFWTTE5MWxsL0VhcWhRd3hsb0pMWEUvcGE2dnluRjFSVWJraVpkNnlnZ1VjakJTVlRqek5rbFZLeDNYeU5sMWJIeUt4bkovQko4ZHQ0Q2Z4OUVsc0F3Y0FBRUFVWkN6d1MybGJmL2pjclE1OW1CeUdEOHJyMThBQjJSV1Y4a0xxVkx4bEI5dnlnZ1ljVmpKSXMyUlcyM1RIVG5vblZoRDZaSW5KY1RtR1pjajNESUgwU1FBQUFJaVZGRzE4cWJUNXI2bnJrQWVDRGZCSk1qcG92Yy9CQWJ1UVduRzZRUHkzNEpsRkJBbzhXTElKOW1GZjFNM0RoQW9oOStvRUhRNXRNZTBkUDVPQ3hnYVZGampPZGhEekk2SGp1TExQamdZQUFBREVycTNLVDdiYnJuVHM4MmZCR0JQU3lYb3AxeC9nbGZMN0hCeVErWmxDQXRYSjFRcU4xRzNvRk83WWJ0R0FnN243UlgyVGFLNzlybTlGL1NlYjFJZTJLdTNuTlZMeklablYrRXQxMEJNTk52eTlUZ0FBQUlCVXlNSXpsWk54MHE0bkZKcE14aUtMNFlEVjNBaUJoM1N0SnJnNXg4dGlvWUJPaTZSVTZtTzN2R1JRMzJIbGRTZmRVaExCQmtuM3MrU1hQS1ZndzYwY1Q0SU5BQUFBU0pLTUhUNHIvV3kycmdPcjRlTzJxbjFIc0FHTFVqQlhBcy9rL0pKbUtiemc5V0l4M09JN0hOYXRPZ1JFQ0tPeE1VMFV4dU5tQ1FBQWdGeTBWZm1pcUpzRHBUWHNucE5pS1Q2Y0wyalYyZkZnODh1LzVrU2xaWlc5eGZ4M2p1ME91VWU1SHhOUGZrbE5LQ2luTHVDd3d2WXo5VWozNDlhSkZCOENBQUFBc2lHTGwxU25XR0lTV3pVbW54QVZtVWRacGRnK05jYTg0d3c2b1dZaGJQZWVSUERCQ2VvelJFaHR3R0VsbDhMU0VTRUhwbHZjT0FFQUFKQTlHZmVwTE1BcHdaQlJPN3ZsOHlSVnIwK0o2N1lxajNJL0NFaERXNVUyNEhDNitqQkYzZGhGaU1lYzN2RzBMb2hkQ3o0OGxzQUloYVozbzVaUzVOUUhITXpkd3RKYXQ5dG1nWlU5Ym5FOEFTQXJ0d3d1QUdBN3V4Q25xSnNYeHBpUENnL1Z0Nkp1em1TQ2NKQnRDN1dLdXJHVDVxK1lYTnlLWGVESVNsdVZyK1MrOEZkUk4zWWkvVDFYd2oyL2pERkhNVTFLUzF2dkxEaVZJTVNuaklQVHRvN3ZLMUsxcHllS2dNTktaN3V0N1p4OTBkR3FMT3hMMEFkdVBHdXI4aXZITXJoOUpUdWxUaFMwd1NjdHgvbWxnalpvMEdqb3ZMSVM4UTg3NmZSRFFUdXdyRU1XejZoME8yWVNlWVF6SmFreUdnVnRHS3l0eWs4eTVudXM4TDU1N3VxRlpEendkWDF5Y1J0WmdIY2t6NVNqeU5OMDJJTGhsM0srVTJINytSY0pmWjVVTkRHUHY5dXFQTjkyNzVHQWhBM1VQZzNiTW04YW1ZRC9tc084aVFRaFVnNU8yM3Y5T1hOZytTbmFOdDRTQ1VYZHZPS0I3bFUwQmFFanFmVkJPaW9BQUFBQUFBQUF5WW82NExCQ29SM25ybVFyWHpTMEJ4eElud1FBQUFBQUFBQWdkVWtFSEZZb3NETmJ0QVdNRlFjY1NFY0ZBQUFBQUFBQUlBdEpCUnhXQ0R5TUYvc0tmSVVCaCtoMmlRQUFBQUFBQUFEQUhFa0dIRllJUEF5U3hBcDhSUUdIYUhlSkFBQUFBQUFBQU1BY1NRY2NWZ2c4OURwcHEvSlNZYnNtMFJCd29FNERBQUFBQUFBQWdKeGxFWEJZS2VyR3ByaTUwTkdheFRSdFZSNms5cUVXRGpnY3RsWDVmY0gzQndBQUFBQUFBSURGWlJWd1dNazA4SkIwcXArRkFnNmYyNnA4c2NEN0FnQUFBQUFBQUlBNldRWWNWb3E2c1N2OXYrbG9qVDg1cFBvSkhYQWdmUklBQUFBQUFBQUEzSlYxd0dFbDRjQkROcWwrUWdVY0NEUUFBQUFBQUFBQVFEOENEaDFGM2RpVVF6ZHFHalRkMjdZcXoyTnQvQlFCQWc3VWFRQUFBQUFBQUFDQUxRZzRiTEJ3RWVLcGtpd0lQWVRIODNYVlZ1VXJUNjhOQUFBQUFBQUFBTWw0d0tuc3QwcWRVOVROYjJQTW5zSW0za0dxSCtleURkNEFBQUFBQUFBQXdCVHNjQmlvcUJ1YlRxZlUxaTRDRGY5eHVjT0JZd29BQUFBQUFBQUE0eEZ3R0ttb20wdGp6TEdDcGxCVG9NTkZ3SUZBQXdBQUFBQUFBQUJNUjhCaG9xSnVqb3d4WHhaNGEyb0s5SmdaY05odnEvSzN0OFlCQUFBQUFBQUFRQVlJT014VTFNMURZOHhOZ0xlNmJhdnlZWUQzaWRMRWdBTzdSQUFBQUFBQUFBREFFUUlPRHJtc0k5QkZxcC9kUmg3N2s3WXFMNWRxS3dBQUFBQUFBQUNrNkFGbjFaMVZZTUJoZ1dsUy9iaEZvQUVBQUFBQUFBQUFQR0dIZzBkRjNkaGFDeGNUM29HSjhaRjI3SERnZUFJQUFBQUFBQUNBWndRY0FoaFI1K0Z6VzVVdm92L0FDOWdRY0NEUUFBQUFBQUFBQUFDQkVIQUlyS2dibXlKcGIrMWRLUWc5MDFyQWdWUlVBQUFBQUFBQUFCQVlBWWVGRkhYenhoanpub0xRYnRoQURrRWJBQUFBQUFBQUFGZ09BWWVBYkpDaHJjcnpiRDZ3SjBYZEhCaGpmcktMQVFBQUFBQUFBQUIwK0IvbklZeWlicjdiM1F3NWZGYWZwQmJHTjFzUG82aWJvM1EvS1FBQUFBQUFBQURFZzJCREFGS3ZvVXorZzRiUkxicjlwYWdiZG9vQUFBQUFBQUFBd01JSU5uZ21CWXpYQzBOamdyVmkwQ3V2WmRjSUFBQUFBQUFBQUdBaDFHendSTkw5M0t5L09rV2hwOWtRYU9pNnBVZzBBQUFBQUFBQUFDeURuUTBlYkFvMFlCcEpRN1hMM29DQUJBQUFBQUFBQUFEQUE0SU5qaEZvY0V0U0pBMU9RMlVERG5JT0FBQUFBQUFBQUFDQkVHeHdxS2lieHdRYTNDbnE1bkppWWUwYk9SY0FBQUFBQUFBQWdBQUlOamhTMU0yQk1lWkhFaDlHZ2FKdVhobGpqbWUwNUVkUk55K1NPU0FBQUFBQUFBQUFvQmpCQmdka0ZmMjM2RCtJRWhLNHVYRFFtbzlGM1p3bWNWQUFBQUFBQUFBQVFER0NEVE5KZlFCMk5EZ2l4OU5sNE9hZHBHTUNBQUFBQUFBQUFIaENzR0VHaWtGNzRlTjRIa3VoYVFBQUFBQUFBQUNBQndRYkppTFE0RjVSTjYzSGx5K0x1dm05MUdjREFBQUFBQUFBZ0pRUmJKaU9RSU5EbmdNTkszdUIzZ2NBQUFBQUFBQUFza0t3WVFJbXJOMEt2ZU9BOHdjQUFBQUFBQUFBYmhGc0dJbUphcmVrbHNMZUF1L2JTaW9zQUFBQUFBQUFBTUJNRHppQXd4Rm9jS3VvbTB0YlMySEJKdHdVZGZPa3JjcWZDN1lCQUFBQUFBQUFBSFlxNnViSUdMUDY4M1RFRWZ0bGpMR0x2cjhhWXo3NW1nOHQycGI1OHlGY0JScmFxaXk4TnpZQ1JkMjhNc1pjS0ducFlWdVYzeFcwQXdBQUFBQUFBQURzL09salk4eTVNZWE1eDZOaGd4Q25iVlZldW5neGdnMERTRTBCSjZsK0NEYjhPWjRIeHBodkNwclNkZUxxU3dVQUFBQUFBQUFBWTBuYWQ3c28rdEZDQjIvV0hDbkJoaDJrcG9DelZEKzVCeHZrQzNPam9DbDkzclpWZWE2dldRQUFBQUFBQUFCU0plbVJ2aWo2ZUZkdFZiNGErMHNFRzdad0hXZ3dCQnRpcUhzeDZZc0VBQUFBQUFBQUFHTW9YNWh0bmJWVmVUcjBod2syYkNERmk0OWR2MjdPd1lhSUNteGZ0MVY1cEtBZEFBQUFBQUFBQUJKVTFJM05zUEo2NGlkckpOM1NUeW42YkgxdnE5S1dBMWp0bExCc01PTmdRa0hwTzRiT2FSTnM2T0d6ZUhHdXdZYUlBZzByVFZ1VkJ6cWFBZ0FBQUFBQUFDQVZJMnNFM3hwajNyaXNOeXMxZFU5SEZwOCtiS3Z5KzliWEpkaHdsKy9peFRrR0cxd1cyQTdzdHEzS2h4RzJHd0FBQUFBQUFJQkNJeFpsdjJ5cjhwUHZUeUNwbkQ0TjNQbXdOZUJBc0tHanFKdkh4cGdmUHQ4anQyQ0RqN29YZ1JGd0FBQUFBQUFBQUREYndFRERrN1lxZnk1eHRJdTYrVG9nNkxBeDRQQS9QODJLajBSd3ZBWWFjaU4xTDJJT05GaDdzak1EQUFBQUFBQUFBQ1lwNm1aWEFPR3RYYWkrVktEQi9MZFEzdFoyMk4veFl4dXpBaEZzK0VkejFlL29TTjBMNXdXMkY3SVhZYzBKQUFBQUFBQUFBQW9VZGZQR0dQTm9TMHYyMjZvODE5QldXMlJhc3ZNMG0zNW0wMXdwd1lZNGl4ZXJKblV2dkJUWVhoTFhDUUFBQUFBQUFJQUozbS82RmRuTm9DNnpTbHVWZG83M2F0Ty9TMWFiTzdJUE5wQWl4eTFKUitXdHdQYlNDRGdBQUFBQUFBQUFHR3JiL0xQMityNXRWZHJzTmRjYi92bGVWcHVzZ3cxU3ZIaFBRVk5Ta253NktnSU9BQUFBQUFBQUFIYVJoZG1iNXA5MzFVWlFRZW80M1BhMVpiME9SYmJCaHFKdVBpVlF2RmlWbkNiaENUZ0FBQUFBQUFBQTJHRlRzZWN6amFtVE5tbXI4dUdHZjdwVGgrTEJZaTFja0JUa2VKN2paL2NseDhsMytjejdNZDBZQUFBQUFBQUFBQVRUdTZ1aHJjclRvUTJRK3JoMnN2OUkvbGhQUjM0QVcrejUwNWozN1hGbWpIblgwNzVMU2Jka2lyYk5hNDVZVHM1aU5RVzA1K0dhUXZLTzVaeU9pb0FEQUFBQUFBQUFnTCtLdWprM3hyenVPU0xQMnFyOE92UkllVnJrUGFvTnU5cXltdlBPS28xUzZzV0xsMERkaXo5dTVOb0NBQUFBQUFBQUFMTWgwR0NtVFBKNzhFWG1kY2Q2Mi9melJkMDhOaG5XYkVpK2VIRklkb3NNZFMvK0l1QUFBQUFBQUFBQVlKdmV5ZnFGbEZMWGVMQzJLczgzL095ZnY4OG0yRUJCWDdlS3VyRjV1STVUK2t3T0VIQUFBQUFBQUFBQU1pZHpwL2RzbWF4ZnlwUzZ4cjk2L3U3UDYyUVJiQ0RRNEpiVXZiaEk2VE01Uk1BQkFBQUFBQUFBeU51YldENzloSFJLR3o5YjhzR0dvbTUrS21oR01xaDdNUWdCQndBQUFBQUFBQ0JmZmFublB5ZzlHcVBTNUxkVjJadDZ5ZFp0ZU9Dc1NRcEpUWUZIS1gvR0JWRDNZaGdiY05odnEvSjNESTBGQUFBQUFBQUE0TldwcHhkL3R1SHZqNHd4N3dLZTBsZkpCaHVvS2VBZTZhaEdJK0FBQUFBQUFBQUF3UGlhSTJ5cjh1dUdmN0ovZnlwRm9LZlVadGltNmRrUmNaUmtHaVZxQ3JoSG9HRXlVaW9CQUFBQUFBQUFtU2pxNWtqVEoyMnI4c1d1bjVuUTVyNVVTaytUQ3paUVU4QzlvbTVZbVQ4UEFRY0FBQUFBQUFBZ0Q2cUNEWjcwN3FaSWNXY0ROUVVja21ya2U4bDhvT1VRY0FBQUFBQUFBQURTMXpjSDJLVDBxVGVsYmtvcTJFQ3FIN2Vrd1Bhb2F1VFlpb0FEQUFBQUFBQUFrTGFEbmsvM000ZHpua3l3Z1ZRL2JsRmcyeHQyM2dBQUFBQUFBQURwNmx0cy9IMnBUenR3OGJPVHVmVWtnZzJrK25HTEF0dCtzUU1IQUFBQUFBQUFTSmFhVERHeW9Iem40dWUyS3AwRVF4NjRlSkVsRlhWelNxb2ZkeWl3SFlZTk9MUlZXZVR3V1FFQUFBQUFBSURNOWRZNGNFSFR3dWFvZHpiSUN2eDNDcHFTRXRMOEJNSU9Cd0FBQUFBQUFBQ3BpRGJZd0FwODk1ajhEbzlqRGdBQUFBQUFBR0JCaDY3ZU91YWREYXpBZDRoSjcrVnc3QUVBQUFBQUFJQ2tIU2o5Y0xldTZqV1lXR3MyTURuclZsRTNUcXFOWXpwN0R0cXFIRklaSGdDQWpXVG41Nm9UKzFqK1dBL1hPcmRQRlJ6RmEyUE1UL256dGExS2J6bE1nWlJKYXRsVlAvS284MUc3ZjI4VWZPOXZqVEhmTy9tSytkNHZxS2liSTdsZVZzOEgzOWZIdGZ3djV4OElSTDducS83ZzZ2c2VxdWJwdmUrOE1lYTN5d2xOSUVJYTUvMSt0Vlg1ZU1EUERWYTBiVnp6OWpJeHZxZWdLWk5vS3dwYzFNMTNDbXlyY1V2QXdaK2lidXpOODhmQ3pYalpWdVduaGR2Z1Zjekh1YWdiTytINXlFK1RKanRycS9KVVdadUNLdXJtcTVLSjhTNHY1MFcrUDQ4N0U0U3JTVU50bnora3o4YVk4MVFtcEdUUS8wVkJVL0RQZFZ1VlIwc2REN2ttVE9mN252djMzZ1lrTG8weG41aUlucStvbTFmR21GY1JYay9YTWpFWlZVQ2lxSnNYeHBpUENwcUNmejYzVmZraTVlTWh6NUVYOGwyUGRhN3NWcjd6bitUK3Y5aUNXQ1Zqd3YwbGo0RXZzaWhxNlN3MXppZldOOWt3anAwOGp2U3c4UDZYN1hlMlZmbHp6b3YwdFN1cVlFTlJOL2JHODF4QlV5YlRGR3dvNnNaMjVJOFZOQVgvTkcxVmF0MVdGVFZGTzZLUzdEaXN4SHFjbFFleXN3eEV5a3BkdGJXWnhqN1BwWFA5S2ZQQWdTdFh4cGczTWQ1TDJaMnJscGY3ckV3QW5iT3d4NG5zZysrN3lFVDNtd3llTS9ZWmNLa3RDS0ZrRWczOUZnMHF1eVFMVTA0em04ZTVsdS84cGU4MzByVElTZHRDWlJjVTlZT0R6THR0dUo0bTM0OEdITCt6VHRCdTU5eUdxMnVzcjEzUnBGR1NWUmxSQnhvMGtlTkpvRUdmMGdhQjJxcDhsZnVCY0VrbUxiVTRsWUZnY2pxck16VjRJOGQ2S00zQmhqMjdDeTNEUUtUYVFNTkVURUM0WS9zdngwWGRHRmtKOXlxR1hXUFM5NEpPdnU3LzdHSng1MTFSTisvazFScjUzbWVkaWtNbXQ4OHpITk4xbndFcndTWWp0MGl5ZjUrSXFBTndSZDNZYSt1OWdxWXN4WjYvcDBYZFhIVGUvN004QjF3dlBHRlJVQjVDTFFMcEN6WjR1OFk2aXpJZURnbnNGSFZ6T25jaGgvUkY3b21pUUxSTUZGNE0rRkZ3UEZOd0xMdE80STZtVmVIc1hBbGpiT0JEKy9icVVsWXlaWUY3SUVhd2s4UWZiWWZhYm50WC9qM0o1anRNbkxvNEFBQWdBRWxFUVZRTWRRSDQxTmhKZ20veXZjOHUxWko5UnNva3dnMkx4LzZ5a3pjWGNrMnMvcHdIYmdQZmVUaGpGeWlzcnVYTUF3MmIySVhJTjNLTVNFVU5yWmJzbzV3TitKbDNBMzVtbDk1NUZQWEJCcmx4cExhNmNURWN6Mmdjc3dJU0NDZVMxWkZMMThJSVNmdmt5VXNGYmNCOU5yL3VEeGw0OGd3Rjh2QzBNN21jYkVEUExoYnJURHdTWUJqbXRSd3owbThoR25ZM3MzelBXUnc2SEx1SG9kS1M2ZjZHN2xpUWROSno5QVViYm1QWTJaRFNqV05mUVJ1NEVjZmpRbG42SHlCMVQ3Ui92aHhXN3NRd0taQjZvZmRFWEJCMEFMTHpJN1dnZzkwaEl4T1BMQmFiN2gxakttaG0rL2Qyd2srKzY5VDRtY0RCaENtUW9pRnowSHN6ZCtQMmxUdjRwRHJZa0ZnUnZjV0x3aVoyUEg4cGFFTUkzOWdXQ0lUUlZ1VlB5Zit1MmM4TUxnY1gyemw5VWgrVXdoMFhiTEVIc21PRERsRS9MMlh5c2FYdWh6T2hVeW9CZzhpOTZrWng3YmhZY1B3UWpWQ0xvV1FPK3ZPQUgzWGQxN2hVRzJ5dzI4Y1VOTU9WSndRYW5MS1Y0KzJLcGF1RVB0TTI3RVlCQW1tclV2dUU1RjdLazZZUjdHcTRsYUFVNG5ORExSQWdLNDhrMEtpOUp0TTlVb2VDL3I5YkZIMkZLcmJQSzNNMGp6Z3pRSGFDalhuYnFoelVEeXJxWnZUTy9VM3pFalo5bE1wZ2d3d0dVOWsrZHJqMHhFUmlXOHJzUk0rZmJiQnRWZHBvNE1ueVRmSXZzV0FSb04yMTh2YWxGSXhmcDNwWFF3VEJLR3gzelBNVXlNN0hXQmF4ZFhZek1ERU9KRXptWjdUdjVBWGd4b2VlVndrZFpEd2M4RFBQSnl4cTNMaHJVRjJ3UVZhZnBGTDA2bkRwb3FQU3VVNW1TOW42UkU5YmxaY0R2empSWTRJRUNLT3R5ams1QzBOSWNnVlVCTG4xdFFlaE1CQnBsWURzbE5yNzBUSUdaamNEa0xCVm9YZFMvZ0JaNmQzRkVMSytsTXhMRDBsRlA3WWYwamQzL3ljdHRhcGdnd3o4UGlwb2lnc2FBZzBwN1JDeFg1Qml3OTkvVjFKODJ6c0tId0hCbkdrKzFMSG5vdDdnUW1XclJBUkJLSXh6UThBQnlJdldnRU5STitjSmpZRUI5SkJGTlJSNkJ6S3pKYVYrMFBsaVNVVy9VMUUzYndiKzNLYlgrL1A3Mm5ZMnBMS2FRME9nNFZWQ08wUTJCaG82Ly81NzE4OGtZaSt4ZWlhQVNtMVZhcThka05UdWhnaDJOZlJ0ZjBYOENEZ0FtZEVXY0pERllhOFZOQVdBSi9JOVY3Mm9Cb0JYZmJzS2x0amg5SExBejd3ZitGcTk4NUtTZlVaUHNDR2hGREVhQWcwSGlUM01CdTlheUNUZ1VNb0tLQUIrRFhrWUwwWUtTS1pDKzY2R1FTczhFQ1hTbGdDWjBUTHVURzF4R0lEN0pOREE5eHpJVys4TytkRFpDdHFxL0RRa2c4T3VGRSt5V0tzdldISzcrbjhlVEcya1N3bWxodEVRYUhpWTJQYTh3eTNiam5yWmdJTmNVeW5uUW54dHE4WGJLdThLMmdJa3lUNk1pN3JSL05HU0tDQloxSTMyOUVRbkN0b0FqK3pFWXlhTEZRQUl1MU80cmNxRHBZNUhnb3ZEQUt3cDZ1YVVRQU9BdGlwL2JwaFhlR1RuY0lmT2Vib1lyMGdHaDdsWkhEWXQxdm83cmw5OFo0T2RNRTFrVXZoazZVQ0RTR21GM3N1cHgxUUtTZDhPK05HWWZTSDlBK0RkRTgySE9KSGREVjhVdEdHajFWWlFwSTBVaFVCMnlvVlQrSkc3SFVpWUJCVGZjWTRCaUUwTDJLS2F3NVVnYXEvdS9PMml3UWJwNEQxZnNnMk9uR2lZakVnb0ZaVjFKbHQ4SnBPQWcrcGx5UTZRL2dId3lLNUNVQjY0akhwM1F3UzdHbFFIbStCVUtSTURBUEt4eU02Q2hIYjFBOWlNZ0NLQXY3Yk5HY2V5NkVrV08yOEtvajdyL3NkaXdZYUV0bzRTYUhEdnM2dmlyTEk5K3JPeXorZFVZdWNlVUVjQ2wycEpMdGhZYWQ3VmNDdkJKdVNEaVFFZ002RW4vaVhJbm5LcVZ5QjdqTThCYlBCc3c5K1gyc2YwRW1qWXVOaDVQY1g3a2pzYlVoalFhUWswcExRNnBtbXIvN04zYjFkU0cydkRnS1c5ZkE5RUFFUWdpQUNJQUh6ZEYwQUU0QWlBQ0l3amdMblF0U0VDUXdTZ0NEeEVBQk9COWlwY1k0L3hIUHFnVnI5VmVwNjE1dmYrOXI4OVV5MTF0NlI2VDkyaktYOWgvbjFIVS83T2FHUkl3ZDU5REh5SWkrd0ZXMEJWdzZXRHNhaFQ0Y0U3WUhQWHJocUVPTEhRclFPQjNlUTI0UUQva1Rma0wrcWE4RGpxOThkVmdZYW1hVzc4K0Y4Y0pOaFFTYVQzVlpCQXc0ZUtzbU5POWpXb2JWeDFUeW9mOG5uTkJnbnN6N2pxUW0rTUYvcjVqN3poTXF3N3FJdnFHT1FJeS9QbkhLLzR3RE1pZ0QzTEczSTF0QWtIOXVTS3Jna1BveVVTdC8zdy9JcEF3eS9uUFRmUEhteW9KQVA3YUtvMlA3dG8rK0YxNmYyNno5cDNxNUljSEtvNTRQQzRnRXhoS05sdmdkZGUxQWJwekZta0c5dFg0SnN5Q043RDhzeDBEMTFEQzJIZ1l1WXBBdXY0VHlYQUdTbVJlSXlRb0pEMzczKzk1SCtTRXZSZW4vZi9NV3V3SVErOUtEMEwveWhueVI5VWZ1TTlPL1E2cGpLdXVuYW12NU0yRU83TzhxSU80NCtjVVFGTWJGeDF6eU1mMDdZZkRoNEUzOEFzV2FSYnFycnRIbXRSM1FETHM5ZHFPd1Bvb1c2Uy9vQjE1VXFBcS9ZbDMrU2d3NlJ0NXRmUjlzTng3a2gwMmY3OXBaMXBaZ3MyNU5LTGJxNi90eWNmZ3dRYWFobXUvZDFjZ1lZemYrOXo1UUVIR1JXd1A1R3JvMTRFV01PVkNxaHEwT1lDN1U2QXFYMXdSS0ZxNXJFQWE5dGdYL0wzSEhSNHQ4L242TFJubi85T0NqTGN2T0ovUGx6Vm1XYVdZRVBlSEwrczlLSUVRNFNlM1RscnZZYmgycWN1S3gvYW05b0REZ1pHdzM1RW1OVnptUnpZais1ejRQWFYzR3FQeldoM0FndVRaK0h0U3kwejlvQWZTRkFBdHBIM0pkZmRFMDN6WVA0OERRaWt0cS9iVmxTbFBmclVGZUcwZ2lFSEdOYmRzLzl0blpiRFAyMnpzRTFVc2prK0JPcmZYRlBXK3QxRER1Qk1IK3kySDI1VVdnbndmV0MwREYzWWk5dUIyd0NsbTRSeit5WkdrTzhKd202NFJBOG1BYkJYZTVtRmQ0Z1dDTUNzSkNnQVc4bDdvbTFPZU5qa1B1UnhudHM2NTRHL3NlNGU3aHlWRGFWdjVGN2FoMnBPT2RwVWk2YzVpbmRRK1lOeWtPcUtHVHpXSHhhbU42NjY0M1J0aUhwb2cyZFhIUWRZdzBWcWJxL0hGdHArQ0J1NEEvWmpUeTBLU3BxcEJHd2dlbnRRb0F5NWswN1V2Y2xYcWYzOUpzbmlldzAyMUxBNWZsVWZxcmxVMWhibktGTDJhT1VCaDVwYWJrRWtrUjhzUW1aWEJhOXFPSWtRQUNlY1owNEpMTTQrZ295bHp5MEVMdWIrRVpoRTJwdk1NMjNUL3VTWEFFZjFseHhrMkRocFltL0JocllmaXYvU25YdHc4VVZTSDYySytud09FVnY3MUJ4d3FLd2lCa0xJM3htejFpeHVZdHYralhzV3VhcEJWaG9BVGU2SlRIMCtPcWZzaVhrc3dLUnkwT0ZXM3BPZWU2YmdVUTR3cEordEV6RDJFbXhJZ3laS3orQUlGR2o0c01ZazhGS0VhVWwxbnNvRER2c2NlQWVMRlBuN3JHbWFQd0tzNFVkUkg4YStISEorRUxFRkRkd0JoZERTTkF3em1aaWNkb3ZBdnFXdU1HYzIvOU0rOVM4VEI5Q1BtcVo1Y09adlRKSWNQdm1BNkh4RDlXTHEzenVuUUlHRzEvc2FWSFlJVVZwU1hTWnRPRlU2TlBwZStteHFFd0tUTzhyRG1jSkptNlRqcWdzUmFNd1ZlaUdsckpHb2F5T0VsRUFqNEFBTGtnWTZqNnZ1M1VTdjJIRG93enVKMU1LWHFtaTNHTWZSMGc4QXk1Q3JEUzRNZEY2UUtIV2M1MDdPWnZKZ1F3VTk0a05rdHVjQm45VmN2S0lFY05aUmNjQWhmVGFMT1E5UWdoVDViL3NoWkxBaFZ6ZEUrY3hIcmRCYjZvUEpnejMrN3Z0bi9ubW5ndllDMVNSOWNLbTVTOVRuZHJUbnpPNnpuL3NhUGpQUG02YVpLdGhRV3JEeVMzN3RuNE8zUDF6SDdKc3JoSFhYcWJsU3lwVCtrRC8zUlgxdW9pUlhRUVJSUGcrVEJoc3E2QTEvTjBJcmhWd2RFbkxBNXpaS0NqU2Nxalhna0FhTmwxQmhBb1Y1R25nbzg2MURQMmdIcjJvSU4wTm9EbnUrQ2Izd2Q2ZHM0VndwWUZqcTRYMjg3Rnd0eVBGQ01wNlBEL2k1ZjVJejhFb0tQRTRaTUNraCtQTExMbjJaQ2Vtb2dtRFJGRDVQV0tYMEw3bDFlS2w4NW9HOW1pellVTUZBNktjUldzeTAvWEM5Z3VxUXM0cWRnVkJwd09GYXVqSGFacG84Y0w2MFVkWDJROVFBOFo4QnFodWlWalg4RW1BTmk1SWYrTDgvOU9jUzM0aXpSWmJpZzNzQjVwQ0RPZDhET2pud1VFMUNWUVYrM3RkR0xBZjNWcmIzM3BYV092eXBkbUxBWENZWkVOMzJ3L1BDczlTT0FuM3gxclN4SGFKU1pCZVZEbzEra1lOYXdIVENsbWVuNm9ZRC91MndEN295dWc0cmJZTGt5c2Q5dG5TYWhDSFJNSTNUSVlkTjA3eHlTQThyRDRFVWFJRDZQYzJmZDRFR1lEWTdCeHZ5cHVXdkJaK3lJVW9iaFFyYVVKMFZvbEprQ2puZ1VGdWZ4OXJtVWNCQjVlKzdrNkJuNFpEZnhWSGJSNFRmNEY2S00wR0h5QXg0aFFubHFwclF5VHk1clcyVlNteHhDNUVVOHYxd0lzZ0FITW9VbFEwbGIxcW1MK0FRRjRyVVN6L0FNcWJ5VzIwWHRieVJXRlhBb2UwSDJVd3dyWU5WRUZ6aDJpR3FtWUpYTldndEVFend6Uy9CQnBoWVN1Ynh1VCtJbnl0OVhUQ242RzBJMzV2VENCelNUc0dHMHVjMFJQa0N6c2V4cEtGcGwwa1h0dWR4bDdlOUhIQ282UWI5b1haS01KMWNCZlVsNkNFOXhKREFxRlVOdGJYR3EwYmdqY2VvYzBlZ0JsR1RlYXBzbjZaMUVremlZZUREbVBaakpFa0FCN1Yxc0tIdGgwY2x6Mm1JOGtDYnM4dExubmR4MWxEN2hTM2ZvRDhOc0pTcGFLY0VFeHBYbmVxR3Y2NXRVYXZidnBRK1MyZ0JETzZHQmNuSlBCRUQ5VkVENXJ0NFgrN1NnVFdjQ0RRQUVleFMyZkI3d1djd1JBWk4ydzh2ZzBmRk54R21KZFcrNVJaUlI3Vzhuc0NiZ2xDcXFOOFBjMVlqUHA3eGI2MHRjRENJek9CdVdCN2Z6YlB4L1FvVjB6b0ppR0tyWUVQaGc0eGZSUmhjbkN0RFhoeDZIVk5aMm9VdER4VWZBaXhsQ28rMVU0THA1TytIaUdacEJSTTRnRmxOa0hnQmZsdjZBWUFGT25IUzk4dThJdGhkMnc5UjcvTWZCRmdEd0hjYkJ4dHlObjZwVXB1Zmc2Ky83WWM3aFZlRy9Fdnc0VzU3a3lzNW92Wm4zNVIyU2pDdGtPM1cybjZZWTNaRDFLcUdxQStIL0tEVzJVL0FwWHhIQXlVSStWMGxtQWhFc2sxbFE3SForQkhhL09RTThrK0hYc2VFRmoxb3M2YXk3OEJaR2xDYzNHNHRvcjFXTndST1NIZ1ZZQTBBWE1EZ1lxQVFFZWU1cUdvQVF0a28yRkJ5KzZSQTJmYzFaWkRmTUdpenFzcU9Od0hXQURVSmVlUGY5c00rTTU5Q0ppUkVxR3BrWTZFcUI5dCt1QjlnR1FBQS82S3FBWWhtN1dCRDJ3OGxsN1NIR0FoZG1ic0NEZitvSmVDdzUwMUlXSlRBTi81N3ljZ0tYTlVnMjZ0TVVhdURnUDB4dDJHUHpHaURLcGx6QllTelNXWERyNFdldnFNSUE2RXI4elRTTWMwek1DSzRIV1FkdTRoWUZnb2xDOWxxYmsrQnhhaFZEWUtvWlhMZVlIbTBVdG92RlZwUUdYT3VnSWpXQ2piTU5GQnlIMDRNaEp6Y1VhUmU1SG5Pd0tNQVMwa1grdU9vUTJFMzBmYURpaFdZU0s0QWl6aElmdExBWXVDWkw0dWVLMVN5Z0VFaW0zU3dmeExFOXN1bUpPeWc3WWNRK3c0QTBWMFpiTWpsbG5zZEtMa3Y0NnBUS2pxdElWTHdKbGMwaEpvemtBTXhId01zWlJmWGxGbkRkS0lPa20vN1ljckFjY1NaTDErMCt3TW9pbUREZnFsZ2h0MUVDemE4RDdBR2dQOVlwN0toMUlIRzVqUk1LMVdKUkdsWGxEYkowdWJkcHdCTCtZOXgxZDJ2b09kc1RZUE1JWUtqZ0dmaDhSUy9KR3BWUTlRZ0R3QVhFbXpZTThQdVlTZlJQait2QTZ3QjREOHVEVFlVZkRQeTBaeUdhVVdxRXNsWjkzOEdXTXFGYXFpcXlRRWRZQUpSVy9wTlZOMFFzYXFoOUFvemdNVlJqVGFMUHhid0dtRmZRblg4TUpjTWlPcXF5b1lpYjBaeVpqblRIYzgyMkxFc0pldSs5Rjdob1FNNlVLQmZBaTU1cCtxR3FMMXIzUWNBd1BuYWZwQ1VCd0RzellYQmhzRERIcTlpR09TRW9nVWEybjRZQXl4akxUazc2MVVCUzcyUTJRMHduWEhWaFN4MWJ2dmg1UTcvK3U4VExtVXFSWC92QWxDVkx3RmZURGZ4M0NZQWdMOWRWdGtRc1MzQ1ZkNHJ2NTFVcU1CTjJ3L0ZuZHR4MWIwc2ZINkR6Q2VZMW9PQXgvUEZOdjlTMUZhTCtYc1hBQ0tJZWkvOVdJVURGTTF3YUNDc2M0TU5VZHNpWEdWY2RVV3VPNmk3a1FJM09kQndMY0JTTmxiNC9JWlFmU21oZEZGN3EyNVp6Uml4MVdMRVlBNEF5eFY1UXo5Vk9JeHRQOXdKc0JaZ00rOGNMeUNxaXlvYklyWkZ1TXJ0Mk1zcnl0TklBN1p6MWsyUmdZWXo3b1paeVlhVVdjUGtJcmI3MjZpYU1YQlZnMEY1QUVSU3dvYmdweHgwdUJWZ0xjQjZCQnVBc1A0VGJDajBKbU1ZVjkxeGdIWFU0R2hjZFdFMmwvTkdkeGRnS1R2SndadVBoUzUvcHdHeXdML2xxckZ3UFp3M3JHNklXTlZnWmhQN0pKQUZleFkxa0wyTFNBbGNhL2d6QngxQ3pwaUNRNHIyL2FSOU9CRFplWlVOeGZWdUhGZWQwczlwZkJ4WFhaakI0SG5qcTVxTjduSFZGZnNBSmRNSnBqV3V1b2lmcWJXcUc0SitIM3p4MEFWUVBQZWJNVHpMUVlleDFQYktzQWUrbndEV2RGNndvYlIyTmE4Q3JLRUdYeUp0aHVmZW9TVU9LYjlLcWUyVWxHbkM5TUlOZGxzemErdlBHWmF5a2FEQkczWlFZNFl6Y0NVSlpQSDhub01PbnlVZnNYRGUvd0JyK2xld29lMkg1NlVkdUhIVnZReXdqTktkUk5xb2Fmc2hEVlQrRkdBcGs4dWwxT0hhcDZ5aCtGWldFTTI0NmlKbUMxN2FIaW5vUmtPcExlcTRYTFIyQmRvb3dmN1Zta1ZmdzNXcU85Tm15VHczbGtpd0FXQk5QMVkyL0ZyWWdYc1FZQTNGRzFmZDlXQ3Y0V3VBTmV4TnFSbTRPUWdFVEN0Y2RkNFZHZVhoV2kyVzNLS09TMm5kQWN0enM5SlhYTnNNaE1kbjJpeUZhY0VMZXliWUFMQ204OW9vRlVPVzJlN0dWZGRHV2srNmFRMndqRGtjRmJobVZVUXdzYURWZWVkV04rU0FZN1JXaTFvcDFrdEZIVkNGY2RYVjNJNzBUUTQ2SE9jMnVBREF3djEwK3ZJTGJLR2txbUYzTnlJdFprR0JodlRROGFUdGg5S0dYejlybXFhNFZtc0IzVnZTZTUyMVBMaXFmZEhjVXJ1a2NkVWQvL0JuZi95L0QwNHJSZGphcmFYTnhaQ2tGSnRCeE1WTFZTbWYybjVJcitOOTBGYVJTM0lubjR2Rm1PRTcvbDZnWTZtRktCRGFUMmNXVjFRTEpROE1PN3M5cnJwdlVSYlQ5a09ZdGN3b1plUytXTXlyQmM2VnJtY0JId2pURU9pL0s5K0NWalZJT3FoVTJ3KzF0UnlKNkhIK1dZelQ3OWxvVmIzOHJmWTVBRWNMK3N3OVBKTlk4MHBpd0VHVTFoNTdaL2s3L2lSZ2kyaUF4U20xamRMVEFHc28yZDF6TWxZUHB1Mkh6d0Uzc2ZiT2pUZHdScWhLcythL3c2QWpWalZJT3FqWHM2VWZBUFpIai9td29qMExUSjA1dk5UcTRCZTV6ZEkzMVN2TTROb1A5NisxY2c4TWhQWTkyRkRhRi9LNDZtclBmTm1ucCtPcUN6UGdzKzJIZHd2dnkxemk3QVpnWXJuUzdFdXc0M3IyV2hGdEUraDJnRFd3QjBHckdwYlZpNkoraG53R0U3VENlZExOdkVnVjVRZVM3aU4rejRHSHo3bGlFdlpCUUJuZ3dFNHJHMHJLdFBEQXQ3MmpTSUdhdktId01NQlNEaWJOYmlocHZVdnI3d3h6R2xkZHRBMndsQjEyUFExOURMQ1dzMDRpVmVjeG5iejVGTEdxb2ViaHJuQlF1ZElrWW9YelBqNzNyL2J3TzB1VUVzMis1c0NESkVJQXFNeHBzS0drY25XYm5kc1pJbTFzNXdjTGJSSUEvaTNhd0xmalBQUXhETDE0NjVRRERWK0R2amp0Q21BUDJuNjQwelRObTRqSGRoK1Y0RnFvbnV0eERqcU1XcHpCMnR5WEFLRVZON05CQ2VwV1VoYm9uU2lMaWZ4Z2NTQy9MUEpWQS84eHJycG9BZlhhZTJnVFFLNmFpeHBvTUI4RTlpQlhPSDlhNExGMUhidllteHgwT0Y1STMzMEFxRkpwd1FZdGxMWVFLUXMwWnk0dThjSGlRdU9xaTlpZkdqZ2NiUll1RURBWXd3NXltNjZVUlBLSDR3akxrSUtMYVVONXFSWE9ybU5yU1JXVmYrYkFnK2NrQUNqTVQ0V3R0NlRaRWlHTXE2NE50cVN3bVlzQUVhUTJDMjAvdkhBeS9rTVFwZ0k1NmVDbFZvcXdIRGxMdmFSWmJlLzMvUHVQVXZ1Z1BmK05XanhyK3lGZEw3NDBUWE5IbHdNQWlPK25rZ2ErS21QZlRMUkFRODVpQXVCcUQyUjcvNXRlMTJYSjk1ZDM4cy85YUxNL052QmJNU3VGQThvQmhWdjU4NTUrN2hWOFB2YWFUWi9tNkxYOUlOaXdtWnQ1cUhUNmwyNlBxKzY0b0xVRHdLTDhaT0J5dFc1RWVtRUNEZFdZZkZnZThGOHB1SjRmcVBuTHo0N0RkRnlUTnlMSVJRMWVxSmhiMzB3SmJyZFRxNkFaL2s2Ti9zejNTRGRVT2dCQVBQOFRiS2pTM1VnM1hya2ZNeFZ3UXcrenV1MXcvMlZjZGU4aXJJUGxjZDBEOWlGbjVoODV1RHY1NmprVEFPTDVYK0VscnZ6WDAzSFZoY2srYi9zaHJlVmFnS1dFbGZ0WEEveEwzb2c0Y1ZRRVhUaVlMdzQ5TE01c3JkTlNPeVhYK1oxZE0waWFwZEZlSElqdWZ3V2RvWThCMWhEZDBianEza1paWTlzUGFTMWRnS1ZFWi9BNWNLNXgxUzA5R0htaUx6TUg5TWpCaDJVWlY5MnM5K1d1ODVONXBrVWdBTVJRVXJDQnl3MDVPeWFFdGgvU2pickJaK3ZSUXhlNHpHS0Q3VFpoT0tSSWxhSkF2Y1pWMXpxOTA4aFZEbUdlaVFGZ2lVb0tObWozZExFdjQ2cTdFMlV4YlQra09TQy9CbGdLUVBIR1ZiZlUyVW9xR2prazd6OVlucWVIZXNVNTRLQ2wwalRldFAxZzFoTUFISWpLaHZLbEZoTzNvcnlLdGg5UzBPT1BBRXNwZ3N3YllFMnZsbmFnRmh4a0lRRHZQMWllUTdlanpkVjhBcDNUZUpobkJ3SUFNeE5zS0Z5a0ZoTjUwUEduQUVzcHladUMxbm9VWUEyd1NPT3FlN213MXozYmdFNDRoOEhRc0R3aDduTnpvUE5CZ0tYVW9CTndvRWE1a3dSQVdFVUZHOXArTUtqdmpJRDlQYjhHV0VNeGNuQ21KR0dHajhOQy9ieVVsejMzZ0U3NDRmMFhwbUlVbUVlazJYZmpxdnVRbi9NRVBuY240QUFBTXl1dHNzRm01ejl1UkZsSWs0ZHhCVmhHYVk1TFdtOTY4QW13REZpc2NkVXRwZi93d1hwbWd4WW1zRWdoV3hYbXdPZnRBRXNwWFFvNFNHSUFnSm1VRm15NEZtQU5FZHdkVjkyM0tJc1JhTmhjcm1yd2ZnWTJWZjJtdzZGN1pyTnNaalhBOGtSdVZUaXV1dU5jNWFDMTBtNStMYkNxSEFDS1ZOek1ocllmbHI0SjhXQmNkV0ZLUWR0K0NCUDBLRXhSVlExQURHblRvV21hazRwUGh3eE9EdW11b3crTEU2cGEvQ0puV2l2ZHJ2dytZSiswL0FXQUdmeXZ3S0d2andPczRWQitpZFRLSnZlL2xKMi9vVHpRcWJUakZySzhISlpvWEhXMVp1YWQ1R0FLSE1MN1NNa2N3Q3graVZRdHZvNWM2WEE5Qng1S2U0NC91TFlmWGkvOEVBREEzdjJ2eERrSWJUK0VMWFhkbzZOeDFZVzVPY29WSmwyQXBaVG9qOUxXSExtOEhCYXF4cjd5aHZKeUtDblE5Y2pSaDBVWklqMWJiU01OdGM1QmgxU2RNWlQzQ2c3aTJRSmZNL1hSRWd3STdYK0ZEbjE5RVdBTmMwbzN3MCtpTEtidGh5Y0xyekRaV3RzUFN4bndDdXhSaFgzbGg5S3lTNmxIeGRWQ3dQblNOZWRPTGNjbVhUL1Q2OG1CaDd2YUxGMnU3WWNTOXovZ3JHcSt2NEE2RlRlejRkU0NiaEpPSXQwTXQvMlExdkltd0ZLS2s0ZVNQU3h3NlRLbElLWnEycHZWdE9sRFVVN3k1aHl3SEZVRkduNlUyc0dkYWJQME5OYnF3cmkzOUFNQXhKZjMzcXFSMjRsSDhjVkhZTDlPZ3cwbHRtTll4RTFDcEd5N3ZGbitLY0JTU2xYcVVES3RKU0NnaXRxYjZUbk5JUXdxR21CeGpwWVUzQjVYM2RzVWRNaUJoOThDTENtTWhiWmxwaDd1WC9ZbjB0Nm84N3cvNWdUdTJXbXdJVXlMbmsyMC9UQ1dzOXJOQmN5MkszV3ovT0JLYnA5a1lDdUVWbnpXWXFRMmdTekdMNnBwWUhIdUx2bDZNNjY2NTJmbU85UTQ5MmxUUzJ2THZDUkw2SURoSGdZSTdYdXdvZVROeER3L29EclJBZzIxQjNiMktaZS9sZGcrcVpGeERMR2xyTVhDVDVFV0Q4enBKR2Y1RmowVWx0MVVWQlhHZXI3a3ovMW54K3Z2K1E3M3pYZWdWb1hPSklYejFEYWpyN2JYd3lYT3ptd29OY09oeHZrQk53S3M0VzhDRFRzcnR2V1VqR01vd3UxU1QxTUZ3UkxLOFVEYnBNVjdiMGJINHR3ZVY5MnRwUitFaXl4OXZrUGJEKzVCNnJMdjcvaEkrMlhtanV5UFlOVXlPTTk3OXRPWlgvK28xRFk1YlQ5OHErZ0JNcFg0Zmd1d2p1L1NzUTJ3akdJVmZ2eGtPdTFIR2taVTY4Tk5lcUIvSEdBZGk1S3FFOXQrU0ovWGE0Vzk3cnNCMWtEOW5ncHFuZXVWREg4cWRsc2IwTTNrNzhudjM1VnRQNlRxcjJjRkxYOWJqMHR0SjcyR0J6TDhvWGdxR3lqVzM4R0d0TUhkOWtPcHIrTmEydy9QS3lpTGZ4cXB4TGZ0aCtNQ042L0N5Tmt5SlI4L3ZTRDM0N2pXRFo2MkgrNExOaHhHQ3JnWFZvVjJvcVVGZTVTQ3V2ZHROc0tpcEt6bVIwNzU3dEo4aDZacG5yZjlrSkw1M3NtaWh1OCsreXdzUXFSazBkcjJZeUs5SHM4SWUvYS9IMzU5eWVXVHYrWWJvbElkUmNxOGEvc2haVUxjRExDVUl1VTVEVVZ2dXRxa2dlS1UxQTVSV3d1bWxnSU1QK2ZlN0xkY3cyQVIzcWYycy9sekw5QXdzU1hNZDhqUGJMQU9IUitXSVZJeVZHMkp2NUZlaitlRVBUdmJSdWw3K1dUYkR5WFBRRWh0b0Vyc3hUcEU2bzJmTS9KRjdYZFQ3SnlHN0VHSVZRQnJTeHNDaFZRM2ZJblVMcEJpcFUydjExb0J3YUtrb0dLcVpuL250TThyVnlOK1QreHIrK0ZKUlhNVG4xZmNTb2xwcWNnRldOT1BsUTNKcTVJUFh0c1BwVjBFVWl1Sk1Ca1YrZVpSRzVRZDFEQlFXNDlQS05adjBSZHVXQ2RiU0ZVN3Y1ekpZRzd6VUZPQkJsaVdtd0lOaDVjU0ZFKy9pMHU0NzdpQzUxN1dKVkZtQWV5RExJUHp2SC8vQ1RaVThPRFdwZmtOQWRheGxraURyWE1aYVMxWktnZFJ5VUJ0VlExUXFOeG5PYklqN3kyeWovbm5WZjU1a0llNnR1ZjhwRFllcjFYRUFBVW1sbFV0M1hma29NT05WSzIvOU9OQnZhSnRUcmI5SUhrSENPdW5DeFoyVkhpVVA4MXZlQnY5b1RUZm1JV1E1MTJVM3Zybm9QTERUL0Y5OVVSNW9YaFBvd2FPSTdVTVhMSkk5eC9BTEY1dG1sQVd1RkkzSlphWnl4Sk1mdTcrWHExZldac2xpT3ArMHpSaFpuNENuSFZlRzZWYU5nTytCbGpEaFFJKzZJYytYdEcxL1pBZTRMb0tYc3J0QUdzQWRwRGFHd1E5ZnI4RVdBTUE2NG5jV3ZmUEFHdmdBcWR0bG5MeUE3QWZFbmdXb08ySFJ6Vzh5bHBlQitzN045aVFGVDI3b1ltZGtYTWp3QnIrVnNPTWdVUEs3YWRlVlBCU1RtU0pRVFhDQlE1VEc1d0F5d0JnRGRGYjY2WXE5Z0RMNEJKbmdnN3ZIU2VZM0QySGRCRnFDU29KamkzTWhjR0dXb2J1QmV6cmVUZFNleWVCaHQzVTFINHEwdndRWURjQkE0ZG13UUNVSjFTQzFBOE05aTNFdU9wU1J1dmRxS3R0KytGK2dHVUFuT2RoSlVlbGx0ZkJtaTZyYkdncTJSem9JbVcraktzdVRQQ2prbUhHaDFaTCt5bERXNEc5TVFzR29EdzVRZXBqMUlWTG1pcEhmZ2FPR3J3U2JBQ0FDVjBhYktob2MrQnhIbFJGVnNzdzQwT3E2UUhIMEZZQUFINDBycnJRRzdHZThjcVJnMWZtT0ZDeUlkTGFWZVhzVGRnZ081TndmbWR3VldWREU3eDhkaE52Y20vOXhjdVZIalVNTS83dUVDMi9Lc3VrTWhRYUFJQ0xoRzJCazU3eEFxeUJOYVU1RGdHUGxRMWIxaFV0R2JlSzF1Y0JoV3JGWHZwdzVZRHJqOVpxdjBwWEJodWlsODl1NkZQdXNiOVliVCs4cktuSGFSNDZOcXZLMms4TmhrSURBSENSM0FMblM5UUQxUGFEZTlteW1PTkVxZDRGVzdjaDBmc1JMYWowT3NBYWRoRnQvZHI3em1DZHlvYnc1Yk1icXFYSC9zWnlSUEZGWWN1KzBJRUNEVlcxbnhwWG5Xb2ZBQUF1TmE2Nlc0R1AwRTBWN09Vd3g0bFNlZTh1UnJUemZEUEFHbllSYmYwK3h6TllLOWlRVlpPQnNNUmhZdmtHL1BjQVM1bks3TzI5Y3FDaG12WlQyaWNCQUxDQnlQMzJQd1ZZQThDc2NvdHNKcFM3dTRUUzlrUGtnUCtGSXE0NzR2bXQwZHJCaGh6RkRWcyt1NmtsQlJ4eTY2aWFic0R2enYwRlVkdWNpNlpwM211ZkJBREF1bksvL1pPb0I2enRoMmd0VGdEMnJab1cyVnlxMUd4OFZRUUx0VWxsUS9UeTJmdnREa2NBQUNBQVNVUkJWSTFWMW52L01qVzFqbnFhKzhiT3ByWTVGODFmbitXaWh3d0JBREMvY2RWRm5uLzNjT256K1FwU3kweElPRGh0NUJhaDFGWktwYmVBWWtzYkJSdXltZ1k2WGF0OW9GaGxGUnkvNVl5cTJiVDk4S1NtT1JmTmdXWmRBQUJRamQ4Q3Y1REZ6dWNEWmhFeFVLYU4zQUtVMWpJcjZIckRWbWZXWnVOZ1EyM3RsUEpBc1ZrejVlZFNXYUFodGYxNVB1Y2Z6QmtDYitiOG16T0kzR3NYQUlEZzVyNG4zMVRiRDZIWEJ4VHRkY1RGdC8xd1A4QXlhaEl4cUY1YXQ0Mkk2elhqWkNiYlZEWlUxMDRwOWVLdkxlQlFXWXVvWWU2MlB6blFVRnVHd0RCM1pRZ0FBRlc2RWZoRi9ScGdEVnhPMnhlS05LNjZxTE5oL2dpd2hwcUVQTStsZEdZSnZMOXF0dE5NdGdvMlpIY0xlNjFYNldxWjVKOC8yTmNDTEdVS0orT3FtL1ZtdE1LQjJ0L05mUndCQUtqVHVPcStSZTY3djZEWmZLV3E1VmtWd3FpOVJmaWNja2VYaUc1R3IyTEppYnRkZ0tYOFIrRHpXcDJ0Z3cxNVNHOXRnNTBlbHg1d3lPc1ArY0hleHR4RDZIS2dvYnBlcitZMEFBQXdwWEhWUmQ3d3VLYXRDTEF3TjJ0Sm9PVlNmK1I5cTZqTUVHR255b2JvTjVqYktqYmdrSWNabDliSDdVSUgyaUN2Y2FoY1RVUGRBUUNJSTNLMXU3WWlBUWtDVVlHandDK2grQVJhMWhKeTM2cXl1YkhzWUtkZ1ExTnZ4blJ4WDlBVkRqT2V2UTlzcFYrTVIwckZBQURZaDF6dC9pWHF3VzM3d1gxd1BJSkFsTzVsOFBVL3JtMG02WUZFSEJMOXQ3Ui9sZmNCSTZ6bGVnSDdhYUhQWjIxMkRqWmtUeXM4TnNVRUhOcCt1RlZacWRLTjNBZDJOcFVHR3RLOGl5Y0IxZ0VBUUtYR1ZYY3I4Q3U3Rjd6ZHhLSUUzUUFWa0dJajQ2b3JZVFpDbHplakkzOC9SL2U2Z0RWK2F2dmhvRU9QODc1cENSMUNTamlmMVpnazJEQ3V1dlRtR2lvOFB1RUREdm5tK2M4QVM1bktYWUdHYWN3OTd3SUFnTVg2SmZBTHI3Rk5hbkh5ME82SXN3VUZHNmpabittekoraXd1VUtDU3NuREhGaWF0ZUltdFhIUGUybEZ0SEl2Nkh4V1lhcktoblRpUXBUdjdFSDBnRU5OTjg5UGN5bjJiUEpOYjNVTWhBWUFZQzdqcWd1ZE1UajNKZ3ovT3Zadjg0YlV0YUNIUmJzWnRoRTV3UHFqYXpub01PYlBvNlRFT3IzSTUvaDRYN054VXR1bS9Qdkh5dHE0TTdHZnB2eDFhWU96MGl6eEZIQzRGVzBnZG1YSCtpaFh5TXdtQnhxaTN2VHVJdktnUGdEZzhOSUQ2UXZuNFMrU05LWVIvRm53UlFGOTFvdVhOekVmTlUyVFdybmVLK0gxekYxVlA1TS8ycjdHeGhOYk9kbEh4WDhLc0xiOThPczhMMkZTai9QKzF1bnYvSmlyZTlMUDUwby9EN3Q0bGE4ZkpibjV3M2ZBU2RNMGIvTTVQbDRud1RkWHdxU2YrL243L0daaHgrQkhyMkl0cDM2VEJodXluNXVtK2IzQ0k1ZjZmWDZPVXNGUldVYitNUGRzZ2R3dnRNWkF3K3pWSVFBQUpVc2I1QUlPazBrREdKOUZYRmg2ZnBxenpXamVlTmZDQ1E3cldzckVEajViNXBEdTVaL3ZHK29GQjZudTdtTWZaRngxTHl0SXpyaVdyOHZmcjgxTERFU204eGhnR1lzeVdSdWxVK09xUzhOSjNsZDZFTHNJUTYwcXk4Zy9tVHVBazl0aVJld1h1cXYzYzFlSEFBREFxWEhWUFE5OE1LN3RxN1hFQlFRYUlJWjlaV1dYMUVxcGRwK1dmZ0Fna3NtRERjMWZONW1QY3FsT2pRNGFjS2d0STMvdUljYTVYMnNSQTJ3MmRKSS9kd0FBY0VnM0FoLzlQd0tzZ1RocVRaSmtCdEZuMVRDWkk0ZXlhTTdmQWV3bDJOQWNZQk41WnQwaDJoalZscEUvZDdsNm1wWmZZTCs5dFZUK2VRTUFvQkM1NS9mSHFLdHQrK0hEREg4ajFLdy9MaFM1RW9jeTFKcGtTelozeTIrbTVmd2R4dDZDRFZua3JKWmRYWnN6NEpBM3lxdkp5RDlBb09GT3JkUHk5UmdHQUNDU2NkVkYzbXkvbCtjcHNIRGpxanRlK2pGZ1p5Rm1lZ0pFc3RkZ1E4NXErYm5pTTU0Q0R1TysvMGlGRytXSENFTFYyc092NW9BZUFBRGxlaEI0NWVZcElDT2RuUWxZTFViTis1bzFlN3IwQTNBbys2NXNPQjBZWFhXUHJIMEdISExXVFUwYjVYZHpFR28yY3dTRUR1VHAzTWNTQUFEV01hNjYxSzdvUzlTRDFmYURmdXZMWnQ0ZFU3R2hXYm04cjBsaHhsWDMxams3akwwSEc1cC9lbVJWblRtd3h3M3Rtckp1MHViNHJNTzFEekZiWXlaSHZqZ0JBSWhzWEhXM0FpL3ZXWUExY0NBNUdBWTc4MXkrR0srV2ZnQUs0M3dkMEN6QmhtWWhBMnhUd0dISy9wK1ZaZVRQdmptZWg3OWRtL052enVURWtCc0FBQXJ4UzlSbFZweVl4T1dxN3J6QVFVUnVHOGNFeGxYMzBuRXNoL04xV0xNRkc1cmxETEw5bW1jczdLU3lRTU13OStaNDJ3K3BMUGJlbkg5ekxrc0kzQUVBVUlkeDFVVnVWM1F0UHpld0lCSzNtSnBLbWNXUUxWOEc1K25BWmcwMlpFc1lhUHVwN1lmNzIvN0xsV1hZZkJsWDNjN0JseTM4Zm9DL3VYY0xDZGdCQUZDUjRQZXdWVDQzY0NGVkRlekxFdmE2RmsyMmZCbWNwOE9iUGRpUUI5cmVEWGdzcHZaSDJ3OGJaMHkwL2ZDNW90WS9KNGZvMDFyeFFHZzNMd0FBbE9xM3FPdk96MkFzZ0tvRzlpWHZkYjEzZ0t1blpWWnN6azhBaDZoc2FQS1E0Q1dVdGJ4cCsySHRPUVZ0UDZRSjk5MStselNmUTdUN3ljZXdSZy95elFzQUFCUm5YSFhQQTYrNWEvc2g4akJycHJHRXBFY09hRngxMnJKVkxyZk0rckwwNHhEVWlaWm1NUndrMk5EOFU5YnlNZGp4MklmSDYyVEt0UDJRZXBrK0xQSVZudU1RcGRKNU9IYzF4L0NNSTErWUFBQlU0SGJnbC9CbmdEV3dQME5PZW9SOTA1R2djb2ZvNE1IVnpEZU40MkRCaHVhdk4wS2FhM0FTN0pqc1EzZlpISWJjYnVsWjBhL3czdzUxY2YxNm9MKzdUN01QMXdZQWdIMFlWOTF4NUlTelRhclNLY3VCNWdpeVFMa2pnVll1OVlzY1BGOGlsV3VCSERUWTBDd3I4blR0dkZrQ2JUK2ttNTQzaDFuU1h0dzlSTHVmWFFaeVIrYW1HQUNBbXVTRXM2Z2VlN1BWSi9pQWNpcVVPeE1ZUmw2eEhEei9aZW5ISVloWEt0ZGlPWGl3b1ZuWXhmOXN3Q0czL2ZsMDJCVk42c0VCUCtCL0hPanY3bzJiWWdBQUtoVTI2L2U4QkRHS3BxVU5CNUU3RkJnWVhiRngxYjFlU0h2NHlJYmNwcDlBUWdRYm1nVUdISEtnb2FhMlA3K1lLekFwTjhVQUFGUXBQemVFYmFlYjI5eFN2aHVIcUxxSFUzbGd0SUJEeFhLMTNyRDA0M0FnZzI0Z01ZVUpObVJMMm1DdEtkQndsQ082QjlIMlEyMVJ6SU8wb2dJQWdMa0ViNmRiVTV2YlJVckpqSjZwaUNBSEhMUlVxbGplOEJad21KZEFRMkNoZ2czNVpzQlFqN0pFR0dCYzA3d0d2ZVlBQUZpS3NQMnUyMzQ0RHJBTU5uZWlIUzNSNUQwVFE2TXJsamUrZjF2NmNaakprVUJEYk5FcUc1cTgwZXBMdUF3blB1Q1QwbXNPQUlERk9HUjE5QnB1dHYzZ1dhY3NyNEpYekxCZ3FYMmNRRmpkeGxYM1hBTDEzdDBOa1BETUZjSUZHNXAvZW5nK0RiQVVMdUZHYmxJQ053QUFMRTd3emJkUEFkYkFlbTVJM0tJRStUdlBISWRLcFFUcWZJN0R6aVVxMUVsdWo2Y1RTQUZDQmh1YXZ6NmdiL1cxaTB0RWZsb0NOd0FBTEZqWTFoTnRQN3piOU4vSnlYUE00MmZ6R1NoTm51T3dwSm1saTVQM2VINWUrbkdZeUZON1ptVUpHMnhvL3VsckorQVFqRUREdEJ4UEFBQ1dMTGVlaU9waDJ3ODJPZUo1bFlNTUd3ZURJSUlVSU10N0FkcnVWQ3A5UCtWemJGOXpPMGY1ZS81dGlZdGZzdERCaHVhZmdJT3A3bkdJdmsvcmRrMHZCZ0FBdGhUNXZ2anJGditPNTZiOWVKbzNuN1JNb2dwbjJ1N1lHOWhlNklCTjJ0Y1VkTmpJYVpEQmJJWkNoUTgyTlA5TWRSZHdPTHk3eWxNbmxXNlVqeXQ2UFFBQXNKVjhYL3d4NnRGcisyR2o2b3N6V2NzUElyK3VRcnpQRzA4eVhLbFcrZzQ4ZlorYjZiQ1JwNlgwOFQ4VGROQmU2WHhQQlJucThGTXByeUlGSE5wK1NCdmQxd0lzWjRtSytRSXZ4SkViNWNVU3NKdUg3eXNBS015NDZ1NjMvVEFHWGZXdlRkTzgzdlJmeXZNYjdwLzk3OXArdU5VMHpaUDgzOStiZEpYMVNKdXRUd3BLZG5PUHoyVHlUSWZUNzRyVUtxeHpkUC9qdCtBdCtDNlUyNzk5YjZlZEE5bS94bHpwTElvOWoxeXNtR0JEa3dlc0NEZ2NoSTN4YVgwUnFaMVhlc2hyK3pERlVkWDJsUTEybkExbS9DdUwwZ1lHUC9yaWlCeE0rdjUvc2REWHZrUTJIcmVVc2hvREJ4d21rYXM0em0wRDFQWkRlazVJRzQwUHkzdGxPMG5YcDVjRlAzZStXK0E1WTgveWQ4V2QwNytTTjZaZkxuQlA3Q1FIZTEvWDFtMWpYSFd2VHdQWmJUL2N5Zis1NW1lNGovbTczdk42eGRweExPOCtydmFiejJDRzNNWXFyTFlmUHBUMFpXd2c5R0cwL2ZBNVFrWkk3ZWUvN1lkMFEzenowT3Z3T2Z0TGtPdWxiSlcvemtXVVpJa0hidTRQUjlKTVdIZjNVY0ViNVptbDFHdGkydzlwMC9seGdLV2NPdmh6VWRzUDkzTTFST2tWRVNtd2tNN3YyNXJheXRxbkNPdEdyZTJnODNmQ2syRGZsYnY2bUw4YkZwL3cydmJEOVh4K0h4WDZuVC9rUUd4MVFTSXVWMlN3b1hFaG44dEpxaWFKdnNpU2dnMDJRQTh2MzVETmJtbWJlNDV6TEFjNkg4Zm0wdnhYemxpYS9kcnFzeEhMb2I0aitiZTVQaGV1aWRNNDRPZm1jMG1iSlBrNDNjby85L00xWis2RW01UGMwaks5QnorNEQrWVFsbnp2azlzdjNjay9VWUtUcDdOclB1VHZoMi91VDdkM0p2aDgrbXh4aUhNODVFck9SWDdYYzdGaWd3Mk5nTVBlbGJJeFhsQ3dvZHFNQ2dBQUFBQmcyZjVYOHF1WEpiNC9qdTNrN2dvMEFBQUFBQUMxS2pyWTBOZ1Uzd3ZIZEhKUDk5RUhHQUFBQUFBZ2l1S0REWTNOOGFuZHFPdmxITng3ZzQwQUFBQUFnTnBWRVd4b0JCeW1vdFhQdE5LQTdVYzF2U0FBQUFBQWdQTlVFMnhvQkJ4MnBkWFB4TVpWZDcycUZ3UUFBQUFBY0lHcWdnMk5nTU8yWG1uMU15M3ZRd0FBQUFCZ1Nhb0xOalEyZWplVlpncThMR3ZKNFpsN0FRQUFBQUFzU3BYQmhrYkFZVjJEbVFLVE0vY0NBQUFBQUZpY2FvTU5qWUREVmRMdzRqdXhsMWdjY3k4QUFBQUFnRVdxT3RqUUNEaGN5UERpeVIyWmV3RUFBQUFBTEZYMXdZWkd3T0UvSEkvSnBYWlVUeXA3VFFBQUFBQUFhMXRFc0tHeHdmNDN4MkY2MmxFQkFBQUFBRXUzbUdCRFk2TTl1UkZnRFZYeG5nSUFBQUFBV0Zpd29WbjI1dkRkY2RWOUM3Q09hZ2cwQUFBQUFBRDhaWEhCaG1hWm04UlB4MVgzT2NBNmFxSktCQUFBQUFBZ1cyU3dvZmtuNEhBU1lDbjdkalN1dXJkMXY4VFpxUklCQUFBQUFEaGpzY0dHNXErQXcvWEtBdzdEdU9xZUJGaEhUVlNKQUFBQUFBRDhZTkhCaHFidWdNUEp1T3J1QkZoSFRWU0pBQUFBQUFDY1kvSEJodWFmZ01NUVlDbVR5YStKNmFnU0FRQUFBQUM0Z0dCRGxxc0FxZ2c0TEhBQTlyNnBFZ0VBQUFBQXVJUmd3eGw1US9rb3pJSzJJTkF3UFZVaUFBQUFBQUNYRTJ6NFFXNlZVMnJBNFVhQU5WUkY4QVlBQUFBQTRHcUNEZWZJQVllbjRSWjJ1YnZqcXZzV2VZR2xFV2dBQUFBQUFGaVBZTU1GeGxYM3RxQ0F3OU54MVgwT3NJNmFxQklCQUFBQUFGaVRZTU1sY3NEaGJ0Z0YvdVVvcjVQcHFCSUJBQUFBQU5pQVlNTVZjc1ZBMUN6M2o3bmxFOU5SSlFJQUFBQUFzQ0hCaGpYa0xQZG9BWWN2NDZxN0gyQWROWG1sU2dRQUFBQUFZSE9DRFd0S0FZZEFBNE5QeGxWM0s4QTZhcExhVWIxYytrRUFBQUFBQU5pR1lNT0dJZ1FjeGxWMy9kQnJxTXlnSFJVQUFBQUF3UFlFRzdhUUF3NG5CL3piVENjRkd1NDRuZ0FBQUFBQTJ4TnMyRkt1THZneTg1K05PcWk2VkNjQ0RRQUFBQUFBdXhOczJFR2VtekRNOU9kdTUwSFZUT05FT3lvQUFBQUFnR2tJTnV3b1o4WWY3Zm5QUEJoWDNmSGVYOHlDQ0RRQUFBQUFBRXhIc0dFQ2ViancwejM5K3FmanF2c3c2d3VxbkxrWEFBQUFBQURURW15WXlManEzalpOYzNmaVgzdVVmeS9UblNlQkJnQUFBQUNBaVFrMlRHaGNkWjhuSE9JODVJb0pKaUxRQUFBQUFBQ3dINElORTB0RG5DZlkxRDdKc3lDWWlFQURBQUFBQU1EK0NEYnN5UzZiMjRZWFQwdWdBUUFBQUFCZ3Z3UWI5aWh2Y24vWjVDL1lHSitXNHdrQUFBQUFzSCtDRFhzMnJycGJUZE84WCtldjJCaWZsdU1KQUFBQUFEQVB3WVlaakt2dVVkTTB2MXp4bDZZYUxNMWZNeThFR2dBQUFBQUFaaUxZTUpOeDFiMXVtdWJ1QlgvdGJob3NYZDJMUG96QnpBc0FBQUFBZ0hrSk5zeG9YSFdmejZsZ2VKci9lM1ozTks2Nk80NGpBQUFBQU1DOGZuSzg1NVVyR05xMkg4YThPZjUyU2E5L2ozNGVWOTI3YWw4ZEFBQUFBRUJnN1RpT3pnOVZhZnNodFZGS1FaeUhUZE04R0ZmZEIyZVlRMnI3SVZYY3BQZmh0YVpwdmpSTjgwaEZFd0FBQUFBQUFBQUFBQUQ4UXljbHF2RkRBamtjWEM2MFNlL0o3c3hhYmpaTjg2bnRoeWFQYmRGTkRRQUFBQUFBQUFBQUFJREZNN21CNHJYOThLUnBtamNYdkE2VEd6aUl0aDlTMGNMak5mLzJVZE0wei9NWWVRQUFBQUFBQUFBQUFBQllITVVORkd2TjVISEZEY3pxaW1LYnE2UnhEay9HVmZmWldRTUFBQUFBQUFBQUFBQmdTWDV5dGlsSjJ3L1htNlpKeFFxZEUwY2tiVC9jYVpybTA0NUxTdS9yVDIwL25PUkpEbStkWkFBQUFBQUFBQUFBQUFDV3dPUUdpckJEVVlQSkRleFZmbThlTjAxemJVOS81MmhjZFUrY1JRQUFBQUFBQUFBQUFBQnFwcmlCMENhWTFLQzRnYjFwKytIempGTkVocVpwN28rcjdwc3pDZ0FBQUFBQUFBQUFBRUJ0Zm5KR2lhanRoenU1cUdGZjNmQmhhMjAvdkcyYTV2SE1SekFWVVh4dCsrRWtGemw4ZGdZQkFBQUFBQUFBQUFBQXFJWGlCa0pSMUVCa2JUODhhWnJtellHWG1ENGJuOW8rRFhKb25vNnI3bTNvZ3dZQUFBQUFBQUFBQUFBQWEyakhjWFNjT0xpMkg2N25vb1p1NHJVOEdGZmRCMmVZWFJSUWRITTBycm9uQWRZQkFBQUFBQUFBQUFBQUFGdFIzTUJCN2JHbzRaVGlCclkydy90emFtbWN3LzF4MVgxejFnRUFBQUFBQUFBQUFBQW95VS9PRm9kUVlOSTRDOVAydzl1bWFSNFg5cXJUNStscjJ3OG51Y2poYzRBMUFRQUFBQUFBQUFBQUFNQ1ZGRGN3SzBVTlJOZjJ3NU9tYWQ0VWZxS3VOVTN6S1JjNVBCOVgzZHNBYXdJQUFBQUFBQUFBQUFDQUMvM1BvV0V1dVJQK1Y0VU5STlQydzUyMkg3NVZVTmh3VmlweWVOUDJ3OWoydzhzNHl3SUFBQUFBQUFBQUFBQ0FmMnZIY1hSSTJLdGMxUEQ0UUVmNXdianFQampEWENSUEUvbmNOTTNOaFJ5a28zSFZQUW13RGdBQUFBQUFBQUFBQUFENG0rSUc5cWJ0aHljQnV1QXJidUJDYlQrazk4YTloUjZob1dtYSsrT3EreFpnTFFBQUFBQUFBQUFBQUFEVmEvdmhWdE0wdDg1NW5hbFo5NTBmL3J1TGNxQ1B4MVYzWE9PeFV0ekE1SUlVTlp4UzNNQi90UDN3dW1tYVo0N01keWU1eU9GemdMVUFBQUFBQUFBQUFBQUFoTmYydzUxY2pIRDZFN0haZHNvUi9Yem01MFAwb2dqRkRVd21mMGhUSWNHMVFFZFZjUU4vQzFaNEUwMjZnRDN5ZVFFQUFBQUFBQUFBQUFENE96YzY1WjQrYXBybVpxV0haR2lhNW0zVE5POGlGRDRvYm1CblFZc2FUaWx1SVBwN05LS240NnA3dS9TREFBQUFBQUFBQUFBQUFDeER6alY5M2pUTlk2ZjhlOFBzZDAzVHZKeTc0RUZ4QTF0cisrRjZUaGp2QWg5RnhRMExWc2g3TkxLamNkVTlXZnBCQUFBQUFBQUFBQUFBQU9yUzlzT3RQTEhnbmxPN2xxTTVpaDBVTjdDVnRoL2VGbEtacExoaG9RcDZqNVpBa1FNQUFBQUFBQUFBQUFCUXRMWWY3dWVDaHB2TzVFNkdwbW1lakt2dTg5Uy9XSEVERzJuNzRYWFROTThLT21xS0d4YW03WWVVaFA5bTZjZGhUOUxGNlA2NDZyNVYrZW9BQUFBQUFBQUFBQUNBcXVRSkRlK2FwdW4yL0xxK05FM3pPZitrM09YamZVODUrRkhiRDNlYXBrbXZOLzN6ZnY3bnRUMy8yWTlOMHp5YUtyZFVjUU5yS1RoaFhISERRdVF2NUE4emZBbnpWNUhEbzdrdnVnQUFBQUFBQUFBQUFBRHJ5TG5QcnlmT0svMlNDeVhlN21OcXdSemFmbmlVY2tEeno1VEg1aVEzME43cHVDaHU0RklWSkl3cmJxaGMydy9YYzVXYkVVSHptK1JDQkFBQUFBQUFBQUFBQURDRmlSdTZIelZOODdMMlp0QnRQNlFwRCttNFBaN2cxKzJVVzZxNGdYUGxoUEVQTTR4ZzJUZkZEUlZyK3lGVnZ6MWMrbkVJUUpFREFBQUFBQUFBQUFBQWNEQVROWFQvMkRUTjg2WG5RK1ppaDdjN05oNVB1YVczeGxYM2JhTy9yYmlCSDFXV01LNjRvVUp0UDd4c211YkYwbzlEVUUvSFZmZDI2UWNCQUFBQUFBQUFBQUFBbU1lT3VjOURtbHF3OUlLR2krUkNoM2M3RkkzOE5xNjY1MnYvUGNVTm5LbzBZVnh4UTBYYWZualVOTTN2U3o4T2hWRGtBQUFBQUFBQUFBQUFBT3hOMncrM21xYjV2R1hpL1VaSjkwdlg5c1AxcG1sZU4wM3plSXREc2ZZVUI4VU4xSjR3cnJpaEFoT05DdUl3WFB3QkFBQUFBQUFBQUFDQVNiWDk4S1JwbWpkYi9FN05tM2ZVOXNQYkxZc2Nyc3pyVnR5d1lBdEpHRmZjVUxCYzVaWE9YN2YwWTFHQm8zSFZQVm42UVFBQUFBQUFBQUFBQUFCMjAvYkR5NlpwWG16NFM5NlBxKzZSUXorTkhYSjhMeTB1VWR5d1FBdExHRmZjVUtnZHFycUlUWkVEQUFBQUFBQUFBQUFBc0pVdEN4dnVqcXZ1c3lNK3ZTMG5hRnhZNEtDNFlXRVdtREN1dUtFd080d0pvaXlLSEFBQUFBQUFBQUFBQUlDMWJaRmorbVZjZGJjaUhlSGNwUDdPQkwvcTg3anF2azN3ZTNiVzlrTTZ4cWw0NU5vR3YrdmNIRy9GRFF1eDRJUnh4UTJGYVB2aFRwNG9zc2tYRytVYm1xYTVIK1VDQ3dBQUFBQUFBQUFBQU1TVDgwdy9iYkN3aitPcXU3K1BGN0xsOUlpNW5EUk44NjVwbXJkejUxQzMvWERjTk0zTkRmNlZHei9tanlwdXFKeUVjY1VOMGVVS3RIU091cVVmaTRWVDVBQUFBQUFBQUFBQUFBQ2NhOFBFK2IwVk5qUi9yU1hsdmQ0cjZFd2ROVTN6Zkk0Y3pRM1AwekN1dW45TnNmamZmcGJGb2FXRThiWWZQdWNLSlozd0NhbnRoMVFaOWxWaEEvazk4RFY5YitXQ0Z3QUFBQUFBQUFBQUFJQ1ViL3A2ZzRUNUwvc3NiQ2pVNHhsek5PL2s2UkhyNk5wK2VITDJmNmU0b1VKdFA3eVZNRTVrYVJ4UDJ3OXBiTXhESjRvZktISUFBQUFBQUFBQUFBQUF2bXY3NFZiVE5NODJPQm9LR3k1Mm1xUDVaTnRmY0pVOEhlTFJCdi9LNjdQL2grS0dpcVEzV2s0WWY3ejBZMEZNYlQ4OHl1L1JGMDRSVjFEa0FBQUFBQUFBQUFBQUFMemM0QWo4TXE2NjQ4VWZzYXU5MlhPQnc0ZW1hWDViODM5K0xUVk5QLzAvMm5FYzk3VXVadEwyUXhyZmtkNEUxeHp6LzNpUVB5QWNrUGNvRXhoU05XV3U2QU1BQUFBQUFBQUFBQUFXSURmVlhzY3dycm83Y3h5UnRoOVNUdXk5Q283KzdYMFdnMnh3N2s3R1ZmZTlFYmJKRFFWTDNjeFRWL09tYVQ1SkdpY2k3MUVtWkpJREFBQUFBQUFBQUFBQUxFamJEODgzZUxXYlRIaGdubVAyYXMzL1hacmVjRC85aDUvMnV4NzJwZTJIdDAzVFBIYUFpY3A3bEQwNUxYSXd5UUVBQUFBQUFBQUFBQURxOW1qTlYvZGxYSFh2U2pvUzQ2cHJ0L24zMm42NDFUVE42NlpwSGs2d2pKVG4rMlNDMzNPdWNkVzliUHZoeFpyLzg3U09EeVkzRktidGgwZDVSSWVrY1VKcSsrR0o5eWd6TU1rQkFBQUFBQUFBQUFBQTZuWnZ6VmYzZGludmczSFZIWStyTGhWOTNKN2k5NTFPVE5pajkydis2dTk1eDRvYkNwR3FiTnArU0IzS2YxLzZzU0NtdGgvdTVQZm9HNmVJR1NseUFBQUFBQUFBQUFBQWdNcHNtSFQvWVdublB4VTVORTN6VzRDbFhHWHR3cE4wem44NjJESlpXOXNQSHphb1BJSlo1WVR5RHpuSkhBN2x0TWhoYUpybS9yanF2amtUQUFBQUFBQUFBQUFBVUt5MWl4dkdWYmU0NG9hc2hGekpUYzdOTFpNYkFtdjc0WG5iRDZQQ0JxSnEreUZWVTMxVjJFQWdKamtBQUFBQUFBQUFBQUJBK2RZdGJ2am9YTWVWbTFWL1dYT0J0MHh1Q0tqdGh6dTVTdVhhMG84Rk1hWENtNlpwZm5WNkNPeTB5T0g5dU9vZU9WRUFBQUFBQUFBQUFBQlFwYVZPYldnMm1XNXhZTWROMDl4YzUvVW9iZ2drZHhuL29BcytVYlg5a0w0RS8zQ0NLTWpEUEFIbmFGeDFUNXc0QUFBQUFBQUFBQUFBS01JOXArbGliVCs4bmVJWWphdHVqdUtRRCt1dVZYRkRFUGtOOW5qcHg0R1kybjY0MVRUTlo5TkVLTmpqdGg4ZUszSUFBQUFBQUFBQUFBQ0FxaHlYK0dMYWZ0aWtxR0JmaFI0ZjkvUjd0NmE0NGNEYWZraEp0bThXZlJBSXl6UVJLcVRJQVFBQUFBQUFBQUFBQU9wUlpIRkRrTWtVcndPczRWLytGMmd0aTVJNjRiZjk4RTFoQTFIbGFTSmZGVFpRcVZUa01PWUNNd0FBQUFBQUFBQUFBSUFsU1UyaTN3Vjd2ZmNVTnh4QUhpUHlaOU0wMXhiMzRna3ZKWHVucE8rVS9PMXNzUUJ2RkRrQUFBQUFBQUFBQUFBQUM1SUtHeUxtVFg3OEtjQWlGcVB0aCtkTjAveTY5T05BVEcwLzNHbWE1b09pR3hZcUZUbWs4VXIzeDFYMzJac0FBQUJZbWpSbHRHbWFXMnUrN090TjA5d0pkSWpTZE5Uem51VStqNnZ1MndIV0F3QWh0ZjF3ZjROMWJYSnZNSWZQK1pwLzFqZjd1YkFmRjN4ZnpQa2NjTkU5ZnVNK0h3RFdkOGt6d0NiUEJsTzU3UHFlSEkrcjd0anBCV0JMOTNQK0sxYzdpWjRucWJoaEJwTEdpYXp0aCt2NS9kazVVU3hjK283KzFQWkQrSXMzckdQRDVMU2FDR3BYeVB0NWZ2a1o1dnFCWDM5VUF1ajh4NFpKWWt1eXVPdHlmc2IrTWRubngrL1U4LzQzNlRwM2M0WWxMazdiRDl1KzVJLzVueC9PQkY0RldBdXo0UHRJdUlydnN4MmM4OTJ5enZVL3VSZjJSUlZzaDJ2OWwvUlpPT2ZITXgvRk9iT1BjL3BzZXZyUGFyOTNkdmpzbnpyOURtak9KTCtjRmxHNVRoNll2VW00a1B1VXl1Vjk1dXRubmlkTy83bVlmSjRKcnZHbnpsN3IvNzdHNXgveDVDc3MvRnJzdTdaZ0Y4Um9scUxtNzdaQmJ1dGtmbXVhNXVVQnYrZldqcW0zNHpqdWR5a0xKbWs4aEFmanFsT05kWUcySDk0MlRmTTQ1T0xnOElaYzVPQ2hoV0xrNFBwbkJaVi9lenF1dXJkQjFzS0d2Si8vWSsvdjU3WWZYalpOODJLZmY2TkNhWFA4a1Uzd1pjbWIrdThrb20vc3QzSFZQWi83ai82UWZIajJQLys0d1MzWmtGMmQ1SHVYRDZmLzlEeDVHRGtSNEk4bHZuYlkwcy9qcW50WDhzSDdvZEQwN0g4K200eXhxSVFnOW1iSTEvblRhNzFuUWZZbVAzdmV6OTlsZDN5SGhYTnk1dnZnV0RIMDd0cCtlSkltclpmK09tQW1tdlVWNGt5UzdkbHJ1bjNsY253OFV4RHhvZlpydlQyMS8vZzRyanFOclFyUjlzTm56MHovVXZ4KzMxbHRQM3hZTTQ0MysrZDJnN1VkUXRySGVoTHBubkdENC9XYjRvWTlrVFFlaHVLR2M3VDlrQkpLZmcyM01JaEprUVBGYVB2QmpkMS8vVEt1dXRmUkZzWFZ2Si9QdGRjQ0I4ZDhKeW1ZZEVjQXUyNDVFSFdzNkdwNzQ2cHI5L1c3TlppZ0VFTituNzZ6WDdVZk9RbndVNDJ2RGZhc2lIMTBTWThVNENSZjYwK3Y5NTRSdVZCT0hqdjlVV3hkdnk5bkVpTS81NDdBdmlNeTEzalkybTNmSlllVjl5VFR0ZnhSL3FmQ2hlWDYrRU1oZEhHZlRYSENjeDJrYVJPYmFmc2g1WU04YzlqK2JaOHh1Ymx0MEtSeEdGZmRySk03cGlodStQRmNUWnpiTy9zeHVjd0cxNXBYUHgxbWlmVnEreUhkc1A2KzlPTkFUS3BzWVNzcE9lcHIydzlINDZwNzRoQVMxUTlkQ3ZsSHVqZFQzRkFZNytjTHBmZnpQcWMzSENuUTNscEtkdit6N1FlYm5KWEszZi8vWFBweDJOSDdQZi8rZHdvYktFQ1hmNTc5TUdML0pMK0gzOVhVVGVsQUhpM3lWY1B1N3Vka3k3RHljNktrUjZKTHo0WVA4OCt2UDF6dnYrUTlLa1VQQzVJVEhoL2xuNGRMUHg0TGR6UC8vSjMwOHNOM3hGa2ZGMWdFSWY0RzI3bVZDNmZZczd3Ly9DaC9YOW1ENUR6M0xybk9uKzc5dll4NlhSZWJ2VkNZaEdBdTVUeWRJMzJ1SzJxeXRHNUQ0aTQ5aDVmZXdEZzFjRzM3NGQxRXNlbDBUTDVGbUZQbFZnQUFJQUJKUkVGVWFOUzQ0YlhtZytLR2llVE5xYytxY0lsSWgxR1l4T08ySHg3dnUyczJBRnppK2o0UFRpcml5eHYwdWdWdTcxbmVNQkdRcllqQ2hrbDhHVmZkdmhPT2ZYZFJzbXU1d1BEeEQ0SFBWQlQwMnBRSEFLakN6ZHgxNzJ6Uncwa3VlSGlyNEtGOCtkbnhTZjRSTDJZWGx5Vkhwc0tINStPcSsrd0lBK3hIVHJ4N29oa1VFL3B4N3kvOVAvZExUNzRGbU5FbXp6LzdiaGc1aTd4UDFMYjk4SG1Dd3NyVFJvMC9IN2pCMXRyRkRTa3U5ci85cm1VWjJuNUlINGF2TnFyQ0dUYjhZcXRTL29MN3FyQUJKdk1talVqS0kzSUJvQ3JqcXJ1Zkp6aXd2Y2Q1TkNZVk9OUElnTzE5SEZmZExjY1B0cEs2Ky82Um4wSFR6N0ZuVVFDb1NvcmJ2TWdCNXRQci9kdWNKRTl3S2ZHeDdZY1BwK2N1RjhXL0VDOW16MUxSdzZmOHZqT3hHR0JIYWY4MzdlZm5QWmZUYS9vZkNodllzNVNrK2xVc0NXQTl1UUhVeVpyLzg2cGlLT09xUzVOSmZwdm8xLzErNE9mSWRjOU5LdXB2RkRmc0lBVVQ4NDJ0bTlwWVVsSERqZlRCWG5LVmE5NEFINDNFZzcxSlJRN2YybjR3M2d5QXF1U3BBNitjMVoyOHNDbGRQaFB3Sm5HVWk2YUFhZHc4VTNBLzVtUTZ6NlFBVUpmSFB4UTd2TXpQSmh4WXV1LzZvWmpoRHhQa09MQm51UWtqQUJ0bysrRjVqdk9QdVZHbzRrUU9KY1dTOWozeEdLQVc2ejc3M0t1dGFjUzQ2cDQzVGZQelJML3VXVzZXUHFzOEdXdmQrNjN2MDh3Vk4yd2h2Zm5Ualc0S0poYTMrTG9wYWxCMEUxMUs3R2wxUTY3S3Rkd2g1N01BRXdBMUdWZGRTc3oveFVuZGlRS0hnaWxzbU1TclhDd0Y3TS9acnEzZkJFTUJvRW92Y2xmWGRMMS9aeDk2WGo4a1AzNVN6RUJBbmdFQXJwQnp2TTRXS1A1cTM1ZEE3S0VEck9mZEJzZXB1aGo5dU9yUzY3K3h3UVNMeTNSNXIyUE9JcEJOenNuMzZSS0tHemFVYm5qeldGRTN1bkdrRCt4ZFJRM2ZPOFlvdW9ucHRQRG0rME5KK21jdWNuaTY5QU5Ua2RPeGdUcmtBRkNOY2RXOW5yQUR3RktsQW9mblN6OElwVkhZTUlsWHVVZ0ttTSsxUEZJNEJlcVBUWFFBZ0NvOVBGUG84Tm9wM28vY1JPeWI1RWNLNGYwSmNJNmNQL001WDgvL1ZLQklZSXFYQWRZd3Jyb1BPUWR6SFk5cmpKR2szT2h4MWFYcnhzY0pmdDIxUERsMDd3WHorVytzZXkvMi9qUUhYSEhEbXM1MHczZkRHOGRwVWNQMWNkWE5QaW9saXBSNGswZkZmTEtCRmM2bGhUZmpxbnViaXh3ZVRGUlZ4K0U5em9FbDFmVUFWQ0YzQUhqZ2JPN2tWL2NHeGZuczJXb25UeFUyd01IZFBEUFJRUkUrQU5UcDJabnBUWW9hZC9SREF1UWJ6NFFBVUo2Y08vUHV6TVNsem1rRWdLcHNFbitzTmpZeXJycjdxZEhjUkwvdTl4a2FhR3h5THY0K3g0b2JycUFiZmtpS0dySWNvUDdxb1N5a3ArdStSMU5sWWE2cXU3dEJoU0d4dmNtQkpVRWxBSXFYdXlEY2RpWjM4a2FCUXhsU3QvT2NGTXgySHFRaWJzY09Ramt0d3YrY0o5TUFBSFc1ZHFhbzBYUG5oczQwdDVNQUNRQ0ZTdDJBYzE3WDF6enBDZ0NvVUc3TXVHNXVaVmZ6MU12Y2FHNnFKcFdwZ2NhSGlYN1h2NlRDMHcwYVNCeWR6YlZWM0hBQjNmQkRVdFNRbmRsc2ZSeGlRWnlWdm1UYmJSSjYwdnM2VFhsb211YkdST09ET0x3VVZEcVdRQUpBNmNaVmQ1enZVVXliMnA0Q2grQVVOdXpzZGk2R0FtSkt5WHBmRlRrQVFOWGVtTnkwbm5TTXpreHBBQUFLZE9aNi9ydThMZ0JZakUzaTdjOXFqcy9udU94VU9SejM4blRReWVKSGJUKzgzTER3OVBuWi8wTnh3em55UWRVTlB3NUZEVm1lSkdLek5hYVB1YWhoNXd2aXVPcStwZkZCNmZlbFlvbEtqOWVTM013SkpBSktBQlF0MzZPa2g5a3Z6dVRXVXFMSi9VTFhYaldGRFR0SnordzNjaEVVRUo4aUJ3Q28zMk9USE02WHVqWnFIZ1lBWlR0VDFPQjZEZ0FMay9PSFgyM3dxcXR1UUhnbWgyT0tITk5yT1g1MFo5ZGZsSFB3WDJ6d3J6eE5yK1hzZi9IVHJvdW9TVDRwSDFUMGhwRVNKTzR2dmFDaHlaTkVtcVk1OXQ0TUtTWDMzZm54eTNVcXVWamlTYjdJS21vcFd3b29QYzRYWTRVT0FCUnJYSFczOGxqQ2U4N2lWdjVvKytHQkR2ZHhLR3pZeVpmMG5WRHcrbUhKVG9zY2ZodFgzWFB2QkFDb1Vncmd2eFpyKy83Yzl5aDNkUVlBQ3BXYkNTcG9BSUNGRzFmZHk5eFFjTjE4aGJRL2tocXJ2OTdEa1V2N0RXa3QyeFFFZk00L096dVRZM285citWVy90bEVpcGwvMkxXaDNSYUZEVWZuNVZJcWJ2Z25jZnlEU1EyaC9EeXV1bmRMUHdqTlgrL1B6OTZiSWMxYWZKTy93Tjhxd3FxQ2dCSUF4VXRUcHRwK2VMZmhHRUgrb2NBaGlGeW9vN0JoTzJsNm5Va2tVTDdUc2N4M1RHQUJnQ3FsV01LbnRoK09wcGc4WFJveFlBQW9uMGFRQU1DUGNyN0NKZzNzZmswRkVlT3FlelRsd2N3TnNkL2xuNFBMNnpsWURzSVd1YzRmTDlxdit0OTB5eXBUVGpEOWFsTXJqTlRSdkZYWThLOVJldDZiOGFUMzZmVkRKS2FudjVsSENkMXRtbVlvNEZoeHZ0T0EwdWNjWEFHQTR1UUgvOStjdWEzOWtUdEtjQ0Fta096a3ZjSUdxRXA2UnYwemQ5TUJBT3FVSmd0L2EvdGhNWlBYOHJRR01XQUFLRlM2YjBuM0x3b2JBSUR6NU9ueVh6WTRPQS96M3NnMlV4YTRSTXA3MkNMWCtkSkdlb3N0Ympoek1KOEZXQTcvRkRYOFo3ekkwcVNxOC96ZU5FNHZucU1vNzlOYzVKQXV0RGNVT1JRdFhkQy9TaUFCb0ZUanFudmVOTTBySjNCcmZ5d3BzU1FTaFEwN09acTZxd2tReG92Y1ZRY0FxTk5wUWVQejJzOXZhaURXTk0zdkFaWUNBR3doTjZyOU05Ky9BQUNjYTRzQ2g5T0d4QWViYmxDVDFOUTV4NVgrMlBCbFhWclkwQ3l4dUdHSGc4bCtLR3JJVWtXWXF2T3dVdkhBallnam05TW9vVlRra0Q1SEtja293SkxZemd1Vm9RQ1VhbHgxcVVqdnFSTzR0VDhWT014TFljTk9Ya1Y4TGdJbTFlWG5VMU1HQWFCZXYrYmsveXJsT0xBR1lnQlFvSnpUOVUyaldnQmdYYm5BNGYyR0IreGVha0JlOC83SVBwM0p3OTltWXVhcnF3b2JtcVVWTitRM292R2pNU2hxeU01ODBEK3BPZy9ucEdtYTI3bDQ0RnYweGFZa28xems4RnVBNWJDNTA4cFFYVElCS0U2K3IzL2d6RzFOZ2NOTThyNkF3b2J0UE0zRlRFRDlydVVwZzY1TkFGQ3Z4elYyS1d6NzRWZ2NHQURLMVBiRG81elRKVzhHQU5oSW5qci84eFpIN1hFdWN2Z3NKbksxM01EOWVJYzgvTHZyeHBzWFVkeVFib0RURzFDWGpoQ09GRFg4UThGTmFBL0dWWGQ5WEhYSHBTMThYSFhQYzVHRERzcGw2dkpOVS9XandRR295N2pxVWxMRWJhZDFhMy9xa3IxZitmbkx2c0IySG5pT2gwVlNmQWNBZGJ0WFU0RkREcTdmRExBVUFHQkRiVCs4YnBybWQ4Y05BTmpXdU9yZTVaekpZWXRmMGVXWVNNclpleTF1LzQ4VUoycjc0VjNPd2YrMDVkN0wrNXczdm5iVDU2cUxHM0pIL0dNM3dDR2NGalU4V2ZxQmFQNTZiejVSY0JQVzZWU1I0amYwVS9MUm1TS0hrd0JMWWpOcE5QZzNpU1FBbENRWGh0NXc3N0cxWXhzbCs2R3dZU2UzYTNnK0FyYW13QUVBNm5ZdlB5OFZMUmRwS0d3QWdBTGw2L2d6NXc0QW1NSzQ2dTZrQ1FFNzVDdzh5OU90VTZIRGg3WWY3aS90eE9UODV1T2M0L3huMHpRUHQveFY2UnpjeUpNMU52TFRkQzhuRm9rTFlSd3BhUGhIR3N2U05NMEhZL1JDcXZhOW1qdXN2dlgrSzlLMW5FanlmcHVMUEFBY3dyanF2alZOYzEzSHhLMWN5d1VPdC9KeFpBTDJCN2FXTnB1OEY0SGtzMnNUQUZUdGNXcTBrNlpDbC9naTh6UGZ2UUJMQVFBMkpJNEFBT3hEbmhCd2ZZSjh5YlRmOEVmYi96ME00a3ZUTkduaTFMdmMrTEY0dWNGVnlwdDlQbUZlYVlvejM5OWtVc09QcWl0dVNCVWpUZE84Q2JDVXBSdnltMVBRTTA4UlNZRmdEMlVoTGVhOU91RkZtL2s5ekpXUUQzVE5CYUFVNDZxN2xUc3VTVERZakFLSENTbHMyRnJhbUx2alBRaGsxL0krd2gwSEJBQ3E5YXp0aDgrNVdWSXgybjU0NUprUEFNcWtzQUVBMkxjeitaSXBnZjlkMHpUZGpuOHkzYnY4bW43T0ZEdzBPUWYxdytsUHRCaHJ6bCsrbjM4ZTdmRWViTEpjM0dxS0cvTEJQNWFzZTNDS0duNGdvU3VzbmF2RFNuWG1vbjA5WDFCM3ZXZ3puMVFKNm5zV2dHS01xKzYrKytHdFhNdkYwYmNLWEhzWWJUKzhsT1N5bFNHUGF3VTRxMnY3NFhXcEhaMEJnTFc4U2Mvd2hYVWVMS29ZQXdENGk4SUdBR0JPZWEvamUveXo3WWNVNTNnNWNhNTVsMytlNWI5eDBmL3VTODV6YjNMZTVxbmpNLy85VmRMcnVIN21mM1EvLy9QT2dmTG5VeDd1azNIVnZadnlsMVpSM0tBVFl3aUxUUlMvU0FyNG5uNVpFYzdUMHJvUDdVTk9qcitqeUtFNDZUeDliZnZCK3hpQUl1UUNCODlzbTd1WkFqeHBBa1pwQzQ4Z0Z6YThXUHB4Mk1MSDlKa3RidFhBWEZKSDU3ZjIvd0NnYXU5S21kYVU0M0NhM2dGQVlYSkRKSVVOQU1CQmpLc3U3U2VrbjMwVk9sem01cG43b0pJYlJLWWlqZWRURnpTYzliOTkvZUk1dFAzd3BPMkhVWkxNUWFXaWhydmpxcnN1c1BtWE0rOUxoUTN4dkJwWFhTc2gvTjlTa1VQdXpIb2pUMStoREttTDFuRXVUZ0dBME1aVjl5VGRpemxMRzd1Wk8xaXhBWVVOV3p0UzJBQ3NZVzhiMVFCQUNGME83SWVXOThYRjRRQ2dNTGtSa2tuUEFFQUlxZEFoNXo2M1RkUGNUdkhTbkJQTnY1M2tmSThiT2YvMjFqNExHNXBTSnplMC9aQTZWMzdXamVQZ2RBMC9vKzJITzduN3ZmZGxQTy9IVmZkbzZRZmhLaVk1Rk9sbW51S1FDbmRlTHYxZ0FCQmJ1bGJsUlAwM1R0VkdUSERZZ01LR3JibWZCTmFWcmt2UGMyY2pBS0JPdjU1Mk1Bek04d3Y4NVl2akFKUWlOUXJWdkJZQWlHcGNkU21YNGNuWjViWDk4Q2ovZHc4WGRPSk9jcU9yTk1uN3c2RVdVVnh4UTY3aWRiTjdXTDhJWVA1REluaG9hUXJCL1p5MHo1b1VPUlRwUmU2bWRjdjdIWURJVW5GMExuRDR3NG5hU0Vvay9hQ3IvdVZ5Y0V4aHcrWTBMZ0EyVlVMQ0l3Q3dnN1lmVXVmQ3lCTWNURzJBdnh3czBRUmdFN21KcmNaSEFFQlI4blNDLzB3b2FQc2h4ZTFUNGNPZGdxZFNmY3pQbEI4T1djUndrV0tLRzNJRnpPOEJsckprUitPcWU3TDBnM0NXWXB1d1RuSlJ3K2VsSDRoZEtISW96alZUSEFBb1FYb3didnNoalhUODB3bmJ5RDBGRGhmTGhRMkNZNXQ3RUhHekNvZ3ZUY3J4N0FrQVZYdVdyL2ZobXVua21ESFFORi9FN29HQzJJT0U4OWxmQXloUWpxOWVlbitUaXp0djVRS0k2L2svMzhyLzMzZHlydDhVVXE3c2FaN3M4WTgvZVNKRmNjSVhOK1NrMm5UZ2J3Wll6bExwZnY4RGlUT2g2VG82TVVVT3hYbVJ2NlB1K040R0lLcjBBTjMydzQzOFlEM1ZRL3NTS0hBNGgrZXpyZDFWRUE3czRMbmdLMVRqeERRVzRBSlJyL2VLRzFpeUwwM1RwRGpvYXpFZ1dMeVBwVFF0U1JPaDVIekJ2NlRyK1V1NVRRQjF5MFVGeDRvOHR4TzZ1Q0hmNEJvcmVqaTYzLytnN1ljNytjdEdBbFk4Sm92c21TS0hvdHpNVXh3VSt3QVFWcnEzeU4wS0ZMTnZKaFU0dkhYdit4ZUZEVnM1eVlXd1JYYnBZRFBqcW10clBXUjVqeVk5bjk3UEhXNXVlVTZkMWJYMEhleVpFNHFXa2ltZTU5SHFsS3ZhS2E1NUgvck9tYTUyOXlmdWFzZlZGRGNzUTJweTl5N0hmVDVMbUFjSTcyTytqeThpanlmdjM4ajdPcHpUVHM0ZlRyczRtK1FMQUpRZ1pIR0RCUElRZmhiVStJY0pJcUVONDZxN3MvU0RNQ2RGRGtWNTAvYkRjNThSQUtMSzl4VzMybjc0N0o1aUk0L2JmbWlXWHVEUTlzTWpoUTBiUzhHc1c1SlZxTUdaSVA2RkFkbGNSUGNvSitiWjA1bmVrOXcxbHZpcVRYNEc2cFh2V2E5TXZNclBCYWMvNG9yVFNzV01qeUxGQy9QOW5mTzh2WSs1UzdDa1JpakRBNTlYS21EZllCNUhxVmhSbmhjQVVJdHd4UTJwQTJWSzFBaXdsS1g2YlZ4MXo1ZCtFTTVxK3lGdEdOeUxzeUl5U1RrSHBzaWhHRjNiRDZNTlVBQWlTNFY0N3JzM3R1Z0NoN1lmVXRmVzN3TXNwU1JmeGxWM2Era0hnV1hKRTBwZTU1L3Zja0pjK3I4ZmVqdnNMRTBUdW1VU0RBQ0hsQk80L3BYRWxTZTh2VlRjT0lrblB4N2ZBL05NczduMzZUeUtwd0V3dDN4UEpvZGdlbDl5c2FMQ0VRQ2dXbUdLRy9LMGhrOEJsckpVdXQvL29PMkgxOGJqaFpTS0d1NlhNbVp4Q1g0b2NqRGhKSzQvMm40NFducUhad0RpR2xmZGZjWHVHMXRrZ1VNdWJQZ2p3RkpLOGpGOXhwWitFS0Q1cCtBaGRYWStuZFQ1MnJWbko2Zkpvd0FRUms3MCtwN3NsZU9QNyt4YmJ5MWFRYWpubXZWcGFBZkFvZGt2bU01dnVhQkJzU0lBc0FqL2kvQWkyMzU0cDdEaFlGS2krRzJGRGY5SUkzWnpsM09GRGZFOEhWZmRkWVVOTWFVSDZkd0o5bTcrYmlHZWxBRDVMU2Z3QUVBNE9Vbi9sVE96a1hSOVgweVFTR0hEVm80VU5zRDU4bk5zNm1MYnBqMEhoMmtydmw4QUNDM0ZFOUsrZGI3ZUh6bGJtOHZQWVpRamRYTytvYkFCZ0VOcSsrRzU0dEtkRFRtZnEwM1hkWVVOQU1DU0hMUzRJWFZMeVVua3hzQWZ4bW1pdU5IeC83d2YwOFBBN3dHV3c3OGQ1UWMyWS9VS2tJTkYxeFU1aEhXdGFacXZxWkJyNlFjQ2dKakdWZmRTZ3VuR1hpeWh3RUZodzFaZW1kd0Y2MGw3RGpucFVaSGRadTZWdEZnQWxpM2ZHOS9JaVdLc1QzRkRPVDdtWWg3Smp3QWNtaUs3N1ozbXg5eVJ6d1VBTE5YQmlodmFmbmhyV3NQQlNCUS9JM1V3Yi92aGMzNC9YZ3V6TUpvY1lMZ2hHYWRNWjRvY0pDZkc5SHVlbkFRQTRlUm5sUWZPekVhcUxuQm8rK0dXd29hTi9aS0xoWUFONU0vTmJjWDY2OVBOR1lDUzVNbE5keFEwYmlUU3RkNTl4OFZPVE8wRElJSzJINTZZMnJBVitURUFBTm5zeFEwcElTRjN4My9zSk16dWl4dmhmOHRGTmwrYnB1a2lyWXZ2Q1FSM2N5VzY3aktGMC8weXRJZnBtcHlLdkpaK0lBQ0laMXgxSC9Ja0tOYjNJZ2VPcXBJTEcvNzBQdGpJeitPcWUxM1FlaUdVMUJVdkYrdC9jV2JXSW9rT2dPS1lHcmdSazVySzRCa1FnQ2prSkczdWdmd1lBSUIvekZyYzBQYkQ4NXlRb0R2Ky9KNGFRL3FQbFBEVDlzT295Q2FrOU5CMlBYWDlYL3FCcUUwS0Z1VWloNk9sSDR0ZzBqWDVxMDZiQUVTVTd3bDF6OTdNbTVvS0hCUTJiQ1U5VTVuUUJkTzQ0eHEwbGpzRnJCRUEvaU5QRFZUZ3NBYjd4MFh3SEFqQXdiWDljRWRoNUVaT205UitLR2pOQUFCN04xdHhROXNQS1NubFY2ZDBkdTlUTW5IZW9GMjg5Q0NWSjRlOFdmcXhDT2lYL0Y3MTBGYTVQRDNtUmg2clNCeC90UDN3MHZrQUlKclVQYnRwbWx1U1N6ZFNSWUdEd29hdDNQWk1CZFBKVFVJazhsM05ORUFBaXBYalp4cnlYTzFXOUFVdW5hWmhBQVJoYXNQNlBtcFNDd0J3dnIwWE4rUms4dFFodjNNT1pwVVNmKzZPcSs3UmdsN3poZHArdUo0TGJENlpIQkxPVVM1cU1DNTNRZElEZWhxcm1MNm5KQ3FHOHFMdEI4bHdBSVNUN3gydTV5NUdyS2ZvQW9mMEROYzBqY1NNOVoza0RsL0hwU3dZU3BHVHhINXp3aTZsSXlNQXBYdnVERjVKY1FNQXNJNW5qdEphVXA2TWhob0FBQmZZYTNGRDdnRDl5Y0dmM2F1VStLTkR4MS9hZmtoaldMOHFzQWxueU1rM0t2Y1hMSDFQNVVSRm83L2p1SmNtM09TRVFnQUlKWFV4U3QyTW5KVzFwUUtINGdJaytUN2tXR0g2MnI3a1BRQWR2bUIvVExrRGdJcmxlK2xYenZHbEpOOEJBSmNxY1MvNlFEN0trd0VBdU56ZWlodHk1K2NYanYrc3Z1UmtjUUhYTEU4TmVSaGlNWnc2blNweVIvSU5wOUxvN3pUQncvanZNRklpNGRlMkgzVGpBaUNjM00zSVBjUDYvaWdwcUtTd1lXTWZjOUVQc0VkNS8rSzlZM3d4Q1F3QVZPQ3Rrd2dBc0JNSisxYzdNYkVCQU9CcWt4YzNwRVNFMVBIWk9QTFpQVTBKRFpMRkNlNnBxU0pjSm5jb3VKRW5lM0I0ZjBwUUFTQ2lmTStncStiNmlpaHdVTml3c2ZjQ1lUQXJDWThBVUxGeDFSMmJGSGlwS0pOK1B3UllRMGoyOGdFSTRKR1RjQ1hYYXdDQU5VeGEzSkEzVGI1S1JKalZrS2MxQ0xBUzJXK3BLNy8zNmZuYWZuamQ5b09KSzFrcTBrcVRQZEtFanhBTElpVkQ2cklCUURoNVl0MHZ6c3phMGpYOVR2QTFLbXhZWDNyR0VpeUVHWTJyN3AzamZTbFRaQUNvZ2NUNWkzVlJGOGJmSkVzQ2NEQTVYOHplN3VWKzB3Z1VBR0E5a3hVM3RQM3dQQ1ZMT082elNsM3c3NWpXUUdBZmMxSERjeWZwdjFMQ2VOc1BZOU0wejZLdExZTDBZSi9lUCtraGYrbkhJb0EzQ25BQWlHaGNkYSticHZuWnlWbmJwN1lmUWlhZnR2MmdzR0Y5cnp4andjRjhjZWd2cExnQmdCb29icUJrTC9KRVJBQTRCRVYyVjdDbkN3Q3d2a21LRzlwK1NOM1lmM1hjWi9QRnRBYUNPNTBvNGdIMkhLbGpidHNQcVNqcFRiakZCWlFmOG05SUlqbTRGQmg1dmZCakFFQkF1WlAyQStkbWJYOUdLM0RJaFEwM0F5eWxCRS96MUJMZ01JNGRkd0NBZzlMdzdYS21qUUZ3S0hKRExtY0tOUURBQm5ZdWJtajdJWFV4ZWV5Z3p5WjFhTHhsV2dOQm5UUk5jOWRFa2ZPbGpqbHRQNlF4ZzU5MHBkMU1laitsNzc2VXpGWFN1aXYwTEJjMEFrQW80NnBMejZXM25aVzFoU2x3VU5pd2tRZWFITURCS1c0QWdJcmxaMHRpKyt6OFhPcGVqdDBEd096WElFZjhZdjl2Ny82dW84YXlQUUFmOWVwM1RBU1lDR1Fpd0VRQS9hd0htd2phSFFFbWdqWVJZRC9vdVNFQzdBaXdJbWdUQVRnQ3pUcmR1M29NbFArVVhYK09wTzlieSt2ZU8zZG1XblZVcWxJZDdkL2VNWVVhQUlBN2VsQzRJVFpIM0tDdVJ5NGFmNnBESXdYTEhVUzMrcWEyc1R4SEZJUi9UU25WeFIzY2dPUmlycjZwcTVnT3dtYnNDVGdBVUtLK3FTOWkydE9sRTNRbjV6bDh1OGtERUd4WXlGT0ZWbEFFNFFZQWdNMXlQM2E3SEhENFZ0clVSZ0RHcTJvN1V4dHU5cTdrZ3dNQUtORzl3dzFSaENEWXNCNGZvMmpjaGgwbE9zbkY1anFJemxlMTNXSFZkcjBKTjh1VnA0UGt6clZqZWswRGt3TU93bllBRkNlbVBlV0MvUy9PenEzeUpMR0xUUVVjb2xtQ1lNUHRjbGpuc2YwQUFBQ0EveG9iY0x0SE1iWFJzenNBMWtHNDRXYStqd0VBRm5TdmNJUHVpbXYxVzkvVXJ5YjBlaG1PTG9wczlwMnpuMVZ0dHgraGhqZWxIZHRZNU02MU1jWGhiT3Byc1NGdkJCd0FLRlhmMU52dUVlNWtJd0VIVXlEdkxJZDB0bk5vWnlESEN3QUFzQTUrNzk5ZGJsVFU1OS9obTU3ZUNNQ29tUlowdmE1djZ2TlNEdzRBb0ZRTGh4c0VHOVptMXAzeHcwUmVMOE14ZTIvdUtMTDVXZFYyTzNuY2IwcnBmV25ITmxaOVUrK2E0ckF4T2VBZzRBUkFrZUllNGFPemM2dTFCaHdFRys0c1AvUVNiQUFBQVBqWnFUVlpXUDRkL2pVL3Y2cmE3bUJneHc1QStZUWJycWZtQ3dEZ0hoWUtOMFFSZ21ERDZwMzFUYjJsaUlFQ1BmUGVuQzhYZzFWdGx4UDNuNk5BakRXNk1zV2hzKzVyOXo2SGVpYjJtZ0VZaUppQzk4NzV1bFcrZjExNTl5akJoanZMZXdMdXI2Qk11dDBDQUd5ZWNNUDk1ZC8vZjhZMGgveDNYTFdkZ2xRQUhzcWU3L1hjdHdBQTNNT2R3dzE1YzhNTjZWcThqUTZqVUpMWHVYRGN1THo1NHZQeGEwcXBMdkg0cGlTS3dONU9mUjAyd0VockFJclZOL1dCKzRNN2VSS1RHbGZDbnNLZG5kZ1RnS0lKSGwzUG5oRUFnMWUxblh2eEFjak5qcWErQmt1MGwxTDYrMHJZNFVQVmRxOUc4K29BV0RsTjhHN212Z1VBNEg1K3ZjdC9xbXE3dzlqY1lMVmV1TEdsTUxtd1p0OUptUzlHOS81WjRyRk5XZC9VaDFFOGQyNkt4dG84aXBHYUh2NEJVS1M0UDhpRisrK2RvUnY5RTNEb20zcXBYUnZqM3N5ZXd1MXlzNFBEMGc4U0prNm8rM3FtZkFMQXVKVTJOZmxNZ0g0bFh1YS9xdjN1ZE9mLzR5Zy9BekRaSFlBNTdKVmM3NnpVQXdNQUtOMnRreHVxdHN1RnpXK2N5Wlc2VENrOUZXeWdJSG1qOHJGZ3czeTVhMDN1WUNQWVVLNitxWE5SM2xhQkQxekc3SGtFZmdDZ1NIMVQ1d0w3Rjg3T3JYTEFZV25kdHdVYjd1eTFZQU1NZ29tTkFEQnVtcmRjcjdTaTlxTUNqbUVxNm1nVzhmWEtoSWR2VmRzZDZkWU5nUHVuRzZrQkF3QzRweHZERFZYYmJldHN1WEpmVWtyYnVSQjM1SytUWWNoQm0yZDlVKy9vdnZLenZFbWJOMnhUU24rVmRtek1sOS9MdVFPdTVWbWJQK1BlQVFDS0ZJSHlwODdPcmVxcTdSNzg0RVd3NGM1ZVJQZ0dLRmpWZGg3VzMwRFRGZ0JHd3ZmOVFQUk4vV0hxYTdCaGVacno3eW1sejFjQ0QvbnZRelJPQkFDRUd3QUE3dTNYVy82RGJyUldxNHZDV3lqQmJ6YUQ1NnZhYmlzK0QzVm9IS0RjQVRlNkR3dWxyTWV4aDRBQWxDd0h5NnUyZTV4U3VvaUg4Y3lYcHpLZDlrMTlyKzkxd1lZN3krSHlwVTNLQUZaS2tSWUFqRmc4QjNqdUhGK3J4R2ZHdWJIUm13S09nLzk3bWYrcXRydmFQUEZMUERjNDF1d1BZSlE4RndZQVlPbXVuZHlRUjBtbWxKNVk4cFU1RTJ5Z0VHLzdwcTRFRythTG9xeXZnZzNERnUvdloxTmZoelhKaFpDdkp2RktBUmlzUEtXc2IrcXRlTURPOVo3Zlo0SkQxWGFIZ2cyM3lsUHpuZ28yd0RCRXNhUFB0ZXVkbFhwZ0FMQ0FBNHQxb3hLTDBvOEtPQVp1OXlSQ0tILy9NT1hoMkxNRUFNYk1sRXNBZ1B1Yk83bWhhcnVkR0NYSmFwemR0L3NsTE5GSjM5UzZEbDRqeHVhK3Y5ZC9tQ0xsd3JHcTdaNm1sTTUxYVY2NVhOQW9NRVVwY21GdTcyd0E4L1JOdlIwVG5nUlpyNWMvUjQvdit0c2hnZzA2Wjk0c0J4dTJjOGltNUlNRXZuTm9PVzZrQXk4QVkrQjN6TTJLKzc3UHY2bXF0bnZubWZaZzVmRHdYdFYyVjQrL3V6TGx3VzltZ0dFdytXbytqWlVBQUI1Z2JyZ2hOZzFZRGNFR05pMXZETzdhRkp5dmFydDhmWDRxOGRoNHVEenl1R3E3N1hnUUkrQ3dPblcrbG5TakFHQUk4a1M5bUU3Z0ljejEvaWsydUMzZ0lOaHdKMTl5cUdZQXh3a0VUV0R1UkxpaGZHK3F0dk1kUFEwZmN5RExkQ2hZVEV4dzVnYWw3dlgyVFgwUXphcnM5NDlEYmo3eFovNjdFbnE0akdaS1I3N2ZtS0JQUHdTQUdLZlo1MXkrai9mN2VqeWNTd0NBQi9qbHgvOW9qSC9VdFhJMXZnZzJzRUg1Ui9HelhMd2wyUEN6WFBCZXRkMDN3WWJ4aS9mL2Rsd1RySTdKTUFBTVJ2eE9PM0hHYnJSM1U4R1BZTU9kbkFrMndMQlViYmVWVWhMYXZwMDFnbks4VENsOXp2dWM4UmtHM0NJSzQvZXMwNDNPQ2o2MjdLQ0FZMkIxSHNVMW1yL2YraXQvcC9uNjlYMEhqTURzYys3dmFNTERPS2pKQVFCNGdKL0NEYm5yZ1FWZGlWeEV1elBDMThVd3ZPNmJla3RIazUvbFRjK3E3Zks2L0syenozUkV3TUZuOG1xOUd2T0xBMkI4WWlyQlc2ZjJSbk1ERGxFTUpOaHdzeFBORG1CWW9raksxTDg3TUxVUGl2UklzUy9jTG43THZMZFV0eXI2dTc1djZtTU5DeWJwZVZ5L1g2OEVIdkwwN3FPWTRBMHdSTS96ZFB5aEhQZVFqblVEMU9ZQUFEekFkK0dHbU5yd3hJS3VoRzc1YkVJdW9LbGlZNWNmUkdIV1Y5TnFwaW5HZXI2WStqcXMwS09xN1FSSUFCaVV2cW56OUlIWHp0cU45bUpLd3o4VUE5M0oyd2pQQUFNUkQrZS9DamJjU2VtZG5BRmdycXJ0UHZndGMyZkZCeG5qTjllWEFnNkZ6Y3AxRHI5SDkvT3JVeDQrUkIwRXdCQUlEQUFBTUhtLy9yQUFPdm1zeHVzb29vVjE2ZnFtVmxSOERRVll6T1R1a2xYYi9aRlMrdE9pcklSeDBBQU1UZzRHNTA1L0thVlB6dDYxM2xSdGw2S2p1ZnZxbS8zUk43VUptVEFRTWEzaFZCT0VoV2lvQWNDZ1JJalI3NzBGREdoSzAyNU02WVlmdmN4L3NaY3hrOE13K2ZmNkI4L3hBVmdCelc4QkFCN2d2M0JEZEZkK2JqR1g3cU91K2F6UkYxTkNyaGVmYzZjNkwzSlZMamFMd0l2aUZRRGdIeEdBZktvbzRrWnZDajYyVXZ6V04vV0hxUzhDRElGUXcvM1o5d1JnS0RROXVyZVBRem5RWEtCZXRkMEw0Ulh1NkVrMHZ2cnpTdWpoTW9jZGNvQjNRS0VlQU1wMDdyd0FBTnpmMWNrTlJqRUZhaytZQUFBZ0FFbEVRVlN1eHY0WVh4VEZ5WnR0dTMxVCs0RTBSeFFwWEFnMWNJUDhXZjNaQWdFQU0xRVU4ZGg5SlBmMFFpRUVsQzMyQ25LbjFqMm42dDRHVSt3SXdEVEZsSWJqS0dMbWZnWTFpUzZhRlFnNGNGK1A0dmZCM2c5VEhzNGk4Q0RZQy9DOVhlc0JBTUFxWEEwM0tNSmZ2cmM2NkxNR3IyMm16YWZ6SW5lVmcwRlYyNTJaWUFRQVhKVi96MVZ0dHkzZ3dJS2U1bkNNUllPeVJISGp2akREVWcycTJCR0FjWXZuQWJtUjI0Rm5Ba3Z6WllpaDdRZzRQTlBRaUNYS3o0NmVWMjEzZGZyTHh3ZzhtTmdJQUFBQVMvWlB1S0ZxdXgxZFM1YXZiK3JEc2IwbWluTFNON1ZRMGpXcXRqdFdzTUNDem9VYkFJQWZSV0I5cTJxN0M3K2J1VVdlcUxldHlRRnNSb1FYY2lCdEp6b0hLbXBjcmM2RUdnRFdLY0lMcysvNW5manpHMjIxQmh0a2pJWkdwakd5U2kvejM1VUpENWR4elJ6WkZ3QUFBSUNIbVUxdWVHVWRsKzdkeUY0UDVjaTdaTHMyeHVhcjJpNEhQdDdmNXovTDVMbW1BSUJyOVUyOVhiWGRxVEFrMThnZFRiY3REcVdKejYwaDJWRjhOaGlhdWdDVVlUOENma094SllBNEhIMVREM3BLMDVWbUJYN0xzdzc1ZDh5Yi9IY2w4SENTNzV0TmR3UUFBSURGek1JTk85WnQ2WXlnWk5seXg0OGRHMkR6eFFTYVUwVVFQTUNRSGdJT2dpNmVBSXhOMzlTN0pvUXh4MWwrYjFnWUNxV0lpMVhJVXh2c2ZRS1U0WW5wQmF6SUgyTloyUGd0cnpFV201RDNqL1lpN0dDeUF3QUFBTnpSTC9GdjI3Smd5Nldna3lWNzBUZjFsbUREei9JbzZxcnQ4cnA4Rm16Z2dRVDlBSUJiOVUyZEN5TGVXaW5DUjhFR1lJTDJuWFFBR0xVdlE1L2E4S08rcVhPamdzY3hIUjAyWVRiWjRXdlZkbjJlS0JLTjJ3QVlKMEUyQUlBSG1JVWJkSEZiTGh0akxNdnJ2cWtyWVpuNXFyWTd6NXVBT2xQeFVERzZYVGhtdWM3RzlHSUE0S3ErcVEvenZicEZtYngzZlZPL212b2lBSk9UUC92T25YWUFHTFZSQmhsenQveStxWE14K2JQb29nK2JsT3N6UGtmUTRTS2VVd0V3RXZaT0FBQWU1cGVxN2JhdDRkSko0UEpRSnhGcU9MYVNQNnZhN2podjlxV1U2dEtPamNFNmRPcVdUaWdMZ0ZHTGUvVVh6dkprdmUyYittRHFpd0JNemhlZmZRQXdldS9HM25BckZ4dm1hZW1hRmxDUTNNVHRVd1FkemsxMEFBQUFZT3J5NUFiaGh1VXpDWVA3eWxNL0h2ZE5iYnovSEZYYjdVZW9ZYSs0ZzJPd3FyWjc1WE43SllRYkFCaTlLUGg0NWt4UHp1dVkzZ0V3TmJySkFzQzRkVk1LTXVhbUJiblJtSkFEaGFtdlRIUTRjbklBQUFDWW9sK2M5ZFV3RVlNRjVmRzN6L0k0M0R3VzErSjlMM2NvcWRvdXI4djdrbzZMMFRBaFpRWEczdDBMQUdaaXZQVFR1S2RuL0Y2WXNBZE0xRzk5VTE4NCtRQXdXcGRURFRKZUNUbms1Z1ZmQ2pna21Qbjl5alNITGFzQ0FBREFWQWczckk3Tys5eFY3dnE1RlVWUlhKRTM2dktHWGU1UWtsSjZaRzFZdHFydFRyMjNWdUpzaEs4SkFLNFZ4WjdiQWc2ajkxU0FFNWlvdkhmMXdja0hnRkdiZlBPdC9KeXViK3J0Q0RxOExlQ1FZQ1pQYy9ncTVBQXdIRlhibVg0SkFQQUF2eGdudmpKdlJ2cTZXSjUzZVlOVTE4LzVvdWo4YTJ6WXdTcmVZL25hZTI1bFYwTFJId0NUazR0QWNtaFpsOGRSeXFHVnh6cVdBeFAxMnQ0VkFJemVVNzkzdnRjMzlXR0VIQjZubEQ2V2RHeE1tcEFEQUFBQWs1REREVGFyVmlRS1orRkhIeVBVY0dCbGZsYTEzVkVlc2Fyb25GV3EydTR3cGJSbmtWZm1hS1N2Q3dCdWxiczhtbUkwS2w5aTB0NmtPNWdDa3lYWUFBRGpkaW5ZY0xOb1pQRHFTdERCUkFkS01BczV1RmNIQUFCZ2xJUWJWbXV2YXJ2OU1iOUFGdEpGdDg5WGx1MW4rVnFKVU1QdnBSMGI0eExCQnROMVZ1ZWo0ajhBcHE1djZqd2g4V1RxNnpBQ1hZUlZBS2JvbVdBREFJemFMTWp0T2ZFZFJkRGhNQnFZNWJEREM4ME4yTEJjaTlCWGJiZnJSQUFBRDlFMzlha0ZoSEZ4WFROMHYzZ1RyOXo3cXUxMlJ2NGF1ZGxsUEJEZVVmRDdzM3g5VkcyWDErVjlhY2ZHK0FnMnJJV3BEUUR3NzRiUnZvNk9nM2FXZjhOTmZSR0FTZm9TelRuT25YNEFHSzEzZ3R3UGw1K3g1K1lHUDRRZFBnNzlkVEZJbjZxMisrRFVBUUFBTUJhL3h1dklYU1dlTzZzcjg3bHFPMk5kcDhuNC9tdFViYmVWVWpxTjBhbXdqdmRjdmhiM3JQUktuUWxOQXNELzVZNk9FZVQ5MDdJTXlrbUVVd0NtNW0zKzduTFdBV0RVbmdreHJrYnNqZiszUHg3UHdmSTA5d1BQd2xpRGw3RUh0YTNaSGdEQTBxaW5IUWJuQ1Vab0ZtNDRkWkd2M0huVmRqWVRwa014ekEyaWU4akxZZytRMGFuYTd0ekRnN1ZRQkFNQVAraWIrcWhxdXh4MC84dmFESUxDWG1DS3VwVFNybjFMQUJnMXo2M1dMTzZ0anVQdlAxWGI1Y0REdnVka3JNQ2psTkpYVFJlQk5jcTFabThzT0FBQXl6WUxOeHk1NFZ5NXZKbHdVYlhkanMyRVVldjZwdDZaK2lKY3AycTdRNTgxckZOMFJycUl6MkJXNjZPcERRQXdYOS9VSDZxMmU1RlMrbVNKaW1ieUhqQTFseEZxMEwwWkFNWkxpTEV3ZVk4Z3BmVGg2bEhsQm5rUmVNaC9UNmErUmp6WTMza2Z5ak1iZ0kzYXZUclJDUUNBeGZ3VGJzZ2JXbFhidlVzcC9XNzlWdXBSYkNib2xqQStsOFo4WHE5cXU3d1orNzdVNDJPY292dVJEc25ybytzWEFOd2dQMURPdndYemIwTHJWQ1FQL1lHcEVlZ0NnSEVUYWhpUWVHNTgrT04wNUhqT2tmLzJwcjVHTE95VGdBTUFBQUJEOWN1VjR6NTBGdGNtQnh4MkovSmF4eTZIR3A3MVRiMWxnL2huZVZKSjFYYmZCQnRZdDZydGpnUWIxdW9QbjRFQWNMc29WbmdjdnlNb3gxTVArNEdKbU8xalZZSU5BREJhT2RUd09FOFp0MmM3ZkhuS1E5L1UrM0gvOXM5Zi9nMmI5K1JUU2wrbXZqN2M2bE5NQlFFQXVJc3pxL1F6Tlo1bGMzNnU1WHBtOEg2ZHZZQ1kzcEEzUXY1MFd0Y2lieWE4N1p0YXFHUzRkTGk3UnRWMld6RmlyeTd5QUJtdGVPOWR4S1FjMXVPc2Irb2phdzBBZHhQRkpWdFYyK1Y3bGllV2JhTk00QU9tNGlTbGRPRHpEZ0JHelRPcmlZakdDVWZ4OXg5VEhyaEdmbDRyNEFERE1wamY3akd0dUlBaktaSmlXd0NBQjdnNnVTRkZjYUk3ei9WNVU3V2Q3cEREYzZMRDNmV3F0c3ZyOGxXd2dYV3IydTRnM251Q0RldjFha292RmdDV3BXL3FiVjB6Tmtxd0FSaTc3c3FVaG4yZmR6QkpINXgyR0wxM01hWEJNeXRNZWVBNlQrTFpMVEFjcmxtQXN1dzRIMFVUSm9PUituWE95OHBGaW44NzRXdnp2R3E3YjRvcUJpRS9GTjUxbnVhTHduS1RYOWlJcXUzT0JXbzI0b1hQUkFDNHY3NnBkNnUyeTBWbkx5M2pXbjJKY0FuQTJPVFEzSDUwOHdXbXl6NDJqRmNPYVIrWkNzOWRtZkpBMk12N1R6a0FZMEdnYVBrMy9hc0Izc2RmYWo0NGwySm9oc2crd254YkpSNFUzTUl6QWdidnAzQkQzdVNvMnU1MVN1bTkwN3MyK1ViL2ExNTNuVldLZEJrUGc4Nm52aER6eEFib1grVWRHVlBnL2JkUmYrUlJveE4rL1FDd0ZIMVR2NnJhTGhjWi9HNUYxK0lzaDBvbThEcUJhY2dkZUEvdEozSUhieFhDQWd6V1NYemZLMHhnYWFMSVBmL3R6LzQ3cTdiYmpzQkRibWIyeEdxUHpySEN2RUY2NFZrY0E1RHJhSjQ3VVQ4UitHQ0l6alhqbXNzenBiSTVQL1BaUTJEdzVrMXV5QnNheDFYYjdlcldzSGJ2cTdiYlYyaFJsTjkwc1ppdmFydWNORC8xbzR4TnFOcHVLOTUvcGpWc3hrbmYxRWNsSGhqTW9ZaDFnT0szeUtlcHJ3UFQwVGYxUVV6MGUrTzByMVMraDluZjREOGY0S0UrUnJkbXhTMEFNRTVmb2dENXlQUVYxczJVaDlGN2xLZndlN1lEc0Q3NVdaYzlIQUNBKzVrYmJrai9ibURzUjRjR0NkdjFlbDYxWFo5U2VtWlN3RWI5WVhOblBrWGxiRm9PZ1prdXRGRm5pZ0lCWVBseU4rV3E3UzdjNTZ5TWp0WEFrRnhHSjkxakQ4RUJZTFEreHZmOUIwRUdTbWJLdzZnYy9oaGVBVmlDVTNWbDF6SXhoNkU1MVlSckxwOXhaWE4rNXZOY2djRzdOdHlRL3QyczJJM2lDcHNTNi9lNWFqdGRKZGZQbXQrZ2FydGpuVm5ZbEFqV1hKZ1dzbEU2NEFQQUNzVVV4UXVUUzVidWRWN2JrYjBtWUJ6T29sRHNWSk1UQUJpbExnb0tQZ2dzTWlhbVBBeFdudDZ3YjQ4RVlHMTJZdDhIR0RpVFdNcVV6OHZVMXdERzdNWndROWhSVExveGU3RUp0T3NCNThwMXNjNjY0OHloVXo2YkpsaFRCTUVHQUZpRHZEbGF0ZDNUbE5MZjFuc3BYdGh3QmpZZ1QxNDRqMkxHaXdndlhEZ1JBREI2K1I1ZzI3TW1wc3FVaDBISTUwYTRBVmdtbmQ2djU5azZneExQcDV5MCtYWjB3aS9TenRRWDREcWVqVElHdDRZYjhnWmNiRHA4ZGNZMzRwRXBEaXQxS1R4eXZVZzQ2aHJMeG5nUEZrT3dBUURXS0JmQVZtMzNXS09CQnhOc0FCNHFQODM3RnAvSEYvRy81ejJrYi9hU0FJQTU4dSszcjFYYitTMEN3WlNINGp6UHRSL0MxOEFTK1R5NTN2TlNEd3hZbUNMNk1qa3ZNR0ozbWR3d0N6am9ITGxaZVlwRDN0eDU1dUhwMHJ3MmRuTytDRFNkSzZSaVU2cTIyNHJVYyswa2JKeGdBd0Jzd0pWR0ErYzZHOTdMVXcvcTRSOHZKclFNRjY1N0FDYm9aTVVkdUhkMTRyMlhUMVhidmUyYituQ0F4dzVyY2NPVWg0UDQxenlqWEoyOHZqNmZnS1dJUmowVzh4cTVtYVBRS3dOekpwZ3psNXFaTWprdjg1MlZlRkN3cUR1Rkc5TC9iMGlmS25qZXVEekZvZXViV3ZMcy90NzFUWDB3MUlOZkpRWGxsS0JxdTJPZGVvcnhzVy9xVjFOZkJBRFlsQnh3U0NsdFYyMTM3aDc5enZKMHZ1MVlPNWc4RDA4QllQUXVWdng5ZjFxMVhTNCsvdXl0dExBM1VjeW0yQUx1S01MS0IvSDNqNnJ0Wm9YNEdqOHNqODhsWU5rVVExOXZOMnB3Z0dGN1VyWGRqb2JVNWNqbncyK0VhM2xHeWlqOHNzaUxpQTJGN1NnV1lIUHFxdTM2Mk16aDduTDM4VXF3WWI0b0tQK3FhSXBOeVo5cCtiTk5zS0VZN3dRYkFLQU1FVzdYWmVOMlgvcW0zaEpzQUFDQTVZbmlqY2Y1ZnR1eUx1eDUxWGJmb3JFVWNBOTVDbi9mMU52eGpMZEtLZjJoVnVIQkZDQUR5NmJZOTNxZXR6TTB3ampYY3oyWHhmbTRudTlsUm1HaGNFTzYwam5TSm1ZUjNzZW1xQ2tPTjhzejhCN3Jqak9mZ25JMkxYK0c1Yyt5L0pubVpCVGp0U0FZQUpRbGZzK2NPQzNYeW1IMjdVS1BEUUFBQmkwL0c0ejdiYjlKRnBlbjRYL05VeHlHZHVCUW9yNnBqNkt4UVE0NnZCWjB1QitmU2NDU1hWalFhOVUrY3hrWTRZYnJLYVl2aS9OeFBkY3hvN0J3dUNGOXY0blplUnRzWE40VS9WeTFuUStsK1o3bUxxYzZkLzRzQ3NwN0JlVnNTdTVXVmJYZGVZdzBmK1JFRk9ORjdvUTA5VVVBZ0JMMVRXMTYzM3hud3V3QUFMQjY4WnZrTjB0OUw1K3F0anNjNEhGRHNXS3F3MVpNbDFHM0FMQTVPa1RmVEFFdVF5S3NkRDFocFVMRWVhaW52ZzQzY0IwekN2Y0tOOHprb3ZHVTBrZHZoU0xrMGJaOTdzSS85WVc0cW05cUg5WS9pSUx5YjFGUURwdDZIK2JpK2E5dU5vdHlHVk51aE9VQUFBQUFnTG42cHY2UUcwdnBsbjR2YnpRcmcrV0x4b3k1YnVHWno2WTdVNWdITEkzbnk3ZjZ2ZkRqZy8rb3M3dVZ1c3d5T0E4M2NCMHpGZzhLTjZSL0w0YWNNSDNySFZHTTk3bHdQWGZsbi9wQzhMMHJYZksvNnBKZm5MelIrbUVLTHpRSHNHSml5RjRCaDhQL25jVVlaMU51QUFBQUFJQWI1UWZsMFMxZHAvVEZQWS9uZUZ0RE8zQW9YZC9VNS9IWmRPWmtBYXlkejk0Ym1PREZ3TGllcjdmbnQ5eG14ZnFyT2J1ZTY1ZlJlSEM0SWYyN1VYQm9ERzFSY3VINjUxekk3Z3VWcEV0KzZWNUhVZm1vUnpYbXdGV0VHdDRYY0RoODc0KytxWFhvQVFBQUFBQVdFcDNTMzFtMWhlWG5lRitydHJNdkN5c1F6enhPck8yTmZQNEF5Mlo2dzgzZWxIeHc4QVBYODgyT1NqNjRDYkQrTjNQOU1ocExDVGNrWTJoTFZjZm02UEhVRjJLcWRNa3Yya25mMUZYZjFLTytQaVBVa0tjQmZDN2djUGpaczc2cDNmZ0RBQUFBQVBmU04vVkJTdW1GMWJ1WFQ3cjR3bXIwVGIyZlV2cGllUUhXNW9PbHZwbmFMUVpFY2ZUTjh2U0duWklQY0t5cXR0dFdBM2tyMXkranNiUndRektHdG1UNVM3VzNRVG9kVndyS2Rja3ZUeGVoaHYweHY4ZzhOU1pQajRsUXc2TUNEb252bmNYN2NOUVRRd0FBQUFDQTFldWJPajg4ZjZ3QjJyMjhxZHBPOFFHc2htZmpBR3NTejUyRnltNm1JSnBCaU45MzNFeFlhVE1FNlc3aCttVk1saHB1bURHR3RsaHZJdVF3NnFMcUtZdUM4Z3NGNVVYS0QzVWV4K2ZqcUVYSGdhOHhQWWJ5L0JFam1RRUFBQUFBbHFKdjZtL1JBTzNNaWk3c2VXNVlsWi94RE95NG9XaGpuNTRPVUNCRnA3ZFRkTXBRK0YxM3MxcVQ2ZldxMnU1QUhkcXRYTGVNeWtyQ0Rja1kydEs5ajAxU2llQVJpUzc1dWFEOHlkVFhvakE1MVBBc1A5VEpEM2ZHL0VKenFDRUhxSXdBSzlZc1lITTA5WVVBQUFBQUFGWWpHcXU4dGJ3THl3MnJ2bFp0OTJwZ3h3MmwwMFVjWUgyRUcyNzN5TlF1QnNMMWZMdmNaRnBqMFRXSWRmNXo5Qy8wNFZ5M2pNckt3ZzNwK3pHME5nM0tremRKUHdzNUROK1ZnbkxweFBLOGpsREQrWmhmWko0R0k5UlF2SGRUQ05nQUFBQUFBSnZYTjNYdVlQbk1xYmlYdjZxMjA2QUdsdWZDV2dLc1I5U0lYVnJ1VytXcFhhWUxVVHJ2MGJ2NVZMWGQ5aEFPZEtoaWZUOU5mUjN1eUhYTHFLdzAzSkQrUDRZMmY4aTg4OVlwMGl6a2NHN2M3YkFvS0MvYVNkL1UxZGpIM1Y1NUQ3NHY0SENZYnpZNTVNRDZBQUFBQUFEckVrMS9ORUM3bjk5aldqY0F3TkFJYWQ3Tlh0VjJPbXhUckdpY2VlWU0zY25mQWc2ckVldjY5eGhmMndxY2FYakwyS3c4M0RBVGhaVXZ2SU9LVmNlNFd5R0h3dVZKRzNuaWhvTHlJblg1WVUzZjFQdGpmcEhlZzROeE1vWEpJUUFBQUFCQW1hNDBRUHZvRkMyc2p1bnJpbVFBZ0NGUnNIOTNMd1ZhS1p6citlNXl3R0YzS0FjN0JMR2VnZzEzNTNwbGROWVdia2d4Z2l4M000OENZTXIwWDhqQitTbExEcDNFZWZrY0V6Y294Nnc3L3M2WVU1QlhRZzNlZzJXYnZSOUhIYklCQUFBQUFJYWhiK3BYS2FYWFR0ZkNIa1dSekt1QkhUZVU1TG16QWJBKzBYaFB0L2U3eTRIV1B0ZGlET1dBbVpSanAzc2huNnEyT3h6UThSWXIxdkhUMU5kaEVYMVRtNXpFNkt3MTNEQ1RDNEJUU245NE94VnRkZ1B0UnFVQVZkdWQ1dEJKaEU4b3kyOWo3NDR2V0RNbzcweHJBQUFBQUFCSzB6ZDFmdDcwTkpxenNKaS9xclpUcUFBTEVnd0MyQmozTFl2N1hMV2RydHNVSlpxN21zSzNtRGN4Z1c5clNBZGRpcWhQdThqck9QVzFXSkRybEZIYVNMZ2gvVDh0OU5nbVp2SDJoQncySjY5N1huOWRSWXIwUjU1RTB6ZjFhSDlnWGdrMUNOYVVMMytYUHUyYittRHFDd0VBQUFBQWxLbHY2b3Zjbk1XRTkzdjUzZFIxV0pqaVdvQU5pQnFLTDlaK1lTL1ZaMUVnOTFPTHkwMWp2d29zTFNZKyszSjkycE1oSFhjaFhLZU0wc2JDRFNrU2ZyR0orYzdicTNoQ0RtdFV0ZDEraEJyMkp2T2loK01rUWcyanZqRzRjdE1vMUZDK1AySmF3OFhVRndJQUFBQUFLRjlNZVBkc2NIRjFkQUhkSHRxQnc3ckZWSHlGVVFDYmMyanQ3MDE5RnNYb20vcFVPUDNlWm9HbGM1TWM1b3VtdThkcUpCK2tpK3NVUm1lajRZYVo2RFQ5ekJTSFFYQVR2VUpWMisza2plbVUwdnZSdnNqaHlqZnJqL3VtM2gvemkzVFRPQ2l6OTZRRUxnQUFBQUF3S1BGczhJV3p0ckRjQmZUdnF1MWVEZXk0WVMxeStDZWV0WnFLZnpNRlVNQks5VTE5YkhyRGc4M3FzNzY1OTJQRDFLUThUQjJUSFBLMVBPcWFzN3ZLbjJseHovNVZmZHFEdVQ0WnJWOUxlV0Y5VStkUnFsdFJOTzlEcTN6NUpub3Z1dGo3NG4yZ1NHaWU2cEpmcEJ5NjJvM1BxTkdLRzJpaG11RjROdmIzSkFBQUFBQXdicm03WU5WMmoxTktGMUcwejkzOVZiV2RaM1FRWXFMSkI4OWFBWXFTdzZ4L09TVVA5aWp1L1diL1BXOXpNV3ZmMU4rRys1SVlraHhXcXRydTBGU3NCOHZYOHZ1cTdkNUhMZHJSbEs3bHF1ME9ZcXFQMy83TDh5WENoREJLeFlRYlp2SW1YTlYyUjFIbzdjT3NmRUlPRDFTMVhkNW9lem5vRnpGZXI4ZCtFeURVTURnK2F3RUFBQUNBMFloQ2p0ejg3RlNuOVlYbFozUzVPZFAyd0k0YmxpSUNEVWVlczk2THlRM0F5dlZOL2FGcXV6UDNlRXYzSnY5ZENUdDhUQ2tkNS9VZXowdWtRSWRxaTVicTBaeHIrU1N1NWNIZnAxVnR0NU5TMm84LzliK3JjempXRndhcHhIQkRNc1ZocUlRY0ZoU3AxamVET3VqcEdQMzdPRzRraGNpR280c0pJcm92QUFBQUFJdmFqYjFJbU1sZDhrLzdwcjZ3SXBTaWIrcGR6MDN1NVVuVmRuMUs2YWxybWpHTDUxcXY0czkwaGdjYVE5SGNST1RHb0x0VFh3UytrNy9yUHd6c21YR3V1L2k3Z09NWXN4enllM21sUUhxbWk1cVFYSU4zSHJWNGNDOHh2ZUhBZmRoSzdVWDk1WS8vakxPNGxrL2pXaTdpT3lEdVVmSTkrbTc4cVQ5YnI4N1VCc2F1eUhERFRFeHhPSXdiTFIrQXd6QUxPU2pFdllaTytVVTd5dzlReHZ3Q3E3YmJpczlVNCtLRzQ0Vk5aZ0FBQU9BQm51dVV5VHp4d1B4dDM5VENMeFFodnhkamdzTW5aMlJoZjFkdE4vcHAxT24vM2ZwemdmdDJGTk13RHU1VjF1ZmpWRjdvQ0dnRXlqenY0ejcrdHlGMDZzL2h5NnJ0M3FXVWZpL2djS2FtdmxxSVBxZGcraVpuVTErOEZicUltcDNqQWRiVTVYcTN6d1VjeDlUTTl2WCthUVN3d0xYOEpkNXZkN1VsdkRJb21vOHpla1dIRzFMYzZNWVVCOTFhaGlWLzJYMnQyazdJSWVpVVg3UjhRN2N6NXZkcGhCcE8zWWdPeXJ1K3FRK212Z2dBQUFBQXJOU2JxdTB1ZEh1akZMblJTOVYyanpYcHVaZGM3UGlxYitwWEF6ejJXMVZ0ZCs0WkJ5ekZrV1dFVWZpcmFydG5RK2pHbjU5NVI0ZHYzK1BESVhTNE9zOGp2UFpuMVhhWE9iQTdsRnFsL0hsVHRkMko4TjFnUFBHYmVyUk9UT05oQ240WnltdU16a0dQb3dpWjRaaUZITTZqdUhweTh1dU9EZGZQZ2czRnlUOFU4Zy8rd2Z4WXVJK3E3ZktEeWE4MkN3WWpoOEllQ3pZQUFBQUFzQ2JiRnBxUzVQMzZ2Ryt2dS9pOXZNeUJwYkU5a3hOc2dLWDVZbG80ak1xUXZ1OUhHYjZFQjhvMVpJTnFOTkEzOVg3VVdnR2JjUm5YSVl6ZVlNSU42ZnZOek5jRkhBNkxtWVVjdnNVRWcwbFFWRjYwUEo1NWE4eEp4cXJ0OXF1MjY2V21CeVdIYlVZOVJRUUFBQUFBNEM1aUFzRWZGbXRoVCtLWjNDaWV4K24wREV0bGFnT3dFWDFUWDZqMWdybUdHRW9XVm9MTmNmMHhHWU1LTjh6azhjaDlVMWNwcGJNeWpvZ0Y1TlRwNTdHSEhLcTJPMUJVWHF3OG1xa2E4NWoxZkczbGF5eVBvQzdnY0xpYmQvRytORFlNQUFBQUFDRDBUWjBMY1o5YWozdkp6K05NQ0FabXZzUm5Lc0JHUkkzR082c1B3eFpUb040NmpiQjJiMDFoWTBvR0dXNlk2WnM2ZCtwNFp0elJJTTFDRG4zdUxqK1dGMVcxM2FzSU5meFp3T0h3dlM2bDlIak1vNW55bU9rWXpmdzVyakhLTjN0ZmVzQUVBQUFBQURCSDd2UWJUYzg2NjdPd1A2dTIrekN3WXdaV3c3TW9ZT1BpdWZoSFp3S0dyVy9xUTljeXJOVlpYSGN3R1lNT042Ui92eXpQKzZiZWtnZ2N0UGRERHpsYzZaVC9Wd0dIdy9keStPbHAzOVE3ZlZOL0crdmFWRzJYdXh4OE5acDVNUEw3OHRuWTM1Y0FBQUFBQU11UzkxTjErNzJYbDFYYlhlUUdTUU04ZG1BNThtUjdRU2VnQ0gxVHY4cEZtczRHREZ0Y3kxK2NSbGk1TDlFRUhpWmw4T0dHbVVnbVBkYTFaZEJtSVlmam9id0luZktMOXlLSG4zSlhwN0crd0N2VFF2WUtPQnp1NW0yOEw4K3RGd0FBQUFEQTNVVzMzOThzMmNLZTVBWkp1Vm5Yd0k0YmVMZ3ZZNTVzRHd4VEZHa3Fpb2JoMjRubW5zQnFYTVoxQnBNem1uQkQrdmZtOTF0MGJYbm1pM1BROWlMa2NGcHlGeG1kOG92Mk9vK283cHY2ZEt3dk1JSTFGNmFGREVvTzN6MDJKZ3dBQUFBQTRQNmkrL2hqendMdjVYUFZkZ2NEUEc3Zy9oUkRBVVhxbTNwYkExc1l0bHlybVZMYTl0c01WbVlucmpPWW5GR0ZHMlp5Tit6Y0ZUdDN4eTdqaUxpbjU5RkY1cnlra0VQVmR2czY1UmZySkVJTmc1bitjUjlWMngxRnNPYko4STUra3ZLUHVHYzVmT2VHRXdBQUFBRGc0YUxoV1g1MmRHWTVGL1puMVhZZkJuYk13UDA4OVd3S0tGazBzSFUvQndNbTRBQXJjUm4zOGhlV2w2a2FaYmhoSm5mSHpvWE9rcjZEVjBmSTRkc214K1ZXYmJjYm9ZYjM0MW5hMFpoMXhCLzFTTldxN2JiemRaQlMrcjJBdytGdS9zZ1AySExvem5vQkFBQUFBQ3hYMzlTN21wM2R5OHQ0N2xic0JIWGd3UlJEQVlNUTkzUHZuQzBZTGdFSFdLcDhIVzI3bDJmcVJoMXVtSW1rN3pOZm9JUDNLTWJsOW5sNndycGVUQTVVUkVINXAvRXU3V0JOcGlOK1RHdjRPNjREeXRmRkZKRWo1d29BQUFBQVlIVnlzN09VMGd0THZMQkgwVnhzZDJESERkenNNcHJDS1lZQ0JxTnY2b09VMG0vT0dBelhsZWw2bWxERC9YWFJSTmYwTlNadkV1R0c5TzhYNkhsOGdiNHU0SEI0dVBjUmNsaFo0WER1VmxPMVhlNjIvbGxCZVpGZVQ2RWpmcndQVFdzWWp2OENOMU5mQ0FBQUFBQ0FkZW1iK2pRWDgycDBkaStmcXJZN0hPQnhBejlUREFVTVZ0L1VIOXpQd2ZCRnZZeHBMTEM0ZCtyTjRQOG1FMjZZNlp2Nk9IZlRUaW1kbEhGRVBORHZFWEw0c016UnVWWGJIZWR1TlNtbDJna3F6cnZvaUg4ODloZGF0ZDJyZUI4SzF3ekRKQUkzQUFBQUFBQWx1dElwOUtNVHRMQTNWZHVkRHV5WWdlKzlWUXdGRE4yVit6bUYwVEJnTVkzRmREMjR1eGR4M1FCaGN1R0dtYjZwOXlQeGF4VFNPTHlNMGJublZkdHQzL2NWVlcyM244TVNLYVc5cVM5b2dUNUdxR0VTWCtReGxlU3ZBZzZGMjUxTkpYQURBQUFBQUZDNnZxbHo0NkEvbktpRlBjK1RwSmZaVEF4WWk5emgvR25mMUNhd0FLTVJkU0ZQVFhHQTRjclQ5YUlCdGRwTXVGNitQaDdITkVyZ2lzbUdHOUwvRTcrNWU4RXpOOFNqa1NjdC9CMmJyM2Z1VEpIL3ZSRnFlRC8xQlN6UTdFdjgxVlJlY0hSSCtyMkFRK0ZtK1h2aldkL1V1OVlKQUFBQUFLQWNmVk1meGZNL0Z2TW9tb25aOTRaaGVCdFR4UytjTDJCczhtZGJUSEY0N2VUQ2NFVnQ1bTlPSWZ6a2RiNCtjZzJ6cFlHZlRUcmNNTk0zOWJrYjR0SEptNitmYzJBaFQyTzQ3c1hsN2pNNUNKSC92Vk5mc0FMTkNzY245U1Vld1libkJSd0tOM3NkbThYbjFna0FBQUFBb0R6eC9DOTNDdjNpOUN6c1U5VjJ1c0JEdWJxWUt1NDZCVWF2YityanVLYzdjYlpobVBxbS91QTZoditjeEwzOHNTV0I2d2szWE9HR2VMVGVSOGpodnkrRUNEWGtvdVN2RVlTZ0xKTXNISy9hN2tpd29YZ2YzV0FDQUFBQUFBeEgzOVRiS2FWM1R0bkMza1JESnFBY3M0bjNPODRKTURWOVUrZkdwby9qc3hBWUlOY3hFemU3bDcrMlVUZndmNzlhaTUvRkI4aCtGTC9YcFIwZjk3Wlh0ZDFlVEFRUWFDalR5VlMvd0t1Mnk1dVF2eGR3S015WFB6ZTJqUUlEQUFBQUFCaWV2cWtQb2xEL0w2ZHZJYzlqQXJyOWNkaXNzNVRTSzljaE1IWHhPZmhQd0NzYW5PNU5mVTFnYUdiWGNXNU1uRkk2Vlp2SkJPUlF3NjU3ZVZpTXlRMDNpSTRIajQyckhSM0JodkxNUnFkT09abDRVTUF4TU45c2tvaWJUQUFBQUFDQWdlcWIra05LNldrMHMrSHU4bk8xcjFYYjdWb3pXTHMvNGhtcVlpaUFIK1Q2a3Z3Wm1aL25XeHNZbm54dmsyc3o0em8rY1FvWm9ZK3pxV3Z1NVdGeHdnMjNpQy9TUEs3Mm1jMU9XTHBMbzFQL3MxM0ljZkIvSjdGaGZHeE5BQUFBQUFDR3IyL3FpOXpNSnJxZ3M1aFBWZHNkV2pOWXVkelo5V2s4b3pxeTNBQTN5OC96b3pqNmFYeUdBZ1B6UTFoSmZTWkQ5enJ1NVUxZWd3Y1FicmlqdnFuUFk3TlQ0aGVXNDVsdStCVHFTNFJ1cGp4SkJBQUFBQUJndEhJWDlKVFNXMmQ0WWVESmtsQUFBQXd4U1VSQlZHK3F0anNkMkRIREVPUm5VeStpQ0NwM2RyMXcxZ0FXRXlIV1dSZjQzeFJJdy9CRVdDblhaejZPcnZjd0ZMTXBEWnJvd3BMOGFpRVhFeDgreDFYYkhhU1UvaHpTc1VNaFh2c1NwMkI1NDlpREdRQUFBQUNBa2V1YitqQUs5VDg1MXd0NVhyVmRibHkxdmFZR1ZwcGtNVlo1Z3N4QmJyTG9EQU1zVjkvVUgxSkt1VUE2VlcyWFE2MjVSdVdKWllaaGlOOFpyOUsvMS9CV1hNTXZuVDRLaysvbjl3V1RZVFdFRys0cFJrQWVWVzJYdnp6M0J2a2lZTDFPZE1LbllONmZBQUFBQUFBVGs1dmRWRzJYdTRMbVlvUkh6ditkNWJYNldyWGRiMUU4dURLNThMdHF1NCtLbVJpQjNFSDhNT29NQUZpVGFHNjRuZjR0a3M3LzgxQ2RGd1hSSFBZV2M0SU9CL0huOXh1YmtDZEFIcTBwNkErVEp0endRRkVNdTErMVhlNm9VQS82eGNCcWRDbWxYVi9xRk1yN0V3QUFBQUJnd21KL2VDdW1PRHozWGxqSVgxWGJ2ZXViK21DVi81QytxVjg1UHd6UWx5aWcvZUE1RkVBWm9ydjJmdnpOcGpvY3VzZGdRODc2cGhadVdFRGNVeDNHbjhBUzYzQVNBV1hUR1dETmhCdVdwRy9xblVnSG5nbzV3RDh1bzJqY0tGVks1UDBKQUFBQUFNQi8rcWJlcmRvdUYrbi9hVlVXOG5zdURNelBTbGY1RDhubkovMWJ3SFFZQllsUFZ2blBnd1hsNTA0ZkZENEJERXRNZGRpZEhYUVVTdSs3MTJBTlhnczJQTnljd05Kc3NvTnJtUHZJOS9SNXl0cXhlM3JZUE9HR0pZcDA0Q3prWUh3dFU3YnlNY1R3QUcvN3BqNjBnQUFBQUFBQVhOVTM5VkhWZHZuNXhybm5mQXVwcTdiNzV6bnBxb3RBWW4vL3B6MytlRDY3RXdXSzIvR25Dek9ya0tlQ0gwZlJrNGtNQUNNUzl6SGYzV3ZFUGNhc2VGcXpXeDdpTEJmZWE4SzVPajlPZGtpdVlhNzNKWUlNSHdRWm9FekNEU3R3Wlh6dFRreHlzUG5KVkNnYXAyVGRxanRId1liNXdUWGZhWWtIeGEwOEZKelAreG5nZW1jS2x3Qy9pd0JZaGloczJJb0pBVzhzNnAwOWlvTHYzU1g5OXkwa25zK2UzblgvSkRvemI4Znh6b0lSTzU3ckVyN0VKSVpURGQzVzR0UnZlcUJVY1k5eEZILy9pWUxwVjNFdjhjbzlCS0dMb1BScDNFZllxOXF3RzY3aDdTdlg3NjVyZUxRK3h2VW94QUFEVS9WOTc1eXRtSkFERTNEU04vVytFMzEvVmR2WnRGdWRQRFpzVi9xZEtmREE5U2Y1K3QvV1BXdVlxcmJMRDhQM3ByNE9WMXoyVGIxVnpOR3dNVlhiNWZ2dTk4N0FkNTdha0tScXUveGc0dmZKTDhUM1B2Wk4vYXFrQTRKMXFOcnV3dGg1V01oZ0dvSkVWM2pQV2I3M3pMN242c1h2c0NQdnZ6dDUxemYxd1FDTzgxNnVUSWZZbnZQbi9tTTRMcThVSFo1SDRhRTk1QTJLYSt2QzV5d3NSSTFHNGFKV2JQZEtnRkxIK0dIN0V2Y04vLzE1TGpGdVAxekR1KzczaTNUMXVzejM5Qm9Gd29nSU42eVJJaFJHcUl1aWNSdCtEeVRjc0RLdis2WStIdWxyZzduaUljRFJ4RHVFNU03TmgzNjhEcC8zOHo5eU40a2o3MmV1aW12aklFYm9UblV6dFl2UGV0MFQrVTg4Yk1oaHo1Y1RYeFhYQjVQbjh3QnVkUm5kcUErSFZvd1JqUjJtZkIrY3JweS9BM3Z6NnhmZFBXZWRQYmNWcWYyamkvZmtrZmZremE2RUk5S1ZDUmV6b0VUeW5PamVabUdGaS9qNzUzOFgvaHFlcXUxMjR6N2V0UUR6ZllrcFNiNXpSK1NhYVZLQ2s2dlR4UVQ1aXgvL2hCVzRqMnV1NFMyL0ZlL2x5dy9YWlg0Ky9zMTlQVXlUY01NR0NEa3dBanJoTDVsd3c5THBVQW9BQUFBQUFFekNsYUtxbWF0Qmlwdit0YXVXL1p4cVZwdzB6NCtOUE02ajBEQXBZQUtBeGZ3UW9FeFhpcXRuYnJvSDJGbERnN0ZaRVBFbTM2NzU5OHo3MTg4RmZCaWJDSG5Pekx0bWY3emYvL0gvdDRwQTFFM1g3cnhyOCtLSCszL1hLbkJ2d2cwYkpPVEFRT21FdndMQ0RVdVRiNnkzM1J3REFBQUFBQUFBQUFBQURJdHdRd0dFSEJpSWs3NnA5NTJzMVJCdVdJcmYrcWIrTUlMWEFRQUFBQUFBQUFBQUFEQTV3ZzBGcWRvdWQ4UGZtL282VUp5enZxbDNuWmJWRW01NEVNRWJBQUFBQUFBQUFBQUFnSUg3eFFrc1J5N083WnU2eW9XNlUxOExpdkFscGZSWXNJR0NkZkVlRld3QUFBQUFBQUFBQUFBQUdEaVRHd3Bta2dNYmNwbFMydTJiK3R3SldCK1RHeGJpUFFvQUFBQUFBQUFBQUFBd01zSU5BeURrd0JxOTdwdjYySUt2bjNERG5YbVBBZ0FBQUFBQUFBQUFBSXlRY01PQUNEbXdRaWQ5VSs5YjRNMFJicmpWeDc2cFh4VitqQUFBQUFBQUFBQUFBQURjMHk4V2JqaHk4WG5mMUZVdVJKLzZXckEwWFVycHNXQURCYnVNOTZoZ0F3QUFBQUFBQUFBQUFNQ0ltZHd3WUNZNThBQzVZSHluYitvTGkxZ0dreHZtZXRFMzlXbUJ4d1VBQUFBQUFBQUFBQURBa2drM2pJQ1FBd3RTTUY0ZzRZYnZ2T3ViK3FDZzR3RUFBQUFBQUFBQUFBQmd4WVFiUmtUSWdWdjgwVGYxa1VVcWszRERQN3FVMG03ZjFOOEtPQllBQUFBQUFBQUFBQUFBMWtpNFlZU3F0c3Nkei8rYytqcnduNU8rcWZjdFI5a21IbTY0akZERGVRSEhBZ0FBQUFBQUFBQUFBTUFHQ0RlTVdOVjJ1YUQ5L2RUWFljSjB3UitRQ1ljYlh2ZE5mVnpBY1FBQUFBQUFBQUFBQUFDd1FjSU5FeURrTURtNjRBL1FCTU1OSm9vQUFBQUFBQUFBQUFBQThCL2hoZ2tSY3BnRVhmQUhha0xoQmhORkFBQUFBQUFBQUFBQUFQaUpjTU1FVlczM0txV1VDK0FmVFgwdFJ1UmQzOVFIVTErRUladEF1TUZFRVFBQUFBQUFBQUFBQUFDdTlhdWxtWjYrcVQra2xMYXF0dHRKS1owS09RemF4NzZwWDAxOUVTaWVpU0lBQUFBQUFBQUFBQUFBM0VpNFljS2lnN3FRd3pCMTBRWC8yOVFYZ3FLZDlFMjk3eFFCQUFBQUFBQUFBQUFBY0J2aEJxNkdITFlpNUZCYmxXSmRScWpoZk9vTFFkR0Vid0FBQUFBQUFBQUFBQUJZaUhBRC80bEM1QjBoaDJLOTdwdjZlT3FMUU5GeStHYW5iK29McHdrQUFBQUFBQUFBQUFDQVJRZzM4Sk1mUWc2NW1QNmxWZHFvazc2cDl5ZjgraG1HRjMxVG56cFhBQUFBQUFBQUFBQUFBTnlIY0FQWGlwRERxL3ovcjlvdWh4ejJyTlphZFNtbDNUZ1BVQ29UUlFBQUFBQUFBQUFBQUFCNHNLcnZlNnZJblZWdGQ1aFNlbVBGVnVveXBiUXQxREF0VmR2bHFRZlBCL1NpVFJRQkFBQUFBQUFBQUFBQVlHbUVHN2lYcXUxeVVmTjdxN2Qwei9xbVBoL1phK0lPQmhSdU1GRUVBQUFBQUFBQUFBQUFnS1VUYnVCQnFyYmJTU25sb3V4SFZ2SkJYdmROZlR6ZzQrZUJCaEJ1dUl4UWcvQU5BQUFBQUFBQUFBQUFBRXYzcXlYbElhTFFlVXZJNGQ1TytxYmVIK2l4TXgwditxWStkYjRCQUFBQUFBQUFBQUFBV0JYaEJwYmlTc2hoSzBJT3RaVzlVUmRkOEw4VmZJeGdvZ2dBQUFBQUFBQUFBQUFBYXlIY3dGSkZzWDZlNHBDcXRzdEYwWHRXK0R1WEVXbzRMK2lZNEVjbWlnQUFBQUFBQUFBQUFBQ3dWbFhmOTFhY2xhcmE3aWlsOUx0VlRyLzFUZjJoZ09PZ1FGWGI1WWtuenpkOFpCLzdwbjVWNUFJQkFBQUFBQUFBQUFBQU1HcS9PTDJzV3QvVUIzMVRWeW1sMXhOZDdMZjU5UXMyVUxBdXBmUllzQUVBQUFBQUFBQUFBQUNBVFRHNWdiV3IybTRucFpTNzFEOGErZXFmOUUyOVg4QnhNQUFibXR4d21WTGE2WnY2d25zRUFBQUFBQUFBQUFBQWdFMzYxZXF6Ym4xVG42ZVV0cXEyMjRxUVF6MnlrNUM3NE8vMlRmMnRnR09CZVM3alBYcHVkUUFBQUFBQUFBQUFBQUFvZ1hBREd4UEYvM21LUSs1YWY1eFMyaHY0MlZBd3poQTg4eDRGQUFBQUFBQUFBQUFBb0RSVjMvZE9Dc1dvMnU0Z3BmVG5BTS9JNjc2cGp3czREZ2FxYXJzOHhlVDVDby9lZXhRQUFBQUFBQUFBQUFDQVlnazNVS1NxN1haVFNoOVNTbzhLUDBNbmZWUHZGM0FjRE53S3d3MUNEUUFBQUFBQUFBQUFBQUFVNzFlbmlCTDFUWjBMdmJlcXR0dU9rRU5kMkdGMmZWUHZGSEFjY0IyaEJnQUFBQUFBQUFBQUFBQUdRN2lCb3ZWTmZaRlMycW5hYml1bGRKUlMydHZ3OFg3Sng5TTM5YmZDbDQ3cEVtb0FBQUFBQUFBQUFBQUFZSENxdnUrZE5RYWxhcnVEbE5LZmF6N215NVRTYnQvVTU5NHRyRUxWZG5sYXlmTUgvRmNMTlFBQUFBQUFBQUFBQUFBd1dNSU5ERmJWZGpzcHBWd1EvbWpGcjBIUk9DdjNnSENEOXljQUFBQUFBQUFBQUFBQWcvZXJVOGhReFJTRnJhcnR0aUxrVUMvNXBaejBUYjN2RFVLaGhCb0FBQUFBQUFBQUFBQUFHQTNoQmdhdmIrcHZLYVU4eFNGM3Y4L0YzbnNQZkUxZFNtazMvbnVoSkpjcHBWZDlVNTg2S3dBQUFBQUFBQUFBQUFDTVNkWDN2UlBLNkZSdGx5Y3VIS1dVSGkzdzJpNGoxSER1SGNHNlZXMlhBd3ZQci9uSGVtOENBQUFBQUFBQUFBQUFNR3JDRFl4YTFYWjVva09lNWxEZjhqcGY2SWJQSmwwVGJqaUxTUTJtaUFBQUFBQUFBQUFBQUFBd2FyODZ2WXhaZExyUEFZZGNQSjVERG5zL3ZOdy8rcVkrOGlhZ01ONlhBQUFBQUFBQUFBQUFBRXlLeVExTVR0VjIrem53MERmMWdiTlBLYXEyTzh4VFJ2cW12bkJTQUFBQUFBQUFBQUFBQUppVWxOTC9BUFNTbXVoUzR4QTdBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMSIsIkZJRE9fMl8xX1BSRSJdLCJleHRlbnNpb25zIjpbImNyZWRCbG9iIiwiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsImxhcmdlQmxvYktleSIsIm1pblBpbkxlbmd0aCJdLCJhYWd1aWQiOiI2OTk5MTgwZDYzMGM0NDJkYjhmNzQyNGI5MGE0M2ZhZSIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImxhcmdlQmxvYnMiOnRydWUsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjp0cnVlLCJhbHdheXNVdiI6ZmFsc2V9LCJtYXhNc2dTaXplIjoyMDQ4LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjEwLCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjk2LCJ0cmFuc3BvcnRzIjpbInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5IjoxMDI0LCJtaW5QSU5MZW5ndGgiOjYsIm1heENyZWRCbG9iTGVuZ3RoIjozMiwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjQsInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjoxMjh9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wNy0yOSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ikh5cGVyIEZJRE8gUHJvIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNTA3MjkwMDEiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTA3LTI5IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjF9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDgtMTkifSx7ImFhZ3VpZCI6IjY2MmVmNDhhLTk1ZTItNGFhYS1hNmMxLTViOWM0MDM3NTgyNCIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiNjYyZWY0OGEtOTVlMi00YWFhLWE2YzEtNWI5YzQwMzc1ODI0IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ill1YmlLZXkgNSBTZXJpZXMgd2l0aCBORkMgLSBFbmhhbmNlZCBQSU4ifSwiZGVzY3JpcHRpb24iOiJZdWJpS2V5IDUgU2VyaWVzIHdpdGggTkZDIC0gRW5oYW5jZWQgUElOIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NiwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9LHsibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyIsImVkMjU1MTlfZWRkc2Ffc2hhNTEyX3JhdyIsInNlY3AzODRyMV9lY2RzYV9zaGEzODRfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NiwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo2LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlEU2pDQ0FqS2dBd0lCQWdJVVIzOG1xMjZTZjJzelZWMkJkRzZXRU43a3VXVXdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFSWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFOWTBXYjlvUG9Sb0tvUXlXUGFKcHoxMXZyV1RnNnpUdG1OajJWb0tSbnl2S0dScXB6YjgzdzVsNllBOTZVWWtZQkRRUDBpbE8yRFBlNndXcVZSNXpEZlJ6ZGNIOGJoK0w3ZEdHdmFlNmhSVFpoa0ZrQ3BYRHM0SGNja25yRGY4RkNsSjdIZTM5SmY0Mi9HMVFtMnp6OVdXbXJQWHRnaUsveDA1R2pzUWZHdURHMXpmNVFUVVVpZThsd3ltSzNUZmRPdk5lZUpBQVBlMnBuN0l0ZlJiK3JWck5XaUR6bFJuMnZObloyd1BvNHdIL1dKNmRoWFpHK3JNV1QrYTZCb2NnMVVmSXc2a2R1bkc0YlRwWnpzdmFjRll5UjBtcGYrRGVPbnBTV0FteXdKV0h2VGxmMllYeEZ5ZVhjVEFDZFFsY01OR0oyVmhaUTQ4eHRQNS9SQlAvOGtDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNoeTQyb2tpcWNUUzFpcWEvSFJXamtCbjRIL01COEdBMVVkSXdRWU1CYUFGT3EzUXBDZURIdGtldHRVZkFPNmZFNmYyS0ZoTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBbitSSElQYnRNRUROZFQxZzhIL1JpdEFrVWRMZ0F0MXRXR1dubGo5a25idjQvNEdsWDdDOXA0NWVmUE85L2FaTDZPVjFYUktCaTZLbXRCVzVLN251WUVuTXgvNUJxQlNiTFQ3cmhkdUM0OVRCZU1iOVBIZFhzVGxTVk5ZZWZyMWRHaWRyNGoweFZCUUxiMXJrbkRBYmRXRHpLZnZuYXlLTzhGcndlN0h4ODQzTUcvckorYzBYcnVVdmJmVlRDSExpSVdoTTdvTkRoTDh4b2I2eFVvOUtMS2NTTCtJdFlzTzMvOVdiOFE5R2pzcUw0RlhzRGNHMVNhWWg3S3BmdU1tT2l4cXpKWk8ybklpY1BZUmcxSTJTdWlVZllPNzB0bWRIY2JsK2tTUW1TWXQ3cnE0dmlJTGcyR3gzajlySVR1V1RqYmFVYVNTUXhnT21NU0h1eXpNQUMiLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVRuYmJHSVIyTkh2enFJS0ZBZVF3RzFYQmlzMHdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFRWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPc1hqM2swNEJhbjRUWWR0WktxRC9PUEp4eUR5YVBtQ0JVRlVpYVpJZ1R0ZVpuajNYMjVEaGdwWlpYc0M0RDB5ZEljcmxBNndOVUluT1JML0w5ekJiVEVJTUFWTUdvNmc3VUtBbWIyTUY2QUhibmhZSmQ5ZWlrdXBWTldTaEhOWU5jNEdCZE8xWU42QWZVcXZKaEhiZTNWNFNOTVBtQlJFS0pQVno3VGh3Z21nZ1RlOFdzMkswL3dzcXYyd1NFN3BiQ0JzVVpoSVg1MWJaTTNwcUR3SlBUbVJGRXZ0MC82dEc1ZU84RjNqMTRPWHFmRWhtam4xVnZ4S0RZUU9MWkF4Q3d3Z0MwUDRDZGZXdjN5OFBTUjhJMzU0aE8xWStHek5qdklxWDM4TktMeXd1SVlIRmVyT3hObHhFTUJ2RmhZQnVSdVlBa2tnVWFQcU42VUJoc0lMcnNDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNDb1JIaGl5Tm5iblhSV0lMNlpCWG9CWDlZVE1COEdBMVVkSXdRWU1CYUFGQ0FvVUNFYnBGcGI2RlBMblozRjVQeHNMM29mTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFDUUZhZkpJMS81V2c5Q0VFaW1FMVJQNTRSZ1F3VE5UT09Rc0xBQ1RlK3JJdGxGUXpDOVpEaHJWODI4eVg3anp5K0FBc3AzaXpLN1QxdGgyZGw3bSt0dTBzdzJQYS9vbGMwMm50NlB5SXczNDhnYUh6aEkxKzBLRTQ1cXh2RkRlTDJsTXhiUGZDWXZ5RUVhWXpqaVFFTFU1OTUxcFhHV3lLTWEvNGZMdE8rWktPWGhNdVZlcTRyWERQSTU0VzZKSE9pQWFpS2Rpdys1ZTNjMmt0L2pGSVF0TTZ2TVhnOUxORnpkakVUTnQyMFZYOVFldlJwRlpmdWNNRzl3Q2FRRG9GbFB6cFRNSktoUGV2L2ltSm1aWWhLZnIwbExjZW10cWpJeExBb3FaZE9ZZkhCZzYrdkFjZFBJL2lhdUdwVUF2N1grVUtObUR3aloyQmFINHNMd2hCMm0iLCJNSUlEUGpDQ0FpYWdBd0lCQWdJVVh6ZWlFREpFT1R0MTRGNW4wbzZaZi9iQndpVXdEUVlKS29aSWh2Y05BUUVOQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU1aNi9UeE04cklUK0Vhb1B2Rzgxb250TU9vLzJtUTJSQndKSFMwUVpjeFZhTlh2bDEyTFVoQlo1TG1pQlNjSVpkMVJueDFvZDU4NWgrL2RoSzdoRW03SkFBTGtLS3RzMWZPNTNLR05MWnVqejVoM3dHbmNyNGh5S0YwRzc0Yi9VM0s5aEU1bUdORDZ6cVljaENSQUhmcllNWVJERjRZTDBYNEQ1bkdkeHZwcEF5Nm5rRW10V21NbndPM2kwVEF1Y3NyYkU0ODVIdkdNNHIwVnBnVmRKcHZnUWppVEpDVElxK0QzNWh3dFQ4UURJdituR3ZwY3lpNXdjSWZDa3p5Q2ltSnVraFl5NktvcU5NS1FFZHBOaVNPdld5RE1UTXQxYndDdkV6cHc5MXUrbXNVdDRyajBlZm5POXMwWk93ZHdNUkRuSDR4Z1VsNVpMd3JyUGtmQzEvMENBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUI4R0ExVWRJd1FZTUJhQUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUU13RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCRFFVQUE0SUJBUUMzSVcvc2dCOXBaOGFwSk5qeHVHb1grRmtJTGtzMHdNTnJkWEwvY29VdnNyaHpzdmw2bWVQTXJiR0pCeUoxWG5xdUI1c2djUkVORnhkUUZtYTNtaW84VXBmMW93TTFacmVYckowbUFERzJCcGxxYkpueGl5WWErUjExcmVJRlRXZUloTU5jWktzRFpyRkF5UHVGakNXU1F2Sm1OV2U5bUZSWUZnTmhYSktrWEliNUgxWGdFRGx3aWVkWVJNN1ZvbEJObGxkNnBSRktsWDh1c3Q2T1RNT2VBRGwyeE5GMG0xTFRoU2RldVh2RHlDMWc5K0lMZnozUzZPSVlnYzNpcm9SY0ZEMzU0ZzdyS2Z1NjdxRkF3OWdDNHlpMHhCVFByWTk1cmg0L0hxYVVZQ0EvTDhsZFJrNkg3WGszNUQrV1ZwbXEyU2gveFQ1SGlGdWhmNHdKYjBiSyIsIk1JSURTRENDQWpDZ0F3SUJBZ0lVVWNtTVh6UklGT2dHVEswVGIzZ0V1Wllaa0JJd0RRWUpLb1pJaHZjTkFRRUxCUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JCSURFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURtNTU1YldZOVdXK3RPWTBySVdIbGRoK2FOYW5vQ1pDRmg3R2szWVpyUW1QVXcwaGtTRzZxWUhRdFArZlp5UzMzVkVydmcrQlFxbm11bWdOaGZ4RnJrd0VaRUxlaWRCY0M4QzRBZzRucXFpUFdwenN2STE3TmN4WWxJbkxOTEZjWlkvK2dPaU42Wk9UaWhPNS92QlpNYmo5cmlhQWNxbGlZbU5HSlBnVGNNR2FFQXlNekVNTnkybm02RXArcGpQNWFGNmdpMjF0L1VRRnN1SjFqMlJqL3luTS9TZFJ0K2VjYWw1T1lvdHhIa0ZiTDl2dnYyQTJPdjVJVFpDbHc0Yk9TOW5weXBRaW1PWjVRQVl5dG1ZYVFwV2wvcE1ZejZ6U2o4UnFrVkRORUpHcU5mVEtBMml2TFl3WDZsU3R0TVBhcGcwSjg0bDlYMHZvVk4vRnBTNFZDVkFnTUJBQUdqWmpCa01CMEdBMVVkRGdRV0JCUWdLRkFoRzZSYVcraFR5NTJkeGVUOGJDOTZIekFmQmdOVkhTTUVHREFXZ0JUUzd1OWFJbzA2YlZ3amx6M3loZFVtOFNWN2tqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQTRHQTFVZER3RUIvd1FFQXdJQmhqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFZTXpnTHJKTElyME9vdlFuQVpyUklHdWFiaUhTVUtTbWJMUldwUmtXZUF0c0NoREVIcFhjSi9iZ0ROS1lXb0hxUTh4UlVqQjRDeWVwWWV2YzNZbHJHOG83ekh4cGZWY2FvTDVTZXVKa3pIeEtuNGJUYVNwOStNdndhbW5wNjRrWk1pTmJGTGtuZlA5a1lLb1JIa01XaGVSSjFVc1AxejRTY21rQ2VJTGZzTXM2dnFvdnFqV0NsRnNKcEJjc2x1WUhXRjdiQkoxbjRSd2crQVRFb3BZNElnR3Y2WnZ3YytBOXIrQVQyaHFwb1NrWW9BbCtBTll3Z3NsT2Y5c0plMFYrVEE5WVkvVWxhQm1QUFRkMC8vcjl3dmNlUFdaa1BqS29BQy96VU5oZkRiaDRMVjhHSHMzbHlYMlhvbUwvTE5jOEpZenlJYURFaEdRdmVvUGhoL3RyMWc9PSIsIk1JSURTRENDQWpDZ0F3SUJBZ0lVRHFFUncrNFJuR1NnZ3hnVWV3SkZFUERSWjNZd0RRWUpLb1pJaHZjTkFRRUxCUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURJN1huSCtadkR3TUNRVThNOFplVjVxc2N1Ymx2VllhYVJ0M1liYXhuOWdvZEx4NXN3SDBsWHJkZ2poNWg3RnBWZ0NnWVlYN0U0YmwxdmJ6VUxlbXJNV1Q4TjNXTUdVZThRQUpiQmVpb1Y3Vy9FK2hUWlAvMFNLSlZhM2V3S0JvNlVMZU1uZlFaRHJWT1JBazh3VExxMnY1TGxqNXZNajdKdE9vdEthOUo3bkhTOGtMbXpYWFNhajBTd0VQaDVPQVpVVE5WNHpzMWJ2b1RBUVFXckw0L0o5UXVLdDZXQ0ZFNW5VTmlSUWNFYlZGOG1scUsyYngyejZva1ZsdHlEVkxDeFlicFVURUx2WTF1c1IzRFRHUFVvSUNsT200Y3Jwd25EUkxWSHZqWWVQR0JCLy9wRXl6eEEvZ2NTY3hqd2FIMVpVdzliblNiSHl1cktxYlRhMUt2akFnTUJBQUdqWmpCa01CMEdBMVVkRGdRV0JCVHF0MEtRbmd4N1pIcmJWSHdEdW54T245aWhZVEFmQmdOVkhTTUVHREFXZ0JUUzd1OWFJbzA2YlZ3amx6M3loZFVtOFNWN2tqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQTRHQTFVZER3RUIvd1FFQXdJQmhqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFxUWFDV014VEdxVlZYN1NrN2trSm1VdWVUU1lLdVU2K0tCQlNnd0lSbmx3OUs3SGUxSXB4WjBoZHdwUE5pa0tqbWN5RmdGUHpoSW13SEpneHh1VDkwUHczdllPZGNKSk5rdERnMzVQWE9melNuMTVjRkF4MVJPMG1QVG1JYjhkWGlFV09wem9YdmR3WERNNDFaYUNEWU1UN3c0SVF0TXl2RTd4VUJacTJianRBbnEvTkRVQTdiZTRIOEgzaXBDKy8rTktsVXJjVWgrajQ4SzY3V0kwdTFtNkZlUXVlQkE3bjA2ajgyNXJxRHFzYUxzOVRiN0tBSEF3OFBtcldhTlBHMmtqS2VyeFBFZmVjaXZsRmF3cDJSV1p2eHJWdG4zVFYyU0J4eUNKQ2tYc05EMDVkQ0VyVkhTSklzK0JkdFRWTlk5QXd0eVBtbnliMHY0bVNUenZXZHc9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFmQ0FZQUFBQ0dWcytNQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUhZWUFBQjJHQVYyaUU0RUFBQWJOU1VSQlZGaEhwVmQ3VE5WMUZELzNkNTl3ZVFTSWdTOUFRQVhjRkxBUVppOWZwZVZ6MXRZL1dUWnI1V3hwYzdXNWtuTGE1akkzWjg1c3JTMm5NMnNqdFd3WlM3SVVINEg0eENuRVF4NERBWkY3NFY3dXM4ODV2OS9sSW5CdlZKL0I0UHY5bnUvNW51LzVudk01NTZmekEvUXYwSGIvSXJYM1ZGS1BvNDVjbm00aW5VSVdZd0xGUm1aUVV1d2pGRy9OMWlSSGgxRVowTlJWUnVkcXQxQmQrMm5TS3lTL09oeXMwK2xrM2UvM2tROXF2RDRaVXRhNFZWU1V1WTBlaXB5aVRoQWZvY29PUlZnRHV1dzNxS1JpQWQzcmJjRXRqVGpZSW9mNldhSHNDbXpWUFdDTXgrY2doOHRMcVdNS2FNV3NVakxxbzJSdEpJUTBvT3ptZXJwUXU0ZXNaZ3NPTmtHeEg3ZDBrZHZUVDE3czRPTVU3Vkk4WmhqZ0dhTStBcTlpRU51OFBpZjF1ZHowN013dktXZjhHbFZvQ0VZMDRQQzVXZFRhWFlGYlI4dk52TDUrM0tnZmI1eE5NeWE5UmFtSml5bmFNbEdUVnRGbHI2YmE5dStwcW5FWDR1TXVSUmdqU1lFaHJON3V0RkZlNmxxYWw3TmZrdzVpbUFHSHluUHBiazhWbVkweHN0bnB0bEZDVkNZdHpUdUJOODNRcE1MalR0ZXZkUHpTVW5KN2U4bWtqeFozOWZYYktEZmxkWnFidlUrVFVnR25CVkY2ZlEyaVBIZzRXMTZVV1V3dnpiazE2c01aRStQbjBwdno3SlNldUF5ZXM4bGNwQ21hS3VvL3ArcVdyMlVjd0lBSFdydlAwWUV6aFhBdExBYnNzSGhwN2lHYW12eWlqUDhyeXFyWFVXWDlYb293eHlBdWZOQnJwNDNQT0JGWFpsa2Y4TURSaXFjcHlvd0F3cHV6MngrZld2ei9EdGRlOXNtc3p5Z3RjUjZDMXdiZHpCbDZPbHE1V05ZWTRvR2F0aEpNcmtURXgwakFSU0hBVnMrNXJZa1FOWGIrUWdmUExzUTZnWHlJbnNyZVFmbXBtN1JWRllmTDg2bjFmaVVPa1l2U2hrVVB4dmJ1a3pveTZLMWloTTFobzNYelc2RXZTZlhBK2RwaVdHYVdkK2RvWHpMem1Hd0tZRkxDQXNSQWxQQkFoTWxDRlhVN3RCVVZQcjhIZ1ZjSkhXcStGMDBwbHIrRE1UZHJQNHp2eFkxMWtOTWh4VCtTZVRHZytkNFY1TFFKaXR5VUdKTkI4VkZac2pnWUJaTS9JSS9YQ1RrajBxeURPcEYyQVZRMTdDSWpVcC9EblQxVWtMNUY1Z2RqK3NTMXdnMWdFM2dpZ202MGZDWHpTblBYYnlBUGJJWHYrSURwRTE2VGhhSElTOXNreWhsbU1FNUYzY2ZxQUtocTJDMEU1UEgxZ1lhWGFMUERrWkcwSERKT25LV0hwNTFJMHo1U091eDhlMVdBdVp6ZEhRclRrcDhUbWpYb0krbGEwd0dac3p1YnFiTzNpZlE2QS9XN3ZWU1lzVjNtUjBKS3drS2M0V0hpQmttUjhJM0NDZ0k4N29PTDRxelQ1UCtSVUpCZWpFT2dBUEs4aFlQemF0TStlSVRwMklPOXlUUW1lcm9tUFJ4eDFxeEFjc2lsZS91YlNlRWJjV1FHWUVDZ2hjTFkySHlLam9nakgyNWhNcGpwVXYxT3VnbGk0ZWgyZVJ3ME8zMmJKamt5dUNnTnpnMHZ6bFlNU2lTczB1b280TUc3aE1PakNFYVgxeUZFMG5TdmpCenVUbkVwSzg2WjhJb3FGQUl1Ync4a2c5QXJFYVJFV1NaSStqSDRYYnA2ZzlFOUVuSlQzb2FSekROK01VSkJRREhuNTZhOG9VbUVCdXNPeEJzL041K3RKRWJQa0FGRGo4VUd2T3MvSVd2Y1NnbEdCaHZTNy9GVFlmcFdHWWREWThmUEF4V1NBMzVzVEM0cDQrTG00QWFxSW9QZVF0ZnVmSzZKaDBaaHhsYnNVWE9TbVhOaWZENVpUQWt5RG9mYmJjY2x4bkE4V05BcXhDYlJOeWtoWHhRcGFEdzY3ZlhVWWJzaUcwS2h0djJvZUl2aDhyaFFNWU9jRUFxWEcvZUkrem5nT2M1eXhyOHE4MklBTTFjL0ZMRk9wbHF1NWVGUVhyTVp6R2NWQ2pZYkxXRzVJNEJUMWV1UnJsYnh0Tk90TWl0RERFaExYSUl5bkFBdnVPRVdFM1gzTmRBZnQ5NFZnYUc0MlhJUXQwWlg2UGVDRS9xUUZlOXJLNkh4N1lVNTBLdkg3Zlc0ZlMrcTdLS0JKeHNnZ0JYNXBTQUdoMWpJclZoNXpRNnczUmZhYWhCWG0vYUNiQ1pUakNVRlVUeVdacVc5cDYyTWpKUFhWcU9yUGdNTzROdjc0R2tmK293ZnROVkJEUW5qRkpxSFN3MTdwWHZoV1c1S1pxZS9RNDlOL1VTVENBVldvUVhGSUhCSFhYZTNGUHJVRHN1R0RtdEYvaEhLVEhwZWt4aGlBT1BJK1NKcTZTNkhGNEk5WVd6a0JKVG80NmlVTXpXcDhQaXIvUmlkdUx4S1lzU2tzVjh2TGxPUXZoR1gyWWxSME9CaEJqQyt1L2dFY3ZZMEFwSzdZazQxTnhqUFNRbldGSFRGNjZVcmpnZXZCOEN1NWErbDJ2WVNSUHR1VkRvNzNoaGRNU0huVVg3dFRqc1ZaR3hBbC9XcHRpT0lFUTFnbkwyOW1YNi90UjF0bWxrWWo4VzRYK0NTaldjVURHWTFOcFMvQzdoU0txaU1MTS9sMlFtU1daNzNEZHorZ2lvOEJDRU5ZUFE0NnFua3p3WFVicXZCa3hqVVFzV2ZaRmdidW8zckFmK3dON2pPTzkwK3lueDRQaTNMKzBuWUwxU2NoRFVnQVA0Z1BWLzdJZDFxKzFIU2htdUdrSXFXUlBneXhNRnFQOEhmalRualh3WTViUWZiSmN0Nk9JektnTUhvdEYvSGUxZWdzYXhIU3FHNndmZG1RNXg4TnlURkZxQmNwMmlTb3dIUjN5azUrMzZoRjd2WEFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xX1BSRSIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsImxhcmdlQmxvYktleSIsImNyZWRCbG9iIiwibWluUGluTGVuZ3RoIl0sImFhZ3VpZCI6IjY2MmVmNDhhOTVlMjRhYWFhNmMxNWI5YzQwMzc1ODI0Iiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibGFyZ2VCbG9icyI6dHJ1ZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOnRydWUsImFsd2F5c1V2Ijp0cnVlfSwibWF4TXNnU2l6ZSI6MTUzNiwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0Ijo4LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjEyOCwidHJhbnNwb3J0cyI6WyJuZmMiLCJ1c2IiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotOH0seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTM1fV0sIm1heFNlcmlhbGl6ZWRMYXJnZUJsb2JBcnJheSI6NDA5NiwibWluUElOTGVuZ3RoIjo2LCJmaXJtd2FyZVZlcnNpb24iOjMyOTQ3NiwibWF4Q3JlZEJsb2JMZW5ndGgiOjMyLCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6MSwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjEwMH19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTA2LTIxIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZdWJpS2V5IDUgU2VyaWVzIHdpdGggTkZDIC0gRW5oYW5jZWQgUElOIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNTA2MjEwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wNi0yMSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzZ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDYtMTkifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyJhMzcwMThhYjY5ZTQ5NjFhZjQ5MzhjOTNkOTJiMzFkMGIxNGZmNTBjIl0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbImEzNzAxOGFiNjllNDk2MWFmNDkzOGM5M2Q5MmIzMWQwYjE0ZmY1MGMiXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ill1YmlLZXkgNSBTZXJpZXMgd2l0aCBORkMgLSBFbmhhbmNlZCBQSU4ifSwiZGVzY3JpcHRpb24iOiJZdWJpS2V5IDUgU2VyaWVzIHdpdGggTkZDIC0gRW5oYW5jZWQgUElOIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NiwicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoyfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCIsInJlbW90ZV9oYW5kbGUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURTakNDQWpLZ0F3SUJBZ0lVVG5iYkdJUjJOSHZ6cUlLRkFlUXdHMVhCaXMwd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JCSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVFZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU9zWGozazA0QmFuNFRZZHRaS3FEL09QSnh5RHlhUG1DQlVGVWlhWklnVHRlWm5qM1gyNURoZ3BaWlhzQzREMHlkSWNybEE2d05VSW5PUkwvTDl6QmJURUlNQVZNR282ZzdVS0FtYjJNRjZBSGJuaFlKZDllaWt1cFZOV1NoSE5ZTmM0R0JkTzFZTjZBZlVxdkpoSGJlM1Y0U05NUG1CUkVLSlBWejdUaHdnbWdnVGU4V3MySzAvd3NxdjJ3U0U3cGJDQnNVWmhJWDUxYlpNM3BxRHdKUFRtUkZFdnQwLzZ0RzVlTzhGM2oxNE9YcWZFaG1qbjFWdnhLRFlRT0xaQXhDd3dnQzBQNENkZld2M3k4UFNSOEkzNTRoTzFZK0d6Tmp2SXFYMzhOS0x5d3VJWUhGZXJPeE5seEVNQnZGaFlCdVJ1WUFra2dVYVBxTjZVQmhzSUxyc0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ0NvUkhoaXlObmJuWFJXSUw2WkJYb0JYOVlUTUI4R0ExVWRJd1FZTUJhQUZDQW9VQ0VicEZwYjZGUExuWjNGNVB4c0wzb2ZNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUNRRmFmSkkxLzVXZzlDRUVpbUUxUlA1NFJnUXdUTlRPT1FzTEFDVGUrckl0bEZRekM5WkRoclY4Mjh5WDdqenkrQUFzcDNpeks3VDF0aDJkbDdtK3R1MHN3MlBhL29sYzAybnQ2UHlJdzM0OGdhSHpoSTErMEtFNDVxeHZGRGVMMmxNeGJQZkNZdnlFRWFZemppUUVMVTU5NTFwWEdXeUtNYS80Zkx0TytaS09YaE11VmVxNHJYRFBJNTRXNkpIT2lBYWlLZGl3KzVlM2Mya3QvakZJUXRNNnZNWGc5TE5GemRqRVROdDIwVlg5UWV2UnBGWmZ1Y01HOXdDYVFEb0ZsUHpwVE1KS2hQZXYvaW1KbVpZaEtmcjBsTGNlbXRxakl4TEFvcVpkT1lmSEJnNit2QWNkUEkvaWF1R3BVQXY3WCtVS05tRHdqWjJCYUg0c0x3aEIybSIsIk1JSURTRENDQWpDZ0F3SUJBZ0lVRHFFUncrNFJuR1NnZ3hnVWV3SkZFUERSWjNZd0RRWUpLb1pJaHZjTkFRRUxCUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURJN1huSCtadkR3TUNRVThNOFplVjVxc2N1Ymx2VllhYVJ0M1liYXhuOWdvZEx4NXN3SDBsWHJkZ2poNWg3RnBWZ0NnWVlYN0U0YmwxdmJ6VUxlbXJNV1Q4TjNXTUdVZThRQUpiQmVpb1Y3Vy9FK2hUWlAvMFNLSlZhM2V3S0JvNlVMZU1uZlFaRHJWT1JBazh3VExxMnY1TGxqNXZNajdKdE9vdEthOUo3bkhTOGtMbXpYWFNhajBTd0VQaDVPQVpVVE5WNHpzMWJ2b1RBUVFXckw0L0o5UXVLdDZXQ0ZFNW5VTmlSUWNFYlZGOG1scUsyYngyejZva1ZsdHlEVkxDeFlicFVURUx2WTF1c1IzRFRHUFVvSUNsT200Y3Jwd25EUkxWSHZqWWVQR0JCLy9wRXl6eEEvZ2NTY3hqd2FIMVpVdzliblNiSHl1cktxYlRhMUt2akFnTUJBQUdqWmpCa01CMEdBMVVkRGdRV0JCVHF0MEtRbmd4N1pIcmJWSHdEdW54T245aWhZVEFmQmdOVkhTTUVHREFXZ0JUUzd1OWFJbzA2YlZ3amx6M3loZFVtOFNWN2tqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQTRHQTFVZER3RUIvd1FFQXdJQmhqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFxUWFDV014VEdxVlZYN1NrN2trSm1VdWVUU1lLdVU2K0tCQlNnd0lSbmx3OUs3SGUxSXB4WjBoZHdwUE5pa0tqbWN5RmdGUHpoSW13SEpneHh1VDkwUHczdllPZGNKSk5rdERnMzVQWE9melNuMTVjRkF4MVJPMG1QVG1JYjhkWGlFV09wem9YdmR3WERNNDFaYUNEWU1UN3c0SVF0TXl2RTd4VUJacTJianRBbnEvTkRVQTdiZTRIOEgzaXBDKy8rTktsVXJjVWgrajQ4SzY3V0kwdTFtNkZlUXVlQkE3bjA2ajgyNXJxRHFzYUxzOVRiN0tBSEF3OFBtcldhTlBHMmtqS2VyeFBFZmVjaXZsRmF3cDJSV1p2eHJWdG4zVFYyU0J4eUNKQ2tYc05EMDVkQ0VyVkhTSklzK0JkdFRWTlk5QXd0eVBtbnliMHY0bVNUenZXZHc9PSIsIk1JSURQakNDQWlhZ0F3SUJBZ0lVWHplaUVESkVPVHQxNEY1bjBvNlpmL2JCd2lVd0RRWUpLb1pJaHZjTkFRRU5CUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTVo2L1R4TThySVQrRWFvUHZHODFvbnRNT28vMm1RMlJCd0pIUzBRWmN4VmFOWHZsMTJMVWhCWjVMbWlCU2NJWmQxUm54MW9kNTg1aCsvZGhLN2hFbTdKQUFMa0tLdHMxZk81M0tHTkxadWp6NWgzd0duY3I0aHlLRjBHNzRiL1UzSzloRTVtR05ENnpxWWNoQ1JBSGZyWU1ZUkRGNFlMMFg0RDVuR2R4dnBwQXk2bmtFbXRXbU1ud08zaTBUQXVjc3JiRTQ4NUh2R000cjBWcGdWZEpwdmdRamlUSkNUSXErRDM1aHd0VDhRREl2K25HdnBjeWk1d2NJZkNrenlDaW1KdWtoWXk2S29xTk1LUUVkcE5pU092V3lETVRNdDFid0N2RXpwdzkxdSttc1V0NHJqMGVmbk85czBaT3dkd01SRG5INHhnVWw1Wkx3cnJQa2ZDMS8wQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQjhHQTFVZEl3UVlNQmFBRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRTXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJEUVVBQTRJQkFRQzNJVy9zZ0I5cFo4YXBKTmp4dUdvWCtGa0lMa3Mwd01OcmRYTC9jb1V2c3JoenN2bDZtZVBNcmJHSkJ5SjFYbnF1QjVzZ2NSRU5GeGRRRm1hM21pbzhVcGYxb3dNMVpyZVhySjBtQURHMkJwbHFiSm54aXlZYStSMTFyZUlGVFdlSWhNTmNaS3NEWnJGQXlQdUZqQ1dTUXZKbU5XZTltRlJZRmdOaFhKS2tYSWI1SDFYZ0VEbHdpZWRZUk03Vm9sQk5sbGQ2cFJGS2xYOHVzdDZPVE1PZUFEbDJ4TkYwbTFMVGhTZGV1WHZEeUMxZzkrSUxmejNTNk9JWWdjM2lyb1JjRkQzNTRnN3JLZnU2N3FGQXc5Z0M0eWkweEJUUHJZOTVyaDQvSHFhVVlDQS9MOGxkUms2SDdYazM1RCtXVnBtcTJTaC94VDVIaUZ1aGY0d0piMGJLIiwiTUlJRFNEQ0NBakNnQXdJQkFnSVVVY21NWHpSSUZPZ0dUSzBUYjNnRXVaWVprQkl3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRRG01NTViV1k5V1crdE9ZMHJJV0hsZGgrYU5hbm9DWkNGaDdHazNZWnJRbVBVdzBoa1NHNnFZSFF0UCtmWnlTMzNWRXJ2ZytCUXFubXVtZ05oZnhGcmt3RVpFTGVpZEJjQzhDNEFnNG5xcWlQV3B6c3ZJMTdOY3hZbEluTE5MRmNaWS8rZ09pTjZaT1RpaE81L3ZCWk1iajlyaWFBY3FsaVltTkdKUGdUY01HYUVBeU16RU1OeTJubTZFcCtwalA1YUY2Z2kyMXQvVVFGc3VKMWoyUmoveW5NL1NkUnQrZWNhbDVPWW90eEhrRmJMOXZ2djJBMk92NUlUWkNsdzRiT1M5bnB5cFFpbU9aNVFBWXl0bVlhUXBXbC9wTVl6NnpTajhScWtWRE5FSkdxTmZUS0EyaXZMWXdYNmxTdHRNUGFwZzBKODRsOVgwdm9WTi9GcFM0VkNWQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJRZ0tGQWhHNlJhVytoVHk1MmR4ZVQ4YkM5Nkh6QWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQVlNemdMckpMSXIwT292UW5BWnJSSUd1YWJpSFNVS1NtYkxSV3BSa1dlQXRzQ2hERUhwWGNKL2JnRE5LWVdvSHFROHhSVWpCNEN5ZXBZZXZjM1lsckc4bzd6SHhwZlZjYW9MNVNldUprekh4S240YlRhU3A5K012d2FtbnA2NGtaTWlOYkZMa25mUDlrWUtvUkhrTVdoZVJKMVVzUDF6NFNjbWtDZUlMZnNNczZ2cW92cWpXQ2xGc0pwQmNzbHVZSFdGN2JCSjFuNFJ3ZytBVEVvcFk0SWdHdjZadndjK0E5citBVDJocXBvU2tZb0FsK0FOWXdnc2xPZjlzSmUwVitUQTlZWS9VbGFCbVBQVGQwLy9yOXd2Y2VQV1prUGpLb0FDL3pVTmhmRGJoNExWOEdIczNseVgyWG9tTC9MTmM4Sll6eUlhREVoR1F2ZW9QaGgvdHIxZz09IiwiTUlJRFNqQ0NBaktnQXdJQkFnSVVSMzhtcTI2U2Yyc3pWVjJCZEc2V0VON2t1V1V3RFFZSktvWklodmNOQVFFTEJRQXdMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3SUJjTk1qUXhNakF4TURBd01EQXdXaGdQT1RrNU9URXlNekV5TXpVNU5UbGFNQ1l4SkRBaUJnTlZCQU1NRzFsMVltbGpieUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRUlnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTlkwV2I5b1BvUm9Lb1F5V1BhSnB6MTF2cldUZzZ6VHRtTmoyVm9LUm55dktHUnFwemI4M3c1bDZZQTk2VVlrWUJEUVAwaWxPMkRQZTZ3V3FWUjV6RGZSemRjSDhiaCtMN2RHR3ZhZTZoUlRaaGtGa0NwWERzNEhjY2tuckRmOEZDbEo3SGUzOUpmNDIvRzFRbTJ6ejlXV21yUFh0Z2lLL3gwNUdqc1FmR3VERzF6ZjVRVFVVaWU4bHd5bUszVGZkT3ZOZWVKQUFQZTJwbjdJdGZSYityVnJOV2lEemxSbjJ2Tm5aMndQbzR3SC9XSjZkaFhaRytyTVdUK2E2Qm9jZzFVZkl3NmtkdW5HNGJUcFp6c3ZhY0ZZeVIwbXBmK0RlT25wU1dBbXl3SldIdlRsZjJZWHhGeWVYY1RBQ2RRbGNNTkdKMlZoWlE0OHh0UDUvUkJQLzhrQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZDaHk0Mm9raXFjVFMxaXFhL0hSV2prQm40SC9NQjhHQTFVZEl3UVlNQmFBRk9xM1FwQ2VESHRrZXR0VWZBTzZmRTZmMktGaE1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQW4rUkhJUGJ0TUVETmRUMWc4SC9SaXRBa1VkTGdBdDF0V0dXbmxqOWtuYnY0LzRHbFg3QzlwNDVlZlBPOS9hWkw2T1YxWFJLQmk2S210Qlc1SzdudVlFbk14LzVCcUJTYkxUN3JoZHVDNDlUQmVNYjlQSGRYc1RsU1ZOWWVmcjFkR2lkcjRqMHhWQlFMYjFya25EQWJkV0R6S2Z2bmF5S084RnJ3ZTdIeDg0M01HL3JKK2MwWHJ1VXZiZlZUQ0hMaUlXaE03b05EaEw4eG9iNnhVbzlLTEtjU0wrSXRZc08zLzlXYjhROUdqc3FMNEZYc0RjRzFTYVloN0twZnVNbU9peHF6SlpPMm5JaWNQWVJnMUkyU3VpVWZZTzcwdG1kSGNibCtrU1FtU1l0N3JxNHZpSUxnMkd4M2o5cklUdVdUamJhVWFTU1F4Z09tTVNIdXl6TUFDIl0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWZDQVlBQUFDR1ZzK01BQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBSFlZQUFCMkdBVjJpRTRFQUFBYk5TVVJCVkZoSHBWZDdUTlYxRkQvM2Q1OXdlUVNJZ1M5QVFBWGNGTEFRWmk5ZnBlVnoxdFkvV1RacjVXeHBjN1c1a25MYTVqSTNaODVzclMybk0yc2p0V3daUzdJVUg0SDR4Q25FUXg0REFaRjc0Vjd1czg4NXY5L2xJbkJ2VkovQjRQdjludS81bnUvNW52TTU1NmZ6QS9RdjBIYi9JclgzVkZLUG80NWNubTRpblVJV1l3TEZSbVpRVXV3akZHL04xaVJIaDFFWjBOUlZSdWRxdDFCZCsyblNLeVMvT2h5czArbGszZS8za1E5cXZENFpVdGE0VlZTVXVZMGVpcHlpVGhBZm9jb09SVmdEdXV3M3FLUmlBZDNyYmNFdGpUallJb2Y2V2FIc0NtelZQV0NNeCtjZ2g4dExxV01LYU1Xc1VqTHFvMlJ0SklRMG9Pem1lcnBRdTRlc1pnc09Oa0d4SDdkMGtkdlRUMTdzNE9NVTdWSThaaGpnR2FNK0FxOWlFTnU4UGlmMXVkejA3TXd2S1dmOEdsVm9DRVkwNFBDNVdkVGFYWUZiUjh2TnZMNSszS2dmYjV4Tk15YTlSYW1KaXluYU1sR1RWdEZscjZiYTl1K3BxbkVYNHVNdVJSZ2pTWUVock43dXRGRmU2bHFhbDdOZmt3NWltQUdIeW5QcGJrOFZtWTB4c3RucHRsRkNWQ1l0elR1Qk44M1FwTUxqVHRldmRQelNVbko3ZThta2p4WjM5ZlhiS0RmbGRacWJ2VStUVWdHbkJWRjZmUTJpUEhnNFcxNlVXVXd2emJrMTZzTVpFK1BuMHB2ejdKU2V1QXllczhsY3BDbWFLdW8vcCtxV3IyVWN3SUFIV3J2UDBZRXpoWEF0TEFic3NIaHA3aUdhbXZ5aWpQOHJ5cXJYVVdYOVhvb3d4eUF1Zk5CcnA0M1BPQkZYWmxrZjhNRFJpcWNweW93QXdwdXoyeCtmV3Z6L0R0ZGU5c21zenlndGNSNkMxd2JkekJsNk9scTVXTllZNG9HYXRoSk1ya1RFeDBqQVJTSEFWcys1cllrUU5YYitRZ2ZQTHNRNmdYeUluc3JlUWZtcG03UlZGWWZMODZuMWZpVU9rWXZTaGtVUHh2YnVrem95NksxaWhNMWhvM1h6VzZFdlNmWEErZHBpV0dhV2QrZG9Yekx6bUd3S1lGTENBc1JBbFBCQWhNbENGWFU3dEJVVlByOEhnVmNKSFdxK0YwMHBscitETVRkclA0enZ4WTExa05NaHhUK1NlVEdnK2Q0VjVMUUppdHlVR0pOQjhWRlpzamdZQlpNL0lJL1hDVGtqMHF5RE9wRjJBVlExN0NJalVwL0RuVDFVa0w1RjVnZGorc1Mxd2cxZ0UzZ2lnbTYwZkNYelNuUFhieUFQYklYditJRHBFMTZUaGFISVM5c2t5aGxtTUU1RjNjZnFBS2hxMkMwRTVQSDFnWWFYYUxQRGtaRzBIREpPbktXSHA1MUkwejVTT3V4OGUxV0F1WnpkSFFyVGtwOFRtalhvSStsYTB3R1pzenVicWJPM2lmUTZBL1c3dlZTWXNWM21SMEpLd2tLYzRXSGlCa21SOEkzQ0NnSTg3b09MNHF6VDVQK1JVSkJlakVPZ0FQSzhoWVB6YXRNK2VJVHAySU85eVRRbWVyb21QUnh4MXF4QWNzaWxlL3ViU2VFYmNXUUdZRUNnaGNMWTJIeUtqb2dqSDI1aE1wanBVdjFPdWdsaTRlaDJlUncwTzMyYkpqa3l1Q2dOemcwdnpsWU1TaVNzMHVvbzRNRzdoTU9qQ0VhWDF5RkUwblN2akJ6dVRuRXBLODZaOElvcUZBSXVidzhrZzlBckVhUkVXU1pJK2pINFhicDZnOUU5RW5KVDNvYVJ6RE4rTVVKQlFESG41NmE4b1VtRUJ1c094QnMvTjUrdEpFYlBrQUZEajhVR3ZPcy9JV3ZjU2dsR0JodlM3L0ZUWWZwV0dZZERZOGZQQXhXU0EzNXNUQzRwNCtMbTRBYXFJb1BlUXRmdWZLNkpoMFpoeGxic1VYT1NtWE5pZkQ1WlRBa3lEb2ZiYmNjbHhuQThXTkFxeENiUk55a2hYeFFwYUR3NjdmWFVZYnNpRzBLaHR2Mm9lSXZoOHJoUU1ZT2NFQXFYRy9lSSt6bmdPYzV5eHI4cTgySUFNMWMvRkxGT3BscXU1ZUZRWHJNWnpHY1ZDalliTFdHNUk0QlQxZXVScmxieHROT3RNaXREREVoTFhJSXluQUF2dU9FV0UzWDNOZEFmdDk0VmdhRzQyWElRdDBaWDZQZUNFL3FRRmU5cks2SHg3WVU1MEt2SDdmVzRmUytxN0tLQkp4c2dnQlg1cFNBR2gxaklyVmg1elE2dzNSZmFhaEJYbS9hQ2JDWlRqQ1VGVVR5V1pxVzlwNjJNakpQWFZxT3JQZ01PNE52NzRHa2Yrb3dmdE5WQkRRbmpGSnFIU3cxN3BYdmhXVzVLWnFlL1E0OU4vVVNUQ0FWV29RWEZJSEJIWFhlM0ZQclVEc3VHRG10Ri9oSEtUSHBla3hoaUFPUEkrU0pxNlM2SEY0STlZV3prQkpUbzQ2aVVNeldwOFBpci9SaWR1THhLWXNTa3NWOHZMbE9RdmhHWDJZbFIwT0JoQmpDK3UvZ0VjdlkwQXBLN1lrNDFOeGpQU1FuV0ZIVEY2NlVyamdldkI4Q3U1YStsMnZZU1JQdHVWRG83M2hoZE1TSG5VWDd0VGpzVlpHeEFsL1dwdGlPSUVRMWduTDI5bVg2L3RSMXRtbGtZajhXNFgrQ1NqV2NVREdZMU5wUy9DN2hTS3FpTUxNL2wyUW1TV1o3M0RkeitnaW84QkNFTllQUTQ2cW5rendYVWJxdkJreGpVUXNXZlpGZ2J1bzNyQWYrd043ak9POTAreW54NFBpM0wrMG5ZTDFTY2hEVWdBUDRnUFYvN0lkMXErMUhTaG11R2tJcVdSUGd5eE1GcVA4SGZqVG5qWHdZNWJRZmJKY3Q2T0l6S2dNSG90Ri9IZTFlZ3NheEhTcUc2d2ZkbVE1eDhOeVRGRnFCY3AyaVNvd0hSM3lrNSszNmhGN3ZYQUFBQUFFbEZUa1N1UW1DQyJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTA2LTIxIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZdWJpS2V5IDUgU2VyaWVzIHdpdGggTkZDIC0gRW5oYW5jZWQgUElOIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVMkYxMDAwMjAyNTA2MjEwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wNi0yMSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzZ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDYtMTkifSx7ImFhZ3VpZCI6ImFlYjY1NjljLWY4ZmItNDk1MC1hYzYwLTI0Y2EyYmJlMmU1MiIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiYWViNjU2OWMtZjhmYi00OTUwLWFjNjAtMjRjYTJiYmUyZTUyIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkhJRCBDcmVzY2VuZG8gQzIzMDAifSwiZGVzY3JpcHRpb24iOiJISUQgQ3Jlc2NlbmRvIEMyMzAwIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMwLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURDVENDQXErZ0F3SUJBZ0lRUUFGcVVOU2U1U1dBSUxzOEgyRFMxREFLQmdncWhrak9QUVFEQWpCck1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDaE1LU0VsRUlFZHNiMkpoYkRFaU1DQUdBMVVFQ3hNWlFYVjBhR1Z1ZEdsallYUnZjaUJCZEhSbGMzUmhkR2x2YmpFak1DRUdBMVVFQXhNYVJrbEVUeUJCZEhSbGMzUmhkR2x2YmlCU2IyOTBJRU5CSURFd0hoY05NVGt3TkRJME1Ua3pNVEV5V2hjTk5EUXdOREkzTVRrek1URXlXakJtTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNoTUtTRWxFSUVkc2IySmhiREVpTUNBR0ExVUVDeE1aUVhWMGFHVnVkR2xqWVhSdmNpQkJkSFJsYzNSaGRHbHZiakVlTUJ3R0ExVUVBeE1WUmtsRVR5QkJkSFJsYzNSaGRHbHZiaUJEUVNBeE1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRUdoU01MN2N1cEN4VEJDenNyY2lwd2dQb3ozZHZUM3JCbjF6YWtEekJnNlVjM0hkR0tKclZickQreVhGNlk0WnFrc1VVN3JiUml2cU9Pekt4Y0p2UEZxT0NBVGd3Z2dFME1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01JR0VCZ2dyQmdFRkJRY0JBUVI0TUhZd0xnWUlLd1lCQlFVSE1BR0dJbWgwZEhBNkx5OW9hV1F1Wm1sa2J5NXZZM053TG1sa1pXNTBjblZ6ZEM1amIyMHdSQVlJS3dZQkJRVUhNQUtHT0doMGRIQTZMeTkyWVd4cFpHRjBhVzl1TG1sa1pXNTBjblZ6ZEM1amIyMHZjbTl2ZEhNdlNFbEVSa2xFVDFKdmIzUmpZVEV1Y0Rkak1COEdBMVVkSXdRWU1CYUFGQjJtM2l3V1NZSHZXVEhiSmlIQXlLRHArQ1NqTUVjR0ExVWRId1JBTUQ0d1BLQTZvRGlHTm1oMGRIQTZMeTkyWVd4cFpHRjBhVzl1TG1sa1pXNTBjblZ6ZEM1amIyMHZZM0pzTDBoSlJFWkpSRTlTYjI5MFkyRXhMbU55YkRBZEJnTlZIUTRFRmdRVTM4YlFBTlc5ZHlWQmtXbDU5QmxOTEQwOWUvUXdDZ1lJS29aSXpqMEVBd0lEU0FBd1JRSWhBSVVxN3p2cGVkZlpSSHRHcnZKSno4MlI5OUQrU3I3YlY3eXJIRGZCczh2NkFpQmFJVzUwajhXR1ZSMVhIWGFJbU5LbGxtUnlObGs5a2xYOGdUa25PRXREOGc9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFWTUFBQUNzQ0FZQUFBREcrRThNQUFBQUlHTklVazBBQUhvbEFBQ0Fnd0FBK2Y4QUFJRHBBQUIxTUFBQTZtQUFBRHFZQUFBWGI1SmZ4VVlBQUFBSmNFaFpjd0FBRDJBQUFBOWdBWHA0UlkwQUFBeWdTVVJCVkhoZTdaMS9iSlRsSGNCdmpoak5jQzRPK2RYZVhWdFVUTXppUDdvWVhaWTUxSWtLZDFmTm5GSGo1b2hCbUE3ajJNUnNab2xteGhoTkpvcnQyNEtnc2lGc2ltN1RBZE1ZUkZRRUZUY1Z4dy9yd0FFRlJDaFErdXVlUGMvMXFRUDNUTnMrMzN2ZXUrdm5rM3pTNDJnZm52ZTl0NTgrNzczWEl3RUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVVFcGtHNi9YUHBuSVJSOGdJaDV0NDFyOWNZYXRCZndQOVEzbjZ4MjBUWnRQMURjcFJNVFBOZGVVMTR1dVZ0Mk1xMjFGQmt4dE1qbXJMcFZxMFI4MzExWlgzMnJ2TG1NS1AyMzBqcW1QM0RzTkVmSHp6RVc3RXhmT0dXbUw4b1drazhrZjFxWFNQWFhWcWFYSlVhUE9xS21xT3JNdW1mcHJiVExWblVxbExyZWZWa1pNbVAxMS9aT2x3N2x6RUJFSG9qbXJ6VVpUYlYzK0wzVmp4MDR3SVIwOWV2VEo0MUtwS2RvYmpDTkhqaHcxZHV6WTVMaDBqZEtyMUxQdHA1Y0JKcVNzUmhGUjB0Nmd6clNWY1hHTURxbXFTU1l6K3ZZd0U4NmFxdFMxdGRYcDY4M3R1akZqVWpWams1UDFLclc5OTlQTGdWelU1ZHdaaUlnK21xQmVPcWZPbHVZbzB1bjBjVHFtWGZhUHc4d0sxZDVPNkZQOHQyclQ2VnYwelMrYnNQYmVXK3Jrb28rY093RVJVY0pjZE1EVzVpaXFxNnVQSDVlcTZWdDFGbGFtT3FJNzYxSTEyMDlKMS9SRjlrdmxFZFA2aG04N054NFJVZEpzd3oyMk9wOWlZcXBYbzUzMmoyWmxtai9wcEpPK3FqOTJwOGVNT2QzZWYweDV4RFRYdE0rNTRZaUlrdWFpRGx1ZEkrazloVThuanRPM0N6RTFkNDRZTVdLTXZuM1EzQjQrZXZqSituYmZLcldFNFhXa2lCakt5NXZQc3VYNWxMcFVhbVp0TXIzZjNLNnRUcjVUdUZOVGwwdytXcE5LM2F6L3JxTzJPajNOM2wyaVRJNm1PamNZRWJFWTVwcWV0ZlU1aXJycTFETzF5ZFNCY1ZXcEcreGRpYnFxNUF5ek90WDNMN1IzbFREMTBYTG5CaU1pRnNOY1UrSFUzVVZ5VlBJTUhkV1ZwOVhXcVZOcmF2UDY5dktxRVZXbjJyOHVjZXFqL2M0TlJrUXNocm1vakY0dk9oQ0lLU0tHMUgwUnFnSWdwb2dZVW1LS2lDZ2dNVVZFRkpDWUlpSUtTRXdSRVFVa3BvaUlBaEpUUkVRQmlTa2lvb0RFRkJGUlFHS0tpQ2dnTVVWRUZKQ1lJaUlLU0V3UkVRVWtwb2lJQWhKVFFTOTdXQ1V1ZUVBbExwd2RWdk52NWlMM25BYnI5eDUwLzF2RjlpS3RhejRETWE3SHdEeitydm4weDZ4Ky9PS1lkekUwMjNHUlBuN01NWFNwM2llVEc5M2JYR2tTVXpsdm52dXlpb3ZqcnB6bm5OT2cxQWYvdXMyNzdNaGgyZm5Kb2Q1dlFOZTgrcVArSm82TGFkRXE5NXo2NGRldVhXQkhxUXc2dTN0VVczdW4ycnhqbjFxOVlhZGFzbnF6dXFuNVpYWHlOUXRVNHVLSFZDSlRnWUVscG5LYWI2YTRxSlNZZnJUblFObkc5SWFIWDNMUHFSK2VxQ016Vk5pei83QmE4ZFpXZGVWOXo2dkVCTDJLclpTd0VsTTVpYWsveEhSbzBkblZvNTVkOTZFYWYrTWl2NmRKU2tGaUtpY3g5WWVZRGwzZWJ0bWp6cHUxMU8veGoxTmlLaWN4OVllWXdodGJkcWxUcHVxVnFya281OWhYSlNzeGxaT1kra05Nd3pQcnNUWHF6c1Z2cUx1V3ZLRXlkeTlUdVh1V3ExOHVmTDF3MzcxTDE2c1Y2N2NWTGlhRnBDZWZWNCsrK0UrVnVHQzJjMytWcE1SVVRtTHFEekVOVDJMQ2IvVXFzRkVsTWczL25aTzVLRlM0VHp0SlB4Nlh6bEZWVXhhcUtYTldxby9iRHR1dkxENjcyOXJWTjM2NnhJVHFxUDFWa2hKVE9ZbXBQOFEwUElYWGhqcm01RlJIN1pqSkRlcU8zNisxWDExOHVudDYxQzJQck5iSDVSR3hMMFdKcVp6RTFCOWlHcDRCeGJSUEhiWkpkeSt6STRSaC9ndnZGMWJJenZtVWdzUlVUbUxxRHpFTno2Qmlhc3cwcWgvcjAvNlFQUG5xQjM3SFJ6RWxwbklTVTMrSWFYZ0dIVk5qTmxKLy8zQ1BIU2tNVDcvV1VwcEJKYVp5RWxOL2lHbDR2R0txSGYrVHhYYWtjUHp4RmIxQ0xiWG5VSW1wbk1UVUgySWFIdCtZbXFpOXQyMnZIUzBjUDF2d3FucytjVWxNNVNTbS9oRFQ4SGpITkJlcDgyNS8ybzRXam53K3I4WlBYK3llVXh3U1V6bUpxVC9FTkR6ZU1kVis1YXBIN0doaDJYZXdRMlQrSWhKVE9ZbXBQOFEwUENJeG1tUk85VCt4STRibG1UVXRoZFd4YzE0aEphWnlFbE4vaUdsNFJHS2FqZFF0ODE2eEk0Wm4rRldDeC85Z0phWnlFbE4vaUdsNHBFNlR6NXl4eEk0WW52Yy8ydHY3NjYrT2VRV1RtTXBKVFAwaHB1R1JpdW5vNngrM0k4YkRpT3NlZGM0cm1NUlVUbUxxRHpFTmoxUk1oMTNSYkVlTUIzUE14dnJjS1RHVms1ajZRMHpESXhWVGN4R3FxN3ZiamhxZXJ1NGV1VzBaak1SVVRtTHFEekVOajFpQTlIR3pkbE9ySFRVZWJwMGY0d3Y1aWFtY3hOUWZZaG9lc1pobUd0WENsUnZ0cVBHd2JiYytmdUo2aDM1aUtpY3g5WWVZaGtjc3BqcGl0ejIyeG80YUQrMGRYU294TWFhMzZTT21jaEpUZjRocGVDUmpHdWRyVGZ1STdhbytNWlV6enBoKzUxZC9VdWZPZWxyRWIvNzhLYlVoaGpldU1CRFQ4SWpGTktiZjBmOHN0ejIreGoyL1lrdE01WXd6cHBVQ01RMlBXRXkxNTl5MjFJNGFINnZlM2U2Y1c5RWxwbklTVTMrSWFYZ3FMYVpiNDdvSVJVemxKS2IrRU5Qd1ZGcE10Kzg5MlB1L3Fqcm1WMVNKcVp6RTFCOWlHcDVLaSttdWZlMHFsbmZoSjZaeUVsTi9pR2w0S2kybWhmYzR2Y3pqR0Jxc3hGUk9ZdW9QTVExUHhaM21mOHhwdml6RXRDd2hwdUdwdEpqdTJIdUltSXBDVE1zU1locWVTb3ZwQnp2M203QTU1MWRVaWFtY2NjYlV2TUhFNjBLdTJiaFRIV2p2c2lPSGhaaUdwOUppdW1UMVp1ZmNpaTR4bFRQT21CNXJmaEtiSjkwbHZQZ2g5ZnJHZU43OWg1aUdSeXltSmZJYlVQWDNMSGZQcjlnU1V6bmpqQ20vbTI4bHBnTkdMS1lsOHJ2NXNaemlHNG1wbk1UVUgySWFIc21ZVG8vNXVzSCtRNTI5WjFldStSVmJZaW9uTWZXSG1JWkhMS2FaUnJYb3BVMTIxSGhZMzdLYmxhazR4SFR3RXROQlFVd2IxWXIxMit5bzhYRDJ6S1h1dVlXUW1NcEpUUDBocHVFUmkrbmtCdFg2eVNFN2FuamEydlVwL2lVeHZURzBrWmpLU1V6OUlhYmhrWHpPTkU2ZVdMWEpQYTlRRWxNNWlhay94RFE4VWpFOThacjVkc1R3OVBUazQzbmJ2U01scG5JU1UzK0lhWGlrWW5ycTlDZnNpT0g1eTdwL21aZzU1eFZNWWlvbk1mV0htSVpISktZNlpKZmMrWndkTVN5SE83djFNUlBqYzZWOUVsTTVpYWsveERROElqSE5OS29scTdmWUVjTXlyWEdWZTA2aEphWnlFbE4vaUdsNFJHSWEwOFduVGR2M3hmY2kvYzlLVE9Va3B2NFEwL0JJeEhUOHRFVjJ0SEMwZCtqVGUzMnN1dVlUaThSVVRtTHFEekVOajNkTTlTbiszT2MzMk5IQ1lLN2Vuelh6U2ZkODRwS1l5a2xNL1NHbTRmR042ZkFmekxNamhXUEd2SmVkYzRsVllpb25NZldIbUliSEs2YVRHOVRjdjRWZGxkNitjSTBKbDNzK2NVcE01U1NtL2hEVDhBdzZwdGxJblgvSG4rMG9ZYmlwZVZVOC95VkpmeVNtY2hKVGY0aHBlQVlWMDB5RE92ZjJaK3dJeGFlN0o2OStOUHZGMGx5UjlrbE01U1NtL2hEVDhQUTdwaVprK3JUZUhHdjNQclhlZm5YeE9kamVxY1pOWGVTZVV5bEpUT1VrcHY0UTAvQWt2blYvNzdzdGZkYUpENmxoVnpTckU2K2VyMDYvYWJISzNMMWMvU0h3Qy9PWHZibTFNQS9YUGlzNWlhbWN4TlFmWWdxR2c0YzcxVlgzUDE5WUNidjJWMGxLVE9Va3B2NFEwNkZOUjFlM2Vualp1eXJ4M1FlYys2bWtKYVp5RWxOL2lPblFwTDJ6U3pXdDJOQjdTbC9LRjVrK1QySXFKekgxaDVnT0hmTDV2SHE3WlkrYU1tZWxTbHlnVjZMbEd0RStpYW1jeE5RZllsclpmTngyV0sxNmI0ZTYwYnpUVTdaUkpTWjVQTmFsSmpHVmM5SnZscW5sYjI0dFhJRU02Y3AzL3EyTy9mNWM1NXdHWmFaUlBmanNQNXovVnJIOTNjcU4raHZNNDZMRHhEbnFwWGUzTzhjdXBpdmUycVl1dWVzNTk1ejY0UWxYejFlNzk3ZXJsdGEyaXZETkxidlYyazJ0aFgzejZ5Zldxb2wzUHFkT01EL3dMOWFuOGZxSHRXc2ZsTDNFRkxFRU5LZTQ1dVZJWmxWZTdwcnRNRmZoeStsS3ZJVEVGQkZSUUdLS2lDZ2dNVVZFRkpDWUlpSUtTRXdSRVFVa3BvaUlBaEpUUkVRQmlTa2lvb0RFRkJGUlFHS0tpQ2dnTVVWRUZKQ1lJaUlLU0V3UkVRVWtwb2lJQWhKVFJFUUJLemFtdWFqVnVjR0lpTVh4b0sxUGhaRnRhSEpzTENKaWNjeEZ1Mng5S293cm1zYzdOeGdSc1JobW9sL1krbFFnNWprTTEwWWpJa3FhaS9LMk9oVktydWtGNTRZaklrcWFpM2JZNmxRd3VhamJ1ZkdJaUJMbXRPZmNkN3d0VGdXVGk2WTdkd0Fpb29TNWFKbXR6UkNnUG5yTnVSTVFFWDNNUnEyMk1rT0liT05HNTg1QVJCeU11YVlLZlNsVWY4aEZpL1FPeU91VnFudm5JQ0ora2ViS2ZYM1RXbHVWSVV3Mk9rMnZVbHVKS2lJTzJGeTBONUZ0dXM3V0JBcVlxTlpINi9USGZUcXNuWW42WnIyekVCR1AwS3hDczFHYmJzU1dSS1poZ3EwSEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVCcGtVajhCNEFvbStNYlQrM0pBQUFBQUVsRlRrU3VRbUNDIiwic3VwcG9ydGVkRXh0ZW5zaW9ucyI6W3siaWQiOiJobWFjLXNlY3JldCIsImZhaWxfaWZfdW5rbm93biI6ZmFsc2V9XSwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiXSwiZXh0ZW5zaW9ucyI6WyJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiJhZWI2NTY5Y2Y4ZmI0OTUwYWM2MDI0Y2EyYmJlMmU1MiIsIm9wdGlvbnMiOnsicmsiOnRydWUsImNsaWVudFBpbiI6dHJ1ZX0sInBpblV2QXV0aFByb3RvY29scyI6WzFdfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMTktMDktMjciLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IkhJRCBDcmVzY2VuZG8gQzIzMDAiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDE5MDgyMTAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4zLjYiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMyJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAxOS0wOS0yNyJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMTktMDktMjcifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyJmNTEwMDg2NGQxNjM5MTRiNDczOTQ0YjlhMGViNTU0ZmQ1MzJkMGNiIl0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbImY1MTAwODY0ZDE2MzkxNGI0NzM5NDRiOWEwZWI1NTRmZDUzMmQwY2IiXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ill1YmlLZXkgQmlvIFNlcmllcyAtIE11bHRpLXByb3RvY29sIEVkaXRpb24gMVZESlNOIn0sImRlc2NyaXB0aW9uIjoiWXViaUtleSBCaW8gU2VyaWVzIC0gTXVsdGktcHJvdG9jb2wgRWRpdGlvbiAxVkRKU04iLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc0LCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjJ9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50IiwicmVtb3RlX2hhbmRsZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURNekNDQWh1Z0F3SUJBZ0lVU09FalRmLy95cVJmUFc3UXE4cXRJeUNyQWc4d0RRWUpLb1pJaHZjTkFRRUxCUUF3THpFdE1Dc0dBMVVFQXd3a1dYVmlhV052SUVaSlJFOGdVbTl2ZENCRFFTQlRaWEpwWVd3Z05EVXdNakF6TlRVMk1DQVhEVEkwTURVd01UQXdNREF3TUZvWUR6SXdOakF3TkRNd01EQXdNREF3V2pBdk1TMHdLd1lEVlFRRERDUlpkV0pwWTI4Z1JrbEVUeUJTYjI5MElFTkJJRk5sY21saGJDQTBOVEF5TURNMU5UWXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFDZHZsMjd3Mmd1MWZQWGVFRmJJZHF4MEJhbHZWRFZXclFQSjdIcXZpdUV0WkhseFNMeFNGdGNYcFRvbHZMdm9mOGY0dE1lclFUa1ZHemNtWXptMUVCVDRJSnVNbW9FcWZrRUVoV3BzQURNRnJqWmtxbFpZOUVxeFF6TG9WRUVvbkU1b0d4U2RWQ3hDY0xJYWNrcHlSL0NDWHZqMUJ0L2hUZ0U5aFRsRjRwUnF4TWt4M3BsRjd5OGREWmxSSFdzN3ZibmhtQkNHZUkwWlBFUTZubDJtQ2cycjc0YWRGMnU2SzlyckxmaEJDM1FMRThFUHJncVVzSStoa3VxMnRLNE0yU01PcDh1VVZWa3FVZXUzaDBrcjNXVkkwVzAycGtnck9naUZLTEZOa1NyYlloZGpNQkRqNWl6bXFmYzl4SlJLb0RYNjEycWQ4WkdWSHBUNUFZRlgrMWhBZ01CQUFHalJUQkRNQjBHQTFVZERnUVdCQlRaeVU1RGlRL2EyVUVnRTdxQkswemhJc1JOUmpBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQU1BNEdBMVVkRHdFQi93UUVBd0lCQmpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQVh2bkI0U0x1VUpmWU1TVkdBaHNzTC9TbVdsaTNGU2NjZ3h5ZHZLbEFDY2lkSUlXS1FxYTNxL1FTVUVRekM5RGdFZk1ncjdpQzFCa1RaYklMYm9WNlVaNWtuTnN2akVaV3VNZW9nSjh0Z1pzMWhWdkt3Wml6d0orbUVjbXNqaElyQll1b0wxVDZ5ck9KdktGZzFqditDeTRad0E5QnBrL1YzVU9pcjFWeUs4ZEN0eUh1NnZmb3NvdEFkWXg4RkF1UjI0M2dSVE1WNkp4OEpkaWcySkRJQVFNbHpWZURwU1VIWC9LMkhYUkh4SHdmZ2piZ1VqakJ1LzcycjhPZmVoeWh6SFhJM0s4Q0ZGZGZsTys4bkVPSkszeThGMWl2Z1M1dU4vOFNtY1l3L1NUUVl3aHJ4UHV3ejNuUDhiYU11bTRCQjJublltcEI2MHNYM2JsNWs4UVVTdz09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWZDQVlBQUFDR1ZzK01BQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBSFlZQUFCMkdBVjJpRTRFQUFBYk5TVVJCVkZoSHBWZDdUTlYxRkQvM2Q1OXdlUVNJZ1M5QVFBWGNGTEFRWmk5ZnBlVnoxdFkvV1RacjVXeHBjN1c1a25MYTVqSTNaODVzclMybk0yc2p0V3daUzdJVUg0SDR4Q25FUXg0REFaRjc0Vjd1czg4NXY5L2xJbkJ2VkovQjRQdjludS81bnUvNW52TTU1NmZ6QS9RdjBIYi9JclgzVkZLUG80NWNubTRpblVJV1l3TEZSbVpRVXV3akZHL04xaVJIaDFFWjBOUlZSdWRxdDFCZCsyblNLeVMvT2h5czArbGszZS8za1E5cXZENFpVdGE0VlZTVXVZMGVpcHlpVGhBZm9jb09SVmdEdXV3M3FLUmlBZDNyYmNFdGpUallJb2Y2V2FIc0NtelZQV0NNeCtjZ2g4dExxV01LYU1Xc1VqTHFvMlJ0SklRMG9Pem1lcnBRdTRlc1pnc09Oa0d4SDdkMGtkdlRUMTdzNE9NVTdWSThaaGpnR2FNK0FxOWlFTnU4UGlmMXVkejA3TXd2S1dmOEdsVm9DRVkwNFBDNVdkVGFYWUZiUjh2TnZMNSszS2dmYjV4Tk15YTlSYW1KaXluYU1sR1RWdEZscjZiYTl1K3BxbkVYNHVNdVJSZ2pTWUVock43dXRGRmU2bHFhbDdOZmt3NWltQUdIeW5QcGJrOFZtWTB4c3RucHRsRkNWQ1l0elR1Qk44M1FwTUxqVHRldmRQelNVbko3ZThta2p4WjM5ZlhiS0RmbGRacWJ2VStUVWdHbkJWRjZmUTJpUEhnNFcxNlVXVXd2emJrMTZzTVpFK1BuMHB2ejdKU2V1QXllczhsY3BDbWFLdW8vcCtxV3IyVWN3SUFIV3J2UDBZRXpoWEF0TEFic3NIaHA3aUdhbXZ5aWpQOHJ5cXJYVVdYOVhvb3d4eUF1Zk5CcnA0M1BPQkZYWmxrZjhNRFJpcWNweW93QXdwdXoyeCtmV3Z6L0R0ZGU5c21zenlndGNSNkMxd2JkekJsNk9scTVXTllZNG9HYXRoSk1ya1RFeDBqQVJTSEFWcys1cllrUU5YYitRZ2ZQTHNRNmdYeUluc3JlUWZtcG03UlZGWWZMODZuMWZpVU9rWXZTaGtVUHh2YnVrem95NksxaWhNMWhvM1h6VzZFdlNmWEErZHBpV0dhV2QrZG9Yekx6bUd3S1lGTENBc1JBbFBCQWhNbENGWFU3dEJVVlByOEhnVmNKSFdxK0YwMHBscitETVRkclA0enZ4WTExa05NaHhUK1NlVEdnK2Q0VjVMUUppdHlVR0pOQjhWRlpzamdZQlpNL0lJL1hDVGtqMHF5RE9wRjJBVlExN0NJalVwL0RuVDFVa0w1RjVnZGorc1Mxd2cxZ0UzZ2lnbTYwZkNYelNuUFhieUFQYklYditJRHBFMTZUaGFISVM5c2t5aGxtTUU1RjNjZnFBS2hxMkMwRTVQSDFnWWFYYUxQRGtaRzBIREpPbktXSHA1MUkwejVTT3V4OGUxV0F1WnpkSFFyVGtwOFRtalhvSStsYTB3R1pzenVicWJPM2lmUTZBL1c3dlZTWXNWM21SMEpLd2tLYzRXSGlCa21SOEkzQ0NnSTg3b09MNHF6VDVQK1JVSkJlakVPZ0FQSzhoWVB6YXRNK2VJVHAySU85eVRRbWVyb21QUnh4MXF4QWNzaWxlL3ViU2VFYmNXUUdZRUNnaGNMWTJIeUtqb2dqSDI1aE1wanBVdjFPdWdsaTRlaDJlUncwTzMyYkpqa3l1Q2dOemcwdnpsWU1TaVNzMHVvbzRNRzdoTU9qQ0VhWDF5RkUwblN2akJ6dVRuRXBLODZaOElvcUZBSXVidzhrZzlBckVhUkVXU1pJK2pINFhicDZnOUU5RW5KVDNvYVJ6RE4rTVVKQlFESG41NmE4b1VtRUJ1c094QnMvTjUrdEpFYlBrQUZEajhVR3ZPcy9JV3ZjU2dsR0JodlM3L0ZUWWZwV0dZZERZOGZQQXhXU0EzNXNUQzRwNCtMbTRBYXFJb1BlUXRmdWZLNkpoMFpoeGxic1VYT1NtWE5pZkQ1WlRBa3lEb2ZiYmNjbHhuQThXTkFxeENiUk55a2hYeFFwYUR3NjdmWFVZYnNpRzBLaHR2Mm9lSXZoOHJoUU1ZT2NFQXFYRy9lSSt6bmdPYzV5eHI4cTgySUFNMWMvRkxGT3BscXU1ZUZRWHJNWnpHY1ZDalliTFdHNUk0QlQxZXVScmxieHROT3RNaXREREVoTFhJSXluQUF2dU9FV0UzWDNOZEFmdDk0VmdhRzQyWElRdDBaWDZQZUNFL3FRRmU5cks2SHg3WVU1MEt2SDdmVzRmUytxN0tLQkp4c2dnQlg1cFNBR2gxaklyVmg1elE2dzNSZmFhaEJYbS9hQ2JDWlRqQ1VGVVR5V1pxVzlwNjJNakpQWFZxT3JQZ01PNE52NzRHa2Yrb3dmdE5WQkRRbmpGSnFIU3cxN3BYdmhXVzVLWnFlL1E0OU4vVVNUQ0FWV29RWEZJSEJIWFhlM0ZQclVEc3VHRG10Ri9oSEtUSHBla3hoaUFPUEkrU0pxNlM2SEY0STlZV3prQkpUbzQ2aVVNeldwOFBpci9SaWR1THhLWXNTa3NWOHZMbE9RdmhHWDJZbFIwT0JoQmpDK3UvZ0VjdlkwQXBLN1lrNDFOeGpQU1FuV0ZIVEY2NlVyamdldkI4Q3U1YStsMnZZU1JQdHVWRG83M2hoZE1TSG5VWDd0VGpzVlpHeEFsL1dwdGlPSUVRMWduTDI5bVg2L3RSMXRtbGtZajhXNFgrQ1NqV2NVREdZMU5wUy9DN2hTS3FpTUxNL2wyUW1TV1o3M0RkeitnaW84QkNFTllQUTQ2cW5rendYVWJxdkJreGpVUXNXZlpGZ2J1bzNyQWYrd043ak9POTAreW54NFBpM0wrMG5ZTDFTY2hEVWdBUDRnUFYvN0lkMXErMUhTaG11R2tJcVdSUGd5eE1GcVA4SGZqVG5qWHdZNWJRZmJKY3Q2T0l6S2dNSG90Ri9IZTFlZ3NheEhTcUc2d2ZkbVE1eDhOeVRGRnFCY3AyaVNvd0hSM3lrNSszNmhGN3ZYQUFBQUFFbEZUa1N1UW1DQyJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTAyLTAxIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NCwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZdWJpS2V5IEJpbyBTZXJpZXMgLSBNdWx0aS1wcm90b2NvbCBFZGl0aW9uIDFWREpTTiIsImNlcnRpZmljYXRlTnVtYmVyIjoiVTJGMTAwMDIwMjUwMjAxMDA1IiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMDgtMTIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc0LCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ill1YmlLZXkgQmlvIFNlcmllcyAtIE11bHRpLXByb3RvY29sIEVkaXRpb24gMVZESlNOIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVMkYxMDAwMjAyNDA4MTIwMDMiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0wOC0xMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzR9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDItMDYifSx7ImFhZ3VpZCI6Ijg3ZGJjNWExLTRjOTQtNGRjOC04YTQ3LTk3ZDgwMGZkMWYzYyIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiODdkYmM1YTEtNGM5NC00ZGM4LThhNDctOTdkODAwZmQxZjNjIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6ImVXQk0gZUZBMzIwIEZJRE8yIEF1dGhlbnRpY2F0b3IifSwiZGVzY3JpcHRpb24iOiJlV0JNIGVGQTMyMCBGSURPMiBBdXRoZW50aWNhdG9yIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X2RlciJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoyNTYsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDcFRDQ0FrcWdBd0lCQWdJQkFUQUtCZ2dxaGtqT1BRUURBakNCcnpFTE1Ba0dBMVVFQmhNQ1MxSXhFVEFQQmdOVkJBZ01DRk5sYjNWc0xWTnBNUk13RVFZRFZRUUhEQXBIWVc1bmJtRnRMVWQxTVJjd0ZRWURWUVFLREE1bFYwSk5JRU52TGl3Z1RIUmtMakVpTUNBR0ExVUVDd3daUVhWMGFHVnVkR2xqWVhSdmNpQkJkSFJsYzNSaGRHbHZiakVjTUJvR0ExVUVBd3dUWlZkQ1RTQkRRU0JEWlhKMGFXWnBZMkYwWlRFZE1Cc0dDU3FHU0liM0RRRUpBUllPYVc1bWIwQmxMWGRpYlM1amIyMHdIaGNOTVRnd056QXlNRFV6TVRNNVdoY05Nak13TnpBeE1EVXpNVE01V2pDQnJ6RUxNQWtHQTFVRUJoTUNTMUl4RVRBUEJnTlZCQWdNQ0ZObGIzVnNMVk5wTVJNd0VRWURWUVFIREFwSFlXNW5ibUZ0TFVkMU1SY3dGUVlEVlFRS0RBNWxWMEpOSUVOdkxpd2dUSFJrTGpFaU1DQUdBMVVFQ3d3WlFYVjBhR1Z1ZEdsallYUnZjaUJCZEhSbGMzUmhkR2x2YmpFY01Cb0dBMVVFQXd3VFpWZENUU0JEUVNCRFpYSjBhV1pwWTJGMFpURWRNQnNHQ1NxR1NJYjNEUUVKQVJZT2FXNW1iMEJsTFhkaWJTNWpiMjB3V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVFJZnFIaXNpMG9PL2V5T3FTYURycjlpdEcySXltQmtIblNER1FJSVltVCt2cUE4QWdPODFtb21jMkxkNVBHcEVONm11RTU0d1BIUWp2Yy95Q2loOHUybzFVd1V6QVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUFNQjBHQTFVZERnUVdCQlMzSi9meGlBdjIyaXJkQnM5OFNPRGhGN2tVL2pBTEJnTlZIUThFQkFNQ0FRWXdFUVlKWUlaSUFZYjRRZ0VCQkFRREFnQUhNQW9HQ0NxR1NNNDlCQU1DQTBrQU1FWUNJUURjNDFMRks0TEpDQlUyVlZLSXo3WjZzeFBoVUVraDhuTFNMSzZJWGRrUDV3SWhBSWVLVk9aY2hhVk81YUY3ZmJkWG9TcmN5eTFZWWVVZVBMb2pjS0k5Zlg4NCIsIk1JSUNnakNDQWlpZ0F3SUJBZ0lCQVRBS0JnZ3Foa2pPUFFRREFqQ0JuVEVMTUFrR0ExVUVCaE1DUzFJeERqQU1CZ05WQkFnTUJWTmxiM1ZzTVJBd0RnWURWUVFIREFkSFlXNW5ibUZ0TVJjd0ZRWURWUVFLREE1bFYwSk5JRU52TGl3Z1RIUmtMakVaTUJjR0ExVUVDd3dRUTJWeWRHbG1hV05oZEdVZ1ZXNXBkREVaTUJjR0ExVUVBd3dRWlZkQ1RTQkRaWEowYVdacFkyRjBaVEVkTUJzR0NTcUdTSWIzRFFFSkFSWU9hVzVtYjBCbExYZGliUzVqYjIwd0lCY05Nak13TnpFeE1ETTBOakUwV2hnUE1qQTNNekEyTWpnd016UTJNVFJhTUlHZE1Rc3dDUVlEVlFRR0V3SkxVakVPTUF3R0ExVUVDQXdGVTJWdmRXd3hFREFPQmdOVkJBY01CMGRoYm1kdVlXMHhGekFWQmdOVkJBb01EbVZYUWswZ1EyOHVMQ0JNZEdRdU1Sa3dGd1lEVlFRTERCQkRaWEowYVdacFkyRjBaU0JWYm1sME1Sa3dGd1lEVlFRRERCQmxWMEpOSUVObGNuUnBabWxqWVhSbE1SMHdHd1lKS29aSWh2Y05BUWtCRmc1cGJtWnZRR1V0ZDJKdExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCQWgrb2VLeUxTZzc5N0k2cEpvT3V2MkswYllqS1lHUWVkSU1aQWdoaVpQNitvRHdDQTd6V2FpWnpZdDNrOGFrUTNxYTRUbmpBOGRDTzl6L0lLS0h5N2FqVlRCVE1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdIUVlEVlIwT0JCWUVGTGNuOS9HSUMvYmFLdDBHejN4STRPRVh1UlQrTUFzR0ExVWREd1FFQXdJQkJqQVJCZ2xnaGtnQmh2aENBUUVFQkFNQ0FBY3dDZ1lJS29aSXpqMEVBd0lEU0FBd1JRSWhBTlZuSmRlLy90QkxxOE1ERGkrU0FkNlVkWUlaU25nNFBNcW15TnJ2Wmo2NEFpQVgweFN6QWhGYUNDcC91aHBWZ25sRitYQmdyd0FJc290WkdUQjZya0IzMUE9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUErZ0FBQUV4Q0FZQUFBRHZEWWdxQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUVuUUFBQkowQWQ1bUgzZ0FBRmljU1VSQlZIaGU3ZDBIZUJYRjJzRHhONzNRQ1RWQTZGSUZGS2tDVXV5QUV1bUtZa0ZVYklDQ0lpS0NVZ1FFN0wwZ2RsUXNLQ3BTcklnZ1NDK2hKblJDSjRIMGIyZnZlRC8wa2hDU25jMmVrLy92dVhtWWQ0NlhrSk56OXN5N00vTk9RSlpGQUFBQUFBQkFnUXJVZndJQUFBQUFnQUpFZ2c0QUFBQUFnQWVRb0FNQUFBQUE0QUVrNkFBQUFBQUFlQUFKT2dBQUFBQUFIa0NDRGdBQUFBQ0FCNUNnQXdBQUFBRGdBU1RvQUFBQUFBQjRBQWs2QUFBQUFBQWVRSUlPQUFBQUFJQUhrS0FEQUFBQUFPQUJKT2dBQUFBQUFIZ0FDVG9BQUFBQUFCNUFnZzRBQUFBQWdBZVFvQU1BQUFBQTRBRWs2QUFBQUFBQWVFQkFsa1czUFNzek5WWFNEeVRLcWExYjVkU2FkWks2ZTQra0h6OW05NG4zLy9tQWNRRWhvUkpjdXBRRVIwVkpXSlZLRXQ2Z3ZvUlhyeVpCcFVwSlFDRDM0UUFBQUFCZjROa0VQU3NqUTA1dDNpS0hQdnBFanYrd1FOTDM3Wk9zMURUOUtJQ3pDWXlNbE5BYTFhVEVOWjJsWkpmT0VscWh2UFdPRDlDUEFnQUFBUEFhenlYb0tqRS9NdmM3U1h4emhweGFzVkwzQXNpUGdOQVFLZHF4dlpTOVk0QVVhZEpZOXdJQUFBRHdFazhsNk1kLysxMzJqSHRLVXRhdDF6MEFuRmE4NjlWU1lkZ1FDYXRTUmZjQUFBQUE4QUpQSk9nWkowN0lub2xUNVBBSEg0dGtadXBlQUtZRWhJZExoVkVqSktwWGR3a0lEdGE5QUFBQUFBcFNnU2ZvcDdac2xSMERCMG5xMXUyNkI0QXJBZ0trMkJXWFNwWEpFeVNvYUZIZENRQUFBS0NnRkdpQ2Z1TFA1UkkvWUpCa0hEbWlld0M0TGJ4UlE2bjI1aXNTRWhXbGV3QUFBQUFVaEFKTDBFOHNYU1k3YnJsRE1wT1NkQStBZ2hKYXE0YlUvT2hkQ1M1ZFd2Y0FBQUFBY0Z1QkhKQ3NsclhIMzNrdnlUbmdFYW1idDhyMmdZTWtnL2NrQUFBQVVHQmNUOURUang2VDdiZmRJUm1IRHVzZUFGNXc4cysvWk9jamowa1doUm9CQUFDQUF1SHFFbmQxeG5uOEF3L0pzUy9tNko1ekZ4Z1pJVUdsU2tsSWplb1NWS0s0N2dVS09ldHRuTDV2djZUdGlKZU1JMGNsS3kxTlAzRHVLazRZSzJYNjlOSVJBQUFBQUxlNG1xQWZYYmpJTGdwM3prZXBCUVpLK1BrTkpLcC9QeW5XdXFVRWx5a2pBVUZCK2tFQWY4dE1UWlhVWGJ2azZMZno1TkRNOXlWOXoxNzlTTzRGbGl3aDUvM3dEVVhqQUFBQUFKZTVscUJuSkNWTDNGWFhTRnJDVHQyVE82RTFxMHZGVVNPa2VOczJkcUlPSUhjeVQ1NlVneDk4TFB1ZmVWNHlqeDNYdmJsVG9sdFhpWms2eWJwQ0JPZ2VBQUFBQUthNWx2RWVtZlAxdVNYblZtSlFvbWVzMUo0elc0cGYwbzdrSERoSGdSRVJVdmJXL2xMTGVnK3BvOVRPeGJGdnY1ZFQ4UWs2QWdBQUFPQUdWN0pldGV4Mi8vTXY2U2dYckdROGF0QkFpWGxxdkFTR2grdE9BSGtSVnFXeWZZUmE1TVV0ZGMvWlpaMUtrZjNQdnFBakFBQUFBRzV3SlVFL3NYaUpwTy9hbzZPekNBaVEwamYzaytpaDk3TzhGbkNJdXRGVjdkVVh6MmttL2NTQ1JaSis1S2lPQUFBQUFKam15aDUwVmJuOTZHZGY2Q2huS29HbytmSDdFaGdXcW52eXlmcnhzdExUSmYzRUNjazRmbHl5VXZOZTNScHdpenF0SUxoWU1YdVp1bDBRMGFHYlZhZTI3NUROVjE0aldTa3B1aWRubFo2WklxV3Y2YUlqQUFBQUFDWVpUOUJWY3J5dWVSdkpQSHhFOStRZ09GaXF6M3BQaWpacHJEdnlMbm5kZWprMmY2RWsvYnBZVXJac2xZekVnL29Sd0hjRXgxU1JpTnExcEdpSGRsS3NZM3NKcTFoUlA1SjMrMTU2VmZaUG1xcWpuQlc5cktOVWYvVkZIUUVBQUFBd3lYaUNucnhtcld6cDJsMUhPU3ZhOFJLcC92ckxlWjR0ekR5VklrZSsvVTRTWDN0VFV0WnQwTDJBbndnTWxLS2Qya3VaVy90THNSYk44L3crU1Q5NlZEWjF2Rkl5RGgzV1Bka0xLbDVjNnY3eHN3U0doZWtlQUFBQUFLWVkzNE9lL05kSzNUcTcwbjE2NVMzcHlNcVM0NHQvbDdqTzNXVFhrT0VrNS9CUG1abHlZdDRDMlg3RExiSnQ0Q0JKeVdPVjllQVNKYVRFdFYxMWxETjFWRnZxemwwNkFnQUFBR0NTOFFUOTVQcmNKY3NCa1JGUzdKSzJPc285VlNGKzk4VEpzdU9tQVpLNmRadnVCZnlZU3RSL1dDaWJ1MTRuaCtkOFk4Zm5xa1NYcTNRcloxbHBhWkxDK3dvQUFBQndoZGtFUFN0TDByWnUxMEhPd2h2VWw4RFFjeXNNcDRxK2JiL2pIam40NnB2MlhuZWdNTWs4ZGx4MkRoNG1lNlkrWTcvWHprVkV6Um9TV0xTb2puS1dzaWVYSnpBQUFBQUF5QmVqQ2JyYTNwNlJuS3lqbkttem1zK0ZTczYzM1RwUWtoYjlwSHVBUWlnalF4SmZlTVZlUlhJdVNYcEFSSVFFbDQzU1VjN1NkNU9nQXdBQUFHNHdPNE9lbVNtWnVUek9LYWhDZWQwNk83WHNObjdZQ0RtNWJJWHVBUW8zdFlya3dGc3pkSFIyNnVpMmdORGNGWDdMMkxkZnR3QUFBQUNZWkh3UHVnbjdYM3RUVG56M2c0NEFLUHNtVFpPa0ZYL3BDQUFBQUlDdk1Yck1tdG9YdnFsTHJLUnVqTk05MllzYU5GQ2lodzNWVWZaT2JvcVRMVjJ1czJmUmN5MHcwTjV2RzF3bVNnS2pTdWxPd0tPc2QyVEd6bDJTY2VLRVpKNUkwcDI1RTFxcmh0VCs4bE1KaklqUVBXZVdsWkVoY1oxakpXWGpKdDJUdlpMZHVrcVZhWk4xQkFBQUFNQVUzMHJRclgvcXR0dnVrQk1MYzdudjNENDN1b09VSFhDemhOZXJLOEhGaXVrSEFJL0x6SlMwdzRmbHhPOS95SUhuWDdJU2FlczlsSnUzYWtDQWxCOHhUTXJkZnF2dU9ETVNkQUFBQU1CN2ZHcUplOUtxMWJsT3prTmlxa2oxajJaSzlWZGZrS0xObTVHY3c3Y0VCa3BJVkpTVTZueVYxSjR6V3lvK09Wb0N3c1AxZ3ptd2t2akVsMStUaktSem0za0hBQUFBVVBCOEowRzNFbzhEcjc2aGc1eUZuOTlBYXM3K1NJcGUxRlQzQUw1TEZYUXJjMzBmKzRaVFVNa1N1amQ3R1ljT3l4RjFQam9BQUFBQW4rSXpDWHI2a2FPUzlNdHZPc3BlY01YeVV1MzFseVdrZEduZEEvaUhJbzNPbDhyUFRiVmU1RUc2SjN0SFB2dEN0d0FBQUFENENwOUowSk5XcnBMTVk4ZDFsSTNBUUtrNGRyU0VsQ3VyT3dEL1Vyek54VkxxaGo0NnlsN3lueXNrNC9nSkhRRUFBQUR3QmI2VG9QLzJ1MjVsTDd4ZUhTblI0UklkQWY2cDdJQmJKU0E0V0VmWnlNaVFwSlVyZFFBQUFBREFGL2hNZ3A2OGJwMXVaYTlFbDZ2dC9icUFQd3VyWEVraVdqWFhVZlpPclY2cld3QUFBQUI4Z1U4azZGa1ptWksyYWJPT3NsZnNzazY2QmZpM1ltM2I2RmIyVXZmdjF5MEFBQUFBdnNCSEV2UjBPMGsvbTdBS0ZYUUw4RytoMWF2cFZ2WXlUM0RVR2dBQUFPQkxmR2FKZTY0RTZEOEJmOGRySFFBQUFQQTcvcFdnQXdBQUFBRGdvMGpRQVFBQUFBRHdBQkowQUFBQUFBQThnQVFkQUFBQUFBQVBJRUVIQUFBQUFNQURTTkFCQUFBQUFQQUFFblFBQUFBQUFEeUFCQjBBQUFBQUFBOGdRUWNBQUFBQXdBTkkwQUVBQUFBQThBQVNkQUFBQUFBQVBJQUVIUUFBQUFBQUR5QkJCd0FBQUFEQUEwalFBUUFBQUFEd0FCSjBBQUFBQUFBOGdBUWRBQUFBQUFBUElFRUhBQUFBQU1BRFNOQUJBQUFBQVBBQUVuUUFBQUFBQUR5QUJCMEFBQUFBQUE4Z1FRY0FBQUFBd0FOSTBBRUFBQUFBOEFBU2RBQUFBQUFBUElBRUhRQUFBQUFBRHlCQkJ3QUFBQURBQTBqUUFRQUFBQUR3QUJKMEFBQUFBQUE4Z0FRZEFBQUFBQUFQSUVFSEFBQUFBTUFEU05BQkFBQUFBUEFBRW5RQUFBQUFBRHlBQkIwQUFBQUFBQThnUVFjQUFBQUF3QU5JMEFFQUFBQUE4QUFTZEFBQUFBQUFQSUFFSFFBQUFBQUFEeUJCQndBQUFBREFBMGpRQVFBQUFBRHdBQkowQUFBQUFBQThnQVFkQUFBQUFBQVBDTWl5NkxianN0TFRaVk9YV0VuZEdLZDdzaGMxYUtCRUR4dXFvMy9LVEUyVkRhM2FTOGFoUTdybnpCcXNYUzZCa1pFNk1pYzFQa0ZPcmQrZ0kvaXowSmdZQ2E5WFIwZmVjV1QrQWtrWU1FaEhaMWFpUjZ6RVRKNmdvMy9LeXNpUXVNNnhrckp4ays3SlhzbHVYYVhLdE1rNkFnQUFBR0FLQ1hvZUhKejV2dXgrYkt5TzRNK2krdmVUNk1jZjFaRjNrS0FEQUFBQS9vY2w3Z0FBQUFBQWVBQUpPZ0FBQUFBQUhrQ0NEZ0FBQUFDQUI1Q2dBd0FBQUFEZ0FTVG9BQUFBQUFCNEFBazZBQUFBQUFBZVFJSU9BQUFBQUlBSGtLQURBQUFBQU9BQkpPZ0FBQUFBQUhnQUNUb0FBQUFBQUI1QWdnNEFBQUFBZ0FlUW9BTUFBQUFBNEFFazZBQUFBQUFBZUFBSk9nQUFBQUFBSGtDQ0RnQUFBQUNBQndSa1dYVGJjVm5wNmJLcFM2eWtib3pUUGRtTEdqUlFvb2NOMWRFL1phYW15b1pXN1NYajBDSGRjMllOMWk2WHdNaElIWmx6Y3ZVYU9mN2p6enJ5dnVRL1Y4anhSVC9weUZubEI5OHJFdVMvOTNraUdwMHZ4ZHExMFpGM0hKbS9RQklHRE5MUm1aWG9FU3N4a3lmbzZKK3lNaklrcm5Pc3BHemNwSHV5VjdKYlY2a3liYktPQUFBQUFKaENnbDRJSkw0NVEvWThjZVpFTGI4YXhxMlJnT0JnSGNFdC9weWdaNldsU1ZhbXNjdFM0Uk1nRWhnU1l2MXBOUUFBLzBPTk04V0ZqNTJBNENBSkNBclNVY0Z6OWZPV3p5SWcxMGpRQ3dFU2RQL2p6d242dHFIRDVOU0tsVHBDZmdXVktDNjFQbjVmQWtORGRROEE0SFJ4M2Z0SStsbkdtRTRvUC93QktYM1ZGVG9xV0JsSlNiTGx4bHNrNC9BUjNXTldaSXRtRWpQK0NRa0laSGN0Y0RZazZJVUFDYnIvOGVjRVBhN2Z6WEp5OFJJZEliOUNhMVNYdXZPKzBSRUE0Ti9XdFd3bjZRY082TWljNkVuanBVejNXQjBWb014TTJUNTBtQno3eXAzUGh1QUs1YVgyN0k4bHBGdzUzUU1nSjl6R0FnQS9GbGFycG00QkFDQ1MrTkVzMTVMemdMQXdxVEoxRXNrNWNBNUkwQUhBajRXV0w2OWJBSURDTG5uZGV0a3o3aWtkbVZkdXlMMVNyRVZ6SFFISURSSjBBUEJqWVkwYTZoWUFvRERMT0g1YzRnYy9LRmtuVCtvZXM0cGRjWm1VdSswV0hRSElMUkowQVBCajRUVnI2QllBb05ES3lwTGRrNTZXMUMxYmRZZFpJWldpcGNyNHNSU0ZBL0tBZHcwQStLdWdJQW1yVUVFSEFJREM2dkEzMzhyaER6N1drVm1Ca1JFUzg4SXpFbHl5cE80QmNDNUkwQUhBVHdXVktpV0J4WXJxQ0FCUUdLWEV4OHV1a2FQdFdYVGpnb0trd3FoSHBNajViSzhDOG9vRUhRRDhWRkRSSWhJWUZxWWpBREFyTXpOVFRwNDhLWWNPSFpLdDI3YkowcVZMSlRVMVZUK0tncEI1S2tWMkRINVFNbzhmMXoxbXFhTlp5L1RzcmlNQWVVR0NEZ0IrS3FSeUpRa0lDdElSQU9TTlNyelQwdElrT1RsWkVoTVRaZlBtemJKNDhXSjU3LzMzWmR6NDhUSjR5QkM1TmpaV2F0ZXRLK2ZWcXlkMXJLOTZEUnBJNjdadDViaExpU0hPUU8wN2YycXluRnE1V25lWUZkNm9vVlFlTzFva0lFRDNBTWdMRW5RQThGT2hWV04wQ3dCeXBoTHdBd2NPeU5xMWEyWDI3Tm55NGtzdnlXT2pSMHUvbTI2U2k5dTFrNmJObXRsSmQ2V1lHS25Yc0tHMDY5QkJicjcxVm5sODdGaDV3ZnB2djVrN1YrTGo0Mlh2M3IxeTVPaFJPNmxId1RxNjZDYzUvUDVIT2pJcnNHaFJpWmsrUlFMRHczVVBnTHdpUVFjQVB4VktnVGdBT1RoMjdKaGNldm5sVXJkK2ZZa3NWa3lpcTFTUkprMmJTcSsrZmVYK0lVTmt3bE5QeVVjZmZ5ekxsaTJUOVJzMnlPNDllMGk4ZlVUcTdqMnljL2dJeVVwUDF6MEdCUVJJOUpPUFMzalZxcm9EUUg2UW9BT0Fud3Evb0pGdUFjRC9VdnZERi8vK3Uyelo2czdSVzNCSHB2VjdqWC9vRWNrNGRGajNHR1FsNTFFRGJwYlNYVHZyRGdENVJZSU9BSDRxdkVvVjNRSUFGQmI3WDMxZGtuLzdYVWRtUlY3VVZDb09IYXdqQUU0Z1FRY0FQeFFRRVNFaFpjcnFDQUJRR0J4ZnNsVDJQL2VTanN3S3JsaEJxajQzVlFKRFEzVVBBQ2VRb0FPQUh3b3VYMDRDUW9KMUJBRHdkK2xIamtqQ3NJZXNodmw5NXdHaElWSjU4Z1FKS2N1TllNQnBKT2dBNElkQ1NwYVVnRUF1OFFCUUdLaGljUEhESDVIMFhYdDBqMWxsN3JwRGlyZHFxU01BVG1MMEJnQitLS1JHTmM2aUJZQkM0c0RiNzhpSitRdDFaRmJSOXUyazRyMkRkQVRBYVNUb0FEd2xwRnhaQ2ExUzJiV3ZrSW9WM1Vsa3JlOFJVaW42alA4R0UxOFI5ZXZyYnd3QThHZEpLMWZKdnFuUDZNaXNFT3Z6SldiS1JHNEFBd1lGWkZsMDIzRnF1YzJtTHJHU3VqRk85MlF2YXRCQWlSNDJWRWYvcEk2TDJOQ3F2V1FjT3FSN3pxekIydVVTR0JtcEkvd3Q4YzBac3VlSkNUcHlWc080TlJJUXpENVh0eDJadjBBU0J1Ujg5N3BFajFpSm1Yem0zM3RXUm9iRWRZNlZsSTJiZEUvMlNuYnJLbFdtVGRhUi96a1ZIeTl4bDNVMmZsWnNZSkVpVW1mQmR4SlNKa3IzQUVEQlNreE1sS28xYXRqSHJabXlkOWN1aVlyeTluVnZYY3Qya243Z2dJN01pWjQwWHNwMGo5V1JNOUtQSFpPNGJqMGxiVWU4N2pFbk1DSkNxbi93amhRNXY2SHVBV0FDTStnQUFBQ0FEOXIxeEhoWGtuTUpESlR5ano1RWNnNjRnQVFkQUFBQThERUhQNTB0UnovN1FrZG1sZWphV2NyMDZxa2pBQ2FSb0FNQUFBQSs1R1RjWnRrelpweU96QXFyYzU1VUdUZUdrMEVBbC9CT2cwOVI5UWkyOXJ0WjFsM1F3dmhYM0xVOUpPTkVrdjdPQUFBQUJTL2p4QW1Kdi84QnlVd3lQMFlKTEZaTVlwNmZadTgvQitBT0VuVDRqcXdzMlRmOWVVbjY5WGZKT0hMVTZGZG04a21wT0hxa0JCVXRvcjg1QUtDd3lNek1sUFQwOUROK1pXUmtXQjlIeHVyckFqbktzbDZidXlkTXlsV1IxM3dMQ3BUb01hTWtva1lOM1ZGNHFmZDhUdGNGOVJqZ0ZLcTRGd0wrVXNYOTJNKy95STViN3hUclNxaDd6Q2w3LzkxU1lmQzlPdkllcXJnN2h5cnV2aThsSlVYV3JsMHJmNjFjS2Z2Mzc1Y0RpWW42RVpHdzBGQXBXYktrbEMxYlZtclhyaTMxNnRiMWZFVnB1Q2NwS1VtMmJ0MHFxMWF2bGoxNzlzaTI3ZHRsNDhhTmN1clVLVGw1OHVRWkI5MFJFUkVTRWhJaXBVcVZrZ2IxNjB1bFNwV2thdFdxZHJ0eTVjb1M3RU1ubTFERi9UOThxWXI3a2UrK2wvaDdocWk3U0xySG5OTDkrMG5sVVk4VXVpUFYwdExTSk40YUd5eGZzVUlTRWhJa0xpNU9ObGxmNnJxUW5KeXMvNnYvcDk3ellXRmhVcng0Y1duWW9JRjlIYWhXclpvMGJ0VEl2ajc0MGpVQjNrQ0NYZ2o0UTRLZXVudVBiTFplU3htSGorZ2VjeUpidDVRYU05LzA5RjRyRW5UbmtLRDdwcU5IajhyY2I3K1ZEejc4VUg3ODZTYzcwY3F0T3VlZEo0OC85cGowNk5GRDk2QXdVTW4ydG0zYlpQSHZ2OHVpSDMrVXYvNzZTMWF1V3FVZmRVWjRlTGcwYjlaTUxyamdBbW5Wc3FXMGJOSENIcUI3RlFuNmYvaEtncDZTc0ZQaXJ1a3VtY2VPNlI1eklpNXNJalZudmkyQjRXRzZ4MytwMTcrNndmdkxMNy9JL0FVTDVQY2xTK1NZUTg5eHBKV1h0RzNUUnRwZmNvbTBzSzRIelM2NnlMNU9BRGtoUVM4RWZEMUJ6MHhKa2EzWDk1ZVR5Ly9TUGVZRWxTMGp0YitlTFNGbHkrb2VieUpCZHc0SmV1NzhiaVUxNjlhdjE1RXpMcklHS28zT1AxOUh1WFBBR2tTLy9PcXJNdVhwcDg4NGs1RmJzejc2U0xwZGU2Mk96dDJzVHo2UjQ4ZVA2OGg1VjE1eGhVUkhSK3ZJR1o5OTlwa2NPWHBVUjg2N3hCcUExdlRZVWxpMUhIM1RwazN5MmV6WjhzbW5uOHI2RFJ2c1ByY0VCUVhaTjRSNjlld3BWMTE1cFRSbzBNQ2VhVE5wMWFwVnN1elBQM1dVc3hNblRzaERJMGJZUzNSTmVYcnlaQ2xhdEtpTzhxNTgrZkxTK2VxcmRlUXNYMGpRczlMU1pITy9tK1hrc3VXNng1emdjbVdsMXV4WkVscWh2Tzd4UCtvMXIyN1FmV2g5RnJ6NzNudHk4T0JCNDF0WEFnSUNwRml4WXRLamUzZnBkLzMxMHJ4NWMrUFhnek5STnlzLy8rSUxPWExFN0tSWDZkS2w4L1U1bTFmcTUzdG41c3d6cm9CeWlyckowcnRYTC9zYWJ3SUplaUhnMHdtNjlmTGM4OHp6a3Zqc0MxWmI5eGtTWUYwa3E3NzltaFJyMlZ6M2VCY0p1bk5JMEhQbi9pRkQ1TVdYWHRLUk0rNjc1eDU1ZXNvVUhlVk1EYVptelpvbFF4OThVQkt0Z1ZSK3FPV0dmLzd4aDlTdlgxLzNuQnYxc2Rtb1NSUFpzSEdqN25IZXQ5OThJNTA2ZHRTUk01bzJhMll2NVRibG5iZmZscjU5K3Vpb1lLa1ZGZDkvLzcxTXNsNWZhaEN1bHF3V05EV1FVMHRmQjl4NnEvMDh4Y1RFMkFOMnAwMmROczFPdXYyTlNtbytzQklwRXp5Zm9GdlhuRjBUSnN2Qk45N1NIZWFvTVYzVjExK1M0bTNiNkI3L29tN3Nmajl2bmp3MWFaS3MrT3N2VjIvWW5VNjk5NnRYcXlhRDc3L2ZUdlJVTXV1bTJ3Y09sTGZmZVVkSFpxaWJFYnNURWx4Zk1hQzJMZFUvLzN5anY5c083ZHZMZDNQbkdybUdLeFNKZzZjZCsyMnhISHpoRmVQSnVmVU9rektEQnZwRWNnNzRpNFNkTzNVclo0Y1BINWJyYjdoQmJyN3R0bnduNTRxYXpWT0pFdnlQV3FyNjN2dnYyemNqZXZYdGE4OGtleUU1VjlSZ2NjZU9IVEpxOUdqN0JzKzFzYkd5ZE5teUFrc1FmRTNyVnExMHEvQlJOWGdPempDYlRQMnR6RjIzKzJWeXJtN3lmdm5sbDlLa2FWUHAyYnUzZlcwb3lQZWV1dEc3ZGRzMnVXL3dZS25Yc0tFOFBYVnF2bGFGbmF0ZXZYcnBsamxxbFptcUQrTzJKVXVXR1AvZDlyRmVRNmFTYzRVRUhaNlZkaUJSZGozd3NQR1pUU1d5V1ZNcGY5ZEFIUUZ3d3hycmcvdHNpN2pVbnVHMjdkdkw3QysrY0d5NVdwa3laZXc3Ky9BZjZuWDA4ODgvUzV0MjdlVG1XMitWTFZ1MzZrZThLZm5rU2J1R2d2cjNYbkhWVmZZV0V1U3NSaUd0Sko2NmI3OGtESC9FeWpETko1TkYybDRzRmU2OVcwZitRMjNQdXJwTEYrbHVKYVhxTThWckRoMDZKQTgvOG9oOVkvR0xMNzg4NitlaUV5NnhyajJxMEtWcGM3LzdUcmZjTTMvaFF0MHlRNjBJdUM0MmY4VWV6NFlFSFo2azlsb2xQUGlRcEZzZlRLYXB2Vll4ejArWGdKQVEzUVBBRGNlT0hyVXJaV2RIVmM3dGVPbWxkbFZ0SjExNHdRVkc3M3pEWFdvZjlkQUhIcERMcnJ6U1hyTHFTOVJOSjFYa1VOMkU2dDZ6cDJ6YzVNTFJXVDVJN2ROVlZmSUxHN1hGTStIaFJ5VGp3UCtmVEdGS2NNVUtFak41b2dRWTJsTmJFTlNLbXNsUFB5MHRXcldTaFlzVzZWN3YycnhsaXoyNzMrK21tK3g2S3lhRmhvWktkOE5KcHJKNDhXTGRjb2U2cHFvaW9DYXBteHZxZEJpVFNORGhQVmxac3UrbFZ5WHBwMTkxaHprcUthODBhWnlFbEMyamV3QzQ1ZGp4NC9ieTlUUFp2WHUzWEc0bFhEdDM3ZEk5emltTUEzMS9wV2JEMm5mc0tNKy8rS0xQTHhYLzhxdXY1S0xteldYc0UwL1lOeDN3LzBLQ2c2VkNoUW82S2p6MnYvRzJPMk9oaUFpcCt2eDB2eG9McVdNVHUxNXpqVHd5Y3FSOVBKcXZVTFBuSDgrYVpjK20vN0YwcWU0MTQ3cnJyak4rczFvdGNUZDVTc1MvcWFNeTFWWWlrMjdzMTArM3pDRkJoK2NjLzMySkpENy9zbzdNaWhwd2l4Uy9wSjJPQUxoSnpaNnJzMmIvVFJYNDZ0V25qNUhrWEZIVnh1SDdsbHFEVjdWRTNPbWowZ3FTU2lTZUdEZE9XbDU4c2F4WXNVTDNvbTdkdW9YdWFLcmpmeXlWQTlPZjA1RkJnWUZTWWZoUUtkS2tzZTd3ZlN0WHJyU3ZEUXQ4WU5ZOE8zdjI3clZ2VXM5ODkxMWpTOTVWWFFkMURKeEp1M2J2TnA0d24yN2V2SG02WlVaRVJJUjl5b3BwSk9qd2xMVDkreVhoL2dmdEplNm1SVFMvU0NvTXZVOUhBQXFDdXR0OU9yVThiY2dERDhpU1AvN1FQYzRLQ3cwdHRIdFovWWs2ci9pS3E2K1cvUzVVM2k0SWFsdEgzMzc5WEoxNThyS2FOV3ZxVnVHUWZ1eTQ3QnoraUNzMWVJcGZlWm1VNlhlOWpueWZXbExkdmxNbmlVOUkwRDIrUzkyc0huam5uVEp0K25RalNYcVJJa1drMnpYWDZNaWNiMTNhaDY2ZW8zay8vS0FqTTlUcEtpVktsTkNST1NUbzhBejFRYVFLb2JpeDF5b29xclRFVEoxay9BeDNBRG43N1YvNzA5VHhOMnJHd0pTeVpjdEtLY043eDJEVyt2WHI3UlVXSnMraDk0TEpUejFsN3hPRlNMT0xMdEl0LzZlT1FVMFlPVXJTRW5KM3lrVitoTmF1S1ZVbWpwT0FRUDlJQjM3ODhVZTVxa3NYdjlvaW9xclBqeGc1VXA1NTlsbmQ0eXhWamR5MHhTNFZ3VHlWa2lKL0dMcTUvN2NCdDkybVcyYVJvTU16OXIvK3BpVDkrSXVPekxIM25VOGVMNkdWb25VUGdJSnkraEwzbzBlUDJrZk9xQUdKS2VYTGw3Y0xUc0UzcVdySHNUMTZ5SUZFOHpkeUM5S2RBd2RLVnl2UndIODBiZHBVdC94ZjRydnZ5L0Z2ek04NEJoYUpsSmpwVXlTb1NCSGQ0OXZVcXF0dTNidmJzODcrUnEwc0cvYlFRL0xlZSsvcEh1ZTBiTmxTaWhjdnJpTXoxTEZuS1ZieWJOcm11RGpadTIrZmpweW56cXB2MTdhdGpzd2lRWWNublBoanFleWZQRjFIWnBVZWNMT1U2TkJlUndBS2twb04vZHNiYjc1cC9BaWNwaGRlU0FWM0g2V1dMNnFDVDF1MmJORTkva2tWTVp3d2ZyeU9vUGFlVjZ0YVZVZitMWG5OV3RrN2VhcU9EQW9Na0lwalJrbGszYnE2dzdkdDM3NWR1dmZvNGZmRkZlKzgrMjdIdDMrcGF1UlhYM1dWanN6WXQzKy83TGUrVFB0bTdsemRNa010YjNmcmlGWVNkQlM0OUVPSEpHSEljSFdMVVBlWUU5bWltVlFjd3I1endDdlVIbUsxVkRreE1WSEdqQjJyZTgxUnhhYmdteFl0V2lSdnpaaWhJLytrOW9TKy9lYWJVclJvVWQyRGtpVktTRlJVbEk3OFYvcXhZN0pqOElPU2RkSnd4ZkdBQUNuZDczcUo2bmF0N3ZCdGFzYThkOSsrZGhMbzcxUVJ5UnY2OWJOWEVqbkpkRlZ5Tlh2KzcrMXNUbE9yREV6dWRWYzM5dSs0L1hZZG1VZUNqZ0psbjNjK2JJU2s3OTZqZTh3SktsVktxa3lmekhubmdJZW81ZXo3OXUyVDk5NS9YNUp6T0JQZEtlcjhVdmdlOVRvWk5YcTBQUWp6VjJvQU9PS2hoNlJKa3lhNkIwcjVDaFhzeXNsK0xTdExkajA1UWRLMi9iTm9wZ25oOWV0SjlFTVAyb202UHhqNzVKT3kzTVVURDRLQ2d1eGlvMnBsaC9wU1c2WkNySEdsV3l1emRzVEh5NTJEQmpsNkxXemVySm1VS1dQMmlMMXZ2LzFXdDh3NGV1eVlyRHR0Ulo3VG9pdFdsR2JXOCtRV0VuUVVxUDF2elpBVEMzN1VrVUhXaFRONi9CZ0pMWVRucUFKZXBxcFVyOSt3UVY1NjJmelJpbW9nVmExYU5SM0JsNmlxN2FZcSszdUZPdkpvNkpBaE9zTGZHamRxcEZ2KzY5Q1hjK1RvWjEvb3lKeWdNbEZTOWFYbkpOQlBqcXo3K2VlZlplcTBhVG95UnhWcnZPTHl5K1dGNTU2VFgzLzZTYlp0MlNKN2QrMnl2L2JzM0NrYjFxNlZiK2JNc1crdzFhOVhULysvelBuSytsNU96aGFycXVRZERCOC8rck4xRGMvSXlOQ1I4OVRKRjA2dkxEaGQrL2J0alI5SmR6b1NkQlNZRTM4c2t3TlRudEdSUVZaeVh2cTIvbEx5eXN0MUJ3QXZlZk90dDJUTDFxMDZNcWRxMWFxdWZzRENHV3J2K2JQUFA2OGo4NnBVcVNJMzMzU1RQRDE1c3N5ekJzRWIxNjJUclhGeHNtLzNidG0wZnIyc1c3MWE1bi8vdlR6M3pETXljc1FJdWFaclY2bFh0NjRFNStOVWtLalNwZVdkR1RQc21UajhVKzNhdFhYTFA1M2F2a04yang1cno2S2JGQkFTTEpVblBDRmhmbElnViswM0h6QndvSTdNVUxQaXZYcjJ0Ti96Yzc3OFVnYmVmcnRkc0ZDZEJxSzJvNmd2dFNjNUppWkdMdTNVU2NhT0dTUExseTJUMlo5K0t1YzNiS2ovRnVlcEZVWDNEeDdzMko1NzlYUGVjTDNaby9aVVljKzllL2ZxeUhuZldkZGtrOXhjM3E2UW9LTkFwQ1VlbElUN0gzRG52UE1MbTBqRkI1bVZBTHhxenRkZjY1WlpsYUtqODVWRW9XQWNQSGhRZnZyNVp4MlpVNzE2ZFhsdjVrdzdJWC90MVZmbHZudnZsZmFYWEdLZm02K1NkbFhCVi8wM0ttRnMxNjZkM0huSEhmTDQ2Tkh5NmF4WnN1TFBQMlZYZkx4OC9PR0g5a0MzU3VYSyttL05uU21USmttTTlUM3d2L3g1VzBwR2NyTEVXMk9oek9QbWk1dEYzWGFMbE9qWVFVZStiOUtVS2JMVllGSFI0bGJpUFhQR0RIbjNuWGZzbTd1NXBaYkFkK25jV1JiLytxdWQwSnV5ZmNjT2VmNkZGM1NVZjVkWTF6cFZNTTZVWk91MS9xZDFuVFJCM2NUOTRndHpLMURVNy84aWw0OTZKRUdINjdJeU0yWFg2TEdTdnRmY1VRaC9VOHU1WXA2ZEtvRWNxd1FVZW01L3dNSVpxMWV2dG8vZ00rbmkxcTNsajhXTDdkbXl2TXhpcTBHNVN1Qmp1M1d6aTd5dFc3TkdmbHE0VUhyMjZISFdJNHh1Nk50WGJyamhCaDNsbjdweHNOTWF2T2ZtYTlXS0ZjYlBXbC8xMTE5bi9ONjUvVkw3WS8yUkdndnRmbXFLbkZxelZ2ZVlVNlJOYTZrNDlINGQrVDYxRDl2SjVQVGYxRXFyRDk5L1gzcjM2bVhQTHVlRjJsTDE3UFRwY3YrOTkrYjU3emlicWRiZjc5UzFVYTBHdUxSalJ4MlpNWC9CQXQxeWxxb1FiL0owajhzdnZkVDExVTBrNkhCZDR0c3pYVG5qVTRLREpIckNFeElhWFZGM0FDak1hdGVxcFZ2d0phWm56MVZpL2NGNzd6azZlNlNLUjdWcTFVcmVmL2RkZTNuc3hQSGo3UlVjL3g2b3E1bjJwNTkrMnRFQnZFb3UxSG4vdWZsU1MzVk5LMmQ5anpOOTc5eCtxWnNmL3Vqb0R3dms4QWNmNjhpYzRITGxKR2J5UkFud28rZHhpdldlVWFkL21ESjYxQ2k1N0xMTGRKUjM2clU3ZnR3NFk2dEFEaDgrTEsrKzlwcU84a2RkZzlRTlNwTisrZlZYM1hMV1h5dFhHaTB5YTdySy9abVFvTU5WU1N0WHliNHA1Z3Q2S0tYNjlwYVNuZnhuT1JlQS9GR3pwUEE5Sml2ektwZGJBL0dLRmMzZHlGVko1Z05EaDlxejZtcmZ1dHF2cXFoSzBHKysvcnE5L3h5RlM4cXVYYkp6eENnUmcwV3psSUN3TUlsNWZxcUVsRE4vSThZdE8zZnVsTGNOSHJmWW9ubHplM3VMVTlRS2xSZWZmMTRpRFoxRThKcDFEVkY3MHAyZ2Jrb1VNVmluWmMzYXRmWk5CYWN0TURRenI2aXRSODJ0MTRUYlNORGhtdlJEaHlYaDNxSG16L2kwaERlb0o5R1BQcXh1Q2VvZUFJV1pXbTRZY3c3N0NPRWRhOWV0MHkwenFydFUyVi9OYk44eGNLQzlySHpVeUpFeWVQQmdlOThuQ3BkTWZieHM1cEVqdXNlY3dLSkZKTXpQVHE2WStlNjc5bm5ncG93WlBkcnhXaVdxYnNXdHQ5eWlJMmR0Mjc1ZEZpNWNxS1A4S1ZxMHFIVHAwa1ZIemxOSHc2bHE3azVTKzg5TkZvanIyclZyZ2F6aUlVR0hLN0xTMHlYaG9VY2tMV0duN2pGSGZTQlZlWDZhQkJyZVZ3ZWdZS2dqWWE2Kzhrb1ovK1NUOXBFM0NkWUE1ZWpodzNMTStqcDY2SkJzMzdKRmZyTUdBV3IvMzExMzNHR2ZLOTNtNG92dEdVdjRuc1RFUk4weUk4MkZZcVduVTNzOUh4czFTcDRZTThiWTNsUjQxLzZYWDVQa0pVdDFaRmJHd1VPeTgvRW43ZjN1L3VEa3laUHluTUc5NTYxYXRwU09odlpoMzNQMzNjYjJNYi9sNElvQ1ZUZkRwQ1ZMbHVpV00vYnMyU01iTjIzU2tiT0NBZ1BsK3I1OWRlUXVFblM0SXZIRGorWEUvRVU2TWljZ09FZ3FUWjRnNFp4MURQaWRxS2dvZWZ5eHgrd3EyMTk4L3JrTWUvQkJlK2xaaFFvVjdPV0RFZGFYbXFXc1ZLbVNOTHZvSXJucnpqdmwyV2Vlc1l0L2ZURjdOc2tRemlodTgyWjdGc1p0dkI0THArQXlVYnJsanVOenY1TkRuMytwSTkvMncvejVjdURBQVIwNTc1YWJiemIydnF4bWpVc2JuWCsranB5bDZuUWtKU1hwS0gvYXRXMXJmNWFhb3Y2dFRsNXZmN2NTZnFlVytQOWI1Y3FWcGVtRkYrcklYU1RvTUM1NXpWclpOMjZTV29laWU4d3BxZmFkWDVIL3doNEF2RU1ObDlTeE5TdVdMWk9Sanp4aUorcm5RZzI0MUJKMytDYlRpZXlDaFF0bG04SGptb0RUUmZYc0xwSE5tdXJJQmRiWWE4K1RFeVROWUdMcmxsbXpadW1XODlRS3E2NEdsM2VyWmRMWHhjYnF5Rm43OXUyVHBVdWRXWlZScWxRcHUycTVLV29mZW1wcXFvN3liOUVpYzVOLzNidDNMN0FpbFNUb01Dcmp4QWxKR0RwY3NnenVGL3BiV1AyNkV2M0ljRFdhMHowQWZKMzZjTHovL3Z0bDFrY2ZHUzNrQmU4eWZjeVdxZ1o5ZGRldWtwQ1FvSHNBY3dLQ2c2WFNFNDlMZ0l2SE5tVWVQU1k3UjQxeFphTEVsSlNVRkpuenpUYzZjbDR6NnpwVHBrd1pIWmx4bWNIRTkrTlBQdEd0L092VnE1ZHVPZStFbFJjc1g3NWNSL21uYnJDYW9HN1k5TC9wSmgyNWp3UWR4bVJsWk1qT2thTWxOYzdjMllSL0N5eFdWR0plbUM2QjRlRzZCNEEvR0hUbm5USnA0a1RIaS9iQWQxUnpvYmlmT2tPM1djdVc4c0dISHpvNnV3T2NTVVR0V2xMMnZydDE1STdqOCtiTFFSOWU2djdyYjc4WlBWcXRrK0V6d0pXNmRldnFsdk5VOFRWVmhNMEo2bGc0VlN2REZMVlZ3UW03ZHU4MnR2KzhacTFhY2w3dDJqcHlId2s2ek1qS2tzVDNQNVJqWDVtNzIvbGZnUUZTY2V4ajdEc0gvRXpucTY2U3laTW1HVi9pREc5cjFLaVJicGwxOE9CQjZYL0xMZEswZVhPWjlja25jdlRvVWYwSTRMeHl0L2FYc0xwMWRPU092ZU1tU3VxZXZUcnlMVjkvL2JWdU9VOTl4blJvMzE1SDVvU0hoOHY1RFJ2cXlGbTdyV1QxMEtGRE9zb2ZkVFJrRzRQSGtxcnowSjNZaHo1MzdsemRjbDczMk5nQ25SZ2dRWWNSeWVzM3lMNkpVOXpaZDk2enU1Uyt0cXVPQVBpRDBxVkx5eXN2djF4Zys3L2dIZXBjWXJkdTBxaEI0NFlORytUNmZ2Mmtib01HY3UvOTk4dXlaY3ZzNWJXQWs5U0t2OHFUeGt1QWk2ZExaQncrSWdtUGpMSlhPUG9TVlFUc3g1OSswcEh6MVBGaTZpZzAwOVIxckdLRkNqcHkxckZqeCt5Q2wwN3AzNysvYmpsdjA2Wk5qcXhVTXJhOFBTeE1icjc1WmgwVkRCSjBPQzdqK0hGSnVHZXdaQ1dmMUQzbWhOYXFJWlZHajJUZk9lQkgxQ0RteWJGajdidjRRSTBhMW5VK09scEg3bEhIdTczOHlpdlNxazBiYWRTa2lUd3diSmhkaU1udFk5bmd2NHJVcnllbCsvZlRrVHVTZnZsTkRzMytRa2UrUVMxdFg3OSt2WTZjcDA3L0tGbXlwSTdNS21Idys2eFpzMGEzOHEvOUpaZEk4ZUxGZGVTc25idDJ5ZmJ0MjNXVU4rcW02ZEpseTNUa3JBYjE2eGZJWjg3cFNORGhyS3dzMmZYNGs1SzZiWWZ1TUVmdE82LzY4dk1TYVBBNENBRHVVL3YwYnV6bjdxQVYzcVVHejdIZHV1bW9ZR3pkdGsyZWZlNDVhZDIycmRTb1ZVdjYzWFNUZkR4cmxsMDlHY2d6TmFNNitGNEpxUnFqTzF5UW1XbFhkVS9aYm42YzVoU1Z6S1VhdkRHbTlocUh1clNTb1Z6WnNycmx2TjhXTDlhdC9GT25wYlJzMFVKSHpwdjc3YmU2bFRmeENRbjVUdkt6MCszYWF3dDg5UjRKT2h4MWNOYW5jblMyQzBWSXJEZE94ZEVqSmJ4bURkMEJ3QitvMmZPSGh3KzM5K29CZjd2bjdyczljMVRlWGlzcC8rampqK1dHRzIrVUt0V3FTWXRXcldUTTJMR3k2TWNmalJheGduK3lsN3BQZU1MVmxZQ1p4MDlJd3FPamZXYXB1eXFBWmxMVkdQZHVrSlFyVjA2M25MZG56eDdkeXIvQXdFQzV5ZUNOOHZ4dVdmamhoeDkweTFtaElTRkdsL2ZuRmdrNkhITnk0eWJaTS9wSlYvYWRsNGk5UmtwZlY3QXpLZ0NjVjdsU0pmdnVOWEM2NnRXclM0L3UzWFhrSFdyUCt2SVZLK1RKOGVQbDhpdXZsRXJXUUw5WG56N3lzWlhBcThHeUU0V1E0UCtLdFdndXBhN3ZyU04zSkM5ZUlnZG12cWNqYjFPbkxKaFVxblJwM2ZKdGNYRnh1dVdNSzY2NHd0aktncFVyVithNXRvZTZybjVqNk1pOXBrMmJHcXNUY0M1STBPR0lqS1FraWIvN2ZuZk9PNjk3bmxSK1lqVDd6Z0UvMUtkM2IzdEpNM0E2dGJKaXpPalJVcXhZTWQzalBXclFlUExrU1puOStlZHl3MDAzU2YyR0RlV0txNjZTeno3N2pKbDFuRldGd2ZkS2tPRnp1UDl0LzlSbjVKUVBMSFZYTjhGTWVudkdES2xlcTVZclgwOVBtNmEvcS9NT0hqb2tweHdjaDVjb1VVTGF0bW1qSTJlcGxVanFtTFM4VU5mVFB3MjlKcTY5NWhyNzg2YWdrYUFqMzdJeU0vK3o3M3pMTnQxalRrQkVoRlI1NW1uT093ZjhrRnBhTnVDMjIzUUUvRlBWcWxYbGlURmpQREY0eW8wVFNVbXljTkVpNlgzOTlWS3ZRUU83eU55T0hUdVlWY2NaaFpRdUxaV2VmRnl0TGRZOTVtVW1KY3ZPaDBkS1ZucTY3dkVlVlpUUnlhWGJaNklTdnAwN2Q3cnlwYXF0bTZMT1FWYzNDWjJpcnJVOWUvVFFrYlBVNzFVVjNjeUx6WnMzeTRFREIzVGtIUFh6M21CZHI3MkFCQjM1ZHZpTHIrVG9wNS9yeUNEcmpWUHhzUkVTY1o3NW96QUF1SzkrL2ZwMkVnWms1NDZCQStYcXE2N1NrZS9ZdDMrL1hXU3VWcDA2MHZlR0cyVEZYMy9wUjREL1Y2SmpleW5XcVlPTzNKRzg5RTg1OFA2SE92SWV0UXo2Rk1jYzVrNVdsdU9uVEppY1VmNXF6aHpkT2pmekRPMC92N2gxYTZuZ2dlWHRDZ2s2OGtYdE85ODlZcFI5VVRDdGVMZXVFdFc3cDQ0QStKdE9uVHB4N2pseUZCd2NMRFBlZWtzdWFOSkU5L2llVHovN3pDNHNweEoxZFI0dzhMY0E2L3BYZWV4b0NTcmx6cEZmZjlzL2FhcWMzT1RzL21XbnFQT3k4N3BYdWJESnlNeDBmSWErVEpreWN2bGxsK25JV1V2KytFTXk4bENvOEx2dnY5Y3RaL1h0MDBlM0NoNEpPdklsL3Q0aGtwV1NxaU56UXV2VXRqNjBIck5uMFFINHArczk5T0VJNzFMN0lyLys2aXRwMHJpeDd2RTlhcG43SjU5K0trMmJON2Nyd0NjbkordEhVTmlGbENzckZSNTlXRWZ1eUR4NVVoSWVmRmd5cldUWWExVENlZlRvVVIyaElQVHAxVXUzbkxWdjcxNTcyZis1T0hqd29QeTVmTG1PbkJNUkVlR3BBclVrNk1pWE5KZk9PNDk1ZHFvRUZTMnFld0Q0bTByUjBWS3ZYajBkQVRrclc3YXN6UHZ1TzduODBrdDFqMjlTQloxVUJmaUwyN2ExOTFVQ1N0UTExMGpSRHUxMDVJNVRhOWZKL2xkZjE1RjNxSnRaMUcwb1dCMDdkcFNRa0JBZE9lZWtkZjA3MSswK2E5YXVkWFNmL2QvYVhIeXgwU1B3emhVSk9qeXYvTU1Qc3U4YzhITk5talF4TWdDQS95cFpzcVI4OXVtbk11VCsrKzB6ZTMyWkduUzJ2ZVFTbWZ2dHQ3b0hoVnBnZ0VTUEdpa0JMcC85ZitERlZ5WFpTdFM5Sk4xSHptcjNaOUhSMFhKeHExWTZjdGJYWDMrdFc3bXphTkVpSXpkc2JqUjQ1bnRla0tERDg5SlU5VTd1bmdKK3JSckY0WkFIWVZZQ00rbXBwMlRXUng5SmxjcVZkYTl2U2p4NFVIcjA2aVh2dmYrKzdrRmhGbDQxUnNvUEcrTHExcjZzbEJUWk9mSXh5WEs0MEZoK3NQM0RHL3IyN2F0Ynpqclg1ZXJ6NTgvWExlZW9iVk9tOXRubkZRazZQTy9ncTIvS3NaOS8wUkVBQVA5MFRkZXVzdXF2dit6WmREWFk4bFdxSU5hQWdRTmwxaWVmNkI0VVptVnU2Q3ZoRGR6ZCtuTnE5VnJaKzhKTE9pcDR4ZGplbUd0cUpWRmtaS1NPbk5XaGZYdjdocWpUMU9xaC9mdjM2eWhuaVltSnN2VFBQM1hrSEhYV2UxUlVsSTY4Z1FRZCtSTFpvcGx1bVpPVm1pWTdIeHdocWJ2Tm5vTUpBUEJkUmEyQnZKcE4vOHNhd1BYdTFjdllRTlcwOVBSMHVmMk9PMlQ1aWhXNkI0VlZZR2lvVkprMFFRTEMzVjNxbnZqNjI1SzBhcldPQ3BhcEk3NzhrWHFtMUVrWEpxZ2pVQnMyYUtBajU2amw2cjh0WHF5am5DMysvWGY3K3VpMC9qZmRwRnZlUVlLT2ZLa3k5U2tKS21QK3JsUEdnVVNKSC95QUp5dU1BZ0M4bzNMbHlqSnp4Z3hadVh5NTNIdlBQUkpWdXJSK3hIY2tKU1ZKLzV0dlpua3Y3Qm84Wlc2L1RVZnV5RkpWM1ljL1lsZDNMMmlxTmduMVNYSW53T0FNdXBxZHY3bC9meDA1NjdmZmZ0T3RuUDMwMDArNjVaenk1Y3JKcFowNjZjZzdTTkNSTHlIV0M3dktNMU1rSU1UTUhidlRuVnk2WFBZOSs0S09BQUE0TXpYclZxMWFOWms2WllwczJyQkIzbnJqRFduVnNxVlB6Y1p0MkxoUkpreWNxQ01VV3RacnR2eWR0MHRvclpxNnd4MnBjWnRsNzRzdjY2amdxSVN6U0pFaU9rSk9WQklkR2hxcUkrZDF2dnBxQ1RQdzk2dVo4ZHdVZnZzMWw0bjh1VkRWMjlYcUs2OGhRVWUrRld2ZFNxS3NEdzgzSkw3OHVoejcxZmszS0FEQVB4VXZYbHo2M1hDRC9MUm9rV3hjdDA0bWpCdG5EOHBNRERTZDl0SXJyOGkrZmZ0MGhNSXFNRHhjS2s5NFVpUW9TUGU0UTQyNVRoZzRjL3BjcUgzUDRTNVhzL2RWNWNxV05acWdxMnJ1alJzMzFwRnpWcTFhWlI4NW1STjcvL215WlRweVR1L2V2WFhMV3dLeURCNHVtSldlTHB1NnhFcnF4ampkazcyb1FRTWxldGhRSGYyVFd0YThvVlY3eVRoMFNQZWNXWU8xeXlYUVIvZWNtWlQ0NWd6Wjg4UUVIVG1yWWR3YUNRZ090bi9YMjI2OVE1SisvbFUvWWs1d3ViSlM2NnZQSk1UNnM3QTZNbitCSkF3WXBLTXpLOUVqVm1JbW4vbjNucFdSSVhHZFl5Vmw0eWJkazcyUzNicEtsV21UZGVSL1RzWEhTOXhsbmUzWHNFbUJSWXBJblFYZlNZZ0xXMEpNdUgvSUVIbnhKWE9GZys2KzZ5NlpQbTJhanJ4TmZXdzJhdExFbnVFMDVkdHZ2cEZPSFR2cXlCbE5teldUVmF2TjdTdDk1KzIzcFcrZlBqcnlOdlU3UEhic21Id3pkNjRzdEJKM3RjUnl5OWF0UnZZMzV0ZXdCeDZROGVQRzZjaFphdEJidFVZTnV6aWRLWHQzN2ZKY0FhWi9XOWV5bmFRZk9LQWpjNklualpjeTNXTjFkTzUyVFhoS0RyNyt0bzdjRVZJMVJzNmJNMXVDQ21oOHJkNlRkUnMwa0IwN2R1Z2U1Nm5WTnUzYXR0V1I3enF2ZG0xNWFQaHdIWm54MHNzdnkzMkRCK3ZJT1F0LytFSGF0R21qby8vMXlhZWZTdDhiYnRDUk05UzU1MXMyYlpMdzhIRGQ0eDBrNklXQUd3bTZrbmJ3b01SZDNVMHk5cHYva0l0czNWSnF2UDJhQkJUU2ZVa2s2TTRoUWM4ZEV2VC9SNEorWnI2VW9QK2JTZ0xVVExWSzJOV1htcWxSbFlVTkRwRnlUYzFhcVpsL0U0TklFdlQvOEpVRVBlUDRjZGw0OWJXUzduTFIzTkw5K2tybHgwZlp5KzBMd2lVZE91UzZrRmhlWEhYbGxmTGw1NS9yQ0RsUjE4VnFOV3RLbXNOSDhZMTQ2Q0VaTzJhTWp2N1hnTnR2bHhrelorcklHWDE2OTdicmxYZ1JTOXpobUJEckE3anlsSW11TE1GS1hyeEU5cjd3c2hvcDZ4NEFBUEpHVlQ2dVZLbVMzRDVnZ016KzlGUFpzSGF0L1B6amozTFhIWGRJMVpnWVk1V1JjMlB2M3IyeWN0VXFIYUV3Q3lwV1RDbzlhU1V4Z2U0TzN3OS9PRXVPLzFsd1M5MmJYWFNSYnBteGVzMGF5Y2pJMEJGeVVyWnNXV25ab29XT25KUFRQblIxQTNIeGtpVTZjazZQN3QxMXkzdEkwT0dvNG0wdmxqSjN1YkFmM1hvVEgzenhWVG4reDFMZEFRQ0FNMVRSb0JiTm04dXp6endqNjYxay9hZUZDMlhRWFhjVlNFWDR6TXhNK2ZycnIzV0V3azZOczBwYzAxbEg3bEFyekhZT2YwUXlrZ3JtVklIYXRXdnJsaGtuVHB5d3Q3emc3RlNoeld1NmR0V1JjOVNLdEpTVUZCMzkwNTQ5ZTJUTGxpMDZja2I1OHVYdGxSTmVSWUlPeDVXL1o1QkVORGQ3dDFQSlNrdVRuZmM5SUdrdUxLa0hBQlJPNm9pblpzMmF5VFBUcHNuV3padmxwUmRla05xMWF1bEgzYkhrano5MEM0V2RPa29yK3VGaEVoVGw3czJpdEIzeHNudmk1QUpadWRqQ3dJenQ2VlJ5dmludTdOdHg4Ui9YWG51dDR5ZGlxSlZDMjdkdjE5RS9xVG9oVHE5dzZOSzVzOUdDZXZsRmdnN0hCWWFGU3N3elV5U29iQm5kWTA2Nmxad25ESHRZc3RKWm1nUUFNRXNkK1RUZ3R0dGs1WW9WOHVUWXNSSVJFYUVmTVV2dGlXY0pMdjRXVXJhc1JJOGU2ZnBTOXlNZmZ5TEhmak8zRnp3NzFhdFZNM3JVbWxxbDhzTVBQK2dJWjZOK0g4MmJOZE9SYytaa3MxTEk2UlZFNmppNjNqMTc2c2liU05CaFJHaUZDbEw1NlluL0xTQm5VdEpQdjhxKzUxL1VFUUFBWnFsWmRWVXQrZk5QUDVVaUxoU25WVVhzZkhVSnJoY3I0L3VEa2xkZUljVXVkYmFRNU5uWVM5MkhqWkQwdzRkMWp6dlVscFA2OWVycHlBeVZISHFoS0tTdk1GRVE5RXlGQUpPU2toemZmMTdSeWxGYXQyNnRJMjhpUVljeHhkdGNMS1h2dUUxSFppV3EvZWkvc3dRUUFPQ2VEaDA2eVBCaHczUmtqcHJoVS90a25hYUszem05VlBYZjJOdHJSa0JRa0ZSNi9GRUpMRkZjOTdnamZkOSsyVFYra3F0TDNZT3NuL1hTVHAxMFpNWmZLMWZLdG0zYmRJU3p1ZUx5eXgwdm5ybDh4WXIvT1E5ZEhYK3BLc2M3cVZ1M2J2YjUrbDVHZ2c1enJBLzlpdmZmSXhFdG5WOEc4Mi8yZnZRSEhuTDlyaTRBbUtBU01pZXBtU0duajhYQmZ3b20zWGJiYmNhWHVxdmYzNzhIcms1UWcxVFRDYnJKSTl3S3U5RHk1YVg4ZzBOMDVKNmpuMzhwUnhmOXFDTjNYSEhGRmJwbGhscnA4WlpIajl6eW9obzFha2pEQmcxMDVBeDExT1d1M2J0MTlCK0xGeTkyZEdXRHV0blR6K0h6MUUwZ1FZZFI2cHp5S3BNblNsQ3BrcnJISEhVdWFNSkRJNDJmWncwQXBoMC9mbHkzblBISnA1L0srZzBiZEFRbmxTNVZ5dDZUNll0TUorZktab2VyTCtPZnl2VHFLUkZOTDlDUlN6SXpaZGRqWXlYOTZGSGRZWjQ2VlVFZDhXWFNqSGZlc1pkVTQrelVQdTRiKy9YVGtUUFVUWkxmZnZ0TlIvOHhaODRjM1hKRzFhcFZwZEg1NSt2SXUwalFZVnhZNVVwU2FlcFQ5bklzMDA3TVd5RDczM2hiUndEZ201eGMwaGNmSHkvM0RSNnNJLzl5OE9CQk9YQ2dZRS95VUFOVnRTZmRORFh6NDdUdzhIQUpOSnlrcTJXck1DY2dPRWdxajM5Q0FpTENkWTg3MUtUSXprZEgyOG02RzlSeTZsNkdDM3VwNDd6R1B2R0VqZ3FlMHl1cG5LYU9LWE82RXZyY2I3L1ZyZi9jcVA3bFh3bDdmbDE3elRXZXJ0NytOeEowdUtMRUplMmsxSzAzNmNpc0ExT215L0hGemhhVUFBQTNyWEFvcVZIN2YvdmRlS01rSmlicUh2K2hrdk91MTE0cnpWcTBzQ3N3RitSZzF2UnVYSldjRnk5dVpxOXg0OGFOZGNzTU5TTkc4UzJ6SW1yVmxITDNEckszRnJycDJMZmZ5NUg1QzNSa25xcThiWHJWeDZ1dnZTWnIxNjNUVWNGUTI1SGVmZmRkdWVubW16MWRaTEZhdFdwU3ZYcDFIVGxERllyNysyZGV0V3FWb3lzYTFNM1VXL3IzMTVHM2thRERIZFlGdGVLUSt5UzhTU1BkWWM1L3FvdytMT21IaitnZUFIQ09HaUNXS2xWS1IyYW9ZN1h5bTlTa3BLVElMYmZlNm5nRlhDOVFNeXZYeHNiYXo1UGFzOWpGU3RUNzMzS0w3UDdYL2tVM3FMM2hwbStBaEFRSFM0a1NKWFRrck1xVkt1bVdHY3YrL05NKzR4aG1sZTEvbzRUVnE2TWpsMlJteWE2Um95WE5wVlVzelpzM04xN04vWVNWRUtxYm1rZGRYTDcvTjNYTlg3bHlwVng2K2VWeXk0QUI4dkdzV2ZMc2M4OTU5Z2FYV2puVTcvcnJkZVFNZGVOMTE2NWRkbHNsNjA3KzdPZlZyaTIxclM5ZlFJSU8xd1JHUkVqTWMxTWwwTkFzd09uU2QrMzV6L25vSGw4ZUJNQTNtUzRLdG5yTkdsbTdkcTJPenQzSmt5ZmxaaXM1LzlMaC9YdGVvS3FaOSs3YlY1Yjg4ZjhuZDZnendqLzg2Q05wZk9HRjh0U2tTVVlxbm1mbnA1OS9ObjVqb0VtVEpzYVcwVmN5bktDcjM4WGpZOGJrZWFETk1XMjVFeGdlTGxVbVBHblgvbkZUeHNGRHN2T3hzU3E3MUQzbXFKVWtRMXpZcnJQR3V2YjI2dFBIOFZvZ09WRko2VzIzM3k0dEw3NzR2OGVOcWZmTXFOR2paZjc4K1hic1JkZkZ4anE2L1ViZDhGUTM5UlNuejZidjBxV0w0NVhuVFNGQmg2dkNLbGVXU2xNbTZNaXNFL01YeVlGMzN0TVJBRGpIMUd6bTZjWlBuSmlucEVZTjlHSzdkN2NMdy9rYk5XRHVlOE1OTWkrYmdkdVJJMGZrMGNjZWt6cjE2OHUwNmRPTnoyeXIvZStEaDVpdm9uM2hoUmZxbHZOYXQycWxXK2JNZk84OWVlT05OODdwOWJ4cDB5WVpQSFNvdEd2Zm5rcnd1UlRab0w1RTNlTE9kc0xUSFo4M1h3NTk4WldPekZJSllhWG9hQjJaczJEaFFtblRycDJzVzc5ZTk1aXhkZHMyR1RaOHVOUnIwRUJtdnZ2dS85eVFVcTk5dFRwbysvYnR1c2RiMUJMM2VuWHI2c2daMzgrYloyL1ArdkhubjNXUE0yNnpua2RmUVlJTzE1VzhySk5FM1RsQVIyYnRuelJWa2xhdDFoRUFPTVBwNDJYT1JDWFlMNzM4Y3E2VEdqWHo4Tjc3Nzh0RnpadkwvQVh1N1F0MWkxcXlQMkRnUVBuMnUrOTBUL1pVa2IzaER6OHNOV3ZYdGd2a0xWMjYxUEZqNXJaWkErYk9YYnZhQTJ5VDFMNUprOFd4YXRXcVpYOFBrOVJ6Zjg5OTk5bUp4dXJWcTgrWWNLdlg3MFlyS1gvbm5YZmt5cXV2bGtZWFhDQXZ2UGlpdlkxQkpTN0loWUFBcVhEL1BSSmF2YXJ1Y0lsMWpkb3o3aWxKZFdFclE3Rml4ZVRSa1NOMVpKWkt6bHUyYm0ydnlqbnM0REcrYW9XVG1oVlhLNEhxTjJ3bzA1OTlWazdtY0l6aS9nTUg1TnJycm5OMVpWQnVxWlU5dlh2MTBwRXpWTjBLZGMxMnNxN0lCZGIxUkIwTjV5dEkwRkVnS2d5K1Q4SWFtTjFIcEdSWkY4R0UreDdnZkhRQWpsTEZjVXhUaWZuUUJ4NlFJVU9IMnJNbmFobjN2NmsrZFhhc0tpalV0Rmt6dWVXMjJ5VHg0RUg5cVA5UXladjYyVDZiUFZ2MzVFNnk5Um1nYm5LMGJkOWU2alpvSUk4OS9yZ3NzeEkrTlR1VGw5VUphc0NvS2oxUGZPb3BhWExoaGJMaXI3LzBJK1pVcmx4WnpyY0c4YWFvR2JDU0pjMGZoWnBoUFhjZmZQaWhORy9WU2lyRnhOaEp1TnFHMGNkS1VscGRmTEZVcmxwVkxyQ2UwOXNHRHJSdk1KMytlbGUvTjdVM0ZXZW5scnBYR2pkV3JRZlhQZTdJT0hSSWRvNGNMVmtaNXJjV1huLzk5VWJmRTZkVHliUmFsVk8zZm4xNWNQaHdXYjU4K1Rrbnl1cTFyRmJ6cU8wd2FsVkluWHIxNUtvdVhlenIyWm11NjJleWJ0MDZ1ZU91dXp4WjJWMGw2RTdlNU51d2NhTjg5dm5uZWJwR1owZFZiemQ5STlKSkFkWVA3OXhQL3krcVdOZW1MckdTdWpGTzkyUXZhdEJBaVI0MlZFZi9sSm1hS2h0YXRiZmYvRGxwc0hhNUJFWkc2Z2gvUzN4emh1eDV3c3l5OG9aeGF5UWdqL3M1VG0zYkxsdTZYaWVaU2NtNng1eWlWMTRtMVo2ZjdzcFJiMjVRVlZNVEJnelMwWm1WNkJFck1aUFAvSHZQc2o0UTRqckhTc3JHVGJvbmV5VzdkWlVxMHlicnlQK2NpbytYdU1zNkd6OC9QN0JJRWFtejREc0pLUk9sZTN6TC9VT0d5SXN2dmFRajU5MXREVHltVDV1bUkrLzdhK1ZLYWQ2eXBhTURpSnlvNDdCcVdJbVVPZ3Y0NzJSS0xlZitmY2tTMmJscmw2dDdKYlB6enR0dlM5OCtmWFRrSERWenJoSTVwNWJzcXlKL1phS2k3SnNzSFR0MGtQUFBQOTh1UEZXNmRHbTdVcnJhVDZtKzFNQlpmYW1aTTFXSTdwZGZmcEh2dnY5ZS9zekRBRDAvSG4za0VSbHRKUWdtWGR1dG0zeHoydkZHWGpUNHZ2dGs4cVJKT25MV3VwYnRKTjJGUW1mUms4WkxtZTZ4T2pMSXVpNGxQRFpHRHIvL2tlNXdpZlhlcXZUVU9JbHk0V2Y4MlhvL3FtSnFCWkd3bGk5ZjNpNDQxckpGQzZsUXNhSjliVmJYanJEUVVFbTNyaGxxbWJxNnFhcUtJOGJGeGNtdml4ZkxnZjM3NWVpeFkvcHZ5THVuSmt5UW9TNXNxemtYNm5mUXVrMGIrOXJvbEwrdndVNVExL3kxcTFiNVRJRTRoUmwwRkpqdzZ0VWsycnFRaXd0M3RFNThPMDhPekppcEl3RElIelU0aTdDU1pyZW9HV1MxM1BLdEdUTmsyalBQMkYrcXZYN0RCazhrNTZhb2dhN2E0KzNrZm5wMVUrVkFZcUs5ZFBxcHlaT2wzMDAzeVlYTm1rbTFtaldsZE5teVVyVkdEWHZaYVl5VndLdTQ1bm5uMmZ1Z0gzbjBVZm54cDU5Y1RjN1ZUWU43NzdsSFIrYjBNWEJqeFdrdnZmS0tiTEtTSGVTQ1d1bysrRjRKS2xkV2Q3akVlbS90blRoWlV2ZnQweDNtWE55NmRZRWRtYVZXTGFrYkJKT2ZmbG9lZVBCQnUrWkhwOHN1a3phWFhDTHRPM2EwYnh5bzdUaHE1bjNHekpteWVmTm1SNUp6WmZUamo5djc0NzFFelV4MzY5Wk5SODV3S2psWExtalN4S2VTYzRVRUhRV3ExRlZYU0ttK3p1NWR5YzcreWRNbGVXM0JubTBKd0Q5RVJrWktodzRkZEFRVFZISisvK0RCOHZxYmIrb2VkNmlWQ2ZFSkNZNE5xUE5qMEoxMzJrbTZhWmQyNmlURml4WFRrVGVwbFJRUFBmeXdhNnRXZkYxSVZKUlVHalBLbFVtUTAyVWNPaXdKd3g4eHZ5ck4rcm1lbmpMRjhRSmxYbmZLZWgvYzFMKy83Tml4US9kNHc1V1hYMjdQVkh2UkRRNGZCZWNHRW5RVUxPc0NHejFxaElTZmI3N2dVdGFwVTVKdzcxREpPTzY5SWhzQWZFL1BIajEwQzA1VFN5WWZIRFpNWG4zOWRkMVQrRFNvWDE4ZWZ1Z2hIWmxWcGt3WnVleXl5M1RrWFY5Lzg0MHMrdkZISGVGc1NsemFTWXBkM2tsSDdrbjZkYkVjbkdYK0ZJa2lSWXJJekJrejdNSnhoY20rL2Z2dFdYc3ZyWjVxMUtpUko0dXdoWWFHU3RldVhYWGtPMGpRVWVBQ3c4SWs1b1ZuSkxCWVVkMWpUdXEyN1pMdzBFaDdEellBNUllYWRWUURSRGhMTFcxOGN0dzRlZkhsbDNWUDRhTUdsYTlhUDMrWTlmbm9Calh6OWNqRER6dDZuckVKYXZaOCtFTVBjZXhhTGdVRUJrcmxzYU1sS01yOEtveC9zSDVQZThaUGtsTTc0bldIT1kwYk41WTNYMy9kZnM4VUpxdlhySkZCOTl6ajZGTHcvRkFyR2t6VUlNbXZwaGRlS05XcXVueXFnUU5JME9FSllWVXFTL1NUajlzejZxWWQvMjZlSFB6d1l4MEJRTjZvUWtHeER1KzdNeTBxS2tvdWFkZE9SOTZqRXJCSmt5Zkx1QWtUQ3UxU1pwVWtQek50bWpSdjNsejN1RU1WeSt2YXBZdU92RXNWYUh4bkpqVmxja3N0ZGEvdzBJUDJ2blEzWlNVbnk4N2hJeVRMaFNKdXFrTDMrQ2VmOU93U2ExTSsvT2dqbWZMMDB6b3FlRjA3ZDdZVGRTL3BmK09OUHZtNklFR0haNVRxMmxsSzlycE9Sd1paSHhaN3gwK1M1SFhyZFFjQTVNMndCeDd3bVprYjllOTg3ZVdYN1Vyd1hxVUdVbDJzUVY2dG1qVjFUK0dpQnJjUER4OHV0OTE2cSs1eGozcnV4ejcrdUd1ejl2bnh4TGh4ZHEwQTVFNVU3TFZTcE8zRk9uSlA4ckxsY3VDdEdUb3lSNzEyVlRIRnh3MmZkdUJGVTZkUDk4d1JoT29tWDZYb2FCMFZ2S0pGaThwVlYxMmxJOTlDZ2c3dnNDNncwU05IU0ZnZDg1VVdzNUpQU3Z4ZDkwbUdIMWMvQm1CZXZYcjE3RHYwdmtBTlh0VmV2SmlZR04zalRXcVE5L3ZpeGZiWnVvVnBSaXc0T0ZoR1BQU1FQRFpxVklIOTNPcjFySTUxOC9yenZudjNiaGsvY2FLT2NGYUJnVkpwOUVnSmlJalFIZTdaLyt5TGtoSnZmcW03dXJrMTR1R0g1WldYWHBMSUF2ZzVDNEphdnIxdy9ueDdaWlFYaElTRXlJMzkrdW1vNEYzVXRLbFVyRmhSUjc2RkJCMmVFbFMwaU1TOCtLd0VGamRmOENNdFBrRjJqaHh0NzVVQ2dMeFFpY3lUVHp3aFZTcFgxajNlby82TkkwZU1rQWNmZU1DTzY1eDNudjJubHhVcld0UXUvdlRCdSs5S3hRb1ZkSy8vVXVmY1B6dDl1bjNlZVVFdkVYMWc2RkRwMEw2OWpyenJSU3NSMjdoeG80NXdOdUhWcWtuNVlVUHN5UkEzWlo0NElmRkRoMHVtQzNVRDFMWHUxbHR1a2RtZmZTWmx5N3A4eEp5TFNwUW9JVStPSFNzL0xWb2s5ZXZWMDczZWNGMXNyR2RxV1Z6ZnQ2L25ielptaHdRZG5oTmVvN3BVZk1KS25GMFlwQnliTTFjU1AvaElSd0J3N3RReFdLKy8rcW9ubDdxcldWazFJM3I2ckd5NWN1WHNQNzFPL1h1N2QrOHVmeTVkS2pmMTYrY1RTNi96b21yVnF2TE5uRGx5KzRBQm5oaE1xbG13OTJiT2xFYm5uNjk3dk1rK2RtM0VpRUpicXlBdnl2VHBMZUVONit2SVBTZi9XaVVIM25wSFIrWjE3TkJCZnYvMVYvdXNkRjlOME01RUpiNlhYWHFwL1BuSEgvTFE4T0dlL014UnEzQzhNR3V0S3Z1cjJnUytpZ1FkbmxTcXk5VlNzcWNMKzlHdEQvWjk0NTZTazNHYmRRY0FuTHVPSFR2SzFDbFRDbnoyODNScW1lY0x6ejRyajQ0YytZOS9WNmxTcFh4cTBLcG13bDUvN1RYNStjY2ZwWFdyVnA1Nmp2TkRKY0szOU84dlMzNzdUZHEyYWFON3ZVRWR1L2JGN05tZVQ5TFZzV3Z6NXMzVEVjNG1NQ3hVcWp3MVhnTGN2dGxsamJVT1BQK1NxMk10dFpYbnU3bHpaZHdUVDloN2tYMlp1bDQzYU5CQXZ2anNNNW56NVpmMlRUMnZVamNOZW5idnJxT0NvNjZwNnJQT1Y1R2d3NVBVMFNEcWZQU3d1dWFYWW1hcS9laUQ3cGVNcEdUZEF3RG5idUR0dDl1VmhMMlFRS29sOTNPKytrcHV2ZlhXLy9uM3FKa0ZWWUhlbDZnQjZnVk5tc2lDSDM2UUw2M0VVU1hxdmt6dGpmemVTaDVlZWZsbHord2YvYmZLMW10SUpUaHFOdEtMMUd0Q25VaFF5Y1BiUzd3bzRyemFVbWFnKzBVSU01T1RKV0hZdzVLWmxxWjd6Rk9yYm9ZOStLRDhzWGl4ZEx2bUdwK2NUYTlicDQ2OC9jWWI5bzI4SzY2NHdpZHVVSHJodURWZnIyRkNnZzdQQ2lwU1JLcE1teXlCTHB3em5McDVpK3g2Ykl4ZDRSMEE4a0lOQnRUKzNiZGVmOTNlUTEwUTFMK2gzL1hYMjh2Q3M1dVZWVE1jQmZYdnl5KzF4Rk1OVWhjdFdDQUw1czJUWGoxNytzeFo5T3Azb3hMejk5OTlWMzc5K1dkcFkvMSt2RDZBVkRQcGFzWk9GYThMOTlBV0ExVWM2NFAzM3BQdnYvMVdHdFIzZjhtMlQ3TmVjK1h2dWxQQ3JFVGRiYWRXcjVWOXo3Mm9JL2ZVcmwxYlpuMzhzZnk0Y0tGY2Nmbmxuai92WDFITDh6OTgvMzFaOGVlZmNyMTFUZmVsTFQ1cW1YdjE2dFYxNUw3aXhZdjd4SkdST1NGQmg2ZEYxSzBqRmNlT3NsNnA1bCtxUnovL1NnN08va0pIQUpBM2FqQzFkTWtTVjg4YlYzdk4yN1Z0S3o4dldpUnZ2dkZHamt2NzFOSnFOWXZ1eTFSaTI5YjZlZFZlNmExeGNmTFV4SWx5NFFVWDJNK0QxNmlDVGoydXUwNStYTERBVHN4Nzl1amhVOHYwMWV0bDdKZ3hzbVR4WXVuVXNXT0JQY2Vxa0o3Ni9wOTk4b245UEhhM25sTi8yZTdnTnJYVXZkSzRNZXJDb1h2Y2svanFHNUs4dm1DT3VXM1ZzcVY4OWNVWHNselh0U2pqc2RVcmF1KzJPbUx4THlzcFY2dUYxR3ZjaTllMHMxSHYxZGh1M1hUa1BuV2Q4UG5QdUN5RDFUV3kwdE5sVTVkWVNkMFlwM3V5RnpWb29FUVBHNnFqZjFLVkh6ZTBhaThaaHc3cG5qTnJzSGE1QkVaRzZnaC9TM3h6aHV4NVlvS09uTlV3Ym8wRUdMNTRaR1ZtU3NLSVIrWG94NS9wSG5NQ3JJRkl6YTgra1lnNmRYU1BOeDJadjBBU0JnelMwWm1WNkJFck1aUFAvSHZQeXNpUXVNNnhrckp4ays3SlhzbHVYZTJWRFA0cTdjQUIyVFZ1b3ZXY21GMDlZUStJSG50VWdsMDRvY0NFR2UrOEkvT3NBWU1wbDNicUpEZjM3NjhqLzVCaHZjKyttak5IeG93ZEsrczNiTEJqcHhXeFB2TlVvdnJJd3c5TDgrYk5jejB6cENwZy8yWWxYRTRhZE9lZDBycDFheDI1VHoyL08rTGo1UXRyQVA2NTliVjIzVG81ZXZTb2Z0UTk2dVpCeVpJbHBkbEZGOW1KZVRkcm9PckxleUZQbDJsOUhxOVlzY0krNG16QndvVnk0c1FKL1lnWmF0YXdSbzBhOXA3Vy9qZmRaQys3TjVHVUo0d2NMZW5IanVuSW5LanIrMGp4VmkxMFZQRDJ2L20ySksxWXFTUDNoSjlYV3lyZWM1YzltMStRMVBWaDd0eTVNbVBtVFBseitYSTVmUGl3ZnNRZDZucXRpb3gydU9RU096RnYyYktsUlBwSkhxTSs4OGFOSDYrai8zVXlPVm0rdHA1N0U1K0w2c2F0V2wzbHkwalFDd0ZmVDlDVkRPdURjL04xdlNWMXl6YmRZMDVZN1ZwUzY4dFBKREE4WFBkNER3azY0RHZTMHRMa2o2Vkw1WlZYWHBHNTMzNHJ4NjJrSnErRGtrQnJRS3RtTkZVeXJnWWduYSsrMms1YXZMNVUybTFxYUhQdzRFRlp2WHExZlB2ZGQvYmdlOGtmZjBpNk5TNVJYMDVTTTF4cW9LMFM4aGJXNytWcTYzZWlpcXVwSk4yZnFiUEl2N0VHMkxNKytjUitiaytlUEdrbjhQbWhYdHRxeFVGcksxRlJTMVRidFd0bkY4VHloU1hKOEcxSGpoeXhyeE9xOE9EaXhZdGw5Wm8xOXJYQ3lRUlNYU3ZVbGh4MXJiajhzc3VrZmZ2MjloN3ppRUp5YnZ2cFBwczlXM3IzN2FzajU2am5kMWQ4dk05c2Zjb09DWG9oNEE4SnVwSzhicjFzN1htRFpDV2JMK1pXc25jUHFUTGhpUUsvdTVzZEVuVEFONTA2ZFVyV1dBTS9sYkQvL3Z2dkVwK1FJSWxXSWhsdkRTaFVnbk02dGYrM2ZMbHlkaEV4VmZTdFdiTm0wckJoUTJuY3FKSGZKMzhtcEZwamlaMDdkOHFhdFd2dFB6ZkZ4Y25XclZ2dGdibWFTVXRLU3JKbjRNOUUvUTZpU3BlMm4zZTF2N0dhbFRUV3ExdFhxc1RFMkwrVHlwVXFGY3BCOXQvVWM3ZldlbDVYcmxvbDY5ZXZ0MmZQMUd5a2VsNjNiTmtpL3g1b1ZvcU90bWNPMVpjNjUvNkNDeTZRbWpWclNpUHJ0UjFUcFFvSk9RcWNXaDJ5YmRzMmV5V091bDZvbTFESGpoMnp2OVExWS9lZVBaSjhodkdvU2d5aksxYTBielNwNjRXNmdhcHUyS21xOHVkYjE0b3ExdXRiM1lncXpOUm5YWXZXcmUxcmhkUDYzWENEdlBYR0d6cnlYU1RvaFlDL0pPaUtPck44enlPamRXUldwV2NtUytscnV1cklXMGpRQWY5eHRvOWhac2ZOeSsxUWlOL0Z1Y25wZWVXNWhLL0t6ZldDMTNmMlhudjlkUmwwenowNmNvNjZzZmZEZDkvWkJUaDlIUWw2SVhCazloZHk0T1hYZGVTc1dsOS9iaVhvTHQ3cHRsNnV1NmM5S3ltYnp2NmF5cS9BWXNXazhwaFJFdVRCMXhRSk9nQUFBSHpKdm4zN3BQRUZGOGpCcytSMGVhRzJDL3kxZkxsZnJNQWhRUWQ4RUFrNkFBQUFmSVZLT1crNTlWWjU3NE1QZEk5ejFJcUYxMTU1eFM0bTZRODRud0lBQUFBQVlNejdWbUp1SWpsWHlwVXJKOWZGeHVySTk1R2dBd0FBQUFDTStQWFhYNDNzTy8vYm5RTUgrdnpaNTZjalFRY0FBQUFBT0c3VjZ0WFNxMCtmTTFhOWQwTEZpaFhsdm52djFaRi9JRUVIQUFBQUFEaHEvb0lGY3ZrVlY4aitBd2Qwai9PR1AvaWdmZnlsUHlGQkJ3QUFBQUE0SWkwdFRaNS80UVc1TmpiV1NNWDJ2OVd0VzFjRzNuNjdqdndIQ1RvQUFBQUFJRjlVcGZiMTY5ZkwxVjI2eUpBSEhwQ1VsQlQ5aVBOVTVmWXBreVpKYUdpbzd2RWZKT2dBQUFBQWdEemJzR0dEM0Rsb2tGellySmtzK3ZGSDNXdE9yeDQ5NUlyTEw5ZVJmeUZCQndBQUFBQ2NrME9IRHNuc3p6K1h6bDI2U0tNTExwQTMzM3BMMHRQVDlhUG1SRmVzS005TW42NGovME9DRGdBQUFBRElVVkpTa3F4YnQwN2VldnR0aWIzdU9xbGVxNVpkb2YzN0gzNndsN2U3SVR3OFhENTQ3ejJKaW9yU1BmNkhCQjBBQUFBQUlKbVptWExxMUNsN2RuekR4bzN5MVp3NU11cXh4K1R5SzYrVVduWHEyRXZZQjk1NXA4ejU1aHRqUjZkbEp6QXdVQjU3OUZGcDNicTE3dkZQSk9nQUFBQUFVTWlkT0hGQ1dyZHBJNDJhTkpFYXRXdkwrWTBieTNVOWVzakVTWk5rNGFKRmtwaVlLQmtaR2ZxL2RsK2ZYcjFrNkpBaE92SmZKT2dBQUFBQVVNZ1ZLVkpFZHU3YUpkdTJiN2VYczN0SjJ6WnQ1T1dYWHBLZ29DRGQ0NzlJMEFFQUFBQ2drRk5IbDdWdTFVcEgzdEgwd2d2bDAxbXpKQ0lpUXZmNE54SjBBQUFBQUlEVU9lODgzZktHaTF1M2xybmZmQ09sU3BYU1BmNlBCQjBBQUFBQUlNMmFOZE90Z3FWbTg2L3Awa1crbmpOSFNwVXNxWHNMQnhKMEFBQUFBSUJVcVZ4WnR3cU9TczZIM0grL2ZQakJCMUlrTWxMM0ZoNGs2QUFBQUFBQWlZbUprV0xGaXVuSWZTVktsSkIzWjh5UXB5Wk9sSkNRRU4xYnVKQ2dBd0FBQUFDa2VQSGlFaDRXcGlQM0JBWUV5R1dYWGlyTGx5NlZYcjE2NmQ3Q2lRUWRBQUFBQUdEUFdydTlEejI2WWtWNTZjVVg1YXN2dnJCbjhBczdFblFBQUFBQWdLMUJnd2E2WlZaa1JJVGNQV2lRckZ5eFFtNjk1WlpDY2NaNWJwQ2dBd0FBQUFCc0Z6WnBvbHRtaEllSHl4MERCOHJLdi82UzZWT25Tc2xDVnFYOWJFalFBUUFBQUFDMk9uWHE2SmF6cXNiRXlOakhINWZOR3pmSzg4OCtLOVdxVnRXUDRIUWs2QUFBQUFBQVczUjB0QlF0VWtSSCtWUEorcnY2WFgrOWZEOTNybXhjdjE1R1BQeXdsQzlmWGorS015RkJCd0FBQUFEWWloWXRLdVh5bUVTci8yK2Q4ODZUTysrNFF4Yk5ueThiMXEyVHQ5NThVenAwNk1BZTgxd2lRUWNBQUFBQTJNTEN3aVNtU2hVZG5WbEFRSUJkNUUzdEgyOS95U1Z5MzczM3l0eXZ2NVlOYTlmYVJkK2VlK1ladWZqaWkrMzk1amczSk9nQUFBQUFnUDlxMmFLRi9XZTVzbVdsY2VQRzByRkRCN2t1TnRaZW9qNXp4Z3laUDIrZXJMZVM4VjN4OFRMdnUrL2s2Y21UNWRKT25lemw2OHlVNXc4Sk9nQUFBQURndjBZOStxaWtuVG9sdXhJU1pObVNKZkxkM0xueTBRY2YyRVhlK3ZUdUxXM2J0TEgzcW9lR2h1ci9CNXhDZ2c0QUFBQUErQzhTNzRKRGdnNEFBQUFBZ0FlUW9BTUFBQUFBNEFFazZBQUFBQUFBZUFBSk9nQUFBQUFBSHVBakNYcUEvYit6eVR4MVNyY0EvNWFaZkZLM2NoREUvVGNBQUFEQWwvakVDRDR3TkVTQ2loWFRVZmFTVnEzUkxjQy9uVnkyWExleUZ4SlZScmNBQUFBQStBS2ZtV0lMdjZDeGJtWHY2TmR6ZFF2d1gxbHBhWExzaC9rNnlsNW81V2pkQWdBQUFPQUxmQ1pCanp5L29XNWw3OFM4QlpKKzZKQ09BUDkwN0pkZkpYM1BQaDFsTDdKRk05MENBQUFBNEF0OEprRXZlbkVyNjErYjgwYjBqS05IWmZkVFQ0dGtadW9ld0w5a0pDZkwzdkdUUkxLeWRNK1pCWlV2SitIVnF1a0lBQUFBZ0Mvd21RUTlyRnBWQ2ExZVhVZlpPL3JwNTVMNHlXYzZBdnhIVm5xNjdCbzVXbEkzYjlVOTJTdmVxWU1FQlByTTJ4c0FBQUNBeFdkRzhJR2hvVktxVjNjZDVTQWpRL2FPZkZ3T3ZQT3VaRmx0d0I5a0pDVkovSU1QeTlFdjV1aWVIRmlKZWFuZVBYUUFBQUFBd0ZmNDFCUmJWTi9lRWxTcXBJNnlwMllhOXo0K1RyYmZmcGVjMnJxTkplL3dXZXExZk95blgyVHp0VDNsbUVyT3o3SzBYWWxzY1pFVXlVWE5CZ0FBQUFEZUVwQmwwVzNIcWVSaVU1ZFlTZDBZcDN1eUZ6Vm9vRVFQRzZxajdPMS81WFhaTjNHS2pzNHVJRGhZSXBvMWxhTHQyMGxFclJvU1ZMYXNmZ1R3cUt4TVNZdmZKU2MzYnBUajMvOGdLWnMyNndmT0xpQTBSR3A4K29GRU5zdzVRVmVyUytJNngwckt4azI2SjNzbHUzV1ZLdE1tNndnQUFBQ0FLVDZYb0dlbXBzbm0ySjZTc202RDdnSHd0MUkzWFMrVnh6eW1vK3lSb0FNQUFBRGU0M05WcEFKRFE2VEsxRWtTV0tTSTdnR2doTld2SzlFamh1c0lBQUFBZ0s4eG02QUhCRmoveS9sb3RQOUtUOWVOczR1b2M1NVVtajVKQWtKQ2RBOVF1QVZYS0MvVlhuOUpBc1BEZGM5WnFIVXp1Vnc4bzdhSkFBQUFBRERQZUlJZUdKbTdtZTdjSEIxMXVwS2RPa3JGOFdQc1BiZEFZUllVVlZxcXZmMmFoRmFzcUh2T0xpc3RWVEtPSDlkUnpvS3JWOVV0QUFBQUFDWVpUZERWT2N6QnVhaTZycHphc1VPM2NzbEsvcU42WENkVlhubEJBb3NYMDUxQTRSSmFwN2JVK09SOWUxWEp1VWcvZEZqUzl4L1FVYzVDS2xUUUxRQUFBQUFtR2QrREhuWitmZDNLV2RxV2JaS3ljNmVPY3E5RSszWlM2OHRQSktKNVU5MEQrRCsxN0x4azMxNVM2N09QSkx4YU5kMmJlOGNYL3k2U2thR2pIQVFFU0ZpVnlqb0FBQUFBWUpMeEJEM2l2TnpQN0IzKytEUGRPamRoVmF0S3pmZmZrZWhKNHlTa2FoWGRDL2lob0NDSmFIYWhWUC80WGFreWJvd0VSVWJxQjNKUFZYQS8vUEVuT3NwWllFUzRoRlUvOXhzQUFBQUFBTTZkMFdQV2xMVEVnN0toUlZ1UnpFemRrNzJReXBYa3ZPL25XRWxCaE80NWQ1a3BLWExzeDUvbDREdnZ5cW5WYXlYeldPNzIyUUtlcGJhS1JKV1d5Tll0cGN5QW15V3lYajBKc0JMMXZFcGF0VnEyZGU5ckg0TjROcUUxcWt1ZEg3NnhaOUlCQUFBQW1HVThRVmMyWGR0RFVsYXQwVkhPeWc2NVZ5cmNkN2VPOGlmOXlCRTV1WEdUSkM5ZklTbWJOa3Y2c1dPU2xacW1Id1c4S3lneVFvS0tGNWZ3Q3hwTGtTYU5KYXhhTmJzdnYxUlN2cVh2VFhKeTJYTGRrN1BTdC9XWFNvK08wQkVBQUFBQWsxeEowUGU5L0pyc2YrcHBIZVVzTURKU3FuL3luajFMQ01CWkI5NTVUL1krL21UdWpsZ0xDcFNhWDM0cWtmVjVMd0lBQUFCdU1MNEhYU25aK2FwY0w4bk5URTZXK0R2dnkxUEJPQURaTzdyd1I5azNibUt1eno4UHExVlRJczZyclNNQUFBQUFwcm1Tb0tzcTBFV3Z2a0pIWjVjV255QmIrOXdvSnpkdjBUMEE4c3hLeUk5OCs3MGszSFh2T1czeGlMcmxKcnRhUEFBQUFBQjN1SktnSytYdXZQMmNCdnZwdS9iSTF0amVjdWp6TDNOVnpBckEvOG80Y1VKMlRaZ2tDZmNNa2F5VVZOMTdkaUhWcWtxcDJHdDFCQUFBQU1BTnJpWG9rZlhxU3ZIWXJqcktuVXlWWEF4OVNMYmNjTE9jV0xxTVJCM0lwY3hUcCtUZ3A3TWw3b3F1Y3VpMXQzSjM1dm5mQWdLazNIMkRKREEwVkhjQUFBQUFjSU1yUmVMK2xuWWdVZUk2ZDVNTTY4OXpaaVVOb1RWclNORjJGMHVSQzVyWTdhQVNKZlNEUUNHWGxTbnArdy9JcVUxeGtyUmtxWno0ZGJGa1dIRmVGTEhlWTlYZmVrMENBbDI3ZndjQUFBREE0bXFDcmh6NVlZRzlGMWJTejJGR0x6dWN6UXo4UHdmZXlvRWxpa3V0T2JNbHJISWwzUU1BQUFEQUxhNG42Q3FKMkRQcGFVbDgrWFhkQWNBTEFzSkNKZWJWRjZWNHV6YTZCd0FBQUlDYjNGL0RHaEFnRlI0Y0lpV3Vvd0FWNEJsQmdWSmg5RWlTY3dBQUFLQUFGY2dtVTNVbWV1VnhZNlRvcFIxMEQ0QUNFeGdvNVI0WUxHWDY5TklkQUFBQUFBcUMrMHZjVDVPVm1pbzdIeHNyUno3NlJQY0FjSk5hMWw1eHpDaUo2dDFUOXdBQUFBQW9LQVdhb051c2I1LzQzZ2V5YjhJVXlVeE8xcDBBVEF1SnFTeVZwMHlVb3MwdTBqMEFBQUFBQ2xMQkoramFxZTNiWmVlREkrVGs4aFZXMHE0N0FUZ3VJRFJVU2x6YlJhSWZlMFNDaWhiVnZRQUFBQUFLbW1jU2RDVXJQVjJPZlArRDdKczhUZEoyeE51ejZ3Q2NFUkFTTEJGTkd0dEwyaVByMXJFNk9LWVFBQUFBOEJKUEplaC95MHhKa2VPL0xwYkVOOTZXazM4c3N4TjNBSGxnSmVHQlJTS2wyR1dkcE15dE4wbGsvZnAyVVRnQUFBQUEzdVBKQlAxMHFmdjN5L0ZGUDBuU2I3L0x5WTJiSkczTE5zbEtTOU9QQXZpM0FDc2hENnRWVXlJYm55OUYyN2FSb3ExYVNGQ1JJdnBSQUFBQUFGN2wrUVQ5SDZ4L3FwcE5UenQ4UkRKT0hKZjBnNGNrS3pOVFB3Z1VYb0hoWVJKVXZJUUVseXdwd1NXS1N3Q3o1QUFBQUlEUDhhMEVIUUFBQUFBQVA4VTBHd0FBQUFBQUhrQ0NEZ0FBQUFDQUI1Q2dBd0FBQUFEZ0FTVG9BQUFBQUFCNEFBazZBQUFBQUFBZVFJSU9BQUFBQUlBSGtLQURBQUFBQU9BQkpPZ0FBQUFBQUhnQUNUb0FBQUFBQUI1QWdnNEFBQUFBZ0FlUW9BTUFBQUFBNEFFazZBQUFBQUFBZUFBSk9nQUFBQUFBSGtDQ0RnQUFBQUNBQjVDZ0F3QUFBQURnQVNUb0FBQUFBQUI0QUFrNkFBQUFBQUFGVHVUL0FFaTRQaHNXRHBDaEFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xX1BSRSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiODdkYmM1YTE0Yzk0NGRjODhhNDc5N2Q4MDBmZDFmM2MiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjp0cnVlLCJ1cCI6dHJ1ZSwidXYiOnRydWUsInVzZXJWZXJpZmljYXRpb25NZ210UHJldmlldyI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlfSwibWF4TXNnU2l6ZSI6MjA0OCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6NiwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoxOTIsInRyYW5zcG9ydHMiOlsidXNiIl19fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAxOS0wNy0xOCIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiZVdCTSBlRkEzMjAgRklETzIgQXV0aGVudGljYXRvciIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMTkwNzA5MDAyIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjMuNCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4wLjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMTktMDctMTgifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDE5LTA3LTE4In0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiNzAzMjNhNWU1YTNhMTI2ODJkZGY5NmNiYTQwYTExNGJhNmQyMWYyMSJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyI3MDMyM2E1ZTVhM2ExMjY4MmRkZjk2Y2JhNDBhMTE0YmE2ZDIxZjIxIl0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IDUgU2VyaWVzIHdpdGggTkZDIChFbnRlcnByaXNlIFByb2ZpbGUpIn0sImRlc2NyaXB0aW9uIjoiWXViaUtleSA1IFNlcmllcyB3aXRoIE5GQyAoRW50ZXJwcmlzZSBQcm9maWxlKSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzMsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6Mn1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiLCJyZW1vdGVfaGFuZGxlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlETXpDQ0FodWdBd0lCQWdJVVNPRWpUZi8veXFSZlBXN1FxOHF0SXlDckFnOHdEUVlKS29aSWh2Y05BUUVMQlFBd0x6RXRNQ3NHQTFVRUF3d2tXWFZpYVdOdklFWkpSRThnVW05dmRDQkRRU0JUWlhKcFlXd2dORFV3TWpBek5UVTJNQ0FYRFRJME1EVXdNVEF3TURBd01Gb1lEekl3TmpBd05ETXdNREF3TURBd1dqQXZNUzB3S3dZRFZRUUREQ1JaZFdKcFkyOGdSa2xFVHlCU2IyOTBJRU5CSUZObGNtbGhiQ0EwTlRBeU1ETTFOVFl3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRQ2R2bDI3dzJndTFmUFhlRUZiSWRxeDBCYWx2VkRWV3JRUEo3SHF2aXVFdFpIbHhTTHhTRnRjWHBUb2x2THZvZjhmNHRNZXJRVGtWR3pjbVl6bTFFQlQ0SUp1TW1vRXFma0VFaFdwc0FETUZyalprcWxaWTlFcXhRekxvVkVFb25FNW9HeFNkVkN4Q2NMSWFja3B5Ui9DQ1h2ajFCdC9oVGdFOWhUbEY0cFJxeE1reDNwbEY3eThkRFpsUkhXczd2Ym5obUJDR2VJMFpQRVE2bmwybUNnMnI3NGFkRjJ1Nks5cnJMZmhCQzNRTEU4RVByZ3FVc0kraGt1cTJ0SzRNMlNNT3A4dVVWVmtxVWV1M2gwa3IzV1ZJMFcwMnBrZ3JPZ2lGS0xGTmtTcmJZaGRqTUJEajVpem1xZmM5eEpSS29EWDYxMnFkOFpHVkhwVDVBWUZYKzFoQWdNQkFBR2pSVEJETUIwR0ExVWREZ1FXQkJUWnlVNURpUS9hMlVFZ0U3cUJLMHpoSXNSTlJqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUFNQTRHQTFVZER3RUIvd1FFQXdJQkJqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFYdm5CNFNMdVVKZllNU1ZHQWhzc0wvU21XbGkzRlNjY2d4eWR2S2xBQ2NpZElJV0tRcWEzcS9RU1VFUXpDOURnRWZNZ3I3aUMxQmtUWmJJTGJvVjZVWjVrbk5zdmpFWld1TWVvZ0o4dGdaczFoVnZLd1ppendKK21FY21zamhJckJZdW9MMVQ2eXJPSnZLRmcxanYrQ3k0WndBOUJway9WM1VPaXIxVnlLOGRDdHlIdTZ2Zm9zb3RBZFl4OEZBdVIyNDNnUlRNVjZKeDhKZGlnMkpESUFRTWx6VmVEcFNVSFgvSzJIWFJIeEh3ZmdqYmdVampCdS83MnI4T2ZlaHloekhYSTNLOENGRmRmbE8rOG5FT0pLM3k4RjFpdmdTNXVOLzhTbWNZdy9TVFFZd2hyeFB1d3ozblA4YmFNdW00QkIybm5ZbXBCNjBzWDNibDVrOFFVU3c9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFmQ0FZQUFBQ0dWcytNQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUhZWUFBQjJHQVYyaUU0RUFBQWJOU1VSQlZGaEhwVmQ3VE5WMUZELzNkNTl3ZVFTSWdTOUFRQVhjRkxBUVppOWZwZVZ6MXRZL1dUWnI1V3hwYzdXNWtuTGE1akkzWjg1c3JTMm5NMnNqdFd3WlM3SVVINEg0eENuRVF4NERBWkY3NFY3dXM4ODV2OS9sSW5CdlZKL0I0UHY5bnUvNW51LzVudk01NTZmekEvUXYwSGIvSXJYM1ZGS1BvNDVjbm00aW5VSVdZd0xGUm1aUVV1d2pGRy9OMWlSSGgxRVowTlJWUnVkcXQxQmQrMm5TS3lTL09oeXMwK2xrM2UvM2tROXF2RDRaVXRhNFZWU1V1WTBlaXB5aVRoQWZvY29PUlZnRHV1dzNxS1JpQWQzcmJjRXRqVGpZSW9mNldhSHNDbXpWUFdDTXgrY2doOHRMcVdNS2FNV3NVakxxbzJSdEpJUTBvT3ptZXJwUXU0ZXNaZ3NPTmtHeEg3ZDBrZHZUVDE3czRPTVU3Vkk4WmhqZ0dhTStBcTlpRU51OFBpZjF1ZHowN013dktXZjhHbFZvQ0VZMDRQQzVXZFRhWFlGYlI4dk52TDUrM0tnZmI1eE5NeWE5UmFtSml5bmFNbEdUVnRGbHI2YmE5dStwcW5FWDR1TXVSUmdqU1lFaHJON3V0RkZlNmxxYWw3TmZrdzVpbUFHSHluUHBiazhWbVkweHN0bnB0bEZDVkNZdHpUdUJOODNRcE1MalR0ZXZkUHpTVW5KN2U4bWtqeFozOWZYYktEZmxkWnFidlUrVFVnR25CVkY2ZlEyaVBIZzRXMTZVV1V3dnpiazE2c01aRStQbjBwdno3SlNldUF5ZXM4bGNwQ21hS3VvL3ArcVdyMlVjd0lBSFdydlAwWUV6aFhBdExBYnNzSGhwN2lHYW12eWlqUDhyeXFyWFVXWDlYb293eHlBdWZOQnJwNDNQT0JGWFpsa2Y4TURSaXFjcHlvd0F3cHV6MngrZld2ei9EdGRlOXNtc3p5Z3RjUjZDMXdiZHpCbDZPbHE1V05ZWTRvR2F0aEpNcmtURXgwakFSU0hBVnMrNXJZa1FOWGIrUWdmUExzUTZnWHlJbnNyZVFmbXBtN1JWRllmTDg2bjFmaVVPa1l2U2hrVVB4dmJ1a3pveTZLMWloTTFobzNYelc2RXZTZlhBK2RwaVdHYVdkK2RvWHpMem1Hd0tZRkxDQXNSQWxQQkFoTWxDRlhVN3RCVVZQcjhIZ1ZjSkhXcStGMDBwbHIrRE1UZHJQNHp2eFkxMWtOTWh4VCtTZVRHZytkNFY1TFFKaXR5VUdKTkI4VkZac2pnWUJaTS9JSS9YQ1RrajBxeURPcEYyQVZRMTdDSWpVcC9EblQxVWtMNUY1Z2RqK3NTMXdnMWdFM2dpZ202MGZDWHpTblBYYnlBUGJJWHYrSURwRTE2VGhhSElTOXNreWhsbU1FNUYzY2ZxQUtocTJDMEU1UEgxZ1lhWGFMUERrWkcwSERKT25LV0hwNTFJMHo1U091eDhlMVdBdVp6ZEhRclRrcDhUbWpYb0krbGEwd0dac3p1YnFiTzNpZlE2QS9XN3ZWU1lzVjNtUjBKS3drS2M0V0hpQmttUjhJM0NDZ0k4N29PTDRxelQ1UCtSVUpCZWpFT2dBUEs4aFlQemF0TStlSVRwMklPOXlUUW1lcm9tUFJ4eDFxeEFjc2lsZS91YlNlRWJjV1FHWUVDZ2hjTFkySHlLam9nakgyNWhNcGpwVXYxT3VnbGk0ZWgyZVJ3ME8zMmJKamt5dUNnTnpnMHZ6bFlNU2lTczB1b280TUc3aE1PakNFYVgxeUZFMG5TdmpCenVUbkVwSzg2WjhJb3FGQUl1Ync4a2c5QXJFYVJFV1NaSStqSDRYYnA2ZzlFOUVuSlQzb2FSekROK01VSkJRREhuNTZhOG9VbUVCdXNPeEJzL041K3RKRWJQa0FGRGo4VUd2T3MvSVd2Y1NnbEdCaHZTNy9GVFlmcFdHWWREWThmUEF4V1NBMzVzVEM0cDQrTG00QWFxSW9QZVF0ZnVmSzZKaDBaaHhsYnNVWE9TbVhOaWZENVpUQWt5RG9mYmJjY2x4bkE4V05BcXhDYlJOeWtoWHhRcGFEdzY3ZlhVWWJzaUcwS2h0djJvZUl2aDhyaFFNWU9jRUFxWEcvZUkrem5nT2M1eXhyOHE4MklBTTFjL0ZMRk9wbHF1NWVGUVhyTVp6R2NWQ2pZYkxXRzVJNEJUMWV1UnJsYnh0Tk90TWl0RERFaExYSUl5bkFBdnVPRVdFM1gzTmRBZnQ5NFZnYUc0MlhJUXQwWlg2UGVDRS9xUUZlOXJLNkh4N1lVNTBLdkg3Zlc0ZlMrcTdLS0JKeHNnZ0JYNXBTQUdoMWpJclZoNXpRNnczUmZhYWhCWG0vYUNiQ1pUakNVRlVUeVdacVc5cDYyTWpKUFhWcU9yUGdNTzROdjc0R2tmK293ZnROVkJEUW5qRkpxSFN3MTdwWHZoV1c1S1pxZS9RNDlOL1VTVENBVldvUVhGSUhCSFhYZTNGUHJVRHN1R0RtdEYvaEhLVEhwZWt4aGlBT1BJK1NKcTZTNkhGNEk5WVd6a0JKVG80NmlVTXpXcDhQaXIvUmlkdUx4S1lzU2tzVjh2TGxPUXZoR1gyWWxSME9CaEJqQyt1L2dFY3ZZMEFwSzdZazQxTnhqUFNRbldGSFRGNjZVcmpnZXZCOEN1NWErbDJ2WVNSUHR1VkRvNzNoaGRNU0huVVg3dFRqc1ZaR3hBbC9XcHRpT0lFUTFnbkwyOW1YNi90UjF0bWxrWWo4VzRYK0NTaldjVURHWTFOcFMvQzdoU0txaU1MTS9sMlFtU1daNzNEZHorZ2lvOEJDRU5ZUFE0NnFua3p3WFVicXZCa3hqVVFzV2ZaRmdidW8zckFmK3dON2pPTzkwK3lueDRQaTNMKzBuWUwxU2NoRFVnQVA0Z1BWLzdJZDFxKzFIU2htdUdrSXFXUlBneXhNRnFQOEhmalRualh3WTViUWZiSmN0Nk9JektnTUhvdEYvSGUxZWdzYXhIU3FHNndmZG1RNXg4TnlURkZxQmNwMmlTb3dIUjN5azUrMzZoRjd2WEFBQUFBRWxGVGtTdVFtQ0MifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMC0xMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzMsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWXViaUtleSA1IFNlcmllcyB3aXRoIE5GQyAoRW50ZXJwcmlzZSBQcm9maWxlKSIsImNlcnRpZmljYXRlTnVtYmVyIjoiVTJGMTAwMDIwMjQxMDEyMDAyIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMTAtMTIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDczfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI0LTEwLTI5In0seyJhYWlkIjoiMDAyNCMxNTQxIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWlkIjoiMDAyNCMxNTQxIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkcrREZhY2VWb2ljZUtleXN0b3JlQW5kcm9pZCJ9LCJkZXNjcmlwdGlvbiI6IkcrRCBGYWNlVm9pY2VLZXlzdG9yZUFuZHJvaWQiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJ1YWYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfSx7Im1ham9yIjoxLCJtaW5vciI6Mn1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9kZXIiXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX2RlciJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiYWxsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJ2b2ljZXByaW50X2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmYWNlcHJpbnRfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbInNvZnR3YXJlIl0sImF0dGFjaG1lbnRIaW50IjpbImludGVybmFsIl0sInRjRGlzcGxheSI6WyJhbnkiLCJwcml2aWxlZ2VkX3NvZnR3YXJlIl0sInRjRGlzcGxheUNvbnRlbnRUeXBlIjoiaW1hZ2UvcG5nIiwidGNEaXNwbGF5UE5HQ2hhcmFjdGVyaXN0aWNzIjpbeyJ3aWR0aCI6NTQwLCJoZWlnaHQiOjk2MCwiYml0RGVwdGgiOjE2LCJjb2xvclR5cGUiOjIsImNvbXByZXNzaW9uIjowLCJmaWx0ZXIiOjAsImludGVybGFjZSI6MH1dLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQm1EQ0NBVDBDQkdRZFBSMHdDZ1lJS29aSXpqMEVBd0l3VmpFTE1Ba0dBMVVFQmhNQ1NVNHhDekFKQmdOVkJBZ01BazFJTVEwd0N3WURWUVFIREFSUVZVNUZNUXN3Q1FZRFZRUUtEQUpIUkRFTE1Ba0dBMVVFQ3d3Q1JGTXhFVEFQQmdOVkJBTU1DRUZWVkVoU1QwOVVNQjRYRFRJek1ETXlOREEyTURNd09Wb1hEVFF6TURNeU5EQTJNRE13T1Zvd1ZqRUxNQWtHQTFVRUJoTUNTVTR4Q3pBSkJnTlZCQWdNQWsxSU1RMHdDd1lEVlFRSERBUlFWVTVGTVFzd0NRWURWUVFLREFKSFJERUxNQWtHQTFVRUN3d0NSRk14RVRBUEJnTlZCQU1NQ0VGVlZFaFNUMDlVTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFU0lwSS9kS1lDRFloendEMndTZllBT2Ivbk5haVBjV0YyMXZ4WmsvVGdEME9KdGNEK09QbTY0bndaZEZXU0VZU1c3aU9xbnBtSnlkZThtZ3IvdG5BaXpBS0JnZ3Foa2pPUFFRREFnTkpBREJHQWlFQTNidmhhelFGUHdteVhseEsveENYZmg3ZzFYMUVvYkxDM0wrMkdPUnhwN2dDSVFDZk5FVFgvbTJCZWJSTFhJNExNUDFFUUdQWEZEZjdPazc0VTd4YmlNNFZrQT09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsLzlqLzRBQVFTa1pKUmdBQkFRQUFBUUFCQUFELzJ3QkRBQU1DQWdNQ0FnTURBd01FQXdNRUJRZ0ZCUVFFQlFvSEJ3WUlEQW9NREFzS0N3c05EaElRRFE0UkRnc0xFQllRRVJNVUZSVVZEQThYR0JZVUdCSVVGUlQvMndCREFRTUVCQVVFQlFrRkJRa1VEUXNORkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCVC93Z0FSQ0FESUFNZ0RBU0lBQWhFQkF4RUIvOFFBSEFBQkFBTUFBd0VCQUFBQUFBQUFBQUFBQUFjSUNRUUZCZ0lELzhRQUd3RUJBQUlEQVFFQUFBQUFBQUFBQUFBQUFBRURBZ1VHQkFmLzJnQU1Bd0VBQWhBREVBQUFBYXlqNkY1d0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFZ2QzZURUNXhMSjM2eEZvYzVsOGxHUFNYS3N6TkRNMDlOVmROKzhQOFpkTEtCSHBpZSt2aFR1b2ZOWE5Bdm0rTXlVbVJuMWRRWmdBSE00Y3cxTGljUDFWTGVRdWpUekoyZEpNMzM1cGhhYVVqZWFiS1VSdmRWN1NaMWRUUzZTdUZrd1EvYkhyNzY1dDJGMW1kazg3TlBxRStTWXlIUjFnQUxCMThsdnlUZWpQWFFxbXVnc2dZZFZWcDF5YUhmWExXM3ZVUWsycGFJcWQ1TXJZcUlQZmpkTE5tVFl5MitDVG94c2I2SXR0U3U2bEE5QlpIQTZxb0FCeU9PTkhQMnBQZW5qcnMvOEF4bW5jWWJMQ2lhNnoweFNtYVp0OUhSTWxVUnZkRitxem9ZdXMzbGRLVjF1NmlhbTN0N1BydEpuMEdlbnUvQTlEV0d4eEFBQWV2OGd4WEtrL09acWM5Sm1iS2xwTXpaR2t6TmthVE0yUnBOd002RXJoMWo4dzJPSWV5QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUC84UUFLQkFBQVFNREF3UUJCUUVBQUFBQUFBQUFCUUFFQmdJREJ4VVhJQUVRRXpZUkVoWXdOSEExLzlvQUNBRUJBQUVGQXY2YkdJU1JsTlliRmdVWlMzRk1tbFBndEtXMmJmU0xyRTFQU3VXK0MwdkJhWGd0THdXbDRMU2NpR0x5azFpZ09ScGtzUUl4ZTkrR0FRbXFVUEc3ZTAwc1BuN1lhM2U1ZEJ0cTk1eGFPWllIRkF5eEo3Y3BCa3hoSGkyODR0YnppMXZPTFRITFFKM1cxZDJIMWg2eXNFV3M1aDF5S0VPYlJyY2ZPZ1lpeUJGU1dRdDR5S1BTRjdJM3ZERW50eXlmN3R3amNvZlJoNENOTjVBTWxBSzNJd2x5M1ZadWNzVk1PajJYTExSbXA5SSsxR0pqMWRPMGg1YlNIbEFvQ1ZqcDlUWEhoWTlKZHBEeTJrUEp6aXc0MGJkc09tYW01ZFpIWWRCOHc1WVkrTmVVNCtycEx1emI5Ym1lL3dBUHRqWDZ2dlZaZitQdXZsaTRoMFlTOVpkQ1ZNejNhbkpzam9wM1BraTNQa2l4NU5UQjZSS2RUbzJGbEc1OGtXNThrVi9KRWhkV08ySEFsVjRnc2hrT2hLWDhyRit0cmZqUnkxSXd4NEcya1F5U1JSL0YzWERFbnR5eWY3dHdpc05mU2x5SUZOd2crWVNHaU5BNnF1dGRYT0VURzdFMzdCKzNLTkw3ZTA2dFBjWHg5NVh0Q0NXMElKYlFna0JnQXVPUDBheDBKUEV0b1FTMmhCTGFFRW1PTTQreHJ0V3FMRnNvVmFobVV4bGw2V0V2d3g2VWtJemZDNWVHUEtXOHFET3FkZEdyWFJxMTBhdGRHclhScTEwYXRkR3JYUnExMGFuTXRDdEtUZVlCN1drOUpIOGtjLzAzLzhRQUhSRUFBZ0lDQXdFQUFBQUFBQUFBQUFBQUFBRVJFZ0lRSUNFeFVQL2FBQWdCQXdFQlB3SDZ5eGs2UktGN3FVU2g0enlmUzFERW1aRVBXTE11QzlNdFdSWWJnc2h1UmVtWG5GT1NwVml4WTFKVmxXSlFOenlzV0xGaXhZYm43SC8veEFBdUVRQUJBd0VGQmdVRkFRQUFBQUFBQUFBQ0FBRURCQVVSRlNGU0VoUWdNVUZSRXlJeVlZRVFKRkJ4OERQLzJnQUlBUUlCQVQ4Qi9MVmxkNFBrajVyN2lwenpkUjBsUXhzN2lxci9BQVA5S09NNVgyUXpXNTFPbGJyVWpuc3VvSytXRjdqelpSbU1nc1k4dUNVL0NqYyt5cFl0Nm11TDl1aEZoYTRWdlVHdGxVMU1KUWt6RXJPa0dPVjNON3NsdmNHdGtFb1MraDcxYUZNeGc4cmMyVmxTdmU4WHp3Vlk3VUJzeXNzMkdaMmZyOU1MbTd0L2ZDa3M2V01YTjNiSlFRRlVGc0FzTG03dC9mQ29hWTZablkrcXF6WUlDZDFaWTN6WCszRFZVNVVzbTBQTG9vYlVHNjZWbGljSHVwN1Foa2lJRzZxaG5DbmtjajdMRTRQZFBha0hTOVZOVWRXVjNUc3FLbTNlUHpjMzRTRmpiWkpIWmNSWmk5eXdrZGF3a2Rhd2tkYXdrZGF3a05TaHBJb1BTMmY1ai8vRUFFTVFBQUVEQWdBSEN3b0VCUVVBQUFBQUFBRUNBd1FBRVJBU0V5RXhRWk1GSUNJak16VlJZWkdoMFJRd01qUlNZbkdCd2VGQ2M3R3lVM0NTcy9CVWNuU0N3di9hQUFnQkFRQUdQd0wrWnQyRVpLTUR3cERuby9McG9GOXM3b1BlMDk2UDlOV1lpTU1qb1EyQlhKcDdLM1dJUWtIeVZ6Vjd1QUFnRVpCZW41VnlhZXl1VFQyVnlhZXl1VFQyVnlhZXlyUHdvN3c5OW9HbEtpaFc1NzNTM25SL1NmcFZwVGVNeW84Qjl2T2hYbWk5SXVuYzVrOE1qOFo5a1VobGx0TFRTQlpLRWl3RkYrVStpTzBQeHVLdFJTMEpFcjNtMjdEdklyMUtaMko4YW13MjRrcEszMlZOZ3F4YkM0K09BZmtMK21CNkE5RmtPT05XdXBHTGJPTDlQWFhxVXpzVDQxNmxNN0UrTmVwVE94UGpRUzRYNG5XNjNtN3IwbDZPOGg5cFdoYmFyaW5JOGxwTHpMZ3NwQ3E0RjNJTDJkbHc2dmRQWDVobU95TVoxMVlRa2RacVBCWTlGcE5pZmFPczA1TWY0WDRXMjlhMWRGR1JNZHh2WlFQUlFPZ0RlajhoZjB3VC9nMy9BRzA3MFBSWE9MUEtNcTlGWS96WFRNMk1lQXZTazZVbldEVWlFdTJNb1hiVjdLOVJwVGF4aXJTYkVIVWQrMHRRdUk3YW5mcDljSGtRUEV3MGdXOTQ1ejlNSVVCSHNjL0sxb2piV3RFYmEwSmNzTTVISnFUd0YzT0NWTmlobklPWW1ManVXT1pJRmFJMjFyUkcydE92dUNQaU5wSzFXYzFEQy91Y284VklSanBIdmo3ZnBnbkJJc2wwaDRmTVorKysvbTlQazMvb1lOMWNiVGx6aGEvMmp6RzZQL0hjL2FjTzV1TDByL1lyQW0zK21SZnRPL2pwVWJKa0lVejlSM2dZRWJvSlR4TXRPYysrTTM2V3doSW5pd3pjaTM0VnpnTmczNFZ6Z05nMzRVSXMyWGxtTWtwV0xrMHB6L0lZSmNTSE15VWRHSmlweVNEcFFEckZjNERZTitGYzREWU4rRk9NdVRncHR4SlNvWkZHZy9MREozVVduaW1VNUpCNlZIVDNmcmczUVdrM1EyckpEL3FMSHZ2djIzbWxZamphZ3BLaHFJcVBOYXRkWXN0UHNyMWluWVVrY0JlaFEwb1ZxSW90eW03dEU4VytuMEYvNTBiMGZrTCttQ2Y4Ry83YWQ2QXlndFJRZU1rcUhCSHc2VFRNT0tuRlphRnVzOVpwK1VTTXNSaU1wNlY2dkdpcFJ1bzV5VDVnNDEzSUx2TE5EOXc2NmJreFhVdk1MRjBxVFNtbm0wdXRxMG9XTGcwVkNLcU9UL0JjSTdxMHl0cjlxMHl0cjlxMHl0cjlxOHNpRi9LNHBUeGk3ajlNRHM2U1g4czVhK0l1d3pDM1IxVnBsYlg3VnBsYlg3VnBsYlg3VUZlUm1Rb2Z4MWxYZG9wS0cwSmJRbk1FcEZnS2NsVEhReXlqV2RmVUt5eXJ0eG04ekxYc2pwK1Btc2VFOVpCOU5sZWRDdmxRVFBiWEFkMW0yT2p1ejFkdmRTSWVvdkFHdWNJdTJUWE9FWGJKcm5DTHRrMXpoRjJ5YTV3aTdaTmM0UmRzbXVjSXUyVFhPRVhiSnJuQ0x0azFkM2RTSU9vT2hSN0JSVHVjeXVhN3FXdmdJOGF5MDU3SHQ2TFl6SVI4Qi9NNy84UUFLQkFCQUFFQkJRZ0RBUUVBQUFBQUFBQUFBUkVBSVRGQlVXRVFjWUdSb2NIdzhTQXcwYkZ3LzlvQUNBRUJBQUUvSWY4QVRZam80YURUTTBPTVVZNjN2RXRCWkcrYUJGdUQraFhxOUc1RUNITnN1NWFCTlBWNjlYcjFldlY2OVhwYzVZZjJ5bVpPMFJaMVQraWdaNFRnaE9Eby9VVEJ1Nk4vTi9YQTMwYTQwU09RVmVxckFkMi9Tb01IZ3VyT214R0VobnBDQXVXMzRVU0xxaGxoTVNQZ1JvMGJwdHN0M082WGFhb2JpVkNFSk1pZVkwREUwM2htMEhVNHg4OWRxWEpCUm1FU0RiaXVxeTFicGl3TUx1SDlYQUdsM09XN2NzdjY0L1pSd1Zzb1N1T00rWXFmdWVRZk5GQ3FKdnd2VTZMVCsyNytCaFBuWmtIM093OVo4TmhaZWhhWW5KSERiQTVvUEJYblB5dk9mbEUyREc4eEZrYWJIbVJHSUdzak1hODUrVjV6OHEvVVBGZ2x3MDJwTmtaZkozejVObkh2SUNmbUZCM1c2MzdiRGFQTTVZZEkyK1d5K3RRRmJKdE4xdHNXYmN4NmZuUEFwWE5Pb0xqc1RCREJ1QkVjUXVlMG9ZSUdGdG9VSjJyQkxNaUxRZGhuQXBZTWxhamV1MUNoaUZnWGtJU3pMdFNnSmRrckc3WXd3ZzRaMEh6TkF2UmlKSG5TaENDMjY3L1JHc2N1WFljMGZwalRsTE1kaHZ3ZFZ2MlVjSU5CckNjVCtBNHhWajFsTjVqbUsyMWF0RVdNZEJlMEtmdzJRbFg2SElPaGVETFJkYnNrbkRxS3gvSFNpSjlCWnRScTB5OHhQTkljQ3ZTcWVsVTlLb2JRTmhJRyt5R3pEZGY3QUVHZ1Y2VlQwcW5wVk1OSUVqdWNTZ0RGRGdaQVVTV3JieFlCaXVWTFFsbnZFYXNlQmg5UytZWjVoNXRTR3NEZEZMeHNPWEdqVTUvQkZtdlB1OWVmZDY4KzcxNTkzcno3dlhuM2V2UHU5ZWZkNjgrNzB5aW42NExXQnVRUjF0dGJvTjlTVTZWR1dCdnYvd0JPLzlvQURBTUJBQUlBQXdBQUFCRDc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nm9Namc0eHZQMzc3Nm1wenl5dnplcHI3NzczajVUL3o1ZS96Nzc2NHB2OEF2cS82SUcrKysrdmMvd0QvQVA4QXRmOEF2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2L3hBQWVFUUVBQWdFRkFRRUFBQUFBQUFBQUFBQUJBQkV4RUNBaFVXRkJVUC9hQUFnQkF3RUJQeEQ5Yk1kQnF6TUVVTXoybG4yQmhFUnAyQmJVV0NabmhMQnhBcHhQS0ltWlExRDkyY1JEeHJBV29BdDBpd2hzYm9EVEhycEFSakNqV2htNXRHb016TDlTL1V2MUw5Uy9VWEw5ai8vRUFDZ1JBUUFCQVFVSUF3RUJBQUFBQUFBQUFBRUFFU0ZCWVhIaElERlJnWkdoc2RIQjhQRlFFUC9hQUFnQkFnRUJQeEQrc2IzMTl1TllEbzd0UFJGVTBFODV6dmtvZFZ2bU43ZTQrS3RKVSszdzd6SitHS3pWYkdHUll0VnFXL1RGZ1lxQmRQM0lDOVVhRllYUVZGdVpQMUlVbzBjSVhOTjlpWTVRRG15bEhoK09tdzNCSGkyWEFTek94OGY0dTE3akZIa0ZiRjlSK2dJVnQ1Rnc4Wis0d3BnMUc2dnlFdkJCT2JaRVViaGVUWVFTak54MnFxNFlabmVVVmRlSmZ5dW4xR3NyUTFDRm1zcUZVVVdabnFmVWF3QlVMa2U0TUpTNExiZmxqWnljT0J5ODdMMEtqY3hxcXdienZiM21LNmF6RmROWml1bXN4WFRXRlMxOUNXM25HMTA1ZjJQL3hBQW1FQUVBQVFNREJBTUFBd0VBQUFBQUFBQUJFUUFoTVJCQllTQlJjWUV3d2ZCd2thSFIvOW9BQ0FFQkFBRS9FUDVOdmNVNFpraTUrQXRLUTBIckJaN3FlZUp2bWppdEFOZWdyOU45VXpHTUFqc3NhU0dreEI2TmZwdnF2MDMxWDZiNnI5TjlWK20rcVBNVUpyL1NpeDgrbm9nNG9xbUJQYmtzREdOc2JLU0UvRVMweFRIQTJGa1N1Z0VJUVNXWGhjQXNGV1ZmVFIyQ3QxRmhLN0ZUSnRBcGVIU0RDekozZnVoTUVUQXZIUTBPTG05bG8xZ0RKa2VoZ3dZTkQreEUrV0RsQTcwYnA1N29jSWttNWtwdDNmdHJDTUlJUkJFUWFQMEtVd1hXV3VrT0lrdkQ0SEZkd2RQZ2xMMWpBdUpWK1krQ1lMQlUvaXdPQVYyeFpnTWhEQU1ZUGoxQnRJZ1lsdkJLVy95TkZKQkcycHNtMURBOWdvcXdoMkdPQVlUMGtKWkduaWtKdzFCMkp3WkJ2UmliZWhBZzdpSjFsdGlra2lMOGdqa2FNQkZRL3dCbmZ3Yys3cmRQYVlzSkovdlhQTmxnZDhCaGE3UjlzUkozVkpIS3hHdWVaRmIxZERFWnNLMnJMejBaQ2lvMmttNzhlaENUNEVTdCsrdktxSk43ditrNkJMSlRkT0hXZmg5dngzc2JSV2U0OWFOT0VRaCtkdXNhTlMwRUkvUU9Sb3lJU2wzbjJoWGQ0dW9HSHlxQVFHdVRKYUZHemE3WVpMYVkwbVdmdGR3MGwxMXpCYldUSnYxRHNzbkNrcEpFZFNJQ0phV1M0NGZIUXlyK0dURW50TTk5ZU01ZEREY2dIMVF4RVM1S0NiMnVKenVGTXFTRFM4U25DTHdpbGxUQWJDcnNvN1BOaHlRdnh0RkJLQlFobnNMZUczSkM5Wno4SVYzZEJMS2U3WUNDcHJMUmF2Rm05M2tUS1VnWE1rSmxWM1ZaK0IrNnNURllEWUZiV0RkRkFiQXBNRzRtUWJLQkVSQks0Rm51aUVpZVNtQUZkSzhKNFFIUXpac3pOVnl5L0Jjc2I2RW1tQ1BKOEpNaStaNkdiTm5QTTAreGN6MkZEVUtCZGdBQTRLa2FDZk93QzhhQVN0WHFZNlN0NGJNWW94QVNCK0o5Z3dURjVpSVdtQXRNU1ZEWW9LSjNDdWRtSjNab0VlSmdieVllejR2L0FQOEEvd0QvQVA4QS93RC9BUGdnUkw2eFFlaW9iMFJWL0JiOGpzb0EzYkVtTWpZd0pVcUNWaitUdi8vWiJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wNC0xNiJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDQtMTYifSx7ImFhZ3VpZCI6IjU4Mjc2NzA5LWJiNGItNGJiMy1iYWYxLTYwZWVhOTkyODJhNyIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiNTgyNzY3MDktYmI0Yi00YmIzLWJhZjEtNjBlZWE5OTI4MmE3IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ill1YmlLZXkgQmlvIFNlcmllcyAtIE11bHRpLXByb3RvY29sIEVkaXRpb24gMVZESlNOIn0sImRlc2NyaXB0aW9uIjoiWXViaUtleSBCaW8gU2VyaWVzIC0gTXVsdGktcHJvdG9jb2wgRWRpdGlvbiAxVkRKU04iLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2LCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX0seyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AzODRyMV9lY2RzYV9zaGEzODRfcmF3IiwiZWQyNTUxOV9lZGRzYV9zaGE1MTJfcmF3Iiwic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo2LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCIsImJhRGVzYyI6eyJzZWxmQXR0ZXN0ZWRGUlIiOjAuMCwic2VsZkF0dGVzdGVkRkFSIjowLjAsImlBUEFSVGhyZXNob2xkIjowLjAsIm1heFRlbXBsYXRlcyI6NSwibWF4UmV0cmllcyI6NSwiYmxvY2tTbG93ZG93biI6MH19LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo2LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIiwiYmFEZXNjIjp7InNlbGZBdHRlc3RlZEZSUiI6MC4wLCJzZWxmQXR0ZXN0ZWRGQVIiOjAuMCwiaUFQQVJUaHJlc2hvbGQiOjAuMCwibWF4VGVtcGxhdGVzIjo1LCJtYXhSZXRyaWVzIjo1LCJibG9ja1Nsb3dkb3duIjowfX1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRFBqQ0NBaWFnQXdJQkFnSVVYemVpRURKRU9UdDE0RjVuMG82WmYvYkJ3aVV3RFFZSktvWklodmNOQVFFTkJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNWjYvVHhNOHJJVCtFYW9Qdkc4MW9udE1Pby8ybVEyUkJ3SkhTMFFaY3hWYU5YdmwxMkxVaEJaNUxtaUJTY0laZDFSbngxb2Q1ODVoKy9kaEs3aEVtN0pBQUxrS0t0czFmTzUzS0dOTFp1ano1aDN3R25jcjRoeUtGMEc3NGIvVTNLOWhFNW1HTkQ2enFZY2hDUkFIZnJZTVlSREY0WUwwWDRENW5HZHh2cHBBeTZua0VtdFdtTW53TzNpMFRBdWNzcmJFNDg1SHZHTTRyMFZwZ1ZkSnB2Z1FqaVRKQ1RJcStEMzVod3RUOFFESXYrbkd2cGN5aTV3Y0lmQ2t6eUNpbUp1a2hZeTZLb3FOTUtRRWRwTmlTT3ZXeURNVE10MWJ3Q3ZFenB3OTF1K21zVXQ0cmowZWZuTzlzMFpPd2R3TVJEbkg0eGdVbDVaTHdyclBrZkMxLzBDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01COEdBMVVkSXdRWU1CYUFGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFNd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkRRVUFBNElCQVFDM0lXL3NnQjlwWjhhcEpOanh1R29YK0ZrSUxrczB3TU5yZFhML2NvVXZzcmh6c3ZsNm1lUE1yYkdKQnlKMVhucXVCNXNnY1JFTkZ4ZFFGbWEzbWlvOFVwZjFvd00xWnJlWHJKMG1BREcyQnBscWJKbnhpeVlhK1IxMXJlSUZUV2VJaE1OY1pLc0RackZBeVB1RmpDV1NRdkptTldlOW1GUllGZ05oWEpLa1hJYjVIMVhnRURsd2llZFlSTTdWb2xCTmxsZDZwUkZLbFg4dXN0Nk9UTU9lQURsMnhORjBtMUxUaFNkZXVYdkR5QzFnOStJTGZ6M1M2T0lZZ2MzaXJvUmNGRDM1NGc3cktmdTY3cUZBdzlnQzR5aTB4QlRQclk5NXJoNC9IcWFVWUNBL0w4bGRSazZIN1hrMzVEK1dWcG1xMlNoL3hUNUhpRnVoZjR3SmIwYksiLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVIzOG1xMjZTZjJzelZWMkJkRzZXRU43a3VXVXdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFSWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFOWTBXYjlvUG9Sb0tvUXlXUGFKcHoxMXZyV1RnNnpUdG1OajJWb0tSbnl2S0dScXB6YjgzdzVsNllBOTZVWWtZQkRRUDBpbE8yRFBlNndXcVZSNXpEZlJ6ZGNIOGJoK0w3ZEdHdmFlNmhSVFpoa0ZrQ3BYRHM0SGNja25yRGY4RkNsSjdIZTM5SmY0Mi9HMVFtMnp6OVdXbXJQWHRnaUsveDA1R2pzUWZHdURHMXpmNVFUVVVpZThsd3ltSzNUZmRPdk5lZUpBQVBlMnBuN0l0ZlJiK3JWck5XaUR6bFJuMnZObloyd1BvNHdIL1dKNmRoWFpHK3JNV1QrYTZCb2NnMVVmSXc2a2R1bkc0YlRwWnpzdmFjRll5UjBtcGYrRGVPbnBTV0FteXdKV0h2VGxmMllYeEZ5ZVhjVEFDZFFsY01OR0oyVmhaUTQ4eHRQNS9SQlAvOGtDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNoeTQyb2tpcWNUUzFpcWEvSFJXamtCbjRIL01COEdBMVVkSXdRWU1CYUFGT3EzUXBDZURIdGtldHRVZkFPNmZFNmYyS0ZoTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBbitSSElQYnRNRUROZFQxZzhIL1JpdEFrVWRMZ0F0MXRXR1dubGo5a25idjQvNEdsWDdDOXA0NWVmUE85L2FaTDZPVjFYUktCaTZLbXRCVzVLN251WUVuTXgvNUJxQlNiTFQ3cmhkdUM0OVRCZU1iOVBIZFhzVGxTVk5ZZWZyMWRHaWRyNGoweFZCUUxiMXJrbkRBYmRXRHpLZnZuYXlLTzhGcndlN0h4ODQzTUcvckorYzBYcnVVdmJmVlRDSExpSVdoTTdvTkRoTDh4b2I2eFVvOUtMS2NTTCtJdFlzTzMvOVdiOFE5R2pzcUw0RlhzRGNHMVNhWWg3S3BmdU1tT2l4cXpKWk8ybklpY1BZUmcxSTJTdWlVZllPNzB0bWRIY2JsK2tTUW1TWXQ3cnE0dmlJTGcyR3gzajlySVR1V1RqYmFVYVNTUXhnT21NU0h1eXpNQUMiLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVRuYmJHSVIyTkh2enFJS0ZBZVF3RzFYQmlzMHdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFRWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPc1hqM2swNEJhbjRUWWR0WktxRC9PUEp4eUR5YVBtQ0JVRlVpYVpJZ1R0ZVpuajNYMjVEaGdwWlpYc0M0RDB5ZEljcmxBNndOVUluT1JML0w5ekJiVEVJTUFWTUdvNmc3VUtBbWIyTUY2QUhibmhZSmQ5ZWlrdXBWTldTaEhOWU5jNEdCZE8xWU42QWZVcXZKaEhiZTNWNFNOTVBtQlJFS0pQVno3VGh3Z21nZ1RlOFdzMkswL3dzcXYyd1NFN3BiQ0JzVVpoSVg1MWJaTTNwcUR3SlBUbVJGRXZ0MC82dEc1ZU84RjNqMTRPWHFmRWhtam4xVnZ4S0RZUU9MWkF4Q3d3Z0MwUDRDZGZXdjN5OFBTUjhJMzU0aE8xWStHek5qdklxWDM4TktMeXd1SVlIRmVyT3hObHhFTUJ2RmhZQnVSdVlBa2tnVWFQcU42VUJoc0lMcnNDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNDb1JIaGl5Tm5iblhSV0lMNlpCWG9CWDlZVE1COEdBMVVkSXdRWU1CYUFGQ0FvVUNFYnBGcGI2RlBMblozRjVQeHNMM29mTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFDUUZhZkpJMS81V2c5Q0VFaW1FMVJQNTRSZ1F3VE5UT09Rc0xBQ1RlK3JJdGxGUXpDOVpEaHJWODI4eVg3anp5K0FBc3AzaXpLN1QxdGgyZGw3bSt0dTBzdzJQYS9vbGMwMm50NlB5SXczNDhnYUh6aEkxKzBLRTQ1cXh2RkRlTDJsTXhiUGZDWXZ5RUVhWXpqaVFFTFU1OTUxcFhHV3lLTWEvNGZMdE8rWktPWGhNdVZlcTRyWERQSTU0VzZKSE9pQWFpS2Rpdys1ZTNjMmt0L2pGSVF0TTZ2TVhnOUxORnpkakVUTnQyMFZYOVFldlJwRlpmdWNNRzl3Q2FRRG9GbFB6cFRNSktoUGV2L2ltSm1aWWhLZnIwbExjZW10cWpJeExBb3FaZE9ZZkhCZzYrdkFjZFBJL2lhdUdwVUF2N1grVUtObUR3aloyQmFINHNMd2hCMm0iLCJNSUlEU0RDQ0FqQ2dBd0lCQWdJVVVjbU1YelJJRk9nR1RLMFRiM2dFdVpZWmtCSXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFEbTU1NWJXWTlXVyt0T1kwcklXSGxkaCthTmFub0NaQ0ZoN0drM1laclFtUFV3MGhrU0c2cVlIUXRQK2ZaeVMzM1ZFcnZnK0JRcW5tdW1nTmhmeEZya3dFWkVMZWlkQmNDOEM0QWc0bnFxaVBXcHpzdkkxN05jeFlsSW5MTkxGY1pZLytnT2lONlpPVGloTzUvdkJaTWJqOXJpYUFjcWxpWW1OR0pQZ1RjTUdhRUF5TXpFTU55Mm5tNkVwK3BqUDVhRjZnaTIxdC9VUUZzdUoxajJSai95bk0vU2RSdCtlY2FsNU9Zb3R4SGtGYkw5dnZ2MkEyT3Y1SVRaQ2x3NGJPUzlucHlwUWltT1o1UUFZeXRtWWFRcFdsL3BNWXo2elNqOFJxa1ZETkVKR3FOZlRLQTJpdkxZd1g2bFN0dE1QYXBnMEo4NGw5WDB2b1ZOL0ZwUzRWQ1ZBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlFnS0ZBaEc2UmFXK2hUeTUyZHhlVDhiQzk2SHpBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBWU16Z0xySkxJcjBPb3ZRbkFaclJJR3VhYmlIU1VLU21iTFJXcFJrV2VBdHNDaERFSHBYY0ovYmdETktZV29IcVE4eFJVakI0Q3llcFlldmMzWWxyRzhvN3pIeHBmVmNhb0w1U2V1Smt6SHhLbjRiVGFTcDkrTXZ3YW1ucDY0a1pNaU5iRkxrbmZQOWtZS29SSGtNV2hlUkoxVXNQMXo0U2Nta0NlSUxmc01zNnZxb3ZxaldDbEZzSnBCY3NsdVlIV0Y3YkJKMW40UndnK0FURW9wWTRJZ0d2Nlp2d2MrQTlyK0FUMmhxcG9Ta1lvQWwrQU5Zd2dzbE9mOXNKZTBWK1RBOVlZL1VsYUJtUFBUZDAvL3I5d3ZjZVBXWmtQaktvQUMvelVOaGZEYmg0TFY4R0hzM2x5WDJYb21ML0xOYzhKWXp5SWFERWhHUXZlb1BoaC90cjFnPT0iLCJNSUlETXpDQ0FodWdBd0lCQWdJVVNPRWpUZi8veXFSZlBXN1FxOHF0SXlDckFnOHdEUVlKS29aSWh2Y05BUUVMQlFBd0x6RXRNQ3NHQTFVRUF3d2tXWFZpYVdOdklFWkpSRThnVW05dmRDQkRRU0JUWlhKcFlXd2dORFV3TWpBek5UVTJNQ0FYRFRJME1EVXdNVEF3TURBd01Gb1lEekl3TmpBd05ETXdNREF3TURBd1dqQXZNUzB3S3dZRFZRUUREQ1JaZFdKcFkyOGdSa2xFVHlCU2IyOTBJRU5CSUZObGNtbGhiQ0EwTlRBeU1ETTFOVFl3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRQ2R2bDI3dzJndTFmUFhlRUZiSWRxeDBCYWx2VkRWV3JRUEo3SHF2aXVFdFpIbHhTTHhTRnRjWHBUb2x2THZvZjhmNHRNZXJRVGtWR3pjbVl6bTFFQlQ0SUp1TW1vRXFma0VFaFdwc0FETUZyalprcWxaWTlFcXhRekxvVkVFb25FNW9HeFNkVkN4Q2NMSWFja3B5Ui9DQ1h2ajFCdC9oVGdFOWhUbEY0cFJxeE1reDNwbEY3eThkRFpsUkhXczd2Ym5obUJDR2VJMFpQRVE2bmwybUNnMnI3NGFkRjJ1Nks5cnJMZmhCQzNRTEU4RVByZ3FVc0kraGt1cTJ0SzRNMlNNT3A4dVVWVmtxVWV1M2gwa3IzV1ZJMFcwMnBrZ3JPZ2lGS0xGTmtTcmJZaGRqTUJEajVpem1xZmM5eEpSS29EWDYxMnFkOFpHVkhwVDVBWUZYKzFoQWdNQkFBR2pSVEJETUIwR0ExVWREZ1FXQkJUWnlVNURpUS9hMlVFZ0U3cUJLMHpoSXNSTlJqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUFNQTRHQTFVZER3RUIvd1FFQXdJQkJqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFYdm5CNFNMdVVKZllNU1ZHQWhzc0wvU21XbGkzRlNjY2d4eWR2S2xBQ2NpZElJV0tRcWEzcS9RU1VFUXpDOURnRWZNZ3I3aUMxQmtUWmJJTGJvVjZVWjVrbk5zdmpFWld1TWVvZ0o4dGdaczFoVnZLd1ppendKK21FY21zamhJckJZdW9MMVQ2eXJPSnZLRmcxanYrQ3k0WndBOUJway9WM1VPaXIxVnlLOGRDdHlIdTZ2Zm9zb3RBZFl4OEZBdVIyNDNnUlRNVjZKeDhKZGlnMkpESUFRTWx6VmVEcFNVSFgvSzJIWFJIeEh3ZmdqYmdVampCdS83MnI4T2ZlaHloekhYSTNLOENGRmRmbE8rOG5FT0pLM3k4RjFpdmdTNXVOLzhTbWNZdy9TVFFZd2hyeFB1d3ozblA4YmFNdW00QkIybm5ZbXBCNjBzWDNibDVrOFFVU3c9PSIsIk1JSURTRENDQWpDZ0F3SUJBZ0lVRHFFUncrNFJuR1NnZ3hnVWV3SkZFUERSWjNZd0RRWUpLb1pJaHZjTkFRRUxCUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURJN1huSCtadkR3TUNRVThNOFplVjVxc2N1Ymx2VllhYVJ0M1liYXhuOWdvZEx4NXN3SDBsWHJkZ2poNWg3RnBWZ0NnWVlYN0U0YmwxdmJ6VUxlbXJNV1Q4TjNXTUdVZThRQUpiQmVpb1Y3Vy9FK2hUWlAvMFNLSlZhM2V3S0JvNlVMZU1uZlFaRHJWT1JBazh3VExxMnY1TGxqNXZNajdKdE9vdEthOUo3bkhTOGtMbXpYWFNhajBTd0VQaDVPQVpVVE5WNHpzMWJ2b1RBUVFXckw0L0o5UXVLdDZXQ0ZFNW5VTmlSUWNFYlZGOG1scUsyYngyejZva1ZsdHlEVkxDeFlicFVURUx2WTF1c1IzRFRHUFVvSUNsT200Y3Jwd25EUkxWSHZqWWVQR0JCLy9wRXl6eEEvZ2NTY3hqd2FIMVpVdzliblNiSHl1cktxYlRhMUt2akFnTUJBQUdqWmpCa01CMEdBMVVkRGdRV0JCVHF0MEtRbmd4N1pIcmJWSHdEdW54T245aWhZVEFmQmdOVkhTTUVHREFXZ0JUUzd1OWFJbzA2YlZ3amx6M3loZFVtOFNWN2tqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQTRHQTFVZER3RUIvd1FFQXdJQmhqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFxUWFDV014VEdxVlZYN1NrN2trSm1VdWVUU1lLdVU2K0tCQlNnd0lSbmx3OUs3SGUxSXB4WjBoZHdwUE5pa0tqbWN5RmdGUHpoSW13SEpneHh1VDkwUHczdllPZGNKSk5rdERnMzVQWE9melNuMTVjRkF4MVJPMG1QVG1JYjhkWGlFV09wem9YdmR3WERNNDFaYUNEWU1UN3c0SVF0TXl2RTd4VUJacTJianRBbnEvTkRVQTdiZTRIOEgzaXBDKy8rTktsVXJjVWgrajQ4SzY3V0kwdTFtNkZlUXVlQkE3bjA2ajgyNXJxRHFzYUxzOVRiN0tBSEF3OFBtcldhTlBHMmtqS2VyeFBFZmVjaXZsRmF3cDJSV1p2eHJWdG4zVFYyU0J4eUNKQ2tYc05EMDVkQ0VyVkhTSklzK0JkdFRWTlk5QXd0eVBtbnliMHY0bVNUenZXZHc9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFmQ0FZQUFBQ0dWcytNQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUhZWUFBQjJHQVYyaUU0RUFBQWJOU1VSQlZGaEhwVmQ3VE5WMUZELzNkNTl3ZVFTSWdTOUFRQVhjRkxBUVppOWZwZVZ6MXRZL1dUWnI1V3hwYzdXNWtuTGE1akkzWjg1c3JTMm5NMnNqdFd3WlM3SVVINEg0eENuRVF4NERBWkY3NFY3dXM4ODV2OS9sSW5CdlZKL0I0UHY5bnUvNW51LzVudk01NTZmekEvUXYwSGIvSXJYM1ZGS1BvNDVjbm00aW5VSVdZd0xGUm1aUVV1d2pGRy9OMWlSSGgxRVowTlJWUnVkcXQxQmQrMm5TS3lTL09oeXMwK2xrM2UvM2tROXF2RDRaVXRhNFZWU1V1WTBlaXB5aVRoQWZvY29PUlZnRHV1dzNxS1JpQWQzcmJjRXRqVGpZSW9mNldhSHNDbXpWUFdDTXgrY2doOHRMcVdNS2FNV3NVakxxbzJSdEpJUTBvT3ptZXJwUXU0ZXNaZ3NPTmtHeEg3ZDBrZHZUVDE3czRPTVU3Vkk4WmhqZ0dhTStBcTlpRU51OFBpZjF1ZHowN013dktXZjhHbFZvQ0VZMDRQQzVXZFRhWFlGYlI4dk52TDUrM0tnZmI1eE5NeWE5UmFtSml5bmFNbEdUVnRGbHI2YmE5dStwcW5FWDR1TXVSUmdqU1lFaHJON3V0RkZlNmxxYWw3TmZrdzVpbUFHSHluUHBiazhWbVkweHN0bnB0bEZDVkNZdHpUdUJOODNRcE1MalR0ZXZkUHpTVW5KN2U4bWtqeFozOWZYYktEZmxkWnFidlUrVFVnR25CVkY2ZlEyaVBIZzRXMTZVV1V3dnpiazE2c01aRStQbjBwdno3SlNldUF5ZXM4bGNwQ21hS3VvL3ArcVdyMlVjd0lBSFdydlAwWUV6aFhBdExBYnNzSGhwN2lHYW12eWlqUDhyeXFyWFVXWDlYb293eHlBdWZOQnJwNDNQT0JGWFpsa2Y4TURSaXFjcHlvd0F3cHV6MngrZld2ei9EdGRlOXNtc3p5Z3RjUjZDMXdiZHpCbDZPbHE1V05ZWTRvR2F0aEpNcmtURXgwakFSU0hBVnMrNXJZa1FOWGIrUWdmUExzUTZnWHlJbnNyZVFmbXBtN1JWRllmTDg2bjFmaVVPa1l2U2hrVVB4dmJ1a3pveTZLMWloTTFobzNYelc2RXZTZlhBK2RwaVdHYVdkK2RvWHpMem1Hd0tZRkxDQXNSQWxQQkFoTWxDRlhVN3RCVVZQcjhIZ1ZjSkhXcStGMDBwbHIrRE1UZHJQNHp2eFkxMWtOTWh4VCtTZVRHZytkNFY1TFFKaXR5VUdKTkI4VkZac2pnWUJaTS9JSS9YQ1RrajBxeURPcEYyQVZRMTdDSWpVcC9EblQxVWtMNUY1Z2RqK3NTMXdnMWdFM2dpZ202MGZDWHpTblBYYnlBUGJJWHYrSURwRTE2VGhhSElTOXNreWhsbU1FNUYzY2ZxQUtocTJDMEU1UEgxZ1lhWGFMUERrWkcwSERKT25LV0hwNTFJMHo1U091eDhlMVdBdVp6ZEhRclRrcDhUbWpYb0krbGEwd0dac3p1YnFiTzNpZlE2QS9XN3ZWU1lzVjNtUjBKS3drS2M0V0hpQmttUjhJM0NDZ0k4N29PTDRxelQ1UCtSVUpCZWpFT2dBUEs4aFlQemF0TStlSVRwMklPOXlUUW1lcm9tUFJ4eDFxeEFjc2lsZS91YlNlRWJjV1FHWUVDZ2hjTFkySHlLam9nakgyNWhNcGpwVXYxT3VnbGk0ZWgyZVJ3ME8zMmJKamt5dUNnTnpnMHZ6bFlNU2lTczB1b280TUc3aE1PakNFYVgxeUZFMG5TdmpCenVUbkVwSzg2WjhJb3FGQUl1Ync4a2c5QXJFYVJFV1NaSStqSDRYYnA2ZzlFOUVuSlQzb2FSekROK01VSkJRREhuNTZhOG9VbUVCdXNPeEJzL041K3RKRWJQa0FGRGo4VUd2T3MvSVd2Y1NnbEdCaHZTNy9GVFlmcFdHWWREWThmUEF4V1NBMzVzVEM0cDQrTG00QWFxSW9QZVF0ZnVmSzZKaDBaaHhsYnNVWE9TbVhOaWZENVpUQWt5RG9mYmJjY2x4bkE4V05BcXhDYlJOeWtoWHhRcGFEdzY3ZlhVWWJzaUcwS2h0djJvZUl2aDhyaFFNWU9jRUFxWEcvZUkrem5nT2M1eXhyOHE4MklBTTFjL0ZMRk9wbHF1NWVGUVhyTVp6R2NWQ2pZYkxXRzVJNEJUMWV1UnJsYnh0Tk90TWl0RERFaExYSUl5bkFBdnVPRVdFM1gzTmRBZnQ5NFZnYUc0MlhJUXQwWlg2UGVDRS9xUUZlOXJLNkh4N1lVNTBLdkg3Zlc0ZlMrcTdLS0JKeHNnZ0JYNXBTQUdoMWpJclZoNXpRNnczUmZhYWhCWG0vYUNiQ1pUakNVRlVUeVdacVc5cDYyTWpKUFhWcU9yUGdNTzROdjc0R2tmK293ZnROVkJEUW5qRkpxSFN3MTdwWHZoV1c1S1pxZS9RNDlOL1VTVENBVldvUVhGSUhCSFhYZTNGUHJVRHN1R0RtdEYvaEhLVEhwZWt4aGlBT1BJK1NKcTZTNkhGNEk5WVd6a0JKVG80NmlVTXpXcDhQaXIvUmlkdUx4S1lzU2tzVjh2TGxPUXZoR1gyWWxSME9CaEJqQyt1L2dFY3ZZMEFwSzdZazQxTnhqUFNRbldGSFRGNjZVcmpnZXZCOEN1NWErbDJ2WVNSUHR1VkRvNzNoaGRNU0huVVg3dFRqc1ZaR3hBbC9XcHRpT0lFUTFnbkwyOW1YNi90UjF0bWxrWWo4VzRYK0NTaldjVURHWTFOcFMvQzdoU0txaU1MTS9sMlFtU1daNzNEZHorZ2lvOEJDRU5ZUFE0NnFua3p3WFVicXZCa3hqVVFzV2ZaRmdidW8zckFmK3dON2pPTzkwK3lueDRQaTNMKzBuWUwxU2NoRFVnQVA0Z1BWLzdJZDFxKzFIU2htdUdrSXFXUlBneXhNRnFQOEhmalRualh3WTViUWZiSmN0Nk9JektnTUhvdEYvSGUxZWdzYXhIU3FHNndmZG1RNXg4TnlURkZxQmNwMmlTb3dIUjN5azUrMzZoRjd2WEFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xX1BSRSIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsImxhcmdlQmxvYktleSIsImNyZWRCbG9iIiwibWluUGluTGVuZ3RoIl0sImFhZ3VpZCI6IjU4Mjc2NzA5YmI0YjRiYjNiYWYxNjBlZWE5OTI4MmE3Iiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibGFyZ2VCbG9icyI6dHJ1ZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOnRydWUsImFsd2F5c1V2IjpmYWxzZX0sIm1heE1zZ1NpemUiOjEyODAsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6OCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoxMjgsInRyYW5zcG9ydHMiOlsidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN30seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTh9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi0zNX1dLCJtYXhTZXJpYWxpemVkTGFyZ2VCbG9iQXJyYXkiOjEwMjQsIm1pblBJTkxlbmd0aCI6NiwiZmlybXdhcmVWZXJzaW9uIjozMjk0NzQsIm1heENyZWRCbG9iTGVuZ3RoIjozMiwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjEsInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjoxMDB9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wMi0wMSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzQsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWXViaUtleSBCaW8gU2VyaWVzIC0gTXVsdGktcHJvdG9jb2wgRWRpdGlvbiAxVkRKU04iLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI1MDIwMTAwNSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTA4LTEyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NCwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZdWJpS2V5IEJpbyBTZXJpZXMgLSBNdWx0aS1wcm90b2NvbCBFZGl0aW9uIDFWREpTTiIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjQwODEyMDAzIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMDgtMTIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc0fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTAyLTA2In0seyJhYWd1aWQiOiI3ZDJhZmFkZC1iZjZiLTQ0YTItYTY2Yi1lODMxZmNlYjhlZmYiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjdkMmFmYWRkLWJmNmItNDRhMi1hNjZiLWU4MzFmY2ViOGVmZiIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJUYWdsaW8gQ1RBUDIuMSBFUCJ9LCJkZXNjcmlwdGlvbiI6IlRhZ2xpbyBDVEFQMi4xIEVQIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIzMDgsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfSx7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjowLCJibG9ja1Nsb3dkb3duIjowfX0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjAsImJsb2NrU2xvd2Rvd24iOjB9fV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQ0R6Q0NBYmFnQXdJQkFnSUlOTDdjNzZEbTArOHdDZ1lJS29aSXpqMEVBd0l3UkRFTE1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBb1RDbFJoWjJ4cGJ5Qk1URU14SURBZUJnTlZCQU1URjFSaFoyeHBieUJHU1VSUElGSnZiM1FnUTBFZ1JVTkRNQ0FYRFRJME1EWXlPREF3TURBd01Gb1lEekl3TlRRd05qSTNNak0xT1RVNVdqQkVNUXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ2hNS1ZHRm5iR2x2SUV4TVF6RWdNQjRHQTFVRUF4TVhWR0ZuYkdsdklFWkpSRThnVW05dmRDQkRRU0JGUTBNd1dUQVRCZ2NxaGtqT1BRSUJCZ2dxaGtqT1BRTUJCd05DQUFTNDFVODhnOGl1SDhUbW8vZjRoZkF2eXU1OWVMOGdCS2hiYllTRmVJanJJaG1yWm5xWXUyYWtvUWJHK0dwU01reFhrVFVkcmxyN0txcy9tb1ROa0RtVm80R1BNSUdNTUF3R0ExVWRFd1FGTUFNQkFmOHdIUVlEVlIwT0JCWUVGQXdIZFloUi9VL1RJNkZPOVpNYm1uclVJbXd5TUYwR0ExVWRJd1JXTUZTaFNLUkdNRVF4Q3pBSkJnTlZCQVlUQWxWVE1STXdFUVlEVlFRS0V3cFVZV2RzYVc4Z1RFeERNU0F3SGdZRFZRUURFeGRVWVdkc2FXOGdSa2xFVHlCU2IyOTBJRU5CSUVWRFE0SUlOTDdjNzZEbTArOHdDZ1lJS29aSXpqMEVBd0lEUndBd1JBSWdDbEpDMmlaRmhWczNwcDZta0NSMlpYUW5aVUw4S0VESGRmNVladXJtdiswQ0lINEV1dURSQTRWWENodHpJdm5nbGpIV2pnSTF2UkU3R0pqYXA3N3hvWnhGIl0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUUwQUFBQWdDQVlBQUFCWFkvVTBBQUFBQ1hCSVdYTUFBQUt1QUFBQ3JnRnQ3RElhQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUIzZDNjdWFXNXJjMk5oY0dVdWIzSm5tKzQ4R2dBQUNITkpSRUZVYUlIdG1YOXdYRlVWeHovZjl6YWJMb0ZvQVNsTjZmQkRCZ3NJZ3dxSS9GUm5CRVFGeHhHVVgxVklrNWMwcFVOVE84TWd5WFlqSXo4c2RiRE5qOTNLcEZRSElTMDYxVm9LaFRJTzBBNGc2S0FWS09XSGhWYnFsRFNrUDBLeTJYZjg0NzJ0NjJaMzJaQUdScWJmbVoxOTk1eDd6em4zdS9lZGMrOWRtUmtITURvNEgzVUEvNDg0UU5vSHdBSFNQZ0FPa1BZQjhMRWxyYW1wYWFybmVaOGZEOXVSVXNxRWRMMExUOXhpOXNyK2NOYlEwSENKbVZXVjZsTlRVL083ZUR3K1BCWS96YzNOc2VIaDRjMEVpNklDb0w2Ky9temdUa2t0eVdUeThiSFlMMGthc0NJRHF4UFNzeFZ3NTgxbS94cUxNelA3NC92MTJiSmxTeld3YXl4Kyt2djdZNjdyUm9GOTVFdXFCYzRCTGdUR2o3UzRXWDlDdWhSNE9BMDNKcVNzYWc4d0FHd0NOampRM1dLMnNReC9xWnpuczRCVEpUMW5acytGc3FGZHUzYnRIZDBVeW9PazNuQlArdXBZYlpVa2JibmtBc2RYdy9uOWNBOXdaYWlxQ2orSEEyZjcwSnlRN2dYbXhzMTZpOWxMSnBOZTl0bnp2QVhBcVdhMktwbE16aC9qUE40WGUvZnVuUitMeFZiWDFOVDhhYXkyaXBLMlNLcnNoUlhBSitlWW5RZGMxU1k5YlhBWDRPWjFGL0JENEt5RWRGSGNiTXRZQTl2ZldMWnMyUjdHK0ZwbVVaUzBYdmdsOEUxZ1h4NXJOYnU3VGRwa3dhcWJYR0RZTkdETkF1bU1INW50R1cwd3RiVzFoN2l1ZXpZd1dkSVJrdnA5MzErWFNxVTI1ZlpMSkJLUnJWdTNmbG5TTktCQzBvdSs3dzhEU05vSURPYmJibXBxT2ppVHlaeml1dTViN2UzdGIyYmxzMmJOT214b2FPZ3l4M0UrNWZ2KzlrZ2tzcktqbzJObnFUZ0xiamtTMGxYQU5XRnpZcTZ1MWV5aFNqZ1o2QVlLSFZ4UDNBTS9MK1cwRU9ycjZ5K0tSQ0wvbHJSR1VqZHdoNWwxU3RyWTBOQndTYmFmNTNtVHQyM2I5cnlrdGNBaVlLR1pQU1JwYlNqN1FTSDc2WFM2M2N6V0R3OFBYNWFWTlRZMm5wTk9wemRKdXNmTWJwZlVuY2xrWHFxdnJ6K2hWS3dqU0V0SkZjRHRPYUlKWVc3Ymg1dk1kc2JOcmhkY0JMeGV3TzcxdDBvbmxuSThJaERIcVFKNnpXeUZtUzB5czRYQW0wREV6R2JsZEYwTW5HSm1Ud0hIdTY0N0RYZ0J5QUFKeDNIdUwyTC9rTnkyNTNrSCtiNy9BSEFvOEFCQmV0a0lIQ0hwanBLeDVndmVob3VCcWJteTErR2dRb05iemRZZUNpY0NIckE1UitWbW9MR1U0M3owOXZhdVRDYVRVMUtwMU9XcFZHcDJLcFdhSyttR1VIMDB3UFRwMDZ1QVN3RWN4N2t4bVV5KzJ0SFI4YktrdXdEWHpBN3A3T3g4b3h4L1puWXBNQVhZV2xOVGMwMHltYnhYMHB4UWZYRnpjM09zMk5nUnBGbXdqOG1YN2V1WGtPNXJrMzY4U0tvRXVNRnNNRzZXT2luSVo5OEFsaFBrbEsrVkUzd1dQVDA5bVh4WkpwUFpIajVHQWFxcXFvNGx5TU0yT0RqNDkydy9TVnNBSE1lNW9GeC9rczRQSHgvUGJxWmQxOTBReWliczNyMTdhdUdSaFF2QmlOZEs0T2MwVHpPNHNoZW1KNlRhdU5tVEFKZWJaWURWd09vRlV0VUFmTGJjQ2VTaXJxNXVFbkN5NjdxdTR6alJYRjBtazRrbzJDdjZTNWN1SGV6dTdzN0tENWFFamU1eThOTUFrdllWaGZiMjl0MmU1dzBBTWNkeERpczJzQkJwSTQ0NUEwRyt5Q0s3d3owQmVQaW4wbkUzbTIzUDdSOVd6cWNUVWdRNEh6amRnUTNUWUgxSWJrRjRuamZEY1p3T29LTFEvQ1c5UlZCODNCa3paa3dCM2dybHA0WmRDdVhYZ3BCVUhmcDROMCsxQjRqNXZqOHEwdnJ5MmdZTTViVFQ0ZmRtUVVNK1ljc2w5eC9CYTNvNVFYNjhEL2hKaTltT1VwUHdQTzl3NEJjRVo4VWs4RnN6TzB0U0lveUJaREs1dy9POFo0QXZPbzdUVmx0YmUwczBHajBLeUJhSzl6Mm1aZUg3dmhPdTJuU2V5Z0R5VjNrdUNwSDJONExKWnZGdTNDejNBTDBTV0FwMHRKcTlseFhlSmgyV2hoa1dGSUNqQ2ZMYXQrTm1hOHFaaEpsZElDa0diTjI1YzJkVFQwOVBwcTZ1cmo4a2JkL3E5SDIveVhHY1I0RHJJcEhJZGI3dlo4ZXY3T3ZyKzNVNXZnQWN4eGswTXdwY0lId2kvQzU2L2kxRTJocGdYazc3blZ4bDNLd2x0NTJRcW9HNXdCd2d0NnkzbDBzWWdLVEpBR2IyU3JZb1NNb1dvSDJrdWE0Yk5iT0lwQjR6Mnl4cEFOaVFTcVhXalRLbjdRaDlWR2NGczJmUHJpWXNPbzdqRkQzVmpDQnRQancrSDE3a3Z3WGh0VUlEdzlld0NXZ0Y4dC8vQWVCblpZY2ZJQjBHT3lFcmNGMDNHcTZrUVlDWk0yZE9OTE5Wd01HU21ydTZ1clptKzNaMWRZM0ttWmx0RHI4L2w1VU5EZzZlRno3MlRabzBxZWpCZmdScFptWnQwbHdMS2lIQW4vUDdKS1RUQ0c0c3ppaGlkMkhjN08weTQ4LzZmU21zZ0Yvd1BPL2NnWUdCdjhSaXNUTkQ5WHNBNlhSNnF1TTRod0w0dnYrRzUzbWJnVmVBdnpxT3M2cXpzL09aVWZoN1ROSTg0Tnk2dXJxdm10bXJqdU8wU2tMUzhsSjNlZ1dQVWExbUR3SHJBQVRQWnVXUzFCWTRlcGJpaEswK0NlTGxCcDlGWDEvZms4RHpCSVhnaVZnc3RodTRJL1RiQzdCa3laSVh6T3dTZ253ajREUEF0NEFXMy9lZjlqenY3bkw5VFpreVpTMndIcWgwSE9jeDEzWGZrSFFtOEZvbWsya3BOYmJvZGJmZ0VRQTNYR2tKcVhvK1BHaHdKOFVQK284QTN5dTFyY2pDOS8zVmttNENmZy9CNXJhaW91SkNTVzNBZzVKV21kazl3TlhSYVBTN0VQeG93TFZBbGFTcmEycHFvcGxNNWhnem0wZXdsNXpkMk5oNFRDYVQyUnZhbnBQajcxZWg3RkdBZUR6dVYxWldmdDNNNXBuWk1qTmJLYW5GZGQzVGx5eFo4ajg3Z2hIY0ZNdWRiWkpua0lpYkhabVFqaUo0WFU4cFltZVg0TFlqWVVHOVdYNEozMitvcjYvL3ZxVGZBUGNuazhrcmMzV2U1NzBNbk9BNHpybWRuWjFQalZjTVVPSnF5SUtLOVdqWTNBSGNTbkJWZEJMQnpVY2Z3UUYzSGJDaTFXejNlQVlLSU9rckFHYTJMVmZ1ZWQ0MGdtMk91YTc3MG5qSFVlcm10bHJCbm94NHNCL3JDVDhmSmJZQlNHcHNhR2lZWUdiL0pMaGN1QmFvQkpZdlhyejRuVklHOWdkS2tSWXgrTU40QnpBYURBME4zUjJOUnI5RGNFMCtNMGRsa25xaTBXamRoeEZIMFp4MnEzVHNMV1psbitVK0xGeHh4Ulh1eElrVHZ5VHBPRE03RXRndWFYMVhWOWQrK1p1eEhCUWw3UUNLNDJQN0QvdDQ0aitJd1QvMVRNa3o3Z0FBQUFCSlJVNUVya0pnZ2c9PSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIkZJRE9fMl8xIiwiRklET18yXzAiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImNyZWRCbG9iIiwibGFyZ2VCbG9iS2V5IiwibWluUGluTGVuZ3RoIiwiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiN2QyYWZhZGRiZjZiNDRhMmE2NmJlODMxZmNlYjhlZmYiLCJvcHRpb25zIjp7InJrIjp0cnVlLCJjbGllbnRQaW4iOnRydWUsInVwIjpmYWxzZSwicGluVXZBdXRoVG9rZW4iOmZhbHNlLCJsYXJnZUJsb2JzIjp0cnVlLCJlcCI6dHJ1ZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlfSwibWF4TXNnU2l6ZSI6MTAyNCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5IjoyMDQ4LCJmaXJtd2FyZVZlcnNpb24iOjIzMDgsIm1heENyZWRCbG9iTGVuZ3RoIjoxMjh9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0wNi0xNCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyMzA4LCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IlRhZ2xpbyBDVEFQMi4xIEVudGVycHJpc2UgU21hcnRjYXJkIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNDA2MTQwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0wNi0xNCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyMzA4fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI0LTA4LTA4In0seyJhYWd1aWQiOiIzMGI1MDM1ZS1kMjk3LTRmZjEtMDIwYi1hZGRjOTZiYTZhOTgiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjMwYjUwMzVlLWQyOTctNGZmMS0wMjBiLWFkZGM5NmJhNmE5OCIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJPbmVTcGFuIERJR0lQQVNTIEZYMS1DIn0sImRlc2NyaXB0aW9uIjoiT25lU3BhbiBESUdJUEFTUyBGWDEtQyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH0seyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwiaXNGcmVzaFVzZXJWZXJpZmljYXRpb25SZXF1aXJlZCI6dHJ1ZSwibWF0Y2hlclByb3RlY3Rpb24iOlsic29mdHdhcmUiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDRXpDQ0FiaWdBd0lCQWdJRUFUVUJGVEFLQmdncWhrak9QUVFEQWpCbk1Rc3dDUVlEVlFRR0V3SlZVekVRTUE0R0ExVUVDaE1IVDI1bFUzQmhiakVpTUNBR0ExVUVDeE1aUVhWMGFHVnVkR2xqWVhSdmNpQkJkSFJsYzNSaGRHbHZiakVpTUNBR0ExVUVBeE1aVDI1bFUzQmhiaUJFU1VkSlVFRlRVeUJHV0RFdFF5QkRRVEFnRncweU5UQTVNREV4TWpNME1URmFHQTh5TURVMU1Ea3dNakV5TXpReE1Wb3daekVMTUFrR0ExVUVCaE1DVlZNeEVEQU9CZ05WQkFvVEIwOXVaVk53WVc0eElqQWdCZ05WQkFzVEdVRjFkR2hsYm5ScFkyRjBiM0lnUVhSMFpYTjBZWFJwYjI0eElqQWdCZ05WQkFNVEdVOXVaVk53WVc0Z1JFbEhTVkJCVTFNZ1JsZ3hMVU1nUTBFd1dUQVRCZ2NxaGtqT1BRSUJCZ2dxaGtqT1BRTUJCd05DQUFUdk1zRFRPak9EVmlNVCtDY3FvNUVPOExxY3orMXE2MmpZeW5pc1VMVWQ2L1l5TU05YjIzTTVTR29mSnRCcnRNdTA3d3o4QUZvREVYR25IRlg5WkxsOW8xQXdUakFkQmdOVkhRNEVGZ1FVdUZsUDRjR1NnUmJpRTZwbUE5UmRYWXF5eTdJd0h3WURWUjBqQkJnd0ZvQVV1RmxQNGNHU2dSYmlFNnBtQTlSZFhZcXl5N0l3REFZRFZSMFRCQVV3QXdFQi96QUtCZ2dxaGtqT1BRUURBZ05KQURCR0FpRUFnaHh6emdxVlVjbmRPK2RhOVRNeWVWZ2pZQitJdkJnVndXOC81K1JvZEFzQ0lRQ2lmdS9jLzNFK21wcGNlREFPYUY2ZFUrMEtDYUVPUkFLWUZRM3JrWkFwSUE9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFaQUFBQUhxQ0FNQUFBQWQyT2haQUFBQUJHZEJUVUVBQUxHUEMveGhCUUFBQ2tscFEwTlFjMUpIUWlCSlJVTTJNVGsyTmkweUxqRUFBRWlKblZOM1dKUDNGajdmOTJVUFZrTFk4TEdYYklFQUlpT3NDTWdRV2FJUWtnQmhoQkFTUU1XRmlBcFdGQlVSbkVoVnhJTFZDa2lkaU9LZ0tMaG5RWXFJV290VlhEanVIOXludFgxNjcrM3QrOWY3dk9lYzUvek9lYzhQZ0JFU0pwSG1vbW9BT1ZLRlBEcllINDlQU01USnZZQUNGVWpnQkNBUTVzdkNad1hGQUFEd0EzbDRmblN3UC93QnIyOEFBZ0J3MVM0a0VzZmgvNE82VUNaWEFDQ1JBT0FpRXVjTEFaQlNBTWd1Vk1nVUFNZ1lBTEJUczJRS0FKUUFBR3g1ZkVJaUFLb05BT3owU1Q0RkFOaXBrOXdYQU5paUhLa0lBSTBCQUprb1J5UUNRTHNBWUZXQlVpd0N3TUlBb0t4QUlpNEV3SzRCZ0ZtMk1rY0NnTDBGQUhhT1dKQVBRR0FBZ0psQ0xNd0FJRGdDQUVNZUU4MERJRXdEb0REU3YrQ3BYM0NGdUVnQkFNRExsYzJYUzlJekZMaVYwQnAzOHZEZzRpSGl3bXl4UW1FWEtSQm1DZVFpbkplYkl4Tkk1d05Nemd3QUFCcjUwY0grT0QrUTUrYms0ZVptNTJ6djlNV2kvbXZ3YnlJK0lmSGYvcnlNQWdRQUVFN1A3OXBmNWVYV0EzREhBYkIxdjJ1cFd3RGFWZ0JvMy9sZE05c0pvRm9LMEhyNWkzazQvRUFlbnFGUXlEd2RIQW9MQyswbFlxRzlNT09MUHY4ejRXL2dpMzcyL0VBZS90dDY4QUJ4bWtDWnJjQ2pnLzF4WVc1MnJsS081OHNFUWpGdTkrY2ovc2VGZi8yT0tkSGlOTEZjTEJXSzhWaUp1RkFpVGNkNXVWS1JSQ0hKbGVJUzZYOHk4UitXL1FtVGR3MEFySVpQd0U2MkI3WExiTUIrN2dFQ2l3NVkwbllBUUg3ekxZd2FDNUVBRUdjME1ubjNBQUNUdi9tUFFDc0JBTTJYcE9NQUFMem9HRnlvbEJkTXhnZ0FBRVNnZ1Nxd1FRY013UlNzd0E2Y3dSMjh3QmNDWVFaRVFBd2t3RHdRUWdia2dCd0tvUmlXUVJsVXdEcllCTFd3QXhxZ0VacmhFTFRCTVRnTjUrQVNYSUhyY0JjR1lCaWV3aGk4aGdrRVFjZ0lFMkVoT29nUllvN1lJczRJRjVtT0JDSmhTRFNTZ0tRZzZZZ1VVU0xGeUhLa0FxbENhcEZkU0NQeUxYSVVPWTFjUVBxUTI4Z2dNb3I4aXJ4SE1aU0JzbEVEMUFKMVFMbW9IeHFLeHFCejBYUTBEMTJBbHFKcjBScTBIajJBdHFLbjBVdm9kWFFBZllxT1k0RFJNUTVtak5saFhJeUhSV0NKV0JvbXh4Wmo1VmcxVm84MVl4MVlOM1lWRzhDZVllOElKQUtMZ0JQc0NGNkVFTUpzZ3BDUVIxaE1XRU9vSmV3anRCSzZDRmNKZzRReHdpY2lrNmhQdENWNkV2bkVlR0k2c1pCWVJxd203aUVlSVo0bFhpY09FMStUU0NRT3laTGtUZ29oSlpBeVNRdEphMGpiU0Mya1U2USswaEJwbkV3bTY1QnR5ZDdrQ0xLQXJDQ1hrYmVRRDVCUGt2dkp3K1MzRkRyRmlPSk1DYUlrVXFTVUVrbzFaVC9sQktXZk1rS1pvS3BSemFtZTFBaXFpRHFmV2tsdG9IWlFMMU9IcVJNMGRab2x6WnNXUTh1a0xhUFYwSnBwWjJuM2FDL3BkTG9KM1lNZVJaZlFsOUpyNkFmcDUrbUQ5SGNNRFlZTmc4ZElZaWdaYXhsN0dhY1l0eGt2bVV5bUJkT1htY2hVTU5jeUc1bG5tQStZYjFWWUt2WXFmQldSeWhLVk9wVldsWDZWNTZwVVZYTlZQOVY1cWd0VXExVVBxMTVXZmFaR1ZiTlE0NmtKMUJhcjFha2RWYnVwTnE3T1VuZFNqMURQVVYranZsLzlndnBqRGJLR2hVYWdoa2lqVkdPM3hobU5JUmJHTW1YeFdFTFdjbFlENnl4cm1FMWlXN0w1N0V4MkJmc2JkaTk3VEZORGM2cG1yR2FSWnAzbWNjMEJEc2F4NFBBNTJaeEt6aUhPRGM1N0xRTXRQeTJ4MW1xdFpxMStyVGZhZXRxKzJtTHRjdTBXN2V2YTczVnduVUNkTEozMU9tMDY5M1VKdWphNlVicUZ1dHQxeitvKzAyUHJlZWtKOWNyMUR1bmQwVWYxYmZTajlSZnE3OWJ2MFI4M01EUUlOcEFaYkRFNFkvRE1rR1BvYTVocHVOSHdoT0dvRWN0b3VwSEVhS1BSU2FNbnVDYnVoMmZqTlhnWFBtYXNieHhpckRUZVpkeHJQR0ZpYVRMYnBNU2t4ZVMrS2MyVWE1cG11dEcwMDNUTXpNZ3MzS3pZck1uc2pqblZuR3VlWWI3WnZOdjhqWVdsUlp6RlNvczJpOGVXMnBaOHl3V1dUWmIzckpoV1BsWjVWdlZXMTZ4SjFsenJMT3R0MWxkc1VCdFhtd3liT3B2THRxaXRtNjNFZHB0dDN4VGlGSThwMGluMVUyN2FNZXo4N0Fyc211d0c3VG4yWWZZbDltMzJ6eDNNSEJJZDFqdDBPM3h5ZEhYTWRteHd2T3VrNFRURHFjU3B3K2xYWnh0bm9YT2Q4elVYcGt1UXl4S1hkcGNYVTIybmlxZHVuM3JMbGVVYTdyclN0ZFAxbzV1N205eXQyVzNVM2N3OXhYMnIrMDB1bXh2SlhjTTk3MEgwOFBkWTRuSE00NTJubTZmQzg1RG5MMTUyWGxsZSs3MGVUN09jSnA3V01HM0kyOFJiNEwzTGUyQTZQajFsK3M3cEF6N0dQZ0tmZXArSHZxYStJdDg5dmlOKzFuNlpmZ2Y4bnZzNytzdjlqL2kvNFhueUZ2Rk9CV0FCd1FIbEFiMkJHb0d6QTJzREh3U1pCS1VITlFXTkJic0dMd3crRlVJTUNRMVpIM0tUYjhBWDhodjVZelBjWnl5YTBSWEtDSjBWV2h2Nk1Nd21UQjdXRVk2R3p3amZFSDV2cHZsTTZjeTJDSWpnUjJ5SXVCOXBHWmtYK1gwVUtTb3lxaTdxVWJSVGRIRjA5eXpXck9SWisyZTlqdkdQcVl5NU85dHF0bkoyWjZ4cWJGSnNZK3lidUlDNHFyaUJlSWY0UmZHWEVuUVRKQW50aWVURTJNUTlpZU56QXVkc21qT2M1SnBVbG5SanJ1WGNvcmtYNXVuT3k1NTNQRmsxV1pCOE9JV1lFcGV5UCtXRElFSlFMeGhQNWFkdVRSMFQ4b1NiaFU5RnZxS05vbEd4dDdoS1BKTG1uVmFWOWpqZE8zMUQrbWlHVDBaMXhqTUpUMUlyZVpFWmtya2o4MDFXUk5iZXJNL1pjZGt0T1pTY2xKeWpVZzFwbHJRcjF6QzNLTGRQWmlzcmt3M2tlZVp0eWh1VGg4cjM1Q1A1Yy9QYkZXeUZUTkdqdEZLdVVBNFdUQytvSzNoYkdGdDR1RWk5U0ZyVU05OW0vdXI1SXd1Q0ZueTlrTEJRdUxDejJMaDRXZkhnSXI5RnV4WWppMU1YZHk0eFhWSzZaSGhwOE5KOXkyakxzcGI5VU9KWVVsWHlhbm5jOG81U2c5S2xwVU1yZ2xjMGxhbVV5Y3R1cnZSYXVXTVZZWlZrVmU5cWw5VmJWbjhxRjVWZnJIQ3NxSzc0c0VhNDV1SlhUbC9WZlBWNWJkcmEza3EzeXUzclNPdWs2MjZzOTFtL3IwcTlha0hWMElid0RhMGI4WTNsRzE5dFN0NTBvWHBxOVk3TnRNM0t6UU0xWVRYdFc4eTJyTnZ5b1RhajlucWRmMTNMVnYydHE3ZSsyU2JhMXIvZGQzdnpEb01kRlR2ZTc1VHN2TFVyZUZkcnZVVjk5VzdTN29MZGp4cGlHN3EvNW43ZHVFZDNUOFdlajN1bGV3ZjJSZS9yYW5SdmJOeXZ2Nyt5Q1cxU05vMGVTRHB3NVp1QWI5cWI3WnAzdFhCYUtnN0NRZVhCSjkrbWZIdmpVT2loenNQY3c4M2ZtWCszOVFqclNIa3IwanEvZGF3dG8yMmdQYUc5NytpTW81MGRYaDFIdnJmL2Z1OHg0Mk4xeHpXUFY1NmduU2c5OGZua2dwUGpwMlNubnAxT1B6M1VtZHg1OTB6OG1XdGRVVjI5WjBQUG5qOFhkTzVNdDEvM3lmUGU1NDlkOEx4dzlDTDNZdHNsdDB1dFBhNDlSMzV3L2VGSXIxdHY2MlgzeSsxWFBLNTA5RTNyTzlIdjAzLzZhc0RWYzlmNDF5NWRuM205Nzhic0c3ZHVKdDBjdUNXNjlmaDI5dTBYZHdydVROeGRlbzk0ci95KzJ2M3FCL29QNm4rMC9yRmx3RzNnK0dEQVlNL0RXUS92RGdtSG52NlUvOU9INGRKSHpFZlZJMFlqalkrZEh4OGJEUnE5OG1UT2srR25zcWNUejhwK1Z2OTU2M09yNTkvOTR2dEx6MWo4MlBBTCtZdlB2NjU1cWZOeTc2dXByenJISThjZnZNNTVQZkdtL0szTzIzM3Z1Tys2MzhlOUg1a28vRUQrVVBQUittUEhwOUJQOXo3bmZQNzhML2VFOC9zdFJ6alBBQUFBSUdOSVVrMEFBSG9tQUFDQWhBQUErZ0FBQUlEb0FBQjFNQUFBNm1BQUFEcVlBQUFYY0p5NlVUd0FBQU1BVUV4VVJRQUFBUC8vL3pKSldtZDZpMlo3aTJaNml6TkpXaXNyS3lvckt2MzcvQndiSENZbEpoNGNIeDBjSDNkMmVTUWpLQ1lsS2pBdk5EZzNQR1ZrYVRvNFF6dzZSenM1UlVKQVRUNDhTRFUwUHpnM1FqYzJRRE16UFRVMVB5TWpLQ1VsS2ljbkxDb3FMelUxT3l3c01UWTJQREV4Tmlnb0xETXpPRG82UHp3OFFUczdRRUZCUmo4L1JFVkZTaTR1TVRNek5sbFpYalEwTnp3OFB5Z29LaVltS0N3c0xpc3JMU29xTEJzYkhEOC9RV3hzYjFOVFZWOWZZZGJXMmpjM09OL2Y0dWJtNlAzOS92WDE5dkh4OHV6czdVbEtVc0RCeUVkSVRrNVBWTXpOMGlRbEtTTWtLQ1VtS2lZbkt5OHdORFExT2JHenZLS2xyeU1rSnlJakppVW1LU2NvS3lrcUxTd3RNRGc1UEQwK1FTb3NNWDJDajVDVm9DVW5LeVlvTEI0ZklSOGdJaUVpSkNNa0ppUWxKeVluS1MwdU1GVldXRzExaENJbUxEYzdRU2NzTWprK1JDZ3VOVjFyZWlzek95b3hPRUJIVGpJek5FWkhTRTFPVDBoSlN2MysvMHRkYlZSbGRWNXdnR1o1aWpsT1h6RkNVQ3MzUVdxQWsyQjBoV0oyaDJ1QmsyUjRpV1Y1aW1oOGpXZDdqR3ArajJsOWpqQkhXRE5MWFRGSVdUWk1YUzVBVGoxU1lpMDhTRU5YWjJWNmltZDdpeTQzUGkxR1Z5OUlXVE5NWGk5SFZ6SkxYREZKV2pKSldTNURVak5LV2pSTFd5WkNVeWhEVkNwRlZoNCtVQ05CVWhzY0hEczlQU0VpSWpFeU1pNHZMeTB1TGlvckt6NC9Qem83T3prNk92djgvQ2NxS1I4aElDVW5KaVFtSlNncUtTY3BLQ1lvSnl3dUxTc3RMQ29zS3lrcktqSTBNeDBlSFJ3ZEhDTWtJeUVpSVI4Z0gvMysvU29zS1FJQ0FRVUZCQWdJQndvS0NSNGVIQjhmSFJ3Y0d4c2JHaVFrSXlJaUlTQWdIeW9xS1NjbkppWW1KUzR1TFMwdExDd3NLLy8vL2YzOS9Cd2JHeVFqSXlJaElTQWZIeW9wS1Nnbkp5WWxKUzR0TFN3cksvLzkvZi8rL3Z2NysvcjYrdmYzOTBSRVJFSkNRa0ZCUVQwOVBUdzhQRHM3T3pZMk5qQXdNQzh2THk0dUxpb3FLaWtwS1Nnb0tDVWxKU01qSXlJaUlpRWhJUjhmSHg0ZUhoc2JHeG9hR2hnWUdCY1hGeFlXRmhNVEV4RVJFUThQRHd3TURBZ0lDQWNIQndJQ0F2Ly8vNEhzSEJVQUFBRUFkRkpPVS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy93QlQ5d2NsQUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQzBGMGxFUVZSNG5PeTllWnpmVlgzdi8zeWZPZG4za0FFa0VIR0JzQVd4c2d3VFZGWnJmN2FpU1crMTZ1Mmx2ZFYrOVk1S3IxZ2JhWmdaY21uYWlwWEtWTDRWNzlYYmE2Mjl2Wk82M3FzaUlFdUdrYVVpaUNUZ1JpQVltRURJWkxLZk9lL2ZIKzl6enVmelRWaUdiQ1NQQjBmSmZMK2Y3MmM5Nzg5N2Y3M2ZSNVNYeDhFMDNFdDlBeStQMXZFeVFRNnk4VEpCRHJMeE1rRU9zdkV5UVE2eThUSkJEckx4TWtFT3N2RXlRUTZ5OFRKQkRyTHhNa0VPc3ZFeVFRNnk4VEpCRHJMeE1rRU9zdkV5UVE2eThUSkJEckx4TWtFT3N2RXlRUTZ5OFRKQkRyTHhNa0VPc3ZFeVFRNnk0Vi9xRzlpRDhjUXY1NitldjNyKzZrM1ROcDErOStsM3crbkFhamFkdm5vK3NIciszZFBtcHozdm5nYWJUdWZ1MDdrYis5WDk0dlV2M1kyUFpjaWhoanI1cDVPUFB2WUg5UTFUR2FsL0cySHFDTHNPMnpxVmtha2M3bVIwOW42K3g3MFpoeHBCSmdLUE9tQWxzRkJGQlVWV0xseTUwUDZxMUhhMm45T3ZvdXRwaDZIVEg3M3pUYXRQZTBsdWZpempFQ1BJdlRwM0xaMlBnb0lvQXdzVkdXb0hsYUU1TXRTdXlNck85WE1FRlZqWnViNTk1VUpVZ0pVTEdab2pxS2o4S3B3NGVONk52L1ZTUDhsempVT0xJSTh2K3JxdzlteFJzRWtIMXN5RE5mTVVBWDEwbmlMb28vTlVRQkZnelRGMjZLTUF6Tk5IbnpyY3RmbTI4Uy9SRTd6Z09MUUk4cnJ2S2ZLNG5LMklpdEhBS0dOL2xFUXE4cjhJaXFSZlRiNnR2ZTNjTmpmKzIrOTRhWi9rT2NlaFpXVjlRb0c1ZCtrZ2RPaGd5MDhkREVMSEhSME0wcEgvWC8xbk8zZmMwVEY0OXNyM1BhYXFGN3dVdHorV2NVaHh5SnUzZnBRTDVNWVR6NmFhN3pRNkJoTk42aHZLMzlxT1ROZ2MzRW1laVFmbWxsLzBPS1FjdzY4QU4rb0ZPampZQVIxMFFFY0gwTkhSQVprbStkc2dkSFRRa1Rhay85UFIwZEVPM05kaWpCMVU0NURpa0gvdFArb05YQ0NQNzlIQldhbk1mU1NjK01CdnlJUjllbWY3Ymh4U0hOTDMyZWYvL1hsZmU3VlhUK2ROUFo2ZjdiTmIydWZqa0NJSUZ3RTM2bHpnV1dlL2NQdnpVV1lOY01UQkt4Y09MWUlBWElBK0RyWFpmNWJ4L1BQOUVJc09XaFZ5YUJIa3EvWkhqbnIybjU5TnQrdzI4ektQNDcrNTRtVU8yU2ZqYmZibnVXYnoyZWkwMjc2Nmhubjc3bzcyL1Rpa0hNTnpUNzhiYnJ4QTVvNWw1MmV6YkZWWU8rOUg5OXdGM1BiR2ZYeHorMmdjVWh6Q1h3TVh0TDcxenlsOG5rMU5DRUQ3Ry9idFRlM2JjVWdSNUEwQU42WXZpUkpTL3pMRzhkdWlkTzZ6dTlxMzQ1QVNXZHh3QTF5QVBDYVBtOEo0L0RuVSs2NmpjbjhmUDBxSDd2blc0ZnZuOXZiRk9LUTRKQTJkeWxGanBFUStnbXlESFFYdDdienpaYk4zMzR5MXdJMGlEK2Z2TDRZc1J5VWlDQnk1WXQvZTFyNGNoeFpCQU5Cbm9jTlkzdmdpdG9iTzJKZTNzNC9ISVVpUUczZmY5S0pDcEVPd1NNZEV3cGRpSEZvRUVZQm55YjYrR0hxc3NSTWRyTDc2b1VVUUx1Q0NlODdhMjdlN25TZjJ6ZDNzajNHSUVRUjR3Mzk4L3QvSGtpMjViNS9jeVg0Wmh4UkJMdWdRdU9CZjFuYUluSDIyaUp3dDlrLzZ2MzJkZTdaVXcvWTYrK3phaHZVakhNejVrRU1xWTdqdTJFZFU0UEd6QjNmNW9lTlpBQS9QOWVQUnZ3b25IclhlK2JiOWM0OTdPdzRwRGdGQVJIYWxoODEvUi83V01kanl2WFh2S1FDREI2dU5kYWh4U0p1cXdGcnBlT0Y5RGJuMUxKc2YvZFZySGw3MWV6THVJSDBWRHkyQytLZ1p1V2gzdmdzb0RsUU1aSnBnY1ZJUWRBWStGWDMwanFPQ084bkx5eUpybjR5MXNCWlUwZ1FMS2hrMEtxS3FpZ3FpUmhnRlJXeWJHcDJVZVF1bkFXUHo3VitLY1lnUmhDb2daUlFvMFhkQlJRcVBJSXFJaW9naWtvNUl3dURCK2Z6eXdOLzRXTWVoUmhBRkJrVlJNVVpSUlFSUjFOakFOaU1ZYTZTdENmUnIzSFRpYWw3MVVqL0djNDlEalNCQ05wOEVGSVUwMjJTcEpGbE9rV1Fha2pnS1ZaRkhPYWdUaG9jY1FiVDZZK3JjV0NFTktjbzkvYXVJU2JWY242QUhOY0tCUXkxam1JWktMajFRU2Zxam1uLzdFVWtWQzZsc3dhU2NIc1JSeFRRT01RNlplK05qMlZ6S0hKTE5KZFhNTm9rZE5Hc1QreUpadnNFSkw4M05qMmtjWWdUaFFoRUdTZk1zcUdwUzJKcU5xV0tIR1ZWVXhYNVZJUmxjckhvNVk3alBSdUlBbS95c1VDVC9JbVNueEQ1STF1YjVhR1VOekdmUkFiN3JGekVPTVlJOEprQ0haUDlQa2dsbElzeHNLL1BNelF4R2trK1lLbklGam9IVkwvRkRQTzg0eEFoeXRQMlJZdTdtdWFkWXQ4bmlUZnRJOHR6TlZWRVF2dnhTM2Z5WXhpRkdFQ0NIYjVPS0lOdStxSXFLQ0NLU3pGL0psTXYvaUxCbTVmdnl0NE55SEdvRStUN1FvVm9ITG9xbThDSFpWVVROSTFRMVpTNlZEUUFMbVgvQ0VRZHJKT3ZRSThpRjZhOVFOTGRGVVNRRkdNa1J4VVN5ckRzdzNtRWVyRjcxeE1zY3NxK0dNcGRCTVRWdXdSRXRrZDdLWlZjcE5ld2dxbW9Hc0tLc1dRa0hiNnoza1BQVTE4NWxMUjFTTTNCSmNpckZzOHhWTDAwRVNFMDRLaGY5bU1kZW1qc2Y2emkwT0VUbmtuejA1QkZxanJaWHJydjVmOG5pclhra09mUUk4NS8vSWkvdE9MUUk4aXZnYUFhVFd5NTFWV0xmTEVXUzZaRGRka2tPdTFxRGxOVXZ3NEQyMVhnVnNKYU9LdDV1cnFCSTZrVlRFdEpTY2lERkFNYXM0VFhDL0JNT1loalFvVVVRMWlySkQwbnZ2akZGVWhrcHlHdTdwcVkwRnNCU1VSTnlNbzk3VnI4Y090bG5ZMjVPVUpXOFNHblZsUG9DV1pCWHpWbVVvdHRMaEF1WXYrb2x1ZmV4alVPTUlHdVRVcStuTmFUa0RNRXl1b1V3NXBVa0sweVNzbm5ENmswcklMNGs5Ly9DNHhBamlJMmtNQkRRTk90WndTZEpwZ21Oa2wzNUpORFNtTGFJTzU5K1NlNzhoY2NoUlpEQm93RmhNT0Y3VEo5ckNtdUpxcGhyS01uMXlIeFVjdTJGS0N0ZzlLVjdqT2NkaDVSajZCK3pSbjBXcDVJU3dxclNnWVk2U2V5UU9tUkNkbDRTaWVhM25VVEgyWGUvUkEveEF1T1E0cENOTXZmN1FJY2tia2pPQnBqR1NNRjNWRVVNY0tJazZ3cXlSU2JBWGZjUmIzK3BIdUlGeGlGRmtJdWU1RUxtVXRsWW1TMXlYREZsRXJQZnJqVUd5WWtxdUdmMXRKOGR2S0xoVUNMSWR0bitHTHFXd1lUcGtSekUxWndab1dTc0pNVi90YW9tTEduZitVRGI1cGZvSVY1b0hFb0V1ZlhuSFVjamxzSVZ6TTlMa0xpY1pEZmVFSXN3WmtkUjZqNzhveXZmd0taRmVzZi9ld2tmNVBuR29ZUitmMnp5VVFOSHJ3VTVXeXRCbFA4V1NHOXlFOU1XODlKcnJ1T2o3cFdQdGpudmRreDlTWi9sT2NlaHhDRUR0MVR4ZGszSVVjTzJKM1VoMlN1bkFMZlNEc2xYVVdYZVNsYUQ2c3M5Ri9kK0RCNEQ5WFM0MUVKWFF2WklhckFmMnlIWnZ0a1VYZ2lyVm9nY3JIN0lvVVNRaTQ0MWVFTkh6bi9rZHVPWkF6UnI5Z0tDejJvOVc3NG95bnhBYm5scG51RUZ4NkZFa0hicEFJVEJpazNNc2RBVXVaS2t2aVVYVG1sT1d0VnlqQU9zWmhFcyt0cEw5aHpQT3c0bHBmNzRtb2s2ZDYzSzJWV2lBMW8vU1V2Y1VYTGY5eHhPRVpTMXB0UURrdy8wL1k5cEhFb2M4dnNYZHJBV1lUQW5DaE5PTkh1RHFDVG15SkZIS1NEVEZINVhFYjdNWTZEajIxKzZCM20rY1NnUjVKcXZ3TndjdEVwMnJDaUd1MUpOVGtuSjRPYk1yUmFCWlpya2ZhdVBCdXRiZmhDT1E0Z2czenpxWFlBS0hTbk5JYVdJTFlWSU5JV3J4RkNNa0FtUktrTk54VnVDU3M5N0NSL2xlY1loUkpDempvV1dyRWVHeDZXUjlic3hqVmxoT1I2Zm5KYVVvam9CMERzTzlQMlBiUnhDQlBrUEtEeFc4RDRpS2xiVG1mTlFRSFlKcFhJOWhCcW9VWGhVdnJ4NjFVVVF6L3UzbC9KaG5uTWNRZ1Q1NmdBSi9pN1p6czMyYjBvK3FTWWdielp4SlhrZVNiR0lLdk40SDl3QXlQa3YzYU04enppRUNQS25SNlhhS1VPZGFEYTFKQ2x0S1V4aGNVZHpFcVV1MDRBMUs1bC9BcUE4L0N6WGVPbkh3Wm9XMkgycys4WDMwNmNPS1V0TjVWcVFESUtIYXJFcEtyMlJ3MWtJOHhLVVZPSkpCLzRaeGpBT0hRNTVWMDJCNXl4dGkwNkhXdFk4SnhJTEpDVW5ld0ZyWUtZSDU3dDQ2QkRrRGR1c1hTSkFNV3ROVStjMkRaSWo3NVJPUUpwZ0VFbWppQ3BmWHIzcVZJZzZwcDVDQjN3Y1FnVDVNOUtTaElNRnoydXpybGtnR2NTNlJIMnpqMjVJMGx6QXdQdlNiL0xuQi9MMnh6b09HWUw4czl4amkwT3FZWHRUV1loa3AwUnprakNsMHhNY081VW1hQW1kUEtxcHhsRGplMStxWjNtK2NjZ1E1Rk1Yd28yd05yLzhLUUZTQ3lkbVc0c0NBSklzc2twSVdQUVkzc2NKWmdJODlkSTl6WE9QUTRZZzM3WS9jdzExSXVaOHEzbUhrUEFNMk95bjVocFZhNGNTWHpScHRnb1ExRC81MGp6Szg0NURoaUJ2amZDSEFHc1p0R1pNa0ltUXVqU2xQSlNsUVhLcXl1QytKVk9Dd0h4V29IcTREdHp3a2ozTmM0OURoU0J2bnZBM2I2ajF1Y3lBSDR2d2x1WW15U0RPZXhUZHJ0VlI1TVlCSzJMSHhRZmsxbC9jT0ZRSThpL2ZBTDQ0aUZMSWtndWt6SVFxSlFoYUMyeFZXZlhpaWlqTTM3UUlvWlBSSHgyRVdLQkRoQ0MvdnZsdmdFdUs0eUdsS1lEQmZFdDFEam5ETGprZ1h4SWtablk5Q3F2UFNHaVVzN2ErUkkvelBPTVFJY2p0WDgrZkxCS2l0VFltNmIrTTFiSTY2Y1FveFVjcHJURG42WmZucjFxQkhMSHFjSTF2ZnltZTVmbkhJVUtROER0UXdlTFNud29PVU1PTFdxeGRxUVVWaTZ0aVg5NjMrb1FQb2lzZVdvZmVjZkIxNVQ4NEF6cTdqbDkvNXB3M1FIRTNORGVUaytSY2xNb0RMY1RSNGhOVzJGNEZhOC8wQlBEYjkvMzhkODk4YVI3bitjYWh3U0dmMnM0OTFEaWt3cFVJT1ZwaTlOQUMxaUxINXpYdnFRTE0wM3RXcjFxQndJSVBhcnh6M1lGK2xCY2Fod1JCMXE2OGdEcUhXQ2d4VDNSS0hCb1ZKQmZ6Mk1qT29xa2JCZFlNdkdFK2kxQll0YUpmTzlic2RyR1hlQndTQlBtZGJmYTNVaFNhY0NjV3dzckJRN091NmhadU1ublYrallod3J5RnJBYWtjeFdkTVBxNmI3NFVEL1E4NDVBZ2lML0EvdFpjdnFJYVVoZzNCK0FMdU5RY2tOdzN0dFpLVnUrWkR6REFmRDFTWTFzNFFNOHcxbkVvRU9UWHIwNGZVZ1pqTVBtQnVZeFRTalA0cE9GSnNmWmN6SlpxMnhCZ2pieGhOWW0yWnl1ai85K0JmNTduSFljQ1FUNTFUZnJ3eFVGQTZiQitpM202VTFPTnBDWXNKVklhdnVka2J3SEt6YlB3dTNRZXI2dFlvYkh0R3dmK2daNXZIQUlFK2ZWSytiTTN2QUhnQWtpNGs5ekJBY2pnM2tyalF3NEJsNzVaVXZ6R05YTGlmRUI1U0hZZXVWaGs5RUlPcW5FSStDRVR2MzMwSFNjeFYyVXRIWGVnYXg4bnEyNXltWlROUGpYdnZaU3ZBem40Q0tKeXpQOSt6L2ZkZmI4aFJ6N3VmdjZrRXpuWVp1QVE0SkNIR1dUVlVRb3BlWHRVRmtKaUpsYnU1Z0RaUmMvaGtnb0ZrU01wNktPZDkzRENxUUI4c05Xbk9UakdJVUNRK2NBSklxRHJzVFdraXRFckJ2a2hMZDlTUTUwVUJFUUYzN0tzN2p4NU1IZTJ2dTdBUDhzTGowT0FJS2daVjhvY29DcG4xaXFvVzlCWmtqMzVHdkluVmJHbjRwMDFldlQ4RTE1dXo3UTNRK3AvMXdLNTh5WFpyaklPcUZvb3B3UmhpcnVyU3NLWW91ZzhtZlp5Ny9lOUc2c1lmQnpVN0t1NTFmWmF3NS9DRDlsbEx5NWtvV1pKNi9MZ2FoWVp2UGRnSEljQVFaQ09vd0IwYlcxYmNnVXQvNVN3MVlsdENnNGxJVXNUT2lWekRlK0RGZWdtZUwyZC9ZQS96L09PUTRBZ0p3d053dmVMTlpSNm5XZ0dsV2pSNy9hMVFyNWpHN0pYYUxINXZEckNJdGlVOWppb3hpRkFrTUhOUjU4ZFRuemNpWWtyNDVOVVgxQlFpVGxwcUZaQjFScTlvaWdVMFhsOGVUVXJFTGpqZGVLY2MzZStGTS8wM09NZ2M0dWViWHpudHJZdnRvMkdSNDcxc2JnYjVJaDZodlprMXpDaEZqVWh0SEpUTFMxTEthd0JUamdKWFgvcm1jRnRROXhCQnBjNytNdWlGOFFoeGs4VGQrcmIvdk9qYTYwc212cDlTMVZxVU1rckkwUmVmYld1L09XeDI0NTBKM2tYdzA0blA5aHl5YW5iNVJzSDAwSmhCejJIUEJKR1pOenJIdnp3UGZkKzhRaUJ0Unk5dGtRTUFVclhuOHJ0bG95NUxrdUg1VDBGVlU0OC9HRlFONW5iM2pqanR4ZkZILzM4Slh1Mlp4dUhnQTZaQWovaEg1RzIwYU5oTG1zeityM3lUektPdEhSc0tCeFVWdmtzbVY3aFFWc1VUS05iNldLTXcxTU9LaUZ4MEJORUptK0dCZnpCMVBVNjQzL1kxSFdRRnplQ2VzWTJxWFd5dHlpaWRiY3h4N3pldDNvVm9BT2tnK1NnTW53UGVvS3dCVkQrY1NUR2oraFJjd0VHTFQrZVdpdlcwNGRaWTVUc1I5NWFxWDdseTBEVWpIODhxS2pCb1VBUUUxbC9NUFUxczgraFF1bEtLdmZRMHA0c3Qvd3JHTVl2a2J2SklWWGdTM2dmSEtGUkZUcGZxa2Q2bm5Id0UyUXlnUHQvSThPUHdQZS96OXlVTWF4YzhlSi81TWhXV29ucUVnb09PenVLQW11VStheGJHVWRqWk9BbGZiQm5Id2M5UVdRTHNDQytmdXF2d3h1QVVsV2JrNEE1dWc1Rm42Y3dZeFhHa2tyUnl6eFlmWHpzME1OSFI4OTZtVVAyWUx6TC92eW8vNDRiN2ROY0JwWEJPMVFaVkZWMGNEQTMvQnRVR0FSVkhjUjRaWkE3QnZPaUZxcDNES3FxNmlNK3htL0VtMi8vMGM2RERYRUNoNEJqMkxsaFpNZTRrZG51Lzk0RndJWGY5K0UvcDRYemRoa2RnL21mMWkrN2JEcjdYNDQvZmMxRDgrODVZL1VHM2podWRQVDJNMFlPSnNmdzRDZkl4dEVORXlaOWRjcDBZNUFMYnZ6OEIvYXU0di9zUjBWZWVjOEdUa0JXejNmajRtM0hUajVtWDl6b1Bob0h2Y2o2YUl3eFROTVpCam01Z0FzL2M5SGNGem9HSHVmeDUvcHA4QmpsRWIzd3dyanF3ZU1lZkZEYUZ1NTgxNzY3MjcwZkIzM294UGtueCsvYzVCQXUxQnN2RU5XNU9nYlg0U2lPZXM3ZkJvOTVkSDM3STBOUCtuUGhpVEI2NlUvLzk3NjcyNzBmQjE1a0xXVDFpYy85NjhpWkQ4QTBObkV5QUErdytkRVRIK1F0MzdoZDV5WkQ5OFpkZ1ZRRjdGNFpWanczMFI0VDRldzE2K2ZJd0VLVkNlTXVTSll6TU8xa0M0azl3S2JOejlObCtjSDVLNS8vQWZkdUhEaUN6SmtQcXpseDVNd0hwcjFnejF6SDR4QXRnTGorY0k1NjhpdmJGT2JDOXkrUW5CSFo0eUVkeUJwRTV6MTI5L21qWjBoRVJpVStPZnVxci8xcWt6cU9pankvSUk5dG16WlBmWkQ1c0hyOTN0M0lzOS9kZ1NESW5QbXJUeHc1a3pXajduRWlzdURlWGE4cmI3Nmx0aFFrb25EYXZhZmRpMFE0amJzNTd5OGZCZWtZM0NjM0s5QWg2S00vMTk4UWZjV2J1UC9NNzczbFhqbk5mcnlYU2JzWEhrb2QrSFhhL1lyanFIanFBL1B1bkxydjJXWC9FMlFocXhmLzBqMU9mR3JPZ25zbG52YTkyU2V6aG5rQWE4Wm9iOTYvNGZqNER4ejErTmtBZzhsK3BXN2xQdnV3WDNjVlh4MkRkTWkvYjQ0bk8rY09PLzkrQUJZODIxVmh3ZjNsMndMN3VvRDczZW4zT2oyTit4WGNVYkp1TXZ1VUp2dVpJQXRaZmN5UituZzg5Y2NRVC92ZTdKTlhFVm4veGpFZWZWdmU4YlpqSnZ3RFI5MTQ0V055TnJKbS9SeVl0MmJlR2pqbTBYbHJnSGxyNXNHYWVhekoyK2V0QVppMzVoaFpNeStWNU14YlE5NVhINzFqL3VFUFA3T3dqZi96cVdOYnJ0UHk4VG51NTdZNXVCUHVkeno5bG50eHI3dlBIVFVpY1IvU1pMOFNaT0hxRTZlTzNqZEhZbnh5Smd0V1FlUkVmc1ZtVG9lN1Q3Lzc5THM1L2U3VDcwNWZ1QnRPeHpaeE9uZWZmamVjRHNEZG5INzNiUGdtYStmS1d1UnM4bHV2b256cGt0UmNMcGNpMU5ZNXNzYks2ZGN2L1dIYThLajg2dHhIeFEzcVdXZE4zRHo3NmRQYmZuaDZXdjdvOUx2elB6Wm1QODNzVjVmYmJQc2gyQzB5NWRFM1BnaU9FMjQ3ZlBMOCs5eVJyL3JwUHFQSi9pUEluUG51cEYrNng2T012dTd1azFkRldQL0dYMjJlc2huaUdYdDJ3cnZhMFQ4OXdZcEVXbnRiNy80OWIzdTJiNC9lY2Z6cDM3K2U0ZnQyY3NhOXB3Rnc3Mmx3TDZmZEMvWVA5US8xY2RxOXA4RmRNSWVuVDc5N0NzYys2RTU0NFBRZnp4eDJSNzdxcHcvdUV4Mi92d2d5Wi82V2R1NURadWxwZHk1WUZVL2tWNXM1L2U3SUdYRHZEdDYwbGJ2T2dMdk9tTVN0Q3ladVk5WUc3ajlqMjhSSmJMai9qRzFNM0RaeEd4TzNUYnhyQVJNbmJaaTQ3ZjR6dHQyL0FKaDE2NFUvMmdRd2JWUCtoL1IxR2dDYnBtMHltNWxwc0drYW0ybzdNVzJUL1g4YUNMeGlGcmZDTXpNWDNBOHNNSDN4Yklva2ovc1gySDh3NjFiR0EzRGFYV2ZjdzVSakgzUW4zSGI0NisvWG8yVWs3Z011MlU4RVdlaW1qcDc4ejh5V1UrOCtPWkVESW1jQTNHazY5SDVvVmFiMVNXbWRuT3JiYlc5RXBVek8vYlRzcnFYM2U4NGczbTk2MkhhNWZ3RzNud01nV3EwSWRrN3RNdEdzM1luYjhqOEEzTjZ5VHdvcDN6OStCNHpudEx2YzZROGUrNkRiK2N6aHI3OWZqMzdsVDM2eWNjeFQ5QnhqdnhCa3hpbGIydDI5RWhmL3krdzJFamtpbkhIWEdmZnVZTUg5ejNBT2NEdkFPUk8zRVIwVHR4RW5meDltTEppNGplZ21ia3NUTW5HTGkyN2lOb2d1NG9BSWs3Y1JKMi9CTVhIYlJOTGNUZHhHZEJFbXM0WEpiSEZ4OGhhWXZBV0FCMDRHWEFRWFhRUnd4QWQ0aHBtYy9NQXpDMS80WVZheXNHV1dKbTlqNGpZbXNoMlkrR05PdThzeDVkZ0hUM3JnOVB2RXpSMjViMjhwc2g4SXN2QW5yejV5OUQ1Kzk4Wnc4cXFreFNQQUdkekxEcDZCR1NldlhBZ1B3RE16VDE2NUVGRWU0Sm1aWTVtYzV4c1BuUHpzbXprWldBa0xUWjRzbE50aFJuM2FhZ3lRcTBnU0s3SEw1L3dwMS8vd2loOXoybzlldzEzdTlLMFB1cDNqWDMvZjNqUEp2aWZJd3RXTGY4bDlFaWFjdmlxZWVOc2JId0JNV3QzTER1Q1pHWnk4a29VUEFEd3prMmRtbmd6d0FGQW1WQlJZZVk0Q3JJUnpVRmF5Y0NYbktLSXJGeUxjdmhDNS9SeHVQMGRCYmwrSW1GeEpFemFCN1JQWVBsRzNUNEFiZ1F0ZysrMWdkSmh4ZXNxclpLck1XRENCN1JPMlQ5Z09FN1l6WWJ1ZEFDaGJKckI5QXNCMklDbTRoUE9hSVlBOE1mSEhwOTNscG14MVEwYzRkK1RXdmRNays1d2dDOTNVMGZ1WXJlSGtuNjZIWXphRExRUThqaDBBbk1MOUp5T283TEt5WTU2ZVhVNjNrVjNlNS9yM0dSdG5iTFJadGo4MnVjQ0U3Uk9BN1dXR3dUYVdyNWtBMWY4b0ZKaG91Mitia0VOajJ5WVdFTVgyaVhkeEJuRDl4MnlEYkp5QjhHTk8yM2lYdUpNZkhEMVQ3anQ2Wk5YT3ZXQ1NmVXlRaGFzWC85TGQyeDdYelJ3WDEzTU1wc3VCY2JBREZ0eEc1d09uSklWdVk4SDlHMmRzWkFhd2NRYVFQMjRFbUxIeG5KcTd2S0E2ekd3ak13dnV0eS9HQXRXT0MrNW53ZjMyNDBhVFNoUHZPdU91UGJTNDYrT3VNMkM2ZlZRQmhwbUI4T05YUEw1cHB6djUwVWVPZE45Ni82dCtzdWRNc204SnNuRExrWHF2ek5KdzhrOXBvWWNSNURDV0xtUHBNbGdHblBIV1pVdVhMZ08rdzI5L0M3S1F0OC93Vm9DbHkxaXlmT215cFFFZmxnTkxXYmJFVytKMU9Vc0RmdGtTL0RLV0xGL0M4dWU4cWUvQ2I3Nys3YjEwWDNuRk45N09sVmQ4NCswQTMrRHQzK0R0OEkyMzg0M2ZrU3V2dVBJSzlKdHZ2L0swdDEvSkZiMXl4WldudlIzOTV0dUJLem1OdDMvajdWekpkOTZhenZnZzc5cjRoVCsxendJTUcwbFduM2JQbEswblRaTDczTnk3MkZPblpKOFNaT0dXOW5WUHRvY25aNDZMNjBuME1QdUtlMDk3NUZLWURvdnlKVmV3V0ZmQXJ0VmxLY2I0S055OWFBVXNXZ0dMV0xGb0JZdWV0K3pwZEg1MWJQNmNveVQ1akxCUDNPaFdvME9HSHY3YXB4KzZMbDloZUFheWNlYVAybDcxdmNOSHZmL1d0Vi9hVTdHMUx3bXk4SlJmcnRONDZ0MG5yNnJUZ3dpSFh6cmRacFlWTEJMNllYRS9pMVlzcHQ4SVVxMGJsUmFWV0lQYzFYTHVSU3Z5UDlYWCtqaDJEc0Q2T2VscjlhRWRCbDdjTXdhZjd5VGs5SjBvb2dzSGRnTnlyVC85cmRPMEFGK0VIK3VtbmRPMm5qVHB4KzZvZjk5RGl1dzdnc3ladjZWOW5jWlQ3eHdYWVQzSGtBbzBULy9hbC83UVNMQllrZjdGdW1JeG9DdGdNZlN6cUFadEV5MzhzUXM5OHFpUkJHT2FSU3VBMDljelp4ZHFwQzNyMjRHVndiL0lKdzJ0bWRUQ0hBT2QrWi8wUjkydDU5MzBqUVJFRXZueGFUL3k2MDllUGZTYnkvZVVSL1paVG4zTy9DM3Q5MVgwNEZGZ3lwUXBwei8yQi8vdkNQcFp0S2lmZnFRZlpGRS8ycitDeGZUVFB6d3NCYzZXYkh0Rkh1WHV1M1lYWmdBcnl0WVZoUjVtdmExZlB3ZldyMmM5Nitlc1o3MHdCK2JBbkFHd1JQV0xldlBxOUJDRUFRWmdBRHJ0RDVCd2ozZm9HOE04OTluUEd0WW9ucXF5NERmdW45RCszU1hmdVdUYysxN01GY3ZWOWhHSHpObjU2dmI3MmtkZmwra0J4L0FvczJmZjM4L2kva1d3WXRHS1JRSktmc1VYMHc4cyt0SWwxWDNrL3g0ZDZId3hxODhmVzVoalBZa3QwcDg1TXZSdzU0dVZXTHVQaFNzWEpxNFlxTUZQQnpvWjZCeWdrNEZPZnZXYVAwMXd2ZUdaL0ZqOTF1MUR2L21UdDN6cHJWOSs4UmZiUndTWnMvUFY3ZXQwOUhWM3p0Z1NpNEh4dS9mMnNMaC9jWCtTTTR0VjZJZEZvcXd3UlRKOENlVDJHQ2F3c2o1blVhSGNvaFhWNTdTaDVkSTdqbWRPeTRiMTZmdjZPUUlEblN2MzVoR0R6NXJEL2d4MERrRG5RT2ZBTHRwRUgxbDFNUjhXQklabi9samJ0bTNmVTZtMWowVFd6bGUzcjlQNHhKMHp0cGlWKzhaajN2akczLzFmOTBQLzRuNWs4U0pnY1QvYW54UTdLL3AxRVlzdkFhdkdGSU1hS0NSNlVORmdCU3ZTNTBXTFdNUXUxSUh4SkpiTUw4S2NSSjg1NjRIT2xXSG4zanlZME5tWlpkUUFBNTNZLzlKWHNnQ1RZOS82aWdkL1gxVlZwejl6Nm1takV5ZTBmM2ZKOXk0WnQ2dWZPNFlMN2hNT1diakY1TldNTFNhdzNnaTNIZGVqMmJKYXJDc1dyVmkwWWhFckZxL1lrVXVaRURvSDZCeUFUbVJsNXdDZEE1MERjTlRVa1YvdkRob3A2K1RzTWw3QjFKR3BJMU1abVFxTVRCMEJtTW9JVTBlWU9uSXVQemozZiszTlkvM0hYYjcvNEZ5QUg4Q3JkcDIxZ2M2QlRuRis0Si9mUG4zZFRjTXp1YmR0Mi9haG8yUVBnbzM3aENBTHQ3U3ZpMUdESldqaGpUdzRhZm5pRmVuVWkxWXNXckc0bjhWZkZjYU5udjQzSDM4M1hmYUxSWjVhWW5jclllSHR6M1pQejVhQklvY0NGMEp5TmZTY2xTeGs1VUpXUGc4U2FPelB0WEwzajMxZjVWT2ZlUHlZWDUzTDNlMktrU0w5R1ZvMVBaeDkxOFp2SWNpOWJkdmt4Si9JVzc3MFlsRVErNElnQzdlMHI5UFIxOTE5OGlvaW5BZ1BFdGZTRDZhNkY3RmljZjlPOGI5eFcwZUV6MzRrTDdTZHNxc2x5WnBHNlJwT1BSWDdMSmQ5RGpiYXQrTmQvN0xiWmZXemZBVG5QdjBIRTArL2U0NVp2d09kREhReWNQWWp6NHl5bWVucnZqWkQ1UDZ0Y3VKUFpPNWRMOUpsM3djRWVmM1VTZTZ4cU9Ia1ZaTzNSTmEvOGJZNWZNYnBJZ0dWL2tVcllQRlhwZTN5YjE3ekVkcmNiWGQvN0hmVTd3cTBPWEU2REU4SEdKNyt3K2U0aW9IcnBnKzNiSHp3dWU3cHhPbkR2M2oxN3B0LzhlcmRqamp4d1FMYjIvMXNGYUt2K20xU2VOMWxYL2pZeXRpQi9QQzFvK2YrcWpnbkE1MERadys4NmE2ejc5dzQvU3M0N3ZVZitac1RmL0tXa1JjWjE5b0hVTkxKVTBjZk8vVkhUODVrOHBiSWlUeDRlUHlNVXdSZHNaakZBdkl2STZQM2ZuM2d2OTUrOW1kRWVNZXEzMldvOWhhc1hDaDY1OW5RdGhtZzdhWTNqS1ROOVQrQ2F3TmdjMXZMcFUrNWd6ZHUwR2k3d08wTFY1N3prd1d6WkJ1SFBkTjIzTFBjNnFzR1R5bFZQbmIraTFlZWxYOE1qNXl6eTlzNXA5UXIrR05LS09Gdy9WZnAvdjJ2REl5LzZmdzRXejRncjN5a0U2QVRCcENGbzlNSCtNYmIzL09HOTg4ODRvblBubm5uS2QvOUxiZHJzUHI1eDk1enlNSXQ3ZXMwcnB1NVlKWEZFZDM4UDVGM3NpSkZSNUF0QzNmODNabHlWbCs4ZjBIYzJjYjBXY1JuOXZhYUwrV1k2ZGd3SEo1NWVOS2tXYjk5d2J2K2tUL28vOVdyZEtEVERPT0JUdjM1UnZ6RzZldmVkcG5jNjdlKzZpRS9YVjlVeW1xdkNUS0hNOVlXaFE1c25YVE40djdGNklwRksyQ1IvSXY3eTRXWHlxZDVnRmVQMTJQQ2pPR3BqT3psRlYveU1aV1I2WnRtUHJwcHg4OSsvZWNuLytQM2Z2T3l0VHplYVg1aUovQ3pqZmlOMDlHdnlyM3VHWjM0MXUvLzRvQVNaTWE3Zi9uNHFUOTZjaWJqaUxDVlNkY3NWaEJkd2VMK3hWL2xiMDgvODQyL3g4WTMrM2s3WnNTUlQ2YURmTmoxUS9wSzJHWExMbnY1Z0Nla1hmUDIvTE1QUHVEN3VxcGZhcjhSN0hkb2RxWERZTGRyK2VBSjZhaG1venF4eWZiZ3E5djd5NmxPdC9tSHVQMjdQenBSYnYvQXJ4am9OT2RSK1BlSTN6aGQrYXE3OWZVUGJmM090Uy9LWTk5YmdzdzRkZEo5YytJVHMwOWVCWkd0TEhxTDAwWFN2MmdGaTZRL25MVU4vNjZUVjc3cGhCMmYrTXZaalRRN1BnQytyNEVQelViYVVDT0RKMDI2NzJzQXRndUZEcUhzWGlkSFBsWGVZRk5vSDVwZElXK3FSbTJ1ZlY4akVUTmZwT1Z5TGJzM0cvYWwyUUNhVDMveXVrYzNqUHV6VGQxSGRieHE2aHhBR0dxSGxaTWlmdVAwZFVmOHk0L2JqbmhtN2l0K3FDOGkvTCtYbnZxY1U2YTZPYWNxY0FLYnQyNkZPOXdpVnZRdkZvQ2RuLzZiTzkyVkhlTSs4T3B4bzF6UlpTK2tOek1pZEFGMDJXZWFsRithRkNiQTAvUU53T010QUd2RVNqL1hKempROE5Wbnl2RUFqYjVtMmQwdTBjSWJQdjBYV2xnbTFPbmhDVTNibk9oQkE2RHhTYi9oeUdQalZZdCsvb2t6UDNMYXNZZ3dCTURXSVFremhvOTg0bDJYaDNVZjBPOU9kajhaKzR6dUpZZk1lUGNqajJ0Y056c3V1Sjhkd095LzBzWDlpK2xmdEdMUnY3Q3RZOXpiTHJ6aGo4S2s0VS91Sm9qcU1xVjY2K3VNVW50aDAzdVorTWxlZkI5YWR0NUYyRldDWjdmTDdpTG5kdjM4ckxmWndpaXQvL3psOU0zanYzWEs3Zi8ydHg5LzdTTkRQTVJDQmhUQzFEWTJUbGMrT2Z6bXUyWEZ0WGVNblVYMmprTVdudnBMNG1pRUJlellLc1JKMzErRUxxWWY0Vi9Hdlo3Qi8zRGhKOSs4WmNLbG45ejFPRjk3RlgwemdQMmZ2dnh6ZXMvVFhnM2JZRUlwQkx5SFFLaS8zV0VYaFpEWnhMY2E5cGtldFJ2d0VKcVptNXBwaTYrZGhvcTdLczRzLzN5eWE5S1dzN2FkODRQTFB2VmFvVjFZdVZLQmNScGcrQWt1di9ySC8zZnE3OHNwWTJlUnZSUlp5dU1pek9hQmZ4ZEgxQ3Zuc1hpRkt2VHZmTmZKdDl6WjU3L3h4ZVBsSXlFL29nZnY4MnpiQkhnZnV1enBQZEJJMHFtNlFOT25KL2NlbW5pZkNOQk1VOTFNMDI1VDcyMVRUVGdHZ3ZjMEs3S0VwamRHOGMxeUVaL1ZHMTNwN2tJNUpYbTNtbGoxWkFwNkQvLzFzQ05mdS9NMy9jY3Z1SERWU2szOWJ1TFdKOElNam54aXl1am9wVy9ZMERYdDFERkhHZmRLWktVWTFwT3oyVDRLTzNqVjVlOWF3ZUwrUlN1UWVNcWRkdzcrNnljV1RQcUlTUmNmb05sVmFmRW1hUklLZlFvaGl0S3VpUjBmZktEWktBb2ZtbzFtSTlsVnJRYkJyc0pvZDNNczNVY2xOWTErTlNub3d5N3ZSV1hkMmJYekxhWHhXWG5najgvKzcrZTg4d3FYaTN0MmJvMUhlRjEzeEZmdmE5djZxc212K0tHT1ZXYnRIVUdtNjJNU1QvM2U3SzFvUUdkKzZ0Mzl3T0oraEpOK2VPY2Q0ZlJqNUlxYTJWbDd1dndoUDJqNTJSUHFsdFZ1TktxWnRIWGhVN1BmaWxsYnQza0p5YUN0MjErVjRpb2FvYUp3elZiem9kbWcyWUFtWFlsMDFDL2hDYzBOai85RitKdVBYdHhkSWdreVhuUXpXNDdZL04vY1I3OTEvOUdieHhyMjNSdVJ0ZENOUGk2ajhYdWdPNE02L1lkMzk3T1lSY0NPNFZ2ditsSTRmWUY4TW1TcktpU3BVYVFLU1o2RTREMGhaQkVUSUZ0TVB0U3NKWHRuUXlqeXl5eWZOT2NtRlFQNHBxL2NqQ1FrN1VxRWtHVmpDR2xUTXR3c2hSNGdXUVpGZzNqdlEvRFFnSWJITnhxMlkrMUprcXJyMHZtOUd6NjM4b0t6Uy9ta2JsM0hESTVraXNSYlZzZVR4L3plNzVVT0dYRVJUbVBpbHFDdWpkSGhmaGIzQTR2RGpyT3YrK0wzejN6bHhrL1N6SXFaWWpvVzladzVJQkdyMnJNWXQwbHYxekVIUGl1VlpIdjZrRFc3L1dsVTUwZ0hobkxwMElSZ2xvTWQwQmZxTzRQM3JRYTFHUXN0TklMMFh0aWJsSDRLbnh6KzNEODhOdldpVC8xVm9ZaWIra1NZd1JOYzN2M2pqL1YrdDJPc3VhcTlFRmx2ZlBBTWZlelVIMjlFZDBnYjZqLzNydjUwMDV2T3VmT2F2cysvYnVNVkdMLzdYZnh2WC9mVVd1VjFUV2VZbld1LzVUTzArT3gxT2U3cmtxNTE1OHFyQ2V4Nko2Mnl0SDZEbGJEY2RhZWtsSGE5bFN0NTdNcnZ1bXZ1KzJmbCtJZFJHTjEwWk52RzZldU8yT2IvZk9iT2hXTU5vT3hGdFBlK1UwZFBmdXhlVlhBTzViQngvWVlJK1RkM3p2aHJPdC9aMlBqSjZrbnlCTm1jMWJaUlB2cjAxdFVlMVhZdWRtMjU1NUI5a3JLNUpWUlNlKzE5cU5pcllyTTZXWUp2TVFQcWhrYjlYT1VHd2NJekxYVDBnZkRKdm1NdS9kUkZVeDRlbmdQdG9ERHU2MGZNMkFpaDk2eTdUNGhuL3VLTnQ3M3duTzZkeURxSkc0VFRZSWVpdFAxVjFQNysvdjcrL2gyYngvMkhMZXU3cG4zUzIrTTF6TlRNSG03VEZHV1I4Y1hFU3NxbTlzbjdtdmJNcHpEVjA4Q0RieGF0QUVhLzBLU1p6QVF6VG4wMXg1UlhvUm04OTBtL2hHWlJDb1ZkQTNpYUpneWJRQWpOYkdnMUFSb2gyOWpaVHZkTjM2VUxQN1Q2MzNiTStxV3E2a3JnWVFTT1JMb3ZQdmNkTjB3Yjk4b3hUZXFlRTJUT0tXc2NDK1JlZHJnMnBVSit1RnM2ZGZOWHBrLzZyN1hYdW1GYTFEYzlOR2htL1ZEeFNoLzFWeTZrbjBQU3ZsQVQ5Mmw0YU5JSVJhYVIvdXV5OEFaOVBqUWI2VXcxTjhUTzFsVS9kWU9zcVdxT1k4aW1SV2dBVFJvRTgxdXpqZ3BOc2cwV2dMNEcvcE03VHp6Ri84SE5Vek1vNHBWSHJRc3o0SnNoL05ubEttUHNjTFBuT21UR3E5dlh4YWpEN1BBb2gxMGQ4d2xQZlY5MHg1NDB1eGlmelVaTEhDUVBYMHliL0QySjdtSnNWZ0dWdWp0UnMzTkxxSzhycE9CSkpjMnFVZnR1b2NSSzExVHFyZFh0eUR2ait4ckZTeW5CM3JxYjMzcEhuMTExeHhjK3RPVUx4MklaeEdOMWhkODRqWkgvdStraE9mZUg5NDliUDRacDNRdVJkYVpEV004T2g4SnZaa1RoenQ5d1o3QnVBVjNKcVBUbWZudHoxdk9iMnZTZXBzMUIwNlNYVFg0SVNUUWsvdkhKUVBVRWk3R1FyTmZndmZjMnNVMGFadFVTdkVrekNzZms2OXNuSHlBMG1sMUoxZ1FhQkI5OEUraEx0bFE5Yk9LOUQxMWtKZ3gyZG04Q3R4S2grV2J4ZUxkZ1UwZkg1R1BYRDBBbm5keDE4eE5uenBBbnByNzlEejUyL0VjNnhvMEpqN1RIQkZrNGJnMXhnWXpIS1REbmduNFdBL0N1TVBDbHpiODE2WXFRMUVIdytCQkNJSVJRYkZUZkNBRUxldHRzMWtSNUtJcldRMGlTM21STElpellESnJaR1JwMW85VFRsK01kUGpTVDVaeW9haGZ3amJxMDlJSFF3SlB0dWI1RUZnLzBoYVRFVzh5UEhIcExJcThFeTBMd2RPMzh2ZnZldi8wdEl3bDR5dU1NVEJ1R0lCYzgvdnRqbEZsN1RKQ2ZIRFA2T1BmRzZZQnkyak9qU2orTGhUTi8yZmI5eGE4NWNxU1lOdWw1akJBaGV4VWVIM3dJbGFjQmpWYmJ0eThaT2dGQ1gvRSt6RFAwSkEyK2k0MWw4OTBNRmhSTHZGS20zdjd4NWhENmNuKytSWG8yUENIUnpqZVNkb2ZpUVNhZGtrNW8zbE5sc0FWR3BselYvbDhuSG91QjY5cmZlTVNpRTQ4RzJmbjJqZHZqRk1iU3dXS1BDWExLbVM2S2NONE8ydURldjdZbVlNb3h0Njc4eVlVbnlCV0VLblFLVFVMdHZTS0U5TGJXSllRM1FaWkhWeVhYbXcxQzl0bW82T3FMdzV5aUFONHUwRVhpcitLSlpwL2FoMERBTndtK3o3akZKN21ZOVVpTHpXekhCbThtWUxWTHVXcUptamJ6OWs5T214ZCtjL3RmSG9XQmdMWGpDVTc0blRPbWlQdjQ4ZC90T0RXT1lWNzNsQ0Ivc25vTkxHRDkxMUU0VFdiK0g0Qit6dnp2bkhuMi96bkdiclZTcG8zOEpNMXF4a04rbkw0eUUxM0ZYMGttajFHc2krd2NVK3pUWkNnM2pZZXl3VlBzWjlOR1JadGdObkR3dm1udmVPZ2lwTmVrbU5uR0o1VkZWa2dUbXMzOHBRaTcwRWM2YjJqNnlsQmovSlJQb0dkTlhka0pBd3dNcldQZ3J0VnNEa3N1ZUh5NmpQeGtEQk83cDFiV1FqY3AyMWpLYVkvOGJRUVc5L1BxKzdueHd0dVAvMGg2d3JSek0wZDJheG5yWXNYa0hZdTltUUo4dGUvbHFxMVIyM3BzMXM2d2ZMSk9WVkVaa1MxTHlzWHFMblVWMHEwaWk5U3ZzSXN4Mkd4VVA3YUdCWHlMR1ZqZHk5K3U2eHIrVDM4L0tYa0Jjcys2ZHo0NDVhaGJuTHZwbG5OL2VQOFluUFU5RmxralhDREFEb2ZBNkNLQWZoWnYwMnZ1L05ReGp1VFRKV3VrcTd6dEZPcy84VUhPdkdhNWs1Vm8xcVNCdWgrUjM5Tm1PUUZBbjdld1l1LzFjeWJ1V1BYUTZvZFdoYTN0MS9jMjZ6RkU4RTFvQm9JUDN2c1NIQW40WkwybFVTSlhIdFAxUmJhV1VLY1BRQi9GUmlmVVR2R1JZODZldGVISXplYUxET2dJUEhhMElPNE5uL2pJTlA3a2hlZDFUd255a3pPNU1mVzFVTzc5RGVPenhmTFRjem92T0dOcUY4Vzg4YUV2VGFEM29TL1p1VDY1NE0zc1ZKdTQ2UE5OUzBBMW0yRGl6VGZ4bmthbERtdzA4TjVuVGVJYkFmQlh1emtQZit0ZnYvVW5mL3o3Zi95QmI5ejh6VHZiM0Jkc0pqTXh1NHBDRHRsZkJKcUVocm5qZHZVczRUeSthWm5FWUtaQTl1eVQzZDJ3Y0VPZlBWbVg5ODJVK2Qvd1cwLy8xbTgvM3NrQTBEbDAzcUtCQzFjRGkvLzN2M0h5S1Q5OTRZbmRVNUUxWThIVXh5VEc0UjNPS2ZMTS93R1l5OXdmTEh5YisvK21mcEtLOVo4dE9wZC8yU1UrUnpIc3ErTmFja2E3ZkNsK05jMnVaVWVzdi9lcDc4RDVPeVpOM3JKMXdvMXd6aXVQT3VuWDNVVkNtbkJzRFhybGp5MDNsN1YzU0VlVUcwb0M4RmwyempjZUFQNXkzR04vOEtIUEphU2p0bjNyaU02b3E0Wjg4NW1uM2pxV2VwRTk1SkJ6VHBrR28vRThBMlhPWGdHd0dJNDVPMDV0bTVITVFjdTRKc2xUQzFWWENqTGtlRkJ5ZU8ybGF4RWc5bjVpZGs0SjN3TEJoNXh5QXBxVDd2ajYydStjODk1UHZPSGkzNzNnKzIvOGpVKzg1NjIzLzlNUGI1aDVuYWx5ancrTmZKcDB4Y3BncWwvUUowczNoSkpiSmdSdktac1M4Y2s3Wnp1aWxsL3oweWV1bjdqOUgzOEpJT3Z2bVBmYVJicDZOV0hIUC9EL3hvUUYzME9DbkcxL2JyWS9CcU1kcE9NT1BqT3lQc3hPZDlkVlMzSDQ3SHUzanJSRFNOaWVhc3FLVUM0ZVFna3pWWG5HZEE1ODI5TTNmLzcyY1IrNCtOelh2bWI4VTF1dU92S0U0ODU3L1FjdXZ2VXIzOTNvb0ptdDdHQ0tCUEQwc1R1citKSS96eW9qNjVJU2VmTVFVbXpCUXdqMFZYUnRtdFBvWmRyV3FmOXpLc2o2SVJZK3N1azZPZUVFUks2WTlTNU8vSjBYbnRrOUZGbHpPR050MU1qd0RtbFRwdjlkQk9iUzhkL1AvUXpiajY2QlRHcDRzMHJjNUNCUjJQWGxyUDdKQjlUL3EvNnh3MHFxMW4vdW9YdHZlUFBjYzhjTlg1cnhoajVjTTMzNGdaL2VmazduOGUvZjlSTFArZ1hxSnRVdWtxbjJOQldjY1plZktsbjd0dzhOdlBILy9WczdNRVE3OTY1OTU0UHo0eTNPL2NWSnI3anA1QzgvNTR6bXNZY2NzdlBFVVNUeXBIMjdkUkd3dUlOSHo1ZkJTMmZhcmFjbnFCS2Q5cjI4VUxYRVNIbW8rbDRGazVXMUx6bjJucG1va2FSTzg3cUg3cmpocldkZXRIN0hwYjZrRWJsc2g1ejl6b3R1ditmZXp6L3JBNlN3VEdVcnBKeWl6OXdSNnZlVGJpcmtYS2R2T1NwTDQ1VDVISG1sL05uclYvOXlhR2pvSVladTE4VnAxL05Yd3plZjlWNWF4aDRTNUpRUmdDZGh2QUNYQW9zSEIrSDJsZEkyQXlqaXArYi8yU2lSOWRxenBnOGh2L3ZKQ0RMcU5mQjBaWW1UajBoZW1RWDUvTVk3YnIvb2d2a2Z1THhSUWlBQlF1T2pmelR6KysrNDhiNkhycTg1bzhrek5YY3VCTi93emFRRXV1cU9iTjQ3aFJueWpWZFpkTFBFUFExditvYTZVSnU2L1c5NHBiUzN0L1BRUTZJNkFMenBLT0VUSHpsekRNR1R2WWoyTHVBdGt3Q1FpL3V4QlFzNk9ldk4wNmVUTTB1ZUVHZzJEVHhWWG0yZmVDRFJKWnVhVGU5ckxPUEpvcnVaL0pMRURzRUN1RG5LNHZ0NlIyNjkvYTJuejNvLytENXozZ3RxcXZHRnIxOTg2LzJqVndNWjBkVkZDbENtRkUxb1pOL0hiaXRILzJ0TTJqRFZrMThaTzFjajZiUVFNamJNSHNTSDhNbW50OTV6NzM5aUpTc3htMmZuYW5tSXhXLzROM2xnRExPNmh6cGt4cnNmZVN6cWswd2tPSjM5bFk1KzVnSnpkNmovejIrZTFhaWJ1cFViWGRjb3JXcTVDZzZHNm05cnFxSFZYL1ptZEJHQXo5LzhsWFBPbmo5YUIxb1ZkZE5zMi9DOUc5NTc1dFlsYVhPQ1l5WEs3NklOa3Rxdkx2c3NFWUhXQzlULzFJSHhhN1lNUHJIakt3RG81TTdiT3pXdThtLzg1YnQyZGw1LzZndW1jZjBMN2ZEczQ1UUhwc0tUek42cXdGREhpcU9nWTVEMU0wYmYrcnBaalRSVmhSTEJoOElQelVhUktlVjVkcm1IeWlBcjduc3RDQk84NWVqU0diaG1lQzBubmZSSDZZamwwNGVaUGd6VC8wdXpRZkFOLzduNS8wRHorSHg4ZzN3c1ZYcXJqT3FPOG50aCthNVEvVjVBeENWVlF5RmZCUWR3bTVqejEzYU1mUFZzSHVTaDE1NjdRcjY2bUZOZWVHYjNRbVNaV2UxSDVmREJSY0FnSGR0Vno1LzZkQlhrcmIzdlNVeWxaSjMzTlRTUHViNVY0TEN5QUVJd201VkFTb0kzVXVpMWpPVlRidnZDeFdjOVlVTHZDOWUzVDJodm45RGUzajdoK25TQnA0NWIrdXJWbTVlVi9RUGxCU2htUmJNbW4wTFMwUW1HNUFzTW9LYnRBODBtUG5pZkhQd1Ftc2xrOXZZa2JkbmFBWDZIUlNmdzI3RGpSajU2MytvWFh2cGtEemxrOVJsclMvc0YxajArbUxmTEd3WXQvcE5mL1ZCZXUwQ0t2N1pDY1Vxb3I2N3R2V1huUWtwN0ZLNHBya0R4MHR1ZjN2RCtVOXdzZTNsWHI5MmNUenRsYnJNUkFzeHFPK3E4NGNmbTE1ODRoR2FqcFdpa2tYV2JDWjZhNVp2Y3g0YkpwT3F1dTlLZFdsVUNOQWgwMlMzN0VOQzBsRm1lbEJQMEJKQlB2ZjUxdTdlVjMyM3NCWWRFWnVPY1JHWXZCanBnc0FQdWFhbktETldmaWlNcW40ems2OXByUi9iRHFqaGUxcys3Q3BaS1l1bkR0OHc0K29rR0VLNWYvY04vK2xvZS8zVFhRMWNETk5ZZlBmM3pqL1AzK1hMSmNzdnBzRW9haFpKV3NRMGhXNFRaZ3M4S1BlbWFZanpXSDhZSEg3eWZDbStCTEVKZ0FQU2UzSVh1aGNiZXR0YUlZS2JFWUVmSDJYa1JjMitKYW91cGtqNlIyYkdHZGlkQVh4Wlh0ZkN3N2RGSG5yZ2NzRTNpeEJkTGFQbjZYM0xFRVVzQmxtOSs2SmJhamYzdHYyKzl5Z05McGh6ei9rZCsva3llUEYrOUpDVjlaZTlGQ0Q3WlRHbGovVzFLc1ZKZnlkWjgrNWJ2OWI0WlFwOFB2cThXblNqMmtueVRkdlF0WTVyUWZkVHJwTVBXUjZzMmhDNGc5Sm1ZOGlsWG5aUG0xWjltUmlxa29FWk8wbUpHUG9VUSthQWNVRXFRM0VsdDhSY3pJbmp2SjIzYlRHMjh2bTNqRkx6SGIzNWx2RDBjNFMzcVhnL200SnZKWkNoV0NENUZoSDJvb2l3VXQ0cVVYYlNDaHdCNG53RkxYZEFJdFFTdmpkUUE0WGRTYVJVdmJQanVJNElNNXN2ZkJJbmZQUVp0c3MrTkdudUhRaEx6Qmt3Mk5LcXdrTzFWcWZkY2oxT3pnT3pmdmlsRG81Y2MvZ1EraE1BenU5elRiQWlCdnEyakU5Z1krOGhKeDJ4UmhFWm9rSkVVMmJBbHVTbUJpaktRMUhwSTlLek5lbVVqNzlMeUxJM3lpcmFQdGN2RW5oSGtLK1ZUU2hOM1FBZjB3L2xNeDV5d1VFMXBVZW9sMVdSdkZ5UjRJRUJHdlpWaEVjZGk4MkFjQlRXTjBvWDhZTUtFV1FUdmFlRVBnS2MzQjZCcnlad3BqSlNUWjdMV1FnY1l3cjFJd3NKRXRRaERsemVrWGgxS0NSNzZpakFPVUtDVWFVajFaMGg1NnZsbXRJeDl5aUdMYndLR1RVZVhMRis1Ulc4MlpQYUNteUhRdERSNlZjeGs0aUFYUnhFZzlHWHZrRDU4Tm0vS3FUZWNPMlhLaHl6ME5QUFpiODNMNUljbDc1OWVCek4yeTBYVE94NUtaVnpkS0NkWkhRMXZ4bDQ2cnRsSFZjV1FkKzByUm9DRHdoL3B6MkV2TUlkVUIrN05pT01OZ045UnRwamlhNWlqbE94VG55MVhIekxZeWRCUTlqZ05mSjRoazNJQjZMSkFkeU9qRm1oa1lWZE5ySTc4SUMrSFB1V1pYVzl0Q2tCQVR6b3V6V3BmdlJDazBheEFYbGxZNFp0Mnp3VVBWdUFtd1I2azZidnNEcnJNNmE4Rkd6MDBDcFlwdG9vb1FRNFVoemlBRGpvUXJBR1FXVTdabnFsTWxVb2cyUk5haHJUaW9EcXpGMG1SWjQ4aVFPb3FCT0JjaFByclhodWJBZDhNL1BSSDZZQUdUY05rZVFpRzBNdFhNaGFocjFFK2UvcnlReVJCMVF5VzQvSFowVXJDejljaDlPbUVyalVrTmZZQTFkNkxyQjJZQjhLS2ZzN25KbVpRbFVCbG05RTNyVGk4QWxmUkY3b3FYOWxUR1NqbXJqV3pVVlhrY3loazhJRVN0WjM2Z3hFKzU1c043M2ZUSVV6QmJEbDV2VW95bUJ2NGttNUtuSXJQbC9NV2UwenZTL0NOL0JZbG9qVE1Tdk0xZjZYcENRblRaN2ZxQTR3QU1WVi9BcVpFVlBhN3lISThUUVRYaHF3RnZyaG9FYWg3OWVhcnJsMmVmSWMwZ1UxQ0kwMSsyWklCbldiMnRMeGNFUEJkbFc5WWNVTnRIelBQK21UOHc5dEhONFl1Z2dtb1hZYUhyaUFqb0FrWGpBK2hCQXBxMUc1a1E3b2N1Z3VBMUk2dDI3NTJHMUNIZndVQ1YxMHp2UE9SN3psVTQ4S0Z4aHZXYmZWN3p6K2RhZXdaUVM0a1g4WXBQTjFQLzRyK2FTdjZWZUdoclk5dlgzTE44aWJaZTh0NWhoYTdzQjdmOVJVZkZQQnV6cmJYbkRBYnJSWm1sMHo2d001Tmszd29LWkw2MkF3UXJscS9uZG5TVlNHSENUVzhYaVZXQTlEMFRhcnN2NjliVmNHbXUxbUp6ZndjSVhNR3dMVlhqVnY3cVFtdlBvVVRGM1l1Vk9Wc3VJRlZTRHZjZE0wTFQreWVFdVF2b0lvTXdMQXRNNytZbTRuc2VNVzJQM3RNdGkydlBXOWw2cWJSbFlWT2xYZ2lDYTVnbWFtcUwwRHJIdmFqbVdJUW52QTdtNytjREo2dXpjZnk4RzQzNnZGSHJOOXgzcXMyazA1bHM5M0lyUUo4VGJGN2FJU3Vaa1Vmdzl3bmV5UHQxcWc5aFMra1N4enp1V3VYYjMrOGJmcmxZSEpyZ0U2RWl6Z0JIUnJyMU82OURvbk1UcDlNcDArTVYweWZNZkxZN004c283cGZvTzVRQkx4dkZBQmM4dEVyRmVFckVoWThkZFV6SU5SeWU1ZS9kbzV1TUFuaTNPSDE5RGtUWCtzSWdhQnJiL0k3dDBLcDBkbEZqOWZGcGZmNTFJVlA4dldLc0sxR3ViZTA2N1VidGorMitSV2JyeGdGVy9xcUUzZ2Yxd25RUHRicDNFdUMyT0c3eE0xMGFmZkVHVDkvWk5hMXl6SVRRSFp5czNVU0RGN2VGNkRaNVp2NXFRQmpreXFXVjNCQXV5UzZUYzdwOGY3UjlkYzBJU3paTW0vbUw4bzkvT3ppTjQ0czljQTFUejM5OEtzT1cxcWg4YzNYcVNCWEZlMHJtcVVmNm1hWXorSTNXM3pOSmo1WTRYUm80dW45dSszUGJINUZiM2Qzdm9VQkJnWUFYcXZBRUhMK2k1alJGenZPYmZuMk5PUk1QZzY2Z2FWWFRKbjVpKzMwcG1mZDFiUXR6VW9hVFdpRTBNRFRWeU9LTDVaTXFBU0MvUktTNEVxYm5uenRoN3ArTkIzd1REenl3dXMra01mbkwvSVRDZENjL09oMy92TnhXMHdDK2lJRTg4MFVGV0Nic2gzZUpQUVZyaUVGZUVPcks5bm9xcXZGM3F2R1BiWjV1blNyUFROQTUwQm5YYTRybDQ1bGF2MEw3L0lDdzhId3RQN2NPNXg4RDcxY3VYbnpuR3RIbHBJVEQ3N1VpdFF5QzQyVXRBcStCbXZPWXJ3ZVI2ejlFaXBRRUpkZlAvdHpZZjE0VDZEaC8rNkVLc0E2dEpTQUQ5dlcvWXhqWnUzSVZ6VUdhR1JsbkUrYTB6ZU5aRUExOEExZmdIRVc5R21rZTYyOVgrU3Fpc2ExbTUvNmRLOWVJU3F4VzdBMS9RYWdjK0JzdUdnRjBMNkt0NHhKait3WlFYN1Erblg2SXZvek9heTVxNHNxUzN1bmJ4czY3RE1mcHZic3pTeU9kMGxYUTZpVEtkK2IxUXZXM0ErcWoya1d0MXp3VlZiKzlxYy9Db1NQaHRwUmVEekxwOSs1N1p4NW15L3poYkxGTWlyNTQrcGN0ZEdLamNtbERaV0dxVDhVVi9ISXhCbmRWNlExRW1wTzRFQm5ibkV5eEJpamkzc21zczZyN2h0Z3VMKy85bU92SU9vRTE3T1VHU09QWEhWVklOV0JlUnBaZG9mSzcwN0ZGUVVuYURzUXJQakdGejg5elorbmxCa1M0R1A2K3JaUDN6VHRjOVhkNUdabWdkQjN4QjIvL2grbnZlYXlITFZwMXJSR00yVG90RzhtLzdER05yNVNmM1pFd29GVHhHVXkyVUpZZnMyNGpkUEdYZEdERXhWVmhhelVZV0JoV1ZsR0QxUndNY0owVXlLTDU1WnRxbWhFZXBkT25QSE1wbXVXVzFWVGVlSE16d2lGQUNrMVZlT0E0cnRscW1WYktFQmxoWG9ndlAvRUkrS3Y3NWk0UE12LzRMTjE3UDkrL0QycmIxcjZ1dlYyY0o5WlM5N1RUQW53a082bHhXbWxvcjc5YTJScWhMcUYxcGVNWXVEYUpZOXRtZGJiaXhQVWtSejBiOXR1Q3hkbXZtZ2ZhM0J4cjNXSUFNUFRrc0E2THdJOUtDSXFTRlRwMWlVU1dMN0VKeGgxUVdhMDVFdXpXcW43MEhaN05iM3BRNWJoSnNodFBnTlBuTlZ6OHhmKytxeVJsQS8zYVFyN2VHcmNQZmZmOG82emhpNjN3eHMxSzdaUjNGVXFuVlJITEpHQlBUNlVXOHczNWdPTmxQTnZib2hiLzhzRTZaR0lPcFhva3NCNk42eGNpQXdWYy9mVy9ac1BhVDArK1NGekI0RjUwS01pcWlpeFYxRDl5M0ZibjU1OXJaVjQxdDBOdzhlSEpxbGt4cm9xQk9yR2x2VlBxQ3hXdWdvWm04VThXTHI1L1BlKzV2TTNUZnJjVldUQjQ1czBuM0xjL0lWYkx2NHRQYXp5OWtONURVb3lOckZnTSt2dnVtK2UwNGJGeDAvM25XUWU4RlRjOE9kSEx1OVY0dzExZk1wMHlDWTRSMlNJOXBRcWxEZTltQW5kd3hHcEdHeHh5MWExOVgra0J4V1JuaW5USDkxNjdXZnRaKy9MTkhob3BENllEWkxJcUhKeFRRK2hFYUNaWnpGTHJ4U214L3RtSDBEb0hqbnp2ZWY5MDcvKzJGMTN6ZksvQzc0SllmU2F0dWtQLy9BckhlLzRocC9ZeUw1L2ZZUmEvTUJUcFl2ciszbFNBaWRVL212eGJqMk40SythODh6TTdpdU1CcUtScUI4elhNRzNrYUVoYUg4UkhtRWFlNFpjL09jUG43Rld3NU96bzlzK3VzTlAvVHNGV0R6SW5ORjNkaHpkVFZwVXlrV0xjN3E0N0lxL21UQ3lsQ0lCZk82ODBOTFpiZmRSa3htN2JhOS83VzMvOGIyM1AvUmZmbVBPenNQdGtUYXYyL1RvZTMvdnpmUFAzRHh4RjdoNmdSM3RadWVCVFg1bzNkeTZYNHVwZCsxYVAwRzdSWEVLNmpRdExQQVh6enorTU5jZkN6RFVMdU9QV0hHMnhpZFh0Zm1oK3diMTl1ZWUxSHdIZXpPY3JadTVxSjhrc1FCNnVnVnNsUkNKSUVUcDd0NzJ4T3pld3hvMWVXWFdaaGV3NjRSWHlyL0VPb0lWSDVUcHFwbWpBUWpkeTA2YjlzcjNuL0hIZnp4enFzNmV2T1ZwR2Rsd0s4UHYvWTBaNjVjR1ducHR0Q291aWx0ZWJlMXJ0TEpUZ0F4ZlRBVVFLVWl3Yk5MMmlmNEtBVkZWQjZwT0lvS09Bcno1RVlab1oyVzg4RHFBOWxWam5OSjlvdFJYS015bEEzNldONnFUNkZUQkthSXFWM1pQZit5WW5XUjdONVI2MlBvYmx4VjlLSHZWcHF0UmtvMTU1OHBNOVdHSnYvclZ3L2Q4Nkl1dkJoNCs3dHdmUEx6NXoyZlBQWnIzazdKNm5tRHA0dXB5UnVHY2thcUFpMTB0aWc1OElQaEdRdFRaL2ZrQTlMTDJGWElGaGhYczdZMWlpd1hoSkVIVGh0cUJoYmZ4d1JYQWtPeFhQNlFhcFJhK2c4RkIrOTdyMHNwK0t1cEFjUTd0dnVMSWthM1g1aWNrRUh3ZklSV3BlKzlKemZRcUdGQ0FGRTRKNU1Zb1B1c1FYMW9QNE0zSnVTek1QTzkzbXg5NDd6c3V2dXppbWUvdC9zcDVGNTJ3ZFNMRmZnMDBHb204R0xTaUVmQ2hBRWlTVG1uNnFrb05vTm1zVjlrbGk4RUhENStaOC9UMFRUMW9sTmlEOU9CUUIwSnZqS01BdDlET3lvR0hWaWFIc0YzSHFCdjJsa05zaWZMRi9ReEN4eUE0aUtCQ2RHREdsa1FSUmJwN043bHJQd3haRHZjMWFEYm95c1dWT2RXZWh0bTNXYUtGbXJZdkcxczJ3SWM4bno0ZVpFUjBxcmFOUHJtaksxV0cxc3ltbEZueVhZVWYwdjFrWHEyeWx2WmJBM3hmbzM1alBnVG82K3JkdEhabWQxb0dzOXVlRTFXUTdwUzhmWFRLUTdYc0ZHTjExUGVhUXdLTU10dy9kMjYxcVJkQm8wVHJZV3VzS3FMYTQ3ZHN2N1o2dGk1eXA5Z0dkZWlaL1ZxeXV5YVRta1dZV1FhMUZsOU1jY05BQ0I5Ny8vdlhEMjNkc25WbzV3YytlSG1aeHR4MG9Rai8wcjdIVndadHM2cW1DcjdsTGMxTWxPbytEVy9XdTJuTGtYOGxraHd1Y09KRTFJbUl4RlIvKzFETFBBMk5kV215ZlFBRGF1TVN3NXdNNWlKUUtUQ1lDS3FJS2tpOFVyZHR2L1p6T2JsWEN2S2hTT2ZpQkZSVDVadjRabWhVYjNuK3B4WmxxYm1aUzVjc21iVms2WWZ5dTA4SStiWDMrRnE4TnRuUW1WYUJFQm9GMFpxT3Jud1FrNlZwUitDcVRYN0NGZmJDS2FBYUZSVzYwYWpRdXVpTWpmYXhpcUs5eXFuYkdDV2hIT0I4aWREdEVJbGtLMUNTU1lpTFBYSGJJNlBXdXlSRlI1TEM4QkJvK3NvNzZDT2svZ0hCd3E2MWxueEp4Q2ZmUG9kWGdzK05reHExc0hnOUVVeWc0Vk1GZG1vcFU5SWkzaUxPNlNScE5NaWhBanVtT0pWWGJmSVR1MUdOS2lxQ2lFTWowZldxT2hGU1k5SmRnVUFIRENqWHhvcTVocFF6cXZRU1VTRktaaE9KS0tJUnVrZG5QbktOelhwT3BOZnFRQ3MzT29FSE1waXpFYXpsRmlHVXhtRzFOeTZKTGw5ZklDRzBuTEs0TTZYSlZrWFBZakJZWEtXUkliMGVvMmRob2lRYmZmUHFjZU1tWGdFWlZ4S1Y2SnpERVRFN0g3NWRXMi9aaHU1L29GeE1Ud1NMalJJZFdIZ3Rna01FUWVYVDBUbEUxQW5pbk91TmYvdllOU2xDNFgwT090bjA1Umh0amcvbU9hMjcyVDdCb2lpdGVDdlJsZUl1VkZ0OGdORDBOSnMxTVJmczRHWjIzME5xUXBScFhFTEZHUDBhUHJkNjl3YTNmR3JkOFBpbGlSb3FxczZwb0Nxb09Kd2tWOXVxWjdCL0gyUG9RQ2wxWUJRMWlTVVZtdFdzNFNqeE10R29LRkVkYUtTM1o5cGoxeVN6MVY3TFd1dmo0bVcwSlBpcUsvbmt1UWRQU0owREtmS2tHQUxOOG42SEpKVWFqYndwWDZCaDNmMHcxVUtoVk5KSE9WamxXOStWUU1QN3oyenlFNjhRRkZ1UEdLS0paU0pZakJ0NG0wMURwczNSdEk5MVRiOTlJckpna0E0NlZDQkNqeE8xSmJsRlJWRWM0a1JVRWFmYXkyZkNWV20rTWN4bUJ1WFVCSkZ2WmhtUmdNS2tHYW1iWGxhcDdEMlc2c2pPUXlOTGw1cllTc1NvY0NKVWYrc1djQjlOYng0b3BYMVhzRWhtd2lmMWJ2WVRsanJVcFJXN1hWbzFWbE1iZnJONnZ6M1B6bGVvTURUV0dOVmVFY1Q0WURTWGg4Z1hCWmZOS2xVVlJVVkVZZytxcUl1b2s5aHp4Y2ZIWGRzU25XaWtRcGpLSlBZaEtmNDBEVjBtTDBwa0w1a0IzZ2ZUTFgxbDlvb2VUN3lTUmtKQjkrV1FmV1g5VmpMUGU1cU4zQUt5SmpNSnFmRWZlSllmOXZTRUhrRWxJc25SY3JhYXI2aEVRYlZIZ0ErdXFhM3VDOUIrUU5EdjVlQkI0R3o0d3d6M1ZudHhCS2VxUWc4aUVFV1ZidVRLWlp2V1h0V2lGK2pMdFBCNUNrS3Vya2t6NkVOSXBlVytzbUN6UDVFeHdNWTlwb1c5aDY3TVdWbFZWOWpWZWt5eGF1bVlwV2V4OTJvbWg4ZDdsc2VmVCt0UlZWR0hXaEJDRUV2Y09xRUhSN2Uyd1hXN29Ya1BtQTZKNCsxdkI1SldkZTVOQXRhaGd1RFVvVEc1NjlvTDhZb0pjYzZ5YkdTRjRpbTBXT28rVlpjVitFNkNkVFZOd1lSYVZ6MXkxWDg2c3BHUDk3bGhhVlduQmNrSnpkNmxCOTlsRnd2TkN2am1tODBVZWd4WjNJVVFRcGk2WWJ3aXpzTFpJcXFXYlloT2lWR2xWMVRSVWU3OW9CR2dvc0xRQWJDeWFxT0REa0FYb1JnTUNCTlhDbXJONGFPSWlLTFJDWFNQK3huTGZWYTl4VU1HY2tsT0tzQktVMUdUTDhWRGhQckxHNXBGRitmc2g2OWN4a1lJWlB4ZGFaQm84V2FiYWNBM0RPQ0xEMDE4Nk9vcTF5bnhBOCsxMjJkTzZJN0VGTXFXSERveWNTQ0Myb1NlbGc2dHNjazVCMEtwUDUwL0RBTGF2OWp1ekVWeHFzNUpWQU9CUjRrbVhWR0lrWjc0bDlPZm1wVHdjRDdVMk1NSDN3alpQS3B2cmwyMFdUUkR3YzBGNitsYmxVNkhGRXVwVG1FMlhGODV0S1pybXI1azZlMEVEWE5UNmlJcjRHbUdhN2QrWXJRYlFlZ2hkcXNvb2s2akU0MGlLc1Nvb3M3UktySnVBR2pucUxITjZUNnBEeEU2UUJiMzk5OEUwRzFJWDZLSUlFU0l0djV6dDlITGRUdW4wOEkxUU4wVUttcTB0QTdKZXFZdWo2RFJsVDVWTzdETFh0UURXR1RmSkZTNkJpaFd0MitFRkhNM0NkbkNHZlY0ZmVPcXpldDdyblJPbzlJdDBnTm13RGcwRzdqeWJOTjVFWUlNOGZoWVpuTXZDVEk3blVBN2tDL1J2eGd6dkV6SnFiTzhqYWdnNGpRRkdRUVZqYjF0RzlkZFJXWGpsTmN6WkhSdERkNFFpdUhUVERUd1phcDhkcWdEbFhrRTFQVXpCV3pYd2pLWTFWMVp2VjM1UXkzZTRndWMxeSsvL05IcFBSb1JjU3FxSWlsSmlFcXZBQm9sdXlhN2pHZmI5bHhqTCt0RFNBVTczREc5WDNYUitlcGdxaXJnUk1VUkl4YnFqVUlVaDJBMkl0M2pvNnNBOGg3SVBTa3orTHFaazZtMWdFaFgyZDNLSzVPVG40bzI2NzU3NWF4Yk1LcVp0Vk0yZWhOOElmUmxqeWpEM2t2NkkyQU0zRWcyOHFUTFpsNmhZc2FpaUZOTVBvbUtkaXNJb2hLdmRsR0FkKzg2V2UxNllFUldJTkwydEhUMHIxVWxpYXdSNTNBYVZTMmNwVVJWQkhGUmpXZWNLckY3K2xOVHljNDJnZHluSXVURjh4ckprNnUvc3pWUHZndWdIZ1FPdHFsVmppV2J3Tk5vV3Y2MUwvbVVwcm84dmtHcU9jaXFMRlFHUWFWL2dHdDNmR2FDbXZSVmx3bWdVU0NLVTBjUElzTEhZNUpleDZEUWliN1B6akRFMnJITjZONktyQWpNVHNERnhZWm83TllZRlNmcHZxVlhMR3Fpa3ZnanBYaW5iYjIyV2ZmT2ZBbForQUk3cjdlSDkxYjZtclZMRVdtdE1zOW56NFZzMWtJSXpXYkRLanR5SzB6cmZaWk9sL05XMlZ3d3BLb2xRQkp4L1BJUHIrL3BSWUVlZGRGY1FsR1ZHRVg0bENpOUxxSVNSUlg0S25RdTdPeWs4M2dBZ2ZheExwdTN0ekFnQnpCc0tLRCtsQThSU3FEWEFkM2dSRVFRUlZ4MHFvSXF2VzNENHpZa0w4MDNDV2xXbXVhNTI3em1sU1J6OUtQTEl1TFdUU0VVQ3BMcjJRczVQSmhBUzVvN1d3STEvOXMzUTJpWTY1bjdDbWVHNjdOL0tza0ZZZXJIcC9VQUR1bVI2Q1FxNGhCemVQbTRJQW85a2pOQjc4YVdSMkRPLzdLcjNUcldXZDBuZnNnbGRXaXZaUXhOT2prVFZxaW9SSWtXMjByL2o5MFRmeDZ6aTJIejFVd1MyNGVRMi9Da1RwOGhVR3Jmc20yYTFYNUlFcXVZYWRsb2J1Qzk0YnBLbWpHbDV6RUpsN01sdnRIQ2NwWHdMRVl2VjIwOVVxT21DSzlaS0JZZEVseFVWS09xZEVkTkdVU0FUaGlBL3dnb3ZPa0FSbnZoUzYxZk5RVitvNENpUWtTSkxycGsvb29LS0RGT0hYZHRVcDNHS0VrSlpLdkkvaXZtVW1nUlRENzdkWVZKQ3NpeGJrYmhHOW5UenAzSHVveHd4Vkd4WDF2NjQ5UkhFMkQ1NWV1M2RtT0xlSXFxSXFqZ05LYWNpSUlUbk9sN1lCWWtGdm15bldWb3JIYldQaUZJcnFDYWV4NUFyNHJ4aE9HVlZOV3Bncm9vcXFnNkZmMjBPSEhkYmVzL3ZEeDVDWjdhUWh4VmtERko4RFIvMWVZVUNFNXo3WnU1RjN0SXRoZGxhcE5NcEZJc29XWkVKWTFDc1lucmRuaDFIMHk5YkZxM1dmZzlnRGhWbFdnaFJhS0lPa2w0SjZkUmdRM0FRT2NBa0pUNmdRUTV3SEQxUGFZWWNOWWhFUkVpWmdhREloSVZ1WXdvc0hUYVpaT3k0Wm9GVGszS1UvTVJXbHlJaWk1cG9odFViZk1yR0hVSm5vUlU3Si9hMFdYSG9qcWkydVI5bG01NU5LQjUxZHJQUkpVb2l2WUtxaEVjRGtrZEcxTHdMaUlXQkFaZ29CTTZCMlFOMThGZHRCOUFEaG5sa3BidnZTNFZTU0FKS09kQU1JRUxKQ2hzVk9maXBIWExLNU9JTE9YenlNb2dGNHkyZklKUW9LYStaZi9LV0syWUxsSGRmSDNiMUpjM2tSYUJLVWZVRHdSb01OclRvNGhvVHIxbGU5ZndIQ29nNXFhTE9ZRmZCYUJURmdwOEVNNWc2QURtMUt2UmtjK25xZitmUkhWRWNFNmpTa1NUdVpVaWNiRm4vT2drY3YrcFdwRFJHZ1hWS21RQzBKZlJpclhvaHM4Umpod2ZxZmZyZ1VyRDJDOTk1cHliSkd4VWpPQ05nNG9BcTNPUnAzbnRoS2xxRENGWXpEVDlFNUZvc1NHTmFscStKS0k2WVgxVnhEYm0rcEM5RDcrWFR3V2JGZE0vcGpKc2ZYRVFuT1QzaTVoeXpuSHlqcXNzTXBnNzZFSVdWVjAxVGdEU3VtOXAxSlltck1teDdOTlViSlRWZHFDWjY5SlNsaVZVWjA1K1NhaTVNRjNscElFTkgzNlNiaUJHZzVtcE9LY3FTSTlra1dWaXk0bW9sQ21WOWUzdG1TSzdRaDZlZSt5RDRLTEJrQmJQelUyYUFFU3NSc1RVaHFvVHAycndWMVVNSXlTZ1YvcEhyQ09KVFZ3T3VpYUlrSGtSUG1OeGZMYWpmRW9RZXQrWFhKQVNMR2tXRGtyWTBISkxtZDZsUVdDZEpQVjB2azlKbWp6OHBNdW05NGhZQmhwVm5LcmlZdFFlUkZRRi9YUjBJcUlxVVUwNHZCdFpUL3ZRVUR0d1hUN1JOV09iejcwYkhqZktseGJYaVlGVEZ5TlJVbmhCVkZVbCtTTmlKcU9hcWhmMDFUdXVLdUltUXhsclFzZGJhREhiVThsQjhYbERTZ0htamp3WlZwcXhQcTBreVNkc3ZVSzJHYnozV0Z2czdKM1k3aXdUaHdVSURlWkROTWRYN0JrY3dtVk9WUlFoUzZ4TnZObklvZkJCVW1MazByRk02TjViV1RFNWhoMGRDWmMxTmNkNFZjUmlvaW02YU8rWGlFcktJRGlOdlZzZmNaK3plamRmeWY4c3c3MmhJRXhUTkgyV0tOV0tYRDduOVVMVElCSjlTUVlaM1FKZE9YdGJLSkVScXkyRU1vSGxhWGdhaVQxQ1gzb0pwajQ2YmFuQlJCR2NRWlVOdFJpRkZHVHMxbXppUzY0eEhLS2RHdnJuUUptOUh0cjRFdEF4bU5DTFhLWlJuVHBScDRnUzFlcnZFSWVyZ0VJaUl1QjA2UkZ0RzJ4dHFGS0Y2Y211dTBtdTFBMjB5c0tteGttVk5SUlNVYVp2dHZRaU1YbVdvb1oxcml0RkN2VUVWT2tubHk4U1BQam01ejdzQkpVWWlVNGtRYzhzMWs1MFJCVlVlc3phVXBQVUNRWTBsT3VuNU1DMitCdmxFcGpiMzlHUnhaWURKYXFvZ29yTEdDYUpHbk1sdDlVUEt3cnlpSG5qSm8xU1hLL0ZVZ29wYjVFZCtDcUJtT1NYVC84MHErUzhOL2tHQmFyWVRMWlczVWlyZk0zZG1sam1yR1hYaHN1bVgrRUVFWldvbXRCTlp2TTZzZUxDNUxwSDh3M1RDZHJiMjJIbHlsc3hnUlVPWkU1OUJZdEphTklJUFduYVJWRnhCVDhuVVp6bFJweEVqVTVGYlovcnhsM2x3ZnNtb2RrMG9oVFFnaWYzanpXWVNRcVIxRTNrL0dhSEhIN3lyZnlRZFhsWGdwTFVLdER4ME16UWhzcGdxQ0kwd0dlZE13ZEtrOEh1elAwUUlsRkZva1JMcHB1MGNrb3VpeDRhR3NydGlSNkRjV09jeTMyQ09sbEVQeDJEK1h6ZFFvOGlQZUJVSTkzUm9lSmNkTktkS3liRWliMW5VYVRueWlHYjF5NVNVVTBmQkh4ZlZoaU5qTTN5dVd6QkFsUStLOTR5c3Y2QUd1d3hhYU9RWVN5aEw2a2pJRFRwcXBiRzdjdUZDSDNWS2NObzJ4UTFxVXUwZ0NJT2phck9xUk5WbCtHaU5odUpRZDdHLzFyNTBFTzFpb1QyemxyQnh2T05mUUp5V01GaUJqTko2Rlh0ZGtpUFNoUWs5Z2oweHFoRTdYYnFWRjJ5dEN4dWlvNys3YWFyb0JaMU1tVlJtYWtwQkVXb0xTeHN1ZGZzeDZmM3ZVU2o2dXJBenRhWGZNRUFEWHhYRG84MEVpSTQ3UmxzTFl6S1pmU01QTkxXN2JLcks1Smc1Q0lTVmFLaU1ab0VScHhpT1NzTWJFMkZPamxhRGd5Mk56ZktHbDQ4aUdFWGdkUmkwT0pYcUFEU2pWTXhyQmFBazJ4MGdYSmxUNWlTNnd0RENNMFdqdzVQOEgwWmJHb2lLeU9yYXVFVyt6WHpTeDlwNmVsU3hlc2JScEo4bGVMNk5IZFp4S2plMThBRFYyMjhickk5ay9YcHd3RlJCSlVVTEhFWS9pd3h2NHEwWld4dk5RNVFUcjA4aWZGR1IwZDZMeXg1TGxZZ2drWXJ5WFdnTVVKM2pKTHc4SUJBbkRocEdTV2wzYWprdTA5VmZWME4weXBaUWpWOHJkVmVyZGd3RTdGQlY2WkZYb1NkWnBmcGQrTzZFbWpKZUxzV3Y2UnEyZ0NoOTJPR0dSWHRWWE9xa0c1d0VsRk4vS0lLV0hKRW80N0N0K2ZWU0NCeVlCcVk1YUJKRzM4NEJaS1JsUmdqSWhLZFhVREFpVUcwbkloSWorVENLb2dPMFo0Sm02YVc5WXY3Y3VJcFZMRytqQm9Kb1Vnak0yK3pLZ2gxLzgrWFh3SlZPcVdSVEdqdlNiSDZVdVlReWxGUVR5b0cvTEsyU2JHWGlEcUVIaVZhM1VHM0ZpTVJVU2ZPS1dyQUI1d0FieXM5WjhpUGVpQmdRS1pEUnRITmRBd08wbUhuNjlXbzBvTVNJNUpzd1NoaTZSQmlodkNEcWtoVVZjY1RRTUs0WjlCMEV1TUZuWnVtTEVlZmZKTmNidWhUQ0Rja0hSNUlmY0hUOFZWYnhSUVU4Ym5iVEdHTG1pMGNncStPNkp2cXgvZDBpeGhBOFdyVTVlcG13d0dKTXlGc3VqeEdsZWZveEtCREJ3QW8xM0xvSVBDb0FHeUxLcW85aUxnU2h4TkVvNmdUUmVoQkVHY1NXQ3kxT0hudGN0T2wyWkMxMWlPK0JQbHlBTGk0Mk1FNllLZTBYMzdIRTZxclZyVGJxRWtqSDN4b2VnaE5rMlROcGgxVksyUHorR2JPbjRCdjhBU0dLZ0hsWStLaUNqZ0JwVmZGRVZGMU1kdjUxdEdCdHRJTmFNeisrWFBNNnA2TVVDN2FnYUlqM3h6Zlk2UlFOVWtWY1JvRkp4aWkxQWlpcXZZY0RyVFhoNmsxUVo3cDRGc1NHaUdrM25PTld1MU40Wnd5ZlA1LzdSWkxtRGlKdWdhaEMwOGoxOEExeXFIQjJwNWIxQktXcjUwU0VVczlwVUJWTk41dzBndFJuZUFzbEtKT3JhQUtZT0xiU0xaTnVvVURJckppS2w1VEExdDNNRThRM2o0bGFXMG5xaEZCSklxUU1Ga3FWZ0VhUmNRWk9zQWhLbHVILzY1ZTJKSEtPRXFVTDdGSGcyVHNGaFBNZkhzVGJzSDduRGF2Q0ZVM3p6SmNGMGdCOTZvc29WbCt0K3MzQ0JBbWhiWmVVV2VrRUkyYUlnMnFhRFEvUkZLQ1d0V3BFMFJreWRaWDZiZHB0YXowd0dCN1o3dDBna0VHVTRud1pEZHVrOFBLZ3kzMGhqcFV4Vks1TG9wSlhJMFlIa0JSbGRIWm00YXQxWHB0RXJNa1N0VnZWY3VnMms1NTdyTVNJYlFTZ3BCMWpBVmtmQzZHeXNadHRySzdhaHFxUU1RK3QzV3IwSk9TZ0FyT0dVVVVwNzJPbEJpMTNKV0lvVTYwZCtjeFAzOG1YZDJFUitlTG1kTzlFMWs1ZzA0SEhkYVVDZHBtclZ2bVJGeE1tVTJqaGFRRWlPQkVSQjJpcXFLS1UxRjZ4b2Vwb1pIMWVwOHZLaU9YS1JjQWxtK21WR0xWOXJEZ0l3bzNlRjlyTTErcS9VM1pKTEtHSENkT3padjYrckw3bVFBdkFkalE5dW9vdmFSU0E4QVFOU0lvUFRHS09oVVZzYUtkYnJRYmlUMDdYTnRySnI2dDdJMmhUdzRNMkxvNndXQjErV0UzZDF1dlppaFdORHl2cEVkSnhxSkVVbTZIcUtBaVc0ZkI1KzVaSVNHekdsWFlONy9Yb2VIcHFpMUdRQkZQRldpK21ZS0s2WGNEei9rY3BtcG1OQ1BabEF1RTFBd3lPeXJwM0ZPZTNOS2Rham5OeTFEUjFDN0VGSWtDVWFNS1NvODRRWHVaTVhlVWJkL2VYWjBmRUd4dnk5SC90cUlmQldaTm5wbUFyMDRoZnRyUzBJSkRSVUMwRnhHMWNKZklwd1hRMFZteTNIcE5adXMyTzk0NU9nS2hXaVBDa2xaWk9IbHovSHp5Nlh6RDE0NjBGU3FLaVpzS1VQSTkxeXRQNnJYWVJxazJ3U0hXaVVKalNZRXEyZDJ3em1ESldyVFNuWkVKSDRhSmI2dHJrRTRZdTYrK1p3UXAzUXJ5Nk9pUUw2cjFsWnZldUhUQ3hsNkpCbjFGTG9zcUNaeVYvdDh0Q3QzT1dneDhEQkRYTzM1ODlENFFVanRGVTdKWkcxVDkyS3RRYmMydE16UjFLRm5Gd2lyZWUwOVhDaFo2MzdKRHhTWnArcHVoL2dQQThzMFRZZ3JpQ3M0QXNXakttaHVCbkRNY1lNcE1zMno3YTBkMlNWRW13TngraldXdHUrY1BmNm5BMHhYQ2dTOU9YN1M0L3lhQllSZzViUHNWQ0JGSGJnYmlYTFJpdCt3NE9XdWVnNGhGcnArZ2VuTnprVWpsUnhmbnVkaFhvVVRLbTVWUlZhbHlzbXNQdWRhemhSa3EvaUpSYVBjZ1N2VGplbUlLZzZxeGUyNXZvdG1vVFRPZ0lzNDVZTnZXSlYzQXZGMElNSFovWkU4SThvN2ZITHArL2RhV28rWGZab2lza1BNVnBzT1NpZHVjV05tQm1WTGlJZ2pkNmlKT1hWUWxaUkZpajdWMEVybDhlZXNMV2syTUFYWjh5M3hubUtMTlpETzk5MW5nbU1ScDRxdHRGUG5rbXpWS3Q1SXlvK2pzeEZPZWNDNmhsRVUwaW1IZUxiU2JNRTNhcXlLQ2ZsbzFSdVRLWHg4em5nRGIxdVNjYUdVTDdFZWxmdHRXeC9UMWp6dG1BMkVIc1BiL2FJd1pIdGRzK3ExWGI3cFNVeVVrT1JxSzlUS0tDZjhhMFUrQjZ6RnhFQ2Y5T2RZdW9NVnFKVSthT1JMTjZyZFEzOE0wZjFWTmtLRGFHYTFiUzBGNTZPdnlMZnlVZmZYV3JZQnNpVkVjVlFGMHRQd2FHSXVvUnUxMklEM3U0eUNPYm4yVisxQTYrT2pPenM3T3pvWHhSQUZoYmZzUDltUGpnUGtuWGJQb3gzM0hhT0xYTnI0RUN2MnFOd0UwR21IcHRZZXJnTXZsME4yS09uV1d1TFV5RVJHUnk1eVlkNnZTTTI3TzFHWklaYmZORXYybTVpNFdYRlhscCtRZmE1S0pKS3hJRkRDbGtiVkhDTkFvNWU4K241Z0dPUzNWS0tkZlBuRldMeGpJUkNTeHRIR0lXRTJ4czRoRTdJNktreGhsMDNhSEIrNmZab0FuWGRuNUJnVmw3dEQrekJnTzMvYjkzNzhMdFlNZG84K3l6T3ZJbjIrL0VqV29KVTU2TGFPT21pY3BDVUt1VWFNU3JXQmtYWkxpclpFUVFrajV2ZnAyMy9LblpqUTk2LzM2dEw1cmttTzFiZldSa3BFNW1lNkpHLzhTRE1TYm9pUllTNTNvMUpSNlZKZTFpY1VZMjZmL2wzSStXNnNpRFlIOUNITDR6VmUwN2R6eC9tT1Y5QWdzU20xNzU1NEhET01KUzNwbldyUTlXazdOb1E3blJFVWlxczV3QXM2SnM5ZE5pYTV0dVU4Mmt6Rkt5RDV6QWs5N1gxTHRmZGxJU3Q1Y0VuUE5VUE0zTXFmNFpvQkdhZHpSMVV3bWxYRktIazNmYURTTHQrNGhlSjdzUlZSanI4V3lWTlZNWUpGazZJcUk5Z3JxQklrS3k1NGMvVERBQ0F0bVFXZm5BSFN1dDRJZDNhOVEwZ2RtYnQrODVSL2ZDK1Izc3IvV1NkbGtpcHUyN2NwSTFJUjJNRkJ5cW5peHlLanh2MjFTaEFuRFdhZUhTazRSNkFzdCtpSjRnbS9VamFSUTdOOEdKZlliaXZJSURWK3paNnNsdDlQaDZUUU5vQkY4SUJWemVSOE0yQWZkR2NHdmFsaFNJVnFVUWFQMGtpb3NKREw2cWtrZUFsTi9QdTQyZ0U0R0J1YjhSd0Jrdnk1NUZFOCttMjBMRjZZdjQrRkx0dHpSWW00R3BrT0FKZXUzNDZMRE5MbkcxTkloNVVITTliV0VaNHFpeWwrNmlNL3QvMUpRS1lld1NLR1BnUFcxdFBtM1VWWFBWa2txWHgzQ0x0dHk3MW5qdExSeVROWXpBWi9YRFFqTFhVSlhTZ0tOV3h3b0twYjJzTGlRdldzUklzdDJUdHVhcmpmakxkajZJUmJHR2p1eWQ4OEk4cnBIM25mT2hWSkpTeTR4QnVtM29rOHIyS050VXJkRW5DaE9rN3ZSYXpEZlhxdExpQ0txb2tSNzJsNDNuYXFGU1FZelZ2Wm9tdFJhMVk2NWhvMGl4bWlBYi9yVVViN0VSdEpwY251VHpJYmU0N04rVDlmMFpDd1hlR1Q4cUhNcHNvaFlIdDJJSWozV3d5RTFNVlByV3FiYmRpeEpFeko4TCthZ0Q4Z2FYa3hHZmM4STBqWDdoMjF2dmZtWHRkWWF4aUFtdG9ZYjBBekJ6WGpDWmNmSjJpN1MyMnZBdnU3czdCcWZDQkpGZTFoSDhxMHAvb05oMXNrcHBPeElaRitseGZSTlVxZ1JiSDBjKzFhY2t6N3ZtMVFOL2lxUHZ2SkZRNjNLRUlqUDdEU25Wa1JWVXJjUXNSaGNyMWp5T1NQT3dMbmVibDhyWEFJR0VEbmUvSkRIWU9GK2hBSDl6cS9nckI5ODRyU0NPckV4YUZDSDZlYkpMWWxXZ2hCVm8vV2RvZGZLSktNNGpkYU1Sa1N0QkV4UmxSR3N0V0lKVStFTnJWRGtTR0tlcWk2aGNreFNuOHpzMXljOVgzeVdSdXFabkRxZFZRWmFsbmZXV1lOeVdHRDI1QVNQcy9jL0JVYlZpc0JFTkJxcG5QU0lpS3E3N0s5Y09lMXAvSnJPOWJaYXhYV3NPcHIyL2VrWWZoT0F2Njdqc21CeDdvRTVuTis5dzBPdk9CVnh6aEJtb2ozZ1ZEQ1FiRVNkSnZpeXd5RVRaaTNQMGozSFhFUEdOTmhYbnlwMEtueEpGNVJwekIxamJGTDZvSVI4YXk5K2JnWVVDdW5LbjBhK3J2MHovVWw2RkJWTk9VKzFzQ0tKNFFVZ2lrUzBoeGhSNGpWTHNocTdDMTRoMHM3UWtNSUhPZUZGVE82ZUJSZjcvd0w0SHZsaEZ3SDlDVXZLOURRQmJ1b1dGNk9GM1FDUlNHK0NCRGxET2xqa05JV0FaVlNlS1VJK1RleXpGRVBaaEJrT29iVEpNRTFRZ0NiSlRjOG1XSlozV0V6RiszclBrNHBXVGFyWWIvQXdMRTVUSkZkVUpGWUZGWWlUVkdBUmxXaUdlKy9Td3plVFdodHhPcHc3VklHdDJlOVZ1RmZ5d3gveUZtWW5YMzBGMW95L0l6OFB3SkpSVmNTNVZJSXJDcWhEMUxMUWtOTlYrYjJiK1l4WlVla1UzZ3I2bXlWdW15V1o5d1JyOFpCVy9DeHFvSkpRMVY4TFZDWmxIbEpMd0x5aHBvWjhIVERuNFhNdUpRZFJxZm8yaUdYV29rcXRkRXlpYU5UTFo3Z1NZQkQ0Y251OUhFSGFaWC9uUTg3NnhQZnk0WEVSc0JZWWhQTVp6bEpqTkFGR0JZbTloazJ5WmtFUncxd2FsRHhhN2tTN044K08yY0FCZTBzYkdUWlNnenMwKzRvdTlnazFYMjZxTXNCMjBmaXBqMURsMm9jNmMrVGQ2eWZhdUJSSlpZV1JoT2gzR3FORXA2NXF3MlFsYmlyU3R1SHBKV1RwcW5ETTBCQ1loOVhKZ1ZoNjlZZC9YYmV5NWpJMzY1RHAyZnpaZktTb2diTU02Z2RSbkJNWHhTWEF0YldZUTlSS1g1eUZZRXJiMXBwdmtYVnZvSmJiTTQ3SnBUMit6aHExeWJZc2lOVm1wV2lKR2NLRm96SWYrbkx0Z09lL2pSOUZWU3hLMVl1b1NEZE9WS0xUTEduVlJYRUdrOVhKa3lvYUMyaDcrMUE3RHczY3Fnd2tyVHVtc1VjRU9SWTRDMnBXVm9jWmRTSlY0M1BQK3AyOVpCZXFhaGtWVTlWMFZPbEpBV0FCc3VUS001Zy9Oa3hHWldGVXpYVDI1NjFDcWw3cVFZcFFwdHVvTnVlYW45d2tJTEZqTFJOU3hGamdHYXYvTXQrdlIwSHAwU2hvcitrUlVMRmVUQ3BSa1NQYWl1NERPQmZhTWZoN0o3K3pmNjBzWVBpc0gvS1d6Q0h1Uy9UVDBRSGN4TGZJVWoyNEdWdWRpMWJua2lISkdpMnpLN1plZ24yTXBqWlpSNTZ2TW15UndSVHU4MFZoTkhPZ0tnQmR1VHF3cHFhcmFTNWlLclRTcytJNTd5bk5ZWXVsN0NOdFp1V1dGc1NwY1lQMFlvRVR4S3JZVUJYcENldEh6Q3pJbHNIUXlwVXJUWU1ZeUdILzZwRHBQK1I3RllkY0Fnd09EZzV5SHBNWnpyN0JrcWpXWk0ySnhiQ2pOWmNySlR3QW9ocGRUSFpreVF0WEhVTU5vbWkrUTJnMlU1bFZWOW9MRE5JUVNqczRYLzFTeWJCNmFDeGZJTnU3bVFDWjFnbE9FWmk5ckFlVkhpZEtpbXozUkVXdEV3VXBoUkJGUlp3VEpjd3NpNWphbWR1cHUrajdsME4rQldlZDlaYWlRK0tLdVhNN2dJNEVsZ21FWnZBdzNXU1JzK0JKQ3Zxb3BxaDFLdEIxdVVlYnBoWHBmVFBKbEJ6RXlHVWhDUm9TU2xURVJxazM5S25UbnpmL3c1SzhxZndxQjRHcGdMdUZjd3pMM1V5T3UvWFU5c0FWaU1TZXFNNkJ4SWpyc2ZhRTFpV1dGSjJ6WnNTT0hUUHo3QmlwLzFkcmc2ejlxOVNQaFIveUNaaWRUTDloQ3ZyOWZLWjNZWkJwVDZLRWlWd3JlWEdDUzFscGsxY0pGZTlRWkFxUTAzLzExZ0NWU1pSZmZVK3B0S2tESG11dVNqS2hFd2JiQ052RVROKzhzRVZXVnRaUUx2MXF2cWFmbmdwVXJSUWtaM0JFRTF4UkRZeEZSTkFlb21NRHU3dE90WEZBV3Z3OVhSMDlPRGhJUndmY1JIRW13aWhXZnFzcUxvcUtJVFJRME9pY2RWOFROVThsUnN3Z1NDSzRtVllXekdHT1BraUdhNVhac0N1SFVLY0pWVjg0NHhGUGFhelZiSlMwWU9LY2ZGaElObllLSlh0Z2xEYkRraGt1UzF4RW5QVGdWTVdTdXJZMElOYlRUell6dzk2SmRDODFXRU1uMEw1L0s2aDBtUFA0SHJPajJlaVhtTWs3YUg2SVdaUjQybzRFeTNqRUtORzhXaGNSRmRjYlkySVVxODBWY1hZbnpXQU9YbGNTVE1GYktyMkJKK042QytmVTZaRGNERy9kR0MydTVZMWNXY0ExYUpMTHBodUp6ekxuWmVZSzlzV0hOa2F0b040eUlhSU9RYnNONG51MXBJUzBvRVJSbkU2T0g2cmRUTTF0aEFGWXZiK1JpOVBQMnVYNHdhcHhRSjQ0UHd3YVJUUW1QejB2Z0NLcXZTNFZSeE5UcVpXaURKZnU3RldUV010NDF5VldQZjVVN0s0c3JFTFdLS0V2RTZybWtYZFZ4Q3c3WjJYdWEyY0RvQzFxcXJWUmlGZ3BtQ09DWG1aOTk3RmdnMm1VTkJPN2xsY0RuY0w4L1E2VUEza0xNR0ZDRVptRGd4MEMzNkllVmhydEpUVmJUQjFpU2VubnFLS2FtaGFLMUt3dXM2YXlpVnFhWTZRUVZXajZiUHo2UW9RQXdXcDJ5Zi9rMWdQWi84dXpWRVJLM1hFa1VKckVoaHBSY1pJelM4NDBvVGhpRklldEZlTG9kUllOSWhySXVVNkxHZ0VHRkJqWTd6cEV2MGNMWjNZZ29ML05kRXJPR3dzOE9GVlJTMWFKTllMR2xRcDdFU3NRVGFjS25seEZGV2ppK3lqS29xK3ZuZ2RQSksrYTlkWkhacDQwdTdrRGNBc0Q1R0VFN2tvZjgvRWVESXVZUU1yV21reFRXYVJsRWFVbktxYlh5MldiOVF2VTlFYjd3dWVleVpheHB3UTViMXJMMTQ2T2pzRU9WZlJibzhOQXd3ZnZtVTViajZqVHFNVkNTZEM1VklVYnJhMFplZkhTakY3SlZsWERGdUlrcVlDdS9EbFVCZXU1aHJEUmJPMkNtVXV3RE9tVk5FUlZ6Rms2Q0NSK3poR1RjckcrWVp0b3A2SVduaWFIcUNOT3JRakpNaVVPUldTTEhWcGZMS0Jlcm5OZ2FnenozUXNNMGlFaThOdTJ6VHFOcmROVUZpMDRROFphMDA2SlNFS2dwYlNiaUV2TVZsTVF2cmJnaDgyc1QycTZjRTAxR2xTTUFhWGxURmQrWTFNSlF3ak5sbDRPNU9aUG51Q2IxdWNzcE5PcE90TVFxWVY5V3BJTlNWWGZndUpTb2FjeUpWL0lUaXpsSHdDR09PcDdZNXJQUFNISUxrWFlnbllNNWo0bjMySTZWVXQ3Z1JpZEpkQTFtcm1TSyswVlV2MjlpQUVIR0U1bXJrL0xQMVZPZEtEaHJiK3lzVUZJWGwrb3UrRzJkenE0WVhIN0VKTGd5bjZmNzByT2VNaG5Eb1MwcEV3amxFYWFkdElVZFUrVllQU21yR0cwY3VKb1FPWG9SRldteUhLNzJSREl1YUxNSWdydDhKWXhUZTZlRU9UYlhIRmUrcmdnQm9nTTB0RWhYMXloQ1d5ZG5talVjam1td0t0V3Q0ZzY2M3JnVW8xWXRPVU8xV2pwUTZCYWM3dVM2NDJjT0V5YlE2b1NyZHhHTXdtQ2dZVFNhc2ErUmF6bmRFZ3VhQ2cyZEVFOU5yTkZZb3M3eEl5VVE5SGVLRVF6RGEzSmtjVlJGTlZSSmxCck9OdzYrUUpEdCsvWFZ1T1NMdXJZVWJIbEg3NVR6bWR5OFlzOW0wRVM4S2YwdjNTSVU0a21BRlEwbFlTbW5HaGZYUTJrN25DN3ErRXFZbFhYOE9aMjEvZE9VMS92MkZSZWx1cENMUloxS2dYMllGajkxTFhJMEhBdU9oQ3pxMVNjYzhueVZYV084ZElTeVdxdE1EVEg4Sm9YbU5VMFFYczBwZ0hmZzNqLytHd2VDZjFpQlRzbVJuejRuTnNTaWVKRWNEM20yMHF2V244OHhONHpaMkMwNkVRRVJydE1ZQ1Q1bnhDTE5jeEQ5YklIZ3lTMG1FMUp3MER5SjVxWXlHcld5OTJ6WDUvdHJoUUs5VmtZbGt6WTAxZjNvQXJXbjlzbHpLWGc1Rk9TM3FHa1V4d1IybjRaV3c2dmpVNHNsblhwV0daMkw1VDZXOUxSRHVnUXZnZ2dNTjE3UW1pRzVrYVpaWXBQMFY1eHZhQ3hPeUhoeFhwOXBVSUxCWTFSam14TE01VkJ2bFU0eTU2eXIxRUI2TXhaN0xQMi9HbW42bk9wK01EV3QyOUFzMG5UMXpvMk43RUtvUUErK09CVEtYVEdDVG1HTXdnNVlsVjRUbXc5MlkrTEpYVXRqV09sNnRQY0hLajcvaTJoa3J2MmIzMEk2Q2FNUTdBRVRvZm9GeStoZjdGeFNBRGZvR3VxRzllVFFOV0t4aDZ6VWxRdGJVc0NaK1dPS0FJTTE5NnU0RU1oVE9hUGJFbGwwZUJEVjZOUkRzQTNLRW1UU3JIa3JGU2prYUdtZ1BlK2tlRkVTYkdIME1oOGh3ZG1qcXE1VHJrVnFiVlZOQ0ZsYVVOSkMzRUlmTXl0czI2ZVNma1owTkhHZ0p5aExCd2pUZmJJeWxvOU9uMjZURDhjWElwQW9WeXlna1g5TjRIbDFFT1RNUHFrTGVoU09xZDJTOElOV1BleURINVFKNEtvak1Za1daS3Y1OEVIK2pKSWhOQm9saWg2Nmp6dTY2WG5ScXZpVmhCcUVzN2NqaXdOUy9neEgxWVVTeU9iWko2WllLYUg0UzZ0c05CSzBuRnFqZTJkT01SRklpSmJOMWZzZ1hGOTdmT1l4NTRRNVAvcWxKMDd4My85U1dEN2RnOXVSWDkvZjc5cXYwTE9xWGRCS2tVUXNFVTJwRnRqRXJwSmpXQldzV3JzZ1o0cnN4eHFORk80eEllV1JRcm9DaVg2VkhpcEtQNFNHYTUrNmdxVU9MR1Z1L3NNdGJhZG1uWXlXNERCWi9VSHZobG1iTmpSbHJBbGFqRFlISUFYQkpmaFFURkJyUm1kTXZXejNxZVlnTUl4bloyZG5aMmR4NzB2Ulh2M1o4YnczWmU5NlMxdk9lZDNBU3lLczhpMkw1NmJyR0VEVEczZWtob0ZvT0pRVWZNRVZYUHZMNE0yRUhIMHFPZ25vMHQ4MGNnSXVCeTNTdDVjRWplVmxtK05vK3lxVG0xeUVtQXhWRWwyc2wvaUc1Vm9oTDZVekdvQ0RmK1JxSWtlSWlxYUFNbjJPVVpWMFJoRjFmVWc5dFpOK3ZXR1VFZlpBd01EQlpnMTVnVFZzeG1WTHpUK2RjTDRXOUUzd2RPemNaWjNYVnhiUVNRdFgzZFYyMnlTWVdLTGtxYmxHSUZrQjF1ME5DVkVRV2M5VFRhRTZrM2JhNzU3NnFOUitwTFZya2w2TzMySlN0YTZQZ1FvU2Q3ZHJhQjArcXlOdWlENDRLZHVzRVJIdW1WN0RHc0w2Mkx1QVkvMnFJSlR4TTNadnVzNVcxbzRQUDVzNjk3dlB2YUVROTd6cXg5MGRNZ0hqMlIyYm5lQzBhTkRjQXhiQTE2bXJ4L2ZhM1hlNGxKbmE4TldpenJKQzkrTFUzVlJWVVhhTm93bThIak52OGk0MGtidVVabk00T3dPSnFSOXJRTktTREhka3ViMUZxYk1FZjJhRDJsUmdWcDFmSFptb0k4d2N1VG8xU3FmamdZSmw0UUlzaDZlVHFJdEIxYWF0VWx2MnkrclZjNlNBaDh3enFpWFVyM2cyQk9DZlBVMUtoSzlsaE9zQUdCeC8yQXVPd3dCaHJkR1M2S25wTG5MTXRmVzNkRnVKNkN4SjllcjZxU2RnQ1cxeTh5RllFckFCM3p1cVZ5R2dZUlMvTVJYY2FncXV4dXdpcE1zbThydzJjZkg3T3dXN3hEYkVIdEhISmRaaUlGb1FYY0JzZkJDNmdydG9qcDFpc2JST1RVNzZsNFlHTWdjMGpsMm8zZlBDSExUYWdGWEZSWW1IZEp2Q2FycFpwVXVsMWxvS3Y4eXJ3cFZFU2NxMW9xaVcxVlExKzNNa095SlJ6cUFRRmVhSjNQWmNnY3NZNHRjNUdFamRReXc0RllwOWNEbjFkdUNTYUlFbTg4eXJ4eWJlVEdGdklySmJHemk0dVZxWFFMeXNqbGl5c05LcGMyaHNoeFdGRlY2eHZtcEpRWjJXbDd4cUgyTk1LRDd1Y1hmQlJkMjdBaGIvMStoZXptSEJSZ3RKanYxNlltOWFkMzNpTlViSU1Zd3pxVTFnOVFhcXFjaWtqaWM1OFkzQWQrVjMvakNNOWFlci9UdExZNTVNWDE5MWVnbmIvYjFEb3BWUnhyN0w5U2tZeFBvQzRZKzhRQi92cjFOSkFvTzY5RUx1TFJDdkwxam90YTgyNlVJOEpOdG4wdXZVWnFhVHRabkZiUmZjVmszSHIveDN6WmU1VXR5eXVZVHd3SXhIQWhOdi96RDFubmJZbStPVk5xWktHT3RHTVZadzVBZVVSSGQrYlFqR1ZQV0xpNzRyQzhhWlNFdm9DdjRJcXBLU2lOZ3RsM0FuTzdTV2ovVWpLL2MrYStaM2I5Y2ZlREJtc1IyV1UrdVp2RDRKVmR0MXVUNHBzaTBsVkVKVGhTMXRZM1VtdnhGRWVmaTFTTWJrbEczNDNHZ00xc0VuVUQ3eXYxWWhmdmVmLy94UnkvYThDeEhENEtKckM3aTMwdzNGTFV4aEZvS3djeXRCT1FncG00dTNZcHEyL2EvbXBFYjRTZEh1NnBvYTEwSVBWVG1MTW4vOEFRZit1eVBJZVA3QXFITDEwS0oyWkR5TkJwV2xOQmlOZHNIVzY3TnNFTlRKb010Q3cyNUZWQzBZbTVCSTg0YUxJcDJpMFRWMk5NN2xNWDRwRTNBZ01nUU1wU1Fpd3YzYTZ2eExleFdvS1Z6b2FOSXNlQWVvVmZSbnBUenhLSldocFpGbkZNcHZXNXROUWpWYXo2U0pxNXA1bXRTMGkyYVBQWHJ6eW4xdnFURDdZVnZWRlp0MGp3aGtQdGl0VUNGQ0drWmhkS1d5OWV2RFo0UTJvN28vclJVRmFxcEwxTUNsRnFhM1VMdjNTb09jY1NyMXk3M3dNaHI5TnNnQ3htaVhZdnkySy9oOS94d0Z1RE15K1oxRENxR21ndFh0UjIrVkZIdEVUWHBhekVoZTU1SWR5VDJpS3FLZ3hnUkVUbWlMV2N1TE0yUlh2Vm1YZWlZUVpXOHVyNlNKa3lUNzh1OWxkWTB6ZUtObExSSmdxVTJzdlZzSmtEd1ZzMVlRMnlOaE1zM0lTNGpNZFJjS2lmZHFyMldVK3V4S0xBalJqVEtsVmVHU2VscWIrTmNob1pnS0h1RTdZelIxTnJMRk82RThta3hHQ3RNQjVZejVBcUVOMWV5U3RMckF0M2lYRTllcGxFQTZlbU93NVpaYW0yWFVhc29UeVBOck0vZ29QeW1sK2JZdm9wQTV1Vngwem1TcUF1dDUwdC9janlsT2tTM3R5bTJabVFXVVk1b3ZlMFZGZGR0aWZhOFNFV01VOVpkNVdFcXdDMUQ3ZTN0N1VpN0taT2hsZnNWZFZMYUJNUUpVTUFKZzJRT21UcGh4aFREQUJpR1FSeVMyaUdJVTVHVWFiTWNnd0RSTFpuaHNtbHIxbEh5K2VycEM4aWhGS3J1c0NIeFFjaS85NWxTVDI5NkRiZTFlekZEWGgrc2VnMnFVREpMckxWN1JsTUwxdjdPRm03S0M0VklqcHc2VkhyODZKUUFzSTFrNkxaak9rUlp1RjlCRHYyN2J4ck1INlo3UGpmeVMvMFlpVVdFU0l6UTZ5S3A0YnNhZXR5SmFLL1ZxNk1idHVVaTd6VFhYZGxqdHp3c1pmb3lSc1JEMDM3SWZoMkJadkFOTWpKMGw3RkxtS2dQQ0ttVmRoOVp4dVcrR3NCMHhZbHpwSVlVSUU1NlJiUW54ZU9UZDJKdEJLeHA0ZC91dUtwY1pXaG9pSUdWRDlvYVZBZW1LNm5seW1DWXVZczdzQklSQ0g3MHFWZGNZVFZyR20yeEUxSHRqczRTdGs0Z0duZEU3YkZsZDNyanEwWmFvK0loMlBTbXp5blo1TXRiSGxJb3VHR2hrc3hKYWJtRHFxTmlxSkNMbVl1U3JaeGFialRJamV6cytDenZQTkZ2djhJV3dPMngrazVWN1JHUkhxZVNFaUVHRnRlRUc2ZTM1eEczREpqNGJSaHFwMzFsQ2J6UEcvdVU3czJJT0JCM0NRd08wcEVLMVp1ZjJUcGxGSWlJY3c1SmtHc0QrM1NUTWlFQ29yMU9WU0tnY2IwcmlhZ0NTL0FwSGxqTVZnd2k2ak1xSzk5SEpkVThDYVZkNnJEeWZuNDNGc2x0Q294dWRvNFM2dktCajg1OTJwbTA2bzBaRDJTQ1Z6UVhmaVc3SzYrNWM4WGhUMDBDZUJ1MER6eFVxMGk0WitWK3RiS3V6QjhXeE4xLzNERHl5TGdyblFvU295VkN3SWx6RXVtSnZXSmxoUmJKN3NZWmxyUnQ2eXVXOUhWbFJWRnlJSDNaaXloUkowK2pycXQ5enB4blBXQ1JRUk5GMWlNZ0IwMXFYcm4zbm1Zem1YSGdRN05xNjFoY1RJOW5FcVNXTXhGUUYyMXBJeUN0cWdPS2FGU0ZIdWRVSFZQV1hRV1RZRTBwaFA0Z0hKalZFUUR1MzRFUVYwQ0hyUjhpVzJEU1V6T1hvZzRyN1VZdEJoUTFpdlM0aUloVFNRc1o1c3dDcWxxQTZVbmFtSXNlK21xYW5heU1iYzltOEtuOU9CYm5TbDBhR2tCS3FnUlBuMmtHbW1BdFluMElJZmhHVi9GWmdtLzRMaXJObE54U0FrZkdibktFSVRxSjRoeXFUbnVzN2lnU2NkTHRuRHEwSjBaRXIvVHhjdmZ6OWRPZ1dsNG5neHpHTlBaV2g0eEhnY1VNcGlMY3lZeUc2Uk5RdFdJdkM1V2tQSzRGRzFJNHdrQmFocXVSN3NudG0xdE9YUGtlalZTU1h2MVV6S2t1K3gweXdYek5wQzNVN1FLNnpGbnhYYVQxMldzWE1MY21WSi96NldGazJtYlZpQkp4MXFRWFVLZXVPeldEQmhmcHRpVWJEVnFtM2RNL0xrenEyazF5N0Y5czc5TDBOd0lvaXdhdGdLb0RjZng2bytzbUpXb3Q4WXhZZ3dCeG9tTEw0aVpVRVBIVHF0S0xQREU2SzA5RXZiNkEvTTVXNGZHV1lHLzI0eTM3MGF3MWRVcHV2dVU3QWpsV0VtZzJQTlpnUEdSak9ETmtVaUdwTVlGditpVTdvc3VMVENWelY1RlU2eUpSckRkeDZzWXZxcjBxU3B6eFMwa0ppUnhsM0FWVytyeGpiemxrUnlyNkdFd3NNdUw4aENzd2hKeXRlT1FTL0ZLRmFLanFxbGtuN3VNQ3ZZSk9zbktYVWg2Vk1EbUZWM3pCUHRSRUMvaStYRk9GcDJxbG5QVklIa2xiaE1SRTNqZXNDVVRxL0o2VHdyNitZbDlvOU1IaEtVMkw2UTRIYVdZZDVwS0lwaElxRU5lam9MMXhacUJsL2djVTJ2ZHZTZHVtL0dIQitQU2hvOE51d28zcTBsVEhuZHFUUlhYV0h0MVFKbFVmT2FkSWpBcDA5N1J2cmd3cCs5RHdnZHdxMzNSc2w2L00yNzdjNDZ5UmlqWWhWRDU4cUJ6OEdzd3VEenRidzN0Q2FubVpjNGwxZnhObzhPSFJKM3NWN1JhaUZlSmFKc1FBMWs1S01ONndRQllkaXIxYngyM0ZOcWJZdThDUTdGY3JLOWNpUkhZQVdhVS9Dc0JFY2FpTHRncEtqSWhvTk93NGdLVkJFVksvVWx0VnBMSHo4bG92OTZadmtncklrL3RCc25uemxGbllKSlRjWWpGdGZXaEp4L3RBVmJMaGsxNnZ6cGJ0WFo5UzhENVh1eGNib24yU0JYV3R0RnR3NHFESE9tY2xCOHRSTlF2U3E4blpkcTJ0dGFOWThIVXNZeTg1SkExelFPWXBUQVJBMU9WVlVESkd3SlpqVkNFcVRsSUpybUJMVlUyYVVoY3dqYjVHdGxKelpWUVc5cW1UZnVwNWxScno1alVucVJzRDZTc0pQT1I5TS9ndXF5ZkowUzg3cjBWZERIS1NvcFhWRGsvNHlWY29QUVo3RTJ1QklEMnFLV1JLS2dvdGF5MS9qQnhLcWRyNlhRZVByVzJYQTFRZmtyRzlnNm1FQ3RDSXBuckpCSGtYRlZjTUVkR29DZlNlTkdOUDhLMGF6N0lmVFlJUERldUttRm1na1hNaGhRODh3WGUxOUFIYTFmMUxwR3JrZEZjS0diZDI3KzJxNmt2d3BVU2V5MmVzYXhONkRSZEhkRWlNRm9BM204cjBpb2laS0xiNGhzTEtPamp1ZzNEMDNER2o1ZmE2WUNldlRWaDZNNld0cVJkQWJrTk1kTGx6aUtUbGdSS0tFWEZianZ4b09iQ2F6aTVQQWdTMXZQWFZmamttRXFDMU81K3YvWnNzczFaWUZwWEhVY3VDNVZFN21ZOUhXRHpYa2FiVThpQmw0WlFVUHJWU2IwaU5QM2UzY1lkMnp5QTkrOWg3Z3FTWHUwT0Ftd0I2SlRYbEZzR0plVTJpRW9tcE9ZaTRUeVVncWVLY3h0aSsyY1JTbnNKaytnUUw4K1hnVmYyM3BJaHpUNXI4c3BOY2pGS3ZabWFzRlM1YVhxdXZnT1N6TlpVTFBTc0MxaHFrdU10MmRKc0hpL0Y4dEtKNk1oSTdJY2JWMmlPVURqb3Q4eXJJL200K3Mvc1FvUC84OHNYbDVyQkVpTTdhclVhUmlFUDVtRk5iV05MRjZKWnQvak1YaXE5V0ppZWtOZ0hQeGg5SnU1Q3QxYksxL0ZOQmZMSnNDZ0dhSVJWUTVZdlVYb1JjR0pvSW4vNWRjczAyVjltNWdITnFYY3lTQ3NTbGhHaUt4cnRuRVUzS1l3ZHNRWmNkaVhjN1VFbHBrbTVyYjJ2ZHNBemxrUHhXcDVXeEpkR1dBK09LMGNPdlhacGdiSG4xbTZvZFU2Z2JyVDRwRSs4cEswYnVDdGFpV0FFMUtaWjl3RWFORTBvSDRBcGhseHdSU0JhMEQ3QjE5bzRyclRWM0FnVkV4TVJ2dEp4dVRPRWhjNjgwb3JDeXBYRUFzbnJ1MEZoakozc2I3UjFmZlZteG9qK2RVa1NkTmE5MzFrb0RsOXdRaXlwR1cvT1RUNmtJYlR2SGpZUUU3ZW1xWUQwV3RzcjJVMVV4Vyt3dmJNOGM3U2hRSVFEZkRCVnIrZVMrbXprYlNqL3l2dHFESkNMMTFTSXpIdnJ3ZnVtMGJlb2NxRGlIcGk1ellGQUF4UmJIbFI0QjYyT1BPdmpkK3J4ZWg4Nm5mYXpSeGIwanlBSm9BKzZuQTc3MHpyU3hHMUwxTFJKZE1ueFZFVnNEeWE2cWtSNHVFNVRSYlNOTENENjk4a2xJbVJJT1plSFVFTEFtN2hhSWFtWkJGWHhvOXRFSFBpVjBRNERRcEZGRlZmTDc3NU9GMENCMWVjaStveStoM3FyVGc4VjdHNFFRUm83WmZvV2wwNk81dFQyVzVkVG9QcDJNVzZYYkZENGl6a1g0dFZsbEpzZy8rS0tRaTd2YWlHTWJONmUvOXk5Z1ZCd0xCcUZmVnJ4emhabGN1ZU96UkNrTm9kVzhXb2RGZ01ERmJvSElzbTJ2R3FidVJ1U2xDS3VNWDVJdHFVK1B6V1VHVmdjYVdLZzJsd0trMm5WZkNtL0x1WDJmSGVmN3VtcFk3WkRUNkFrR1psZXJBTjlMcnRrK0FTd0lxb0pLajRWL1JmUmo0R3lsQ2x1d0pnT2ZBS2RtYWVteDZ4am9oUDBLdG9iejh0RVBPSTg2NlJqczE2ajllbFB1WkIydDdnQkZwTWVxckZKMExvUC9iS1VIWVhSbVhGcjZ3ZFhqdEdWNGloNnVmaTh1QStuWHNueHFLMWcwNjZNbTNvZEcycXRSQytxV2FINHp0UlVLSlJTY2JtaHIyL1lybk1ab1FIMG41a0RSRTlXbGwwOEZ3L3hsZjNFbEhLTmFXdVRxL3U4b2w0YVZUOFQrL3JVQWkwMDZkYXVLTGZPT0NxcmQxdi9XQ3ZNMFJvMml0Z3FvUks3Y3ZITWtrQ0pMeGNndHFJT0tBaFhRa1BvUE9kZE8xNjVxbVF6cFRZMEFEUGFZT2NiVDlEbTJZcU5nOFVKb05wdmVoN3hBeHF3anQ0MUdKSzBJYjYydE5XcXZjMmIyV3ExSWNoaWRxTURDZXdFWUdCaVFMOXZaRDVUWkd3bkY5S1ovOFhrUStiUm9sTFF1aFdZd2dPRjdFWEhPbWg4WStxRkhEcCs2cEZUUDJ0dnFTM1RXMTEzdldwQ3FjdTRLSHE1NEZkbENJdGN5NVBvcWluWWl4UlZwRGJWVWIwQ2pLeTBiYXZ5MDJXdVA1VUZTeGFFZ1RqUXRZT2hFMWVXQ01GdTdqWjhkbnM3WldSbkJCNFJEMHNnVlZIYStFVnNUTmhjWFNnS1ptSFZJMUdqZFRsQWM4dXVkSDY0S01Tc1BvUllKeWZLcTVoK2srVStkSGFxSlRCOThNNUUxNUo1Ym1XRklsV3ZGbHZhRnpleXNwWTF6ZFRYUDVYTzNPZ0ZWU3g5b1ZOV1l6UmFuNmpRbUpLYWhUdUcwVFRCZzlRanZzd3NOc1gvcjFQTllFRUhjbC9KWHcwNDdsVzdMUGtzVXJoYnRGcHlocTJNcTFzR015TjRyWGprMStXYmVoK0I5a1RmTlppdUVOSDlJS1NTTEJ4czhMbmpmekN0YjJCa3NMdFcwT0svUFJTTUowUldxSm5OWmVqWFNudXpTNVNtYkdDT3YzWFNscU1FQ1VxTFFsdm0wSnJqV1d5TnF5cGc0WUJwb1oyZG5xdFVSMXJMeThmMWVwdzV3L3c0Z1htSlhKZWNHMEI1U0Fhdkt4NVZlSzQ2MEFtak5xc1JKbE12R2Z6aEpqbUFjRW5JNnBKR3hiNFV3NVQyR1lLMU1RbkxsRFJmcVNVd1JMT1RlU0pVbXliZkpZWGRUVnMyUXoyVXFKcVNxZGVPbFpzS3NHREg5a20xejZFWmpCSEVSemYyeVJJbXFUcUpxUWdiRnFCTE5uRm9JREhUS2x3RmxidnNCQ0M0NndCekRMeTBHZEhHQ0FYV3JOVURRMUpqTWx2MktDUnVucENXY1ZMVm54MkdicTZDVDFmMDNBMDFEaTlSTDJBS2xPWHZTMHcycmdDNlZhK2I2NVlNYUZWT2t3RllxOVduNmdwMHZ6bUNxdmNyYXBCa0szRFJnalNBdUhkMG9JdUpTZ1FqaVVnR1ZHR0RMWXRyaXJMclZ1dDBPQUozSW13QytlVUJBRGpHRlRtQjZQOEJnaXZmMmFLOVRCeEl0Z0NpOTRwTDVKMUdkWXUxb0FEZGp5dVhabHZYMjF0T2dtWm9CMUgxbUlDVElTTTNKTG9Lc21hM1hXbFFlV3FJaWVFTG9vOUdYRGlqN1pNcVNJemZGQVFyNHZ1UkF4c05DTjFqQ0xmOXNGUlVwRFJVdGNwMWpXallHUkl3U3YzT2dZRUNSOGZYa2NhS0k1WlpkNnEySzlGS1cxUksxOW13cTRuVFpwa2x0R0FMSzVzZWFXelVTQnNnWHZ4MzdOU1MxMjJmZndYQS9udERJRlcyMUJzbkZza3FIRzVQWjJqdStFY2dnU0hzZm1tRFpsaVlaVjR3bldQa09YRDY2dWEzYmd0TXFMdmNaVGlVSmFkMXJNMVY2SGNCWGdRRlppQUd5NUlEQmdGaXdZM2ZaMkdPaDZKUzJkUkpUNjJGSm1EKzdRNGs5azl3ekg0S2tRU29ydDRvdEZwc24vMFB5NGJPblRpUFB2S2x2Z3IzbXVTdFpOc2hxWDN5ZzZZUDM5Tm5tNUZDV0prQU43ME1wMmFKb0lIZjByMFhFR21kcFNrcGhHQlI3U3F1dkVyb2p3THRoNFVKeVJGR1I5djNaV3FNS25iajdTejVFS3J4MWo4YlV5UTl4cXIwU28zUFdma3B3a1pRWmFmdjEzTXZUYXZYSlhLcmEvWVFVTjh6eldwaW9ySmFRMUFQMGhkVENNdlV1YVNTbFk3VnR0VDZMVFpwNUFVT3doVmxyRVpwc0g1ZjZyUHhhK0FiZWgxbWJwKzNvanByS3VhT2c2cHdhempmUzI0MnR1U0hSSExDdkpwNFlBdWdVOUlENUlXOEE4ME9PbXBzb0lsTjdFTXNMcUNvOTlFaUNOVmpmT09kNlFkSGVYODlxb3dwakpFY3NCMldUZnhkU3FpK3ZmZVN0Rk5RbjlaQlI3aVVvMkJwMkNTR2tqSHRmU0V5UTk4eCs2QzZTTFkwYWcvcUE3d3MwTGo5eWE1dWtpbUhEd2taRjZZWUl2YjNSOUdLMGFPTXZUdUZjeUFEU0FVWEswaTR2TlBaV1pOMUR6SFhxU1lQb3g2eSszZ1NyZHB2bVVGVW42cHpHU0k4SWJ0bTJ1WHdvVFVhR3R1RzdMTFpYeWFkUVlockpoQTBKQ2xyWEw0UlUvbDhxbTIyanNWMkR6QWRkV1J5bXBkV0R0OHg5cFhLQXV1aTBmMExEQTVlOWNtT3Z0ZWxPdFM3T1NwRnNrWFhuYkRsVGc1RS8vQmFBb2ZhaDlneDNMSjllYU95OVVuZXdpTVhRTVpoRVdTOHhSdEdNOHJHT2EyblZCd1VYVlpIdU9IUGFZU2Fha3JDb2FZb3NsbXBYcW9tZWlxSFNiMDJqVjJna0xBK2h4a1JKdVpRam02WldpbTVwNUN4VityL1BNYkVhODFnRGd1SER0dmVtUUMvT0Z2ck02R1UwcXBPSVJDY0NMSVJiMnNtRmJIbDF5VEdOdll2Mmx0RlBCM1RZOWg1TFF6bU5FRlZWWEY2UFJrUUZ0VVRQc1A5d0k3L05WU2pLNXFxeHF3aEpNOTZzVnVqMmdEZVd5SERyakZrMEg2K3ZIdkV5RkhhQWxGb3ZZSzFRbmExY0tCL1ZFaURybzNINXhPbVRyMUNudUxRT2lzVjVJNlM0SXc1WE1vVnZacWlkbFN0WDNtb2VTYnZ1Vnc2NXVYWm91dERnSUlNcGRDTFpVUkxuWEdvbHFlWVlpZ29haGQ1MWg0MG52OFJwVGhKZ3JZcVM3SEpSVHlPbm9hd2dQVFVrcS9rTlNjS0Y0S3NTbkpScXNvL2s0cmRHcmNpOUR1V3U3UVpBTTBtemhzZGZPdjdYemxaSE1JaUFsVTA2UysrNHRPSkFiaERORUJsOTBnbGpWaUg3REhWaUlCY0Y2QUZ6UTFTaUxmQUhJZ2IwVFltMVpkdm54NDlBRldneTB2UmxvWkdsQm5VQ1VVbTI3RXhTcWVSVTRGeDczWDExcG5LNjhyTUp0ckluTFo4cXhGREx4ZGs2YS9oS1JhMjljcXFTVGxPb01YWFlnQXdYYkI4YVdGbWZvckdOdmZQVXk5L0ZVTFI2RDBRaFJzMTlLVnlQcys1WVZpc3Blc1hTNlhKNUtESWhlZGxaME9jM093ZmljOWxObjgxc0xsdE9wTXBhQ016aUtvWG1sUjFnMzBJNWZjNUoxV3dIQU11UVFNRlBnQThObjJwTUFyRFVIYnZ1eXFpbzlscVNXdFVwMFJCQXZmWnNDTEFOdnR5KzhxRlVtampBZ2N1SGxGR0R5VTAxSERXb0pLcjFaZ0ZxQUpSdVBqWHB3N202dHNLR1pPR3pLNHFrQzZDdm1acFZWN3ZuREcwMTcwQnE1RlQ2WWFhTGtQSmIyVFJMMWFLMlMzVktYenNvclFGZ0owMS9send6ZC91VktOTGRLdzV3b2xiS2l0SVRVMmVIaE45Y1NZYlljQjhjT09SaUd5eFlrZGZCRlFGR3JLdU1Td0lxcGRoUy9VNFU2WGFiL0lkcnI2eXZRMDJvNlpVcXdtZUw1VFY4eU0zZVBaa3hxaGlVK1lGWVlLcnk5M3gyNFV0Z3hZZFVMVm9qRi9hRGgyYjJSaHZGN0FXZm1zMWZQbTM2am1WSXhOb2VtQ2RvdWR5a045TjFEZVJRRVdGbzVYNUZMclphV2ZjdnFoZ2twdEFKcVNFMzR1Z2hpblFyUkhHOTBpUERSMTlhQ3lQUlYxcnJKK3MyeGRsTHVEMjUyODNjRGlPM1dNNjVLZCt3N2tvNTVsaFZibEpwSlBJUnZpcm9JZXVKRkQ0SmtJTEtIbnk5aDJhZ3k3NStlUHkwVGNzMFo5MVNPVkpwQ09UVWdvc1RXK2FuODlUVnNIQy9saU8wbm1FSGMrbUFqc0VPMkFZOXpocDNKa0E0OUtxbzlGbzVTTGZLOEx6TDhzdHZiMkpac1NYMWptbmtDbWR2ZEFnQjZHdGFDTXNUZlBhM1EvRE45SFBBaDlCVjRkdE1JelFoaEdhdFhJSGNhOXdhb2htNkpPME5KTWhMSW0yalVtemVraTU0ZjluNDl0RmVRVFg1SXFocXFudFQxWlM2bnZXOU9vQnhnUGx3d0xDOW81SHhWa0ExMklISVpBZXBEYS9nTkxYZ3R4VnFvZ3F1ZDNqMlNLVmYwOU5Td2xURlI4NG1xaytpcGRGSW5VVkxITVdERDQzeVFtZjhYTEFJdlc5a0o3K3JkczZhZlp0TkNndWlkQlY5NVBFaE5MSjJxeU5kZ0JEQ3BkdW51RzRWaVRHS1FSOHNtNXVXQ1ZKVitQVnVqZmNQbkZKdmMyQUZWQjFaWnl0SWpCS0JWQ01DWUl1dFhqNThMS21jc0ZrL1RjalRoNGUrQWo3Skw2NHhRZFkxV1JPWUFra2FoR0M5cWduZVd4ZXl0QnFQblRXVVZrM05mRzFmdnZkVk9DTWZDR2tsMW1KVzAvTGg4Z25QdFBXa21nUk5EcUdvNVhXTEdiejdPR0FnaHdpcFowRHF1RzhsbnJhZWczTlk2QmRicE9ZdnRuN3FtU1VORTkrTnBzL1FxVkxxaDRVek1qcUIvT0xXZk9ueXNxYnA3ckltVzAxb1pKUkVTTXNtaEh4Q28yWUtLRGVhYVRHTEZLZHArQ29abVUyMUZCb2dyVjRSZk1xTUJZQzJveWVhWEJhVmJtY044bHhLaWxvUjljU1djczlPUFhENWtIU0tRYUFqMnhROWlzR1ZGUDFVUkFTYzlJcENiOC9XWTYvcUxzL2RsZDl4czNoYUhVR1A5N2t4c1U4Tk1Pdm1jRm1ESWFud1VuQ1RSRXplTitRVnFKcEduOUNnNGZGZFJSVHRVa3BkYS9LVTNQVEVuYmxMbC9jZkdUOWhDcjBpRHVoUmpkMlcvTUVKMGF5cmJibkFTZ0VHWkRYdHJldE1QdTlzN3MyNFA2SGZPMkNRSXB3MExTZUErNWgxQUl2MHFIQ0ZETTkrcHVZUWhrU0ZScTNOYXluZERDV1pYbkNMQlFsVUxDZFA2WWRDK28zYTVBSVErbnpxaEpXRlZEUDRFQ3Ezc0dadjEvLzErRWEyazMxMS9SQkMrTkNmYnA4Y2VpVUJ5YVU3cFErajlUUzBVU3VGN21RKys3a2JVQmxiUjBjZFNJZTVJY24vYzVyNkE0QmxxWEJSblhhM2Jaekw1ZG5McmltSFpHUlNZaUErNEdsYTY4UGFDK3V6VTErbTBqQS9vU1VQRlRKMk1mL1RJTU1aZmFuY2JWWjJyN2R1TmRWM3lua0l6ZVRsTjR2OTdQSFFkN21mdkwwSEZhYzRjQ0xPZGF2RGlhckNQK2Zwc2ZrWUFGaDVvQnhESXFpSkxGYmNCTkNUZXZScmxJZ3Q2QklSbGsxN1p0YjRKZFhEVnErbUQ4dXVhVFo5ODVxL1MzSSttTnZlNVJQRmluVlZOUU5LcDZsQ1ZiVXdURkxCVlJsVWpTVVRYM1Q1OGpsRkhqUDNoVDdqb21hT3hRU29kWXZIbEJ5WGpaKzIvVW9oaWthSTFyUlVyVHNiYmIvL2l2b0VYUWZBd2pHYXZmNkZkM21Ca1VsYW1MV25PN2ZLd2NYb292VWs3ZDArL3VqeEg3RnJtcXcyMmRTM1lkSVVHZDI0U3RBajExOTFPRTkyNThoU0JYK3ZBSVUrMkh0dWY0cXpubWZjaDFyYWwrSm4rT0J0R1JIeVlUWHpOODkwanJjYk5LdGhma3BMVGlZYmRnRjh1UFRhK0dpdmRxY3FObEhwTmh5YWl6cktyNmZYL0pBUHJvRFZzK2JzVi9UN2JrZmJLcCtMeWxZVFhoSnhPQ0pPZXJidEhIL3BoeXpPa2ZqZUF5eHpjOEpOMzF6eHJYKy9xM0hQTjI3NzRjMFB1YzlkVTBXWjhvYzhaeTMrZVAxR0tuR1YvNmxiQUgwUXl0SzV1enhDMVZTd3pyVFUxRnAxaVN4c1BjQ2ZqcDQwTEQycXpvSExLR1lBZ1ZjOFM0VDNnSEJJYkdNMEIzMlZMMDUvU29GdW5DM01uZU03cXQxdStMRFJTNXRkT1JaVmFqZXUyL3l6VlJ0dWhZZVA0OVVBRC85SlcvdnJKMTkxV0ZmVkE3SEtIQ2Jzb2IzQ3lhZk9QbWExb3lmNDBHeVl0V3I3TkRLanBFZk8zNnBvR0tXOHBObWcyU0NRK3d3VlJneGtMa3I1L2U1bGN4K2JmdVVWRm5GWG5FSnZEK29pYkx6cGxUbDNxOUFKOC9YSng4WTIxWHVwUThhUEJ3ZHIrOWYyd3lXcFViWFlZbVpXU0tnaVhDa2JqeDI5UERVRnI0YS82dk1QM2ZUdXIvOTM0TGkwNmJpYmJ2aktqWGU1dHI2V3E1VDN2M0pKUXJQYTd1czcrajU4eU1VSkxTbVBEQnp1NnpQQjB6cEJtUnNhemNwQkxkWWNWUFVSaFczQ2t2RkhUOXgrcFZXNkdILzBrQ3I0VHVFWU9qczdPenNYL3NlMDlHcjcvZytkT0hDR3kxb0IwTi9mejNrNCtMUzVyR1p3S0hyRmxkc25IejE4ZVczaW1nQk4zenpzaHJ1LysvcENqRHkrOC9rN05sYnkxaHVlSjMwSjNyb3JXYUFwMUpvNCtOenV0eEdzK0kwa1pWSTdKbE1kSGs5WEk1dGtvV2Fja1gyUFJqYm1hbGxHbjd5WVpKS2JOZWI1eUtXVHBnNWYyUVBHSUxZQ1VwWlZuUU1EaVJZSHFsOVdCQXk1dU1qS2J4ZGJhbmVFMG5jaWlwTmxEUDgzZittU1dybU43L0pBMTNYci8rOVhidHIyYkdmdS9mcEQxMzB1cVJvVDVYMmtaVGhEbzdodVRlaWpRYkpnRTFlWUVMSzVOQStsUWRJb2ZiWTRlQVdvOE9CRE03Y1VzQ1lvVlJMRUY1OFRINHFGWVVkYVNOTUhQanc2N3hudCtiVExuZHJxbXFPemM2QzJNTUxRR1AwUUdhTjUzRHIrK2NObnJOWHc1T3k0NFA2dGJ1ZlV0YmxMNmROdmVtZkgwZHJ0SU9LaVU2QjN4NHp0YmtsclhBL3dOSi8rM2czUGVZRUxUbnpkQjZwMGJaNmk0TVB5U2JCNTFrZGFhcCt5UVZaS29tcGhEaWk2SmJCOEVteDJTd010TnB6OTF1emFUZCtuRTdhY3lZZldSL0YvdDNQZHBsZU05bGdvM3NJblN6WTl2bTdUNTQ4ZG9KT0JzMisvNklnVloydDhVcmMrTVhUZm9ONytuSTljcnJuSHc1aXJiVGVLOWdxcTB0UGpJaXhqNDJFVExpUEovK3BCbWwzTm45MzkzUFRnUnZqOGgyb0syK3BzcnAzZ3dyQmpFOWZKMEt4R0N1emlxMXJkck9zcEpySTVpZ0VmUGoxWlJqYzZOczI0anZjM0cxMDFkZTFEOEdrVjVLVElDVTFiNWFMb2VqTUJndS9MNElsbXc0NzhhTGpxRlRzM1hSbDdEVmp1SXRJR203QlN6MDRUV1VyN2syTTBlL2VDSUdaZWpUcjRrcTE0dEppZmpRTGRQYmFFcE5JcjIyWk8zZnpoOUZDaG1XS0ZBYnFXUGZIZzg5QURidHc1NmJyUm1pZENZUG1jcCs1N2N0c1cwVGpwOEtOT29Pall2cTZxRld3Z1FMTXJnRTF4WDRNRU1iMUc3MzFzMnhaaGROTGhSMTIvelp5VGtKeVNaaU8zMVd6a3krVTYzWHk2YkdwbGd1WDlDRnkrZk9yNkxkTzdyMVJGOU9yTFVDdEg2SVFCT3ZtUFZvVTdOR2ZyRTJPYTFiMTNESUZMa3NqSzRGNTFxdEFyWWZOeE85b3VyZXlTUm1WckhuSEQxNTcvbkxmT2V1MVRkb00yY2MxdFUzKzQ1anM4ekhIdzhIRVhQSFQ4NS84b1NmU3VVb0NXTHROVlRWMGpiZjE3dC9xaDcyWjlkY0hqODY2ZTJNaW1iTmk5NTNJS3d5ZG5wT0V0ZkpCNGdtWWorSW9yZ1NWYzVjWTkyUk43Sk1wbHRtbmFKbFl1cEJOa1RWcXU0c214VENSN1M1QmtFcXd3c1pVMWlhTFFJMWRjMWo1bi9lVytMdXl6VUdtMi9mU3gxak85ZVJJanJmTDE2MU11YWpiSWhyL2Z0dTNPZnlMWng4ZHg0Ly91Yzlldlg4SXVYbmZwOFZmYkZzRFQ5c3o5M3dIZU5HSHJSMzZQRzduNG1PMjFzbmJMZ2VUUmJGUmZVekE1R2NUcGJDV3VYSTN1eis1NHpjT1Ryb3hYRmxSVzZRZzBsTXpkOWpYUE1uL1BNdmJTTVlRMmpReGYwZy9NelZsalVlMXh1dTZ2ZCs3OHMwcDUrT0J0bVJhQ1o4T2NoMit0bmViTnN3NmZNZWN2L3VxMERVK2RjblcxZGMzVFBnWG1BL1NPdS9scndFWHRVOGZ6OUpZTnQvemV3MjEvZTFxS2RUVWJWUE9ZVmdNcmJoeEFXUDdFRDY4OWpvdVBtRDl0NDYzdmZlUjJOdDU3Sm9rVVBqUWIrUndlQWczZjEvRFpMUXk3elQyZTFvQktzNEVQN3RMbFIyOTdhbUpQdkpMbzRCZXZYYzBBblFNTGg5cmJKWW1zTVU3cFBoRlppVGVLNjlQamROMHJYLy9FNVpuRFNhSFc3RWszMng2cTk2UzcrRTJ6Z3h1NW10UGFucmp2Z2h2TDV0dGZlZTRIZk5hcXIvaitlNzdHbStlZk1nbWhqWitPditFNDN2eXFaaU93ZkJJYllQa2tmejJiTjEvdXNXNE53UytiTkFWa1pQeUhmS0RaZHU5M3Y4N0Y1MCtQSStOZjEvYndZUnYvNG12MDhkUVUrV2hmMTdKSmJkZkx5Rlk3Q2s5end5Ui9QY2dUU2VsL2JnZmpQc3F5U1ZPVnpmSlJiOVhyOVdkdjRHazIvTkp3MWR4dFQwM3NpYjBLUXlPVDZJVGpoMUJST2xrOWVSeHJ4emJWZTBhUW0rdGZITk5iTEMzdDdXbTg4dWlkalZCamZYendsYzNZdUg1dE5lL25IblcrL0pIOTFoZlBlM2hueFRwUFBYM05wZW0xYi83MHNkL2ovTk9QRzVyUXdQZDFYWGZNbEs5eHk2enpsaTFoeWRWeGt1K2Q4L1BSTFpQMTZ1dmZuNUo5ZnovK3lSMXJ0MHpXT1ZPdXVRelFwN2R4M3ZGVGRqVEE5NzMydGQvODRwbnJsL3o5cGduVHJxVTVFaDdhTXZtSVNWLzRZOVBoeS8ya0hhdTJNbG5uWEw5K0NRUSs4bGVSdm0xVG4xNjlaZklSTzc5UWc5QlZEMnk4eitVc245bTJmbEp2M0FHbnJRYldnMkhlZFg1OGNxend4WDBRN1kwN0Z2V3p1R2lRblRLeWZQem1XUi9LbUlNY0VRb2xiK1I3bjNxa092Nm84N2Q4TEFVRUcvQS9rRnZ5TDMvLzEyY1M4QVRmRngrK0JZNDg3cW5MOGFHdjRkOS8vY0wxdDNQMTU0OXZ0ajMwZFU3NGg2R2JIL21mbzVzdnUvRGh6Ky84THg3b0hmL3dxZzFmSEo3NkorTVBPL1c2RDRiRy94Q0loMisrREtEaGV6c21iWjIxbkFjM3pPdzgvTUhWRys2OHovM1JyUG1mZjJwcDhQVE8rZEdqVC8zUDF6eE13N1dmZGMxbHdWOTM3OWNueitzWXZ1bVJMK25JWlZPUCtWejJqaXFUT1NjSGdLVmgrYXkyOVJQYk9CbFlUenREQ0RCd05vd1pLTGYzQkFud0plZ1hwV01RK05idis3bU12elE1QXRuRkRkRHN5cy9RNTFmLzQ2dno0UmRkOEVSM3lHbGMrS1AvOGRqLy9yMzAwMnZlQWVaUVB6VnVQYnkxWTZnYkxPYzZPdWVrMjNudGUwOGMxUzFmNEk5bVBQVDF5MTRERDQ5TVgzbyt3TlhjZk9WcmVBM3cwTDNYbjNiZGFGZlF5NjcrdXkvOHhySWxQZ0RkeXk2RjVXeTc1ZHdmei83cFRYQThjUDVqNS8vZFIxazI2ZVpsbzhlOXhreUh6Vys3K3JJKzNYRXJiNTF4N3cyOEZoNCs3dndkMTcrL05tUE5YY3l6d0JLLzdPaUpQOXNKbkhzM1E2blNzMU5aTzI2czA3a3ZjRmxjQXVoY0Jqc2dYbnpNakVzdi9SQTVROVFvS2JqUzhTVkVYVnZvY2NIcnRUdGd5RVR2Z1UxblhWOU92WGwwdVdFL0QzKzRCdzZiZEhuUnNWM0Q4OS9Nd3lNeENsdU9IL2ZEcjNQWFJSZjk3K05lLzVwMXE2K0hYbTcrcDlmdzF2ZTg1ejN2V1BON045eS9ZVnVmekw2YTArNGJuUDc1NjY3djlYMWhLWGdZNWZRMUQ5NzBpNHZmKzQ1ejRLWmxOMDBLeTlwLytFK3ZQbzZMMy92ZWk4K0RyOS9Dc2k0QnR2L3dCdDUwOFZzNWpuOVl2ZkdhMmp2Y3lQNW5OY0tTU3pjYzB6WUpib0gyb2ZZaGdBRTRtckVpRi9lV1EzYllHcGd3TitON04zK3lpbGo3MEdLbHBIdmZPR21rYkpvNi80bXlRd0Q0Mk9lckN1SWR3M2xOcDgwWDhvdC9rUEx3bnEyTTV4K2VlbnJuNGNETkQvL25FK1pQZmVidWkyNmcrV2NuQkgvRUR6LzF0VjhzUFhXMlovU0dOOS95bllubmJlRFVpNy8rc0I1LzBlRlRacjcyODZQTGw2Ykh2cHFIL3V5Njh5Znp6THovOXVyWHZPbW5YM2hpOUdtNDZQVkhUMEx1bmZBZGxsMTNRaC9BelEvLzRVbnpwMjA0OWI3dkhNZlI1eTlia2xpamhSQzFUalpMUGd2dzVydWhQZkdJcUhMOHp3OUVnc29hQjR6L0VrQkhXai9FVnZxc2FwMXIvNWk1MVl5VHRwVGpwOFRMQzNyS1ppbk9mWFArc2UzSnFkNkgwRnd1bStHU3c0VVUvdk1oTEdtZnd0VVRuandDZ0Q4OHE4TnYwQlBmK2lhT2YvcnBxNjUrWnRWeGx5MjljT0tIL3VpUGRzNmZDeHNmYTUvbGpuL3JjY2R6d3o5OS9PNS8vZjVEOGJyaXZQVCs5dnl0SC9qQStJdis0bWY4OTRkMTZyYUp2UFV0SjI3NXdBZDIvc1pyZjg2cjE2bzU4Qjk2NTluKzZkRVRGbHdBVDYyZmhLZXJXdG5kWjhqckxxdnEzZ0pEdExQeVZvdWZ0TGZ2VjF4V0RkczdTdHhoYTFBbFAzMFlySERNSWhtNU5YdjFUMlBLeHEzbDhLbVNHOEVtY0hwNDRyV2xiZUFYUlB1Q3o3bSthSHlWb0NBNjVWdyt2MVdoQTA0NjZVOHVtN1ZreCt4am9PM0pLWk5YMzhxZDg5aDg5VFhYN0lqLytsWnVmancyUnVkZjlJNDNBOGZkZE1QRmYzem42dXZTQmQ3NjVzMmpTK0N5WDUvL01ZN2J0bjVreTIrOTU5U1pINGpYWEROZWp2bFBWZGJ2TjJaL1lPS1N5Ly96OGRQT1phdmx2YXgvc01YK2s4TVNVa0ZrSXZXYkswWWZFR0QvSWhkdm5wLzlpQjF0VExEdysyQkhCd2hNeDllV1RhMWk3cFJHM3JYeHMvSDV4NVNWQzdqdFBKeCtIZDVDTFN2b0tBRjVRUGdCNzU4TURQTFErRkhqeWlud0Jaa3FtMkgyWDYwZnQyUEhqaDBiK2laeTdzaVc1WXo2ODk3KzNvdmU5QXY0dmVPL2R1ZWRuN2ZibU9ndWJRRGhjcDBDVzhjZE1ldXA4K2E3NXVYcndxcWZQZ1VnQWVCbk9tcm80OGsvd0srYlN1NkFreFJreWhPa3BBRDRFZmpldWRET3lwVURZQnd5NzhrenhqYTFlMGFRNForY2pEcmlBcWJRSnZURFloZ2M3SENjenpCOU5qMnBGVU4ybW4yZzRYZVJ2QWlwTDBORk4wWW10NmFzQWt1WUFtMi9uRklTSHA2LzN6d0NPMnpWa2MxVEREb2lzK0ExVzJKOGtuT2ZYdmgxRy85ckF6L1lQaWwyZFYyNmRjYTVGMXpjZk05YmdWdFdEVGRucE92WlhNcnNuL1BGWHlwT2huNzB6UXR2KzhZOWpkKy9IZERQcFp0TWExZFd0MFRWcGFzUCtteUYzaHlIa2VzUC85WVBXTmx1dHU0TnJHSTE3VGUrN2pwOThPUVhuTm85SThnMWNCUUtyT0l3bUVMLzNFR0FSN25qVy9HVE5CSVF3ZXowa0pNK21ScWVwNmZtRTcxbVJ3YjdoSlNjSTE1ZUZvcWZQamwxMjRnS056K2RMWG52ZzMvbTF4dDRlTklFazMxcE1aaTJEUUQrbDF2NXdhM2UzMzc3N2JmZmZ2c1hid0graEQ2YVN6LzRvZWlQUC8vMVhXK0ZNLzg5MnZJWWtzcTBtUHgrWHIyRHhwdzdiL3pUVCszMDEzemgvWmYrSE9CREFJcjRCakI2a3JGdVl2U2NkR3g0R3I1Q2RBY1lmVCsvTGJBU1VMaElUN2dMaGk3Z3F3OXc1d3RPN1o0UjVNaFR5cG0zVEpwUzlhaTkwWDA3K3FZUGFSNVR6dE8raEZ6UEVUYS9hclFjc1ZrckRMeVI2L0NQRnczengycDYzTHU1RjhEUWx1VW1JVUx3dEkvZSthUGpEcDgwQzZieStwUWNETE1lQnNLcnBzSTdqanJxUGU5NXozdmU4NTd1OTd6blBhKzk5dklOVnpkQ0NKZGYrdjczSC9tR0JXL202aWZUWXZTYXM3SmJydWZuNDduK3BndHZlTTJmekR6cXZ6ZmZjT1ovT3JkU0lncDR6MDhWTUJocTFudWtrSERtOENZMC8vLzJ6ajArcXVyczk5ODEyUUdTVE1KdElnamg0aVVYa09zTFNESlJHbTdXVmlvMmVXdFJlM3FzVmMvVXBvcEg4VnA2OHhSYVJDc3cxdkhTdDU2M3JlS0Z0RmFzV3JsRUpVUENwYWFBTW9GWERKQWdaQVlqeVlRa1pHZXY4OGZhZTgrZUVER0c0SnZUVHg1bHN0ZGxyN1gzK3EzMVBNOWErMW5QR21xa3VUWWVLZ01RcE93dTJSMmFRYWxITHBLTjJYWlAvRXpxcnBibEJwZ1lNZ0JqSEVMdGlxWS9UNzY5eHZ6NGJQTlViQmRLZnZYWXJ1WmtxNWk3bzYyL05EdWIzNHhLcUxHbjZ2cDVVZFdEVDJXNDRja2pRLzI2cWFxdERGZTFUQ1ZEQUZGSVVkbEZQWUJJR0FBcDgyYWJOR2ZlL0tsM0x1ZlVZMWFOTjJYMFkzOUNxL0lKMllRU1V2S1RpN2dwS2FIcTJMWE1uN1p3OXBTczhVUGRwWTdYMVRWMFhYS3JGY1F5TDZVREUvWUJrWnBCY3B3S1NzRWs0RlVZTFVlc1pzL25OMngzQWRsckFMdVRYUWFSeUxzL0w4d3RKeGQ0UEovUjBRYUwrWmpjd0w0d3pXdTErNVB0anJLeUlaUnVqZzF6MDg3UDJ6NnhLK25mM3F3RlFPUDJsR0dWWExoMVg3L2xBUTEwYldYeW5sZGcvcEE2OWZHK1NTazNDV3FHYlp3SE5jZGR4cTIzM25ycnJjY2plK3VPNmVtN1hxbjVqK1dxaXl3SE10c2IzQUQxcDU0SkVOQzE1YUtKdTVNZWswYzI4cFVwNDIrNjlaWWZ0Q2MyNDFqdUNPZ2FHdU5MQWROOWtUWGdiWE5YeS9nQmZVam8za0hYV0FMbm1JUzI0U0RaNTdxa3c0a0ZuVkUzSjRaN0VpY2RGVmRzd3lBQ21NdTl1WWVuR1QveTFRL1hMQ0VkaDRrdHR2M0ZyaEZ6TnBtaHpkcUlsWGM3Q2w0K2RQTWIxblZCaXVjV1U2bU1YUHBUV1BVanNsblpsRUp5cEdMSmN4d0lEUDJCSHB2V1UvekU0UDJaZ0d2ZzNJMXZaOHpXbHBQV1lBemJ1elBWKy9Rbk5Wc1FXVS9VdVRCUzBuYTJRNHFuVFFMdkRKbWRzcngrdVR1NXZJRWRnNTR3MkorWk5QUmpUWC84MDRTZHoyVEdXSlpRbXZjSDVodkV4b1E1LzQyTGIwaTg2cXNKeWFqVERra3VHUVpwQm1KRk50dTQvbk5idHBzajVKYnM5d0dpUklETEx5d2ZDZVdVajdxM2pQYkdxTzdZUjZtZTBkd0JDMmk2N3RQRG1URVA1Vzl0WTZWcHFxaHJHa08zL3g4N1NXUklhMEh5L3FaWlZ6SjF5ei9XN3p2VmVGVGYvdlp6VStISFdiY0F1SGt2QlRUd3kvb293TTNadzZCMjh5ZEpubjRlMTlhS0oxK0p5RStTMmJKamZWVUNodXZvMWwyYmVESERyT0l2bTA4a3BTZjFLLzl3TXpJVENmejJ3UEFubms1TWVldG9KbUN0S0VpbE9LcUJiWEZoeStMWTd0U210Wkw3WU11Uys5clZkamVZUHhVU0pSZTh2S2thdmhGbjlOc3BkWE9FaUQxZXFIVEc1SmFEY09WejhyWHZML3RKL0xLaXFpaG0vcTh2L2EzanNQZS9rSnY4eXdjRHhmNWk5R2RjVy8vTFh1WkNHeCsyKytMZFQ4em5EUUtTbTVOcEM1QUoxODg5aHE1Sm9reTlGN043dWdFQ2RjOHZmS1dVdzBOU2FHcDY0dUxNK1ZyNG91T3dpUU8zOVlmalc0RG52aEVtRFpqMTdJWDFnNFJzZlFNWU9hNU4remNmRjg2dE80K202Q3NIYnQ0RTd0OENUTGdkWDhBSHdzVEhmQ2pkV2lLeURWSDhQazNYY1YyMDc2bEc2eHc3TVp3U0lLdXU0ZlVycEp1OXd6K3ZaYnU5bHRVSWtId1NHRlU5anR6eWNzcHpoWEJ0bWRtcXRldUF1VVBUV3M5eTFLT2p1MGJNaW4zMitFdFRkdVpUWW1WTFFNclFrWWRpZUpDZStLQXFRTk0xZmhDWU8vU2hDMkYvSm1UQ2xSZFBQYVpRblFKTkpyY1luQW5KRk91UHRZaS84QTRNeUMyOW1QbFhhb3VYWDNKcjZCMnNvZ3NHNVVYdlh3NHc1RmV6TjBQbEZKZ3pmR2JkL2N2VGgxVk9hYjgrSy9YN3BiTUNhZHo5WC9LMnA0SGRUeXNKbDRCbDJSR3oyTGEwM1VDeGJuN2s5U2U4LzY3MmhyVS9wLzJKaTZNU1NJZlgxdXcxVG5NU2N4cDFrMlZ0NXBJUjBrVUxNQXBRTWwxSVJPdmlmU2RpMlhUN1U0RzEyVWFIZ01iTldhTWNoYjExNTZiTmxicGV0ZTIxaWo4NThMaHk2c21BcnV2S3VFM1hmVU11ZmZTR3k4Z0VEaXk4ZnU3azhJTSswRStPbVYrNU1MVk9CM3duejd1eWNtRjZuYzZBQWJQdlhYZ0FXa29MNWw4L2ZlQUFsamJuTGJ4Ky9vY0F6TGxtNW15UEpiWnlMMWxZeVJRT1hETjl0aGpNL2VHWno4OHZ2WGJLUmNZTk0zTXlML09sU0pxeUw5dXdaR2dkb09zTkkrZS9tT1k1NWh3VGdPa0NWYmZVcm9ib3ZtWFo1VllIVENtTUpndEF5a1ZmbDlsZGFObnVHY3BCL3NsaE5mSlVnaEZoVkJPOG5Gc091VUllcmxoMlI5NmpJOVF1RUEwOTRBdjQ0dGFucmNsRzROTS94NXMwZkhpVDFEYnRqek1ydlhXR0VmdmVFUEJwUE9TaFB2d3A5RXNhT3F4aGdDL2dBNTVzUHFwckkvdjlVQWQ0N0tqdVNma1JFS2dmZXZ4NDh5a0d5NkZEVHQ2dEE0R1daTG0vK1JUMFN4b3pJRExZcHoyVTl1ZTN1R1oyeXFucVQyRmdSc290R2pvczl4dy9MdXI3WFRBSTM4cFRkVnJxZzlyS1UzWGE4TVhxMlZjZTFUMHBkMXJXWDFoaTNHbExwK24rdG4zOVhsOWhPc2VVQmU4YmdrU3BqZEhmdmRUWGtMZnljeHUydTRCY0hoMVdZN1FsR0pGUk5NR1FwNEE4eWJOSkxhN2NjVDlyZjBCOXJMVk1uenFRcHFQOWR2dFRuMVBETmJrczFXMUxCQlBLTlFPa0FCRmVhaGV1L1h6WU1ldk1QZTNudzQ3OTFJeCtLQ2tGb0c2b2JhTDdTSW82ZjdmMURoMFVJQXV2dm5tNVI0SXJQTmpDZnJrSHljbkZvSzEwSC91cHJ2R2JwUEJnczFjRmpnODc5cUJ6cFIzbytJYkxCdTg2ZkVOYmlzdHMyZjVwRFc0U2pYa2Z0YjliWHJIN2xzOEhwTnN5NUhBNlU5NU1oOE9qUUlsMENZaFo3NGo5djhyU3JGVWQ4d3VPZWgzYkdCRDh4MmMyL2VtTTVWK1dQMFRYQ1JRckUybUxXZC9wQnloV1JpRnFhZVpCaHczVmd6RnZaUGRyZm9yOXRuMm9EbmRvZmlqMit4d05LR0FwK0xuTjJnT2s2ZmNITE1PdXhhcm4zK2xmcWl0UkdQQlpFeXdIdjRyYlF3SzREMys0T2J4VU53K2NiRCtXbWlLRnBMVDJhQXVYN1A1OFBMbzlRbDVjbFZZcjlld1BGTXNhK2lUa2NXaUhGTWJFQ24vclRmVS8wUU8ybFNMRTRMRUQvcGFXNEN0bktIL1d6QnlmM3VIOEFvdERZQmJlSVI3RjJPd2VhNk1mTSs1MUdQQXVUL3Z6VzF6ekRaL2YzSG10bS9mckhZcDBWbUlOUkljaGtLWmJONm4rdGt3bWJ6cDB2NllweDNOeTF0NTJRYUtVZGJudFJkNkt2WkV6dkxGSjNaMnBYOHRvcE90OXpQTTljNmw5V1k3NnBqUm1KbmlubjNyZnJadEwwOHF4cmpxNUtQWWRTdE4wMzkwRHZyNnc0RE9MbnpVejYyYkhXNnRkbmJaK1lPR2h2S0pZYXpRQjgydUVqbU5oUTdkbXFSbzZGUHZ0SWdHUW1BNHp6S0o5bW1VTGIvb1BNbXRRaFFRc2gvRzJxU1RvYXIraSt1S2c2N2liUHZwZnAzUk5tZzY5cmErRTU3KzE1WG1NY1YxbzJPNk9FRHpqa280b0lkS0V3WG1XM3YzdnoxeStkZHY2dStvZlVFL3M2RWdPSTNZQUFscDQ5MmR4cmZsVGNtNUdzeFg5R05rZDNpbEdUMXZVUDQwNnpxMUJXOVcyL3JlWjF5eTQ1YlB5eGtabmJDZVZNNE5tclJQSFBhRmZsajB3YTloL2psVWhlZkNEaXcyUnlJa2hDZjg1dGJKaTkrN1JaMzVNT0l0UHVQOHdFbHdKMDYzUUdMWElVTVRXcksyWExmN0picmRHd081M0d2aHRWNlBLSlV3QWluMUpzMitkMVZuUkJkZE16L0pwNkFGZDArd0RiMjNIWlZqV25mYXVtOWg2Y1FmWEFqYnB6akkwUU5QdmNHY3Z1U0d6U1hOOFFOYnN2RnBNVDdjc2YzVXJtOW4rdWtiTWo0MWRVY1BIZC9ZYnFaYUZnaEJwejR3S2tLa3BIeXpwNXhJTU9WT0RtdFJ0UUlKN1JvK2dzZzBPWTBEbEx3QllONUpaQlhyNXJPYldSODFUVWpXMG1LczI4OFY4eW1HcmZuZGt4c3hyNXA1Vzh2eVpDeTQyZEtCWWVVQXhYN2NZVEZaa05ZbGFJQTdZbzhYaERBRGJKMUJIdGNXK3QzM0tnamtaQS9EcnBtOFZHMVdzaWh4ZUpjdzlQWXB6T1FveWVaaFY2YktFeWdzWHRWODhWcDFTd1hrbmxLcHp0SExPbGx4cG1Fc3ZaNlp1c3l6eVhTazF4ckgwT2tZMUdjemd1d0FVbFhOdytyY1dYMzdmalA0KysxbGpUQ0JteUdTbVBKR3d0L2FnYzBieWxVSERubjdxK0ZJOXh2Y0RQczNKa2N4MmpwZnFWb0xOekdKVGc3Z05OMWlzS09BRDdhRzBIK0pzVDBjaGpuQW5lcnN6TGVCejNPSC80SWVEVytvSGVJTGdwU3ovdjZRMFJJdDBhd25Id3BYUnRidkdmSFpyMnRSOVFPNHFUNnVWUjB4QUVobThGQmlaVzA3dXBKZSt1emJob1p6YnNYZTEyTzlLaHlzQzllbnkrQ2RWVFFrbkJkSklTazZaT3NRSUQ3WGVzWU93Y0FpaDA5V3NEanVtbk5PRHVLdllkblZMQ21qT1RtUEtCOGQzWjBmVlpzNlllSW0vVlh2MDZNTVRTNzd6eUZpcnVwMXBqY2tpVWNxNm1VWlJmdm1ZSDV4K1JPN3AxSDFBV29ZdDJpcU5sb1RJRURCbVZKNTZYS0xzclRPV2lidmZlY25iRnJQUFFyTW1CREVwYjgxUS9MN2xIdGxhTzhRRnhqMVB5NU9MTlhzN2s5VkVEb1hUQVk3cEpNQU14VlJXUzhEZ0w0WTRsQnpQWTk4VzIvUVJxMFlkcjJlQlFNY2hhYUp2UDFLQVl2VW95eHByWCtwLy9zc2VDSHFEWHNJblpHT3lvRGwxcnY2N2ZwZXUyVXFYL005MDN5NXJRT0s2NFZKKzZpSUZnMHE0RTVSbnVacnJjdlg4YjI4ZHZGclgwSFJOSTJDZWVXcStYQUEwZEw4T09wcS9tUHR2T2Q0d3ZOOGdiVkMvWDBadVhSeFRCRXd4SGhPNk5tbm8xbVp4MVlBNmFMWUJqbTZPSzUrdW5KUmdnYVJqcXJQb0JBS1lQcnFVcDFvZmxrdC96ZHhZcEZ2U0JqUW9OcVdSc2crd25YV0Fydm1LMVNNdGsrK3R6RG8vT1VwUTdaNFNEU1JEWXFvczNib3piM1hqbnFWMGhiby9Rbmh0bVdpUStxbUV5QkFNRWs5OStrVHFTSURjOHR5YVZrUGI5T1o0OFlEcWVERStFRGRuczY2Y09tbjh0eXlUT3ByUW1uazdYNWNCVFMyaFdjTklGZW4zMFpHcmRienE1SEU2TXRzNHRxbFphNHdxM2Q5NDhIdlBiUkFmVmdmQkcvVHlVZFlIamNraXNTRTFzNzM5MjM5YzlXeDIxeHcwbllYbDRsV3VwaEhTNVhLUkFreGhrTzJTdjd5bUgrL3c2NE55dGVwNDZtd2NjMGR5N09RRGdOZ2tLMkFGWTNxazZaL0s5aCtxeGtyTWtidDlvSVFXUDNyd1dhcXFwbU43eVVKOWJrWDVIYlh1czRXRVNSWWV5amU1NWF6T2ZCNzE0VllOY1hPWVdMaXd6UFhSNHU5dm1QY2YxWGk5M3FBM0tHZS9MNU5GSXFteXJuN0ZEeDhyejM2dWE2MTZOcWFrdHlVYlRQNGt4M01Zb0IveUlRbVVrNXVieTdkeUMvakpZYkZNUTlOOEZPdTY2V29VTGJiM1B0YUttcHJveGliWkRtSGc0Qnk2NC9UZ2dKcEY2d0M2SGp0UHgxWlV6YnMwTENNMlpVeXBBL1pXZDlzL1kwZTNEcFlGb2svWFk4WU1waU5BM1ZMRTQ3NkpMaE83dm4rREhQeFVMV3F2cDFjY0Vlb0VKRzFxMnM3SFhFMTBSY1hpckZnV1hENytZSTF4TEwxdVZKTkI0cW1KSCs4MnJVbHplU0ZoNGp2UHJMM2w2cmJiTmIrMXpoR25xUUFhL21LNzdlT1UwMEM4VUZkL25Ick5hVFBranVxQ2c5dG8xckphbkpERzJyNUNKNHd2VGw5QWQwUjBYT20xL3ExdVBQalExMXQrZk5Oelhzd04wZSs1RzVORklwbWpxbzByNzV5MVptdnVJMTFyMDdNeXRuNWhuWEFsbkdjT0VYYVBuYWdzNEhNaHNUMVlHZDM4VEZuemFyM1k3RXU2OVhwMlovVDdkS3YveHpkSmNSeHZ3dXFNR3RiYWxPbkNSK3VZQ2xoMmt5cWdvK21ZZStyVTBMU25xN3FxMXp5NjBHRTdnbEp0elFJcy81djJpZElXbjBURHVsVmZuWGo0KzNOYmZuelRRWE12TkJ4TWtjbUFyQ3JOZU92K3I2eXA0T291dHVsWkFUS1NveVBrMUhmZDRLS3RIOVdUTWlnbk54Y2dNWGxPNitWY1VYVjAyUzlzYjFjeGExL1Z3WDJhZGVLRWZZQzJhbWRsdUtuWWhYbUxxVlVGYkcxSk54MWoyUXRLNWs1R3pJMG1sbnM0RXdacnltNHRqOWpMTGJyUHRQYldkYzFhN05FZDhzN2Uzb0o1UG94TnV1WlQrQzViM2Jyc2Q4L0p3VGRWMit3bTJDeEFKRW81TCtYZ0hHTlYrUzd2VitnYW5SWExJckpRTkJpeUpTR3B5U0R4MUZBeGVjOFRBdklrSmRDMjZObGZ1cGFJc3NsdC9Yd3hkbVdOZDRjVEFaV2lYQ1Ryaml5T09iWnprZEl4bFlpTGp2dU5tM1dvY0FDZnBqdG1odkVya2xySEIrUzBjQ2VjRFlEVmpiVlBUN2ozZDNWUDEzck5HUWhVcGpRbWl3a1ljb3RMYTVpNTV0bnNZRmZiK2V6Mmg2UzdRbGU0WEplNkQ2ZTRhT3NIVE1oVFhLc0JFdGNPdU1SNDZxWnRyeDZ0WHgxaklLQVVLcC9wV2QxeUhhUHB4RHhOeDdweDdBZ0VsSlpqdTlQVnNlMmZOZWZLSTZhRElQTSt5em1acHZtVUZ5eExKTnVLbm9QMW1aTnc3R2hyVU1mVytXM2ZwRlo5cXg4L3V2Y1hVL285OU4ybnh3QjRneEFNSjZUSVpDWXVOcW9PbkR5eFBNKy9zZTIyTHZmN3N3TkUvalY3NHdqNXo0UG00Y2hUL2ltMVhKRFBscVFCaVl1dW0xZC84YXR2RmY2emRmbWpBZnN3QkEyZnJSTUJtcTVwdXQ4aHBYWEh5cXB0Vks2MFVOTlBxU1VqMUFIY0dqcTZUK2xkR2xqMmtkWVpycnJWL25aeldwc0o5SURmbE8xV2Z6RmRnTmdLbnMxSkxVWm1LOXZXT0YvdGIzMy80VWRiVG83ZGxEVUdiNUJnME9zbGMxaElSc1VrK1p1cWVXT05PVGMvdGlkNVVSZjNzM0cyTEF0eDExYlJJUFhzZDBiMUY2SStWVERtRFIxaGVqNlJZdTJ5NkpYL08vSElMVmtYcHFSR2gzU1kzem5XalN5MXFRTy9jTTYrT3ZLU2dNL0psalMvRDgzdnMzd3U2cGdiK3VOdXNBdDFMSkZZRDZMcEFld2JuSm1keXFITndwUVRSOTFvMGo0cWYxMmY5OXFxcDNic1UvcFZFQy9IanhOTm5pUnJSc2k2RHovdGQ2bi85MjJ2WGRiMUZqMDdRTkNIYytPUHZuWXN2ZTZLQXk1MHhONHJueG9wbi8zZXVrS3hqaUtrZU9IU2VWODk4ZzNYeW91eUJ1b0RHOEQ4Y0lVMXpZNnBwNWF1YTRNVHAyRTZlWGtuU3E4amoxT2VXTnB0SE5MeGhjWkxKTWZhV0NjVGRNZkRma0xhQ2MzbGY5RTlhTDY0NUNjekRrcGJmT0Rha2RvdUVyTnJSbFJwbC8zdXFkdTJSZGZ1R2QzMVZqNWJRTVNKcjAwNFdOTitLaUdwdnhEcnI1eGFPZm5URzFwdkxLRUlXVUtSUkt6bDdjVUxFbDk3YittVTVwbTZvUTlzQU5JYTRzcElhM0JFbUlFMGMyK2NHV2NscERXWWYybUkzYWNpVlg3clBqdVhuWVUwR3RJYVZNYTAwK0loemFyUWZKaTBCa2VpbzNiMTJvTWFUbnhhL3NmLzJhSzcydEx1djF4aXJwY0FycEJvbEhtU21zWjUxWCtmdldIV21xMnVMVjNkcE03WkE0S292ajZ0Vms1NHIwNHhyYW1WazQyciszOVRJTVU2bE5lbU5xTGF0amNuTHJpQ3I3Vk5HS1NOTWZqMExPdjg3NlZCTG0zL0ozdGVrTm9UUi9kUWU1SDhnMGZGQjcwRTg5bHZZTkNQYktOcTNuTXVyWEhtbWcwSGppWi9nVVkrZTBDNGpLUWphVlhwZGFQNjQ2cFBuVm81K2VFZEo3OWRVaVRGT2dwTENzVzZRckZXTkFXT3UrYi9mY0tLZHliL1RKeUg2eFBQUlhHRmZHaDBYcmhCNG9VZG9qNHJhK2YzdXd4Y2tDQzU2UFRFQSsyT1FJSzhDUGdRMU9IYkJueVd3bVB3dDJrL3UrbWwrM2E3U0h5dElpTkZ3UkUwRHl0MGhScnoySnVORE0yclB2eUh2Ti9rVlVqZmQ3OUlHNTgxSUlpbXI0NC9XRFBwemZTbEsvb0xnUzZZdEpKM3RjSVNDa3NLU3loaVhkRzZRckVXN2NIeHkxZS9CVVphZzBpOVk0VjErOG5razhsLzNmSlEydWtGTjZiU21OcDZMMEJyZnl1eTliSHNhbWVtc2RXZFhrTDFXRmo0Q3RXTVhiaUN4ZjM1YzhmaUMxdGVkNFNxN3YwemZETmZ5S3ZobmhXbXpXZjFXS3JIVm8rRmFzWlNQWlpxeGtKVjlxKys3Z0xqNDZLcmJpaTlRS3FwZWRBYjlBYTlJbngrUWxEbWhiSWxwUm0xby8rUVoyd1R6K2FVZlFHRzFTT0E4SmNWd2wxakhCdHoxNG9CaVByVXFaV1Q1S01aTHhhV0ZKWVVTVW9LaFN3cHBBUnhTaVFhRDRpQlAvelpsR3JWZG1PcngxSWRLMmdzS01OblJiR3JEbFE1cFpJcG41a0t5aXcvcVRrSm9GbklKSnFUc0xiSnFaTTYxVXNucWFqbXBPWWttcE9hU1lMc3FtYVNzaXZ0RkpxWlV0V2NsRTFWTXlRMVExSnpVdGJmeC96dDZLSHIzNVlYT05zdTZFVzg2MGxvekVOS2pMZWwwWDlUbnBHN3BpSmErWVh3NkFGQUVOUk1ManFvRUZISzcyVEpJOGE3aVlVbGhZSjFVRmhTWkhLdm9wSlQ5bG1rUWZBU0pGOEtTZENMK01pOVg1ck9QY0U4NWh1SWkxRE9nSlVMNmN5b0cvdC9tNkp1b2hTVUh1N2VxL3dQU2lrb2hRSW9MU2lsZ05LQzBvSlNGV1ArRkpRV1VNb0ZTSnROV1JmQ3RaZEc5OFFOYzVHaGVYODZhZlF6dG9tS1hjZVN2blJBRUZSZlA4R0p5TlRLU1R6QzVnR0dLQ3dwWWwwUm1BS2xwTkE4UzFhYTV5S1pFSUE0RlBHd28rdDFUbzk0SU9JQklwNkljb0lVOFpoUEUvVFMyVXFGZXRYVEZ0cWRsQi8wRXZTV0NhOFMwWGhqclI3RXEwd1h5S2NzUDJqbThLcHNRYnhVRysyTmVlclFvNnA1MWVXYjhveHRvbUxYMzNPL0dCNDlkSTdoMkpON3htUzR4aDU4NUo3RlVnNXVoRjBpSkp0eWN3dE5kL0RyVEwvd2hjZ1NoTENPTmJTOGRNUGhRM2lDUWN0NWZPZFVXR2o5Y0FyaGlWZ0lSRHdTRU1LRHViL08yL25aRUNydURIZ29LSlZ6dmlEZzlUb1N2UW9QOHZPRHdYemxKZGtjNmw0djNzenF5ay8waGp5NU55UUpTZTJsdHpibEdibWlZdGZCTDRwSGo0d1FCTWEvSlF0M3pSdVRyVEdDZU9COGNxbytGb2xReExyQ0VpZ3NBUXJGdW9ZYjFkbElOak1YRW5FSU9oMGZoZWJSNEpqM1d6UWRpSGlJNEVGZEVmSFlJNlJyMWdRbXhVWk12dG5wc1diY2dCWEVDbHVSUWZ2REJ5Q1BEOU9HdnlrbUlxdFNSbFJsSFJpellYQ2pzVTFVN1BxLzMreXlueXlMZW1TRVNGeVZKMlUwNDhxdkhuemtubFpwRE5LUXkrWmxoYklLdmpLa0RTa0xSVkdodFlHeUFmTklNMkhLQ3lFNS9BODY0S0ZHQThUd2NGeWRBb2pnSWVMeFJBQThnQWRQSktLT3Rpd1RhcnRtSjNQNTB5TnRQQVRLUFhqUUZtL21VU3pnallrOUZRNUMwTTZFMEVadTMzcDA4c1JRaUt3UmN0NkIyZzNiRzQxdG9zSUlmWEU4ZW1hRUlNQ1laWWk4MS90WGp5blllTzlmRDdqcVV3TWZaOVdUTGRaZkhOWmtJU1dGSlJTV0lHU1JGTklhR2dCSUlROWo0aEUvSUt3eG9jYVcvWE9LTEkrajdxRFhIaHdnZ3Q3T0I4am52S2V1a2UrVUZsNmNZMEF4SzZjNHNSSzhVbFJmbkxDVlBFa29HeW1yQmsrcnp2ajk5anhqbTZndzdpNzg0bmowRUNBSVlFcXl5SHU5LzMyWFBUeHRSWCtFMEtkVy9qRjlIemtnNVpaRW93akVPb3BzWmdYU0ZPc2NqbmlDOXJiY09NN1VrUlJLWXoxRW5KQkVySEFrSFNqcjFpc3BHN1lnRG9ZVnRKbFdNRjY0bTdkSUFkVVg3YTlYN3F0RERkTUpEWjUyME5oZzdNd3pjdGRVR0g4YjFBMDhlZ29RQkxCMnRYQS9lZDFMMXpjVzNMUHBNVnoxd1k4S0RyR1BiQkR5N1l3amN0SHZiNFJ5NStiNThseFFHeHAyVEdlMEJjVVpNQ2tzb2RCMGdEdjZFTUJvRHNIb1E2TVBNWnBEQ0REVklLQXN2d3p5S2Nzdnl5L0xweXovaktMRllWUVk5TVluT1llSzF4WWJXL00vdW5DL0dCZjBTZ2psU0NTaHJOR2xZMnVHcjlqNW5HR3NxVENXZElOZjBYT0FJSUFYYnN2Sks3NnV0WHJQdy9lNEZnaWhCeWpnMEQ0Z0cwSHRTRm1WTlhxSFJ3b2c3QkV5a2c1aFQ0UjArMFhMeUxjRlpsaytCUFBOTnJTUDB3VE14aXNqWHpXOW1jVTZoeUNjSGlZZHdtQTVyQXFUVGhpaWJzdnJVMmQwUHJpajRJN2lqdUsyTjZpN2llSk8vK2dDd2xIY1ZpUUZPK3R6Uk5XNHJjbVRrV3pJZ0pRTUE2cm1sWTZwT2I5eStaK01WYUppL0pyKy9QY0NnZ0JtSmtibnlqdnV1K2J4eHJ0VzlHZFhqUWhIQzlpWnJrYUpvQ2FqcW5GR0tJZFFZeXBBRGlGMWEwN0lMc1VkZFFRYlo3RDl4RUJJYlV5dEdjaUpnU2NZU0dwTkJqbWh4aG1obkJEa1VCT0ZIRlRBK3NmMlZCVkpLQ2VrQ3NzSjVSQ3FHVWhxWTJwaktqVmtOQUtwamFTcUo2R1JWS0F4TlFlMnB3STUyMmNRb2kzZWRhVXFLcmJyUm9iSUNXVlhaWU9VVldTTmZ1N2FRMi9OMldMaytyZUdIaDllUUxmdzZFRkFFRUR6dkZCUld2RjFyZmN0TDdqbnEvMWRyeUlpVVFwMjFnUFpJQkJVbVcwRjFpOTJvQ2FhbytKaXFZUnlDRUhPYWJYRlV5eHpMRURvVEhmdG5paWtrTEJiQlNkYWVvYUtuQ2lRVnBLaVNhYkFVeVVESmhqYnAwdXFHTHozT3p1RzFweS9ZdWR6N2F0RWhmSHlDT2dlSGowSkNBSXdhaGE1WnNyYnIzdjV1c2E3Vm93N3dHc0l3VWNYaHRQWnB6Z1g2eGRZdktjbTQzT0w3RUlXQUtySXJzcXVJaHVxc3EwWXNxbkt4b3cwL3dNVlhRV1FFOHJaUHNOc1czTkVRVTVOaHRWSE5zd0xrYU1HVE1qTUVjb0paVnZQVlpVdGEwZEtJYXNHcDQvZWtWN1hldjZ2bDd6NzJQUCtoajBudHlaQk4vSG9VVUNVSG52aUttTkNtbkhITisrNzdHdEw1b29qWXVTb0doR09Gdnh4bklrSkhCbTVnNk1MYXFQc1h3RHM0R2htTmxYWjFLb1B6MVhaTzVpK2Z2aDBvSFlrTzZaRDdjZlRhMGV1SHo1OXgva2pkMHpmTVIxWVAzdzZzVnZXTDloeC9rZ1ZqbWJEanVucldWRExlNTBEYndWZS9VWW5pUjJvOHpRSjZ4ZWd0TVFxc3NMVFN0MmVqSzBqTnN6WmttZXNxaERHNG11dGJOMmhIZ1hFbkZrY3ZLN3FSbm43ZFM5Tm10QlljSThRdFhtSEVSR2lCY0JPMHZlUkxXUW4xWnJjd3ZsZ01SNGh6RFZGUjlqK0l4enh6bHZ0UkVCYXVVUjhDZFo4S0pab3FnL1NpaFcyUXFGV05pV29FWmJGdml6ZStVNHBSL0pxUnNpTmN4WTkvKy9QK3h2Mm5Dd2ZvQ3JzYmhQMktDQW1JaTIzN3prNTkwZGlVZXVyRS9kY1ZYQ1BPQ0p5RHlNZ0FsRUtvSk9URy9abHhYNEpwOXVYcCtmYmx3WDc2Q3pWZWN0bjNINDZXZTZudTVBbkhOUGJwZ0dVQWtmeWFrZklEVHVYYlBGdXlWdjF3WFl1VVQ1Y3V0K3FQUXlJdFVEeTN2ZmNNczk0ODIvM1ZXVWRXZnZ3dExuaWlDQlhIRkp5UFJ5MWRVekFIWFdiS3FXbGNNYTBUckJUNlB5UE95NXJyRVM3ZlBVRHRrNGJLOEcrMTB4d0UzWGtpYVVWeEwxaHFUdktCWVRUeS9LbHBIYUVzVkdoSWYxeW8vdjVqOVF1MXJObzFKNEd4SWJrK1YrN3h4K2FVQ3dXamYzYUFQL2FoNmN4MTBVdGlGd09BNklzSzEyeGc3QkhsT1dIUFNLY1R0Z2p3aDVCMklPZ3pHdHlpckJIU0NMcFVvVDNaYVVqSSttS29VUThpb1VKdTl1YTg1U3kvSEE2NnZ1SkRIcUZGUjBtdlN3TGo2QXNuM0M2T1JlS1dEMWZSdExENlVnaEkrYnNSU0xDSHJPaWlEVlJNbjhrakNvSEtUT2szTGh6eVpiOGQ3M0dhdEg0QWNYZk1yZWxuMDJiOWp3Z3RodTJQLzFoKzdqeHFhSllMR3E5OS9HMThERFRtQ3NFdFIyeXl6T0h1NTdhV1VtbUNKQkN5UU9FeEF5WWNrYklPQWxsaVE5ellRZHJxY2Q4TXduSURDazN3azVZd3BaOFF4cXJYVnZGWGg0dk5KZC96dExTcmVjQmlVSFM4dVBmTTA3bXl0dGQ5MWI5bFRMaFp5MFBUd01jZTZFZFV2WnpvUkgyOGxlWEhyeHp6YUVMdWM1SUd4VVVpNHJ4U3E1ZEsvMWJtdzVubi96bFZWYjYyZHBWblF0QVlvZVg2Q25GenpKTzVobTNJOFMzN3lCZmlESS9hODlGblY4V0xhS1lmQ25MVnEyVnJIYkp4blVVemJ0NmdKVjY5aVlLNXdRUUJ5VFF2N2dDeHIrZml6QzQvYXEvc2VpT3kyU0h2T2ZvSWI0b09WVmgyVEZsODJ6MXQyelZDd2FyY1VuS0w5bDJtS0xRaHBnRHlaNzRIbjdPMnNJQlNkdkpOOHMzWGJxT2NVUXZQWFRKbm9tbjVUVmM2dFFMdzJVNHZwZ1p1RlNLR2FseUdjNlBhdGFOZHNqK05iTWF1RlJNZk5GZmdEcmVKaW0vWkp0N0w5bTQ1SXRsc2JGQmorQnhEZ0dKZ3dRd3RtZDkzU3VqZTZyR1JTODlkM1dlZS9xQXZkd281UGFsK2NueENUMzBaZW1jY292VEQ4SnErZVNmSE45NUx1czh4M1RGQTY5eGRNcHBnNjNuRnMzUE5mdnU0dUZrLzM5VFQ2N1FmZ255OUY4Y2t4NWVmUHB5Rkp4L1ZVek93YlQ2UzlRNC84VlFPVGN0OTJVQ1lsWDVwZGZZdzNSdTlhQmVNaWZySTVONnhyYTNqM3FNK2dEcFpkUUhTQytqUGtCNkdmVUIwc3VvRDVCZVJuMkE5RExxQTZTWFVSOGd2WXo2QU9sbDFBZElMNk0rUUhvWjlRSFN5NmdQa0Y1R2ZZRDBNdW9EcEpkUkh5QzlqUG9BNldYVUIwZ3ZvejVBZWhuMUFkTExxQStRWGtaOWdQUXk2Z09rbDFFZklMMk0rZ0RwWmRRSFNDK2pQa0I2R2ZVQjBzdW9ENUJlUm4yQTlETHFBNlNYMGY4RHNQaGVLeUttYjZnQUFBQUFTVVZPUks1Q1lJST0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xX1BSRSIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsidXZtIiwiY3JlZEJsb2IiLCJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwibGFyZ2VCbG9iS2V5IiwibWluUGluTGVuZ3RoIl0sImFhZ3VpZCI6IjMwYjUwMzVlZDI5NzRmZjEwMjBiYWRkYzk2YmE2YTk4Iiwib3B0aW9ucyI6eyJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJsYXJnZUJsb2JzIjp0cnVlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwiYWx3YXlzVXYiOmZhbHNlfSwibWF4TXNnU2l6ZSI6NzYwOSwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0Ijo4LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjUwMCwidHJhbnNwb3J0cyI6WyJ1c2IiLCJuZmMiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fV0sIm1heFNlcmlhbGl6ZWRMYXJnZUJsb2JBcnJheSI6NDA1NiwibWluUElOTGVuZ3RoIjo0LCJtYXhDcmVkQmxvYkxlbmd0aCI6NjQsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjoxNSwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjY2Mn19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTA4LTI2IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiRElHSVBBU1MgRlgxIEZJUFMiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI1MDgyNjAwMyIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTA4LTI2IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjF9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMTAtMjEifSx7ImFhZ3VpZCI6IjA0YThmY2YyLTE5YzEtNDU3Yi05MTFlLTY5MjE5ZjE3NTgzZiIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiMDRhOGZjZjItMTljMS00NTdiLTkxMWUtNjkyMTlmMTc1ODNmIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlRoYWxlcyBQQVkgR0ZDWDEzIGF1dGhlbnRpY2F0b3IifSwiZGVzY3JpcHRpb24iOiJUaGFsZXMgUEFZIEdGQ1gxMyBhdXRoZW50aWNhdG9yIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjUsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfSx7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwiaXNLZXlSZXN0cmljdGVkIjp0cnVlLCJpc0ZyZXNoVXNlclZlcmlmaWNhdGlvblJlcXVpcmVkIjp0cnVlLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNTRENDQWUyZ0F3SUJBZ0lRVTd1Wk1qQTZvUjhvV0xqQ3loOC82VEFLQmdncWhrak9QUVFEQWpDQmtURTFNRE1HQ1NxR1NJYjNEUUVKQVJZbVkyVnlkR2xtYVdOaGRHVXVZWFYwYjIxaGRHbHZia0IwYUdGc1pYTm5jbTkxY0M1amIyMHhDekFKQmdOVkJBWVRBa1pTTVE0d0RBWURWUVFIREFWVWIzVnljekVUTUJFR0ExVUVDZ3dLVkdoaGJHVnpJRVJKVXpFbU1DUUdBMVVFQXd3ZFZHaGhiR1Z6SUVSSlV5QlRiMngxZEdsdmJuTWdSVU5FVTBFZ1EwRXdIaGNOTWpVd09UQTFNRGt6TkRReldoY05OREF3T1RBeE1Ea3pORFF6V2pCVU1Rc3dDUVlEVlFRR0V3SkdVakVUTUJFR0ExVUVDZ3dLVkdoaGJHVnpJRVJKVXpFTU1Bb0dBMVVFQ3d3RFFsQlRNU0l3SUFZRFZRUUREQmxVYUdGc1pYTWdSRWxUSUVKUVV5QkdTVVJQSUVWRFJGTkJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVRRzRaZENVQ1JUVkxsWFJCN2xEbnR2TFFkRVhxcVRXa0MwZXFDZDhOSXhOSklxRlJzcElUWU55R2tqMWhSZ0NXZ3dyMlI4UGY5S2xSS3ExRXByUWVQS05qTUdFd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBZEJnTlZIUTRFRmdRVXNib2pJeEVzcW5rbmplZ04rUTdRR0V4UEFtRXdId1lEVlIwakJCZ3dGb0FValQvVHJnWVRXN1JwM1B6Z2pFNEJwMTAwWVhjd0RnWURWUjBQQVFIL0JBUURBZ0VHTUFvR0NDcUdTTTQ5QkFNQ0Ewa0FNRVlDSVFDRFFmbThlSVNsdVJicVR0MWE1S2tGL29KRUdrbzFYNm9hSEhQRzg2MlpTQUloQU56d0hkN1dGckF5YksyMS8yaXJqZnh4Tlk5YVlPczNlRDBHblRHK3FKYkYiLCJNSUlGQ1RDQ0F2R2dBd0lCQWdJTkFMUEhxTXJSbS8wbnhvR3hpakFOQmdrcWhraUc5dzBCQVFzRkFEQ0JvVEUxTURNR0NTcUdTSWIzRFFFSkFSWW1ZMlZ5ZEdsbWFXTmhkR1V1WVhWMGIyMWhkR2x2YmtCMGFHRnNaWE5uY205MWNDNWpiMjB4Q3pBSkJnTlZCQVlUQWtaU01RNHdEQVlEVlFRSERBVlViM1Z5Y3pFVE1CRUdBMVVFQ2d3S1ZHaGhiR1Z6SUVSSlV6RTJNRFFHQTFVRUF3d3RWR2hoYkdWeklFUkpVeUJRY21sMllYUmxJRkp2YjNRZ1EyVnlkR2xtYVdOaGRHVWdRWFYwYUc5eWFYUjVNQjRYRFRJeU1UQXhPREUyTWprMU0xb1hEVFF5TURrd01URTJNelExTTFvd2daRXhOVEF6QmdrcWhraUc5dzBCQ1FFV0ptTmxjblJwWm1sallYUmxMbUYxZEc5dFlYUnBiMjVBZEdoaGJHVnpaM0p2ZFhBdVkyOXRNUXN3Q1FZRFZRUUdFd0pHVWpFT01Bd0dBMVVFQnd3RlZHOTFjbk14RXpBUkJnTlZCQW9NQ2xSb1lXeGxjeUJFU1ZNeEpqQWtCZ05WQkFNTUhWUm9ZV3hsY3lCRVNWTWdVMjlzZFhScGIyNXpJRVZEUkZOQklFTkJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVHQ1ZLWmY0U01sdUtTUUFlVzA4bFpodis3UmxXVWlmc2FGM2Q2V3NQTW1oNnNaRVdxKzVIRGRRbDJPQ3lpY29MeXIxL0doWXBaL2JGWmR1a2VIQTd6cU9DQVJjd2dnRVRNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdIUVlEVlIwT0JCWUVGSTAvMDY0R0UxdTBhZHo4NEl4T0FhZGROR0YzTUI4R0ExVWRJd1FZTUJhQUZGeGw3WEh0OFlLMHA5bnNKT1RQWll3OXRxdU1NQTRHQTFVZER3RUIvd1FFQXdJQkJqQmpCZ05WSFI4RVhEQmFNRmlnVnFCVWhsSm9kSFJ3T2k4dlkzSnNMV0p3YTJrdVoyVnRZV3gwYnk1amIyMHZRMUpNTWk5VWFHRnNaWE5mUkVsVFgxQnlhWFpoZEdWZlVtOXZkRjlEWlhKMGFXWnBZMkYwWlY5QmRYUm9iM0pwZEhrdVkzSnNNRXNHQ0NzR0FRVUZCd0VCQkQ4d1BUQTdCZ2dyQmdFRkJRY3dBb1l2YUhSMGNEb3ZMMkZwWVMxaWNHdHBMbWRsYldGc2RHOHVZMjl0TDBGSlFTOVNVMEZmVW05dmRGOURRUzVqY25Rd0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dJQkFJcHVMeFNHMDBWNWxrT1dxRTdyWEZ3cGEzSzBoaUwzVGowaFNvQnd6dUhwL1FhVURaNFpTZ1k3ZVE5OGc3R3dxR1BPUnNLWE5KV2poc3RxWE94VXphK0pLTzBybmpPY2t4dW02a2hIblZjVlJ6UGpJVVhEd3l0ZURhL3hwbEhkWDJneUIvR3E1Y0hwb1J1NTlSaW44WjZVYzJuQ0RyZDFkU3hUUVpwRHkzN2lGcUh6bW5sYzJ0RnRNc1hZTGRDV2NpZkMzMW5YNlVnMS9mTjFEcWppLzlJUURncDU2cWFtTEhEOC9ZZnl6eGUvWEw2RCtCSGxhL0o2MVAxdWVRTnk1MEhSQVFEZ3VpcU8rQ01ybEFoTVBMRTRrbGlLSVY1N3BtUW1mOW4wTjNJU2lDQVB0YlkwcGxEQ0dHbHRlR3NtK0k1SmZSTUNNdk5ubkkwMjVuaVdZRGs4YVZlSi9LSjFaK3dCRHNJMU5iMms1WFNQUE5haWRDUFBvdmZkalovZ3l2ZEc1N1NqeXhFdm5DMGRwUEhlNkYyRzNKWE95eXFSZVdXSXRwNDVsdVVLWDZ5Y1YrMkhXZTlVU3duMFRHZVg4VUk1RHhVMnlTODgvZllmWEVrRDBzR2ovc0dieWRhOGV0dUJCVENicE5BdjhpWEYxdE9sSHB3aUVyOVBKMEk1MGJrMkVkSnAwaG9vbmQrQ1NGakdMV0FKOStBYjZ0YWYybXUwa0FFRFk1QloyVFlzU1h4UFZVRVRLNEtvN3B1V3dhZGZqcXp2M2pSc21mYjVJWkI4RkhrYVFoZlRPeEQrZ1ZMTjNGTkNNOUl1OW5Sa3lNNkRSNzlOOWRsSUt3YzhUNmhPVzBwWHZNVnlYZWY1QitkMmw5Rnhmd0FkTG81RzZrMmZPeVBJc044UCJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFRd0FBQUFnQ0FZQUFBRG5sVVpxQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUVuUUFBQkowQWQ1bUgzZ0FBQUFaZEVWWWRGTnZablIzWVhKbEFIQmhhVzUwTG01bGRDQTBMakF1TWpIeElHbVZBQUFLMUVsRVFWUjRYdTFkRFhBY1pSbStOT0FmS29nNldPMFFjcmVYM083MVI0MW9IZFNxcURBT2czK2NZRVhCb2xYUlRFbjIyMHRhS1RjNjRtZ0JxekJpRVVWcEJkcWl3d2hxU2RJUzJ1cFlTZ3ZSdHBUU2NrbGpXekhhZ2pwU1JkcjR2THR2anJ2azI3dmR2ZDFMam43UHpETjN0L2QrNy90K2Y4Lys3OGFLME5EYWFyMnFPZFhab3FXeUg5UjBhMEZjdDY3V2RIR1Rab2pWQ2NQcVNlalcxb1F1SHNPeS9lQlRzRG1NLzU0WlQ5aitMV0dJZzdEZkIvc0JjRFBzZjRYZlA4WDNiMnVHMVpIUXpVOG1VdUtkeVdUSG01cWFjaS9qSEFLQnlpZjBiQnIrTHdhWElQWVBrTWRxZkw4WGRXcGxzMUFBMzEvUWpPdzk4TDhTOWI4QlhJUjIrbkRjNkRvemxzazBzbG5rUU14a1BHWE85RUp0Vm5ZR0Y0c1V5Vm5kOFVUYWVwOGJ3KzZMYWtCajVpemRiTkpTMXJ4RVdueVd4ZzM2RW1QZFdvUFBEZWpmN2VBVEdNc0hhRHpUdUM2aGJqME4vcFhtQXNydWdzMFdMUDhOdUJKalpKbVdFbGNsMDltUEoxSm1XMHRMNSt1aUhCdUdrWHNsalg4N25pNEV6Vm5rOUF2a3NRbjU3RVNkaHJCOEJNdVBqT1dQLy80T0hzUi9lN0Q4WWRUbGZ0UmhGZmdkTEc5SHUxd0FmenI1NWpBT2tpUUtodlZiR0I2QzAvL2krMmlOZVJ4OEZnbnZSZnhmYWluelNrN05FMGlJVVBiZjQzd1dtTlROZDdCcEtFQTdMWmZGQVk5enAzeVpUU01EaVFWaS9VK1NnNVFZQUlmT21HMmV3c1VqQS9yaFc3TDRCZXJtajloMFVvQjJPQitUWlRXNEIvazhPeUcveUNpT29XMUlZSDZIOFhQejlMYmNLemlsUUdocE1admhaeUhHd0czZzQyQms4NVo4bzkwRzhYME5pU3MxSXYyUUdrOEtkV3N6dDRzbklQOFJxUjltRFFYRElkWlNiQm9aMElsM1MyT1haWFlwRjQ4TVUxNHduSzFiZVc0MXBMM0ZFUUNKbFBWV3RERzJmdXlWck5SM3RCVGRTakI4WXJJRm95VnRubzJPQ3pCZ3hETkJCNnBYS01Id3hpRDlnSzNLYzZQY2t2QkdKUmkrTWNtQzBZRDRmZEs0WG9oOVcvWVRDWlJnZUtOdndjaGtHdEcyZTJXK2Frc2xHTDR4bVlKQmF4bHBUSStrTlJRZG1HUjNvVU1KaGpmNkZRdzZjQ3J6VTN0Q01MRFd1UXNkM1IrQXczS25CUTVLeW5qaGpkeE9ubkRpQ0VadUdqcnNZV2xNSnRwaVdVSzNCbVQvRmZFdWRoZzZVUGU2Rmd6MGJSNmZhNk1tblkza2xEd2hhWWpMVVU2ZXMyN3QwZ3p6bTdWZ1V1OTZENmZrSHhDYTYyVVZHQ01xOGcwMmpSUW5pbUJvUnZZaWFUd20ybnRmVzl2Q2s3VzBkWUhzL3dKMTYzazZlTVp1UTBXOUN3Ykc5SzFzT3FXQXZJVTBYNXRpRFp0TmJTakJjR0VFZ3RIV2Rzdko4RTJuQXVVeGlicDVoV005Mm9EZjJ5YjhYMEt4M3JFTkYwb3dvZ0htMGhKcHZqYVZZUGpDaVNBWWliVDFlV2tzSmliQ2svUG01VTVpYzhyeFFwbGRNUlBwN0hsc0hocVVZRVFESlJnaDRzVXVHSFNSRCtwSVYrVEo0eEgxTEc5ZGpDSFRpTWxSNFZpRzJFN0hSYmhBS0ZDQ0VRMlVZSVNJRjd0Z29KMnowamhNdEhPZWpsMndlUUZZL2xHWmZTbkZmRFlQQlVvd29rSENNQmRMODdXcEJNTVhLZ3FHSVM1dlRwdG5oMFhVKzA1Wm5BSkRGQXpENkRnZC9wNld4bUhHRGZGRk5oK0gwUWIwd2FPeU1tT0UrT1VOSS9jU0xsQTE2bDB3MEY2NzQ3cTRwUnBHY2RxYTdrdVI1VXRFSDQ1Z0Rtd0tpL0RaajgvN0lFUzM0ck96ZWFhWXpXbFVoM29SakpvelJNR29PQUVOYTBpMmRUR0dlRXA4VEZKbVBEdll2R3JVdTJDRVFicWhrc09GQnN5bGkyV3hhc1RqNk5kMTJwc1h2NTdUQ1FZbEdDNE1TVEJhVzYwM29vMWRiNnF6cVZ0ZlluTTU2QXBCdzlveG9Wd1JNWWxHTkszOTFWeWlLaWpCaUVZd21sUGRMYkpZdFNUYTdxSGlBK3Urb1FURGhTRUpCdHB2aGRUL0dIV3h2OXpXeFJpMHRQaUV0SHdKeGJWc1hoV1VZRVFqR0hSd0d1T2gwZ1Y1a1RPZU1pL2hoUHhEQ1lZTFF4Q01zMXF0Vmd6dThyZXZweXlQandId3NwVmgvU3VWV2pLZEN3U0dFb3lvQkFPNXA4MzNvcCtlazhXc0ZkRit3YThTVm9MaHdoQUVBMzdXVFBCYlJIVGNBZXhHdkpUTkhmUU1OY2Y2QnMrUDllYm54ZnFlUEpXWDJrQ1p6SGdmRXhqQ0dRSWxHTkVKQnNGK0VKRXVkc3ZpMW9iaVQ1eUtmOVNOWU9qV1pqVHlmYUhSdWQ5QUhvdFlwV0E0TnhxSlkxTGZUTlQ1SzJ3ZWk2MGZNaUFVRDRLakJmYm1qOGI2OHN0ajJ3N2FEMnFoZlUvMHh5NlpyekhTMnF1bHBUTmwrd3lJdWhjTWpCVTY2MVFObTJjdVBvUERSWVRSQmpwYlIyTUFPVjlIWnpPUTk4L3cvZll3aVBIdGZqZTBidjJGay9DUGVoR01PcnNPby9MdDY3bzFYRGdWdWlFL0J3THhqeEt4S09YRzJNNmR0aTM2dzhPUmRuR1A3VGNna0Z1ZEM4YlV2QTZqbGtpa084K1R0ZzJJTVhTWXpmeERDWVlMcXhBTUw3ZXZvNzd0dG5GLy8wbllrdGdoRVlseEhMcWF6SjJ0akVxYnM5aXlTV1huMnY0RFFBbEcvYU9zWUJqV0FUYnpEeVVZTGd3c0dMbHBLTHRWNnBOSkhWWjRZSExmL25mSkJXSUNoMkhkUUVYaTZld2xNcjhsZEo1SFl0djdoUktNK2tjNXdVRDc3R1V6LzFDQzRjS0FndUhwOUdkS1hNWG1FSXg4dTBRY1hQallhKzB5bVV3ajJ1dHhxZThpb280WDJ2WStvUVNqL2xGaGwrU1BiT1lmU2pCY0dFQXc2SG9LN0E2VW5jaW81OEdtcHN0ZWVCMUQ3OUJYNWVJZzRmM0RwM09wR09MTWwva2Z4eDJ4ekZyZmo4VlhnbEgvcUxCTHNvWE4vRU1KaGdzRENFWWlWZjcyZFdicEpkdzkrODZSaXNONDlnN3VoM1ZoRjRQRjZRbUovMUxxMWdJdTRobVZCQU1UOXU3eDcwd0pnL1RZZlU2aExKUmdWRWFGWFpJSDJNdy9sR0M0MEtkZ3pKNXRuZ0tmQjZTK21Qai8wSXdaSFMvbklnNUdSeHNoQmdOU2tTamxZaTVSQVBydVVsbWNZbUp5L1huRzNIRXhLNkRpRmtaRXhCall5Q21VUlNYQlFEdVBvQTVibzJiU3lMNmRVL0lFM2lxVW5nWU5tMmdEMTdOMCtHOFZwK1FmU2pCYzZGTXc0cnBsU2YwVUVURk5OaTlGei9ETVdHLytpRVFrSFBibU44UzJiWnQ0K2JoemowbjVKM2lCZEZzMWwvQUUxTDJ1QmFOV1RPcmlBNXlTSnlEdjc4cjgxSnllcnk2V1FBbUdDMzBJUnRPYzNHbG9wOE5TUDJQVXhWTmwxL1RyOHEyeHZ2eDY4UGtpc2ZnbmZsOGY2eDkwZlFVbDRuNUdHcStZdWpoeTVxenUxM0NSaWxDQzRZMTFLUmowV2tndEYvd21SU1VZTHZRaEdGNG1HQWFMWVBQeTJEZzBQZFl6OUg3c3BzeU45UXhVZkMwaVhmeUZQdG9uaTFsTUdxeGNwQ0tVWUhoajNRa0d4Q0twVysvbWRJSkJDWVlMUFFvR3ZZUWE5dVhmNzFscDY2SktsSHQ4L1FzVVIrMFhUWHVBRWd4dnJBL0JvTGZyMlFmSHIvR3psZW1LS1NNWXVua0hUU3pFbEw0K3NGYUNnZm8rQis3V2pPem4yTFFzbk5jR2lEMVVUdWJQb2RuRjVwR0F6cGdndnV0V0J1cjZIN3RPdXJpVWk1UUZYU1dLTXQvSEJONUVheVhVcit3OU1jRXBqdkdLNHZmSWJ3VmR3OElwbEFXTkJaUzVEdldoTjVYbjRlZG9xZDhvaUZ5eDJ3aytpdS8wSXVpbDlLd1RUc2tUNG1seER0cnpSbTVYalBVbzJwWGU2RzQ5Z2p4dncrZkNoTkdoY2Zod1FDOWphVExFRzl4b0dGZVd2aVkrVXVTbTJRK2NvWGR5Nk5ZaU5Pd3lWUHJIR0JoM0pvenVVQ3NlVDVtWFFmRi9qaGcveE9mWE5kMjhnam8wYUgzcExBbE5OR2R0TDVZaTU1dlFnYmVqNCs2Zy85Z3NNcUFPSDNIYVNmd0ViWGNEdm1lVGh2VXBUZTk2eTRRek03NlFtOVkwWjlGcGRQY202dk5wc0F0OXN0eHBPK3ZYNEViRTIwb1RDY3NHU29ubCtCL2Y2V2EvVmNWNTBhU1B4N3RPRGVFQnhnMTB4eStka29YZ2ZBZ3hGaURlMTlBTzMwTS9yRVFPOXlMbUE0aS9CYiszbCtibmtQSUhONFByVUwrMStGd0IyMnZob3gxaWYxRzgxWHBidkEyNVpqSytyMmx4UjI0YTFkOFJQekVmdXdvV2NzRVdpSk16WWorSTN3K1Z0S3NoSGdIL0FQWlNucWpUemZpOHhoNjd1blV1UGRyQTI4TnhZckgvQXozdEk0ajUrVE9MQUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzEiLCJGSURPXzJfMV9QUkUiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwibWluUGluTGVuZ3RoIl0sImFhZ3VpZCI6IjA0YThmY2YyMTljMTQ1N2I5MTFlNjkyMTlmMTc1ODNmIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibm9NY0dhUGVybWlzc2lvbnNXaXRoQ2xpZW50UGluIjpmYWxzZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOnRydWUsImFsd2F5c1V2IjpmYWxzZX0sInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxJZExlbmd0aCI6OTYsInRyYW5zcG9ydHMiOlsibmZjIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN31dLCJmb3JjZVBJTkNoYW5nZSI6ZmFsc2UsIm1pblBJTkxlbmd0aCI6NCwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjQsImNlcnRpZmljYXRpb25zIjp7fSwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjh9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNi0wMS0yMyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjo1LCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IlRoYWxlcyBQQVkgR0ZDWDEzIEF1dGhlbnRpY2F0b3IiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI2MDEyMzAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUHJvZmlsZXMiOlsiY29uc3VtZXIiXSwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNi0wMS0yMyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjo1fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI2LTAyLTIwIn0seyJhYWd1aWQiOiIyMGFjN2ExNy1jODE0LTQ4MzMtOTNmZS01MzlmMGQ1ZTMzODkiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjIwYWM3YTE3LWM4MTQtNDgzMy05M2ZlLTUzOWYwZDVlMzM4OSIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IDUgU2VyaWVzIChFbnRlcnByaXNlIFByb2ZpbGUpIn0sImRlc2NyaXB0aW9uIjoiWXViaUtleSA1IFNlcmllcyAoRW50ZXJwcmlzZSBQcm9maWxlKSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzMsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfSx7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciLCJlZDI1NTE5X2VkZHNhX3NoYTUxMl9yYXciLCJzZWNwMzg0cjFfZWNkc2Ffc2hhMzg0X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURNekNDQWh1Z0F3SUJBZ0lVU09FalRmLy95cVJmUFc3UXE4cXRJeUNyQWc4d0RRWUpLb1pJaHZjTkFRRUxCUUF3THpFdE1Dc0dBMVVFQXd3a1dYVmlhV052SUVaSlJFOGdVbTl2ZENCRFFTQlRaWEpwWVd3Z05EVXdNakF6TlRVMk1DQVhEVEkwTURVd01UQXdNREF3TUZvWUR6SXdOakF3TkRNd01EQXdNREF3V2pBdk1TMHdLd1lEVlFRRERDUlpkV0pwWTI4Z1JrbEVUeUJTYjI5MElFTkJJRk5sY21saGJDQTBOVEF5TURNMU5UWXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFDZHZsMjd3Mmd1MWZQWGVFRmJJZHF4MEJhbHZWRFZXclFQSjdIcXZpdUV0WkhseFNMeFNGdGNYcFRvbHZMdm9mOGY0dE1lclFUa1ZHemNtWXptMUVCVDRJSnVNbW9FcWZrRUVoV3BzQURNRnJqWmtxbFpZOUVxeFF6TG9WRUVvbkU1b0d4U2RWQ3hDY0xJYWNrcHlSL0NDWHZqMUJ0L2hUZ0U5aFRsRjRwUnF4TWt4M3BsRjd5OGREWmxSSFdzN3ZibmhtQkNHZUkwWlBFUTZubDJtQ2cycjc0YWRGMnU2SzlyckxmaEJDM1FMRThFUHJncVVzSStoa3VxMnRLNE0yU01PcDh1VVZWa3FVZXUzaDBrcjNXVkkwVzAycGtnck9naUZLTEZOa1NyYlloZGpNQkRqNWl6bXFmYzl4SlJLb0RYNjEycWQ4WkdWSHBUNUFZRlgrMWhBZ01CQUFHalJUQkRNQjBHQTFVZERnUVdCQlRaeVU1RGlRL2EyVUVnRTdxQkswemhJc1JOUmpBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQU1BNEdBMVVkRHdFQi93UUVBd0lCQmpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQVh2bkI0U0x1VUpmWU1TVkdBaHNzTC9TbVdsaTNGU2NjZ3h5ZHZLbEFDY2lkSUlXS1FxYTNxL1FTVUVRekM5RGdFZk1ncjdpQzFCa1RaYklMYm9WNlVaNWtuTnN2akVaV3VNZW9nSjh0Z1pzMWhWdkt3Wml6d0orbUVjbXNqaElyQll1b0wxVDZ5ck9KdktGZzFqditDeTRad0E5QnBrL1YzVU9pcjFWeUs4ZEN0eUh1NnZmb3NvdEFkWXg4RkF1UjI0M2dSVE1WNkp4OEpkaWcySkRJQVFNbHpWZURwU1VIWC9LMkhYUkh4SHdmZ2piZ1VqakJ1LzcycjhPZmVoeWh6SFhJM0s4Q0ZGZGZsTys4bkVPSkszeThGMWl2Z1M1dU4vOFNtY1l3L1NUUVl3aHJ4UHV3ejNuUDhiYU11bTRCQjJublltcEI2MHNYM2JsNWs4UVVTdz09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWZDQVlBQUFDR1ZzK01BQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBSFlZQUFCMkdBVjJpRTRFQUFBYk5TVVJCVkZoSHBWZDdUTlYxRkQvM2Q1OXdlUVNJZ1M5QVFBWGNGTEFRWmk5ZnBlVnoxdFkvV1RacjVXeHBjN1c1a25MYTVqSTNaODVzclMybk0yc2p0V3daUzdJVUg0SDR4Q25FUXg0REFaRjc0Vjd1czg4NXY5L2xJbkJ2VkovQjRQdjludS81bnUvNW52TTU1NmZ6QS9RdjBIYi9JclgzVkZLUG80NWNubTRpblVJV1l3TEZSbVpRVXV3akZHL04xaVJIaDFFWjBOUlZSdWRxdDFCZCsyblNLeVMvT2h5czArbGszZS8za1E5cXZENFpVdGE0VlZTVXVZMGVpcHlpVGhBZm9jb09SVmdEdXV3M3FLUmlBZDNyYmNFdGpUallJb2Y2V2FIc0NtelZQV0NNeCtjZ2g4dExxV01LYU1Xc1VqTHFvMlJ0SklRMG9Pem1lcnBRdTRlc1pnc09Oa0d4SDdkMGtkdlRUMTdzNE9NVTdWSThaaGpnR2FNK0FxOWlFTnU4UGlmMXVkejA3TXd2S1dmOEdsVm9DRVkwNFBDNVdkVGFYWUZiUjh2TnZMNSszS2dmYjV4Tk15YTlSYW1KaXluYU1sR1RWdEZscjZiYTl1K3BxbkVYNHVNdVJSZ2pTWUVock43dXRGRmU2bHFhbDdOZmt3NWltQUdIeW5QcGJrOFZtWTB4c3RucHRsRkNWQ1l0elR1Qk44M1FwTUxqVHRldmRQelNVbko3ZThta2p4WjM5ZlhiS0RmbGRacWJ2VStUVWdHbkJWRjZmUTJpUEhnNFcxNlVXVXd2emJrMTZzTVpFK1BuMHB2ejdKU2V1QXllczhsY3BDbWFLdW8vcCtxV3IyVWN3SUFIV3J2UDBZRXpoWEF0TEFic3NIaHA3aUdhbXZ5aWpQOHJ5cXJYVVdYOVhvb3d4eUF1Zk5CcnA0M1BPQkZYWmxrZjhNRFJpcWNweW93QXdwdXoyeCtmV3Z6L0R0ZGU5c21zenlndGNSNkMxd2JkekJsNk9scTVXTllZNG9HYXRoSk1ya1RFeDBqQVJTSEFWcys1cllrUU5YYitRZ2ZQTHNRNmdYeUluc3JlUWZtcG03UlZGWWZMODZuMWZpVU9rWXZTaGtVUHh2YnVrem95NksxaWhNMWhvM1h6VzZFdlNmWEErZHBpV0dhV2QrZG9Yekx6bUd3S1lGTENBc1JBbFBCQWhNbENGWFU3dEJVVlByOEhnVmNKSFdxK0YwMHBscitETVRkclA0enZ4WTExa05NaHhUK1NlVEdnK2Q0VjVMUUppdHlVR0pOQjhWRlpzamdZQlpNL0lJL1hDVGtqMHF5RE9wRjJBVlExN0NJalVwL0RuVDFVa0w1RjVnZGorc1Mxd2cxZ0UzZ2lnbTYwZkNYelNuUFhieUFQYklYditJRHBFMTZUaGFISVM5c2t5aGxtTUU1RjNjZnFBS2hxMkMwRTVQSDFnWWFYYUxQRGtaRzBIREpPbktXSHA1MUkwejVTT3V4OGUxV0F1WnpkSFFyVGtwOFRtalhvSStsYTB3R1pzenVicWJPM2lmUTZBL1c3dlZTWXNWM21SMEpLd2tLYzRXSGlCa21SOEkzQ0NnSTg3b09MNHF6VDVQK1JVSkJlakVPZ0FQSzhoWVB6YXRNK2VJVHAySU85eVRRbWVyb21QUnh4MXF4QWNzaWxlL3ViU2VFYmNXUUdZRUNnaGNMWTJIeUtqb2dqSDI1aE1wanBVdjFPdWdsaTRlaDJlUncwTzMyYkpqa3l1Q2dOemcwdnpsWU1TaVNzMHVvbzRNRzdoTU9qQ0VhWDF5RkUwblN2akJ6dVRuRXBLODZaOElvcUZBSXVidzhrZzlBckVhUkVXU1pJK2pINFhicDZnOUU5RW5KVDNvYVJ6RE4rTVVKQlFESG41NmE4b1VtRUJ1c094QnMvTjUrdEpFYlBrQUZEajhVR3ZPcy9JV3ZjU2dsR0JodlM3L0ZUWWZwV0dZZERZOGZQQXhXU0EzNXNUQzRwNCtMbTRBYXFJb1BlUXRmdWZLNkpoMFpoeGxic1VYT1NtWE5pZkQ1WlRBa3lEb2ZiYmNjbHhuQThXTkFxeENiUk55a2hYeFFwYUR3NjdmWFVZYnNpRzBLaHR2Mm9lSXZoOHJoUU1ZT2NFQXFYRy9lSSt6bmdPYzV5eHI4cTgySUFNMWMvRkxGT3BscXU1ZUZRWHJNWnpHY1ZDalliTFdHNUk0QlQxZXVScmxieHROT3RNaXREREVoTFhJSXluQUF2dU9FV0UzWDNOZEFmdDk0VmdhRzQyWElRdDBaWDZQZUNFL3FRRmU5cks2SHg3WVU1MEt2SDdmVzRmUytxN0tLQkp4c2dnQlg1cFNBR2gxaklyVmg1elE2dzNSZmFhaEJYbS9hQ2JDWlRqQ1VGVVR5V1pxVzlwNjJNakpQWFZxT3JQZ01PNE52NzRHa2Yrb3dmdE5WQkRRbmpGSnFIU3cxN3BYdmhXVzVLWnFlL1E0OU4vVVNUQ0FWV29RWEZJSEJIWFhlM0ZQclVEc3VHRG10Ri9oSEtUSHBla3hoaUFPUEkrU0pxNlM2SEY0STlZV3prQkpUbzQ2aVVNeldwOFBpci9SaWR1THhLWXNTa3NWOHZMbE9RdmhHWDJZbFIwT0JoQmpDK3UvZ0VjdlkwQXBLN1lrNDFOeGpQU1FuV0ZIVEY2NlVyamdldkI4Q3U1YStsMnZZU1JQdHVWRG83M2hoZE1TSG5VWDd0VGpzVlpHeEFsL1dwdGlPSUVRMWduTDI5bVg2L3RSMXRtbGtZajhXNFgrQ1NqV2NVREdZMU5wUy9DN2hTS3FpTUxNL2wyUW1TV1o3M0RkeitnaW84QkNFTllQUTQ2cW5rendYVWJxdkJreGpVUXNXZlpGZ2J1bzNyQWYrd043ak9POTAreW54NFBpM0wrMG5ZTDFTY2hEVWdBUDRnUFYvN0lkMXErMUhTaG11R2tJcVdSUGd5eE1GcVA4SGZqVG5qWHdZNWJRZmJKY3Q2T0l6S2dNSG90Ri9IZTFlZ3NheEhTcUc2d2ZkbVE1eDhOeVRGRnFCY3AyaVNvd0hSM3lrNSszNmhGN3ZYQUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzFfUFJFIiwiRklET18yXzEiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwibGFyZ2VCbG9iS2V5IiwiY3JlZEJsb2IiLCJtaW5QaW5MZW5ndGgiXSwiYWFndWlkIjoiMjBhYzdhMTdjODE0NDgzMzkzZmU1MzlmMGQ1ZTMzODkiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJsYXJnZUJsb2JzIjp0cnVlLCJlcCI6ZmFsc2UsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjp0cnVlLCJhbHdheXNVdiI6ZmFsc2V9LCJtYXhNc2dTaXplIjoxMjgwLCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjgsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4LCJ0cmFuc3BvcnRzIjpbInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi04fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotMzV9XSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5Ijo0MDk2LCJtaW5QSU5MZW5ndGgiOjQsImZpcm13YXJlVmVyc2lvbiI6MzI5NDczLCJtYXhDcmVkQmxvYkxlbmd0aCI6MzIsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjoxLCJyZW1haW5pbmdEaXNjb3ZlcmFibGVDcmVkZW50aWFscyI6MTAwfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMTAtMTIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDczLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ill1YmlLZXkgNSBTZXJpZXMgKEVudGVycHJpc2UgUHJvZmlsZSkiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI0MTAxMjAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUHJvZmlsZXMiOlsiZW50ZXJwcmlzZSJdLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTEwLTEyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3M31dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNC0xMC0yNSJ9LHsiYWFndWlkIjoiOTAxMjU5M2YtNDNlNC00NDYxLWE5N2EtZDkyNzc3YjU1ZDc0IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI5MDEyNTkzZi00M2U0LTQ0NjEtYTk3YS1kOTI3NzdiNTVkNzQiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiVmluQ1NTIEZJRE8yIEZpbmdlcnByaW50In0sImRlc2NyaXB0aW9uIjoiVmluQ1NTIEZJRE8yIEZpbmdlcnByaW50IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiLCJiYXNpY19zdXJyb2dhdGUiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjAsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjowLCJibG9ja1Nsb3dkb3duIjowfX0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIm5mYyIsImJsdWV0b290aCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJREVqQ0NBcmVnQXdJQkFnSUJBVEFLQmdncWhrak9QUVFEQWpCOE1Rc3dDUVlEVlFRR0V3SldUakVTTUJBR0ExVUVDQXdKU0c5RGFHbE5hVzVvTVE4d0RRWURWUVFLREFaV2FXNURVMU14RHpBTkJnTlZCQXNNQmxKdmIzUkRRVEVXTUJRR0ExVUVBd3dOWTJFdWRtbHVZM056TG01bGRERWZNQjBHQ1NxR1NJYjNEUUVKQVJZUVlXUnRhVzVBZG1sdVkzTnpMbTVsZERBZ0Z3MHlNekV3TWpRd056VXlNelphR0E4eU1EY3pNVEF4TVRBM05USXpObG93Z1pJeEN6QUpCZ05WQkFZVEFsWk9NUkl3RUFZRFZRUUlEQWxJYjBOb2FVMXBibWd4RHpBTkJnTlZCQW9NQmxacGJrTlRVekVpTUNBR0ExVUVDd3daUVhWMGFHVnVkR2xqWVhSdmNpQkJkSFJsYzNSaGRHbHZiakVaTUJjR0ExVUVBd3dRWm1sa2J6SXVkbWx1WTNOekxtNWxkREVmTUIwR0NTcUdTSWIzRFFFSkFSWVFZV1J0YVc1QWRtbHVZM056TG01bGREQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJEY2xsU2tOeXkyZWJWSnVVaDdFRFI0bytwZkZYdERSd0NYdW4wTC8ydTF3VjhRWW9wbXJLdk4yWW1XVTN4ZkVvdTlHWWxnOEZWU3lpdUk3WGhzblZUMmpnZ0VQTUlJQkN6QWRCZ05WSFE0RUZnUVV0VG10K0hrZ0JtaUtLdHhuNUFmcjUyMVRJc0V3Z1prR0ExVWRJd1NCa1RDQmpxR0JnS1IrTUh3eEN6QUpCZ05WQkFZVEFsWk9NUkl3RUFZRFZRUUlEQWxJYjBOb2FVMXBibWd4RHpBTkJnTlZCQW9NQmxacGJrTlRVekVQTUEwR0ExVUVDd3dHVW05dmRFTkJNUll3RkFZRFZRUUREQTFqWVM1MmFXNWpjM011Ym1WME1SOHdIUVlKS29aSWh2Y05BUWtCRmhCaFpHMXBia0IyYVc1amMzTXVibVYwZ2drQXNrNnMzMzJaclA0d0NRWURWUjBUQkFJd0FEQUxCZ05WSFE4RUJBTUNCUEF3RXdZTEt3WUJCQUdDNVJ3Q0FRRUVCQU1DQkhBd0lRWUxLd1lCQkFHQzVSd0JBUVFFRWdRUWtCSlpQMFBrUkdHcGV0a25kN1ZkZERBS0JnZ3Foa2pPUFFRREFnTkpBREJHQWlFQXlRLzlZQ25GajdsMFBMcm1hRFUwQmhQOXdNUEQ3aktFZHZNZTF6U3I2NElDSVFDbzVML1NJWUFTQU9ka0lybTVESklveE1KWUtqTXVhWk1aWTFSNnJ6SlNhdz09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQU13QUFBRE1DQVlBQUFBL0lrenlBQUFBQkdkQlRVRUFBTEdQQy94aEJRQUFBQ0JqU0ZKTkFBQjZKZ0FBZ0lRQUFQb0FBQUNBNkFBQWRUQUFBT3BnQUFBNm1BQUFGM0NjdWxFOEFBQUFCbUpMUjBRQS93RC9BUCtndmFlVEFBQUFDWEJJV1hNQUFDNGpBQUF1SXdGNHBUOTJBQUFBQjNSSlRVVUg1QVVaQXdvMmsrT25Hd0FBSGU1SlJFRlVlTnJ0blhsNFpGV2Q5eisvZTJ1NVNYZlRXMUtoUVlRQkc2U1RBQU80NExpZ29nT01yL293ekRpS0RnNmlxS2lNSXlDRE9Bb2lJTDZJNG9Jb0xvQ0N3cWl2aU9JMk1Hd3FDaTEwS3IzUXJNM1dxYVFYT3Aza1ZsSjFmdThmcDlKME45bHFTVzdkcXZONW51cmtlVHAxNjl4YjkzdlBPYjhWSEE2SHcrRndPQndPaDhQaGNEZ2NEb2ZENFhBNEhBNkh3K0Z3T0J3T2g4UGhjRGdjRG9mRDRYQTRIQTZIdytGd09Cd09oOFBoY0RnY0RvZkQ0WEE0SEE1SHN5TlJEOEFSRDBhNjA0QWl6QlB3UlkwM2Z1K0lpSWlpaWdBR1JWV1JvcUtocWdxdGE0YWlIbjdOY0lKcGNrYTZNcWd4NG5sZUVtRUJzQUJZRExJWVdGSjZMUVlXQW5zQUxVQnl0MWNDTU1BWU1MclR6eEFZQW9aMytya1ZHQUMybEg0ZlJIVklWRWRVVFFGOERWYm5vcjRzaytJRTB5U01yR2hqYkdpTTFJSjBFbGlNc0NmSWZzQnlZSDlnUDJBWlZpRHpnVllnQlhqVTlqNFpGOVlJVmtDRHdHWWdCenhUZWowTlBJMnlFZEYrbE9kUUNVa2tEUGtSZ3JXYkk3dU9UakFOU3RpZEFhT0NKL05CWGd4MEFZY0FLNENYQUh0aVo0MWsxR09kQU1YT1VOdXdZbm9XZUJKNEhIak0vcTVQby9RTGJETnFSZ1VJZWdkbWZXQk9NQTNDYVBjU2lxWVZrZEUwSXZzQWh3Ti9WL3I1RXFBTnUzUnFCTWFBNTRBK3JKQWVBUjdGQ3VvcG9BL1Z6YURiQVEyeS9UWDdZQ2VZR0JOMmQ2QkdFWkVXaElPQW80SFhBNGRobDFmMU9IdE1oOEh1ZllaTHIrM1k1VnVJRlVvQktHTEZueXE5a29CZmVobnM3TFFaK0N0d04vQTdJQi8wOUZVOXVFWjU0alFWWVhjR1VCL1ZBOFNUWTRGamdTT3hzMGljSG9JaGR1K3lBVmdQUEF3OGdkM0RiQUdlUTNVRVlReVZNVUdMQ0FiRmxNN1QxM0doQ0FtUUpCQmc5MkZMZ1VXQWorTFhhc0J4dXJoTlRiaWlEWHdmVk9jamNoUndJdkQzd0Q3WWpYa2NHTU51Nmg4RS9nemNEenlFYWovb2tDQkdKVWZRRS9Vd0o4Y0pwczRKTzl1UlJCS0t4U1VxdkFsNEwvQnFyQ1VyRG94aE4rcDNBTDlIOVg2VXAxSXB5UStOS0F2VzFxOEplU0tjWU9xVS9DRnRxUEVCRmlLOERmZ0FkdG1Wam5wc00yUUF1QVAwSjhEZEdKNFJLS1o3NHlXUTNYR0NxVVBzSG9VQTVCamdvOERyaUlkUUZEdWIvQXoweHlpcnhDTmZLQWp6VmxlLzRhNEgzS2EvanNoM1pjQVVSVlc2RUQ0Qm5JRDF2TmM3QnJ0cC93SHdZekhGUjFURTFOS2NXeSs0R2FZT0NGZDBnS2NBaXhCNUwvQXg0RytpSHRjTWVScjRMcXJmd3hRZlIwVG53b0VZRlc2R2laaDhWd2F2V0tRby91SEFaNERqaUlmL1pBVDRHYXFYQ1R3QW1QVHFUVkdQYWRaeE0weUVoRjJsdllySWU0QnpzZkZjY2FBWHVBVGxwd2pEdFhBSXhnVW5tQWdJVjNSWWw1dlNoc2k1d0duWVlNZDZKdy9jaU9xRnhrczk1SnVRZExaeGwxOFQ0UVF6eDRTZDdlQjVvSG9nSWw4RTNrSThISThEd0VXb1hvVklVODBxTytNRU00ZUVYVzJJbDBLMWVDVHdWZUNWVVk5cGhqd00rZ21NM29LSUNiTHg5cVZVUXh5ZWJBMUJ2anVEOFpPb0tid2V1SWI0aU9WKzRGK0xxZVROQWswdEZuQXp6SndRZHJXVjRnTE42NENyc2VIMmNlQWU0SU9nV1JDYWRSbTJNMDR3czB6WWxRRVJnRmNBM3dFNm94N1REUGtENktrZ2F6dzFwQnJRQ1ZrSlRqQ3p5RmpuVW9wZUFwUVZDTmNDUjBROXBobXlDamdaZUFCVm1uMFp0ak51RHpPTEZDVUJ5dDRJbHhNZnNUeUY4dThnRDJDTUU4dHVPTUhNRXRZcHFYc2dYQXk4T2VyeHpKQmg0UHpOcjJ1N0hhTUV2VzRadGp0dVNUWUw1THN5b0VWUHZjUTV3UG5FSndUcENsRTlXeUh2WnBhSmNZS3BNV0ZuTy9nZUtNY0IxMkxUaHVQQW5TanZCSjRKc3M0YU5obHVTVlpyckJkL1ArQUM0aU9XelNpZlIzaEdWS01lUzEzakJGTkR3cTRPUkRVSjhuRnNkbVJjdUU0d3Q0RVM5NHpJMlNZdWErdTZ4em9uQmJXRktVNk9lanhsc0I3MFNoVXBCRDFPTE5QaFpwaGFJUjVnT29CenNCVWw0NEFDMzFGSnJzT3R4R2FFRTB3TkNMc3lxTzhEY2hKd1ZOVGpLWU1zcXRlTEtUaC95d3h4Z3FrRklralJMTWRXZG9uTE5WWGdPaEwrazFJMFVZOGxOc1RseTYxYndxNE1Palltd1B1QWc2SWVUeGs4aXVwUEtSclNhNXlEY3FZNHdWU0xDSkpJdkJSNFI5UkRLWk5iMVJRZVJkM3NVZzRUV3NsR3VqcEExTE1iUVRFdHpwRTFJV0ZYQmo5WVFERWNmQmZ4eWNjSFcrRDcvNG1mVkJleVh4NFRtNVd0Lzc5ZFJONEI1TUx1ekVwVW54QzhmRkVNclQxdUNnZEFoR0s0YlgrUXVNMHVxMEJYUmoySU9ETGhra3hRUk9uSFp0dWRDUEpyeEx0SmhZOTZlSWVGM1psV1BlSW9ocnZqNHNpdVBXRm5wdlJna2JjU240U3djWDZEZUZ0d3E3R3ltVFNXTEZ6UkJwNlBqYmlWOXdCbkFmc0MvZGc2VkxjQnQ2SGFtNXEvYUNqY3RvbldKcWhMdGVQNjJCSkpTeEQ1QmZDcXFNZFRCcHRSUFI2UmU5MXlySHltRGI0TXV6SzJhWTh2aDRCOEduZ3J0b21OWW50NHJBUitEZnhlMUt6RDg4SmkwZERhd0tIaHVsY3IrYVVMQU40TzNJRHRTUklYN2dEOVA4Q2c4K3lYejdSV3NpQ2JRL3c4cUt4Q09RVTRFOXNXVGJDTmE0NEJ2Z2o4UnNYN3NTcnY5MFQyRFRzelh0alpFZlg1elFyaGt2bW9NVDd3TnVJbEZvQjdFRy9RZWZZcm82encvckFyZzZJaUlrZUJmQTdiSW01MzBSV3gvUVovQ2R5RTZrb2dMQnJEdk5XTlVmUXQ3TzRBZERuSWI0bVhkV3dFK0VmZ1ZyY2NxNHl5ODJIeUs1YWlmZ0pVT3hBNUMxdTFjYkxtUHB1QjI0RWZvbm83NG05VlU2UWx4aEd4bzUzdEdNOEQ2OVcva25qNXN0WUJid1NlZG9LcGpMSy83UFRxVGFWeU85S0hjaTV3T3JaNzdVUXN3VDdScmtma1pqQ25pYkRYOE40KzRjRkxvejczaWpBaW9KckNwaDNIU1N3QXZhS2F3K1c4VkV6RlgzaVE3VU13byttaHZtdXhYdTQ3cC9wejREWEExeEg1bGJlazdRd1MvbDU2ekVMckpJMFRJaUN5SC9DeXFJZFNBWDlWVDhiRTZhVmlxbnBDcHJQOTVGc3pZQnQ4dmh2NFByYW40V1Q0d0tIQVpTQzM1UHVDMHdYdE1JZnV6VWhuSnVwck1TMTZ3STZvL2FPQXZhTWVUNW5rZ1FkUVhKSllGVlM5cEFpeU9idEVVMzBTMVk4Q253TzJUZk0ySC9oYjRNdUkzREpxQ3U4VGtjVmhkd2ZoaXZvVlRyNGxqWmlpWUdmTG1yV3luaU1HUUIvQ21jZXFvbVpyOEZJK3hYWlJ2Umc0QTl1WmFqb1MyRlRlYnlEOE4vQTJQQTFLVHNHNlJNVnJKNTdMc2FkUWNrNHYxVkhUVFd1UXphRkNBUXJYZ0o0Q3JKbmhXMVBBRzRBZklONjNFVGtpMzluaDVldHRmMlAzTHdjUm4zWjZPL01vbU1Hb0J4RjNhbTdsQ1hweVNCSEZTLzRXZUEvd3h6TGVQaCs3Ri9xNWV2eW5DcG53a0E1R085dWp2azdrT3hlUC8zb1k4V2pVdWp2cmtVUlIzQlJURmJOaUZrMnYzb1FXeGdEdVIvVms0Tll5RDdFM3RnRGVUMUNPTTBJaTZtV2FTaElwR28vNGxIemRHWVB0OFVMYUZSV3ZpbG56STdUMDVxQ1FCL0hXbzd3ZnVCSEtpby8xZ1ZjRFAwUzh6d043alhUdnlXam5rbWl1bEFqcWV3dUpUL1g5bmNrenN6MmxZeHBtMWZFV3JObEtla2hCOUdsVVR3ZStDeFRLUE14aTRDeEViaExNRzQzNFhvU3p6VExnUlZGOWVCVU1BczZXWEFObTNWTXRqL1pSaW9vZFFQVXM0SnRNN2F1WjhEREFxMEN1Ujd4UEFvdnlYUjBNelgwK3p2N1k2SVc0OFJ6b1pyZDdxWjQ1QyswSXNqa1F0Z3A2TG5BRk1GckJZVExBQlloOFQwVzdOWm13aGI5bm1kR1g3dERJZ1ZpTFh0elloRExreXNCV3o1ekdRZ1U5T1ZRWlJQVXp3R1hZdFhXNUpJQzNnOXlVR05NVEZQelpYcUpwd21jMHRSRGdnTG04WGpWa20wRG9LczlYejV3SEQ1Wm1taUhRendHWFVwbG93SlkwdWhxUnN4RG1oOTJ6S1JvaG5kK1NKcDcrRjRDdEJnckdOV3VvbWtpaWJVdDdtaEhRaTdISlo1V0taakZ3UHNpWFVka3I3TzVndEx2MlBodURZUERtWXpmOWNXUnpTMCtmODhIVWdNakMwNjFvWkFUVmk0RC9TK1dpU1FHbklGd0Rlb2pCc3oxYWFvaDE4TE1IOGR6d0F3eU9ITG9YbnF0QlZqV1I1bk1FUFgwZ01nSjZFZkFsS2pNRWdMV2lIUVB5QTlEWGp4WTNNd3Y3bXFYRTA4TVBNQ0lZdktKYmtsVkw1QWxRTnRKWmhsRXVCTDVLK1g2YW5la0crWDRxMlhhQ29GTFRmWTJ5QkdpTjltcFZUSWhDWXEzejhsZEw1SUlCbTR5RzZMQ29YZ0JjVFhrUkFidnpZdUFiS3Q1SkdMeXdWZ0djd21MaTIwOW5KT29CTkFwMUlSZ29tWnlGYmFDZkFxNmp1c1NORHVETGVIS0toL0ZyNUt0WlRQeHlZTWFwWnRaMjdFVGRDQVoyR0FJMm8zbzI4TE1xRDdjVStLSVI3elNqSkVhcUY4MmlxSytQSTNycVNqQUFFaG9ReVlHZXlkUjFBbWJDSXVCaThlVERHRWxVVWlldGVQQWVxQWpBdktpdlRSVzQzWDZOcUR2QnBOZVBiMHpsTWVEandPb3FEN2tIY0tINGZFVEVKTU91OGt6T0JTOEo0Z08wUkgxdEhORlRkNElCYXptVFloRThXUW42Y2FvUFRWOEFYS0RpblNxcVpVVTdxM2g0NlJhSXQyQ1NVUStnVWFoTHdRQ2tWdytneG5EM3R0eHZnWE9adnJER2RDd0FMbFRQZjVkbkNqSnowUWlwZ1NjZ3ZoWXlpR2ZBYUYxU3Q0SUJhT25KOFpvRkdVVE45Y0RsVkcvdFdRSmNhdnpFOGVDUm42R2ZKa3pORStKcklZT1NZSFN2T0cvRDZvTzZGZ3hBT3B0RGtRS3FYOEpXeXErV1pTQ1hJK2FWaWt5ZkhpQ0E3OFhpV2sxQlNrVW9Mb3BiM2ZUNkl4WTNnUzNoSk51QVR3TjMxZUNReTBHK2duS2dpakRhT1hVaW1tZ1JiSkgxdUpJR3htdENPNm9nTmxld0ZHbjdCSEEyOEZnTkR2bHloTXVBRHVOTnNkcFNHRDM0S0NYZXpyK1VlaDdxck10VkV4dkJwTE01d0lBbS80U3RLTE85Qm9mOUIrQy9VRzJaM0FpZ0pCN3JoZkxUcXV1SmxQemJWMUFYM2w4MXNSRU1RTkRURDR5QjBSdUFxNmkrN3FrQXB5QnlLcE5Zemp4VnBGQUVDS00rL3lwSXkxV25pZk5mVmsrc0JBT2xRRTFQUmtFdkJYNVRpME1DbjhKUHZnbngyTjJ4bVpROFl2TklocU0rOXlwSUlaNVRTdzJJbldBc0JwQWM2SG5ZYm1mVjBnRmNqSnJsaUtEN1B2OGZraDJrTkpFTlJYM1dWZENxU0V5LzYvb2lsaGN4Nk9rSE5lQW43cWU2dWdBN2N6Z2k1Nk1zeUMrWWNEOVRyZU0wU2xvOEVVL0VUVExWRWt2QkFBVFpmaWdVUWZrQjhOODFPdXlKaUp3bVVwRHdoYlVCdGhCZjAzSUFKRnpuc2VxSnJXQmdQUEdNSWVBaVlHME5EcGtFUHFFa2o1NGdFdUE1NG10YURsUklxcHRncWliV2dnSHdGTlJHTkY5Q2JUSUw5OFNhbWp0MmV4NXZKYjZXc2dDVkpFNHhWUk43d2FTeWZZZ3FxTjRFL0x4R2gzMHRJaC8yaXNiYktYUm1LL0cxbEFVSUNXZFZycDQ0UitEdUlQM3NDUG05V29leE5jNk9BdmF0OHBBZThDSGorLytMYlpzT2R0TS9TRHhya3dXZ013N3gzN3A4UnkvUFhTUW1SaFNCaFE5dmpmcDhJcU1oQkNPYkJnbVh0Wko0MTU0ckN6ZHMvRHB3TWRWSEY3Y0QvNG5xS21BVE1JVElBTGErY3R4SWdhU24rb1A4aXFWb0lnbkdMRVhrZGRnSHo2TGQvcXdQdUN2c3p0d0RzbjEwZEpBOTFzVjEwcTJNaGhBTVdBTkFlQU9BZmcva1dHd0x3R3A1QXlLbjl2ZjBmYUd0czMxWVJKNk4randySk1rVUNYRGhpblkwNVVQUkhJbkl4Y0JybVR5SFpoams1NkRucGRJTEhnMVh6Q2RZM1R5ZE5HSy9oOWtGQXlBRDJFTG50ZkNiK01EcDdkMGRSK0w3QmVDcHFFK3hRcVlVREw0SFJUMEk1TnZBTVV5ZGNOWUt2QlBrYXhqYThadHJZOVJRZ2dsNiswQVYxUHdQMVZlZEdXY2Y0Sk5paWdFMldqcU9UQ3FZc0RPRGx5OEk4QUZzLzg2WjhtYUVmd0pocE13NkNYR21vUVFENDkwQnZEeHdKWGJOWFF2ZWduZ25ZTk1LNHVpTG1YeUc4Y0NrL1F6d3BqS1A2UVBIb3lab3BnaUNoaE1NWUdjWlkrNmpkaEVBQWZBZjJPVklMZElLNWhxZnFjdEVMY1UycXlxWEZ3SHpteWxyb0NFRkUyUno0SGxGNEJwcU44c2NCbnlXZU5aWEZpWVZqQUF5U21YNVBubmlPZU5XVEVNS0Jpak5NdnBYeW05NVBoaytzSng0Vm1EeGdQa1QvbzhDeWtaZ2ZRWEg3UkZqdGpYUGdxeUJCWlBPNXNDVEFyWndSaHlYVWJWbVlzR2dJR3dIcnFXODBKOEI0SWZxK3liVlJHMW5HbFl3OXFtbm9Qb240QzlSajZjT21LZEE4ZUJkQzM3WUFpTUtxamNDMzJKbVM3TWg0QkkxNWs1VlJad2ZwakZRQmNUYkJ2d2k2ckhVQWZNUW44SUU4UStsSXZEREtPY0Jud0Fld0VabkQrMzIyZ0xjRGJ4ZjBLOTZuaFJic3MwakZtaUNKTyt3dXdQZ1VHdzZjNDJheGNTU0sxbSs0TU9zMjBiUU8vRk5iZ05OVlJUSklMS2ZLanZDYWNUK013VDZhSHE3dDJXMFZVbjMxc3FlRWg4YUpqUm1HdFlERHdKdmpub2dFZExLMnVjRVR5WTFBdHZLUENqV3N0aDhhcGdCRGIwa0EreTZUR1FZK0dQVVE0bVllU3BOOEgzUE1nMS9BWU5zcnJTWjRYNHFienJiQ0xTS0UwelZOTWNGdEw2R2g3RmgrczFLSUNLSmh0KzB6akxOc1lleHkvWWN5RWJpbVFCV0N3S1VKREZ2RUR2VTNVYWdQbU1ZSDVFOVFCYWpMRVlJQUVVWkFkMkN6WkFkUkNoU0VJSTF0ZG1TTllWZ1N0dmNJWlhtbm1GMEJ0OTNlSEFiakkxQmtGNkt5SUhZUkRvRFBJdnFRNlJTZzJaNE82MXJ0ODdvUTB0V3lpVHdOOEIrMk5DaWJjQmpvbWFESXNWZ0d0TjAyTjBHK0FnYUtMSmlURGdhdkpjQkx3RTZFT1pqejAwUnhrQ0dZRWYwd3A5SWNHZllsVm1ISjNuR0NnUnJLcjhObW1LR0xyVWVUeUxjREJ3YjlYZ2lZalhvRzRBKzYzZlpsYTNMRnhLazB3Q0xFSGtuY0RKd01QWUdWMng2OWtyZzI2aitBaGlaNmtZUHV6SjRhc1I0L3VIQWg3QVd5Z3cyeEdnTWVBYTRCZVdiWTZUV3BpUlBlb0p4bGNyM0JvaThFVGdGZUEzUXhzenZYUVZ5d0IzQTkwWDFOaUNmcnRCLzFDU0N5UUFzUU9SWHdLdWpIazlFUElyTnBIdzY2SG5oOHFRMEV5ekRKdC85RTVQUFJzUEFsYUo2dnNMZ1JLSUp1ek9JcXFoNEoyTHJMRXhWWTZFWE9CM2hEb3d5ZnJ5d00wUFFteVBzN2pnRU9BdDRHN2FMWERWc0EzNkVUV0YvWERDa2UvckxPc0NjQzBZUGFpT2Y4c0UrS1ZhQTNvYnE0NEkzcGpKRzBMTzU1cDlwYndiZEgrUi9zTXVDWnVSSjBOZUNQTDY3WU93TXJQTVErUnJ3M2hrY3F3QmNoREVYSUxzdXFVWTZNN2FNczNJTXdyWE1iTS9ZQTd3RFdCUDA5QkhhZW5BSmtCT0JDN0JCcjdYa1h1QU1oSHQzRnVsTWlOQktwc1BBUjBGdVI3eHJWRGdKRXZ2a3U5cThmQTB6K0o0L2xyd0dtNy9SckNRbUtvU1I3OHFVSXZ6bExkaWJkb2JING9PSXZKemRrc2RFQU5WRkNHY3pjd05MTi9BeDBJUjl1RWtBY2lhMlEwT3R4UUx3Q3VBN3FMNENFY3JwckQzbmdwRjFBMUFzZ0plNEgrVUQyUGlrZHdMZkEvbTlpdjgxRmUvNHNEdVR5WGUzU3pqRFBwU1RvYllHOTk3QWFUU0prV01TRXNBTEJLTW9xRWxqeFZKT3ArZ01JaWZneS9nZTBTSUN3aXVBdnl0emZQOEFjZ0JxRXRpbVdaL0J0b3gvZnFnMm1ub1ROZ3BoSzlXVjd1MEV1UngwdjNMcXRFZHlBd1dyTnhGMlpoRGYrNE9xdmcvN0pEa01XOExvUU9DOUlBOHBjZ2Z3dTdBcnN4SzBENUZpT3N3ajY1K2I5alBHRG15bkdIaWd1Z3prSXVDVlVaeHJIWkVBVGI5Z0ZXNXZsbmFncTRKakhrSFJ6Q3VWNnlXL29yMlVmQ2xIVUg2aTNUTGc3WWkzRURnRG0rVUsxdGh3Ti9CYm9CZGxBTkU4eUh4Z2YreWU5TTNBQVpRL0FSd0ZjamFxL3g1MlpVWm5zalNMZE5NZmRtVktjemlIQTk4RVhqYlJud0dQWTBQMDd3VDlDOHFUQW9QNTR0aVlMeDd6Vm04aTdKNUhvYkEvWG1LamVDcHBSRHF3KzZUVGdGZFZjREVialVIZ09PQ2VuZmN3cGYzZENwRGJLRDg0ZFJYb01VQi8wSk96MzZmbmc1b3ZBUit2WUl3aDFnVHRZMDNaZHdDWGl1cWQ2akhzNTRYa3V1ZkhQdExaQVlvblB2dGl2K2NQQWd2TC9Nem5nSDhCZmkzRkl1blZBMVArY2FSTGxDQ2JLMjN3WkNYd1B1QWJ2TkNLRlFBdkxiMU9BdG1Nc0VGaFF5cVJlaHJZRkhaM0RBR3BSQ0szQ0x3MmhMMndUNXdYRWM4TXlkbGd3aVdaUlh3cWU2RDQ3UHpRRlFYMUFGUHBnM2g4VmhrRHZvUHlXWVErTFRMaHhyekZSa3Vic0R2ekdNcDVpRHlFdGNvdEtlTXpGd0tuaWVxZGVONjBWUWtqWDlNSFBUbnluZTBZeitzUjFWTVErVHFUVnpEeHNEYjROdXlzNUpnNVB2YnBIUWV1RjlWUEtteWJ5R2UwTzNaMmF5K0lLWHhmdldRRytCemwzZHRISzNJa3dwM1QvV0ZkTEZQU3ZmMzRwZ0FpNjFGOVA3YW9lQlBWSXBrVFBPSWhtRjdnOHlxeXJSeHpiNUR0Ujcya0FhN0dtbzNMWVJIQ1c5VHptYzdJVkJlQ0FVajFiZ0tLSVBJRWRpMTZIZkZ0WUZTdjFQdnkxQURmUWxoZjJlTlN3ZFlhdUxHQ054OHR4Y0tTNlQ2M2JnUURFUFFNRVBUMGdlcEdWTThBdmtaemgrVFhFcUg2QXUyenpRYmdWMmlwV1ZhWjdMUjh1d2NvMXdPK0hKSGxURk9Vc0s0RXMrUEVzemtRMllycXVkajFxS3Y2VWh2cVBSUnFGYW9icWxxTjIxNUJHeWsvbFdNUmNNaDBmMVNYZ2dIc1RJTU1vL29GYkN4Uk0wY2ExNHA2Rjh3NjlmeFJxYVlYcHdpSWpGSlpHc1BCK0Q1aDUrU2UvN29WRE95WWxzZFE4eTFzeE91R3FNY1VjK3Jka0RJZ2FraG55d3VJbk9ROEt6blgvYVV3bGhSdjh1ZEtYUXNHeHUzdllrWjYrbTVDOWQrd1ZoUkgrU2lWbFlPZFM2b3ZPMXVwVkN3WlJWcW1tdURxWGpCZ1JkUFMxUWJpM3dhOEI2YTNsenRlZ0dKcklkY3pVUzhaRnlQU090WEdQeGFDQVFpeUEyQUtBSDhGL2hWck9uUm01NWxUeEZrY3A2T1Y1Nk1OSmlRMmdnRUlldnRKRHdIb0U2aCtFTGljK0hZMm5tdkdpSGsrL3h5UW9wRUVBeUNQOW8zYjI3ZWdPbDdhZEdQVTQ0b0JJVFlBMHpFNVB0TTRkMk1ubUhGS3hvQThSYTdDWmduMlJEMm1Pc2NKWm5vOHB0RkViQVVEMXV5c0dCVlBmb1BxdndDL3BOUWExdkVDQm9IaCtyY3NSODZVaG9kWUN3YWdaWFUvWm5RTVJGYVh6TTVYWUN2Tk8zWWxoK3FnMDB0MXhGNHdBQzFyTmhIMDlDRkN2NkRuWURQMm5veDZYSFhHTXloaDlKYmJlTk1RZ2hrbjNaTkREWGtOQzk4dExkSHV4SzFCeHRtZ3ZtODhkWmI0YW1nb3dRQUV2VGtTZ2FnaWZ5aUo1cXU0SlpvQzYwUU5xZDZCcWcvV3pEU2NZQUNTUFFPMFpQdEFlQmJWczdGeGFBOUhQYTRJMlFhc2pYb1FqVUJEQ21hY29DY0hRbjVrWk5sMTJHcU90OUJrYmJKTGJJUXF3K1lkUUlNTEJxeG9XcExQQVBvQXFpZGo2MTAxVjJOR1dJZExqNmdKRFM4WWdHQk5ianc2WUROcUxzR1cxYm1MNXZIWjNLZDQrYXJ5VEJ4QWt3aG1uQ0NiZzZJWWhOdFIvV2ZnVW16bHpVWm1HTGhYMEZya21UUTlUU1VZS00wMnEvb0FOb3FhVDRPK0cvZ1RqVHZiUEk2NnNLRmEwWFNDR1NmSTVzQlF3Sk5mZ1o0QVhFaGpkZzYrR3pPMkVXM1U1OEhjMHJTQ0FVaXY3aWQ0c0ErVVp6SG1mT0FmZ1YvUU9Ia2pJWEFyZmxJRHR4eXJDVTB0bUhHQ2JBNDh6NkRjZytxN2dZL1JHSDZMSGxUdndXMzJhNFlUVEltZ3A0OGcyNGVIYmt1UERWMEYrbGJnSzhUWEhLdkFqL0NrMzhXUDFRNG5tTjFJWmZ1UnRkdEJXUy9HbkFsNkluYVpGa1k5dGpKWmhlcE50c05XSTI3Tm9zRUpaaEtDYkE3MUtBRC9DM29TdHAzQ1N1SmhUY3NEVitENVQrS0NMV3VLRTh3VUJEMzlCRDA1UkJrMEl0ZWl2QlU0RDNpSStvNHp1UW5WR3pGRmd0NjRyaWpyRXllWUdaRE81bWhkdFJIUXA4WG9KY0R4d09leGpaN3FUVGozb3ZwWlJMYVhVZjIrMG1wZXU3eEhGRlFNRlI0TGFqdDdWM28rVTc3UENhWU1nbXlPZEc5T01Ud2lSZjBNcXNjQlh3Q2VvRDZFOHlEd0VVUWUwUmxieGhUUUlTcmJvdzN1L0Q3UDdMamZ0bFp3TEtVbVVSY0thSjdLNm5GUFcvZkFDYVlDZ3Q0KzBxdHpSbUd0cW40S09CWmJOUDBob3R2ajNBV2NvbkNmcU5JeTA5bkYzdVA5d0NNVmZPWnFyMWpZUGg2amxsdzlRT24zTE9YN3NyYWl1cWI2eTZCUXlHK25zZ3FwajZDYW04b003d1JUQlMzWkhDM1puQkhWdGFMbXM2REhBdWRnaXczT2xmTnpCUGd1eXJ0QlZvb1dTWmZSaUFnQThiWUROMU9lMkllQW00MmZOS2x3Mis3LzkwZkt2MkgvQUdTcjlSbWxzLzJRREJScjJTeG5sbEhnWmhWdmNLcU9GMDR3TlNDZHpaSE85cXNXZWN6a2kxOUVPUTQ0R2ZnSk50eG1OcFpyQnJzRSt4Q3FIMEhZRVBSc3RCVkN5eURJNWtvdEl2Z1JkcGFhS1Q5RDlmZWd5TVBQVjZDVllnRTg3MWxzYjUrWkZsbnNCNjVBWktoYWo1SEFlTXVMMjRHZmx2SFd1MUM5UWRTUW5xSk5vUE5velFKaGR4dUtqNmltRVRrSTJ4YjdUY0NoMkJiZjFUeW94ckJQN3grQlhwOWV0TStUNFpZTnRGUVIrcEx2NmtEdG5YQUV0dVhkWWRPODVYZW9mZ0RoY1JrenBOZnVLdEt3dXdPVU5NSjV3SmxNWFUxeUMzQ09tTEdyVlh4VGl4Q2VzQTFZMWdIb3ZpQlhBWDgvelZzZUJFNVZ1TTlUblhLR2RvS1paWWE2Mm1oTkxTQS9PdFNLeUFIWVpyWXZCN3FCRjJNYjNMWXd1WWlLMktYRnM4Q2ZzUjI2N3BCaWNTT2VSN3EzTnJsdytjNE14dk1RMVU2RVQySmJsQy9sK1h2RWxNWndvNmhlcnVJOTZac0N5VWxxQklUZEdWQmFFRGtKK0Fod01MdFdsUndCN2dNdUU5VmZBb1d5bDVKVE1OYlpUdEh6UVBWRmlQd0g4TS9Bc3AydXMyS2pPRzRGL1FMaTkxSXNFUFJPTFZnbm1EbG1wRE1ER0JIeDVpR1NBZllCOXNOK21ZdXdqVnVMV09malZ1QXByUGw2QTBiNzhhU1FmbVF6TWx6N3poWGFEWG50UU5DMFFqY2lyOEtLMmdEclViMUhyR0ZqUmpmM2FHYzducW9VUEcvUDByRU9CZVpqMituOUJlWFB4ZGFXTGY3UTBMUTNhcVhrdXpJQUNZVURFWGsxOEJLc2FEWUE5NkJrZ1h4YStoQ1hCT0Z3T0J3T2g4UGhjRGdjRG9mRDRYQTRIQTZIdytGd09Cd09oOFBoY0RnY0RvZkQ0WEE0SEE2SHcrRndPQndPaDhQaGNEZ2NEb2ZENFhBNEhBNkh3K0Z3T0J3T2g4UGhjRGdjRG9mRDRYQTRIQTZIdytGd09Cd09oOFBoY0RRWS94OFFMRXR3bHk4T05BQUFBQ1YwUlZoMFpHRjBaVHBqY21WaGRHVUFNakF5TUMwd05TMHlOVlF3TXpveE1EbzFOQzB3TkRvd01BV2pTNm9BQUFBbGRFVllkR1JoZEdVNmJXOWthV1o1QURJd01qQXRNRFV0TWpWVU1ETTZNVEE2TlRRdE1EUTZNREIwL3ZNV0FBQUFBRWxGVGtTdVFtQ0MiLCJzdXBwb3J0ZWRFeHRlbnNpb25zIjpbeyJpZCI6ImhtYWMtc2VjcmV0IiwiZmFpbF9pZl91bmtub3duIjpmYWxzZX1dLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xX1BSRSJdLCJleHRlbnNpb25zIjpbImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6IjkwMTI1OTNmNDNlNDQ0NjFhOTdhZDkyNzc3YjU1ZDc0Iiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6dHJ1ZSwidXAiOnRydWUsInV2Ijp0cnVlLCJiaW9FbnJvbGwiOnRydWUsInVzZXJWZXJpZmljYXRpb25NZ210UHJldmlldyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZX0sIm1heE1zZ1NpemUiOjEyMDAsInRyYW5zcG9ydHMiOlsidXNiIiwibmZjIiwiYmxlIl19fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMC0xMi0wOCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IlZpbkNTUyBGSURPMiBGaW5nZXJwcmludCIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjAxMjA4MDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjIiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMyJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMC0xMi0wOCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTA4LTEyIn0seyJhYWlkIjoiNGU0ZSM0MDBhIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWlkIjoiNGU0ZSM0MDBhIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlRvdWNoIElEIG9yIEZhY2UgSUQifSwiZGVzY3JpcHRpb24iOiJUb3VjaCBJRCBvciBGYWNlIElEIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjI1NiwicHJvdG9jb2xGYW1pbHkiOiJ1YWYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfSx7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX3N1cnJvZ2F0ZSJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmYWNlcHJpbnRfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIiwiYmFEZXNjIjp7InNlbGZBdHRlc3RlZEZSUiI6MC4wLCJzZWxmQXR0ZXN0ZWRGQVIiOjAuMCwiaUFQQVJUaHJlc2hvbGQiOjAuMCwibWF4VGVtcGxhdGVzIjowLCJtYXhSZXRyaWVzIjo1LCJibG9ja1Nsb3dkb3duIjowfX1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImF0dGFjaG1lbnRIaW50IjpbImludGVybmFsIl0sInRjRGlzcGxheSI6WyJhbnkiXSwidGNEaXNwbGF5Q29udGVudFR5cGUiOiJ0ZXh0L3BsYWluIiwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBRWdBQUFCSUNBWUFBQUJWN2JOSEFBQUFBWE5TUjBJQXJzNGM2UUFBQUJ4cFJFOVVBQUFBQWdBQUFBQUFBQUFrQUFBQUtBQUFBQ1FBQUFBa0FBQUZKYnVKMkVrQUFBVHhTVVJCVkhnQjdKWXhiaU5IRUVVRkoxNFlDNWpKQWdzbkhzT09IUEVBQzJoeUIrSU5OS0V6TW5TbXVjQmllUVB5Qm1MZ25MeUJlQVBTSjFqZWdINmY2aHFVeTlQYVhnMEpPK0FBWDkxZFZWMzkvNS9tUURmSDQvSG1pcndIVjNPK2NFR3VCbDBOeXY5OFNqNHQxeHQwdlVIWEczVFJYOEdnNWpjRG41OS9yTDRESDhBTWJCeFd6RnZ3RzNnLzhKaGhHa3MrVkxtYTF4Skg5QVRJaEdNaFpGN3oydk55L0V2aXc5ejlTc2FJck1HKzBKUSs4N1IzOHBYSER0Tlk0bUt1cHBRb29rWmdIb3hacy80RXB1RDJCU2l2T3RXYmFicDlvOUx6Yy94TDRzUGNMV0NJa0Fwc3dXY2dvYmQ5MjRpcnJuWVl4enB5TXZvT0xNQmY0RjgxY1kvV0pVYmthb1p0N21QalloSUEvZ1IzTG56RFdtYk13QXJzZ2QyTXZsSDVEV2hCWndoem1mVTcrTlgzN3B2bnhKZkVMMllReE4rREQwYVl1UVRKbEMzb002STBkbUQvSEZTdTl6dWI5NDBsUnVScUxtSVE1TDgxb2hJQzlQWWxyTlNFMGpyZHJGcG5NWDVqWjhZeEo3NGtmaEdEakNDa1p5Qm56STdjQWt6QkxhaHNuNDBwcm0rT3ZsMVBJR2ZjaXR3UHRpK09KVWJrYWk1aUVHVEhZTnNqNkRNeGllMitKVkhNUzJ2MjZUWk9nY3lOWnVsRjlQYk5pUytKbjkwZ1NPby9ZNUgxQW1UTUF4aDVBN1FHTlppQkZzekJCcXpTV3JFSnFQdyt6WW5kZ3gwNEJ2d1VhMHVNeU5XYzFTQ0l5cHhJK0pGWVphU1pqMEFEWkVTc2ZXbTlwMzRKYXV1bGtiVnVsRjZBN2QzNHZPWTU4U1h4WVpzZEV3aStkU1JGVnFRYlZ5SXhMVGdBRS9QYWNlOTdNNi9Bayt0YiszTkxqTWpWbk5PZ3BTTW9jN3J2Z2VaZzYvTFJtRFU1NGNIaE1jWFU2NWlCak9yTVlQNHAxVzMrVndaQjZ2dEVURUlreUp2VHNJNjNSalVMMFB0ZnRSZW51ZnFCS1hnQ2ZXYk5pWisrYjR3NlR6VzE5Y25kanBMNFdXNFFaR2FKVko4NVVaQ00rY2ZIMm9Sb2xEQ0RqOXVjbk14YWc5aDNTOHlidExROUpVYmthczVsa01pSmNHT2tORTh4RXlMemFzdHJaRDFLZFN2R1BiQmFQeDZJSzY5K25iSE1hN0FEc1hhY2VuZjFPZkVsOGNFR1FYQ2NTRDZhZU5ZaTU0bkhtMVdSWDRZYVg1K2J5eXp0cTVJSkkrYUwwRWMxWnRJdnFpc3hJbGN6YkRPSFEyWUc5RzJ3NnoxbTdnVkdjMVF2RWI3bU5mTlc0dlhRNnlIMDI3UHVibHRPZkVuOEhBYk5qUXlqelBIaW96bDYrOUVNMVN6QUhUaTkrV2ZaSitGVmlpdXZ1cmgzUTh4ZVRCUHlHK3RUWWtTdVpyQkJSa0pFd1RhUTdBUVRseGd2VUlMdlFmZW1tY3ZnR1dnVGF1dXZrWmpxbzFFNjAweGFNUGRudE5xWEUxOFNIN1pacDZjSFl0R2N4dVdXZ2ZpamlWSU44d25ZaHhvdlZQdXJWRHRpcnYwKzcwMWFoOXpiRWlOeU5XY3hDRUxSZ0ZaaTlKQ2JCY0tMNTh6ejM1NjlYbmljejIwdis2YWg3MFk1WWpMUTM3SW1KNzRrUHNnZ2lMd0JLK0NGZEFZUWIwTHVpYlg5SENSa0cvTHFvNXAxZ2hkcVoyaVA5WWo5VHdhUzkvRk5pUkc1bXFFR2ZZU01FZGZvelJtSDNKZk1VWDVzTjhSR1l2ZGdGM3A1a3hZaGQrcEJiSjNpLzZsQkcwY3Vtbk53T2QyRVRqeHpDVHc2K0wwVjhTVlE3em5RZWdTaUVWdG5vc3kxZnFjNDY3SEZjcmVqSkQ3MEJrbUVpRDA0c2lKMk1IS00wUnlKTnpFYXZUbHR5Rmxkby82cURmbDVpbmRtcEx6VnI3VXVNU0pYTTlTZ1B5QlFpYVFlNWczdzVraGdjMG8rNTVlc1RiUkdiMDdNK2JxdWovYUVIclg2RS9QNzl5bFdxelludmlRK3lDQ1JzQWNpODBCY04yZmk4bDVBTktjTmUvV1RlUUM3RUIrckg3RytuMVFWYWs5bnE3YkVpRnpOM3dBQUFQLy9YOUxsUHdBQUJQTkpSRUZVN1ZxN2ppTlZGQndrSkJDc3RCMFFFZXkySUdTRHpwYU1Ec25XTWNsMlNMQ1NIUkJzTnY0QXhEZ2lRbkwvd1hSQVBpM3hBVGI4Z1AwSDIzOHdWTFZQbWRvcno0TngwRzNKVjZvNTk5WTU1L3BVeloxWmFUVVh0N2UzRjAvRkJkYTNML01DV0FPM2hnL2ttZWZDZm1ZNTFxMkFMSExWUGJrc2FuWDNsbjFBa2ZSVWNWZHRmQlBjN0tuNjJQZGtjOWlNWWQ3WlFCSkI4VG1INDhMZWgwN05vZERPN3RnYnQrdmVmd05vdU81ZkhMaDNHMXhxWEk2K2ZFaURXaHVjQXE2QS9tVWNFUEdRT1RTQmdpWUE3eVhtUUJWUkJqSG1BZWNtOFprMFdmeU0zSkFHTlRITUJySGtNRnpZWjBBYk9RM0x3WHZ6RVBtZDdwSjhHYjJxdnkvV1VWdmJIVTF3TStOYWNrTWE5QjdEWEhJSUxaeExJQlh2NWxRSDhwWDE4eVhkWjQ1eWVYeVd6b3daVUNUOXo0WTA2RE1UeG9HYlpEZ092UVQwY21pT0M2SVpFOTNCaURQdm1RS1h3Qld3QWJ4SCswWFVlNzYvSytsNVBaaEJKcWpHVU9tcm9aQXBhN2l3WjQzRU1kS2NZcGU5L3l2cVNtQUZlUCtXWGVEOFhwbm1YRG1ZUVJqdXkyUm9DYUNZWGp4aURxeVR1by9NUVc0Q1VGUnI0R3VzZ0V6MlliOEU5Qm40TjdnM2lEWGkxc0hOakNzR015aUcyZGd3RlA2V1BCZjJITFN6UElYUXZGNDBZZ2xzQVFtOEt5NnNaeG4xcS9pTTNQdUQ0NzI2S3h2YUlBNi9BZHdZRHRqYWtCcjJpZ0s0a0dPZitNZkVOZXI3VjdtNzRiK3Z5VDE5VFhDOWlVTWI5RnlqWXFpN2pPSExtbGhkbllqcURRYVhzd1l4QTk0QVM4RE42NWpUUFlyZytDcFZWNUlQYnNIOW9BYkZNRDloSUg2SE5hVEhKZmk5S094VGMvYXZpbmVsQy9VbFFJTjFaM3VncHJWOHlUek81QXJ1eDJCUWJRTkt5QTI0a2dOeVljOVh3YUdWWjZ6NjVDNWY0ZHhFRGVQRWNnWE9idEsranpYUm8zdG53ZldSK3pFWVZHSklEWGlOZmNuQnRIQ2VBSjNWN00wQmx3R3BjYnFyWVo3M0lQSU84VnZkSFRudm53ZFhNbklOYmhDSHdQQy9BRG4zV2ppWGdBOVBnWHdKRldzUWFjNGFrUEJEc1dZdEYrcHVyTlpmbUg5R0ZiWFBHTGxHWWRCdWxGNUVBUkVMWUd0aUpId0ZybUF0WW1vT2pac0NlVVQxTUpiUlUyRXZma0dPQzF4cmZObVQ5bVUwQm1ISWYyeFFDV0hzeFd0bW5HbmkybXFaNzQyem1wbmxHL0k0NThhMVZyczF2aFN2T0NhRFNodVV4bXdBdm9wTXcySS9BVHBBQnU3TkFjZCtyMld1cjdOKzlYVUhPT1krRjY4NEdvTTRFQWI4RGJnQ0NnMFlQTVczZ0FReXVqbDE1Rnk0MStkeHo3N2Y3aFgzTjdsMGpjb2dIdzZDQzRBL0t1c1FMeUdNS3lCblBTSnJQTmUvSW5CdVVJWXpvYm8yZXVmR3ZTS1hydEVaaElGZkFWc2JYS0lZK1dxbUVvRjlsZFRObVFQblpud0libUsxVFhEcjRCWThIMXFqTTRoRFl1aFUrQWJjSmRDL2pxaVpoVGdhUnl3bEVQdTU1ZXFvcjQxamJ4N25hL1VkaXFNMEtBVDlEQUg4ZmZUR0I4YzVBeHBBeHFUbUZFbXVqSjdPZUpvekIvaWp1amZkUDBmNzBScWtBUlVwSkVTNTBOUWMxbXdCbWRlL0Rwd1h4alhZcys1UFJ0MS9WeHk5UVJEeEF2Z2Q2QUFKVjV4S0dISVV2YmFhVFhDRmNlemppL3BSZlEvRjBSdEVBUkNVQXplQWpPRStsempzYVVKbmVmNHlKNWNCYStOL3hmNEw5VDBtbm9SQkVnSnhyNEh2ZFdiRWVRYklPRVkzcDQwY3VlazNMMTUrNHIyUDJaK1VRUzRJZ3I4Qy9nZ0RaTkFHWjcyY3Y3Qy9CdDRDejczMy8reFAxaUNKaEhqK0dQMEFmQWQ4R3ZoYStXUGpZQVlkODhHbjBudlUvNVdjaXNoajVqd2I5TUNmLzV3Tk9odjA5RDhRNDQvbStRV2RYOUJ4TCtoZlV3VFl5UkNhclo4QUFBQUFTVVZPUks1Q1lJST0ifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiTk9UX0ZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMTgtMDUtMTkifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDE4LTA1LTE5In0seyJhYWd1aWQiOiJkNzc4MWU1ZC1lMzUzLTQ2YWEtYWZlMi0zY2E0OWYxMzMzMmEiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6ImQ3NzgxZTVkLWUzNTMtNDZhYS1hZmUyLTNjYTQ5ZjEzMzMyYSIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IDUgU2VyaWVzIHdpdGggTkZDIn0sImRlc2NyaXB0aW9uIjoiWXViaUtleSA1IFNlcmllcyB3aXRoIE5GQyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzYsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfSx7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciLCJzZWNwMzg0cjFfZWNkc2Ffc2hhMzg0X3JhdyIsImVkMjU1MTlfZWRkc2Ffc2hhNTEyX3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRFNqQ0NBaktnQXdJQkFnSVVUbmJiR0lSMk5IdnpxSUtGQWVRd0cxWEJpczB3RFFZSktvWklodmNOQVFFTEJRQXdMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3SUJjTk1qUXhNakF4TURBd01EQXdXaGdQT1RrNU9URXlNekV5TXpVNU5UbGFNQ1l4SkRBaUJnTlZCQU1NRzFsMVltbGpieUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRUVnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBT3NYajNrMDRCYW40VFlkdFpLcUQvT1BKeHlEeWFQbUNCVUZVaWFaSWdUdGVabmozWDI1RGhncFpaWHNDNEQweWRJY3JsQTZ3TlVJbk9STC9MOXpCYlRFSU1BVk1HbzZnN1VLQW1iMk1GNkFIYm5oWUpkOWVpa3VwVk5XU2hITllOYzRHQmRPMVlONkFmVXF2SmhIYmUzVjRTTk1QbUJSRUtKUFZ6N1Rod2dtZ2dUZThXczJLMC93c3F2MndTRTdwYkNCc1VaaElYNTFiWk0zcHFEd0pQVG1SRkV2dDAvNnRHNWVPOEYzajE0T1hxZkVobWpuMVZ2eEtEWVFPTFpBeEN3d2dDMFA0Q2RmV3YzeThQU1I4STM1NGhPMVkrR3pOanZJcVgzOE5LTHl3dUlZSEZlck94Tmx4RU1CdkZoWUJ1UnVZQWtrZ1VhUHFONlVCaHNJTHJzQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZDQ29SSGhpeU5uYm5YUldJTDZaQlhvQlg5WVRNQjhHQTFVZEl3UVlNQmFBRkNBb1VDRWJwRnBiNkZQTG5aM0Y1UHhzTDNvZk1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQ1FGYWZKSTEvNVdnOUNFRWltRTFSUDU0UmdRd1ROVE9PUXNMQUNUZStySXRsRlF6QzlaRGhyVjgyOHlYN2p6eStBQXNwM2l6SzdUMXRoMmRsN20rdHUwc3cyUGEvb2xjMDJudDZQeUl3MzQ4Z2FIemhJMSswS0U0NXF4dkZEZUwybE14YlBmQ1l2eUVFYVl6amlRRUxVNTk1MXBYR1d5S01hLzRmTHRPK1pLT1hoTXVWZXE0clhEUEk1NFc2SkhPaUFhaUtkaXcrNWUzYzJrdC9qRklRdE02dk1YZzlMTkZ6ZGpFVE50MjBWWDlRZXZScEZaZnVjTUc5d0NhUURvRmxQenBUTUpLaFBldi9pbUptWlloS2ZyMGxMY2VtdHFqSXhMQW9xWmRPWWZIQmc2K3ZBY2RQSS9pYXVHcFVBdjdYK1VLTm1Ed2paMkJhSDRzTHdoQjJtIiwiTUlJRFNEQ0NBakNnQXdJQkFnSVVEcUVSdys0Um5HU2dneGdVZXdKRkVQRFJaM1l3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRREk3WG5IK1p2RHdNQ1FVOE04WmVWNXFzY3VibHZWWWFhUnQzWWJheG45Z29kTHg1c3dIMGxYcmRnamg1aDdGcFZnQ2dZWVg3RTRibDF2YnpVTGVtck1XVDhOM1dNR1VlOFFBSmJCZWlvVjdXL0UraFRaUC8wU0tKVmEzZXdLQm82VUxlTW5mUVpEclZPUkFrOHdUTHEydjVMbGo1dk1qN0p0T290S2E5SjduSFM4a0xtelhYU2FqMFN3RVBoNU9BWlVUTlY0enMxYnZvVEFRUVdyTDQvSjlRdUt0NldDRkU1blVOaVJRY0ViVkY4bWxxSzJieDJ6Nm9rVmx0eURWTEN4WWJwVVRFTHZZMXVzUjNEVEdQVW9JQ2xPbTRjcnB3bkRSTFZIdmpZZVBHQkIvL3BFeXp4QS9nY1NjeGp3YUgxWlV3OWJuU2JIeXVyS3FiVGExS3ZqQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJUcXQwS1FuZ3g3WkhyYlZId0R1bnhPbjlpaFlUQWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQXFRYUNXTXhUR3FWVlg3U2s3a2tKbVV1ZVRTWUt1VTYrS0JCU2d3SVJubHc5SzdIZTFJcHhaMGhkd3BQTmlrS2ptY3lGZ0ZQemhJbXdISmd4eHVUOTBQdzN2WU9kY0pKTmt0RGczNVBYT2Z6U24xNWNGQXgxUk8wbVBUbUliOGRYaUVXT3B6b1h2ZHdYRE00MVphQ0RZTVQ3dzRJUXRNeXZFN3hVQlpxMmJqdEFucS9ORFVBN2JlNEg4SDNpcEMrLytOS2xVcmNVaCtqNDhLNjdXSTB1MW02RmVRdWVCQTduMDZqODI1cnFEcXNhTHM5VGI3S0FIQXc4UG1yV2FOUEcya2pLZXJ4UEVmZWNpdmxGYXdwMlJXWnZ4clZ0bjNUVjJTQnh5Q0pDa1hzTkQwNWRDRXJWSFNKSXMrQmR0VFZOWTlBd3R5UG1ueWIwdjRtU1R6dldkdz09IiwiTUlJRFNqQ0NBaktnQXdJQkFnSVVSMzhtcTI2U2Yyc3pWVjJCZEc2V0VON2t1V1V3RFFZSktvWklodmNOQVFFTEJRQXdMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3SUJjTk1qUXhNakF4TURBd01EQXdXaGdQT1RrNU9URXlNekV5TXpVNU5UbGFNQ1l4SkRBaUJnTlZCQU1NRzFsMVltbGpieUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRUlnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTlkwV2I5b1BvUm9Lb1F5V1BhSnB6MTF2cldUZzZ6VHRtTmoyVm9LUm55dktHUnFwemI4M3c1bDZZQTk2VVlrWUJEUVAwaWxPMkRQZTZ3V3FWUjV6RGZSemRjSDhiaCtMN2RHR3ZhZTZoUlRaaGtGa0NwWERzNEhjY2tuckRmOEZDbEo3SGUzOUpmNDIvRzFRbTJ6ejlXV21yUFh0Z2lLL3gwNUdqc1FmR3VERzF6ZjVRVFVVaWU4bHd5bUszVGZkT3ZOZWVKQUFQZTJwbjdJdGZSYityVnJOV2lEemxSbjJ2Tm5aMndQbzR3SC9XSjZkaFhaRytyTVdUK2E2Qm9jZzFVZkl3NmtkdW5HNGJUcFp6c3ZhY0ZZeVIwbXBmK0RlT25wU1dBbXl3SldIdlRsZjJZWHhGeWVYY1RBQ2RRbGNNTkdKMlZoWlE0OHh0UDUvUkJQLzhrQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZDaHk0Mm9raXFjVFMxaXFhL0hSV2prQm40SC9NQjhHQTFVZEl3UVlNQmFBRk9xM1FwQ2VESHRrZXR0VWZBTzZmRTZmMktGaE1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQW4rUkhJUGJ0TUVETmRUMWc4SC9SaXRBa1VkTGdBdDF0V0dXbmxqOWtuYnY0LzRHbFg3QzlwNDVlZlBPOS9hWkw2T1YxWFJLQmk2S210Qlc1SzdudVlFbk14LzVCcUJTYkxUN3JoZHVDNDlUQmVNYjlQSGRYc1RsU1ZOWWVmcjFkR2lkcjRqMHhWQlFMYjFya25EQWJkV0R6S2Z2bmF5S084RnJ3ZTdIeDg0M01HL3JKK2MwWHJ1VXZiZlZUQ0hMaUlXaE03b05EaEw4eG9iNnhVbzlLTEtjU0wrSXRZc08zLzlXYjhROUdqc3FMNEZYc0RjRzFTYVloN0twZnVNbU9peHF6SlpPMm5JaWNQWVJnMUkyU3VpVWZZTzcwdG1kSGNibCtrU1FtU1l0N3JxNHZpSUxnMkd4M2o5cklUdVdUamJhVWFTU1F4Z09tTVNIdXl6TUFDIiwiTUlJRFBqQ0NBaWFnQXdJQkFnSVVYemVpRURKRU9UdDE0RjVuMG82WmYvYkJ3aVV3RFFZSktvWklodmNOQVFFTkJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNWjYvVHhNOHJJVCtFYW9Qdkc4MW9udE1Pby8ybVEyUkJ3SkhTMFFaY3hWYU5YdmwxMkxVaEJaNUxtaUJTY0laZDFSbngxb2Q1ODVoKy9kaEs3aEVtN0pBQUxrS0t0czFmTzUzS0dOTFp1ano1aDN3R25jcjRoeUtGMEc3NGIvVTNLOWhFNW1HTkQ2enFZY2hDUkFIZnJZTVlSREY0WUwwWDRENW5HZHh2cHBBeTZua0VtdFdtTW53TzNpMFRBdWNzcmJFNDg1SHZHTTRyMFZwZ1ZkSnB2Z1FqaVRKQ1RJcStEMzVod3RUOFFESXYrbkd2cGN5aTV3Y0lmQ2t6eUNpbUp1a2hZeTZLb3FOTUtRRWRwTmlTT3ZXeURNVE10MWJ3Q3ZFenB3OTF1K21zVXQ0cmowZWZuTzlzMFpPd2R3TVJEbkg0eGdVbDVaTHdyclBrZkMxLzBDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01COEdBMVVkSXdRWU1CYUFGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFNd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkRRVUFBNElCQVFDM0lXL3NnQjlwWjhhcEpOanh1R29YK0ZrSUxrczB3TU5yZFhML2NvVXZzcmh6c3ZsNm1lUE1yYkdKQnlKMVhucXVCNXNnY1JFTkZ4ZFFGbWEzbWlvOFVwZjFvd00xWnJlWHJKMG1BREcyQnBscWJKbnhpeVlhK1IxMXJlSUZUV2VJaE1OY1pLc0RackZBeVB1RmpDV1NRdkptTldlOW1GUllGZ05oWEpLa1hJYjVIMVhnRURsd2llZFlSTTdWb2xCTmxsZDZwUkZLbFg4dXN0Nk9UTU9lQURsMnhORjBtMUxUaFNkZXVYdkR5QzFnOStJTGZ6M1M2T0lZZ2MzaXJvUmNGRDM1NGc3cktmdTY3cUZBdzlnQzR5aTB4QlRQclk5NXJoNC9IcWFVWUNBL0w4bGRSazZIN1hrMzVEK1dWcG1xMlNoL3hUNUhpRnVoZjR3SmIwYksiLCJNSUlEU0RDQ0FqQ2dBd0lCQWdJVVVjbU1YelJJRk9nR1RLMFRiM2dFdVpZWmtCSXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFEbTU1NWJXWTlXVyt0T1kwcklXSGxkaCthTmFub0NaQ0ZoN0drM1laclFtUFV3MGhrU0c2cVlIUXRQK2ZaeVMzM1ZFcnZnK0JRcW5tdW1nTmhmeEZya3dFWkVMZWlkQmNDOEM0QWc0bnFxaVBXcHpzdkkxN05jeFlsSW5MTkxGY1pZLytnT2lONlpPVGloTzUvdkJaTWJqOXJpYUFjcWxpWW1OR0pQZ1RjTUdhRUF5TXpFTU55Mm5tNkVwK3BqUDVhRjZnaTIxdC9VUUZzdUoxajJSai95bk0vU2RSdCtlY2FsNU9Zb3R4SGtGYkw5dnZ2MkEyT3Y1SVRaQ2x3NGJPUzlucHlwUWltT1o1UUFZeXRtWWFRcFdsL3BNWXo2elNqOFJxa1ZETkVKR3FOZlRLQTJpdkxZd1g2bFN0dE1QYXBnMEo4NGw5WDB2b1ZOL0ZwUzRWQ1ZBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlFnS0ZBaEc2UmFXK2hUeTUyZHhlVDhiQzk2SHpBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBWU16Z0xySkxJcjBPb3ZRbkFaclJJR3VhYmlIU1VLU21iTFJXcFJrV2VBdHNDaERFSHBYY0ovYmdETktZV29IcVE4eFJVakI0Q3llcFlldmMzWWxyRzhvN3pIeHBmVmNhb0w1U2V1Smt6SHhLbjRiVGFTcDkrTXZ3YW1ucDY0a1pNaU5iRkxrbmZQOWtZS29SSGtNV2hlUkoxVXNQMXo0U2Nta0NlSUxmc01zNnZxb3ZxaldDbEZzSnBCY3NsdVlIV0Y3YkJKMW40UndnK0FURW9wWTRJZ0d2Nlp2d2MrQTlyK0FUMmhxcG9Ta1lvQWwrQU5Zd2dzbE9mOXNKZTBWK1RBOVlZL1VsYUJtUFBUZDAvL3I5d3ZjZVBXWmtQaktvQUMvelVOaGZEYmg0TFY4R0hzM2x5WDJYb21ML0xOYzhKWXp5SWFERWhHUXZlb1BoaC90cjFnPT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZkNBWUFBQUNHVnMrTUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFIWVlBQUIyR0FWMmlFNEVBQUFiTlNVUkJWRmhIcFZkN1ROVjFGRC8zZDU5d2VRU0lnUzlBUUFYY0ZMQVFaaTlmcGVWejF0WS9XVFpyNVd4cGM3VzVrbkxhNWpJM1o4NXNyUzJuTTJzanRXd1pTN0lVSDRINHhDbkVReDREQVpGNzRWN3VzODg1djkvbEluQnZWSi9CNFB2OW51LzVudS81bnZNNTU2ZnpBL1F2MEhiL0lyWDNWRktQbzQ1Y25tNGluVUlXWXdMRlJtWlFVdXdqRkcvTjFpUkhoMUVaME5SVlJ1ZHF0MUJkKzJuU0t5Uy9PaHlzMCtsazNlLzNrUTlxdkQ0WlV0YTRWVlNVdVkwZWlweWlUaEFmb2NvT1JWZ0R1dXczcUtSaUFkM3JiY0V0alRqWUlvZjZXYUhzQ216VlBXQ014K2NnaDh0THFXTUthTVdzVWpMcW8yUnRKSVEwb096bWVycFF1NGVzWmdzT05rR3hIN2Qwa2R2VFQxN3M0T01VN1ZJOFpoamdHYU0rQXE5aUVOdThQaWYxdWR6MDdNd3ZLV2Y4R2xWb0NFWTA0UEM1V2RUYVhZRmJSOHZOdkw1KzNLZ2ZiNXhOTXlhOVJhbUppeW5hTWxHVFZ0RmxyNmJhOXUrcHFuRVg0dU11UlJnalNZRWhyTjd1dEZGZTZscWFsN05ma3c1aW1BR0h5blBwYms4Vm1ZMHhzdG5wdGxGQ1ZDWXR6VHVCTjgzUXBNTGpUdGV2ZFB6U1VuSjdlOG1ranhaMzlmWGJLRGZsZFpxYnZVK1RVZ0duQlZGNmZRMmlQSGc0VzE2VVdVd3Z6YmsxNnNNWkUrUG4wcHZ6N0pTZXVBeWVzOGxjcENtYUt1by9wK3FXcjJVY3dJQUhXcnZQMFlFemhYQXRMQWJzc0hocDdpR2FtdnlpalA4cnlxclhVV1g5WG9vd3h5QXVmTkJycDQzUE9CRlhabGtmOE1EUmlxY3B5b3dBd3B1ejJ4K2ZXdnovRHRkZTlzbXN6eWd0Y1I2QzF3YmR6Qmw2T2xxNVdOWVk0b0dhdGhKTXJrVEV4MGpBUlNIQVZzKzVyWWtRTlhiK1FnZlBMc1E2Z1h5SW5zcmVRZm1wbTdSVkZZZkw4Nm4xZmlVT2tZdlNoa1VQeHZidWt6b3k2SzFpaE0xaG8zWHpXNkV2U2ZYQStkcGlXR2FXZCtkb1h6THptR3dLWUZMQ0FzUkFsUEJBaE1sQ0ZYVTd0QlVWUHI4SGdWY0pIV3ErRjAwcGxyK0RNVGRyUDR6dnhZMTFrTk1oeFQrU2VUR2crZDRWNUxRSml0eVVHSk5COFZGWnNqZ1lCWk0vSUkvWENUa2owcXlET3BGMkFWUTE3Q0lqVXAvRG5UMVVrTDVGNWdkaitzUzF3ZzFnRTNnaWdtNjBmQ1h6U25QWGJ5QVBiSVh2K0lEcEUxNlRoYUhJUzlza3lobG1NRTVGM2NmcUFLaHEyQzBFNVBIMWdZYVhhTFBEa1pHMEhESk9uS1dIcDUxSTB6NVNPdXg4ZTFXQXVaemRIUXJUa3A4VG1qWG9JK2xhMHdHWnN6dWJxYk8zaWZRNkEvVzd2VlNZc1YzbVIwSkt3a0tjNFdIaUJrbVI4STNDQ2dJODdvT0w0cXpUNVArUlVKQmVqRU9nQVBLOGhZUHphdE0rZUlUcDJJTzl5VFFtZXJvbVBSeHgxcXhBY3NpbGUvdWJTZUViY1dRR1lFQ2doY0xZMkh5S2pvZ2pIMjVoTXBqcFV2MU91Z2xpNGVoMmVSdzBPMzJiSmpreXVDZ056ZzB2emxZTVNpU3MwdW9vNE1HN2hNT2pDRWFYMXlGRTBuU3ZqQnp1VG5FcEs4Nlo4SW9xRkFJdWJ3OGtnOUFyRWFSRVdTWkkrakg0WGJwNmc5RTlFbkpUM29hUnpETitNVUpCUURIbjU2YThvVW1FQnVzT3hCcy9ONSt0SkViUGtBRkRqOFVHdk9zL0lXdmNTZ2xHQmh2UzcvRlRZZnBXR1lkRFk4ZlBBeFdTQTM1c1RDNHA0K0xtNEFhcUlvUGVRdGZ1Zks2SmgwWmh4bGJzVVhPU21YTmlmRDVaVEFreURvZmJiY2NseG5BOFdOQXF4Q2JSTnlraFh4UXBhRHc2N2ZYVVlic2lHMEtodHYyb2VJdmg4cmhRTVlPY0VBcVhHL2VJK3puZ09jNXl4cjhxODJJQU0xYy9GTEZPcGxxdTVlRlFYck1aekdjVkNqWWJMV0c1STRCVDFldVJybGJ4dE5PdE1pdERERWhMWElJeW5BQXZ1T0VXRTNYM05kQWZ0OTRWZ2FHNDJYSVF0MFpYNlBlQ0UvcVFGZTlySzZIeDdZVTUwS3ZIN2ZXNGZTK3E3S0tCSnhzZ2dCWDVwU0FHaDFqSXJWaDV6UTZ3M1JmYWFoQlhtL2FDYkNaVGpDVUZVVHlXWnFXOXA2Mk1qSlBYVnFPclBnTU80TnY3NEdrZitvd2Z0TlZCRFFuakZKcUhTdzE3cFh2aFdXNUtacWUvUTQ5Ti9VU1RDQVZXb1FYRklIQkhYWGUzRlByVURzdUdEbXRGL2hIS1RIcGVreGhpQU9QSStTSnE2UzZIRjRJOVlXemtCSlRvNDZpVU16V3A4UGlyL1JpZHVMeEtZc1Nrc1Y4dkxsT1F2aEdYMllsUjBPQmhCakMrdS9nRWN2WTBBcEs3WWs0MU54alBTUW5XRkhURjY2VXJqZ2V2QjhDdTVhK2wydllTUlB0dVZEbzczaGhkTVNIblVYN3RUanNWWkd4QWwvV3B0aU9JRVExZ25MMjltWDYvdFIxdG1sa1lqOFc0WCtDU2pXY1VER1kxTnBTL0M3aFNLcWlNTE0vbDJRbVNXWjczRGR6K2dpbzhCQ0VOWVBRNDZxbmt6d1hVYnF2Qmt4alVRc1dmWkZnYnVvM3JBZit3TjdqT085MCt5bng0UGkzTCswbllMMVNjaERVZ0FQNGdQVi83SWQxcSsxSFNobXVHa0lxV1JQZ3l4TUZxUDhIZmpUbmpYd1k1YlFmYkpjdDZPSXpLZ01Ib3RGL0hlMWVnc2F4SFNxRzZ3ZmRtUTV4OE55VEZGcUJjcDJpU293SFIzeWs1KzM2aEY3dlhBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMV9QUkUiLCJGSURPXzJfMSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJsYXJnZUJsb2JLZXkiLCJjcmVkQmxvYiIsIm1pblBpbkxlbmd0aCJdLCJhYWd1aWQiOiJkNzc4MWU1ZGUzNTM0NmFhYWZlMjNjYTQ5ZjEzMzMyYSIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImxhcmdlQmxvYnMiOnRydWUsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjp0cnVlLCJhbHdheXNVdiI6ZmFsc2V9LCJtYXhNc2dTaXplIjoxNTM2LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjgsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4LCJ0cmFuc3BvcnRzIjpbIm5mYyIsInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi04fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotMzV9XSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5Ijo0MDk2LCJtaW5QSU5MZW5ndGgiOjQsImZpcm13YXJlVmVyc2lvbiI6MzI5NDc2LCJtYXhDcmVkQmxvYkxlbmd0aCI6MzIsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjoxLCJyZW1haW5pbmdEaXNjb3ZlcmFibGVDcmVkZW50aWFscyI6MTAwfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMTItMjIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2LCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ill1YmlLZXkgNSBTZXJpZXMgd2l0aCBORkMiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI0MTIyMjAwNiIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTEyLTIyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3Nn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wMS0xMCJ9LHsiYWFndWlkIjoiOWYwZDgxNTAtYmFhNS00YzAwLTkyOTktYWQ2MmM4YmI0ZTg3IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI5ZjBkODE1MC1iYWE1LTRjMDAtOTI5OS1hZDYyYzhiYjRlODciLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiR29UcnVzdCBJZGVtIENhcmQgRklETzIgQXV0aGVudGljYXRvciJ9LCJkZXNjcmlwdGlvbiI6IkdvVHJ1c3QgSWRlbSBDYXJkIEZJRE8yIEF1dGhlbnRpY2F0b3IiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MiwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MTAsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUJxRENDQVUrZ0F3SUJBZ0lCQVRBS0JnZ3Foa2pPUFFRREFqQTdNU0F3SGdZRFZRUUREQmRIYjFSeWRYTjBJRVpKUkU4eUlGSnZiM1FnUTBFZ01qRVhNQlVHQTFVRUNnd09SMjlVY25WemRFbEVJRWx1WXk0d0lCY05NakV3TXpBeU1EWXlNekUzV2hnUE1qQTFNVEF5TWpNd05qSXpNVGRhTURzeElEQWVCZ05WQkFNTUYwZHZWSEoxYzNRZ1JrbEVUeklnVW05dmRDQkRRU0F5TVJjd0ZRWURWUVFLREE1SGIxUnlkWE4wU1VRZ1NXNWpMakJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCQTc2WnlHM2UrRFpvVy9Ldk0zNlhKQUo2Qkw5a1hNTmpFdjRxR0lENWxBOFo4dVJlTTFZZk1pbzVuRUhMVTJTWkxRM3FYUlJ2eEdONEkrSDUrNmZWdzJqUWpCQU1BOEdBMVVkRXdRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0VHTUIwR0ExVWREZ1FXQkJScytVa21NNXhVazYvejVRTnRXQjI2aTR3NzdEQUtCZ2dxaGtqT1BRUURBZ05IQURCRUFpQkErSVg1Ri84N1cvZW1aa2lKVEhxcmlMRlpPYTc5N3pzRS8wS1A3QVU1UWdJZ0I2NHhGcVBTQkM0S2kxVXJyTlg5VjJ0aGIrNDVSYnRTVm1pNjZXVitnbEU9IiwiTUlJQnpqQ0NBWE9nQXdJQkFnSUpBTWhWL3ZRWXU0S0FNQW9HQ0NxR1NNNDlCQU1DTURzeElEQWVCZ05WQkFNTUYwZHZWSEoxYzNRZ1JrbEVUeklnVW05dmRDQkRRU0F5TVJjd0ZRWURWUVFLREE1SGIxUnlkWE4wU1VRZ1NXNWpMakFlRncweE9URXlNRFF3TnpBek1ERmFGdzAwT1RFeE1qWXdOekF6TURGYU1Ec3hJREFlQmdOVkJBTU1GMGR2VkhKMWMzUWdSa2xFVHpJZ1VtOXZkQ0JEUVNBeU1SY3dGUVlEVlFRS0RBNUhiMVJ5ZFhOMFNVUWdTVzVqTGpCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQkpIZ0s5Zk5xTkVXSVlUc1ovZ05pMTd6cEVySzdGQzFZbytGenFSVk1ZR1VKZ0FKOXZnMzFpVENKMVZZeGJBS01RYmxMR2tWbi9kZlA3M2dlVEtlZDlPallEQmVNQXdHQTFVZEV3RUIvd1FDTUFBd0RnWURWUjBQQVFIL0JBUURBZ0VHTUIwR0ExVWREZ1FXQkJSZ0xYV2RXZXIxa1NHcHBnUGxpWmkxSHNZUGhEQWZCZ05WSFNNRUdEQVdnQlJnTFhXZFdlcjFrU0dwcGdQbGlaaTFIc1lQaERBS0JnZ3Foa2pPUFFRREFnTkpBREJHQWlFQXVqcktXWncrUzBUZkcxYkpKY3NxbUd1NVdMYkIyRWdvckQyaEEycTZCb0lDSVFDaXl4bnZBbjZNaStEZFJudzNTUUdRWm9MS0ZLd0hyNFhHTklPNXBBSEFIQT09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWpDQVlBQUFEMTdnaGFBQUFBQkdkQlRVRUFBTEdPZlB0Umt3QUFBQ0JqU0ZKTkFBQ0hEd0FBakE4QUFQMVNBQUNCUUFBQWZYa0FBT21MQUFBODVRQUFHY3h6UElWM0FBQUtMMmxEUTFCSlEwTWdVSEp2Wm1sc1pRQUFTTWVkbG5kVVZOY1doOCs5ZDNxaHpURFNHWHFUTGpDQTlDNGdIUVJSR0dZR0dNb0F3d3hOYklpb1FFUVJFUUZGa0tDQUFhT2hTS3lJWWlFb3FHQVBTQkJRWWpDS3FLaGtSdFpLZkhsNTcrWGw5OGU5MzlwbjczUDMyWHVmdFM0QUpFOGZMaThGbGdJZ21TZmdCM280MDFlRlI5Q3gvUUFHZUlBQnBnQXdXZW1wdmtIdXdVQWtMemNYZXJySUNmeUwzZ3dCU1B5K1planBUNmVELzAvU3JGUytBQURJWDhUbWJFNDZTOFQ1SWs3S0ZLU0s3VE1pcHNZa2lobEdpWmt2U2xERWNtS09XK1NsbjMwVzJWSE03R1FlVzhUaW5GUFp5V3d4OTRoNGU0YVFJMkxFUjhRRkdWeE9wb2h2aTFnelNaak1GZkZiY1d3eWg1a09BSW9rdGdzNHJIZ1JtNGlZeEE4T2RCSHhjZ0J3cExndk9PWUxGbkN5Qk9KRHVhU2tadk81Y2ZFQ3VpNUxqMjVxYmMyZ2UzSXlremdDZ2FFL2s1WEk1TFBwTGluSnFVeGVOZ0NMWi80c0dYRnQ2YUlpVzVwYVcxb2FtaG1aZmxHby83cjROeVh1N1NLOUN2amNNNGpXOTRmdHIveFM2Z0JneklwcXMrc1BXOHgrQURxMkFpQjMvdytiNWlFQUpFVjlhNy94eFhsbzRubUpGd2hTYll5Tk16TXpqYmdjbHBHNG9ML3JmenI4RFgzeFBTUHhkcitYaCs3S2lXVUtrd1IwY2QxWUtVa3BRajQ5UFpYSjR0QU4venpFL3pqd3IvTllHc2lKNWZBNVBGRkVxR2pLdUx3NFVidDViSzZBbThLamMzbi9xWW4vTU94UFdweHJrU2oxbndBMXlnaEkzYUFDNU9jK2dLSVFBUko1VU56MTMvdm1ndzhGNHBzWHBqcXhPUGVmQmYzN3JuQ0orSkhPamZzYzV4SVlUR2NKK1JtTGErSnJDZENBQUNRQkZjZ0RGYUFCZElFaE1BTld3Qlk0QWpld0F2aUJZQkFPMWdJV2lBZkpnQTh5UVM3WURBcEFFZGdGOW9KS1VBUHFRU05vQVNkQUJ6Z05Mb0RMNERxNENlNkFCMkFFaklQbllBYThBZk1RQkdFaE1rU0I1Q0ZWU0FzeWdNd2dCbVFQdVVFK1VDQVVEa1ZEY1JBUEVrSzUwQmFvQ0NxRktxRmFxQkg2RmpvRlhZQ3VRZ1BRUFdnVW1vSitoZDdEQ0V5Q3FiQXlyQTBid3d6WUNmYUdnK0UxY0J5Y0J1ZkErZkJPdUFLdWc0L0I3ZkFGK0RwOEJ4NkJuOE96Q0VDSUNBMVJRd3dSQnVLQytDRVJTQ3pDUnpZZ2hVZzVVb2UwSUYxSUwzSUxHVUdta1hjb0RJcUNvcU1NVWJZb1QxUUlpb1ZLUTIxQUZhTXFVVWRSN2FnZTFDM1VLR29HOVFsTlJpdWhEZEEyYUMvMEtuUWNPaE5kZ0M1SE42RGIwSmZRZDlEajZEY1lESWFHMGNGWVlUd3g0WmdFekRwTU1lWUFwaFZ6SGpPQUdjUE1ZckZZZWF3QjFnN3JoMlZpQmRnQzdIN3NNZXc1N0NCMkhQc1dSOFNwNHN4dzdyZ0lIQStYaHl2SE5lSE80Z1p4RTdoNXZCUmVDMitEOThPejhkbjRFbnc5dmd0L0F6K09ueWRJRTNRSWRvUmdRZ0poTTZHQzBFSzRSSGhJZUVVa0V0V0oxc1FBSXBlNGlWaEJQRTY4UWh3bHZpUEprUFJKTHFSSWtwQzBrM1NFZEo1MGovU0tUQ1pya3gzSkVXUUJlU2U1a1h5Ui9KajhWb0lpWVNUaEpjR1cyQ2hSSmRFdU1TanhRaEl2cVNYcEpMbFdNa2V5WFBLazVBM0phU204bExhVWl4UlRhb05VbGRRcHFXR3BXV21LdEttMG4zU3lkTEYway9SVjZVa1pySXkyakpzTVd5WmY1ckRNUlpreENrTFJvTGhRV0pRdGxIcktKY280RlVQVm9YcFJFNmhGMUcrby9kUVpXUm5aWmJLaHNsbXlWYkpuWkVkb0NFMmI1a1ZMb3BYUVR0Q0dhTytYS0M5eFdzSlpzbU5KeTVMQkpYTnlpbktPY2h5NVFybFd1VHR5NytYcDhtN3lpZks3NVR2a0h5bWdGUFFWQWhReUZRNHFYRktZVnFRcTJpcXlGQXNWVHlqZVY0S1Y5SlVDbGRZcEhWYnFVNXBWVmxIMlVFNVYzcTk4VVhsYWhhYmlxSktnVXFaeVZtVktsYUpxcjhwVkxWTTlwL3FNTGt0M29pZlJLK2c5OUJrMUpUVlBOYUZhclZxLzJyeTZqbnFJZXA1NnEvb2pEWUlHUXlOV28weWpXMk5HVTFYVFZ6TlhzMW56dmhaZWk2RVZyN1ZQcTFkclRsdEhPMHg3bTNhSDlxU09uSTZYVG81T3M4NURYYkt1ZzI2YWJwM3ViVDJNSGtNdlVlK0EzazE5V045Q1AxNi9TditHQVd4Z2FjQTFPR0F3c0JTOTFIb3BiMm5kMG1GRGtxR1RZWVpocytHb0VjM0l4eWpQcU1Qb2hiR21jWVR4YnVOZTQwOG1GaVpKSnZVbUQweGxURmVZNXBsMm1mNXFwbS9HTXFzeXUyMU9ObmMzMzJqZWFmNXltY0V5enJLRHkrNWFVQ3g4TGJaWmRGdDh0TFN5NUZ1MldFNVphVnBGVzFWYkRUT29ESDlHTWVPS05kcmEyWHFqOVducmR6YVdOZ0tiRXphLzJCcmFKdG8yMlU0dTExbk9XVjYvZk14TzNZNXBWMnMzWWsrM2o3WS9aRC9pb09iQWRLaHplT0tvNGNoMmJIQ2NjTkp6U25BNjV2VEMyY1NaNzl6bVBPZGk0N0xlNWJ3cjR1cmhXdWphN3liakZ1Slc2ZmJZWGQwOXpyM1pmY2JEd21PZHgzbFB0S2UzNTI3UFlTOWxMNVpYbzlmTUNxc1Y2MWYwZUpPOGc3d3J2Wi80NlB2d2ZicDhZZDhWdm50OEg2N1VXc2xiMmVFSC9Mejg5dmc5OHRmeFQvUC9QZ0FUNEI5UUZmQTAwRFF3TjdBM2lCSVVGZFFVOUNiWU9iZ2srRUdJYm9nd3BEdFVNalF5dERGMExzdzFyRFJzWkpYeHF2V3Jyb2NyaEhQRE95T3dFYUVSRFJHenE5MVc3MTA5SG1rUldSQTV0RVpuVGRhYXEyc1YxaWF0UFJNbEdjV01PaG1Oamc2TGJvcit3UFJqMWpGblk3eGlxbU5tV0M2c2Zhem5iRWQyR1h1S1k4Y3A1VXpFMnNXV3hrN0cyY1h0aVp1S2Q0Z3ZqNS9tdW5BcnVTOFRQQk5xRXVZUy9SS1BKQzRraFNXMUp1T1NvNU5QOFdSNGlieWVGSldVckpTQlZJUFVndFNSTkp1MHZXa3pmRzkrUXpxVXZpYTlVMEFWL1V6MUNYV0ZXNFdqR2ZZWlZSbHZNME16VDJaSlovR3krckwxczNka1QrUzQ1M3k5RHJXT3RhNDdWeTEzYys3b2VxZjF0UnVnRFRFYnVqZHFiTXpmT0w3Slk5UFJ6WVROaVp0L3lEUEpLODE3dlNWc1MxZStjdjZtL0xHdEhsdWJDeVFLK0FYRDIyeTMxV3hIYmVkdTc5OWh2bVAvamsrRjdNSnJSU1pGNVVVZmlsbkYxNzR5L2FyaXE0V2RzVHY3U3l4TER1N0M3T0x0R3RydHNQdG9xWFJwVHVuWUh0ODk3V1gwc3NLeTEzdWo5bDR0WDFaZXM0K3dUN2h2cE1Lbm9uTy81djVkK3o5VXhsZmVxWEt1YXExV3F0NVJQWGVBZldEd29PUEJsaHJsbXFLYTk0ZTRoKzdXZXRTMjEyblhsUi9HSE00NC9MUSt0TDczYThiWGpRMEtEVVVOSDQvd2pvd2NEVHphMDJqVjJOaWsxRlRTRERjTG02ZU9SUjY3K1kzck41MHRoaTIxcmJUV291UGd1UEQ0czIranZ4MDY0WDJpK3lUalpNdDNXdDlWdDFIYUN0dWg5dXoybVk3NGpwSE84TTZCVXl0T2RYZlpkclY5Yi9UOWtkTnFwNnZPeUo0cE9VczRtMzkyNFZ6T3VkbnpxZWVuTDhSZEdPdU82bjV3Y2RYRjJ6MEJQZjJYdkM5ZHVleCsrV0t2VSsrNUszWlhUbCsxdVhycUd1TmF4M1hMNisxOUZuMXRQMWo4ME5adjJkOSt3K3BHNTAzcm0xMER5d2ZPRGpvTVhyamxldXZ5YmEvYjErK3N2RE13RkRKMGR6aHllT1F1Kys3a3ZhUjdMKzluM0o5L3NPa2grbUhoSTZsSDVZK1ZIdGY5cVBkajY0amx5SmxSMTlHK0owRlBIb3l4eHA3L2xQN1RoL0g4cCtTbjVST3FFNDJUWnBPbnA5eW5iajViL1d6OGVlcnorZW1DbjZWL3JuNmgrK0s3WHh4LzZadFpOVFAra3Y5eTRkZmlWL0t2anJ4ZTlycDcxbi8yOFp2a04vTnpoVy9sM3g1OXgzalgrejdzL2NSODVnZnNoNHFQZWgrN1BubC9lcmlRdkxEd0cvZUU4L3MzQkNrZUFBQUFDWEJJV1hNQUFBN0VBQUFPeEFHVkt3NGJBQUFBSVhSRldIUkRjbVZoZEdsdmJpQlVhVzFsQURJd01UZzZNRFU2TWpnZ01UWTZOREk2TVRUOWh3cmZBQUFJSFVsRVFWUllSNTFYQzFCVTV4WCtkbGxnUWQ0UFVSQWZpU2hhTkcxaTdCaHRtMDVLVWtuVFdCK05RYTBZRzJPRGxqb09HazFpTzUxcU5HUWNrOW9rUkpzMDRJdzZwdU4wVEV4VGFPc1lTN1NTcGhwZjFLQVZCUlpoV1I0cklMdDdiNy96Mzd2c1FoYUMvUzcvc3Z6M3ZNLzV6L214NkFTR0NaMlAvRmdzOHBmNjZJTmZqTVY0T1d4WXpkL0RnK1pYWUVIbEo1L2p2Z1diOE9qcUhXaHNjYW45TzFVdUdGNEVoTVFVM3RyaFJ0N3FsM0dxc2hwSWlBRjhQcURyTnBZVjVPSDFGMWNnSmpvcUtGTENJK0lITjJ4NEVUQ1YvM3piSDVBOGNSRk9WVjhDUmljRFVaRkFOSmZWaXZJREZhajY5eGVLVGlra2o2YlJGSDF3NVlKQkl0RGY2ajlWbnNhOFozYlFXeThRUzYrdDVqdDN0NHJBMXMwRjJMenFjV09QNkwxYXA0eUtHRGZHM0NFR0M0UVlFQXlOangrMTE1djBLWSt1MTVHV3B5TW5YOGMwV1V0MVpEK2hJK2xoZldIUlR0M3I5Wm5VQmhwWGJkVFBJVncvanhHNlk4MFdjNWR5ZlFHNXdSaTBCdktMZDJOLzJRZk1jeXhnWjVnRmt1K1dkb3ljT0FaViszK051elBUakgzQ3Rmc2RPTllXMDFFZndwREFIWTFQQi8rMklXTmZLZUtYekRjSUI4Q2lNVkhCMWZ2Mkg0OWhaV0VKTU1JT3hJemdEdTNUV1A0ZFhUVEVodkpYaXJEMHNUa0dNZEZUZlFaMTMxNEFYM2NqRmJNdStDbFFoYWhpN3VYVGdzamtpUmh6N0JEc09kbnFEVmdmRnFheUx3SmZYRy9DN0NXL3dzM0x6RjlLb2xHZThxYW5WeWxmdTNZaFhudStRRWdWdk0ydGFKajNGRHFyanRMSFZPN1kxTDVFd0lkMnFyWlFSTHo2TlBZOTNHOUdiTzRpWkI0dEozbVlNcS9QQU11NEg5SERDSzV3UTdHUFhqZTFZc2FEOTZMaW5SZVlpV2doVTNDc2ZnN08wdGZvYXd5RlJDdEJ1Z3E1QzJIV1JHUldIWWJ1OVRFeTg2RnI3YVJMNG5zeGlXSnBuQzBwQTFuT2MwcVdNcSsreWNXejNBTkVtc3A3YnNNV2JzWEhIKzNDNmZlMjlTbHZlL2NRTGxqaTRDcDlpLzZta0ZtVWk4OXVyamFNM0xvZGszeDFpUHJtZllpZVBSUFp2aHNZdWIyRUtXZ210NGVVT25saTRXbXRnK1ptU2drVkFZZXpEYU56bGdKcFNUeERYcVNQVGtMOVgzY3JBa0gzeWM5dzQ0Y3I0R211VWVFV01ZWTMzYXJRRW45Y2dQU0RieGpFUkFlRmg5bXNMQ1BXa1luYWpCbndOVFNSTDR3R3RXTnlWeU9zVVhZelFTSk9NcUdXeHY3Q1ZKaTRObXNlcnN5YUJhMzVKcFZMMVF1TEY3MW9nSDNhMXpDcHJyYWY4cEszanlCK2FqNWk2TkRyYkU1KzJNYW0wMWl2aW9KUm5MTE1GQ2lvUFdQVExBc0Y5MGtwc2xIOEprZFJ3dTFVUWliOHBRSVR6djRONFpucGl1NUU5VVZFNU9Sanc1YTlRQnhURmhHT3drMEJ3K1FJRzlMN0kyQ0E2QXhTN0VjWTdHU1VFcElpNjBicTloM0kxdXN4SXZjNzZ2MzFteTVNbTdjQjMzcWtDQjVoVDQ0akU0OGlqNWhORFBrS0JBd1lCTW91dFhncTZGWEt4bWZWdnFCOWNTSEczck1NNXk1ZUF6S1luckJRUGdid1pmY0dTY0ZBeUFGU2o4VWdiMzExRHk1YVl1QStlQWpXOUJUajlJaUJicDZrTHM0SHZ5WnBZRUVZT2dYc1RBTVpCTUlrM2l1WjFraGN1ZXNCTlA1aUhWT1R5SG5Ed1NSR2Q3TlpPVndvTGx5QWpUOWJRQ040eENncU10eG9UbjVJN1JoRkdFREFBRTR2dFFaQVRMTEtZMkhuNnZiQXcwa25QVUIyZGEwWFdrTUw3djE2RnRwcTM4UEw2L1BaaUdpUU1QR1hQVndpRTRDU3d5Y1lRUkVnVjRnaU5Eb2NQM2s4alc0bXZWNVRwOEVkbDRES0QzYmkwME5iRVc4MksxY252VGZIZGJBMCtTNlM1QWxHL3dpRXFBR2JtbXlHYWprTkdqcFYxMHY3N1c1TWFqK0hoNzZScGVqYWVUZVl0ZmdGdlBIN0k3eWtSQ21lWUlqa3I0NUFpQnFRcnFXaGgrSjYyRXdia0xCeUphYnFIVWhhRXhoTVQvOXlEeExHUFk2VC82cGhEK0FFRlcyc3FjNWJScnNWREIwQkNYMVFEZGc0cWZ6SWRyRzNUNzhIRVZPbVlISnpFMGJ0NWFnMjhkYkJTbGdtek1mZXNnK0JkRTVFdVRkSUZDVU5uQ2NseGN0TVNtNVR0aEhGL2xGV0dsWHFtV1AxaFUzazhqVUgvbnppakx4Q1dFSWl4cDloMTd2d2Q5aFNPQ3VJMDU5ZlFjb0RxL0RNdWwyOE16RGNmcTl2OHpUY2FNYVNSZCtGZnZVd2lwYm5LWHFCdDFFR0VndDNRR3FVQVpHUjlGakdyNEFGcERNVmN4YytoeWsvS0VhZHcybnNFMjI4Rjh4Yy9DSm1QbFFJWjF1SGVXK2dDQzk1RzF1Uk0zazg2aS90eDc0ZGEwd084cnhaemdrYUQyL2ROZG9ZcmlLZ003SFFlTHNpK201RXVTdCt3NHIrQjVCcUNwVktGbythMi9EVForY2psUzMycGEzdkFvbEJWelNwbVhZMzUzc2NqdjV1QTNMblREZjJpYTRUcDFEL3lGSjR1aHBZeU1sVWFreFFMMGUzTFQ0Rms5cDRzeVpNQTlSWGxCMDVnZVViT0lhbG95V2FUVVp3aTkxTkdsV01qRmR6VC9KTWJOdThISnVlRHR5SXZjMU8zSmk3RExjK3JlQ0JUU08xVFhHSTF4N2NST3lNN3lIejQ4T3cwQW5aVndZSVkvQzlzTGhrSDE1NXFZeURoVWN3aXFOWnZlT1NPdW4xc09zNThjUlRqK0hBemlLRHdVVGpUOWJCVlY1S3hYR2t0bE9wOFBtb3VoVVI5alJrVkI3Z1JlVitnMWpxVGVUS2hTUVV2SnBQbi8za0ZsN0o1eHJYOEtsUHF1OVozMStuTzFyYVRDb0R6bGYzOENwdTUxVThVYTlCSnRkWS9STFhCZjU5SHJHNnM3VE1wSlJyZi85ci9KY01rSWp3cHcvVjUydjExRG1yZFF2L0wzai8rR2Ztcm9IT2l1UDZmMkt6cUNSYUthekJlSzV4K2tXa2NTOUtieWhZYjFJS1JLNnhnakhvL3dWRHdjT3JWYjNrK2V4eGhqdUZnWmFoSTJJa3owMkl1VDhYWTk3ZkI5dElLVDZWdkVGaGRKNGhJU0lDTmphdGZSNDFHYVBRZmZZczFZN3VVNjR4ejlZSU8rNnErZ1RqLy9taG9WeDhDN0NHaGtUZ1RuRDc4bi8xcTlNZlpzNGpHZXBVaGpxZXVVN1NuYnYybWhSM2hqc3lRR05oK2pQby91aVlYcGVYcnp1S3RnVDlOeG42LzcraDhIL1ZRQ2lJa0tGeUhSckEvd0M0ZStPK1oxY240UUFBQUFCSlJVNUVya0pnZ2c9PSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIl0sImV4dGVuc2lvbnMiOlsiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiOWYwZDgxNTBiYWE1NGMwMDkyOTlhZDYyYzhiYjRlODciLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjp0cnVlLCJ1cCI6dHJ1ZX0sIm1heE1zZ1NpemUiOjEwMjQsInBpblV2QXV0aFByb3RvY29scyI6WzFdfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMTktMTItMDQiLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IkdvVHJ1c3QgSWRlbSBDYXJkIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAxOTA1MjAwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMyIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4xLjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMTktMTItMDQifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDE5LTEyLTA0In0seyJhYWd1aWQiOiIxMmRlZDc0NS00YmVkLTQ3ZDQtYWJhYS1lNzEzZjUxZDYzOTMiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjEyZGVkNzQ1LTRiZWQtNDdkNC1hYmFhLWU3MTNmNTFkNjM5MyIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJGZWl0aWFuIEFsbGluT25lIEZJRE8yIEF1dGhlbnRpY2F0b3IifSwiZGVzY3JpcHRpb24iOiJGZWl0aWFuIEFsbGluT25lIEZJRE8yIEF1dGhlbnRpY2F0b3IiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIiwiYmx1ZXRvb3RoIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlCMkRDQ0FYNmdBd0lCQWdJUUdCVXJRYmREcm0yMEZabkRzWDJDQlRBS0JnZ3Foa2pPUFFRREFqQkxNUXN3Q1FZRFZRUUdFd0pWVXpFZE1Cc0dBMVVFQ2d3VVJtVnBkR2xoYmlCVVpXTm9ibTlzYjJkcFpYTXhIVEFiQmdOVkJBTU1GRVpsYVhScFlXNGdSa2xFVHlCU2IyOTBJRU5CTUNBWERURTRNRFF3TVRBd01EQXdNRm9ZRHpJd05EZ3dNek14TWpNMU9UVTVXakJMTVFzd0NRWURWUVFHRXdKVlV6RWRNQnNHQTFVRUNnd1VSbVZwZEdsaGJpQlVaV05vYm05c2IyZHBaWE14SFRBYkJnTlZCQU1NRkVabGFYUnBZVzRnUmtsRVR5QlNiMjkwSUVOQk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRXNGWUVFaGlKdXFxbk1nUWpTaWl2QmpWN0RHQ1RmNFhCQkgvQjd1dlpzS3hYU2hGMEw4dURJU1dVdmNFeGl4UnM2Z0Izb2xkU3Jqb3g2TDhUOTROT3pxTkNNRUF3SFFZRFZSME9CQllFRkV1OWh5WVJyUnlKendSWXZuRFNDSXhyRmlPM01BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0RnWURWUjBQQVFIL0JBUURBZ0VHTUFvR0NDcUdTTTQ5QkFNQ0EwZ0FNRVVDSURIU2IybWJOREFVTlh2cFBVMG9XS2VOeWUwZlEybDlEMDFBUjIrc0xaZGhBaUVBbzN3ejY4NElGTVZzQ0NSbXVKcXhINkZRUkVTTnFlenVvMUUrS2tHeFd1TT0iLCJNSUlDWHpDQ0FjR2dBd0lCQWdJUVpscmdYN2h1ZnZsbGlVL3pHWGhpeERBS0JnZ3Foa2pPUFFRREJEQkxNUXN3Q1FZRFZRUUdFd0pWVXpFZE1Cc0dBMVVFQ2d3VVJtVnBkR2xoYmlCVVpXTm9ibTlzYjJkcFpYTXhIVEFiQmdOVkJBTU1GRVpGU1ZSSlFVNGdSa2xFVHlCU2IyOTBJRU5CTUNBWERUSTFNREV3TVRBd01EQXdNRm9ZRHpJeE1qUXhNak14TWpNMU9UVTVXakJMTVFzd0NRWURWUVFHRXdKVlV6RWRNQnNHQTFVRUNnd1VSbVZwZEdsaGJpQlVaV05vYm05c2IyZHBaWE14SFRBYkJnTlZCQU1NRkVaRlNWUkpRVTRnUmtsRVR5QlNiMjkwSUVOQk1JR2JNQkFHQnlxR1NNNDlBZ0VHQlN1QkJBQWpBNEdHQUFRQU0zSzRSbGJnS3hCc2ZDakdVUXRTSzYxSkNhb00rWmxYQmE4U3hPSHdBSXFiSGExK2k3RW8yM1JHeHJmQng4ZVVCRGVFd1NMWTZ5TmhNc1lNY25oelg4QUJlYTJHQXk1QXlkLzBvMHlUWHQ0TktPZ1JWa3R1VzdmYkFLcE9vYkFlckRrN3JOT0ZqNUtJYWZjWHltNHhBZkRwWEVQSUxpcVhGcHl5UnJSTWsvTURheU9qUWpCQU1CMEdBMVVkRGdRV0JCU1R2R2E0TTVFZXJDNVhnZEl4MWdzdDBubmV6ekFQQmdOVkhSTUJBZjhFQlRBREFRSC9NQTRHQTFVZER3RUIvd1FFQXdJQkJqQUtCZ2dxaGtqT1BRUURCQU9CaXdBd2dZY0NRZ0ZlUkNYSXhJNGxoc0pzNzZLK1pWRldoM2JUbWNyWUU0eTM2WGRhODlMRzFXamN4bUt2MUFRdXFGTjNQUWxveFJqZnhmaEZPcUxrcTVrR3dIUjJTYXNjOEFKQlNlVU5TanNHVXRPT2JMNkU5bDFaZjl3azdSU1d4SHRsc0gwR2pTckYwQ2IyR1dJMDJWS0xXV1B3ZVhaU0luWnB3bE56ckNCRU5wY0RtMTQvT3lVUFdVZz0iLCJNSUlCMkRDQ0FYNmdBd0lCQWdJUUZaOTd3czJKR1BFb2E1TkkrcDh6MWpBS0JnZ3Foa2pPUFFRREFqQkxNUXN3Q1FZRFZRUUdFd0pEVGpFZE1Cc0dBMVVFQ2d3VVJtVnBkR2xoYmlCVVpXTm9ibTlzYjJkcFpYTXhIVEFiQmdOVkJBTU1GRVpsYVhScFlXNGdSa2xFVHlCU2IyOTBJRU5CTUNBWERURTRNRFF3TVRBd01EQXdNRm9ZRHpJd05EZ3dNek14TWpNMU9UVTVXakJMTVFzd0NRWURWUVFHRXdKRFRqRWRNQnNHQTFVRUNnd1VSbVZwZEdsaGJpQlVaV05vYm05c2IyZHBaWE14SFRBYkJnTlZCQU1NRkVabGFYUnBZVzRnUmtsRVR5QlNiMjkwSUVOQk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRW5mQUtianZNWDFFeTFiNmsrV1FRZE5WTXQ5SmdHV3lKM1B2TTRCU0s1WHFUZm8rKzBvQWovNHRud3lJTDBIRkJSOVN0K2t0anFTWERmamlYQXVyczg2TkNNRUF3SFFZRFZSME9CQllFRk5HaG1FMkJmOE81YS9ZSFo3MVFFdjZRUmZGVU1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0RnWURWUjBQQVFIL0JBUURBZ0VHTUFvR0NDcUdTTTQ5QkFNQ0EwZ0FNRVVDSVFDM3NUMWxCakdlRit4S1RwelYxS1lVMmNrYWhUZDRtTEp5ellPaGFIdjRpZ0lnRDJKWWtmeUg1UTRCcG84cnJvTzBJdDdvWWpGMmtneS9lU1ozVTlHbGFxdz0iLCJNSUlCMlRDQ0FYNmdBd0lCQWdJUUZRTktXKzd6YmcvN2QrbFR5cklXd0RBS0JnZ3Foa2pPUFFRREFqQkxNUXN3Q1FZRFZRUUdFd0pWVXpFZE1Cc0dBMVVFQ2d3VVJtVnBkR2xoYmlCVVpXTm9ibTlzYjJkcFpYTXhIVEFiQmdOVkJBTU1GRVpsYVhScFlXNGdSa2xFVHlCU2IyOTBJRU5CTUNBWERUSXlNRFl3T0RBd01EQXdNRm9ZRHpJd05USXdOakEzTWpNMU9UVTVXakJMTVFzd0NRWURWUVFHRXdKVlV6RWRNQnNHQTFVRUNnd1VSbVZwZEdsaGJpQlVaV05vYm05c2IyZHBaWE14SFRBYkJnTlZCQU1NRkVabGFYUnBZVzRnUmtsRVR5QlNiMjkwSUVOQk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRXNGWUVFaGlKdXFxbk1nUWpTaWl2QmpWN0RHQ1RmNFhCQkgvQjd1dlpzS3hYU2hGMEw4dURJU1dVdmNFeGl4UnM2Z0Izb2xkU3Jqb3g2TDhUOTROT3pxTkNNRUF3SFFZRFZSME9CQllFRkV1OWh5WVJyUnlKendSWXZuRFNDSXhyRmlPM01BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0RnWURWUjBQQVFIL0JBUURBZ0VHTUFvR0NDcUdTTTQ5QkFNQ0Ewa0FNRVlDSVFDQjBORlFTTjB6NGxXei95YzM2ZXdyVEN6dHRLL3FGdmxhUE9LaCtUMW82d0loQVAwb0tLQStjaWNzRHkzWTNuK1ZsUDhlQjNQQnpNa2h2Vy85SVNYQ3crVkIiLCJNSUlCMkRDQ0FYK2dBd0lCQWdJUkFNczhZWFZCb0JOdVhVanFmQ29YN3k0d0NnWUlLb1pJemowRUF3SXdTekVMTUFrR0ExVUVCaE1DVlZNeEhUQWJCZ05WQkFvTUZFWmxhWFJwWVc0Z1ZHVmphRzV2Ykc5bmFXVnpNUjB3R3dZRFZRUUREQlJHWldsMGFXRnVJRVpKUkU4Z1JVRWdVbTl2ZERBZ0Z3MHlNekF4TURFd01EQXdNREJhR0E4eU1EVXlNVEl6TVRJek5UazFPVm93U3pFTE1Ba0dBMVVFQmhNQ1ZWTXhIVEFiQmdOVkJBb01GRVpsYVhScFlXNGdWR1ZqYUc1dmJHOW5hV1Z6TVIwd0d3WURWUVFEREJSR1pXbDBhV0Z1SUVaSlJFOGdSVUVnVW05dmREQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJEMkxISEFRcVliZFIxV1psdWVydE0zMHJXaG9yWWF2V21NVmE0bmRYOVBad3VSRXBMUTRtMW5FbHFRS01uUkU4LzRDK1Jxd2lhdittcEk0a3hkNWU1dWpRakJBTUIwR0ExVWREZ1FXQkJTM1paanlHbGhaOTlOMXZMb1RQWFZVYTRaRVlEQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01BNEdBMVVkRHdFQi93UUVBd0lCQmpBS0JnZ3Foa2pPUFFRREFnTkhBREJFQWlBb0QrUjZrb2xJV2FOSno0aHowM0QzZ2VzM0diTUJqQVdwa09VZzlheUZnd0lnYkV3N0FZU3lrNjhPdnhnWGV6Z25kVFJURXVTV1QrZmRSbkxhQk5zYVR3MD0iLCJNSUlDV3pDQ0FiMmdBd0lCQWdJUUNwMTZEZGcvUE1INDJETmx3cDdOdWpBS0JnZ3Foa2pPUFFRREF6QkxNUXN3Q1FZRFZRUUdFd0pWVXpFZE1Cc0dBMVVFQ2d3VVJtVnBkR2xoYmlCVVpXTm9ibTlzYjJkcFpYTXhIVEFiQmdOVkJBTU1GRVpGU1ZSSlFVNGdSa2xFVHlCU2IyOTBJRU5CTUNBWERUSTFNREV3TVRBd01EQXdNRm9ZRHpJeE1EQXhNak14TWpNMU9UVTVXakJKTVFzd0NRWURWUVFHRXdKVlV6RWRNQnNHQTFVRUNnd1VSbVZwZEdsaGJpQlVaV05vYm05c2IyZHBaWE14R3pBWkJnTlZCQU1NRWtaRlNWUkpRVTRnUmtsRVR5QkRRU0F3TmpCMk1CQUdCeXFHU000OUFnRUdCU3VCQkFBaUEySUFCQTdhK2RtTU5NSU9Fb2RzY1JxOXd2YmhjMlU5clhBZDBDQ0tKK3dnSktwemN2U0c0TDdvZTdnMDN5SU1SZjhwblByTjNkQUdFN05mM2FUOVFRenh6djlmQVlVS3RZRmpSd2NZRkV0VmZpSEc1UXA0VzBRMjh5dTBKRitKc0NtS1U2Tm1NR1F3SFFZRFZSME9CQllFRkFlTEtTOWp1SDJmc3NBcUhtcUFFZHNHdnBveU1COEdBMVVkSXdRWU1CYUFGSk84WnJnemtSNnNMbGVCMGpIV0N5M1NlZDdQTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0VHTUFvR0NDcUdTTTQ5QkFNREE0R0xBRENCaHdKQ0FRcTZNajNIaVk3UFYyd3ZENlZvcnRXL2xwb2ZHOWNrZkhmb0J6R2UrZmU2Q3lhMXhZNU8vUGFWeHZiOHF2Q0NiMHF4T1ROK2NJQzRpSHVsZlhsZi9GTnlBa0ZuTGh0KzBBTXhGL0tsb2lWOW04cGZOQzl5U1lkVEp5TlUvNTQ1b0JLVFJiRmEvVmU1U1g3N2w2dE9UTy82d21oRFRwL2JoNk5WZFc0SWhMNGtQSTZ3b0E9PSIsIk1JSUJmakNDQVNXZ0F3SUJBZ0lCQVRBS0JnZ3Foa2pPUFFRREFqQVhNUlV3RXdZRFZRUUREQXhHVkNCR1NVUlBJREF5TURBd0lCY05NVFl3TlRBeE1EQXdNREF3V2hnUE1qQTFNREExTURFd01EQXdNREJhTUJjeEZUQVRCZ05WQkFNTURFWlVJRVpKUkU4Z01ESXdNREJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCTkJtclJxVk94enRUSlZOMTl2dGRxY0w3dEtRZW9sMm5uTTIveVlndmtzWm5yNTBTS2JWZ0lFa3pIUVZPdTgwTFZFRTNsVmhlTzFIamdneEFsVDZvNFdqWURCZU1CMEdBMVVkRGdRV0JCUkpGV1F0MWJ2RzNqTTZYZ21WL0ljak50Ty9DekFmQmdOVkhTTUVHREFXZ0JSSkZXUXQxYnZHM2pNNlhnbVYvSWNqTnRPL0N6QU1CZ05WSFJNRUJUQURBUUgvTUE0R0ExVWREd0VCL3dRRUF3SUJCakFLQmdncWhrak9QUVFEQWdOSEFEQkVBaUF3ZlBxZ0lXSVVCK1FCQmFWR3NkSHkwczVSTXhsa3pwU1gvelN5VFptVXBRSWdCMndKNm5aUk04b1gvbkE0M1JoNlNKb3ZNMlh3Q0NILy8rTGlyQkFiQjBNPSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFGQUFBQUFVQ0FNQUFBQXRCa3JsQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUJIWnBWRmgwV0UxTU9tTnZiUzVoWkc5aVpTNTRiWEFBQUFBQUFEdy9lSEJoWTJ0bGRDQmlaV2RwYmowaTc3dS9JaUJwWkQwaVZ6Vk5NRTF3UTJWb2FVaDZjbVZUZWs1VVkzcHJZemxrSWo4K0lEeDRPbmh0Y0cxbGRHRWdlRzFzYm5NNmVEMGlZV1J2WW1VNmJuTTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlrRmtiMkpsSUZoTlVDQkRiM0psSURVdU5pMWpNREUwSURjNUxqRTFOamM1Tnl3Z01qQXhOQzh3T0M4eU1DMHdPVG8xTXpvd01pQWdJQ0FnSUNBZ0lqNGdQSEprWmpwU1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJajRnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJZ2VHMXNibk02ZUcxd1BTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGh0Ykc1ek9uQm9iM1J2YzJodmNEMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzl3YUc5MGIzTm9iM0F2TVM0d0x5SWdlRzFzYm5NNmVHMXdUVTA5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5dGJTOGlJSGh0Ykc1ek9uTjBVbVZtUFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdmMxUjVjR1V2VW1WemIzVnlZMlZTWldZaklpQjRiWEE2UTNKbFlYUnZjbFJ2YjJ3OUlrRmtiMkpsSUZCb2IzUnZjMmh2Y0NCRFF5QXlNREUwSUNoTllXTnBiblJ2YzJncElpQjRiWEE2UTNKbFlYUmxSR0YwWlQwaU1qQXhOaTB4TWkwek1GUXhORG96TXpvd09Dc3dPRG93TUNJZ2VHMXdPazF2WkdsbWVVUmhkR1U5SWpJd01UWXRNVEl0TXpCVU1EYzZNekU2TlRrck1EZzZNREFpSUhodGNEcE5aWFJoWkdGMFlVUmhkR1U5SWpJd01UWXRNVEl0TXpCVU1EYzZNekU2TlRrck1EZzZNREFpSUdSak9tWnZjbTFoZEQwaWFXMWhaMlV2Y0c1bklpQndhRzkwYjNOb2IzQTZTR2x6ZEc5eWVUMGlNakF4TmkweE1pMHpNRlF4TlRvek1Eb3lOeXN3T0Rvd01DWWplRGs3NXBhSDVMdTJJT2FjcXVhZ2grbWltQzB4SU9XM3N1YUprK1c4Z0NZamVFRTdJaUI0YlhCTlRUcEpibk4wWVc1alpVbEVQU0o0YlhBdWFXbGtPakpGTnpGQ1JrWkRRelkzUmpFeFJUWTVOemhFUVRsRFFrSTJORFl6Umprd0lpQjRiWEJOVFRwRWIyTjFiV1Z1ZEVsRVBTSjRiWEF1Wkdsa09qSkZOekZDUmtaRVF6WTNSakV4UlRZNU56aEVRVGxEUWtJMk5EWXpSamt3SWo0Z1BIaHRjRTFOT2tSbGNtbDJaV1JHY205dElITjBVbVZtT21sdWMzUmhibU5sU1VROUluaHRjQzVwYVdRNk1rVTNNVUpHUmtGRE5qZEdNVEZGTmprM09FUkJPVU5DUWpZME5qTkdPVEFpSUhOMFVtVm1PbVJ2WTNWdFpXNTBTVVE5SW5odGNDNWthV1E2TWtVM01VSkdSa0pETmpkR01URkZOamszT0VSQk9VTkNRalkwTmpOR09UQWlMejRnUEM5eVpHWTZSR1Z6WTNKcGNIUnBiMjQrSUR3dmNtUm1PbEpFUmo0Z1BDOTRPbmh0Y0cxbGRHRStJRHcvZUhCaFkydGxkQ0JsYm1ROUluSWlQejQ3N0pYRkFBQUFZRkJNVkVYLy8vOEVWcUlYWmF2RzJPb3FjTEcyek9Pa3d0MEJTSnRxbGNYVjR1K2F1dGxXaGJ6azdQVUFNWTlIY3JLanROYnE4ZmVBbDhhQm9zeno5dnBkanNHR3F0RjNuOHVUc05TWnBjNkpzTlQ1K3YweFlLbnU4UGZmNS9MNDhmZy9mcmljekpnWUFBQURBRWxFUVZSNDJrUlVDWmJESUFqRlhaT1kxVGF0TmMzOWJ6a3NTWWMzcjRNRTRmTUJBYUQ2emw4eS85VE9nZXQ4ZDVqZk43OGJ3TS9kRENScFI1MjF6WGZvakhKMDVJSXloQkFVU1ZBT05kR3pCWXQyZjdLRnJma0phQWtIaDlGWmhjRFhIUmtUS285TUxpaEdhYXZJbW5WM3F5RVgwRXByZ3ovNER3VUQ3a0NIUm5kOFFGTjQzR280VVZtRERnemE0dzI3b2l6ZEEyK2NLK3V1VXBqam8yK3h3Yy80Mlc1MHg1TEdZZURCc1IwSFZJeDV4OGlGNjBDYmxiVEVFa0ZyMjdiTkRCVVZTcTFPS1ZQYkU2MmIzRUg4RnFCZzVPT09FdWMydDhaSmlxTU91R3ArY0tqZzd3VkdjZW96cU40cHhnVlBRa2pGWWdiVkpLRFVoRENqWXJhd1A1cTRFVGdDOWZJTVJIdGl0cFFjQ3ZKT0VMY2JNc1FnbmNpUmtsanB5UWp2RzQ0anFCVUVURmlCaTFQRUl5ZWtPenNXK1R5NWNMSG9zNVIrZE1TMUx0U1N4ZjNnUUhjelIyQ0k0Z01OcFc0SVJBMVFNYTZ0SjQrQzZ1SHVHRThtTkRJeUZxZy9PUC9NTVV1ZVM2SXE4UzkwZEFlQkpTRXkvcUtrSytCTnd6OGNZWTRqYjVKNnU0aVdDSTJCMVo1NkxXNWtFYzRoa2RNcHN2VUM1NTg1U1gwUXViY2dOcXlmZ0RGRWNUdCs0MC8wUzVOeDB3YUN3M09La2NPYkE1SW4wQVlwMDFwamp3Mm42MjZVRGp0SHdhMjhpSHVUS3F0cnYrcmVXNDFOWjZpR2xyN3V1TEpDZmtGdGN0Y0cwNHNnbTFlTlMrWmFEbnBhVEVyR295WDVKSzJpTXo4eHMwbk93V0djUERONDlxYUNkNGJ6Sm96RFptL2FCSytFb3pMdytYaE5CaVl3SGYwc2lPdTFYUGtHL3pLd3ZxWUtjZlN3REVjSC9vVWUwN2VzL1dROHJJeWcyRE9Yajh0amtaZHVEQi9iOGh6RGxsTU1PQ1M1QkVuZDUzNGY4dGkzVVpjNGtNczN4THlhZk1Tc0poZEc4WFBxak5rNXRBZ08yNWZlS0NoblZkRGovSjBGTWtPc1UveE1CdjB3RmhZZUVHZlZIMTNmdURVMHlERkxhNGZjN1JuV0hCZnVURlYydEVtTndhZGM3YWMzVVkyamZCbDdIVDM2ZmUzNGlRTzVtTkNGRkJXMDdLalBncWhPTFUwMXZaOFB1ZVoySkNsRlpOOGprVXM2OXVrYTllUHA2K0VmTDRBRjUrTnl3U2Jpckh0Y0I4TWwvZ2t3QUVqa0s2NEtqSFBlQUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzFfUFJFIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiIxMmRlZDc0NTRiZWQ0N2Q0YWJhYWU3MTNmNTFkNjM5MyIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwidXYiOmZhbHNlLCJ1c2VyVmVyaWZpY2F0aW9uTWdtdFByZXZpZXciOmZhbHNlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWV9LCJtYXhNc2dTaXplIjoyMDQ4LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0IjoxMCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjo5NiwidHJhbnNwb3J0cyI6WyJibGUiLCJuZmMiLCJ1c2IiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fV19fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAxOS0wNS0yNyIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiRmVpdGlhbiBCaW9QYXNzIEZJRE8gVVNCL05GQy9CTEUiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDE5MDMxMTAwNCIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4zLjYiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMC4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDE5LTA1LTI3In1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAxOS0wNS0yNyJ9LHsiYWFndWlkIjoiODhiYmQyZjAtMzQyYS00MmU3LTk3MjktZGQxNThiZTU0MDdhIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI4OGJiZDJmMC0zNDJhLTQyZTctOTcyOS1kZDE1OGJlNTQwN2EiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiUHJlY2lzaW9uIElubmFJVCBLZXkgRklETyAyIExldmVsIDIgY2VydGlmaWVkIn0sImRlc2NyaXB0aW9uIjoiUHJlY2lzaW9uIElubmFJVCBLZXkgRklETyAyIExldmVsIDIgY2VydGlmaWVkIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJyc2Fzc2FfcGtjc3YxNV9zaGEyNTZfcmF3Iiwic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlEZ3pDQ0FtdWdBd0lCQWdJUWFZam54T3VrNDdCR2MrRWloMjdibWpBTkJna3Foa2lHOXcwQkFRc0ZBREJITVJNd0VRWUtDWkltaVpQeUxHUUJHUllEWTI5dE1Sa3dGd1lLQ1pJbWlaUHlMR1FCR1JZSlVISmxZMmx6YVc5dU1SVXdFd1lEVlFRREV3eFFjbVZqYVhOcGIyNHRRMEV3SUJjTk1Ua3dPREV6TVRJek1EVTNXaGdQTWpFeE9UQTRNVE14TWpRd05UZGFNRWN4RXpBUkJnb0praWFKay9Jc1pBRVpGZ05qYjIweEdUQVhCZ29Ka2lhSmsvSXNaQUVaRmdsUWNtVmphWE5wYjI0eEZUQVRCZ05WQkFNVERGQnlaV05wYzJsdmJpMURRVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPczVhdlJ4YnRSTnpiUURwdldnQ01GQ1dFUkFGN0pTOWJVbTFISk16YmcxUDM5VVRKdDRNclVHemExNDNPVytUMkN0TGE2WXd1T3N2RWZvVkFSbkNmNVFIdXVTc0MyU1MxZ25nMTJHQ09iR0Jhc0lCSEMyMVI5SFZzSTBXNHV4ZjVrY0dOaDhZeVN0cGx4WFBjS3hpZzJ0ck1EMVU0aXptNExlTnVGU3FjWGYxeGsvanJJb2dnbnZNSVZVWUswV00zcFI5MWxlYm5paHNYblI4R3RXakFGZHBRSEFPVVk5NFJqTjlxOG54R3VNdU5jZisyRVowVkxlVjN0RzNpUVp4SnlsM3g5ZFpDd0s3MFdYajNHdEtkcFIvRlN1Y3JpRFJMcWJVRld1TWdLQVhpZms0b2tqems1ZmQ1T0ZuZXpQaWw3aDBqWTNxK0hLS2xIak05YjQ3d1VDQXdFQUFhTnBNR2N3RXdZSkt3WUJCQUdDTnhRQ0JBWWVCQUJEQUVFd0RnWURWUjBQQVFIL0JBUURBZ0dHTUE4R0ExVWRFd0VCL3dRRk1BTUJBZjh3SFFZRFZSME9CQllFRlAycmp3M2NMcHdVemhaMmx0UHR2K2N2ZENPZ01CQUdDU3NHQVFRQmdqY1ZBUVFEQWdFQU1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQ1Z1WG5lZzUyNkJjUFFqQmF2WDlQNjBnMEpJSkthSjBDUm9QVUc4M0lsTTVxbHlLUU9ybUc0ZnAvUEhuaFBEL21BN080Y1hMVnV4REIrMlcrZ25oTERpVkVKcGNqeXBCMUdYaVY1aHFmYzBYcG1IVDQ4Q2E5RGl0bjFFZVZlQjF0OHJXQ0sxOFhvNng1eFhNVDlvVFVEcFA0MTBuVkMyd2ZWUTIxSVhBNmJremdRTWlLN0JDSmdnV0o4SG9rZ1BobVBiNFIvcFBOd0x1Q2x2UnhwcG4yMFpjSnFwWVFIZUkwMnIwTEtod2NlK2tacGpKRCtoVW55cm8yNjJSS3JPZjkrM3k4enJGWUMxMGNic0xVbVVKczVwSnh5Z2o0ZlZHYmtCOWp2c0cxeFR1NjJrbzhxVVg1bVhKTnR6M2RSUENFY0d4NHkycm9tNnVzaEFQdHFyMUlrIl0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQWE0QUFBQ3lDQVlBQUFBYWxpdk9BQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNRQUFBN0VBWlVyRGhzQUFHWHJTVVJCVkhoZTdaMEZZQlJIRjhmL2taTzRLekdDdTdzN3hhVkNTNEdXT3FWRzVXdExxYnRSb0ZSb2FTa1ZwRkNrVUlxN094UjNEVWtnN3JrazMzdHplM0IzdVNRWHo4SDgyaUYzdTdON3EvT2ZOL1BtalYwZUFZbEVJcEZJYkFSNzVhOUVJcEZJSkRhQkZDNkpSQ0tSMkJSU3VDUVNpVVJpVTBqaGtrZ2tFb2xOSVlWTElwRklKRGFGRkM2SlJDS1IyQlJTdUNRU2lVUmlVMGpoa2tna0VvbE5JWVZMSXBGSUpEYUZGQzZKUkNLUjJCUlN1Q1FTaVVSaVUwamhra2drRW9sTklZVkxJcEZJSkRhRkZDNkpSQ0tSMkJSU3VDUVNpVVJpVTBqaGtrZ2tFb2xOSVlWTElwRklKRGFGRkM2SlJDS1IyQlJTdUNRU2lVUmlVMGpoa2tna0VvbE5JWVZMSXBGSUpEYUZGQzZKUkNLUjJCUlN1Q1FTaVVSaVUwamhra2drRW9sTklZVkxJcEZJSkRhRkZDNkpSQ0tSMkJSU3VDUVNpVVJpVTBqaHNrQnViaTRTRTVPVWJ4S0pSQ0twU2tqaHNzQ01IMlppMGx2djRQcU5HOG9TaVVRaWtWUVY3UElJNWJPRStQekxLWWlOaVlWYXJVSk9iZzZlZmVacEJBWUVLR3NsRW9sRVV0bEk0VkpJUzAzRFY5T21JemtwQ1JxTkJqazVPWEJ3Y0VCTVRBeWVlM1k4NnRTcHJlU1VTQ1FTU1dVaWhZdUlqMC9BVjFPK1JsWldwaEFyVGo0K1ByaDQ4U0xjM055UW1wS0szcjE3b21mUDdzb1dFb2xFSXFrczduamgyckZ6Si83OGN4RmNYSnlSblowTloyZG5QUGJvV0FRR0JtRFdyTm40NzhoUklWN3g4ZkZvMHJReEhoNHpXdGxTSXBGSUpKWEJIUzFjQ3hjdXd0YXQyK0h1NFk3VTFGVDRlUHRnM0xnbjRPN3VwdVFBVnE1YWc2VkxsOEhmMzQveXBNRFgxdzhQUG5BL2dxc0ZLVGtrRW9sRVVwSGNrY0lWSFJPRG4yYitnb1RFQkRnNU9TRWxKUlVORzliSDZGRWpZVytmMzlGeTc3NERtRHQzUGpRYU5maHk1ZWgwR0RSb0FOcTNiNmZra0Vna0VrbEZjVWNKVjJabUZ0YXZYNDhsUzVmRHo4OVhpRkJXZGhhNmRlMkt2bjE2S2Jrc2MrMWFOR2JQL2cweHNiRndkWFZGUWtJQ1FrTkNjZi85OXlBNE9GakpKWkZJSkpMeTVvNFJycU5IajJMK2drVklJK3ZLeGRVRlNVbkowR28xd3QwOUlNQmZ5VlU0V1ZsWitHdlJZbXpldkUwSUgvZUo1ZVlDalJ2WHgvMGo3bE55U1NRU2lhUTh1YTJGaTAvdDVNbFRtRE4zSHVMaTR1SHQ3UzNFaDJuWHJoMEdEcmhMZkM0dUZ5OWRFdFpYUW1JUzNNajZTazlQRjBKNDc3M0QwYUpGYzdGTUlwRklKT1hEYlN0YzI3ZnZ3TDc5QjNEMjdEbmhLY2d1N3RldjMwRHQyalV4ZlBoUVZDdGw4eDQzTVc3YXVBVUx5UUx6OVBBUVk3ODRUSlNmbncrYU5HbU1IdDI3QzR0T0lwRklKR1hMN1NOY2RCYUpTVW5Zc25VYk5tL2VLaGFvVkNwaGRYR1Rub3VMaTJqT3ExV3JoajUvSWF5SzJvZS9MKzNDdE5aUEtrc0tKaVVsQlg4dStFdFlkbloyZG5CMGRLVGYwd2tyckhIamh1alpvenVDZ2dMRnNVZ2tFb21rOU5pOGNFVkZYY1BSWThkdy90d0YvSGZrQ0ZsV2puQjFkUkZpbFppVWpOcTFhcUpWeXhabzE2Nk5za1hoekQyL0dhTTJmUUJkMmcwODF1UkJ6R2ozbkxLbWNOaXkyNzZEckx4OUI0Vm5JbzhMWTJlUXBLUkVWSzhlSVNKdlZLOWVIUTBiMUZlMmtFZ2tFa2xKc0VuaE9uN2lKQTRlUEl6ang0NlRSWldMOUl5TW14RXZPRlJUV2xvYXdzTERNWEJBUDBTU2FQQnlhL2oyMUNxTTIvUWhvSFlEU0FDUm5vQW1nWTF4b1A4VUpVZlJjRi9hbWpYcnNIUFhickt5SElVRnhyQ1FPcExWcFZHcjRPWGxqZllrcFBYcjF4UHUrQktKUkNLeG5pb2xYRHlkQ0l0UVprYW1HQkNja3BxQ2xPUVUwUVI0OGNJbG5MdHdBVEhSTWFLd2QzTFMzb3dweU0xeWRuYjJDQTRPSXFHcWp1N2R1NGhvRjhYaDRhMlRNZXZJZk1BdGtMN1o2UmZ5bi9SRStMb0dZRk92ajFIUE0weS8zRXE0eWZMNGlSTzRjdVdxNlAvaVBpOCtaajVQUGo5T2ZKemhKTEloSWRVUTRPOEhaMmNYdUx1NzAxODZSMmN0bkxST3NwbFJJcEZJaktodzRVb21JZnBqemp6b2NuU3d0MU1FZ3REcGRDUkN1ZlEzRzlsWjJjak15a0lHaTFobWxyQmMyR3BpNjRYL1ptWm1DckZLUzB0SGFHZ0lPblpvaDRpSUNDRmNMQXpGSVRvakNmZXNtNFROVVljQUZ4OWxxVEYwak5tcDBOQmxtdG5sZFl3TTc2UXN0eDRlQTNiMTZsWHMzMzhBZS9ZZElKR0ZHQXVtVWF0RnZ4aUxMNTgvSjI1bTFHcTFVTk02amxDdlVtdmdTTXVFZVBIWWFPVnVzUVhYcVZOSE5HdmFSTDlBSXBGSTdoQXFYTGg0NE83a0w2ZENsNnVQdm03NGVmNHJQdEkvdVhtNXluZjZUTllKNTlPeWhVV0ZPUmZnM0dkVXIxNDkxSzlYVjJ4YkV2aW52anZ4RDhadGVKOEV5eGR3NUNhN1FpNEZIMXpLTlhTTDZJUlpIU1lnekptMktTR0pTWW5Zdm0wbnpwdzlpK1NVVkdTVEVMTlFzeUN6cXRtVDlXaG5yL3dsa1dOeDQ4U0hZRS9MK1c5R1Jqb0dEdXlQemlSZVpjWGx5NWZ4NzcvLzR1dXZ2OGJCZ3dmRnNyNTkrK0xwcDU4bWtld0VEdzhQc1V3aXVWM1l0R2tUZnYzMVYvejAwMCtpckFrTEM4UEREeitNd1lNSG8xbXpaa291U1ZXandvVXJNVEVSVTZkTWg0N0VpY2RVWlZNeWVPT3gyN3BHcTRHSHV6dmMzZHhFa3hrWGx0eHM1dXZuQ3o5ZjN6THBFMW9mZlFTdjdwK0ZYVkY3U2JUOGFNa3R5NjlRV0VYUzR1Q3E5Y0luVFVkaVhKMkJ5b3FTdzVjL05qWld1T3F6cUhOVGFYeGN2QkEwL2ZkMFpOS3lsTlEwT0NyV0pvOUhTMC9QUVAvK2ZjbmFiSy9zcVhUODhzc3ZHRDkrdlBDU3RFVHQyclV4YytaTWRPeFlka0lwa1ZRVzNBTENGYkxGaXhjclMvTHovUFBQWS9Ma3ljbzM2OWk1Y3lmKyt1c3ZKQ2NuaXhZVWZyOXZWUENFdFB5YjNHckQzUkJjcm5LWk9YejRjTFJ2WHpabFJWV2cwb1FyUFRNRGRldlV3Y2lSSTBRVG9jR3k0S1l5Uy9FQ3k0SnpLZEY0Yk85TXJEMi9HVkNUQUFvcmk3SDJFaWdDbDZzRHN0SUFsUllydTB4Q3o4QkdKczJlWlFYWEFQbjJjTXFoenlwNkNFK2ZQb09aUDgyaWErUlFac0kxYXRRby9QYmJiOHEzd3BrN2R5N3V1MDlHQ1pIWUxxZFBuMGJidG0ydEVoU3VQSE9aVlJUNzl1MUQ3OTY5SzF5a2lnTlAxYlJ5NVVxMGFORkNXV0s3Vk03VS9WVElpOEpZbWF4UjlPV29WS0oyVUI2aTlYZlVBWXpaT1EyUkMwWmg3WlZkZ0N0WldXcFhPZzc2TFpFY3JFeEtmZ2MxNE94SmYxWG84KzhFUkM1L0JqUE9yRVo2VHJieWkyVURYd3REM3g0M2svTDNuQnlkRUxTeTBza1pNMlpZTFZyTWlCRWp4QlF2RW9tdDBycDFhNnNGSmlrcENYZmZmYmZ5elRKc3RiRVlWR1hSWXZqNFdyWnNpYi8vL2x0WllydVV2VW9VQlFsV0xodDVYUEtXczYzMzlaazFhTGo4V1F6YS9BbG1uOXNFQi9kcWNIRHloZ05aSyt5RmVLdjBwd1BKeXkwOGNSN09UdHV4dGVObzd3Z0hSdzBjUE1Od0lUME9UK3o2RGpXWFBvWDdka3hEZEdhUzJHdDV3SmZ1SnFVVXJ5dFhybURTcEVuS04rdmhQZ0NKeEJaNTQ0MDNpbDN4V3Jod0lUWnMyS0I4TStYczJiTVlObXlZOHMwMkdEUm9FSTRmUDY1OHMwMHFYTGd5czdPUm5wNm0xd0NIc3Z2NW1Jd2tiTGwrZ2l5Zk5laTAvbjNZL2RRVHorejhIbWV6MHVDbDlvQ2J4b3YwSndjNVdlbkl5VWlGbGs2OW1zWVRqZDJxb2IxbkRmVDNiNEFCZmcweGtQNGFwLzcrRGRISHR4N2FlRWFndG5NQWZGVXVzQ09MUjVlZWpKenNMRGlTcG5tcTNlSGw3SThrT3F2NWwzWWhjTTY5VUM4WWpUZi9XNEFWVncvZ1ZQSTE1U2pMRHRIQ20xYzY1ZUthVjB4TWpQTE5lclpzMllLVEowOHEzeVFTMjREN25RcnIweXFNNWN1WEs1OU1lZW1sbC9Udm9vM3g1Sk5GUndXcXlsUjRIeGM3SVh6eEpYZDQyb3VRU1BlUHVGZS9vaGpra1BWekt1a3Fkc2VmeGJZYnAzRXA5UWF1cE1malhHbzBrckxUNGFGeWhxdWpGam01T3NSbHB5S1RMQ0EzSnkvMEMycUJOdDZScU83cUQzK05PNEpwbWEvYUZhNnFvaDArdUk4cFBqc0ZzUm5KaU1wTVFFeDZBbzRtWDhYS2E0ZXdLL2FZc01ROE5HNXdjZENTTmVhQWJCTEpHMWtrYnZRM3dqVUFFYzQrOEtQZmJPdFRFMDA5cTZPcFY1ZzR6dUx5MzM5SDhjdnNYMFVUWW84ZTNkR3JaM2RsVGZIaERsdnVTQzRKeTVZdFEvLysvWlZ2RWtuVlo5ZXVYY0pCZ2Jzb2lndjNpVzNmdmwzNWRndnVsN2RWYkZGd0RWUlo0ZnI0MkJJY2pEOHYzT1lUeUdxS3lVb2lxeXBSQ0pOYU5OWFowMStWK094ZzV3QVZDUWNMUnBvdWswUWpGOTRhRjNpVEtQRzRxNUVSSGFIbGZxbHk1SERDUmZ4OGJpTzJYVDlPeDV1S1ZGMEczQnlkb0dJUnk4c1JRcGFEWEdUbjZKQkZ4NWVkbDAzbmxpdWFUY05kZk9HdjlZQ1Rnd3ErSkc1OHJPODJ2QWVCSkt6bVhMeDRDZE9tZndzSE92L3UzYnFpZCsrZXlwcml3NTVId2dXL0JIejMzWGQ0NG9rbmxHOFNTZFdIV3hpNG1heWttQmVWSEtHSFk2RGFLcnQzN3haOVhyWkl4ZmR4RWRiVVVzNG1Yc0hlMk9NNG54aUZSTEtZbk9sUWF6cjVvSlZIR0pxNFZVTURseURVY3ZKRnVNWUx3U28zT09YWkl5TWpGZjBEbXVEZFJuZGpiYmMzc2E3N1czaWtSdmR5RnkybWtXY1l2bXcyQ2p0NmZZQmYyanlOMStzTlFZamFIV2wwVEo1MmFsU2p6MkZxVDlTZ1k2N240by9HcnRYUTNEMFVMZWg4UE8wMVNNdE1SV3hxUEE1ZFAwUG5mUkkzTWkyN3BRdm5GZVg5c1N0bEoxZEpSWXVwNmgzUkVvazVMRFJsQ2ZjUjJ6S0hEeDlXUHRrZUZTNWM3QkduMCtYYzhvc29BQzdvNjFBaEgrbmtpZXBjNkt0Y0Vlem9qQUFIclQ2Uk5lTmpyNFpibmgxY3FDWjBmM2c3Yk9uN0VhYTJmZ3dQUlhhSGo4YTZrRTlzOFdUbDZwQ1JrNFZNc3RaU3M5T1FRS0tSUUdLWlNwWWVMOHZNeVJZV2s3VzA4YTJGcDJyM3hkL2QzOERDTHErZ2pyTXZ0SFRlSG5TNS9RM0hyNlJBU2lFcUYwVFFPVVpxUEZDYnhMa0cvVlVWSkVyR3RiNUtiS1c0ZnYyNjhra2lzUTFLMjZ6SDR5cU5xVm16cHZMSk5na0lDRkErMlI0VjNsUjQ5V29VUHY3a003aTZ1cUZKazRhNDc5NTdsRFdtVEQ0MEh3ZXZuNGFUbzZVUVRuWkl5a3FCbDlvTkxmenI0T0c2UENGazBRL2x1ZFFZMGFSM09lRTh6cVZkeDc3NEN6aWNlQW14OUJucDhZQXVuYVRjZ1hJcSsySnZRaFlzRWhObzNWSFhQUmoxM2NsUzhnaEhzS3Mvd3VsekYvK0djTERpaFRoRnY3UDAvRmJzSTJ0S1F4WWdXNEY1QnRQSkNIRTdhSCt2TkgwQWtlNUJ5dEpiY0hTTEtWT25pejZ1cnQyNm9HL3ZYc3FhNGxPYUYvbkZGMS9FNTU5L3JueVRTS28rOCtmUEw5VVl4RXVYTGlFa0pFVDVwa2YyY1ZVT0ZXNXg4WTNXMyt3OFVmZ1doTE85Qmg1cUozaW90SENueEg4NU9UdW9rSkdkaWo0aHJmQlIyeWRJdFBwUjdvSWZuaGl5bko3WS9UM2FMMzBTN1plTngrQzFiK0xwYlZQdytYL3pzQzVxTDJJelNiQWMxUUNKRW55cEJ1VlZuVktFUG5sSEFuNjE2R0E4NkNmeWNEenhBdjQ2dndsdjdQOEpZemQ5ak42clgwZVR2OGFnOVQvUDRkZHptNVJmdEV3dGoxQzgyR1FFSnJVWWcxQVhYK1NRaGVlbW9uTlV6dTltVWxOeTFCWW9ocm01L0xEcDE2V25aWWkvRW9tay9MRTB4dlR0dDk5V1B0a1dQQmpabHFtVVBpNXI4S0FDM0UvakFWOUsvTmVickNzWGV6WHFlb1RobXk0dll6UlpXVzVxeTE1NSsrTFBZZEwrMmJEN3VRY0NmdXlFR1lmblkzdmlaVnpMemdRY3lJTGpNRThhTDBEbFNsZUF2dHZ4MUNNa0Jpd0tYQXN4VGtJb2VQQ3hpdjQ0NmFjODBYcVRGZWFOSERzSEhFbFB3TzdycHpCNjlXdXdtMW9mdFpZOGp2bm5OdUpNU3JRNEZuUHFlb1hqbmRhUDRwRjZBK0JQNStYcW9EOVA5ampVSi83c0JoVVBlTGFBUHRDd1BsNGg3SGg4bVVRaXFTeGVmZlZWZE9qUVFmbG1PK3pmdjEvNVpKdFVXZUd5bzVMWnk5RVpibVI5c0dCeE1kNDN2RDBlYXpnRVRyVE1Fc3V2N0VQdmYxOUNpNytmeHZ2N2ZpUnhJcEh4SVl2SnlaTktmQklvbm1PTGEwMXN6VmhNdk01U3NwU1hFamNya2dVSWRxZm5aajIvK2ppZGRCbjNyWDBETFpZL2crZTNUME5VQVlPUld3YzJ4Rk9ON2taRG4wams1ZVFJRDBSRGNxZnpkaXhBdUF5SVF5akUwcFJJSk9VUHowYXhkT2xTbXdxanhLSVZHaHFxZkxOTnFGU3VtbmlvWGVGTGd1T21jb0cvc3hkZWFEWUtyUUliS0d0TjJSaDlCSDd6N3NPQVZTOWpkZXh4dlpDNEJORFo4VHhXWE1LYkM1RWhzU1ZGZjRWbGxRTnd5S2FjTEtORTN6a3VJYSsvbVYvWnhqeUozNkZFeHd2WFFDVFN0bE5PTFVmdzdINFlzdkZEWEV1TEU4ZHFqQXNkNTVBYTNUQ3NWbmM2WHhkNGF1aWN0ZTd3MHJvaTEwTC9sMFFpcVhwdzBPczllL2FJUHJUSXlNZ3E1eUxQVXlUeE1YTG9LdmFzYk5xMHFiTEdkcWx3NTR6TFY2N2dzODhtaTZudG16ZHZpcnVIV3c2WHN2UHFRY1NteGlIQ014UU5mV3ZvUmNHTXpURkg4UGJCUDdEdTNIcDk4OTlOUnc3elV6SnN5OHZwc3k0RHlFN1hKMTdtN0k4QUVrZC9sYXNZZDhWT0Uyek44T3pLY1pTSFF6b2gvUVlKR1RjMWtyWEhUWlJzOVlsak10NjNNY3B5dnJ5WkNTU0F3Q3VON3NWYnpSNFMvWFRtSkdZazRVRE1DV1RsWm92cFRKcjUxNFUzVzRwbXNIUEwxR2xmMHljN3RHM2JHa01HbDN4Y2luVE9rTnhKbE5ZNWc5M2ZnNE9EbFc4RncyR2cyS3FKam80VzRhVXNEWGptMkt4UlVWR1lObTJhc3FUNGpCMDdGclZxMVJLemJCakRSVHJQOThjQmd0a2k1SmtkZUFEMTdVU0ZDOWVseTVlcHdKdEN3dVZVc0hEUklSMk9QUVZQc2o1QzNYbEc0dnc4dHZzSC9IaGtvYjZwanF3VklSejV0SU1LWmo0OUVnTzk5VVJKbDQ0YWdmUzcxVnFoWDJBVDRTaWhjdERBeVZFTkxWbG9Kb1U1YlpxVnAwT3FMaE5abE5KMGFWaEYxdDM4U3p1dzQvSXVmYk1qanhGakswejhaY3VyZ09OZ2l5NHJHVzVhRC96WitYWDBDY28vQVNRUFRqNFZmd0hwMldtbzVWMGQ3bVNCbVNPRkt6ODh4TUlRc0xrOGdqUlhGdnhxOHRRWWZKKzRiOU1XNE9OZHUzYXRtTStOQzNvK2RwNzBsRjNIbXpkdmppNWR1aWc1SzU2S0VpNXI0WGlCOWV2WEYvZTVKR3pjdUJHZE8zZFd2dDFaVklKd1hhRUM3NnRDaFlzUGljZE9hZG5iejR5Tk1jY3dmT043dUpFYVMxWldRWk01S2dVeUNRVjAyV2ptVnh1MVBhdmp5VnAzb2F0ZnlTZWZOT2RFeWpWOGMySTUvcnR4QXV0aWpsTUpTalVmclJjSm1pS1krV0FCMHdIeDUvRmdrd2Z4UTV0eEpKYjVDNlRvMU92d0lOSFNXdWpMczJYaFNrMU5GUlAzR1FZdnM4aDA3ZHExV0lYQnFsV3JjT3pZTWN5ZVBWdE1KVkVRM0Z6VHMyZFA5T25UUjB3NnlyOVRucXhidDQ3dXpWVnhUVmxJT1FKNW5UcDFsTFZGdzBGY09mN2pIMy84SVFxa2dtQng3dGF0R3dZTUdJQzZkZXVLcVRSS2N4OUx5N1ZyMTdCbXpScXNYNzllVE1ab0RRMGFOTUFMTDd5QTBhTkg2MmYyTGdTTzdzQmh5WGdHQXg0S3dyQUY4Y0FERCtEKysrOFhuNjJscWdrWGg2QnEwNmFOOHEzNGNQekVmdjNZcS9yT28wb0tWMEg4Zm00akh0dzJtVW84c25BNHpwLzVvZlA3eTh1NENUQTFHdDFxOXNYRWVvUFJ4cmN1WEMySVlGbkNBWDRYWDl5QkwvYlAwamNsYXR6MXgybFJ2K2hBMCtNUjZCcUFrd08vZ1p1RnNXcDhXeXdWU0xZcVhCd2k2c3N2djhTcFU2ZVVKWHA0WEV5UEhqMHdheFpkdDBMNDU1OS84TjU3NzJISGpoM0trdUxCdFgyTzRqMXg0a1JsU2RuQU0wYS84c29yK2FJUStQcjZpcjZFMWF0WEswc3N3MDFLdkQwWC9pV2hTWk1td29xWk1tV0tzcVRpZVB6eHg4WDU4L2lta3NETlhEemJOb3V2SmZpWmVlcXBwNVJ2K2VFSkVsa3NlYW9kYTZocXdzV2l6Qldja25JbkMxZUZ0NnVVdEt3Y3V1VnpQTGpoUFhwYVNSRFlXMUEwMDNFVEhTZXlXamlSWUxuU0QvUUxhWVc4eDdaaVhiZEo2QkhZMkNyUlNzeE93NVcwT0Z3Z1M4NlFMcWZkd1BYTVpHU0xhVTBLcDZOdkhYemVmQXp5SGxtUGw1cU9RZ0NMRjIzTHgya25qczl3ckpUNDJNbGF2S1pMaC92dkF6SHYwazVsTDdlb3pGcDBXY0pOZU93dXpBV1F1V2d4WEl2bTJaZTVvTGRVaDdwdzRZS3duamlnYjBsRmkySHJqS2UwNE90cXJXVlFGQ05IanNSZGQ5MWxNWFFPUnhaaE1lSjRrRnpnbWNQV0dWc2VMS2dsRlMyR20rU21UcDBxem9zckJ1VU56NUE5WWNJRThYcy8vUEJEaVVXTDRlZUJMV0sranViMy92WFhYeTlVdEpqMDlIUmhkWldtbjBoaW0xUzRjUEZjV0piTkVNdHd6cnMyZlVMV3pGWm92YXBEYTZlbTVFREprWkpLSkh2T2xCS0wwUkZkc2J2UDUxamUrVFd4YldHc3VMb2ZyeDc0Qlk5dS9CRDlWcitHTGl0ZUZBT0pXeXgvRmkyVnhOODdybmdCZlZmK0QyTTNmb0JuZDMyTFg4NXRRRnhXcXJJWHkzeldhQVNPOVp1SzV4dVFOWm1Sakx3YzNjMWoxUjgzSnpvSFIyZll1d1pqQklueXROT3JsSzF2TDdoSlo5dTJiY3EzZ3VIbXcwYU5HaW5mOUhDaEZCRVJVZVl4NWg1NTVCRTg5TkJEeU1nbytRQnV0cEs0V2E4b09CNmt1UmNYVzZ2VnFsWEQwYU5IbFNWbEErK1hyUmZ1OUM4UHVEbVErMlNLTzUxOVVmQjE1UDBhWW1keXMrdEhIMzBrUGx2RHM4OCtpNzE3OXlyZkpIY0NGZDVVR0JWMVRZUjg0bHEwTlUyRjFaWTlnMnNaOGZCV2s2VmxKbmg4NVBIWnFRalZ1R04raHhmUTJydUdzaVkvQ1ZrcFdFS1d6WnYvemNQVkcyZWdZeXVJOThjNzRYNm1tMjd0NXRENlhMSzQ4dGd6aVArUytOSW5ENDBISHFzN0NHODF2QmNxc3VnY0xXNExKSkVsMTNydFd6aVJIQVV2dFNzY0RBNGNON0hUUjhEUFRNVDdqZThYVFp1RllVdE5oVVUxOVZpQyt6M1lNdUwrcVlzWEx5cEx5d2NleTdKMTY5WmlqMm5oSmhydVl5b08zSmZCeldvZE8zYkVrU05IbEtYbEE5L1hBd2NPb0hIanhzcVMwdlBPTysrVWU1UUlqcDNIMTJqSWtDSEMwaTRPZkQrS210bjNUbXNxbkhwOEtWNDdQRWNFTTdBWC9TaGxnNDdLd2tDdEozNW85UlM2QkpwV05pdUtDcmU0VEF2dGdzbk16VWFuZGU4aWhheWJDQ2RmdU5tcktLbjF5WUdUU3F4N09Md2p6Zy84dWtEUit1dmlkb3plK0JHOFp2ZkhRMnZmd01YRXk5QnAzZlI5WkR4OVB6Yzc4cmd2TVVCWlpTR3BhVDI3d0x0UW9yeTBUUTZsdUp4TWZMSnZKcHgvN0lSMkt5Wmd4c2wvV05ieTRVNi9jN3p2Wi9pQ1JFbW55d0wzWnJuejhSdk9oYzdMaS9ZZjRlS1BkLzViZ00rUFc1Nnd6Z0RYTThRTTBnUTdBVlJWMkpPTW01S0tDenRkY0lkN2VZc1d3ODFjUEhBME5qWldXV0lkTTJmT1ZENVp6ODZkTytIbDVWWHVvc1h3TThKOVh5ZE9uRkNXbEk1eDQ4WlZTR2dqZGg5djFxeFpzVVdMNGZuaFRwOCtyWHlUMUYwNEJzOXQrQUJwbWNsSXpFaEFQRlgreXlvbFp5YmhWUHhaZFAxck5DYnNtYUg4WXNWUzRjTEZaYTVTN3Q3OGE0bnhlMmJpYlBKVlZIZnlnU3VMbGhBcmZlTFppeStueEdCdGw5ZnhZNnZIbFMxTTJSWjdIUFVXamNYd2RXL2oxek5yQUdjdndJMXFTeXhDd3JyaVhId0F4VXk4SFNjV05XY2ZNcjFDc0lkKzY0bXRYeUI0N3IzNDRaVGxKcjhKZGZwalY4LzNZVWZXbFgxZXJsNjhESWtFek4xQmd6b2tYaCtRZUsyTkxuaTZBUmFyUEJHR1NqOXF2NnJDTXlzWDV2VlhWV0RSNGhxKytWaVlna2hNVEN5eVpsOVZZS3UxdEZIOHVUL3IyMisvVmI1VmJjcXJpZFRXZUhIL0xKeTRUcFVXS3B0RXhiczhFbGY4UFNNd2VkOHNuRW9xZVQ5blNhbHc0VktwSEtIVjZndGNIdk5SRUNtWnFRaFhlOERIUVF0Zm8rUmlaNGRRdFR1dURabUJEdjc1WGR1UEoxeEV4MzlmUVlkNTkrQTRpWnZ3OE5ONjBCcFNHM2F5TUNpbm9rUDZaRkFqUStMTFl2U2QxNXZrNTBUL0dKU1hMVGFOTzZKMUdYaDg3WnZ3b3QrZWN6NS8wTjI2SHNFNE1XQUsybmhXaHdOWmxINk9UaWJuNXUvb2pLYnUxVEJoOTB5Y1NMUTgxNDkrbkJJZkY1MmFtc1N6aXNMTklMWUM5OEZaTzVVNVcybUZQYmRWQ1haOFllZVJrc0tXVmxuM1o1VW5QUEJYQXZ4MGRCSGd5bE9XS09WVGVjRmREZmFPK09uTVdtVkJ4Vkhod3NYdDcvYkNRYU53ZkIyYzRFVldpSEhTMEgzd0pPdGtRZGRYNGMzdTVtWk1QUFFIR2k1NUhGdXY3UWQ4NmxETmdBWFNVTkR6WCtQRVlrUTd6S0ZDaU9NSkpwUElKWkJZSkZ3QWJwelIvMDJnbWtReTFlTFM0NERzRE1xdjcrUEt2eThsY1lncHF1VWtaS2JoZ2JWdjRJWHRVMm01S2M2T1d2elMvamtTcUhCUzdpeDRtNTJqdDcxR0NITnlBUTRncWFuc3FLQzR5Z3ZCclpxY09VUFgwSWI0K2VlZkVSZVhQeXlYT1d4SjJoSWNpcWdramd0c1ZkcUtwV1dBbTZjbGdCT1hiVncrbU1PVDA2YlM4OHNSZ01vS0tzdDV4dmVLaGt2Y0NzWEJ3VjVZWFV4NmVzRVhrUHQ5L0tpUTkxR1NxNTBEd3AyOXNLVEhXM0JqQzhlSUsybnhhUFAzZUh5NCt6dmtxTFZrWWJuUmpTT1JZWGREazhTNTZlSG1xVXpJT2dwVmFkQ1VyS0JSOVFiajE5NGZZdCtJdWJnOFpqWHl4aDlBek5qMU9QWGdVcXdlOUQzZWEvc01PbFpyampwcVY3ano0R0lPNGFTam0yWHBOM2labWdUVHhSZGZIVjhDdTlsOWNkb3NVang3VnY3UThWbDBEMmdvK3J3TTV5Z1NuWGV3eGcyZUlocElmckpJN0JnV0xtZG5zaWFyS093Y1lHczgrT0NEeXFlQ0tXdFB3SXBnekpneHlpZnJZRGQxZGxHM05lVGtwZ1pZdEtnc01zQVY5S3cwaklyb2l0OTdmWWdHYnFFQXgwNDF0QmlWa3FJQ2dwY0hGUzVjYkcwWlJzdm42TExwMmxGQmI0RmdKeThTS0MwOFNhUmNIZFJrWWJuZzB6WlBRc1Y5UzBZY0pLdW95ZDlQWU5mMVl5UVcvblRQK0NMeWpUTkw3TWlRZEJYcVBFZE1haklLdjNlZGlKUERmOGQrRXFiWkpFd1BSblJHTTYvcXFPYnNUZmtocGhpcDZSYUVub0dOOFVhRDRkamM4d01jditkM2JPMDNCViswZmhvOUFwc0RMRWlaSkdENW1ocVZST2ZBTlpKYUMwZmpIdzRSWllROUhlZHJ6VWFpcG5zZ1ZIYjI4S0R6dkprY25hQVNUWUw1U1U5THYvbTgyVHRXL0FOakxiWllpQnc2ZEtqSWZoSjJJTEExdUFtTm96UllDemNSSmljbks5OXNoOExtOTd1am9VcDZqNEFtbU4zMWRUd1EzaG4vRGY0T3YzVjRHVWk4S05iWkloVXVYR3h0T1RscFJlR2JUY0xGMC9oYmdyM3h1QkIzSmZIS3k4dkJlNjBmeXpmLzFxYVlvMmk2NUFuY3lFelRoMXJpblhLaGZqT1JlSEIvUkVZU0hITjBXSFRYVjRpL2J3N2ViZjR3SGdqckFLMXdpUzhlRFQxQ01hSEJNS3dtQ3kxbHpCcjBEVzFIKzA4VU5ScmhWbWpTSDBiLzhCeGVKRVQ5LzMwSnMwNmJSbEZncSttRkppTVE1T1FwQXUveVJKSXMxdXcyNyt5UVA5d1RrMjQwOXFncTkzR3hFNE90d2U3TzI3ZHZWNzVaaGdlOTJocDh6TnhrYUEzc1VGT2FBZEdTS2tpdUR1RWNoTnlJa1hYN1l4dFYzQ1BZVTVyTHJ6S3l2aXFLU3JDNEhLRlNxMFVUTFBmWFpHWmE5dWJ5MDNxUXRlVUNKenMxSHE4L1RFd0JZc3lCaEF2b3N1Z1JFZ1UxbGVDMFRoZzU5SThoc2NXU0VVK1dtak9tdDNrVzJhT1dZVWhvR3poYkNLOVVFdmpuWEVoSVYzUi9HeGRIL0lraElhMzFUWkI1SkpUQ2E5RndMSlNSclVSWGZ6eTg1ZzE4Zi9KZnNiMEJucjdsa1FhRHhUeGNIblMrbm82dWRNeXVVQmNRN1NPRmFzS2lmNHVTazhheXVGVUZ5aVBZTFFlYWJkZXVuZkFDNUlHMjRlSGh5cHF5ZytNRkZvYTQ5dVZBeTVZdE1YandZUFR0MjdkWU1RNnR4ZHFtV3g3MExibk5JQ05nN3FWdE9Ndk9ha2EwODYrTGMvZk53NmdhdllHMDYvcitmbEZnVlgwcXhlSnkxbXJCVTlEbjBJWEs1YWpwRnVBQ1hXT3ZSaU8vR3FqclkxcEFIVStPUXF2bEx3QnVBVlNha1Nqd3RiNHBGRXFpUEwxQzIrTHdnRzh3cnQ1QS9ZWUZFSnVaaktrblYrQzV2YlBRZWQwa2RGMzNGanF2ZlF1RE4zK0tTWWZuWVZQc01TV25aVUtkdkxDbyt6dVlTMGs0Y3VneXpZNkhNdkZmenhBOHVmVXpyR2ZuRVNNQ25YM1FQYVNGdUJudUpNSXNZQm9TZUV0d0U0NERpWUk5N2MrbEN2ZHhsVFhUcDA4WHdYWFpHbGkwYUJGV3JGZ2h4a1p4TklkV3JWb3B1VXBQUmZkaGZmREJCL2p2di8vRWVTeGV2RmpFWk9SQjBadzR0bUpaWWMzUUJCNzhXNVJ3RnhldWJMQVljenhCODhnb2tnckMzZ0ZwdVZtb3UzQVVwaDlkckN5OHhlek8vOE1mM2Q4VDhWMlJmQldpQ3lSZkl0R3JRczJLRlM1YzNBNnRkV0xyS1U5WVhCa1psaDAwdkRSdThIZjJRSi93OXNvU1BZblo2YWkvNUFubzhyTHA2TWtxdWRrc3g0bkVnWnNHMCtJd285czdXTlh6QTlGWFpzNGxXci80MG5aMFdQVWE3TDV0QmYrZnV1TTVFcFNwUitaZzg5VUQySGgxTHpaSDdjWFM4eHZ4L3A0ZjBXWHhZN0NiMWdEMmMrL0Zld2ZuWUR1UGtiREFmZUdka1BmSUpvU3dLeXJIS1RScE51UWNEcUxmcS91Q2gzQ1Z6WE1qbWdYVVJ5T2ZtaVJjTHZDblBOb0NMTVByMStQb09iU0hIVmwxYnU3NVBTdHZOemo2QXcrbzVYNFhuaHJENEpEQ0ZoMUhXdUNvNzl4L3d5N3RQQWRSYWFrb04vNmdvQ0J4WGh5VGoyTVdHbzZkTFRvZkh4KzBiOThlQ3hjdUZERU4rWHRwWWMvQ29yenVTakpnM0JJY2lZU0RHZlA1OFc5eUpXUE9uRG1pRDVHWGNiUjNqdEVvcVVBYzFNaDJkTUw0elIrS2NIYVhrMG1NakxnL3NpdnludGlKV2IwK3dwSitVN0Q0cnE5TTB1cUIzNkNaZDEyOWQ3VytNS3RVS2x5NEdNTkx5cUtsSzJCTWpNckJFUjJEbXluZmJqRnEwMGZJWTNkTzlycGpEejl1a2pJazVNQXhOeE96dTcySngycjAwRzlneHFTRGY2RFZQODlqNk9yWHNTM21NT0FUU2FrR3hFU1VXay9hTHhXTUlrb0dKWjRQeThWYlA1QXZrQXRRSGQ3Yzl5UGFyNWlBWG1zbVlzVzFnOHBlVFRrMytIdjBEKytvcjhGUWJlZldNZkx4MG5mdlNMVDk5d1drc0dWbVJIUC9laVRZN25EWEZHeEpYYjkrUTRnLzdZbXU0KzF0Y1hIVEdRZVJ0UVp1UXVTQ2tZUGFsZ1llcDhXRmEzbkNjZmxZa0t5QkJZN0hZL243K3l0TFNrNWhrVmJZa21kQktTM0RodzhYRnVUNzc3K3ZMTW5QMEtGRGhaRHlSSWlTQ29UTElQY1E3STA1Z2pxTHh1SmJDOEVTeGxUdmlrSFZXbUp3U0N1VHhFNXFHM3E5andnT3VsQUZJdlp3YVYvaHFCV3ZRZzZxbVpsbDJlSUtjdzlDTlZmVFNTUTVKTkxmN0oybkpURVJWZ3hiTkp6b05ISnlZSitaamgwRHBtTlVSUDdKNmxaRjdZUGR6ejN4L3NIZkVKMmRSb0pFKzFhNUtkdFRocHY3c3BSb1BVZXJzQ2NyeUprS0VKVXIxa1FmUWI5L1hrQzM5ZThpanEwckl6aHU0Ykl1YjZCblpIZWw0NU9PejNoL0RscGNTcmlDeDNhWWp2TnkxYmlnbGxjNGZDeFlpUVpTMDFKRXJkek93UTVxZHJ1L1RXSExpcHZPaWtQMTZ0V3Rka0lvQ0o0enpOS010V1ZKY2NNK3NSZ2I1cUlxRFlaNTBDeFJGdEZBT1BEd2dnVUx4TXk3MXNDaHN5b2lvcjNFREtxVXAyVWxZczZKdjZuc1NsRVdGbzI3eWdtK1pMWHBDOFRLcFZLRXk4WFZSUlMram80T2lMdGhlZEFuVDE5djNFK1ltSldDOXc3OXByZUM3T2pDOFRwRElrc0wyU2xZME9OdHRQQ3F6Z3RNNkx2eEEvUlo4U0tWaGlSNEhFV0R2UW5GUHN6Mkl4TDljek9acjFPMlljdUpuVVZjQTdEaDBqWUVMeHlEdjY3a2IySmExZTB0dEF4b0RPam80VERaSCsyRGptWHVzYVhZSEh0YzVEVlF6YzBmM3V3aFdRQzVPYm1pNXN4eDcyNW51QitySkhDekc2ZlNZRzM0cDVKUTBvS2FoNUNNR2pWSytWWXlDdlAwTE8xOFhoeWg0NU5QUGxHK1dROVBLTW5SK2lVVlJGWXFOTHBNdk5WcUhEWU5tQ1ljd1l4Sno2U0tteTRyWDJLUDZiY1B6Y1dlWktwQVZjSzRMWE1xUmJoOHZIMWdSMllyZDl4ZXZXSmRmTEg3dGsrbG1uQTJpUTViR1h6WVN1S0xTTFdHVjVzOWpLSHMyV2RHamNXUFllV0Y3U1F5UVpTWExUMVdEc1AydEsyNENmU1p6Vi9lUHpmZjNVejBYVGlQS0w4ajRzSWJ0bFZVeU1rSG1mWU9HTDd1TFh4bk5qVUo1OWpkaDE1bWpxakJIanVHM3hMN28wVEM5ekJQakdrRTJWSmk5bU5MY0hNT0R4OFF3dVhKWWF4dVQzaHl5ZEwwZ1hCOHZkS1FrSkNnZkNwN2lodFYzcGpTRnZDRldWeWxDZjdMelprOHAxcEorZjc3NzJXZlYzbkQ0MlZUcjhQZk9RREpEeXpHMjAwZVVGYmNvc2ZxU2FnMi94NkUvSGsvcFJFbXFkcTh1L0hPZ1YvMVpSbFh3aXNaTGtVckhIOS9QK0VWNTBDV3orVW95ekg1akRtV2ZBMHJ6NjNYTnhHeUhBaHJqQkwzRjJVbVkyQlllM3pVeUhTNmdrU3FXUVQ4K1NETzBzMFNBWGJGTmtiYml1M3BPemZ6WlNRZ3dzVUh2ZjNyWTFSb0c0eXMxZ29Qa2dnT0NXcUNobTdWU01EU3FDb1NUOXV3dFVXL2Fid1BQaDRXVTQwWG50cjRJU2FmK0VkL0FFWWM2VWUxV2U2WDQ3NFQ0KzBjdFRpVEZJV3Z6YllwNkxtNGN1V3FpRHpDVFZsK2ZxYmpNbTRuZUVaa25saXlwSEFmVW1rb3I2ajduVHQzTHBVTGYyQmdvTlhOY0piUUZkQ2Z6TjZaM0VSYVV0aHFLczN6eUgyMm4zNzZxZkpOVXVad3VhUEx3SmRrWlVYZk01dXNkOU9oUlhNdmJJWG5MLzJ3N3RJV3hEdW9jUzFYUnluSEpGMWxaemdWbFhOYy9sVUJ1QVN0Y0x5OXZVVUJ6RTJGMTZKTXZWc3M4ZUhoT1NLSUxaZjFldkZSRXRjaXlFcjZ1ZjBMK294RzFQbm5PY1JrcDlCMmJ2b0Z4dHR4MHFVRDhaZHdYMlJQL052N1kyenQrUkZXOW5nUHN6djlENzkxZVEyL2RuNFZpN3E5aVUyOVBzU09QcC9oTTQ1Q24wbzExalJLWWg4c1FFYjdVem8rSit5Y2h2bVhUWnNONjN1RVlsU3R1NEJzRGhObHZCMTlwb2ZoK3pOcmtTVXN1OEs1Y1BHU2FETGlwcXlRYWlTb3R5bWxkVVRnUGlHMTJ2STRPR3NvcjdGYVBIbGthWTZMUmFzMGdsNFFwWTNpLy9UVFR5dWZTZzVYVnNyQ2UxSmlnZXgwOUE1c0lZSWRtUFBlM2w5dy85bzNrTWlWZU81YjV6S0p4Y2s4Y1d0Uk9iMFhKWUdPc3VMaGlBOE9EcHpzY2UxYTRVRkxEeVZleEI4c0JGeEx1Rm5nSzRtc3BWa2RYNFFQZXdBYTBXWEQrNGptWUpJYUQ4cEhDNHkzWVRJVDBUdW9LZkllMjRpNTdaOUZuOERHQ0hieTFLOHp3MHZ0akRZK3RmQlN2U0hJZTJnbDNtcitNSWxsRnFVTTJwK3hDRkZpOFhMeXhuMmJTT3ppVE9jRytybjFrL0NsZGZvQnlvWnRhSVhLR2YvRkhNVFdJc2FLTVRIUk1hSjVOU3NyRzVHUmtjclMyNC9pVHV4b0RsZU0yRlcrcXNFV1UybmdmczJ5OEM0MGg4ZkhsUlJ1NGl1cm1KbHZ2ZldXOGtsU3R1UWlnQ3YrUmx4TFQ0RHI3NFB3NXI0WmVzRXFvOEFNRlVXbENCY1RFT0NIYkYwT25KdzB1RjVJMi91dTZ5ZVJtNVZNUjhyOVUzeTRTaUxyTjlRMUFJUERPbksybS94N2RTODJYYVVhSkRjcnNqZ1k4clBJY0JOUVNneVdkWHNMSzd0T0V2bUx5OXNONzhFbXNzd0MrVUZnNzBUamZpdE9ZcjRhUnd6YmF0b0o3MERIOG54OS9WVCtwbjFkZEl4YUg3ejQzM3lScnlEWTJrOU9TUlovUFR6Y2IwNE5jenRTR3F2RVFIbTd0SmNFTnpmRitpOEY1V0VOSmlVbEtaK0tUM0VEK0JaR2FhWmdrUlNDb3pOVi9yZGgyWlc5eU1oS3g5UWppeEEwLzM2a2NnWGM0TG5ONzR0aDJpZHpzbEwwUVhsekxUYzFWd1pjZWxZS2RldlVSbVpHaGlpa1RwMHFlT2JTeVR3SnBOb05HaElldFpJMGJMcnk3TWUxKzhKVFpUcHU1NTZkM3dvcmh2T282ZlJFZmhJS0R0eU8zR3lzN2pjWi9ZTmI2RE9ia1VRbWRYUjZIR0xvSnNXazNVQWMvWWFsNHErVGIyMGNvdjNVY3dzU2ZWZml0d3pIUjJhVVJ1Mk9xSVJMbUhGMmc3S0Zub2wxQjlLNXVOS3g1SWxqMHVlM2h5TlpqUHVqRGxxY1FkbEFmSHk4Y0JyZ0F0bkh4MWYwQzl5dTNLNU5SaTR1cGkwRHhhVTh4Smo3ODZ3ZFUyYUpObTNhS0o5S2o2ZW5wMmhSa0pReDl0d3Zub1c3Vi8wUGpaZVB4L003dnRKWG1LbWNGRUtWa3cwMXJmZm56eHdkd3hENG5MOW5wV0ZBU0h0ODJ2WlpVQ21xYjIycUFsU2FjTldyVjAvRUtWU3AxRGhkeU54TlIyT093SW5FU1VXSHlsSFVEWW1iQ2QrcFAxekpwV2ZtdVExSVNZMkdxOG9KamlRZ04vUFRqY3ZOaU1jcXNySjYrdWZ2dUY5OGVUY2UydlF4Z3Y0YWpjQlp2UkR3YzNlUmZPYmRpKzRyWDhIc002YkJjUmsvRXRQZGZUNkhYVzRldmZ3NVVKTjQzZnc5K20xSEYxOThkbnd4c3N4cUtTL1hHMGdWbHd4eFRJYjhMTW9jYi9IbmN4dVZYUGxoajdEa1pCNWpwRU40ZUVpNTFMeXJDbVZobVZSRlNsdlpLSTk3ems0WlhDa3FLZXdCV2xadzMyUllXSmp5VFZKbVVKbmhvM0ZENnBoVk9EbDBKZzRNbXcwMXgwOWxnYUx5aWVjSVBERjBGcUpITHNGemRZZm94WXZScGFPcmYwUDgzZU50dk54Z0dQYjJJOEhqdXBOQjJDcVJTaE11VDA4UDBjZkZxYUN4WEV6ZmlNNUkxMlhEa1lWQlNabFVRNmdUbEQrcXhrZkhsa0RyN0NjR0FCdnlxdTBka1pLWmhMRzFCNkJYUUVNbDV5MEdySDRkUTllOGhsOU9yMElhaHpQeERBZThhMUNxU1ZmSEFSdXVIY1NZVFIrSldZMXp6V3E4TG81cS9OcjJHV1RUZHNhL3ljZktVN0djVG83R1AxR0hsTng2T3ZuV3BmMnFSTzNGa0orVHZaMDYzNWd1WTJKaVk0VkFjcTA3OURaMnpHREt5NnV2c3FtS3paZE1hUVpjbHpaU2lURXM3TGRycGFWU3lkTWgxQzFFeERobDZyc0hvdzczYXdrTEt4M0RxN1ZHaEt2ZUsvVHBlb1BoclhiWGk1TXVDNjM5Nm9ubERNL1VFY1JkSkZYZ09hNDA0V0x2dUZvMWF3Z1gzWVRFSkVSRlhWUFdtUEp3ZUNkUks5QlM0YzVOY2xvU29teXFFVXlzYXpvZVp0VzF3NGpPU0lJNzFSNDRueUhSeGdoekRjQzBacVAxR1JXU1dHeCtHNFRsUE1hTFEvdHp1Q2ZhdDdncG9xMlhFdmRGc1RtdDhSQ3pmRHJNN0lKRGNlZVVQZWdaR2Q0ZTk0UzFRemJWYW94L2w0OVQ3YWpCenhkTXJhaXVmdlZGRTZNRFZaNk44enVUQ0Y3aEFMMEZjT3JrYVZIajVpbGhmTXVoZzE1eTUxSlZySGNXOXZJYy9IM25rb2M4bzN1c293cHdqa0Y4cUd5TjVOaXFDdHhDWlB3NDVCaDVPK2RRbWNpcEtsQnB3c1V2UzNoRWhCQ3VKQkt1dUFLYUt4cTRoeUNBUklVUFZFMTJpaU45MGpob1VNL0QxT3JZRjMrT0xLSmNmZDhSNVRNa0ZwVFJZWjFNcGpQaEYyVFkrcmVwcHBtdWowWElkNHB2bHZoYlFDSkJoTllWYlZia2Q3MS91bVlmNkxpZDJPaDN1V25UaDBSdm5abkZ4Zk50VlhmMkZYMXV4dm50eWNwbzcxTmJ5WldmNHlkT2l2NUFqVnFENEtEU2VhZEpKRlVSRnEyWW1NSzlqQ1Vsd2E2UUlFMTIrYm96S3QrZUtwcEtFeTZtV25BUU9NbzNqK2M2Y3NUeWRCSU5QRUxRMXJzbTdFaHMyT3JpcnR0NnJvRmtzdDRLZWNTVmg4TUpGK0ZHNG1Td3pEaXg4NE9ub3hOWlJlMlVuSHJtbnR1RXRlYzM2ZDNsaFdMeFpWQVM5emN4NHE5WmNuUkdSbFlTQm00d0RTRGF4Yjh1L01tRVpzOUI0OTkzSTRGTnlVeEJGQTllTnFLcFp4Z2RjNjZ3eWd4NTg4Z3lmS0pHZHlXSEtWZWpvcENSa1M2YWRBSkp0SnhFZEgySnBQUndCYkkwRmhmSEd5MHJNakl5Q28zdUlTa2JjcWlzU2MxS3BacENNdDNBSktRYkJmdG1heXladlFnNU1BT2xOS04xVlFrdWtTdU5pT29SSWxJOFd4S0hEaDlXbHVhbmkxOWQ1T1hta1JBNWtHMWloeUN5d0hoOGxZSFVuQXhjU28yRnE3MWE1R0dyaXhQM08zbVFwVlNYckRaakh0dnpEVmxhaXVjYXY3T0d4Q1R6dkROWjlKZWJMcm01a1A0WXI5ZDZZUm1Kbm5BbE5XSjRTQ3RrMFRMajMrZlBYbHAzckk4eERhZlQwanRTOUZjWjhySHkxaUl4dGpRRkM3Tjc5MTVvTkJvUlRiOSt2YnJLVW9tazlQRDd4eUdiU2twWnp0L0ZrZmtsNVkranZRcGpJM3ZncVZwMzRaRzZnOUhCcUIvTFIrT0s1MnIwd1RobFhXZi8wc1g5TEM4cVZiaThQRDNoN3U0bWFuenhjUWtGMXJiRzFlb3RMSzJiWWtDaTVjempwUlF5Y3JJUlJ6VUhWMGYxVFRGZ2E4YUJCS0VoVDBsaVJtcmlGWENFZGhOVll2czQ3VHEyRFA0T2FROHN3b0hodjVDQWNaZ21idE0xeXNlMVV3ZEh6TCswbGI3Zm9xTnZYZEg4SjZ3bzVSallrbklucSt0S3V1bDUxWFlsUzVOK2tOZHovdFRzTkx4UXU1K3lOaituVDUwV3dwV1dub2EyYmN2Ty9WZ2lZZGdOdmFUTW5UdFgrVlI2ZnZ6eFIrV1RwR3pKbzVLTHl5ODlHZ2NWM216ekZMN3ArREorN0RZSmQwZDJWZFlBSWM0KytLejljNWplOFNWYTl3WkcxTFRjQ2xUWlZLcHdNUzFidGtCcVdwb1FzTlZyMXl0TFRlRUwzU2VnRVhSNU9takppdkpWdWVnRlJJSDdyTmdGM1VrSWdaSklPRmdjNnJpWjlnZnRqVHRMMjNKMGVIYmNVSm9BK1RPWnhSKzFIWThPL3ZYaFJML1h4THNHUG13K2xzU0xYVU9WZkNMcHR6dkRscGtSSVdRdGlkK25mUmtmZ3h2VmJ0S3lUYzF0RFFrZnIzZWk5U3pJSVdSQkRnNXBxVjlweHVrelp4R1hrSUNjM0Z4VWo0aFFsa29rWlVkcG9uSDgrdXV2eXFmUzg4Y2ZmeWlmSkdXTEhYSTRZazhwY2FSeWs3dERxZ0pjRWxjcTdkdTFSWEpTa3JBb3pwd3VlRHpYQy9VSElETXpEUzVVNkp0UGE4OWh0bHhJSUp4cHVlR3ZTSFNodFNJaS9DMVN1Um5RZ2NXS05oSVRPMUlTTnlOWFAwbWFFVHkrUVdESWR6UFpJeVhYVkl4WVBQbjNidjYya3R6SkNoUlI3WTJ3ejdPSHU3MmFyRVo5MVBpQndTM2dwckljTnVmczJUUEl6Y2xCT29sN205WmxOMFc5UkdLZ1JvMGF5cWZpazBiUFpWbk01YlZzMlRLa3BGZy9ONVNrR0ZDNWRJTW50UzBsVjFKakVTVml0VmE2YkZTK2NESE5telVYSGtVcHljbll1KytBc3RTVWVoNWhHQnJTbGl5Z0hEaWF1NzNra2JYRm9tRkhZaUQra25qUlh4Y1NCenN6OTAwZWlDY21jelIydnVEUFpQMWM1dzVMSXh5NE9aTEU1MlkrUTE2cXdlaXlsRUY2Q3FFdVB2Ujdqc3B4OE8rcnhHZGZsU3QyUkIvRmpwaGp3dXVSbzlhL2YyZ09JcHg4b2FIOWNSL2NxTWh1eWw1TXljN093dDQ5KzhYNEZnOFBEOVN2ZjZzdFdpSXBLempVRWp0SmxaUjMzbm1uVkdQdmVOdEprMG9XZ2sxaUJWVFpqOHBJaFAyczNyaDc0NGQ0WXNjM2VIVDcxMFdteHlpTjJ2SUZIdDQ2RlUvdm1Zbk9DOGVRMlVWbFloV3d1a3IrdEpZaGJWcTNGQjVGZkVFSzYrd2RHTlphTkxGeHY1UHhZRTRIc29MWXN1R21PaWNXRHlYeHNtUXpNUXB3Y3RlTGtiQzQ2UFE1aWM4cVhESHovZ3ZtQ1IxNXloS1R2UHlYYWpCbWVUbGFSMDNYQUxCOXg1YVc0UmljYWIvdWpocDhkR0F1WHRuNUE4YlR3M0FqTFE0ZUhLb3FWNGZtM2pVUTRXWTVJT3psUzFjUkhSTXJQZ2NGQmNMUHIrd2pnMHNrUEhOMGFRYis4alQ4SDM3NG9mS3QrSHo4OGNjNGNNQnloVlZTUmxCNXlYSnpKdUVDWnV5YWhwbEgvOFRNNDRzby9WVkFXb1FmRC8rTzM0NHR3a09SbmZCYWcySDRzc3RFcm1XSWZWVTJWQXBYUHJYcjFCYlJ2SGxROHE1ZHU1R1FZSG1tMXZZQjlkSFlLeHpwV2VuSXpMM1YvS1lpZ1dCM2RLYzhCeUVhYlBtSVpqcDdqY2hyakM4UE51WStMVm92L2hvK2svRHNUREQxYW1ya0dRWWZ0U3V0Vi9JWjhqbzZZVTM4T1JLNld4TU9lcWhkMERlNEJleHpjbThlZytFNFBCeTBZa3hYTkpuWkRyVGVsL2JKL1Z1NU9oM2VhMUZ3a05JRml4YkQxZFZGaE1acTF5Yi9KSmtTU1ZuUnQyOWY1VlBKWUl2cG4zL3l6MFZYRkJzMmJNREVpVlFnU3NxUG5HelVjUFpEemtPcnNIL3c5MWc3WXFHSW1TcUNLM0RsbklNdm1DU3VzS3ZnNUJZTTNhT2IwQ1dvbWVqRGY2SEJVTFR5Q0NQaEtubWtsYktpU2dpWGk0c3o2dGFwaGV6c2JDRmVhOWFzVmRiazU3bEd3M0VqTXdHWlJ1N29LanNTTGlkUEVUNUtUV2F4SVRtcDFFalJXWmdnanl3eE1aQ1p4RU1rZHJJbkMyaG40bGtsZzU1YXJ2N3c1T2xPcUlKeEt5LzlCbGxRMTFPdTRVamlCU1dubmlHUkhlR2hkUkVHbXZGeGNOSTRxa1RJRkNlVlJuem40eDlSczVzSUQyV0pTNWN1NDNwc3JHZ21WS2xWYU5TNGtiSkdJaWw3WG4vOWRlVlR5ZW5mdnorKyt1b3I1VnZSZlBQTk4rald6WEl6dWFRTTBhV2paOUF0NTYvdS92V3h0ZjlVZ0NQMThBUzM1bVFtSXNBNUFKZUh6NGFEVVgvVzFmUjRYTXhnbzRKdHQ4cWxTZ2dYd3pVK2JpN2tDTnE3ZHU4cHNNMmN3emYxRFdtRldDTnJoK01SK21rOTlHT29TQWdNSWlOYzAwbWlrc3lhQzFzRU5xYjk2NkNsV2dYbjRlWkhkN0tpMHVMemp5UHA0dGVBek9NYzRXbW96NnR2QW5UVXVtUENvVGxLTGoxT0RocTgyM0lzV1hrWjRBanc0dmNOZ21lVU9MQXVSd01aV3IyenNtVit0bXpaSmtTTHArdnYyVU8rM0pMeXBVNmRPcVdlTDR6aDJaQTdkT2hRNkVCaUhxL1Zva1dMTXBtQVVtSUZEbHBzdTJFYTRLRzlkdzBzNHBuWmVjaVBzZk5ZWmhKVmxOMXc3ZTVmNEcwMnorRjk2OTVCZEFiZDF3SXEyeFZKbFJFdWpVYU5saTJhQ3k4bG50Si80VitMbFRYNTZSUFdob1NLTENFRFZBRUljL0VURWRxRndDakp5VUVOanNKK0lUbEt5YWhuWkVnN01lYkt6VjR0Z3VGeTRzOXc4c0d2NXpjcnVmUjgzUEErSUR2alpqNlI3RlVJMUhqZ3lQWFRXSHJGZFBiWUlCY2ZmTjVoSEFLZHZNWDRMUGFBZE9MK042T1VuSm1LY1dSMnUzQS9sd1V1WHJ5RUF3Y1BpaWtlZUl4TnUzWnRsVFVTU2ZuQVhyMWxZWFV4MjdadEV6TTFkKzNhRlRObXpNQnZ2LzJHMzMvL0haTW5UMGJ0MnJWRkJQalN6cm9zS1FaVTVoeU9PNDBlSzE5VEZ1Z1pVcTBsTnZTZnJvaVhEc2hJUUNPLytramhwa1Fqa21sOTBGOFBZY3UxL2ZvbXhpcEFsUkV1cGtmUEhuVDlkT0Faa2c4ZE9veWtwR1JsalNrK1pGMTVhRXd2b0lmS1JWZ3phanU5dTd3aGNmU01tRFJUUjRwMnZqWEFRWmIwNDYzMFZoUmJha0ZPbmxod2VhZVNTNCtmMWcwdGZHdERSemVXTGEyYitlbTN3dDJEOEwrRHY0dDV1NHdKY3ZiRks4MUhZa1NObnNqbXdkRmtIYVpscFNPTEhvRFl0RGgwQ0dpSW1wNEZUd2V4L0o4VlZLbHhFSjZXelpvMmdWTVpSdUNXU0FyaXdRY2ZMTlZnWkhNMmJ0eUlKNTU0QXFOR2pSTDduakJoQWs2ZE9xV3NsVlFvR25lc3U3UVZuVmE4ckN6UTA4V3ZOaGIwZkErSVBZcnE3bUhZZWRka01nQk1aYUg2NHNkd0xla3FZRFpjcURLcFVzSVZHT0NQanAwNmlmaG5YR2pQbVZmNHJNREdSSHBXZ3llSm1aWXNJbTZ5TXlRWFJ5MnVwc1dLZmlvRGRkMUMwTm03RGpSaVBKWG1aZ3BRdWVKMDRsVWNTakR0dS9xaDFlUGdDU0xaS2pQTzcrUGdqR3hkTm5xdGZSZXBYR3N4UWtQSDBUMjBKYjdzOUR5KzZ2Z0NubW8wREhmWDZJNVhXNHpHb3cwSEs3bnljK2JNV1J3OWVneGFxZ0ZyTkZvTUdDQm5oWlZVREY1ZVhzSzFYWEtiNHVKTFZ0TmVOUHpyWVdRWk5ROE9EMm1EazQ5c3d1bGhQMUhsL0ZZellIcDJKdXhtZHNXTnRCZ3EwS3FHcFdXZ1Nna1gwN043Ri9yWERzN096amg0NEJDaW82MGJPTWZUK1BNZ1huYlU0RDR2UTNKMWRFSk1handKeXkzdlFrKzFNMXI3VkNmcnpBN3VEbzV3VTVLSGd3cXF2RnlzalRxbzVOVFR6THM2N2lJcnlUNHZ4eVMvSzZWUXJidVlabVhNdHE4UW0yRjVDblNlQ0xPdVZ3VGFCVFZHVFk5UVpXbCtjblE1V0xMMGIxR0FjQjlCbjk0OVlHZlVPU3F4RHU0Zk5SNHVjYnRRRWVmMDdMUFB3czlQUHplVDVEWkU2NFVqaVJmUmFORkR5Z0k5dGR5RFlXOVUxc1NseFNQZ3p4SGdDVzZGOTJFVm84cVZpcTV1YnVqWnM3dHdpZmYxOWNHc1gzNFRBM2V0b1pxcm4zQjg0TDR0UTNKV2FhaDJrWm12dVhCa1JDZDRrd1hsU1ZhWnQ1SzhITFFJMDNyaTcvTmJrWnlkcHVUVTgxMmJjWEN4YzRDYm5ZcnlhbTl1NDBtL1VkUFpGeW5weWJobjNRZjVSSzg0ckYyL0hsRlJNY2pKeVVWWVdDamF0emVOYWwrVktLb1FMYzJBMU5MQzBmTzU0bE1lVktZZ3NyTU9wNUppN2JFdlhHamF4MkVyM0k2VmxUS0Z5MUVPWVVlVitaTUpsMUZ6M2oyNHdFMkFaaHhQdUFTZm43cnFvOFN6UklnK01QYmlyanJYdDBwVzU5bUxMakRRWDB6amNmMzZkU3hkdWt4WlV6anRBaHZ6MDB1Q2RjdEJRMnV2Z3EvR0E3dWlUZWZGcXVjWmhub2V3ZENTZGNmaGwvU0pSTWxSSy81K2Y5VHNOKzJBejFxT2hVTnVEbHhKd0c1dHc0NGRLZ1NRS1IycTljQkgrMy9IS3p0bTRKK0xPNUhLTXlwYnlUV3lMSmN2LzFjTURlQVFVY09IRFZYV1ZFMktLa0FyY3laYmRqUW9yNmxmMkdHbXN1QlpGTmdhTHluV3psYmNxVk1uZlBIRkY4bzMyNkUwTVJldHdjZW5iUHQ0S2xSb1dYd3kwOURFSXdLTnFleHJGTkFRT1ZRQmYyRFRSOGd3S3FmMnhaM0RrRFd2b1U1b1d6VHlxWVZHSHVGbzRobUJ1cTVCUUZxY1h2eXFBRlcySFdyUXdBSEl6dGFKYVJmV3JsMXZWWk5oTUZsY0xtUmhxUnhWWXR5VUlibW90VWpPVERHWmQ0WVpWMjhnZExvc3VKRll1VHBxUkhJaEs2cWFzdzhPM2ppRkkvR21mVjJ0L2VyaTBicjlrSk9ybzN3cXluOXJPMWZhemwzbGhMcHV3YmllSG84NXA5ZmlmenUveGRnTkg0c3dUMFh4Kys5enFiQjNSWG82UFZ5Tkc2TjY5YW9kVUxjbzErblNORGVWMWxyanNZQ2NTa3Bob2hzU1VyQlRUVkdVaFJWYW1zS3VPSlVKZHFSZ3IwQmJvcWpLVkduQ1dqRmNJU3BMdUdKZUdxeCtucWk4OGlVcjYrendYN0NsMzVmWTNQY0xiT243T1E0TitRSHplcndEUjRkYmxiRWFydjdZT1BBYjdPbzNoZkpRdnJ1K0VQbjNENXlPVDlzL0QyU2xDZU9nc3FteXdsV3ZYbDJ5dkxvak1aR2JESDB4K2F1djlXR2hpcUJsWUVPNlVXeDFhY25pdXBYYzFLN1lGMjA2bHFHZVZ3UjZCRGNYWVpvNFpxQnhDdFM0NDdkai81QzViTnBrT0NDOEhaNm9OMERFaU9mSUdPYmJjWGluUUswN2dpZzUwUDE5dHNIZElxcEdZZnp4eDF3aHpEeTlpNHBxOVBmZmY1K3lwbnpoYUNVbHhkdmJXL2xrbWNqSVNPVlQ4ZUhLU21uZ3NZQ2w4WTVqeTZZZ1FrTUw3cU1zaXJMdzJDdU5KVnRjSzNUOSt2WG8wNmVQOHEzcVU5UXpWeG9ydkR3cytGcTFhcFdxZ21YMVBHclphYmduckF1cXV3ZUpTalpYc0RseGhUM0V5UnVPVkk0WjRMSXFnTW8rZHhXVlpZWjg5Sm1kM2w2dU54UnR2T2theThnWmhkTzdkdzk0ZUhpS0NSVHQ3ZTB3ODZkWnlwcUNhZVJYRzJIdWdhSTJ3azJHaHVSR05ZNkV6Q1NrWnB1R2dPb2YwVDdmT0N0T0htS2l5bHpNT3BZLzhuV1hhczN4UklQQjNIb293dnliYit0QUs5Z05mbExMaDlIVXI2Witvd0xZdW5VNzl1N2JML3BrTXRJek1IcjBnOHFhOHFkQmc1SlBFbGRVczB5clZpV0xaTStpd1dOOVNrdEptOVM0SUNtc1pzMERkVXRLYWFLd0d5aE5aYU1rRTBZdVg3NGNMVnRhbm5LbnFsSFVQUzlOTXlzUG1DNXJ1RUplVWl1UUs3a2NZOUlxN0ZYNEw2WDBrM1FtWjJjZ1ZsVGtaZVNNSW5udTJYRlFhOVNpUURsejVyeHcxaWdNRGxIU0thUWw2dnRHaXBrK3RRNGFPSk5vdWFpY29iWlQ0WlJaODErWVd3RDZoM1VRYmJmdWxNZk5VWjljS1FVNmU0c2d2Zk5PcmxKeTM2S2hUMDE4MG1FOElsMkRSRCthaHZiTjRzaWhwS3E3VmNPSDdjYkJsOE5GRmNMeEV5ZXhZT0Zmb2hhZG5KeUNvVU1IVTZGZFMxbGIvdlRyVi9Ea2xZVVJIaDVlcERDMWExY3l4eEsybGtvekk2K0Jrb1lTR2pwMHFDZ1VDb0lIejViaytGZ011M2N2L2FSODk5eHpqL0twZU5TdFc3ZEVEaXZjL0xaNzkyN2NmZmZkeXBMeW8yYk5tc0tyc1NSMDdOaFJiRjhZWEhFb2FlV2hwTzlLVVpSVVRIbTdvbG85YmtKVzArYW9BeGk5K1RNY3VuWVV1Nk1PRlN2dG9iVHI2Z0YwV1RFQlp6bVlnNHljVVRUY3ZQTHdtRkdJaTR1am0rV0JBd2NPWXZXYWRjcmFncW5uVXdNdEF1cEQ3YWdTdFJydTYzTFR1SWorcHpReE9lUXRPbFJyZ2pvZVlTSmtsTUU4MXB2U1RpSUNSbXhxSEphZDJhamtOdVhoaG9OeGI2MWVKR1NSSXN4VHg2REdHRnQvRUZsZWhiZUhjOVBnYjcvOUlhWXJTVXhNUXJPbWpkRytmY1ZHeU9qY3VlQ1FVNFhCb2xWVUh4YlhKbm5nYVhFWlBYcTA4cWwwakJzM1R2bFVQQVlOR3FSOHNnd1gvbzgrK3FqeXpYcWFOR2xTcUNCYVMvdjI3VXZVWERobVRNSEJuSzNoenovL0xGWWN3dUxDejlQS2xTc3haY29VOU83ZFcxbHFQVHpBdWJBbVhvYXQxYVpObXlyZnJJZnZXMG5mbGFKNDhjVVhsVS9GNDZPUFBsSStXWUw3b015ZU5iVUxmajM5TDVvc0dZdldTeDh2Vm1wRnFjMnlwN0EvNFJ5Z3pmL3M2U3JCZzlndXowWjhTTGR1MjQ3NWZ5NkVOOVUwdU45citQQ2g2R0NGdTdndVY0ZXo4WmVSbEowQ0J4RXZJMDlFaytjbVJlTjdtMFptOE1vTFc1R1Zrd1Y3RWpCejBrbnMvSjE5MERPc2JZR0JjVE4wbWRBV0lWZ005OVc5Tm5FUzNGemR4RUJyZG4xLzZzbkg2QVdwK0hyRXlKRWppejN6ckxXUERIdUVObXJVQ05ldVhWT1dGQTRYRUVsSlNhWHU0ekxBUVZ5TEV3K1BDeWVPOW1BTjNNeDY5S2hwbjJsaGNIeSswamgyR01QSDJMVVlqaFBjOUxwL3Y3NDV1clJzM3J4WlZDN09ueit2TENrOUxPci8vdnZ2VFljZmRscmdQaVVPdW0wTmJNbXVYVnR3WUc1akVoSVNpbTNsc0pVN2Y3NzF3UkNLQTArZXljZWowMWsvUXpFL2U0Y09IU3F3bVRIZ2o2R0l5YzBoYzltU0IyeHBLazhXM3Z2VVdFeHM4UmplYjFZMkZVNXJxZklXbHdFV3FiNTllaUV4S1ZsWVliTm4vNFk5ZTRxT2Q4WWRqN1Y5SWxEYkt3SnVhbWNTRmpVYzZJWmZOWnNSMUZtbFJaL3c5bkIyME1LRm5UbVVKa05EQ3RENklDczdDNnZPYlVOMHluVmxLMU9zRVMxMmUzLzMzUS9nN3VZaFhrd2ZieDg4OXVqRGxTSmFETWVRYTl2V2VrdXZPTFBkc3RXMVk4Y09xOXlVV2JRT0hqeFlacUxGc05YRjNuSFd3S0ppcldneFI0NGNzZG9CaGFmN0tDdlJZcnAwNllMcDA2Y3Izd3FIQldETm1qVmxOcTZOWGVYUG5UdUhOOTk4czlSOWRsendzcVhFYzNFWmU2bHk4K1RwMDZldGVtN3V1KzgrcTBXTDRiSmo4ZUtDNDZDYXd5SlJYcUxGOFBQTzg1bFpDejl6UEZ0MFlYMWp3MnZlUlRWeExxTXNpUlNMVDBtVEdWeUJ6ZEZoV0ZoN1pVSEZZVFBDeGR6VnR3ODZ0R3VEbUpoWVVSRDhNV2NlMXEzZm9Ld3RISGVOSzZwN2hpRFl4UjhhZXczU3NqS1JhalpYbDdQS0NSMnFOWU1ML1hYVk9OTTJ0NUtieGdtK3pwNGtmazQ0R244R2gySk9JSnVzdWVLUVRLSTdaZW8zU2h6Q2JQSDNpU2NmaFVwVmVCTkhlYk45KzNZUlU2NG8vdnZ2UHd3WU1FRDVaaDNjSDhieDZlNjk5MTVsU1g0YU5teUlpeGN2Q3V1c3JPSHhTTjkvLzczeXpUSkRoZ3pCaVJNbmxHL1djL3o0Y1JFTnZTQzRKczNuempNTWx6VXN5aXRXckZDK1dZYWJ4ZGdxTEkwblpFRndhS2hkdTNaaDllclZKZG8vTjdlZVBYc1d2Lzc2cTdMRUZPNUxQSFBtak9oenRBVDNlZlB2ejUwN1YxbGlQWU1IRDdicWZyTmx5Yzk4ZWRPNGNXTnhyc0hCd2NvU3kvVHMyVk9JWEVSRTRVTmxQbXMrQnM1T1pGV214cEN3a05WYUhrbVhCU1JkeGowTmhxTzVUK0Y5aStXQnpUUVZHclBrNzJYWXRIR3pxRDFkallwQ2w0NmRNT0wrNG5WYXAyU21pYjR1TDYwYlZBNm1McW5adWRrNEUzOEpPakszamVlanljdmpVRUlRL1dVQnJuNGtZb1c3dVJ0ejZOQi9tUG56TEhqUk1XZGtacEtsNVlXbm4zNktIckR5R1NoYkV0Z0M1QUtSYTlUY0hNc09CVndqNUw0cWJsSXNMZnlvdmZmZWV5SjZPTmNZdVRiNzl0dHZDNGVNaXVDTk45N0FwazJiUkZNdG54ZFhmcmhQcGFRZDVNWjgvdm5ud24yY3ZWbFpyTjk2NjYweWNUS3hocSsvL2hyejVzMFR6YzVzWVhGZkRsdEVwZkVhTFFsTGxpd1JZc3FGTUZ2US9BenhYNE1WemM0VC9IeHhRVjFjZHU3Y2ljdVhMNHQrTEs0ODhYN0xnci8rK2dzelo4NFUwd2VscDZlTC9rTVdZbjR1eW1MNFFuSGhpZzYzRXZEeHBLYW1pdVBoNTVRdDdPTDJiVDY1KzNzY3Zyb1hHV1I1Y2VkR1dSWDBmT1VkNkYwZTEvUUJqSXFvbkxGK05pbGN6TDhyVjVISnZ4VFZxbFVUL1NKY0MzbDZYTkZXZ3pGY3lPanljb1J3bWI4R0hBMmV3MFN4aVBGTGtzc3pHNU8xeGMyTkhIdXdPS3hhdFJacjFxNFZ6VFg4TUxxN3UrUEZGNSt2VXFJbGtVaHVUM0tvaE9jaE9tVUJpMFVaN2FwVTJLeHdNVnUyYk1laXhVdW9SdWNpT2pmWlluanB4UW53OS9kVmNwUWVucW5ZanY1VDI1TlZWc3c3eGpYZ3VmUCtGRk8wY0swekpTVVZkZXJVd3NOalJzTlJWWG1oZ3lRU2ljU1dzV25oWW5nYWtCay96QlFkdWh4SGpzMzlybDA2bzMvL3lwME9oS2ZlLzJYMjcwaE1UQkJOWWZFSkNlalN1Uk9HRFMxNFNoT0pSQ0tSRkkzTkN4Y1RFeHVMSDMvOEdXbHA2U1JlRHZRM0RhRmhvUmcxOGdGNGVub291U3FPZjFldXhzYU5tL1RqeHpRYUlhYURCZzFBdTdadGxCd1NpVVFpS1NtM2hYQXhTWWxKK1BLcnFhSS9paE4zd0tlU2dIR1U5UTRkMmdrWCtQTG0zUGtMbUROblBtSmlva1dIUHg5SGNrb0s3dXJUQzkyN2x5eVNnMFFpa1VoTXNTbDMrTUxJTmhyQXh6TW9NenhZbVNkbS9PS0x5YUpKc1R6NTZlZForTzY3SDhqYTB6dGZjSCtXOEh5aWVrRU85NDVLSkJLSnBFeTRiWVNMRFVlMkhWbTBHalNvaDJiTm1na1BQaWV0bHY2bVlUSlpZMU9tVHNkNXNvcktpcFRVRkN6N1p3V2VIdjhDVHA4K0I2MlRWbGg2UFBEMjNudUhpVkJPUXJ6S3pCRlZJcEZJSkxlTmNMRThzRWF3aTN0bVpoYnV1WHNvbm56aWNYaDR1SXRwOEZsTU9QVFF0Sysvd2ErLy9ZRkxseS9yTnl3aHkwbXdwcElRcmx1N1huZ3g2blRaSWxBdTkyVTkrOHc0VkE4UFIyYVc2ZnhmRW9sRUlpazl0NDF3R1dBTHh6REJXbVJrQkY1K2FRTEdQalNHbHVXSjVjN09MamgrL0FTbVRQa2FYMDJaaGl0WHJvQ255cmVHaE1RRUxGbnlOLzczdjlleFpjczJNZDBLTzE5d3N5QUh5ZjM0dy9mUXVWTkhrWmNIR1JmVGUxNGlrVWdrVm5EYk9HZmN1SDREMDZaL0s1b0thOWFzZ1VmR1BxU3N1Y1dLRlN1eDc4QkJYSStORlZNQ2NONkVoRVFSLzZ0OXU5YW8zNkErM0MyTVR1ZHhXQ3gyVzdmdmdGcWxFbU95TXJPeWtKYWFpclp0V3FOejU0NzV3clh3S1A5UFAvdFNUSmZlcTJjUDlPclZRMWxUZFZoOGFRZU9KbDFHSGtsc2o0QkdhT3ViZng2c1ZGMEdmamk5R3RsNU9iQXZLSjRpUFVIcy9CTHU3SWZlUVUzaFVrVE1SbjdnNWwvWWpIT3BzU0xnY1ZGd0JZRG5VZXNiM0FLdHpNTExaT1prNDdkekczQTFJd0YzQlRkSFMrK2k0K2R0aXoyT0RURkhrSjJiaFRIVnV5UENWVC9IVlVKV0ttYlR2akp6c3dzK1Z3dmswaXZFRVZhZXE5My9waFBRL3JpeldIWjFuNGhZMEpxT3FXZHdNN0djK2Zuc1drUm5KRUpONTI3MXkwY1pPVUQwb0pEV21ITjJIWncxOUp6bTVZb1p1eCt2MVFlT2hSenZxcWdEMkJOM1dzVHR6S0w3T2I3T1FIZ1dJK3FMZ2RpTVpNeTl1QmtaZE0zdFJSTzRaYmhJQ1hMeXhzaUlUc3FTL0J4THZJdy9MMnlCcTlyWnFtdVFRNVZPbnJIaG9jaHVZbEpEYzQ0bFhzSHFhd2VRbGF0VG11Y3RrMFBYTEZEcmlYdkRPdEIrTEUvaXVEZnVERmJTTmVNcjNzQWpGSU5EQ3ZZRzV1T2FjMkVUcnFUSDAzWEp3alAwREhocjhzZmJQSlVjaGIvb2ZYUGtBTjVGMUdoRnR3ZjkxeU9nTVpyenhJMFd5TTdSNGIzRGMrR3A5UkI1aTRKL01pRTdEUy9XR2FUTU5YaUxwT3hVZkhGME1UdzA3Z1h1aTQrSjMrdnE5SzcwRGJyMUxGY1dkNVJ3TWJ4K3k5WnRJcHFGaXd1OU5IVDZIRGVRbS9vNFhFNW9TQWdHRHg0SVgxOGZMRisrUW9ScVNrNUpGaGFiUnFNVzQ4VTRmM0J3RUlZTkhWVGdGUGEySUZ5OTFrN0VtdE1jb05RT0U5czhqZmViNXAvRThuTGFEWVF1ZUlEZWxDeXl6K21sNDlsUExUMHg5dlJxT0dyaDc2QkZaeEtRUDd1K29heklUdzVkOC9Zcm5zZXVLM3RvRzNxSjhuU1VDck42YWQ5cHNYaXp5MFM4MDVpT3hZaTR6QlEwV1BvNHJpVmNGRk0zL04zOUhRd0lMVHhvOElUOVAyUHk3aC9vWVVqQzhpRXowUzlVWHpBZFQ3cUNlb3ZHMHJtbTBVK2FDZXBOZ2FXVDU4amJ4cERRZ1Y3cTVGSC9pQmxtbWNuSEZtUEN4Zy9va3ozR05yd0hNenUrSkpZemdRdEhJL3JHU1ZKN3M4Z3BZdFlCcFZRVDE5bjRRdE5uS2hpWEQvZ2F5eTV0eDdjN3Z3SGNxTEtrUzhORDlZZmg1dzZXcDhjNGxYd050ZjhZQm5DMGwvUUVQRXYzZVVyTFI1UzExbk1nNFFLR3Jmd2Z6dEY5MEo5L0ljVUdpeWlseGdFTmNiRGZGR1doS1QrZldZT3gvN3hBNXhDa1A5ZEM0MzdTTmFGejExS2hlWDdZTEFSUVlXM003dXNuMEhySjQzUTlTZEI0UDRVY211aFBvT3NjNE9LUFUwTm5nbWNCTnVmOS94WmcwdmJKWWwrOWF2YkdxaDd2S1d2eWs2YkxRdHZsVCtNd1ZZWkF6K0ovRHl4RkE2LzhzUnYvb0lyYXlOV3YwekVxbFRwK1pncEN6RTVoQjBjUzF1ODd2NEt4VkxreWgrY0pkUCs2Q1NCbUpLWjNSMXkvUWsrY05vckNxYkhyVWRQZHRKSjlMdmtLSW1kMkJUeXJLL3N5ZTc0RnRHKzZidmFPVGdpaUNzUm9Fc0FQbXhWLzJxS3l3dnBxWlRuQWtkSVBIRGlFM1h2M1lzL2VmV1FKV1k2NlhwWncwMTZEK3ZWRmxBMFdMUllqT3p1cVp5ajMvTno1ODNqbjNmZngxTGhuc0duekZxV2Z5azVFd2VCWVlkemNtRU8xbmNEQWdBSkZxeXpoaUNCSGpoN0ZuajE3c1hmdmZwdzZmVVpaVTNwY3VPRFV1dE5GY1lYRzBYS2dYN1lrdENxcW5YTU5uL0tGZVlRaDNET1UvdDVLRVo1aGNLVWFOaktTRUVOV3pJSXo2MkQzYzArY1RZcFM5bUlLbHgwOFVTZlV0RStWTTZwN1JxQ1pYejAwOXExak9mblZRWVJmQTFUajN6Q0RvK3E3cTZpRzYwU0ZHYjFVQTVjOGdVLy9tNmVzdFl5VFBaMHIvemFkazNHY1NyWkk2dEw1VktOek5KeGJPSjBiSjFIdzgxeEVKSTc2WmNyNTA5OXE5SjJ2aTcxQmRBZ05GMUQ4RzdTTnVRVmFtd3JyUUk5d3NhMWhIOVU5dzBuMzlmY0NhaWNFdTFjVDE5VndIS0cwZnovNnl6WDJiMGg4WG03M3ZDak00UnFJV1FmL3dMdVV6RGtVZnc0Ti94cEROOXBIRkd5dmRYeXhSS0xGTEwrMEUrZFM2SDZxWFZIWHB4YWFGbkMvV3ZqWFI2aTRYczQ0ZEdVZmR0dzRwZXpCRkExSG9sR3VwNnVUajlqTzB2NzBxVGJxMHpQUTFxdUdSY3Z5eVQwejlLSkZ2eGxBMTQydnBlRzZHYWRJV3U3RTE0SXNqbWl5UUxkRUgxSDJZQXJQbU03SHhjK0hLMVhFQ29PdE8xZkQrMEhubzNhd1hLUnF1Q0lrbmprWHF1TjRvRTFBSXd2bldRY3QvUnRRQmRwVDVOTXBNN0JuSzEwZnhnaUxWMHZQQ3YydUkvMXVJN28rVGZ6cVd0eW5TTFEraUNvU1RoYW1PaEh4V05YNlowOUYrd3IzTW5vMmxSUkIxNDZ2VzI1R0lxN1FjL2ZSem1rSVd2QWdXV3VtY3h0V0ZKVm1jZjJ6WWlXMmI5K0o1T1FrWWNYd0hEdzhxV0tuVGgzUXMwZnhaNHExMXVKaUxsKytJcndNMVNSaWJWcTFSTnQyYmJCcDAyYlJiOFdEaHRtZG5mL3lnT2I0K0RnMGFkSVlIVHQyRUdPenB0TnZPTkROYjlHaUdlNGViamx5TlZNV0ZsZHNUQ3grbXZVclltTmpoR0RxaFZhTDRHcUJlSGE4OWZOTUZjU1FEZTlqeVlWTlZKbkt3N3N0SDhPa2h2a2p1RWVseHlOeThTTmlyakYzS3JUKzZmRXVhbEROTjl1b1ZzWUY5bzJzWkNSbkpLRGppZ25DK2dDdGozUVB4WkhCMzBGNzAxclJRMmVDWHF0ZXg3cW8vVndud0dMYVo3K2dsa2pQS2RpWlJVYzFRYlptdUhuTm1JU3NOTFQ1NTNtY3BGcWpLTHlZdERqMGoreU9aZDNmMG44M1krTEIzL0hoL3RsQVZoSldEWmlPWG1RaE10eU14RTArakVHQytOdzBWSkQ1L1RaUWlLTW5mVDg2ZEJaeUtTK2ZCMk5vWGdsenZoVnE3SnVUSy9EMGxzOW9CL1o0cHU1Z1RHMzdqTElHdUVxL3dVMWF4Z0djM2FnUzBYbk5xemhNWW9QVTY5ZzZiQ1pxdUZVVCtRem9tN2s4YmphVjNiZnhmY3cvdmd5Z3docnBjWmpUN1cyTXFONUZyR1BjL2hpS0ZMcHZ5RXpBbUlZak1LdGR5V1lYWnQ3Yyt4UGVPekNiTk5VTHEzcDlnTFkrdFVVenJURjhGZHlvTnY3MXNVVjQ3bTk2UHVrNVdUMXNObm9HNW8vNi84ZTVqUmk1NWpVcWZEM1JNNlExVnRPeEoyV2J6dFpnREY5akRyM21UcFdUbXpkSG9kYmZUK0UwV1lUUXBlUFBuaCtqSzRsZ09vdTZHVjRrUmlPMmZvbmxGN1pRSlNzQk0zdThqYkUxOGs5YStjV3hKWGhwMTNUNjBWd01qZWlHdjdwT1ZOYmtoNXROdTY5OEdkdlpnczVLd2NsNzVxQVczdzh6Rmw3Y2pyczNrT1ZHeHg3cEhvWXo5RjZZbnk5ZlAxZXlBQmRjM0lJUjY5Nmg5MGlOMXQ0MXNiN3ZaM0EyV0dvS3FkbHBjUDJoUFZsSkVZZ2tJVnhEZVFMb1duSmc4SUxnNW41dnVnWjhIWTI1U0JXUzhOa0Q2RGtLUWh1cUhNenROZ2txZXZJTnp6ZkRRc210TDZmb09vOWErWXI0WFdURVlVeXRmcGpWaWI1WE1KVmljZjI1NEMrc1diT1dCTUJlTk04NXFsVDAxeGwyOW5aWXRHZ3BsaXlsbDdHWThDVXVyZ1Rua1Jpd2FBWUdCT0RlZSs3RzFDbGY0cUV4bytEcjZ3MjFXb1hPblR0Z3hveHZNZjdwcDlDVXhJdUQ0cklqQjFkMmlrTko2Z1pSMTY3aC9ROC9RVXBLc3JoR1BJMERKN1lRcjBWRlkrS2t0NFhZVnloY2NGSnRrUHNJUXAxOWJxWnF6dDVvVERXeURvRk5jR25FZkNxOHlKcWlGL0JzOUNFc294ZTJVT2phZUd2Y29lSUtBeFY2QlNWKzRjeEZ5NVE4dUhPQnpnVzFzeGVXbjF1UGFvdkdpbGlUMXNKQ0VrYm53OG40M0h5NU5tMG9FT2laQ2FKcndNc05lVml3akVXcktJS3A4STl3OGJ1NVBTZFBqVFBFMmZHalFvV2hMMTFqYmhJenpzUGJHUGZ2ek92eUJ2clY3RVdpUldKTCtlOWYrU0kyeHg0VDY3ei9ISWtVYnZMTVRNUXp6Y2VXU3JRWThjZ3J6NzBQVldBMGRDL003NUVISlM1UVJrVDBRTlN6UjVFM2JyOUYwYm9GN1pEdXY0Z0RTcGp2enpoNTBEUEZmODNLWElIKzlhSVY5Rzd5c2ZIOU1yNXVoc1Npa00zUGc5SVU3RmdweFIrMzd1Z3RxUHpuNkVUUG9CMWFrNFhFMCszeis2YnZTN1J3MGtZNDBucC91di9POUd5WTc5TTQ4YlV4RnkwVDZFTHk3NFU0ZVpzODM1eTR0YU1OV2RvUDF1aUp2ZmZPcFdmdUJsbG9udmpseE45azJaZmRwS0xXVXVGM0xqYm1PbmJzM0Ntc0dnN04xS3BsQzl4ejkzQzBhdFVDU1luSkNBand4NFlORzVHU21xcHNZUjN1N201Q0NJc3JFdWI1bXpadGdtZWZHWS9YWC9zZkJ2VHZaM0tiaGJkaTRjOVFQbmp2M0pkV1hKYjl2VnhzeDAyYVBMM0M4R0ZEaElYSHg4dGlxNlBseTVmL3ErU3VHTGpXVzFpTmpnbHg4c0Y5RVZUcjEyVlFZZXFCNzgrdVVkWVVnTDBEVmwvZGo2Vlg5dUJQRWpsRG1uVnVBMjVrSmltWnJJQUsrL1pVTzUzZmRSS1FlSmwrMngxWEV5OGhiTUVvSE9iYWVCbFNYdFVGUS9uTE5hT2lyck9CSmQzZlJhZmdsbnJ4SWd1dDI2clgwR25GaTRqbmlRU3BnTzVSdlJ1bXRuaFV5VjF5UkZHYlo0ZGNPcjVmem03QWRMSW9wNXhZbGk5OVJlblBTMXV4NTRZMVRkcDB4bllPdUVJMStWWFhEcHJjLzkvT2I4Slc3amNxSmpuY1gxWUlUOWJzalovSkV0OHg3Q2ZjeTg5cEpjQ2lYeGhhRm5LdWdORnp3STQvaFpkb2Rrak95NlpydGswNGZ4aGZ3NWxuclo5Z1UwQy9aODA3M3NpN0Jqb0d0NkNIZ2l4dXl2dGZmUGtHZDdCRWhUY1ZybHExQml0WHJSWjlUZTNidGNXQUFmMlVOY0JTc3JSNGluNXVYdU41ZDlqU3NPYncrRjNuWER5SERZL2hxbGt6MHFxbVFyWmcrQmg0N0pVMVJFZkg0TlBQdjRTR2pxMTU4OEtiQ3E5Y3ZveFBQdnRTZUMveXVYS3k5bHk0R1lySGhMRlFlbmw1NHZISEg0V3JNbWZWeFV1WDhjTVBNMit1ZTNyY2srSTZsWVRpTmhXeUpiVzcveFRVY1N0OHdydTNEczNGdS90K0loUEdFV0VlSWJnd2FJYXlSbzlKVTZGYVN3VXNpWnhKc3hOZGhkVHJXSFBQNytnUlVQaWNVamViQ2hQT280bFBEUndZK0MzV1hEdUV2cXRlSllIaDYyMFBCeExSUmIwL3djQVFLdUNKMXcvK2hvLzIvNXF2cWJBdzdIN29SRFVRYjNqbTV1SDZnMHVGdDJCaEZOWlVXQkRObGorTEE5eFVtSHdOUng3NEMvVTlySitnMFgvQlNNU214bEwxbTU0RmJsNmtjeDVNb3JXNEVDZVo0dkQ1c2NWNGVldVh3cG9WOTBxeEdpekNsNTJPSVlBc3kyc2ovdFF2TStObVU2RnJJQjByN1UvSHpXYUc5NFB1ZjFZeVdaTjlzTHpIdThxeWdxbTU5Q21jU2J3b211cFc5NTlHVmw3eDUvc3lwbHliQ2ttMFhGUXVlRGl5RzVMb25QbDlOOEJuei8yaEs2N3N4Zm5rcTdRZ0QrM0orbHJiOTFPOW1CbHhzNm5RcXdaZGE3cCsvQTZaaURidG1mYVJSNVp2VVJnM0ZiWWxVVnJmNS9NQ1BTNE5QTHJwWTh3OHY1N3VXeGJHTjd3UDAxby9xYXlwR0NyYzRycDA1WW9RSlhZM2J0MjZsYkpVVDlldW5VVGtDYllvMk5KSVNFZ1FrOUVWbFJLVXY3d2R3OXRXTnRuWk91RXF5eEhyOVc3MzFwOUxVbEt5Y2cxMHFGZW43azNSWXNKQ1ExQTlJbHlJSUk4ZjQzMVhOYmpaVDdTbjBqRnlNMGFoVUI1M2pRZjhxQUR6Y2ZGWGtoOGMzQUx6OVkwVkJkZE8yZVdYQzY1anczNUdPSGR5NTJRZ1IrT0NRU3NuWU1KZUVsUENpZnZnaWpnc1crUHFzRjlSejd1V1VuamxvcVYvd3pJVExXWkVSR2QwRDZIM05ZT3NZTEtRdUIreHdKU2RJaXplYUJMU2IwK3RWUFpRQUhUUEhLaVFES0Q3ZmV2KyswUGpHZ0FmZWk1dU8raTlUcVhyOC9XK21aaDlhQTUrK1c4K2ZqbitONldsbUUzcDJ3Ty80M3pjYWIwWXBjYWdKUW1YdVdpWnd3NUt2dlRPR0Y4L2ZvZEExN1M4dUZVRjUrYkZpbTl5cmZCZjFHcWNoTFdRUXlibTFhdW1YbWM4SmI4OUZWYjZRamtGOGZIeHhVb3hNVEhDVTdGZS9YcktIaXVQaU9vUnlNck1GdWZJa1Rzc0hXOUJpVU5Gc1RjaE80amNpS09Dd0FqMmJ1UTg3TTNrNktpNktkWlZpZlAwd2dtb3h1cGZWT0ZEbHR4M2JjZmp5S0J2c1k5cXkvc0c2Tk9KNGIrZ2xSVmpzZ3FpRmhWOE84ajZhdXBEaFhsR0lxbVZOeWJ2bllsM3lScmtEbS9qVis5MndKR2VsVDdjWk1qV0VGbWhvcm0yRE9GK2o3Vjl2OERCWWJPd1kraFAyQ25Tei9uU3Z1R3pNYi9uaDBCbU1oWFNLcHdoNjdGUWNqTFJNYUFoVGcvNTBlaitUOFV4K3Y1Rnk5STNjWm96aWNTQzB3VzJUaXNEcnN3NmFOQTFzaWZhVmUrTUduNE42QnBrVWNGSWxTeXl4TnFFdFVPdmlFNW9IOUFNbjNaNkJSKzFHS3RzV0FCVVVhbXU5Y0NhWGgvaDBNRHBOOThmVGlmdnp1OXBXaGJ3bTNPYTMzSDJsTXpSb1NZUGFhaGdLbHk0V3JkdWp2VDBETkZNOS9leTVUaHk1S2hvNG91S2lzSjMzLzhBVDA5M0VXUHc0WWZIWU5yVXlaajh4V2VZL0tWMTZZdlBQOEhQTTc5SEZ5VjZSV1h6dzR6cG1EcmxpMktkdzFlVFA4ZEhINzBuUWxYeEZDMTc5KzhUVGF1SlNVbUlpNHZISDNQbUlTYjJ1aEQzOFBEUVlrL25YVHFLTHV3M1JSL0Y3NmRYNlp1c01wUHdmSjBpbW1GejgrQkxMNTZmeGgxaExub25CMDdzdWFpMjRMcGJITmlKWlArZzcvQmcvV0ZrQ1pDVjRPcUh0L2JPd0FOYnY0UWR1ekRmWm1TSnNVRjBqNmhTazg1OUpHWElwZFRyV0JkOUdIWlVVTGJ4YjREV0pEYXRBL2l2YVdybVZ4ZDEySFZhT01YWUM4TzdZUFJXT2ZmNXNPT0U4ZjJ2VGxhREh6MFh4WUpPdmFnbmRQK05NM2gvKzJSRVRHK0dUNDVZYnNZMGdZNnZNSGh0RVZsTXljMUNiWmNBck8vMUFiYjEvcFFFZXdiR043eWJyQ3NTVXJwWU82T1A0T2MyejJCcjMwL3djc043aGNORmtlVHFIWDZDcVhKaHVINmNhcFhBNHVKeXBhalQrZWJFQ213U1l6RDF4M1pYSlF4SXJuRGhpcXhlSFJIaFlhSTVqOVBzWC8vQXQ5Ly9pSyttZmcxWFZ6Y3hkeFhQb2RWQXNacDRwbUJ1YnJNbWNSTmtWVU1jV3pIT2dTMG85bDVzMmFLRmFETDA5UERFbWpYcjhNMDMzNGs0aThlT0hZZXpzek5TVTlMUXFZSUZtdDNDZzUxOWxHK21KRk5CT2ZuRWNneGYveVl5dUhNM054UHVya0hvRmRSQ3lXRUpla1hvWmZVcjV5YWhYOXM5aHhlYVBRU2tSSXZ4S25HWmljaXJoT2FOQ3FVTW0wSVRzbEpRYjlrNDlGanlPTjRxWW93Y2Mrc1p5VVcya1R0L1FiaFlHQVJjSEc0NkU5aFJaWTRFcnpCOGVieWZrNjhZdU92RFk1Y3NvTzhiWmZMZ3g4M05oY0JqdnJ4VXQvcVllWEI5VWFTWkRUNmUxdlpaVEd4T3oyZkNlZEdVR0RMM0hueDFaS0d5dG1pY0hWWDBEcFZCQlphT25TT3FpSEZzRnJpUWRoMFQ5LzJDOGR1NHI1UEhiU2FqWjJoYjFQUUlVWEpVSEpVeWppczlJeE5UcGs0VEE0NVZLaDRBTElvdzZMSjFZcXpVaXhPZUUyN2Y1VVZGT0dlVUJRc1dMc0xPbmJ1RW9BazNWdnFmWGVDNUdmR2hNYVBScUZIaGpndEZNWFREKzFoY2hIUEd0ZlI0VkYveUtESnlsQUlvUFlIS0k3UENpRzhnVzBmY0ZzK0ZFTlcydWR4YzN1dGozR1VVNnNpQWNNNVkvVHJXWGQwdkJvM3lPQ05rRjJJaDhNNHlVOUE4c2h2Mjl2dEt2MHpCMkRtanNVOGtOdmI5RXA2OFR3dXNqanFJM3Y4OFErTGxTc2RKZVpLdll2V0FyOUd6V000WndQVUhsMWpwblBFNVhSTjJ6aGhVN3M0WnpQamRNekQ5S0JWNE9abDBQNS9BcE1iM0sydEtSMnAyQmx6bkRxZUxRR0xQSXNIOVhEY0xkd3VvTkdDUFVtNHUvS1QxZUx4U2Y0aXk0aFo2NTR6WDljNFpQSjZwcUgzeTd6cHFjR3JFUE5Ua2JZeG90ZXBsN0lrNkxBYkk4dmlzQXA4bGZrNTUwTE55NytmMC9rVDAzWmt6OWVRL2VHNGJQV2M4R0p5OVk5TVRsVFVXNEd2Q1lzaVdVVW9NVHR3M0Q3VUxkTTU0bi9MbkljSXRCT2ZJMGpKbkdvblZzOXZwZDFuNFUyTFJLN0k3VnZXMEhMVkQ3NXpSZ1FTNGhuamZ4SGtYTmp5R3p6MGxDa2NmV290NlhoSEtRajNDT2VOWEtnTzlxdE8xby9PbGloMDNhWm9nK3EzcEhXZFJFOWM1Q1NGYUwrd2ZQa3MvWEtTQ3FaUnFwNU5XZzFkZmVRbDkrL1JHN1RxMUVCd1VoRm8xYW1CQS83dnd2LzlOS0ZmUnNpVllHTWVPZlFqTm1qVkZjTFVnVkt0V0RSMDZ0TWZMTDcxUWF0RmkwdmlsNUFLRFJFR01iN0dBamtRdGc5YUxmRHoraFpzSCtNRTFUb1lhSjY5UGloSUY3dW8rbjFzVUxZYXJTdW1jTnl0Wm56akVqZmsralJNTEVmMjFGTjJESFRMU3NsUHBISktRbHBVdVBESUxvbGRRRSt3YzlLTVlFd1IyRjZkdHJMRUlCSHljVkJDbmsvWEJ2MWtVNG5wbThiVk5RcWFWelhicFhJRHpFQUJLdWlMY3VpMGhCaHZ6Y2RLOTRyaDVaWVdMU2l1dUhaS3UwQVVuYTBGTjk5djhIaGtudnAvYzlFWDNZMndOeXdQdnhjQnE4ZXpSOFZxelQzN0dTTGdjUkRna1U1NnEwUWRJdktDdlZCWDJMUEUrdUFLV1NwWTM1ZXZBL1VzV0dCTFNXb2cvTzBlSVBrTkwreklranFqQzF6M3hDa0pKRUlJS2FKSEk1UE1WejFBU1V2aDV0Y0F6RFliajkrNGtWQ0o4bVJOV2s0Q0dMUmlKeXhiNjQ0Uzl3ZGRQdkpmMDNJaElMUmFPejVENDNDazUyT2R2ZmhmRGZQZys4TDc0dkxueWFiNDlMeVBSRmZtb1l0VS9yRDEyRC8yeFVrU0xxUlNMeXh4dU1sU1JWU0ZxQlJXQXJWaGN4ckNWeGJEMVZWYThlM2dlTmtZZjV1RTVlS0ptSDl3WG5qOG9Lc2NDZkdUSE5ORi9vaTgwOGo4dUxCWTEzQUpGUU5LQndhMUU0TStDbWhzWWZ1SmVQVEFMKytMT1VqNk9DRkRVSTJpSHRKd010UFd0aC9lYm1NWXFUS0VhNHZQN2ZzUTVlcG5ZRGZuejVnK0wvcExDWUF2aWdXMmZJeW85RHQrMGVnb3QyWUdqRVBnVjZVUVdvaWU5d0Z6VFc5UjFJbGxjaGRmNWxsM1pnOCtQTFJMRzRyQ1FkbVIxRmYyTVBiUG5CNXdtUytCNlJpSVdkSDYxeUdZdmM3NDk5Uy8rdXJoVnVHZy9WYnNmSHJCZ1RaUVVkcWI2NGZRcS9IMTFEL2RjaWZNcUNMYW82N3VINEZGNnBtcWJ4Y1V6c0Q3bU1DYnVudzAvcmFlK0VDNFVPK1RRZnlxcThmL1E1bW1MZlYrcnJ1N0ZuUE5iRUoyVldPakE0aXlxRURUMkNNTWpOWHFpVGlFVzdTVVNyVStQTGhLQm9JdXEzZlBZc1M3K0RUQytkbjg0R3lweFpteUxQWWIzRHM4WDBVOUNYZnd3cysxNFpVMSs1cDdmaU85T3J4YURoamttb2IyOUE5YWF4VXZrWjdqajZ2OGhqSjRScTRwd0tsdGowdU94c05PcnFPWmlPbGcrS2kwT0F6YStpeEJudndMM3hYRmlHbnRXUnpQUENIVDByMHNDN2Flc3FSeXFoSEJWTk5ldVJlTXpFaUFXcms0ZE82QS9XWHJXd0I1K0gzNzRxZWhMNHdIVHc0WU9WdFpJSkJLSnBLS29sS2JDeXViUXdVTkN0Tmg2dVVUV2w3VWNPblNZdG1NbkNnZEVSVjBUbG9ORUlwRklLcFk3eXVJNmMvWWN2dm5tZTlFaXlRRjlHUjdBZStYcVZZd1o5U0M2ZHJYY3RITHA4aVY4UGYwN1pHZGxDK2NSaHNkVDhTektEOXgvSDNyMzZpbVdTU1FTaWFUOHVXT0VpNzN4WHBzNENSbzE5Nm5ZSVRFeEFUcU9TTy91TGtJbXhjZkZZOVRva1dqZXJLbCtBeU5lZmUwTllaM3hnR0NPZ01IYnVibTZ3Y1dGdG90UHhMMzNERU83ZG9YUEFTV1JTQ1NTc3VHT2FTcWNOKzlQc0JjQzZ6UVBjcDQ0OFZWTS9lb0xORzdjVUl3ZGMzTjMwK2N4WTlIaUpkRHBjc2hLc3hNQzk5cHIvOFBYVXlhalRadFd0RjJtQ083NzE2SWxTbTZKUkNLUmxEZDNqSENkdjNBUldxMUdoSko2Y2NMekNQRDNGMWJVL1NQdVExaFlxQkEwbnNhZm8zZ1ljK2JNT1RnN080bkJ3Qk5lZUJaQmdRR3dkN0FYamhrMWEwVUtTNDZqM0YrTnNqeHBva1Fpa1VqS2xqdEN1RmhZY25OenhIZ0ZiNS84cytoR1JFUUlsM3duSjYzbzd6S1FucEZCd3FRVDIzRWtkbzd3Ymt6TkdqVkZYNWRhcmMwWGQxRWlrVWdrNWNNZElWd2NJb2xuTGVad1NoeXRnNXNHalRsMjdKZ1FKWTZoR0I0V3BpemxnZEphcFcvTFFjUUo1TWp0eGh3NWNrUnNsNW1aamtnU1A0bEVJcEdVUDNkTVUyRm9TSWdTQjlFVFU2ZE5GOEY5bzJOaU1QT25XVUtVdUtuUXc5TWozOXhXa1pIVlJkQmZqcDg0ZmZwM09IandNR0ppWS9ITHI3L2p5cFVvMGZmRk1SWXRXWElTaVVRaUtYdnVLSGQ0OWc3a3VXdDRXbjRXTVo2R1grdWtoWW9zc1lUa1pJeC84bkhVck1WVFhwankraHR2aW5uelRMYlRhc1JZc1BqNEJERnBKVHQ1U0NRU2lhVDh1YU9FSy9aNkxINytlVFl1WExoSVZwS3JzSll5TWpLRnRmWEkyREVrUG8yVW5LYkVKeVNJN1U2ZlBnTTNOLzEyM0xmRkV6MCtOR1lVV3JTbytMRCtFb2xFY3FkeVI0WjhPbnJzT0k0ZlB5N2MzRU9xQmFOeGs4WW1zd3dYeElrVEozSGs2RkZrNStRZ3lEOFFUWnMyZ3J1NzVha1JKQktKUkZJKzNKSENKWkZJSkJMYjVZNXh6cEJJSkJMSjdZRVVMb2xFSXBIWUZGSzRKQktKUkdKVFNPR1NTQ1FTaVUwaGhVc2lrVWdrTm9VVUxvbEVJcEhZRkZLNEpCS0pSR0pUU09HU1NDUVNpVTBoaFVzaWtVZ2tOb1VVTG9sRUlwSFlGRks0SkJLSlJHSlRTT0dTU0NRU2lVMGhoVXNpa1Vna05vVVVMb2xFSXBIWUZGSzRKQktKUkdKVFNPR1NTQ1FTaVUwaGhVc2lrVWdrTm9VVUxvbEVJcEhZRkZLNEpCS0pSR0pUU09HU1NDUVNpVTBoaFVzaWtVZ2tOb1VVTG9sRUlwSFlGRks0SkJLSlJHSlRTT0dTU0NRU2lVMGhoVXNpa1Vna05vVVVMb2xFSXBIWUZGSzRKQktKUkdKREFQOEg1bERnam4zZUxYUUFBQUFBU1VWT1JLNUNZSUk9IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiRklET18yXzAiXSwiZXh0ZW5zaW9ucyI6WyJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiI4OGJiZDJmMDM0MmE0MmU3OTcyOWRkMTU4YmU1NDA3YSIsIm9wdGlvbnMiOnsicmsiOnRydWUsInVwIjp0cnVlLCJ1diI6dHJ1ZX0sIm1heE1zZ1NpemUiOjIyMDAsInBpblV2QXV0aFByb3RvY29scyI6W10sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6MTYsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTYsInRyYW5zcG9ydHMiOlsidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN30seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTI1N31dLCJmaXJtd2FyZVZlcnNpb24iOjF9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMS0wOS0yNyIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiSW5uYUlUIEtleSBQSzExMDAiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDIxMTAxODAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4zIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjMifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjEtMDktMjcifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIxLTEyLTE1In0seyJhYWd1aWQiOiIxZDhjYWM0Ni00N2ExLTMzODYtYWY1MC1lODhhZTQ2ZmU4MDIiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjFkOGNhYzQ2LTQ3YTEtMzM4Ni1hZjUwLWU4OGFlNDZmZTgwMiIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJMZWRnZXIgRmxleCBGSURPMiBBdXRoZW50aWNhdG9yIn0sImRlc2NyaXB0aW9uIjoiTGVkZ2VyIEZsZXggRklETzIgQXV0aGVudGljYXRvciIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxMDYwNSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Iiwic2VjcDI1NmsxX2VjZHNhX3NoYTI1Nl9yYXciLCJlZDI1NTE5X2VkZHNhX3NoYTUxMl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2ludGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjMsImJsb2NrU2xvd2Rvd24iOjB9fSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2ludGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjMsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6WyJhbnkiLCJoYXJkd2FyZSJdLCJ0Y0Rpc3BsYXlDb250ZW50VHlwZSI6InRleHQvcGxhaW4iLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQmdUQ0NBU2NDRkZNMVFDRFhnMTIyRjljdldGVm1xZUdYM3RRV01Bb0dDQ3FHU000OUJBTUNNRU14Q3pBSkJnTlZCQVlUQWtaU01ROHdEUVlEVlFRS0RBWk1aV1JuWlhJeEl6QWhCZ05WQkFNTUdreGxaR2RsY2lCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVOQk1CNFhEVEkwTURVek1ERTBNVGswTUZvWERUTTBNRFV5T0RFME1UazBNRm93UXpFTE1Ba0dBMVVFQmhNQ1JsSXhEekFOQmdOVkJBb01Ca3hsWkdkbGNqRWpNQ0VHQTFVRUF3d2FUR1ZrWjJWeUlFWkpSRThnUVhSMFpYTjBZWFJwYjI0Z1EwRXdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBVEs3blh5SDRwZ04zVE13Q1dTb01EUmU0RVY4SmwzWHp1aGljWi8yZ3ZoK3p6M1dtVzBPWi9FY1JZRUE4RjI2Y2VldU1jZDIxV1FSUktXcGpXRCtKV2lNQW9HQ0NxR1NNNDlCQU1DQTBnQU1FVUNJUUQ4SiswL2I4UGVZakZSUVlrVVJjcWhheDI3b2x3MWpZL3Bic2toQnVScDRBSWdPQUhiNm4rN2ZOZmZ5b3hwZUNxM1ZaN0Ixak4zd3FtUE5mbmFlQWpkb1hzPSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFTWUFBQUVBQ0FZQUFBQWVNZHZ4QUFBQUFYTlNSMElBcnM0YzZRQUFBSVJsV0VsbVRVMEFLZ0FBQUFnQUJRRVNBQU1BQUFBQkFBRUFBQUVhQUFVQUFBQUJBQUFBU2dFYkFBVUFBQUFCQUFBQVVnRW9BQU1BQUFBQkFBSUFBSWRwQUFRQUFBQUJBQUFBV2dBQUFBQUFBQUVzQUFBQUFRQUFBU3dBQUFBQkFBT2dBUUFEQUFBQUFRQUJBQUNnQWdBRUFBQUFBUUFBQVNhZ0F3QUVBQUFBQVFBQUFRQUFBQUFBZTZTQ2t3QUFBQWx3U0ZsekFBQXVJd0FBTGlNQmVLVS9kZ0FBQVZscFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWxoTlVDQkRiM0psSURZdU1DNHdJajRLSUNBZ1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNEtJQ0FnSUNBZ1BISmtaanBFWlhOamNtbHdkR2x2YmlCeVpHWTZZV0p2ZFhROUlpSUtJQ0FnSUNBZ0lDQWdJQ0FnZUcxc2JuTTZkR2xtWmowaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOTBhV1ptTHpFdU1DOGlQZ29nSUNBZ0lDQWdJQ0E4ZEdsbVpqcFBjbWxsYm5SaGRHbHZiajR4UEM5MGFXWm1Pazl5YVdWdWRHRjBhVzl1UGdvZ0lDQWdJQ0E4TDNKa1pqcEVaWE5qY21sd2RHbHZiajRLSUNBZ1BDOXlaR1k2VWtSR1BnbzhMM2c2ZUcxd2JXVjBZVDRLR1Y3aEJ3QUFENjVKUkVGVWVBSHQzTHVPSkdjVkIvQmQ5bUlITmhMaUloT1FPRWFDQ0RraUlDTkc0ZzM4Q2p3SkNRbENCQVNJQk42Q2hBZ0pKRVJpSkF2WkFveXhmRm52aGUvczlKRnFlM3RtdWs5L3A2ZDY1MWZTTjFWZFZlZFV6YTlxL2wyOTlzeWRPM2Z1dkQvR3N6R2ViT2F4Ykt6WDROSG0rdnhxekdONmNESHpkU0Z3ZjdQODh6R1Blem5OM05mcnZhL2oyanpkWEs5UHZ6SVdUQVFJRUZpVmdHQmExZVZ3TWdRSWhJQmdjaDhRSUxBNkFjRzB1a3ZpaEFnUUVFenVBUUlFVmljZ21GWjNTWndRQVFLQ3lUMUFnTURxQkFUVDZpNkpFeUpBUURDNUJ3Z1FXSjJBWUZyZEpYRkNCQWdJSnZjQUFRS3JFeEJNcTdza1RvZ0FBY0hrSHJndEF2RkxvcVl6RVJCTVozS2hGcWQ1ZDdPYzg4VW1pNWNJaEJXdlMzRFd1RHIvUE1ReDUrYWQ2Qmk5dzJ2VE8rZUhkN2c5RldtVWYwN2o5bnpuTi8rZEh2VkdFTVh4OTVpK1BVWmN2SDJmb1BLQ1IvMVB4L2pqR0crT0VYL1Q2YWdUR3ZXbXF3WEMvdDRZL3hranJsMTQ1L1VZaTZZaGtDWnZqZVZ2alBGNHMyN01URTBDY1EvR2c4N0hZM3gvak4rUEVWT3MzemNUY3QvUFpqd3gvV1VjK0wwNEE5UEpCZklIOE9RSFh2a0I4d2IvNXpqUEdLYlRDanc4OW5Bemd1bU56VW5FeWNRVGs2bGZJQUlwbm5Cam1IWUxSRGpGSjRBWXNXenFGNGkvcHZyNUdKa0o1U1BPQ0tZTW81am5jdm1FRkJLWUtDQzhKMkx1MFNvL3NzVkg1Nk9tZmY5TjZhaURLQ1pBNEZZSlpFQ1Z2Mm5CVktaVFNJQkFsNEJnNnBMVmx3Q0Jzb0JnS3RNcEpFQ2dTMEF3ZGNucVM0QkFXVUF3bGVrVUVpRFFKU0NZdW1UMUpVQ2dMQ0NZeW5RS0NSRG9FaEJNWGJMNkVpQlFGaEJNWlRxRkJBaDBDUWltTGxsOUNSQW9Dd2ltTXAxQ0FnUzZCQVJUbDZ5K0JBaVVCUVJUbVU0aEFRSmRBb0twUzFaZkFnVEtBb0twVEtlUUFJRXVBY0hVSmFzdkFRSmxBY0ZVcGxOSWdFQ1hnR0Rxa3RXWEFJR3lnR0FxMHlra1FLQkxRREIxeWVwTGdFQlpRRENWNlJRU0lOQWxJSmk2WlBVbFFLQXNJSmpLZEFvSkVPZ1NFRXhkc3ZvU0lGQVdFRXhsT29VRUNIUUpDS1l1V1gwSkVDZ0xDS1l5blVJQ0JMb0VCRk9Yckw0RUNKUUZCRk9aVGlFQkFsMENncWxMVmw4Q0JNb0NncWxNcDVBQWdTNEJ3ZFFscXk4QkFtVUJ3VlNtVTBpQVFKZUFZT3FTMVpjQWdiS0FZQ3JUS1NSQW9FdEFNSFhKNmt1QVFGbEFNSlhwRkJJZzBDVWdtTHBrOVNWQW9Dd2dtTXAwQ2drUTZCSVFURjJ5K2hJZ1VCWVFUR1U2aFFRSWRBa0lwaTVaZlFrUUtBc0lwaktkUWdJRXVnUUVVNWVzdmdRSWxBVUVVNWxPSVFFQ1hRS0NxVXRXWHdJRXlnS0NxVXlua0FDQkxnSEIxQ1dyTHdFQ1pRSEJWS1pUU0lCQWw4RDkwZmpMVGZOSFkzNXZqR2ViMTNkM0xDL1h4VzRQRi92RWE5UHBCT0phUEJnanI5Y2hSODdybU5mK2tGcjdFcmhPSU83SnZMZnkvc3g3TG1xWHk4dlhzZS96VElvdjM0d3RZM3I5WW5idzEvamhNSjFXSUM5c3ZKbVlDS3hGSU83TG1DSlhqc21GcjBhRFg0OFI0UlEzK2I0ZjdUSUY0K0FmakJGVHJydDQ1V3VYUUliU3Q4WUJmanpHNDhXQmNsdXN5cHRrZVYxeWUxejMvNDd4aHpHZWptRWlNRU1nNzZWL2oyYS8zVFNNK3kvdnhldU9FZnRHQm4xeDNZNzdidC8zd1B2MnM5L2xBdkZ4TzZZZmpSRVhzam8rSExYeFVUd20xKy9Dd2RmakJhYmNTL0hPR1FsMVRMTkl5ZmpoTUoxV0lKK1U0ck44WEw5OXIyRmNyM2pTL1dnTTEyMGdtS1lLNUQyVmI2Q1Y1czhpbVBJZHQ5SWdhdkpFcXZYcWpoT0lHMkRmVUZydXQrL0g5dVBPVHZWdEZjaVBkYVh2UDRPcFZLeG9WUUxMMExucXhISy9uRisxcjIwRXFnSkhQYkI0MTZ5eXF5TkFvRTFBTUxYUmFreUFRRlZBTUZYbDFCRWcwQ1lnbU5wb05TWkFvQ29nbUtweTZnZ1FhQk1RVEcyMEdoTWdVQlVRVEZVNWRRUUl0QWtJcGpaYWpRa1FxQW9JcHFxY09nSUUyZ1FFVXh1dHhnUUlWQVVFVTFWT0hRRUNiUUtDcVkxV1l3SUVxZ0tDcVNxbmpnQ0JOZ0hCMUVhck1RRUNWUUhCVkpWVFI0QkFtNEJnYXFQVm1BQ0Jxb0JncXNxcEkwQ2dUVUF3dGRGcVRJQkFWVUF3VmVYVUVTRFFKaUNZMm1nMUprQ2dLaUNZcW5McUNCQm9FeEJNYmJRYUV5QlFGUkJNVlRsMUJBaTBDUWltTmxxTkNSQ29DZ2ltcXB3NkFnVGFCQVJURzYzR0JBaFVCUVJUVlU0ZEFRSnRBb0twalZaakFnU3FBb0twS3FlT0FJRTJBY0hVUnFzeEFRSlZBY0ZVbFZOSGdFQ2JnR0JxbzlXWUFJR3FnR0NxeXFralFLQk5RREMxMFdwTWdFQlZRREJWNWRRUklOQW1JSmphYURVbVFLQXFJSmlxY3VvSUVHZ1RFRXh0dEJvVElGQVZFRXhWT1hVRUNMUUpDS1kyV28wSkVLZ0tDS2FxbkRvQ0JOb0VCRk1icmNZRUNGUUZCRk5WVGgwQkFtMENncW1OVm1NQ0JLb0NncWtxcDQ0QWdUWUJ3ZFJHcXpFQkFsVUJ3VlNWVTBlQVFKdUFZR3FqMVpnQWdhcUFZS3JLcVNOQW9FMUFNTFhSYWt5QVFGVkFNRlhsMUJFZzBDWWdtTnBvTlNaQW9Db2dtS3B5NmdnUWFCTVFURzIwR2hNZ1VCVVFURlU1ZFFRSXRBa0lwalphalFrUXFBb0lwcXFjT2dJRTJnUUVVeHV0eGdRSVZBVUVVMVZPSFFFQ2JRS0NxWTFXWXdJRXFnS0NxU3FuamdDQk5nSEIxRWFyTVFFQ1ZRSEJWSlZUUjRCQW00QmdhcVBWbUFDQnFvQmdxc3FwSTBDZ1RVQXd0ZEZxVElCQVZVQXdWZVhVRVNEUUppQ1kybWcxSmtDZ0tpQ1lxbkxxQ0JCb0V4Qk1iYlFhRXlCUUZSQk1WVGwxQkFpMENRaW1ObHFOQ1JDb0NnaW1xcHc2QWdUYUJBUlRHNjNHQkFoVUJRUlRWVTRkQVFKdEFvS3BqVlpqQWdTcUFvS3BLcWVPQUlFMkFjSFVScXN4QVFKVkFjRlVsVk5IZ0VDYmdHQnFvOVdZQUlHcWdHQ3F5cWtqUUtCTlFEQzEwV3BNZ0VCVlFEQlY1ZFFSSU5BbUlKamFhRFVtUUtBcUlKaXFjdW9JRUdnVEVFeHR0Qm9USUZBVkVFeFZPWFVFQ0xRSkNLWTJXbzBKRUtnS0NLYXFuRG9DQk5vRTdyZDExdmdjQk9MNlB4bmozaGpQenVHRUR6ekhwMlAvR0tZekV4Qk1aM2JCSnB4dUJsQUUwbWViZnEveUQrL2Q4VDNtOXp5QlQ0dFRDQWltVXlpdjZ4anhneHJUbTJQOFpJd3Z4NGlQOUsvU0QyOThMNitOOGFjeC9qNkdjQm9JSmdLZEF2R3hLNllmamhFL2dQSGtFMDg4c2J6dk9IVC9mZnV1YmIrZkRaT1lIbHpNZkQwWEFVOU01M0tsNXA1blBqVmxRT1hyQ0phWWRyMk9iY3NuajF6T2ZaOFg3dml5N0prOWNyZmNGcStYZlhLLzNMN2NsclU1WCs2VHk0L0h4bmhpK2lKM01qOHZBY0YwWHRkcjl0bkdEL3p5aDM2NUhNZGF2czdsbkc5dmo5ZTdwcXYyWDI1YjF1YjZuQyszYlM4djk4bmwvSy9OK1hxN3h1dVZDd2ltbFYrZzV0TjdWWDl3WDlYdnEvbDJXRS83ZkdkWnp4azVFd0xIQ2VUSHVlTzZxTDVSQWNGMG8vd08zaURnYWFrQjlkUXRCZE9weFIydlc4QVRVN2Z3Q2ZvTHBoTWdPOFJKQlR3eG5aUzc1MkNDcWNkVlZ3SUVqaEFRVEVmZ0tWMmxnSTl5cTd3c2g1MlVZRHJNeTk3ckYvQlJidjNYNk5vempQK1A2ZGdMNlIzcVd1YldIZmkveUJzZVRGNDB1WWxYUitXS0o2YWJ1R1E5eDh3Znhwem5VUzc3UWQzZUwvZVArWExiY2ptMzVickw1dGtydHgvNmVsa1h5OHZYMlN2bnkrMjVYODV6SC9NekU0Z25KaGZ4ekM3YTVuVHpsM2x6bnQvRjlqdlY5dXZMOXN2MU1WL1dMSmN2MjViNzVEeDdWVjh2NjViTDJYYzVYMjdQNVllYkhmenk3bExxdE10SDVVcGN5TitOOGRZWWo4YUlKNmhER2thd3ZUdkdYemUxOFV1aHBsNkJ1R1p4amI0MnhnL0dpTDh1RUZQK1VGNjh1dDFmNHo2TVgrTDk4eGp2alpGbVk5SFVLQkJ2a25FL3ZqM0dMemZIT1NSUFl0L284WG5VZmp4R3JLaU9kNkxKbUxiZnVTL1crdG9oSUlUMlYyVzF2OVd4ZStZVDZ2ZEdvMnFlUEsrTEo1NlB4b2cvR3BaUFRHUHgyaW1LWTRvVGlUOHhZVHF0UVBqSEQ1dzNnNnZkNDhuSlUvelZSak8zWmk3RVUxTSt5ZWU2Zlk0VCswWW1mUkpmWXNRVTgzMy9NWHg1TU85SXovbE8vaVd1Z1RlRms3TTc0QjRDeXpmTnVFLzN6WWpjOS82K1FiVEh1ZGlGQUFFQ2N3UUUweHhIWFFnUW1DZ2dtQ1ppYWtXQXdCd0J3VFRIVVJjQ0JDWUtDS2FKbUZvUklEQkhRREROY2RTRkFJR0pBb0pwSXFaV0JBak1FUkJNY3h4MUlVQmdvb0JnbW9pcEZRRUNjd1FFMHh4SFhRZ1FtQ2dnbUNaaWFrV0F3QndCd1RUSFVSY0NCQ1lLQ0thSm1Gb1JJREJIUURETmNkU0ZBSUdKQW9KcElxWldCQWpNRVJCTWN4eDFJVUJnb29CZ21vaXBGUUVDY3dRRTB4eEhYUWdRbUNnZ21DWmlha1dBd0J3QndUVEhVUmNDQkNZS0NLYUptRm9SSURCSFFERE5jZFNGQUlHSkFvSnBJcVpXQkFqTUVSQk1jeHgxSVVCZ29vQmdtb2lwRlFFQ2N3UUUweHhIWFFnUW1DZ2dtQ1ppYWtXQXdCd0J3VFRIVVJjQ0JDWUtDS2FKbUZvUklEQkhRREROY2RTRkFJR0pBb0pwSXFaV0JBak1FUkJNY3h4MUlVQmdvb0JnbW9pcEZRRUNjd1FFMHh4SFhRZ1FtQ2dnbUNaaWFrV0F3QndCd1RUSFVSY0NCQ1lLQ0thSm1Gb1JJREJIUURETmNkU0ZBSUdKQW9KcElxWldCQWpNRVJCTWN4eDFJVUJnb29CZ21vaXBGUUVDY3dRRTB4eEhYUWdRbUNnZ21DWmlha1dBd0J3QndUVEhVUmNDQkNZS0NLYUptRm9SSURCSFFERE5jZFNGQUlHSkFvSnBJcVpXQkFqTUVSQk1jeHgxSVVCZ29vQmdtb2lwRlFFQ2N3UUUweHhIWFFnUW1DaHdmMEt2RExkN0UzcHBzYi9BczdIcjAvMTN2NVY3eHIxNTkxWis1emZ6VFVlZVBCN2o2Q3lZRVV5ZmJBd2UzWXpGclQ1cS9OQkZRSmxlRmdnYndmMnlTK2VhSjV2bUh4OTdrQm5COU00NGlZZGp2REZHbkpoM3FJSFFPRVVRUFJqai9USCtOb1p3R2doYlU1cThQZFovWjR3dngzQmZiaUZOZmhuM1plVEovOGI0N296ZWNZTkgwd2lWbUJ2bllmQ2JjYTFpaXBBeXZTaVFiN2kvR0t2ZHorZGpFRSs0Y2IwK3pRdjQ0bVU5N0ZWZStNT3E3RjBSaUhmOWVQZVBKOVF2S2cxdVdVMys4MExNWjl6cnQ0eXYvTzNHZlhyVUUrcU1pNVVua1BQdDd5YUNLN2ZsY3N4aml2VzU3dm1LSFY5MmJjOTF5ejdMMHR3ZTY1YkwrWHE1Ynl4dm45LzI5bmlkeDRybDdmTmVIaU9YdCtmYlBlSjFUTXRqWDZ6WnZTNzN6ZjF6bmpYbUx3dWtVY3lYeTNsdG9pS1dZOHJ0eTIwWFcxNzh1dHcvOTgzNWNzL3RkZms2NTFmdG05dGkzNXppL1BMMXZ1ZWF0WWNjTTJ0eW5yVTV6L1V4MzdWdXViMjhQQ09ZNHVBSnRldEVsdHR5T2VmWDFWNjJQZXR6dm4zYzVmcmw4bVg5c241NzMxeS9xMjY1NzY3bFhKZnpYVDJ1Nm4vZC9zdGF5OWNMWEhZZGx1djNNVi91bjhzNVg1N0Y5cnA4bmZPcjlzMXQyL3RlOXpycnR1ZmJkYkY5MTdydHV1Vit1L2JmdFc1WGo0UFg1WC9xUDdoUUFRRUNCTG9FQkZPWHJMNEVDSlFGQkZPWlRpRUJBbDBDZ3FsTFZsOENCTW9DZ3FsTXA1QUFnUzRCd2RRbHF5OEJBbVVCd1ZTbVUwaUFRSmVBWU9xUzFaY0FnYktBWUNyVDNWaGgyLy9VZG1QZmtRTVQyQktJLy9NNy96UkV6cmQyOFhKbEF2SEwxbkhkNHRjQlRGY0xwRkhjMis3dnE2M1dzRFd1Vi93dHA2ZHhnNysrT2FOWnY1NnlhV2ZXSlBEYXBtLzhJcS9wYW9IOHl3dHBkdlhldHE1RjRQVUlvMzlzenViek1mZlJiaTJYNXZMemlMOFErUFV4UHR6c2trOEZsMWZjdmkxcDhxL3hyY2Q5L2NFWWNhLzdHRHdRVmp6bEU5T24vd2ViYTBWNVU2V0pxZ0FBQUFCSlJVNUVya0pnZ2c9PSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIl0sImV4dGVuc2lvbnMiOlsiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiMWQ4Y2FjNDY0N2ExMzM4NmFmNTBlODhhZTQ2ZmU4MDIiLCJvcHRpb25zIjp7InJrIjpmYWxzZSwiY2xpZW50UGluIjp0cnVlLCJ1cCI6dHJ1ZSwidXYiOnRydWV9LCJtYXhNc2dTaXplIjoxMDI0LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxXX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wMy0yNyJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDMtMjcifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyJiNmYxMzg5ZmVhMTViMzQxMDM4MWViOTZkOTM4Y2YxMmNhZGU5NjkyIl0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbImI2ZjEzODlmZWExNWIzNDEwMzgxZWI5NmQ5MzhjZjEyY2FkZTk2OTIiXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ill1YmlLZXkgQmlvIFNlcmllcyAtIE11bHRpLXByb3RvY29sIEVkaXRpb24ifSwiZGVzY3JpcHRpb24iOiJZdWJpS2V5IEJpbyBTZXJpZXMgLSBNdWx0aS1wcm90b2NvbCBFZGl0aW9uIChFbnRlcnByaXNlIFByb2ZpbGUpIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NCwicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoyfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCIsInJlbW90ZV9oYW5kbGUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlETXpDQ0FodWdBd0lCQWdJVVNPRWpUZi8veXFSZlBXN1FxOHF0SXlDckFnOHdEUVlKS29aSWh2Y05BUUVMQlFBd0x6RXRNQ3NHQTFVRUF3d2tXWFZpYVdOdklFWkpSRThnVW05dmRDQkRRU0JUWlhKcFlXd2dORFV3TWpBek5UVTJNQ0FYRFRJME1EVXdNVEF3TURBd01Gb1lEekl3TmpBd05ETXdNREF3TURBd1dqQXZNUzB3S3dZRFZRUUREQ1JaZFdKcFkyOGdSa2xFVHlCU2IyOTBJRU5CSUZObGNtbGhiQ0EwTlRBeU1ETTFOVFl3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRQ2R2bDI3dzJndTFmUFhlRUZiSWRxeDBCYWx2VkRWV3JRUEo3SHF2aXVFdFpIbHhTTHhTRnRjWHBUb2x2THZvZjhmNHRNZXJRVGtWR3pjbVl6bTFFQlQ0SUp1TW1vRXFma0VFaFdwc0FETUZyalprcWxaWTlFcXhRekxvVkVFb25FNW9HeFNkVkN4Q2NMSWFja3B5Ui9DQ1h2ajFCdC9oVGdFOWhUbEY0cFJxeE1reDNwbEY3eThkRFpsUkhXczd2Ym5obUJDR2VJMFpQRVE2bmwybUNnMnI3NGFkRjJ1Nks5cnJMZmhCQzNRTEU4RVByZ3FVc0kraGt1cTJ0SzRNMlNNT3A4dVVWVmtxVWV1M2gwa3IzV1ZJMFcwMnBrZ3JPZ2lGS0xGTmtTcmJZaGRqTUJEajVpem1xZmM5eEpSS29EWDYxMnFkOFpHVkhwVDVBWUZYKzFoQWdNQkFBR2pSVEJETUIwR0ExVWREZ1FXQkJUWnlVNURpUS9hMlVFZ0U3cUJLMHpoSXNSTlJqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUFNQTRHQTFVZER3RUIvd1FFQXdJQkJqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFYdm5CNFNMdVVKZllNU1ZHQWhzc0wvU21XbGkzRlNjY2d4eWR2S2xBQ2NpZElJV0tRcWEzcS9RU1VFUXpDOURnRWZNZ3I3aUMxQmtUWmJJTGJvVjZVWjVrbk5zdmpFWld1TWVvZ0o4dGdaczFoVnZLd1ppendKK21FY21zamhJckJZdW9MMVQ2eXJPSnZLRmcxanYrQ3k0WndBOUJway9WM1VPaXIxVnlLOGRDdHlIdTZ2Zm9zb3RBZFl4OEZBdVIyNDNnUlRNVjZKeDhKZGlnMkpESUFRTWx6VmVEcFNVSFgvSzJIWFJIeEh3ZmdqYmdVampCdS83MnI4T2ZlaHloekhYSTNLOENGRmRmbE8rOG5FT0pLM3k4RjFpdmdTNXVOLzhTbWNZdy9TVFFZd2hyeFB1d3ozblA4YmFNdW00QkIybm5ZbXBCNjBzWDNibDVrOFFVU3c9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFmQ0FZQUFBQ0dWcytNQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUhZWUFBQjJHQVYyaUU0RUFBQWJOU1VSQlZGaEhwVmQ3VE5WMUZELzNkNTl3ZVFTSWdTOUFRQVhjRkxBUVppOWZwZVZ6MXRZL1dUWnI1V3hwYzdXNWtuTGE1akkzWjg1c3JTMm5NMnNqdFd3WlM3SVVINEg0eENuRVF4NERBWkY3NFY3dXM4ODV2OS9sSW5CdlZKL0I0UHY5bnUvNW51LzVudk01NTZmekEvUXYwSGIvSXJYM1ZGS1BvNDVjbm00aW5VSVdZd0xGUm1aUVV1d2pGRy9OMWlSSGgxRVowTlJWUnVkcXQxQmQrMm5TS3lTL09oeXMwK2xrM2UvM2tROXF2RDRaVXRhNFZWU1V1WTBlaXB5aVRoQWZvY29PUlZnRHV1dzNxS1JpQWQzcmJjRXRqVGpZSW9mNldhSHNDbXpWUFdDTXgrY2doOHRMcVdNS2FNV3NVakxxbzJSdEpJUTBvT3ptZXJwUXU0ZXNaZ3NPTmtHeEg3ZDBrZHZUVDE3czRPTVU3Vkk4WmhqZ0dhTStBcTlpRU51OFBpZjF1ZHowN013dktXZjhHbFZvQ0VZMDRQQzVXZFRhWFlGYlI4dk52TDUrM0tnZmI1eE5NeWE5UmFtSml5bmFNbEdUVnRGbHI2YmE5dStwcW5FWDR1TXVSUmdqU1lFaHJON3V0RkZlNmxxYWw3TmZrdzVpbUFHSHluUHBiazhWbVkweHN0bnB0bEZDVkNZdHpUdUJOODNRcE1MalR0ZXZkUHpTVW5KN2U4bWtqeFozOWZYYktEZmxkWnFidlUrVFVnR25CVkY2ZlEyaVBIZzRXMTZVV1V3dnpiazE2c01aRStQbjBwdno3SlNldUF5ZXM4bGNwQ21hS3VvL3ArcVdyMlVjd0lBSFdydlAwWUV6aFhBdExBYnNzSGhwN2lHYW12eWlqUDhyeXFyWFVXWDlYb293eHlBdWZOQnJwNDNQT0JGWFpsa2Y4TURSaXFjcHlvd0F3cHV6MngrZld2ei9EdGRlOXNtc3p5Z3RjUjZDMXdiZHpCbDZPbHE1V05ZWTRvR2F0aEpNcmtURXgwakFSU0hBVnMrNXJZa1FOWGIrUWdmUExzUTZnWHlJbnNyZVFmbXBtN1JWRllmTDg2bjFmaVVPa1l2U2hrVVB4dmJ1a3pveTZLMWloTTFobzNYelc2RXZTZlhBK2RwaVdHYVdkK2RvWHpMem1Hd0tZRkxDQXNSQWxQQkFoTWxDRlhVN3RCVVZQcjhIZ1ZjSkhXcStGMDBwbHIrRE1UZHJQNHp2eFkxMWtOTWh4VCtTZVRHZytkNFY1TFFKaXR5VUdKTkI4VkZac2pnWUJaTS9JSS9YQ1RrajBxeURPcEYyQVZRMTdDSWpVcC9EblQxVWtMNUY1Z2RqK3NTMXdnMWdFM2dpZ202MGZDWHpTblBYYnlBUGJJWHYrSURwRTE2VGhhSElTOXNreWhsbU1FNUYzY2ZxQUtocTJDMEU1UEgxZ1lhWGFMUERrWkcwSERKT25LV0hwNTFJMHo1U091eDhlMVdBdVp6ZEhRclRrcDhUbWpYb0krbGEwd0dac3p1YnFiTzNpZlE2QS9XN3ZWU1lzVjNtUjBKS3drS2M0V0hpQmttUjhJM0NDZ0k4N29PTDRxelQ1UCtSVUpCZWpFT2dBUEs4aFlQemF0TStlSVRwMklPOXlUUW1lcm9tUFJ4eDFxeEFjc2lsZS91YlNlRWJjV1FHWUVDZ2hjTFkySHlLam9nakgyNWhNcGpwVXYxT3VnbGk0ZWgyZVJ3ME8zMmJKamt5dUNnTnpnMHZ6bFlNU2lTczB1b280TUc3aE1PakNFYVgxeUZFMG5TdmpCenVUbkVwSzg2WjhJb3FGQUl1Ync4a2c5QXJFYVJFV1NaSStqSDRYYnA2ZzlFOUVuSlQzb2FSekROK01VSkJRREhuNTZhOG9VbUVCdXNPeEJzL041K3RKRWJQa0FGRGo4VUd2T3MvSVd2Y1NnbEdCaHZTNy9GVFlmcFdHWWREWThmUEF4V1NBMzVzVEM0cDQrTG00QWFxSW9QZVF0ZnVmSzZKaDBaaHhsYnNVWE9TbVhOaWZENVpUQWt5RG9mYmJjY2x4bkE4V05BcXhDYlJOeWtoWHhRcGFEdzY3ZlhVWWJzaUcwS2h0djJvZUl2aDhyaFFNWU9jRUFxWEcvZUkrem5nT2M1eXhyOHE4MklBTTFjL0ZMRk9wbHF1NWVGUVhyTVp6R2NWQ2pZYkxXRzVJNEJUMWV1UnJsYnh0Tk90TWl0RERFaExYSUl5bkFBdnVPRVdFM1gzTmRBZnQ5NFZnYUc0MlhJUXQwWlg2UGVDRS9xUUZlOXJLNkh4N1lVNTBLdkg3Zlc0ZlMrcTdLS0JKeHNnZ0JYNXBTQUdoMWpJclZoNXpRNnczUmZhYWhCWG0vYUNiQ1pUakNVRlVUeVdacVc5cDYyTWpKUFhWcU9yUGdNTzROdjc0R2tmK293ZnROVkJEUW5qRkpxSFN3MTdwWHZoV1c1S1pxZS9RNDlOL1VTVENBVldvUVhGSUhCSFhYZTNGUHJVRHN1R0RtdEYvaEhLVEhwZWt4aGlBT1BJK1NKcTZTNkhGNEk5WVd6a0JKVG80NmlVTXpXcDhQaXIvUmlkdUx4S1lzU2tzVjh2TGxPUXZoR1gyWWxSME9CaEJqQyt1L2dFY3ZZMEFwSzdZazQxTnhqUFNRbldGSFRGNjZVcmpnZXZCOEN1NWErbDJ2WVNSUHR1VkRvNzNoaGRNU0huVVg3dFRqc1ZaR3hBbC9XcHRpT0lFUTFnbkwyOW1YNi90UjF0bWxrWWo4VzRYK0NTaldjVURHWTFOcFMvQzdoU0txaU1MTS9sMlFtU1daNzNEZHorZ2lvOEJDRU5ZUFE0NnFua3p3WFVicXZCa3hqVVFzV2ZaRmdidW8zckFmK3dON2pPTzkwK3lueDRQaTNMKzBuWUwxU2NoRFVnQVA0Z1BWLzdJZDFxKzFIU2htdUdrSXFXUlBneXhNRnFQOEhmalRualh3WTViUWZiSmN0Nk9JektnTUhvdEYvSGUxZWdzYXhIU3FHNndmZG1RNXg4TnlURkZxQmNwMmlTb3dIUjN5azUrMzZoRjd2WEFBQUFBRWxGVGtTdVFtQ0MifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wMi0wMSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzQsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWXViaUtleSBCaW8gU2VyaWVzIC0gTXVsdGktcHJvdG9jb2wgRWRpdGlvbiAoRW50ZXJwcmlzZSBQcm9maWxlKSIsImNlcnRpZmljYXRlTnVtYmVyIjoiVTJGMTAwMDIwMjUwMjAxMDA2IiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDItMDEiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc0fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTAyLTA2In0seyJhYWd1aWQiOiJkZDg2YTJkYS04NmEwLTRjYmUtYjQ2Mi00YmQzMWY1N2JjNmYiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6ImRkODZhMmRhLTg2YTAtNGNiZS1iNDYyLTRiZDMxZjU3YmM2ZiIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IEJpbyBGSURPIEVkaXRpb24ifSwiZGVzY3JpcHRpb24iOiJZdWJpS2V5IEJpbyBTZXJpZXMgLSBGSURPIEVkaXRpb24iLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc0LCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX0seyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbImVkMjU1MTlfZWRkc2Ffc2hhNTEyX3JhdyIsInNlY3AzODRyMV9lY2RzYV9zaGEzODRfcmF3Iiwic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIiwiYmFEZXNjIjp7InNlbGZBdHRlc3RlZEZSUiI6MC4wLCJzZWxmQXR0ZXN0ZWRGQVIiOjAuMCwiaUFQQVJUaHJlc2hvbGQiOjAuMCwibWF4VGVtcGxhdGVzIjo1LCJtYXhSZXRyaWVzIjo1LCJibG9ja1Nsb3dkb3duIjowfX0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIiwiYmFEZXNjIjp7InNlbGZBdHRlc3RlZEZSUiI6MC4wLCJzZWxmQXR0ZXN0ZWRGQVIiOjAuMCwiaUFQQVJUaHJlc2hvbGQiOjAuMCwibWF4VGVtcGxhdGVzIjo1LCJtYXhSZXRyaWVzIjo1LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRE16Q0NBaHVnQXdJQkFnSVVTT0VqVGYvL3lxUmZQVzdRcThxdEl5Q3JBZzh3RFFZSktvWklodmNOQVFFTEJRQXdMekV0TUNzR0ExVUVBd3drV1hWaWFXTnZJRVpKUkU4Z1VtOXZkQ0JEUVNCVFpYSnBZV3dnTkRVd01qQXpOVFUyTUNBWERUSTBNRFV3TVRBd01EQXdNRm9ZRHpJd05qQXdORE13TURBd01EQXdXakF2TVMwd0t3WURWUVFERENSWmRXSnBZMjhnUmtsRVR5QlNiMjkwSUVOQklGTmxjbWxoYkNBME5UQXlNRE0xTlRZd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUUNkdmwyN3cyZ3UxZlBYZUVGYklkcXgwQmFsdlZEVldyUVBKN0hxdml1RXRaSGx4U0x4U0Z0Y1hwVG9sdkx2b2Y4ZjR0TWVyUVRrVkd6Y21Zem0xRUJUNElKdU1tb0VxZmtFRWhXcHNBRE1Gcmpaa3FsWlk5RXF4UXpMb1ZFRW9uRTVvR3hTZFZDeENjTElhY2tweVIvQ0NYdmoxQnQvaFRnRTloVGxGNHBScXhNa3gzcGxGN3k4ZERabFJIV3M3dmJuaG1CQ0dlSTBaUEVRNm5sMm1DZzJyNzRhZEYydTZLOXJyTGZoQkMzUUxFOEVQcmdxVXNJK2hrdXEydEs0TTJTTU9wOHVVVlZrcVVldTNoMGtyM1dWSTBXMDJwa2dyT2dpRktMRk5rU3JiWWhkak1CRGo1aXptcWZjOXhKUktvRFg2MTJxZDhaR1ZIcFQ1QVlGWCsxaEFnTUJBQUdqUlRCRE1CMEdBMVVkRGdRV0JCVFp5VTVEaVEvYTJVRWdFN3FCSzB6aElzUk5SakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VBTUE0R0ExVWREd0VCL3dRRUF3SUJCakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBWHZuQjRTTHVVSmZZTVNWR0Foc3NML1NtV2xpM0ZTY2NneHlkdktsQUNjaWRJSVdLUXFhM3EvUVNVRVF6QzlEZ0VmTWdyN2lDMUJrVFpiSUxib1Y2VVo1a25Oc3ZqRVpXdU1lb2dKOHRnWnMxaFZ2S3daaXp3SittRWNtc2poSXJCWXVvTDFUNnlyT0p2S0ZnMWp2K0N5NFp3QTlCcGsvVjNVT2lyMVZ5SzhkQ3R5SHU2dmZvc290QWRZeDhGQXVSMjQzZ1JUTVY2Sng4SmRpZzJKRElBUU1selZlRHBTVUhYL0sySFhSSHhId2ZnamJnVWpqQnUvNzJyOE9mZWh5aHpIWEkzSzhDRkZkZmxPKzhuRU9KSzN5OEYxaXZnUzV1Ti84U21jWXcvU1RRWXdocnhQdXd6M25QOGJhTXVtNEJCMm5uWW1wQjYwc1gzYmw1azhRVVN3PT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZkNBWUFBQUNHVnMrTUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFIWVlBQUIyR0FWMmlFNEVBQUFiTlNVUkJWRmhIcFZkN1ROVjFGRC8zZDU5d2VRU0lnUzlBUUFYY0ZMQVFaaTlmcGVWejF0WS9XVFpyNVd4cGM3VzVrbkxhNWpJM1o4NXNyUzJuTTJzanRXd1pTN0lVSDRINHhDbkVReDREQVpGNzRWN3VzODg1djkvbEluQnZWSi9CNFB2OW51LzVudS81bnZNNTU2ZnpBL1F2MEhiL0lyWDNWRktQbzQ1Y25tNGluVUlXWXdMRlJtWlFVdXdqRkcvTjFpUkhoMUVaME5SVlJ1ZHF0MUJkKzJuU0t5Uy9PaHlzMCtsazNlLzNrUTlxdkQ0WlV0YTRWVlNVdVkwZWlweWlUaEFmb2NvT1JWZ0R1dXczcUtSaUFkM3JiY0V0alRqWUlvZjZXYUhzQ216VlBXQ014K2NnaDh0THFXTUthTVdzVWpMcW8yUnRKSVEwb096bWVycFF1NGVzWmdzT05rR3hIN2Qwa2R2VFQxN3M0T01VN1ZJOFpoamdHYU0rQXE5aUVOdThQaWYxdWR6MDdNd3ZLV2Y4R2xWb0NFWTA0UEM1V2RUYVhZRmJSOHZOdkw1KzNLZ2ZiNXhOTXlhOVJhbUppeW5hTWxHVFZ0RmxyNmJhOXUrcHFuRVg0dU11UlJnalNZRWhyTjd1dEZGZTZscWFsN05ma3c1aW1BR0h5blBwYms4Vm1ZMHhzdG5wdGxGQ1ZDWXR6VHVCTjgzUXBNTGpUdGV2ZFB6U1VuSjdlOG1ranhaMzlmWGJLRGZsZFpxYnZVK1RVZ0duQlZGNmZRMmlQSGc0VzE2VVdVd3Z6YmsxNnNNWkUrUG4wcHZ6N0pTZXVBeWVzOGxjcENtYUt1by9wK3FXcjJVY3dJQUhXcnZQMFlFemhYQXRMQWJzc0hocDdpR2FtdnlpalA4cnlxclhVV1g5WG9vd3h5QXVmTkJycDQzUE9CRlhabGtmOE1EUmlxY3B5b3dBd3B1ejJ4K2ZXdnovRHRkZTlzbXN6eWd0Y1I2QzF3YmR6Qmw2T2xxNVdOWVk0b0dhdGhKTXJrVEV4MGpBUlNIQVZzKzVyWWtRTlhiK1FnZlBMc1E2Z1h5SW5zcmVRZm1wbTdSVkZZZkw4Nm4xZmlVT2tZdlNoa1VQeHZidWt6b3k2SzFpaE0xaG8zWHpXNkV2U2ZYQStkcGlXR2FXZCtkb1h6THptR3dLWUZMQ0FzUkFsUEJBaE1sQ0ZYVTd0QlVWUHI4SGdWY0pIV3ErRjAwcGxyK0RNVGRyUDR6dnhZMTFrTk1oeFQrU2VUR2crZDRWNUxRSml0eVVHSk5COFZGWnNqZ1lCWk0vSUkvWENUa2owcXlET3BGMkFWUTE3Q0lqVXAvRG5UMVVrTDVGNWdkaitzUzF3ZzFnRTNnaWdtNjBmQ1h6U25QWGJ5QVBiSVh2K0lEcEUxNlRoYUhJUzlza3lobG1NRTVGM2NmcUFLaHEyQzBFNVBIMWdZYVhhTFBEa1pHMEhESk9uS1dIcDUxSTB6NVNPdXg4ZTFXQXVaemRIUXJUa3A4VG1qWG9JK2xhMHdHWnN6dWJxYk8zaWZRNkEvVzd2VlNZc1YzbVIwSkt3a0tjNFdIaUJrbVI4STNDQ2dJODdvT0w0cXpUNVArUlVKQmVqRU9nQVBLOGhZUHphdE0rZUlUcDJJTzl5VFFtZXJvbVBSeHgxcXhBY3NpbGUvdWJTZUViY1dRR1lFQ2doY0xZMkh5S2pvZ2pIMjVoTXBqcFV2MU91Z2xpNGVoMmVSdzBPMzJiSmpreXVDZ056ZzB2emxZTVNpU3MwdW9vNE1HN2hNT2pDRWFYMXlGRTBuU3ZqQnp1VG5FcEs4Nlo4SW9xRkFJdWJ3OGtnOUFyRWFSRVdTWkkrakg0WGJwNmc5RTlFbkpUM29hUnpETitNVUpCUURIbjU2YThvVW1FQnVzT3hCcy9ONSt0SkViUGtBRkRqOFVHdk9zL0lXdmNTZ2xHQmh2UzcvRlRZZnBXR1lkRFk4ZlBBeFdTQTM1c1RDNHA0K0xtNEFhcUlvUGVRdGZ1Zks2SmgwWmh4bGJzVVhPU21YTmlmRDVaVEFreURvZmJiY2NseG5BOFdOQXF4Q2JSTnlraFh4UXBhRHc2N2ZYVVlic2lHMEtodHYyb2VJdmg4cmhRTVlPY0VBcVhHL2VJK3puZ09jNXl4cjhxODJJQU0xYy9GTEZPcGxxdTVlRlFYck1aekdjVkNqWWJMV0c1STRCVDFldVJybGJ4dE5PdE1pdERERWhMWElJeW5BQXZ1T0VXRTNYM05kQWZ0OTRWZ2FHNDJYSVF0MFpYNlBlQ0UvcVFGZTlySzZIeDdZVTUwS3ZIN2ZXNGZTK3E3S0tCSnhzZ2dCWDVwU0FHaDFqSXJWaDV6UTZ3M1JmYWFoQlhtL2FDYkNaVGpDVUZVVHlXWnFXOXA2Mk1qSlBYVnFPclBnTU80TnY3NEdrZitvd2Z0TlZCRFFuakZKcUhTdzE3cFh2aFdXNUtacWUvUTQ5Ti9VU1RDQVZXb1FYRklIQkhYWGUzRlByVURzdUdEbXRGL2hIS1RIcGVreGhpQU9QSStTSnE2UzZIRjRJOVlXemtCSlRvNDZpVU16V3A4UGlyL1JpZHVMeEtZc1Nrc1Y4dkxsT1F2aEdYMllsUjBPQmhCakMrdS9nRWN2WTBBcEs3WWs0MU54alBTUW5XRkhURjY2VXJqZ2V2QjhDdTVhK2wydllTUlB0dVZEbzczaGhkTVNIblVYN3RUanNWWkd4QWwvV3B0aU9JRVExZ25MMjltWDYvdFIxdG1sa1lqOFc0WCtDU2pXY1VER1kxTnBTL0M3aFNLcWlNTE0vbDJRbVNXWjczRGR6K2dpbzhCQ0VOWVBRNDZxbmt6d1hVYnF2Qmt4alVRc1dmWkZnYnVvM3JBZit3TjdqT085MCt5bng0UGkzTCswbllMMVNjaERVZ0FQNGdQVi83SWQxcSsxSFNobXVHa0lxV1JQZ3l4TUZxUDhIZmpUbmpYd1k1YlFmYkpjdDZPSXpLZ01Ib3RGL0hlMWVnc2F4SFNxRzZ3ZmRtUTV4OE55VEZGcUJjcDJpU293SFIzeWs1KzM2aEY3dlhBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiRklET18yXzAiLCJGSURPXzJfMV9QUkUiLCJGSURPXzJfMSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJsYXJnZUJsb2JLZXkiLCJjcmVkQmxvYiIsIm1pblBpbkxlbmd0aCJdLCJhYWd1aWQiOiJkZDg2YTJkYTg2YTA0Y2JlYjQ2MjRiZDMxZjU3YmM2ZiIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwidXYiOmZhbHNlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibGFyZ2VCbG9icyI6dHJ1ZSwiYmlvRW5yb2xsIjpmYWxzZSwidXNlclZlcmlmaWNhdGlvbk1nbXRQcmV2aWV3IjpmYWxzZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOmZhbHNlLCJhbHdheXNVdiI6dHJ1ZX0sIm1heE1zZ1NpemUiOjEyODAsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6OCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoxMjgsInRyYW5zcG9ydHMiOlsidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN30seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTh9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi0zNX1dLCJtYXhTZXJpYWxpemVkTGFyZ2VCbG9iQXJyYXkiOjQwOTYsIm1pblBJTkxlbmd0aCI6NCwiZmlybXdhcmVWZXJzaW9uIjozMjk0NzQsIm1heENyZWRCbG9iTGVuZ3RoIjozMiwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjEsInByZWZlcnJlZFBsYXRmb3JtVXZBdHRlbXB0cyI6MywidXZNb2RhbGl0eSI6MiwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjEwMH19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTAyLTAxIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NCwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZdWJpS2V5IEJpbyBGSURPIEVkaXRpb24iLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI1MDIwMTAwOSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTA4LTEyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NCwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZdWJpS2V5IEJpbyBGSURPIEVkaXRpb24iLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI0MDgxMjAwMCIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTA4LTEyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NH1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wMi0wNyJ9LHsiYWFpZCI6IjRlNGUjNDAwOSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFpZCI6IjRlNGUjNDAwOSIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJpT1MgUGFzc2NvZGUifSwiZGVzY3JpcHRpb24iOiJpT1MgUGFzc2NvZGUiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MjU2LCJwcm90b2NvbEZhbWlseSI6InVhZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9LHsibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfc3Vycm9nYXRlIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2ludGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjUsImJsb2NrU2xvd2Rvd24iOjYwfX1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInRlZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImF0dGFjaG1lbnRIaW50IjpbImludGVybmFsIl0sInRjRGlzcGxheSI6WyJhbnkiXSwidGNEaXNwbGF5Q29udGVudFR5cGUiOiJ0ZXh0L3BsYWluIiwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBRWdBQUFCSUNBWUFBQUJWN2JOSEFBQUFDWEJJV1hNQUFBc1NBQUFMRWdIUzNYNzhBQUFLVDJsRFExQlFhRzkwYjNOb2IzQWdTVU5ESUhCeWIyWnBiR1VBQUhqYW5WTm5WRlBwRmozMzN2UkNTNGlBbEV0dlVoVUlJRkpDaTRBVWtTWXFJUWtRU29naG9ka1ZVY0VSUlVVRUc4aWdpQU9Pam9DTUZWRXNESW9LMkFma0lhS09nNk9JaXNyNzRYdWphOWE4OStiTi9yWFhQdWVzODUyenp3ZkFDQXlXU0ROUk5ZQU1xVUllRWVDRHg4VEc0ZVF1UUlFS0pIQUFFQWl6WkNGei9TTUJBUGgrUER3cklzQUh2Z0FCZU5NTENBREFUWnZBTUJ5SC93L3FRcGxjQVlDRUFjQjBrVGhMQ0lBVUFFQjZqa0ttQUVCR0FZQ2RtQ1pUQUtBRUFHRExZMkxqQUZBdEFHQW5mK2JUQUlDZCtKbDdBUUJibENFVkFhQ1JBQ0FUWlloRUFHZzdBS3pQVm9wRkFGZ3dBQlJtUzhRNUFOZ3RBREJKVjJaSUFMQzNBTURPRUF1eUFBZ01BREJSaUlVcEFBUjdBR0RJSXlONEFJU1pBQlJHOGxjODhTdXVFT2NxQUFCNG1iSTh1U1E1UllGYkNDMXhCMWRYTGg0b3pra1hLeFEyWVFKaG1rQXV3bm1aR1RLQk5BL2c4OHdBQUtDUkZSSGdnL1A5ZU00T3JzN09ObzYyRGw4dDZyOEcveUppWXVQKzVjK3JjRUFBQU9GMGZ0SCtMQyt6R29BN0JvQnQvcUlsN2dSb1hndWdkZmVMWnJJUFFMVUFvT25hVi9OdytINDhQRVdoa0xuWjJlWGs1TmhLeEVKYlljcFhmZjVud2wvQVYvMXMrWDQ4L1BmMTRMN2lKSUV5WFlGSEJQamd3c3owVEtVY3o1SUpoR0xjNW85SC9MY0wvL3dkMHlMRVNXSzVXQ29VNDFFU2NZNUVtb3p6TXFVaWlVS1NLY1VsMHY5azR0OHMrd00rM3pVQXNHbytBWHVSTGFoZFl3UDJTeWNRV0hUQTR2Y0FBUEs3YjhIVUtBZ0RnR2lENGM5My8rOC8vVWVnSlFDQVprbVNjUUFBWGtRa0xsVEtzei9IQ0FBQVJLQ0JLckJCRy9UQkdDekFCaHpCQmR6QkMveGdOb1JDSk1UQ1FoQkNDbVNBSEhKZ0theUNRaWlHemJBZEttQXYxRUFkTk1CUmFJYVRjQTR1d2xXNERqMXdEL3BoQ0o3QktMeUJDUVJCeUFnVFlTSGFpQUZpaWxnampnZ1htWVg0SWNGSUJCS0xKQ0RKaUJSUklrdVJOVWd4VW9wVUlGVklIZkk5Y2dJNWgxeEd1cEU3eUFBeWd2eUd2RWN4bElHeVVUM1VETFZEdWFnM0dvUkdvZ3ZRWkhReG1vOFdvSnZRY3JRYVBZdzJvZWZRcTJnUDJvOCtROGN3d09nWUJ6UEViREF1eHNOQ3NUZ3NDWk5qeTdFaXJBeXJ4aHF3VnF3RHU0bjFZOCt4ZHdRU2dVWEFDVFlFZDBJZ1lSNUJTRmhNV0U3WVNLZ2dIQ1EwRWRvSk53a0RoRkhDSnlLVHFFdTBKcm9SK2NRWVlqSXhoMWhJTENQV0VvOFRMeEI3aUVQRU55UVNpVU15SjdtUUFrbXhwRlRTRXRKRzBtNVNJK2tzcVpzMFNCb2prOG5hWkd1eUJ6bVVMQ0FyeUlYa25lVEQ1RFBrRytRaDhsc0tuV0pBY2FUNFUrSW9Vc3BxU2hubEVPVTA1UVpsbURKQlZhT2FVdDJvb1ZRUk5ZOWFRcTJodGxLdlVZZW9FelIxbWpuTmd4WkpTNld0b3BYVEdtZ1hhUGRwcitoMHVoSGRsUjVPbDlCWDBzdnBSK2lYNkFQMGR3d05oaFdEeDRobktCbWJHQWNZWnhsM0dLK1lUS1laMDRzWngxUXdOekhybU9lWkQ1bHZWVmdxdGlwOEZaSEtDcFZLbFNhVkd5b3ZWS21xcHFyZXFndFY4MVhMVkkrcFhsTjlya1pWTTFQanFRblVscXRWcXAxUTYxTWJVMmVwTzZpSHFtZW9iMVEvcEg1Wi9Za0dXY05NdzA5RHBGR2dzVi9qdk1ZZ0MyTVpzM2dzSVdzTnE0WjFnVFhFSnJITjJYeDJLcnVZL1IyN2l6MnFxYUU1UXpOS00xZXpVdk9VWmo4SDQ1aHgrSngwVGdubktLZVg4MzZLM2hUdktlSXBHNlkwVExreFpWeHJxcGFYbGxpclNLdFJxMGZydlRhdTdhZWRwcjFGdTFuN2dRNUJ4MG9uWENkSFo0L09CWjNuVTlsVDNhY0tweFpOUFRyMXJpNnFhNlVib2J0RWQ3OXVwKzZZbnI1ZWdKNU1iNmZlZWIzbitoeDlMLzFVL1czNnAvVkhERmdHc3d3a0J0c016aGc4eFRWeGJ6d2RMOGZiOFZGRFhjTkFRNlZobFdHWDRZU1J1ZEU4bzlWR2pVWVBqR25HWE9NazQyM0diY2FqSmdZbUlTWkxUZXBON3BwU1RibW1LYVk3VER0TXg4M016YUxOMXBrMW16MHgxekxubStlYjE1dmZ0MkJhZUZvc3RxaTJ1R1ZKc3VSYXBsbnV0cnh1aFZvNVdhVllWVnBkczBhdG5hMGwxcnV0dTZjUnA3bE9rMDZybnRabnc3RHh0c20ycWJjWnNPWFlCdHV1dG0yMmZXRm5ZaGRudDhXdXcrNlR2Wk45dW4yTi9UMEhEWWZaRHFzZFdoMStjN1J5RkRwV090NmF6cHp1UDMzRjlKYnBMMmRZenhEUDJEUGp0aFBMS2NScG5WT2IwMGRuRjJlNWM0UHppSXVKUzRMTExwYytMcHNieHQzSXZlUktkUFZ4WGVGNjB2V2RtN09id3UybzI2L3VOdTVwN29mY244dzBueW1lV1ROejBNUElRK0JSNWRFL0M1K1ZNR3Zmckg1UFEwK0JaN1huSXk5akw1RlhyZGV3dDZWM3F2ZGg3eGMrOWo1eW4rTSs0enczM2pMZVdWL01OOEMzeUxmTFQ4TnZubCtGMzBOL0kvOWsvM3IvMFFDbmdDVUJad09KZ1VHQld3TDcrSHA4SWIrT1B6cmJaZmF5MmUxQmpLQzVRUlZCajRLdGd1WEJyU0ZveU95UXJTSDM1NWpPa2M1cERvVlFmdWpXMEFkaDVtR0x3MzRNSjRXSGhWZUdQNDV3aUZnYTBUR1hOWGZSM0VOejMwVDZSSlpFM3B0bk1VODVyeTFLTlNvK3FpNXFQTm8zdWpTNlA4WXVabG5NMVZpZFdFbHNTeHc1TGlxdU5tNXN2dC84N2ZPSDRwM2lDK043RjVndnlGMXdlYUhPd3ZTRnB4YXBMaElzT3BaQVRJaE9PSlR3UVJBcXFCYU1KZklUZHlXT0NubkNIY0puSWkvUk50R0kyRU5jS2g1TzhrZ3FUWHFTN0pHOE5Ya2t4VE9sTE9XNWhDZXBrTHhNRFV6ZG16cWVGcHAySUcweVBUcTlNWU9Ta1pCeFFxb2hUWk8yWitwbjVtWjJ5NnhsaGJMK3hXNkx0eThlbFFmSmE3T1FyQVZaTFFxMlFxYm9WRm9vMXlvSHNtZGxWMmEvelluS09aYXJuaXZON2N5enl0dVFONXp2bi8vdEVzSVM0WksycFlaTFZ5MGRXT2E5ckdvNXNqeHhlZHNLNHhVRks0WldCcXc4dUlxMkttM1ZUNnZ0VjVldWZyMG1lazFyZ1Y3QnlvTEJ0UUZyNnd0VkN1V0ZmZXZjMSsxZFQxZ3ZXZCsxWWZxR25ScytGWW1LcmhUYkY1Y1ZmOWdvM0hqbEc0ZHZ5citaM0pTMHFhdkV1V1RQWnRKbTZlYmVMWjViRHBhcWwrYVhEbTROMmRxMERkOVd0TzMxOWtYYkw1Zk5LTnU3ZzdaRHVhTy9QTGk4WmFmSnpzMDdQMVNrVlBSVStsUTI3dExkdFdIWCtHN1I3aHQ3dlBZMDdOWGJXN3ozL1Q3SnZ0dFZBVlZOMVdiVlpmdEorN1AzUDY2SnF1bjRsdnR0WGExT2JYSHR4d1BTQS8wSEl3NjIxN25VMVIzU1BWUlNqOVlyNjBjT3h4KysvcDN2ZHkwTk5nMVZqWnpHNGlOd1JIbms2ZmNKMy9jZURUcmFkb3g3ck9FSDB4OTJIV2NkTDJwQ212S2FScHRUbXZ0YllsdTZUOHcrMGRicTNucjhSOXNmRDV3MFBGbDVTdk5VeVduYTZZTFRrMmZ5ejR5ZGxaMTlmaTc1M0dEYm9yWjc1MlBPMzJvUGIrKzZFSFRoMGtYL2krYzd2RHZPWFBLNGRQS3kyK1VUVjdoWG1xODZYMjNxZE9vOC9wUFRUOGU3bkx1YXJybGNhN251ZXIyMWUyYjM2UnVlTjg3ZDlMMTU4UmIvMXRXZU9UM2R2Zk42Yi9mRjkvWGZGdDErY2lmOXpzdTcyWGNuN3EyOFQ3eGY5RUR0UWRsRDNZZlZQMXYrM05qdjNIOXF3SGVnODlIY1IvY0doWVBQL3BIMWp3OURCWStaajh1R0RZYnJuamcrT1RuaVAzTDk2ZnluUTg5a3p5YWVGLzZpL3N1dUZ4WXZmdmpWNjlmTzBaalJvWmZ5bDVPL2JYeWwvZXJBNnhtdjI4YkN4aDYreVhnek1WNzBWdnZ0d1hmY2R4M3ZvOThQVCtSOElIOG8vMmo1c2ZWVDBLZjdreG1Uay84RUE1anovR016TGRzQUFBQUVaMEZOUVFBQXNZNTgrMUdUQUFBQUlHTklVazBBQUhvbEFBQ0Fnd0FBK2Y4QUFJRHBBQUIxTUFBQTZtQUFBRHFZQUFBWGI1SmZ4VVlBQUFuK1NVUkJWSGphN0p4dmJGUDFHc2MvcDZkcjE2NFZ4MnhwdHhHWVlCdkZHNGphT08yY1d4UUNPSUlKbWZlRitnS05ST1VGMFVUdkZZbnh6NGd4YWpBR0hWN0NRalI3bzFFVFEveURpWkdNRi9KaW05MldzRG5IWGJOdUREUHB5a2IvMGZhNUwyVG5NdmFITXpncWhYNlRrenpuZDU2YzlEeDkvdjJlNS9mN0tVekhVbUFic0JHbzR2ckNmNEd2Z2Y4QVE3TXgvQk1ZQmVRNnYwYlB5MklhR29Gc1FUamFsVDB2RXhTZ0VnZ0JpeW5nUXB3R1ZxdkF2NEYxQlhuTWdBMUlLVUFYOEkrQ1BHWkZ0M0plbFVvTHNwZ1ZVVk5CQnZPaklLQkxRQVgrZGQ0aFhSRktTa3J3K1h5azAybFVWZVdXVzI0aG04MGlJdmg4UGpLWkRMbGNEci9mVHk2WDAraHNOa3NtazhIdjl3T1F5V1R3K1h5b3FrbzZuY2J2OTJNeW1VZ21rL2o5Zm9xS2lrZ21reHBQSXBIQTcvZGpzVmlJeCtNYVBURXhZWVI4a29ZSnFMNituaDkvL0pIKy9uNGNEZ2R0YlcyY09uV0tWQ3JGc1dQSEdCNGVKaGFMMGRIUndjVEVCR05qWTdTM3QvUDc3NzhUaVVUbzd1NG1uVTR6TWpKQ1oyY25WcXVWbnA0ZWVucDZVRldWOXZaMit2cjZLQ3NyNDZlZmZ1TDQ4ZU00SEE2T0hEbkN3TUFBSG8rSG8wZVAwdHZiUzNsNU9WOSsrYVVoQWpMTXhMTFpMRmFyRlJFaGs4bGd0Vm9CU0tmVDJuZzZuYWE0dUZnYm42S1R5U1RGeGNXWVRDWlNxWlJHWHppZVNDU3cyV3lZeldhU3lhUkd4K054alo3aUtTb3FNc3pFekVhOFJGRVUxcXhaQThDcVZhdTQ2YWFiQVBENWZLUlNLUUJ1dmZWVzR2RTRBQ3RYcmlRWURHbzg5OTkvUHdCVlZWWFUxTlQ4TVNsY3VwUzZ1am9BbGkxYnhnTVBQQUNBMSt1bHZyNGVnSXFLQ3RhdVhRdUF4K1BSZU54dU56VTFOWmhNLy8vL1RTWVRQVDA5akkyTlhWYkdlTmxwdWRsc2xvOC8vbGp5QVZ1MmJGbm85NTIrSWcweW04MGNQSGlRUng5OXRCRG1aNFEvVmMwNzRZaklYeU9nb3FLaWExNXpya2hBemMzTlBQYllZM24zc1ZOQllrRUJTTzljN1Bubm4yZlpzbVdZeldhMmJkdUcyV3pPT3dFZE9uU0kvdjUrRkVYaHZmZmVJeHdPWDNJdXBqdUs5ZlgxeWJXRW1wb2FYVkZNdHdaVlZGUmdzVmh3T0J4ODk5MTNlTDNldk5PZ1o1OTlsbSsvL1JhQWtaRVJMVWViVDROMDIwbGpZeU5MbHk3VmhKU1BXTDkrUFZWVlZhaXF5dnZ2djYvSHhQUW5pajA5UGRlVWlkMTc3NzI2VEV5M2dGd3VsM2k5WHZINWZESThQSnlYUW5ueXlTZkY3WGFMMStzVmk4VmliQ2I5OE1NUDQvVjZzVnF0bEpTVTVLV0pyVjI3bHNyS1NrU0VscFlXSXBHSWNTYjJ5eSsvRktMWWZLaXFxc0ptczFGU1VzSlhYMzJGeCtQSk93M2FzV01IaHc4ZlJsRVVCZ2NIU1NRU3hrV3hEUnMyVUZsWlNWRlJFWGE3UFM5TnJMYTJGcmZiamFJbzdOdTNqNkdoSWVOTXJKQW9YZ0pURHRyaGNIRDQ4T0VaaWVMQXdBQ2Zmdm9wbzZPaktJcnl0ODNXN1hZN3dXQ1Fob2FHR2MrZmVlWVp2dm5tR3hSRjRlVEprOFltaWc4KytDQkxsaXlodUxnWW0yMTZDVHNjRGxOWFY2YzdLdndWYUc1dTV1bW5uNTQyZHM4OTkyamwyZGJXVmtaR1J2NmFLUGJoaHg5ZWRRc1E3cjc3YmtOTVRMY0diZHk0RWJ2ZFRrbEpDVjk4OGNXMEtIYjI3Tm04Y05MUFBmY2MzMy8vUFNhVGlZR0JBV1ByUWJXMXRUUTBOTEIrL2ZvWkpuWmhjUnpBNlhTeWYvOStuRTdubk8vVHd3UHd5aXV2OE5CRER5MllaelkvR0FnRTJMeDVNNXMyYmFLMFZIKzNYWmVKRFEwTnphbXU3Nzc3cnNhM1o4OGVhV2xwa1V3bUl5MHRMYkpuejU0Wjc5TEQwOWpZS0FjT0hKQklKQ0kvL1BDRHRMYTJ5b29WSzNUelZGZFh6MnRpdGJXMXVreE10d1kxTkRRUURBWlp0MjRkdi8zMjI5eHVQeHBsNjlhdHFLcksxcTFiaVVhamw4VVRpVVRZdkhrekZSVVYxTmZYczN6NWNtS3gyQ1Y1eHNmSDUveHRPM2Z1SkJnTUVnd0c2ZXpzTkxZdjV2UDVjTHZkRkJjWHo5dVlLeXNyQXlDWHkyRXltYlQ3aGZJNG5VNnQrUWhRV2xvNjdYNHVucWxtNUZ5emdXZzBpcXFxREF3TTZHcFA2eGJRbTIrK3lZb1ZLeTdKTnp3OHpPdXZ2ODdPblR0cGFtcWExWUhyNFZFVWhiZmVlb3Nubm5pQ24zLyttZDdlM2htK1RnL1BoWGpxcWFjME9oUUtjZXJVS2VOODBLcFZxeVFRQ0VoZFhaMk1qbzdPNllNQXNkbHMwdFRVSkZhcmRjNzM2ZUVCWlB2MjdYTGZmZmN0bUdjMkgvVGlpeS9LSFhmY0lZRkFRQndPaDdGaGZzMmFOWnFKWGF6cUYvZWJFb2tFdTNidG12ZDllbmdBUHZqZ0EwTjQ0SS8yZHlxVlFsVlZJcEVJazVPVHhtblE0T0RnbkJIaG5YZmV1ZW9TeFR2dnZIUGVLSFlwclZ5d0JqVTJOckpvMFNKc05oc0hEaHpBNVhKcHo2cXJxNis2cERBUUNNd1llL1hWVjJscmEwTlJGTHE2dW95Tll1WGw1YmhjTHF4V0s2cXFUbnNXREFZNWVQQWd6YzNOZW1vc2Z6cXFxNnZadlh2M2pIRzMyODN5NWNzQmRBdklFQlBMUitoTkZIV1hPMWF2WG8zRDRhQ2twSVJQUHZrRXQ5dWRkd1d6bDE5K21TTkhqbWdhcENNUDBsL3VLQ3NybzdTMEZKdk5Oc1BFOGdVMzNuZ2pMcGNMVlZVNWZ2eTRzU1oyNHNTSmE4ckVESTlpanovK3VCYkY5dTNicHkyenl5ZnMzcjJidHJZMlZGV2x1N3ZiMkNqbWNEZzBBZjFkSmRVcmhkMXVaL0hpUC9ic0xHUjFpaTRUQzRmRDEyVVUweTNHUng1NVJOT2cvZnYzVDBzVTh3V3Z2ZllhUjQ4ZVJWRVVRcUdRc1NabXNWaXdXcTFZcmRhOE5UR0x4WUxGWWtGVjFYbG4vWVVvOW1kRXNSMDdkckI0OFdMc2RqdE5UVTJhczhzbjdOMjdsMlBIam1FMm0rbnQ3VFZXZzZZdVJWSHlkdHF4WWNPR0JTOGtYL0FxVjZmVHVTRDd2WnB3Y1RmRzBMYlA5UXJUNVVhRHZQell5OUQ4QlM5Mnp1VnloTU5oYllQY1ZNblZaclBoY3JrNGZmbzAyV3dXbDh2RitQZzRxVlNLSlV1V0VJMUdTYVZTZUR3ZVlyRVlpVVFDajhmRCtQZzRpVVFDcjlmTG1UTm5pTWZqZUR3ZUppY25tWmlZd092MU1qRXh3Wmt6WjZpb3FPRHMyYlBFWWpIS3k4dVpuSnhrZkh5Y3lzcEs0dkU0MFdpVWlvb0s0dkU0WTJOajA5SVJrOGwwMlIzZ0JUdHBoOE1oTjl4d2czWTVuVTdac21XTGlJaHMzNzVkTm0zYUpDSWlMNzMwa3RUWDE0dUl5QXN2dkNDQlFFQkVSTjU0NHcydHFMNXIxeTY1L2ZiYlJVVGs3YmZmbHJ2dXVrdEVSRDc2NkNPNTdiYmJSRVJrNzk2OVVsVlZKU0lpcmEydHNuTGxTaEVSYVdscEVZL0hJeUlpbjMzMm1keDg4ODBpSXZMNTU1K0wwK21jOWhzWExWb2taclA1ejkvdEl5S3pGcnVubHZrbmswbnRuenAzN3B6R20wcWx0UHJMdVhQbnB0RlREY0ZNSnFPTlo3TlpiVHlieldvTlFSSFJ4bk81bk5aMHZIQWNNR3BMcG5GT09oYUwwZDNkemRqWUdKT1RrM1IzZDNQeTVFbmk4VGhkWFYzYTlzeXVyaTZHaDRkSnBWS0VRaUZHUmtiSVpyT0VRaUdHaG9aSXA5T0VRaUVHQndmSlpyTjBkbllTRG9jUkVUbzZPdmoxMTEvSjVYSjBkSFJ3NHNRSlRDWVQ3ZTN0OVBmM2F6eDlmWDJHK1MxRDk4MmJUQ2JOTDEwSnJTaUsxa3JTUTEvY1RMeWNiVTl6VlJRTkRmTlRIM2lsOUlVZnFJZSsyQVg4N1dHK2tBY1ZNRTFBa1lJWTVrVEVCQndxeUdGT0hDb2NzRFIvQXIxNjZxWndSTmNjUjNSZGlNSWhiN01jOG5aeGNibHdUT0JGeHdUK2J3QzRFNDJMNlpDYmVnQUFBQUJKUlU1RXJrSmdnZz09In0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDE4LTA1LTE5In1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAxOC0wNS0xOSJ9LHsiYWFpZCI6IjAwNTIjMDAwMSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFpZCI6IjAwNTIjMDAwMSIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJpLVNwcmludCBpT1MgRmluZ2VyUHJpbnQgVUFGIEF1dGhlbnRpY2F0b3IifSwiZGVzY3JpcHRpb24iOiJpLVNwcmludCBpT1MgRmluZ2VyUHJpbnQgVUFGIEF1dGhlbnRpY2F0b3IiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJ1YWYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfc3Vycm9nYXRlIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJzb2Z0d2FyZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJzb2Z0d2FyZSJdLCJhdHRhY2htZW50SGludCI6WyJpbnRlcm5hbCJdLCJ0Y0Rpc3BsYXkiOlsiYW55Il0sInRjRGlzcGxheUNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbiIsInRjRGlzcGxheVBOR0NoYXJhY3RlcmlzdGljcyI6W3sid2lkdGgiOjMyMCwiaGVpZ2h0Ijo0ODAsImJpdERlcHRoIjoxNiwiY29sb3JUeXBlIjozLCJjb21wcmVzc2lvbiI6MCwiZmlsdGVyIjowLCJpbnRlcmxhY2UiOjB9XSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSzRBQUFBOUNBWUFBQUEwL2xJREFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFLVFdsRFExQlFhRzkwYjNOb2IzQWdTVU5ESUhCeWIyWnBiR1VBQUhqYW5WTjNXSlAzRmo3ZjkyVVBWa0xZOExHWGJJRUFJaU9zQ01nUVdhSVFrZ0JoaEJBU1FNV0ZpQXBXRkJVUm5FaFZ4SUxWQ2tpZGlPS2dLTGhuUVlxSVdvdFZYRGp1SDl5bnRYMTY3KzN0KzlmN3ZPZWM1L3pPZWM4UGdCRVNKcEhtb21vQU9WS0ZQRHJZSDQ5UFNNVEp2WUFDRlVqZ0JDQVE1c3ZDWndYRkFBRHdBM2w0Zm5Td1Avd0JyMjhBQWdCdzFTNGtFc2ZoLzRPNlVDWlhBQ0NSQU9BaUV1Y0xBWkJTQU1ndVZNZ1VBTWdZQUxCVHMyUUtBSlFBQUd4NWZFSWlBS29OQU96MFNUNEZBTmlwazl3WEFOaWlIS2tJQUkwQkFKa29SeVFDUUxzQVlGV0JVaXdDd01JQW9LeEFJaTRFd0s0QmdGbTJNa2NDZ0wwRkFIYU9XSkFQUUdBQWdKbENMTXdBSURnQ0FFTWVFODBESUV3RG9ERFN2K0NwWDNDRnVFZ0JBTURMbGMyWFM5SXpGTGlWMEJwMzh2RGc0aUhpd215eFFtRVhLUkJtQ2VRaW5KZWJJeE5JNXdOTXpnd0FBQnI1MGNIK09EK1E1K2JrNGVabTUyenY5TVdpL212d2J5SStJZkhmL3J5TUFnUUFFRTdQNzlwZjVlWFdBM0RIQWJCMXYydXBXd0RhVmdCbzMvbGRNOXNKb0ZvSzBIcjVpM2s0L0VBZW5xRlF5RHdkSEFvTEMrMGxZcUc5TU9PTFB2OHo0Vy9naTM3Mi9FQWUvdHQ2OEFCeG1rQ1pyY0NqZy8xeFlXNTJybEtPNThzRVFqRnU5K2NqL3NlRmYvMk9LZEhpTkxGY0xCV0s4VmlKdUZBaVRjZDV1VktSUkNISmxlSVM2WDh5OFIrVy9RbVRkdzBBcklaUHdFNjJCN1hMYk1CKzdnRUNpdzVZMG5ZQVFIN3pMWXdhQzVFQUVHYzBNbm4zQUFDVHYvbVBRQ3NCQU0yWHBPTUFBTHpvR0Z5b2xCZE14Z2dBQUVTZ2dTcXdRUWNNd1JTc3dBNmN3UjI4d0JjQ1lRWkVRQXdrd0R3UVFnYmtnQndLb1JpV1FSbFV3RHJZQkxXd0F4cWdFWnJoRUxUQk1UZ041K0FTWElIcmNCY0dZQmlld2hpOGhna0VRY2dJRTJFaE9vZ1JZbzdZSXM0SUY1bU9CQ0poU0RTU2dLUWc2WWdVVVNMRnlIS2tBcWxDYXBGZFNDUHlMWElVT1kxY1FQcVEyOGdnTW9yOGlyeEhNWlNCc2xFRDFBSjFRTG1vSHhxS3hxQnowWFEwRDEyQWxxSnIwUnEwSGoyQXRxS24wVXZvZFhRQWZZcU9ZNERSTVE1bWpObGhYSXlIUldDSldCb214eFpqNVZnMVZvODFZeDFZTjNZVkc4Q2VZZThJSkFLTGdCUHNDRjZFRU1Kc2dwQ1FSMWhNV0VPb0pld2p0Qks2Q0ZjSmc0UXh3aWNpazZoUHRDVjZFdm5FZUdJNnNaQllScXdtN2lFZUlaNGxYaWNPRTErVFNDUU95WkxrVGdvaEpaQXlTUXRKYTBqYlNDMmtVNlErMGhCcG5Fd202NUJ0eWQ3a0NMS0FyQ0NYa2JlUUQ1QlBrdnZKdytTM0ZEckZpT0pNQ2FJa1VxU1VFa28xWlQvbEJLV2ZNa0tab0twUnphbWUxQWlxaURxZldrbHRvSFpRTDFPSHFSTTBkWm9selpzV1E4dWtMYVBWMEpwcFoybjNhQy9wZExvSjNZTWVSWmZRbDlKcjZBZnA1K21EOUhjTURZWU5nOGRJWWlnWmF4bDdHYWNZdHhrdm1VeW1CZE9YbWNoVU1OY3lHNWxubUErWWIxVllLdllxZkJXUnloS1ZPcFZXbFg2VjU2cFVWWE5WUDlWNXFndFVxMVVQcTE1V2ZhWkdWYk5RNDZrSjFCYXIxYWtkVmJ1cE5xN09VbmRTajFEUFVWK2p2bC85Z3ZwakRiS0doVWFnaGtpalZHTzN4aG1OSVJiR01tWHhXRUxXY2xZRDZ5eHJtRTFpVzdMNTdFeDJCZnNiZGk5N1RGTkRjNnBtckdhUlpwM21jYzBCRHNheDRQQTUyWnhLemlIT0RjNTdMUU10UHkyeDFtcXRacTErclRmYWV0cSsybUx0Y3UwVzdldmE3M1Z3blVDZExKMzFPbTA2OTNVSnVqYTZVYnFGdXR0MXorbyswMlByZWVrSjljcjFEdW5kMFVmMWJmU2o5UmZxNzlidjBSODNNRFFJTnBBWmJERTRZL0RNa0dQb2E1aHB1Tkh3aE9Hb0VjdG91cEhFYUtQUlNhTW51Q2J1aDJmak5YZ1hQbWFzYnh4aXJEVGVaZHhyUEdGaWFUTGJwTVNreGVTK0tjMlVhNXBtdXRHMDAzVE16TWdzM0t6WXJNbnNqam5Wbkd1ZVliN1p2TnY4allXbFJaekZTb3MyaThlVzJwWjh5d1dXVFpiM3JKaFdQbFo1VnZWVzE2eEoxbHpyTE90dDFsZHNVQnRYbXd5Yk9wdkx0cWl0bTYzRWRwdHQzeFRpRkk4cDBpbjFVMjdhTWV6ODdBcnNtdXdHN1RuMllmWWw5bTMyengzTUhCSWQxanQwTzN4eWRIWE1kbXh3dk91azRUVERxY1NwdytsWFp4dG5vWE9kOHpVWHBrdVF5eEtYZHBjWFUyMm5pcWR1bjNyTGxlVWE3cnJTdGRQMW81dTdtOXl0MlczVTNjdzl4WDJyKzAwdW14dkpYY005NzBIMDhQZFk0bkhNNDUybm02ZkM4NURuTDE1MlhsbGUrNzBlVDdPY0pwN1dNRzNJMjhSYjRMM0xlMkE2UGoxbCtzN3BBejdHUGdLZmVwK0h2cWErSXQ4OXZpTisxbjZaZmdmOG52czcrc3Y5ai9pLzRYbnlGdkZPQldBQndRSGxBYjJCR29HekEyc0RId1NaQktVSE5RV05CYnNHTHd3K0ZVSU1DUTFaSDNLVGI4QVg4aHY1WXpQY1p5eWEwUlhLQ0owVldodjZNTXdtVEI3V0VZNkd6d2pmRUg1dnB2bE02Y3kyQ0lqZ1IyeUl1QjlwR1prWCtYMFVLU295cWk3cVViUlRkSEYwOXl6V3JPUlorMmU5anZHUHFZeTVPOXRxdG5KMlo2eHFiRkpzWSt5YnVJQzRxcmlCZUlmNFJmR1hFblFUSkFudGllVEUyTVE5aWVOekF1ZHNtak9jNUpwVWxuUmpydVhjb3JrWDV1bk95NTUzUEZrMVdaQjhPSVdZRXBleVArV0RJRUpRTHhoUDVhZHVUUjBUOG9TYmhVOUZ2cUtOb2xHeHQ3aEtQSkxtblZhVjlqamRPMzFEK21pR1QwWjF4ak1KVDFJcmVaRVprcmtqODAxV1JOYmVyTS9aY2RrdE9aU2NsSnlqVWcxcGxyUXIxekMzS0xkUFppc3JrdzNrZWVadHlodVRoOHIzNUNQNWMvUGJGV3lGVE5HanRGS3VVQTRXVEMrb0szaGJHRnQ0dUVpOVNGclVNOTltL3VyNUl3dUNGbnk5a0xCUXVMQ3oyTGg0V2ZIZ0lyOUZ1eFlqaTFNWGR5NHhYVks2WkhocDhOSjl5MmpMc3BiOVVPSllVbFh5YW5uYzhvNVNnOUtscFVNcmdsYzBsYW1VeWN0dXJ2UmF1V01WWVpWa1ZlOXFsOVZiVm44cUY1VmZySENzcUs3NHNFYTQ1dUpYVGwvVmZQVjViZHJhM2txM3l1M3JTT3VrNjI2czkxbS9yMHE5YWtIVjBJYndEYTBiOFkzbEcxOXRTdDUwb1hwcTlZN050TTNLelFNMVlUWHRXOHkyck52eW9UYWo5bnFkZjEzTFZ2MnRxN2UrMlNiYTFyL2RkM3Z6RG9NZEZUdmU3NVRzdkxVcmVGZHJ2VVY5OVc3UzdvTGRqeHBpRzdxLzVuN2R1RWQzVDhXZWozdWxld2YyUmUvcmFuUnZiTnl2djcreUNXMVNObzBlU0RwdzVadUFiOXFiN1pwM3RYQmFLZzdDUWVYQko5K21mSHZqVU9paHpzUGN3ODNmbVgrMzlRanJTSGtyMGpxL2Rhd3RvMjJnUGFHOTcraU1vNTBkWGgxSHZyZi9mdTh4NDJOMXh6V1BWNTZnblNnOThmbmtncFBqcDJTbm5wMU9QejNVbWR4NTkwejhtV3RkVVYyOVowUFBuajhYZE81TXQxLzN5ZlBlNTQ5ZDhMeHc5Q0wzWXRzbHQwdXRQYTQ5UjM1dy9lRklyMXR2NjJYM3krMVhQSzUwOUUzck85SHYwMy82YXNEVmM5ZjQxeTVkbjNtOTc4YnNHN2R1SnQwY3VDVzY5ZmgyOXUwWGR3cnVUTnhkZW85NHIveSsydjNxQi9vUDZuKzAvckZsd0czZytHREFZTS9EV1EvdkRnbUhudjZVLzlPSDRkSkh6RWZWSTBZampZK2RIeDhiRFJxOThtVE9rK0duc3FjVHo4cCtWdjk1NjNPcjU5Lzk0dnRMejFqODJQQUwrWXZQdjY1NXFmTnk3NnVwcnpySEk4Y2Z2TTU1UGZHbS9LM08yMzN2dU8rNjM4ZTlINWtvL0VEK1VQUFIrbVBIcDlCUDl6N25mUDc4TC9lRTgvc2wwcDh6QUFBQUJHZEJUVUVBQUxHT2ZQdFJrd0FBQUNCalNGSk5BQUI2SlFBQWdJTUFBUG4vQUFDQTZRQUFkVEFBQU9wZ0FBQTZtQUFBRjIrU1g4VkdBQUFhaGtsRVFWUjQydXlkZVpobFZYWDJmMnVmTzlTdHFpNnFlbTZtWm1qNG1vYkUrQkdSTVNKRENKTVFDWW9nQ2tIRktZSUdJUW9tT0FRa3dTaVJxSWdDUmlNRUdVUWtZQVFSWkFvTkNCL0k1TkRkQXFHYm5ydTZxdXZlZTg1ZTN4OTczYTVUcDg2dHVsVlVRenJQWGM5em4rNCt3ejU3ZVBkYTcxcHI3OTJpcXJTbExWdWJ1SFlYdEtVTjNMYTBwUTNjdHJTbERkeTJ0SUhibHJhMGdkdVd0clNCMjVZMmNOdlNsalp3MjlLV05uRGIwaGFnTU5aTkVaa0g5QUpKK2pLd0VsZ3ppZS90YnU5cnFpd0hQSi82eHZaQVYrcVpWeU1DYkFKK1A4NXowNEQ5Z0gyQVJjQk1vTlB1RFFIcmdkOEJqd01QQTc4ZTc4TmRVY1RsdSs1QmI2RkFzaFduMVFXS1R2VWRDa2NnN0FDVWdkaCttMFQ1R25CYjNydUs0T1hWZmYrRXB4K2ZPSENCbllHZkFzWE05Y2VCUDdGQmJWVStDRnhtWUVwLy8ycmdBNmxyWHdlT21NSytYd3djME9UZVRPQnM0TjNBL0JiTDJ3VGNDMXdPL1BoL3VXTHJVN2d4RVhrcm1ZRnJpQmZ1YmdiYzE1TXFQQUQ4c3dFMy9Yc1Q4UEVKZkdjNzRQTkFLVlBPZndPZnptajBVczczWHMydjFLUk9id2J1Qjg2ZkFHZ0JLamF4YmdXK0IvVGtQZVJSL2hjc1h6b1BlT3V3QmgzOW15TExPTFZVd2VTendPSEEzcG5ybndadU5ETS9ubnpSdEZ0V1BneXNHRFhtVXl2bG5HdTdHZkJtamZGZWJCT3ExRVRaQUp3Q3pBYmVsclUrWFM2aUpMSTFnemNDanNtNS9qendsUFZQWHdzMDdIVUQ3aEJ3cG1tbk5BaTZnUzhCeDQ3ei9oRm1pclB5VGVCSExkYnpDV0QxSkp4SkFaN0p1WDVKRTlEK0FyZ09lTXg0dkRlK3ZjakErWTRjMm5RNDhEZkFoU05tUnFXTDZZVUNnOTV2cmNDdEFETnlLT0pCd01iLzBjNVpTaDQxVS8rRnpQVmpnQk9CSHpSNXI5UEFuWlhmMm1DM0toOEY3cHVpTnU4Q0hKVnovUitCYzV1ODh4UndQZkJ0NFB2QTNKejYvWXVCSFlCRm5WMWpLT3F0UnVObUcvREwvd21nblFod0FmN0JCbnovbkFHL0UxaWI4ODQ1d0o0NVZPQkRUWjV2SnNVcGJQTWY1ZENISmNBRkxieDd0OUdibXpLT3dneVF3NEJyUFVwSkhIdDJkaE9QamliTUEvWUFkalF6V3dTcUZxSDVQZkJzRG5WcVZXWmEyVHNCMDYyTmlRRnREYkFNK00wRW9rRkpMbldmbk13SDlyS0lVWStWczhiNi9WZnBDYjhsZ0Z1M3lNQkRxVkJSbzFKL20rT3M3ZEZFZzExdWtZcUptdnlwa2prNTExNENhaTIrZjZ0UmlWMEJGWUdDSXNEdUlOUlFEdXJwWTJGbkY0UEo1ckUvRG5pL1JUZDZ4eWg3dFRuRVZ3RS9iTEUrK3dKbkFZY1kzeDVMbGh2bCt6WndlODc5czgyQ2VwdFUwM01zN0wwcHlpYkFWNXBZM0FoNEozQUdJY3pZM2FST0s0R2ZHM1c4YzBzQUYrQkpBK21sbWVzZk1STzZPSFh0bjR3ZnB1V1pGalhibHBROGdEWTAxZElXM28rQlB3TXFDRjRFdk9KaWRDTW84MHBsVHBvOWgzcmd0aFhnQ3VEVUZ1czJ3M3lHWTRFYkRPenJ4bmorSE9DaUNWaWt1Y0FKOXJ2U3JFZWN1cjh3eDZKbUozMTI0dCtVODl3aVFsanpUMXFvMHl5YkxDY0MzN1ZKdUhhcWdZdk5zS1BUWVJMcnVDOERCMXRIdk1zR04ydDZQZ2owVCtLYjlTa0U3bk5OQUhPYlRhcTdnQTNqbEpGcjJnb2luTFA5ZkxZcmRURGdFeVR3KzFPYmFMNlhyRSsySWNUTHMyRzd2ekRnSDlmRWJKOXNOQzByRzR4MkRKcG03REZxMHBGNTd2MkVwTW9YWDZWbHk3Nnpqem5kZVpadG1WR2hBckJEam9OOEtyREFOUHVhcVFadVloejFZVWJHTUE4QTNtdWE5NUtjOTc1a1ptWXlzcDN4bzhta3FKZG50T3lqeGlVWDVtaUptNEFYekFsNTJrSS9TNjJNbDdQYUwxSVFCQytLUXpocDFsd1dkWFl6a0NSSUtQLzlPUU4zbnBuRTFhbHczUzdBYWNBbk1tTnlOUEQySEZQY0RmeDk1dHBHbTNnM1dsMGJZTzh3a0p3TWZDckQ3ejhJZkJVWXNIOHZOaDRlMjBRNkxQUDhNcU5Ka3FJRHoyUTArdlU1b0wzVkZOc2pLY1UxMitqTmVlWjNOR1Evb3cwbk1rYU1XTWJhNVNzeTVnVDhzSG5TMllGNTJENmFEYVBzVDhnNmpTZTM1MmpyUWRPNms5RUloMXFIcGVWWTRKWUpsRmMxMEM2emdYb0F1S2NBeitHRVdJSkRkdWxPdTdOenVVSTEwSVRUamF1bTVVK0JuNnFBS0tnbHZ3VkFGVVRPelpuMFA4NEpPUjRQM0p5NWRwcXFmb2ZHZURxWHB3Ni9hRUJKTzF0N2tCK0xMMWw3MHhHVUt4bVo1Y3pLRlRuM0x4R0xJUG1NbXJhNjlXaEk1R1RiZUJ6d284bW1mTWVTcjV0S1B6TGpxTTNQNFpRZmJCRzBqQkZXbThySXlhMm1nUzVyd2FGcGFNVUd2OXZITE11UUl2OEpjZ25vQXpYdnVXWHRTajR4ZHdjMERGR2ZLTGhHZWtsQWtRSHZCSFdDV25LaXBna09vY3NWU2FxMUs4S2tsV25odGpqamV4S2dyVGJvTWl0b1BrMDBPSVpyVmZYR1FrZUo3aG5UVVZWV3JGNko5NTZpT0FvNG5GZkUrNGN5N1hJai9KQ0dvZ3JnNzh5WjJJVzhaNjJKTzhtb2VMMzhET0Z2YWdLeDZJaDFDMEtZdkFXVkRVWFA2YUJQbUdWdHlGa2FKcTJmYXVDcU9XV1A1SGlmYWJrWStLL1gwUm5iM0YzT09hSW9vbDZ2UTBnMDNHK1c0d1JDTm0waTBwR2diOFBMa2NDbkVMNTA5N3JWSE5YVHk4N2xEbXFxcXlObHN3S01IYWk0cTFINW1ucTVUMFdXS2F4SzFPTkY2TjF1SHZIZzBQcU5xOWNjb29Ddng2aFB4Q3pmQ0xQb1ZiOE4raTBSVVZjS2ZsbXBxNU9lbWRPSmlrWGlKTWF2ZW9YRWU1eUFFM284dXFlb25qMTJSeGtJdFpWTzFlSDRtSUtnUjRHa0ZZejMrTS9VeERpTEJxQm1BVlFMRHRMcW9uSzVJQmVuN3U2UHlHNU5mSkp4VjRlTmpWelZKVjFkWGVkMGQzZGZsYVVjSWtJY3h3OFBEZzVlbFBkdVYxY1h6clZNV1o5WDFRMlRwQXFibmNGaXNVaTVYS2EvdjUvMTY5ZFRyOWRmTU43M09lQ1BvaWphdDdlM2Q2OG9paFlCMjVxWkxEVXYyb0ZLVWFQNFVoVjV5WHU5N3FGaWtiMW56bUVnU1I0VWtSZ29KQkxZb0ZQZDNTbGZzWmRmQVY3b1JKY0k4cXlMb3VjcjA3ZjVWYkd2NXpmZSt3MjFhcFg2NEpERy9RTm9ISTlvdWpqbm8ybWRGRHNybENwbElvbUt6cm50SlVubWV1KzNCZWIxOXZYTlZhL3pSZGpSSVR0cGNOQzJwT3liZGFnVlBhWVNJZ3ZqRFhRc3NLZU1HRjd0S0pjcmUwOEt1QXNXTEJpM3RxVlM2ZXBpc1hpVWVjRnBXUzhpWjNydmE1T2RHS2tKY3FhSS9IelNLbGVFZXIzTzBOQVEzbnQ2ZTN2cDd1Nm1WcXRSclZZWkdocmFOREF3OENEdzRMeDU4eWdXaXpqbnBxbnFQTy85RHNCZXF2ckh3RUVpTWordGR3SWQ4RlFqK2F6My9wWm5ZZFB5bm1uc1dPNTR2cXBjZ3VyNUNuUUlJQW1wMVF1ekpkQ1V2VkdvcTZlZXhDRHlvZ3FMbzQ3U0RYU1VieXhPbTFhVmVLUzExTWhCeWVIUXd6MjhXL0g3a2ZqdFFTdGhQZ25UWnN6WWpIWFZMUkFOSHkwN1pPbVZCS1V3SVJNK2N0eFpNS21vUXFsVWFnVlVWS3ZWSzNLQWV4L3dlQjQ0SjNIc2t3QVVDb1ZKZ1RhT1k0YUdobEkyekJORkVaVktoYzdPVGxTVkRSczJzR0hEQnBJa3dUbUhxdmFyYXIvMy9ubFZ2Y3ZxM0tPcUo2bnFKVUJ2bzZkTFhxa1cySDBJLzRaYTRoKzZjdm52T1gvN0JTVENCVDVPWHBURW55WEt3aVR5TGF4UDFlMHRndkxub0dlTDZta1c0VWgzWUpmRy9odkpaazZwT1JBWUFmWTFGZzFJbU5vbG95T002RlFYcU9pY1NRRTNQZGdUak9YUkpQYjRxbmhxdlY2blhDNGpJaTJCWDBSSWtvU2hvU0ZVRlJIcHNCRFZOTFVDVk5VQnQvZjA5RHpXM2QyTmlDQWlEZkJ1Qm5valJockg4VGZqT040QVhPdHNiZDlnQVFwREN1SjNUVlFmS2d4VnFmV3ZoNDRPbkl1K2dmZlhvSDRmVWZZVjFUZGErR3MrMEFkU0dnUExid0orZ09wKzZkaXlLRitWUk4rZE05RExnQ2NSZmdNc0VlUWxZSW1QNUVXVVYxeWlwMjlCNEdhZDcwRVZ2Z3NNalUrYWMzc2dBdjNacElCclRzeGtnVHVsaHFrQjF2NytmdUk0bnRCN2xVcWx3YWRGVmYrVzBVc3Nad0NQaVFqcjFxMURWYWxVS2tSUnRGa0RPK2Z3M2xPdjExSFZud0pybmRMWGlKVlJGNlFRbFR1ZGNPeTA2VWppcVczY2lMZ0ljVzRJOWZkS1ZMaFhuRVBDUE9nVlpSNzRYUlRkVTFYM1IzZ0xvMVBDaTRBakZMVllydXdsSWVhYmxsVU85MUZCL2tNZC9UckNkWmZnR05WalZMVjNDMUtGWmFOQ3JlaUY0cUxsSVRpaXpRWUl2RWR6VnRHcFRESUJNUkdBYlBIUWdBaTFXbTBpazJsWUZXemFSTGxjQnRpa3FyOEMzcEo1NUNqZ1UwbVNWR3UxR3Q1N0JnWUdObXZjaGdaMnpqVTBmaThocXhVNk1RR2ZSTlJqWGJIdk5qMHNLSlU3YXVpYkVTbW9ldFVrRVdBSTd4K01vb0lYVjBCRTFrbUlEVC9qMGRzVWo2cmZSVDNYbWFaTnk1NnBKTVIrT1VyaEg5UkYveDZGY2kwK3JLZ0J3aWR4dytMczFaenllVkJGWERUWklYcUlrVm5DQ3ZCT2plUEx4RVc0S0w5Y255Um9Fb05xQ1pGQ0N1RUYwK0x4MWd6Y2dTUko4TjYzN05DTjRDeEpRclZhYldqZHUzS0ErMytBeTVJaytSQ2dEWnFRcFNPcVNxMVdJNHFpYzRFT0hWWXRST29INnlwUDdCaEZGSVNPbXZjM0J5cVFpbWVyMzcxZWo1ZWhpb2pEUldHYzFQWVRhRWpCM3BBRDNMUTY2c3RwNGxJZko4VFVRTUg3RUlYd1NSTGMrU2hDSXJlVGlCeWZTK204NG0yc1hWR0hZN1FUazlzSUt3alRYUGNjVmIxQnE3V1h5T2xQRVFFUnBCRDlvWWg4RDlXS0FWY0lHY3UzMDJTSndOWUMzQk5WZFU4bWwvS3RBemNsU2RKdlhQVmZnVThTTmtpbTVVekNaczR2VzN3M215dXZBRzlVMWJQak9ENHhjRW9CQWFkSzFmSERUZDYvdUNtcG80bXU4MG55bElSRjErbE0xSVhxL1JucXZmZXFEWklCSWpoQW9xaExSSTdPSVYxUHcyWmV2eklIVm9lcTZnOThiSnExWVlKRlFnWk5kUUhlZjE4MU45N2VsVGJUUGs1YWovYklpTWpRTWxXdUVkV1BwQjdaSHVGV1FoYnhpU2JGN0UzaXIxVVpqcU9ISktKY3doanJXcllXNFA2MXlLdWl6UGVsT21FWjhHbFYvV3JPYzIrVnNERnd1YW91WlhnWFJKK3E3aUFpTzZlMWhqZXpYRXAwaFMvSUJUV2ZVRTFpU0JMVSs2K3I2a0daOGs4RGRrWGtHZ2tEdVE2SUVKa0o3S1BldjFkSDV1MEIvbHRFZnBhS0hUeW9xbkZtN000QVhrRGt1eEwyOFlGSUQ3QzdxaDZQNnZ2VWo5ck4wSkJ2RWRiRVBncGNrc3FFdFFqZUVlUHlkNnA2S0NQWGdid1JlSkNRcmJ5SHNBRElBVHVxNmtHb3ZrMUhMd0M2Q3VlK05kWjN0eHFPKzJwb1JzUFVOakpucW5wNUhNZlRDZnZwOG1RdW8zYzVqTGF4SW5pUnBZVkUzNlZSWVVsSkhQT0xaZXB4aktxL3pnYnhqQXdsUFloaFRUeGczbk5IUGxnMEFUNkdTRnI3UDR2cU5TRHZ5NHpqRndqcm4xZVkydW9CNW95RW9XNEE2UXJmSE9IOExXS1NpL1hGaldqYmFsVGZycW8zQmZCSzJscTl3MzdqUlhML1RVUStwT05zZVNxTXh3MWJsTHh5SnJ1K29IT0tnZHZWb0JoeEhHOE9wd0dmUzVKa01XR1g3d0dUS0xmZjQ3NnZ6bjBPMDNKRkVXWkhSUkwxcUtxcThnRjhmUW5vSjdDMHVJd1IrOHlBOXptSVBvbHp0NFlNZ2lLK01SNzZjUTJSa0QvUGxObERhc1ZlcHJ6L0FQY3A4UDhFSENxanZ5czVVYUZwT1hRcGc3VUlpVVpnL2huMS9tRFIrSXNhNHN5RnNVSk1xVHF1QUxsRVhQSExyY1NqeGdTdWIzMmozM09tdlJvdk9NTFN3Y25JRllRdE1sTzF5N0RHOEJKQzRqaW1XTnpjMGJlcjZ1MnFlaUJoQ2VHK3Fyb2JZWTFzSmFXWllzS3l3VlVpOHBUVjd6YkUvWFowMkY4elRwWCt2ZlB4OTBUMUJJWERORVFJcG1mS3J3TWJYZENXand2ODJJdmNvczV0SEsyQUFkZ282TnVkOTZjb3ZNZm9SVjlLYTFhQkRTN1FvZ2NRdVVsRjdsRUI1K01Qb0hxeHdvSEd1K3N1VEx5N1pIUmM5ak1HWHJVeGZXeTBkb3ZCUmFoRWFSaXVRUDNwVHYxWFJQVkVoVU0wN0JqWmh1RmxrbFZnblFzMDVYWVZ1VllsZXFsbFRUOVdJSCs4VE5VRTFocHM5c3BIZUpTdmcwUlJSS2xVSW81amtpUVpFVDJ3djNlcjZrelRYSTJ0NlVQQVdoRjVSVVJxbStzdUJUUnlkQUZKdVlCM3dqOXV0d3NMSzUzMEp3bXhWL0Exbkk4UlZieENJcTdUaTV0dGcxZzBiYlFweElXVFZ5TFZXTVQ0c3l1Qml4Q2dFamtrcVRHVWVKc2Npdk1lcjFCM2hSbEdiVHB0d2c4S3JDejZlSldZT2ZjaWVJbHdQZ2F2MUYwMFRaRUtzS25nNDM3SHhJSUprUWdkRm4wWktsWW9SaVVVcFo0a0pFbE1VZXRFSWNUQmtOZEdIV2N6dk9wc0FGaGU4UEhhcU5GZWlaQ29qRXZSaitNZmVXRHFxVUlqZGRyQ1loeTg5eU0wZU9PZFJuejB0WklXd21vYm1jaE8xdFR5dnFHTmcxeSs1TmU4WmZwTUR1aWJ5YXhpbVUxYXo1cnNRUXYxVUJRaEVtSEllMHJPVVZRbHRqNTNJaFNjdzBVUmlTbzNyM2laTXA2RCs2YlRGVVVNSnZGSWJtbFdKUktoN0J3QzFQendNeVhuY0M2aTZ1TkdmZnJ6dlBZTzUzQUlRK3J4VFpSYVNSd2JmY3p0cTFmemNxM0drNE9Eek8vczRzalpjOW01MG9VVDRmZWJoaGhLWWlvaTdGTHBwQjlaWFJCWkhlcmxtenFBbFNnaUlhemRtTFRHYlVVcmlzZ0k4R1lCbXRXMHpiVGdaTURibUJCNTVUZVNCdGw2cWVwbXJkc0FjUVBJamV4Y3MvbzJuaG5XdUJFZWtLUk9rcW5IekZLWm8yZk41Y2pwZlhRN1NIeENBVWNzRGhWSEpNS0wxU0Z1Vy9VS3Y5eXdnWjBybmZ6WjlENzI3T3lrTTRwWWx5UXNyY2JnQ3R5M2RpVzN2ckljZ0owcUZkNDVaeTV2NmUzREp6SFZvTTAyYThCVjlScjNyRjNEeTlVcXp3ejBid2JmRGgwVjl1cWV4bkV6WjFCU0dMSzZLNkJ4V0FmVlZZaTRZODFxQmhQUG4wN3ZZNXVvUUd6aE5SR2g1ajJSQ092aW1BdVhMdUc1d2NGUmZiUnRSd2NGaEplclE5UTFMTEEvY2Zac2pwazFseGVxUTFTOVoyRlg5K2JEVWdvK0RxZitpRkNLaXZ4azdUcnVXYk9LbGJVUUtueGgwK0NXQVc2YU5vdzE2SzI4bndWZEhpZ2J3TW1iSUdPVm0zMDJiNzNEQ0ZEbVVKc3N1RnRwNzhLdUxzNmZ2eE1WRVo0YUdNQzVDSS9qc2Y3MTNMbG1WWG9uTUFCN2RIWXhyMXppeVlFQlZ0YWFiencrdEc4NnA4MmR5NXhpbWFxTFdGMnZjK2VhVmR5eGFpV3I2czNmZTFOUER6TUxSUlowZFRPdFVLVGlIQXM3eWt3dkZQamhxcFY4OWFVWEFaamYwY0dpemk1MjY2eFE4OHFMMVNwSHpwak90Q2ppODB1WDh1dE5FOXNYTUxOWVlrMWN4NnVHQ1RSckRnVVJmQkt6c0t1VHlEbXVlZmxsN2xpOXFqV2xseDJFVmdlRXNOR3RXV3l3ZzdDZTliWGdBRVhDMm9QWmhCMEtzKzFYbU9vUFpZSGRxa3d2RnBsWEtqZTd2UnRoRzlGK0V5MTN1M0taODNhY3p5bHp0MlZtY2RSS3ZuMEpYdjNoakgzVUZEdDFkSERzakpuamQ3UUlYZEdFVXNKZkkrd0tIMU42Q3dXMkxaY25oTTlYQTl3empDTmx0ek9YQ1h2TWZyUWx3Sk1qQjFvZ2Y2MzkxbG5XYXlJN0dnNWlkSnIxdFpKRjVxMGZNa1hsYlVQWThyTEpraTNyQ0puQzEwTnVJR3pHYk1nZk16cmRQaTRkbkdyZ1JwWUpXWktKUjM3QlBOdUZyMUhuSEdaVTdVVENmckEzMjU4ZEV5ampkNjFvaHExRXpyUCsyTjhVeDF4YTIxZjNXc2d2Q0llUnZLN0FoYkFkWkZOcVZ1MXRuZmFoaGdOSzJPSDVBR0hmMldjekNZWnNOa1VJVzdUL2I4UEtBaDhqN1BxOW01Q2ViQWJjWm9QelRzTHFyMDlZSGY0emxYRFloM0M0eVRyQytvUkxDU2xLQ09zV3ZtUFc0OVpNa21LZTFldG9HNHhMVGRPZFJUaHY0anJDRnZjdk1YSUwvekhBU1lTZEFZOGJQWmhKT1BteUoyWEo3aWVrU1U5SXZYdEVTQ0x3dVBYRHRrM2FlNldGbXBvdDdKNXZ6L3lTc0tQNjBNejlJd2dMWmg2ejltUFc2S3pNY3ljM0VpQ0VoZThmSSt6VXZaK3cyQWJEd1p2c201Y1N6cEw0Zi9iM0F3bm5iMlN6YVNmWm1HMVI0RUxJdjZzTjRtS0dqMWR5aEhNS1ZnTHZJUnpKK1NMaFRJRUdJYnVMa2NmdVJCYVkvcXNVLzFQQ0l1b3ZFSFlVWjBubW9mYk1jWVJBL042RVlIZERick15cjdPT3Z0NkFPdE40NEpXRUU4Y2ZCYjVoNW13dTRTeUZXK3lkSzIyQ0xzeE0wTldtcVE4bUhHU2gxdDZ6YlZCV1dCODA2dnd0ZStZQjRIMDI0UHZZdFZsV2pob0lUazNSaDZNdENmSTV3azZUeFFhc1BHSjRsSld4Mk1wTHl3d0x4ZjNVMnZVVlMzNDBqcEE5eGQ3OVp3UGhYMXJkejgwSm5kM1A4R21iKzZYYWZqN0RoOFc4WWttTStaWllldGtTVTk4dzRGNXM1WGFrTW5QcjA5Um1Td0lYNE4rdFkxZmFZR0Nkcm93OGh1Y05kdTE0Ky9jdGpEd2pLN0xHTnZibTcyTFBYelRHdHc5T2dYdWQvWGxENnY3TkJxQlN5cWxNQ0V2bTBwbS85T21SRnhzRlNzc1RESjhjMDJoSG1qdnVhdGMrazdwMnJGMXJBUDVmYkFLazEwSHN4L0NKTmg5SmdUaHRoWDVKT0NRanpXUHJqRHhOS0MybkE2dXNyTytrdFBtNWpENkY1MTRERmFZUnI4b3A3K09tZE5MeUUrRGFGSGZWbE1KcHlHOHlGT3puaEdNTk5nZGQ3TDNHQkR2Y1l1aHp4Z1B1VkRsUDV4bkh2RGpWd0lOTWE5MlhHZnpmV1lmL2tQek5VcG9aTk14RU5rM3dwYlRTNyt6OWFzWlpmSWpoMDJ6VzJhemVKaDAxeTJpdlB6Q2czMnozbExBWjhBOHk5ZnBKVGwzdlNGMTd0QkhsTWsxVEpxUTRsMmZhM05BMnR4aWxlWnB3S3MwM0dUNkpKckg3alhjS2hCTVE3ODdwazZ2TlFmc1l3MmUxdlJmNFEzdjNKbE1TYXBUSW04TFpsbkE0UjB2ME02TndsUHpERExQUHBSYzJQR3Q5ZEpLQitoVHptOFk5c1hLcWdMdmVnTEVpVTJFaGYvR0dwZ0NUWkVKYkhabkdhb3VackJkTlk1RHp2VTA1QVBOamREQ21tYTVQOWRHL3BzcHZ0R0ZndkFpYS9WbE50YmRaVzhvV0JUZ0ErRHN6cHp1a05QaVRScTBhMzc3S0prRXpXV252empLVGY0WnA2WFhXcmdhQXZtdnQ2bWpTRHpRSmEzWXljczF5Sy8yUlYvNDFESytQUGdUNDYxWUFOMVhBalhMS3U4dWNzZjFTV3ZjTmhBUGVHcHBxcldtTmRMaWtoOUdIM0xVU0QwNWFBRkNyL2ZDdzhkOGYwR1RyU0U2OU5NVXhGNmNjUnpJQWszSHF1TnljbXJLWi9Bc0lSeVRObklBMnpMWXR0dm8xanNlNkxZZXpsb3ovbnBxanhkZVlvOXhKU0ZsdlkwN3NieWM0VG9XYzl0OWtiVHpIbE45UFhrdmdpblYwT2dyK2dNMm1tODFycmhFT2FyczVWYm5yelhHN2dIRFkzSWZ0ZWtlcUk0U1I2MGViRGZpUFRKczFOTklwcHNHNmMwRGRtNm5yMDhhcmx4cWR1WUt3RzdqQmEyT2pJaGVaNW11YzFwMGRxTHJ4dkVIam1KZVpSbHVXMGxMVGNzYkFtVlU0ME9LY3Z6WFEvOXlldWRENjdDYmpsWFBORWYwb28zZlh2c3ZBdWRpVXdzbFc3OFRlUGRzaUV4ZFpQWTh4Wit5L3JPNDNFeFlWM1VrNGV2VUtVMEpxZjcvTityYVVvbGVOTnJpY21ISTZMUG1rUlF6dU03L2lRY0xLdEhzTUExOW4vSk15eHlhL0UzVE9LalpqOXNvQjFWbFdzZnZNQWNvdVdQNUxBL2tkRnZaNlR5b2sxV3Y4ZWM0NElibnp6T1ArZk9vM0t4VnlPeTVqSGM3SzFIVlhjekFmWnZnLzdOalJCdlFoNitBclVtWE9zVyttOTM4dHNBRS8xY3A2eERoL0plUHhuNXlwLzdibU5KV05ROTl1dk84eVJ1NzRQZEFpSTQrWVJ2eGtFKzI5RCtIRXhzZU41NTZhZVc2dVRjWUhyVzFYTS9MTXJvTnNnanhDT0htekViNThxNFVTZjJHVCttaUdENnBydENIN1B4Q2R5Y2dFMVR5TDR6NWluTHNoYjdPSmNkQnJGY2R0eTBqZ3FqbGliWm1Zbkd0Um5HS3J3QzIwKzJ6S3BHRW11OXBkMGJLOHdTenNYMWxjdS9XekI5b2FkOHFrMi9oYlg3c3JXcGJEak02Y1BsRjhTaHVnYmRtYXpWdGIydElHYmx2YTBnWnVXOXJTQm01YjJzQnRTMXRlUi9uL0F3Q080MUxCQ2p6MDh3QUFBQUJKUlU1RXJrSmdnZz09In0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMTgtMDgtMDEiLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IkZJRE8gTDEgQ2xpZW50L0F1dGhlbnRpY2F0b3IgQ29tYm8iLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlVBRjEwMDAyMDE4MDIyMTAwNCIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4zLjIiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMC4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDE4LTA4LTAxIn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAxOC0wOC0wMSJ9LHsiYWFpZCI6IjAwMjIjMDEwMCIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFpZCI6IjAwMjIjMDEwMCIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJNb3ZlbmRhIEVnb21ldCBGSURPIFVBRiBBbmRyb2lkIEZpbmdlcnByaW50IEF1dGhlbnRpY2F0b3IifSwiZGVzY3JpcHRpb24iOiJNb3ZlbmRhIEVnb21ldCBGSURPIFVBRiBBbmRyb2lkIEZpbmdlcnByaW50IEF1dGhlbnRpY2F0b3IiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJ1YWYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X2RlciJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfZGVyIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfc3Vycm9nYXRlIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJzb2Z0d2FyZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJzb2Z0d2FyZSJdLCJhdHRhY2htZW50SGludCI6WyJpbnRlcm5hbCJdLCJ0Y0Rpc3BsYXkiOlsiYW55Il0sInRjRGlzcGxheUNvbnRlbnRUeXBlIjoiaW1hZ2UvcG5nIiwidGNEaXNwbGF5UE5HQ2hhcmFjdGVyaXN0aWNzIjpbeyJ3aWR0aCI6MTE4MywiaGVpZ2h0IjoxNzM2LCJiaXREZXB0aCI6OCwiY29sb3JUeXBlIjoyLCJjb21wcmVzc2lvbiI6MCwiZmlsdGVyIjowLCJpbnRlcmxhY2UiOjB9LHsid2lkdGgiOjU5MiwiaGVpZ2h0Ijo4NjgsImJpdERlcHRoIjo4LCJjb2xvclR5cGUiOjIsImNvbXByZXNzaW9uIjowLCJmaWx0ZXIiOjAsImludGVybGFjZSI6MH0seyJ3aWR0aCI6ODQ1LCJoZWlnaHQiOjEyNDAsImJpdERlcHRoIjo4LCJjb2xvclR5cGUiOjIsImNvbXByZXNzaW9uIjowLCJmaWx0ZXIiOjAsImludGVybGFjZSI6MH1dLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOltdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFNZ0FBQURJQ0FJQUFBQWlPam5KQUFBQUJHZEJUVUVBQUxHUEMveGhCUUFBQUNCalNGSk5BQUI2SmdBQWdJUUFBUG9BQUFDQTZBQUFkVEFBQU9wZ0FBQTZtQUFBRjNDY3VsRThBQUFBQm1KTFIwUUEvd0QvQVArZ3ZhZVRBQUFBQjNSSlRVVUg0Z01CRFNJM2Y1Tjk0QUFBR2VGSlJFRlVlRjd0M1gxd1ZOWGRCL0J6enQyYmZjbHVTRWdJRXBKTkVDWFFJQVJDVUxRKytGYW5pcFNxcmJhV2NiUlRIS3N6OW8rK3pmU2ZwNTNwMDMvYXB4MW0ybWZHZ3ZXbHFIV3FkaXJGbDZLV0NpS1FoSkFJUWhCSXNra3c3MitiM2J1Nzk1N3plLzdZWk4yRTdONlh2V2V6YTg5bm5NNDBuSnZzN3YzdXVlZWVlMTR3QUNCQnNCdlJLeUFJVm9oZ0NWeUlZQWxjaUdBSlhJaGdDVnlJWUFsY2lHQUpYSWhnQ1Z5SVlBbGNpR0FKWEloZ0NWeUlZQWxjaUdBSlhJaGdDVnlJWUFsY2lHQUpYSWhnQ1Z5SVlBbGNpR0FKWEloZ0NWeUlZQWxjaUdBSlhJaGdDVnlJWUFsY2lHQUpYSWhnQ1Z4OElZSWxWZ25JUFE2OUFqbVAwdGloUTZCcDhzYU5wS3dNWWF4M2dKQU5lUjhzTmpvYU9YQ0E5ZmZIRGg1MGJOeFljTU1OMG9vVklsNExMdStEcGJXM3M4RkJ4Qmp0NmFHOXZlclJvODRkTzV5MzNvb2NlZi9XOGxwK3Q3RWdISTZkT0lGVUZXR01DRUVZczZHaHlFc3ZSZDk2QzFSVjcyaUJvL3dPRnIxNGtWNjRNT3ZDUndnb1N1VFZWNk92dlFhUlNPcERCYjd5T1ZpTXFTMHRNRFUxdDBXRk1VU2prUU1ISW4vNUN3U0RLUTRXK01yallMSEJRYld0YmY1Mk9zWklWYVAvL0tleWJ4OGJHNXVuZ01CWkhnZExqVGZiVTkwQVlvd0FZaDk4b1B6cFQyeG9hUDR5QWpmNUdpd0loZFFUSjVDbTZSVkVhbk56ZU85ZTJ0dXJWMUN3VTc0R1M3dHdnVjY2WkxDL1NqdDFTdG16aDE2NnBGZFFzRTErQm90U3Rha0pRaUdEd1VLRWFPZk9oWjkrV2p0N1ZxK29ZSSs4REJZYkdORGEyNDJtS280UTJ0MGQvdU1mMVpNbjlZb0tOc2pMWUttblRySGhZWFBCUWdoaHpDNWZWcDU5VnYzb295L2FjMnRLWVhJU3BxYjB5bVZQL2ozM2dLa3B0YWtKVVlxSStXOEZJV3h3TVB6Y2MrNW90T0RtbTVFazZSMlEyelNOZG5WcEZ5L1N6azdhM1MydlgrOTY0QUVySHdzSCtSY3NyYU9EZG5XWnJxNFNDSUdKQ2VYUGY0YXBLZWRYdjVxL2p4VFowRkQwN2JkalI0NUFNSWcwRFFGZ2x3c2lFZXp4NkIyYURmbjJzV3FhMnRRRTRYQkczMHVNSVJTS3ZQb3FLSXB6KzNic2N1a2RrR00wVFcxdGpmejk3L1RpUlFTQU1FYVNoQUJZZno4Ykc1TkVzQ3lnL2YzYW1UUFdxNnNFakNFU2lienhCa1Nqcm52dnhZV0ZlZ2ZrQ3RiZkgzM3JyZGlSSXpBMUZYL3VQdjBQR0VNb3hBSUJhZm55dEw4Z1MvSXNXRnByS3hzWnNTRllhT2F4ejl0dlF5amsvdmEzY1ZHUjNnRUxUVlZqVFUzUi9mdHBaeWRDNk1vNkc2SlIydDB0YjlreXo3RlpsMC9CZ3NsSjY4MzJlV0dNTkMzMndRZWdLTzZkTzBsWm1kNEJDNGIxOTBjUEhJaDkrQ0dFUW1uZVBnMEVJQkxKaFl0N1BnVkxPM2VPZG5mYlUxMGxZSXdZVTQ4ZFE2cnEvczUzU0VXRjNnRlpwMWRSZlE1ajJ0Y0h3YUFJbGhtYXBqWTNReVJpVzNXVkRHTzFwUVhDWWZjamowalYxWHFsczhkZ1JaVUFrNVAwOG1XeVpJbGVRZTcwWDJ1T29IMTkydW5UTmxkWHlURFd6cDROUC8yMDF0R2hWelFyVkRWMjlHaG85Kzdvd1lORzc0SXhCa1ZoZ1lCZXVXd3c4SEp6ZzlyYXlzYkdPQVlMSVlReHZYaFIyYnRYUFhWS3J5aGZyTDlmZWVFRlplL2U2UWZ0eHQ4MVk3UzdHK1hBc096OENCWWJIMWVibWhCamVnVXpSZ2dOQkpSbm5sR2JteGZtc1krRmlpb1p4clNyaTRWQ2V1VzR5NDgyRmoxN2x2WDJtdmppWm9JUU5qUVUzcnZYSFFvVjNIeXo2Vk9iQWJNdHFubGd6TWJIMmNBQUtTN1dLOHBYSGdRTFlyRllVeE92WnZ1OE1JYnhjV1hmUGxBVTV4MTNaT0d4RDBTajZ2SGowVGZmcEYxZENLVzk5VXNQWTFBVUdnZzRhbXYxaXZMRi9TUExIT3ZybzJmUFpxbTZTc0FZZ3NISUs2OUFKT0s4Nnk3c2RPb2RZQjN0NjR2dTM2OGVPd2FLWWoxU0NhcEtBd0hFbUEyL0tnTjVFQ3oxNUVrMlBwN3RZS0hwYjMvazlkY2hISGJkZXk5MnUvVU9NQTJpVWZYWXNlaisvZE1qcDIySkFzWXNFSUJ3R0h1OWVrVTV5dlZnc2JFeHRibDV3YjUvR0tOWUxQcldXeEFPdXg5OEVQdDhlZ2VZWUhORmxZQXhIUmhnSXlPU0NGWWEydW5UdExmWCt1Y2V2N1BMcExiREdLbHE3UDMzVVRUcSt0YTNTR21wM2dINnVGUlVDUmhES0VSN2V4ZTJwemVuZ3dXeG1OcmNqR0l4aXg4OWdGUlpDWXFTNlhQcitFeXlJMGRBVWR3UFAwekt5L1VPU0lkWFJaVXNGcU5kWGVpbW0vVEtjWlRUd1dLQmdIYnVuTVZNQUdDbjAzbnZ2ZGp0VnA1L25nME1XUHc5U2RUbVpnaUgzWTgrS2xWVjZaV2RCOStLYWpZYUNJQ2k4R2dYR3BUVHdWS2JtMkZpd21JZ0FNank1WTY2T2xKY2pKMU81Zm5uYVhkM3B1Y1NZKzNNR1dYUEh0Zk9uWTVWcS9SS3o1S05paW9CWTNiNU1reE9MbUN3T0wvRERMRGhZZlhrU2V2ZDM0VEltemJGK3drZGRYWHVYYnNjdGJVMjlOMFRvblYwUlBidGcvRnh2YUxUSUJxTi9mdmY0ZC85TG5ib1VOWjY0eUFZWE5nNXV0bDRrOVpvWjg3UXk1Y3RuZ1lBVWxJaU56UWtmdUM0OWxyM3JsMk9kZXZTSEdTQzI0MEtDdlFLSVlRUTdlcFM5dTVWbm4yVzl2U1llK3FYQ1l3aEVxRUwralRhMG1uakR5SVJ0YW5KK3NOVUFNZmF0WE1HNlVwVlZaN0hIcE0zYlVwMWtGR3lYTEI1cys2Y0JWQ1U2THZ2aG5idmpoMCtuTFdLNm5NQXRMc2JZakc5Y3J6a2FCdUxkbmRySFIwV3Y5OEEyT1dTTjIyNjhsRU1XYkxFL2QzdjRzTEMyT0hEaUZJcnY1OHhhZmx5M1pxUGRuVkY5KytQTlRXaGFEVGJrWXJEbVBYMlFpaUVqZFdzdGx1STk2d0xRRzFwZ1dEUXlvbEhDQUVRdjkreGV2VzgvMGhLU3R3N2R6cnZ2QlBKc3BVR0hNYU8rQ3E2cVVFNHJMejhjdXpJRWVzZEpYTlllSjBJc2JFeDl0bG5lcVY0c2VOdDI0ME5EMnNaTjl2VFRJN0FYcS9yd1FkZDk5eURYUzV6ZndVQSszeHlRMFA2eEdOWkpsN3Y5TVNzREFFZ2hMRGJiVHFnTTArajljcnhZdkxsWm9YVzNrNzcrMDEvbEhFQXBLeE0zcmd4ZlNuc2NybnV1OC8xalcvZ3drSVQyUUp3MU5icTkyakxzbFJUWS9IMUoyTU1PNTBGWC82eTY2R0hzTnR0NG5YR2FScnQ2a0tVNnBYakl1ZmFXS0FvMDgxMmF5Y0d3RkZYSnhtWkV5SEx6cnZ1d2w2djh2TExNRDV1Nk0vSnN0ellhR1NxQXFtc3hHNDNLSXJGU2dzQUlTVDUvYzV0MitRdFcxQWtFbnZuSFdwMmFRYU1hVThQaE1QMlB1STBLT2VDUmJ1NnREbnIxUm9IZ0QwZXViSFI2S0lNa2xTd2RTdDJPcFdYWG1LRGd6clpZa3p5K3gxcjE2WXJNME5hdmh6N2ZLQW9lZ1hud3hqMmVPVHJyM2R1M3g2L3NRVkNpTjlQQXdHajd5c09Zelk4eklhSEpSRXNCS0EyTlVFd2FLait1QktBVkYxdHJrOGNZM25MRnVSeVJWNThrZmIwcFB1N0dNc2JOeHA4Q0kxOVBsSlJZZm81VXJ5aXV2cHE1L2J0OHFaTmlSczZMTXVTMzYrYS9VemlUNk43ZXFRVksvU0syaSszZ3NVR0I5VlRwOHlkakdTU0pEYzBXS2o1NVEwYnNOdXRQUGRjeXVWR0FQQ2lSY2s5cnVsaHQxdXFxdEphVy9VS0ptRU1lNzBGTjk3bzNMYU5YSFhWbkgrVS9QNzRtaC9tUHB4WWJLSGE3eWEvQkp5cHAwNlovcFluQUpDeU1vZGVzejBWeCtyVm51OS8zN0ZtemZ4dFpBREg2dFhFNzUvbm4xS1FhbW9NOXM1UFYxVFhYdXQ1L0hIM3d3OWZtU28wYzIyOTh1YzZNS2FkblJBTzY1V3pYdzRGQzhKaHRhWEZ5SHExOHdOd3JGc256WGRXREpLcXF6Mjdkc2tORGZOa3krbVVOMjgyMWRrb1ZWWWF1dVZrREJjVk9lKyt1L0FIUDVBYkc1RXN6MXNLRnhXUjVjdjFmOXNjR0xQUFBvT0pDYjF5OXN1aFlOR0xGK25GaTVhcksxeFlhS0xabmdLcHFIQS8rcWg4NDQzeE1WalRQMlZNcXF4MDFOV2xQWFF1VWxvcWxaZW5pd0lBd3RpeFpvM25pU2ZjRHoyVWZ2b3lkcnNsdjk5MHNCQ0tON1AwU3Rrdlo0TEZtTnJjUE04MkV3WUJTRFUxam11dTBTdW5qNVNWZVI1NXBDQyt6VlA4UkJJaU56U1luVkNGM1c1U1daa3lDb3poNG1MWGpoMmVwNTZTNit1TmZCK2s2bXBrb0tkakZvd2hHbDJRWmxhdU5ONVpmMyttemZiR1JydVd1Y0pGUmU2ZE8zRmhZZlR0dDFFMFNoWXYxdTF4bllja1NYNy81K2xNQUVDRU9OYXRjKzNZNGZqU2w0emYvMHArUC9aNHdPeThFZ0FhQ0VBMHluV2kwWlZ5SlZocVd4c2JHakwza1NVQWtLVkw1ZnA2dlhJbVlMZmJkZi85Mk9PSi91MXYwdXJWeE5KcVpwTGZqOTN1V2N1R00wYkt5Z3J1dU1ONTIyMTQwYUswUjg5RlNrcWtwVXMxcytzTVlFeDdlMkZxNmo4eFdCQUtaYlR3RllCY1gwK1dMdFVyWnc1Mk9sM2J0cEdpSWxKYWFxclpua0NXTGNPTEZrRjh3anNBY2pqaytucm4xNy91V0xYS1hEZ1FRZ2hoajRmNC9jajhVdlV3UHM0dVh6YllBMmVYbkFpV2R1R0M5ZlZxQWJEWEt6YzBXQXhsZXJKY2NOdHRsc2VkNHNKQ3Fhb3F2amdBV2JyVStaV3ZGTnh5aTVWZWd6aENKTDhmeWJLNTE1T1lHMzNkZFhwRjdaUUR3V0pzZXBzSmE4a0FrRmF1bEZhdTFDdVhBV3N2RENGY1VDQlZWYWt0TGZMR2phNGRPekova2RQWFZyTzNPSlRTN202a2FWbFlLeUFoZTM4cEZYcjVzdWx0SnBJNUhQS21UYnJqT1JlS282N09VMUlpYjlsaXl5c2tTNWVTNG1KcWRxUWF4alErTnpxTDY2eGEvQzdhU0d0dHRiTE5SQndBdWVvcWU1dnQ5bktzWGwxdysrMjJwQW9oUkFvTHBlcHEwNzFaR0xQUjBTenZyYmZBd1lKZ1VHMXBzVDVtQ0VCZXZ6NFhWa1pNeWRvWEpoVlpKbjYvNlV0ei9HbDBmQjJiYkRINUV1Mm1uVDl2ZmIzYStIak94a2FMaCtjbnFhYkd5cUEvVmFVOVBhYVB5c0NDdHJFeTNHWUN3SEhOTlZKTmpWNDVRMFpIUjg5MW5BTUd4Y1hGcGFXbFJVVkZIcHV1WC9hU0tpcHdVWkhwa1Y0WTArNXVVQlM3THNxNkZqSll0SzlQKy9oajYvV053eUUzTnRvMTJiZWpvK05Ydi9wVkpCS1JaZG5qOFZSWFYyK28zM0RUVFRkZGZmWFZlb2RtRmZiNXBPWExXWCsvdWM4TjR5eHZpTEtRd1ZKYlc5bm9xTGtQS0NIK1lGaHZHcFp4bEZKRlVSUkZRUWlOVDR6MzlmVWRQMzc4d0pzSHZ2bU5iOTV6enozTzdIWmJwNEZkTHNudlYxdGE5QXJPbHZVTlVTeGRnK3dBazVOcVM0dTV2cjVrR0RzMmJMQjNMd21NY2Z4L0NTYVNKQ0dFdXJ1Ny8vQi9mM2oxdFZlWjVkZkpBYW1xUXVhREh0OFFSYStVYlJZc1dOcTVjeXdRc0ZoZEdadUdaUW9BVUVvWlk1RFV3aVdFS0lyeXlpdXZuRFgvSUdXT1dDdzJOajQyTkRUVTA5TVREQWIxaXFjajFkUVFJeU85cmhEZkVFV3ZsRDBXNkZLb3FobHRNMkZ3R3BZWmZyLy8vdnZ1UDlkeDd1elpzNHFpNEpuSUVrS0dob2JlZi8vOU5XdldFRXV2ZG1CZzRQRGh3MjN0YlQyQm5vbkpDWWZEOGNNZi92Q0c2Mi9RT3k0bFVseE1saTQxM1lySTdvWW9DeE1zMnR1YjBUWVRocWRoR1ZkZFhmM2trMDlPVFUwZFBIanc2VDgrSFF3R2NkTExhMnR2Q3dhRGkweU9SMEFJSGYzbzZEUFBQTlBSMGFGcFd2d1hlandlVGJVNlNoWWhORFBvVC92a0U3MkNjMlZ6UXhRclg4SE1xUzB0MXJlWmlLK2VZR3dhbGlrWVk1L1A5N1d2ZlczcmYyMU52aUJpakFjR0JrWkhSOU1jTzY5UFAvMTA5KzdkWjg2Y0FRQkprdUlWSGdDQSthdllMSVJJMWRXcEJqR25sTjBOVVJZZ1dHeDhYRDE1TXBObXUvRnBXQlk0SEk0Tkd6WVV6QjRuRTQxR2gwZUdVeDB5THdCNDk5MTNBNEdBTkRNNkZBQktpa3ZXcmwyN3VIUngrbU4xRWI4ZmV6eW1tMWxaM0JCbEFTNkY5T3haMXRkbnNib3lPUTNMR3AvUEo4dXlxcXFKcXlGakxCcUpwajlxam1BdzJIcnE4K2xmQUxCMjdkb252di9FeXBVck0rOTZsY3JMU1drcG5adzA5ekhPYkloaWRwaTFCZG11c1NBV2k1MDRZWHArWElMNWFWZ0xaV0ppWW1CZ0lCNU5BSEM1WEE4ODhFQjlmYjNQNTVNTWpIQlBEeGNXU21rRzFLY3lzeUdLWGprYlpEdFlMQkRRUHZuRVlxb1FRZ1VGeVZPRWM5bFVhRXBOdXVoNHZkN2FWZlp0UStKd1NEVTFScVpnekpMRkpXaXlIU3kxcGNYNmVyWHgzbllPelhZdVp0Y21FcEZjdHQ3R3hnZjltYTYwRWh1aWNKYlZZTEd4TWJXMTFmUm5rUkJmcjdha1JLOWNMZ0prOVYyblFDb3FyQXpjbTlrUVJhOWNwcklhTE8zMGFkclhaN2xUbEJRWFc1bUc5UVVWZnhwdCtsczZzeUdLWHJsTVdUckhsa0EwT3IzTmhEVUEwcG8xMXFaaG1lVndPTEMxaTNWcTl2OUNwMU95Y0JNenN5R0tYcmxNWlM5WXRLdExzN3c3SEFCMnVRb2FHN1BUYkM4cUtwSm5kejh5eGxTejNUK3ozNmltYVdHN0wwQ1MzMjlsdG1COFF4VE9zaFdzK0hxMVp2dGRFZ0JJWmFXMFpvMWVPWHZFKzdFUy94ZGpISTFHKy9yNjBoeHlKYXJSNUI3MmNEamMyZFdacHJ3RnhPODN0TzdJRmVJYm91aVZ5a2lXZ3NWR1JyUU1tKzJOalZubzFvc3JMaTVldG14WmNpd1lZOGRQSEo4d3MyeEwvMEIvWkdZb0FjWlkwelRGN25OSlNrcElSWVhwVDNWbVF4UzljaG5KVXJDME0yZm9aNTlaYjdhWGxNZ2JOdWlWczQzWDYxMi9ibjN5VHdnaDdlM3RML3o1aGFHaElTUFhSRVZSUHZ6d3cwZ2trdWdnOVhxOS9pcnpUYUswcHBlZ01TOExHNkpZT3RNbVFTU2lIajl1L1JIVmZOdE1jSVV4dnZYV1d5dVdWU1NQNzFOVjlhOS8vZXVQZnZ5ajMvLys5MU9wMTVrTkJvUEhqaDNidlh2M29VT0hFaytkRVVLM2JMM2xHanNXdzVrRjQrbTUwYVprWlVPVWJBU0xkblpxNTg5YmJsMmwybWFDcTlyYTJ1OTk3M3RsWldXSkN5TEdtRkxhMGRIeHIwUC9TdE1NUC9QSm1WLyt6eS9mMlA5R05EcjliTEd3c0hEN1Bkc2ZlZVFSSHVPYkpXdFBvL2x2aU1JL1dJbjFhcTBHUzZxdVRyWE5CRDhZNDd2dXV1dkhQL3B4WldYbG5ER2xoSkEwZlFlYU90MldTZ3gwM3JwMTY1TlBQcm1Fenlnb3NtUUpXYnpZZExCbU5rVFJLMmNkOTJDeDRXR3RyVTJ2VkdyeGhhOHNkREZuYkdobzZFVFRpYkd4c2VRZnhrT1dwaHNkQUlCOVB1SUtBSTRlUGZybVcyOXFscGZBVEF0N1BOWlcrdU85SVFyM1lHbnQ3WFJnd0hxenZiVFVrY1ZtZTRLaUtIdjI3bm45OWRkRG9WRHk0QmxDaU52dEpqamwyeWtySzl2VXVHbng0c1dKYkkyTmplM2J0Ky9qano5T2RVaEdIQTZwdWpvSG4wYnpiYmpZczgxRUJ1dlZXbmI4K1BIMzNuc1BKZldZQThES2xTdnZ2dnZ1MnRyYU5HT1VWNjFhOWZQLy92bnAwNmQvKzd2ZmRuZDN4eStkSXlNakh4NzlzTDYrM3ZiK2Q1UllnaVljTnRmWTBEUWFDQ0JLVFlmU0dFdm4yekI2NFlMMjZhZm0zbkJDWXB1SjdEYmJFVUtxcW43d3dRZkpkUlVBVkM2di9PbFBmdnJRdHg5cTJOZ2dwNzRSa3lUSjQvRnMzcno1emp2dlRKNThjZjc4K1JDZk5nMnBxTUFXZXZobWxxRFJLMmNSejJEWnNsNXRyWDFqbUF5Ym5KdzgxM0V1dVhaaGpOMTQwNDNYbVZtN2JIWHRhcmZibmJnZ0RnNE9KdTRUN1lXOVhvdUQvb2FHMkxDNThkYkdjUXdXR3h4VU0xbjRLdDVzOTNyMXl0bHZkR3gwWW1JaU9WaE9wL1BhYTY5TmM4aVZpb3VMRXdQbk1jYVJTSVF5cTR2cXBEWDlOTnJzNXp5eklZcGVPWXM0Qmt0dGIyZURnNmJmY0Z4OGQ3Z0ZXdmhxY25JeStTWU9BR1JaTHZLWnV6UEZaTzRieDhqU1IySEE5Tk5vczVVV3p3MVJlQVVMUWlIMXhJa010NW13ZmIxYWc4TGhNTDFpeVM3VDdXNlRaemtUVWxXVmxhWElNYVpkWFp5YVdieUNwVjI0UUM5ZHNseGQyYkxOaEdYOHFoWk84S0pGWk5reTB6VVd4cXkvbjlPR0tIeUNSZW4wZXJWV2d5V3RXR0hMTmhPNWcydFlzY2RqWlFuSitOTm9QczBzTHNHaUF3T1pybGU3ZWJPVnVqMkhVVWFqTVM1M2hYR1MzMjkwczdFRW5odWljQW1XMXRhVzBYcTE1ZVh5K2xtalZ2S1J4K054SlBYQVRVMU5uZTg0bjZaOGhxdy9qUTRFZ0VNL2lQM0JncW1wNlcwbXJJbXZWMXRlcmxjdTF4VVhGeWNHUjJDTUZVVjUvVyt2WDdwMFNkTzBUTmR1bUE5WnNvUXNXV0k2V0RNYm91aVZNODMrWUdrZEhiU3owM0oxeFhHYkNjUG1YYmZEN0YyaHorZXJxNnRML0I1Q1NHdHI2ODkrOXJQZi9POXZMbDY2bVA1WUN5dy9qWWFKQ2RiZnIxZktOTHZQWDJLOVdwT25ZVm9XdHBrd29IK2dQeHFOSmlmSjRYRDRURzVWUWdpNS9mYmJ5OHZMazBjTGRnZTYzM25ubmM4dWN4aFdFTjlzek94OU5NWVFEdk9ZVzJGenNHaC92M2Jtak1WVUlZUmt1ZUQ2NjdPMnN1KzhSa1pIamh3K01xY2Z5K1B4bEpsZmxuTDl1dldQUGZiWWtpVkxrdGNLVEQrY0t4TVdtMW1KRFZGc1pmajVMbU5zY0ZCbmFCZ2hzWTgrWWlNakZvTUZnTDFlN1BQUnpzNVpjOEFsaVN4YlptV2VreG14V0d4NGVMaXpzL01mLy9qSHlkYVR5YytQR1dOK3Y5L0NxbXNZNDIxM2I2dXNyRHo0ejRPbjJrNk5qWTNGWWpHWHk1WDVvaUR6SWhVVm4yODJaaHlmRFZHTUJndFVOZkxhYTJwcnEwN3JKeEl4L1kxSndCaW1wc0o3OXN6S0pRRDIrUXFmZXNxdTlkeFRhV3RyKy9WdmZqMHlNaElPaCtjc0NTbEowdWJHellXV3VqOHd4dlhyNjY5YmU5MzQrUGpJeU1qSTZBZ0ExUEo1c2s2OFhzbnZONzFFVkh4RGxPRmhhVUdDaFFBZ0hJYkpTWjFnbVhwTFY2SVU1aXo4R28rcDVYdE13eUxSeU1qd2lCSlI1cVNLVXJwbXpacXRXN2VtT3RBSVNaSktTMHRMN1Ywc0RnQ21waUI1aWdyR1pQSGkxQWVrZ0RHRXc3R2pSeDBURStrV0N3RWdKU1hTaWhVRzc2c01Cd3NoaFBIMGYxeGQrZnQ1LzBXRUVFSVk0VG1QalFHQU1WWlZWYlZyMTY3bFdad2paQkRFWXNxTEwycHRiWitmYVl4QlVReWUrRmtvamI3elR1eTk5OUpkYlJoek5EUjRIbi9jWUp2RVRMQyswQUFCWXl4eEIxZFFVRkJTVXRLd3NlRysrKzVibTVzTEp3RkFNTWhHUnVZbXlkcjNVTk1nL2Z3OHhsQXNacnlkSTRJMXplZjFiYWpmSUVtU3krMWFXcjYwdXFaNmRlMXF2OTlmWVBZNVNUYlpldzFKLzN0TS9pRVJyR2wxZFhXLytNVXZKRW1TSkNtbnc1UW5STENteWJLY1ppUzdZSmI1aHA0Z0dDQ0NKWEFoZ2lWd0lZSWxjQ0dDSlhBaGdpVndJWUlsY0NHQ0pYQWhnaVZ3SVlJbGNDR0NKWEJoNWxraFkxbllOV291Z0FYNG8va0NZUHEvTERENWh3d0hTNUtrK0RvK0ZzYVJaUUlBdTkzWTdkWXI5NThIWSt6eDRLS2lMSjBSeHJESFkzemtERFkrZVJKVU5RdERoT2VCTVpibExIMThlY1RJOUJaYjRjSkNVbDV1OEVTWUNKWWdHR2NvZllKZ2xnaVd3SVVJbHNDRkNKYkFoUWlXd0lVSWxzQ0ZDSmJBaFFpV3dJVUlsc0NGQ0piQWhRaVd3SVVJbHNDRkNKYkFoUWlXd0lVSWxzQ0ZDSmJBaFFpV3dJVUlsc0NGQ0piQWhRaVd3SVVJbHNDRkNKYkFoUWlXd0lVSWxzQ0ZDSmJBaFFpV3dJVUlsc0NGQ0piQWhRaVd3SVVJbHNDRkNKYkFoUWlXd0lVSWxzQ0ZDSmJBaFFpV3dJVUlsc0NGQ0piQWhRaVd3SVVJbHNDRkNKYkFoU1B5Mm10NlpRVEJORWZrbFZmMHlnaUNhUTRrU1hwbEJNRTAwY1lTdUJEQkVyZ1F3Uks0RU1FU3VCREJFcmdRd1JLNEVNRVN1QkRCRXJnUXdSSzRFTUVTdVBoLzVTU2hUbjJXeGw4QUFBQWxkRVZZZEdSaGRHVTZZM0psWVhSbEFESXdNVGd0TURNdE1ERlVNVE02TXpRNk5UVXJNREE2TURCa0VBVDNBQUFBSlhSRldIUmtZWFJsT20xdlpHbG1lUUF5TURFNExUQXpMVEF4VkRFek9qTTBPalUxS3pBd09qQXdGVTI4U3dBQUFBQkpSVTVFcmtKZ2dnPT0ifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAxOS0xMC0zMCIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiQ2xpZW50L0F1dGhlbnRpY2F0b3IgQ29tYm8gQ2VydGlmaWNhdGlvbiIsImNlcnRpZmljYXRlTnVtYmVyIjoiVUFGMTAwMDIwMTkwNTA2MDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjMuNiIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4wLjAifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDE5LTEwLTMwIn0seyJhYWd1aWQiOiI3NzNjMzBkOS01OTE5LTRlOTYtYTRmNS1kYjY1ZTk1Y2Y4OTAiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6Ijc3M2MzMGQ5LTU5MTktNGU5Ni1hNGY1LWRiNjVlOTVjZjg5MCIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJHU1RBRyBPQUsgRklETzIgQXV0aGVudGljYXRvciJ9LCJkZXNjcmlwdGlvbiI6IkdTVEFHIE9BSyBGSURPMiBBdXRoZW50aWNhdG9yIiwiYWx0ZXJuYXRpdmVEZXNjcmlwdGlvbnMiOnsiZnItRlIiOiJHU1RBRyBPQUsgQXV0aGVudGlmaWNhdGV1ciBGSURPMiIsImVuLUVOIjoiR1NUQUcgT0FLIEZJRE8yIEF1dGhlbnRpY2F0b3IifSwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfSx7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MTAsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6MCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MTAsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6MCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDaWpDQ0FYS2dBd0lCQWdJVVNzMmhWNkJUMVNZRjg4djZwWkNpTitzdHlqOHdEUVlKS29aSWh2Y05BUUVMQlFBd0l6RWhNQjhHQTFVRUF3d1lSMU5VUVVjZ1ZUSkdJRkp2YjNRZ1EwRWdNalF3T0RBeU1DQVhEVEkwTURnd01qRXpNakV3TlZvWUR6SXdOVEF3TkRJNE1UTXlNVEExV2pCVk1Rc3dDUVlEVlFRR0V3SkdVakVPTUF3R0ExVUVDZ3dGUjFOVVFVY3hJakFnQmdOVkJBc01HVUYxZEdobGJuUnBZMkYwYjNJZ1FYUjBaWE4wWVhScGIyNHhFakFRQmdOVkJBTU1DVTlCU3lCR1NVUlBNakJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCQlhFR1JQdHhHUFkyWFhhcTRzSUdoN2pLdWJkVjZtOCtNVDRDa0lLZmJ2TldyNDR6dU5JRGJQSW1nNGpyKzBKeEFEenlncEhpeWZ4OWMvTkdwQzdwTytqVFRCTE1Ba0dBMVVkRXdRQ01BQXdIUVlEVlIwT0JCWUVGSCs0NXBpL0lra0h5eG53UUw0MGN0aENyRlRqTUI4R0ExVWRJd1FZTUJhQUZQYitXUGpaYXBJVUQ5bENYOG85SGVQeDNkMXNNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUF4d2loT2FaMDNvWTRuaDRPMXViOHdiTzdWYWdKVDdnNWF1MVphSHBQeC9aMm5YcE1ENndiZFptOVVxU2JoOW9hQkExYzZoaElDdE4yRW1VM1VSR3JDVGhTUnhLYnRvQVpPbThSaWpJdE0xbElsM05JTUtraGYwUXZFb0hUZlhTSVJNY3daMlV6Z1VqRElNeis2azcvbWpqaC9uM3FuVWltdGJwLy9qR0x5ellrS1JXVjJsZjdJSzd0a0ZRc0hFbUk0SnFKMXdLWnl5QUY4QWJpWTc3clJPK0FaZ0ZjaTJQWm4rR3I5LzNKWCt5Y25SZW1IeEJCR0dhd1N2QVhuSUUrVVl5OTFIQURHdUZ2QjlYZ3Q2RE5DUHdpdW9Za045Y3U1anVWYXJvdVlNWWhrSlBMbzBwWVBncGwzTDZQbHlLanZiS3UvWnhoNjdrNHVyVkErVVo4WiJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFPOEFBQUJrQ0FJQUFBRGhaZkQxQUFBUjRucFVXSFJTWVhjZ2NISnZabWxzWlNCMGVYQmxJR1Y0YVdZQUFIamFwWnBwa2lPM0VVYi80eFErQW9CRUFvbmpZSTN3RFh4OHY2eGlqeld0a1NORzZ0YVE3R0lSU3k3ZkFpcWMvL3o3aG4veFUwcTFVTFJaN2JWR2Zrb3ZQUTllV0h4L3h2T1lZbmtlbjU5elArK2xuNitIV2o1dlpDNEp6L0wrYWZWei85ZjE5R09BOTJud1N2OHdrSzNQRy9Qbk4vcG5nbXpmQnNydmsvaUsvUFgrRE5RL0EwbCszMGlmQWNhN3JWaTd0VDl1WVo3MytmUDVOd3o4Qy82Zzlwbm5jL1AzdjBzamVsdTVLRGtmU1JKNUZDbnZBc1QvbFNDRE54S1BVUm8zY2hPdnkvT1lKWDBHSXlDL2l0T1BuODZLcmkrMS9QS21uN0x5NDlXM2JOWDVpZEgzYkpYOHVVVytCYm4rZVA3bDlaRDAyeHZ5WS83OHg1bUxmVjdsbjY5blRaOFZmWXUrLzd0MzIzMzJ6QzVHcVlTNmZqYjF0Y1huRmZleHNlSlRXMkJwTlRiK0tVTzA1N2Z6YTFUMW9oUjJYSEh5dTFKUG1VemNWTkpPSTkxMG51ZVZGa3NzK1lSTXJuTE9peFQ1UlNOM1BTL3gvQlgvVFRjMzZiTEZ5T0o2MHk3NXgxclNNMjJQS3p5ekdUUHZ4SzA1TVZqaUk3LzlHMzczQS9kNks2VGtzYXp6aVJYcnl0bUR6VEk4Yy83SWJXUWszVTlROVFudzErLzNIOCtya0VIMUtIdUxkQUk3M3lIbW04eTN0dVJKdEhDajh2ejJZR3I3TXdBaFltcGxNWFJHU1dRdGlhYWFZc3U1cFVRZ2pRUU5sazRENVVrR2ttcmVMRElYa1VwdUxQdlVmS1NsNTlhc21jdUI2NEFabVZDcDBzaE5sMEd5U2xIcXB4V2pob2FLRmxXdDJ0UzA2NmhTUzlWYWE2c09pcU5KSzZGcHE2MDFhNzBORXl1bVZxMlpXYmZSY3hkQVUzdnRyVnZ2ZlF6bUhJdzgrUFRnaGpGbW5qTEwxRERyYk5ObW4yTlJQcXNzWFhXMVphdXZzZk9XRFg3c3V0dTIzZmM0NlZCS3B4dzk5YlJqcDU5eEtiVXI0WmFydDk1MjdmWTdmbVR0azlZLy9mNUcxdEluYS9uSmxOL1lmbVNOcTYxOURaRWNUdFJ6UnNKeUtJbU1OMDhCQlowOVo5RlNLZGt6NXptTFBkTVZtbG1rZXM1MjhveVJ3WEpTMXB1K2NoZnltMUhQM0QvS1cyamxwN3psdjV1NTRLbjd6Y3o5T1crL3l0cDJHbHBQeHQ0dTlLQkdvZnU0WjJUalA3anF6OC9oMTI4VXNNcHlnZlRTNnNLaWs2N0xZS3VOdGU4NTBxNXp1ODA3eTFqem5oWk9sYnNPZTVLeHpOS0dxNVhrUlR1WHhkdSt6ZTZ1YzBlNHpZZnFzV3hmZUtOVGFlRm5ab2JNNGV2RlAzaWVVYlNIbTFvbGdrV1N6WllJdVFGS2VSSFBmVlgyTUlqejJManN6NjZaamo1bk80Y2xaOG9JVWxCalkwdERCcFdwU0MybDNYMkwxSnZ6WlNvdHZFOTRZanE5bzMxa0RtbTJXcmxicVFVMlZVbGd2S1gwZUdNN3dlb2MrVjNqMHQzbUtyTzJBVWRyRjhrYkdsaURhN3VkMFhhZWxNUmtPWFdRY3djMHJUZU5SbGpESUlicnZqTlBadTZ0M1pVYkpYV0hUbDlsNUVJMUQ3U1YyN1JmcHZLLzBDWDNHcXFFc3R3bHNPZ0xTVTBTT3NuUkduTTlpVDVKOXE0c1lwUGNhM0tQNkhaMU41WENKWStGVlBaeDdwcDdXUm5CdHNGb2RTOGZtcjM4bjNRclFmM0w5OFAzZXJBQlErZlZJb1BuTXM0d1ErQ3N0UncrYUE4NjgxcW52ZXM0TzlWK2daNE5VYkFpK21hWHUyUjJWdHcxanE1S280eFRFekFoaFU2ZW01YTNRNEVTNDlMbFpLMnpyb013VUs3TmJUVVEyRHUybmhtdkRWWTJWdFM3QWFGeGdZaENRRS94YU0vUmp6STVnOXBKZHNBYlJweEt1V1VJdlZMWmErOU1JTGRjblNacno5d1huWHFiRndoOVJKOE4xUVhtVWE3VEVhV2Z2bXBMaExweVpUd3RHcGlMcktVOU5oclFUaWJmeTRUOXk0b3NwS2RTMTA2T0svMWthcWpXaXk1QkZaMXVtWjd3alhBM0xITGI1T1lqck1TbEtxakx2dXVoYlRhbE81QndlVkpka0Q0ZE5DL29ST3JITjhnb1lMWUwvZ015UnVuNXBnNHc3bG1PemJOSXpHVTdQVmJkMW01OGlqTFJkbVpIZXFYVUkyRE5adlBzQnhGeENKcFdRSmsrMkFDdkVJclJVRVZaSFBnWmcvVHQweXkxUXVyUVFmZnNUSG9KRWlXdXRmZ0VJUTcyd3pDOUxibmdsTm1TdmNwTmUzYVFTbXdUcUhybEpKQVVJWkNhd3pLbEFHSTFJbEw3b05WbkR4TlVtTm5Lb25ZbEZ5WGdnK3BET2RRbHVqWlVKQWd5NTRmS0FzRU1PRXFGaUs5YWljZXFwSzdXR1pTb1N0ZkVRNG8zay9HUzZDQ0gxVXpoR1hzRFM2R1FjWHV2MFJad0F0NnZnWHlSQTZweFBkT1JZU2dKeVFwOG5OVW1tY3NWM2gyVUdHZzMrWXpZMkNjVitLcDN6QUp0Qk4xUkwrMjZIeUFFdTlSYk5leVM3Nm16ZDUzZ0lzSFpVVnZCUUZ4TDV6VE5NeGVxR3ZsUThTVEoyMmYyWE5yWXZnQWFNaFZreEl3aEoralB0M01MWW93dHkxRGJtUzdndm5vbnBaNElZYVlGZ2RlMElYRktKZHU3ZVZyaDNrSk1ibkNLZVMrYklySXZKWldldnc0TFUzOFZPMDMzdk9JVDVZVzBORUcvRDlqUk52a1phSURqRHhKQ1dBNHA2M3lmN1prTXRDeTZrUzBUS0JyVDI5TGZrYmJXWHJmVGE0SlFPZ0t3QW4xRU1COWorMGlOVFBnU3lEUmlYVUNYTEJCREYzVytVWTJVY1RKRzh1QmZhZldHdWRvQkhkTHU0QlhaMUVtYW9nQTJTeFBXQUhYdnVWaUU2N216blV5amFxS0ZJUk9aRGFBOUpETTBvSHNaWkV0eFVmREhWMFNrMm42aWN1NUkybHJadTFXMEJGVnBxNkNSYUhmS2YxSnhnTWRKL0EzNCs2Y2FpNFRQUEhpN3dBTmc0N0VFL3AyOTFrd05abVAzcUsvWmlBMXFJMTBZeVVweWxLUW9ld3FJNU5HeE0vc2dZNFFpYzN5QkwwQ0NzN3dvTXp5WDNQQ2tDeHA1cEtFZzhxSHNsN0MxU052SnVZSGFaZkVNQU0xdGFGWVBpMFl6SXQ0Y0g1RDI1eFNJYzVLRFVmYnpWSjhCU0g5UERhUWpwV3NIZUtoTngreENGUlVTQlFVNGlwZmJGVmVWNE8ydWNJTENyWnZBUVFPK1BJVTk2cUZEMmZuQUY0NXdqUkowOThDSHEwQ1VMSFNyYzRkUjB6VE9vRkFSZDVpeGRIazV5VDNLQ3g5Qmptam9TWnBPVlhwTndKRUdmSFYyNE1LVDdtSGgreHlxREJsMXlSWExoWElLMnBEbHZEQ0I2Z1B0OTV6RWxlWHJDT2VBSVhBYnVJYXFMMmlRdzhDd2FxWHg2V0RBbk9LcWlCcExWQmNvR1I4ZGg3WW1CQjE1ZWFsSVZsU3hFZ2QwUStyS29YQlQ2dFJxcVRUY0Flb3piNldHak1zVUp2aE1UUkcwRGlhUFRpRUFQd1Q2Mk50cnJBSzlyQWVpMHcyajhvK0JrUTF0NElZUG5PYjFYZEJoR1l4MUozemE1R01kcmQzQnN3NnFha0E3NTBvREF5SGxGTVJ5Y2dwazJwM05zWHZFUS84NldtSzdqVVZrcUlrMldCTmdKcFlDQllEZ014QWE3RVZPQU9DdU5ZcHJQY3pxek01WkpKZDFRVnVIMUF3a29NUHd4bnB2SlRiRUNTMlA2RUVuemdDMTBJTmpPRDV2cmhjWDc5d2U0WWpWMGJZSFNVU0kwZlBpQW9EYWlpY21hdDZGb3VzenJBdnRIUlRPSTIwclpyUTlsb1lvSXRLQmgvN0lIUFRhVjkrRDZWUWc5UzRvbDFwV2g5WG5Ja1NRYXBkUVhBZDU0eHlZREpidE5oRUlzMjRoNGllQ3gzQlVoV3VRSjFpRWdnWmluVVhBNnJkMUhVRVBkbjE2RlBhQVdBKzFtTnVlRFpiQ3psQ2dmQ0R1Qk4xTnlsOGQ3MEd1aTdnaVdTNHdPMllxUVZhQVV3a0pNOUpRcWJnVGdBWE5TTVAxc21ha1B4RkJzQ0E4T2gyQ0FYRk15MFpINStyR2hpaGpxanZ1aGJLNjRjckZKQVBacklObVl6OU1CV0xtVzhhRzdTSm1hL3FwRXB1RUZRRVF0QlNDWW5WcUNWYkNra0g1V2xFanRWQ1l4Sk00Z3dOUVYyWnhxS3hsQ3FVaHE5U2F3bHhzREJIeFVvR0JUdWM4MVFwTnUwQU9pUGJwNjRaZ2FDaUVxZy9TSGtVTTBUSG9nNkJIUDhxYTBRdzBaeFRnR1gyTlA5bzdBVG0wU0RNNnB0R3ZVQzlzTEY1WlpCVkVTOVZ6dGl2QkF0SkdqN1Q3SXN3Vm1Zc2ZRZHBpWEFwYkJjb0RnZ3ExQTA1ZDBMbmpqeG1ZTnpKM1JVY1g2cVRRbUhTRXF6OVV0a1RhQlFWTXVPQmtNTUE4SUMwUWVUR1NsVGYybEVsbzFueklOeUNEZUJ5TFBRd2dEZERGbE5EMENmeTc0UFE0dlc1TXg3UzZKMzQ4TERRb1BRZy9za24wcjFNVDNock5HUkVMWkNKaWpycUxmUlJaK1dBalVnendnNGtHemdYbGJyMEY4SmhQd21YVmI5YVJCTWxPaWNteHRmeDhETm5paTg1bklJdEZ2RXZVSjBNZWdtUlFBT0RXTTFhVUpuSWFreWt1cUdaRCtkS0drQ2h3eUZxTHcvVEZGMEc4OVVLSW5YcUNOc3pMTUZGR0FDODhmRUpHQ0JFanFoR2RsLzJzZ0NvSDFwYmZTOXNoYTByV0lYaWcwMS9IY3IzTkNvdUVBc2tOS292UndxTEoybkdyUlpzU0hZUFFnQnNpdE9sbm9MMUQyWmhNZkFTNlFTb0ZSV1Y3VlZVVmo2Z2JhZ1IyQUQyVFk3U0Mwc0RtN0RBLzByeGR3b0duYWY2UkxCVC9BakJSWXpCSjViYUNFS1NVZXFGTktHL3NPakJHbWxFSDZEa293NzBzM0lwYkFlVkJsZzNxUTcrSUU5UXNNaEMzTVQxeWJiZ0o5SEtnQ0IzWjZMVkVObDZWMWlNSTUrZUR6enBRUit3VjczeW1iNzJ4VlBjb0pNeDllSlQ1R0Q5N2hOaXhnRWd3b28xRlhONWhUbjJQdjFWbXdhei93ZUl2UCtRQldCTnlxUUlSZEJZMmpKQmU3ajVCaFpTbEpsVEhtb1VYZmk1S3hUbjhlY3hNVlNjZURNRk1YY3cxWGVGRE5BZ3NGOXIyaUhhOFdyaElJTTNMOHpFaDNER29ZakpkVUExNDZJSmRtNDRJS0RaODg0eCtpZ0NnQWoxSEI0S2oyWHg4bGZsNXR2dnpPYWI0QjJnZk50Z2ZVZXBVQTdXb256c1FXV2ZOaXRTbVVjMGxQOVo4azFWVUVRb0ZoQVN6OGM0RXJMRkMrYnJ1OFBXKzRaZUpwaVlJdW1OVDhMQTJIZG5VRDdrWFpzcjE0ZzM3T1F3QXZrQzJqTkZydng3cWZ6UDhOTEhQOE11QjVMbjRkd1lQUDQyZWgydkQ3ZWV0d0VkcmJqZGNVbWZuYlorNVlQWDlRRUp4Z0NWRDRnc0pIM0ZnREZSY3NrMDZ2NzM1SUtzUjNtcTRjeGpYS0Jla0FHRlJRTXlkSGVabVZ1dVZOTFNSbjByRDg4eFFnUzFBSEdwTmZqQW96N0ZYR1hBbnluemdnN3NSVUlxOEprZWNUcGFSbmNOcmF6ek9XMXM2ZHovYzM2S0NOQjJxbVBtQXVMUVk5U2J1R1NBVDJOWFYxcHFVUEtzRTRKSi96K1NuRGdBamhZTWxYMlVGTUFxczNuNXNYUnVHMUxXZXVGN1ZnakpiSFh1R1dIVVBYaDhSRGtlRE9GY3owa1VFaW9CUllCNVloRktIQmZ4WXN0enFDZ0NweENoeTNmQWZvL3FwU1FTSU9PVGRUcnltQXFqMEtpMVZtSEZ1LzNZaTFIajZBa1BjQ0xBWlhMQmpObUoyVUxaclpsa0RwRXJEVDNwV1RaRXhCSkJ3RDY3NU9iUHlYdkl2b1JhOFQvdnV4NXlETGdDM0I4SnRySDkvTXVySHZjWHROZHl1ZnhxMks4NFYrRUJVOUlrQUlaNTI0c2pwUC9xcThUQWNuTFp6UHRTZko3MjNBS1c2bmJhMis0TVBXc0dnTEdYRDRYby9Cd2dMRmZyQTJsMVA3Wkpxb0xSZE5GeDM1NEV5UlhqQXd3Tm83V0E0U2pSUlFTQVI2TFVnUkt2T2E5c3lrRUMxM0xId0ZHUytUZWdjVzBLbjBPeVlLZFQ3VXZRNkNoY05QeHoyaUticjMxaGNzaWdqQkdTc1VHY1UvZkNEVmo1TWhja3FZK0hpbkt3cFlBZG42WXZVa1RGNmFOU05Jc2J6WEN6OGRoNmVNNHhYOFpCTHFwS0tTMmh0Vjcwb2NmU0lJZWI2cytGbzNiRmFyanhPK2ltdGlGSWtVUFhVVkFPQTFUM0x5QmdXeGEwZzg2T0ZuTkkyaGdRR0Jtd1BJaFZQVjBoU0J2WG5RQjk0enhRL0lpS0FOU0NHQWFqR2ZoN04zRjB6dTJUKzNlZndlVUZVSVRUd3IwQmMxVG5XTWQvOHFINTJQd3RPRHdMUU5laXB5SUxtUXMwUjYxeXZwTGtzSUdvd1pGR2IyRUpzN0NsMFN4cGVqbWdUbHpkZ0VyMlZ1QjlEcWNDOUR2VnZheGtXTnFGa2tOSmlBZmtXY2RIK2RmZHp4QVpwMHkyd2x5RFBxWkYxYVhyRW1iQ0tpdGhabUY0L3hVQW5vbklhZmtMU1JRT0U1UjFZWll4TW0vc1pZL0h6NWl1TDlCUzNyREtiSDhlNmtCOSs4QWpWUTBxQ1MxbDRHQmVBSGRrdEdEOUFNQ0w1Q3NFMnU4amx3UVIrd0xYZFZXQmc4Y1RiaFVxOXpVOWVRWVRwM2VuZlBrMjNndzB4NWJ6bVpxRmkxb0ZiMUl5QlpzU01VQmJNR1VDcDFQNVl2by9NV282NzBFVWxvMFBvdlFvNUhTK2RIWWpnWTVuVWozcHJkYlVKcjhPV0tMWmVOaFNOWmIxb2RLcW5UK3pqOWEvMEJzcWowUmxNeWp4Z05YUkVFUHNvNkdtRDJvbWhuMnlBdUtuN3pPaWIrQ1dHU1NwNlk4Q1NiQ0s1d3FGdGljVUM0bnNOcy92SkhrWUdUWTdhd0szQnpldE9jQ242MFduMll6S0pxSUVwQ2VBK0dQSzJRRnFVT3JiTmo5SHAycmJDYVJIemdHcGkxU2l6STVDQWd6dk9pRzA2RjdqNndXRjJtSVZTeWFuNzE3b0h5a2FRK01XMjBBdXNDSU9GTFBOakZiQThSWktOT2x2K0pjU0ZobkF6bVhRUkt1ekhRZThnSHdiS2kzQ3haVDkxM0lnWXlweXNBYU1nQ3NYUG4ycEdoZGtHcEJxMnV2c0Jmdlh2bTZpaUJtTjBxeFVOUlBoY3orTUxKcHlpY0s3Lzd4N0FCbllFbjlOaVZJMEVTb2VmTXNFckdLUUlXWks1eHIyRkhTYjJlWG1KdDhRbXdJMStOdnhBclRqbDR0SmF5bWg4OStKcitXa3B3djVHWU1RMmpNeGFPN1c0eENXalV5N1RWSmRNc0R0WnZNbEs4QlBsbEF5RVljOSsyaFlwQTM3M1gzejk5WnRmaTFHTWordGwyMUEwZWFxdms1RkhOUGloZjgwdVI1RVMyRmNXb3lHNTJpU2hlWlIvOUwxV2dIb1JqZ1Rydi8vRFZTMURCQUUxQUFBQmhHbERRMUJKUTBNZ2NISnZabWxzWlFBQWVKeDlrVDFJdzBBY3hWOVRTMFZiSE93ZzRwQ2h1bWdYRlhHVUtoYkJRbWtydE9wZ2N1a1hOR2xJVWx3Y0JkZUNneCtMVlFjWFoxMGRYQVZCOEFQRTJjRkowVVZLL0Y5U2FCSGp3WEUvM3QxNzNMMERoR2FWcVdiUEhLQnFscEZPeE1WY2ZsVU12cUlmQVlReGpxREVURDJaV2N6Q2MzemR3OGZYdXhqUDhqNzM1d2dyQlpNQlBwRjRqdW1HUmJ4QlBMTnA2WnozaVNPc0xDbkU1OFFUQmwyUStKSHJzc3R2bkVzT0N6d3pZbVRUODhRUllySFV4WElYczdLaEVrOFRSeFZWbzN3aDU3TENlWXV6V3EyejlqMzVDME1GYlNYRGRab2pTR0FKU2FRZ1FrWWRGVlJoSVVhclJvcUpOTzNIUGZ6RGpqOUZMcGxjRlRCeUxLQUdGWkxqQi8rRDM5MmF4YWxKTnlrVUJ3SXZ0djB4Q2dSM2dWYkR0citQYmJ0MUF2aWZnU3V0NDY4MWdkbFAwaHNkTFhvRURHd0RGOWNkVGQ0RExuZUFvU2RkTWlSSDh0TVVpa1hnL1l5K0tROE0zZ0o5YTI1djdYMmNQZ0JaNm1yNUJqZzRCTVpLbEwzdThlN2U3dDcrUGRQdTd3ZURUM0t0VXJ5YzBRQUFEdXRwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFBRHcvZUhCaFkydGxkQ0JpWldkcGJqMGk3N3UvSWlCcFpEMGlWelZOTUUxd1EyVm9hVWg2Y21WVGVrNVVZM3ByWXpsa0lqOCtDang0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJbGhOVUNCRGIzSmxJRFF1TkM0d0xVVjRhWFl5SWo0S0lEeHlaR1k2VWtSR0lIaHRiRzV6T25Ka1pqMGlhSFIwY0RvdkwzZDNkeTUzTXk1dmNtY3ZNVGs1T1M4d01pOHlNaTF5WkdZdGMzbHVkR0Y0TFc1ekl5SStDaUFnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJS0lDQWdJSGh0Ykc1ek9uaHRjRTFOUFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdmJXMHZJZ29nSUNBZ2VHMXNibk02YzNSRmRuUTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl6Vkhsd1pTOVNaWE52ZFhKalpVVjJaVzUwSXlJS0lDQWdJSGh0Ykc1ek9uTjBVbVZtUFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdmMxUjVjR1V2VW1WemIzVnlZMlZTWldZaklnb2dJQ0FnZUcxc2JuTTZaR005SW1oMGRIQTZMeTl3ZFhKc0xtOXlaeTlrWXk5bGJHVnRaVzUwY3k4eExqRXZJZ29nSUNBZ2VHMXNibk02UjBsTlVEMGlhSFIwY0RvdkwzZDNkeTVuYVcxd0xtOXlaeTk0YlhBdklnb2dJQ0FnZUcxc2JuTTZkR2xtWmowaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOTBhV1ptTHpFdU1DOGlDaUFnSUNCNGJXeHVjenA0YlhBOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOGlDaUFnSUhodGNFMU5Pa1J2WTNWdFpXNTBTVVE5SW5WMWFXUTZOVFV5UmtJMU5UaEZOVFkyUlRneE1VSkJSRFk1T0VGQk1UUkZNalpEUTBRaUNpQWdJSGh0Y0UxTk9rbHVjM1JoYm1ObFNVUTlJbmh0Y0M1cGFXUTZPVGcyTVRFelpUZ3RNV1V4WVMwMFlqRmlMV0V6WXpNdE1UTXpOVGsxWVRoaU16WmhJZ29nSUNCNGJYQk5UVHBQY21sbmFXNWhiRVJ2WTNWdFpXNTBTVVE5SW5odGNDNWthV1E2TVdWaU1UZzVOVEF0TTJVMU15MDBNV014TFdJd1pESXRNVEE0TWpVM1kyRTVNMkZsSWdvZ0lDQmtZenBtYjNKdFlYUTlJbWx0WVdkbEwycHdaV2NpQ2lBZ0lFZEpUVkE2UVZCSlBTSXlMakFpQ2lBZ0lFZEpUVkE2VUd4aGRHWnZjbTA5SWxkcGJtUnZkM01pQ2lBZ0lFZEpUVkE2VkdsdFpWTjBZVzF3UFNJeE56TXdPVGN5TkRNek5EZ3pOVEU1SWdvZ0lDQkhTVTFRT2xabGNuTnBiMjQ5SWpJdU1UQXVNelFpQ2lBZ0lIUnBabVk2VDNKcFpXNTBZWFJwYjI0OUlqRWlDaUFnSUhodGNEcERjbVZoZEdWRVlYUmxQU0l5TURFNExUQTJMVEEzVkRFeU9qUXhPakk0S3pBeU9qQXdJZ29nSUNCNGJYQTZRM0psWVhSdmNsUnZiMnc5SWtkSlRWQWdNaTR4TUNJS0lDQWdlRzF3T2sxbGRHRmtZWFJoUkdGMFpUMGlNakF5TkRveE1Ub3dOMVF4TURvME1Eb3lNU3N3TVRvd01DSUtJQ0FnZUcxd09rMXZaR2xtZVVSaGRHVTlJakl3TWpRNk1URTZNRGRVTVRBNk5EQTZNakVyTURFNk1EQWlQZ29nSUNBOGVHMXdUVTA2U0dsemRHOXllVDRLSUNBZ0lEeHlaR1k2VTJWeFBnb2dJQ0FnSUR4eVpHWTZiR2tLSUNBZ0lDQWdjM1JGZG5RNllXTjBhVzl1UFNKellYWmxaQ0lLSUNBZ0lDQWdjM1JGZG5RNlkyaGhibWRsWkQwaUx5SUtJQ0FnSUNBZ2MzUkZkblE2YVc1emRHRnVZMlZKUkQwaWVHMXdMbWxwWkRwaVpqQXpPVEZtT0MxaU1XTmlMVFJoTlRFdFlUQmtZUzAxTnpoa016SXdaVEEwWVdJaUNpQWdJQ0FnSUhOMFJYWjBPbk52Wm5SM1lYSmxRV2RsYm5ROUlrZHBiWEFnTWk0eE1DQW9WMmx1Wkc5M2N5a2lDaUFnSUNBZ0lITjBSWFowT25kb1pXNDlJakl3TWpRdE1URXRNRGRVTVRBNk5EQTZNek1pTHo0S0lDQWdJRHd2Y21SbU9sTmxjVDRLSUNBZ1BDOTRiWEJOVFRwSWFYTjBiM0o1UGdvZ0lDQThlRzF3VFUwNlJHVnlhWFpsWkVaeWIyMEtJQ0FnSUhOMFVtVm1PbVJ2WTNWdFpXNTBTVVE5SW5WMWFXUTZOVE15UmtJMU5UaEZOVFkyUlRneE1VSkJSRFk1T0VGQk1UUkZNalpEUTBRaUNpQWdJQ0J6ZEZKbFpqcHBibk4wWVc1alpVbEVQU0oxZFdsa09qVTBNa1pDTlRVNFJUVTJOa1U0TVRGQ1FVUTJPVGhCUVRFMFJUSTJRME5FSWk4K0NpQWdJRHhrWXpwMGFYUnNaVDRLSUNBZ0lEeHlaR1k2UVd4MFBnb2dJQ0FnSUR4eVpHWTZiR2tnZUcxc09teGhibWM5SW5ndFpHVm1ZWFZzZENJK1RuWWdURzluYnlCSFUxUkJSeUF5TURFNElFWlBUa1FnVGs5SlVqd3ZjbVJtT214cFBnb2dJQ0FnUEM5eVpHWTZRV3gwUGdvZ0lDQThMMlJqT25ScGRHeGxQZ29nSUR3dmNtUm1Pa1JsYzJOeWFYQjBhVzl1UGdvZ1BDOXlaR1k2VWtSR1BnbzhMM2c2ZUcxd2JXVjBZVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBbzhQM2h3WVdOclpYUWdaVzVrUFNKM0lqOCs0MVQ3WFFBQUFBbHdTRmx6QUFCY1JnQUFYRVlCRkpSRFFRQUFBQWQwU1UxRkIrZ0xCd2tvSWNJaHY1d0FBQ0FBU1VSQlZIZ0JBQVNCKzM0Qi8vLy9BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEzOS9mOS9mM0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFHaG9hRUJBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFPYm01dTN0N1FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBOFBEeEFRRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXJ1WUFBQUlBQkpSRUZVQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDbTdKTG5BQUFnQUVsRVFWUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBL2YzOTh2THkvLy8vQUFBQUFBQUFBUUVCREF3TUJRVUZBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBKy92NzgvUHpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ3dzTEJ3Y0hBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQTdQTDYvUDcrQUFBQUFBQUFBQUFBRFFnRUN3Z0VBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUErdnI2K2ZuNUFBQUFBQUFBQUFBQUFnSUNDd3NMQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQUHo4OS9mMytQajQrUGo0Ky92N3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUF3TURCNGVIaDhmSHgwZEhSTVRFd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT3JxNnRuWjJkZlgxKzN0N1FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRlJVVkNVbEpRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQWDUvTnpvOWM3azlNcm8rSmp0K1FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQURBRUFrb1dCemdjQ3lrWUN5SVhDZ0lCQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUC8vLys3dTd1N3U3dXZyNisvdjcvMzkvUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQTBORFJFUkVSY1hGeE1URXdZR0JnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEOC9QemUzdDdPenM3ZjM5OEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUQwOVBUVzF0YlcxdFlBQUFBWUdCZzBORFFwS1NrRUJBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQURyNit2Q3dzTGEydG9BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRGM2UFc1Mk81MzIvUDEvd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQURRL1A3UTV2Y0E1dmNBQU94SkNnTm5LeEUrSmhBUkN3WUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUQzOS9maTR1TGc0T0Q1K2ZrQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRHo4L1B6OC9QaTR1SUFBQUFiR3hzZkh4OFVGQlFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCLy8vL0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQS92NysyTmpZd01EQThmSHhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDZ29LUVVGQkt5c3JBd01EQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXk4dkx2THk4QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVZGUlVKU1VsQUFBQUFBQUF4Y1hGN2UzdEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFNek16R3hzYkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEzT2oxbDhucGp1bjRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFGUUVBaml3UlVERVZEQWdFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBK3ZyNjJkblo0T0RnLy8vL0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVoSVNLU2twRXhNVEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT3pzN0xhMnR1WGw1UUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQYjI5clcxdGM3T3praElTQmdZR0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQMzkvYlcxdGRYVjFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUFAzL0tMSjUyemE4d0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFPdi9BRjNUN3pqWjhZdzZGanNtRWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVAvLy8rRGc0TmZYMS96OC9BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU83dTdzWEZ4UjRlSGlzckt3VUZCUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEUTBOQ2JtNXZsNWVVQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQURuNStlZm41L0t5c3IvLy84QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDNnVyclYxZFVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEWjV2UmFyZDFzMnZNQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQURJK3Y0OHdPaVB2ZUw0K3YwQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRDUrZm5KeWNuVDA5UDgvUHdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRGk0dUxBd01EdzhQQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQS9mMzl0cmEydDdlM0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXZiMjl0YlcxL2YzOUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEwTkRRME5EUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUF3dGp1S3JUaXRQYjlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWN0MzBhckhmOFBYN0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBOGZIeHhNVEU2dXJxQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUE5L2YzdzhQRDVlWGxBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUDM5L2JHeHNkSFIwUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFOUFQwN0d4c2YzOS9RQUFBQUFBQUFBQUFBQUFBQUFBQVBMeThyMjl2UUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUszTjZUL0M2UDRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFKL3YrbVd5Myt6eStnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQRHc4TVhGeGZYMTlRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUC8vLzgzTnplWGw1UUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEOS9mMnlzckxaMmRrQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRFoyZG16czdQLy8vOEFBQUFBQUFBQUFBQUFBQURNek16Nit2b0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQy8xdTFVemUwQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ3M4L3gydWVMeTl2c0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUQwOVBUR3hzYjgvUHdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFETnpjM2w1ZVVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBeU1qSTJOallBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCd2NIQndjSCtmbjUrZm41QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUExOWZYRlJVVk96czdBQUFBQUFBQStQajR5OHZMQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFUkVSRVJFUkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FnSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQS92NysvZjM5QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFRRUJBZ0lDQUFBQUFBQUFBQUFBMStYelFzVHBBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFKQU1CSVFZQzkvNy94UG4rQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFuKy82RnIza2cwb2ZCUU1DQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSt2cjZ5c3JLL1B6OEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFFQkF3TURBd01EKy92Ny92NytBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQTBORFFEQXdNRHc4UEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFPSGg0Y0xDd2dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNFaElTa3BLUm9hR2hNVEV3SUNBZ0FBQUFBQUFQLy8vKzN0N2VYbDVkZlgxOS9mM3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBS1I2R3RBQUFDQUFTVVJCVkFBQUFBQUFBQUFBQU1MQ3doMGRIUjRlSGdBQUFOL2YzLzcrL2dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWNIQjBWRlJTZ29LQVVGQlFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFNL1B6OC9QendBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCTVRFenM3T3dBQUFBQUFBTy8xK21LNzVRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFGTU1CR0FxRUNzYURCa1JCd2dGQXdBQUFBQUFBQUFBQU8vMCt1RHM5OFhmOG5UYjgva0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlubjl6WFA2MU0wRndBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFOTFMwdlQwOUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUIwZEhSa1pHUThQRHdrSkNRQUFBQUFBQUFBQUFQcjYrdlQwOU92cjYrRGc0UG41K1FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQMzkvY3pNekVCQVFBTURBd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSC8vLzhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFENCtQaVptWm4yOXZZQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQW1KaVk5UFQwV0ZoWUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQURxNnVyQXdNRGQzZDBBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUUVCQmtaR1FGQlFXNXVibk96czRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FnSmhZV0VXRmhZQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFERnhjWHQ3ZTBBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBVEV4TTdPenNBQUFBQUFBQ0h1dUY2NFBVQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQmZFQVp2TmhVdkh3NENBUUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUR4OXZ1MTAreGIwZThBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRGdVaUFmRkFvQUFBQUFBQUFBQUFBQUFBQUFBQURtNXViTXpNd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQWdJa0pDUWhJU0VIQndjQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFELy8vL201dWJXMXRiMzkvY0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFpSWlJc0xDd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBeU1qSTl2YjJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCZ1lHVVZGUlUxTlRGaFlXQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFGaFlXVmxaV1VGQlFBd01EQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBOFBEd3lzcktBQUFBNmVucEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT3pzN0ZoWVdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBMCtMeWV1RDFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBcGk4Um0xTWlNU0FQQWdFQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEd29GV2pjWjNsRWdYeEFHQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWpzUG5BQUFBQUFBQUFBQUFBQUFBQUFBQS9QejgwOVBUQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVCQVFRVUZCS0Nnb0J3Y0hBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFFQkd4c2JRVUZCSUNBZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEzdDdlOHZMeUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQTHk4c2pJeUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJBUUVGNWVYaWdvS0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNrcEtXQmdZQXdNREFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQmN6TXpQZjM5K2ZuNXdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ1FrSkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQLy9BSmpNNndBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFNdEVHbGszR1FVREFnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNFVkNwSk5IM1lZQ1FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUpMcitkSGk4Z0FBQUFBQUFBQUFBQUFBQU4vZjMvbjUrUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQmNYRnpzN093c0xDd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUUVCQzR1TGpFeE1RQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTmZYMXdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFET3pzNy8vLzhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlDQWhXVmxZVEV4TUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBV0ZoWnRiVzBBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRCsvdjRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUdCZ1lBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEVDQvS1c3UGtBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQURMUkJvMEloQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT0NRV0FTQjcwdE9DVzdQa0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDZnp1dVFIZzRBQUFBQUFBRDkvZjNkM2QwQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBV0ZoWTFOVFVDQWdJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFkSFIwQUFBRFB6ODhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRHA2ZW56OC9NTkRRMEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUErdnI2ek16TUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVZGUlVFeE1UQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnSUNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQStQajRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBc05YdUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXB6QVNOQ0lRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNRWURnMFlkT0FZQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBa2VyNTR1ejJBQUFBQUFBQTZPam8rdnI2QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDd3NMTkRRMEFnSUNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSFIwZEhoNGVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUE0T0RnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFPSGg0ZnY3K3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRFUxTlIwZEhRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUI4Zkh3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU52YjJ3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQUDMvSC9qOWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBR0FRQmxNekZnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCSU1CbzA3RmdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU1UZDhRQUFBQUFBQU9YbDVRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDNHVMZ1FFQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUMwdExRZ0lDQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFPVGs1UDcrL2dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEZDNkMEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFRRTRPRGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFVRkJRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQURHeHNibjUrY0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEUzQvTUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQnVOaFVGQXdJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQTVKQkprRWdZQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNzM2ZNQUFBRDcrL3ZvNk9nQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFZR0JnVkZSVUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEQXdNcEtTa0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFENysvdnY3KzhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBMnRyYUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTlRVMURBd01BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFIUjBkQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBcEtTazBORFErdnI2QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBMXVuMkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBV0E0Rkx4OE9BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFRRUFZaThUQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFyL1Q4N2ZUNjhQRHdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJeU1qQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBR3hzYkNBZ0lBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQThQRHdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQTHk4dlgxOVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ2dvS0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQbjUrZFRVMU5yYTJ1RGc0QXdNRENJaUlqSXlNaGtaR1FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQWdJQVVGQmZ2Nyt3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUHo4L0xlM3Q3ZTN0eFlXRmdRRUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0lDQTRPRGhrWkdSNGVIaElTRWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFETXpNeHNiR3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBS0NzM0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRm9uRHdJQkFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFERWZEZ0FBNXdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT1h1K0F2NzhnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFvS0NoTVRFd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlDQWhzYkc5M2QzUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU83dTdpTWpJd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEMDlQUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FnSVhGeGNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQURxNnVxdHJhM3c4UEFBQUFBQUFBRDA5UFRTMHRMUzB0STZPam8rUGo0QkFRRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSEJ3YzJOamJGeGNVQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRHE2dW9BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQURRME5BQUFBQWVIaDQ1T1RraUlpSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ2M3dm9BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXJHZ3NBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUJnTjlHd21ENWZjQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRG44Zm9ZL3ZRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFXRmhZQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFXRmhiZDNkMEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUR6OC9NQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBOVBUMEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSEJ3Y0JBUUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQTl2YjJxS2lvOWZYMUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXhzYkc3Ky92RGc0T0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnSUNCQVFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUhoNGV6YzNOK1BqNEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQTR1TGk0dUxpSlNVbFJVVkZEdzhQQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBN2ZQNkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUdCQUhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXpOS2FVd0FBSUFCSlJFRlVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFMQllKQU9YM0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUE4Zmo4RGZ2MUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUJBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBREF3TUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBOVBUMEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBU0IrMzRFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEvLy8vQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQkFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBeXNySzlmWDFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQTE5ZlhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBVTFOVFNVbEpyNit2QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEyOXZiNCtQalZsWldHeHNiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUErLzMrQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQUVCQ2djRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBR0EwR0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBOHZqOS93TC9BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUF3TURBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNRa0pBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEvLy8vQVFFQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0lDQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTTdPemdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNnb0tEZzRPQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUGo0K0tXbHBlSGg0UUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCd0RBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXNIQWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT2oxKy8zOS9RQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUF3TURBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEOS9mMEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEejgvUDUrZmtBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQVFFQTBORFFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUQ5L2YydHJhM3U3dTRBQUFBRUJBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQOEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEdS9nQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQWdJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUQzOS9jQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdJQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBNysvdkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXdNREFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFFQlJVVkZSMGRIQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBK2ZuNXRyYTIvdjcrQ1FrSkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBOWZYMUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdFQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBNXY3Ly9mNy9BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUUVCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEvUHo4QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdJQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT2JtNWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQW9LQ2c0T0RnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFESXlNbVZsWlNVbEpRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU9QajQ5alkyQVFFQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUFgxOVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQklNQlFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU9iditBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBb0tDZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQUHo4d0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU5EUTBBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRDQrUGp2Nys4QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUExTlRVQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVVGQlJVVkZSbFpXVTdPenNXRmhZQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFERHc4TU9EZzRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRHA2ZWtBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVBd0pUREFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQURjNnZZQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTEN3c0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEcDZla0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVSRVJCQVFFL1B6OEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEyOXZiTmpZMkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFNakl5MU5UVTZlbnBBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBS0Nnb0JBUUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEzOS9mOWZYMUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRkJRVVBqNCtQajQrK3ZyNjlQVDBBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBL2YzOTYrdnJ6OC9QNHVMaUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBN3U3dTd1N3VBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSt2cjY3ZTN0RXhNVEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQaGdKcmR6ekFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUF2ZDd5UVNrVEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRHc4UEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBOHZMeTkvZjNDUWtKQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDZ29LTlRVMUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFNdkx5ek16TXdNREF3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUUVCRmRYVjdXMXRkM2QzUUFBQUFBQUFBQUFBQUFBQUFVRkJVdExTeWtwS1FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFLdXJxOXpjM0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVlHQmhJU0VnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJVVkZTa3BLY1hGeGNQRHd3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVBYMTlRTURBLzM5L1FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFOL2YzeE1URXdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDc1hDUURjOHdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJWGw5Mm51OXhzU0NRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQThQRHdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU9IaDRTZ29LQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBaElTRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEeTh2TFgxOWNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUxDd3RXVmxaWVdGZzFOVFVpSWlJbUppWkhSMGRvYUdncEtTa0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFRRTdPenNnSUNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQURtNXVZWkdSa0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEbTV1Ynk4dklBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBdEhRMEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ216ZXNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlDQWdSRVJFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQURkM2QzNCtQZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSWlJaUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXU3dTc5ZlgxQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSVNFaFJFUkVWMWRYVTFOVE1qSXlEQXdNQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFRRUJNek16QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUE3ZTN0R1JrWkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQTB0TFMvdjcrQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRmc0SGFCTUdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWR0LzAxZVR6QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFIQndjQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEvZjM5MWRYVkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQW9LQ2l3c0xBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVBqNCtMUzB0UDM5L1FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCUVVGQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQRHc4QmNYRndZR0JnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU83dTd0alkyQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUZ3dEVnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFHbTk1ZTcwK2dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCc2JHd0lDQWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT1hsNWVIaDRRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNnUnBXbEFBQWdBRWxFUVZRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBMk5qWUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRGUzdDZ4c2JIOC9Qd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRDkvZjBBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVCQVFDQWdJa0pDUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRGMzTnplM3Q0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBMUloQkFCd01BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBREQrZjUwdCtMeTkvc0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUdCZ1lnSUNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEUjBkSGw1ZVVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRnhjWEtDZ29BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEyZG5ac0xDdzlmWDFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQTV1Ym1BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUZoWVdBQUFBSUNBZ0JnWUdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUExTlRVMDlQVC9mMzlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQmdRQ2dEY1VBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFuKy82WkxEZjRldjJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJeU1qQXdNREFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXpjM04zTnpjQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVCQVFBSUNBZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTnZiMjV5Y25ObloyZi8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUGo0K01iR3hnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJNVEV3QUFBQVFFQkNvcUtnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTi9mMzhQRHcrN3U3Z0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQURzbEVXVVNCZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBS3Z6L0NhdjRMRE82Zmo2L1FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBa0pDU1VsSlFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFOYlcxc1hGeGZUMDlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFSRVJGRFEwTUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUQyOXZhdXJxNmZuNS9WMWRYMzkvY0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEejgvT3VycTd3OFBBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFiR3hzQUFBQUFBQUFlSGg0VUZCUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUR5OHZMRXhNVEl5TWpwNmVuOC9Qd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQXdKNFBoa0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUQ2QUFCUnpPMU9xZHl4eitubzhQZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWpJeU1PRGc0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRHQ3ZTIrdnI3THk4dnE2dXIrL3Y0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTWpJeTNkM2QzdDdlQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQTZlbnBzckt5QUFBQUdob2FHeHNiQndjSEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBN096c0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBMWRYVjZlbnBBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUE4dkx5MWRYVi9mMzlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJU0VoQUFBQUFBQUFBQUFBTWpJeXY3Ky8rL3Y3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQTZ1cnE2dXJxQUFBQUV4TVREZzRPQXdNREFBQUFBQUFBQUFBQUFBQUFDUWtKSVNFaEFBQUFBQUFBSWhZTHNqWVVUc3JzQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXUvZjl1OHZ0QU12dFZnMEVPeGNKR1EwRi93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBM3UvNUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUF3TURNek16d3NMQy9mMzlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBNStmbjUrZm5Bd01ERVJFUkVCQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZi8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVBiMjlxYW1wdXZyNndBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNzckswNU9UZ0FBQUFBQUFBQUFBQUFBQU8vdjc4UER3d0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCTVRFenM3T3dBQUFBQUFBQUFBQVA3Ly80dTc0bmpnOVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSU1lQ254SUlBQUFBQUFBQUFBQUFBQUFBT1hsNWMzTnpRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFeE1UQUlDQWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFLQ2dwVVZGUVBEdzhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUE2T2pvQUFBQUFBQUFBQUFBQUFBQUFBQUFSRVJFME5EUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQVFGeVF4MkNIZ3NBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWJHeHN0TFMwQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUJBUVdscGFFaElTQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU96czdGQlFVQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBR2hvYU5EUTBBUUVCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQlFNQ2QwUWRoUjhMQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJU0VoTURBd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJBUUVGeGNYQ0VoSVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQm9hR2pvNk9nQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJvYUdqdzhQQVlHQmdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFZRUFuWkVIcU11RVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQjRlSGpZMk5nUUVCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTEN3dFZWVlUvUHo4QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBV0ZoWlVWRlFFQkFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUkVSRkFRRUFaR1JrQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUF3RmNPQm5OUlJzK0J3TUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFZR0JoQlFVRVNFaElBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUF3TURPam82WkdSa0lpSWlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFKQ1FrV1ZsWkN3c0xBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBZ0lOVFUxTlRVMUNBZ0lBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFNaUVQdFZjam55d1FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ1FrSk96czdNREF3QmdZR0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnSUNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUE0Q0FnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXNMQ3l3c0xCNGVIdm41K2UzdDdRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdJQ0VSRVJFQkFRQWNIQndBQUFBQUFBQUFBQUFBQUFGQ1R3VndBQUNBQVNVUkJWQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEwTkRTRWhJUW9LQ3ZQejgvdjcrd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBb0tDaDRlSGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFZRUFqQWREV3NsRGlvQS85RHMrZkgvQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUlQQlQ0a0VBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUJBUThQRHlBZ0lBY0hCL0x5OHZ6OC9BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFNREF5WW1KZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSC8vLzhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEdzhQRGQzZDNhMnRyZzRPQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUUVCQTBORFFzTEN3SkNRa0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEdDdlM241K2ZuNStmMzkvY0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBVEV4TTdPenNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEMit2M04zL0hLNC9TRzMvVHUvd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0RIZ3A4U0NBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQURzN096bDVlWHA2ZW40K1BnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFSRVJFOVBUMEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQi8vLy9BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBK3ZyNjd1N3U4Zkh4OGZIeCt2cjZBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXdNREV4TVRGQlFVRWhJU0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBOS9mMzlQVDArUGo0OVBUMC8vLy9BQUFBQUFBQUFBQUFBQUFBQ1FrSklTRWhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBLy8vLzVlLzQ2dkg2N2ZYNzhQZjhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUZ3MEdQaWdTQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUE5L2YzOHZMeSt2cjY4L1B6QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUE0ZUhoKy92N0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFIeDhmTHk4dkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWYvLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVBYMTliMjl2UUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDOHZMeDhmSHdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQURlM3Q0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBVkZSVUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQThQRHczOS9mQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEUTBOQ2dvS0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUDM5L2M3T3pnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQWdJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEOS9mM0x5OHYwOVBRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQkFRZEhSMEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUErL3Y3emMzTjZ1cnFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJeU1qQkFRRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU8vdjc4N096dlgxOVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFZR0JpTWpJd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEejgvUGUzdDdoNGVFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUF1TGk0RUJBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUErL3Y3K1BqNEFBQUFBQUFBQUFBQUFBQUFBQUFBTHBuejlRQUFJQUJKUkVGVTlmWDE4L1B6NStmbjhQRHdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFHeHNiR2hvYUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTUhCd1RFeE1RNE9EZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU0zTnpCZ1lHUnNiR3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT1BqNCtMaTRqczdPd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFNSEJ3VEV4TVE0T0RnQUFBT3JxNnMzTnpRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUF3TURDOHZMd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQy92Ny8yOXZZQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQURRME5EczdPd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRHE2dW5GeGNRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDK3ZyNzI5dllBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlDQWc1T1RrRUJBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUE2K3ZyNk9qbzl2YjJBQUFBQUFBQUFBQUE4dkx5Nit2ckFBQUErL3Y3N096c0FBQUFBQUFBKy92NzdPenNBQUFBQUFBQTYrdnI5UFQwQUFBQUFBQUFBQUFBOVBUMDZPam8vdjcrQUFBQUFBQUFBQUFBNmVucDUrZm44UER4QUFBQUFBQUFBQUFBQUFBQUFBQUE5L2YzNStmbjUrZm41K2ZuKy92N0FBQUEvZjM5Nk9qbjlmWDFBQUFBL1B6ODUrZm45ZlgxQUFBQUFBQUFBQUFBOFBEdzZPam9BQUFBQUFBQUFBQUEvUHo4Nk9qbytmbjZBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSt2cjY1K2ZuOS9mM0FBQUFBQUFBL3Y3KzUrZm44dkx5QUFBQUFBQUFBQUFBOHZMeTdlM3RBQUFBL3Y3KzUrZm41K2ZuOVBUMEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FnSU9qbzZDUWtKQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFbEpSelEwTWt0TFN0M2QzUUFBQU1QRHd5d3NLakl5TUl5TWpPcnE2cE9Ua3dBQUFBQUFBTzd1N1pLU2t2ejgvSXFLaWpJeU1DMHRMTXpNekFBQUFOWFYxVU5EUWpVMU0zTnpjL2IyOXZ6OC9JcUtpalEwTWpVMU1wQ1FqZ0FBQUFBQUFBQUFBQUFBQVBqNCtGMWRYVFUxTXpVMU1qVTFNdTN0N2ZiMjltcHFhalUxTkVKQ1FNVEV4R3RyYXpZMk5FdExTdDNkM1FBQUFNUER3eTR1TERVMU00cUtpZno4L1BMeThtdHJhelUxTStYbDVmMzkvdnY3Ky8zOS9RQUFBQUFBQUFBQUFBQUFBTy92NzJKaVlqWTJORXhNUytQajQvbjUrWDkvZmpZMk5DOHZMczdPemdBQUFNM056Uzh2TFphV2x2djcrbnQ3ZWpZMk5EVTFNcXVycVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBd01ERDA5UFF3TURBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFETXpNN2s1T2FJaUlpRGc0THk4dktBZ0gvSHg4bUxpNDNrNU9UOC9Qd0FBQUFBQUFBQUFBQUFBQUFBQUFESHg4ZjUrZm5kM2QvQndjRnFhbW4yOXZaK2ZuMmVucDdmMytFdExTMjV1YmpPenM3eDhmSGQzZC9rNU9lQWdJRUFBQUFBQUFBQUFBQUFBQUR2Nys4Z0lDRGs1T2JrNU9mazVPY1lHQmk1dWJnM056YmYzK0dmbjZGYVdsZzlQVDNpNHVTTGk0eCtmbjN6OC9OMmRuVEZ4Y2ZjM043MDlQWEt5c3ExdGJVN096dmk0dVFpSWlHWGw1VWpJeUdkblowQUFBQUFBQUFBQUFBQUFBQ21wcVpRVUZEaTR1U0ZoWWIyOXZiQndjRU1EQTNlM3VDL3Y4QnVibTN3OFBCeWNuTEF3TUo5ZlgzQXdNQVZGUmJkM2QvazVPZGhZV01BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFiR3hzOVBUMEpDUWtBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFOemM0N3U3dXlNaklXRmhZNStmbm41K2VnWUdCQndjSEFBQUFBQUFBQUFBQUFBQUFBQUFBNXVibVNrcEtCZ1lHSGg0ZlIwZEl6czdPRkJRVUt5c3NCQVFFUkVSRTBkSFM0dUxpVVZGUkJnWUdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEdzhQejgvT1hsNWRZV0ZnZjM5KzYrdnIwZEhTUkVSRkJBUUVLaW9xU1VsTFEwTkRBUUVCTlRVMTBkSFIyTmpZU1VsTEhSMGRCd2NIVGs1TzV1Ym0yTmpZUkVSRUFRRUJBQUFBWDE5Z3lzck1WbFpXQUFBQUFBQUFBQUFBQUFBQTBkSFJQejgvQVFFQk9EZzRKeWNuMGRIUlRFeE1CUVVGSUNBZ1BEdzkzTnpjUUVCQUh4OGZBQUFBMDlQVVJrWkdCZ1lHQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQndjSE5UVTFNek16QlFVRkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBc0xDdW5wNlJnWUdQZjM5dGZYMWg4Zkg1YVdscWFtcHFHaG92ejgvQWdJQ01mSHh2cjYrZ1lHQnR2YjNBQUFBQVFFQk8vdjd3QUFBUHo4L09MaTRRd01EQXNMREFBQUFBQUFBQWNIQi8vLy93d01ET2JtNWdBQUFQMzkvY25KeWtaR1J3QUFBQUFBQUFBQUFBb0tDcSt2c052YjJ3QUFBTmJXMXJtNXVQLy8vd2NIQndBQUFBQUFBQXNMQ3dFQkFRQUFBQUFBQUFjSEJ4TVRFK1BqNHY3Ky9nSUNBZ0VCQVFBQUFBQUEvd0lDQWdBQUFCY1hHT3JxNnhjWEZ3RUJBUUFBQUFBQUFBQUFBQUFBQUJJU0VmSHg4UlVWRmZMeThnUUVCQmdZR09ycTZpc3JLd0FBQUFjSEJ3QUFBQUFBQUFBQUFBQUFBQlVWRmV6czdBQUFBUHY3KzlmWDFnZ0lDQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFVRkJTSWlJaU1qSXdRRUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCSlNVcHZiMjVyYTJ6THk4dCtmb0FtSmlZY0hCd1lHQmpFeE1TV2xwYTd1N3RSVVZHQ2dvSXVMaTZYbDVZOVBUNDZPanBOVFV4MmRuZmc0T0FsSlNVWUdCZ0FBQUFBQUFBQUFBQUFBQUFBQUFBMk5qVlNVbFB3OFBEcjYrc1FFQkFkSFIwQUFBQUFBQUFBQUFBQUFBRFIwZEhzN093QUFBRGk0dUlxS2lvQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBYUdob1dGaGVKaVlnb0tDbmQzZDBnSUNBQUFBQUFBQUFBQUFBY0hCd1NFaEtLaW9wRVJFUXpNek1BQUFBQUFBQUFBQUJTVWxOM2QzWmFXbHUzdDdaaFlXSkRRMEpVVkZSdGJXMElDQW5aMmRoTlRVMEFBQUFBQUFBQUFBQkJRVUZhV2xscGFXclYxZFU3T3p3UUVCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBU0VoSWNIQndiR3hzRkJRVUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQURnSUNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRmhZV016TXowOVBUTlRVMVRFeE1Bd01EUER3OEFBQUE4dkx5ZTN0N0VoSVNNVEV4L2YzODZlbnBPam82OXZiMVNVbEpSRVJGMXRiV0hSMGRYVjFkQUFBQTl2YjJMUzB0QUFBQSsvdjc5dmIyTXpNelIwZEgzZDNkSEJ3Y1lHQmdCZ1lHQUFBQUFBQUFBQUFBQUFBQXpNek0zOS9mNysvdkhoNGVTVWxKOVBUMEpDUWtDUWtKQUFBQTdlM3RLQ2dvQ1FrSkFBQUErUGo0TmpZMk96czc5L2Y0Mjl2YkFRRUJLaW9xQ2dvS0pTVWxDUWtKQUFBQU9EZzQ5L2YyK3ZyN0l5TWpBQUFBQUFBQUFBQUFHeHNiSXlNaTVlWGtRME5FT2pvNkRnNE9RRUJCMzkvZzVlWGxHeHNiTHk4dkFBQUFLaW9xQUFBQURnNE9QRHc5NE9EZkt5c3FWVlZXQXdNREFBQUFBQUFBOC9QejUrZm5BQUFBQUFBQUFBQUFBQUFBQUFBQUVSRVJEZzRPR3hzYkl5TWpLeXNySWlJaUVCQVFBd01EQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFmLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUHo4KytmbjZKR1JrVkJRVUR3OFBBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRHQ3ZTQ2T2pncUtpbzRPRGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCLy8vL0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQk9jQUdFQUFBWWpVbEVRVlFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEvLy8vLy8vL0FnSUNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVhBV2ora0IvLy8vQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUGNNb0JiQlJ4S1pBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJsYXJnZUJsb2JLZXkiLCJtaW5QaW5MZW5ndGgiLCJjcmVkQmxvYiJdLCJhYWd1aWQiOiI3NzNjMzBkOTU5MTk0ZTk2YTRmNWRiNjVlOTVjZjg5MCIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImxhcmdlQmxvYnMiOnRydWUsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6ZmFsc2UsImFsd2F5c1V2IjpmYWxzZX0sIm1heE1zZ1NpemUiOjEwMjQsInBpblV2QXV0aFByb3RvY29scyI6WzEsMl0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6MTAsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6NzIsImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN31dLCJtYXhTZXJpYWxpemVkTGFyZ2VCbG9iQXJyYXkiOjEwMjQsIm1pblBJTkxlbmd0aCI6NCwiZmlybXdhcmVWZXJzaW9uIjoxLCJtYXhDcmVkQmxvYkxlbmd0aCI6MjU2LCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6MSwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjQwfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMTItMzAiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJHU1RBRyBPQUsgRklETzIgQXV0aGVudGljYXRvciIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjQxMjMwMDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMTItMzAiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MX1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wMS0yOSJ9LHsiYWFpZCI6IjAwNTYjMDAwMiIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFpZCI6IjAwNTYjMDAwMiIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJQaXhlbFBpbiAtIFBpY3R1cmUgTG9naW4ifSwiZGVzY3JpcHRpb24iOiJQaXhlbFBpbiAtIFBpY3R1cmUgTG9naW4iLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJ1YWYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfc3Vycm9nYXRlIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImFsbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhdHRlcm5faW50ZXJuYWwiLCJwYURlc2MiOnsibWluQ29tcGxleGl0eSI6MzQzNTk3MzgzNjgsIm1heFJldHJpZXMiOjUsImJsb2NrU2xvd2Rvd24iOjkwMH19LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJzb2Z0d2FyZSJdLCJpc0tleVJlc3RyaWN0ZWQiOnRydWUsImlzRnJlc2hVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZWQiOnRydWUsIm1hdGNoZXJQcm90ZWN0aW9uIjpbInNvZnR3YXJlIl0sImF0dGFjaG1lbnRIaW50IjpbImludGVybmFsIl0sInRjRGlzcGxheSI6WyJhbnkiXSwidGNEaXNwbGF5Q29udGVudFR5cGUiOiJ0ZXh0L3BsYWluIiwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSGdBQUFCNENBWUFBQUE1WkRiU0FBQUFBWE5TUjBJQXJzNGM2UUFBREZWSlJFRlVlQUh0WFF0d1ZOVVpQdWZ1M2Mxcjg4UThnSVFRQ3BnMGtnUWFYcnViUlo2aXBRelRJdFN4VkxIVGtTUWdVRUVMQXBPUlVZZE9PekRESTlLWlZndVVqakxpMkhhY3R2TFE3Q1lFU3RVYUVFS3JEZzRSYVMwaUVVbXl1ZmYwUDhHNzdvWk45blh1YTNOT0puUHVQZmVjLy9GOTk1eDdIdmVlUllpSGhFWUEvL0dPTFE4a3RJZlJPRWVFS3d2LzEzQXNtaUpHenlzU1dUNW9kQ00xc3crVDQ2QXJvUWdXTkFPUEs5SUZBVTZ3THJCcnA1UVRyQjNXdW1qaUJPc0N1M1pLT2NIYVlhMkxKazZ3THJCcnA1UVRyQjNXdW1qaUJPc0N1M1pLT2NIYVlhMkxKazZ3THJCcnA1UVRyQjNXdW1qaUJPc0N1M1pLT2NIYVlhMkxKazZ3THJCcnA1UVRyQjNXdW1qaUJPc0N1M1pLT2NIYVlhMkxKbEVYclhvb3hZS2NWcExka1QxcDVKWHN5Y1Uzc2lxSFkydE9xbFZNczRsQ3NwaEUvejd2NlVFcjJ1NDVod25xQkJNN0NmeGpUSzRqSkZ5RStEelVodlpVK1ArRnkwV3ZteUlrTE1GQ2l2WG04UG1sN3hmK2NHTG5zS21qY3NYMHBHOFJRb3FBRmZvZk1pU0o2Q3RFU0NrUTZ3K2s3MFNHWklSa1NBVzIwUXFQdHdOdUFpL0M1SmdvQ0VkM09wMGYrQXNZN0NDaENFN0t0WDgyL3ZFWlowY3Vyc2kwWmFkK0d3ajlqb0kzSEN1SDhjZUVqQVJwU3hGQlMzMlNUQW4vR0NIeVY0c2dITmpsY0hnd1ZQZjRsYkNSZ0YvTDJXUVlZMkp4Q2R2RW51SmxrOTRlOTVnYnB4Um1UZ0lpcmJISW9XVnU5UGErczc3MTVNUll5OU55R0tHUGtJRDNpeGp2TTBMTk5tME5Gak9TT2ljODk5MS9GQzJ0dWd2dTBHa1VYS2ExbEFxTUlZQXRKVWdtVzN5SWJGblI1SDBkQzJocm84dlZHb01vSmtWTVI3QTFNK1dMaXUwTDN4bXhzTHdLRUxqYjJNMFB1WS9JNkw0VkhzOVJUQ3hiRzkyT3Q1aXdGb1VROHhBc1lLbGkyd0x2NkVlbVRJU2FlbmNVUHVxZmxhRFpCRW16YXoyZUl3S3kxZSt1bVhwQks2Tk1RWER1akRGbkp1OS8wR3BKdGM0d1FqTWNLem5RejVzallWOWJYWk4zVzE3UnlHY2JTa3E2WXBVVmFUbERUM1RRNTZ6N1NHM1Q5TVBMeTRIY095TjF5dEQ1Q0xIQm9HdnpsVXVYemtLTm5xTzJyWVlsT0h0UzRZVjcyemQ4bGxrMTNBMjFGanFuaVJXZ05vOGhDUCt0MXRPODlXVkNMR3A1WjBpQ3k1NmE0Nmw1NDlFaVpCVksxSExjRUhMaHhpVkUzblRNMjN5azd0U3BBalZzTWhUQmRFdzcwMVB2SGJ2V1hRTzFOa1VOaHcwcEV6cU5jbmZQdXl1YlRqaFoyMmNZZ3EzMnBDL252YmV1elY2VzcyTHRwQ25rRVpJdlllbU5GWjZXQlN6dE5RVEJ0bUdwVitlZVdYL1Jka2VxZjJxUnBaTm1rVVZiTFV5a1YrczhuaCt6c2xsM2dsT0xzaTdQYTN2aW1zVnVLMmZsbEpubHdNU05LQ1A4WXEzWHU0YUZIN29TYk0xS3VUYnI1Sm9iMkNhTVllRk13c2lnblMrWmJLL3plbjhTcjArNkVVeVg4K2E4dmZaaklIZHN2RTRrYW5sWkpudWh1ZjVlUFA3cFF6Qk1PODQrc2ZvOU1TTzVJaDdqaDBCWkM0eVZYNnB2YnA0ZXE2KzZFT3g0ZGJrM3VUQmphcXhHRDZWeXRPTWx5ZVRQUUhKeExINXJUbkR4c3VxVHc1eWpaOFJpN0pBdFEwaU9KSkUvTkJBUzlkcUJwZ1NuRmVkMHdGSmZZc3dwYTM2M2tlbWZlcjNQUkt0V000SUZpNlhYZmJ6MktoaVlGYTJSUEwrQ0FGNWY1Mm1acjV4RkVtdEdjTlh1UlY1WUhab1FpVkU4endBSTlNMWRTeTg4ZWZwMDVnQTVia3ZXaEdCN1NjNmx3dnVycHR5bW5TZEVqUUJNaEJSMDNyejVkS1FGTlNGNDJpc1BkMEJ2RUY0cDVvRUZBakpCOWFzOG5zcElaS2xPY05HU3FyK25qTXJpUTZKSTJJZzhqOFdIMEc2b05HSFh5ZFVsR0w0bXFOeXhhRmprZHZPY0VTTkFrSE5sYy9QOTRmS3JTbkRKVDZlYzVQUE00U2lJL2JwTXlGUGhTcXRLY05tbXVUbmhET0RYWTBjQVh2dXBDTGQrckJyQjlObWJNQy9LeGM2QitpV0p2SEV3SmFvUlhQN3N2YmJCRlBOcnJCQWcwMkdlMmoyUU5GVUlUaCtmZXhIV2VpUHF4ZzlrR0UrUEhBRlpJbzhNbEZzVmdrczN6djVvSUlVOFhRMEV5QThhVHA4T09jK2dDc0VGODh2R3FPRUdseGthQVpqZHNsL3A2bG9VNmlwemduTm5qbTFESWg0VlNobFBVeEVCZ240VVNqcHpnc2V0ZHRNVkl4NDBSZ0JtdGVhRldvUmdUbkJPZGFFcWIraHJqSmNaMVZsZ0VlSzIzalJUZ3VuN3pmQXkzWGd6b3BNSU5zc1l6K3p2QjFPQ1J5eTY2MElrRStEOWplRG5iQkNBblVIVUpiaG9jVlUzRzFPNWxCZ1JxRmpiMGhJMFBjeTBCcWVYNWZHVm94aVpZVkVNV2sraFM1SW1CY3BpU2pCOGZsSVlLSndmNjRKQTBFdU56QWltZTFTQk8veUZPbDA0L1VZcHZBRVExTWxsUm5CV3hmQlB2bEhEai9SQ0FKWVExYW5CMlpOSGZhR1hVMXh2RUFMcTFPRFVrbXdwU0EwLzBRVUJtSmNlSHFpWVdSTnR6UXE1bUJHb2l4OXJnMEJ5NENjdTdBak9TR0ltU3hzY0VsZkxGYTgzWGZHT0dTbFd1NDJaTE1VNEhzZUdnQTFqOWdTTGFiRGJNZytHUUVDV1JidGlpSmlhWldjeWR0M2MwYjZYWE1abGltQXp4cElrQi9WQXplZ0R0ZGxua2Z5dHFUajN3NTh6R2Q3VUVxK1ArRWpFSDBXWkZUd3oyQTNiNW5VcWR2cVpWaExpaVAxQzQ1REJpekpBQUo3QmZpNllFUXdUM1g2aERHemtJdUpBb05SbTgzUEJqR0NZQS9VTGpjTTJYalJlQkREdWViUzZHcjVOdXhYWUVZenhmeFdoUE5ZUkFVTCtFNmlkR2NFQ0llMkJndm14VGdoZ0ZNUURNNElSeHBwdFU2OFRkS1pRQ3ovcEU4UURNNEozdVZ5ZkFNbjhPYXp6YlFBYlVLdFVnOEV4akVqUTNhT3pyME5VdlVVOWdvSGlkNGNvcXNaeE8wa000b0JaRTkzbklVYkhqT1BwMExNRWhxcm45a3laOG1tZzUwd0poaW15TndPRjgyTnRFWUF0V1k3MzE4aVVZTnJSZ2w1YzBET2d2MEorcmg0Q0FoSFVKYmpQZEhMN1hhU2VTMXl5SHdINHhkT1UxS1EzL2VkZkh6Q3R3VlNtSUtERC9aWHdjL1VSZ09ldjkxZlYxZlRWNWFEQW5PQmNwL01vYUxnY3BJV2ZxSTRBSm5oL0tDWE1DVzdBV0Jhd2NEQ1VNcDZtRGdKUWU3dHQ2YW1IUWtsblRqQlZZa0Z5eUxzcGxBRThMWDRFb1BmOHB4MFRKMTRMSlVrVmduZlcxUHdUZXROQkErNVF5bmthR3dTd0lMdzRrQ1JWQ0tiS1lKL01iUU1wNWVuc0VJQ0tkR2FQdy9INlFCSlZJM2hXamVNUVJ2amZBeW5tNll3UXdPZzVJQmsrYUFnZFZDTjRDY1lTRWhDdnhhRnhaNUtLTWZwd3B0UDUwbURDVkNPWUtzM1B6dDRIMGFYQkRPRFg0a0pnVzE5RkdrU0VxZ1EzbEpmM1lDUnNHRVEvdnhRakF2VFptKzl5L1RaY2NWVUpwc29iM2M0RHNJellGTTRRZmowNkJBUUIxOE9jUTIrNFVxb1QzR2VBQmRmRFlEeXNNZUdNNWRjVkJQRHZkenVkRVZVYVRRaCszdWs4UXdTOFV6R1B4N0VqQUUzemRTSFp0aTVTQ1pvUVRJMHBTRTdlQkxYNFhLU0c4WHloRVlBZnExelpmMUUvZE01YnFZQzVkbUZsUzhzRStNRHJKSHdGa2FLZDFzVFJCUE1LdjJ0MHV4Nk94aVBOYWpBMWFwZkQwUVp6WEd1aU1aRG4vUm9Cak0rblphYlhSNHVIcGdSVDR4cHJhbjROZCtLZ2cvTm9uVWowL1BEY3ZTbGFoQ1cvckt5OEVhMnZtaE5NRFV3V2hlVXdkRG9ScmJGRE5MOEVRNklIYnJWKzBTT2dDOEhiSFk2YkthS3dnSGU2d2hNRzA1RjFNQ1I2TFh6TzBEbDBJWmlhQWlSZnRRbDRQbndOMFJIYU5KNktzTkJBSDJueElLRnBMenFVb2ZWZWI3a3NreU93SE1JM0VnOEVTTURibjNlNWZoYVlGTXV4YmpWWU1YYTN5M1VXdm5seFFrMytRRWtiNmpFMHk1dFprRXR4MUwwR0syVFduVHBWSUhmMy9BWGVGQml5djdjRXZXWFl0QjNWN1hHNTlpcTR4QnZyWG9NVkIranNUR1pLOGd3WVFnM056MTh3L2dxbWM1ZXdKSmRpYTVnYXJCRDlNaUdXNDk2V0JwZ1EyVWczdUZiU0V6bW1vd2tSV1JmdmRFOTduN1dmaGlOWWNiQ3V1WGtla2VVRHNEMXVycEtXaURFMHlmdlRNakpxWTVuRWlBUVB3eEpNallmZkh4aloxU3Y5Qm5yWTkwVGlqSm55QUxHZnczY2dqemZXT0Y5UTAyNURFNnc0WHV2eHdDOWQ0eDNRWkk5UTBzd2MwMXBMQkdFZExLTUdiWmlpaGsrbUlKZzYvZ1Rzb05vcG82Y0pJcXZnRkw1VU5WOEFzR0c1MUZMYjZIYThwWlgxcGlGWUFlU3gxdFp4UHA5dkF5Sm9HVFRkcHRnQUZZWS83YkM5eGJONUx0ZkJTRjZ6VVh4bEVadU9ZTVhwTlNkT2pPNzJTVTlDYjNzNUVKMmtwQnNyeG0zd3RlVXplVTduSVNCVzFzTTIweEtzZ0xXNnRUVy94eWM5aUpEOEVQMU5leVZkcnhnQS9STDZDNjhRQzk3WDZIQWNoOW9MOTU5K3dmUUVCMEszeXVPcDlHSDhFRUQ2ZmVpUUZRZGVVL200Q3lab21nakdCK3daOXNOcURYbGk4U0doQ0E0RUFIcmVZekFSWmhNc3o0TDNtR2JDRkdoKzRQVjRqZ0cwWHBnN1B3M1RSTWVBMUtNRkkwYTBOSlNVZE1ValU2MnlDVXR3ZjhEb1hMZlEzVjBLazcxM0VobVZRcnM1SGxyUFlSQ25RNDJuVytEVGZ6c1FSemZ5N0lUMFRnQ25FNXI5NjVEdklpTDRQRFM3ZFArUmRtdGUzcjkyamh2WERjZUdELzhIRXFvYVk3bzhWWm9BQUFBQVNVVk9SSzVDWUlJPSJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDE4LTA4LTMwIiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJQaXhlbFBpbiBpT1MiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlVBRjExMDAyMDE4MDUxMTAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4wLjEiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDE4LTA4LTMwIn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAxOC0wOC0zMCJ9LHsiYWFndWlkIjoiMzRmNTc2NmQtMTUzNi00YTI0LTkwMzMtMGUyOTRlNTEwZmIwIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiIzNGY1NzY2ZC0xNTM2LTRhMjQtOTAzMy0wZTI5NGU1MTBmYjAiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiWXViaUtleSA1IFNlcmllcyB3aXRoIE5GQyBQcmV2aWV3In0sImRlc2NyaXB0aW9uIjoiWXViaUtleSA1IFNlcmllcyB3aXRoIE5GQyBQcmV2aWV3IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3MiwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3IiwiZWQyNTUxOV9lZGRzYV9zaGE1MTJfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJhbGwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURIekNDQWdlZ0F3SUJBZ0lKQU5wcUQ1MlRPVHVzTUEwR0NTcUdTSWIzRFFFQkN3VUFNQ1l4SkRBaUJnTlZCQU1NRzFsMVltbGpieUJHU1VSUElGQnlaWFpwWlhjZ1EwRWdNakF5TURBZUZ3MHlNREE0TXpFeE9ERTNNVEZhRncweU1URXlNekV4T0RFM01URmFNQ1l4SkRBaUJnTlZCQU1NRzFsMVltbGpieUJHU1VSUElGQnlaWFpwWlhjZ1EwRWdNakF5TURDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBT0dCTHRCbVVQSlFBQ1FXVkVlQnhlelJnWmRxR01QNmVUclB0eTh5dk05eEErai9YNGcybFJOTUY5YTBqdzNCamtXU3NvV0pqWVR1emV2R01nMnJiOU01cXFkL09ENDk4T0FrNlVFdE15YnIxNjJDTzJ3QjhTbjJuemZ6VWRid1pUNGR4bDI1MWxmWDVKc1pWVHlKZHVobEp6YktHZXRMM0pNbUNBcGV0U08weGNjR1NJVjlHVW9KbTc4S2xRTzZzbVNEQWtSRnhKOFBnOGJFNDQ5cWlJcVAvSzEwdVJldTY2VUNXZGFvWENLcVJkNWlrYlUrNmlnSkZIWno5NFVCUHJzZ2xjWTBGcTAzbnJCQnZycEV6R25pc0IvNDNFOUl0anI5VUxWNFBRUW1pdVdNY0lQbUZQMWpUTmdLS25YWnN4ZTExNEIvekIzVXhoSUIyOXJSb3BFQ0F3RUFBYU5RTUU0d0hRWURWUjBPQkJZRUZBTHZvdUtEVW5oakd4VVJSK00xSzFtTWlCdDdNQjhHQTFVZEl3UVlNQmFBRkFMdm91S0RVbmhqR3hVUlIrTTFLMW1NaUJ0N01Bd0dBMVVkRXdRRk1BTUJBZjh3RFFZSktvWklodmNOQVFFTEJRQURnZ0VCQUVPNDhBK2MrMUVhYzdaWUp2QnMzakE0MHFWaEVLZUV5MmkrSmlBZnd1R3pjZk1Vay80b0NaNVY1V0RMekdoYVNjYk1MRW9WTXF4SEZVRlhJMWtVOVBOVm9ueWd3WTB4VnMzbU5xbENKTStMWjJRdHhHcUNyREd4TVBBbHV2c0ZocjFtTWFIazdlQ3prSkFoaHB2VWFHOUYwN2ptbzVVN0hmRnlRcjB3UXhTaVVnNW5talhGZ2tjdWkycE1mT2VLQmRkQnk3T2M2dWhlQ1J5UHpPS2RZZWtnYlpQck5aLzJPbmhKcVEvNlNxOUtoejZoOTlBbVVwTVlVaXVhMG16Rm9TbkZreUVSTDBTNGgvYmJabFNFZUNpSkN4RkVEQlpCNFpnT3NPUkwyREhMamtUbmVQZ3M5YmpWcDNsVmVsSXBscWkrSzZPK01tTWxZRnJPT2V3YTVhND0iLCJNSUlES2pDQ0FoS2dBd0lCQWdJVWVmK1Z2SGtjVFFuRUQrK3dKTS9JeHpTVUxrMHdEUVlKS29aSWh2Y05BUUVMQlFBd0pqRWtNQ0lHQTFVRUF3d2JXWFZpYVdOdklESXdNak1nUmtsRVR5QlFjbVYyYVdWM0lFTkJNQjRYRFRJek1Ea3lOVEV4TXpJME1Wb1hEVEkwTVRJek1URXhNekkwTVZvd0pqRWtNQ0lHQTFVRUF3d2JXWFZpYVdOdklESXdNak1nUmtsRVR5QlFjbVYyYVdWM0lFTkJNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQW91Rk1UT0thRTBZdGV4T29pc1N4cCtFYmk1SUE0ZXNFU2N4MTZselFkcVY2L2VaODJLdEplTlhFdU5rQlZaRHBjMzJnU3R1eExCSDhtZ3NvSEJGYWkyRGtqZkJuNXFid1IvYzUrc25sd1p2amdWQTBoekt3OUN3QWVBd1JENWtyV3Q4OC9DVnlDa01jZ0xTR3dacy9yajdGL0xzM0ViZzdNcUxiYlFKOUNvemJiTGRKVVlJSGNQcFNaUHRvTXJaYjRHdm5pNmlWUzlVdkNLZ3BxYzZMR1Jtb1lHRzRaUjNsR0ovWFFaZnUrR2VKVzY3aWltTWoveW9YT3d4dWN4aXZaSEZrNmNRU2d3dXdpb2VObTR3dms4M0xoU3VXY3RmMmtBeVFjWjdrVW5wTmVlK2Q0TWdybUdVNFhNRkxpVGd1dGFCK2U5VjhkNUpUa1VPSGlMenRrUUlEQVFBQm8xQXdUakFkQmdOVkhRNEVGZ1FVTTVTQjViSHJWK2pwSU9NZEpsN3U3YmNuVFk4d0h3WURWUjBqQkJnd0ZvQVVNNVNCNWJIclYranBJT01kSmw3dTdiY25UWTh3REFZRFZSMFRCQVV3QXdFQi96QU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFDb3dSM0tUTGZpZEp5UUZOcUVGZlVyZlo5YWE5ZWdwT1F0TlJKZExTdEo2eHUyV2ZMd3ZHNG9qR0psQktObmZhNURJY3lRWWYvOHFKNGVsaUFWZU5YdVltZU1tZ05nWlp5dVk2RzF5V0NEMlYzc0Q2WjR1ajNTYmFET0hqM2dIdnN6Z1FocmhUMWgvcHVIUWtuNitoWUtBcDc3a003SWM2QVovUkZianBtTExrMkQwc0UxbHpULzAyaStCaDdNOHNtYWlEWjkrK0pHenhlU3VuOFcxSGxlWlVtMnFLR21SYTRYUGRyeVQ3eDZLR1VHblU0YTNicFVtVmVZOXJRL3NmTWQ1WlRvbyszdW5GV0R6b1ZWMnZOdTgrK1ZMQzl6bzQwRmFLUUxyOVZBSkRKNHlMRU5SN0tybVY4TDBjQ1hLSkdaV0FXdEc1UkdUbUhJaGQrbkI0MWc9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFmQ0FZQUFBQ0dWcytNQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUhZWUFBQjJHQVYyaUU0RUFBQWJOU1VSQlZGaEhwVmQ3VE5WMUZELzNkNTl3ZVFTSWdTOUFRQVhjRkxBUVppOWZwZVZ6MXRZL1dUWnI1V3hwYzdXNWtuTGE1akkzWjg1c3JTMm5NMnNqdFd3WlM3SVVINEg0eENuRVF4NERBWkY3NFY3dXM4ODV2OS9sSW5CdlZKL0I0UHY5bnUvNW51LzVudk01NTZmekEvUXYwSGIvSXJYM1ZGS1BvNDVjbm00aW5VSVdZd0xGUm1aUVV1d2pGRy9OMWlSSGgxRVowTlJWUnVkcXQxQmQrMm5TS3lTL09oeXMwK2xrM2UvM2tROXF2RDRaVXRhNFZWU1V1WTBlaXB5aVRoQWZvY29PUlZnRHV1dzNxS1JpQWQzcmJjRXRqVGpZSW9mNldhSHNDbXpWUFdDTXgrY2doOHRMcVdNS2FNV3NVakxxbzJSdEpJUTBvT3ptZXJwUXU0ZXNaZ3NPTmtHeEg3ZDBrZHZUVDE3czRPTVU3Vkk4WmhqZ0dhTStBcTlpRU51OFBpZjF1ZHowN013dktXZjhHbFZvQ0VZMDRQQzVXZFRhWFlGYlI4dk52TDUrM0tnZmI1eE5NeWE5UmFtSml5bmFNbEdUVnRGbHI2YmE5dStwcW5FWDR1TXVSUmdqU1lFaHJON3V0RkZlNmxxYWw3TmZrdzVpbUFHSHluUHBiazhWbVkweHN0bnB0bEZDVkNZdHpUdUJOODNRcE1MalR0ZXZkUHpTVW5KN2U4bWtqeFozOWZYYktEZmxkWnFidlUrVFVnR25CVkY2ZlEyaVBIZzRXMTZVV1V3dnpiazE2c01aRStQbjBwdno3SlNldUF5ZXM4bGNwQ21hS3VvL3ArcVdyMlVjd0lBSFdydlAwWUV6aFhBdExBYnNzSGhwN2lHYW12eWlqUDhyeXFyWFVXWDlYb293eHlBdWZOQnJwNDNQT0JGWFpsa2Y4TURSaXFjcHlvd0F3cHV6MngrZld2ei9EdGRlOXNtc3p5Z3RjUjZDMXdiZHpCbDZPbHE1V05ZWTRvR2F0aEpNcmtURXgwakFSU0hBVnMrNXJZa1FOWGIrUWdmUExzUTZnWHlJbnNyZVFmbXBtN1JWRllmTDg2bjFmaVVPa1l2U2hrVVB4dmJ1a3pveTZLMWloTTFobzNYelc2RXZTZlhBK2RwaVdHYVdkK2RvWHpMem1Hd0tZRkxDQXNSQWxQQkFoTWxDRlhVN3RCVVZQcjhIZ1ZjSkhXcStGMDBwbHIrRE1UZHJQNHp2eFkxMWtOTWh4VCtTZVRHZytkNFY1TFFKaXR5VUdKTkI4VkZac2pnWUJaTS9JSS9YQ1RrajBxeURPcEYyQVZRMTdDSWpVcC9EblQxVWtMNUY1Z2RqK3NTMXdnMWdFM2dpZ202MGZDWHpTblBYYnlBUGJJWHYrSURwRTE2VGhhSElTOXNreWhsbU1FNUYzY2ZxQUtocTJDMEU1UEgxZ1lhWGFMUERrWkcwSERKT25LV0hwNTFJMHo1U091eDhlMVdBdVp6ZEhRclRrcDhUbWpYb0krbGEwd0dac3p1YnFiTzNpZlE2QS9XN3ZWU1lzVjNtUjBKS3drS2M0V0hpQmttUjhJM0NDZ0k4N29PTDRxelQ1UCtSVUpCZWpFT2dBUEs4aFlQemF0TStlSVRwMklPOXlUUW1lcm9tUFJ4eDFxeEFjc2lsZS91YlNlRWJjV1FHWUVDZ2hjTFkySHlLam9nakgyNWhNcGpwVXYxT3VnbGk0ZWgyZVJ3ME8zMmJKamt5dUNnTnpnMHZ6bFlNU2lTczB1b280TUc3aE1PakNFYVgxeUZFMG5TdmpCenVUbkVwSzg2WjhJb3FGQUl1Ync4a2c5QXJFYVJFV1NaSStqSDRYYnA2ZzlFOUVuSlQzb2FSekROK01VSkJRREhuNTZhOG9VbUVCdXNPeEJzL041K3RKRWJQa0FGRGo4VUd2T3MvSVd2Y1NnbEdCaHZTNy9GVFlmcFdHWWREWThmUEF4V1NBMzVzVEM0cDQrTG00QWFxSW9QZVF0ZnVmSzZKaDBaaHhsYnNVWE9TbVhOaWZENVpUQWt5RG9mYmJjY2x4bkE4V05BcXhDYlJOeWtoWHhRcGFEdzY3ZlhVWWJzaUcwS2h0djJvZUl2aDhyaFFNWU9jRUFxWEcvZUkrem5nT2M1eXhyOHE4MklBTTFjL0ZMRk9wbHF1NWVGUVhyTVp6R2NWQ2pZYkxXRzVJNEJUMWV1UnJsYnh0Tk90TWl0RERFaExYSUl5bkFBdnVPRVdFM1gzTmRBZnQ5NFZnYUc0MlhJUXQwWlg2UGVDRS9xUUZlOXJLNkh4N1lVNTBLdkg3Zlc0ZlMrcTdLS0JKeHNnZ0JYNXBTQUdoMWpJclZoNXpRNnczUmZhYWhCWG0vYUNiQ1pUakNVRlVUeVdacVc5cDYyTWpKUFhWcU9yUGdNTzROdjc0R2tmK293ZnROVkJEUW5qRkpxSFN3MTdwWHZoV1c1S1pxZS9RNDlOL1VTVENBVldvUVhGSUhCSFhYZTNGUHJVRHN1R0RtdEYvaEhLVEhwZWt4aGlBT1BJK1NKcTZTNkhGNEk5WVd6a0JKVG80NmlVTXpXcDhQaXIvUmlkdUx4S1lzU2tzVjh2TGxPUXZoR1gyWWxSME9CaEJqQyt1L2dFY3ZZMEFwSzdZazQxTnhqUFNRbldGSFRGNjZVcmpnZXZCOEN1NWErbDJ2WVNSUHR1VkRvNzNoaGRNU0huVVg3dFRqc1ZaR3hBbC9XcHRpT0lFUTFnbkwyOW1YNi90UjF0bWxrWWo4VzRYK0NTaldjVURHWTFOcFMvQzdoU0txaU1MTS9sMlFtU1daNzNEZHorZ2lvOEJDRU5ZUFE0NnFua3p3WFVicXZCa3hqVVFzV2ZaRmdidW8zckFmK3dON2pPTzkwK3lueDRQaTNMKzBuWUwxU2NoRFVnQVA0Z1BWLzdJZDFxKzFIU2htdUdrSXFXUlBneXhNRnFQOEhmalRualh3WTViUWZiSmN0Nk9JektnTUhvdEYvSGUxZWdzYXhIU3FHNndmZG1RNXg4TnlURkZxQmNwMmlTb3dIUjN5azUrMzZoRjd2WEFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xX1BSRSIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsImxhcmdlQmxvYktleSIsImNyZWRCbG9iIiwibWluUGluTGVuZ3RoIl0sImFhZ3VpZCI6ImQ4NTIyZDlmNTc1YjQ4NjY4OGE5YmE5OWZhMDJmMzViIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6dHJ1ZSwidXAiOnRydWUsInV2Ijp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibGFyZ2VCbG9icyI6dHJ1ZSwiYmlvRW5yb2xsIjp0cnVlLCJ1c2VyVmVyaWZpY2F0aW9uTWdtdFByZXZpZXciOnRydWUsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjpmYWxzZSwiYWx3YXlzVXYiOnRydWV9LCJtYXhNc2dTaXplIjoxMjAwLCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjgsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4LCJ0cmFuc3BvcnRzIjpbInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi04fV0sIm1heFNlcmlhbGl6ZWRMYXJnZUJsb2JBcnJheSI6MTAyNCwibWluUElOTGVuZ3RoIjo0LCJmaXJtd2FyZVZlcnNpb24iOjMyODk2NCwibWF4Q3JlZEJsb2JMZW5ndGgiOjMyLCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6MSwicHJlZmVycmVkUGxhdGZvcm1VdkF0dGVtcHRzIjozLCJ1dk1vZGFsaXR5IjoyLCJyZW1haW5pbmdEaXNjb3ZlcmFibGVDcmVkZW50aWFscyI6MTB9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiTk9UX0ZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjAtMDktMTcifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIwLTA5LTE3In0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiMWJjYmQ2ZjViNzI3ZmQzYzZjNmUyOWY5MTNmNTkwOGQyYzU2YWIxNyJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyIxYmNiZDZmNWI3MjdmZDNjNmM2ZTI5ZjkxM2Y1OTA4ZDJjNTZhYjE3Il0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IDUgQ0NOIFNlcmllcyB3aXRoIE5GQyAoRW50ZXJwcmlzZSBQcm9maWxlKSJ9LCJkZXNjcmlwdGlvbiI6Ill1YmlLZXkgNSBDQ04gU2VyaWVzIHdpdGggTkZDIChFbnRlcnByaXNlIFByb2ZpbGUpIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NiwicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoyfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCIsInJlbW90ZV9oYW5kbGUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURTRENDQWpDZ0F3SUJBZ0lVRHFFUncrNFJuR1NnZ3hnVWV3SkZFUERSWjNZd0RRWUpLb1pJaHZjTkFRRUxCUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURJN1huSCtadkR3TUNRVThNOFplVjVxc2N1Ymx2VllhYVJ0M1liYXhuOWdvZEx4NXN3SDBsWHJkZ2poNWg3RnBWZ0NnWVlYN0U0YmwxdmJ6VUxlbXJNV1Q4TjNXTUdVZThRQUpiQmVpb1Y3Vy9FK2hUWlAvMFNLSlZhM2V3S0JvNlVMZU1uZlFaRHJWT1JBazh3VExxMnY1TGxqNXZNajdKdE9vdEthOUo3bkhTOGtMbXpYWFNhajBTd0VQaDVPQVpVVE5WNHpzMWJ2b1RBUVFXckw0L0o5UXVLdDZXQ0ZFNW5VTmlSUWNFYlZGOG1scUsyYngyejZva1ZsdHlEVkxDeFlicFVURUx2WTF1c1IzRFRHUFVvSUNsT200Y3Jwd25EUkxWSHZqWWVQR0JCLy9wRXl6eEEvZ2NTY3hqd2FIMVpVdzliblNiSHl1cktxYlRhMUt2akFnTUJBQUdqWmpCa01CMEdBMVVkRGdRV0JCVHF0MEtRbmd4N1pIcmJWSHdEdW54T245aWhZVEFmQmdOVkhTTUVHREFXZ0JUUzd1OWFJbzA2YlZ3amx6M3loZFVtOFNWN2tqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQTRHQTFVZER3RUIvd1FFQXdJQmhqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFxUWFDV014VEdxVlZYN1NrN2trSm1VdWVUU1lLdVU2K0tCQlNnd0lSbmx3OUs3SGUxSXB4WjBoZHdwUE5pa0tqbWN5RmdGUHpoSW13SEpneHh1VDkwUHczdllPZGNKSk5rdERnMzVQWE9melNuMTVjRkF4MVJPMG1QVG1JYjhkWGlFV09wem9YdmR3WERNNDFaYUNEWU1UN3c0SVF0TXl2RTd4VUJacTJianRBbnEvTkRVQTdiZTRIOEgzaXBDKy8rTktsVXJjVWgrajQ4SzY3V0kwdTFtNkZlUXVlQkE3bjA2ajgyNXJxRHFzYUxzOVRiN0tBSEF3OFBtcldhTlBHMmtqS2VyeFBFZmVjaXZsRmF3cDJSV1p2eHJWdG4zVFYyU0J4eUNKQ2tYc05EMDVkQ0VyVkhTSklzK0JkdFRWTlk5QXd0eVBtbnliMHY0bVNUenZXZHc9PSIsIk1JSURQakNDQWlhZ0F3SUJBZ0lVWHplaUVESkVPVHQxNEY1bjBvNlpmL2JCd2lVd0RRWUpLb1pJaHZjTkFRRU5CUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTVo2L1R4TThySVQrRWFvUHZHODFvbnRNT28vMm1RMlJCd0pIUzBRWmN4VmFOWHZsMTJMVWhCWjVMbWlCU2NJWmQxUm54MW9kNTg1aCsvZGhLN2hFbTdKQUFMa0tLdHMxZk81M0tHTkxadWp6NWgzd0duY3I0aHlLRjBHNzRiL1UzSzloRTVtR05ENnpxWWNoQ1JBSGZyWU1ZUkRGNFlMMFg0RDVuR2R4dnBwQXk2bmtFbXRXbU1ud08zaTBUQXVjc3JiRTQ4NUh2R000cjBWcGdWZEpwdmdRamlUSkNUSXErRDM1aHd0VDhRREl2K25HdnBjeWk1d2NJZkNrenlDaW1KdWtoWXk2S29xTk1LUUVkcE5pU092V3lETVRNdDFid0N2RXpwdzkxdSttc1V0NHJqMGVmbk85czBaT3dkd01SRG5INHhnVWw1Wkx3cnJQa2ZDMS8wQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQjhHQTFVZEl3UVlNQmFBRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRTXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJEUVVBQTRJQkFRQzNJVy9zZ0I5cFo4YXBKTmp4dUdvWCtGa0lMa3Mwd01OcmRYTC9jb1V2c3JoenN2bDZtZVBNcmJHSkJ5SjFYbnF1QjVzZ2NSRU5GeGRRRm1hM21pbzhVcGYxb3dNMVpyZVhySjBtQURHMkJwbHFiSm54aXlZYStSMTFyZUlGVFdlSWhNTmNaS3NEWnJGQXlQdUZqQ1dTUXZKbU5XZTltRlJZRmdOaFhKS2tYSWI1SDFYZ0VEbHdpZWRZUk03Vm9sQk5sbGQ2cFJGS2xYOHVzdDZPVE1PZUFEbDJ4TkYwbTFMVGhTZGV1WHZEeUMxZzkrSUxmejNTNk9JWWdjM2lyb1JjRkQzNTRnN3JLZnU2N3FGQXc5Z0M0eWkweEJUUHJZOTVyaDQvSHFhVVlDQS9MOGxkUms2SDdYazM1RCtXVnBtcTJTaC94VDVIaUZ1aGY0d0piMGJLIiwiTUlJRFNqQ0NBaktnQXdJQkFnSVVSMzhtcTI2U2Yyc3pWVjJCZEc2V0VON2t1V1V3RFFZSktvWklodmNOQVFFTEJRQXdMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3SUJjTk1qUXhNakF4TURBd01EQXdXaGdQT1RrNU9URXlNekV5TXpVNU5UbGFNQ1l4SkRBaUJnTlZCQU1NRzFsMVltbGpieUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRUlnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTlkwV2I5b1BvUm9Lb1F5V1BhSnB6MTF2cldUZzZ6VHRtTmoyVm9LUm55dktHUnFwemI4M3c1bDZZQTk2VVlrWUJEUVAwaWxPMkRQZTZ3V3FWUjV6RGZSemRjSDhiaCtMN2RHR3ZhZTZoUlRaaGtGa0NwWERzNEhjY2tuckRmOEZDbEo3SGUzOUpmNDIvRzFRbTJ6ejlXV21yUFh0Z2lLL3gwNUdqc1FmR3VERzF6ZjVRVFVVaWU4bHd5bUszVGZkT3ZOZWVKQUFQZTJwbjdJdGZSYityVnJOV2lEemxSbjJ2Tm5aMndQbzR3SC9XSjZkaFhaRytyTVdUK2E2Qm9jZzFVZkl3NmtkdW5HNGJUcFp6c3ZhY0ZZeVIwbXBmK0RlT25wU1dBbXl3SldIdlRsZjJZWHhGeWVYY1RBQ2RRbGNNTkdKMlZoWlE0OHh0UDUvUkJQLzhrQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZDaHk0Mm9raXFjVFMxaXFhL0hSV2prQm40SC9NQjhHQTFVZEl3UVlNQmFBRk9xM1FwQ2VESHRrZXR0VWZBTzZmRTZmMktGaE1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQW4rUkhJUGJ0TUVETmRUMWc4SC9SaXRBa1VkTGdBdDF0V0dXbmxqOWtuYnY0LzRHbFg3QzlwNDVlZlBPOS9hWkw2T1YxWFJLQmk2S210Qlc1SzdudVlFbk14LzVCcUJTYkxUN3JoZHVDNDlUQmVNYjlQSGRYc1RsU1ZOWWVmcjFkR2lkcjRqMHhWQlFMYjFya25EQWJkV0R6S2Z2bmF5S084RnJ3ZTdIeDg0M01HL3JKK2MwWHJ1VXZiZlZUQ0hMaUlXaE03b05EaEw4eG9iNnhVbzlLTEtjU0wrSXRZc08zLzlXYjhROUdqc3FMNEZYc0RjRzFTYVloN0twZnVNbU9peHF6SlpPMm5JaWNQWVJnMUkyU3VpVWZZTzcwdG1kSGNibCtrU1FtU1l0N3JxNHZpSUxnMkd4M2o5cklUdVdUamJhVWFTU1F4Z09tTVNIdXl6TUFDIiwiTUlJRFNEQ0NBakNnQXdJQkFnSVVVY21NWHpSSUZPZ0dUSzBUYjNnRXVaWVprQkl3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRRG01NTViV1k5V1crdE9ZMHJJV0hsZGgrYU5hbm9DWkNGaDdHazNZWnJRbVBVdzBoa1NHNnFZSFF0UCtmWnlTMzNWRXJ2ZytCUXFubXVtZ05oZnhGcmt3RVpFTGVpZEJjQzhDNEFnNG5xcWlQV3B6c3ZJMTdOY3hZbEluTE5MRmNaWS8rZ09pTjZaT1RpaE81L3ZCWk1iajlyaWFBY3FsaVltTkdKUGdUY01HYUVBeU16RU1OeTJubTZFcCtwalA1YUY2Z2kyMXQvVVFGc3VKMWoyUmoveW5NL1NkUnQrZWNhbDVPWW90eEhrRmJMOXZ2djJBMk92NUlUWkNsdzRiT1M5bnB5cFFpbU9aNVFBWXl0bVlhUXBXbC9wTVl6NnpTajhScWtWRE5FSkdxTmZUS0EyaXZMWXdYNmxTdHRNUGFwZzBKODRsOVgwdm9WTi9GcFM0VkNWQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJRZ0tGQWhHNlJhVytoVHk1MmR4ZVQ4YkM5Nkh6QWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQVlNemdMckpMSXIwT292UW5BWnJSSUd1YWJpSFNVS1NtYkxSV3BSa1dlQXRzQ2hERUhwWGNKL2JnRE5LWVdvSHFROHhSVWpCNEN5ZXBZZXZjM1lsckc4bzd6SHhwZlZjYW9MNVNldUprekh4S240YlRhU3A5K012d2FtbnA2NGtaTWlOYkZMa25mUDlrWUtvUkhrTVdoZVJKMVVzUDF6NFNjbWtDZUlMZnNNczZ2cW92cWpXQ2xGc0pwQmNzbHVZSFdGN2JCSjFuNFJ3ZytBVEVvcFk0SWdHdjZadndjK0E5citBVDJocXBvU2tZb0FsK0FOWXdnc2xPZjlzSmUwVitUQTlZWS9VbGFCbVBQVGQwLy9yOXd2Y2VQV1prUGpLb0FDL3pVTmhmRGJoNExWOEdIczNseVgyWG9tTC9MTmM4Sll6eUlhREVoR1F2ZW9QaGgvdHIxZz09IiwiTUlJRFNqQ0NBaktnQXdJQkFnSVVUbmJiR0lSMk5IdnpxSUtGQWVRd0cxWEJpczB3RFFZSktvWklodmNOQVFFTEJRQXdMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3SUJjTk1qUXhNakF4TURBd01EQXdXaGdQT1RrNU9URXlNekV5TXpVNU5UbGFNQ1l4SkRBaUJnTlZCQU1NRzFsMVltbGpieUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRUVnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBT3NYajNrMDRCYW40VFlkdFpLcUQvT1BKeHlEeWFQbUNCVUZVaWFaSWdUdGVabmozWDI1RGhncFpaWHNDNEQweWRJY3JsQTZ3TlVJbk9STC9MOXpCYlRFSU1BVk1HbzZnN1VLQW1iMk1GNkFIYm5oWUpkOWVpa3VwVk5XU2hITllOYzRHQmRPMVlONkFmVXF2SmhIYmUzVjRTTk1QbUJSRUtKUFZ6N1Rod2dtZ2dUZThXczJLMC93c3F2MndTRTdwYkNCc1VaaElYNTFiWk0zcHFEd0pQVG1SRkV2dDAvNnRHNWVPOEYzajE0T1hxZkVobWpuMVZ2eEtEWVFPTFpBeEN3d2dDMFA0Q2RmV3YzeThQU1I4STM1NGhPMVkrR3pOanZJcVgzOE5LTHl3dUlZSEZlck94Tmx4RU1CdkZoWUJ1UnVZQWtrZ1VhUHFONlVCaHNJTHJzQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZDQ29SSGhpeU5uYm5YUldJTDZaQlhvQlg5WVRNQjhHQTFVZEl3UVlNQmFBRkNBb1VDRWJwRnBiNkZQTG5aM0Y1UHhzTDNvZk1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQ1FGYWZKSTEvNVdnOUNFRWltRTFSUDU0UmdRd1ROVE9PUXNMQUNUZStySXRsRlF6QzlaRGhyVjgyOHlYN2p6eStBQXNwM2l6SzdUMXRoMmRsN20rdHUwc3cyUGEvb2xjMDJudDZQeUl3MzQ4Z2FIemhJMSswS0U0NXF4dkZEZUwybE14YlBmQ1l2eUVFYVl6amlRRUxVNTk1MXBYR1d5S01hLzRmTHRPK1pLT1hoTXVWZXE0clhEUEk1NFc2SkhPaUFhaUtkaXcrNWUzYzJrdC9qRklRdE02dk1YZzlMTkZ6ZGpFVE50MjBWWDlRZXZScEZaZnVjTUc5d0NhUURvRmxQenBUTUpLaFBldi9pbUptWlloS2ZyMGxMY2VtdHFqSXhMQW9xWmRPWWZIQmc2K3ZBY2RQSS9pYXVHcFVBdjdYK1VLTm1Ed2paMkJhSDRzTHdoQjJtIl0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWZDQVlBQUFDR1ZzK01BQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBSFlZQUFCMkdBVjJpRTRFQUFBYk5TVVJCVkZoSHBWZDdUTlYxRkQvM2Q1OXdlUVNJZ1M5QVFBWGNGTEFRWmk5ZnBlVnoxdFkvV1RacjVXeHBjN1c1a25MYTVqSTNaODVzclMybk0yc2p0V3daUzdJVUg0SDR4Q25FUXg0REFaRjc0Vjd1czg4NXY5L2xJbkJ2VkovQjRQdjludS81bnUvNW52TTU1NmZ6QS9RdjBIYi9JclgzVkZLUG80NWNubTRpblVJV1l3TEZSbVpRVXV3akZHL04xaVJIaDFFWjBOUlZSdWRxdDFCZCsyblNLeVMvT2h5czArbGszZS8za1E5cXZENFpVdGE0VlZTVXVZMGVpcHlpVGhBZm9jb09SVmdEdXV3M3FLUmlBZDNyYmNFdGpUallJb2Y2V2FIc0NtelZQV0NNeCtjZ2g4dExxV01LYU1Xc1VqTHFvMlJ0SklRMG9Pem1lcnBRdTRlc1pnc09Oa0d4SDdkMGtkdlRUMTdzNE9NVTdWSThaaGpnR2FNK0FxOWlFTnU4UGlmMXVkejA3TXd2S1dmOEdsVm9DRVkwNFBDNVdkVGFYWUZiUjh2TnZMNSszS2dmYjV4Tk15YTlSYW1KaXluYU1sR1RWdEZscjZiYTl1K3BxbkVYNHVNdVJSZ2pTWUVock43dXRGRmU2bHFhbDdOZmt3NWltQUdIeW5QcGJrOFZtWTB4c3RucHRsRkNWQ1l0elR1Qk44M1FwTUxqVHRldmRQelNVbko3ZThta2p4WjM5ZlhiS0RmbGRacWJ2VStUVWdHbkJWRjZmUTJpUEhnNFcxNlVXVXd2emJrMTZzTVpFK1BuMHB2ejdKU2V1QXllczhsY3BDbWFLdW8vcCtxV3IyVWN3SUFIV3J2UDBZRXpoWEF0TEFic3NIaHA3aUdhbXZ5aWpQOHJ5cXJYVVdYOVhvb3d4eUF1Zk5CcnA0M1BPQkZYWmxrZjhNRFJpcWNweW93QXdwdXoyeCtmV3Z6L0R0ZGU5c21zenlndGNSNkMxd2JkekJsNk9scTVXTllZNG9HYXRoSk1ya1RFeDBqQVJTSEFWcys1cllrUU5YYitRZ2ZQTHNRNmdYeUluc3JlUWZtcG03UlZGWWZMODZuMWZpVU9rWXZTaGtVUHh2YnVrem95NksxaWhNMWhvM1h6VzZFdlNmWEErZHBpV0dhV2QrZG9Yekx6bUd3S1lGTENBc1JBbFBCQWhNbENGWFU3dEJVVlByOEhnVmNKSFdxK0YwMHBscitETVRkclA0enZ4WTExa05NaHhUK1NlVEdnK2Q0VjVMUUppdHlVR0pOQjhWRlpzamdZQlpNL0lJL1hDVGtqMHF5RE9wRjJBVlExN0NJalVwL0RuVDFVa0w1RjVnZGorc1Mxd2cxZ0UzZ2lnbTYwZkNYelNuUFhieUFQYklYditJRHBFMTZUaGFISVM5c2t5aGxtTUU1RjNjZnFBS2hxMkMwRTVQSDFnWWFYYUxQRGtaRzBIREpPbktXSHA1MUkwejVTT3V4OGUxV0F1WnpkSFFyVGtwOFRtalhvSStsYTB3R1pzenVicWJPM2lmUTZBL1c3dlZTWXNWM21SMEpLd2tLYzRXSGlCa21SOEkzQ0NnSTg3b09MNHF6VDVQK1JVSkJlakVPZ0FQSzhoWVB6YXRNK2VJVHAySU85eVRRbWVyb21QUnh4MXF4QWNzaWxlL3ViU2VFYmNXUUdZRUNnaGNMWTJIeUtqb2dqSDI1aE1wanBVdjFPdWdsaTRlaDJlUncwTzMyYkpqa3l1Q2dOemcwdnpsWU1TaVNzMHVvbzRNRzdoTU9qQ0VhWDF5RkUwblN2akJ6dVRuRXBLODZaOElvcUZBSXVidzhrZzlBckVhUkVXU1pJK2pINFhicDZnOUU5RW5KVDNvYVJ6RE4rTVVKQlFESG41NmE4b1VtRUJ1c094QnMvTjUrdEpFYlBrQUZEajhVR3ZPcy9JV3ZjU2dsR0JodlM3L0ZUWWZwV0dZZERZOGZQQXhXU0EzNXNUQzRwNCtMbTRBYXFJb1BlUXRmdWZLNkpoMFpoeGxic1VYT1NtWE5pZkQ1WlRBa3lEb2ZiYmNjbHhuQThXTkFxeENiUk55a2hYeFFwYUR3NjdmWFVZYnNpRzBLaHR2Mm9lSXZoOHJoUU1ZT2NFQXFYRy9lSSt6bmdPYzV5eHI4cTgySUFNMWMvRkxGT3BscXU1ZUZRWHJNWnpHY1ZDalliTFdHNUk0QlQxZXVScmxieHROT3RNaXREREVoTFhJSXluQUF2dU9FV0UzWDNOZEFmdDk0VmdhRzQyWElRdDBaWDZQZUNFL3FRRmU5cks2SHg3WVU1MEt2SDdmVzRmUytxN0tLQkp4c2dnQlg1cFNBR2gxaklyVmg1elE2dzNSZmFhaEJYbS9hQ2JDWlRqQ1VGVVR5V1pxVzlwNjJNakpQWFZxT3JQZ01PNE52NzRHa2Yrb3dmdE5WQkRRbmpGSnFIU3cxN3BYdmhXVzVLWnFlL1E0OU4vVVNUQ0FWV29RWEZJSEJIWFhlM0ZQclVEc3VHRG10Ri9oSEtUSHBla3hoaUFPUEkrU0pxNlM2SEY0STlZV3prQkpUbzQ2aVVNeldwOFBpci9SaWR1THhLWXNTa3NWOHZMbE9RdmhHWDJZbFIwT0JoQmpDK3UvZ0VjdlkwQXBLN1lrNDFOeGpQU1FuV0ZIVEY2NlVyamdldkI4Q3U1YStsMnZZU1JQdHVWRG83M2hoZE1TSG5VWDd0VGpzVlpHeEFsL1dwdGlPSUVRMWduTDI5bVg2L3RSMXRtbGtZajhXNFgrQ1NqV2NVREdZMU5wUy9DN2hTS3FpTUxNL2wyUW1TV1o3M0RkeitnaW84QkNFTllQUTQ2cW5rendYVWJxdkJreGpVUXNXZlpGZ2J1bzNyQWYrd043ak9POTAreW54NFBpM0wrMG5ZTDFTY2hEVWdBUDRnUFYvN0lkMXErMUhTaG11R2tJcVdSUGd5eE1GcVA4SGZqVG5qWHdZNWJRZmJKY3Q2T0l6S2dNSG90Ri9IZTFlZ3NheEhTcUc2d2ZkbVE1eDhOeVRGRnFCY3AyaVNvd0hSM3lrNSszNmhGN3ZYQUFBQUFFbEZUa1N1UW1DQyJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTEwLTI0IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZdWJpS2V5IDUgQ0NOIFNlcmllcyB3aXRoIE5GQyAoRW50ZXJwcmlzZSBQcm9maWxlKSIsImNlcnRpZmljYXRlTnVtYmVyIjoiVTJGMTAwMDIwMjUxMDE2MDAyIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMTAtMjQiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTEwLTI0In0seyJhYWd1aWQiOiI4M2M0NzMwOS1hYWJiLTQxMDgtODQ3MC04YmU4MzhiNTczY2IiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjgzYzQ3MzA5LWFhYmItNDEwOC04NDcwLThiZTgzOGI1NzNjYiIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IEJpbyBTZXJpZXMgKEVudGVycHJpc2UgUHJvZmlsZSkifSwiZGVzY3JpcHRpb24iOiJZdWJpS2V5IEJpbyBTZXJpZXMgLSBGSURPIEVkaXRpb24gKEVudGVycHJpc2UgUHJvZmlsZSkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI4OTY1LCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH0seyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbImVkMjU1MTlfZWRkc2Ffc2hhNTEyX3JhdyIsInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIiwiYmFEZXNjIjp7InNlbGZBdHRlc3RlZEZSUiI6MC4wLCJzZWxmQXR0ZXN0ZWRGQVIiOjAuMCwiaUFQQVJUaHJlc2hvbGQiOjAuMCwibWF4VGVtcGxhdGVzIjo1LCJtYXhSZXRyaWVzIjo1LCJibG9ja1Nsb3dkb3duIjowfX0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIiwiYmFEZXNjIjp7InNlbGZBdHRlc3RlZEZSUiI6MC4wLCJzZWxmQXR0ZXN0ZWRGQVIiOjAuMCwiaUFQQVJUaHJlc2hvbGQiOjAuMCwibWF4VGVtcGxhdGVzIjo1LCJtYXhSZXRyaWVzIjo1LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURIakNDQWdhZ0F3SUJBZ0lFRzBCVDl6QU5CZ2txaGtpRzl3MEJBUXNGQURBdU1Td3dLZ1lEVlFRREV5TlpkV0pwWTI4Z1ZUSkdJRkp2YjNRZ1EwRWdVMlZ5YVdGc0lEUTFOekl3TURZek1UQWdGdzB4TkRBNE1ERXdNREF3TURCYUdBOHlNRFV3TURrd05EQXdNREF3TUZvd0xqRXNNQ29HQTFVRUF4TWpXWFZpYVdOdklGVXlSaUJTYjI5MElFTkJJRk5sY21saGJDQTBOVGN5TURBMk16RXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFDL2p3WXVoQlZscWFpWVdFTXNyV0Zpc2dKK1B0TTkxZVNycEk0VEs3VTUzbXdDSWF3U0RIeTh2VW1rNU4yS0FqOWFidlQ5TlA1U01TMWhRaTN1c3hvWUdvblhRZ2ZPNlpYeVVBOWErS0FrcWRGbkJubHl1Z1NlQ09lcDhFZFpGZnNhUkZ0TWprd3o1R2N6MlB5NHZJWXZDZE1IUHR3YXowYlZ1em5ldWVJRXo2VG5RakU2M1JkdDJ6YnduZWJ3VEc1WnliZVdTd2J6eStCSjM0WkhjVWhQQVk4OXlKUVh1RTBJek1aRmNFQmJQTlJiV0VDUktnanEvL3FUOW5tRE9GVmxTUkN0MndpcVBTemx1d24rditzdVFFQnNValRHTUVkMjV0S1hYVGtOVzIxd0lXYnhlU3lVb1RYd0x2R1M2eGx3UVNnTnBrMnFYWXdmOGlYZzdWV1pBZ01CQUFHalFqQkFNQjBHQTFVZERnUVdCQlFnSXZ6MGJOR0poamdwVG9rc3lLcFA5eHY5b0RBUEJnTlZIUk1FQ0RBR0FRSC9BZ0VBTUE0R0ExVWREd0VCL3dRRUF3SUJCakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBanZqdU9NRFNhK0pYRkNMeUJLc3ljWHRCVlpzSjRVZTNMYmFFc1BZNE1ZTi9oSVE1Wk01cDdFamZjbk1HNEN0WWtOc2ZOSGMwQWhCTGRxNDVyblQ4N3EvNk8zdlVFdE5NYWZiaFU2a3RoWDdZKzlYRk45TnBtWXhyK2VrVlk1eE94aThoOUpESWdvTVA0VkIxdVMwYXVuTDFJR3FyTm9vTDltbUZuTDJrTFZWZWU2L1ZSNkM1K0tTVENNQ1dwcE11SklaSUkydjlvNGRrb1o4WTdRUmpRbExmWXpkM3FHdEtidzd4YUYxVXNHLzV4VWIvQnR3YjJYMmc0SW5waUIveXQvM0NwUVhwaVdYL0s0bUJ2VUtpR24wNVpzcWVZMWd4NGcweExCcWNVOXBzbXlQeksrVnNndzJqZVJRNUpsS0R5cUUwaGViZkMxdHZGdTBDQ3JKRmN3PT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZkNBWUFBQUNHVnMrTUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFIWVlBQUIyR0FWMmlFNEVBQUFiTlNVUkJWRmhIcFZkN1ROVjFGRC8zZDU5d2VRU0lnUzlBUUFYY0ZMQVFaaTlmcGVWejF0WS9XVFpyNVd4cGM3VzVrbkxhNWpJM1o4NXNyUzJuTTJzanRXd1pTN0lVSDRINHhDbkVReDREQVpGNzRWN3VzODg1djkvbEluQnZWSi9CNFB2OW51LzVudS81bnZNNTU2ZnpBL1F2MEhiL0lyWDNWRktQbzQ1Y25tNGluVUlXWXdMRlJtWlFVdXdqRkcvTjFpUkhoMUVaME5SVlJ1ZHF0MUJkKzJuU0t5Uy9PaHlzMCtsazNlLzNrUTlxdkQ0WlV0YTRWVlNVdVkwZWlweWlUaEFmb2NvT1JWZ0R1dXczcUtSaUFkM3JiY0V0alRqWUlvZjZXYUhzQ216VlBXQ014K2NnaDh0THFXTUthTVdzVWpMcW8yUnRKSVEwb096bWVycFF1NGVzWmdzT05rR3hIN2Qwa2R2VFQxN3M0T01VN1ZJOFpoamdHYU0rQXE5aUVOdThQaWYxdWR6MDdNd3ZLV2Y4R2xWb0NFWTA0UEM1V2RUYVhZRmJSOHZOdkw1KzNLZ2ZiNXhOTXlhOVJhbUppeW5hTWxHVFZ0RmxyNmJhOXUrcHFuRVg0dU11UlJnalNZRWhyTjd1dEZGZTZscWFsN05ma3c1aW1BR0h5blBwYms4Vm1ZMHhzdG5wdGxGQ1ZDWXR6VHVCTjgzUXBNTGpUdGV2ZFB6U1VuSjdlOG1ranhaMzlmWGJLRGZsZFpxYnZVK1RVZ0duQlZGNmZRMmlQSGc0VzE2VVdVd3Z6YmsxNnNNWkUrUG4wcHZ6N0pTZXVBeWVzOGxjcENtYUt1by9wK3FXcjJVY3dJQUhXcnZQMFlFemhYQXRMQWJzc0hocDdpR2FtdnlpalA4cnlxclhVV1g5WG9vd3h5QXVmTkJycDQzUE9CRlhabGtmOE1EUmlxY3B5b3dBd3B1ejJ4K2ZXdnovRHRkZTlzbXN6eWd0Y1I2QzF3YmR6Qmw2T2xxNVdOWVk0b0dhdGhKTXJrVEV4MGpBUlNIQVZzKzVyWWtRTlhiK1FnZlBMc1E2Z1h5SW5zcmVRZm1wbTdSVkZZZkw4Nm4xZmlVT2tZdlNoa1VQeHZidWt6b3k2SzFpaE0xaG8zWHpXNkV2U2ZYQStkcGlXR2FXZCtkb1h6THptR3dLWUZMQ0FzUkFsUEJBaE1sQ0ZYVTd0QlVWUHI4SGdWY0pIV3ErRjAwcGxyK0RNVGRyUDR6dnhZMTFrTk1oeFQrU2VUR2crZDRWNUxRSml0eVVHSk5COFZGWnNqZ1lCWk0vSUkvWENUa2owcXlET3BGMkFWUTE3Q0lqVXAvRG5UMVVrTDVGNWdkaitzUzF3ZzFnRTNnaWdtNjBmQ1h6U25QWGJ5QVBiSVh2K0lEcEUxNlRoYUhJUzlza3lobG1NRTVGM2NmcUFLaHEyQzBFNVBIMWdZYVhhTFBEa1pHMEhESk9uS1dIcDUxSTB6NVNPdXg4ZTFXQXVaemRIUXJUa3A4VG1qWG9JK2xhMHdHWnN6dWJxYk8zaWZRNkEvVzd2VlNZc1YzbVIwSkt3a0tjNFdIaUJrbVI4STNDQ2dJODdvT0w0cXpUNVArUlVKQmVqRU9nQVBLOGhZUHphdE0rZUlUcDJJTzl5VFFtZXJvbVBSeHgxcXhBY3NpbGUvdWJTZUViY1dRR1lFQ2doY0xZMkh5S2pvZ2pIMjVoTXBqcFV2MU91Z2xpNGVoMmVSdzBPMzJiSmpreXVDZ056ZzB2emxZTVNpU3MwdW9vNE1HN2hNT2pDRWFYMXlGRTBuU3ZqQnp1VG5FcEs4Nlo4SW9xRkFJdWJ3OGtnOUFyRWFSRVdTWkkrakg0WGJwNmc5RTlFbkpUM29hUnpETitNVUpCUURIbjU2YThvVW1FQnVzT3hCcy9ONSt0SkViUGtBRkRqOFVHdk9zL0lXdmNTZ2xHQmh2UzcvRlRZZnBXR1lkRFk4ZlBBeFdTQTM1c1RDNHA0K0xtNEFhcUlvUGVRdGZ1Zks2SmgwWmh4bGJzVVhPU21YTmlmRDVaVEFreURvZmJiY2NseG5BOFdOQXF4Q2JSTnlraFh4UXBhRHc2N2ZYVVlic2lHMEtodHYyb2VJdmg4cmhRTVlPY0VBcVhHL2VJK3puZ09jNXl4cjhxODJJQU0xYy9GTEZPcGxxdTVlRlFYck1aekdjVkNqWWJMV0c1STRCVDFldVJybGJ4dE5PdE1pdERERWhMWElJeW5BQXZ1T0VXRTNYM05kQWZ0OTRWZ2FHNDJYSVF0MFpYNlBlQ0UvcVFGZTlySzZIeDdZVTUwS3ZIN2ZXNGZTK3E3S0tCSnhzZ2dCWDVwU0FHaDFqSXJWaDV6UTZ3M1JmYWFoQlhtL2FDYkNaVGpDVUZVVHlXWnFXOXA2Mk1qSlBYVnFPclBnTU80TnY3NEdrZitvd2Z0TlZCRFFuakZKcUhTdzE3cFh2aFdXNUtacWUvUTQ5Ti9VU1RDQVZXb1FYRklIQkhYWGUzRlByVURzdUdEbXRGL2hIS1RIcGVreGhpQU9QSStTSnE2UzZIRjRJOVlXemtCSlRvNDZpVU16V3A4UGlyL1JpZHVMeEtZc1Nrc1Y4dkxsT1F2aEdYMllsUjBPQmhCakMrdS9nRWN2WTBBcEs3WWs0MU54alBTUW5XRkhURjY2VXJqZ2V2QjhDdTVhK2wydllTUlB0dVZEbzczaGhkTVNIblVYN3RUanNWWkd4QWwvV3B0aU9JRVExZ25MMjltWDYvdFIxdG1sa1lqOFc0WCtDU2pXY1VER1kxTnBTL0M3aFNLcWlNTE0vbDJRbVNXWjczRGR6K2dpbzhCQ0VOWVBRNDZxbmt6d1hVYnF2Qmt4alVRc1dmWkZnYnVvM3JBZit3TjdqT085MCt5bng0UGkzTCswbllMMVNjaERVZ0FQNGdQVi83SWQxcSsxSFNobXVHa0lxV1JQZ3l4TUZxUDhIZmpUbmpYd1k1YlFmYkpjdDZPSXpLZ01Ib3RGL0hlMWVnc2F4SFNxRzZ3ZmRtUTV4OE55VEZGcUJjcDJpU293SFIzeWs1KzM2aEY3dlhBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiRklET18yXzAiLCJGSURPXzJfMV9QUkUiLCJGSURPXzJfMSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJsYXJnZUJsb2JLZXkiLCJjcmVkQmxvYiIsIm1pblBpbkxlbmd0aCJdLCJhYWd1aWQiOiI4M2M0NzMwOWFhYmI0MTA4ODQ3MDhiZTgzOGI1NzNjYiIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOnRydWUsInVwIjp0cnVlLCJ1diI6ZmFsc2UsInBpblV2QXV0aFRva2VuIjp0cnVlLCJsYXJnZUJsb2JzIjp0cnVlLCJlcCI6ZmFsc2UsImJpb0Vucm9sbCI6ZmFsc2UsInVzZXJWZXJpZmljYXRpb25NZ210UHJldmlldyI6ZmFsc2UsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjpmYWxzZSwiYWx3YXlzVXYiOnRydWV9LCJtYXhNc2dTaXplIjoxMjAwLCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjgsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4LCJ0cmFuc3BvcnRzIjpbInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi04fV0sIm1heFNlcmlhbGl6ZWRMYXJnZUJsb2JBcnJheSI6MTAyNCwiZm9yY2VQSU5DaGFuZ2UiOmZhbHNlLCJtaW5QSU5MZW5ndGgiOjQsImZpcm13YXJlVmVyc2lvbiI6MzI4OTY1LCJtYXhDcmVkQmxvYkxlbmd0aCI6MzIsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjoxLCJwcmVmZXJyZWRQbGF0Zm9ybVV2QXR0ZW1wdHMiOjMsInV2TW9kYWxpdHkiOjIsInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjoyNX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIxLTA4LTA2IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyODk2NSwidXJsIjoid3d3Lnl1Ymljby5jb20iLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ill1YmlLZXkgQmlvKEVudGVycHJpc2UgUHJvZmlsZSkiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDIxMDgwNjAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4zIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjQifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjEtMDgtMDYiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI4OTY1fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIxLTA4LTE2In0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiZmQzMmRhZDcxN2UzYWEzODFjYTlmOGM1NjUxM2ZjNGFkMDI2MmYyNiIsImExMTA3N2I3MmFmZjZhZTk1MjFjNWFiMjUwMjNhOGI4ZjFlMzQ1NDIiLCJmZTU0YWEwMDExNDkyYjA5ODhiNDA3NWU4NjRmMzdjNWY2ZTAxMGI1Il0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbImZkMzJkYWQ3MTdlM2FhMzgxY2E5ZjhjNTY1MTNmYzRhZDAyNjJmMjYiLCJhMTEwNzdiNzJhZmY2YWU5NTIxYzVhYjI1MDIzYThiOGYxZTM0NTQyIiwiZmU1NGFhMDAxMTQ5MmIwOTg4YjQwNzVlODY0ZjM3YzVmNmUwMTBiNSJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiSHlwZXJGSURPIFBybyhDVEFQMi4xLCBDVEFQMi4wLCBVMkYpIn0sImRlc2NyaXB0aW9uIjoiSHlwZXJGSURPIFBybyhDVEFQMi4xLCBDVEFQMi4wLCBVMkYpIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6Mn1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiLCJyZW1vdGVfaGFuZGxlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQ1FEQ0NBYUdnQXdJQkFnSVFBY2I1WmNBeU9KbDF4Lzg5Z1lrbWV6QUtCZ2dxaGtqT1BRUURBekE5TVFzd0NRWURWUVFHRXdKRFFURVNNQkFHQTFVRUNnd0pTRmxRUlZKVFJVTlZNUm93R0FZRFZRUUREQkZJZVhCbGNuTmxZM1VnVW05dmRDQkRRVEFnRncweU5UQXhNREV3TURBd01EQmFHQTh5TVRBd01USXpNVEl6TlRrMU9Wb3dPekVMTUFrR0ExVUVCaE1DUTBFeEVqQVFCZ05WQkFvTUNVaFpVRVZTVTBWRFZURVlNQllHQTFVRUF3d1BTSGx3WlhKelpXTjFJRU5CSURBeU1IWXdFQVlIS29aSXpqMENBUVlGSzRFRUFDSURZZ0FFenJWbWUyVzFwMWFxNG8vRUxiRjJzK0phVDZ0UTJab01HMFBjSDc5d2RKd09yUWVBMkVQQ2V3dStlbVNzZ2ZiVVlVSXJMMFdoR0NQN1J6ZnNWaGZCUWxkN0xaZVVoVFBpTzEyenVQOGs5UXF2TGNjbmJqeW0xenpSM0ludlhFTVlvMll3WkRBZEJnTlZIUTRFRmdRVWxpVjBacWkzYWpreEREZThwenM3T0RMRFdqSXdId1lEVlIwakJCZ3dGb0FVNG1GcDg1Vm1ycjIzTUUxcm5aTlBvRnl3M1Zvd0VnWURWUjBUQVFIL0JBZ3dCZ0VCL3dJQkFEQU9CZ05WSFE4QkFmOEVCQU1DQVFZd0NnWUlLb1pJemowRUF3TURnWXdBTUlHSUFrSUEwQVFKSHUvSHhKNHdWREI3dnUxenN1R2RPRVlpQzd0SjUyc3p5bTFHeFhSbk8rRFl0eWE5eWd3ckVaKzhMbzBDWW04endBVitCTTJuaGdYb3YxT0libVlDUWdFcDc2Q0Z3NDh2YWRtemNWbnA0bTFmYkxBcEhUdXVPL3pETVBUS1dhejBndWRyYUYwZWFlZEZ2THg3Q3BYK0gvZ1ZKQUpXalVGVU5VTWdxa2RVbDBNb2tBPT0iLCJNSUlDUkRDQ0FhV2dBd0lCQWdJUWN0RU9UMldYZUNrRGR6L3NZN1VwVmpBS0JnZ3Foa2pPUFFRREJEQTlNUXN3Q1FZRFZRUUdFd0pEUVRFU01CQUdBMVVFQ2d3SlNGbFFSVkpUUlVOVk1Sb3dHQVlEVlFRRERCRkllWEJsY25ObFkzVWdVbTl2ZENCRFFUQWdGdzB5TlRBeE1ERXdNREF3TURCYUdBOHlNVEkwTVRJek1USXpOVGsxT1Zvd1BURUxNQWtHQTFVRUJoTUNRMEV4RWpBUUJnTlZCQW9NQ1VoWlVFVlNVMFZEVlRFYU1CZ0dBMVVFQXd3UlNIbHdaWEp6WldOMUlGSnZiM1FnUTBFd2dac3dFQVlIS29aSXpqMENBUVlGSzRFRUFDTURnWVlBQkFGRnJQYjhLRExBdzRIc1lMVTVjd2V2b1BTMEo2UWFvOEhieDJvMTErcll2c3hBd3JWM1AvTzJNdGt1QTRiRGttWVNBMFlMNUErSjJZbzR2L2QxL1FQMlVRRjFkcVBGa21VMjdWWmhDNFBYQ2RjWCtGTWR1dWIvNC9MRXdWYU9Nd1BUVUFnOThTUndjQmpTenVNV0JseGUyRzBXUUZuZE4ydG4yWTJzWnViWDd5UUlINk5DTUVBd0hRWURWUjBPQkJZRUZPSmhhZk9WWnE2OXR6Qk5hNTJUVDZCY3NOMWFNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdEZ1lEVlIwUEFRSC9CQVFEQWdFR01Bb0dDQ3FHU000OUJBTUVBNEdNQURDQmlBSkNBY3E0V3ZWcU9sTXBiVTRlNzZTeWVjWlVyS3lPU0dvVHF0SEpsckdXNTVBbEh6WDBZVmhtVk50WWpDcSsvSVRiZGpLZmIvNFJLKzFLbnFubFNLdlphcjd2QWtJQlFqemNhVmlvQTBvMFZveW95YU5rQmgwOFNKMnYvcGhoWnUxOTZVaFJmcUs2UHA5LzFZNHVEU2FUZ2hPUXYwSERrMWt1Sk9Sc3dDZWxtTWZJUVRjMUVRRT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFERGNBQUFIb0NBWUFBQUdRMmRWWkFBQUFDWEJJV1hNQUFDNGpBQUF1SXdGNHBUOTJBQUFnQUVsRVFWUjRuT3pkMzNYVXZOYkFZZmtzN2tNcUFDcHdVZ0doQXVEYUZ5RVZBQldRVkVDb0lNbUZyNEVLSUJXQUt3QXFDS25BWjRsM0R6Z1R6NHovU1BLVzlIdlc0anZmQzhtTXh2YllrcmEwZDlHMnJmR2xxSnVqdGlxL2Vuc0RBSUFYLy9QNFlIRCsxTEd2NmVOMUFRQjNlWGs0K0hvdytIeDlBTUEvemg4T3ZoOE0zYjhyNnViQTlYc0JBSXg1NFBJWWhIb3dkSHdyNnFacHE1S0hCQUFNVU5UTkcyUE0rODVQUHV1TERUc0xTRys0aWZlKzZZalh0TC83ZE1qUHRsVlpUSDBmQUVoWlVUZm54cGpYWSs2alRoNE9SZDM4TnNiczlmelQ1SWREVVRjUGpURTNZMzZIQndRQTNOWHB1RisxVmZscTArSHAvTnh0VzVVUFowOHJ5YngvMzROaHJsRVBCbWxMeXdNQ0FQNGpuZXhCSGVmVno2d2VFaTVpRHQ5Y240YzVzUXNlRUFEdzE1MU85cWFwK3ZWN3ByMlB6bHF0dEVBQU90aHJBRUFLaG5TV3UvZk0xYzlQZmpob2ZURDRlQzBBU0kxOUNHeDdjRXg2T0doL01QaDhUUURJd2VpSFEydzNjUjRRQUhEZnJuUkVvd0xTc2ZidWZRV3BoN1I5NnZ2dWV1MDc2NUVISHNPNXgyREsrM2c0dnlkdFZWNE8vZUZRbllPK1krdmp2VjFkeHpQYWR0MVc1WkhIMXg5bHl2R1kwN1p0N3pmbU96dFVVVGN2akRFZlhiL3VtdDR0QjRNZkRrWGRuSTU5eDExN0hJcTZHZndsbjh2dXhiQnJkME85WDBqMjRoaHl3Yzk1U0NwNU1GZ1hSZDFjckw5WExvYXVXZTh6WmxQcEZrLzdncGZhdWJvV1Y2L1RzN3BuNXdOem9qZStEbTNudnZIRmZvVDFmeDh6cmZSdTdCc1ArTEhqTWE5cGpEbWNjVEh1RlhVejZzc0UzV1JZbkd0SytPTXhOeno1MmJrUGh1Z1VkZk9UcWVYZDFoS2IydEhLc0lmRDJJTTdkdW5VUUhiWDN2ZWhyNy9CeGNUZlUyL29NWm55UlFrMWJUWFIwOVhGbktPaEk4YU1qODBqQlUxWjFOcEk3Nmk3U21uMS82OTlkLzlNWSsxOE9DaDVNSmoxS1NIZjB5TVk3ZGVDaDJ6cm5HenF0bDNUWE85NVc5LzF2RXQzMm16cncwSFJnNkgzZFhsQTNPVmo5REJpMVBCNDZHdjZ3RTBRWFZ3UC8zUWZFSnVtMW91NitiNGVUOWtZa0o1d2NKL3QrZ0dYRDRidXYwK2RLa2swb1BscmdhSDBrOER2aHdGeW5XNWI1UlBDUDUzNzVOOEZIVDErZFR0NXZRK0hDVUcrWnNES0pPY1BodTdQVFh4QWZHcXJNcWt2a0QyNXJsWXVqUmcxL0J6VHhqV2JPaFV2aHFRWVRrRGY1Mzg0ZHFwc3cva2M4eHJYeHBoUkt4SVYxNGNmbmJUVEdITm1qRWw2Y2NQWXp2Q21rY09vVlEyN2l1MzRmREIwZjM3Qyt6d2YrZk94c0QzNUh5SGFPbmYwdGVVRzgzVzFqRStHd3Q0V0V5dzVndHp5K1gwdkNWNFp2U1RXbGFWSDdpVG8zTzVlek1GMW5DSEVnMkhPNzZVNE56bTBKeDlMSUhQb3ByY3BlM0ZpNFBNbXR0U0RZV2s4R0hhNzgzRHc4R0FZdmNuTlFVOTB5Z1BpZk01N2FoVGk0Zy81QlJ2NFhxUDI0aUE5cVhZUWxqQTVLNnVuVFc3N3UzN0FVOHFLSE9hMmUvVWRUMVo2SUdJN093aU1Hb2I1KzNBWWVVTzQ5ZEFXTy9mNWU5c1BqTm5oUFBZQ2tGS25TZkU4SGNFWExBRjBCTERKcEpHRGp4eEZBK2MrZmU1dzlsSHFOQXByVytlSDNDeDhkQTdnM3FDTmliTCtmYzZLTXlUb2YyWms3OEZIanpIMDVybWNlRHBmV3RlUkw3bExXNTJSR3hNZnJWSTRzMDhBeGxFTjZWbDhQUmc2UGd5TktkajlIVVBTRVkraFpOaCt1MnRrTktLZGgyNmFOTTdBOW0xZFVyMkpyeFRPRWJzcDZzYjc1NXY3M2FEejU5ZllhYVVUbDYwSjhHQ3c3ekVtNVcyU1dTdGQ5dlJYeVE5REdob1AyaFd6aXRXU0hZek9hSUxZUkdaR2pSekdGRmtaOEZyZUh3eTR3L2I0djgwNUpFc1ZURXFadzgvL3VlOHZwMllQNkxPcGxnSFM5RCtQUlNvMlV2eGdPRnZnUFlOWW9zZVBvT2QzWXhvWTF6ZHpHVWtrT1VyRFAzWmFLZWpESWZTRFljeEYzRlpsMGh0bzV0d2t0UGNXNmMxdTUrSDQ3T1UrNmt2ZC84YmNFRU1Fa0R4Y2NOa3VVVVVleGlTbzVDSHFoOGNraEl2RlFTZnZrSjVnWnpEYjlWQ1ZuczE5VTI0T2pCcjBtbm8rWFQwbytJNmxhL1JTMW9sMUVHNTNCYk9MdWpsdzJjdVgxeHRqWitxT2lhYkdNY2dUdElPcmgwS2tEeGNuMlZRN2hXQU81aTVZbVByZTBPbUJtYkNpWWV3RFl1QlNTdGNYNXFqWDg3VU1jbW9jbzZnYmJ3K0hNZWRiMlJmNHc4aWx5Y254ZFQ1a3djTHFRZkdiNlZqM2JGTEFtT0tha3pmQjJWVk9RK2JabG9nelRIZzlYNk9HMkwzMDNmN2NlNC9keisrcVNKT0ROajAwL3lxcTdTeWNrM0JWUmRmZWpTMm90S1MvTVljSkovZkxyaCtJNU1HUTdPYXBiWWFjbTdZcVB5M2F5TXlNcUFFZTVMekk5NElTc0ptYUZaQ2VlMk4zblMrSi9FdklSTEFLaGpOTHdDN2g3YTczSklnK3pKMkhROGhLYWhvZURFd25RWnNSb3dkdWNEM2FxbFJkdUd0c2JOZHZhN2E3TjNJSThZQlE4bURJY2pvSlVWRFRhU25xWnVQTzY1Z3RuSzlxWjdZQ0RRdEdOZ1drYlVyR2Nzd0xEUTFLS1hvd01KMkVQeHpjS001Y3JrS3huWlpWVnRSdGZBYUNKYTNPenJpaXVKNzRIck52MEhNK2YvZjlYUnpIRWFzQXk4N1BQVnN0N0pFU3AycVdzUGMrSE5xcVBKaHk0blpkckR3WWtDam5xMUNHM21pMmZlZEM5WTVkcDdtZmEwcXlRZGYxODBmNE1xUWpzSVNOQWVtcEgzN1RRYmExRXNhKzFvNEh3NlRjL1R3WUVKSGVUS3VBQ1hBdjI3cGF5ZFVEUXRaTGo4MFJzcXVvek9oTmN6d1lFSk50bVZhN0ZnNWNxc3hrdk5SM1BhVjd6TTZsckhNZUVFWGRyTGIzNzl4SXMrWjJXNHJwaVYrR1JTcVlBWE9NV0wyMHlKTFQxRE1aVHhIaUFSSGlQUWJ0YzVqUmtJdUpjUWJuTld5cFo0REVQUXI5OFNKSnlIaTc0SHRIOTlwZGd6ZkJoV3FRcDRMNFRDY2hXdHIyUHNTVSt0dDJORk9hWWdyNVdjYm1WcHBkYW5JYkhnekp1VTYxTG5kb1UxYmdyT1Z0R3JNMHRjK1RDSGRMLytVdysreXpNYlVieHViTzJ2VWFJUlZ0TzY2OUVrZTRjTjNHTVFjZzBveWlBQkNOMGJtVnBDN0RsY3NQeUlnQkFIU1psSGhQaW93NGVVRHdZQUFBZlNablpaVUh4TTdTbnp0ZXc4ZE5mR2RXUmdEQWRyTlNkc3NVMDlUOUExNlNpMm5QeWdnQU1aajFjREN5ZjJEQ0NPREtSMFpVcHBNQXdJM1pENGVWa1RXbFp4ZEduL1ArQUlEdG5EMGN6UERTa3dTZ0FVQTVwdzhIcytOR3pZTUJBT0xnL09GZ050eXdlVEFBUUR5OFBCek0ybzJiQndNQXhHVjArb3dsMmRxcnRrb2QxeGdBK09WdDVPQTZRNlRrZENvWExtd0NBRm53OG5Ed2RBUC9tK3lQQndRQStPWDg0ZURqeHQzM21qd2dBTUNmc2ZVY3RncjFZT2orRzRGcEFCaE9Tc3F1S2dkZXQxVjUxUGZMemdMU2ZUZnh1VGR1NmpZQXdIeFQ3cVZPSGc2YjNuak9UWHRPMVNzQXdOMTc2YTU3NVByUHpZNDVoSjVLQ3RrT0FJalowQWREOTJkV3Z6TXI1cURsd2REOVhVWVFBUERQcmpyVzZ4dVdWejh6ZWVUZzZjRXdPNDAzSXdnQUdINHYzTEFhOU5Pa2g0T0xtM2pQYTlxSStaNmoxK0lCQVFER3ZPdzdCbmFFc0dPVzVmbm9oME5STndldWJ1SnJ2cmg4TVI0UUFITFhWdVduQ1lmZzJreWNWdnJtK25qN3VwSHpnQUNBKyt5OWNjdjk4YXNaRzVEV0ZvQWUrdnErZ3RTNzJqNzFmWWNjazExQkpwZnRtZm9lUHM3dG1NK3d0dG5IbTAxdDh2RDVuN1ZWK1hYdWl4UjE4OUFZY3pQeDEvZUhsUGdOMFRHYmNqM2I1SjAyUjl2RXQvelFWdVdiRGE4NzZqczdsSy9YdGRmU2FyYW01L2YvZk1iQkk0Y1lId3loM3dmK3JYbzhjdVBmeGZ1RFlSTlAxOXlYSFQyK25XMlMzNTM2WUxCdTVyVEJKWWxUN2xUVXpXbW56Vk1mRE5ackxaOTlxRTN4NFc0bm8rZnovQWtiREhvNFREa1lRemRjVEhqTjI3Ry9OL1g5WWpHMDV6RG5wakxrNXdJdkkzNlU4ME5mYmxLRGFySGJHMFN1eDBvKzl6c0ZUVm5LeHZqd3JxcWRPeDhPeWg0TTluL3RrUGhrN085UGZWL29sdms1dlpBcG9vMms1K2hqQVlsNnVYL2ZOMVhrWE4vWHNEWVYvTGRlenRhSFExRTNvK2MzZlQ0WU92OTk2WE0rUDBhK1JnOHg1TGZLL0Nhd2E0cUlCMFBtUmg0THUrRG9seGt3cmZSMHpHRWQ4R0FZdlQ5aTE5Qm43T3RKTzNxRFNwanNqRU8zbkUzZnE0eW5rZ1pOdCtXZ214SmpWNGJyVHFxTngyYmJhaVhYaWUrbTdJOFltZzlrd3BmZ3ZUSG1mT1R2cURmMFdBeGR3VFZpMUhDNjlMR3gxMWRibGQrWGJzZENzaHdkYkhFeCtUY1ROUFFCc1g1UDZIMDRlTXFJT25aL3hOc3g3ejlsdWlUUlBFeG5JUU53RG83aHN3MS9QM1pUcEwyK1lqdWZtejY3SGRrK1Y5SVd0VndzNnhWMjA5ZmdEbzdEOXcxcTdIZjEzc1BCeDROaFlweGhWTStlQjhSL2JDKytxSnVkRDRkZG56M1VsTVNXTDVyWC9SS2Q5MS9zL0cvNTdOMWxoblBXNVE5cHd5S2ZmNm05UnlIYWtJbzdNWWV4QVdpUEQ0WkpKNDJUL1o5UXh5RzE5OUdvcmNxREljMHE2dVp4ZGdkbkJ1NFZ1NjBIcE1jRW9EL3Yrb0dRRDRhT3dkTlJKdk5WRFpzK095czkxT2xObnJibU10dWpNeElQaG1IK1Bod21UQ2U5Y04wWUZ5ZHQ3SFNVOFpSbGRtbSt2d0I4d2NJWm1EeHQxTXBDWUpkSktidDkzQmdjcjU0WjI3NXNWM3VzSDFOR0RRRE02dUd3ZEJESFIreGliRHRUWEJ2dHEzZlBxQ0Vkc2VVS2NxQ0ovaE1FTXJ1RzlGeStndHJpZXNUUFpyczJlblY4Qng3bksvOHRRdGZBQkhPek5pSjJFaG9tL2FBWUd1Q0hNUStLdWhrY3lITGRZL1Q4WUxDdmY3VGt4YTdoaXpaeGsrQzIxMHRxaERYMzJBUWFSZTNjOCtGeUkyTG5tRno1T3Q4K2pqc3J0dHl5STRmamhkNzdjTmNQcEJnb1hzak8zcjdIdlBHenNhSnNHZ2ZuNnppeTBRU2pBb2RHRmZ0eHFObVY2cUNvbXhlT0FzVkJkd3hyWkh0L1JkMHMxUW5ZaWh1L2Q3Y3V2a2NoUmhNTzhIQndhSkdZdzhCNXY0K08zaTdyQjhQSzNGNms5aUEwUWZKK2t1TGVwV05XdE9VaCtNUEJkNXdCeU0ydTc1VDgrNUNOZElQeEhVMWYwSWRENkFjREYvQmRxYVlsWWRTd205MUlKOGRwWjZ4dktJWGZyeWdUNG1rMTZ1SGdPemkyNU1YR0RTWk91Wiszc1ovZnh2bzYxYjhtbGR4VkxOZVU3VjQ4R0x2VTBTNFhhNnR5U0hIM3Y1WjRNQ2pwMVV4ZGUrNHRUakwyZkN1KytmNWFGU1daSTlhSGk2TlVNMy9qRVhQcWkwOXBpNmZOdExaVzl0YWZzV1ZWN2MrNWZ1OFVUVm10OUdOTTN2eElIZ3hlY3RsUFhYcytKT1YySUdNMkVYcVgreWpCQk5yMW52aDByQjFkc0I5aWdEOFBod21qaDBHOWhWaEdETEVXNzVocTZQbTJtd2hEdE1YM2UyaTFka00rbWxEZ3lJdHU1YkFFRC9zakJXMXdhVlFXNmpFbUI2UmRYRGdlSGd5ajExL1RHNFVHUXpzb0lXL1lmRGVXTmJBRDU2M2M4ZCtIdzVRTFljNkZLaFd1UmhuUVJtckhJbHBEdjRPc3dsTnBaM3d4dHZPMlBuTDRNUFlGcG54Z1d3eCtRdW5EZmRmdG9HY0VoVkpiUWFTT2o1dTB5OXhXV3R4NU9MUlYrV1pLdXlZYzdHOGpmNzdadHNLQUJ3TlNNWFJITTZPSGVaWTZma1BmVjhQNXZiZGFhV29XejZGQjZvazM4bzNwTm5nd1lBNFhYMElmMllxSHRNdldmUGUxYUVDU1hub3JndVhydUkrNWYzVis3cTNQdWZzdDczdmRQWC9hSHZpOVMxbDlQU0JjMzhnbkhzeVRDYjhEYUxTeE5HZ09Jd3U3d3N2UlNzUDNSZDI4SC9NTEcrNUx2MGF1aG5xNmNOYmRyYmF0VnRvNng3K0p5NkwxSGg0TTlqVXB4QTcxSWdwT3p5b3k1TWtpSFVBWG16STEyZmh3bUxPTDBFVmRZazhQQnFhVEVJMFlybGVOZ2RnY09vQWhybzJ0K3h6bU5HQms2VWxuN3h2eU5RRU5saG85YVA1T0xkVzJsTzR6T3pmQnVYaEFqTEhyL1FoQUl5ZGFwNWNpR2RVaytZQUk5YmtHN1pBTzFSaEdERUN2S2JVWWZNMjczOGIwblpLMkJzOFJKdS83eFBWcmhqejJneFB2dVM1VTMvZjZIbDUyVWxBZDBNVFdZdGlWYmRTc3JSYVVlZmZMenI5OTNiYTZhUmVsRDRSQldSWmNMaGNkY3h3a2UvWGNQRlZuUzhWMWlyWWQxMlpQRDRpVG9VR2tFZTkvNjZGRUlnQmtZWFRpUFU5VFA4NVhGL0JnQUlEcEptVmxkZm1BSU00QUFQcE1UdG50cUJJVkR3WUFVR2p5dzhITXZCSHpZQUFBdldZOUhNekVHeklQQmdEUWJmYkR3WXhmM3NXREFRQ1VjL0p3TUFOdjBPeGxBSUE0T0hzNG1CMDNmMDhQaHBNNUNRSUJBUDJjUGh6TXY0ZkExZHBmSDNvNC9vTTN6Z0VBeGhtOVEzb00yYzNjYkt2a052RTFEOXVxSExSMUhnQXc0VjdyOCtIZ2l6d2duam1xQXVWRlVUZjI0VlVhQXVZQUFBQkl3T0NrckJyRVVCYTNxQnViMHVsbTdlLyt0SnNCQkFBQUFHSVZ4Y0FoaGdHREdkRE96ci92c3dBWEFBQUFNVkU5Y0VobHdORGpSc3A2WGJWVitTcEVHd0VBQUlBNVZPNXhHTmdSWDN5UFExRTNObXF3NStLMVdNWUVBQUNBT1lxNmVXT01lVC9qSmJhdWlsRTFjQmc1YzcvWXdLR29HeHNsdVBEeDJnd2dBQUFBTU5TVy92T1R0aXAvN25xWkxZT05lOW52VkF3Y2lycXhlVldQUi83YUlnT0hVTXVuR0VBQUFBQmdrL1UrcWF1K1kwK2luNWR0Vlg0eUdnWU9NenJpUVFjT1MrMjNZQUFCQUFDQXJtNi8xRmRmc2FnYk8xaDRMdi81Si9xdzJPYm9oRGMrZTNsL0JoQUFBQUNRV21GL2JPb2ZGblZqSjllZkRqMVlmYS9UVnVXTHpxcWdQN1hKbkplTzNzVjJoQ09weC9CSlV6dGpPVzRBQUFEd3FwejQ0cy9rejl2MWY5alV4K3htLzdRL0V5emlNSEVmUTNCOUJkeVV0WThJQkFBQVFPYkc5Z1U3Uy96dC81NVBtWkFPTW5CZ1daSjdEQ0FBQUFBdzFJeCs3cGt4NXAzeFBYQmd3T0FmQXdoZ3VLSnVqb3d4Ui9JTDluOGZ6Z2o1cmx6Ym1adFZ4Z25vMUhQdUh4dGpIams0OTZkTDF4U2FvNmdibTJyeGhSeVR3ZXVoeFdlNTlxUDkvTGtxNnVaMDRqazNjdDNiYy82VmM1K09vZjFJTDFtVlhCWkcyMkoyVnFWQTdRd3FsZ0dFaThGYTZNL3FzODArQnE5TFhBc2VQc2RKVzVXWFBlL3ozVUdIUDdTenRpcFBYYjFuYW51ZUJqKzA0dnpjdmRleGIwWGQyQUhCeCtDZmRydGZiVlUrbnZLTGlWM3pYakpEYWwxdVBlVDdMWVA3THlIZXk0V3htNDlkdHJmelhkaDRIZlcxejc1WDMvZG9WeHU2ditNMDRoRHFncDE3VWNnTXl6ZDNMZHBvUC9RWFdFN3V2WUlkMEUyK3pEOGR6SUIycjRYZmJWVStEUFhCUFR6VXQxV3ZqRzNRWUwwcjZ1WmQ1NyszVnVkRVVpNkt1dmxiTk5SajZrVGJJZitoL01BOXN2Y0tvdVR1UkpKd2huUHVoeDFvamQzblVLd1hmQnR4Zm40NXk2b2tGNjdYVHJMOVVBNEdEVzJBUWNPVnRQVjNwODFYbnQrenE1UXNUTUU2alpoUFp1SHVaVHFZWVU4R0k5NjVmbkN0dmorSlgxWTM4ajM5UHVCbmtaQlZscnlpYmw2NStGU2RySHZhQncxd3BITU5rVzB4UTkyKzhKVG5mRnVWNSt2OWFibWU3aTI1WGFzWDhYaDJ4Q0hFUmV0aWxMcDB4V2RKWi9VcWNCalJka3pZL3hBUisyV1dER1N1cmhFN3UzZlpUYWZtbW85Qmc2KzJLbFV5RzVldFA1R0lxZWRlZXhaQXVCZnBNazM0Y1dMdkladWllRzFWSHUxNjF6RkxsRlkvTzNuZ0VHSzVUd29EaHA2Zis3MEtLNFZxR3h1bzQ3SzZSaHhlSDhkMlJzTGwrdm9WQmczdU1IakkxNVJ6TDlHS2l3RS9pa1FRWFVDWDdKdTZYRjBYcnZwNjY4dVkxbDl6MHNBaHdNVTdlKzF2cUxvUmMwN1E2bmRERGlEb21NUmoweWFtaWQ3SjRNSFpCazFKTHVBTTF5YmYwWnhOT1BjTUdqTENvQUdiclBjbEhWNHJuMjNsNlBXL0hEVndDSERoWHJsWVVoSG9DM2JZVnFXVHRja2hCeEJFSCtMaWVQQndJWU9IMlprOFpFMmxzNHhrWEkvL01IaklsMTJHTWlTeEJaM0l2SEMrTVVUZmMyUEVKUHBidTFSNnlQc01HamlFV0VjWjBiSWtieG1MUWc4ZzZKekV3ZkhnNFV0Uk4wL2FxcHk4YVZwU3ZEbkwvclRrZFJqVGNraGZjcjBQT0FqbiszZ3VMckYyZlhKNjFCakZkcjE3VEhLUzFYblAxV3AvcmN1UHYzUGc0UHVobU9JK0JsZnY0L3R6eWV2ZmhrelppV2tjRHg1K0ZIVXphVG1nekY3TXpsc3RrcmoyT3Q5WEp6bTk1YlVlenhuY3diOGw5cXU1eHVSUkZKd09Uam5ubUd0ck9sYlBOOE45QnpNK3YwTmxkVnJpeXlidnVlLzViZllJZzhiQjhUVTQrbUhrZU4vUWg5UUdySkxCNHBlamx5TkZhMFJjZmplbG9pL2cyaUdEQnJqUU8zQ3dlVng5ZGlaZDVHaVg5bm10K3J6VWdHR3REYitsRGJjKzM0ZkJReHhjWGd0anpybDBabHdOR3V4U3FUZU9Ya3NWaDZIL3BDcmE1OERocytMZGdKOUJCaHcrbDMrNTJwTUozQnM0eUlYNjNNZVIwZEFSSCtpbG95VlUzMTE5OGUzc3JPOWp4K0FoRGpKVGYrYWlzVVBPdWFSOWROS1prWHNBUzNBQUJZcTZ1WmN4QmVsaEx3TmN1ak53OEIxbGlPRE0zVXJINWw3bHZESHNaaVk1bHM0M3VzbHgvT0Q2ZFZjWVBNUkJhakk4Y2RIWWJlZThxSnNqVjJrZkNaTUQ2bnlVYXJHek02MEJ5TVBmemRGOVphWmRpYUhENEtxTmdmWmMyR1VlYjN5OUZ4bVg0aUF6OTA0MlRmZWRjN3RCMTJaaGNuRXd1SjZBd2E0SC9PQ2g0d0tzVDN2dUk0UFRNMEkxSjlGcFlLV2JWY25iOGlUTlJ6dW1BY002eDVsMm9rTjA1RCt1cm9QdTRFRlNBUDV3MVQ0WHJ4TURxVy9oUXJDSHZVU1Znbk5SVDBRVGgvZWpuYWtUN1hyMW9tNThmL3IzUmQyOFgvL0wyTC9QUzEzdnhwamZTK3d6a09nMDRNeWZnWU92RHBqbUcwek1BNFl1WDRNSG9nNXg4VEI0Y0pJQ01NTkJnNVA2Rm9FZjlrNmlTbVBaam04cTE0ZkxlL0RRUFVCTFRSeHRlRTluQlZFRFdPUjZOeU92K1FVSE9NQldveXBIajZINGdYRG00cUhzT0RYbFhOY09jK3NqVWk0SER5Nk9RQTZEQnBlREJjUkZROFJUVWRUNVcwOEU1S1N0eXN0bG1wTUVCZzVReWR2QVFTTkhtWks4VjlHZXdNZWdZY2c2V3lpanBTTVJ5NkJCNDNJM0luMWhwSEx1RlM5WnZTanFwcHRZWVZMUlNRQzYvQytIY0ppck5MQnljOVkyYVBCQ2lsa2h6bk8zWk1mek14M2ZXVndWa0VOOEptZkxpeVRWK1kxa2NHSnZHaEN4clpXajU5Q1EzczNsZ0VIcnpZNmJNUG9zMUlsNDFsWWxlZUduKzBDKzlXdzljMUVVY2ZYTWsrKy8ycWl4UEZPcDU0STdVa3VZa0tvSDlrUjV5czVnMDd0ZHRsVzVNME9FQjA1Q290bzc1UjdiZCtMcGRSR1FMR0VJc2hlSEtNTThITDk4K1RyM2ZWSGpvbTVzZXRYWFNnNzJJNUp3YlBXVkt1THFaYm0zZEJWeGVPdnA5WThEZDc2dlpiWmwxcURCZHJZMER4cUt1dm50dVZnZkc5b1NJUVAzWno0L0RRLyt5YzRpcXFZUHQ1NHRjZTV0VktNYmxkQncvZG5uMlpMdkg5amc1V2pNdmtPclA1dWpiWkdYdm56TnJvU1lWVWdsdmVvdXZ0c1hVeWNtZEZ0alhSWW1EeUF2R3lqcDlBNm45Vmh4RHYyTHNaNVJ3T2pFWG9EMytDdTM2NzJvbTFOcU9jQ2x2MW1WZkdkbWtOZStiYXZ5b2N2WFpjRGdEaDJJdExuK2pxZHd2WERONTJ2VHVYZDhyM1grekF0RjlsemMyWGZoSzZ1Z0hhUzQyT09CWG5hNVUxWURoOGlXd0VXWHdmTE81dWdBQjNyUFpZNzQxRGMrbS8vYTk0bEJBMXh4ZFo2NVhwQXF4OWUyczJlZUJuWVpzS2NsVGxyMlhRQ0RGSFhqWktBYll3YkxlMW1WNUdadzV2Tk5OWFRXUTdWaDZzM1Z6dXhJKzU2N2I5VWRaM1FDQWVBZnVTZCtkblZJVXMxK3g3TWpEamxtc0hMVnNkL0MyL0orN1hyVHNkcjFjQ0Z1Q0VzTUlPekZGR3JBTUdQUUVLUmVoTFNSdFk4QXNNYW1GbmI1SEpUbjNRSEhHVU01dlA1c0Jxc29VajA3L014ZTkrMzZldTBZYkszakVHbzJJZFFBUXQ3RDl5anhaTTZBSWRBRjJUQlRCQUM3T2I1WGZzdTkwNEhGL01qdDJwTSsxWGZYcitudzVieXU3dkhsd2E3WGxRMlZYalpFclZ1ZEVOZWQybEJmbHBrUmhpQVlNQURBT0s0VEM2UlF2NkNvRzdzMis0dUNwcVJ1MzJYL3EzTWRmMUM4SWYzS1lmMmhzdk9aSjlYNGtxVmVqeHkxNTY5WVYzenNIRGdZMlJEbEs1MWpIMWNEQ0FZTS96QmdBTkJIeXl4a0RDbExpN3F4bGRFL3VuaTlxWU9Ib201c2JaWUxGMjFRNUVtb3BpaWFkWDgycEZhRDdYOTVLdEw3dXFpYm9KdlNoMTd2dHY1UVVUYytDcGZlZURxV1U3elUwcEN4dGk1VldoZTZXTXpVcFR1K0M2U3RURDBlTm5RVzhPWjF5NkFCQU9acnEvS1RoMzBQTDBiK1dtcURCbnRjczl1OE8wYU96L0RVUDdPOWx5aG94aVNqQmc0cmNrS3ZRalZ5NkFEQ3pzVEl6M2t0S09OZzQzUHB2bFgzU1R1anpDRU9BRm81N3RSOHpIbmZBeE5id3pCNFNFZnNuMnZTd01GSUtHbUp5cjN5NTE1bldHNjh2bWRpcm1ZTUdJSkVRY3dDa1NFQXlJM2NZMjlkZmV3Y0J3ODhwOGFSNDZWbXJVMElpVjBqSDFMNFBJUDJPR3l6T2dpQmIzcXJkV3FmQTlRNStHUE95YmFEaGtCbDlXMjJKTkw5QVVBQU5xTHJNbmxJQ3B1bWgyREFNTjNxR1ovVFFETmtraDVmVXJybVp3OGNWaFlhUUhnZk5EZzYyZDRIRGR5SUFTQTgxOGxENUhYZXRsVjVudGpwUEtOdWtEdWRQbGZVSGVxaFZ0OHpFOWVnS2NYdnNidUJ3MG9LSTBNVFVVZWNBUU1BTE05eHl0YjNSZDI4Nzd1L2R6cU1vU0xaVTltYVJwZUsyNWVFYm9mYS9IZGRPTXY4NVpMTHZzcjZheWthU0Z5M1ZYbWtvQjFlRlczcjczaEhtamJ1aWVzTUQ1NHVhczA1bUFlUlBPQ1RERWxqUjVzMzQzUG8raHhUeVNSTjlNc1R4NTZMbVovN1o2Z3NQdHF1VDZrZWJKL0x0bDFQSjc3TXRUSG0wMUl6cVhPT3FSWkwzM3VLdXJHUm54Y09FclhZYStHcjlraVNYRE9uTTY1NUk4WGFMc2tBNW5uZzhQZE42dWJTWVRFUFg3enREM0E5Y0NES0FBQUFnTkNDREJ4V3RBNGdmSGZFWFEwY0dEQUFBQUJnS1VFSERpdGFCaENoT3VJT0JnNlR5cVFEQUFBQXJpd3ljRmhaYWcvRUV2VW5KdjdxcjdZcUh6dHVEZ0FBQUREYW9nT0hsWUJabUY0dVVlWjd5c0NCWlVrQUFBRFFSTVhBb2N0VEJxSmJXNmpIdytzT011WXpNV0FBQUFDQVJzN3JPTXpsdXBBYzlSZ0FBQUNBK2RRTkhGYm1EaUFpNm9nZnRsWDVYVUU3QUFBQWdJM1VEaHhXeGxiSmpHakFRRlZOQUFBQVJPTi9zVFRVN2xHUVFjSGhoaC81RU1tZ3dRNFlDZ1lOQUFBQWlJbTZ6ZEZqckpZeGFSOHcySGF5aHdFQUFBQXhpM3JnQUFBQUFDQ01hSllxcmRpaWNaNVN0anBsMnhoRE93RUFBSUFob2hvNEZIVnp1VVNsNmJHNkF3WVpRQnhvYnpNQUFBQ3dUVFFEaDZKdWJNclNZd1ZOMldwRGxPR2JESG9BQUFDQUtFVXhjSkJVcktXQ3BteTFZMm5Tc1h3T0FBQUFJRHJxQnc0U2FkaFp2MkZwUmQzOEhOQ0VQZlk5QUFBQUlFYXFCdzR5YUlnaDBuQnVqSGswNHVjWlBBQUFBQ0FxYWdjT3NpY2doa0dEM2ZqOGVzTHZNWGdBQUFCQU5CNW9iS2hOdVJyRFJtanhiZW92VWhnT0FBQUFQaFIxODlnWVl5ZmluMjU0K2JPMktrL0h2TFc2QW5BeWc3K3pNNjZodyswcWFzRGdBUUFBQUhQTjdKczJiVlZ1TFNHZ2F1QlExTTFEWTh6TmtKOWR1clB0ZXFrUmd3Y0FBQUJNNGJoZmV0dFc1Y08rZjlBMmNCamNtQ1U3Mmg3M0oreTNWVW5LVmdBQUFPeTBaYVhPVlZ1VnJ3YSt4dSsrREtaOWZXMDFBNGV4bmZHbEJnNEJOalVmdGxYNTNmTjdBQUFBSUdKRjNSd1pZNzUwUDhHYy9uSGZJR1Q5OVZSa1ZZb2x3MUNnZG42VHplRUFBQURBSnQxQnc5WGNTWFU3Y2IzK0d1dDkzOFVIRGhFTkdrSkdBUzRrSFMwQUFBQnd4MXIvZWZDeXBDRjZCZzkvKzhDTERod2lHalNjTGxCVDRwakJBd0FBQUxaeE9XaFlXUnM4L08wREw3YkhZZTZnSWRRZWg2SHBZVDNhbVJvTEFBQUFlZWoyb1RmMWgwZjBzNi9icWp6YThCcDJRSEloLzNuU1Z1WGxJaEdIb202K0x2RytFeTA1YUxES3dNdWtBQlRJYVQ0QUFDQUFTVVJCVkFBQWtJZW5td1laZHFEUStjOC9BNGpnQXdlWndkOVV3VTRWUlV1cEdEd0FBQUNnNjBub283RkV4R0hwR2Z4QkZPNi9ZUEFBQUFDUXNlNysxN1lxZjQ0NEVzODZmNXIxZjl5eUd1aFo5ejhlaER6MHBGMmQ3Yy9nZ1QwUEFBQUFXVHFlOHFIYnF1d09EQTVrTXJxYitLZDNOWkQ5dmFMK044NElGbkZnME9BTWtRY0FBQURNOFduczc5b3NvMEVHRGd3YW5DdEoxUW9BQUlDSjNrejR0U1B2UzVVbzhPYU5yZlBnSlhjdkFBQUEwakdnUC81aHlJZjFHbkdJcFROZTFNMmJCUXE4dVhBc09YWUJBQUNBU2RxcUhCU0I4Qlp4a0E2dCtzNTRVVGVQalRIdkZUUmxxZ3ZaTU0yK0IyQ0xvbTVXQlc2TzVJOXhrQnE2a1hXaW4vZ082dVhwM0Y4YlkreG13L08yS245SGZHeGV5SktGc2NkajlmbS9ybTI2aEhMeWZYZzFjWlB0clRIRzN1c3UxM0w4STI2SFExdnZyWEswN3lWS3JpcEhSN1N2WVpmOVdCNWVzajlqVWxhQWp0dTJLaDg2YmRnV3Z0dnMrRG84WEtvVFc5U052UWIzWEwzZWxvcVlieUlZOEh1dCtwN1F2V3ZVL2R6UmQ5RzNqWlZZbDJJM05ScGozZ1YrKzdkdFZaNjdlQ0hYOTVhbHVlckRiTE5XOVRja083ZzRHdnNjY25SUGU5bFc1ZWhOdjFPNGFPK1U2MkJJMWVqMW54Tm5mZmVBSVczb3ZOYVpsNGdEbTZFWGNXTS9VaVJ0ZGZIUUQvMEFpYW5OM3hhOEZrSjl4aGlpaE9YUUczenViS2UycmNyVGdZZEIrNkRCckZkaVhlcmNLM2pHdlMvcVp2MjcrbVJrN3ZtVlpBWU5QdldrMkZ5Q1BWZmZPaWs4UHd4ZEJ1UEFteW5aZ3BaaW96K2hJblp5anoxZHZ5L1krZzBqSmpvK09kL2pFT2hHZGE5d3hWaUpEUnIrU1BFellScVpuUXZLdy9YM2JNRFBSTU1lSDc2amVRcDk3cFZmYXovNEhyalhPZWNhbDRpL1Z0Q0dsRnpQL0N5LzF2NTc2ekxGb203K3JwU3dVU1NuQTRkQU40UGJ1ZUgvVURldEpXYVp1Q0hIeWNPMUV2M3NYS3JycGhsQTVFdk92YmRCUGRkV2Z1ejFGTU01MzFLVkdDUE5YUWJaVnVYam52T3o3UnE2NmY2SHM0RkR3RUhEckhYdG9RY05EQjR3d3BYTGcxWFV6WlRsQUZQZnkrazFsOE95SHI2bjJkcnpjZTY1bnZJajU1d2xYQm1iK3IzdmU4WVdkVE5vVXQ3SndDRlFNYkxvQmcyYi9qc0VIaUx4OFZDVDQxRU94eTFtZkUvejVmTGNjeDNsaDNNT0Q3NnR2MlIzbVpJeDVyTnhNWENRZEthK042dTVHRFFFeVRLemFaREE0QUVET1YzWEh5SThUTFJoSHI2bitYSng3cmwrOHNNNWg4MGV0VG9JbTVZLzJtZHA5OCt1ZjkvdzdMM3AvTHhOM2V3azR2REQ5eGwwTUdnSVVsTmlWNGRub2NFRGVaWWo0bUZkLzl4YzlRaUFqa0MrNWd6dXVXN3l3em1IK2ErdjBNMGN0YmNXR1hCaTA0Qmsxc0FoeEFVOHQ3TXRCek5FSHVQOUlUKzB3T0RoMk1jRkJYOWNYeU0rQjQ5RUc0RFpKZzN1WlVJTUdXSFFnRFhkZnVlTnk3NmVyTkw1dTMrbSsyeWVQSENJWWRBZ2JnYjkxRHduWTRxdkxkQTVDbkVNb0ZjTWVlK05neFJ6VWFOVGtLK0o1MzZKd2w1WXlOQ05xOGlIOUR0dk94LzR4a1hXdHA2MHZuY214aWNOSEdJWk5JU3FLVEdsN0xwOHZ0c0JQK29FblpLNGVJZzZEQzJ1TmVZMVhVY2JWRlhhQlFCRjdtMWNCV1FwZjdjdnVUY2xMYlBkcjd6aDk1NnNUNHlQcmh3ZFlwTnhSSU9HV1RVbDdBa1BXZVhSSGhPV2dtVExscGwzUG5od0tLbGliMVBaRkxwOU9iYVJ2cUp1M3JSVmVUN2tneklSbEJkYlhUajNZNEROcEMvNWVIM1A4ZHo3eEtiKzRxaUlnNFRLdkhaeUl4bzB6TjYwTGE5eDRLSVM5bEJGM1VSVGlqMTNIcUlPenRaRXV5NWlsV3F4dHdsSW9adXY5N2tmQUd6MGhVT0RiZHFxL0NsOWhqTUhCMnAvVy85ajdGSWxyNkd5eUFZTnpqcDFnUWNQendPOUQ5eHd1ZTdmNVpwb1owV0hpSUlCUVBLQ3BNVFBYVnVWcDUzVXFrTWorZGRyYVZtM1Rnd09YcXJrdTBPZTY2Q2g4NW9Ib1pZdHNXUXBIbmJkditOQ1VRZHRWYzY2Z1llc1NPM1oyT1ZSUi9MSGE0cGJGK2NvTnZaaEY3akpVODc5aTFETFNoZGtaeXU5UnYrSUx2NHhlSDlqd1B2dEIyT01seFVKblBObHlIRjMzdGNiTkhDSVpOQ3dhSUUzUjYvTjRBRjluamtNVlg5emNDTnh0cHhteVd0d3dzUHMzczlMcWx2WFdhdGNuS05CY3IwSFREejNkd1kzMHFGenVyVE1KakhZTlloeXZkNDl0MnNnd3MvcmEvbmkvcGhza01ES3pxVktBVWE3ZytvZmJLT2x3SnVqOXpnSWxXMnBxSnNYSWQ0SDg3aWVyWm1UNnpsRUplcVl0Rlg1aWdGNG51d21kZy9uL3QyQW4zRTJjT0RhemRLekljdFJnRTIyRGh5a2crRnpzOTdaM0lzM1ZJRzNrRGRZRjV1dUIvb1k2SDB3aytQcmIwNWREMmZMZEZMcXROQUJ5OWNDNTk1VjFxMFRSNjhEVHlSVGpqTXlZR0R5QjdQc2lqajRMQngyNjJoZGE0amlab2NCM3VPT1VBOGowdnBoS01jVnFGTXM5a1pITEYrL0FuNXlKNTNKS2ZXSEVOd1BoMi80Z2RNSEZ6WU9IQUxzYTVnOXF4Nm8wM3UxMUViRmdJTUhLbEpHd09YMU1QRzc0Mnd0ZjRyRjN1aUk1WXZhRzlDdXJjbzNuQ1M0MER0dzhOMlJqS3pBbTdQYzkxTUVHanhRa1JKYk9hNDh6Y3c4QUlURFBSZk9iSW80ZU90SXhyUVdPT0JlZzYxQ0hMT0VVbXdtYmNHb3c1Qk5tNE13TXcvTXdocDFqTUk5Rnk3ZEd6aTRyZ2k3NWlxV3MrZXFnK1lxTWhKZzhFREYybmdFM1IvZ3N1SjBCcHVJVTl5N2dRUzUvRjREeUVkZnhNRlpSZGgxU3kvN0dVcmJvS0hENitZbU5rckh3ZVgrZ0lIbjNIdldzb1F3R3d6ZlhGMWpmSzhWbTVNMmV3MlRHWERxenNEQlo4Y3hscGxHeFlNR05qZWhLOGlhVlpmRnBraFpDc3puTXAwbWswV3FPWG5lcDVpSUFzdmFXUURPa1pjeG5HZk5nNFlWMzUwdkNuekZ3ZVdhMVIzWHE2dUsxUUFVWXZDZ0ZoT0ZVT252d01GelovZVQ5dE1mdzZCaHhmUGd3Vm1CTC9nVllCRHBMTVZrUnRFR1p2Y1FIZnZja2ora2xkWEQyN0p4WUE3dkVZZElPZ3o3TGw3RTg4Wnl3SnNOQTE1WHhZZENGc2RhR2dOdnhPekhhaERCV1FUUTU4L0FJZk1DWUNkdFZjN3U4TXNTbjJBekJENEhaRHcwNHVIck9uQzRNWS9pV0VDRU9sR0lSUXFnQXREcGdiVEtTOTJHQ0tJTmpZdTE0cExXYm9tWnhqT1grZlZqd3dESExYczhPOS9aRzBjdlR1RWh4Vnh1ZmgvTDVTYmZERDBMdVArbzdOeHJUMkt2Q2JEVU5jLzFqbFE4eVBsTXRsVTVPOUlpTTdPTHBMVnJxL0swcUp0c0J3NzRqKzNzYXgxRTVWUjR5SEYxN1ZBVzIveGUxRTB5ZTE5Q0Y5QzBuVkI3L0Jad1VkVE5oWWw3MzlJaTEzeEsxenZ5NW0zZ29QMEw0ckI5cm1abXAvcEY4VGJZNkptZEdaeDdJR1NmanFzbGQwNzJEa1dFUVh5K3Nyc0hkeVlyYnR1cWRMYTBFWUJ1Lzh1eGVtUk1HWlIyWWYwNGpLUG9tWEMyVDhmRjNxRllPTDRYNUxTWlBHbzI0dXo0M0o4Ti9VRkZrM043bmYwUU1VYmRBSXp3SUxmcWtTa05Hb0ExSjFxK3p6bUU1SXU2ZVdHTStlamhwWE5PVmhHRm9tNXNqdjMzcnR0cWw1OUdmbWplclpiUHNpd0hTSk92cFVwdk5SNHRCZzFJbWQxUHNGcC9qTjBVN3dzaHJiTm5xZHpETmU5dldyV0xBUVNRRmk5MUhOcXFQTmQybEJnMElCT0w3eXVnb3dBRTlVVHo0YVl1QkpBVzd3WGdORWg1ME9BeTN6N2lwMkMybXZYNTh3eGU0NDdrSEU3NVFHMVYvb3doN1RHREJ5QU5YZ1lPUytZRzd6SHBacnhPY1ZYb3BiTTZRWmtsWi96WnJEOVBBbXZjTVZGYmxaTUxyVW5hWS9WWnpDVDZ3R1FYRURGZkVZZkZjb092dVpwek0xNHA2dVl5WkZWb0lGTE1sczlEdENaZlYzTS91WTAyUnJKTThJYkJBeEN2bEpjcTJkelNzMVBORm5Wak01d2N1Mm1TV3g2aklIUUFJN2RFQjRMWjhubUkxdVRMeGJOcXhYNzNJeGhBRUNrSElxMG83bTNnVU5UTm9odWtYUlNra1ZtUmIyNWE1SVdYS0FnZHdHU0VuTUhPcmRpYlUyd296NWV2Yzk4WlFOeHFQTGpzZVlBblR6bXdmdjFQS3M3NjhIcXBENVZRVmVpTnVPbGlsNUF6MktRUW5lVlp4RzNIUE40SDNIWVNMWklvQklBSS9NOWh4ZGw3aXJyNUdmb1E1SkIyVlFwUEFVTjRYM1pHaDJTV0p6R0dxakdmZE9hRERyZzdBd2duU1VQbVlnSU1pSS92UFE2UFFoNlJqR28xK0toVyt3ZWR3TFN3N0V3djZjUUZuMXhSNURyWEQ3NzBmZFltRGVrTUlqNHMyUllBY1ZsVmpyNzF0VjdlZHNKRDNDUnpHVFF3UTNOSHlFM2M3d0srbDJ2N3ZwYmRNZEFjVDlNeDQveUZwZkY0dDFYNXhoaGovNndTYmdUTklHZ1RrTGpJZmpnVTF6d3d6NStCZzEwRDZiTkRXdFROZDU5TG9oZzBPQlBWV3V1UXMrbEYzVVE3Y0xETElZcmF5MVltbFpzdWxmb2dIVFRrNTBUcUxLalhUU29TOEhsb0U1RFFtVWRVY2s0cC9HREF6N2hRMm9Qc2FUMm5rODFsRVF3YXZIYzZXR3VkTGp1NGRuMk51OGhjbGlpYnplb1YzNmZzUlQxWVhFM0lTVXB5emRrRmdTVmtPeEgwZCtEZ28yT3g1c2JEck1LSmk4R0lqWWk0YVk1WDd6Mi9QcGxkTUViMHRUNVlzcEN2VGVkZW5nV2xvd1B6T29YT2hTd2pXZzBpZm9iZXU1aXhYeGtlNit1STBxbkd2SHg1bHFBRjRCd1BUQm9YNFYrcE4rSHFRZUZGaUdnSXM2UHBjOWxSWnRNMVV1UjZTVzFxZTlKc2ltY0czTUZFc2J6TnNVOUpmWnBFM1JrNGhMZ2h1THFSdXJqQlN3aDJzWG9UUXdRYU5QQWd3QmpaWnNOQitsemZENHU2U2E0aXVCeWprQVVtcytOcWNxYW9tMmdtQmR1cWRGSTRPTVRTN3B6MVJSeTgzd3drYzRNR0lkWnRUbDRDRkdpMmlnMnVBT0RQanhTUGJjZ0NrNWdseDByS3ZwZDJaKzNld0NIUXpXQ3ZxSnRGdzNDQk91VlhVNWNBaFFweHM4RVZBTzd5RUhWSU5ZMzJsWUkyQUVIbEh0SFl0TWZCZXhsOFk4eHhVVGRIQWQ3bm5sQXorVzFWdnByeWl3RUhEU3hSQW9CK1R6Z3UyMDE5eGlHc29tNDRUMjY1aW1oRW1XU2tkK0FRc0F6K2w5QzVjTFhQNUFlY21mS1MyQjhBVXVDNnFqZkZPN0dnaTl3T2ZnemZ0MWlUakd6TXFoUndOdm9tMU9CQisweCt5TDBmUGd2eUFVQUtQQ3haSW1zTUZsSFVEWm53SEdBQ1lFYzYxcENEQjk5dkVNR2c0WHVvVXY4c1VRS0F3Vnd1SjNpZTBtR1hkT2J3eCtXeThWanFEamo3dnJudTkwVlM4OHU3SVhVY2dpeHA4ZG14ajJEUWNCbXFsZ1NEQmdBWXp2Vnlnc1JtTEZXbk00K2Q2MlhqOXRyVG5oNVk2L2ZOY1hISXFPMGNPSVJjMHVMamhocHFoRGhqMEdBM0xSMjdiMUd2azBEdkF3REo4TEJrYVpIRUlDNnhaQ05hUDNJN2R6SmdtalFJczB2cDVYaTVIalJFbTVIc3daQWZzamZOVUJlYXZNKytpNUcyZE1xOWp4Qm5EQm9PQW01YXVuVlJhUnRBT3JSMElDS0poRFlPbnlkZjdPRjM5RnJCeURyNVdKYTg5Rkp5elorTWVCNjd2TzcrV2pzT240MHg1MVBUeDBkaWIrMHpuL1ZGTjJSUWYrcTcva1hNR2NrR0RSeE00TUdEYkppZU5YaVFEZGNoT3VXSE0zNDNSQUc2UDZqWEFFQXIyeUhWbm1IRVJ0OWRQZ1B0YTAwWk1ESFRud1RiTnhrMGNIQjkzVzFnOTk0OEwycXZLOVBmanFnTS9kSVk4OUZuWSt3QXVLaWJxQWZCU3hteXg2SHJROEIyM3NpTS9PVGZkOWlXVGV5SWRkSlNxSkEzZi9ZMUFNQjgzRXVCeVY0TS9jVzJLbFBQUHZaTFFSc21HelZ3YUtzeWRMVzhiMU1LbHdUcWxEZFRaOGdZTkFBQWlCN3dqQnJvV1JTdHhDQnRWYXJlb0w3TDJJakRFbC95QzhrNk5FakFERXFUb2lFTUdnQWdYaDQyU3BQaUVWc2x2dmVnRi8wWHZVWVBITXd5Si9TNHFKdWRWVHdqU0xzYWNuYnBaY0QzQW9DY1BISDRXWE5POFJodFpwa0Z1THptc0pBVUJrU1RCZzVtbVEvL2FGdkhPNEpCUThqMGU3OHlXQ01JQUl0b3EzTG5STllZdVM1WmlqbXpUR2l1cjdrWUVIWFFhZkxBd1N4MFV2dHVzTm9IRGVLTDA4WnNFZnY2T1FEUXpzT1NwY0diUjFOQXAzQzhUSTlaeUtROFhxVnkvbVlOSEVUd1RUdmRnY0xVb2g1anpUbmg3R3NBZ0NTZE9meFF2dE5QYXNJU3BZbHllOFl2a0pUSGk1VE8yK3lCZzJ6YUNYNFRrRXFBZHRQMG51LzNpdVdFTTJnQWdIQmMxNTdJWk1sU3d4S2wyZllqYi84b0NmUnRranBmTGlJT3EzV0t0eTVlYTZUakFPOFJ4UWxuMEFBQTRYbFlzcFJ5c2M2WFV6TVM0aDliSERmRHlFT1VuOWUyZTA0eFk0MmNEQnhNdXBXSlR5STU0WE9xVndNQTVuRlowQ2xFOGRMZ3BBTkYwZzZITWgwOFJKTXhNdFh6NDJ6Z1lOSTdTTmR0VlE2dUg3R2d6MU9yVndNQTVuT2RrR0pJK3ZHSTdCTVI5MGNHWkRFY1h5ZkwwK3pnTTRMUCt5VGxhOTdwd01Ha00zaTRiYXN5WlByVXlkcXF6Q29UQndCbzVQalo5MmpUUDhqN3VOeVU3Y1dxUTV2YU1nMnR0QThnWEtlVDdYemV6eTVmZDQ3T05aOTA2dHdIUGw3VUhyaVlOM25Gc3V3cTRrSGFiWWhON1k3RjJHWmZzcXRpQ3U5U1djSnk1V3J2WFZFM1h6ZE5ZTW1tN0hzYnM0dTZzWC8zenNYN1QzREZwdWZsZGZzRlJkM1k3OVh6aFJwMUhXSUN0anQ1dXNUMW4yTTByV2hiZi8zN0dBY1BQaTRDSDhjaGhZdDFSbEc4bjB1TjZHZTArYnVXbWJlaWJ1em14RW1EWThtaXBzS2Nvb3FhUHNjY2dRdExlakhsWE1SdzdqVzJVZHIwYXViZ3h1YlZ2MXhpaVd4Uk4zWkpXT3gxaW40dnVieFlyZ0hid1g3cTRPV3U1RnBRZXorVlpBTnZaZzRvcm8weDUrelIrWS9YZ1lPSmJQRGdxelB1K2hpd1hoUUFBQUNoT2QvanNJNGFDRzR4YUFBQUFNQVN2QThjVEFTZDNZZzY0OUdrSVFNQUFFQmFnZ3djak9MT2VVU0Rob2IxZFFBQUFGaEtzSUdEMGRsSmo2WndHdFUyQVFBQXNLU2dBd2VqYS9Cd0ZVdmhOUFkxQUFBQVlHbkJCdzVHUjBmNE5wWjgwd3dhQUFBQW9NRWlBd2V6Y0llWUFtOEFBQURBT0lzTkhNeENIV1BTcmdJQUFBRGpMVHB3TUlFN3lCRjF4dmNWdEFFQUFBRDRhL0dCZ3duVW9ZOW8wSERTVnVWdkJlMEFBQUFBL2xJeGNEQ2VPL2FSMVdxNFZOQU9BQUFBNEE0MUF3ZnpyNE4vNitFMVkzQkxyUVlBQUFCb3BXcmdZUDVsUEdvY3ZWdzBld1ZpeWZRRUFBQ0FQS2tiT0poL1ZaSlBacjVNTkhzRnlLQUVBQUFBN1ZRT0hNeC9uV203MXY5dzRxOUhzMWVBUVFNQUFBQmlVTFJ0cTc2WlJkMk1hcVMyenZpbTlqTm9BQUFBUUN6VVJoeTZ4blN3S2ZBR0FBQUF1QmZGd01FTTdHZ3phQUFBQUFEOGlHYmdZSFowdUJrMEFBQUFBUDVFTlhBd0d6cmVEQm9BQUFBQXY2SWJPSmgvSGZER01HZ0FBQUFBZ29naXExSUtpcnA1Ykl6NVlZeDUxbGJsMTl5UHh4eEYzZGo2SEh0U2JadkNlUUFBQUFBQUFBQ2d3QU5PZ2w5RjNkZzZkTWNwZjhaUWVvN2xYcWRFeG40c2hjSUJBQUFBQUFBQUlFVUVIRHdwNnVhN01hWk04c01GVnRUTmdUSG0yNDUzdlNucVA3dmxUOXFxdkV6dEdBQUFBQUFBQUFDQWRxUlVjbXhBb0lHVVNpTjBkakNNMWJSVmVhRDk4d0VBQUFBQUFBQkFLdGpoNEVpbnJnQWNjSEE4eTFXd2dzSjdBQUFBQUFBQUFPQWZBWWVaU0oza1ZsRTNkdmZIVTVjdlNwMEhBQUFBQUFBQUFQQ1BnTU5FUGliR2MxYlV6U3RqeklYblEwQ2RCd0FBQUFBQUFBRHdoQm9PSXhWMVl5ZXFqMmU4QkRVY09vcTZlV2dEQVF1OS9YVmJsVWNMdlRjQUFBQUFBQUFBSklVZERnTVZkZlBDR1BNeGlzWkdZa1pCYUZlZVNodHUyNnA4bU5PeEJ3QUFBQUFBQUtCYlVUZHZqREdubm1zSFg5bjNhS3Z5cDRzWFk0ZkREaDVXNEdlL3c2R29HM3Z4UGxMUWxIc29NQTBBQUFBQUFBQWdOSVVwL0o5TUNVSVFjTmpDMHdyOGJBTU9SZDJjRzJOZUsyaktFQlNZQmdBQUFBQUFBT0ROelBubmEyT01uV2YrYm96NU00KzVtbmVXUmZRSDhuTTJwZnhqK2QrcGk4RFAycW84SGZLREJCeDZlRTcxazEzQW9hZ2JlM0YvVTlDVUtRN2JxdndlWDdNQkFBQUFBQUFBYUZQVXpTdGp6TVdBWm4xdXEvSkZpT2FQYU5QTzFQUUVIRHFLdXJFVHk2WG50OGtxNEtDZ1RvTXJKMjFWWHFieFVRQUFBQUFBQUFDRU5DQjF2NW82c3dNeTFUUnRWUjcwL1FNQmgzRVJIQmV5Q0RnVWRmUGJjekdUcFJCNEFBQUFBQUFBQUREWWp2b01xdWNidHkwbzc2dUhtM1hBd1VOQjZDR1NEamdVZGZQSkdQTmNRVk44dTJxcjhsWGFIeEVBQUFBQUFBREFIRnNXWnY5cXEvSnhEQWQzVzhyODlhQkR0Z0dIQlZQOUpCbHdLT3JHNWhQN3FLQXBvVjIzVlhtVTEwY0dBQUFBQUFBQXNNdVdGUDZqNW9pTHVqbVNvczlHL3ZmaGhOSUFuNDB4NTNQbXBqZk5xWGVERHRrRkhCU2sra2txNExEUUxoR05OdVl0QXdBQUFBQUFBSkNYTGJzQ3hnWWJ0cVZqbW11L3JjcmZZMTVqVjlEaGY1NGFxazVSTjIva1lLUllWMkFSY2p3Sk52eW50TWREb3BZQUFBQUFBQUFBOHRZWGJQaXNiREg2VFZFM1A4ZjhRbC9kQnZOdkYwYjZBUWU3QWw4bXh0OHJhRTRTN0tUNmdpbXB0Q1B3QUFBQUFBQUFBR1JzTmZtK3JxM0tGd3FQeXFPaWJzYldxdjNjODNkZjdQOTU0S1pOT2pFcDdwYmRKVUxnWnJCU3JqOVNMUUVBQUFBQUFBQjUrZFR6YWE5OUhZRk51dzVXQnN5VFh4aGpMa2U4MzR0TnI1bGt3R0ZMTVE1TU81NjJXdm9QanQwa0JCNEFBQUFBQUFDQXZOeEw2OTlXWmUrdWgwRE9qREh2ZkwrVjNkbVJWTUJCdG41Y0tHaEtNdGdsNGd5QkJ3QUFBQUFBQUFDcHVPNHBadjBxbVlBREUrTnVGWFh6bXdMYlhxd0NEMWR0Vlk3TmpRWUFBQUFBQUFBQWcwam1tc3Vld01DNjJ3bEg5R3ZQNno2T1B1REF4TGhiUmQzWUMvQTRwYytrMUhGUk4vWTRuN1JWT1RnL0dnQUFBQUFBQUFCME9WaU0vOWpSQVgwYWJjQ0JpWEczcEhMNmw1UStVeVF1aXJxeGFjQmV0bFhaVjB3R0FBQUFBQUFBQUh6WmI2dnl0NlBYdm80dTRFQUJZN2VLdW5sb2pMbEo2VE5GNm1OUk43YmxUOXFxL0puN3dmQ2xxSnUrclY0aC9XcXIwbFhFV0sxWWozTlJONmNoQ2lpTjlNc1ljK0R3d1I4ZHBmV1pidHVxZk9qamhXVUJnTlg5WC90ZXBZLzNpNEI5T05xQS9HVXF6OGVpYnV6bmVLU2dLZmpuV1Z1Vlg1YzZIdks5dDkvekExbFo5bGorLzF4M2NkdGN3Si9hcWp4WDBKYW9GWFZqcjZNWE5wZHlaUGVkWDNMdi94cmJvaXp1OFNvbFBjYVdPWjFYOGwxZmNndzIxN1drWnZtNjhEUFpIc2VQUzcyL1NEWUZ0NUxGNDJRYStlZXNyY3JUbWEvUld3UzdhTnQ0U2g4a1VxZGgwUUZORjNVdjlHcXJzc2o5R0xpbTZYcFArZnpHZkp5MTN4Tnp1eS9Fc0pOeHpEa3A2c1pPbkwzMjI2SnNSVE1vbysrbG1vc0IxeDJrZnZYSytmbUtrUVRsejduTy92Z2d3ZW52U3pXQWU3eHFhdVpoeGhxUmV6MG5Ocy84RzllVHhoS2svYWJrT0Y2M1ZkazdrUnNyQlFzVHV3NURQQy82bmd0VHgvVkRqdC9xdFljZWF4ZHpEQnVlZlNkUjdIQW82dVo3eGl2N25PTjQ2cmY2d2hKNEFJSjZwam0xbk53WFhHNXpWRXNtNTVNSk5naUNEZjZzNmlKMVpiR2pET294Q2V6UHU2SnUxbmNsSnJzaTFKQlNlQWo3bkgwdHU4YnZZRXlGV0NqZDJhdlJYaWM5dGRXMFZYbmdvSjFlZGpCRHBjWE90YzJzNEh2UmhBMVdEVW1kNzJ1T3dRWURWUWNjbEVVWDUzSjFBNXlNaDFkODVNdnZMWFVIZ0gvc3FxZWlidmFWcDVtN3NXMU1PZWdncWExVVQ4NHpjUkdGUjJ1cmJUNjBWZmttOTRNQ0pHNDkrQmgxalRRQ0RPN1k1d0hQYm1pa0pIMVBDc29RazdqQUJHK05NZS9YZnMwdW1QQityY3F1cm1MQTdqczd4L0IyU2lwTEdidjNVaHR3U0dnNzR1S1R4UW5XYWJpVGd6R0RyYXQ3OGhtVFhyVUZhQ0FUK1VNZXlrdXk5L01rQjgxSzYyaDBzV28rWG5iVjZ5cVFSZDVXSUE4Zk82dmRvOGpoWHRTTkRaQThWOUFVQUo0VWRmT21ad0lTOHlXVmZnaHBzSlA0UmQzYys3N2IrMENvV2xVMjRENWdmdU85dEduc1dMZHY3RzZETE9aL0kxL0lPMXRrS1pFSlpCdG9LQlFFRzlxRWdnMG5ja3p2REJiazd3b3BMSmt5dTJxcmxaMC9BRHpTdmdvdXhVQ3I3TUxUSEd6NFRMQWhHUmZ5UEYwc3p6ZUE0SDdJOTE1bElXcHBXMHV3QVVoWDUzdE9zQUhJeTl1ZVR4djBQaUR6R3g5Mi9OajZEdkd0TnYzc0twQ2lKdUJnSnhxa3NZOFVOR2NPTFlHRzN3bE5TRFZ5VExldVJyUXBxK1JMMVBkbFRzazNDcElCL2hGMENDZUNsSCsyT09rTEJlMkFXNlVNL3FOTnVRSmd0TmZ5dlZleEVyWXpBUWtnVVh6UGdieHQyc2t3NGI2d2E3SFVyMjMvYU5QTHloekg3YmFmcy9QSnV4cXk1V2YyVi8rUGlwUktxZHg4TlV4T3BaYnJjOG94bFMvemVXSTFRTzZSN3czcFBRQ1BCbTQvWEV3S09ZbGwwa2R6c09HWjVMOUV1cDZUM3h2SXpoZWJibW1wNzczc3RGQmRyd2pBUEFRWkFLeHNtbGVRdnh0VWMwcnEwYzJ1U1RkM2dmeVdlOXV6YnEzSlJRTU9FaEhaVzdJTkxpZ0pOQ1ExdWU3aW1MWlYrVjF5c2FkV3c2SnJ0ZVdKZk5TQUo5STUrS2wxQjE3TUU2VVNiUGlpb0NtYkpGMmdHM2ZKODNSU3dUUUFjWkx2ZmRCN1BaT1FRTm9vQkEyZ3o1YkZqQitYWEFReGxLU2pMVGY4K0wxYVdZdWtWT3FrVDRvNjJOQ3BIYkFvT1phcEJCc09YUjlUTzREUWNxNDh1bUR3QXZnak80aythejNFTVg3L2k3cDVyRG5ZSU04TmdnMzVlUys3UlFIazR5WlVpaVg2NjBEYVpGRXR3UVlBdldSZThxcnYzMWJwMXlSb3FVWW5MVnh2c0tHdjFxNVpJdUFnamRTY09tRW5UWUdHaERxdFYzSmN2Ulp3N0p5N3JUbkxZa1VSVE1BZnllRi9wdlVReC9ROGtHREREd1ZONlVWcW5ld2RheTBzQzhDYkwvSnM4b1pnQTVDMkZCYlZBdkN2cmNwWE8rWWxQM2FDRDhGVCs2NDJDUXlZYzk2NllEeFlTcVZFMGllcFNLMndZeHRMYkJhcFFiREtXYVk1VGNvTXBkd1U3bTFwQWpCUFc1V244dEJYdVRJL2h2UktrdWFPWUFPMHM0VmxMMzB2aEFDZ2luMDJlWGtHc0hNS1NCc0JSUUJqZGVZbGJmMkc1eHQrL2VtRyswdGpqTEcvOTJuS2VFVjJVYnphOHI0YkRSMHZldzg0RkhWemFveDU1L3Q5UER2VU1PQzBVYWJZZDRkMGFaalVXUVU3RWd2aXJQeUlJUThjRUJ0YlFMaW9tMzJ0dFdFMEJ4MjAxOVRoZm9rMTMzeE5QZ0xReWVNejlKaFREcVNKWUFPQU9TU1R3aDhqNXRCTCtmUE96dnQ1Wm5kaVBCNjdBTjlid0NHUlFyMHFDdkVtV1BSWVhSSE90aXB0MGUwa0F3L1NBYkxWNG9OdnhRSlNKZmV3VFVXZkZxYzQ2S0QxV1hhN1dtRUNkTmtkVFcxVkJzbnREa0FIdStxdnJjcFByaHF6UkRvRUFHR1F6aGlBU3phamdqSG1kUFdTTWg5OE9XVW53a1EydVBES1JUL0lTOEFoZ2ZSSjExb0dsNGxGeTlWUGVpY2NlUGpDYmdmQVBmdWRJdWd3ak9Mbm1acG5QbFI2eW1uSkJwTkdXUG5vZUhjVDk1SGxIZVorQUdDY3B4b3U2dVlnd1N3SjBhSS9qeFRKUXNmQlJhVGx2blJ2SWQwU2M3Rk9BdzZTQXlybWl2eHFWamdtVXZOaXhSYUVmcVdqS2NPa0duaVFDVDhWS2NLQVZCQjBHTmFPcGR1d3dabXNJc25LVXRlRXJOQ3h4L3QxVE1mYkZwQnVxL0tOZ3FhNHByWUlmbUNUY3QvR1pzSHYvWUY4NzBPdHpIUENGcERPcUJiYUwyUE1FYlhma3NNOS9qK1hIcS90YjU1ZTE3ZlA5cjdNbkFDUUhrM2ZhMmNCaDloWDRtdFpCU29GeFZMSjhSbDlpb3BFQXcvZmlycFpwRmcza0NxQ0R0dmZmNm4zM3VHbHk1UVoyRTFXNkx5UlAzOFZkV01uQWg0cFBvU3YxOXVjZ2h5RGJRaFBCcjUzVnVaRmtpN1dQaDhPNXI2STFPRFRLTG9GWVJpSGU3eGZFUldDSjIwb2dFWE1EamdVZFdNSFlPOGpQbjFhQ2tJZlJCd2h2eWUxMUQyZHdFTXFPMDhlYVM0c0M4UklnZzRxN3hHMlhVc01OaFFIRzU2d2tsT1BWUUJjSnVZdWNqOGVRT3BXZFpDTTdrVTlydHFrYm9FUFhJR2xod0FBSUFCSlJFRlUvWC9BQ2UyTFJOWFZ6UVNRbC8vTitiUXlrUkJyc0tHeG5TMGx3WVkyb1dERGZzcWRXRHRobDlMbnM5ZWVwRUlENElCTTZsOHJQSlo3RWd3SlJtdXdRWjc5QkJzVWFxdnlVdXN6bG1jbDRJZGQxSlA0QkxpcW5PSUVHNEQ1YktwRnhZZHhYL3E2QkJzQUxHcFN3TUd1eG84NWhaTGNnR2R2a1oxTEpudFRLUXA5a3RPRFRUNXJLaDMyajVMT0FvQURVckJNWTk3Y3ZWRGZkYzNCQmdYTndBNUt6MU9LTlJ3QVRmYTFuWTJpYmloQUNxQ1B5bHBVQkJvQWFESTY0Q0RiWG1OZGpmOVNTZkhNN3drRkdsWTdSV0xKWWVpVVhFK0hDWHlVUndsZGs4RGlKRy91UzRWbjRwRTh4NzBoMkFCSHRIMS9uaXBvQTVBc21TVFR0a09RZ0FPQU8yeEJlWTFIaEg0dUFHMUdCUnhrRWlIR3dybTNNaW0rZUhISWlJL2hQVnAyaWl6TnB1V1NCN3pHTkNxakVIUUEzSkZuemhPRmg3UXM2dWFyanhjbTJBQlhLT2dONUVkMkNHcmlvajFlbnJjQUZxTnVvU1g5WEFBYURRNDRSRHdSZVVoVmZyZTBwUlBTY20zYVFWSUtEM3RKOWNWM0JuREExZ3BRZWw5NFd0U04wd0dUMG43Q0xZTXdBTUJFN0d3Q3NFN2JmVUhqam1vQTJCMXdzRnZHWWcwMmFDa0tuWkJEWllHRzN4cXZ6VVRTTE4xbzNTNEt4RWpwcFBleHE2Q0QwbjdDTlFzT29oZjl6a0VBMlZPMXc0SGR6RUJhMkJFS1FLdXRBWWVpYmw0WlkzNUVlUFpVMUdwSXlGdE53UnM3UVNhZDVUMEZ6ZW5WU2JOMHE3QjVRLzBnNkFDNG96am9jRHJuQlpST1hsd3BUTTJCOFVoRkFpQnFiVldxdTQreG14bVlSbUVoK1JNRmJRQ0FYZzgyL1lNRUd5NWlPMndFR3B4cU5OVm9LT3JtSUxhQzVYWjFyWFRvYnhRMFp3b2JjT1E3QlRoaW4xRUtKK2pmRlhXektuUTlpdEpndzBsYmxlcnk2d0lBb0lqZHpXeGtCenNaQVlCaFppM1NjWTMrTGdETmVuYzRTT1EydG1BRGVab2QwbFlRV2lhMW9nbzJyTFJWK1R2bWE1T3QxNEJiU25jL3ZaT0ZCb01wdlRjOFlmQ1ZGSGFwQUlCZjMyVEhRK3U2dGhPUUlPcTZBTUJBbTFJcWZZbnNBRjZScDlrTmpRV2hVNW53bHVQNlZrRlRSaVBvQUxnbHp5eHQrZWt2aGdZZGxONFQ5bTJSYmdYdGdEc003QUVzeWRWeitpeVNzM2pjQ1Q2cy9wQWZIdERwaXZNQ1FMTjdBWWNJSnhadDZvUlJxekxSUzF0QjZPOHBUbkszVlhsdUo4VVVOR1cwb203ZVJOWmtRRFdwTWZCQldSc3ZkdVduMVZxczMrNG1VOUFVQUVBNm5OUmZtSkt5VUpIblBVR0kzd3B6MlFPNVlVY1NBTlh1QkJ5S3VvbHRaZUF6VWlmTWRxVzBJSFNwb0RsZVJKeGk2YjJDTmdCSmFhdnlqY0tDYjEra1pzNDlkcEpoMmFiZFJ6ckZOQlYxODBMWkI5TzJJd2xJVGxFMzJnb3N1MnhQNC9DMWxyWW5mWVgxUU1SNVFwOFJVRTFqUVhvQTZQcGJORm9LMno2SzZPaTg1Q1k3eTYybU5GUXhGb1NlUzJueDJLM3NMZ2ZacFlGNXg1RVVWZmpMQnM1bGt1V0hvcU5pY3pvLzZhWW9rbUREM3JMTnVvdGdROUkrS3Z0d01hOVE3cFh4czhpT0lVZ1RvNHlNUlZXbFVYTTUxclMxOFRMNHpyMHU2dWIxMnQvOXN2VjRTSGtZWHNiM2VBcWhBNEFDM1IwT054R2RrQThNRkthVEhRMmFnZzNSRm9TZUs4TEpNblk1QUI3SVFGeGJ1clVmTWdHMDJnRkpzQUZCS0UzYnhTS1hkR2dMWm1WUG5qVXhqVVduZWhsbnMyZDVKUDJKOWQwUXBHcUZMMTdtRlVnakJnRGpQSWp4ZUVrS0NveTNyeW5ITmF1OC8zcWliR1V6Z0FYSS9WbmJ6cWVib201K0tkc0IrYXV0eXNjSzJnSEhiUDJtbEZNcUFyaFA0KzQ1NFR3RmtsMHdWOVNOTGZSNjdQcTFJL1MrcUp2MWhVeWZqVEd2cU1rRUFFRDgvZ1FjRk9iTDNJZ1ZqWk9jYUtwMXdZVENYWFpsYzFHbmxOWVZ3QndLMDYxcENqYll1a092RkxRRGpoUjFZMU1WdlZOK1BNOFV0QUZJaG93OVZhVlA2dUdsam94OWhoVjE4emlDejcrRTU3TFFvZnZXdDhhWUExSXlRUUYyT0FEQUNLc2REckYwZUNqWU44N250aXJWRkYyTVpGSmhLV2NjR3dBck1kWjRDZUF0TldUaTBVazljQ1Ivb3AxY2E2c3l1Zm9OZ0EveXZiZnBrUTRTK041N20rQnVxL0pJVWdxUnFuUzNQVW5KMVAxQkZoOEFBS0JjYkNtVjZGZ01RMEhvK0xCaUFzQWRFblRRbW1vaXRHZmswSGVIWU5ZbzdHNUFFdmplajNMbyt3MGtnSDdPZVpua3VLaWJibG9xVmJ2NUFRREEzYUxSNnJHVmNqY0tRa2NybGhWZ254VzBBY2lHM005L1pYN0c5d2syWUNuc2JnQ3lZK3NFZlEvMW9TVmRjSTdGcEYyNjZCU2paaWNrQUFBS1BLRGFmaklvQ0IycG9tNWlXcEZESng0SXpCWklsdnRFZGtVbXFkdUVKWEg5QWZteHo5elFIOW9XazdaREFuYUZPL0c2cUp2WDhrS3F4c2NBQU9Ua2Z6R2xjb21wdUhWQUo3S3JRVVZueWhhRUp0Z3duQlNOaTJZU2tWWEd3RElrVi9IYm5BNC9rNzFZRXRjZmtKK2x2L2QyWjRXTTZ3b3Bsb3g1Ym1UWGc1cmQvd0FBNU1JR0hHS2FRSHhLaCtHdlJqcWtLbGJIRjNYelNnSU5wWUxtUkVHdTVSOFJOVG4zdEM3QW9pVGY4N01jemdLVHZWZ1MxeCtRSDIzZmU1dFNzUk44SUtYcFBEY3NpQU1BZExHWTFyOEg5aUFYZFJOVG0yL3NYSzJDZGl4R1U0ZFlWdWpITkdtdVFvekhiWWt0NWdEdWttZjJ2andMazhSa0w1YkU5UWRrNTVmMlBtNWJsUys2LzUxcm1zVzVKT2p3VWxKWUFjQTl5dVpIVTF4c2ZhQ2dEUWdrcXFMUks3bXVVT2lzY2xGQnpnUEJocEdLdW5rVDRYRmpXemVnaEUyaGwraWs2QzhtZTdHZ1E2NC9JQzh5dG9wdVFZMU5zN2dhRjNiR2h5Y0ttaGFEajZScHhrUmNOd2d0eGV3aGV3cmFnRUJXQVllWHNSM3d6SUlPcWdiQlJkMzhabHZxTkVYZC9EVEd2SSt0M1haYnQ0Sm1BT2hJYkhMMG1sMVVXTWloVE5oOTV3UUEyZGhQTGNCbzArejJCQ0hzanNockJjM1Q1cW5zRWdFQUFKNDhNUDkxVUQ1RmxsYnBENW4wZnRKVzVVOEZ6ZkhoUTF1VmI3UTB4aGFFcGtiRGRCRUhhVmd4QlNobEp4UVNDQUNmdFZWNXFxQWR5TWN0Z1hRZ08rcFRKN2xtZDBRYVk0N1dYOWJXM2pQR1hFVC9BZWM1THVybUUrbVZNRlNFcWNnQllGRVBWbThlOGFURmo2SnVQcS9udG95Y0xRaXRKcmNabmRKNWlycXhoVjVmUjlyOFgxb0trd1BvRjNuUTRSa0Z1eEJJZHBPTnVNZk9GSjNUcjhuS2xVMC9sUHRCV0NmZmdUdmZnNkp1YkJEV1RyNC9WZEhJTUQ3bVhoc3lNZGR5anllSUJBQUtQRmhyd3FFeDVsdUVKK2E1bld4SllXdXNzdFJKRDFNdVRCcEM3Q3VQbVp6eEkrVTg0YVJiVzRZRUhleHV2MGNSTlR2bEhZcFlIanRuZHFCbUJSSkVRZUNKY3QwTlllczV0RlY1NzNPbmdIdDgyb3E2T1dMUkRnRE43Z1FjYlA3YW9tN09qREh2WWp4ck10RjFFdW5LcFgzcDZLbkFwT0U4S2FTZm9wTUt4TVVHQ0cxNkFCdUUxOTV3N2k5dzVMT3NabVRBRGVUalRMNzNhc1pOS2N0Z04wUk9PenFRbGpjVXNrNWZTb0VsKzFrVU5BTUJyZTl3c0oySzA2SnU3S3JtNDBoUHhFVlJOeGNSVFdZY2FpcFVhQXRDVXpsK3VxSnVEaUxkSlhRSGs0RkFuR3g2d2FKdVRqVXZIT0QrQXJFcVpHcjdIYllmWkhlNy9DUjRBR0NIZCt4ZVdsWnF1eUZZS1k1SXFWOWdGTEZiUlhOaXAzMzMyMGhwZW5iL1V0Q0c1TjBMT0pqL09oR3ZKRFZEbERzZHpMOFYrcHJ6ZHFwcVd5eXJZalZMWlZjSWs0RkEzR1RoZ0IwNGY5SDJRYmkvNk1CNUFQSXo1WHV2dFc4cjdTSjlrakliZGtQRWtPN1IxdHRUVXo4UnFsMnpLeVlMNTRybVFsTzYzalI5RnVwNUJmQy9UVzhoSzBkT0l2OTh4N1pES3RzK3RiaTFIWDR0d1FhN0VrVTY3UVFiSnJJZDZVU0NEUTJUVUVBYVpLWGV2cVlQdy8wRkFPSWk5KzFicFkzK0tKUFpVTXltZTVTeHIrWnJLZW8wdUFoSzFlNHEyVlVFOTlqeGxEN09jUUFiQXc3bTN5cUZKd2w4emhzdEU4SnRWYW9JZnRnZ2pCeVRaSXVBK1diVGxzZ3hqS2xJNnlhMjlna3JlNENFS010dmZUM2dad0FBeXNqWTVhM1M4L0tJdW5QeHNOY1NpdzhRTTRXcHQ1akw4VURiZVU0aHVLN3RNNUJHTDR5dEFRZnozNG40bVVySFFIWTdxS21Yc0JUcG1OOGs4bkhlaHI0K2JaMEdPWWJScGh6cmtsVkhiQ2tEQUFEQVBXMVZubXZiTmRlbGNFYzd0aURvQUxoVDFNMExEbWZ5VWxqZ21zSm53RWc3QXc0ckNYVU1TdW1VWnJmOXpCYUVUbWdWVUNNVDVlZWgzckN6S3lUNm90RGlsZzQvQUFBQWRyRzc1cFQzRysyTzlqY0syb0Zobm5HY0VDbHR1M1kvS21oRGlocE5ueW5tZVR5RmJWZDFibE0yT09CZy9nVWRQaVJ5UEM0azhKQjhHcG1pYmk3bFM2NmwwdjRzRW1nSWV0NFMyeFZpcE5BZUs4RUFBQUF3bUl3SHRRN1czMVBYSVE2a3MwREUxTzBvSUxXY0Yrb0MyRVhkZkZMUWpGSHNYS1RDWnJFNElaQlJBUWZ6WCtmZ2plWXR0Uk44UzNVYmJsRTNSL0x3T1ZiUW5OazZCY2VDa1dzanFRZTRITWZvSGxZQUFBQlluaXo4MGJwQ25ib09BTHhSVmlQdEwrNTdiaWtOaWo2UEtlZ2d3UVoxYzVFRXZNTVpIWEF3Y1d5cG5VSk5ZZW01T3FsL3ZzVDlTZjQ2WENEUThEUEJoL1lKS1pRQUFBQXdseDJ3YSs1WFV0ZEJ0Nkp1SHVkK0RCQzFNNDJONTc3bjNDK0ZiWG9ld3p5VjRvWFBHczlwc2lZRkhGYWtrL2t5cFlNVCs0cjJ4RkwvWE1scS9HQ0Z2b3U2K1NySE1LbWlOaFNHQmdBQWdHc1IxSFU0VmRBTzNQZURZNEpZdFZXcCtiNlN6RUxhcGJWVnFUWXdLdk9XNnVaM091bmNWZEo4VGxQMFlPNW5rdFFzUldvM3RkWG5pV1ZGdUMwSW5VcU5CaWxtSERReUw0T1JkeUhmTTVBbmJWV1N5eFlBQUFCZTJQR1NwSGw0cnZBSXY3UEZwS2xkcG9Pc3ZrNnBMaDd5ZGFVNWRYVm5mdTV6VzVYcTZrN0FpZU9pYmxiWDRHTHpQdHpYc2Nuc2dNT0tkRFJmMldMTUtSMXQ3WUVIclhuUnBsb2dkWkxOUWZzdDVIc0djdDFXNVZHQ253c0FBQURLMkFrdFNaT2pjZVg2bmgzVGtWcDBHUW1QdDVDeHRpcGZkU1o3TlZ0UHdYTnJpK2FTL1dDdy9VZ20wMzhVZGRQOTd3OVNmOWU1b203T2pUR3ZGL21VODZSVWl6Z0t6Z0lPNXIrYnJyMXBxZDVDTTFYbk0rMXJLQlNVWU1jdDZIRk5PUXJMWUFvQUFPeEN5b1Y3VlBUeFl5YXJLOVh1ZkpkMmhSNXpKTFU0TEZFcTgvSFB4VDMrTGs5ajVNTUk1MlJzVm95TG9tNlNXaWpzSzB1R2ZWNFVkZk1yd3BUYnI0dTZpVEVvNE1zdituamh6YXJoc0luY3pBL2pPeHlEM0VpK3RJTWwzcnhURURxVllNTkxxUzhRc3VPZlVwMkxyaWNFR3dBQUFDYnhzaEl3UjlJZnZWWDYwWVBWZFZCY05CTWR5dlB4dzVHaWJwenYvcGRhazllY0l4WHNUcmF2UGhwQzN2LzRjUTZYNFNYZ1lPVG1LNTNOWnNDUHgraWJCQjZDcGExSnRDRDBwMUJ2YU90Y0pMclNZM1VzcWRVQUFBQ0F4Y2xLVTYwcng5OUovVHZnS3ZzamdGbElZNXlOSjdrZmdJaHg3aGJpTGVDdzBsYmxRZUtycnI5STRPSGMxeHNVZGZNem9ZbnlXNWtjZnhYcURXMmhPRGwrcVJUVi9pdjBzUVFBQUFDR2tKWGpXbk1tNzVGeUJveWo0QUpaQnRJbml6dmY1bjRjSW5UR3d0emxlQTg0ck1oTitFVG5ZWERpdFFRZXZydDZRWnZ6VXpyQ3NlV0w2eVdUNDg3ejZtMGp4Kzk5eVBjTVpKK09EUUFBQURTemFWTTE5MWxsL0VhcWhRd3hsb0pMWEUvcGE2dnluRjFSVWJraVpkNnlnZ1VjakJTVlRqek5rbFZLeDNYeU5sMWJIeUt4bkovQko4ZHQ0Q2Z4OUVsc0F3Y0FBRUFVWkN6d1MybGJmL2pjclE1OW1CeUdEOHJyMThBQjJSV1Y4a0xxVkx4bEI5dnlnZ1ljVmpKSXMyUlcyM1RIVG5vblZoRDZaSW5KY1RtR1pjajNESUgwU1FBQUFJaVZGRzE4cWJUNXI2bnJrQWVDRGZCSk1qcG92Yy9CQWJ1UVduRzZRUHkzNEpsRkJBbzhXTElKOW1GZjFNM0RoQW9oOStvRUhRNXRNZTBkUDVPQ3hnYVZGampPZGhEekk2SGp1TExQamdZQUFBREVycTNLVDdiYnJuVHM4MmZCR0JQU3lYb3AxeC9nbGZMN0hCeVErWmxDQXRYSjFRcU4xRzNvRk83WWJ0R0FnN243UlgyVGFLNzlybTlGL1NlYjFJZTJLdTNuTlZMeklablYrRXQxMEJNTk52eTlUZ0FBQUlCVXlNSXpsWk54MHE0bkZKcE14aUtMNFlEVjNBaUJoM1N0SnJnNXg4dGlvWUJPaTZSVTZtTzN2R1JRMzJIbGRTZmRVaExCQmtuM3MrU1hQS1ZndzYwY1Q0SU5BQUFBU0pLTUhUNHIvV3kycmdPcjRlTzJxbjFIc0FHTFVqQlhBcy9rL0pKbUtiemc5V0l4M09JN0hOYXRPZ1JFQ0tPeE1VMFV4dU5tQ1FBQWdGeTBWZm1pcUpzRHBUWHNucE5pS1Q2Y0wyalYyZkZnODh1LzVrU2xaWlc5eGZ4M2p1ME91VWU1SHhOUGZrbE5LQ2luTHVDd3d2WXo5VWozNDlhSkZCOENBQUFBc2lHTGwxU25XR0lTV3pVbW54QVZtVWRacGRnK05jYTg0d3c2b1dZaGJQZWVSUERCQ2VvelJFaHR3R0VsbDhMU0VTRUhwbHZjT0FFQUFKQTlHZmVwTE1BcHdaQlJPN3ZsOHlSVnIwK0o2N1lxajNJL0NFaERXNVUyNEhDNitqQkYzZGhGaU1lYzN2RzBMb2hkQ3o0OGxzQUloYVozbzVaUzVOUUhITXpkd3RKYXQ5dG1nWlU5Ym5FOEFTQXJ0d3d1QUdBN3V4Q25xSnNYeHBpUENnL1Z0Nkp1em1TQ2NKQnRDN1dLdXJHVDVxK1lYTnlLWGVESVNsdVZyK1MrOEZkUk4zWWkvVDFYd2oyL2pERkhNVTFLUzF2dkxEaVZJTVNuaklQVHRvN3ZLMUsxcHllS2dNTktaN3V0N1p4OTBkR3FMT3hMMEFkdVBHdXI4aXZITXJoOUpUdWxUaFMwd1NjdHgvbWxnalpvMEdqb3ZMSVM4UTg3NmZSRFFUdXdyRU1XejZoME8yWVNlWVF6SmFreUdnVnRHS3l0eWs4eTVudXM4TDU1N3VxRlpEendkWDF5Y1J0WmdIY2t6NVNqeU5OMDJJTGhsM0srVTJINytSY0pmWjVVTkRHUHY5dXFQTjkyNzVHQWhBM1VQZzNiTW04YW1ZRC9tc084aVFRaFVnNU8yM3Y5T1hOZytTbmFOdDRTQ1VYZHZPS0I3bFUwQmFFanFmVkJPaW9BQUFBQUFBQUF5WW82NExCQ29SM25ybVFyWHpTMEJ4eElud1FBQUFBQUFBQWdkVWtFSEZZb3NETmJ0QVdNRlFjY1NFY0ZBQUFBQUFBQUlBdEpCUnhXQ0R5TUYvc0tmSVVCaCtoMmlRQUFBQUFBQUFEQUhFa0dIRllJUEF5U3hBcDhSUUdIYUhlSkFBQUFBQUFBQU1BY1NRY2NWZ2c4OURwcHEvSlNZYnNtMFJCd29FNERBQUFBQUFBQWdKeGxFWEJZS2VyR3ByaTUwTkdheFRSdFZSNms5cUVXRGpnY3RsWDVmY0gzQndBQUFBQUFBSURGWlJWd1dNazA4SkIwcXArRkFnNmYyNnA4c2NEN0FnQUFBQUFBQUlBNldRWWNWb3E2c1N2OXYrbG9qVDg1cFBvSkhYQWdmUklBQUFBQUFBQUEzSlYxd0dFbDRjQkROcWwrUWdVY0NEUUFBQUFBQUFBQVFEOENEaDFGM2RpVVF6ZHFHalRkMjdZcXoyTnQvQlFCQWc3VWFRQUFBQUFBQUFDQUxRZzRiTEJ3RWVLcGtpd0lQWVRIODNYVlZ1VXJUNjhOQUFBQUFBQUFBTWw0d0tuc3QwcWRVOVROYjJQTW5zSW0za0dxSCtleURkNEFBQUFBQUFBQXdCVHNjQmlvcUJ1YlRxZlUxaTRDRGY5eHVjT0JZd29BQUFBQUFBQUE0eEZ3R0ttb20wdGp6TEdDcGxCVG9NTkZ3SUZBQXdBQUFBQUFBQUJNUjhCaG9xSnVqb3d4WHhaNGEyb0s5SmdaY05odnEvSzN0OFlCQUFBQUFBQUFRQVlJT014VTFNMURZOHhOZ0xlNmJhdnlZWUQzaWRMRWdBTzdSQUFBQUFBQUFBREFFUUlPRHJtc0k5QkZxcC9kUmg3N2s3WXFMNWRxS3dBQUFBQUFBQUNrNkFGbjFaMVZZTUJoZ1dsUy9iaEZvQUVBQUFBQUFBQUFQR0dIZzBkRjNkaGFDeGNUM29HSjhaRjI3SERnZUFJQUFBQUFBQUNBWndRY0FoaFI1K0Z6VzVVdm92L0FDOWdRY0NEUUFBQUFBQUFBQUFDQkVIQUlyS2dibXlKcGIrMWRLUWc5MDFyQWdWUlVBQUFBQUFBQUFCQVlBWWVGRkhYenhoanpub0xRYnRoQURrRWJBQUFBQUFBQUFGZ09BWWVBYkpDaHJjcnpiRDZ3SjBYZEhCaGpmcktMQVFBQUFBQUFBQUIwK0IvbklZeWlicjdiM1F3NWZGYWZwQmJHTjFzUG82aWJvM1EvS1FBQUFBQUFBQURFZzJCREFGS3ZvVXorZzRiUkxicjlwYWdiZG9vQUFBQUFBQUFBd01JSU5uZ21CWXpYQzBOamdyVmkwQ3V2WmRjSUFBQUFBQUFBQUdBaDFHendSTkw5M0t5L09rV2hwOWtRYU9pNnBVZzBBQUFBQUFBQUFDeURuUTBlYkFvMFlCcEpRN1hMM29DQUJBQUFBQUFBQUFEQUE0SU5qaEZvY0V0U0pBMU9RMlVERG5JT0FBQUFBQUFBQUFDQkVHeHdxS2lieHdRYTNDbnE1bkppWWUwYk9SY0FBQUFBQUFBQWdBQUlOamhTMU0yQk1lWkhFaDlHZ2FKdVhobGpqbWUwNUVkUk55K1NPU0FBQUFBQUFBQUFvQmpCQmdka0ZmMjM2RCtJRWhLNHVYRFFtbzlGM1p3bWNWQUFBQUFBQUFBQVFER0NEVE5KZlFCMk5EZ2l4OU5sNE9hZHBHTUNBQUFBQUFBQUFIaENzR0VHaWtGNzRlTjRIa3VoYVFBQUFBQUFBQUNBQndRYkppTFE0RjVSTjYzSGx5K0x1dm05MUdjREFBQUFBQUFBZ0pRUmJKaU9RSU5EbmdNTkszdUIzZ2NBQUFBQUFBQUFza0t3WVFJbXJOMEt2ZU9BOHdjQUFBQUFBQUFBYmhGc0dJbUphcmVrbHNMZUF1L2JTaW9zQUFBQUFBQUFBTUJNRHppQXd4Rm9jS3VvbTB0YlMySEJKdHdVZGZPa3JjcWZDN1lCQUFBQUFBQUFBSFlxNnViSUdMUDY4M1RFRWZ0bGpMR0x2cjhhWXo3NW1nOHQycGI1OHlGY0JScmFxaXk4TnpZQ1JkMjhNc1pjS0ducFlWdVYzeFcwQXdBQUFBQUFBQURzL09salk4eTVNZWE1eDZOaGd4Q25iVlZldW5neGdnMERTRTBCSjZsK0NEYjhPWjRIeHBodkNwclNkZUxxU3dVQUFBQUFBQUFBWTBuYWQ3c28rdEZDQjIvV0hDbkJoaDJrcG9DelZEKzVCeHZrQzNPam9DbDkzclpWZWE2dldRQUFBQUFBQUFCU0plbVJ2aWo2ZUZkdFZiNGErMHNFRzdad0hXZ3dCQnRpcUhzeDZZc0VBQUFBQUFBQUFHTW9YNWh0bmJWVmVUcjBod2syYkNERmk0OWR2MjdPd1lhSUNteGZ0MVY1cEtBZEFBQUFBQUFBQUJKVTFJM05zUEo2NGlkckpOM1NUeW42YkgxdnE5S1dBMWp0bExCc01PTmdRa0hwTzRiT2FSTnM2T0d6ZUhHdXdZYUlBZzByVFZ1VkJ6cWFBZ0FBQUFBQUFDQVZJMnNFM3hwajNyaXNOeXMxZFU5SEZwOCtiS3Z5KzliWEpkaHdsKy9peFRrR0cxd1cyQTdzdHEzS2h4RzJHd0FBQUFBQUFJQkNJeFpsdjJ5cjhwUHZUeUNwbkQ0TjNQbXdOZUJBc0tHanFKdkh4cGdmUHQ4anQyQ0RqN29YZ1JGd0FBQUFBQUFBQUREYndFRERrN1lxZnk1eHRJdTYrVG9nNkxBeDRQQS9QODJLajBSd3ZBWWFjaU4xTDJJT05GaDdzak1EQUFBQUFBQUFBQ1lwNm1aWEFPR3RYYWkrVktEQi9MZFEzdFoyMk4veFl4dXpBaEZzK0VkejFlL29TTjBMNXdXMkY3SVhZYzBKQUFBQUFBQUFBQW9VZGZQR0dQTm9TMHYyMjZvODE5QldXMlJhc3ZNMG0zNW0wMXdwd1lZNGl4ZXJKblV2dkJUWVhoTFhDUUFBQUFBQUFJQUozbS82RmRuTm9DNnpTbHVWZG83M2F0Ty9TMWFiTzdJUE5wQWl4eTFKUitXdHdQYlNDRGdBQUFBQUFBQUFHR3JiL0xQMityNXRWZHJzTmRjYi92bGVWcHVzZ3cxU3ZIaFBRVk5Ta253NktnSU9BQUFBQUFBQUFIYVJoZG1iNXA5MzFVWlFRZW80M1BhMVpiME9SYmJCaHFKdVBpVlF2RmlWbkNiaENUZ0FBQUFBQUFBQTJHRlRzZWN6amFtVE5tbXI4dUdHZjdwVGgrTEJZaTFja0JUa2VKN2paL2NseDhsMytjejdNZDBZQUFBQUFBQUFBQVRUdTZ1aHJjclRvUTJRK3JoMnN2OUkvbGhQUjM0QVcrejUwNWozN1hGbWpIblgwNzVMU2Jka2lyYk5hNDVZVHM1aU5RVzA1K0dhUXZLTzVaeU9pb0FEQUFBQUFBQUFnTCtLdWprM3hyenVPU0xQMnFyOE92UkllVnJrUGFvTnU5cXltdlBPS28xUzZzV0xsMERkaXo5dTVOb0NBQUFBQUFBQUFMTWgwR0NtVFBKNzhFWG1kY2Q2Mi9melJkMDhOaG5XYkVpK2VIRklkb3NNZFMvK0l1QUFBQUFBQUFBQVlKdmV5ZnFGbEZMWGVMQzJLczgzL095ZnY4OG0yRUJCWDdlS3VyRjV1STVUK2t3T0VIQUFBQUFBQUFBQU1pZHpwL2RzbWF4ZnlwUzZ4cjk2L3U3UDYyUVJiQ0RRNEpiVXZiaEk2VE01Uk1BQkFBQUFBQUFBeU51YldENzloSFJLR3o5YjhzR0dvbTUrS21oR01xaDdNUWdCQndBQUFBQUFBQ0JmZmFublB5ZzlHcVBTNUxkVjJadDZ5ZFp0ZU9Dc1NRcEpUWUZIS1gvR0JWRDNZaGdiY05odnEvSjNESTBGQUFBQUFBQUE0TldwcHhkL3R1SHZqNHd4N3dLZTBsZkpCaHVvS2VBZTZhaEdJK0FBQUFBQUFBQUF3UGlhSTJ5cjh1dUdmN0ovZnlwRm9LZlVadGltNmRrUmNaUmtHaVZxQ3JoSG9HRXlVaW9CQUFBQUFBQUFtU2pxNWtqVEoyMnI4c1d1bjVuUTVyNVVTaytUQ3paUVU4QzlvbTVZbVQ4UEFRY0FBQUFBQUFBZ0Q2cUNEWjcwN3FaSWNXY0ROUVVja21ya2U4bDhvT1VRY0FBQUFBQUFBQURTMXpjSDJLVDBxVGVsYmtvcTJFQ3FIN2Vrd1Bhb2F1VFlpb0FEQUFBQUFBQUFrTGFEbmsvM000ZHpua3l3Z1ZRL2JsRmcyeHQyM2dBQUFBQUFBQURwNmx0cy9IMnBUenR3OGJPVHVmVWtnZzJrK25HTEF0dCtzUU1IQUFBQUFBQUFTSmFhVERHeW9Iem40dWUyS3AwRVF4NjRlSkVsRlhWelNxb2ZkeWl3SFlZTk9MUlZXZVR3V1FFQUFBQUFBSURNOWRZNGNFSFR3dWFvZHpiSUN2eDNDcHFTRXRMOEJNSU9Cd0FBQUFBQUFBQ3BpRGJZd0FwODk1ajhEbzlqRGdBQUFBQUFBR0JCaDY3ZU91YWREYXpBZDRoSjcrVnc3QUVBQUFBQUFJQ2tIU2o5Y0xldTZqV1lXR3MyTURuclZsRTNUcXFOWXpwN0R0cXFIRklaSGdDQWpXVG41Nm9UKzFqK1dBL1hPcmRQRlJ6RmEyUE1UL256dGExS2J6bE1nWlJKYXRsVlAvS284MUc3ZjI4VWZPOXZqVEhmTy9tSytkNHZxS2liSTdsZVZzOEgzOWZIdGZ3djV4OElSTDducS83ZzZ2c2VxdWJwdmUrOE1lYTN5d2xOSUVJYTUvMSt0Vlg1ZU1EUERWYTBiVnp6OWpJeHZxZWdLWk5vS3dwYzFNMTNDbXlyY1V2QXdaK2lidXpOODhmQ3pYalpWdVduaGR2Z1Zjekh1YWdiTytINXlFK1RKanRycS9KVVdadUNLdXJtcTVLSjhTNHY1MFcrUDQ4N0U0U3JTVU50bnora3o4YVk4MVFtcEdUUS8wVkJVL0RQZFZ1VlIwc2REN2ttVE9mN252djMzZ1lrTG8weG41aUlucStvbTFmR21GY1JYay9YTWpFWlZVQ2lxSnNYeHBpUENwcUNmejYzVmZraTVlTWh6NUVYOGwyUGRhN3NWcjd6bitUK3Y5aUNXQ1Zqd3YwbGo0RXZzaWhxNlN3MXppZldOOWt3anAwOGp2U3c4UDZYN1hlMlZmbHp6b3YwdFN1cVlFTlJOL2JHODF4QlV5YlRGR3dvNnNaMjVJOFZOQVgvTkcxVmF0MVdGVFZGTzZLUzdEaXN4SHFjbFFleXN3eEV5a3BkdGJXWnhqN1BwWFA5S2ZQQWdTdFh4cGczTWQ1TDJaMnJscGY3ckV3QW5iT3d4NG5zZysrN3lFVDNtd3llTS9ZWmNLa3RDS0ZrRWczOUZnMHF1eVFMVTA0em04ZTVsdS84cGU4MzByVElTZHRDWlJjVTlZT0R6THR0dUo0bTM0OEdITCt6VHRCdTU5eUdxMnVzcjEzUnBGR1NWUmxSQnhvMGtlTkpvRUdmMGdhQjJxcDhsZnVCY0VrbUxiVTRsWUZnY2pxck16VjRJOGQ2S00zQmhqMjdDeTNEUUtUYVFNTkVURUM0WS9zdngwWGRHRmtKOXlxR1hXUFM5NEpPdnU3LzdHSng1MTFSTisvazFScjUzbWVkaWtNbXQ4OHpITk4xbndFcndTWWp0MGl5ZjUrSXFBTndSZDNZYSt1OWdxWXN4WjYvcDBYZFhIVGUvN004QjF3dlBHRlJVQjVDTFFMcEN6WjR1OFk2aXpJZURnbnNGSFZ6T25jaGgvUkY3b21pUUxSTUZGNE0rRkZ3UEZOd0xMdE80STZtVmVIc1hBbGpiT0JEKy9icVVsWXlaWUY3SUVhd2s4UWZiWWZhYm50WC9qM0o1anRNbkxvNEFBQWdBRWxFUVZRTWRRSDQxTmhKZ20veXZjOHUxWko5UnNva3dnMkx4LzZ5a3pjWGNrMnMvcHdIYmdQZmVUaGpGeWlzcnVYTUF3MmIySVhJTjNLTVNFVU5yWmJzbzV3TitKbDNBMzVtbDk1NUZQWEJCcmx4cExhNmNURWN6Mmdjc3dJU0NDZVMxWkZMMThJSVNmdmt5VXNGYmNCOU5yL3VEeGw0OGd3Rjh2QzBNN21jYkVEUExoYnJURHdTWUJqbXRSd3owbThoR25ZM3MzelBXUnc2SEx1SG9kS1M2ZjZHN2xpUWROSno5QVViYm1QWTJaRFNqV05mUVJ1NEVjZmpRbG42SHlCMVQ3Ui92aHhXN3NRd0taQjZvZmRFWEJCMEFMTHpJN1dnZzkwaEl4T1BMQmFiN2gxakttaG0rL2Qyd2srKzY5VDRtY0RCaENtUW9pRnowSHN6ZCtQMmxUdjRwRHJZa0ZnUnZjV0x3aVoyUEg4cGFFTUkzOWdXQ0lUUlZ1VlB5Zit1MmM4TUxnY1gyemw5VWgrVXdoMFhiTEVIc21PRERsRS9MMlh5c2FYdWh6T2hVeW9CZzhpOTZrWng3YmhZY1B3UWpWQ0xvV1FPK3ZPQUgzWGQxN2hVRzJ5dzI4Y1VOTU9WSndRYW5MS1Y0KzJLcGF1RVB0TTI3RVlCQW1tclV2dUU1RjdLazZZUjdHcTRsYUFVNG5ORExSQWdLNDhrMEtpOUp0TTlVb2VDL3I5YkZIMkZLcmJQSzNNMGp6Z3pRSGFDalhuYnFoelVEeXJxWnZUTy9VM3pFalo5bE1wZ2d3d0dVOWsrZHJqMHhFUmlXOHJzUk0rZmJiQnRWZHBvNE1ueVRmSXZzV0FSb04yMTh2YWxGSXhmcDNwWFF3VEJLR3gzelBNVXlNN0hXQmF4ZFhZek1ERU9KRXptWjdUdjVBWGd4b2VlVndrZFpEd2M4RFBQSnl4cTNMaHJVRjJ3UVZhZnBGTDA2bkRwb3FQU3VVNW1TOW42UkU5YmxaY0R2empSWTRJRUNLT3R5ams1QzBOSWNnVlVCTG4xdFFlaE1CQnBsWURzbE5yNzBUSUdaamNEa0xCVm9YZFMvZ0JaNmQzRkVMSytsTXhMRDBsRlA3WWYwamQzL3ljdHRhcGdnd3o4UGlwb2lnc2FBZzBwN1JDeFg1Qml3OTkvVjFKODJ6c0tId0hCbkdrKzFMSG5vdDdnUW1XclJBUkJLSXh6UThBQnlJdldnRU5STitjSmpZRUI5SkJGTlJSNkJ6S3pKYVYrMFBsaVNVVy9VMUUzYndiKzNLYlgrL1A3Mm5ZMnBMS2FRME9nNFZWQ08wUTJCaG82Ly81NzE4OGtZaSt4ZWlhQVNtMVZhcThka05UdWhnaDJOZlJ0ZjBYOENEZ0FtZEVXY0pERllhOFZOQVdBSi9JOVY3Mm9Cb0JYZmJzS2x0amg5SExBejd3ZitGcTk4NUtTZlVaUHNDR2hGREVhQWcwSGlUM01CdTlheUNUZ1VNb0tLQUIrRFhrWUwwWUtTS1pDKzY2R1FTczhFQ1hTbGdDWjBUTHVURzF4R0lEN0pOREE5eHpJVys4TytkRFpDdHFxL0RRa2c4T3VGRSt5V0tzdldISzcrbjhlVEcya1N3bWxodEVRYUhpWTJQYTh3eTNiam5yWmdJTmNVeW5uUW54dHE4WGJLdThLMmdJa3lUNk1pN3JSL05HU0tDQloxSTMyOUVRbkN0b0FqK3pFWXlhTEZRQUl1MU80cmNxRHBZNUhnb3ZEQUt3cDZ1YVVRQU9BdGlwL2JwaFhlR1RuY0lmT2Vib1lyMGdHaDdsWkhEWXQxdm83cmw5OFo0T2RNRTFrVXZoazZVQ0RTR21GM3N1cHgxUUtTZDhPK05HWWZTSDlBK0RkRTgySE9KSGREVjhVdEdHajFWWlFwSTBVaFVCMnlvVlQrSkc3SFVpWUJCVGZjWTRCaUUwTDJLS2F3NVVnYXEvdS9PMml3UWJwNEQxZnNnMk9uR2lZakVnb0ZaVjFKbHQ4SnBPQWcrcGx5UTZRL2dId3lLNUNVQjY0akhwM1F3UzdHbFFIbStCVUtSTURBUEt4eU02Q2hIYjFBOWlNZ0NLQXY3Yk5HY2V5NkVrV08yOEtvajdyL3NkaXdZYUV0bzRTYUhEdnM2dmlyTEk5K3JPeXorZFVZdWNlVUVjQ2wycEpMdGhZYWQ3VmNDdkJKdVNEaVFFZ002RW4vaVhJbm5LcVZ5QjdqTThCYlBCc3c5K1gyc2YwRW1qWXVOaDVQY1g3a2pzYlVoalFhUWswcExRNnBtbXIvN04zYjFkU0cydkRnS1c5ZkE5RUFFUWdpQUNJQUh6ZEYwQUU0QWlBQ0l3amdMblF0U0VDUXdTZ0NEeEVBQk9COWlwY1k0L3hIUHFnVnI5VmVwNjE1dmYrOXI4OVV5MTF0NlI2VDkyaktYOWgvbjFIVS83T2FHUkl3ZDU5REh5SWkrd0ZXMEJWdzZXRHNhaFQ0Y0U3WUhQWHJocUVPTEhRclFPQjNlUTI0UUQva1Rma0wrcWE4RGpxOThkVmdZYW1hVzc4K0Y4Y0pOaFFTYVQzVlpCQXc0ZUtzbU5POWpXb2JWeDFUeW9mOG5uTkJnbnN6N2pxUW0rTUYvcjVqN3poTXF3N3FJdnFHT1FJeS9QbkhLLzR3RE1pZ0QzTEczSTF0QWtIOXVTS3Jna1BveVVTdC8zdy9JcEF3eS9uUFRmUEhteW9KQVA3YUtvMlA3dG8rK0YxNmYyNno5cDNxNUljSEtvNTRQQzRnRXhoS05sdmdkZGUxQWJwekZta0c5dFg0SnN5Q043RDhzeDBEMTFEQzJIZ1l1WXBBdXY0VHlYQUdTbVJlSXlRb0pEMzczKzk1SCtTRXZSZW4vZi9NV3V3SVErOUtEMEwveWhueVI5VWZ1TTlPL1E2cGpLdXVuYW12NU0yRU83TzhxSU80NCtjVVFGTWJGeDF6eU1mMDdZZkRoNEUzOEFzV2FSYnFycnRIbXRSM1FETHM5ZHFPd1Bvb1c2Uy9vQjE1VXFBcS9ZbDMrU2d3NlJ0NXRmUjlzTng3a2gwMmY3OXBaMXBaZ3MyNU5LTGJxNi90eWNmZ3dRYWFobXUvZDFjZ1lZemYrOXo1UUVIR1JXd1A1R3JvMTRFV01PVkNxaHEwT1lDN1U2QXFYMXdSS0ZxNXJFQWE5dGdYL0wzSEhSNHQ4L242TFJubi85T0NqTGN2T0ovUGx6Vm1XYVdZRVBlSEwrczlLSUVRNFNlM1RscnZZYmgycWN1S3gvYW05b0REZ1pHdzM1RW1OVnptUnpZais1ejRQWFYzR3FQeldoM0FndVRaK0h0U3kwejlvQWZTRkFBdHBIM0pkZmRFMDN6WVA0OERRaWt0cS9iVmxTbFBmclVGZUcwZ2lFSEdOYmRzLzl0blpiRFAyMnpzRTFVc2prK0JPcmZYRlBXK3QxRER1Qk1IK3kySDI1VVdnbndmV0MwREYzWWk5dUIyd0NsbTRSeit5WkdrTzhKd202NFJBOG1BYkJYZTVtRmQ0Z1dDTUNzSkNnQVc4bDdvbTFPZU5qa1B1UnhudHM2NTRHL3NlNGU3aHlWRGFWdjVGN2FoMnBPT2RwVWk2YzVpbmRRK1lOeWtPcUtHVHpXSHhhbU42NjY0M1J0aUhwb2cyZFhIUWRZdzBWcWJxL0hGdHArQ0J1NEEvWmpUeTBLU3BxcEJHd2dlbnRRb0F5NWswN1V2Y2xYcWYzOUpzbmlldzAyMUxBNWZsVWZxcmxVMWhibktGTDJhT1VCaDVwYWJrRWtrUjhzUW1aWEJhOXFPSWtRQUNlY1owNEpMTTQrZ295bHp5MEVMdWIrRVpoRTJwdk1NMjNUL3VTWEFFZjFseHhrMkRocFltL0JocllmaXYvU25YdHc4VVZTSDYySytud09FVnY3MUJ4d3FLd2lCa0xJM3htejFpeHVZdHYralhzV3VhcEJWaG9BVGU2SlRIMCtPcWZzaVhrc3dLUnkwT0ZXM3BPZWU2YmdVUTR3cEordEV6RDJFbXhJZ3laS3orQUlGR2o0c01ZazhGS0VhVWwxbnNvRER2c2NlQWVMRlBuN3JHbWFQd0tzNFVkUkg4YStISEorRUxFRkRkd0JoZERTTkF3em1aaWNkb3ZBdnFXdU1HYzIvOU0rOVM4VEI5Q1BtcVo1Y09adlRKSWNQdm1BNkh4RDlXTHEzenVuUUlHRzEvc2FWSFlJVVZwU1hTWnRPRlU2TlBwZStteHFFd0tUTzhyRG1jSkptNlRqcWdzUmFNd1ZlaUdsckpHb2F5T0VsRUFqNEFBTGtnWTZqNnZ1M1VTdjJIRG93enVKMU1LWHFtaTNHTWZSMGc4QXk1Q3JEUzRNZEY2UUtIV2M1MDdPWnZKZ1F3VTk0a05rdHVjQm45VmN2S0lFY05aUmNjQWhmVGFMT1E5UWdoVDViL3NoWkxBaFZ6ZEUrY3hIcmRCYjZvUEpnejMrN3Z0bi9ubW5ndllDMVNSOWNLbTVTOVRuZHJUbnpPNnpuL3NhUGpQUG02YVpLdGhRV3JEeVMzN3RuNE8zUDF6SDdKc3JoSFhYcWJsU3lwVCtrRC8zUlgxdW9pUlhRUVJSUGcrVEJoc3E2QTEvTjBJcmhWd2RFbkxBNXpaS0NqU2Nxalhna0FhTmwxQmhBb1Y1R25nbzg2MURQMmdIcjJvSU4wTm9EbnUrQ2Izd2Q2ZHM0VndwWUZqcTRYMjg3Rnd0eVBGQ01wNlBEL2k1ZjVJejhFb0tQRTRaTUNraCtQTExMbjJaQ2Vtb2dtRFJGRDVQV0tYMEw3bDFlS2w4NW9HOW1pellVTUZBNktjUldzeTAvWEM5Z3VxUXM0cWRnVkJwd09GYXVqSGFacG84Y0w2MFVkWDJROVFBOFo4QnFodWlWalg4RW1BTmk1SWYrTDgvOU9jUzM0aXpSWmJpZzNzQjVwQ0RPZDhET2pud1VFMUNWUVYrM3RkR0xBZjNWcmIzM3BYV092eXBkbUxBWENZWkVOMzJ3L1BDczlTT0FuM3gxclN4SGFKU1pCZVZEbzEra1lOYXdIVENsbWVuNm9ZRC91MndEN295dWc0cmJZTGt5c2Q5dG5TYWhDSFJNSTNUSVlkTjA3eHlTQThyRDRFVWFJRDZQYzJmZDRFR1lEWTdCeHZ5cHVXdkJaK3lJVW9iaFFyYVVKMFZvbEprQ2puZ1VGdWZ4OXJtVWNCQjVlKzdrNkJuNFpEZnhWSGJSNFRmNEY2S00wR0h5QXg0aFFubHFwclF5VHk1clcyVlNteHhDNUVVOHYxd0lzZ0FITW9VbFEwbGIxcW1MK0FRRjRyVVN6L0FNcWJ5VzIwWHRieVJXRlhBb2UwSDJVd3dyWU5WRUZ6aDJpR3FtWUpYTldndEVFend6Uy9CQnBoWVN1Ynh1VCtJbnl0OVhUQ242RzBJMzV2VENCelNUc0dHMHVjMFJQa0N6c2V4cEtGcGwwa1h0dWR4bDdlOUhIQ282UWI5b1haS01KMWNCZlVsNkNFOXhKREFxRlVOdGJYR3EwYmdqY2VvYzBlZ0JsR1RlYXBzbjZaMUVremlZZUREbVBaakpFa0FCN1Yxc0tIdGgwY2x6Mm1JOGtDYnM4dExubmR4MWxEN2hTM2ZvRDhOc0pTcGFLY0VFeHBYbmVxR3Y2NXRVYXZidnBRK1MyZ0JETzZHQmNuSlBCRUQ5VkVENXJ0NFgrN1NnVFdjQ0RRQUVleFMyZkI3d1djd1JBWk4ydzh2ZzBmRk54R21KZFcrNVJaUlI3Vzhuc0NiZ2xDcXFOOFBjMVlqUHA3eGI2MHRjRENJek9CdVdCN2Z6YlB4L1FvVjB6b0ppR0tyWUVQaGc0eGZSUmhjbkN0RFhoeDZIVk5aMm9VdER4VWZBaXhsQ28rMVU0THA1TytIaUdacEJSTTRnRmxOa0hnQmZsdjZBWUFGT25IUzk4dThJdGhkMnc5UjcvTWZCRmdEd0hjYkJ4dHlObjZwVXB1Zmc2Ky83WWM3aFZlRy9Fdnc0VzU3a3lzNW92Wm4zNVIyU2pDdGtPM1cybjZZWTNaRDFLcUdxQStIL0tEVzJVL0FwWHhIQXlVSStWMGxtQWhFc2sxbFE3SForQkhhL09RTThrK0hYc2VFRmoxb3M2YXk3OEJaR2xDYzNHNHRvcjFXTndST1NIZ1ZZQTBBWE1EZ1lxQVFFZWU1cUdvQVF0a28yRkJ5KzZSQTJmYzFaWkRmTUdpenFzcU9Od0hXQURVSmVlUGY5c00rTTU5Q0ppUkVxR3BrWTZFcUI5dCt1QjlnR1FBQS82S3FBWWhtN1dCRDJ3OGxsN1NIR0FoZG1ic0NEZitvSmVDdzUwMUlXSlRBTi81N3ljZ0tYTlVnMjZ0TVVhdURnUDB4dDJHUHpHaURLcGx6QllTelNXWERyNFdldnFNSUE2RXI4elRTTWMwek1DSzRIV1FkdTRoWUZnb2xDOWxxYmsrQnhhaFZEWUtvWlhMZVlIbTBVdG92RlZwUUdYT3VnSWpXQ2piTU5GQnlIMDRNaEp6Y1VhUmU1SG5Pd0tNQVMwa1grdU9vUTJFMzBmYURpaFdZU0s0QWl6aElmdExBWXVDWkw0dWVLMVN5Z0VFaW0zU3dmeExFOXN1bUpPeWc3WWNRK3c0QTBWMFpiTWpsbG5zZEtMa3Y0NnBUS2pxdElWTHdKbGMwaEpvemtBTXhId01zWlJmWGxGbkRkS0lPa20vN1ljckFjY1NaTDErMCt3TW9pbUREZnFsZ2h0MUVDemE4RDdBR2dQOVlwN0toMUlIRzVqUk1LMVdKUkdsWGxEYkowdWJkcHdCTCtZOXgxZDJ2b09kc1RZUE1JWUtqZ0dmaDhSUy9KR3BWUTlRZ0R3QVhFbXpZTThQdVlTZlJQait2QTZ3QjREOHVEVFlVZkRQeTBaeUdhVVdxRXNsWjkzOEdXTXFGYXFpcXlRRWRZQUpSVy9wTlZOMFFzYXFoOUFvemdNVlJqVGFMUHhid0dtRmZRblg4TUpjTWlPcXF5b1lpYjBaeVpqblRIYzgyMkxFc0pldSs5Rjdob1FNNlVLQmZBaTU1cCtxR3FMMXIzUWNBd1BuYWZwQ1VCd0RzellYQmhzRERIcTlpR09TRW9nVWEybjRZQXl4akxUazc2MVVCUzcyUTJRMHduWEhWaFN4MWJ2dmg1UTcvK3U4VExtVXFSWC92QWxDVkx3RmZURGZ4M0NZQWdMOWRWdGtRc1MzQ1ZkNHJ2NTFVcU1CTjJ3L0ZuZHR4MWIwc2ZINkR6Q2VZMW9PQXgvUEZOdjlTMUZhTCtYc1hBQ0tJZWkvOVdJVURGTTF3YUNDc2M0TU5VZHNpWEdWY2RVV3VPNmk3a1FJM09kQndMY0JTTmxiNC9JWlFmU21oZEZGN3EyNVp6Uml4MVdMRVlBNEF5eFY1UXo5Vk9JeHRQOXdKc0JaZ00rOGNMeUNxaXlvYklyWkZ1TXJ0Mk1zcnl0TklBN1p6MWsyUmdZWXo3b1paeVlhVVdjUGtJcmI3MjZpYU1YQlZnMEY1QUVSU3dvYmdweHgwdUJWZ0xjQjZCQnVBc1A0VGJDajBKbU1ZVjkxeGdIWFU0R2hjZFdFMmwvTkdkeGRnS1R2SndadVBoUzUvcHdHeXdML2xxckZ3UFp3M3JHNklXTlZnWmhQN0pKQUZleFkxa0wyTFNBbGNhL2d6QngxQ3pwaUNRNHIyL2FSOU9CRFplWlVOeGZWdUhGZWQwczlwZkJ4WFhaakI0SG5qcTVxTjduSFZGZnNBSmRNSnBqV3V1b2lmcWJXcUc0SitIM3p4MEFWUVBQZWJNVHpMUVlleDFQYktzQWUrbndEV2RGNndvYlIyTmE4Q3JLRUdYeUp0aHVmZW9TVU9LYjlLcWUyVWxHbkM5TUlOZGxzemErdlBHWmF5a2FEQkczWlFZNFl6Y0NVSlpQSDhub01PbnlVZnNYRGUvd0JyK2xld29lMkg1NlVkdUhIVnZReXdqTktkUk5xb2Fmc2hEVlQrRkdBcGs4dWwxT0hhcDZ5aCtGWldFTTI0NmlKbUMxN2FIaW5vUmtPcExlcTRYTFIyQmRvb3dmN1Zta1ZmdzNXcU85Tm15VHczbGtpd0FXQk5QMVkyL0ZyWWdYc1FZQTNGRzFmZDlXQ3Y0V3VBTmV4TnFSbTRPUWdFVEN0Y2RkNFZHZVhoV2kyVzNLS09TMm5kQWN0enM5SlhYTnNNaE1kbjJpeUZhY0VMZXliWUFMQ204OW9vRlVPVzJlN0dWZGRHV2srNmFRMndqRGtjRmJobVZVUXdzYURWZWVkV04rU0FZN1JXaTFvcDFrdEZIVkNGY2RYVjNJNzBUUTQ2SE9jMnVBREF3djEwK3ZJTGJLR2txbUYzTnlJdFprR0JodlRROGFUdGg5S0dYejlybXFhNFZtc0IzVnZTZTUyMVBMaXFmZEhjVXJ1a2NkVWQvL0JuZi95L0QwNHJSZGphcmFYTnhaQ2tGSnRCeE1WTFZTbWYybjVJcitOOTBGYVJTM0lubjR2Rm1PRTcvbDZnWTZtRktCRGFUMmNXVjFRTEpROE1PN3M5cnJwdlVSYlQ5a09ZdGN3b1plUytXTXlyQmM2VnJtY0JId2pURU9pL0s5K0NWalZJT3FoVTJ3KzF0UnlKNkhIK1dZelQ3OWxvVmIzOHJmWTVBRWNMK3N3OVBKTlk4MHBpd0VHVTFoNTdaL2s3L2lSZ2kyaUF4U20xamRMVEFHc28yZDF6TWxZUHB1Mkh6d0Uzc2ZiT2pUZHdScWhLcythL3c2QWpWalZJT3FqWHM2VWZBUFpIai9td29qMExUSjA1dk5UcTRCZTV6ZEkzMVN2TTROb1A5NisxY2c4TWhQWTkyRkRhRi9LNDZtclBmTm1ucCtPcUN6UGdzKzJIZHd2dnkxemk3QVpnWXJuUzdFdXc0M3IyV2hGdEUraDJnRFd3QjBHckdwYlZpNkoraG53R0U3VENlZExOdkVnVjVRZVM3aU4rejRHSHo3bGlFdlpCUUJuZ3dFNHJHMHJLdFBEQXQ3MmpTSUdhdktId01NQlNEaWJOYmlocHZVdnI3d3h6R2xkZHRBMndsQjEyUFExOURMQ1dzMDRpVmVjeG5iejVGTEdxb2ViaHJuQlF1ZElrWW9YelBqNzNyL2J3TzB1VUVzMis1c0NESkVJQXFNeHBzS0drY25XYm5kc1pJbTFzNXdjTGJSSUEvaTNhd0xmalBQUXhETDE0NjVRRERWK0R2amp0Q21BUDJuNjQwelRObTRqSGRoK1Y0RnFvbnV0eERqcU1XcHpCMnR5WEFLRVZON05CQ2VwV1VoYm9uU2lMaWZ4Z2NTQy9MUEpWQS84eHJycG9BZlhhZTJnVFFLNmFpeHBvTUI4RTlpQlhPSDlhNExGMUhidllteHgwT0Y1STMzMEFxRkpwd1FZdGxMWVFLUXMwWnk0dThjSGlRdU9xaTlpZkdqZ2NiUll1RURBWXd3NXltNjZVUlBLSDR3akxrSUtMYVVONXFSWE9ybU5yU1JXVmYrYkFnK2NrQUNqTVQ0V3R0NlRaRWlHTXE2NE50cVN3bVlzQUVhUTJDMjAvdkhBeS9rTVFwZ0k1NmVDbFZvcXdIRGxMdmFSWmJlLzMvUHVQVXZ1Z1BmK05XanhyK3lGZEw3NDBUWE5IbHdNQWlPK25rZ2ErS21QZlRMUkFRODVpQXVCcUQyUjcvNXRlMTJYSjk1ZDM4cy85YUxNL052QmJNU3VGQThvQmhWdjU4NTUrN2hWOFB2YWFUWi9tNkxYOUlOaXdtWnQ1cUhUNmwyNlBxKzY0b0xVRHdLTDhaT0J5dFc1RWVtRUNEZFdZZkZnZThGOHB1SjRmcVBuTHo0N0RkRnlUTnlMSVJRMWVxSmhiMzB3SmJyZFRxNkFaL2s2Ti9zejNTRGRVT2dCQVBQOFRiS2pTM1VnM1hya2ZNeFZ3UXcrenV1MXcvMlZjZGU4aXJJUGxjZDBEOWlGbjVoODV1RHY1NmprVEFPTDVYK0VscnZ6WDAzSFZoY2srYi9zaHJlVmFnS1dFbGZ0WEEveEwzb2c0Y1ZRRVhUaVlMdzQ5TE01c3JkTlNPeVhYK1oxZE0waWFwZEZlSElqdWZ3V2RvWThCMWhEZDBianEza1paWTlzUGFTMWRnS1ZFWi9BNWNLNXgxUzA5R0htaUx6TUg5TWpCaDJVWlY5MnM5K1d1ODVONXBrVWdBTVJRVXJDQnl3MDVPeWFFdGgvU2pickJaK3ZSUXhlNHpHS0Q3VFpoT0tSSWxhSkF2Y1pWMXpxOTA4aFZEbUdlaVFGZ2lVb0tObWozZExFdjQ2cTdFMlV4YlQra09TQy9CbGdLUVBIR1ZiZlUyVW9xR2prazd6OVlucWVIZXNVNTRLQ2wwalRldFAxZzFoTUFISWpLaHZLbEZoTzNvcnlLdGg5UzBPT1BBRXNwZ3N3YllFMnZsbmFnRmh4a0lRRHZQMWllUTdlanpkVjhBcDNUZUpobkJ3SUFNeE5zS0Z5a0ZoTjUwUEduQUVzcHladUMxbm9VWUEyd1NPT3FlN213MXozYmdFNDRoOEhRc0R3aDduTnpvUE5CZ0tYVW9CTndvRWE1a3dSQVdFVUZHOXArTUtqdmpJRDlQYjhHV0VNeGNuQ21KR0dHajhOQy9ieVVsejMzZ0U3NDRmMFhwbUlVbUVlazJYZmpxdnVRbi9NRVBuY240QUFBTXl1dHNzRm01ejl1UkZsSWs0ZHhCVmhHYVk1TFdtOTY4QW13REZpc2NkVXRwZi93d1hwbWd4WW1zRWdoV3hYbXdPZnRBRXNwWFFvNFNHSUFnSm1VRm15NEZtQU5FZHdkVjkyM0tJc1JhTmhjcm1yd2ZnWTJWZjJtdzZGN1pyTnNaalhBOGtSdVZUaXV1dU5jNWFDMTBtNStMYkNxSEFDS1ZOek1ocllmbHI0SjhXQmNkV0ZLUWR0K0NCUDBLRXhSVlExQURHblRvV21hazRwUGh3eE9EdW11b3crTEU2cGEvQ0puV2l2ZHJ2dytZSiswL0FXQUdmeXZ3S0d2andPczRWQitpZFRLSnZlL2xKMi9vVHpRcWJUakZySzhISlpvWEhXMVp1YWQ1R0FLSE1MN1NNa2N3Q3graVZRdHZvNWM2WEE5Qng1S2U0NC91TFlmWGkvOEVBREEzdjJ2eERrSWJUK0VMWFhkbzZOeDFZVzVPY29WSmwyQXBaVG9qOUxXSExtOEhCYXF4cjd5aHZKeUtDblE5Y2pSaDBVWklqMWJiU01OdGM1QmgxU2RNWlQzQ2c3aTJRSmZNL1hSRWd3STdYK0ZEbjE5RVdBTmMwbzN3MCtpTEtidGh5Y0xyekRaV3RzUFN4bndDdXhSaFgzbGg5S3lTNmxIeGRWQ3dQblNOZWRPTGNjbVhUL1Q2OG1CaDd2YUxGMnU3WWNTOXovZ3JHcSt2NEE2RlRlejRkU0NiaEpPSXQwTXQvMlExdkltd0ZLS2s0ZVNQU3h3NlRLbElLWnEycHZWdE9sRFVVN3k1aHl3SEZVRkduNlUyc0dkYWJQME5OYnF3cmkzOUFNQXhKZjMzcXFSMjRsSDhjVkhZTDlPZ3cwbHRtTll4RTFDcEd5N3ZGbitLY0JTU2xYcVVES3RKU0NnaXRxYjZUbk5JUXdxR21CeGpwWVUzQjVYM2RzVWRNaUJoOThDTENtTWhiWmxwaDd1WC9ZbjB0Nm84N3cvNWdUdTJXbXdJVXlMbmsyMC9UQ1dzOXJOQmN5MkszV3ovT0JLYnA5a1lDdUVWbnpXWXFRMmdTekdMNnBwWUhIdUx2bDZNNjY2NTJmbU85UTQ5MmxUUzJ2THZDUkw2SURoSGdZSTdYdXdvZVROeER3L29EclJBZzIxQjNiMktaZS9sZGcrcVpGeERMR2xyTVhDVDVFV0Q4enBKR2Y1RmowVWx0MVVWQlhHZXI3a3ovMW54K3Z2K1E3M3pYZWdWb1hPSklYejFEYWpyN2JYd3lYT3ptd29OY09oeHZrQk53S3M0VzhDRFRzcnR2V1VqR01vd3UxU1QxTUZ3UkxLOFVEYnBNVjdiMGJINHR3ZVY5MnRwUitFaXl4OXZrUGJEKzVCNnJMdjcvaEkrMlhtanV5UFlOVXlPTTk3OXRPWlgvK28xRFk1YlQ5OHErZ0JNcFg0Zmd1d2p1L1NzUTJ3akdJVmZ2eGtPdTFIR2taVTY4Tk5lcUIvSEdBZGk1S3FFOXQrU0ovWGE0Vzk3cnNCMWtEOW5ncHFuZXVWREg4cWRsc2IwTTNrNzhudjM1VnRQNlRxcjJjRkxYOWJqMHR0SjcyR0J6TDhvWGdxR3lqVzM4R0d0TUhkOWtPcHIrTmEydy9QS3lpTGZ4cXB4TGZ0aCtNQ042L0N5Tmt5SlI4L3ZTRDM0N2pXRFo2MkgrNExOaHhHQ3JnWFZvVjJvcVVGZTVTQ3V2ZHROc0tpcEt6bVIwNzU3dEo4aDZacG5yZjlrSkw1M3NtaWh1OCsreXdzUXFSazBkcjJZeUs5SHM4SWUvYS9IMzU5eWVXVHYrWWJvbElkUmNxOGEvc2haVUxjRExDVUl1VTVEVVZ2dXRxa2dlS1UxQTVSV3d1bWxnSU1QK2ZlN0xkY3cyQVIzcWYycy9sekw5QXdzU1hNZDhqUGJMQU9IUitXSVZJeVZHMkp2NUZlaitlRVBUdmJSdWw3K1dUYkR5WFBRRWh0b0Vyc3hUcEU2bzJmTS9KRjdYZFQ3SnlHN0VHSVZRQnJTeHNDaFZRM2ZJblVMcEJpcFUydjExb0J3YUtrb0dLcVpuL250TThyVnlOK1QreHIrK0ZKUlhNVG4xZmNTb2xwcWNnRldOT1BsUTNKcTVJUFh0c1BwVjBFVWl1Sk1Ca1YrZVpSRzVRZDFEQlFXNDlQS05adjBSZHVXQ2RiU0ZVN3Y1ekpZRzd6VUZPQkJsaVdtd0lOaDVjU0ZFKy9pMHU0NzdpQzUxN1dKVkZtQWV5RExJUHp2SC8vQ1RaVThPRFdwZmtOQWRheGxraURyWE1aYVMxWktnZFJ5VUJ0VlExUXFOeG5PYklqN3kyeWovbm5WZjU1a0llNnR1ZjhwRFllcjFYRUFBVW1sbFV0M1hma29NT05WSzIvOU9OQnZhSnRUcmI5SUhrSENPdW5DeFoyVkhpVVA4MXZlQnY5b1RUZm1JV1E1MTJVM3Zybm9QTERUL0Y5OVVSNW9YaFBvd2FPSTdVTVhMSkk5eC9BTEY1dG1sQVd1RkkzSlphWnl4Sk1mdTcrWHExZldac2xpT3ArMHpSaFpuNENuSFZlRzZWYU5nTytCbGpEaFFJKzZJYytYdEcxL1pBZTRMb0tYc3J0QUdzQWRwRGFHd1E5ZnI4RVdBTUE2NG5jV3ZmUEFHdmdBcWR0bG5MeUE3QWZFbmdXb08ySFJ6Vzh5bHBlQitzN045aVFGVDI3b1ltZGtYTWp3QnIrVnNPTWdVUEs3YWRlVlBCU1RtU0pRVFhDQlE1VEc1d0F5d0JnRGRGYjY2WXE5Z0RMNEJKbmdnN3ZIU2VZM0QySGRCRnFDU29KamkzTWhjR0dXb2J1QmV6cmVUZFNleWVCaHQzVTFINHEwdndRWURjQkE0ZG13UUNVSjFTQzFBOE05aTNFdU9wU1J1dmRxS3R0KytGK2dHVUFuT2RoSlVlbGx0ZkJtaTZyYkdncTJSem9JbVcraktzdVRQQ2prbUhHaDFaTCt5bERXNEc5TVFzR29EdzVRZXBqMUlWTG1pcEhmZ2FPR3J3U2JBQ0FDVjBhYktob2MrQnhIbFJGVnNzdzQwT3E2UUhIMEZZQUFINDBycnJRRzdHZThjcVJnMWZtT0ZDeUlkTGFWZVhzVGRnZ081TndmbWR3VldWREU3eDhkaE52Y20vOXhjdVZIalVNTS83dUVDMi9Lc3VrTWhRYUFJQ0xoRzJCazU3eEFxeUJOYVU1RGdHUGxRMWIxaFV0R2JlSzF1Y0JoV3JGWHZwdzVZRHJqOVpxdjBwWEJodWlsODl1NkZQdXNiOVliVCs4cktuSGFSNDZOcXZLMms4TmhrSURBSENSM0FMblM5UUQxUGFEZTlteW1PTkVxZDRGVzdjaDBmc1JMYWowT3NBYWRoRnQvZHI3em1DZHlvYnc1Yk1icXFYSC9zWnlSUEZGWWN1KzBJRUNEVlcxbnhwWG5Xb2ZBQUF1TmE2Nlc0R1AwRTBWN09Vd3g0bFNlZTh1UnJUemZEUEFHbllSYmYwK3h6TllLOWlRVlpPQnNNUmhZdmtHL1BjQVM1bks3TzI5Y3FDaG12WlQyaWNCQUxDQnlQMzJQd1ZZQThDc2NvdHNKcFM3dTRUUzlrUGtnUCtGSXE0NzR2bXQwZHJCaGh6RkRWcyt1NmtsQlJ4eTY2aWFic0R2enYwRlVkdWNpNlpwM211ZkJBREF1bksvL1pPb0I2enRoMmd0VGdEMnJab1cyVnlxMUd4OFZRUUx0VWxsUS9UeTJmdnREa2NBQUNBQVNVUkJWSTFWMW52L01qVzFqbnFhKzhiT3ByWTVGODFmbitXaWh3d0JBREMvY2RWRm5uLzNjT256K1FwU3kweElPRGh0NUJhaDFGWktwYmVBWWtzYkJSdXltZ1k2WGF0OW9GaGxGUnkvNVl5cTJiVDk4S1NtT1JmTmdXWmRBQUJRamQ4Q3Y1REZ6dWNEWmhFeFVLYU4zQUtVMWpJcjZIckRWbWZXWnVOZ1EyM3RsUEpBc1ZrejVlZFNXYUFodGYxNVB1Y2Z6QmtDYitiOG16T0kzR3NYQUlEZzVyNG4zMVRiRDZIWEJ4VHRkY1RGdC8xd1A4QXlhaEl4cUY1YXQ0Mkk2elhqWkNiYlZEWlUxMDRwOWVLdkxlQlFXWXVvWWU2MlB6blFVRnVHd0RCM1pRZ0FBRlc2RWZoRi9ScGdEVnhPMnhlS05LNjZxTE5oL2dpd2hwcUVQTStsZEdZSnZMOXF0dE5NdGdvMlpIY0xlNjFYNldxWjVKOC8yTmNDTEdVS0orT3FtL1ZtdE1LQjJ0L05mUndCQUtqVHVPcStSZTY3djZEWmZLV3E1VmtWd3FpOVJmaWNja2VYaUc1R3IyTEppYnRkZ0tYOFIrRHpXcDJ0Z3cxNVNHOXRnNTBlbHg1d3lPc1ArY0hleHR4RDZIS2dvYnBlcitZMEFBQXdwWEhWUmQ3d3VLYXRDTEF3TjJ0Sm9PVlNmK1I5cTZqTUVHR255b2JvTjVqYktqYmdrSWNabDliSDdVSUgyaUN2Y2FoY1RVUGRBUUNJSTNLMXU3WWlBUWtDVVlHandDK2grQVJhMWhKeTM2cXl1YkhzWUtkZ1ExTnZ4blJ4WDlBVkRqT2V2UTlzcFYrTVIwckZBQURZaDF6dC9pWHF3VzM3d1gxd1BJSkFsTzVsOFBVL3JtMG02WUZFSEJMOXQ3Ui9sZmNCSTZ6bGVnSDdhYUhQWjIxMkRqWmtUeXM4TnNVRUhOcCt1RlZacWRLTjNBZDJOcFVHR3RLOGl5Y0IxZ0VBUUtYR1ZYY3I4Q3U3Rjd6ZHhLSUUzUUFWa0dJajQ2b3JZVFpDbHplakkzOC9SL2U2Z0RWK2F2dmhvRU9QODc1cENSMUNTamlmMVpnazJEQ3V1dlRtR2lvOFB1RUREdm5tK2M4QVM1bktYWUdHYWN3OTd3SUFnTVg2SmZBTHI3Rk5hbkh5ME82SXN3VUZHNmpabittekoraXd1VUtDU3NuREhGaWF0ZUltdFhIUGUybEZ0SEl2Nkh4V1lhcktoblRpUXBUdjdFSDBnRU5OTjg5UGN5bjJiUEpOYjNVTWhBWUFZQzdqcWd1ZE1UajNKZ3ovT3Zadjg0YlV0YUNIUmJzWnRoRTV3UHFqYXpub01PYlBvNlRFT3IzSTUvaDRYN054VXR1bS9Qdkh5dHE0TTdHZnB2eDFhWU96MGl6eEZIQzRGVzBnZG1YSCtpaFh5TXdtQnhxaTN2VHVJdktnUGdEZzhOSUQ2UXZuNFMrU05LWVIvRm53UlFGOTFvdVhOekVmTlUyVFdybmVLK0gxekYxVlA1TS8ycjdHeGhOYk9kbEh4WDhLc0xiOThPczhMMkZTai9QKzF1bnYvSmlyZTlMUDUwby9EN3Q0bGE4ZkpibjV3M2ZBU2RNMGIvTTVQbDRud1RkWHdxU2YrL243L0daaHgrQkhyMkl0cDM2VEJodXluNXVtK2IzQ0k1ZjZmWDZPVXNGUldVYitNUGRzZ2R3dnRNWkF3K3pWSVFBQUpVc2I1QUlPazBrREdKOUZYRmg2ZnBxenpXamVlTmZDQ1E3cldzckVEajViNXBEdTVaL3ZHK29GQjZudTdtTWZaRngxTHl0SXpyaVdyOHZmcjgxTERFU204eGhnR1lzeVdSdWxVK09xUzhOSjNsZDZFTHNJUTYwcXk4Zy9tVHVBazl0aVJld1h1cXYzYzFlSEFBREFxWEhWUFE5OE1LN3RxN1hFQlFRYUlJWjlaV1dYMUVxcGRwK1dmZ0Fna3NtRERjMWZONW1QY3FsT2pRNGFjS2d0STMvdUljYTVYMnNSQTJ3MmRKSS9kd0FBY0VnM0FoLzlQd0tzZ1RocVRaSmtCdEZuMVRDWkk0ZXlhTTdmQWV3bDJOQWNZQk41WnQwaDJoalZscEUvZDdsNm1wWmZZTCs5dFZUK2VRTUFvQkM1NS9mSHFLdHQrK0hEREg4ajFLdy9MaFM1RW9jeTFKcGtTelozeTIrbTVmd2R4dDZDRFZua3JKWmRYWnN6NEpBM3lxdkp5RDlBb09GT3JkUHk5UmdHQUNDU2NkVkYzbXkvbCtjcHNIRGpxanRlK2pGZ1p5Rm1lZ0pFc3RkZ1E4NXErYm5pTTU0Q0R1TysvMGlGRytXSENFTFYyc092NW9BZUFBRGxlaEI0NWVZcElDT2RuUWxZTFViTis1bzFlN3IwQTNBbys2NXNPQjBZWFhXUHJIMEdISExXVFUwYjVYZHpFR28yY3dTRUR1VHAzTWNTQUFEV01hNjYxSzdvUzlTRDFmYURmdXZMWnQ0ZFU3R2hXYm04cjBsaHhsWDMxams3akwwSEc1cC9lbVJWblRtd3h3M3Rtckp1MHViNHJNTzFEekZiWXlaSHZqZ0JBSWhzWEhXM0FpL3ZXWUExY0NBNUdBWTc4MXkrR0srV2ZnQUs0M3dkMEN6QmhtWWhBMnhUd0dISy9wK1ZaZVRQdmptZWg3OWRtL052enVURWtCc0FBQXJ4UzlSbFZweVl4T1dxN3J6QVFVUnVHOGNFeGxYMzBuRXNoL04xV0xNRkc1cmxETEw5bW1jczdLU3lRTU13OStaNDJ3K3BMUGJlbkg5ekxrc0kzQUVBVUlkeDFVVnVWM1F0UHpld0lCSzNtSnBLbWNXUUxWOEc1K25BWmcwMlpFc1lhUHVwN1lmNzIvN0xsV1hZZkJsWDNjN0JseTM4Zm9DL3VYY0xDZGdCQUZDUjRQZXdWVDQzY0NGVkRlekxFdmE2RmsyMmZCbWNwOE9iUGRpUUI5cmVEWGdzcHZaSDJ3OGJaMHkwL2ZDNW90WS9KNGZvMDFyeFFHZzNMd0FBbE9xM3FPdk96MkFzZ0tvRzlpWHZkYjEzZ0t1blpWWnN6azhBaDZoc2FQS1E0Q1dVdGJ4cCsySHRPUVZ0UDZRSjk5MStselNmUTdUN3ljZXdSZy95elFzQUFCUm5YSFhQQTYrNWEvc2g4akJycHJHRXBFY09hRngxMnJKVkxyZk0rckwwNHhEVWlaWm1NUndrMk5EOFU5YnlNZGp4MklmSDYyVEt0UDJRZXBrK0xQSVZudU1RcGRKNU9IYzF4L0NNSTErWUFBQlU0SGJnbC9CbmdEV3dQME5PZW9SOTA1R2djb2ZvNE1IVnpEZU40MkRCaHVhdk4wS2FhM0FTN0pqc1EzZlpISWJjYnVsWjBhL3czdzUxY2YxNm9MKzdUN01QMXdZQWdIMFlWOTF4NUlTelRhclNLY3VCNWdpeVFMa2pnVll1OVlzY1BGOGlsV3VCSERUWTBDd3I4blR0dkZrQ2JUK2ttNTQzaDFuU1h0dzlSTHVmWFFaeVIrYW1HQUNBbXVTRXM2Z2VlN1BWSi9pQWNpcVVPeE1ZUmw2eEhEei9aZW5ISVloWEt0ZGlPWGl3b1ZuWXhmOXN3Q0czL2ZsMDJCVk42c0VCUCtCL0hPanY3bzJiWWdBQUtoVTI2L2U4QkRHS3BxVU5CNUU3RkJnWVhiRngxYjFlU0h2NHlJYmNwcDlBUWdRYm1nVUdISEtnb2FhMlA3K1lLekFwTjhVQUFGUXBQemVFYmFlYjI5eFN2aHVIcUxxSFUzbGd0SUJEeFhLMTNyRDA0M0FnZzI0Z01ZVUpObVJMMm1DdEtkQndsQ082QjlIMlEyMVJ6SU8wb2dJQWdMa0ViNmRiVTV2YlJVckpqSjZwaUNBSEhMUlVxbGplOEJad21KZEFRMkNoZ2czNVpzQlFqN0pFR0dCYzA3d0d2ZVlBQUZpS3NQMnUyMzQ0RHJBTU5uZWlIUzNSNUQwVFE2TXJsamUrZjF2NmNaakprVUJEYk5FcUc1cTgwZXBMdUF3blB1Q1QwbXNPQUlERk9HUjE5QnB1dHYzZ1dhY3NyNEpYekxCZ3FYMmNRRmpkeGxYM1hBTDEzdDBOa1BETUZjSUZHNXAvZW5nK0RiQVVMdUZHYmxJQ053QUFMRTd3emJkUEFkYkFlbTVJM0tJRStUdlBISWRLcFFUcWZJN0R6aVVxMUVsdWo2Y1RTQUZDQmh1YXZ6NmdiL1cxaTB0RWZsb0NOd0FBTEZqWTFoTnRQN3piOU4vSnlYUE00MmZ6R1NoTm51T3dwSm1saTVQM2VINWUrbkdZeUZON1ptVUpHMnhvL3VsckorQVFqRUREdEJ4UEFBQ1dMTGVlaU9waDJ3ODJPZUo1bFlNTUd3ZURJSUlVSU10N0FkcnVWQ3A5UCtWemJGOXpPMGY1ZS81dGlZdGZzdERCaHVhZmdJT3A3bkdJdmsvcmRrMHZCZ0FBdGhUNXZ2anJGditPNTZiOWVKbzNuN1JNb2dwbjJ1N1lHOWhlNklCTjJ0Y1VkTmpJYVpEQmJJWkNoUTgyTlA5TWRSZHdPTHk3eWxNbmxXNlVqeXQ2UFFBQXNKVjhYL3d4NnRGcisyR2o2b3N6V2NzUElyK3VRcnpQRzA4eVhLbFcrZzQ4ZlorYjZiQ1JwNlgwOFQ4VGROQmU2WHhQQlJucThGTXByeUlGSE5wK1NCdmQxd0lzWjRtSytRSXZ4SkViNWNVU3NKdUg3eXNBS015NDZ1NjMvVEFHWGZXdlRkTzgzdlJmeXZNYjdwLzk3OXArdU5VMHpaUDgzOStiZEpYMVNKdXRUd3BLZG5PUHoyVHlUSWZUNzRyVUtxeHpkUC9qdCtBdCtDNlUyNzk5YjZlZEE5bS94bHpwTElvOWoxeXNtR0JEa3dlc0NEZ2NoSTN4YVgwUnFaMVhlc2hyK3pERlVkWDJsUTEybkExbS9DdUwwZ1lHUC9yaWlCeE0rdjUvc2REWHZrUTJIcmVVc2hvREJ4d21rYXM0em0wRDFQWkRlazVJRzQwUHkzdGxPMG5YcDVjRlAzZStXK0E1WTgveWQ4V2QwNytTTjZaZkxuQlA3Q1FIZTEvWDFtMWpYSFd2VHdQWmJUL2N5Zis1NW1lNGovbTczdk42eGRweExPOCtydmFiejJDRzNNWXFyTFlmUHBUMFpXd2c5R0cwL2ZBNVFrWkk3ZWUvN1lkMFEzenowT3Z3T2Z0TGtPdWxiSlcvemtXVVpJa0hidTRQUjlKTVdIZjNVY0ViNVptbDFHdGkydzlwMC9seGdLV2NPdmh6VWRzUDkzTTFST2tWRVNtd2tNN3YyNXJheXRxbkNPdEdyZTJnODNmQ2syRGZsYnY2bUw4YkZwL3cydmJEOVh4K0h4WDZuVC9rUUd4MVFTSXVWMlN3b1hFaG44dEpxaWFKdnNpU2dnMDJRQTh2MzVETmJtbWJlNDV6TEFjNkg4Zm0wdnhYemxpYS9kcnFzeEhMb2I0aitiZTVQaGV1aWRNNDRPZm1jMG1iSlBrNDNjby85L00xWis2RW01UGMwaks5QnorNEQrWVFsbnp2azlzdjNjay9VWUtUcDdOclB1VHZoMi91VDdkM0p2aDgrbXh4aUhNODVFck9SWDdYYzdGaWd3Mk5nTVBlbGJJeFhsQ3dvZHFNQ2dBQUFBQmcyZjVYOHF1WEpiNC9qdTNrN2dvMEFBQUFBQUMxS2pyWTBOZ1Uzd3ZIZEhKUDk5RUhHQUFBQUFBZ2l1S0REWTNOOGFuZHFPdmxITng3ZzQwQUFBQUFnTnBWRVd4b0JCeW1vdFhQdE5LQTdVYzF2U0FBQUFBQWdQTlVFMnhvQkJ4MnBkWFB4TVpWZDcycUZ3UUFBQUFBY0lHcWdnMk5nTU8yWG1uMU15M3ZRd0FBQUFCZ1Nhb0xOalEyZWplVlpncThMR3ZKNFpsN0FRQUFBQUFzU3BYQmhrYkFZVjJEbVFLVE0vY0NBQUFBQUZpY2FvTU5qWUREVmRMdzRqdXhsMWdjY3k4QUFBQUFnRVdxT3RqUUNEaGN5UERpeVIyWmV3RUFBQUFBTEZYMXdZWkd3T0UvSEkvSnBYWlVUeXA3VFFBQUFBQUFhMXRFc0tHeHdmNDN4MkY2MmxFQkFBQUFBRXUzbUdCRFk2TTl1UkZnRFZYeG5nSUFBQUFBV0Zpd29WbjI1dkRkY2RWOUM3Q09hZ2cwQUFBQUFBRDhaWEhCaG1hWm04UlB4MVgzT2NBNmFxSktCQUFBQUFBZ1cyU3dvZmtuNEhBU1lDbjdkalN1dXJkMXY4VFpxUklCQUFBQUFEaGpzY0dHNXErQXcvWEtBdzdEdU9xZUJGaEhUVlNKQUFBQUFBRDhZTkhCaHFidWdNUEp1T3J1QkZoSFRWU0pBQUFBQUFDY1kvSEJodWFmZ01NUVlDbVR5YStKNmFnU0FRQUFBQUM0Z0dCRGxxc0FxZ2c0TEhBQTlyNnBFZ0VBQUFBQXVJUmd3eGw1US9rb3pJSzJJTkF3UFZVaUFBQUFBQUNYRTJ6NFFXNlZVMnJBNFVhQU5WUkY4QVlBQUFBQTRHcUNEZWZJQVllbjRSWjJ1YnZqcXZzV2VZR2xFV2dBQUFBQUFGaVBZTU1GeGxYM3RxQ0F3OU54MVgwT3NJNmFxQklCQUFBQUFGaVRZTU1sY3NEaGJ0Z0YvdVVvcjVQcHFCSUJBQUFBQU5pQVlNTVZjc1ZBMUN6M2o3bmxFOU5SSlFJQUFBQUFzQ0hCaGpYa0xQZG9BWWN2NDZxN0gyQWROWG1sU2dRQUFBQUFZSE9DRFd0S0FZZEFBNE5QeGxWM0s4QTZhcExhVWIxYytrRUFBQUFBQU5pR1lNT0dJZ1FjeGxWMy9kQnJxTXlnSFJVQUFBQUF3UFlFRzdhUUF3NG5CL3piVENjRkd1NDRuZ0FBQUFBQTJ4TnMyRkt1THZneTg1K05PcWk2VkNjQ0RRQUFBQUFBdXhOczJFR2VtekRNOU9kdTUwSFZUT05FT3lvQUFBQUFnR2tJTnV3b1o4WWY3Zm5QUEJoWDNmSGVYOHlDQ0RRQUFBQUFBRXhIc0dFQ2ViancwejM5K3FmanF2c3c2d3VxbkxrWEFBQUFBQURURW15WXlManEzalpOYzNmaVgzdVVmeS9UblNlQkJnQUFBQUNBaVFrMlRHaGNkWjhuSE9JODVJb0pKaUxRQUFBQUFBQ3dINElORTB0RG5DZlkxRDdKc3lDWWlFQURBQUFBQU1EK0NEYnN5UzZiMjRZWFQwdWdBUUFBQUFCZ3Z3UWI5aWh2Y24vWjVDL1lHSitXNHdrQUFBQUFzSCtDRFhzMnJycGJUZE84WCtldjJCaWZsdU1KQUFBQUFEQVB3WVlaakt2dVVkTTB2MXp4bDZZYUxNMWZNeThFR2dBQUFBQUFaaUxZTUpOeDFiMXVtdWJ1QlgvdGJob3NYZDJMUG96QnpBc0FBQUFBZ0hrSk5zeG9YSFdmejZsZ2VKci9lM1ozTks2Nk80NGpBQUFBQU1DOGZuSzg1NVVyR05xMkg4YThPZjUyU2E5L2ozNGVWOTI3YWw4ZEFBQUFBRUJnN1RpT3pnOVZhZnNodFZGS1FaeUhUZE04R0ZmZEIyZVlRMnI3SVZYY3BQZmh0YVpwdmpSTjgwaEZFd0FBQUFBQUFBQUFBQUQ4UXljbHF2RkRBamtjWEM2MFNlL0o3c3hhYmpaTjg2bnRoeWFQYmRGTkRRQUFBQUFBQUFBQUFJREZNN21CNHJYOThLUnBtamNYdkE2VEd6aUl0aDlTMGNMak5mLzJVZE0wei9NWWVRQUFBQUFBQUFBQUFBQllITVVORkd2TjVISEZEY3pxaW1LYnE2UnhEay9HVmZmWldRTUFBQUFBQUFBQUFBQmdTWDV5dGlsSjJ3L1htNlpKeFFxZEUwY2tiVC9jYVpybTA0NUxTdS9yVDIwL25PUkpEbStkWkFBQUFBQUFBQUFBQUFDV3dPUUdpckJEVVlQSkRleFZmbThlTjAxemJVOS81MmhjZFUrY1JRQUFBQUFBQUFBQUFBQnFwcmlCMENhWTFLQzRnYjFwKytIempGTkVocVpwN28rcjdwc3pDZ0FBQUFBQUFBQUFBRUJ0Zm5KR2lhanRoenU1cUdGZjNmQmhhMjAvdkcyYTV2SE1SekFWVVh4dCsrRWtGemw4ZGdZQkFBQUFBQUFBQUFBQXFJWGlCa0pSMUVCa2JUODhhWnJtellHWG1ENGJuOW8rRFhKb25vNnI3bTNvZ3dZQUFBQUFBQUFBQUFBQWEyakhjWFNjT0xpMkg2N25vb1p1NHJVOEdGZmRCMmVZWFJSUWRITTBycm9uQWRZQkFBQUFBQUFBQUFBQUFGdFIzTUJCN2JHbzRaVGlCclkydy90emFtbWN3LzF4MVgxejFnRUFBQUFBQUFBQUFBQW95VS9PRm9kUVlOSTRDOVAydzl1bWFSNFg5cXJUNStscjJ3OG51Y2poYzRBMUFRQUFBQUFBQUFBQUFNQ1ZGRGN3SzBVTlJOZjJ3NU9tYWQ0VWZxS3VOVTN6S1JjNVBCOVgzZHNBYXdJQUFBQUFBQUFBQUFDQUMvM1BvV0V1dVJQK1Y0VU5STlQydzUyMkg3NVZVTmh3VmlweWVOUDJ3OWoydzhzNHl3SUFBQUFBQUFBQUFBQ0FmMnZIY1hSSTJLdGMxUEQ0UUVmNXdianFQampEWENSUEUvbmNOTTNOaFJ5a28zSFZQUW13RGdBQUFBQUFBQUFBQUFENG0rSUc5cWJ0aHljQnV1QXJidUJDYlQrazk4YTloUjZob1dtYSsrT3EreFpnTFFBQUFBQUFBQUFBQUFEVmEvdmhWdE0wdDg1NW5hbFo5NTBmL3J1TGNxQ1B4MVYzWE9PeFV0ekE1SUlVTlp4UzNNQi90UDN3dW1tYVo0N01keWU1eU9GemdMVUFBQUFBQUFBQUFBQUFoTmYydzUxY2pIRDZFN0haZHNvUi9Yem01MFAwb2dqRkRVd21mMGhUSWNHMVFFZFZjUU4vQzFaNEUwMjZnRDN5ZVFFQUFBQUFBQUFBQUFENE96YzY1WjQrYXBybVpxV0haR2lhNW0zVE5POGlGRDRvYm1CblFZc2FUaWx1SVBwN05LS240NnA3dS9TREFBQUFBQUFBQUFBQUFDeER6alY5M2pUTlk2ZjhlOFBzZDAzVHZKeTc0RUZ4QTF0cisrRjZUaGp2QWg5RnhRMExWc2g3TkxLamNkVTlXZnBCQUFBQUFBQUFBQUFBQU9yUzlzT3RQTEhnbmxPN2xxTTVpaDBVTjdDVnRoL2VGbEtacExoaG9RcDZqNVpBa1FNQUFBQUFBQUFBQUFCUXRMWWY3dWVDaHB2TzVFNkdwbW1lakt2dTg5Uy9XSEVERzJuNzRYWFROTThLT21xS0d4YW03WWVVaFA5bTZjZGhUOUxGNlA2NDZyNVYrZW9BQUFBQUFBQUFBQUNBcXVRSkRlK2FwdW4yL0xxK05FM3pPZitrM09YamZVODUrRkhiRDNlYXBrbXZOLzN6ZnY3bnRUMy8yWTlOMHp5YUtyZFVjUU5yS1RoaFhISERRdVF2NUE4emZBbnpWNUhEbzdrdnVnQUFBQUFBQUFBQUFBRHJ5TG5QcnlmT0svMlNDeVhlN21OcXdSemFmbmlVY2tEeno1VEg1aVEzME43cHVDaHU0RklWSkl3cmJxaGMydy9YYzVXYkVVSHptK1JDQkFBQUFBQUFBQUFBQURDRmlSdTZIelZOODdMMlp0QnRQNlFwRCttNFBaN2cxKzJVVzZxNGdYUGxoUEVQTTR4ZzJUZkZEUlZyK3lGVnZ6MWMrbkVJUUpFREFBQUFBQUFBQUFBQWNEQVROWFQvMkRUTjg2WG5RK1ppaDdjN05oNVB1YVczeGxYM2JhTy9yYmlCSDFXV01LNjRvVUp0UDd4c211YkYwbzlEVUUvSFZmZDI2UWNCQUFBQUFBQUFBQUFBbU1lT3VjOURtbHF3OUlLR2krUkNoM2M3RkkzOE5xNjY1MnYvUGNVTm5LbzBZVnh4UTBYYWZualVOTTN2U3o4T2hWRGtBQUFBQUFBQUFBQUFBT3hOMncrM21xYjV2R1hpL1VaSjkwdlg5c1AxcG1sZU4wM3plSXREc2ZZVUI4VU4xSjR3cnJpaEFoT05DdUl3WFB3QkFBQUFBQUFBQUFDQVNiWDk4S1JwbWpkYi9FN05tM2ZVOXNQYkxZc2Nyc3pyVnR5d1lBdEpHRmZjVUxCYzVaWE9YN2YwWTFHQm8zSFZQVm42UVFBQUFBQUFBQUFBQUFCMjAvYkR5NlpwWG16NFM5NlBxKzZSUXorTkhYSjhMeTB1VWR5d1FBdExHRmZjVUtnZHFycUlUWkVEQUFBQUFBQUFBQUFBc0pVdEN4dnVqcXZ1c3lNK3ZTMG5hRnhZNEtDNFlXRVdtREN1dUtFd080d0pvaXlLSEFBQUFBQUFBQUFBQUlDMWJaRmorbVZjZGJjaUhlSGNwUDdPQkwvcTg3anF2azN3ZTNiVzlrTTZ4cWw0NU5vR3YrdmNIRy9GRFF1eDRJUnh4UTJGYVB2aFRwNG9zc2tYRytVYm1xYTVIK1VDQ3dBQUFBQUFBQUFBQU1TVDgwdy9iYkN3aitPcXU3K1BGN0xsOUlpNW5EUk44NjVwbXJkejUxQzMvWERjTk0zTkRmNlZHei9tanlwdXFKeUVjY1VOMGVVS3RIU091cVVmaTRWVDVBQUFBQUFBQUFBQUFBQ2NhOFBFK2IwVk5qUi9yU1hsdmQ0cjZFd2ROVTN6Zkk0Y3pRM1AwekN1dW45TnNmamZmcGJGb2FXRThiWWZQdWNLSlozd0NhbnRoMVFaOWxWaEEvazk4RFY5YitXQ0Z3QUFBQUFBQUFBQUFJQ1ViL3A2ZzRUNUwvc3NiQ2pVNHhsek5PL2s2UkhyNk5wK2VITDJmNmU0b1VKdFA3eVZNRTVrYVJ4UDJ3OXBiTXhESjRvZktISUFBQUFBQUFBQUFBQUF2bXY3NFZiVE5NODJPQm9LR3k1Mm1xUDVaTnRmY0pVOEhlTFJCdi9LNjdQL2grS0dpcVEzV2s0WWY3ejBZMEZNYlQ4OHl1L1JGMDRSVjFEa0FBQUFBQUFBQUFBQUFMemM0QWo4TXE2NjQ4VWZzYXU5MlhPQnc0ZW1hWDViODM5K0xUVk5QLzAvMm5FYzk3VXVadEwyUXhyZmtkNEUxeHp6LzNpUVB5QWNrUGNvRXhoU05XV3U2QU1BQUFBQUFBQUFBQUFXSURmVlhzY3dycm83Y3h5UnRoOVNUdXk5Q283KzdYMFdnMnh3N2s3R1ZmZTlFYmJKRFFWTDNjeFRWL09tYVQ1SkdpY2k3MUVtWkpJREFBQUFBQUFBQUFBQUxFamJEODgzZUxXYlRIaGdubVAyYXMzL1hacmVjRC85aDUvMnV4NzJwZTJIdDAzVFBIYUFpY3A3bEQwNUxYSXd5UUVBQUFBQUFBQUFBQURxOW1qTlYvZGxYSFh2U2pvUzQ2cHJ0L24zMm42NDFUVE42NlpwSGs2d2pKVG4rMlNDMzNPdWNkVzliUHZoeFpyLzg3U09EeVkzRktidGgwZDVSSWVrY1VKcSsrR0o5eWd6TU1rQkFBQUFBQUFBQUFBQTZuWnZ6VmYzZGludmczSFZIWStyTGhWOTNKN2k5NTFPVE5pajkydis2dTk1eDRvYkNwR3FiTnArU0IzS2YxLzZzU0NtdGgvdTVQZm9HNmVJR1NseUFBQUFBQUFBQUFBQWdNcHNtSFQvWVdublB4VTVORTN6VzRDbFhHWHR3cE4wem44NjJESlpXOXNQSHphb1BJSlo1WVR5RHpuSkhBN2x0TWhoYUpybS9yanF2amtUQUFBQUFBQUFBQUFBVUt5MWl4dkdWYmU0NG9hc2hGekpUYzdOTFpNYkFtdjc0WG5iRDZQQ0JxSnEreUZWVTMxVjJFQWdKamtBQUFBQUFBQUFBQUJBK2RZdGJ2am9YTWVWbTFWL1dYT0J0MHh1Q0tqdGh6dTVTdVhhMG84Rk1hWENtNlpwZm5WNkNPeTB5T0g5dU9vZU9WRUFBQUFBQUFBQUFBQlFwYVZPYldnMm1XNXhZTWROMDl4YzUvVW9iZ2drZHhuL29BcytVYlg5a0w0RS8zQ0NLTWpEUEFIbmFGeDFUNXc0QUFBQUFBQUFBQUFBS01JOXArbGliVCs4bmVJWWphdHVqdUtRRCt1dVZYRkRFUGtOOW5qcHg0R1kybjY0MVRUTlo5TkVLTmpqdGg4ZUszSUFBQUFBQUFBQUFBQ0FxaHlYK0dMYWZ0aWtxR0JmaFI0ZjkvUjd0NmE0NGNEYWZraEp0bThXZlJBSXl6UVJLcVRJQVFBQUFBQUFBQUFBQU9wUlpIRkRrTWtVcndPczRWLytGMmd0aTVJNjRiZjk4RTFoQTFIbGFTSmZGVFpRcVZUa01PWUNNd0FBQUFBQUFBQUFBSUFsU1UyaTN3Vjd2ZmNVTnh4QUhpUHlaOU0wMXhiMzRna3ZKWHVucE8rVS9PMXNzUUJ2RkRrQUFBQUFBQUFBQUFBQUM1SUtHeUxtVFg3OEtjQWlGcVB0aCtkTjAveTY5T05BVEcwLzNHbWE1b09pR3hZcUZUbWs4VXIzeDFYMzJac0FBQUJZbWpSbHRHbWFXMnUrN090TjA5d0pkSWpTZE5Uem51VStqNnZ1MndIV0F3QWh0ZjF3ZjROMWJYSnZNSWZQK1pwLzFqZjd1YkFmRjN4ZnpQa2NjTkU5ZnVNK0h3RFdkOGt6d0NiUEJsTzU3UHFlSEkrcjd0anBCV0JMOTNQK0sxYzdpWjRucWJoaEJwTEdpYXp0aCt2NS9kazVVU3hjK283KzFQWkQrSXMzckdQRDVMU2FDR3BYeVB0NWZ2a1o1dnFCWDM5VUF1ajh4NFpKWWt1eXVPdHlmc2IrTWRubngrL1U4LzQzNlRwM2M0WWxMazdiRDl1KzVJLzVueC9PQkY0RldBdXo0UHRJdUlydnN4MmM4OTJ5enZVL3VSZjJSUlZzaDJ2OWwvUlpPT2ZITXgvRk9iT1BjL3BzZXZyUGFyOTNkdmpzbnpyOURtak9KTCtjRmxHNVRoNll2VW00a1B1VXl1Vjk1dXRubmlkTy83bVlmSjRKcnZHbnpsN3IvNzdHNXgveDVDc3MvRnJzdTdaZ0Y4Um9scUxtNzdaQmJ1dGtmbXVhNXVVQnYrZldqcW0zNHpqdWR5a0xKbWs4aEFmanFsT05kWUcySDk0MlRmTTQ1T0xnOElaYzVPQ2hoV0xrNFBwbkJaVi9lenF1dXJkQjFzS0d2Si8vWSsvdjU3WWZYalpOODJLZmY2TkNhWFA4a1Uzd1pjbWIrdThrb20vc3QzSFZQWi83ai82UWZIajJQLys0d1MzWmtGMmQ1SHVYRDZmLzlEeDVHRGtSNEk4bHZuYlkwcy9qcW50WDhzSDdvZEQwN0g4K200eXhxSVFnOW1iSTEvblRhNzFuUWZZbVAzdmV6OTlsZDN5SGhYTnk1dnZnV0RIMDd0cCtlSkltclpmK09tQW1tdlVWNGt5UzdkbHJ1bjNsY253OFV4RHhvZlpydlQyMS8vZzRyanFOclFyUjlzTm56MHovVXZ4KzMxbHRQM3hZTTQ0MysrZDJnN1VkUXRySGVoTHBubkdENC9XYjRvWTlrVFFlaHVLR2M3VDlrQkpLZmcyM01JaEprUVBGYVB2QmpkMS8vVEt1dXRmUkZzWFZ2Si9QdGRjQ0I4ZDhKeW1ZZEVjQXUyNDVFSFdzNkdwNzQ2cHI5L1c3TlppZ0VFTituNzZ6WDdVZk9RbndVNDJ2RGZhc2lIMTBTWThVNENSZjYwK3Y5NTRSdVZCT0hqdjlVV3hkdnk5bkVpTS81NDdBdmlNeTEzalkybTNmSlllVjl5VFR0ZnhSL3FmQ2hlWDYrRU1oZEhHZlRYSENjeDJrYVJPYmFmc2g1WU04YzlqK2JaOHh1Ymx0MEtSeEdGZmRySk03cGlodStQRmNUWnpiTy9zeHVjd0cxNXBYUHgxbWlmVnEreUhkc1A2KzlPTkFUS3BzWVNzcE9lcHIydzlINDZwNzRoQVMxUTlkQ3ZsSHVqZFQzRkFZNytjTHBmZnpQcWMzSENuUTNscEtkdit6N1FlYm5KWEszZi8vWFBweDJOSDdQZi8rZHdvYktFQ1hmNTc5TUdML0pMK0gzOVhVVGVsQUhpM3lWY1B1N3Vka3k3RHljNktrUjZKTHo0WVA4OCt2UDF6dnYrUTlLa1VQQzVJVEhoL2xuNGRMUHg0TGR6UC8vSjMwOHNOM3hGa2ZGMWdFSWY0RzI3bVZDNmZZczd3Ly9DaC9YOW1ENUR6M0xybk9uKzc5dll4NlhSZWJ2VkNZaEdBdTVUeWRJMzJ1SzJxeXRHNUQ0aTQ5aDVmZXdEZzFjRzM3NGQxRXNlbDBUTDVGbUZQbFZnQUFJQUJKUkVGVWFOUzQ0YlhtZytLR2llVE5xYytxY0lsSWgxR1l4T08ySHg3dnUyczJBRnppK2o0UFRpcml5eHYwdWdWdTcxbmVNQkdRcllqQ2hrbDhHVmZkdmhPT2ZYZFJzbXU1d1BEeEQ0SFBWQlQwMnBRSEFLakN6ZHgxNzJ6Uncwa3VlSGlyNEtGOCtkbnhTZjRSTDJZWGx5Vkhwc0tINStPcSsrd0lBK3hIVHJ4N29oa1VFL3B4N3kvOVAvZExUNzRGbU5FbXp6LzdiaGc1aTd4UDFMYjk4SG1Dd3NyVFJvMC9IN2pCMXRyRkRTa3U5ci85cm1VWjJuNUlINGF2TnFyQ0dUYjhZcXRTL29MN3FyQUJKdk1talVqS0kzSUJvQ3JqcXJ1Zkp6aXd2Y2Q1TkNZVk9OUElnTzE5SEZmZExjY1B0cEs2Ky82Um4wSFR6N0ZuVVFDb1NvcmJ2TWdCNXRQci9kdWNKRTl3S2ZHeDdZY1BwK2N1RjhXL0VDOW16MUxSdzZmOHZqT3hHR0JIYWY4MzdlZm5QWmZUYS9vZkNodllzNVNrK2xVc0NXQTl1UUhVeVpyLzg2cGlLT09xUzVOSmZwdm8xLzErNE9mSWRjOU5LdXB2RkRmc0lBVVQ4NDJ0bTlwWVVsSERqZlRCWG5LVmE5NEFINDNFZzcxSlJRN2YybjR3M2d5QXF1U3BBNitjMVoyOHNDbGRQaFB3Sm5HVWk2YUFhZHc4VTNBLzVtUTZ6NlFBVUpmSFB4UTd2TXpQSmh4WXV1LzZvWmpoRHhQa09MQm51UWtqQUJ0bysrRjVqdk9QdVZHbzRrUU9KY1dTOWozeEdLQVc2ejc3M0t1dGFjUzQ2cDQzVGZQelJML3VXVzZXUHFzOEdXdmQrNjN2MDh3Vk4yd2h2Zm5Ualc0S0poYTMrTG9wYWxCMEUxMUs3R2wxUTY3S3Rkd2g1N01BRXdBMUdWZGRTc3oveFVuZGlRS0hnaWxzbU1TclhDd0Y3TS9acnEzZkJFTUJvRW92Y2xmWGRMMS9aeDk2WGo4a1AzNVN6RUJBbmdFQXJwQnp2TTRXS1A1cTM1ZEE3S0VEck9mZEJzZXB1aGo5dU9yUzY3K3h3UVNMeTNSNXIyUE9JcEJOenNuMzZSS0tHemFVYm5qeldGRTN1bkdrRCt4ZFJRM2ZPOFlvdW9ucHRQRG0rME5KK21jdWNuaTY5QU5Ua2RPeGdUcmtBRkNOY2RXOW5yQUR3RktsQW9mblN6OElwVkhZTUlsWHVVZ0ttTSsxUEZJNEJlcVBUWFFBZ0NvOVBGUG84Tm9wM28vY1JPeWI1RWNLNGYwSmNJNmNQL001WDgvL1ZLQklZSXFYQWRZd3Jyb1BPUWR6SFk5cmpKR2szT2h4MWFYcnhzY0pmdDIxUERsMDd3WHorVytzZXkvMi9qUUhYSEhEbXM1MHczZkRHOGRwVWNQMWNkWE5QaW9saXBSNGswZkZmTEtCRmM2bGhUZmpxbnViaXh3ZVRGUlZ4K0U5em9FbDFmVUFWQ0YzQUhqZ2JPN2tWL2NHeGZuczJXb25UeFUyd01IZFBEUFJRUkUrQU5UcDJabnBUWW9hZC9SREF1UWJ6NFFBVUo2Y08vUHV6TVNsem1rRWdLcHNFbitzTmpZeXJycjdxZEhjUkwvdTl4a2FhR3h5THY0K3g0b2JycUFiZmtpS0dySWNvUDdxb1N5a3ArdStSMU5sWWE2cXU3dEJoU0d4dmNtQkpVRWxBSXFYdXlEY2RpWjM4a2FCUXhsU3QvT2NGTXgySHFRaWJzY09Ramt0d3YrY0o5TUFBSFc1ZHFhbzBYUG5oczQwdDVNQUNRQ0ZTdDJBYzE3WDF6enBDZ0NvVUc3TXVHNXVaVmZ6MU12Y2FHNnFKcFdwZ2NhSGlYN1h2NlRDMHcwYVNCeWR6YlZWM0hBQjNmQkRVdFNRbmRsc2ZSeGlRWnlWdm1UYmJSSjYwdnM2VFhsb211YkdST09ET0x3VVZEcVdRQUpBNmNaVmQ1enZVVXliMnA0Q2grQVVOdXpzZGk2R0FtSkt5WHBmRlRrQVFOWGVtTnkwbm5TTXpreHBBQUFLZE9aNi9ydThMZ0JZakUzaTdjOXFqcy9udU94VU9SejM4blRReWVKSGJUKzgzTER3OVBuWi8wTnh3em55UWRVTlB3NUZEVm1lSkdLek5hYVB1YWhoNXd2aXVPcStwZkZCNmZlbFlvbEtqOWVTM013SkpBSktBQlF0MzZPa2g5a3Z6dVRXVXFMSi9VTFhYaldGRFR0SnordzNjaEVVRUo4aUJ3Q28zMk9USE02WHVqWnFIZ1lBWlR0VDFPQjZEZ0FMay9PSFgyM3dxcXR1UUhnbWgyT0tITk5yT1g1MFo5ZGZsSFB3WDJ6d3J6eE5yK1hzZi9IVHJvdW9TVDRwSDFUMGhwRVNKTzR2dmFDaHlaTkVtcVk1OXQ0TUtTWDMzZm54eTNVcXVWamlTYjdJS21vcFd3b29QYzRYWTRVT0FCUnJYSFczOGxqQ2U4N2lWdjVvKytHQkR2ZHhLR3pZeVpmMG5WRHcrbUhKVG9zY2ZodFgzWFB2QkFDb1Vncmd2eFpyKy83Yzl5aDNkUVlBQ3BXYkNTcG9BSUNGRzFmZHk5eFFjTjE4aGJRL2tocXJ2OTdEa1V2N0RXa3QyeFFFZk00L096dVRZM285citWVy90bEVpcGwvMkxXaDNSYUZEVWZuNVZJcWJ2Z25jZnlEU1EyaC9EeXV1bmRMUHdqTlgrL1B6OTZiSWMxYWZKTy93Tjhxd3FxQ2dCSUF4VXRUcHRwK2VMZmhHRUgrb2NBaGlGeW9vN0JoTzJsNm5Va2tVTDdUc2N4M1RHQUJnQ3FsV01LbnRoK09wcGc4WFJveFlBQW9uMGFRQU1DUGNyN0NKZzNzZmswRkVlT3FlelRsd2N3TnNkL2xuNFBMNnpsWURzSVd1YzRmTDlxdit0OTB5eXBUVGpEOWFsTXJqTlRSdkZYWThLOVJldDZiOGFUMzZmVkRKS2FudjVsSENkMXRtbVlvNEZoeHZ0T0EwdWNjWEFHQTR1UUgvOStjdWEzOWtUdEtjQ0Fta096a3ZjSUdxRXA2UnYwemQ5TUJBT3FVSmd0L2EvdGhNWlBYOHJRR01XQUFLRlM2YjBuM0x3b2JBSUR6NU9ueVh6WTRPQS96M3NnMlV4YTRSTXA3MkNMWCtkSkdlb3N0Ympoek1KOEZXQTcvRkRYOFo3ekkwcVNxOC96ZU5FNHZucU1vNzlOYzVKQXV0RGNVT1JRdFhkQy9TaUFCb0ZUanFudmVOTTBySjNCcmZ5d3BzU1FTaFEwN09acTZxd2tReG92Y1ZRY0FxTk5wUWVQejJzOXZhaURXTk0zdkFaWUNBR3doTjZyOU05Ky9BQUNjYTRzQ2g5T0d4QWViYmxDVDFOUTV4NVgrMlBCbFhWclkwQ3l4dUdHSGc4bCtLR3JJVWtXWXF2T3dVdkhBallnam05TW9vVlRra0Q1SEtja293SkxZemd1Vm9RQ1VhbHgxcVVqdnFSTzR0VDhWT014TFljTk9Ya1Y4TGdJbTFlWG5VMU1HQWFCZXYrYmsveXJsT0xBR1lnQlFvSnpUOVUyaldnQmdYYm5BNGYyR0IreGVha0JlOC83SVBwM0p3OTltWXVhcnF3b2JtcVVWTitRM292R2pNU2hxeU01ODBEK3BPZy9ucEdtYTI3bDQ0RnYweGFZa28xems4RnVBNWJDNTA4cFFYVElCS0U2K3IzL2d6RzFOZ2NOTThyNkF3b2J0UE0zRlRFRDlydVVwZzY1TkFGQ3Z4elYyS1d6NzRWZ2NHQURLMVBiRG81elRKVzhHQU5oSW5qci84eFpIN1hFdWN2Z3NKbksxM01EOWVJYzgvTHZyeHBzWFVkeVFib0RURzFDWGpoQ09GRFg4UThGTmFBL0dWWGQ5WEhYSHBTMThYSFhQYzVHRERzcGw2dkpOVS9XandRR295N2pxVWxMRWJhZDFhMy9xa3IxZitmbkx2c0IySG5pT2gwVlNmQWNBZGJ0WFU0RkREcTdmRExBVUFHQkRiVCs4YnBybWQ4Y05BTmpXdU9yZTVaekpZWXRmMGVXWVNNclpleTF1LzQ4VUoycjc0VjNPd2YrMDVkN0wrNXczdm5iVDU2cUxHM0pIL0dNM3dDR2NGalU4V2ZxQmFQNTZiejVSY0JQVzZWU1I0amYwVS9MUm1TS0hrd0JMWWpOcE5QZzNpU1FBbENRWGh0NXc3N0cxWXhzbCs2R3dZU2UzYTNnK0FyYW13QUVBNm5ZdlB5OFZMUmRwS0d3QWdBTGw2L2d6NXc0QW1NSzQ2dTZrQ1FFNzVDdzh5OU90VTZIRGg3WWY3aS90eE9UODV1T2M0L3huMHpRUHQveFY2UnpjeUpNMU52TFRkQzhuRm9rTFlSd3BhUGhIR3N2U05NMEhZL1JDcXZhOW1qdXN2dlgrSzlLMW5FanlmcHVMUEFBY3dyanF2alZOYzEzSHhLMWN5d1VPdC9KeFpBTDJCN2FXTnB1OEY0SGtzMnNUQUZUdGNXcTBrNlpDbC9naTh6UGZ2UUJMQVFBMkpJNEFBT3hEbmhCd2ZZSjh5YlRmOEVmYi96ME00a3ZUTkduaTFMdmMrTEY0dWNGVnlwdDlQbUZlYVlvejM5OWtVc09QcWl0dVNCVWpUZE84Q2JDVXBSdnltMVBRTTA4UlNZRmdEMlVoTGVhOU91RkZtL2s5ekpXUUQzVE5CYUFVNDZxN2xUc3VTVERZakFLSENTbHMyRnJhbUx2alBRaGsxL0krd2gwSEJBQ3E5YXp0aDgrNVdWSXgybjU0NUprUEFNcWtzQUVBMkxjeitaSXBnZjlkMHpUZGpuOHkzYnY4bW43T0ZEdzBPUWYxdytsUHRCaHJ6bCsrbjM4ZTdmRWViTEpjM0dxS0cvTEJQNWFzZTNDS0duNGdvU3VzbmF2RFNuWG1vbjA5WDFCM3ZXZ3puMVFKNm5zV2dHS01xKzYrKytHdFhNdkYwYmNLWEhzWWJUKzhsT1N5bFNHUGF3VTRxMnY3NFhXcEhaMEJnTFc4U2Mvd2hYVWVMS29ZQXdENGk4SUdBR0JPZWEvamUveXo3WWNVNTNnNWNhNTVsMytlNWI5eDBmL3VTODV6YjNMZTVxbmpNLy85VmRMcnVIN21mM1EvLy9QT2dmTG5VeDd1azNIVnZadnlsMVpSM0tBVFl3aUxUUlMvU0FyNG5uNVpFYzdUMHJvUDdVTk9qcitqeUtFNDZUeDliZnZCK3hpQUl1UUNCODlzbTd1WkFqeHBBa1pwQzQ4Z0Z6YThXUHB4Mk1MSDlKa3RidFhBWEZKSDU3ZjIvd0NnYXU5S21kYVU0M0NhM2dGQVlYSkRKSVVOQU1CQmpLc3U3U2VrbjMwVk9sem01cG43b0pJYlJLWWlqZWRURnpTYzliOTkvZUk1dFAzd3BPMkhVWkxNUWFXaWhydmpxcnN1c1BtWE0rOUxoUTN4dkJwWFhTc2gvTjlTa1VQdXpIb2pUMStoREttTDFuRXVUZ0dBME1aVjl5VGRpemxMRzd1Wk8xaXhBWVVOV3p0UzJBQ3NZVzhiMVFCQUNGME83SWVXOThYRjRRQ2dNTGtSa2tuUEFFQUlxZEFoNXo2M1RkUGNUdkhTbkJQTnY1M2tmSThiT2YvMjFqNExHNXBTSnplMC9aQTZWMzdXamVQZ2RBMC9vKzJITzduN3ZmZGxQTy9IVmZkbzZRZmhLaVk1Rk9sbW51S1FDbmRlTHYxZ0FCQmJ1bGJsUlAwM1R0VkdUSERZZ01LR3JibWZCTmFWcmt2UGMyY2pBS0JPdjU1Mk1Bek04d3Y4NVl2akFKUWlOUXJWdkJZQWlHcGNkU21YNGNuWjViWDk4Q2ovZHc4WGRPSk9jcU9yTk1uN3c2RVdVVnh4UTY3aWRiTjdXTDhJWVA1REluaG9hUXJCL1p5MHo1b1VPUlRwUmU2bWRjdjdIWURJVW5GMExuRDR3NG5hU0Vvay9hQ3IvdVZ5Y0V4aHcrWTBMZ0EyVlVMQ0l3Q3dnN1lmVXVmQ3lCTWNURzJBdnh3czBRUmdFN21KcmNaSEFFQlI4blNDLzB3b2FQc2h4ZTFUNGNPZGdxZFNmY3pQbEI4T1djUndrV0tLRzNJRnpPOEJsckprUitPcWU3TDBnM0NXWXB1d1RuSlJ3K2VsSDRoZEtISW96alZUSEFBb1FYb3didnNoalhUODB3bmJ5RDBGRGhmTGhRMkNZNXQ3RUhHekNvZ3ZUY3J4N0FrQVZYdVdyL2ZobXVua21ESFFORi9FN29HQzJJT0U4OWxmQXloUWpxOWVlbitUaXp0djVRS0k2L2svMzhyLzMzZHlydDhVVXE3c2FaN3M4WTgvZVNKRmNjSVhOK1NrMm5UZ2J3Wll6bExwZnY4RGlUT2g2VG82TVVVT3hYbVJ2NlB1K040R0lLcjBBTjMydzQzOFlEM1ZRL3NTS0hBNGgrZXpyZDFWRUE3czRMbmdLMVRqeERRVzRBSlJyL2VLRzFpeUwwM1RwRGpvYXpFZ1dMeVBwVFF0U1JPaDVIekJ2NlRyK1V1NVRRQjF5MFVGeDRvOHR4TzZ1Q0hmNEJvcmVqaTYzLytnN1ljNytjdEdBbFk4Sm92c21TS0hvdHpNVXh3VSt3QVFWcnEzeU4wS0ZMTnZKaFU0dkhYdit4ZUZEVnM1eVlXd1JYYnBZRFBqcW10clBXUjVqeVk5bjk3UEhXNXVlVTZkMWJYMEhleVpFNHFXa2ltZTU5SHFsS3ZhS2E1NUgvck9tYTUyOXlmdWFzZlZGRGNzUTJweTl5N0hmVDVMbUFjSTcyTytqeThpanlmdjM4ajdPcHpUVHM0ZlRyczRtK1FMQUpRZ1pIR0RCUElRZmhiVStJY0pJcUVONDZxN3MvU0RNQ2RGRGtWNTAvYkRjNThSQUtMSzl4VzMybjc0N0o1aUk0L2JmbWlXWHVEUTlzTWpoUTBiUzhHc1c1SlZxTUdaSVA2RkFkbGNSUGNvSitiWjA1bmVrOXcxbHZpcVRYNEc2cFh2V2E5TXZNclBCYWMvNG9yVFNzV01qeUxGQy9QOW5mTzh2WSs1UzdDa1JpakRBNTlYS21EZllCNUhxVmhSbmhjQVVJdHd4UTJwQTJWSzFBaXdsS1g2YlZ4MXo1ZCtFTTVxK3lGdEdOeUxzeUl5U1RrSHBzaWhHRjNiRDZNTlVBQWlTNFY0N3JzM3R1Z0NoN1lmVXRmVzN3TXNwU1JmeGxWM2Era0hnV1hKRTBwZTU1L3Zja0pjK3I4ZmVqdnNMRTBUdW1VU0RBQ0hsQk80L3BYRWxTZTh2VlRjT0lrblB4N2ZBL05NczduMzZUeUtwd0V3dDN4UEpvZGdlbDl5c2FMQ0VRQ2dXbUdLRy9LMGhrOEJsckpVdXQvL29PMkgxOGJqaFpTS0d1NlhNbVp4Q1g0b2NqRGhKSzQvMm40NFducUhad0RpR2xmZGZjWHVHMXRrZ1VNdWJQZ2p3RkpLOGpGOXhwWitFS0Q1cCtBaGRYWStuZFQ1MnJWbko2Zkpvd0FRUms3MCtwN3NsZU9QNyt4YmJ5MWFRYWpubXZWcGFBZkFvZGt2bU01dnVhQkJzU0lBc0FqL2kvQWkyMzU0cDdEaFlGS2krRzJGRGY5SUkzWnpsM09GRGZFOEhWZmRkWVVOTWFVSDZkd0o5bTcrYmlHZWxBRDVMU2Z3QUVBNE9Vbi9sVE96a1hSOVgweVFTR0hEVm80VU5zRDU4bk5zNm1MYnBqMEhoMmtydmw4QUNDM0ZFOUsrZGI3ZUh6bGJtOHZQWVpRamRYTytvYkFCZ0VOcSsrRzU0dEtkRFRtZnEwM1hkWVVOQU1DU0hMUzRJWFZMeVVua3hzQWZ4bW1pdU5IeC83d2YwOFBBN3dHV3c3OGQ1UWMyWS9VS2tJTkYxeFU1aEhXdGFacXZxWkJyNlFjQ2dKakdWZmRTZ3VuR1hpeWh3RUZodzFaZW1kd0Y2MGw3RGpucFVaSGRadTZWdEZnQWxpM2ZHOS9JaVdLc1QzRkRPVDdtWWg3Smp3QWNtaUs3N1ozbXg5eVJ6d1VBTE5YQmlodmFmbmhyV3NQQlNCUS9JM1V3Yi92aGMzNC9YZ3V6TUpvY1lMZ2hHYWRNWjRvY0pDZkc5SHVlbkFRQTRlUm5sUWZPekVhcUxuQm8rK0dXd29hTi9aS0xoWUFONU0vTmJjWDY2OVBOR1lDUzVNbE5keFEwYmlUU3RkNTl4OFZPVE8wRElJSzJINTZZMnJBVitURUFBTm5zeFEwcElTRjN4My9zSk16dWl4dmhmOHRGTmwrYnB1a2lyWXZ2Q1FSM2N5VzY3aktGMC8weXRJZnBtcHlLdkpaK0lBQ0laMXgxSC9Ja0tOYjNJZ2VPcXBJTEcvNzBQdGpJeitPcWUxM1FlaUdVMUJVdkYrdC9jV2JXSW9rT2dPS1lHcmdSazVySzRCa1FnQ2prSkczdWdmd1lBSUIvekZyYzBQYkQ4NXlRb0R2Ky9KNGFRL3FQbFBEVDlzT295Q2FrOU5CMlBYWDlYL3FCcUUwS0Z1VWloNk9sSDR0ZzBqWDVxMDZiQUVTVTd3bDF6OTdNbTVvS0hCUTJiQ1U5VTVuUUJkTzQ0eHEwbGpzRnJCRUEvaU5QRFZUZ3NBYjd4MFh3SEFqQXdiWDljRWRoNUVaT205UitLR2pOQUFCN04xdHhROXNQS1NubFY2ZDBkdTlUTW5IZW9GMjg5Q0NWSjRlOFdmcXhDT2lYL0Y3MTBGYTVQRDNtUmg2clNCeC90UDN3MHZrQUlKclVQYnRwbWx1U1N6ZFNSWUdEd29hdDNQWk1CZFBKVFVJazhsM05ORUFBaXBYalp4cnlYTzFXOUFVdW5hWmhBQVJoYXNQNlBtcFNDd0J3dnIwWE4rUms4dFFodjNNT1pwVVNmKzZPcSs3UmdsN3poZHArdUo0TGJENlpIQkxPVVM1cU1DNTNRZElEZWhxcm1MNm5KQ3FHOHFMdEI4bHdBSVNUN3gydTV5NUdyS2ZvQW9mMEROYzBqY1NNOVoza0RsL0hwU3dZU3BHVHhINXp3aTZsSXlNQXBYdnVERjVKY1FNQXNJNW5qdEphVXA2TWhob0FBQmZZYTNGRDdnRDl5Y0dmM2F1VStLTkR4MS9hZmtoaldMOHFzQWxueU1rM0t2Y1hMSDFQNVVSRm83L2p1SmNtM09TRVFnQUlKWFV4U3QyTW5KVzFwUUtINGdJaytUN2tXR0g2MnI3a1BRQWR2bUIvVExrRGdJcmxlK2xYenZHbEpOOEJBSmNxY1MvNlFEN0trd0VBdU56ZWlodHk1K2NYanYrc3Z1UmtjUUhYTEU4TmVSaGlNWnc2blNweVIvSU5wOUxvN3pUQncvanZNRklpNGRlMkgzVGpBaUNjM00zSVBjUDYvaWdwcUtTd1lXTWZjOUVQc0VkNS8rSzlZM3d4Q1F3QVZPQ3Rrd2dBc0JNSisxYzdNYkVCQU9CcWt4YzNwRVNFMVBIWk9QTFpQVTBKRFpMRkNlNnBxU0pjSm5jb3VKRW5lM0I0ZjBwUUFTQ2lmTStncStiNmlpaHdVTml3c2ZjQ1lUQXJDWThBVUxGeDFSMmJGSGlwS0pOK1B3UllRMGoyOGdFSTRKR1RjQ1hYYXdDQU5VeGEzSkEzVGI1S1JKalZrS2MxQ0xBUzJXK3BLNy8zNmZuYWZuamQ5b09KSzFrcTBrcVRQZEtFanhBTElpVkQ2cklCUURoNVl0MHZ6c3phMGpYOVR2QTFLbXhZWDNyR0VpeUVHWTJyN3AzamZTbFRaQUNvZ2NUNWkzVlJGOGJmSkVzQ2NEQTVYOHplN3VWKzB3Z1VBR0E5a3hVM3RQM3dQQ1ZMT082elNsM3c3NWpXUUdBZmMxSERjeWZwdjFMQ2VOc1BZOU0wejZLdExZTDBZSi9lUCtraGYrbkhJb0EzQ25BQWlHaGNkYSticHZuWnlWbmJwN1lmUWlhZnR2MmdzR0Y5cnp4andjRjhjZWd2cExnQmdCb29icUJrTC9KRVJBQTRCRVYyVjdDbkN3Q3d2a21LRzlwK1NOM1lmM1hjWi9QRnRBYUNPNTBvNGdIMkhLbGpidHNQcVNqcFRiakZCWlFmOG05SUlqbTRGQmg1dmZCakFFQkF1WlAyQStkbWJYOUdLM0RJaFEwM0F5eWxCRS96MUJMZ01JNGRkd0NBZzlMdzdYS21qUUZ3S0hKRExtY0tOUURBQm5ZdWJtajdJWFV4ZWV5Z3p5WjFhTHhsV2dOQm5UUk5jOWRFa2ZPbGpqbHRQNlF4ZzU5MHBkMU1laitsNzc2VXpGWFN1aXYwTEJjMEFrQW80NnBMejZXM25aVzFoU2x3VU5pd2tRZWFITURCS1c0QWdJcmxaMHRpKyt6OFhPcGVqdDBEd096WElFZjhZdjl2Ny82dW84YXlQUUFmOWVwM1RBU1lDR1Fpd0VRQS9hd0htd2phSFFFbWdqWVJZRC9vdVNFQzdBaXdJbWdUQVRnQ3pUcmR1M29NbFArVVhYK09wTzlieSt2ZU8zZG1XblZVcWxJZDdkL2VNWVVhQUlBN2VsQzRJVFpIM0tDdVJ5NGFmNnBESXdYTEhVUzMrcWEyc1R4SEZJUi9UU25WeFIzY2dPUmlycjZwcTVnT3dtYnNDVGdBVUtLK3FTOWkydE9sRTNRbjV6bDh1OGtERUd4WXlGT0ZWbEFFNFFZQWdNMXlQM2E3SEhENFZ0clVSZ0RHcTJvN1V4dHU5cTdrZ3dNQUtORzl3dzFSaENEWXNCNGZvMmpjaGgwbE9zbkY1anFJemxlMTNXSFZkcjBKTjh1VnA0UGt6clZqZWswRGt3TU93bllBRkNlbVBlV0MvUy9PenEzeUpMR0xUUVVjb2xtQ1lNUHRjbGpuc2YwQUFBQ0EveG9iY0x0SE1iWFJzenNBMWtHNDRXYStqd0VBRm5TdmNJUHVpbXYxVzkvVXJ5YjBlaG1PTG9wczlwMnpuMVZ0dHgraGhqZWxIZHRZNU02MU1jWGhiT3Byc1NGdkJCd0FLRlhmMU52dUVlNWtJd0VIVXlEdkxJZDB0bk5vWnlESEN3QUFzQTUrNzk5ZGJsVFU1OS9obTU3ZUNNQ29tUlowdmE1djZ2TlNEdzRBb0ZRTGh4c0VHOVptMXAzeHcwUmVMOE14ZTIvdUtMTDVXZFYyTzNuY2IwcnBmV25ITmxaOVUrK2E0ckF4T2VBZzRBUkFrZUllNGFPemM2dTFCaHdFRys0c1AvUVNiQUFBQVBqWnFUVlpXUDRkL2pVL3Y2cmE3bUJneHc1QStZUWJycWZtQ3dEZ0hoWUtOMFFSZ21ERDZwMzFUYjJsaUlFQ1BmUGVuQzhYZzFWdGx4UDNuNk5BakRXNk1zV2hzKzVyOXo2SGVpYjJtZ0VZaUppQzk4NzV1bFcrZjExNTl5akJoanZMZXdMdXI2Qk11dDBDQUd5ZWNNUDk1ZC8vZjhZMGgveDNYTFdkZ2xRQUhzcWU3L1hjdHdBQTNNT2R3dzE1YzhNTjZWcThqUTZqVUpMWHVYRGN1THo1NHZQeGEwcXBMdkg0cGlTS3dONU9mUjAyd0VockFJclZOL1dCKzRNN2VSS1RHbGZDbnNLZG5kZ1RnS0lKSGwzUG5oRUFnMWUxblh2eEFjak5qcWErQmt1MGwxTDYrMHJZNFVQVmRxOUc4K29BV0RsTjhHN212Z1VBNEg1K3ZjdC9xbXE3dzlqY1lMVmV1TEdsTUxtd1p0OUptUzlHOS81WjRyRk5XZC9VaDFFOGQyNkt4dG84aXBHYUh2NEJVS1M0UDhpRisrK2RvUnY5RTNEb20zcXBYUnZqM3N5ZXd1MXlzNFBEMGc4U0prNm8rM3FtZkFMQXVKVTJOZmxNZ0g0bFh1YS9xdjN1ZE9mLzR5Zy9BekRaSFlBNTdKVmM3NnpVQXdNQUtOMnRreHVxdHN1RnpXK2N5Wlc2VENrOUZXeWdJSG1qOHJGZ3czeTVhMDN1WUNQWVVLNitxWE5SM2xhQkQxekc3SGtFZmdDZ1NIMVQ1d0w3Rjg3T3JYTEFZV25kdHdVYjd1eTFZQU1NZ29tTkFEQnVtcmRjcjdTaTlxTUNqbUVxNm1nVzhmWEtoSWR2VmRzZDZkWU5nUHVuRzZrQkF3QzRweHZERFZYYmJldHN1WEpmVWtyYnVSQjM1SytUWWNoQm0yZDlVKy9vdnZLenZFbWJOMnhUU24rVmRtek1sOS9MdVFPdTVWbWJQK1BlQVFDS0ZJSHlwODdPcmVxcTdSNzg0RVd3NGM1ZVJQZ0dLRmpWZGg3VzMwRFRGZ0JHd3ZmOVFQUk4vV0hxYTdCaGVacno3eW1sejFjQ0QvbnZRelJPQkFDRUd3QUE3dTNYVy82RGJyUldxNHZDV3lqQmJ6YUQ1NnZhYmlzK0QzVm9IS0RjQVRlNkR3dWxyTWV4aDRBQWxDd0h5NnUyZTV4U3VvaUg4Y3lYcHpLZDlrMTlyKzkxd1lZN3krSHlwVTNLQUZaS2tSWUFqRmc4QjNqdUhGK3J4R2ZHdWJIUm13S09nLzk3bWYrcXRydmFQUEZMUERjNDF1d1BZSlE4RndZQVlPbXVuZHlRUjBtbWxKNVk4cFU1RTJ5Z0VHLzdwcTRFRythTG9xeXZnZzNERnUvdloxTmZoelhKaFpDdkp2RktBUmlzUEtXc2IrcXRlTURPOVo3Zlo0SkQxWGFIZ2cyM3lsUHpuZ28yd0RCRXNhUFB0ZXVkbFhwZ0FMQ0FBNHQxb3hLTDBvOEtPQVp1OXlSQ0tILy9NT1hoMkxNRUFNYk1sRXNBZ1B1Yk83bWhhcnVkR0NYSmFwemR0L3NsTE5GSjM5UzZEbDRqeHVhK3Y5ZC9tQ0xsd3JHcTdaNm1sTTUxYVY2NVhOQW9NRVVwY21GdTcyd0E4L1JOdlIwVG5nUlpyNWMvUjQvdit0c2hnZzA2Wjk0c0J4dTJjOGltNUlNRXZuTm9PVzZrQXk4QVkrQjN6TTJLKzc3UHY2bXF0bnZubWZaZzVmRHdYdFYyVjQrL3V6TGx3VzltZ0dFdytXbytqWlVBQUI1Z2JyZ2hOZzFZRGNFR05pMXZETzdhRkp5dmFydDhmWDRxOGRoNHVEenl1R3E3N1hnUUkrQ3dPblcrbG5TakFHQUk4a1M5bUU3Z0ljejEvaWsydUMzZ0lOaHdKMTl5cUdZQXh3a0VUV0R1UkxpaGZHK3F0dk1kUFEwZmN5RExkQ2hZVEV4dzVnYWw3dlgyVFgwUXphcnM5NDlEYmo3eFovNjdFbnE0akdaS1I3N2ZtS0JQUHdTQUdLZlo1MXkrai9mN2VqeWNTd0NBQi9qbHgvOW9qSC9VdFhJMXZnZzJzRUg1Ui9HelhMd2wyUEN6WFBCZXRkMDN3WWJ4aS9mL2Rsd1RySTdKTUFBTVJ2eE9PM0hHYnJSM1U4R1BZTU9kbkFrMndMQlViYmVWVWhMYXZwMDFnbks4VENsOXp2dWM4UmtHM0NJSzQvZXMwNDNPQ2o2MjdLQ0FZMkIxSHNVMW1yL2YraXQvcC9uNjlYMEhqTURzYys3dmFNTERPS2pKQVFCNGdKL0NEYm5yZ1FWZGlWeEV1elBDMThVd3ZPNmJla3RIazUvbFRjK3E3Zks2L0syenozUkV3TUZuOG1xOUd2T0xBMkI4WWlyQlc2ZjJSbk1ERGxFTUpOaHdzeFBORG1CWW9raksxTDg3TUxVUGl2UklzUy9jTG43THZMZFV0eXI2dTc1djZtTU5DeWJwZVZ5L1g2OEVIdkwwN3FPWTRBMHdSTS96ZFB5aEhQZVFqblVEMU9ZQUFEekFkK0dHbU5yd3hJS3VoRzc1YkVJdW9LbGlZNWNmUkdIV1Y5TnFwaW5HZXI2WStqcXMwS09xN1FSSUFCaVV2cW56OUlIWHp0cU45bUpLd3o4VUE5M0oyd2pQQUFNUkQrZS9DamJjU2VtZG5BRmdycXJ0UHZndGMyZkZCeG5qTjllWEFnNkZ6Y3AxRHI5SDkvT3JVeDQrUkIwRXdCQUlEQUFBTUhtLy9yQUFPdm1zeHVzb29vVjE2ZnFtVmxSOERRVll6T1R1a2xYYi9aRlMrdE9pcklSeDBBQU1UZzRHNTA1L0thVlB6dDYxM2xSdGw2S2p1ZnZxbS8zUk43VUptVEFRTWEzaFZCT0VoV2lvQWNDZ1JJalI3NzBGREdoSzAyNU02WVlmdmN4L3NaY3hrOE13K2ZmNkI4L3hBVmdCelc4QkFCN2d2M0JEZEZkK2JqR1g3cU91K2F6UkYxTkNyaGVmYzZjNkwzSlZMamFMd0l2aUZRRGdIeEdBZktvbzRrWnZDajYyVXZ6V04vV0hxUzhDRElGUXcvM1o5d1JnS0RROXVyZVBRem5RWEtCZXRkMEw0Ulh1NkVrMHZ2cnpTdWpoTW9jZGNvQjNRS0VlQU1wMDdyd0FBTnpmMWNrTlJqRUZhaytZQUFBZ0FFbEVRVlN1eHY0WVh4VEZ5WnR0dTMxVCs0RTBSeFFwWEFnMWNJUDhXZjNaQWdFQU0xRVU4ZGg5SlBmMFFpRUVsQzMyQ25LbjFqMm42dDRHVSt3SXdEVEZsSWJqS0dMbWZnWTFpUzZhRlFnNGNGK1A0dmZCM2c5VEhzNGk4Q0RZQy9DOVhlc0JBTUFxWEEwM0tNSmZ2cmM2NkxNR3IyMm16YWZ6SW5lVmcwRlYyNTJaWUFRQVhKVi96MVZ0dHkzZ3dJS2U1bkNNUllPeVJISGp2akREVWcycTJCR0FjWXZuQWJtUjI0Rm5Ba3Z6WllpaDdRZzRQTlBRaUNYS3o0NmVWMjEzZGZyTHh3ZzhtTmdJQUFBQVMvWlB1S0ZxdXgxZFM1YXZiK3JEc2IwbWluTFNON1ZRMGpXcXRqdFdzTUNDem9VYkFJQWZSV0I5cTJxN0M3K2J1VVdlcUxldHlRRnNSb1FYY2lCdEp6b0hLbXBjcmM2RUdnRFdLY0lMcysvNW5manpHMjIxQmh0a2pJWkdwakd5U2kvejM1VUpENWR4elJ6WkZ3QUFBSUNIbVUxdWVHVWRsKzdkeUY0UDVjaTdaTHMyeHVhcjJpNEhQdDdmNXovTDVMbW1BSUJyOVUyOVhiWGRxVEFrMThnZFRiY3REcVdKejYwaDJWRjhOaGlhdWdDVVlUOENma094SllBNEhIMVREM3BLMDVWbUJYN0xzdzc1ZDh5Yi9IY2w4SENTNzV0TmR3UUFBSURGek1JTk85WnQ2WXlnWk5seXg0OGRHMkR6eFFTYVUwVVFQTUNRSGdJT2dpNmVBSXhOMzlTN0pvUXh4MWwrYjFnWUNxV0lpMVhJVXh2c2ZRS1U0WW5wQmF6SUgyTloyUGd0cnpFV201RDNqL1lpN0dDeUF3QUFBTnpSTC9GdjI3Smd5Nldna3lWNzBUZjFsbUREei9JbzZxcnQ4cnA4Rm16Z2dRVDlBSUJiOVUyZEN5TGVXaW5DUjhFR1lJTDJuWFFBR0xVdlE1L2E4S08rcVhPamdzY3hIUjAyWVRiWjRXdlZkbjJlS0JLTjJ3QVlKMEUyQUlBSG1JVWJkSEZiTGh0akxNdnJ2cWtyWVpuNXFyWTd6NXVBT2xQeFVERzZYVGhtdWM3RzlHSUE0S3ErcVEvenZicEZtYngzZlZPL212b2lBSk9UUC92T25YWUFHTFZSQmhsenQveStxWE14K2JQb29nK2JsT3N6UGtmUTRTS2VVd0V3RXZaT0FBQWU1cGVxN2JhdDRkSko0UEpRSnhGcU9MYVNQNnZhN2podjlxV1U2dEtPamNFNmRPcVdUaWdMZ0ZHTGUvVVh6dkprdmUyYittRHFpd0JNemhlZmZRQXdldS9HM25BckZ4dm1hZW1hRmxDUTNNVHRVd1FkemsxMEFBQUFZT3J5NUFiaGh1VXpDWVA3eWxNL0h2ZE5iYnovSEZYYjdVZW9ZYSs0ZzJPd3FyWjc1WE43SllRYkFCaTlLUGg0NWt4UHp1dVkzZ0V3TmJySkFzQzRkVk1LTXVhbUJiblJtSkFEaGFtdlRIUTRjbklBQUFDWW9sK2M5ZFV3RVlNRjVmRzN6L0k0M0R3VzErSjlMM2NvcWRvdXI4djdrbzZMMFRBaFpRWEczdDBMQUdaaXZQVFR1S2RuL0Y2WXNBZE0xRzk5VTE4NCtRQXdXcGRURFRKZUNUbms1Z1ZmQ2pna21Qbjl5alNITGFzQ0FBREFWQWczckk3Tys5eFY3dnE1RlVWUlhKRTM2dktHWGU1UWtsSjZaRzFZdHFydFRyMjNWdUpzaEs4SkFLNFZ4WjdiQWc2ajkxU0FFNWlvdkhmMXdja0hnRkdiZlBPdC9KeXViK3J0Q0RxOExlQ1FZQ1pQYy9ncTVBQXdIRlhibVg0SkFQQUF2eGdudmpKdlJ2cTZXSjUzZVlOVTE4LzVvdWo4YTJ6WXdTcmVZL25hZTI1bFYwTFJId0NUazR0QWNtaFpsOGRSeXFHVnh6cVdBeFAxMnQ0VkFJemVVNzkzdnRjMzlXR0VIQjZubEQ2V2RHeE1tcEFEQUFBQWs1REREVGFyVmlRS1orRkhIeVBVY0dCbGZsYTEzVkVlc2Fyb25GV3EydTR3cGJSbmtWZm1hS1N2Q3dCdWxiczhtbUkwS2w5aTB0NmtPNWdDa3lYWUFBRGpkaW5ZY0xOb1pQRHFTdERCUkFkS01BczV1RmNIQUFCZ2xJUWJWbXV2YXJ2OU1iOUFGdEpGdDg5WGx1MW4rVnFKVU1QdnBSMGI0eExCQnROMVZ1ZWo0ajhBcHE1djZqd2g4V1RxNnpBQ1hZUlZBS2JvbVdBREFJemFMTWp0T2ZFZFJkRGhNQnFZNWJEREM4ME4yTEJjaTlCWGJiZnJSQUFBRDlFMzlha0ZoSEZ4WFROMHYzZ1RyOXo3cXUxMlJ2NGF1ZGxsUEJEZVVmRDdzM3g5VkcyWDErVjlhY2ZHK0FnMnJJV3BEUUR3NzRiUnZvNk9nM2FXZjhOTmZSR0FTZm9TelRuT25YNEFHSzEzZ3R3UGw1K3g1K1lHUDRRZFBnNzlkVEZJbjZxMisrRFVBUUFBTUJhL3h1dklYU1dlTzZzcjg3bHFPMk5kcDhuNC9tdFViYmVWVWpxTjBhbXdqdmRjdmhiM3JQUktuUWxOQXNELzVZNk9FZVQ5MDdJTXlrbUVVd0NtNW0zKzduTFdBV0RVbmdreHJrYnNqZiszUHg3UHdmSTA5d1BQd2xpRGw3RUh0YTNaSGdEQTBxaW5IUWJuQ1Vab0ZtNDRkWkd2M0huVmRqWVRwa014ekEyaWU4akxZZytRMGFuYTd0ekRnN1ZRQkFNQVAraWIrcWhxdXh4MC84dmFESUxDWG1DS3VwVFNybjFMQUJnMXo2M1dMTzZ0anVQdlAxWGI1Y0REdnVka3JNQ2psTkpYVFJlQk5jcTFabThzT0FBQXl6WUxOeHk1NFZ5NXZKbHdVYlhkanMyRVVldjZwdDZaK2lKY3AycTdRNTgxckZOMFJycUl6MkJXNjZPcERRQXdYOS9VSDZxMmU1RlMrbVNKaW1ieUhqQTFseEZxMEwwWkFNWkxpTEV3ZVk4Z3BmVGg2bEhsQm5rUmVNaC9UNmErUmp6WTMza2Z5ak1iZ0kzYXZUclJDUUNBeGZ3VGJzZ2JXbFhidlVzcC9XNzlWdXBSYkNib2xqQStsOFo4WHE5cXU3d1orNzdVNDJPY292dVJEc25ybytzWEFOd2dQMURPdndYemIwTHJWQ1FQL1lHcEVlZ0NnSEVUYWhpUWVHNTgrT04wNUhqT2tmLzJwcjVHTE95VGdBTUFBQUJEOWN1VjR6NTBGdGNtQnh4MkovSmF4eTZIR3A3MVRiMWxnL2huZVZKSjFYYmZCQnRZdDZydGpnUWIxdW9QbjRFQWNMc29WbmdjdnlNb3gxTVArNEdKbU8xalZZSU5BREJhT2RUd09FOFp0MmM3ZkhuS1E5L1UrM0gvOXM5Zi9nMmI5K1JUU2wrbXZqN2M2bE5NQlFFQXVJc3pxL1F6Tlo1bGMzNnU1WHBtOEg2ZHZZQ1kzcEEzUXY1MFd0Y2lieWE4N1p0YXFHUzRkTGk3UnRWMld6RmlyeTd5QUJtdGVPOWR4S1FjMXVPc2Irb2phdzBBZHhQRkpWdFYyK1Y3bGllV2JhTk00QU9tNGlTbGRPRHpEZ0JHelRPcmlZakdDVWZ4OXg5VEhyaEdmbDRyNEFERE1wamY3akd0dUlBaktaSmlXd0NBQjdnNnVTRkZjYUk3ei9WNVU3V2Q3cEREYzZMRDNmV3F0c3ZyOGxXd2dYV3IydTRnM251Q0RldjFha292RmdDV3BXL3FiVjB6Tmtxd0FSaTc3c3FVaG4yZmR6QkpINXgyR0wxM01hWEJNeXRNZWVBNlQrTFpMVEFjcmxtQXN1dzRIMFVUSm9PUituWE95OHBGaW44NzRXdnp2R3E3YjRvcUJpRS9GTjUxbnVhTHduS1RYOWlJcXUzT0JXbzI0b1hQUkFDNHY3NnBkNnUyeTBWbkx5M2pXbjJKY0FuQTJPVFEzSDUwOHdXbXl6NDJqRmNPYVIrWkNzOWRtZkpBMk12N1R6a0FZMEdnYVBrMy9hc0Izc2RmYWo0NGwySm9oc2crd254YkpSNFUzTUl6QWdidnAzQkQzdVNvMnU1MVN1bTkwN3MyK1ViL2ExNTNuVldLZEJrUGc4Nm52aER6eEFib1grVWRHVlBnL2JkUmYrUlJveE4rL1FDd0ZIMVR2NnJhTGhjWi9HNUYxK0lzaDBvbThEcUJhY2dkZUEvdEozSUhieFhDQWd6V1NYemZLMHhnYWFMSVBmL3R6LzQ3cTdiYmpzQkRibWIyeEdxUHpySEN2RUY2NFZrY0E1RHJhSjQ3VVQ4UitHQ0l6alhqbXNzenBiSTVQL1BaUTJEdzVrMXV5QnNheDFYYjdlcldzSGJ2cTdiYlYyaFJsTjkwc1ppdmFydWNORC8xbzR4TnFOcHVLOTUvcGpWc3hrbmYxRWNsSGhqTW9ZaDFnT0szeUtlcHJ3UFQwVGYxUVV6MGUrTzByMVMraDluZjREOGY0S0UrUnJkbXhTMEFNRTVmb2dENXlQUVYxczJVaDlGN2xLZndlN1lEc0Q3NVdaYzlIQUNBKzVrYmJrai9ibURzUjRjR0NkdjFlbDYxWFo5U2VtWlN3RWI5WVhOblBrWGxiRm9PZ1prdXRGRm5pZ0lCWVBseU4rV3E3UzdjNTZ5TWp0WEFrRnhHSjkxakQ4RUJZTFEreHZmOUIwRUdTbWJLdzZnYy9oaGVBVmlDVTNWbDF6SXhoNkU1MVlSckxwOXhaWE4rNXZOY2djRzdOdHlRL3QyczJJM2lDcHNTNi9lNWFqdGRKZGZQbXQrZ2FydGpuVm5ZbEFqV1hKZ1dzbEU2NEFQQUNzVVV4UXVUUzVidWRWN2JrYjBtWUJ6T29sRHNWSk1UQUJpbExnb0tQZ2dzTWlhbVBBeFdudDZ3YjQ4RVlHMTJZdDhIR0RpVFdNcVV6OHZVMXdERzdNWndROWhSVExveGU3RUp0T3NCNThwMXNjNjY0OHloVXo2YkpsaFRCTUVHQUZpRHZEbGF0ZDNUbE5MZjFuc3BYdGh3QmpZZ1QxNDRqMkxHaXdndlhEZ1JBREI2K1I1ZzI3TW1wc3FVaDBISTUwYTRBVmdtbmQ2djU5azZneExQcDV5MCtYWjB3aS9TenRRWDREcWVqVElHdDRZYjhnWmNiRHA4ZGNZMzRwRXBEaXQxS1R4eXZVZzQ2aHJMeG5nUEZrT3dBUURXS0JmQVZtMzNXS09CQnhOc0FCNHFQODM3RnAvSEYvRy81ejJrYi9hU0FJQTU4dSszcjFYYitTMEN3WlNINGp6UHRSL0MxOEFTK1R5NTN2TlNEd3hZbUNMNk1qa3ZNR0ozbWR3d0N6am9ITGxaZVlwRDN0eDU1dUhwMHJ3MmRuTytDRFNkSzZSaVU2cTIyNHJVYyswa2JKeGdBd0Jzd0pWR0ErYzZHOTdMVXcvcTRSOHZKclFNRjY1N0FDYm9aTVVkdUhkMTRyMlhUMVhidmUyYituQ0F4dzVyY2NPVWg0UDQxenlqWEoyOHZqNmZnS1dJUmowVzh4cTVtYVBRS3dOekpwZ3psNXFaTWprdjg1MlZlRkN3cUR1Rkc5TC9iMGlmS25qZXVEekZvZXViV3ZMcy90NzFUWDB3MUlOZkpRWGxsS0JxdTJPZGVvcnhzVy9xVjFOZkJBRFlsQnh3U0NsdFYyMTM3aDc5enZKMHZ1MVlPNWc4RDA4QllQUXVWdng5ZjFxMVhTNCsvdXl0dExBM1VjeW0yQUx1S01MS0IvSDNqNnJ0Wm9YNEdqOHNqODhsWU5rVVExOXZOMnB3Z0dGN1VyWGRqb2JVNWNqbncyK0VhM2xHeWlqOHNzaUxpQTJGN1NnV1lIUHFxdTM2Mk16aDduTDM4VXF3WWI0b0tQK3FhSXBOeVo5cCtiTk5zS0VZN3dRYkFLQU1FVzdYWmVOMlgvcW0zaEpzQUFDQTVZbmlqY2Y1ZnR1eUx1eDUxWGJmb3JFVWNBOTVDbi9mMU52eGpMZEtLZjJoVnVIQkZDQUR5NmJZOTNxZXR6TTB3ampYY3oyWHhmbTRudTlsUm1HaGNFTzYwam5TSm1ZUjNzZW1xQ2tPTjhzejhCN3Jqak9mZ25JMkxYK0c1Yyt5L0pubVpCVGp0U0FZQUpRbGZzK2NPQzNYeW1IMjdVS1BEUUFBQmkwL0c0ejdiYjlKRnBlbjRYL05VeHlHZHVCUW9yNnBqNkt4UVE0NnZCWjB1QitmU2NDU1hWalFhOVUrY3hrWTRZYnJLYVl2aS9OeFBkY3hvN0J3dUNGOXY0blplUnRzWE40VS9WeTFuUStsK1o3bUxxYzZkLzRzQ3NwN0JlVnNTdTVXVmJYZGVZdzBmK1JFRk9ORjdvUTA5VVVBZ0JMMVRXMTYzM3hud3V3QUFMQjY4WnZrTjB0OUw1K3F0anNjNEhGRHNXS3F3MVpNbDFHM0FMQTVPa1RmVEFFdVF5S3NkRDFocFVMRWVhaW52ZzQzY0IwekN2Y0tOOHprb3ZHVTBrZHZoU0xrMGJaOTdzSS85WVc0cW05cUg5WS9pSUx5YjFGUURwdDZIK2JpK2E5dU5vdHlHVk51aE9VQUFBQUFnTG42cHY2UUcwdnBsbjR2YnpRcmcrV0x4b3k1YnVHWno2WTdVNWdITEkzbnk3ZjZ2ZkRqZy8rb3M3dVZ1c3d5T0E4M2NCMHpGZzhLTjZSL0w0YWNNSDNySFZHTTk3bHdQWGZsbi9wQzhMMHJYZksvNnBKZm5MelIrbUVLTHpRSHNHSml5RjRCaDhQL25jVVlaMU51QUFBQUFJQWI1UWZsMFMxZHAvVEZQWS9uZUZ0RE8zQW9YZC9VNS9IWmRPWmtBYXlkejk0Ym1PREZ3TGllcjdmbnQ5eG14ZnFyT2J1ZTY1ZlJlSEM0SWYyN1VYQm9ERzFSY3VINjUxekk3Z3VWcEV0KzZWNUhVZm1vUnpYbXdGV0VHdDRYY0RoODc0KytxWFhvQVFBQUFBQVdFcDNTMzFtMWhlWG5lRitydHJNdkN5c1F6enhPck8yTmZQNEF5Mlo2dzgzZWxIeHc4QVBYODgyT1NqNjRDYkQrTjNQOU1ocExDVGNrWTJoTFZjZm02UEhVRjJLcWRNa3Yya25mMUZYZjFLTytQaVBVa0tjQmZDN2djUGpaczc2cDNmZ0RBQUFBQVBmU04vVkJTdW1GMWJ1WFQ3cjR3bXIwVGIyZlV2cGllUUhXNW9PbHZwbmFMUVpFY2ZUTjh2U0duWklQY0t5cXR0dFdBM2tyMXkranNiUndRektHdG1UNVM3VzNRVG9kVndyS2Rja3ZUeGVoaHYweHY4ZzhOU1pQajRsUXc2TUNEb252bmNYN2NOUVRRd0FBQUFDQTFldWJPajg4ZjZ3QjJyMjhxZHBPOFFHc2htZmpBR3NTejUyRnltNm1JSnBCaU45MzNFeFlhVE1FNlc3aCttVk1saHB1bURHR3RsaHZJdVF3NnFMcUtZdUM4Z3NGNVVYS0QzVWV4K2ZqcUVYSGdhOHhQWWJ5L0JFam1RRUFBQUFBbHFKdjZtL1JBTzNNaWk3c2VXNVlsWi94RE95NG9XaGpuNTRPVUNCRnA3ZFRkTXBRK0YxM3MxcVQ2ZldxMnU1QUhkcXRYTGVNeWtyQ0Rja1kydEs5ajAxU2llQVJpUzc1dWFEOHlkVFhvakE1MVBBc1A5VEpEM2ZHL0VKenFDRUhxSXdBSzlZc1lITTA5WVVBQUFBQUFGWWpHcXU4dGJ3THl3MnJ2bFp0OTJwZ3h3MmwwMFVjWUgyRUcyNzN5TlF1QnNMMWZMdmNaRnBqMFRXSWRmNXo5Qy8wNFZ5M2pNckt3ZzNwK3pHME5nM0tremRKUHdzNUROK1ZnbkxweFBLOGpsREQrWmhmWko0R0k5UlF2SGRUQ05nQUFBQUFBSnZYTjNYdVlQbk1xYmlYdjZxMjA2QUdsdWZDV2dLc1I5U0lYVnJ1VytXcFhhWUxVVHJ2MGJ2NVZMWGQ5aEFPZEtoaWZUOU5mUjN1eUhYTHFLdzAzSkQrUDRZMmY4aTg4OVlwMGl6a2NHN2M3YkFvS0MvYVNkL1UxZGpIM1Y1NUQ3NHY0SENZYnpZNTVNRDZBQUFBQUFEckVrMS9ORUM3bjk5aldqY0F3TkFJYWQ3Tlh0VjJPbXhUckdpY2VlWU0zY25mQWc2ckVldjY5eGhmMndxY2FYakwyS3c4M0RBVGhaVXZ2SU9LVmNlNFd5R0h3dVZKRzNuaWhvTHlJblg1WVUzZjFQdGpmcEhlZzROeE1vWEpJUUFBQUFCQW1hNDBRUHZvRkMyc2p1bnJpbVFBZ0NGUnNIOTNMd1ZhS1p6citlNXl3R0YzS0FjN0JMR2VnZzEzNTNwbGROWVdia2d4Z2l4M000OENZTXIwWDhqQitTbExEcDNFZWZrY0V6Y294Nnc3L3M2WVU1QlhRZzNlZzJXYnZSOUhIYklCQUFBQUFJYWhiK3BYS2FYWFR0ZkNIa1dSekt1QkhUZVU1TG16QWJBKzBYaFB0L2U3eTRIV1B0ZGlET1dBbVpSanAzc2huNnEyT3h6UThSWXIxdkhUMU5kaEVYMVRtNXpFNkt3MTNEQ1RDNEJUU245NE94VnRkZ1B0UnFVQVZkdWQ1dEJKaEU4b3kyOWo3NDR2V0RNbzcweHJBQUFBQUFCSzB6ZDFmdDcwTkpxenNKaS9xclpUcUFBTEVnd0MyQmozTFl2N1hMV2RydHNVSlpxN21zSzNtRGN4Z1c5clNBZGRpcWhQdThqck9QVzFXSkRybEZIYVNMZ2gvVDh0OU5nbVp2SDJoQncySjY5N1huOWRSWXIwUjU1RTB6ZjFhSDlnWGdrMUNOYVVMMytYUHUyYittRHFDd0VBQUFBQWxLbHY2b3Zjbk1XRTkzdjUzZFIxV0pqaVdvQU5pQnFLTDlaK1lTL1ZaMUVnOTFPTHkwMWp2d29zTFNZKyszSjkycE1oSFhjaFhLZU0wc2JDRFNrU2ZyR0orYzdicTNoQ0RtdFV0ZDEraEJyMkp2T2loK01rUWcyanZqRzRjdE1vMUZDK1AySmF3OFhVRndJQUFBQUFLRjlNZVBkc2NIRjFkQUhkSHRxQnc3ckZWSHlGVVFDYmMyanQ3MDE5RnNYb20vcFVPUDNlWm9HbGM1TWM1b3VtdThkcUpCK2tpK3NVUm1lajRZYVo2RFQ5ekJTSFFYQVR2VUpWMisza2plbVUwdnZSdnNqaHlqZnJqL3VtM2gvemkzVFRPQ2l6OTZRRUxnQUFBQUF3S1BGczhJV3p0ckRjQmZUdnF1MWVEZXk0WVMxeStDZWV0WnFLZnpNRlVNQks5VTE5YkhyRGc4M3FzNzY1OTJQRDFLUThUQjJUSFBLMVBPcWFzN3ZLbjJseHovNVZmZHFEdVQ0WnJWOUxlV0Y5VStkUnFsdFJOTzlEcTN6NUpub3Z1dGo3NG4yZ1NHaWU2cEpmcEJ5NjJvM1BxTkdLRzJpaG11RjROdmIzSkFBQUFBQXdicm03WU5WMmoxTktGMUcwejkzOVZiV2RaM1FRWXFMSkI4OWFBWXFTdzZ4L09TVVA5aWp1L1diL1BXOXpNV3ZmMU4rRys1SVlraHhXcXRydTBGU3NCOHZYOHZ1cTdkNUhMZHJSbEs3bHF1ME9ZcXFQMy83TDh5WENoREJLeFlRYlp2SW1YTlYyUjFIbzdjT3NmRUlPRDFTMVhkNW9lem5vRnpGZXI4ZCtFeURVTURnK2F3RUFBQUNBMFloQ2p0ejg3RlNuOVlYbFozUzVPZFAyd0k0YmxpSUNEVWVlczk2THlRM0F5dlZOL2FGcXV6UDNlRXYzSnY5ZENUdDhUQ2tkNS9VZXowdWtRSWRxaTVicTBaeHIrU1N1NWNIZnAxVnR0NU5TMm84LzliK3JjempXRndhcHhIQkRNc1ZocUlRY0ZoU3AxamVET3VqcEdQMzdPRzRraGNpR280c0pJcm92QUFBQUFJdmFqYjFJbU1sZDhrLzdwcjZ3SXBTaWIrcGR6MDN1NVVuVmRuMUs2YWxybWpHTDUxcXY0czkwaGdjYVE5SGNST1RHb0x0VFh3UytrNy9yUHd6c21YR3V1L2k3Z09NWXN4enllM21sUUhxbWk1cVFYSU4zSHJWNGNDOHh2ZUhBZmRoSzdVWDk1WS8vakxPNGxrL2pXaTdpT3lEdVVmSTkrbTc4cVQ5YnI4N1VCc2F1eUhERFRFeHhPSXdiTFIrQXd6QUxPU2pFdllaTytVVTd5dzlReHZ3Q3E3YmJpczlVNCtLRzQ0Vk5aZ0FBQU9BQm51dVV5VHp4d1B4dDM5VENMeFFodnhkamdzTW5aMlJoZjFkdE4vcHAxT24vM2ZwemdmdDJGTk13RHU1VjF1ZmpWRjdvQ0dnRXlqenY0ejcrdHlGMDZzL2h5NnJ0M3FXVWZpL2djS2FtdmxxSVBxZGcraVpuVTErOEZicUltcDNqQWRiVTVYcTN6d1VjeDlUTTl2WCthUVN3d0xYOEpkNXZkN1VsdkRJb21vOHpla1dIRzFMYzZNWVVCOTFhaGlWLzJYMnQyazdJSWVpVVg3UjhRN2N6NXZkcGhCcE8zWWdPeXJ1K3FRK212Z2dBQUFBQXJOU2JxdTB1ZEh1akZMblJTOVYyanpYcHVaZGM3UGlxYitwWEF6ejJXMVZ0ZCs0WkJ5ekZrV1dFVWZpcmFydG5RK2pHbjU5NVI0ZHYzK1BESVhTNE9zOGp2UFpuMVhhWE9iQTdsRnFsL0hsVHRkMko4TjFnUFBHYmVyUk9UT05oQ240WnltdU16a0dQb3dpWjRaaUZITTZqdUhweTh1dU9EZGZQZ2czRnlUOFU4Zy8rd2Z4WXVJK3E3ZktEeWE4MkN3WWpoOEllQ3pZQUFBQUFzQ2JiRnBxUzVQMzZ2Ryt2dS9pOXZNeUJwYkU5a3hOc2dLWDVZbG80ak1xUXZ1OUhHYjZFQjhvMVpJTnFOTkEzOVg3VVdnR2JjUm5YSVl6ZVlNSU42ZnZOek5jRkhBNkxtWVVjdnNVRWcwbFFWRjYwUEo1NWE4eEp4cXJ0OXF1MjY2V21CeVdIYlVZOVJRUUFBQUFBNEM1aUFzRWZGbXRoVCtLWjNDaWV4K24wREV0bGFnT3dFWDFUWDZqMWdybUdHRW9XVm9MTmNmMHhHWU1LTjh6azhjaDlVMWNwcGJNeWpvZ0Y1TlRwNTdHSEhLcTJPMUJVWHF3OG1xa2E4NWoxZkczbGF5eVBvQzdnY0xpYmQvRytORFlNQUFBQUFDRDBUWjBMY1o5YWozdkp6K05NQ0FabXZzUm5Lc0JHUkkzR082c1B3eFpUb040NmpiQjJiMDFoWTBvR0dXNlk2WnM2ZCtwNFp0elJJTTFDRG4zdUxqK1dGMVcxM2FzSU5meFp3T0h3dlM2bDlIak1vNW55bU9rWXpmdzVyakhLTjN0ZmVzQUVBQUFBQURCSDd2UWJUYzg2NjdPd1A2dTIrekN3WXdaV3c3TW9ZT1BpdWZoSFp3S0dyVy9xUTljeXJOVlpYSGN3R1lNT042Ui92eXpQKzZiZWtnZ2N0UGRERHpsYzZaVC9Wd0dIdy9keStPbHAzOVE3ZlZOL0crdmFWRzJYdXh4OE5acDVNUEw3OHRuWTM1Y0FBQUFBQU11UzkxTjErNzJYbDFYYlhlUUdTUU04ZG1BNThtUjdRU2VnQ0gxVHY4cEZtczRHREZ0Y3kxK2NSbGk1TDlFRUhpWmw4T0dHbVVnbVBkYTFaZEJtSVlmam9id0luZktMOXlLSG4zSlhwN0crd0N2VFF2WUtPQnp1NW0yOEw4K3RGd0FBQUFEQTNVVzMzOThzMmNLZTVBWkp1Vm5Yd0k0YmVMZ3ZZNTVzRHd4VEZHa3Fpb2JoMjRubW5zQnFYTVoxQnBNem1uQkQrdmZtOTF0MGJYbm1pM1BROWlMa2NGcHlGeG1kOG92Mk9vK283cHY2ZEt3dk1JSTFGNmFGREVvTzN6MDJKZ3dBQUFBQTRQNmkrL2hqendMdjVYUFZkZ2NEUEc3Zy9oUkRBVVhxbTNwYkExc1l0bHlybVZMYTl0c01WbVlucmpPWW5GR0ZHMlp5Tit6Y0ZUdDN4eTdqaUxpbjU5RkY1cnlra0VQVmR2czY1UmZySkVJTmc1bitjUjlWMngxRnNPYko4STUra3ZLUHVHYzVmT2VHRXdBQUFBRGc0YUxoV1g1MmRHWTVGL1puMVhZZkJuYk13UDA4OVd3S0tGazBzSFUvQndNbTRBQXJjUm4zOGhlV2w2a2FaYmhoSm5mSHpvWE9rcjZEVjBmSTRkc214K1ZXYmJjYm9ZYjM0MW5hMFpoMXhCLzFTTldxN2JiemRaQlMrcjJBdytGdS9zZ1AySExvem5vQkFBQUFBQ3hYMzlTN21wM2R5OHQ0N2xic0JIWGd3UlJEQVlNUTkzUHZuQzBZTGdFSFdLcDhIVzI3bDJmcVJoMXVtSW1rN3pOZm9JUDNLTWJsOW5sNndycGVUQTVVUkVINXAvRXU3V0JOcGlOK1RHdjRPNjREeXRmRkZKRWo1d29BQUFBQVlIVnlzN09VMGd0THZMQkgwVnhzZDJESERkenNNcHJDS1lZQ0JxTnY2b09VMG0vT0dBelhsZWw2bWxERC9YWFJSTmYwTlNadkV1R0c5TzhYNkhsOGdiNHU0SEI0dVBjUmNsaFo0WER1VmxPMVhlNjIvbGxCZVpGZVQ2RWpmcndQVFdzWWp2OENOMU5mQ0FBQUFBQ0FkZW1iK2pRWDgycDBkaStmcXJZN0hPQnhBejlUREFVTVZ0L1VIOXpQd2ZCRnZZeHBMTEM0ZCtyTjRQOG1FMjZZNlp2Nk9IZlRUaW1kbEhGRVBORHZFWEw0c016UnVWWGJIZWR1TlNtbDJna3F6cnZvaUg4ODloZGF0ZDJyZUI4SzF3ekRKQUkzQUFBQUFBQWx1dElwOUtNVHRMQTNWZHVkRHV5WWdlKzlWUXdGRE4yVit6bUYwVEJnTVkzRmREMjR1eGR4M1FCaGN1R0dtYjZwOXlQeGF4VFNPTHlNMGJublZkdHQzL2NWVlcyM244TVNLYVc5cVM5b2dUNUdxR0VTWCtReGxlU3ZBZzZGMjUxTkpYQURBQUFBQUZDNnZxbHo0NkEvbktpRlBjK1RwSmZaVEF4WWk5emgvR25mMUNhd0FLTVJkU0ZQVFhHQTRjclQ5YUlCdGRwTXVGNitQaDdITkVyZ2lzbUdHOUwvRTcrNWU4RXpOOFNqa1NjdC9CMmJyM2Z1VEpIL3ZSRnFlRC8xQlN6UTdFdjgxVlJlY0hSSCtyMkFRK0ZtK1h2aldkL1V1OVlKQUFBQUFLQWNmVk1meGZNL0Z2TW9tb25aOTRaaGVCdFR4UytjTDJCczhtZGJUSEY0N2VUQ2NFVnQ1bTlPSWZ6a2RiNCtjZzJ6cFlHZlRUcmNNTk0zOWJrYjR0SEptNitmYzJBaFQyTzQ3c1hsN2pNNUNKSC92Vk5mc0FMTkNzY245U1Vld1libkJSd0tOM3NkbThYbjFna0FBQUFBb0R6eC9DOTNDdjNpOUN6c1U5VjJ1c0JEdWJxWUt1NDZCVWF2YityanVLYzdjYlpobVBxbS91QTZoditjeEwzOHNTV0I2d2szWE9HR2VMVGVSOGpodnkrRUNEWGtvdVN2RVlTZ0xKTXNISy9hN2tpd29YZ2YzV0FDQUFBQUFBeEgzOVRiS2FWM1R0bkMza1JESnFBY3M0bjNPODRKTURWOVUrZkdwby9qc3hBWUlOY3hFemU3bDcrMlVUZndmNzlhaTUvRkI4aCtGTC9YcFIwZjk3Wlh0ZDFlVEFRUWFDalR5VlMvd0t1Mnk1dVF2eGR3S015WFB6ZTJqUUlEQUFBQUFCaWV2cWtQb2xEL0w2ZHZJYzlqQXJyOWNkaXNzNVRTSzljaE1IWHhPZmhQd0NzYW5PNU5mVTFnYUdiWGNXNU1uRkk2Vlp2SkJPUlF3NjU3ZVZpTXlRMDNpSTRIajQyckhSM0JodkxNUnFkT09abDRVTUF4TU45c2tvaWJUQUFBQUFDQWdlcWIra05LNldrMHMrSHU4bk8xcjFYYjdWb3pXTHMvNGhtcVlpaUFIK1Q2a3Z3Wm1aL25XeHNZbm54dmsyc3o0em8rY1FvWm9ZK3pxV3Z1NVdGeHdnMjNpQy9TUEs3Mm1jMU9XTHBMbzFQL3MxM0ljZkIvSjdGaGZHeE5BQUFBQUFDR3IyL3FpOXpNSnJxZ3M1aFBWZHNkV2pOWXVkelo5V2s4b3pxeTNBQTN5OC96b3pqNmFYeUdBZ1B6UTFoSmZTWkQ5enJ1NVUxZWd3Y1FicmlqdnFuUFk3TlQ0aGVXNDVsdStCVHFTNFJ1cGp4SkJBQUFBQUJndEhJWDlKVFNXMmQ0WWVESmtsQUFBQXd4U1VSQlZHK3F0anNkMkRIREVPUm5VeStpQ0NwM2RyMXcxZ0FXRXlIV1dSZjQzeFJJdy9CRVdDblhaejZPcnZjd0ZMTXBEWnJvd3BMOGFpRVhFeDgreDFYYkhhU1UvaHpTc1VNaFh2c1NwMkI1NDlpREdRQUFBQUNBa2V1YitqQUs5VDg1MXd0NVhyVmRibHkxdmFZR1ZwcGtNVlo1Z3N4QmJyTG9EQU1zVjkvVUgxSkt1VUE2VlcyWFE2MjVSdVdKWllaaGlOOFpyOUsvMS9CV1hNTXZuVDRLaysvbjl3V1RZVFdFRys0cFJrQWVWVzJYdnp6M0J2a2lZTDFPZE1LbllONmZBQUFBQUFBVGs1dmRWRzJYdTRMbVlvUkh6ditkNWJYNldyWGRiMUU4dURLNThMdHF1NCtLbVJpQjNFSDhNT29NQUZpVGFHNjRuZjR0a3M3LzgxQ2RGd1hSSFBZV2M0SU9CL0huOXh1YmtDZEFIcTBwNkErVEp0endRRkVNdTErMVhlNm9VQS82eGNCcWRDbWxYVi9xRk1yN0V3QUFBQUJnd21KL2VDdW1PRHozWGxqSVgxWGJ2ZXViK21DVi81QytxVjg1UHd6UWx5aWcvZUE1RkVBWm9ydjJmdnpOcGpvY3VzZGdRODc2cGhadVdFRGNVeDNHbjhBUzYzQVNBV1hUR1dETmhCdVdwRy9xblVnSG5nbzV3RDh1bzJqY0tGVks1UDBKQUFBQUFNQi8rcWJlcmRvdUYrbi9hVlVXOG5zdURNelBTbGY1RDhubkovMWJ3SFFZQllsUFZ2blBnd1hsNTA0ZkZENEJERXRNZGRpZEhYUVVTdSs3MTJBTlhnczJQTnljd05Kc3NvTnJtUHZJOS9SNXl0cXhlM3JZUE9HR0pZcDA0Q3prWUh3dFU3YnlNY1R3QUcvN3BqNjBnQUFBQUFBQVhOVTM5VkhWZHZuNXhybm5mQXVwcTdiNzV6bnBxb3RBWW4vL3B6MytlRDY3RXdXSzIvR25Dek9ya0tlQ0gwZlJrNGtNQUNNUzl6SGYzV3ZFUGNhc2VGcXpXeDdpTEJmZWE4SzVPajlPZGtpdVlhNzNKWUlNSHdRWm9FekNEU3R3Wlh6dFRreHlzUG5KVkNnYXAyVGRxanRId1liNXdUWGZhWWtIeGEwOEZKelAreG5nZW1jS2x3Qy9pd0JZaGloczJJb0pBVzhzNnAwOWlvTHYzU1g5OXkwa25zK2UzblgvSkRvemI4Znh6b0lSTzU3ckVyN0VKSVpURGQzVzR0UnZlcUJVY1k5eEZILy9pWUxwVjNFdjhjbzlCS0dMb1BScDNFZllxOXF3RzY3aDdTdlg3NjVyZUxRK3h2VW94QUFEVS9WOTc1eXRtSkFERTNEU04vVytFMzEvVmR2WnRGdWRQRFpzVi9xZEtmREE5U2Y1K3QvV1BXdVlxcmJMRDhQM3ByNE9WMXoyVGIxVnpOR3dNVlhiNWZ2dTk4N0FkNTdha0tScXUveGc0dmZKTDhUM1B2Wk4vYXFrQTRKMXFOcnV3dGg1V01oZ0dvSkVWM2pQV2I3M3pMN242c1h2c0NQdnZ6dDUxemYxd1FDTzgxNnVUSWZZbnZQbi9tTTRMcThVSFo1SDRhRTk1QTJLYSt2QzV5d3NSSTFHNGFKV2JQZEtnRkxIK0dIN0V2Y04vLzE1TGpGdVAxekR1KzczaTNUMXVzejM5Qm9Gd29nSU42eVJJaFJHcUl1aWNSdCtEeVRjc0RLdis2WStIdWxyZzduaUljRFJ4RHVFNU03TmgzNjhEcC8zOHo5eU40a2o3MmV1aW12aklFYm9UblV6dFl2UGV0MFQrVTg4Yk1oaHo1Y1RYeFhYQjVQbjh3QnVkUm5kcUErSFZvd1JqUjJtZkIrY3JweS9BM3Z6NnhmZFBXZWRQYmNWcWYyamkvZmtrZmZremE2RUk5S1ZDUmV6b0VUeW5PamVabUdGaS9qNzUzOFgvaHFlcXUxMjR6N2V0UUR6ZllrcFNiNXpSK1NhYVZLQ2s2dlR4UVQ1aXgvL2hCVzRqMnV1NFMyL0ZlL2x5dy9YWlg0Ky9zMTlQVXlUY01NR0NEa3dBanJoTDVsd3c5THBVQW9BQUFBQUFFekNsYUtxbWF0Qmlwdit0YXVXL1p4cVZwdzB6NCtOUE02ajBEQXBZQUtBeGZ3UW9FeFhpcXRuYnJvSDJGbERnN0ZaRVBFbTM2NzU5OHo3MTg4RmZCaWJDSG5Pekx0bWY3emYvL0gvdDRwQTFFM1g3cnhyOCtLSCszL1hLbkJ2d2cwYkpPVEFRT21FdndMQ0RVdVRiNnkzM1J3REFBQUFBQUFBQUFBQURJdHdRd0dFSEJpSWs3NnA5NTJzMVJCdVdJcmYrcWIrTUlMWEFRQUFBQUFBQUFBQUFEQTV3ZzBGcWRvdWQ4UGZtL282VUp5enZxbDNuWmJWRW01NEVNRWJBQUFBQUFBQUFBQUFnSUg3eFFrc1J5N083WnU2eW9XNlUxOExpdkFscGZSWXNJR0NkZkVlRld3QUFBQUFBQUFBQUFBQUdEaVRHd3Bta2dNYmNwbFMydTJiK3R3SldCK1RHeGJpUFFvQUFBQUFBQUFBQUFBd01zSU5BeURrd0JxOTdwdjYySUt2bjNERG5YbVBBZ0FBQUFBQUFBQUFBSXlRY01PQUNEbXdRaWQ5VSs5YjRNMFJicmpWeDc2cFh4VitqQUFBQUFBQUFBQUFBQURjMHk4V2JqaHk4WG5mMUZVdVJKLzZXckEwWFVycHNXQURCYnVNOTZoZ0F3QUFBQUFBQUFBQUFNQ0ltZHd3WUNZNThBQzVZSHluYitvTGkxZ0dreHZtZXRFMzlXbUJ4d1VBQUFBQUFBQUFBQURBa2drM2pJQ1FBd3RTTUY0ZzRZYnZ2T3ViK3FDZzR3RUFBQUFBQUFBQUFBQmd4WVFiUmtUSWdWdjgwVGYxa1VVcWszRERQN3FVMG03ZjFOOEtPQllBQUFBQUFBQUFBQUFBMWtpNFlZU3F0c3Nkei8rYytqcnduNU8rcWZjdFI5a21IbTY0akZERGVRSEhBZ0FBQUFBQUFBQUFBTUFHQ0RlTVdOVjJ1YUQ5L2RUWFljSjB3UitRQ1ljYlh2ZE5mVnpBY1FBQUFBQUFBQUFBQUFDd1FjSU5FeURrTURtNjRBL1FCTU1OSm9vQUFBQUFBQUFBQUFBQThCL2hoZ2tSY3BnRVhmQUhha0xoQmhORkFBQUFBQUFBQUFBQUFQaUpjTU1FVlczM0txV1VDK0FmVFgwdFJ1UmQzOVFIVTErRUladEF1TUZFRVFBQUFBQUFBQUFBQUFDdTlhdWxtWjYrcVQra2xMYXF0dHRKS1owS09RemF4NzZwWDAxOUVTaWVpU0lBQUFBQUFBQUFBQUFBM0VpNFljS2lnN3FRd3pCMTBRWC8yOVFYZ3FLZDlFMjk3eFFCQUFBQUFBQUFBQUFBY0J2aEJxNkdITFlpNUZCYmxXSmRScWpoZk9vTFFkR0Vid0FBQUFBQUFBQUFBQUJZaUhBRC80bEM1QjBoaDJLOTdwdjZlT3FMUU5GeStHYW5iK29McHdrQUFBQUFBQUFBQUFDQVJRZzM4Sk1mUWc2NW1QNmxWZHFvazc2cDl5ZjgraG1HRjMxVG56cFhBQUFBQUFBQUFBQUFBTnlIY0FQWGlwRERxL3ovcjlvdWh4ejJyTlphZFNtbDNUZ1BVQ29UUlFBQUFBQUFBQUFBQUFCNHNLcnZlNnZJblZWdGQ1aFNlbVBGVnVveXBiUXQxREF0VmR2bHFRZlBCL1NpVFJRQkFBQUFBQUFBQUFBQVlHbUVHN2lYcXUxeVVmTjdxN2Qwei9xbVBoL1phK0lPQmhSdU1GRUVBQUFBQUFBQUFBQUFnS1VUYnVCQnFyYmJTU25sb3V4SFZ2SkJYdmROZlR6ZzQrZUJCaEJ1dUl4UWcvQU5BQUFBQUFBQUFBQUFBRXYzcXlYbElhTFFlVXZJNGQ1TytxYmVIK2l4TXgwditxWStkYjRCQUFBQUFBQUFBQUFBV0JYaEJwYmlTc2hoSzBJT3RaVzlVUmRkOEw4VmZJeGdvZ2dBQUFBQUFBQUFBQUFBYXlIY3dGSkZzWDZlNHBDcXRzdEYwWHRXK0R1WEVXbzRMK2lZNEVjbWlnQUFBQUFBQUFBQUFBQ3dWbFhmOTFhY2xhcmE3aWlsOUx0VlRyLzFUZjJoZ09PZ1FGWGI1WWtuenpkOFpCLzdwbjVWNUFJQkFBQUFBQUFBQUFBQU1HcS9PTDJzV3QvVUIzMVRWeW1sMXhOZDdMZjU5UXMyVUxBdXBmUllzQUVBQUFBQUFBQUFBQUNBVFRHNWdiV3IybTRucFpTNzFEOGErZXFmOUUyOVg4QnhNQUFibXR4d21WTGE2WnY2d25zRUFBQUFBQUFBQUFBQWdFMzYxZXF6Ym4xVG42ZVV0cXEyMjRxUVF6MnlrNUM3NE8vMlRmMnRnR09CZVM3alBYcHVkUUFBQUFBQUFBQUFBQUFvZ1hBREd4UEYvM21LUSs1YWY1eFMyaHY0MlZBd3poQTg4eDRGQUFBQUFBQUFBQUFBb0RSVjMvZE9Dc1dvMnU0Z3BmVG5BTS9JNjc2cGp3czREZ2FxYXJzOHhlVDVDby9lZXhRQUFBQUFBQUFBQUFDQVlnazNVS1NxN1haVFNoOVNTbzhLUDBNbmZWUHZGM0FjRE53S3d3MUNEUUFBQUFBQUFBQUFBQUFVNzFlbmlCTDFUWjBMdmJlcXR0dU9rRU5kMkdGMmZWUHZGSEFjY0IyaEJnQUFBQUFBQUFBQUFBQUdRN2lCb3ZWTmZaRlMycW5hYml1bGRKUlMydHZ3OFg3Sng5TTM5YmZDbDQ3cEVtb0FBQUFBQUFBQUFBQUFZSENxdnUrZE5RYWxhcnVEbE5LZmF6N215NVRTYnQvVTU5NHRyRUxWZG5sYXlmTUgvRmNMTlFBQUFBQUFBQUFBQUFBd1dNSU5ERmJWZGpzcHBWd1EvbWpGcjBIUk9DdjNnSENEOXljQUFBQUFBQUFBQUFBQWcvZXJVOGhReFJTRnJhcnR0aUxrVUMvNXBaejBUYjN2RFVLaGhCb0FBQUFBQUFBQUFBQUFHQTNoQmdhdmIrcHZLYVU4eFNGM3Y4L0YzbnNQZkUxZFNtazMvbnVoSkpjcHBWZDlVNTg2S3dBQUFBQUFBQUFBQUFDTVNkWDN2UlBLNkZSdGx5Y3VIS1dVSGkzdzJpNGoxSER1SGNHNlZXMlhBd3ZQci9uSGVtOENBQUFBQUFBQUFBQUFNR3JDRFl4YTFYWjVva09lNWxEZjhqcGY2SWJQSmwwVGJqaUxTUTJtaUFBQUFBQUFBQUFBQUFBd2FyODZ2WXhaZExyUEFZZGNQSjVERG5zL3ZOdy8rcVkrOGlhZ01ONlhBQUFBQUFBQUFBQUFBRXlLeVExTVR0VjIrem53MERmMWdiTlBLYXEyTzh4VFJ2cW12bkJTQUFBQUFBQUFBQUFBQUppVWxOTC9BUFNTbXVoUzR4QTdBQUFBQUVsRlRrU3VRbUNDIn0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDctMjkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJIeXBlciBGSURPIFBybyIsImNlcnRpZmljYXRlTnVtYmVyIjoiVTJGMDAwMjAyNTA3MjkwMDIiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblByb2ZpbGVzIjpbImNvbnN1bWVyIl0sImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDctMjkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MX1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNi0wMS0wNiJ9LHsiYWFndWlkIjoiNGUyZGRiYzItMjY4Ny00NzA5LTg1NTEtY2I2NmM5Nzc2YmZlIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI0ZTJkZGJjMi0yNjg3LTQ3MDktODU1MS1jYjY2Yzk3NzZiZmUiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiU0VDT1JBIElEIFYyIEZJRE8yLjEgTDEifSwiZGVzY3JpcHRpb24iOiJTRUNPUkEgSUQgVjIgRklETzIuMSBMMSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX0seyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQ0F6Q0NBYW1nQXdJQkFnSUpBSlBJQ3VwM0JqVXJNQW9HQ0NxR1NNNDlCQU1DTUhZeEN6QUpCZ05WQkFZVEFrUkZNU0V3SHdZRFZRUUtFeGhKYm1acGJtVnZiaUJVWldOb2JtOXNiMmRwWlhNZ1FVY3hLVEFuQmdOVkJBc1RJRU5CSUdadmNpQkJkWFJvWlc1MGFXTmhkRzl5SUVGMGRHVnpkR0YwYVc5dU1Sa3dGd1lEVlFRREV4QkpibVpwYm1WdmJpQkdTVVJQSUVOQk1CNFhEVEkwTVRBd01URTNNakl6TkZvWERUTTBNVEF3TVRFM01qSXpORm93ZGpFTE1Ba0dBMVVFQmhNQ1JFVXhJVEFmQmdOVkJBb1RHRWx1Wm1sdVpXOXVJRlJsWTJodWIyeHZaMmxsY3lCQlJ6RXBNQ2NHQTFVRUN4TWdRMEVnWm05eUlFRjFkR2hsYm5ScFkyRjBiM0lnUVhSMFpYTjBZWFJwYjI0eEdUQVhCZ05WQkFNVEVFbHVabWx1Wlc5dUlFWkpSRThnUTBFd1dUQVRCZ2NxaGtqT1BRSUJCZ2dxaGtqT1BRTUJCd05DQUFSMnhqK0t5U2tKZTl4OWtkQWNyUWFjYjArajhwK0plU01VcTJETm5zbmNEcitEZ0Zab2ZIN0xsRHFlNHlsWTU5eDN5dDB5VVA1MjJ2bW5CTDR0MGtLSW95QXdIakFMQmdOVkhROEVCQU1DQWdRd0R3WURWUjBUQkFnd0JnRUIvd0lCQURBS0JnZ3Foa2pPUFFRREFnTklBREJGQWlFQTNFMTB5bGx0M3M4K21YNlBiUUxBVzZXWm9yd2hCTVp0dTFnSUIyTHJ6UGNDSUhmcWtPVkRqU1NBdUFzVm91WEc1YjVLZCtocDM2VVh4ZnFodWd6ckJQNlciXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFCZHdBQUFLUUNBWUFBQUNGQ0xqOUFBQUFDWEJJV1hNQUFDNGpBQUF1SXdGNHBUOTJBQUFLVDJsRFExQlFhRzkwYjNOb2IzQWdTVU5ESUhCeWIyWnBiR1VBQUhqYW5WTm5WRlBwRmozMzN2UkNTNGlBbEV0dlVoVUlJRkpDaTRBVWtTWXFJUWtRU29naG9ka1ZVY0VSUlVVRUc4aWdpQU9Pam9DTUZWRXNESW9LMkFma0lhS09nNk9JaXNyNzRYdWphOWE4OStiTi9yWFhQdWVzODUyenp3ZkFDQXlXU0ROUk5ZQU1xVUllRWVDRHg4VEc0ZVF1UUlFS0pIQUFFQWl6WkNGei9TTUJBUGgrUER3cklzQUh2Z0FCZU5NTENBREFUWnZBTUJ5SC93L3FRcGxjQVlDRUFjQjBrVGhMQ0lBVUFFQjZqa0ttQUVCR0FZQ2RtQ1pUQUtBRUFHRExZMkxqQUZBdEFHQW5mK2JUQUlDZCtKbDdBUUJibENFVkFhQ1JBQ0FUWlloRUFHZzdBS3pQVm9wRkFGZ3dBQlJtUzhRNUFOZ3RBREJKVjJaSUFMQzNBTURPRUF1eUFBZ01BREJSaUlVcEFBUjdBR0RJSXlONEFJU1pBQlJHOGxjODhTdXVFT2NxQUFCNG1iSTh1U1E1UllGYkNDMXhCMWRYTGg0b3pra1hLeFEyWVFKaG1rQXV3bm1aR1RLQk5BL2c4OHdBQUtDUkZSSGdnL1A5ZU00T3JzN09ObzYyRGw4dDZyOEcveUppWXVQKzVjK3JjRUFBQU9GMGZ0SCtMQyt6R29BN0JvQnQvcUlsN2dSb1hndWdkZmVMWnJJUFFMVUFvT25hVi9OdytINDhQRVdoa0xuWjJlWGs1TmhLeEVKYlljcFhmZjVud2wvQVYvMXMrWDQ4L1BmMTRMN2lKSUV5WFlGSEJQamd3c3owVEtVY3o1SUpoR0xjNW85SC9MY0wvL3dkMHlMRVNXSzVXQ29VNDFFU2NZNUVtb3p6TXFVaWlVS1NLY1VsMHY5azR0OHMrd00rM3pVQXNHbytBWHVSTGFoZFl3UDJTeWNRV0hUQTR2Y0FBUEs3YjhIVUtBZ0RnR2lENGM5My8rOC8vVWVnSlFDQVprbVNjUUFBWGtRa0xsVEtzei9IQ0FBQVJLQ0JLckJCRy9UQkdDekFCaHpCQmR6QkMveGdOb1JDSk1UQ1FoQkNDbVNBSEhKZ0theUNRaWlHemJBZEttQXYxRUFkTk1CUmFJYVRjQTR1d2xXNERqMXdEL3BoQ0o3QktMeUJDUVJCeUFnVFlTSGFpQUZpaWxnampnZ1htWVg0SWNGSUJCS0xKQ0RKaUJSUklrdVJOVWd4VW9wVUlGVklIZkk5Y2dJNWgxeEd1cEU3eUFBeWd2eUd2RWN4bElHeVVUM1VETFZEdWFnM0dvUkdvZ3ZRWkhReG1vOFdvSnZRY3JRYVBZdzJvZWZRcTJnUDJvOCtROGN3d09nWUJ6UEViREF1eHNOQ3NUZ3NDWk5qeTdFaXJBeXJ4aHF3VnF3RHU0bjFZOCt4ZHdRU2dVWEFDVFlFZDBJZ1lSNUJTRmhNV0U3WVNLZ2dIQ1EwRWRvSk53a0RoRkhDSnlLVHFFdTBKcm9SK2NRWVlqSXhoMWhJTENQV0VvOFRMeEI3aUVQRU55UVNpVU15SjdtUUFrbXhwRlRTRXRKRzBtNVNJK2tzcVpzMFNCb2prOG5hWkd1eUJ6bVVMQ0FyeUlYa25lVEQ1RFBrRytRaDhsc0tuV0pBY2FUNFUrSW9Vc3BxU2hubEVPVTA1UVpsbURKQlZhT2FVdDJvb1ZRUk5ZOWFRcTJodGxLdlVZZW9FelIxbWpuTmd4WkpTNld0b3BYVEdtZ1hhUGRwcitoMHVoSGRsUjVPbDlCWDBzdnBSK2lYNkFQMGR3d05oaFdEeDRobktCbWJHQWNZWnhsM0dLK1lUS1laMDRzWngxUXdOekhybU9lWkQ1bHZWVmdxdGlwOEZaSEtDcFZLbFNhVkd5b3ZWS21xcHFyZXFndFY4MVhMVkkrcFhsTjlya1pWTTFQanFRblVscXRWcXAxUTYxTWJVMmVwTzZpSHFtZW9iMVEvcEg1Wi9Za0dXY05NdzA5RHBGR2dzVi9qdk1ZZ0MyTVpzM2dzSVdzTnE0WjFnVFhFSnJITjJYeDJLcnVZL1IyN2l6MnFxYUU1UXpOS00xZXpVdk9VWmo4SDQ1aHgrSngwVGdubktLZVg4MzZLM2hUdktlSXBHNlkwVExreFpWeHJxcGFYbGxpclNLdFJxMGZydlRhdTdhZWRwcjFGdTFuN2dRNUJ4MG9uWENkSFo0L09CWjNuVTlsVDNhY0tweFpOUFRyMXJpNnFhNlVib2J0RWQ3OXVwKzZZbnI1ZWdKNU1iNmZlZWIzbitoeDlMLzFVL1czNnAvVkhERmdHc3d3a0J0c016aGc4eFRWeGJ6d2RMOGZiOFZGRFhjTkFRNlZobFdHWDRZU1J1ZEU4bzlWR2pVWVBqR25HWE9NazQyM0diY2FqSmdZbUlTWkxUZXBON3BwU1RibW1LYVk3VER0TXg4M016YUxOMXBrMW16MHgxekxubStlYjE1dmZ0MkJhZUZvc3RxaTJ1R1ZKc3VSYXBsbnV0cnh1aFZvNVdhVllWVnBkczBhdG5hMGwxcnV0dTZjUnA3bE9rMDZybnRabnc3RHh0c20ycWJjWnNPWFlCdHV1dG0yMmZXRm5ZaGRudDhXdXcrNlR2Wk45dW4yTi9UMEhEWWZaRHFzZFdoMStjN1J5RkRwV090NmF6cHp1UDMzRjlKYnBMMmRZenhEUDJEUGp0aFBMS2NScG5WT2IwMGRuRjJlNWM0UHppSXVKUzRMTExwYytMcHNieHQzSXZlUktkUFZ4WGVGNjB2V2RtN09id3UybzI2L3VOdTVwN29mY244dzBueW1lV1ROejBNUElRK0JSNWRFL0M1K1ZNR3Zmckg1UFEwK0JaN1huSXk5akw1RlhyZGV3dDZWM3F2ZGg3eGMrOWo1eW4rTSs0enczM2pMZVdWL01OOEMzeUxmTFQ4TnZubCtGMzBOL0kvOWsvM3IvMFFDbmdDVUJad09KZ1VHQld3TDcrSHA4SWIrT1B6cmJaZmF5MmUxQmpLQzVRUlZCajRLdGd1WEJyU0ZveU95UXJTSDM1NWpPa2M1cERvVlFmdWpXMEFkaDVtR0x3MzRNSjRXSGhWZUdQNDV3aUZnYTBUR1hOWGZSM0VOejMwVDZSSlpFM3B0bk1VODVyeTFLTlNvK3FpNXFQTm8zdWpTNlA4WXVabG5NMVZpZFdFbHNTeHc1TGlxdU5tNXN2dC84N2ZPSDRwM2lDK043RjVndnlGMXdlYUhPd3ZTRnB4YXBMaElzT3BaQVRJaE9PSlR3UVJBcXFCYU1KZklUZHlXT0NubkNIY0puSWkvUk50R0kyRU5jS2g1TzhrZ3FUWHFTN0pHOE5Ya2t4VE9sTE9XNWhDZXBrTHhNRFV6ZG16cWVGcHAySUcweVBUcTlNWU9Ta1pCeFFxb2hUWk8yWitwbjVtWjJ5NnhsaGJMK3hXNkx0eThlbFFmSmE3T1FyQVZaTFFxMlFxYm9WRm9vMXlvSHNtZGxWMmEvelluS09aYXJuaXZON2N5enl0dVFONXp2bi8vdEVzSVM0WksycFlaTFZ5MGRXT2E5ckdvNXNqeHhlZHNLNHhVRks0WldCcXc4dUlxMkttM1ZUNnZ0VjVldWZyMG1lazFyZ1Y3QnlvTEJ0UUZyNnd0VkN1V0ZmZXZjMSsxZFQxZ3ZXZCsxWWZxR25ScytGWW1LcmhUYkY1Y1ZmOWdvM0hqbEc0ZHZ5citaM0pTMHFhdkV1V1RQWnRKbTZlYmVMWjViRHBhcWwrYVhEbTROMmRxMERkOVd0TzMxOWtYYkw1Zk5LTnU3ZzdaRHVhTy9QTGk4WmFmSnpzMDdQMVNrVlBSVStsUTI3dExkdFdIWCtHN1I3aHQ3dlBZMDdOWGJXN3ozL1Q3SnZ0dFZBVlZOMVdiVlpmdEorN1AzUDY2SnF1bjRsdnR0WGExT2JYSHR4d1BTQS8wSEl3NjIxN25VMVIzU1BWUlNqOVlyNjBjT3h4KysvcDN2ZHkwTk5nMVZqWnpHNGlOd1JIbms2ZmNKMy9jZURUcmFkb3g3ck9FSDB4OTJIV2NkTDJwQ212S2FScHRUbXZ0YllsdTZUOHcrMGRicTNucjhSOXNmRDV3MFBGbDVTdk5VeVduYTZZTFRrMmZ5ejR5ZGxaMTlmaTc1M0dEYm9yWjc1MlBPMzJvUGIrKzZFSFRoMGtYL2krYzd2RHZPWFBLNGRQS3kyK1VUVjdoWG1xODZYMjNxZE9vOC9wUFRUOGU3bkx1YXJybGNhN251ZXIyMWUyYjM2UnVlTjg3ZDlMMTU4UmIvMXRXZU9UM2R2Zk42Yi9mRjkvWGZGdDErY2lmOXpzdTcyWGNuN3EyOFQ3eGY5RUR0UWRsRDNZZlZQMXYrM05qdjNIOXF3SGVnODlIY1IvY0doWVBQL3BIMWp3OURCWStaajh1R0RZYnJuamcrT1RuaVAzTDk2ZnluUTg5a3p5YWVGLzZpL3N1dUZ4WXZmdmpWNjlmTzBaalJvWmZ5bDVPL2JYeWwvZXJBNnhtdjI4YkN4aDYreVhnek1WNzBWdnZ0d1hmY2R4M3ZvOThQVCtSOElIOG8vMmo1c2ZWVDBLZjdreG1Uay84RUE1anovR016TGRzQUFGSWJhVlJZZEZoTlREcGpiMjB1WVdSdlltVXVlRzF3QUFBQUFBQThQM2h3WVdOclpYUWdZbVZuYVc0OUl1Kzd2eUlnYVdROUlsYzFUVEJOY0VObGFHbEllbkpsVTNwT1ZHTjZhMk01WkNJL1BnbzhlRHA0YlhCdFpYUmhJSGh0Ykc1ek9uZzlJbUZrYjJKbE9tNXpPbTFsZEdFdklpQjRPbmh0Y0hSclBTSkJaRzlpWlNCWVRWQWdRMjl5WlNBMUxqVXRZekF4TkNBM09TNHhOVEUwT0RFc0lESXdNVE12TURNdk1UTXRNVEk2TURrNk1UVWdJQ0FnSUNBZ0lDSStDaUFnSUR4eVpHWTZVa1JHSUhodGJHNXpPbkprWmowaWFIUjBjRG92TDNkM2R5NTNNeTV2Y21jdk1UazVPUzh3TWk4eU1pMXlaR1l0YzNsdWRHRjRMVzV6SXlJK0NpQWdJQ0FnSUR4eVpHWTZSR1Z6WTNKcGNIUnBiMjRnY21SbU9tRmliM1YwUFNJaUNpQWdJQ0FnSUNBZ0lDQWdJSGh0Ykc1ek9uaHRjRDBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5NFlYQXZNUzR3THlJS0lDQWdJQ0FnSUNBZ0lDQWdlRzFzYm5NNlpHTTlJbWgwZEhBNkx5OXdkWEpzTG05eVp5OWtZeTlsYkdWdFpXNTBjeTh4TGpFdklnb2dJQ0FnSUNBZ0lDQWdJQ0I0Yld4dWN6cDRiWEJOVFQwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOTRZWEF2TVM0d0wyMXRMeUlLSUNBZ0lDQWdJQ0FnSUNBZ2VHMXNibk02YzNSRmRuUTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl6Vkhsd1pTOVNaWE52ZFhKalpVVjJaVzUwSXlJS0lDQWdJQ0FnSUNBZ0lDQWdlRzFzYm5NNmMzUlNaV1k5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5elZIbHdaUzlTWlhOdmRYSmpaVkpsWmlNaUNpQWdJQ0FnSUNBZ0lDQWdJSGh0Ykc1ek9uaHRjRlJRWnowaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOTRZWEF2TVM0d0wzUXZjR2N2SWdvZ0lDQWdJQ0FnSUNBZ0lDQjRiV3h1Y3pwemRFUnBiVDBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5NFlYQXZNUzR3TDNOVWVYQmxMMFJwYldWdWMybHZibk1qSWdvZ0lDQWdJQ0FnSUNBZ0lDQjRiV3h1Y3pwNGJYQkhQU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2Wnk4aUNpQWdJQ0FnSUNBZ0lDQWdJSGh0Ykc1ek9uQm9iM1J2YzJodmNEMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzl3YUc5MGIzTm9iM0F2TVM0d0x5SUtJQ0FnSUNBZ0lDQWdJQ0FnZUcxc2JuTTZkR2xtWmowaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOTBhV1ptTHpFdU1DOGlDaUFnSUNBZ0lDQWdJQ0FnSUhodGJHNXpPbVY0YVdZOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZaWGhwWmk4eExqQXZJajRLSUNBZ0lDQWdJQ0FnUEhodGNEcE5aWFJoWkdGMFlVUmhkR1UrTWpBeE15MHhNQzB3TjFReE56bzBPRG8xT1Nzd01qb3dNRHd2ZUcxd09rMWxkR0ZrWVhSaFJHRjBaVDRLSUNBZ0lDQWdJQ0FnUEhodGNEcERjbVZoZEdWRVlYUmxQakl3TVRFdE1EY3RNRGRVTVRjNk16UTZOVFFyTURJNk1EQThMM2h0Y0RwRGNtVmhkR1ZFWVhSbFBnb2dJQ0FnSUNBZ0lDQThlRzF3T2sxdlpHbG1lVVJoZEdVK01qQXhNeTB4TUMwd04xUXhOem8wT0RvMU9Tc3dNam93TUR3dmVHMXdPazF2WkdsbWVVUmhkR1UrQ2lBZ0lDQWdJQ0FnSUR4NGJYQTZRM0psWVhSdmNsUnZiMncrUVdSdlltVWdVR2h2ZEc5emFHOXdJRU5ESUNoTllXTnBiblJ2YzJncFBDOTRiWEE2UTNKbFlYUnZjbFJ2YjJ3K0NpQWdJQ0FnSUNBZ0lEeGtZenBtYjNKdFlYUSthVzFoWjJVdmNHNW5QQzlrWXpwbWIzSnRZWFErQ2lBZ0lDQWdJQ0FnSUR4NGJYQk5UVHBQY21sbmFXNWhiRVJ2WTNWdFpXNTBTVVErZUcxd0xtUnBaRG93TWpnd01URTNOREEzTWpBMk9ERXhPRGN4UmtRNU9VSkdOakJEUXpFMFJEd3ZlRzF3VFUwNlQzSnBaMmx1WVd4RWIyTjFiV1Z1ZEVsRVBnb2dJQ0FnSUNBZ0lDQThlRzF3VFUwNlNXNXpkR0Z1WTJWSlJENTRiWEF1YVdsa09tVm1ObVpoT0dJeExXVXhaakl0TkRjd05DMDROMlkzTFRVME5qVTNZakl4TVRNd01qd3ZlRzF3VFUwNlNXNXpkR0Z1WTJWSlJENEtJQ0FnSUNBZ0lDQWdQSGh0Y0UxTk9rUnZZM1Z0Wlc1MFNVUStlRzF3TG1ScFpEcGxaVFkxTURGaU9TMDFOemszTFRSbFlqWXRZbVZtWXkweE56VXpabU13TldNME9XVThMM2h0Y0UxTk9rUnZZM1Z0Wlc1MFNVUStDaUFnSUNBZ0lDQWdJRHg0YlhCTlRUcElhWE4wYjNKNVBnb2dJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9sTmxjVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FTQnlaR1k2Y0dGeWMyVlVlWEJsUFNKU1pYTnZkWEpqWlNJK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHpkRVYyZERwaFkzUnBiMjQrWTI5dWRtVnlkR1ZrUEM5emRFVjJkRHBoWTNScGIyNCtDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh6ZEVWMmREcHdZWEpoYldWMFpYSnpQbVp5YjIwZ1lYQndiR2xqWVhScGIyNHZjRzl6ZEhOamNtbHdkQ0IwYnlCaGNIQnNhV05oZEdsdmJpOTJibVF1WVdSdlltVXVhV3hzZFhOMGNtRjBiM0k4TDNOMFJYWjBPbkJoY21GdFpYUmxjbk0rQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHd2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cElISmtaanB3WVhKelpWUjVjR1U5SWxKbGMyOTFjbU5sSWo0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BITjBSWFowT21GamRHbHZiajV6WVhabFpEd3ZjM1JGZG5RNllXTjBhVzl1UGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGMzUkZkblE2YVc1emRHRnVZMlZKUkQ1NGJYQXVhV2xrT2pBeU9EQXhNVGMwTURjeU1EWTRNVEU0TnpGR1JEazVRa1kyTUVORE1UUkVQQzl6ZEVWMmREcHBibk4wWVc1alpVbEVQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4YzNSRmRuUTZkMmhsYmo0eU1ERXhMVEEzTFRBM1ZERTNPak0wT2pVMEt6QXlPakF3UEM5emRFVjJkRHAzYUdWdVBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjM1JGZG5RNmMyOW1kSGRoY21WQloyVnVkRDVCWkc5aVpTQkpiR3gxYzNSeVlYUnZjaUJEVXpROEwzTjBSWFowT25OdlpuUjNZWEpsUVdkbGJuUStDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh6ZEVWMmREcGphR0Z1WjJWa1BpODhMM04wUlhaME9tTm9ZVzVuWldRK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBJSEprWmpwd1lYSnpaVlI1Y0dVOUlsSmxjMjkxY21ObElqNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSE4wUlhaME9tRmpkR2x2Ymo1amIyNTJaWEowWldROEwzTjBSWFowT21GamRHbHZiajRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhOMFJYWjBPbkJoY21GdFpYUmxjbk0rWm5KdmJTQmhjSEJzYVdOaGRHbHZiaTl3YjNOMGMyTnlhWEIwSUhSdklHRndjR3hwWTJGMGFXOXVMM1p1WkM1aFpHOWlaUzVwYkd4MWMzUnlZWFJ2Y2p3dmMzUkZkblE2Y0dGeVlXMWxkR1Z5Y3o0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHa2djbVJtT25CaGNuTmxWSGx3WlQwaVVtVnpiM1Z5WTJVaVBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjM1JGZG5RNllXTjBhVzl1UG1OdmJuWmxjblJsWkR3dmMzUkZkblE2WVdOMGFXOXVQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4YzNSRmRuUTZjR0Z5WVcxbGRHVnljejVtY205dElHRndjR3hwWTJGMGFXOXVMM0J2YzNSelkzSnBjSFFnZEc4Z1lYQndiR2xqWVhScGIyNHZkbTVrTG1Ga2IySmxMbWxzYkhWemRISmhkRzl5UEM5emRFVjJkRHB3WVhKaGJXVjBaWEp6UGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FTQnlaR1k2Y0dGeWMyVlVlWEJsUFNKU1pYTnZkWEpqWlNJK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHpkRVYyZERwaFkzUnBiMjQrWTI5dWRtVnlkR1ZrUEM5emRFVjJkRHBoWTNScGIyNCtDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh6ZEVWMmREcHdZWEpoYldWMFpYSnpQbVp5YjIwZ1lYQndiR2xqWVhScGIyNHZjRzl6ZEhOamNtbHdkQ0IwYnlCaGNIQnNhV05oZEdsdmJpOTJibVF1WVdSdlltVXVhV3hzZFhOMGNtRjBiM0k4TDNOMFJYWjBPbkJoY21GdFpYUmxjbk0rQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHd2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cElISmtaanB3WVhKelpWUjVjR1U5SWxKbGMyOTFjbU5sSWo0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BITjBSWFowT21GamRHbHZiajVqYjI1MlpYSjBaV1E4TDNOMFJYWjBPbUZqZEdsdmJqNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSE4wUlhaME9uQmhjbUZ0WlhSbGNuTStabkp2YlNCaGNIQnNhV05oZEdsdmJpOXdiM04wYzJOeWFYQjBJSFJ2SUdGd2NHeHBZMkYwYVc5dUwzWnVaQzVoWkc5aVpTNXdhRzkwYjNOb2IzQThMM04wUlhaME9uQmhjbUZ0WlhSbGNuTStDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEd3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwSUhKa1pqcHdZWEp6WlZSNWNHVTlJbEpsYzI5MWNtTmxJajRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhOMFJYWjBPbUZqZEdsdmJqNXpZWFpsWkR3dmMzUkZkblE2WVdOMGFXOXVQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4YzNSRmRuUTZhVzV6ZEdGdVkyVkpSRDU0YlhBdWFXbGtPbVZsTmpVd01XSTVMVFUzT1RjdE5HVmlOaTFpWldaakxURTNOVE5tWXpBMVl6UTVaVHd2YzNSRmRuUTZhVzV6ZEdGdVkyVkpSRDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhOMFJYWjBPbmRvWlc0K01qQXhNeTB4TUMwd04xUXhOem8wT0RvMU9Tc3dNam93TUR3dmMzUkZkblE2ZDJobGJqNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSE4wUlhaME9uTnZablIzWVhKbFFXZGxiblErUVdSdlltVWdVR2h2ZEc5emFHOXdJRU5ESUNoTllXTnBiblJ2YzJncFBDOXpkRVYyZERwemIyWjBkMkZ5WlVGblpXNTBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4YzNSRmRuUTZZMmhoYm1kbFpENHZQQzl6ZEVWMmREcGphR0Z1WjJWa1Bnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhU0J5WkdZNmNHRnljMlZVZVhCbFBTSlNaWE52ZFhKalpTSStDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh6ZEVWMmREcGhZM1JwYjI0K1kyOXVkbVZ5ZEdWa1BDOXpkRVYyZERwaFkzUnBiMjQrQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4emRFVjJkRHB3WVhKaGJXVjBaWEp6UG1aeWIyMGdZWEJ3YkdsallYUnBiMjR2Y0c5emRITmpjbWx3ZENCMGJ5QnBiV0ZuWlM5d2JtYzhMM04wUlhaME9uQmhjbUZ0WlhSbGNuTStDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEd3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwSUhKa1pqcHdZWEp6WlZSNWNHVTlJbEpsYzI5MWNtTmxJajRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhOMFJYWjBPbUZqZEdsdmJqNWtaWEpwZG1Wa1BDOXpkRVYyZERwaFkzUnBiMjQrQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4emRFVjJkRHB3WVhKaGJXVjBaWEp6UG1OdmJuWmxjblJsWkNCbWNtOXRJR0Z3Y0d4cFkyRjBhVzl1TDNadVpDNWhaRzlpWlM1d2FHOTBiM05vYjNBZ2RHOGdhVzFoWjJVdmNHNW5QQzl6ZEVWMmREcHdZWEpoYldWMFpYSnpQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVNCeVpHWTZjR0Z5YzJWVWVYQmxQU0pTWlhOdmRYSmpaU0krQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4emRFVjJkRHBoWTNScGIyNCtjMkYyWldROEwzTjBSWFowT21GamRHbHZiajRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhOMFJYWjBPbWx1YzNSaGJtTmxTVVErZUcxd0xtbHBaRHBsWmpabVlUaGlNUzFsTVdZeUxUUTNNRFF0T0RkbU55MDFORFkxTjJJeU1URXpNREk4TDNOMFJYWjBPbWx1YzNSaGJtTmxTVVErQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4emRFVjJkRHAzYUdWdVBqSXdNVE10TVRBdE1EZFVNVGM2TkRnNk5Ua3JNREk2TURBOEwzTjBSWFowT25kb1pXNCtDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh6ZEVWMmREcHpiMlowZDJGeVpVRm5aVzUwUGtGa2IySmxJRkJvYjNSdmMyaHZjQ0JEUXlBb1RXRmphVzUwYjNOb0tUd3ZjM1JGZG5RNmMyOW1kSGRoY21WQloyVnVkRDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhOMFJYWjBPbU5vWVc1blpXUStMend2YzNSRmRuUTZZMmhoYm1kbFpENEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJRHd2Y21SbU9sTmxjVDRLSUNBZ0lDQWdJQ0FnUEM5NGJYQk5UVHBJYVhOMGIzSjVQZ29nSUNBZ0lDQWdJQ0E4ZUcxd1RVMDZSR1Z5YVhabFpFWnliMjBnY21SbU9uQmhjbk5sVkhsd1pUMGlVbVZ6YjNWeVkyVWlQZ29nSUNBZ0lDQWdJQ0FnSUNBOGMzUlNaV1k2YVc1emRHRnVZMlZKUkQ1NGJYQXVhV2xrT21WbE5qVXdNV0k1TFRVM09UY3ROR1ZpTmkxaVpXWmpMVEUzTlRObVl6QTFZelE1WlR3dmMzUlNaV1k2YVc1emRHRnVZMlZKUkQ0S0lDQWdJQ0FnSUNBZ0lDQWdQSE4wVW1WbU9tUnZZM1Z0Wlc1MFNVUStlRzF3TG1ScFpEcGxaVFkxTURGaU9TMDFOemszTFRSbFlqWXRZbVZtWXkweE56VXpabU13TldNME9XVThMM04wVW1WbU9tUnZZM1Z0Wlc1MFNVUStDaUFnSUNBZ0lDQWdJQ0FnSUR4emRGSmxaanB2Y21sbmFXNWhiRVJ2WTNWdFpXNTBTVVErZUcxd0xtUnBaRG93TWpnd01URTNOREEzTWpBMk9ERXhPRGN4UmtRNU9VSkdOakJEUXpFMFJEd3ZjM1JTWldZNmIzSnBaMmx1WVd4RWIyTjFiV1Z1ZEVsRVBnb2dJQ0FnSUNBZ0lDQThMM2h0Y0UxTk9rUmxjbWwyWldSR2NtOXRQZ29nSUNBZ0lDQWdJQ0E4ZUcxd1ZGQm5Pa2hoYzFacGMybGliR1ZQZG1WeWNISnBiblErUm1Gc2MyVThMM2h0Y0ZSUVp6cElZWE5XYVhOcFlteGxUM1psY25CeWFXNTBQZ29nSUNBZ0lDQWdJQ0E4ZUcxd1ZGQm5Pa2hoYzFacGMybGliR1ZVY21GdWMzQmhjbVZ1WTNrK1JtRnNjMlU4TDNodGNGUlFaenBJWVhOV2FYTnBZbXhsVkhKaGJuTndZWEpsYm1ONVBnb2dJQ0FnSUNBZ0lDQThlRzF3VkZCbk9rNVFZV2RsY3o0eFBDOTRiWEJVVUdjNlRsQmhaMlZ6UGdvZ0lDQWdJQ0FnSUNBOGVHMXdWRkJuT2sxaGVGQmhaMlZUYVhwbElISmtaanB3WVhKelpWUjVjR1U5SWxKbGMyOTFjbU5sSWo0S0lDQWdJQ0FnSUNBZ0lDQWdQSE4wUkdsdE9uYytNakE1TGprNU9Ua3lOend2YzNSRWFXMDZkejRLSUNBZ0lDQWdJQ0FnSUNBZ1BITjBSR2x0T21nK01qazJMams1T1RrMk1qd3ZjM1JFYVcwNmFENEtJQ0FnSUNBZ0lDQWdJQ0FnUEhOMFJHbHRPblZ1YVhRK1RXbHNiR2x0WlhSbGNuTThMM04wUkdsdE9uVnVhWFErQ2lBZ0lDQWdJQ0FnSUR3dmVHMXdWRkJuT2sxaGVGQmhaMlZUYVhwbFBnb2dJQ0FnSUNBZ0lDQThlRzF3VkZCbk9sQnNZWFJsVG1GdFpYTStDaUFnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZVMlZ4UGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBQa041WVc0OEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhVDVOWVdkbGJuUmhQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrK1dXVnNiRzkzUEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lEd3ZjbVJtT2xObGNUNEtJQ0FnSUNBZ0lDQWdQQzk0YlhCVVVHYzZVR3hoZEdWT1lXMWxjejRLSUNBZ0lDQWdJQ0FnUEhodGNGUlFaenBUZDJGMFkyaEhjbTkxY0hNK0NpQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNlUyVnhQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cElISmtaanB3WVhKelpWUjVjR1U5SWxKbGMyOTFjbU5sSWo0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BIaHRjRWM2WjNKdmRYQk9ZVzFsUGxOMFlXNWtZWEprTFVaaGNtSm1aV3hrWjNKMWNIQmxQQzk0YlhCSE9tZHliM1Z3VG1GdFpUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSGh0Y0VjNlozSnZkWEJVZVhCbFBqQThMM2h0Y0VjNlozSnZkWEJVZVhCbFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQThlRzF3UnpwRGIyeHZjbUZ1ZEhNK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNlUyVnhQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cElISmtaanB3WVhKelpWUjVjR1U5SWxKbGMyOTFjbU5sSWo0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BIaHRjRWM2YzNkaGRHTm9UbUZ0WlQ1WFpXbkRuend2ZUcxd1J6cHpkMkYwWTJoT1lXMWxQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4ZUcxd1J6cHRiMlJsUGtOTldVczhMM2h0Y0VjNmJXOWtaVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhodGNFYzZkSGx3WlQ1UVVrOURSVk5UUEM5NGJYQkhPblI1Y0dVK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lEeDRiWEJIT21ONVlXNCtNQzR3TURBd01EQThMM2h0Y0VjNlkzbGhiajRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhodGNFYzZiV0ZuWlc1MFlUNHdMakF3TURBd01Ed3ZlRzF3UnpwdFlXZGxiblJoUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGVHMXdSenA1Wld4c2IzYytNQzR3TURBd01EQThMM2h0Y0VjNmVXVnNiRzkzUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGVHMXdSenBpYkdGamF6NHdMakF3TURBd01Ed3ZlRzF3UnpwaWJHRmphejRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrZ2NtUm1PbkJoY25ObFZIbHdaVDBpVW1WemIzVnlZMlVpUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGVHMXdSenB6ZDJGMFkyaE9ZVzFsUGxOamFIZGhjbm84TDNodGNFYzZjM2RoZEdOb1RtRnRaVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhodGNFYzZiVzlrWlQ1RFRWbExQQzk0YlhCSE9tMXZaR1UrQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4NGJYQkhPblI1Y0dVK1VGSlBRMFZUVXp3dmVHMXdSenAwZVhCbFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQThlRzF3UnpwamVXRnVQakF1TURBd01EQXdQQzk0YlhCSE9tTjVZVzQrQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4NGJYQkhPbTFoWjJWdWRHRStNQzR3TURBd01EQThMM2h0Y0VjNmJXRm5aVzUwWVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BIaHRjRWM2ZVdWc2JHOTNQakF1TURBd01EQXdQQzk0YlhCSE9ubGxiR3h2ZHo0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BIaHRjRWM2WW14aFkycytNVEF3TGpBd01EQXdNRHd2ZUcxd1J6cGliR0ZqYXo0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHa2djbVJtT25CaGNuTmxWSGx3WlQwaVVtVnpiM1Z5WTJVaVBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQThlRzF3UnpwemQyRjBZMmhPWVcxbFBrbHVabWx1Wlc5dUlGSmxaRHd2ZUcxd1J6cHpkMkYwWTJoT1lXMWxQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4ZUcxd1J6cDBlWEJsUGxCU1QwTkZVMU04TDNodGNFYzZkSGx3WlQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BIaHRjRWM2ZEdsdWRENHhNREF1TURBd01EQXdQQzk0YlhCSE9uUnBiblErQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4NGJYQkhPbTF2WkdVK1EwMVpTend2ZUcxd1J6cHRiMlJsUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGVHMXdSenBqZVdGdVBqQXVNREF3TURBd1BDOTRiWEJIT21ONVlXNCtDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHg0YlhCSE9tMWhaMlZ1ZEdFK01UQXdMakF3TURBd01Ed3ZlRzF3UnpwdFlXZGxiblJoUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGVHMXdSenA1Wld4c2IzYytOelV1TURBd01EQXdQQzk0YlhCSE9ubGxiR3h2ZHo0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BIaHRjRWM2WW14aFkycytNQzR3TURBd01EQThMM2h0Y0VjNllteGhZMnMrQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHd2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cElISmtaanB3WVhKelpWUjVjR1U5SWxKbGMyOTFjbU5sSWo0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BIaHRjRWM2YzNkaGRHTm9UbUZ0WlQ1SmJtWnBibVZ2YmlCQ2JIVmxQQzk0YlhCSE9uTjNZWFJqYUU1aGJXVStDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHg0YlhCSE9uUjVjR1UrVUZKUFEwVlRVend2ZUcxd1J6cDBlWEJsUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGVHMXdSenAwYVc1MFBqRXdNQzR3TURBd01EQThMM2h0Y0VjNmRHbHVkRDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhodGNFYzZiVzlrWlQ1RFRWbExQQzk0YlhCSE9tMXZaR1UrQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4NGJYQkhPbU41WVc0K01UQXdMakF3TURBd01Ed3ZlRzF3UnpwamVXRnVQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4ZUcxd1J6cHRZV2RsYm5SaFBqWXdMakF3TURBd01qd3ZlRzF3UnpwdFlXZGxiblJoUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGVHMXdSenA1Wld4c2IzYytNQzR3TURBd01EQThMM2h0Y0VjNmVXVnNiRzkzUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGVHMXdSenBpYkdGamF6NHdMakF3TURBd01Ed3ZlRzF3UnpwaWJHRmphejRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR3dmNtUm1PbE5sY1Q0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BDOTRiWEJIT2tOdmJHOXlZVzUwY3o0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lEd3ZjbVJtT2xObGNUNEtJQ0FnSUNBZ0lDQWdQQzk0YlhCVVVHYzZVM2RoZEdOb1IzSnZkWEJ6UGdvZ0lDQWdJQ0FnSUNBOGNHaHZkRzl6YUc5d09rTnZiRzl5VFc5a1pUNHpQQzl3YUc5MGIzTm9iM0E2UTI5c2IzSk5iMlJsUGdvZ0lDQWdJQ0FnSUNBOGNHaHZkRzl6YUc5d09rbERRMUJ5YjJacGJHVStjMUpIUWlCSlJVTTJNVGsyTmkweUxqRThMM0JvYjNSdmMyaHZjRHBKUTBOUWNtOW1hV3hsUGdvZ0lDQWdJQ0FnSUNBOGRHbG1aanBQY21sbGJuUmhkR2x2Ymo0eFBDOTBhV1ptT2s5eWFXVnVkR0YwYVc5dVBnb2dJQ0FnSUNBZ0lDQThkR2xtWmpwWVVtVnpiMngxZEdsdmJqNHpNREF3TURBd0x6RXdNREF3UEM5MGFXWm1PbGhTWlhOdmJIVjBhVzl1UGdvZ0lDQWdJQ0FnSUNBOGRHbG1aanBaVW1WemIyeDFkR2x2Ymo0ek1EQXdNREF3THpFd01EQXdQQzkwYVdabU9sbFNaWE52YkhWMGFXOXVQZ29nSUNBZ0lDQWdJQ0E4ZEdsbVpqcFNaWE52YkhWMGFXOXVWVzVwZEQ0eVBDOTBhV1ptT2xKbGMyOXNkWFJwYjI1VmJtbDBQZ29nSUNBZ0lDQWdJQ0E4WlhocFpqcERiMnh2Y2xOd1lXTmxQakU4TDJWNGFXWTZRMjlzYjNKVGNHRmpaVDRLSUNBZ0lDQWdJQ0FnUEdWNGFXWTZVR2w0Wld4WVJHbHRaVzV6YVc5dVBqRTFNREE4TDJWNGFXWTZVR2w0Wld4WVJHbHRaVzV6YVc5dVBnb2dJQ0FnSUNBZ0lDQThaWGhwWmpwUWFYaGxiRmxFYVcxbGJuTnBiMjQrTmpVMlBDOWxlR2xtT2xCcGVHVnNXVVJwYldWdWMybHZiajRLSUNBZ0lDQWdQQzl5WkdZNlJHVnpZM0pwY0hScGIyNCtDaUFnSUR3dmNtUm1PbEpFUmo0S1BDOTRPbmh0Y0cxbGRHRStDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0Nqdy9lSEJoWTJ0bGRDQmxibVE5SW5jaVB6NjB4bTB5QUFBQUlHTklVazBBQUhvbEFBQ0Fnd0FBK2Y4QUFJRHBBQUIxTUFBQTZtQUFBRHFZQUFBWGI1SmZ4VVlBQUc1eVNVUkJWSGphN1AxTmRoTlgyejV1bnpmcjd0LzZUY0JSUmhDbG95NWlCREU5ZDd4aVJnQ01BQmdCTUFMTWNzZTlLQ05BNmJvVFpRU3BhQUovUFNONDMwYVZJOXZZWUZ0ZnRhdU9ZeTB2QWdHN2ROVldmWnkxZGUzL0JBQ0FYbHBrUEV3eS9NWmZtZHpqMnp4OXdJOGNKQm4xb0xSVjgvV1F2Ly9QZC83T01zbjhXOS9qSUJlVlVRMEFBUHYxSHlVQUFHaXZSY2FqMUVIMVZiZjkyZjl5ZTVnOVNEOUNidTQyVHgzWTMxVGw5cUQvdHIrL1BNakZYQ2tCQU9EYkJPNEFBRnR3eSt6eG03OVB2cDRkZnR2ZmdiWmE1dXRaOTFXK0R2Rm5OMzQvUDhqRlV2a0FBT2dpZ1RzQXdCMFdHUTl5ZlhiNEtLdVo1VGRubEE4akxHZTM1cmw5NXZxbFArNzVmYW84ckFYT0ptaUJBd0JBSnduY0FZQmV1REhqZkpEcllmblZtZWFqZk4ydUJkWXh1L0g3WlpLLzd2SDNFcTFjQUFDZ0tBSjNBS0JZaTR3bnpYOE9zZ3JRZjhncVdCL0dySFBXVStYNjdPOTVrdis3OGZ2bDFiOXY1allBQVBTWHdCMEFhSlVyaTRRT2NudUlmdm4vNGFGbVYvNTdubFZ3WHVWS3FINlFpNWxTQVFBQWp5RndCd0IyNG80Zy9hZGIvZ3p1YTliOHVzeXFSY3N5cTRVOHRXTUJBQUIyU3VBT0FLenRTbXVYVWVydy9PcU05SWtLOFFEejFLSDVNcXNRdmNwcUJ2cjhJQmRMWlFJQUFOcEk0QTRBZk5PVm1lbVh2MTZHNlpkL0J2Y3h6OWRCK3I5L1ppWTZBQURRQlFKM0FPaTVLN1BUTDM5OWV1UDM4RDJ6NXRkNTZyN29WZk9sSHpvQUFOQXJBbmNBNkRpQk9tdXFybno5azFXUGRMUFNBUUFBYmhDNEEwRGhGaGtQVTdkNEdhVnU4M0s1RU9sRWRiaUhlVlloK3Y5ZC9iMWU2UUFBQUE4amNBZUFBbHpwb3o1SjhyK3N3dldSNnZBZDh3alVBUUFBZGtMZ0RnQXRjVWVvUG15KzRGdG1XUzFHV2wxK0hlU2lVaG9BQUlEZEViZ0R3QTdkMHY3bGFZVHFmTjh5OWN6MEtuVWY5WG5xSHVvenBRRUFBR2dQZ1RzQWJFRXpXMzJZT2xqWFU1MzdXRWFvRGdBQVVEU0JPd0E4MGlMalFhNjNmVEZibmZ1WXB3N1ZyN1ovMFU4ZEFBQ2dBd1R1QVBBZFY0TDFVWklmcnZ6M1FIVzR3ekoxc0Q1UHZWRHBMSHFxQXdBQWRKN0FIUUN1V0dROGlXQ2QrNnVhcno5aXRqb0FBRUR2Q2R3QjZLV214L29vV3NGd1AxVnVCT3Q2cXdNQUFIQ1R3QjJBVGx0a1BFd2RwRTlTTDE0NlRCMjB3MjJxQ05ZQkFBQjRKSUU3QUoxd284LzZaYkErVVJudXNNeXF4L3BmRWF3REFBQ3dBUUozQUlwelN6dVlVZlJaNTI2ejFMUFYvMG9Uc3V1eERnQUF3RFlJM0FGb3JWdG1yVi8rTjl5bXlxb2R6RHoxclBXNXNnQUFBTEFyQW5jQVd1Rkt1RDdKS2x3ZnFneDNtRGRmLzZTZXdXN1dPZ0FBQUhzbmNBZGc1NFRyUE5Bc2VxMERBQUJRQUlFN0FGc2xYT2NCbHFtRDlUOVN0NGFaYXdrREFBQkFTUVR1QUd6VUl1Tko2bEQ5Y2pIVG9hcHdpMlZXNGZvOGRiaGVLUXNBQUFBbEU3Z0Q4R2lMakVkWkxXZzZpUVZOdWQweXduVUFBQUI2UU9BT3dMM2NhQTF6T1h0OW9ETGNZcFpWei9XWmNCMEFBSUMrRUxnRGNLc3JzOWN2dy9XUnFuQ0xlYTdNWHRkekhRQUFnRDRUdUFPUTVOL2U2NU9zMnNNTVZJVWJxbHdQMTJkS0FnQUFBQ3NDZDRBZWF0ckRUTEthd1Q1UkZXNHh5NnJ2K3V3Z0Ywc2xBUUFBZ0xzSjNBRjY0RXJBZmhtdWoxU0ZHNnJVQWZ0bDMvVzVrZ0FBQU1ERENOd0JPbWlSOFREWEEvYWhxbkRETEdhdkF3QUF3RVlKM0FFNjRNWU05c01JMkxtdXlxcjN1dG5yQUFBQXNDVUNkNEJDTFRJK2pCWXgzRzZlNisxaEtpVUJBQUNBN1JPNEF4UmlrZkVvZGJqK1N5eHl5bld6TkxQWGs4eTFod0VBQUlEOUVMZ0R0TlNOUHV5SFNRYXFRcEpscnZSZlA4akZURWtBQUFDZ0hRVHVBQzJpVFF5M3FLTC9PZ0FBQUJSQjRBNndSOXJFY0lzcVYxckU2TDhPQUFBQTVSQzRBK3lRTmpIY29vcUFIUUFBQURwQjRBNndaWXVNSjFuTllCK3BTTzlWRWJBREFBQkFKd25jQVRhc21jVittTlVzZHZxdGlvQWRBQUFBZWtIZ0RyQ21SY2FEWE8vRFBsU1ZYbHZtZXNBK1Z4SUFBQURvQjRFN3dDTlk3SlFicGhHd0F3QUFRTzhKM0FIdXdTeDJicGhsRmJEUGxBTUFBQUJJQk80QWR6S0xuU3VxWEovRnZsUVNBQUFBNENhQk8wRERMSGF1V09aNndGNHBDUUFBQVBBOUFuZWcxeFlaRDVNY0pubmEvRXAvelpMOEhuM1lBUUFBZ0VjU3VBTzlzOGo0TUt1QWZhZ2l2YlhNYWhiN1ZKc1lBQUFBWUYwQ2Q2RHptbFl4aDFtMWlobW9TbTlWYVVMMmcxeE1sUU1BQUFEWUpJRTcwRWxYV3NYOG1tU2tJcjAyVDkwcVpxcFZEQUFBQUxCTkFuZWdNeFlaajFJSDdKTUkyZnR1bGxYSVhpa0hBQUFBc0FzQ2Q2Qm9WMEwydytqSDNuZlRyRUwycFhJQUFBQUF1eVp3QjRwajBWTWF5elFodTM3c0FBQUFRQnNJM0lFaU5DSDdMNmxEOW9HSzlGWVZpNTRDQUFBQUxTVndCMXBMeUU2alNoMnlmN2JvS1FBQUFOQm1BbmVnVllUc05PWkpQc2VpcHdBQUFFQkJCTzdBM2wxWitQUWtRdlkrbXliNUkwSjJBQUFBb0ZBQ2R5ak44ZmtvM3d1bHo0NW1iWDhaVjBMMncxajR0TSttU1g1UEhiSXZsUU1BQUFBb21jQWQycW9PMWlkSmZrb2RTSS95OE5uZjg5VDlyLzlLTXR0M0VDOWtKOGt5MTJleUw1VUVBQUFBNkFxQk83VEY4ZmtnZFJEOVMrcWdmYkNsbnpSTE02TTRaMGZWcmw3ZUl1T1RKSi9zNkY1YXBwbkpmcENMcVhJQUFBQUFYU1Z3aDMwN1BqL0phcEhRWFp1blhwanlOR2RIeTIzL3NFWEduMUwzYWFmN3FqUVBkNFRzQUFBQVFGOEkzR0VmNnRuc3IxSzNWeG0yWkt0T2s3emI5cXgzb1h1blZhbG5zbjgreU1WY09RQUFBSUMrRWJqRExxMkM5cGZaWHN1WWRaMW15OEc3MEwxVHFnalpBUUFBQUpJSTNHRjNqczlmSlhtVDlnYnRONTBtZWIyTlZqT0xqQWRKdnFSZUNKYnlWQkd5QXdBQUFIeEY0QTdiZG53K1NyMVk2S2pBclYrbW51MytZZFBmdUFuZC8wNDVEeUQ2cm9xUUhRQUFBT0NiQk82d1RjZm5iMVBQYWkvZExNbnpUYzkyWDJROFNUM1RuWGFhcDE1VWQzcVFpMG81QUFBQUFMNU40QTdiY0h3K1RQSmJ1dFV5Wlpua1JjNk9wcHY4cG91TTM2WWJEeVc2WWg0aE93QUFBTUNqQ054aDA0N1BKNm5EOWtGSFgrRzduQjI5M2VRM1hHVDhKY25FNE5tYktzbkhDTmtCQUFBQTFpSndoMDA2UGo5SjNhKzk2MDV6ZHZSaVU5OXNrZkV3eVovUnozMlhxdWpKRGdBQUFMQlJBbmZZbE83MGE3K3ZlWkpubStycnZzajRWWkwzQnRKV1ZSR3lBd0FBQUd5TndCMDI0Zmo4VTVLVEhyN3llVFlidW1zdHMzbFZoT3dBQUFBQU95RndoM1Vkbjc5UDhxckhGWmhuUTZIN0l1TlI2dFl5ckdlWlZjZytVdzRBQUFDQTNSQzR3enI2MDdQOWU2WTVPM3EraVcrMHlMaXZueFpZMXpKMXlQNzdRUzZteWdFQUFBQ3dld0ozZUt6ajg4TWt2eW5FdnpheWtPb2k0MEdTdjJNQjFmdWFwZzdaVDVVQ0FBQUFZTDhFN3ZBWXgrZWpKRjhpRkw3cFJjNk9UdGY5Sm91TTM2WmZDOUErMURUSjcwbW1CN2xZS2djQUFBQkFPd2pjNGFHT3p3ZXB3L2FSWW54bG1icWYrM3lkYjJLVys2M21TVDRuT1JXeUF3QUFBTFRUZjVVQUh1eE5oTzEzR2FUdWFmL3pPdC9rSUJmTFJjWWZZNVo3bGVSajZwbnNsZUVGQUFBQTBHNW11TU5ESEo5UFVzOXU1OXZlNWV6bzdUcmZvSm5sL3YvMXNIWlY2cFl4bnc5eU1UZVVBQUFBQU1vaGNJZUhPRDcvTzhsUUllN2w1dzIwbHZtVTVLUUh0VnBtRmJMUERCMEFBQUNBTW1rcEEvZDFmUDQyd3ZhSGVKL2syWnJmNDJPNkhiaWZKdm45SUJkVHd3VUFBQUNnZkdhNHczMGNudytUL0JtTGVEN1VpNXdkbmE3ekRSWVovNWx1OWN5Zkp2azlkVi8ycFNFQ0FBQUEwQjFtdU1QOXZJbXcvYkYxTzEzemUzeE8rWUg3dkhrZEZqOEZBQUFBNkRBejNPRjc2dG50Znl2RW82MDF5MzJSY2FuMXIxTFBadjhvWkFjQUFBRG9CelBjNGZ0ZUtzRmExcHJsZnBDTGFwSHhQR1hNY2w5bUZiTFA3WG9BQUFDQWZqSERIYjdsK0h5UWVuYjFRREhXOGp4blI5UEgvdU5GeHE5U0w4TGFWcWV4K0NrQUFBQkE3ejFSQXZpbXd3amJOK0hYTmYvOXRJV3ZhWmJrUlpML2Q1Q0xGOEoyQUFBQUFNeHdoMjg1UHY4ejVTL1kyUlkvNXV5b2V1dy9YbVQ4ZDVMaG5sL0RQQlkvQlFBQUFPQU9lcmpEWGVyRlVrY0tzVEdIU1Q2czhlOW5TVTcyc04xVjZobjJuL1ZsQndBQUFPQmJCTzV3dDBNbDJLaGZzMTdnL2tkMkY3Z3ZVNGZzK3JJREFBQUFjRzk2dU1QZGZsR0NqUm8xaTlBKzFud0gyMWdsZVoza1IzM1pBUUFBQUhnb005emhOblV3UEZHSWpadmtrUXVnSHVSaXZzaDRXOXMxVGQweVptb1hBUUFBQVBCWUFuZTQzVVFKdHVKcEhobTROMlliM0RmTEpCK1RuRm9BRlFBQUFJQk5FTGpEN1VaS3NCV1ROZjk5dFlGdG1LV2V6WDVxZHdBQUFBQ3dTUUozdU4xVEpkaUswWnIvL3A5SC9ydGw2cG4xSHc5eU1iY2JBQUFBQU5nR2k2YkM3WVpLc0NYSDU2TTEvdlg4Z1grL3l2VkZVT2QyQUFBQUFBRGJZb1k3M0c2b0JGdXQ3ZnlSLzNaNXo3ODNTejJiZmFyY0FBQUFBT3lLd0IxdVdtOEdOdDgzeXVNWFRxMis4ZitXemZkOVp4RlVBQUFBQVBaQjRBNWZHeWhCT3gza29scGtmUE9QcXlRZms1d2U1R0twU2dBQUFBRHNpOEFkdmpaUWdxMzZhVVBmWnhadFl3QUFBQUJvRVlFN2ZHMmtCRnMxV1BQZm4wYmJHQUFBQUFCYVNPQU9GT1VnRnk5VUFRQUFBSUEyZXFJRUFBQUFBQUN3UG9FN25iUEllTERJZUtBU0FBQUFBTUF1Q2R6cGpDWm9mNXZrNytqRERnQUFBQURzbUI3dUZLK1p6ZjRxeWN1c3Z5Qm5raXhWRlFBQUFBQjRLSUU3UlZ0a2ZKTGtUWkxoQnIvdFhHVzNxbElDQUFBQUFMcEk0RTZSRmhrZkpubWZ1NFAyZ1NxMTFqOUtBQUFBQUVBWDZlRk9VUllaVHhZWmYwbnlXNzQ5cTMyMHhvK3BWSHFybGtvQUFBQUFRQmNKM0NuQ0l1UGhJdVBma254Sk10bnFEenM3cWxSOHErWktBQUFBQUVBWGFTbERxelVMb3I1SnZTanFRL3kwNW8rZVo3MVo4dHl0VWdJQUFBQUF1c2dNZDFwcmtmSGJKSC9uNFdGN3NuNFA5N2s5c0JWTG55QUFBQUFBb0t2TWNLZDFGaG1mcEo3VlBsemoyMHpXM0l5LzdJbXRtQ2tCQUFBQUFGMWxoanV0Y1dWQjFFOVpMMnkvL0g3cmZJK1pQYklWSG1RQUFBQUEwRmtDZC9hdVdSRDFVemEvSU9ybzBmL3k3R2llWkdudmJOeFVDUUFBQUFEb0tvRTdlN1BJZU5EMGFmOHp5Y2tXZnNUVE5mLzkxRjdhcUdYeklBTUFBQUFBT2tuZ3psNHNNajVNSGJTL3lmb0xuTjVsdE9hLy85MmUycWlwRWdBQUFBRFFaUUozZG1xUjhhanAwLzViTnRDbi9Uc21hLzNyczZOcHRKWFpKQTh3QUFBQUFPZzBnVHM3MGJTUGVaOTZWdnRraHovM2NNMXZNYlgzTnFKcUhtQUFBQUFBUUdjSjNObTZSY1luU2Y1Tzhtb1BQMzdkUHU2ZjdjR05VRWNBQUFBQU9rL2d6dFpjYVIvektkdnIwLzQ5aDJ2OTY3T2pXWks1dmJtMlV5VUFBQUFBb09zRTdtemN2dHJIM0dHNHlIaTA1dmY0YUsrdTVUUm5SNVV5QUFBQUFOQjFBbmMyYXMvdFkrN3k2MXIvK3V6b05FbGw3ejdhT3lVQUFBQUFvQS8rcXdSc1FqT0wvSDMyUDZQOU5vZEpYcS81UGQ2bGJvM0R3NWpkRG56dCtIeVFaTlQ4N3VaNTQ2ZGNiME0yVC9KL04vNU9sY3NIb1hYckx3QUFBR2lGL3lnQjYxaGtQRWc5bS8xTnl6ZjErVUV1cG10OWgrUHpMMm5uQTRVMisxSGdEajEzZkQ1c2pwMC9wUTdaUjluT3VoNnpKTXNrZnpYL1hUbitBQUFBc0dzQ2R4NXRrZkVrOWF6dllRR2JPejNJeGZPMXZzUHgrU1RKRjN2KzN0N2w3T2l0TWtBUEhaOGZKdmtsZGRDK3ozTkVsWHFHL0I5SnBnSjRBQUFBdGszZ3pvTTFzOW8vcFc3VlVwSWZEM0pScmZVZGpzL2ZwMTM5NmR1cVN2Snp6bzZXU2dFOXNRclpEN09kR2V5Yk9qWk5rM3pPMmRIY1RnTUFBR0RUQk80OHlDTGpWNm5ieHd3SzNQelRnMXk4V09zNzFIMkgvMHdacy9yMzZabSt5dEFEOVRIeEpNbkxBbytMVlpMUHNkWUVBQUFBR3lSdzUxNFdHUTlUejJxZkZQd3lscWxudVMvWCtpNWF5M3pQaDV3ZHZWWUc2TEE2YUgrVk9tZ2ZkT0FWVFpOODlLQVFBQUNBZFFuYythNUZ4bS9UL2tWUjcrdmRRUzdlcnYxZGpzKzdWSk5ObXVmczZHZGxnQTZyajM5ZENkcHZxbEt2UDNGcVJ3TUFBUEFZQW5mdXRNaDRsSHBXKzZoREwydVpUY3h5VDVMajh5OHBlOGIvVm1xcmJ6dDBWUDNwbmxJV3lsNVhsZVIxem82bWRqd0FBQUFQSVhEbks4MmlxRy9TM2NWQjErL2xubHkyVlBpU2JqMlFlS3hsNnI3dGM2V0FqcW1QZFYwK0ozekxMSFh3N3RnR0FBREF2UWpjdVdhUjhTVDltTUg0ODBFdTVtdC9sK1B6WWVwRlZBYzlIem92dEdDQURqbytIeVg1TFJhS2ZwZDZmWXFsUVFFQUFNQzNQRkVDa25wVyt5TGo5NmxuYkE5NzhKTGZiK1M3bkIxVlNaNmxudUhkVjhKMjZLTGo4NVBVRHhTSGlwRTNTZjVzMnVvQUFBREFuY3h3cDArejJtOTZjWkNMMDQxOHAzb1c2SmYwYjZhN3NCMjY2UGo4VTVJVGhialY2NXdkZlNoa1AwNmEvNnFhQjhRQUFBQnNtY0M5eDNyUXEvMTdsdG5VQXFySlplamV0VVZtdjBYWURsMGtiUCtlYWM2T25yZG9mdzFUTCtEOVUzUCtHZVhiRDMvbnFSZUYvU1BKVEg5NkFBQ0F6Uks0OTFTUFo3WGZORDNJeGVhQ2szNHNwTHFNQlZLaG00VHQ5L0U4WjBmVFBlK25RYk9mZnQzQSthWktNazN5MlhFZEFBQmdmUUwzSGxway9EYjF6SFpxcnc5eThXR2ozN0c3b2RVOGRkaFVHVGJRTWNMMisxam03T2ovN1hFZkRadno5N2IyMHl6SnU1d2R6ZXhxQUFDQXh4RzQ5OGdpNDFINjFmTGt2cFpKbmgza1lyN1I3MW92T1BnKzNlbnIvaUZuUjY4TkYraWc0L1AzNlc5N3NZYzR6ZG5SaXozc24wRnpQam5aMFUrY3BlNVZQN2ZMQVFBQUh1YUpFdlRESXVOWFNmNk1zUDAyZ3lTL05UM3RONmZ1Yi81ejZ1Q2laRlhxRmpMQ2R1aWkrdUhnSzRXNGw0OTcyRCt2a3Z5ZDNYNzZZSkxrenh5ZnY3WExBUUFBSHNZTTk0NWJaRHhNUGF0OW9ocmZOVHZJeGJPdGZPZHlaN3QvU04xZVlHbDRRQWZWaXozL3FSRDNVdVhzNk1jZDdwdEJjLzQrM1BQcm5xZCs2T284QUFBQWNBOW11SGZZSXVQRDFFSEtSRFh1WmJMSStOTld2bk05Mi8zSEpPOEtxY1VzeVk4NU8zb3RaSUdPcWdQZDN4VGkzajd1Y04rTVVpL0FmZGlDMXoxSzhuZXpUUUFBQUh5SEdlNGQxTFJHYWNPc3VGSzlPTWpGNmRhKysyclJ1OE8wYjhiN0xCYk1nMzQ0UHYvTmVlSkJmdHpKZ3RHcnNMMXQ1NGRsNnBudWMwTUJBQURnYmdMM2psbGtQRWtkdGc5Vll5M2JEZDJUeTltbEowbGU3bmwvTFpOTVV3ZnRsVjBQUFhCOGZoaXoyeDlpbHJPalp6dllMNk8wTTJ5L2VyNFF1Z01BQUh5RHdMMURGaG0vVFQxem1zM1lmdWgrNmZoOGt1VFg3SGJXK3pUSjcwbW0yc1pBajlRUCsvNU9lV3RLN1BWODBMUUcyK1orR2FadUE5ZjIvYkpNOHJNSHRBQUFBTGY3cnhLVXo4S29XL05wa1hGMkVyclhMVnhtU1Y0ME14d1BrenhOM1R0M3NLR2ZNbTkreGg4NU81cmF2ZERmWTF1RTdRKzEzV1BtcXA5K0NmdmxjbHQvTml3QUFBQytab1o3NFpxRlVZVW4yN1c3bWU2M3FRUDRZZXJ3L1gvTnIxZE5rbFROMTZVcXlULy8vcm1lN0VCOVBKbWtibG5DL1ozbTdPakZsdmZMK3lTdkNxdkxoNXdkdlRZOEFBQUFyaE80RjJ5UmNZazM2S1g2Y0pBTHdRSlF0dVB6UC9QMVF6dSs3ZmxXUHhWVTlrT1FaeDdvQWdBQVhLZWxUSUdhRmpLL1JXaXlTNjhXR1ErU3ZEN0l4Vkk1Z09JY241ODRienpZY2djdHVENFZYSi8zMFZvR0FBRGdtaWRLVUphbWhZd1ppdnR4a3VSTDg4QURvRFFXMVg2NDA2MSs5K1B6dDZsYmhwVnExRHpJQVFBQW9DRndMMGpUUXFhVVJkVzZhdFRzQTRCeTFLSG9VQ0VlN1BNVzk4a2d5Y3NPMU1pREhBQUFnQ3NFN2dWWVpEeGNaUHhuOUd0dmczZEpuaWtEVUJpaDZNTlZPVHVhYi9IN0g2WWJEOUNIT1Q0L05Gd0FBQUJxZXJpM1hOTkM1bFBNYXQrM2VaSVhCN21ZS3dWUWxEb01IU3JFZzMzYzh2ZC8yYUZhL1pwa2FzZ0FBQUNZNGQ1cWk0emZSZ3VaZlZ1bVhpajFaMkU3VUtpWFN2QW8wNjE5NStQelVicTFGc3RoMHlJSEFBQ2c5OHh3YjZGRnhvUFVRZnRFTmZacWxucFdlNlVVUUpHT3o0Zk9KWTg4L3A4ZGJmUFlmOWpCbWgxbTI0dk1BZ0FBRk1BTTk1WlpaRHhLOG1jRUpQdTBURDJyL1ptd0hTaWMyZTJQODNuTDMvOXBCMnYyMUxBQkFBQVF1TGZLSXVPVEpGK2kxKzQrelpMOGZKQ0xEMG9CZE1DSkVqektkTXZmZjlMQm1vME1Hd0FBQUMxbFdtT1I4ZnNrcjFSaWI1YXAyOGRNbFFMb2hIcXgxSUZDUE5ocHpvNldXOXd2azQ3V2JXVG9BQUFBbU9HK2Q0dU1CNHVNdjBUWXZrL1RKRDhLMjRHTytVVUpIdVgzTFgvL1FXY3IxOTJIQ1FBQUFQZG1odnNlTmYzYWY0c1dNdnV5VFBKTyt4aWdvdzZWNEJIbmhiT2o2WloveGtpWkFRQUF1a3ZndmlkTnYvYjM4WEgvZlptbGJpRlRLUVhRT2QxdEp6TlAvYkQwcXRFR1grdXB3Yk9Xb1JJQUFBQjlKM0RmZzBYR2I1TzhVWW05V01hc2RxRDdubmJvbUQxTjhqbG5SN052L3MzajgxSHF3SGZVdlA3SkkzN2VaME5uTFVNbEFBQUErazdndmtPTGpBZXBaN1dmcU1aZXpKTThONnNkNklIRERyeUdkMGsrM0hzQjA3T2plWE9jbi83N1ovVk0vMSthZWd5Kzh4MnE1bnNBQUFEQW93bmNkNlFKMjc5RTc5WjllWGVRaTdmS0FIVGU4Zmt3WmM4MHJwSTgzMGo0WGZkam55WjVrZVB6a3lRdnYzRWUvbWp3QUFBQXNLNG5TckI5emVLb2YwZll2ZzlWa3ArRjdVQ1BUQXJlOW5tU243Y3kwL3pzNkRSblJ6OG5lWlo2SFkrYnBvYk9SdllmQUFCQXJ3bmN0NnhaSFBWTExJNjZEeDlTaCswQ0FLQlBTdTNmWGlWNWR1OFdNbzkxZGpUTDJkR3pKQyt5V29CMWxyT2p5dEJaMjFJSkFBQ0F2aE80YjlFaTQxZEpQa1hZdm84Yi91Y0h1WGg5a0FzMy8wRGZUQXJkN3VkYkQ5dXZPanM2VGZKakxoZGwzWjE1aDhkZTVlMEhBQUQwblI3dVc3TEkrRk1zanJvUHM5UmgrMUlwZ040NVBoK2t6UDd0Ny9heVlHa2Q4RC9mOFUrdE9qditmRW9BQUFEQURQZE5XMlE4V0dUOFc0VHQrL0Q2SUJmUGhPMUFqNDBLM09ZcVowZHZlN09IOXZGZ1lUZG0zbjRBQUFBQzk0MWFaRHhJM2EvOVVEVjJxa3JkcS8yRFVnQTlOeWx3bTkvMWNEL05PdmlhL3ZEMkF3QUFFTGh2ekNMalVaSS9VK2Jzd3BLZHhzS29BSmQrS214N3E2YVhldC84M3NIWE5QWDJBd0FBRUxodlJCTzJmMG1aZlhOTHRVenk0aUFYTDdTUUFmaFhhZWVoanozZFQ5T092WjZxdzYxeUFBQUFIa1RndnFaRnhvZXB3L2FCYXV6TVBNbXpnMXljS2dYQU5hUEN0bmZheTcxVUx5NDY2OUFybW5yckFRQUExQVR1YTFoa2ZKTGt0d2piZCtrMGRkZytWd3FBSzQ3UGg0VnQ4YXdKbnZ2cWM0ZGV5MGR2UUFBQWdKckEvWkdhc1AyVFN1ek1NbHJJQUh6THNMRHQvYjNYZTZ2dVhWOTE0SldjOXZ6QkNRQUF3RFVDOTBkWVpQd3B3dlpkcXFLRnpHNGRuNDl5ZkQ1U0NDaEthZS9abVYyV2QxNERBQUJBdC94WENSNm1DZHRQVkdKbnBxbG50aStWWW9PT3p3ZXB3N2xoOC9WRDgrc29xeFpKc3lUUEZBdUtNU2hxYXkyeVdjOXlQejUvbWZJZWxsejZZSFk3QUFEQWRRTDNCeEMyNzl6cmcxeDhVSVpIcW1lb0Q1Sk1tajk1MnZ4K3BEalFTVDhWdEswenUydDFya3U5K0hwcHFwamREZ0FBOEJXQit6MHNNaDZrYmlGenFCbzdzVXp5L0NBWE02WDRobnFCeEt0ZlAyVVZxQThVQ0hxbnBQZDlaWGMxem81bU9UNy9rT1JWWVZ2K0ltZEhTenNRQUFEZ09vSDdkelJoKzVlWUZid3I4OVJoZTZVVVNZN1BKODEvVFpMOEw2c3czWGdFYmhvVXRLMy8yRjFYbkIyOWJvNzNwUnpiWCtmc2FHYkhBUUFBZkUzZy9nM0M5cDA3UGNqRmkxNjk0dFVzOVZIcXNNd3NkZUN4U2pwWHplMnVyenhMOG5jQngvN1RuQjE5c0xzQUFBQnVKM0MvZzdCOTUxNGM1T0swTjYvMitQenYxRUU3UUI4dGxlQ0dzNk5sanMrZk5kY2VnNVp1NVduT2psN1lXUUFBQUhkN29nUmZFN2J2MURMSnMxNkY3YldoWFEvQU5XZEg4OVF6M1pjdDNEcGhPd0FBd0QwSTNHOFF0dS9VUE1uUEZrY0ZXTlB4ZVZubkxQMi92MVdiZWVyUWZkNmlyWG9uYkFjQUFMZ2ZnZnNWd3ZhZG1xYWUyVjRwQmNEYUJrclFJYXZRZmJybkxWa21lWjZ6bzdkMkNnQUF3UDBJM0J2QzlwMTZkNUNMNXdlNVdDb0ZBTnppN0dpWnM2UG5TWjVuUHkxbXBrbCt6Tm5SMU00QUFBQzRQNEY3aE8wNzl1SWdGMitWQVFEdW9RNjhmMHh5dXFPZk9FdnlMR2RIejNOMnRMUURBQUFBSHVhL2ZTK0FzSDFubHFsYnlNeVZBZ0Flb0E2K1grVDQvRjJTTjBrT3MvazJRclBVdmRwbkNnNEFBUEI0dlE3Y2hlMDdNMC95WEw5MkFGakQyVkdWT25oL25UcDAvNlg1ZFozejgrY2swK1o3QXdBQXNLYmVCdTdDOXAyWnBRN2JsMG9CQUJ0UXozZy96V1dibWVQelNYTTk4MU9TWWZPM2hzM1hNbld3bmlSVmtuK2FjL05jeXhnQUFJRE42MlhnTG16Zm1kT0RYTHhRQmdEWW9yb056RXdoQUFBQTlxK3ZpNloraXJCOTI5NEoyd0VBQUFDQVB1bmREUGRGeHAreVhyOVR2dS9GUVM1T2xRRUFBQUFBNkpOZXpYQnZ3dllUdTMxcmxxbjd0WjhxQlFBQUFBRFFONzJaNFM1czM3cGxrbWNIdVpnckJRQUFBQURRUjcyWTRiN0krQ1RDOW0ycUltd0hBQUFBQUhxdTh6UGNtN0Q5azEyOU5mUFVZZnRTS1FBQUFBQ0FQdXYwRFBkRnhvY1J0bS9UUE1KMkFBQUFBSUFrSFE3Y0Z4bVBJbXpmcG5tRTdRQUFBQUFBLytwa1M1bEZ4c01rWDVJTTdPS3RPRDNJeFF0bEFBQUFBQUJZNmR3TTkwWEdneVMvUmRpK0xjSjJBQUFBQUlCYmRMR2x6SmNrSTd0Mks0VHRBQUFBQUFCMzZGVGd2c2o0VTRUdDJ5SnNCd0FBQUFENGhzNEU3b3VNM3lZNXNVdTNRdGdPQUFBQUFQQWRuUWpjRnhtZkpIbGpkMjZGc0IwQUFBQUE0QjZLRDl3WEdZK1N2TGNydDBMWURnQUFBQUJ3VDBVSDdvdU1CNmtYU1IzWWxSc25iQWNvUjZVRUFBQUFzSC9GQnU3QzlxMFN0Z09VNU95b1VnUUFBQURZdjVKbnVMOVBNcklMTjA3WURnQUFBQUR3Q0VVRzdvdU1YeVU1c2ZzMlR0Z09BQUFBQVBCSXhRWHVpNHduc1VqcU5namJBUUFBQUFEV1VGVGd2c2g0bU9RM3UyM2pac0oyQUFBQUFJRDFsRGJEL2JkWUpIWFQ1a21lS3dNQUFBQUF3SHIrVzhxR0xqTCtGSXVrYnRvOHliT0RYQ3lWQWdBQWFMWGo4MUcrbm9BMWJMNW10L3lMS21kSGxjS3h3ekU2dWVWUFIxZnV2Njg3TzVvcEdrRDNGQkc0THpJK2lVVlNONjJLc0IyMmViRTlUREpKOGt2ejY0ODVPL0orWTV0bXpWZ0R5amxYakpyMzdkTWt3NXdkL2F3b2VGK2NqMUlIbE1QbXZUSEkvU1pldmJuaisxMDlUeTZUL0pVNitKd0w0M25FK0x3Y2o2TWtQMXdacThOSGZyK3I5K2RWTXpiL3VUSkczVC8wODdyZ2x5UUQxd1ZRcnRZSDdvdU1SN0ZJNnFZdGt6d1h0c05HTDQ2R1dZVW1rMXN1dWlkSnBnVytyc21WN2IvMDlJN2p5bDlYL251ZVpKbXpvN25CQWNVZjN5WlpCVjcvUy9KWHpvNU9GV2F0YzhYbHc5akJWLysveEFEdytoaEpNMDVHdC96TktuV1FkUG5mOVpmUTB6SG0ralhVdGx4Kzc4TXJQL3Z5bXVXUEpGUFhMZHd5UGdmTm1IbWFWZEMrRGNQbWEzTGo1ODl2akZIMzhOMGFYNk1ieDcvQlYrT3Z0SDIrZWlqbHVvQmVhM1hndnNoNGtPUlQ5RzNmcEdYcW1lMHVKbUg5QzRtckYwZmZ1L2orSlcwUDNGYzN2RDlsTlZ2bklRNXYrWjVKUGFOc25qcVFuN21BZ2xiZTdGMjlPZnFwK1hWeXg3OTRwMmozcnUwdzMzNFllOXR4OUVNQjU3NVJWdUhUWUFQZjkrcTU0by9tWExFMGdEcDlEWFdZdXg0ODdkYmxtSjRrZWRNRThOTWt2K2ZzYUdwbjlmcllmWmprMSt5L3JlMm8rVHBKOHFrSjRIK1BCMFI5dWk0NDdlRjF3ZkxLTmNIY2RRRWxhdnNNOS9mUnQzM1RYZ2piNGRFbi9zc2JzbDhlY1d3NlRQS2laYTlubE5XTW5ja1dmOUxrMnZldmJ4Um1TVDY3VVlDZDNReU5zcG85OThPVi94NHEwRlp1UE8vN01QYW1YOUsyd0wwKzkvM3l5TmZ6bUhQRnF5dm5pcytwUTZYSzRPckUrK093R1VzbkxkN0tRYk45SjFmQzk4LzZiUGZtK0gyU2RvVHMzekpxdnQ0NFRoWjFYWEI1SG4zb2RkY3ZhVnZnWGgvTEgzdWQ4NUJqOGMxN3lGbFdENXVNZDFydlAyM2RzS1p2K3llN2FLTmVIT1RpVkJsYWNaTDYveFd3bGJPY0hUM3IrWDRhWmJPQjlNOTdENWpyMS9Scjg3cUdMYWh5bGVSamtsT3pGdGJldDE5U1NnLzNzNlAvMkdFYjMvK1grMzZTMWNkMkIxdTZFWHFYczZPM2luNnQ5cHNNcFAvZjNvK0hxMkQwTU8zNHBPazh5VWV0aklwOGZ3eFNoNWd2VS9ZRFB0Y3IzYjdlZjVueTE0eWJOc2ZKbVoyNjl6RjE5ZjV4M2V1Q1pjNk8vbDlMWGxPYnJndG1xUitHdWk2Z3RWcDV3N3ZJZUpqa3oyZ2xzMGtmRG5MeFdobGFjeElXdUxmM2dudVN1M3Jvclc4L0lkWHFZN0Z0dnRsZE5qY0s3M28vWStINC9PU1IrK25YbEJObXRMVWxTZFhhQy9lSHQzM1o3djdyYytDKy9YN1RML1l5RHV0enhXWG8xTlpyOEdYcTBQT0QwTFAxNzVOQjZrOHJ2T3pZUFoweDJLMWorWnQwYjhINWVUeWc3TnAxd2JPOVBFaFpUZFJxODNWQmxmcFRIbzdKdEU1YkEvYy9vNVhNSnAwZTVPS0ZNclRxcEN4d2I4ZCtHRjY1T0RyY3dZWEVmS2NyemRjWGY1Y1hTVVVkczVLODd1MUZVMGt6MWJ2blE4Nk9YdTl4MzQreWF2M1M1cll2L1FyY3QvOHc5dXRqNE5uUml4Mit2c1BVb1doSng1MWxoSjV0ZmI4TTBzMmczUmpzemhpZHBKdEIrMDFWY3owOXRkTzNlbDF3MkxucjAzcnl6NjlGWGhmNEJDWXQwcm9lN291TTMwYll2a256SkdhMncrb204REQzWDZSbTAwWTdXV20rL0J1Smt5U0hPVDUvbDdPakR3WXVPL1RYbm4vKyszalkwb1p6eFRDN2ZSaDcwMlJIci9Pa09WY01DOXhMZzJiYmY4M3h1VUNwUGUrZGsrWTROdWpCcTcwNkJ0K1pUVnpNc2YxTnltOGRjMS9ESkw4MWZhL2ZhVFd6OXRpNWVnL3B1cUN0eCtUajgxOVRmMUxRZUdmdldqWERmWkh4Sk1rWHUyVmpsa2wrUE1qRlVpbGFkOUkydzMwM2RSNWt2Y1hydHVINTFvS0JiczdZbVRjWFRmTWVIUi9NY04rZkgvZmEwcWljZmQrdEdlNzdmeGg3bSsydCtWSDJEZlZkcHMyNXdqWHZmdDVEdzlScmIvWDUzRFZyeG1CbFFMUnlqTDVOOXo5MThUMm42Zk1uU0I5K1RKdTA3THBnZSt1N3VDNkFyV2pORFBkRnhvTllKSFdUbGttZUNkdnA0UVhTSk52dG9iZXVwODBGd0NaZjh5amRuUms3U3ZLbG1jRjRhb0N6MWZPbW9LUXY1NGxCMnZjdzlxWko2Z2VPbXo0L2Z1cllEZldsd3lTVEhKOC9ONnR0NSsrbnQ2bURtcjZiSlBuVHAvTmFOejVIelhGdnBCai9mb0wwaFU4RmZmTzY0TENsNThuSkZ1NGhUOUs5b1AzcWRjR291UzZZRytUc1E1dGF5cnp2NkJ0OVgxNGY1TUtCaGI1ZExKWHd5WUhKaGk4TzM2ZjdINDBkSlBtVTQvT25PKzFyVE44NFovYmpQREZKR1orbWZKcmt3NFplOHpEOW1IMDhTUDJBOXAwZXJqdDVML1ZsWEQxMERMN1A4Zmt2cVQvUnVGU1N2WTdSVjgxMU10Zkg2Rzg1UHAvRzdOOFNyd3VtRzNyTm8vU2pqZUV3OVlQUUZ5WnVzUTlQMnJBUmk0d1AwNTllYXJ2dzRTQVhEaWowVVZYQU5vNmFvSHdUTnhGLzkrelllWkxqOHo4M1VqLzQyaDlLMEF2elFyWnp0S0diNnJmTnVXTFNvMzM4SnNmblBqVzdUZlZDdTM5RzJINlhTWksvbXlDUDNZL1BRWTdQZjR1dy9Wc09qZEdpN2gremtlTnQvZDU0MzhQajl5ZlhCZXpEM2dOM3JXUTJibmFRQzR1azRvS3AzVVpyWENnTm16N1BmVm1VN0xiYWZSRzZzd1Z6SmVpQmVqWmZDZWVLWVRPRCtMSG5pa21Pei85T2YxdDluT1Q0L0RmbmlpMm9IK0w4bG43M3dyNlBRWE85Y3FJVU94MmZvOVJoNHFGaTNIdU12dTM1ZFVIMzd4OHZyd3ZxOThhckhsOFh5QjNacVRiTWNQL2tnbTFqcWlUUGxZRWVLMldHNnVTUkYwcXZZa2JaNVFXbjBKMU5teWxCcjY2WHVudHpYWWNuWDZKVjQ2Rnp4UWJWTXlNL1JiLzJoOS9yQ25sMk5VWVBIZnNlcGY1VVVMK1BsYk5DeHZqa0VmL21jbGE3OTRiUW5SM2JhK0RldEpJNXRCczI1cmxGVXVtNWVTSGIrZlFSRjBxWEg0MFZITlJHRWFTd09aVStwcjFTeXNQWjBRUFBGY01jbi84Wmdlak5HbW9yc2E3NlhQc2xXb0ErMW9sQWMrdGo5Q1ErZWJIZUdPMzNkWFVwOTVBUHZTNFlOY2Z1VjRiNGplTXg3TURlQW5ldFpEYk9JcWxRenNYUzhJRVhTajRhZS9kRjUyL0tRSStPSGZScmY5Ly80ZXlxcC9iSTduVnp2Vkdyc04zWVduY2NtaWl3clRINlBuS0ZUVjFYLzluY2UvVE5YNFZzNTA4UGVGK2NPSFovODdyZ3JUS3diZnVjNFc2bTV1Wk1EM0x4UVJub3Zib0gzN0tBTFIzZTY0WnJkYUUwdEhQdk5HbHV0S0FQTjFwc3hyeVE3Ynpmc1Y5UDdmdmVYSjhvd3dNSjJ6ZHRGS0g3cHNmb3A1aTl1K256enBjZWh1NVZ4NjRMUGtYcjV1OTUwMHhXZ0szWlMrQyt5SGdTSDBuYzVNbmhoVExBditZRjNYUjk2MExwdlF1bGUzdmxnb2sxelpTZ1IwcDZPUHZ0ODRTZTJnL3pxYWN6Tng5SDJMN042Nzh2eXJDUk1mb3BNb1Z0cU4vN2ZUcGVuaDJWY2gwNHVjZDFnZlpmRDdzdUdDb0QyN0x6d0Ywcm1ZM1R0eDJ1bXhleW5jUHYzRUM4c2l0ZE1PRkdpNTZmSys1YUlFMVA3WFhPRlFObCtPNjR1eHhmSThYWWlwRTJSMnVQVVdIN2R0WEhnSDQ5cEN6bHVtRDRuZVAyeFBCOTBEalhucFN0MmNjTTkxZlJIbUZUOUcySHI1WFNHbUo0NjRWU3ZlQ2RHNGpIWFRDNWVhVzdOMWowZGI4UHZuRlRQYkliSDJ3VUQ3Uy96ZmphRldzTFBINk1ucmhXM3RuNXAwK2hleW5YQmJmZFE0NlMvTzI0L2NqckF2M2MyWktkQnU2TGpFZnhzZGROMGJjZGJsY1ZzcDAvdU1IZHVJbldNblQ0Qm92Tkt1WGg3T2lXbTJxTG82N25qVTlFZmRNbjQydG5yQzN3VUhXOVBLalluZnIrcEIvSHpIOEsyYzdoTGRjRlg2SU42VHBldWk1Z0czWTl3OTNDZHB1eGpMN3RjTHR5V2tNTXIxd29EU0pzZDU1aFgvNVFnbDZxaXR2aTFibkNUZUg2QkhhM2o3RlBTUTRWWXNkajhhN1dVZHdjbnlQdjNiMFlKUG10QisyNFNyeUhIRVhZdnFreGJtSXdHN2V6d0gyUjhVbjBrOXFVRi9xMnd6Zk5DOXRlWWZzbUwwSjlMSkJ1SHkvWWhISWV6djdVM0ZRUDNGUnYxRVRJZVlNMkhmdjBtN1VGdmpzK2g3SFk3RDZOMHYxZTExVmg3NG1SNjRLTk9yR3dPcHUyazhDOVdTalZyTVBOK0hDUWk2a3lRUEVYVEpQbVlzbEh0emZ2cFJKd2IyZEhjMFZ3cm1peGdVOUJiWTNaYkpmTUhONy8rOXpDZmQveld3U0wrNzkzT1Q3dmJxWnpkbFNsN2lUUWRqODExd1dmdkNkY0Y5QnVUM1k0Y0IwTU5uTmorRTRaNEx2SzZNMWJYN1NlMkYxYnVISFZFNVg3bVNsQjc2K3JTdkJiaE8zYllKWjdmUzB5aUxDM0xlUHhyVExjT2taTlRtbVBWeDIveHA0WGNaL2pJZnkySE9ybHppWnRQWEJmWkR4TThrcXBOMElyR2VqT3hWSWNHN2ZLREFXNmRLeGdPMHJvM3orSmxvemI5S3NTNUZPc0M5Q2VheGN0RGE0N1BqK015U2x0ODc3RDQ3UXE1THJBY2NJOUpBWFl4UXgzSDAvY2pBOEh1WmdwQTl6TFVnbDZiMmptSXZkZ3dkUitxNVNnOTA1NjNUdjcrUHhWTEpMYU52cTVyOGJuTUxLRU5ocWtYdXkzaStQMEg3dTM5dzRkZzltVXJRYnVpNHduTVN0blV6ZUVXc25BZlpXekdCN2JaZVlpM3pOWGd0NWZYOEZKTDE5MUhXYWF5ZGMrOXN1S0h0WHROZXJvT0hVUHlTQWVSTE1oMjU3aDdvbjBabWdsQXcvblBZT0xKYjU5aktnWHlLSy81a3BBK3Z0d1ZwalpYcTk2MzFxbS92VEZ4RkJvL1RqdDJqNXkvMGlTL0tJRWJNTFdBdmRGeHEraUgrQW1UTFdTZ1VlWkswSHZEWnJlbitBWXdkZk9qdHhZa3lTajNpMlNKc3dzUVg4bnJ2bjBSVm5qdEV2dE44Nk9YQnVTYUN2RGhtd2xjRjlrUEhDUzNJaGxraGZLQUk5U0tRRXhRNEc3NmQ5TzR1UGpYTjVjOTBVZElyaFBhNzlSODJDa2ozejZvaHpERGg1UDNFUFNyK3NDdG1aYk05eGZPVWx1eER1dFpPRFJMSHBEWWdZZmQ1c3BBZkh4Y1dwUGUvUmEzN3RQSzhhYjNzMnlyRCtaNk5xdExGMXJMVlBacGZUc3VvQXQyWGpnM3N4dWY2bTA2d2NCQjduNG9BendhSE1sSU1td2Q2MENjSXpnSWY1U0F0S1hnSzhPeFU3czdtSU1VazlrUzAvRzV5RDFBeUhLMDZYOVZ0bWR4SU0vTm1BYk05ek5tdGlNMTBvQWExa3FBUzZZdVBObVN2OXVZR1hRazBVcWhabmxlZE9qaVFPdllnMjRVbldwQlpKUFNaT1l0TVVHYkRSd1gyUThqRmtUbTNCNmtJdTVNc0JhS2lXZzRTT0IzRFJUQW93RmJwaDArdFVkbjU4a0dkbk5SZXArei8wNjJQSXArZExIYVRkYUlMbUhwQi9YQld6ZGYxME10TTR5WnJmRCtzNk9xaHlmcXdPSmdJR3ZhU01DM1BSVHgxOWZGKzdUbGttbXFSZTlybkoyTkx2emI5YWZXQmcxKy9Vd1pjK2NQc254K2J1Y0hWVWRINThEaDZHaURWSi9pdVpGNGEranNpdnB5WFVCVzdheHdOM3M5bzM1YUtGVTJPaU5tWXQzUmtyQURYTWxJRWx5ZGpUemNKYk9ueXVPejkrbTdNRDVOTW52T1R1YVB1QzlQYjl5ckgvZEJQQXZDNzVmZlpQeWc4eTd4dWN3Y29TdTZNTERvYVhkaUh0SU5tR1RMV1hNYmw5ZmRaQ0x0OG9BR3pOWEFwcWJPUmRNckh4clZpVGd4cnBiNTc5QnltM1ZNVXZ5WTg2T1hqd29iTC85dUQvUDJkR0xKRCttRHZCTGM5TGhmc0pkenhIbXpWaWVwUjloYnRuN3MzNVlCOTI5TG1Cbk5qTEQzZXoyalhtbkJBQmJNWXdITUt4dWZPR3FLaGJxSTZrZnpuWXZiSG1WOGo3dHQweXlmc2grbTNybTdZc2NuMzlPOHFtdzkvNUprcmVkZTg5MUswZVlKL2s5ZGJnK3YzT0I5dnJoeVNqMU9rT0hIVHNIOWFFRkV2MHd5UEg1NE03M01YekhwbHJLbU4yK3Z0bEJMazZWQVRaKzBUdFJCcHFibXFreUVJdGs4clVxQW5jdWI2NjdwTXpaN2ZNa3o3Y2UxdFh0cEg1TzhpWGx6R0o4bWE0Rjd0MVpLUFUweWYxRDV2cnZWYzIxNmVzY24wK1MvSnJ1UEh3b3ZRWFNQR1kzczdxSGRPL0FvNnpkVXNiczlvMHh1eDAyNy8rVWdNWVBTa0REZ3FuQVhTWWRlejJIS2VzaHdqekpzNTNOakQwN1d1YnM2T2VVMDJKbWtPUHo3dHgzZDZOMyt6U3J0a2ZWR21OeGRxWGwwYXdEZTdmMEZraExwME1hUXlYZ3NUYlJ3LzJsTXE1dGRwQ0xtVElBdUZoaTYrWktnREZCVDd3cDdIMzRiQzhmM2ErRHpsTHV4VjRhbjYyd1ROMzJhTE9meGpnN3FuSjI5Q3pKODVRZit1cUNnSHRJZW0ydGxqS0xqQWN4dTMwVHpHNkg3Wmk1MlB0WDFkVGpyK2FtdHZyM0JxSCt5UG1vK1h1VEpEODF2dzQ2OVByTGVTMzFqZGJESForL0xXYThueDM5eDF1U0Z2RnBxSlg1bFhORmxhczlpRmZuaXN0ZnUzaXVlTnFaVjFMUGhDNGxLRmhtWDJIN3l2T1UwVjVtMUltMUJzcWUzWDQ1WHJlM0Q4Nk9wamsrcjFLdk16QXF0RTRsOTNLZlIxdlMrMXdYREp2enpPVjF3ZE1PMXUxL2hnQ1B0VzRQOTFmcFdxL0QzVE83SGRqbURjRnBrcy9mdkNtb0w1b3VqME96S3pkRGg2bjdTUjUyb0JZand3SGdWbFdTajBtbTN3eEdycDhycGxmT0ZTZk51V0tpbEszeWEwSGIrbnp2aTlLZEhTMXpmUDRpZGVqZTl2dmJseW03UDNaU2J0Zyt6NjRlRHAwZHpYTjgvaXhsclROdzIzNStXK0IyOS8xQi9IMnZDNnJtNzY2dUMrcUg4NGZOY2FvTDkxL3VJWG0wZFFOMzdXVFdaM1k3c0kyYmdZODVPenBkODBKL21tVGFMT1QwM2dVSDBPRWJ5ejZhcFY3a2I3Ym11ZUkweVduemtQWlR5cDZNTStqRW5qMCtINldjQnlEcmo4Rk5xUVBPZDgwMVQ1c2RwdnpBdmNRY1labGRQeHlxSHdTVkhMcS96UEg1aDcwL1VPTytwczA5NUd5dE1WdFArRHB0SHNpL2owbTY5TlNqZTdndk1qN3h4bG4vUnNmc2R0aXFxb2V2OTFuT2puNWVPMnkvZnVFMFMvSXM1U3dxZHJ0NnhnVkEzODhWcytaYzhXeWpRV2Y5a1BiSGxOMFRmOVNSZmZ5eW1QZmUyZEhiVm0zUjJkR0h0TCtmKzZCNXdGWHE5VmlKT2NJeXUxelE5L3FZWERiWDRTV2Vxd1lwODVPeWZid3UrTEZaazJDVDF3V25TWDZPdFhMb3FYVVdUZFVYZVgxbXQ4TjJMMUQ3Y3JHMFRQSTZaMGMvYm0yVzJOblJzbGxVN0xUZ09vMjhLWUFlcTdLTm9QM211YUlPaHR4Yzc4dnE0L3dsZUcyN0h1Mlhna2ZwcndWdTg3dTk5czJ2ajYzUEM5M2ZKWDZhb1MvM2tGZXZDNm90amQycThPdUNpUXNMSHV0Umdmc2k0MG1zMXJzdXM5dUJUWmltbnBId1lZYzNvWE5sQnlqS3U2MCtsTDErYzcxTUhRd3RsWDB2RGxQRzdPRlo4Nm1JOXFtRDFkTUM5bk41NmtVV0o4VmRhKy91T3Z0NzQvSjFnWHQ5MUxTNW90L1hCUzljRjlBM2o1M2hybmY3K2o0ckFiQ0daZW8ra3J2dkpWbm14VDdBdDQ2blhUVlA4dlBPMjNiVU05cDhrbk0vU3BrOS9NNzJyYVhVdGpLbDVRakx0S2xmZmhrdGo3cXczN3RzWDljRjg5UUxzVUp2UERod1gyUThUS2xQMU51ak9zakZxVElBanpSTFBhdDl1cWVML1ZsSzcrY09jUDBtc0l0T1UzOVVmTDZudW41SWlaK0lxaGNLTDFNNXM0Zm5yVmtvOWU3eFc2WCtGR0dibGRoVzVxU3c3WDNYd2dVL1Mxd3c5OURGUml0OGFOYjYydGQxd2R2MGQ2RjZldWd4TTl4UGxHMXRudXpCN3N3NjlucmVOWDMybG52ZkRnRGFhSm5rUmM2T1hyVGdYT0dhZDdjTzNRdjFhanNQaXhxZDlZejhRVUZiWExXaWxjeE45Y09nRHluTG9Ga3N0eFR6RGw0WFBNL1pVUnMrcGV3ZWt0NTRUT0R1NDBEckgreE9sUUY0NUlYUzJ4WmQ3TThLcStISU1BSjZjSzU0bHJPamRseHIxdHRSMlMwNzgyc1JZN1F0NC9QNzQzZlc4dkU3S0t3M2Rta3o4dCsxZk51V2hkV3puUDNmdms4MXJHUGVYQmRNVzdJOTArTEdidjNwTVhpd0J3WHVpNHdQVTlaVDZUYWFIdVJpcVF6QWcyNU8yM1doZEttMHRTaWN2NEF1bTZkdU56WnYyN1d2WGJPelFHQlV3cjFRYWZkdUxkKyt3MExHNXlCbHpjaXZXdjFncUE2RVMvc0UwV0V6RHRqdGRjR3pWbDBYMUdPM3RQUEEwRkRpTVI0NncvMVhKVnViajlZQ0Q3MVErcm1sUFlhbmRnOUFxMjZxbHkzY3RzOTJ6MDRjdWhmYWl0OWJ2bjFQQ3hxZmc0TDJld2x0THo0NFR2RU5weTIrTHZqZDdxRVA3aDI0V3l4MU16ZERCN21ZS3dOdzMyTkdjNkZVdFhMcjZnczR4elNBZmQ5VTE0dWdMVnU1ZGZVRDQ2WGR0SFdsdEpNcDY3cWhiaXZUNXZFN0thU1NKYldUV2FhRVNTWDFNZiswc09OVWlRdjlsbnBkOEtMRnJYRm1kaEY5OEpBWjdvZkt0VGF6MjRIN21xZTlzeEpjTUFGZHN5eDB1K3ViNmpMT2FXeUxkakw5dnRZNVBwOFVVTU5KUWZ0N1dsQVBiMjFsS08rNndLUXRldUloZ2J2RlV0ZS9rWnNxQTNBUDg1UVJ0aWZKSDNZWDBKSGpycHRxNTRwU1RRclp6bExiQ1B4aC82L2grUHd3WmJXVEtTZkVyajh4VWhYMmZqcDB5SFpkRUpPMjZJRjdCZTZMakVleFVNQzZMSllLM01jODVZVHRLZkFpSDZBcjU0clhoVzB2MjFOS200Wlp3ZSszTm50cWZHN3d1cmEwdGtmbHpYSi9HcmFocExBOVNmNnh5K2k2Kzg1d3QxanEraXdNQVh6UE1zbUxnc0wyRkhoVEFsQzZlY3A2TUh0NWZtTjdKa1dNMjdMRzdOVnJuWm45My9ueGVXbGE0QWd0YlpzUEhiSzNjbDN3dXNCdGhrNjdiK0Irb2xScnFRNXlNVlVHY0RML2htWHFBS1hFaTQvS01BUFk2YmxpV2RSV3R6K3dMRmZkdjN0UXdKYVdQZ2JtTFI4SG94WnYxN0NnL2Z5NXVKRjVkbFNsclBCeTBOcnhXdTZ4NlZtQkR6VGRQOUo1M3czY0Z4a2ZwcXllYTIwMFZRTFltLzhyWkR0ZkZ6eGIzQVVUd1BZdEM3MnBacnNtaFd4bjZYMzg1OFpCcDhkbmZUMWI3clY0YVorbVB5eGdHMmVGWEJlOEtQSzZvSDVRQkoxMm54bnV2eWpUMmo0ckFmQ2RpNDdUZ3JkK2FRY0NiTjI4OERaZU03dHdLNTRXTTM3TDF2Wit3eisxZEx0S3loS21CWS9QMHJaZHh1UzZ3RDBrblhlZndQMVFtZFpTSGVSaXJneEFoLzJsQkFDd0Y1TVM3b2M2TUp0eDF2THRHeG1mYXl2M1V4aDE2TG9zYUl0SE9UNGZPSHozM2x3SjZMSnZCdTdheVd6RVZBa0FBT2k1cFJKc1dOMi92UVJWQjZyZDl0Y3dNajdYTml0OGpKYTIvWk1BZE5qM1pyajdxTS82L2xBQ0FBQjZ6cWVoTm0vaWZtaEhTcGloMzc2RktDY0Y3ZUY1QjliSEtPMTk5alFBSGZhOXdIMmlSR3RaSHVSaXFneEF4ODJVQUFCMjdxZEN0clBxU0wzYi9qcEdMZHVla2dMVkxsekxsdllhUnFIdlRFNmwwKzRNM0JjWmo1SU1sYWozSjI0QUFLQjlKb1ZzWjlXUmVyZjlkUXlOejBmcndxY3c1bzVmQU8zeHJSbnVoOHF6dHQrVkFBQUEyS2pqODJGS1dXdnI3R2pXa2FwWExkKytweTBhbjVQQzl1MjhJMk8wclBkYWVlTUU0TjYrRmJqcjM5NjNFeDRBQUZDQ1VTSGJ1ZXhRemY5cCtmWU5XclF0azRMMjY3S0lIdjMzTTNjY0EyaUhXd1AzUmNZREI3KzFWUWU1cUpRQkFBQk1STm13VXU3VjVuWlZMOGZFVHdYVnJVdGp0TFRGcVMyY0NuVFdYVFBjRDVYR1RRVUFBTkJLcFFSVlMvZDNPM1I4UG1ySmxvd0sycTlkV3JpeEtteDdSd0hvcUNlRlg4QTVjUU1BQUgwekxHUTcvN0tyZG1xdzl5MDRQaDhVTkQ2VDdpenFXK0o2Q2NObXZBQjB6bDJCKzBScDFqWlRBcUFuS2lVQWdCMHBLOUJjZHFqeUpieVdOdHpIajF6SGVqMGRIaTg0UDhDOWZCVzRMekllcGF3bjBxMDhjT2pmRHZSR2R4YWFBb0FTakFyYTFubUhybmZtaHQ2OVRBcmJyN09PMWI4eVhuQitnUDE3NG9EbndBRUFBQlJqcEFUY29RMnRZVXRhTUhYWndURXdMMng3Zi9DMkJicm9TVXRQMHFYVHZ4MEFBTmlHUVVIYld0bGR2VE1xYUZ2bkhhei8veFcydlVOdkdhQ0xuaFIrZ25UaUJnQUErcVNjQ1ZMZGF6dlg5dGN6YWNFMkRPM1B2Wm9YdHIyVEFIVFF0Y0I5a2ZFd25qRDI4U1FIQUFDVXdmM2EvbFJLOEEzSDU1UEN0dmlmRHU2RlpZSGp4akVONkp5Yk05d25TckkrQzZZQ0FBQmJNaXhrTzVkMjFSN3NON3djRmxhdEx0NjN6eDNUQVBidlp1RCtrNUtzYmFZRUFBREF4cFUxRTNSdWgrM0ZzS2MvK3pHcXp1MzlzNk5sZ1ZzOThyWUZ1dWFKQTUyVE5nQUFVSVNoRXRCaUp2QzF3N0t3N1IzWVpVRFhhQ216ZWY4b0FRQUFzQVZESmVBNzlubFBQeWlxVW1kSHM0Nk9nWGxoMi92VTJ4Ym9tbjhEOTBYR0krWG81Y2tOQUFBb3cxQUo5cXBTZ20rYUtBR1BNRkFDb0d1dXpuQWZLY2RHTEpVQUFBRFlnaDhLMnRZL09sai9FajdOL0wrOS9OVGo4MEZoKzdKeU9HbU5rUklBWFhNMWNOZHZiVFBtU2dBQUFHekJVQW40amxIUGZ1NWpWUjBlQStVOTdDcnZnUTNBTjVuaHZtRUh1VmlxQWdBQUFEMHlVQUxXTUZJQ29Fc0U3cHRWS1FFQUFMQWxFeVdncFVhRmJlL1NMZ05nVzU0a3lTTGpRVHlSM29SS0NRQUFBTmlUa1JMY3kxOGRmbTNMQXJkNVlrZ0NYZkxFU1JrQUFLRGxqcytIaXNBOURQYjBjNThxZld2TWxRQmd2d1R1bTdWVUFnQUFZQXVHU2dCMDFBOUtBSFRKZjV0ZkIwcXhFWDhwQVFBQVFON2srUHlOTXZUR1VBa3dmZ0JxbHpQY2Zmd0xBQUNndlFaS3dMMGNuMC8yOEZPSGhWVnBacUFBc0MxUFhMd0JBQUMwM2tnSmdJNGFLZ0hRSlhxNEF3QUFBSTl6ZkQ1U2hGWlpGcmpOUTdzTjZKSW5TZ0FBQUFBODBrQUpXdVRzYUs0SUFQdjFaSkh4UkJrQUFBQmE3UWNsQUFCb1B6UGNBUUFBMm0rb0JOelRhTWMvYjZEa3JHMC9pLzBDYk1XVDZOOE9BQUFBWFRIWThjOGJGVmlqcFdFQ3dMWThpYWZSQUFBQVFGL29jdzdBRm1rcEF3QUFBQUFBRy9Ba3lWTmxBQUFBYUxXQkVnQUF0SjhaN2dBQUFPMDNVZ0phNmljbFlBTW1TZ0IwaGNCOXMvNm5CQUFBQVBUSVFBa0FZT1ZKa3FFeWJNeElDUUFBQUFBQStrbmdEZ0FBQU4zeGd4SUF3UDVvS1FNQUFBRGRNVlFDQU5nZmdmdG1UWlFBQUFBQUFLQ2ZCTzRBQUFBQUFMQUJBdmNOVzJROFVnVUFBQUFBZ1A0UnVHL2VRQWtBQUFBQUFQcEg0TDU1SXlVQUFBQUFBT2dmZ2Z2bURaUUFBQUFBQUtCL0JPNmI5NU1TQUFBQUFBRDBqOEI5ODRaS0FBQUFBQURRUHdMM3pSc3BBUUFBQUFCQS93amN0MkNSOFZBVkFBQUFBQUQ2UmVDK0hVTWxBQUFBQUFEb0Y0SDdka3lVQUFBQUFBQ2dYd1R1Mi9HVEVnQUFBQUFBOUl2QWZUdUdTZ0FBQUFBQTBDOEM5KzBZS1FFQUFBQTlVQ2tCQUt3OFNUSlhoczFiWkR4UkJRQUFBRHJ1SHlWZ0EyWktBSFRGa3lSTFpkaUtrUklBQUFBYk1sY0NBSUQyMDFKbWU1NHFBUUFBc0NGTEpRQUFhTC8vdW5EYm1wRVNBQUFBUFhXYTVMTXk3SVY3ZkFEWW8vOG0rU3ZKb1ZKczNIQ1I4ZkFnRjVWU0FBQUFQZk5Qem81bXl0QUx5K0syK1BoOG1MT2pidDZySDUrUERFbUEvZEpTWnJ1YzZBQUFBT2l5ZVlIYlBPencvaGdVdWRVZTBBRWQ4aVJKcFF4Ym80ODdBQUN3Q1hNbEFBQm9QNEg3ZGsyVUFBQUEySUQvVXdJQWdQYlRVbWE3Um91TUI4b0FBQUJBUjFWS2dERUVzUExrSUJjelpkaXFpUklBQUFCcldpb0JyZFRWeFVmWkpXTUk2QlF6M0xmdkZ5VUFBQURXTkZjQzRCNEdTZ0N3WDVlQiswd3B0bWFpQkFBQUFIVFlzckR0SFhWNFg1VDQyaXB2SWFCTG5oUjZjaXpKY0pIeFVCa0FBSUExdUdlanplYUZiZS9BTG11VmY1UUE2SkxMd1AwdnBkaXFReVVBQUFBZTdleG9yZ2dBQU8xM0diaFhTckZWK3JnREFBRFFWWlVTc0lhWkVnQmRJbkRmamNraTQ0RXlBQUFBYTNEZlJsdVYxaExrZngzZUYwOE5SNEQ5ZXBJa0I3bVlLY1hXSFNvQkFBQ3doa29KYUtsbFlkczdzc3NjMndDMjVZa0QzTTU0eWd3QUFLeGpXZEMyL21SMzljcGNDWGkwczZOS0VZQXVFYmp2enFFU0FBQUFhL2lyb0cwZDJGMndGNlBDdHJleXk0Q3V1UnE0LzZFYzI3M2dYR1I4cUF3QUFNQWpMWldBVmpvN21oVzJ4Wk1PNzQxQllkdGJlUU1CWFhNMWNKOHJ4OWI5b2dRQUFNQWp1V2NEdXFaU0FxQnJCTzY3ZGJqSWVLQU1BQURBSXl3TDJ0YUozZFU3czZLMjl2aThlL2ZteCtjbHZ1Lys4ZFlCdXViZndQMGdGMVY4UkhIYkJ0SExIUUFBZUl5em83a2l3TWFNbEtBVkhOZUF6bm5pUUxkejJzb0FBQUNQVlJXenBWMmNRY3kzV0JkdS80WUZidlBTYmdPNjVva1Q1TTVwS3dNQUFEeFdWZEMyanV5dVhsa1d0cjJURHU2RFlYRmJYTjZDdXdEZmRUTndkNkRialJNbEFBQUFIbUZlMExZTzdDNWprNTM2b2JEdHJld3lvSXUwbE5tUFg1VUFBQUI0aEpJV0dCelpYYjB5TDJ4N24zWndId3dMMjk3SzJ3Ym9vbXVCKzBFdWxoRzY3K1RDYzVHeGkwOEFBT0NoU3JwZis4SHU2cEd6bzJYMDQ5NjNZV0hicTYweDBFbFBidm16bWJMc3hFc2xBQUFBSG1oZTBMWU83UzdqczhVbUhheC9hZSs1eWxzRzZLTGJBbmRQR0hmRDRxa0FBTUREMUxPSXEwSzJkbUtIOWM2OHFLMDlQaDkycHZMSDV5UGpCYUFkekhEZm4wR1NRMlVBQUFBZXFDcG1TN3NVYUhJZi94UzJ2VjBhbitXOWxyT2p1YmNNMEVWZkJlNzZ1TytVdGpJQUFNQkRsZlNwNUpIZDFTdnp3cmEzUytOelpLd0F0TU9UTy83OGQ2WFp6UWx4a2ZGRUdRQUFnQWVZbDNUUFkzY1pteTMyVTRkcS81T3hBdEFPZHdYdVU2WFptVitWQUFBQWVJQjVRZHY2MU83cWtiTFdHRWkwbE5tbnY3eGhnSzY2TlhBL3lNVTh5Vko1ZHVKa2tmRlFHUUFBZ0hzNU82b0t1bCtiMkdHOU15OW9XN3MwUGtlRmJlL01Xd1hvcWlmZitIOVQ1ZGtadmR3QkFJQ0htQld6cGNmbkU3dXJWOHFhdVh4OFBpcSs0aVcreHl5WUNuVFl0d0wzUDVSblowNFdHUStVQVFBQXVLZVNRczFmN0s1ZW1SVzJ2YU1PMUh4a2pBQzBoeG51N1RCSThrb1pBQUNBZTVvVnRLMFR1NnRIem81bWhXMXhGOVlaS0czQlZCTThnVTY3TTNBL3lNVXlRdmRkc25ncUFBQndQMldGbXFNY253L3R0RjZaRjdTdGt3N1V1N1RYTVBNV0FicnN5WGYrLys5S3REUERSY1lueWdBQUFOelRyS0J0UGJTN2pNMjIzb3NYL1VDbzN2YlN0bi91TFFKMDJmY0M5NmtTN2RRYkpRQUFBTzZwcExZTVB0SGJMMzhWdHIyVGdtdGQycmJQYzNhMDlCWUJ1dXliZ2J1Mk1qdG5sanNBQUhCZnM0SzJkWlRqODVGZFpteTJWTWw5M0V2YmRwMFVnTTU3Y28rLzQyQzRXMmE1QXdBQTMxZjNjVjhXdE1VdjdiVGVqTTBxU1ZYUUZoOFdYTzNTdG4zbURRSjAzWDBDOTZreTdaUlo3Z0FBd0gzTkN0cld3eHlmRCt3eVk3T0ZCa1YrQXFQZTVyTGVVMlV0K0F6d0tOOE4zTFdWMlF1ejNBRUFnUHNvNlJQSmd5UW5kdGtOeCtlREhKLy8yY0dIRWFWOVdyN0VkUVpLMithcE56elFCMC91K2ZjK0s5Vk9tZVVPQUFEY3g2eXc3ZFZXNXFvNlpQK1NaSlRrbGJHNVY0Y0YxcmkwYmY3RG14N29nM3NGN2dlNW1LYXMzb0JkOEdhUjhVQVpBQUNBTzlXOXN1Y0ZiZkV3eCtldjdMamNETnVUNUUyT3o0Y2RHcHZMQXNmbXBLRHhNMHBTMm5pWmV1TURmZkRrQVgvM1ZMbDJmTEx2M2d3SEFBQmc4MHByM2ZHbTk3M2N2dzdiVjdVeE52ZnBWOXU2TmZQbUFTRkE1ejBrY05kV1p2ZGVtdVVPQUFCOHg3U3c3UjJrejVPTDZwbkpmK2Jyc0QxSlRqbzF5NzI4c1hsUzBNT2drOEpxTzNPb0J2cmkzb0g3UVM3bUtldmpZRjNRN3d0UkFBRGcrODZPNWttcXdyYjZUUk04OTB2OW1yL2syNjFBM2h1YmUzVlN3RGc2U1owWGxNUWtUcUEzbmp6dzczOVVzdDFmaUM0eUhpb0RBQUR3RGRNQ3QvbFRyL1pRM1IvOFM3NGZsQjRXMVV1OGUyT3poSVY5UzJzblV6VVBYd0I2NGFHQit6UVdUOTJIOTBvQUFBQjhRNG16UjBjNVBuL2JpNzFUejBpK1Q5aCtxVXU5M1A4b2JIdUh6ZjVxNjFpYUpKa1VWdE9wUXpUUUp3OEszQTl5c1l6RlUvZmhjSkh4UkJrQUFJQmIxYk5INXdWdStadU96ZWIrMnZINSt6eDhOditrTTNVNU81cW12SWw3YjJ6YlJta25BL1RLazBmOEcyMWw5c01zZHdBQTRGdEtEYlYrNjloQ29iWGo4MEdPejMvTDQ5Zmw2bExMbldsaDJ6dHM1YWN2eXB6ZFB0ZE9CdWliQndmdUI3bW80dU5BK3pCYVpQeEtHUUFBZ0R1Y0ZycmRnOVNoKzZBemU2SmVIUFhQSklkcmZKZDJ0elo1bUJJZkJyMXM0WmcwdXgyZ0FFOGUrZS9NY3QvVHlYV1I4VUFaQUFDQXI1d2RMVlB1NUtoUmtpK2RDTjJQejErbER0dUhtN2dIN01qWW5DV3BDdHZxUWRyMEtZUDY0Y3Vrd0wwL0RVRFBQQ3B3UDhoRmlTZkxMaGhFYXhrQUFPQnVKYzhtSGFYazBQMzRmSmpqOHk4YnZtY2JOZ0YrRjB3TDNPYkRWbnpLb0g1UHZDOXluNThkVlE3TFFOODhXZVBmdmxPK3ZUaXhnQ29BQUhDcmVvSEtxdUJYTUVxSm9mdHFWdnMyN3RYZWRLVGRUcW1mbEgvZnRBamFwOTlTVDhBcmpYWXlRQzg5T25BL3lNVnB6SExmM3drZkFBRGdkcVczQUIwbCtiTUZJZWYzSFo5UGNueitaM09QTnRqU1R4bms4UXV2dGtjOTAzbFc0SllQa256YTIwT1BldkhXU1lGMXE1b0hnQUM5ODJUTmYrOXA1WjR1UUJjWnYxVUdBQURnRnFkSmxvVy9obUhxMFAxVks3ZXViaC96S2NtWDFBOEl0dTFsUjJhNWw1b2hqTEtQVDE3VTdXemUyTmNBWlZrM2NQL1FnUXU1VXIxWlpEeFVCZ0FBNEpxeUYwKzk2WDJPejcvaytMd2Q5ejZyb1AzdkpDYzcvTW1EZEdFQjFiT2owNVNiSVl5eXk5QzlEdHMvRmJ5M1B6Z1lBMzIxVnVCK2tJdGx5dis0WXNrK0tRRUFBSENMTHEyNU5VbnlkNDdQMys2eHJjZGtUMEg3VmE5YTgrQmhQU1ZuQ0tQVW9mdG95K1B0cFBENy9kUG13UjlBTHozWndQZjRFTFBjOTNiaHVjajRsVElBQUFEWDFQMnlUenYycXQ2a0R0N2Y3eVI0cm1lenY4cngrZCtwVzhlY3RLUUdwU3Q5WEk1U2grNnZ0akRtQnMyRG5kSW4xM1hwZ1IvQWc2MGR1SnZsdnY4TExxMWxBQUNBVzNReDlCcWtYa0QwNzZiVnpNbEd3L2Q2SnZ2YlppSFV2MU12aHRxbSs2MlQ0bWU1ZCtOaDBDQ3Jka2VURFkyOXd5Ui9waDBQZHRZeGJmWXhRRy85ZDBQZjUwT1NsOW5lcXV4OCswVC9LY2t6cFFBQUFQNTFkbFRsK1B3MDVRZDRkNWswWDhueCtUekpQTWxmemEvVk4wTy91aVhJSVBWczVSK2FYeWVGdk80dTNQOTk3TWk0ck1mZzhma3N5ZWVtUi8zRDFPMWpmaTFvL04xbjN3TDAya1lDOTROY0xCY1pmMHczUHQ1VzVFbCtrZkdyZzF4OFVBb0FBT0NLZCtsdTRIN1ZxUGxhT1Q3djdQMWZqczhuT1R1YUZmc0t6bzdtVFVnOTZjdytxZmZMcDlRTEZ2K1ZaTmE4MXRtVk1Ubks2a0hQMCtiZkRUbzBObWRGajB1QURmbnZCci9YaDVqbHZrOXZGaGxQRDNKUktRVUFBSkNrRDdQY2Uzdi9sOHRBdDF6djBwM0EvYXJENXF1ZWtOamRCejkzN1ZPQTNudXlxVytrbC92ZURaTDhwZ3dBQU1BTjc1SXNsYUZUSmh2ckhiNHY5VXpvbVYzWkdWT3oyd0ZxVHpiOC9UNGtxWlIxYjBhTGpOOHFBd0FBOEsrNmw3bkpVZDN6cVFPdndZem83bml0QkFDMWpRYnV6U3gzSjh6OWVyUEllS0lNQUFEQUZSOWljbFRYREpzRk44dGxsbnRYbkg1emtXS0FudG4wRFBjYzVPTFVoZHplZlZwa1BGQUdBQUFnU1hKMnRJd1pxRjMwcGdPdjRZWGRXRFRIRm9BYm5tenArenBoN3RjdzNmaDRJUUFBc0NsblI5T1lUZHk5ZTcvajgxZUZqOHNxeWFsZFdheVB6UU05QUJwYkNkd1BjakZ6SWJkM2g0dU1YeWtEQUFCd3hZdFlRTFZyM3VUNGZGRDRhM2h0WEJacG5yT2p0OG9BY04yVExYNXZzOXhiY09HMXlIaWtEQUFBUUpMTDJjVFczZXFXUVpKWGhZL0xwWEZaSksxa0FHNnh0Y0Q5SUJkVjZvVjUyTytGbDM3dUFBREF5dG5SaC9oRWN0ZThMSDZXZXowdTUzWmxNVDQwaTk0Q2NNT1RMWC8vZC9HeHNIMGJSVDkzQUFEZ09xMWx1cVhxU0I5dG41UXZaYno1UkFMQW5iWWF1Qi9rWWhrZk1Xb0QvZHdCQUlDVnVyV01jTE1iNWttZWRXUmN6aVBJTGNFTEM2VUMzRzNiTTl4emtJdlQrRmhZRzd4ZlpEeFJCZ0FBSUVseWRqUk5jcW9RUlpzbmVkYXA4TE5laEhOdTE3YVdWaklBMy9Ga1J6L0h6SWwyK0UwL2R3QUE0RjluUnk4aTNDelZQRjBMMjFlMFBHcnJtRHM3MHNVQTREdDJFcmdmNUdJZUM2aTJ3U0RKRjJVQUFBQ3VlQjdoWm1ubTZXN1lmdGxhUnJEYkxzdm1XQUhBZHp6WjRjOTZsM3BoRGZacnRNallJcW9BQUVDdDd1ZitUQ0dLTVUrWHcvYlZ1RHlObGtkdDhxSTVWZ0R3SFRzTDNDMmcyaW9uRmxFRkFBRCtWYzhvMWdxMC9XYnBROWkrOGpwYUhyWEJ1MmJOQndEdVlaY3ozSE9RaTJrU0IrbDJzSWdxQUFDd1VzOG9GcnEzMTJuT2p2b1V0cWQ1clZvZTdYL2N2VlVHZ1B0N3NvZWZhZkdUOXZodGtmRklHUUFBZ0NUYWVMVFhhYlBBYlIvSFpKVzY1ZEhTTU5pNWVXL0hIY0FhZGg2NGF5M1RLb01rbnhZWkQ1UUNBQUJJa2laZ08xV0kxbmpSKzlEVElxcjdNSSsxSFFBZVpSOHozSE9RaTlQVXZlZll2MUdTTDhvQUFBRDhTK2plQnN2VS9kcnRoM3BNbmtiTG8xMlpwMTlyQlFCczFKTTkvbXl0WmRwanRNajRreklBQUFEL3FrUDNEd3F4Ri9QVWdlZE1LYTZOeWRNSTNYYzE5cFpLQWZBNGV3dmNEM0pST1ZHMnlza2k0L2ZLQUFBQS9PdnM2TFg3dHAwN1RSMTR6cFhpMWpGNWFreHV6VHpDZG9DMTdYT0dldzV5TVUweXRSdGE0OVVpNHhObEFBQUEvclVLT0plS3NWWExYUFpyRjNqZWQweXlPZk1JMndFMjRra0x0c0dGVzd0OFdtUjhxQXdBQU1DLzZvRHpXWkpLTWJaaUh2M2FIek1tNVFtYk1ZMndIV0JqOWg2NEgrUmltZVM1WGRFcW54WVpqNVFCQUFENFY5M2k1T2NrTThYWXFIYzVPL3BaQzVsSGpjblQxQStDbG9yeGFCOXlkdlJjMkE2d09XMlk0WjZEWE14aU1aNDJHU1Q1SW5RSEFBQ3VPVHRhNXV6b1daSjNpckcyZVpLZmMzYjBWaW5XR3BOMUhldDZjbi9MMUMyTVhpc0Z3R1k5YWN1R0hPVGl0Uk5rcXd4U2grNURwUUFBQUs2cFEySWg1K01zWTFiN3BzZGpsYk9qbjJNaTMzM05vNFVSd05ZOGFkbjI2TC9XTG9Na3Z5MHlIaWdGQUFCd1RSMFdtKzMrTU5PWTFiN05NZms2ZGN2YXBXTGM2VVBxc0gydUZBRGIwYXJBL1NBWDh5USt6dFF1bzlRejNRZEtBUUFBWEZPM21Ia2J2ZDIvWjVZNjVIeWVzNk5LT2JZNkpxZEpma3o5Y0lPVnFobURyL1ZyQjlpdXRzMXd6MEV1VHBPYzJqV3RNb3JRSFFBQXVNdlowYnpwN2Y0aWRiQkhyVXJkSi90WnpvNW15ckd6OGJqTTJkSHoxTFBkamNmNlV5Zy9HNE1BdS9Ha3BkdWxuM3Y3akNKMEJ3QUF2dVhzNkRSblJ6OUc4RDVQSGJUL3FFLzJYc2ZqTlBXbkw5NmxuMjFtcGtsK3pOblJXN1BhQVhhbmxZSDdRUzZXMGMrOWpVWkpQaWtEQUFEd1RmME4zcWVwMjNiOExHaHZ6Vmk4MnZhb0wvdGtGaTJNQVBibXYyM2RzSU5jekJjWnY0NkF0MjBPRnhsL09zakZDNlZZK3dLbzdlWWRxWFVWL1VTTjZkVlk2REpqdlh6emdzYWEydHZHaDFvV2NveGFPaFJ0V0IwNm4rYjQvRERKeXlTVERyN0taZW9nOTZOd3M5VmpzVXJ5SXNmbjc1SzhTWEtZWk5DeFZ6bHR4cUZyUXRjRnJndGNGN0JILzJuN0JpNHkvcFRreEs1cW5WT2hPd0FBOENESDU4UG0vdTdYSk1PQ1g4a3lkYmo1ZTlPMmhQTEc0cUFaaXk4N01CWlA0NEVQUUd2OHA0U05YR1Q4WitwMkpyU0wwQjBBQUhpYzQvTlI2dUQ5TUdVRW5sWHFHWmxDOXU2TnhjbVZzVGdvWkt1blNUNGJpd0R0VTByZ1BranlkN3IzY2E4dUVMb0RBQURycVdlK1Q1SThiWDRkdG1Dcmxxa0Q5aitTekhKMk5MZWplakVXRDV0eGVKaDJQUWhhNXZKVEZmVjRYTnBaQU8yenlQandQd1Z0N0NqSm4zWmJLd25kQVFDQXpha0QrRkh6OVZQcTRITzB4Wjg0VHoyRC9hL212K2ZhYzNEbFFkQlB6ZmliN1BDbno1dXZ2K0tCRDBBUm10Ym92Lytuc0kwK2lVVlUyMnFhNU1WQkxwWktBUUFBYkVVZGdBNVRmL3A1ZE9YLy9KUnZmeUs2U3ZMUGxkL1AvdjF6d1RvUEc0T2pyQjRBL1pEVkxQakpJNzdiUFBYTTljdnhXVFZqY3FiUUFPVm91ck84VDdJOHlNWHIveFQ0QWl5aTJsN3pKTStFN2dBQUFQVGE2dUhRcGFWWjZnRGQwNFR0WDVKVUI3bDRuaFRTdy8yV0YvSWx1LzBvRi9jM2o5QWRBQUFBQU9pd3BnWDZaVGVXZi9QUUo0VytudWVwZzEzYVo1VGtTL04wQndBQUFBQ2dVNXF3L1V2cVR6TmRtM3hjWk9EZXZJQVhxWHVkMFQ2akNOMEJBQUFBZ0k1cDFobjlzL250VjUwK1NwM2hub05jekpNOHM0dGJhNVRrNytacER3QUFBQUJBMFJZWnYwM2RSbWFaT215ZjMvdzcvK25BaXp6SnFsY083WFBuNEFNQUFBQUFhTHVtazhmN0pDZk5IejAveU1YMHRyLzdwUFFYZTVDTDB5VHY3UGJXR3FSdUx6TlJDZ0FBQUFDZ0pJdU1oNm43dFo4MGYvVGlyckE5NmNBTTl5c3YvTk9WRjAwN3ZXZ2VrQUFBQUFBQXROcVZ4VkVIelI5OU45OTgwcFVYZjVDTEYwbW1oa0dyZldwYUFBRUFBQUFBdE5hVnhWRUh6Ui9kYXpMeGs0N1Y0VVdTdWVIUWFwK2FUeU1BQUFBQUFMUk9rMTllelREdjNibmpQeDBzeGlEMU5QK1JvZEZxcDBsZUgrUmlxUlFBQUFBQXdMN2RrUzAvcUUzMmZ6cGFtR0d1VC9lbm5lWkpuZ25kQVFBQUFJQjlXbVE4U2ZKYnJtZktEMTZUOGtrWGkzT1FpeXJKc3lSTFE2WFZSa24rYkJZZkFBQUFBQURZdVVYR3IzSjljZFRrRVdGNzB0RVo3bGNLTmJxbFVMVFBNc256ZzF6TWxBSUFBQUFBMklXbWhjeW5KSWRYL25pWk5iTEsvL1NnYUtNSTNVdnhxS2RHQUFBQUFBQVAwZVRHdnlVWlh2bmpaZW9XMlBQSGZ0OG5YUzljVTV6WGhsQVJQalVyQUFNQUFBQUFiRVhUUXViUGJEaHNUM293dy8xS0VVOVNmenlBOXB1bC90akdVaWtBQUFBQWdFMjRvNFZNa3N4VDU1SFZ1ai9qUHowcjZFbUU3cVdZcDI0eE0xY0tBQUFBQUdBZGQ3U1FTZW9jOHRtbUp2OCs2Vk5SbS83Z0x3eXZJb3lTZkZsa2ZLZ1VBQUFBQU1CajNkRkNKa2xPczhHd1BlblpEUGNyQlQ2Sm1lNGxlWGVRaTdmS0FBQUFBQURjMXpkYXlDVEo2VUV1Tmo0NSt6ODlMdlpKaE80bG1hWnVNYk5VQ2dBQUFBRGdXeFlaVDFLM2tCbmM4cjlmTk4xUU51NUpYd3V1dlV4eERsTzNtQmtwQlFBQUFBQndsMFhHNzVOOHlkZGgrekpiRE51VEhzOXd2MUw4azVqcFhwSmxrdGZiZkZNQUFBQUFBT1ZwSnV0K1NyMCs1RTNMMVAzYTU5dmNoaWQ5M3dsbXVoZG5rT1JUODVRS0FBQUFBT0J5WWRRdnVUMXNueWY1Y2R0aGUyS0crOVVkY2hJejNVc3pUL0w4SUJlVlVnQUFBQUJBL3l3eUhxYk9kU2QzL0pYVDFCMHpscnZZSG9INzlaMXpFcUY3YVphcCt5NU5sUUlBQUFBQSttT1I4V0hxUEhkd3gxOTVkNUNMdDd2Y0pvSDcxenRwa3J0WHI2VzlkdjdtQVFBQUFBQjJiNUh4SUhYUWZuakhYMWxtVDVOMEJlNjM3N0JSYmwvRmxuYWJOVytrU2lrQUFBQUFvSHZ1TWF1OVN0MkdlcjZQN1JPNDM3M2pSaEc2bDJnWkxXWUFBQUFBb0ZQdU1hczlxU2ZrUHQ5VnYvYmJDTnkvdlJOSEVicVg2c05CTGw0ckF3QUFBQUNVN1I2ejJwT1d0SndXdUg5L1p3NVNoKzRqMVNqT1BQVnM5N2xTQUFBQUFFQlo3am1yZlprV2RieDRZcmQ5Vy9QeGcyZXB3MXZLTWtyeVpaSHhLNlVBQUFBQWdISTBzOXIvenJmRDlubVNaMjFxTDIyRysvMTM4Q0RmZjVwQ2UwMVRQK2xhS2dVQUFBQUF0Tk1pNDJIcUhIYnluYjk2bXVSMTIvSStnZnZEZC9pbkpDY3FVYVJsNmtVVFprb0JBQUFBQU8zU2RLcDRrKyt2cWZuaUlCZW5iWHdOQXZmSDdmaTN6WTZuVEI5U0w2S3dWQW9BQUFBQTJLOUZ4cU1rNy9QOVdlMVY2Z20xODdhK0ZvSDc0d2ZCU2VxUE5sQ21lU3lvQ2dBQUFBQjcwN1R4ZnBYN1RXNmVwb0NXMFFMMzlRYkVKTWx2K2Y1SEhHaXZkd2U1ZUtzTUFBQUFBTEE3VGJiNktjbndIbi85OVVFdVBwVHd1Z1R1NncrTVVlclFmYWdheFpySGJIY0FBQUFBMkxwbVVkVDNTUTd2OGRlcnRMeUZ6RTFQN09MMU5Edjc1OVNoTFdVYUpmbXo2YzBQQUFBQUFHeEJzeWpxbjdsZjJENU44bk5wazJUTmNOL2NZQm1rZmpKem9ocEZtOGRzZHdBQUFBRFltS1o5elB2VUUxKy9aNW02aGN4cGlhOVY0TDc1d2ZNMjkydnlUN3ZwN1E0QUFBQUFhM2pFSk9WNUNwOE1LM0RmemtBNmFRYlNRRFdLVnZ3YkhBQUFBQUQyb1drZjh5YjN6MGcvSE9UaWRlbXZXK0MrdlFFMVN2SWxRdmN1TU5zZEFBQUFBTzZoYVIvektjbndudjlrbVhwaDFGa1hYci9BZmJ1RGE1QTZkQitwUnZHcTFMUGRaMG9CQUFBQUFOY3RNaDZtN3ZweCtJQi9OazJkdVMyN1VnZUIrL1lIMmlBV1UrMlNENmxudkMrVkFnQUFBSUMrYS9MUFYwbGU1djdkUHBhcE03WVBYYXVId0gxM0ErOVY2dUNkOGkxVFAzbWJLZ1VBQUFBQWZkV3NaZmttOTI4Zms5VHJKajQveUVYVnhab0kzSGM3QUNkSmZvdSs3bDB4U3gyOFYwb0JBQUFBUUY4ME9lZWJKSk1IL3RQT3I1VW9jTi85WUJ5bUR0MUhxdEVKeXlRZkxhb0tBQUFBUU5jMTJlYWJQTHg5OWp6MXhOVjUxMnNrY04vZjRQd1VmZDI3Wko3a3RVVlZBUUFBQU9pYUszM2EzenppbjM5SWo5WkVGTGp2ZDZDZXBPN3JQbENOempoTkhid3ZsUUlBQUFDQTBqVnJVNzdKd3pQTUt2V3M5bG1mNmlWdzMvK0FIYVZ1TVROVWpjNVlwcU9yTEFNQUFBRFFENDljRVBYU2gvUm9WdnRWQXZkMkRONUJrazlKRGxXalUrYlJaZ1lBQUFDQWdxeXhJR3JTMDFudFZ3bmMyeldZWDZWdU1VTzNuRWFiR1FBQUFBQmFyT25FOFQ2UEM5cVRIczlxdjByZzNzNkJyY1ZNOXl5VGZEekl4VnVsQUFBQUFLQXRGaGtQVTg5b1Azbmt0NmpTODFudFZ3bmMyem5JQjlGaXBxc2NnQUFBQUFEWXV5YURmSi9IQisySldlMWZFYmkzZTlDL2loWXpYVFZMSGJ4WFNnRUFBQURBcmpSQis2c2tMNU1NSHZsdHFwaFVlaXVCZS92ZkFLTm9NZE5sSCtJcElBQUFBQUJidHFHZ1BhbXpyTGNxZWp1QmV6bHZoblUvM2tGN0xhTy9Pd0FBQUFCYnNNR2dmWjU2VnZ0Y1ZlOG1jQy9yelhHU09uZ2ZxRVluVlVsZUgrUmlxaFFBQUFBQXJHdVI4ZHVzSDdRdlU4OXEvNkNpM3lkd0wrOU5Na3pkWW1ha0dwMDFhdzVpTTZVQUFBQUE0S0dhaWJ0dnNuNmI2bG1zUS9nZ0F2ZHkzelJ2bXpjTjNUVk5QZVBkQVEwQUFBQ0E3OXBnMEw1TUhiUlBWZlZoQk81bHY0RW1TVDdGZ3FwZGQ1bzZlRjhxQlFBQUFBQTNiVEJvVDVJUHFic3ZMRlgyNFFUdTViK1pCckdnYWg4c2szeE04c0hCRGdBQUFJQU5Mb1o2YVo1NjB1ZE1kUjlQNE42ZE45aGg2dG51QTlYb3RHVXNVZ0VBQUFEUVcxc0kycGRKUGg3azRxM3Fyay9nM3IwMzI2Y2toNnJSZVZYcTRQMVVLUUFBQUFDNmJ3dEJlMklOd1kwVHVIZnp6WGVTdXMzTVFEVTZyNHJnSFFBQUFLQ3pGaGtQVTdlVDNtVFFYcVVPMnFjcXZGa0M5MjYvRVQ4bG1haEdMOHlqeHhZQUFBQkFaelQ1M3B0c2Z1M0dkN0ZPNE5ZSTNMdi94bnpWdkRFSHF0RUxzOVF6M21kS0FRQUFBRkNlUmNhajFMUFpUemI4cldkSlhtZ2ZzMTBDOTM2OFNZY3gyNzF2WmhHOEF3QUFBQlJqa2ZFazljVFp5WWEvZFJYdFkzWkc0TjZ2Tisycm1PM2VON01JM2dFQUFBQmFxMW1QOFdXUzBSYSt2Zll4T3ladzc5OGJlSmg2UWRWRDFlaVZXUVR2QUFBQUFLMnd5SGlRMVVLb3d5MzhpRm0wajlrTGdYdC8zOVNIcWR2TURGU2pWMllSdkFNQUFBRHNSVE1aOWlSMTBEN1l3bytvVWdmdE05WGVENEY3djkvZ2c5U2grNkZxOU00c2duY0FBQUNBbmRqaVFxaVhsa2srSHVUaXJXcnZsOENkeXdVWlBtVTdIMStoM1diTndYaXFGQUFBQUFDYjFYU1plSm5OTDRSNjFXbnFSVkdYS3I1L0FuY3UzL3lESks5U0w2cEsvMVNwWjd5ZktnVUFBQURBNHpVNTIySHFuRzI0eFI4MVN4MjB6MVc5UFFUdTNEd2dqRkxQZGgrcFJpOVZFYndEQUFBQVBGalRuLzJ5YmN4Z2l6K3FTaDIwVDFXOWZRVHUzSFdBZUpYNktkeEFOWHFwU3ZJNXlRY2ZSd0lBQUFDNFc5T3UrV1cydjA3aU12cTB0NTdBblc4ZExBYXhxR3JmTFpOOGpPQWRBQUFBNEY4N2JCdHo2VFQ2dEJkQjRNNTlEaUNUV0ZTVitzRCs3aUFYbFZJQUFBQUFmYlREdGpHWFp0R252U2dDZHg1eVFIbmJIRkFHcXRGcjA5UWZYNW9wQlFBQUFOQUhpNHdQVStkaWt4Mzl5Q3JKQy9sTGVRVHVQUFRnTWt6eVB0ck1VRDloL1d5QlZRQUFBS0NMbXJZeHI1TDhtdDExZnFoU2R4ZzR0UWZLSkhEbnNRZWNTYlNaWVhVaStKamtWQjh4QUFBQW9IUk43dlZyNnJZeHU3S01kZlE2UWVET3VnZWd0OUZtaHRXSjRUUjF1NWxLT1FBQUFJQlNOTFBaVDFMblhNTWQvL2pUV0JDMU13VHViT0tBTkl3Mk0zeDlvdmlzenhnQUFBRFFabnVhelg1cG1qcG9yK3lKN2hDNHMra0QxUHNrSTlXZ01VODk0LzFVS1FBQUFJQTIyUE5zOXFSZUYrK2RpWXJkSkhCbkd3ZXRrOVRCKzBBMWFGUkpQa2NmTWdBQUFHQlA5anliUGFrbkpyNFd0SGVid0oxdEhjQUdTZDZrWHNrWnJqcU5kak1BQUFEQURqU3RrQSt6djluc1NUMFI4WjBPQVAwZ2NHY1hCelg5M2JuTlBOck5BQUFBQUZ1d3lQZ3c5V3oyd3oxdVJoVkJlKzhJM05uVlFXNFMvZDI1M1RMMXJQZVBGZ2tCQUFBQUhxdVorUGt5ZGN1WXdSNDNaWm5rWTdUVzdTV0JPN3MrOEoya2JqVXpWQTF1TVUzZGJtYXFGQUFBQU1EM05HMk5EMU1IN2FNOWI4NHlndmJlRTdpenJ3UGhxK1pBT0ZBUmJsR2xYbVQxMUt4M0FBQUE0S2FtWmN3djJkOENxRmN0STJpbklYQm5ud2ZHUWVvMk15ZXF3VGRNWTlZN0FBQUE5TjRpNDFGV2ZkbUhMZG1zMHlTdkJlMWNFcmpUaG9QbE1CWlc1ZnVxbVBVT0FBQUF2ZExrUm9lcGcvWlJpemJ0TlBXQ3FKVzl4RlVDZDlwMEFKMms3dTgrVVEyK1l4cXozZ0VBQUtDVHJ2UmwveVh0bTZCNUdrRTczeUJ3cDQwSDFVbVNUN0d3S3Q5WHhheDNBQUFBNklRcmZka1AwNzUxLzA0amFPY2VCTzYwK1NCN2tuckcrMUExdUlkWjZsbnZwMG9CQUFBQVpialNsLzBrN1F2WkUwRTdEeVJ3cDRRRDc2dlV3ZnRBTmJpSFplcVdNeDhQY2pGWERnQUFBR2lYcGkvN3k3UnI4ZE9iVGlObzV4RUU3cFJ5SUI0a2VkVWNqQWNxd2ozTnMybzVzMVFPQUFBQTJJOFdMMzU2MDJrRTdheEI0RTVwQitkQkJPODh6alFXV2dVQUFJQ2RLU2hrVHdUdGJJakFuVklQMklNSTNubWNaYlNjQVFBQWdLMW9NcHVUbEJHeUwxTUg3UjhGN1d5S3dKM1NEK0xEMVAzZFQxU0RSNmlTZkV3eWRXSUZBQUNBeDJsQzlzTWt2elMvdHQyeXlRTSthRUhMcGduYzZjcUJmUmpCTyt1Wlp4VytPOWtDQUFEQU54UVlzaWVDZG5aQTRFN1hEdmJEQ041WjN6VEo3d2U1T0ZVS0FBQUFxQlhXay8ycUtzbm5DTnJaQVlFN1hUNEJDTjVaMXpLcjhIMnFIQUFBQVBSTndTRjdVZ2Z0NzB5b1k1Y0U3dlRocENCNFp4T1dxUmRTK1d5eFZRQUFBTHBza2ZFb3lTUmxodXhKMHpaVzBNNCtDTnpweTRsaW1EcDBmNWxrb0NLc3FVbzk4MTM0RGdBQVFDYzBJZnV2cVdlekR3dDlHYlBVTTlwbjlpajdJbkNuYnllUFFaSlhFYnl6T1ZXRTd3QUFBQlJva2ZGaDZrVlBKeWszWkU5V24waWYyYXZzbThDZHZwNVFCaEc4czNsVjZrVllUZzl5VVNrSEFBQUFiZExrSVlkSm5qYS9EZ3AvU2FlcFo3UzdCNmMxQk80NDBheGF6UXhWaEEyYUovazl5ZFRNZHdBQUFQYmx5cUtubHlGNzZaWkpQaWI1Y0pDTHBUMU0yd2pjWVhVQ09rbTl3T3BRTmRpd0t0ck9BQUFBc0NOWCtyRlBVdWFpcDNmZFc3OUxQYkZ0YVMvVFZnSjMrUHFrZEhMbHBBVGJ1RUNZUnZnT0FBREFoalNmNEorazdzZCttRzYxejUwbCtYaVFpNms5VFFrRTduRDN5V3FTZXNiN1JEWFlraXAxK1A2N2hWMEFBQUI0aUE2MmlybnBOQlpDcFVBQ2QvaitDV3lVdXNmN2lXcXdSY3Vzd3ZlcGNnQUFBSERUSXVQRHJBTDJZVWZ2alU5VHoyaXY3SEZLSkhDSCs1L1VobGtGN3dNVlljc1hHTE9zRmwxZEtna0FBRUQvTkZuRUpIV3JtRW02bTBkVTBaK2RqaEM0dzhOUGRvTWtyMUwzZVIrcUNEc3d5eXA4cjVRREFBQ2d1NW9XdDVjQis2Z0g5N3Y2czlNcEFuZFk3eVI0a25yVyswZzEySkY1YzBGaTBWVUFBSUFPNkVFdjlwdVdxVnVxdmpPcGpDNFN1TU5tVG82VDFNSDdvV3F3aDR1VTM1UE1mT3dPQUFDZy9acFB6ayt5bXNVKzdNbExyNUo4VHZMQi9TdGRKbkNIelo0MGgwbmVwQTdlQnlyQ2prMlQvQkd0WndBQUFGcWxtYWczU1QyTGZkS3pseitMdGpIMGlNQWR0bk1pSGFSZVhQVmw5SGxuUDZvMEFieUxHZ0FBZ04yNjBTWm1rdjVOeWx0RzJ4aDZTdUFPMnovSm5xUmVZSFdpR3V6eFFtZVdWZXNaRnpzQUFBQ2J2ZmNmNUhyQVB1eHBLYW9rSDVPY2FodERYd25jWVhjbjMxSHFHZThucXNHZXpkTUU4QWU1bUNrSEFBREFnKy94QjduZUltYlU4NUpNVTdlTmNZOUo3d25jWVQ4bjVaTm9OME83TG96MGZnY0FBUGoyL2Z3a3E0Vk9SeXJ5N3lLb3ArNGxZVVhnRHZzOVdSK21EdDRucWtHTExwaG1XYldmV1NvSkFBRFEwM3YyU2ZxNzBPbTN6Sko4UHNqRnFWTEExd1R1MEk2VCtEQ3Jkak1ERmFGRjVsbUY3elBsQUFBQU9ueHZQb21BL1M3TEpLZXAyOFpVeWdGM0U3aER1MDd1ZzlTTHJMeU1qNmZSemd1c1dlcjJNN09EWE15VkJBQUFLUGdlZkJJQisvZk1Zalk3UElqQUhkcDc0aCtsRHQ0UFk5WTc3VlRsZWdCZktRa0FBTkRTZSt4QlZ1SDZLQUwyYjFuR2JIWjROSUU3bEhGUmNCS0xyTkorVlZZTHNPci9EZ0FBN1BOZWVwZzZXTCtjdlQ1U2xlK2F4V3gyV0p2QUhjcTZZSmdrK1RWMUFBOXROOC8xR2ZCTEpRRUFBTFowdnp6SzlZQjlxQ3Izc296WjdMQlJBbmNvODBKaUVMUGVLYzg4QW5nQUFHQXo5OFdUWEEvWUI2cnlJTlBVczltblNnR2JKWENIYmx4ay9CcTkzaW5QUEFKNEFBRGcrL2U5ZytpL3ZnbFZrczlKVHMxbWgrMFJ1RU8zTGtBT1U4OTZINmtJQlpwSEFBOEFBTzV2Ni9Zd2t5US9SWHVZZFMyem1zMCtVdzdZUG9FN2RQZmk1TExYKzBCRktGU1Y2d0Y4cFNRQUFOQzUrOWRCVm91YVhyYUhZWDN6SkIrVFRFMW1ndDBTdUVQM0wxNU9rdnlTZXZZN2xLeHFMaG92QS9pNWtnQUFRSEgzcUpPc3d2VlJ6RjdmOUQzVE5CWkFoYjBTdUVOL0xtcUdXYldjY1VGRFY4elNCUEJKNW1adUFBQkFxKzVEUjZsRDlaK2k5L3EyTEZPSDdMOWJBQlhhUWVBTy9iM29lUmtMcmRJOTg5VGgrMS9SaGdZQUFIWjVuemxNSGFxUHNwcTk3bjV6ZTJhcEYwRFZNZ1phUnVBT0xvcE9vdVVNM2JYTTlRQitwaVFBQUxEMmZlUWdxeG5ybHd1YkRsUm02NnFzK3JKWHlnSHRKSEFITGkrWWhxbEQ5MStiQ3lmb3Fubk1nZ2NBZ1B2ZUt3NXlQVndmUlp2U1hWb21PVTN5MlRwV1VBYUJPM0RiQmRVb2RmQis2RUtLbmx6QXpxTVhQQUFBN2dVSEVhNjM1UjVsR24zWm9VZ0NkK0I3RjF5SFdiV2NHYWdJUFZGbEZjTFB0YUlCQUtDRDkzckRYTys1UG94d2ZkK21TWDZQdnV4UU5JRTdjTitMc1VIcTBGMi9kL3BxM256OUZTRThBQUJsM2MrTnNwcXRia0hUOXQxblhQWmxYeW9IbEUvZ0Rqem1ZbTJRNUNUNnZjTThxMzd3Y3owVkFRQm93ZjNhcExsUCt5bDF3RDVSbFZiZVIzeU94VStoa3dUdXdMb1hjOE5ZYkJXdW1xVnVTV01tUEFBQTI3NFhHMlVWcm8raUpVeWJWVm5OWksrVUE3cEw0QTVzOG9KdkZJdXR3bTNtMFk0R0FJREgzV2NOc2dyV2Y4aHFVVlBhcjByZGwvMnpUOE5DZndqY2dXMWRGSTRpZklmdlhYelBVNGZ3c3lTVm1TNEFBTDIvajVwa3RYaXBoVXpMdmM2ZlJzZ092U1Z3QjNaeDBUaUs4QjN1WTVrNmhQK2p1VkRYRng0QW9MdjNTTU5jNzdVK1VwbGlWUkd5QXcyQk83Q1BDMHZoT3p6TXZQbjZKL1ZzK1BsQkxwYktBZ0JReFAzUE1JTDFMcW9pWkFkdUlYQUg5bjN4S1h5SHgxbm1laEN2Tnp3QXdQN3ViU1padFg4UnJIZlhQUFVFR0NFN2NDZUJPOUNXQzlSUmhPK3dDVlh6ZGRtV3BoTEVBd0JzNUo1bGtOWGlwWVBvc2Q0WDh5U2ZrMHl0dVFUY2g4QWRhT09GN0NqQ2Q5aTBLb0o0QUlENzNvOE1ra3lTL0pEVmJQV0I2dlRHUEVKMjRKRUU3a0FKRjd1SFNYNkpqMlRDTmxRUnhBTUEvYnZQR09aNmtHNjJPdE1rdjZjTzJaZktBVHlXd0IwbzdhTDRNUFhzOTVHS3dGWXRjNk5IZk9vd3ZsSWFBS0NRKzRkQmM5OHd6S3EzK2lEMXpIVllwZzdaLzRpUUhkZ2dnVHRRNnNYenNMbFEvaVYxQ0Evc3pxeTVRZmtyZFJDL05Dc2VBTmpUZmNFZ1FuWHVyMnF1Wlg4L3lNVlVPWUJ0RUxnRFhibklQa3o5TWRERDZLMEkrN0xNYWxiOC96VTNNOHVEWE15VkJnQlk0M3AvbUsvYnZ3emlVNi9jejd5NUx2M3N1aFRZQllFNzBNVUw4c09zd3ZlaGlrQXJWTTNYUE1KNEFPRDY5ZnNncXpCOWxPUi91VDVySFI1cWxsVS85a281Z0YwU3VBTmR2M2dmcGY0NHFiN3YwRjVWcm9meDgyaFRBd0JkdXk2Zk5QOTUrZXZURzcrSGRTeWpIenZRRWdKM29FOFgrWVBVczk1L2FTN3NCNm9DUmR3OHpiUHFHVjlkZnBtdEJBQ3R1dGFlTlA5NSthdEFuVzJyVW9mc3Y1dW9BYlNKd0IzbzgwM0JZYlNlZ1M3Y2FGMSsvWk5WT0Q4M3N3a0FObmJkUEd5dWx3ZTUzdkxsOHZld0s3Tm9GUU8wbk1BZElOZGF6MXpPZmdlNllaN1ZMUG4vaXhueUFIRHpPbmlRVldoK2VSMzhVMVpoK2tDVjJLTmx0SW9CQ2lOd0I3ajlwbU9TVmZnK1ZCWG9yS3I1V3FadVdiTk1IYzdIUjVNQjZNQjE3ZkRLdGV5aytmVXlUQis2enFXbDVsbk5ZcDhyQjFBYWdUdkE5MjlVUmpIN0hmcCswN2ZNcW0zTk1rSjVBUFovalhwNVhUcHN2aTdidkNSbXBsT1daVmF0WW1ZK2hRaVVUdUFPOExBYm0wSE1mZ2UrTm05dUZwZXBaOHFudVhGTXRLOEI0R0hYbXFQbXQ4TXIxNXBQYi9rektQM2FhUllMbmdJZEpIQUhXTyttYUpRNmVMOWNmQlhnV3k1dktLdlVzK1d2L1psZ0hxQ3oxNHlUNWo4SFdRWHFQMlFWbm85aVJqcmR0c3lxRjd0WjdFQ25DZHdCTm44emRUbjdmYVFpd0NQTnJ0eWNYczZZcjVxdkpKbGJOQXhncjlkOHc2ekM4cXYvTFVTSGxYbjBZZ2Q2U09BT3NMMGJzVUhxV2U5UG8vME1zRDJ6NXRkbFZ1SDhzcm5KVFpLbG0xeUE3MTYzamJJS3g0ZTVQVUFmdXA2RGI2cHl2UmY3VWttQVBoSzRBK3oyUm02U1ZRQS9VQlZneDVaWkJmRkovYkh1UzdNci8yMEdQVkR5TmRma3ltK0hXWVhrVnhjVlRYTTlCcXgzWFRGcnJpZW0yc1FBMUFUdUFQdTlHWnhrRmNBRHRGR1ZWU3ViNUhwSWYvUC9DZXFCVFYwbmpYSjljc0xWYTZXYndma3dacDdEcnN5em1zRStVdzZBcnduY0FkcHpZM21ZVmZnK1VoR2djTXRjbjAyL3pLcmx6YTMvWCtzYjZNdzF6VEJmQitDVEc3Ly9LZGNEOVZGOCtnL2FxTXIxeFU2WFNnTHdiUUozZ0hiZXFBNXlmZmI3U0ZXQUhwcmRjdFAvejQwL202Y083LzlseGgwODZ0cGpsSzhENzJHK0RzNS91dVh2VFZRUU9xUEtxazNNVEpzWWdJY1R1QU9VY1JNOGlBQWVZQjN6M0FqbWMzdUFmL25uMVMxL2JoWSsrN3dXR09YdUdlQ1RPLzc4NlMxL05uQWRBVnc5dDBVZmRvQ05FcmdEbEhuVFBZZ0FIcUJObHJuZUl1ZW1lWkwvKzg3M21OM3paMVVDa1oyZGErOTdmcjN2MzMzNm5mOC9VWGxnQitlcldWWXoyT2RLQXJCWkFuZUE3b1FDa3dqZ0FiamJNdDkrS05CVm8rZ05EdlRiTEt1RlR1ZktBYkJkQW5lQURoTEFBd0JBYjgyeW1zRStVdzZBM1JLNEEvVEVJdU5Kcm9md0FBQkEyWlpaQmV4ekFUdkEvZ25jQVhxcUNlQkhXUVh3QTFVQkFJQldXMFlQZG9CV0U3Z0RrQ1JaWkR6TWFnYjhLTnJRQUFEQXZsV3BBL2EvSW1BSEtJTEFIWUJiWGVrRFA0bzJOQUFBc0F2ejV1dHlCbnVsSkFCbEViZ0RjRytMakVlcGcvZWZtbCtIcWdJQUFJODJTOU4vUFhYQXZsUVNnTElKM0FGNE5MUGdBUURnM3BheHdDbEE1d25jQWRpb0c3UGdSOUVMSGdDQWZwcm5ldi8xU2trQXVrL2dEc0JXTmJQZ1I3a2V3ZzlWQmdDQURsbm1lcmcrVXhLQWZoSzRBN0J6aTR5SFdjMStmOXI4T2xBWkFBQUtNWS9aNndEY1F1QU9RQ3RjQ2VFdkEvaUpxZ0FBMEFKVjZvQmQ3M1VBdmt2Z0RrQnJOZjNnUjFtMW9wbW9DZ0FBVzdUTWxYQTk5ZXoxcGJJQWNGOENkd0NLY2tzSVA0cDJOQUFBUE00czEyZXZWMG9Dd0RvRTdnQVVUMDk0QUFEdVlaWTZYUDhyZGJnK1Z4SUFOazNnRGtBbkxUSWVaTldHNW5JMi9GQmxBQUI2WVJiaE9nQjdJSEFIb0ZjV0dVOVNoKzgvUkY5NEFJQXVtRVc0RGtCTENOd0I2TDBiTFduTWhnY0FhS2Rscmk5b3F1YzZBSzBqY0FlQU85d3lHMzRVdmVFQkFIWmhucVJLUFd0OWxqcGNYeW9MQUcwbmNBZUFCMmhtd3c5VHQ2TDU0Y3AvQXdEd09MT3NXc0pVQjdtWUtRa0FwUks0QThBRzNCTEVqNW92QUFCcTgxeWZ0VjVwQ1FOQTF3amNBV0NMRmhtUFVyZWhtY1NNZUFDZ0g2cm02NC9tVnd1WkF0QWJBbmNBMklNN1d0T01va2M4QUZDT1packZTNVA4a3pwWW55a0xBSDBtY0FlQUZsbGtQTWoxQlZxZnBnN2poNm9EQU96Sk1qZUM5VmpFRkFCdUpYQUhnRUkwN1dtR3FjTjRzK0lCZ0UycmNyMFZUQlhCT2dBOGlNQWRBQXAzWlZiOHNQbjZLYXUrOFFBQU44MVN6MXIvSy9WczlhVldNQUN3R1FKM0FPZ3dZVHdBOUZiVmZNMnphZ05USGVTaVVob0EyQjZCT3dEMDFEZkMrRkcwcVFHQUVpelRCT201SHFyUGxRWUE5a1BnRGdEY2FwSHhwUG5QU1pML1pSWEVqMVFIQUhabW1hOURkUzFnQUtDbEJPNEF3SU10TWg1bU5UTittTlVpcnBkZkFNRDlWVm0xZi9tLzFEM1dJMVFIZ1BJSTNBR0FqUlBJQThBMXl6UXowMU12VkhyNWV6M1ZBYUJqQk80QXdNNWRDZVFIcVZ2VVhMYXNTU3pvQ2tDWlpzMnZmMXo5dlZucUFOQXZBbmNBb0pXdTlKQWZwUTdtTDJmSkQ2S1BQQUM3dGN6dE05UUY2Z0RBTlFKM0FLQll0NFR5WnNvRDhCaXo1dGQ1Nmg3cTg5U2h1cFl2QU1DRENOd0JnRTY3cFgxTmt2elUvUDdxbndIUVBjczBNOUd6Q3RPcjVtdDVrSXU1RWdFQW15UndCd0JJc3NoNGxLOUQrTXMyTnNscUZqMEE3VEJyZnEyUy9IUHp6OHhNQndEMlFlQU9BUEFBaTR3SFdRWHl3NndDK2N0Wjg0bHdIdUN4bGxuTlNLOGlTQWNBQ2lOd0J3RFlvaXQ5NXBQcmZlV2YzdkhuQUYxVE5WK1gvMzBab3M5VEIrd1dIZ1VBT2tQZ0RnRFFJbGRhMnlUWFo5QmZYUkEyRWRJRCt6TlBFNVRuZW9CZTVVcXdiaVk2QU5CSEFuY0FnTUpkV1JqMjB1VEtmOThNNm0vK1hhQy9sbG0xYjBsV2k0cCs5Zi9NUUFjQXVCK0JPd0JBajkyWVVaOTgzWC8rcHh1L0grUjZnQS9zVjVYVnJQTEwzLy96amY4L1A4akZVdGtBQUxaRDRBNEF3RnB1OUtsUGJnL2wvM2ZMbjkzMjk2QXY1bG0xWmJuNlovOTM1ZmZMWEorQm5nak1BUUJhVGVBT0FFQ3IzRExyL3RMa2puL3kweDEvUC9sNnhqNDh4T3lPUDY5eWZSYjUxVCt2YnY2aGRpd0FBUDBoY0FjQW9KY1dHUS95L1JuMm85d3ZzUDlmSGpkYmYySlAzRHJUKzN1cTNCNTQzL2IzcW0vOC8rVkJMdVoyQVFBQW0vTC9Id0RJenh0RkdCVjljQUFBQUFCSlJVNUVya0pnZ2c9PSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzEiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkQmxvYiIsImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJsYXJnZUJsb2JLZXkiLCJtaW5QaW5MZW5ndGgiXSwiYWFndWlkIjoiNGUyZGRiYzIyNjg3NDcwOTg1NTFjYjY2Yzk3NzZiZmUiLCJvcHRpb25zIjp7InJrIjp0cnVlLCJjbGllbnRQaW4iOnRydWUsInVwIjp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibm9NY0dhUGVybWlzc2lvbnNXaXRoQ2xpZW50UGluIjpmYWxzZSwibGFyZ2VCbG9icyI6dHJ1ZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjpmYWxzZSwiYWx3YXlzVXYiOmZhbHNlfSwibWF4TXNnU2l6ZSI6MTE1MCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0IjozNSwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoyNTYsInRyYW5zcG9ydHMiOlsibmZjIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN31dLCJtYXhTZXJpYWxpemVkTGFyZ2VCbG9iQXJyYXkiOjEwMjQsIm1pblBJTkxlbmd0aCI6NCwibWF4Q3JlZEJsb2JMZW5ndGgiOjMyLCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6MzIsInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjo4N319LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wMS0yNyJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDEtMjcifSx7ImFhZ3VpZCI6ImJlNzI3MDM0LTU3NGEtZjc5OS01Yzc2LTA5MjllMDQzMDk3MyIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiYmU3MjcwMzQtNTc0YS1mNzk5LTVjNzYtMDkyOWUwNDMwOTczIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkNyYXlvbmljIEtleVZhdWx0IEsxIChVU0ItTkZDLUJMRSBGSURPMiBBdXRoZW50aWNhdG9yKSJ9LCJkZXNjcmlwdGlvbiI6IkNyYXlvbmljIEtleVZhdWx0IEsxIChVU0ItTkZDLUJMRSBGSURPMiBBdXRoZW50aWNhdG9yKSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2ludGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjUsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIiwiYmFEZXNjIjp7InNlbGZBdHRlc3RlZEZSUiI6MC4wLCJzZWxmQXR0ZXN0ZWRGQVIiOjFFLTA1LCJpQVBBUlRocmVzaG9sZCI6MC4wLCJtYXhUZW1wbGF0ZXMiOjUsIm1heFJldHJpZXMiOjAsImJsb2NrU2xvd2Rvd24iOjE1fX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2ludGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjUsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwiLCJiYURlc2MiOnsic2VsZkF0dGVzdGVkRlJSIjowLjAsInNlbGZBdHRlc3RlZEZBUiI6MUUtMDUsImlBUEFSVGhyZXNob2xkIjowLjAsIm1heFRlbXBsYXRlcyI6NSwibWF4UmV0cmllcyI6MCwiYmxvY2tTbG93ZG93biI6MTV9fSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJ0ZWUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwibmZjIiwiYmx1ZXRvb3RoIl0sInRjRGlzcGxheSI6WyJoYXJkd2FyZSJdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQjlEQ0NBWnNDRkZpUGs1cjY0cGdXaEFRamlpMDdtdlNFRjEvdU1Bb0dDQ3FHU000OUJBTUNNSHd4Q3pBSkJnTlZCQVlUQWs1TU1SRXdEd1lEVlFRS0RBaERjbUY1YjI1cFl6RWlNQ0FHQTFVRUN3d1pRWFYwYUdWdWRHbGpZWFJ2Y2lCQmRIUmxjM1JoZEdsdmJqRVZNQk1HQTFVRUF3d01ZM0poZVc5dWFXTXVZMjl0TVI4d0hRWUpLb1pJaHZjTkFRa0JGaEJwYm1adlFHTnlZWGx2Ym1sakxtbHZNQ0FYRFRJeE1UQXhNVEUxTURrME1Gb1lEekl3TnpFd09USTVNVFV3T1RRd1dqQjhNUXN3Q1FZRFZRUUdFd0pPVERFUk1BOEdBMVVFQ2d3SVEzSmhlVzl1YVdNeElqQWdCZ05WQkFzTUdVRjFkR2hsYm5ScFkyRjBiM0lnUVhSMFpYTjBZWFJwYjI0eEZUQVRCZ05WQkFNTURHTnlZWGx2Ym1sakxtTnZiVEVmTUIwR0NTcUdTSWIzRFFFSkFSWVFhVzVtYjBCamNtRjViMjVwWXk1cGJ6QlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJGaWlKSEhoaUtBTXFENDRjcmRlT2M4Vk9YbjRtaFNRemVWZGpiWHhoTm9tYmR6YzRXajY4MXhGbTRQUTNvc2hhcThvS3FoeGFoZEV1Yld0UzlBbURvb3dDZ1lJS29aSXpqMEVBd0lEUndBd1JBSWdaNk4wM2FDbUxINGd1akFabzVNWmtleDZWdk5OUkJoVFcwVjcrWVlZdXhnQ0lBRzVxMENSSUZ3Wm9mcFBBT1BsQjU1SEN2SnlWamhJMkxzRHJqdTg4ZG50Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQVhRQUFBRjBDQVlBQUFBelk4SlRBQUFBQ1hCSVdYTUFBQzRqQUFBdUl3RjRwVDkyQUFBZjZrbEVRVlI0bk8zZFAzWWJ4NWJIOGJiZUJKTzVad1dHVnlCNEJZS3l5VVN0d05RS1RLMUFWRGdSNVJWUVhnR3BiREpTS3lDMUFrRFpaSUN5bVloeldyNHROMEdRUUhmZHFycDE2L3M1cDQ3azUyY1MzUUIrS056NjkxT0RROHlicG1rSC83K1pOQUR4M0RaTnN4bjg5SlUwUElKQS8xc3JvZDIxWHdZQlByZnc0QUE4Y0MxaC8yVVE5TmUxMzZaYUEzMGg3Ym1FTnIxdHdJZGJhWjhsNEt2cTBkY1M2SE1KOEZmeUo0QTY5RDMzTHVBdnQwbzQ3bmdPOUM3RWYyK2E1b2dlT0FEUmhmc25DWGQzdlhkdmdkNEY5N0VFT1NFTzRDbVhFdTRmdmR3bEw0RitOT2lOQThBWUd3bjM5NlgzMmtzTzlGWjY0My9RR3dlZzVGcUN2Y2daTXlVR2VoZmtKeExrN1FIL2Z3QVlxNXNwODJkcDVaaVNBcDBnQjVCYVY0SjVVMHFQdlpSQTcwb3Jad1E1Z0V5S0tNVllEL1J1enZnNU5YSUFSblFsbUxkVzU3TS9NL0FZZHVsNjRoZE4wMXdSNWdBTTZhb0ZTeW4vbXZNdmc0L3BTSUtjZlZRQVdQVHZUZFA4cDFRUXVyMWsvc2ZLWTdSVWNtbWx2TUpjY2dBbDZVb3dIeXc4WGl1QmZpUmh6cUFuZ0JKMWc2V3ZjOWZXTGRUUXo2UmVUcGdES05WQ2F1dFpLd3c1ZStodEliWHlmcHBTdDlEZzI0Ny9IWUMrN2ZNSWZwRUpFaVdjVTlCTmJ6ek44WXR6QmZwY3d0eFNyN3pmUi9uTDRPK3V0OW9FQ2pZYkhFcnpYSHJJbHZMa1VoWWt1YytRYnRyUHVtbWF1OHh0T1JpRXBkd0RsRzh1MHdrdkRPUkwxMjY4VDdzK01SRGlaMHlKQktyUVQ3YkkyWUZjZTgyYjg0dzM5SndRQjZwMkxHVmVRbDFCampCZnlwTklPUVZBYjVheDEzN3M0VmxJSGVaTEx6Y09RRFN0ekVSSkhleEZaMVBLTUNmSUFZeVZJOWlMektsVVliNG15QUVFYWhOM1FJdmE0aVRWaldHUGRBQ2FGakxkTUVWSHRJaUIwdU1FTjJNcE54NEFZamhKVUlZeEgrb3B3cHhlT1lBVVpnbDY2MHVyZVRhUC9JbTJwbGNPSUlPenlLRitZKzFKYmVXVEp1WUYweXNIa010UjVBN3J1YVZuTnVZS0xGTVhDcUJhc1Vzd0ptYnJuWHEvUUFBUWJjUU9iUFpCMGdWaERxQkNzYVptWnlzdng2cWJ1OTJkRElBcnNVTDlMTWROaXJIbk1HRU9vQ1N4UWozcGpMNGp3aHdBdm9zUjZzbm1wOGNxdFJEbUFFb1ZJOVNUbEY1aVRMSm5BQlJBNldLRWV0VFN5enpDQXo3aFpRekFnVGJDUFBXb3EwaTE1MSt5YUFpQUoyMkVGYVZSS2hqYUE2RXM1d2Zna1hZbFl4MGpLelVIUXRleWpCWUFQRHBSRHZWVHpYdWt2UzF1VWFkMUFNQUVtbXQxVkh2cG1yMXo2dVlBYXFCZFQxZnBwV3YyenMxdTVnNEFFV2lPUGFyMDBqVjc1eHhRQWFBMm1xV1hvRjY2WnUvOGdwY3hnQXBwbGw2Q2V1bGE4ODZaMVFLZ1pwcXpYaWJOUzllY1M2azY1UVlBQ3FSVnZsNU91WFN0ZlFtaVRJb0hnTUpvSGdnMGFqeFNzK2JEeGxzQThEZXRNdmFvNmQ5YWc2R1R2aG9BZ0ZPYXZmU0RLeDlhMDJ6WVNSRUE3dFBxcFI5VS9XaVZmaG0xY3dCNFNLc0NjdEJVY0sxZnhzd1dBTmhOYThiTHZVN3pzeDIvNnBYU0UvQ1JKeElBZHZwTDZiWTh1ZEdoVnJtRlZhRUE4TGdvV2J2ZFE5ZmFhK1VUVHlRQVBHclROTTJsd3UxNU1yTTFEb0JlOHh3Q3dGNWE0NVUvUWoxR0QxM2pVd2NBdk5NYVo5eVoyMW8xSFU0akFvRERhS3o1dWRyMW03UTJZbWZ1T1FBY1JxdnM4dDJ3NURKWGVBS3VwZGdQQURnc016Vjh6Kzlob0w5UStLR2ZlUUlCNEdDcnBtbHVGVzdYZzBEWDZxRURBTkxtNXZObUVPZ3pwZG8zZ1E0QTQzeFJ1Ri8zZXVnYXg4TVI1Z0F3bmtaMjNndDBqWEtMUmgwSUFHcXpVcGhNOHIzQzhtejRENEcrOGpJRWdFazBPc1NMUHRBMVpyalFRd2VBYVZUeWM5ZjJ1VmtmRUFCVTZKdkNKUzgwYStnc0tBS0FhVlI3NktFMTlKWENZd0dBV21sMGlIL1JLcmtRNkFBd25VYUd6alJyNkFDQWFWUTZ4YytVOWtDbmh3NEFtV24xMEptRERnQ1pVWElCQUNjSWRBQndna0FIQUNjSWRBQndna0FIQUNjSWRBQndna0FIQUNjSWRBQndna0FIQUNjSWRBQndna0FIQUNjSWRBQndna0FIQUNjSWRBQndna0FIQUNjSWRBQndna0FIQUNjSWRBQnc0dDk0SWpFdzVYeloyNlpwTnR4RUlEOEN2UzVkWU0ra1BXK2FwaDM4czRacitSbGR5SCtUZjE1eGlEaVFCb0h1MTF3Qy9MbjhmWjdnU2hkYmY3NGIvTHRyQ2Zvdjh1ZHRQVThGa0FhQjdrY2Y0SzhtbGs1aVcydzlybzJFL09kQjJBTUlRS0NYN1VnQy9FaktKeVZwNVhFZnlXTmVTYkIvYXBybXN2WW5GcGlxNnpYZEJiWlQ3bjR5WFFDZU4wMnpWbmplTExlTHBtbU9LM2xPZ1ViaHZYalZFT2hGNk1vcFp4V0UrSzYybGc4d2kyVWtRRk53b0RNUDNiYXVoM29qN2FUQXNvcUdWdTVEMS90WVZud2ZnTDBJZEh0YStjYlQ5MHhUekU0cHhVeStxU3psM21oTnR3UmNJTkR0bUExcTQrL29oVDZwNzdVVDdNQUFnWjVmSCtSTEJnRW5JZGdCUWFEbjB3N0tCd1I1T0lJZDFTUFE4emdkRFBCQlZ4L3NwNVN0VUJzQ1BhMGpDUnRxNVBHOTQ5c1Bha09ncHpHVGhUSVhsQU9TYXFVRWM4VnNJZFNBUUkvdlJPYVJIK1YrSUJWYnlIUEFBamk0UnFESE01T2U0Um5sRlRQZVNiRFRXNGRMQkhvYy9RcFBscXZiTXgrc3ZBVmNZYmRGWFgzTmx2S0tmV2V5VStWclRseDYwbE9ka2czYkh0dENvT3VaRnpqbzJaOG0xSjh3TkR4TzdxbWo1WWFuSExWeTdUL0xuNW9uSU1XMmtKa3dMeXNPcHVFcFZpOEcvOXNVbkZobEFMc3RoanN1WU5mQ3BYemduQ1FxQlMza3ZweEppY1A2L2FsaGV1Tk1ydk04OFhPeWx2R2swMEwzN2s4bDlENnpmYTZDYzhNaDFRZTRoUjV6ZjZCRnZ6clc0djA2TjNDZnRGbTk1LzJzSXdhby94RjZUd24wQUszY1FFdHZrblZCTmZ6WllFcW5wWHQ0NWFBSFdkb2hLRXY1MEtrOTNEVmV1d1Q2QkhOalFYUWxYNlZMRGFLWnNWN2tUWUVMd0dhRExTV3N2QzZudEg3Ymhob1g0R25rQUlFKzB0eEl6MmN0SWVqdGhYOWs1SnZQdXBBZTQwSktheVdGOXFIdG9yS3B2NkgzaTBBZnlVS1kxM0pxejh6QStJVGxVRDh1WkxCWm85MVVNbWdkZXE4STlCR09Nb2Q1clJ0TjVRNTJhNkYrN0tDc3dudGd0OUQ3UTZBZktPZTB4RFhUUXIvTEdld1dRbjFSVVk5OFgvTzZDanYwdmhEb0I4Z1o1dXdEODlBaVU0MDlWNmpQRE02bXN0Szg3VjVLb0VlV3EyYk9kcS83SFdkNGJsS0graW1oWFZYK2FPUUdnZjZJSEdHK1p0T29VZG9NTXp4U2hQcWk0anI1MU9aaEY4M1FlMENnUHlKSG1GOXgrTVZrcVFlc2J5S1d3aXl2UEM2aGxaeEZCSG9FYlliQkozcmw0Vkt2M0wxUmZ2d3pCajFWbjVzU08wZWgxMDJnNzVBNkZLaVY2MHBaZDliYSt5WEhlSUQzdGk1d0cyc0NYZGxad2hmNUJUTllvbGtrRE1qUWIxZVVXT0sya3JJcDlGNFE2QU1wcHljeXJ6eStsUHZ0VEprVFRZa2xYVHN2cFBNVWVrOElkSkZ5RUxURzFaNjVwQmdQV1U4STlOeXJqbXRzTVFleXRSRG9DbElOZ3BheTJaTkhzY29hVXdiZlVwYjFhQStmTDh1aFRxQXJTUEVHSTh6ejB3NzFzNUZYWkhILy9CcmIwdkI3a1VBUHBISHRoSGs1TkVKOXl1eUpsSU8wdEhMZmt3UjZnRGJCbTR3d3R5Y2sxS2RNTTJYNXZzMjJOamhYUGZSZVhkVjg2bi9zamE4MkRrNlQzemZZZDczbjMxdjBSaDdUMk1IcGowM1R2SlhuOVJCdGhRYzBsS1IvZmw2T2VFN05xelhRRjVGbm01UVU1alBwZFhidGhielF4L1pDYitXYVB6ZE5zNUtnWDBWNnZCcmV5SFVmRXJZYkNmS1BJMzd2b3VCMUJ2MXo5M1h3Z2IzYTgzejI5M0V1MS94aThIZkw1bEttY0JYcU5aWmNZbTk4WkxuTTBzcUgyWG5rKzdDVTMySDFyTk5EWmpmVlVHSzVrTVZSTVY2enM4RnJ6ZklZd2tXRWE1OGk5RHFxcktISGZzTlpuR2ZlaDNqT3N5Y3ZESWI3VStNb1l4ZWo1Tmo1Y1dvN3o3UXNmaTZsVG92aHJyV05RNGpRYTZndTBHZVJYMHpXN3NQTVlPOW9MWS9KeW9EVWZNZmpHL3VoUEM5Z3UxdHJaOUZhT1F4ODJISjN4a0lmZjNXQkhuUGZEQ3RmMnhvakJ5d2YwcXdFKzhrZzlNYVdIazRNMzkvK1RXNTVZTmJTYXpYM3JEU041N3FhUUk4NTUzeHBwT2RUU3BCdk53dkJQcmIzYXIzRVV0cTVteFpldTdsM1B3MTkvRlVGZXN5dmQ3a0hRVnNuODUxUEM1a1pZcm5FTXFWa1pFbXV3N0F0Yk9BVmVnM1ZCSHJNM25udXd5bThIVmUyTk42enRGeGk4WFNvK0VtaXNSOUxINENoMTFKTm9NZnFuVjlsdmk3UEd6Mk4zU3NsdHRad09XdktqbzhsaUwzRnNMVURaa0t2cDRwQWo5VTd6N2wwdUphOXRLMGNKWlp5Yi9XeDdhcUNnMUppbEJNdEx2elNlQzI0RC9SWUExZTVTaTIxYmZTVWUrYUI1ZVBockgyTGlVbHpEM21yWi9pR1hwZjdRSjlGZWlOcEh4QjhxSlNuS2xscnFldWNsa3NzT2U2SEJhRUgwVmplT3JkUmVFMjREL1JZYjhnYzljcWF3N3h2cVVMTWNvbkZhNzM4VUZNUHBDbGhiNTNRMTRiclFJKzFQVzZPQlVTY2N2TlBpeDNxbGtzc2JNZjh0N0doYnJYRXNpMzA5ZUU2MEdQMWFGTVAwdEV6ZjloaWhicmxFZ3RoZnQ4aG9WN2FQUXQ5amJnTzlCaGZtVk52NEVPWVA5NDBRNzJFV1VQc3EvNVErOFFhakJKbi80UytSdHdHK3ZhR1Mxb3RaZS84eUdFSVd3eTVFazdncjNFQTlGQzdCa3BMUFJJejlIWGlOdEJqMUp4VDlzNURSL05yYWFGckFVb1ltNmhwYXVKVWZZYVZQbUJNb0Q4aXhsTDRWTDN6cWFQNHRiWXBVMGhMV1ppVmV5VnlTYnB2V3FVdnNBcCt2VHd6Y0JIYTVoSEM5ekxoa1dwbkRINGRyRHMyN1AzSS8rYkk0Skx2WGJwcmUyM3ZZWm5WdlVmZEhDTTNsY2RBL3ozQ3ovd3p3cy9jNVloNjZjRzZjMHgva3pmeW9VNExPdXZ6RFFHRktieVZYTFRMTGN0RWp6dld2SG1QYld4ZHVUVjRPczVUemNKeGFFZ3Z1T1RpN2RUL0dPV1d2NVIvM21QZVZiREpVcWlOOUZ6SDlNcExPNEcvdThhM0JoNEhDdVN0NUJKamhQdGpoSis1YlY3UWFyWmN1aExMeXdrbGx0TG1JNytsMUlLcHZQWFFYeWovdk50RWc2Rk1UWHZheDVGQjF4OFBWOW9VdHR0RUhRZzQ1UzNRajVSL1hvcHl5NEpWZ0kvcXl3OWpRcTYwRXNzUXBSWUU4VlJ5aVJHS1k3N2VUL1V1d2U4b1VWOWlHUlBtSndVZitIQXREWmpNVXc5ZE85QlRsRnZvbmU4MnBjUnlIdUViV2txcHBzYkNNVStCL2x6NTU2WG9MZjJSNEhlVVpFcUpaUzRsRmd0SDFVMjFTdlJ0RU01NUtybG9yL3o3cFB6enRzMEs3MUZxVzAwc3NWZzVkelFFdlhPbzhOSkRieU84cVdQMzBBbnpmMXlPWEJucG9jUXl4TXdXcVBBUzZOcTljOG90NlhRbGxnOGpmcHVIRXNzUWU1QkFqWmRBanpFZ0dsT01GYTJsV2NubVUyUHU5YkhEWmZHeFMzdW9pSmNhK2kvS1ArK3o4cy9iVm51NTVWSTIxam8welBzU2k4YzlUaGdNaFJvdlBYVHQzbTdzNllxdkl2OTh5NmFVV002ZGJpbDhUYmtGbXFpaDd4YXo1TkpXdXQvNVJtYXhqQzJ4bkRuZXRJeHlDMVI1S2Jsb3Z1RmpENGpXR09iZFBmMTFZb25GOHc2VXNjZHFVQmtQZ2E0OUlCcjdLM0J0SzBQZlM4LzgwUHM2bCtYN05SejB3VkovcVBLMk9aZUdMNUYvdnZhS1ZxdjZJOVRHaEpiM0Vzc1FZUTUxSGdKZHU0UVJ1NGRlUThubFdzSjh6TDA4cTJ4UCtGUm4xS0lpSGtvdTJyMjUySFZONy9QUHg1WlkraFA0YXp2ZzQ2dUJ4d0JuS0xtazVibDNQdVY0dUtNS0JqNGZ3NEFvMUhrSWRPMUZSYkduTEhwMEt5V1dNV1dFMmtvczI1aC9EblVlU2k3YUpRemVhT044a0ZXZmg0WjVyU1dXYmRUUW9ZNlNTMXFlcGl4T0tiRTBjZzgrc2FpR1FJYytBaDFUVENteDlOZ3FGb2pFMHdFWEdpaTM3RGUyeEFJZ0VYcm85ekh6NEhGVGpvY0RrQkE5ZEJ4cXhlcEd3RFlDSFllYXkreVUydmR5Qjh3aTBOTXF2YVRUeXZGdlp3WWVDNEF0QlBwOXNWZHllaGwwOVhMYVB1QUtnWDVmalV2UXA1cGFndW4rLyt1bWFlNHFiN1Z0bzR3RUNQUzB2QTBxVGluQmpEMVAxQ3M2RDFCSG9LZm5jYTU3WDRJNU5LUldFdXBqemhiMXBzYVRxeENaaDBEWDd1bkZmcU41N1psMjkyMDVzcFR3ZHNLKzZWN1VjdEFKRXZJUTZOK1VmMTdzcjhLZVN3MnRIQjkzT3VLL3FiVUVRdzhkNmlpNVBCUjc1a2JzSSs0c2VDZkJQcVlFODdLeVZhZ3o2dWpRNWlIUXRRY2FZd2Q2TGFzdEZ5TkxNUDN1alc4cUtzRXcwd1dxNktFL3BIMWd4clpWUlJ0YlRTbkJmSlRlZWcwbG1CY0dIZ01jb1lmK1VJckZNclh0aWZKT3BqY2VXbUs0cmFRRXd6WUtVT1dsaDY3NUZUM0YxK0FhRDNjNGtxbU5odzRHMWxDQ21iSGFGcHE4QkhwcFV4Y3ZLNTJxTitYNE9lOGxHSHJwVUVPZzc1WmlTdG5ZbzlzOE9adFlndkY0ei80dzhCamdoSmRBLzZyODgxSU1WdjJWNEhkWU5xVUU4MW9XSTNreVkwNDZ0TkJEM3kzRkcreWFZOXdtbFdBOEhvRkhMeDBxdkFTNjlxeVJlYUxCcWo4VC9JNFNkQ1dZODVFbG1OOGNsV0NPV1dRRURaN21vV3YzMGxQTWR2bkl3ZFEvSE11YzlWcExNR08rcFFBN2VRcDA3VjU2aWpyNmhsNzZQWE1KOWVNUi80MlhFc3dmOU5JUnlsT2dmMWIrZWFtbWszMmdsMzVQSytXWEtTV1lraGRzdGZUU0VZb2UrdVBhUktIZWhmbjdCTCtuTkZOS01DOEx2NWZ2V0dpRUVKNENmUk9oanY1SytlYzk1Z01uK093MHBRUnpLc0ZlNnJjZUR1REdaTjQyNTlKZVVwOXlGWiszK2RWYWhpV1lRM1hmMW40dHRBUnp4T3BSVE9VdDBMV25zYlVqZTRjaHJpcy9rbTJmWTVtemZtaEpvdVFTekpqeEErQ2VoY0xwNjJPMlI0MXRxWHlhL0ZYQ3g5NUdlUHplMm5wQ0QzWWgvMTFKOStJaTBtc01kZ1ZubGNmOTBMVjc2WXVFQTFYOTNHbzhycFd3RzFOcjdrc3dKWTFUSENYOGRnZ25QQVo2akQxU1VpN052cVdlZnBBVEtjRWNhaU5URzBzcWE1Mnh6d3ZHOEJqb3R4RVdtYVJlbXYyaHN2TTFwNXJTNDM0cjM0SkttQVhUanR5VnNsYm54c3ErV1htcm9UZnllTFJybWptdThZYWErYU50VE85OGwxbEI5L2VHVUgvVTJlQStqVG1ZM0tMUTE4bjM4VDZQZ1Q2TDhLWmFaM2l4dElSNjlJQTdNM0E5aDdTVWcvT2xPSDdrZlZycTRkc3FyeEdQZ2Q3SXhXbS9xWEpjSjZGK3Y4WG9yUjRWTWd0bXpGeDg3M2FGZWU3M2FxalExNGZyUU4vM2hFOXBPWHJwRGFIK284VXNQY3dMdWNmTVVULzh2VjNhK0VQb2E4TjFvRGVSNW5UbnV0YmFRejFGSGJsZmxjcTlzR3RzaVd4WjBFeWgwTmVGKzBDUE1UaTZ6cmlCVWltQm85MVM5MHFQQ3lqQmpEbSt6NFBRMTM0Sk8xbUd2aWJjQjNvYjZZMlpleFZmakE4cXF5M1hhNnVFRXN5VVZiTWwwcHFSWkwwRUUzcDk3Z085aVJoK3VVZlNTMXpPUGphc2N0L2pVcjRSZWQ2aFVYdkEybklKSnZUYXFnajBXTDMwcFlGUCszN2hpZlhBR2R1czlhUW93YVFYKzdWdHNRUVRlazFWQkhvVHNaZHVwV2QwNUdSVHI2WGhFc0s4a0h0ODZtREFOTlVIcUxVWlE2SFhVMDJneCtxbDN4bGF4TkFXWGxzdklZaEsrVWEwTEhSanIwV2s5U05QTlV2ZmJFS3ZwWnBBYnlLR25ZWFN5OUNzc0prdzV3VWV1M1pTeUwwdEpkZ1htVDhvMTBidVUraDFWQlhvTVh2cEZ2ZXVua2xKeUdMdGR5MlB6VktRajMwc3BaUmc3Z2JCYnUwYjBGR0dIdmxUTFhjSkp2VHhWeFhvVGFUVm8zMnpPcysxSFp6Mmsvc05jMk0wV09iTnREZDBhWVBTYTduR25HWENtZVNGMVEvRG5HTTRvWSs5dWtCdklnZWI5VmtHczhFKzRxbmVJRGZ5TzYyV1ZiWlBpWnBTVXkybEJETnNTL21XbENMQTVwSVIxdWYxNTk0ckovVHhWeG5vR3RmN1dNdTExOHNVcmJ5Wno1Uy85bDROZ3FLRWU3SHIycWZVVk9lRnJ3dm9uN2Zqd0I3OFRQNzdVL21acGR5VDBPMllOUVEvaHo4TlJwWkR2QzhzMU04aWxraHU1WERpRWc1UTJEYVROaCtFOGZNZHdkeGQyNWZCMy90RFJiUVBGb250ZkU5d2Y1UURNUTU5THZzU1RLbmJ0MjdiREE0UjZaN2JyMXYvL3VmQnQ1bFpnWVBidlkwY1VaajdQWHNYK045M1J5MVcxME52SWcrUTNyRjNkUkVPTFpOTUtjSFV0RFZENlczTnRNWHlBNzJSa2tETUZ5TjdWOXMxZG5COFNnbkcrOVlNWHBxbGIxTUVlcURZODdVSmRYdENaanFOWFJuY0dwdVdSN3Zmck0zUko5QURiYzl3SU5SOTA1aTJlak9oVmt3SnhsNnp1T0FxOUQ1VkgraE41Rmt2ZlNQVTg5TmNnekJsMjFwS01IYWExZFd6b2ZlSVFCY3BlbENFZWo2eEZwU05MY0ZvN2V0Tm05NHNiNFZBb0N0S1VldTg0anpJNUdLdURyNmJXSUlaZTR3YUxieFoyRjkvSHdKZFVZcDYrbDNsNTBHbWxtcVRzaW1yTFdOLzBORCthWmFtSmo2RlFGZVdhclZmS1Mrd1VxV2NYUkpTU3FPdUhyK1YxSUVLdlI4RStnNHBlMDRsSEZ4Ym1wUzdJR29zSUtPdUhxOVpPOEJpSDVYWEk0SCtVTXBwWnRZUHJpMUp5cVBpdEh0KzFOWDFtcFg5emNjS3ZRY0UraE5TSGhLeGRMVC9SdzZwdDdHTlZUTFRQaEM1eGxieTJhb0VlbVNwVC80NW83YytXdW9RakQzKzRmWGc3MVR2bjVLRlhqK0J2a2Vib2I1SmIvMHd1WUl2MVZkNWV1dUh0eHNuNzVuUSswQ2dIeUJIcU45SldKVzZIV2xzSjVuQ0xuVmR0cVcyL21SYk84dWUwUHRCb0I4b1Y2aXZDemtOUDVWRnhxUExjZzZ5emRuazYwRXI4WER4ZlVMdkNZRStRcTVRdnlQWWZ4ekNraXM4ck15WXlIMGZMTFFyeDJzNENQVEVjb1o2amNGdUljQXNUbityTWRpdktoaGIwcmhIQlBwSWJZYlpMOXR0TGJWVnJ6WDJZeU9MYmF6UFpWNVVNQ1BHWTJubE1hSDNpa0FQa0R2VSszWlI2Q0tLYlRQNWtMSXdzNk9Falp5R0xOMDdqYmFVZ2UvYVNveWg5NDVBRDJUcDRJSzFmTWhNMlNncWw1bThjUzB0ZlM5OW41MGplUjJVRnU3OTY3Zm1QWTVDN3lHQnJpRGxjdk94YjQ1amc3MmN1YnhlTE81ZjRtMG5UT3ZodnBSdkZxeTcrRnZvL1NUUWxhVGNFR3BxVUoxSndLZXNSN2J5K2pxVjBwRGxYbU5wR3ptTk5aZHZRem1maCtXZ284RWFpNGRDNysvVnYxbTdva0xkTmszem03eFpMUFkyNWp1K3lsN0w0LzRtZjIva256Y1RmMzQ3K1BPRnZHRkxlZE8rYlpybWc0SEhFZE90dFA0Nlo0UFh4ZlBCaDYrR2pmeXVWZE0wWHdldnRTbXZMWXp3MDJBS1ZJajM5TkovNk83RE95T1BKY1MrTjZDSHI4bmQ5YjBlZktEaGI4UG5kcjdubTh0SzJ2YmZNZDVkNEQzNy9qcW01S0l2NTRwRzJvRmZUMW1CQzJPQ1N5N1BlRWFqdUpZU3pLWERheXZkUmtvc0x5a0J3QnNDUFo3KzYveHJnc09NV3dseTcvVnlWSXBBajYvcnBmL2FOTTFIN3hkcVdOOHIvMDFDSFhDSlFFK2pDNVEzMGpza1VOSzZsQ0NuVnc3M0NQUzArdHI2VzhvdzBhM2tBL1ExTXk5UUN3STlqdzlTaHFIWHFLOHZyL3pLZEVUVWhrRFBaeGc4MU5mRGJXUTlCQitVcUJhQm50OUs2dXNFK3pURElEK2xsSVdhRWVoMkRJUDlBOEcwRjBFT2JDSFE3VmtOU2pGdkdkQjc0RlkrK1A2RElBZnVJOUR0Mmd3R1QxOVdYbzdaeVBYL0pvM1NGTEFEZ1Y2RzYwR3Y5RTFGYzlrdkIyV29tcTRibUlUdGM4dlM5MVEveXZhblI3SlZiVW1uRk8zVGhmZ24rWk55Q2pBQ2dWNnVsWlJrUGd6MnNuNGxmNVowZU1DdGZBUDV6R1ptUUJnQzNZZU5oR0VmaURNSjl1ZXluN1dsdmN2N3d3NCt5OS9waFFOS0NIU2ZWanNHRHZ2VGFXWVJUcWpacFEvckw0UFRhNmlCQXhFUjZQVzRmU0pRKzJCdko1NjYzaSt4M3hEYVFENEVPcHF0UFUrb1l3T0ZZdG9pQURoQm9BT0FFd1E2QURoQm9BT0FFd1E2QURoQm9BT0FFd1E2QURoQm9BT0FFd1E2QURoQm9BT0FFd1E2QURoQm9BT0FFd1E2QURoQm9BT0FFd1E2QURoQm9BT0FFd1E2QURoQm9BT0FFMXFCL2pNdkNBREk2NW5Tb2I1VERoWUdBQ2g2SmllMUF3RHlhVFYrczFiSlJlWEJBRUNsTktvY0c2MUFwK1FDQUhsOTZRUDltaWNDQUxKWmFQeGl6V21MS2c4SUFEREpiUi9vR2pOZFpqd0hBRERKQzRYYjlxT0cvazNoaHhIb0FEQ05SbjcrNkpoMzVaSzd3SGJGRXdrQW83VUsrZHUxSHpWMGpibm96SFFCZ1BFMHhoKy9UMnpScktHM2hEb0FqS2FSbTZ0bWE1YUx4dFJGWnJvQXdEZ2FBNkpmbXExQTEraWxhend3QUtoRnE5UVJmcERmeHdwRitUVXZRd0E0MkpIV2dHZ1RvZVNpOVdrREFEVjRwWENOUDNybncwQmZLYzEyMFhpQUFGQUR0Umt1dTV3cmRQMlh2QXdCWUMrTjlUOTNVcmJaU2FPT2ZrZlpCUUQyMHVoQTN6MjFmZmxNNlJlYzgxd0N3SlBXQ2xtN2Q0WCtqY0l2V1hQb0JRQThTcXNhY3JMdkZwOG8vYUpqbmtzQTJPbEtLV2YzYnVxbFZYWmhjQlFBSHRJYURMMDU5TjVxbEYzdW5ocDlCWUJLYVEyRzdpMjM5TFRLTG15cEN3RC8wS3FBSEZSdTZXbitVcVl3QXNEZnRIcm5venZMRjZuclBBRGdtR1pIZWZTa0U2MU5ZeWI5Y2dCd1JtdG15K1JORUpkS0QyREp2SFFBRmRPYTJkSzEwNm0zVVd0d05PaEJBRURodERySGR5RUhTcmRLeTFPREh3Z0FGT3BVTVVPRHQxWFJmREJNWXdSUWs3bGlmcXAwaXJWNzZRZFBoZ2VBd21rdDBsVHBuZmMwZStsM1NxZGNBNEJsMnJtcFZyTFc3cVhmTU9zRmdHT2FzMXBVZStjOTdVOGI5a3dINEpGMkIxaTFkejZrT2ZYbWpnVkhBQnpTckp2ZnhaenlyYmw2dEcvczlRTEFDNjI5V3ZvVy9iQWdyZVdyd3dmTUlDbUEwbWt1eEV4V3haaEZxQTl4WkIyQWtta2RLVGRzeWRidGFBK1Ezakh6QlVDaFlvVDVPdlhLZXUzQ1A2RU9vRFF4d3Z3dXh3TE1lWVRTQzZFT29CU3h3anpiRmlreEJnSDZVR2VnRklCVnNjSThlYWxsbTliSlJyc3VqRkFIWUUyTU1jUytaVDlZdjQydzRHZ1k2aXcrQW1DRjlqenpZVHV6Y3BHeDZ1bDlNM09oQUtvMGl6UVJwRy9temw2T1ZWUHEyeFdEcFFBeVdFVHVzSnBkaDNNV09kVFhGbXBNQUtxUkl0Tk1qeFhHckRIMTdaemVPb0NJNXBGTExIMHJZb3d3eFkyZ3R3NUFXNXVnVjE1VW1EZHlVMUtFK3AzVTFqbDhHa0NvNDRnejlyWmJ0QzF4WTBrWjZuZFNoaUhZQVl5MWlMQ0w3TDZzS2xMcVVMK1RyMHNFTzRCOVVnZDUwV0hleXhIcTlOZ0JQT1k0UTVDN0NQTmVybEMva3llTzFhWkEzV1pTdDA1Vkk5OXV4ZFhNOTJrajd2dHlTRnZMSnlRelk0QTZ0TktaeTVrN2Q5NDdsQ25tcWU5cmZiZ2ZNNThkY0dVdXU4RG1LS2xzdDJxbVZzZmVKbUJzdTVIQjFHTjJlQVNLMGNyQTVvbjB3bU11engvYmxqbXk1S2VNejl4Q25nU3JQZVRicG1rMlRkTjhsbisrSHZ5N2pmeDdBSEcwVzRFNGsvYXovTzh6dzVNZXVxeDRMVG1SVk01QWIrUUp1YUJYRE1DSkQwM1R2TTExS2M4eTM4TlYwelMveVUwQWdGSnRwRmVlTGN3YkF6MzBvUVZ6eHdFVUtGdUpaVnZ1SHZyUXRmVFdQOXA1U0FEd3FJMzB5RjlhQ1BQR1dBOTlpTjQ2QU1zdUpjeFhsaDdqdnd3OGhsMjZtL1JYMHpUL0orRU9BQmFzcEx6eVgxWjY1VU5XQTczenYxS0crV3ZIRkNZQVNHa2pJZjdhV3E5OHlIS2c5N29iK1VubWcxdWVld3JBcHc4UzVQOXQvZXFzMXRDZjBwVmczbEdLQVJCWk4wSGp2ZVVlK2JZU0E3M1hCZm9mYkxZRlFGRlhFZmhUZXVYbWF1VDdsQnpvdlprRU94dHRBWmhxSmIzeHl4S0R2T2NoMEllNlVQK2RjZ3lBQTJ3a3dQL2EycXVwV040Q3ZUZVRVc3p2ekk0QnNPVlNKbHE0VzhUb05kQ0grbkIvUWIwZHFOSktldUNmSk16ZHFpSFF0eTJrdlpEZU8zVjN3SmMrd0QvTG44WE1VZ2xWWTZCdm0wbXd6eVhrV2NRRWxLTVA3Sy95OTl1U0J6VkRFZWlQR3diN2RrLytPVDE3SUxvdW5MOE5mc2xxME50Mk1ZaXBxbW1hL3dmZDlTdHhRc2JyUXdBQUFBQkpSVTVFcmtKZ2dnPT0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xX1BSRSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiYmU3MjcwMzQ1NzRhZjc5OTVjNzYwOTI5ZTA0MzA5NzMiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsInV2Ijp0cnVlfSwibWF4TXNnU2l6ZSI6NzYwOSwicGluVXZBdXRoUHJvdG9jb2xzIjpbMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6MjQsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6NzYwMCwidHJhbnNwb3J0cyI6WyJ1c2IiLCJuZmMiLCJibGUiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fV0sImZpcm13YXJlVmVyc2lvbiI6MX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIwLTEyLTAyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiQ3JheW9uaWMgS2V5VmF1bHQiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDIwMTExMDAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4zIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjMifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjAtMTItMDIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MX1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMi0wMy0wOCJ9LHsiYWFpZCI6IjRlNGUjNDAwNiIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFpZCI6IjRlNGUjNDAwNiIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJBbmRyb2lkIFBJTiJ9LCJkZXNjcmlwdGlvbiI6IkFuZHJvaWQgUElOIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjI1NiwicHJvdG9jb2xGYW1pbHkiOiJ1YWYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfSx7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX3N1cnJvZ2F0ZSJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9pbnRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjoxMCwiYmxvY2tTbG93ZG93biI6MH19XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJ0ZWUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsic29mdHdhcmUiXSwiYXR0YWNobWVudEhpbnQiOlsiaW50ZXJuYWwiXSwidGNEaXNwbGF5IjpbImFueSJdLCJ0Y0Rpc3BsYXlDb250ZW50VHlwZSI6InRleHQvcGxhaW4iLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOltdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFFZ0FBQUJJQ0FZQUFBQlY3Yk5IQUFBQUNYQklXWE1BQUFzU0FBQUxFZ0hTM1g3OEFBQUtUMmxEUTFCUWFHOTBiM05vYjNBZ1NVTkRJSEJ5YjJacGJHVUFBSGphblZOblZGUHBGajMzM3ZSQ1M0aUFsRXR2VWhVSUlGSkNpNEFVa1NZcUlRa1FTb2dob2RrVlVjRVJSVVVFRzhpZ2lBT09qb0NNRlZFc0RJb0syQWZrSWFLT2c2T0lpc3I3NFh1amE5YTg5K2JOL3JYWFB1ZXM4NTJ6endmQUNBeVdTRE5STllBTXFVSWVFZUNEeDhURzRlUXVRSUVLSkhBQUVBaXpaQ0Z6L1NNQkFQaCtQRHdySXNBSHZnQUJlTk1MQ0FEQVRadkFNQnlIL3cvcVFwbGNBWUNFQWNCMGtUaExDSUFVQUVCNmprS21BRUJHQVlDZG1DWlRBS0FFQUdETFkyTGpBRkF0QUdBbmYrYlRBSUNkK0psN0FRQmJsQ0VWQWFDUkFDQVRaWWhFQUdnN0FLelBWb3BGQUZnd0FCUm1TOFE1QU5ndEFEQkpWMlpJQUxDM0FNRE9FQXV5QUFnTUFEQlJpSVVwQUFSN0FHRElJeU40QUlTWkFCUkc4bGM4OFN1dUVPY3FBQUI0bWJJOHVTUTVSWUZiQ0MxeEIxZFhMaDRvemtrWEt4UTJZUUpobWtBdXdubVpHVEtCTkEvZzg4d0FBS0NSRlJIZ2cvUDllTTRPcnM3T05vNjJEbDh0NnI4Ry95SmlZdVArNWMrcmNFQUFBT0YwZnRIK0xDK3pHb0E3Qm9CdC9xSWw3Z1JvWGd1Z2RmZUxacklQUUxVQW9PbmFWL053K0g0OFBFV2hrTG5aMmVYazVOaEt4RUpiWWNwWGZmNW53bC9BVi8xcytYNDgvUGYxNEw3aUpJRXlYWUZIQlBqZ3dzejBUS1VjejVJSmhHTGM1bzlIL0xjTC8vd2QweUxFU1dLNVdDb1U0MUVTY1k1RW1venpNcVVpaVVLU0tjVWwwdjlrNHQ4cyt3TSszelVBc0dvK0FYdVJMYWhkWXdQMlN5Y1FXSFRBNHZjQUFQSzdiOEhVS0FnRGdHaUQ0YzkzLys4Ly9VZWdKUUNBWmttU2NRQUFYa1FrTGxUS3N6L0hDQUFBUktDQktyQkJHL1RCR0N6QUJoekJCZHpCQy94Z05vUkNKTVRDUWhCQ0NtU0FISEpnS2F5Q1FpaUd6YkFkS21BdjFFQWROTUJSYUlhVGNBNHV3bFc0RGoxd0QvcGhDSjdCS0x5QkNRUkJ5QWdUWVNIYWlBRmlpbGdqamdnWG1ZWDRJY0ZJQkJLTEpDREppQlJSSWt1Uk5VZ3hVb3BVSUZWSUhmSTljZ0k1aDF4R3VwRTd5QUF5Z3Z5R3ZFY3hsSUd5VVQzVURMVkR1YWczR29SR29ndlFaSFF4bW84V29KdlFjclFhUFl3Mm9lZlFxMmdQMm84K1E4Y3d3T2dZQnpQRWJEQXV4c05Dc1Rnc0NaTmp5N0VpckF5cnhocXdWcXdEdTRuMVk4K3hkd1FTZ1VYQUNUWUVkMElnWVI1QlNGaE1XRTdZU0tnZ0hDUTBFZG9KTndrRGhGSENKeUtUcUV1MEpyb1IrY1FZWWpJeGgxaElMQ1BXRW84VEx4QjdpRVBFTnlRU2lVTXlKN21RQWtteHBGVFNFdEpHMG01U0kra3NxWnMwU0Jvams4bmFaR3V5QnptVUxDQXJ5SVhrbmVURDVEUGtHK1FoOGxzS25XSkFjYVQ0VStJb1VzcHFTaG5sRU9VMDVRWmxtREpCVmFPYVV0Mm9vVlFSTlk5YVFxMmh0bEt2VVllb0V6UjFtam5OZ3haSlM2V3RvcFhUR21nWGFQZHByK2gwdWhIZGxSNU9sOUJYMHN2cFIraVg2QVAwZHd3TmhoV0R4NGhuS0JtYkdBY1laeGwzR0srWVRLWVowNHNaeDFRd056SHJtT2VaRDVsdlZWZ3F0aXA4RlpIS0NwVktsU2FWR3lvdlZLbXFwcXJlcWd0VjgxWExWSStwWGxOOXJrWlZNMVBqcVFuVWxxdFZxcDFRNjFNYlUyZXBPNmlIcW1lb2IxUS9wSDVaL1lrR1djTk13MDlEcEZHZ3NWL2p2TVlnQzJNWnMzZ3NJV3NOcTRaMWdUWEVKckhOMlh4MktydVkvUjI3aXoycXFhRTVRek5LTTFlelV2T1VaajhINDVoeCtKeDBUZ25uS0tlWDgzNkszaFR2S2VJcEc2WTBUTGt4WlZ4cnFwYVhsbGlyU0t0UnEwZnJ2VGF1N2FlZHByMUZ1MW43Z1E1Qngwb25YQ2RIWjQvT0JaM25VOWxUM2FjS3B4Wk5QVHIxcmk2cWE2VWJvYnRFZDc5dXArNllucjVlZ0o1TWI2ZmVlYjNuK2h4OUwvMVUvVzM2cC9WSERGZ0dzd3drQnRzTXpoZzh4VFZ4Ynp3ZEw4ZmI4VkZEWGNOQVE2VmhsV0dYNFlTUnVkRThvOVZHalVZUGpHbkdYT01rNDIzR2JjYWpKZ1ltSVNaTFRlcE43cHBTVGJtbUthWTdURHRNeDgzTXphTE4xcGsxbXoweDF6TG5tK2ViMTV2ZnQyQmFlRm9zdHFpMnVHVkpzdVJhcGxudXRyeHVoVm81V2FWWVZWcGRzMGF0bmEwbDFydXR1NmNScDdsT2swNnJudFpudzdEeHRzbTJxYmNac09YWUJ0dXV0bTIyZldGblloZG50OFd1dys2VHZaTjl1bjJOL1QwSERZZlpEcXNkV2gxK2M3UnlGRHBXT3Q2YXpwenVQMzNGOUpicEwyZFl6eERQMkRQanRoUExLY1JwblZPYjAwZG5GMmU1YzRQemlJdUpTNExMTHBjK0xwc2J4dDNJdmVSS2RQVnhYZUY2MHZXZG03T2J3dTJvMjYvdU51NXA3b2Zjbjh3MG55bWVXVE56ME1QSVErQlI1ZEUvQzUrVk1HdmZySDVQUTArQlo3WG5JeTlqTDVGWHJkZXd0NlYzcXZkaDd4Yys5ajV5bitNKzR6dzMzakxlV1YvTU44QzN5TGZMVDhOdm5sK0YzME4vSS85ay8zci8wUUNuZ0NVQlp3T0pnVUdCV3dMNytIcDhJYitPUHpyYlpmYXkyZTFCaktDNVFSVkJqNEt0Z3VYQnJTRm95T3lRclNIMzU1ak9rYzVwRG9WUWZ1alcwQWRoNW1HTHczNE1KNFdIaFZlR1A0NXdpRmdhMFRHWE5YZlIzRU56MzBUNlJKWkUzcHRuTVU4NXJ5MUtOU28rcWk1cVBObzN1alM2UDhZdVpsbk0xVmlkV0Vsc1N4dzVMaXF1Tm01c3Z0Lzg3Zk9INHAzaUMrTjdGNWd2eUYxd2VhSE93dlNGcHhhcExoSXNPcFpBVEloT09KVHdRUkFxcUJhTUpmSVRkeVdPQ25uQ0hjSm5JaS9STnRHSTJFTmNLaDVPOGtncVRYcVM3Skc4Tlhra3hUT2xMT1c1aENlcGtMeE1EVXpkbXpxZUZwcDJJRzB5UFRxOU1ZT1NrWkJ4UXFvaFRaTzJaK3BuNW1aMnk2eGxoYkwreFc2THR5OGVsUWZKYTdPUXJBVlpMUXEyUXFib1ZGb28xeW9Ic21kbFYyYS96WW5LT1phcm5pdk43Y3l6eXR1UU41enZuLy90RXNJUzRaSzJwWVpMVnkwZFdPYTlyR281c2p4eGVkc0s0eFVGSzRaV0Jxdzh1SXEyS20zVlQ2dnRWNWV1ZnIwbWVrMXJnVjdCeW9MQnRRRnI2d3RWQ3VXRmZldmMxKzFkVDFndldkKzFZZnFHblJzK0ZZbUtyaFRiRjVjVmY5Z28zSGpsRzRkdnlyK1ozSlMwcWF2RXVXVFBadEptNmViZUxaNWJEcGFxbCthWERtNE4yZHEwRGQ5V3RPMzE5a1hiTDVmTktOdTdnN1pEdWFPL1BMaThaYWZKenMwN1AxU2tWUFJVK2xRMjd0TGR0V0hYK0c3UjdodDd2UFkwN05YYlc3ejMvVDdKdnR0VkFWVk4xV2JWWmZ0Sis3UDNQNjZKcXVuNGx2dHRYYTFPYlhIdHh3UFNBLzBISXc2MjE3blUxUjNTUFZSU2o5WXI2MGNPeHgrKy9wM3ZkeTBOTmcxVmpaekc0aU53UkhuazZmY0ozL2NlRFRyYWRveDdyT0VIMHg5MkhXY2RMMnBDbXZLYVJwdFRtdnRiWWx1NlQ4dyswZGJxM25yOFI5c2ZENXcwUEZsNVN2TlV5V25hNllMVGsyZnl6NHlkbFoxOWZpNzUzR0Rib3JaNzUyUE8zMm9QYisrNkVIVGgwa1gvaStjN3ZEdk9YUEs0ZFBLeTIrVVRWN2hYbXE4NlgyM3FkT284L3BQVFQ4ZTduTHVhcnJsY2E3bnVlcjIxZTJiMzZSdWVOODdkOUwxNThSYi8xdFdlT1QzZHZmTjZiL2ZGOS9YZkZ0MStjaWY5enN1NzJYY243cTI4VDd4ZjlFRHRRZGxEM1lmVlAxdiszTmp2M0g5cXdIZWc4OUhjUi9jR2hZUFAvcEgxanc5REJZK1pqOHVHRFlicm5qZytPVG5pUDNMOTZmeW5RODlrenlhZUYvNmkvc3V1RnhZdmZ2alY2OWZPMFpqUm9aZnlsNU8vYlh5bC9lckE2eG12MjhiQ3hoNit5WGd6TVY3MFZ2dnR3WGZjZHgzdm85OFBUK1I4SUg4by8yajVzZlZUMEtmN2t4bVRrLzhFQTVqei9HTXpMZHNBQUFBRVowRk5RUUFBc1k1OCsxR1RBQUFBSUdOSVVrMEFBSG9sQUFDQWd3QUErZjhBQUlEcEFBQjFNQUFBNm1BQUFEcVlBQUFYYjVKZnhVWUFBQW4rU1VSQlZIamE3Snh2YkZQMUdzYy9wNmRyMTY0VngyeHB0eEdZWUJ2Rkc0amFPTzJjV3hRQ09JSUptZmVGK2dLTlJPVUYwVVR2RllueHo0Z3hhakFHSFY3Q1FqUjdvMUVUUS95RGlaR01GL0ppbTkyV3NEbkhYYk51RERQcHlrYi8wZmE1TDJUbk12YUhNemdxaFg2VGt6em5kNTZjOUR4OS92MmU1L2Y3S1V6SFVtQWJzQkdvNHZyQ2Y0R3ZnZjhBUTdNeC9CTVlCZVE2djBiUHkySWFHb0ZzUVRqYWxUMHZFeFNnRWdnQml5bmdRcHdHVnF2QXY0RjFCWG5NZ0ExSUtVQVg4SStDUEdaRnQzSmVsVW9Mc3BnVlVWTkJCdk9qSUtCTFFBWCtkZDRoWFJGS1NrcncrWHlrMDJsVVZlV1dXMjRobTgwaUl2aDhQaktaRExsY0RyL2ZUeTZYMCtoc05rc21rOEh2OXdPUXlXVHcrWHlvcWtvNm5jYnY5Mk15bVVnbWsvajlmb3FLaWtnbWt4cFBJcEhBNy9kanNWaUl4K01hUFRFeFlZUjhrb1lKcUw2K25oOS8vSkgrL240Y0RnZHRiVzJjT25XS1ZDckZzV1BIR0I0ZUpoYUwwZEhSd2NURUJHTmpZN1MzdC9QNzc3OFRpVVRvN3U0bW5VNHpNakpDWjJjblZxdVZucDRlZW5wNlVGV1Y5dloyK3ZyNktDc3I0NmVmZnVMNDhlTTRIQTZPSERuQ3dNQUFIbytIbzBlUDB0dmJTM2w1T1Y5KythVWhBakxNeExMWkxGYXJGUkVoazhsZ3RWb0JTS2ZUMm5nNm5hYTR1RmdibjZLVHlTVEZ4Y1dZVENaU3FaUkdYemllU0NTdzJXeVl6V2FTeWFSR3grTnhqWjdpS1NvcU1zekV6RWE4UkZFVTFxeFpBOENxVmF1NDZhYWJBUEQ1ZktSU0tRQnV2ZlZXNHZFNEFDdFhyaVFZREdvODk5OS9Qd0JWVlZYVTFOVDhNU2xjdXBTNnVqb0FsaTFieGdNUFBBQ0ExK3VsdnI0ZWdJcUtDdGF1WFF1QXgrUFJlTnh1TnpVMU5aaE0vLy8vVFNZVFBUMDlqSTJOWFZiR2VObHB1ZGxzbG84Ly9sanlBVnUyYkZubzk1MitJZzB5bTgwY1BIaVFSeDk5dEJEbVo0US9WYzA3NFlqSVh5T2dvcUtpYTE1enJraEF6YzNOUFBiWVkzbjNzVk5CWWtFQlNPOWM3UG5ubjJmWnNtV1l6V2EyYmR1RzJXek9Pd0VkT25TSS92NStGRVhodmZmZUl4d09YM0l1cGp1SzlmWDF5YldFbXBvYVhWRk10d1pWVkZSZ3NWaHdPQng4OTkxM2VMM2V2Tk9nWjU5OWxtKy8vUmFBa1pFUkxVZWJUNE4wMjBsall5TkxseTdWaEpTUFdMOStQVlZWVmFpcXl2dnZ2Ni9IeFBRbmlqMDlQZGVVaWQxNzc3MjZURXkzZ0Z3dWwzaTlYdkg1ZkRJOFBKeVhRbm55eVNmRjdYYUwxK3NWaThWaWJDYjk4TU1QNC9WNnNWcXRsSlNVNUtXSnJWMjdsc3JLU2tTRWxwWVdJcEdJY1NiMnl5Ky9GS0xZZktpcXFzSm1zMUZTVXNKWFgzMkZ4K1BKT3czYXNXTUhodzhmUmxFVUJnY0hTU1FTeGtXeERSczJVRmxaU1ZGUkVYYTdQUzlOckxhMkZyZmJqYUlvN051M2o2R2hJZU5NckpBb1hnSlREdHJoY0hENDhPRVppZUxBd0FDZmZ2b3BvNk9qS0lyeXQ4M1c3WFk3d1dDUWhvYUdHYytmZWVZWnZ2bm1HeFJGNGVUSms4WW1pZzgrK0NCTGxpeWh1TGdZbTIxNkNUc2NEbE5YVjZjN0t2d1ZhRzV1NXVtbm41NDJkczg5OTJqbDJkYldWa1pHUnY2YUtQYmhoeDllZFFzUTdyNzdia05NVExjR2JkeTRFYnZkVGtsSkNWOTg4Y1cwS0hiMjdObThjTkxQUGZjYzMzLy9QU2FUaVlHQkFXUHJRYlcxdFRRME5MQisvZm9aSm5aaGNSekE2WFN5Zi85K25FN25uTy9Ud3dQd3lpdXY4TkJERHkyWVp6WS9HQWdFMkx4NU01czJiYUswVkgrM1haZUpEUTBOemFtdTc3Nzdyc2EzWjg4ZWFXbHBrVXdtSXkwdExiSm56NTRaNzlMRDA5allLQWNPSEpCSUpDSS8vUENEdExhMnlvb1ZLM1R6VkZkWHoydGl0YlcxdWt4TXR3WTFORFFRREFaWnQyNGR2LzMyMjl4dVB4cGw2OWF0cUtySzFxMWJpVWFqbDhVVGlVVFl2SGt6RlJVVjFOZlhzM3o1Y21LeDJDVjV4c2ZINS94dE8zZnVKQmdNRWd3RzZlenNOTFl2NXZQNWNMdmRGQmNYejl1WUt5c3JBeUNYeTJFeW1iVDdoZkk0blU2dCtRaFFXbG82N1g0dW5xbG01Rnl6Z1dnMGlxcXFEQXdNNkdwUDZ4YlFtMisreVlvVkt5N0pOenc4ek91dnY4N09uVHRwYW1xYTFZSHI0VkVVaGJmZWVvc25ubmlDbjMvK21kN2UzaG0rVGcvUGhYanFxYWMwT2hRS2NlclVLZU44MEtwVnF5UVFDRWhkWFoyTWpvN082WU1Bc2RsczB0VFVKRmFyZGM3MzZlRUJaUHYyN1hMZmZmY3RtR2MySC9UaWl5L0tIWGZjSVlGQVFCd09oN0ZoZnMyYU5acUpYYXpxRi9lYkVva0V1M2J0bXZkOWVuZ0FQdmpnQTBONDRJLzJkeXFWUWxWVklwRUlrNU9UeG1uUTRPRGduQkhoblhmZXVlb1N4VHZ2dkhQZUtIWXByVnl3QmpVMk5ySm8wU0pzTmhzSERoekE1WEpwejZxcnE2KzZwREFRQ013WWUvWFZWMmxyYTBOUkZMcTZ1b3lOWXVYbDViaGNMcXhXSzZxcVRuc1dEQVk1ZVBBZ3pjM05lbW9zZnpxcXE2dlp2WHYzakhHMzI4M3k1Y3NCZEF2SUVCUExSK2hORkhXWE8xYXZYbzNENGFDa3BJUlBQdmtFdDl1ZGR3V3psMTkrbVNOSGptZ2FwQ01QMGwvdUtDc3JvN1MwRkp2Tk5zUEU4Z1UzM25nakxwY0xWVlU1ZnZ5NHNTWjI0c1NKYThyRURJOWlqei8rdUJiRjl1M2JweTJ6eXlmczNyMmJ0clkyVkZXbHU3dmIyQ2ptY0RnMEFmMWRKZFVyaGQxdVovSGlQL2JzTEdSMWlpNFRDNGZEMTJVVTB5M0dSeDU1Uk5PZy9mdjNUMHNVOHdXdnZmWWFSNDhlUlZFVVFxR1FzU1ptc1Zpd1dxMVlyZGE4TlRHTHhZTEZZa0ZWMVhsbi9ZVW85bWRFc1IwN2RyQjQ4V0xzZGp0TlRVMmFzOHNuN04yN2wyUEhqbUUybStudDdUVldnNll1UlZIeWR0cXhZY09HQlM4a1gvQXFWNmZUdVNEN3ZacHdjVGZHMExiUDlRclQ1VWFEdlB6WXk5RDhCUzkyenVWeWhNTmhiWVBjVk1uVlpyUGhjcms0ZmZvMDJXd1dsOHZGK1BnNHFWU0tKVXVXRUkxR1NhVlNlRHdlWXJFWWlVUUNqOGZEK1BnNGlVUUNyOWZMbVRObmlNZmplRHdlSmljbm1aaVl3T3YxTWpFeHdaa3paNmlvcU9EczJiUEVZakhLeTh1Wm5KeGtmSHljeXNwSzR2RTQwV2lVaW9vSzR2RTRZMk5qMDlJUms4bDAyUjNnQlR0cGg4TWhOOXh3ZzNZNW5VN1pzbVdMaUloczM3NWRObTNhSkNJaUw3MzBrdFRYMTR1SXlBc3Z2Q0NCUUVCRVJONTQ0dzJ0cUw1cjF5NjUvZmJiUlVUazdiZmZscnZ1dWt0RVJENzY2Q081N2JiYlJFUms3OTY5VWxWVkpTSWlyYTJ0c25MbFNoRVJhV2xwRVkvSEl5SWluMzMybWR4ODg4MGlJdkw1NTUrTDArbWM5aHNYTFZva1pyUDV6OS90SXlLekZydW5sdmtuazBudG56cDM3cHpHbTBxbHRQckx1WFBucHRGVERjRk1KcU9OWjdOWmJUeWJ6V29OUVJIUnhuTzVuTlowdkhBY01HcExwbkZPT2hhTDBkM2R6ZGpZR0pPVGszUjNkM1B5NUVuaThUaGRYVjNhOXN5dXJpNkdoNGRKcFZLRVFpRkdSa2JJWnJPRVFpR0dob1pJcDlPRVFpRUdCd2ZKWnJOMGRuWVNEb2NSRVRvNk92ajExMS9KNVhKMGRIUnc0c1FKVENZVDdlM3Q5UGYzYXp4OWZYMkcrUzFEOTgyYlRDYk5MMTBKclNpSzFrclNRMS9jVEx5Y2JVOXpWUlFORGZOVEgzaWw5SVVmcUllKzJBWDg3V0cra0FjVk1FMUFrWUlZNWtURUJCd3F5R0ZPSENvY3NEUi9BcjE2NnFad1JOY2NSM1JkaU1JaGI3TWM4blp4Y2Jsd1RPQkZ4d1QrYndDNEU0Mkw2WkNiZWdBQUFBQkpSVTVFcmtKZ2dnPT0iLCJzdXBwb3J0ZWRFeHRlbnNpb25zIjpbeyJpZCI6ImZpZG8udWFmLmFuZHJvaWQua2V5X2F0dGVzdGF0aW9uIiwiZGF0YSI6IntcImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlc1wiOltcIk1JSUNpekNDQWpLZ0F3SUJBZ0lKQUtJRm50RU9RMXRYTUFvR0NDcUdTTTQ5QkFNQ01JR1lNUXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0F3S1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ3d05UVzkxYm5SaGFXNGdWbWxsZHpFVk1CTUdBMVVFQ2d3TVIyOXZaMnhsTENCSmJtTXVNUkF3RGdZRFZRUUxEQWRCYm1SeWIybGtNVE13TVFZRFZRUUREQ3BCYm1SeWIybGtJRXRsZVhOMGIzSmxJRk52Wm5SM1lYSmxJRUYwZEdWemRHRjBhVzl1SUZKdmIzUXdIaGNOTVRZd01URXhNREEwTXpVd1doY05Nell3TVRBMk1EQTBNelV3V2pDQm1ERUxNQWtHQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdNQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjTURVMXZkVzUwWVdsdUlGWnBaWGN4RlRBVEJnTlZCQW9NREVkdmIyZHNaU3dnU1c1akxqRVFNQTRHQTFVRUN3d0hRVzVrY205cFpERXpNREVHQTFVRUF3d3FRVzVrY205cFpDQkxaWGx6ZEc5eVpTQlRiMlowZDJGeVpTQkJkSFJsYzNSaGRHbHZiaUJTYjI5ME1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRTdsMWV4K0hBMjIwRHBuN210aHZzVFdwZGFtZ3VELzkvU1E1OWR4OUVJbTI5c2EvNkZzdkhyY1YzMGxhY3FyZXdMVlFCWFQ1REt5cU8xMDdzU0hWQnBLTmpNR0V3SFFZRFZSME9CQllFRk1pdDZYZE1SY09qencwV0VPUjVRem9oV2pEUE1COEdBMVVkSXdRWU1CYUFGTWl0NlhkTVJjT2p6dzBXRU9SNVF6b2hXakRQTUE4R0ExVWRFd0VCL3dRRk1BTUJBZjh3RGdZRFZSMFBBUUgvQkFRREFnS0VNQW9HQ0NxR1NNNDlCQU1DQTBjQU1FUUNJRFVobysrTE5FWWVuTlZnOHgxWWlTQnEzS05sUWZZTm5zNktHWXhtU0dCN0FpQk5DL05SMlRCOGZWdmFOVFFkcUVjYlk2V0ZaVHl0VHlTbjUwMnZRWDN4dnc9PVwiLFwiTUlJRllEQ0NBMGlnQXdJQkFnSUpBT2o2R1dNVTB2b1lNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1Cc3hHVEFYQmdOVkJBVVRFR1k1TWpBd09XVTROVE5pTm1Jd05EVXdIaGNOTVRZd05USTJNVFl5T0RVeVdoY05Nall3TlRJME1UWXlPRFV5V2pBYk1Sa3dGd1lEVlFRRkV4Qm1PVEl3TURsbE9EVXpZalppTURRMU1JSUNJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBZzhBTUlJQ0NnS0NBZ0VBcjdiSGdpdXhwd0hzSzdRdWk4eFVGbU9yNzVndk1zZC9kVEVEREpkU1N4dGY2QW43eHlxcFJSOTBQTDJhYnhNMWRFcWxYbmYydHF3MU5lNFh3bDVqbFJmZG5KTG1OMHBUeS80bGo0Lzd0djBTazNpaUtreXBuRVV0UjZXZk1nSDBRWmZLSE0xK2RpK3k5VEZSdHY2eS8vMHJiK1QrVzhhOW5zTkwvZ2dqbmFyODY0NjFxTzByT3MyY1hqcDNrT0cxRkVKNU1WbUZtQkd0bnJLcGE3M1hwWHlUcVJ4Qi9NMG4xbi9XOW5HcUM0RlNZYTA0VDZONVJJWkdCTjJ6Mk1UNUlLR2JGbGJDOFVyVzBEeFc3QVlJbVFRY0h0R2wvbTAwUUxWV3V0SFFvVkpZbkZQbFhUY0hZdkFTTHUrUmhoc2JEbXhNZ0pKMG1jRHB2c0M0UGp2QitUeHl3RWxnUzcwdkUwWG1MRCtPSnR2c0JzbEhadlBCS0NPZFQwTVMrdGdTT0lmZ2ErejFaMWc3K0RWYWdmN3F1dm1hZzhqZlBpb3lLdnhuSy9FZ3NUVVZpMmdoenE4d20yN3VkL21JTTdBWTJxRU9SUjhHbzNUVkI0SHpXUWdwWnJ0M2k1TUlsQ2FZNTA0THpTUmlpZ0hDekFQbEh3cytXMHJCNU4rZXI1LzJwSktuZkJTRGlDaUZBVnRDTE9aN2dMaU1tMGpoTzJCNnRVWEhJLytNUlBqeTAyaTU5bElOTVJSZXY1NkdLdGNkOXFPLzBrVUpXZFpUZEEyWG9TODJpeFB2WnRYUXBVcHVMMTJhYis5RWFESzhaNFJISllZZkNUM1E1dk5BWGFpV1ErOFBUV20yUWdCUi9ia3dTV2MrTnBVRmdOUE45UHZRaThXRWc1VW1BR01DQXdFQUFhT0JwakNCb3pBZEJnTlZIUTRFRmdRVU5tSGhBSHlJQlFsUmkwUnNSLzhhVE1ucVR4SXdId1lEVlIwakJCZ3dGb0FVTm1IaEFIeUlCUWxSaTBSc1IvOGFUTW5xVHhJd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBT0JnTlZIUThCQWY4RUJBTUNBWVl3UUFZRFZSMGZCRGt3TnpBMW9ET2dNWVl2YUhSMGNITTZMeTloYm1SeWIybGtMbWR2YjJkc1pXRndhWE11WTI5dEwyRjBkR1Z6ZEdGMGFXOXVMMk55YkM4d0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dJQkFDREl3NDFMM0tsWEcwYU1pUy8vY3FyRytFU2hIVUdvOEhOc3czMFcxa0p0am42VUJ3Uk02am5taXdmQlBiOFZBOTFjaGIydnNzQXRYMnpiVHZxQko5K0xCUEdDZHcvRTUzUmJmODZxaHhLYWlBSE9qcHZBeTVZM20wMG1xQzB3L1p3dmp1MXR3YjR2aExhSjVOa1VKWXNVUzdybUpLSEhCbkVUTGk4R0ZxaUVzcVRXcEcvNmliWUN2N3JZREJKRGNSOVc2MkJXOWpmSW9CUWN4VUNVSm91TVBIMjVsTE5jRGMxc3NxdkMydjdpVWdJOUxlb00xc05vdnFQbVFVaUc5ckhsaTF2WHh6Q3lhTVRqd2Z0a0pMa2Y2NzI0REZodUt1ZzJqSVRWMFFrWHZhSldGNG5VYUhPVE5BNHVKVTlXRHZaTEkxajgzQSsveG5BSlV1Y0l2L3pHSjFBTUgyYm9IcUY4Q1kxNkxwc1lnQnQ2dEt4eFdIMDBYY3lEQ2RXMktsQkNlcWJRUGNzRm1XeVd1Z3hkY2VraFlzQVd5b1NmODE4TlVzWmRCV0JhUi9PdWtYck5MZmtRNzlJeVpvaFpidmFiTy9YK01WVDNycmlBb0tjOG9FMlV3czZERis2MFBWNy9XSVBqTnZYeVNkcXNwSW1TTjc4bWZseERxd0xxUkJZa0EzSTc1cXBwTEdHOXJwN1VDZFJqeE1sOFpEQmxkKzd5dkhWZ3QxY1Z6Sng5eG55R0NDMjNVYWljTURTWFlyQjRJNFdIWFBHanhoWnVDdVBCTFRkT0xVOFlSdk1ZZEV2WWViV0hNcHZ3R0NGNmJBeDNKQnBJZU9RMXdEQjV5MFVTaWNWM1lnWUdtaStOWmZoQTRVUlNoNzdZZDZ1dUpPSkVOUmFOVlR6a1wiXX0iLCJmYWlsX2lmX3Vua25vd24iOmZhbHNlfV19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAxOC0wNS0xOSJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMTgtMDUtMTkifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyIyOGI2ZjIzZGQzMjA1MmI0YzUxYTk3ZWNkZjhhYzkxMmIxM2I1Y2RiIl0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjI4YjZmMjNkZDMyMDUyYjRjNTFhOTdlY2RmOGFjOTEyYjEzYjVjZGIiXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkZlaXRpYW4gQmlvUGFzcyBGSURPMiBQbHVzIEF1dGhlbnRpY2F0b3IifSwiZGVzY3JpcHRpb24iOiJGZWl0aWFuIEJpb1Bhc3MgRklETzIgUGx1cyBBdXRoZW50aWNhdG9yIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6Mn1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50IiwicmVtb3RlX2hhbmRsZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlCMlRDQ0FYNmdBd0lCQWdJUUZRTktXKzd6YmcvN2QrbFR5cklXd0RBS0JnZ3Foa2pPUFFRREFqQkxNUXN3Q1FZRFZRUUdFd0pWVXpFZE1Cc0dBMVVFQ2d3VVJtVnBkR2xoYmlCVVpXTm9ibTlzYjJkcFpYTXhIVEFiQmdOVkJBTU1GRVpsYVhScFlXNGdSa2xFVHlCU2IyOTBJRU5CTUNBWERUSXlNRFl3T0RBd01EQXdNRm9ZRHpJd05USXdOakEzTWpNMU9UVTVXakJMTVFzd0NRWURWUVFHRXdKVlV6RWRNQnNHQTFVRUNnd1VSbVZwZEdsaGJpQlVaV05vYm05c2IyZHBaWE14SFRBYkJnTlZCQU1NRkVabGFYUnBZVzRnUmtsRVR5QlNiMjkwSUVOQk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRXNGWUVFaGlKdXFxbk1nUWpTaWl2QmpWN0RHQ1RmNFhCQkgvQjd1dlpzS3hYU2hGMEw4dURJU1dVdmNFeGl4UnM2Z0Izb2xkU3Jqb3g2TDhUOTROT3pxTkNNRUF3SFFZRFZSME9CQllFRkV1OWh5WVJyUnlKendSWXZuRFNDSXhyRmlPM01BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0RnWURWUjBQQVFIL0JBUURBZ0VHTUFvR0NDcUdTTTQ5QkFNQ0Ewa0FNRVlDSVFDQjBORlFTTjB6NGxXei95YzM2ZXdyVEN6dHRLL3FGdmxhUE9LaCtUMW82d0loQVAwb0tLQStjaWNzRHkzWTNuK1ZsUDhlQjNQQnpNa2h2Vy85SVNYQ3crVkIiLCJNSUlCMkRDQ0FYK2dBd0lCQWdJUkFNczhZWFZCb0JOdVhVanFmQ29YN3k0d0NnWUlLb1pJemowRUF3SXdTekVMTUFrR0ExVUVCaE1DVlZNeEhUQWJCZ05WQkFvTUZFWmxhWFJwWVc0Z1ZHVmphRzV2Ykc5bmFXVnpNUjB3R3dZRFZRUUREQlJHWldsMGFXRnVJRVpKUkU4Z1JVRWdVbTl2ZERBZ0Z3MHlNekF4TURFd01EQXdNREJhR0E4eU1EVXlNVEl6TVRJek5UazFPVm93U3pFTE1Ba0dBMVVFQmhNQ1ZWTXhIVEFiQmdOVkJBb01GRVpsYVhScFlXNGdWR1ZqYUc1dmJHOW5hV1Z6TVIwd0d3WURWUVFEREJSR1pXbDBhV0Z1SUVaSlJFOGdSVUVnVW05dmREQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJEMkxISEFRcVliZFIxV1psdWVydE0zMHJXaG9yWWF2V21NVmE0bmRYOVBad3VSRXBMUTRtMW5FbHFRS01uUkU4LzRDK1Jxd2lhdittcEk0a3hkNWU1dWpRakJBTUIwR0ExVWREZ1FXQkJTM1paanlHbGhaOTlOMXZMb1RQWFZVYTRaRVlEQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01BNEdBMVVkRHdFQi93UUVBd0lCQmpBS0JnZ3Foa2pPUFFRREFnTkhBREJFQWlBb0QrUjZrb2xJV2FOSno0aHowM0QzZ2VzM0diTUJqQVdwa09VZzlheUZnd0lnYkV3N0FZU3lrNjhPdnhnWGV6Z25kVFJURXVTV1QrZmRSbkxhQk5zYVR3MD0iLCJNSUlCMkRDQ0FYNmdBd0lCQWdJUUJUbWszWndpbEZYanNaeXdIRG5NZ0RBS0JnZ3Foa2pPUFFRREFqQkxNUXN3Q1FZRFZRUUdFd0pEVGpFZE1Cc0dBMVVFQ2d3VVJtVnBkR2xoYmlCVVpXTm9ibTlzYjJkcFpYTXhIVEFiQmdOVkJBTU1GRVpsYVhScFlXNGdSa2xFVHlCU2IyOTBJRU5CTUNBWERUSXlNRFl3T0RBd01EQXdNRm9ZRHpJd05USXdOakEzTWpNMU9UVTVXakJMTVFzd0NRWURWUVFHRXdKRFRqRWRNQnNHQTFVRUNnd1VSbVZwZEdsaGJpQlVaV05vYm05c2IyZHBaWE14SFRBYkJnTlZCQU1NRkVabGFYUnBZVzRnUmtsRVR5QlNiMjkwSUVOQk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRW5mQUtianZNWDFFeTFiNmsrV1FRZE5WTXQ5SmdHV3lKM1B2TTRCU0s1WHFUZm8rKzBvQWovNHRud3lJTDBIRkJSOVN0K2t0anFTWERmamlYQXVyczg2TkNNRUF3SFFZRFZSME9CQllFRk5HaG1FMkJmOE81YS9ZSFo3MVFFdjZRUmZGVU1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0RnWURWUjBQQVFIL0JBUURBZ0VHTUFvR0NDcUdTTTQ5QkFNQ0EwZ0FNRVVDSUJ5Uno0T0FsUlo5SHo5S1Y3ZzJRTnRDMEM4SnhIL3hMSlk4RlpFbXRKM3NBaUVBc3JlVDArZU5rTmNVakk5aDVPUENvSDZObXNPa2d2RUFCSlpyRjA3QURrWT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBRkFBQUFBVUNBTUFBQUF0QmtybEFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFCSFpwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFBRHcvZUhCaFkydGxkQ0JpWldkcGJqMGk3N3UvSWlCcFpEMGlWelZOTUUxd1EyVm9hVWg2Y21WVGVrNVVZM3ByWXpsa0lqOCtJRHg0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJa0ZrYjJKbElGaE5VQ0JEYjNKbElEVXVOaTFqTURFMElEYzVMakUxTmpjNU55d2dNakF4TkM4d09DOHlNQzB3T1RvMU16b3dNaUFnSUNBZ0lDQWdJajRnUEhKa1pqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWo0Z1BISmtaanBFWlhOamNtbHdkR2x2YmlCeVpHWTZZV0p2ZFhROUlpSWdlRzFzYm5NNmVHMXdQU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2SWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhodGJHNXpPbkJvYjNSdmMyaHZjRDBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5d2FHOTBiM05vYjNBdk1TNHdMeUlnZUcxc2JuTTZlRzF3VFUwOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXRiUzhpSUhodGJHNXpPbk4wVW1WbVBTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZjMVI1Y0dVdlVtVnpiM1Z5WTJWU1pXWWpJaUI0YlhBNlEzSmxZWFJ2Y2xSdmIydzlJa0ZrYjJKbElGQm9iM1J2YzJodmNDQkRReUF5TURFMElDaE5ZV05wYm5SdmMyZ3BJaUI0YlhBNlEzSmxZWFJsUkdGMFpUMGlNakF4TmkweE1pMHpNRlF4TkRvek16b3dPQ3N3T0Rvd01DSWdlRzF3T2sxdlpHbG1lVVJoZEdVOUlqSXdNVFl0TVRJdE16QlVNRGM2TXpFNk5Ua3JNRGc2TURBaUlIaHRjRHBOWlhSaFpHRjBZVVJoZEdVOUlqSXdNVFl0TVRJdE16QlVNRGM2TXpFNk5Ua3JNRGc2TURBaUlHUmpPbVp2Y20xaGREMGlhVzFoWjJVdmNHNW5JaUJ3YUc5MGIzTm9iM0E2U0dsemRHOXllVDBpTWpBeE5pMHhNaTB6TUZReE5Ub3pNRG95Tnlzd09Eb3dNQ1lqZURrNzVwYUg1THUySU9hY3F1YWdoK21pbUMweElPVzNzdWFKaytXOGdDWWplRUU3SWlCNGJYQk5UVHBKYm5OMFlXNWpaVWxFUFNKNGJYQXVhV2xrT2pKRk56RkNSa1pEUXpZM1JqRXhSVFk1TnpoRVFUbERRa0kyTkRZelJqa3dJaUI0YlhCTlRUcEViMk4xYldWdWRFbEVQU0o0YlhBdVpHbGtPakpGTnpGQ1JrWkVRelkzUmpFeFJUWTVOemhFUVRsRFFrSTJORFl6Umprd0lqNGdQSGh0Y0UxTk9rUmxjbWwyWldSR2NtOXRJSE4wVW1WbU9tbHVjM1JoYm1ObFNVUTlJbmh0Y0M1cGFXUTZNa1UzTVVKR1JrRkROamRHTVRGRk5qazNPRVJCT1VOQ1FqWTBOak5HT1RBaUlITjBVbVZtT21SdlkzVnRaVzUwU1VROUluaHRjQzVrYVdRNk1rVTNNVUpHUmtKRE5qZEdNVEZGTmprM09FUkJPVU5DUWpZME5qTkdPVEFpTHo0Z1BDOXlaR1k2UkdWelkzSnBjSFJwYjI0K0lEd3ZjbVJtT2xKRVJqNGdQQzk0T25odGNHMWxkR0UrSUR3L2VIQmhZMnRsZENCbGJtUTlJbklpUHo0NzdKWEZBQUFBWUZCTVZFWC8vLzhFVnFJWFphdkcyT29xY0xHMnpPT2t3dDBCU0p0cWxjWFY0dSthdXRsV2hiems3UFVBTVk5SGNyS2p0TmJxOGZlQWw4YUJvc3p6OXZwZGpzR0dxdEYzbjh1VHNOU1pwYzZKc05UNSt2MHhZS251OFBmZjUvTDQ4ZmcvZnJpY3pKZ1lBQUFEQUVsRVFWUjQya1JVQ1piRElBakZYWk9ZMVRhdE5jMzliemtzU1ljM3I0TUU0Zk1CQWFENnpsOHkvOVRPZ2V0OGQ1amZONzhid00vZERDUnBSNTIxelhmb2pISjA1SUl5aEJBVVNWQU9OZEd6Qll0MmY3S0ZyZmtKYUFrSGg5RlpoY0RYSFJrVEtvOU1MaWhHYWF2SW1uVjNxeUVYMEVwcmd6LzREd1VEN2tDSFJuZDhRRk40M0dvNFVWbUREZ3phNHcyN29pemRBMitjSyt1dVVwampvMit4d2MvNDJXNTB4NUxHWWVEQnNSMEhWSXg1eDhpRjYwQ2JsYlRFRWtGcjI3Yk5EQlVWU3ExT0tWUGJFNjJiM0VIOEZxQmc1T09PRXVjMnQ4WkppcU1PdUdwK2NLamc3d1ZHY2VvenFONHB4Z1ZQUWtqRllnYlZKS0RVaERDallyYXdQNXE0RVRnQzlmSU1SSHRpdHBRY0N2Sk9FTGNiTXNRZ25jaVJrbGpweVFqdkc0NGpxQlVFVEZpQmkxUEVJeWVrT3pzVytUeTVjTEhvczVSK2RNUzFMdFNTeGYzZ1FIY3pSMkNJNGdNTnBXNElSQTFRTWE2dEo0K0M2dUh1R0U4bU5ESXlGcWcvT1AvTU1VdWVTNklxOFM5MGRBZUJKU0V5L3FLa0srQk53ejhjWVk0amI1SjZ1NGlXQ0kyQjFaNTZMVzVrRWM0aGtkTXBzdlVDNTU4NVNYMFF1YmNnTnF5ZmdERkVjVHQrNDAvMFM1Tngwd2FDdzNPS2tjT2JBNUluMEFZcDAxcGpqdzJuNjI2VURqdEh3YTI4aUh1VEtxdHJ2K3JlVzQxTlo2aUdscjd1dUxKQ2ZrRnRjdGNHMDRzZ20xZU5TK1phRG5wYVRFckdveVg1SksyaU16OHhzMG5Pd1dHY1BETjQ5cWFDZDRiekpvekRabS9hQksrRW96THcrWGhOQmlZd0hmMHNpT3UxWFBrRy96S3d2cVlLY2ZTd0RFY0gvb1VlMDdlcy9XUThySXlnMkRPWGo4dGprWmR1REIvYjhoekRsbE1NT0NTNUJFbmQ1MzRmOHRpM1VaYzRrTXMzeEx5YWZNU3NKaGRHOFhQcWpOazV0QWdPMjVmZUtDaG5WZERqL0owRk1rT3NVL3hNQnYwd0ZoWWVFR2ZWSDEzZnVEVTB5REZMYTRmYzdSbldIQmZ1VEZWMnRFbU53YWRjN2FjM1VZMmpmQmw3SFQzNmZlMzRpUU81bU5DRkZCVzA3S2pQZ3FoT0xVMDF2WjhQdWVaMkpDbEZaTjhqa1VzNjl1a2E5ZVBwNitFZkw0QUY1K055d1NiaXJIdGNCOE1sL2drd0FFamtLNjRLakhQZUFBQUFBRWxGVGtTdVFtQ0MifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0wOS0yNiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IkZlaXRpYW4gQmlvUGFzcyBGSURPMiBQbHVzIEF1dGhlbnRpY2F0b3IiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlUyRjEwMDAyMDI0MDkyNjAwNSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTA5LTI2IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjF9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjQtMTEtMjAifSx7ImFhZ3VpZCI6IjA5MjI3N2U1LTg0MzctNDZiNS1iOTExLWVhNjRiMjk0YWNiNyIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiMDkyMjc3ZTUtODQzNy00NmI1LWI5MTEtZWE2NGIyOTRhY2I3IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlRhZ2xpbyBDVEFQMi4xIENTIn0sImRlc2NyaXB0aW9uIjoiVGFnbGlvIENUQVAyLjEgQ1MiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MjMwOCwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9LHsibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MTAsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6MCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjAsImJsb2NrU2xvd2Rvd24iOjB9fSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDRHpDQ0FiYWdBd0lCQWdJSU5MN2M3NkRtMCs4d0NnWUlLb1pJemowRUF3SXdSREVMTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFvVENsUmhaMnhwYnlCTVRFTXhJREFlQmdOVkJBTVRGMVJoWjJ4cGJ5QkdTVVJQSUZKdmIzUWdRMEVnUlVORE1DQVhEVEkwTURZeU9EQXdNREF3TUZvWUR6SXdOVFF3TmpJM01qTTFPVFU1V2pCRU1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDaE1LVkdGbmJHbHZJRXhNUXpFZ01CNEdBMVVFQXhNWFZHRm5iR2x2SUVaSlJFOGdVbTl2ZENCRFFTQkZRME13V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVM0MVU4OGc4aXVIOFRtby9mNGhmQXZ5dTU5ZUw4Z0JLaGJiWVNGZUlqcklobXJabnFZdTJha29RYkcrR3BTTWt4WGtUVWRybHI3S3FzL21vVE5rRG1WbzRHUE1JR01NQXdHQTFVZEV3UUZNQU1CQWY4d0hRWURWUjBPQkJZRUZBd0hkWWhSL1UvVEk2Rk85Wk1ibW5yVUltd3lNRjBHQTFVZEl3UldNRlNoU0tSR01FUXhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFLRXdwVVlXZHNhVzhnVEV4RE1TQXdIZ1lEVlFRREV4ZFVZV2RzYVc4Z1JrbEVUeUJTYjI5MElFTkJJRVZEUTRJSU5MN2M3NkRtMCs4d0NnWUlLb1pJemowRUF3SURSd0F3UkFJZ0NsSkMyaVpGaFZzM3BwNm1rQ1IyWlhRblpVTDhLRURIZGY1WVp1cm12KzBDSUg0RXV1RFJBNFZYQ2h0ekl2bmdsakhXamdJMXZSRTdHSmphcDc3eG9aeEYiLCJNSUlDQ2pDQ0FiQ2dBd0lCQWdJSVhRcEtpLzRMZnNrd0NnWUlLb1pJemowRUF3SXdRakVMTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFvVENsUmhaMnhwYnlCTVRFTXhIakFjQmdOVkJBTVRGVlJGVTFRZ1JrbEVUeUJTYjI5MElFTkJJRVZEUXpBZ0Z3MHlOREEyTWpnd01EQXdNREJhR0E4eU1EVTBNRFl5TnpJek5UazFPVm93UWpFTE1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBb1RDbFJoWjJ4cGJ5Qk1URU14SGpBY0JnTlZCQU1URlZSRlUxUWdSa2xFVHlCU2IyOTBJRU5CSUVWRFF6QlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJGVGxwM0R0WGQvcjZvUmJqUzNpcmszNjU4TlEvdkRUWEw2c1lYekMyYTI0akhPMXpQZk1rMERtbWVTT0ZtUytXM1kyalpNY1V1aWErMGRmeS91QThuR2pnWTB3Z1lvd0RBWURWUjBUQkFVd0F3RUIvekFkQmdOVkhRNEVGZ1FVRnNzeGkvY1NPMHpseTV1cEoxT0plYXdZV0dzd1d3WURWUjBqQkZRd1VxRkdwRVF3UWpFTE1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBb1RDbFJoWjJ4cGJ5Qk1URU14SGpBY0JnTlZCQU1URlZSRlUxUWdSa2xFVHlCU2IyOTBJRU5CSUVWRFE0SUlYUXBLaS80TGZza3dDZ1lJS29aSXpqMEVBd0lEU0FBd1JRSWdVWHg4dWJyQitZVzhSTHpUT1I2Qy9sSy9oMnIyUEJTRnlPUWc1eTlCcWNZQ0lRRDM4Rjd1QkQ1SjFPMlJ1ZlFoT2w5MW9GdGNUM0tKRWtYRFBTOVpVQ0J5dGc9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFFMEFBQUFnQ0FZQUFBQlhZL1UwQUFBQUNYQklXWE1BQUFLdUFBQUNyZ0Z0N0RJYUFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCM2QzY3VhVzVyYzJOaGNHVXViM0pubSs0OEdnQUFDSE5KUkVGVWFJSHRtWDl3WEZVVnh6L2Y5emFiTG9Gb0FTbE42ZkJEQmdzSWd3cUkvRlJuQkVRRnh4R1VYMVZJazVjMHBVTlRPOE1neVhZakl6OHNkYkROajkzS3BGUUhJUzA2MVZvS2hUSU8wQTRnNktBVktPV0hoVmJxbERTa1AwS3kyWGY4NDcydDYyWjMyWkFHUnFiZm1aMTk5NXg3enpuM3UvZWRjKzlkbVJrSE1EbzRIM1VBLzQ4NFFOb0h3QUhTUGdBT2tQWUI4TEVscmFtcGFhcm5lWjhmRDl1UlVzcUVkTDBMVDl4aTlzcitjTmJRMEhDSm1WV1Y2bE5UVS9PN2VEdytQQlkvemMzTnNlSGg0YzBFaTZJQ29MNisvbXpnVGtrdHlXVHk4YkhZTDBrYXNDSURxeFBTc3hWdzU4MW0veHFMTXpQNzQvdjEyYkpsU3pXd2F5eCsrdnY3WTY3clJvRjk1RXVxQmM0QkxnVEdqN1M0V1g5Q3VoUjRPQTAzSnFTc2FnOHdBR3dDTmpqUTNXSzJzUXgvcVp6bnM0QlRKVDFuWnMrRnNxRmR1M2J0SGQwVXlvT2szbkJQK3VwWWJaVWtiYm5rQXNkWHcvbjljQTl3WmFpcUNqK0hBMmY3MEp5UTdnWG14czE2aTlsTEpwTmU5dG56dkFYQXFXYTJLcGxNemgvalBONFhlL2Z1blIrTHhWYlgxTlQ4YWF5MmlwSzJTS3JzaFJYQUorZVluUWRjMVNZOWJYQVg0T1oxRi9CRDRLeUVkRkhjYk10WUE5dmZXTFpzMlI3RytGcG1VWlMwWHZnbDhFMWdYeDVyTmJ1N1RkcGt3YXFiWEdEWU5HRE5BdW1NSDVudEdXMHd0YlcxaDdpdWV6WXdXZElSa3ZwOTMxK1hTcVUyNWZaTEpCS1JyVnUzZmxuU05LQkMwb3UrN3c4RFNOb0lET2JiYm1wcU9qaVR5WnppdXU1YjdlM3RiMmJsczJiTk9teG9hT2d5eDNFKzVmdis5a2drc3JLam8yTm5xVGdMYmprUzBsWEFOV0Z6WXE2dTFleWhTamdaNkFZS0hWeFAzQU0vTCtXMEVPcnI2eStLUkNML2xyUkdVamR3aDVsMVN0clkwTkJ3U2JhZjUzbVR0MjNiOXJ5a3RjQWlZS0daUFNScGJTajdRU0g3NlhTNjNjeldEdzhQWDVhVk5UWTJucE5PcHpkSnVzZk1icGZVbmNsa1hxcXZyeitoVkt3alNFdEpGY0R0T2FJSllXN2JoNXZNZHNiTnJoZGNCTHhld083MXQwb25sbkk4SWhESHFRSjZ6V3lGbVMweXM0WEFtMERFekdibGRGME1uR0ptVHdISHU2NDdEWGdCeUFBSngzSHVMMkwva055MjUza0grYjcvQUhBbzhBQkJldGtJSENIcGpwS3g1Z3ZlaG91QnFibXkxK0dnUW9OYnpkWWVDaWNDSHJBNVIrVm1vTEdVNDN6MDl2YXVUQ2FUVTFLcDFPV3BWR3AyS3BXYUsrbUdVSDAwd1BUcDA2dUFTd0VjeDdreG1VeSsydEhSOGJLa3V3RFh6QTdwN094OG94eC9abllwTUFYWVdsTlRjMDB5bWJ4WDBweFFmWEZ6YzNPczJOZ1JwRm13ajhtWDdldVhrTzVyazM2OFNLb0V1TUZzTUc2V09pbklaOThBbGhQa2xLK1ZFM3dXUFQwOW1YeFpKcFBaSGo1R0FhcXFxbzRseU1NMk9EajQ5MncvU1ZzQUhNZTVvRngva3M0UEh4L1BicVpkMTkwUXlpYnMzcjE3YXVHUmhRdkJpTmRLNE9jMFR6TzRzaGVtSjZUYXVObVRBSmViWllEVndPb0ZVdFVBZkxiY0NlU2lycTV1RW5DeTY3cXU0empSWEYwbWs0a28yQ3Y2UzVjdUhlenU3czdLRDVhRWplNXk4Tk1Ba3ZZVmhmYjI5dDJlNXcwQU1jZHhEaXMyc0JCcEk0NDVBMEcreUNLN3d6MEJlUGluMG5FM20yM1A3UjlXenFjVFVnUTRIempkZ1EzVFlIMUlia0Y0bmpmRGNad09vS0xRL0NXOVJWQjgzQmt6Wmt3QjNncmxwNFpkQ3VYWGdwQlVIZnA0TjArMUI0ajV2ajhxMHZyeTJnWU01YlRUNGZkbVFVTStZY3NsOXgvQmEzbzVRWDY4RC9oSmk5bU9VcFB3UE85dzRCY0VaOFVrOEZzek8wdFNJb3lCWkRLNXcvTzhaNEF2T283VFZsdGJlMHMwR2owS3lCYUs5ejJtWmVIN3ZoT3UyblNleWdEeVYza3VDcEgyTjRMSlp2RnUzQ3ozQUwwU1dBcDB0SnE5bHhYZUpoMldoaGtXRklDakNmTGF0K05tYThxWmhKbGRJQ2tHYk4yNWMyZFRUMDlQcHE2dXJqOGtiZC9xOUgyL3lYR2NSNERySXBISWRiN3ZaOGV2N092ciszVTV2Z0FjeHhrME13cGNJSHdpL0M1Ni9pMUUyaHBnWGs3N25WeGwzS3dsdDUyUXFvRzV3QndndDZ5M2wwc1lnS1RKQUdiMlNyWW9TTW9Xb0gya3VhNGJOYk9JcEI0ejJ5eHBBTmlRU3FYV2pUS243UWg5VkdjRnMyZlByaVlzT283akZEM1ZqQ0J0UGp3K0gxN2t2d1hodFVJRHc5ZXdDV2dGOHQvL0FlQm5aWWNmSUIwR095RXJjRjAzR3E2a1FZQ1pNMmRPTkxOVndNR1NtcnU2dXJabSszWjFkWTNLbVpsdERyOC9sNVVORGc2ZUZ6NzJUWm8wcWVqQmZnUnBabVp0MGx3TEtpSEFuL1A3SktUVENHNHN6aWhpZDJIYzdPMHk0OC82ZlNtc2dGL3dQTy9jZ1lHQnY4UmlzVE5EOVhzQTZYUjZxdU00aHdMNHZ2K0c1M21iZ1ZlQXZ6cU9zNnF6cy9PWlVmaDdUTkk4NE55NnVycXZtdG1yanVPMFNrTFM4bEozZWdXUFVhMW1Ed0hyQUFUUFp1V1MxQlk0ZXBiaWhLMCtDZUxsQnA5RlgxL2ZrOER6QklYZ2lWZ3N0aHU0SS9UYkM3Qmt5WklYek93U2dud2o0RFBBdDRBVzMvZWY5anp2N25MOVRaa3laUzJ3SHFoMEhPY3gxM1hma0hRbThGb21rMmtwTmJib2RiZmdFUUEzWEdrSnFYbytQR2h3SjhVUCtvOEEzeXUxcmNqQzkvM1ZrbTRDZmcvQjVyYWlvdUpDU1czQWc1SldtZGs5d05YUmFQUzdFUHhvd0xWQWxhU3JhMnBxb3BsTTVoZ3ptMGV3bDV6ZDJOaDRUQ2FUMlJ2YW5wUGo3MWVoN0ZHQWVEenVWMVpXZnQzTTVwblpNak5iS2FuRmRkM1RseXhaOGo4N2doSGNGTXVkYlpKbmtJaWJIWm1RamlKNFhVOHBZbWVYNExZallVRzlXWDRKMzIrb3I2Ly92cVRmQVBjbms4a3JjM1dlNTcwTW5PQTR6cm1kbloxUGpWY01VT0pxeUlLSzlXalkzQUhjU25CVmRCTEJ6VWNmd1FGM0hiQ2kxV3ozZUFZS0lPa3JBR2EyTFZmdWVkNDBnbTJPdWE3NzBuakhVZXJtdGxyQm5veDRzQi9yQ1Q4ZkpiWUJTR3BzYUdpWVlHYi9KTGhjdUJhb0JKWXZYcno0blZJRzlnZEtrUll4K01ONEJ6QWFEQTBOM1IyTlJyOURjRTArTTBkbGtucWkwV2pkaHhGSDBaeDJxM1RzTFdabG4rVStMRnh4eFJYdXhJa1R2eVRwT0RNN0V0Z3VhWDFYVjlkKytadXhIQlFsN1FDSzQyUDdEL3Q0NGorSXdULzFUTWt6N2dBQUFBQkpSVTVFcmtKZ2dnPT0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJGSURPXzJfMSIsIkZJRE9fMl8wIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJjcmVkQmxvYiIsImxhcmdlQmxvYktleSIsImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6IjA5MjI3N2U1ODQzNzQ2YjViOTExZWE2NGIyOTRhY2I3Iiwib3B0aW9ucyI6eyJyayI6dHJ1ZSwiY2xpZW50UGluIjp0cnVlLCJ1cCI6ZmFsc2UsInBpblV2QXV0aFRva2VuIjpmYWxzZSwibGFyZ2VCbG9icyI6dHJ1ZSwiYXV0aG5yQ2ZnIjpmYWxzZSwiY3JlZE1nbXQiOnRydWUsInNldE1pblBJTkxlbmd0aCI6ZmFsc2V9LCJtYXhNc2dTaXplIjoxMDI0LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhTZXJpYWxpemVkTGFyZ2VCbG9iQXJyYXkiOjIwNDgsImZpcm13YXJlVmVyc2lvbiI6MjMwOCwibWF4Q3JlZEJsb2JMZW5ndGgiOjEyOH19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTA2LTE0IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIzMDgsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiVGFnbGlvIENUQVAyLjEgQ29uc3VtZXIgQXV0aGVudGljYXRvciIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjQwNjE0MDAyIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMDYtMTQiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MjMwOH1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNC0wOC0wOCJ9LHsiYWFndWlkIjoiY2E4N2NiNzAtNGMxYi00NTc5LWE4ZTgtNGVmZGQ3YzAwN2UwIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiJjYTg3Y2I3MC00YzFiLTQ1NzktYThlOC00ZWZkZDdjMDA3ZTAiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiRklETyBBbGxpYW5jZSBUcnVVIFNhbXBsZSBGSURPMiBBdXRoZW50aWNhdG9yIn0sImRlc2NyaXB0aW9uIjoiRklETyBBbGxpYW5jZSBUcnVVIFNhbXBsZSBGSURPMiBBdXRoZW50aWNhdG9yIiwiYWx0ZXJuYXRpdmVEZXNjcmlwdGlvbnMiOnsicnUtUlUiOiLQn9GA0LjQvNC10YAgVHJ1VSBGSURPMiDQsNGD0YLQtdC90YLQuNGE0LjQutCw0YLQvtGA0LAg0L7RgiBGSURPIEFsbGlhbmNlIiwiemgtQ04iOiJGSURPIFRydVUgQWxsaWFuY2VGSURPMiIsImZyLUZSIjoiRXhlbXBsZSBUcnVVIEZJRE8yIGF1dGhlbnRpY2F0b3IgZGUgRklETyBBbGxpYW5jZSJ9LCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCIsImJhRGVzYyI6eyJzZWxmQXR0ZXN0ZWRGUlIiOjAuMCwic2VsZkF0dGVzdGVkRkFSIjoyRS0wNiwiaUFQQVJUaHJlc2hvbGQiOjAuMCwibWF4VGVtcGxhdGVzIjo1LCJtYXhSZXRyaWVzIjo1LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjowLCJibG9ja1Nsb3dkb3duIjowfX1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOlsiYW55Il0sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDU3pDQ0FmS2dBd0lCQWdJVVczWEs4eXl3YkFXbGlnbGl4SUY2M2R2cVl5OHdDZ1lJS29aSXpqMEVBd0l3ZkRFTE1Ba0dBMVVFQmhNQ1ZWTXhFVEFQQmdOVkJBZ01DRU52Ykc5eVlXUnZNUTh3RFFZRFZRUUhEQVpFWlc1MlpYSXhFekFSQmdOVkJBb01DbFJ5ZFZVc0lFbHVZeTR4SWpBZ0JnTlZCQXNNR1VGMWRHaGxiblJwWTJGMGIzSWdRWFIwWlhOMFlYUnBiMjR4RURBT0JnTlZCQU1NQjNSeWRYVXVZV2t3SUJjTk1qTXhNVEF6TWpBek5qVXhXaGdQTWpBMU16RXdNall5TURNMk5URmFNSHd4Q3pBSkJnTlZCQVlUQWxWVE1SRXdEd1lEVlFRSURBaERiMnh2Y21Ga2J6RVBNQTBHQTFVRUJ3d0dSR1Z1ZG1WeU1STXdFUVlEVlFRS0RBcFVjblZWTENCSmJtTXVNU0l3SUFZRFZRUUxEQmxCZFhSb1pXNTBhV05oZEc5eUlFRjBkR1Z6ZEdGMGFXOXVNUkF3RGdZRFZRUUREQWQwY25WMUxtRnBNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVOQXZidGNjTXI3ai9TUldtcUlFWlRSV05KeWo2bXNZcjVsR2VBZ2RTR3lDOU8wMzU2UkllY3VhVmlPcXowRHhnUzFmLzVLUGJacDF0MHlEMmZWUlg5Nk5RTUU0d0hRWURWUjBPQkJZRUZBNXRMMTBnODh0MnFYbFBsaElTSTJkSXpsYVZNQjhHQTFVZEl3UVlNQmFBRkE1dEwxMGc4OHQycVhsUGxoSVNJMmRJemxhVk1Bd0dBMVVkRXdFQi93UUNNQUF3Q2dZSUtvWkl6ajBFQXdJRFJ3QXdSQUlnWGZ1dmpzcCs0djVpR09xbmdVZ09nMWhtYmdGUEZNZ0lqeVd4Q0txdy9kOENJRmltTE5YTERJd0Erb0liUDF5T2ZxRTh4azZxNy80TFdPVllrUkFMb0JDMiIsIk1JSURYekNDQWtlZ0F3SUJBZ0lMQkFBQUFBQUJJVmhUQ0tJd0RRWUpLb1pJaHZjTkFRRUxCUUF3VERFZ01CNEdBMVVFQ3hNWFIyeHZZbUZzVTJsbmJpQlNiMjkwSUVOQklDMGdVak14RXpBUkJnTlZCQW9UQ2tkc2IySmhiRk5wWjI0eEV6QVJCZ05WQkFNVENrZHNiMkpoYkZOcFoyNHdIaGNOTURrd016RTRNVEF3TURBd1doY05Namt3TXpFNE1UQXdNREF3V2pCTU1TQXdIZ1lEVlFRTEV4ZEhiRzlpWVd4VGFXZHVJRkp2YjNRZ1EwRWdMU0JTTXpFVE1CRUdBMVVFQ2hNS1IyeHZZbUZzVTJsbmJqRVRNQkVHQTFVRUF4TUtSMnh2WW1Gc1UybG5iakNDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNd2xkcEI1Qm5naUZ2WEFnN2FFeWlpZS9RVjJFY1d0aUhMOFJnSkR4N0tLblFSZkpNc3VTK0ZnZ2tiaFVxc01nVWR3Yk4xazBldjFMS01QZ2owTUs2NlgxN1lVaGhCNXV6c1RnSGVNQ09GSjBtcGlMeDllK3BabzM0a25sVGlmQnRjK3ljc21XUTF6M3JESTZTWU9neFhHNzF1TDBnUmd5a21tS1BacE8vYkx5Q2lSNVoyS1lWYzNySFFVM0hUZ091NXlMeTZjKzlDN3YvVTlBT0VHTStpQ0s2NVRwam9XYzR6ZFFRNGdPc0MwcDZIcHNrK1FMakpnNlZmTHVRU1NhR2psT0NaZ2RiS2ZkLytSRk8rdUlFbjhyVUFWU05FQ01XRVpYcmlYNzYxM3QyU2Flcjlmd1JQdm0yTDdEV3pnVkdrV3FRUGFidW1EazNGMnhtbUZnaGNDQXdFQUFhTkNNRUF3RGdZRFZSMFBBUUgvQkFRREFnRUdNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdIUVlEVlIwT0JCWUVGSS93UzMrb0xrVWtyazFRK21PYWk5N2kzUnU4TUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFCTFFOdkFVS3IreUF6djk1WlVSVW03bGdBSlFheXpFNGFHS0Fjenltdm1kTG02QUMydXBBclQ5Zkh4RDRxL2MyZEtnOGRFZTNqZ3IyNXNid01wampNNVJjT081TGxYYktyOEVwYnNVOFl0NUNSc3VaUmorOXhUYUdkV1BvTzR6elVodzhsby9zN2F3bE9xekpDSzZmQmRSb3lWM1hwWUtCb3ZIZDdOQURkQmorMUViZGRUS0pkKzgyY0VIaFhYaXBhMDA5NU1KNlJNRzNOemR2UVhtY0lmZWc3akxRaXRDaHdzL3p5clZRNFBrWDQyNjhOWFNiN2hMaTE4WUl2RFFWRVRJNTNPOXpKcmxBR29tZWNzTXg4Nk95WFNoa0RPT3l5R2VNbGhMeFM2N3R0VmI5K0U3Z1VKVGIwbzJITE8wMkpRWlI3cmtwZURNZG16dGNwSFdEOWYiXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBUE1BQUFEQ0NBTUFBQUNyRGdRRkFBQUNkbEJNVkVVQUFBRC9BQUQvZ0FEL1ZWWC9nRUQvWmpQL2dDdi9iVW4vZ0VEL2NUbi9nRFAvZEM3L2dFRC9kanYvYlRmL2R6UC9jRUQvZUR6L2NUbnllVGJ5YzBEemVUM3pkRHIwZWpmMGRUWDFlajMxZGp2MmNUbjJkamYyY2o3M2R6ejNjenIzZURqNGVEejRkVHI0ZURuNGRUZjRlVHo0ZGp2NWVUbjVkamo1Y3ozNWR6djVkem41ZERmNmR6ejZkVHI2ZURuNmRUajZlRHI2ZGpuMmREejJkanYyZERyMmR6bjNkenozZFR2M2R6cjNkVG4zZUR6M2RqdjNlRHIzZGpuNGREajRkVHI0ZHpuNGRUbjRkenY0ZHpyNGRUbjRkeno0ZGp2NWRqbjVkanY1ZFRyNWRUbjVkVHY1ZHpyNWR6bjNkanYzZGp2M2RUcjNkanIzZFRuM2RqdjNkVHYzZHpyNGRqcjRkem40ZGp2NGRqcjRkem40ZGp2NGRUcjRkVG40ZGpuNGRqcjRkem40ZGp2NWRqcjVkem41ZFRyNWRqbjVkanIzZGpyM2R6bjNkanYzZGpyM2R6cjNkVHY0ZGpyNGRUcjRkam40ZFR2NGRqcjRkanI0ZHpyNGRqcjRkenI0ZFR2NGRqcjRkanI0ZGpyNGRqbjVkenI1ZGpyNWR6cjVkVHY1ZGpyM2RqcjNkVHYzZGpyM2RqcjNkam40ZHp2NGRqcjRkenI0ZHp2NGRqcjRkVHI0ZGpyNGRqcjRkanI0ZGp2NGR6cjRkenY0ZGpyNGRUcjRkanI0ZFRuNGRqcjRkanI0ZGpyNGRqdjVkanI1ZGpyNWRqcjVkem4zZGpyM2RUcjNkanI0ZGpyNGRqcjRkanI0ZGp2NGRqcjRkem40ZGpyNGRUcjRkanI0ZGpyNGRqcjRkanI0ZGpyNGRqcjRkam40ZGpyNGRqcjRkanI0ZGpyNGRqcjRkenI0ZGpyNGRqcjRkanY0ZGpyNGRqcjRkanI0ZGpyNWRqcjNkanI0ZGpyNGRqcjRkanI0ZHpyNGRqcjRkanI0ZGpuNGRqcjRkanI0ZGpyNGRqcjRkanI0ZGpyNGRqcjRkanI0ZGpyNGRqcjRkanIvLy84VUJibmFBQUFBMEhSU1RsTUFBUUlEQkFVR0J3Z0pDZ3NNRFE0UEVCRVNFeFFWRmhjWUdSb2JIQjBlSHlBaUl5UWxKaWNvS1NvckxTNHZNREV5TlRZM09EazZQRDArUDBCQlFrTkVSa2RJU1V0TVRVNVFVbE5WVjFoYVcxOWdZV0pqWkdWbVoyaHFhMnh0YjNCemRIVjNlSHg5ZjRDQmdvU0ZoNGlKaW91TWpaQ1JrcFNWbVpxY25aNmZvYUtrcGFhbnFhcXJySzZ2c0xPMHRiZTV1N3k5dnIvQXdjTEV4Y2JIeU1uS3k4N1AwTkhTMWRiWDJObmEyOXpkM3QvZzRlTGo1T1htNStqcDZ1dnM3ZTd2OFBIeTgvVDE5dmY0K2ZyNy9QMytDUFcvSkFBQUFBRmlTMGRFMFhuUi93b0FBQWR0U1VSQlZIamEzZHo1V3hWbEZNRHhjMUZjd01RQ0ZTdEtXOVV5TGJWVUxFb05NdG8zQ21pbGZVRkVXMmpmdk5DZTVWSUIzclRTTEtYTk1ncHhwUVF2WHYra3dzZDZyM3J2ekx6dmU4NTV6M3ZQYi9KYzdzd1hjRDR6YzJjR0lOTk1peC9KaFZrOUUzUm16anJ2aXp2S1FYY3FObmxkdktVNkJ2cVRWNzNkMitKZmFvYUIyZVRYZEh0WnZLdGhGSmhQWWNNKzc0cjdHb3ZBYmtvYUQzcFZmS2lsRk96bnJKWkJiNG9QeDg4Qm5QR0dhMDJRYzREcnpuTEFIZkZjbTRFY3huVlhUb0ljUENQRWNtMEhzbzljMjRQc0c5YzRJUHZFZFNwK0xuQ01JSzVSUVE2ZXVUSzQ3bHdJbkZQeFZVNkNMSnRyS3BEbGNrMEpjdkNNY2NRMU5janl1T1lBV1JiWFhDQUw0cG9SNUJDdTErY215QUs0NWdmWk5kZHVRSGJKdFR1UVhYSHRGdVF3cnZ0SlFKNEVrZ2VmYXhrZ3MzSXRCdVRnbWQrT1Z0dytuMklGSHlnbmVGTWtycitsQUhsT0xaVHVvZmpyd2VCNlI4MXdpdjk1Kzg0QXFFUDhZQXVSNjE0S2tJZTJzTFZEdjVKMm9zTXpHNjc3R3NmaHIxRHgwSUZ2NHVqZTNFV0hxTlEzNVpvRTVNS0d2ZisrZGZMWWYrUW11cjA3RTY1SlFNNnYrZjNvbXk4Nzl1K0NMc0s5K09tNlhLK2VSYkZKUFhZNTBNOWovdnZTSXRLak5hMmphNUlqWlBVNWNxWDZvdnBkZERqbG1nWms5UUhFcXJRdmwrNUorOXU2eEJYWFJDQ3JCUXpSckthTzVEb1VMYTU3RzBiakw3YnN1RzFvN2ZHL2lIYnlzNm5CWE5PQnJDWnh3aWI2S05MRUIrblp1U1lFV1UzeXBIM3NKbzZUTVptNUpnVlp6YktUWGxQUXhYTFNMUVBYcENDclVUU3JXWFR5TDJCek5mM0o4QTIwSUt1cHpQVENURHRNSFF0b3VhWUJlVzJHa2xVWlg1cU9OQS9YSkNCUGphY3laQnhQYzJha0diaG1BRGtieldrLy9zN01rdlN2SEkrL2NrVzNFV2c0Zm1VV0RUdnpzbjNMQ1VqN2NVNDlPOGhCTkt0Wjd0MW5KMEVncTJrSytMNkNIL3o2akN3UTVHQ2ExU3dPT2dvZzRab081QkNhMWJRR0h2dVFjRTBFc3BwNHlMZG5ScHFXYXhLUXcybFdVeDl5bUV2Q05RSElhdXJDTndhaEh6YTV2MVlwNnhGeXBrbEUyUFJtUlZvZTE5bEJqa1p6RktSbGNSMEVjalNhb3lHZFpwNWpyaVBld1JwTWMwU2toWEJkc1RIYVNsWkdmY1BXaUtlam5YRTllMjNFTll4SGZzc3dwQjF6SFFheURzM1JrVTduZW9vNGtIVm8xa0ZhelVETFJGa2c2OUdzaFhRNjEyTUZnYXhMc3g3U2FucFl1STRHc2k3TnVraHpjcTM5U0ltb05Hc2p6Y1oxVkpBTmFOWkhtb1hyeUNDYjBHeUNORG5YMFVFMm85a0VhVnF1eTR3dW02MHoyMmdZWGJhSnpYV3gyZDFNQ2NOTnFoYlNhZzRnY3EwSHNqbk5wa2pqYzYwTHNqbk41a2pqY2gycjNtYTgrREhtaTExOHhIaXN1ZFlIMllwbU5XMDIxNXZiY0QxN2pjV1NXNjErMkpQMldDejZ5T29aakNEYjBxem1YcXVMc00yNExyTzhqNlhlZHMvZTh0NEtmYTZMYlc4dlRsaHZQaTgrWkxjR21seWJnb3hCczVwbTZ4c3J1cU92eFV6Nyt3K2JFWFlNekpIK2Y1WkdYdGhTNjJYWjBJeUN0SVBtS3B5ZDNqYVBtbHR4a2kyUlptMjJwUmtMYWM3bWVxeGthNlRabWhPSUp5SXRrZVpxVHFMZUJkbnNSZk55MURNMGRrZ3pOZVBRaklRMFUzTVZJRStiK09aVzdHUXJwRm1hOFdoR1FacWx1UjQvMlFacGp1WUV5V2VFNWtnek5DZUpIbS9STExoNU9VMnlPZEwwemRnMDJ5Tk4zMXdGWk5NbXRMbVZMdGtVYWVwbUNwcHRrYVp1cnFkTU5rU2F1RGxCZlBtT0VkSzB6WVBrVDU1YUlhNjVtVHJaQ0duU1pqcWFyWkFtYmE0Q2hta1QxZHpHa1d5QU5HRXpMYzFxNmdRMTEvSWtROTRYWXBvM3NOMElvM3ZoR0Zsemt2SFdpRVloemMvd0pjUG83U0thZnl4a2JJYXJSVFF2QWRaNVUwRHpHN3pKVU5ManZMbDNBbk16M09HOCtYYnVaSWg5NnJoNXZZTUh6WjkvMEduendGUndNSTg3Ylg3TVJUS00yT0t3K1R0SDk1elBUemxyVGwwSmp1WmxaODB2dVVxRzAvNXcxTnhUNHF3WmJuYlVmQk00bkErY05IL3NNaGttOXpsby90dnhrM0FlZHREYzREWVpobTlpYi80bTMzRXpYRGJJM0h6NGNuQStMekEzUCs4K0djYit5dHE4YzV5QVpyaWV0WGtwaUpqM0dKcy9sSkVNWmZ2Wm12c21DMm1HKzltYTc1T1NESGtkVE0xZkNuckVhTWdWRjFqTmc3TkEwS3hnYVc2V2xCeHl4UVZTTThkVkZEcXptS0c1RW9STm5MeDVsYlJrS04xTjNNeDFGWVhPM0VQY2ZMZThaTWo3bkxRNSs5UGhYYzcwQWNMbTVBd1FPVThUTmo4bE14bEdiaVZyM2paYWFET1VwNmlhSzBEc3ZFN1UvSnJjWkNqK2s2UjUxd1RCelhBclNmTXRrcE1oOWdsQjg3cVk2R1k0N3lCNmMvK0ZJSHdlUlc5K1JIb3lqTmlNM0x4MXBQaG11Q0tGMnB4YUNCN01pNmpOTFQ0a1E5RnZpTTNkcDNyUkREY2lOdDhBbnN6N2FNMGYrWklNWng5QWF2NXJpamZOOEJCUzg0UCtKTVB3alNqTlgrZDcxQXlYRGlJMEg1NExYczF6Q00zUCtwVU1wK3l3YnQ1WjVGa3pMTEZ1dmc2OG0zY3RtOS94THhrbTdiVnEzbittaDgxcHo3Z3dhYTczTVRudEdSY0d6WWxoWGphcjIyZjFtNU16d2ROcE1tNWU1bXN5RkhRWk52OVU2RzB6WEdQWWZDMTRQRzhiTmIvbGN6Sk0zRzNRdlBkMHI1dmhMb1BtTy8xT2h0Z2E3ZWJQWXA0M3d3WDltczBEMDhEN2VWS3orUW4vazJIa0ZxM203MGZsUURNc1NHazBwNjZDbkpoWE5acGZ5WTFrS0o0WCthWHppaG5XNXg5VjJCRjY0bjVmM0FBQUFBQkpSVTVFcmtKZ2dnPT0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiY2E4N2NiNzA0YzFiNDU3OWE4ZTg0ZWZkZDdjMDA3ZTAiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjp0cnVlLCJ1cCI6dHJ1ZSwidXYiOnRydWV9LCJtYXhNc2dTaXplIjoxMjAwLCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0IjoxNiwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoxMjgsInRyYW5zcG9ydHMiOlsidXNiIiwibmZjIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN30seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTI1N31dLCJmaXJtd2FyZVZlcnNpb24iOjF9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiTk9UX0ZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjMtMTAtMDYifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIzLTEwLTA2In0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiMmVkMDg3NGI1MmQ5ZDA0MzYwYmYzOTQyOGI4NDBkOTU2MDQwNGZmYyJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyIyZWQwODc0YjUyZDlkMDQzNjBiZjM5NDI4Yjg0MGQ5NTYwNDA0ZmZjIl0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJTdGFyU2lnbiBLZXkgRm9iIn0sImRlc2NyaXB0aW9uIjoiU3RhclNpZ24gS2V5IEZvYiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjJ9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCIsImJhRGVzYyI6eyJzZWxmQXR0ZXN0ZWRGUlIiOjAuMCwic2VsZkF0dGVzdGVkRkFSIjoyRS0wNiwiaUFQQVJUaHJlc2hvbGQiOjAuMCwibWF4VGVtcGxhdGVzIjoyMCwibWF4UmV0cmllcyI6NTAsImJsb2NrU2xvd2Rvd24iOjB9fV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsic29mdHdhcmUiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIiwiYmx1ZXRvb3RoIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlCdGpDQ0FWdWdBd0lCQWdJQkFUQUtCZ2dxaGtqT1BRUURBakJLTVFzd0NRWURWUVFHRXdKRVJURWhNQjhHQTFVRUNnd1lSeXRFSUUxdlltbHNaU0JUWldOMWNtbDBlU0JIYldKSU1SZ3dGZ1lEVlFRRERBOUdTVVJQSUZKdmIzUWdRMEVnTURFd0hoY05NakF4TVRFeU1EQXdNREF3V2hjTk5EQXhNVEV5TURBd01EQXdXakJLTVFzd0NRWURWUVFHRXdKRVJURWhNQjhHQTFVRUNnd1lSeXRFSUUxdlltbHNaU0JUWldOMWNtbDBlU0JIYldKSU1SZ3dGZ1lEVlFRRERBOUdTVVJQSUZKdmIzUWdRMEVnTURFd1dUQVRCZ2NxaGtqT1BRSUJCZ2dxaGtqT1BRTUJCd05DQUFRdzZjeSt6bk15UTZwdGQ0Smpxdm1hNGU4UmUrWnBwYjkwR3FLdnNSQm5GOFdtTTV5WldJT0tqUWdqLzgrM2o5YXZXK1N5QWEvMU1heXdRRDZCMGc5YW96SXdNREFQQmdOVkhSTUJBZjhFQlRBREFRSC9NQjBHQTFVZERnUVdCQlNzZXBXdXV4bUQwbzhqMVkyNzhiTFRHQ1pOdmpBS0JnZ3Foa2pPUFFRREFnTkpBREJHQWlFQXUzM1NwMEU3QkVkSG96RUdBQ2xOc2EweVBCNnNFRG9RN1c0a2l5MERaMTRDSVFDSkxEVEpEQW5XeG8zMXp6dnJXdUlOdEJxeTA0NCtHZ0ZQNit3bHFHNjZOdz09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUZBQUFBQlFDQUlBQUFBQmMyWDZBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBQUIzUkpUVVVINHdJVURDMEZvT1VISUFBQUNjZEpSRUZVZU5ydG0ydFFWTmNkd1AvL2MrOCtXSmFDUEJZMUNnc0NvcERNYUQ3NEFNVWtpbU9uV20zeUlaMXBxOWlwbzdaV25hWk5NMDFzbTdiVXFLaGtMTlpIZk15MEg0cXRWdTFVTXlNMDBjNG9kc3hNd1ZDTkdsT0Z3UUJyV0o1N1grZmZEK2Z1Z3dWV05zR21OUGNNSDliTHVXZlA3Ly8rbjROSVJQQkZHZ3krWU1NQ3RvQXRZQXZZQXJhQUxXQUwyQUsyZ0MxZ0M5Z0N0b0F0WUF1WUFNYnFCSWlJSHROeGtsaVdRaDlpZmd2RytMWDRGU0lDUUNBUTZPem9hR3Q3ME5IZTN0ZmZqd0NBR0NFV0hQd0JETVBJTDhpZk5Xc1docWNCQUNpcWV2clVLWVlNQmo4UHZodGVZZkRuSVhNQmlIalNsNUltWms3eVpIbzhIbzlzazhXZUVURUdzQnhiZUloNDY5YXQvVFUxOVJmcWVucDZZTVF0UkE5VjAxWlhWTXllUFR0S2dxcWl2UFNEbCt5eS9Oa1Zpd0NFS05TU2xwYjJsUlhMdjdOdTNhUkprK0kyNlpERzM3dDJiZlUzdnZuY29tZE8vS0cydDZkSFlvd2hDdmtSSXVDSUEwWVFzbmpNSXFhSnB6R1dHbkY5UkFyK2t5RSs5UGtPN1A5dDZiejUzOXU0OGNQYmQyQmtUMlRSbmtDRUFKenpmZnYyclZ6eDFiOWZ1dVIwT0J4Mk95S2FUa2lFaUN5MnFvbGltQlpoMEZrQXhIWVJBT0p4YnhTN0ZUOUJPYm9TRW9EbzdYUG5ubjNtMlpNblQrSUl6aXhIaVYrTWl0VnIvbFpmNzNBNElsOGJHQmpRTkUyU1pWbVM0RkhCVEZGVlhkZUc5MElLeTFkVlZmZ1VjWkZJS0VEWGRjTXduRTZudytFQUlzWVlBTWdTMjdwNXk5V0dxOXZmMlA0SUh5WWlWVlVydnJYNjBzV0xUcWVUaUFCUjFiUkVseXRuMnJTUytmUG56SjJUbFpPVDVIYWJIalN5bW9rb3daVVFPenIwQndiZXVYZ3hLU2tKUnhzWlFoSWpRQVFpdjk5LzU5YnR5NWN2WDdseTVhTzdkelZOczBrU1k4eU9lUHpvVVFTbzNQN3JhRU9qNE9DY0U5RzIxN2JsWm1YbmVYT21aWHZ6dkRsVEprMys3b2FOTFMwdHVxN1RXSXp1N3U2c0tWUEY0aE16UEYxZFhXT3lyS1pwZDI3ZC90cktWVm1UbjhqejVvaWZuS2xaeDQ4ZUl5SWVNUk1pWHp0Nytvd25MVjNRVHN2MnppZ29QSFA2ZEpSRXhoajRrMC9HQkRpMHQwTUhEbVpQbVJwQ21EcjVpZXROMXlObmh2TndZR0JnVWRtaWg1MmQ0b2tzeTZmUG5pa29MQlNHaldOVUpQVDA5QlRQTExKSkVpTDI5dlhkK09CbWNrcktaNnc2eE80NGtVZ2hGOTk5ZCszcU5jSnJpS2lnc1BETVg4N0t3VVFZanRKL3FqM1IxdG9xYUJWVlBYVGtTRUZob1hnTng3bzJFa3VPeWNLaFJWancwOEt5c3A5czI5WS9NQ0JrMGR6Y2ZPM2F0WkIwVEdCRlVTb3JLMjAybTNqNi9Bc3ZsQzRvSGI4RmM4WGFpcm56NWpGRWtXVi85dHEyNkR4Y1YxZlgzZE50MnJhaWZuL3paczc1T0tVVkxycDE2OWFlL241RWxDV3BxYW1wdWJsNUVQQTdkZlVPdXdNUUZVMWJ2bkpGVG02T3lHbVBZNFFNK1RIMUVtTDVCV1VMOC9QelJEQ3p5M0xkaFFzQWdJQW1WVU5EZzNBQlNaSTJyTi93LzlFSmJ0NnlSZGQxUkpSa3VlSEtGU0ZqQmdBK242K2xwVVhJSmkwdExTOC83L0dKLzc5azFVUUFNRy91UEpmTEpaNzg2OFlOWVYweUFIeHc4MllnRUVoSVNFQUFUNmJINFhERUZVSU5idmk3L0krY0w4ck12cjUrSUhNbU11enlkL1BSU0pZQUVOeHV0d2lyb3d6ZDZaNk1sTlFKdnZZT0Fualk2V3QvOExGbllxWU1BSGMvdkN0Q2xLSHJ1VG01a2lURkpjN1dsdGF5c2pLbnc0blJqb1JtR1JpTUZnYm5qREdiYks3dmNpWXNLeThuQW1RWWVvc0grNHFRcjR0cUlhQW94My8vdXdXbGNlUU9TWkxTMHpNNlArN2d4RFZOdTNmL3ZnbDgvLzU5eGhnQnFKcm05WHJqdGgvT3RZQWlJeE01SUlhZEJmdEJNNUlpb3FhcW85RXVJMUJWbFl6NEVnZGpMSE5pNXZ1TmpaSXNjNFA3T2p2TjVxR3ZyeThrUzd2ZEhuL1VaYUsvUXlJZWpzRFJNUmtZaXFLTlVVanJ3QkhSbEFBTmpyS0RPbGhDUUFLTWUyUG9jcmtJd0NBQ0lIR0FJWWUvaEFnQWpQalRMK2RjNTF3M0RCWU9kUWpCVXdEaUZMa0R6ZzJVWlFLemUrZWFob3h4enMwbUYyQm9PalNJQUVEakJvKy9qMVFVeFd5NUVZVk1aUUJ3dTkyaWo3YkpOcCt2STk1RkU5Mko1VXVYMnUxMklHSWpoeTRDSU02QnFMNitYbENwbXZyYzRpVU1NWGJPRjhKUU5EVXRQUzNlV04zYjI4Y1F4VkZrU25LS0NUeGw2aFRoZmt4aXJhMXRqendIaXhvWkdSbkhqaDhiYmZQUTIvTmtVYkVkbUtqWWQrMnVTazVKd1ZHYmFGekFobUcwdDdjRFl3akFHRXRMVHplQjgvTUxFQkdKbUNUZHYzZlBNQXhabHVQQ2ptTm01R2tsQVVOa1k5K2JtT28xZE4zZjFZV0lRT1N3Tzd3NVhyTzBuREdqTU5IbEVpZGE3ZTN0dmIyOVk5WEtmSTVWQnlLMnRMWStmUGhReENaUHBpYzFOUlVJR0FHNGs1S3l2VjVCMk9YM3Z4ZHNwc2JwQ0tucTdmUG5GVVVSL0VYRnhlR1lEd0FsQzBzNTU0Z29BK3pZc1hPOFY5SGkwR2QvVFkzRFprTUFWZFBtbGN3WEhzWEU1Y09TSlV2RkFTS1RwUGVibWk1ZHZEVGVtVStmK3JQZjM4MFk0MFRjTUo1YnZEaFlEUUFnWWtuSi9HeXYxekFNQUxEYjdidXJxc2E3VmRmVTFOaGxtWWk0WVpTWGwzdXpzNFZ0aHhQZ0x5c3JEU0lSTnE4Mk5Qemk5ZGVqd3NCNENWZWNhUDM2OWJkdTNtU01FWkhrY0x6eTZxdmhlNC9RN05JRnBVVkZSUWJuUkpUb2NyMTE2SzNxdlhzL1hRTDhIR2tCNE9mYmZucityK2VjVGlmblhOUDFSV1ZsdWROeWg3bHFrV1Y1VjFXVmFHZzQ1elpaMnY2cnlsZCsrS091cnE3eFlzYWRIUjNyMW43NzhJRUR0bUREbDV5Y1hMVjdkMlFsTitodWFXYlJ6RDF2VnF1YUtwamRibmR0YlczSm5MbUhEeDRNS01wWWJVc2NocHRmT2thMjQvZjdxM2JzWERDL3BLNnVMaUV4VWZTWW1xNGZQbm9rT1NVNTBpWEQ1OUlVdkxEWnRXUG4zajE3RWwwdWthaUlLQkFJSktkTWVPcXBKNHVMaXpNeU0xTW5wTW8yYWRqTzVoSGRJWkNpS0Q5KytXV0pNVVFNS01yT1hic2NUbWY4WGtORW9HdWF6K2Q3OE9CQlkxUGo5YWJyZmIyOXJvUUU4eEFQVVZYVkhUdDN2dmoxRnpubmtScU92aEFYMkRYN2Z2UEc5dTEybXkzWTRuQ1JzWFJkNTRiQmlZQnpDTjEzVXFoU3BLSFpQM1E5endDSWN5WkpkcnZkREppTUJRSUIwU2Z6SWNJTFhUalJTRTBTb3NTWXhGaUlKNlF6RGxEOVp2WHlGU3Npbnc4UEhCci91SHAxMDZaTi83NzdrVHN4VWZSb1p0RWJYRFdzRWh4bVIwZ1lGVXR3MEY4TURGSFpLQlNNRk5sN2lWMllDS0xaSk01NytucG5QLzMwM3VycTZkT25EM3QzT1R5d1dFTFg5ZW85MVg4OFVkdlcxb1lBa2lTWmY1TVFWaXdON3ZFajhJYkE0ZWdPYjJPa3dFRm1Ud0FZdnRNMmRGMlM1YWxaV1JWcjE2NnVXQk5UYWlNRFEvQUN0ZkdmalNkcWErdnFMdmg4UGwzVnpNdnhDQ01aWnQ5eHBoUWNlbXdkb3pHSW1HeXoyU1pQbnJ4czJaZFhQYjhxdjZEQVpyT0ZkajVzWE1EWVJVV1VWWFIyZHZxNy9JRkFBSUNHMzlsb0ZmcW9pNE1ZUit6aG5XR0MwNW1hbHBvU3VvNGJURGtzTTFyL004MEN0b0F0WUF2WUFyYUFMV0FMMkFLMmdDMWdDOWdDdG9BdFlBdllBcmFBTGVEL3FmRWZibU1jVkNwOGJHOEFBQUFBU1VWT1JLNUNZSUk9In0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIxLTEyLTEwIn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMS0xMi0xMCJ9LHsiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjkzNzYxNzQ0ZTJhYTVhZmNlODNhNjdmYmVlYmRkM2ZlMWVkMjQyOTQiXSwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiOTM3NjE3NDRlMmFhNWFmY2U4M2E2N2ZiZWViZGQzZmUxZWQyNDI5NCJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiWXViaUtleSA1IFNlcmllcyJ9LCJkZXNjcmlwdGlvbiI6Ill1YmlLZXkgNSBTZXJpZXMiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDczLCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjJ9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50IiwicmVtb3RlX2hhbmRsZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURIakNDQWdhZ0F3SUJBZ0lFRzBCVDl6QU5CZ2txaGtpRzl3MEJBUXNGQURBdU1Td3dLZ1lEVlFRREV5TlpkV0pwWTI4Z1ZUSkdJRkp2YjNRZ1EwRWdVMlZ5YVdGc0lEUTFOekl3TURZek1UQWdGdzB4TkRBNE1ERXdNREF3TURCYUdBOHlNRFV3TURrd05EQXdNREF3TUZvd0xqRXNNQ29HQTFVRUF4TWpXWFZpYVdOdklGVXlSaUJTYjI5MElFTkJJRk5sY21saGJDQTBOVGN5TURBMk16RXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFDL2p3WXVoQlZscWFpWVdFTXNyV0Zpc2dKK1B0TTkxZVNycEk0VEs3VTUzbXdDSWF3U0RIeTh2VW1rNU4yS0FqOWFidlQ5TlA1U01TMWhRaTN1c3hvWUdvblhRZ2ZPNlpYeVVBOWErS0FrcWRGbkJubHl1Z1NlQ09lcDhFZFpGZnNhUkZ0TWprd3o1R2N6MlB5NHZJWXZDZE1IUHR3YXowYlZ1em5ldWVJRXo2VG5RakU2M1JkdDJ6YnduZWJ3VEc1WnliZVdTd2J6eStCSjM0WkhjVWhQQVk4OXlKUVh1RTBJek1aRmNFQmJQTlJiV0VDUktnanEvL3FUOW5tRE9GVmxTUkN0MndpcVBTemx1d24rditzdVFFQnNValRHTUVkMjV0S1hYVGtOVzIxd0lXYnhlU3lVb1RYd0x2R1M2eGx3UVNnTnBrMnFYWXdmOGlYZzdWV1pBZ01CQUFHalFqQkFNQjBHQTFVZERnUVdCQlFnSXZ6MGJOR0poamdwVG9rc3lLcFA5eHY5b0RBUEJnTlZIUk1FQ0RBR0FRSC9BZ0VBTUE0R0ExVWREd0VCL3dRRUF3SUJCakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBanZqdU9NRFNhK0pYRkNMeUJLc3ljWHRCVlpzSjRVZTNMYmFFc1BZNE1ZTi9oSVE1Wk01cDdFamZjbk1HNEN0WWtOc2ZOSGMwQWhCTGRxNDVyblQ4N3EvNk8zdlVFdE5NYWZiaFU2a3RoWDdZKzlYRk45TnBtWXhyK2VrVlk1eE94aThoOUpESWdvTVA0VkIxdVMwYXVuTDFJR3FyTm9vTDltbUZuTDJrTFZWZWU2L1ZSNkM1K0tTVENNQ1dwcE11SklaSUkydjlvNGRrb1o4WTdRUmpRbExmWXpkM3FHdEtidzd4YUYxVXNHLzV4VWIvQnR3YjJYMmc0SW5waUIveXQvM0NwUVhwaVdYL0s0bUJ2VUtpR24wNVpzcWVZMWd4NGcweExCcWNVOXBzbXlQeksrVnNndzJqZVJRNUpsS0R5cUUwaGViZkMxdHZGdTBDQ3JKRmN3PT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZkNBWUFBQUNHVnMrTUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFIWVlBQUIyR0FWMmlFNEVBQUFiTlNVUkJWRmhIcFZkN1ROVjFGRC8zZDU5d2VRU0lnUzlBUUFYY0ZMQVFaaTlmcGVWejF0WS9XVFpyNVd4cGM3VzVrbkxhNWpJM1o4NXNyUzJuTTJzanRXd1pTN0lVSDRINHhDbkVReDREQVpGNzRWN3VzODg1djkvbEluQnZWSi9CNFB2OW51LzVudS81bnZNNTU2ZnpBL1F2MEhiL0lyWDNWRktQbzQ1Y25tNGluVUlXWXdMRlJtWlFVdXdqRkcvTjFpUkhoMUVaME5SVlJ1ZHF0MUJkKzJuU0t5Uy9PaHlzMCtsazNlLzNrUTlxdkQ0WlV0YTRWVlNVdVkwZWlweWlUaEFmb2NvT1JWZ0R1dXczcUtSaUFkM3JiY0V0alRqWUlvZjZXYUhzQ216VlBXQ014K2NnaDh0THFXTUthTVdzVWpMcW8yUnRKSVEwb096bWVycFF1NGVzWmdzT05rR3hIN2Qwa2R2VFQxN3M0T01VN1ZJOFpoamdHYU0rQXE5aUVOdThQaWYxdWR6MDdNd3ZLV2Y4R2xWb0NFWTA0UEM1V2RUYVhZRmJSOHZOdkw1KzNLZ2ZiNXhOTXlhOVJhbUppeW5hTWxHVFZ0RmxyNmJhOXUrcHFuRVg0dU11UlJnalNZRWhyTjd1dEZGZTZscWFsN05ma3c1aW1BR0h5blBwYms4Vm1ZMHhzdG5wdGxGQ1ZDWXR6VHVCTjgzUXBNTGpUdGV2ZFB6U1VuSjdlOG1ranhaMzlmWGJLRGZsZFpxYnZVK1RVZ0duQlZGNmZRMmlQSGc0VzE2VVdVd3Z6YmsxNnNNWkUrUG4wcHZ6N0pTZXVBeWVzOGxjcENtYUt1by9wK3FXcjJVY3dJQUhXcnZQMFlFemhYQXRMQWJzc0hocDdpR2FtdnlpalA4cnlxclhVV1g5WG9vd3h5QXVmTkJycDQzUE9CRlhabGtmOE1EUmlxY3B5b3dBd3B1ejJ4K2ZXdnovRHRkZTlzbXN6eWd0Y1I2QzF3YmR6Qmw2T2xxNVdOWVk0b0dhdGhKTXJrVEV4MGpBUlNIQVZzKzVyWWtRTlhiK1FnZlBMc1E2Z1h5SW5zcmVRZm1wbTdSVkZZZkw4Nm4xZmlVT2tZdlNoa1VQeHZidWt6b3k2SzFpaE0xaG8zWHpXNkV2U2ZYQStkcGlXR2FXZCtkb1h6THptR3dLWUZMQ0FzUkFsUEJBaE1sQ0ZYVTd0QlVWUHI4SGdWY0pIV3ErRjAwcGxyK0RNVGRyUDR6dnhZMTFrTk1oeFQrU2VUR2crZDRWNUxRSml0eVVHSk5COFZGWnNqZ1lCWk0vSUkvWENUa2owcXlET3BGMkFWUTE3Q0lqVXAvRG5UMVVrTDVGNWdkaitzUzF3ZzFnRTNnaWdtNjBmQ1h6U25QWGJ5QVBiSVh2K0lEcEUxNlRoYUhJUzlza3lobG1NRTVGM2NmcUFLaHEyQzBFNVBIMWdZYVhhTFBEa1pHMEhESk9uS1dIcDUxSTB6NVNPdXg4ZTFXQXVaemRIUXJUa3A4VG1qWG9JK2xhMHdHWnN6dWJxYk8zaWZRNkEvVzd2VlNZc1YzbVIwSkt3a0tjNFdIaUJrbVI4STNDQ2dJODdvT0w0cXpUNVArUlVKQmVqRU9nQVBLOGhZUHphdE0rZUlUcDJJTzl5VFFtZXJvbVBSeHgxcXhBY3NpbGUvdWJTZUViY1dRR1lFQ2doY0xZMkh5S2pvZ2pIMjVoTXBqcFV2MU91Z2xpNGVoMmVSdzBPMzJiSmpreXVDZ056ZzB2emxZTVNpU3MwdW9vNE1HN2hNT2pDRWFYMXlGRTBuU3ZqQnp1VG5FcEs4Nlo4SW9xRkFJdWJ3OGtnOUFyRWFSRVdTWkkrakg0WGJwNmc5RTlFbkpUM29hUnpETitNVUpCUURIbjU2YThvVW1FQnVzT3hCcy9ONSt0SkViUGtBRkRqOFVHdk9zL0lXdmNTZ2xHQmh2UzcvRlRZZnBXR1lkRFk4ZlBBeFdTQTM1c1RDNHA0K0xtNEFhcUlvUGVRdGZ1Zks2SmgwWmh4bGJzVVhPU21YTmlmRDVaVEFreURvZmJiY2NseG5BOFdOQXF4Q2JSTnlraFh4UXBhRHc2N2ZYVVlic2lHMEtodHYyb2VJdmg4cmhRTVlPY0VBcVhHL2VJK3puZ09jNXl4cjhxODJJQU0xYy9GTEZPcGxxdTVlRlFYck1aekdjVkNqWWJMV0c1STRCVDFldVJybGJ4dE5PdE1pdERERWhMWElJeW5BQXZ1T0VXRTNYM05kQWZ0OTRWZ2FHNDJYSVF0MFpYNlBlQ0UvcVFGZTlySzZIeDdZVTUwS3ZIN2ZXNGZTK3E3S0tCSnhzZ2dCWDVwU0FHaDFqSXJWaDV6UTZ3M1JmYWFoQlhtL2FDYkNaVGpDVUZVVHlXWnFXOXA2Mk1qSlBYVnFPclBnTU80TnY3NEdrZitvd2Z0TlZCRFFuakZKcUhTdzE3cFh2aFdXNUtacWUvUTQ5Ti9VU1RDQVZXb1FYRklIQkhYWGUzRlByVURzdUdEbXRGL2hIS1RIcGVreGhpQU9QSStTSnE2UzZIRjRJOVlXemtCSlRvNDZpVU16V3A4UGlyL1JpZHVMeEtZc1Nrc1Y4dkxsT1F2aEdYMllsUjBPQmhCakMrdS9nRWN2WTBBcEs3WWs0MU54alBTUW5XRkhURjY2VXJqZ2V2QjhDdTVhK2wydllTUlB0dVZEbzczaGhkTVNIblVYN3RUanNWWkd4QWwvV3B0aU9JRVExZ25MMjltWDYvdFIxdG1sa1lqOFc0WCtDU2pXY1VER1kxTnBTL0M3aFNLcWlNTE0vbDJRbVNXWjczRGR6K2dpbzhCQ0VOWVBRNDZxbmt6d1hVYnF2Qmt4alVRc1dmWkZnYnVvM3JBZit3TjdqT085MCt5bng0UGkzTCswbllMMVNjaERVZ0FQNGdQVi83SWQxcSsxSFNobXVHa0lxV1JQZ3l4TUZxUDhIZmpUbmpYd1k1YlFmYkpjdDZPSXpLZ01Ib3RGL0hlMWVnc2F4SFNxRzZ3ZmRtUTV4OE55VEZGcUJjcDJpU293SFIzeWs1KzM2aEY3dlhBQUFBQUVsRlRrU3VRbUNDIn0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMTAtMTIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDczLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ill1YmlLZXkgNSBTZXJpZXMiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlUyRjEwMDAyMDI0MTAxMjAwNyIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTA2LTA0IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3MywiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZdWJpS2V5IDUgU2VyaWVzIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVMkYxMDAwMjAyNDA2MDQwMDQiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0wNi0wNCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzN9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjQtMTEtMTIifSx7ImFhZ3VpZCI6IjIzMTk1YTUyLTYyZDktNDBmYS04ZWU1LTIzYjE3M2Y0ZmI1MiIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiMjMxOTVhNTItNjJkOS00MGZhLThlZTUtMjNiMTczZjRmYjUyIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ikh5cGVyIEZJRE8gUHJvIE5GQyJ9LCJkZXNjcmlwdGlvbiI6Ikh5cGVyIEZJRE8gUHJvIE5GQyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX0seyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNSRENDQWFXZ0F3SUJBZ0lRY3RFT1QyV1hlQ2tEZHovc1k3VXBWakFLQmdncWhrak9QUVFEQkRBOU1Rc3dDUVlEVlFRR0V3SkRRVEVTTUJBR0ExVUVDZ3dKU0ZsUVJWSlRSVU5WTVJvd0dBWURWUVFEREJGSWVYQmxjbk5sWTNVZ1VtOXZkQ0JEUVRBZ0Z3MHlOVEF4TURFd01EQXdNREJhR0E4eU1USTBNVEl6TVRJek5UazFPVm93UFRFTE1Ba0dBMVVFQmhNQ1EwRXhFakFRQmdOVkJBb01DVWhaVUVWU1UwVkRWVEVhTUJnR0ExVUVBd3dSU0hsd1pYSnpaV04xSUZKdmIzUWdRMEV3Z1pzd0VBWUhLb1pJemowQ0FRWUZLNEVFQUNNRGdZWUFCQUZGclBiOEtETEF3NEhzWUxVNWN3ZXZvUFMwSjZRYW84SGJ4Mm8xMStyWXZzeEF3clYzUC9PMk10a3VBNGJEa21ZU0EwWUw1QStKMllvNHYvZDEvUVAyVVFGMWRxUEZrbVUyN1ZaaEM0UFhDZGNYK0ZNZHV1Yi80L0xFd1ZhT013UFRVQWc5OFNSd2NCalN6dU1XQmx4ZTJHMFdRRm5kTjJ0bjJZMnNadWJYN3lRSUg2TkNNRUF3SFFZRFZSME9CQllFRk9KaGFmT1ZacTY5dHpCTmE1MlRUNkJjc04xYU1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0RnWURWUjBQQVFIL0JBUURBZ0VHTUFvR0NDcUdTTTQ5QkFNRUE0R01BRENCaUFKQ0FjcTRXdlZxT2xNcGJVNGU3NlN5ZWNaVXJLeU9TR29UcXRISmxyR1c1NUFsSHpYMFlWaG1WTnRZakNxKy9JVGJkaktmYi80UksrMUtucW5sU0t2WmFyN3ZBa0lCUWp6Y2FWaW9BMG8wVm95b3lhTmtCaDA4U0oydi9waGhadTE5NlVoUmZxSzZQcDkvMVk0dURTYVRnaE9RdjBIRGsxa3VKT1Jzd0NlbG1NZklRVGMxRVFFPSIsIk1JSUNRRENDQWFHZ0F3SUJBZ0lRQWNiNVpjQXlPSmwxeC84OWdZa21lekFLQmdncWhrak9QUVFEQXpBOU1Rc3dDUVlEVlFRR0V3SkRRVEVTTUJBR0ExVUVDZ3dKU0ZsUVJWSlRSVU5WTVJvd0dBWURWUVFEREJGSWVYQmxjbk5sWTNVZ1VtOXZkQ0JEUVRBZ0Z3MHlOVEF4TURFd01EQXdNREJhR0E4eU1UQXdNVEl6TVRJek5UazFPVm93T3pFTE1Ba0dBMVVFQmhNQ1EwRXhFakFRQmdOVkJBb01DVWhaVUVWU1UwVkRWVEVZTUJZR0ExVUVBd3dQU0hsd1pYSnpaV04xSUVOQklEQXlNSFl3RUFZSEtvWkl6ajBDQVFZRks0RUVBQ0lEWWdBRXpyVm1lMlcxcDFhcTRvL0VMYkYycytKYVQ2dFEyWm9NRzBQY0g3OXdkSndPclFlQTJFUENld3UrZW1Tc2dmYlVZVUlyTDBXaEdDUDdSemZzVmhmQlFsZDdMWmVVaFRQaU8xMnp1UDhrOVFxdkxjY25ianltMXp6UjNJbnZYRU1ZbzJZd1pEQWRCZ05WSFE0RUZnUVVsaVYwWnFpM2Fqa3hERGU4cHpzN09ETERXakl3SHdZRFZSMGpCQmd3Rm9BVTRtRnA4NVZtcnIyM01FMXJuWk5Qb0Z5dzNWb3dFZ1lEVlIwVEFRSC9CQWd3QmdFQi93SUJBREFPQmdOVkhROEJBZjhFQkFNQ0FRWXdDZ1lJS29aSXpqMEVBd01EZ1l3QU1JR0lBa0lBMEFRSkh1L0h4SjR3VkRCN3Z1MXpzdUdkT0VZaUM3dEo1MnN6eW0xR3hYUm5PK0RZdHlhOXlnd3JFWis4TG8wQ1ltOHp3QVYrQk0ybmhnWG92MU9JYm1ZQ1FnRXA3NkNGdzQ4dmFkbXpjVm5wNG0xZmJMQXBIVHV1Ty96RE1QVEtXYXowZ3VkcmFGMGVhZWRGdkx4N0NwWCtIL2dWSkFKV2pVRlVOVU1ncWtkVWwwTW9rQT09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBRERjQUFBSG9DQVlBQUFHUTJkVlpBQUFBQ1hCSVdYTUFBQzRqQUFBdUl3RjRwVDkyQUFBZ0FFbEVRVlI0bk96ZDMzWFV2TmJBWWZrczdrTXFBQ3B3VWdHaEF1RGFGeUVWQUJXUVZFQ29JTW1GcjRFS0lCV0FLd0FxQ0tuQVo0bDNEemdUejR6L1NQS1c5SHZXNGp2ZkM4bU14dmJZa3JhMGQ5RzJyZkdscUp1anRpcS9lbnNEQUlBWC8vUDRZSEQrMUxHdjZlTjFBUUIzZVhrNCtIb3crSHg5QU1BL3poOE92aDhNM2I4cjZ1YkE5WHNCQUl4NTRQSVloSG93ZEh3cjZxWnBxNUtIQkFBTVVOVE5HMlBNKzg1UFB1dUxEVHNMU0crNGlmZSs2WWpYdEwvN2RNalB0bFZaVEgwZkFFaFpVVGZueHBqWFkrNmpUaDRPUmQzOE5zYnM5ZnpUNUlkRFVUY1BqVEUzWTM2SEJ3UUEzTlhwdUYrMVZmbHEwK0hwL054dFc1VVBaMDhyeWJ4LzM0TmhybEVQQm1sTHl3TUNBUDRqbmV4QkhlZlZ6NndlRWk1aUR0OWNuNGM1c1FzZUVBRHcxNTFPOXFhcCt2VjdwcjJQemxxdHRFQUFPdGhyQUVBS2huU1d1L2ZNMWM5UGZqaG9mVEQ0ZUMwQVNJMTlDR3g3Y0V4Nk9HaC9NUGg4VFFESXdlaUhRMnczY1I0UUFIRGZyblJFb3dMU3NmYnVmUVdwaDdSOTZ2dnVldTA3NjVFSEhzTzV4MkRLKzNnNHZ5ZHRWVjRPL2VGUW5ZTytZK3ZqdlYxZHh6UGFkdDFXNVpISDF4OWx5dkdZMDdadDd6Zm1PenRVVVRjdmpERWZYYi91bXQ0dEI0TWZEa1hkbkk1OXgxMTdISXE2R2Z3bG44dnV4YkJyZDBPOVgwajI0aGh5d2M5NVNDcDVNRmdYUmQxY3JMOVhMb2F1V2U4elpsUHBGay83Z3BmYXVib1dWNi9UczdwbjV3TnpvamUrRG0zbnZ2SEZmb1QxZng4enJmUnU3QnNQK0xIak1hOXBqRG1jY1RIdUZYVXo2c3NFM1dSWW5HdEsrT014Tnp6NTJia1BodWdVZGZPVHFlWGQxaEtiMnRIS3NJZkQySU03ZHVuVVFIYlgzdmVocjcvQnhjVGZVMi9vTVpueVJRazFiVFhSMDlYRm5LT2hJOGFNajgwakJVMVoxTnBJNzZpN1NtbjEvNjk5ZC85TVkrMThPQ2g1TUpqMUtTSGYweU1ZN2RlQ2gyenJuR3pxdGwzVFhPOTVXOS8xdkV0MzJtenJ3MEhSZzZIM2RYbEEzT1ZqOURCaTFQQjQ2R3Y2d0UwUVhWd1AvM1FmRUp1bTFvdTYrYjRlVDlrWWtKNXdjSi90K2dHWEQ0YnV2MCtkS2trMG9QbHJnYUgwazhEdmh3RnluVzViNVJQQ1A1Mzc1TjhGSFQxK2RUdDV2UStIQ1VHK1pzREtKT2NQaHU3UFRYeEFmR3FyTXFrdmtEMjVybFl1alJnMS9CelR4aldiT2hVdmhxUVlUa0RmNTM4NGRxcHN3L2tjOHhyWHhwaFJLeElWMTRjZm5iVFRHSE5takVsNmNjUFl6dkNta2NPb1ZRMjdpdTM0ZkRCMGYzN0MrendmK2ZPeHNEMzVIeUhhT25mMHRlVUc4M1cxakUrR3d0NFdFeXc1Z3R6eStYMHZDVjRadlNUV2xhVkg3aVRvM081ZXpNRjFuQ0hFZzJITzc2VTROem0wSng5TElIUG9wcmNwZTNGaTRQTW10dFNEWVdrOEdIYTc4M0R3OEdBWXZjbk5RVTkweWdQaWZNNTdhaFRpNGcvNUJSdjRYcVAyNGlBOXFYWVFsakE1SzZ1blRXNzd1MzdBVThxS0hPYTJlL1VkVDFaNklHSTdPd2lNR29iNSszQVllVU80OWRBV08vZjVlOXNQak5uaFBQWUNrRktuU2ZFOEhjRVhMQUYwQkxESnBKR0RqeHhGQStjK2ZlNXc5bEhxTkFwclcrZUgzQ3g4ZEE3ZzNxQ05pYkwrZmM2S015VG9mMlprNzhGSGp6SDA1cm1jZURwZld0ZVJMN2xMVzUyUkd4TWZyVkk0czA4QXhsRU42Vmw4UFJnNlBneU5LZGo5SFVQU0VZK2haTmgrdTJ0a05LS2RoMjZhTk03QTltMWRVcjJKcnhUT0Vic3A2c2I3NTV2NzNhRHo1OWZZYWFVVGw2MEo4R0N3N3pFbTVXMlNXU3RkOXZSWHlROURHaG9QMmhXeml0V1NIWXpPYUlMWVJHWkdqUnpHRkZrWjhGcmVId3k0dy9iNHY4MDVKRXNWVEVxWnc4Ly91ZTh2cDJZUDZMT3BsZ0hTOUQrUFJTbzJVdnhnT0Z2Z1BZTllvc2VQb09kM1l4b1kxemR6R1Vra09VckRQM1phS2VqRElmU0RZY3hGM0ZabDBodG81dHdrdFBjVzZjMXU1K0g0N09VKzZrdmQvOGJjRUVNRWtEeGNjTmt1VVVVZXhpU281Q0hxaDhja2hJdkZRU2Z2a0o1Z1p6RGI5VkNWbnMxOVUyNE9qQnIwbW5vK1hUMG8rSTZsYS9SUzFvbDFFRzUzQmJPTHVqbHcyY3VYMXh0alorcU9pYWJHTWNnVHRJT3JoMEtrRHhjbjJWUTdoV0FPNWk1WW1QcmUwT21CbWJDaVlld0RZdUJTU3RjWDVxalg4N1VNY21vY282Z2JidytITWVkYjJSZjR3OGlseWNueGRUNWt3Y0xxUWZHYjZWajNiRkxBbU9LYWt6ZkIyVlZPUStiWmxvZ3pUSGc5WDZPRzJMMzAzZjdjZTQvZHorK3FTSk9ETmowMC95cXE3U3ljazNCVlJkZmVqUzJvdEtTL01ZY0pKL2ZMcmgrSTVNR1E3T2FwYllhY203WXFQeTNheU15TXFBRWU1THpJOTRJU3NKbWFGWkNlZTJOM25TK0ovRXZJUkxBS2hqTkx3QzdoN2E3M0pJZyt6SjJIUThoS2Fob2VERXduUVpzUm93ZHVjRDNhcWxSZHVHdHNiTmR2YTdhN04zSUk4WUJROG1ESWNqb0pVVkRUYVNucVp1UE82NWd0bks5cVo3WUNEUXRHTmdXa2JVckdjc3dMRFExS0tYb3dNSjJFUHh6Y0tNNWNya0t4blpaVlZ0UnRmQWFDSmEzT3pyaWl1Sjc0SHJOdjBITStmL2Y5WFJ6SEVhc0F5ODdQUFZzdDdKRVNwMnFXc1BjK0hOcXFQSmh5NG5aZHJEd1lrQ2pucTFDRzNtaTJmZWRDOVk1ZHA3bWZhMHF5UWRmMTgwZjRNcVFqc0lTTkFlbXBIMzdUUWJhMUVzYSsxbzRIdzZUYy9Ud1lFSkhlVEt1QUNYQXYyN3BheWRVRFF0WkxqODBSc3F1b3pPaE5jendZRUpOdG1WYTdGZzVjcXN4a3ZOUjNQYVY3ek02bHJITWVFRVhkckxiMzc5eElzK1oyVzRycGlWK0dSU3FZQVhPTVdMMjB5SkxUMURNWlR4SGlBUkhpUFFidGM1alJrSXVKY1Fibk5XeXBaNERFUFFyOThTSkp5SGk3NEh0SDk5cGRnemZCaFdxUXA0TDRUQ2NoV3RyMlBzU1UrdHQyTkZPYVlncjVXY2JtVnBwZGFuSWJIZ3pKdVU2MUxuZG9VMWJnck9WdEdyTTB0YytUQ0hkTC8rVXcrK3l6TWJVYnh1Yk8ydlVhSVJWdE82NjlFa2U0Y04zR01RY2cwb3lpQUJDTjBibVZwQzdEbGNzUHlJZ0JBSFNabEhoUGlvdzRlVUR3WUFBQWZTWm5aWlVIeE03U256dGV3OGROZkdkV1JnREFkck5TZHNzVTA5VDlBMTZTaTJuUHlnZ0FNWmoxY0RDeWYyRENDT0RLUjBaVXBwTUF3STNaRDRlVmtUV2xaeGRHbi9QK0FJRHRuRDBjelBEU2t3U2dBVUE1cHc4SHMrTkd6WU1CQU9MZy9PRmdOdHl3ZVRBQVFEeThQQnpNMm8yYkJ3TUF4R1YwK293bDJkcXJ0a29kMXhnQStPVnQ1T0E2UTZUa2RDb1hMbXdDQUZudzhuRHdkQVAvbSt5UEJ3UUErT1g4NGVEanh0MzNtandnQU1DZnNmVWN0Z3IxWU9qK0c0RnBBQmhPU3NxdUtnZGV0MVY1MVBmTHpnTFNmVGZ4dVRkdTZqWUF3SHhUN3FWT0hnNmIzbmpPVFh0TzFTc0F3TjE3NmE1NzVQclB6WTQ1aEo1S0N0a09BSWpaMEFkRDkyZFd2ek1yNXFEbHdkRDlYVVlRQVBEUHJqclc2eHVXVno4emVlVGc2Y0V3TzQwM0l3Z0FHSDR2M0xBYTlOT2toNE9MbTNqUGE5cUkrWjZqMStJQkFRREd2T3c3Qm5hRXNHT1c1Zm5vaDBOUk53ZXVidUpydnJoOE1SNFFBSExYVnVXbkNZZmcya3ljVnZybStuajd1cEh6Z0FDQSsreTljY3Y5OGFzWkc1RFdGb0FlK3ZxK2d0UzcyajcxZlljY2sxMUJKcGZ0bWZvZVBzN3RtTSt3dHRuSG0wMXQ4dkQ1bjdWVitYWHVpeFIxODlBWWN6UHgxL2VIbFBnTjBUR2JjajNiNUowMlI5dkV0L3pRVnVXYkRhODc2anM3bEsvWHRkZlNhcmFtNS9mL2ZNYkJJNGNZSHd5aDN3ZityWG84Y3VQZnhmdURZUk5QMTl5WEhUMituVzJTMzUzNllMQnU1clRCSllsVDdsVFV6V21uelZNZkROWnJMWjk5cUUzeDRXNG5vK2Z6L0FrYkRIbzRURGtZUXpkY1RIak4yN0cvTi9YOVlqRzA1ekRucGpMazV3SXZJMzZVODBOZmJsS0RhckhiRzBTdXgwbys5enNGVFZuS3h2andycXFkT3g4T3loNE05bi90a1BoazdPOVBmVi9vbHZrNXZaQXBvbzJrNStoakFZbDZ1WC9mTjFYa1hOL1hzRFlWL0xkZXp0YUhRMUUzbytjM2ZUNFlPdjk5NlhNK1AwYStSZzh4NUxmSy9DYXdhNHFJQjBQbVJoNEx1K0RvbHhrd3JmUjB6R0VkOEdBWXZUOWkxOUJuN090Sk8zcURTcGpzakVPM25FM2ZxNHlua2daTnQrV2dteEpqVjRiclRxcU54MmJiYWlYWGllK203SThZbWc5a3dwZmd2VEhtZk9UdnFEZjBXQXhkd1RWaTFIQzY5TEd4MTFkYmxkK1hic2RDc2h3ZGJIRXgrVGNUTlBRQnNYNVA2SDA0ZU1xSU9uWi94TnN4N3o5bHVpVFJQRXhuSVFOd0RvN2hzdzEvUDNaVHBMMitZanVmbXo2N0hkaytWOUlXdFZ3czZ4VjIwOWZnRG83RDl3MXE3SGYxM3NQQng0TmhZcHhoVk0rZUI4Ui9iQysrcUp1ZEQ0ZGRuejNVbE1TV0w1clgvUktkOTEvcy9HLzU3TjFsaG5QVzVROXB3eUtmZjZtOVJ5SGFrSW83TVlleEFXaVBENFpKSjQyVC9aOVF4eUcxOTlHb3JjcURJYzBxNnVaeGRnZG5CdTRWdTYwSHBNY0VvRC92K29HUUQ0YU93ZE5SSnZOVkRacytPeXM5MU9sTm5yYm1NdHVqTXhJUGhtSCtQaHdtVENlOWNOMFlGeWR0N0hTVThaUmxkbW0rdndCOHdjSVptRHh0MU1wQ1lKZEpLYnQ5M0JnY3I1NFoyNzVzVjN1c0gxTkdEUURNNnVHd2RCREhSK3hpYkR0VFhCdnRxM2ZQcUNFZHNlVUtjcUNKL2hNRU1ydUc5RnkrZ3RyaWVzVFBacnMyZW5WOEJ4N25LLzh0UXRmQUJIT3pOaUoyRWhvbS9hQVlHdUNITVErS3Voa2N5SExkWS9UOFlMQ3ZmN1RreGE3aGl6WnhrK0MyMTB0cWhEWDMyQVFhUmUzYzgrRnlJMkxubUZ6NU90OCtqanNydHR5eUk0ZmpoZDc3Y05jUHBCZ29Yc2pPM3I3SHZQR3pzYUpzR2dmbjZ6aXkwUVNqQW9kR0ZmdHhxTm1WNnFDb214ZU9Bc1ZCZHd4clpIdC9SZDBzMVFuWWlodS9kN2N1dmtjaFJoTU84SEJ3YUpHWXc4QjV2NCtPM2k3ckI4UEszRjZrOWlBMFFmSitrdUxlcFdOV3RPVWgrTVBCZDV3QnlNMnU3NVQ4KzVDTmRJUHhIVTFmMElkRDZBY0RGL0JkcWFZbFlkU3dtOTFJSjhkcFo2eHZLSVhmcnlnVDRtazE2dUhnT3ppMjVNWEdEU1pPdVorM3NaL2Z4dm82MWI4bWxkeFZMTmVVN1Y0OEdMdlUwUzRYYTZ0eVNISDN2NVo0TUNqcDFVeGRlKzR0VGpMMmZDdSsrZjVhRlNXWkk5YUhpNk5VTTMvakVYUHFpMDlwaTZmTnRMWlc5dGFmc1dWVjdjKzVmdThVVFZtdDlHTk0zdnhJSGd4ZWN0bFBYWHMrSk9WMklHTTJFWHFYK3lqQkJOcjFudmgwckIxZHNCOWlnRDhQaHdtamgwRzloVmhHRExFVzc1aHE2UG0ybXdoRHRNWDNlMmkxZGtNK21sRGd5SXR1NWJBRUQvc2pCVzF3YVZRVzZqRW1CNlJkWERnZUhneWoxMS9URzRVR1F6c29JVy9ZZkRlV05iQUQ1NjNjOGQrSHc1UUxZYzZGS2hXdVJoblFSbXJISWxwRHY0T3N3bE5wWjN3eHR2TzJQbkw0TVBZRnBueGdXd3grUXVuRGZkZnRvR2NFaFZKYlFhU09qNXUweTl4V1d0eDVPTFJWK1daS3V5WWM3RzhqZjc3WnRzS0FCd05TTVhSSE02T0hlWlk2ZmtQZlY4UDV2YmRhYVdvV3o2RkI2b2szOG8zcE5uZ3dZQTRYWDBJZjJZcUh0TXZXZlBlMWFFQ1NYbm9yZ3VYcnVJKzVmM1YrN3EzUHVmc3Q3M3ZkUFgvYUh2aTlTMWw5UFNCYzM4Z25Ic3lUQ2I4RGFMU3hOR2dPSXd1N3dzdlJTc1AzUmQyOEgvTUxHKzVMdjBhdWhucTZjTmJkcmJhdFZ0bzZ4NytKeTZMMUhoNE05alVweEE3MUlncE96eW95NU1raUhVQVhtekkxMmZod21MT0wwRVZkWWs4UEJxYVRFSTBZcmxlTmdkZ2NPb0Focm8ydCt4em1OR0JrNlVsbjd4dnlOUUVObGhvOWFQNU9MZFcybE80ek96ZkJ1WGhBakxIci9RaEFJeWRhcDVjaUdkVWsrWUFJOWJrRzdaQU8xUmhHREVDdktiVVlmTTI3MzhiMG5aSzJCczhSSnUvN3hQVnJoanoyZ3hQdnVTNVUzL2Y2SGw1MlVsQWQwTVRXWXRpVmJkU3NyUmFVZWZmTHpyOTkzYmE2YVJlbEQ0UkJXUlpjTGhjZGN4d2tlL1hjUEZWblM4VjFpcllkMTJaUEQ0aVRvVUdrRWU5LzY2RkVJZ0JrWVhUaVBVOVRQODVYRi9CZ0FJRHBKbVZsZGZtQUlNNEFBUHBNVHRudHFCSVZEd1lBVUdqeXc4SE12Qkh6WUFBQXZXWTlITXpFR3pJUEJnRFFiZmJEd1l4ZjNzV0RBUUNVYy9Kd01BTnYwT3hsQUlBNE9IczRtQjAzZjA4UGhwTTVDUUlCQVAyY1Boek12NGZBMWRwZkgzbzQvb00zemdFQXhobTlRM29NMmMzY2JLdmtOdkUxRDl1cUhMUjFIZ0F3NFY3cjgrSGdpendnbmptcUF1VkZVVGYyNFZVYUF1WUFBQUJJd09Da3JCckVVQmEzcUJ1YjB1bG03ZS8rdEpzQkJBQUFBR0lWeGNBaGhnR0RHZERPenIvdnN3QVhBQUFBTVZFOWNFaGx3TkRqUnNwNlhiVlYrU3BFR3dFQUFJQTVWTzV4R05nUlgzeVBRMUUzTm1xdzUrSzFXTVlFQUFDQU9ZcTZlV09NZVQvakpiYXVpbEUxY0JnNWM3L1l3S0dvR3hzbHVQRHgyZ3dnQUFBQU1OU1cvdk9UdGlwLzducVpMWU9OZTludlZBd2NpcnF4ZVZXUFIvN2FJZ09IVU11bkdFQUFBQUJnay9VK3FhdStZMCtpbjVkdFZYNHlHZ1lPTXpyaVFRY09TKzIzWUFBQkFBQ0FybTYvMUZkZnNhZ2JPMWg0THYvNUovcXcyT2JvaERjK2UzbC9CaEFBQUFDUVdtRi9iT29mRm5Wako5ZWZEajFZZmEvVFZ1V0x6cXFnUDdYSm5KZU8zc1YyaENPcHgvQkpVenRqT1c0QUFBRHdxcHo0NHMva3o5djFmOWpVeCt4bS83US9FeXppTUhFZlEzQjlCZHlVdFk4SUJBQUFRT2JHOWdVN1MvenQvNTVQbVpBT01uQmdXWko3RENBQUFBQXcxSXgrN3BreDVwM3hQWEJnd09BZkF3aGd1S0p1am93eFIvSUw5bjhmemdqNXJsemJtWnRWeGdubzFIUHVIeHRqSGprNDk2ZEwxeFNhbzZnYm0ycnhoUnlUd2V1aHhXZTU5cVA5L0xrcTZ1WjA0amszY3QzYmMvNlZjNStPb2YxSUwxbVZYQlpHMjJKMlZxVkE3UXdxbGdHRWk4RmE2TS9xczgwK0JxOUxYQXNlUHNkSlc1V1hQZS96M1VHSFA3U3p0aXBQWGIxbmFudWVCaiswNHZ6Y3ZkZXhiMFhkMkFIQngrQ2ZkcnRmYlZVK252S0xpVjN6WGpKRGFsMXVQZVQ3TFlQN0x5SGV5NFd4bTQ5ZHRyZnpYZGg0SGZXMXo3NVgzL2RvVnh1NnYrTTA0aERxZ3AxN1VjZ015emQzTGRwb1AvUVhXRTd1dllJZDBFMit6RDhkeklCMnI0WGZiVlUrRFBYQlBUelV0MVd2akczUVlMMHI2dVpkNTcrM1Z1ZEVVaTZLdXZsYk5OUmo2a1RiSWYraC9NQTlzdmNLb3VUdVJKSndoblB1aHgxb2pkM25VS3dYZkJ0eGZuNDV5Nm9rRjY3WFRyTDlVQTRHRFcyQVFjT1Z0UFYzcDgxWG50K3pxNVFzVE1FNmpaaFBadUh1WlRxWVlVOEdJOTY1Zm5DdHZqK0pYMVkzOGozOVB1Qm5rWkJWbHJ5aWJsNjUrRlNkckh2YUJ3MXdwSE1Oa1cweFE5Mis4SlRuZkZ1VjUrdjlhYm1lN2kyNVhhc1g4WGgyeENIRVJldGlsTHAweFdkSlovVXFjQmpSZGt6WS94QVIrMldXREdTdXJoRTd1M2ZaVGFmbW1vOUJnNisyS2xVeUc1ZXRQNUdJcWVkZWV4WkF1QmZwTWszNGNXTHZJWnVpZUcxVkh1MTYxekZMbEZZL08zbmdFR0s1VHdvRGhwNmYrNzBLSzRWcUd4dW80N0s2Umh4ZUg4ZDJSc0xsK3ZvVkJnM3VNSGpJMTVSekw5R0tpd0UvaWtRUVhVQ1g3SnU2WEYwWHJ2cDY2OHVZMWw5ejBzQWh3TVU3ZSsxdnFMb1JjMDdRNm5kRERpRG9tTVJqMHlhbWlkN0o0TUhaQmsxSkx1QU0xeWJmMFp4Tk9QY01HakxDb0FHYnJQY2xIVjRybjIzbDZQVy9IRFZ3Q0hEaFhybFlVaEhvQzNiWVZxV1R0Y2toQnhCRUgrTGllUEJ3SVlPSDJaazhaRTJsczR4a1hJLy9NSGpJbDEyR01pU3hCWjNJdkhDK01VVGZjMlBFSlBwYnUxUjZ5UHNNR2ppRVdFY1owYklrYnhtTFFnOGc2SnpFd2ZIZzRVdFJOMC9hcXB5OGFWcFN2RG5ML3JUa2RSalRja2hmY3IwUE9Bam4rM2d1THJGMmZYSjYxQmpGZHIxN1RIS1MxWG5QMVdwL3JjdVB2M1BnNFB1aG1PSStCbGZ2NC90enlldmZoa3paaVdrY0R4NStGSFV6YVRtZ3pGN016bHN0a3JqMk90OVhKem05NWJVZXp4bmN3YjhsOXF1NXh1UlJGSndPVGpubm1HdHJPbGJQTjhOOUJ6TSt2ME5sZFZyaXl5YnZ1ZS81YmZZSWc4YkI4VFU0K21Ia2VOL1FoOVFHckpMQjRwZWpseU5GYTBSY2ZqZWxvaS9nMmlHREJyalFPM0N3ZVZ4OWRpWmQ1R2lYOW5tdCtyelVnR0d0RGIrbERiYyszNGZCUXh4Y1hndGp6cmwwWmx3Tkd1eFNxVGVPWGtzVmg2SC9wQ3JhNThEaHMrTGRnSjlCQmh3K2wzKzUycE1KM0JzNHlJWDYzTWVSMGRBUkgraWxveVZVMzExOThlM3NyTzlqeCtBaERqSlRmK2Fpc1VQT3VhUjlkTktaa1hzQVMzQUFCWXE2dVpjeEJlbGhMd05jdWpOdzhCMWxpT0RNM1VySDVsN2x2REhzWmlZNWxzNDN1c2x4L09ENmRWY1lQTVJCYWpJOGNkSFliZWU4cUpzalYya2ZDWk1ENm55VWFyR3pNNjBCeU1QZnpkRjlaYVpkaWFIRDRLcU5nZlpjMkdVZWIzeTlGeG1YNGlBejkwNDJUZmVkYzd0QjEyWmhjbkV3dUo2QXdhNEgvT0NoNHdLc1QzdnVJNFBUTTBJMUo5RnBZS1diVmNuYjhpVE5SenVtQWNNNng1bDJva04wNUQrdXJvUHU0RUZTQVA1dzFUNFhyeE1EcVcvaFFyQ0h2VVNWZ25OUlQwUVRoL2VqbmFrVDdYcjFvbTU4Zi9yM1JkMjhYLy9MMkwvUFMxM3Z4cGpmUyt3emtPZzA0TXlmZ1lPdkRwam1HMHpNQTRZdVg0TUhvZzV4OFRCNGNKSUNNTU5CZzVQNkZvRWY5azZpU21QWmptOHExNGZMZS9EUVBVQkxUUnh0ZUU5bkJWRURXT1I2TnlPditRVUhPTUJXb3lwSGo2SDRnWERtNHFIc09EWGxYTmNPYytzalVpNEhEeTZPUUE2REJwZURCY1JGUThSVFVkVDVXMDhFNUtTdHlzdGxtcE1FQmc1UXlkdkFRU05IbVpLOFY5R2V3TWVnWWNnNld5aWpwU01SeTZCQjQzSTNJbjFocEhMdUZTOVp2U2pxcHB0WVlWTFJTUUM2L0MrSGNKaXJOTEJ5YzlZMmFQQkNpbGtoem5PM1pNZnpNeDNmV1Z3VmtFTjhKbWZMaXlUVitZMWtjR0p2R2hDeHJaV2o1OUNRM3MzbGdFSHJ6WTZiTVBvczFJbDQxbFlsZWVHbiswQys5V3c5YzFFVWNmWE1rKysvMnFpeFBGT3A1NEk3VWt1WWtLb0g5a1I1eXM1ZzA3dGR0bFc1TTBPRUIwNUNvdG83NVI3YmQrTHBkUkdRTEdFSXNoZUhLTU04SEw5OCtUcjNmVkhqb201c2V0WFhTZzcySTVKd2JQV1ZLdUxxWmJtM2RCVnhlT3ZwOVk4RGQ3NnZaYlpsMXFEQmRyWTBEeHFLdXZudHVWZ2ZHOW9TSVFQM1p6NC9EUS8reWM0aXFxWVB0NTR0Y2U1dFZLTWJsZEJ3L2RubjJaTHZIOWpnNVdqTXZrT3JQNXVqYlpHWHZuek5yb1NZVlVnbHZlb3V2dHNYVXljbWRGdGpYUlltRHlBdkd5anA5QTZuOVZoeER2MkxzWjVSd09qRVhvRDMrQ3UzNjcyb20xTnFPY0NsdjFtVmZHZG1rTmUrYmF2eW9jdlhaY0RnRGgySXRMbitqcWR3dlhETjUydlR1WGQ4cjNYK3pBdEY5bHpjMlhmaEs2dWdIYVM0Mk9PQlhuYTVVMVlEaDhpV3dFV1h3ZkxPNXVnQUIzclBaWTc0MURjK20vL2E5NGxCQTF4eGRaNjVYcEFxeDllMnMyZWVCbllac0tjbFRscjJYUUNERkhYalpLQWJZd2JMZTFtVjVHWnc1dk5OTlhUV1E3Vmg2czNWenV4SSs1NjdiOVVkWjNRQ0FlQWZ1U2QrZG5WSVVzMSt4N01qRGpsbXNITFZzZC9DMi9KKzdYclRzZHIxY0NGdUNFc01JT3pGRkdyQU1HUFFFS1JlaExTUnRZOEFzTWFtRm5iNUhKVG4zUUhIR1VNNXZQNXNCcXNvVWowNy9NeGU5KzM2ZXUwWWJLM2pFR28ySWRRQVF0N0Q5eWp4Wk02QUlkQUYyVEJUQkFDN09iNVhmc3U5MDRIRi9NanQycE0rMVhmWHIrbnc1Ynl1N3ZIbHdhN1hsUTJWWGpaRXJWdWRFTmVkMmxCZmxwa1JoaUFZTUFEQU9LNFRDNlJRdjZDb0c3czIrNHVDcHFSdTMyWC9xM01kZjFDOElmM0tZZjJoc3ZPWko5WDRrcVZlanh5MTU2OVlWM3pzSERnWTJSRGxLNTFqSDFjRENBWU0vekJnQU5CSHl5eGtEQ2xMaTdxeGxkRS91bmk5cVlPSG9tNXNiWllMRjIxUTVFbW9waWlhZFg4MnBGYUQ3WDk1S3RMN3VxaWJvSnZTaDE3dnR2NVFVVGMrQ3BmZWVEcVdVN3pVMHBDeHRpNVZXaGU2V016VXBUdStDNlN0VEQwZU5uUVc4T1oxeTZBQkFPWnJxL0tUaDMwUEwwYitXbXFEQm50Y3M5dThPMGFPei9EVVA3TzlseWhveGlTakJnNHJja0t2UWpWeTZBREN6c1RJejNrdEtPTmc0M1BwdmxYM1NUdWp6Q0VPQUZvNTd0Ujh6SG5mQXhOYnd6QjRTRWZzbjJ2U3dNRklLR21KeXIzeTUxNW5XRzY4dm1kaXJtWU1HSUpFUWN3Q2tTRUF5STNjWTI5ZGZld2NCdzg4cDhhUjQ2Vm1yVTBJaVYwakgxTDRQSVAyT0d5ek9naUJiM3FyZFdxZkE5UTUrR1BPeWJhRGhrQmw5VzIySk5MOUFVQUFOcUxyTW5sSUNwdW1oMkRBTU4zcUdaL1RRRE5ra2g1ZlVycm1adzhjVmhZYVFIZ2ZORGc2MmQ0SERkeUlBU0E4MThsRDVIWGV0bFY1bnRqcFBLTnVrRHVkUGxmVUhlcWhWdDh6RTllZ0tjWHZzYnVCdzBvS0kwTVRVVWVjQVFNQUxNOXh5dGIzUmQyODc3dS9kenFNb1NMWlU5bWFScGVLMjVlRWJvZmEvSGRkT012ODVaTEx2c3I2YXlrYVNGeTNWWG1rb0IxZUZXM3I3M2hIbWpidWllc01ENTR1YXMwNW1BZVJQT0NUREVsalI1czM0M1BvK2h4VHlTUk45TXNUeDU2TG1aLzdaNmdzUHRxdVQ2a2ViSi9MdGwxUEo3N010VEhtMDFJenFYT09xUlpMMzN1S3VyR1JueGNPRXJYWWErR3I5a2lTWERPbk02NTVJOFhhTHNrQTVubmc4UGRONnViU1lURVBYN3p0RDNBOWNDREtBQUFBZ05DQ0RCeFd0QTRnZkhmRVhRMGNHREFBQUFCZ0tVRUhEaXRhQmhDaE91SU9CZzZUeXFRREFBQUFyaXd5Y0ZoWmFnL0VFdlVuSnY3cXI3WXFIenR1RGdBQUFERGFvZ09IbFlCWm1GNHVVZVo3eXNDQlpVa0FBQURRUk1YQW9jdFRCcUpiVzZqSHcrc09NdVl6TVdBQUFBQ0FSczdyT016bHVwQWM5UmdBQUFDQStkUU5IRmJtRGlBaTZvZ2Z0bFg1WFVFN0FBQUFnSTNVRGh4V3hsYkpqR2pBUUZWTkFBQUFST04vc1RUVTdsR1FRY0hoaGgvNUVNbWd3UTRZQ2dZTkFBQUFpSW02emRGanJKWXhhUjh3MkhheWh3RUFBQUF4aTNyZ0FBQUFBQ0NNYUpZcXJkaWljWjVTdGpwbDJ4aERPd0VBQUlBaG9obzRGSFZ6dVVTbDZiRzZBd1laUUJ4b2J6TUFBQUN3VFRRRGg2SnViTXJTWXdWTjJXcERsT0diREhvQUFBQ0FLRVV4Y0pCVXJLV0NwbXkxWTJuU3NYd09BQUFBSURycUJ3NFNhZGhadjJGcFJkMzhITkNFUGZZOUFBQUFJRWFxQnc0eWFJZ2gwbkJ1akhrMDR1Y1pQQUFBQUNBcWFnY09zaWNnaGtHRDNmajhlc0x2TVhnQUFBQkFOQjVvYktoTnVSckRSbWp4YmVvdlVoZ09BQUFBUGhSMTg5Z1lZeWZpbjI1NCtiTzJLay9IdkxXNkFuQXlnNyt6TTY2aHcrMHFhc0RnQVFBQUFIUE43SnMyYlZWdUxTR2dhdUJRMU0xRFk4ek5rSjlkdXJQdGVxa1Jnd2NBQUFCTTRiaGZldHRXNWNPK2Y5QTJjQmpjbUNVNzJoNzNKK3kzVlVuS1ZnQUFBT3kwWmFYT1ZWdVZyd2EreHUrK0RLWjlmVzAxQTRleG5mR2xCZzRCTmpVZnRsWDUzZk43QUFBQUlHSkYzUndaWTc1MFA4R2MvbkhmSUdUOTlWUmtWWW9sdzFDZ2RuNlR6ZUVBQUFEQUp0MUJ3OVhjU1hVN2NiMytHdXQ5MzhVSERoRU5Ha0pHQVM0a0hTMEFBQUJ3eDFyL2VmQ3lwQ0Y2Qmc5Lys4Q0xEaHdpR2pTY0xsQlQ0cGpCQXdBQUFMWnhPV2hZV1JzOC9PMERMN2JIWWU2Z0lkUWVoNkhwWVQzYW1Sb0xBQUFBZWVqMm9UZjFoMGYwczYvYnFqemE4QnAyUUhJaC8zblNWdVhsSWhHSG9tNitMdkcrRXkwNWFMREt3TXVrQUJUSWFUNEFBQ0FBU1VSQlZBQUFrSWVubXdZWmRxRFErYzgvQTRqZ0F3ZVp3ZDlVd1U0VlJVdXBHRHdBQUFDZzYwbm9vN0ZFeEdIcEdmeEJGTzYvWVBBQUFBQ1FzZTcrMTdZcWY0NDRFczg2ZjVyMWY5eXlHdWhaOXo4ZWhEejBwRjJkN2MvZ2dUMFBBQUFBV1RxZThxSGJxdXdPREE1a01ycWIrS2QzTlpEOXZhTCtOODRJRm5GZzBPQU1rUWNBQUFETThXbnM3OW9zbzBFR0Rnd2FuQ3RKMVFvQUFJQ0oza3o0dFNQdlM1VW84T2FOcmZQZ0pYY3ZBQUFBMGpHZ1AvNWh5SWYxR25HSXBUTmUxTTJiQlFxOHVYQXNPWFlCQUFDQVNkcXFIQlNCOEJaeGtBNnQrczU0VVRlUGpUSHZGVFJscWd2Wk1NMitCMkNMb201V0JXNk81STl4a0JxNmtYV2luL2dPNnVYcDNGOGJZK3htdy9PMktuOUhmR3hleUpLRnNjZGo5Zm0vcm0yNmhITHlmWGcxY1pQdHJUSEczdXN1MTNMOEkyNkhRMXZ2clhLMDd5VktyaXBIUjdTdllaZjlXQjVlc2o5alVsYUFqdHUyS2g4NmJkZ1d2dHZzK0RvOFhLb1RXOVNOdlFiM1hMM2Vsb3FZYnlJWThIdXQrcDdRdld2VS9kelJkOUczalpWWWwySTNOUnBqM2dWKys3ZHRWWjY3ZUNIWDk1YWx1ZXJEYkxOVzlUY2tPN2c0R3ZzY2NuUlBlOWxXNWVoTnYxTzRhTytVNjJCSTFlajFueE5uZmZlQUlXM292TmFabDRnRG02RVhjV00vVWlSdGRmSFFELzBBaWFuTjN4YThGa0o5eGhpaWhPWFFHM3p1YktlMnJjclRnWWRCKzZEQnJGZGlYZXJjSzNqR3ZTL3FadjI3K21Sazd2bVZaQVlOUHZXazJGeUNQVmZmT2lrOFB3eGRCdVBBbXluWmdwWmlveitoSW5aeWp6MWR2eS9ZK2cwakpqbytPZC9qRU9oR2RhOXd4VmlKRFJyK1NQRXpZUnFablF2S3cvWDNiTURQUk1NZUg3NmplUXA5N3BWZmF6LzRIcmpYT2VjYWw0aS9WdENHbEZ6UC9DeS8xdjU3NnpMRm9tNytycFN3VVNTbkE0ZEFONFBidWVIL1VEZXRKV2FadUNISHljTzFFdjNzWEtycnBobEE1RXZPdmJkQlBkZFdmdXoxRk1NNTMxS1ZHQ1BOWFFiWlZ1WGpudk96N1JxNjZmNkhzNEZEd0VIRHJIWHRvUWNOREI0d3dwWExnMVhVelpUbEFGUGZ5K2sxbDhPeUhyNm4yZHJ6Y2U2NW52SWo1NXdsWEJtYityM3ZlOFlXZFROb1V0N0p3Q0ZRTWJMb0JnMmIvanNFSGlMeDhWQ1Q0MUVPeHkxbWZFL3o1ZkxjY3gzbGgzTU9ENzZ0djJSM21aSXg1ck54TVhDUWRLYStONnU1R0RRRXlUS3phWkRBNEFFRE9WM1hIeUk4VExSaEhyNm4rWEp4N3JsKzhzTTVoODBldFRvSW01WS8ybWRwOTgrdWY5L3c3TDNwL0x4TjNld2s0dkREOXhsME1HZ0lVbE5pVjRkbm9jRURlWllqNG1GZC85eGM5UWlBamtDKzVnenV1Vzd5d3ptSCthK3YwTTBjdGJjV0dYQmkwNEJrMXNBaHhBVTh0N010QnpORUh1UDlJVCswd09EaDJNY0ZCWDljWHlNK0I0OUVHNERaSmczdVpVSU1HV0hRZ0RYZGZ1ZU55NzZlck5MNXUzK20rMnllUEhDSVlkQWdiZ2I5MUR3blk0cXZMZEE1Q25FTW9GY01lZStOZ3hSelVhTlRrSytKNTM2SndsNVl5TkNOcThpSDlEdHZPeC80eGtYV3RwNjB2bmNteGljTkhHSVpOSVNxS1RHbDdMcDh2dHNCUCtvRW5aSzRlSWc2REMydU5lWTFYVWNiVkZYYUJRQkY3bTFjQldRcGY3Y3Z1VGNsTGJQZHI3emg5NTZzVDR5UHJod2RZcE54UklPR1dUVWw3QWtQV2VYUkhoT1dnbVRMbHBsM1BuaHdLS2xpYjFQWkZMcDlPYmFSdnFKdTNyUlZlVDdrZ3pJUmxCZGJYVGozWTRETnBDLzVlSDNQOGR6N3hLYis0cWlJZzRUS3ZIWnlJeG8wek42MExhOXg0S0lTOWxCRjNVUlRpajEzSHFJT3p0WkV1eTVpbFdxeHR3bElvWnV2OTdrZkFHejBoVU9EYmRxcS9DbDloak1IQjJwL1cvOWo3RklscjZHeXlBWU56anAxZ1FjUHp3TzlEOXh3dWU3ZjVacG9aMFdIaUlJQlFQS0NwTVRQWFZ1VnA1M1Vxa01qK2RkcmFWbTNUZ3dPWHFya3UwT2U2NkNoODVvSG9aWXRzV1FwSG5iZHYrTkNVUWR0VmM2NmdZZXNTTzNaMk9WUlIvTEhhNHBiRitjb052WmhGN2pKVTg3OWkxRExTaGRrWnl1OVJ2K0lMdjR4ZUg5andQdnRCMk9NbHhVSm5QTmx5SEYzM3RjYk5IQ0laTkN3YUlFM1I2L040QUY5bmprTVZYOXpjQ054dHB4bXlXdHd3c1BzM3M5THFsdlhXYXRjbktOQmNyMEhURHozZHdZMzBxRnp1clRNSmpIWU5ZaHl2ZDQ5dDJzZ3dzL3JhL25pL3Boc2tNREt6cVZLQVVhN2crb2ZiS09sd0p1ajl6Z0lsVzJwcUpzWElkNEg4N2llclptVDZ6bEVKZXFZdEZYNWlnRjRudXdtZGcvbi90MkFuM0UyY09EYXpkS3pJY3RSZ0UyMkRoeWtnK0Z6czk3WjNJczNWSUcza0RkWUY1dXVCL29ZNkgwd2srUHJiMDVkRDJmTGRGTHF0TkFCeTljQzU5NVYxcTBUUjY4RFR5UlRqak15WUdEeUI3UHNpamo0TEJ4MjYyaGRhNGppWm9jQjN1T09VQThqMHZwaEtNY1ZxRk1zOWtaSExGKy9BbjV5SjUzSktmV0hFTndQaDIvNGdkTUhGellPSEFMc2E1ZzlxeDZvMDN1MTFFYkZnSU1IS2xKR3dPWDFNUEc3NDJ3dGY0ckYzdWlJNVl2YUc5Q3VyY28zbkNTNDBEdHc4TjJSakt6QW03UGM5MU1FR2p4UWtSSmJPYTQ4emN3OEFJVERQUmZPYklvNGVPdEl4clFXT09CZWc2MUNITE9FVW13bWJjR293NUJObTRNd013L013aHAxak1JOUZ5N2RHemk0cmdpNzVpcVdzK2VxZytZcU1oSmc4RURGMm5nRTNSL2dzdUowQnB1SVU5eTdnUVM1L0Y0RHlFZGZ4TUZaUmRoMVN5LzdHVXJib0tIRDYrWW1Oa3JId2VYK2dJSG4zSHZXc29Rd0d3emZYRjFqZks4Vm01TTJldzJUR1hEcXpzREJaOGN4bHBsR3hZTUdOamVoSzhpYVZaZkZwa2haQ3N6bk1wMG1rMFdxT1huZXA1aUlBc3ZhV1FET2taY3huR2ZOZzRZVjM1MHZDbnpGd2VXYTFSM1hxNnVLMVFBVVl2Q2dGaE9GVU9udndNRnpaL2VUOXRNZnc2Qmh4ZlBnd1ZtQkwvZ1ZZQkRwTE1Wa1J0RUdadmNRSGZ2Y2tqK2tsZFhEMjdKeFlBN3ZFWWRJT2d6N0xsN0U4OFp5d0pzTkExNVh4WWRDRnNkYUdnTnZ4T3pIYWhEQldRVFE1OC9BSWZNQ1lDZHRWYzd1OE1zU24yQXpCRDRIWkR3MDR1SHJPbkM0TVkvaVdFQ0VPbEdJUlFxZ0F0RHBnYlRLUzkyR0NLSU5qWXUxNHBMV2JvbVp4ak9YK2ZWand3REhMWHM4TzkvWkcwY3ZUdUVoeFZ4dWZoL0w1U2JmREQwTHVQK283TnhyVDJLdkNiRFVOYy8xamxROHlQbE10bFU1TzlJaU03T0xwTFZycS9LMHFKdHNCdzc0aiszc2F4MUU1VlI0eUhGMTdWQVcyL3hlMUUweWUxOUNGOUMwblZCNy9CWndVZFROaFlsNzM5SWkxM3hLMXp2eTVtM2dvUDBMNHJCOXJtWm1wL3BGOFRiWTZKbWRHWng3SUdTZmpxc2xkMDcyRGtXRVFYeStzcnNIZHlZcmJ0dXFkTGEwRVlCdS84dXhlbVJNR1pSMllmMDRqS1BvbVhDMlQ4ZkYzcUZZT0w0WDVMU1pQR28yNHV6NDNKOE4vVUZGazNON25mMFFNVWJkQUl6d0lMZnFrU2tOR29BMUoxcSt6em1FNUl1NmVXR00rZWpocFhOT1ZoR0ZvbTVzanYzM3J0dHFsNTlHZm1qZXJaYlBzaXdIU0pPdnBVcHZOUjR0QmcxSW1kMVBzRnAvak4wVTd3c2hyYk5ucWR6RE5lOXZXcldMQVFTUUZpOTFITnFxUE5kMmxCZzBJQk9MN3l1Z293QUU5VVR6NGFZdUJKQVc3d1hnTkVoNTBPQXkzejdpcDJDMm12WDU4d3hlNDQ3a0hFNzVRRzFWL293aDdUR0RCeUFOWGdZT1MrWUc3ekhwWnJ4T2NWWG9wYk02UVprbFovelpyRDlQQW12Y01WRmJsWk1MclVuYVkvVlp6Q1Q2d0dRWEVERmZFWWZGY29PdnVacHpNMTRwNnVZeVpGVm9JRkxNbHM5RHRDWmZWM00vdVkwMlJySk04SWJCQXhDdmxKY3EyZHpTczFQTkZuVmpNNXdjdTJtU1d4NmpJSFFBSTdkRUI0TFo4bm1JMXVUTHhiTnF4WDczSXhoQUVDa0hJcTBvN20zZ1VOVE5vaHVrWFJTa2tWbVJiMjVhNUlXWEtBZ2R3R1NFbk1IT3JkaWJVMndvejVldmM5OFpRTnhxUExqc2VZQW5Uem13ZnYxUEtzNzY4SHFwRDVWUVZlaU51T2xpbDVBejJLUVFuZVZaeEczSFBONEgzSFlTTFpJb0JJQUkvTTloeGRsN2lycjVHZm9RNUpCMlZRcFBBVU40WDNaR2gyU1dKekdHcWpHZmRPYUREcmc3QXdnblNVUG1ZZ0lNaUkvdlBRNlBRaDZSakdvMStLaFcrd2Vkd0xTdzdFd3Y2Y1FGbjF4UjVEclhENzcwZmRZbURla01JajRzMlJZQWNWbFZqcjcxdFY3ZWRzSkQzQ1J6R1RRd1EzTkh5RTNjN3dLK2wydjd2cGJkTWRBY1Q5TXg0L3lGcGZGNHQxWDV4aGhqLzZ3U2JnVE5JR2dUa0xqSWZqZ1Uxend3ejUrQmcxMEQ2Yk5EV3RUTmQ1OUxvaGcwT0JQVld1dVFzK2xGM1VRN2NMRExJWXJheTFZbWxac3VsZm9nSFRUazUwVHFMS2pYVFNvUzhIbG9FNURRbVVkVWNrNHAvR0RBejdoUTJvUHNhVDJuazgxbEVRd2F2SGM2V0d1ZExqdTRkbjJOdThoY2xpaWJ6ZW9WMzZmc1JUMVlYRTNJU1VweXpka0ZnU1ZrT3hIMGQrRGdvMk94NXNiRHJNS0ppOEdJallpNGFZNVg3ejIvUHBsZE1FYjB0VDVZc3BDdlRlZGVuZ1dsb3dQek9vWE9oU3dqV2cwaWZvYmV1NWl4WHhrZTYrdUkwcW5Hdkh4NWxxQUY0QndQVEJvWDRWK3BOK0hxUWVGRmlHZ0lzNlBwYzlsUlp0TTFVdVI2U1cxcWU5SnNpbWNHM01GRXNiek5zVTlKZlpwRTNSazRoTGdodUxxUnVyakJTd2gyc1hvVFF3UWFOUEFnd0JqWlpzTkIrbHpmRDR1NlNhNGl1Qnlqa0FVbXMrTnFjcWFvbTJnbUJkdXFkRkk0T01UUzdwejFSUnk4M3d3a2M0TUdJZFp0VGw0Q0ZHaTJpZzJ1QU9EUGp4U1BiY2dDazVnbHgwckt2cGQyWiszZXdDSFF6V0N2cUp0RnczQ0JPdVZYVTVjQWhRcHhzOEVWQU83eUVIVklOWTMybFlJMkFFSGxIdEhZdE1mQmV4bDhZOHh4VVRkSEFkN25ubEF6K1cxVnZwcnlpd0VIRFN4UkFvQitUemd1MjAxOXhpR3NvbTQ0VDI2NWltaEVtV1NrZCtBUXNBeitsOUM1Y0xYUDVBZWNtZktTMkI4QVV1QzZxamZGTzdHZ2k5d09mZ3pmdDFpVGpHek1xaFJ3TnZvbTFPQkIrMHgreUwwZlBndnlBVUFLUEN4Wkltc01GbEhVRFpud0hHQUNZRWM2MXBDREI5OXZFTUdnNFh1b1V2OHNVUUtBd1Z3dUozaWUwbUdYZE9id3grV3k4VmpxRGpqN3ZybnU5MFZTODh1N0lYVWNnaXhwOGRteGoyRFFjQm1xbGdTREJnQVl6dlZ5Z3NSbUxGV25NNCtkNjJYajl0clRuaDVZNi9mTmNYSElxTzBjT0lSYzB1TGpoaHBxaERoajBHQTNMUjI3YjFHdmswRHZBd0RKOExCa2FaSEVJQzZ4WkNOYVAzSTdkekpnbWpRSXMwdnA1WGk1SGpSRW01SHN3WkFmc2pmTlVCZWF2TSsraTVHMmRNcTlqeEJuREJvT0FtNWF1blZSYVJ0QU9yUjBJQ0tKaERZT255ZGY3T0YzOUZyQnlEcjVXSmE4OUZKeXpaK01lQjY3dk83K1dqc09uNDB4NTFQVHgwZGliKzB6bi9WRk4yUlFmK3E3L2tYTUdja0dEUnhNNE1HRGJKaWVOWGlRRGRjaE91V0hNMzQzUkFHNlA2alhBRUFyMnlIVm5tSEVSdDlkUGdQdGEwMFpNREhUbndUYk54azBjSEI5M1cxZzk5NDhMMnF2SzlQZmpxZ00vZElZODlGblkrd0F1S2licUFmQlN4bXl4NkhyUThCMjNzaU0vT1RmZDlpV1RleUlkZEpTcUpBM2YvWTFBTUI4M0V1QnlWNE0vY1cyS2xQUFB2WkxRUnNtR3pWd2FLc3lkTFc4YjFNS2x3VHFsRGRUWjhnWU5BQUFpQjd3akJyb1dSU3R4Q0J0VmFyZW9MN0wySWpERWwveUM4azZORWpBREVxVG9pRU1HZ0FnWGg0MlNwUGlFVnNsdnZlZ0YvMFh2VVlQSE13eUovUzRxSnVkVlR3alNMc2FjbmJwWmNEM0FvQ2NQSEg0V1hOTzhSaHRacGtGdUx6bXNKQVVCa1NUQmc1bW1RLy9hRnZITzRKQlE4ajBlNzh5V0NNSUFJdG9xM0xuUk5ZWXVTNVppam16VEdpdXI3a1lFSFhRYWZMQXdTeDBVdnR1c05vSERlS0wwOFpzRWZ2Nk9RRFF6c09TcGNHYlIxTkFwM0M4VEk5WnlLUThYcVZ5L21ZTkhFVHdUVHZkZ2NMVW9oNWp6VG5oN0dzQWdDU2RPZnhRdnROUGFzSVNwWWx5ZThZdmtKVEhpNVRPMit5QmcyemFDWDRUa0VxQWR0UDBudS8zaXVXRU0yZ0FnSEJjMTU3SVpNbFN3eEtsMmZZamIvOG9DZlJ0a2pwZkxpSU9xM1dLdHk1ZWE2VGpBTzhSeFFsbjBBQUE0WGxZc3BSeXNjNlhVek1TNGg5YkhEZkR5RU9VbjllMmUwNHhZNDJjREJ4TXVwV0pUeUk1NFhPcVZ3TUE1bkZaMENsRThkTGdwQU5GMGc2SE1oMDhSSk14TXRYejQyemdZTkk3U05kdFZRNnVIN0dnejFPclZ3TUE1bk9ka0dKSSt2R0k3Qk1SOTBjR1pERWNYeWZMMCt6Z000TFAreVRsYTk3cHdNR2tNM2k0YmFzeVpQclV5ZHFxekNvVEJ3Qm81UGpaOTJqVFA4ajd1TnlVN2NXcVE1dmFNZzJ0dEE4Z1hLZVQ3WHplenk1ZmQ0N09OWjkwNnR3SFBsN1VIcmlZTjNuRnN1d3E0a0hhYlloTjdZN0YyR1pmc3F0aUN1OVNXY0p5NVdydlhWRTNYemROWU1tbTdIc2JzNHU2c1gvM3pzWDdUM0RGcHVmbGRmc0ZSZDNZNzlYemhScDFIV0lDdGp0NXVzVDFuMk0wcldoYmYvMzdHQWNQUGk0Q0g4Y2hoWXQxUmxHOG4wdU42R2UwK2J1V21iZWlidXpteEVtRFk4bWlwc0tjb29xYVBzY2NnUXRMZWpIbFhNUnc3alcyVWRyMGF1Ymd4dWJWdjF4aWlXeFJOM1pKV094MWluNHZ1YnhZcmdIYndYN3E0T1d1NUZwUWV6K1ZaQU52Wmc0b3JvMHg1K3pSK1kvWGdZT0piUERncXpQdStoaXdYaFFBQUFDaE9kL2pzSTRhQ0c0eGFBQUFBTUFTdkE4Y1RBU2QzWWc2NDlHa0lRTUFBRUJhZ2d3Y2pPTE9lVVNEaG9iMWRRQUFBRmhLc0lHRDBkbEpqNlp3R3RVMkFRQUFzS1NnQXdlamEvQndGVXZoTlBZMUFBQUFZR25CQnc1R1IwZjROcFo4MHd3YUFBQUFvTUVpQXdlemNJZVlBbThBQUFEQU9Jc05ITXhDSFdQU3JnSUFBQURqTFRwd01JRTd5QkYxeHZjVnRBRUFBQUQ0YS9HQmd3blVvWTlvMEhEU1Z1VnZCZTBBQUFBQS9sSXhjRENlTy9hUjFXcTRWTkFPQUFBQTRBNDFBd2Z6cjROLzYrRTFZM0JMclFZQUFBQm9wV3JnWVA1bFBHb2N2VncwZXdWaXlmUUVBQUNBUEtrYk9KaC9WWkpQWnI1TU5Ic0Z5S0FFQUFBQTdWUU9ITXgvbldtNzF2OXc0cTlIczFlQVFRTUFBQUJpVUxSdHE3NlpSZDJNYXFTMnp2aW05ak5vQUFBQVFDelVSaHk2eG5Td0tmQUdBQUFBdUJmRndNRU03R2d6YUFBQUFBRDhpR2JnWUhaMHVCazBBQUFBQVA1RU5YQXdHenJlREJvQUFBQUF2NkliT0poL0hmREdNR2dBQUFBQWdvZ2lxMUlLaXJwNWJJejVZWXg1MWxibDE5eVB4eHhGM2RqNkhIdFNiWnZDZVFBQUFBQUFBQUNnd0FOT2dsOUYzZGc2ZE1jcGY4WlFlbzdsWHFkRXhuNHNoY0lCQUFBQUFBQUFJRVVFSER3cDZ1YTdNYVpNOHNNRlZ0VE5nVEhtMjQ1M3ZTbnFQN3ZsVDlxcXZFenRHQUFBQUFBQUFBQ0FkcVJVY214QW9JR1VTaU4wZGpDTTFiUlZlYUQ5OHdFQUFBQUFBQUJBS3RqaDRFaW5yZ0FjY0hBOHkxV3dnc0o3QUFBQUFBQUFBT0FmQVllWlNKM2tWbEUzZHZmSFU1Y3ZTcDBIQUFBQUFBQUFBUENQZ01ORVBpYkdjMWJVelN0anpJWG5RMENkQndBQUFBQUFBQUR3aEJvT0l4VjFZeWVxajJlOEJEVWNPb3E2ZVdnREFRdTkvWFZibFVjTHZUY0FBQUFBQUFBQUpJVWREZ01WZGZQQ0dQTXhpc1pHWWtaQmFGZWVTaHR1MjZwOG1OT3hCd0FBQUFBQUFLQmJVVGR2akRHbm5tc0hYOW4zYUt2eXA0c1hZNGZERGg1VzRHZS93NkdvRzN2eFBsTFFsSHNvTUEwQUFBQUFBQUFnTklVcC9KOU1DVUlRY05qQzB3cjhiQU1PUmQyY0cyTmVLMmpLRUJTWUJnQUFBQUFBQU9ETnpQbm5hMk9NbldmK2JvejVNNCs1bW5lV1JmUUg4bk0ycGZ4aitkK3BpOERQMnFvOEhmS0RCQng2ZUU3MWsxM0FvYWdiZTNGL1U5Q1VLUTdicXZ3ZVg3TUJBQUFBQUFBQWFGUFV6U3Rqek1XQVpuMXVxL0pGaU9hUGFOUE8xUFFFSERxS3VyRVR5NlhudDhrcTRLQ2dUb01ySjIxVlhxYnhVUUFBQUFBQUFBQ0VOQ0IxdjVvNnN3TXkxVFJ0VlI3MC9RTUJoM0VSSEJleUNEZ1VkZlBiY3pHVHBSQjRBQUFBQUFBQUFERFlqdm9NcXVjYnR5MG83NnVIbTNYQXdVTkI2Q0dTRGpnVWRmUEpHUE5jUVZOOHUycXI4bFhhSHhFQUFBQUFBQURBSEZzV1p2OXFxL0p4REFkM1c4cjg5YUJEdGdHSEJWUDlKQmx3S09yRzVoUDdxS0Fwb1YyM1ZYbVUxMGNHQUFBQUFBQUFzTXVXRlA2ajVvaUx1am1Tb3M5Ry92ZmhoTklBbjQweDUzUG1wamZOcVhlRER0a0ZIQlNrK2trcTRMRFFMaEdOTnVZdEF3QUFBQUFBQUpDWExic0N4Z1lidHFWam1tdS9yY3JmWTE1alY5RGhmNTRhcWs1Uk4yL2tZS1JZVjJBUmNqd0pOdnludE1kRG9wWUFBQUFBQUFBQTh0WVhiUGlzYkRINlRWRTNQOGY4UWwvZEJ2TnZGMGI2QVFlN0FsOG14dDhyYUU0UzdLVDZnaW1wdENQd0FBQUFBQUFBQUdSc05mbStycTNLRndxUHlxT2lic2JXcXYzYzgzZGY3UDk1NEtaTk9qRXA3cGJkSlVMZ1pyQlNyajlTTFFFQUFBQUFBQUI1K2RUemFhOTlIWUZOdXc1V0JzeVRYeGhqTGtlODM0dE5yNWxrd0dGTE1RNU1PNTYyV3ZvUGp0MGtCQjRBQUFBQUFBQ0F2TnhMNjk5V1plK3VoMERPakRIdmZMK1YzZG1SVk1CQnRuNWNLR2hLTXRnbDRneUJCd0FBQUFBQUFBQ3B1TzRwWnYwcW1ZQURFK051RlhYem13TGJYcXdDRDFkdFZZN05qUVlBQUFBQUFBQUFnMGptbXN1ZXdNQzYyd2xIOUd2UDZ6Nk9QdURBeExoYlJkM1lDL0E0cGMrazFIRlJOL1k0bjdSVk9UZy9HZ0FBQUFBQUFBQjBPVmlNLzlqUkFYMGFiY0NCaVhHM3BITDZsNVErVXlRdWlycXhhY0JldGxYWlYwd0dBQUFBQUFBQUFIelpiNnZ5dDZQWHZvNHU0RUFCWTdlS3VubG9qTGxKNlRORjZtTlJON2JsVDlxcS9Kbjd3ZkNscUp1K3JWNGgvV3FyMGxYRVdLMVlqM05STjZjaENpaU45TXNZYytEd3dSOGRwZldaYnR1cWZPampoV1VCZ05YOVgvdGVwWS8zaTRCOU9OcUEvR1VxejhlaWJ1em5lS1NnS2ZqbldWdVZYNWM2SHZLOXQ5L3pBMWxaOWxqKy8xeDNjZHRjd0ovYXFqeFgwSmFvRlhWanI2TVhOcGR5WlBlZFgzTHYveHJib2l6dThTb2xQY2FXT1oxWDhsMWZjZ3cyMTdXa1p2bTY4RFBaSHNlUFM3Mi9TRFlGdDVMRjQyUWErZWVzcmNyVG1hL1JXd1M3YU50NFNoOGtVcWRoMFFGTkYzVXY5R3Fyc3NqOUdMaW02WHBQK2Z6R2ZKeTEzeE56dXkvRXNKTnh6RGtwNnNaT25MMzIyNkpzUlRNb28rK2xtb3NCMXgya2Z2WEsrZm1La1FUbHo3bk8vdmdnd2VudlN6V0FlN3hxYXVaaHhocVJlejBuTnMvOEc5ZVR4aEtrL2Fia09GNjNWZGs3a1JzckJRc1R1dzVEUEMvNm5ndFR4L1ZEanQvcXRZY2VheGR6REJ1ZWZTZFI3SEFvNnVaN3hpdjduT040NnJmNndoSjRBSUo2cGptMW5Od1hYRzV6VkVzbTU1TUpOZ2lDRGY2czZpSjFaYkdqRE9veENlelB1Nkp1MW5jbEpyc2kxSkJTZUFqN25IMHR1OGJ2WUV5RldDamQyYXZSWGljOXRkVzBWWG5nb0oxZWRqQkRwY1hPdGMyczRIdlJoQTFXRFVtZDcydU93UVlEVlFjY2xFVVg1M0oxQTV5TWgxZDg1TXZ2TFhVSGdIL3NxcWVpYnZhVnA1bTdzVzFNT2VnZ3FhMVVUODR6Y1JHRlIydXJiVDYwVmZrbTk0TUNKRzQ5K0JoMWpUUUNETzdZNXdIUGJtaWtKSDFQQ3NvUWs3akFCRytOTWUvWGZzMHVtUEIrcmNxdXJtTEE3anM3eC9CMlNpcExHYnYzVWh0d1NHZzc0dUtUeFFuV2FiaVRnekdEcmF0NzhobVRYclVGYUNBVCtVTWV5a3V5OS9Na0I4MUs2Mmgwc1dvK1huYlY2eXFRUmQ1V0lBOGZPNnZkbzhqaFh0U05EWkE4VjlBVUFKNFVkZk9tWndJUzh5V1ZmZ2hwc0pQNFJkM2MrNzdiKzBDb1dsVTI0RDVnZnVPOXRHbnNXTGR2N0c2RExPWi9JMS9JTzF0a0taRUpaQnRvS0JRRUc5cUVnZzBuY2t6dkRCYms3d29wTEpreXUycXJsWjAvQUR6U3Znb3V4VUNyN01MVEhHejRUTEFoR1JmeVBGMHN6emVBNEg3STkxNWxJV3BwVzB1d0FVaFg1M3RPc0FISXk5dWVUeHYwUGlEekd4OTIvTmo2RHZHdE52M3NLcENpSnVCZ0p4cWtzWThVTkdjT0xZR0czd2xOU0RWeVRMZXVSclFwcStSTDFQZGxUc2szQ3BJQi9oRjBDQ2VDbEgrMk9Pa0xCZTJBVzZVTS9xTk51UUpndE5meXZWZXhFcll6QVFrZ1VYelBnYnh0MnNrdzRiNndhN0hVcjIzL2FOUEx5aHpIN2JhZnMvUEp1eHF5NVdmMlYvK1BpcFJLcWR4OE5VeE9wWmJyYzhveGxTL3plV0kxUU82Ujd3M3BQUUNQQm00L1hFd0tPWWxsMGtkenNPR1o1TDlFdXA2VDN4dkl6aGViYm1tcDc3M3N0RkJkcndqQVBBUVpBS3hzbWxlUXZ4dFVjMHJxMGMydVNUZDNnZnlXZTl1emJxM0pSUU1PRWhIWlc3SU5MaWdKTkNRMXVlN2ltTFpWK1YxeXNhZFd3NkpydGVXSmZOU0FKOUk1K0tsMUIxN01FNlVTYlBpaW9DbWJKRjJnRzNmSjgzUlN3VFFBY1pMdmZkQjdQWk9RUU5vb0JBMmd6NWJGakIrWFhBUXhsS1NqTFRmOCtMMWFXWXVrVk9xa1Q0bzYyTkNwSGJBb09aYXBCQnNPWFI5VE80RFFjcTQ4dW1Ed0F2Z2pPNGsrYXozRU1YNy9pN3A1ckRuWUlNOE5nZzM1ZVMrN1JRSGs0eVpVaWlYNjYwRGFaRkV0d1FZQXZXUmU4cXJ2MzFicDF5Um9xVVluTFZ4dnNLR3YxcTVaSXVBZ2pkU2NPbUVuVFlHR2hEcXRWM0pjdlJadzdKeTdyVG5MWWtVUlRNQWZ5ZUYvcHZVUXgvUThrR0RERHdWTjZVVnFuZXdkYXkwc0M4Q2JML0pzOG9aZ0E1QzJGQmJWQXZDdnJjcFhPK1lsUDNhQ0Q4RlQrNjQyQ1F5WWM5NjZZRHhZU3FWRTBpZXBTSzJ3WXh0TGJCYXBRYkRLV2FZNVRjb01wZHdVN20xcEFqQlBXNVduOHRCWHVUSS9odlJLa3VhT1lBTzBzNFZsTDMwdmhBQ2dpbjAyZVhrR3NITUtTQnNCUlFCamRlWWxiZjJHNXh0Ky9lbUcrMHRqakxHLzkybktlRVYyVWJ6YThyNGJEUjB2ZXc4NEZIVnphb3g1NS90OVBEdlVNT0MwVWFiWWQ0ZDBhWmpVV1FVN0VndmlyUHlJSVE4Y0VCdGJRTGlvbTMydHRXRTBCeDIwMTlUaGZvazEzM3hOUGdMUXllTXo5SmhURHFTSllBT0FPU1NUd2g4ajV0QkwrZlBPenZ0NVpuZGlQQjY3QU45YndDR1JRcjBxQ3ZFbVdQUllYUkhPdGlwdDBlMGtBdy9TQWJMVjRvTnZ4UUpTSmZld1RVV2ZGcWM0NktEMVdYYTdXbUVDZE5rZFRXMVZCc250RGtBSHUrcXZyY3BQcmhxelJEb0VBR0dRemhpQVN6YWpnakhtZFBXU01oOThPV1Vud2tRMnVQREtSVC9JUzhBaGdmUkoxMW9HbDRsRnk5VlBlaWNjZVBqQ2JnZkFQZnVkSXVnd2pPTG5tWnBuUGxSNnltbkpCcE5HV1Bub2VIY1Q5NUhsSGVaK0FHQ2NweG91NnVZZ3dTd0owYUkvanhUSlFzZkJSYVRsdm5SdklkMFNjN0ZPQXc2U0F5cm1pdnhxVmpnbVV2Tml4UmFFZnFXaktjT2tHbmlRQ1Q4VktjS0FWQkIwR05hT3BkdXd3Wm1zSXNuS1V0ZUVyTkN4eC90MVRNZmJGcEJ1cS9LTmdxYTRwcllJZm1DVGN0L0dac0h2L1lGODcwT3R6SFBDRnBET3FCYmFMMlBNRWJYZmtzTTkvaitYSHEvdGI1NWUxN2ZQOXI3TW5BQ1FIazNmYTJjQmg5aFg0bXRaQlNvRnhWTEo4Umw5aW9wRUF3L2ZpcnBacEZnM2tDcUNEdHZmZjZuMzN1R2x5NVFaMkUxVzZMeVJQMzhWZFdNbkFoNHBQb1N2MTl1Y2doeURiUWhQQnI1M1Z1WkZraTdXUGg4TzVyNkkxT0RUS0xvRllSaUhlN3hmRVJXQ0oyMG9nRVhNRGpnVWRXTUhZTzhqUG4xYUNrSWZSQndodnllMTFEMmR3RU1xTzA4ZWFTNHNDOFJJZ2c0cTd4RzJYVXNNTmhRSEc1NndrbE9QVlFCY0p1WXVjajhlUU9wV2RaQ003a1U5cnRxa2JvRVBYSUdsaHdBQUlBQkpSRUZVL1gvQUNlMkxSTlhWelFTUWwvL04rYlF5a1JCcnNLR3huUzBsd1lZMm9XRERmc3FkV0R0aGw5TG5zOWVlcEVJRDRJQk02bDhyUEpaN0Vnd0pSbXV3UVo3OUJCc1VhcXZ5VXVzemxtY2w0SWRkMUpQNEJMaXFuT0lFRzRENWJLcEZ4WWR4WC9xNkJCc0FMR3BTd01HdXhvODVoWkxjZ0dkdmtaMUxKbnRUS1FwOWt0T0RUVDVyS2gzMmo1TE9Bb0FEVXJCTVk5N2N2VkRmZGMzQkJnWE53QTVLejFPS05Sd0FUZmExblkyaWJpaEFDcUNQeWxwVUJCb0FhREk2NENEYlhtTmRqZjlTU2ZITTd3a0ZHbFk3UldMSlllaVVYRStIQ1h5VVJ3bGRrOERpSkcvdVM0Vm40cEU4eDcwaDJBQkh0SDEvbmlwb0E1QXNtU1RUdGtPUWdBT0FPMnhCZVkxSGhINHVBRzFHQlJ4a0VpSEd3cm0zTWltK2VISElpSS9oUFZwMmlpek5wdVdTQjd6R05DcWpFSFFBM0pGbnpoT0ZoN1FzNnVhcmp4Y20yQUJYS09nTjVFZDJDR3Jpb2oxZW5yY0FGcU51b1NYOVhBQWFEUTQ0UkR3UmVVaFZmcmUwcFJQU2NtM2FRVklLRDN0SjljVjNCbkRBMWdwUWVsOTRXdFNOMHdHVDBuN0NMWU13QU1CRTdHd0NzRTdiZlVIamptb0EyQjF3c0Z2R1lnMDJhQ2tLblpCRFpZR0czeHF2elVUU0xOMW8zUzRLeEVqcHBQZXhxNkNEMG43Q05Rc09vaGY5emtFQTJWTzF3NEhkekVCYTJCRUtRS3V0QVllaWJsNFpZMzVFZVBaVTFHcEl5RnROd1JzN1FTYWQ1VDBGemVuVlNiTjBxN0I1US8wZzZBQzRvempvY0RybkJaUk9YbHdwVE0yQjhVaEZBaUJxYlZXcXU0K3hteG1ZUm1FaCtSTUZiUUNBWGc4Mi9ZTUVHeTVpTzJ3RUdweHFOTlZvS09ybUlMYUM1WFoxclhUb2J4UTBad29iY09RN0JUaGluMUVLSitqZkZYV3pLblE5aXRKZ3cwbGJsZXJ5NndJQW9JamR6V3hrQnpzWkFZQmhaaTNTY1kzK0xnRE5lbmM0U09RMnRtQURlWm9kMGxZUVdpYTFvZ28yckxSVitUdm1hNU90MTRCYlNuYy92Wk9GQm9NcHZUYzhZZkNWRkhhcEFJQmYzMlRIUSt1NnRoT1FJT3E2QU1CQW0xSXFmWW5zQUY2UnA5a05qUVdoVTVud2x1UDZWa0ZUUmlQb0FMZ2x6eXh0K2VrdmhnWWRsTjRUOW0yUmJnWHRnRHNNN0FFc3lkVnoraXlTczNqY0NUNnMvcEFmSHREcGl2TUNRTE43QVljSUp4WnQ2b1JScXpMUlMxdEI2TzhwVG5LM1ZYbHVKOFVVTkdXMG9tN2VSTlprUURXcE1mQkJXUnN2ZHVXbjFWcXMzKzRtVTlBVUFFQTZuTlJmbUpLeVVKSG5QVUdJM3dwejJRTzVZVWNTQU5YdUJCeUt1b2x0WmVBelVpZk1kcVcwSUhTcG9EbGVSSnhpNmIyQ05nQkphYXZ5amNLQ2IxK2taczQ5ZHBKaDJhYmRSenJGTkJWMTgwTFpCOU8ySXdsSVRsRTMyZ29zdTJ4UDQvQzFsclluZllYMVFNUjVRcDhSVUUxalFYb0E2UHBiTkZvSzJ6Nks2T2k4NUNZN3k2Mm1ORlF4Rm9TZVMybngySzNzTGdmWnBZRjV4NUVVVmZqTEJzNWxrdVdIb3FOaWN6by82YVlva21ERDNyTE51b3RnUTlJK0t2dHdNYTlRN3BYeHM4aU9JVWdUbzR5TVJWV2xVWE01MXJTMThUTDR6cjB1NnViMTJ0LzlzdlY0U0hrWVhzYjNlQXFoQTRBQzNSME9OeEdka0E4TUZLYVRIUTJhZ2czUkZvU2VLOExKTW5ZNUFCN0lRRnhidXJVZk1nRzAyZ0ZKc0FGQktFM2J4U0tYZEdnTFptVlBualV4alVXbmVobG5zMmQ1SlAySjlkMFFwR3FGTDE3bUZVZ2pCZ0RqUElqeGVFa0tDb3kzcnluSE5hdTgvM3FpYkdVemdBWEkvVm5ienFlYm9tNStLZHNCK2F1dHlzY0syZ0hIYlAybWxGTXFBcmhQNCs0NTRUd0ZrbDB3VjlTTkxmUjY3UHExSS9TK3FKdjFoVXlmalRHdnFNa0VBRUQ4L2dRY0ZPYkwzSWdWalpPY2FLcDF3WVRDWFhabGMxR25sTllWd0J3SzA2MXBDamJZdWtPdkZMUURqaFIxWTFNVnZWTitQTThVdEFGSWhvdzlWYVZQNnVHbGpveDloaFYxOHppQ3o3K0U1N0xRb2Z2V3Q4YVlBMUl5UVFGMk9BREFDS3NkRHJGMGVDallOODdudGlyVkZGMk1aRkpoS1djY0d3QXJNZFo0Q2VBdE5XVGkwVWs5Y0NSL29wMWNhNnN5dWZvTmdBL3l2YmZwa1E0UytONTdtK0J1cS9KSVVncVJxblMzUFVuSjFQMUJGaDhBQUtCY2JDbVY2RmdNUTBIbytMQmlBc0FkRW5UUW1tb2l0R2ZrMEhlSFlOWW83RzVBRXZqZWozTG8rdzBrZ0g3T2Vabmt1S2liYmxvcVZidjVBUURBM2FMUjZyR1ZjamNLUWtjcmxoVmdueFcwQWNpRzNNOS9aWDdHOXdrMllDbnNiZ0N5WStzRWZRLzFvU1ZkY0k3RnBGMjY2QlNqWmlja0FBQUtQS0RhZmpJb0NCMnBvbTVpV3BGREp4NEl6QlpJbHZ0RWRrVW1xZHVFSlhIOUFmbXh6OXpRSDlvV2s3WkRBbmFGTy9HNnFKdlg4a0txeHNjQUFPVGtmekdsY29tcHVIVkFKN0tyUVVWbnloYUVKdGd3bkJTTmkyWVNrVlhHd0RJa1YvSGJuQTQvazcxWUV0Y2ZrSitsdi9kMlo0V002d29wbG94NWJtVFhnNXJkL3dBQTVNSUdIR0thUUh4S2grR3ZSanFrS2xiSEYzWHpTZ0lOcFlMbVJFR3U1UjhSTlRuM3RDN0FvaVRmODdNY3pnS1R2VmdTMXgrUUgyM2ZlNXRTc1JOOElLWHBQRGNzaUFNQWRMR1kxcjhIOWlBWGRSTlRtMi9zWEsyQ2RpeEdVNGRZVnVqSE5HbXVRb3pIYllrdDVnRHVrbWYydmp3TGs4UmtMNWJFOVFkazU1ZjJQbTVibFMrNi81MXJtc1c1Sk9qd1VsSllBY0E5eXVaSFUxeHNmYUNnRFFna3FxTFJLN211VU9pc2NsRkJ6Z1BCaHBHS3Vua1Q0WEZqV3plZ2hFMmhsK2lrNkM4bWU3R2dRNjQvSUM4eXRvcHVRWTFOczdnYUYzYkdoeWNLbWhhRGo2UnB4a1JjTndndHhld2hld3JhZ0VCV0FZZVhzUjN3eklJT3FnYkJSZDM4Wmx2cU5FWGQvRFRHdkkrdDNYWmJ0NEptQU9oSWJITDBtbDFVV01paFROaDk1d1FBMmRoUExjQm8wK3oyQkNIc2pzaHJCYzNUNXFuc0VnRUFBSjQ4TVA5MVVENUZsbGJwRDVuMGZ0Slc1VThGemZIaFExdVZiN1EweGhhRXBrYkRkQkVIYVZneEJTaGxKeFFTQ0FDZnRWVjVxcUFkeU1jdGdYUWdPK3BUSjdsbWQwUWFZNDdXWDliVzNqUEdYRVQvQWVjNUx1cm1FK21WTUZTRXFjZ0JZRkVQVm04ZThhVEZqNkp1UHEvbnRveWNMUWl0SnJjWm5kSjVpcnF4aFY1ZlI5cjhYMW9La3dQb0YzblE0UmtGdXhCSWRwT051TWZPRkozVHI4bktsVTAvbFB0QldDZmZnVHZmZzZKdWJCRFdUcjQvVmRISU1EN21YaHN5TWRkeWp5ZUlCQUFLUEZocndxRXg1bHVFSithNW5XeEpZV3Vzc3RSSkQxTXVUQnBDN0N1UG1aenhJK1U4NGFSYlc0WUVIZXh1djBjUk5UdmxIWXBZSGp0bmRxQm1CUkpFUWVDSmN0ME5ZZXM1dEZWNTczT25nSHQ4Mm9xNk9XTFJEZ0RON2dRY2JQN2FvbTdPakRIdllqeHJNdEYxRXVuS3BYM3A2S25BcE9FOEthU2ZvcE1LeE1VR0NHMTZBQnVFMTk1dzdpOXc1TE9zWm1UQURlVGpUTDczYXNaTktjdGdOMFJPT3pxUWxqY1VzazVmU29FbCsxa1VOQU1CcmU5d3NKMkswNkp1N0tybTQwaFB4RVZSTnhjUlRXWWNhaXBVYUF0Q1V6bCt1cUp1RGlMZEpYUUhrNEZBbkd4NndhSnVUalV2SE9EK0FyRXFaR3I3SGJZZlpIZTcvQ1I0QUdDSGQreGVXbFpxdXlGWUtZNUlxVjlnRkxGYlJYTmlwMzMzMjBocGVuYi9VdENHNU4wTE9Kai9PaEd2SkRWRGxEc2R6TDhWK3ByemRxcHFXeXlyWWpWTFpWY0lrNEZBM0dUaGdCMDRmOUgyUWJpLzZNQjVBUEl6NVh1dnRXOHI3U0o5a2pJYmRrUEVrTzdSMXR0VFV6OFJxbDJ6S3lZTDU0cm1RbE82M2pSOUZ1cDVCZkMvVFc4aEswZE9Jdjk4eDdaREt0cyt0YmkxSFg0dHdRYTdFa1U2N1FRYkpySWQ2VVNDRFEyVFVFQWFaS1hldnFZUHcvMEZBT0lpOSsxYnBZMytLSlBaVU15bWU1U3hyK1pyS2VvMHVBaEsxZTRxMlZVRTk5anhsRDdPY1FBYkF3N20zeXFGSndsOHpoc3RFOEp0VmFvSWZ0Z2dqQnlUWkl1QStXYlRsc2d4aktsSTZ5YTI5Z2tyZTRDRUtNdHZmVDNnWndBQXlzalk1YTNTOC9LSXVuUHhzTmNTaXc4UU00V3B0NWpMOFVEYmVVNGh1Szd0TTVCR0w0eXRBUWZ6MzRuNG1VckhRSFk3cUttWHNCVHBtTjhrOG5IZWhyNCtiWjBHT1liUnBoenJrbFZIYkNrREFBREFQVzFWbm12Yk5kZWxjRWM3dGlEb0FMaFQxTTBMRG1meVVsamdtc0pud0VnN0F3NHJDWFVNU3VtVVpyZjl6QmFFVG1nVlVDTVQ1ZWVoM3JDekt5VDZvdERpbGc0L0FBQUFkckc3NXBUM0crMk85amNLMm9GaG5uR2NFQ2x0dTNZL0ttaERpaHBObnlubWVUeUZiVmQxYmxNMk9PQmcvZ1VkUGlSeVBDNGs4SkI4R3BtaWJpN2xTNjZsMHY0c0VtZ0lldDRTMnhWaXBOQWVLOEVBQUFBd21Jd0h0UTdXMzFQWElRNmtzMERFMU8wb0lMV2NGK29DMkVYZGZGTFFqRkhzWEtUQ1pyRTRJWkJSQVFmelgrZmdqZVl0dFJOOFMzVWJibEUzUi9Md09WYlFuTms2QmNlQ2tXc2pxUWU0SE1mb0hsWUFBQUJZbml6ODBicENuYm9PQUx4UlZpUHRMKzU3YmlrTmlqNlBLZWdnd1FaMWM1RUV2TU1aSFhBd2NXeXBuVUpOWWVtNU9xbC92c1Q5U2Y0NlhDRFE4RFBCaC9ZSktaUUFBQUF3bHgyd2ErNVhVdGRCdDZKdUh1ZCtEQkMxTTQyTjU3N24zQytGYlhvZXd6eVY0b1hQR3M5cHNpWUZIRmFray9reXBZTVQrNHIyeEZML1hNbHEvR0NGdm91NitTckhNS21pTmhTR0JnQUFnR3NSMUhVNFZkQU8zUGVEWTRKWXRWV3ArYjZTekVMYXBiVlZxVFl3S3ZPVzZ1WjNPdW5jVmRKOFRsUDBZTzVua3RRc1JXbzN0ZFhuaVdWRnVDMEluVXFOQmlsbUhEUXlMNE9SZHlIZk01QW5iVldTeXhZQUFBQmUyUEdTcEhsNHJ2QUl2N1BGcEtsZHBvT3N2azZwTGg3eWRhVTVkWFZuZnU1elc1WHE2azdBaWVPaWJsYlg0R0x6UHR6WHNjbnNnTU9LZERSZjJXTE1LUjF0N1lFSHJYblJwbG9nZFpMTlFmc3Q1SHNHY3QxVzVWR0Nud3NBQUFESzJBa3RTWk9qY2VYNm5oM1RrVnAwR1FtUHQ1Q3h0aXBmZFNaN05WdFB3WE5yaSthUy9XQ3cvVWdtMDM4VWRkUDk3dzlTZjllNW9tN09qVEd2Ri9tVTg2UlVpemdLemdJTzVyK2JycjFwcWQ1Q00xWG5NKzFyS0JTVVlNY3Q2SEZOT1FyTFlBb0FBT3hDeW9WN1ZQVHhZeWFySzlYdWZKZDJoUjV6SkxVNExGRXE4L0hQeFQzK0xrOWo1TU1JNTJSc1ZveUxvbTZTV2lqc0swdUdmVjRVZGZNcndwVGJyNHU2aVRFbzRNc3YrbmpoemFyaHNJbmN6QS9qT3h5RDNFaSt0SU1sM3J4VEVEcVZZTU5McVM4UXN1T2ZVcDJMcmljRUd3QUFBQ2J4c2hJd1I5SWZ2Vlg2MFlQVmRWQmNOQk1keXZQeHc1R2licHp2L3BkYWs5ZWNJeFhzVHJhdlBocEMzdi80Y1E2WDRTWGdZT1RtSzUzTlpzQ1B4K2liQkI2Q3BhMUp0Q0QwcDFCdmFPdGNKTHJTWTNVc3FkVUFBQUNBeGNsS1U2MHJ4OTlKL1R2Z0t2c2pnRmxJWTV5Tko3a2ZnSWh4N2hiaUxlQ3cwbGJsUWVLcnJyOUk0T0hjMXhzVWRmTXpvWW55VzVrY2Z4WHFEVzJoT0RsK3FSVFYvaXYwc1FRQUFBQ0drSlhqV25NbTc1RnlCb3lqNEFKWkJ0SW5penZmNW40Y0luVEd3dHpsZUE4NHJNaE4rRVRuWVhEaXRRUWV2cnQ2UVp2elV6ckNzZVdMNnlXVDQ4N3o2bTBqeCs5OXlQY01aSitPRFFBQUFEU3phVk0xOTFsbC9FYXFoUXd4bG9KTFhFL3BhNnZ5bkYxUlVia2laZDZ5Z2dVY2pCU1ZUanpOa2xWS3gzWHlObDFiSHlLeG5KL0JKOGR0NENmeDlFbHNBd2NBQUVBVVpDendTMmxiZi9qY3JRNTltQnlHRDhycjE4QUIyUldWOGtMcVZMeGxCOXZ5Z2dZY1ZqSklzMlJXMjNUSFRub25WaEQ2WkluSmNUbUdaY2ozRElIMFNRQUFBSWlWRkcxOHFiVDVyNm5ya0FlQ0RmQkpNanBvdmMvQkFidVFXbkc2UVB5MzRKbEZCQW84V0xJSjltRmYxTTNEaEFvaDkrb0VIUTV0TWUwZFA1T0N4Z2FWRmpqT2RoRHpJNkhqdUxMUGpnWUFBQURFcnEzS1Q3YmJyblRzODJmQkdCUFN5WG9wMXgvZ2xmTDdIQnlRK1psQ0F0WEoxUXFOMUczb0ZPN1lidEdBZzduN1JYMlRhSzc5cm05Ri9TZWIxSWUyS3Uzbk5WTHpJWm5WK0V0MTBCTU5Odnk5VGdBQUFJQlV5TUl6bFpOeDBxNG5GSnBNeGlLTDRZRFYzQWlCaDNTdEpyZzV4OHRpb1lCT2k2UlU2bU8zdkdSUTMySGxkU2ZkVWhMQkJrbjNzK1NYUEtWZ3c2MGNUNElOQUFBQVNKS01IVDRyL1d5MnJnT3I0ZU8ycW4xSHNBR0xVakJYQXMvay9KSm1LYnpnOVdJeDNPSTdITmF0T2dSRUNLT3hNVTBVeHVObUNRQUFnRnkwVmZtaXFKc0RwVFhzbnBOaUtUNmNMMmpWMmZGZzg4dS81a1NsWlpXOXhmeDNqdTBPdVVlNUh4TlBma2xOS0Npbkx1Q3d3dll6OVVqMzQ5YUpGQjhDQUFBQXNpR0xsMVNuV0dJU1d6VW1ueEFWbVVkWnBkZytOY2E4NHd3Nm9XWWhiUGVlUlBEQkNlb3pSRWh0d0dFbGw4TFNFU0VIcGx2Y09BRUFBSkE5R2ZlcExNQXB3WkJSTzd2bDh5UlZyMCtKNjdZcWozSS9DRWhEVzVVMjRIQzYrakJGM2RoRmlNZWMzdkcwTG9oZEN6NDhsc0FJaGFaM281WlM1TlFISE16ZHd0SmF0OXRtZ1pVOWJuRThBU0FydHd3dUFHQTd1eENucUpzWHhwaVBDZy9WdDZKdXptU0NjSkJ0QzdXS3VyR1Q1cStZWE55S1hlRElTbHVWcitTKzhGZFJOM1lpL1QxWHdqMi9qREZITVUxS1MxdnZMRGlWSU1TbmpJUFR0bzd2SzFLMXB5ZUtnTU5LWjd1dDdaeDkwZEdxTE94TDBBZHVQR3VyOGl2SE1yaDlKVHVsVGhTMHdTY3R4L21sZ2pabzBHam92TElTOFE4NzZmUkRRVHV3ckVNV3o2aDBPMllTZVlRekpha3lHZ1Z0R0t5dHlrOHk1bnVzOEw1NTd1cUZaRHp3ZFgxeWNSdFpnSGNrejVTanlOTjAySUxobDNLK1UySDcrUmNKZlo1VU5ER1B2OXVxUE45Mjc1R0FoQTNVUGczYk1tOGFtWUQvbXNPOGlRUWhVZzVPMjN2OU9YTmcrU25hTnQ0U0NVWGR2T0tCN2xVMEJhRWpxZlZCT2lvQUFBQUFBQUFBeVlvNjRMQkNvUjNucm1Rclh6UzBCeHhJbndRQUFBQUFBQUFnZFVrRUhGWW9zRE5idEFXTUZRY2NTRWNGQUFBQUFBQUFJQXRKQlJ4V0NEeU1GL3NLZklVQmgraDJpUUFBQUFBQUFBREFIRWtHSEZZSVBBeVN4QXA4UlFHSGFIZUpBQUFBQUFBQUFNQWNTUWNjVmdnODlEcHBxL0pTWWJzbTBSQndvRTREQUFBQUFBQUFnSnhsRVhCWUtlckdwcmk1ME5HYXhUUnRWUjZrOXFFV0RqZ2N0bFg1ZmNIM0J3QUFBQUFBQUlERlpSVndXTWswOEpCMHFwK0ZBZzZmMjZwOHNjRDdBZ0FBQUFBQUFJQTZXUVljVm9xNnNTdjl2K2xvalQ4NXBQb0pIWEFnZlJJQUFBQUFBQUFBM0pWMXdHRWw0Y0JETnFsK1FnVWNDRFFBQUFBQUFBQUFRRDhDRGgxRjNkaVVRemRxR2pUZDI3WXF6Mk50L0JRQkFnN1VhUUFBQUFBQUFBQ0FMUWc0YkxCd0VlS3BraXdJUFlUSDgzWFZWdVVyVDY4TkFBQUFBQUFBQU1sNHdLbnN0MHFkVTlUTmIyUE1uc0ltM2tHcUgrZXlEZDRBQUFBQUFBQUF3QlRzY0Jpb3FCdWJUcWZVMWk0Q0RmOXh1Y09CWXdvQUFBQUFBQUFBNHhGd0dLbW9tMHRqekxHQ3BsQlRvTU5Gd0lGQUF3QUFBQUFBQUFCTVI4QmhvcUp1am93eFh4WjRhMm9LOUpnWmNOaHZxL0szdDhZQkFBQUFBQUFBUUFZSU9NeFUxTTFEWTh4TmdMZTZiYXZ5WVlEM2lkTEVnQU83UkFBQUFBQUFBQURBRVFJT0RybXNJOUJGcXAvZFJoNzdrN1lxTDVkcUt3QUFBQUFBQUFDazZBRm4xWjFWWU1CaGdXbFMvYmhGb0FFQUFBQUFBQUFBUEdHSGcwZEYzZGhhQ3hjVDNvR0o4WkYyN0hEZ2VBSUFBQUFBQUFDQVp3UWNBaGhSNStGelc1VXZvdi9BQzlnUWNDRFFBQUFBQUFBQUFBQ0JFSEFJcktnYm15SnBiKzFkS1FnOTAxckFnVlJVQUFBQUFBQUFBQkFZQVllRkZIWHp4aGp6bm9MUWJ0aEFEa0ViQUFBQUFBQUFBRmdPQVllQWJKQ2hyY3J6YkQ2d0owWGRIQmhqZnJLTEFRQUFBQUFBQUFCMCtCL25JWXlpYnI3YjNRdzVmRmFmcEJiR04xc1BvNmlibzNRL0tRQUFBQUFBQUFERWcyQkRBRkt2b1V6K2c0YlJMYnI5cGFnYmRvb0FBQUFBQUFBQXdNSUlObmdtQll6WEMwTmpnclZpMEN1dlpkY0lBQUFBQUFBQUFHQWgxR3p3Uk5MOTNLeS9Pa1docDlrUWFPaTZwVWcwQUFBQUFBQUFBQ3lEblEwZWJBbzBZQnBKUTdYTDNvQ0FCQUFBQUFBQUFBREFBNElOamhGb2NFdFNKQTFPUTJVRERuSU9BQUFBQUFBQUFBQ0JFR3h3cUtpYnh3UWEzQ25xNW5KaVllMGJPUmNBQUFBQUFBQUFnQUFJTmpoUzFNMkJNZVpIRWg5R2dhSnVYaGxqam1lMDVFZFJOeStTT1NBQUFBQUFBQUFBb0JqQkJnZGtGZjIzNkQrSUVoSzR1WERRbW85RjNad21jVkFBQUFBQUFBQUFRREdDRFROSmZRQjJORGdpeDlObDRPYWRwR01DQUFBQUFBQUFBSGhDc0dFR2lrRjc0ZU40SGt1aGFRQUFBQUFBQUFDQUJ3UWJKaUxRNEY1Uk42M0hseStMdXZtOTFHY0RBQUFBQUFBQWdKUVJiSmlPUUlORG5nTU5LM3VCM2djQUFBQUFBQUFBc2tLd1lRSW1yTjBLdmVPQTh3Y0FBQUFBQUFBQWJoRnNHSW1KYXJla2xzTGVBdS9iU2lvc0FBQUFBQUFBQU1CTUR6aUF3eEZvY0t1b20wdGJTMkhCSnR3VWRmT2tyY3FmQzdZQkFBQUFBQUFBQUhZcTZ1YklHTFA2ODNURUVmdGxqTEdMdnI4YVl6NzVtZzh0MnBiNTh5RmNCUnJhcWl5OE56WUNSZDI4TXNaY0tHbnBZVnVWM3hXMEF3QUFBQUFBQUFEcy9PbGpZOHk1TWVhNXg2TmhneENuYlZWZXVuZ3hnZzBEU0UwQko2bCtDRGI4T1o0SHhwaHZDcHJTZGVMcVN3VUFBQUFBQUFBQVkwbmFkN3NvK3RGQ0IyL1dIQ25CaGgya3BvQ3pWRCs1Qnh2a0MzT2pvQ2w5M3JaVmVhNnZXUUFBQUFBQUFBQlNKZW1SdmlqNmVGZHRWYjRhKzBzRUc3WndIV2d3QkJ0aXFIc3g2WXNFQUFBQUFBQUFBR01vWDVodG5iVlZlVHIwaHdrMmJDREZpNDlkdjI3T3dZYUlDbXhmdDFWNXBLQWRBQUFBQUFBQUFCSlUxSTNOc1BKNjRpZHJKTjNTVHluNmJIMXZxOUtXQTFqdGxMQnNNT05nUWtIcE80Yk9hUk5zNk9HemVIR3V3WWFJQWcwclRWdVZCenFhQWdBQUFBQUFBQ0FWSTJzRTN4cGozcmlzTnlzMWRVOUhGcDgrYkt2eSs5YlhKZGh3bCsvaXhUa0dHMXdXMkE3c3RxM0toeEcyR3dBQUFBQUFBSUJDSXhabHYyeXI4cFB2VHlDcG5ENE4zUG13TmVCQXNLR2pxSnZIeHBnZlB0OGp0MkNEajdvWGdSRndBQUFBQUFBQUFERGJ3RUREazdZcWZ5NXh0SXU2K1RvZzZMQXg0UEEvUDgyS2owUnd2QVlhY2lOMUwySU9ORmg3c2pNREFBQUFBQUFBQUNZcDZtWlhBT0d0WGFpK1ZLREIvTGRRM3RaMjJOL3hZeHV6QWhGcytFZHoxZS9vU04wTDV3VzJGN0lYWWMwSkFBQUFBQUFBQUFvVWRmUEdHUE5vUzB2MjI2bzgxOUJXVzJSYXN2TTBtMzVtMDF3cHdZWTRpeGVySm5VdnZCVFlYaExYQ1FBQUFBQUFBSUFKM20vNkZkbk5vQzZ6U2x1VmRvNzNhdE8vUzFhYk83SVBOcEFpeHkxSlIrV3R3UGJTQ0RnQUFBQUFBQUFBR0dyYi9MUDIrcjV0VmRyc05kY2IvdmxlVnB1c2d3MVN2SGhQUVZOU2tudzZLZ0lPQUFBQUFBQUFBSGFSaGRtYjVwOTMxVVpRUWVvNDNQYTFaYjBPUmJiQmhxSnVQaVZRdkZpVm5DYmhDVGdBQUFBQUFBQUEyR0ZUc2VjemphbVRObW1yOHVHR2Y3cFRoK0xCWWkxY2tCVGtlSjdqWi9jbHg4bDMrY3o3TWQwWUFBQUFBQUFBQUFUVHU2dWhyY3JUb1EyUStyaDJzdjlJL2xoUFIzNEFXK3o1MDVqMzdYRm1qSG5YMDc1TFNiZGtpcmJOYTQ1WVRzNWlOUVcwNStHYVF2S081WnlPaW9BREFBQUFBQUFBZ0wrS3VqazN4cnp1T1NMUDJxcjhPdlJJZVZya1Bhb051OXF5bXZQT0tvMVM2c1dMbDBEZGl6OXU1Tm9DQUFBQUFBQUFBTE1oMEdDbVRQSjc4RVhtZGNkNjIvZnpSZDA4TmhuV2JFaStlSEZJZG9zTWRTLytJdUFBQUFBQUFBQUFZSnZleWZxRmxGTFhlTEMyS3M4My9PeWZ2ODhtMkVCQlg3ZUt1ckY1dUk1VCtrd09FSEFBQUFBQUFBQUFNaWR6cC9kc21heGZ5cFM2eHI5Ni91N1A2MlFSYkNEUTRKYlV2YmhJNlRNNVJNQUJBQUFBQUFBQXlOdWJXRDc5aEhSS0d6OWI4c0dHb201K0ttaEdNcWg3TVFnQkJ3QUFBQUFBQUNCZmZhbm5QeWc5R3FQUzVMZFYyWnQ2eWRadGVPQ3NTUXBKVFlGSEtYL0dCVkQzWWhnYmNOaHZxL0ozREkwRkFBQUFBQUFBNE5XcHB4ZC90dUh2ajR3eDd3S2UwbGZKQmh1b0tlQWU2YWhHSStBQUFBQUFBQUFBd1BpYUkyeXI4dXVHZjdKL2Z5cEZvS2ZVWnRpbTZka1JjWlJrR2lWcUNyaEhvR0V5VWlvQkFBQUFBQUFBbVNqcTVralRKMjJyOHNXdW41blE1cjVVU2srVEN6WlFVOEM5b201WW1UOFBBUWNBQUFBQUFBQWdENnFDRFo3MDdxWkljV2NETlFVY2ttcmtlOGw4b09VUWNBQUFBQUFBQUFEUzF6Y0gyS1QwcVRlbGJrb3EyRUNxSDdla3dQYW9hdVRZaW9BREFBQUFBQUFBa0xhRG5rLzNNNGR6bmt5d2dWUS9ibEZnMnh0MjNnQUFBQUFBQUFEcDZsdHMvSDJwVHp0dzhiT1R1ZlVrZ2cyaytuR0xBdHQrc1FNSEFBQUFBQUFBU0phYVRER3lvSHpuNHVlMktwMEVReDY0ZUpFbEZYVnpTcW9mZHlpd0hZWU5PTFJWV2VUd1dRRUFBQUFBQUlETTlkWTRjRUhUd3Vhb2R6YklDdngzQ3BxU0V0TDhCTUlPQndBQUFBQUFBQUNwaURiWXdBcDg5NWo4RG85akRnQUFBQUFBQUdCQmg2N2VPdWFkRGF6QWQ0aEo3K1Z3N0FFQUFBQUFBSUNrSFNqOWNMZXU2aldZV0dzMk1EbnJWbEUzVHFxTll6cDdEdHFxSEZJWkhnQ0FqV1RuNTZvVCsxaitXQS9YT3JkUEZSekZhMlBNVC9uenRhMUtiemxNZ1pSSmF0bFZQL0tvODFHN2YyOFVmTzl2alRIZk8vbUsrZDR2cUtpYkk3bGVWczhIMzlmSHRmd3Y1eDhJUkw3bnEvN2c2dnNlcXVicHZlKzhNZWEzeXdsTklFSWE1LzErdFZYNWVNRFBEVmEwYlZ6ejlqSXh2cWVnS1pOb0t3cGMxTTEzQ215cmNVdkF3WitpYnV6Tjg4ZkN6WGpaVnVXbmhkdmdWY3pIdWFnYk8rSDV5RStUSmp0cnEvSlVXWnVDS3VybXE1S0o4UzR2NTBXK1A0ODdFNFNyU1VOdG56K2t6OGFZODFRbXBHVFEvMFZCVS9EUGRWdVZSMHNkRDdrbVRPZjdudnYzM2dZa0xvMHhuNWlJbnErb20xZkdtRmNSWGsvWE1qRVpWVUNpcUpzWHhwaVBDcHFDZno2M1Zma2k1ZU1oejVFWDhsMlBkYTdzVnI3em4rVCt2OWlDV0NWand2MGxqNEV2c2locTZTdzF6aWZXTjlrd2pwMDhqdlN3OFA2WDdYZTJWZmx6em92MHRTdXFZRU5STi9iRzgxeEJVeWJURkd3bzZzWjI1SThWTkFYL05HMVZhdDFXRlRWRk82S1M3RGlzeEhxY2xRZXlzd3hFeWtwZHRiV1p4ajdQcFhQOUtmUEFnU3RYeHBnM01kNUwyWjJybHBmN3JFd0FuYk93eDRuc2crKzd5RVQzbXd5ZU0vWVpjS2t0Q0tGa0VnMzlGZzBxdXlRTFUwNHptOGU1bHUvOHBlODMwclRJU2R0Q1pSY1U5WU9Eekx0dHVKNG0zNDhHSEwrelR0QnU1OXlHcTJ1c3IxM1JwRkdTVlJsUkJ4bzBrZU5Kb0VHZjBnYUIycXA4bGZ1QmNFa21MYlU0bFlGZ2NqcXJNelY0SThkNktNM0JoajI3Q3kzRFFLVGFRTU5FVEVDNFkvc3Z4MFhkR0ZrSjl5cUdYV1BTOTRKT3Z1Ny83R0p4NTExUk4rL2sxUnI1M21lZGlrTW10ODh6SE5OMW53RXJ3U1lqdDBpeWY1K0lxQU53UmQzWWErdTlncVlzeFo2L3AwWGRYSFRlLzdNOEIxd3ZQR0ZSVUI1Q0xRTHBDelo0dThZNml6SWVEZ25zRkhWek9uY2hoL1JGN29taVFMUk1GRjRNK0ZGd1BGTndMTHRPNEk2bVZlSHNYQWxqYk9CRCsvYnFVbFl5WllGN0lFYXdrOFFmYllmYWJudFgvajNKNWp0TW5MbzRBQUFnQUVsRVFWUU1kUUg0MU5oSmdtL3l2Yzh1MVpKOVJzb2t3ZzJMeC82eWt6Y1hjazJzL3B3SGJnUGZlVGhqRnlpc3J1WE1BdzJiMklYSU4zS01TRVVOclpic281d04rSmwzQTM1bWw5NTVGUFhCQnJseHBMYTZjVEVjejJnY3N3SVNDQ2VTMVpGTDE4SUlTZnZreVVzRmJjQjlOci91RHhsNDhnd0Y4dkMwTTdtY2JFRFBMaGJyVER3U1lCam10Und6MG04aEduWTNzM3pQV1J3NkhMdUhvZEtTNmY2RzdsaVFkTkp6OUFVYmJtUFkyWkRTaldOZlFSdTRFY2ZqUWxuNkh5QjFUN1Ivdmh4VzdzUXdLWkI2b2ZkRVhCQjBBTEx6STdXZ2c5MGhJeE9QTEJhYjdoMWpLbWhtKy9kMndrKys2OVQ0bWNEQmhDbVFvaUZ6MEhzemQrUDJsVHY0cERyWWtGZ1J2Y1dMd2laMlBIOHBhRU1JMzlnV0NJVFJWdVZQeWYrdTJjOE1MZ2NYMnpsOVVoK1V3aDBYYkxFSHNtT0REbEUvTDJYeXNhWHVoek9oVXlvQmc4aTk2a1p4N2JoWWNQd1FqVkNMb1dRTyt2T0FIM1hkMTdoVUcyeXcyOGNVTk1PVkp3UWFuTEtWNCsyS3BhdUVQdE0yN0VZQkFtbXJVdnVFNUY3S2s2WVI3R3E0bGFBVTRuTkRMUkFnSzQ4azBLaTlKdE05VW9lQy9yOWJGSDJGS3JiUEszTTBqemd6UUhhQ2pYbmJxaHpVRHlycVp2VE8vVTN6RWpaOWxNcGdnd3dHVTlrK2RyajB4RVJpVzhyc1JNK2ZiYkJ0VmRwbzRNbnlUZkl2c1dBUm9OMjE4dmFsRkl4ZnAzcFhRd1RCS0d4M3pQTVV5TTdIV0JheGRYWXpNREVPSkV6bVo3VHY1QVhneG9lZVZ3a2RaRHdjOERQUEp5eHEzTGhyVUYyd1FWYWZwRkwwNm5EcG9xUFN1VTVtUzluNlJFOWJsWmNEdnpqUlk0SUVDS090eWprNUMwTkljZ1ZVQkxuMXRRZWhNQkJwbFlEc2xOcjcwVElHWmpjRGtMQlZvWGRTL2dCWjZkM0ZFTEsrbE14TEQwbEZQN1lmMGpkMy95Y3R0YXBnZ3d6OFBpcG9pZ3NhQWcwcDdSQ3hYNUJpdzk5L1YxSjgyenNLSHdIQm5HaysxTEhub3Q3Z1FtV3JSQVJCS0l4elE4QUJ5SXZXZ0VOUk4rY0pqWUVCOUpCRk5SUjZCekt6SmFWKzBQbGlTVVcvVTFFM2J3YiszS2JYKy9QNzJuWTJwTEthUTBPZzRWVkNPMFEyQmhvNi8vNTcxODhrWWkreGVpYUFTbTFWYXE4ZGtOVHVoZ2gyTmZSdGYwWDhDRGdBbWRFV2NKREZZYThWTkFXQUovSTlWNzJvQm9CWGZic0tsdGpoOUhMQXo3d2YrRnE5ODVLU2ZVWlBzQ0doRkRFYUFnMEhpVDNNQnU5YXlDVGdVTW9LS0FCK0RYa1lMMFlLU0taQys2NkdRU3M4RUNYU2xnQ1owVEx1VEcxeEdJRDdKTkRBOXh6SVcrOE8rZERaQ3RxcS9EUWtnOE91RkUreVdLc3ZXSEs3K244ZVRHMmtTd21saHRFUWFIaVkyUGE4d3kzYmpuclpnSU5jVXlublFueHRxOFhiS3U4SzJnSWt5VDZNaTdyUi9OR1NLQ0JaMUkzMjlFUW5DdG9Bait6RVl5YUxGUUFJdTFPNHJjcURwWTVIZ292REFLd3A2dWFVUUFPQXRpcC9icGhYZUdUbmNJZk9lYm9ZcjBnR2g3bFpIRFl0MXZvN3JsOThaNE9kTUUxa1V2aGs2VUNEU0dtRjNzdXB4MVFLU2Q4TytOR1lmU0g5QStEZEU4MkhPSkhkRFY4VXRHR2oxVlpRcEkwVWhVQjJ5b1ZUK0pHN0hVaVlCQlRmY1k0QmlFMEwyS0thdzVVZ2FxL3UvTzJpd1FicDREMWZzZzJPbkdpWWpFZ29GWlYxSmx0OEpwT0FnK3BseVE2US9nSHd5SzVDVUI2NGpIcDNRd1M3R2xRSG0rQlVLUk1EQVBLeHlNNkNoSGIxQTlpTWdDS0F2N2JOR2NleTZFa1dPMjhLb2o3ci9zZGl3WWFFdG80U2FIRHZzNnZpckxJOStyT3l6K2RVWXVjZVVFY0NsMnBKTHRoWWFkN1ZjQ3ZCSnVTRGlRRWdNNkVuL2lYSW5uS3FWeUI3ak04QmJQQnN3OStYMnNmMEVtall1Tmg1UGNYN2tqc2JVaGpRYVFrMHBMUTZwbW1yLzdOM2IxZFNHMnZEZ0tXOWZBOUVBRVFnaUFDSUFIemRGMEFFNEFpQUNJd2pnTG5RdFNFQ1F3U2dDRHhFQUJPQjlpcGNZNC94SFBxZ1ZyOVZlcDYxNXZmKzlyODlVeTExdDZSNlQ5MmpLWDloL24xSFUvN09hR1JJd2Q1OURIeUlpK3dGVzBCVnc2V0RzYWhUNGNFN1lIUFhyaHFFT0xIUXJRT0IzZVEyNFFEL2tUZmtMK3FhOERqcTk4ZFZnWWFtYVc3OCtGOGNKTmhRU2FUM1ZaQkF3NGVLc21OTzlqV29iVngxVHlvZjhubk5CZ25zejdqcVFtK01GL3I1ajd6aE1xdzdxSXZxR09RSXkvUG5ISy80d0RNaWdEM0xHM0kxdEFrSDl1U0tyZ2tQb3lVU3QvM3cvSXBBd3kvblBUZlBIbXlvSkFQN2FLbzJQN3RvKytGMTZmMjZ6OXAzcTVJY0hLbzU0UEM0Z0V4aEtObHZnZGRlMUFicHpGbWtHOXRYNEpzeUNON0Q4c3gwRDExREMySGdZdVlwQXV2NFR5WEFHU21SZUl5UW9KRDM3Mys5NUgrU0V2UmVuL2YvTVd1d0lRKzlLRDBML3lobnlSOVVmdU05Ty9RNnBqS3V1bmFtdjVNMkVPN084cUlPNDQrY1VRRk1iRngxenlNZjA3WWZEaDRFMzhBc1dhUmJxcnJ0SG10UjNRRExzOWRxT3dQb29XNlMvb0IxNVVxQXEvWWwzK1NndzZSdDV0ZlI5c054N2toMDJmNzlwWjFwWmdzMjVOS0xicTYvdHljZmd3UWFhaG11L2QxY2dZWXpmKzl6NVFFSEdSV3dQNUdybzE0RVdNT1ZDcWhxME9ZQzdVNkFxWDF3UktGcTVyRUFhOXRnWC9MM0hIUjR0OC9uNkxSbm4vOU9Dakxjdk9KL1BselZtV2FXWUVQZUhMK3M5S0lFUTRTZTNUbHJ2WWJoMnFjdUt4L2FtOW9ERGdaR3czNUVtTlZ6bVJ6WWorNXo0UFhWM0dxUHpXaDNBZ3VUWitIdFN5MHo5b0FmU0ZBQXRwSDNKZGZkRTAzellQNDhEUWlrdHEvYlZsU2xQZnJVRmVHMGdpRUhHTmJkcy85dG5aYkRQMjJ6c0UxVXNqaytCT3JmWEZQVyt0MUREdUJNSCt5MkgyNVVXZ253ZldDMERGM1lpOXVCMndDbG00UnoreVpHa084SndtNjRSQThtQWJCWGU1bUZkNGdXQ01Dc0pDZ0FXOGw3b20xT2VOamtQdVJ4bnRzNjU0Ry9zZTRlN2h5VkRhVnY1RjdhaDJwT09kcFVpNmM1aW5kUStZTnlrT3FLR1R6V0h4YW1ONjY2NDNSdGlIcG9nMmRYSFFkWXcwVnFicS9IRnRwK0NCdTRBL1pqVHkwS1NwcXBCR3dnZW50UW9BeTVrMDdVdmNsWHFmMzlKc25pZXcwMjFMQTVmbFVmcXJsVTFoYm5LRkwyYU9VQmg1cGFia0Vra1I4c1FtWlhCYTlxT0lrUUFDZWNaMDRKTE00K2dveWx6eTBFTHViK0VaaEUycHZNTTIzVC91U1hBRWYxbHh4azJEaHBZbS9CaHJZZml2L1NuWHR3OFVWU0g2MksrbndPRVZ2NzFCeHdxS3dpQmtMSTN4bXoxaXh1WXR2K2pYc1d1YXBCVmhvQVRlNkpUSDArT3Fmc2lYa3N3S1J5ME9GVzNwT2VlNmJnVVE0d3BKK3RFekQyRW14SWd5Wkt6K0FJRkdqNHNNWWs4RktFYVVsMW5zb0REdnNjZUFlTEZQbjdyR21hUHdLczRVZFJIOGErSEhKK0VMRUZEZHdCaGREU05Bd3ptWmljZG92QXZxV3VNR2MyLzlNKzlTOFRCOUNQbXFaNWNPWnZUSkljUHZtQTZIeEQ5V0xxM3p1blFJR0cxL3NhVkhZSVVWcFNYU1p0T0ZVNk5QcGUrbXhxRXdLVE84ckRtY0pKbTZUanFnc1JhTXdWZWlHbHJKR29heU9FbEVBajRBQUxrZ1k2ajZ2dTNVU3YySERvd3p1SjFNS1hxbWkzR01mUjBnOEF5NUNyRFM0TWRGNlFLSFdjNTA3T1p2SmdRd1U5NGtOa3R1Y0JuOVZjdktJRWNOWlJjY0FoZlRhTE9ROVFnaFQ1Yi9zaFpMQWhWemRFK2N4SHJkQmI2b1BKZ3ozKzd2dG4vbm1uZ3ZZQzFTUjljS201UzlUbmRyVG56TzZ6bi9zYVBqUFBtNmFaS3RoUVdyRHlTMzd0bjRPM1Axekg3SnNyaEhYWHFibFN5cFQra0QvM1JYMXVvaVJYUVFSUlBnK1RCaHNxNkExL04wSXJoVndkRW5MQTV6WktDalNjcWpYZ2tBYU5sMUJoQW9WNUduZ284NjFEUDJnSHIyb0lOME5vRG51K0NiM3dkNmRzNFZ3cFlGanE0WDI4N0Z3dHlQRkNNcDZQRC9pNWY1SXo4RW9LUEU0Wk1Da2grUExMTG4yWkNlbW9nbURSRkQ1UFdLWDBMN2wxZUtsODVvRzltaXpZVU1GQTZLY1JXc3kwL1hDOWd1cVFzNHFkZ1ZCcHdPRmF1akhhWnBvOGNMNjBVZFgyUTlRQThaOEJxaHVpVmpYOEVtQU5pNUlmK0w4LzlPY1MzNGl6UlpiaWczc0I1cENET2Q4RE9qbndVRTFDVlFWKzN0ZEdMQWYzVnJiMzNwWFdPdnlwZG1MQVhDWVpFTjMydy9QQ3M5U09BbjN4MXJTeEhhSlNaQmVWRG8xK2tZTmF3SFRDbG1lbjZvWUQvdTJ3RDdveXVnNHJiWUxreXNkOXRuU2FoQ0hSTUkzVElZZE4wN3h5U0E4ckQ0RVVhSUQ2UGMyZmQ0RUdZRFk3Qnh2eXB1V3ZCWit5SVVvYmhRcmFVSjBWb2xKa0NqbmdVRnVmeDlybVVjQkI1ZSs3azZCbjRaRGZ4VkhiUjRUZjRGNktNMEdIeUF4NGhRbmxxcHJReVR5NXJXMlZTbXh4QzVFVTh2MXdJc2dBSE1vVWxRMGxiMXFtTCtBUUY0clVTei9BTXFieVcyMFh0YnlSV0ZYQW9lMEgyVXd3cllOVkVGemgyaUdxbVlKWE5XZ3RFRXp3elMvQkJwaFlTdWJ4dVQrSW55dDlYVENuNkcwSTM1dlRDQnpTVHNHRzB1YzBSUGtDenNleHBLRnBsMGtYdHVkeGw3ZTlISENvNlFiOW9YWktNSjFjQmZVbDZDRTl4SkRBcUZVTnRiWEdxMGJnamNlb2MwZWdCbEdUZWFwc242WjFFa3ppWWVERG1QWmpKRWtBQjdWMXNLSHRoMGNsejJtSThrQ2JzOHRMbm5keDFsRDdoUzNmb0Q4TnNKU3BhS2NFRXhwWG5lcUd2NjV0VWF2YnZwUStTMmdCRE82R0JjbkpQQkVEOVZFRDVydDRYKzdTZ1RXY0NEUUFFZXhTMmZCN3dXY3dSQVpOMnc4dmcwZkZOeEdtSmRXKzVSWlJSN1c4bnNDYmdsQ3FxTjhQYzFZalBwN3hiNjB0Y0RDSXpPQnVXQjdmemJQeC9Rb1Ywem9KaUdLcllFUGhnNHhmUlJoY25DdERYaHg2SFZOWjJvVXREeFVmQWl4bENvKzFVNExwNU8rSGlHWnBCUk00Z0ZsTmtIZ0JmbHY2QVlBRk9uSFM5OHU4SXRoZDJ3OVI3L01mQkZnRHdIY2JCeHR5Tm42cFVwdWZnNisvN1ljN2hWZUcvRXZ3NFc1N2t5czVvdlpuMzVSMlNqQ3RrTzNXMm42WVkzWkQxS3FHcUErSC9LRFcyVS9BcFh4SEF5VUkrVjBsbUFoRXNrMWxRN0haK0JIYS9PUU04aytIWHNlRUZqMW9zNmF5NzhCWkdsQ2MzRzR0b3IxV053Uk9TSGdWWUEwQVhNRGdZcUFRRWVlNXFHb0FRdGtvMkZCeSs2UkEyZmMxWlpEZk1HaXpxc3FPTndIV0FEVUplZVBmOXNNK001OUNKaVJFcUdwa1k2RXFCOXQrdUI5Z0dRQUEvNktxQVlobTdXQkQydzhsbDdTSEdBaGRtYnNDRGYrb0plQ3c1MDFJV0pUQU4vNTd5Y2dLWE5VZzI2dE1VYXVEZ1AweHQyR1B6R2lES3BsekJZU3pTV1hEcjRXZXZxTUlBNkVyOHpUU01jMHpNQ0s0SFdRZHU0aFlGZ29sQzlscWJrK0J4YWhWRFlLb1pYTGVZSG0wVXRvdkZWcFFHWE91Z0lqV0NqYk1ORkJ5SDA0TWhKemNVYVJlNUhuT3dLTUFTMGtYK3VPb1EyRTMwZmFEaWhXWVNLNEFpemhJZnRMQVl1Q1pMNHVlSzFTeWdFRWltM1N3ZnhMRTlzdW1KT3lnN1ljUSt3NEEwVjBaYk1qbGxuc2RLTGt2NDZwVEtqcXRJVkx3SmxjMGhKb3prQU14SHdNc1pSZlhsRm5EZEtJT2ttLzdZY3JBY2NTWkwxKzArd01vaW1ERGZxbGdodDFFQ3phOEQ3QUdnUDlZcDdLaDFJSEc1alJNSzFXSlJHbFhsRGJKMHViZHB3QkwrWTl4MWQydm9PZHNUWVBNSVlLamdHZmg4UlMvSkdwVlE5UWdEd0FYRW16WU04UHVZU2ZSUGordkE2d0I0RDh1RFRZVWZEUHkwWnlHYVVXcUVzbFo5MzhHV01xRmFxaXF5UUVkWUFKUlcvcE5WTjBRc2FxaDlBb3pnTVZSalRhTFB4YndHbUZmUW5YOE1KY01pT3FxeW9ZaWIwWnlaam5USGM4MjJMRXNKZXUrOUY3aG9RTTZVS0JmQWk1NXArcUdxTDFyM1FjQXdQbmFmcENVQndEc3pZWEJoc0RESHE5aUdPU0VvZ1VhMm40WUF5eGpMVGs3NjFVQlM3MlEyUTB3blhIVmhTeDFidnZoNVE3Lyt1OFRMbVVxUlgvdkFsQ1ZMd0ZmVERmeDNDWUFnTDlkVnRrUXNTM0NWZDRydjUxVXFNQk4ydy9GbmR0eDFiMHNmSDZEekNlWTFvT0F4L1BGTnY5UzFGYUwrWHNYQUNLSWVpLzlXSVVERk0xd2FDQ3NjNE1OVWRzaVhHVmNkVVd1TzZpN2tRSTNPZEJ3TGNCU05sYjQvSVpRZlNtaGRGRjdxMjVaelJpeDFXTEVZQTRBeXhWNVF6OVZPSXh0UDl3SnNCWmdNKzhjTHlDcWl5b2JJclpGdU1ydDJNc3J5dE5JQTdaejFrMlJnWVl6N29aWnlZYVVXY1BrSXJiNzI2aWFNWEJWZzBGNUFFUlN3b2JncHh4MHVCVmdMY0I2QkJ1QXNQNFRiQ2owSm1NWVY5MXhnSFhVNEdoY2RXRTJsL05HZHhkZ0tUdkp3WnVQaFM1L3B3R3l3TC9scXJGd1BadzNyRzZJV05WZ1poUDdKSkFGZXhZMWtMMkxTQWxjYS9nekJ4MUN6cGlDUTRyMi9hUjlPQkRaZVpVTnhmVnVIRmVkMHM5cGZCeFhYWmpCNEhuanE1cU43bkhWRmZzQUpkTUpwald1dW9pZnFiV3FHNEorSDN6eDBBVlFQUGViTVR6TFFZZXgxUGJLc0FlK253RFdkRjZ3b2JSMk5hOENyS0VHWHlKdGh1ZmVvU1VPS2I5S3FlMlVsR25DOU1JTmRsc3phK3ZQR1pheWthREJHM1pRWTRZemNDVUpaUEg4bm9NT255VWZzWERlL3dCcitsZXdvZTJINTZVZHVISFZ2UXl3ak5LZFJOcW9hZnNoRFZUK0ZHQXBrOHVsMU9IYXA2eWgrRlpXRU0yNDZpSm1DMTdhSGlub1JrT3BMZXE0WExSMkJkb293ZjdWbWtWZnczV3FPOU5teVR3M2xraXdBV0JOUDFZMi9GcllnWHNRWUEzRkcxZmQ5V0N2NFd1QU5leE5xUm00T1FnRVRDdGNkZDRWR2VYaFdpMlczS0tPUzJuZEFjdHpzOUpYWE5zTWhNZG4yaXlGYWNFTGV5YllBTENtODlvb0ZVT1cyZTdHVmRkR1drKzZhUTJ3akRrY0ZiaG1WVVF3c2FEVmVlZFdOK1NBWTdSV2kxb3Axa3RGSFZDRmNkWFYzSTcwVFE0NkhPYzJ1QURBd3YxMCt2SUxiS0drcW1GM055SXRaa0dCaHZUUThhVHRoOUtHWHo5cm1xYTRWbXNCM1Z2U2U1MjFQTGlxZmRIY1VydWtjZFVkLy9CbmYveS9EMDRyUmRqYXJhWE54WkNrRkp0QnhNVkxWU21mMm41SXIrTjkwRmFSUzNJbm40dkZtT0U3L2w2Z1k2bUZLQkRhVDJjV1YxUUxKUThNTzdzOXJycHZVUmJUOWtPWXRjd29aZVMrV015ckJjNlZybWNCSHdqVEVPaS9LOStDVmpWSU9xaFUydysxdFJ5SjZISCtXWXpUNzlsb1ZiMzhyZlk1QUVjTCtzdzlQSk5ZODBwaXdFR1UxaDU3Wi9rNy9pUmdpMmlBeFNtMWpkTFRBR3NvMmQxek1sWVBwdTJIendFM3NmYk9qVGR3UnFoS3MrYS93NkFqVmpWSU9xalhzNlVmQVBaSGovbXdvajBMVEowNXZOVHE0QmU1emRJMzFTdk00Tm9QOTYrMWNnOE1oUFk5MkZEYUYvSzQ2bXJQZk5tbnArT3FDelBncysySGR3dnZ5MXppN0FaZ1lyblM3RXV3NDNyMldoRnRFK2gyZ0RXd0IwR3JHcGJWaTZKK2hud0dFN1RDZWRMTnZFZ1Y1UWVTN2lOK3o0R0h6N2xpRXZaQlFCbmd3RTRyRzByS3RQREF0NzJqU0lHYXZLSHdNTUJTRGliTmJpaHB2VXZyN3d4ekdsZGR0QTJ3bEIxMlBRMTlETENXczA0aVZlY3huYno1RkxHcW9lYmhybkJRdWRJa1lvWHpQajczci9id08wdVVFczIrNXNDREpFSUFxTXhwc0tHa2NuV2JuZHNaSW0xczV3Y0xiUklBL2kzYXdMZmpQUFF4REwxNDY1UUREVitEdmpqdENtQVAybjY0MHpUTm00akhkaCtWNEZxb251dHhEanFNV3B6QjJ0eVhBS0VWTjdOQkNlcFdVaGJvblNpTGlmeGdjU0MvTFBKVkEvOHhycnBvQWZYYWUyZ1RRSzZhaXhwb01COEU5aUJYT0g5YTRMRjFIYnZZbXh4ME9GNUkzMzBBcUZKcHdRWXRsTFlRS1FzMFp5NHU4Y0hpUXVPcWk5aWZHamdjYlJZdUVEQVl3dzV5bTY2VVJQS0g0d2pMa0lLTGFVTjVxUlhPcm1OclNSV1ZmK2JBZytja0FDak1UNFd0dDZUWkVpR01xNjROdHFTd21Zc0FFYVEyQzIwL3ZIQXkva01RcGdJNTZlQ2xWb3F3SERsTHZhUlpiZS8zL1B1UFV2dWdQZitOV2p4cit5RmRMNzQwVFhOSGx3TUFpTytua2dhK0ttUGZUTFJBUTg1aUF1QnFEMlI3LzV0ZTEyWEo5NWQzOHMvOWFMTS9OdkJiTVN1RkE4b0JoVnY1ODU1KzdoVjhQdmFhVFovbTZMWDlJTml3bVp0NXFIVDZsMjZQcSs2NG9MVUR3S0w4Wk9CeXRXNUVlbUVDRGRXWWZGZ2U4RjhwdUo0ZnFQbkx6NDdEZEZ5VE55TElSUTFlcUpoYjMwd0picmRUcTZBWi9rNk4vc3ozU0RkVU9nQkFQUDhUYktqUzNVZzNYcmtmTXhWd1F3K3p1dTF3LzJWY2RlOGlySVBsY2QwRDlpRm41aDg1dUR2NTZqa1RBT0w1WCtFbHJ2elgwM0hWaGNrK2Ivc2hyZVZhZ0tXRWxmdFhBL3hMM29nNGNWUUVYVGlZTHc0OUxNNXNyZE5TT3lYWCtaMWRNMGlhcGRGZUhJanVmd1dkb1k4QjFoRGQwYmpxM2taWlk5c1BhUzFkZ0tWRVovQTVjSzV4MVMwOUdIbWlMek1IOU1qQmgyVVpWOTJzOStXdTg1TjVwa1VnQU1SUVVyQ0J5dzA1T3lhRXRoL1NqYnJCWit2UlF4ZTR6R0tEN1RaaE9LUklsYUpBdmNaVjF6cTkwOGhWRG1HZWlRRmdpVW9LTm1qM2RMRXY0NnE3RTJVeGJUK2tPU0MvQmxnS1FQSEdWYmZVMlVvcUdqa2s3ejlZbnFlSGVzVTU0S0NsMGpUZXRQMWcxaE1BSElqS2h2S2xGaE8zb3J5S3RoOVMwT09QQUVzcGdzd2JZRTJ2bG5hZ0ZoeGtJUUR2UDFpZVE3ZWp6ZFY4QXAzVGVKaG5Cd0lBTXhOc0tGeWtGaE41MFBHbkFFc3B5WnVDMW5vVVlBMndTT09xZTdtdzF6M2JnRTQ0aDhIUXNEd2g3bk56b1BOQmdLWFVvQk53b0VhNWt3UkFXRVVGRzlwK01LanZqSUQ5UGI4R1dFTXhjbkNtSkdHR2o4TkMvYnlVbHozM2dFNzQ0ZjBYcG1JVW1FZWsyWGZqcXZ1UW4vTUVQbmNuNEFBQU15dXRzc0ZtNXo5dVJGbElrNGR4QlZoR2FZNUxXbTk2OEFtd0RGaXNjZFV0cGYvd3dYcG1neFltc0VnaFd4WG13T2Z0QUVzcFhRbzRTR0lBZ0ptVUZteTRGbUFORWR3ZFY5MjNLSXNSYU5oY3JtcndmZ1kyVmYybXc2Rjdack5zWmpYQThrUnVWVGl1dXVOYzVhQzEwbTUrTGJDcUhBQ0tWTnpNaHJZZmxyNEo4V0JjZFdGS1FkdCtDQlAwS0V4UlZRMUFER25Ub1dtYWs0cFBod3hPRHVtdW93K0xFNnBhL0NKbldpdmRydncrWUorMC9BV0FHZnl2d0tHdmp3T3M0VkIraWRUS0p2ZS9sSjIvb1R6UXFiVGpGcks4SEpab1hIVzFadWFkNUdBS0hNTDdTTWtjd0N4K2lWUXR2bzVjNlhBOUJ4NUtlNDQvdUxZZlhpLzhFQURBM3YydnhEa0liVCtFTFhYZG82TngxWVc1T2NvVkpsMkFwWlRvajlMV0hMbThIQmFxeHI3eWh2SnlLQ25ROWNqUmgwVVpJajFiYlNNTnRjNUJoMVNkTVpUM0NnN2kyUUpmTS9YUkVnd0k3WCtGRG4xOUVXQU5jMG8zdzAraUxLYnRoeWNMcnpEWld0c1BTeG53Q3V4UmhYM2xoOUt5UzZsSHhkVkN3UG5TTmVkT0xjY21YVC9UNjhtQmg3dmFMRjJ1N1ljUzl6L2dyR3ErdjRBNkZUZXo0ZFNDYmhKT0l0ME10LzJRMXZJbXdGS0trNGVTUFN4dzZUS2xJS1pxMnB2VnRPbERVVTd5NWh5d0hGVUZHbjZVMnNHZGFiUDBOTmJxd3JpMzlBTUF4SmYzM3FxUjI0bEg4Y1ZIWUw5T2d3MGx0bU5ZeEUxQ3BHeTd2Rm4rS2NCU1NsWHFVREt0SlNDZ2l0cWI2VG5OSVF3cUdtQnhqcFlVM0I1WDNkc1VkTWlCaDk4Q0xDbU1oYlpscGg3dVgvWW4wdDZvODd3LzVnVHUyV213SVV5TG5rMjAvVENXczlyTkJjeTJLM1d6L09CS2JwOWtZQ3VFVm56V1lxUTJnU3pHTDZwcFlISHVMdmw2TTY2NjUyZm1POVE0OTJsVFMydkx2Q1JMNklEaEhnWUk3WHV3b2VUTnhEdy9vRHJSQWcyMUIzYjJLWmUvbGRnK3FaRnhETEdsck1YQ1Q1RVdEOHpwSkdmNUZqMFVsdDFVVkJYR2VyN2t6LzFueCt2ditRNzN6WGVnVm9YT0pJWHoxRGFqcjdiWHd5WE96bXdvTmNPaHh2a0JOd0tzNFc4Q0RUc3J0dldVakdNb3d1MVNUMU1Gd1JMSzhVRGJwTVY3YjBiSDR0d2VWOTJ0cFIrRWl5eDl2a1BiRCs1QjZyTHY3L2hJKzJYbWp1eVBZTlV5T005Nzl0T1pYLytvMURZNWJUOThxK2dCTXBYNGZndXdqdS9Tc1Eyd2pHSVZmdnhrT3UxSEdrWlU2OE5OZXFCL0hHQWRpNUtxRTl0K1NKL1hhNFc5N3JzQjFrRDluZ3BxbmV1VkRIOHFkbHNiME0zazc4bnYzNVZ0UDZUcXIyY0ZMWDliajB0dEo3MkdCekw4b1hncUd5alczOEdHdE1IZDlrT3ByK05hMncvUEt5aUxmeHFweExmdGgrTUNONi9DeU5reUpSOC92U0QzNDdqV0RaNjJIKzRMTmh4R0NyZ1hWb1Yyb3FVRmU1U0N1dmR0TnNLaXBLem1SMDc1N3RKOGg2WnBucmY5a0pMNTNzbWlodTgrK3l3c1FxUmswZHIyWXlLOUhzOEllL2EvSDM1OXllV1R2K1lib2xJZFJjcThhL3NoWlVMY0RMQ1VJdVU1RFVWdnV0cWtnZUtVMUE1Uld3dW1sZ0lNUCtmZTdMZGN3MkFSM3FmMnMvbHpMOUF3c1NYTWQ4alBiTEFPSFIrV0lWSXlWRzJKdjVGZWorZUVQVHZiUnVsNytXVGJEeVhQUUVodG9FcnN4VHBFNm8yZk0vSkY3WGRUN0p5RzdFR0lWUUJyU3hzQ2hWUTNmSW5VTHBCaXBVMnYxMW9Cd2FLa29HS3Fabi9udE04clZ5TitUK3hyKytGSlJYTVRuMWZjU29scHFjZ0ZXTk9QbFEzSnE1SVBYdHNQcFYwRVVpdUpNQmtWK2VaUkc1UWQxREJRVzQ5UEtOWnYwUmR1V0NkYlNGVTd2NXpKWUc3elVGT0JCbGlXbXdJTmg1Y1NGRSsvaTB1NDc3aUM1MTdXSlZGbUFleURMSVB6dkgvL0NUWlU4T0RXcGZrTkFkYXhsa2lEclhNWmFTMVpLZ2RSeVVCdFZRMVFxTnhuT2JJajd5MnlqL25uVmY1NWtJZTZ0dWY4cERZZXIxWEVBQVVtbGxVdDNYZmtvTU9OVksyLzlPTkJ2YUp0VHJiOUlIa0hDT3VuQ3haMlZIaVVQODF2ZUJ2OW9UVGZtSVdRNTEyVTN2cm5vUExEVC9GOTlVUjVvWGhQb3dhT0k3VU1YTEpJOXgvQUxGNXRtbEFXdUZJM0paYVp5eEpNZnU3K1hxMWZXWnNsaU9wKzB6UmhabjRDbkhWZUc2VmFOZ08rQmxqRGhRSSs2SWMrWHRHMS9aQWU0TG9LWHNydEFHc0FkcERhR3dROWZyOEVXQU1BNjRuY1d2ZlBBR3ZnQXFkdGxuTHlBN0FmRW5nV29PMkhSelc4eWxwZUIrczdOOWlRRlQyN29ZbWRrWE1qd0JyK1ZzT01nVVBLN2FkZVZQQlNUbVNKUVRYQ0JRNVRHNXdBeXdCZ0RkRmI2NllxOWdETDRCSm5nZzd2SFNlWTNEMkhkQkZxQ1NvSmppM01oY0dHV29idUJlenJlVGRTZXllQmh0M1UxSDRxMHZ3UVlEY0JBNGRtd1FDVUoxU0MxQThNOWkzRXVPcFNSdXZkcUt0dCsrRitnR1VBbk9kaEpVZWxsdGZCbWk2cmJHZ3EyUnpvSW1XK2pLc3VUUENqa21IR2gxWkwreWxEVzRHOU1Rc0dvRHc1UWVwajFJVkxtaXBIZmdhT0dyd1NiQUNBQ1YwYWJLaG9jK0J4SGxSRlZzc3c0ME9xNlFISDBGWUFBSDQwcnJyUUc3R2U4Y3FSZzFmbU9GQ3lJZExhVmVYc1RkZ2dPNU53Zm1kd1ZXVkRFN3g4ZGhOdmNtLzl4Y3VWSGpVTU0vN3VFQzIvS3N1a01oUWFBSUNMaEcyQms1N3hBcXlCTmFVNURnR1BsUTFiMWhVdEdiZUsxdWNCaFdyRlh2cHc1WURyajlacXYwcFhCaHVpbDg5dTZGUHVzYjlZYlQrOHJLbkhhUjQ2TnF2SzJrOE5oa0lEQUhDUjNBTG5TOVFEMVBhRGU5bXltT05FcWQ0Rlc3Y2gwZnNSTGFqME9zQWFkaEZ0L2RyN3ptQ2R5b2J3NWJNYnFxWEgvc1p5UlBGRlljdSswSUVDRFZXMW54cFhuV29mQUFBdU5hNjZXNEdQMEUwVjdPVXd4NGxTZWU4dVJyVHpmRFBBR25ZUmJmMCt4ek5ZSzlpUVZaT0JzTVJoWXZrRy9QY0FTNW5LN08yOWNxQ2htdlpUMmljQkFMQ0J5UDMyUHdWWUE4Q3Njb3RzSnBTN3U0VFM5a1BrZ1ArRklxNDc0dm10MGRyQmhoekZEVnMrdTZrbEJSeHk2NmlhYnNEdnp2MEZVZHVjaTZacDNtdWZCQURBdW5LLy9aT29CNnp0aDJndFRnRDJyWm9XMlZ5cTFHeDhWUVFMdFVsbFEvVHkyZnZ0RGtjQUFDQUFTVVJCVkkxVjFudi9Nalcxam5xYSs4Yk9wclk1RjgxZm4rV2lod3dCQURDL2NkVkZubi8zY09ueitRcFN5MHhJT0RodDVCYWgxRlpLcGJlQVlrc2JCUnV5bWdZNlhhdDlvRmhsRlJ5LzVZeXEyYlQ5OEtTbU9SZk5nV1pkQUFCUWpkOEN2NURGenVjRFpoRXhVS2FOM0FLVTFqSXI2SHJEVm1mV1p1TmdRMjN0bFBKQXNWa3o1ZWRTV2FBaHRmMTVQdWNmekJrQ2IrYjhtek9JM0dzWEFJRGc1cjRuMzFUYkQ2SFhCeFR0ZGNURnQvMXdQOEF5YWhJeHFGNWF0NDJJNnpYalpDYmJWRFpVMTA0cDllS3ZMZUJRV1l1b1llNjJQem5RVUZ1R3dEQjNaUWdBQUZXNkVmaEYvUnBnRFZ4TzJ4ZUtOSzY2cUxOaC9naXdocHFFUE0rbGRHWUp2TDlxdHROTXRnbzJaSGNMZTYxWDZXcVo1SjgvMk5jQ0xHVUtKK09xbS9WbXRNS0IydC9OZlJ3QkFLalR1T3ErUmU2N3Y2RFpmS1dxNVZrVndxaTlSZmljY2tlWGlHNUdyMkxKaWJ0ZGdLWDhSK0R6V3AydGd3MTVTRzl0ZzUwZWx4NXd5T3NQK2NIZXh0eEQ2SEtnb2JwZXIrWTBBQUF3cFhIVlJkN3d1S2F0Q0xBd04ydEpvT1ZTZitSOXE2ak1FR0dueW9ib041amJLamJna0ljWmw5Ykg3VUlIMmlDdmNhaGNUVVBkQVFDSUkzSzF1N1lpQVFrQ1VZR2p3QytoK0FSYTFoSnkzNnF5dWJIc1lLZGdRMU52eG5SeFg5QVZEak9ldlE5c3BWK01SMHJGQUFEWWgxenQvaVhxd1czN3dYMXdQSUpBbE81bDhQVS9ybTBtNllGRUhCTDl0N1IvbGZjQkk2emxlZ0g3YWFIUFoyMTJEalprVHlzOE5zVUVITnArdUZWWnFkS04zQWQyTnBVR0d0SzhpeWNCMWdFQVFLWEdWWGNyOEN1N0Y3emR4S0lFM1FBVmtHSWo0Nm9yWVRaQ2x6ZWpJMzgvUi9lNmdEVithdnZob0VPUDg3NXBDUjFDU2ppZjFaZ2syREN1dXZUbUdpbzhQdUVERHZubStjOEFTNW5LWFlHR2Fjdzk3d0lBZ01YNkpmQUxyN0ZOYW5IeTBPNklzd1VGRzZqWm4rbXpKK2l3dVVLQ1NzbkRIRmlhdGVJbXRYSFBlMmxGdEhJdjZIeFdZYXJLaG5UaVFwVHY3RUgwZ0VOTk44OVBjeW4yYlBKTmIzVU1oQVlBWUM3anFndWRNVGozSmd6L092WnY4NGJVdGFDSFJic1p0aEU1d1BxamF6bm9NT2JQbzZURU9yM0k1L2g0WDdOeFV0dW0vUHZIeXRxNE03R2ZwdngxYVlPejBpenhGSEM0RlcwZ2RtWEgraWhYeU13bUJ4cWkzdlR1SXZLZ1BnRGc4TklENlF2bjRTK1NOS1lSL0Zud1JRRjkxb3VYTnpFZk5VMlRXcm5lSytIMXpGMVZQNU0vMnI3R3hoTmJPZGxIeFg4S3NMYjk4T3M4TDJGU2ovUCsxdW52L0ppcmU5TFA1MG8vRDd0NGxhOGZKYm41dzNmQVNkTTBiL001UGw0bndUZFh3cVNmKy9uNy9HWmh4K0JIcjJJdHAzNlRCaHV5bjV1bStiM0NJNWY2Zlg2T1VzRlJXVWIrTVBkc2dkd3Z0TVpBdyt6VklRQUFKVXNiNUFJT2swa0RHSjlGWEZoNmZwcXp6V2plZU5mQ0NRN3JXc3JFRGo1YjVwRHU1Wi92RytvRkI2bnU3bU1mWkZ4MUx5dEl6cmlXcjh2ZnI4MUxERVNtOHhoZ0dZc3lXUnVsVStPcVM4TkozbGQ2RUxzSVE2MHF5OGcvbVR1QWs5dGlSZXdYdXF2M2MxZUhBQURBcVhIVlBROThNSzd0cTdYRUJRUWFJSVo5WldXWDFFcXBkcCtXZmdBZ2tzbUREYzFmTjVtUGNxbE9qUTRhY0tndEkzL3VJY2E1WDJzUkEydzJkSkkvZHdBQWNFZzNBaC85UHdLc2dUaHFUWkprQnRGbjFUQ1pJNGV5YU03ZkFld2wyTkFjWUJONVp0MGgyaGpWbHBFL2Q3bDZtcFpmWUwrOXRWVCtlUU1Bb0JDNTUvZkhxS3R0KytIRERIOGoxS3cvTGhTNUVvY3kxSnBrU3paM3kyK201ZndkeHQ2Q0RWbmtySlpkWFpzejRKQTN5cXZKeUQ5QW9PRk9yZFB5OVJnR0FDQ1NjZFZGM215L2wrY3BzSERqcWp0ZStqRmdaeUZtZWdKRXN0ZGdRODVxK2JuaU01NENEdU8rLzBpRkcrV0hDRUxWMnNPdjVvQWVBQURsZWhCNDVlWXBJQ09kblFsWUxVYk4rNW8xZTdyMEEzQW8rNjVzT0IwWVhYV1BySDBHSEhMV1RVMGI1WGR6RUdvMmN3U0VEdVRwM01jU0FBRFdNYTY2MUs3b1M5U0QxZmFEZnV2TFp0NGRVN0doV2JtOHIwbGh4bFgzMWprN2pMMEhHNXAvZW1SVm5UbXd4dzN0bXJKdTB1YjRyTU8xRHpGYll5Wkh2amdCQUloc1hIVzNBaS92V1lBMWNDQTVHQVk3ODF5K0dLK1dmZ0FLNDN3ZDBDekJobVloQTJ4VHdHSEsvcCtWWmVUUHZqbWVoNzlkbS9Odnp1VEVrQnNBQUFyeFM5UmxWcHlZeE9XcTdyekFRVVJ1RzhjRXhsWDMwbkVzaC9OMVdMTUZHNXJsRExMOW1tY3M3S1N5UU1NdzkrWjQydytwTFBiZW5IOXpMa3NJM0FFQVVJZHgxVVZ1VjNRdFB6ZXdJQkszbUpwS21jV1FMVjhHNStuQVpnMDJaRXNZYVB1cDdZZjcyLzdMbFdYWWZCbFgzYzdCbHkzOGZvQy91WGNMQ2RnQkFGQ1I0UGV3VlQ0M2NDRlZEZXpMRXZhNkZrMjJmQm1jcDhPYlBkaVFCOXJlRFhnc3B2WkgydzhiWjB5MC9mQzVvdFkvSjRmbzAxcnhRR2czTHdBQWxPcTNxT3ZPejJBc2dLb0c5aVh2ZGIxM2dLdW5aVlpzems4QWg2aHNhUEtRNENXVXRieHArMkh0T1FWdFA2UUo5OTErbHpTZlE3VDd5Y2V3UmcveXpRc0FBQlJuWEhYUEE2KzVhL3NoOGpCcnByR0VwRWNPYUZ4MTJySlZMcmZNK3JMMDR4RFVpWlptTVJ3azJORDhVOWJ5TWRqeDJJZkg2MlRLdFAyUWVwaytMUElWbnVNUXBkSjVPSGMxeC9DTUkxK1lBQUJVNEhiZ2wvQm5nRFd3UDBOT2VvUjkwNUdnY29mbzRNSFZ6RGVONDJEQmh1YXZOMEthYTNBUzdKanNRM2ZaSEliY2J1bFowYS93M3c1MWNmMTZvTCs3VDdNUDF3WUFnSDBZVjkxeDVJU3pUYXJTS2N1QjVnaXlRTGtqZ1ZZdTlZc2NQRjhpbFd1QkhEVFkwQ3dyOG5UdHZGa0NiVCtrbTU0M2gxblNYdHc5Ukx1ZlhRWnlSK2FtR0FDQW11U0VzNmdlZTdQVkovaUFjaXFVT3hNWVJsNnhIRHovWmVuSElZaFhLdGRpT1hpd29Wbll4Zjlzd0NHMy9mbDAyQlZONnNFQlArQi9IT2p2N28yYllnQUFLaFUyNi9lOEJER0twcVVOQjVFN0ZCZ1lYYkZ4MWIxZVNIdjR5SWJjcHA5QVFnUWJtZ1VHSEhLZ29hYTJQNytZS3pBcE44VUFBRlFwUHplRWJhZWIyOXhTdmh1SHFMcUhVM2xndElCRHhYSzEzckQwNDNBZ2cyNGdNWVVKTm1STDJtQ3RLZEJ3bENPNkI5SDJRMjFSeklPMG9nSUFnTGtFYjZkYlU1dmJSVXJKako2cGlDQUhITFJVcWxqZThCWndtSmRBUTJDaGdnMzVac0JRajdKRUdHQmMwN3dHdmVZQUFGaUtzUDJ1MjM0NERyQU1ObmVpSFMzUjVEMFRRNk1ybGplK2YxdjZjWmpKa1VCRGJORXFHNXE4MGVwTHVBd25QdUNUMG1zT0FJREZPR1IxOUJwdXR2M2dXYWNzcjRKWHpMQmdxWDJjUUZqZHhsWDNYQUwxM3QwTmtQRE1GY0lGRzVwL2VuZytEYkFVTHVGR2JsSUNOd0FBTEU3d3piZFBBZGJBZW01STNLSUUrVHZQSElkS3BRVHFmSTdEemlVcTFFbHVqNmNUU0FGQ0JodWF2ejZnYi9XMWkwdEVmbG9DTndBQUxGalkxaE50UDd6YjlOL0p5WFBNNDJmekdTaE5udU93cEptbGk1UDNlSDVlK25HWXlGTjdabVVKRzJ4by91bHJKK0FRakVERHRCeFBBQUNXTExlZWlPcGgydzgyT2VKNWxZTU1Hd2VESUlJVUlNdDdBZHJ1VkNwOVArVnpiRjl6TzBmNWUvNXRpWXRmc3REQmh1YWZnSU9wN25HSXZrL3JkazB2QmdBQXRoVDV2dmpyRnYrTzU2YjllSm8zbjdSTW9ncG4ydTdZRzloZTZJQk4ydGNVZE5qSWFaREJiSVpDaFE4Mk5QOU1kUmR3T0x5N3lsTW5sVzZVanl0NlBRQUFzSlY4WC93eDZ0RnIrMkdqNm9zeldjc1BJcit1UXJ6UEcwOHlYS2xXK2c0OGZaK2I2YkNScDZYMDhUOFRkTkJlNlh4UEJSbnE4Rk1wcnlJRkhOcCtTQnZkMXdJc1o0bUsrUUl2eEpFYjVjVVNzSnVIN3lzQUtNeTQ2dTYzL1RBR1hmV3ZUZE84M3ZSZnl2TWI3cC85NzlwK3VOVTB6WlA4MzkrYmRKWDFTSnV0VHdwS2RuT1B6MlR5VElmVDc0clVLcXh6ZFAvanQrQXQrQzZVMjc5OWI2ZWRBOW0veGx6cExJbzlqMXlzbUdCRGt3ZXNDRGdjaEkzeGFYMFJxWjFYZXNocit6REZVZFgybFExMm5BMW0vQ3VMMGdZR1AvcmlpQnhNK3Y1L3NkRFh2a1EySHJlVXNob0RCeHdta2FzNHptMEQxUFpEZWs1SUc0MFB5M3RsTzBuWHA1Y0ZQM2UrVytBNVk4L3lkOFdkMDcrU042WmZMbkJQN0NRSGUxL1gxbTFqWEhXdlR3UFpiVC9jeWYrNTVtZTRqL203M3ZONnhkcHhMTzgrcnZhYnoyQ0czTVlxckxZZlBwVDBaV3dnOUdHMC9mQTVRa1pJN2VlLzdZZDBRM3p6ME92d09mdExrT3VsYkpXL3prV1VaSWtIYnU0UFI5Sk1XSGYzVWNFYjVabWwxR3RpMnc5cDAvbHhnS1djT3ZoelVkc1A5M00xUk9rVkVTbXdrTTd2MjVyYXl0cW5DT3RHcmUyZzgzZkNrMkRmbGJ2Nm1MOGJGcC93MnZiRDlYeCtIeFg2blQva1FHeDFRU0l1VjJTd29YRWhuOHRKcWlhSnZzaVNnZzAyUUE4djM1RE5ibW1iZTQ1ekxBYzZIOGZtMHZ4WHpsaWEvZHJxc3hITG9iNGorYmU1UGhldWlkTTQ0T2ZtYzBtYkpQazQzY28vOS9NMVorNkVtNVBjMGpLOUJ6KzREK1lRbG56dms5c3YzY2svVVlLVHA3TnJQdVR2aDIvdVQ3ZDNKdmg4K214eGlITTg1RXJPUlg3WGM3RmlndzJOZ01QZWxiSXhYbEN3b2RxTUNnQUFBQUJnMmY1WDhxdVhKYjQvanUzazdnbzBBQUFBQUFDMUtqclkwTmdVM3d2SGRISlA5OUVIR0FBQUFBQWdpdUtERFkzTjhhbmRxT3ZsSE54N2c0MEFBQUFBZ05wVkVXeG9CQnltb3RYUHROS0E3VWMxdlNBQUFBQUFnUE5VRTJ4b0JCeDJwZFhQeE1aVmQ3MnFGd1FBQUFBQWNJR3FnZzJOZ01PMlhtbjFNeTN2UXdBQUFBQmdTYW9MTmpRMmVqZVZaZ3E4TEd2SjRabDdBUUFBQUFBc1NwWEJoa2JBWVYyRG1RS1RNL2NDQUFBQUFGaWNhb01OallERFZkTHc0anV4bDFnY2N5OEFBQUFBZ0VXcU90alFDRGhjeVBEaXlSMlpld0VBQUFBQUxGWDF3WVpHd09FL0hJL0pwWFpVVHlwN1RRQUFBQUFBYTF0RXNLR3h3ZjQzeDJGNjJsRUJBQUFBQUV1M21HQkRZNk05dVJGZ0RWWHhuZ0lBQUFBQVdGaXdvVm4yNXZEZGNkVjlDN0NPYWdnMEFBQUFBQUQ4WlhIQmhtYVptOFJQeDFYM09jQTZhcUpLQkFBQUFBQWdXMlN3b2ZrbjRIQVNZQ243ZGpTdXVyZDF2OFRacVJJQkFBQUFBRGhqc2NHRzVxK0F3L1hLQXc3RHVPcWVCRmhIVFZTSkFBQUFBQUQ4WU5IQmhxYnVnTVBKdU9ydUJGaEhUVlNKQUFBQUFBQ2NZL0hCaHVhZmdNTVFZQ21UeWErSjZhZ1NBUUFBQUFDNGdHQkRscXNBcWdnNExIQUE5cjZwRWdFQUFBQUF1SVJnd3hsNVEva296SUsySU5Bd1BWVWlBQUFBQUFDWEUyejRRVzZWVTJyQTRVYUFOVlJGOEFZQUFBQUE0R3FDRGVmSUFZZW40UloydWJ2anF2c1dlWUdsRVdnQUFBQUFBRmlQWU1NRnhsWDN0cUNBdzlOeDFYME9zSTZhcUJJQkFBQUFBRmlUWU1NbGNzRGhidGdGL3VVb3I1UHBxQklCQUFBQUFOaUFZTU1WY3NWQTFDejNqN25sRTlOUkpRSUFBQUFBc0NIQmhqWGtMUGRvQVljdjQ2cTdIMkFkTlhtbFNnUUFBQUFBWUhPQ0RXdEtBWWRBQTROUHhsVjNLOEE2YXBMYVViMWMra0VBQUFBQUFOaUdZTU9HSWdRY3hsVjMvZEJycU15Z0hSVUFBQUFBd1BZRUc3YVFBdzRuQi96YlRDY0ZHdTQ0bmdBQUFBQUEyeE5zMkZLdUx2Z3k4NStOT3FpNlZDY0NEUUFBQUFBQXV4TnMyRUdlbXpETTlPZHU1MEhWVE9ORU95b0FBQUFBZ0drSU51d29aOFlmN2ZuUFBCaFgzZkhlWDh5Q0NEUUFBQUFBQUV4SHNHRUNlYmp3MHozOStxZmpxdnN3Nnd1cW5Ma1hBQUFBQUFEVEVteVl5TGpxM2paTmMzZmlYM3VVZnkvVG5TZUJCZ0FBQUFDQWlRazJUR2hjZFo4bkhPSTg1SW9KSmlMUUFBQUFBQUN3SDRJTkUwdERuQ2ZZMUQ3SnN5Q1lpRUFEQUFBQUFNRCtDRGJzeVM2YjI0WVhUMHVnQVFBQUFBQmd2d1FiOWlodmNuL1o1Qy9ZR0orVzR3a0FBQUFBc0grQ0RYczJycnBiVGRPOFgrZXYyQmlmbHVNSkFBQUFBREFQd1lZWmpLdnVVZE0wdjF6eGw2WWFMTTFmTXk4RUdnQUFBQUFBWmlMWU1KTngxYjF1bXVidUJYL3RiaG9zWGQyTFBvekJ6QXNBQUFBQWdIa0pOc3hvWEhXZno2bGdlSnIvZTNaM05LNjZPNDRqQUFBQUFNQzhmbks4NTVVckdOcTJIOGE4T2Y1MlNhOS9qMzRlVjkyN2FsOGRBQUFBQUVCZzdUaU96ZzlWYWZzaHRWRktRWnlIVGRNOEdGZmRCMmVZUTJyN0lWWGNwUGZodGFacHZqUk44MGhGRXdBQUFBQUFBQUFBQUFEOFF5Y2xxdkZEQWprY1hDNjBTZS9KN3N4YWJqWk44Nm50aHlhUGJkRk5EUUFBQUFBQUFBQUFBSURGTTdtQjRyWDk4S1JwbWpjWHZBNlRHemlJdGg5UzBjTGpOZi8yVWRNMHovTVllUUFBQUFBQUFBQUFBQUJZSE1VTkZHdk41SEhGRGN6cWltS2JxNlJ4RGsvR1ZmZlpXUU1BQUFBQUFBQUFBQUJnU1g1eXRpbEoydy9YbTZaSnhRcWRFMGNrYlQvY2Facm0wNDVMU3UvclQyMC9uT1JKRG0rZFpBQUFBQUFBQUFBQUFBQ1d3T1FHaXJCRFVZUEpEZXhWZm04ZU4wMXpiVTkvNTJoY2RVK2NSUUFBQUFBQUFBQUFBQUJxcHJpQjBDYVkxS0M0Z2IxcCsrSHpqRk5FaHFacDdvK3I3cHN6Q2dBQUFBQUFBQUFBQUVCdGZuSkdpYWp0aHp1NXFHRmYzZkJoYTIwL3ZHMmE1dkhNUnpBVlVYeHQrK0VrRnpsOGRnWUJBQUFBQUFBQUFBQUFxSVhpQmtKUjFFQmtiVDg4YVpybXpZR1htRDRibjlvK0RYSm9ubzZyN20zb2d3WUFBQUFBQUFBQUFBQUFhMmpIY1hTY09MaTJINjdub29adTRyVThHRmZkQjJlWVhSUlFkSE0wcnJvbkFkWUJBQUFBQUFBQUFBQUFBRnRSM01CQjdiR280WlRpQnJZMncvdHphbW1jdy8xeDFYMXoxZ0VBQUFBQUFBQUFBQUFveVUvT0ZvZFFZTkk0QzlQMnc5dW1hUjRYOXFyVDUrbHIydzhudWNqaGM0QTFBUUFBQUFBQUFBQUFBTUNWRkRjd0swVU5STmYydzVPbWFkNFVmcUt1TlUzektSYzVQQjlYM2RzQWF3SUFBQUFBQUFBQUFBQ0FDLzNQb1dFdXVSUCtWNFVOUk5UMnc1MjJINzVWVU5od1ZpcHllTlAydzlqMnc4czR5d0lBQUFBQUFBQUFBQUNBZjJ2SGNYUkkyS3RjMVBENFFFZjV3YmpxUGpqRFhDUlBFL25jTk0zTmhSeWtvM0hWUFFtd0RnQUFBQUFBQUFBQUFBRDRtK0lHOXFidGh5Y0J1dUFyYnVCQ2JUK2s5OGE5aFI2aG9XbWErK09xK3haZ0xRQUFBQUFBQUFBQUFBRFZhL3ZoVnRNMHQ4NTVuYWxaOTUwZi9ydUxjcUNQeDFWM1hPT3hVdHpBNUlJVU5aeFMzTUIvdFAzd3VtbWFaNDdNZHllNXlPRnpnTFVBQUFBQUFBQUFBQUFBaE5mMnc1MWNqSEQ2RTdIWmRzb1IvWHptNTBQMG9nakZEVXdtZjBoVEljRzFRRWRWY1FOL0MxWjRFMDI2Z0QzeWVRRUFBQUFBQUFBQUFBRDRPemM2NVo0K2Fwcm1acVdIWkdpYTVtM1ROTzhpRkQ0b2JtQm5RWXNhVGlsdUlQcDdOS0tuNDZwN3UvU0RBQUFBQUFBQUFBQUFBQ3hEempWOTNqVE5ZNmY4ZThQc2QwM1R2Snk3NEVGeEExdHIrK0Y2VGhqdkFoOUZ4UTBMVnNoN05MS2pjZFU5V2ZwQkFBQUFBQUFBQUFBQUFPclM5c090UExIZ25sTzdscU01aWgwVU43Q1Z0aC9lRmxLWnBMaGhvUXA2ajVaQWtRTUFBQUFBQUFBQUFBQlF0TFlmN3VlQ2hwdk81RTZHcG1tZWpLdnU4OVMvV0hFREcybjc0WFhUTk04S09tcUtHeGFtN1llVWhQOW02Y2RoVDlMRjZQNjQ2cjVWK2VvQUFBQUFBQUFBQUFDQXF1UUpEZSthcHVuMi9McStORTN6T2YrazNPWGpmVTg1K0ZIYkQzZWFwa212Ti8zemZ2N250VDMvMlk5TjB6eWFLcmRVY1FOcktUaGhYSEhEUXVRdjVBOHpmQW56VjVIRG83a3Z1Z0FBQUFBQUFBQUFBQURyeUxuUHJ5Zk9LLzJTQ3lYZTdtTnF3UnphZm5pVWNrRHp6NVRINWlRMzBON3B1Q2h1NEZJVkpJd3JicWhjMncvWGM1V2JFVUh6bStSQ0JBQUFBQUFBQUFBQUFEQ0ZpUnU2SHpWTjg3TDJadEJ0UDZRcEQrbTRQWjdnMSsyVVc2cTRnWFBsaFBFUE00eGcyVGZGRFJWcit5RlZ2ejFjK25FSVFKRURBQUFBQUFBQUFBQUFjREFUTlhULzJEVE44NlhuUStaaWg3YzdOaDVQdWFXM3hsWDNiYU8vcmJpQkgxV1dNSzY0b1VKdFA3eHNtdWJGMG85RFVFL0hWZmQyNlFjQkFBQUFBQUFBQUFBQW1NZU91YzlEbWxxdzlJS0dpK1JDaDNjN0ZJMzhOcTY2NTJ2L1BjVU5uS28wWVZ4eFEwWGFmbmpVTk0zdlN6OE9oVkRrQUFBQUFBQUFBQUFBQU94TjJ3KzNtcWI1dkdYaS9VWko5MHZYOXNQMXBtbGVOMDN6ZUl0RHNmWVVCOFVOMUo0d3JyaWhBaE9OQ3VJd1hQd0JBQUFBQUFBQUFBQ0FTYlg5OEtScG1qZGIvRTdObTNmVTlzUGJMWXNjcnN6clZ0eXdZQXRKR0ZmY1VMQmM1WlhPWDdmMFkxR0JvM0hWUFZuNlFRQUFBQUFBQUFBQUFBQjIwL2JEeTZacFhtejRTOTZQcSs2UlF6K05IWEo4THkwdVVkeXdRQXRMR0ZmY1VLZ2RxcnFJVFpFREFBQUFBQUFBQUFBQXNKVXRDeHZ1anF2dXN5TSt2UzBuYUZ4WTRLQzRZV0VXbURDdXVLRXdPNHdKb2l5S0hBQUFBQUFBQUFBQUFJQzFiWkZqK21WY2RiY2lIZUhjcFA3T0JML3E4N2pxdmszd2UzYlc5a002eHFsNDVOb0d2K3ZjSEcvRkRRdXg0SVJ4eFEyRmFQdmhUcDRvc3NrWEcrVWJtcWE1SCtVQ0N3QUFBQUFBQUFBQUFNU1Q4MHcvYmJDd2orT3F1NytQRjdMbDlJaTVuRFJOODY1cG1yZHo1MUMzL1hEY05NM05EZjZWR3ovbWp5cHVxSnlFY2NVTjBlVUt0SFNPdXFVZmk0VlQ1QUFBQUFBQUFBQUFBQUNjYThQRStiMFZOalIvclNYbHZkNHI2RXdkTlUzemZJNGN6UTNQMHpDdXVuOU5zZmpmZnBiRm9hV0U4YllmUHVjS0paM3dDYW50aDFRWjlsVmhBL2s5OERWOWIrV0NGd0FBQUFBQUFBQUFBSUNVYi9wNmc0VDVML3NzYkNqVTR4bHpOTy9rNlJIcjZOcCtlSEwyZjZlNG9VSnRQN3lWTUU1a2FSeFAydzlwYk14REo0b2ZLSElBQUFBQUFBQUFBQUFBdm12NzRWYlROTTgyT0JvS0d5NTJtcVA1Wk50ZmNKVThIZUxSQnYvSzY3UC9oK0tHaXFRM1drNFlmN3owWTBGTWJUODh5dS9SRjA0UlYxRGtBQUFBQUFBQUFBQUFBTHpjNEFqOE1xNjY0OFVmc2F1OTJYT0J3NGVtYVg1YjgzOStMVFZOUC8wLzJuRWM5N1V1WnRMMlF4cmZrZDRFMXh6ei8zaVFQeUFja1Bjb0V4aFNOV1d1NkFNQUFBQUFBQUFBQUFBV0lEZlZYc2N3cnJvN2N4eVJ0aDlTVHV5OUNvNys3WDBXZzJ4dzdrN0dWZmU5RWJiSkRRVkwzY3hUVi9PbWFUNUpHaWNpNzFFbVpKSURBQUFBQUFBQUFBQUFMRWpiRDg4M2VMV2JUSGhnbm1QMmFzMy9YWnJlY0QvOWg1LzJ1eDcycGUySHQwM1RQSGFBaWNwN2xEMDVMWEl3eVFFQUFBQUFBQUFBQUFEcTltak5WL2RsWEhYdlNqb1M0NnBydC9uMzJuNjQxVFRONjZacEhrNndqSlRuKzJTQzMzT3VjZFc5YlB2aHhaci84N1NPRHlZM0ZLYnRoMGQ1Uklla2NVSnErK0dKOXlnek1Na0JBQUFBQUFBQUFBQUE2blp2elZmM2RpbnZnM0hWSFkrckxoVjkzSjdpOTUxT1ROaWo5MnYrNnU5NXg0b2JDcEdxYk5wK1NCM0tmMS82c1NDbXRoL3U1UGZvRzZlSUdTbHlBQUFBQUFBQUFBQUFnTXBzbUhUL1lXbm5QeFU1TkUzelc0Q2xYR1h0d3BOMHpuODYyREpaVzlzUEh6YW9QSUpaNVlUeUR6bkpIQTdsdE1oaGFKcm0vcmpxdmprVEFBQUFBQUFBQUFBQVVLeTFpeHZHVmJlNDRvYXNoRnpKVGM3TkxaTWJBbXY3NFhuYkQ2UENCcUpxK3lGVlUzMVYyRUFnSmprQUFBQUFBQUFBQUFCQStkWXRidmpvWE1lVm0xVi9XWE9CdDB4dUNLanRoenU1U3VYYTBvOEZNYVhDbTZacGZuVjZDT3kweU9IOXVPb2VPVkVBQUFBQUFBQUFBQUJRcGFWT2JXZzJtVzV4WU1kTjA5eGM1L1VvYmdna2R4bi9vQXMrVWJYOWtMNEUvM0NDS01qRFBBSG5hRngxVDV3NEFBQUFBQUFBQUFBQUtNSTlwK2xpYlQrOG5lSVlqYXR1anVLUUQrdXVWWEZERVBrTjluanB4NEdZMm42NDFUVE5aOU5FS05qanRoOGVLM0lBQUFBQUFBQUFBQUNBcWh5WCtHTGFmdGlrcUdCZmhSNGY5L1I3dDZhNDRjRGFma2hKdG04V2ZSQUl5elFSS3FUSUFRQUFBQUFBQUFBQUFPcFJaSEZEa01rVXJ3T3M0Vi8rRjJndGk1STY0YmY5OEUxaEExSGxhU0pmRlRaUXFWVGtNT1lDTXdBQUFBQUFBQUFBQUlBbFNVMmkzd1Y3dmZjVU54eEFIaVB5WjlNMDF4YjM0Z2t2Slh1bnBPK1UvTzFzc1FCdkZEa0FBQUFBQUFBQUFBQUFDNUlLR3lMbVRYNzhLY0FpRnFQdGgrZE4wL3k2OU9OQVRHMC8zR21hNW9PaUd4WXFGVG1rOFVyM3gxWDMyWnNBQUFCWW1qUmx0R21hVzJ1KzdPdE4wOXdKZElqU2ROVHpudVUrajZ2dTJ3SFdBd0FodGYxd2Y0TjFiWEp2TUlmUCtacC8xamY3dWJBZkYzeGZ6UGtjY05FOWZ1TStId0RXZDhrendDYlBCbE81N1BxZUhJK3I3dGpwQldCTDkzUCtLMWM3aVo0bnFiaGhCcExHaWF6dGgrdjUvZGs1VVN4YytvNysxUFpEK0lzM3JHUEQ1TFNhQ0dwWHlQdDVmdmtaNXZxQlgzOVVBdWo4eDRaSllrdXl1T3R5ZnNiK01kbm54Ky9VOC80MzZUcDNjNFlsTGs3YkQ5dSs1SS81bngvT0JGNEZXQXV6NFB0SXVJcnZzeDJjODkyeXp2VS91UmYyUlJWc2gydjlsL1JaT09mSE14L0ZPYk9QYy9wc2V2clBhcjkzZHZqc256cjlEbWpPSkwrY0ZsRzVUaDZZdlVtNGtQdVV5dVY5NXV0bm5pZE8vN21ZZko0SnJ2R256bDdyLzc3RzV4L3g1Q3NzL0Zyc3U3WmdGOFJvbHFMbTc3WkJidXRrZm11YTV1VUJ2K2ZXanFtMzR6anVkeWtMSm1rOGhBZmpxbE9OZFlHMkg5NDJUZk00NU9MZzhJWmM1T0NoaFdMazRQcG5CWlYvZXpxdXVyZEIxc0tHdkovL1krL3Y1N1lmWGpaTjgyS2ZmNk5DYVhQOGtVM3daY21iK3U4a29tL3N0M0hWUFovN2ovNlFmSGoyUC8rNHdTM1prRjJkNUh1WEQ2Zi85RHg1R0RrUjRJOGx2bmJZMHMvanFudFg4c0g3b2REMDdIOCttNHl4cUlRZzltYkkxL25UYTcxblFmWW1QM3Zlejk5bGQzeUhoWE55NXZ2Z1dESDA3dHArZUpJbXJaZitPbUFtbXZVVjRreVM3ZGxydW4zbGNudzhVeER4b2ZacnZUMjEvL2c0cmpxTnJRclI5c05uejB6L1V2eCszMWx0UDN4WU00NDMrK2QyZzdVZFF0ckhlaExwbm5HRDQvV2I0b1k5a1RRZWh1S0djN1Q5a0JKS2ZnMjNNSWhKa1FQRmFQdkJqZDEvL1RLdXV0ZlJGc1hWdkovUHRkY0NCOGQ4SnltWWRFY0F1MjQ1RUhXczZHcDc0NnByOS9XN05aaWdFRU4rbjc2elg3VWZPUW53VTQydkRmYXNpSDEwU1k4VTRDUmY2MCt2OTU0UnVWQk9IanY5VVd4ZHZ5OW5FaU0vNTQ3QXZpTXkxM2pZMm0zZkpZZVY5eVRUdGZ4Ui9xZkNoZVg2K0VNaGRIR2ZUWEhDY3gya2FST2JhZnNoNVlNOGM5aitiWjh4dWJsdDBLUnhHRmZkckpNN3BpaHUrUEZjVFp6Yk8vc3h1Y3dHMTVwWFB4MW1pZlZxK3lIZHNQNis5T05BVEtwc1lTc3BPZXByMnc5SDQ2cDc0aEFTMVE5ZEN2bEh1amRUM0ZBWTcrY0xwZmZ6UHFjM0hDblEzbHBLZHYrejdRZWJuSlhLM2YvL1hQcHgyTkg3UGYvK2R3b2JLRUNYZjU3OU1HTC9KTCtIMzlYVVRlbEFIaTN5VmNQdTd1ZGt5N0R5YzZLa1I2Skx6NFlQODgrdlAxenZ2K1E5S2tVUEM1SVRIaC9sbjRkTFB4NExkelAvL0ozMDhzTjN4RmtmRjFnRUlmNEcyN21WQzZmWXM3dy8vQ2gvWDltRDVEejNMcm5Pbis3OXZZeDZYUmVidlZDWWhHQXU1VHlkSTMydUsycXl0RzVENGk0OWg1ZmV3RGcxY0czNzRkMUVzZWwwVEw1Rm1GUGxWZ0FBSUFCSlJFRlVhTlM0NGJYbWcrS0dpZVROcWMrcWNJbEloMUdZeE9PMkh4N3Z1MnMyQUZ6aStqNFBUaXJpeXh2MHVnVnU3MW5lTUJHUXJZakNoa2w4R1ZmZHZoT09mWGRSc211NXdQRHhENEhQVkJUMDJwUUhBS2pDemR4MTcyelJ3MGt1ZUhpcjRLRjgrZG54U2Y0UkwyWVhseVZIcHNLSDUrT3ErK3dJQSt4SFRyeDdvaGtVRS9weDd5LzlQL2RMVDc0Rm1ORW16ei83YmhnNWk3eFAxTGI5OEhtQ3dzclRSbzAvSDdqQjF0ckZEU2t1OXIvOXJtVVoybjVJSDRhdk5xckNHVGI4WXF0Uy9vTDdxckFCSnZNbWpVaktJM0lCb0NyanFydWZKeml3dmNkNU5DWVZPTlBJZ08xOUhGZmRMY2NQdHBLNisvNlJuMEhUejdGblVRQ29Tb3Jidk1nQjV0UHIvZHVjSkU5d0tmR3g3WWNQcCtjdUY4Vy9FQzltejFMUnc2Zjh2ak94R0dCSGFmODM3ZWZuUFpmVGEvb2ZDaHZZczVTaytsVXNDV0E5dVFIVXlaci84NnBpS09PcVM1TkpmcHZvMS8xKzRPZklkYzlOS3VwdkZEZnNJQVVUODQydG05cFlVbEhEamZUQlhuS1ZhOTRBSDQzRWc3MUpSUTdmMm40dzNneUFxdVNwQTYrYzFaMjhzQ2xkUGhQd0puR1VpNmFBYWR3OFUzQS81bVE2ejZRQVVKZkhQeFE3dk16UEpoeFl1dS82b1pqaER4UGtPTEJudVFrakFCdG8rK0Y1anZPUHVWR280a1FPSmNXUzlqM3hHS0FXNno3NzNLdXRhY1M0NnA0M1RmUHpSTC91V1c2V1BxczhHV3ZkKzYzdjA4d1ZOMndodmZuVGpXNEtKaGEzK0xvcGFsQjBFMTFLN0dsMVE2N0t0ZHdoNTdNQUV3QTFHVmRkU3N6L3hVbmRpUUtIZ2lsc21NU3JYQ3dGN00vWnJxM2ZCRU1Cb0VvdmNsZlhkTDEvWng5NlhqOGtQMzVTekVCQW5nRUFycEJ6dk00V0tQNXEzNWRBN0tFRHJPZmRCc2VwdWhqOXVPclM2Nyt4d1FTTHkzUjVyMlBPSXBCTnpzbjM2UktLR3phVWJuanpXRkUzdW5Ha0QreGRSUTNmTzhZb3VvbnB0UERtKzBOSittY3Vjbmk2OUFOVGtkT3hnVHJrQUZDTmNkVzluckFEd0ZLbEFvZm5TejhJcFZIWU1JbFh1VWdLbU0rMVBGSTRCZXFQVFhRQWdDbzlQRlBvOE5vcDNvL2NST3liNUVjSzRmMEpjSTZjUC9NNVg4Ly9WS0JJWUlxWEFkWXdycm9QT1FkekhZOXJqSkdrM09oeDFhWHJ4c2NKZnQyMVBEbDA3d1h6K1crc2V5LzIvalFIWEhIRG1zNTB3M2ZERzhkcFVjUDFjZFhOUGlvbGlwUjRrMGZGZkxLQkZjNmxoVGZqcW51Yml4d2VURlJWeCtFOXpvRWwxZlVBVkNGM0FIamdiTzdrVi9jR3hmbnMyV29uVHhVMndNSGRQRFBSUVJFK0FOVHAyWm5wVFlvYWQvUkRBdVFiejRRQVVKNmNPL1B1ek1TbHpta0VnS3BzRW4rc05qWXlycnI3cWRIY1JML3U5eGthYUd4eUx2NCt4NG9icnFBYmZraUtHckljb1A3cW9TeWtwK3UrUjFObFlhNnF1N3RCaFNHeHZjbUJKVUVsQUlxWHV5RGNkaVozOGthQlF4bFN0L09jRk14MkhxUWlic2NPUWprdHd2K2NKOU1BQUhXNWRxYW8wWFBuaHM0MHQ1TUFDUUNGU3QyQWMxN1gxenpwQ2dDb1VHN011RzV1WlZmejFNdmNhRzZxSnBXcGdjYUhpWDdYdjZUQzB3MGFTQnlkemJWVjNIQUIzZkJEVXRTUW5kbHNmUnhpUVp5VnZtVGJiUko2MHZzNlRYbG9tdWJHUk9PRE9Md1VWRHFXUUFKQTZjWlZkNXp2VVV5YjJwNENoK0FVTnV6c2RpNkdBbUpLeVhwZkZUa0FRTlhlbU55MG5uU016a3hwQUFBS2RPWjYvcnU4TGdCWWpFM2k3YzlxanMvbnVPeFVPUnozOG5UUXllSkhiVCs4M0xEdzlQblovME54d3pueVFkVU5QdzVGRFZtZUpHS3pOYWFQdWFoaDV3dml1T3ErcGZGQjZmZWxZb2xLajllUzNNd0pKQUpLQUJRdDM2T2toOWt2enVUV1VxTEovVUxYWGpXRkRUdEp6K3czY2hFVUVKOGlCd0NvMzJPVEhNNlh1alpxSGdZQVpUdFQxT0I2RGdBTGsvT0hYMjN3cXF0dVFIZ21oMk9LSE5Ock9YNTBaOWRmbEhQd1gyendyenhOcitYc2YvSFRyb3VvU1Q0cEgxVDBocEVTSk80dnZhQ2h5Wk5FbXFZNTl0NE1LU1gzM2ZueHkzVXF1VmppU2I3SUttb3BXd29vUGM0WFk0VU9BQlJyWEhXMzhsakNlODdpVnY1bysrR0JEdmR4S0d6WXlaZjBuVkR3K21ISlRvc2NmaHRYM1hQdkJBQ29VZ3JndnhacisvN2M5eWgzZFFZQUNwV2JDU3BvQUlDRkcxZmR5OXhRY04xOGhiUS9raHFydjk3RGtVdjdEV2t0MnhRRWZNNC9PenVUWTNvOXIrVlcvdGxFaXBsLzJMV2gzUmFGRFVmbjVWSXFidmduY2Z5RFNRMmgvRHl1dW5kTFB3ak5YKy9Qejk2YkljMWFmSk8vd044cXdxcUNnQklBeFV0VHB0cCtlTGZoR0VIK29jQWhpRnlvbzdCaE8ybDZuVWtrVUw3VHNjeDNUR0FCZ0NxbFdNS250aCtPcHBnOFhSb3hZQUFvbjBhUUFNQ1BjcjdDSmczc2ZrMEZFZU9xZXpUbHdjd05zZC9sbjRQTDZ6bFlEc0lXdWM0Zkw5cXYrdDkweXlwVFRqRDlhbE1yak5UUnZGWFk4SzlSZXQ2YjhhVDM2ZlZESkthbnY1bEhDZDF0bW1ZbzRGaHh2dE9BMHVjY1hBR0E0dVFILzkrY3VhMzlrVHRLY0NBbWtPemt2Y0lHcUVwNlJ2MHpkOU1CQU9xVUpndC9hL3RoTVpQWDhyUUdNV0FBS0ZTNmIwbjNMd29iQUlEejVPbnlYelk0T0EvejNzZzJVeGE0Uk1wNzJDTFgrZEpHZW9zdGJqaHpNSjhGV0E3L0ZEWDhaN3pJMHFTcTgvemVORTR2bnFNbzc5TmM1SkF1dERjVU9SUXRYZEMvU2lBQm9GVGpxbnZlTk0wckozQnJmeXdwc1NRU2hRMDdPWnE2cXdrUXhvdmNWUWNBcU5OcFFlUHoyczl2YWlEV05NM3ZBWllDQUd3aE42cjlNOSsvQUFDY2E0c0NoOU9HeEFlYmJsQ1QxTlE1eDVYKzJQQmxYVnJZMEN5eHVHR0hnOGwrS0dySVVrV1lxdk93VXZIQWpZZ2ptOU1vb1ZUa2tENUhLY2tvd0pMWXpndVZvUUNVYWx4MXFVanZxUk80dFQ4Vk9NeExZY05PWGtWOExnSW0xZVhuVTFNR0FhQmV2K2JrL3lybE9MQUdZZ0JRb0p6VDlVMmpXZ0JnWGJuQTRmMkdCK3hlYWtCZTgvN0lQcDNKdzk5bVl1YXJxd29ibXFVVk4rUTNvdkdqTVNocXlNNTgwRCtwT2cvbnBHbWEyN2w0NEZ2MHhhWWtvMXprOEZ1QTViQzUwOHBRWFRJQktFNityMy9nekcxTmdjTk04cjZBd29idFBNM0ZURUQ5cnVVcGc2NU5BRkN2eHpWMktXejc0VmdjR0FESzFQYkRvNXpUSlc4R0FOaEluanIvOHhaSDdYRXVjdmdzSm5LMTNNRDllSWM4L0x2cnhwc1hVZHlRYm9EVEcxQ1hqaENPRkRYOFE4Rk5hQS9HVlhkOVhIWEhwUzE4WEhYUGM1R0REc3BsNnZKTlUvV2p3UUdveTdqcVVsTEViYWQxYTMvcWtyMWYrZm5MdnNCMkhuaU9oMFZTZkFjQWRidFhVNEZERHE3ZkRMQVVBR0JEYlQrOGJwcm1kOGNOQU5qV3VPcmU1WnpKWVl0ZjBlV1lTTXJaZXkxdS80OFVKMnI3NFYzT3dmKzA1ZDdMKzV3M3ZuYlQ1NnFMRzNKSC9HTTN3Q0djRmpVOFdmcUJhUDU2Yno1UmNCUFc2VlNSNGpmMFUvTFJtU0tIa3dCTFlqTnBOUGczaVNRQWxDUVhodDV3NzdHMVl4c2wrNkd3WVNlM2EzZytBcmFtd0FFQTZuWXZQeThWTFJkcEtHd0FnQUxsNi9nejV3NEFtTUs0NnU2a0NRRTc1Q3c4eTlPdFU2SERoN1lmN2kvdHhPVDg1dU9jNC94bjB6UVB0L3hWNlJ6Y3lKTTFOdkxUZEM4bkZva0xZUndwYVBoSEdzdlNOTTBIWS9SQ3F2YTltanVzdnZYK0s5SzFuRWp5ZnB1TFBBQWN3cmpxdmpWTmMxM0h4SzFjeXdVT3QvSnhaQUwyQjdhV05wdThGNEhrczJzVEFGVHRjV3EwazZaQ2wvZ2k4elBmdlFCTEFRQTJKSTRBQU94RG5oQndmWUo4eWJUZjhFZmIvejBNNGt2VE5HbmkxTHZjK0xGNHVjRlZ5cHQ5UG1GZWFZb3ozOTlrVXNPUHFpdHVTQlVqVGRPOENiQ1VwUnZ5bTFQUU0wOFJTWUZnRDJVaExlYTlPdUZGbS9rOXpKV1FEM1ROQmFBVTQ2cTdsVHN1U1REWWpBS0hDU2xzMkZyYW1MdmpQUWhrMS9JK3doMEhCQUNxOWF6dGg4KzVXVkl4Mm41NDVKa1BBTXFrc0FFQTJMY3orWklwZ2Y5ZDB6VGRqbjh5M2J2OG1uN09GRHcwT1FmMXcrbFB0QmhyemwrK24zOGU3ZkVlYkxKYzNHcUtHL0xCUDVhc2UzQ0tHbjRnb1N1c25hdkRTblhtb24wOVgxQjN2V2d6bjFRSjZuc1dnR0tNcSs2KysrR3RYTXZGMGJjS1hIc1liVCs4bE9TeWxTR1Bhd1U0cTJ2NzRYV3BIWjBCZ0xXOFNjL3doWFVlTEtvWUF3RDRpOElHQUdCT2VhL2plL3l6N1ljVTUzZzVjYTU1bDMrZTViOXgwZi91Uzg1emIzTGU1cW5qTS8vOVZkTHJ1SDdtZjNRLy8vUE9nZkxuVXg3dWszSFZ2WnZ5bDFaUjNLQVRZd2lMVFJTL1NBcjRubjVaRWM3VDByb1A3VU5PanIranlLRTQ2VHg5YmZ2Qit4aUFJdVFDQjg5c203dVpBanhwQWtacEM0OGdGemE4V1BweDJNTEg5Smt0YnRYQVhGSkg1N2YyL3dDZ2F1OUttZGFVNDNDYTNnRkFZWEpESklVTkFNQkJqS3N1N1Nla24zMFZPbHptNXBuN29KSWJSS1lpamVkVEZ6U2M5Yjk5L2VJNXRQM3dwTzJIVVpMTVFhV2locnZqcXJzdXNQbVhNKzlMaFEzeHZCcFhYU3NoL045U2tVUHV6SG9qVDEraERLbUwxbkV1VGdHQTBNWlY5eVRkaXpsTEc3dVpPMWl4QVlVTld6dFMyQUNzWVc4YjFRQkFDRjBPN0llVzk4WEY0UUNnTUxrUmtrblBBRUFJcWRBaDV6NjNUZFBjVHZIU25CUE52NTNrZkk4Yk9mLzIxajRMRzVwU0p6ZTAvWkE2VjM3V2plUGdkQTAvbysySE83bjd2ZmRsUE8vSFZmZG82UWZoS2lZNUZPbG1udUtRQ25kZUx2MWdBQkJidWxibFJQMDNUdFZHVEhEWWdNS0dyYm1mQk5hVnJrdlBjMmNqQUtCT3Y1NTJNQXpNOHd2ODVZdmpBSlFpTlFyVnZCWUFpR3BjZFNtWDRjblo1Ylg5OENqL2R3OFhkT0pPY3FPck5Nbjd3NkVXVVZ4eFE2N2lkYk43V0w4SVlQNURJbmhvYVFyQi9aeTB6NW9VT1JUcFJlNm1kY3Y3SFlESVVuRjBMbkQ0dzRuYVNFb2svYUNyL3VWeWNFeGh3K1kwTGdBMlZVTENJd0N3ZzdZZlV1ZkN5Qk1jVEcyQXZ4d3MwUVJnRTdtSnJjWkhBRUJSOG5TQy8wd29hUHNoeGUxVDRjT2RncWRTZmN6UGxCOE9XY1J3a1dLS0czSUZ6TzhCbHJKa1IrT3FlN0wwZzNDV1lwdXdUbkpSdytlbEg0aGRLSElvempWVEhBQW9RWG93YnZzaGpYVDgwd25ieUQwRkRoZkxoUTJDWTV0N0VIR3pDb2d2VGNyeDdBa0FWWHVXci9maG11bmttREhRTkYvRTdvR0MySU9FODlsZkF5aFFqcTllZW4rVGl6dHY1UUtJNi9rLzM4ci8zM2R5cnQ4VVVxN3NhWjdzOFk4L2VTSkZjY0lYTitTazJuVGdid1pZemxMcGZ2OERpVE9oNlRvNk1VVU94WG1SdjZQdStONEdJS3IwQU4zMnc0MzhZRDNWUS9zU0tIQTRoK2V6cmQxVkVBN3M0TG5nSzFUanhEUVc0QUpSci9lS0cxaXlMMDNUcERqb2F6RWdXTHlQcFRRdFNST2g1SHpCdjZUcitVdTVUUUIxeTBVRng0bzh0eE82dUNIZjRCb3Jlamk2My8rZzdZYzcrY3RHQWxZOEpvdnNtU0tIb3R6TVV4d1Urd0FRVnJxM3lOMEtGTE52SmhVNHZIWHYreGVGRFZzNXlZV3dSWGJwWURQanFtdHJQV1I1anlZOW45N1BIVzV1ZVU2ZDFiWDBIZXlaRTRxV2tpbWU1OUhxbEt2YUthNTVIL3JPbWE1Mjl5ZnVhc2ZWRkRjc1EycHk5eTdIZlQ1TG1BY0k3Mk8rank4aWp5ZnYzOGo3T3B6VFRzNGZUcnM0bStRTEFKUWdaSEdEQlBJUWZoYlUrSWNKSXFFTjQ2cTdzL1NETUNkRkRrVjUwL2JEYzU4UkFLTEs5eFczMm43NDdKNWlJNC9iZm1pV1h1RFE5c01qaFEwYlM4R3NXNUpWcU1HWklQNkZBZGxjUlBjb0orYlowNW5lazl3MWx2aXFUWDRHNnBYdldhOU12TXJQQmFjLzRvclRTc1dNanlMRkMvUDluZk84dlkrNVM3Q2tSaWpEQTU5WEttRGZZQjVIcVZoUm5oY0FVSXR3eFEycEEyVksxQWl3bEtYNmJWeDF6NWQrRU01cSt5RnRHTnlMc3lJeVNUa0hwc2loR0YzYkQ2TU5VQUFpUzRWNDdyczN0dWdDaDdZZlV0Zlczd01zcFNSZnhsVjNhK2tIZ1dYSkUwcGU1NS92Y2tKYytyOGZlanZzTEUwVHVtVVNEQUNIbEJPNC9wWEVsU2U4dlZUY09Ja25QeDdmQS9OTXM3bjM2VHlLcHdFd3QzeFBKb2RnZWw5eXNhTENFUUNnV21HS0cvSzBoazhCbHJKVXV0Ly9vTzJIMThiamhaU0tHdTZYTW1aeENYNG9jakRoSks0LzJuNDRXbnFIWndEaUdsZmRmY1h1RzF0a2dVTXViUGdqd0ZKSzhqRjl4cForRUtENXArQWhkWFkrbmRUNTJyVm5KNmZKb3dBUVJrNzArcDdzbGVPUDcreGJieTFhUWFqbm12VnBhQWZBb2Rrdm1NNXZ1YUJCc1NJQXNBai9pL0FpMjM1NHA3RGhZRktpK0cyRkRmOUlJM1p6bDNPRkRmRThIVmZkZFlVTk1hVUg2ZHdKOW03K2JpR2VsQUQ1TFNmd0FFQTRPVW4vbFRPemtYUjlYMHlRU0dIRFZvNFVOc0Q1OG5OczZtTGJwajBIaDJrcnZsOEFDQzNGRTlLK2RiN2VIemxibTh2UFlaUWpkWE8rb2JBQmdFTnErK0c1NHRLZERUbWZxMDNYZFlVTkFNQ1NITFM0SVhWTHlVbmt4c0FmeG1taXVOSHgvN3dmMDhQQTd3R1d3NzhkNVFjMlkvVUtrSU5GMXhVNWhIV3RhWnF2cVpCcjZRY0NnSmpHVmZkU2d1bkdYaXlod0VGaHcxWmVtZHdGNjBsN0RqbnBVWkhkWnU2VnRGZ0FsaTNmRzkvSWlXS3NUM0ZET1Q3bVloN0pqd0FjbWlLNzdaM214OXlSendVQUxOWEJpaHZhZm5ocldzUEJTQlEvSTNVd2IvdmhjMzQvWGd1ek1Kb2NZTGdoR2FkTVo0b2NKQ2ZHOUh1ZW5BUUE0ZVJubFFmT3pFYXFMbkJvKytHV3dvYU4vWktMaFlBTjVNL05iY1g2NjlQTkdZQ1M1TWxOZHhRMGJpVFN0ZDU5eDhWT1RPMERJSUsySDU2WTJyQVYrVEVBQU5uc3hRMHBJU0YzeDMvc0pNenVpeHZoZjh0Rk5sK2JwdWtpcll2dkNRUjNjeVc2N2pLRjAvMHl0SWZwbXB5S3ZKWitJQUNJWjF4MUgvSWtLTmIzSWdlT3FwSUxHLzcwUHRqSXorT3FlMTNRZWlHVTFCVXZGK3QvY1diV0lva09nT0tZR3JnUms1cks0QmtRZ0Nqa0pHM3VnZndZQUlCL3pGcmMwUGJEODV5UW9EdisvSjRhUS9xUGxQRFQ5c09veUNhazlOQjJQWFg5WC9xQnFFMEtGdVVpaDZPbEg0dGcwalg1cTA2YkFFU1U3d2wxejk3TW01b0tIQlEyYkNVOVU1blFCZE80NHhxMGxqc0ZyQkVBL2lOUERWVGdzQWI3eDBYd0hBakF3Ylg5Y0VkaDVFWk9tOVIrS0dqTkFBQjdOMXR4UTlzUEtTbmxWNmQwZHU5VE1uSGVvRjI4OUNDVko0ZThXZnF4Q09pWC9GNzEwRmE1UEQzbVJoNnJTQngvdFAzdzB2a0FJSnJVUGJ0cG1sdVNTemRTUllHRHdvYXQzUFpNQmRQSlRVSWs4bDNOTkVBQWlwWGpaeHJ5WE8xVzlBVXVuYVpoQUFSaGFzUDZQbXBTQ3dCd3ZyMFhOK1JrOHRRaHYzTU9acFVTZis2T3ErN1JnbDd6aGRwK3VKNExiRDZaSEJMT1VTNXFNQzUzUWRJRGVocXJtTDZuSkNxRzhxTHRCOGx3QUlTVDd4MnU1eTVHcktmb0FvZjBETmMwamNTTTlaM2tEbC9IcFN3WVNwR1R4SDV6d2k2bEl5TUFwWHZ1REY1SmNRTUFzSTVuanRKYVVwNk1oaG9BQUJmWWEzRkQ3Z0Q5eWNHZjNhdVUrS05EeDEvYWZraGpXTDhxc0FsbnlNazNLdmNYTEgxUDVVUkZvNy9qdUpjbTNPU0VRZ0FJSlhVeFN0Mk1uSlcxcFFLSDRnSWsrVDdrV0dINjJyN2tQUUFkdm1CL1RMa0RnSXJsZStsWHp2R2xKTjhCQUpjcWNTLzZRRDdLa3dFQXVOemVpaHR5NStjWGp2K3N2dVJrY1FIWExFOE5lUmhpTVp3Nm5TcHlSL0lOcDlMbzd6VEJ3L2p2TUZJaTRkZTJIM1RqQWlDYzNNM0lQY1A2L2lncHFLU3dZV01mYzlFUHNFZDUvK0s5WTN3eENRd0FWT0N0a3dnQXNCTUorMWM3TWJFQkFPQnFreGMzcEVTRTFQSFpPUExaUFUwSkRaTEZDZTZwcVNKY0puY291SkVuZTNCNGYwcFFBU0NpZk0rZ3ErYjZpaWh3VU5pd3NmY0NZVEFyQ1k4QVVMRngxUjJiRkhpcEtKTitQd1JZUTBqMjhnRUk0SkdUY0NYWGF3Q0FOVXhhM0pBM1RiNUtSSmpWa0tjMUNMQVMyVytwSzcvMzZmbmFmbmpkOW9PSksxa3Ewa3FUUGRLRWp4QUxJaVZENnJJQlFEaDVZdDB2enN6YTBqWDlUdkExS214WVgzckdFaXlFR1kycjdwM2pmU2xUWkFDb2djVDVpM1ZSRjhiZkpFc0NjREE1WDh6ZTd1Viswd2dVQUdBOWt4VTN0UDN3UENWTE9PNnpTbDN3NzVqV1FHQWZjMUhEY3lmcHYxTENlTnNQWTlNMHo2S3RMWUwwWUovZVAra2hmK25ISW9BM0NuQUFpR2hjZGErYnB2blp5Vm5icDdZZlFpYWZ0djJnc0dGOXJ6eGp3Y0Y4Y2VndnBMZ0JnQm9vYnFCa0wvSkVSQUE0QkVWMlY3Q25Dd0N3dmttS0c5cCtTTjNZZjNYY1ovUEZ0QWFDTzUwbzRnSDJIS2xqYnRzUHFTanBUYmpGQlpRZjhtOUlJam00RkJoNXZmQmpBRUJBdVpQMkErZG1iWDlHSzNESWhRMDNBeXlsQkUvejFCTGdNSTRkZHdDQWc5THc3WEttalFGd0tISkRMbWNLTlFEQUJuWXVibWo3SVhVeGVleWd6eVoxYUx4bFdnTkJuVFJOYzlkRWtmT2xqamx0UDZReGc1OTBwZDFNZWorbDc3NlV6RlhTdWl2MExCYzBBa0FvNDZwTHo2VzNuWlcxaFNsd1VOaXdrUWVhSE1EQktXNEFnSXJsWjB0aSsrejhYT3BlanQwRHdPelhJRWY4WXY5djcvNnVvOGF5UFFBZjllcDNUQVNZQ0dRaXdFUUEvYXdIbXdqYUhRRW1nallSWUQvb3VTRUM3QWl3SW1nVEFUZ0N6VHJkdTNvTWxQK1VYWCtPcE85YnkrdmVPM2RtV25WVXFsSWQ3ZC9lTVlVYUFJQTdlbEM0SVRaSDNLQ3VSeTRhZjZwREl3WExIVVMzK3FhMnNUeEhGSVIvVFNuVnhSM2NnT1JpcnI2cHE1Z093bWJzQ1RnQVVLSytxUzlpMnRPbEUzUW41emw4dThrREVHeFl5Rk9GVmxBRTRRWUFnTTF5UDNhN0hIRDRWdHJVUmdER3EybzdVeHR1OXE3a2d3TUFLTkc5d3cxUmhDRFlzQjRmbzJqY2hoMGxPc25GNWpxSXpsZTEzV0hWZHIwSk44dVZwNFBrenJWamVrMERrd01Pd25ZQUZDZW1QZVdDL1MvT3pxM3lKTEdMVFFVY29sbUNZTVB0Y2xqbnNmMEFBQUNBL3hvYmNMdEhNYlhSc3pzQTFrRzQ0V2ErandFQUZuU3ZjSVB1aW12MVc5L1VyeWIwZWhtT0xvcHM5cDJ6bjFWdHR4K2hoamVsSGR0WTVNNjFNY1hoYk9wcnNTRnZCQndBS0ZYZjFOdnVFZTVrSXdFSFV5RHZMSWQwdG5Ob1p5REhDd0FBc0E1Kzc5OWRibFRVNTkvaG01N2VDTUNvbVJaMHZhNXY2dk5TRHc0QW9GUUxoeHNFRzlabTFwM3h3MFJlTDhNeGUyL3VLTEw1V2RWMk8zbmNiMHJwZlduSE5sWjlVKythNHJBeE9lQWc0QVJBa2VJZTRhT3pjNnUxQmh3RUcrNHNQL1FTYkFBQUFQalpxVFZaV1A0ZC9qVS92NnJhN21CZ3h3NUErWVFicnFmbUN3RGdIaFlLTjBRUmdtREQ2cDMxVGIybGlJRUNQZlBlbkM4WGcxVnRseFAzbjZOQWpEVzZNc1docys1cjl6NkhlaWIybWdFWWlKaUM5ODc1dWxXK2YxMTU5eWpCaGp2TGV3THVyNkJNdXQwQ0FHeWVjTVA5NWQvL2Y4WTBoL3gzWExXZGdsUUFIc3FlNy9YY3R3QUEzTU9kd3cxNWM4TU42VnE4alE2alVKTFh1WERjdUx6NTR2UHhhMHFwTHZINHBpU0t3TjVPZlIwMndFaHJBSXJWTi9XQis0TTdlUktUR2xmQ25zS2RuZGdUZ0tJSkhsM1BuaEVBZzFlMW5YdnhBY2pOanFhK0JrdTBsMUw2KzByWTRVUFZkcTlHOCtvQVdEbE44RzdtdmdVQTRINSt2Y3QvcW1xN3c5amNZTFZldUxHbE1MbXdadDlKbVM5RzkvNVo0ckZOV2QvVWgxRThkMjZLeHRvOGlwR2FIdjRCVUtTNFA4aUYrKytkb1J2OUUzRG9tM3FwWFJ2ajNzeWV3dTF5czRQRDBnOFNKazZvKzNxbWZBTEF1SlUyTmZsTWdINGxYdWEvcXYzdWRPZi80eWcvQXpEWkhZQTU3SlZjNzZ6VUF3TUFLTjJ0a3h1cXRzdUZ6VytjeVpXNlRDazlGV3lnSUhtajhyRmd3M3k1YTAzdVlDUFlVSzYrcVhOUjNsYUJEMXpHN0hrRWZnQ2dTSDFUNXdMN0Y4N09yWExBWVduZHR3VWI3dXkxWUFNTWdvbU5BREJ1bXJkY3I3U2k5cU1Dam1FcTZtZ1c4ZlhLaElkdlZkc2Q2ZFlOZ1B1bkc2a0JBd0M0cHh2RERWWGJiZXRzdVhKZlVrcmJ1UkIzNUsrVFljaEJtMmQ5VSsvb3Z2S3p2RW1iTjJ4VFNuK1ZkbXpNbDkvTHVRT3U1Vm1iUCtQZUFRQ0tGSUh5cDg3T3JlcXE3Ujc4NEVXdzRjNWVSUGdHS0ZqVmRoN1czMERURmdCR3d2ZjlRUFJOL1dIcWE3QmhlWnJ6N3ltbHoxY0NEL252UXpST0JBQ0VHd0FBN3UzWFcvNkRiclJXcTR2Q1d5akJiemFENTZ2YWJpcytEM1ZvSEtEY0FUZTZEd3Vsck1leGg0QUFsQ3dIeTZ1MmU1eFN1b2lIOGN5WHB6S2Q5azE5cis5MXdZWTd5K0h5cFUzS0FGWktrUllBakZnOEIzanVIRityeEdmR3ViSFJtd0tPZy85N21mK3F0cnZhUFBGTFBEYzQxdXdQWUpROEZ3WUFZT211bmR5UVIwbW1sSjVZOHBVNUUyeWdFRy83cHE0RUcrYUxvcXl2Z2czREZ1L3ZaMU5maHpYSmhaQ3ZKdkZLQVJpc1BLV3NiK3F0ZU1ETzlaN2ZaNEpEMVhhSGdnMjN5bFB6bmdvMndEQkVzYVBQdGV1ZGxYcGdBTENBQTR0MW94S0wwbzhLT0FadTl5UkNLSC8vTU9YaDJMTUVBTWJNbEVzQWdQdWJPN21oYXJ1ZEdDWEphcHpkdC9zbExORkozOVM2RGw0anh1YSt2OWQvbUNMbHdyR3E3WjZtbE01MWFWNjVYTkFvTUVVcGNtRnU3MndBOC9STnZSMFRuZ1JacjVjL1I0L3YrdHNoZ2cwNlo5NHNCeHUyYzhpbTVJTUV2bk5vT1c2a0F5OEFZK0Izek0ySys3N1B2Nm1xdG52bm1mWmc1ZkR3WHRWMlY0Ky91ekxsd1c5bWdHRXcrV28ralpVQUFCNWdicmdoTmcxWURjRUdOaTF2RE83YUZKeXZhcnQ4Zlg0cThkaDR1RHp5dUdxNzdYZ1FJK0N3T25XK2xuU2pBR0FJOGtTOW1FN2dJY3oxL2lrMnVDM2dJTmh3SjE5eXFHWUF4d2tFVFdEdVJMaWhmRytxdHZNZFBRMGZjeURMZENoWVRFeHc1Z2FsN3ZYMlRYMFF6YXJzOTQ5RGJqN3haLzY3RW5xNGpHWktSNzdmbUtCUFB3U0FHS2ZaNTF5K2ovZjdlanljU3dDQUIvamx4LzlvakgvVXRYSTF2Z2cyc0VINVIvR3pYTHdsMlBDelhQQmV0ZDAzd1lieGkvZi9kbHdUckk3Sk1BQU1SdnhPTzNIR2JyUjNVOEdQWU1PZG5BazJ3TEJVYmJlVlVoTGF2cDAxZ25LOFRDbDl6dnVjOFJrRzNDSUs0L2VzMDQzT0NqNjI3S0NBWTJCMUhzVTFtci9mK2l0L3AvbjY5WDBIak1Ec2MrN3ZhTUxET0tqSkFRQjRnSi9DRGJucmdRVmRpVnhFdXpQQzE4VXd2TzZiZWt0SGs1L2xUYytxN2ZLNi9LMnp6M1JFd01GbjhtcTlHdk9MQTJCOFlpckJXNmYyUm5NRERsRU1KTmh3c3hQTkRtQllva2pLMUw4N01MVVBpdlJJc1MvY0xuN0x2TGRVdHlyNnU3NXY2bU1OQ3licGVWeS9YNjhFSHZMMDdxT1k0QTB3Uk0vemRQeWhIUGVRam5VRDFPWUFBRHpBZCtHR21Ocnd4SUt1aEc3NWJFSXVvS2xpWTVjZlJHSFdWOU5xcGluR2VyNlkranFzMEtPcTdRUklBQmlVdnFuejlJSFh6dHFOOW1KS3d6OFVBOTNKMndqUEFBTVJEK2UvQ2piY1NlbWRuQUZncnFydFB2Z3RjMmZGQnhuak45ZVhBZzZGemNwMURyOUg5L09yVXg0K1JCMEV3QkFJREFBQU1IbS8vckFBT3Ztc3h1c29vb1YxNmZxbVZsUjhEUVZZek9UdWtsWGIvWkZTK3RPaXJJUngwQUFNVGc0RzUwNS9LYVZQenQ2MTNsUnRsNktqdWZ2cW0vM1JON1VKbVRBUU1hM2hWQk9FaFdpb0FjQ2dSSWpSNzcwRkRHaEswMjVNNllZZnZjeC9zWmN4azhNdytmZjZCOC94QVZnQnpXOEJBQjdndjNCRGRGZCtiakdYN3FPdSthelJGMU5DcmhlZmM2YzZMM0pWTGphTHdJdmlGUURnSHhHQWZLb280a1p2Q2o2MlV2eldOL1dIcVM4Q0RJRlF3LzNaOXdSZ0tEUTl1cmVQUXpuUVhLQmV0ZDBMNFJYdTZFazB2dnJ6U3VqaE1vY2Rjb0IzUUtFZUFNcDA3cndBQU56ZjFja05SakVGYWsrWUFBQWdBRWxFUVZTdXh2NFlYeFRGeVp0dHUzMVQrNEUwUnhRcFhBZzFjSVA4V2YzWkFnRUFNMUVVOGRoOUpQZjBRaUVFbEMzMkNuS24xajJuNnQ0R1Urd0l3RFRGbEliaktHTG1mZ1kxaVM2YUZRZzRjRitQNHZmQjNnOVRIczRpOENEWUMvQzlYZXNCQU1BcVhBMDNLTUpmdnJjNjZMTUdyMjJtemFmekluZVZnMEZWMjUyWllBUUFYSlYvejFWdHR5M2d3SUtlNW5DTVJZT3lSSEhqdmpERFVnMnEyQkdBY1l2bkFibVIyNEZuQWt2elpZaWg3UWc0UE5QUWlDWEt6NDZlVjIxM2Rmckx4d2c4bU5nSUFBQUFTL1pQdUtGcXV4MWRTNWF2YityRHNiMG1pbkxTTjdWUTBqV3F0anRXc01DQ3pvVWJBSUFmUldCOXEycTdDNytidVVXZXFMZXR5UUZzUm9RWGNpQnRKem9IS21wY3JjNkVHZ0RXS2NJTHMrLzVuZmp6RzIyMUJodGtqSVpHcGpHeVNpL3ozNVVKRDVkeHpSelpGd0FBQUlDSG1VMXVlR1VkbCs3ZHlGNFA1Y2k3WkxzMnh1YXIyaTRIUHQ3ZjV6L0w1TG1tQUlCcjlVMjlYYlhkcVRBazE4Z2RUYmN0RHFXSno2MGgyVkY4TmhpYXVnQ1VZVDhDZmtPeEpZQTRISDFURDNwSzA1Vm1CWDdMc3c3NWQ4eWIvSGNsOEhDUzc1dE5kd1FBQUlERnpNSU5POVp0Nll5Z1pObHl4NDhkRzJEenhRU2FVMFVRUE1DUUhnSU9naTZlQUl4TjM5UzdKb1F4eDFsK2IxZ1lDcVdJaTFYSVV4dnNmUUtVNFlucEJheklIMk5aMlBndHJ6RVdtNUQzai9ZaTdHQ3lBd0FBQU56UkwvRnYyN0pneTZXZ2t5VjcwVGYxbG1ERHovSW82cXJ0OHJwOEZtemdnUVQ5QUlCYjlVMmRDeUxlV2luQ1I4RUdZSUwyblhRQUdMVXZRNS9hOEtPK3FYT2pnc2N4SFIwMllUYlo0V3ZWZG4yZUtCS04yd0FZSjBFMkFJQUhtSVViZEhGYkxodGpMTXZydnFrcllabjVxclk3ejV1QU9sUHhVREc2WFRobXVjN0c5R0lBNEtxK3FRL3p2YnBGbWJ4M2ZWTy9tdm9pQUpPVFAvdk9uWFlBR0xWUkJobHp0L3krcVhNeCtiUG9vZytibE9zelBrZlE0U0tlVXdFd0V2Wk9BQUFlNXBlcTdiYXQ0ZEpKNFBKUUp4RnFPTGFTUDZ2YTdqaHY5cVdVNnRLT2pjRTZkT3FXVGlnTGdGR0xlL1VYenZKa3ZlMmIrbURxaXdCTXpoZWZmUUF3ZXUvRzNuQXJGeHZtYWVtYUZsQ1EzTVR0VXdRZHprMTBBQUFBWU9yeTVBYmhodVV6Q1lQN3lsTS9IdmROYmJ6L0hGWGI3VWVvWWErNGcyT3dxclo3NVhON0pZUWJBQmk5S1BoNDVreFB6dXVZM2dFd05ickpBc0M0ZFZNS011YW1CYm5SbUpBRGhhbXZUSFE0Y25JQUFBQ1lvbCtjOWRVd0VZTUY1Zkczei9JNDNEd1cxK0o5TDNjb3Fkb3VyOHY3a282TDBUQWhaUVhHM3QwTEFHWml2UFRUdUtkbi9GNllzQWRNMUc5OVUxODQrUUF3V3BkVERUSmVDVG5rNWdWZkNqZ2ttUG45eWpTSExhc0NBQURBVkFnM3JJN08rOXhWN3ZxNUZVVlJYSkUzNnZLR1hlNVFrbEo2WkcxWXRxcnRUcjIzVnVKc2hLOEpBSzRWeFo3YkFnNmo5MVNBRTVpb3ZIZjF3Y2tIZ0ZHYmZQT3QvSnl1YitydENEcThMZUNRWUNaUGMvZ3E1QUF3SEZYYm1YNEpBUEFBdnhnbnZqSnZSdnE2V0o1M2VZTlUxOC81b3VqOGEyell3U3JlWS9uYWUyNWxWMExSSHdDVGs0dEFjbWhabDhkUnlxR1Z4enFXQXhQMTJ0NFZBSXplVTc5M3Z0YzM5V0dFSEI2bmxENldkR3hNbXBBREFBQUFrNURERFRhclZpUUtaK0ZISHlQVWNHQmxmbGExM1ZFZXNhcm9uRldxMnU0d3BiUm5rVmZtYUtTdkN3QnVsYnM4bW1JMEtsOWkwdDZrTzVnQ2t5WFlBQURqZGluWWNMTm9aUERxU3REQlJBZEtNQXM1dUZjSEFBQmdsSVFiVm11dmFydjlNYjlBRnRKRnQ4OVhsdTFuK1ZxSlVNUHZwUjBiNHhMQkJ0TjFWdWVqNGo4QXBxNXY2andoOFdUcTZ6QUNYWVJWQUtib21XQURBSXphTE1qdE9mRWRSZERoTUJxWTViRERDODBOMkxCY2k5QlhiYmZyUkFBQUQ5RTM5YWtGaEhGeFhUTjB2M2dUcjl6N3F1MTJSdjRhdWRsbFBCRGVVZkQ3czN4OVZHMlgxK1Y5YWNmRytBZzJySVdwRFFEdzc0YlJ2bzZPZzNhV2Y4Tk5mUkdBU2ZvU3pUbk9uWDRBR0sxM2d0d1BsNSt4NStZR1A0UWRQZzc5ZFRGSW42cTIrK0RVQVFBQU1CYS94dXZJWFNXZU82c3I4N2xxTzJOZHA4bjQvbXRVYmJlVlVqcU4wYW13anZkY3ZoYjNyUFJLblFsTkFzRC81WTZPRWVUOTA3SU15a21FVXdDbTVtMys3bkxXQVdEVW5na3hya2JzamYrM1B4N1B3ZkkwOXdQUHdsaURsN0VIdGEzWkhnREEwcWluSFFibkNVWm9GbTQ0ZFpHdjNIblZkallUcGtNeHpBMmllOGpMWWcrUTBhbmE3dHpEZzdWUUJBTUFQK2liK3FocXV4eDAvOHZhRElMQ1htQ0t1cFRTcm4xTEFCZzF6NjNXTE82dGp1UHZQMVhiNWNERHZ1ZGtyTUNqbE5KWFRSZUJOY3ExWm04c09BQUF5ellMTnh5NTRWeTV2Smx3VWJYZGpzMkVVZXY2cHQ2WitpSmNwMnE3UTU4MXJGTjBScnFJejJCVzY2T3BEUUF3WDkvVUg2cTJlNUZTK21TSmltYnlIakExbHhGcTBMMFpBTVpMaUxFd2VZOGdwZlRoNmxIbEJua1JlTWgvVDZhK1JqelkzM2tmeWpNYmdJM2F2VHJSQ1FDQXhmd1Ric2diV2xYYnZVc3AvVzc5VnVwUmJDYm9sakErbDhaOFhxOXF1N3daKzc3VTQyT2NvdnVSRHNucm8rc1hBTndnUDFET3Z3WHpiMExyVkNRUC9ZR3BFZWdDZ0hFVGFoaVFlRzU4K09OMDVIak9rZi8ycHI1R0xPeVRnQU1BQUFCRDljdVY0ejUwRnRjbUJ4eDJKL0pheHk2SEdwNzFUYjFsZy9obmVWSkoxWGJmQkJ0WXQ2cnRqZ1FiMXVvUG40RUFjTHNvVm5nY3Z5TW94MU1QKzRHSm1PMWpWWUlOQURCYU9kVHdPRThadDJjN2ZIbktROS9VKzNILzlzOWYvZzJiOStSVFNsK212ajdjNmxOTUJRRUF1SXN6cS9Rek5aNWxjMzZ1NVhwbThINmR2WUNZM3BBM1F2NTBXdGNpYnlhODdadGFxR1M0ZExpN1J0VjJXekZpcnk3eUFCbXRlTzlkeEtRYzF1T3NiK29qYXcwQWR4UEZKVnRWMitWN2xpZVdiYU5NNEFPbTRpU2xkT0R6RGdCR3pUT3JpWWpHQ1VmeDl4OVRIcmhHZmw0cjRBRERNcGpmN2pHdHVJQWpLWkppV3dDQUI3ZzZ1U0ZGY2FJN3ovVjVVN1dkN3BERGM2TEQzZldxdHN2cjhsV3dnWFdyMnU0ZzNudUNEZXYxYWtvdkZnQ1dwVy9xYlYwek5rcXdBUmk3N3NxVWhuMmZkekJKSDV4MkdMMTNNYVhCTXl0TWVlQTZUK0xaTFRBY3JsbUFzdXc0SDBVVEpvT1IrblhPeThwRmluODc0V3Z6dkdxN2I0b3FCaUUvRk41MW51YUx3bktUWDlpSXF1M09CV28yNG9YUFJBQzR2NzZwZDZ1MnkwVm5MeTNqV24ySmNBbkEyT1RRM0g1MDh3V215ejQyakZjT2FSK1pDczlkbWZKQTJNdjdUemtBWTBHZ2FQazMvYXNCM3NkZmFqNDRsMkpvaHNnK3dueGJKUjRVM01JekFnYnZwM0JEM3VTbzJ1NTFTdW05MDdzMitVYi9hMTUzblZXS2RCa1BnODZudmhEenhBYm9YK1VkR1ZQZy9iZFJmK1JSb3hOKy9RQ3dGSDFUdjZyYUxoY1ovRzVGMStJc2gwb204RHFCYWNnZGVBL3RKM0lIYnhYQ0FneldTWHpmSzB4Z2FhTElQZi90ei80N3E3YmJqc0JEYm1iMnhHcVB6ckhDdkVGNjRWa2NBNURyYUo0N1VUOFIrR0NJempYam1zc3pwYkk1UC9QWlEyRHc1azF1eUJzYXgxWGI3ZXJXc0hidnE3YmJWMmhSbE45MHNaaXZhcnVjTkQvMW80eE5xTnB1Szk1L3BqVnN4a25mMUVjbEhoak1vWWgxZ09LM3lLZXByd1BUMFRmMVFVejBlK08wcjFTK2g5bmY0RDhmNEtFK1JyZG14UzBBTUU1Zm9nRDV5UFFWMXMyVWg5RjdsS2Z3ZTdZRHNENzVXWmM5SEFDQSs1a2Jia2ovYm1Ec1I0Y0dDZHYxZWw2MVhaOVNlbVpTd0ViOVlYTm5Qa1hsYkZvT2daa3V0RkZuaWdJQllQbHlOK1dxN1M3YzU2eU1qdFhBa0Z4R0o5MWpEOEVCWUxRK3h2ZjlCMEVHU21iS3c2Z2MvaGhlQVZpQ1UzVmwxekl4aDZFNTFZUnJMcDl4WlhOKzV2TmNnY0c3TnR5US90MnMySTNpQ3BzUzYvZTVhanRkSmRmUG10K2dhcnRqblZuWWxBaldYSmdXc2xFNjRBUEFDc1VVeFF1VFM1YnVkVjdia2IwbVlCek9vbERzVkpNVEFCaWxMZ29LUGdnc01pYW1QQXhXbnQ2d2I0OEVZRzEyWXQ4SEdEaVRXTXFVejh2VTF3REc3TVp3UTloUlRMb3hlN0VKdE9zQjU4cDFzYzY2NDh5aFV6NmJKbGhUQk1FR0FGaUR2RGxhdGQzVGxOTGYxbnNwWHRod0JqWWdUMTQ0ajJMR2l3Z3ZYRGdSQURCNitSNWcyN01tcHNxVWgwSEk1MGE0QVZnbW5kNnY1OWs2Z3hMUHA1eTArWFowd2kvU3p0UVg0RHFlalRJR3Q0WWI4Z1pjYkRwOGRjWTM0cEVwRGl0MUtUeHl2VWc0NmhyTHhuZ1BGa093QVFEV0tCZkFWbTMzV0tPQkJ4TnNBQjRxUDgzN0ZwL0hGL0cvNXoya2IvYVNBSUE1OHUrM3IxWGIrUzBDd1pTSDRqelB0Ui9DMThBUytUeTUzdk5TRHd4WW1DTDZNamt2TUdKM21kd3dDempvSExsWmVZcEQzdHg1NXVIcDBydzJkbk8rQ0RTZEs2UmlVNnEyMjRyVWMrMGtiSnhnQXdCc3dKVkdBK2M2Rzk3TFV3L3E0Ujh2SnJRTUY2NTdBQ2JvWk1VZHVIZDE0cjJYVDFYYnZlMmIrbkNBeHc1cmNjT1VoNFA0MXp5alhKMjh2ajZmZ0tXSVJqMFc4eHE1bWFQUUt3TnpKcGd6bDVxWk1qa3Y4NTJWZUZDd3FEdUZHOUwvYjBpZktuamV1RHpGb2V1Yld2THMvdDcxVFgwdzFJTmZKUVhsbEtCcXUyT2Rlb3J4c1cvcVYxTmZCQURZbEJ4d1NDbHRWMjEzN2g3OXp2SjB2dTFZTzVnOEQwOEJZUFF1VnZ4OWYxcTFYUzQrL3V5dHRMQTNVY3ltMkFMdUtNTEtCL0gzajZydFpvWDRHajhzajg4bFlOa1VRMTl2TjJwd2dHRjdVclhkam9iVTVjam53MitFYTNsR3lpajhzc2lMaUEyRjdTZ1dZSFBxcXUzNjJNemg3bkwzOFVxd1liNG9LUCtxYUlwTnlaOXArYk5Oc0tFWTd3UWJBS0FNRVc3WFplTjJYL3FtM2hKc0FBQ0E1WW5pamNmNWZ0dXlMdXg1MVhiZm9yRVVjQTk1Q24vZjFOdnhqTGRLS2YyaFZ1SEJGQ0FEeTZiWTkzcWV0ek0wd2pqWGN6Mlh4Zm00bnU5bFJtR2hjRU82MGpuU0ptWVIzc2VtcUNrT044c3o4QjdyampPZmduSTJMWCtHNWMreS9Kbm1aQlRqdFNBWUFKUWxmcytjT0MzWHltSDI3VUtQRFFBQUJpMC9HNHo3YmI5SkZwZW40WC9OVXh5R2R1QlFvcjZwajZLeFFRNDZ2QlowdUIrZlNjQ1NYVmpRYTlVK2N4a1k0WWJyS2FZdmkvTnhQZGN4bzdCd3VDRjl2NG5aZVJ0c1hONFUvVnkxblErbCtaN21McWM2ZC80c0NzcDdCZVZzU3U1V1ZiWGRlWXcwZitSRUZPTkY3b1EwOVVVQWdCTDFUVzE2MzN4bnd1d0FBTEI2OFp2a04wdDlMNStxdGpzYzRIRkRzV0txdzFaTWwxRzNBTEE1T2tUZlRBRXVReUtzZEQxaHBVTEVlYWludmc0M2NCMHpDdmNLTjh6a292R1Uwa2R2aFNMazBiWjk3c0kvOVlXNHFtOXFIOVkvaUlMeWIxRlFEcHQ2SCtiaSthOXVOb3R5R1ZOdWhPVUFBQUFBZ0xuNnB2NlFHMHZwbG40dmJ6UXJnK1dMeG95NWJ1R1p6Nlk3VTVnSExJM255N2Y2dmZEamcvK29zN3VWdXN3eU9BODNjQjB6Rmc4S042Ui9MNGFjTUgzckhWR005N2x3UFhmbG4vcEM4TDByWGZLLzZwSmZuTHpSK21FS0x6UUhzR0ppeUY0Qmg4UC9uY1VZWjFOdUFBQUFBSUFiNVFmbDBTMWRwL1RGUFkvbmVGdERPM0FvWGQvVTUvSFpkT1prQWF5ZHo5NGJtT0RGd0xpZXI3Zm50OXhteGZxck9idWU2NWZSZUhDNElmMjdVWEJvREcxUmN1SDY1MXpJN2d1VnBFdCs2VjVIVWZtb1J6WG13RldFR3Q0WGNEaDg3NCsrcVhYb0FRQUFBQUFXRXAzUzMxbTFoZVhuZUYrcnRyTXZDeXNRenp4T3JPMk5mUDRBeTJaNnc4M2VsSHh3OEFQWDg4Mk9TajY0Q2JEK04zUDlNaHBMQ1Rja1kyaExWY2ZtNlBIVUYyS3FkTWt2MmtuZjFGWGYxS08rUGlQVWtLY0JmQzdnY1BqWnM3NnAzZmdEQUFBQUFQZlNOL1ZCU3VtRjFidVhUN3I0d21yMFRiMmZVdnBpZVFIVzVvT2x2cG5hTFFaRWNmVE44dlNHblpJUGNLeXF0dHRXQTNrcjF5K2pzYlJ3UXpLR3RtVDVTN1czUVRvZFZ3cktkY2t2VHhlaGh2MHh2OGc4TlNaUGo0bFF3Nk1DRG9udm5jWDdjTlFUUXdBQUFBQ0ExZXViT2o4OGY2d0IycjI4cWRwTzhRR3NobWZqQUdzU3o1MkZ5bTZtSUpwQmlOOTMzRXhZYVRNRTZXN2grbVZNbGhwdW1ER0d0bGh2SXVRdzZxTHFLWXVDOGdzRjVVWEtEM1VleCtmanFFWEhnYTh4UFlieS9CRWptUUVBQUFBQWxxSnY2bS9SQU8zTWlpN3NlVzVZbFoveERPeTRvV2hqbjU0T1VDQkZwN2RUZE1wUStGMTNzMXFUNmZXcTJ1NUFIZHF0WExlTXlrckNEY2tZMnRLOWowMVNpZUFSaVM3NXVhRDh5ZFRYb2pBNTFQQXNQOVRKRDNmRy9FSnpxQ0VIcUl3QUs5WXNZSE0wOVlVQUFBQUFBRllqR3F1OHRid0x5dzJydmxadDkycGd4dzJsMDBVY1lIMkVHMjczeU5RdUJzTDFmTHZjWkZwajBUV0lkZjV6OUMvMDRWeTNqTXJLd2czcCt6RzBOZzNLa3pkSlB3czVETitWZ25McHhQSzhqbEREK1poZlpKNEdJOVJRdkhkVENOZ0FBQUFBQUp2WE4zWHVZUG5NcWJpWHY2cTIwNkFHbHVmQ1dnS3NSOVNJWFZydVcrV3BYYVlMVVRydjBidjVWTFhkOWhBT2RLaGlmVDlOZlIzdXlIWExxS3cwM0pEK1A0WTJmOGk4ODlZcDBpemtjRzdjN2JBb0tDL2FTZC9VMWRqSDNWNTVENzR2NEhDWWJ6WTU1TUQ2QUFBQUFBRHJFazEvTkVDN245OWpXamNBd05BSWFkN05YdFYyT214VHJHaWNlZVlNM2NuZkFnNnJFZXY2OXhoZjJ3cWNhWGpMMkt3ODNEQVRoWlV2dklPS1ZjZTRXeUdId3VWSkczbmlob0x5SW5YNVlVM2YxUHRqZnBIZWc0TnhNb1hKSVFBQUFBQkFtYTQwUVB2b0ZDMnNqdW5yaW1RQWdDRlJzSDkzTHdWYUtaenIrZTV5d0dGM0tBYzdCTEdlZ2cxMzUzcGxkTllXYmtneGdpeDNNNDhDWU1yMFg4akIrU2xMRHAzRWVma2NFemNveDZ3Ny9zNllVNUJYUWczZWcyV2J2UjlISGJJQkFBQUFBSWFoYitwWEthWFhUdGZDSGtXUnpLdUJIVGVVNUxtekFiQSswWGhQdC9lN3k0SFdQdGRpRE9XQW1aUmpwM3NobjZxMk94elE4UllyMXZIVDFOZGhFWDFUbTV6RTZLdzEzRENUQzRCVFNuOTRPeFZ0ZGdQdFJxVUFWZHVkNXRCSmhFOG95MjlqNzQ0dldETW83MHhyQUFBQUFBQkswemQxZnQ3ME5KcXpzSmkvcXJaVHFBQUxFZ3dDMkJqM0xZdjdYTFdkcnRzVUpacTdtc0szbURjeGdXOXJTQWRkaXFoUHU4anJPUFcxV0pEcmxGSGFTTGdoL1Q4dDlOZ21adkgyaEJ3Mko2OTdYbjlkUllyMFI1NUUwemYxYUg5Z1hnazFDTmFVTDMrWFB1MmIrbURxQ3dFQUFBQUFsS2x2Nm92Y25NV0U5M3Y1M2RSMVdKamlXb0FOaUJxS0w5WitZUy9WWjFFZzkxT0x5MDFqdndvc0xTWSsrM0o5MnBNaEhYY2hYS2VNMHNiQ0RTa1NmckdKK2M3YnEzaENEbXRVdGQxK2hCcjJKdk9paCtNa1FnMmp2akc0Y3RNbzFGQytQMkphdzhYVUZ3SUFBQUFBS0Y5TWVQZHNjSEYxZEFIZEh0cUJ3N3JGVkh5RlVRQ2JjMmp0NzAxOUZzWG9tL3BVT1AzZVpvR2xjNU1jNW91bXU4ZHFKQitraStzVVJtZWo0WWFaNkRUOXpCU0hRWEFUdlVKVjIrM2tqZW1VMHZ2UnZzamh5amZyai91bTNoL3ppM1RUT0Npejk2UUVMZ0FBQUFBd0tQRnM4SVd6dHJEY0JmVHZxdTFlRGV5NFlTMXkrQ2VldFpxS2Z6TUZVTUJLOVUxOWJIckRnODNxczc2NTkyUEQxS1E4VEIyVEhQSzFQT3Fhczd2S24ybHh6LzVWZmRxRHVUNFpyVjlMZVdGOVUrZFJxbHRSTk85RHEzejVKbm92dXRqNzRuMmdTR2llNnBKZnBCeTYybzNQcU5HS0cyaWhtdUY0TnZiM0pBQUFBQUF3YnJtN1lOVjJqMU5LRjFHMHo5MzlWYldkWjNRUVlxTEpCODlhQVlxU3c2eC9PU1VQOWlqdS9XYi9QVzl6TVd2ZjFOK0crNUlZa2h4V3F0cnUwRlNzQjh2WDh2dXE3ZDVITGRyUmxLN2xxdTBPWXFxUDMvN0w4eVhDaERCS3hZUWJadkltWE5WMlIxSG83Y09zZkVJT0QxUzFYZDVvZXpub0Z6RmVyOGQrRXlEVU1EZythd0VBQUFDQTBZaENqdHo4N0ZTbjlZWGxaM1M1T2RQMndJNGJsaUlDRFVlZXM5Nkx5UTNBeXZWTi9hRnF1elAzZUV2M0p2OWRDVHQ4VENrZDUvVWV6MHVrUUlkcWk1YnEwWnhyK1NTdTVjSGZwMVZ0dDVOUzJvOC85YityY3pqV0Z3YXB4SEJETXNWaHFJUWNGaFNwMWplRE91anBHUDM3T0c0a2hjaUdvNHNKSXJvdkFBQUFBSXZhamIxSW1NbGQ4ay83cHI2d0lwU2liK3BkejAzdTVVblZkbjFLNmFscm1qR0w1MXF2NHM5MGhnY2FROUhjUk9UR29MdFRYd1MrazcvclB3enNtWEd1dS9pN2dPTVlzeHp5ZTNtbFFIcW1pNXFRWElOM0hyVjRjQzh4dmVIQWZkaEs3VVg5NVkvL2pMTzRsay9qV2k3aU95RHVVZkk5K203OHFUOWJyODdVQnNhdXlIRERURXh4T0l3YkxSK0F3ekFMT1NqRXZZWk8rVVU3eXc5UXh2d0NxN2JiaXM5VTQrS0c0NFZOWmdBQUFPQUJudXVVeVR6eHdQeHQzOVRDTHhRaHZ4ZGpnc01uWjJSaGYxZHROL3BwMU9uLzNmcHpnZnQyRk5Nd0R1NVYxdWZqVkY3b0NHZ0V5anp2NHo3K3R5RjA2cy9oeTZydDNxV1VmaS9nY0thbXZscUlQcWRnK2lablUxKzhGYnFJbXAzakFkYlU1WHEzendVY3g5VE05dlgrYVFTd3dMWDhKZDV2ZDdVbHZESW9tbzh6ZWtXSEcxTGM2TVlVQjkxYWhpVi8yWDJ0Mms3SUllaVVYN1I4UTdjejV2ZHBoQnBPM1lnT3lydStxUSttdmdnQUFBQUFyTlNicXUwdWRIdWpGTG5SUzlWMmp6WHB1WmRjN1BpcWIrcFhBenoyVzFWdGQrNFpCeXpGa1dXRVVmaXJhcnRuUStqR241OTVSNGR2MytQRElYUzRPczhqdlBabjFYYVhPYkE3bEZxbC9IbFR0ZDJKOE4xZ1BQR2JlclJPVE9OaENuNFp5bXVNemtHUG93aVo0WmlGSE02anVIcHk4dXVPRGRmUGdnM0Z5VDhVOGcvK3dmeFl1SStxN2ZLRHlhODJDd1lqaDhJZUN6WUFBQUFBc0NiYkZwcVM1UDM2dkcrdnUvaTl2TXlCcGJFOWt4TnNnS1g1WWxvNGpNcVF2dTlIR2I2RUI4bzFaSU5xTk5BMzlYN1VXZ0diY1JuWElZemVZTUlONmZ2TnpOY0ZIQTZMbVlVY3ZzVUVnMGxRVkY2MFBKNTVhOHhKeHFydDlxdTI2NldtQnlXSGJVWTlSUVFBQUFBQTRDNWlBc0VmRm10aFQrS1ozQ2lleCtuMERFdGxhZ093RVgxVFg2ajFncm1HR0VvV1ZvTE5jZjB4R1lNS044ems4Y2g5VTFjcHBiTXlqb2dGNU5UcDU3R0hIS3EyTzFCVVhxdzhtcWthODVqMWZHM2xheXlQb0M3Z2NMaWJkL0crTkRZTUFBQUFBQ0QwVFowTGNaOWFqM3ZKeitOTUNBWm12c1JuS3NCR1JJM0dPNnNQd3haVG9ONDZqYkIyYjAxaFkwb0dHVzZZNlpzNmQrcDRadHpSSU0xQ0RuM3VMaitXRjFXMTNhc0lOZnhad09Id3ZTNmw5SGpNbzVueW1Pa1l6Znc1cmpIS04zdGZlc0FFQUFBQUFEQkg3dlFiVGM4NjY3T3dQNnUyK3pDd1l3Wld3N01vWU9QaXVmaEhad0tHclcvcVE5Y3lyTlZaWEhjd0dZTU9ONlIvdnl6UCs2YmVrZ2djdFBkRER6bGM2WlQvVndHSHcvZHkrT2xwMzlRN2ZWTi9HK3ZhVkcyWHV4eDhOWnA1TVBMNzh0blkzNWNBQUFBQUFNdVM5MU4xKzcyWGwxWGJYZVFHU1FNOGRtQTU4bVI3UVNlZ0NIMVR2OHBGbXM0R0RGdGN5MStjUmxpNUw5RUVIaVpsOE9HR21VZ21QZGExWmRCbUlZZmpvYndJbmZLTDl5S0huM0pYcDdHK3dDdlRRdllLT0J6dTVtMjhMOCt0RndBQUFBREEzVVczMzk4czJjS2U1QVpKdVZuWHdJNGJlTGd2WTU1c0R3eFRGR2txaW9iaDI0bm1uc0JxWE1aMUJwTXptbkJEK3ZmbTkxdDBiWG5taTNQUTlpTGtjRnB5RnhtZDhvdjJPbytvN3B2NmRLd3ZNSUkxRjZhRkRFb08zejAySmd3QUFBQUE0UDZpKy9oanp3THY1WFBWZGdjRFBHN2cvaFJEQVVYcW0zcGJBMXNZdGx5cm1WTGE5dHNNVm1ZbnJqT1luRkdGRzJaeU4remNGVHQzeHk3amlMaW41OUZGNXJ5a2tFUFZkdnM2NVJmckpFSU5nNW4rY1I5VjJ4MUZzT2JKOEk1K2t2S1B1R2M1Zk9lR0V3QUFBQURnNGFMaFdYNTJkR1k1Ri9abjFYWWZCbmJNd1AwODlXd0tLRmswc0hVL0J3TW00QUFyY1JuMzhoZVdsNmthWmJoaEpuZkh6b1hPa3I2RFYwZkk0ZHNteCtWV2JiY2JvWWIzNDFuYTBaaDF4Qi8xU05XcTdiYnpkWkJTK3IyQXcrRnUvc2dQMkhMb3pub0JBQUFBQUN4WDM5UzdtcDNkeTh0NDdsYnNCSFhnd1JSREFZTVE5M1B2bkMwWUxnRUhXS3A4SFcyN2wyZnFSaDF1bUltazd6TmZvSVAzS01ibDlubDZ3cnBlVEE1VVJFSDVwL0V1N1dCTnBpTitUR3Y0TzY0RHl0ZkZGSkVqNXdvQUFBQUFZSFZ5czdPVTBndEx2TEJIMFZ4c2QyREhEZHpzTXByQ0tZWUNCcU52Nm9PVTBtL09HQXpYbGVsNm1sREQvWFhSUk5mME5TWnZFdUdHOU84WDZIbDhnYjR1NEhCNHVQY1JjbGhaNFhEdVZsTzFYZTYyL2xsQmVaRmVUNkVqZnJ3UFRXc1lqdjhDTjFOZkNBQUFBQUNBZGVtYitqUVg4MnAwZGkrZnFyWTdIT0J4QXo5VERBVU1WdC9VSDl6UHdmQkZ2WXhwTExDNGQrck40UDhtRTI2WTZadjZPSGZUVGltZGxIRkVQTkR2RVhMNHNNelJ1VlhiSGVkdU5TbWwyZ2txenJ2b2lIODg5aGRhdGQycmVCOEsxd3pESkFJM0FBQUFBQUFsdXRJcDlLTVR0TEEzVmR1ZER1eVlnZSs5VlF3RkROMlYrem1GMFRCZ01ZM0ZkRDI0dXhkeDNRQmhjdUdHbWI2cDl5UHhheFRTT0x5TTBibm5WZHR0My9jVlZXMjNuOE1TS2FXOXFTOW9nVDVHcUdFU1grUXhsZVN2QWc2RjI1MU5KWEFEQUFBQUFGQzZ2cWx6NDZBL25LaUZQYytUcEpmWlRBeFlpOXpoL0duZjFDYXdBS01SZFNGUFRYR0E0Y3JUOWFJQnRkcE11RjYrUGg3SE5Fcmdpc21HRzlML0U3KzVlOEV6TjhTamtTY3QvQjJicjNmdVRKSC92UkZxZUQvMUJTelE3RXY4MVZSZWNIUkgrcjJBUStGbStYdmpXZC9VdTlZSkFBQUFBS0FjZlZNZnhmTS9Gdk1vbW9uWjk0WmhlQnRUeFMrY0wyQnM4bWRiVEhGNDdlVENjRVZ0NW05T0lmemtkYjQrY2cyenBZR2ZUVHJjTU5NMzlia2I0dEhKbTYrZmMyQWhUMk80N3NYbDdqTTVDSkgvdlZOZnNBTE5Dc2NuOVNVZXdZYm5CUndLTjNzZG04WG4xZ2tBQUFBQW9EengvQzkzQ3YzaTlDenNVOVYydXNCRHVicVlLdTQ2QlVhdmIrcmp1S2M3Y2JaaG1QcW0vdUE2aHYrY3hMMzhzU1dCNndrM1hPR0dlTFRlUjhqaHZ5K0VDRFhrb3VTdkVZU2dMSk1zSEsvYTdraXdvWGdmM1dBQ0FBQUFBQXhIMzlUYkthVjNUdG5DM2tSREpxQWNzNG4zTzg0Sk1EVjlVK2ZHcG8vanN4QVlJTmN4RXplN2w3KzJVVGZ3Zjc5YWk1L0ZCOGgrRkwvWHBSMGY5N1pYdGQxZVRBUVFhQ2pUeVZTL3dLdTJ5NXVRdnhkd0tNeVhQemUyalFJREFBQUFBQmlldnFrUG9sRC9MNmR2SWM5akFycjljZGlzczVUU0s5Y2hNSFh4T2ZoUHdDc2FuTzVOZlUxZ2FHYlhjVzVNbkZJNlZadkpCT1JRdzY1N2VWaU15UTAzaUk0SGo0MnJIUjNCaHZMTVJxZE9PWmw0VU1BeE1OOXNrb2liVEFBQUFBQ0FnZXFiK2tOSzZXazBzK0h1OG5PMXIxWGI3Vm96V0xzLzRobXFZaWlBSCtUNmt2d1ptWi9uV3hzWW5ueHZrMnN6NHpvK2NRb1pvWSt6cVd2dTVXRnh3ZzIzaUMvU1BLNzJtYzFPV0xwTG8xUC9zMTNJY2ZCL0o3RmhmR3hOQUFBQUFBQ0dyMi9xaTl6TUpycWdzNWhQVmRzZFdqTll1ZHpaOVdrOG96cXkzQUEzeTgvem96ajZhWHlHQWdQelExaEpmU1pEOXpydTVVMWVnd2NRYnJpanZxblBZN05UNGhlVzQ1bHUrQlRxUzRSdXBqeEpCQUFBQUFCZ3RISVg5SlRTVzJkNFllREprbEFBQUF3eFNVUkJWRytxdGpzZDJESERFT1JuVXkraUNDcDNkcjF3MWdBV0V5SFdXUmY0M3hSSXcvQkVXQ25YWno2T3J2Y3dGTE1wRFpyb3dwTDhhaUVYRXg4K3gxWGJIYVNVL2h6U3NVTWhYdnNTcDJCNTQ5aURHUUFBQUFDQWtldWIrakFLOVQ4NTF3dDVYclZkYmx5MXZhWUdWcHBrTVZaNWdzeEJickxvREFNc1Y5L1VIMUpLdVVBNlZXMlhRNjI1UnVXSlpZWmhpTjhacjlLLzEvQldYTU12blQ0S2srL245d1dUWVRXRUcrNHBSa0FlVlcyWHZ6ejNCdmtpWUwxT2RNS25ZTjZmQUFBQUFBQVRrNXZkVkcyWHU0TG1Zb1JIenYrZDViWDZXclhkYjFFOHVESzU4THRxdTQrS21SaUIzRUg4TU9vTUFGaVRhRzY0bmY0dGtzNy84MUNkRndYUkhQWVdjNElPQi9Ibjl4dWJrQ2RBSHEwcDZBK1RKdHp3UUZFTXUxKzFYZTZvVUEvNnhjQnFkQ21sWFYvcUZNcjdFd0FBQUFCZ3dtSi9lQ3VtT0R6M1hsaklYMVhidmV1YittQ1YvNUMrcVY4NVB3elFseWlnL2VBNUZFQVpvcnYyZnZ6TnBqb2N1c2RnUTg3NnBoWnVXRURjVXgzR244QVM2M0FTQVdYVEdXRE5oQnVXcEcvcW5VZ0huZ281d0Q4dW8yamNLRlZLNVAwSkFBQUFBTUIvK3FiZXJkb3VGK24vYVZVVzhuc3VETXpQU2xmNUQ4bm5KLzFid0hRWUJZbFBWdm5QZ3dYbDUwNGZGRDRCREV0TWRkaWRIWFFVU3UrNzEyQU5YZ3MyUE55Y3dOSnNzb05ybVB2STkvUjV5dHF4ZTNyWVBPR0dKWXAwNEN6a1lId3RVN2J5TWNUd0FHLzdwajYwZ0FBQUFBQUFYTlUzOVZIVmR2bjV4cm5uZkF1cHE3Yjc1em5wcW90QVluLy9wejMrZUQ2N0V3V0syL0duQ3pPcmtLZUNIMGZSazRrTUFDTVM5ekhmM1d2RVBjYXNlRnF6V3g3aUxCZmVhOEs1T2o5T2RraXVZYTczSllJTUh3UVpvRXpDRFN0d1pYenRUa3h5c1BuSlZDZ2FwMlRkcWp0SHdZYjV3VFhmYVlrSHhhMDhGSnpQK3huZ2VtY0tsd0MvaXdCWWhpaHMySW9KQVc4czZwMDlpb0x2M1NYOTl5MGtucytlM25YL0pEb3piOGZ4em9JUk81N3JFcjdFSklaVERkM1c0dFJ2ZXFCVWNZOXhGSC8vaVlMcFYzRXY4Y285QktHTG9QUnAzRWZZcTlxd0c2N2g3U3ZYNzY1cmVMUSt4dlVveEFBRFUvVjk3NXl0bUpBREUzRFNOL1crRTMxL1Zkdlp0RnVkUERac1YvcWRLZkRBOVNmNSt0L1dQV3VZcXJiTEQ4UDNwcjRPVjF6MlRiMVZ6Tkd3TVZYYjVmdnU5ODdBZDU3YWtLUnF1L3hnNHZmSkw4VDNQdlpOL2Fxa0E0SjFxTnJ1d3RoNVdNaGdHb0pFVjNqUFdiNzN6TDduNnNYdnNDUHZ2enQ1MXpmMXdRQ084MTZ1VElmWW52UG4vbU00THE4VUhaNUg0YUU5NUEyS2ErdkM1eXdzUkkxRzRhSldiUGRLZ0ZMSCtHSDdFdmNOLy8xNUxqRnVQMXpEdSs3M2kzVDF1c3ozOUJvRndvZ0lONnlSSWhSR3FJdWljUnQrRHlUY3NES3YrNlkrSHVscmc3bmlJY0RSeER1RTVNN05oMzY4RHAvMzh6OXlONGtqNzJldWltdmpJRWJvVG5VenRZdlBldDBUK1U4OGJNaGh6NWNUWHhYWEI1UG44d0J1ZFJuZHFBK0hWb3dSalIybWZCK2NycHkvQTN2ejZ4ZmRQV2VkUGJjVnFmMmppL2Zra2Zma3phNkVJOUtWQ1Jlem9FVHluT2plWm1HRmkvajc1MzhYL2hxZXF1MTI0ejdldFFEemZZa3BTYjV6UitTYWFWS0NrNnZUeFFUNWl4Ly9oQlc0ajJ1dTRTMi9GZS9seXcvWFpYNCsvczE5UFV5VGNNTUdDRGt3QWpyaEw1bHd3OUxwVUFvQUFBQUFBRXpDbGFLcW1hdEJpcHYrdGF1Vy9aeHFWcHcwejQrTlBNNmowREFwWUFLQXhmd1FvRXhYaXF0bmJyb0gyRmxEZzdGWkVQRW0zNjc1OTh6NzE4OEZmQmliQ0huT3pMdG1mN3pmLy9IL3Q0cEExRTNYN3J4cjgrS0grMy9YS25CdndnMGJKT1RBUU9tRXZ3TENEVXVUYjZ5MzNSd0RBQUFBQUFBQUFBQUFESXR3UXdHRUhCaUlrNzZwOTUyczFSQnVXSXJmK3FiK01JTFhBUUFBQUFBQUFBQUFBREE1d2cwRnFkb3VkOFBmbS9vNlVKeXp2cWwzblpiVkVtNTRFTUViQUFBQUFBQUFBQUFBZ0lIN3hRa3NSeTdPN1p1NnlvVzZVMThMaXZBbHBmUllzSUdDZGZFZUZXd0FBQUFBQUFBQUFBQUFHRGlUR3dwbWtnTWJjcGxTMnUyYit0d0pXQitUR3hiaVBRb0FBQUFBQUFBQUFBQXdNc0lOQXlEa3dCcTk3cHY2MklLdm4zRERuWG1QQWdBQUFBQUFBQUFBQUl5UWNNT0FDRG13UWlkOVUrOWI0TTBSYnJqVng3NnBYeFYrakFBQUFBQUFBQUFBQUFEYzB5OFdiamh5OFhuZjFGVXVSSi82V3JBMFhVcnBzV0FEQmJ1TTk2aGdBd0FBQUFBQUFBQUFBTUNJbWR3d1lDWTU4QUM1WUh5bmIrb0xpMWdHa3h2bWV0RTM5V21CeHdVQUFBQUFBQUFBQUFEQWtnazNqSUNRQXd0U01GNGc0WWJ2dk91YitxQ2c0d0VBQUFBQUFBQUFBQUJneFlRYlJrVElnVnY4MFRmMWtVVXFrM0REUDdxVTBtN2YxTjhLT0JZQUFBQUFBQUFBQUFBQTFraTRZWVNxdHNzZHovK2MranJ3bjVPK3FmY3RSOWttSG02NGpGRERlUUhIQWdBQUFBQUFBQUFBQU1BR0NEZU1XTlYydWFEOS9kVFhZY0owd1IrUUNZY2JYdmROZlZ6QWNRQUFBQUFBQUFBQUFBQ3dRY0lORXlEa01EbTY0QS9RQk1NTkpvb0FBQUFBQUFBQUFBQUE4Qi9oaGdrUmNwZ0VYZkFIYWtMaEJoTkZBQUFBQUFBQUFBQUFBUGlKY01NRVZXMzNLcVdVQytBZlRYMHRSdVJkMzlRSFUxK0VJWnRBdU1GRUVRQUFBQUFBQUFBQUFBQ3U5YXVsbVo2K3FUK2tsTGFxdHR0SktaMEtPUXpheDc2cFgwMTlFU2llaVNJQUFBQUFBQUFBQUFBQTNFaTRZY0tpZzdxUXd6QjEwUVgvMjlRWGdxS2Q5RTI5N3hRQkFBQUFBQUFBQUFBQWNCdmhCcTZHSExZaTVGQmJsV0pkUnFqaGZPb0xRZEdFYndBQUFBQUFBQUFBQUFCWWlIQUQvNGxDNUIwaGgySzk3cHY2ZU9xTFFORnkrR2FuYitvTHB3a0FBQUFBQUFBQUFBQ0FSUWczOEpNZlFnNjVtUDZsVmRxb2s3NnA5eWY4K2htR0YzMVRuenBYQUFBQUFBQUFBQUFBQU55SGNBUFhpcEREcS96L3I5b3VoeHoyck5aYWRTbWwzVGdQVUNvVFJRQUFBQUFBQUFBQUFBQjRzS3J2ZTZ2SW5WVnRkNWhTZW1QRlZ1b3lwYlF0MURBdFZkdmxxUWZQQi9TaVRSUUJBQUFBQUFBQUFBQUFZR21FRzdpWHF1MXlVZk43cTdkMHovcW1QaC9aYStJT0JoUnVNRkVFQUFBQUFBQUFBQUFBZ0tVVGJ1QkJxcmJiU1NubG91eEhWdkpCWHZkTmZUemc0K2VCQmhCdXVJeFFnL0FOQUFBQUFBQUFBQUFBQUV2M3F5WGxJYUxRZVV2STRkNU8rcWJlSCtpeE14MHYrcVkrZGI0QkFBQUFBQUFBQUFBQVdCWGhCcGJpU3NoaEswSU90Wlc5VVJkZDhMOFZmSXhnb2dnQUFBQUFBQUFBQUFBQWF5SGN3RkpGc1g2ZTRwQ3F0c3RGMFh0VytEdVhFV280TCtpWTRFY21pZ0FBQUFBQUFBQUFBQUN3VmxYZjkxYWNsYXJhN2lpbDlMdFZUci8xVGYyaGdPT2dRRlhiNVlrbnp6ZDhaQi83cG41VjVBSUJBQUFBQUFBQUFBQUFNR3EvT0wyc1d0L1VCMzFUVnltbDF4TmQ3TGY1OVFzMlVMQXVwZlJZc0FFQUFBQUFBQUFBQUFDQVRURzVnYldyMm00bnBaUzcxRDhhK2VxZjlFMjlYOEJ4TUFBYm10eHdtVkxhNlp2Nnduc0VBQUFBQUFBQUFBQUFnRTM2MWVxemJuMVRuNmVVdHFxMjI0cVFRejJ5azVDNzRPLzJUZjJ0Z0dPQmVTN2pQWHB1ZFFBQUFBQUFBQUFBQUFBb2dYQURHeFBGLzNtS1ErNWFmNXhTMmh2NDJWQXd6aEE4OHg0RkFBQUFBQUFBQUFBQW9EUlYzL2RPQ3NXbzJ1NGdwZlRuQU0vSTY3NnBqd3M0RGdhcWFyczh4ZVQ1Q28vZWV4UUFBQUFBQUFBQUFBQ0FZZ2szVUtTcTdYWlRTaDlTU284S1AwTW5mVlB2RjNBY0ROd0t3dzFDRFFBQUFBQUFBQUFBQUFBVTcxZW5pQkwxVFowTHZiZXF0dHVPa0VOZDJHRjJmVlB2RkhBY2NCMmhCZ0FBQUFBQUFBQUFBQUFHUTdpQm92Vk5mWkZTMnFuYWJpdWxkSlJTMnR2dzhYN0p4OU0zOWJmQ2w0N3BFbW9BQUFBQUFBQUFBQUFBWUhDcXZ1K2ROUWFsYXJ1RGxOS2ZhejdteTVUU2J0L1U1OTR0ckVMVmRubGF5Zk1IL0ZjTE5RQUFBQUFBQUFBQUFBQXdXTUlOREZiVmRqc3BwVndRL21qRnIwSFJPQ3YzZ0hDRDl5Y0FBQUFBQUFBQUFBQUFnL2VyVThoUXhSU0ZyYXJ0dGlMa1VDLzVwWnowVGIzdkRVS2hoQm9BQUFBQUFBQUFBQUFBR0EzaEJnYXZiK3B2S2FVOHhTRjN2OC9GM25zUGZFMWRTbWszL251aEpKY3BwVmQ5VTU4Nkt3QUFBQUFBQUFBQUFBQ01TZFgzdlJQSzZGUnRseWN1SEtXVUhpM3cyaTRqMUhEdUhjRzZWVzJYQXd2UHIvbkhlbThDQUFBQUFBQUFBQUFBTUdyQ0RZeGExWFo1b2tPZTVsRGY4anBmNkliUEpsMFRiamlMU1EybWlBQUFBQUFBQUFBQUFBQXdhcjg2dll4WmRMclBBWWRjUEo1RERucy92TncvK3FZKzhpYWdNTjZYQUFBQUFBQUFBQUFBQUV5S3lRMU1UdFYyK3pudzBEZjFnYk5QS2FxMk84eFRSdnFtdm5CU0FBQUFBQUFBQUFBQUFKaVVsTkwvQVBTU211aFM0eEE3QUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzEiLCJGSURPXzJfMV9QUkUiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkQmxvYiIsImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJsYXJnZUJsb2JLZXkiLCJtaW5QaW5MZW5ndGgiXSwiYWFndWlkIjoiMjMxOTVhNTI2MmQ5NDBmYThlZTUyM2IxNzNmNGZiNTIiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJsYXJnZUJsb2JzIjp0cnVlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6dHJ1ZSwiYWx3YXlzVXYiOmZhbHNlfSwibWF4TXNnU2l6ZSI6MjA0OCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0Ijo2LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjk2LCJ0cmFuc3BvcnRzIjpbIm5mYyIsInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5IjoxMDI0LCJtaW5QSU5MZW5ndGgiOjYsIm1heENyZWRCbG9iTGVuZ3RoIjozMiwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjMsInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjoxMjh9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wNy0yOSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ikh5cGVyIEZJRE8gUHJvIE5GQyIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjUwNzI5MDAyIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDctMjkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MX1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wOC0xOSJ9LHsiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjVmYmM0YmE3NTMwNTIxODdhYWIzYzc0MWQxZjllYzZmYjNjNGQ4NzUiXSwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiNWZiYzRiYTc1MzA1MjE4N2FhYjNjNzQxZDFmOWVjNmZiM2M0ZDg3NSJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiSHlwZXJGSURPIFUyRiBTZWN1cml0eSBLZXkifSwiZGVzY3JpcHRpb24iOiJIeXBlckZJRE8gVTJGIFNlY3VyaXR5IEtleSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50IiwicmVtb3RlX2hhbmRsZSJdLCJpc0tleVJlc3RyaWN0ZWQiOnRydWUsImlzRnJlc2hVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZWQiOnRydWUsIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUJ4ekNDQVd5Z0F3SUJBZ0lDRUFzd0NnWUlLb1pJemowRUF3SXdPakVMTUFrR0ExVUVCaE1DUTBFeEVqQVFCZ05WQkFvTUNVaFpVRVZTVTBWRFZURVhNQlVHQTFVRUF3d09TRmxRUlZKR1NVUlBJREF5TURBd0lCY05NVGd3TVRBeE1EQXdNREF3V2hnUE1qQTBOekV5TXpFeU16VTVOVGxhTURveEN6QUpCZ05WQkFZVEFrTkJNUkl3RUFZRFZRUUtEQWxJV1ZCRlVsTkZRMVV4RnpBVkJnTlZCQU1NRGtoWlVFVlNSa2xFVHlBd01qQXdNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVyS1VJMUcwUzdhNklPTGxtSGlwTGxCdXhUWWpzRUVTUXZ6UWgzZEI3ZHZ4eFdXbTdrV0w5MXJxNlM3YXlaRzBnWlBSK3pZcWRGendBWURjRzQrYVg2Nk5nTUY0d0hRWURWUjBPQkJZRUZMWlljZk1Nd2tRQUdidDNyeXpaRlBGeXBtc0lNQjhHQTFVZEl3UVlNQmFBRkxaWWNmTU13a1FBR2J0M3J5elpGUEZ5cG1zSU1Bd0dBMVVkRXdRRk1BTUJBZjh3RGdZRFZSMFBBUUgvQkFRREFnRUdNQW9HQ0NxR1NNNDlCQU1DQTBrQU1FWUNJUUNHMi9wcE1HdDdwa2NSaWU1WUlvaFMzdURQSXJtaVJjVGpxRGNsS1ZXZzBnSWhBTmNQTkRaSEUyL3paK3VCNVRoRzlPWnVzK3hTYjRrbmtyYkF5WEtYMnptLyJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFJMEFBQUFXQ0FZQUFBRDkveDhsQUFBQUJITkNTVlFJQ0FnSWZBaGtpQUFBQjNGSlJFRlVhSUh0bWsxeTI5Z1J4MzhOSXRMU3pBbk1uTURNTmttVjZhcXB5bko0QTlNbk1DU1NWYUcwTUx3UXNSQmx3U2NRZFlLUlZsbWxSRzVtRytvRVE1MGcxQzVVU0hRV2ovaCsvTkJFdG1jbStxOEl2RWEvZmtEM3YvdjFZNFZOT0F4YS9QbTdLai8rWTFvYTgvd3FmL25yMy9uVGQzZlc4V2Y4WnVHdUhXbjNtd2dYd0J2cmVHVXZCQnBBZzhQZ0haOTZ3eTlpNFRPK0xkcjlKaUt2VmxkakJyMlJZeFhzbnRTQml3Mktob2k4VGE0ZExqZ01XazlvNmpOK0NlajBQVVJtd0JpSnJvbW8wUWthWmFmcG50U0o1QWFSNmdaRmIwdjNueDNuTndpcE11aU5VQjJpRWxLSkpxRDFmSHJ5L0NvcUYyc2R4ampGK2RvNWpPT3dNVlZsNlU2aWEwNlBKN254VHRBQVhxK3V4aXlZNHBJNjZXTCttZENmNVo3cG50UlI1L3RVaGt0K0YxV0o1QlVpdFpJTnFsT1dNaWJzcGJWWXArK0J2RmhyZDZ3MzdFMU5ZRlZlSTJwNVR6Smg4ZTl4eWNaNGJTcXZjcytKanZpUDNDVzJQTWFPR0Y1UW82S3ZTMnNWSFhGNk5NYnpxN2o3NzgzYVpjYlozejduNUx5Z2xyemppTHZrKzBXWU9VU3FxTllZSEUvb0JNMjgwN2g3VnlEMXpKMXJCcjFSc3VCU3l0SURWRm9JcjVKYkRoZTArelBPanE2c0N4WThZcWRRUjRCSlFhSUJmRmo5L2dqekVQWVBBUE1pSzN0L0FQS01Gb21ISkk1MUQvUFA2TjRRa2RmWUlHS3F1Vnd0SnV1RElZYkxHSmlpRWlKcTE0MUNaVy9HWVhDUTZPNmUxSW1jSDRBYW9nVnhBVmZIcTNVL3pnNkFkaEFpdkFleG1DTFFDZUthMURmcUZTRHZOQzYxWk56Uk1XRHNGdXFySlExQmpIT2hzelE5dGZ0RHlMeGs1WmJGdkpVc1d2V0hna2tmR1J5RkxPY05sTnZDMk1XcUx2cmZZU0kyVEs1RjNocmpWL0NDV2k1ZFJualdLTGZCNFNLbjY2a2dVa1gwSE04M2pCTEpGY0xUejlNSmZPTXdYd2hMUXRwQkNQSVR5RSs0dEZnOERBM1RIQWF0VEtRYWgxbk9HNFQrRE0rdmxtb2MxVXZPam94bkdwa0dsZjFSd2pnaVZaUUw0STlQWXZ5ZzU5UHV0eEI1Q1VBRkQvRE1iL1dUS0ZPOTQ5TlJPVFdxWGlJU1UyNE5KOE9ZRGczaXlFb2ZPQUFwTWlBczV1VjdXZDFabGhTcDR1N1hnVkZpOXpyZG9tdWNmSXNkU2pNaEdOVTdJQzVjODdMR2pzZkRwRUN2ZU5zMWthcm5HWHE3WjBremlWWjNmd2hrYy9jMVowY3BBNTBlVDZ5T2c5VHBCRDZEbnYrekRDNUN4VisxQUFCOWkrZjdzRi9OT2J1SXZSQVhtU1pwRnFEVGJ5V3M2dGdZUUNZNStVM0k2eDdSRHBxNWRGM0VRcTV5OWNobTVadnR5TTRqMGxvcjJ3bDJtMjVIdUZUVXo3RkloSmRmbEZiVFNPYVc1U3BseFVWenpDYWhQNk43MGtLZGY2YVA2bnZpWEdtRDhwSnVQMThiUkx5MHBXYys5WWJKeHpaUjdLRmFTNTFkeHd5T2R2dlEzeElWYm1qM2ZaWVAxenVuVVJ1NkozV3k1ZEd1VHY0RWNCRnBacTd2MSs1OGlpbkwzYnNwRk0xd2VqeWgweDhuVVN4U3hRdHFheU5MYUtFRmRyQTVURHJvQXpmR0huMmYzK1hKYnM0WlVjdlZidkVPSVkrYlVuU3F6amc3K3YxRzNTb05zTENNU1dHR0VZVWF5QkIzSDlyQkVPRnl3d2N2MjJHQ280RTY5aDN1VjRCRHZDc0JVUDYxUnM2U3NzU2VKN1ZBOXp0VDhRNHdML2Nhb0ZSamJhYnhGaW9qVkVhWitnUGdubWh1MytXVmRLeHBRMlIxWjFsVjlTNnhhZm5nb1hwcGZkWTR4dE9rOEs4RUZ6VERETlE0REZwNXRwRVpFalVJajFkYnZQNFErTjZpSys0eFpJdSs4Y2JaVmUrUVFxUXJ0WHpoV01BQ0Q3Y3cvM0lEeTZ5ZG0xdWNxR1ZORVlZWkNzNitybGkxNGhwSFU1dk1IQzI4d01mVkpvcFhXT01IdkdCWUNqQ2JIVkhScnE4UEZ5VkVTT2xhOUp6dXlTUnB1aTNtNllzMVBZRnNOL2crK1dYNk9JVWV3NWFQS1RJc0Zjb202ajdZSDhBd1Y3dWYwcjN5ZVN1YlpYYzR1K1IrWTlldU5jSWJWS3VJWkZzU1lhbHBHZHR1MmdmaDZuMWRFVE85NlpYazE3SEpEck1yU3E4M2xRRmJaYlcrcFM3SXdWazE0YTR6aHBvdGR0eG5pUjNHYk12elBRR0pURVBLMXNkUlBuK3g0aXdiZmNKMkJvaDNPRi9LbnVJN1JMYzM2QWE5RVpweGt1aVJmUnp6WGRLZ3JXd0t0SUtzbTJtT21sNVNwdDFpMmVJWFlQbzBpM21MeXQ0a29VeVJLaEUzZEUvZWNIbzg0VEJvNVhvYkFCSHYrSFE4c1o1VktiZWM5VXI3KzE4UDlKeE9VSFpHaVE2c0RBTG1IYnI3VStCRnJ0MWdqampLVHFUVWNnMi9TbVRSdThVTzFhdE1nZDFhSGRGTXJMSXdJaTByUHRBTzNpSk1VYTFEdGw3VHJZRmxuTVpzbDV1cllzN1FaZXc0N2I1bklpZERYeEZwK3oxeWhnalpvdlNPNVVOajI4Uy9iS3dyOGpmc1dFSi9ScWZ2SjhjQXF1L3hnaUZLbGVTSUlEdEZWcTllTXJBNTR4WTdsdUxqMGlUN3pZcHp4YklTK2FqVFNHV3BBVFVrWTRoeXUvYjRKNFAwN09uMGVFTDNwSUU2ZWNjcGRrdFZMM05kMTN3ajZ4NUhtNXh0NkQrb1RKTHpGMXRSRnpGZG5YK3NML3Aya2RrMlQvbUJ6VVU3cEozYnJPNXNOM2R3Rk5MdTF4RnFDQ1lOTEJqaThoRTBQbHVxQXk5V0c1QVpFVmY1THZZajdBaDdVN3lnVGdVUDBYcXFHK01Bd3BURktnV2VIaytNclBvZzlmeDMwekhJaU9VOExFNWxuYjUweDlCcDZqaFptT09EZkYrbEUyUmJURysrWnBQcEdkOEc1Zi9UbkI1UFZnWHVmWDVBeHlXSHlTTGkzYlBEL0gvQS9zKzlvdU1vdHl3ZW1sWlpJM0R3L0hmUFp4aDBUK3AwK3FQa2lOK0dUdjlYdkV0NnhzL0Jmd0doaG1uWWNheWRnUUFBQUFCSlJVNUVya0pnZ2c9PSJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDE5LTA4LTAyIiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJIeXBlckZJRE8gVTJGIFNlY3VyaXR5IEtleSIsImNlcnRpZmljYXRlTnVtYmVyIjoiVTJGMTAwMDIwMTUwODA1MDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxIn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAxOS0wOC0wMiJ9LHsiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbImY4M2YxMGNhYmU1MDUzNzA1MWJhMzA4NmFjMTAxYWU0MzI2ZTBkZTEiXSwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiZjgzZjEwY2FiZTUwNTM3MDUxYmEzMDg2YWMxMDFhZTQzMjZlMGRlMSJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiSGlkZWV6IEtleSAzIFUyRiJ9LCJkZXNjcmlwdGlvbiI6IkhpZGVleiBLZXkgMyBVMkYiLCJhbHRlcm5hdGl2ZURlc2NyaXB0aW9ucyI6eyJ1ay1VQSI6IlUyRiBLZXkgLSDQstGW0LQgSGlkZWV6In0sImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInJlbW90ZV9oYW5kbGUiXSwiaXNLZXlSZXN0cmljdGVkIjp0cnVlLCJpc0ZyZXNoVXNlclZlcmlmaWNhdGlvblJlcXVpcmVkIjp0cnVlLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbIndpcmVsZXNzIiwiYmx1ZXRvb3RoIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDclRDQ0FsU2dBd0lCQWdJUkFMaGQ5NC80MzEySW16a2llbTlrVXZnd0NnWUlLb1pJemowRUF3SXdnYWN4Q3pBSkJnTlZCQVlUQWxWVE1Rc3dDUVlEVlFRSURBSkVSVEVPTUF3R0ExVUVCd3dGUkc5MlpYSXhHakFZQmdOVkJBb01FVWhwWkdWbGVpQkhjbTkxY0NCSmJtTXVNU1V3SXdZRFZRUUxEQnhJYVdSbFpYb2dRMlZ5ZEdsbWFXTmhkR1VnUVhWMGFHOXlhWFI1TVJjd0ZRWURWUVFEREE1SWFXUmxaWG9nVW05dmRDQkRRVEVmTUIwR0NTcUdTSWIzRFFFSkFSWVFiR1ZuWVd4QWFHbGtaV1Y2TG1OdmJUQWVGdzB4T1RFeE1qY3hOREV3TVRSYUZ3MHlPVEV4TWpZeE5ERXdNVFJhTUlHZ01Rc3dDUVlEVlFRR0V3SlZVekVMTUFrR0ExVUVDQXdDUkVVeEdqQVlCZ05WQkFvTUVVaHBaR1ZsZWlCSGNtOTFjQ0JKYm1NdU1TVXdJd1lEVlFRTERCeElhV1JsWlhvZ1EyVnlkR2xtYVdOaGRHVWdRWFYwYUc5eWFYUjVNU0F3SGdZRFZRUUREQmRJYVdSbFpYb2dTMlY1SUVaSlJFOGdVbTl2ZENCRFFURWZNQjBHQ1NxR1NJYjNEUUVKQVJZUWJHVm5ZV3hBYUdsa1pXVjZMbU52YlRCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQkNCTHlqL20zUkR6WTNJRmQzTXN5ZzRleG1rTEdNaEM2YUdIK1VtemwwMWJiVG1vNklRY09hb3ErcmFJRndHdmkzc3dJQ0lQQ3FVS0ttR29oclNVb0t1alpqQmtNQjBHQTFVZERnUVdCQlFLOFlWOXpZYVhFYWc2My9OQmtoeXVBUTN2UERBZkJnTlZIU01FR0RBV2dCU21vaTNGaWt5MXEyaVRYWkdNQ0o3SU5TRnFtakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VBTUE0R0ExVWREd0VCL3dRRUF3SUJoakFLQmdncWhrak9QUVFEQWdOSEFEQkVBaUFuTjh6ZHR3RnBEME8xaFpWMHpZU3ZoU3hpOG44MEI3aGwySTd3SkdVb3l3SWdQcUd1VW92a2E5eitLenZVc2YrR05kUzVZYm54NjVPenlxeENOVHhLalZRPSIsIk1JSUNzVENDQWxpZ0F3SUJBZ0lSQVArVzNRdG53TXlYYWZ1UW9OYVhjcVV3Q2dZSUtvWkl6ajBFQXdJd2dhY3hDekFKQmdOVkJBWVRBbFZUTVFzd0NRWURWUVFJREFKRVJURU9NQXdHQTFVRUJ3d0ZSRzkyWlhJeEdqQVlCZ05WQkFvTUVVaHBaR1ZsZWlCSGNtOTFjQ0JKYm1NdU1TVXdJd1lEVlFRTERCeElhV1JsWlhvZ1EyVnlkR2xtYVdOaGRHVWdRWFYwYUc5eWFYUjVNUmN3RlFZRFZRUUREQTVJYVdSbFpYb2dVbTl2ZENCRFFURWZNQjBHQ1NxR1NJYjNEUUVKQVJZUWJHVm5ZV3hBYUdsa1pXVjZMbU52YlRBZUZ3MHhPVEV4TWpjeE5EQTRNRE5hRncwek9URXhNamN4TkRBNE1ETmFNSUduTVFzd0NRWURWUVFHRXdKVlV6RUxNQWtHQTFVRUNBd0NSRVV4RGpBTUJnTlZCQWNNQlVSdmRtVnlNUm93R0FZRFZRUUtEQkZJYVdSbFpYb2dSM0p2ZFhBZ1NXNWpMakVsTUNNR0ExVUVDd3djU0dsa1pXVjZJRU5sY25ScFptbGpZWFJsSUVGMWRHaHZjbWwwZVRFWE1CVUdBMVVFQXd3T1NHbGtaV1Y2SUZKdmIzUWdRMEV4SHpBZEJna3Foa2lHOXcwQkNRRVdFR3hsWjJGc1FHaHBaR1ZsZWk1amIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBVHV0aC8zY2NWbEkvaEd5Sjd6U05hcWhDTER5S005SnVaTmpjVHNuREFZeVJET3B6WUVXaUxxczNqZGZWS2QzVmd2OC9qK2ZvRE1TTXBJK213ak96L3BvMk13WVRBZEJnTlZIUTRFRmdRVXBxSXR4WXBNdGF0b2sxMlJqQWlleURVaGFwb3dId1lEVlIwakJCZ3dGb0FVcHFJdHhZcE10YXRvazEyUmpBaWV5RFVoYXBvd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBT0JnTlZIUThCQWY4RUJBTUNBWVl3Q2dZSUtvWkl6ajBFQXdJRFJ3QXdSQUlnTjRnTSs5dTNOQkxNa2RFVzFQYURHOU9sWlppVWI2dmhDTU1OaTQ1cTA2c0NJQjhBOEtsOHRSVi9Ha0pZUFMrcnV5MG5MUzNWK3RDRnpUSUVpQkFZazdpQSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFJQUFBQUNBQ0FZQUFBRzBPVkZkQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUF5UnBWRmgwV0UxTU9tTnZiUzVoWkc5aVpTNTRiWEFBQUFBQUFEdy9lSEJoWTJ0bGRDQmlaV2RwYmowaTc3dS9JaUJwWkQwaVZ6Vk5NRTF3UTJWb2FVaDZjbVZUZWs1VVkzcHJZemxrSWo4K0lEeDRPbmh0Y0cxbGRHRWdlRzFzYm5NNmVEMGlZV1J2WW1VNmJuTTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlrRmtiMkpsSUZoTlVDQkRiM0psSURVdU15MWpNREV4SURZMkxqRTBOVFkyTVN3Z01qQXhNaTh3TWk4d05pMHhORG8xTmpveU55QWdJQ0FnSUNBZ0lqNGdQSEprWmpwU1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJajRnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJZ2VHMXNibk02ZUcxd1BTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZJaUI0Yld4dWN6cDRiWEJOVFQwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOTRZWEF2TVM0d0wyMXRMeUlnZUcxc2JuTTZjM1JTWldZOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXpWSGx3WlM5U1pYTnZkWEpqWlZKbFppTWlJSGh0Y0RwRGNtVmhkRzl5Vkc5dmJEMGlRV1J2WW1VZ1VHaHZkRzl6YUc5d0lFTlROaUFvVFdGamFXNTBiM05vS1NJZ2VHMXdUVTA2U1c1emRHRnVZMlZKUkQwaWVHMXdMbWxwWkRveE1qRkRPVUkyT1RWQk1ERXhNVVUxUWtSQlJFUXdRa0pGTVVaRlJqaEdSQ0lnZUcxd1RVMDZSRzlqZFcxbGJuUkpSRDBpZUcxd0xtUnBaRG94TWpGRE9VSTJRVFZCTURFeE1VVTFRa1JCUkVRd1FrSkZNVVpGUmpoR1JDSStJRHg0YlhCTlRUcEVaWEpwZG1Wa1JuSnZiU0J6ZEZKbFpqcHBibk4wWVc1alpVbEVQU0o0YlhBdWFXbGtPakV5TVVNNVFqWTNOVUV3TVRFeFJUVkNSRUZFUkRCQ1FrVXhSa1ZHT0VaRUlpQnpkRkpsWmpwa2IyTjFiV1Z1ZEVsRVBTSjRiWEF1Wkdsa09qRXlNVU01UWpZNE5VRXdNVEV4UlRWQ1JFRkVSREJDUWtVeFJrVkdPRVpFSWk4K0lEd3ZjbVJtT2tSbGMyTnlhWEIwYVc5dVBpQThMM0prWmpwU1JFWStJRHd2ZURwNGJYQnRaWFJoUGlBOFAzaHdZV05yWlhRZ1pXNWtQU0p5SWo4K3ZyNVhJZ0FBRS85SlJFRlVlTnBpRERsNmdRRVA0QUxpQkNDZWhrc0JFdzd4LzFDc0RkVzhEMGtNQmJCZzBRZ0NBa0Q4RVVuY0NVby9SbExEaUc0QWlnUU9JSXVrOWk4UU02TzdBSjltZEhYL2tjUGdQd21hVVF4aEl0Rm1kSEFGWkFBM0VKOGhFQnYvY2NqcmdBeUlCMkpqTWwwQURvTnBEQlFBRmlJQ2lxQUxZR0FkaVpiL1IzWUJJNTZBd3V0QzlMeHdnQVRiUGRIREFPWUtKU0MraDBkekFCQzdBUEZlYklISWlKWXZDQVlzUUFBeEVpZ1B3b0g0Q3hCdkpTVWEveE53RVNPK0FnVTVTek9pYWNMcVBTWTB6VllFRWcrR0lTeGtaR2RHcEF3R1R3ZnBaSlFGY0JmOEo3TThBT241eDBRZ3RjR3dFN0ZKR1JmWVMycTlBQUw5QkxMMVRQUkNGUjBVWVVrUHlDQU5pRTh3VVZDZ2dvQWxzaGZxU0MxTWtMMEFja1VqT1dtQkNWdHRRNFR0akxoaUFTU3hCeTBOSUdNdDlEQURDQ0JDNVFFNitBekVQR2hpMzZEdENHU3dISWlqaUsxWEdJaE16ZitobGpPaVlXNDBmaWNRUjZMcFN5YTNnWU1jNW94RUpya0tMT3JuNEtxaW1mQllERE9BaVlFeWdPNXdrUG1xdUFwVUVCQ2xNSE1SNDVCYlFMd2R1VUIrRGNUbmdkaUlnZllBdVZaZ2hZV0FDQkIzazlHMFFNYVR5WERNTDVBRFFxR2NaZVFVUlVnZ2g1em1EUk0wSHc4WVlFSnJkRlNSRUkvbUJGSTdTWVg1UWlqZFNvTGpUNUZZUHNDQUNiWXFPWUZBL0ZJVG5JYlM1dGhxbzFRYU93SzVrRHVGclNTY1EyUUxsMVFnQnpXdkh6MjZXQWdVRnRKQS9BU0wvQjFvdGowRzdkTktRaHY4b0toa0phSTRKcnFUOUJSTkl5akUvZ0N4Q3A0bXpGbTBoSVlYQUFRUXFlMEJsQVlWMUtMdlFMd2ZpTy9Tb3B1SURIeUFlRE1KNWN0L1loVVNBaWVnaG0zR0VhL1k0dmNmVWhPTW9oRDRqeVZOeUJEYjl3R0NxNFE2M0xoQ29BR0w1WXg0TENlVTR2K1Q0b0FsUUZ4UFpobVA3cEFMaEJ5QjdnQXpJSTRtWXdRSkZ6REUwZXJDNllDVFZMU2NBVWYzRjI4bm05cVc0eHFnbUlvdkRkRENjblN6czlBZDhKOE9scU03b2g1YmRVd3Z3QWZONm1BSGFBOUFVL0F6Y2tsNGdJTFVUV25hWVdLQzlna290WnpjQmt3Zk9mMis1MVNJZ2pKWURZdnNBQzRpTlV2Z2tmTWkwb3dtbUozSURwaEhwT1lsZU9TMkVXa0dPNngyUlhaQU9KR2FZNm1ZRytZelFkdHdsQlNyRE5ER0tUbTVZQm9MdEYzM253cU9JQmJzdzFjYmZxRkRJZVNJendIY2RDd041WkFkZ0J5Y0xUUzBGRG1xSDZPSHdDY29YVTJueWdnakN2aXhOUmhvNVB2UHVOSUFSb09CeGkwanZDMmlEelRxbGhQVkwyQ0VSa2taaFJZekEvRkdmT1VHQzRHZ0FybThFNHZjR2lEZXhBQVpjQVIxeDAyaFJiazVqb0tIa2R5dUdhN0JpaEFvcHJpMFpDSWg0WUJ3RHhGcXJVbnBUUUVFRUNYakE4UUNEU0F1aFBhNFNDbHBRWlBqb05IWFJiUjBIQk9WemR2T2dEbUVmSjBCTXNXRjd2a1NwSmppQmVLWGFQS2dTbm9oQS9hWkg2UEJFZ0FGYUE3endLSHVJOVNUeU9NcHZXaU5BQWswK1ZsNDdEMkxaT2N2ZWdlQUhwTGwvVGpVdkVQempBQVpMWjEwTkROVzRGREhpdVNlQjdRTWdNVlFTeTRTNFdCaEdtVFhTQ1R6RlhDb2tXZkF2M2lHckFDb2d4b1lnNjFGVFdTU3BUWjRpR1N2SDU3YW4yQkFrRHBFQ1FPOGRHcThFd00yTStDZlhQZ1BUYjF4cEtTQVloeUd3VUo5c0hnZWwvdXdkV1QvRTVzQ2RqTkFWaXFoQjlSL2hxRURjS1dJLzRSYTQrdlJQRy9CUVA1Q3M4R2FJbkNPRUFjeVFOYXBnY0JNcU1hVERNTURZRnM2Z1JFQTY1QVVaekFNVHdEeTIyd291eHM1QUpDNzRFcDBjSWdudExHRTNJcGNRYWRBU0VWcWlzTURBSGtJZ0piREFURFBnc1l3QmRIa3dwSGs5OUFwTUR4QUFXQ0pwUXFrTmdnanNTQjFwbEhCcTQvZUlXTmlJR0Z1blFLd2t0d1lvckk3ME1jVE5FRUI4QjJMd3NCQlVtamRvcko1THRoYWd2dXdLRnhGbzRZSnFXTUw5NmpvQmxNc1ludVljRmdDYWlGeTBpQVFEcENnMW92SzloL0ZJdGFOYmQwV0RMeWxRWkoyUk92anUwRjdjMG9NNUMxQ0k2WHd3N2FZNlFyNnlqbGtBRW9Cd1RUTzQ3dWh2Ym43TkxibkFvN0lRR2tKWXVzWXJSa0dyYjlYV01RdXc3SWpjZ0NBdGx4WmtUQW1NQlFBcUhNbmlrVmNEMWR2OERnRDl0bUZvUmdJVTVFNmR6aHJKR3dESXFkd0ZFUkRLUkRtWW1uU2I4TG1MMEp6VTlkQXJTVjhBd3FERU93Q1lsZGkyeUdFQmtXMWNBd29NQTFTeno5Rzgzd2RvUWdqZFc0T3VjRFVIV1NlQjBXTURKckhtd2xwWWlIUkVsZ2dnUHJ1bDdESWY0UG10UTBNa0swQjFCdzhCUTNQK1VJTE5pMXFOYm1wTVRrNmc0SDBmWVhVQktCMVQyUlBqMUVqTDJlZ05XTnJhT2haVUl0UkdNMCtpdVlHV1dqZ3lGWUc3SnRSV0tCdGYyZG9RMFFCcWNQRkRDM0Fia0hiSXFDUy9EWTlrZzlBQVBLdUxTU0xJQW9mTmFSQUpCSVNJN3NRV2tTUUpVWkptZDN3SmF4ZUlvZ3NFSXd1aEQwSTBvTkcwVU5sUlE5WlVZRVFCUktJa1JIZHlDTHlJU3FRSWdzaXFNZ0tvWWNTcEZEcjlKL2gzNll6dTdQN3o2eTdmeC84b0xPek8zTytuY3VaTTJmT2h1RWZJS09ZZmdXMFFFSGhQeEVCV0ptaE1Dc3pMb1F5YW1tTUtQTnhEdzZlbDM3L2poaTJDVmdaQTJUZ0cyMkhwSUh6dkl2d3FsTnNPVVRhRzNyR2QrbytrU1pnTVZVV3ovaHM5TWlMNTBEUVhVNmNobTN3eUkvNWJ0THpPNk5Hd0h5cVdJOUdYckdUaXdyTE4wZDZDNld2MEhqR09pcnZYaFFJR0ZFWUcyUTBnL3RldmtBMzVTc2tiZE1ObFVSRTNWZ1FzRWR6WWJTTjhoencrZndQTkVEbmFLeEN6NmF5VWcweUMrQ1VsZStSWnplWThYZ2RwSmVFVStaSGpiVUF1dVM5c3RrQ1JqMkV2MGh2M0xTN2J6ODkxMnVqcEE5b3o4OEdBVzdON0FkVnNNYXlUbkdUeW5ua2t1Y29yVStNRXVBbS9GWklIc1FJQytnT084M2xPdW9RcmFiR0FPMjRQV05nL01nZ3ZTT0x1YjZERktsanFiU0FVUmRWTlNxbXNYRzBlT0xRNG1XNGNTUGdpaUw5S1NUYzVLS0VLbERIdCtrTlFrQUo4UDd3NlAxZkN0SEVmbEJIdEJueVM4QXpKZzFENXF5SGFBUHJ1RlpoTmRxdVM4QkZKcTBMTk9NRlJRRFhxVXZJT0tOTGdPd1QvQUFTeHNnNEFRZEZibnU5dzRzQTJWbmkzZS9mY29nbmJqQ0syUVl2QXVUbDZIU0lON0E3TjBwcGJTb0Nqa1JJeVRFSlBIWjJXdEpjV1FJYTBsQjRnWjIwamhCWUl4T1E2N2lZQmVrSlhFa0tVL3M1bVFCeE9oRlBmWXhBK3FKWUh0c0VBY0k1dWd6K0g4emtab0VGSVJYZUFYODdTbU9NdlpVaHRnQ3hXdnhEUUc2SXJMZVJ3UEo4alBFODdvSjlMNVJsanI4M2lhVmtWVWpDbzZOaXVhYjl3ZFlzNUhRTUx4UXRJSXltVjYwcHZKY2RJbFhJRG1EWm1VeS9MN1pROE5VQTk2eTJVSTk1MHY5ek1pRVpubDJnd25DaFFlMkZyU0cwekdsSXdFU1A5WUFKQlNRSWlrSWdZRUltby9pc01seElIa1FEWEZ5OERCR3gwWWw4d3dVSDljQVlObHdQenFieDUxc0lBNWFaZnhyd1B0T0hzYmw0VWYxSXdBdm13Z3pEaGZjRXVNZjA2VFhPc05PSEJIQWZzcWcxWEhpNXovd0hReG9YQnBDQTI4eUZPZ3VGNmU1RW84N1FaTGpzUXRVRkpJQTdIenpaQWdIRDhHL1FUeG5vUG1mRDlON0lwTjN4ZWl0SXdoY0xsUkdhSjU0VHdyQ09RNHBXYUJMY2VITEt1UnptQnNJV3k1VkM5N2RySVFpdlFxZVRBSzZKYklIMFFMM2JSVUZBbCtKNmZob1FjTUp0blpFcE5Va1oxMk11Zkk0aWZSZEhBTGVwV0JwekFyaFFvME5jRjBDOFZEemtlSXdKV09abEZQSGFHa1BzamFud1p4WHB2VzRFZEN0dWFvNGhBWncyTzFjMUN6Z3hoVW5ibndadi94UFh6VGtDK2hYS3lhR1l2LzBDTnoxQUJ1ZWJ2eThtd25QT1hadTlGQ0VPMlV4YWV3d0lrSjI3TVB6ZjVTQUUvSVRraDVFRU5rWmNlTTY1cTBSSEZWWUI0d2ZJbjZWNkhWSGh4elBDR2dscmk5R0ZuWjVqUlpic0JhbmlxMS9oZFFsQTFFakw0ODhSRTM0aHRRQmZ3dnNoQUlFdU5Pc2MvK01XZHpXTTdVbnlJbXFoVHh6amxxK05WYitWZHdZaHdDMXV0TitocVV2czgrTWcxT1ExOEFUQUpMSlBJT2svSE9YaGVDUzhXeTRvWmk1WEJEMDRpU1E4aElUZnZqemk0azkyWE1iemdXaDlmazdhMkh0SE44S2RxVHhTVkdaQndreUd6L0Rqb29keFFnTHRiNlJ5Y25RcEpEN1BNYWlSRi9OVmdQbU4xNVBnWWZFeDNRV0FlYlBZR2hhRjNQZTdxTno2VkI5a2FnQjdUQlhDcHZqT291RGlNNmZHZkpkTmorQUQxSGV4a3BXZ2prS3RDL0dCQWZIcDRjT21HYlY1ZXZ5K05Cdk1wa1hXRXBxK3BrSnlCeGk3MGxzaURJL0UzZ0x6dThNc2ZnblEzcm1HV2xGRmNYeDU2RkprSklTYW1NWk5MNW1pZmJDSW91Z3E5cEtFeXBJd0E4MnVsTjBNTkFzcSt4SmhvV0NaNWFPWFZwYmFBN09Ya2Q2TW9xTDhFSlJtRDVNa1A1UWEyQVBMTXN6ZlBXdDNodE9abVQyUE0yZm0zUDJIZzlkelp2Yk0zbXZON0wzV1h1dS9Hc0VmVUcrUXprTUNaWnQrQnF1UG82OStUdEJGVTR0VVlpTktPcjMrb1M5MU5IbXYraENnOGY1T1B6c3NYL3FGd1RFRnZHZFlONGgxbnFCUFZGb1IvY3pVSmxxb0xjSjVLRWFYcmdrM1MwSktrNnhSeXZuOXRhb3h2dCt6K0Qyb2d6MGpnZkFQU1hsdnFMOHVzcGZvZDNIQTJoVUgzSnZhaHJsUDNpRHp4YTVpcDFNQUJRdUhUejJEeUx3NFY1S0htV0VxVHBRSzhSQlRBSHRqKzlTSmNKdCtaMzZubE1XWENhL0ppdkF1TlhwTWY5NlRuSVhqTjFvQm1KTmY5Z3pRbGhRRzZDOTl1ay8xQ0JUaTZQVVIybGlyRnFrNW43L1RvQmx1cjFKd2VGejc5RFFGWURYOGhWUnlKSktTMXZLcW5TWGxOQ2VFZGF3KzNUK2tlTSs4RGE3MUtBUlA5NlB5Ly9qU3FNRExlRURIWXFzRTB5RVVXZ0Z3VXIydUhZWGhZMlNDdHRpMG0rNFJ4c2txakN6VHZQYXIwclY0RkdKWndqYlBWb3ZqaUw1dGVqV0RBbHl2SFRva3RVTlBiSUNMOTE2MVdIcXBTYmN5WjJzWEZPSVdqMUt5Ly81K2d2WW1TYVdRL1ZWRlZBREQ2dlJjelBOeFRvelN3ZVR0Y1g5V2pwR1VzRVBuZTZNUVNRSkxUR3Job2lJb2dDbEVGeWZHZXFQYTRRd1lVYlRibXNqZmNwOUhHZUpXTHBxdFk3czZqd3F3VFB3TDhRVUIxK2RncWRTUitFV2FIeXVrZHExTlcwelJzVjZZQndXWXFqZHpjNHp6R0FCODVYdWs1OEpVbXlWZjROc1k1ekwyMXpSQ0FTQTJKYUI2VllSeldPRU8wZzQvS3c1ZTRQQTZYY2ZtcVlqbkVnbTNYV0s2OWVNb0FGNHpDT1JPc3p5K1MyMzBWaWt6NkRvRW8wTVZJVXFtNEFpMWxxYlhXd0ZJZVZ4c2Vld0c3Y2hGMHR4VUxQWENNb2xlWTR1M3g2WjZLQUJQTDVzdzUxb2NhK2lpcjNReVRBVWJ4WTVDMTRBSGp2S2QvZEpTZ0hhZG84S3F6YjBqZG5UWkR2RmdLSVJ0d29Fb1g0cUwvS3lrQ25DNWhKY0UvRnlWNDFJbm8weGdBdUpzUElTRVlvNk5xd0JqeEQ5L0ZQd3E1WTBkcWduODZlU1NPVjVWUmVnTU9RNU8wTkZSRllDay9hQnlEY3p2YkdOKzQrVFFjQ3hWUlhnZzRCaDJHdHRzRllBZHJ0ZDhHaklGeXphNGNjOGQ3bGJaclBXUjh4dTJDb0FwVVIxcTlaWllWcXB6YURnbXE2eTJWbjAvVEdwUXNWVXJBQXNMTDBrR1FSVURkREhvVUN5UXJYR0tsT01uRENBTXZUaElBYXJuRVNKaGZuSmpXVmhRZzZoNlYzVys5ejllLzNHSHZpYThZRnVXT1ByZm0yaFFXT1BnT2gycTlqSWJLamhPZHFuQ0gyNml2aEpNVzgyWFN1UVJZWGl2VkN0QUxYT0NzR2tDSWo4cDhDQkFqdnU0Q2p3S2lGdGtsL09qQXZlZG9KcGE5TkNkUmdITUZFQzZrbDlTYXhIclNKRGtZYUp2dTJJSTN3emVoMUlKNXk0aXQvNzVQdCtQVlZQL1B3VUk4dUpkVUxCTzg3U1R2cFZtL0gyN1RnMExDellXNDBMNjFLMEFKQ29HK1l6NTdiaUNkQmpUWjBZZDI1OHI0YTd4dktDZnp2ZEJWa0ovRklCRXl1RUJCdzRNYVNndldKZlJmYlpMOUtDTlJvQ2QyNkM2ZDhoOG1DbFoyamVrc2ZFNTd5eXYreXhaaktiRlhGZGtpVEFhZk9RK29LU1dRTmdDWjBMT096c3E0K3VWYXBqTWVVT1k4NjQ3TUxXa3dnL2JGajVUOHMwZituTURydmwzanNjRHF0Q3dVaWpkK1lrSUhoS0VBeGFOWHAzakRyUFJrV1YwTWJ1Z20zSThIamJUSVJGZUIxRUEvUDAyeERhVGN0eGhzb1ptWm5pOWpoeVBSWXZsdzBxVTEyNFVnSWllenl4T2FNdjVXb0Mzd0dVWlhJZFNHQi9rZUJ5bWlBODdiQlhZSStpdUg4S3JvTXV5OFp0eXZ2QXhjWFB2MXFIdDlkcjJ4emtmZzA3TDR3ZzJQVnp5RE53K2k1TW1TUHBWdHVxQmNTcXNoMU5veStUMVRTeEF2eWRaK2tLWThqZUxaL1hQYnQ5YXk0dmNJOFhCYktuazRlRVhoNUZqZDhpOFNPN2VPWkpPWm0vV3NDMDg5SUphQWVLbGljTWp1TU95QVFweHJoT0hQQUU2M3dVV3g1R2tneFByZTZteS8ySHVlTXp5WXJ4YWozZGpuaHUwSHYwOGFIbnNBaVA4YWdVQXNGclpWTTBpVE94cE4rNjV3V3F4Uy9KaGlwdm4vYUw2cE4vRXZvSWdwRW16M05nM0hJdkZmOSsvbHYvaW55QUZNUGEwYlpXVVI2UjJrUkdIYkhDRGxMTzFiVEN2bG5sY0NqaDRUUVRiZTVpVFJlWVlFMkVhWHVIM1VBZk5HOWVwY0cwQUUrZEFKNVBNUUxEdUZzdGpJWm55WlhBSld6amdXclVwbzloYmxhQ1BrMDNkUVpDdWJYMXUrQVlEOXdWc1ZvNTQvNTZ3dEF6WUpUdlJ5YWl1NXA2dDhCK1MyZ1hVSXlzQWdQYk54c2RNR0RtZXRwT2NyRkxIR1dyRzJaUUdtbmIwTThlbTBTZ1VNZVNWRVdRUVJxc08xeDhaS1lPY3pGSURLZmcyWGxwbzl1QWJmc2EyNGFnY1FWQ1pFU0VjeHZJRllUTnhCaU9jN0JLRHNIeWJzaTRyOU9HTFJKSWRseVp1cW1wbEdIM3JkalZYSE9JQkhvYXcyQU9jZDBNbEpnTnBFcUpJQWtrSUtMMGo1RGpNbGNsT2xwRkI3RVZZallPWnV1amVGZmNpYVZERlVsV1RiZE9nalNTMkgrOTBNclVHTVFqTEEzNWZwR08rUE9tRjBpU0x2bFZ2YXFuUDc5UjhXK0prRzRvbnBVeVBIeVQ0MjlPNldEM280anYxSnVmNEtNbDZKMk5mUUwxem84OTBrS3JnRGJLb0cwanU0VVlKenFUWm93dkdiZnJoNzYrbHpFVFdETUF2TWx5dElqNGo5ZCtCSVF2b1M5U2tyaHV5TGh4SmpaeFZrcXdjQ3BtL082VmNyMituTG9CMnEvbXpSK3BQT1krekM0cDc2RmZnU3laYWVvaitQVVJONExpZzRCV1UreTlsSlpCR1ZnNUZHZUREN2VtUlJiemx5R2grc1JFWGIyVFpPSnhKdmZWdHdIYnkyejFJNk5Ed3RXcmYrelJLK0kxV0FDL1lSQm92bFVoYzVzdm5SU05YQ3c2Y1pTdDFMV1Q2ZDRVRVJ5ZjNPQVdveGxjNkY1WThnM2FobE4yZGUzTXM3TDA2clozbnVXK2NaZE4xdlpJN05FUDFjTGFoaVltREVHRzByckQ3MTFIQVdDa3drY0JCQklIVWowVWV2RjVIampURFc5WWhMdjRGTUZiQjdvLy9KSVVBQUFBQVNVVk9SSzVDWUlJIn0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIyLTA3LTA4In1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMi0wNy0wOCJ9LHsiYWFndWlkIjoiM2U5ZGIyODAtMjU2YS00ZTE3LWIwOGUtMTlkNzllOWJlMTY2IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiIzZTlkYjI4MC0yNTZhLTRlMTctYjA4ZS0xOWQ3OWU5YmUxNjYiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiU0VDT1JBIElEIFYyIFBheSBFZGl0aW9uIn0sImRlc2NyaXB0aW9uIjoiU0VDT1JBIElEIFYyIGJ5IEluZmluZW9uIFBheSBFZGl0aW9uIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfSx7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQ1JUQ0NBZXVnQXdJQkFnSUlVR0Y1UTI1RlpERXdDZ1lJS29aSXpqMEVBd0l3Z1pReEN6QUpCZ05WQkFZVEFrUkZNU2t3SndZRFZRUUxEQ0JEUVNCbWIzSWdRWFYwYUdWdWRHbGpZWFJ2Y2lCQmRIUmxjM1JoZEdsdmJqRWhNQjhHQTFVRUNnd1lTVzVtYVc1bGIyNGdWR1ZqYUc1dmJHOW5hV1Z6SUVGSE1UY3dOUVlEVlFRRERDNUpibVpwYm1WdmJpQkdTVVJQTWlCU2IyOTBJRU5CSUZObGNtbGhiQ0ExTURZeE56azBNelpGTkRVMk5ETXhNQ0FYRFRJMU1EVXpNVEl5TURBd01Gb1lEekl3TlRBeE1qTXdNak13TURBd1dqQ0JsREVMTUFrR0ExVUVCaE1DUkVVeEtUQW5CZ05WQkFzTUlFTkJJR1p2Y2lCQmRYUm9aVzUwYVdOaGRHOXlJRUYwZEdWemRHRjBhVzl1TVNFd0h3WURWUVFLREJoSmJtWnBibVZ2YmlCVVpXTm9ibTlzYjJkcFpYTWdRVWN4TnpBMUJnTlZCQU1NTGtsdVptbHVaVzl1SUVaSlJFOHlJRkp2YjNRZ1EwRWdVMlZ5YVdGc0lEVXdOakUzT1RRek5rVTBOVFkwTXpFd1dUQVRCZ2NxaGtqT1BRSUJCZ2dxaGtqT1BRTUJCd05DQUFSbmp1TC9JcFF0TXFFdUtRSlZOa0RnekhqVzdqRzQ2RFc5TkJtYmR0VktyU1EybWpqdHNMTlYzWURVMlVhNnJDcWg5Ni9nNU9pWEhXbDFuOHowN2paSG95TXdJVEFQQmdOVkhSTUVDREFHQVFIL0FnRUFNQTRHQTFVZER3RUIvd1FFQXdJQUJEQUtCZ2dxaGtqT1BRUURBZ05JQURCRkFpRUFuZ1dIRnZ1aDlOQWliQTd4d3F3c2k5b0toYU9TUEN3NVFjdUU4aC9vUzU0Q0lDczJQRXFwTEZuMUNOak5Uc0xkMkkxVTdQcnJzVG43Zm1aUmp4YVJEaUpBIl0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUljQUFBQThDQVlBQUFCTTZxbThBQUFBQkdkQlRVRUFBTEdPZlB0Umt3QUFBQ0JqU0ZKTkFBQ0hEd0FBakE4QUFQMVNBQUNCUUFBQWZYa0FBT21MQUFBODVRQUFHY3h6UElWM0FBQUtMMmxEUTFCSlEwTWdVSEp2Wm1sc1pRQUFTTWVkbG5kVVZOY1doOCs5ZDNxaHpUQUNVb2JldThBQTBudVRYa1ZobUJsZ0tBTU9NelN4SWFJQ0VVVkVtaUpJVU1TQTBWQWtWa1N4RUJSVXNBY2tDQ2d4R0VWVUxHOUcxb3V1ckx6Mzh2TDc0Nnh2N2JQM3VmdnN2YzlhRndDU3B5K1hsd1pMQVpES0UvQ0RQSnpwRVpGUmRPd0FnQUVlWUlBcEFFeFdScnBmc0hzSUVNbkx6WVdlSVhJQ1h3UUI4SHBZdkFKdzA5QXpnRTRILzUra1dlbDhnZWlZQUJHYnN6a1pMQkVYaURnbFM1QXV0cytLbUJxWExHWVlKV2ErS0VFUnk0azVZWkVOUHZzc3NxT1kyYWs4dG9qRk9hZXpVOWxpN2hYeHRrd2hSOFNJcjRnTE03bWNMQkhmRXJGR2lqQ1ZLK0kzNHRoVURqTURBQlJKYkJkd1dJa2lOaEV4aVI4UzVDTGk1UURnU0FsZmNkeFhMT0JrQzhTWGNrbEx6K0Z6RXhJRmRCMldMdDNVMnBwQjkrUmtwWEFFQXNNQUppdVp5V2ZUWGRKUzA1bThIQUFXNy94Wk11TGEwa1ZGdGpTMXRyUTBORE15L2FwUS8zWHpiMHJjMjBWNkdmaTVaeEN0LzR2dHIvelNHZ0JneklscXMvT0xMYTRLZ000dEFNamQrMkxUT0FDQXBLaHZIZGUvdWc5TlBDK0pBa0c2amJGeFZsYVdFWmZETWhJWDlBLzlUNGUvb2ErK1p5USs3by95MEYwNThVeGhpb0F1cmhzckxTVk55S2RucEROWkhMcmhuNGY0SHdmK2RSNEdRWng0RHAvREUwV0VpYWFNeTBzUXRadkg1Z3E0YVR3NmwvZWZtdmdQdy82a3hia1dpZEw0RVZCampJRFVkU3BBZnUwSEtBb1JJTkg3eFYzL28yKysrREFnZm5uaEtwT0xjLy92Ti8xbndhWGlKWU9iOERuT0pTaUV6aEx5TXhmM3hNOFNvQUVCU0FJcWtBZktRQjNvQUVOZ0JxeUFMWEFFYnNBYitJTVFFQWxXQXhaSUJLbUFEN0pBSHRnRUNrRXgyQW4yZ0dwUUJ4cEJNMmdGeDBFbk9BWE9nMHZnR3JnQmJvUDdZQlJNZ0dkZ0Zyd0dDeEFFWVNFeVJJSGtJUlZJRTlLSHpDQUdaQSs1UWI1UUVCUUp4VUlKRUE4U1FublFacWdZS29PcW9YcW9HZm9lT2dtZGg2NUFnOUJkYUF5YWhuNkgzc0VJVElLcHNCS3NCUnZERE5nSjlvRkQ0RlZ3QXJ3R3pvVUw0QjF3SmR3QUg0VTc0UFB3TmZnMlBBby9nK2NRZ0JBUkdxS0tHQ0lNeEFYeFI2S1FlSVNQckVlS2tBcWtBV2xGdXBFKzVDWXlpc3dnYjFFWUZBVkZSeG1pYkZHZXFGQVVDN1VHdFI1VmdxcEdIVVoxb0hwUk4xRmpxRm5VUnpRWnJZaldSOXVndmRBUjZBUjBGcm9RWFlGdVFyZWpMNkp2b3lmUXJ6RVlEQTJqamJIQ2VHSWlNVW1ZdFpnU3pENU1HK1ljWmhBempwbkRZckh5V0gyc0hkWWZ5OFFLc0lYWUt1eFI3Rm5zRUhZQyt3Wkh4S25nekhEdXVDZ2NENWVQcThBZHdaM0JEZUVtY1F0NEtid20zZ2J2ajJmamMvQ2wrRVo4Ti80NmZnSy9RSkFtYUJQc0NDR0VKTUltUWlXaGxYQ1I4SUR3a2tna3FoR3RpWUZFTG5FanNaSjRqSGlaT0VaOFM1SWg2WkZjU05Fa0lXa0g2UkRwSE9rdTZTV1pUTllpTzVLanlBTHlEbkl6K1FMNUVmbU5CRVhDU01KTGdpMnhRYUpHb2tOaVNPSzVKRjVTVTlKSmNyVmtybVNGNUFuSjY1SXpVbmdwTFNrWEthYlVlcWthcVpOU0kxSnowaFJwVTJsLzZWVHBFdWtqMGxla3AyU3dNbG95YmpKc21RS1pneklYWk1ZcENFV2Q0a0poVVRaVEdpa1hLUk5VREZXYjZrVk5vaFpUdjZNT1VHZGxaV1NYeVliSlpzdld5SjZXSGFVaE5DMmFGeTJGVmtvN1RodW12VnVpdE1ScENXZko5aVd0UzRhV3pNc3RsWE9VNDhnVnliWEozWlo3SjArWGQ1TlBsdDhsM3luL1VBR2xvS2NRcUpDbHNGL2hvc0xNVXVwUzI2V3NwVVZMankrOXB3Z3I2aWtHS2E1VlBLallyemlucEt6a29aU3VWS1YwUVdsR21hYnNxSnlrWEs1OFJubGFoYUppcjhKVktWYzVxL0tVTGt0M29xZlFLK205OUZsVlJWVlBWYUZxdmVxQTZvS2F0bHFvV3I1YW05cERkWUk2UXoxZXZWeTlSMzFXUTBYRFR5TlBvMFhqbmlaZWs2R1pxTGxYczA5elhrdGJLMXhycTFhbjFwUzJuTGFYZHE1MmkvWURIYktPZzg0YW5RYWRXN29ZWFladXN1NCszUnQ2c0o2RlhxSmVqZDUxZlZqZlVwK3J2MDkvMEFCdFlHM0FNMmd3R0RFa0dUb1paaHEyR0k0WjBZeDhqZktOT28yZUcyc1lSeG52TXU0ei9taGlZWkppMG1oeTMxVEcxTnMwMzdUYjlIY3pQVE9XV1kzWkxYT3l1YnY1QnZNdTh4Zkw5SmR4bHUxZmRzZUNZdUZuc2RXaXgrS0RwWlVsMzdMVmN0cEt3eXJXcXRacWhFRmxCREJLR0pldDBkYk8xaHVzVDFtL3RiRzBFZGdjdC9uTjF0QTIyZmFJN2RSeTdlV2M1WTNMeCszVTdKaDI5WGFqOW5UN1dQc0Q5cU1PcWc1TWh3YUh4NDdxam16SEpzZEpKMTJuSktlalRzK2RUWno1enUzTzh5NDJMdXRjenJraXJoNnVSYTREYmpKdW9XN1Ziby9jMWR3VDNGdmNaejBzUE5aNm5QTkVlL3A0N3ZJYzhWTHlZbmsxZTgxNlczbXY4KzcxSWZrRSsxVDdQUGJWOCtYN2R2dkJmdDUrdS8wZXJOQmN3VnZSNlEvOHZmeDMrejhNMEE1WUUvQmpJQ1l3SUxBbThFbVFhVkJlVUY4d0pUZ20rRWp3NnhEbmtOS1ErNkU2b2NMUW5qREpzT2l3NXJENWNOZndzdkRSQ09PSWRSSFhJaFVpdVpGZFVkaW9zS2ltcUxtVmJpdjNySnlJdG9ndWpCNWVwYjBxZTlXVjFRcXJVMWFmanBHTVljYWNpRVhIaHNjZWlYM1A5R2MyTU9maXZPSnE0MlpaTHF5OXJHZHNSM1k1ZTVwanh5bmpUTWJieFpmRlR5WFlKZXhPbUU1MFNLeEluT0c2Y0t1NUw1SThrK3FTNXBQOWt3OGxmMG9KVDJsTHhhWEdwcDdreWZDU2ViMXB5bW5aYVlQcCt1bUY2YU5yYk5ic1dUUEw5K0UzWlVBWnF6SzZCRlRSejFTL1VFZTRSVGlXYVo5Wmsva21LeXpyUkxaME5pKzdQMGN2WjN2T1pLNTc3cmRyVVd0WmEzdnlWUE0yNVkydGMxcFh2eDVhSDdlK1o0UDZob0lORXhzOU5oN2VSTmlVdk9tbmZKUDhzdnhYbThNM2R4Y29GV3dzR04vaXNhV2xVS0tRWHppeTFYWnIzVGJVTnU2MmdlM20yNnUyZnl4aUYxMHROaW11S0g1ZndpcTUrbzNwTjVYZmZOb1J2Mk9nMUxKMC8wN01UdDdPNFYwT3V3NlhTWmZsbG8zdjl0dmRVVTR2THlwL3RTZG16NVdLWlJWMWV3bDdoWHRISzMwcnU2bzBxblpXdmE5T3JMNWQ0MXpUVnF0WXU3MTJmaDk3MzlCK3gvMnRkVXAxeFhYdkRuQVAzS24zcU85bzBHcW9PSWc1bUhud1NXTllZOSszakcrYm14U2FpcHMrSE9JZEdqMGNkTGkzMmFxNStZamlrZElXdUVYWU1uMDArdWlONzF5LzYybzFiSzF2bzdVVkh3UEhoTWVlZmgvNy9mQnhuK005SnhnblduL1EvS0cybmRKZTFBRjE1SFRNZGlaMmpuWkZkZzJlOUQ3WjAyM2IzZjZqMFkrSFRxbWVxamt0ZTdyMERPRk13WmxQWjNQUHpwMUxQemR6UHVIOGVFOU16LzBMRVJkdTlRYjJEbHowdVhqNWt2dWxDMzFPZldjdjIxMCtkY1hteXNtcmpLdWQxeXl2ZGZSYjlMZi9aUEZUKzREbFFNZDFxK3RkTjZ4dmRBOHVIend6NURCMC9xYnJ6VXUzdkc1ZHU3M2k5dUJ3NlBDZGtlaVIwVHZzTzFOM1UrNit1SmQ1YitIK3hnZm9CMFVQcFI1V1BGSjgxUEN6N3M5dG81YWpwOGRjeC9vZkJ6KytQODRhZi9aTHhpL3ZKd3Fla0o5VVRLcE1OaytaVFoyYWRwKys4WFRsMDRsbjZjOFdaZ3AvbGY2MTlybk84eDkrYy95dGZ6WmlkdUlGLzhXbjMwdGV5cjg4OUdyWnE1NjVnTGxIcjFOZkw4d1h2WkYvYy9ndDQyM2Z1L0Iza3d0Wjc3SHZLei9vZnVqKzZQUHh3YWZVVDUvK0JRT1k4L3h2SnR3UEFBQUFDWEJJV1hNQUFBN0VBQUFPeEFHVkt3NGJBQUFBSjNSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCUWFHOTBiM05vYjNBZ1EwTWdLRTFoWTJsdWRHOXphQ20rNzRhQUFBQUFCM1JKVFVVSDNRb0hFVEVKRjNiekdBQUFBQ0YwUlZoMFEzSmxZWFJwYjI0Z1ZHbHRaUUF5TURFeE9qQTNPakEzSURFM09qTTBPalUwdkpjZWVnQUFHS0JKUkVGVWVGN3RYUWxnRkZXYS9xclBIT1JPeUVFNHdvMEJRUVJVRkJGRUdBRVZCRzltVUhDRW1aMGRjY1pqMWRtWmNWMVhSUkR2YzhSWlhZOFpBWFVRUkJBUVBBQXZrQnRDSUVCQzdqdnA3dlM1MzE5VlRibzdqUVFNRWJRL3FIVFZlNjlldmVONy8vSGVxMjdGUitBTWc4L3BocmV5Rmw2WERaNHlmaDZ1Z0tla0hCNVhGWHgxRG5pS2ErQXBPQXgzU1FuRHE0QnFIeFNMRWI0b0F3d21FNHlKU1ZEU0VtSHNsQUpEdkJVK2d4Rkdhekt2VTJITVNJRXhLeFdHdENRWUVtSmh6RTZIb2ovMzU0YlRtaHplUmdlOGRleDhIcllsbjhHNWZpTTh0anA0OWxiQlcxdERjdFRCNTdZenBZZUhDMUlSbjlFSVE1U0NxRDRqRVhYRlVGaUc5b014TGgzR0xqelM0cUVZekZDaXJLeTVQT0g0a0R3ajVEZ040RDVVRHVkM1cyQmZzeGxOZVp2aDJWZ0FWMlUrTzZnSkJuQWtJNXFwRFBDaW5JY2RKdVRBUEx3UHJQMEh3WHBKTGt5ZGV5RHFvZ0ZhWmhIOFlQeW81SERsRjhHNWZUTWFubHRLUW54T0tXQmpxSlBkSDhmUkdzV0RxZ0FPSGs0ZUNreTlzbUhJVFVIYytKc1FjL1hGTUtZa2FSbEZjRXJRcnVUd3VUMXdiYzJEYmZscU5MNzFJVno3RDhEbnFDVUZLTzRScTVLQnlvVC9iQ1NESFQ2ekJkR2pMb0oxMUhtSXVYNGN6Qm1aVkFrbUxiTUlUam5hbkJ5VjlRNjh2ZkVRZXFaM3dMaXpzOVF3NTQ0RHFIM21HZGhlWHdkZkk0MUcvak1oa1dTZzdxZWNFSnZCaXdhNFVVTjZ4TUk2NldMRVRCaUR1RnV2WjVvSWZpeTBLVGxtTGxpUGhlL3VBT0tqeUFnM1lEWGhtK2V2eHVCa0N3Nm1Yd2lsUWFoZ1lVcnBjcEVRRGhLaUdLYUVMRVNOSFkzWWE4Y2hkdW80TmE4SWZueTBHVGx1Zi9velBQWGhiaUF0VGd1US9uZlNpNml5bzN6WlRDUzh2eGFGVTZaVE1uUWtLV29aYVlKbFFGL0UvZWZOaUIwMUNvYlVlUFcyQ0U0ZnRCazVsTno1d0xCc0VRakJxR3JFYmVQNzRjWGZYSUJ0aW9LRStLRkllSEEyWWlkUHBIZlJVVThVd2VrSVVmZ25EWlZWMWJYSXE2U1hrVUkzMHhmR1F1aGd4Yzc4Q3ZXMHgzdWZvRXZ0bDBqNC9Zd0lNYzRBbkRRNTNFY3FjS2p6TU5TL3NnUzlVbUtBK2laTmxZVEM0NFhQS25ZR0VIUFZTUFV6Z2pNREowd09VVUxsTSsvRHdVNWRnY0lHTkx5MVFnMVB5TTBBR2tpUVFFanVoYlZZTUgyd2RuMEs4UDZtUTVpN2RDZWVYN2tIWCswdDEwTWphQXVja00xaC8vd3JsRjQ2SFVxVGg0YWxURUQ1NERZMW90dTNieU12cHgrRzMvWVBWQWhCTEVaTjU5aWN1SDNxMlhoaTVqRDEvcmJFSjd0S01lclBxd0NIazdhdHpJOFFOSUI3ZGtuQXVvY25JQ3VSSGhQeDZlWWlPRndlRE8yZmdjUVlUWUpGMERxMG1oeVZkenlNMmlmbXdZd2Nhby9taVNpWjJuYWhDdDNyZHFITWJNSGN0N2RnUjM0bExGRm0zREF5QjlkZmxLT25iRHZVMjF4SXZ2bHR1QldLcGlnaEJ2V1pWSU1xTE5OaVF0R3IxekJFd1dYM3I4REhuK1NUUEFiMDZwT0dyNStlaEhpNjF4RzBEc2NsaDQrai8xRHVDUGdLeWtnSnFnN05ETlhoSXpGS1lEcS9OenA5OEI0TUtiRjYrS25GQTI5c3hsLy9zUVZJb3EzalpYa2FuVEFZRkhpTDYzQVB2YUpIcGczR3F5VEZqTG5yZ0k0c0U3MGtIS25INHpQT3hSM1hEZEp6aWVCNCtGNmJvK21iblRpWU9nUW9hR3hCREZudmNPSUlVbCtkaTg0YlZyVWJNUVJQck5wTDYxWm1WNGw2TzE3NTNYQjRGdjBTSzUrNkN2ZGNkWllhWE9kd0FXYVJLTHdRL2xQQVJHVEdpZUdZa3NPeFpRZUt6NW5BTmswa2d6VDlyVUdCQi9Yd21lM290RzAxekgyNjZlRWFLbXNkV0wrbkRLdTJscUNpeG81LzN0bjJIb295NUVtQU5nUThQaVJTS3BRdW5BcUwzKzdRVWN4blo4MTRoMms4SEFJY0EzWVg5cjF5RFhwMFN0QlRSSEE4aENXSGMrZGVITTQ5RHhiMENMSXZOR0tVdzlTN0I3SzJMb2RpRGU2UXdpb2JPby83R3lER0lEdXJTL2NVSEh4MmtoN2JkbEQ2endlR2RnWm9hSjRWYjhYV1p5ZkRLS29qQklYVk50ejNmMVEvOE9MUkc4OUJaanRLdDU4Q1dxZ1Y1ODc5S01vZFMyTDBEQ0dHTEkvUjBMenNBbVJ0YjBrTWdkVnNoRUpDUUVablFqU2lhQWllRW9nazBPRW10U2xBd2lLYk5zbHIvejZjeDBVUllwd0VXdlJlOFpocERKUWw5T0RPOTFLVkdKS1NrTG55ZFNna1FWaFFDUG5FUUpSREJGSzRTYkcyZ051cjVjMUhDQUV0TkVaUEoxU0xlMzJTcUhXNDliTWZIMEhrS0xwNE10bFJSbG9FanpJdkdxRjBTMEhucWsxNlNDc1JNcUpyYkUyWTk2OGR1UExCajZIMGZCUVAwdTBWdkxlaEFGMW5MWVl5OEFrb0ErWWplZnJiMkxTclRJMEx4UFpEMWZqRGMxOEF2U21kUkZ3WUZSVFVOMkgyMDUvaGx2bnJNUEh1WlRoVVVxZW5CdVl2L2c1ai83UUN5clVrOU9BbjRhYXJHNGhsVzRwdzM4S3ZvTno0SnUyWXA5RGs5Y0xoOU9CM0wyeUFNdVpsS0dmTmd6TDhXY3grOGxQOWpuRFFLdmtPNjZCTS9sOG9aN1A4bDd5a3FyNllhVzlpN2RZamF2ejM0WXVkcGNpWXRRUkszN2xJSFBVQzIyRUJsUEd2NEtXVk5MekRRTXE0WVBsdVhQZklHajV2QWU1NWZMMGF2blpiTVViUmZaYzJWQVk4RHVXcXYyUEpad1ZxM01uZ3FNMWhXL3NwU2taUFVlMk00Rjcxd1kxcVpPMVpDVXZ2WU9NekZPVjFEblNjdVFpSXBqcHE4cUIzUmh6MlBIbWxIZ3RzTzFDRnMyY3ZBVHBZaEhHNC8rcGNPR2szUFBiT1ZtMlpQNXJoSWdSczlEUks2MUZJRDZSVGFqTlIxWWt2dVQrSDVQQ2JTdXhRTmIzZ1NCM3lGLzhLM2JPMEZkN3VzeGZqUUhFOUVHdEJHdXRSOXVaTmFyZ2YweDVlZ3pjK3pnUFM0MkJrZmgvZk54clQ2UDRXc1I2Z0xRTXp4NDVzVHkxdndPV0RPMkg1Zi85Q3V6RUVqeTNhaXJ0Zi9WcXJRNHlaOTdCTVJ0NHJFNEowczUrYk13Sy9HZE5MVHgyTTl6Y2V4S1NIMXJEdXZFL2FSVzE3TmtJVEpVaVZIVk5HOWNDaXV5OVIwL3BSWEV0ais0WTNLRFo1ajltRVFUbEp1R1ZrZDl6K0RBZU9oRW5aQmJKdG9zS0dOLzg4QmpkYytQMTlGdzZxNUpEZDNHVVRacE1Za2tFZ01SUzZxMFZJZnV6KzR4S2pOVWhOamtFMENTT2RoWGdMSHZwZ0Z4NWJ1Z3RJNjZCMWhKczlJU3BKZG50bHhXSFcvN0RSQW1BVVcwTWEwQmNnQWNRUWxZYWxEZFFsTngzWjZjeExSMElITmxJczQ4VDJDYXlXanI0OTA1aUlIVW8xNmVFeDZ2NlBVQ1JraStOOVVnNVJYd0xtK1NGSDhhR0tSdTA2QUhrazVOMFBzcHhTQjVtUU8xaE5NdG1Bd3pVa0NzdktPdi8yenVWd1NMNGhjTkNUbXZUSER6UURYa2dsWkNyZ2ZkVjJ0VXp5M01YTGR1SGwxU1J3QURKcHp3M3YxVkc3aDIyMTVWQU5ibjl4STU4VnJRMU1EamkxL09MQjhmbjNDbkZQQWlvNTZwNTdIVjU3RmMrQ2JRbVovVVNVRmZGM1R0ZERUaEFocGtBR095SkRPbGR0ZEVZS3k5bHhaa3FaYXpzbm9WOGM0MXk2emlVUnZxUzNVUzhqU0VlOHhZakpQVlBWMGFpQ28xMGMwNm5aQ2JpUzBtTFdvQ3hZWk1UNklkSkZTQkdHR0lJZVdjMUVVa2ttUktFcmZsNUtES2F3UEVvVHl5bEVsT0tTMUUrRkVmTVRIMXBOdDVvZEpkS2lwQUZmdjNBMWZNdHV3VWR6SjNDSTZ5cXVUekttUGFxSi9rQk12R2M1MENWUmt6STFEb3p0bDQ1TkwwM0JYVmVlcFk1NHRkemRrdkZ2VDM0T20xODY2a2dVMGt1NUpJMFF5V3FDa2ZiS3BPeEVuSnRJa3NnOGo0Q0RycUs2VVpYcUp3cU5IQTh0aEJtZGVCYmNpaktma2ZiVUkvclZTU0NrVTRRckhXVGR4UjloZCtGY2pvNlN2MStEZnp4OE9YWStQNFVqanlOSEVyS3p5aGx2RHlESHdKeGtMSG55S25VeFQwMUR1Nk1MTy9TZFI4YmovWGxYNEw3ZlhhZ2xiQ1dTUlVKSVBsSWNJVks5QXd0dU93OGIrWXhGajF5T2U2NWdKOVhyUkxTWVVCb2lPYjdkWDRXOUJaUVVNa0x0VHZ4NlVpN09GZklTWTBuVWlSVDFVa2RZekZpL294Z05jcTZqbU1SZm5jOEJTYlVBbHhEUWg0OGVHSXRodkgvdUxVTng0NGljb3l2ZExwc1RiOU9tQ1lRaUtzeHZtRk5TcEhDZ2ZUZC9JdDVsdWI5K1poSzZ5MHE1U0dMQ3hrUWxKUDJKd3RDMGFTdmNGV1c4UFZScWVLREVKaUJtMG1nOXBHMmdqbXk5TXpobXNPbXBTWlNHbEJnNk1nZGtrUFVraE41cE9vMkNvYzVwOE9EL0pqYVFVMFRvU1NCVzlicTBmTUNSOWNkSi9USG55bHcxVG5BRDlUMWREeTJlaDFGR2FnQSsrUHFRV2c4VkpPcTF3enByNXpwdUVqMHZaYU0zVlY1angvWkNFbC9IdTE4VmFwMHJ3N1BSZ1FkdlBFZUwwREhqOHQ2OGwvR1NQZTJ1bDFiczFpSjBXTlRGVGYzWjdQanRUMStGM0M3TnUvRjdpcHBURFhCRnpjSjlFbTFrc0greGtlV1RHNlVGQXVHR2VWQU9qR2swL3RvUWl0L3Q1Q090UERlR3VLSFpNcHI5bFdaVWFLbkNvVFZwd2tIdGEvL052RWdRTlJlQWRESHMzQ0s1OUVRaEUyMHZyODdYN0FXVzEwVDEyRmszaFAxSUVWdEk2aUsza2ZCVm9pcDBiSlh0QmY2QndzOGhmV24vQk9EaXN6S1FJb3VFY2ovejNsUHBvQ2tTb0ZyVXVaN21kb3BWSlhJelRHSnZ5U1JRY0pGUENBYm5oaDI4bnhtRlFPd05VMFpYL2FvTm9kZEhDaDJPektyUkdTYThQZUFOZlhEZ3pyWXdqV3lrYW9CUjY1UllkbUNHdmszQUQ1OTBycjgrUE4vbXQwR0lEV0t3NnAxdllwcHVzcE11QUdibVovUnZmZUFBYXFSa3E2VDNjaXg0L0FOS2gwa0dYVWpZaWNMZy9HTHZNY2xoN3BHdFg3VWZmbGgxMmhaSHl5TEVDRk13cDFGbkRDVktMVHRqeUp4L0llZlhpNUJ6NnlKMHYyMFJaajBycmlVSklHQm5GOGgyU2gxSEt0alJEQk1ZbWJkWmxRVEJVRVRkNmw2T1dBOTI4VUxhRVFaUFVRWHJybGNnQ0NaNFNzV0RpU0FjUk5rNHZRSGloQkprWDUwVEJmUXFDaWorRHpUeVU3d3F2L2RFSXRVR3FBWEZUbU16UUtXR0hlUkNQalZjSVVkOGROSUMxRW83SUVUak4wT2tpYXZvZ0g3MU0wZTRqZ3NObE40Vjc2S1dFc0YvMEFoRkpUMmNLa3FNU2p1cUpONlBFUHZsZElUQmtDUkdWTE83NklkQzU5YXp1MFMzMmlKUVZVc0FUQXl3K0RVQmlSRlB6MkRkdkluNGdtN3dad3V1REQ0ZXZ3SnJYcHlDQlRPYXQwdjZ4UGdOTUxyQ2N1V29RZWxqUnlrME9vTU41bE1OZzJsd04vWi91SVVpRTd6RlIrRGNGVHc3OTdPRWRGQVk2V0VKWEt2aCtibmRFbkZCanhSYzJDdTF4VEdLM2tpL1RQMkZMeUpWakZmOWZnK1pFYzdWOUlsYTBtMFJNWHVqVmRlNy9XQ3dqdXJQZXJlY0lKRTltRDZQRzQzdnJkSkRJZ2lGVzdZcHltWWlvbzRkdmZ0SXZYcmVHcHdqMnhyRXdGU0o0VVZ4WFlES0lleE9OMXppUmdzeFNad1l1dFZKU2NIZTBLbUd3VHI0MkR2RFplbSs2ay8zNjFjL1k4aWdEaVAyYjd1MHB6cnRyVnB1N01Edjltb3ZiN1VHdWRra2g3d3VxbmYrTnlHdlZYeTJ1eHpWYWp3VGtIaTlrcUtSMHM2NzV3MVJvNGNDY1ltc2YwczNTYndZSXpxZzd1blg5SkNmTWNLb2xZbEQ2T3BMNTBtYzFZeDczdmhHaXdpQVJKMzltOFVvQ3Btam1LRE9wakpXRXREZGZmVGQ3V3E0SDJ1L2xObFhua2orTkdhdkhkRmRpMmhIR0F4V0MySm5UU1kxWlArRTBEZ1FQcElqRTlWM3pZZkhkdUp6OCtGRzJ4bUpZOVJqY1Bka2RPOUNDU0MyZzhXSUNub2pGLzVoS1FvcUdtbWordkRQalFmUmE4WTcyRlpRZzF0RDlvUU02cGFNZnVsMEJtUmh6MnBDZVdrRDVpM1pwc1p0eUN2SHc0dDVuaUN2bURLZWVjMlVxZngyaG1ydHBQelhIVFJLcFFXRXFuSTBRNUVrVFE2VWpnM2VDOUVxQkdmMUU0U0M5LzVqTkxDRFhwMjBaSndWWHh5cFE4N1UxMkVZK1R5dSs4K1Z5SmM5RlJrZHNHTFZQcXFLNEExTWY1bEJxWjFmclYxa3h1TXUyWGgwK2Q4dy9MZnZxc3YxYXA3bERaaHozVUFreTRweE8wTWxoeElkaGZSL1BrT2Y1YUEvS0FqeWRwdno4KzlRZWU5Y1BlUVlJTDhVRVlQQ00vOW5DQ1Q0YUZ5NGVQOGZMYUUvSkJpQnoyaFozS1BReXNJRWV2SlFhSS9RSTQrVmo1cUlPTWFNMElDdVNmanJuQkhxY3IzcTlrZlRvOGhKQm1RdmJXZlpVRUFVMWVLMzB3ZmovTjdhaXEwZjF3M3ZpdW1UY2xVQ3FDTkpOaloxcEVjanhxcVV1OXFPWEo0dnVQVVlkcUcvN09HS3BvWnI4ZElPNFpJY0QwZWJKUGFhaVRBUDdFLzFJck9pTGJNeUlRVjFqOHhENC9LVyt4TDhjTGg4OEIyZ1VaWW5Sem55QTFZaC9kZ3R5KzE2ZkRsSGpUdHc0dzV4NExERTB6aVRZMzlsK0NsamlkdW5wU2s4V0FOWEdEZFFzRXZXTC9TMFpmdjVySkFOTjVVTmRCWDl6Nkl4V1J3d3ZTMnd5ZDZTUGZxeitGbXBkbUlvZlBqTDlDRjRlczVGbEFKc096bGthVi95Mmxhc2ZpNjg4eEk4Tyt0OGRRMGxGSCsvYXlSbWp1c0RiRDRDbFBJKzJYY2g5MzliaERFRE1ySHRwYWw2eW1BVWw5SXowdHNSZVpWdytEY202VGhZeGp6eUtLa1k3OHV2WUxZdDU3S09oNkJYRTN3dUx3NW5uZzlmWlJPbFJmQkNrQVlGVGRpRjlOZmZRSWRwRS9TdzlvWVU5MlRHUWZ2Z3E0SnFyQ1FwWkszazVwSGQwVkhkK3RjNlBMa3FENVVWRFlpTGo4WmRFL3Jxb1Q4T0hGL3VhUG5laW5QSGZoVDJ2eFJtcExJTFdrNjYrQ2c3M1NoSHlzS0hFWC9MOVhwb0JEOFYrSnFjcVBucnk0ai80N1R3THpXNTloL0d3UjREWVZWZm1nNC9aZHVFM1VqNDllMUlmZWtCUFNTQ014MU5HM2VpZHQ1TFNIdnJNU2htYzNoeUNGeDdDbEhVZHd6SklYTWRNdTBibWt5aEJDbUdLYmNuMHQ5L0ZlWWV3YnVnSWppelVQM1E0M0J1UDRUMHQ1N1FRNzdIMWpmM3lVWjIvaW9ZYzdOSWdwYnZrQWhaVE1pRWQwY3BEdmNjaHZyWDZIN3BDTXUyQ0U1TE9ENzlDb1VEeDhIVU5TZUlHSUpqU281QWxFeitKUnJmKzVocVJxUkRPRDRwY0tFUXBsNjlrUGJpbzRnYVJmODlndE1hcm0wRktMdm5MdmpvOVhUYXNCUkttQlhmWTBvT1A0UTVHZSsranN4VjhtVXAxWFIxSzdVSUZYNWVlZFhkNjc2OEdoU05IbytTY1RQVnIyK0k0UFNEYy8xM0tQN0ZMM0g0d2pGSS9OVk1aSCt6SWl3eEJLMlNISDU0YXVwUmZ2M3RzSCswbGlvbGdmSWlocUhCL3JWazVrVWRQNzJ3WE5pZnhzMHpNSGVXNy9hSTRNZUVNNjhBcGIrNGljN0dRU1ErTUFmSmY3NVRqemsyamlzNUFtRk1qRVBHaW9YSVhQY09sT3hFZWl3N1NZTGd5UldaZ1pEdk1oZnl1RC9mamNOZEJxSjR4RTJvZjJXUmxpQ0Nkb09QWFZOOTd3SWM2amdNK2IxekVETitETHFXN1d3Vk1RUW5KRGxDMGZqK3g2ajYvWU53SHpwQU1zaVAxb1RmakNJL2Y2RjkyWDBqNHUrZWd3N1hYd1hyT1gzMDJBamFFcDdLYXRqKzlRbnFuMzRkRFp2ZmhRWGRFWHZkWkNTLzhBQUg5NGw5RGNWSmswTnVFaW5ocmJmRDhkWFhLTDMwUmw0WlZZa0J5TTloU0t3L2xRWlJOUjdJbm9jb1dNN3BpK2dKbHlEK3JsdGdqRy9lSVJYQnlhRjIvbXV3TDFzRDU1ZGI0R284d0paMkkyWDJ2WWovMDJ5WU9nV3Y2YlFXUDBoeWhNSzJaQzFxbjEwSSs1bzExRmRSSklxL1VLSFQzZks3Q1M0U3BaWi9EOExhNVdMRVhuMFpZaWFNZ1BXOElUREV0ZjhLNUprRStZSmc1ODQ4Mk41YmlhYmxuOEorWUIxYldIdnYxNXpSSDBrUC9CNXh0MTJqWHY4UXRDazUvSEFYbDZQNkw4L0E5dUV5K0FycldIQVR5U0xHcTVubm9ZK1RYMTZ5TTFUNzBSM0ZrZ2hUVGhwaXJwdUk2Q3VIdzVUYWlUNTR1cDYyR2NFeTZhY0xyOTBKMTg1OThEUld3UGJpUjdDdFh3OFUxclBONnJYMm9yUTJKS1hBTW1Jd2toKzlGNWErYmJjcDZKU1F3dytmaDlKazZXbzB2cnFZZW5BdEsxUFBxaVN4UWxhVk1PRWh2NzNpNWxITHMzcVlvckpneXMyQ3RlOFFXQzhiQ0ZOMkYwUmRPdXduU1F5dnZQZjc3UzY0RCt4SDA0YWRjSDY5QmU3U1FyajNGYkk5NUJzZFJXVWIxY0Vrd3lONjdHWG9NRzBTb3NkZkFtTksyNnZtVTBxT1VEUyt0UksyVDViQi9zNG1lS3ZMMU5GdnBFVFJwSW80VG40N1JlRHZmaUdMdktqWW9EYVFRS0daWlZCaVlEcTNMNnlYRDRReGlkSW12Z3NzUS9yQjNLOHJwVS83N3JWc0xhUm0zdkpxT0xmc2hYdlhBYmg5SmZBY3FrYlQ2bTN3Yk44SHI2ZVJhY1Q3ODdDTy9uYVIyc3ZHWmFNYUZqMzdFa1NmTnhweE43ZjlGL0dGb2wzSjRZZlB3eEd5Y3o4TnFOVndMTjJBcG4xYjRDdVQ5MGpkYkpEbVgzQlNkNkVkSll0QUk0Lzhrd1lVdTBYYk9TL25Fc2RETlZlaVlFN3ZER08zTlBXUWQzTU1GcnJYSFZOZ3lFcUJrcFlFWTNJOGxNUVk5UzR0WHhNVUE3MHRBMDFway95MlhDQVlMM3RCWkR1Z2w4OVM5NkRvTGp3VGVxdnI0YWx1Z0srOEJ0NlNLcmpMcStCdHFvTzNzWUdkWHdGdllUWGMrUno5U2cxOExuYThTM3VpVmpkUnRSYjEwQ0NEZ2ZkS1c4UW53Tnl0SzZMRkhoczdFcGJCZmFIb1B6TFFIdmhSeUJFS2J5TTluclZmd2xWZGlQb0gzNkpZUFJEd1k0Q3hQS0xZakpRV0hEMHlncG9KRTFwMHVSYXJSanBQZmpUUXJSN1M0RnA0Y3dvTi9ta2VJYUtNVEpKQ2RrMjErS1pFZGlXSklSMHJJMW55bHkvZDFFZ3EwRDdsV3J3MHlWOTdqdVFyNmxQeUZnTEl1VVo0YlVPMzVOSEVneVFpMFdXM3Y1SDJRNGM3cHNJeWlGSnh5RkNZTXR2Mld3NU9CS2NGT2NMQm5WOE01LzQ4TkszYmhxYnQzNUl3MUwxYjg5bUlKV3hrRWJueWc0RWRlRWhIK2pzM2NFNVBHNXZObjRMUXFnWmZOM2Yyc2FBNTZCb0M4ejBXaEVoQ0FDR0NtMzlGTmRhcXp6R2J1OE0wb2lzczZiMFJOWDQ0ekQyNkl1cUMwK3VydDA5YmNyU0FTUFdLS29wMEIxdzdDdUJZK1ExY203ZkFZMnVFOXpDTjE0cHFTaHVLZGlkSEw4VytKajFrSkV2MXBDUDk1TkhJcEJGS1B2MWpYZnNNaFVZWS95RjUrdlAyZi9vbGdKODY0bjN4V2RTTUJtTUhHRk9UWU9pY0FHTjhJaXhEQnlINm1sR3FTalBFSk1Cd2dwTlM3WTB6aHh6ZkE2bUJ0NklXWGdmSjBXQWpVYWl6QzByaGtWK3o5dFhCUjNmUVYxTERjTHFBNWJ5bWZlQnBvSzFTUTlWbGE2SzdTTnZGUlJVbTc2WUdFWVRHSU8wUHhXcW1HV09CTVM0YVNseVVacXVrVUFXa3NaTlRTWUJPRlAxZU16czhHYVpPdEhFNnBjS1FRT2xtcFVxa2ZTTjdoYzg4QVA4UGNZRjVBS1ArcWgwQUFBQUFTVVZPUks1Q1lJST0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsiY3JlZEJsb2IiLCJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwibGFyZ2VCbG9iS2V5IiwibWluUGluTGVuZ3RoIl0sImFhZ3VpZCI6IjNlOWRiMjgwMjU2YTRlMTdiMDhlMTlkNzllOWJlMTY2Iiwib3B0aW9ucyI6eyJyayI6dHJ1ZSwiY2xpZW50UGluIjp0cnVlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsIm5vTWNHYVBlcm1pc3Npb25zV2l0aENsaWVudFBpbiI6ZmFsc2UsImxhcmdlQmxvYnMiOnRydWUsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6ZmFsc2UsImFsd2F5c1V2IjpmYWxzZX0sIm1heE1zZ1NpemUiOjExNTAsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6MzUsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MjU2LCJ0cmFuc3BvcnRzIjpbIm5mYyJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5IjoxMDI0LCJtaW5QSU5MZW5ndGgiOjQsIm1heENyZWRCbG9iTGVuZ3RoIjozMiwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjM1fX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTEyLTA0In1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0xMi0wNCJ9LHsiYWFndWlkIjoiYTdmYzNmODQtODZhMy00ZGE0LWEzZDctZWI2NDg1YTA2NmQ4IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiJhN2ZjM2Y4NC04NmEzLTRkYTQtYTNkNy1lYjY0ODVhMDY2ZDgiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiTkVPV0FWRSBCYWRnZW8gRklETzIgKENUQVAgMi4xKSJ9LCJkZXNjcmlwdGlvbiI6Ik5FT1dBVkUgQmFkZ2VvIEZJRE8yIChDVEFQIDIuMSkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzM2MTk5NzYsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfSx7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sImlzS2V5UmVzdHJpY3RlZCI6dHJ1ZSwiaXNGcmVzaFVzZXJWZXJpZmljYXRpb25SZXF1aXJlZCI6dHJ1ZSwibWF0Y2hlclByb3RlY3Rpb24iOlsic29mdHdhcmUiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDZERDQ0FobWdBd0lCQWdJVVJwUUxXUXJtR0RTTUdnL283eDd4LzdvVWlaVXdDZ1lJS29aSXpqMEVBd0l3UERFTE1Ba0dBMVVFQmhNQ1EwZ3hFREFPQmdOVkJBb01CMWRKVTJWTFpYa3hHekFaQmdOVkJBTU1FbE5sWVd4VFVTQkpUMVFnVWs5UFZDQkhRVEFlRncweU5EQTRNRGt4TVRFd01UZGFGdzAwT1RBNE1ETXhNVEV3TVRaYU1Eb3hDekFKQmdOVkJBWVRBa05JTVJBd0RnWURWUVFLREFkWFNWTmxTMlY1TVJrd0Z3WURWUVFEREJCVFpXRnNVMUVnU1U5VUlFbERRU0F4TUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFQjM0YkU5eVBmUVJjRW9JMFlGQjhlYzBDU0UwdWptR2VDUkZkZEJCQlVKSis2M1pydVZ1b3J3UGNvcGQxTlZRWkhmVFZoM2RWNEpwN1Y3bVNySDZodnFPQitqQ0I5ekFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VBTUI4R0ExVWRJd1FZTUJhQUZNVTdIMHludVNiUi9iU0ZLVDkwZGNuVGxzeUpNRTBHQ0NzR0FRVUZCd0VCQkVFd1B6QTlCZ2dyQmdFRkJRY3dBb1l4YUhSMGNEb3ZMM0IxWW14cFl5NTNhWE5sYTJWNUxtTnZiUzlqY25RdmMyVmhiSE54YVc5MGNtOXZkR2RoTG1ObGNqQkNCZ05WSFI4RU96QTVNRGVnTmFBemhqRm9kSFJ3T2k4dmNIVmliR2xqTG5kcGMyVnJaWGt1WTI5dEwyTnliQzl6WldGc2MzRnBiM1J5YjI5MFoyRXVZM0pzTUIwR0ExVWREZ1FXQkJTb01hT0s5bGxaeU1Ma3N3WjhPWHgxOHh6RjdEQU9CZ05WSFE4QkFmOEVCQU1DQVlZd0NnWUlLb1pJemowRUF3SURTUUF3UmdJaEFMc0I2ekJiVVZYdXlqMG4yRE13SGQ4RngxbXpQMHBSM245U0h4UDJhZlM4QWlFQXp6YXdieXpZL29pOGgxQjE0bjlocUIzbnpCZVRuazZqSDVUeFk2ZVNTaWs9IiwiTUlJQjNqQ0NBWVdnQXdJQkFnSVVLeVVER3JoUlFiVTNybWxsK3JlMXRZYlJzOTR3Q2dZSUtvWkl6ajBFQXdJd1BERUxNQWtHQTFVRUJoTUNRMGd4RURBT0JnTlZCQW9NQjFkSlUyVkxaWGt4R3pBWkJnTlZCQU1NRWxObFlXeFRVU0JKVDFRZ1VrOVBWQ0JIUVRBZ0Z3MHlOREE0TURreE1UQTBNVFJhR0E4eU1EWTBNRGN6TURFeE1EUXhNMW93UERFTE1Ba0dBMVVFQmhNQ1EwZ3hFREFPQmdOVkJBb01CMWRKVTJWTFpYa3hHekFaQmdOVkJBTU1FbE5sWVd4VFVTQkpUMVFnVWs5UFZDQkhRVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCRnlZNk9ORGx1aG5qMzgzTVJ3NUpmd2dNa0pyblcwK0l0bE9UaDQybkRMdGZaa3J6UkRGaDlLRkRhT0YrMjFaMm05S1NOcXIxTUtrcWpPaVJ6MnM0TmlqWXpCaE1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0h3WURWUjBqQkJnd0ZvQVV4VHNmVEtlNUp0SDl0SVVwUDNSMXlkT1d6SWt3SFFZRFZSME9CQllFRk1VN0gweW51U2JSL2JTRktUOTBkY25UbHN5Sk1BNEdBMVVkRHdFQi93UUVBd0lCaGpBS0JnZ3Foa2pPUFFRREFnTkhBREJFQWlCUkpESDQwaXk4YTdMTmdaZkxVZHV3OGJMRHprVDlpMG9JdlZqZVZlTGtVZ0lnVzVyM0I4NHg2dDhjb0xDSkxvRkxpcFo3NW4rTiszbTk5ekZMZFJsdklkTT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZ0NBSUFBQUQ4R08yakFBQUNxVWxFUVZSSXgyUDgvLzgvQXkwQkV3T053YWdGcEZsdzhjS0Zpckl5UjN0N1MxT3owS0RnQmZQbS8vejVrM2l6dm4zOWxwK1RhMnRsdFdUUklvVG9meGhZdFhLbGxwcTZzcndDQWlrb1JJVkh2SDM3OWo5eDROU3BVMEF0UUkxVzVoWndRYWdQenA4N1YxMVppWEF2SXhqOVp6aDU0a1JOWlJXUlB2ajk2eGNET00wek1US2lCOUc4dVhQLy9mc0hORlJBU0xDK3NYSG03Tmx1YnU0UW0zYnQzTGx1N1ZwaUxHQ0VtY3VJYWNHWlU2ZkI0Y1dRWDFBUUd4L243T0l5YWVvVWJWMGRpSXZhbWx1ZVBYdEdVU1QvK2czMkhTT0Rob1lHUklTRmhhV3BwWVdWbFJVbytPSGpoNmI2Qm9vc2dIdnF6NTgvY0RsOWZmM003Q3dJZTgrZTNhdFhycVFnbWVJb2tES3pzL1gxOUVHeS94azZPem9mUDNwRVdVYkRzQVlZUkMzdGJSd2NIRUQyaC9mdjYycHFDUmVPakNUbVpFMHRyWnk4WEFqNzhLRkR5NVl1SmQ1MFZBc1ljZXBLVFU4M05qV0JxT251N0h4dy93RStPLzdqc2dDMzE1bVptUnVibTluWjJZRnF2bnorMGxCZmh6T2cvcU83bFFtL0IrRUFtSHdMaW9vZ0NvNGNPcnhrMFdJaVBVRWdrcEZCVW5LeW1aazVoTjNUMVhYM3poMWlZb0tKY0RUQkE0cUZ1Ym10bFl1YkM4aisrdlZyVFZVMXFIUWh6UWVNQkh5aHJLeGNXRndNVVhuNjFLbjVjK2RTdjhKSlNFeTB0ckdHc0NmMDk5KzZkUXN1eGNMQ0NySDdQNUlyU1lnRGVLRlMzOVRFeDhzSFpILy85cjJ1R2hGUU42NWZoMlZQTm9xcVRDVWxwZUt5VW1neGZQcE1TV0VSTUFNdVg3YXN2N2NYSXFpbHJZWHdGcnhlZy9xT3VHWlNkRXpNM3QxN0RoMDZDUFQwcGswYk4yM2NDSTlGWUtaSno4aEU5OEhmZjM4aEREWTJkaUw5MGRIZHBhdXJpeGF3ckN5c3JlM3R1bnE2aUxUWDBOQUFUb0lzVHg0L3RuZHdpSXlPQXRZRXhGakF6YzN0NCtzTEpMOTkvUW9zRTBWRlJlM3M3UnRibW9HVkZVcWNqVFlkaDc4RkFJaEJMbE5kN2p1MUFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsiY3JlZEJsb2IiLCJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwibGFyZ2VCbG9iS2V5IiwibWluUGluTGVuZ3RoIiwidXZtIl0sImFhZ3VpZCI6ImE3ZmMzZjg0ODZhMzRkYTRhM2Q3ZWI2NDg1YTA2NmQ4Iiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6dHJ1ZSwidXAiOmZhbHNlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibGFyZ2VCbG9icyI6dHJ1ZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjp0cnVlLCJhbHdheXNVdiI6ZmFsc2V9LCJtYXhNc2dTaXplIjoxMjAwLCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjE2LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjE2LCJ0cmFuc3BvcnRzIjpbIm5mYyJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5IjoxMDI0LCJtaW5QSU5MZW5ndGgiOjQsImZpcm13YXJlVmVyc2lvbiI6MzM2MTk5NzYsIm1heENyZWRCbG9iTGVuZ3RoIjoyNTYsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjozMn19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTExLTA0IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMzNjE5OTc2LCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ik5lb3dhdmUgQmFkZ2VvIEZJRE8yIChDVEFQMi4xKSIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjUxMTA0MDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMTEtMDQiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzM2MTk5NzZ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMTEtMjEifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyIzZTFiNjZjYmM4ODYwNWFkYmIzNGUwYTJkNmI4NmU4ODYyYzU2NjI3Il0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjNlMWI2NmNiYzg4NjA1YWRiYjM0ZTBhMmQ2Yjg2ZTg4NjJjNTY2MjciXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ik9DVEFUQ08gRXpGaW5nZXIyIFUyRiBBVVRIRU5USUNBVE9SIn0sImRlc2NyaXB0aW9uIjoiT0NUQVRDTyBFekZpbmdlcjIgVTJGIEFVVEhFTlRJQ0FUT1IiLCJhbHRlcm5hdGl2ZURlc2NyaXB0aW9ucyI6eyJrby1LUiI6IuyYpe2DgOy9lCDsnbTsp4DtlZHqsbAyIFUyRiDsnbjspp3quLAgViAxLjAiLCJlbi1VUyI6Ik9DVEFUQ08gRXpGaW5nZXIyIFUyRiBBVVRIRU5USUNBVE9SIFYgMS4wIn0sImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyLCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjJ9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRHREQ0NBcHlnQXdJQkFnSUJBVEFOQmdrcWhraUc5dzBCQVFzRkFEQnlNUXN3Q1FZRFZRUUdFd0pMVWpFWk1CY0dBMVVFQ2d3UVQwTlVRVlJEVHlCRFR5NHNJRXhVUkRFaU1DQUdBMVVFQ3d3WlFYVjBhR1Z1ZEdsallYUnZjaUJCZEhSbGMzUmhkR2x2YmpFa01DSUdBMVVFQXd3YlQwTlVRVlJEVHlCU2IyOTBJRU5CSUVObGNuUnBabWxqWVhSbE1CNFhEVEl3TURJeE1UQTBNall3TTFvWERUSTJNREl3T1RBME1qWXdNMW93Y2pFTE1Ba0dBMVVFQmhNQ1MxSXhHVEFYQmdOVkJBb01FRTlEVkVGVVEwOGdRMDh1TENCTVZFUXhJakFnQmdOVkJBc01HVUYxZEdobGJuUnBZMkYwYjNJZ1FYUjBaWE4wWVhScGIyNHhKREFpQmdOVkJBTU1HMDlEVkVGVVEwOGdVbTl2ZENCRFFTQkRaWEowYVdacFkyRjBaVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFMWllhKzlZWkxKbjRGV2NrRG5ZL0VSb0N1TzNUQnRhMFczZjhSOVNZNWQ1c0JrMlFpdXBjaUkvbDdmd1BySDNGRGtlVlBYZWpNZStrVDBWb0pKZStOOUVNV2VyMC81UFhJUDk3bnJ1WWNyMER4YmhacGVzUUVlVThCZUlVdW5wTk5uRUpwb3hvSlR3b0RtdTgzWktrNG04ZzAvUGZwSndEaG1QQ0FxbTc5c0Z0UDhnN2xDOXFtczVURC82UE56KzJhZXdLWFRRQVIxb3BmaG5XRFVzSVp0dVVmRVJobEd3eFU3WCtoM29RMmtTR3c1aG9sZktTYjBnM3B3R1RjVFZOdmZVTVhIN0NhaVRxL0s3VC9qZEFDRCs5YU5qdGNkM1B5UWVyQThTYTJOMjhydmtOOFlmS29EUGc1Z0EzNzhPTkRWM0Jocmh0WThVaURrQmNUc1hBUUVDQXdFQUFhTlZNRk13RWdZRFZSMFRBUUgvQkFnd0JnRUIvd0lCQURBZEJnTlZIUTRFRmdRVU9DbUszMTBHdTNxOURmWC9idmRwc2Y0R0k4VXdDd1lEVlIwUEJBUURBZ0gyTUJFR0NXQ0dTQUdHK0VJQkFRUUVBd0lBQnpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQW5EVGNabmVLL2gwUWI4c0Z4Z0ZTOEZhNWRqUW5TSlFVTUZaL2t6T3NQaDFEVkZERjRuREcvSGxVK2Q3S2FOaGFRN1hMdDd4QWpoekV5VHlIYU1INzZnSDA4cjMzTmRWWi80c01oOUdJTFU2YlNtSllPdGRWaTN6QjNwNjlibllaSEpWcXZKS1g1bEVzU3BuL29wS1lsdnRvMm4wLzRzNGF3SmgrcStCa3lWU1BUUk1YNkxmYm42SVJ1NGNiZVMwVzEzdHNRNVNicEFvOU5IMkZBVHpWTU1LU0dFZGlRbmZZeWdkV3Z1RENMVXRRRjF3R21HU1lzRVBGVFY2UEcxVlA1SFM0ZmhyQk5idXJpMzhOSVVvY2ZrcGZtT0l5K2hIWmdmdnBaem9yazFHdkYzUFpSSXRKblRUdjVVanEwcUQ4cm5yODFxd3ZHbFRDSklCdEVVbU53UT09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUVnQUFBQklDQVlBQUFCVjdiTkhBQUFTVlVsRVFWUjQydTJiQjFoVTU5TEhNV29TcjdsK1Z2YWNzNDFtVGRTclJvTllBQ2tMaW9vRlN4UTdnWWlpaUtKR0RkZ1ZMSFJFbGwyYXFJQmlqZUtOWGZGYVltS05IU203Q3hwajlQdGlqSVc1ODU1ekZwWmxGMWRGWS94NG4yZWVwU3k3NS94Mi9qUHp6cnlZbWRXdTJsVzdhbGZ0cWwyMXEzYTl3MnVEV2xwZmZ0MjdVZXlGK0thclRoNXV0dlRJMWNhaEJ3ci9aMTd1elVaemMwODJXckIvWThPbGViUE0xdCt3TTFQbWYvei9Bd3BBSFRObFVmc0d5VGZUV3NTZisxVzA2aGhZTE5vSDFuTzNnOFdNTEJCT1RnZHFRaEl3bytKQlBEUVN4SVBXQXUwVjg2U0pYK2FsQmt0UHpEWkx2V0grL3NMSmhMcjEwMVJUbXFYZGZDQktPZytTNkpNZ0RUc01sb3R5alFLUzlnOEhpZXRTRU51SGdOQitJVFFabTFwUU4rcm5rV2FoOE1GNzV6bjEwb3ZuQ3JLTG5vc3pyb0g0RlFDSmJlZUNxTk5NYU9HNDdObEhvY2NqelRJdmZmaitBRklXZG0yMnJlU2haSHNSdkM0Z3B0MDBNUC9pMitjZnJqaTc4TDN4cEk4MmFtSWt1WGRCSDVCNDlUSG9GSFVjK3NZZmh3R3hoNkZQV0M2MERzb0N4anVoV2tDTTFXUm8waS82RHpQNXJXN3ZCYUIvWkdtT1d2NzdsM0pBcmRLdlFQREIyM0RzdWhvS1ZDVlFyQzRCbFpwN3ZGMnNnVU9YQ21EZWhqem80cXNFaVd5WlFVQzBaRExVWDNKYThWNEFhcGhWOHIwV1VQdXRCZkR2YXhyUWFFcGVhRC9kS0lhSnNmdEI3TFNvQ2lDRzlvRUcwM2FmWnpQajMzMjU1MnAyaXZmZWhSWmJWS0E4WnhvY3JSSFBHaFY3Q0VROTVsY0I5UEcwN3k3ODdRR1ZsSlNNUEhXcjVIbXJuUnI0WkxNS3poZVV2QlFnWW9ldnFjRnlSRnhsaVZsT2dmb3J6eWIrcmVFVUZSVTF3QnM4U1c0eTdrY04vSE5qTVd5NldPNUJaV2lQMFg1SCt6KzBQOUNlR3dKMEVhRzJuSmFsQThnZkdnOU8rTjBzc2FETHUzTzNYUkxxTTY0S01lV203TnBDcG5RVHlKUmZtcnNvZkFXeXBPbm1zcVFnZ2FzaWtISko4c2V2eHdoY2tnYVl1eVQzbUJwMndQN21iUlc1ZVZDalJmK2dCb2RkaFhEeWxtYUhXbDA2UktWU3RTNHVMbTZHSUp1V2xwWmFxOVYzM0RTYTBqQjgvblZkUUtubjFVQ1BTS2hJODI2cm9hWHl5b0svVEY0QzE5U0dsQ3o1VThwVk1WYmdJbyttbk5ZZHBSeGpORlN2TlErcDdpditwTHN1THFNN2h3RGQ2VnMwOGhqNmpPcXkrQ0hWZGZsZHlqWmNROW10VlZPOW9sVk1uL2pTdG9OU3lucE56SUx4SVh0aGhTTHZUK2ZWeDZNRTBUL2xtcSsvWUdlV21WblgwUHZmdlh2M24ycDFTYUJLVS9ycjdpc2FzRjV5a0kxQmpPMDhhT1cvQ1dKTzNJWWlqV2JXMnl4MTZ6RDlFLzdCZW9aelVnTGxuSENKdGwvN21MRmJDc0t1ODBIWUtSaUVIV2FBc1AwTVlEcDk4NVR1dGxndDZCNjJsZTRaTVo5MmpCNUN1eVI5M3R3cHBSWHhzQlo5bFpTNVU2S2dXWjhVb2ZPVWJlMXpqMTIra2JubkhDeVhILzlkNnBhVVllNlVjSVhxcTN6QStPOTRKRjY0ZjRka3lYN3ZKaXVPU1N4Q0QzN01Wc2ZFbFBtTnpaSUxYVHR0dkg1Q09Ic1hNSU1pb2VYMGJBakl1UWluYjNFU3hkaTI1TTF6Q1EzOWdKRXBPcHZMbERHVTh6bzE0N0FhUDZtRklQNWlMb2k3emdaeGwyQVFkWmtGd200aFpYU1BzSXVVVS93aUFzUE1JYlNlcVcrQmtnbmhiK2lZOXNOb0laUGJDQndUQXN4ZDVVZm9vZWxQUk40YmdmYmJlcm5KL0gweERjSlBwOVpkZDIxZjNYVlg5elJjZkNUWksvTnk3cFpMR3NoWFZZcExaU2pSMFcrTXk2ZGVtUithdXlTNUNsemx1YlJ6N0NPaHczSVE5L29XeE9qR1lydDViTTFCSUFsN0xINkNIbktJY2wzdlRtVDNLdTkxNTg2ZFR4RE9qM2hUbHdHZ3Z2NTFOTWNQU05CbmZZYkFQdTZCZVIvMExqZmxaS1ovUm5OdGZFRVFnL1NETnI1ZU1ZbGJid1FPN1pyY0JRUHFic1kxOXFuSWFRV0lIUmR5bFdwdkJOUnJBUXRKMURNVTZENHgrWlNMM0l2Y0JONVlIYlFQME9yaXhUWEV3Q3BTcTlWdE1MQjJSQUNkOEdmdGk0cnUyT0QzZ3V2WHIzOUVuZ2M2QVJTZlk0T2U5QVBlN0NoakVoYzRKOW9LZWtRY296NWZXVWIxU2JpS1h1MU5QQlZqMFh3OVFJL3gvVWJVT0JpUlRONFV3YXloWlFsUHhESnVqeU54WGd3U1VxWDJRVWdPb1N3a29XUFk4OWFEVW5KM0hiZ28wMmcwNDlGVzQwWHRScnVFOWh1Zm5xdXJXNTZobGFDZFJ0dUVmeCtLWUR3Um5oMStuWW8yVnQrVGRETWxaUisza0c2MzRESFZlVGxZZWlTZjNKOTM5UmVkMTc3M1J1QUluSlcyS0tjZmhlN1JJT203RXFUdXk5azlEZ3ZKWlFsQ1dveVFGb0hRZVEwRWh1OHZ5eTlRM2NPTCtkTUlnSWY0cVY3REM4MUJyMWlKTnp3RnpZdEwwUnBIL0xrVG1nZitiZ3grUHh1L1hvZVBSOG5mOE9uN0lkcCtJaDNpY2Zxd2NuUFBOZlFJeUZrazdZaGViRGtUYk53U0lEcmoxUE9DUXRWbTRyVTFucDBvRjZVWEpaUC9KdmJnZHNkU2p6Q1FzcEJXZ05TdEFwTElaVFY0ei84T0NvdlVCcUVRYnlDQkVlWFM4c3daSXg1UXpjclB2OThZZ1hSSFVQUHd0VTd4bm5nSExROS9Gb0ZBWS9CeEc0bFgrSGhuWHRTaDIzVEwyYzhaZ1I5UXRxdWY0WDNFV3pnb1A2NVJPS1NJbzl6a1Q4U2VrU0R4WEFQU2dhdEFPb0NIMUU4TENRTzBiQ1YwSHBVQmw2OFZWc29VWEhEVlRMNTM3MTZqbXUyZlFSMFN0L0MxNHhITXIvaGVCZmo5M0tLaVg0VDR1M3JrOXc2aEIrc0pIT0ozTW93L01NMG5BZld2cFlBaFltZFQ5L1JHTlFJSEsxby95bDMrV0RRa211MnRTQWF2QmNrZ2hPUzVtb05VN2swcmdKSEZ3dXFVLytqQ0tjUUxua0FLdGpmYmFJUTZwSUxtWWhPNzFWQVJXV296bE1CZGFVdDFXdlluMDNSQ09TUnpWMFZXQzRmWVQxNHY1c2dVemdLM3BFZENMOXpnRFVkQVhwRmNFM3hJUkFVazRrMmtJZFV2SEt3SHBzQVBGL0o1T0tWWnhjWDNSRyszSXdzZjRBZlNud1BFZmtBL2srKzdlMlUyd094MmhzQmhJVFZEU0YzRHk5Q1RJbC81elJqblZBa0N5cWU5RW9ENU1nNkVJMklSVWd5SWgwVlZRRUp2MGtJU2UwUUEyUXJjTGxBOVJlMHZKUzcrRis3OExSSE9PVzAyeE91UmR4aVJzWjJXVE9jQUVUUDNCZHpHUEVWSXcxOHQ3cmdvRkpTbkhHanZCS0JIeFhPUVJuS1FSTU40YitJaEVXOFNlVVNCODlkYnl3cUxTOWI4bFhCMGF5WSs0N0VlSGJqcXdCUGFKcmdDRUJwdE1RTndRM3dMaTllWEd3T1JiWVBBWGZHWThrWkFZeE01U0tQWHNVMXdaaVR4SmkwazNwc0dSNEJvUURSWURVd3Q4Ri8yZmJOM3BYR0FjY2dlNFR3aGdDYUc1Z0p0amJ2NFpoV0FtR1lUVVdwaFFMa21oYjdVdmdvRFdESTFWTUZPQnFqeFBLUXg2eXNnbFV0T0YxSVV5UTYvTTI1SnJkK2RLUkY4UUFMM3Jkc3FzQnVmQ1l3SU01azV4cUhtRTh0QkVka0puT1dGakVOQ2M5TzhwMzlDYzd6Uk8vUzRaS0FuS2NzaFVWcElCaVVYeFVxT2RrL0U3S0FNZWNjNmtVNWI5bDE0d3ZTT0FvYjVDaGpLaDRQVWdvZUVYaVRvR1ZWRzZqeVRYcEMwS2lnUEpUQmZwUUw5RlE5cG9vS0ROQTRoalYxZlNYSUVFaXM1OUNhaFp4enhvanZtN3NuVzd3cWcyTXhUbE4yNHpmZnBkbk9BRVg3RlFhSVJrb0NIMUh3Q1VPMFhrdXRPTXVrRmNYZStnQjZTRE1LdjA0SHhTMFZRS1VEN0pDTWszcHZHNlhnVFFxTDFKRWQ3ck1mQXB6aFlRNFhZNnkydnpMcGszMGpaaHBVeEZsOERJL0ZEbWZucVFab0V0TTBzQkpSMHpxVFhwSkFrTXpJVlJQNFo3SVNTOFVzRHhwZUR4RWxPVVRrdTZVbE9PQ3dHcUw2SkdQaVUyWTBkbEkzL3l0WXUrYkNwWHBIUG1GWUIzQVJEQzBuc3kza1RnWVNTbzZVQnhJTWVtTlFjNysyVGZVNDRPZzNFVXplQ2FBcUJ0QUc5aVVBeUlya3hPcExUUWhvZUMxUy9SSHhUNVVuS1hkSHViYk1oQVJmZk81M3F0Zlk1MHhacm4xWlRnTEh4NXlCWklpUXBEMG5yVGRLcHhJUEtUQWxvZmNhSDdIMHFISjBPMG1tYlFSeXdpWVBrdjhHQTVCUUdKYWViNWVpQkNZRDd1SHVVaXlLWXRFbmVOQml5Q2FWa1NjTXdLMTJqYlplQzhMTkFZTnBPQTZiTlZJU0Vab09nckJHVXBZNDNFVWlXMDRnSC9XRkszUkErSi9JdzNsd2FXQVJtZ1hUNlpwQVFTTVNiQ0NTRGtxc215eUVrNGRBNG9Qc2xrckwrR2xxQTBDbWxHU2xFYTdSSDFUMnpBZTRaaDJEUmQ1eTJqM2dtN0RLUDYzMGpJT0duMDNsSUFSeWtsandrcmVUUW0rZzJ3UVRRVFJNQWxlUXBjODRDNDVrQ2xrSFpZRG1EUU1vRUNldE5GWkpqZU1reFBpK1FuRGJMWVNrZ0hJb2U1WkVBbEZ2U0EzVG5qYVRFcDl5VUZxOEtDNlhid3R4WkljT0VFQzF3WGw5TU82d0YwUmNMMk40M0dldUkvaFhFRHdnNFNFSXlCMnVMa0ZyemtGakorYk9RNkU1c0Z0dHFDcUM3WjNHektlMmZBbGFCVzhCcTVoYUVsSTNlcElYRVNVNmtMemt0SkZaeWlVWWt4NVVDb3FHa0hFQlkvUkxLS0RmNWJ3anJQQ2FHRkx6QXVRUmFjeGVGUFhwRFJ6TGRJQ1p3bFgrR2hhc2QxbGVlYk52RlJSbFB1Y3J6S09kMXY5QjlJcDhKZXk4RFVmY0YzSUNnMjJ3UWY4NE5DRVNkZVVnZGd6aElueEZJMHpsSTVaTHpaNzJKNmhrQlpCWm5DcUJuUmNVYUdCaTRBNlFUTjRGTmNBNEhDYjNKWW9ZeHlhVldTRzZpb3Fya2RDR041S3Z2OGcwdm1tY2tibE9pUU9pQlh0WTNGaGgzZks0YmxnK3lkV1cwTEw2TWRvMER4alVHR0pjb3RsTXBjbG9KSXNjbElPNGRVbmxBMFAwYkh0S2Npa2xLWjk2Yk9nWVpsaHp4cHJaQldFa24zaWNURWxNQVBTWDdsZzI3enVHbm5BcldzM0pZU05henRvS1Z2dVNxeTNJVFhwRGxSbFJVMzFWN1RGejdSTnBQMjdFMDNOWmxlOS8yUEtTZTNKQ0FoY1JPVW5oSVdtK3FSbktVN1hKbzY3VmhwNG1iTzY2UFFyekkxVDhISkpNeXdXYk85Z3BJck9TeVdNbEpkZU9TVm5LKzJpeFhXWEpWTjd3VjFiZDJMeWN4MEdQU2JldEtkTnE2WkVqQVFqSXdTZUhHVGQ4WWxaeW80NHh5eVRFZGdzRVNkdzBiZDUrTE5CWFFmbTE3WU0vaG44RnljQnBZenR3RzFnVFM3RzFnbzRVVWxGME95V0NXMDVZQ2s1UXZMQVhZdUdTa3gxUzFyWXVRWkJXUTJFbUtZOFVrcFJLa0twS2JWUzQ1Tmk1MUNBSzZkd1RNanprQ3hjVnFQMU9ubDkvcU50bFhLUEtBR1pvT1ZuTjJnUFhjSFJ3a1E1SkRTQldTU3kvUGN2clZONEZFdldERHE5dGpxdFRXN2NlMWRRMUxicUVSeWZIRHkyNDZrdU1oMFhZcm9HL0FOaWdvVkQvRCt1OHpVL3NuWGZtZUxndUlUQ1o4RnUwRDBhaU5ZRFYzSjFoL3M2T3k1SUk0eVVrRDlVb0JmejR1K1pHNFZEWExHWldjVG85Sk1yZzZ5UzJ2SWprSks3blFDc24xMUpmY25ITEpDZTBXZyszWVRYRG0vQzI4VDgxWnNvTXd0WDlTRDhFYzB2VWkwa3Z4bnI4SGhLTXl3R29lZ2JTVGc0VGVWQkdYc25YaUVwRmNScVVzUit0WDM2YjJtTmk0dExZcUpHT1MwOFlsQjIxY3FwcmxoRDJYUXFlUkcrRDREemY0Mlh6SjlKY3F3TlRxVXBrMm0ya3R2MEFGQVN2M1k4RzNBU3hubzl3SUtBT1NzeWpQY3J6a2pHNTRrNnBtT2QwTnI2N2todXBJVGh1WFdNbXQxSkhjVWgzSkxVSlFoaVhIMkllRGcwOFduUHpwcHZiZThsOTZGRVVtbEJpTE12V0hmc1dZMlZZcVRvRE5pQXlFa01ONTAxd2prcXV1K2piWVkwbzAybVBTYmV0V0tRVThqSlFDZXBJVDlWNklOVlEwcTRTTFZ3cTA5L1FVbmNIN2xmWTI1RkFCbVdrWkdobm5IcjBDam41YlFEUnVNd1p2bmJpa0s3a2dJNUw3V2pmTEtTdjFtR3BDY2hJRFdVN29GQTV0QmlYRDJyU1RvRkpwZEU5MnBCdWQ3WnNZc0IzNWFXVVZTRVJ5eStSNTBONTdFMGg4czZ0bXVabGJkYXB2QTFuT3ozQ1dvMDFvNjVhWEFwVWtGMVloT1RmT204U3U0V0RSTHdFbWhPN2xnM0dsZXpoVlVGRFE1TFdubGVRd0FiN1lJMk1uTUg2OG1BL0JFWWVnRFdZNWlVOG1XQVVUVDZwR2NsUDFzcHl2WHBaN1lmVWRyVk45VjVXY0JFc0JzVHYrRE1FTW03MEx2anQ4R1ZUcUtzZUZMNVdXbGxyVldDdUJuSjVBZDd4ZjNWRVZvdXVWV0RQMThNa0dNV1k3Qy85c0xDcHpqR2M1UXh0ZXZSNVRsVkpBWjhPckx6bnhnQWpjeDhWQU82OFVtTExpZXpodzRocDcyTlBBdFo0aVE4VWFiMFNSMHhSa2pQdWljOGkzVVhyZllRVWV1T29BZEVkWVZ0NGJRZXF6R1N5blpvRmxZSFViWHNOWmpqYlMreFo2b1ExQ0c3QU9Pb3hNZzFIemRrUFMxck53OVVZUllObzJjdFpJcytXMVpmV0NTU1hGWjdlbnBoemFKdlhUd2Y5Y2d6V3BKMkZzeUY3b05qRVRMRWFrZzJUMEJnendhSlBRaTN3UmtKOTJINWZHVFZJbWthNEFRaHFQM3VTTmt2c1NiWmdjbUNGeXpHUkowSFo0R25nR2JZZVF1S093N2Z1TCtpZEpETmtEY3RJMVAvOHQvTGNoUDRnYmlxQ3V2T3dwZDJMa1prZ1dWT1NjeFNCL0hHYXNQb2hCTkJlR3o5a05nMmJ1aElGQk8vRG1kNEJYOEM0WXMyQVBLNWVRK0tNUXQrazA1Q0FNY2pDaVdHWHl2eUNRRTJxNzNzQmhLZE1PTVpIakpYZ0J0MThGbENFak1ZUEl3NGhFWHNhSWgrZmg5ZlY5clRSZVE3UHZGaGowQXZqNDlMeW1ZTDBHbU4zazJCNDVBUG91VFhlSjlPcVNnd0xrbUFudlZXVnZDY29UbFBzWnRBWGtTSi9adTc1STdYVC8vdjNHcVB2ZTVBUTdYdmdSL3FUcWt4b0NRdjVmNHpaMzhKTTk5Tm51clFUZk55MUR0RzVrMzBNT1ZxRmxjT0EwVi9uRGw0OTA1RWxrOHI5OFovTThQbmNmOFVvRU1vY2NBU1pBeVBscXM5cFZ1MnBYN2FwZHRhdDIxYTdhOVViWGZ3RnZVRUVINFlhcWxBQUFBQUJKUlU1RXJrSmdnZz09In0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjEtMDItMDQiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJFemZpbmdlciBGSURPIFUyRiIsImNlcnRpZmljYXRlTnVtYmVyIjoiVTJGMTAwMDIwMjEwMjA0MDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjIiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMyJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMS0wMi0wNCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIxLTA4LTA1In0seyJhYWlkIjoiMDAyNCMyMzUwIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWlkIjoiMDAyNCMyMzUwIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkcrRFBpbktleWNoYWluaU9TIn0sImRlc2NyaXB0aW9uIjoiRytEIFBpbktleWNoYWluaU9TIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoidWFmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH0seyJtYWpvciI6MSwibWlub3IiOjJ9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfZGVyIl0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJzb2Z0d2FyZSJdLCJhdHRhY2htZW50SGludCI6WyJpbnRlcm5hbCJdLCJ0Y0Rpc3BsYXkiOlsiYW55IiwicHJpdmlsZWdlZF9zb2Z0d2FyZSJdLCJ0Y0Rpc3BsYXlDb250ZW50VHlwZSI6ImltYWdlL3BuZyIsInRjRGlzcGxheVBOR0NoYXJhY3RlcmlzdGljcyI6W3sid2lkdGgiOjU0MCwiaGVpZ2h0Ijo5NjAsImJpdERlcHRoIjoxNiwiY29sb3JUeXBlIjoyLCJjb21wcmVzc2lvbiI6MCwiZmlsdGVyIjowLCJpbnRlcmxhY2UiOjB9XSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUJtRENDQVQwQ0JHUWRQUjB3Q2dZSUtvWkl6ajBFQXdJd1ZqRUxNQWtHQTFVRUJoTUNTVTR4Q3pBSkJnTlZCQWdNQWsxSU1RMHdDd1lEVlFRSERBUlFWVTVGTVFzd0NRWURWUVFLREFKSFJERUxNQWtHQTFVRUN3d0NSRk14RVRBUEJnTlZCQU1NQ0VGVlZFaFNUMDlVTUI0WERUSXpNRE15TkRBMk1ETXdPVm9YRFRRek1ETXlOREEyTURNd09Wb3dWakVMTUFrR0ExVUVCaE1DU1U0eEN6QUpCZ05WQkFnTUFrMUlNUTB3Q3dZRFZRUUhEQVJRVlU1Rk1Rc3dDUVlEVlFRS0RBSkhSREVMTUFrR0ExVUVDd3dDUkZNeEVUQVBCZ05WQkFNTUNFRlZWRWhTVDA5VU1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRVNJcEkvZEtZQ0RZaHp3RDJ3U2ZZQU9iL25OYWlQY1dGMjF2eFprL1RnRDBPSnRjRCtPUG02NG53WmRGV1NFWVNXN2lPcW5wbUp5ZGU4bWdyL3RuQWl6QUtCZ2dxaGtqT1BRUURBZ05KQURCR0FpRUEzYnZoYXpRRlB3bXlYbHhLL3hDWGZoN2cxWDFFb2JMQzNMKzJHT1J4cDdnQ0lRQ2ZORVRYL20yQmViUkxYSTRMTVAxRVFHUFhGRGY3T2s3NFU3eGJpTTRWa0E9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LC85ai80QUFRU2taSlJnQUJBUUFBQVFBQkFBRC8yd0JEQUFNQ0FnTUNBZ01EQXdNRUF3TUVCUWdGQlFRRUJRb0hCd1lJREFvTURBc0tDd3NORGhJUURRNFJEZ3NMRUJZUUVSTVVGUlVWREE4WEdCWVVHQklVRlJULzJ3QkRBUU1FQkFVRUJRa0ZCUWtVRFFzTkZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlQvd2dBUkNBRElBTWdEQVNJQUFoRUJBeEVCLzhRQUhBQUJBQU1BQXdFQkFBQUFBQUFBQUFBQUFBY0lDUVFGQmdJRC84UUFHd0VCQUFJREFRRUFBQUFBQUFBQUFBQUFBQUVEQWdVR0JBZi8yZ0FNQXdFQUFoQURFQUFBQWF5ajZGNXdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRWdkM2VEVDV4TEozNnhGb2M1bDhsR1BTWEtzek5ETTA5TlZkTis4UDhaZExLQkhwaWUrdmhUdW9mTlhOQXZtK015VW1SbjFkUVpnQUhNNGN3MUxpY1AxVkxlUXVqVHpKMmRKTTMzNXBoYWFVamVhYktVUnZkVjdTWjFkVFM2U3VGa3dRL2JIcjc2NXQyRjFtZGs4N05QcUUrU1l5SFIxZ0FMQjE4bHZ5VGVqUFhRcW11Z3NnWWRWVnAxeWFIZlhMVzN2VVFrMnBhSXFkNU1yWXFJUGZqZExObVRZeTIrQ1RveHNiNkl0dFN1NmxBOUJaSEE2cW9BQnlPT05IUDJwUGVuanJzLzhBeG1uY1liTENpYTZ6MHhTbWFadDlIUk1sVVJ2ZEYrcXpvWXVzM2xkS1YxdTZpYW0zdDdQcnRKbjBHZW51L0E5RFdHeHhBQUFldjhneFhLay9PWnFjOUptYktscE16Wkdrek5rYVRNMlJwTndNNkVyaDFqOHcyT0lleUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVAvOFFBS0JBQUFRTURBd1FCQlFFQUFBQUFBQUFBQlFBRUJnSURCeFVYSUFFUUV6WVJFaFl3TkhBMS85b0FDQUVCQUFFRkF2NmJHSVNSbE5ZYkZnVVpTM0ZNbWxQZ3RLVzJiZlNMckUxUFN1VytDMHZCYVhndEx3V2w0TFNjaUdMeWsxaWdPUnBrc1FJeGU5K0dBUW1xVVBHN2UwMHNQbjdZYTNlNWRCdHE5NXhhT1pZSEZBeXhKN2NwQmt4aEhpMjg0dGJ6aTF2T0xUSExRSjNXMWQySDFoNnlzRVdzNWgxeUtFT2JScmNmT2dZaXlCRlNXUXQ0eUtQU0Y3STN2REVudHl5Zjd0d2pjb2ZSaDRDTk41QU1sQUszSXdseTNWWnVjc1ZNT2oyWExMUm1wOUkrMUdKajFkTzBoNWJTSGxBb0NWanA5VFhIaFk5SmRwRHkya1BKeml3NDBiZHNPbWFtNWRaSFlkQjh3NVlZK05lVTQrcnBMdXpiOWJtZS93QVB0alg2dnZWWmYrUHV2bGk0aDBZUzlaZENWTXozYW5Kc2pvcDNQa2kzUGtpeDVOVEI2UktkVG8yRmxHNThrVzU4a1YvSkVoZFdPMkhBbFY0Z3Noa09oS1g4ckYrdHJmalJ5MUl3eDRHMmtReVNSUi9GM1hERW50eXlmN3R3aXNOZlNseUlGTndnK1lTR2lOQTZxdXRkWE9FVEc3RTM3QiszS05MN2UwNnRQY1h4OTVYdENDVzBJSmJRZ2tCZ0F1T1AwYXgwSlBFdG9RUzJoQkxhRUVtT000K3hydFdxTEZzb1ZhaG1VeGxsNldFdnd4NlVrSXpmQzVlR1BLVzhxRE9xZGRHclhScTEwYXRkR3JYUnExMGF0ZEdyWFJxMTBhbk10Q3RLVGVZQjdXazlKSDhrYy8wMy84UUFIUkVBQWdJQ0F3RUFBQUFBQUFBQUFBQUFBQUVSRWdJUUlDRXhVUC9hQUFnQkF3RUJQd0g2eXhrNlJLRjdxVVNoNHp5ZlMxREVtWkVQV0xNdUM5TXRXUlliZ3NodVJlbVhuRk9TcFZpeFkxSlZsV0pRTnp5c1dMRml4WWJuN0gvL3hBQXVFUUFCQXdFRkJnVUZBUUFBQUFBQUFBQUNBQUVEQkFVUkZTRlNFaFFnTVVGUkV5SXlZWUVRSkZCeDhEUC8yZ0FJQVFJQkFUOEIvTFZsZDRQa2o1cjdpcHp6ZFIwbFF4czdpcXIvQUFQOUtPTTVYMlF6VzUxT2xiclVqbnN1b0srV0Y3anpaUm1NZ3NZOHVDVS9DamMreXBZdDZtdUw5dWhGaGE0VnZVR3RsVTFNSlFrekVyT2tHT1YzTjdzbHZjR3RrRW9TK2g3MWFGTXhnOHJjMlZsU3ZlOFh6d1ZZN1VCc3lzczJHWjJmcjlNTG03dC9mQ2tzNldNWE4zYkpRUUZVRnNBc0xtN3QvZkNvYVk2Wm5ZK3FxellJQ2QxWlkzelgrM0RWVTVVc20wUExvb2JVRzY2VmxpY0h1cDdRaGtpSUc2cWhuQ25rY2o3TEU0UGRQYWtIUzlWTlVkV1YzVHNxS20zZVB6YzM0U0ZqYlpKSFpjUlppOXl3a2Rhd2tkYXdrZGF3a2Rhd2tOU2hwSW9QUzJmNWovL0VBRU1RQUFFREFnQUhDd29FQlFVQUFBQUFBQUVDQXdRQUVSQVNFeUV4UVpNRklDSWpNelZSWVpHaDBSUXdNalJTWW5HQndlRkNjN0d5VTNDU3MvQlVjblNDd3YvYUFBZ0JBUUFHUHdMK1p0MkVaS01Ed3BEbm8vTHBvRjlzN29QZTA5NlA5TldZaU1Nam9RMkJYSnA3SzNXSVFrSHlWelY3dUFBZ0VaQmVuNVZ5YWV5dVRUMlZ5YWV5dVRUMlZ5YWV5clB3bzd3OTlvR2xLaWhXNTczUzNuUi9TZnBWcFRlTXlvOEI5dk9oWG1pOUl1bmM1azhNajhaOWtVaGxsdExUU0JaS0Vpd0ZGK1UraU8wUHh1S3RSUzBKRXIzbTI3RHZJcjFLWjJKOGFtdzI0a3BLMzJWTmdxeGJDNCtPQWZrTCttQjZBOUZrT09OV3VwR0xiT0w5UFhYcVV6c1Q0MTZsTTdFK05lcFRPeFBqUVM0WDRuVzYzbTdyMGw2TzhoOXBXaGJhcmluSThscEx6TGdzcENxNEYzSUwyZGx3NnZkUFg1aG1PeU1aMTFZUWtkWnFQQlk5RnBOaWZhT3MwNU1mNFg0VzI5YTFkRkdSTWR4dlpRUFJRT2dEZWo4aGYwd1QvZzMvQUcwNzBQUlhPTFBLTXE5RlkvelhUTTJNZUF2U2s2VW5XRFVpRXUyTW9YYlY3SzlScFRheGlyU2JFSFVkKzB0UXVJN2FuZnA5Y0hrUVBFdzBnVzk0NXo5TUlVQkhzYy9LMW9qYld0RWJhMEpjc001SEpxVHdGM09DVk5paG5JT1ltTGp1V09aSUZhSTIxclJHMnRPdnVDUGlOcEsxV2MxREMvdWNvOFZJUmpwSHZqN2ZwZ25CSXNsMGg0Zk1aKysrL205UGszL29ZTjFjYlRsemhhLzJqekc2UC9IYy9hY081dUwwci9ZckFtMyttUmZ0Ty9qcFViSmtJVXo5UjNnWUVib0pUeE10T2MrK00zNld3aEluaXd6Y2kzNFZ6Z05nMzRWemdOZzM0VUlzMlhsbU1rcFdMazBwei9JWUpjU0hNeVVkR0ppcHlTRHBRRHJGYzREWU4rRmM0RFlOK0ZPTXVUZ3B0eEpTb1pGR2cvTERKM1VXbmltVTVKQjZWSFQzZnJnM1FXazNRMnJKRC9xTEh2dnYyM21sWWpqYWdwS2hxSXFQTmF0ZFlzdFBzcjFpbllVa2NCZWhRMG9WcUlvdHltN3RFOFcrbjBGLzUwYjBma0wrbUNmOEcvN2FkNkF5Z3RSUWVNa3FIQkh3NlRUTU9LbkZaYUZ1czlacCtVU01zUmlNcDZWNnZHaXBSdW81eVQ1ZzQxM0lMdkxORDl3NjZia3hYVXZNTEYwcVRTbW5tMHV0cTBvV0xnMFZDS3FPVC9CY0k3cTB5dHI5cTB5dHI5cTB5dHI5cThzaUYvSzRwVHhpN2o5TURzNlNYOHM1YStJdXd6QzNSMVZwbGJYN1ZwbGJYN1ZwbGJYN1VGZVJtUW9meDFsWGRvcEtHMEpiUW5NRXBGZ0tjbFRIUXl5aldkZlVLeXlydHhtOHpMWHNqcCtQbXNlRTlaQjlObGVkQ3ZsUVRQYlhBZDFtMk9qdXoxZHZkU0llb3ZBR3VjSXUyVFhPRVhiSnJuQ0x0azF6aEYyeWE1d2k3Wk5jNFJkc211Y0l1MlRYT0VYYkpybkNMdGsxZDNkU0lPb09oUjdCUlR1Y3l1YTdxV3ZnSThheTA1N0h0NkxZeklSOEIvTTcvOFFBS0JBQkFBRUJCUWdEQVFFQUFBQUFBQUFBQVJFQUlURkJVV0VRY1lHUm9jSHc4U0F3MGJGdy85b0FDQUVCQUFFL0lmOEFUWWpvNGFEVE0wT01VWTYzdkV0QlpHK2FCRnVEK2hYcTlHNUVDSE5zdTVhQk5QVjY5WHIxZXZWNjlYcGM1WWYyeW1aTzBSWjFUK2lnWjRUZ2hPRG8vVVRCdTZOL04vWEEzMGE0MFNPUVZlcXJBZDIvU29NSGd1ck9teEdFaG5wQ0F1VzM0VVNMcWhsaE1TUGdSbzBicHRzdDNPNlhhYW9iaVZDRUpNaWVZMERFMDNobTBIVTR4ODlkcVhKQlJtRVNEYml1cXkxYnBpd01MdUg5WEFHbDNPVzdjc3Y2NC9aUndWc29TdU9NK1lxZnVlUWZORkNxSnZ3dlU2TFQrMjcrQmhQblprSDNPdzlaOE5oWmVoYVluSkhEYkE1b1BCWG5QeXZPZmxFMkRHOHhGa2FiSG1SR0lHc2pNYTg1K1Y1ejhxL1VQRmdsdzAycE5rWmZKM3o1Tm5IdklDZm1GQjNXNjM3YkRhUE01WWRJMitXeSt0UUZiSnROMXRzV2JjeDZmblBBcFhOT29ManNUQkRCdUJFY1F1ZTBvWUlHRnRvVUoyckJMTWlMUWRobkFwWU1sYWpldTFDaGlGZ1hrSVN6THRTZ0pka3JHN1l3d2c0WjBIek5BdlJpSkhuU2hDQzI2Ny9SR3NjdVhZYzBmcGpUbExNZGh2d2RWdjJVY0lOQnJDY1QrQTR4VmoxbE41am1LMjFhdEVXTWRCZTBLZncyUWxYNkhJT2hlRExSZGJza25EcUt4L0hTaUo5Qlp0UnEweTh4UE5JY0N2U3FlbFU5S29iUU5oSUcreUd6RGRmN0FFR2dWNlZUMHFucFZNTklFanVjU2dERkRnWkFVU1dyYnhZQml1VkxRbG52RWFzZUJoOVMrWVo1aDV0U0dzRGRGTHhzT1hHalU1L0JGbXZQdTllZmQ2OCs3MTU5M3J6N3ZYbjNldlB1OWVmZDY4KzcweWluNjRMV0J1UVIxdHRib045U1U2VkdXQnZ2L3dCTy85b0FEQU1CQUFJQUF3QUFBQkQ3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3NzZvTWpnNHh2UDM3NzZtcHp5eXZ6ZXByNzc3M2o1VC96NWUvejc3NjRwdjhBdnEvNklHKysrK3ZjL3dEL0FQOEF0ZjhBdnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2di94QUFlRVFFQUFnRUZBUUVBQUFBQUFBQUFBQUFCQUJFeEVDQWhVV0ZCVVAvYUFBZ0JBd0VCUHhEOWJNZEJxek1FVU16MmxuMkJoRVJwMkJiVVdDWm5oTEJ4QXB4UEtJbVpRMUQ5MmNSRHhyQVdvQXQwaXdoc2JvRFRIcnBBUmpDaldobTV0R29Nekw5Uy9VdjFMOVMvVVhMOWovL0VBQ2dSQVFBQkFRVUlBd0VCQUFBQUFBQUFBQUVBRVNGQllYSGhJREZSZ1pHaHNkSEI4UEZRRVAvYUFBZ0JBZ0VCUHhEK3NiMzE5dU5ZRG83dFBSRlUwRTg1enZrb2RWdm1ON2U0K0t0SlUrM3c3ekorR0t6VmJHR1JZdFZxVy9URmdZcUJkUDNJQzlVYUZZWFFWRnVaUDFJVW8wY0lYTk45aVk1UURteWxIaCtPbXczQkhpMlhBU3pPeDhmNHUxN2pGSGtGYkY5UitnSVZ0NUZ3OForNHdwZzFHNnZ5RXZCQk9iWkVVYmhlVFlRU2pOeDJxcTRZWm5lVVZkZUpmeXVuMUdzclExQ0Ztc3FGVVVXWm5xZlVhd0JVTGtlNE1KUzRMYmZsalp5Y09CeTg3TDBLamN4cXF3Ynp2YjNtSzZhekZkTlppdW1zeFhUV0ZTMTlDVzNuRzEwNWYyUC94QUFtRUFFQUFRTURCQU1BQXdFQUFBQUFBQUFCRVFBaE1SQkJZU0JSY1lFd3dmQndrYUhSLzlvQUNBRUJBQUUvRVA1TnZjVTRaa2k1K0F0S1EwSHJCWjdxZWVKdm1qaXRBTmVncjlOOVV6R01BanNzYVNHa3hCNk5mcHZxdjAzMVg2YjZyOU45VittK3FQTVVKci9TaXg4K25vZzRvcW1CUGJrc0RHTnNiS1NFL0VTMHhUSEEyRmtTdWdFSVFTV1hoY0FzRldWZlRSMkN0MUZoSzdGVEp0QXBlSFNEQ3pKM2Z1aE1FVEF2SFEwT0xtOWxvMWdESmtlaGd3WU5EK3hFK1dEbEE3MGJwNTdvY0lrbTVrcHQzZnRyQ01JSVJCRVFhUDBLVXdYV1d1a09Ja3ZENEhGZHdkUGdsTDFqQXVKVitZK0NZTEJVL2l3T0FWMnhaZ01oREFNWVBqMUJ0SWdZbHZCS1cveU5GSkJHMnBzbTFEQTlnb3F3aDJHT0FZVDBrSlpHbmlrSncxQjJKd1pCdlJpYmVoQWc3aUoxbHRpa2tpTDhnamthTUJGUS93Qm5md2MrN3JkUGFZc0pKL3ZYUE5sZ2Q4QmhhN1I5c1JKM1ZKSEt4R3VlWkZiMWRERVpzSzJyTHowWkNpbzJrbTc4ZWhDVDRFU3QrK3ZLcUpON3YrazZCTEpUZE9IV2ZoOXZ4M3NiUldlNDlhTk9FUWgrZHVzYU5TMEVJL1FPUm95SVNsM24yaFhkNHVvR0h5cUFRR3VUSmFGR3phN1laTGFZMG1XZnRkdzBsMTF6QmJXVEp2MURzc25Da3BKRWRTSUNKYVdTNDRmSFF5citHVEVudE05OWVNNWRERGNnSDFReEVTNUtDYjJ1Snp1Rk1xU0RTOFNuQ0x3aWxsVEFiQ3JzbzdQTmh5UXZ4dEZCS0JRaG5zTGVHM0pDOVp6OElWM2RCTEtlN1lDQ3ByTFJhdkZtOTNrVEtVZ1hNa0psVjNWWitCKzZzVEZZRFlGYldEZEZBYkFwTUc0bVFiS0JFUkJLNEZudWlFaWVTbUFGZEs4SjRRSFF6WnN6TlZ5eS9CY3NiNkVtbUNQSjhKTWkrWjZHYk5uUE0wK3hjejJGRFVLQmRnQUE0S2thQ2ZPd0M4YUFTdFhxWTZTdDRiTVlveEFTQitKOWd3VEY1aUlXbUF0TVNWRFlvS0ozQ3VkbUozWm9FZUpnYnlZZXo0di9BUDhBL3dEL0FQOEEvd0QvQVBnZ1JMNnhRZWlvYjBSVi9CYjhqc29BM2JFbU1qWXdKVXFDVmorVHYvL1oifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiTk9UX0ZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDQtMTYifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTA0LTE2In0seyJhYWd1aWQiOiI5ZTY2YzY2MS1lNDI4LTQ1MmEtYThmYi01MWY3ZWQwODhhY2YiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjllNjZjNjYxLWU0MjgtNDUyYS1hOGZiLTUxZjdlZDA4OGFjZiIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IDUgRklQUyBTZXJpZXMgd2l0aCBMaWdodG5pbmcifSwiZGVzY3JpcHRpb24iOiJZdWJpS2V5IDUgRklQUyBTZXJpZXMgd2l0aCBMaWdodG5pbmcgKFJDIFByZXZpZXcpIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NiwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9LHsibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMzg0cjFfZWNkc2Ffc2hhMzg0X3JhdyIsImVkMjU1MTlfZWRkc2Ffc2hhNTEyX3JhdyIsInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo4LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo4LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRE16Q0NBaHVnQXdJQkFnSVVTT0VqVGYvL3lxUmZQVzdRcThxdEl5Q3JBZzh3RFFZSktvWklodmNOQVFFTEJRQXdMekV0TUNzR0ExVUVBd3drV1hWaWFXTnZJRVpKUkU4Z1VtOXZkQ0JEUVNCVFpYSnBZV3dnTkRVd01qQXpOVFUyTUNBWERUSTBNRFV3TVRBd01EQXdNRm9ZRHpJd05qQXdORE13TURBd01EQXdXakF2TVMwd0t3WURWUVFERENSWmRXSnBZMjhnUmtsRVR5QlNiMjkwSUVOQklGTmxjbWxoYkNBME5UQXlNRE0xTlRZd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUUNkdmwyN3cyZ3UxZlBYZUVGYklkcXgwQmFsdlZEVldyUVBKN0hxdml1RXRaSGx4U0x4U0Z0Y1hwVG9sdkx2b2Y4ZjR0TWVyUVRrVkd6Y21Zem0xRUJUNElKdU1tb0VxZmtFRWhXcHNBRE1Gcmpaa3FsWlk5RXF4UXpMb1ZFRW9uRTVvR3hTZFZDeENjTElhY2tweVIvQ0NYdmoxQnQvaFRnRTloVGxGNHBScXhNa3gzcGxGN3k4ZERabFJIV3M3dmJuaG1CQ0dlSTBaUEVRNm5sMm1DZzJyNzRhZEYydTZLOXJyTGZoQkMzUUxFOEVQcmdxVXNJK2hrdXEydEs0TTJTTU9wOHVVVlZrcVVldTNoMGtyM1dWSTBXMDJwa2dyT2dpRktMRk5rU3JiWWhkak1CRGo1aXptcWZjOXhKUktvRFg2MTJxZDhaR1ZIcFQ1QVlGWCsxaEFnTUJBQUdqUlRCRE1CMEdBMVVkRGdRV0JCVFp5VTVEaVEvYTJVRWdFN3FCSzB6aElzUk5SakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VBTUE0R0ExVWREd0VCL3dRRUF3SUJCakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBWHZuQjRTTHVVSmZZTVNWR0Foc3NML1NtV2xpM0ZTY2NneHlkdktsQUNjaWRJSVdLUXFhM3EvUVNVRVF6QzlEZ0VmTWdyN2lDMUJrVFpiSUxib1Y2VVo1a25Oc3ZqRVpXdU1lb2dKOHRnWnMxaFZ2S3daaXp3SittRWNtc2poSXJCWXVvTDFUNnlyT0p2S0ZnMWp2K0N5NFp3QTlCcGsvVjNVT2lyMVZ5SzhkQ3R5SHU2dmZvc290QWRZeDhGQXVSMjQzZ1JUTVY2Sng4SmRpZzJKRElBUU1selZlRHBTVUhYL0sySFhSSHhId2ZnamJnVWpqQnUvNzJyOE9mZWh5aHpIWEkzSzhDRkZkZmxPKzhuRU9KSzN5OEYxaXZnUzV1Ti84U21jWXcvU1RRWXdocnhQdXd6M25QOGJhTXVtNEJCMm5uWW1wQjYwc1gzYmw1azhRVVN3PT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZkNBWUFBQUNHVnMrTUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFIWVlBQUIyR0FWMmlFNEVBQUFiTlNVUkJWRmhIcFZkN1ROVjFGRC8zZDU5d2VRU0lnUzlBUUFYY0ZMQVFaaTlmcGVWejF0WS9XVFpyNVd4cGM3VzVrbkxhNWpJM1o4NXNyUzJuTTJzanRXd1pTN0lVSDRINHhDbkVReDREQVpGNzRWN3VzODg1djkvbEluQnZWSi9CNFB2OW51LzVudS81bnZNNTU2ZnpBL1F2MEhiL0lyWDNWRktQbzQ1Y25tNGluVUlXWXdMRlJtWlFVdXdqRkcvTjFpUkhoMUVaME5SVlJ1ZHF0MUJkKzJuU0t5Uy9PaHlzMCtsazNlLzNrUTlxdkQ0WlV0YTRWVlNVdVkwZWlweWlUaEFmb2NvT1JWZ0R1dXczcUtSaUFkM3JiY0V0alRqWUlvZjZXYUhzQ216VlBXQ014K2NnaDh0THFXTUthTVdzVWpMcW8yUnRKSVEwb096bWVycFF1NGVzWmdzT05rR3hIN2Qwa2R2VFQxN3M0T01VN1ZJOFpoamdHYU0rQXE5aUVOdThQaWYxdWR6MDdNd3ZLV2Y4R2xWb0NFWTA0UEM1V2RUYVhZRmJSOHZOdkw1KzNLZ2ZiNXhOTXlhOVJhbUppeW5hTWxHVFZ0RmxyNmJhOXUrcHFuRVg0dU11UlJnalNZRWhyTjd1dEZGZTZscWFsN05ma3c1aW1BR0h5blBwYms4Vm1ZMHhzdG5wdGxGQ1ZDWXR6VHVCTjgzUXBNTGpUdGV2ZFB6U1VuSjdlOG1ranhaMzlmWGJLRGZsZFpxYnZVK1RVZ0duQlZGNmZRMmlQSGc0VzE2VVdVd3Z6YmsxNnNNWkUrUG4wcHZ6N0pTZXVBeWVzOGxjcENtYUt1by9wK3FXcjJVY3dJQUhXcnZQMFlFemhYQXRMQWJzc0hocDdpR2FtdnlpalA4cnlxclhVV1g5WG9vd3h5QXVmTkJycDQzUE9CRlhabGtmOE1EUmlxY3B5b3dBd3B1ejJ4K2ZXdnovRHRkZTlzbXN6eWd0Y1I2QzF3YmR6Qmw2T2xxNVdOWVk0b0dhdGhKTXJrVEV4MGpBUlNIQVZzKzVyWWtRTlhiK1FnZlBMc1E2Z1h5SW5zcmVRZm1wbTdSVkZZZkw4Nm4xZmlVT2tZdlNoa1VQeHZidWt6b3k2SzFpaE0xaG8zWHpXNkV2U2ZYQStkcGlXR2FXZCtkb1h6THptR3dLWUZMQ0FzUkFsUEJBaE1sQ0ZYVTd0QlVWUHI4SGdWY0pIV3ErRjAwcGxyK0RNVGRyUDR6dnhZMTFrTk1oeFQrU2VUR2crZDRWNUxRSml0eVVHSk5COFZGWnNqZ1lCWk0vSUkvWENUa2owcXlET3BGMkFWUTE3Q0lqVXAvRG5UMVVrTDVGNWdkaitzUzF3ZzFnRTNnaWdtNjBmQ1h6U25QWGJ5QVBiSVh2K0lEcEUxNlRoYUhJUzlza3lobG1NRTVGM2NmcUFLaHEyQzBFNVBIMWdZYVhhTFBEa1pHMEhESk9uS1dIcDUxSTB6NVNPdXg4ZTFXQXVaemRIUXJUa3A4VG1qWG9JK2xhMHdHWnN6dWJxYk8zaWZRNkEvVzd2VlNZc1YzbVIwSkt3a0tjNFdIaUJrbVI4STNDQ2dJODdvT0w0cXpUNVArUlVKQmVqRU9nQVBLOGhZUHphdE0rZUlUcDJJTzl5VFFtZXJvbVBSeHgxcXhBY3NpbGUvdWJTZUViY1dRR1lFQ2doY0xZMkh5S2pvZ2pIMjVoTXBqcFV2MU91Z2xpNGVoMmVSdzBPMzJiSmpreXVDZ056ZzB2emxZTVNpU3MwdW9vNE1HN2hNT2pDRWFYMXlGRTBuU3ZqQnp1VG5FcEs4Nlo4SW9xRkFJdWJ3OGtnOUFyRWFSRVdTWkkrakg0WGJwNmc5RTlFbkpUM29hUnpETitNVUpCUURIbjU2YThvVW1FQnVzT3hCcy9ONSt0SkViUGtBRkRqOFVHdk9zL0lXdmNTZ2xHQmh2UzcvRlRZZnBXR1lkRFk4ZlBBeFdTQTM1c1RDNHA0K0xtNEFhcUlvUGVRdGZ1Zks2SmgwWmh4bGJzVVhPU21YTmlmRDVaVEFreURvZmJiY2NseG5BOFdOQXF4Q2JSTnlraFh4UXBhRHc2N2ZYVVlic2lHMEtodHYyb2VJdmg4cmhRTVlPY0VBcVhHL2VJK3puZ09jNXl4cjhxODJJQU0xYy9GTEZPcGxxdTVlRlFYck1aekdjVkNqWWJMV0c1STRCVDFldVJybGJ4dE5PdE1pdERERWhMWElJeW5BQXZ1T0VXRTNYM05kQWZ0OTRWZ2FHNDJYSVF0MFpYNlBlQ0UvcVFGZTlySzZIeDdZVTUwS3ZIN2ZXNGZTK3E3S0tCSnhzZ2dCWDVwU0FHaDFqSXJWaDV6UTZ3M1JmYWFoQlhtL2FDYkNaVGpDVUZVVHlXWnFXOXA2Mk1qSlBYVnFPclBnTU80TnY3NEdrZitvd2Z0TlZCRFFuakZKcUhTdzE3cFh2aFdXNUtacWUvUTQ5Ti9VU1RDQVZXb1FYRklIQkhYWGUzRlByVURzdUdEbXRGL2hIS1RIcGVreGhpQU9QSStTSnE2UzZIRjRJOVlXemtCSlRvNDZpVU16V3A4UGlyL1JpZHVMeEtZc1Nrc1Y4dkxsT1F2aEdYMllsUjBPQmhCakMrdS9nRWN2WTBBcEs3WWs0MU54alBTUW5XRkhURjY2VXJqZ2V2QjhDdTVhK2wydllTUlB0dVZEbzczaGhkTVNIblVYN3RUanNWWkd4QWwvV3B0aU9JRVExZ25MMjltWDYvdFIxdG1sa1lqOFc0WCtDU2pXY1VER1kxTnBTL0M3aFNLcWlNTE0vbDJRbVNXWjczRGR6K2dpbzhCQ0VOWVBRNDZxbmt6d1hVYnF2Qmt4alVRc1dmWkZnYnVvM3JBZit3TjdqT085MCt5bng0UGkzTCswbllMMVNjaERVZ0FQNGdQVi83SWQxcSsxSFNobXVHa0lxV1JQZ3l4TUZxUDhIZmpUbmpYd1k1YlFmYkpjdDZPSXpLZ01Ib3RGL0hlMWVnc2F4SFNxRzZ3ZmRtUTV4OE55VEZGcUJjcDJpU293SFIzeWs1KzM2aEY3dlhBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiRklET18yXzAiLCJGSURPXzJfMV9QUkUiLCJGSURPXzJfMSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJsYXJnZUJsb2JLZXkiLCJjcmVkQmxvYiIsIm1pblBpbkxlbmd0aCJdLCJhYWd1aWQiOiI5ZTY2YzY2MWU0Mjg0NTJhYThmYjUxZjdlZDA4OGFjZiIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImxhcmdlQmxvYnMiOnRydWUsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjpmYWxzZSwiYWx3YXlzVXYiOnRydWV9LCJtYXhNc2dTaXplIjoxNTM2LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjgsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4LCJ0cmFuc3BvcnRzIjpbInVzYiIsImxpZ2h0bmluZyJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi04fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotMzV9XSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5Ijo0MDk2LCJtaW5QSU5MZW5ndGgiOjgsImZpcm13YXJlVmVyc2lvbiI6MzI5NDc1LCJtYXhDcmVkQmxvYkxlbmd0aCI6MzIsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjoxLCJjZXJ0aWZpY2F0aW9ucyI6eyJGSVBTLUNNVlAtMyI6MiwiRklQUy1DTVZQLTMtUEhZIjozfSwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjEwMH19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMC0xNSJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjQtMTAtMTUifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyI0NzI2OGVhMTNkNWUzM2RkYmJiNGFlMDAwYzEzYzk0NzhjZDE3M2FmIl0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjQ3MjY4ZWExM2Q1ZTMzZGRiYmI0YWUwMDBjMTNjOTQ3OGNkMTczYWYiXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlpUUGFzcyBTbWFydEF1dGgifSwiZGVzY3JpcHRpb24iOiJaVFBhc3MgU21hcnRBdXRoIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX0seyJtYWpvciI6MSwibWlub3IiOjJ9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNWekNDQWYyZ0F3SUJBZ0lKQUpNYzhXMUlPU05oTUFvR0NDcUdTTTQ5QkFNQ01JR0dNUXN3Q1FZRFZRUUdFd0pWVXpFUk1BOEdBMVVFQ0F3SVZtbHlaMmx1YVdFeEVEQU9CZ05WQkFjTUIwRnphR0oxY200eEZUQVRCZ05WQkFvTURGcFVVR0Z6Y3l3Z1NXNWpMakVpTUNBR0ExVUVDd3daUVhWMGFHVnVkR2xqWVhSdmNpQkJkSFJsYzNSaGRHbHZiakVYTUJVR0ExVUVBd3dPV2xSUVlYTnpJRkp2YjNRZ1EwRXdJQmNOTWpNd09URTBNVEExTlRBMldoZ1BNakExTXpBNU1EWXhNRFUxTURaYU1JR0dNUXN3Q1FZRFZRUUdFd0pWVXpFUk1BOEdBMVVFQ0F3SVZtbHlaMmx1YVdFeEVEQU9CZ05WQkFjTUIwRnphR0oxY200eEZUQVRCZ05WQkFvTURGcFVVR0Z6Y3l3Z1NXNWpMakVpTUNBR0ExVUVDd3daUVhWMGFHVnVkR2xqWVhSdmNpQkJkSFJsYzNSaGRHbHZiakVYTUJVR0ExVUVBd3dPV2xSUVlYTnpJRkp2YjNRZ1EwRXdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBU0orNjFMSmY5NjAvMEN6dmpkUzFNdWVrTi8zL041RFh4OFErTkx0Nm9oOU5kT0RBVFR5alJDQzgwZW5DNnJ5UlFyUDFqRWVBVHRtS0pxUFRKcEFHWnpvMUF3VGpBZEJnTlZIUTRFRmdRVWxRNjhDanpSa3kyeGNCTC9jNDd6cDZqUStMTXdId1lEVlIwakJCZ3dGb0FVbFE2OENqelJreTJ4Y0JML2M0N3pwNmpRK0xNd0RBWURWUjBUQkFVd0F3RUIvekFLQmdncWhrak9QUVFEQWdOSUFEQkZBaUJiSGFBeTlVNkZSTG5KdWxIUDc2ZEY3VmlzSzdIQzBTcEtEdnJWOUx0alVBSWhBTFpLc0k1TVhSeTJDMmY5MVhhSWhmT3dNQmVKNVBMaFdSa2NkeWJXMHI2TSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFnQ0FJQUFBRDhHTzJqQUFBQUNYQklXWE1BQUM0akFBQXVJd0Y0cFQ5MkFBQUtUMmxEUTFCUWFHOTBiM05vYjNBZ1NVTkRJSEJ5YjJacGJHVUFBSGphblZOblZGUHBGajMzM3ZSQ1M0aUFsRXR2VWhVSUlGSkNpNEFVa1NZcUlRa1FTb2dob2RrVlVjRVJSVVVFRzhpZ2lBT09qb0NNRlZFc0RJb0syQWZrSWFLT2c2T0lpc3I3NFh1amE5YTg5K2JOL3JYWFB1ZXM4NTJ6endmQUNBeVdTRE5STllBTXFVSWVFZUNEeDhURzRlUXVRSUVLSkhBQUVBaXpaQ0Z6L1NNQkFQaCtQRHdySXNBSHZnQUJlTk1MQ0FEQVRadkFNQnlIL3cvcVFwbGNBWUNFQWNCMGtUaExDSUFVQUVCNmprS21BRUJHQVlDZG1DWlRBS0FFQUdETFkyTGpBRkF0QUdBbmYrYlRBSUNkK0psN0FRQmJsQ0VWQWFDUkFDQVRaWWhFQUdnN0FLelBWb3BGQUZnd0FCUm1TOFE1QU5ndEFEQkpWMlpJQUxDM0FNRE9FQXV5QUFnTUFEQlJpSVVwQUFSN0FHRElJeU40QUlTWkFCUkc4bGM4OFN1dUVPY3FBQUI0bWJJOHVTUTVSWUZiQ0MxeEIxZFhMaDRvemtrWEt4UTJZUUpobWtBdXdubVpHVEtCTkEvZzg4d0FBS0NSRlJIZ2cvUDllTTRPcnM3T05vNjJEbDh0NnI4Ry95SmlZdVArNWMrcmNFQUFBT0YwZnRIK0xDK3pHb0E3Qm9CdC9xSWw3Z1JvWGd1Z2RmZUxacklQUUxVQW9PbmFWL053K0g0OFBFV2hrTG5aMmVYazVOaEt4RUpiWWNwWGZmNW53bC9BVi8xcytYNDgvUGYxNEw3aUpJRXlYWUZIQlBqZ3dzejBUS1VjejVJSmhHTGM1bzlIL0xjTC8vd2QweUxFU1dLNVdDb1U0MUVTY1k1RW1venpNcVVpaVVLU0tjVWwwdjlrNHQ4cyt3TSszelVBc0dvK0FYdVJMYWhkWXdQMlN5Y1FXSFRBNHZjQUFQSzdiOEhVS0FnRGdHaUQ0YzkzLys4Ly9VZWdKUUNBWmttU2NRQUFYa1FrTGxUS3N6L0hDQUFBUktDQktyQkJHL1RCR0N6QUJoekJCZHpCQy94Z05vUkNKTVRDUWhCQ0NtU0FISEpnS2F5Q1FpaUd6YkFkS21BdjFFQWROTUJSYUlhVGNBNHV3bFc0RGoxd0QvcGhDSjdCS0x5QkNRUkJ5QWdUWVNIYWlBRmlpbGdqamdnWG1ZWDRJY0ZJQkJLTEpDREppQlJSSWt1Uk5VZ3hVb3BVSUZWSUhmSTljZ0k1aDF4R3VwRTd5QUF5Z3Z5R3ZFY3hsSUd5VVQzVURMVkR1YWczR29SR29ndlFaSFF4bW84V29KdlFjclFhUFl3Mm9lZlFxMmdQMm84K1E4Y3d3T2dZQnpQRWJEQXV4c05Dc1Rnc0NaTmp5N0VpckF5cnhocXdWcXdEdTRuMVk4K3hkd1FTZ1VYQUNUWUVkMElnWVI1QlNGaE1XRTdZU0tnZ0hDUTBFZG9KTndrRGhGSENKeUtUcUV1MEpyb1IrY1FZWWpJeGgxaElMQ1BXRW84VEx4QjdpRVBFTnlRU2lVTXlKN21RQWtteHBGVFNFdEpHMG01U0kra3NxWnMwU0Jvams4bmFaR3V5QnptVUxDQXJ5SVhrbmVURDVEUGtHK1FoOGxzS25XSkFjYVQ0VStJb1VzcHFTaG5sRU9VMDVRWmxtREpCVmFPYVV0Mm9vVlFSTlk5YVFxMmh0bEt2VVllb0V6UjFtam5OZ3haSlM2V3RvcFhUR21nWGFQZHByK2gwdWhIZGxSNU9sOUJYMHN2cFIraVg2QVAwZHd3TmhoV0R4NGhuS0JtYkdBY1laeGwzR0srWVRLWVowNHNaeDFRd056SHJtT2VaRDVsdlZWZ3F0aXA4RlpIS0NwVktsU2FWR3lvdlZLbXFwcXJlcWd0VjgxWExWSStwWGxOOXJrWlZNMVBqcVFuVWxxdFZxcDFRNjFNYlUyZXBPNmlIcW1lb2IxUS9wSDVaL1lrR1djTk13MDlEcEZHZ3NWL2p2TVlnQzJNWnMzZ3NJV3NOcTRaMWdUWEVKckhOMlh4MktydVkvUjI3aXoycXFhRTVRek5LTTFlelV2T1VaajhINDVoeCtKeDBUZ25uS0tlWDgzNkszaFR2S2VJcEc2WTBUTGt4WlZ4cnFwYVhsbGlyU0t0UnEwZnJ2VGF1N2FlZHByMUZ1MW43Z1E1Qngwb25YQ2RIWjQvT0JaM25VOWxUM2FjS3B4Wk5QVHIxcmk2cWE2VWJvYnRFZDc5dXArNllucjVlZ0o1TWI2ZmVlYjNuK2h4OUwvMVUvVzM2cC9WSERGZ0dzd3drQnRzTXpoZzh4VFZ4Ynp3ZEw4ZmI4VkZEWGNOQVE2VmhsV0dYNFlTUnVkRThvOVZHalVZUGpHbkdYT01rNDIzR2JjYWpKZ1ltSVNaTFRlcE43cHBTVGJtbUthWTdURHRNeDgzTXphTE4xcGsxbXoweDF6TG5tK2ViMTV2ZnQyQmFlRm9zdHFpMnVHVkpzdVJhcGxudXRyeHVoVm81V2FWWVZWcGRzMGF0bmEwbDFydXR1NmNScDdsT2swNnJudFpudzdEeHRzbTJxYmNac09YWUJ0dXV0bTIyZldGblloZG50OFd1dys2VHZaTjl1bjJOL1QwSERZZlpEcXNkV2gxK2M3UnlGRHBXT3Q2YXpwenVQMzNGOUpicEwyZFl6eERQMkRQanRoUExLY1JwblZPYjAwZG5GMmU1YzRQemlJdUpTNExMTHBjK0xwc2J4dDNJdmVSS2RQVnhYZUY2MHZXZG03T2J3dTJvMjYvdU51NXA3b2Zjbjh3MG55bWVXVE56ME1QSVErQlI1ZEUvQzUrVk1HdmZySDVQUTArQlo3WG5JeTlqTDVGWHJkZXd0NlYzcXZkaDd4Yys5ajV5bitNKzR6dzMzakxlV1YvTU44QzN5TGZMVDhOdm5sK0YzME4vSS85ay8zci8wUUNuZ0NVQlp3T0pnVUdCV3dMNytIcDhJYitPUHpyYlpmYXkyZTFCaktDNVFSVkJqNEt0Z3VYQnJTRm95T3lRclNIMzU1ak9rYzVwRG9WUWZ1alcwQWRoNW1HTHczNE1KNFdIaFZlR1A0NXdpRmdhMFRHWE5YZlIzRU56MzBUNlJKWkUzcHRuTVU4NXJ5MUtOU28rcWk1cVBObzN1alM2UDhZdVpsbk0xVmlkV0Vsc1N4dzVMaXF1Tm01c3Z0Lzg3Zk9INHAzaUMrTjdGNWd2eUYxd2VhSE93dlNGcHhhcExoSXNPcFpBVEloT09KVHdRUkFxcUJhTUpmSVRkeVdPQ25uQ0hjSm5JaS9STnRHSTJFTmNLaDVPOGtncVRYcVM3Skc4Tlhra3hUT2xMT1c1aENlcGtMeE1EVXpkbXpxZUZwcDJJRzB5UFRxOU1ZT1NrWkJ4UXFvaFRaTzJaK3BuNW1aMnk2eGxoYkwreFc2THR5OGVsUWZKYTdPUXJBVlpMUXEyUXFib1ZGb28xeW9Ic21kbFYyYS96WW5LT1phcm5pdk43Y3l6eXR1UU41enZuLy90RXNJUzRaSzJwWVpMVnkwZFdPYTlyR281c2p4eGVkc0s0eFVGSzRaV0Jxdzh1SXEyS20zVlQ2dnRWNWV1ZnIwbWVrMXJnVjdCeW9MQnRRRnI2d3RWQ3VXRmZldmMxKzFkVDFndldkKzFZZnFHblJzK0ZZbUtyaFRiRjVjVmY5Z28zSGpsRzRkdnlyK1ozSlMwcWF2RXVXVFBadEptNmViZUxaNWJEcGFxbCthWERtNE4yZHEwRGQ5V3RPMzE5a1hiTDVmTktOdTdnN1pEdWFPL1BMaThaYWZKenMwN1AxU2tWUFJVK2xRMjd0TGR0V0hYK0c3UjdodDd2UFkwN05YYlc3ejMvVDdKdnR0VkFWVk4xV2JWWmZ0Sis3UDNQNjZKcXVuNGx2dHRYYTFPYlhIdHh3UFNBLzBISXc2MjE3blUxUjNTUFZSU2o5WXI2MGNPeHgrKy9wM3ZkeTBOTmcxVmpaekc0aU53UkhuazZmY0ozL2NlRFRyYWRveDdyT0VIMHg5MkhXY2RMMnBDbXZLYVJwdFRtdnRiWWx1NlQ4dyswZGJxM25yOFI5c2ZENXcwUEZsNVN2TlV5V25hNllMVGsyZnl6NHlkbFoxOWZpNzUzR0Rib3JaNzUyUE8zMm9QYisrNkVIVGgwa1gvaStjN3ZEdk9YUEs0ZFBLeTIrVVRWN2hYbXE4NlgyM3FkT284L3BQVFQ4ZTduTHVhcnJsY2E3bnVlcjIxZTJiMzZSdWVOODdkOUwxNThSYi8xdFdlT1QzZHZmTjZiL2ZGOS9YZkZ0MStjaWY5enN1NzJYY243cTI4VDd4ZjlFRHRRZGxEM1lmVlAxdiszTmp2M0g5cXdIZWc4OUhjUi9jR2hZUFAvcEgxanc5REJZK1pqOHVHRFlicm5qZytPVG5pUDNMOTZmeW5RODlrenlhZUYvNmkvc3V1RnhZdmZ2alY2OWZPMFpqUm9aZnlsNU8vYlh5bC9lckE2eG12MjhiQ3hoNit5WGd6TVY3MFZ2dnR3WGZjZHgzdm85OFBUK1I4SUg4by8yajVzZlZUMEtmN2t4bVRrLzhFQTVqei9HTXpMZHNBQUFBZ1kwaFNUUUFBZWlVQUFJQ0RBQUQ1L3dBQWdPa0FBSFV3QUFEcVlBQUFPcGdBQUJkdmtsL0ZSZ0FBQXRoSlJFRlVlTnJzbHQ5TGsxRVl4Ny92TnRlMHZYT2s3eVM3cXlXQll2bmpJa3RHVTB2REN3a3RWNEtYcHYzd0IvNEJCaUlhL1FDMXdqa1ZVeE5zVXV1dXpkMWs2aUJMQ3hJRnpjRFhPVFp3WThyMnNyMXJwNHVYWnVvZ2dyeUpmUzhlZUw2YzUzdzQ1K0U1SElvUWdvT1VDQWVzR0NBR2lBRUF5WDZMWmRuMTlYV0dZZFJxOVQ4Z2tOMXFhMjBWRGxWWmNaVVFZcHVaS1MwdEhUY2E5eXd6Nkh1cnE2cy96czZTUDJrWHdHSTJBempLcUhRNjNmdDNrNFNRcG9ZR0FNV0ZSWHZLTG1vTEFBd09EUHdkb0xkSEQyQmthT2gzODQzSjVISzU5cFRWMWR3RThHcDhmUCtPUzR0TDVyZm1INkdRa083MG9MdXpjMmp3dVNvcDJkQnJPQ3luazVLTzlQWDNaMlprTUNrcHF5dmZHSVlCY0wrOXcycWRLQ29xQ2dRQ0FIaWVGMm9mUDN4a01yMVcwSXJhdWxwdFFZSFA3d05GN2UyQk5sOERJTzM0Q1FBTmQrdTd1N29BU0VBQnFLdXBKWVJVNmE0RG9HWHhxYW9VcFp3V0E5YUpDVUpJNFFVdGdGUHFrd25TUXdENjlQcm9WeFFNQnR2YjJpaUtldERSd2ZOOEtCVGlPTzdaazZjQStub05MTXNDeU1vOHpmbjlITWZsbk1rQ3NMUzRPRDAxRFVCMzlSb2h4T2wweWhNUzRpaVIzVzZQYkxzekIzRnhjYlJDUVFoUkpDWktKQkt4V0N5VHllUnlHb0JVS3YweS94bUFUbGNwaTQrWHlXUWFqUWFBeitlYm1wd0VVRjVSRGtDbFVoVnFDM2dTbnArYml6NEhuTjhQd08vM1I1eEFnTXZOems1bWtrV1VDTURxNm5mQmR6ZzJCREN0VUFCd09sMi9mSWRBaWc0SUJvT1JLSWpuZVFWTmIzbTNpaStYaUVIcCt3enBHZWx1dC91bDBRZ2dFQWlVWFNtN2RlZjJ2WmFXdExTMGhZV3ZIK1krNVovTnk4bk5qZjVVU0NTU1NJdzQ0WERZNGRoUUtwWER3OE5paXFwdmJCd2RlVkYxb3dvQXU3YVdtbnJNMEtQZjN0NitWRkxjMU54OFB1L2M2TmlZU0NTS1Bza2V0MmQ1ZWRuajhVUWNyOWRyWDdlNzNadEN5ckpyVnFzMUhBNFRRcFpYVnJ4ZXIrQzdOOTBXaThWbXMrMGZDeXIycTRnQllvRC9BUEJ6QUk2Vk5xR1FQVXFuQUFBQUFFbEZUa1N1UW1DQyJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMy0xMS0yNCJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjMtMTEtMjQifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyJjZjM5ZWQzMmQ3NzNlOGViYTVjMDllYzQxNjAwZDhjN2ViNjkyYTgzIl0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbImNmMzllZDMyZDc3M2U4ZWJhNWMwOWVjNDE2MDBkOGM3ZWI2OTJhODMiXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ill1YmlLZXkgNSBTZXJpZXMgd2l0aCBORkMgKEVudGVycHJpc2UgUHJvZmlsZSkifSwiZGVzY3JpcHRpb24iOiJZdWJpS2V5IDUgU2VyaWVzIHdpdGggTkZDIChFbnRlcnByaXNlIFByb2ZpbGUpIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NiwicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoyfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCIsInJlbW90ZV9oYW5kbGUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURQakNDQWlhZ0F3SUJBZ0lVWHplaUVESkVPVHQxNEY1bjBvNlpmL2JCd2lVd0RRWUpLb1pJaHZjTkFRRU5CUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTVo2L1R4TThySVQrRWFvUHZHODFvbnRNT28vMm1RMlJCd0pIUzBRWmN4VmFOWHZsMTJMVWhCWjVMbWlCU2NJWmQxUm54MW9kNTg1aCsvZGhLN2hFbTdKQUFMa0tLdHMxZk81M0tHTkxadWp6NWgzd0duY3I0aHlLRjBHNzRiL1UzSzloRTVtR05ENnpxWWNoQ1JBSGZyWU1ZUkRGNFlMMFg0RDVuR2R4dnBwQXk2bmtFbXRXbU1ud08zaTBUQXVjc3JiRTQ4NUh2R000cjBWcGdWZEpwdmdRamlUSkNUSXErRDM1aHd0VDhRREl2K25HdnBjeWk1d2NJZkNrenlDaW1KdWtoWXk2S29xTk1LUUVkcE5pU092V3lETVRNdDFid0N2RXpwdzkxdSttc1V0NHJqMGVmbk85czBaT3dkd01SRG5INHhnVWw1Wkx3cnJQa2ZDMS8wQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQjhHQTFVZEl3UVlNQmFBRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRTXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJEUVVBQTRJQkFRQzNJVy9zZ0I5cFo4YXBKTmp4dUdvWCtGa0lMa3Mwd01OcmRYTC9jb1V2c3JoenN2bDZtZVBNcmJHSkJ5SjFYbnF1QjVzZ2NSRU5GeGRRRm1hM21pbzhVcGYxb3dNMVpyZVhySjBtQURHMkJwbHFiSm54aXlZYStSMTFyZUlGVFdlSWhNTmNaS3NEWnJGQXlQdUZqQ1dTUXZKbU5XZTltRlJZRmdOaFhKS2tYSWI1SDFYZ0VEbHdpZWRZUk03Vm9sQk5sbGQ2cFJGS2xYOHVzdDZPVE1PZUFEbDJ4TkYwbTFMVGhTZGV1WHZEeUMxZzkrSUxmejNTNk9JWWdjM2lyb1JjRkQzNTRnN3JLZnU2N3FGQXc5Z0M0eWkweEJUUHJZOTVyaDQvSHFhVVlDQS9MOGxkUms2SDdYazM1RCtXVnBtcTJTaC94VDVIaUZ1aGY0d0piMGJLIiwiTUlJRFNEQ0NBakNnQXdJQkFnSVVEcUVSdys0Um5HU2dneGdVZXdKRkVQRFJaM1l3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRREk3WG5IK1p2RHdNQ1FVOE04WmVWNXFzY3VibHZWWWFhUnQzWWJheG45Z29kTHg1c3dIMGxYcmRnamg1aDdGcFZnQ2dZWVg3RTRibDF2YnpVTGVtck1XVDhOM1dNR1VlOFFBSmJCZWlvVjdXL0UraFRaUC8wU0tKVmEzZXdLQm82VUxlTW5mUVpEclZPUkFrOHdUTHEydjVMbGo1dk1qN0p0T290S2E5SjduSFM4a0xtelhYU2FqMFN3RVBoNU9BWlVUTlY0enMxYnZvVEFRUVdyTDQvSjlRdUt0NldDRkU1blVOaVJRY0ViVkY4bWxxSzJieDJ6Nm9rVmx0eURWTEN4WWJwVVRFTHZZMXVzUjNEVEdQVW9JQ2xPbTRjcnB3bkRSTFZIdmpZZVBHQkIvL3BFeXp4QS9nY1NjeGp3YUgxWlV3OWJuU2JIeXVyS3FiVGExS3ZqQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJUcXQwS1FuZ3g3WkhyYlZId0R1bnhPbjlpaFlUQWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQXFRYUNXTXhUR3FWVlg3U2s3a2tKbVV1ZVRTWUt1VTYrS0JCU2d3SVJubHc5SzdIZTFJcHhaMGhkd3BQTmlrS2ptY3lGZ0ZQemhJbXdISmd4eHVUOTBQdzN2WU9kY0pKTmt0RGczNVBYT2Z6U24xNWNGQXgxUk8wbVBUbUliOGRYaUVXT3B6b1h2ZHdYRE00MVphQ0RZTVQ3dzRJUXRNeXZFN3hVQlpxMmJqdEFucS9ORFVBN2JlNEg4SDNpcEMrLytOS2xVcmNVaCtqNDhLNjdXSTB1MW02RmVRdWVCQTduMDZqODI1cnFEcXNhTHM5VGI3S0FIQXc4UG1yV2FOUEcya2pLZXJ4UEVmZWNpdmxGYXdwMlJXWnZ4clZ0bjNUVjJTQnh5Q0pDa1hzTkQwNWRDRXJWSFNKSXMrQmR0VFZOWTlBd3R5UG1ueWIwdjRtU1R6dldkdz09IiwiTUlJRFNqQ0NBaktnQXdJQkFnSVVUbmJiR0lSMk5IdnpxSUtGQWVRd0cxWEJpczB3RFFZSktvWklodmNOQVFFTEJRQXdMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3SUJjTk1qUXhNakF4TURBd01EQXdXaGdQT1RrNU9URXlNekV5TXpVNU5UbGFNQ1l4SkRBaUJnTlZCQU1NRzFsMVltbGpieUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRUVnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBT3NYajNrMDRCYW40VFlkdFpLcUQvT1BKeHlEeWFQbUNCVUZVaWFaSWdUdGVabmozWDI1RGhncFpaWHNDNEQweWRJY3JsQTZ3TlVJbk9STC9MOXpCYlRFSU1BVk1HbzZnN1VLQW1iMk1GNkFIYm5oWUpkOWVpa3VwVk5XU2hITllOYzRHQmRPMVlONkFmVXF2SmhIYmUzVjRTTk1QbUJSRUtKUFZ6N1Rod2dtZ2dUZThXczJLMC93c3F2MndTRTdwYkNCc1VaaElYNTFiWk0zcHFEd0pQVG1SRkV2dDAvNnRHNWVPOEYzajE0T1hxZkVobWpuMVZ2eEtEWVFPTFpBeEN3d2dDMFA0Q2RmV3YzeThQU1I4STM1NGhPMVkrR3pOanZJcVgzOE5LTHl3dUlZSEZlck94Tmx4RU1CdkZoWUJ1UnVZQWtrZ1VhUHFONlVCaHNJTHJzQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZDQ29SSGhpeU5uYm5YUldJTDZaQlhvQlg5WVRNQjhHQTFVZEl3UVlNQmFBRkNBb1VDRWJwRnBiNkZQTG5aM0Y1UHhzTDNvZk1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQ1FGYWZKSTEvNVdnOUNFRWltRTFSUDU0UmdRd1ROVE9PUXNMQUNUZStySXRsRlF6QzlaRGhyVjgyOHlYN2p6eStBQXNwM2l6SzdUMXRoMmRsN20rdHUwc3cyUGEvb2xjMDJudDZQeUl3MzQ4Z2FIemhJMSswS0U0NXF4dkZEZUwybE14YlBmQ1l2eUVFYVl6amlRRUxVNTk1MXBYR1d5S01hLzRmTHRPK1pLT1hoTXVWZXE0clhEUEk1NFc2SkhPaUFhaUtkaXcrNWUzYzJrdC9qRklRdE02dk1YZzlMTkZ6ZGpFVE50MjBWWDlRZXZScEZaZnVjTUc5d0NhUURvRmxQenBUTUpLaFBldi9pbUptWlloS2ZyMGxMY2VtdHFqSXhMQW9xWmRPWWZIQmc2K3ZBY2RQSS9pYXVHcFVBdjdYK1VLTm1Ed2paMkJhSDRzTHdoQjJtIiwiTUlJRFNqQ0NBaktnQXdJQkFnSVVSMzhtcTI2U2Yyc3pWVjJCZEc2V0VON2t1V1V3RFFZSktvWklodmNOQVFFTEJRQXdMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3SUJjTk1qUXhNakF4TURBd01EQXdXaGdQT1RrNU9URXlNekV5TXpVNU5UbGFNQ1l4SkRBaUJnTlZCQU1NRzFsMVltbGpieUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRUlnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTlkwV2I5b1BvUm9Lb1F5V1BhSnB6MTF2cldUZzZ6VHRtTmoyVm9LUm55dktHUnFwemI4M3c1bDZZQTk2VVlrWUJEUVAwaWxPMkRQZTZ3V3FWUjV6RGZSemRjSDhiaCtMN2RHR3ZhZTZoUlRaaGtGa0NwWERzNEhjY2tuckRmOEZDbEo3SGUzOUpmNDIvRzFRbTJ6ejlXV21yUFh0Z2lLL3gwNUdqc1FmR3VERzF6ZjVRVFVVaWU4bHd5bUszVGZkT3ZOZWVKQUFQZTJwbjdJdGZSYityVnJOV2lEemxSbjJ2Tm5aMndQbzR3SC9XSjZkaFhaRytyTVdUK2E2Qm9jZzFVZkl3NmtkdW5HNGJUcFp6c3ZhY0ZZeVIwbXBmK0RlT25wU1dBbXl3SldIdlRsZjJZWHhGeWVYY1RBQ2RRbGNNTkdKMlZoWlE0OHh0UDUvUkJQLzhrQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZDaHk0Mm9raXFjVFMxaXFhL0hSV2prQm40SC9NQjhHQTFVZEl3UVlNQmFBRk9xM1FwQ2VESHRrZXR0VWZBTzZmRTZmMktGaE1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQW4rUkhJUGJ0TUVETmRUMWc4SC9SaXRBa1VkTGdBdDF0V0dXbmxqOWtuYnY0LzRHbFg3QzlwNDVlZlBPOS9hWkw2T1YxWFJLQmk2S210Qlc1SzdudVlFbk14LzVCcUJTYkxUN3JoZHVDNDlUQmVNYjlQSGRYc1RsU1ZOWWVmcjFkR2lkcjRqMHhWQlFMYjFya25EQWJkV0R6S2Z2bmF5S084RnJ3ZTdIeDg0M01HL3JKK2MwWHJ1VXZiZlZUQ0hMaUlXaE03b05EaEw4eG9iNnhVbzlLTEtjU0wrSXRZc08zLzlXYjhROUdqc3FMNEZYc0RjRzFTYVloN0twZnVNbU9peHF6SlpPMm5JaWNQWVJnMUkyU3VpVWZZTzcwdG1kSGNibCtrU1FtU1l0N3JxNHZpSUxnMkd4M2o5cklUdVdUamJhVWFTU1F4Z09tTVNIdXl6TUFDIiwiTUlJRFNEQ0NBakNnQXdJQkFnSVVVY21NWHpSSUZPZ0dUSzBUYjNnRXVaWVprQkl3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRRG01NTViV1k5V1crdE9ZMHJJV0hsZGgrYU5hbm9DWkNGaDdHazNZWnJRbVBVdzBoa1NHNnFZSFF0UCtmWnlTMzNWRXJ2ZytCUXFubXVtZ05oZnhGcmt3RVpFTGVpZEJjQzhDNEFnNG5xcWlQV3B6c3ZJMTdOY3hZbEluTE5MRmNaWS8rZ09pTjZaT1RpaE81L3ZCWk1iajlyaWFBY3FsaVltTkdKUGdUY01HYUVBeU16RU1OeTJubTZFcCtwalA1YUY2Z2kyMXQvVVFGc3VKMWoyUmoveW5NL1NkUnQrZWNhbDVPWW90eEhrRmJMOXZ2djJBMk92NUlUWkNsdzRiT1M5bnB5cFFpbU9aNVFBWXl0bVlhUXBXbC9wTVl6NnpTajhScWtWRE5FSkdxTmZUS0EyaXZMWXdYNmxTdHRNUGFwZzBKODRsOVgwdm9WTi9GcFM0VkNWQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJRZ0tGQWhHNlJhVytoVHk1MmR4ZVQ4YkM5Nkh6QWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQVlNemdMckpMSXIwT292UW5BWnJSSUd1YWJpSFNVS1NtYkxSV3BSa1dlQXRzQ2hERUhwWGNKL2JnRE5LWVdvSHFROHhSVWpCNEN5ZXBZZXZjM1lsckc4bzd6SHhwZlZjYW9MNVNldUprekh4S240YlRhU3A5K012d2FtbnA2NGtaTWlOYkZMa25mUDlrWUtvUkhrTVdoZVJKMVVzUDF6NFNjbWtDZUlMZnNNczZ2cW92cWpXQ2xGc0pwQmNzbHVZSFdGN2JCSjFuNFJ3ZytBVEVvcFk0SWdHdjZadndjK0E5citBVDJocXBvU2tZb0FsK0FOWXdnc2xPZjlzSmUwVitUQTlZWS9VbGFCbVBQVGQwLy9yOXd2Y2VQV1prUGpLb0FDL3pVTmhmRGJoNExWOEdIczNseVgyWG9tTC9MTmM4Sll6eUlhREVoR1F2ZW9QaGgvdHIxZz09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWZDQVlBQUFDR1ZzK01BQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBSFlZQUFCMkdBVjJpRTRFQUFBYk5TVVJCVkZoSHBWZDdUTlYxRkQvM2Q1OXdlUVNJZ1M5QVFBWGNGTEFRWmk5ZnBlVnoxdFkvV1RacjVXeHBjN1c1a25MYTVqSTNaODVzclMybk0yc2p0V3daUzdJVUg0SDR4Q25FUXg0REFaRjc0Vjd1czg4NXY5L2xJbkJ2VkovQjRQdjludS81bnUvNW52TTU1NmZ6QS9RdjBIYi9JclgzVkZLUG80NWNubTRpblVJV1l3TEZSbVpRVXV3akZHL04xaVJIaDFFWjBOUlZSdWRxdDFCZCsyblNLeVMvT2h5czArbGszZS8za1E5cXZENFpVdGE0VlZTVXVZMGVpcHlpVGhBZm9jb09SVmdEdXV3M3FLUmlBZDNyYmNFdGpUallJb2Y2V2FIc0NtelZQV0NNeCtjZ2g4dExxV01LYU1Xc1VqTHFvMlJ0SklRMG9Pem1lcnBRdTRlc1pnc09Oa0d4SDdkMGtkdlRUMTdzNE9NVTdWSThaaGpnR2FNK0FxOWlFTnU4UGlmMXVkejA3TXd2S1dmOEdsVm9DRVkwNFBDNVdkVGFYWUZiUjh2TnZMNSszS2dmYjV4Tk15YTlSYW1KaXluYU1sR1RWdEZscjZiYTl1K3BxbkVYNHVNdVJSZ2pTWUVock43dXRGRmU2bHFhbDdOZmt3NWltQUdIeW5QcGJrOFZtWTB4c3RucHRsRkNWQ1l0elR1Qk44M1FwTUxqVHRldmRQelNVbko3ZThta2p4WjM5ZlhiS0RmbGRacWJ2VStUVWdHbkJWRjZmUTJpUEhnNFcxNlVXVXd2emJrMTZzTVpFK1BuMHB2ejdKU2V1QXllczhsY3BDbWFLdW8vcCtxV3IyVWN3SUFIV3J2UDBZRXpoWEF0TEFic3NIaHA3aUdhbXZ5aWpQOHJ5cXJYVVdYOVhvb3d4eUF1Zk5CcnA0M1BPQkZYWmxrZjhNRFJpcWNweW93QXdwdXoyeCtmV3Z6L0R0ZGU5c21zenlndGNSNkMxd2JkekJsNk9scTVXTllZNG9HYXRoSk1ya1RFeDBqQVJTSEFWcys1cllrUU5YYitRZ2ZQTHNRNmdYeUluc3JlUWZtcG03UlZGWWZMODZuMWZpVU9rWXZTaGtVUHh2YnVrem95NksxaWhNMWhvM1h6VzZFdlNmWEErZHBpV0dhV2QrZG9Yekx6bUd3S1lGTENBc1JBbFBCQWhNbENGWFU3dEJVVlByOEhnVmNKSFdxK0YwMHBscitETVRkclA0enZ4WTExa05NaHhUK1NlVEdnK2Q0VjVMUUppdHlVR0pOQjhWRlpzamdZQlpNL0lJL1hDVGtqMHF5RE9wRjJBVlExN0NJalVwL0RuVDFVa0w1RjVnZGorc1Mxd2cxZ0UzZ2lnbTYwZkNYelNuUFhieUFQYklYditJRHBFMTZUaGFISVM5c2t5aGxtTUU1RjNjZnFBS2hxMkMwRTVQSDFnWWFYYUxQRGtaRzBIREpPbktXSHA1MUkwejVTT3V4OGUxV0F1WnpkSFFyVGtwOFRtalhvSStsYTB3R1pzenVicWJPM2lmUTZBL1c3dlZTWXNWM21SMEpLd2tLYzRXSGlCa21SOEkzQ0NnSTg3b09MNHF6VDVQK1JVSkJlakVPZ0FQSzhoWVB6YXRNK2VJVHAySU85eVRRbWVyb21QUnh4MXF4QWNzaWxlL3ViU2VFYmNXUUdZRUNnaGNMWTJIeUtqb2dqSDI1aE1wanBVdjFPdWdsaTRlaDJlUncwTzMyYkpqa3l1Q2dOemcwdnpsWU1TaVNzMHVvbzRNRzdoTU9qQ0VhWDF5RkUwblN2akJ6dVRuRXBLODZaOElvcUZBSXVidzhrZzlBckVhUkVXU1pJK2pINFhicDZnOUU5RW5KVDNvYVJ6RE4rTVVKQlFESG41NmE4b1VtRUJ1c094QnMvTjUrdEpFYlBrQUZEajhVR3ZPcy9JV3ZjU2dsR0JodlM3L0ZUWWZwV0dZZERZOGZQQXhXU0EzNXNUQzRwNCtMbTRBYXFJb1BlUXRmdWZLNkpoMFpoeGxic1VYT1NtWE5pZkQ1WlRBa3lEb2ZiYmNjbHhuQThXTkFxeENiUk55a2hYeFFwYUR3NjdmWFVZYnNpRzBLaHR2Mm9lSXZoOHJoUU1ZT2NFQXFYRy9lSSt6bmdPYzV5eHI4cTgySUFNMWMvRkxGT3BscXU1ZUZRWHJNWnpHY1ZDalliTFdHNUk0QlQxZXVScmxieHROT3RNaXREREVoTFhJSXluQUF2dU9FV0UzWDNOZEFmdDk0VmdhRzQyWElRdDBaWDZQZUNFL3FRRmU5cks2SHg3WVU1MEt2SDdmVzRmUytxN0tLQkp4c2dnQlg1cFNBR2gxaklyVmg1elE2dzNSZmFhaEJYbS9hQ2JDWlRqQ1VGVVR5V1pxVzlwNjJNakpQWFZxT3JQZ01PNE52NzRHa2Yrb3dmdE5WQkRRbmpGSnFIU3cxN3BYdmhXVzVLWnFlL1E0OU4vVVNUQ0FWV29RWEZJSEJIWFhlM0ZQclVEc3VHRG10Ri9oSEtUSHBla3hoaUFPUEkrU0pxNlM2SEY0STlZV3prQkpUbzQ2aVVNeldwOFBpci9SaWR1THhLWXNTa3NWOHZMbE9RdmhHWDJZbFIwT0JoQmpDK3UvZ0VjdlkwQXBLN1lrNDFOeGpQU1FuV0ZIVEY2NlVyamdldkI4Q3U1YStsMnZZU1JQdHVWRG83M2hoZE1TSG5VWDd0VGpzVlpHeEFsL1dwdGlPSUVRMWduTDI5bVg2L3RSMXRtbGtZajhXNFgrQ1NqV2NVREdZMU5wUy9DN2hTS3FpTUxNL2wyUW1TV1o3M0RkeitnaW84QkNFTllQUTQ2cW5rendYVWJxdkJreGpVUXNXZlpGZ2J1bzNyQWYrd043ak9POTAreW54NFBpM0wrMG5ZTDFTY2hEVWdBUDRnUFYvN0lkMXErMUhTaG11R2tJcVdSUGd5eE1GcVA4SGZqVG5qWHdZNWJRZmJKY3Q2T0l6S2dNSG90Ri9IZTFlZ3NheEhTcUc2d2ZkbVE1eDhOeVRGRnFCY3AyaVNvd0hSM3lrNSszNmhGN3ZYQUFBQUFFbEZUa1N1UW1DQyJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTEyLTIyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZdWJpS2V5IDUgU2VyaWVzIHdpdGggTkZDIChFbnRlcnByaXNlIFByb2ZpbGUpIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVMkYxMDAwMjAyNDEyMjIwMDIiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMi0yMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzZ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDItMDYifSx7ImFhZ3VpZCI6IjU4YjQ0ZDBiLTBhN2MtZjMzYS1mZDQ4LWY3MTUzYzg3MTM1MiIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiNThiNDRkMGItMGE3Yy1mMzNhLWZkNDgtZjcxNTNjODcxMzUyIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkxlZGdlciBOYW5vIFMgUGx1cyBGSURPMiBBdXRoZW50aWNhdG9yIn0sImRlc2NyaXB0aW9uIjoiTGVkZ2VyIE5hbm8gUyBQbHVzIEZJRE8yIEF1dGhlbnRpY2F0b3IiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MTA2MDUsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJlZDI1NTE5X2VkZHNhX3NoYTUxMl9yYXciLCJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyIsInNlY3AyNTZrMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2ludGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjMsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfaW50ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MTAsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6MywiYmxvY2tTbG93ZG93biI6MH19XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbImFueSIsImhhcmR3YXJlIl0sInRjRGlzcGxheUNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbiIsImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlCZ1RDQ0FTY0NGRk0xUUNEWGcxMjJGOWN2V0ZWbXFlR1gzdFFXTUFvR0NDcUdTTTQ5QkFNQ01FTXhDekFKQmdOVkJBWVRBa1pTTVE4d0RRWURWUVFLREFaTVpXUm5aWEl4SXpBaEJnTlZCQU1NR2t4bFpHZGxjaUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRU5CTUI0WERUSTBNRFV6TURFME1UazBNRm9YRFRNME1EVXlPREUwTVRrME1Gb3dRekVMTUFrR0ExVUVCaE1DUmxJeER6QU5CZ05WQkFvTUJreGxaR2RsY2pFak1DRUdBMVVFQXd3YVRHVmtaMlZ5SUVaSlJFOGdRWFIwWlhOMFlYUnBiMjRnUTBFd1dUQVRCZ2NxaGtqT1BRSUJCZ2dxaGtqT1BRTUJCd05DQUFUSzduWHlINHBnTjNUTXdDV1NvTURSZTRFVjhKbDNYenVoaWNaLzJndmgrenozV21XME9aL0VjUllFQThGMjZjZWV1TWNkMjFXUVJSS1dwaldEK0pXaU1Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lRRDhKKzAvYjhQZVlqRlJRWWtVUmNxaGF4MjdvbHcxalkvcGJza2hCdVJwNEFJZ09BSGI2bis3Zk5mZnlveHBlQ3EzVlo3QjFqTjN3cW1QTmZuYWVBamRvWHM9IiwiTUlJQmdUQ0NBU2NDRkJsbzBzNVFZRmRYYmZ1c1JkUWVvTFg2UWVubE1Bb0dDQ3FHU000OUJBTUNNRU14Q3pBSkJnTlZCQVlUQWtaU01ROHdEUVlEVlFRS0RBWk1aV1JuWlhJeEl6QWhCZ05WQkFNTUdreGxaR2RsY2lCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVOQk1CNFhEVEl6TURJeU16RXdNek13T0ZvWERUTXpNREl5TURFd016TXdPRm93UXpFTE1Ba0dBMVVFQmhNQ1JsSXhEekFOQmdOVkJBb01Ca3hsWkdkbGNqRWpNQ0VHQTFVRUF3d2FUR1ZrWjJWeUlFWkpSRThnUVhSMFpYTjBZWFJwYjI0Z1EwRXdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBVEs3blh5SDRwZ04zVE13Q1dTb01EUmU0RVY4SmwzWHp1aGljWi8yZ3ZoK3p6M1dtVzBPWi9FY1JZRUE4RjI2Y2VldU1jZDIxV1FSUktXcGpXRCtKV2lNQW9HQ0NxR1NNNDlCQU1DQTBnQU1FVUNJUUN3Y3NIdUw4WkZMM0ZOeVUvRE9RbjNibXgwOGxubjBPNVJrdExiT25vUEhRSWdPRWk2SW1BWjE4MXE4UkppTDBoYnc3WnF1dW5pUnE2ZmpXakdvQnUxTW9vPSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFTWUFBQUVBQ0FZQUFBQWVNZHZ4QUFBQUFYTlNSMElBcnM0YzZRQUFBSVJsV0VsbVRVMEFLZ0FBQUFnQUJRRVNBQU1BQUFBQkFBRUFBQUVhQUFVQUFBQUJBQUFBU2dFYkFBVUFBQUFCQUFBQVVnRW9BQU1BQUFBQkFBSUFBSWRwQUFRQUFBQUJBQUFBV2dBQUFBQUFBQUVzQUFBQUFRQUFBU3dBQUFBQkFBT2dBUUFEQUFBQUFRQUJBQUNnQWdBRUFBQUFBUUFBQVNhZ0F3QUVBQUFBQVFBQUFRQUFBQUFBZTZTQ2t3QUFBQWx3U0ZsekFBQXVJd0FBTGlNQmVLVS9kZ0FBQVZscFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWxoTlVDQkRiM0psSURZdU1DNHdJajRLSUNBZ1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNEtJQ0FnSUNBZ1BISmtaanBFWlhOamNtbHdkR2x2YmlCeVpHWTZZV0p2ZFhROUlpSUtJQ0FnSUNBZ0lDQWdJQ0FnZUcxc2JuTTZkR2xtWmowaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOTBhV1ptTHpFdU1DOGlQZ29nSUNBZ0lDQWdJQ0E4ZEdsbVpqcFBjbWxsYm5SaGRHbHZiajR4UEM5MGFXWm1Pazl5YVdWdWRHRjBhVzl1UGdvZ0lDQWdJQ0E4TDNKa1pqcEVaWE5qY21sd2RHbHZiajRLSUNBZ1BDOXlaR1k2VWtSR1BnbzhMM2c2ZUcxd2JXVjBZVDRLR1Y3aEJ3QUFENjVKUkVGVWVBSHQzTHVPSkdjVkIvQmQ5bUlITmhMaUloT1FPRWFDQ0RraUlDTkc0ZzM4Q2p3SkNRbENCQVNJQk42Q2hBZ0pKRVJpSkF2WkFveXhmRm52aGUvczlKRnFlM3RtdWs5L3A2ZDY1MWZTTjFWZFZlZFV6YTlxL2wyOTlzeWRPM2Z1dkQvR3N6R2ViT2F4Ykt6WDROSG0rdnhxekdONmNESHpkU0Z3ZjdQODh6R1Blem5OM05mcnZhL2oyanpkWEs5UHZ6SVdUQVFJRUZpVmdHQmExZVZ3TWdRSWhJQmdjaDhRSUxBNkFjRzB1a3ZpaEFnUUVFenVBUUlFVmljZ21GWjNTWndRQVFLQ3lUMUFnTURxQkFUVDZpNkpFeUpBUURDNUJ3Z1FXSjJBWUZyZEpYRkNCQWdJSnZjQUFRS3JFeEJNcTdza1RvZ0FBY0hrSHJndEF2RkxvcVl6RVJCTVozS2hGcWQ1ZDdPYzg4VW1pNWNJaEJXdlMzRFd1RHIvUE1ReDUrYWQ2Qmk5dzJ2VE8rZUhkN2c5RldtVWYwN2o5bnpuTi8rZEh2VkdFTVh4OTVpK1BVWmN2SDJmb1BLQ1IvMVB4L2pqR0crT0VYL1Q2YWdUR3ZXbXF3WEMvdDRZL3hranJsMTQ1L1VZaTZZaGtDWnZqZVZ2alBGNHMyN01URTBDY1EvR2c4N0hZM3gvak4rUEVWT3MzemNUY3QvUFpqd3gvV1VjK0wwNEE5UEpCZklIOE9RSFh2a0I4d2IvNXpqUEdLYlRDanc4OW5Bemd1bU56VW5FeWNRVGs2bGZJQUlwbm5Cam1IWUxSRGpGSjRBWXNXenFGNGkvcHZyNUdKa0o1U1BPQ0tZTW81am5jdm1FRkJLWUtDQzhKMkx1MFNvL3NzVkg1Nk9tZmY5TjZhaURLQ1pBNEZZSlpFQ1Z2Mm5CVktaVFNJQkFsNEJnNnBMVmx3Q0Jzb0JnS3RNcEpFQ2dTMEF3ZGNucVM0QkFXVUF3bGVrVUVpRFFKU0NZdW1UMUpVQ2dMQ0NZeW5RS0NSRG9FaEJNWGJMNkVpQlFGaEJNWlRxRkJBaDBDUWltTGxsOUNSQW9Dd2ltTXAxQ0FnUzZCQVJUbDZ5K0JBaVVCUVJUbVU0aEFRSmRBb0twUzFaZkFnVEtBb0twVEtlUUFJRXVBY0hVSmFzdkFRSmxBY0ZVcGxOSWdFQ1hnR0Rxa3RXWEFJR3lnR0FxMHlra1FLQkxRREIxeWVwTGdFQlpRRENWNlJRU0lOQWxJSmk2WlBVbFFLQXNJSmpLZEFvSkVPZ1NFRXhkc3ZvU0lGQVdFRXhsT29VRUNIUUpDS1l1V1gwSkVDZ0xDS1l5blVJQ0JMb0VCRk9Yckw0RUNKUUZCRk9aVGlFQkFsMENncWxMVmw4Q0JNb0NncWxNcDVBQWdTNEJ3ZFFscXk4QkFtVUJ3VlNtVTBpQVFKZUFZT3FTMVpjQWdiS0FZQ3JUS1NSQW9FdEFNSFhKNmt1QVFGbEFNSlhwRkJJZzBDVWdtTHBrOVNWQW9Dd2dtTXAwQ2drUTZCSVFURjJ5K2hJZ1VCWVFUR1U2aFFRSWRBa0lwaTVaZlFrUUtBc0lwaktkUWdJRXVnUUVVNWVzdmdRSWxBVUVVNWxPSVFFQ1hRS0NxVXRXWHdJRXlnS0NxVXlua0FDQkxnSEIxQ1dyTHdFQ1pRSEJWS1pUU0lCQWw4RDkwZmpMVGZOSFkzNXZqR2ViMTNkM0xDL1h4VzRQRi92RWE5UHBCT0phUEJnanI5Y2hSODdybU5mK2tGcjdFcmhPSU83SnZMZnkvc3g3TG1xWHk4dlhzZS96VElvdjM0d3RZM3I5WW5idzEvamhNSjFXSUM5c3ZKbVlDS3hGSU83TG1DSlhqc21GcjBhRFg0OFI0UlEzK2I0ZjdUSUY0K0FmakJGVHJydDQ1V3VYUUliU3Q4WUJmanpHNDhXQmNsdXN5cHRrZVYxeWUxejMvNDd4aHpHZWptRWlNRU1nNzZWL2oyYS8zVFNNK3kvdnhldU9FZnRHQm4xeDNZNzdidC8zd1B2MnM5L2xBdkZ4TzZZZmpSRVhzam8rSExYeFVUd20xKy9Dd2RmakJhYmNTL0hPR1FsMVRMTkl5ZmpoTUoxV0lKK1U0ck44WEw5OXIyRmNyM2pTL1dnTTEyMGdtS1lLNUQyVmI2Q1Y1czhpbVBJZHQ5SWdhdkpFcXZYcWpoT0lHMkRmVUZydXQrL0g5dVBPVHZWdEZjaVBkYVh2UDRPcFZLeG9WUUxMMExucXhISy9uRisxcjIwRXFnSkhQYkI0MTZ5eXF5TkFvRTFBTUxYUmFreUFRRlZBTUZYbDFCRWcwQ1lnbU5wb05TWkFvQ29nbUtweTZnZ1FhQk1RVEcyMEdoTWdVQlVRVEZVNWRRUUl0QWtJcGpaYWpRa1FxQW9JcHFxY09nSUUyZ1FFVXh1dHhnUUlWQVVFVTFWT0hRRUNiUUtDcVkxV1l3SUVxZ0tDcVNxbmpnQ0JOZ0hCMUVhck1RRUNWUUhCVkpWVFI0QkFtNEJnYXFQVm1BQ0Jxb0JncXNxcEkwQ2dUVUF3dGRGcVRJQkFWVUF3VmVYVUVTRFFKaUNZMm1nMUprQ2dLaUNZcW5McUNCQm9FeEJNYmJRYUV5QlFGUkJNVlRsMUJBaTBDUWltTmxxTkNSQ29DZ2ltcXB3NkFnVGFCQVJURzYzR0JBaFVCUVJUVlU0ZEFRSnRBb0twalZaakFnU3FBb0twS3FlT0FJRTJBY0hVUnFzeEFRSlZBY0ZVbFZOSGdFQ2JnR0JxbzlXWUFJR3FnR0NxeXFralFLQk5RREMxMFdwTWdFQlZRREJWNWRRUklOQW1JSmphYURVbVFLQXFJSmlxY3VvSUVHZ1RFRXh0dEJvVElGQVZFRXhWT1hVRUNMUUpDS1kyV28wSkVLZ0tDS2FxbkRvQ0JOb0VCRk1icmNZRUNGUUZCRk5WVGgwQkFtMENncW1OVm1NQ0JLb0NncWtxcDQ0QWdUWUJ3ZFJHcXpFQkFsVUJ3VlNWVTBlQVFKdUFZR3FqMVpnQWdhcUFZS3JLcVNOQW9FMUFNTFhSYWt5QVFGVkFNRlhsMUJFZzBDWWdtTnBvTlNaQW9Db2dtS3B5NmdnUWFCTVFURzIwR2hNZ1VCVVFURlU1ZFFRSXRBa0lwalphalFrUXFBb0lwcXFjT2dJRTJnUUVVeHV0eGdRSVZBVUVVMVZPSFFFQ2JRS0NxWTFXWXdJRXFnS0NxU3FuamdDQk5nSEIxRWFyTVFFQ1ZRSEJWSlZUUjRCQW00QmdhcVBWbUFDQnFvQmdxc3FwSTBDZ1RVQXd0ZEZxVElCQVZVQXdWZVhVRVNEUUppQ1kybWcxSmtDZ0tpQ1lxbkxxQ0JCb0V4Qk1iYlFhRXlCUUZSQk1WVGwxQkFpMENRaW1ObHFOQ1JDb0NnaW1xcHc2QWdUYUJBUlRHNjNHQkFoVUJRUlRWVTRkQVFKdEFvS3BqVlpqQWdTcUFvS3BLcWVPQUlFMkFjSFVScXN4QVFKVkFjRlVsVk5IZ0VDYmdHQnFvOVdZQUlHcWdHQ3F5cWtqUUtCTlFEQzEwV3BNZ0VCVlFEQlY1ZFFSSU5BbUlKamFhRFVtUUtBcUlKaXFjdW9JRUdnVEVFeHR0Qm9USUZBVkVFeFZPWFVFQ0xRSkNLWTJXbzBKRUtnS0NLYXFuRG9DQk5vRTdyZDExdmdjQk9MNlB4bmozaGpQenVHRUR6ekhwMlAvR0tZekV4Qk1aM2JCSnB4dUJsQUUwbWViZnEveUQrL2Q4VDNtOXp5QlQ0dFRDQWltVXlpdjZ4anhneHJUbTJQOFpJd3Z4NGlQOUsvU0QyOThMNitOOGFjeC9qNkdjQm9JSmdLZEF2R3hLNllmamhFL2dQSGtFMDg4c2J6dk9IVC9mZnV1YmIrZkRaT1lIbHpNZkQwWEFVOU01M0tsNXA1blBqVmxRT1hyQ0phWWRyMk9iY3NuajF6T2ZaOFg3dml5N0prOWNyZmNGcStYZlhLLzNMN2NsclU1WCs2VHk0L0h4bmhpK2lKM01qOHZBY0YwWHRkcjl0bkdEL3p5aDM2NUhNZGF2czdsbkc5dmo5ZTdwcXYyWDI1YjF1YjZuQyszYlM4djk4bmwvSy9OK1hxN3h1dVZDd2ltbFYrZzV0TjdWWDl3WDlYdnEvbDJXRS83ZkdkWnp4azVFd0xIQ2VUSHVlTzZxTDVSQWNGMG8vd08zaURnYWFrQjlkUXRCZE9weFIydlc4QVRVN2Z3Q2ZvTHBoTWdPOFJKQlR3eG5aUzc1MkNDcWNkVlZ3SUVqaEFRVEVmZ0tWMmxnSTl5cTd3c2g1MlVZRHJNeTk3ckYvQlJidjNYNk5vempQK1A2ZGdMNlIzcVd1YldIZmkveUJzZVRGNDB1WWxYUitXS0o2YWJ1R1E5eDh3Znhwem5VUzc3UWQzZUwvZVArWExiY2ptMzVickw1dGtydHgvNmVsa1h5OHZYMlN2bnkrMjVYODV6SC9NekU0Z25KaGZ4ekM3YTVuVHpsM2x6bnQvRjlqdlY5dXZMOXN2MU1WL1dMSmN2MjViNzVEeDdWVjh2NjViTDJYYzVYMjdQNVllYkhmenk3bExxdE10SDVVcGN5TitOOGRZWWo4YUlKNmhER2thd3ZUdkdYemUxOFV1aHBsNkJ1R1p4amI0MnhnL0dpTDh1RUZQK1VGNjh1dDFmNHo2TVgrTDk4eGp2alpGbVk5SFVLQkJ2a25FL3ZqM0dMemZIT1NSUFl0L284WG5VZmp4R3JLaU9kNkxKbUxiZnVTL1crdG9oSUlUMlYyVzF2OVd4ZStZVDZ2ZEdvMnFlUEsrTEo1NlB4b2cvR3BaUFRHUHgyaW1LWTRvVGlUOHhZVHF0UVBqSEQ1dzNnNnZkNDhuSlUvelZSak8zWmk3RVUxTSt5ZWU2Zlk0VCswWW1mUkpmWXNRVTgzMy9NWHg1TU85SXovbE8vaVd1Z1RlRms3TTc0QjRDeXpmTnVFLzN6WWpjOS82K1FiVEh1ZGlGQUFFQ2N3UUUweHhIWFFnUW1DZ2dtQ1ppYWtXQXdCd0J3VFRIVVJjQ0JDWUtDS2FKbUZvUklEQkhRREROY2RTRkFJR0pBb0pwSXFaV0JBak1FUkJNY3h4MUlVQmdvb0JnbW9pcEZRRUNjd1FFMHh4SFhRZ1FtQ2dnbUNaaWFrV0F3QndCd1RUSFVSY0NCQ1lLQ0thSm1Gb1JJREJIUURETmNkU0ZBSUdKQW9KcElxWldCQWpNRVJCTWN4eDFJVUJnb29CZ21vaXBGUUVDY3dRRTB4eEhYUWdRbUNnZ21DWmlha1dBd0J3QndUVEhVUmNDQkNZS0NLYUptRm9SSURCSFFERE5jZFNGQUlHSkFvSnBJcVpXQkFqTUVSQk1jeHgxSVVCZ29vQmdtb2lwRlFFQ2N3UUUweHhIWFFnUW1DZ2dtQ1ppYWtXQXdCd0J3VFRIVVJjQ0JDWUtDS2FKbUZvUklEQkhRREROY2RTRkFJR0pBb0pwSXFaV0JBak1FUkJNY3h4MUlVQmdvb0JnbW9pcEZRRUNjd1FFMHh4SFhRZ1FtQ2dnbUNaaWFrV0F3QndCd1RUSFVSY0NCQ1lLQ0thSm1Gb1JJREJIUURETmNkU0ZBSUdKQW9KcElxWldCQWpNRVJCTWN4eDFJVUJnb29CZ21vaXBGUUVDY3dRRTB4eEhYUWdRbUNnZ21DWmlha1dBd0J3QndUVEhVUmNDQkNZS0NLYUptRm9SSURCSFFERE5jZFNGQUlHSkFvSnBJcVpXQkFqTUVSQk1jeHgxSVVCZ29vQmdtb2lwRlFFQ2N3UUUweHhIWFFnUW1DaHdmMEt2RExkN0UzcHBzYi9BczdIcjAvMTN2NVY3eHIxNTkxWis1emZ6VFVlZVBCN2o2Q3lZRVV5ZmJBd2UzWXpGclQ1cS9OQkZRSmxlRmdnYndmMnlTK2VhSjV2bUh4OTdrQm5COU00NGlZZGp2REZHbkpoM3FJSFFPRVVRUFJqai9USCtOb1p3R2doYlU1cThQZFovWjR3dngzQmZiaUZOZmhuM1plVEovOGI0N296ZWNZTkgwd2lWbUJ2bllmQ2JjYTFpaXBBeXZTaVFiN2kvR0t2ZHorZGpFRSs0Y2IwK3pRdjQ0bVU5N0ZWZStNT3E3RjBSaUhmOWVQZVBKOVF2S2cxdVdVMys4MExNWjl6cnQ0eXYvTzNHZlhyVUUrcU1pNVVua1BQdDd5YUNLN2ZsY3N4aml2VzU3dm1LSFY5MmJjOTF5ejdMMHR3ZTY1YkwrWHE1Ynl4dm45LzI5bmlkeDRybDdmTmVIaU9YdCtmYlBlSjFUTXRqWDZ6WnZTNzN6ZjF6bmpYbUx3dWtVY3lYeTNsdG9pS1dZOHJ0eTIwWFcxNzh1dHcvOTgzNWNzL3RkZms2NTFmdG05dGkzNXppL1BMMXZ1ZWF0WWNjTTJ0eW5yVTV6L1V4MzdWdXViMjhQQ09ZNHVBSnRldEVsdHR5T2VmWDFWNjJQZXR6dm4zYzVmcmw4bVg5c241NzMxeS9xMjY1NzY3bFhKZnpYVDJ1Nm4vZC9zdGF5OWNMWEhZZGx1djNNVi91bjhzNVg1N0Y5cnA4bmZPcjlzMXQyL3RlOXpycnR1ZmJkYkY5MTdydHV1Vit1L2JmdFc1WGo0UFg1WC9xUDdoUUFRRUNCTG9FQkZPWHJMNEVDSlFGQkZPWlRpRUJBbDBDZ3FsTFZsOENCTW9DZ3FsTXA1QUFnUzRCd2RRbHF5OEJBbVVCd1ZTbVUwaUFRSmVBWU9xUzFaY0FnYktBWUNyVDNWaGgyLy9VZG1QZmtRTVQyQktJLy9NNy96UkV6cmQyOFhKbEF2SEwxbkhkNHRjQlRGY0xwRkhjMis3dnE2M1dzRFd1Vi93dHA2ZHhnNysrT2FOWnY1NnlhV2ZXSlBEYXBtLzhJcS9wYW9IOHl3dHBkdlhldHE1RjRQVUlvMzlzenViek1mZlJiaTJYNXZMemlMOFErUFV4UHR6c2trOEZsMWZjdmkxcDhxL3hyY2Q5L2NFWWNhLzdHRHdRVmp6bEU5T24vd2ViYTBWNVU2V0pxZ0FBQUFCSlJVNUVya0pnZ2c9PSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIl0sImV4dGVuc2lvbnMiOlsiaG1hYy1zZWNyZXQiLCJ0eEF1dGhTaW1wbGUiXSwiYWFndWlkIjoiNThiNDRkMGIwYTdjZjMzYWZkNDhmNzE1M2M4NzEzNTIiLCJvcHRpb25zIjp7InJrIjp0cnVlLCJjbGllbnRQaW4iOnRydWUsInVwIjp0cnVlLCJ1diI6dHJ1ZX0sIm1heE1zZ1NpemUiOjEwMjQsInBpblV2QXV0aFByb3RvY29scyI6WzFdfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIzLTA5LTE4In1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMy0wOS0xOCJ9LHsiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjM4ZjZjMThhMTgyNWQwMWM4MmI2YzQ2NjNkNDI4MTIyNzFiZDNiZDciXSwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiMzhmNmMxOGExODI1ZDAxYzgyYjZjNDY2M2Q0MjgxMjI3MWJkM2JkNyJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiVG9rZW4gUmluZyAzIEZJRE8yIEF1dGhlbnRpY2F0b3IifSwiZGVzY3JpcHRpb24iOiJUb2tlbiBSaW5nIDMgRklETzIgQXV0aGVudGljYXRvciIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyLCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjJ9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDT3pDQ0FlR2dBd0lCQWdJVUlVM3ptdkJYZzF5SkpnMU5wL0R4OFR0M0VnOHdDZ1lJS29aSXpqMEVBd0l3ZHpFTE1Ba0dBMVVFQmhNQ1ZWTXhFVEFQQmdOVkJBZ01DRTVsZHlCWmIzSnJNUll3RkFZRFZRUUtEQTFVYjJ0bGJtbDZaU0JKYm1NdU1TSXdJQVlEVlFRTERCbEJkWFJvWlc1MGFXTmhkRzl5SUVGMGRHVnpkR0YwYVc5dU1Sa3dGd1lEVlFRRERCQlViMnRsYmlCU2FXNW5JRU5CSURBd01DQVhEVEkwTURnek1EQXpNRE0xT1ZvWUR6SXdOVGd3T0RJeU1ETXdNelU1V2pCek1Rc3dDUVlEVlFRR0V3SlZVekVSTUE4R0ExVUVDQXdJVG1WM0lGbHZjbXN4RmpBVUJnTlZCQW9NRFZSdmEyVnVhWHBsSUVsdVl5NHhJakFnQmdOVkJBc01HVUYxZEdobGJuUnBZMkYwYjNJZ1FYUjBaWE4wWVhScGIyNHhGVEFUQmdOVkJBTU1ERlJ2YTJWdUlGSnBibWNnTXpCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQkpZSGIwWEI0bU9TQjhkSEw3ek42QURNcUY2OVcwOWY1eG1YbzhNSnZBSUVFQ0kxWlZlUnBlMFBFR2pZdkloY0JDejFOaXFUTStzRmg0a05Ca082WDd5alRUQkxNQWtHQTFVZEV3UUNNQUF3SFFZRFZSME9CQllFRkRqMndZb1lKZEFjZ3JiRVpqMUNnU0p4dlR2WE1COEdBMVVkSXdRWU1CYUFGT2dhZXF5OStLQVR3a3N4NHBaZ1FzcHY2SlhDTUFvR0NDcUdTTTQ5QkFNQ0EwZ0FNRVVDSUNibUtnUDM4NzBWVEdmY2pqU1BWVWs5aVdZWjBuUG9nVHlsbEE2MktjejJBaUVBcnBqVWVLWGxGQ1VUekRQMEZ6emJSVlZ6K0wvai9HZTNvazgvV1VrR1RpST0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBRmdBQUFCWUNBSUFBQUQrOTZkakFBQUFCR2RCVFVFQUFMR1BDL3hoQlFBQUFDQmpTRkpOQUFCNkpnQUFnSVFBQVBvQUFBQ0E2QUFBZFRBQUFPcGdBQUE2bUFBQUYzQ2N1bEU4QUFBQUJtSkxSMFFBL3dEL0FQK2d2YWVUQUFBQUNYQklXWE1BQUM0akFBQXVJd0Y0cFQ5MkFBQUFCM1JKVFVVSDVnWWVGU2toSVkxcEhRQUFET0pKUkVGVWVOcnRuR21RSFZVVngvL25kdmRiTWxrbjYweVlMQVFTaHdFU1pnS1RoRkNJWmR4S2xoS0JzSlJVTEQ4b1NvRUxXcVdCS2t2NFFPa0hUWlZnNFZJS1dBcUNRdkVob3FXZ3FDUkVsaEFJaStEQVpBSlpKeVNUZWYzZTYrNXovSEJ2THkvSnpPczNtWmwwck55cXZDU3o5T3Y3NjNQUC8zL092VE1rSWpnMUFIV2lieUFyNHhRSU0wNkJNT01VQ0ROT2dURERQdEUza0hvSVFBQWdnVUFFUkVnamR3VHp4UXBFSkNKRWRPd3ZQTG5rYzVpWkhPYzRPU0pDejE4Q0lZdjIvbW4zcmtkMzJsTWRCQ2tlSVJGRXF2M1ZKZC9yS013dENndXBZM004Q1VBWUNqNlRyUTYvZG1qcjU3WUVGVllPZ1ZOd2NNamRWVnE4dnFNd3R5Z2lHRHFZc3I0MGtySGdmVkQ5MStxL0JRT2VNeTBuL25DekFnQUI1VlM1dDlSNlhWdkhobVdvdDZ3eUhSR0dBZ3RaQk9ERnRjOVY5MWJ5cy9KQk9hajd2Y3BSNVozdWxPWFREQVVXVXNNbHl3eURFSlBuOWY5ZStmS0xCemIxRitjVnVjckQ1MHNSSVZ2NWg3emN6SHpudzkwQWRFQU5IeEVaOWhINm5obWtxR2ZEVzMzMzl4YmJpbHhsUWowS2lxVEtYT1hPaDdydHlZNzRYSmRDZGtIb1FHQ2Z5YUk5RzNlOWVjZjJZbHRSZklrQkRVV0JDSVRLN3ZMWjkzWk82cGpNUHBPdDBvaHVGa0ZFTXFGc2RmaU5nVzFmZUQ0M000ZDBKb0ljS3ZlNlo2eHZuM05GcXdTaWJBVWdqZlhJSEloWUptemxEL2d2WHJNWkZsbDVTMWpxcGdhVlUrVWQ3cHdyV3hmZHRsaEV6T1RTcVdLMlFCd3BFOWR1THU5MG5Ta08rL1VUcEhKVWRXOWxjdWZVcGI4OFg4L2Y1TnAwUmpSTElHcGw0dFZidHZZL3N5L2ZVbUF2aFV4WTVBLzQxa1M3ODZGUUpsVDlCSmxWRVBxZUF5RkY3OXp6OW81ZjlCVG5UVWdyRTc0RWJuRGViN3B6TS9JcFpTS2pJR0tac05XK3YreDVjLzJyeGJZSmFXVkNVZVc5Y3NlUGxrNWRQazFTeTBRV1FTUmxZdkEvaDdmZXVNVnB6b0hTeTBScDRkZk9hRjNiSm9IQUlnQ1VNakZrQ2tSU0pnSTNlSEh0WmhCWkJVdUNkREt4MDUxMWFjdmk3M2JvMlJBUlVpZkk1QmpTWXB2N0V4RTJUUkdTSWFKVWY3eGU1Mk80ZDRtcmljMXVieW5mVWtqam81V2pxdnVyVFVzbUxidi9mS1NvSmtZSVFsK09pTWhxNEhLTjNVU3RUTHoyalpmM1A3VzN1R0JDcW1yQ29tRFFWem5WOWJzVlpGR2FhbUtFSVBSRjJlZDl6K3dIQUJWSFJPS3RpQWo2ZVRhdm50NXdSRVF5WWF2ZW4vWDAzdGRUbks5bFlsaDZJcVFJRE8rUXYveXhsWVc1UmZaWmpTaEJwZ0toQTk0ZjhQOXgxV1oyQXl1bkNLTGZSeEdJUUFDQnlDSnhnL3lzL0NYYjExRGVnaURsK294QUsxdnRmM3J2NjdkdEs4eU5xZ2thNXJzQUlrV2xkMHNkRzVZMnI1NmhVNnpnZUZ0NGRjcHdzaWszSTg5dVlPVVZpZWgwVElsWHBSUzdnVE05cDlOMXloSEtoQ2hibGQ0WjNMcnUzMDV6RGdwMUV5UUFsU1AzM2RMOEx5NXNXN2RBT0pRSkdZRlFOQUlDQWc2WVdTZ1FBQW9RUUJFa0JBRXdzM0NRMXRLalJpYUlLOEVMVjIwU2orMnB1VlErT3FjcTc1ZG5ySm5kL3YxekFSMlR4NVVhWXI3MTd4dGdFUUZFOUQ5RXY0WUQrcVV4Q3FGTXZIVERGcmVuNURTbm8yQXJyOThybkZaYzlzRDVnQW1mMGVwcjF3R2g1eC9QR3lRQ0FZbVFDQW5BNXJNcE1kVEt4TGUyN1gxeWQ3NDFsVmlTUlVFNUlJdTZIbDFwRmEzamw0bkdRQmdXQUJzb21vVUloRFdqOEZPcE9KQUFwcHJvZStEZDNudi9XNXczUWJ3NjMyMW1LNmp1cTU3Nzg2NEpwemZ4aUtxSjR3WWhpYUJBSWk3QzlaSXlJa1NFUUxxYTZIOW0zL1piWDg2M0ZvU2x6bnkwak5qazduQ1gzTmt4NDZPenRFeWdVYzl5L0NDaUp5OUNJbUNZbXhjUVM3aDJDRU50bk1RVWlIVExxTHpUM1hyakZtZUtUUmJWYjdkQVZFNjV2YVcyZGZNWGZHVlJKQlBwYy9Pb2dSQXhMQmpDT2pXSU1DUk1GaEJDNEVsUTRhR3ZFQ2RJOXZqNXoyNEtLbXcxMmFtcUNVZFZkbFdhVjgvUVhYbWdzWGJMcUlLSUl5SjZwV2lac0FBVytZTytkOGdiam9LWXZiYVhidGd5K09aQWJub3VWYnZGVnQ1Qkx6ODdmOTV2TDhDSTJpMmpDa0tHWjZHWEJoMTdhWWcyNGREYmMyL2MvdXFlamJzS2M5UHRUU2lTS2lPUXpvZTc3VWxwdS9KakNjSTRpR095Z0VCNDZHU3AvUVVIVEJiMVBkajc5Zy9mS3JSTllFOTByVHpVTXEvcHl2K2tjMko3QTEzNXNRUmhubm9VQmFGcVNwUkhqejJwWkRYUnYybi95N2RzemJjVW1FVTRuT25RTE1pbThnNzNqUFh0c3k5dGFhZ3JQNFlndU5aUWNZSkYvS3IvT29xQ25vUDducnZsMnVlc0pnc1dTV0NNaVlROWppT2lTZnRvdDg5dFhkczJncTc4R0lJdzlqSDIyc1FTdWlrNXRxZEt5b1N3YkxweWt6Y1lxSWsyKzVvcXhmYWNrRndtcHQyeXB6SmwyWlJ6N3V2VWJ6OUdNdEU0Q0VHaTBFaVlTeEdKWEVidDQwckt4S2JybnZ2Z2xVUE9qRnhRWllHeElReGlqVlZNL1didzJlUVArRTV6cnZPUmxSaGptVGhpMU44Tmo1WkE5RWZQTllKMDdLZkZnSVZ0ZDJ6dis4UDdFMCtmRUZTWWlCaTZ1Nk12UithQUUzUzdWYUJJUEFsS2Z0ZnZWK1NtNTBhbDNUS3FJTUtJMEFBTUhETVRpa2pWUVBCWjJhcm4xNzNiNzM2emFWNHhxSnFPRHVLTENBanh3Z0JBcEJTVmQ3cm4vTFJyU3VlMGNhYVFEa1JOUk1RekVRSUpxYU0wd3pTZHRoelljdE5MaFphQ1NTZlJJVGlDV1F3NmtNekNFSEtvOUU1cDBUY1h0MTU5V2l3VFk1MFlHZ01oWUlDVDhSL1BSQVFxR1JFU2lIS1V1NnY4OUpXYlZOR0NUYXg5ZFBqWVRTK3ZsZ1hsbE52bnpyNmk5Y3piMjRFd2NXbDg0elVhdE5oaTdBTkhoa3BFZjlCY3psRUEvbnJGczlVUFBDdVNDWjFmRVJlc0hDWmRGc0NteXQ1S1Uvdms4MzYxSExvcmIyUmkvQ2lrQWhIMm84Q0pWbFZjZ0FPc0gyeDQzMCt2Zlc3L0N3ZnpzL0tCeHhwV2JjRWFOVEtJUmFESU8reXJKdXVDUjd0SjBYaktSR01nSXZNajRVeVM1bEpiRENqeUs0RTM0QU40ZnYzMnR4L3FtOUJXOUtzTVRTRlJzSEpjcEVEYlN3NmtldEJiL3NBRmhaYmlXTFJiMG85MHFtSFNZY0lBUmNsUFFJcXFCejFuaXIxajQ2NFg3bnA5OHZ5bXdCTVNjTnpnQlZDYkhVVkFSSXBLdlc3blBjdW1Yemg5L0dXaVFSQ1NjTVMxTTlHRnBSS3d6L21aK1oxLzN2UHNyUzhYWnVhWkJhd1JTTGdUb2xFa1dBQXFSNGQ3U2t0dVhiUnczUUxkZ01UNHlrU0RJQkFuU0RMNzAxQ2g1aGsvb1lnRCtlZFh0MEZnNXhVSFRLUTNnM1NsZHBSU1FGVGVHdXdyei9uNDdLVjNud09NWmxkK2JFRkVhVUlSUVlSSlNFd3R5S2JFRkFKVVRobXhOQ3NwOUk0SkZnSllqaXJ2cTB3OHMybjFJMmtQUVdZREJHTEx4Qkx0dTRjZmlsSUdnVm4wZ2pqQ080WUVJUkJsa1ZjS1lORkZqM1NybkRyaHFhRUJFRkdITm83d3lHZ1R4UUVmRlUvaEtoQVJGYkpnRVFLVUltRlUrcXNmZVdMVnBFVVRzME1oRllpb0RJK045QkEyV1llRytUa1JnWm0vT1ZoQmdNQ2lnWjdCRlJ1V3RxNlpwU2xBeHJiZE1xb2dqT3dqN0tJZm1meUVRR0x5SGNHc0RvN21yMkV4Vk1FYTZCbHN2K24wOXBzWFJWdCsyUmtwYzRRSW9MWFFkR3ExcFJBUTZSZ0lLeW9kT1Vjb0JZdkswMkJmYWM0bE0xZitlSm0rN0FtWGljWkJ4TnRjVUtHaFlpS3FpUXVFSzZmV2Nla3kxVmJsZnE5cFhuSE40eXVRR1psb0hFVENVREhwa3dpMTVsS1BXRFVqdjBBQ3NTenl5d0VIc3VheGxjNUVPMU1Kc2pFUUxHR3lCRUxocEhqeFIxNHdWazJEU1NBS0pJTFMzc3FuSGwvWjNERTVzeFJTZ1pBYStVeWFpRkJFVWFPYWlmUUpjdWhnMytDRmQ1Njk0TElXSHB2TjIzRUNJYldHS3A0L1JkNHhQQmNxVUdFeFJRSkFyTHgxc0svVWZ2MzhydThzMFFjY2t0eXlOdEoyc1RuUnVXZEFSSGNXUkZkWWtjVEdadHhSQSsrNWM3cWJQL2JnY2ozLzhlbktqM2cwWnJHajdDaElHcXFvQjJzV2k3SlYrUU92T0ROLzJSTXJBWEFnS25zeTBUaUl4SUVRMDE4NDJpOGw2bEd5eUsreVYrR3IvcjZxT0RPZjVRVFpJSWdhUXpWRUQ5WU1Ba0dJQmc2VUxuK3dlM2JYVlBaWU9TY0JoVlFnakh4SzFJMC9zcklPdTVVaUFqdW5EdXdldlBqYlo3VmYzOGFCNkY1dTlpbWtBb0ZraDBxek9OSTdBZ1JoT0FVNnVMdDAxdVZ0RjkxMWxvaVFpcUZsZjZRcncyc01WZHhsSUpEUy8yT3g4MnBnZDJYMldWTS84MWkzaG5laSt0RWpHNm1QRnhwL3FWV1R3L2E4TUNBc3NLbDgwSGNtMmxjL3VRb0EreWVzS3orV0lDUjVMQ0ErS0NNUTNhZUhJdmFrVXZYWC9uSFY1TlAwV2ZtVGpFSTZFTW56dDdXSGhzeE91S0lEQSs2bjd6bXY3Y0xwN0owY1lubjBhR2hmQXppcTlMWnlxcjkvOE9LYmwzUjlhU0VIUXZZSjdzcVBlTlRmNldMSVVSRmh6bzJvbkRyUVgvclFKUzJmM0hBdUFGSlo5OUVqQndIRVhSbWRFY3crcUlpeTFjQ0I2c3g1azI3WXVBb0FqK3BaK2V5QkNETUJtOU8yeEFJV0lZc3FnNzV0cTNWUHJiYnppbjNPZmpWeGZDQUlVSkR3QjNaRW1UMUxEakFZZURjOHNhTDU5S2JncEUyUXlWRi83N1Bxc2ljc0x2UTJIb0dVUlljQzk1b2ZkQzMreE96QVo4dkpVRmQrckVDSW9EREZzVXJLMWovVEJWZ09sZlpYUC96NUpSZDkvUXhoVVJucnlvOTREUGxiaDZKUTk4cEI4cHcxQWN6aUZLem9hMDcyUlZFSHhQQkRXTEt3aFQyS28vNlBSQi83N08vL0Z3VmsveGR5amRzNDhiOHRJQ1BqRkFnelRvRXc0eFFJTS80SEJMYnFPVmNTL3NrQUFBQWxkRVZZZEdSaGRHVTZZM0psWVhSbEFESXdNakl0TURZdE16QlVNakU2TkRFNk16TXJNREE2TURBd0R1Y1BBQUFBSlhSRldIUmtZWFJsT20xdlpHbG1lUUF5TURJeUxUQTJMVE13VkRJeE9qUXhPak16S3pBd09qQXdRVk5mc3dBQUFBQkpSVTVFcmtKZ2dnPT0ifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMS0yNSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IlRva2VuIFJpbmcgMyBGSURPMiBBdXRoZW50aWNhdG9yIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVMkYxMDAwMjAyNDExMjUwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMS0yNSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI0LTExLTI3In0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiM2U0OTVhMzYwM2RhZmI4ODVkMTc3MjNiODM5OWMxMzIyNjBjYTYwOCJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyIzZTQ5NWEzNjAzZGFmYjg4NWQxNzcyM2I4Mzk5YzEzMjI2MGNhNjA4Il0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJTdGFyU2lnbiBGSURPIENhcmQifSwiZGVzY3JpcHRpb24iOiJTdGFyU2lnbiBGSURPIENhcmQiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJzb2Z0d2FyZSJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlCdGpDQ0FWdWdBd0lCQWdJQkFUQUtCZ2dxaGtqT1BRUURBakJLTVFzd0NRWURWUVFHRXdKRVJURWhNQjhHQTFVRUNnd1lSeXRFSUUxdlltbHNaU0JUWldOMWNtbDBlU0JIYldKSU1SZ3dGZ1lEVlFRRERBOUdTVVJQSUZKdmIzUWdRMEVnTURFd0hoY05NakF4TVRFeU1EQXdNREF3V2hjTk5EQXhNVEV5TURBd01EQXdXakJLTVFzd0NRWURWUVFHRXdKRVJURWhNQjhHQTFVRUNnd1lSeXRFSUUxdlltbHNaU0JUWldOMWNtbDBlU0JIYldKSU1SZ3dGZ1lEVlFRRERBOUdTVVJQSUZKdmIzUWdRMEVnTURFd1dUQVRCZ2NxaGtqT1BRSUJCZ2dxaGtqT1BRTUJCd05DQUFRdzZjeSt6bk15UTZwdGQ0Smpxdm1hNGU4UmUrWnBwYjkwR3FLdnNSQm5GOFdtTTV5WldJT0tqUWdqLzgrM2o5YXZXK1N5QWEvMU1heXdRRDZCMGc5YW96SXdNREFQQmdOVkhSTUJBZjhFQlRBREFRSC9NQjBHQTFVZERnUVdCQlNzZXBXdXV4bUQwbzhqMVkyNzhiTFRHQ1pOdmpBS0JnZ3Foa2pPUFFRREFnTkpBREJHQWlFQXUzM1NwMEU3QkVkSG96RUdBQ2xOc2EweVBCNnNFRG9RN1c0a2l5MERaMTRDSVFDSkxEVEpEQW5XeG8zMXp6dnJXdUlOdEJxeTA0NCtHZ0ZQNit3bHFHNjZOdz09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUZBQUFBQlFDQUlBQUFBQmMyWDZBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBQUIzUkpUVVVINHdJVURDMEZvT1VISUFBQUNjZEpSRUZVZU5ydG0ydFFWTmNkd1AvL2MrOCtXSmFDUEJZMUNnc0NvcERNYUQ3NEFNVWtpbU9uV20zeUlaMXBxOWlwbzdaV25hWk5NMDFzbTdiVXFLaGtMTlpIZk15MEg0cXRWdTFVTXlNMDBjNG9kc3hNd1ZDTkdsT0Z3UUJyV0o1N1grZmZEK2Z1Z3dWV05zR21OUGNNSDliTHVXZlA3Ly8rbjROSVJQQkZHZ3krWU1NQ3RvQXRZQXZZQXJhQUxXQUwyQUsyZ0MxZ0M5Z0N0b0F0WUF1WUFNYnFCSWlJSHROeGtsaVdRaDlpZmd2RytMWDRGU0lDUUNBUTZPem9hR3Q3ME5IZTN0ZmZqd0NBR0NFV0hQd0JETVBJTDhpZk5Xc1docWNCQUNpcWV2clVLWVlNQmo4UHZodGVZZkRuSVhNQmlIalNsNUltWms3eVpIbzhIbzlzazhXZUVURUdzQnhiZUloNDY5YXQvVFUxOVJmcWVucDZZTVF0UkE5VjAxWlhWTXllUFR0S2dxcWl2UFNEbCt5eS9Oa1Zpd0NFS05TU2xwYjJsUlhMdjdOdTNhUkprK0kyNlpERzM3dDJiZlUzdnZuY29tZE8vS0cydDZkSFlvd2hDdmtSSXVDSUEwWVFzbmpNSXFhSnB6R1dHbkY5UkFyK2t5RSs5UGtPN1A5dDZiejUzOXU0OGNQYmQyQmtUMlRSbmtDRUFKenpmZnYyclZ6eDFiOWZ1dVIwT0J4Mk95S2FUa2lFaUN5MnFvbGltQlpoMEZrQXhIWVJBT0p4YnhTN0ZUOUJPYm9TRW9EbzdYUG5ubjNtMlpNblQrSUl6aXhIaVYrTWl0VnIvbFpmNzNBNElsOGJHQmpRTkUyU1pWbVM0RkhCVEZGVlhkZUc5MElLeTFkVlZmZ1VjWkZJS0VEWGRjTXduRTZudytFQUlzWVlBTWdTMjdwNXk5V0dxOXZmMlA0SUh5WWlWVlVydnJYNjBzV0xUcWVUaUFCUjFiUkVseXRuMnJTUytmUG56SjJUbFpPVDVIYWJIalN5bW9rb3daVVFPenIwQndiZXVYZ3hLU2tKUnhzWlFoSWpRQVFpdjk5LzU5YnR5NWN2WDdseTVhTzdkelZOczBrU1k4eU9lUHpvVVFTbzNQN3JhRU9qNE9DY0U5RzIxN2JsWm1YbmVYT21aWHZ6dkRsVEprMys3b2FOTFMwdHVxN1RXSXp1N3U2c0tWUEY0aE16UEYxZFhXT3lyS1pwZDI3ZC90cktWVm1UbjhqejVvaWZuS2xaeDQ4ZUl5SWVNUk1pWHp0Nytvd25MVjNRVHN2MnppZ29QSFA2ZEpSRXhoajRrMC9HQkRpMHQwTUhEbVpQbVJwQ21EcjVpZXROMXlObmh2TndZR0JnVWRtaWg1MmQ0b2tzeTZmUG5pa29MQlNHaldOVUpQVDA5QlRQTExKSkVpTDI5dlhkK09CbWNrcktaNnc2eE80NGtVZ2hGOTk5ZCszcU5jSnJpS2lnc1BETVg4N0t3VVFZanRKL3FqM1IxdG9xYUJWVlBYVGtTRUZob1hnTng3bzJFa3VPeWNLaFJWancwOEt5c3A5czI5WS9NQ0JrMGR6Y2ZPM2F0WkIwVEdCRlVTb3JLMjAybTNqNi9Bc3ZsQzRvSGI4RmM4WGFpcm56NWpGRWtXVi85dHEyNkR4Y1YxZlgzZE50MnJhaWZuL3paczc1T0tVVkxycDE2OWFlL241RWxDV3BxYW1wdWJsNUVQQTdkZlVPdXdNUUZVMWJ2bkpGVG02T3lHbVBZNFFNK1RIMUVtTDVCV1VMOC9QelJEQ3p5M0xkaFFzQWdJQW1WVU5EZzNBQlNaSTJyTi93LzlFSmJ0NnlSZGQxUkpSa3VlSEtGU0ZqQmdBK242K2xwVVhJSmkwdExTOC83L0dKLzc5azFVUUFNRy91UEpmTEpaNzg2OFlOWVYweUFIeHc4MllnRUVoSVNFQUFUNmJINFhERUZVSU5idmk3L0krY0w4ck12cjUrSUhNbU11enlkL1BSU0pZQUVOeHV0d2lyb3d6ZDZaNk1sTlFKdnZZT0Fualk2V3QvOExGbllxWU1BSGMvdkN0Q2xLSHJ1VG01a2lURkpjN1dsdGF5c2pLbnc0blJqb1JtR1JpTUZnYm5qREdiYks3dmNpWXNLeThuQW1RWWVvc0grNHFRcjR0cUlhQW94My8vdXdXbGNlUU9TWkxTMHpNNlArN2d4RFZOdTNmL3ZnbDgvLzU5eGhnQnFKcm05WHJqdGgvT3RZQWlJeE01SUlhZEJmdEJNNUlpb3FhcW85RXVJMUJWbFl6NEVnZGpMSE5pNXZ1TmpaSXNjNFA3T2p2TjVxR3ZyeThrUzd2ZEhuL1VaYUsvUXlJZWpzRFJNUmtZaXFLTlVVanJ3QkhSbEFBTmpyS0RPbGhDUUFLTWUyUG9jcmtJd0NBQ0lIR0FJWWUvaEFnQWpQalRMK2RjNTF3M0RCWU9kUWpCVXdEaUZMa0R6ZzJVWlFLemUrZWFob3h4enMwbUYyQm9PalNJQUVEakJvKy9qMVFVeFd5NUVZVk1aUUJ3dTkyaWo3YkpOcCt2STk1RkU5Mko1VXVYMnUxMklHSWpoeTRDSU02QnFMNitYbENwbXZyYzRpVU1NWGJPRjhKUU5EVXRQUzNlV04zYjI4Y1F4VkZrU25LS0NUeGw2aFRoZmt4aXJhMXRqendIaXhvWkdSbkhqaDhiYmZQUTIvTmtVYkVkbUtqWWQrMnVTazVKd1ZHYmFGekFobUcwdDdjRFl3akFHRXRMVHplQjgvTUxFQkdKbUNUZHYzZlBNQXhabHVQQ2ptTm01R2tsQVVOa1k5K2JtT28xZE4zZjFZV0lRT1N3Tzd3NVhyTzBuREdqTU5IbEVpZGE3ZTN0dmIyOVk5WEtmSTVWQnlLMnRMWStmUGhReENaUHBpYzFOUlVJR0FHNGs1S3l2VjVCMk9YM3Z4ZHNwc2JwQ0tucTdmUG5GVVVSL0VYRnhlR1lEd0FsQzBzNTU0Z29BK3pZc1hPOFY5SGkwR2QvVFkzRFprTUFWZFBtbGN3WEhzWEU1Y09TSlV2RkFTS1RwUGVibWk1ZHZEVGVtVStmK3JQZjM4MFk0MFRjTUo1YnZEaFlEUUFnWWtuSi9HeXYxekFNQUxEYjdidXJxc2E3VmRmVTFOaGxtWWk0WVpTWGwzdXpzNFZ0aHhQZ0x5c3JEU0lSTnE4Mk5Qemk5ZGVqd3NCNENWZWNhUDM2OWJkdTNtU01FWkhrY0x6eTZxdmhlNC9RN05JRnBVVkZSUWJuUkpUb2NyMTE2SzNxdlhzL1hRTDhIR2tCNE9mYmZucityK2VjVGlmblhOUDFSV1ZsdWROeWg3bHFrV1Y1VjFXVmFHZzQ1elpaMnY2cnlsZCsrS091cnE3eFlzYWRIUjNyMW43NzhJRUR0bUREbDV5Y1hMVjdkMlFsTitodWFXYlJ6RDF2VnF1YUtwamRibmR0YlczSm5MbUhEeDRNS01wWWJVc2NocHRmT2thMjQvZjdxM2JzWERDL3BLNnVMaUV4VWZTWW1xNGZQbm9rT1NVNTBpWEQ1OUlVdkxEWnRXUG4zajE3RWwwdWthaUlLQkFJSktkTWVPcXBKNHVMaXpNeU0xTW5wTW8yYWRqTzVoSGRJWkNpS0Q5KytXV0pNVVFNS01yT1hic2NUbWY4WGtORW9HdWF6K2Q3OE9CQlkxUGo5YWJyZmIyOXJvUUU4eEFQVVZYVkhUdDN2dmoxRnpubmtScU92aEFYMkRYN2Z2UEc5dTEybXkzWTRuQ1JzWFJkNTRiQmlZQnpDTjEzVXFoU3BLSFpQM1E5endDSWN5WkpkcnZkREppTUJRSUIwU2Z6SWNJTFhUalJTRTBTb3NTWXhGaUlKNlF6RGxEOVp2WHlGU3Npbnc4UEhCci91SHAxMDZaTi83NzdrVHN4VWZSb1p0RWJYRFdzRWh4bVIwZ1lGVXR3MEY4TURGSFpLQlNNRk5sN2lWMllDS0xaSk01NytucG5QLzMwM3VycTZkT25EM3QzT1R5d1dFTFg5ZW85MVg4OFVkdlcxb1lBa2lTWmY1TVFWaXdON3ZFajhJYkE0ZWdPYjJPa3dFRm1Ud0FZdnRNMmRGMlM1YWxaV1JWcjE2NnVXQk5UYWlNRFEvQUN0ZkdmalNkcWErdnFMdmg4UGwzVnpNdnhDQ01aWnQ5eHBoUWNlbXdkb3pHSW1HeXoyU1pQbnJ4czJaZFhQYjhxdjZEQVpyT0ZkajVzWE1EWVJVV1VWWFIyZHZxNy9JRkFBSUNHMzlsb0ZmcW9pNE1ZUit6aG5XR0MwNW1hbHBvU3VvNGJURGtzTTFyL004MEN0b0F0WUF2WUFyYUFMV0FMMkFLMmdDMWdDOWdDdG9BdFlBdllBcmFBTGVEL3FmRWZibU1jVkNwOGJHOEFBQUFBU1VWT1JLNUNZSUk9In0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIxLTEyLTEzIn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMS0xMi0xMyJ9LHsiYWFndWlkIjoiNDU0ZTUzNDYtNDk0NC00ZmZkLTZjOTMtOGU5MjY3MTkzZTliIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI0NTRlNTM0Ni00OTQ0LTRmZmQtNmM5My04ZTkyNjcxOTNlOWIiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiRW5zdXJpdHkgQVVUSCBCaW9Qcm8ifSwiZGVzY3JpcHRpb24iOiJFbnN1cml0eSBBVVRIIEJpb1BybyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCIsImJhRGVzYyI6eyJzZWxmQXR0ZXN0ZWRGUlIiOjAuMCwic2VsZkF0dGVzdGVkRkFSIjowLjAsImlBUEFSVGhyZXNob2xkIjowLjAsIm1heFRlbXBsYXRlcyI6MCwibWF4UmV0cmllcyI6NSwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfaW50ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MTAsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURDVENDQWZHZ0F3SUJBZ0lKQUxLS2owc0tUWERsTUEwR0NTcUdTSWIzRFFFQkN3VUFNQ0V4SHpBZEJnTlZCQU1NRmtWdWMzVnlhWFI1SUZSb2FXNURJRkp2YjNRZ1EwRXdJQmNOTVRnd056SXpNVE16TnpJeFdoZ1BNakEyT0RBM01UQXhNek0zTWpGYU1DRXhIekFkQmdOVkJBTU1Ga1Z1YzNWeWFYUjVJRlJvYVc1RElGSnZiM1FnUTBFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURFaVpoNHRJY0FVUGZVa0NtWGJOd1dESUZ2V3h4R1BoSnEvL0ZzM3VQQkE0SlFVWGlBSFdVb2YwbU54ZlUzOXlmSzM5LzJ5WGdPSjVRb1pHenBRRUdTdzVTbm95MCs2MW9lSSswSVhrQWFNdmZWdnRtTm9PMk9KTzUrQUR0bER1NnJnSnVWNklwTExSNVNLWE9VMXpPUEhZckFQc1l4djNVTGcyNlc2M3pNVHFwQ05DZzRwendaUnlYamNMclVlQ3pGNFhjZitwL0c0MlpkR3pCZVpjNHoreWNjT014Qng0d3NHY1BnMUhGeXpYbDNKbXR5Zzd6VURFcWJqZUg4TnN5OStrVDMxbVZYb2NpZ0IzaEc3d2N0aUluNkE1bFBHTVBKb0k4NFJaZHJCM2VzOVFsSFpXU252ZEpHZWFMbk81WHE0bUlodWZiWTRzMVVxL3B2R3NBUEFnTUJBQUdqUWpCQU1CMEdBMVVkRGdRV0JCU09FbitWRmhJL1pHVVRTVWVoRXlPbHh4RnhMekFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VBTUFzR0ExVWREd1FFQXdJQkJqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFyYURvOHVtcmVqWE5ZUTZCUkJuNFhzRGVoRGxpajNMQU5NN0o3dGltYU5NZm94YWR3eVMxbnZBOGU3Y083T0F3M2llbFlqTzZvaVNwelVzdTZlSDJsb1owTEswZmtvaWFaWm5IS2IvNDZvNm85OTQ3aTh0dUFPeW9WckdQdzljMjlWb0lRa0UzUWovMFBKWm1VMFl1YmlsUlVOeDZsZEsyNWEwby9xOGxrN0JMMzJOaldkVHpLREpQZ2RLbXJ3bDFtM0syZUdtdjJaSWdBUDRwV1VtZzBERjRYUy9KYW5rRmliUlpoczZLZzBWMDJFOVBjYkd5WElvK2h4VTlRc2pqZ0lQdEZpRjgrVnZRYlBUVmVNMVpjMEN4UG0xWHgyMmtpM0llUHBhRGlnelMwS2Z4azVSbkZ0cVkvWk95VnRhbS9vQVA5dHEvTVRqRVF1MWZscnBwUlE9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFLZ0FBQUNvQ0FZQUFBQjBTNlcwQUFBQUNYQklXWE1BQUM0akFBQXVJd0Y0cFQ5MkFBQUZ4R2xVV0hSWVRVdzZZMjl0TG1Ga2IySmxMbmh0Y0FBQUFBQUFQRDk0Y0dGamEyVjBJR0psWjJsdVBTTHZ1NzhpSUdsa1BTSlhOVTB3VFhCRFpXaHBTSHB5WlZONlRsUmplbXRqT1dRaVB6NGdQSGc2ZUcxd2JXVjBZU0I0Yld4dWN6cDRQU0poWkc5aVpUcHVjenB0WlhSaEx5SWdlRHA0YlhCMGF6MGlRV1J2WW1VZ1dFMVFJRU52Y21VZ09TNHhMV013TURFZ056a3VNVFEyTWpnNU9UYzNOeXdnTWpBeU15OHdOaTh5TlMweU16bzFOem94TkNBZ0lDQWdJQ0FnSWo0Z1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNGdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlnZUcxc2JuTTZlRzF3UFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIaHRiRzV6T25Cb2IzUnZjMmh2Y0QwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOXdhRzkwYjNOb2IzQXZNUzR3THlJZ2VHMXNibk02ZUcxd1RVMDlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl0YlM4aUlIaHRiRzV6T25OMFJYWjBQU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2YzFSNWNHVXZVbVZ6YjNWeVkyVkZkbVZ1ZENNaUlIaHRjRHBEY21WaGRHOXlWRzl2YkQwaVFXUnZZbVVnVUdodmRHOXphRzl3SURJMUxqQWdLRTFoWTJsdWRHOXphQ2tpSUhodGNEcERjbVZoZEdWRVlYUmxQU0l5TURJMExUQXpMVEExVkRFM09qQTBPakl3S3pBMU9qTXdJaUI0YlhBNlRXOWthV1o1UkdGMFpUMGlNakF5TkMwd015MHdOVlF4Tnpvd056bzFNU3N3TlRvek1DSWdlRzF3T2sxbGRHRmtZWFJoUkdGMFpUMGlNakF5TkMwd015MHdOVlF4Tnpvd056bzFNU3N3TlRvek1DSWdaR002Wm05eWJXRjBQU0pwYldGblpTOXdibWNpSUhCb2IzUnZjMmh2Y0RwRGIyeHZjazF2WkdVOUlqTWlJSGh0Y0UxTk9rbHVjM1JoYm1ObFNVUTlJbmh0Y0M1cGFXUTZabVkwT0dZNFpHVXRaRFl4T0MwME1qaGtMVGd3T0dZdE16RTNNRFk0T1RNM056RmtJaUI0YlhCTlRUcEViMk4xYldWdWRFbEVQU0o0YlhBdVpHbGtPbU5pTkdZek1XVXhMVFZpWm1NdE5ERXhNUzA0TXpkbExXWTRaVGszT1RRNU5EWTNaU0lnZUcxd1RVMDZUM0pwWjJsdVlXeEViMk4xYldWdWRFbEVQU0o0YlhBdVpHbGtPbU5pTkdZek1XVXhMVFZpWm1NdE5ERXhNUzA0TXpkbExXWTRaVGszT1RRNU5EWTNaU0krSUR4NGJYQk5UVHBJYVhOMGIzSjVQaUE4Y21SbU9sTmxjVDRnUEhKa1pqcHNhU0J6ZEVWMmREcGhZM1JwYjI0OUltTnlaV0YwWldRaUlITjBSWFowT21sdWMzUmhibU5sU1VROUluaHRjQzVwYVdRNlkySTBaak14WlRFdE5XSm1ZeTAwTVRFeExUZ3pOMlV0WmpobE9UYzVORGswTmpkbElpQnpkRVYyZERwM2FHVnVQU0l5TURJMExUQXpMVEExVkRFM09qQTBPakl3S3pBMU9qTXdJaUJ6ZEVWMmREcHpiMlowZDJGeVpVRm5aVzUwUFNKQlpHOWlaU0JRYUc5MGIzTm9iM0FnTWpVdU1DQW9UV0ZqYVc1MGIzTm9LU0l2UGlBOGNtUm1PbXhwSUhOMFJYWjBPbUZqZEdsdmJqMGljMkYyWldRaUlITjBSWFowT21sdWMzUmhibU5sU1VROUluaHRjQzVwYVdRNlptWTBPR1k0WkdVdFpEWXhPQzAwTWpoa0xUZ3dPR1l0TXpFM01EWTRPVE0zTnpGa0lpQnpkRVYyZERwM2FHVnVQU0l5TURJMExUQXpMVEExVkRFM09qQTNPalV4S3pBMU9qTXdJaUJ6ZEVWMmREcHpiMlowZDJGeVpVRm5aVzUwUFNKQlpHOWlaU0JRYUc5MGIzTm9iM0FnTWpVdU1DQW9UV0ZqYVc1MGIzTm9LU0lnYzNSRmRuUTZZMmhoYm1kbFpEMGlMeUl2UGlBOEwzSmtaanBUWlhFK0lEd3ZlRzF3VFUwNlNHbHpkRzl5ZVQ0Z1BDOXlaR1k2UkdWelkzSnBjSFJwYjI0K0lEd3ZjbVJtT2xKRVJqNGdQQzk0T25odGNHMWxkR0UrSUR3L2VIQmhZMnRsZENCbGJtUTlJbklpUHo3UWk0VWZBQUFycmtsRVFWUjRuTzI5ZVp4Y1YzbW4vNXh6NzYxOTZWVzlxQ1ZaNmxaTHNpUzNGbVBMT3d5Mmc1ZVlZUmlibVFFVE1rbklKSk1NakFQNTJZRWZ6RXdTR3dJT01BbHhNcE1FYkVOQ01KanhZSEJNYkN6YldONnRGY25hZDB2cXJ1NnVycjN1Y3M3OFVZdGJVcmYyVmxkMTkvUDV0TjJxcXI3MTNqcmZlcy8ybnZjVldtdnFHU0hFT2YrdHorZTc2YTQ3Ny94ZVczdWJsODNtYXVxRE1FMFRLWVQvcHovOXlkL3YycjNubm5POVRyMjNyem5aQmt3bXRtMHZ2UE1qSDJtNjVaWmJPSGp3NEdTYmN4eVJTSVJDc2Nqekx6emZOOW0yVENiVFdxQkFOSmtjNXZEaHd4dzdkbXl5YlRtT2REcU40emg0bmdjZ0FUWEpKazBLMDEyZ3BtWDVDQVNEK1B6K3liYmxPUHgrUDBMS3loakdBb3FUYmROa01LMEZLcVhVdTNmdEloZ0lNRFEwTk5ubUhJYy80RWQ1Q3M5eExlRGNCOXAxenJRV3FOYWFSWXQ2dWZ6eXl4bE9KaWZibk9NSWg4UFl4U0krbjg4UEdKTnR6MlF4M1FVcU9qdG4wOVhWUlZOejgyU2JjeHloWUJEYmNUQk5FMlk4NlBTbFVDd0FrTXZsSnRtUzQ1RlNVaXdVS3N0RTAxYWdjcklObU9FVUNFQk1YM0hDakVCcm5tbXV6eG1CVG5jQjFEclRYcUMxamFqOFo5cCtpMllFV3V0TWN4Yy8zUVZhQjQxZkJ5Wk9JTk5kb0xMVzIvODhncldtQk5OZG9EWGQvT1hCNTh3WWRCb2phbnFJSjBUMVA1TnR5bVF4M1FWcW5FL0E4MFdoeHMyYmFLYTdRR1d0Q2xUcmt1OFVDTWswbHVsMEY2aFJ1N01RRFlqYU5lOGlNZTBGS210ZUFOTmJvdE5lb0xVOFNSSkNJTVRNSkdrNll3aFp1eCtCQUlTY0VlaTBSUXBoMUdyVGEwMXBFYXhXWjNFWGlXa3RVQ0dGSVVXdGZnUzYxTVhQcklOT1g2UVFaaTA3S0NIRVRCYy8yUVpNSmtMSW1oMkRsdFpCQmFKbVBmekZZVnJmdlJCQ3lwcjFvS1V1WHM1NDBPbUxsTUtRTmJ3UUtvUkFDamtqME9tS0VGSUtXWnRIenJYV1NDR1FwU0hJakVDbkkxSktXZE1lVkVxRUZQV2RudTQ4bWRZQ0ZWSklXYk9USkkyUUFrTWFNOEVpMHhVcHBUQ00ydTNpQlFMTDcvTUR2c20yWjdLWTNnSVZFcU5HeDZCUWNwcyswd29BdFpWNjd5SXlyUVhxODFuK1VnOWFlMVF5STV1bTZXZEdvTk1TMCsvM3h3ekRwQlpuSVJXQldwWTU0MEduS2FacG1pSFROTkExS05HS1FBM0Q5REV6U1pxV0ZFekxpcG1taGZKcVQ2QVZBc0hnekVMOWRFUUk4YkdXNXBhRm9ORzY5dEsvVjc0eTBXZ0VJY1FuSnRPV3lXUmFDclNwc2ZGM1puZDJQT3IzK3d3cERaU3FQWUZTN3VLbGtFUWo0ZC9wNnByOWQ1TnMwYVF3N1FRNnE3WDFNL1BuWC9KWFdtc013OER2OTlla1FDdGpVTC9mait1NGRMUzMvY2U1YytkOHh6Q01sa2syN2FJeWJRUWFEb2ZYTE9ydDNUUnY3cHl2T0k1RE9wMUdhVVVvRktxVWVxa3BLZ0lWVXBBckZDZ1diV2ExdG41MHllSkZPNXFhR2o4MnllWmROS1o4Q3ZDR2h2anRqUTBOL3lFZWovOTdLU1g1UWdHbEZLbDBodmRjY1NVQnY1K2hHa3YvWFVFRFYxMTFOWDZmUlRLWkpCYUxZWnBHNC94NTh4NXRiR2k0T3ptUyt2N2c0T0NVN3ZwRnZaZktHeXNpM2pMTldEUWF2YjJscGZtVDBXajBCaUdnVUNpVkdYSmRsN2UzNytEZi90c1A4NC9mK3llS3hRSzVYUDY4U2lwT0ZGSkttaG9iK2ZLWHY4Uzk5OTdIdkxsemlNZmplSjVYcXFNa0JObHNkdHZRME5CZkowZFNqOW0yZmVURWE5UjkrOWI5RFpTRkZRNkhWOFhqc1R2QzRmRE5Qc3RhRXZEN0d6UlFMSmFFYVpvbVI0NGNvWDhnd2FjLzlTbisvT3RmUTJzWUdCaWdWdmZqbFZJRWcwR2lrUWdQUC93d24veXQzOEEwVFhwNkZxS1VRbXVOWlZrWWhrR3hXTFNMUlh0ekxwZDdJWlZPL1o5TUp2dUMxbnBHb0pOTlY5ZnNyMGJDNFZ0Q29kQ2xobUdnUEEvWGRmSEtFeDhwSmJadHMzM0hUbm9YOXZCZlB2VXAvdk4vL2owQWp2WDMxNnc0S3lpbENFY2loSU5CZnZhem4vSGYvL3QvWTkyNmw1ay9ieTdSV0t3NmZwWlNZaG9HMGlpdFN1VHorZDJaYlBhcGd3Y1AvZjRrMzhKNVVmY0NYYjFxcFZaSzRUaE9LUUtvZEZRWElRU3AxQWlIRGgzRzUvUHg0UTkvbUFlKzlHVzZ1cnBJWnpMa2NybWFGMmNGcFJTR1lkRGMxSVRqZWZ5UEwzNlJoeDc2S3dhSGh1bG9iNk81WE9OcGRGdWFwb21Va3JmV2I2aTlzY3RaVVBjQ1hiNXM2VERRQU9CNUhwbE1tbVJ5aEZ3dXg0SUYzWHpvUXgvaS9UZStuNXR2L2hVQStnY0dxZ0t1Tnp6UG82bTVHY3N3ZVAyTk4valowMC96b3g4OXpzWU5HN0FzaTZiR1JxS3hXTG40bDBZcG5mamwxbTJ0azIzMytUQUZCTHBzZUhBdzBURFEzMDhvSEdiaHdvWE03dXJpcXF1dTRzNjdQa0wzZ2dVQUpFZEdzRzJiVXdVb0s2Vm9iR3pFTWsxeWhRS1pkTHI2ZXFVVURRME4rQ3lMYkM1SE5wc0ZTcDZxcWJFUmdLSGhZYVNVTk1UanA3UzVmMkNnT3JiMGxHSndjQkFoQkZwckFvRUFzV2dVZ01HaElUelBPODdtU2kvUlV2YWFBd01EUFBhRHgxajc4NTl6NE1BQmR1M2NTWEpraE9ibVpob2JHd2ZlM3I1ajFqbCt0RFZCM1F1MGU4SDhaRnQ3ZS96S0s2N2sraHR1NFBMM3ZJZXVycTdxNW5WaWNMRGFxS2ZDVTRwWU5FbzZuYWEvdjUvT3prNkVFTGl1V3o1ZEtVa21rK1R6ZWVMeE9PRlFDRTFwVldDdy9CNHRMUzBvcFJnYUdocjMvWVFRekpvMWkzdytUektaeE8vMzA5VFVWTFd4VUNpUVRDYVJVdExjM0l4aGpMM1RWWmtBTlRVMVlaYUhLc2VPSGVPdHQ5N2krZWZYOHVvcnI3QjM3OTdFdnYwSDZ0cURWbSswWG45KzkzZCtKNVhQNTNVRngzVjFjbVJFRHlRU1ovV1R6ZVYwTHAvWGwxMTJtVFpNVS8vYUp6Nmh0ZFo2Y0doSUR3MFBhNjIxdnV1dXU3UnBtdnByWC90YTlmMjJidHVtL1g2L3RpeEw3OXkxU3ovNWs1OW9Ta3VZR3RBK24wOExJWTU3VENtbC8rRWYva0dicHFuWHJGbWpQYVYwS3AzV1dtdjkrSTkrcEMzTDB0RllUTy9kdDA5N1NvMXA3K0RRa0I0Y0d0SURpWVR1SHhqUXc4bWtMdHAyMVM2bGxMNy8vdnVUazkwKzUvdFQ5d3YxODdzWEVBZ0VHQndhUWlsMVRtTkxyVFdoWUpBZlAva2ttelp0QXVDeDczK2Z2L21idnlFYWpaTEpaQUJJcFZLNHJrdWhVRGp1Ynl0TFdZT0RnN1MxdFhGWlh4K1dhWEwwNkZFT0h6NE1RRjlmSDRaaFZNZS95V1FTMTNWTDNuS1V6WTdqVkgvME9KNWZLWVZsV1FTRFFSekhJWnZONHJvdXFWU3ErcHFXNW1aNmUzdnJ1M3RrQ3V3a1pWTHA2dS9uTy9GWnUzWnQ5ZmRjTHNkUGYvSVRQdlNoRDFXNzJGQW9CSURQOSs0Um9Zcmd0TmJzMzcrZnUrNjhrNDBiTmdEdzFGTlBjZXV0dHpKdjNqdzJsQitya0M2THZxR2hBWUJvSkFKQVkxTVRBSUZBb0hyZDBWaVdoZXU2UFBuakg3Tjc5MjVXclY3TlRUZmVXTDNlYUlhSGgrdGVvRk42TDc3U1RiUTBOOU5VYnZnVEd4d2dHbzFTdEcyKzgraWpTQ201KytNZkIrQnJYLzg2QUQ3L21RVzBWNWF0a2lNakFJeVUvNitVSXBQTm9yU3VQbGVaK0JTTFJWTHBOTzhjT1ZJYS94NDdkc3IzVUVyaDkvdUpScU1jTzNhTWtaRVJUTXNhOS83cm5mb1g2Q21jcHMvbnczRWN2di9ZWTd5OWJScytuKzhrTDZ1VUl1RDM4OWozdjA5L2Z6ODN2UGU5UFB6dGIyT2FKaSsrOEFLdnYvRUcwWEQ0ekV3cFg5dDFYWURxSXJyV3V0cHRWNTZyc0g3OWV1S3hHTE03TzRuRlluenNveDhGcU5TSlB3bkRNTWpsY2lRU0NXYlBuczNpeFl1UEczSWNkMis2QnNPMHpwSzZGK2lwZklUbmVjUmpNZENhejMzdWN6eS9kaTJ4V095NDE0UkNJVHlsK09wWHZ3ckFIL3pCSHlDRTRQT2YvendBMy8zdWQ5OTlyN0pIR3U4N2NTNGVLeEFJME52YlM4L0NoU3hac29UT3pzNVRYc3NzajIxWHJGakJiYmZmenJhdFc3SEc4NkNxL2oxbzNZOUJUNlZRd3pCSWpvemdEd1M0Kys2NzZab3pwenFocVJBSmgzbDcrM1kyYnR3SXdQLytYLytMLy92RUUrelpzd2VBNTBlTlN4M0hBU0JZSG9zQ0JJUEI2dS9uRXJhM1lzVUtYbjc1NWVxL24zbjJXVzY2OGNaeHIrVzZMZzN4T0srKytpcEhqeDVsWVc4dnhqaHJ1M29LS0xUK0JYb0tkSG5oKzlDaFEvVDI5dExiMjBzK242OCtYOW12WC92Y2M5WEhubmppaWVPdXNXSERCbDUrNVJXdVdyT0dhTm43SGlyUHpLRTBocXg0dTY2dXJyTzJzVElCc3gwSG4yVWRaOTk0OXhTSlJ0bXlaUXZidG0zam1tdXVHVGZnV3FuNkg0VFdmUmQvS253K0g2bFVpblhyMXZIRUUwK3dkKzllL0tNbVBKRndHRStwNm1Ub0U3Lys2MnpldkprWGYvRUxObTdjeUxYWFhRZkFWNy95RlFBKzlyRlNuUENmL3NtZjhELysrSS81MjcvOVczN3pOMzRES0huQ0s2Kzhra3g1aHduZTdhYkg4b2FWNXh6SFlYVFVsVzNiQUNlTlZTdjQvWDUyN3R6SnI5NXhCLy8vRjc3QU04ODhNKzU0VmMxNDBKcGczR2xTc1Zna0hJbncyYzkrbHFHaElmTDUvSEZqdTNBb3hMY2ZmcGdkMjdjRGNPKzk5N0tvdDdmNi9EMzMzTU12WG55Unh4OS9uRjI3ZDNQckxiZHczMzMzOGNBREQvREZMM3loK3JxRkN4ZnlneC8rRUVOS3N0bHNkVFpmbWJ3Y0s4L01SMjlaVnJaS0U0bEVxVmhDZVlKVkVhcnJ1bWl0T1RGL3FXM2JkSFoyOHVTVFQ2SzE1Z08zM0VMaGhHRkxCVDBGUEdqZEMxUnJQZTdBejNWZERDbnA2K3REQVBsQ2dmU28vZlYwSnNQOFN5N2g3Ny8xTFdMUktGMWRYU1JIUm5CZEY1L1B4L1hYWDgramp6NUt2bERBZFYzeStUejMzMzgvdDk1Nks1czJiOFl1Rm1tZE5ZdmJicnVOaG5pYy9sR3hwZWxNaHF1dnVZYUhIMzZZVURpTVVxb3F5blFtd3gxMzNNSDhTeTZodWJtWlZEcU42N3FrdFdiMTZ0VTgvTWdqbUtaSk1CZ2tsVTRmZDArV1pXRVhpM2l1aSswNEhEbHloRVdMRm8xNS8wclY0Rm1XczZUdUJjb3Bwa21WaGU3QndjSHFZNk85V0M2WDQ1cHJyK1dHRzI0QVNzRVpydXRpR0FiNWZKNWdNRmp0MWxQcE5LbDBtbHcrejdYWFhzdTExMTVidlU3UnRrK0tMYzNsY3N4ZnNJQkxseXdCU2pFQmxXQ1ZYQzdIOHVYTFdiVnlKVkNLUzVWUzRqZ09jK2JNcVhyeG9lRmg4dm44Y2RlMWJSdWYzOCtOTjkzRXkrdldZVmtXNCtsUUtUVWowTWxHQ01ZTTZ2UThqM2c4VHVDRVJmWk1Oa3MybDhPUXNqVExUeWFQZTc0aUJzTXdzRzJieENoeEc0YUIxdnE0eDA3OHU5SC96bVl5WkVmdDhGUytISVpoVkJmeFQzelBYQzVIYnRRWnFkSFhMVVhSdzV6eVpHeHgyWFBtQ2dVOHp6dkpCbEdyQ2ZqUGdyb1g2RmorVTJ0TktCUmllSGlZblR0M1lsbFdhVjhiV05qYmk5L25HM2NTY2pvcVkwV3RkVlVRSjA2Q1JyL21RbUpaRm81ZDVOWFhYc1B6WEtTUUZJcEZ1aGNzb0xHcGlYeisrTE5WcXY3blNGTkFvR1BnOC9rSUJBTDgzdS8rTHQvNzNqOHd1M00yR3MzQmc0ZTQ3NC8raUQvKzR6OWhhSGo0ck03RGU1NUhPQndtTW1wWHFXamJtS2JKNE9BZ1Vrbzh6NnNHRGxjWUs2YnpYR2xzYU9EYjMvNDJ2LzFidjBsN1J3ZUdZZkRPNGNQY2ZzY2RQUHFkN3hJSUJJNWI1NTFaQjYwQjlCaHplTXV5eUdhejdONjlDNS9QWC9KMDVmSG96cDA3Z1ZKM2V6WUNqY1ZpN051M2o2LzgyWi9oT0E2LzkvdS96MHN2dmNUZVBYdjRpNy80aStycmpoNDd4cWMvL1dtMmI5L09Cejd3QVQ3MXFVOEI0TGd1VXNycW92cTVSdllQREF4Z3UxNTE5eWdZQ3JGdjcxNVNxUlFORFkzSENkVHp2Sm10emtsbmpHNVVhNDJVc2pRR0RRVHdCd0w0L1g1Q29WQjFxL05zdTk5Z0lNRExMNy9NWXovNEFUdDM3ZUsyVzI4bGw4dXhwRHdKZXVpaGgzajlqVGRRU3ZHTmIzeUQxWmRmem1jLysxa2VmUEJCWG52dE5UWnQyc1RodzRmNXhqZSt3ZXR2dkZFOVIzUzJCSU5CUWdFL2ZyKy9kRzkrUC9GNGZNekFaczl6Wnp6b3BETkc3a1FoUkNtQ0tKUEI4N3pxR05GeG5HcHM1N25RMU5SRVMzTXpoVUtCdXo3eUVmSzVIQzl0M2Nvenp6eUQ0emc4OHNnamZPUWpIK0hhYTYrbHFiR1JGU3RXc0hidFdqNy8rYzl6MTExM3NYSFRKaFl2WHN4ZmZmT2IvT0R4eDFteWVIRTF1dWxNS1JhTEZJdkY2ajFWbHEvR0drYlUveXJvVkJEb0dEMms1M2tFZzBHYVcxb1lUbzZVZGxxMHBtZzd0TGUxQStjMmdVbU5qQ0FOZzl0dnU0MXZmZXRiTkRVMWtSd1o0ZERCZ3d3a0VuemhDMS9nMFVjZlJVako0NDgvenBlKzlDVTJidHBFTUJqa2pnOStrRWNlZVlRTjY5Y3piOTQ4WG56eFJaWXZXM2JXTmtTaUVUeGRXdUEzRElPQnhDQXJWNjBpRWc1WFl3VXFUSVZ3dS9vWDZCaFVkbkQrN0N0ZjVST2YrQVErZndDMHhsT0t2cjQrUmxLcGMwb1kxdGpVaEdQYnZQbm1tMXgvL2ZWa3MxbGFXbHJvbkQyYjY2Ky9ubmdzeGg5OTduTTg4TUFEUFBua2t6UTBOUERNczg4U0NBYTU3YmJiV0xWcUZjdVhMMmYyN05uY2VlZWQ1TWNKa3h1UGtWU0syMi8vVlo3NjUzbG9wWkdHSkovTHMyanhZclRXNUF2SHorSnJNYTNrMlRJbEJTcUVJSmZMTVcvZVBIcTZ1NDk3TGw4b2tFcWxqbHN6TkUyekdpdGFjam9uZTU2aWJYUGpqVGZ5MUQ4L1RTYVQ1c29ycmlDVHpWSXNGbWx1YXVMbW0yOW0zcng1ekpzN2wxV3JWbUZhRmtYSDRaNTc3aUdYeXhIdyszbjF0ZGQ0NFlVWFdMMTZOZkZZakV3Mlc0M1NIMlU5UXBTNmJ0dTJqMXZDS2hRS3hPTnhQdkFySHpqdUx6eXRTWXlSSVdYR2c5WUE0N1hCaVl2aG94RlNWdk1lVlVpT2pPQjVIa0pJeHBwWUs2WHcrWHdzdmJRMEtjcGtzL2g4cFlsS0twM20rdXV1UTVldk0vK1NTeGhKcFNtazBrU2pVWnFhbWtnTURoR0xSZmxYNzNzZnJ1Y3hXRDc1ZWVJc1h1dVM1N01zaThieWNSQW83VVJKS1NrVUNtTUdLSThXWitXYU0rdWdkVWJsQ01pczF0SkozTTFidHZEVVQzL0toZzNyR1V3a1NvZnVwSnpVZk52bFk1OFloa0Y3ZXp0OUsxWncrNi9ld2NLZUh1RGRiZEV6V1o2YThhQjFoTllhd3pScGFtaGc0OGFOL1BtZlA4anphNS9qMEtIREJBSUJRcUVRVW9pYUtLY2dLTVdxNW5JNUhubmtVZjc2b1llNDZlYWIrZi91dlk4NVhWMW5mTlpmell4QmE0RXprNVNRa3FhR0JsNWF0NDUvODY4L1NQOUFnZ1h6TCtIU1N5K3RldFphUXdpQmtKTGs4RERmL09aZjhaTW5uK1FIUDN5YzFhdFhNNUJJblA0Q05YaFBaMHY5TDlTZkFVb3BXcHFhZU9xcHAzamZEZGVodGFidnN1VUVnOEZxR3NOYVJHdU44anhpc1JoOWx5MG5rUmpnVjI2K2lmVWJOdERhMGxJOUVURHUzMCtCTWVpVUY2aldtbmc4VG1Kd2tELzh6R2Z3V1Q0Nk96dlBPVmhrc25CZGw1NmVoYVRUYWY3VEozK0xWRHBkT2hCNENxWkF2UElVRU9ocDJrQUlnZC9uNDhHdmZvVXRXN2ZTczNCaDNZbXpndU00OVBiMjh0cnJiL0IvbjNpQ3dHa0tRTlJxejNBMjFMMUFUOWNFOFhpY2Q0NGM0ZWwvL21mYTIyYlZaTUdFc3lVU0R2Si9mdlE0anVQZ0R3VEdmZDFVaUdhcWU0R2VEc3MwT2JCL1A0T0RnMFFpa2JyM0tscHJXbHBhMmJKbEM3djM3Q0ZXVHBrekZsTmhIWFFLQ1BUMGpXRGI5amtuRnF0RlRNdWtrTTh6T0pnNDVUM1YrNWNScG9SQXp3QUpVNnJjcGE2a09oK24rU1lvb244eW1CWUNGZVg5N2FuRXFZS2RLNC9PQkl0TVFkNXQrTW53UHVLQ2JocE1oY3dpOVMvUUM5QUVsUWo4eXFsSzI3WW5aYnlxdGNibnN3aUZ3bmllZDk3ajVxblF4ZGU5UU0rM0NiVFdtSmFKOGhUYnQrK2dhTnNFQWdHMFVoZmRoMG9wS1JZTG1JWkpiKy9DMGlsT3h6bG5rYzRJdEFZNEwwY25CRklJWE1kbCs0NmR0TFczYzlWVmEyaHRuVldLRGIySTZUVXJRNHYrL2dGZWYvMDF0cjI5bmQ2RlBkV3orT2ZDVkZnSHJYdUJucGVUMEJyVHN0aTdkeCt4V0l5UGZ2U2pMRjY4bUthbXBuR3JhNHlGWVJqSWNveHBCYVVVbnZKUVozaXdzdUlsQndjSFdiaXdoNy84eTIreVorOWVMbDJ5R050MlR2UFhZMU9MWmNiUGxyb1g2UGwyOGtvcFhOZGxWVjhmM2QzZHpKa3pCeGcvMTJkbHZPcnorY29pOWlnV2JRcUZBbzd0b0pSQ1NvbmxzMHFuTGlOK3BKUzRybHZLWEtmMXVHN2ZNQXk2dXJyUVduTlozMlc4dk80bDNQTTRPYXluUUI4L0JRUjZmbFF5aFBqOWZxS1JDRkxLazdMZ2pTWlEzbHJzNys4bk5aSmllSGlZVENZenByY3lwRUVrR3FHaHNZR0dlQU5OelUxNG5uZFNFdDBLcnVzU0RBYUp4MklFZzBGTXd6eXZwYUlwb004WmdaWjR0eTdQcWJwRnd6QVlIaDVtOTY3ZDlCL3J4K2YzMGRqWVNHZG5KNUZvaElBL2dKQ2llcDRvblU0elBEVE16aDA3Y1YyWFdXMno2Tzd1Smh3SjQ3bGplMmpQODBxMktEWFdpZXF6dTZ1WlphYXB3K25XSDAzVHhIVmRObTNhaENFTlZxeGFRVXRMQy9GNEhHbEk3S0tON2RpbDA1WlNZbGtXUHA4UHBSVEpaSkxFUUlLZE8zZnk5cmEzV1gzNTZsTm1OcmxRYTZGcUNyalFHWUdlSVpXRXNzdVhMNmUxdFJWL3dFOGlrV0RYcmwwTURRNlJ5K1dPQytNelRJTndPRXh6VXpPTlRZMzBMT3hoN2lWekdVd01Wc3NyVGhUdkppK2JtU1JORzdUVytQdyttcHViT1hUb0VOdmYzazRxbGNLeXJGSlNzVWlFUUNDQVlSaDRua2VoVUNDVHpURFFQNEJ0MjhRYjRpeFp2SVQyem5aeTJSekZZbkhDTndObXV2aHBndGFhY0RoTW9WRGdsVmRlNFozRDc5RFEwTURpeFl1WjFUYUxlRHlPYVpsb3BhdXplQ2tsdG1PVEhFNHlNRERBMGFOSFdiZHVIWFBuem1WaDcwSkNvUkM1WEc1Q1JUcVRvNzRXbU9BbXFJaHpaR1NFMTE5N25XS3hTTitLUGhZc1dJQnBtb3lNakhEbzBLRnFONitVS3FYdkRnVnBibXFtcGJXRjl2WjJlaGYxc20vdlBqWnUyTWpSbzBlNSt1cXJDVWZDRXlyU21XV21HdUI4WjdxbnZIWlpuTWxra2hlZWY0R21waVp1dU9FR0dob2JTQ1FTdkwzdDdXcDY4VUFnUURBVXhHLzVjVnlIeEVDQ3d3Y1BJNlJnVnRzc2VudDdXYlI0RWEydHJiejExbHM4OTl4elhIZjlkVFEyTnBMSlpDWkVwR29LbkR1dWU0Rk9KSlV5TnErKzhpck56YzFjYyswMUJFTkJ0bS9memkrMy9CSXBKRjF6dXVqbzdLQ2hvYUZVNGthVVRsTVc3U0xEUThNY1BuU1lnd2NPTXRBL1FOK0tQbWJQbnMyVmE2N2t4ZWRmNU0wMzN1U0tLNi9BNy9kUHlEbXBtYTNPS1k3UDcyUGJ0bTFvclZsejlScUN3U0FiMW05ZzY1YXRMT2hld05LbFM0bkZZNlZjOW9rRXllRWt0bVBqOS9scGFHeWdyYTJOcnE0dWVoZjFzbm5UWnRiK2ZDMXJybDVEejhJZXJyM3VXbjcrN00vWnNYMEhxeTlmUFNFQ1ZWTmdyM05Hb0tjZ244L1QyZG5KbkRsekNBYUR2TDN0YmJadTJjcnl2dVVzWGJvVVQzbHNmM3M3Qnc0Y3FGYmpNQzBUei9Wd2RqaUV3MkhtenB0TGQwODNWNjY1a2tBZ3dQcTMxaU1Rekwxa0x1KzU0ajBuMVorL2tLZ3BjQ2lwL2dVNmdVM2dPUjZ4ZUl4Z0lNaXhvOGZZc25rTHZZdDZXYnBzS2E3anNtSDlCbmJ2MmsxYmV4dExseTJscWFrSnkyZGhGMjJHaDRmWnUyY3ZiN3oyQnBsMGhxWExsckw2OHRXazAyazJiOTVNYzBzekRRME5PSTR6WWZHblUyRU1PaTJPZkp3clFnbzgxOE8yYlhaczMwRW9GR0xKcFV0d1haZU5HemF5Yis4K1ZsKyttdXZmZXozekY4d3Y3Um9OSnhGQzBOUFR3M1hYWDhmS1ZTdlp0blViV3padkFRRXJWcTVBU3NtZTNYdEFNS0hCMFZPZ2g1OENIclNDRUJPU2k4ZzBUWEs1SENNakkzVDNsUGJSZCszY3hhNmR1MWk1ZWlXTGxpd2luVXJ6OXJhM09YTGtDR2lRaHFTcnE0dWVoVDBzWHJJWTI3Ylp2bjA3cmJOYW1UdHZMdk1Yekdmdm5yM01tVHNIMzNtVXhCbVBVVHRKZGQvRjE3MEhyU3d6VGRSeXQybWFEQThOWXhnR2JXMXQyTGJONFVPSGFXbHRZZjc4K1NTSGs3eXk3aFVPSERoQWQwODNxeTVmUlZkWEYxdC91WlVOR3paUUtCUll2R1F4cmEydDdOeXhrMktoU0d0cksxcHJob2VIeDYzMWZpR1lDbVBRdWhmb3hXQmtaSVJnTUVnNEhDWTFraUtieWRJMXA0dEFNTUNCL1FjWVRnNXo1Wm9yV2JSNEVlM3Q3U3hkdHBRMVY2L2gyTkZqN04yekY1L2ZSM3RITzVsMGhwR1JFUUtCQUQ3TFI3RXdkdGpkaFdJcUhKcWJFZWhwMEZyak9BNCtudy9UTWt1eG9tZ2lrUWlPN1pCTUp1bm82S0M5dloxM0RyL0RHNisvd2ZEd01IUG16Q2xsVms0a3FoRk94V0lSMjdieCsvMmw4MGJ1dVVYS240WHhFM3Y5aTBEOUMvUWl0RUdsS0czbHZTci9ydXdrVmpJZTI3Yk5nUU1IS0JRS0NDRktrZlNlVzYwYnV1VFNKWVRMbFkrTGR2R2NDbm1kb2NYQTFBaFlybnVCVG5RVENDR3dmS1hUbFpVeTNWQ3FWMVFwbVozUDU3RnR1eFFGYjVya3Nqa013NkN4cVpHaHhCRDc5KytudWJtWnZwVjlCSU5CZHUzYVJhRlFvS21wYVVLU21WVTBQeFVFT25WbThSTklPQnhtb0grQVFxRkFPQnpHTkUweTZReFNTb0toSUFjUEhpUTFrcUt4c1pGQUlNQ1JJMGZvWHRoTlQwOFBtWFNHMTE1NWphTkhqaEtQeCtudjcrZllzV05jZHRsbHRMYTJrcy9uSjh6dUtUQUVyWDhQT3RGNG5rZER2QUhQOHhoT0RoTUtoUWlGUWlRU0NmTDVQTTFOelhpZXgyQ2lsRDF2MGVKRkpCSUp0bTNkUmlBUVlNWEtGZlN0Nk1PMmJRNGVQSWhsV1Z4eDVSWE1teitQWXJFNG9WNXV4b1BXQkJQYkNxN3JFbzZXS2h3ZjJIZUE3Z1hkTkRjM3MyWExGb2FHaHVqbzZLQ3JxNHZkZTNiVE1idUQrUXZtazA2bjJmRFdCanpQWStIQ2hTeGR2cFRlUmIwNHJrUEFINmllVndJbVpBdzZVZVhBSjRNcElOQ0pSWlZMd25UM2RPTTZMdWxNbXRsZHM5bTNieCs3ZCsrbXJhMk5aY3VYOGV3enovTGFxNi94L2h2Zno3Smx5ekFOazIxYnQzSHd3RUhhTzlxSlJDS2dJWnZOMHQ3UlRqUVd4WFVtTnRQelZCRG9UQmQvQnRpMnpkeTVjMW5RdllCQ3ZvQnBtU3k1ZEFudkhIcUgzYnQyRTIrSXMzTFZTbEtwRkMrOTlCTFpYSmErbFgxY2RjMVZ0TFMyTUpJY1lmKysvZXpidDQ5RUlvSG5lUmpTT1AwYm55Y3paNUttQ1VLSTZsbDJLVXYxTWRzNzJwa3pkdzRiTjI0azNoQm43dHk1U0NGWnQyNGR6eWVmWjlueVpYUjJkdExSMlVFbW5jRzI3WEp5TUI5YTYrcFMxRVRaQ3pNZXRDYTRVRzFRV2JjOFU5RVVDZ1g2VnZUUjB0ckM4ODg5ejVFalI1alZQb3NiYjdxUjVwWm0zbnpqVFo3NWwyZDQ4L1UzUzJVVS9UNHN5eXFseFBHODhYTjducVVkNDFHcVdGZi9DcDBDSHZTQ0tSU3ZmT0R0VE1UaHVSNldhYkY4K1hMMlIvY0Rnbnd1ajkvdlorWEtsY3laTTRkOWUvZFZhN2xYRWpxVTN1clU0dlNVQWlFUTV4RmhvTFdlME9Nd0Y0c3BJTkR6UTBxSjR6Z2toNU1razBrYUdob0loMHY1T1Uvbm5wVlNSQ0lSVnExZVJUNmZyMllGVVVyUjJkbEJSMGNIcnV0V0h6ZDlweGgzQ2xITlQ1cElKQmdhSE1SMkhBeHA0S3F6blV4ZDJFUzRrOG4wRm1oNXk3S3hzWkgxNjkraXU2Y2JwUlRSV0F4VHl2TmI2SzdVMHF4dWs0NmZOS3hrU2lsY2NDU1Y0dlhYWDJmOSt2VzB0RFNmMDF0WGQ1THFQNWhwbWd0VWExelhwYTJ0alZRNnd3OS84QVAyN2QxTEpCcDlWMVFYQ3lFd3BDeXRvVzdZUURRYVljNmNMb3FGYzB2d29KV2FPUmMvRlJCQzREZ09QZDBMNk8vdlovUG1UZmdzMzZTTTM0UVFPTFpEUXp4T1IwYzdqbjJ1MlpWTFZadG51dmhhNEFMbHFMZHRtNWFXRmxwYlcxR3FFc0J4TWZQVWw2S2xwSlJvd0hic2M1NGtsVVlMZWlaeFF5MXdvVHlkRUdLTXlzY1h2MzFWZVFucWZHYndjT0V5NUUwMmRiOE9laUdwbFFhOUlIWk1FUTg2STlBcGlCQUNqWjRTQy9WVFFLQlRySVRjQlVMcnFaSGRiZ29JZElheG1DcVRwQ2tnMExwdmd3dlB1MmVtNnY3RG1RSUNuZUZFQkdVUE9wUDZab2JhUmMrTVFXZW9WUVJhVDQyOStQb1hxSjZaeHA5SWFTZEpvYlNlMk5RbEY0RzZGNmhHVCt6Qm5qcWxORDNTNmNtMjQzeXBlNEVDbWNrMm9GWlJTczBJZE5MUlpDZmJoRnBEQ0lIcnVsaW1OVEdwbXk4aTlTL1FhVGdDRlVKVW8vVEh3N1p0L0FIL1JiUnFZcWo3YUtaSUpCSUVhR3BzSFBjMXM3dG1JNlhFTkVzNTVPc1pBVGlPVFNRUzRaTDVsd0RRMG54eTVIMUhlL3ZGTld5Q3FPL1dBbmJ2M3AxZXUvWTVSbEpwdEZiVjVSVUJCWUJvTE1xbVRadE0yM1pNclRYRm9qM1pKcDhYR3NobU1xeGN1VW85K3kvUGVpMHR6U3FmTDJqQUo2V1FRa0FnR0NLVkdzRXVGdXUrZnhIMXZodldQWC8rSHc0bmg3OHNoVUJJaWZLOGcvbXNiV3BGQjJqYjhWd0VHTkY0elBBOHQrNTNSalhsakh1V3FZYUhoNVVHN1ROOEZwQUxSZndwd3pUYVBjL0RzaXlpc2RpRHUzYnQvc3hrMjN3KzFMMEg5ZnY5Qjl2YTJxci9OZ3pweTZaemYrL1k2bmROMDR4WHZDcWlkdUk5enhjQktLMWxaM3RRU2lsQkN3eExmamNRc202cDNHSTV0LzdBcEJwNkFhaDdnVHFla3dqNEExWHhHWWJSWnZyTXBPdmE5L29EL29jcXh6ZEUrWnpPVkVGUU9rMWdTSU9pYmQ5dit1VWV5N0oreS9OSzIrOUtLVUxCNE9ISnRmTDhxWHVCbW9idjdkR2UwZk04Z3FIZ3ZjclRWM3F1OTNQTE12NVZKVzYzN2dka0oyQklBOGR4OXRoZThlOUNWdXhmUmxlZGtWTGl1dDZPeWJQdXdsRDNBclVzRG9MWTczbDZYdlVBcE5hTlByL3ZRMlRFKzQyQW9WRVhQb3R4TFdCSWlTTlpHWW1FZjlVeXpBV082NWJUaW9QV09xZGg4MlRiZUw3VS9UcG9KcE9sV0xUWEdzYTd0NktVSmhRT2ZqbFJTSEMwLytqVm9XQUFROG9wOFNPbFFFcEJLQmpFVmQ3ZG1VdzZGZkQ1L3RvOUx0K1RRQ245a3VlNUU1ZSsrU0pSOXg2MGFIc1lwbDR2cGZpMTBWMmM1M3FFSTRHbnMvbmlyN2hLZmN5MHpPOTR5cXZyYmw1cmtFTGk5L3M1L000N24wc01KcjR6Yjk3Y3YwTVFPZkcxQW41aGlMcjNQL1V2VU1zMDBFcHRPSEdDN2pnT1RZM05OeHRHNnIwRGd3UGZiV3VaMVdBYXhsL1c4emt5aVVBYUV0dDFIa3dNRDk0dlRia2tHbzM4UjhjNXNaeU54bE5xa3pjRnd1M3FmaDAwSG85aG1JWm9uOVYyeUxLc3p0RlZNMHJaNGtSdS80R0RpNkxCeUtITzl2YTdQTWsvYWFYcXJvU1FFQUxUTkhBYzU5Tkgrd2UrWWZtTVFGTkR3ejdYOWRwR3QyRTV4Vk9oYU5zdFNxbnM3dDE3SnRIcTg2ZnUrNEJ3T0lMUENtamJkdjduaWQxMzZWd09vYzdPemljeEJObEMvdnVHTks3Um1tT0c4ZTU0cnRaL1ROTUF0TzNZOWwxSGp4NzdSbklrU1ZORDQwK1VVbTFqOVFoS3FiOFRRbVpOYytMS0xGNHM2dDZEOXZYMWxjL2ZLRXRLTWVTNmJ1VEVmRVpTU2d6VC9NN09uYnZ1RGdZQ2RNNmVIWlh3ajZacDNhYVVRcW54RThwT0xxSWNtZVM4S1pCM3BqT3B2VWY3anhHTHhSNmMzZEZ4VDZGNGNqeXlBUExGWXF0U0tpR0VvTjQ5YU4yUFFROGVQRmpaV1hFYUd4dSsxeENQLzZadEg3L2ZycFRDSjhUSGdvSEFzWkZVK2pNZDdWNjY0RGkzTzI3MnQ4T2gwQU9tWVRhNlhtM0ZQVXNwMFVwcHJmVjlxVXo2eXdDV1pkTGQwMzJmSWNROStYRlNpR3Q0d205WmlWSU94dnAyUGpBRlBPam9SZ29FL0QyWExsNjgwM2FjTWJjMVRkTWdteXM4aU5hZmNWeUhRcUdJMytmdmlFV2lmeUdsL0hBdGZSWktlYzg2anZkcFljZ3RTcmtrazBuaThkaTlvVkQ0QVcrY0w1T1FBb0c0U3NNcmxjYzJiOTV5MFd5ZUNPcGVvRjFkWFVCcHZPbDVIbzBORGYvTjcvZDkwWEZPVGwwb3lsbU1pOFhpbzVsTTV1UFNNRUJMMEpwNFBIYUY1Nm4vS3VEZlZXdHpYaVNxUlErVVJxR2ZCcjZjeTJhZk13eUpxMTBDL2dCU3l2OHBwZng5S2VWSnRtbGQrdks1bnZlL2MvbjhKdzM1N3RSaTE2N2RGKzArSm9LNkYyaG5aMmYxOTFJUUw3SjlWa3NhSVVKS2pYMHN2SndUOURsUHFVOUtLWGU1amtzd0VDb2x0SFhzNnp3dFB1NHp6WnNRekN2bDJyelF5V3pMM2E4UVNDRnhYU2VoNGFjR3htTktxU2UxQ1dnWHJSVkYyKzRJaDZNUFdhYjV3Wk96NzVXUTVRWDhJMGVPaFF1Mm5aT2oxaitIaDRjdW9OMFhuN29YNkZqanNNYUdodmN2bUgvSk04Vnk2WmZ4L2s0STRkbU9mWmNRNG5ISGRqRVFJQVZPVVdFWnBsRlV4YnY5bHY4dTRCYUJHSzJyMHVoT2ovN0hlQWErKzZzVTVlUEFhQVFDejNOZlZPaC9kQnpuTzBxcmREd2N4MU1lMmxTVU44YmVMN1R4SXlGRjlGVDNJWVVnbVVwOWZHaG8rRkVwajErWUdSa1pPWVZ4dFUvZEM3VDloTWh4WFJaTmEwdnpnMUtJZThiem9xT1JVbjQzbmM1OFRtdTFQeGFMa3M4V2NGMk5weHlVcXhCQ0xvaEVJdTl4UFhjZWNDV3dFcmhFbE5MSWxSZzFLWkdpMUEwcnJVcS9vOUZhSC9JOGI0T1U0bFhQVTN1MDF1dDlsbjliSnBjbUdBNGlOUGo4dnRMZlNObUIxbjlxR1BMWEt3VVJ4cUpVZDhuQzg5UWpodzRmK1RYRE9MbENTWDkvLzlsOW9EVkczUXQwMGFKRkp6M21lUjZlcDRqSElpOHJ6MXZqS1hYS1phVHlHUjliS2YzRmdOLzY5dkRJeUZIUDB3UURBVnpIeFhNVndXQVF4eW1WazhrWHMxalNtbXRaVm8vU3Vrc0kwYWs5RlJGQ0JvVkEySzZUTjZTUk0wM3pTTEZZT0NpbDNBdnN5ZWNMeXZLWldLYUo0N3I0TEIvU0VQZ0NWcm0ydk5jb0VYZExLZjhFUlBSMHMzQWhCYTdqN2l3VzdVVmFDQzNIdU1mZHUyZkdvSk5LSUJBNDZiSEtQZmtzSDNQbXpFNVlsdFY4dXJyczVTNGZyWFhSY1p4djV2T0ZyMXVXZVRBWUNHSTdEclpqNDdjQ2dDQ2RUV0ZnWUpnR1dwZWloNVN0TUtTQmtKREtwYkVzSDVGd21FdzZqV1ZaSUVwUjA2YlBKT0QzVWJDTHBFWlN0TFczNFhuZUxFUEszd00rSlNCMnVoYlJXbU9hSnBGdzJObXpaMi9EMGY3KzNIaGZ3RFBwUVdxWnVoZm82UmJZZTdxN2w0WEQ0Wis0bmpQM1RKY0ZEY1BBZFYxSEtmWDNVaG92ZXA3N1FyNVFPQmlOUmdHQjR4Unhpa1Y4dmhCYUswUzVQS0lwVFV6VElGZk1FZ3FGY1IyRjY5bkVHK0trVWluOFBndkw1OGZ6RkVwNXN3cjV3dnVpMGNoVlFvamYxRnFIei9TZVM5N1dIWFp0OTRQSCt2dGZUS1hIUC81ZTcrMWI5d3YxNHdsVWE0MG9UUmkyS00rN1FpQjJDQ2xpcHlwRFdNSHpQS1NVbGlIbGJ5dXRmOXMwRFJVTUJuK3NsZjRYQkM4SUliWUxROWltYVNDa1JKb202V3dLbjgvRUY3QW9La2tvRWlTVnpDQU5zSHdtaGpRc3JYUTNjSU9BOS9rczZ3Ni96eGNjYjJZK0hsSUlUTk5VK3c4Y1dKTktwWGVjNmpPWUN0UzlCejF4MWxxaEl0RHVCUXNJQndOa2M3azJhUmcvQ3diOGw3bnUyUWN3U3ltcjNhVkdIOU5LSjZTUWd3Z0dFT0pRc1ZoTW1ZWlJOQXdEeDdGOWxzOFhVNTZhcmJWdU5VMnpSU25WQXFKZHl2SmhqWFA0MkdWcFRuWkFTbm5qenQyN2QrWnorZE9Lczk2NytMcjNvR2VDbEFMYmNZL2hPTmY2TE91ZmhCQzN3TmwxZjZNYldpTGJNSGczaWtoclFvRUFxbHhadys4UFZPdk1WNUlzVkw1STUrb1FTbnZ5M2k5eXhlSmRzV2preU1VbzUxMEwxSDAwMDVtZ2RlbDRoTmFrczduY3JVcXBQNEx4dmU5cHI4ZkpKVjY4VVYxMTFkT1c2M1pXZHFiT1JaeENDSHlXUmFGWS9FbzZtNzFPSzNWa0tuZnBKekl0QkZwQlVKb0FGWXJGQjdMWjdIVktxZWRydGJHcmxZOWRkMzB5bGZxQTY2ay9GSno3bDZwZW1WNTNTK240c1JBQzEvTitrYzNsMzZzMW54ZENGRTNUUkVoUkU0SE1vMklCdnVxNHpxcHNOdmUwTEMrRFRUZW1uVUFyVkxZSUVmeXA3VGdMVXFuMC9jcFRCU2tuVHdoU3l2SXVsSG93bFU1ZlVyVHR6NXFtZ1dsTWovSG1XRXhiZ1ZZb2U2dDNCb2VHUHBkT3B4ZEtLYi9rZWQ3NlN1VFRSSXExY3VseWQvNUx1MmgvUFZjb0xQYVUrb3hTYXYrRXZYRWRNZTBGQ3UrRzRTbXREM2xhMytlNDdpclhkVDlRTEJhL3I1UXFWcDYvRU85VEdVT1doQzgwOE9OY1B2K3ZsVkxMYkx2NFgyM2IzaTdseVh2cTA1VnBzY3gwcHBTS3VGWUx5ejZkU3FXZkRnU0RIUUcvNzJyYnRudUN3ZUFWd05WQ2lIWTRmc2xJVnVOR1NsdWFsZWRFSlZ3UDhEdzFvTFY2elRDTWwyM2IzbW5ienF2aGNIaS82N2dvdnlwMThWTWdDdjVDTWlQUWNhaDRPeUhFRWRkMWY1ak5aUWtFQWtocFdMbDhicGtwNVVMTDcxdXNGUjFDME9GNFhsUWdMQ0VRV2l0YlNwblY2S05hNjNjMDdIQWRkMmZSTG02V1VoYkNvUkN1NStHNnpydnZVOWNuOWllTy93ZVdQaXR4bnpGcEl3QUFBQUJKUlU1RXJrSmdnZz09IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzEiLCJGSURPXzJfMV9QUkUiXSwiZXh0ZW5zaW9ucyI6WyJobWFjLXNlY3JldCIsImNyZWRQcm90ZWN0Il0sImFhZ3VpZCI6IjQ1NGU1MzQ2NDk0NDRmZmQ2YzkzOGU5MjY3MTkzZTliIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJ1diI6ZmFsc2UsInBpblV2QXV0aFRva2VuIjp0cnVlLCJub01jR2FQZXJtaXNzaW9uc1dpdGhDbGllbnRQaW4iOmZhbHNlLCJsYXJnZUJsb2JzIjpmYWxzZSwiYmlvRW5yb2xsIjpmYWxzZSwidXNlclZlcmlmaWNhdGlvbk1nbXRQcmV2aWV3IjpmYWxzZSwidXZCaW9FbnJvbGwiOmZhbHNlLCJhdXRobnJDZmciOmZhbHNlLCJ1dkFjZmciOmZhbHNlLCJjcmVkTWdtdCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOmZhbHNlLCJtYWtlQ3JlZFV2Tm90UnFkIjpmYWxzZSwiYWx3YXlzVXYiOmZhbHNlfSwibWF4TXNnU2l6ZSI6MTUwMCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMSwyXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0IjoxMCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoxOTIsInRyYW5zcG9ydHMiOlsidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN31dLCJmb3JjZVBJTkNoYW5nZSI6ZmFsc2UsIm1pblBJTkxlbmd0aCI6NCwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjEwLCJ1dk1vZGFsaXR5IjoyfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMDQtMTYiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJFbnN1cml0eSBBVVRIIEJpb1BybyIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjQwNDE2MDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25Qcm9maWxlcyI6WyJjb25zdW1lciJdLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTA0LTE2IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjQtMDktMDUifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyJhN2M2NWFjOTQ0ZThkNTE0NmY1Y2JlYjVmYzMyODkzMTkwOGE1MzUyIl0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbImE3YzY1YWM5NDRlOGQ1MTQ2ZjVjYmViNWZjMzI4OTMxOTA4YTUzNTIiXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IktPTkFJIFNlY3AyNTZSMSBDb25mb3JtYW5jZSBUZXN0aW5nIFUyRiBBdXRoZW50aWNhdG9yIn0sImRlc2NyaXB0aW9uIjoiS09OQUkgU2VjcDI1NlIxIENvbmZvcm1hbmNlIFRlc3RpbmcgVTJGIEF1dGhlbnRpY2F0b3IiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MiwicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCIsInJlbW90ZV9oYW5kbGUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUJrekNDQVRpZ0F3SUJBZ0lCQVRBS0JnZ3Foa2pPUFFRREFqQkFNUXN3Q1FZRFZRUUdFd0pMVWpFTk1Bc0dBMVVFQ2hNRVMyOXVZVEVRTUE0R0ExVUVDeE1IVUhKcGRtRjBaVEVRTUE0R0ExVUVBeE1IUzI5dVlVVkRRekFlRncweE5qQTFNVGt3TXpVMk1EQmFGdzB5TmpBMU1Ua3dNelUyTURCYU1FQXhDekFKQmdOVkJBWVRBa3RTTVEwd0N3WURWUVFLRXdSTGIyNWhNUkF3RGdZRFZRUUxFd2RRY21sMllYUmxNUkF3RGdZRFZRUURFd2RMYjI1aFJVTkRNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVlTVVlRStwZHFTUGovb3JYVXhtL2o1YytEcys2UXllWWwvc1Z4TDNEbkdxSHpOeFBXdGpkTFlPTzlNc2ZBQjNwQVNxWWJKWEsvL2JGVjJMUDVRS0pucU1qTUNFd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBT0JnTlZIUThCQWY4RUJBTUNBUVl3Q2dZSUtvWkl6ajBFQXdJRFNRQXdSZ0loQU01RktCWFgyR3JJS2ZmUldpN05hdnBvVTU5R2lySmlWeFhFQmVyS1AyYnRBaUVBNkljQlJDT0tDMGVJQ2I5anlLYndhUXAyZDRjK202dC9iM0RyWWMvQnNJQT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBU01BQUFBd0NBWUFBQUJhRlJ5c0FBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFFblFBQUJKMEFkNW1IM2dBQUVHMlNVUkJWSGhlN1gwSGVKeG5sYTdhcUJlWFZFTFl3QTExTHl4a2wyWGhoa0FvQ1FUQ0xydFBsdWZDaGN2ZUpkd0FTOWdzc1BBc2daREVYYlo2Y1M5SlhPTVNKMjZKNDdqM0psdTJ1alRTU0pyUmpFWmxlbEU1OTMzUFA3ODhWbXlORitjK2ErZlJlZlRwTC9QLzMzZStjdDd2blBPVlAwa21hWkp1WWhxT2hhWldtN3kyNjAzWnVIVzdyTjN5cXV6Y2UwQjZCbjFqdjRlSFIyUjRkRVJHY1M0eUVoY202VWFoU1RDYXBKdWFDRFFuejlUS3NoZldTRkY1dGN5dnFKYTVwUlV5cTZoVWloY3RrWE1YNjJRbzloeUJpR0ZraEhkR1lzZEp1bEZvRW93bTZhWW1oMnRBRnE5NFVaNmROVS9CcUxDOFNvcXFGc244cW9VeXU3UmNscTVjSmE3K0FRV2pvWkhoeThCb2FDakNLQ2JwQnFGSk1KcWttNW9PbnpnakM4cXFwTENrUWlxWHJUUzBvcEl5bVZOV0lmTXFxbVRPL0FWUzE5UXNVYUJRT0JvQkJDa2NhUmdlam1vY2szUmowQ1FZVGRKTlRXczN2aUt6aThzVWhOUkVLNjlVcmVqNW9oS1pDekFxS2l1WDQ2ZlBYR2FtWGRLS0puMUdOeEpOZ3RFazNkUzBhZnN1S1ZtNFJJR0ladG1DNmtWU3RteUZ6Q2d1bGZrNG4xZFVMSWVPSFg4YkdFVWlJVDFPMG8xRGsyQTBTVGMxblRoL1VjR0lwdGxNQUJBMW9ubVYxWVptVkwxUU5hUDY1aFkxMHppYVJqT05QcVBSVWNMVEpCamRTRFFKUnBOMFV4T05yV1ZyMTZ0L2lLTm5zNkFkVVNPYVdWNGhzeW9xNVlVMWF3MGd3blBSWVlBUWppWVFUWTZtM1ZpVTVKS295TkNnU0dnQTlkTW5RUmxFQmFPUzBHa01YOE5ndzlCSW1IMk5CbjJKdFQyQ2Y4YUFoVVNqckhpRFJ2Z3pmNDlST0J6VlJoTEdQMzJOVWVBa0VnSlBPSTVFb25vL2lLQ3hvR2NiUnFRQlJCN0NNY1M3dzNocEFQeGZ2Q0NlMWF1bGE4Wk1HWmcxVHdabXpKZmVad3ZGKzhkbkpQQ0hQNHIzOTgrTHQ3eGFodmJ2aytHZURqUk1EL0labG5aRUcyRDh3NGhyQ0tyN1NGUWJ1Si9weGZrM1I4RjRmRERKanpna2dySVRqOEZMZUFSMy9PQVE4YkFNd3VCK2VGVDVEK0ExR2dkNEEzbnk0SmtCUFpjaGxLRzFWU0pIRG92bjlWMFNPWGxTWkxBUDhlTGRjQmpsRUFSUHpEdUlaUlJoNzg1MFdPNVJDUXo3a1ljUjhlS25JSDVUdnZGd0dDbndsekRTNG5OUlpBeXg0b2NBK0FEUHczeURFVjQ5akZKZ1IyTGx6SURveVlkM05LcnBoWkdURU5MUk9tS3hhT0V4djBQaTBwSkZIWU8vSVR6cFJRaXdYR2dpc1lyZkFTeGdGQU9CZ0d4NDVSVXByYTZXK1dWbE1xZW9TSW9ySzJYZDVzMW9mMUVaR3JvOElkWjFBTzlNMG8xRlNhNTdQaWsyeSszU25YYWJuTXVZTG1jLzhra0pQanRicExrQkRabE5iR0lpQ0FYUnVJZGpMWXVWcndpQ0VBNUd0T0VPK2tOeXRyWk9Ocjd5bWhTWFY4bU1PWVV5ZDBHSmxORE9uMThzSlpWVXB5dmx4YlhyeE9zTEdNSk9RTU9maHpFZzZtRlBDTnlNYXNNZkhnWDRkTFdJRkM4Vi84TmZsZ3QzM1NhMW1jblNtWlVrQTVsSjRrNU5rcTZrSkhHbUpVa25qcmJzSkduS1RaSjZYRGZqdWowM1Izbys5VkVKZlBkckltdGVnNFE2a0Y1UWhrTitCUXVmSHhDQk5BRXZsOUdWd0dnRVV0WC96QnlwKzd0dnk4bXZmRTNPZitQYk1ycHFFVEx0a2w0K1lHUkRQRkhrQzhJb29VRVozcnhSdkk4L0tZSDd2eVh0bVhuU25aNGw5cFJVY1NhRFYvRFhScDd6ODZRaE8xZDYvK0poNlgzaVNYRy9zbG9DWFJkUXdPQnFDS0NBUHdXeUdBWERDczFHWWlFRE9CVEs5YUV3ZnNPSkQ1azZWaWUxS1hkSWUwNkJPSkp6eElaMEp3cDJTNVowSktWTGEwcTZYRWl4eVBuOEFtbit5TDNpZk9qeklvOS9EM1ZRS1dLdFIzcDlFUG9ZSUxNcEJQRlBPelB5Z2pZQlVJdWdETmlaS0pGUGh1c2tmOWhvWTV6VTJON1ZMU2ZPbkpXYUN4ZkY3dXBWTmxoWDJ0R0FDT0FteGRmaEpOMFlsTlJYa0lMR2xpVGRDSU1Jb2FSTWFVa3FrTnB2L1MwRXZpYjIyTldKWUVRZ2lxL2NJUXBMakd3dXQyeDc4eTBwaFFvOWo4T3RzVkJZWG1rY0s2dGtObXo5ZWVWbHN1dXR0N1JoTVNZRk5jU3RXbEFJdlZpVWNVYkYzMzVST243MFUybVljcmNjdTNXS3RFTmcyOVBTcENjdFZYckF2eE9CWUVRZzZzS3hDZGNVY0dkU3N2UW5wZUdZcHNMZWlHRE5USmRqR1puUzhlSDdSRmF1UW5LQVg2OFB3bVBJc0dxSWNXUUNVWHlnNVBWLzlwdlNpL2o2VXBMRWptUGJ0S2xpZitKbitDbWdHbFlVUituckVsZmhiRGw4NzBlbExXODYrQU1BNFZrUEF0OVY4RXhQRWdmQXRCdTh1OUxTOFh1eUhBU0kyc0NuRTREUVhIQ1gyUDdsWHlSY2UxckxpWEZEZVRRS2pLd3lxUFppbEQveG5BK09RcnNhVldUQXcwZjJTRFBTZGlDOUtJSUxQRThVT3NDTERVZDNSb3E0OFR6Zk04bzVUVHdXQUZOcXZqU21USlhhajM5S3VrcG1pamdCVE9nMnlKOFQvTkJFVXZ4aGdSSU1jYzdmR0VhRytQLzZpZFdnVlJFanRyLzRhNU11MVpsQjhlQTBTZi8xbEZTTDNyZ2hCMXJETkFnUmprT1orU3E0cHpPbmlUejltOWhqRTlHbENtVTF4elI1UFhwOUlWbjE4a2FaVTFZdXp4Yk9WK0NaWDFVTis3NVM1c0ttbjFsY0luTXF5bkN2VWw0L2VFRDZnajZWSno5NmVZSWNEUk5lai9ML3NGdmNwVVhTL2Q1UGlBM0NmQ0hmb3NKc2g1RFlrSWRPQ0V5M0JZSUQ0V25CZVRPQXFEa0RXdEFVQ0xVbFZmcndiRC95NVFUNGRHVm5hcTlQQUdad1pXWkpEYlNFTXc4OExITDJwRVJEL1VoMVJQd0I2a21YVXp3UU1VU2hTL20vL0tqNEVFOHYwZzJRRDV4ZnlKd3VzbVFGdEN1UGpMeTZSYnJ2L1F5RU9WMzZrcE9sRGhwY004cTdBVHkyUVd0ckFBalZndTg2SEpzQlJ0WjBhSG1wNUM4Vm5ZTUJVTlRxMm5IZWo4N0M4WUcvRW5kSktiaWgrUVhSWjVuemhJVUZrNDlha0lvNS9rR0hWRE5QWUZiQllKR09OMTZUeGx2ZUp5MU1HL0UxcGFWTUdOcFFobzNVMk1CREY4NVp2bDNwcWRLV21peXR5RXNieXI4Wjk2alp0U04vWnovMDU5SzlGTnBTRkZBSmZtaksrV20va1RjRDRmVVFHSTNJS1BtNlRob1pRa3RCMElKQWlJYVJVT3g4S0RLc2RSUVBPanhub0xaa2RIaVRkS05RRXRYd2RnaXBOU2REemtDUUxxS0J1cE1zMG1YSmxOYTc3NGc5TmdHeEFjUXFsUUFVaVE2cklEajdQYkoyNHhhWkF3MW9aa21aenZrb3JGcW9Ea1lHWHZPM09XV2xzbVBmWGhsRXcyUjdqYUpYRCtHY1lFVGZRb0R0YU5nbkF6Ly9oYlNDTjJvUTdSQU1ha0NlbEV4eFFhZ28vRmJlQi8vdEZnZ0k3blVnZEFLY0tIQ3RFUDVXYUlCdEJDdGNzM2UzSjZlTE5TdEhnaWtwY2g3WFBYZytpSHlmbm5LYmhOYXVoQlQzR2dKOUJZb0hJM1QzMHZ6Z2d3b2lEVXdmY1EzazVJb2pMVWNpOTM5SklxV3o1UGhkZHdNTWsyVVV2M1ZCc0MvbUdRRFVqN1RKZXkvdURTWkQwNEMyNFlWQUR5Wm5pQXZuanFRVTVEUEZNRFVSZHg4NmkxNEF3amxjWDd6emRvazg5ZzlJbnI0bkEzVG9lNk9vMHpOREh4TVZJUTJvR0dwNWZ1Ym85Qm5rTjExY1dSblNtcDJzSURKUk1MV2hidkRJdkJHRU92a3VBS2sxdzZLQTZnQnZiZ1JxZUt5WGxwUnA0dmpaejhGS0ozZ1prWDRFZ3BKUndkU2J5Q1g0ZXljY3lLaUMydlAxY3VqZ01kbTM5NUNjT2xralhaMDk0aG1FTnNycUFSRjQ0djFHUnIxTjBvMUdTYzI1NmRLQmh1YTB3RnlEUUxWQlNMb3B6R2hjclRBUkVsTE10Nk9xTVM0cER6MTlnN0p4MjA2Wk1iOVlKNkJ4SWhxSFhoazQ2c0c1SUlXVjFUcExkcy9CZytLQkdjYjNRa1AwY3BpakhMRXc0aEh2ZDM4Q1FjZ1FPL2p6Z0NjMitBNkVucFJjRllCQm1ESGRsblJwU2N1QTZWVWd0cXlwNk1YejhZNUZoWndDVHlCaklGaDE1a0tZY2kxU0EzQ3lwbHJVVjBPdGtML1RiT3EzM0NYQlpTc2dNQURGTWRCNU8rbjlxRS9xUHZkNUFKNUYvTm5UWWNMQWJJSDJWWWQ0bk8rNUJVQUNEYTRnVjJyQmUwYytnQXBnUWkwdEFnM0hud1RRU2s2RlJwVXU3dVJNUEpzQ1VBV1lRaU9obGxTSHZEWWczODdzUEswZmdnSHJwUnZnU3FBbFFEbm56WUYwZTlXL1piaGtvd0R3ZmdPTW9JSUV3U0xMbHM1amhTMnZUZHlmL2JUVUk2NEI4c2c0SmdqZEFFVTdlSE9rWjB0N012Z0RiN2EwWkpqeWhqOHVDSjRkNmVBWFBEbFFqaVBRUXFtWkhybnJGaG40M25kRVhFNHRSeWRxVnVFQW1oSHhrZHJSTytIQjlrTVRXcmgwaFN3b3JaQ0toVXYwT0x1d1NGNWN1MEZjNkJCTnVwSWpleEtVYml4S29tQUxHcHdmUndxNEM0MThBR1pDTnhwVVBjNFRFdXMzVnFmVWpLZ1JFWWllTFZ5Z1E2eXppeXBrZnZraURZVmxBS2FTS3BsUldDcmxpMWZLMWwxdmpRMjNrb2FpYUtMMGQ3Q1JSbzJSTGZuUkQrWEluZE5nQ3REblkyaEJ6dHcwOWZrMDV1UklFNFQyWW5hcW5MMmxRRHJ1K3dzWmVQZ2hjWDdoQzlMNytmdkY5NFVIeFBQQTU2VDd6KzZCTnBVakhSQ2FGZ0l1QUlFOVBrMnJqaFNMdEdhbVNTZE1EVGVFMzRNZW43NnpsbW52azVFOUwybXZTclgrcWczWEh4RDdWNytoWmlLRnV3ZmcwNXlkRGhBQmYrQ3RQY2Vpd09SR1dmWWlEVHJRTzhDM05XczZBR0dLTkFMNGFZSTFRSmd2Z0xjVzhOQ0owTVg0Y0UzTmlGcGZIUVM5QVh5MzRSNUJTZjFOQUllNjZYZUtiSHBaQVVmOXhXR0t1VjgxSVU0eTdzWVY5U1JrSWxaUDBFczJyNVhhK3o0aTNvemJ4RXBBbmlDMEF6UzdvVUcyWmFUSkJhVEp6c3BPTUFRL1hwaVlkWHlHb0FVd3I4VjFEVHN6WEErQ2IxOVNqdmlmbTQ5ZXhpMTlnQjhGSVA1RDlScXdjRGs0L0NsRXpabHIwVGdEbSt2U0dEanZpTE95S3dCU1BUMDlzU2VSMmpqdGFOSm5kR05Sa2cyTmlZTFlCRUd0bjRZZUhNTEp4dTlKblFJQnk0dzlOZ0doUGpscVJxS1BpS2FaYWtRQUlwcGk4MHVycFloZ0ZEdWFZZGVlZzJOTmtiM1dDRWRjQ0VRMCthZ1pSY0xTVkhOV2JCREFGdkJIOEhHbFpxR1I1Nmh3WDV5U0tZT2YvRy9TdmVFbEVXc3pHanlFREdnNE5EeXFJeXNxZUlpTFE5azZURDhNS1RoMVN0dy8vNVhVdk9mREFJSjhjYVZQVnpPT21naWQ0QVE2QjdTYUkxTlM1ZFMwZEpGcGQyZ0RKaUJkVlR0QzZIem9VYkhHd0VOSHd5Q1EvZFF1Y2Q1QXJSTm1UVitxRVg5TG1rVTZQdkZSOFQ3K1BmRS8vMHNaK2NOTUNUejlQTTVuNi9RRDMwK2ZBcEErSk0xWnQ4QWtoVmFGL0RjaTFDUHVyc3hNQ0hpZUJCQ2NDRTFwdVVKTnJ2bC9may9FQXkyQXpQVDVVSDVCQ1F3YjJxYUVVWjRSR0VsUm1Fb0Q2Q3g0RDNuaTBMNi92bEg4KzQ5TUhBNGRrSkVqQnlXOGRaTjRpdWRMOUxlL0ZkK2ozNWFHVysrR1dacXZBd1hVa3RxUjV5NmMyNUh2Ym5SbXJURG4yak96WkcvQnZiQ2pUcUlPZkJMaEZBR3FiMmd1UnQxZlB4Z1Eyemp6MnRTNGVWNjBjUEhZdmYzNzkwc29aUGorekZHMVNib3hLYW1UUG9BSlFxSjVSQnpOWVJXN1BRSGRSNFltR1gxRE04ckt4d0pueExLQnpKaGZKUE9LU21YL2dVTUdnQ0Vhem5oaGxPTG52Sm1vK0JHWnpsY1o2SmIrZTlGelF4QnQwTnk2OHFCTm9OR1BJTkQwYWZ6VjAyaUpFTHdFMUJQcmtSa2w1Y0JQcG50c0VueDZ0aHhOdWd0bVhySU0wRXdEbU5DWlhJdjRPN0x5TlMyT0dza1R2OEg3YmlPLzRJMUtHNmNYU0FUQ1JTMWpOQ0lERHo2aXdraWZGRWU5YU1vUTRPMHB5ZEk0emZCejFlZmNLK2VlK3FVTWRiUXpBdlhzNnV3Y0xVZU9kUmx6cDNUb216MTR1MFBPTEYwbnA5NzNFV2hjVTFXVE82Y0Nud1lBb3A4UDhTT05EdDVMU1JQWnNSWVJSWVd1ZDhQUkZsVVRMUkVSWTNYVWphL2dTTkNsbzV0MTRTT2pxSDhacHBlSFRNZk9xY0c2QjZSanh4NXB2bTJLOHRiQndROGNxVDAxWjJVclFBMm1wQUJNTTZYL20xOUhqQzVWZEhXK0laM3BBRXpOKzNVU28xaFFoamFIZHFjanRRQWd1Z0FLS3hiSm5QSnFXZkVpdE52WWM4eW1VU1NtSzRDWm5waE1iY284eG5kS1Y3bzN2dE15MHpFVzVUSTlJNWpMVWN6bnRkeGp2dGQ0TXJVM3BoV2YzcnRScTBzSVJnU2hSUE9JckRhSGJIcDFoNnJLbkpKUGpZaE82c0pGaXhXSTZLaW0yVllFa05wNzhJajQvR3pjUmh5Y0hLZ3hBNXRDS3BJc2JNalRxaFhTQUhEZzBMTExraXVOQUlzdUNEdDlSSzc3UGlkeTloeWVOWGlhaUNoYXNBV05MaFQxWi9TUlNMK3pWV1RkV3FtNWZScUVDVDA1VEE4ZE1Vck5rUG9zYUdESjZXcHUyRDcyMXdBR0xyUmtZOUFJRGNDQVpCa0FEUjBqQmtZdENHOERJL0RyZU4rSFJFb1hpOWlSNWlnWVladERYUFNsYUFGcU9iQUlSaVJFRFE2bXE0UVFuSU9xVlhSLzhTR1laUm5pemN6UUFZYVdYSmhPdWRDMmNFNHRoTnFkNnhkUGdLZFFiRklqT3c5andtZ2lndDZIdW8xQUthVXBSNVVGZ1R3TXhRS3lTRVVUWjBaZ2xobndtTGlSa2JZV3FYdjBNWUJQbGpSRCsydk96eEVYeW9BbWNGY0IyaERLdHVVVEg1ZWhnVVlqazN3WFlLVDF3cnhmSnpIS2ljQ29FbTJReVVTQXVDd1BvMHpNVERCY0c1bEFRQkFZYjdielBCSmhnVnhPWVRXWjQ5TzZVa2hNNDlPS1A3NmI2SnJBYUtKNVJOU0lDRVN6Q290bDVvSVMxWUNvTG5PaG9xNmF4aldCaUEzbExRQlJJRGFyZW93UU42Y0RzbFVGVlVwQlE4UFMvclhIVkV1aGh1S3daS2dQaHFOSk5IczhjMmFnSVVkMUJDa2hvZUVMWjNRVC85QTJ3aEhPWFdJSTR0SWp2VE9la3E3a1hLbURlZEdUbGl5ZXRHeXBzU1RESEV4VnMrTU10TEJvZVJFZ3g2OEtoL0xPN01kQUpCRVljWnFFNDUvL1NhVFhodlI4NGh1QmZvYTg4blZPNHpRTGcrdW02RDJMQUFCR1lLSXFJRUVBeUtjMG5aWDZEMzlNUjdVR0MzTGtGSGh0QlFnTkpDUHUxQlJwQm1oZWVQK0hrY2NCZFdRemNzNit2cWEyem1mQUEvbmhQTVVRemlsV09EV0FCM1hDRGlPRTRFZndnQi92TURWUzFoVUN5K1I4TFRTaTZSTEl2bE1jeWNZOExuWWE5STlSdTZ6Skx4RDNyZzFHcEpvZUlaQ21PYzZ2a3hqbFJHQzBvTFJNZ2VoUEJhTXJhU3NreWdQRGVBMkY5eTZmM1gwcExlNFVRQTNwMGlKZDQ5MzRPSmplZUxlQWFXYVNUTkNMLy8zZFFra2NrWmtvbUFWR1l2Wk5kd3lQNmlPaWFVYU5DRUMwb0hLaDBSQVFPSEkybzZoRVRiTUZ1TjV6NExCNEFzWmtPSFBCb2hZb0l1TFNBaVlUVkw4UkhtaHBFRnYyKzlWWlN4N29lK21BMFBVREpDNmtaOHZvMmNQcUIrcS94TnBWaVlJVVpvK3ZUQ1BnZENneUNwRWFoUmFCRzU0bXNYLzY4OUtjbkNKT2dKRUxhWEYrRGRQbGFCSkhqQnozZndYQzdZUkF4Z1EwMXVIUjdKZ1lqS0N4cEUwVjM1WTFLc2dEQ0w1aHhJSjNLYzR4R05heXZPVFBNRXhpaW1zRTVlS0VFSEVtZkhoVnRUU2tacW1UbkpNUjZadHF5YlJBMkZPa0JhYXNOU2xicEt2VllBMlIwdVJUU1UxRVJGam1nOG5qVkJuaU1WWldHZ2ZzWmdvTVQ0MHdxblZvbUpkKzVLdGI3RC84am9JUWgvblBvaHc0U3RpZm1xMmczZ0F6c3ZzNW1OVlJhaFdJQUFKSHpjak04ZlhRdFlBUjAyRmcxalRBVnJ5MFdIWmk0dk9jcm1LK0d3b2JuV2w4WUhrSFF3QWE1RzM4L1lpT0VMTUlPV1dGTGc4V3J3R00zT3lORkE5RzVqbGxRd1BPK1J6ZjU3azU0R1BLMEx1SkVvTVI4bXYyRGl6czhmT0k2Q09pYVVZTmlOczRjTHRQSGdsTVBOSkhSTk9NR2hIZkM0U0NXcmhHZ2FJcDRZK3JwN2dHaWhOeWg0SSs2VnUrV0xXQURnaVpnK1lUem52U0tIalFqREp2Ull2bzQvSXNvNFVsSUFvMm13Q0JSQjluNnpXRkRIR01BaFpHeXN2RmxsWUFMY05JeTUyV0prMVRNN1IzRHdBRW0xS255WEJIRGVLaGRvQVhXUnhzTTlwdUpnYWordFNwSW80V25XZERaVWVkOVBoVHJRNG1HNTN0WTAwcWRrSSsxV1RqZzJDOGczZDhOckYrNWpPSUh6d2hES1NtU2wxNm1tb2lyU2duRHpTNDRkM2JOVnU2a1JnajRrVUNDb0V6K3E3b0pRcU4rQ1FDcldkMGxCb2JNa20wNVlJMitvZ2k2RWdpT3AvODhnQ1RMdXl6QWl4THhBdEE3RU1aMEovRkNhYm5MT2tBejFSeHBsckUvby8vaU1RQ3hveHNhTllqeUx0T1A3aE9ZaFluQXFQaThnb3RUd1ltclVBQUVMcldWZnY2RHY3eEdBODRVZVRCRE9hOWVERGlzK1k1ZzlubUdVd3dJckRFMC9qMWNxb2g0Y2hBdVRIUCtaNEpUdThtU21pbW1UVnh0WGxFZEZiVEhEUG5EaWtRbFZYSm5BV2xVbHl4VUozVjlCSHB1eWhBbzFJWWx4SDR4elZiOUZ2d1BJb0czL21ELzYwYUFHZjhVc2p0NlAwNTZZNGFrclhnenhBUjlBcktna3BjQWlMd2dHbW16OU1vNjk4TWlFTVZZRWViMU9iY1pveW1aYWZvc1BuNWFSWmoxamJTcFQ5RXRtNVJQdFdVUkt2alRGL0dPVEVZY2JiMUZPU3JUNU1URHpMSUZoc2VOaVlCNGh4V294WXhpWXVLNldkZ0dZVUF6aXFza0gvRDlCb1ExNDkvSlBhQ1BPV3ZGM1ZEL3hZRG5lOTBJcnVLNStta1VhTk1qZndtSkRMR0IyTmxRaGxsemdpRVhrYUVQNDBNUVMxSC9NNDJRRkJob0FYQkNZeXVZMitKTC9VZTVZTWFaVzltaXB6blNDMnVQWnhOL3NsUDR3VjFpV3NFQkx5SVZ1TDFFZG1lQ0l5NGhRajVaV0EyakZiTVRKbGhZanAyNnF6WTdNNnhPQmdHZkVFNWNPUzRuRDUzUVlMUTluaVA5Y2oxbDF0ZTJ5SHJONzBpTzk3WUl4Y2FtdkU3ZGR4TDc1NnFPYWZCdEJKTUloQWRPM1pNZkQ1MkJ1U1JaV1Fzc0c3djZnUWZKeEZmL1dWeG1TM3czVUtKd1lpMUhjc3o1V2o4UENLT2x0RlpUUjhSVFROcVJBU2lCU1dWc20zbm0yUEQvaVJUN1NRSUJZZTRzTlBvVmRDUDRCd0pvWVNIY1c3NzJIMDZOTjROTTQzTEZsd0FJeHVPRFZuSjB2L0JUOHR3bEN2YThWYmtHcnhHcHFDeDlwQTRCWnpCQkVLdUpLREVOOXovZVowbDdTaElrem9JMDBVQWl4dGd3cUhxcGd3QXlyL05SQndlUEVrQmdwWVg1cW81MHNSZ1pFL1B4ek11QXpmQmcwNzlnNjFIRnhZRm44blRqMFZBTW50Z0paNHdnUDllUDhCMzFDOGppeXZsVkVxS0RHUWI4Nnk2b0MyMnBXZkZURFlBNTlPL0EyZUkzMkRSQUxFRXhHY0c2ZUJYZENGdmdBdUFCbjhaR1hVcjM5UkNXWHp4Z1huWC9JOTY4TXdBbUd5V3czbTNxOW5ZQm0yVzg2YzRrNXoxeDQ2bGZlcWR5Q0RMRDhRSVJ1bUZVbWk2TGlJUDEycW1tVjJnQVVKbW1Kam1vTVBkdG11M3ptNW5ISjVBV041NGE3OHNXZkdDSEQ1K1N1OTUwY1ozN241THFwY3NsMFhMVnNyaTVhdGs2Y29YZGZIM3ZrT0g4YnV4aUpsaDlmb042bFRmZi9pSVhwdGt0OXRsMGFKRjB0WFZkWm1QaUlDeitkV3RpRytGdkxoMkRkTFhlZlFhZEtyRXU0aXVRVE5DKzV4Z0hoSEJpS05tZWw1VW9wb1JOU0lDRWF0ZC8ra0pEa1I2T3NNUktZR0ltM1Zvc1k5UXhHa0tBR0JHZlRBN3BvdU53czFHbkpVR01FcVdqc3hrT1ptWEpNUDNmeDJQQVlTQzNPd2tzYmdScmxSb1dHL3E5ekNjc2RRN09KOXBCQXg0Y1dkMDV1OGxuR0k0eW11bVFnc0RJTmt0eVRyQ1ZnUHRKdkRBOThIZklJUUptZ3Q0cEQ2Z1R1SUVZT1JOeWtEYTNjb0h1VlV3QzBMckFBQVl3bXlBa2RuQVZFdGk0Qm9yUG9BYkxQMitTSy9JdnAxeU1UTlB0WStMMERvNGU3NHhMVjFjME43T1RZZEovY3dmdEZ4WmxPSWRObllOU0VUMmN6SzRickZZbjN4QzJqNy9KYmtJUUdsT3lnUVE1d0JZMHNTT0RvQXowM1grRUk0TXZiRnpUbG5nb3R1R2xGeTBwRHZrYkpZeEFrbHp1dE9TSXEzSk9kS2FsNno4TnJJY0FGcmNiTVhJYUFnbHAvcmhkUkdMNkU4Rm8ydlpBNXN6dXFucE1CMXFQM1E1Y0xlSlY5QWhtL0cyZHpta3JHcVJiTmk4VllHSjk3aFR4VXZyWHBhNUM0cDBCd0g5VkJMdWI5aThSV2JPblNjVkN4ZnBmZE5IUkRDYU4yK2VPSjNPc1pFN0VqWGR5a1VMOFR6elVpSXQ3VllKUk5qeURLM3AzVVFKd1VqRm5ZaUJybnpwQzV2bCtlcmxNcmRzaVpwaXo1ZVd5ckxTSlZKY0JPMm9yRXhtTGtSaldGSXBieDdkRDFNREVrR2ZVQ0pDWFlSMFdObW9XRGw5V0J6UUpqalJrZVlJZlNTMnpBeGRqR25OVEpYK3Yva0tlSUp0elhaazJqZlhRMndMYUNpK3ZkdWtPVDFiN0RRSElXdzJBQ0FCa1dYUWtaMHA4cWxQb2ZwcHBzSE14RHRjLzZXcEo1aG54SGxTZkY0emgyZjF3S2FOZXlNMFRhK0JkQmdjaVlYMzdKV09qSFRwZ2NDM3BhVWFpNFBKTDgyaDFEUVpmRzRtNGpUbWhXa0NLbmRRK3puRVRCUkFOQzRjNkl3ZjJydFc1TXVQU0JNSENYS042UUU2ZHlrbFZXZFVOeU0vamZsSjZvK2FLSFRnK2JNQVJUZUF5d1ZOaURzajlFTTd1b0Q4OTJzWklIN3daa1U2ekx4YUlDZ1Fka1R2UU8wbEJLUHhacHFSSmlEcEduMUdaYVhWOHRMYWpZcnZweHNiWlhaNXVXemZ2VnQvR3lVNmdWNS9mYmRVVlMwVWo4ZkgvbTZNdkY2LzdxdTBlZHMyNVRPTXpMKzhkYXRVTFYwcVJSVVZzdnJsbC9VNW11ZGRYWGFwQk44Mlc1ZkdNYXlUN1VScTZ1cGtYa21KQWxkWkZVQnc2MnVhQi9xcTNvbnl1NUVvSVJqUkdPSHM2QTFWSzZSNlZvbHFQYityS0pHNVN4ZWloNEI1Tm5PdVZGUXZoWXE1U2tvTEsrWE1vZE5heDlTQURNMGhBZUZaZFczamowOFBIOTByM1dtNU9vdlpsWnltdld4N09zd1JDQnhYczN2K3g4T1h3T2dkcUEwVkRvQ1JmOTkyQlNPT0JsMEdScmh1NVVqZW5YZEIwRGtkQUF6amoxTVVSOVhHbkZnem1oaU0yTVFUMDdXQUVRWCtTbUNFdmxmajhFZVFNbHQ1ZDYvWWZ2VWIyWXY4dEdRVnlFQ3FSVFVjVzBhcTlLUm5pQWZhSVpkeWNBREJtY3lwQ2FrVEJyN2JsSk9xenY1MlM2cFl3VTlQaGtYT2NhMGZ6TFdyZ1ZGRStieCsrbFBBNkQvandDNHFycEF0cis2VUV4Y3VTdW15WllpN1NoeDlPcHRMRTJkOEd6ZHRrUlVyWDdnVVA0SnBjaE40dHU3Y0tWNTBDTUhoWWRuNDZxc0tTQ2ZQblZPZ09uUDJuRDVuYmJjaHJWTHA2blpjRnMrbTExNlRGYXRYeTREUEwxdGUyeWJMVnIxd21YUDgzVVNKelRUa2VIL05TZFY0Rmk1Y0xNL05tU1BQdmJoWW5sbGFMZk1YbE1wL3JGc2k4MkhQYmx1L1U2Sk9WREQrZk9HWUNubU5taEhnVG8vVUV5S0gzcFN1MUJ3VlloT01LSGhXQ0RwWDQwZSs4SWo0M2tFd1Vwb0FqS2lkY2ZGcXM0Vm1CdUZWR2RaejllYmU0R0RFR2RtRDBTRnhVTFh0YXBmV1AzOVFiRGwzQTNDeWRVREFTMU9NZWMxSlYyMUdsOTF3aXhVQVNpUHF2eFgzSmdwT0FFNFhnRVozVTBCZW0zQ1BQaUpxV213L056MFlsVmJKa3BVdlNmbVNaYnI5VFhIMUltbnQ3TlJsUjR5TS9kSExHemZMcHMydmFOeThiNlpEUUtKWjl0ck9YV09PN0RVYlhwYVh0N3dpSWJTZDVTKzhLSlhRcURoZG9OdmVBM2txbGs1b1NPYTdnV0JZQVd2ZkVjTy94TDI4U3dHR0RZM04rb3oyaGU4aVNqeTBEeE9OVHNlTEFaYzA5WGFJeSswUWEwZWJxcFZ1bTBzY0VhY000aUVPU3BxQm9LSjFmUzJsRmFWbzRqbjhFVjlNTUtKbTVJQ1FFQnk0em9uTEh0b2hlSkVIdmc1K2ZFWWkxOUNZcm9rbUFDTVh0L213Y09FcmdabGdoSXlwb3d0QXdqeE9DRVlBc3Y5aU1LSjV4anFKOXRkSjNmMFBBTnh6aFN2eHVjaldEbjd0NmVrNjRzV042RGlWZ21ZYkYrNXk1YjByTTF0bnZVOFV2SGlYV2hGOVNIMEVwbXhqQWJMdWtKQUdvRU04VndhajJES2c2NlQvNzJDRU9EaWhkeUUwbi9OTkxiTDhwWmRrOGZJVnhvNmsrSjJ4RUhEb21DWXZuRnhwcGtjLzBmcE5tM1VIVS9QZVMrdldLeUR4dkxYREp2TkxTdFhKYmJNNzFML1ZadXZVM3doVy9Cb3V3YWk1UXlkMzZBamNvbVhMNWJWdE80eTBFN04vVTFGQ01GSzU2eHNRMzRHM3hQdjZacEdEMjBTMmJ4VFp1VTFHOXV3UmVSWDI4MW1ZWnRFK1BCdWJ5TVphUWJnbVVVc0FSbXpNVFJDVUxwaG9GQnJ2Zlo5SEgyOE03UnRDOXc3UU9ERGlGaG1kRU5aM0JSaWhxTHhlbHd6ODI1UEdqT2k4TEoyeDNRbGVlYzMxYnJwVEE4NTFqVmx1dWx6TTVpNEduR0Nab2V2ZUpncFdtTlRkZUs3dHppa0tTRnpmeHlrUjNDenUvSlNNbXg2TXVPQzJkTkZTT1YvZnBIRWNPWEZTbnAwNVM4N1dYakFHSUJFMnZySlZ6U2N6blVHL3NVaVpnWTdxZFJzM0taOE1tMTk5VGE5TlRXbm43amZWRjNUZ3lGRXBxYWdVYTJmWDJMc0VyYm5GeFdyV01RMmFhWHkyQXZtajF2Uk9sTitOUkluTnRHQy9SR2VVU1dmMkI5RUQ1dW8ycnU3Y1BBVU1iam5hbG5hckhFNlpJa2YvNm5Pb2xYV0FiN3NNaFFlTWdtTHBKeUswQnhPTTZPQUxIWGdEUXBhdFF0eWJZdEVlbTg1cjlzSTAyZXdmK0FSZ0FMcWF5dWUxSkhBTkJEQUs3TjhoTFJrNWw0RlJKM2k0MmMwMFRlSDBVV2lXK2VMQjh5ZW4wN2RqYURMY01zVUYvbGl1MXBRc3NYM2lVK0w0NXg5STc3Ty9rc2lNMzR2OCt0ZmlmV2JHaE1FNjR4a1pmUFkveEQ3dktUa1BUYWdlYWVoUVB0TGdpTnJWd2VqbU1OTTRiZVVGbUdFQjdocUo2MGdZMnM2R2pWSzlaS242amhqTFd3Y09xbFp6c2RFQUxBWnFSZFJ5WnMyZXEzNGhtbDEwT2xPcjRmdW1BN3JIM2FmYUR1UGpCTTFPUjQvdTY4MUp3dFNhWGxpM1RqOHNRSk9PNEVSUW1qdHZ2dFRWTjc0ajVYY2pVVUl3Y3JIQ09xM1MrT1d2U2dPWFM2Z0pnOFpNWVV1enFQQUdJYXowUFp6THpoUEh2ejhKVGFvVDlXd0lYRUxDTTZhQTAvS0tIdDR6cGhtNVUyRkNJQjJ1d3lJb2NWdlh1aWwzNHpuRFRPTXcvVHRDY1dERUhSL2p3WWdDZnpNN3NQbnRqdjZmUEtuTFhGaHY5Zm5nTTRsemxRcDBHZ08xb1JQUUNIdC84UXVSNW5wa2pFWTUxOGYxSXdwT1lhQzRYejNvRGdhakhsUmNvelJPZmE5MEpLWHEzbGdjbGFRSmQ3T0QwZXpLS2xtOVphc082dyt4dVNFQ09wdG5GaGJLN2tQR05qZ2REb2M2cXBlc1dpWG42dXRsTUJpVTA3VzFzbkQ1Y25ueHBUWFMxeitvSmhYVHBtK0pQaWFURjc1UFovYUM4bklOdHA0ZUNZMk15TkhUcC9XNjArbFV1VER6UUsxcjhaSmw2alJYdjlXN2lCS1BwcUVFV0FoaXV5Qm5IdmhMTkNwajQvc3VOT2hPcU9jVUJBcHRMOVJ6T2pGcmtyUEU4NU5mQTVDOCtobWdoSVJLQ25QcEFSSmh4Y2pKZzJLMzVFa3I0dVVFT2dvMTkxbm0vQlZPaER4dG1XS0FFVjdoOFBBN1FoT0JFY3Bnd3FIOUd4eU14Tjh2YlhmOXVmckJlbEJIM0RpdU5YZXFuSUhXeWUwOWJFblFjQi85cGtoL2w4NUxha0ZTYW9XU1VRVDI2Qk1GN3JHdno0b2JXdk1kTUszVGRTVHVmQTVONjNjSEdLM2QrcHFSUmJ3YzhCbDE5dEtHRGJLZ3VrcUJpRHhjYkc2V2lzV0xaZmFDQlZLK2FKRU94NWN0WENnOXpsNU4wM1JzcjEyM1FUWUQzSGhPZ09LN3RBaFdybG1qNEdQdDd0WjdqR1B4eXBYYTNmS2FaaDFOUXZLeGZjY3VxVjY0V0hyZHVtSE11NFlTZ3BFdThCejI2UW9tYWJOS3gvLzRCNERFRkRWZjJpQndQUWcrYUE0Y1BiSG1HMSs4NkVlREREeitJNVJpdTlpWkN1dWNzM3g1d2xtK28wT0FFME13dFdwSHVNZ0N3SUlMcnY3cXpydEQvUm5jWUorak05d0F2anM3SHoxdHVqUmszeUp5ZUFzMEkvUTJyQ255eGNXbi9PYVoraUVZRTlkMUdZN2JSTVJQSVlXUWNPaXQ3WEptNnEwNndzU3ZacHlhem1IdFBOMm4rZ1Q0Y0QvMEVOTEVrMlJhSjRFR2pRbDhBQmdUakc3RWVVYUJqanBvS2JmcGpwaHRlZW1vbXl4cHpBY0lFVGp4N25rY0k2Vno4S0JYZWROMWFPRkJ2Rzc0TkV6UzJmTnhZWXc0WXFwVjU1UFdwS25xd0s1QitYR25oVjZVeGRYQTZHYVpaOVRaMlNsdXQxc25KOGF2NE9lNnNXNEF4K0RnNE5qRXhTQTBvbnBvUmx6V1liVmFkZkppL0NKWVhqTXVsOHQxZVJtQ1BCNlA3a3JKSTRseDg5cWsrTDJNdUdUSVpyUHBURzM5d2dxaVVpMDlsa0h6M1BqNkNvRC9zbDBDak1BZEJIZzB0am01Uk15WFNjb2plNXhZdkVQY3ZJeVhzZmpqMDB3WUVBK2ZONFBHeTN0eDVaRFlaMFNtMFhpNEpTeVhhb2lyVFM1ODVnRUpwQllvOE5SQ0VEcWdMZkhiWDFUNzdianV0cVRLZ1hTTEFVaGhRRUlZcWo4WEZDSkJDdkJRQUhHaWZCU1FXRFlRSUoyUGpOczBoVnJ2L1pqaFRJV3dzSEZ6TWw1bmNxcnVrOU5oS1pEKzUzK0g1L1h6aVpvWkNwOHVMVUVjVVFDVGJzRkJ2WnJsbllDMDZDRlF3d2ZmZ0dZelRmd1p5ZHF6dHlMZERtaCs1TU9XbHlHanYzb0tqTWUyVGxXbUFXQTh4LzhiV1RQcVAzVkEzTW5UZFA1UEkzaGlSMUdYWTFFSE5pZVVXaEhrMEhiVVJaUzFxd0FlNVAvaElRa0dMZ21mbG5Nc1hFWjhCRW14ZTNHazNhNkRESjBGYWVwYjdMZGszdFNha1puWGVBRWw4WnEvbWVERTgvajlqRXpnaUFldjhhQVVmNHduTTYzNHVFMktQeDliTWhMTDFEQTZlVlBRRlRRZzZMd1haZWNTYXcrWE5wUXp3Q2djWm8wYlpLWnI4alNXWjhSdGdnZmp1MVNJQ0RHQTRmRnQ5MkxYSmw5anY0OEw5Snd4Y0QxbVlqRHloSlZCcW9rc2JoZG5ydGd2S2lCUlErS1FPL2NZMG8zdExlazZwTXVadVFRa052eStIejJKMWcwN0dFMmNLeHhZTkl4SEFZbTlLdkxNWGYrVUpaWURCTGIxc2NlZ25SajdDVkU3WWdPbnc1WDdSUGR4VXQ3RDM4S0RIbU5YUTBhSVRQRlZ4cXNWeG5Ma0pEOXVVSmFJV09kaHZMbi9EYVNUS3o2WWFOemJpQ1lodDkzVnlYOXBPU0pybHN0b05HSm9XNG91ZUpFRmVvT0QwU0EwdnI3a0FnVWVCUWdBN01VczhBZGVtVGRQY3I0TTdsNnZtN0w1MEdjd2Y3cGJRS3lIWm5tT0Q1Y1IreG9jdkg2N09OUHYxSkUwRytLM1pscFVXNzVad0doOHZnZ2VwbUR5dDNqTktCNVl6UGZpTlF4VGtBbFE1bmw4MmNXL1R4b1RmSkNaMXBWb2ZIeWtNWUNJQjRTNFlPNHdhWUlTUWVoUzNpL1g5a2p4K2REOE05NXhjYjhOWE1hQjBaWGVlVnZBNzR4SFQvR2ZJZUhRdnFIUEdKVVpWUWRCREpDZ0lkRmtZK1BqQndlcHZkRGhUSCtTcm1XQ2dGQnpha2pLa2M0bi9oa1J1Q1ZBcVlUY003dHE0ckFnOGFmTENNRVY4NGpTRmVmQ0NwaGtXZXJqWUh6MDQ3UWo4QXNVRktyMktYZUxIRDlzN0dwb2xEVUtQZlorTExQY0JkSlkxSnFBa0w2ZlMxZTJiNFhtVmFDZzE1aHJqQWgxQTJDNUxxNDk5Ullacmptc2ozTTFsZEVRa0poR1B4RVlBYVQvcTMxR1IvZWpidEoxcjJ3Q1VHOHl0SmIwRkdPN1dwWWx5am13cWxxZlZ6NVp4VndaaTRiSWRFMGhNc1BiQ085b3B6RFNLMWJMZEUySGU1VDNUQzlRcmV2cVlIVGpETzB6WDFjQ0NBcS95OTA3dGcvUitHMUE5Q3Urc1dJZWZ6U0R1ZFVIMzQzZkJzUzhSekxMbGNKUFBreGV4blp3aUtWdkJzWm92aDhQWkNieG5obW4rWTY1RDVJWnpMeVF2RjZ2cm8wam1XbkhnNTRaQ0Z3TVYwclRUSS9FT1BpTStSeVA1cnZ4NWN4emZnV1ljNnI0WkVJd3NyUEMrRDdWRHJ4QlFESk9vZUsxV2NYNzJiL1M3M2h4WmIwdkRXWU5BSWthRWswMitwQWFDRXJwVTJYd2h6K0YzUG9Va0tnaEdXd2lZcHhUNFJ3Tng3YWZaUnExWi9EK2RBaWVNV2ZGQWNIbVJMeGVOR2cyYnFZWCtLZWY0MkdQZnZDUnlxYUtOY3VEQUJFZEZjOW93RndyUHlHRmtCa3ZEWlAvZUZyYUxUbXExZkV6MlFTOWJnQVJQNmJvdU8vTDBBQ002UXJVSEJUMFNMcXAwZzBPUm0xTmNqWXQyNWhIQkhEdlFwNnNYTFlCL2pwd1hwdWNJdUVmL3dTRk1LRHIxbm9Id0JQWUk0L0J3T0JsamZGSzVFTVAxMC8rdW1xbE1UTkh2NnJiWWtuUmJZSWR5UHZORGtiRnBTVnk4UEFoOFFlTkFRc0tOWU1KQ0F6aHlPV0N6dmJSWWV2UzgvRWdZQWJlSnlERWExK204TWFYZGZ3N1pwb213REdRelByaCsyWSt6RGppMy9FRi9OSnU2OURyTUxSOHZZOTNkdTdjS1N0WHJyeHNQeVg2djBobVBEeU9MeVB5ZnFYNy94bmlkQVp1cWVJTGhST2JhVnlYUm9XZCs3WVFoVmhjTk5ub1ExS25kdU5SdWZqTmg2VEprcVdBUkEySkpodDlTRlRUMi9qNUg1Z0dmVW5UREVDQ2hxVHdNWVQ0b21nVXNHTlZKTDBSUkk5N3pEc0s0dXhmZmxIcUlXZzBKZmlKb1l0bzFCd3k1aWR4V3VqWG1mNStpVzVlaWNlNVJ3NTVNVUJOa1JJUmNuR29BVk1Ua3hZMWVHcjl5Ny9XajFoMjVLV294dUJPc2VnaTBETTRIM3grMWxoak5wb0xpS0NubFhDRGo2WjUvWEwrbzUvUWNpUVlVVnZwUXIxeU1TemZhYzFPbGZyODIwVGUyQ0pPbENVZCt1U3hkeGcyRzZUS2JJemppZmVOMzVDSHNFY2N2MzFLRjlkeUJMSWxNME8xWTViajFjSEk2TzJ2bDk0Sk1DS056eWNGak1KMjVNUnhzWGJhZExzT3ZzRlY5R1o4UEtkcmt1YzhjbnNSbnJkMmRFbmxvcVhpN0J2VTZ6Q0FoKzhUbGhpQ0FBSUcvbWFTQ1VvbW1UNG92bXZFYjZRZkh3K3ZDVFltT01hRGxBSmQ3QjF6WThPT2JydVVWeTlVYllUWDFFaVk3NWFXRmpsKy9EanVJQzh4UURUSkJETUducHNnWmw3SEg4M0FaeGg0bnp5TS85M2MxNHpId3VJeU9YNjZSdmxKN0RQeWNYeHJSQUVKQnlVdE9FVEVVVFlDd0ZETmNRVWsxWkJnc3RHSFJLYzJSOWs0RDRscU93R0pHcEthYk1FZWNJekdqdmhZVEZvTjZudEF3VE1OaFA2cUNySG13WXhBWFB5dVdWZVNNYVdBbzBKY0MwWE42OElIN3hFNWZCQUM1MFltd3pJd2lsNkxrYWwyaEVpTWZXRW5waUh3c1g2Tk9BcHVrVG9Ja2h0eDAwZmxCNmpVWmNHa2VlOFVDVjA4cm8xTnpXdmtXMHNVNThibkEyNXNNR0w5ZUo3OHBlYUoyNEIwSkhOclhmREY5eEFYQndsMHE1YXZRZnM3OWpycVprQ0d3aHc5TmFLNEVyRUJVMWkxNFE0NFJiYnRrdVpwNzlYUk9mcmJHdEFaRGFUbDNGUmdkQ1ZpUHMxM1RlSDN3ZFF5N3psNlhkTGpIdEMyWWQ1amFHbnZoTkF2bHNiV2RyM214MG5OMy9pK2UzQUFRT1hXOC9HaldYNC8yaVBJMUhMTTkzb0grdlZJUzZEZjYwRzZ4aGVQNHdXZEF0NlB1UHZ3ck1mbjFYdDh4cHdTd0VtWW5NSE5OVzY4WmpESkJFT09EcHBFVGFrWGZBNTRCc2Mwdy9pME5IN1VKZE96OXpqUTcva3VlNFpiN3ZLNVFmTHJjb3E3dis4eVRaSHZGbGRVeTk1RFIzVTc1OFJneERsQUFDUnFTRFRadEhnOEtNQWg3bjRjRlFlVUQ5VklvQ0hSWktOWlJYOEVSOWs0N004R1NVQ2loa1NUalQ0a2RXcUhBenJzVDJlcGdqR2k1TmRCUWpqWEJ1dXlTdjg5MDhRS2s2bk9raXlCcEFKeHBtWHA5L1BwaTNKQVE2Si9ZdTg5OTBtd2JERUFxVjhGaUtDcHhjbzQrSFdMQk9TdE9TcW5QL1JKNVp0RDh6Um5PSmt6bUpRbUozUFRSUDd1UWJEV0p3SGtVL2xDWVdvYlJyRU1rT2tiSEl6ME8ybnJOME5UemRCcEMvd3VIRGVSSXhpMVo4R3NCcDhEaUllVEZldmU4eEh4LzdGUXBJZGZnWTNWNnhWSWhSU1Z4Z2JjT24rdTdMampRNmlMVlAyTTFBV1VRWGZCVkpRRE9nK2tjVE9ERWFtd3VFaE9udVhYWWFoaGhPWFZIZHQxazdPVkw3Mm91MWFVVmk2VUY5YXMxeS9iOHBrMUd6YnBsMjI1S1JzQnFiU3lRZzRkTzZwYVZMZXpSelpzM3FUN0VqSGU2aVdMVlN2aHlCakxzNjJ0VFpZdVhTbzdkdXlRNWN1WFMybHBxY2JaMU5ZcXkxYXQxRTNXR04vTXVYTTA3Wm9MdFdONW92L3E2UEZqVWxsZEpUTm16WlNTc2xMWi9NcVdNYTJJaTNNNVMzek8vQVU2MjN2R25MbTZ0SVYwNk5BaFdiMTY5Umd3RWdTUEhqMnE2Yzh0bkNmbFNQTzE3ZHNVNkpnV2ZWOU1hOU9XemZMU210VXl2MmlCekprM1Y5UHJzbmZyTXdRYVB2L2k2cGRrQWZMNjNJem5aZG1LNVhLdTl2d1lJUEdab3ZJcU9YcnFMRnU0SlBHNzlYVVFiS3JZM0RLQ0RiWXVHMm84ekJVS1ppSktOQStwbHBQZklDejhaRGJUNnNGNVIycSsyTC8vT0VyUWJiUUhMOTRsTndyaGFLaThHRWF2c1hXdmVOT01vWFlIR2pUQnFCMm1JTFV1UjU2eGVUNC9ZVjJmUFZVdWZ2SXpFdnpEYkpHRFI4QVVZY2tIanZ6SU1OVmRPZ1VoWFB5Z0laR0J5UEw2WHVuKzliTmlMOGlXcHZ3TUFHK3FoQUVrZllpL0VlQm5uWkl0enZ4Y0ZUZzJsUEZxL0NYeXlJVkhIbEdobzUrSjROdVNEdUZEdmtNNHI4dk1SVjZRcnJuTEcwMWRxRys2dnU1cVVjWVJIZkY4alVYU2MyeTNSRkp1MVh3N2tWNFR6Q0ZxaTl5Z3Z5Y3BXNkl6bnNPRFBzUnR6TE1hd0xtVjd6cmNZbnYwYitVWUJ3UUtPS0ptOE5xUU5SV2Fwa1hhTWl6U2s1NkorazVYL2h2ejhzWDJ0UWNrK093dnhMbWtXRUxiMTR1Y2VGTWlCM2RLWlAwTE12cUhaeVR3bFc5Sno2MzNTbHRtSnRKT2xtQktyb0pPWTNhS25BY0FONk91K1FGS21tM2NwWk5nT0Rya0JVZkdWTldoa1FIa2laVitmY1N5TVlHSUcvc1JpR2FYNExweWtjeXZYZ0l3TWdTYXdUUVpTS3JWWFFOeG9lcmV3NGMxSFc0QndyMkpPTEZ4L1pZdDBtNjNxNytqc0xoRWw0UXd4aTRBK2ZIVFovUWVmK05xL1A0Qmo2YTY2b1dYRkFqcW1wcWxyYXRMNDJEOHpnRm9WL2pkN25iTGZPNExWbGdvYit6Yko0ZE9uTkIwRzYxV25WQlpVbFVsSjJwcWRJTGxpK3ZYNjhSS3hrdWhibXUzNmhZa1hPTkdQczVlcUpjeWdPSGg0eWRVckxnZlVtMTlnL0pWYytHaW1tcm1HcnFEUjQvcGZaN1RCZE1FT2VZNk9hNmI2M2E2NU1TWnM3bzc1ZGJ0Ty9RWkJ0NGowSzljOWFMdU5IQzI1cnlVbEpiTGpwMnZLMDhNbk54WnZYU0Z0TUJzNWFaenIrN1lLY1VsWlFxY3BqTi9EcTRQbkRpbCtVL2lDbXRxQmR4VG1SdGt1Ym12TXI5Nm1wd2lmV25YOEVYWkJQT1FRa2xaQUpOMHFjOU1VY0R6QWp3bzhIVjMzU2JXeDc4bDBhQlB6VUN5eGt4eStRa1pVM3RyT0NUK0wzMUphdStZTG5ZTDk4OHhQaExZQkMyTC9pZ0NFN1dqUHZUQUhBWGovdFd0NmFuU2dtZjVMWG11OW1jUHpla0FmUURBenZRQ0NIQ09ORUs3b0daQS9teGNjb0pqSXdUMURNQXpCTk9TY2UzSm15SlNNVjhiTFh1S3E0SlJ3Q2R0bi9zcXpOTTBzY09zN01sTUYwZHlqazc4SXlDMVpyRU1nMk9xTW91SXBKOGcwaHNUMHpCM2xTUmcrMGZFY1dTbk5LWmtpdzNwY0hDaEUzbHJTMG1SZGtzV1RLMDg2Zi85TTNnQno3TUZVODVqZmdtdGx3UGI1TUwwMnhUSWhyT3pkTjBZVis5eldRL042Qm9BQnJWT2RoWnNEMjZVYlg4eXdSK2RRSEkreXBEYVRnRTZxeXhwdGFBK2tiY2FoQURxazUvbHZnQU5sdVhwUWJteUUrdlBTcGV6N0lCd1RyQnlReU1Hc3F2R3hmeUVBRWJ2eEF4Nlp0VUFvaXJqQXhBNE1zd3NxWkRuRnBUSy9CS0FhY3hNWWcxU2NDZXN6M0hFVGRBT256eXBzNlJacEdzM2JaTEtKVXNVUUxTWUVRMFh5VzdhK3FxbXdWWDc5TTNRSE9LcWZMb2RtSkxUNVphcXhVdmt6UGxhZlk3djl2VDNLNkEwUUNQaU5XZHpGMEliMlhQd29BSWY3ekVRcE9ZVUZjbU9OOThjdTNlaHFVbDU2K3cySE9VWDYrczBidkxEaWJuQm9WRjVZZTBHWGN2RzlIamYzQ1dBT3dTWUkxZ0VId0lMd1lqeDhoNUJoMXVWY0kwYzd6RlB2TGR3NmJLeDkzYnYzYWZ2bUxzWGNPSHVTNnZYNnVadmRPaHo3VjFqVTRzMHdGU2xDY1ozbVA2OG9tSnB0YmJwT3h3bDVKZURqcHpoeHk0NG1zWTVJV3d3VVB0NVpPRGV4ZjFvWkd5c0NTbkJQQ1MzSlVkblUxc0JTTncwalo4OHZvQkdTai9GRUFRcTlDUjY4OTUyR0VKb21xaHR0aEd1aUdMUFRoK1MrRHVrNlcrK2JFd1hRT08zVDBFRGg5RHdZNFpPeXkyNlRFUzN2NEFRZEFKRXlYODNnSlJhM2lCNmZYNFhucjA5TllpK1pKZ08wQUpvanRIM3hLK2d1cElCdkJESUhtcUdBRG11YUc5RnZJRW5mNDhDOUd1anZWckQxZnNqZm1sOStPOTEzZGRGOEVHLzJZQmxpdmp5YnBjR3hNV1BDZmlrbDkra0JRQWhneWgxbWxFY3didXFIWFFaZ1ljb0hrUmxSeThlbGhvQUhiK0J6L1RzMEl6b1MrdE16NVBtNUduaWV1NTVQSThFQ0Y2c2ZXZ0NMTUxlSU9wa0dKcklra1Z5S21VS0FDUkhKM1A2OHl5NmZvd0FSUTJtQS9sdlI1azBJMzZPWHJJRHFRZnduVU1abnNHOVdqelRsb1V5eERrQmh4MUJGOHFkUnc0Mk5PUWJJNnJVcmp0enMzVUxFWUp4SDNoMkpnR1VSNmtSb3N3VWtIVzU4M1VUMnh5RmtvQTBGejB6djdIUHZkZ1ppcXE1K0xSc3pJSE1XalRCaUdRZUp5S2FOa2RQR250ZE0zQ3JFUE1ydFdaWSsvSkdYWWx2WGxQWVp4Zk9WNjJDYVhJenREWnJod292dHgraG9DdlBBQ0tlSHpwMlhNR0NXaFhCd3R4R2hJSDdaL00raGZoQ1E2UGU0eUpjYWpZY2llcm90R2thRE50ZmYwTTFHRzZCVzdWa3VSU1dsT3NXSm55SDhYTVJMclVaOG1VQ0Q4T3hVNmMxWGZPYWVlUldKK1kxQTAwNmJxR3JBSXRyYW45MGhoTjB6S1V1WEhlMzVaVlh4L2hwYld1WGxhdlhxWWIyM0t5NUNzYlVESzBkN1dOYTZ0eWlValhUNko1SnNqLzJKVG1YazZtelpmdnlBUlJvU0J4cDZVU0Q0NmIwaWNod3NSa01YMmtlVWdkNnpUWnFJV2pJRkNMMndwM1pNTE95WU1yZ25NUG5nMC85VlB5aEpnZ3NXaW5rMVEvWm8rOW4xQmRCajRRZXd0RWk5WTgraWdaTmJZME9VZ2hBRmt3cnZNL1BDamxoWXVtV0h3UlVDK0xOVGtjdm4ycjRxQ0JNTGRCNjZOTlJIMHRjNE9laGFiSnc2Z0MzdWVXK1BMMHB0MHZQczgraHN2eTZOL1dWeUFRb0JtNmM0djNkcytBbFRiemdxK2NXYUFTTUU2QkhUU0VJbmprVGh5NTJuZGxNeHpwS1RYZXJORXowaVFrTmp3T3VISnNZYmpnbHR2eTdWZmlEeU5zRjVJSGFJc3U0QWFEdm5QTXMrQTVxYnh5T0dKcW11a1pRcHRSY293Q2t3T1oxY2pCN0dyU2ZWTzBrR21CbXFha0dMWktMV3dsU0JCcCs3NHlERGwzSVZ5Y0F1eXMxQytZMkFDWTFVMXBUMGxGZUZ1MVlQTWd6dFovbXpBTHgvZUM3NHY3eDk5RnhaQ1BmNEE5bFg0OTY1eWVnbUZZQXNOelBURE5ENk1DMEtLNlRxRUdzV3J0V3pSdHFSNldMbGtEMUx6ZkFhQ0ZNbXdyRFoyU0NrV21ta2E3RlZDTVltU1lZV3pjMUlHNERZbW9JNXA1RlhGSFAzeGtvOUJSY2dvZ3BxSzdlUGdVQ21qN2N2K2pOQXdkME1TMkYzQlJ3UjY5YkFZdnZNVjRUTUFodUJDMXpGSXlCMmhkTktZZXpSNGZzZCt5Q0NRUndvc25GcjVrMFdXMnlhczE2QlVwemp5WHVFTUIzK0M3QnlZeUw3OFNERWZOSUh4UFB5UWZmSjJDU0J3SVo3MU9ib3YvSi9LWWNIdEhkQ0JqWS92aEZJSnB3YTE3ZUxMVU56ZExuOGN1ZS9RZTBERXdBcFlPN3BIS2hIRG9PTXcwM2ttVGpjam43bnZjYmpRV0M0MEx2MkQwVkFJSWpWM2dub2tUemtMcS85bVd4Wm1SckR4eWs5Z0doWjAvTTRlWGFLZm5heTlvekliai8rbU1JdHgwUWdDcWd4c0JJS0VRNEtFVTgwdmFyZjVlVzVGdjE0NEEwdzZKbzVHZGpvRWtUc0JYQ3lWNjVHL25vNVhRQzlNaDJtQlZkeVprNlRFL1Rqcjg3OFJ3M3NhY2dFNHc0SjZZWjJvTHRBNStGWWI4ZXdvSStPeGdncEw2TjRvR0lRZkhrOEVucHZPMkRxcTBNNVdaSVBYamlWekg4QUlsQmFwY3duWXlHNVdVTklGL2NqQjV2am1WdUFrSTVVSU5RWGlKNC82ZS9sQ2Jrand0ZXZZamZDMDJtQTJCYm41NHNmYk4vaDRlZ1Y3THNxSDJnWHFpRnNlS1pGSGtOQjl3eWRIQ2JuUHJDcDZVbEowUExoMlowVHdyTXpBd0FPanNQbEtXVlpSa0RPNEswK3FrUXFHRnlIWndWcGhvL0JzQ3liNXA2bDNRODgwZWtDKzFyOCtzd1R6K2d6M1pCby9JaERnS2NGZVVSRkNkQUdMbWg2a3N6L0pvMHc0bkpFSXpUVWxwZExjL09ucTFxUHpXa1l2VEdoZVZWQUFXWTJySG5WR2owLzdXVHVkY1EzeWNBVVVqandZaENUVk1vWG5nSkd0UWFXdHFOT1QwTVhMbFBnTnIxNWg1OWp2WGhHaHhVamFyWjJxNEN6NzJNcUFFUkxQZzduMlBnN3dRcC9tNkNDQUVxM3VSNWVkTkczZS9JZktlenAxZktGeTY1N0I3NUlSaVJQek1lSGsrZXJWSFE1VFhUM2JicmRRVW5tbW5tUFc0Z3g3SXc0eUtBRVZpWU5nTkJpVUJrN25qSkJjSXpaODJSYzNXTlkza2hDSE83bEhodGp0OVZQSExpdFA0T0ZjTXU5dC84WGhwdi9TaE1wd3hvSzhtNnhTdk5LRGE4UkpSd0hsSW9LTjZmUFExTjZ6MXFhakZ1RlNRRUozcFE1eFREUWQyYmRLZjRmek1UYi9PVGpvakxiMVMybnpraDJQbkFlaVFpM29PN3hmYlZiNG9yTFY5T280RlRzOUk1TkRoWGdBSFkyWERzc0JnOU4vMUUzRFNONjdGYXAyYnFPak91eXVjUU4zMWpoM096cERudE52RTgvbStvNFRaa0FJbFJrSEgwUnlnMWwyZzhFREZRN21tcVJWQXhYYmQvQ0dBSFFPZWFMUEJFY0tySm5LYmdRMkJWbFlEelIxQTI5SjdnOWNRRUJLRzF4ZXpyS0Z6VFJUbjhqWWZrUkZhMmFvWUVDUzd6YUFEZzlqLzNERm9PQUNzRzRvTW91RUZjOEhQZWVpT21qSG5wVGJlZGs2RS9QQzNOdDl3cFZtZzFEb0FtUVljbWJUUEtrclBkR3dwd3hIa3I2b3l6dHptcm5xT0UxSEFKL2cyWmFkTC94T01pNTQ4alg0aVorVUZXbTMvOEM2bUJ1ZFlHcllqN2FiTXRkZDJhSitFb1Ixb0k5SGlPREdtWlhCK3hqWENVYTgvK2ZRcElOSDFtenkrV29xcUZNcXVvQktCUUJZRXo5SGV5cCtZQnpMTnJkV0FYemkrUzAyZHE5RjMyL212V3J0Y2VuOWRzS2dRZkNxcHBEakZRMkNuME5IY09IVDRxNTJzdjZyTnZ2TFZYelJScVIvUUwwZi9FN1VEY2ZjWW9sYTJ6VzFmamo5OEhteE1veTZIMTJSMU92YWJncTZaVlhLckQ1ZlM5N0h4OWx3SVdRYUsrdVUyLzR2TXNUQ1A2ZWFpcHNmb0pZTlNlcUMxUjI2TWpuZnhTNnlFWXFkemltczlUQ3lMLy9LUlNQTjk4bmtCTTA1V0FHOC9udXZVdlh3Wkd6QnY5VnZRYnZibnZvRzQwOS96c09mTEdtN3YxR1pyTTg2SEZybDYvVWI4eGwwVExUVHk5RXQyeFhicWYvRmRwK1BvM3BPNHJEMHZISS84Z3ZtLy9FSzhrb0FUemtQUnpPZHgyNFV5dDlNK1pKUTNmZkZUYzl6OGsvVjk4UkZvZS9vYTBQdmhWY1g3OU1SbjQ0dmVsNWJzQUJKOGZNa1BYcHJHaHZ3cDdDR0lJVkdKQnFUZ0ZYSWp2bU1qUGZ5dUJXKzhXSndTVFMwWW9TQzRJQzdVZkRuZXpoeWZ3YWMrTyt4ekdwbk9hd3RFNmRaclkvL3ZIUldZdUVuSGFFUzF5RURWY3F2WWh3OU52Skg2SjRrSElKTXFWa3hrSElNa1JtRkUvZTBwOVNOMFBmbE5OeS9hZlB5R08ySU13VEhDQ1hBREFSNUhMWUt5OEppSk9vV2YwVVpTQlA4Q0pvWGpmYlpmUXNxWFM5dGova3ZhdlBpcHRqLzY5T0wvMUF4bllzRWtDc2ZWK0JCM09RT2RubUhUUkgvSkNrNDFhbHBaakNNZ1V3bE9oZHRUOWV1bCsvRWZTOXZGUFMydkJYZEFnODFDV3VkQWFwOENVblFMQXkwZklnV21iSjIxMzNpTmRmL2N0a1JYbFFKMlRScm1GZEZlalMyMGdCQkRmdjF2NnZ2ZTQxSC85TzNMNk85K1I0TC84QklDS3ZGQXF3UWZyV05jaVhpZFIwMkZ0Y0JKaGJYMmRqa0p4eEd2RGxsZGxEUVRqNEZGai8yZ0dQa2ZUZ0hTdFlNUzloNXBiMnBSdHZuL3MrRW5adC8rZ25qTXdGZ0lBQmRZMGh3aFFPOTdZclJ1aUxWK3hTdW9ibXZSWm1rbDAvTkp2UkxOeXd5dXZTSHRINTFoY0hKWGlQa1U4YWpFaEVBQUpUaHlaNHNnY255TVlFY0Eydkx4Si9TKzh4eEdxVjdadFYyMkZFeTVmMjdWYlI5U1lWdnltYndRVSttNWVXTE5XVHA4N3IvYzQ2c2QzNDAxRGpyelJOMGJBWVJ3MHNmZzdmeU1ZY2E2U21xWnhlMzd2ZVd1ZkhEaDRXTS9KTnplQVc3THlSZlVaTFg5aHRmcW1xQWxTaXpNbmFoNDllUWJndUJueEg0Sm1oTGJLZ2ZBK0ZTdW8yWDdBQjB3aXJxUTNaaEFtb0FUemtQcVJQVjE0cVNVR1lROGJYeElkSFlWWTBPeGd1aEVPTVliUlgrTTlUbFQwZXZCR0NObzhmZ3NFVkFENWxSSisvb2piYnVpWFJ5Qlo1Smd0Mm05dEV2Zk9yV0tiL1p3NC91K1BwT09yWDVPQkJ4NlM4UDJQeU1DRFh4TDdnMStRTG1nVGc0Ly9IeEdveXJKbm53eTVuV3I2Y01TZGdrdHRqT2x4bnlJQ05ISElEN1pOaWdlaWVEQWlFM3gvSUJUUkl6VVJIZEVLY0FJWVloOXNrZWJZY3pSQjlkT1BLQ3Z1aG5rdFZncjNidUpucDdYOEVIVS9HR09ETUFDR09TRFlvQ3p0Ym4yR1N6b1VjVUpzemVRRFhJRVhBanR2cTUrRzhvaEk2TG9oZ0dqOWtNRlI5TkRCRHVsclBpeDlSM1pLZE85T0dkMTdUQWJmM0NmOUoyR3E5SGJvY3pUOXlBTS9nTWs0R0ZoZVh2MFdHaU5IZlBqVC9ERzdMQm0zUTdwd09lcUZ3T0k5K282RzN3R25FWG5STldJNFp3aHd4QTcxdzYraHNQV2FNNWdKVml4Q2FoRW1YWXNEVzR1ZE8wNHdTN2pndFhtUFI4Wk40VFFGMVRSdEdIalBmSTRqVEx4bkFoWjU0eVpxL0kxVFRzd2xKZWJYbHhuTTlKaTJHYytWZ2puYjJZelhQSEpFamVjTThUNGkvUTJ5YlY0em1IeHpYcExKSXdQZmk3K09OMDgxTGZCR0hzaHJmRjU1SkZEeEdZNm1tUi9CMURoUUIvemRlTWJNaDhqL0E4eVBJcE9TNXk0ZUFBQUFBRWxGVGtTdVFtQ0MifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMC0wNC0yOSIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiS09OQSBGSURPMiBCSU9QQVNTIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVMkYxMTAwMjAyMDA0MjEwMDIiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMy43IiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjAuMCJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjAtMDQtMjkifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyIyNDQ2ZGJlYTllNzFiMGI5ZWYwZWY1MzYyZDZjZWU2MDhiOTVjNGQ1Il0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjI0NDZkYmVhOWU3MWIwYjllZjBlZjUzNjJkNmNlZTYwOGI5NWM0ZDUiXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkZlaXRpYW4gQmlvUGFzcyBGSURPMiBQcm8gKEVudGVycHJpc2UgUHJvZmlsZSkifSwiZGVzY3JpcHRpb24iOiJGZWl0aWFuIEJpb1Bhc3MgRklETzIgUHJvIChFbnRlcnByaXNlIFByb2ZpbGUpIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6Mn1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50IiwicmVtb3RlX2hhbmRsZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlCMlRDQ0FYNmdBd0lCQWdJUUZRTktXKzd6YmcvN2QrbFR5cklXd0RBS0JnZ3Foa2pPUFFRREFqQkxNUXN3Q1FZRFZRUUdFd0pWVXpFZE1Cc0dBMVVFQ2d3VVJtVnBkR2xoYmlCVVpXTm9ibTlzYjJkcFpYTXhIVEFiQmdOVkJBTU1GRVpsYVhScFlXNGdSa2xFVHlCU2IyOTBJRU5CTUNBWERUSXlNRFl3T0RBd01EQXdNRm9ZRHpJd05USXdOakEzTWpNMU9UVTVXakJMTVFzd0NRWURWUVFHRXdKVlV6RWRNQnNHQTFVRUNnd1VSbVZwZEdsaGJpQlVaV05vYm05c2IyZHBaWE14SFRBYkJnTlZCQU1NRkVabGFYUnBZVzRnUmtsRVR5QlNiMjkwSUVOQk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRXNGWUVFaGlKdXFxbk1nUWpTaWl2QmpWN0RHQ1RmNFhCQkgvQjd1dlpzS3hYU2hGMEw4dURJU1dVdmNFeGl4UnM2Z0Izb2xkU3Jqb3g2TDhUOTROT3pxTkNNRUF3SFFZRFZSME9CQllFRkV1OWh5WVJyUnlKendSWXZuRFNDSXhyRmlPM01BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0RnWURWUjBQQVFIL0JBUURBZ0VHTUFvR0NDcUdTTTQ5QkFNQ0Ewa0FNRVlDSVFDQjBORlFTTjB6NGxXei95YzM2ZXdyVEN6dHRLL3FGdmxhUE9LaCtUMW82d0loQVAwb0tLQStjaWNzRHkzWTNuK1ZsUDhlQjNQQnpNa2h2Vy85SVNYQ3crVkIiLCJNSUlCMkRDQ0FYNmdBd0lCQWdJUUJUbWszWndpbEZYanNaeXdIRG5NZ0RBS0JnZ3Foa2pPUFFRREFqQkxNUXN3Q1FZRFZRUUdFd0pEVGpFZE1Cc0dBMVVFQ2d3VVJtVnBkR2xoYmlCVVpXTm9ibTlzYjJkcFpYTXhIVEFiQmdOVkJBTU1GRVpsYVhScFlXNGdSa2xFVHlCU2IyOTBJRU5CTUNBWERUSXlNRFl3T0RBd01EQXdNRm9ZRHpJd05USXdOakEzTWpNMU9UVTVXakJMTVFzd0NRWURWUVFHRXdKRFRqRWRNQnNHQTFVRUNnd1VSbVZwZEdsaGJpQlVaV05vYm05c2IyZHBaWE14SFRBYkJnTlZCQU1NRkVabGFYUnBZVzRnUmtsRVR5QlNiMjkwSUVOQk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRW5mQUtianZNWDFFeTFiNmsrV1FRZE5WTXQ5SmdHV3lKM1B2TTRCU0s1WHFUZm8rKzBvQWovNHRud3lJTDBIRkJSOVN0K2t0anFTWERmamlYQXVyczg2TkNNRUF3SFFZRFZSME9CQllFRk5HaG1FMkJmOE81YS9ZSFo3MVFFdjZRUmZGVU1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0RnWURWUjBQQVFIL0JBUURBZ0VHTUFvR0NDcUdTTTQ5QkFNQ0EwZ0FNRVVDSUJ5Uno0T0FsUlo5SHo5S1Y3ZzJRTnRDMEM4SnhIL3hMSlk4RlpFbXRKM3NBaUVBc3JlVDArZU5rTmNVakk5aDVPUENvSDZObXNPa2d2RUFCSlpyRjA3QURrWT0iLCJNSUlCMkRDQ0FYK2dBd0lCQWdJUkFNczhZWFZCb0JOdVhVanFmQ29YN3k0d0NnWUlLb1pJemowRUF3SXdTekVMTUFrR0ExVUVCaE1DVlZNeEhUQWJCZ05WQkFvTUZFWmxhWFJwWVc0Z1ZHVmphRzV2Ykc5bmFXVnpNUjB3R3dZRFZRUUREQlJHWldsMGFXRnVJRVpKUkU4Z1JVRWdVbTl2ZERBZ0Z3MHlNekF4TURFd01EQXdNREJhR0E4eU1EVXlNVEl6TVRJek5UazFPVm93U3pFTE1Ba0dBMVVFQmhNQ1ZWTXhIVEFiQmdOVkJBb01GRVpsYVhScFlXNGdWR1ZqYUc1dmJHOW5hV1Z6TVIwd0d3WURWUVFEREJSR1pXbDBhV0Z1SUVaSlJFOGdSVUVnVW05dmREQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJEMkxISEFRcVliZFIxV1psdWVydE0zMHJXaG9yWWF2V21NVmE0bmRYOVBad3VSRXBMUTRtMW5FbHFRS01uUkU4LzRDK1Jxd2lhdittcEk0a3hkNWU1dWpRakJBTUIwR0ExVWREZ1FXQkJTM1paanlHbGhaOTlOMXZMb1RQWFZVYTRaRVlEQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01BNEdBMVVkRHdFQi93UUVBd0lCQmpBS0JnZ3Foa2pPUFFRREFnTkhBREJFQWlBb0QrUjZrb2xJV2FOSno0aHowM0QzZ2VzM0diTUJqQVdwa09VZzlheUZnd0lnYkV3N0FZU3lrNjhPdnhnWGV6Z25kVFJURXVTV1QrZmRSbkxhQk5zYVR3MD0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBRkFBQUFBVUNBTUFBQUF0QmtybEFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFCSFpwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFBRHcvZUhCaFkydGxkQ0JpWldkcGJqMGk3N3UvSWlCcFpEMGlWelZOTUUxd1EyVm9hVWg2Y21WVGVrNVVZM3ByWXpsa0lqOCtJRHg0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJa0ZrYjJKbElGaE5VQ0JEYjNKbElEVXVOaTFqTURFMElEYzVMakUxTmpjNU55d2dNakF4TkM4d09DOHlNQzB3T1RvMU16b3dNaUFnSUNBZ0lDQWdJajRnUEhKa1pqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWo0Z1BISmtaanBFWlhOamNtbHdkR2x2YmlCeVpHWTZZV0p2ZFhROUlpSWdlRzFzYm5NNmVHMXdQU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2SWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhodGJHNXpPbkJvYjNSdmMyaHZjRDBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5d2FHOTBiM05vYjNBdk1TNHdMeUlnZUcxc2JuTTZlRzF3VFUwOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXRiUzhpSUhodGJHNXpPbk4wVW1WbVBTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZjMVI1Y0dVdlVtVnpiM1Z5WTJWU1pXWWpJaUI0YlhBNlEzSmxZWFJ2Y2xSdmIydzlJa0ZrYjJKbElGQm9iM1J2YzJodmNDQkRReUF5TURFMElDaE5ZV05wYm5SdmMyZ3BJaUI0YlhBNlEzSmxZWFJsUkdGMFpUMGlNakF4TmkweE1pMHpNRlF4TkRvek16b3dPQ3N3T0Rvd01DSWdlRzF3T2sxdlpHbG1lVVJoZEdVOUlqSXdNVFl0TVRJdE16QlVNRGM2TXpFNk5Ua3JNRGc2TURBaUlIaHRjRHBOWlhSaFpHRjBZVVJoZEdVOUlqSXdNVFl0TVRJdE16QlVNRGM2TXpFNk5Ua3JNRGc2TURBaUlHUmpPbVp2Y20xaGREMGlhVzFoWjJVdmNHNW5JaUJ3YUc5MGIzTm9iM0E2U0dsemRHOXllVDBpTWpBeE5pMHhNaTB6TUZReE5Ub3pNRG95Tnlzd09Eb3dNQ1lqZURrNzVwYUg1THUySU9hY3F1YWdoK21pbUMweElPVzNzdWFKaytXOGdDWWplRUU3SWlCNGJYQk5UVHBKYm5OMFlXNWpaVWxFUFNKNGJYQXVhV2xrT2pKRk56RkNSa1pEUXpZM1JqRXhSVFk1TnpoRVFUbERRa0kyTkRZelJqa3dJaUI0YlhCTlRUcEViMk4xYldWdWRFbEVQU0o0YlhBdVpHbGtPakpGTnpGQ1JrWkVRelkzUmpFeFJUWTVOemhFUVRsRFFrSTJORFl6Umprd0lqNGdQSGh0Y0UxTk9rUmxjbWwyWldSR2NtOXRJSE4wVW1WbU9tbHVjM1JoYm1ObFNVUTlJbmh0Y0M1cGFXUTZNa1UzTVVKR1JrRkROamRHTVRGRk5qazNPRVJCT1VOQ1FqWTBOak5HT1RBaUlITjBVbVZtT21SdlkzVnRaVzUwU1VROUluaHRjQzVrYVdRNk1rVTNNVUpHUmtKRE5qZEdNVEZGTmprM09FUkJPVU5DUWpZME5qTkdPVEFpTHo0Z1BDOXlaR1k2UkdWelkzSnBjSFJwYjI0K0lEd3ZjbVJtT2xKRVJqNGdQQzk0T25odGNHMWxkR0UrSUR3L2VIQmhZMnRsZENCbGJtUTlJbklpUHo0NzdKWEZBQUFBWUZCTVZFWC8vLzhFVnFJWFphdkcyT29xY0xHMnpPT2t3dDBCU0p0cWxjWFY0dSthdXRsV2hiems3UFVBTVk5SGNyS2p0TmJxOGZlQWw4YUJvc3p6OXZwZGpzR0dxdEYzbjh1VHNOU1pwYzZKc05UNSt2MHhZS251OFBmZjUvTDQ4ZmcvZnJpY3pKZ1lBQUFEQUVsRVFWUjQya1JVQ1piRElBakZYWk9ZMVRhdE5jMzliemtzU1ljM3I0TUU0Zk1CQWFENnpsOHkvOVRPZ2V0OGQ1amZONzhid00vZERDUnBSNTIxelhmb2pISjA1SUl5aEJBVVNWQU9OZEd6Qll0MmY3S0ZyZmtKYUFrSGg5RlpoY0RYSFJrVEtvOU1MaWhHYWF2SW1uVjNxeUVYMEVwcmd6LzREd1VEN2tDSFJuZDhRRk40M0dvNFVWbUREZ3phNHcyN29pemRBMitjSyt1dVVwampvMit4d2MvNDJXNTB4NUxHWWVEQnNSMEhWSXg1eDhpRjYwQ2JsYlRFRWtGcjI3Yk5EQlVWU3ExT0tWUGJFNjJiM0VIOEZxQmc1T09PRXVjMnQ4WkppcU1PdUdwK2NLamc3d1ZHY2VvenFONHB4Z1ZQUWtqRllnYlZKS0RVaERDallyYXdQNXE0RVRnQzlmSU1SSHRpdHBRY0N2Sk9FTGNiTXNRZ25jaVJrbGpweVFqdkc0NGpxQlVFVEZpQmkxUEVJeWVrT3pzVytUeTVjTEhvczVSK2RNUzFMdFNTeGYzZ1FIY3pSMkNJNGdNTnBXNElSQTFRTWE2dEo0K0M2dUh1R0U4bU5ESXlGcWcvT1AvTU1VdWVTNklxOFM5MGRBZUJKU0V5L3FLa0srQk53ejhjWVk0amI1SjZ1NGlXQ0kyQjFaNTZMVzVrRWM0aGtkTXBzdlVDNTU4NVNYMFF1YmNnTnF5ZmdERkVjVHQrNDAvMFM1Tngwd2FDdzNPS2tjT2JBNUluMEFZcDAxcGpqdzJuNjI2VURqdEh3YTI4aUh1VEtxdHJ2K3JlVzQxTlo2aUdscjd1dUxKQ2ZrRnRjdGNHMDRzZ20xZU5TK1phRG5wYVRFckdveVg1SksyaU16OHhzMG5Pd1dHY1BETjQ5cWFDZDRiekpvekRabS9hQksrRW96THcrWGhOQmlZd0hmMHNpT3UxWFBrRy96S3d2cVlLY2ZTd0RFY0gvb1VlMDdlcy9XUThySXlnMkRPWGo4dGprWmR1REIvYjhoekRsbE1NT0NTNUJFbmQ1MzRmOHRpM1VaYzRrTXMzeEx5YWZNU3NKaGRHOFhQcWpOazV0QWdPMjVmZUtDaG5WZERqL0owRk1rT3NVL3hNQnYwd0ZoWWVFR2ZWSDEzZnVEVTB5REZMYTRmYzdSbldIQmZ1VEZWMnRFbU53YWRjN2FjM1VZMmpmQmw3SFQzNmZlMzRpUU81bU5DRkZCVzA3S2pQZ3FoT0xVMDF2WjhQdWVaMkpDbEZaTjhqa1VzNjl1a2E5ZVBwNitFZkw0QUY1K055d1NiaXJIdGNCOE1sL2drd0FFamtLNjRLakhQZUFBQUFBRWxGVGtTdVFtQ0MifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0wOS0yNiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IkZlaXRpYW4gQmlvUGFzcyBGSURPMiBQcm8gKEVudGVycHJpc2UgUHJvZmlsZSkiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlUyRjEwMDAyMDI0MDkyNjAwMyIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTA5LTI2IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjF9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjQtMTEtMjAifSx7ImFhZ3VpZCI6IjE0NmU3N2VmLTExZWItNDQyMy1iODQ3LWNlNzc4NjRlOTQxMSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiMTQ2ZTc3ZWYtMTFlYi00NDIzLWI4NDctY2U3Nzg2NGU5NDExIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6ImVUb2tlbiBGdXNpb24gTkZDIFBJViJ9LCJkZXNjcmlwdGlvbiI6ImVUb2tlbiBGdXNpb24gTkZDIFBJViIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjo2LCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX0seyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sImlzS2V5UmVzdHJpY3RlZCI6dHJ1ZSwiaXNGcmVzaFVzZXJWZXJpZmljYXRpb25SZXF1aXJlZCI6dHJ1ZSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDNlRDQ0FkR2dBd0lCQWdJSkFKYlR5cnUxWC9JUE1BMEdDU3FHU0liM0RRRUJDd1VBTUNNeElUQWZCZ05WQkFNTUdFZGxiV0ZzZEc4Z1RYVnNkR2xCY0hBZ1JrbEVUeUJEUVRBZUZ3MHhPREEyTVRJeE5EUTFOVEJhRncweU9EQTJNRGt4TkRRMU5UQmFNQ014SVRBZkJnTlZCQU1NR0VkbGJXRnNkRzhnVFhWc2RHbEJjSEFnUmtsRVR5QkRRVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNVmpLSFdwYkQ3VFNsTXhvY2pUbDZuSWY3eDMyUG1zUTl6R3VMR0dxQTBVUVpvSXEzWEx6TDZMWVV2SjVBNWcwdXlGR2xsSEVmR0FLckVhQ1E4RlZ2UFMvVWgwRnlmeldoUkF6aVRTaWpqTUlJVmpqalV2OW05dkZtY1hTY2dIaWc3T2R6ODg1OFYwa3JOSDk5cUdtM3dqZ2FPZXJUV210K2pYQ1VmbjAxSWtUUHd4RzJIbGdFZDQ1ak5MU1Y3Vm9vbCtLZThFMmtpNGxFa1RlSHpib3VsUjVHVWJwM25NaTdFNDdWTVFhM2JOd256V0Jic2FCU1NRaExrM201SGFLaGh4YTZ3SkRLNDdOaU1Da0NrZElIdVdTUUxWQWZtODVVQU9OdEVPUHdpME91SzNxYmU4eUtPRkdmMEtoQjVNTWVBeW03TVYvTTRXMGE0OW9nUEQ5cE1DQXdFQUFhTWdNQjR3REFZRFZSMFRCQVV3QXdFQi96QU9CZ05WSFE4QkFmOEVCQU1DQW9Rd0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFKV3o1eExNazVXTlliQWI2eU94RUNCb1oyV2VCL3FsNFZKM08vMy90TnN4T1luekxlV281NDB6UWg5ckFtYXh6N2V1bUJsc2tNcTR5R1BTTlhCOXljV0dIZ2tjQ2VTek4yd3Y4Q0l6REJzMm9CWmpUTms2NUxCWkRzc1RPQnRNVy8rdVRGSFFmYnVPM0lTTGhJMERYZlJFaTlORE0zamZrMTF4SGNzZmgyUk1WK1FkTmZ3VmFaWnJDcStvdUcrRXZrdjdLcXErb3l1MFZGTS90ejY4VEdsNnlsaFBGUjFxaDl3dHRwVmpBT09DRVFDTHFQMmRQMjhsd1lCeUNxSFFxVkh3YnVqdi9MWmpabktXM0xZbmRaaXhQUFNSQ0pzc0REd0p2aC9mNm5UeGc5WkUrL0pjWXJlNUNhSThuelZIYVNPQ2pOSjdGelVMRzY0SmlXT3ZRNTA9IiwiTUlJRGRUQ0NBbDJnQXdJQkFnSUpBSUNVVHZrZ3RqNUNNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1GRXhDekFKQmdOVkJBWVRBa1pTTVF3d0NnWURWUVFLREFORVNWTXhDekFKQmdOVkJBc01Ba05UTVNjd0pRWURWUVFEREI1SFpXMWhiSFJ2SUUxMWJIUnBRWEJ3SUVaSlJFOGdVM1ZpWTJFZ1EwRXdIaGNOTWpBd056QTNNVFF6TnpFNFdoY05NekF3TnpBMU1UUXpOekU0V2pCUk1Rc3dDUVlEVlFRR0V3SkdVakVNTUFvR0ExVUVDZ3dEUkVsVE1Rc3dDUVlEVlFRTERBSkRVekVuTUNVR0ExVUVBd3dlUjJWdFlXeDBieUJOZFd4MGFVRndjQ0JHU1VSUElGTjFZbU5oSUVOQk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBdkFLT2VxQzUvcDBEMWlzQ1lLUUpsVlVPckI2STdETG9jdW5FL1JtOGR1R1RieXhRaHQzQ2JGVlR2M04yTHAyZmJqeGxJKzNzT1NHazMzRlRZa1RxeGNkSklySjdTc2tCY1VTTnJmS09hUVQvNktRY1A0Q203Vis2NTVUcStUV3h5eFdRaER5Z3QxNXFvUDdNdUs2YlQ5U3dwQ2pwZktoYU1TbXlRYU1vVWNSQWJMcWR6QkNhYzBoekIrWmUrZ3FKbG5XVjlVYVNJMnJGc1Z1SDRaRTBjUk8rTU9wYUxnTS9zMjQ4bkdHSHAyMmV3U1FmYm5QYUJiYjhpcXlBUCtjdTUyR0xzVXBLUkplYkUrUjYrUE1ROUpDZFdlUVpSM0RrZlNpZGt2M21jYjRqcTFpSXRhK01xS2hSbndyZlhoOTExS1dMbllBbDlFTkNoTFgwYzZTajFRSURBUUFCbzFBd1RqQWRCZ05WSFE0RUZnUVVXTHZoUkJVUG44dUxJZjY4K2d2L05aSXdHU0l3SHdZRFZSMGpCQmd3Rm9BVVdMdmhSQlVQbjh1TElmNjgrZ3YvTlpJd0dTSXdEQVlEVlIwVEJBVXdBd0VCL3pBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQUZMckRoYWVnZUtIeFlqSDNFUDN2VUJLaG56TTIwNkFTeGdlWUNPMkVjOXBPbFlKYWVxRkUrc1VhbVVWL3B3akRscU5hU2dGZ3k3VHdlWWt2T21NbjRxU2NzSHF2SjN6R09BaWFmd2FoMXZVSGZDbFhSOCtheE8yaUdPVUYwSktyWjlZWWpiQWE1LzRIQ2x2N2pGUE9kTVdUT1F5bmdvaUhBczNqa3VZanBDTEZsQjRWT2kzZDF3akExcG5UZEJLa0FiN3Q4blR2dysvWGJGdmNRYTczVkg3c2p2b0JxRDNmZE1mUmN1VnE0cVVadFpUNmNHYWdUSEQ2MVR0cWg5b01DWlhjRGJSMVBHWm5OYnF5Y3NXUERJSzBucG1LMy8zbGZWOGMrWnNyeTZlMTcwbWZKTVpwN084bTZDU3o2L1ZMSyt5REpkNzg0MXdwbWVLVGY2SW5aQT09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQVF3QUFBQWdDQVlBQUFEbmxVWnFBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRW5RQUFCSjBBZDVtSDNnQUFBQVpkRVZZZEZOdlpuUjNZWEpsQUhCaGFXNTBMbTVsZENBMExqQXVNakh4SUdtVkFBQUsxRWxFUVZSNFh1MWREWEFjWlJtK05PQWZLb2c2V08wUWNyZVgzTzcxUjQxb0hkU3FxREFPZzMrY1lFWEJvbFhSVEVuMjIwdGFLVGM2NG1nQnF6QmlFVVZwQmRxaXd3aHFTZElTMnVwWVNndlJ0cFRTY2tsald6SGFnanBTUmRyNHZMdHZqcnZrMjd2ZHZkMUxqbjdQekROM3QvZCs3L3QrZjgvKzc4YUswTkRhYXIycU9kWFpvcVd5SDlSMGEwRmN0NjdXZEhHVFpvalZDY1BxU2VqVzFvUXVIc095L2VCVHNEbU0vNTRaVDlqK0xXR0lnN0RmQi9zQmNEUHNmNFhmUDhYM2IydUcxWkhRelU4bVV1S2R5V1RIbTVxYWNpL2pIQUtCeWlmMGJCcitMd2FYSVBZUGtNZHFmTDhYZFdwbHMxQUEzMS9Rak93OThMOFM5YjhCWElSMituRGM2RG96bHNrMHNsbmtRTXhrUEdYTzlFSnRWbllHRjRzVXlWbmQ4VVRhZXA4YncrNkxha0JqNWl6ZGJOSlMxcnhFV255V3hnMzZFbVBkV29QUERlamY3ZUFUR01zSGFEelR1QzZoYmowTi9wWG1Bc3J1Z3MwV0xQOE51QkpqWkptV0VsY2wwOW1QSjFKbVcwdEw1K3VpSEJ1R2tYc2xqWDg3bmk0RXpWbms5QXZrc1FuNTdFU2RockI4Qk11UGpPV1AvLzRPSHNSL2U3RDhZZFRsZnRSaEZmZ2RMRzlIdTF3QWZ6cjU1akFPa2lRS2h2VmJHQjZDMC8vaSsyaU5lUng4RmdudlJmeGZhaW56U2s3TkUwaUlVUGJmNDN3V21OVE5kN0JwS0VBN0xaZkZBWTl6cDN5WlRTTURpUVZpL1UrU2c1UVlBSWZPbUcyZXdzVWpBL3JoVzdMNEJlcm1qOWgwVW9CMk9CK1RaVFc0Qi9rOE95Ry95Q2lPb1cxSVlINkg4WFB6OUxiY0t6aWxRR2hwTVp2aFp5SEd3RzNnNDJCazg1WjhvOTBHOFgwTmlTczFJdjJRR2s4S2RXc3p0NHNuSVA4UnFSOW1EUVhESWRaU2JCb1owSWwzUzJPWFpYWXBGNDhNVTE0d25LMWJlVzQxcEwzRkVRQ0psUFZXdERHMmZ1eVZyTlIzdEJUZFNqQjhZcklGb3lWdG5vMk9DekJneEROQkI2cFhLTUh3eGlEOWdLM0tjNlBja3ZCR0pSaStNY21DMFlENGZkSzRYb2g5Vy9ZVENaUmdlS052d2Noa0d0RzJlMlcrYWtzbEdMNHhtWUpCYXhscFRJK2tOUlFkbUdSM29VTUpoamY2RlF3NmNDcnpVM3RDTUxEV3VRc2QzUitBdzNLbkJRNUt5bmpoamR4T25uRGlDRVp1R2pyc1lXbE1KdHBpV1VLM0JtVC9GZkV1ZGhnNlVQZTZGZ3owYlI2ZmE2TW1uWTNrbER3aGFZakxVVTZlczI3dDBnenptN1ZnVXU5NkQ2ZmtIeENhNjJVVkdDTXE4ZzAyalJRbmltQm9SdllpYVR3bTJudGZXOXZDazdXMGRZSHMvd0oxNjNrNmVNWnVRMFc5Q3diRzlLMXNPcVdBdklVMFg1dGlEWnROYlNqQmNHRUVndEhXZHN2SjhFMm5BdVV4aWJwNWhXTTkyb0RmMnliOFgwS3gzckVORjBvd29nSG0waEpwdmphVllQakNpU0FZaWJUMWVXa3NKaWJDay9QbTVVNWljOHJ4UXBsZE1SUHA3SGxzSGhxVVlFUURKUmdoNHNVdUdIU1JEK3BJVitUSjR4SDFMRzlkakNIVGlNbFI0VmlHMkU3SFJiaEFLRkNDRVEyVVlJU0lGN3Rnb0oyejBqaE10SE9lamwyd2VRRlkvbEdaZlNuRmZEWVBCVW93b2tIQ01CZEw4N1dwQk1NWEtncUdJUzV2VHB0bmgwWFUrMDVabkFKREZBekQ2RGdkL3A2V3htSEdEZkZGTmgrSDBRYjB3YU95TW1PRStPVU5JL2NTTGxBMTZsMHcwRjY3NDdxNHBScEdjZHFhN2t1UjVVdEVINDVnRG13S2kvRFpqOC83SUVTMzRyT3plYWFZeldsVWgzb1JqSm96Uk1Hb09BRU5hMGkyZFRHR2VFcDhURkptUER2WXZHclV1MkNFUWJxaGtzT0ZCc3lsaTJXeGFzVGo2TmQxMnBzWHY1N1RDUVlsR0M0TVNUQmFXNjAzb28xZGI2cXpxVnRmWW5NNTZBcEJ3OW94b1Z3Uk1ZbEdOSzM5MVZ5aUtpakJpRVl3bWxQZExiSll0U1RhN3FIaUErdStvUVREaFNFSkJ0cHZoZFQvR0hXeHY5eld4UmkwdFBpRXRId0p4YlZzWGhXVVlFUWpHSFJ3R3VPaDBnVjVrVE9lTWkvaGhQeERDWVlMUXhDTXMxcXRWZ3p1OHJldnB5eVBqd0h3c3BWaC9TdVZXaktkQ3dTR0VveW9CQU81cDgzM29wK2VrOFdzRmRGK3dhOFNWb0xod2hBRUEzN1dUUEJiUkhUY0FleEd2SlROSGZRTU5jZjZCcytQOWVibnhmcWVQSldYMmtDWnpIZ2ZFeGpDR1FJbEdORUpCc0YrRUpFdWRzdmkxb2JpVDV5S2Y5U05ZT2pXWmpUeWZhSFJ1ZDlBSG90WXBXQTROeHFKWTFMZlROVDVLMndlaTYwZk1pQVVENEtqQmZibWo4YjY4c3RqMnc3YUQycWhmVS8weHk2WnJ6SFMycXVscFRObCt3eUl1aGNNakJVNjYxUU5tMmN1UG9QRFJZVFJCanBiUjJNQU9WOUhaek9ROTgvdy9mWXdpUEh0ZmplMGJ2MkZrL0NQZWhHTU9yc09vL0x0NjdvMVhEZ1Z1aUUvQndMeGp4S3hLT1hHMk02ZHRpMzZ3OE9SZG5HUDdUY2drRnVkQzhiVXZBNmpsa2lrTzgrVHRnMklNWFNZemZ4RENZWUxxeEFNTDdldm83N3R0bkYvLzBuWWt0Z2hFWWx4SExxYXpKMnRqRXFiczlpeVNXWG4ydjREUUFsRy9hT3NZQmpXQVRiekR5VVlMZ3dzR0xscEtMdFY2cE5KSFZaNFlITGYvbmZKQldJQ2gySGRRRVhpNmV3bE1yOGxkSjVIWXR2N2hSS00ra2M1d1VENzdHVXovMUNDNGNLQWd1SHA5R2RLWE1YbUVJeDh1MFFjWFBqWWErMHltVXdqMnV0eHFlOGlvbzRYMnZZK29RU2ovbEZobCtTUGJPWWZTakJjR0VBdzZIb0s3QTZVbmNpbzU4R21wc3RlZUIxRDc5Qlg1ZUlnNGYzRHAzT3BHT0xNbC9rZnh4Mnh6RnJmajhWWGdsSC9xTEJMc29YTi9FTUpoZ3NEQ0VZaVZmNzJkV2JwSmR3OSs4NlJpc040OWc3dWgzVmhGNFBGNlFtSi8xTHExZ0l1NGhtVkJBTVQ5dTd4NzB3SmcvVFlmVTZoTEpSZ1ZFYUZYWklIMk13L2xHQzQwS2Rneko1dG5nS2ZCNlMrbVBqLzBJd1pIUy9uSWc1R1J4c2hCZ05Ta1NqbFlpNVJBUHJ1VWxtY1ltSnkvWG5HM0hFeEs2RGlGa1pFeEJqWXlDbVVSU1hCUUR1UG9BNWJvMmJTeUw2ZFUvSUUzaXFVbmdZTm0yZ0QxN04wK0c4VnArUWZTakJjNkZNdzRycGxTZjBVRVRGTk5pOUZ6L0RNV0cvK2lFUWtIUGJtTjhTMmJadDQrYmh6ajBuNUozaUJkRnMxbC9BRTFMMnVCYU5XVE9yaUE1eVNKeUR2NzhyODFKeWVyeTZXUUFtR0MzMElSdE9jM0dsb3A4TlNQMlBVeFZObDEvVHI4cTJ4dnZ4NjhQa2lzZmduZmw4ZjZ4OTBmUVVsNG41R0dxK1l1amh5NXF6dTEzQ1JpbENDNFkxMUtSajBXa2d0Ri93bVJTVVlMdlFoR0Y0bUdBYUxZUFB5MkRnMFBkWXo5SDdzcHN5TjlReFVmQzBpWGZ5RlB0b25pMWxNR3F4Y3BDS1VZSGhqM1FrR3hDS3BXKy9tZElKQkNZWUxQUW9HdllRYTl1WGY3MWxwNjZKS2xIdDgvUXNVUiswWFRYdUFFZ3h2ckEvQm9MZnIyUWZIci9HemxlbUtLU01ZdW5rSFRTekVsTDQrc0ZhQ2dmbytCKzdXak96bjJMUXNuTmNHaUQxVVR1YlBvZG5GNXBHQXpwZ2d2dXRXQnVyNkg3dE91cmlVaTVRRlhTV0tNdC9IQk41RWF5WFVyK3c5TWNFcGp2R0s0dmZJYndWZHc4SXBsQVdOQlpTNUR2V2hONVhuNGVkb3FkOG9pRnl4MndrK2l1LzBJdWlsOUt3VFRza1Q0bWx4RHRyelJtNVhqUFVvMnBYZTZHNDlnanh2dytmQ2hOR2hjZmh3UUM5amFUTEVHOXhvR0ZlV3ZpWStVdVNtMlErY29YZHk2TllpTk93eVZQckhHQmgzSm96dVVDc2VUNW1YUWZGL2poZy94T2ZYTmQyOGdqbzBhSDNwTEFsTk5HZHRMNVlpNTV2UWdiZWo0KzZnLzlnc01xQU9IM0hhU2Z3RWJYY0R2bWVUaHZVcFRlOTZ5NFF6TTc2UW05WTBaOUZwZFBjbTZ2TnBzQXQ5c3R4cE8rdlg0RWJFMjBvVENjc0dTb25sK0IvZjZXYS9WY1Y1MGFTUHg3dE9EZUVCeGcxMHh5K2Rrb1hnZkFneEZpRGUxOUFPMzBNL3JFUU85eUxtQTRpL0JiKzNsK2Jua1BJSE40UHJVTCsxK0Z3QjIydmhveDFpZjFHODFYcGJ2QTI1WmpLK3IybHhSMjRhMWQ4UlB6RWZ1d29XY3NFV2lKTXpZaitJM3crVnRLc2hIZ0gvQVBaU25xalR6Zmk4eGg2N3VuVXVQZHJBMjhOeFlySC9BejN0STRqNStUT0xBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMSIsIkZJRE9fMl8xX1BSRSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJtaW5QaW5MZW5ndGgiXSwiYWFndWlkIjoiMTQ2ZTc3ZWYxMWViNDQyM2I4NDdjZTc3ODY0ZTk0MTEiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjp0cnVlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsIm5vTWNHYVBlcm1pc3Npb25zV2l0aENsaWVudFBpbiI6ZmFsc2UsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjp0cnVlLCJhbHdheXNVdiI6ZmFsc2V9LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjk2LCJ0cmFuc3BvcnRzIjpbIm5mYyIsInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XSwiZm9yY2VQSU5DaGFuZ2UiOmZhbHNlLCJtaW5QSU5MZW5ndGgiOjQsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjo0LCJjZXJ0aWZpY2F0aW9ucyI6eyJGSURPIjozfSwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjEwMH19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTA2LTE3IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjYsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiZVRva2VuIEZ1c2lvbiBORkMgUElWIEVudGVycHJpc2UiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI1MDYxNzAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTExLTA3IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjYsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiZVRva2VuIEZ1c2lvbiBORkMgUElWIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNDExMDcwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMS0wNyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjo2fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTA4LTA2In0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiNGIzYjgwYzNkYWIxM2RiYTQ4YmUyMzRmMzA0MDBiMjg0ODNmNmU0MyJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyI0YjNiODBjM2RhYjEzZGJhNDhiZTIzNGYzMDQwMGIyODQ4M2Y2ZTQzIl0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJJRC1PbmUgQ2FyZCJ9LCJkZXNjcmlwdGlvbiI6IklELU9uZSBDYXJkIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjE2Nzc3MjE2LCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjJ9LHsibWFqb3IiOjEsIm1pbm9yIjowfSx7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUMzakNDQWorZ0F3SUJBZ0lHQU9xMEFBQUNNQW9HQ0NxR1NNNDlCQU1FTUlHUk1Rc3dDUVlEVlFRR0V3SlZVekVMTUFrR0ExVUVDQXdDVmtFeER6QU5CZ05WQkFjTUJsSmxjM1J2YmpFdE1Dc0dBMVVFQ2d3a1NVUkZUVWxCSUVsa1pXNTBhWFI1SUdGdVpDQlRaV04xY21sMGVTQlZVMEVnVEV4RE1UVXdNd1lEVlFRRERDeEpSRVZOU1VFZ1NXUmxiblJwZEhrZ1lXNWtJRk5sWTNWeWFYUjVJRlZUUVNCTVRFTWdVbTl2ZENCRFFUQWdGdzB5TkRBNU1UZ3lNakF3TURCYUdBOHlNRFkwTURreE9USXhOVGsxT1Zvd2daRXhDekFKQmdOVkJBWVRBbFZUTVFzd0NRWURWUVFJREFKV1FURVBNQTBHQTFVRUJ3d0dVbVZ6ZEc5dU1TMHdLd1lEVlFRS0RDUkpSRVZOU1VFZ1NXUmxiblJwZEhrZ1lXNWtJRk5sWTNWeWFYUjVJRlZUUVNCTVRFTXhOVEF6QmdOVkJBTU1MRWxFUlUxSlFTQkpaR1Z1ZEdsMGVTQmhibVFnVTJWamRYSnBkSGtnVlZOQklFeE1ReUJTYjI5MElFTkJNSUdiTUJBR0J5cUdTTTQ5QWdFR0JTdUJCQUFqQTRHR0FBUUFsY1RZc0NWMkx4dXdLOFE1UEsrMDMvd1NBUFNwUVpSNmsxMlAycHFmQjFwN00zSlVmVXd2ZW1pdG9oS0pZMkVlcFBMYWRJaXd6MmdWYXJQQjZNRmMvSDRCUm12NXljVVloV3dKeVBpUmZxRkpRcmNuT3IyUW1HVW03bi9HWmhRS1Z6NXVyOEw3Tk9wbm9udnhjdWhjZXVqZWUxeEhwSVUrV3J5Q28yaHBOZlhvWWlLalBEQTZNQjBHQTFVZERnUVdCQlE3VmpsTDNhZ1NUWHZWQUZ5S2I0R0lFY3Awd3pBTEJnTlZIUThFQkFNQ0FQOHdEQVlEVlIwVEJBVXdBd0VCL3pBS0JnZ3Foa2pPUFFRREJBT0JqQUF3Z1lnQ1FnRStmYmJKRmNYaUZnUVpiWnIzeFFkVVdTbmdnMWhOcmtIRkhoNVE2UkVIWEhFWGF5eCtJbWYwMGlQb05wQUU2YzltQ1NUVmVXQnNHT3FEUzRCMzZSVlFvUUpDQWJYd01EK2wxRi9Mc3hSQmU0KzBNSGh3cjIwdjZoa20rczJLT1ZVcjJuK0lBejJjZ2hDQ2xMT1RkWFh2UUdsNDY1M1hYM3Z3WDlWcGd5UlNVVDF0aGlleCIsIk1JSUMyekNDQWoyZ0F3SUJBZ0lFNnJRQUFUQUtCZ2dxaGtqT1BRUURCRENCa1RFTE1Ba0dBMVVFQmhNQ1ZWTXhDekFKQmdOVkJBZ01BbFpCTVE4d0RRWURWUVFIREFaU1pYTjBiMjR4TFRBckJnTlZCQW9NSkVsRVJVMUpRU0JKWkdWdWRHbDBlU0JoYm1RZ1UyVmpkWEpwZEhrZ1ZWTkJJRXhNUXpFMU1ETUdBMVVFQXd3c1NVUkZUVWxCSUVsa1pXNTBhWFI1SUdGdVpDQlRaV04xY21sMGVTQlZVMEVnVEV4RElGSnZiM1FnUTBFd0lCY05NalF3TnpJME1qRTFPVFU1V2hnUE1qQTJOREEzTWpReU1UVTVOVGxhTUlHUk1Rc3dDUVlEVlFRR0V3SlZVekVMTUFrR0ExVUVDQXdDVmtFeER6QU5CZ05WQkFjTUJsSmxjM1J2YmpFdE1Dc0dBMVVFQ2d3a1NVUkZUVWxCSUVsa1pXNTBhWFI1SUdGdVpDQlRaV04xY21sMGVTQlZVMEVnVEV4RE1UVXdNd1lEVlFRRERDeEpSRVZOU1VFZ1NXUmxiblJwZEhrZ1lXNWtJRk5sWTNWeWFYUjVJRlZUUVNCTVRFTWdVbTl2ZENCRFFUQ0JtekFRQmdjcWhrak9QUUlCQmdVcmdRUUFJd09CaGdBRUFKWEUyTEFsZGk4YnNDdkVPVHl2dE4vOEVnRDBxVUdVZXBOZGo5cWFud2RhZXpOeVZIMU1MM3BvcmFJU2lXTmhIcVR5Mm5TSXNNOW9GV3F6d2VqQlhQeCtBVVpyK2NuRkdJVnNDY2o0a1g2aFNVSzNKenE5a0pobEp1NS94bVlVQ2xjK2JxL0MrelRxWjZKNzhYTG9YSHJvM250Y1I2U0ZQbHE4Z3FOb2FUWDE2R0lpb3p3d09qQWRCZ05WSFE0RUZnUVVPMVk1Uzkyb0VrMTcxUUJjaW0rQmlCSEtkTU13Q3dZRFZSMFBCQVFEQWdEL01Bd0dBMVVkRXdRRk1BTUJBZjh3Q2dZSUtvWkl6ajBFQXdRRGdZc0FNSUdIQWtFR013OGNYQkl6cG1CYVhMcTFiRnNMaXVBOHRWY0ZJT3hqM28yYTAzZTlzcnNrQ21MWjBwMk1ZcU1nVDFJcFZUYVRVcmpTZ0hpbmdSZmZzWVBmK21uY3FBSkNBSWwyV3J0Z3hWUU1BV3dkK2UvWENSK1VaNWtwbVBocEc1amRlZmhuS0hOaEgyMGNXbW5hL0s2Nkl5OFg2cHE2WVM1bk5RZ1doSzN0QlBmNTdDVXRrREpuIl0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQURJQUFBQXlDQUlBQUFDUlhSL21BQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRmlVQUFCWWxBVWxTSlBBQUFBb3JTVVJCVkZoSHpWaHBjRlBYR2RYeW5tUXRYaVhMKzBJYXNNSEdPd1liRWxKS2dFa0NBYVlNMDB5Yk1tbExLQU5objhuQ1pnZ3A1QS9VaEk0emhORFNhV2NLSkd5Rk1LR0JOSEh4Z28xdEdiTWJiL0sreUpZbFdjdVQxSE4xaFZCa1c5SVBZbkxHNHpudjNpdmQ4Nzd0ZmxkOGg4UEJHNFhHZTExMWxacmV6bUhPWnVmelhZTlBFdzRld3dwakVrS3laeVhGSnlsY2d4N3dsblg4OEhmSEQxMDM2aTBTS1NzUUNuNFVUVTVnV3h0bkh6RmFJMVRTOVR0K3ZtUmxybXZDaVNleUJyWERLK2FVR0hUVzRGQXhCTkhCQ1lETlpoL3NOeVpQaVRqNTN6VThucEFPdW1SMXR2Y3ZTaTlXeFFURHRuUmlnbUUyY1VhanViUjVHeU1VNDVIS3NzOU8zaStUaVlYTXhCbHBOQ3htVGhiTW5yK3hFWnpvK0dEdGFTSHdURFVCSWpIVDIyVTRmdmdhT045Z01NeE8vRGdxTm9ULzQ0VjN3TERiSGJyQmtiSzJEd1FYVDZsbDhxQ2ZnaVpBSU9EYjdieks3KzhMcDhRczdHelRQWE1QUG9IREVhNlNDam8xdXNETEFZeU1mTVlmelYvODkzeDBMd0RvbytPSDZ3TUJ4SFJwaGdSV0N4ZWdBN0Vsa2dVVlZpeG1lSHlTd3B6VkxnQVFBYzVITEJBS3lhUER3U2RTN0E1RU1aNnh4RFRDQmFnTVgyV3hZQmRlUUtMd3BUMmR1clBsNnkvWGI3NVF2V0Y0Y01ScXNUMlhvcnlzM29RUmhVcUdrbTBZTm0vWnN4Q1BYOS9hck8wemNKdzlQam44c25vejFpeDlJOGVnTjd1K3l4LzRlQkVYOVFmVGlQVzFsUm1oRVJMd05VdFBpSU1ZbUdwNlhqeWRmWFN2RjNaaVJjSnZ2N3BEUjhJVVVxR1FYMW5hVlBiTlF6eHVMSnB2NDRnNTZheGZDQUpaQ0ZQMTl4aUxpcGVCTnovc3F5aDlKQTVpclZZdUxUTU9JMjJQK3ExV0cxL0FaMWhCUTEySDh4Tzh5ZE9pWUswSWhheG80M2s2OHNkM1g5THJUSlQ3Z3owZ2ErSGsvdTI2QW9HUXVIdjcyMmNVa1RLUUVZTTF0ekFaUkYybEVZa1lFQmlzbzJVSUJFalBqb05XSlBqZ2dQR3JMK294OHB1MWhmaThPeHQ4d2NGRGJQa0JpWFFMdDNYZkl2RHEwcFk3OVIyc2lNR2dQRGdvVkVGOFduMjlGZTREUWJRaXpoL2U3Z2JQbVpXTTRBTUpDWmZzMzNZSkJOaDVhTW5nd0FqbHZ1SGZpYkQ4NnMwdlViNW55N2tJSlRFVng5bFNNNkxwNE8yYjdlempBeDVtVTkvUWdHVE9USUE1UVdCQ0syZjdSMGtaK0lKbDZRcWxITTRsUzMzQ2p4UHROanUrOTYzTmM4Q3ZuR3ZvYXRQUkZvT3oyTE5tSmppWDhPN1dkd2xaMS9mQWJEVVZyU0FTR2F0VXlmQng4T0RRb0UvMlhYWE84M1lYdjQ0a3Bkd0gvTWdhR2pSdCt4TnhIN0JudzRVd1p5WUNjQ3ROdzVZSEE0em9TWldCMldyTGlTeGdhbVlzTlF4S0Y3TGg0STRyNFBsekowMUppNkwrOVFGZnNsQVNaVExSNHBWWjRDYy9yMFQxcHVjQi9NNVpiSEFUZUUxRlU1Q0VKYXVkUUl5M05nMVFucG1mNE41ZUpoZWZPRkpLZWRIaHBmMDl3NVNQQjEreXRIM0dQVWRJVVFBTzdiNENYMUJPeW5jUUV4b21CYitqN29JbDZEZ0ZwdTQzZElGTXo0dURVZWtnc2lGVUlkMjEvaXo0NUxTbzNNSkpPRERvMUpnWVZ4YlNPM215WXZiODU4RS8rZkFiMkFtK29GTTJ6cGFTRmtONVRYbUxPOTRwVUducmJyU0JaT1Fub09TNnp4d1k5Y0kvYXdlNlNXRHRQN29jaGNQSGNUU3VySUZlZmRHZmwxSis0c2gxZVREcFpTbXMxaWZ4amtLRm5LQ2NBaXJWbFVTV1JDTENuM3RyR0N4TUtkMjFnUmhNR1IweTc3VnBhSlRwMUdpTUxRc1d4bFZwV2s0cytKNTN6aU90OEtWMENzQnNWbjRpU1BPRFBwUEppdnBPeHluZzA5czFuWlJuNXNGZ1Q2SWJKL2YxcXc5Ykd2dkI5LzFsR1c0VzR4bHNERmxZaVZwMTRMTmZndmYxNkUrZnFKSklSWFFLY1BBY05xczk3NFVrOE9yU1pzOTRwNER4TkMxYVdocXlDeElSREhRY3dMdUZLMlRiVnAwRVJ3aitZZXNMdUpEUktTK01hUzBIUHErTUNnYnJhTkhTem9WT0VEaDRmQUY1YjFDRDNnSStHdWdtME1tQXlFUEZYdmJBQ1laMml2TDQ1QWdrTytWZUdPTmJJU0pJeXU1WWV3WThZMFpDL3B4SlpvK3NvUkxWbGFTVTV4WW1tWXplOFlGektUbytSQ29uQnE0cWJmWktDR1QzL3FQRUQ4QkhXeStpY0ZEdWhiRmpDNjc1OTc5cUIzcEoxbncwS212RUVyYnFmODBnYWJseDZGNjg3SUhzUXdtZ3ZMYWl6ZlBpQ1lkT1NsRVdPck83dU9nL3JKZzBqWFRLQzJQTElrR2dsTzFjUnd3R2J5NVlra2FkUW9HZGJsVzNVNjZLQ2JIWmZpQUxlK2NVa01pRFhPMkEzbk5qdk9mdWc2K0RvSlA5ZTBrWmJxWjBmRFRHbGdVZ2VzcXVOaUxYd0ZHWDBZNjZyY0t5QXZWTjRrUWdNei9PTTljQXE1bEx6eVhuVWtOTnU1QVJ1dU1TK1p0YjRNcnV2WnN1U21VaXJ4VDJ4TGl5cU1IZSsvMXBjTEdFZVdQTlRLUEI0cDVDcXFJTkJFL044SmFGNU1xZVNjcEhYVVdieU5ud0FIaWwvaDQ5NGdIY29ET2YvdXNORkIwNk5TYkdsUVdnSGJoL3A3dW1vZ1Y4eTk1Rncxb1ROUmhrTVl3QWNRT09xUGVzaXFnTFNoVkpZUUFkRHUzREFLeVo5OHJVeUtnUThCM3J6aWlqNUw3dkVMNWtBUkdSc3FMMTV5amZzSE8rYnNqVjljTEZOTHhTTTJJOGt4R0JsVDNMZFFEY3FtbW44WTZYd1YzNXd4Snl2R3FhdE5jdTNxWDF4UWY4eUdJWVlVZmIwTmRmTm9DdjJqaEh4QXBwcFdIUVZ6MXVZSEIwb2xCUmpuTUpOWVh5anRaQmVpNk5HQ3dyM3BvaGRkYUM5OS8rSWtJbGN3ZmNlUEFqQzhBZDVzQjJWOWY3enM2WGRZUEVZSERpM1ZyWGJTSTlLdzc5SitVV0U1ZnRQQzVyeXpXaUlKZXBVSFhmM2Y4S09KS2dvYTVkeFBveEZlQmZGdDdZT0d3NWRhd0tmUG1iT2FHaEV0Z0dnejNkdzFZelVaTXpPNUVTS0FCU3MwaXUxZDFvRllsSlVPdDE1dFZiNTRJQVNDRGNoUUs1bVBxWEJZU0VTVDUrMzJXd1hZY1hhd2RJbWNWSmNMT00rSEY2WGdMdHErdzJoekphVHN1NnVxb1ZkUVFWSDBtd2VodVI5ZTJsdTEwZHJwN2JMd0tTaFpJSUVTVUh5QzlQaGZNbXg4YUZveWdnYk5YVkpCbFRwa2RqQWV6a3ZIZTQrckI3dDdvUmwwUGFrVTI3RjlLUkErOWRDb3NnbldNZ0NFZ1dnTVByMk1IdktmLzA3SnR3RFhadHFIRVYxZGpFTUpnS2FmamlMMUxvU0UrSERyVWtMakZzeGUveThQamwzNnExL2NiQWZ4ZmkvM3BoU2JkRzc5WEtqUWswNWdxVlBEbzJCTlcxdnJvZERnTFNTQ1R4bXgvMkdnMVdKR25TenhSb0dGRlJHKy8yUUlRcUpoaG5GL0t1dmtxRHgvRk9RRTlZekxZWkw4YnpWNzE2dEwxcEtNRDNnSnRnRlJEVVNXd0dXZlFTZ1lpaFc4SzVrSXNwV2tnaGxOWU85d0svd0JsVk1DOUpvSXlTZVoyMVBnREhJYVR3UndzUC90Tkg5NWJZSG8vdTRnNG5lQzN3Qzd5Mklrb21tSm9WNWRsQVBuUGdtRXJMalJYTVg1eHFHRGJESGE3aFp3cWF6bk1YVGhFa0pzZG16WXBHb0xsbW5pbU1ldXVydjBvVnN6SVN0aHBOeDlLOHo1U1JjaDhOMEFTQTNBQk1sc3NONjZSQndTakU5dmo0MkwyZkx1aHFIMFlTdVpaTU9KQ3pmVDJHNGxQTG9Ba3lVQmY0eU9wRlMvTDNIVnVnMHhvUmNSTWNaOWh1eEdBMW15d2xGNVpuWktWQURCOVhMNXhaS0RXNEYyQytzYkdsdU9pYXVyd1BGM2JjUXVIVHgwNTl1czRscjQxM2gxVlE5bXljcldCQjNQcnQ4MVdSa1FLR3p3akpUOVBPWDZwNURqdG5SOVJqa2RsaWJueWdxZnl1cWZtQlZqOWtocitkcG51cTluTVdQWlRBa0hEeDgxT1ZNK2MrbDVBWXc0cFlkTmlzbU1GVmlzZmoveC94cU9jUFJkU3Zhd0FBQUFCSlJVNUVya0pnZ2c9PSJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTA5LTA2IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjE2Nzc3MjE2LCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IklELU9uZSBDYXJkIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVMkYxMDAwMjAyNDA5MDYwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblByb2ZpbGVzIjpbImVudGVycHJpc2UiXSwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0wOS0wNiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxNjc3NzIxNn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNC0wOS0yNyJ9LHsiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjBmZjFkMTMwNmFkYzhkZmJhNWZkNTkyMWZhYjBlYzE2MWYxYjEyYmIiXSwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiMGZmMWQxMzA2YWRjOGRmYmE1ZmQ1OTIxZmFiMGVjMTYxZjFiMTJiYiJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiWXViaUtleSBCaW8gU2VyaWVzIn0sImRlc2NyaXB0aW9uIjoiWXViaUtleSBCaW8gU2VyaWVzIC0gRklETyBFZGl0aW9uIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NiwicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoyfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCIsInJlbW90ZV9oYW5kbGUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlEU0RDQ0FqQ2dBd0lCQWdJVURxRVJ3KzRSbkdTZ2d4Z1Vld0pGRVBEUlozWXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFESTdYbkgrWnZEd01DUVU4TThaZVY1cXNjdWJsdlZZYWFSdDNZYmF4bjlnb2RMeDVzd0gwbFhyZGdqaDVoN0ZwVmdDZ1lZWDdFNGJsMXZielVMZW1yTVdUOE4zV01HVWU4UUFKYkJlaW9WN1cvRStoVFpQLzBTS0pWYTNld0tCbzZVTGVNbmZRWkRyVk9SQWs4d1RMcTJ2NUxsajV2TWo3SnRPb3RLYTlKN25IUzhrTG16WFhTYWowU3dFUGg1T0FaVVROVjR6czFidm9UQVFRV3JMNC9KOVF1S3Q2V0NGRTVuVU5pUlFjRWJWRjhtbHFLMmJ4Mno2b2tWbHR5RFZMQ3hZYnBVVEVMdlkxdXNSM0RUR1BVb0lDbE9tNGNycHduRFJMVkh2alllUEdCQi8vcEV5enhBL2djU2N4andhSDFaVXc5Ym5TYkh5dXJLcWJUYTFLdmpBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlRxdDBLUW5neDdaSHJiVkh3RHVueE9uOWloWVRBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBcVFhQ1dNeFRHcVZWWDdTazdra0ptVXVlVFNZS3VVNitLQkJTZ3dJUm5sdzlLN0hlMUlweFowaGR3cFBOaWtLam1jeUZnRlB6aEltd0hKZ3h4dVQ5MFB3M3ZZT2RjSkpOa3REZzM1UFhPZnpTbjE1Y0ZBeDFSTzBtUFRtSWI4ZFhpRVdPcHpvWHZkd1hETTQxWmFDRFlNVDd3NElRdE15dkU3eFVCWnEyYmp0QW5xL05EVUE3YmU0SDhIM2lwQysvK05LbFVyY1VoK2o0OEs2N1dJMHUxbTZGZVF1ZUJBN24wNmo4MjVycURxc2FMczlUYjdLQUhBdzhQbXJXYU5QRzJraktlcnhQRWZlY2l2bEZhd3AyUldadnhyVnRuM1RWMlNCeHlDSkNrWHNORDA1ZENFclZIU0pJcytCZHRUVk5ZOUF3dHlQbW55YjB2NG1TVHp2V2R3PT0iLCJNSUlEU0RDQ0FqQ2dBd0lCQWdJVVVjbU1YelJJRk9nR1RLMFRiM2dFdVpZWmtCSXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFEbTU1NWJXWTlXVyt0T1kwcklXSGxkaCthTmFub0NaQ0ZoN0drM1laclFtUFV3MGhrU0c2cVlIUXRQK2ZaeVMzM1ZFcnZnK0JRcW5tdW1nTmhmeEZya3dFWkVMZWlkQmNDOEM0QWc0bnFxaVBXcHpzdkkxN05jeFlsSW5MTkxGY1pZLytnT2lONlpPVGloTzUvdkJaTWJqOXJpYUFjcWxpWW1OR0pQZ1RjTUdhRUF5TXpFTU55Mm5tNkVwK3BqUDVhRjZnaTIxdC9VUUZzdUoxajJSai95bk0vU2RSdCtlY2FsNU9Zb3R4SGtGYkw5dnZ2MkEyT3Y1SVRaQ2x3NGJPUzlucHlwUWltT1o1UUFZeXRtWWFRcFdsL3BNWXo2elNqOFJxa1ZETkVKR3FOZlRLQTJpdkxZd1g2bFN0dE1QYXBnMEo4NGw5WDB2b1ZOL0ZwUzRWQ1ZBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlFnS0ZBaEc2UmFXK2hUeTUyZHhlVDhiQzk2SHpBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBWU16Z0xySkxJcjBPb3ZRbkFaclJJR3VhYmlIU1VLU21iTFJXcFJrV2VBdHNDaERFSHBYY0ovYmdETktZV29IcVE4eFJVakI0Q3llcFlldmMzWWxyRzhvN3pIeHBmVmNhb0w1U2V1Smt6SHhLbjRiVGFTcDkrTXZ3YW1ucDY0a1pNaU5iRkxrbmZQOWtZS29SSGtNV2hlUkoxVXNQMXo0U2Nta0NlSUxmc01zNnZxb3ZxaldDbEZzSnBCY3NsdVlIV0Y3YkJKMW40UndnK0FURW9wWTRJZ0d2Nlp2d2MrQTlyK0FUMmhxcG9Ta1lvQWwrQU5Zd2dzbE9mOXNKZTBWK1RBOVlZL1VsYUJtUFBUZDAvL3I5d3ZjZVBXWmtQaktvQUMvelVOaGZEYmg0TFY4R0hzM2x5WDJYb21ML0xOYzhKWXp5SWFERWhHUXZlb1BoaC90cjFnPT0iLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVIzOG1xMjZTZjJzelZWMkJkRzZXRU43a3VXVXdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFSWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFOWTBXYjlvUG9Sb0tvUXlXUGFKcHoxMXZyV1RnNnpUdG1OajJWb0tSbnl2S0dScXB6YjgzdzVsNllBOTZVWWtZQkRRUDBpbE8yRFBlNndXcVZSNXpEZlJ6ZGNIOGJoK0w3ZEdHdmFlNmhSVFpoa0ZrQ3BYRHM0SGNja25yRGY4RkNsSjdIZTM5SmY0Mi9HMVFtMnp6OVdXbXJQWHRnaUsveDA1R2pzUWZHdURHMXpmNVFUVVVpZThsd3ltSzNUZmRPdk5lZUpBQVBlMnBuN0l0ZlJiK3JWck5XaUR6bFJuMnZObloyd1BvNHdIL1dKNmRoWFpHK3JNV1QrYTZCb2NnMVVmSXc2a2R1bkc0YlRwWnpzdmFjRll5UjBtcGYrRGVPbnBTV0FteXdKV0h2VGxmMllYeEZ5ZVhjVEFDZFFsY01OR0oyVmhaUTQ4eHRQNS9SQlAvOGtDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNoeTQyb2tpcWNUUzFpcWEvSFJXamtCbjRIL01COEdBMVVkSXdRWU1CYUFGT3EzUXBDZURIdGtldHRVZkFPNmZFNmYyS0ZoTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBbitSSElQYnRNRUROZFQxZzhIL1JpdEFrVWRMZ0F0MXRXR1dubGo5a25idjQvNEdsWDdDOXA0NWVmUE85L2FaTDZPVjFYUktCaTZLbXRCVzVLN251WUVuTXgvNUJxQlNiTFQ3cmhkdUM0OVRCZU1iOVBIZFhzVGxTVk5ZZWZyMWRHaWRyNGoweFZCUUxiMXJrbkRBYmRXRHpLZnZuYXlLTzhGcndlN0h4ODQzTUcvckorYzBYcnVVdmJmVlRDSExpSVdoTTdvTkRoTDh4b2I2eFVvOUtMS2NTTCtJdFlzTzMvOVdiOFE5R2pzcUw0RlhzRGNHMVNhWWg3S3BmdU1tT2l4cXpKWk8ybklpY1BZUmcxSTJTdWlVZllPNzB0bWRIY2JsK2tTUW1TWXQ3cnE0dmlJTGcyR3gzajlySVR1V1RqYmFVYVNTUXhnT21NU0h1eXpNQUMiLCJNSUlEUGpDQ0FpYWdBd0lCQWdJVVh6ZWlFREpFT1R0MTRGNW4wbzZaZi9iQndpVXdEUVlKS29aSWh2Y05BUUVOQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU1aNi9UeE04cklUK0Vhb1B2Rzgxb250TU9vLzJtUTJSQndKSFMwUVpjeFZhTlh2bDEyTFVoQlo1TG1pQlNjSVpkMVJueDFvZDU4NWgrL2RoSzdoRW03SkFBTGtLS3RzMWZPNTNLR05MWnVqejVoM3dHbmNyNGh5S0YwRzc0Yi9VM0s5aEU1bUdORDZ6cVljaENSQUhmcllNWVJERjRZTDBYNEQ1bkdkeHZwcEF5Nm5rRW10V21NbndPM2kwVEF1Y3NyYkU0ODVIdkdNNHIwVnBnVmRKcHZnUWppVEpDVElxK0QzNWh3dFQ4UURJdituR3ZwY3lpNXdjSWZDa3p5Q2ltSnVraFl5NktvcU5NS1FFZHBOaVNPdld5RE1UTXQxYndDdkV6cHc5MXUrbXNVdDRyajBlZm5POXMwWk93ZHdNUkRuSDR4Z1VsNVpMd3JyUGtmQzEvMENBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUI4R0ExVWRJd1FZTUJhQUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUU13RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCRFFVQUE0SUJBUUMzSVcvc2dCOXBaOGFwSk5qeHVHb1grRmtJTGtzMHdNTnJkWEwvY29VdnNyaHpzdmw2bWVQTXJiR0pCeUoxWG5xdUI1c2djUkVORnhkUUZtYTNtaW84VXBmMW93TTFacmVYckowbUFERzJCcGxxYkpueGl5WWErUjExcmVJRlRXZUloTU5jWktzRFpyRkF5UHVGakNXU1F2Sm1OV2U5bUZSWUZnTmhYSktrWEliNUgxWGdFRGx3aWVkWVJNN1ZvbEJObGxkNnBSRktsWDh1c3Q2T1RNT2VBRGwyeE5GMG0xTFRoU2RldVh2RHlDMWc5K0lMZnozUzZPSVlnYzNpcm9SY0ZEMzU0ZzdyS2Z1NjdxRkF3OWdDNHlpMHhCVFByWTk1cmg0L0hxYVVZQ0EvTDhsZFJrNkg3WGszNUQrV1ZwbXEyU2gveFQ1SGlGdWhmNHdKYjBiSyIsIk1JSURTakNDQWpLZ0F3SUJBZ0lVVG5iYkdJUjJOSHZ6cUlLRkFlUXdHMVhCaXMwd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JCSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVFZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU9zWGozazA0QmFuNFRZZHRaS3FEL09QSnh5RHlhUG1DQlVGVWlhWklnVHRlWm5qM1gyNURoZ3BaWlhzQzREMHlkSWNybEE2d05VSW5PUkwvTDl6QmJURUlNQVZNR282ZzdVS0FtYjJNRjZBSGJuaFlKZDllaWt1cFZOV1NoSE5ZTmM0R0JkTzFZTjZBZlVxdkpoSGJlM1Y0U05NUG1CUkVLSlBWejdUaHdnbWdnVGU4V3MySzAvd3NxdjJ3U0U3cGJDQnNVWmhJWDUxYlpNM3BxRHdKUFRtUkZFdnQwLzZ0RzVlTzhGM2oxNE9YcWZFaG1qbjFWdnhLRFlRT0xaQXhDd3dnQzBQNENkZld2M3k4UFNSOEkzNTRoTzFZK0d6Tmp2SXFYMzhOS0x5d3VJWUhGZXJPeE5seEVNQnZGaFlCdVJ1WUFra2dVYVBxTjZVQmhzSUxyc0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ0NvUkhoaXlObmJuWFJXSUw2WkJYb0JYOVlUTUI4R0ExVWRJd1FZTUJhQUZDQW9VQ0VicEZwYjZGUExuWjNGNVB4c0wzb2ZNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUNRRmFmSkkxLzVXZzlDRUVpbUUxUlA1NFJnUXdUTlRPT1FzTEFDVGUrckl0bEZRekM5WkRoclY4Mjh5WDdqenkrQUFzcDNpeks3VDF0aDJkbDdtK3R1MHN3MlBhL29sYzAybnQ2UHlJdzM0OGdhSHpoSTErMEtFNDVxeHZGRGVMMmxNeGJQZkNZdnlFRWFZemppUUVMVTU5NTFwWEdXeUtNYS80Zkx0TytaS09YaE11VmVxNHJYRFBJNTRXNkpIT2lBYWlLZGl3KzVlM2Mya3QvakZJUXRNNnZNWGc5TE5GemRqRVROdDIwVlg5UWV2UnBGWmZ1Y01HOXdDYVFEb0ZsUHpwVE1KS2hQZXYvaW1KbVpZaEtmcjBsTGNlbXRxakl4TEFvcVpkT1lmSEJnNit2QWNkUEkvaWF1R3BVQXY3WCtVS05tRHdqWjJCYUg0c0x3aEIybSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFmQ0FZQUFBQ0dWcytNQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUhZWUFBQjJHQVYyaUU0RUFBQWJOU1VSQlZGaEhwVmQ3VE5WMUZELzNkNTl3ZVFTSWdTOUFRQVhjRkxBUVppOWZwZVZ6MXRZL1dUWnI1V3hwYzdXNWtuTGE1akkzWjg1c3JTMm5NMnNqdFd3WlM3SVVINEg0eENuRVF4NERBWkY3NFY3dXM4ODV2OS9sSW5CdlZKL0I0UHY5bnUvNW51LzVudk01NTZmekEvUXYwSGIvSXJYM1ZGS1BvNDVjbm00aW5VSVdZd0xGUm1aUVV1d2pGRy9OMWlSSGgxRVowTlJWUnVkcXQxQmQrMm5TS3lTL09oeXMwK2xrM2UvM2tROXF2RDRaVXRhNFZWU1V1WTBlaXB5aVRoQWZvY29PUlZnRHV1dzNxS1JpQWQzcmJjRXRqVGpZSW9mNldhSHNDbXpWUFdDTXgrY2doOHRMcVdNS2FNV3NVakxxbzJSdEpJUTBvT3ptZXJwUXU0ZXNaZ3NPTmtHeEg3ZDBrZHZUVDE3czRPTVU3Vkk4WmhqZ0dhTStBcTlpRU51OFBpZjF1ZHowN013dktXZjhHbFZvQ0VZMDRQQzVXZFRhWFlGYlI4dk52TDUrM0tnZmI1eE5NeWE5UmFtSml5bmFNbEdUVnRGbHI2YmE5dStwcW5FWDR1TXVSUmdqU1lFaHJON3V0RkZlNmxxYWw3TmZrdzVpbUFHSHluUHBiazhWbVkweHN0bnB0bEZDVkNZdHpUdUJOODNRcE1MalR0ZXZkUHpTVW5KN2U4bWtqeFozOWZYYktEZmxkWnFidlUrVFVnR25CVkY2ZlEyaVBIZzRXMTZVV1V3dnpiazE2c01aRStQbjBwdno3SlNldUF5ZXM4bGNwQ21hS3VvL3ArcVdyMlVjd0lBSFdydlAwWUV6aFhBdExBYnNzSGhwN2lHYW12eWlqUDhyeXFyWFVXWDlYb293eHlBdWZOQnJwNDNQT0JGWFpsa2Y4TURSaXFjcHlvd0F3cHV6MngrZld2ei9EdGRlOXNtc3p5Z3RjUjZDMXdiZHpCbDZPbHE1V05ZWTRvR2F0aEpNcmtURXgwakFSU0hBVnMrNXJZa1FOWGIrUWdmUExzUTZnWHlJbnNyZVFmbXBtN1JWRllmTDg2bjFmaVVPa1l2U2hrVVB4dmJ1a3pveTZLMWloTTFobzNYelc2RXZTZlhBK2RwaVdHYVdkK2RvWHpMem1Hd0tZRkxDQXNSQWxQQkFoTWxDRlhVN3RCVVZQcjhIZ1ZjSkhXcStGMDBwbHIrRE1UZHJQNHp2eFkxMWtOTWh4VCtTZVRHZytkNFY1TFFKaXR5VUdKTkI4VkZac2pnWUJaTS9JSS9YQ1RrajBxeURPcEYyQVZRMTdDSWpVcC9EblQxVWtMNUY1Z2RqK3NTMXdnMWdFM2dpZ202MGZDWHpTblBYYnlBUGJJWHYrSURwRTE2VGhhSElTOXNreWhsbU1FNUYzY2ZxQUtocTJDMEU1UEgxZ1lhWGFMUERrWkcwSERKT25LV0hwNTFJMHo1U091eDhlMVdBdVp6ZEhRclRrcDhUbWpYb0krbGEwd0dac3p1YnFiTzNpZlE2QS9XN3ZWU1lzVjNtUjBKS3drS2M0V0hpQmttUjhJM0NDZ0k4N29PTDRxelQ1UCtSVUpCZWpFT2dBUEs4aFlQemF0TStlSVRwMklPOXlUUW1lcm9tUFJ4eDFxeEFjc2lsZS91YlNlRWJjV1FHWUVDZ2hjTFkySHlLam9nakgyNWhNcGpwVXYxT3VnbGk0ZWgyZVJ3ME8zMmJKamt5dUNnTnpnMHZ6bFlNU2lTczB1b280TUc3aE1PakNFYVgxeUZFMG5TdmpCenVUbkVwSzg2WjhJb3FGQUl1Ync4a2c5QXJFYVJFV1NaSStqSDRYYnA2ZzlFOUVuSlQzb2FSekROK01VSkJRREhuNTZhOG9VbUVCdXNPeEJzL041K3RKRWJQa0FGRGo4VUd2T3MvSVd2Y1NnbEdCaHZTNy9GVFlmcFdHWWREWThmUEF4V1NBMzVzVEM0cDQrTG00QWFxSW9QZVF0ZnVmSzZKaDBaaHhsYnNVWE9TbVhOaWZENVpUQWt5RG9mYmJjY2x4bkE4V05BcXhDYlJOeWtoWHhRcGFEdzY3ZlhVWWJzaUcwS2h0djJvZUl2aDhyaFFNWU9jRUFxWEcvZUkrem5nT2M1eXhyOHE4MklBTTFjL0ZMRk9wbHF1NWVGUVhyTVp6R2NWQ2pZYkxXRzVJNEJUMWV1UnJsYnh0Tk90TWl0RERFaExYSUl5bkFBdnVPRVdFM1gzTmRBZnQ5NFZnYUc0MlhJUXQwWlg2UGVDRS9xUUZlOXJLNkh4N1lVNTBLdkg3Zlc0ZlMrcTdLS0JKeHNnZ0JYNXBTQUdoMWpJclZoNXpRNnczUmZhYWhCWG0vYUNiQ1pUakNVRlVUeVdacVc5cDYyTWpKUFhWcU9yUGdNTzROdjc0R2tmK293ZnROVkJEUW5qRkpxSFN3MTdwWHZoV1c1S1pxZS9RNDlOL1VTVENBVldvUVhGSUhCSFhYZTNGUHJVRHN1R0RtdEYvaEhLVEhwZWt4aGlBT1BJK1NKcTZTNkhGNEk5WVd6a0JKVG80NmlVTXpXcDhQaXIvUmlkdUx4S1lzU2tzVjh2TGxPUXZoR1gyWWxSME9CaEJqQyt1L2dFY3ZZMEFwSzdZazQxTnhqUFNRbldGSFRGNjZVcmpnZXZCOEN1NWErbDJ2WVNSUHR1VkRvNzNoaGRNU0huVVg3dFRqc1ZaR3hBbC9XcHRpT0lFUTFnbkwyOW1YNi90UjF0bWxrWWo4VzRYK0NTaldjVURHWTFOcFMvQzdoU0txaU1MTS9sMlFtU1daNzNEZHorZ2lvOEJDRU5ZUFE0NnFua3p3WFVicXZCa3hqVVFzV2ZaRmdidW8zckFmK3dON2pPTzkwK3lueDRQaTNMKzBuWUwxU2NoRFVnQVA0Z1BWLzdJZDFxKzFIU2htdUdrSXFXUlBneXhNRnFQOEhmalRualh3WTViUWZiSmN0Nk9JektnTUhvdEYvSGUxZWdzYXhIU3FHNndmZG1RNXg4TnlURkZxQmNwMmlTb3dIUjN5azUrMzZoRjd2WEFBQUFBRWxGVGtTdVFtQ0MifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wMi0wMSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzYsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWXViaUtleSBCaW8gU2VyaWVzIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVMkYxMDAwMjAyNTAyMDEwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wMi0wMSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzZ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDItMDYifSx7ImFhZ3VpZCI6IjEzYWM0N2NmLTFkNzgtNGZkNS05MDYwLWFlZGFhYmFjZjgyNiIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiMTNhYzQ3Y2YtMWQ3OC00ZmQ1LTkwNjAtYWVkYWFiYWNmODI2IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkhJRCBDcmVzY2VuZG8gS2V5IFYzIC0gRW50ZXJwcmlzZSBFZGl0aW9uIn0sImRlc2NyaXB0aW9uIjoiSElEIENyZXNjZW5kbyBLZXkgVjMgLSBFbnRlcnByaXNlIEVkaXRpb24iLCJhbHRlcm5hdGl2ZURlc2NyaXB0aW9ucyI6eyJlbi1VUyI6IkhJRCBDcmVzY2VuZG8gS2V5IFYzIC0gRW50ZXJwcmlzZSBFZGl0aW9uIn0sImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyNjI2NTYsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfSx7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRENqQ0NBckNnQXdJQkFnSVVBamRkeGljYjJudnhZaU02cy9SeURRVWRkbkF3Q2dZSUtvWkl6ajBFQXdJd2F6RUxNQWtHQTFVRUJoTUNWVk14RXpBUkJnTlZCQW9NQ2toSlJDQkhiRzlpWVd3eElqQWdCZ05WQkFzTUdVRjFkR2hsYm5ScFkyRjBiM0lnUVhSMFpYTjBZWFJwYjI0eEl6QWhCZ05WQkFNTUdrWkpSRThnUVhSMFpYTjBZWFJwYjI0Z1VtOXZkQ0JEUVNBek1DQVhEVEkxTVRBeU9ESXlORFUxTVZvWUR6SXdOVEF4TURJNE1qSTBOVFV4V2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDZ3dLU0VsRUlFZHNiMkpoYkRFaU1DQUdBMVVFQ3d3WlFYVjBhR1Z1ZEdsallYUnZjaUJCZEhSbGMzUmhkR2x2YmpFck1Da0dBMVVFQXd3aVJrbEVUeUJCZEhSbGMzUmhkR2x2YmlCSlEwRWdNVElnUlc1MFpYSndjbWx6WlRCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQkpVN2ZFZkl5L1BkVjN0WGp1QU5zU2x6SzVia3E3MFpzSXRiYTNibEJ2c1VYNU1xSk9BaVZXMmZUTjFFNXRTTlh2VU1od2JLTnRhTjd1eWpxNHpDQ24yamdnRW1NSUlCSWpBT0JnTlZIUThCQWY4RUJBTUNBWVl3RWdZRFZSMFRBUUgvQkFnd0JnRUIvd0lCQURBZkJnTlZIU01FR0RBV2dCUnRJblVvcXR4OW5seTI1WjJ6S3ZzSG5GUE1UakFkQmdOVkhRNEVGZ1FVSFJSZ1ZnRWtLUVE4Y3k0MzBvN0RnR01NYURjd1JBWURWUjBmQkQwd096QTVvRGVnTllZemFIUjBjRG92TDJOeWJDNW9lV1J5WVc1MGFXUXVZMjl0TDBaSlJFOUJkSFJsYzNSaGRHbHZibEp2YjNSRFFUTXVZM0pzTUhZR0NDc0dBUVVGQndFQkJHb3dhREEvQmdnckJnRUZCUWN3QW9ZemFIUjBjRG92TDJOeWJDNW9lV1J5WVc1MGFXUXVZMjl0TDBaSlJFOUJkSFJsYzNSaGRHbHZibEp2YjNSRFFUTXVjRGRqTUNVR0NDc0dBUVVGQnpBQmhobG9kSFJ3T2k4dmIyTnpjQzVvZVdSeVlXNTBhV1F1WTI5dE1Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lRQ3NmbGNaQUZEam5BbWpiTjFGN0hSUjNDYjNtMVN5SVR5aStBSHVLZ01CRGdJZ1ZZcmRzNVRZc2JsbWFoaWM3MnVOblpDNGtKNW4rbTZQNFhXLzcrcFpGQm89Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQVZNQUFBQ3NDQVlBQUFERytFOE1BQUFBSUdOSVVrMEFBSG9sQUFDQWd3QUErZjhBQUlEcEFBQjFNQUFBNm1BQUFEcVlBQUFYYjVKZnhVWUFBQUFKY0VoWmN3QUFEMkFBQUE5Z0FYcDRSWTBBQUF5Z1NVUkJWSGhlN1oxL2JKVGxIY0J2amhqTmNDNE8rZFhlWFZ0VVRNemlQN29ZWFpZNTFJa0tkMWZObkZIajVvaEJtQTdqMk1Sc1pvbG14aGhOSm9ydDI0S2dzaUZzaW03VEFkTVlSRlFFRlRjVnh3L3J3QUVGUkNoUSt1dWVQYy8xcVFQM1ROcyszM3ZldSt2bmszelM0MmdmbnZlOXQ1OCs3NzNYSXdFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBVUVwa0c2L1hQcG5JUlI4Z0loNXQ0MXI5Y1lhdEJmd1A5UTNuNngyMFRadFAxRGNwUk1UUE5kZVUxNHV1VnQyTXEyMUZCa3h0TWptckxwVnEwUjgzMTFaWDMycnZMbU1LUDIzMGpxbVAzRHNORWZIenpFVzdFeGZPR1dtTDhvV2trOGtmMXFYU1BYWFZxYVhKVWFQT3FLbXFPck11bWZwcmJUTFZuVXFsTHJlZlZrWk1tUDExL1pPbHc3bHpFQkVIb2ptcnpVWlRiVjMrTDNWangwNHdJUjA5ZXZUSjQxS3BLZG9iakNOSGpodzFkdXpZNUxoMGpkS3IxTFB0cDVjQkpxU3NSaEZSMHQ2Z3pyU1ZjWEdNRHFtcVNTWXordll3RTg2YXF0UzF0ZFhwNjgzdHVqRmpValZqazVQMUtyVzk5OVBMZ1Z6VTVkd1ppSWcrbXFCZU9xZk9sdVlvMHVuMGNUcW1YZmFQdzh3SzFkNU82RlA4dDJyVDZWdjB6Uytic1BiZVcrcmtvbytjT3dFUlVjSmNkTURXNWlpcXE2dVBINWVxNlZ0MUZsYW1PcUk3NjFJMTIwOUoxL1JGOWt2bEVkUDZobTg3Tng0UlVkSnN3ejIyT3A5aVlxcFhvNTMyajJabG1qL3BwSk8rcWo5MnA4ZU1PZDNlZjB4NXhEVFh0TSs1NFlpSWt1YWlEbHVkSStrOWhVOG5qdE8zQ3pFMWQ0NFlNV0tNdm4zUTNCNCtldmpKK25iZktyV0U0WFdraUJqS3k1dlBzdVg1bExwVWFtWnRNcjNmM0s2dFRyNVR1Rk5UbDB3K1dwTkszYXovcnFPMk9qM04zbDJpVEk2bU9qY1lFYkVZNXBxZXRmVTVpcnJxMURPMXlkU0JjVldwRyt4ZGlicXE1QXl6T3RYM0w3UjNsVEQxMFhMbkJpTWlGc05jVStIVTNVVnlWUElNSGRXVnA5WFdxVk5yYXZQNjl2S3FFVlduMnI4dWNlcWovYzROUmtRc2hybW9qRjR2T2hDSUtTS0cxSDBScWdJZ3BvZ1lVbUtLaUNnZ01VVkVGSkNZSWlJS1NFd1JFUVVrcG9pSUFoSlRSRVFCaVNraW9vREVGQkZSUUdLS2lDZ2dNVVZFRkpDWUlpSUtTRXdSRVFVa3BvaUlBaEpUUVM5N1dDVXVlRUFsTHB3ZFZ2TnY1aUwzbkFicjl4NTAvMXZGOWlLdGF6NERNYTdId0R6K3J2bjB4NngrL09LWWR6RTAyM0dSUG43TU1YU3AzaWVURzkzYlhHa1NVemx2bnZ1eWlvdmpycHpubk5PZzFBZi91czI3N01oaDJmbkpvZDV2UU5lOCtxUCtKbzZMYWRFcTk1ejY0ZGV1WFdCSHFRdzZ1M3RVVzN1bjJyeGpuMXE5WWFkYXNucXp1cW41WlhYeU5RdFU0dUtIVkNKVGdZRWxwbkthYjZhNHFKU1lmclRuUU5uRzlJYUhYM0xQcVIrZXFDTXpWTml6LzdCYThkWldkZVY5ejZ2RUJMMktyWlN3RWxNNWlhay94SFJvMGRuVm81NWQ5NkVhZitNaXY2ZEpTa0ZpS2ljeDlZZVlEbDNlYnRtanpwdTExTy94ajFOaUtpY3g5WWVZd2h0YmRxbFRwdXFWcXJrbzU5aFhKU3N4bFpPWStrTk13elByc1RYcXpzVnZxTHVXdktFeWR5OVR1WHVXcTE4dWZMMXczNzFMMTZzVjY3Y1ZMaWFGcENlZlY0KysrRStWdUdDMmMzK1ZwTVJVVG1McUR6RU5UMkxDYi9VcXNGRWxNZzMvblpPNUtGUzRUenRKUHg2WHpsRlZVeGFxS1hOV3FvL2JEdHV2TEQ2NzI5clZOMzY2eElUcXFQMVZraEpUT1ltcFA4UTBQSVhYaGpybTVGUkg3WmpKRGVxTzM2KzFYMTE4dW50NjFDMlByTmJINVJHeEwwV0pxWnpFMUI5aUdwNEJ4YlJQSGJaSmR5K3pJNFJoL2d2dkYxYkl6dm1VZ3NSVVRtTHFEekVOejZCaWFzdzBxaC9yMC82UVBQbnFCMzdIUnpFbHBuSVNVMytJYVhnR0hWTmpObEovLzNDUEhTa01UNy9XVXBwQkphWnlFbE4vaUdsNHZHS3FIZitUeFhha2NQenhGYjFDTGJYblVJbXBuTVRVSDJJYUh0K1ltcWk5dDIydkhTMGNQMXZ3cW5zK2NVbE01U1NtL2hEVDhIakhOQmVwODI1LzJvNFdqbncrcjhaUFgreWVVeHdTVXptSnFUL0VORHplTWRWKzVhcEg3R2hoMlhld1EyVCtJaEpUT1ltcFA4UTBQQ0l4bW1STzlUK3hJNGJsbVRVdGhkV3hjMTRoSmFaeUVsTi9pR2w0UkdLYWpkUXQ4MTZ4STRabitGV0N4LzlnSmFaeUVsTi9pR2w0cEU2VHo1eXh4STRZbnZjLzJ0djc2NitPZVFXVG1NcEpUUDBocHVHUml1bm82eCszSThiRGlPc2VkYzRybU1SVVRtTHFEekVOajFSTWgxM1JiRWVNQjNQTXh2cmNLVEdWazVqNlEwekRJeFZUY3hHcXE3dmJqaHFlcnU0ZXVXMFpqTVJVVG1McUR6RU5qMWlBOUhHemRsT3JIVFVlYnAwZjR3djVpYW1jeE5RZllob2VzWmhtR3RYQ2xSdnRxUEd3YmJjK2Z1SjZoMzVpS2ljeDlZZVloa2NzcGpwaXR6MjJ4bzRhRCswZFhTb3hNYWEzNlNPbWNoSlRmNGhwZUNSakd1ZHJUZnVJN2FvK01aVXp6cGgrNTFkL1V1Zk9lbHJFYi83OEtiVWhoamV1TUJEVDhJakZOS2JmMGY4c3R6Mit4ajIvWWt0TTVZd3pwcFVDTVEyUFdFeTE1OXkyMUk0YUg2dmUzZTZjVzlFbHBuSVNVMytJYVhncUxhWmI0N29JUlV6bEpLYitFTlB3VkZwTXQrODkyUHUvcWpybVYxU0pxWnpFMUI5aUdwNUtpK211ZmUwcWxuZmhKNlp5RWxOL2lHbDRLaTJtaGZjNHZjempHQnFzeEZST1l1b1BNUTFQeFozbWY4eHB2aXpFdEN3aHB1R3B0Smp1Mkh1SW1JcENUTXNTWWhxZVNvdnBCenYzbTdBNTUxZFVpYW1jY2NiVXZNSEU2MEt1MmJoVEhXanZzaU9IaFppR3A5Sml1bVQxWnVmY2lpNHhsVFBPbUI1cmZoS2JKOTBsdlBnaDlmckdlTjc5aDVpR1J5eW1KZkliVVBYM0xIZlByOWdTVXpuampDbS9tMjhscGdOR0xLWWw4cnY1c1p6aUc0bXBuTVRVSDJJYUhzbVlUby81dXNIK1E1MjlaMWV1K1JWYllpb25NZldIbUlaSExLYVpSclhvcFUxMjFIaFkzN0tibGFrNHhIVHdFdE5CUVV3YjFZcjEyK3lvOFhEMnpLWHV1WVdRbU1wSlRQMGhwdUVSaStua0J0WDZ5U0U3YW5qYTJ2VXAvaVV4dlRHMGtaaktTVXo5SWFiaGtYek9ORTZlV0xYSlBhOVFFbE01aWFrL3hEUThVakU5OFpyNWRzVHc5UFRrNDNuYnZTTWxwbklTVTMrSWFYaWtZbnJxOUNmc2lPSDV5N3AvbVpnNTV4Vk1ZaW9uTWZXSG1JWkhKS1k2WkpmYytad2RNU3lITzd2MU1SUGpjNlY5RWxNNWlhay94RFE4SWpITk5Lb2xxN2ZZRWNNeXJYR1ZlMDZoSmFaeUVsTi9pR2w0UkdJYTA4V25UZHYzeGZjaS9jOUtUT1VrcHY0UTAvQkl4SFQ4dEVWMnRIQzBkK2pUZTMyc3V1WVRpOFJVVG1McUR6RU5qM2RNOVNuKzNPYzMyTkhDWUs3ZW56WHpTZmQ4NHBLWXlrbE0vU0dtNGZHTjZmQWZ6TE1qaFdQR3ZKZWRjNGxWWWlvbk1mV0htSWJISzZhVEc5VGN2NFZkbGQ2K2NJMEpsM3MrY1VwTTVTU20vaERUOEF3NnB0bEluWC9Ibiswb1liaXBlVlU4L3lWSmZ5U21jaEpUZjRocGVBWVYwMHlET3ZmMlord0l4YWU3SjY5K05QdkYwbHlSOWtsTTVTU20vaERUOFBRN3BpWmsrclRlSEd2M1ByWGVmblh4T2RqZXFjWk5YZVNlVXlsSlRPVWtwdjRRMC9Ba3ZuVi83N3N0ZmRhSkQ2bGhWelNyRTYrZXIwNi9hYkhLM0wxYy9TSHdDL09YdmJtMU1BL1hQaXM1aWFtY3hOUWZZZ3FHZzRjNzFWWDNQMTlZQ2J2MlYwbEtUT1VrcHY0UTA2Rk5SMWUzZW5qWnV5cngzUWVjKzZta0phWnlFbE4vaU9uUXBMMnpTeld0Mk5CN1NsL0tGNWsrVDJJcUp6SDFoNWdPSGZMNXZIcTdaWSthTW1lbFNseWdWNkxsR3RFK2lhbWN4TlFmWWxyWmZOeDJXSzE2YjRlNjBielRVN1pSSlNaNVBOYWxKakdWYzlKdmxxbmxiMjR0WElFTTZjcDMvcTJPL2Y1YzU1d0daYVpSUGZqc1A1ei9Wckg5M2NxTitodk00NkxEeERucXBYZTNPOGN1cGl2ZTJxWXV1ZXM1OTV6NjRRbFh6MWU3OTdlcmx0YTJpdkROTGJ2VjJrMnRoWDN6NnlmV3FvbDNQcWRPTUQvd0w5YW44ZnFIdFdzZmxMM0VGTEVFTktlNDV1VklabFZlN3BydE1GZmh5K2xLdklURUZCRlJRR0tLaUNnZ01VVkVGSkNZSWlJS1NFd1JFUVVrcG9pSUFoSlRSRVFCaVNraW9vREVGQkZSUUdLS2lDZ2dNVVZFRkpDWUlpSUtTRXdSRVFVa3BvaUlBaEpUUkVRQkt6YW11YWpWdWNHSWlNWHhvSzFQaFpGdGFISnNMQ0ppY2N4RnUyeDlLb3dybXNjN054Z1JzUmhtb2wvWStsUWc1amtNMTBZaklrcWFpL0syT2hWS3J1a0Y1NFlqSWtxYWkzYlk2bFF3dWFqYnVmR0lpQkxtdE9mY2Q3d3RUZ1dUaTZZN2R3QWlvb1M1YUptdHpSQ2dQbnJOdVJNUUVYM01ScTIyTWtPSWJPTkc1ODVBUkJ5TXVhWUtmU2xVZjhoRmkvUU95T3VWcW52bklDSitrZWJLZlgzVFdsdVZJVXcyT2sydlVsdUpLaUlPMkZ5ME41RnR1czdXQkFxWXFOWkg2L1RIZlRxc25ZbjZacjJ6RUJHUDBLeENzMUdiYnNTV1JLWmhncTBIQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUJwa1VqOEI0QW9tK01iVCszSkFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiIxM2FjNDdjZjFkNzg0ZmQ1OTA2MGFlZGFhYmFjZjgyNiIsIm9wdGlvbnMiOnsicmsiOnRydWUsImNsaWVudFBpbiI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImVwIjp0cnVlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOnRydWUsImFsd2F5c1V2IjpmYWxzZX0sIm1heE1zZ1NpemUiOjUxMCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0IjoxLCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjk0LCJ0cmFuc3BvcnRzIjpbIm5mYyIsInVzYiJdLCJmb3JjZVBJTkNoYW5nZSI6ZmFsc2UsIm1pblBJTkxlbmd0aCI6NCwiZmlybXdhcmVWZXJzaW9uIjoyNjI2NTYsInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjozMH19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTEwLTEwIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjI2MjY1NiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJISUQgQ3Jlc2NlbmRvIEtleSBWMyAtIEVudGVycHJpc2UgRWRpdGlvbiIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjUxMDEwMDAyIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25Qcm9maWxlcyI6WyJlbnRlcnByaXNlIl0sImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMTAtMTAiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MjYyNjU2fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTEyLTExIn0seyJhYWd1aWQiOiJlNzdlM2M2NC0wNWUzLTQyOGItODgyNC0wY2JlYjA0YjgyOWQiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6ImU3N2UzYzY0LTA1ZTMtNDI4Yi04ODI0LTBjYmViMDRiODI5ZCIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJTZWN1cml0eSBLZXkgTkZDIGJ5IFl1YmljbyJ9LCJkZXNjcmlwdGlvbiI6IlNlY3VyaXR5IEtleSBORkMgYnkgWXViaWNvIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3MywicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9LHsibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyIsImVkMjU1MTlfZWRkc2Ffc2hhNTEyX3JhdyIsInNlY3AzODRyMV9lY2RzYV9zaGEzODRfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJREhqQ0NBZ2FnQXdJQkFnSUVHMEJUOXpBTkJna3Foa2lHOXcwQkFRc0ZBREF1TVN3d0tnWURWUVFERXlOWmRXSnBZMjhnVlRKR0lGSnZiM1FnUTBFZ1UyVnlhV0ZzSURRMU56SXdNRFl6TVRBZ0Z3MHhOREE0TURFd01EQXdNREJhR0E4eU1EVXdNRGt3TkRBd01EQXdNRm93TGpFc01Db0dBMVVFQXhNaldYVmlhV052SUZVeVJpQlNiMjkwSUVOQklGTmxjbWxoYkNBME5UY3lNREEyTXpFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUUMvandZdWhCVmxxYWlZV0VNc3JXRmlzZ0orUHRNOTFlU3JwSTRUSzdVNTNtd0NJYXdTREh5OHZVbWs1TjJLQWo5YWJ2VDlOUDVTTVMxaFFpM3VzeG9ZR29uWFFnZk82Wlh5VUE5YStLQWtxZEZuQm5seXVnU2VDT2VwOEVkWkZmc2FSRnRNamt3ejVHY3oyUHk0dklZdkNkTUhQdHdhejBiVnV6bmV1ZUlFejZUblFqRTYzUmR0Mnpid25lYndURzVaeWJlV1N3Ynp5K0JKMzRaSGNVaFBBWTg5eUpRWHVFMEl6TVpGY0VCYlBOUmJXRUNSS2dqcS8vcVQ5bm1ET0ZWbFNSQ3Qyd2lxUFN6bHV3bit2K3N1UUVCc1VqVEdNRWQyNXRLWFhUa05XMjF3SVdieGVTeVVvVFh3THZHUzZ4bHdRU2dOcGsycVhZd2Y4aVhnN1ZXWkFnTUJBQUdqUWpCQU1CMEdBMVVkRGdRV0JCUWdJdnowYk5HSmhqZ3BUb2tzeUtwUDl4djlvREFQQmdOVkhSTUVDREFHQVFIL0FnRUFNQTRHQTFVZER3RUIvd1FFQXdJQkJqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFqdmp1T01EU2ErSlhGQ0x5QktzeWNYdEJWWnNKNFVlM0xiYUVzUFk0TVlOL2hJUTVaTTVwN0VqZmNuTUc0Q3RZa05zZk5IYzBBaEJMZHE0NXJuVDg3cS82TzN2VUV0Tk1hZmJoVTZrdGhYN1krOVhGTjlOcG1ZeHIrZWtWWTV4T3hpOGg5SkRJZ29NUDRWQjF1UzBhdW5MMUlHcXJOb29MOW1tRm5MMmtMVlZlZTYvVlI2QzUrS1NUQ01DV3BwTXVKSVpJSTJ2OW80ZGtvWjhZN1FSalFsTGZZemQzcUd0S2J3N3hhRjFVc0cvNXhVYi9CdHdiMlgyZzRJbnBpQi95dC8zQ3BRWHBpV1gvSzRtQnZVS2lHbjA1WnNxZVkxZ3g0ZzB4TEJxY1U5cHNteVB6SytWc2d3MmplUlE1SmxLRHlxRTBoZWJmQzF0dkZ1MENDckpGY3c9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFmQ0FZQUFBQ0dWcytNQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUhZWUFBQjJHQVYyaUU0RUFBQWJOU1VSQlZGaEhwVmQ3VE5WMUZELzNkNTl3ZVFTSWdTOUFRQVhjRkxBUVppOWZwZVZ6MXRZL1dUWnI1V3hwYzdXNWtuTGE1akkzWjg1c3JTMm5NMnNqdFd3WlM3SVVINEg0eENuRVF4NERBWkY3NFY3dXM4ODV2OS9sSW5CdlZKL0I0UHY5bnUvNW51LzVudk01NTZmekEvUXYwSGIvSXJYM1ZGS1BvNDVjbm00aW5VSVdZd0xGUm1aUVV1d2pGRy9OMWlSSGgxRVowTlJWUnVkcXQxQmQrMm5TS3lTL09oeXMwK2xrM2UvM2tROXF2RDRaVXRhNFZWU1V1WTBlaXB5aVRoQWZvY29PUlZnRHV1dzNxS1JpQWQzcmJjRXRqVGpZSW9mNldhSHNDbXpWUFdDTXgrY2doOHRMcVdNS2FNV3NVakxxbzJSdEpJUTBvT3ptZXJwUXU0ZXNaZ3NPTmtHeEg3ZDBrZHZUVDE3czRPTVU3Vkk4WmhqZ0dhTStBcTlpRU51OFBpZjF1ZHowN013dktXZjhHbFZvQ0VZMDRQQzVXZFRhWFlGYlI4dk52TDUrM0tnZmI1eE5NeWE5UmFtSml5bmFNbEdUVnRGbHI2YmE5dStwcW5FWDR1TXVSUmdqU1lFaHJON3V0RkZlNmxxYWw3TmZrdzVpbUFHSHluUHBiazhWbVkweHN0bnB0bEZDVkNZdHpUdUJOODNRcE1MalR0ZXZkUHpTVW5KN2U4bWtqeFozOWZYYktEZmxkWnFidlUrVFVnR25CVkY2ZlEyaVBIZzRXMTZVV1V3dnpiazE2c01aRStQbjBwdno3SlNldUF5ZXM4bGNwQ21hS3VvL3ArcVdyMlVjd0lBSFdydlAwWUV6aFhBdExBYnNzSGhwN2lHYW12eWlqUDhyeXFyWFVXWDlYb293eHlBdWZOQnJwNDNQT0JGWFpsa2Y4TURSaXFjcHlvd0F3cHV6MngrZld2ei9EdGRlOXNtc3p5Z3RjUjZDMXdiZHpCbDZPbHE1V05ZWTRvR2F0aEpNcmtURXgwakFSU0hBVnMrNXJZa1FOWGIrUWdmUExzUTZnWHlJbnNyZVFmbXBtN1JWRllmTDg2bjFmaVVPa1l2U2hrVVB4dmJ1a3pveTZLMWloTTFobzNYelc2RXZTZlhBK2RwaVdHYVdkK2RvWHpMem1Hd0tZRkxDQXNSQWxQQkFoTWxDRlhVN3RCVVZQcjhIZ1ZjSkhXcStGMDBwbHIrRE1UZHJQNHp2eFkxMWtOTWh4VCtTZVRHZytkNFY1TFFKaXR5VUdKTkI4VkZac2pnWUJaTS9JSS9YQ1RrajBxeURPcEYyQVZRMTdDSWpVcC9EblQxVWtMNUY1Z2RqK3NTMXdnMWdFM2dpZ202MGZDWHpTblBYYnlBUGJJWHYrSURwRTE2VGhhSElTOXNreWhsbU1FNUYzY2ZxQUtocTJDMEU1UEgxZ1lhWGFMUERrWkcwSERKT25LV0hwNTFJMHo1U091eDhlMVdBdVp6ZEhRclRrcDhUbWpYb0krbGEwd0dac3p1YnFiTzNpZlE2QS9XN3ZWU1lzVjNtUjBKS3drS2M0V0hpQmttUjhJM0NDZ0k4N29PTDRxelQ1UCtSVUpCZWpFT2dBUEs4aFlQemF0TStlSVRwMklPOXlUUW1lcm9tUFJ4eDFxeEFjc2lsZS91YlNlRWJjV1FHWUVDZ2hjTFkySHlLam9nakgyNWhNcGpwVXYxT3VnbGk0ZWgyZVJ3ME8zMmJKamt5dUNnTnpnMHZ6bFlNU2lTczB1b280TUc3aE1PakNFYVgxeUZFMG5TdmpCenVUbkVwSzg2WjhJb3FGQUl1Ync4a2c5QXJFYVJFV1NaSStqSDRYYnA2ZzlFOUVuSlQzb2FSekROK01VSkJRREhuNTZhOG9VbUVCdXNPeEJzL041K3RKRWJQa0FGRGo4VUd2T3MvSVd2Y1NnbEdCaHZTNy9GVFlmcFdHWWREWThmUEF4V1NBMzVzVEM0cDQrTG00QWFxSW9QZVF0ZnVmSzZKaDBaaHhsYnNVWE9TbVhOaWZENVpUQWt5RG9mYmJjY2x4bkE4V05BcXhDYlJOeWtoWHhRcGFEdzY3ZlhVWWJzaUcwS2h0djJvZUl2aDhyaFFNWU9jRUFxWEcvZUkrem5nT2M1eXhyOHE4MklBTTFjL0ZMRk9wbHF1NWVGUVhyTVp6R2NWQ2pZYkxXRzVJNEJUMWV1UnJsYnh0Tk90TWl0RERFaExYSUl5bkFBdnVPRVdFM1gzTmRBZnQ5NFZnYUc0MlhJUXQwWlg2UGVDRS9xUUZlOXJLNkh4N1lVNTBLdkg3Zlc0ZlMrcTdLS0JKeHNnZ0JYNXBTQUdoMWpJclZoNXpRNnczUmZhYWhCWG0vYUNiQ1pUakNVRlVUeVdacVc5cDYyTWpKUFhWcU9yUGdNTzROdjc0R2tmK293ZnROVkJEUW5qRkpxSFN3MTdwWHZoV1c1S1pxZS9RNDlOL1VTVENBVldvUVhGSUhCSFhYZTNGUHJVRHN1R0RtdEYvaEhLVEhwZWt4aGlBT1BJK1NKcTZTNkhGNEk5WVd6a0JKVG80NmlVTXpXcDhQaXIvUmlkdUx4S1lzU2tzVjh2TGxPUXZoR1gyWWxSME9CaEJqQyt1L2dFY3ZZMEFwSzdZazQxTnhqUFNRbldGSFRGNjZVcmpnZXZCOEN1NWErbDJ2WVNSUHR1VkRvNzNoaGRNU0huVVg3dFRqc1ZaR3hBbC9XcHRpT0lFUTFnbkwyOW1YNi90UjF0bWxrWWo4VzRYK0NTaldjVURHWTFOcFMvQzdoU0txaU1MTS9sMlFtU1daNzNEZHorZ2lvOEJDRU5ZUFE0NnFua3p3WFVicXZCa3hqVVFzV2ZaRmdidW8zckFmK3dON2pPTzkwK3lueDRQaTNMKzBuWUwxU2NoRFVnQVA0Z1BWLzdJZDFxKzFIU2htdUdrSXFXUlBneXhNRnFQOEhmalRualh3WTViUWZiSmN0Nk9JektnTUhvdEYvSGUxZWdzYXhIU3FHNndmZG1RNXg4TnlURkZxQmNwMmlTb3dIUjN5azUrMzZoRjd2WEFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xX1BSRSIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsImxhcmdlQmxvYktleSIsImNyZWRCbG9iIiwibWluUGluTGVuZ3RoIl0sImFhZ3VpZCI6ImU3N2UzYzY0MDVlMzQyOGI4ODI0MGNiZWIwNGI4MjlkIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibGFyZ2VCbG9icyI6dHJ1ZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOnRydWUsImFsd2F5c1V2IjpmYWxzZX0sIm1heE1zZ1NpemUiOjEyODAsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6OCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoxMjgsInRyYW5zcG9ydHMiOlsibmZjIiwidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN30seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTh9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi0zNX1dLCJtYXhTZXJpYWxpemVkTGFyZ2VCbG9iQXJyYXkiOjQwOTYsIm1pblBJTkxlbmd0aCI6NCwiZmlybXdhcmVWZXJzaW9uIjozMjk0NzMsIm1heENyZWRCbG9iTGVuZ3RoIjozMiwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjEsInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjoxMDB9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMC0xMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzMsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiU2VjdXJpdHkgS2V5IE5GQyBieSBZdWJpY28iLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI0MTAxMjAwNCIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTA2LTA0IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3MywiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJTZWN1cml0eSBLZXkgTkZDIGJ5IFl1YmljbyIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjQwNjA0MDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMDYtMDQiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDczfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI0LTExLTEyIn0seyJhYWd1aWQiOiIzM2Q2ZDdkMC0yNzlmLTRlZjMtOTZiMy0yZDMyODJmNGJkZTYiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjMzZDZkN2QwLTI3OWYtNGVmMy05NmIzLTJkMzI4MmY0YmRlNiIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJUaGFsZXMgZVRva2VuIEZ1c2lvbiBCSU8gRW50ZXJwcmlzZSJ9LCJkZXNjcmlwdGlvbiI6IlRoYWxlcyBlVG9rZW4gRnVzaW9uIEJJTyBFbnRlcnByaXNlIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfSx7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MTAsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sImlzRnJlc2hVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZWQiOmZhbHNlLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUM2VENDQWRHZ0F3SUJBZ0lKQUpiVHlydTFYL0lQTUEwR0NTcUdTSWIzRFFFQkN3VUFNQ014SVRBZkJnTlZCQU1NR0VkbGJXRnNkRzhnVFhWc2RHbEJjSEFnUmtsRVR5QkRRVEFlRncweE9EQTJNVEl4TkRRMU5UQmFGdzB5T0RBMk1Ea3hORFExTlRCYU1DTXhJVEFmQmdOVkJBTU1HRWRsYldGc2RHOGdUWFZzZEdsQmNIQWdSa2xFVHlCRFFUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU1WaktIV3BiRDdUU2xNeG9jalRsNm5JZjd4MzJQbXNROXpHdUxHR3FBMFVRWm9JcTNYTHpMNkxZVXZKNUE1ZzB1eUZHbGxIRWZHQUtyRWFDUThGVnZQUy9VaDBGeWZ6V2hSQXppVFNpampNSUlWampqVXY5bTl2Rm1jWFNjZ0hpZzdPZHo4ODU4VjBrck5IOTlxR20zd2pnYU9lclRXbXQralhDVWZuMDFJa1RQd3hHMkhsZ0VkNDVqTkxTVjdWb29sK0tlOEUya2k0bEVrVGVIemJvdWxSNUdVYnAzbk1pN0U0N1ZNUWEzYk53bnpXQmJzYUJTU1FoTGszbTVIYUtoaHhhNndKREs0N05pTUNrQ2tkSUh1V1NRTFZBZm04NVVBT050RU9Qd2kwT3VLM3FiZTh5S09GR2YwS2hCNU1NZUF5bTdNVi9NNFcwYTQ5b2dQRDlwTUNBd0VBQWFNZ01CNHdEQVlEVlIwVEJBVXdBd0VCL3pBT0JnTlZIUThCQWY4RUJBTUNBb1F3RFFZSktvWklodmNOQVFFTEJRQURnZ0VCQUpXejV4TE1rNVdOWWJBYjZ5T3hFQ0JvWjJXZUIvcWw0VkozTy8zL3ROc3hPWW56TGVXbzU0MHpRaDlyQW1heHo3ZXVtQmxza01xNHlHUFNOWEI5eWNXR0hna2NDZVN6TjJ3djhDSXpEQnMyb0JaalROazY1TEJaRHNzVE9CdE1XLyt1VEZIUWZidU8zSVNMaEkwRFhmUkVpOU5ETTNqZmsxMXhIY3NmaDJSTVYrUWROZndWYVpackNxK291RytFdmt2N0txcStveXUwVkZNL3R6NjhUR2w2eWxoUEZSMXFoOXd0dHBWakFPT0NFUUNMcVAyZFAyOGx3WUJ5Q3FIUXFWSHdidWp2L0xaalpuS1czTFluZFppeFBQU1JDSnNzRER3SnZoL2Y2blR4ZzlaRSsvSmNZcmU1Q2FJOG56VkhhU09Dak5KN0Z6VUxHNjRKaVdPdlE1MD0iLCJNSUlEZFRDQ0FsMmdBd0lCQWdJSkFJQ1VUdmtndGo1Q01BMEdDU3FHU0liM0RRRUJDd1VBTUZFeEN6QUpCZ05WQkFZVEFrWlNNUXd3Q2dZRFZRUUtEQU5FU1ZNeEN6QUpCZ05WQkFzTUFrTlRNU2N3SlFZRFZRUUREQjVIWlcxaGJIUnZJRTExYkhScFFYQndJRVpKUkU4Z1UzVmlZMkVnUTBFd0hoY05NakF3TnpBM01UUXpOekU0V2hjTk16QXdOekExTVRRek56RTRXakJSTVFzd0NRWURWUVFHRXdKR1VqRU1NQW9HQTFVRUNnd0RSRWxUTVFzd0NRWURWUVFMREFKRFV6RW5NQ1VHQTFVRUF3d2VSMlZ0WVd4MGJ5Qk5kV3gwYVVGd2NDQkdTVVJQSUZOMVltTmhJRU5CTUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUF2QUtPZXFDNS9wMEQxaXNDWUtRSmxWVU9yQjZJN0RMb2N1bkUvUm04ZHVHVGJ5eFFodDNDYkZWVHYzTjJMcDJmYmp4bEkrM3NPU0drMzNGVFlrVHF4Y2RKSXJKN1Nza0JjVVNOcmZLT2FRVC82S1FjUDRDbTdWKzY1NVRxK1RXeHl4V1FoRHlndDE1cW9QN011SzZiVDlTd3BDanBmS2hhTVNteVFhTW9VY1JBYkxxZHpCQ2FjMGh6QitaZStncUpsbldWOVVhU0kyckZzVnVINFpFMGNSTytNT3BhTGdNL3MyNDhuR0dIcDIyZXdTUWZiblBhQmJiOGlxeUFQK2N1NTJHTHNVcEtSSmViRStSNitQTVE5SkNkV2VRWlIzRGtmU2lka3YzbWNiNGpxMWlJdGErTXFLaFJud3JmWGg5MTFLV0xuWUFsOUVOQ2hMWDBjNlNqMVFJREFRQUJvMUF3VGpBZEJnTlZIUTRFRmdRVVdMdmhSQlVQbjh1TElmNjgrZ3YvTlpJd0dTSXdId1lEVlIwakJCZ3dGb0FVV0x2aFJCVVBuOHVMSWY2OCtndi9OWkl3R1NJd0RBWURWUjBUQkFVd0F3RUIvekFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBRkxyRGhhZWdlS0h4WWpIM0VQM3ZVQktobnpNMjA2QVN4Z2VZQ08yRWM5cE9sWUphZXFGRStzVWFtVVYvcHdqRGxxTmFTZ0ZneTdUd2VZa3ZPbU1uNHFTY3NIcXZKM3pHT0FpYWZ3YWgxdlVIZkNsWFI4K2F4TzJpR09VRjBKS3JaOVlZamJBYTUvNEhDbHY3akZQT2RNV1RPUXluZ29pSEFzM2prdVlqcENMRmxCNFZPaTNkMXdqQTFwblRkQktrQWI3dDhuVHZ3Ky9YYkZ2Y1FhNzNWSDdzanZvQnFEM2ZkTWZSY3VWcTRxVVp0WlQ2Y0dhZ1RIRDYxVHRxaDlvTUNaWGNEYlIxUEdabk5icXljc1dQRElLMG5wbUszLzNsZlY4Yytac3J5NmUxNzBtZkpNWnA3TzhtNkNTejYvVkxLK3lESmQ3ODQxd3BtZUtUZjZJblpBPT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBUXdBQUFBZ0NBWUFBQURubFVacUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFFblFBQUJKMEFkNW1IM2dBQUFBWmRFVllkRk52Wm5SM1lYSmxBSEJoYVc1MExtNWxkQ0EwTGpBdU1qSHhJR21WQUFBSzFFbEVRVlI0WHUxZERYQWNaUm0rTk9BZktvZzZXTzBRY3JlWDNPNzFSNDFvSGRTcXFEQU9nMytjWUVYQm9sWFJURW4yMjB0YUtUYzY0bWdCcXpCaUVVVnBCZHFpd3docVNkSVMydXBZU2d2UnRwVFNja2xqV3pIYWdqcFNSZHI0dkx0dmpydmsyN3ZkdmQxTGpuN1B6RE4zdC9kKzcvdCtmOC8rNzhhSzBORGFhcjJxT2RYWm9xV3lIOVIwYTBGY3Q2N1dkSEdUWm9qVkNjUHFTZWpXMW9RdUhzT3kvZUJUc0RtTS81NFpUOWorTFdHSWc3RGZCL3NCY0RQc2Y0WGZQOFgzYjJ1RzFaSFF6VThtVXVLZHlXVEhtNXFhY2kvakhBS0J5aWYwYkJyK0x3YVhJUFlQa01kcWZMOFhkV3BsczFBQTMxL1FqT3c5OEw4UzliOEJYSVIyK25EYzZEb3psc2swc2xua1FNeGtQR1hPOUVKdFZuWUdGNHNVeVZuZDhVVGFlcDhidys2TGFrQmo1aXpkYk5KUzFyeEVXbnlXeGczNkVtUGRXb1BQRGVqZjdlQVRHTXNIYUR6VHVDNmhiajBOL3BYbUFzcnVnczBXTFA4TnVCSmpaSm1XRWxjbDA5bVBKMUptVzB0TDUrdWlIQnVHa1hzbGpYODduaTRFelZuazlBdmtzUW41N0VTZGhyQjhCTXVQak9XUC8vNE9Ic1IvZTdEOFlkVGxmdFJoRmZnZExHOUh1MXdBZnpyNTVqQU9raVFLaHZWYkdCNkMwLy9pKzJpTmVSeDhGZ252UmZ4ZmFpbnpTazdORTBpSVVQYmY0M3dXbU5UTmQ3QnBLRUE3TFpmRkFZOXpwM3laVFNNRGlRVmkvVStTZzVRWUFJZk9tRzJld3NVakEvcmhXN0w0QmVybWo5aDBVb0IyT0IrVFpUVzRCL2s4T3lHL3lDaU9vVzFJWUg2SDhYUHo5TGJjS3ppbFFHaHBNWnZoWnlIR3dHM2c0MkJrODVaOG85MEc4WDBOaVNzMUl2MlFHazhLZFdzenQ0c25JUDhScVI5bURRWERJZFpTYkJvWjBJbDNTMk9YWlhZcEY0OE1VMTR3bksxYmVXNDFwTDNGRVFDSmxQVld0REcyZnV5VnJOUjN0QlRkU2pCOFlySUZveVZ0bm8yT0N6Qmd4RE5CQjZwWEtNSHd4aUQ5Z0szS2M2UGNrdkJHSlJpK01jbUMwWUQ0ZmRLNFhvaDlXL1lUQ1pSZ2VLTnZ3Y2hrR3RHMmUyVytha3NsR0w0eG1ZSkJheGxwVEkra05SUWRtR1Izb1VNSmhqZjZGUXc2Y0NyelUzdENNTERXdVFzZDNSK0F3M0tuQlE1S3luamhqZHhPbm5EaUNFWnVHanJzWVdsTUp0cGlXVUszQm1UL0ZmRXVkaGc2VVBlNkZnejBiUjZmYTZNbW5ZM2tsRHdoYVlqTFVVNmVzMjd0MGd6em03VmdVdTk2RDZma0h4Q2E2MlVWR0NNcThnMDJqUlFuaW1Cb1J2WWlhVHdtMm50Zlc5dkNrN1cwZFlIcy93SjE2M2s2ZU1adVEwVzlDd2JHOUsxc09xV0F2SVUwWDV0aURadE5iU2pCY0dFRWd0SFdkc3ZKOEUybkF1VXhpYnA1aFdNOTJvRGYyeWI4WDBLeDNyRU5GMG93b2dIbTBoSnB2amFWWVBqQ2lTQVlpYlQxZVdrc0ppYkNrL1BtNVU1aWM4cnhRcGxkTVJQcDdIbHNIaHFVWUVRREpSZ2g0c1V1R0hTUkQrcElWK1RKNHhIMUxHOWRqQ0hUaU1sUjRWaUcyRTdIUmJoQUtGQ0NFUTJVWUlTSUY3dGdvSjJ6MGpoTXRIT2VqbDJ3ZVFGWS9sR1pmU25GZkRZUEJVb3dva0hDTUJkTDg3V3BCTU1YS2dxR0lTNXZUcHRuaDBYVSswNVpuQUpERkF6RDZEZ2QvcDZXeG1IR0RmRkZOaCtIMFFiMHdhT3lNbU9FK09VTkkvY1NMbEExNmwwdzBGNjc0N3E0cFJwR2NkcWE3a3VSNVV0RUg0NWdEbXdLaS9EWmo4LzdJRVMzNHJPemVhYVl6V2xVaDNvUmpKb3pSTUdvT0FFTmEwaTJkVEdHZUVwOFRGSm1QRHZZdkdyVXUyQ0VRYnFoa3NPRkJzeWxpMld4YXNUajZOZDEycHNYdjU3VENRWWxHQzRNU1RCYVc2MDNvbzFkYjZxenFWdGZZbk01NkFwQnc5b3hvVndSTVlsR05LMzkxVnlpS2lqQmlFWXdtbFBkTGJKWXRTVGE3cUhpQSt1K29RVERoU0VKQnRwdmhkVC9HSFd4djl6V3hSaTB0UGlFdEh3SnhiVnNYaFdVWUVRakdIUndHdU9oMGdWNWtUT2VNaS9oaFB4RENZWUxReENNczFxdFZnenU4cmV2cHl5UGp3SHdzcFZoL1N1VldqS2RDd1NHRW95b0JBTzVwODMzb3ArZWs4V3NGZEYrd2E4U1ZvTGh3aEFFQTM3V1RQQmJSSFRjQWV4R3ZKVE5IZlFNTmNmNkJzK1A5ZWJueGZxZVBKV1gya0NaekhnZkV4akNHUUlsR05FSkJzRitFSkV1ZHN2aTFvYmlUNXlLZjlTTllPaldaalR5ZmFIUnVkOUFIb3RZcFdBNE54cUpZMUxmVE5UNUsyd2VpNjBmTWlBVUQ0S2pCZmJtajhiNjhzdGoydzdhRDJxaGZVLzB4eTZacnpIUzJxdWxwVE5sK3d5SXVoY01qQlU2NjFRTm0yY3VQb1BEUllUUkJqcGJSMk1BT1Y5SFp6T1E5OC93L2ZZd2lQSHRmamUwYnYyRmsvQ1BlaEdNT3JzT28vTHQ2N28xWERnVnVpRS9Cd0x4anhLeEtPWEcyTTZkdGkzNnc4T1JkbkdQN1RjZ2tGdWRDOGJVdkE2amxraWtPOCtUdGcySU1YU1l6ZnhEQ1lZTHF4QU1MN2V2bzc3dHRuRi8vMG5Za3RnaEVZbHhITHFhekoydGpFcWJzOWl5U1dYbjJ2NERRQWxHL2FPc1lCaldBVGJ6RHlVWUxnd3NHTGxwS0x0VjZwTkpIVlo0WUhMZi9uZkpCV0lDaDJIZFFFWGk2ZXdsTXI4bGRKNUhZdHY3aFJLTStrYzV3VUQ3N0dVei8xQ0M0Y0tBZ3VIcDlHZEtYTVhtRUl4OHUwUWNYUGpZYSsweW1Vd2oydXR4cWU4aW9vNFgydlkrb1FTai9sRmhsK1NQYk9ZZlNqQmNHRUF3NkhvSzdBNlVuY2lvNThHbXBzdGVlQjFENzlCWDVlSWc0ZjNEcDNPcEdPTE1sL2tmeHgyeHpGcmZqOFZYZ2xIL3FMQkxzb1hOL0VNSmhnc0RDRVlpVmY3MmRXYnBKZHc5Kzg2UmlzTjQ5Zzd1aDNWaEY0UEY2UW1KLzFMcTFnSXU0aG1WQkFNVDl1N3g3MHdKZy9UWWZVNmhMSlJnVkVhRlhaSUgyTXcvbEdDNDBLZGd6SjV0bmdLZkI2UyttUGovMEl3WkhTL25JZzVHUnhzaEJnTlNrU2psWWk1UkFQcnVVbG1jWW1KeS9YbkczSEV4SzZEaUZrWkV4QmpZeUNtVVJTWEJRRHVQb0E1Ym8yYlN5TDZkVS9JRTNpcVVuZ1lObTJnRDE3TjArRzhWcCtRZlNqQmM2Rk13NHJwbFNmMFVFVEZOTmk5RnovRE1XRy8raUVRa0hQYm1OOFMyYlp0NCtiaHpqMG41SjNpQmRGczFsL0FFMUwydUJhTldUT3JpQTV5U0p5RHY3OHI4MUp5ZXJ5NldRQW1HQzMwSVJ0T2MzR2xvcDhOU1AyUFV4Vk5sMS9UcjhxMnh2dng2OFBraXNmZ25mbDhmNng5MGZRVWw0bjVHR3ErWXVqaHk1cXp1MTNDUmlsQ0M0WTExS1JqMFdrZ3RGL3dtUlNVWUx2UWhHRjRtR0FhTFlQUHkyRGcwUGRZejlIN3Nwc3lOOVF4VWZDMGlYZnlGUHRvbmkxbE1HcXhjcENLVVlIaGozUWtHeENLcFcrL21kSUpCQ1lZTFBRb0d2WVFhOXVYZjcxbHA2NkpLbEh0OC9Rc1VSKzBYVFh1QUVneHZyQS9Cb0xmcjJRZkhyL0d6bGVtS0tTTVl1bmtIVFN6RWxMNCtzRmFDZ2ZvK0IrN1dqT3puMkxRc25OY0dpRDFVVHViUG9kbkY1cEdBenBnZ3Z1dFdCdXI2SDd0T3VyaVVpNVFGWFNXS010L0hCTjVFYXlYVXIrdzlNY0VwanZHSzR2Zklid1ZkdzhJcGxBV05CWlM1RHZXaE41WG40ZWRvcWQ4b2lGeXgyd2sraXUvMEl1aWw5S3dUVHNrVDRtbHhEdHJ6Um01WGpQVW8ycFhlNkc0OWdqeHZ3K2ZDaE5HaGNmaHdRQzlqYVRMRUc5eG9HRmVXdmlZK1V1U20yUStjb1hkeTZOWWlOT3d5VlBySEdCaDNKb3p1VUNzZVQ1bVhRZkYvamhnL3hPZlhOZDI4Z2pvMGFIM3BMQWxOTkdkdEw1WWk1NXZRZ2JlajQrNmcvOWdzTXFBT0gzSGFTZndFYlhjRHZtZVRodlVwVGU5Nnk0UXpNNzZRbTlZMFo5RnBkUGNtNnZOcHNBdDlzdHhwTyt2WDRFYkUyMG9UQ2NzR1NvbmwrQi9mNldhL1ZjVjUwYVNQeDd0T0RlRUJ4ZzEweHkrZGtvWGdmQWd4RmlEZTE5QU8zME0vckVRTzl5TG1BNGkvQmIrM2wrYm5rUElITjRQclVMKzErRndCMjJ2aG94MWlmMUc4MVhwYnZBMjVaaksrcjJseFIyNGExZDhSUHpFZnV3b1djc0VXaUpNellqK0kzdytWdEtzaEhnSC9BUFpTbnFqVHpmaTh4aDY3dW5VdVBkckEyOE54WXJIL0F6M3RJNGo1K1RPTEFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJGSURPXzJfMCIsIkZJRE9fMl8xIiwiRklET18yXzFfUFJFIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsIm1pblBpbkxlbmd0aCJdLCJhYWd1aWQiOiIzM2Q2ZDdkMDI3OWY0ZWYzOTZiMzJkMzI4MmY0YmRlNiIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwidXYiOmZhbHNlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibm9NY0dhUGVybWlzc2lvbnNXaXRoQ2xpZW50UGluIjpmYWxzZSwiYmlvRW5yb2xsIjpmYWxzZSwidXNlclZlcmlmaWNhdGlvbk1nbXRQcmV2aWV3Ijp0cnVlLCJ1dkJpb0Vucm9sbCI6dHJ1ZSwiYXV0aG5yQ2ZnIjp0cnVlLCJ1dkFjZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6ZmFsc2UsImFsd2F5c1V2IjpmYWxzZX0sInBpblV2QXV0aFByb3RvY29scyI6WzEsMl0sIm1heENyZWRlbnRpYWxJZExlbmd0aCI6OTYsInRyYW5zcG9ydHMiOlsidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN31dLCJmb3JjZVBJTkNoYW5nZSI6ZmFsc2UsIm1pblBJTkxlbmd0aCI6NCwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjQsInByZWZlcnJlZFBsYXRmb3JtVXZBdHRlbXB0cyI6MywidXZNb2RhbGl0eSI6MiwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjI1NX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNi0wMS0xNSJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjYtMDEtMTUifSx7ImFhZ3VpZCI6IjhkNDM3OGIwLTcyNWQtNDQzMi1iM2MyLTAxZmNkYWY0NjI4NiIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiOGQ0Mzc4YjAtNzI1ZC00NDMyLWIzYzItMDFmY2RhZjQ2Mjg2IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlZlcmlkaXVtSUQgUGFzc2tleSBBbmRyb2lkIFNESyJ9LCJkZXNjcmlwdGlvbiI6IlZlcmlkaXVtSUQgUGFzc2tleSBBbmRyb2lkIFNESyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH0seyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoidm9pY2VwcmludF9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZXllcHJpbnRfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhdHRlcm5faW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJoYW5kcHJpbnRfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZhY2VwcmludF9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImxvY2F0aW9uX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInRlZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJzb2Z0d2FyZSJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVsZXNzIiwiYmx1ZXRvb3RoIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDR0RDQ0FiNmdBd0lCQWdJVUx1TEp5bHZKcUs4SkV6emVhV1RZb2NIYWV1TXdDZ1lJS29aSXpqMEVBd0l3ZkRFTE1Ba0dBMVVFQmhNQ1ZWTXhFVEFQQmdOVkJBZ01DRTVsZHlCWmIzSnJNUkV3RHdZRFZRUUhEQWhPWlhjZ1dXOXlhekVWTUJNR0ExVUVDZ3dNVm1WeWFXUnBkVzBnVEZSRU1STXdFUVlEVlFRTERBcFdaWEpwWkdsMWJVbEVNUnN3R1FZRFZRUUREQkpXWlhKcFpHbDFiVWxFSUZKUFQxUWdRMEV3SUJjTk1qRXdPREV5TVRJd05qTTFXaGdQTWpBMU1UQXpNRGd4TWpBMk16VmFNSUdITVFzd0NRWURWUVFHRXdKVlV6RVJNQThHQTFVRUNBd0lUbVYzSUZsdmNtc3hFVEFQQmdOVkJBY01DRTVsZHlCWmIzSnJNUlV3RXdZRFZRUUtEQXhXWlhKcFpHbDFiU0JNVkVReEV6QVJCZ05WQkFzTUNsWmxjbWxrYVhWdFNVUXhKakFrQmdOVkJBTU1IVlpsY21sa2FYVnRTVVFnUVhSMFpYTjBZWFJwYjI0Z1NYTnpkV1Z5TUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFRlY3Q1QxWTUwWVV0RHM1bkNmdnBZMzhMN0lLd0hoaDFFQ0V0ekZHZ0pxTXJXYzlPQ3hFUnVyYmpsdzFlbnljY3I0WURQbkR2K3l2czZjSThZUlozU3FNUU1BNHdEQVlEVlIwVEJBVXdBd0VCL3pBS0JnZ3Foa2pPUFFRREFnTklBREJGQWlFQWlKdjN3SFVxeXVKMGNBdDkyOW1xQWFQekZoamhuYXlzcWpOdHhLcFV6QmNDSUVRWFI3czg2TzZCbkJIMzBJV3VXTHh1dC90c2hpYVQ2RXUwTmtoNkhkNjEiXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZ0NBWUFBQUVFZlVwaUFBQUFCR2RCVFVFQUFMR1BDL3hoQlFBQUFDQmpTRkpOQUFCNkpnQUFnSVFBQVBvQUFBQ0E2QUFBZFRBQUFPcGdBQUE2bUFBQUYzQ2N1bEU4QUFBQWVHVllTV1pOVFFBcUFBQUFDQUFGQVJJQUF3QUFBQUVBQVFBQUFSb0FCUUFBQUFFQUFBQktBUnNBQlFBQUFBRUFBQUJTQVNnQUF3QUFBQUVBQWdBQWgya0FCQUFBQUFFQUFBQmFBQUFBQUFBQUFFZ0FBQUFCQUFBQVNBQUFBQUVBQXFBQ0FBUUFBQUFCQUFBQUlLQURBQVFBQUFBQkFBQUFJQUFBQUFBUWRJZENBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBQ1ptbFVXSFJZVFV3NlkyOXRMbUZrYjJKbExuaHRjQUFBQUFBQVBIZzZlRzF3YldWMFlTQjRiV3h1Y3pwNFBTSmhaRzlpWlRwdWN6cHRaWFJoTHlJZ2VEcDRiWEIwYXowaVdFMVFJRU52Y21VZ05pNHdMakFpUGdvZ0lDQThjbVJtT2xKRVJpQjRiV3h1Y3pweVpHWTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5MekU1T1Rrdk1ESXZNakl0Y21SbUxYTjViblJoZUMxdWN5TWlQZ29nSUNBZ0lDQThjbVJtT2tSbGMyTnlhWEIwYVc5dUlISmtaanBoWW05MWREMGlJZ29nSUNBZ0lDQWdJQ0FnSUNCNGJXeHVjenAwYVdabVBTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM1JwWm1Zdk1TNHdMeUlLSUNBZ0lDQWdJQ0FnSUNBZ2VHMXNibk02WlhocFpqMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzlsZUdsbUx6RXVNQzhpUGdvZ0lDQWdJQ0FnSUNBOGRHbG1aanBQY21sbGJuUmhkR2x2Ymo0eFBDOTBhV1ptT2s5eWFXVnVkR0YwYVc5dVBnb2dJQ0FnSUNBZ0lDQThkR2xtWmpwU1pYTnZiSFYwYVc5dVZXNXBkRDR5UEM5MGFXWm1PbEpsYzI5c2RYUnBiMjVWYm1sMFBnb2dJQ0FnSUNBZ0lDQThaWGhwWmpwUWFYaGxiRmxFYVcxbGJuTnBiMjQrT1RZOEwyVjRhV1k2VUdsNFpXeFpSR2x0Wlc1emFXOXVQZ29nSUNBZ0lDQWdJQ0E4WlhocFpqcFFhWGhsYkZoRWFXMWxibk5wYjI0K09UWThMMlY0YVdZNlVHbDRaV3hZUkdsdFpXNXphVzl1UGdvZ0lDQWdJQ0FnSUNBOFpYaHBaanBEYjJ4dmNsTndZV05sUGpFOEwyVjRhV1k2UTI5c2IzSlRjR0ZqWlQ0S0lDQWdJQ0FnUEM5eVpHWTZSR1Z6WTNKcGNIUnBiMjQrQ2lBZ0lEd3ZjbVJtT2xKRVJqNEtQQzk0T25odGNHMWxkR0UrQ3JPdGxsRUFBQWJPU1VSQlZGZ0p0UmRyYkpOVjlONzdmVis3N2duYlNGeWM0T2ptZzJpTURqRktvc0FZQkh5QlkyRDhZV0tNemhCK09GOXMrMk14eWpBaUd2OU5Rd3d4TVhFUEVnenZEWXJBRWpRYm9BTXh0TjBZUTUzUXRkMnJhL3M5cnVmYzlpdnQxcTZRd0czUzc5NTdudmVjYzg4NWw1RFpobjE3bTBhWEgra2FJSno4ZVBXc3Z3bVI1YUF2SFBFT0JKdVkxVVpjNzc5QWt6aFV2dDJpeEhkS2Q3WGFyQ0VhcE1zUGQvSnJselJpVEUwUXltaWpmUFhjS0NlY1UwOVRiUnc3aVUvaW9uekhYZzVxZExxY3E2c3JZZ0JhdnFQakNEZU1haE5SSm9US1ZaMWRmTEEzUUxnQjNBMERZRnoxTkcyMElCSnpybDVaTnRqai94S0JsTEYrVCtTaVpBSk5Mck4rMDJwYXNhUDlDeTVaUGdBZGtrZGxTNDh5TnZsZnhBZ0ZDWlU0WVN0UG5PS1ZMUzJLaVJZWUdRZ2pVQXhRbUs0NDNLa1RTV0pYenZrZW9Cci9Dd0FNZ1ZTU2lYdnJlc280NTJUb25HOE1nSmROSUtGVWRaZXBRcnc4MEJQZ2trVHprUW9BbkZIalJWZEQ3UUd4TnYvc3pSMGN2QnN4MTRuZnRNZE1SSm8rWCtad3lrTTUvb2RrVzBHZlVIZzZRc3AxYmF1RSsrWE43ZGVHRk84VVVmVStIVUtFVlhVZWR3b0NoeU10TXpqQ3BvcW5iQm9jQTJ6Qzd5V1V4TzBQQVlkQmE4eVg4L0tZT2pyK09NbFdMcEJmQ0RuaFdLN1ptOXN4OWxRUUVQZURFSVovbkdnUW9HNFI5WlR6K1J6c1R5VkdBbGVELzQ1NXRSS3VhM0hjK0lRU25kbHlKUjRPM2xjNlZUaU1RbVFDM3VTVVR2WC81cytTRmNaQVlrbWN3SnhRa0VmcFBrL0RodlhtbGpzMlljNDFxOHFHem80T3l6SUZUanpSS3hyTHlpYWV4ZzFzem9EUG1raHNNc0h2VFFLSFE2NndQRkpKc25QUDhGRHdFM2ZES3g4bkl0NlZ1WDE3KzdxMHJrc3JNZVp1OE5BZmxKS0cyMklncnBYRFlWVHMvSm1EOFI4RVg4bzNiWkJXWkF3QWt1MjJSNTlqU3RaeEl4d0VyeE1EaU0rejJsWXVRalFUZlhuMlkzdUliaHdYbHhtY2FucU0rUXFQUGJQTTZZeUhaaEtqVmpQK084YTVwbTVLZ3NVV2pERGxKSXNZemRPQmVONHlsMVpjOGRVaENIODlHencrTTV5QmlJbEk1TWE3SzQ1MlljWUF1MFNEYWN4ZnRGbFNjb1l4S1FQeGRHTWJFTkt3WjNuTEJNaVFPTXVxbkNjeFpEbms1UE1RNFR1NWxqS0hxSlJKekZXL2xwYUc4L3RvVlplVEc1b0dnaUVGU2l3MGVINGlpMmdxM3FRVWR1R1FCbGszaFBlenFCYnFHOVVBSWtJTjZyNkJYLzFaUk5mUVJUT0lxV0xGNi9wbWpCaFE0SUloSXBVbDR2T00zWmowYWZNWU9qVDVRaUdPdU1Jc0VzblBMZlNHY0NOeHlGZk9YTmRoWXg0ZUljVlFLYUhqcnZvMVJRUlRXbHNkNGlZTkprbmtDV29GTDhWVWlrUFI4SlR1ZGpkdEtCSjdiUnRuRU9NK0s1a3MraE10Q21VWGpZTEc0OHlXUTJUR24vVFlqUzJJbEhuRXptMXYzbnNGeXlvU1lPck9UQmgxeGEzZzNSRWM3Q042djYxVHk3ODVhQ1dUVTYyUXNSODJBL0dPQ0VqSkpIWWZFVGEyb0xnVzhsQ1FoTlVRK09jbGlMN1J1NllBbmhhRmxybXN4U0RVV2ZIMUlXNVEvUWR3c1lXckVRTTZBaEd5V0VWdVBhY2h4MWxHb3QvOUM0czJZenhJQ2htR3VyblVDTVp5QWljb09jNkZMZTN1enNWVjJwUVdSMDB6d1FQRXpQeVBaYVFjNnNUdm1NR2d4dTNraG01RTgwbnFUSVljbVRVWWRxMDRlb3hMcXY2cUthSTJ3Vy9tM3ZTdmFXSk1YblkzM1k1bHdtRHNFcHh1VVRRRGNyd0ZxVjBNTklJZnRsUFFWNHIwWUJqOCsxWGRaM2pWMGE3OS9ybHpoVlVxZTNxU2N6QVdORWMwZndYdUwxNEN2aDJxMkhVQW1QRjZJeExtY0dMa20vbjZRVnZDSUxkaFI4SHdCTkMvWW1wazZ2ZzRwSGRlVFpTc0FEVHF3VGtqZ1plRnBnUUV3eWdmV2FMWXJSMjdoVkRLVDBQODNCUHRONFdKTThXUzBFNnk1WUpJdXQ4SWVBdmNqVFdMVTJscjBVUENLQXBuckszNjFHa1NHQno5eWR2ZnRwVGxrVko5eWxEalRXNm0wNktwb1Znd2E0N0MxYkFQMHUzcmwrdlhIQ1pveVl1TGhNSXpGUUNETWtVaVdrUVBldDNqa1VuZlNKRWswMXFtRUs1UFRZSWQwZ2RVMUZyaVg0TzZJek9MbFVJdC9zNzEzdG90YUdsczRRVVVXZ3NUVnlnZ0tnRzRBMzdxeEkxUTRFWi9NQWZja2cvOU5nSGhpSXZ0WGFhQkdGQjZjbVJvT3dZNGxWK0RKMVdQdUNIYnRpRVQzbHUzR0Z2VnBDRXpDWXJobEQ1KzNUV3VoaWEwUXRuQ3NLNmg2Y0RGU2JqcEZpbzhLUlIwTEFUaE5pZ3NueUppL0pac1RGMkZUR2JNZFhya3c3OHZqRmwwUXk2RXA0bUtqeW9RbnltZzBJUllhUEVCMWlzeGFhSDdvM1YwVHIvM2N6T3hZYzQzaGN6MlpmTksvUHM4alRWWldTb3JoT0xhaVV4QkF4UVE5MU1DQTVVcThBcWtWS2N5ZXdjS05YVTMxRHhkTXBrM2hEaENLQWJlYlF6V1d4ZlZ0TThlSEhOdHJYa2VtUkxaOGdaWVZCZkNPQmV0a1ZDTTBZTTJiYUlRK2hKTFFZRjNEOGdSbHNLWHdtM0l6SXhxdmkwWGZOWlJBZytrL2ZoSUVsUUphVGN6bDF2RCtCOWNNQTdneXF2dVRRQUFBQUJKUlU1RXJrSmdnZz09IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiRklET18yXzAiLCJGSURPXzJfMSJdLCJleHRlbnNpb25zIjpbImhtYWMtc2VjcmV0IiwiY3JlZFByb3RlY3QiXSwiYWFndWlkIjoiOGQ0Mzc4YjA3MjVkNDQzMmIzYzIwMWZjZGFmNDYyODYiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwidXAiOnRydWUsInV2Ijp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwiY3JlZE1nbXQiOmZhbHNlLCJtYWtlQ3JlZFV2Tm90UnFkIjp0cnVlfSwibWF4TXNnU2l6ZSI6MTIwMCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMl0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6NTEyLCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjEyOCwidHJhbnNwb3J0cyI6WyJibGUiLCJuZmMiLCJ3aXJlbGVzcyJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XSwiZmlybXdhcmVWZXJzaW9uIjoxfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDctMTQiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJWZXJpZGl1bUlEIFBhc3NrZXkgQW5kcm9pZCBTREsiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI1MDcxNDAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTA3LTE0IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjF9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDctMjgifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyI2Yjk2MTY3MTU3ZWQ0ODc3NjA3MDFiZGYwMDQ5MDdkMWZlOTE3ZWUxIiwiOGUxNjE4NmQxODQzYTk1NjYyNWU1ZGIzN2RjNzdkYzc0YzIxOTA0YyIsIjhiZjcxMTU3NjNlYTQ5YjY1NDllMDgzYzlmZThkYzdiNGVmNjBlMTkiLCI4MDI0NWY4ZTMxN2NiYzc5NWM2NjRiZjg0Mzg5ZTgwYTk3YzVlNjIzIl0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjZiOTYxNjcxNTdlZDQ4Nzc2MDcwMWJkZjAwNDkwN2QxZmU5MTdlZTEiLCI4ZTE2MTg2ZDE4NDNhOTU2NjI1ZTVkYjM3ZGM3N2RjNzRjMjE5MDRjIiwiOGJmNzExNTc2M2VhNDliNjU0OWUwODNjOWZlOGRjN2I0ZWY2MGUxOSIsIjgwMjQ1ZjhlMzE3Y2JjNzk1YzY2NGJmODQzODllODBhOTdjNWU2MjMiXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ill1YmlLZXkgTkVPIn0sImRlc2NyaXB0aW9uIjoiWXViaUtleSBORU8iLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MiwicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCIsInJlbW90ZV9oYW5kbGUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURIakNDQWdhZ0F3SUJBZ0lFRzBCVDl6QU5CZ2txaGtpRzl3MEJBUXNGQURBdU1Td3dLZ1lEVlFRREV5TlpkV0pwWTI4Z1ZUSkdJRkp2YjNRZ1EwRWdVMlZ5YVdGc0lEUTFOekl3TURZek1UQWdGdzB4TkRBNE1ERXdNREF3TURCYUdBOHlNRFV3TURrd05EQXdNREF3TUZvd0xqRXNNQ29HQTFVRUF4TWpXWFZpYVdOdklGVXlSaUJTYjI5MElFTkJJRk5sY21saGJDQTBOVGN5TURBMk16RXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFDL2p3WXVoQlZscWFpWVdFTXNyV0Zpc2dKK1B0TTkxZVNycEk0VEs3VTUzbXdDSWF3U0RIeTh2VW1rNU4yS0FqOWFidlQ5TlA1U01TMWhRaTN1c3hvWUdvblhRZ2ZPNlpYeVVBOWErS0FrcWRGbkJubHl1Z1NlQ09lcDhFZFpGZnNhUkZ0TWprd3o1R2N6MlB5NHZJWXZDZE1IUHR3YXowYlZ1em5ldWVJRXo2VG5RakU2M1JkdDJ6YnduZWJ3VEc1WnliZVdTd2J6eStCSjM0WkhjVWhQQVk4OXlKUVh1RTBJek1aRmNFQmJQTlJiV0VDUktnanEvL3FUOW5tRE9GVmxTUkN0MndpcVBTemx1d24rditzdVFFQnNValRHTUVkMjV0S1hYVGtOVzIxd0lXYnhlU3lVb1RYd0x2R1M2eGx3UVNnTnBrMnFYWXdmOGlYZzdWV1pBZ01CQUFHalFqQkFNQjBHQTFVZERnUVdCQlFnSXZ6MGJOR0poamdwVG9rc3lLcFA5eHY5b0RBUEJnTlZIUk1FQ0RBR0FRSC9BZ0VBTUE0R0ExVWREd0VCL3dRRUF3SUJCakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBanZqdU9NRFNhK0pYRkNMeUJLc3ljWHRCVlpzSjRVZTNMYmFFc1BZNE1ZTi9oSVE1Wk01cDdFamZjbk1HNEN0WWtOc2ZOSGMwQWhCTGRxNDVyblQ4N3EvNk8zdlVFdE5NYWZiaFU2a3RoWDdZKzlYRk45TnBtWXhyK2VrVlk1eE94aThoOUpESWdvTVA0VkIxdVMwYXVuTDFJR3FyTm9vTDltbUZuTDJrTFZWZWU2L1ZSNkM1K0tTVENNQ1dwcE11SklaSUkydjlvNGRrb1o4WTdRUmpRbExmWXpkM3FHdEtidzd4YUYxVXNHLzV4VWIvQnR3YjJYMmc0SW5waUIveXQvM0NwUVhwaVdYL0s0bUJ2VUtpR24wNVpzcWVZMWd4NGcweExCcWNVOXBzbXlQeksrVnNndzJqZVJRNUpsS0R5cUUwaGViZkMxdHZGdTBDQ3JKRmN3PT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZkNBWUFBQUNHVnMrTUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFIWVlBQUIyR0FWMmlFNEVBQUFiTlNVUkJWRmhIcFZkN1ROVjFGRC8zZDU5d2VRU0lnUzlBUUFYY0ZMQVFaaTlmcGVWejF0WS9XVFpyNVd4cGM3VzVrbkxhNWpJM1o4NXNyUzJuTTJzanRXd1pTN0lVSDRINHhDbkVReDREQVpGNzRWN3VzODg1djkvbEluQnZWSi9CNFB2OW51LzVudS81bnZNNTU2ZnpBL1F2MEhiL0lyWDNWRktQbzQ1Y25tNGluVUlXWXdMRlJtWlFVdXdqRkcvTjFpUkhoMUVaME5SVlJ1ZHF0MUJkKzJuU0t5Uy9PaHlzMCtsazNlLzNrUTlxdkQ0WlV0YTRWVlNVdVkwZWlweWlUaEFmb2NvT1JWZ0R1dXczcUtSaUFkM3JiY0V0alRqWUlvZjZXYUhzQ216VlBXQ014K2NnaDh0THFXTUthTVdzVWpMcW8yUnRKSVEwb096bWVycFF1NGVzWmdzT05rR3hIN2Qwa2R2VFQxN3M0T01VN1ZJOFpoamdHYU0rQXE5aUVOdThQaWYxdWR6MDdNd3ZLV2Y4R2xWb0NFWTA0UEM1V2RUYVhZRmJSOHZOdkw1KzNLZ2ZiNXhOTXlhOVJhbUppeW5hTWxHVFZ0RmxyNmJhOXUrcHFuRVg0dU11UlJnalNZRWhyTjd1dEZGZTZscWFsN05ma3c1aW1BR0h5blBwYms4Vm1ZMHhzdG5wdGxGQ1ZDWXR6VHVCTjgzUXBNTGpUdGV2ZFB6U1VuSjdlOG1ranhaMzlmWGJLRGZsZFpxYnZVK1RVZ0duQlZGNmZRMmlQSGc0VzE2VVdVd3Z6YmsxNnNNWkUrUG4wcHZ6N0pTZXVBeWVzOGxjcENtYUt1by9wK3FXcjJVY3dJQUhXcnZQMFlFemhYQXRMQWJzc0hocDdpR2FtdnlpalA4cnlxclhVV1g5WG9vd3h5QXVmTkJycDQzUE9CRlhabGtmOE1EUmlxY3B5b3dBd3B1ejJ4K2ZXdnovRHRkZTlzbXN6eWd0Y1I2QzF3YmR6Qmw2T2xxNVdOWVk0b0dhdGhKTXJrVEV4MGpBUlNIQVZzKzVyWWtRTlhiK1FnZlBMc1E2Z1h5SW5zcmVRZm1wbTdSVkZZZkw4Nm4xZmlVT2tZdlNoa1VQeHZidWt6b3k2SzFpaE0xaG8zWHpXNkV2U2ZYQStkcGlXR2FXZCtkb1h6THptR3dLWUZMQ0FzUkFsUEJBaE1sQ0ZYVTd0QlVWUHI4SGdWY0pIV3ErRjAwcGxyK0RNVGRyUDR6dnhZMTFrTk1oeFQrU2VUR2crZDRWNUxRSml0eVVHSk5COFZGWnNqZ1lCWk0vSUkvWENUa2owcXlET3BGMkFWUTE3Q0lqVXAvRG5UMVVrTDVGNWdkaitzUzF3ZzFnRTNnaWdtNjBmQ1h6U25QWGJ5QVBiSVh2K0lEcEUxNlRoYUhJUzlza3lobG1NRTVGM2NmcUFLaHEyQzBFNVBIMWdZYVhhTFBEa1pHMEhESk9uS1dIcDUxSTB6NVNPdXg4ZTFXQXVaemRIUXJUa3A4VG1qWG9JK2xhMHdHWnN6dWJxYk8zaWZRNkEvVzd2VlNZc1YzbVIwSkt3a0tjNFdIaUJrbVI4STNDQ2dJODdvT0w0cXpUNVArUlVKQmVqRU9nQVBLOGhZUHphdE0rZUlUcDJJTzl5VFFtZXJvbVBSeHgxcXhBY3NpbGUvdWJTZUViY1dRR1lFQ2doY0xZMkh5S2pvZ2pIMjVoTXBqcFV2MU91Z2xpNGVoMmVSdzBPMzJiSmpreXVDZ056ZzB2emxZTVNpU3MwdW9vNE1HN2hNT2pDRWFYMXlGRTBuU3ZqQnp1VG5FcEs4Nlo4SW9xRkFJdWJ3OGtnOUFyRWFSRVdTWkkrakg0WGJwNmc5RTlFbkpUM29hUnpETitNVUpCUURIbjU2YThvVW1FQnVzT3hCcy9ONSt0SkViUGtBRkRqOFVHdk9zL0lXdmNTZ2xHQmh2UzcvRlRZZnBXR1lkRFk4ZlBBeFdTQTM1c1RDNHA0K0xtNEFhcUlvUGVRdGZ1Zks2SmgwWmh4bGJzVVhPU21YTmlmRDVaVEFreURvZmJiY2NseG5BOFdOQXF4Q2JSTnlraFh4UXBhRHc2N2ZYVVlic2lHMEtodHYyb2VJdmg4cmhRTVlPY0VBcVhHL2VJK3puZ09jNXl4cjhxODJJQU0xYy9GTEZPcGxxdTVlRlFYck1aekdjVkNqWWJMV0c1STRCVDFldVJybGJ4dE5PdE1pdERERWhMWElJeW5BQXZ1T0VXRTNYM05kQWZ0OTRWZ2FHNDJYSVF0MFpYNlBlQ0UvcVFGZTlySzZIeDdZVTUwS3ZIN2ZXNGZTK3E3S0tCSnhzZ2dCWDVwU0FHaDFqSXJWaDV6UTZ3M1JmYWFoQlhtL2FDYkNaVGpDVUZVVHlXWnFXOXA2Mk1qSlBYVnFPclBnTU80TnY3NEdrZitvd2Z0TlZCRFFuakZKcUhTdzE3cFh2aFdXNUtacWUvUTQ5Ti9VU1RDQVZXb1FYRklIQkhYWGUzRlByVURzdUdEbXRGL2hIS1RIcGVreGhpQU9QSStTSnE2UzZIRjRJOVlXemtCSlRvNDZpVU16V3A4UGlyL1JpZHVMeEtZc1Nrc1Y4dkxsT1F2aEdYMllsUjBPQmhCakMrdS9nRWN2WTBBcEs3WWs0MU54alBTUW5XRkhURjY2VXJqZ2V2QjhDdTVhK2wydllTUlB0dVZEbzczaGhkTVNIblVYN3RUanNWWkd4QWwvV3B0aU9JRVExZ25MMjltWDYvdFIxdG1sa1lqOFc0WCtDU2pXY1VER1kxTnBTL0M3aFNLcWlNTE0vbDJRbVNXWjczRGR6K2dpbzhCQ0VOWVBRNDZxbmt6d1hVYnF2Qmt4alVRc1dmWkZnYnVvM3JBZit3TjdqT085MCt5bng0UGkzTCswbllMMVNjaERVZ0FQNGdQVi83SWQxcSsxSFNobXVHa0lxV1JQZ3l4TUZxUDhIZmpUbmpYd1k1YlFmYkpjdDZPSXpLZ01Ib3RGL0hlMWVnc2F4SFNxRzZ3ZmRtUTV4OE55VEZGcUJjcDJpU293SFIzeWs1KzM2aEY3dlhBQUFBQUVsRlRrU3VRbUNDIn0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjAtMDktMTYiLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ill1YmlLZXkgTkVPIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVMkYxMDAwMjAxNTEyMjMwMDYifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIwLTA5LTE2In0seyJhYWd1aWQiOiI3NDA5MjcyZC0xZmY5LTRlMTAtOWZjOS1hYzAwMTljMTI0ZmQiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6Ijc0MDkyNzJkLTFmZjktNGUxMC05ZmM5LWFjMDAxOWMxMjRmZCIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IEJpbyBTZXJpZXMifSwiZGVzY3JpcHRpb24iOiJZdWJpS2V5IEJpbyBTZXJpZXMgLSBGSURPIEVkaXRpb24iLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2LCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX0seyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Iiwic2VjcDM4NHIxX2VjZHNhX3NoYTM4NF9yYXciLCJlZDI1NTE5X2VkZHNhX3NoYTUxMl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwiLCJiYURlc2MiOnsic2VsZkF0dGVzdGVkRlJSIjowLjAsInNlbGZBdHRlc3RlZEZBUiI6MC4wLCJpQVBBUlRocmVzaG9sZCI6MC4wLCJtYXhUZW1wbGF0ZXMiOjUsIm1heFJldHJpZXMiOjUsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIiwiYmFEZXNjIjp7InNlbGZBdHRlc3RlZEZSUiI6MC4wLCJzZWxmQXR0ZXN0ZWRGQVIiOjAuMCwiaUFQQVJUaHJlc2hvbGQiOjAuMCwibWF4VGVtcGxhdGVzIjo1LCJtYXhSZXRyaWVzIjo1LCJibG9ja1Nsb3dkb3duIjowfX1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRFNEQ0NBakNnQXdJQkFnSVVEcUVSdys0Um5HU2dneGdVZXdKRkVQRFJaM1l3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRREk3WG5IK1p2RHdNQ1FVOE04WmVWNXFzY3VibHZWWWFhUnQzWWJheG45Z29kTHg1c3dIMGxYcmRnamg1aDdGcFZnQ2dZWVg3RTRibDF2YnpVTGVtck1XVDhOM1dNR1VlOFFBSmJCZWlvVjdXL0UraFRaUC8wU0tKVmEzZXdLQm82VUxlTW5mUVpEclZPUkFrOHdUTHEydjVMbGo1dk1qN0p0T290S2E5SjduSFM4a0xtelhYU2FqMFN3RVBoNU9BWlVUTlY0enMxYnZvVEFRUVdyTDQvSjlRdUt0NldDRkU1blVOaVJRY0ViVkY4bWxxSzJieDJ6Nm9rVmx0eURWTEN4WWJwVVRFTHZZMXVzUjNEVEdQVW9JQ2xPbTRjcnB3bkRSTFZIdmpZZVBHQkIvL3BFeXp4QS9nY1NjeGp3YUgxWlV3OWJuU2JIeXVyS3FiVGExS3ZqQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJUcXQwS1FuZ3g3WkhyYlZId0R1bnhPbjlpaFlUQWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQXFRYUNXTXhUR3FWVlg3U2s3a2tKbVV1ZVRTWUt1VTYrS0JCU2d3SVJubHc5SzdIZTFJcHhaMGhkd3BQTmlrS2ptY3lGZ0ZQemhJbXdISmd4eHVUOTBQdzN2WU9kY0pKTmt0RGczNVBYT2Z6U24xNWNGQXgxUk8wbVBUbUliOGRYaUVXT3B6b1h2ZHdYRE00MVphQ0RZTVQ3dzRJUXRNeXZFN3hVQlpxMmJqdEFucS9ORFVBN2JlNEg4SDNpcEMrLytOS2xVcmNVaCtqNDhLNjdXSTB1MW02RmVRdWVCQTduMDZqODI1cnFEcXNhTHM5VGI3S0FIQXc4UG1yV2FOUEcya2pLZXJ4UEVmZWNpdmxGYXdwMlJXWnZ4clZ0bjNUVjJTQnh5Q0pDa1hzTkQwNWRDRXJWSFNKSXMrQmR0VFZOWTlBd3R5UG1ueWIwdjRtU1R6dldkdz09IiwiTUlJRFNqQ0NBaktnQXdJQkFnSVVSMzhtcTI2U2Yyc3pWVjJCZEc2V0VON2t1V1V3RFFZSktvWklodmNOQVFFTEJRQXdMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3SUJjTk1qUXhNakF4TURBd01EQXdXaGdQT1RrNU9URXlNekV5TXpVNU5UbGFNQ1l4SkRBaUJnTlZCQU1NRzFsMVltbGpieUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRUlnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTlkwV2I5b1BvUm9Lb1F5V1BhSnB6MTF2cldUZzZ6VHRtTmoyVm9LUm55dktHUnFwemI4M3c1bDZZQTk2VVlrWUJEUVAwaWxPMkRQZTZ3V3FWUjV6RGZSemRjSDhiaCtMN2RHR3ZhZTZoUlRaaGtGa0NwWERzNEhjY2tuckRmOEZDbEo3SGUzOUpmNDIvRzFRbTJ6ejlXV21yUFh0Z2lLL3gwNUdqc1FmR3VERzF6ZjVRVFVVaWU4bHd5bUszVGZkT3ZOZWVKQUFQZTJwbjdJdGZSYityVnJOV2lEemxSbjJ2Tm5aMndQbzR3SC9XSjZkaFhaRytyTVdUK2E2Qm9jZzFVZkl3NmtkdW5HNGJUcFp6c3ZhY0ZZeVIwbXBmK0RlT25wU1dBbXl3SldIdlRsZjJZWHhGeWVYY1RBQ2RRbGNNTkdKMlZoWlE0OHh0UDUvUkJQLzhrQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZDaHk0Mm9raXFjVFMxaXFhL0hSV2prQm40SC9NQjhHQTFVZEl3UVlNQmFBRk9xM1FwQ2VESHRrZXR0VWZBTzZmRTZmMktGaE1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQW4rUkhJUGJ0TUVETmRUMWc4SC9SaXRBa1VkTGdBdDF0V0dXbmxqOWtuYnY0LzRHbFg3QzlwNDVlZlBPOS9hWkw2T1YxWFJLQmk2S210Qlc1SzdudVlFbk14LzVCcUJTYkxUN3JoZHVDNDlUQmVNYjlQSGRYc1RsU1ZOWWVmcjFkR2lkcjRqMHhWQlFMYjFya25EQWJkV0R6S2Z2bmF5S084RnJ3ZTdIeDg0M01HL3JKK2MwWHJ1VXZiZlZUQ0hMaUlXaE03b05EaEw4eG9iNnhVbzlLTEtjU0wrSXRZc08zLzlXYjhROUdqc3FMNEZYc0RjRzFTYVloN0twZnVNbU9peHF6SlpPMm5JaWNQWVJnMUkyU3VpVWZZTzcwdG1kSGNibCtrU1FtU1l0N3JxNHZpSUxnMkd4M2o5cklUdVdUamJhVWFTU1F4Z09tTVNIdXl6TUFDIiwiTUlJRFBqQ0NBaWFnQXdJQkFnSVVYemVpRURKRU9UdDE0RjVuMG82WmYvYkJ3aVV3RFFZSktvWklodmNOQVFFTkJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNWjYvVHhNOHJJVCtFYW9Qdkc4MW9udE1Pby8ybVEyUkJ3SkhTMFFaY3hWYU5YdmwxMkxVaEJaNUxtaUJTY0laZDFSbngxb2Q1ODVoKy9kaEs3aEVtN0pBQUxrS0t0czFmTzUzS0dOTFp1ano1aDN3R25jcjRoeUtGMEc3NGIvVTNLOWhFNW1HTkQ2enFZY2hDUkFIZnJZTVlSREY0WUwwWDRENW5HZHh2cHBBeTZua0VtdFdtTW53TzNpMFRBdWNzcmJFNDg1SHZHTTRyMFZwZ1ZkSnB2Z1FqaVRKQ1RJcStEMzVod3RUOFFESXYrbkd2cGN5aTV3Y0lmQ2t6eUNpbUp1a2hZeTZLb3FOTUtRRWRwTmlTT3ZXeURNVE10MWJ3Q3ZFenB3OTF1K21zVXQ0cmowZWZuTzlzMFpPd2R3TVJEbkg0eGdVbDVaTHdyclBrZkMxLzBDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01COEdBMVVkSXdRWU1CYUFGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFNd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkRRVUFBNElCQVFDM0lXL3NnQjlwWjhhcEpOanh1R29YK0ZrSUxrczB3TU5yZFhML2NvVXZzcmh6c3ZsNm1lUE1yYkdKQnlKMVhucXVCNXNnY1JFTkZ4ZFFGbWEzbWlvOFVwZjFvd00xWnJlWHJKMG1BREcyQnBscWJKbnhpeVlhK1IxMXJlSUZUV2VJaE1OY1pLc0RackZBeVB1RmpDV1NRdkptTldlOW1GUllGZ05oWEpLa1hJYjVIMVhnRURsd2llZFlSTTdWb2xCTmxsZDZwUkZLbFg4dXN0Nk9UTU9lQURsMnhORjBtMUxUaFNkZXVYdkR5QzFnOStJTGZ6M1M2T0lZZ2MzaXJvUmNGRDM1NGc3cktmdTY3cUZBdzlnQzR5aTB4QlRQclk5NXJoNC9IcWFVWUNBL0w4bGRSazZIN1hrMzVEK1dWcG1xMlNoL3hUNUhpRnVoZjR3SmIwYksiLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVRuYmJHSVIyTkh2enFJS0ZBZVF3RzFYQmlzMHdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFRWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPc1hqM2swNEJhbjRUWWR0WktxRC9PUEp4eUR5YVBtQ0JVRlVpYVpJZ1R0ZVpuajNYMjVEaGdwWlpYc0M0RDB5ZEljcmxBNndOVUluT1JML0w5ekJiVEVJTUFWTUdvNmc3VUtBbWIyTUY2QUhibmhZSmQ5ZWlrdXBWTldTaEhOWU5jNEdCZE8xWU42QWZVcXZKaEhiZTNWNFNOTVBtQlJFS0pQVno3VGh3Z21nZ1RlOFdzMkswL3dzcXYyd1NFN3BiQ0JzVVpoSVg1MWJaTTNwcUR3SlBUbVJGRXZ0MC82dEc1ZU84RjNqMTRPWHFmRWhtam4xVnZ4S0RZUU9MWkF4Q3d3Z0MwUDRDZGZXdjN5OFBTUjhJMzU0aE8xWStHek5qdklxWDM4TktMeXd1SVlIRmVyT3hObHhFTUJ2RmhZQnVSdVlBa2tnVWFQcU42VUJoc0lMcnNDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNDb1JIaGl5Tm5iblhSV0lMNlpCWG9CWDlZVE1COEdBMVVkSXdRWU1CYUFGQ0FvVUNFYnBGcGI2RlBMblozRjVQeHNMM29mTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFDUUZhZkpJMS81V2c5Q0VFaW1FMVJQNTRSZ1F3VE5UT09Rc0xBQ1RlK3JJdGxGUXpDOVpEaHJWODI4eVg3anp5K0FBc3AzaXpLN1QxdGgyZGw3bSt0dTBzdzJQYS9vbGMwMm50NlB5SXczNDhnYUh6aEkxKzBLRTQ1cXh2RkRlTDJsTXhiUGZDWXZ5RUVhWXpqaVFFTFU1OTUxcFhHV3lLTWEvNGZMdE8rWktPWGhNdVZlcTRyWERQSTU0VzZKSE9pQWFpS2Rpdys1ZTNjMmt0L2pGSVF0TTZ2TVhnOUxORnpkakVUTnQyMFZYOVFldlJwRlpmdWNNRzl3Q2FRRG9GbFB6cFRNSktoUGV2L2ltSm1aWWhLZnIwbExjZW10cWpJeExBb3FaZE9ZZkhCZzYrdkFjZFBJL2lhdUdwVUF2N1grVUtObUR3aloyQmFINHNMd2hCMm0iLCJNSUlEU0RDQ0FqQ2dBd0lCQWdJVVVjbU1YelJJRk9nR1RLMFRiM2dFdVpZWmtCSXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFEbTU1NWJXWTlXVyt0T1kwcklXSGxkaCthTmFub0NaQ0ZoN0drM1laclFtUFV3MGhrU0c2cVlIUXRQK2ZaeVMzM1ZFcnZnK0JRcW5tdW1nTmhmeEZya3dFWkVMZWlkQmNDOEM0QWc0bnFxaVBXcHpzdkkxN05jeFlsSW5MTkxGY1pZLytnT2lONlpPVGloTzUvdkJaTWJqOXJpYUFjcWxpWW1OR0pQZ1RjTUdhRUF5TXpFTU55Mm5tNkVwK3BqUDVhRjZnaTIxdC9VUUZzdUoxajJSai95bk0vU2RSdCtlY2FsNU9Zb3R4SGtGYkw5dnZ2MkEyT3Y1SVRaQ2x3NGJPUzlucHlwUWltT1o1UUFZeXRtWWFRcFdsL3BNWXo2elNqOFJxa1ZETkVKR3FOZlRLQTJpdkxZd1g2bFN0dE1QYXBnMEo4NGw5WDB2b1ZOL0ZwUzRWQ1ZBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlFnS0ZBaEc2UmFXK2hUeTUyZHhlVDhiQzk2SHpBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBWU16Z0xySkxJcjBPb3ZRbkFaclJJR3VhYmlIU1VLU21iTFJXcFJrV2VBdHNDaERFSHBYY0ovYmdETktZV29IcVE4eFJVakI0Q3llcFlldmMzWWxyRzhvN3pIeHBmVmNhb0w1U2V1Smt6SHhLbjRiVGFTcDkrTXZ3YW1ucDY0a1pNaU5iRkxrbmZQOWtZS29SSGtNV2hlUkoxVXNQMXo0U2Nta0NlSUxmc01zNnZxb3ZxaldDbEZzSnBCY3NsdVlIV0Y3YkJKMW40UndnK0FURW9wWTRJZ0d2Nlp2d2MrQTlyK0FUMmhxcG9Ta1lvQWwrQU5Zd2dzbE9mOXNKZTBWK1RBOVlZL1VsYUJtUFBUZDAvL3I5d3ZjZVBXWmtQaktvQUMvelVOaGZEYmg0TFY4R0hzM2x5WDJYb21ML0xOYzhKWXp5SWFERWhHUXZlb1BoaC90cjFnPT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZkNBWUFBQUNHVnMrTUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFIWVlBQUIyR0FWMmlFNEVBQUFiTlNVUkJWRmhIcFZkN1ROVjFGRC8zZDU5d2VRU0lnUzlBUUFYY0ZMQVFaaTlmcGVWejF0WS9XVFpyNVd4cGM3VzVrbkxhNWpJM1o4NXNyUzJuTTJzanRXd1pTN0lVSDRINHhDbkVReDREQVpGNzRWN3VzODg1djkvbEluQnZWSi9CNFB2OW51LzVudS81bnZNNTU2ZnpBL1F2MEhiL0lyWDNWRktQbzQ1Y25tNGluVUlXWXdMRlJtWlFVdXdqRkcvTjFpUkhoMUVaME5SVlJ1ZHF0MUJkKzJuU0t5Uy9PaHlzMCtsazNlLzNrUTlxdkQ0WlV0YTRWVlNVdVkwZWlweWlUaEFmb2NvT1JWZ0R1dXczcUtSaUFkM3JiY0V0alRqWUlvZjZXYUhzQ216VlBXQ014K2NnaDh0THFXTUthTVdzVWpMcW8yUnRKSVEwb096bWVycFF1NGVzWmdzT05rR3hIN2Qwa2R2VFQxN3M0T01VN1ZJOFpoamdHYU0rQXE5aUVOdThQaWYxdWR6MDdNd3ZLV2Y4R2xWb0NFWTA0UEM1V2RUYVhZRmJSOHZOdkw1KzNLZ2ZiNXhOTXlhOVJhbUppeW5hTWxHVFZ0RmxyNmJhOXUrcHFuRVg0dU11UlJnalNZRWhyTjd1dEZGZTZscWFsN05ma3c1aW1BR0h5blBwYms4Vm1ZMHhzdG5wdGxGQ1ZDWXR6VHVCTjgzUXBNTGpUdGV2ZFB6U1VuSjdlOG1ranhaMzlmWGJLRGZsZFpxYnZVK1RVZ0duQlZGNmZRMmlQSGc0VzE2VVdVd3Z6YmsxNnNNWkUrUG4wcHZ6N0pTZXVBeWVzOGxjcENtYUt1by9wK3FXcjJVY3dJQUhXcnZQMFlFemhYQXRMQWJzc0hocDdpR2FtdnlpalA4cnlxclhVV1g5WG9vd3h5QXVmTkJycDQzUE9CRlhabGtmOE1EUmlxY3B5b3dBd3B1ejJ4K2ZXdnovRHRkZTlzbXN6eWd0Y1I2QzF3YmR6Qmw2T2xxNVdOWVk0b0dhdGhKTXJrVEV4MGpBUlNIQVZzKzVyWWtRTlhiK1FnZlBMc1E2Z1h5SW5zcmVRZm1wbTdSVkZZZkw4Nm4xZmlVT2tZdlNoa1VQeHZidWt6b3k2SzFpaE0xaG8zWHpXNkV2U2ZYQStkcGlXR2FXZCtkb1h6THptR3dLWUZMQ0FzUkFsUEJBaE1sQ0ZYVTd0QlVWUHI4SGdWY0pIV3ErRjAwcGxyK0RNVGRyUDR6dnhZMTFrTk1oeFQrU2VUR2crZDRWNUxRSml0eVVHSk5COFZGWnNqZ1lCWk0vSUkvWENUa2owcXlET3BGMkFWUTE3Q0lqVXAvRG5UMVVrTDVGNWdkaitzUzF3ZzFnRTNnaWdtNjBmQ1h6U25QWGJ5QVBiSVh2K0lEcEUxNlRoYUhJUzlza3lobG1NRTVGM2NmcUFLaHEyQzBFNVBIMWdZYVhhTFBEa1pHMEhESk9uS1dIcDUxSTB6NVNPdXg4ZTFXQXVaemRIUXJUa3A4VG1qWG9JK2xhMHdHWnN6dWJxYk8zaWZRNkEvVzd2VlNZc1YzbVIwSkt3a0tjNFdIaUJrbVI4STNDQ2dJODdvT0w0cXpUNVArUlVKQmVqRU9nQVBLOGhZUHphdE0rZUlUcDJJTzl5VFFtZXJvbVBSeHgxcXhBY3NpbGUvdWJTZUViY1dRR1lFQ2doY0xZMkh5S2pvZ2pIMjVoTXBqcFV2MU91Z2xpNGVoMmVSdzBPMzJiSmpreXVDZ056ZzB2emxZTVNpU3MwdW9vNE1HN2hNT2pDRWFYMXlGRTBuU3ZqQnp1VG5FcEs4Nlo4SW9xRkFJdWJ3OGtnOUFyRWFSRVdTWkkrakg0WGJwNmc5RTlFbkpUM29hUnpETitNVUpCUURIbjU2YThvVW1FQnVzT3hCcy9ONSt0SkViUGtBRkRqOFVHdk9zL0lXdmNTZ2xHQmh2UzcvRlRZZnBXR1lkRFk4ZlBBeFdTQTM1c1RDNHA0K0xtNEFhcUlvUGVRdGZ1Zks2SmgwWmh4bGJzVVhPU21YTmlmRDVaVEFreURvZmJiY2NseG5BOFdOQXF4Q2JSTnlraFh4UXBhRHc2N2ZYVVlic2lHMEtodHYyb2VJdmg4cmhRTVlPY0VBcVhHL2VJK3puZ09jNXl4cjhxODJJQU0xYy9GTEZPcGxxdTVlRlFYck1aekdjVkNqWWJMV0c1STRCVDFldVJybGJ4dE5PdE1pdERERWhMWElJeW5BQXZ1T0VXRTNYM05kQWZ0OTRWZ2FHNDJYSVF0MFpYNlBlQ0UvcVFGZTlySzZIeDdZVTUwS3ZIN2ZXNGZTK3E3S0tCSnhzZ2dCWDVwU0FHaDFqSXJWaDV6UTZ3M1JmYWFoQlhtL2FDYkNaVGpDVUZVVHlXWnFXOXA2Mk1qSlBYVnFPclBnTU80TnY3NEdrZitvd2Z0TlZCRFFuakZKcUhTdzE3cFh2aFdXNUtacWUvUTQ5Ti9VU1RDQVZXb1FYRklIQkhYWGUzRlByVURzdUdEbXRGL2hIS1RIcGVreGhpQU9QSStTSnE2UzZIRjRJOVlXemtCSlRvNDZpVU16V3A4UGlyL1JpZHVMeEtZc1Nrc1Y4dkxsT1F2aEdYMllsUjBPQmhCakMrdS9nRWN2WTBBcEs3WWs0MU54alBTUW5XRkhURjY2VXJqZ2V2QjhDdTVhK2wydllTUlB0dVZEbzczaGhkTVNIblVYN3RUanNWWkd4QWwvV3B0aU9JRVExZ25MMjltWDYvdFIxdG1sa1lqOFc0WCtDU2pXY1VER1kxTnBTL0M3aFNLcWlNTE0vbDJRbVNXWjczRGR6K2dpbzhCQ0VOWVBRNDZxbmt6d1hVYnF2Qmt4alVRc1dmWkZnYnVvM3JBZit3TjdqT085MCt5bng0UGkzTCswbllMMVNjaERVZ0FQNGdQVi83SWQxcSsxSFNobXVHa0lxV1JQZ3l4TUZxUDhIZmpUbmpYd1k1YlFmYkpjdDZPSXpLZ01Ib3RGL0hlMWVnc2F4SFNxRzZ3ZmRtUTV4OE55VEZGcUJjcDJpU293SFIzeWs1KzM2aEY3dlhBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiRklET18yXzAiLCJGSURPXzJfMV9QUkUiLCJGSURPXzJfMSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJsYXJnZUJsb2JLZXkiLCJjcmVkQmxvYiIsIm1pblBpbkxlbmd0aCJdLCJhYWd1aWQiOiI3NDA5MjcyZDFmZjk0ZTEwOWZjOWFjMDAxOWMxMjRmZCIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwidXYiOmZhbHNlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibGFyZ2VCbG9icyI6dHJ1ZSwiYmlvRW5yb2xsIjpmYWxzZSwidXNlclZlcmlmaWNhdGlvbk1nbXRQcmV2aWV3IjpmYWxzZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOmZhbHNlLCJhbHdheXNVdiI6dHJ1ZX0sIm1heE1zZ1NpemUiOjE1MzYsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6OCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoxMjgsInRyYW5zcG9ydHMiOlsidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN30seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTh9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi0zNX1dLCJtYXhTZXJpYWxpemVkTGFyZ2VCbG9iQXJyYXkiOjQwOTYsIm1pblBJTkxlbmd0aCI6NCwiZmlybXdhcmVWZXJzaW9uIjozMjk0NzYsIm1heENyZWRCbG9iTGVuZ3RoIjozMiwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjEsInByZWZlcnJlZFBsYXRmb3JtVXZBdHRlbXB0cyI6MywidXZNb2RhbGl0eSI6MiwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjEwMH19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTAyLTAxIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZdWJpS2V5IEJpbyBTZXJpZXMiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI1MDIwMTAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTAyLTAxIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3Nn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wMi0wNiJ9LHsiYWFndWlkIjoiYmI2NmMyOTQtZGUwOC00N2U0LWI3YWEtZDEyYzJjZDNmYjIwIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiJiYjY2YzI5NC1kZTA4LTQ3ZTQtYjdhYS1kMTJjMmNkM2ZiMjAiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiTWV0dGxlc2VtaSBWaXNod2FhcyBIYXdrIEF1dGhlbnRpY2F0b3IgdXNpbmcgRklETzIifSwiZGVzY3JpcHRpb24iOiJNZXR0bGVzZW1pIFZpc2h3YWFzIEhhd2sgQXV0aGVudGljYXRvciB1c2luZyBGSURPMiIsImFsdGVybmF0aXZlRGVzY3JpcHRpb25zIjp7ImVuLVVTIjoiSGFyZHdhcmUgQXV0aGVudGljYXRpb24gd2l0aCBNZXR0bGVzZW1pIFZpc2h3YWFzIEhhd2sgQXV0aGVudGljYXRvciB1c2luZyBGSURPMiJ9LCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjowLCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjowLCJibG9ja1Nsb3dkb3duIjowfX1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNnVENDQWlpZ0F3SUJBZ0lVSjlLRThzVWUvYXVnUUs1blpmS0F1b1l1dmtZd0NnWUlLb1pJemowRUF3SXdnYUF4THpBdEJnTlZCQU1NSmsxbGRIUnNaWE5sYldrZ1ZtbHphSGRoWVhNZ1NHRjNheUJCZFhSb1pXNTBhV05oZEc5eU1Ud3dPZ1lEVlFRS0RETk5aWFIwYkdWelpXMXBJRk41YzNSbGJYTWdZVzVrSUZSbFkyaHViMnh2WjJsbGN5QlFjbWwyWVhSbElFeHBiV2wwWldReElqQWdCZ05WQkFzTUdVRjFkR2hsYm5ScFkyRjBiM0lnUVhSMFpYTjBZWFJwYjI0eEN6QUpCZ05WQkFZVEFrbE9NQ0FYRFRJMU1EWXlNREV4TXpBd09Wb1lEekl3TlRVd05qRXpNVEV6TURBNVdqQ0JvREV2TUMwR0ExVUVBd3dtVFdWMGRHeGxjMlZ0YVNCV2FYTm9kMkZoY3lCSVlYZHJJRUYxZEdobGJuUnBZMkYwYjNJeFBEQTZCZ05WQkFvTU0wMWxkSFJzWlhObGJXa2dVM2x6ZEdWdGN5QmhibVFnVkdWamFHNXZiRzluYVdWeklGQnlhWFpoZEdVZ1RHbHRhWFJsWkRFaU1DQUdBMVVFQ3d3WlFYVjBhR1Z1ZEdsallYUnZjaUJCZEhSbGMzUmhkR2x2YmpFTE1Ba0dBMVVFQmhNQ1NVNHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUzFYSVpNWFdHS2RGUHd0NjhUSEtCY1hqVjJhdlhuN3VKTUNJQmxlNThQN2lOMzVUbGRFMHJZUlM0UVBQaXpvUnVuRVhINlhFTjJ1TnlBa3dvMVhzNEhvend3T2pBTUJnTlZIUk1FQlRBREFRSC9NQXNHQTFVZER3UUVBd0lCQmpBZEJnTlZIUTRFRmdRVUJqT2tYb2lvREd5UDZrTkkzZUhYUlFvOHg3b3dDZ1lJS29aSXpqMEVBd0lEUndBd1JBSWdmZDhYbVJiSFdnV2tXM0drT0JnZStka0lEMXUxTDRoelpGR1RZU3NqdE9NQ0lBMDgwT2g0aVhxR0VoaEszaHRFb1dLL2ZTcjRNUGVoSU1HMy9iajJnS28rIl0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsLzlqLzRBQVFTa1pKUmdBQkFRQUFBUUFCQUFELzJ3Q0VBQVlFQlFZRkJBWUdCUVlIQndZSUNoQUtDZ2tKQ2hRT0R3d1FGeFFZR0JjVUZoWWFIU1VmR2hzakhCWVdJQ3dnSXlZbktTb3BHUjh0TUMwb01DVW9LU2dCQndjSENnZ0tFd29LRXlnYUZob29LQ2dvS0Nnb0tDZ29LQ2dvS0Nnb0tDZ29LQ2dvS0Nnb0tDZ29LQ2dvS0Nnb0tDZ29LQ2dvS0Nnb0tDZ29LQ2dvS1AvQUFCRUlBSUFBZ0FNQkVRQUNFUUVERVFIL3hBR2lBQUFCQlFFQkFRRUJBUUFBQUFBQUFBQUFBUUlEQkFVR0J3Z0pDZ3NRQUFJQkF3TUNCQU1GQlFRRUFBQUJmUUVDQXdBRUVRVVNJVEZCQmhOUllRY2ljUlF5Z1pHaENDTkNzY0VWVXRId0pETmljb0lKQ2hZWEdCa2FKU1luS0NrcU5EVTJOemc1T2tORVJVWkhTRWxLVTFSVlZsZFlXVnBqWkdWbVoyaHBhbk4wZFhaM2VIbDZnNFNGaG9lSWlZcVNrNVNWbHBlWW1acWlvNlNscHFlb3FhcXlzN1MxdHJlNHVickN3OFRGeHNmSXljclMwOVRWMXRmWTJkcmg0dVBrNWVibjZPbnE4Zkx6OVBYMjkvajUrZ0VBQXdFQkFRRUJBUUVCQVFBQUFBQUFBQUVDQXdRRkJnY0lDUW9MRVFBQ0FRSUVCQU1FQndVRUJBQUJBbmNBQVFJREVRUUZJVEVHRWtGUkIyRnhFeUl5Z1FnVVFwR2hzY0VKSXpOUzhCVmljdEVLRmlRMDRTWHhGeGdaR2lZbktDa3FOVFkzT0RrNlEwUkZSa2RJU1VwVFZGVldWMWhaV21Oa1pXWm5hR2xxYzNSMWRuZDRlWHFDZzRTRmhvZUlpWXFTazVTVmxwZVltWnFpbzZTbHBxZW9xYXF5czdTMXRyZTR1YnJDdzhURnhzZkl5Y3JTMDlUVjF0ZlkyZHJpNCtUbDV1Zm82ZXJ5OC9UMTl2ZjQrZnIvMmdBTUF3RUFBaEVERVFBL0FQcCtnQW9BS0FDZ0FvQUtBSUwyN3Q3RzJrdWIyZUszdDR4bDVKWENxbzl5YWFpNU95RTJvcTdPRnVmaTk0UWl1R2hndnA3c3I5NXJhMmtrVWZqam44SzZsZ2F6VjJySE84WFNYVTFmRGZ4RDhNZUliZ1crbmFwRjlyUEF0NTFNVWhQb0F3R1Q5TTFGVEMxYWF2SmFGd3hGT2JzbWRaWE9iQlFBVUFGQUJRQVVBRkFCUUFVQUZBQlFBeVdXT0dOcEpuU05GNUxNY0FmalRTYjJCdXhUT3I2Zi9aTTJwcmVRU1dFS083enh1R1FCYzd1UjZZTlZ5UzV1VzJwUE9yYzE5RHlTYlN0VytKT2wzL2lHL0dMWllYZlJOSGQ4STVBTzJhWWR5VDBCNC9EcjZDbkREU1ZOZk4vb2ppY0pWMDV2NUk1M3diNHJmVmZoanJPaVhtdldkaHEweEtXQ3FxeFNiUUFTbUl3QU1rTW83OC9TdHExSGtyUm1vM1hVeXBWZWFrNE4yZlF3dFJsbnNmaC80Y2gxRFNZTlhiVm5rbmh1SFdRelFBc0FzRVVnNTNkVzV5T2VocldLVXFzbW5hMzlYWm03eHB4VFY3bnNQZ1hWOVYwTHhBUEIvaW1aN21SNHZPMHUrays5Y1JqckcvOEF0ci9UNlo4NnZDTlNIdHFmelIzVXB5aEwyVS9rZDYrbzJVZDhMS1M3dDF2Q29jUU5JQTVVa2dIYjF4d2Z5cmtVSk5jMXREcDVsZTE5UzNVakNnQW9BS0FDZ0FvQXA2dnFWcG8rbVhHb2FqTUliUzNUZkpJUVR0SDBITlZDRG5KUmp1eVpTVUZ6UFk4bTFqNDlhUXN2a2VIdEt2dFVuSnd1UjVhc2ZZY3NmeUZlaERMWjd6ZGpqbGpvN1FWek4vdDM0dStLditRWnBVV2gycmRKSkl4R3dIMWt5MzVMVit6d2xMNG5ka2MrSnFmQ3JFa1B3VzF2VzVGbThhZUxMbTVQVXhRbHBNZlJuT0IvM3pTZVBoRFNsQ3cxZzV6MXFTTm40aTZKYitGL2hSYWVHdEprbUZ2ZFhzTm1Ia2JMa1NTNzI1QUhYQjdkS3p3OVIxYTdxUzZKc3V0QlU2S3B4N21INHorSDcrSE5VMVh4WTNpRzcwL1RZbzhSL1lWWVhDYmdzYVI5Y2JBY2ZoV3RIRSswaXFYTGQrZXhuVm9lemJxYzFrY0dKRjFMWHZETmg0eW5rdGRLak1vZTZlME5rN2ZKa00waCs4Y2hlZmYzcnF0eXhsS2t0Zlc1ei9GS0txYmZjYXVtV21ud2VQSm8vRFNhOXIraWFUTGEzZHJGWVRpV05aQU0vUHU3WjNBWXgzcUpTazZYN3kwVzdyVXVLaXFudVhhVmkzcnZ4QjFIeEZxbHBkWGVrZllKZEUxT0tXT1JRMitOV2syTkRKbmpjUmc4ZWxURERScHhhVHZ6TCttT2RlVTJtMWF6UFVmaUw4THRNOGIzOGVvWE41ZDJsOUZDSVVlTGFWMmdraktrZXJIb1JYQmg4WktndVZLNk95dmhZMVh6TjJaeFgvQ0FmRXJ3dno0WThVQyt0MCs3Qk01SEhvRWZjby9NVjFmV2NOVi9pUXNjL3NLOVA0SlhBZkZEeDE0Wk8zeGg0VGFXRmVHdUlWYU1mWGNOeUg5S1BxZENyL0NtSDFtdFQvaVJPdzhIL0YvdzE0bXZyZXdqYTZzNytkdGtjTnhId3plZ1pjajg4VnpWc0RWcExtM1J2VHhkT283Yk05R3JqT29LQUNnRHovNDlTbUw0VmEwVi9pOHBQemxTdXZBcTllSnpZdDJwTWwrQyttMmxwOE85RG1ndFlJNTVyY1BKS3NZRE9TU2VUMU5MR1RiclNUWThMRktrbWp1NjVUb0NnRHl6NDFhclpXR3NlQ1UxV1lRV0M2bDlzbWtLbGdCRUJqZ0FucTFkMkRnNVJueTcydDk1eDRxU1VvWDJ1V1BpTlkzUHhJOEJXcDhHMzBVMXBOT0hjTXpSTE9pa2dqSkdlR0FPQ08zMHBZZVN3MVYrMVdvNjhYWHByMmJPSzhXQ1hVL0UzZy93VnJldFJHUzFpaSsyekcyODNkY25sRTNrQS9Nb3gxNTZrVjFVdmNoT3ZDTyszb1lWUGVsR2xKN2ZtSHhUc1A4QWhYR29wcXZoM1U5UXRYMVc3TXoya095T0FMR0FXWHA3NEE5elN3c3ZySzVKcE95MzZoaUkrd2ZOQjduWWZHRzhqMUg0YmFiZlJJNlIzVjNaektyakRBTVFRRDc4MXo0U1BMV2NYMFROOFMrYWtuNkhxRmNKMWhRQWhHUmc5S0FQQnZpM1pXdW1mRjN3TGNXTnREYnZQY3hlWVlrQzd6NXlqSngxT0RYcTRTVGxoNmliL3F4NTJKaW8xb05IdlZlVWVpRkFCUUI1NzhmSXpKOEt0WngyTUxmbEtsZG1CL2p4T2JHZndXYVB3ZmNTZkRMdzhSMnRndjVFaitsUmkvNDBpc04vQ2lkalhNYmhRQkRkUnJMQzRkRmY1VGdFWjdVNHV6RTFkSGl2d3E4ZjZSNFo4RDJHbGF0RHFTWGtEUzcxU3pkZ015TXc1eDZFVjZXS3cwNnRSemphM3FjT0hyeHAwMUdWNytoMTNodUR3WjQ0OFFTZUo5UHM1Sk5Wc1pGamVTWlhqS3VCOHBLRTRKQTZISGF1ZW82MUNIc3BQUm0wRlNyUzlvbHFqdU5RMCt6MUdKWXRRdExlNmlWZzRTZU1PQWZYQkhXdWFNcFIrRjJPaHhVdDBjSDhkZ0I0SWdBQUFHb1cyQVA5K3VyQS93QVIrak9iRi9CODBlalZ4blVGQUJRQjRiOGFmM254WThBUkRxTGlOdjhBeU92K0ZlcGcvd0NCVWY4QVd4NStLL2pRL3JxZTVWNVo2QVVBRkFISC9GNjMrMWZEVHhER0JuRnFaUDhBdmtodjZWMFlSMnJSTU1TcjBwR2I4QkxqN1I4TE5IR2NtSXl4bjhKRy9vUldtUFZxOGljRzcwa2VoVnhuU0ZBQlFBVUFlTjZEcjgzaER4WjR4Vys4UCtJTHBMM1VqTkRKWjJKa1JseDF6a2ZwWHBWS1NyVTRXa3RGMVp3d202VTVYaTlYMk9oLzRXamIvd0RRcStMdi9CWWYvaXF4K3B2K2VQM212MWxmeXY3amwvaUw0cWw4VzZIYjZYcDNocnhMRk9ieUNUZGNhZXlvQXJjNUlKcmZEMFZSazVTa3RuMU1hMVYxWXFLaTkreDdYWG1IZUZBQlFCNGQ4UWY5Ty9hRzhJV281OGlLT1FqNk5JLzlCWHFZZjNjSk5ubjF0Y1RGSHVOZVdlZ0ZBQlFCbTNuOW5hMWE2aHBUM0VNd2VOb0xtS09VRjBWZ1FRUU9RZXRXdWFEVTdFdmxtbkV5dkNXbTZCNFMwbTQwelNyMkpiYTFrTWt3bHVWWXdsdjd4L2g2ZDYwcXpxVnBjMGxxeUtjWVVseXhacVJlSU5HbWxTT0xWdFBra2NoVlJibENXSjZBRFBKck4wcHJWcGxLcEI5UnIrSXRFUjJSOVkwMVdVNElOMGdJUHAxcCt5bjJZZTBoM0hTZUlOR2kyZVpxK25wdlhjdTY1UVpIcU9lbEpVcHZvdzlwSHVPVFhOSmUzZTRUVkxGb0VZSzBndUVLcVQwQk9jQTBlem5lMWg4OGJYdVhua1NPTnBIZFZqVWJpeE9BQjY1cUxkQ2pOSGlQUXlRQnJPbWtudDlxVC9HdFBaVC9BSldSN1NIZEUyb2F4cHVtdkdtb2FoWjJyeWZjV2VaVUxmVEo1cFJweWw4S3VOempIZGtsNXFWalpSeHlYbDdiVzhjbjNHbGxWQTMwSlBOSlFsTFJJSEpMZGtWcnJXbDNaY1d1cFdVNVJTN2lPZFcycU9wT0R3UGVtNmNsdWdVNHZabGlDOXRiaTArMVFYTUV0dGduemtrREpnZFR1SEhGUzR0T3pXbzFKTlhSeWR6bzNoVC9BSVNxMThZM0dvUUM5S21PR1pydFJFd0NsRHQ1d2NBbjhhNkZVcThqb3BhZWhpNFUrZjJyZXAxMXBjd1hrQ3oyazhVOExmZGtpY01wN2NFY1Z6dE5Pek5rMDlVVFVoaFFCOHNYMnRheDRYK0tQaS94Qm84UG53MjkyOXRjeG5PQ0pTMndrZWdaUitPQjNyM1kwNFZhRUtjK3EvSThoem5UcXluRTJQZy9wRTl6YytQN0R4RGFQZjNiMjhiM0ZzWkNyU3laZDlwWWNnbHNENjFuaTVwS25LRHNpOE5CdHpqTlhOSHdiNGF0WDhVYWI1L3d3dk5NUkpoSjlzZS9sZFlTdnpCaUR3ZVFPS210V2ZJN1ZiL0lxbFRYT3IwN2ZNaThlK0JmRDFwOFUvQ2VuMjloc3ROVGVScnVQelhQbUhQcm5JL0RGRkRFVkhRbkp2VmJCV29RVmFNVXRHYUh4eThDK0hkRzhCdHFHbldIazNkc1liZUovTmR0cWJ1bUNjSHFhakJZbXBPcnl5ZWpLeGRDRUtmTWtVL2liNFkwbnc1OEdZWDBlMSt6dGV6MnNzNTh4bTN0c1BQSk9PcDZWZUdxenFZajMzdGNtdlRqVG9lNnQ3SHVVMXJEZmFPOXBkUitiYnp3R0tSTTQzS1Z3UmtleHJ5MDNHVjBlaFpPTm1lQWFaNFh0TGpWclczdVBoUGZXOXZKTXFQTzJveWtScVd3V0k5aHpYclNyTlJiVlg4RHpZMGs1SmV6L0VYeGxvTXcrSUhpSFVKdEhnOFhhZTZoSGl0cnYvU0xFWXhqWXBKVWpCeGtIcDlhS05SZXlqRlM1SDZhTUtzSDdTVW11WmZrYTl0WWFIclB3azBlVFNkQjFMeFBGWjNMeFIydHhjbU9hRXRrdGtwd1FQbHh4MElyTnluQ3ZKU2tvM05Fb1RvcmxYTlltOEhhSGJXbWkrS3J6L2hDcmp3M2NKcGtzU1NTM1R5K2FyS3hZQU4weHRXcHJWRzVRWFB6YTloMG9KUmsrVGwwUEx0QTFEeFBiZUMyOE4yTVpheDF4R3VvcGNuOTNIR1hFdzlzN0JuMi93QjZ1NnBDazZudEh2SFQvSTQ0U3FLSEl0bi9BRXpxcnpUYlM2L1ptc2I2ZUVQZFdjcm1COXhHemZjN1c0NkhJOWF3VTJzWTRyWi81R3ppbmhVMzAvelBkL0F1bTJtaytFZEt0ZFBoRU51SUZrMkFrL013M01lZlVrbXZLcnpjNmpjajBhVVZHQ1NONnNqUUtBT1k4TytFdFAwWHhEcjJxV3M4MHR6cXNpeXp4eU1wVkNDeEcwQVpIM2oxelcwOFE2a1l3L2xNb1Vvd2xLUzZsSS9EMndGMzRsdVliL1VZSjlkMitjOFVpcVl0cHo4aEF5UHh6Vi9XcFdpbWw3cFAxZU41TlBjNHZSZkN1Z3crSWJUeXZGUGltUXhYQU1ielQvNlBNNkhPemR0d1FjRWUvTmMzOXVVcWt2WktLMTB2YlQ1TTU0MDRjeTk1L29lZ2E1NFkweldQRStqYTVjWGNpWFdsbGpFaU91eHMvd0I3SXorUkZhUXhYSkNVRmF6T21kT001cWJleEw0MjBEVHZGMmdTNlRxRjA4VUVqcTVlRjFEQXFjanFDS1ZIRWV4bnp4YUhWaEdySGxiS3ZpenducGZpYnd0Qm9ONWVTeFdzSmpLdkU2aC9rR0JuSUkvU3FwWXIyVS9hSzF4VktVYWtPUnN4TkcrR3RocGR4Sk1uaWZYWnQ4RWtHMlc5VWhRNmxkdzQ2ak9SN2l0WjQ5VFZySXpqaDR4ZCtabEpmaE5wNElQL0FBbC9pVGovQUtmMS93RGlhciswVi9MRW42ckgrWi9lWGZFbnd5MGJWOWF1TlVzOVkxRFNidTVYYmNteXVBb205MkhxZS9ZK2xUVHg3aEhsZG1sM0tuaG9TbHpKMlpKYy9EblEvd0RoSHRPMGF3MWZVTk50N0puZmZhM1NvOHJOakpjNDU2ZTFTc2Y3N25LemJCNGVIS29KMnNMb0h3LzA3U0d2cytJOVd2VXU3U1MwZExxN1YxVlh4bGdNZmVHT0Q3MFR4eW5iUkt6dU9GQ01iKzgzYzJ0QThPYVZvdmc5ZkR0dmR0SmFMRkxDSlpIVXlZa0xFOGdZL2k5S3pxWXBUcWUwYlZ5NFU0d2h5Sm5PWDN3dzBLNzhKYWI0ZU9zNmhIWTJUU09QTG5RR1V1Mjc1L2x3Y0hweFcwY3d0VWRUUzdNbmhvT0NoZlJIWmVEOUd0L0QrZ3dhWmFYdHhleFFGc1MzRWdkK1RuQkk3RE9CV0ZTdDdhVG5wOGplbEJRanlwM05xb05Bb0E1ZlV2OEFpVmVNN0c5SEZ0cVNmWTV2UVNEbU0vVThpdlBxL3VjVkdwMG5vL1hvWXk5Mm9wZDlDOTR2MUI5TjBHNGt0K2JxWEVFQ2pxWkhPRngrZWZ3clhHMW5Tb3R4M2VpOVdWVmx5eDBPRGJ3MXArbDNFOE9yWGIzRnJZV3lYVXNhdzdXa1hMQlUzN3VmbXoySFVjMTQ3d1ZPakp4cXl1b3E3MDM4cjM3bkw3S01YYVQyTGkrSDBrVVBINEdpMk1NcnUxRUE0OXhXaXdpZXF3Ly9BSk1WN05QN0g0bGE5OFBXMFd2V2NOdjRiaW1lU3hNc3RuOXIyaEczZ1ozNTV4MC9Hb3FZU0NyUmpHbGU4YnRYOCs0blRTa2tvOUMwbWo2WGJYTnNtcytFbHM0TGlVUXJNbDM1b0Rub0NBY2pQcldpdzlHRWtxMUN5YnRlOTlSOGtVMXpRc2FPamVIUERXb1JYcGswZUtDUzB1SGdrVXl1Y2JmNHM1NkVFR3Q2R0R3dFZTdlR0eXRyZGx3cFU1WDAySVBET2tlRTllMHVXK2kwbElVaWtkR0RTTWNBY2c5ZTRJTlJoY1BnOFRUZFJRdGJ6WXFjS1U0M3NVcmJSYk8rc0xXODAvd2RETkRPaGNGcjRvUU54QTRQcUFEK05aUncxT3BDTTZkQzZmOEFlSlZPTWtuR0g0ajRkRjBxQzl0WWRaOEpwWlJYTWdoam1XN01vM25vQ0FlTTQ2MDQ0YWpHYWpXbzhxZWw3MzFHb1JUU2xDMXllLzhBQzl2RGVTUjJmZzZDNWdVL0pLYi9BR2J2d1BTcnFZR01aTlFvSnIvRU9WSko2US9FWllhTm9QMnlTMDFudzJ1blRpRnJoRDlvTXFPaS9ld1FlbzQ0cWFlR3cvTTRWcVhLN1gzdm9LTUlYdEtOaXRiYU5hMzF2SGMySGdsSkxXVWI0bmt2OWpNcDZFcm5pb2pob1ZFcDA4UG85dmVFb0tTdW9hZXAybmhUVG85TzAwckhwaWFhOGpsbmdXYnpSbm9EdStsZXJnNktwUXNvY3QrbDduUlNpb3JheHRWMW1nVUFZL2l6VG0xVFFibUNIaTVVQ1dCaDFFaThyajhSajhhNWNaUmRhaTRyZmRlcU02c2VhTFJ6K25hZ3Zpdlc5SWRCbTNzWUJkenIyRTdmS3FuM0dHTmNWS3Q5ZHF3YTJpcnYxMi9BeWpMMnNsNWEvTXQzbGhGcWZpelY3SzV6NVUrbXhJeFhxUG5ma1ZwT2xHdGlhbE9Xeml2elpUaXBUY1gyRm4wM3hKWldqdkY0Z2hrU0JDeXJMWkxsZ0IwSkIvV25LamlxY2JxcnQ1QTQxSXI0dndHYVBldHFYaVhTNzEwQ05jYVA1aFVkQVM2bXBvVmZhMTRWSDFoK3FDTXVhYWZrV2ZIMy9JTnNQK3doYi84QW9kYVpqL0RqL2lYNWpyN0wxUmhlS3JpVFNkWTFlMXQ4aDlhdDR4Qi8xMTNDTnNlKzFnZndyanhrM1FxemhIL2w0bGIxMmY0R1ZSdUVtbDFJZGRVK0hwNzdTcklFTHF0cEREYkQvcG9DSW0vSGFRZndxY1F2cXJsUmg5dEpMMTJmNENtdlozaXVxLzRCc1hlbkxkK0lMUFEzbnVJdE90ZFBFZ2loa01aZHQyd1pJNUlBSFQzcnFuUlU2MGNPMjFGUjZhZVJvNDNrb2RFaWw0aThPMldseTZOUGF0ZEdRNmxBdUpMaDNHTjNvVDdWamljSFRvdW5LTjc4eTZ0azFLYWpacnVpOUhwcWVJTmMxazZqYzNaanRKbGhoaWluYU5WR3dFbkNua2tucld5b3JGVmFudEc3UmRrazdkQ2xIMmtuemRDQk5DczlQOFlXTUVKbmVPNHM3aFpCTE0wbkdVSEdUeDFOUXNMVHBZbU1ZMzFUM2Qrd3ZacU5SSmRtWExmUU5jc0xlTzEwN3hBcVdzUTJ4SkxacTdLbzZBblBOYXh3bUlwcFFwMWRGdGRGS25PS3RHV2hwK0U5U20xWFJJcmk2Q0M0RHZFNVFZVmlyRmNqNjRyb3dkYVZha3BTMzFYM011bEp5amRteFhVYUJRQVVBWjJrYU5aYVExMjFsR1VOMUtacE1uUEo3RDBIdDcxaFF3MU9oek9DM2R5SVFVTDI2aVhlajIxemMzTndYbmptdUlWZ1o0cENwQ2drakJIUTVOS2VHaE9UbHJkcXdPQ2JiTXgvQjlsSXBTYSsxYVdOdUdSNzF5ckQwSTlLd2VYVTNvNVNhOVdSN0JkVy92TmFIU3JXQzlodW9VS1BEYi9aa1ZUOG9USU9NZmdLNlkwSVJrcHBiSzN5TkZCSjNRL1ZOT2cxT0dLSzZERlk1VW1YYWNmTXB5S2RXakdza3BkSGY3Z2xGUzBaSHFHazJsL2ZXTjNjb1dtc25MeEhQQUpIZjE3SDhLVlREd3F6ak9TMWpzRW9LVFRmUVcvMHEwdjd5eHVibEMwdG01a2lJUFFrWTUvUS9nS0tsQ0ZXVVp5V3NkZ2xCU2FiNkVXczZIWjZzOFVseDUwYzhXUWswRWhqZFFlb3lPMVRYd3RPdTA1YnJxdEdLZE5UM0sxbDRYc2JXOGl1bmx2YnFXSTdvL3RWdzBnUStvQjR6V2RQQTA0U1UyMjJ1N3VUR2xGTzQ3VXZEZGpmM3JYZSs2dHJsd0ZkN1dkb2pJQjAzWTY0cDFjRlRxUzU5VS9KMkhLbEdUdUxwM2h5eXNYbmtSN3FXNGxqTVJubW5aNUZVOWxKNmV2RkZMQjA2YmJWMjNwZHU3Q05KUktwOEkycEJCMUhXQ0QyKzNQV2Y5bncvbWw5N0o5aXU3KzgyOU9zYmZUcktLMHM0eEhCRU1LbzUveWE2NlZLTktDaEJXU05ZeFVWWkZtdEJoUUFVQUZBQlFCNFY0KzA3eEY4T3ZFWThWZUhibTZ2ZERkdjlLc3BaV2RZZ1R5TUVuQ25zZjRUN2RmVm9UcDRtSHNxaXRMb3p6NjBaMEplMGhxajFUd1Y0dDB2eGhwQ1gra3paeGdTd3Q5K0Z2UmgvWG9hNEsxQ1ZHWExJNjZWV05XTjRuUTFpYWhRQVVBRkFIazN4VytKaDB5VStIZkNZTjU0aXVENVJNUTMvWnllTUQxZjI3ZFQ2VjZHRnduTis4cWFSUng0akU4dnVVOVdidndvOEhYdmhyU2pjYTdmM043ckYwQVpmTW5hUllSMTJMazlmVTkvcFdXS3J4cXl0QldTTk1QUmROWGs3czd5dVE2QW9BS0FDZ0FvQUtBQ2dBb0FaTEdrc1R4eW9yeHVDckt3eUNEMUJGQ2R0VURWenhIeGQ4Tk5YOExhdTNpVDRhVFBGSU10TnA2bk9SMUlVSGhsL3dCZy9oMkE5U2xpNFZZK3p4SDNubjFNTktuTDJsSDdqZDhCL0dMU3RhZGRQOFFxTkcxaFRzWlpzckU3ZXhQM1Q3Titackt2Z1pROTZHcU5LT0xqUDNaNk05VFVobERLUVFlUVIzcmdPd282MXJHbmFIWXZlYXRlUTJsc3ZWNVd4bjJIY24ySE5YQ25LbzdSVnlaVGpCWGt6eFh4QjhTTmY4ZVg3NkY4TjdPZU9CdmxtMUJ4dFlMNjUvNVpqMys4ZTJEWHBVOExUdzY5cFhmeU9DZUluV2ZKUlh6TzUrR1B3MDA3d1pEOXFtWVh1dHlEOTdkc1B1NTZxZ1BRZS9VL3BYTGljWEt2b3RFZEZERFJwYTdzOUFya09rS0FDZ0FvQUtBQ2dBb0FLQUNnQW9BS0FPTzhjZkRydy80d1F2cU5yNVY3akMzY0dGa0gxN01Qcm11bWhpcWxINFhwMk1LdUhoVjNXcDVyL3dBSVQ4Uy9CUk1QaERXUnFPbk44cXhTTW9NWVBmWkprREgreWZ3cnQrc1lhdnJWalpuTDdHdlMwcHU2TG1rZkJ2VXRidmsxTDRpYTVQZlRkZnMwTWhJSHNYUFFleWdmV3BuajR3WExRalljY0hLYjVxcnVld2FMbytuNkhZSlphUlp3MmxzblJJbHhrK3A5VDdubXZPbk9WUjgwbmRuZEdFWUswVVg2Z29LQUNnQW9BS0FDZ0FvQUtBQ2dBb0FLQUNnQW9BS0FDZ0FvQUtBQ2dBb0FLQUNnQW9BLy85az0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiYmI2NmMyOTRkZTA4NDdlNGI3YWFkMTJjMmNkM2ZiMjAiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjp0cnVlLCJ1cCI6dHJ1ZSwiY3JlZE1nbXQiOmZhbHNlfSwibWF4TXNnU2l6ZSI6MTIwMCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6MjAsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4LCJ0cmFuc3BvcnRzIjpbInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTA4LTEyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiTWV0dGxlc2VtaSBWaXNod2FhcyBIYXdrIEF1dGhlbnRpY2F0b3IiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI1MDgxMjAwNCIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUHJvZmlsZXMiOlsiY29uc3VtZXIiXSwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wOC0xMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI2LTAyLTExIn0seyJhYWd1aWQiOiJjNGRkYWYxMS0zMDMyLTRlNzctYjNiOS0zYTM0MDM2OWI5YWQiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6ImM0ZGRhZjExLTMwMzItNGU3Ny1iM2I5LTNhMzQwMzY5YjlhZCIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJISUQgQ3Jlc2NlbmRvIEZ1c2lvbiJ9LCJkZXNjcmlwdGlvbiI6IkhJRCBDcmVzY2VuZG8gRnVzaW9uIiwiYWx0ZXJuYXRpdmVEZXNjcmlwdGlvbnMiOnsiZW4tVVMiOiJISUQgQ3Jlc2NlbmRvIEZ1c2lvbiJ9LCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MjYyMTQ0LCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH0seyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDL2pDQ0FxU2dBd0lCQWdJVUlQK1ZRdXEvMVJ2c1lvSGx1QkFoRVlQdmdUZ3dDZ1lJS29aSXpqMEVBd0l3YXpFTE1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBb01Da2hKUkNCSGJHOWlZV3d4SWpBZ0JnTlZCQXNNR1VGMWRHaGxiblJwWTJGMGIzSWdRWFIwWlhOMFlYUnBiMjR4SXpBaEJnTlZCQU1NR2taSlJFOGdRWFIwWlhOMFlYUnBiMjRnVW05dmRDQkRRU0F5TUNBWERUSTFNREl4TVRFMk1EQXdNbG9ZRHpJd05UQXdNakV4TVRZd01EQXlXakJuTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNnd0tTRWxFSUVkc2IySmhiREVpTUNBR0ExVUVDd3daUVhWMGFHVnVkR2xqWVhSdmNpQkJkSFJsYzNSaGRHbHZiakVmTUIwR0ExVUVBd3dXUmtsRVR5QkJkSFJsYzNSaGRHbHZiaUJEUVNBeE1EQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJHdExaMUE2M0R4TGZNK083WDd1UmJpSjJLaUhhVHBPeHhybzFMZk4xSzc4YmZJZ21qNEdsYWJlKzBBN0NPd2Z4VG9vcnBOZGsrK3QxSDIwMmtjdi9TK2pnZ0VtTUlJQklqQU9CZ05WSFE4QkFmOEVCQU1DQVlZd0VnWURWUjBUQVFIL0JBZ3dCZ0VCL3dJQkFEQWZCZ05WSFNNRUdEQVdnQlM3NkRwbDkzdkIyaDVGREx2eU1NdlVCeWozaXpBZEJnTlZIUTRFRmdRVVM3ZU9ZbzR2c2tsT3ZoaGU0TnFia2dkYm1qTXdSQVlEVlIwZkJEMHdPekE1b0RlZ05ZWXphSFIwY0RvdkwyTnliQzVvZVdSeVlXNTBhV1F1WTI5dEwwWkpSRTlCZEhSbGMzUmhkR2x2YmxKdmIzUkRRVEl1WTNKc01IWUdDQ3NHQVFVRkJ3RUJCR293YURBL0JnZ3JCZ0VGQlFjd0FvWXphSFIwY0RvdkwyTnliQzVvZVdSeVlXNTBhV1F1WTI5dEwwWkpSRTlCZEhSbGMzUmhkR2x2YmxKdmIzUkRRVEl1Y0Rkak1DVUdDQ3NHQVFVRkJ6QUJoaGxvZEhSd09pOHZiMk56Y0M1b2VXUnlZVzUwYVdRdVkyOXRNQW9HQ0NxR1NNNDlCQU1DQTBnQU1FVUNJRU90dGI0OWVHQU5HZ3Jtamd6TXltdkpwQzR1OEZIU0cwV0g2b0RaZVkyTEFpRUF0WUlUMXg1bjUxVjcyL3Exd2pwMzJ6dEJVWm5WSjhHbDN6alREWVJ3M3kwPSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFWTUFBQUNzQ0FZQUFBREcrRThNQUFBQUlHTklVazBBQUhvbEFBQ0Fnd0FBK2Y4QUFJRHBBQUIxTUFBQTZtQUFBRHFZQUFBWGI1SmZ4VVlBQUFBSmNFaFpjd0FBRDJBQUFBOWdBWHA0UlkwQUFBeWdTVVJCVkhoZTdaMS9iSlRsSGNCdmpoak5jQzRPK2RYZVhWdFVUTXppUDdvWVhaWTUxSWtLZDFmTm5GSGo1b2hCbUE3ajJNUnNab2xteGhoTkpvcnQyNEtnc2lGc2ltN1RBZE1ZUkZRRUZUY1Z4dy9yd0FFRlJDaFErdXVlUGMvMXFRUDNUTnMrMzN2ZXUrdm5rM3pTNDJnZm52ZTl0NTgrNzczWEl3RUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVVFcGtHNi9YUHBuSVJSOGdJaDV0NDFyOWNZYXRCZndQOVEzbjZ4MjBUWnRQMURjcFJNVFBOZGVVMTR1dVZ0Mk1xMjFGQmt4dE1qbXJMcFZxMFI4MzExWlgzMnJ2TG1NS1AyMzBqcW1QM0RzTkVmSHp6RVc3RXhmT0dXbUw4b1drazhrZjFxWFNQWFhWcWFYSlVhUE9xS21xT3JNdW1mcHJiVExWblVxbExyZWZWa1pNbVAxMS9aT2x3N2x6RUJFSG9qbXJ6VVpUYlYzK0wzVmp4MDR3SVIwOWV2VEo0MUtwS2RvYmpDTkhqaHcxZHV6WTVMaDBqZEtyMUxQdHA1Y0JKcVNzUmhGUjB0Nmd6clNWY1hHTURxbXFTU1l6K3ZZd0U4NmFxdFMxdGRYcDY4M3R1akZqVWpWams1UDFLclc5OTlQTGdWelU1ZHdaaUlnK21xQmVPcWZPbHVZbzB1bjBjVHFtWGZhUHc4d0sxZDVPNkZQOHQyclQ2VnYwelMrYnNQYmVXK3Jrb28rY093RVJVY0pjZE1EVzVpaXFxNnVQSDVlcTZWdDFGbGFtT3FJNzYxSTEyMDlKMS9SRjlrdmxFZFA2aG04N054NFJVZEpzd3oyMk9wOWlZcXBYbzUzMmoyWmxtai9wcEpPK3FqOTJwOGVNT2QzZWYweDV4RFRYdE0rNTRZaUlrdWFpRGx1ZEkrazloVThuanRPM0N6RTFkNDRZTVdLTXZuM1EzQjQrZXZqSituYmZLcldFNFhXa2lCakt5NXZQc3VYNWxMcFVhbVp0TXIzZjNLNnRUcjVUdUZOVGwwdytXcE5LM2F6L3JxTzJPajNOM2wyaVRJNm1PamNZRWJFWTVwcWV0ZlU1aXJycTFETzF5ZFNCY1ZXcEcreGRpYnFxNUF5ek90WDNMN1IzbFREMTBYTG5CaU1pRnNOY1UrSFUzVVZ5VlBJTUhkV1ZwOVhXcVZOcmF2UDY5dktxRVZXbjJyOHVjZXFqL2M0TlJrUXNocm1vakY0dk9oQ0lLU0tHMUgwUnFnSWdwb2dZVW1LS2lDZ2dNVVZFRkpDWUlpSUtTRXdSRVFVa3BvaUlBaEpUUkVRQmlTa2lvb0RFRkJGUlFHS0tpQ2dnTVVWRUZKQ1lJaUlLU0V3UkVRVWtwb2lJQWhKVFFTOTdXQ1V1ZUVBbExwd2RWdk52NWlMM25BYnI5eDUwLzF2RjlpS3RhejRETWE3SHdEeitydm4weDZ4Ky9PS1lkekUwMjNHUlBuN01NWFNwM2llVEc5M2JYR2tTVXpsdm52dXlpb3ZqcnB6bm5OT2cxQWYvdXMyNzdNaGgyZm5Kb2Q1dlFOZTgrcVArSm82TGFkRXE5NXo2NGRldVhXQkhxUXc2dTN0VVczdW4ycnhqbjFxOVlhZGFzbnF6dXFuNVpYWHlOUXRVNHVLSFZDSlRnWUVscG5LYWI2YTRxSlNZZnJUblFObkc5SWFIWDNMUHFSK2VxQ016Vk5pei83QmE4ZFpXZGVWOXo2dkVCTDJLclpTd0VsTTVpYWsveEhSbzBkblZvNTVkOTZFYWYrTWl2NmRKU2tGaUtpY3g5WWVZRGwzZWJ0bWp6cHUxMU8veGoxTmlLaWN4OVllWXdodGJkcWxUcHVxVnFya281OWhYSlNzeGxaT1kra05Nd3pQcnNUWHF6c1Z2cUx1V3ZLRXlkeTlUdVh1V3ExOHVmTDF3MzcxTDE2c1Y2N2NWTGlhRnBDZWZWNCsrK0UrVnVHQzJjMytWcE1SVVRtTHFEekVOVDJMQ2IvVXFzRkVsTWczL25aTzVLRlM0VHp0SlB4Nlh6bEZWVXhhcUtYTldxby9iRHR1dkxENjcyOXJWTjM2NnhJVHFxUDFWa2hKVE9ZbXBQOFEwUElYWGhqcm01RlJIN1pqSkRlcU8zNisxWDExOHVudDYxQzJQck5iSDVSR3hMMFdKcVp6RTFCOWlHcDRCeGJSUEhiWkpkeSt6STRSaC9ndnZGMWJJenZtVWdzUlVUbUxxRHpFTno2Qmlhc3cwcWgvcjAvNlFQUG5xQjM3SFJ6RWxwbklTVTMrSWFYZ0dIVk5qTmxKLy8zQ1BIU2tNVDcvV1VwcEJKYVp5RWxOL2lHbDR2R0txSGYrVHhYYWtjUHp4RmIxQ0xiWG5VSW1wbk1UVUgySWFIdCtZbXFpOXQyMnZIUzBjUDF2d3FucytjVWxNNVNTbS9oRFQ4SGpITkJlcDgyNS8ybzRXam53K3I4WlBYK3llVXh3U1V6bUpxVC9FTkR6ZU1kVis1YXBIN0doaDJYZXdRMlQrSWhKVE9ZbXBQOFEwUENJeG1tUk85VCt4STRibG1UVXRoZFd4YzE0aEphWnlFbE4vaUdsNFJHS2FqZFF0ODE2eEk0Wm4rRldDeC85Z0phWnlFbE4vaUdsNHBFNlR6NXl4eEk0WW52Yy8ydHY3NjYrT2VRV1RtTXBKVFAwaHB1R1JpdW5vNngrM0k4YkRpT3NlZGM0cm1NUlVUbUxxRHpFTmoxUk1oMTNSYkVlTUIzUE14dnJjS1RHVms1ajZRMHpESXhWVGN4R3FxN3ZiamhxZXJ1NGV1VzBaak1SVVRtTHFEekVOajFpQTlIR3pkbE9ySFRVZWJwMGY0d3Y1aWFtY3hOUWZZaG9lc1pobUd0WENsUnZ0cVBHd2JiYytmdUo2aDM1aUtpY3g5WWVZaGtjc3BqcGl0ejIyeG80YUQrMGRYU294TWFhMzZTT21jaEpUZjRocGVDUmpHdWRyVGZ1STdhbytNWlV6enBoKzUxZC9VdWZPZWxyRWIvNzhLYlVoaGpldU1CRFQ4SWpGTktiZjBmOHN0ejIreGoyL1lrdE01WXd6cHBVQ01RMlBXRXkxNTl5MjFJNGFINnZlM2U2Y1c5RWxwbklTVTMrSWFYZ3FMYVpiNDdvSVJVemxKS2IrRU5Qd1ZGcE10Kzg5MlB1L3Fqcm1WMVNKcVp6RTFCOWlHcDVLaSttdWZlMHFsbmZoSjZaeUVsTi9pR2w0S2kybWhmYzR2Y3pqR0Jxc3hGUk9ZdW9QTVExUHhaM21mOHhwdml6RXRDd2hwdUdwdEpqdTJIdUltSXBDVE1zU1locWVTb3ZwQnp2M203QTU1MWRVaWFtY2NjYlV2TUhFNjBLdTJiaFRIV2p2c2lPSGhaaUdwOUppdW1UMVp1ZmNpaTR4bFRQT21CNXJmaEtiSjkwbHZQZ2g5ZnJHZU43OWg1aUdSeXltSmZJYlVQWDNMSGZQcjlnU1V6bmpqQ20vbTI4bHBnTkdMS1lsOHJ2NXNaemlHNG1wbk1UVUgySWFIc21ZVG8vNXVzSCtRNTI5WjFldStSVmJZaW9uTWZXSG1JWkhMS2FaUnJYb3BVMTIxSGhZMzdLYmxhazR4SFR3RXROQlFVd2IxWXIxMit5bzhYRDJ6S1h1dVlXUW1NcEpUUDBocHVFUmkrbmtCdFg2eVNFN2FuamEydlVwL2lVeHZURzBrWmpLU1V6OUlhYmhrWHpPTkU2ZVdMWEpQYTlRRWxNNWlhay94RFE4VWpFOThacjVkc1R3OVBUazQzbmJ2U01scG5JU1UzK0lhWGlrWW5ycTlDZnNpT0g1eTdwL21aZzU1eFZNWWlvbk1mV0htSVpISktZNlpKZmMrWndkTVN5SE83djFNUlBqYzZWOUVsTTVpYWsveERROElqSE5OS29scTdmWUVjTXlyWEdWZTA2aEphWnlFbE4vaUdsNFJHSWEwOFduVGR2M3hmY2kvYzlLVE9Va3B2NFEwL0JJeEhUOHRFVjJ0SEMwZCtqVGUzMnN1dVlUaThSVVRtTHFEekVOajNkTTlTbiszT2MzMk5IQ1lLN2Vuelh6U2ZkODRwS1l5a2xNL1NHbTRmR042ZkFmekxNamhXUEd2SmVkYzRsVllpb25NZldIbUliSEs2YVRHOVRjdjRWZGxkNitjSTBKbDNzK2NVcE01U1NtL2hEVDhBdzZwdGxJblgvSG4rMG9ZYmlwZVZVOC95VkpmeVNtY2hKVGY0aHBlQVlWMDB5RE92ZjJaK3dJeGFlN0o2OStOUHZGMGx5UjlrbE01U1NtL2hEVDhQUTdwaVprK3JUZUhHdjNQclhlZm5YeE9kamVxY1pOWGVTZVV5bEpUT1VrcHY0UTAvQWt2blYvNzdzdGZkYUpENmxoVnpTckU2K2VyMDYvYWJISzNMMWMvU0h3Qy9PWHZibTFNQS9YUGlzNWlhbWN4TlFmWWdxR2c0YzcxVlgzUDE5WUNidjJWMGxLVE9Va3B2NFEwNkZOUjFlM2Vualp1eXJ4M1FlYys2bWtKYVp5RWxOL2lPblFwTDJ6U3pXdDJOQjdTbC9LRjVrK1QySXFKekgxaDVnT0hmTDV2SHE3WlkrYU1tZWxTbHlnVjZMbEd0RStpYW1jeE5RZllsclpmTngyV0sxNmI0ZTYwYnpUVTdaUkpTWjVQTmFsSmpHVmM5SnZscW5sYjI0dFhJRU02Y3AzL3EyTy9mNWM1NXdHWmFaUlBmanNQNXovVnJIOTNjcU4raHZNNDZMRHhEbnFwWGUzTzhjdXBpdmUycVl1dWVzNTk1ejY0UWxYejFlNzk3ZXJsdGEyaXZETkxidlYyazJ0aFgzejZ5Zldxb2wzUHFkT01EL3dMOWFuOGZxSHRXc2ZsTDNFRkxFRU5LZTQ1dVZJWmxWZTdwcnRNRmZoeStsS3ZJVEVGQkZSUUdLS2lDZ2dNVVZFRkpDWUlpSUtTRXdSRVFVa3BvaUlBaEpUUkVRQmlTa2lvb0RFRkJGUlFHS0tpQ2dnTVVWRUZKQ1lJaUlLU0V3UkVRVWtwb2lJQWhKVFJFUUJLemFtdWFqVnVjR0lpTVh4b0sxUGhaRnRhSEpzTENKaWNjeEZ1Mng5S293cm1zYzdOeGdSc1JobW9sL1krbFFnNWprTTEwWWpJa3FhaS9LMk9oVktydWtGNTRZaklrcWFpM2JZNmxRd3VhamJ1ZkdJaUJMbXRPZmNkN3d0VGdXVGk2WTdkd0Fpb29TNWFKbXR6UkNnUG5yTnVSTVFFWDNNUnEyMk1rT0liT05HNTg1QVJCeU11YVlLZlNsVWY4aEZpL1FPeU91VnFudm5JQ0ora2ViS2ZYM1RXbHVWSVV3Mk9rMnZVbHVKS2lJTzJGeTBONUZ0dXM3V0JBcVlxTlpINi9USGZUcXNuWW42WnIyekVCR1AwS3hDczFHYmJzU1dSS1poZ3EwSEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVCcGtVajhCNEFvbStNYlQrM0pBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiYzRkZGFmMTEzMDMyNGU3N2IzYjkzYTM0MDM2OWI5YWQiLCJvcHRpb25zIjp7InJrIjp0cnVlLCJjbGllbnRQaW4iOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOnRydWUsImFsd2F5c1V2IjpmYWxzZX0sIm1heE1zZ1NpemUiOjUxMCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0IjoxLCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjk0LCJ0cmFuc3BvcnRzIjpbIm5mYyJdLCJmb3JjZVBJTkNoYW5nZSI6ZmFsc2UsIm1pblBJTkxlbmd0aCI6NCwiZmlybXdhcmVWZXJzaW9uIjoyNjIxNDQsInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjozMH19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTAzLTE3IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjI2MjE0NCwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJISUQgQ3Jlc2NlbmRvIEZ1c2lvbiIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjUwMzE3MDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDMtMTciLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MjYyMTQ0fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTA0LTAyIn0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiN2JhYWJjYjBiNDZiMGExMzVlODc4NTUxYmFjYjczYjNlYzk4MTlmMyJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyI3YmFhYmNiMGI0NmIwYTEzNWU4Nzg1NTFiYWNiNzNiM2VjOTgxOWYzIl0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJGb29uZ3RvbmUgRklETyBBdXRoZW50aWNhdG9yIn0sImRlc2NyaXB0aW9uIjoiRm9vbmd0b25lIEZJRE8gQXV0aGVudGljYXRvciIsImFsdGVybmF0aXZlRGVzY3JpcHRpb25zIjp7InpoLVRXIjoi5a6P6YCa5pW456K856eR5oqARklET-i6q-S7vempl-itieWZqCJ9LCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoyfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNBakNDQWFlZ0F3SUJBZ0lVVXYreStmakxKWU8zOUtkTlJNNE1CNDNNQ0pjd0NnWUlLb1pJemowRUF3SXdkVEVMTUFrR0ExVUVCaE1DVkZjeEpqQWtCZ05WQkFvTUhVWnZiMjVuZEc5dVpTQlVaV05vYm05c2IyZDVJRU52TGl4TWRHUXVNU0l3SUFZRFZRUUxEQmxCZFhSb1pXNTBhV05oZEc5eUlFRjBkR1Z6ZEdGMGFXOXVNUm93R0FZRFZRUUREQkZHYjI5dVozUnZibVVnUmtsRVR5QkRRVEFnRncweU5ERXdNRFF3TVRJeU1UQmFHQTh5TURjME1Ea3lNakF4TWpJeE1Gb3dkVEVMTUFrR0ExVUVCaE1DVkZjeEpqQWtCZ05WQkFvTUhVWnZiMjVuZEc5dVpTQlVaV05vYm05c2IyZDVJRU52TGl4TWRHUXVNU0l3SUFZRFZRUUxEQmxCZFhSb1pXNTBhV05oZEc5eUlFRjBkR1Z6ZEdGMGFXOXVNUm93R0FZRFZRUUREQkZHYjI5dVozUnZibVVnUmtsRVR5QkRRVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCQnNzWWt1TUd0MEg2dXVjRUZmMHY5S1lDc1JZM2tpMFZ1ckJwSFBGVVpranhqOUpocVFPSzZIUGlWYXQ3TEc4MWpDTkRXTkFkb3ZzMldzRFZ5K1VRWUNqRXpBUk1BOEdBMVVkRXdRSU1BWUJBZjhDQVFBd0NnWUlLb1pJemowRUF3SURTUUF3UmdJaEFQRmJJV2c3NTNsUGpXckY2NlBYbUdzS3lHekp3N0Q5UGkrbDNyZzhzbEtaQWlFQXVPS2FpZWZDdmJidVdERzlYcy9qSkUzNTJIYWRvVGVDd1Z4SnNJWktvN0k9Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUtBQUFBQWxDQUlBQUFCSzBIVVJBQUFBQ1hCSVdYTUFBQTdFQUFBT3hBR1ZLdzRiQUFBZDBFbEVRVlI0MnUyYmQxUlYxN2JHajhhS2lEUkJwSWlvaUtMWWV4ZXg5OTRSRzRvTmF6VEcyQkI3aTExaml4cGJOTEVMVWdSN3hZYUt4bDVRc2FNaVJmSitlMC9ZYmdHTjk3NTM3eDl2dU1jZVo2eXp6OXFyelBMTmI2NjFqdUhEdCt2LzlXWDRKb0p2Q3Y1Mi9iOVdjRkpTMG9jazVUUEQ2OS9yVlY1TTA4NFhXdnZmOTVoaHAvb24rc0ovNlBxQzZENzNVNGFDK3Bka1l2aXFBU1VrSk1YSEs1K0o2dGZFeEtUNGhFU2VKQ1orV1RIL0owS1J6L2o0K0VTMU95NEs4WisvRWo4ZGxSUjRtSkI2SlNjbnEzTkt1YlQyMDl1WjlpVHgwMHZxLytNQTlKY000TXNqVEV3blQyMEF2S3Nmbm41Zy80NEhmK3liK1Njbi81MTZmZUJPL3ZEeCs5OS9LOHFXUGo1dlN2SmNtNTcra2lHbWY2N0pYZnVVN21TZWYvL1RsZDQvOUwvR3hzWW02eWFsL3pYOUZETHNMam41YXdmd3VkRnFScVBOVVh1ZVpnaDhUMDd6VmtLQ21Jc21FNzdKay9RbVl2aXMweWlhVTNwTlNvaVBDUTI5TnNrdm9sUFhFL1VhSEt0VjkyU2paaGY2OXJ1emZIbnN0V3NwSFg5cVh4bTZZSWJ6Yk51czhlaGh2aG4rcE1kTVZMNXczcHpycWQwZERnc2JOM3FVLzhUeGZ1UEgrVSthd0QxbHdrK1R4NCtiUFgzcURIKy84K2NpMEo4bU81bnp3d2Yzanh3S1AzNzBTR2h3VUtWU3JyeCs3TWpoUTJFSEw2aVZyMFZGZFduWE92TFNSU3EvajR0TDBIa3pWMHpNa3h0Ly9YWGpyK3MzYjl6Z3ZuZjM3cHMzYjhKQ1E0SURBNElQQkhLSEJCM2dsc0wrdlh0dTM3d3AvY3JyVkg3Nk5JWVdqaDQrdEhYVHhwRytnOGYvTUZveldTNW14eGdHOXUwMWRFQi9DamlDSmozQm02aXJWeHE3MXpsMjVGRHlwNVkxZGZKRXo0N3R2MnpjaHZUcVZiV2JrS3c2NjcyMXZ4NnRXak13ajFWQUx2UEEzSG1Eekd5Q0xPME9tRm9IR2xzRUdKbUgyRHFlOC9SNmVmNmNxdVBFREhXc3djakc5YjlPK3VuSHFhbyswSTMvUk9XemdKVjVoWkxGcDAyZWlJWlNIcUt0aWVNUGg0Y2xwTm9wczdwMDRVSStFeU5iYzVPbEMzOSsrK2JOeXVWTGl6cll1bGV2N0Y2dE10cXE2T1phczJLNStyV3FGOHhuYVRBWWFFZWtKaU41Ly80OVh4Zk5uMnVVeWVEbTdGU2lzS05EWHJNaWR2a281elBKVmF0U2VYNDlHQktjM1dCQWVXa2tSU01VdmgvbW04MWdvRWRlTk11ZXVaeXJ5K1hJU0VkckMrdmNPUm1TclptSmpha3hOMlVIUzdPY0JzT1NCZk41aTM1RmMrMWJORFhML3AyMWlWRitzOXlXdWJKVHYzZTNMbFRZczNOSHQ0N3QzNzU5ZzVDb1ZxZHF4UWExYTZnamY2K0prVVlRd29salJ6SWJESC84dm9VeVZuamgzTGx6RVdjdlIxNXEwNnl4cTFNQm5seThjSjdINXlNaTd0eSsvVmtQMXVJMVFrVzdiKy9kUGRPNmJVQU8wd05tTmlGMmhVTHRDNGM2RkFteGNUeVF4NHBDcUwzeWhLK0J1U3lDOHpuY25EY3ZXWFNjVVZRV01HbFl1NGFSd1lCa0MrVzNraHVSMWFoUXRyUkxZZTJKY3R0YUl5bkVjZkw0TWFZdEVZc1dtRStyeGcxTXMyZStldm15R0UxUVFFQm9jTEFvNDhybHk2T0grOXFZbW93YU9nU1BFU1NYaXhZUTA1enBVMUZKNUtWTDE2OUZGYmExL21uTTl6aGlyMjZkSzVaeXhXSzJiOTFpbFR0bmo4NGRCL1RwTld6UUFPK2VubGV2WEpiZUdUK0MrMjNkV21kN216N2R1Lzd4KzlhQWZYdVJvNzJsNmFybHk1NDllL1kwSnFaS0diY0J2WHRTZmhRZC9malJvMWV2WG1xQms4THFYNVpQL1BFSDBBVUZVM2p4L0xsWTdlK2JOK1hNWk9qUXFzVzd0MjhWK2RTcDBiSlJmYjBISytDc3Vpd2ViSkkxTS9CQXVheHJVY1NZTjFkMkM2TnN1SWVUVFY0S0ZqbXpZbTFaRElZZVhUcUtjWC9XZzBXN3NWRlh3MHVVUnJ1b05pUi93ZUI4QlVKc25WQnRlTW15RjMwR0JPYTJDTW52aEhhVjUzYUYrTnlmTFhma0VGK0oyY0s2UDJrek1aR0J0bWpvd2YwbU52YlZ5eGRjcjErL2pqaDdoa2srZWhUOTZ1WExWK3IxL05rejFJUDA4NXNaMzc5L2o3R0s5MnRlQmNwcDVVSDkrbGliNUVMcnpSdlVLMWJRdnFsSDNkQ2dJRDNDQzdiVDljOXpaaUVSYkF0NzUzYktsOWZaUG4rSlFvNUY3R3p5bXhxRGZ2Um9reWNYa0FDYzRHMzhkUGJNYVZYV0NvcEluRU05RzlhdWtjWlJNSkt0VnE1MDh3YnU5RTVyWllvVm9kQzBYcDNtRFQzdTM3c25NVUxHa0JJcDR4T3cybFhMbDZvaFBGbU1IaWZPWVRCNGRtci83dDI3Um5Wck5xdnZydllWcndmbmFYNlRnQkRlN2RlengrSUY4M2RzM3diT2MyTnExSGR6THZUSDFpM2J0bXpHUmpmL3R2N0U4V05hVk1ySWc5VWY0aDQvQ25jckcyaHNHV0pmR09XbGFOZmNKc1RlNmZtSkU0cEJqWitBUm9Qek93V3JPdVlUYjk2ZnhmanFqK01VbGFqWXFHY1pNdGJLcFV2V3FGaFdtWjR5ZWdYNnhvd1labW1VTGViSkU1bXpkcFV0WGhUWjZVRnkxNTkvMUs5VjgvVEprNks1bGN1V3RtbldDTlhpbE5sVWN3WU11clJ0amFUYU5XL1NvM01Id0ZaRUxONS8rOVpOd2hzS0p1Z2VQM1lVbkJnNVpCQW8xNzFqK3pJdVJjNmNQb1drNmxXdm9pSkJKSzBSclFWalJkQU1Bemd4eVdJSUNnd1E0bjM3MWkzSGZKWU1ZTmdnbjJFRGZUQ3ZtaFhMRGgvazQ5dmZteWVQb2g5cUNpYWMzN3A1a3dFZytueDVjaEUrUUE2K2FvcmY4T3Nhd3NyZTNidEE4c2J1dFRVRlMyVFp0M3VYOFhjR0IwdFQ3SWtvUUVkSk9uTWYzTjhicVg1VkRFNU5oeEp4MzRpdTNmZG5NOUZyTjhnOGY2aGprZWVuRlBrbXFoMUhUWnkwUDN0dThlT1FmSTdvR0ZjT01ESjd0SHUzMUVsRDVYbTRmOC91d1AzNzlFTXA3dVFBczBoUHIzYitzWjJhWXViaWdodlhyN00xejRPeC8vajlTQ3IwN05ySkxNZDNQcjI5VUJzQ0xXSnZnL24zN2RFTnlFVlZSTk9UeDQrTDIrbGpjQ2FEQWZXM2E5RlVuSzlUbTViWUJ6R0M0VkZBdm9JUVpqbXlIRDE4V0l2aXZNNEFsaTllbE5jNEJ5QXNJM3h3L3o3aVhycHdBYzZLd3ZEN1BwNWRLYU5MbkR2dVhaeTRFVFVmUG5oZ2IyRnFralVUQUZEWTFzck9Jbzl4WmdNRHVIUDdGbDRvWXhQQ2tjYURSWHFFajJkUG40YUZCSnRreWJScHd6cktqeDgvaHQ5QkdvNkVoN2RyM2hSbjRQVkRCdzlDSGhuODI3ZHZQeHVERTFWZmViUjNUNEN4dVFDdnB0MkRoWXU5T0hOYU5LY29USzE1emM5dmYzYVRZQUJjMFhFQmtEekl3dlpJeGFyeHIxNUp1cXdQSkFTZUgwWU04L1h4N3VmbDZlM1Z2VjlQVC93TWkvYW9VZFc3UjNla3d4UGw5dkwwNmVVMXlMczNaRXB6QXBFVW9hNlBaN2RKNDhieXZHK1A3bldyVmRZTXd0a2gvN0pGQzZTTW8wQmt6a1djMFlpMHVPQ3BFeWRtVFBXYlBjM2ZiOEpQZURCcW51ay9CY1lIMEJFak1SMFFudGQzNy9pVGtFYVkxMUl5NlIyT0RUTm81RjRMSHVUVnBXUEVtVE91VGc3NHVubk9yTnpZQjVxelVNdm9NdUwwYWMyOFlsKy9KbFN2WExZRWN6VE5tYU56bTVaclYvNnlhZjA2Q0FUWUErb21xZTF6TmFoZEhaRFhGS3ozalhObnoyQVdlRGxsRWdIWUlzaG5tdjA3cTl3NTRKN3dFdE5zbVRFZ2VnOExDY2s0QnF2NGpFcVNUalZ0RVdpU04xamlybDBoZEhiUXVmakxjeEVwMmxXV09PTGxreWZYL2YwRGNwcGlCQktQQVdySTl0MDFhelZUMEJUODVNbmo2dVVWUGxXcFZBbElMOENDQitEQjFjdVhxVmErVEpVeUpYa3VOejhWYzdUMzZkMVRuK29JVUV0STVuTklmMi9MWE5tZ3dVaVpHNGNvNnBEZnRSRHgxYUdZb3gxVFBYUHFsQmEvSlVETW1ESzVpWHR0V0F4aGt2cDBoTHR3SS9INk5hc1hzTEpnYlBTMWFQNDhSMnRMT0lHNkdKSW8zZUdhWUNQbVNGTFhwbWxqMmo5MjVFaWgvTmFMZjU1MzcrNGRYSllaWWFPVVNhVndZbjJPcHlVMjZOSXlWdzdHZkNVeVVwNFFNakVzWDU5K2I5UzhIQVduZUhEOFJ3K1dKUUVDUko1c21ZRXhlQlkwaFFnU0duUUFQOFpyRHdZSFVjQjM2OWVzQm5WNC92eTVMT044b21CRnVTcTNlaFY1S2NqS0xqaWZvK2E3WWM2dXJ5NWVTSW1zaVlreVdER3RKSlVtWEo4K2ZYK09QQ2wrYk90RUtuVzZSV3Z5cThSUFUwa3Q1RWhDSEg0dzFEUjdsdlZyVml0b2YrWEtXNVZHS3I5KytLQkpSSnNoVDNidjNGRzBnRzNWc3FYcVZxMzArdFVyaElKeHJGKzcrdGZWSzRuSHNPTGUzYnVzVzdPSys2Y3hvOERTczZvUGlZTEZPRUJnbExwdnorNHRHMy9EZ3pFZ3d0dmNHZE1SM0xtelo4bUpRV2J5Yko4K1BldFVyYVM1cjlyNzMyTkhqY2lWeVlDRG5qMTFDdC9GbFk4ZlBlcGdaVTVRV0xabzRaSUZQME95NnRlcUJ1cFE1blBycHQrMGlTdFpRRUxDcVJQSE1lZ2lkdFk0SEJPNWUrZTJ6SEhOeWhVRVlEUk56WG8xcXFEZ0pHWFo1NzErQ1lGcUY4NmZod3k2RkxETGt6WHo2Vk1uUnd3ZXhEVDFRWTJnYm1hVUE2cW96dzgvOVdDQ1FYTHluWldyVWp6U0RzNXNmYkJJOGRlWEkwVzdFbm9KdzVHK1E1TVZucVR3YmRIeFh6Tm1LSnpMcHFEaXgxYjJCd3NWZXhmOUVFVWxwWEk1NlU4c2l5c3VMbzdJZ1J3cFE2Y0wyK1gzSGRCZnJGNGp3RlRXWi9wSERoMGloNEVIRVhvSmhJUDc5YTFhMWkwMkZ2eDcvZVRKRXhJWWtwQlk5UUxIVUZYRW1SUUZpNGhwcDFYaittU3hQNHdjVGhUSElEeHFWaHM5ZkdqM2p1MEkyT2NqemxMWnhkRU8vQWRMRUJNOU1rak5OQmZNblUxQVFVTkJBZnNQaGdUQnQ1RXlHVUdwb29WTEZpbUk2M3ZVckZxallqbnlZM1FBbGxZcTdacTZKcFVVcjhxdFc0ZTJoVzN6Z1J6WUNuNVd1MHJGbUpnbjcrUGkrQW5lRnhmM2prSmo5MXF3TnBWdmZ0Q1dONTgralNHSVFMN290SGFWQ25nd0F4dnBPeGl6Z0tsUW1hU0RpbzNxMXJLMU1JMSsrREJGTCtrOUdESGdPRmUrSDZNbzJLRklvSW5Wd1VJdU9IU0tkbFZGdm9xOEdPWlNZcThoMjRVKzN1b3lpQXFob3VQcDAvZGx5WlhDdHkxc25wODRucXkrbUdaSlZqakZLTi9CNUgvQUR1WFJ3M3dSc1VRTzBxUlowL3dEOSszVkFwZ2U1SG00ZHVVS2NoaHNnclFoVDdaTWhEMm1qZHdMNXJNa0t5V1JzRExPS1FzT3dyYzFpS1pNOGpwMjFFaDRPMVlDWCt2ZjJ3c0ZvKy9aMDZaaUpWUVlQbmdnN29VUkNFR0xUeDI4b0RRY3dzbzRCL0lGZXloY3V4WVZkZlVxNEF4QWsxQVJ1WGZ0K0pPZ3ppczlPbldvVmFtY1dMT0F4MTZWQ2NQSUNOVWtXc0VIQXAzc2NPSTdtdjhSRVM1ZnVsU3Jjdm55cmk1RWdkMDcvK1IxRWlmaEJOOFpESmdSblFiczNTT1M0ZGVXalJwWTU4bDk5Y29WbmlBMDlMMXgvYTlwb3UrbkNsYWxjS0YzWDJYaHd0cmhVS255c2RlaWtsTzFTNTFuUjQraThxQzg5cUVGbkdITEVWMjZKY1RHcGl5TnFtcTd1V0RCQVZNcnVIZGdic3ZIQVlIWVlaS09TMnRzRmhSbHhET25UcUVNTUJwbE5vd2FPbGlVRVJNVDQyUmpoUitJVldwTGZVcm1GaGZIeEJiTm15TUtCcUtwUm5weit1UUpBaElzR20xZGlieDBMZW9xdUExTGlsQ3pXRzBoRERFUkFpZisrTVBjR2RQcVZLa0kwQTNvMDRzeEVKaS9IenBrK09BQjlIanA0Z1ZJRXo2azlhdlBBdTdldmkwS2hyNWlUS1J0d01hSXdRTWg0ZU5HanlLM3BuRmlNNVY3ZHVta0IzbTRJUUFPM1NVYkpIWVF0bVhoakp5Q0FaQU9FSGRRUEN3SmU2Vk5tTVR2bXpjeFprblNVRE9zaXRza2ErYWRmMnhUOGU4ZG53OGZQbkFyV3JobXhYSy9MRjBDWmd3ZDJGK0NkL3JOcFhRS05yWUl0bkk0VkxwODdGL1hQMUh3a2NPaFRzNGdzS3BnOHpOdE95UzhmcDB5ZTFWenR4WXR5bERCZWo4QVZYSjlsNmxydXphTUhqcFF2a1J4TitmQ0NsaTlCNjdpSkpXQ1c4NzA5OVA3a0xnK0xTeGZzb2pJalRKZzBlVkx1R2hoRytoYnNXUVJQUGxJZU5qOFdUT0pseWhlUkN3SzNyNWxDMGxSd3pvMXN4b01rTGloQTMzZ3REZzZYTFJMdXphUWM2cnQzYlVUQXR6VW84Nzc5L0Y2SFF0cElDOUMvY0Fwd2NMTzNJUXNqazduelpwUnBsaVI3VnUzbEhJdXRHckZNaXlBQ3IyN2R3VXdOUVV6Y2hnWnI2TmdLaXljTjVkSkFibFlPV2hSMGEwNExHL0MyREhnTUxiU3JINDlEYUsxUFM2ZVJKdzVoUmIzcUo0Tlh4SG5KajJEaUJnWkRBTHNFdnZTNzN0bUNOR0ZJZElFNExRUWZlRjhtRXZKZlptTnpubDZLVXZXYXBSTmZLK000SytaTS9kbk5mNGNSSXNuL2JadUxXYll5TDIyeE5xQjNuMHNqWTB1WGppdklSVjFHR0xIVnMwSko3ZHYzUkowL1pDNjEwYUZzYU9HZzBWZzNhS2Y1eUZIZVl0WGtQS21EZXZIamh5ZTJXQ3dNTXFLZkRFQ0pScWxialpRRGZuaTlNVUtGamlyaHVmVks1YlptT1hCVjZTUnExY3UyK2MxSnprRzh4Zk1tU1hOYXBJU0lnMkwzckp4ZzNBMGxGckF5dnpQYmIrWExsb1lkMFRCQkZkeVpkcUJxQk54TlRLc2NVWnBZZUc4T1R5QmM2RjFMRnRQbElqQmtpYnBTVmFpMnZ1WlV5ZHpmMmZZdTJ1SFZobXVSN1lHK1lmQUU2RkFhUWswMmhMZXB5U0xobEpJMWtxTlpBVkNzcHhkWDZzWm9hSmoxWlNlbnp4eGNjREFEK3BTNUVlU2hYYVZoUzJGU0tjbldlSkQ1eUxPNGxoMXExV0JRQkpMSm84Zlo1WTlDemtTVWRDelkvc1dEVHhxVkN4TENvRmIyT2Mxd3lvRnQ3Vk1OTzdkTzdBWGlJTm5rdjhOSHpTQUVJNFJQSDc4Q00wUmlnaUhrUmN2SXYyVnk1Y1NKckViL1c2U012Sm56ekVkbHdLMjVWeUwxcTVjQVp6d256UkJKQko1NldKUlJ3Y1hSNGZvNk9naFB0NG0yYklRWHpVSWtkY1pObksweXAwVExDVmxtdVkzQ2FaR0lBQUR3SDg2M2Z6YkJoR3VnNVdGc05uM3FZbWl0UFB3d1FNd1k4bUMrZm9kSVRXT0pPQ1I5SUtDV3padUlHdlJtZ3VTRk1FaVNRcHlaOG04YmN0bXloZ1pxUnJDcERXU0NJQnd4SkNCNElGYkVhZlZLNVlqRFcwZC9sTVdMV25TcFV0QmVXMkRVeGFablE2WVdvZnBkUHd4VFZLVmw2cmRXVUtoVTlJa2s3eW5tN2RLa3lZSjJZRmNQSDRVRGRGRlQwQWxnWWRVa3M5U1JRc2g4VFpORzNsN2RSOHpZdWlpK1hNN3RHcU9BaTZyK1NMWXpaeUhEdWh2VUpjRkdEMUFEYmhoMGVUMUVDc2IwMXdGOHByQnJmS2I1dWE1bzVVRk5XbE5OQ1RtQlhIRHJUMXFWT1VWYWxZb1dSd3ZsTldyUFR0MzJwbm5LV0p2SzRzYlR4NC9kbkcwaCtoUzBQWnJhZUhoZy9zbGl6Z1JOV21LaUVqc0pFYUFFNzhzVzBMdXk0dFlIck9vNEZZY1ZuRTRQRXkvWnlBc0R3OG02NFVFVUVhamFiWkRlRml0WENuNGdlYkI4dGF4bzBjSURjNE8rWWxOd0RnalozYUZiSzNIanhuOUtEcGFNeFRTWXJ5Rm42cFhLQXNmMUM5SEcvUkhOeWlkYk5TVVhGWmI2RGhnYmhQbVhBTEZmMXpvVU01MUpHb0pVb0NhQkg5YzZNaHBlbWZWcWpRTEhab2Z5TGpCSitqVjVjaExNTW1YTDErbTN5ckcvMlpPOVFmQnRDUUhwNFJOYUdrMGZKc2NmODB2SzBnNk1RZ0NHNTRCZnlHZm1UOTc1Z3gvdjhQaDRkb1JBN29tSktQZy9yMjhxRVBqUENmNXhndmgwbzhmUFZxeFpISFVGVVc3YjkrKzRUTTRNQURHOVBMRkMrMFFpQnhKZVA3ODJjZTg4K1pOVW1IdEszZytkK1owY25HNjJMZHJwM0JHTFpDTGtUMTcrcFJjYTgvT0hkcjZ0dnlrV2VGMHY4a2dyZW9QQ1pwWDRMSThKQjR0WDd3UTcwTEhCQ09FSnNJVWtCRDdvUDdxRlN0Z09WcjdHUzlWUnUvY0daREw3T05TcGJLWWxUK3NhSW1QaTFtcFM1WFhwMDRUUFArNFZHbHBlN2g4bGZnWEw5S2ZIdnJ5K1FjR21xRHU2cjFMWGZIUTFxMzBXMG15Sy9YMzExMmFFNlMvUHZjOGZRdGZycENnV2svNjU2SmFmU09pUW4zTGFhYVdrTHBVcHcraThicUgrbUdua1VtYVFwb3cvT2xtZ3lyQnM1MjZCdVEwQzdGUHR4d3RTNndxaGJzK1JWbWtGTjhOeVpmaXZvRzVMYUwvL0RQOVpnT2ZOMi84RlJZU2pIT2NQeGNoQXlYNWc2UnMzYlNST0txWnZNSjNMbDlldjNiTkFYV3pRVnoyM3IyN2lwZThlMGM3R0M4UlZ6dkJSSU5yVjYyRWNTaXJvWThmZzU5SER4MEtEUXFDellwMGFHM0RyMHJxS1dkVXNDUkpRQldUU2tnZ2dGR0JBaUZjT2FGeElCQTZvOEVHbjRBdE41ak1UMjlpU1N5dVE2bUNBZ011SzJjL2xGbmdsekExNGlJdG9LVHIxNjdKVGhHTlhMOFdGZjN3SVlNVUxKVk1EK3JMQUVSRFBDRis0NUdndCtqNHhZdm5FQUo5M25IenhvMTFxMWZoOTVKa3hxZWFGS05GU3VkVnIzdjY5T21sQ3hka1VzUmd1SWllU0greUg1eWtaa1J4ajZMRFM1VE9lTHRRWFVDSW1qQ1J1QnVTdWwwWW9tNFg3c3RpZkhYc2orbTNDMFhRdlQyNzFxdGVoZVJrNGR6WmZJVWlWUzd0UmlRanJKWXBYblNmdW96T05YM0s1RXFsU3BEbXFydThIaVNSYU02bmQ4OUY4K2VKWWFLNXRzMmFLQ3NQTDE2MGJ0SUkyamxzb0UrVnNxV2dWMGhXU1o5Y1hZaTFZNFlQMVZvYjR0TVA4dEtpb2NmVHB5bXRRV1dsdGNOaEIxczNhU2dibDFYS2xKVGtXTllvK0l5TmZUMTZtRzg5ZFpQWTI4c1RBdEdsYmVzbTllcjA2K2tKQ1pkMHRrSkpWenJ0MzZ0SHV4Wk5lV1hVMENIVEprOUtYWHoyWkxJOGJPeGVCeE9SSG1tZnBFajJKWW1YTkRpd2IrL3lyc1UycmxPV0tjanBQV3BVRTFYeFNld29YNkxZSU84K0hWbzJyMXV0OHAwN3Q5RXVrWUl4TXgyU1BWSytEV3ZYUU1TcWxpc05NK2VWZHMyYlNGUGFxU05EbXNOVGtoRzl2bkk1ektXRXN1RnYvM0hEbjlnY1hxTHNwVUZEQW5LWmg2VEczWlFOLzZ6R0YzMEdKZ3Y1U3FXdnFSUkQyVzd6NnRwSk9sWW9jVndjT2QrYWxTdEVFQ0ZCQjBvV0xnZzRId29MZzhpSVEzUDE3ZEd0WDY4ZXlxNW52NzU1c21VaDBLcW5zUTVDd1dqdys2RkR1bmRvcDRHU3BJWmNhR0xUaG5VVThET2FKY1RLOHo2ZVhRbVE2aDVxWDlQc1dVWEhlQ2V5bzdVUmd3ZVMxQXF0VFpPREV1bDlmYnhUVDVBMU9SQ3dUMmdtK1dpVk1tN2tTL0lUaklGM3gzMC9jc3pJWVhna054RVhpc0JQVE5iSnhnclNRQmwrTUVVOVVkU2dkbzJaL2xOU2M1N1RMbzUydVB2NWlMT04xVFNTcHVBS3hRbzZBQU5TaDNSRG1PUDN3M3oxRTRmb3lYNDVPY0txRmNzOU83WFhzbzhNVG5Tb2ZwZXk4ZkQyenUxVFRWdnN5NWI3Z0drK05YRlN6dWdFV3pzY01Na2JpdGI1cXFvMndNaWN4UGZHekZuSmNzSXlLZTBwVHRuYngwNUpRMkU2MC8wbVhZdTZXck5pT1dISXNyN1J1RzZ0VThlUFQ1MDBnVXhYT0JRQUNBdXJXcllVWHdmMDZZbVVHOWV0UFd1cS81WEl5STZ0Vy9EUW8yYlZzSkFRek9YTzdWdjhDb2lCVG56MTZ0eGh4WkpGRkVZT0dTVHBDZ21pZXBTSjF0eGtKR1JjRGV2VW5EVjFDdmpjdm1Vekh1SlZXQU40TU5KM3NMWm1McXNyaStmTnhVRWwvSGR0MXdhdTI2aE9UVFFYZGZVS3RGbVFsa3Q4em4vaStCS0ZIU0huM0VVZGJOZXZXU1ZtUVNRcVh0QUIrTUgxSVhmdjQrT0JGakFmVFFpejY5eTJGU0JFQ0doUXE3b2swQmdjR0tDcVVLbUdwZklLSFRYemNBOFBEWlhGdGRXL0xFZTE0QnpWbEhNSGp2WXhNVEZwRmdFTmFVL2NKUW5oVW5STXpidXJWaDJ0WEoza0o4RElURGwwWjI0VG5OYys1ZEJkVHJOZ213TG51blovY2ZaTW1vT1ZuM3F3c2gzVXg3UGJ5bVZMWDcxNnlheUlReWlia0tubGd1QXF3ZWFYcFlzeFErVko2cmEvZTdYSy9BbzdEZGk3R3g5dDZsRzNxWWU3ZDQvdTZtSnNmWUtUTE9nc21EdUhMQkFZNUhtdmJwMFJJb1U1TTZaMWF0TlNmNGhBV2dNWWNHNzhUOTB1ck1mQUJBOW1UNSthblB4QlMxNjFqYXhsQ3hjTTh1NHRSMDA2dG1xeGQvZE8rWldJVU5HdHVMYThJQk1aTzJvRWNZRjJLR3U3MnFBNmhBT2lBTXcyOFhDSDl0TkZ1ZUpGbzlTVlpMbXdlTlFQdlpDMURpNzBqUlZxRlU0Y080YUNlYkZ0OHlZeThRZjM3NE5Ecms0RlNFa1lEMWppcFR1UWxiRUhwLzZQSWZYWXJFb0ZFK1BlUFE0SWlQcnhwN1B0T2g2djQzR3NldTBUSG8zT2UvVzZ0V0RocTlTdFRVVzdxbW1rUHhnTk9hWUNzc2JQaEN0SnpHdFV0emFNQm5iUXBWMmJIcDA3cWlnWGc4djZUZmdKRjkrN2EyZVpZczdiMUpXbUxtMWJiVnF2b0M0d0RySTFWOWZ6c0Z3M1o2ZjllM2JmdjNzWDkwVXU1SCtLSzdScGlRZFR3T1JwYlFxdFhWVmFLKzFTWk51V3piS3g4L3ZtallMcXRDYjcvT1RadUF1U1FnMzY5VkYrK25uMnJGNWRPOGswNlhybVZMK2podzlGcWx1b1JNYzJ6UnBmUEgvKzdKblRwRWs4R1RGazRNUnhZNlV5YjVHelVVQ3Z1S2JDVEs5RkZiU3huakZsc3ZDRDZ1WExRZ2tKeHRBQzdKVitUeHc3V3RITjlVaDQyTEhEaDNIY2hyVnJnQ2pZQWZETzg2VUxGNGlsbG5JdXhNVGhua3k4U2IyNlVETTUrZ09HYXdjRnYvTGdlMUs2ZysvSlNSOFNNeno0L3JsVDc1SWh3SkpBVk8yVVpMSnlobVllczhLTkpvOGZwNUZEUWhkNDJMUytPMlNCT1loYjRBZk1YQ0lUR0xWdXpTcmg0VHYrMkE3ZGdFREprV2FwdkhqK1BNUWhEUHorZlZyelFvVXdvUDNxVm96aWtZc1duanB4UW1sTjFURlVnREs2Ui9GNHdKUUo0eldJbHBFSDdOMkR4WWdIQXhWRVZtcXVXTHBZNWtMeUNoOGtjUHFOSDBjN01OdnR2MitWeXJ6RnV4VDhKMDE0cXViMGNqNFMwNVRoWWZFdFZBbmc5M0lXLzliTkd3eTRaOWZPQTczN01EWnk4ZUdEQmpMK1ZvMGJRdFRGTzVXSmI5L1d0bG5qbG8wYWRHcmRVdFo2ZWZmbzRYRHNTYzQ1L2NQQjl3eitsU1IvWFpIRkVYV25saWZhWDFjK3BEOUgrWmsvQjZUL3A0SUdibHBpSUYvVEo1VDZDbW5LSDAwdG84cWFmWDZodGJTSDFwSStaUFNIZzdUVjBpVGxHVmFXUXBvSnBtOHR3MkZrbUY2bkgzYWFlZjN6UHh2K0UzOHVTdk92Q3UyL1JySklwQTFJdm1wTFNCb0dKT3JPRG1obHFhT1luKzV2Uy9yS24yc3RLVjFyMnQ5blV2YWhQM3l5QnBlb2V6ZjF6MFVKYVdhUmtMcHcvYkgzMUpIb1hVci9CeVFhMDViSjlHSlJoeEd2YjE4Ly9zOU5YS3FsaDlML2hvSy81dnJLeWwrdWsvNnZnbC8vYm5xRytPVi9JLzVMVjVyV3ZuSVdYMjdrYzVYLzJ4Nzg3ZnIyQi9CdjF6Y0ZmN3YrM2V0L0FPcXF3VUV1bHBPUUFBQUFBRWxGVGtTdVFtQ0MifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMS0wNCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IkZvb25ndG9uZSBGSURPIEF1dGhlbnRpY2F0b3IiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlUyRjEwMDAyMDI0MTEwNDAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTExLTA0IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjF9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDItMjYifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyI4NWQyOGQ4MzI0ZTIzYWI1MGIwMjg1OTJiZGJiZjRlNGFjOGExMzE3Il0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjg1ZDI4ZDgzMjRlMjNhYjUwYjAyODU5MmJkYmJmNGU0YWM4YTEzMTciXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ill1YmlLZXkgQmlvIFNlcmllcyAoRW50ZXJwcmlzZSBQcm9maWxlKSJ9LCJkZXNjcmlwdGlvbiI6Ill1YmlLZXkgQmlvIFNlcmllcyAtIEZJRE8gRWRpdGlvbiAoRW50ZXJwcmlzZSBQcm9maWxlKSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjg5NjUsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6Mn0seyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50IiwicmVtb3RlX2hhbmRsZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURIakNDQWdhZ0F3SUJBZ0lFRzBCVDl6QU5CZ2txaGtpRzl3MEJBUXNGQURBdU1Td3dLZ1lEVlFRREV5TlpkV0pwWTI4Z1ZUSkdJRkp2YjNRZ1EwRWdVMlZ5YVdGc0lEUTFOekl3TURZek1UQWdGdzB4TkRBNE1ERXdNREF3TURCYUdBOHlNRFV3TURrd05EQXdNREF3TUZvd0xqRXNNQ29HQTFVRUF4TWpXWFZpYVdOdklGVXlSaUJTYjI5MElFTkJJRk5sY21saGJDQTBOVGN5TURBMk16RXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFDL2p3WXVoQlZscWFpWVdFTXNyV0Zpc2dKK1B0TTkxZVNycEk0VEs3VTUzbXdDSWF3U0RIeTh2VW1rNU4yS0FqOWFidlQ5TlA1U01TMWhRaTN1c3hvWUdvblhRZ2ZPNlpYeVVBOWErS0FrcWRGbkJubHl1Z1NlQ09lcDhFZFpGZnNhUkZ0TWprd3o1R2N6MlB5NHZJWXZDZE1IUHR3YXowYlZ1em5ldWVJRXo2VG5RakU2M1JkdDJ6YnduZWJ3VEc1WnliZVdTd2J6eStCSjM0WkhjVWhQQVk4OXlKUVh1RTBJek1aRmNFQmJQTlJiV0VDUktnanEvL3FUOW5tRE9GVmxTUkN0MndpcVBTemx1d24rditzdVFFQnNValRHTUVkMjV0S1hYVGtOVzIxd0lXYnhlU3lVb1RYd0x2R1M2eGx3UVNnTnBrMnFYWXdmOGlYZzdWV1pBZ01CQUFHalFqQkFNQjBHQTFVZERnUVdCQlFnSXZ6MGJOR0poamdwVG9rc3lLcFA5eHY5b0RBUEJnTlZIUk1FQ0RBR0FRSC9BZ0VBTUE0R0ExVWREd0VCL3dRRUF3SUJCakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBanZqdU9NRFNhK0pYRkNMeUJLc3ljWHRCVlpzSjRVZTNMYmFFc1BZNE1ZTi9oSVE1Wk01cDdFamZjbk1HNEN0WWtOc2ZOSGMwQWhCTGRxNDVyblQ4N3EvNk8zdlVFdE5NYWZiaFU2a3RoWDdZKzlYRk45TnBtWXhyK2VrVlk1eE94aThoOUpESWdvTVA0VkIxdVMwYXVuTDFJR3FyTm9vTDltbUZuTDJrTFZWZWU2L1ZSNkM1K0tTVENNQ1dwcE11SklaSUkydjlvNGRrb1o4WTdRUmpRbExmWXpkM3FHdEtidzd4YUYxVXNHLzV4VWIvQnR3YjJYMmc0SW5waUIveXQvM0NwUVhwaVdYL0s0bUJ2VUtpR24wNVpzcWVZMWd4NGcweExCcWNVOXBzbXlQeksrVnNndzJqZVJRNUpsS0R5cUUwaGViZkMxdHZGdTBDQ3JKRmN3PT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZkNBWUFBQUNHVnMrTUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFIWVlBQUIyR0FWMmlFNEVBQUFiTlNVUkJWRmhIcFZkN1ROVjFGRC8zZDU5d2VRU0lnUzlBUUFYY0ZMQVFaaTlmcGVWejF0WS9XVFpyNVd4cGM3VzVrbkxhNWpJM1o4NXNyUzJuTTJzanRXd1pTN0lVSDRINHhDbkVReDREQVpGNzRWN3VzODg1djkvbEluQnZWSi9CNFB2OW51LzVudS81bnZNNTU2ZnpBL1F2MEhiL0lyWDNWRktQbzQ1Y25tNGluVUlXWXdMRlJtWlFVdXdqRkcvTjFpUkhoMUVaME5SVlJ1ZHF0MUJkKzJuU0t5Uy9PaHlzMCtsazNlLzNrUTlxdkQ0WlV0YTRWVlNVdVkwZWlweWlUaEFmb2NvT1JWZ0R1dXczcUtSaUFkM3JiY0V0alRqWUlvZjZXYUhzQ216VlBXQ014K2NnaDh0THFXTUthTVdzVWpMcW8yUnRKSVEwb096bWVycFF1NGVzWmdzT05rR3hIN2Qwa2R2VFQxN3M0T01VN1ZJOFpoamdHYU0rQXE5aUVOdThQaWYxdWR6MDdNd3ZLV2Y4R2xWb0NFWTA0UEM1V2RUYVhZRmJSOHZOdkw1KzNLZ2ZiNXhOTXlhOVJhbUppeW5hTWxHVFZ0RmxyNmJhOXUrcHFuRVg0dU11UlJnalNZRWhyTjd1dEZGZTZscWFsN05ma3c1aW1BR0h5blBwYms4Vm1ZMHhzdG5wdGxGQ1ZDWXR6VHVCTjgzUXBNTGpUdGV2ZFB6U1VuSjdlOG1ranhaMzlmWGJLRGZsZFpxYnZVK1RVZ0duQlZGNmZRMmlQSGc0VzE2VVdVd3Z6YmsxNnNNWkUrUG4wcHZ6N0pTZXVBeWVzOGxjcENtYUt1by9wK3FXcjJVY3dJQUhXcnZQMFlFemhYQXRMQWJzc0hocDdpR2FtdnlpalA4cnlxclhVV1g5WG9vd3h5QXVmTkJycDQzUE9CRlhabGtmOE1EUmlxY3B5b3dBd3B1ejJ4K2ZXdnovRHRkZTlzbXN6eWd0Y1I2QzF3YmR6Qmw2T2xxNVdOWVk0b0dhdGhKTXJrVEV4MGpBUlNIQVZzKzVyWWtRTlhiK1FnZlBMc1E2Z1h5SW5zcmVRZm1wbTdSVkZZZkw4Nm4xZmlVT2tZdlNoa1VQeHZidWt6b3k2SzFpaE0xaG8zWHpXNkV2U2ZYQStkcGlXR2FXZCtkb1h6THptR3dLWUZMQ0FzUkFsUEJBaE1sQ0ZYVTd0QlVWUHI4SGdWY0pIV3ErRjAwcGxyK0RNVGRyUDR6dnhZMTFrTk1oeFQrU2VUR2crZDRWNUxRSml0eVVHSk5COFZGWnNqZ1lCWk0vSUkvWENUa2owcXlET3BGMkFWUTE3Q0lqVXAvRG5UMVVrTDVGNWdkaitzUzF3ZzFnRTNnaWdtNjBmQ1h6U25QWGJ5QVBiSVh2K0lEcEUxNlRoYUhJUzlza3lobG1NRTVGM2NmcUFLaHEyQzBFNVBIMWdZYVhhTFBEa1pHMEhESk9uS1dIcDUxSTB6NVNPdXg4ZTFXQXVaemRIUXJUa3A4VG1qWG9JK2xhMHdHWnN6dWJxYk8zaWZRNkEvVzd2VlNZc1YzbVIwSkt3a0tjNFdIaUJrbVI4STNDQ2dJODdvT0w0cXpUNVArUlVKQmVqRU9nQVBLOGhZUHphdE0rZUlUcDJJTzl5VFFtZXJvbVBSeHgxcXhBY3NpbGUvdWJTZUViY1dRR1lFQ2doY0xZMkh5S2pvZ2pIMjVoTXBqcFV2MU91Z2xpNGVoMmVSdzBPMzJiSmpreXVDZ056ZzB2emxZTVNpU3MwdW9vNE1HN2hNT2pDRWFYMXlGRTBuU3ZqQnp1VG5FcEs4Nlo4SW9xRkFJdWJ3OGtnOUFyRWFSRVdTWkkrakg0WGJwNmc5RTlFbkpUM29hUnpETitNVUpCUURIbjU2YThvVW1FQnVzT3hCcy9ONSt0SkViUGtBRkRqOFVHdk9zL0lXdmNTZ2xHQmh2UzcvRlRZZnBXR1lkRFk4ZlBBeFdTQTM1c1RDNHA0K0xtNEFhcUlvUGVRdGZ1Zks2SmgwWmh4bGJzVVhPU21YTmlmRDVaVEFreURvZmJiY2NseG5BOFdOQXF4Q2JSTnlraFh4UXBhRHc2N2ZYVVlic2lHMEtodHYyb2VJdmg4cmhRTVlPY0VBcVhHL2VJK3puZ09jNXl4cjhxODJJQU0xYy9GTEZPcGxxdTVlRlFYck1aekdjVkNqWWJMV0c1STRCVDFldVJybGJ4dE5PdE1pdERERWhMWElJeW5BQXZ1T0VXRTNYM05kQWZ0OTRWZ2FHNDJYSVF0MFpYNlBlQ0UvcVFGZTlySzZIeDdZVTUwS3ZIN2ZXNGZTK3E3S0tCSnhzZ2dCWDVwU0FHaDFqSXJWaDV6UTZ3M1JmYWFoQlhtL2FDYkNaVGpDVUZVVHlXWnFXOXA2Mk1qSlBYVnFPclBnTU80TnY3NEdrZitvd2Z0TlZCRFFuakZKcUhTdzE3cFh2aFdXNUtacWUvUTQ5Ti9VU1RDQVZXb1FYRklIQkhYWGUzRlByVURzdUdEbXRGL2hIS1RIcGVreGhpQU9QSStTSnE2UzZIRjRJOVlXemtCSlRvNDZpVU16V3A4UGlyL1JpZHVMeEtZc1Nrc1Y4dkxsT1F2aEdYMllsUjBPQmhCakMrdS9nRWN2WTBBcEs3WWs0MU54alBTUW5XRkhURjY2VXJqZ2V2QjhDdTVhK2wydllTUlB0dVZEbzczaGhkTVNIblVYN3RUanNWWkd4QWwvV3B0aU9JRVExZ25MMjltWDYvdFIxdG1sa1lqOFc0WCtDU2pXY1VER1kxTnBTL0M3aFNLcWlNTE0vbDJRbVNXWjczRGR6K2dpbzhCQ0VOWVBRNDZxbmt6d1hVYnF2Qmt4alVRc1dmWkZnYnVvM3JBZit3TjdqT085MCt5bng0UGkzTCswbllMMVNjaERVZ0FQNGdQVi83SWQxcSsxSFNobXVHa0lxV1JQZ3l4TUZxUDhIZmpUbmpYd1k1YlFmYkpjdDZPSXpLZ01Ib3RGL0hlMWVnc2F4SFNxRzZ3ZmRtUTV4OE55VEZGcUJjcDJpU293SFIzeWs1KzM2aEY3dlhBQUFBQUVsRlRrU3VRbUNDIn0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjEtMDgtMDYiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI4OTY1LCJ1cmwiOiJ3d3cueXViaWNvLmNvbSIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWXViaUtleSBCaW8gKEVudGVycHJpc2UgUHJvZmlsZSkiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDIxMDgwNjAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4zIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjQifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjEtMDgtMDYiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI4OTY1fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIxLTA4LTE4In0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiMmZlYThmMzU3YzdhNTRhNTdmNDVjZGE3MmZhZmIzNGQxZDQ0OWZkNCJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyIyZmVhOGYzNTdjN2E1NGE1N2Y0NWNkYTcyZmFmYjM0ZDFkNDQ5ZmQ0Il0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJORU9XQVZFIEJhZGdlbyBGSURPMiJ9LCJkZXNjcmlwdGlvbiI6Ik5FT1dBVkUgQmFkZ2VvIEZJRE8yIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6Mn1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNIVENDQWNLZ0F3SUJBZ0lDZGRVd0NnWUlLb1pJemowRUF3SXdlekVMTUFrR0ExVUVCaE1DUmxJeEV6QVJCZ05WQkFvVENrTmxjblJGZFhKdmNHVXhGekFWQmdOVkJBc1REakF3TURJZ05ETTBNakF5TVRnd01TUXdJZ1lEVlFRREV4dERaWEowUlhWeWIzQmxJRVZzYkdsd2RHbGpJRkp2YjNRZ1EwRXhHREFXQmdOVkJHRVREMDVVVWtaU0xUUXpOREl3TWpFNE1EQWVGdzB4T0RBeE1qSXlNekF3TURCYUZ3MHlPREF4TWpJeU16QXdNREJhTUhzeEN6QUpCZ05WQkFZVEFrWlNNUk13RVFZRFZRUUtFd3BEWlhKMFJYVnliM0JsTVJjd0ZRWURWUVFMRXc0d01EQXlJRFF6TkRJd01qRTRNREVrTUNJR0ExVUVBeE1iUTJWeWRFVjFjbTl3WlNCRmJHeHBjSFJwWXlCU2IyOTBJRU5CTVJnd0ZnWURWUVJoRXc5T1ZGSkdVaTAwTXpReU1ESXhPREF3V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVR6MmpOYUtPSy9NS2RXMmZtZTF0cTZHUkV1UHV1S1c5SGdXWWdNUnJqdlpVVE9xTEFOSjNNZDVIcXYxRU4xek1kNGxXdHlmelJsYTdydjVBUkJvT29Ub3pZd05EQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01CRUdBMVVkRGdRS0JBaE5uVFcwYTRFOHVqQU9CZ05WSFE4QkFmOEVCQU1DQVFZd0NnWUlLb1pJemowRUF3SURTUUF3UmdJaEFNcmhiOFNtZk5MZUxOZ2FBVm1RNkFPTWlMTkxWSFgwa0ZVTzgwQ25UMzhFQWlFQXpOQWd2NGRIK0hEaFpTZ1pXSmlhUHUvbmZaVGV1R3k0TXlkUE1xNXVyczQ9IiwiTUlJRU9EQ0NBOTJnQXdJQkFnSURBSW5CTUFvR0NDcUdTTTQ5QkFNQ01Ic3hDekFKQmdOVkJBWVRBa1pTTVJNd0VRWURWUVFLRXdwRFpYSjBSWFZ5YjNCbE1SY3dGUVlEVlFRTEV3NHdNREF5SURRek5ESXdNakU0TURFa01DSUdBMVVFQXhNYlEyVnlkRVYxY205d1pTQkZiR3hwY0hScFl5QlNiMjkwSUVOQk1SZ3dGZ1lEVlFSaEV3OU9WRkpHVWkwME16UXlNREl4T0RBd0hoY05NVGd3TWpJeU1qTXdNREF3V2hjTk1qZ3dNVEl4TWpNd01EQXdXakIwTVFzd0NRWURWUVFHRXdKR1VqRVRNQkVHQTFVRUNoTUtRMlZ5ZEVWMWNtOXdaVEVYTUJVR0ExVUVDeE1PTURBd01pQTBNelF5TURJeE9EQXhIVEFiQmdOVkJBTVRGRU5sY25SRmRYSnZjR1VnU1dSbFkzbHpJRU5CTVJnd0ZnWURWUVJoRXc5T1ZGSkdVaTAwTXpReU1ESXhPREF3V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVNMVkwrMVNUSnZhRVJPNVdDUitqR2NBeEx2bVBCRGlaWTFOZ0ZGSWhwWDZPQVpBcFFZbXQ2eFNoNzRTd00rbWpnbnNTRWNjNEEyVWYxMzlGZ1o0cnBZbzRJQ1ZUQ0NBbEV3RXdZRFZSMGpCQXd3Q29BSVRaMDF0R3VCUExvd1NnWUlLd1lCQlFVSEFRRUVQakE4TURvR0NDc0dBUVVGQnpBQ2hpNW9kSFJ3T2k4dmQzZDNMbU5sY25SbGRYSnZjR1V1Wm5JdmNtVm1aWEpsYm1ObEwyVmpYM0p2YjNRdVkzSjBNRk1HQTFVZElBUk1NRW93U0FZSktvRjZBV2twQVFFQU1Ec3dPUVlJS3dZQkJRVUhBZ0VXTFdoMGRIQnpPaTh2ZDNkM0xtTmxjblJsZFhKdmNHVXVabkl2WTJoaGFXNWxMV1JsTFdOdmJtWnBZVzVqWlRDQ0FXQUdBMVVkSHdTQ0FWY3dnZ0ZUTUQrZ1BhQTdoamxvZEhSd09pOHZkM2QzTG1ObGNuUmxkWEp2Y0dVdVpuSXZjbVZtWlhKbGJtTmxMMk5sY25SbGRYSnZjR1ZmWldOZmNtOXZkQzVqY213d2dZYWdnWU9nZ1lDR2ZteGtZWEE2THk5c1kzSXhMbU5sY25SbGRYSnZjR1V1Wm5JdlkyNDlRMlZ5ZEVWMWNtOXdaU1V5TUVWc2JHbHdkR2xqSlRJd1VtOXZkQ1V5TUVOQkxHOTFQVEF3TURJbE1qQTBNelF5TURJeE9EQXNiejFEWlhKMFJYVnliM0JsTEdNOVJsSS9ZMlZ5ZEdsbWFXTmhkR1ZTWlhadlkyRjBhVzl1VEdsemREQ0JocUNCZzZDQmdJWitiR1JoY0RvdkwyeGpjakl1WTJWeWRHVjFjbTl3WlM1bWNpOWpiajFEWlhKMFJYVnliM0JsSlRJd1JXeHNhWEIwYVdNbE1qQlNiMjkwSlRJd1EwRXNiM1U5TURBd01pVXlNRFF6TkRJd01qRTRNQ3h2UFVObGNuUkZkWEp2Y0dVc1l6MUdVajlqWlhKMGFXWnBZMkYwWlZKbGRtOWpZWFJwYjI1TWFYTjBNQkVHQTFVZERnUUtCQWhEYVFiaFRGdGpjakFPQmdOVkhROEJBZjhFQkFNQ0FRWXdFZ1lEVlIwVEFRSC9CQWd3QmdFQi93SUJBREFLQmdncWhrak9QUVFEQWdOSkFEQkdBaUVBb0VlcEhNQzVYOWpCS2FHcGhjS2ppZGhpTitabno3djNTM2hjMzEvQXVuc0NJUURLcW9nSzJTWk9YWmN2dkhDQjZVUVNhQTBuTG40UlV3eTFndURpdmJaYndnPT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZ0NBSUFBQUQ4R08yakFBQUNxVWxFUVZSSXgyUDgvLzgvQXkwQkV3T053YWdGcEZsdzhjS0Zpckl5UjN0N1MxT3owS0RnQmZQbS8vejVrM2l6dm4zOWxwK1RhMnRsdFdUUklvVG9meGhZdFhLbGxwcTZzcndDQWlrb1JJVkh2SDM3OWo5eDROU3BVMEF0UUkxVzVoWndRYWdQenA4N1YxMVppWEF2SXhqOVp6aDU0a1JOWlJXUlB2ajk2eGNET00wek1US2lCOUc4dVhQLy9mc0hORlJBU0xDK3NYSG03Tmx1YnU0UW0zYnQzTGx1N1ZwaUxHQ0VtY3VJYWNHWlU2ZkI0Y1dRWDFBUUd4L243T0l5YWVvVWJWMGRpSXZhbWx1ZVBYdEdVU1QvK2czMkhTT0Rob1lHUklTRmhhV3BwWVdWbFJVbytPSGpoNmI2Qm9vc2dIdnF6NTgvY0RsOWZmM003Q3dJZTgrZTNhdFhycVFnbWVJb2tES3pzL1gxOUVHeS94azZPem9mUDNwRVdVYkRzQVlZUkMzdGJSd2NIRUQyaC9mdjYycHFDUmVPakNUbVpFMHRyWnk4WEFqNzhLRkR5NVl1SmQ1MFZBc1ljZXBLVFU4M05qV0JxT251N0h4dy93RStPLzdqc2dDMzE1bVptUnVibTluWjJZRnF2bnorMGxCZmh6T2cvcU83bFFtL0IrRUFtSHdMaW9vZ0NvNGNPcnhrMFdJaVBVRWdrcEZCVW5LeW1aazVoTjNUMVhYM3poMWlZb0tKY0RUQkE0cUZ1Ym10bFl1YkM4aisrdlZyVFZVMXFIUWh6UWVNQkh5aHJLeGNXRndNVVhuNjFLbjVjK2RTdjhKSlNFeTB0ckdHc0NmMDk5KzZkUXN1eGNMQ0NySDdQNUlyU1lnRGVLRlMzOVRFeDhzSFpILy85cjJ1R2hGUU42NWZoMlZQTm9xcVRDVWxwZUt5VW1neGZQcE1TV0VSTUFNdVg3YXN2N2NYSXFpbHJZWHdGcnhlZy9xT3VHWlNkRXpNM3QxN0RoMDZDUFQwcGswYk4yM2NDSTlGWUtaSno4aEU5OEhmZjM4aEREWTJkaUw5MGRIZHBhdXJpeGF3ckN5c3JlM3R1bnE2aUxUWDBOQUFUb0lzVHg0L3RuZHdpSXlPQXRZRXhGakF6YzN0NCtzTEpMOTkvUW9zRTBWRlJlM3M3UnRibW9HVkZVcWNqVFlkaDc4RkFJaEJMbE5kN2p1MUFBQUFBRWxGVGtTdVFtQ0MifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiTk9UX0ZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjEtMDktMjEifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIxLTA5LTIxIn0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiNzljMTAwOTYyMmJiZWVkMjNiYTBjNDkzY2Y3NmFiMDg4YTFhZDUwNSJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyI3OWMxMDA5NjIyYmJlZWQyM2JhMGM0OTNjZjc2YWIwODhhMWFkNTA1Il0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IEJpbyBTZXJpZXMgLSBNdWx0aS1wcm90b2NvbCBFZGl0aW9uIn0sImRlc2NyaXB0aW9uIjoiWXViaUtleSBCaW8gU2VyaWVzIC0gTXVsdGktcHJvdG9jb2wgRWRpdGlvbiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjkyMjIsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6Mn1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiLCJyZW1vdGVfaGFuZGxlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJREhqQ0NBZ2FnQXdJQkFnSUVHMEJUOXpBTkJna3Foa2lHOXcwQkFRc0ZBREF1TVN3d0tnWURWUVFERXlOWmRXSnBZMjhnVlRKR0lGSnZiM1FnUTBFZ1UyVnlhV0ZzSURRMU56SXdNRFl6TVRBZ0Z3MHhOREE0TURFd01EQXdNREJhR0E4eU1EVXdNRGt3TkRBd01EQXdNRm93TGpFc01Db0dBMVVFQXhNaldYVmlhV052SUZVeVJpQlNiMjkwSUVOQklGTmxjbWxoYkNBME5UY3lNREEyTXpFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUUMvandZdWhCVmxxYWlZV0VNc3JXRmlzZ0orUHRNOTFlU3JwSTRUSzdVNTNtd0NJYXdTREh5OHZVbWs1TjJLQWo5YWJ2VDlOUDVTTVMxaFFpM3VzeG9ZR29uWFFnZk82Wlh5VUE5YStLQWtxZEZuQm5seXVnU2VDT2VwOEVkWkZmc2FSRnRNamt3ejVHY3oyUHk0dklZdkNkTUhQdHdhejBiVnV6bmV1ZUlFejZUblFqRTYzUmR0Mnpid25lYndURzVaeWJlV1N3Ynp5K0JKMzRaSGNVaFBBWTg5eUpRWHVFMEl6TVpGY0VCYlBOUmJXRUNSS2dqcS8vcVQ5bm1ET0ZWbFNSQ3Qyd2lxUFN6bHV3bit2K3N1UUVCc1VqVEdNRWQyNXRLWFhUa05XMjF3SVdieGVTeVVvVFh3THZHUzZ4bHdRU2dOcGsycVhZd2Y4aVhnN1ZXWkFnTUJBQUdqUWpCQU1CMEdBMVVkRGdRV0JCUWdJdnowYk5HSmhqZ3BUb2tzeUtwUDl4djlvREFQQmdOVkhSTUVDREFHQVFIL0FnRUFNQTRHQTFVZER3RUIvd1FFQXdJQkJqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFqdmp1T01EU2ErSlhGQ0x5QktzeWNYdEJWWnNKNFVlM0xiYUVzUFk0TVlOL2hJUTVaTTVwN0VqZmNuTUc0Q3RZa05zZk5IYzBBaEJMZHE0NXJuVDg3cS82TzN2VUV0Tk1hZmJoVTZrdGhYN1krOVhGTjlOcG1ZeHIrZWtWWTV4T3hpOGg5SkRJZ29NUDRWQjF1UzBhdW5MMUlHcXJOb29MOW1tRm5MMmtMVlZlZTYvVlI2QzUrS1NUQ01DV3BwTXVKSVpJSTJ2OW80ZGtvWjhZN1FSalFsTGZZemQzcUd0S2J3N3hhRjFVc0cvNXhVYi9CdHdiMlgyZzRJbnBpQi95dC8zQ3BRWHBpV1gvSzRtQnZVS2lHbjA1WnNxZVkxZ3g0ZzB4TEJxY1U5cHNteVB6SytWc2d3MmplUlE1SmxLRHlxRTBoZWJmQzF0dkZ1MENDckpGY3c9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFmQ0FZQUFBQ0dWcytNQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUhZWUFBQjJHQVYyaUU0RUFBQWJOU1VSQlZGaEhwVmQ3VE5WMUZELzNkNTl3ZVFTSWdTOUFRQVhjRkxBUVppOWZwZVZ6MXRZL1dUWnI1V3hwYzdXNWtuTGE1akkzWjg1c3JTMm5NMnNqdFd3WlM3SVVINEg0eENuRVF4NERBWkY3NFY3dXM4ODV2OS9sSW5CdlZKL0I0UHY5bnUvNW51LzVudk01NTZmekEvUXYwSGIvSXJYM1ZGS1BvNDVjbm00aW5VSVdZd0xGUm1aUVV1d2pGRy9OMWlSSGgxRVowTlJWUnVkcXQxQmQrMm5TS3lTL09oeXMwK2xrM2UvM2tROXF2RDRaVXRhNFZWU1V1WTBlaXB5aVRoQWZvY29PUlZnRHV1dzNxS1JpQWQzcmJjRXRqVGpZSW9mNldhSHNDbXpWUFdDTXgrY2doOHRMcVdNS2FNV3NVakxxbzJSdEpJUTBvT3ptZXJwUXU0ZXNaZ3NPTmtHeEg3ZDBrZHZUVDE3czRPTVU3Vkk4WmhqZ0dhTStBcTlpRU51OFBpZjF1ZHowN013dktXZjhHbFZvQ0VZMDRQQzVXZFRhWFlGYlI4dk52TDUrM0tnZmI1eE5NeWE5UmFtSml5bmFNbEdUVnRGbHI2YmE5dStwcW5FWDR1TXVSUmdqU1lFaHJON3V0RkZlNmxxYWw3TmZrdzVpbUFHSHluUHBiazhWbVkweHN0bnB0bEZDVkNZdHpUdUJOODNRcE1MalR0ZXZkUHpTVW5KN2U4bWtqeFozOWZYYktEZmxkWnFidlUrVFVnR25CVkY2ZlEyaVBIZzRXMTZVV1V3dnpiazE2c01aRStQbjBwdno3SlNldUF5ZXM4bGNwQ21hS3VvL3ArcVdyMlVjd0lBSFdydlAwWUV6aFhBdExBYnNzSGhwN2lHYW12eWlqUDhyeXFyWFVXWDlYb293eHlBdWZOQnJwNDNQT0JGWFpsa2Y4TURSaXFjcHlvd0F3cHV6MngrZld2ei9EdGRlOXNtc3p5Z3RjUjZDMXdiZHpCbDZPbHE1V05ZWTRvR2F0aEpNcmtURXgwakFSU0hBVnMrNXJZa1FOWGIrUWdmUExzUTZnWHlJbnNyZVFmbXBtN1JWRllmTDg2bjFmaVVPa1l2U2hrVVB4dmJ1a3pveTZLMWloTTFobzNYelc2RXZTZlhBK2RwaVdHYVdkK2RvWHpMem1Hd0tZRkxDQXNSQWxQQkFoTWxDRlhVN3RCVVZQcjhIZ1ZjSkhXcStGMDBwbHIrRE1UZHJQNHp2eFkxMWtOTWh4VCtTZVRHZytkNFY1TFFKaXR5VUdKTkI4VkZac2pnWUJaTS9JSS9YQ1RrajBxeURPcEYyQVZRMTdDSWpVcC9EblQxVWtMNUY1Z2RqK3NTMXdnMWdFM2dpZ202MGZDWHpTblBYYnlBUGJJWHYrSURwRTE2VGhhSElTOXNreWhsbU1FNUYzY2ZxQUtocTJDMEU1UEgxZ1lhWGFMUERrWkcwSERKT25LV0hwNTFJMHo1U091eDhlMVdBdVp6ZEhRclRrcDhUbWpYb0krbGEwd0dac3p1YnFiTzNpZlE2QS9XN3ZWU1lzVjNtUjBKS3drS2M0V0hpQmttUjhJM0NDZ0k4N29PTDRxelQ1UCtSVUpCZWpFT2dBUEs4aFlQemF0TStlSVRwMklPOXlUUW1lcm9tUFJ4eDFxeEFjc2lsZS91YlNlRWJjV1FHWUVDZ2hjTFkySHlLam9nakgyNWhNcGpwVXYxT3VnbGk0ZWgyZVJ3ME8zMmJKamt5dUNnTnpnMHZ6bFlNU2lTczB1b280TUc3aE1PakNFYVgxeUZFMG5TdmpCenVUbkVwSzg2WjhJb3FGQUl1Ync4a2c5QXJFYVJFV1NaSStqSDRYYnA2ZzlFOUVuSlQzb2FSekROK01VSkJRREhuNTZhOG9VbUVCdXNPeEJzL041K3RKRWJQa0FGRGo4VUd2T3MvSVd2Y1NnbEdCaHZTNy9GVFlmcFdHWWREWThmUEF4V1NBMzVzVEM0cDQrTG00QWFxSW9QZVF0ZnVmSzZKaDBaaHhsYnNVWE9TbVhOaWZENVpUQWt5RG9mYmJjY2x4bkE4V05BcXhDYlJOeWtoWHhRcGFEdzY3ZlhVWWJzaUcwS2h0djJvZUl2aDhyaFFNWU9jRUFxWEcvZUkrem5nT2M1eXhyOHE4MklBTTFjL0ZMRk9wbHF1NWVGUVhyTVp6R2NWQ2pZYkxXRzVJNEJUMWV1UnJsYnh0Tk90TWl0RERFaExYSUl5bkFBdnVPRVdFM1gzTmRBZnQ5NFZnYUc0MlhJUXQwWlg2UGVDRS9xUUZlOXJLNkh4N1lVNTBLdkg3Zlc0ZlMrcTdLS0JKeHNnZ0JYNXBTQUdoMWpJclZoNXpRNnczUmZhYWhCWG0vYUNiQ1pUakNVRlVUeVdacVc5cDYyTWpKUFhWcU9yUGdNTzROdjc0R2tmK293ZnROVkJEUW5qRkpxSFN3MTdwWHZoV1c1S1pxZS9RNDlOL1VTVENBVldvUVhGSUhCSFhYZTNGUHJVRHN1R0RtdEYvaEhLVEhwZWt4aGlBT1BJK1NKcTZTNkhGNEk5WVd6a0JKVG80NmlVTXpXcDhQaXIvUmlkdUx4S1lzU2tzVjh2TGxPUXZoR1gyWWxSME9CaEJqQyt1L2dFY3ZZMEFwSzdZazQxTnhqUFNRbldGSFRGNjZVcmpnZXZCOEN1NWErbDJ2WVNSUHR1VkRvNzNoaGRNU0huVVg3dFRqc1ZaR3hBbC9XcHRpT0lFUTFnbkwyOW1YNi90UjF0bWxrWWo4VzRYK0NTaldjVURHWTFOcFMvQzdoU0txaU1MTS9sMlFtU1daNzNEZHorZ2lvOEJDRU5ZUFE0NnFua3p3WFVicXZCa3hqVVFzV2ZaRmdidW8zckFmK3dON2pPTzkwK3lueDRQaTNMKzBuWUwxU2NoRFVnQVA0Z1BWLzdJZDFxKzFIU2htdUdrSXFXUlBneXhNRnFQOEhmalRualh3WTViUWZiSmN0Nk9JektnTUhvdEYvSGUxZWdzYXhIU3FHNndmZG1RNXg4TnlURkZxQmNwMmlTb3dIUjN5azUrMzZoRjd2WEFBQUFBRWxGVGtTdVFtQ0MifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0wNi0wNCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjkyMjIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWXViaUtleSBCaW8gU2VyaWVzIC0gTXVsdGktcHJvdG9jb2wgRWRpdGlvbiIsImNlcnRpZmljYXRlTnVtYmVyIjoiVTJGMTAwMDIwMjQwNjA0MDA1IiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMDYtMDQiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5MjIyfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI0LTA4LTEzIn0seyJhYWlkIjoiMDAyNCNGRTAxIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWlkIjoiMDAyNCNGRTAxIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkcrRCBFTVZGSURPIEFVVEhFTlRJQ0FUT1IifSwiZGVzY3JpcHRpb24iOiJHK0QgRU1WRklETyBBVVRIRU5USUNBVE9SIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoidWFmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbInNvZnR3YXJlIl0sImF0dGFjaG1lbnRIaW50IjpbImludGVybmFsIl0sInRjRGlzcGxheSI6WyJhbnkiXSwidGNEaXNwbGF5Q29udGVudFR5cGUiOiJ0ZXh0L3BsYWluIiwidGNEaXNwbGF5UE5HQ2hhcmFjdGVyaXN0aWNzIjpbeyJ3aWR0aCI6MzIwLCJoZWlnaHQiOjQ4MCwiYml0RGVwdGgiOjE2LCJjb2xvclR5cGUiOjIsImNvbXByZXNzaW9uIjowLCJmaWx0ZXIiOjAsImludGVybGFjZSI6MH1dLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQ0RUQ0NBYlNnQXdJQkFnSUVXYmUvcmpBS0JnZ3Foa2pPUFFRREFqQ0JqakVMTUFrR0ExVUVCaE1DUkVVeEVEQU9CZ05WQkFnTUIwSmhkbUZ5YVdFeER6QU5CZ05WQkFjTUJrMTFibWxqYURFYU1CZ0dBMVVFQ2d3UlIybGxjMlZqYTJVclJHVjJjbWxsYm5ReEpEQWlCZ05WQkFzTUcwMXZZbWxzWlNCVFpXTjFjbWwwZVNCSmJtNXZkbUYwYVc5dWN6RWFNQmdHQTFVRUF3d1JSa2xFVHkxVWIydGxibk5sY25abGNqRXdIaGNOTVRjd09URXlNVEV3T1RFMVdoY05NamN3T1RFeU1URXdPVEUxV2pDQmpqRUxNQWtHQTFVRUJoTUNSRVV4RURBT0JnTlZCQWdNQjBKaGRtRnlhV0V4RHpBTkJnTlZCQWNNQmsxMWJtbGphREVhTUJnR0ExVUVDZ3dSUjJsbGMyVmphMlVyUkdWMmNtbGxiblF4SkRBaUJnTlZCQXNNRzAxdlltbHNaU0JUWldOMWNtbDBlU0JKYm01dmRtRjBhVzl1Y3pFYU1CZ0dBMVVFQXd3UlJrbEVUeTFVYjJ0bGJuTmxjblpsY2pFd1dUQVRCZ2NxaGtqT1BRSUJCZ2dxaGtqT1BRTUJCd05DQUFSMy9qSUNJTG54dGkyQitXNXJrRlZaRTBseFVwQ25uY3NNeUVXMkNld1owV0JIZ1VkVmFjNDBSbytTaGFiZHQ1MlpUL250NXdoczBDNDdRSEJLdlZ6VE1Bb0dDQ3FHU000OUJBTUNBMGNBTUVRQ0lERHF1THVKR3JhRW9WS2pqbFlyUFBnQ3BUNjVMQzlRRWpsQk5MVHcxOEpJQWlBSmNvc2ErcTVldmlsNzlYaUMvOXF0L1BPYkwyby9qaVIrUnl0V0xQZFpTdz09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsLzlqLzRBQVFTa1pKUmdBQkFRQUFBUUFCQUFELzJ3QkRBQU1DQWdNQ0FnTURBd01FQXdNRUJRZ0ZCUVFFQlFvSEJ3WUlEQW9NREFzS0N3c05EaElRRFE0UkRnc0xFQllRRVJNVUZSVVZEQThYR0JZVUdCSVVGUlQvMndCREFRTUVCQVVFQlFrRkJRa1VEUXNORkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCVC93Z0FSQ0FESUFNZ0RBU0lBQWhFQkF4RUIvOFFBSEFBQkFBTUFBd0VCQUFBQUFBQUFBQUFBQUFjSUNRUUZCZ0lELzhRQUd3RUJBQUlEQVFFQUFBQUFBQUFBQUFBQUFBRURBZ1VHQkFmLzJnQU1Bd0VBQWhBREVBQUFBYXlqNkY1d0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFZ2QzZURUNXhMSjM2eEZvYzVsOGxHUFNYS3N6TkRNMDlOVmROKzhQOFpkTEtCSHBpZSt2aFR1b2ZOWE5Bdm0rTXlVbVJuMWRRWmdBSE00Y3cxTGljUDFWTGVRdWpUekoyZEpNMzM1cGhhYVVqZWFiS1VSdmRWN1NaMWRUUzZTdUZrd1EvYkhyNzY1dDJGMW1kazg3TlBxRStTWXlIUjFnQUxCMThsdnlUZWpQWFFxbXVnc2dZZFZWcDF5YUhmWExXM3ZVUWsycGFJcWQ1TXJZcUlQZmpkTE5tVFl5MitDVG94c2I2SXR0U3U2bEE5QlpIQTZxb0FCeU9PTkhQMnBQZW5qcnMvOEF4bW5jWWJMQ2lhNnoweFNtYVp0OUhSTWxVUnZkRitxem9ZdXMzbGRLVjF1NmlhbTN0N1BydEpuMEdlbnUvQTlEV0d4eEFBQWV2OGd4WEtrL09acWM5Sm1iS2xwTXpaR2t6TmthVE0yUnBOd002RXJoMWo4dzJPSWV5QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUC84UUFLQkFBQVFNREF3UUJCUUVBQUFBQUFBQUFCUUFFQmdJREJ4VVhJQUVRRXpZUkVoWXdOSEExLzlvQUNBRUJBQUVGQXY2YkdJU1JsTlliRmdVWlMzRk1tbFBndEtXMmJmU0xyRTFQU3VXK0MwdkJhWGd0THdXbDRMU2NpR0x5azFpZ09ScGtzUUl4ZTkrR0FRbXFVUEc3ZTAwc1BuN1lhM2U1ZEJ0cTk1eGFPWllIRkF5eEo3Y3BCa3hoSGkyODR0YnppMXZPTFRITFFKM1cxZDJIMWg2eXNFV3M1aDF5S0VPYlJyY2ZPZ1lpeUJGU1dRdDR5S1BTRjdJM3ZERW50eXlmN3R3amNvZlJoNENOTjVBTWxBSzNJd2x5M1ZadWNzVk1PajJYTExSbXA5SSsxR0pqMWRPMGg1YlNIbEFvQ1ZqcDlUWEhoWTlKZHBEeTJrUEp6aXc0MGJkc09tYW01ZFpIWWRCOHc1WVkrTmVVNCtycEx1emI5Ym1lL3dBUHRqWDZ2dlZaZitQdXZsaTRoMFlTOVpkQ1ZNejNhbkpzam9wM1BraTNQa2l4NU5UQjZSS2RUbzJGbEc1OGtXNThrVi9KRWhkV08ySEFsVjRnc2hrT2hLWDhyRit0cmZqUnkxSXd4NEcya1F5U1JSL0YzWERFbnR5eWY3dHdpc05mU2x5SUZOd2crWVNHaU5BNnF1dGRYT0VURzdFMzdCKzNLTkw3ZTA2dFBjWHg5NVh0Q0NXMElKYlFna0JnQXVPUDBheDBKUEV0b1FTMmhCTGFFRW1PTTQreHJ0V3FMRnNvVmFobVV4bGw2V0V2d3g2VWtJemZDNWVHUEtXOHFET3FkZEdyWFJxMTBhdGRHclhScTEwYXRkR3JYUnExMGFuTXRDdEtUZVlCN1drOUpIOGtjLzAzLzhRQUhSRUFBZ0lDQXdFQUFBQUFBQUFBQUFBQUFBRVJFZ0lRSUNFeFVQL2FBQWdCQXdFQlB3SDZ5eGs2UktGN3FVU2g0enlmUzFERW1aRVBXTE11QzlNdFdSWWJnc2h1UmVtWG5GT1NwVml4WTFKVmxXSlFOenlzV0xGaXhZYm43SC8veEFBdUVRQUJBd0VGQmdVRkFRQUFBQUFBQUFBQ0FBRURCQVVSRlNGU0VoUWdNVUZSRXlJeVlZRVFKRkJ4OERQLzJnQUlBUUlCQVQ4Qi9MVmxkNFBrajVyN2lwenpkUjBsUXhzN2lxci9BQVA5S09NNVgyUXpXNTFPbGJyVWpuc3VvSytXRjdqelpSbU1nc1k4dUNVL0NqYyt5cFl0Nm11TDl1aEZoYTRWdlVHdGxVMU1KUWt6RXJPa0dPVjNON3NsdmNHdGtFb1MraDcxYUZNeGc4cmMyVmxTdmU4WHp3Vlk3VUJzeXNzMkdaMmZyOU1MbTd0L2ZDa3M2V01YTjNiSlFRRlVGc0FzTG03dC9mQ29hWTZablkrcXF6WUlDZDFaWTN6WCszRFZVNVVzbTBQTG9vYlVHNjZWbGljSHVwN1Foa2lJRzZxaG5DbmtjajdMRTRQZFBha0hTOVZOVWRXVjNUc3FLbTNlUHpjMzRTRmpiWkpIWmNSWmk5eXdrZGF3a2Rhd2tkYXdrZGF3a05TaHBJb1BTMmY1ai8vRUFFTVFBQUVEQWdBSEN3b0VCUVVBQUFBQUFBRUNBd1FBRVJBU0V5RXhRWk1GSUNJak16VlJZWkdoMFJRd01qUlNZbkdCd2VGQ2M3R3lVM0NTcy9CVWNuU0N3di9hQUFnQkFRQUdQd0wrWnQyRVpLTUR3cERuby9McG9GOXM3b1BlMDk2UDlOV1lpTU1qb1EyQlhKcDdLM1dJUWtIeVZ6Vjd1QUFnRVpCZW41VnlhZXl1VFQyVnlhZXl1VFQyVnlhZXlyUHdvN3c5OW9HbEtpaFc1NzNTM25SL1NmcFZwVGVNeW84Qjl2T2hYbWk5SXVuYzVrOE1qOFo5a1VobGx0TFRTQlpLRWl3RkYrVStpTzBQeHVLdFJTMEpFcjNtMjdEdklyMUtaMko4YW13MjRrcEszMlZOZ3F4YkM0K09BZmtMK21CNkE5RmtPT05XdXBHTGJPTDlQWFhxVXpzVDQxNmxNN0UrTmVwVE94UGpRUzRYNG5XNjNtN3IwbDZPOGg5cFdoYmFyaW5JOGxwTHpMZ3NwQ3E0RjNJTDJkbHc2dmRQWDVobU95TVoxMVlRa2RacVBCWTlGcE5pZmFPczA1TWY0WDRXMjlhMWRGR1JNZHh2WlFQUlFPZ0RlajhoZjB3VC9nMy9BRzA3MFBSWE9MUEtNcTlGWS96WFRNMk1lQXZTazZVbldEVWlFdTJNb1hiVjdLOVJwVGF4aXJTYkVIVWQrMHRRdUk3YW5mcDljSGtRUEV3MGdXOTQ1ejlNSVVCSHNjL0sxb2piV3RFYmEwSmNzTTVISnFUd0YzT0NWTmlobklPWW1ManVXT1pJRmFJMjFyUkcydE92dUNQaU5wSzFXYzFEQy91Y284VklSanBIdmo3ZnBnbkJJc2wwaDRmTVorKysvbTlQazMvb1lOMWNiVGx6aGEvMmp6RzZQL0hjL2FjTzV1TDByL1lyQW0zK21SZnRPL2pwVWJKa0lVejlSM2dZRWJvSlR4TXRPYysrTTM2V3doSW5pd3pjaTM0VnpnTmczNFZ6Z05nMzRVSXMyWGxtTWtwV0xrMHB6L0lZSmNTSE15VWRHSmlweVNEcFFEckZjNERZTitGYzREWU4rRk9NdVRncHR4SlNvWkZHZy9MREozVVduaW1VNUpCNlZIVDNmcmczUVdrM1EyckpEL3FMSHZ2djIzbWxZamphZ3BLaHFJcVBOYXRkWXN0UHNyMWluWVVrY0JlaFEwb1ZxSW90eW03dEU4VytuMEYvNTBiMGZrTCttQ2Y4Ry83YWQ2QXlndFJRZU1rcUhCSHc2VFRNT0tuRlphRnVzOVpwK1VTTXNSaU1wNlY2dkdpcFJ1bzV5VDVnNDEzSUx2TE5EOXc2NmJreFhVdk1MRjBxVFNtbm0wdXRxMG9XTGcwVkNLcU9UL0JjSTdxMHl0cjlxMHl0cjlxMHl0cjlxOHNpRi9LNHBUeGk3ajlNRHM2U1g4czVhK0l1d3pDM1IxVnBsYlg3VnBsYlg3VnBsYlg3VUZlUm1Rb2Z4MWxYZG9wS0cwSmJRbk1FcEZnS2NsVEhReXlqV2RmVUt5eXJ0eG04ekxYc2pwK1Btc2VFOVpCOU5sZWRDdmxRVFBiWEFkMW0yT2p1ejFkdmRTSWVvdkFHdWNJdTJUWE9FWGJKcm5DTHRrMXpoRjJ5YTV3aTdaTmM0UmRzbXVjSXUyVFhPRVhiSnJuQ0x0azFkM2RTSU9vT2hSN0JSVHVjeXVhN3FXdmdJOGF5MDU3SHQ2TFl6SVI4Qi9NNy84UUFLQkFCQUFFQkJRZ0RBUUVBQUFBQUFBQUFBUkVBSVRGQlVXRVFjWUdSb2NIdzhTQXcwYkZ3LzlvQUNBRUJBQUUvSWY4QVRZam80YURUTTBPTVVZNjN2RXRCWkcrYUJGdUQraFhxOUc1RUNITnN1NWFCTlBWNjlYcjFldlY2OVhwYzVZZjJ5bVpPMFJaMVQraWdaNFRnaE9Eby9VVEJ1Nk4vTi9YQTMwYTQwU09RVmVxckFkMi9Tb01IZ3VyT214R0VobnBDQXVXMzRVU0xxaGxoTVNQZ1JvMGJwdHN0M082WGFhb2JpVkNFSk1pZVkwREUwM2htMEhVNHg4OWRxWEpCUm1FU0RiaXVxeTFicGl3TUx1SDlYQUdsM09XN2NzdjY0L1pSd1Zzb1N1T00rWXFmdWVRZk5GQ3FKdnd2VTZMVCsyNytCaFBuWmtIM093OVo4TmhaZWhhWW5KSERiQTVvUEJYblB5dk9mbEUyREc4eEZrYWJIbVJHSUdzak1hODUrVjV6OHEvVVBGZ2x3MDJwTmtaZkozejVObkh2SUNmbUZCM1c2MzdiRGFQTTVZZEkyK1d5K3RRRmJKdE4xdHNXYmN4NmZuUEFwWE5Pb0xqc1RCREJ1QkVjUXVlMG9ZSUdGdG9VSjJyQkxNaUxRZGhuQXBZTWxhamV1MUNoaUZnWGtJU3pMdFNnSmRrckc3WXd3ZzRaMEh6TkF2UmlKSG5TaENDMjY3L1JHc2N1WFljMGZwalRsTE1kaHZ3ZFZ2MlVjSU5CckNjVCtBNHhWajFsTjVqbUsyMWF0RVdNZEJlMEtmdzJRbFg2SElPaGVETFJkYnNrbkRxS3gvSFNpSjlCWnRScTB5OHhQTkljQ3ZTcWVsVTlLb2JRTmhJRyt5R3pEZGY3QUVHZ1Y2VlQwcW5wVk1OSUVqdWNTZ0RGRGdaQVVTV3JieFlCaXVWTFFsbnZFYXNlQmg5UytZWjVoNXRTR3NEZEZMeHNPWEdqVTUvQkZtdlB1OWVmZDY4KzcxNTkzcno3dlhuM2V2UHU5ZWZkNjgrNzB5aW42NExXQnVRUjF0dGJvTjlTVTZWR1dCdnYvd0JPLzlvQURBTUJBQUlBQXdBQUFCRDc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nm9Namc0eHZQMzc3Nm1wenl5dnplcHI3NzczajVUL3o1ZS96Nzc2NHB2OEF2cS82SUcrKysrdmMvd0QvQVA4QXRmOEF2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2L3hBQWVFUUVBQWdFRkFRRUFBQUFBQUFBQUFBQUJBQkV4RUNBaFVXRkJVUC9hQUFnQkF3RUJQeEQ5Yk1kQnF6TUVVTXoybG4yQmhFUnAyQmJVV0NabmhMQnhBcHhQS0ltWlExRDkyY1JEeHJBV29BdDBpd2hzYm9EVEhycEFSakNqV2htNXRHb016TDlTL1V2MUw5Uy9VWEw5ai8vRUFDZ1JBUUFCQVFVSUF3RUJBQUFBQUFBQUFBRUFFU0ZCWVhIaElERlJnWkdoc2RIQjhQRlFFUC9hQUFnQkFnRUJQeEQrc2IzMTl1TllEbzd0UFJGVTBFODV6dmtvZFZ2bU43ZTQrS3RKVSszdzd6SitHS3pWYkdHUll0VnFXL1RGZ1lxQmRQM0lDOVVhRllYUVZGdVpQMUlVbzBjSVhOTjlpWTVRRG15bEhoK09tdzNCSGkyWEFTek94OGY0dTE3akZIa0ZiRjlSK2dJVnQ1Rnc4Wis0d3BnMUc2dnlFdkJCT2JaRVViaGVUWVFTak54MnFxNFlabmVVVmRlSmZ5dW4xR3NyUTFDRm1zcUZVVVdabnFmVWF3QlVMa2U0TUpTNExiZmxqWnljT0J5ODdMMEtqY3hxcXdienZiM21LNmF6RmROWml1bXN4WFRXRlMxOUNXM25HMTA1ZjJQL3hBQW1FQUVBQVFNREJBTUFBd0VBQUFBQUFBQUJFUUFoTVJCQllTQlJjWUV3d2ZCd2thSFIvOW9BQ0FFQkFBRS9FUDVOdmNVNFpraTUrQXRLUTBIckJaN3FlZUp2bWppdEFOZWdyOU45VXpHTUFqc3NhU0dreEI2TmZwdnF2MDMxWDZiNnI5TjlWK20rcVBNVUpyL1NpeDgrbm9nNG9xbUJQYmtzREdOc2JLU0UvRVMweFRIQTJGa1N1Z0VJUVNXWGhjQXNGV1ZmVFIyQ3QxRmhLN0ZUSnRBcGVIU0RDekozZnVoTUVUQXZIUTBPTG05bG8xZ0RKa2VoZ3dZTkQreEUrV0RsQTcwYnA1N29jSWttNWtwdDNmdHJDTUlJUkJFUWFQMEtVd1hXV3VrT0lrdkQ0SEZkd2RQZ2xMMWpBdUpWK1krQ1lMQlUvaXdPQVYyeFpnTWhEQU1ZUGoxQnRJZ1lsdkJLVy95TkZKQkcycHNtMURBOWdvcXdoMkdPQVlUMGtKWkduaWtKdzFCMkp3WkJ2UmliZWhBZzdpSjFsdGlra2lMOGdqa2FNQkZRL3dCbmZ3Yys3cmRQYVlzSkovdlhQTmxnZDhCaGE3UjlzUkozVkpIS3hHdWVaRmIxZERFWnNLMnJMejBaQ2lvMmttNzhlaENUNEVTdCsrdktxSk43ditrNkJMSlRkT0hXZmg5dngzc2JSV2U0OWFOT0VRaCtkdXNhTlMwRUkvUU9Sb3lJU2wzbjJoWGQ0dW9HSHlxQVFHdVRKYUZHemE3WVpMYVkwbVdmdGR3MGwxMXpCYldUSnYxRHNzbkNrcEpFZFNJQ0phV1M0NGZIUXlyK0dURW50TTk5ZU01ZEREY2dIMVF4RVM1S0NiMnVKenVGTXFTRFM4U25DTHdpbGxUQWJDcnNvN1BOaHlRdnh0RkJLQlFobnNMZUczSkM5Wno4SVYzZEJMS2U3WUNDcHJMUmF2Rm05M2tUS1VnWE1rSmxWM1ZaK0IrNnNURllEWUZiV0RkRkFiQXBNRzRtUWJLQkVSQks0Rm51aUVpZVNtQUZkSzhKNFFIUXpac3pOVnl5L0Jjc2I2RW1tQ1BKOEpNaStaNkdiTm5QTTAreGN6MkZEVUtCZGdBQTRLa2FDZk93QzhhQVN0WHFZNlN0NGJNWW94QVNCK0o5Z3dURjVpSVdtQXRNU1ZEWW9LSjNDdWRtSjNab0VlSmdieVllejR2L0FQOEEvd0QvQVA4QS93RC9BUGdnUkw2eFFlaW9iMFJWL0JiOGpzb0EzYkVtTWpZd0pVcUNWaitUdi8vWiJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wNC0yMyJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDQtMjMifSx7ImFhaWQiOiIwMDI0IzE1NTAiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhaWQiOiIwMDI0IzE1NTAiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiRytEUGluS2V5c3RvcmVBbmRyb2lkIn0sImRlc2NyaXB0aW9uIjoiRytEIFBpbktleXN0b3JlQW5kcm9pZCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6InVhZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjJ9LHsibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X2RlciJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfZGVyIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsic29mdHdhcmUiXSwiYXR0YWNobWVudEhpbnQiOlsiaW50ZXJuYWwiXSwidGNEaXNwbGF5IjpbImFueSIsInByaXZpbGVnZWRfc29mdHdhcmUiXSwidGNEaXNwbGF5Q29udGVudFR5cGUiOiJpbWFnZS9wbmciLCJ0Y0Rpc3BsYXlQTkdDaGFyYWN0ZXJpc3RpY3MiOlt7IndpZHRoIjo1NDAsImhlaWdodCI6OTYwLCJiaXREZXB0aCI6MTYsImNvbG9yVHlwZSI6MiwiY29tcHJlc3Npb24iOjAsImZpbHRlciI6MCwiaW50ZXJsYWNlIjowfV0sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlCbURDQ0FUMENCR1FkUFIwd0NnWUlLb1pJemowRUF3SXdWakVMTUFrR0ExVUVCaE1DU1U0eEN6QUpCZ05WQkFnTUFrMUlNUTB3Q3dZRFZRUUhEQVJRVlU1Rk1Rc3dDUVlEVlFRS0RBSkhSREVMTUFrR0ExVUVDd3dDUkZNeEVUQVBCZ05WQkFNTUNFRlZWRWhTVDA5VU1CNFhEVEl6TURNeU5EQTJNRE13T1ZvWERUUXpNRE15TkRBMk1ETXdPVm93VmpFTE1Ba0dBMVVFQmhNQ1NVNHhDekFKQmdOVkJBZ01BazFJTVEwd0N3WURWUVFIREFSUVZVNUZNUXN3Q1FZRFZRUUtEQUpIUkRFTE1Ba0dBMVVFQ3d3Q1JGTXhFVEFQQmdOVkJBTU1DRUZWVkVoU1QwOVVNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVTSXBJL2RLWUNEWWh6d0Qyd1NmWUFPYi9uTmFpUGNXRjIxdnhaay9UZ0QwT0p0Y0QrT1BtNjRud1pkRldTRVlTVzdpT3FucG1KeWRlOG1nci90bkFpekFLQmdncWhrak9QUVFEQWdOSkFEQkdBaUVBM2J2aGF6UUZQd215WGx4Sy94Q1hmaDdnMVgxRW9iTEMzTCsyR09SeHA3Z0NJUUNmTkVUWC9tMkJlYlJMWEk0TE1QMUVRR1BYRkRmN09rNzRVN3hiaU00VmtBPT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCwvOWovNEFBUVNrWkpSZ0FCQVFBQUFRQUJBQUQvMndCREFBTUNBZ01DQWdNREF3TUVBd01FQlFnRkJRUUVCUW9IQndZSURBb01EQXNLQ3dzTkRoSVFEUTRSRGdzTEVCWVFFUk1VRlJVVkRBOFhHQllVR0JJVUZSVC8yd0JEQVFNRUJBVUVCUWtGQlFrVURRc05GQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJUL3dnQVJDQURJQU1nREFTSUFBaEVCQXhFQi84UUFIQUFCQUFNQUF3RUJBQUFBQUFBQUFBQUFBQWNJQ1FRRkJnSUQvOFFBR3dFQkFBSURBUUVBQUFBQUFBQUFBQUFBQUFFREFnVUdCQWYvMmdBTUF3RUFBaEFERUFBQUFheWo2RjV3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVnZDNlRFQ1eExKMzZ4Rm9jNWw4bEdQU1hLc3pORE0wOU5WZE4rOFA4WmRMS0JIcGllK3ZoVHVvZk5YTkF2bStNeVVtUm4xZFFaZ0FITTRjdzFMaWNQMVZMZVF1alR6SjJkSk0zMzVwaGFhVWplYWJLVVJ2ZFY3U1oxZFRTNlN1Rmt3US9iSHI3NjV0MkYxbWRrODdOUHFFK1NZeUhSMWdBTEIxOGx2eVRlalBYUXFtdWdzZ1lkVlZwMXlhSGZYTFczdlVRazJwYUlxZDVNcllxSVBmamRMTm1UWXkyK0NUb3hzYjZJdHRTdTZsQTlCWkhBNnFvQUJ5T09OSFAycFBlbmpycy84QXhtbmNZYkxDaWE2ejB4U21hWnQ5SFJNbFVSdmRGK3F6b1l1czNsZEtWMXU2aWFtM3Q3UHJ0Sm4wR2VudS9BOURXR3h4QUFBZXY4Z3hYS2svT1pxYzlKbWJLbHBNelpHa3pOa2FUTTJScE53TTZFcmgxajh3Mk9JZXlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQLzhRQUtCQUFBUU1EQXdRQkJRRUFBQUFBQUFBQUJRQUVCZ0lEQnhVWElBRVFFellSRWhZd05IQTEvOW9BQ0FFQkFBRUZBdjZiR0lTUmxOWWJGZ1VaUzNGTW1sUGd0S1cyYmZTTHJFMVBTdVcrQzB2QmFYZ3RMd1dsNExTY2lHTHlrMWlnT1Jwa3NRSXhlOStHQVFtcVVQRzdlMDBzUG43WWEzZTVkQnRxOTV4YU9aWUhGQXl4SjdjcEJreGhIaTI4NHRiemkxdk9MVEhMUUozVzFkMkgxaDZ5c0VXczVoMXlLRU9iUnJjZk9nWWl5QkZTV1F0NHlLUFNGN0kzdkRFbnR5eWY3dHdqY29mUmg0Q05ONUFNbEFLM0l3bHkzVlp1Y3NWTU9qMlhMTFJtcDlJKzFHSmoxZE8waDViU0hsQW9DVmpwOVRYSGhZOUpkcER5MmtQSnppdzQwYmRzT21hbTVkWkhZZEI4dzVZWStOZVU0K3JwTHV6YjlibWUvd0FQdGpYNnZ2VlpmK1B1dmxpNGgwWVM5WmRDVk16M2FuSnNqb3AzUGtpM1BraXg1TlRCNlJLZFRvMkZsRzU4a1c1OGtWL0pFaGRXTzJIQWxWNGdzaGtPaEtYOHJGK3RyZmpSeTFJd3g0RzJrUXlTUlIvRjNYREVudHl5Zjd0d2lzTmZTbHlJRk53ZytZU0dpTkE2cXV0ZFhPRVRHN0UzN0IrM0tOTDdlMDZ0UGNYeDk1WHRDQ1cwSUpiUWdrQmdBdU9QMGF4MEpQRXRvUVMyaEJMYUVFbU9NNCt4cnRXcUxGc29WYWhtVXhsbDZXRXZ3eDZVa0l6ZkM1ZUdQS1c4cURPcWRkR3JYUnExMGF0ZEdyWFJxMTBhdGRHclhScTEwYW5NdEN0S1RlWUI3V2s5Skg4a2MvMDMvOFFBSFJFQUFnSUNBd0VBQUFBQUFBQUFBQUFBQUFFUkVnSVFJQ0V4VVAvYUFBZ0JBd0VCUHdINnl4azZSS0Y3cVVTaDR6eWZTMURFbVpFUFdMTXVDOU10V1JZYmdzaHVSZW1YbkZPU3BWaXhZMUpWbFdKUU56eXNXTEZpeFlibjdILy94QUF1RVFBQkF3RUZCZ1VGQVFBQUFBQUFBQUFDQUFFREJBVVJGU0ZTRWhRZ01VRlJFeUl5WVlFUUpGQng4RFAvMmdBSUFRSUJBVDhCL0xWbGQ0UGtqNXI3aXB6emRSMGxReHM3aXFyL0FBUDlLT001WDJRelc1MU9sYnJVam5zdW9LK1dGN2p6WlJtTWdzWTh1Q1UvQ2pjK3lwWXQ2bXVMOXVoRmhhNFZ2VUd0bFUxTUpRa3pFck9rR09WM043c2x2Y0d0a0VvUytoNzFhRk14ZzhyYzJWbFN2ZThYendWWTdVQnN5c3MyR1oyZnI5TUxtN3QvZkNrczZXTVhOM2JKUVFGVUZzQXNMbTd0L2ZDb2FZNlpuWStxcXpZSUNkMVpZM3pYKzNEVlU1VXNtMFBMb29iVUc2NlZsaWNIdXA3UWhraUlHNnFobkNua2NqN0xFNFBkUGFrSFM5Vk5VZFdWM1RzcUttM2VQemMzNFNGamJaSkhaY1JaaTl5d2tkYXdrZGF3a2Rhd2tkYXdrTlNocElvUFMyZjVqLy9FQUVNUUFBRURBZ0FIQ3dvRUJRVUFBQUFBQUFFQ0F3UUFFUkFTRXlFeFFaTUZJQ0lqTXpWUllaR2gwUlF3TWpSU1luR0J3ZUZDYzdHeVUzQ1NzL0JVY25TQ3d2L2FBQWdCQVFBR1B3TCtadDJFWktNRHdwRG5vL0xwb0Y5czdvUGUwOTZQOU5XWWlNTWpvUTJCWEpwN0szV0lRa0h5VnpWN3VBQWdFWkJlbjVWeWFleXVUVDJWeWFleXVUVDJWeWFleXJQd283dzk5b0dsS2loVzU3M1MzblIvU2ZwVnBUZU15bzhCOXZPaFhtaTlJdW5jNWs4TWo4WjlrVWhsbHRMVFNCWktFaXdGRitVK2lPMFB4dUt0UlMwSkVyM20yN0R2SXIxS1oySjhhbXcyNGtwSzMyVk5ncXhiQzQrT0Fma0wrbUI2QTlGa09PTld1cEdMYk9MOVBYWHFVenNUNDE2bE03RStOZXBUT3hQalFTNFg0blc2M203cjBsNk84aDlwV2hiYXJpbkk4bHBMekxnc3BDcTRGM0lMMmRsdzZ2ZFBYNWhtT3lNWjExWVFrZFpxUEJZOUZwTmlmYU9zMDVNZjRYNFcyOWExZEZHUk1keHZaUVBSUU9nRGVqOGhmMHdUL2czL0FHMDcwUFJYT0xQS01xOUZZL3pYVE0yTWVBdlNrNlVuV0RVaUV1Mk1vWGJWN0s5UnBUYXhpclNiRUhVZCswdFF1STdhbmZwOWNIa1FQRXcwZ1c5NDV6OU1JVUJIc2MvSzFvamJXdEViYTBKY3NNNUhKcVR3RjNPQ1ZOaWhuSU9ZbUxqdVdPWklGYUkyMXJSRzJ0T3Z1Q1BpTnBLMVdjMURDL3VjbzhWSVJqcEh2ajdmcGduQklzbDBoNGZNWisrKy9tOVBrMy9vWU4xY2JUbHpoYS8yanpHNlAvSGMvYWNPNXVMMHIvWXJBbTMrbVJmdE8vanBVYkprSVV6OVIzZ1lFYm9KVHhNdE9jKytNMzZXd2hJbml3emNpMzRWemdOZzM0VnpnTmczNFVJczJYbG1Na3BXTGswcHovSVlKY1NITXlVZEdKaXB5U0RwUURyRmM0RFlOK0ZjNERZTitGT011VGdwdHhKU29aRkdnL0xESjNVV25pbVU1SkI2VkhUM2ZyZzNRV2szUTJySkQvcUxIdnZ2MjNtbFlqamFncEtocUlxUE5hdGRZc3RQc3IxaW5ZVWtjQmVoUTBvVnFJb3R5bTd0RThXK24wRi81MGIwZmtMK21DZjhHLzdhZDZBeWd0UlFlTWtxSEJIdzZUVE1PS25GWmFGdXM5WnArVVNNc1JpTXA2VjZ2R2lwUnVvNXlUNWc0MTNJTHZMTkQ5dzY2Ymt4WFV2TUxGMHFUU21ubTB1dHEwb1dMZzBWQ0txT1QvQmNJN3EweXRyOXEweXRyOXEweXRyOXE4c2lGL0s0cFR4aTdqOU1EczZTWDhzNWErSXV3ekMzUjFWcGxiWDdWcGxiWDdWcGxiWDdVRmVSbVFvZngxbFhkb3BLRzBKYlFuTUVwRmdLY2xUSFF5eWpXZGZVS3l5cnR4bTh6TFhzanArUG1zZUU5WkI5TmxlZEN2bFFUUGJYQWQxbTJPanV6MWR2ZFNJZW92QUd1Y0l1MlRYT0VYYkpybkNMdGsxemhGMnlhNXdpN1pOYzRSZHNtdWNJdTJUWE9FWGJKcm5DTHRrMWQzZFNJT29PaFI3QlJUdWN5dWE3cVd2Z0k4YXkwNTdIdDZMWXpJUjhCL003LzhRQUtCQUJBQUVCQlFnREFRRUFBQUFBQUFBQUFSRUFJVEZCVVdFUWNZR1JvY0h3OFNBdzBiRncvOW9BQ0FFQkFBRS9JZjhBVFlqbzRhRFRNME9NVVk2M3ZFdEJaRythQkZ1RCtoWHE5RzVFQ0hOc3U1YUJOUFY2OVhyMWV2VjY5WHBjNVlmMnltWk8wUloxVCtpZ1o0VGdoT0RvL1VUQnU2Ti9OL1hBMzBhNDBTT1FWZXFyQWQyL1NvTUhndXJPbXhHRWhucENBdVczNFVTTHFobGhNU1BnUm8wYnB0c3QzTzZYYWFvYmlWQ0VKTWllWTBERTAzaG0wSFU0eDg5ZHFYSkJSbUVTRGJpdXF5MWJwaXdNTHVIOVhBR2wzT1c3Y3N2NjQvWlJ3VnNvU3VPTStZcWZ1ZVFmTkZDcUp2d3ZVNkxUKzI3K0JoUG5aa0gzT3c5WjhOaFplaGFZbkpIRGJBNW9QQlhuUHl2T2ZsRTJERzh4RmthYkhtUkdJR3NqTWE4NStWNXo4cS9VUEZnbHcwMnBOa1pmSjN6NU5uSHZJQ2ZtRkIzVzYzN2JEYVBNNVlkSTIrV3krdFFGYkp0TjF0c1diY3g2Zm5QQXBYTk9vTGpzVEJEQnVCRWNRdWUwb1lJR0Z0b1VKMnJCTE1pTFFkaG5BcFlNbGFqZXUxQ2hpRmdYa0lTekx0U2dKZGtyRzdZd3dnNFowSHpOQXZSaUpIblNoQ0MyNjcvUkdzY3VYWWMwZnBqVGxMTWRodndkVnYyVWNJTkJyQ2NUK0E0eFZqMWxONWptSzIxYXRFV01kQmUwS2Z3MlFsWDZISU9oZURMUmRic2tuRHFLeC9IU2lKOUJadFJxMHk4eFBOSWNDdlNxZWxVOUtvYlFOaElHK3lHekRkZjdBRUdnVjZWVDBxbnBWTU5JRWp1Y1NnREZEZ1pBVVNXcmJ4WUJpdVZMUWxudkVhc2VCaDlTK1laNWg1dFNHc0RkRkx4c09YR2pVNS9CRm12UHU5ZWZkNjgrNzE1OTNyejd2WG4zZXZQdTllZmQ2OCs3MHlpbjY0TFdCdVFSMXR0Ym9OOVNVNlZHV0J2di93Qk8vOW9BREFNQkFBSUFBd0FBQUJENzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc2b01qZzR4dlAzNzc2bXB6eXl2emVwcjc3NzNqNVQvejVlL3o3NzY0cHY4QXZxLzZJRysrKyt2Yy93RC9BUDhBdGY4QXZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnYveEFBZUVRRUFBZ0VGQVFFQUFBQUFBQUFBQUFBQkFCRXhFQ0FoVVdGQlVQL2FBQWdCQXdFQlB4RDliTWRCcXpNRVVNejJsbjJCaEVScDJCYlVXQ1puaExCeEFweFBLSW1aUTFEOTJjUkR4ckFXb0F0MGl3aHNib0RUSHJwQVJqQ2pXaG01dEdvTXpMOVMvVXYxTDlTL1VYTDlqLy9FQUNnUkFRQUJBUVVJQXdFQkFBQUFBQUFBQUFFQUVTRkJZWEhoSURGUmdaR2hzZEhCOFBGUUVQL2FBQWdCQWdFQlB4RCtzYjMxOXVOWURvN3RQUkZVMEU4NXp2a29kVnZtTjdlNCtLdEpVKzN3N3pKK0dLelZiR0dSWXRWcVcvVEZnWXFCZFAzSUM5VWFGWVhRVkZ1WlAxSVVvMGNJWE5OOWlZNVFEbXlsSGgrT213M0JIaTJYQVN6T3g4ZjR1MTdqRkhrRmJGOVIrZ0lWdDVGdzhaKzR3cGcxRzZ2eUV2QkJPYlpFVWJoZVRZUVNqTngycXE0WVpuZVVWZGVKZnl1bjFHc3JRMUNGbXNxRlVVV1pucWZVYXdCVUxrZTRNSlM0TGJmbGpaeWNPQnk4N0wwS2pjeHFxd2J6dmIzbUs2YXpGZE5aaXVtc3hYVFdGUzE5Q1czbkcxMDVmMlAveEFBbUVBRUFBUU1EQkFNQUF3RUFBQUFBQUFBQkVRQWhNUkJCWVNCUmNZRXd3ZkJ3a2FIUi85b0FDQUVCQUFFL0VQNU52Y1U0WmtpNStBdEtRMEhyQlo3cWVlSnZtaml0QU5lZ3I5TjlVekdNQWpzc2FTR2t4QjZOZnB2cXYwMzFYNmI2cjlOOVYrbStxUE1VSnIvU2l4OCtub2c0b3FtQlBia3NER05zYktTRS9FUzB4VEhBMkZrU3VnRUlRU1dYaGNBc0ZXVmZUUjJDdDFGaEs3RlRKdEFwZUhTREN6SjNmdWhNRVRBdkhRME9MbTlsbzFnREprZWhnd1lORCt4RStXRGxBNzBicDU3b2NJa201a3B0M2Z0ckNNSUlSQkVRYVAwS1V3WFdXdWtPSWt2RDRIRmR3ZFBnbEwxakF1SlYrWStDWUxCVS9pd09BVjJ4WmdNaERBTVlQajFCdElnWWx2QktXL3lORkpCRzJwc20xREE5Z29xd2gyR09BWVQwa0paR25pa0p3MUIySndaQnZSaWJlaEFnN2lKMWx0aWtraUw4Z2prYU1CRlEvd0JuZndjKzdyZFBhWXNKSi92WFBObGdkOEJoYTdSOXNSSjNWSkhLeEd1ZVpGYjFkREVac0syckx6MFpDaW8ya203OGVoQ1Q0RVN0Kyt2S3FKTjd2K2s2QkxKVGRPSFdmaDl2eDNzYlJXZTQ5YU5PRVFoK2R1c2FOUzBFSS9RT1JveUlTbDNuMmhYZDR1b0dIeXFBUUd1VEphRkd6YTdZWkxhWTBtV2Z0ZHcwbDExekJiV1RKdjFEc3NuQ2twSkVkU0lDSmFXUzQ0ZkhReXIrR1RFbnRNOTllTTVkRERjZ0gxUXhFUzVLQ2IydUp6dUZNcVNEUzhTbkNMd2lsbFRBYkNyc283UE5oeVF2eHRGQktCUWhuc0xlRzNKQzlaejhJVjNkQkxLZTdZQ0NwckxSYXZGbTkza1RLVWdYTWtKbFYzVlorQis2c1RGWURZRmJXRGRGQWJBcE1HNG1RYktCRVJCSzRGbnVpRWllU21BRmRLOEo0UUhRelpzek5WeXkvQmNzYjZFbW1DUEo4Sk1pK1o2R2JOblBNMCt4Y3oyRkRVS0JkZ0FBNEtrYUNmT3dDOGFBU3RYcVk2U3Q0Yk1Zb3hBU0IrSjlnd1RGNWlJV21BdE1TVkRZb0tKM0N1ZG1KM1pvRWVKZ2J5WWV6NHYvQVA4QS93RC9BUDhBL3dEL0FQZ2dSTDZ4UWVpb2IwUlYvQmI4anNvQTNiRW1Nall3SlVxQ1ZqK1R2Ly9aIn0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTA0LTE2In1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wNC0xNiJ9LHsiYWFndWlkIjoiN2QxMzUxYTYtZTA5Ny00ODUyLWI4YmYtYzlhYzVjOWNlNGEzIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI3ZDEzNTFhNi1lMDk3LTQ4NTItYjhiZi1jOWFjNWM5Y2U0YTMiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiWXViaUtleSBCaW8gU2VyaWVzIC0gTXVsdGktcHJvdG9jb2wgRWRpdGlvbiJ9LCJkZXNjcmlwdGlvbiI6Ill1YmlLZXkgQmlvIFNlcmllcyAtIE11bHRpLXByb3RvY29sIEVkaXRpb24iLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5MjIyLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX0seyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AzODRyMV9lY2RzYV9zaGEzODRfcmF3Iiwic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciLCJlZDI1NTE5X2VkZHNhX3NoYTUxMl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIiwiYmFEZXNjIjp7InNlbGZBdHRlc3RlZEZSUiI6MC4wLCJzZWxmQXR0ZXN0ZWRGQVIiOjAuMCwiaUFQQVJUaHJlc2hvbGQiOjAuMCwibWF4VGVtcGxhdGVzIjo1LCJtYXhSZXRyaWVzIjo1LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo2LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo2LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCIsImJhRGVzYyI6eyJzZWxmQXR0ZXN0ZWRGUlIiOjAuMCwic2VsZkF0dGVzdGVkRkFSIjowLjAsImlBUEFSVGhyZXNob2xkIjowLjAsIm1heFRlbXBsYXRlcyI6NSwibWF4UmV0cmllcyI6NSwiYmxvY2tTbG93ZG93biI6MH19LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJREhqQ0NBZ2FnQXdJQkFnSUVHMEJUOXpBTkJna3Foa2lHOXcwQkFRc0ZBREF1TVN3d0tnWURWUVFERXlOWmRXSnBZMjhnVlRKR0lGSnZiM1FnUTBFZ1UyVnlhV0ZzSURRMU56SXdNRFl6TVRBZ0Z3MHhOREE0TURFd01EQXdNREJhR0E4eU1EVXdNRGt3TkRBd01EQXdNRm93TGpFc01Db0dBMVVFQXhNaldYVmlhV052SUZVeVJpQlNiMjkwSUVOQklGTmxjbWxoYkNBME5UY3lNREEyTXpFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUUMvandZdWhCVmxxYWlZV0VNc3JXRmlzZ0orUHRNOTFlU3JwSTRUSzdVNTNtd0NJYXdTREh5OHZVbWs1TjJLQWo5YWJ2VDlOUDVTTVMxaFFpM3VzeG9ZR29uWFFnZk82Wlh5VUE5YStLQWtxZEZuQm5seXVnU2VDT2VwOEVkWkZmc2FSRnRNamt3ejVHY3oyUHk0dklZdkNkTUhQdHdhejBiVnV6bmV1ZUlFejZUblFqRTYzUmR0Mnpid25lYndURzVaeWJlV1N3Ynp5K0JKMzRaSGNVaFBBWTg5eUpRWHVFMEl6TVpGY0VCYlBOUmJXRUNSS2dqcS8vcVQ5bm1ET0ZWbFNSQ3Qyd2lxUFN6bHV3bit2K3N1UUVCc1VqVEdNRWQyNXRLWFhUa05XMjF3SVdieGVTeVVvVFh3THZHUzZ4bHdRU2dOcGsycVhZd2Y4aVhnN1ZXWkFnTUJBQUdqUWpCQU1CMEdBMVVkRGdRV0JCUWdJdnowYk5HSmhqZ3BUb2tzeUtwUDl4djlvREFQQmdOVkhSTUVDREFHQVFIL0FnRUFNQTRHQTFVZER3RUIvd1FFQXdJQkJqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFqdmp1T01EU2ErSlhGQ0x5QktzeWNYdEJWWnNKNFVlM0xiYUVzUFk0TVlOL2hJUTVaTTVwN0VqZmNuTUc0Q3RZa05zZk5IYzBBaEJMZHE0NXJuVDg3cS82TzN2VUV0Tk1hZmJoVTZrdGhYN1krOVhGTjlOcG1ZeHIrZWtWWTV4T3hpOGg5SkRJZ29NUDRWQjF1UzBhdW5MMUlHcXJOb29MOW1tRm5MMmtMVlZlZTYvVlI2QzUrS1NUQ01DV3BwTXVKSVpJSTJ2OW80ZGtvWjhZN1FSalFsTGZZemQzcUd0S2J3N3hhRjFVc0cvNXhVYi9CdHdiMlgyZzRJbnBpQi95dC8zQ3BRWHBpV1gvSzRtQnZVS2lHbjA1WnNxZVkxZ3g0ZzB4TEJxY1U5cHNteVB6SytWc2d3MmplUlE1SmxLRHlxRTBoZWJmQzF0dkZ1MENDckpGY3c9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFmQ0FZQUFBQ0dWcytNQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUhZWUFBQjJHQVYyaUU0RUFBQWJOU1VSQlZGaEhwVmQ3VE5WMUZELzNkNTl3ZVFTSWdTOUFRQVhjRkxBUVppOWZwZVZ6MXRZL1dUWnI1V3hwYzdXNWtuTGE1akkzWjg1c3JTMm5NMnNqdFd3WlM3SVVINEg0eENuRVF4NERBWkY3NFY3dXM4ODV2OS9sSW5CdlZKL0I0UHY5bnUvNW51LzVudk01NTZmekEvUXYwSGIvSXJYM1ZGS1BvNDVjbm00aW5VSVdZd0xGUm1aUVV1d2pGRy9OMWlSSGgxRVowTlJWUnVkcXQxQmQrMm5TS3lTL09oeXMwK2xrM2UvM2tROXF2RDRaVXRhNFZWU1V1WTBlaXB5aVRoQWZvY29PUlZnRHV1dzNxS1JpQWQzcmJjRXRqVGpZSW9mNldhSHNDbXpWUFdDTXgrY2doOHRMcVdNS2FNV3NVakxxbzJSdEpJUTBvT3ptZXJwUXU0ZXNaZ3NPTmtHeEg3ZDBrZHZUVDE3czRPTVU3Vkk4WmhqZ0dhTStBcTlpRU51OFBpZjF1ZHowN013dktXZjhHbFZvQ0VZMDRQQzVXZFRhWFlGYlI4dk52TDUrM0tnZmI1eE5NeWE5UmFtSml5bmFNbEdUVnRGbHI2YmE5dStwcW5FWDR1TXVSUmdqU1lFaHJON3V0RkZlNmxxYWw3TmZrdzVpbUFHSHluUHBiazhWbVkweHN0bnB0bEZDVkNZdHpUdUJOODNRcE1MalR0ZXZkUHpTVW5KN2U4bWtqeFozOWZYYktEZmxkWnFidlUrVFVnR25CVkY2ZlEyaVBIZzRXMTZVV1V3dnpiazE2c01aRStQbjBwdno3SlNldUF5ZXM4bGNwQ21hS3VvL3ArcVdyMlVjd0lBSFdydlAwWUV6aFhBdExBYnNzSGhwN2lHYW12eWlqUDhyeXFyWFVXWDlYb293eHlBdWZOQnJwNDNQT0JGWFpsa2Y4TURSaXFjcHlvd0F3cHV6MngrZld2ei9EdGRlOXNtc3p5Z3RjUjZDMXdiZHpCbDZPbHE1V05ZWTRvR2F0aEpNcmtURXgwakFSU0hBVnMrNXJZa1FOWGIrUWdmUExzUTZnWHlJbnNyZVFmbXBtN1JWRllmTDg2bjFmaVVPa1l2U2hrVVB4dmJ1a3pveTZLMWloTTFobzNYelc2RXZTZlhBK2RwaVdHYVdkK2RvWHpMem1Hd0tZRkxDQXNSQWxQQkFoTWxDRlhVN3RCVVZQcjhIZ1ZjSkhXcStGMDBwbHIrRE1UZHJQNHp2eFkxMWtOTWh4VCtTZVRHZytkNFY1TFFKaXR5VUdKTkI4VkZac2pnWUJaTS9JSS9YQ1RrajBxeURPcEYyQVZRMTdDSWpVcC9EblQxVWtMNUY1Z2RqK3NTMXdnMWdFM2dpZ202MGZDWHpTblBYYnlBUGJJWHYrSURwRTE2VGhhSElTOXNreWhsbU1FNUYzY2ZxQUtocTJDMEU1UEgxZ1lhWGFMUERrWkcwSERKT25LV0hwNTFJMHo1U091eDhlMVdBdVp6ZEhRclRrcDhUbWpYb0krbGEwd0dac3p1YnFiTzNpZlE2QS9XN3ZWU1lzVjNtUjBKS3drS2M0V0hpQmttUjhJM0NDZ0k4N29PTDRxelQ1UCtSVUpCZWpFT2dBUEs4aFlQemF0TStlSVRwMklPOXlUUW1lcm9tUFJ4eDFxeEFjc2lsZS91YlNlRWJjV1FHWUVDZ2hjTFkySHlLam9nakgyNWhNcGpwVXYxT3VnbGk0ZWgyZVJ3ME8zMmJKamt5dUNnTnpnMHZ6bFlNU2lTczB1b280TUc3aE1PakNFYVgxeUZFMG5TdmpCenVUbkVwSzg2WjhJb3FGQUl1Ync4a2c5QXJFYVJFV1NaSStqSDRYYnA2ZzlFOUVuSlQzb2FSekROK01VSkJRREhuNTZhOG9VbUVCdXNPeEJzL041K3RKRWJQa0FGRGo4VUd2T3MvSVd2Y1NnbEdCaHZTNy9GVFlmcFdHWWREWThmUEF4V1NBMzVzVEM0cDQrTG00QWFxSW9QZVF0ZnVmSzZKaDBaaHhsYnNVWE9TbVhOaWZENVpUQWt5RG9mYmJjY2x4bkE4V05BcXhDYlJOeWtoWHhRcGFEdzY3ZlhVWWJzaUcwS2h0djJvZUl2aDhyaFFNWU9jRUFxWEcvZUkrem5nT2M1eXhyOHE4MklBTTFjL0ZMRk9wbHF1NWVGUVhyTVp6R2NWQ2pZYkxXRzVJNEJUMWV1UnJsYnh0Tk90TWl0RERFaExYSUl5bkFBdnVPRVdFM1gzTmRBZnQ5NFZnYUc0MlhJUXQwWlg2UGVDRS9xUUZlOXJLNkh4N1lVNTBLdkg3Zlc0ZlMrcTdLS0JKeHNnZ0JYNXBTQUdoMWpJclZoNXpRNnczUmZhYWhCWG0vYUNiQ1pUakNVRlVUeVdacVc5cDYyTWpKUFhWcU9yUGdNTzROdjc0R2tmK293ZnROVkJEUW5qRkpxSFN3MTdwWHZoV1c1S1pxZS9RNDlOL1VTVENBVldvUVhGSUhCSFhYZTNGUHJVRHN1R0RtdEYvaEhLVEhwZWt4aGlBT1BJK1NKcTZTNkhGNEk5WVd6a0JKVG80NmlVTXpXcDhQaXIvUmlkdUx4S1lzU2tzVjh2TGxPUXZoR1gyWWxSME9CaEJqQyt1L2dFY3ZZMEFwSzdZazQxTnhqUFNRbldGSFRGNjZVcmpnZXZCOEN1NWErbDJ2WVNSUHR1VkRvNzNoaGRNU0huVVg3dFRqc1ZaR3hBbC9XcHRpT0lFUTFnbkwyOW1YNi90UjF0bWxrWWo4VzRYK0NTaldjVURHWTFOcFMvQzdoU0txaU1MTS9sMlFtU1daNzNEZHorZ2lvOEJDRU5ZUFE0NnFua3p3WFVicXZCa3hqVVFzV2ZaRmdidW8zckFmK3dON2pPTzkwK3lueDRQaTNMKzBuWUwxU2NoRFVnQVA0Z1BWLzdJZDFxKzFIU2htdUdrSXFXUlBneXhNRnFQOEhmalRualh3WTViUWZiSmN0Nk9JektnTUhvdEYvSGUxZWdzYXhIU3FHNndmZG1RNXg4TnlURkZxQmNwMmlTb3dIUjN5azUrMzZoRjd2WEFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJGSURPXzJfMCIsIkZJRE9fMl8xX1BSRSIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsImxhcmdlQmxvYktleSIsImNyZWRCbG9iIiwibWluUGluTGVuZ3RoIl0sImFhZ3VpZCI6IjdkMTM1MWE2ZTA5NzQ4NTJiOGJmYzlhYzVjOWNlNGEzIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJ1diI6ZmFsc2UsInBpblV2QXV0aFRva2VuIjp0cnVlLCJsYXJnZUJsb2JzIjp0cnVlLCJiaW9FbnJvbGwiOmZhbHNlLCJ1c2VyVmVyaWZpY2F0aW9uTWdtdFByZXZpZXciOmZhbHNlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6ZmFsc2UsImFsd2F5c1V2Ijp0cnVlfSwibWF4TXNnU2l6ZSI6MTI4MCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0Ijo4LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjEyOCwidHJhbnNwb3J0cyI6WyJ1c2IiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotOH0seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTM1fV0sIm1heFNlcmlhbGl6ZWRMYXJnZUJsb2JBcnJheSI6MTAyNCwibWluUElOTGVuZ3RoIjo2LCJmaXJtd2FyZVZlcnNpb24iOjMyOTIyMiwibWF4Q3JlZEJsb2JMZW5ndGgiOjMyLCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6MSwicHJlZmVycmVkUGxhdGZvcm1VdkF0dGVtcHRzIjozLCJ1dk1vZGFsaXR5IjoyLCJyZW1haW5pbmdEaXNjb3ZlcmFibGVDcmVkZW50aWFscyI6MjV9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0wNi0wNCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjkyMjIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWXViaUtleSBCaW8gU2VyaWVzIC0gTXVsdGktcHJvdG9jb2wgRWRpdGlvbiIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjQwNjA0MDA1IiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMDYtMDQiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5MjIyfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI0LTA2LTA0In0seyJhYWlkIjoiMDAyNCMxNTYwIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWlkIjoiMDAyNCMxNTYwIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkcrRG1PVFBLZXlzdG9yZUFuZHJvaWQifSwiZGVzY3JpcHRpb24iOiJHK0QgbU9UUEtleXN0b3JlQW5kcm9pZCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6InVhZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9LHsibWFqb3IiOjEsIm1pbm9yIjoyfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X2RlciJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfZGVyIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJzb2Z0d2FyZSJdLCJhdHRhY2htZW50SGludCI6WyJpbnRlcm5hbCJdLCJ0Y0Rpc3BsYXkiOlsiYW55Il0sInRjRGlzcGxheUNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbiIsImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlCbURDQ0FUMENCR1FkUFIwd0NnWUlLb1pJemowRUF3SXdWakVMTUFrR0ExVUVCaE1DU1U0eEN6QUpCZ05WQkFnTUFrMUlNUTB3Q3dZRFZRUUhEQVJRVlU1Rk1Rc3dDUVlEVlFRS0RBSkhSREVMTUFrR0ExVUVDd3dDUkZNeEVUQVBCZ05WQkFNTUNFRlZWRWhTVDA5VU1CNFhEVEl6TURNeU5EQTJNRE13T1ZvWERUUXpNRE15TkRBMk1ETXdPVm93VmpFTE1Ba0dBMVVFQmhNQ1NVNHhDekFKQmdOVkJBZ01BazFJTVEwd0N3WURWUVFIREFSUVZVNUZNUXN3Q1FZRFZRUUtEQUpIUkRFTE1Ba0dBMVVFQ3d3Q1JGTXhFVEFQQmdOVkJBTU1DRUZWVkVoU1QwOVVNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVTSXBJL2RLWUNEWWh6d0Qyd1NmWUFPYi9uTmFpUGNXRjIxdnhaay9UZ0QwT0p0Y0QrT1BtNjRud1pkRldTRVlTVzdpT3FucG1KeWRlOG1nci90bkFpekFLQmdncWhrak9QUVFEQWdOSkFEQkdBaUVBM2J2aGF6UUZQd215WGx4Sy94Q1hmaDdnMVgxRW9iTEMzTCsyR09SeHA3Z0NJUUNmTkVUWC9tMkJlYlJMWEk0TE1QMUVRR1BYRkRmN09rNzRVN3hiaU00VmtBPT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCwvOWovNEFBUVNrWkpSZ0FCQVFBQUFRQUJBQUQvMndCREFBTUNBZ01DQWdNREF3TUVBd01FQlFnRkJRUUVCUW9IQndZSURBb01EQXNLQ3dzTkRoSVFEUTRSRGdzTEVCWVFFUk1VRlJVVkRBOFhHQllVR0JJVUZSVC8yd0JEQVFNRUJBVUVCUWtGQlFrVURRc05GQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJUL3dnQVJDQURJQU1nREFTSUFBaEVCQXhFQi84UUFIQUFCQUFNQUF3RUJBQUFBQUFBQUFBQUFBQWNJQ1FRRkJnSUQvOFFBR3dFQkFBSURBUUVBQUFBQUFBQUFBQUFBQUFFREFnVUdCQWYvMmdBTUF3RUFBaEFERUFBQUFheWo2RjV3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVnZDNlRFQ1eExKMzZ4Rm9jNWw4bEdQU1hLc3pORE0wOU5WZE4rOFA4WmRMS0JIcGllK3ZoVHVvZk5YTkF2bStNeVVtUm4xZFFaZ0FITTRjdzFMaWNQMVZMZVF1alR6SjJkSk0zMzVwaGFhVWplYWJLVVJ2ZFY3U1oxZFRTNlN1Rmt3US9iSHI3NjV0MkYxbWRrODdOUHFFK1NZeUhSMWdBTEIxOGx2eVRlalBYUXFtdWdzZ1lkVlZwMXlhSGZYTFczdlVRazJwYUlxZDVNcllxSVBmamRMTm1UWXkyK0NUb3hzYjZJdHRTdTZsQTlCWkhBNnFvQUJ5T09OSFAycFBlbmpycy84QXhtbmNZYkxDaWE2ejB4U21hWnQ5SFJNbFVSdmRGK3F6b1l1czNsZEtWMXU2aWFtM3Q3UHJ0Sm4wR2VudS9BOURXR3h4QUFBZXY4Z3hYS2svT1pxYzlKbWJLbHBNelpHa3pOa2FUTTJScE53TTZFcmgxajh3Mk9JZXlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQLzhRQUtCQUFBUU1EQXdRQkJRRUFBQUFBQUFBQUJRQUVCZ0lEQnhVWElBRVFFellSRWhZd05IQTEvOW9BQ0FFQkFBRUZBdjZiR0lTUmxOWWJGZ1VaUzNGTW1sUGd0S1cyYmZTTHJFMVBTdVcrQzB2QmFYZ3RMd1dsNExTY2lHTHlrMWlnT1Jwa3NRSXhlOStHQVFtcVVQRzdlMDBzUG43WWEzZTVkQnRxOTV4YU9aWUhGQXl4SjdjcEJreGhIaTI4NHRiemkxdk9MVEhMUUozVzFkMkgxaDZ5c0VXczVoMXlLRU9iUnJjZk9nWWl5QkZTV1F0NHlLUFNGN0kzdkRFbnR5eWY3dHdqY29mUmg0Q05ONUFNbEFLM0l3bHkzVlp1Y3NWTU9qMlhMTFJtcDlJKzFHSmoxZE8waDViU0hsQW9DVmpwOVRYSGhZOUpkcER5MmtQSnppdzQwYmRzT21hbTVkWkhZZEI4dzVZWStOZVU0K3JwTHV6YjlibWUvd0FQdGpYNnZ2VlpmK1B1dmxpNGgwWVM5WmRDVk16M2FuSnNqb3AzUGtpM1BraXg1TlRCNlJLZFRvMkZsRzU4a1c1OGtWL0pFaGRXTzJIQWxWNGdzaGtPaEtYOHJGK3RyZmpSeTFJd3g0RzJrUXlTUlIvRjNYREVudHl5Zjd0d2lzTmZTbHlJRk53ZytZU0dpTkE2cXV0ZFhPRVRHN0UzN0IrM0tOTDdlMDZ0UGNYeDk1WHRDQ1cwSUpiUWdrQmdBdU9QMGF4MEpQRXRvUVMyaEJMYUVFbU9NNCt4cnRXcUxGc29WYWhtVXhsbDZXRXZ3eDZVa0l6ZkM1ZUdQS1c4cURPcWRkR3JYUnExMGF0ZEdyWFJxMTBhdGRHclhScTEwYW5NdEN0S1RlWUI3V2s5Skg4a2MvMDMvOFFBSFJFQUFnSUNBd0VBQUFBQUFBQUFBQUFBQUFFUkVnSVFJQ0V4VVAvYUFBZ0JBd0VCUHdINnl4azZSS0Y3cVVTaDR6eWZTMURFbVpFUFdMTXVDOU10V1JZYmdzaHVSZW1YbkZPU3BWaXhZMUpWbFdKUU56eXNXTEZpeFlibjdILy94QUF1RVFBQkF3RUZCZ1VGQVFBQUFBQUFBQUFDQUFFREJBVVJGU0ZTRWhRZ01VRlJFeUl5WVlFUUpGQng4RFAvMmdBSUFRSUJBVDhCL0xWbGQ0UGtqNXI3aXB6emRSMGxReHM3aXFyL0FBUDlLT001WDJRelc1MU9sYnJVam5zdW9LK1dGN2p6WlJtTWdzWTh1Q1UvQ2pjK3lwWXQ2bXVMOXVoRmhhNFZ2VUd0bFUxTUpRa3pFck9rR09WM043c2x2Y0d0a0VvUytoNzFhRk14ZzhyYzJWbFN2ZThYendWWTdVQnN5c3MyR1oyZnI5TUxtN3QvZkNrczZXTVhOM2JKUVFGVUZzQXNMbTd0L2ZDb2FZNlpuWStxcXpZSUNkMVpZM3pYKzNEVlU1VXNtMFBMb29iVUc2NlZsaWNIdXA3UWhraUlHNnFobkNua2NqN0xFNFBkUGFrSFM5Vk5VZFdWM1RzcUttM2VQemMzNFNGamJaSkhaY1JaaTl5d2tkYXdrZGF3a2Rhd2tkYXdrTlNocElvUFMyZjVqLy9FQUVNUUFBRURBZ0FIQ3dvRUJRVUFBQUFBQUFFQ0F3UUFFUkFTRXlFeFFaTUZJQ0lqTXpWUllaR2gwUlF3TWpSU1luR0J3ZUZDYzdHeVUzQ1NzL0JVY25TQ3d2L2FBQWdCQVFBR1B3TCtadDJFWktNRHdwRG5vL0xwb0Y5czdvUGUwOTZQOU5XWWlNTWpvUTJCWEpwN0szV0lRa0h5VnpWN3VBQWdFWkJlbjVWeWFleXVUVDJWeWFleXVUVDJWeWFleXJQd283dzk5b0dsS2loVzU3M1MzblIvU2ZwVnBUZU15bzhCOXZPaFhtaTlJdW5jNWs4TWo4WjlrVWhsbHRMVFNCWktFaXdGRitVK2lPMFB4dUt0UlMwSkVyM20yN0R2SXIxS1oySjhhbXcyNGtwSzMyVk5ncXhiQzQrT0Fma0wrbUI2QTlGa09PTld1cEdMYk9MOVBYWHFVenNUNDE2bE03RStOZXBUT3hQalFTNFg0blc2M203cjBsNk84aDlwV2hiYXJpbkk4bHBMekxnc3BDcTRGM0lMMmRsdzZ2ZFBYNWhtT3lNWjExWVFrZFpxUEJZOUZwTmlmYU9zMDVNZjRYNFcyOWExZEZHUk1keHZaUVBSUU9nRGVqOGhmMHdUL2czL0FHMDcwUFJYT0xQS01xOUZZL3pYVE0yTWVBdlNrNlVuV0RVaUV1Mk1vWGJWN0s5UnBUYXhpclNiRUhVZCswdFF1STdhbmZwOWNIa1FQRXcwZ1c5NDV6OU1JVUJIc2MvSzFvamJXdEViYTBKY3NNNUhKcVR3RjNPQ1ZOaWhuSU9ZbUxqdVdPWklGYUkyMXJSRzJ0T3Z1Q1BpTnBLMVdjMURDL3VjbzhWSVJqcEh2ajdmcGduQklzbDBoNGZNWisrKy9tOVBrMy9vWU4xY2JUbHpoYS8yanpHNlAvSGMvYWNPNXVMMHIvWXJBbTMrbVJmdE8vanBVYkprSVV6OVIzZ1lFYm9KVHhNdE9jKytNMzZXd2hJbml3emNpMzRWemdOZzM0VnpnTmczNFVJczJYbG1Na3BXTGswcHovSVlKY1NITXlVZEdKaXB5U0RwUURyRmM0RFlOK0ZjNERZTitGT011VGdwdHhKU29aRkdnL0xESjNVV25pbVU1SkI2VkhUM2ZyZzNRV2szUTJySkQvcUxIdnZ2MjNtbFlqamFncEtocUlxUE5hdGRZc3RQc3IxaW5ZVWtjQmVoUTBvVnFJb3R5bTd0RThXK24wRi81MGIwZmtMK21DZjhHLzdhZDZBeWd0UlFlTWtxSEJIdzZUVE1PS25GWmFGdXM5WnArVVNNc1JpTXA2VjZ2R2lwUnVvNXlUNWc0MTNJTHZMTkQ5dzY2Ymt4WFV2TUxGMHFUU21ubTB1dHEwb1dMZzBWQ0txT1QvQmNJN3EweXRyOXEweXRyOXEweXRyOXE4c2lGL0s0cFR4aTdqOU1EczZTWDhzNWErSXV3ekMzUjFWcGxiWDdWcGxiWDdWcGxiWDdVRmVSbVFvZngxbFhkb3BLRzBKYlFuTUVwRmdLY2xUSFF5eWpXZGZVS3l5cnR4bTh6TFhzanArUG1zZUU5WkI5TmxlZEN2bFFUUGJYQWQxbTJPanV6MWR2ZFNJZW92QUd1Y0l1MlRYT0VYYkpybkNMdGsxemhGMnlhNXdpN1pOYzRSZHNtdWNJdTJUWE9FWGJKcm5DTHRrMWQzZFNJT29PaFI3QlJUdWN5dWE3cVd2Z0k4YXkwNTdIdDZMWXpJUjhCL003LzhRQUtCQUJBQUVCQlFnREFRRUFBQUFBQUFBQUFSRUFJVEZCVVdFUWNZR1JvY0h3OFNBdzBiRncvOW9BQ0FFQkFBRS9JZjhBVFlqbzRhRFRNME9NVVk2M3ZFdEJaRythQkZ1RCtoWHE5RzVFQ0hOc3U1YUJOUFY2OVhyMWV2VjY5WHBjNVlmMnltWk8wUloxVCtpZ1o0VGdoT0RvL1VUQnU2Ti9OL1hBMzBhNDBTT1FWZXFyQWQyL1NvTUhndXJPbXhHRWhucENBdVczNFVTTHFobGhNU1BnUm8wYnB0c3QzTzZYYWFvYmlWQ0VKTWllWTBERTAzaG0wSFU0eDg5ZHFYSkJSbUVTRGJpdXF5MWJwaXdNTHVIOVhBR2wzT1c3Y3N2NjQvWlJ3VnNvU3VPTStZcWZ1ZVFmTkZDcUp2d3ZVNkxUKzI3K0JoUG5aa0gzT3c5WjhOaFplaGFZbkpIRGJBNW9QQlhuUHl2T2ZsRTJERzh4RmthYkhtUkdJR3NqTWE4NStWNXo4cS9VUEZnbHcwMnBOa1pmSjN6NU5uSHZJQ2ZtRkIzVzYzN2JEYVBNNVlkSTIrV3krdFFGYkp0TjF0c1diY3g2Zm5QQXBYTk9vTGpzVEJEQnVCRWNRdWUwb1lJR0Z0b1VKMnJCTE1pTFFkaG5BcFlNbGFqZXUxQ2hpRmdYa0lTekx0U2dKZGtyRzdZd3dnNFowSHpOQXZSaUpIblNoQ0MyNjcvUkdzY3VYWWMwZnBqVGxMTWRodndkVnYyVWNJTkJyQ2NUK0E0eFZqMWxONWptSzIxYXRFV01kQmUwS2Z3MlFsWDZISU9oZURMUmRic2tuRHFLeC9IU2lKOUJadFJxMHk4eFBOSWNDdlNxZWxVOUtvYlFOaElHK3lHekRkZjdBRUdnVjZWVDBxbnBWTU5JRWp1Y1NnREZEZ1pBVVNXcmJ4WUJpdVZMUWxudkVhc2VCaDlTK1laNWg1dFNHc0RkRkx4c09YR2pVNS9CRm12UHU5ZWZkNjgrNzE1OTNyejd2WG4zZXZQdTllZmQ2OCs3MHlpbjY0TFdCdVFSMXR0Ym9OOVNVNlZHV0J2di93Qk8vOW9BREFNQkFBSUFBd0FBQUJENzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc2b01qZzR4dlAzNzc2bXB6eXl2emVwcjc3NzNqNVQvejVlL3o3NzY0cHY4QXZxLzZJRysrKyt2Yy93RC9BUDhBdGY4QXZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnYveEFBZUVRRUFBZ0VGQVFFQUFBQUFBQUFBQUFBQkFCRXhFQ0FoVVdGQlVQL2FBQWdCQXdFQlB4RDliTWRCcXpNRVVNejJsbjJCaEVScDJCYlVXQ1puaExCeEFweFBLSW1aUTFEOTJjUkR4ckFXb0F0MGl3aHNib0RUSHJwQVJqQ2pXaG01dEdvTXpMOVMvVXYxTDlTL1VYTDlqLy9FQUNnUkFRQUJBUVVJQXdFQkFBQUFBQUFBQUFFQUVTRkJZWEhoSURGUmdaR2hzZEhCOFBGUUVQL2FBQWdCQWdFQlB4RCtzYjMxOXVOWURvN3RQUkZVMEU4NXp2a29kVnZtTjdlNCtLdEpVKzN3N3pKK0dLelZiR0dSWXRWcVcvVEZnWXFCZFAzSUM5VWFGWVhRVkZ1WlAxSVVvMGNJWE5OOWlZNVFEbXlsSGgrT213M0JIaTJYQVN6T3g4ZjR1MTdqRkhrRmJGOVIrZ0lWdDVGdzhaKzR3cGcxRzZ2eUV2QkJPYlpFVWJoZVRZUVNqTngycXE0WVpuZVVWZGVKZnl1bjFHc3JRMUNGbXNxRlVVV1pucWZVYXdCVUxrZTRNSlM0TGJmbGpaeWNPQnk4N0wwS2pjeHFxd2J6dmIzbUs2YXpGZE5aaXVtc3hYVFdGUzE5Q1czbkcxMDVmMlAveEFBbUVBRUFBUU1EQkFNQUF3RUFBQUFBQUFBQkVRQWhNUkJCWVNCUmNZRXd3ZkJ3a2FIUi85b0FDQUVCQUFFL0VQNU52Y1U0WmtpNStBdEtRMEhyQlo3cWVlSnZtaml0QU5lZ3I5TjlVekdNQWpzc2FTR2t4QjZOZnB2cXYwMzFYNmI2cjlOOVYrbStxUE1VSnIvU2l4OCtub2c0b3FtQlBia3NER05zYktTRS9FUzB4VEhBMkZrU3VnRUlRU1dYaGNBc0ZXVmZUUjJDdDFGaEs3RlRKdEFwZUhTREN6SjNmdWhNRVRBdkhRME9MbTlsbzFnREprZWhnd1lORCt4RStXRGxBNzBicDU3b2NJa201a3B0M2Z0ckNNSUlSQkVRYVAwS1V3WFdXdWtPSWt2RDRIRmR3ZFBnbEwxakF1SlYrWStDWUxCVS9pd09BVjJ4WmdNaERBTVlQajFCdElnWWx2QktXL3lORkpCRzJwc20xREE5Z29xd2gyR09BWVQwa0paR25pa0p3MUIySndaQnZSaWJlaEFnN2lKMWx0aWtraUw4Z2prYU1CRlEvd0JuZndjKzdyZFBhWXNKSi92WFBObGdkOEJoYTdSOXNSSjNWSkhLeEd1ZVpGYjFkREVac0syckx6MFpDaW8ya203OGVoQ1Q0RVN0Kyt2S3FKTjd2K2s2QkxKVGRPSFdmaDl2eDNzYlJXZTQ5YU5PRVFoK2R1c2FOUzBFSS9RT1JveUlTbDNuMmhYZDR1b0dIeXFBUUd1VEphRkd6YTdZWkxhWTBtV2Z0ZHcwbDExekJiV1RKdjFEc3NuQ2twSkVkU0lDSmFXUzQ0ZkhReXIrR1RFbnRNOTllTTVkRERjZ0gxUXhFUzVLQ2IydUp6dUZNcVNEUzhTbkNMd2lsbFRBYkNyc283UE5oeVF2eHRGQktCUWhuc0xlRzNKQzlaejhJVjNkQkxLZTdZQ0NwckxSYXZGbTkza1RLVWdYTWtKbFYzVlorQis2c1RGWURZRmJXRGRGQWJBcE1HNG1RYktCRVJCSzRGbnVpRWllU21BRmRLOEo0UUhRelpzek5WeXkvQmNzYjZFbW1DUEo4Sk1pK1o2R2JOblBNMCt4Y3oyRkRVS0JkZ0FBNEtrYUNmT3dDOGFBU3RYcVk2U3Q0Yk1Zb3hBU0IrSjlnd1RGNWlJV21BdE1TVkRZb0tKM0N1ZG1KM1pvRWVKZ2J5WWV6NHYvQVA4QS93RC9BUDhBL3dEL0FQZ2dSTDZ4UWVpb2IwUlYvQmI4anNvQTNiRW1Nall3SlVxQ1ZqK1R2Ly9aIn0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTA0LTE2In1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wNC0xNiJ9LHsiYWFndWlkIjoiMDdhOWY4OWMtNjQwNy00NTk0LTlkNTYtNjIxZDVmMWUzNThiIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiIwN2E5Zjg5Yy02NDA3LTQ1OTQtOWQ1Ni02MjFkNWYxZTM1OGIiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiTlhQIFNlbWljb25kdWN0cm9zIEZJRE8yIENvbmZvcm1hbmNlIFRlc3RpbmcgQ1RBUDIgQXV0aGVudGljYXRvIn0sImRlc2NyaXB0aW9uIjoiTlhQIFNlbWljb25kdWN0cm9zIEZJRE8yIENvbmZvcm1hbmNlIFRlc3RpbmcgQ1RBUDIgQXV0aGVudGljYXRvciIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19zdXJyb2dhdGUiLCJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUI3ekNDQVpXZ0F3SUJBZ0lVYitWdS8zM2N2Mlh1dnVjWnFBbXpPVXV0Z2drd0NnWUlLb1pJemowRUF3SXdUVEVMTUFrR0ExVUVCaE1DVlZNeEd6QVpCZ05WQkFvTUVrNVlVQ0JUWlcxcFkyOXVaSFZqZEc5eWN6RU9NQXdHQTFVRUN3d0ZRMEVnUVVFeEVUQVBCZ05WQkFNTUNFTkJJRVpKUkU4eU1CNFhEVEU1TURZeU56QTRNek15TmxvWERUTTVNRFl5TWpBNE16TXlObG93VFRFTE1Ba0dBMVVFQmhNQ1ZWTXhHekFaQmdOVkJBb01FazVZVUNCVFpXMXBZMjl1WkhWamRHOXljekVPTUF3R0ExVUVDd3dGUTBFZ1FVRXhFVEFQQmdOVkJBTU1DRU5CSUVaSlJFOHlNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVIQVhNWkxiM0NlTXdPeGcvVmNVendIeDF3a3VUQTRFS290b2loczZPUWVUU2NsS1hvWGNZcmo2WDhQQlQ4VlZxSHVsMytuQktqRGlCSStZeHIrcWYrcU5UTUZFd0hRWURWUjBPQkJZRUZFTXVMcWVCY3hpR05nTHpTbXhOREJnQlVmbkpNQjhHQTFVZEl3UVlNQmFBRkVNdUxxZUJjeGlHTmdMelNteE5EQmdCVWZuSk1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0NnWUlLb1pJemowRUF3SURTQUF3UlFJaEFKbmx3WUpwaVhYWklZbG12ZS9uanF4RVdoK0tkVXNZOWI5WElmS3Nsd3lJQWlBSFRkaHNVVkY0T3BpcHg4MElqK1V4RFJTdGxtZWdVQUVuTHJta2EzVjh4UT09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQU1jQUFBQkpDQVlBQUFDSnZ6SnVBQUFBQm1KTFIwUUEvd0QvQVArZ3ZhZVRBQUFOQjBsRVFWUjQydTNkZVZDVTV4MEg4R2NSaVdmVTRGRk4xWWcxWGtWQmc4NGtrMlE2MDhrazArblladW8wK2FlMWptM050Sm5VQm8zQTJtNUh2RFU2UmxEQUF5OUkxK2hlSENycWN1OXlzNHVnN0x1STkzMVVRRVE1M3Y2ZVpUR29DUHZ1dnMreno3djdNdk1kR0pSOTM0ZDVQK3o3L3A0TDhabm9MVDROelJVOTZlZ25pTEdQQTV0bURZNWZGeEVpZHI3YnRHVFN5alJiU0ZkVXV2UGp2TkcrcUdQbmdydWZSK1NCMVpPV3hVZUVpSjBrL1poSkpWWVU0bzBVV2RDa1BDc2EwUldMQlEwbTlndUZpM2d2aENlUTYvd0pOSjRsSEkvMC9SWWMyalQ3U2x6c2ZGN01iTi93Y1VtTWp1TzdwWFdWb1hZMnpiWjlvNjRiRnFPelgrOStIc3VUbHhxLzNqV1hGelBMRSthMEZGWXFiRVZXeERPVSt4QkxVUlhTdytjdDVpcTBHTDUraCtQUWE2emk0T0VkNUN5ZmhZYXhnZ1BPNTlNR1RaQ1pBZzZJTFE5K0F3cGFiWU5qYm4zeEhFamdTRDAxOGpSak1IcExFMFJiYkVWL3JxaEF3OW5DMFprTTNvZ0NXY0dCeituTXpwQWk4amc0UGxyTExhSFJybFVhKzF3NFhodHBIUDlPL3ZrbHVOZ2FKWVRqZVNoVktNbGNqV2F3aEFPL2d5U3loS005VFhFdGFWMUVFMmtjTVhydW51cVlmVFRKTmkxVTgvM2dPS1U5SFY5c0hHZEsraGRJRkViM3RBS1MrUEp5TklvTkhKMzVpaFVjT1BVcHc0M0VjZUJvdVFNazI2VFUyNzk4MWJIRnhCR25tV2oyQVJnL3BncmRnUWY4VDFqQjBjNW5vTit3Z2dQeTVQc3RvWFhFY1VDVVd0c3ZTYlJIZFpUN0tieCtBMmtjM3lTR041b3Rpc3MraGFNemJZQmtLUXM0Y0pwNUE1ckhDQTYrUlI5WUNSZDNCMmtjRUp2S1dEOUE5SWR3TGZkRGI4Y1ZDNGNtWi9ocEg0VFJsUTdJWDFuQTBWbmlOYUFKTE9EQU1TV056NmVBZzFmcU9KWElNSDdkMXpIRndMSDI4TFJheDMyNjcrSndBREZiME85WXdPRzFFbTlQT0RyUzBlMDk2K2MrSUkwRDhrUjV6RFpkbE5zcGRmVVF3SGFKQW82TzNMTEFNaCtIMFpVSHBncjBsdmR4ZENhVGRvbTNKeHc0TjlSRGN5amd3TzhlMldMMGZVQm4zd1pYanVjcGpyMXA0L0w4QkVaWHRLemdvRjdpZlJVT1hDelFiWjkrbGpTT3pyNFAreDg4YVVPMHhoYUdlK0JKNDRqYUhYWVhialZ1K1JrT3Z1UXNlbzhOSEoxQS9zRUFEdjZwSWFBbVBuWmVHMmtja0xzcVErMUl0MjZuVkh3QTlHa1V1WG9zVDNCa0Znek85VGNZamxpUWdSMGNGRXU4dmVIQXFVZ2VtME1CQjg1dTkyNm5iRXVGSE1kZEhPdFRwbG9kWlU1L3hHRkY3WGh3SXlzNHFKVjQrOExSa1lZYWtqZUUzYVNBb3lOYVovK0ZvSGNOR09rTFAvZVFOSTdJaERtdHBzb0FtNS9DY0FRR0xrYXhoSU5LaWJjdkhEajNqdzdNcDRBRFlqLy9aUWIzbW9DSDhCU2h4M0FIeDZIalk4NzRNd3huekt6aElGN2lkUVVIVG1iY2xITHlPQndQNXpFdVBZVHJiTDl5NS9XRjRsaTFML1FHUElRM3lqaFFtN0VhRFdFTEIrRVNyNnM0MnRNVjlidldSTFNReGdGcFZtcTR5YjJkOHpMMWxZSHcvK3cwY0dRVkRjaVZZWFFHaHJsL3dDSU9ZaVZlVjNIZzJBNEdHeW5nd0FNVFQvUStzTkFXNis1ckM4R3g5VWlJMlRtVXdwV0xCL2VhcXlrbUhjWkE1Y0VGaXdzRlR5a0IrVHViT0FpVmVJWGd3RVdDdzV0bVh5YU9BOTllNmV5ZjlUanRWY3ZOd0QzcnBIRXNUNXp6MkZTaHNMdjh3R3BCbTcwMVBnN1A3aXV1UXU4Q2xCMXdMZzBFY1d4bkZ3ZUJFcTlBSFB3amJWQUpEUnlRbXl2VExvMTQvbVI1aFZKbnovWGtkVjNGb1Q0ZExHaGdvVGR4ZFAvQUpWYzRuMkpDUTlyMUxPTVF2Y1FyRkFkT1R2d2tNd1VjdUhxMTgvbUhjRzZ4cDYvcENnNlkzVmNIRjhNaktlSndBRG1IZ3VHYzdBU0E1TENPUTlRU3J6czRPbURXWU9LNmQ1ckk0K0RhWTdUMmR4MTlHakI3RU04aXBJRWp0NngvcWVCK0FJWndPSUJZMFVJQ1BlVVZVc0FoV29uWEhSdzRGMU9IWlZQQWdXUDlTMEpwZitnSlR4Ymo5ZnJDRWErWjROYTBWOVp3R0tHNlNXQnVPeWNOSENLVmVOM0ZBV2s5K3UzTVdnbzQ4TWpkZzdnSG5UUU9tTjMzMEdSUlhQVUZITTduRDdFN0wyOUtDUWRPa3BkdzhDMjZRTXVyWmcyS2lVUE05SVpEbnp2TTdkbDlUT0t3b2tOaXIxWWlOUnc0eTd5QkE2ZG96NXQ1dm9Bajl1RDBHay82QzFqRUFlT2g0a1RHOFVpS09OcmhBZjIzM3NBQnBlVjdNR3Z3bnBSeFJDYk1iYyt2Q0tqMmFHQWVnemljL1I1K2o2T3p4SnVPNWxQSEFibDFaRWl1bEhFa3A0LzFlSWlJak1QekZCTUdjcG5Yb1hHMGNVRGF0TnVtV2FTSUkyWjMyQjI4WHBNdjRwRGFiZFhmSUdzSkE2a1dVdUlWQ1FmZmFnaXc3Vnd6NzZuVWNKdzBEUlJsVGppVE9LeG9uN1J3OEVnQm53OFRCWktCanJ0YTRoVUxCMDdWdmpIWlVzS3hJWFZLbVdPV200L2ljSzZ3TGgwY2pndlNpQWJBMXdVc2xIakZ4QUd6Qmh2M2J3eS9JUVVjc0czQTA4TEtBRTYwbVhKc2xuTHJKWWZEY1ZFYTBFaTRNRG5DUVA1SkV3Zk9RODJBUWluZ1NEazVXdFFWQzFuRFVWcU5KZ2dZYnM4V0RpZVFhZkM5Kzk0czhZcU5BK2ZVenNuRkxPTll0VGYwTWx6TURiNk1BODVwQllHQmgzZXA0WEJPeWYwQUwrRHNyUkl2Q1J5d25jSEYrTTBmbTFqRmNhWTR5Q1Q2QWdRTTRjZy9qNGFLVVlIcklYVlVjVGd1MEF6MGhiZEt2Q1J3NE5RY21aWEJJbzRkbVlzeWlhek93ZEtRZGRpUWh0QmtwM0xxT0p6dklPUkx2SnFYdDdraWhLTWpmZmVIVE9LSVZTODVCUVB5bW53UmgxcU4rZ0dNalFUbmtCdTlnd09YZU5QUUlkb2xYaEk0OEZJK0xEOXpwSndhbGVzck9PQzZDY2d2UitNQS9PZHdIb1dFNTVBbmV3V0h0MHE4QkhEOEwzbDkrRzJXY1VUdW10TldZQWs0SjY4b0l2Z1B3RmRldytHTkVxL1lPTHFXRDJXOWxMcys1ZTFxc1RvQS9XaHBuZys5aW9OMmlWZE1IRS8wZ1dmalkrZTNTNldIL0hqaG9BTDVvbmM5aGRYb0RhL2o2RmJpYlNGZDRoVVJSOXV4YlROcXBEUjhKR3BQMkFPNFY3OGpYL2d1cGJMcnd2UTZEdWQ1TENKOGUzVURyNFVseG11OXVObU5WQVllN2tzZks3OTd1UEs4WVVYcm1NTGhQSmN0aElFOEVtRk0xVjJZOE5RZ1JSeVJzSTFaVG1sZ2hReWc5LzBCVFZWb09uczRhSlI0UFV4UEcyeEthYkxUbXNOVDdYNndBYVluTVhYL2E4ME1Eb29sWHJmU3JPdGY3Z3R6eUhVNXc3SmxCSys4cFZyQUxBN0hPUjFEd1JSS3ZFTFRrcnA1VnIwdjRGaVJGTlpjWkZYY2tERzhsQ3JjMGNnMERrb2xYa0dwVHhsdXBMRnVsYXViWVhxNk5FK2NacUpaeHZEOG5od2xsUzhzUGNzcURrb2xYdGRHM2hvVWx4UFdSalJUd1BFMFNtZC9EejVmcGJIaVlVNVoveklaeGJOODI5TUZ5Q3dPU2lYZVBwTVZON21FeG5LZ3NOcWhZOHdTckpuN2V4bzRWUHRuWG9PTDRyRU1BK1dVbHFMKzlIQmt3T1lmWWcwNHkwQ3gzb0xSb0FtaXRNbzZkMEZsdUQ2b3E4Mnc2bm9hallXazFhZUNqZjYrLzUrWlE2Ky82aTh6K3ppOFZPS0ZQbzJtZzV2Q3J0SEFFYTIzZjlLOXpUSHBGeWJDOTV0STQxaWVHUDdFVkttNDZLY3djdkVXQnIzZHRqQ1B3MXNsM3BvRG83S3A3T3lrNVRROXRSbTJJWWltc1hrTmJIbG05VE1VdUo5bmc3R3ZWV3VrZ3VOWmlUY2QyV2pBZUdvSXFJVzFxVm9wNEdpRVo0enhQYlZYcGE0T2duK3ZwckVuSUd5V2FmS0gzbS9veDhnb3JrUXpYWDNnbFF3T2lpWGVEc1AycVJZcUcyYnF1RjVYVFluUzFyN3Y3cFlFUW5Bbzk0YmVOcFBkWTgrYnFZY2g2RnRMcldpYTBHcVFwSERRS1BIZU9Ub29qOFkrNUpEeWhXcStYMS90aGR1cnZUUzJXajU0ZkxTckt5SSt3QXNRTUpnYW1LU1VEeEIwK0xZSmxnaGRiSzVHTXp5NTBDU0hnMlNKdHlNZDNkdmJ3MHJxQkhDMHJkTFhSYmpTVnJpOWVnUCsvMjNTT0p3cnNGZTVzSm5rR3VRUEgxTEZRYXJFVzdwN1hLNFFHRzdqMEhKeFF0b2FyYmN0SW8zRE1Xc3dkU3JldTZOTnhpRjFISjFyOFI0VTY1eGJESUZWWGJQN0NPTzRxc3JnWGhmWVdBWDgzR25TT0hEU0M0Ymt5RGdramtQa0VtL3JrYTB6YlVKaHVJVURlc0RkYVd2VXNicTM0ZWRiU09OWXVYdDJnOW1xdUNuamtEZ09zVXE4Vi84N05Oc2RHTUp4Mk5NOGFTdjgvR3JTT0hBU2RXOFd5RGg4QUllakhabG9xcnNsWHRoci9FYmkycm1ORkhBMEt6WGNaRS9hdVV4OVpTQzhqcDAwanM2QmlZSGxNZzRmd09GSmlUYy9ZV0todXpDRTRJalcybVBFYUtmU3dIMUVBOGQvOXMvRXkvcTN5RGg4QUlkeitaMC9Dam5QSmsxUXNTY3dCT0NveGozZVlyVlRxYk9sa3NhQm84a2UvdExBeEdJTFdpdmprQ0FPWjV0V3UzaWVqMU0yejdwSUFVY0g3dWtXczQzUnVndGo0SFh2azhheElqRzgyV1JSWEpaeCtBb09GMHU4OXBRUlJrOWh1SVFEZXJoSnRCUG1mM3hCR2dmT2R6K0VsTWc0ZkFSSHR4SnZmaSt6K3k3c1doUFJRZ0hIYmR6RFRhS05LaFVmb05SeWhhUng0SndwQ2pMTE9Id0VSMThsM2hNN2ZsWW1Cb3krY0NpMXRqK1JiT01xYlYwb25sNUxHc2Uva2tPdmRXMW5JT1B3QVJ6ZFNyejNldHJMandLTzA3aG5tM1FiNFRoYlNPUEFTVDA1TWx2RzRVTTRuQldzOTUrVmVOUFF3K1NONGJjbzRHakJQZG8wMm9lbjEwTG5ZRDFwSEpFSmMxb0xLZ0pxWlJ3K2hNTUo1RE04VDZQNy91RWtjU2oxdGxpYTdZT0gvZ1drY2VCcytuNkt4WC82T2RKUUpGdzBXUVN5Z0xXMk5ta0RJM2V0amNpRUN6cEx6R3piL09rKytNdWQ5V000YmVRSnkyRGE3WXZXY1R1Nm44Znk1R1VKWCsrY2t5VjJralBIZk80UE52NFBXaFFFbWhmOWttY0FBQUFBU1VWT1JLNUNZSUk9IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiRklET18yXzAiLCJVMkZfVjIiXSwiZXh0ZW5zaW9ucyI6WyJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiIwN2E5Zjg5YzY0MDc0NTk0OWQ1NjYyMWQ1ZjFlMzU4YiIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlfSwibWF4TXNnU2l6ZSI6MTQ3MiwicGluVXZBdXRoUHJvdG9jb2xzIjpbMV19fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAxOS0wNy0xMSIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiTlhQIFNlbWljb25kdWN0b3JzIEZJRE8yIFRlc3RpbmcgQXV0aGVudGljYW9yIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAxOTAyMDYwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMy42IiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjEuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAxOS0wNy0xMSJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMTktMDctMTEifSx7ImFhZ3VpZCI6ImQ2MWQzYjg3LTNlN2MtNGFlYS05YzUwLTQ0MWMzNzE5MDNhZCIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiZDYxZDNiODctM2U3Yy00YWVhLTljNTAtNDQxYzM3MTkwM2FkIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IktleVZhdWx0IFNlY3AyNTZSMSBGSURPMiBDVEFQMiBBdXRoZW50aWNhdG9yIn0sImRlc2NyaXB0aW9uIjoiS2V5VmF1bHQgU2VjcDI1NlIxIEZJRE8yIENUQVAyIEF1dGhlbnRpY2F0b3IiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MiwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJ2b2ljZXByaW50X2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSJdLCJpc0ZyZXNoVXNlclZlcmlmaWNhdGlvblJlcXVpcmVkIjp0cnVlLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIl0sInRjRGlzcGxheSI6WyJhbnkiLCJoYXJkd2FyZSJdLCJ0Y0Rpc3BsYXlDb250ZW50VHlwZSI6InRleHQvcGxhaW4iLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQjZqQ0NBWkFDQ1FESVJQTzNSN1Z0TERBS0JnZ3Foa2pPUFFRREFqQjhNUXN3Q1FZRFZRUUdFd0pUU3pFUk1BOEdBMVVFQ2d3SVEzSmhlVzl1YVdNeElqQWdCZ05WQkFzTUdVRjFkR2hsYm5ScFkyRjBiM0lnUVhSMFpYTjBZWFJwYjI0eEZUQVRCZ05WQkFNTURHTnlZWGx2Ym1sakxtTnZiVEVmTUIwR0NTcUdTSWIzRFFFSkFSWVFhVzVtYjBCamNtRjViMjVwWXk1cGJ6QWdGdzB5TURBMk1UQXhNVFF5TWpoYUdBOHlNRGN3TURVeU9URXhOREl5T0Zvd2ZERUxNQWtHQTFVRUJoTUNVMHN4RVRBUEJnTlZCQW9NQ0VOeVlYbHZibWxqTVNJd0lBWURWUVFMREJsQmRYUm9aVzUwYVdOaGRHOXlJRUYwZEdWemRHRjBhVzl1TVJVd0V3WURWUVFEREF4amNtRjViMjVwWXk1amIyMHhIekFkQmdrcWhraUc5dzBCQ1FFV0VHbHVabTlBWTNKaGVXOXVhV011YVc4d1dUQVRCZ2NxaGtqT1BRSUJCZ2dxaGtqT1BRTUJCd05DQUFTVXc0UnQ2MTYzSFJ1WGVCcXhkN1BIY2Y1ZzlDbVMwaGNqazNqR1BrckE2VXpMU0t5YTZuNnlPMloxRWJzVFh0VTFSZ0FjUThVNjM1blByNHkvZkxHd01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lRQ3FhSU8vMWNkS3FlZzNCL3F3QVBHb2dDWFVpb2ZzNDZPNDR2U0ZuUFdGbWdJZ0QyRW4rcUlMejA2VHpQTm4wMEpPZ21nSWpMY1ZCeTVHU28yczN0WW15SkE9Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUxjQUFBQTZDQVlBQUFEeVFNaVpBQUFBQkdkQlRVRUFBTEdPZlB0Umt3QUFBQ0JqU0ZKTkFBQ0hEZ0FBakJJQUFRRlVBQUNDS3dBQWZUNEFBTyt2QUFBNjZ3QUFGSmNJSE5QSEFBQU1GbWxEUTFCSlEwTWdVSEp2Wm1sc1pRQUFXTU90bDNkVVU4a2V4K2VXRkVKQ0MwUkFTdWdkS2RLbDl5SWdIV3lFSkVBb0VSS0NpaDFaVkhBdHFJaUFEVjBCc2EwRmtFVkZSTEd3Q1BiK3NLQ2lySXNGR3lwdlVrRFg4OTRmNzV3MzU4eTluL3p1YjM3ei9jMmRPNWtCUU5HR2xaT1RoU29Ca00zUEUwUUYrakFURXBPWXBDY0FBUVFBZ0R3d1lyR0ZPZDZSa1dId0Z4aTcvN084dndHOVlibHFKWTRGL3JlaXpPRUsyUUFna1pCVE9FSjJOdVNqQU9EcTdCeEJIZ0NFTG1nM21KdVhJK1loeUtvQ0tCQUFJaTdtTkNtcml6bEZ5cFlTbjVnb1g4aGVBSkNwTEpZZ0RRQUZzVzVtUGpzTnhsRVFhN1RoYzNoOHlOV1FQZGpwTEE3a2U1QXRzN1BuUUZZa1F6Wk4rU0ZPMmo5aXBvekhaTEhTeGxtYWk2U1EvWGpDbkN6V2ZQRC9MdGxab3JFKzlHR2xwZ3VDb3NRNXczR3J5NXdUS21ZcTVGWitTbmdFWkJYSTUza2NpYitZNzZTTGdtSmwvb05zb1M4Y004QUFBQVVjbGw4b1pDM0lERkZtckxlTTdWZ0NTVnZvajRiejhvSmpaSndpbUJNbGk0L204N1BDdzJSeFZxWnpnOGQ0RzFmb0h6M21rOG9MQ0lZTVp4cDZ0Q0E5Smw2cUUrM0k1OFdGUTFhQTNDUE1qQTZWdFgxUWtPNGJQdVlqRUVXSk5SdENmcGNxQ0lpUyttRHEyY0t4dkRCck5rdlNGNXdMbUZkZWVreVF0QzJXd0JVbWhJMXA0SEQ5L0tVYU1BNlhIeXZUaHNIWjVSTWxhMXVja3hVcDg4ZTJjYk1DbzZUampCMFM1a2VQdGIyU0J5ZVlkQnl3Unhtc2tFaFpYKzl6OGlKanBOcHdGSVFCWCtBSG1FQUVhd3FZQXpJQXIzdXdhUkQra2o0SkFDd2dBR21BQzZ4a2xyRVc4WkluZkhpTkJnWGdMMGhjSUJ4djV5TjV5Z1g1MFA1MTNDcTlXb0ZVeWROOFNZdE04QlJ5TnE2SmUrQnVlQmk4ZXNGcWh6dmpMbVB0bUlwanZSTDlpWDdFSUdJQTBXeGNCeHVxem9KVkFIai93UllLNzF5WW5WZ0xmeXlINy9FSVR3bTloRWVFNjRRK3dtMFFCNTVJb3NpOFp2TUtCVDhwWjRLcG9BOUdDNUJsbC9KamRyZ3hWTzJBKytEdVVEL1Vqak53VFdDRlQ0YVplT09lTURjSGFQMVJvV2hjMi9leC9May9zZW9mODVIWkZjd1ZIR1FxVXNiZmpPKzQxODlSZkg4WUl3NjhoLzdzaWEzRWptQ2QyR25zQXRhS05RRW1kZ3ByeHJxd0UySWVud2xQSkROaHJMY29pYlpNR0ljMzVtUFRZRE5nOCtXbnZsbXkvc1hqSmN6anpzc1Rmd3krYzNMbUMzaHA2WGxNYjdnYWM1bkJmTGExSmRQT3hzNEdBUEhhTGwwNjNqSWthemJDdVBqZGx0c0dnRXNKTktaOXQ3RU1BRGorRkFENisrODJnemR3dXE4RDRFUVBXeVRJbDlyRXl6SDh4NkFBUmZoVmFBQWRZQUJNWVQ1MndCRzRBUy9nRDBKQUJJZ0JpV0FXSFBGMGtBMDF6d1VMd1RKUURFckJPckFKVklMdFlCZW9BL3ZCWWRBRVdzRnBjQTVjQWozZ09yZ0w1MFUvZUFtR3dIc3dnaUFJQ2FFaGRFUUQwVVdNRUF2RURuRkdQQkIvSkF5SlFoS1JaQ1FONFNNaVpDR3lIQ2xGeXBCS1pDZFNqL3lPSEVkT0l4ZVFYdVEyOGhBWlFONGduMUVNcGFLcXFEWnFqRTVDblZGdk5CU05RV2VpYVdndVdvQVdvV3ZRQ3JRRzNZYzJvcWZSUytoMXRBOTlpUTVqQUpQSEdKZ2Vab1U1WTc1WUJKYUVwV0lDYkRGV2dwVmpOZGdCckFXKzU2dFlIemFJZmNLSk9CMW40bFp3YmdiaHNUZ2J6OFVYNDZ2eFNyd09iOFE3OEt2NFEzd0kvMGFnRWJRSUZnUlhRakFoZ1pCR21Fc29KcFFUOWhDT0VjN0M3NmFmOEo1SUpES0lKa1FuK0YwbUVqT0lDNGlyaVZ1SkI0bHR4RjdpWStJd2lVVFNJRm1RM0VrUkpCWXBqMVJNMmtMYVJ6cEZ1a0xxSjMwa3k1TjF5WGJrQUhJU21VOHVKSmVUOTVKUGtxK1FuNUZINUpUa2pPUmM1U0xrT0hMejVkYks3Wlpya2JzczF5ODNRbEdtbUZEY0tUR1VETW95U2dYbEFPVXM1UjdscmJ5OHZMNjhpL3cwZVo3OFV2a0srVVB5NStVZnluK2lxbEROcWI3VUdWUVJkUTIxbHRwR3ZVMTlTNlBSakdsZXRDUmFIbTBOclo1Mmh2YUE5bEdCcm1DdEVLekFVVmlpVUtYUXFIQkY0WldpbktLUm9yZmlMTVVDeFhMRkk0cVhGUWVWNUpTTWxYeVZXRXFMbGFxVWppdmRWQnBXcGl2YktrY29aeXV2VnQ2cmZFSDV1UXBKeFZqRlg0V2pVcVN5UytXTXltTTZSamVnKzlMWjlPWDAzZlN6OUg1Vm9xcUphckJxaG1xcDZuN1ZidFVoTlJXMXlXcHhhdlBVcXRST3FQVXhNSVl4STVpUnhWakxPTXk0d2ZnOFFYdUM5d1R1aEZVVERreTRNdUdEK2tSMUwzV3Vlb242UWZYcjZwODFtQnIrR3BrYTZ6V2FOTzVyNHBybW10TTA1MnB1MHp5ck9UaFJkYUxiUlBiRWtvbUhKOTdSUXJYTXRhSzBGbWp0MHVyU0d0YlcwUTdVenRIZW9uMUdlMUNIb2VPbGs2R3pVZWVrem9BdVhkZERsNmU3VWZlVTdndW1HdE9ibWNXc1lIWXdoL1MwOUlMMFJIbzc5YnIxUnZSTjlHUDFDL1VQNnQ4M29CZzRHNlFhYkRSb054Z3kxRFdjYXJqUXNNSHdqcEdja2JOUnV0Rm1vMDZqRDhZbXh2SEdLNHliakorYnFKc0VteFNZTkpqY002V1plcHJtbXRhWVhqTWptam1iWlpwdE5lc3hSODBkek5QTnE4d3ZXNkFXamhZOGk2MFd2WllFU3hkTHZtV041VTBycXBXM1ZiNVZnOVZEYTRaMW1IV2hkWlAxcTBtR2s1SW1yWi9VT2VtYmpZTk5sczF1bTd1MktyWWh0b1cyTGJadjdNenQySFpWZHRmc2FmWUI5a3ZzbSsxZlQ3YVl6SjI4YmZJdEI3ckRWSWNWRHUwT1h4MmRIQVdPQnh3SG5BeWRrcDJxblc0NnF6cEhPcTkyUHU5Q2NQRnhXZUxTNnZMSjFkRTF6L1d3Njk5dVZtNlpibnZkbms4eG1jS2RzbnZLWTNkOWQ1YjdUdmMrRDZaSHNzY09qejVQUFUrV1o0M25JeThETDQ3WEhxOW4zbWJlR2Q3N3ZGLzUyUGdJZkk3NWZQQjE5VjNrMithSCtRWDZsZmgxKzZ2NHgvcFgrajhJMEE5SUMyZ0lHQXAwQ0Z3UTJCWkVDQW9OV2g5ME0xZzdtQjFjSHp3VTRoU3lLS1FqbEJvYUhWb1oraWpNUEV3UTFqSVZuUm95ZGNQVWUrRkc0Znp3cGdnUUVSeXhJZUorcEVsa2J1UWYwNGpUSXFkVlRYc2FaUnUxTUtvem1oNDlPM3B2OVBzWW41aTFNWGRqVFdORnNlMXhpbkV6NHVyalBzVDd4WmZGOXlWTVNsaVVjQ2xSTTVHWDJKeEVTb3BMMnBNMFBOMS8rcWJwL1RNY1poVFB1REhUWk9hOG1SZG1hYzdLbW5WaXR1SnMxdXdqeVlUaytPUzl5VjlZRWF3YTFuQktjRXAxeWhEYmw3MlovWkxqeGRuSUdlQzZjOHU0ejFMZFU4dFNuNmU1cDIxSUcwajNUQzlQSCtUNThpcDVyek9DTXJabmZNaU15S3pOSE0yS3p6cVlUYzVPemo3T1YrRm44anZtNk15Wk42YzN4eUtuT0tjdjF6VjNVKzZRSUZTd1I0Z0lad3FiODFUaE5xZExaQ3I2UmZRdzN5Ty9Ldi9qM0xpNVIrWXB6K1BQNjVwdlBuL1YvR2NGQVFXL0xjQVhzQmUwTDlSYnVHemh3MFhlaTNZdVJoYW5MRzVmWXJDa2FFbi8wc0NsZGNzb3l6S1gvVmxvVTFoVytHNTUvUEtXSXUyaXBVV1Bmd244cGFGWW9WaFFmSE9GMjRydEsvR1Z2SlhkcSt4WGJWbjFyWVJUY3JIVXByUzg5TXRxOXVxTHY5citXdkhyNkpyVU5kMXJIZGR1VzBkY3gxOTNZNzNuK3JveTViS0Nzc2NicG01bzNNamNXTEx4M2FiWm15NlVUeTdmdnBteVdiUzVyeUtzb25tTDRaWjFXNzVVcGxkZXIvS3BPbGl0VmIycStzTld6dFlyMjd5MkhkaXV2YjEwKytjZHZCMjNkZ2J1Ykt3eHJpbmZSZHlWdit2cDdyamRuYjg1LzFhL1IzTlA2WjZ2dGZ6YXZycW91bzU2cC9yNnZWcDcxemFnRGFLR2dYMHo5dlhzOTl2ZmZNRHF3TTZEaklPbGg4QWgwYUVYdnlmL2Z1Tnc2T0gySTg1SERodzFPbHA5akg2c3BCRnBuTjg0MUpUZTFOZWMyTng3UE9SNGU0dGJ5N0UvclArb2JkVnJyVHFoZG1MdFNjckpvcE9qcHdwT0RiZmx0QTJlVGp2OXVIMTIrOTB6Q1dldWRVenI2RDRiZXZiOHVZQnpaenE5TzArZGR6L2Zlc0gxd3ZHTHpoZWJMamxlYXV4eTZEcjJwOE9meDdvZHV4c3ZPMTF1N25IcGFlbWQwbnZ5aXVlVjAxZjlycDY3Rm56dDB2WHc2NzAzWW0vY3VqbmpadDh0enEzbnQ3TnV2NzZUZjJmazd0SjdoSHNsOTVYdWx6L1FlbER6TDdOL0hleHo3RHZ4ME85aDE2UG9SM2Nmc3grL2ZDSjg4cVcvNkNudGFma3ozV2YxeisyZXR3NEVEUFM4bVA2aS8yWE95NUhCNHIrVS82cCtaZnJxNk45ZWYzY05KUXoxdnhhOEhuMnorcTNHMjlwM2s5KzFEMGNPUDNpZi9YN2tROGxIalk5MW41dy9kWDZPLy94c1pPNFgwcGVLcjJaZlc3NkZmcnMzbWowNm1zTVNzQ1JiQVF4V05EVVZnRGUxQU5BUzRkNmhCd0NLZ3ZUc0pTbUk5THdvSWZEZldIbytreFJIQUdyaHVTdDJLUUJoY0kreURWWWp5RlI0RjIrOVk3d0FhbTgvWG1WRm1HcHZKNDFGaFNjWXdzZlIwYmZhQUpCYUFQZ3FHQjBkMlRvNituVTNGSHNiZ0xaYzZabFBYSWh3ZjcvRFdrdzkvYTkrT25rQjhHOHpJbXoxaFRLZFBRQUFBQWx3U0ZsekFBQVdKQUFBRmlRQm14WEdGQUFBRzg1SlJFRlVlRjd0WFFkMFZWWFdQbmw1NllVMGVhUVFrcENFR25vVkVBR1ZJaVJVYVk2QWpJcm9xQWc2T282S3VzQ0ZNemhpSFVCVW1pTEQvTXJJaUlDQTRDQzlRNUNhVU5Jb1VVZ2w3ZjdmdC9QZU0rVGRRRG9FMzE1cnIzUEx1ZmZkZTg5Mzl0bjc3SDMyVTNheTArMUtEdWJ5ZDBXYk52M29zRy9mUHFlTkc5Yzd1cmk0K2pab0VHaEtTRGpwdEdYTEZ0Znc4UEJnZkJiUHJLd3M0NFVMNTUxUnVqZHExQ2c0THkvZldGaFlZTGg2OWFwamRuYTI4Y3FWSzg2ZW5wN3VmbjUrZC9DZUJRVkZ4cUtpSXV2MzFMUWlRMzUrbnFONTE0WU1Cb05tTkRvWGNOc0JWeG1OeGdLVVdrcEtTcEttYVhrQkFRRzV6czR1aFU1T1RvV09qb2E4aElTRU0yRmhZVG5lM3ZYeWNmZk1jK2ZPSmZYbzBUTW5JaUlpZCtuU3hZa1BQdmlIdkY2OWVoZjA2M2Rmb2Z5QW5XNGZjSzlldlZydDNyM2JKVEV4MFQ4ek16TVkyNEd1cnE1QlNVbEpmdlhxK1RRQ1VEMThmSHdpYzNKeTNRRE9BRGMzVjM4Q2xTQXUvZ3hhOFkxS0VjQ2xIQjBkQ1VZcEFVTGw2K3NyeDQxR0orWHE2aUxuM04zZDVSeUo1eDJJMkJ0UVFVR0JRaWVSYlR5VDdHZG41NkRNVjdtNXVlcnk1Y3R5ckxDd0NGeWc4dkx5cEc1cHd1OXFIaDRlQlhpT2JOUTk2K1hsbFpPUmNTWEIzOS8vTXU1enJuNzkrdWZSOGM2MmJkczJMU01qSTZGUG56NVhSb3dZa1c4eW1jeDN1RDJwVG9IN1AvOVpaWGozM1hjQlV1L21odzRkaWtEamh6czRHQ0xSOE5Gb05IOFhGNWNJZ01XcHNMRHdtdmNpK0hBTzdLcE1wdnJLeDhkWE5XaGdBZ2o5d0Q3cWpqdnVVUFhxMVZOZVh0N0szOThQcFpjQ1dLU0VkSlpyQ1dhV3pzN081cnZXRHVYazVDaDBRZ0UyT3dJQmo4NnJmdm5sRjNYaHdrVTVscHFhb2k1ZFNzZitCWldTa2l4bGV2b3Y2Q0RzS0RJNFdBbnZVWVQzeXNmeEV4Z1pVdkNlcC9IOWpxSGpKd0w4cDFKVHovODhiZHEwN0w1OTd5MHlYMUpuNlpZRTk1RWpSOVhNbVRNODB0TXZ4UncvZmp3R0Rkd0czRHcvUDc4Skd0a0U2V3NvS1duZDNOeEVXalpzMkZCQnJWREJ3Y0VLcW9RS0NncFNnWUdCQUhJRE9VK3dVcnBpMkJmSnlwS2dJUUFJb2w5Ly9WVkJra3RKOEdSbFpRdEFDQ2lDQ0w4clFLTlU1WEhXdFVoYzNnZWRTcDZIOXlvUG9XT0s1Q2V4NDdBVGVudDd5eWhBZG5WMWszZno4dkpFcC9PWERzZk9CcFZGT2lNQUtmVUJVbHp2Ykgwbmxud3V2Z2ZVSEpXY25Lek9uRG1qVHA4K0xYenExQ25aNS9uU293RitsNnBRR3Znb251a0l2bGs4ZnV0QVpHVGtrZGpZMlBTUkkwZldHZERmRXVDZVBuMjYwNDgvL3RnRUtrVTNTT0NPQUVrWGZQU20yTGJxckd3d05tamp4bzFWaXhZdFZOT216VlIwZEpUQ1J4ZFFzNkVKRGhJQnlNWk5TMHV6TnU3NTgrZWx2SFRwRW82bG9tRi9VUmN2WGhUZzV1WmVoVFRNRUdEVU5TTDRDWHFvWGdycUIwYWhBQlVTRWlMYkRSdUd5Z2dWR2hvcW5kd3lDcEhZSWZrdENQYWZmLzVaSFR0MkRPVlJGUjkvV0lEUGpsdVNjRjBSUnEyekFQOWhkTG85QVFIK3UyTmlZdllNSERqdzNQRGh3MjlKd044VWNNK1lNY080YXRXcW1Jc1gwL3RCTjd3ckp5ZTdDeVNqVDBsd1Vjcmk0Nm5PblR1ckRoMDZxTmF0V3lzWVQ5S1lyRWZ3d3FoU0owNmNGRWwwOHVRSktYbU1UTkNXbGtxL1o2STZSZUZBb0hOVTQ3ZU1qbzVXVVZGUklqRFlHU3pBNTdjN2NlS0VPbmp3b05xN2Q2L2FzMmVQT256NHNFajZrbTBFNmE2aG5WSmdpMnlIaXJjREk4b1BvYUdOOWkxYjlubXV1Y3BOcFZvRDk0UUpFK3J2MkxHakg2UkZmd3pidlFIbStpVS9GTldHVHAwNnFaNDllNnJ1M2JzRHpHMHc1SHFKaEVsTlRWWDc5dTFUKy9mdmx3OGVIMzlFSk02Vks1Zk5WOXVwS2tSRG1kOC9NakpLTlcvZVRJUUttU01rN1JHZXA2b0ZGVkZ0Mzc1ZGJkdTJUVzNac2tXRUNWUkY4MTJLQ1pJOUF3Sm9COHJONkVUcnVuWHJ0bnZXckZrM1JjclVLTGhIalJyVkFCOWlNQXlnRWVBZTBGV2R6S2RFTW5mcTFGbjE3dDFiOWVyVkMyQnVKVktaK214OGZMejYzLy8rSng5dzU4NWRrTVJuYlF3ak85VThVZHJUZnFHZzZkU3BvK3JZc2FOcTA2YU42UDhVVEVsSlNlcW5uN2FxalJzM3FBMGJOZ2pZTFhZSGlhb2tiSUxMQVBvUDN0NzF2bW5WcXRYcUR6NTRQNW1qUkoya2NlUEd1ZU1EaklHTzl6MkdPZlpZaW1jTnZWL0RFS2o5NlU5LzByNzk5bHNOUXh5K2o2WkJ2ZEMyYjkraHZmbm1tMXIvL3YwMWZEZ05IMFd1c2ZPdHg2NnVyaHBVUk8ySko1N1F2dnh5dVhiMjdGa05nTllnZkRUbzdkcDc3NzBuN1FqaHBYZHRFZHAzZTNoNHhBc0RCZ3lNMnJKbDZ5MDVvV0ZEZmZ2MmpVUXYvenRlNmlKMjVXVUk2SGJ0Mm1sdnZQR0dkdURBQWZrQS9CRDhDQjkrK0tFMmVQQVFEYjBZZGUxZ3Jxc002YTVCSW10VHAwN1ZWcTllclVIZEZLRUY5Vk5idG15WjlzQUREMmpROVcydW83N3U3eCt3TXp3OGZNcUlFU09DY096V0l4aDhyVTBtMDVkNFNTcGY4dUNSa1pIYUs2Kzhvc0VJRVRCZnZYcFYyN1Jwa3padDJqUU5lcHlBM2xMWHpyY1grL241UVdnTjFqNzc3RE10TFMxTmdKNmVucTR0WHJ4WXUvZmVlNlV6bEw0R0VqMGZ1djFLZEpLQkw3MzBrbFYxdldsMDExMTN0Y1FEcmFEYkdMdnkwRU9HRE5IV3JGa2pZTTdMeXhOQVAvbmtrMXJEaGczdHFzYnZrS0ZyYXdNR0RCQmdVdzB0S2lyU1RwdzRvZjMxcjMvVk1NcmIxQ2RHSU9VVElpSWlubnZpaVNjbHJLRldDYjNTQjJCOUQvcTBTR29QRDAvdDhjY25hMGVQSHBXSFAzMzZ0S2doMGRIUmRrRGIyY3ErdnI3YXhJa1R0UzFidG9oNm1wV1ZWUkFiRy91eXI2L2ZVYjM2bnA1ZUdjRFozNkd5QkdLLzVnbjY4MUJZdnluWTFCalBNSDc4ZUEwV3NvQjYrL2J0MnBneFl6UTNOemViQjdXem5TMXNNQmkwVHAwNmFZc1dMYWE2OGpvd1pBU3VIb0k2ODdOZWZlQXBLeXdzZkhaYzNHQmY3RmMvUGYvODgrNGhJU0VmNGNFNHp5TkdJbnNnUWIxcjF5NnhqdTE2dEowcndoelYyN2R2bjNMKy9IbnhIRDMyMkdQR1pzMmFUZkR5OGpwVHNwNkZQVHc4TGpSdDJuVHluRGx6aXFQVHFvUEdqaDBiNHVQajh4TTJCY0EwQ2psOWg0ZVNZWVpXTDgvWjJjNFZaWTcrTDd6d3doQnNXMm44K0FuZWpSbzFtbVZSZTBzeU93VHN2SjJ3OTFwaC80WjAzWG5HTysrOHMvSGh3NGZYWHI1OE9ZTHhDM1BuemxWUVBTUzg5TkZISDVWSi9LcFFXRmlZaW91TEV5ZE84K2JOeFRtQUY1Q1lCK2p3Nm9jZmZsQmZmZldWT25ueXBQbUttaWM2a3U2KysyNU9iWXJEZ2pFWnNPYk5aKzFVM2VUcDZia0M3VDdDdkN2RW1LQ1JJMGQyM0x0Mzc2ZkFYZ3Z6WVNzQitMbWhvYUV2elp3NTh4M281R1hHdFpRSjdsR2pSb1YrKysyM1AxeTVjaVdjd0Y2K2ZMazArSnR2dnFsZWUrMjFLbmtNR2RmQWUrREJKSjZCTGx3RzY5RE56a2VpeXpjc3JKRjR5QmdFdFhMbFN2WHl5eTlMY0U5TkVRRThhZElrTldYS0ZJbS80Ty9TM2N3T3pBaEJPOVVZWlRabzBNQUVBWmR0M3JmU0k0ODg0ckZtelpvUHpwMDdOdzRxc1Bsb01WRUlRdkI4QlNrK2J0bXlaUm5td3plbXQ5NTZ5d01LL2c1c2lnR3daTWtTc1hEcGxlS3h5aktIbFhIanhsbW5oV2lFMGlnMW1Vd2xkSFlIK1UwNmQ4YU9mVkRidkhtejFLVnpBT0Nya1JrWWpCcmE3dDI3NVhjZ0xiU0hIMzZZdzU4OGgxNTlPMWNmOHh0RHlQWER0aTY5Kys2N0RoQ0d6d0lmWXUrVlp1QjBMOW9yQk52bEk2Z0w3Nk9RaXg5Ly9IRnA5TmRmZjcxS3dPSzFyNzc2cWpoMXFLK1BIajFhZEM2OXVpV1pMejk4K0hBdE9UbFpycDAxYTFhMWdvNlcrNFVMRjZUejhGM3ROa1R0TXd6SnQxQ1dTUXNXTEdEazRxTUF1UGhVU2pNRTBUSGc2Y1plenU3ZHUzY0Q2S1NYMFBsQ0tidCsvZnB5QWZGNlBIbnlaQUhua1NOSHhJT3BWK2Q2akE2bkhUeDRVRG9halZxOU9oVmxXTjhDYktnZVdvY09IWFRyMkxubUdXb0pKeXl1UzU5ODhvbHEwcVRKYzJVSldHOXY3MjFUcDA3MXhIYlpCT1YrSXdxNWdQRWY5RFp5MkxZY3F3d3o5aUFySzB0QUZCNGVybHVuUEJ3U0VxSWxKQ1JvdWJtNVd1Zk9uWFhybEpjWkFMUno1MDR0SXlORHBMZGVIVHZYRG50NWVXV3NXUEh2NG1EeTY5RGJiNy90QUhWMUdUWjE3OU9vVWFOUFVPb1RsUHJPR1BLcHVVdXdDNlUyOVczdVY1YlowOWF1WFN0UysvNzdCK3JXcVFqMzd0MWJnd0VxcnYycXFDY2NTVGdLTUVwUjc3eWRhNDhkSFkzYXdJR3h6YkI5UTRKK0h1RGg0V0VOeml2SnhHN256bDM3WXR1V2dvS0NQa0FoRmVsdFpPTVRUSlpqbFdGS1JScWpESE4xY0tnZVhYbjU4dVh5Yk9pTXV1ZHZ4SXlEb1dmMTBLRkR1b0U4ZHE1OWJ0dTIzU0NVNWFLR0RVT2ZScUY3SDE5ZnYzM3g4ZkhGNncxTEVsU1NCQlJTYWY3OCtTSzVPWHhiamxXRzU4eVpJNUZoOTl4enIrNzV5dkNkZDk0cDRQNzQ0NDkxejkrSTJTbElsTjU2NSsxYyt3elZkeHJLY3RHVUtjLzZ1YnU3Y3hXMnpYMm9LUUFmUGJEOUc4MllNY01Fc1c2ZGJ1RTBIYWZoTFB1VlpVcEhoajY2dUxqb25xOE1VOW9tSmlhSzlLMk0yMy9tekptaTJrQkgwejJ2eDZ4TDlRcWptL3crdDd0MnZkT21Ib1VCbytENjl1MHIrM1BuenBQcHo5TDF5SC81eTB2MDBNazJwMWxuejU2dE95UFZ0bTFiYmMyYXRYSnZDQ0NvWkp0bDRVZnBlbldaQXdNRFgwZFpMdUpDYjVQSjlCOXM2dDRMdHRsN0tKVlZmSC8zM1pvb0NEUHJQbGVVVjlVenlLVmtUTFhBZFk5MGlsUVhjZUV2RjY0eWRRUFgvbFdVWU9CYTB4MlVsK2hnc2poNit2ZnZMNHRxNlVVdFRYeFA1aENaT25XYWZNT1JJeDlRQnc0Y01KKzlsaElURTlRenp6eWp2TDNycWFlZWVrcEJFT2l1d09kNjBmRHdNRHJXdU5KSkdZMk82dXpacythenR3ZGxabWFXdXlIWjdwRGNPODI3TnBTZG5kMlpwUlhNVU9xdldiRExWQWwwZzFlRkNHNG5KeWRwbk9vbWdwUGVUYnJzSzBwY3c4ZnI5WUNrUjVhY0p3dzlpSXNiRENBK0RhQ05GczhxYzZKWWlLNTd1dXRmZlBFRnlVZnkvdnNmcU9lZWUxNGRPWEpFdko0bENTT0JXckhpMytyTEw1Y3JTSHIxNDQ4L29sd2lhUm5vbWJVUXZiVlF3ZEJKUmpHNFNNclJvOGZJYndVRTFIN0ljMDFSL2ZxbUNpMnM5UEh4TFRQMncyaDBDbU5wQlhkQlFmNDFybmdNOTljczlxd3NZWmlWeHFsdXN0eVR6MWxSZ3ZxRjl5My91MUZhTXU4SkY4RjZlTGlyWnMyYXFYbno1cW4wOUVzQ1lBc3gvWVFsM1FTelY5MTMzNzFxd29UeElpUisrdW5hcWR5RWhBVGNNMDNTVmd3YU5GQTFiOTVDUmdlT0ppVTd6Q3V2dkNMWEwxejRtZVFoQ1Fqd3h5ajduZVJjZWU2NWNxdXBkWURLSjJnc1pGWkhkUWxDUzdCc0JiZkI0RkNjdE01TU1DWWxtMUZWaUN2WkdZUENGZFRWVGN5NlJNbkpScTRvTVZha0lubnlQdjMwVXhraEdPQkZsWU9KYXlaTmVrd2sraE5QVERiWFVwSitncEk3SWlKY2t2NnNXdlZmZ0hLaDh2UHpVMTI2ZERIWEt1N3dsT1I4aDUwN2Q2cmx5LzhsaVhHWTZvMnFEQk1KV1dqNjlPa3lpajcwMEVQcTJMR2pBdlFCQS9yTFBkOTY2Mi9tV25XZnJsUXdUMGRTVWxLWjRDd3NMRWd6YnhZVDlMbW9rdlBHOUNSeStzNnlYMW1tMDRYR0g0WUszZk9WWVQ0bm40OU9vY3E0eXptRFEwY1E0MGYwenVzeGpUa2EyUFNPRGhzMlRGWjlBOGcyOVdnUXpwbnpyclppeFFyeHF0SkoxSzFiTjV0NjVMRmp4MnF3YTJRNUZzdXk1dHhwUkI0N2RseVc4VDMvL1BQYW5qMTdHTitzVzdldU1qcnJHeWpMVGRDN1AwZWhleThJMDRVb2Y1UGNVNlpNWWFvc2EyUVdKVW1USmsyc0tjb3FTd3hicFpScTFTckdmS1RxMUxScFU4bVV0SFhyVnB1a01PV2hEUnMyaXI3ZXAwOGY4NUViRXlVeUU5TXd6dUdiYjc2UkJFSFVqMHNUalU2bU1KczllellNeGtTMWFORWlHMzNiUW55SHQ5OStXN0pudmZQT082SkRVNnFYSm9ZRzAzamw3M0lVWVVob1NkWGxkaUNBMVNZcXNDeDY3YlhYWFNFMDdqUHYyaEJHMVA4emIvNUc2RDFXMS91Zi8veG44U3FpWVd4NlJrV1lxM1NLNTZRWDZKNnZERnZtemhsUXBYZitSZ3pqVUlLM0tJbExqbFoydm5rTVFUb1VaYm1vZGV1MkQ2SFF2UTlVNmJOTGxpeXhEY0NQakl4OEJvVlVZdUlWZ3B2NUtDekhLc05VRzZDTFNveEs2OVp0ZE90VWhHSE1hWm1abWFLV1ZHWHVmTWFNR2ZKK3NiR3h1dWZ0WEh0TUFYUC8vWVBhWVB1R05IbnlaUGQ2OWVvbFl0UG1QbFFKWVpoUHhMWXRqUjQ5dXI2Ym01dlY4N05qeHc3dCtQSGpWWGJBOU92WFQxendlL2JzWmMvU3JWTWU5dlQwMUtDS0NDaUhEaDJxVzZlOHpOWFlaODZjRWQyWkFWbDZkZXhjT3d6TVpYL3d3VWZ1Mkw0dXpaOC9ud0w0UTJ6cTNzZGtNdjN3M1hkcnk1NCtpNGlJbUk5Q0toTkFWQ21najl2Y3FLTDhqMy84USs1RnoxNWxBRTVnZi8zMTEzS1BlZlBtVllzNndiZ1pHcFpjcUFBZFZyZU9uV3VlWWRqdlFubGRncUNsclRVQjdTNkJmYVVaQnZiWk1XUEdYSC9Sd29nUkkrcWpJdGRWQ1lDWVpJZUIvSFFCODFobG1kTC9peSsrRUhEUzJvK0ppZEd0cDhjTXVkMjJiWnRjdTJyVnFtcE5IL0hnZ3crS3lzUmtNV1hOYXRpNVpobDIzVHNveXlRbVJHWDZCNmk0Tm91R3lSQjh2L2JxMWFzZHRtOU1yVnExK2dQMEYra2hqS2xJU1VtUk9JN0dqUnZiM0xnaVRJQlRnbE5GeWNuSmtiZ0w2dUVNZVN4ZGw1UDBUTDMyL3Z2dlN5dzRWUkhHbDNOS3JuVGRxdktnUVlQRXdHU1dySVVMRjBsSHJrek1pcDByenRTVHUzZnZYbVpFSUZRUmg2aW9xS2NBYk4xVk9CQjBLZjM3OSsrS2JSc3FjNEZ3ZUhqNGh3a0pDWTl6dTJ2WHJ1SVZTMDlQVjhPR0RaTms1RlVoNk9CY3A2bGF0bXlwNkFGUFNEZ2xEcENrcEdRNUh4UVVLTjQreG05d2Fvd3BqVjk4OFVVRnFWMXVsM2xGaVk2bW1UTm5jdFcxaEF4d2NUQ0hRcnJwK2Q3b1hPYWFkcXBteXNTM0QzejIyV2N6emZ0V0dqdDJyTmVtVFp2ZVF4dllMQkFtK2Z2N0g0bU9qaDRFTzZ4aVFWRDRNU04wSVU2R1N3OWhtQ2wrUkx0OCtiTDJ4ei8rc2NxU2piTW96Q08zYU5FaVNjRkczWmRxQjVuYk5QU1dMbDJxeGNYRjFlcTZSaTZCWXk0N1RoTmV1blJKUmhoR0VOcTVaaGlqK0wvdzNhOGhMaW5yMGFQSFBUNCtQaWV3YTlOR1ZKZURnb0tXUW9XK3JndTlUTWxOSXNBQnNMa1lzaCtteEtRemdlNWsvTENDTHE2bVRac21meWRSVmFKMHBudmI0dTdQeU1nUU43TmViNjFOb2dSbndCUWRNM2FxZm1LN3g4YkdqdmpvbzQ5V21BOHBxSWhCMEF4bXBhV2xqUUh3YlR5SW5wNWVGOFBEdzU1ZXQyN2RGK1pKZ01yVDJyVnJEYkJTWDNKMmxqOEVsVmhtdXFDNWtLRlliNTViWlYzY3pyOC81bWg4enozM3BIN3p6VGNpT1lZUEgrNERITTJFRHMwY0pEYjFqVVpqUVVoSXlBS29LdFgvNTVrZE8zYnNpV0hDT25uT2xmSHo1MytzWldmbkNNaTUxcEtMZHUyR21KMnZ4OHhIODlSVFQ4a2lGdGd4Ynd3ZE9qUVFCdU5zZDNkM3hsZmIxQ2VlQWdPRE5uYnAwcVV0OW11T3hvOGY3d1ZEOHgwTTA5WXBHYTRJNFl3R0pUbG5OTGlpbkt0S1RDYjd2TEdkaTVsVHQzVGswWWJpdERMdEt2N1RScnQyN1ZhNnVMandQd0Z0cm1FcWtZQ0FnSTBRbUgzaTQrT3ZxejVYSy9YcDA2Y2xlcUExOFR5WkVYWlBQLzIwdG4vL2ZnRjVabWFXOXZYWEsyV2hzWitmbjgzRDIvbjJaa1k2UXUzUS92blBmMHIwSm9uL3NQRHBwNTlxc05uS0hPSFJFZktoU3krNysrNjd1M0NtNnFZUmVsV2IrdlZOLzNKeUt0Ykh5WHpvenAyN1NIQVRaenhJN0sxMHZqenl5Q05RWjBKMTF3bmF1VzR6MjVRR0hvVVpKWFJxYXFxMFBVTitWNjVjS1JuRzlQNGJ4M0l0NDBWQ1EwTmZIVEprU1BsVG85VUd4Y2JHTmFHWHljdkw2eHE5aVU0YlNIbjVoeXZHZFJjV0ZvazNrSXVQcDArZkxta2ZxaHEzWXVlYng3REJSRHB6d1RYYjFES2R5d1hobjMvK3VUWnk1RWlKNGRHN2x1enA2Wm1CRHJFVStuUS8vdkV1amxVclZhc3V3Ny9wMjdWcjErQUxGeTZNZzdUdWpaZTFQakNuMWVpWUdUUm9rQ3l3NVRhUGNkWEpwazJiMUxwMTY5VG16WnNsQnRydU1MbjFDQ095eExSMzZOQlJuSHJkdTNlVGhkWUFxTVM1Y3hIMCt2WHJ4ZG5IMVVWb2UvT1YxeElFWUNhdStRNzNXaEVURS9QZmhRc1gyamh2cW90cVRGSEg4R1JDYng2Y2xaVTFIRUR2bVoyZGJmMlhLczV2TXRDZml3WG9yYnpycnJzaytKN3oybHhNelBXR1hJakFmNnBsMnVMTXpCcDdmenZwRUlITVJkUXRXOGFvOXUzYk1hNERaWHRaQWtlQnhQK0ZwMytEaTVvcG1OaE9FR2ptcTY4bDJHWHNBS2VnUzM4WEZoYTJ1bW5UcHV1aGR6UHl0TWFwVnF6UVVhTkdlUU9rZmFHRDN3dXAzQmRnRCtYYVNndEJOWkVGc3IxNjNTME9JcWdySWlWSS9COXlyaDdueWhjeUpRUmQ0N2VDazZldUU0VU0xMmN5WHpyL0NwdC9BRUJBdDJ6WlFyNC9WK0d6bmRCdUVuSkJpUXlCSmUxUVZzNXlnOEZBNlh3QllQNEpvRjRIUUsrZE5HblN5ZUhEaDlkNlk5WGVGSXVabGkxYlpsaTRjRkhFb1VPSGUyWmxaZlRFSS9USXpNeG9sSmVYWjMwV2ZsVG1PK0hLY0E2RGxCejhUM0pMR29lclYvTmtxUlZCenVWWFhEaDcvUGdKV1RtZW5KekV4YVoyMVFaRThKSmhyS21nb0dCSkp4RVZGYW1pbzZQbGY5NjV6UkhUNG9IbGNqZXFoY3d6UXdEdjNidFBjcW1rcHFhVStUMmRuVjJnTzN1Y2dZVCtDYURlMHJoeDVPYStmZTg3TW5YcTFOK2sxMDJpV2dkM2FZSWw3ZkRKSjU4MGdIVG9Dc0IyaEs3V1BqOC92elUrOUIyUUd0Ym5Zd05RbGFHRVljQVYxMUV5eFFJYmpDdkJLVEZnbkl1dVI2bkNhU1NtVDdDa1MrQ3d5YlFMWEwzT2xBb2NXcW51MU9WT1lBa1A0Q3A4Z2pRd01FZ0ZCd2ZKbWswbXJxR0E0RGZqOStIM0k5QTUydkg3bkQ1OVJvUUMxVDZPakF4TzQvZmlOK0YzMUNNYS94NGVIcWtBOGo1STVqMG1rMmxYY0hEd3Rva1RKNllOSENoSlRtOHB1dW5nMXFNRkN4WTRmdi85OXlFSER4NXFnWS9kT2lzcnN3WEFHM1AxNnRYSWpJd01Od0RTK3R3dUxxNlN5eU1zTEZ5aUNKbVppUTNLaHVYUXloUU9sRnpVL1N6RW9aYVpvU2lwR1BISFdCYU9CRlNCc3JLeVJlVzVmUGxYbk04Ulk0bHBHbGlISFNjdkx4L1g1c3ExUE1mN0VEQ0ZoZVRpamxLOGYyUEI1ZVRrRE1BVmc1U2psYnU3dThUWEFEZ0tJQkxRVW0yZzBVWWQyTmZYRCt3ajc4VnR2amV2c1FDWHhOL215TVU4SzBsSlNRSllkbTVLWk9aVFlYbnAwc1V5RFQ0U25vZnp6YjhDek1kdzczaUR3WGdnT0Rqd01Eck0vckZqLzNCeHlKQzRPcUVQM3BMZ0xvdm16Sm5qQkowdkNNTm1HQjY5QlNSUUJBRFd5R2gwak1ySXlHeUE5ZzJBUkxZdU0yS0RVNThuQUNqWnFOWUVCeGRMc3NEQUJnSVFQejlmNlFDVWdQWHErWUM5NVJwWFZ6ZndEVk5HUzBlaHBDT29pb3FLaFplbWNmdkc3ZS9vV056aG1CNk5JdzhOT1QyeWRNVE16Q3hKQk1TY01oeVpMbDY4SktOUWNuSUtPbWVxZ0prakZjSE5qbGVXQkdhejQ1c1U0dk5jd0h1blFDV01kM2YzU0w3ampvQlQ2R1NIQU9KamNYRng2ZVBIajcvcHFrVlZxRTZCKzNxMGZQa0t3K0xGaTl5Q2dnTEROMi9lN0FkcDErVFVxVk5la0g3UmtNVHVhTFFJQU5HYjZnNmtrVDhrdENNYTFXQVdlRllnVUlKU3lwTzVUY2xKeVVocHlrN0NrdEtWMHRab2RKSnpCb09EbEt4UFl1ZWc1TDBlc1ZNUWhPd0VWQVZvUnpBSFluWjJsb0NYNTZnNnNlU29BVlZOenBldFJoVy9pSWVIZXlHZUpSL3ZlUnJQamx0a0phQXovNExmT0FWMTVSZmM1d1JzbWJURXhET25ubnp5eVp4aHc0YmN0bGI1YlFQdTh0S0dEUnNNVzdkdWMxcTBhTEh6Z0FFRGdwT1N6bmx2Mzc3TjFkOC9vQ0VrcmlmVUZHY002ZDROR3pZTWhncGl6TTNOY1lLKzdncWcrQVBZOWFCK0dQUHo4eHdCU2dmVWxVV3RBUUVCUVJnbERPd2dBTjgxWVpwVW9Walh2Q3ZFcXBEV1ZySEsrR1F5cUFnZE1SbWRwQUNkSXcvR1dnR2tlV0ZCUVg0V0FKK01rU2ZYMWRXOUlDY25LeDNTUEExRzRsVW5KK01WUE1mWmJ0MjY1MEQ2WG9KNmxUcHMyTkQ4SmsyaTh6a2YvWHVtM3gyNHE1czRIdytwYUFFN0RMV3oxNEQ3OU9sRUEvVDNhNzR6UUtoRlJrWlpKU1pVQSt3MzFod2REY3lXVkVoRDJVNVZKYVgrSHdBUGdZNitjSnVJQUFBQUFFbEZUa1N1UW1DQyIsInN1cHBvcnRlZEV4dGVuc2lvbnMiOlt7ImlkIjoidHhBdXRoU2ltcGxlIiwiZmFpbF9pZl91bmtub3duIjp0cnVlfSx7ImlkIjoiY3JlZFByb3RlY3QiLCJmYWlsX2lmX3Vua25vd24iOnRydWV9LHsiaWQiOiJobWFjLXNlY3JldCIsImZhaWxfaWZfdW5rbm93biI6dHJ1ZX1dLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJGSURPXzJfMCJdLCJhYWd1aWQiOiJkNjFkM2I4Ny0zZTdjLTRhZWEtOWM1MC00NDFjMzcxOTAzYWQifX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjAtMTItMTIiLCJ1cmwiOiJodHRwczovL2NyYXlvbmljLmNvbS9rZXl2YXVsdCIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiQ3JheW9uaWMgS2V5VmF1bHQiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDIwMTExMDAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4zLjciLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMyJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMC0xMi0xMiJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjAtMTItMTIifSx7ImFhZ3VpZCI6ImM2MjEwMGRlLTc1OWItNGJmOC1iMjJiLTYzYjNlM2E4MDQwMSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiYzYyMTAwZGUtNzU5Yi00YmY4LWIyMmItNjNiM2UzYTgwNDAxIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlRva2VuIFJpbmcgMyBGSURPMiBBdXRoZW50aWNhdG9yIn0sImRlc2NyaXB0aW9uIjoiVG9rZW4gUmluZyAzIEZJRE8yIEF1dGhlbnRpY2F0b3IiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MiwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9LHsibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMzg0cjFfZWNkc2Ffc2hhMzg0X3JhdyIsInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCIsImJhc2ljX3N1cnJvZ2F0ZSJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDT3pDQ0FlR2dBd0lCQWdJVUlVM3ptdkJYZzF5SkpnMU5wL0R4OFR0M0VnOHdDZ1lJS29aSXpqMEVBd0l3ZHpFTE1Ba0dBMVVFQmhNQ1ZWTXhFVEFQQmdOVkJBZ01DRTVsZHlCWmIzSnJNUll3RkFZRFZRUUtEQTFVYjJ0bGJtbDZaU0JKYm1NdU1TSXdJQVlEVlFRTERCbEJkWFJvWlc1MGFXTmhkRzl5SUVGMGRHVnpkR0YwYVc5dU1Sa3dGd1lEVlFRRERCQlViMnRsYmlCU2FXNW5JRU5CSURBd01DQVhEVEkwTURnek1EQXpNRE0xT1ZvWUR6SXdOVGd3T0RJeU1ETXdNelU1V2pCek1Rc3dDUVlEVlFRR0V3SlZVekVSTUE4R0ExVUVDQXdJVG1WM0lGbHZjbXN4RmpBVUJnTlZCQW9NRFZSdmEyVnVhWHBsSUVsdVl5NHhJakFnQmdOVkJBc01HVUYxZEdobGJuUnBZMkYwYjNJZ1FYUjBaWE4wWVhScGIyNHhGVEFUQmdOVkJBTU1ERlJ2YTJWdUlGSnBibWNnTXpCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQkpZSGIwWEI0bU9TQjhkSEw3ek42QURNcUY2OVcwOWY1eG1YbzhNSnZBSUVFQ0kxWlZlUnBlMFBFR2pZdkloY0JDejFOaXFUTStzRmg0a05Ca082WDd5alRUQkxNQWtHQTFVZEV3UUNNQUF3SFFZRFZSME9CQllFRkRqMndZb1lKZEFjZ3JiRVpqMUNnU0p4dlR2WE1COEdBMVVkSXdRWU1CYUFGT2dhZXF5OStLQVR3a3N4NHBaZ1FzcHY2SlhDTUFvR0NDcUdTTTQ5QkFNQ0EwZ0FNRVVDSUNibUtnUDM4NzBWVEdmY2pqU1BWVWs5aVdZWjBuUG9nVHlsbEE2MktjejJBaUVBcnBqVWVLWGxGQ1VUekRQMEZ6emJSVlZ6K0wvai9HZTNvazgvV1VrR1RpST0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBRmdBQUFCWUNBSUFBQUQrOTZkakFBQUFCR2RCVFVFQUFMR1BDL3hoQlFBQUFDQmpTRkpOQUFCNkpnQUFnSVFBQVBvQUFBQ0E2QUFBZFRBQUFPcGdBQUE2bUFBQUYzQ2N1bEU4QUFBQUJtSkxSMFFBL3dEL0FQK2d2YWVUQUFBQUNYQklXWE1BQUM0akFBQXVJd0Y0cFQ5MkFBQUFCM1JKVFVVSDVnWWVGU2toSVkxcEhRQUFET0pKUkVGVWVOcnRuR21RSFZVVngvL25kdmRiTWxrbjYweVlMQVFTaHdFU1pnS1RoRkNJWmR4S2xoS0JzSlJVTEQ4b1NvRUxXcVdCS2t2NFFPa0hUWlZnNFZJS1dBcUNRdkVob3FXZ3FDUkVsaEFJaStEQVpBSlpKeVNUZWYzZTYrNXovSEJ2THkvSnpPczNtWmwwck55cXZDU3o5T3Y3NjNQUC8zL092VE1rSWpnMUFIV2lieUFyNHhRSU0wNkJNT01VQ0ROT2dURERQdEUza0hvSVFBQWdnVUFFUkVnamR3VHp4UXBFSkNKRWRPd3ZQTG5rYzVpWkhPYzRPU0pDejE4Q0lZdjIvbW4zcmtkMzJsTWRCQ2tlSVJGRXF2M1ZKZC9yS013dENndXBZM004Q1VBWUNqNlRyUTYvZG1qcjU3WUVGVllPZ1ZOd2NNamRWVnE4dnFNd3R5Z2lHRHFZc3I0MGtySGdmVkQ5MStxL0JRT2VNeTBuL25DekFnQUI1VlM1dDlSNlhWdkhobVdvdDZ3eUhSR0dBZ3RaQk9ERnRjOVY5MWJ5cy9KQk9hajd2Y3BSNVozdWxPWFREQVVXVXNNbHl3eURFSlBuOWY5ZStmS0xCemIxRitjVnVjckQ1MHNSSVZ2NWg3emN6SHpudzkwQWRFQU5IeEVaOWhINm5obWtxR2ZEVzMzMzl4YmJpbHhsUWowS2lxVEtYT1hPaDdydHlZNzRYSmRDZGtIb1FHQ2Z5YUk5RzNlOWVjZjJZbHRSZklrQkRVV0JDSVRLN3ZMWjkzWk82cGpNUHBPdDBvaHVGa0ZFTXFGc2RmaU5nVzFmZUQ0M000ZDBKb0ljS3ZlNlo2eHZuM05GcXdTaWJBVWdqZlhJSEloWUptemxEL2d2WHJNWkZsbDVTMWpxcGdhVlUrVWQ3cHdyV3hmZHRsaEV6T1RTcVdLMlFCd3BFOWR1THU5MG5Ta08rL1VUcEhKVWRXOWxjdWZVcGI4OFg4L2Y1TnAwUmpSTElHcGw0dFZidHZZL3N5L2ZVbUF2aFV4WTVBLzQxa1M3ODZGUUpsVDlCSmxWRVBxZUF5RkY3OXp6OW81ZjlCVG5UVWdyRTc0RWJuRGViN3B6TS9JcFpTS2pJR0tac05XK3YreDVjLzJyeGJZSmFXVkNVZVc5Y3NlUGxrNWRQazFTeTBRV1FTUmxZdkEvaDdmZXVNVnB6b0hTeTBScDRkZk9hRjNiSm9IQUlnQ1VNakZrQ2tSU0pnSTNlSEh0WmhCWkJVdUNkREt4MDUxMWFjdmk3M2JvMlJBUlVpZkk1QmpTWXB2N0V4RTJUUkdTSWFKVWY3eGU1Mk80ZDRtcmljMXVieW5mVWtqam81V2pxdnVyVFVzbUxidi9mS1NvSmtZSVFsK09pTWhxNEhLTjNVU3RUTHoyalpmM1A3VzN1R0JDcW1yQ29tRFFWem5WOWJzVlpGR2FhbUtFSVBSRjJlZDl6K3dIQUJWSFJPS3RpQWo2ZVRhdm50NXdSRVF5WWF2ZW4vWDAzdGRUbks5bFlsaDZJcVFJRE8rUXYveXhsWVc1UmZaWmpTaEJwZ0toQTk0ZjhQOXgxV1oyQXl1bkNLTGZSeEdJUUFDQnlDSnhnL3lzL0NYYjExRGVnaURsK294QUsxdnRmM3J2NjdkdEs4eU5xZ2thNXJzQUlrV2xkMHNkRzVZMnI1NmhVNnpnZUZ0NGRjcHdzaWszSTg5dVlPVVZpZWgwVElsWHBSUzdnVE05cDlOMXloSEtoQ2hibGQ0WjNMcnUzMDV6RGdwMUV5UUFsU1AzM2RMOEx5NXNXN2RBT0pRSkdZRlFOQUlDQWc2WVdTZ1FBQW9RUUJFa0JBRXdzM0NRMXRLalJpYUlLOEVMVjIwU2orMnB1VlErT3FjcTc1ZG5ySm5kL3YxekFSMlR4NVVhWXI3MTd4dGdFUUZFOUQ5RXY0WUQrcVV4Q3FGTXZIVERGcmVuNURTbm8yQXJyOThybkZaYzlzRDVnQW1mMGVwcjF3R2g1eC9QR3lRQ0FZbVFDQW5BNXJNcE1kVEt4TGUyN1gxeWQ3NDFsVmlTUlVFNUlJdTZIbDFwRmEzamw0bkdRQmdXQUJzb21vVUloRFdqOEZPcE9KQUFwcHJvZStEZDNudi9XNXczUWJ3NjMyMW1LNmp1cTU3Nzg2NEpwemZ4aUtxSjR3WWhpYUJBSWk3QzlaSXlJa1NFUUxxYTZIOW0zL1piWDg2M0ZvU2x6bnkwak5qazduQ1gzTmt4NDZPenRFeWdVYzl5L0NDaUp5OUNJbUNZbXhjUVM3aDJDRU50bk1RVWlIVExxTHpUM1hyakZtZUtUUmJWYjdkQVZFNjV2YVcyZGZNWGZHVlJKQlBwYy9Pb2dSQXhMQmpDT2pXSU1DUk1GaEJDNEVsUTRhR3ZFQ2RJOXZqNXoyNEtLbXcxMmFtcUNVZFZkbFdhVjgvUVhYbWdzWGJMcUlLSUl5SjZwV2lac0FBVytZTytkOGdiam9LWXZiYVhidGd5K09aQWJub3VWYnZGVnQ1Qkx6ODdmOTV2TDhDSTJpMmpDa0tHWjZHWEJoMTdhWWcyNGREYmMyL2MvdXFlamJzS2M5UHRUU2lTS2lPUXpvZTc3VWxwdS9KakNjSTRpR095Z0VCNDZHU3AvUVVIVEJiMVBkajc5Zy9mS3JSTllFOTByVHpVTXEvcHl2K2tjMko3QTEzNXNRUmhubm9VQmFGcVNwUkhqejJwWkRYUnYybi95N2RzemJjVW1FVTRuT25RTE1pbThnNzNqUFh0c3k5dGFhZ3JQNFlndU5aUWNZSkYvS3IvT29xQ25vUDducnZsMnVlc0pnc1dTV0NNaVlROWppT2lTZnRvdDg5dFhkczJncTc4R0lJdzlqSDIyc1FTdWlrNXRxZEt5b1N3YkxweWt6Y1lxSWsyKzVvcXhmYWNrRndtcHQyeXB6SmwyWlJ6N3V2VWJ6OUdNdEU0Q0VHaTBFaVlTeEdKWEVidDQwckt4S2JybnZ2Z2xVUE9qRnhRWllHeElReGlqVlZNL1didzJlUVArRTV6cnZPUmxSaGptVGhpMU44Tmo1WkE5RWZQTllKMDdLZkZnSVZ0ZDJ6dis4UDdFMCtmRUZTWWlCaTZ1Nk12UithQUUzUzdWYUJJUEFsS2Z0ZnZWK1NtNTBhbDNUS3FJTUtJMEFBTUhETVRpa2pWUVBCWjJhcm4xNzNiNzM2emFWNHhxSnFPRHVLTENBanh3Z0JBcEJTVmQ3cm4vTFJyU3VlMGNhYVFEa1JOUk1RekVRSUpxYU0wd3pTZHRoelljdE5MaFphQ1NTZlJJVGlDV1F3NmtNekNFSEtvOUU1cDBUY1h0MTU5V2l3VFk1MFlHZ01oWUlDVDhSL1BSQVFxR1JFU2lIS1V1NnY4OUpXYlZOR0NUYXg5ZFBqWVRTK3ZsZ1hsbE52bnpyNmk5Y3piMjRFd2NXbDg0elVhdE5oaTdBTkhoa3BFZjlCY3psRUEvbnJGczlVUFBDdVNDWjFmRVJlc0hDWmRGc0NteXQ1S1Uvdms4MzYxSExvcmIyUmkvQ2lrQWhIMm84Q0pWbFZjZ0FPc0gyeDQzMCt2Zlc3L0N3ZnpzL0tCeHhwV2JjRWFOVEtJUmFESU8reXJKdXVDUjd0SjBYaktSR01nSXZNajRVeVM1bEpiRENqeUs0RTM0QU40ZnYzMnR4L3FtOUJXOUtzTVRTRlJzSEpjcEVEYlN3NmtldEJiL3NBRmhaYmlXTFJiMG85MHFtSFNZY0lBUmNsUFFJcXFCejFuaXIxajQ2NFg3bnA5OHZ5bXdCTVNjTnpnQlZDYkhVVkFSSXBLdlc3blBjdW1Yemg5L0dXaVFSQ1NjTVMxTTlHRnBSS3d6L21aK1oxLzN2UHNyUzhYWnVhWkJhd1JTTGdUb2xFa1dBQXFSNGQ3U2t0dVhiUnczUUxkZ01UNHlrU0RJQkFuU0RMNzAxQ2g1aGsvb1lnRCtlZFh0MEZnNXhVSFRLUTNnM1NsZHBSU1FGVGVHdXdyei9uNDdLVjNud09NWmxkK2JFRkVhVUlSUVlSSlNFd3R5S2JFRkFKVVRobXhOQ3NwOUk0SkZnSllqaXJ2cTB3OHMybjFJMmtQUVdZREJHTEx4Qkx0dTRjZmlsSUdnVm4wZ2pqQ080WUVJUkJsa1ZjS1lORkZqM1NybkRyaHFhRUJFRkdITm83d3lHZ1R4UUVmRlUvaEtoQVJGYkpnRVFLVUltRlUrcXNmZVdMVnBFVVRzME1oRllpb0RJK045QkEyV1llRytUa1JnWm0vT1ZoQmdNQ2lnWjdCRlJ1V3RxNlpwU2xBeHJiZE1xb2dqT3dqN0tJZm1meUVRR0x5SGNHc0RvN21yMkV4Vk1FYTZCbHN2K24wOXBzWFJWdCsyUmtwYzRRSW9MWFFkR3ExcFJBUTZSZ0lLeW9kT1Vjb0JZdkswMkJmYWM0bE0xZitlSm0rN0FtWGljWkJ4TnRjVUtHaFlpS3FpUXVFSzZmV2Nla3kxVmJsZnE5cFhuSE40eXVRR1psb0hFVENVREhwa3dpMTVsS1BXRFVqdjBBQ3NTenl5d0VIc3VheGxjNUVPMU1Kc2pFUUxHR3lCRUxocEhqeFIxNHdWazJEU1NBS0pJTFMzc3FuSGwvWjNERTVzeFJTZ1pBYStVeWFpRkJFVWFPYWlmUUpjdWhnMytDRmQ1Njk0TElXSHB2TjIzRUNJYldHS3A0L1JkNHhQQmNxVUdFeFJRSkFyTHgxc0svVWZ2MzhydThzMFFjY2t0eXlOdEoyc1RuUnVXZEFSSGNXUkZkWWtjVEdadHhSQSsrNWM3cWJQL2JnY2ozLzhlbktqM2cwWnJHajdDaElHcXFvQjJzV2k3SlYrUU92T0ROLzJSTXJBWEFnS25zeTBUaUl4SUVRMDE4NDJpOGw2bEd5eUsreVYrR3IvcjZxT0RPZjVRVFpJSWdhUXpWRUQ5WU1Ba0dJQmc2VUxuK3dlM2JYVlBaWU9TY0JoVlFnakh4SzFJMC9zcklPdTVVaUFqdW5EdXdldlBqYlo3VmYzOGFCNkY1dTlpbWtBb0ZraDBxek9OSTdBZ1JoT0FVNnVMdDAxdVZ0RjkxMWxvaVFpcUZsZjZRcncyc01WZHhsSUpEUy8yT3g4MnBnZDJYMldWTS84MWkzaG5laSt0RWpHNm1QRnhwL3FWV1R3L2E4TUNBc3NLbDgwSGNtMmxjL3VRb0EreWVzS3orV0lDUjVMQ0ErS0NNUTNhZUhJdmFrVXZYWC9uSFY1TlAwV2ZtVGpFSTZFTW56dDdXSGhzeE91S0lEQSs2bjd6bXY3Y0xwN0owY1lubjBhR2hmQXppcTlMWnlxcjkvOE9LYmwzUjlhU0VIUXZZSjdzcVBlTlRmNldMSVVSRmh6bzJvbkRyUVgvclFKUzJmM0hBdUFGSlo5OUVqQndIRVhSbWRFY3crcUlpeTFjQ0I2c3g1azI3WXVBb0FqK3BaK2V5QkNETUJtOU8yeEFJV0lZc3FnNzV0cTNWUHJiYnppbjNPZmpWeGZDQUlVSkR3QjNaRW1UMUxEakFZZURjOHNhTDU5S2JncEUyUXlWRi83N1Bxc2ljc0x2UTJIb0dVUlljQzk1b2ZkQzMreE96QVo4dkpVRmQrckVDSW9EREZzVXJLMWovVEJWZ09sZlpYUC96NUpSZDkvUXhoVVJucnlvOTREUGxiaDZKUTk4cEI4cHcxQWN6aUZLem9hMDcyUlZFSHhQQkRXTEt3aFQyS28vNlBSQi83N08vL0Z3VmsveGR5amRzNDhiOHRJQ1BqRkFnelRvRXc0eFFJTS80SEJMYnFPVmNTL3NrQUFBQWxkRVZZZEdSaGRHVTZZM0psWVhSbEFESXdNakl0TURZdE16QlVNakU2TkRFNk16TXJNREE2TURBd0R1Y1BBQUFBSlhSRldIUmtZWFJsT20xdlpHbG1lUUF5TURJeUxUQTJMVE13VkRJeE9qUXhPak16S3pBd09qQXdRVk5mc3dBQUFBQkpSVTVFcmtKZ2dnPT0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJGSURPXzJfMSIsIkZJRE9fMl8wIiwiVTJGX1YyIl0sImV4dGVuc2lvbnMiOlsiY3JlZEJsb2IiLCJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwibGFyZ2VCbG9iS2V5Il0sImFhZ3VpZCI6ImM2MjEwMGRlNzU5YjRiZjhiMjJiNjNiM2UzYTgwNDAxIiwib3B0aW9ucyI6eyJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXYiOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJsYXJnZUJsb2JzIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZX0sInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN30seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTM1fV0sIm1heFNlcmlhbGl6ZWRMYXJnZUJsb2JBcnJheSI6NDA5NiwibWF4Q3JlZEJsb2JMZW5ndGgiOjY0fX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMTEtMjUiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJUb2tlbiBSaW5nIDMgRklETzIgQXV0aGVudGljYXRvciIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjQxMTI1MDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMTEtMjUiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6Mn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNC0xMS0yNyJ9LHsiYWFndWlkIjoiNWNhMWFiMWUtMTMzNy1mYTU3LWYxZDAtYTExN2U3MWNhNzAyIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI1Y2ExYWIxZS0xMzM3LWZhNTctZjFkMC1hMTE3ZTcxY2E3MDIiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiQWxsdGhlbnRpY2F0b3IgaU9TIEFwcDogcm9hbWluZyBCTEUgRklETzIgQWxsdGhlbnRpY2F0b3IifSwiZGVzY3JpcHRpb24iOiJBbGx0aGVudGljYXRvciBpT1MgQXBwOiByb2FtaW5nIEJMRSBGSURPMiBBbGx0aGVudGljYXRvciBmb3IgV2luZG93cywgTWFjLCBMaW51eCwgYW5kIEFsbHRoZW50aWNhdGUgZG9vciByZWFkZXJzIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjUsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwiLCJiYURlc2MiOnsic2VsZkF0dGVzdGVkRlJSIjowLjAsInNlbGZBdHRlc3RlZEZBUiI6MC4wLCJpQVBBUlRocmVzaG9sZCI6MC4wLCJtYXhUZW1wbGF0ZXMiOjAsIm1heFJldHJpZXMiOjAsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjowLCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmYWNlcHJpbnRfaW50ZXJuYWwiLCJiYURlc2MiOnsic2VsZkF0dGVzdGVkRlJSIjowLjAsInNlbGZBdHRlc3RlZEZBUiI6MC4wLCJpQVBBUlRocmVzaG9sZCI6MC4wLCJtYXhUZW1wbGF0ZXMiOjAsIm1heFJldHJpZXMiOjAsImJsb2NrU2xvd2Rvd24iOjB9fV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDcURDQ0FrNmdBd0lCQWdJVUdGQ2M2cmhlNEVpUmEvT1NxUE53dW9SMmprUXdDZ1lJS29aSXpqMEVBd0l3Z2FveEN6QUpCZ05WQkFZVEFsVlRNUTR3REFZRFZRUUlEQVZVWlhoaGN6RVFNQTRHQTFVRUJ3d0hTRzkxYzNSdmJqRVdNQlFHQTFVRUNnd05RV3hzZEdobGJuUnBZMkYwWlRFaU1DQUdBMVVFQ3d3WlFYVjBhR1Z1ZEdsallYUnZjaUJCZEhSbGMzUmhkR2x2YmpFV01CUUdBMVVFQXd3TlFXeHNkR2hsYm5ScFkyRjBaVEVsTUNNR0NTcUdTSWIzRFFFSkFSWVdhR1ZzY0VCaGJHeDBhR1Z1ZEdsallYUmxMbU52YlRBZUZ3MHlOREF6TVRReE5UVXlOVEphRncwek5EQXpNVEl4TlRVeU5USmFNSUdxTVFzd0NRWURWUVFHRXdKVlV6RU9NQXdHQTFVRUNBd0ZWR1Y0WVhNeEVEQU9CZ05WQkFjTUIwaHZkWE4wYjI0eEZqQVVCZ05WQkFvTURVRnNiSFJvWlc1MGFXTmhkR1V4SWpBZ0JnTlZCQXNNR1VGMWRHaGxiblJwWTJGMGIzSWdRWFIwWlhOMFlYUnBiMjR4RmpBVUJnTlZCQU1NRFVGc2JIUm9aVzUwYVdOaGRHVXhKVEFqQmdrcWhraUc5dzBCQ1FFV0ZtaGxiSEJBWVd4c2RHaGxiblJwWTJGMFpTNWpiMjB3V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVMySUFDNXQzaUVScTV4cHNFQXlxUHpqVGIrZWt4Kys1WjRWdTZZcm03U0ZmdHpjNUJkVVZpN3FuSnBab3RJZDJHZkZqYWQwWmprSWY4VDVSNWh0ZFZMbzFBd1RqQWRCZ05WSFE0RUZnUVVBeTVRT21JdGtCeCtSZ0ZuNEVmbFFWWWZuMUV3SHdZRFZSMGpCQmd3Rm9BVUF5NVFPbUl0a0J4K1JnRm40RWZsUVZZZm4xRXdEQVlEVlIwVEFRSC9CQUl3QURBS0JnZ3Foa2pPUFFRREFnTklBREJGQWlFQXdzSmFpOGdrQTE4Z3crYUxtVEt3dzBPSk55ZGdONG96ZUtlOTU3clJtNjBDSUVnd0FMbkJRa3IxQUZJVGliSkorVERQUDJ5TDVubzZIZFRFQUNBN21Id0giXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBS0FBQUFDTUNBWUFBQUQ3b2FKZ0FBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFET1ZKUkVGVWVOcnNYVjEyNGp3U2xUbjkzc3dLMmp6TjQ4QUtHbFlRc29LR0RVeGdCWUVWMEprTnhGa0JzQUtjRlRUOU9FL3g3TURmQ25xa2RLbS9pcEQ4SzhreTFEM0hKd25CdG5SVlVsVmRXVEpqQkFLQlFDQVFDQVFDZ1VBZ0VBZ0VBb0ZBSUJBSUJBS0JRQ0FRQ0FRQ2dVQWdFQWdFUWd0RVFSZnUzLytkOHg4UC9IajU5WjkvSnRSY3RiaGI4Qi9mK1BIRXVUdVFBZFlqYjh4LzdQZ3hSUituL05oeU1sTXlyMGJjclRsM1p6TEFZdktHL01jalAxWUZYMHVBekp6TTdZSTdZWGlMZ3E5OWgwNGNESGVEZ0FnVVJ2ZFdZbndNQ0g3ajM5K1EyVjF3dHlqNTZncTRXd1ZUOWdESW0wTFBIVGM0UGVQSDhsYmRNbkQzekkrNHdlbG44Q1RwVFJvZ0p5OEd3NXRidUZ3S2hwamRpT0haNU80QWhwamRoQUZDckxLQzdIWm8rZkpiRWVkY2Ezem9rRHZCMTFNWDNFV2VDWnhEejQwZDNpYURRRHU1TXVQenhkM2FwMndUZVNJdmhsaGw2ckhOZ3BVZWFuS25rMVY4Y09jbHBJa2NrMWRGVm5HTmhQVlF0Z21FTytleVRlU1F3QVgwM0dFQTdaa0RrZDk3WW53ck1MNVF1RnU3Q21raUIrUk5XWE5aeFRVeUZyQnNFemgzVG1TYnlDSjVNZlRhUlE4R21VNmxCd04zdG1RVkh5SE4xaFoza1NVQ044eU5yT0lhbmNvMmppVXAxMjVaUE9TdzZkUUFQVWtEUHR5eWQ5bm1pcmhySmR0RURja1RwUG1XVlh4SUQ4NWxtNDVrRlIvY05aSnRvcHJraFNBTjlGSjZJTzVhR21CZ3NvcVBHTWVhYkhPRDNGV1diYUlLNUlVc0RRUXRQUkIzNWR4RkpYRmVYMlFWMTZnbDJ4QjNINUN3QXRrbU1oQzRZZjJVVlp4TEQ2eEV0aUh1ek56cFpKdUJJVmorUWdSZVFDWVJQMEJDTVNVYW40azdMWGRmZ0ovS0x2aVc0NWVxMG9OV3RybFNxY1ZKTEJnQldYT1Rhd2tnZ3p1d3NLZW9FbVo0MmdhNEU2Tm1mSVBjRldiRE1NQmxBK1JhM29Dd0Q0QUxqTmh2amNmM0NEUGg5NytIKzZlQkd1Q0NHUlpKQVhjVDludkt6emQzSStCdTBnRjMzK0graVM1QjQ4ZUoveXFPT0FKTFBDbUYxNjYvOWVSYU1tYVlHbXU1Q01jSFJObVhCdTVpNXY2Qmc0d1pwc1k4amNaRllZbWM5MzVFSDg5MEJsakZ0YmlZeDZ5OExxRUhtV2JLREZOVGpqcFJwWWNESEQ3OFlEVDhrakN1MEFBTEsyYXc2RGF4U3EzSG8zcWl0VzBMWW10YkQ1MG1yT2JqVVpaSDQ2STZsaVd5cFFaWVpXaHZVNW5XRHpuMklGczNCdU1WZHpNSWxUdmpvRkZqY0toc2dMWmRpL1ZINUFON2pMMXVmRFNGc2svYkdMUW43b3h4Ym9Qd3FMWUI0aXhuYXhoMnl3cmdiS0ZMVDU0NEtaTnRkb0Z5Vnhobk5zd0xHaHRnRTlkaUhBRWNrQm02RUd6MEFJYlkydWg1UEhGWDFHbGkxdnpaMEZZR1dCcUx3TFhsL243ZTk2Z0xRQWkySWR0MHhaMFkwZVQrZ3FramIvTnVnS0tpYjVaY3l6YTAvVmtzWit1dUVOUWlxWW9kMjhiczJDU0NDLzd5cVVkMVJGb2JWK0hMTFFmSm5TdkZnZGMxc20yQXBiSk5JQ1QyY2phbDQ4NXJYWE4xYVlEZWcrY0dwTmFSQzdxU2JUcm56aVZQUGd6UXVYeFFJZlo3WU9iWkhCbm9oL3kwVFNkcmwzMHNHL1ZwZ0lXeWphZnN0eWpqdEJyYjlKdzdiN0d5YndQRXJzWEpidmNWOVQramErdkpiSW9yN3J5TCtGMFpvRVRDTEcyYjFuQk9WZXZhV3M3UDlvNDd5N0pLYlFQc2NwZDhVZW5XdTkzWDJDRmVoZlloWE5Hby9GaXliaDdrck12ZHFpVjNVM2c0OUxtclViL0xFYkNWOUdCWlRqRzZ0aDRzS20vQ25STlpwVzh1dUpIMDREaHoxYnEyYTVwTkNVbCtDdEVBamJLTlJ5UElTMlNiMERkbE1zVzJ3ZTNHMVhVTVdJU1ZKaHZ6TlFLOVo0Tzh3ZDdBeldQQ01uN00rSy8zNFBwQ3hFVW1DN0hpbmdVNCt6TkFjUVRoSTBSam5Yamo3V0hrdzRaNDRNY0lScHMrYkg0ZTdFSjVhWUJkTEIzc0MrWXlXMWRYOW9PYm5rRDhSYWdYNjAvK0dDQklENExNRVpGWjZOcCthRWJERE5iZkN0ZDhKcG9xWmV3eitXRHlvSUJNY3N0NjhqSkRRSjN5US9UcWRVL2NjaGZKMFVTZFRod1VrRGtpTXY5a3hVTGVHRlhSMnVBeGU4RmRRamIzRHVGUkJYY2IzY3pOZ01nc1JBTGsxVnE5MTVQWkZCOGVRN2phK3lKdGNrQmttb05rVWU4Mjg2MGl6Z0haWm5sRG5xU1d4eGcwSkRPN1l2SStCTWsyME9FR1Q4RjdqRUZETXE5UnR0a3l3NDVPbG94UWVKSTFDM3VuTCs4ZTQxTlRNdmtQb1l1Snh1cjcrMEpTNXZIUmQ3alBqRjd5MDNBRVZNa0V0OXhIMlVZR3liTXUxbDNBZ2kzcFNmb1lIMnBsbGJyNFpJbE1NWXFNZXJKQmR6RExIeFZQMHBlWEZWcGR3enl3VE9pR2hTM2J5Q0I1RTFLaGVqSUJVRWxXNmRRQVViQzlCREpEQ2JaVElHOFo4cHZUQTUwQXFDV3JkRzZBQ3BsZGEyQllWdWxONWhuUUJFQnRXU1VZQTBSa0prQ21iOW5HcWF6aUl6N3MwSk0wbGxVNlNVSnFCdHV1WlJ1dnNvb1B0eXpxNUdsdFNtdFpKYmdSVUJOc3U1SnR4UFh1dTVKVlBIb1NWKzdRaXF3UzVBaG82TlcyWkp2Z2Q1V3k3RW5Xbkxjbmk1NmswNjNoQmgwVHVta1piQ2ZRYTYvZStBeWVwTTNhRkNleVNxOE1zRVd3ZlVheVNzWnVGQTFuVTV6S0tyMHpRT3lXSzhnMlVsYVo5RWxXOGRDQk42emEyaFRuc3NwVlFDeitVZGRld0R2RzZEV281ZHhOMWUxRzRMTXBzVU1nRUFnRUFvRkFJQkFJQkFLQlFDQVFDQVFDZ1VBZ0VBZ0VBb0ZBSUJBSUJBS0JRQ0FRQ0RZUk9iL0I3M2Y0aWtmcGM3enJLSHBFL0Z4bjlUMDhsdi8rWXVscldoY0Mrd1dLSmFxdnQ3VEs3MU1Eb2xSeXNwTEZ6UElGMHNKWVp1anpFL3lzdS9YRUdKMGJYVkZiN09HbldMOXhzTGxGOE5VWUlQVFNSODNuQjV0N2lNQTdiSVhSYnE5bE5FQjFrcXYvVk9UU1U3QU90MmdEei9SbmNIRHRaZW91eTd4RHYrTlJiODRJYlNIWDkwNUMza0t1YXhmOEoyNWp2L2V3V3lERFRNaUdtZ01XMkc5dXJkNlZEUkNTaVJqK2ZCRzlWTGhlR1AzbUlqbG8yM05SWWlMWC8zNnBrcXpBT3RpdlVMNE1Bdm1rNUY0eGxQMWZjSjdvVkQvNW9RMG5VRGxFekp2QitmSytPWnlicURzMWFPbzBWSytGeWhPcnlacW1EV1NaaDFEbVY5Z2hvU2hwaytlTTRlTWoxRE5UK0lqUmQ5N2piZjQ1MHlWOG11dm1pTCt6aXhId0cvbzlSUldaSXpmY2RoUThLWDh2MENoN2theEFnendycEwyZngvLzNBREdNenBoRVlyUXlqTzQ3L3YrMXhvQmwyYmI4LzU4MTU3L0h4L3gvUytYY1UwRVN0VVdqM2dMaWF6VlprNDI5WjVlYkVZbS9WL3ovb3NHWGFzT0RvZS9aNWVaUFV5Z3JydWRDRTkvdmRJb0o1QUxQbXV0S0RnNVFudHltQWM1UnI1VVZQVUJCYkxuaEZEWFNFRWF6REFYcHVzeFJqbDVIVkk0eEhIdE5ZNTVRUTRwcnY4alJGdW9vN3Zzc2VyNWhGSDFBWlJQMS93dk9sUjFGbkp1aTBVV3RVODcrZnF0bVZxTmpqbEg0YzBSbFhraWo1dmNkeVVhSHpubFNZdmIvOGVNejFET0dzbVl3dW1WUTFxRnlyMXpqYlo1Um14emd1cGg3ZWYySkZRTlUzTzhCeFMxVzNiRE1EcEdSdkpSa3dUSDBOR3dvWWlQTVBaUkpTQm94Y25NTFpId0piSXFFNjdsR2piMHpaUGREYU13MS9oOXNtZllEL2hRanlkSlFwN01oQ3k2U3ZhUkJxSFdWOXoxQnVYYnl2bWcweThFVFlBMTJDMldONWFnTDEwMlVMSGlOWFMrTXhEdGtuT3JPV2hzbzd5TzQ3MFZaS0ZRMUM4WkQvNHZ5djJPSDJiQnBOOCsxb2V3UEtKNWNhanBBanM0ZG9sRk5sVXZXcW1GQ0F4OVF4N0FGR2Zxa3VyckNmZVdtbnkvb2MyRWNFVC8rb2JwbUtQdVRocDh5TEpEYjFlNU1CZ05HcHZEZDJnVkxFblFCc20wM1hBY0hVMFlwZzJkcERIZ0dSUmhneVdZOVVwTVRDWWE2azFSU01Nci9sQ092SlUwdVJzWjhMUEFjNTRKcnpEVXhzblRmZFhHSFFvZGhBWWNwQ2czYUdTQ1FNRVlaM0sraU9ORkdObHpEWmRlWkxSZ2JrcHNpNkhiaitzdGpCOE1qNmJtbThZNVJqT3lpWENkZk1reGR0Mm9qRzNhTk02dTJvV012cDhOZ3REK2hEblRXaktCZktuWkNrNGM0K3pKQUxML01La2dvb1lyU09GNDU5bVNLTHplTWhsVUdnYUVwY1VFSldWTUR6T29rVW8wTlVJbWJEa1h6Z2tvMkhJZTJkUzdFaFJrMDVOZUtkYzY2ckljSU1YaDVjRHlhbE1XSzBFWXh1b1pwTVBqYW9FaXZFTitPaTlvWVBRRlYrc1RTb0VKUFltVkJzTU5zK0xQbE5wVlo0c1V1b2dqUE1KcWZXQml2b1pXSjFrSVg5RU9IK1FIbGZUUVlneTR4YVRMNllXUGVHWXh2VVZTZXVpNzRyaXpqTkdURDN6VFo0eGhtSUk1S3J4QmlxRW52VzBIdi9na3lSTnF5TWIrenY4VlNjZCt2MEtzeitPd0JqUjZwNVhkbTVNajQ5elhxdEVZdTlRUXYrem5DOWU2UU5JSWxwQVExL2dsMHZ6TjhUNTZURzVLc1hHa2JLYlluNEVXMmNHM2g2ZDVBemxHdnpaVHkxQjhCMFZ5ZjFNM3lFbmVSSXlNZG96MmVYMUZHdVdJZlp5RmtiS1AybENkbE5IMjBNUnBCR1djb2dGNmdFUSsvUEZyVTQ5N3lTSVozc3E5Y0oxVG1ESlY1RDJWZUllTzdsNm9BdUVhc1orN2crM3M0UHpNWkIxd2pRVzJ6Z3JKS0Y3OUJnMHVzdWJaczIxa1ZsZUpUaVFTeFJicE9GVHhCejhZVjJxRFlDMTlyd2o0S20vaWNBejlucGpSUWlpcTNyZGpnRjJXSEJwMkFxN2hUN24vV2pOQ0YxOVBvWDBYeDNFUnhmYW1oZmpxakdCbktmR1FhYlZMc2hBOXp4QSs2N3l2dHE5NXZ5Yzk5VlJLZkRQMWZ2aXpuUVpHM2N1QXZkQldFUUNBUUNBUUNnVUFnRUFnRUFvRkFJQkFJQkFLQlFDQVFDQVFDZ1VBZ0VBZ0VBb0Z3TGZpL0FBTUFUYWl0NjluVVVTRUFBQUFBU1VWT1JLNUNZSUk9IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiRklET18yXzAiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6IjVjYTFhYjFlMTMzN2ZhNTdmMWQwYTExN2U3MWNhNzAyIiwib3B0aW9ucyI6eyJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsInV2Ijp0cnVlfSwibWF4TXNnU2l6ZSI6MTIwMCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6MTYsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4LCJ0cmFuc3BvcnRzIjpbInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi0yNTd9XSwiZmlybXdhcmVWZXJzaW9uIjo1fX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMDktMTciLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6NSwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJBbGx0aGVudGljYXRvciBpT1MgQXBwOiByb2FtaW5nIEJMRSBGSURPMiBBbGx0aGVudGljYXRvciBmb3IgV2luZG93cywgTWFjLCBMaW51eCwgYW5kIEFsbHRoZW50aWNhdGUgZG9vciByZWFkZXJzIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNDA5MTcwMDMiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0wOS0xNyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjo1fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI0LTEwLTExIn0seyJhYWlkIjoiMDAyNCMxNTYzIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWlkIjoiMDAyNCMxNTYzIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkcrREJpb1Byb21wdEtleXN0b3JlQW5kcm9pZCJ9LCJkZXNjcmlwdGlvbiI6IkcrRCBCaW9Qcm9tcHRLZXlzdG9yZUFuZHJvaWQiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJ1YWYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfSx7Im1ham9yIjoxLCJtaW5vciI6Mn1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9kZXIiXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX2RlciJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsic29mdHdhcmUiXSwiYXR0YWNobWVudEhpbnQiOlsiaW50ZXJuYWwiXSwidGNEaXNwbGF5IjpbImFueSIsInByaXZpbGVnZWRfc29mdHdhcmUiXSwidGNEaXNwbGF5Q29udGVudFR5cGUiOiJpbWFnZS9wbmciLCJ0Y0Rpc3BsYXlQTkdDaGFyYWN0ZXJpc3RpY3MiOlt7IndpZHRoIjo1NDAsImhlaWdodCI6OTYwLCJiaXREZXB0aCI6MTYsImNvbG9yVHlwZSI6MiwiY29tcHJlc3Npb24iOjAsImZpbHRlciI6MCwiaW50ZXJsYWNlIjowfV0sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlCbURDQ0FUMENCR1FkUFIwd0NnWUlLb1pJemowRUF3SXdWakVMTUFrR0ExVUVCaE1DU1U0eEN6QUpCZ05WQkFnTUFrMUlNUTB3Q3dZRFZRUUhEQVJRVlU1Rk1Rc3dDUVlEVlFRS0RBSkhSREVMTUFrR0ExVUVDd3dDUkZNeEVUQVBCZ05WQkFNTUNFRlZWRWhTVDA5VU1CNFhEVEl6TURNeU5EQTJNRE13T1ZvWERUUXpNRE15TkRBMk1ETXdPVm93VmpFTE1Ba0dBMVVFQmhNQ1NVNHhDekFKQmdOVkJBZ01BazFJTVEwd0N3WURWUVFIREFSUVZVNUZNUXN3Q1FZRFZRUUtEQUpIUkRFTE1Ba0dBMVVFQ3d3Q1JGTXhFVEFQQmdOVkJBTU1DRUZWVkVoU1QwOVVNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVTSXBJL2RLWUNEWWh6d0Qyd1NmWUFPYi9uTmFpUGNXRjIxdnhaay9UZ0QwT0p0Y0QrT1BtNjRud1pkRldTRVlTVzdpT3FucG1KeWRlOG1nci90bkFpekFLQmdncWhrak9QUVFEQWdOSkFEQkdBaUVBM2J2aGF6UUZQd215WGx4Sy94Q1hmaDdnMVgxRW9iTEMzTCsyR09SeHA3Z0NJUUNmTkVUWC9tMkJlYlJMWEk0TE1QMUVRR1BYRkRmN09rNzRVN3hiaU00VmtBPT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCwvOWovNEFBUVNrWkpSZ0FCQVFBQUFRQUJBQUQvMndCREFBTUNBZ01DQWdNREF3TUVBd01FQlFnRkJRUUVCUW9IQndZSURBb01EQXNLQ3dzTkRoSVFEUTRSRGdzTEVCWVFFUk1VRlJVVkRBOFhHQllVR0JJVUZSVC8yd0JEQVFNRUJBVUVCUWtGQlFrVURRc05GQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJUL3dnQVJDQURJQU1nREFTSUFBaEVCQXhFQi84UUFIQUFCQUFNQUF3RUJBQUFBQUFBQUFBQUFBQWNJQ1FRRkJnSUQvOFFBR3dFQkFBSURBUUVBQUFBQUFBQUFBQUFBQUFFREFnVUdCQWYvMmdBTUF3RUFBaEFERUFBQUFheWo2RjV3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVnZDNlRFQ1eExKMzZ4Rm9jNWw4bEdQU1hLc3pORE0wOU5WZE4rOFA4WmRMS0JIcGllK3ZoVHVvZk5YTkF2bStNeVVtUm4xZFFaZ0FITTRjdzFMaWNQMVZMZVF1alR6SjJkSk0zMzVwaGFhVWplYWJLVVJ2ZFY3U1oxZFRTNlN1Rmt3US9iSHI3NjV0MkYxbWRrODdOUHFFK1NZeUhSMWdBTEIxOGx2eVRlalBYUXFtdWdzZ1lkVlZwMXlhSGZYTFczdlVRazJwYUlxZDVNcllxSVBmamRMTm1UWXkyK0NUb3hzYjZJdHRTdTZsQTlCWkhBNnFvQUJ5T09OSFAycFBlbmpycy84QXhtbmNZYkxDaWE2ejB4U21hWnQ5SFJNbFVSdmRGK3F6b1l1czNsZEtWMXU2aWFtM3Q3UHJ0Sm4wR2VudS9BOURXR3h4QUFBZXY4Z3hYS2svT1pxYzlKbWJLbHBNelpHa3pOa2FUTTJScE53TTZFcmgxajh3Mk9JZXlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQLzhRQUtCQUFBUU1EQXdRQkJRRUFBQUFBQUFBQUJRQUVCZ0lEQnhVWElBRVFFellSRWhZd05IQTEvOW9BQ0FFQkFBRUZBdjZiR0lTUmxOWWJGZ1VaUzNGTW1sUGd0S1cyYmZTTHJFMVBTdVcrQzB2QmFYZ3RMd1dsNExTY2lHTHlrMWlnT1Jwa3NRSXhlOStHQVFtcVVQRzdlMDBzUG43WWEzZTVkQnRxOTV4YU9aWUhGQXl4SjdjcEJreGhIaTI4NHRiemkxdk9MVEhMUUozVzFkMkgxaDZ5c0VXczVoMXlLRU9iUnJjZk9nWWl5QkZTV1F0NHlLUFNGN0kzdkRFbnR5eWY3dHdqY29mUmg0Q05ONUFNbEFLM0l3bHkzVlp1Y3NWTU9qMlhMTFJtcDlJKzFHSmoxZE8waDViU0hsQW9DVmpwOVRYSGhZOUpkcER5MmtQSnppdzQwYmRzT21hbTVkWkhZZEI4dzVZWStOZVU0K3JwTHV6YjlibWUvd0FQdGpYNnZ2VlpmK1B1dmxpNGgwWVM5WmRDVk16M2FuSnNqb3AzUGtpM1BraXg1TlRCNlJLZFRvMkZsRzU4a1c1OGtWL0pFaGRXTzJIQWxWNGdzaGtPaEtYOHJGK3RyZmpSeTFJd3g0RzJrUXlTUlIvRjNYREVudHl5Zjd0d2lzTmZTbHlJRk53ZytZU0dpTkE2cXV0ZFhPRVRHN0UzN0IrM0tOTDdlMDZ0UGNYeDk1WHRDQ1cwSUpiUWdrQmdBdU9QMGF4MEpQRXRvUVMyaEJMYUVFbU9NNCt4cnRXcUxGc29WYWhtVXhsbDZXRXZ3eDZVa0l6ZkM1ZUdQS1c4cURPcWRkR3JYUnExMGF0ZEdyWFJxMTBhdGRHclhScTEwYW5NdEN0S1RlWUI3V2s5Skg4a2MvMDMvOFFBSFJFQUFnSUNBd0VBQUFBQUFBQUFBQUFBQUFFUkVnSVFJQ0V4VVAvYUFBZ0JBd0VCUHdINnl4azZSS0Y3cVVTaDR6eWZTMURFbVpFUFdMTXVDOU10V1JZYmdzaHVSZW1YbkZPU3BWaXhZMUpWbFdKUU56eXNXTEZpeFlibjdILy94QUF1RVFBQkF3RUZCZ1VGQVFBQUFBQUFBQUFDQUFFREJBVVJGU0ZTRWhRZ01VRlJFeUl5WVlFUUpGQng4RFAvMmdBSUFRSUJBVDhCL0xWbGQ0UGtqNXI3aXB6emRSMGxReHM3aXFyL0FBUDlLT001WDJRelc1MU9sYnJVam5zdW9LK1dGN2p6WlJtTWdzWTh1Q1UvQ2pjK3lwWXQ2bXVMOXVoRmhhNFZ2VUd0bFUxTUpRa3pFck9rR09WM043c2x2Y0d0a0VvUytoNzFhRk14ZzhyYzJWbFN2ZThYendWWTdVQnN5c3MyR1oyZnI5TUxtN3QvZkNrczZXTVhOM2JKUVFGVUZzQXNMbTd0L2ZDb2FZNlpuWStxcXpZSUNkMVpZM3pYKzNEVlU1VXNtMFBMb29iVUc2NlZsaWNIdXA3UWhraUlHNnFobkNua2NqN0xFNFBkUGFrSFM5Vk5VZFdWM1RzcUttM2VQemMzNFNGamJaSkhaY1JaaTl5d2tkYXdrZGF3a2Rhd2tkYXdrTlNocElvUFMyZjVqLy9FQUVNUUFBRURBZ0FIQ3dvRUJRVUFBQUFBQUFFQ0F3UUFFUkFTRXlFeFFaTUZJQ0lqTXpWUllaR2gwUlF3TWpSU1luR0J3ZUZDYzdHeVUzQ1NzL0JVY25TQ3d2L2FBQWdCQVFBR1B3TCtadDJFWktNRHdwRG5vL0xwb0Y5czdvUGUwOTZQOU5XWWlNTWpvUTJCWEpwN0szV0lRa0h5VnpWN3VBQWdFWkJlbjVWeWFleXVUVDJWeWFleXVUVDJWeWFleXJQd283dzk5b0dsS2loVzU3M1MzblIvU2ZwVnBUZU15bzhCOXZPaFhtaTlJdW5jNWs4TWo4WjlrVWhsbHRMVFNCWktFaXdGRitVK2lPMFB4dUt0UlMwSkVyM20yN0R2SXIxS1oySjhhbXcyNGtwSzMyVk5ncXhiQzQrT0Fma0wrbUI2QTlGa09PTld1cEdMYk9MOVBYWHFVenNUNDE2bE03RStOZXBUT3hQalFTNFg0blc2M203cjBsNk84aDlwV2hiYXJpbkk4bHBMekxnc3BDcTRGM0lMMmRsdzZ2ZFBYNWhtT3lNWjExWVFrZFpxUEJZOUZwTmlmYU9zMDVNZjRYNFcyOWExZEZHUk1keHZaUVBSUU9nRGVqOGhmMHdUL2czL0FHMDcwUFJYT0xQS01xOUZZL3pYVE0yTWVBdlNrNlVuV0RVaUV1Mk1vWGJWN0s5UnBUYXhpclNiRUhVZCswdFF1STdhbmZwOWNIa1FQRXcwZ1c5NDV6OU1JVUJIc2MvSzFvamJXdEViYTBKY3NNNUhKcVR3RjNPQ1ZOaWhuSU9ZbUxqdVdPWklGYUkyMXJSRzJ0T3Z1Q1BpTnBLMVdjMURDL3VjbzhWSVJqcEh2ajdmcGduQklzbDBoNGZNWisrKy9tOVBrMy9vWU4xY2JUbHpoYS8yanpHNlAvSGMvYWNPNXVMMHIvWXJBbTMrbVJmdE8vanBVYkprSVV6OVIzZ1lFYm9KVHhNdE9jKytNMzZXd2hJbml3emNpMzRWemdOZzM0VnpnTmczNFVJczJYbG1Na3BXTGswcHovSVlKY1NITXlVZEdKaXB5U0RwUURyRmM0RFlOK0ZjNERZTitGT011VGdwdHhKU29aRkdnL0xESjNVV25pbVU1SkI2VkhUM2ZyZzNRV2szUTJySkQvcUxIdnZ2MjNtbFlqamFncEtocUlxUE5hdGRZc3RQc3IxaW5ZVWtjQmVoUTBvVnFJb3R5bTd0RThXK24wRi81MGIwZmtMK21DZjhHLzdhZDZBeWd0UlFlTWtxSEJIdzZUVE1PS25GWmFGdXM5WnArVVNNc1JpTXA2VjZ2R2lwUnVvNXlUNWc0MTNJTHZMTkQ5dzY2Ymt4WFV2TUxGMHFUU21ubTB1dHEwb1dMZzBWQ0txT1QvQmNJN3EweXRyOXEweXRyOXEweXRyOXE4c2lGL0s0cFR4aTdqOU1EczZTWDhzNWErSXV3ekMzUjFWcGxiWDdWcGxiWDdWcGxiWDdVRmVSbVFvZngxbFhkb3BLRzBKYlFuTUVwRmdLY2xUSFF5eWpXZGZVS3l5cnR4bTh6TFhzanArUG1zZUU5WkI5TmxlZEN2bFFUUGJYQWQxbTJPanV6MWR2ZFNJZW92QUd1Y0l1MlRYT0VYYkpybkNMdGsxemhGMnlhNXdpN1pOYzRSZHNtdWNJdTJUWE9FWGJKcm5DTHRrMWQzZFNJT29PaFI3QlJUdWN5dWE3cVd2Z0k4YXkwNTdIdDZMWXpJUjhCL003LzhRQUtCQUJBQUVCQlFnREFRRUFBQUFBQUFBQUFSRUFJVEZCVVdFUWNZR1JvY0h3OFNBdzBiRncvOW9BQ0FFQkFBRS9JZjhBVFlqbzRhRFRNME9NVVk2M3ZFdEJaRythQkZ1RCtoWHE5RzVFQ0hOc3U1YUJOUFY2OVhyMWV2VjY5WHBjNVlmMnltWk8wUloxVCtpZ1o0VGdoT0RvL1VUQnU2Ti9OL1hBMzBhNDBTT1FWZXFyQWQyL1NvTUhndXJPbXhHRWhucENBdVczNFVTTHFobGhNU1BnUm8wYnB0c3QzTzZYYWFvYmlWQ0VKTWllWTBERTAzaG0wSFU0eDg5ZHFYSkJSbUVTRGJpdXF5MWJwaXdNTHVIOVhBR2wzT1c3Y3N2NjQvWlJ3VnNvU3VPTStZcWZ1ZVFmTkZDcUp2d3ZVNkxUKzI3K0JoUG5aa0gzT3c5WjhOaFplaGFZbkpIRGJBNW9QQlhuUHl2T2ZsRTJERzh4RmthYkhtUkdJR3NqTWE4NStWNXo4cS9VUEZnbHcwMnBOa1pmSjN6NU5uSHZJQ2ZtRkIzVzYzN2JEYVBNNVlkSTIrV3krdFFGYkp0TjF0c1diY3g2Zm5QQXBYTk9vTGpzVEJEQnVCRWNRdWUwb1lJR0Z0b1VKMnJCTE1pTFFkaG5BcFlNbGFqZXUxQ2hpRmdYa0lTekx0U2dKZGtyRzdZd3dnNFowSHpOQXZSaUpIblNoQ0MyNjcvUkdzY3VYWWMwZnBqVGxMTWRodndkVnYyVWNJTkJyQ2NUK0E0eFZqMWxONWptSzIxYXRFV01kQmUwS2Z3MlFsWDZISU9oZURMUmRic2tuRHFLeC9IU2lKOUJadFJxMHk4eFBOSWNDdlNxZWxVOUtvYlFOaElHK3lHekRkZjdBRUdnVjZWVDBxbnBWTU5JRWp1Y1NnREZEZ1pBVVNXcmJ4WUJpdVZMUWxudkVhc2VCaDlTK1laNWg1dFNHc0RkRkx4c09YR2pVNS9CRm12UHU5ZWZkNjgrNzE1OTNyejd2WG4zZXZQdTllZmQ2OCs3MHlpbjY0TFdCdVFSMXR0Ym9OOVNVNlZHV0J2di93Qk8vOW9BREFNQkFBSUFBd0FBQUJENzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc2b01qZzR4dlAzNzc2bXB6eXl2emVwcjc3NzNqNVQvejVlL3o3NzY0cHY4QXZxLzZJRysrKyt2Yy93RC9BUDhBdGY4QXZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnYveEFBZUVRRUFBZ0VGQVFFQUFBQUFBQUFBQUFBQkFCRXhFQ0FoVVdGQlVQL2FBQWdCQXdFQlB4RDliTWRCcXpNRVVNejJsbjJCaEVScDJCYlVXQ1puaExCeEFweFBLSW1aUTFEOTJjUkR4ckFXb0F0MGl3aHNib0RUSHJwQVJqQ2pXaG01dEdvTXpMOVMvVXYxTDlTL1VYTDlqLy9FQUNnUkFRQUJBUVVJQXdFQkFBQUFBQUFBQUFFQUVTRkJZWEhoSURGUmdaR2hzZEhCOFBGUUVQL2FBQWdCQWdFQlB4RCtzYjMxOXVOWURvN3RQUkZVMEU4NXp2a29kVnZtTjdlNCtLdEpVKzN3N3pKK0dLelZiR0dSWXRWcVcvVEZnWXFCZFAzSUM5VWFGWVhRVkZ1WlAxSVVvMGNJWE5OOWlZNVFEbXlsSGgrT213M0JIaTJYQVN6T3g4ZjR1MTdqRkhrRmJGOVIrZ0lWdDVGdzhaKzR3cGcxRzZ2eUV2QkJPYlpFVWJoZVRZUVNqTngycXE0WVpuZVVWZGVKZnl1bjFHc3JRMUNGbXNxRlVVV1pucWZVYXdCVUxrZTRNSlM0TGJmbGpaeWNPQnk4N0wwS2pjeHFxd2J6dmIzbUs2YXpGZE5aaXVtc3hYVFdGUzE5Q1czbkcxMDVmMlAveEFBbUVBRUFBUU1EQkFNQUF3RUFBQUFBQUFBQkVRQWhNUkJCWVNCUmNZRXd3ZkJ3a2FIUi85b0FDQUVCQUFFL0VQNU52Y1U0WmtpNStBdEtRMEhyQlo3cWVlSnZtaml0QU5lZ3I5TjlVekdNQWpzc2FTR2t4QjZOZnB2cXYwMzFYNmI2cjlOOVYrbStxUE1VSnIvU2l4OCtub2c0b3FtQlBia3NER05zYktTRS9FUzB4VEhBMkZrU3VnRUlRU1dYaGNBc0ZXVmZUUjJDdDFGaEs3RlRKdEFwZUhTREN6SjNmdWhNRVRBdkhRME9MbTlsbzFnREprZWhnd1lORCt4RStXRGxBNzBicDU3b2NJa201a3B0M2Z0ckNNSUlSQkVRYVAwS1V3WFdXdWtPSWt2RDRIRmR3ZFBnbEwxakF1SlYrWStDWUxCVS9pd09BVjJ4WmdNaERBTVlQajFCdElnWWx2QktXL3lORkpCRzJwc20xREE5Z29xd2gyR09BWVQwa0paR25pa0p3MUIySndaQnZSaWJlaEFnN2lKMWx0aWtraUw4Z2prYU1CRlEvd0JuZndjKzdyZFBhWXNKSi92WFBObGdkOEJoYTdSOXNSSjNWSkhLeEd1ZVpGYjFkREVac0syckx6MFpDaW8ya203OGVoQ1Q0RVN0Kyt2S3FKTjd2K2s2QkxKVGRPSFdmaDl2eDNzYlJXZTQ5YU5PRVFoK2R1c2FOUzBFSS9RT1JveUlTbDNuMmhYZDR1b0dIeXFBUUd1VEphRkd6YTdZWkxhWTBtV2Z0ZHcwbDExekJiV1RKdjFEc3NuQ2twSkVkU0lDSmFXUzQ0ZkhReXIrR1RFbnRNOTllTTVkRERjZ0gxUXhFUzVLQ2IydUp6dUZNcVNEUzhTbkNMd2lsbFRBYkNyc283UE5oeVF2eHRGQktCUWhuc0xlRzNKQzlaejhJVjNkQkxLZTdZQ0NwckxSYXZGbTkza1RLVWdYTWtKbFYzVlorQis2c1RGWURZRmJXRGRGQWJBcE1HNG1RYktCRVJCSzRGbnVpRWllU21BRmRLOEo0UUhRelpzek5WeXkvQmNzYjZFbW1DUEo4Sk1pK1o2R2JOblBNMCt4Y3oyRkRVS0JkZ0FBNEtrYUNmT3dDOGFBU3RYcVk2U3Q0Yk1Zb3hBU0IrSjlnd1RGNWlJV21BdE1TVkRZb0tKM0N1ZG1KM1pvRWVKZ2J5WWV6NHYvQVA4QS93RC9BUDhBL3dEL0FQZ2dSTDZ4UWVpb2IwUlYvQmI4anNvQTNiRW1Nall3SlVxQ1ZqK1R2Ly9aIn0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTA0LTE2In1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wNC0xNiJ9LHsiYWFndWlkIjoiYjkyYzNmOWEtYzAxNC00MDU2LTg4N2YtMTQwYTI1MDExNjNiIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiJiOTJjM2Y5YS1jMDE0LTQwNTYtODg3Zi0xNDBhMjUwMTE2M2IiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiU2VjdXJpdHkgS2V5IGJ5IFl1YmljbyJ9LCJkZXNjcmlwdGlvbiI6IlNlY3VyaXR5IEtleSBieSBZdWJpY28iLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6NTAyMDAsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJlZDI1NTE5X2VkZHNhX3NoYTUxMl9yYXciLCJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURIakNDQWdhZ0F3SUJBZ0lFRzBCVDl6QU5CZ2txaGtpRzl3MEJBUXNGQURBdU1Td3dLZ1lEVlFRREV5TlpkV0pwWTI4Z1ZUSkdJRkp2YjNRZ1EwRWdVMlZ5YVdGc0lEUTFOekl3TURZek1UQWdGdzB4TkRBNE1ERXdNREF3TURCYUdBOHlNRFV3TURrd05EQXdNREF3TUZvd0xqRXNNQ29HQTFVRUF4TWpXWFZpYVdOdklGVXlSaUJTYjI5MElFTkJJRk5sY21saGJDQTBOVGN5TURBMk16RXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFDL2p3WXVoQlZscWFpWVdFTXNyV0Zpc2dKK1B0TTkxZVNycEk0VEs3VTUzbXdDSWF3U0RIeTh2VW1rNU4yS0FqOWFidlQ5TlA1U01TMWhRaTN1c3hvWUdvblhRZ2ZPNlpYeVVBOWErS0FrcWRGbkJubHl1Z1NlQ09lcDhFZFpGZnNhUkZ0TWprd3o1R2N6MlB5NHZJWXZDZE1IUHR3YXowYlZ1em5ldWVJRXo2VG5RakU2M1JkdDJ6YnduZWJ3VEc1WnliZVdTd2J6eStCSjM0WkhjVWhQQVk4OXlKUVh1RTBJek1aRmNFQmJQTlJiV0VDUktnanEvL3FUOW5tRE9GVmxTUkN0MndpcVBTemx1d24rditzdVFFQnNValRHTUVkMjV0S1hYVGtOVzIxd0lXYnhlU3lVb1RYd0x2R1M2eGx3UVNnTnBrMnFYWXdmOGlYZzdWV1pBZ01CQUFHalFqQkFNQjBHQTFVZERnUVdCQlFnSXZ6MGJOR0poamdwVG9rc3lLcFA5eHY5b0RBUEJnTlZIUk1FQ0RBR0FRSC9BZ0VBTUE0R0ExVWREd0VCL3dRRUF3SUJCakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBanZqdU9NRFNhK0pYRkNMeUJLc3ljWHRCVlpzSjRVZTNMYmFFc1BZNE1ZTi9oSVE1Wk01cDdFamZjbk1HNEN0WWtOc2ZOSGMwQWhCTGRxNDVyblQ4N3EvNk8zdlVFdE5NYWZiaFU2a3RoWDdZKzlYRk45TnBtWXhyK2VrVlk1eE94aThoOUpESWdvTVA0VkIxdVMwYXVuTDFJR3FyTm9vTDltbUZuTDJrTFZWZWU2L1ZSNkM1K0tTVENNQ1dwcE11SklaSUkydjlvNGRrb1o4WTdRUmpRbExmWXpkM3FHdEtidzd4YUYxVXNHLzV4VWIvQnR3YjJYMmc0SW5waUIveXQvM0NwUVhwaVdYL0s0bUJ2VUtpR24wNVpzcWVZMWd4NGcweExCcWNVOXBzbXlQeksrVnNndzJqZVJRNUpsS0R5cUUwaGViZkMxdHZGdTBDQ3JKRmN3PT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZkNBWUFBQUNHVnMrTUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFIWVlBQUIyR0FWMmlFNEVBQUFiTlNVUkJWRmhIcFZkN1ROVjFGRC8zZDU5d2VRU0lnUzlBUUFYY0ZMQVFaaTlmcGVWejF0WS9XVFpyNVd4cGM3VzVrbkxhNWpJM1o4NXNyUzJuTTJzanRXd1pTN0lVSDRINHhDbkVReDREQVpGNzRWN3VzODg1djkvbEluQnZWSi9CNFB2OW51LzVudS81bnZNNTU2ZnpBL1F2MEhiL0lyWDNWRktQbzQ1Y25tNGluVUlXWXdMRlJtWlFVdXdqRkcvTjFpUkhoMUVaME5SVlJ1ZHF0MUJkKzJuU0t5Uy9PaHlzMCtsazNlLzNrUTlxdkQ0WlV0YTRWVlNVdVkwZWlweWlUaEFmb2NvT1JWZ0R1dXczcUtSaUFkM3JiY0V0alRqWUlvZjZXYUhzQ216VlBXQ014K2NnaDh0THFXTUthTVdzVWpMcW8yUnRKSVEwb096bWVycFF1NGVzWmdzT05rR3hIN2Qwa2R2VFQxN3M0T01VN1ZJOFpoamdHYU0rQXE5aUVOdThQaWYxdWR6MDdNd3ZLV2Y4R2xWb0NFWTA0UEM1V2RUYVhZRmJSOHZOdkw1KzNLZ2ZiNXhOTXlhOVJhbUppeW5hTWxHVFZ0RmxyNmJhOXUrcHFuRVg0dU11UlJnalNZRWhyTjd1dEZGZTZscWFsN05ma3c1aW1BR0h5blBwYms4Vm1ZMHhzdG5wdGxGQ1ZDWXR6VHVCTjgzUXBNTGpUdGV2ZFB6U1VuSjdlOG1ranhaMzlmWGJLRGZsZFpxYnZVK1RVZ0duQlZGNmZRMmlQSGc0VzE2VVdVd3Z6YmsxNnNNWkUrUG4wcHZ6N0pTZXVBeWVzOGxjcENtYUt1by9wK3FXcjJVY3dJQUhXcnZQMFlFemhYQXRMQWJzc0hocDdpR2FtdnlpalA4cnlxclhVV1g5WG9vd3h5QXVmTkJycDQzUE9CRlhabGtmOE1EUmlxY3B5b3dBd3B1ejJ4K2ZXdnovRHRkZTlzbXN6eWd0Y1I2QzF3YmR6Qmw2T2xxNVdOWVk0b0dhdGhKTXJrVEV4MGpBUlNIQVZzKzVyWWtRTlhiK1FnZlBMc1E2Z1h5SW5zcmVRZm1wbTdSVkZZZkw4Nm4xZmlVT2tZdlNoa1VQeHZidWt6b3k2SzFpaE0xaG8zWHpXNkV2U2ZYQStkcGlXR2FXZCtkb1h6THptR3dLWUZMQ0FzUkFsUEJBaE1sQ0ZYVTd0QlVWUHI4SGdWY0pIV3ErRjAwcGxyK0RNVGRyUDR6dnhZMTFrTk1oeFQrU2VUR2crZDRWNUxRSml0eVVHSk5COFZGWnNqZ1lCWk0vSUkvWENUa2owcXlET3BGMkFWUTE3Q0lqVXAvRG5UMVVrTDVGNWdkaitzUzF3ZzFnRTNnaWdtNjBmQ1h6U25QWGJ5QVBiSVh2K0lEcEUxNlRoYUhJUzlza3lobG1NRTVGM2NmcUFLaHEyQzBFNVBIMWdZYVhhTFBEa1pHMEhESk9uS1dIcDUxSTB6NVNPdXg4ZTFXQXVaemRIUXJUa3A4VG1qWG9JK2xhMHdHWnN6dWJxYk8zaWZRNkEvVzd2VlNZc1YzbVIwSkt3a0tjNFdIaUJrbVI4STNDQ2dJODdvT0w0cXpUNVArUlVKQmVqRU9nQVBLOGhZUHphdE0rZUlUcDJJTzl5VFFtZXJvbVBSeHgxcXhBY3NpbGUvdWJTZUViY1dRR1lFQ2doY0xZMkh5S2pvZ2pIMjVoTXBqcFV2MU91Z2xpNGVoMmVSdzBPMzJiSmpreXVDZ056ZzB2emxZTVNpU3MwdW9vNE1HN2hNT2pDRWFYMXlGRTBuU3ZqQnp1VG5FcEs4Nlo4SW9xRkFJdWJ3OGtnOUFyRWFSRVdTWkkrakg0WGJwNmc5RTlFbkpUM29hUnpETitNVUpCUURIbjU2YThvVW1FQnVzT3hCcy9ONSt0SkViUGtBRkRqOFVHdk9zL0lXdmNTZ2xHQmh2UzcvRlRZZnBXR1lkRFk4ZlBBeFdTQTM1c1RDNHA0K0xtNEFhcUlvUGVRdGZ1Zks2SmgwWmh4bGJzVVhPU21YTmlmRDVaVEFreURvZmJiY2NseG5BOFdOQXF4Q2JSTnlraFh4UXBhRHc2N2ZYVVlic2lHMEtodHYyb2VJdmg4cmhRTVlPY0VBcVhHL2VJK3puZ09jNXl4cjhxODJJQU0xYy9GTEZPcGxxdTVlRlFYck1aekdjVkNqWWJMV0c1STRCVDFldVJybGJ4dE5PdE1pdERERWhMWElJeW5BQXZ1T0VXRTNYM05kQWZ0OTRWZ2FHNDJYSVF0MFpYNlBlQ0UvcVFGZTlySzZIeDdZVTUwS3ZIN2ZXNGZTK3E3S0tCSnhzZ2dCWDVwU0FHaDFqSXJWaDV6UTZ3M1JmYWFoQlhtL2FDYkNaVGpDVUZVVHlXWnFXOXA2Mk1qSlBYVnFPclBnTU80TnY3NEdrZitvd2Z0TlZCRFFuakZKcUhTdzE3cFh2aFdXNUtacWUvUTQ5Ti9VU1RDQVZXb1FYRklIQkhYWGUzRlByVURzdUdEbXRGL2hIS1RIcGVreGhpQU9QSStTSnE2UzZIRjRJOVlXemtCSlRvNDZpVU16V3A4UGlyL1JpZHVMeEtZc1Nrc1Y4dkxsT1F2aEdYMllsUjBPQmhCakMrdS9nRWN2WTBBcEs3WWs0MU54alBTUW5XRkhURjY2VXJqZ2V2QjhDdTVhK2wydllTUlB0dVZEbzczaGhkTVNIblVYN3RUanNWWkd4QWwvV3B0aU9JRVExZ25MMjltWDYvdFIxdG1sa1lqOFc0WCtDU2pXY1VER1kxTnBTL0M3aFNLcWlNTE0vbDJRbVNXWjczRGR6K2dpbzhCQ0VOWVBRNDZxbmt6d1hVYnF2Qmt4alVRc1dmWkZnYnVvM3JBZit3TjdqT085MCt5bng0UGkzTCswbllMMVNjaERVZ0FQNGdQVi83SWQxcSsxSFNobXVHa0lxV1JQZ3l4TUZxUDhIZmpUbmpYd1k1YlFmYkpjdDZPSXpLZ01Ib3RGL0hlMWVnc2F4SFNxRzZ3ZmRtUTV4OE55VEZGcUJjcDJpU293SFIzeWs1KzM2aEY3dlhBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMV9QUkUiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6ImI5MmMzZjlhYzAxNDQwNTY4ODdmMTQwYTI1MDExNjNiIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWV9LCJtYXhNc2dTaXplIjoxMjAwLCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0Ijo4LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjEyOCwidHJhbnNwb3J0cyI6WyJ1c2IiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotOH1dfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjAtMDUtMTIiLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IlNlY3VyaXR5IEtleSBieSBZdWJpY28iLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDE5MTAxNzAwNSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4xLjEiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMyJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMC0wNS0xMiJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjAtMDUtMTIifSx7ImFhZ3VpZCI6IjU0ZDlmZWU4LWU2MjEtNDI5MS04YjE4LTcxNTdiOTljNWJlYyIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiNTRkOWZlZTgtZTYyMS00MjkxLThiMTgtNzE1N2I5OWM1YmVjIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkhJRCBDcmVzY2VuZG8gRW5hYmxlZCJ9LCJkZXNjcmlwdGlvbiI6IkhJRCBDcmVzY2VuZG8gRW5hYmxlZCIsImFsdGVybmF0aXZlRGVzY3JpcHRpb25zIjp7ImVuLVVTIjoiSElEIENyZXNjZW5kbyBFbmFibGVkIn0sImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMCwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDK2pDQ0FxR2dBd0lCQWdJVUI5ZjZ3ZVY0TFpqbk01UEJBV0V2alF3cXErMHdDZ1lJS29aSXpqMEVBd0l3YXpFTE1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBb01Da2hKUkNCSGJHOWlZV3d4SWpBZ0JnTlZCQXNNR1VGMWRHaGxiblJwWTJGMGIzSWdRWFIwWlhOMFlYUnBiMjR4SXpBaEJnTlZCQU1NR2taSlJFOGdRWFIwWlhOMFlYUnBiMjRnVW05dmRDQkRRU0F5TUI0WERUSXlNREl4TlRJeE16TXdOMW9YRFRRM01ESXhOVEl4TXpNd04xb3daakVMTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFvTUNraEpSQ0JIYkc5aVlXd3hJakFnQmdOVkJBc01HVUYxZEdobGJuUnBZMkYwYjNJZ1FYUjBaWE4wWVhScGIyNHhIakFjQmdOVkJBTU1GVVpKUkU4Z1FYUjBaWE4wWVhScGIyNGdRMEVnTXpCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQkdLdDVrdkpNSm9BTWdiY3laMW1NZ1B3Vi9xNVZaWFYwYlgzV0RlQlljdDUvZFJUeFdoZzNiUTJ6Sm1UbWIyL1JXdE4vY29WYTNJVmpOSElZbW5XcmpPamdnRW1NSUlCSWpBT0JnTlZIUThCQWY4RUJBTUNBWVl3RWdZRFZSMFRBUUgvQkFnd0JnRUIvd0lCQURBZkJnTlZIU01FR0RBV2dCUzc2RHBsOTN2QjJoNUZETHZ5TU12VUJ5ajNpekFkQmdOVkhRNEVGZ1FVMThkdFN3YVllYThRb0xzS3g4aFBpU05aVi93d1JBWURWUjBmQkQwd096QTVvRGVnTllZemFIUjBjRG92TDJOeWJDNW9lV1J5WVc1MGFXUXVZMjl0TDBaSlJFOUJkSFJsYzNSaGRHbHZibEp2YjNSRFFUSXVZM0pzTUhZR0NDc0dBUVVGQndFQkJHb3dhREEvQmdnckJnRUZCUWN3QW9ZemFIUjBjRG92TDJOeWJDNW9lV1J5WVc1MGFXUXVZMjl0TDBaSlJFOUJkSFJsYzNSaGRHbHZibEp2YjNSRFFUSXVjRGRqTUNVR0NDc0dBUVVGQnpBQmhobG9kSFJ3T2k4dmIyTnpjQzVvZVdSeVlXNTBhV1F1WTI5dE1Bb0dDQ3FHU000OUJBTUNBMGNBTUVRQ0lGcUNRVWdPWUdRMVNPRXgwSVdmaUFsc09LTS9KUTJYUStDaTV0aWpuUVJUQWlCaE5hMEU4aldzc2JBZitsR25BUU5BZTNuZTZYczNFeFpzaURHWXdoRVVwQT09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQVZNQUFBQ3NDQVlBQUFERytFOE1BQUFBSUdOSVVrMEFBSG9sQUFDQWd3QUErZjhBQUlEcEFBQjFNQUFBNm1BQUFEcVlBQUFYYjVKZnhVWUFBQUFKY0VoWmN3QUFEMkFBQUE5Z0FYcDRSWTBBQUF5Z1NVUkJWSGhlN1oxL2JKVGxIY0J2amhqTmNDNE8rZFhlWFZ0VVRNemlQN29ZWFpZNTFJa0tkMWZObkZIajVvaEJtQTdqMk1Sc1pvbG14aGhOSm9ydDI0S2dzaUZzaW03VEFkTVlSRlFFRlRjVnh3L3J3QUVGUkNoUSt1dWVQYy8xcVFQM1ROcyszM3ZldSt2bmszelM0MmdmbnZlOXQ1OCs3NzNYSXdFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBVUVwa0c2L1hQcG5JUlI4Z0loNXQ0MXI5Y1lhdEJmd1A5UTNuNngyMFRadFAxRGNwUk1UUE5kZVUxNHV1VnQyTXEyMUZCa3h0TWptckxwVnEwUjgzMTFaWDMycnZMbU1LUDIzMGpxbVAzRHNORWZIenpFVzdFeGZPR1dtTDhvV2trOGtmMXFYU1BYWFZxYVhKVWFQT3FLbXFPck11bWZwcmJUTFZuVXFsTHJlZlZrWk1tUDExL1pPbHc3bHpFQkVIb2ptcnpVWlRiVjMrTDNWangwNHdJUjA5ZXZUSjQxS3BLZG9iakNOSGpodzFkdXpZNUxoMGpkS3IxTFB0cDVjQkpxU3NSaEZSMHQ2Z3pyU1ZjWEdNRHFtcVNTWXordll3RTg2YXF0UzF0ZFhwNjgzdHVqRmpValZqazVQMUtyVzk5OVBMZ1Z6VTVkd1ppSWcrbXFCZU9xZk9sdVlvMHVuMGNUcW1YZmFQdzh3SzFkNU82RlA4dDJyVDZWdjB6Uytic1BiZVcrcmtvbytjT3dFUlVjSmNkTURXNWlpcXE2dVBINWVxNlZ0MUZsYW1PcUk3NjFJMTIwOUoxL1JGOWt2bEVkUDZobTg3Tng0UlVkSnN3ejIyT3A5aVlxcFhvNTMyajJabG1qL3BwSk8rcWo5MnA4ZU1PZDNlZjB4NXhEVFh0TSs1NFlpSWt1YWlEbHVkSStrOWhVOG5qdE8zQ3pFMWQ0NFlNV0tNdm4zUTNCNCtldmpKK25iZktyV0U0WFdraUJqS3k1dlBzdVg1bExwVWFtWnRNcjNmM0s2dFRyNVR1Rk5UbDB3K1dwTkszYXovcnFPMk9qM04zbDJpVEk2bU9qY1lFYkVZNXBxZXRmVTVpcnJxMURPMXlkU0JjVldwRyt4ZGlicXE1QXl6T3RYM0w3UjNsVEQxMFhMbkJpTWlGc05jVStIVTNVVnlWUElNSGRXVnA5WFdxVk5yYXZQNjl2S3FFVlduMnI4dWNlcWovYzROUmtRc2hybW9qRjR2T2hDSUtTS0cxSDBScWdJZ3BvZ1lVbUtLaUNnZ01VVkVGSkNZSWlJS1NFd1JFUVVrcG9pSUFoSlRSRVFCaVNraW9vREVGQkZSUUdLS2lDZ2dNVVZFRkpDWUlpSUtTRXdSRVFVa3BvaUlBaEpUUVM5N1dDVXVlRUFsTHB3ZFZ2TnY1aUwzbkFicjl4NTAvMXZGOWlLdGF6NERNYTdId0R6K3J2bjB4NngrL09LWWR6RTAyM0dSUG43TU1YU3AzaWVURzkzYlhHa1NVemx2bnZ1eWlvdmpycHpubk5PZzFBZi91czI3N01oaDJmbkpvZDV2UU5lOCtxUCtKbzZMYWRFcTk1ejY0ZGV1WFdCSHFRdzZ1M3RVVzN1bjJyeGpuMXE5WWFkYXNucXp1cW41WlhYeU5RdFU0dUtIVkNKVGdZRWxwbkthYjZhNHFKU1lmclRuUU5uRzlJYUhYM0xQcVIrZXFDTXpWTml6LzdCYThkWldkZVY5ejZ2RUJMMktyWlN3RWxNNWlhay94SFJvMGRuVm81NWQ5NkVhZitNaXY2ZEpTa0ZpS2ljeDlZZVlEbDNlYnRtanpwdTExTy94ajFOaUtpY3g5WWVZd2h0YmRxbFRwdXFWcXJrbzU5aFhKU3N4bFpPWStrTk13elByc1RYcXpzVnZxTHVXdktFeWR5OVR1WHVXcTE4dWZMMXczNzFMMTZzVjY3Y1ZMaWFGcENlZlY0KysrRStWdUdDMmMzK1ZwTVJVVG1McUR6RU5UMkxDYi9VcXNGRWxNZzMvblpPNUtGUzRUenRKUHg2WHpsRlZVeGFxS1hOV3FvL2JEdHV2TEQ2NzI5clZOMzY2eElUcXFQMVZraEpUT1ltcFA4UTBQSVhYaGpybTVGUkg3WmpKRGVxTzM2KzFYMTE4dW50NjFDMlByTmJINVJHeEwwV0pxWnpFMUI5aUdwNEJ4YlJQSGJaSmR5K3pJNFJoL2d2dkYxYkl6dm1VZ3NSVVRtTHFEekVOejZCaWFzdzBxaC9yMC82UVBQbnFCMzdIUnpFbHBuSVNVMytJYVhnR0hWTmpObEovLzNDUEhTa01UNy9XVXBwQkphWnlFbE4vaUdsNHZHS3FIZitUeFhha2NQenhGYjFDTGJYblVJbXBuTVRVSDJJYUh0K1ltcWk5dDIydkhTMGNQMXZ3cW5zK2NVbE01U1NtL2hEVDhIakhOQmVwODI1LzJvNFdqbncrcjhaUFgreWVVeHdTVXptSnFUL0VORHplTWRWKzVhcEg3R2hoMlhld1EyVCtJaEpUT1ltcFA4UTBQQ0l4bW1STzlUK3hJNGJsbVRVdGhkV3hjMTRoSmFaeUVsTi9pR2w0UkdLYWpkUXQ4MTZ4STRabitGV0N4LzlnSmFaeUVsTi9pR2w0cEU2VHo1eXh4STRZbnZjLzJ0djc2NitPZVFXVG1NcEpUUDBocHVHUml1bm82eCszSThiRGlPc2VkYzRybU1SVVRtTHFEekVOajFSTWgxM1JiRWVNQjNQTXh2cmNLVEdWazVqNlEwekRJeFZUY3hHcXE3dmJqaHFlcnU0ZXVXMFpqTVJVVG1McUR6RU5qMWlBOUhHemRsT3JIVFVlYnAwZjR3djVpYW1jeE5RZllob2VzWmhtR3RYQ2xSdnRxUEd3YmJjK2Z1SjZoMzVpS2ljeDlZZVloa2NzcGpwaXR6MjJ4bzRhRCswZFhTb3hNYWEzNlNPbWNoSlRmNGhwZUNSakd1ZHJUZnVJN2FvK01aVXp6cGgrNTFkL1V1Zk9lbHJFYi83OEtiVWhoamV1TUJEVDhJakZOS2JmMGY4c3R6Mit4ajIvWWt0TTVZd3pwcFVDTVEyUFdFeTE1OXkyMUk0YUg2dmUzZTZjVzlFbHBuSVNVMytJYVhncUxhWmI0N29JUlV6bEpLYitFTlB3VkZwTXQrODkyUHUvcWpybVYxU0pxWnpFMUI5aUdwNUtpK211ZmUwcWxuZmhKNlp5RWxOL2lHbDRLaTJtaGZjNHZjempHQnFzeEZST1l1b1BNUTFQeFozbWY4eHB2aXpFdEN3aHB1R3B0Smp1Mkh1SW1JcENUTXNTWWhxZVNvdnBCenYzbTdBNTUxZFVpYW1jY2NiVXZNSEU2MEt1MmJoVEhXanZzaU9IaFppR3A5Sml1bVQxWnVmY2lpNHhsVFBPbUI1cmZoS2JKOTBsdlBnaDlmckdlTjc5aDVpR1J5eW1KZkliVVBYM0xIZlByOWdTVXpuampDbS9tMjhscGdOR0xLWWw4cnY1c1p6aUc0bXBuTVRVSDJJYUhzbVlUby81dXNIK1E1MjlaMWV1K1JWYllpb25NZldIbUlaSExLYVpSclhvcFUxMjFIaFkzN0tibGFrNHhIVHdFdE5CUVV3YjFZcjEyK3lvOFhEMnpLWHV1WVdRbU1wSlRQMGhwdUVSaStua0J0WDZ5U0U3YW5qYTJ2VXAvaVV4dlRHMGtaaktTVXo5SWFiaGtYek9ORTZlV0xYSlBhOVFFbE01aWFrL3hEUThVakU5OFpyNWRzVHc5UFRrNDNuYnZTTWxwbklTVTMrSWFYaWtZbnJxOUNmc2lPSDV5N3AvbVpnNTV4Vk1ZaW9uTWZXSG1JWkhKS1k2WkpmYytad2RNU3lITzd2MU1SUGpjNlY5RWxNNWlhay94RFE4SWpITk5Lb2xxN2ZZRWNNeXJYR1ZlMDZoSmFaeUVsTi9pR2w0UkdJYTA4V25UZHYzeGZjaS9jOUtUT1VrcHY0UTAvQkl4SFQ4dEVWMnRIQzBkK2pUZTMyc3V1WVRpOFJVVG1McUR6RU5qM2RNOVNuKzNPYzMyTkhDWUs3ZW56WHpTZmQ4NHBLWXlrbE0vU0dtNGZHTjZmQWZ6TE1qaFdQR3ZKZWRjNGxWWWlvbk1mV0htSWJISzZhVEc5VGN2NFZkbGQ2K2NJMEpsM3MrY1VwTTVTU20vaERUOEF3NnB0bEluWC9Ibiswb1liaXBlVlU4L3lWSmZ5U21jaEpUZjRocGVBWVYwMHlET3ZmMlord0l4YWU3SjY5K05QdkYwbHlSOWtsTTVTU20vaERUOFBRN3BpWmsrclRlSEd2M1ByWGVmblh4T2RqZXFjWk5YZVNlVXlsSlRPVWtwdjRRMC9Ba3ZuVi83N3N0ZmRhSkQ2bGhWelNyRTYrZXIwNi9hYkhLM0wxYy9TSHdDL09YdmJtMU1BL1hQaXM1aWFtY3hOUWZZZ3FHZzRjNzFWWDNQMTlZQ2J2MlYwbEtUT1VrcHY0UTA2Rk5SMWUzZW5qWnV5cngzUWVjKzZta0phWnlFbE4vaU9uUXBMMnpTeld0Mk5CN1NsL0tGNWsrVDJJcUp6SDFoNWdPSGZMNXZIcTdaWSthTW1lbFNseWdWNkxsR3RFK2lhbWN4TlFmWWxyWmZOeDJXSzE2YjRlNjBielRVN1pSSlNaNVBOYWxKakdWYzlKdmxxbmxiMjR0WElFTTZjcDMvcTJPL2Y1YzU1d0daYVpSUGZqc1A1ei9Wckg5M2NxTitodk00NkxEeERucXBYZTNPOGN1cGl2ZTJxWXV1ZXM1OTV6NjRRbFh6MWU3OTdlcmx0YTJpdkROTGJ2VjJrMnRoWDN6NnlmV3FvbDNQcWRPTUQvd0w5YW44ZnFIdFdzZmxMM0VGTEVFTktlNDV1VklabFZlN3BydE1GZmh5K2xLdklURUZCRlJRR0tLaUNnZ01VVkVGSkNZSWlJS1NFd1JFUVVrcG9pSUFoSlRSRVFCaVNraW9vREVGQkZSUUdLS2lDZ2dNVVZFRkpDWUlpSUtTRXdSRVFVa3BvaUlBaEpUUkVRQkt6YW11YWpWdWNHSWlNWHhvSzFQaFpGdGFISnNMQ0ppY2N4RnUyeDlLb3dybXNjN054Z1JzUmhtb2wvWStsUWc1amtNMTBZaklrcWFpL0syT2hWS3J1a0Y1NFlqSWtxYWkzYlk2bFF3dWFqYnVmR0lpQkxtdE9mY2Q3d3RUZ1dUaTZZN2R3QWlvb1M1YUptdHpSQ2dQbnJOdVJNUUVYM01ScTIyTWtPSWJPTkc1ODVBUkJ5TXVhWUtmU2xVZjhoRmkvUU95T3VWcW52bklDSitrZWJLZlgzVFdsdVZJVXcyT2sydlVsdUpLaUlPMkZ5ME41RnR1czdXQkFxWXFOWkg2L1RIZlRxc25ZbjZacjJ6RUJHUDBLeENzMUdiYnNTV1JLWmhncTBIQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUJwa1VqOEI0QW9tK01iVCszSkFBQUFBRWxGVGtTdVFtQ0MiLCJzdXBwb3J0ZWRFeHRlbnNpb25zIjpbeyJpZCI6ImhtYWMtc2VjcmV0IiwiZmFpbF9pZl91bmtub3duIjpmYWxzZX1dLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCJdLCJleHRlbnNpb25zIjpbImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6IjU0ZDlmZWU4ZTYyMTQyOTE4YjE4NzE1N2I5OWM1YmVjIiwib3B0aW9ucyI6eyJyayI6dHJ1ZSwiY2xpZW50UGluIjp0cnVlfSwicGluVXZBdXRoUHJvdG9jb2xzIjpbMV19fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMi0wMS0wNCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMCwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJISUQgQ3Jlc2NlbmRvIEVuYWJsZWQiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDIyMDEwNDAwMiIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4zIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjMifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjItMDEtMDQiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzB9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjItMDItMDIifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyI1NzkxOGJjMzM4MDM1MDM5MDBlZjE1YWU5YjJhZWYwZDU0N2JkNmY1IiwiYzQ4Yjc4Y2FlYWU3YWY2NWMxY2RhNGEzYjliOWJmYTQ2YmJjMDY1YSIsImJkZWI3ZjAxNWE2NmU0Yzg0NDhiNDE0ZmZkNDFjYTY2OWJiYTZiNGEiLCJlMmRjYWI3ODA5OTA0MDI0MDE3NmIyMmEyMGQ2YzNkOTkzNTA4YmQxIiwiNGZmODg2ZTEwN2RkZDdmMTM2Y2JiNWZjYzlkZjIzMDA2ZTJjMmQyNyIsIjY4NDlhNGY4Y2NmNzlmMTQyMjQ5N2Q3NzljZGM5MDFhODFiNjAyMjEiLCJlM2UyNmYyMmU1NWEzZWUxYTQ0OTNkN2YwMjAwOTg1ZWFmZWUyNTcyIiwiOTliMDExODE5YTliMTUzOWIyOGI4NmY2MjU1NDdmMTczZWI1ZDU3YiJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyI1NzkxOGJjMzM4MDM1MDM5MDBlZjE1YWU5YjJhZWYwZDU0N2JkNmY1IiwiYzQ4Yjc4Y2FlYWU3YWY2NWMxY2RhNGEzYjliOWJmYTQ2YmJjMDY1YSIsImJkZWI3ZjAxNWE2NmU0Yzg0NDhiNDE0ZmZkNDFjYTY2OWJiYTZiNGEiLCJlMmRjYWI3ODA5OTA0MDI0MDE3NmIyMmEyMGQ2YzNkOTkzNTA4YmQxIiwiNGZmODg2ZTEwN2RkZDdmMTM2Y2JiNWZjYzlkZjIzMDA2ZTJjMmQyNyIsIjY4NDlhNGY4Y2NmNzlmMTQyMjQ5N2Q3NzljZGM5MDFhODFiNjAyMjEiLCJlM2UyNmYyMmU1NWEzZWUxYTQ0OTNkN2YwMjAwOTg1ZWFmZWUyNTcyIiwiOTliMDExODE5YTliMTUzOWIyOGI4NmY2MjU1NDdmMTczZWI1ZDU3YiJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiWXViaUtleSA1IFNlcmllcyJ9LCJkZXNjcmlwdGlvbiI6Ill1YmlLZXkgNSBTZXJpZXMiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCIsInJlbW90ZV9oYW5kbGUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlESGpDQ0FnYWdBd0lCQWdJRUcwQlQ5ekFOQmdrcWhraUc5dzBCQVFzRkFEQXVNU3d3S2dZRFZRUURFeU5aZFdKcFkyOGdWVEpHSUZKdmIzUWdRMEVnVTJWeWFXRnNJRFExTnpJd01EWXpNVEFnRncweE5EQTRNREV3TURBd01EQmFHQTh5TURVd01Ea3dOREF3TURBd01Gb3dMakVzTUNvR0ExVUVBeE1qV1hWaWFXTnZJRlV5UmlCU2IyOTBJRU5CSUZObGNtbGhiQ0EwTlRjeU1EQTJNekV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRQy9qd1l1aEJWbHFhaVlXRU1zcldGaXNnSitQdE05MWVTcnBJNFRLN1U1M213Q0lhd1NESHk4dlVtazVOMktBajlhYnZUOU5QNVNNUzFoUWkzdXN4b1lHb25YUWdmTzZaWHlVQTlhK0tBa3FkRm5Cbmx5dWdTZUNPZXA4RWRaRmZzYVJGdE1qa3d6NUdjejJQeTR2SVl2Q2RNSFB0d2F6MGJWdXpuZXVlSUV6NlRuUWpFNjNSZHQyemJ3bmVid1RHNVp5YmVXU3dienkrQkozNFpIY1VoUEFZODl5SlFYdUUwSXpNWkZjRUJiUE5SYldFQ1JLZ2pxLy9xVDlubURPRlZsU1JDdDJ3aXFQU3psdXduK3Yrc3VRRUJzVWpUR01FZDI1dEtYWFRrTlcyMXdJV2J4ZVN5VW9UWHdMdkdTNnhsd1FTZ05wazJxWFl3ZjhpWGc3VldaQWdNQkFBR2pRakJBTUIwR0ExVWREZ1FXQkJRZ0l2ejBiTkdKaGpncFRva3N5S3BQOXh2OW9EQVBCZ05WSFJNRUNEQUdBUUgvQWdFQU1BNEdBMVVkRHdFQi93UUVBd0lCQmpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQWp2anVPTURTYStKWEZDTHlCS3N5Y1h0QlZac0o0VWUzTGJhRXNQWTRNWU4vaElRNVpNNXA3RWpmY25NRzRDdFlrTnNmTkhjMEFoQkxkcTQ1cm5UODdxLzZPM3ZVRXROTWFmYmhVNmt0aFg3WSs5WEZOOU5wbVl4citla1ZZNXhPeGk4aDlKRElnb01QNFZCMXVTMGF1bkwxSUdxck5vb0w5bW1Gbkwya0xWVmVlNi9WUjZDNStLU1RDTUNXcHBNdUpJWklJMnY5bzRka29aOFk3UVJqUWxMZll6ZDNxR3RLYnc3eGFGMVVzRy81eFViL0J0d2IyWDJnNElucGlCL3l0LzNDcFFYcGlXWC9LNG1CdlVLaUduMDVac3FlWTFneDRnMHhMQnFjVTlwc215UHpLK1ZzZ3cyamVSUTVKbEtEeXFFMGhlYmZDMXR2RnUwQ0NySkZjdz09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWZDQVlBQUFDR1ZzK01BQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBSFlZQUFCMkdBVjJpRTRFQUFBYk5TVVJCVkZoSHBWZDdUTlYxRkQvM2Q1OXdlUVNJZ1M5QVFBWGNGTEFRWmk5ZnBlVnoxdFkvV1RacjVXeHBjN1c1a25MYTVqSTNaODVzclMybk0yc2p0V3daUzdJVUg0SDR4Q25FUXg0REFaRjc0Vjd1czg4NXY5L2xJbkJ2VkovQjRQdjludS81bnUvNW52TTU1NmZ6QS9RdjBIYi9JclgzVkZLUG80NWNubTRpblVJV1l3TEZSbVpRVXV3akZHL04xaVJIaDFFWjBOUlZSdWRxdDFCZCsyblNLeVMvT2h5czArbGszZS8za1E5cXZENFpVdGE0VlZTVXVZMGVpcHlpVGhBZm9jb09SVmdEdXV3M3FLUmlBZDNyYmNFdGpUallJb2Y2V2FIc0NtelZQV0NNeCtjZ2g4dExxV01LYU1Xc1VqTHFvMlJ0SklRMG9Pem1lcnBRdTRlc1pnc09Oa0d4SDdkMGtkdlRUMTdzNE9NVTdWSThaaGpnR2FNK0FxOWlFTnU4UGlmMXVkejA3TXd2S1dmOEdsVm9DRVkwNFBDNVdkVGFYWUZiUjh2TnZMNSszS2dmYjV4Tk15YTlSYW1KaXluYU1sR1RWdEZscjZiYTl1K3BxbkVYNHVNdVJSZ2pTWUVock43dXRGRmU2bHFhbDdOZmt3NWltQUdIeW5QcGJrOFZtWTB4c3RucHRsRkNWQ1l0elR1Qk44M1FwTUxqVHRldmRQelNVbko3ZThta2p4WjM5ZlhiS0RmbGRacWJ2VStUVWdHbkJWRjZmUTJpUEhnNFcxNlVXVXd2emJrMTZzTVpFK1BuMHB2ejdKU2V1QXllczhsY3BDbWFLdW8vcCtxV3IyVWN3SUFIV3J2UDBZRXpoWEF0TEFic3NIaHA3aUdhbXZ5aWpQOHJ5cXJYVVdYOVhvb3d4eUF1Zk5CcnA0M1BPQkZYWmxrZjhNRFJpcWNweW93QXdwdXoyeCtmV3Z6L0R0ZGU5c21zenlndGNSNkMxd2JkekJsNk9scTVXTllZNG9HYXRoSk1ya1RFeDBqQVJTSEFWcys1cllrUU5YYitRZ2ZQTHNRNmdYeUluc3JlUWZtcG03UlZGWWZMODZuMWZpVU9rWXZTaGtVUHh2YnVrem95NksxaWhNMWhvM1h6VzZFdlNmWEErZHBpV0dhV2QrZG9Yekx6bUd3S1lGTENBc1JBbFBCQWhNbENGWFU3dEJVVlByOEhnVmNKSFdxK0YwMHBscitETVRkclA0enZ4WTExa05NaHhUK1NlVEdnK2Q0VjVMUUppdHlVR0pOQjhWRlpzamdZQlpNL0lJL1hDVGtqMHF5RE9wRjJBVlExN0NJalVwL0RuVDFVa0w1RjVnZGorc1Mxd2cxZ0UzZ2lnbTYwZkNYelNuUFhieUFQYklYditJRHBFMTZUaGFISVM5c2t5aGxtTUU1RjNjZnFBS2hxMkMwRTVQSDFnWWFYYUxQRGtaRzBIREpPbktXSHA1MUkwejVTT3V4OGUxV0F1WnpkSFFyVGtwOFRtalhvSStsYTB3R1pzenVicWJPM2lmUTZBL1c3dlZTWXNWM21SMEpLd2tLYzRXSGlCa21SOEkzQ0NnSTg3b09MNHF6VDVQK1JVSkJlakVPZ0FQSzhoWVB6YXRNK2VJVHAySU85eVRRbWVyb21QUnh4MXF4QWNzaWxlL3ViU2VFYmNXUUdZRUNnaGNMWTJIeUtqb2dqSDI1aE1wanBVdjFPdWdsaTRlaDJlUncwTzMyYkpqa3l1Q2dOemcwdnpsWU1TaVNzMHVvbzRNRzdoTU9qQ0VhWDF5RkUwblN2akJ6dVRuRXBLODZaOElvcUZBSXVidzhrZzlBckVhUkVXU1pJK2pINFhicDZnOUU5RW5KVDNvYVJ6RE4rTVVKQlFESG41NmE4b1VtRUJ1c094QnMvTjUrdEpFYlBrQUZEajhVR3ZPcy9JV3ZjU2dsR0JodlM3L0ZUWWZwV0dZZERZOGZQQXhXU0EzNXNUQzRwNCtMbTRBYXFJb1BlUXRmdWZLNkpoMFpoeGxic1VYT1NtWE5pZkQ1WlRBa3lEb2ZiYmNjbHhuQThXTkFxeENiUk55a2hYeFFwYUR3NjdmWFVZYnNpRzBLaHR2Mm9lSXZoOHJoUU1ZT2NFQXFYRy9lSSt6bmdPYzV5eHI4cTgySUFNMWMvRkxGT3BscXU1ZUZRWHJNWnpHY1ZDalliTFdHNUk0QlQxZXVScmxieHROT3RNaXREREVoTFhJSXluQUF2dU9FV0UzWDNOZEFmdDk0VmdhRzQyWElRdDBaWDZQZUNFL3FRRmU5cks2SHg3WVU1MEt2SDdmVzRmUytxN0tLQkp4c2dnQlg1cFNBR2gxaklyVmg1elE2dzNSZmFhaEJYbS9hQ2JDWlRqQ1VGVVR5V1pxVzlwNjJNakpQWFZxT3JQZ01PNE52NzRHa2Yrb3dmdE5WQkRRbmpGSnFIU3cxN3BYdmhXVzVLWnFlL1E0OU4vVVNUQ0FWV29RWEZJSEJIWFhlM0ZQclVEc3VHRG10Ri9oSEtUSHBla3hoaUFPUEkrU0pxNlM2SEY0STlZV3prQkpUbzQ2aVVNeldwOFBpci9SaWR1THhLWXNTa3NWOHZMbE9RdmhHWDJZbFIwT0JoQmpDK3UvZ0VjdlkwQXBLN1lrNDFOeGpQU1FuV0ZIVEY2NlVyamdldkI4Q3U1YStsMnZZU1JQdHVWRG83M2hoZE1TSG5VWDd0VGpzVlpHeEFsL1dwdGlPSUVRMWduTDI5bVg2L3RSMXRtbGtZajhXNFgrQ1NqV2NVREdZMU5wUy9DN2hTS3FpTUxNL2wyUW1TV1o3M0RkeitnaW84QkNFTllQUTQ2cW5rendYVWJxdkJreGpVUXNXZlpGZ2J1bzNyQWYrd043ak9POTAreW54NFBpM0wrMG5ZTDFTY2hEVWdBUDRnUFYvN0lkMXErMUhTaG11R2tJcVdSUGd5eE1GcVA4SGZqVG5qWHdZNWJRZmJKY3Q2T0l6S2dNSG90Ri9IZTFlZ3NheEhTcUc2d2ZkbVE1eDhOeVRGRnFCY3AyaVNvd0hSM3lrNSszNmhGN3ZYQUFBQUFFbEZUa1N1UW1DQyJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIwLTA1LTEyIiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZdWJpS2V5IDUgU2VyaWVzIChVU0IpIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVMkYxMTAwMjAxOTEwMTcwMDgiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMS4xIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjMifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjAtMDUtMTIifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIwLTA1LTEyIn0seyJhYWd1aWQiOiJhMjUzNDJjMC0zY2RjLTQ0MTQtOGU0Ni1mNDgwN2ZjYTUxMWMiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6ImEyNTM0MmMwLTNjZGMtNDQxNC04ZTQ2LWY0ODA3ZmNhNTExYyIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IDUgU2VyaWVzIHdpdGggTkZDIn0sImRlc2NyaXB0aW9uIjoiWXViaUtleSA1IFNlcmllcyB3aXRoIE5GQyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzMsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfSx7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciLCJlZDI1NTE5X2VkZHNhX3NoYTUxMl9yYXciLCJzZWNwMzg0cjFfZWNkc2Ffc2hhMzg0X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURIakNDQWdhZ0F3SUJBZ0lFRzBCVDl6QU5CZ2txaGtpRzl3MEJBUXNGQURBdU1Td3dLZ1lEVlFRREV5TlpkV0pwWTI4Z1ZUSkdJRkp2YjNRZ1EwRWdVMlZ5YVdGc0lEUTFOekl3TURZek1UQWdGdzB4TkRBNE1ERXdNREF3TURCYUdBOHlNRFV3TURrd05EQXdNREF3TUZvd0xqRXNNQ29HQTFVRUF4TWpXWFZpYVdOdklGVXlSaUJTYjI5MElFTkJJRk5sY21saGJDQTBOVGN5TURBMk16RXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFDL2p3WXVoQlZscWFpWVdFTXNyV0Zpc2dKK1B0TTkxZVNycEk0VEs3VTUzbXdDSWF3U0RIeTh2VW1rNU4yS0FqOWFidlQ5TlA1U01TMWhRaTN1c3hvWUdvblhRZ2ZPNlpYeVVBOWErS0FrcWRGbkJubHl1Z1NlQ09lcDhFZFpGZnNhUkZ0TWprd3o1R2N6MlB5NHZJWXZDZE1IUHR3YXowYlZ1em5ldWVJRXo2VG5RakU2M1JkdDJ6YnduZWJ3VEc1WnliZVdTd2J6eStCSjM0WkhjVWhQQVk4OXlKUVh1RTBJek1aRmNFQmJQTlJiV0VDUktnanEvL3FUOW5tRE9GVmxTUkN0MndpcVBTemx1d24rditzdVFFQnNValRHTUVkMjV0S1hYVGtOVzIxd0lXYnhlU3lVb1RYd0x2R1M2eGx3UVNnTnBrMnFYWXdmOGlYZzdWV1pBZ01CQUFHalFqQkFNQjBHQTFVZERnUVdCQlFnSXZ6MGJOR0poamdwVG9rc3lLcFA5eHY5b0RBUEJnTlZIUk1FQ0RBR0FRSC9BZ0VBTUE0R0ExVWREd0VCL3dRRUF3SUJCakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBanZqdU9NRFNhK0pYRkNMeUJLc3ljWHRCVlpzSjRVZTNMYmFFc1BZNE1ZTi9oSVE1Wk01cDdFamZjbk1HNEN0WWtOc2ZOSGMwQWhCTGRxNDVyblQ4N3EvNk8zdlVFdE5NYWZiaFU2a3RoWDdZKzlYRk45TnBtWXhyK2VrVlk1eE94aThoOUpESWdvTVA0VkIxdVMwYXVuTDFJR3FyTm9vTDltbUZuTDJrTFZWZWU2L1ZSNkM1K0tTVENNQ1dwcE11SklaSUkydjlvNGRrb1o4WTdRUmpRbExmWXpkM3FHdEtidzd4YUYxVXNHLzV4VWIvQnR3YjJYMmc0SW5waUIveXQvM0NwUVhwaVdYL0s0bUJ2VUtpR24wNVpzcWVZMWd4NGcweExCcWNVOXBzbXlQeksrVnNndzJqZVJRNUpsS0R5cUUwaGViZkMxdHZGdTBDQ3JKRmN3PT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZkNBWUFBQUNHVnMrTUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFIWVlBQUIyR0FWMmlFNEVBQUFiTlNVUkJWRmhIcFZkN1ROVjFGRC8zZDU5d2VRU0lnUzlBUUFYY0ZMQVFaaTlmcGVWejF0WS9XVFpyNVd4cGM3VzVrbkxhNWpJM1o4NXNyUzJuTTJzanRXd1pTN0lVSDRINHhDbkVReDREQVpGNzRWN3VzODg1djkvbEluQnZWSi9CNFB2OW51LzVudS81bnZNNTU2ZnpBL1F2MEhiL0lyWDNWRktQbzQ1Y25tNGluVUlXWXdMRlJtWlFVdXdqRkcvTjFpUkhoMUVaME5SVlJ1ZHF0MUJkKzJuU0t5Uy9PaHlzMCtsazNlLzNrUTlxdkQ0WlV0YTRWVlNVdVkwZWlweWlUaEFmb2NvT1JWZ0R1dXczcUtSaUFkM3JiY0V0alRqWUlvZjZXYUhzQ216VlBXQ014K2NnaDh0THFXTUthTVdzVWpMcW8yUnRKSVEwb096bWVycFF1NGVzWmdzT05rR3hIN2Qwa2R2VFQxN3M0T01VN1ZJOFpoamdHYU0rQXE5aUVOdThQaWYxdWR6MDdNd3ZLV2Y4R2xWb0NFWTA0UEM1V2RUYVhZRmJSOHZOdkw1KzNLZ2ZiNXhOTXlhOVJhbUppeW5hTWxHVFZ0RmxyNmJhOXUrcHFuRVg0dU11UlJnalNZRWhyTjd1dEZGZTZscWFsN05ma3c1aW1BR0h5blBwYms4Vm1ZMHhzdG5wdGxGQ1ZDWXR6VHVCTjgzUXBNTGpUdGV2ZFB6U1VuSjdlOG1ranhaMzlmWGJLRGZsZFpxYnZVK1RVZ0duQlZGNmZRMmlQSGc0VzE2VVdVd3Z6YmsxNnNNWkUrUG4wcHZ6N0pTZXVBeWVzOGxjcENtYUt1by9wK3FXcjJVY3dJQUhXcnZQMFlFemhYQXRMQWJzc0hocDdpR2FtdnlpalA4cnlxclhVV1g5WG9vd3h5QXVmTkJycDQzUE9CRlhabGtmOE1EUmlxY3B5b3dBd3B1ejJ4K2ZXdnovRHRkZTlzbXN6eWd0Y1I2QzF3YmR6Qmw2T2xxNVdOWVk0b0dhdGhKTXJrVEV4MGpBUlNIQVZzKzVyWWtRTlhiK1FnZlBMc1E2Z1h5SW5zcmVRZm1wbTdSVkZZZkw4Nm4xZmlVT2tZdlNoa1VQeHZidWt6b3k2SzFpaE0xaG8zWHpXNkV2U2ZYQStkcGlXR2FXZCtkb1h6THptR3dLWUZMQ0FzUkFsUEJBaE1sQ0ZYVTd0QlVWUHI4SGdWY0pIV3ErRjAwcGxyK0RNVGRyUDR6dnhZMTFrTk1oeFQrU2VUR2crZDRWNUxRSml0eVVHSk5COFZGWnNqZ1lCWk0vSUkvWENUa2owcXlET3BGMkFWUTE3Q0lqVXAvRG5UMVVrTDVGNWdkaitzUzF3ZzFnRTNnaWdtNjBmQ1h6U25QWGJ5QVBiSVh2K0lEcEUxNlRoYUhJUzlza3lobG1NRTVGM2NmcUFLaHEyQzBFNVBIMWdZYVhhTFBEa1pHMEhESk9uS1dIcDUxSTB6NVNPdXg4ZTFXQXVaemRIUXJUa3A4VG1qWG9JK2xhMHdHWnN6dWJxYk8zaWZRNkEvVzd2VlNZc1YzbVIwSkt3a0tjNFdIaUJrbVI4STNDQ2dJODdvT0w0cXpUNVArUlVKQmVqRU9nQVBLOGhZUHphdE0rZUlUcDJJTzl5VFFtZXJvbVBSeHgxcXhBY3NpbGUvdWJTZUViY1dRR1lFQ2doY0xZMkh5S2pvZ2pIMjVoTXBqcFV2MU91Z2xpNGVoMmVSdzBPMzJiSmpreXVDZ056ZzB2emxZTVNpU3MwdW9vNE1HN2hNT2pDRWFYMXlGRTBuU3ZqQnp1VG5FcEs4Nlo4SW9xRkFJdWJ3OGtnOUFyRWFSRVdTWkkrakg0WGJwNmc5RTlFbkpUM29hUnpETitNVUpCUURIbjU2YThvVW1FQnVzT3hCcy9ONSt0SkViUGtBRkRqOFVHdk9zL0lXdmNTZ2xHQmh2UzcvRlRZZnBXR1lkRFk4ZlBBeFdTQTM1c1RDNHA0K0xtNEFhcUlvUGVRdGZ1Zks2SmgwWmh4bGJzVVhPU21YTmlmRDVaVEFreURvZmJiY2NseG5BOFdOQXF4Q2JSTnlraFh4UXBhRHc2N2ZYVVlic2lHMEtodHYyb2VJdmg4cmhRTVlPY0VBcVhHL2VJK3puZ09jNXl4cjhxODJJQU0xYy9GTEZPcGxxdTVlRlFYck1aekdjVkNqWWJMV0c1STRCVDFldVJybGJ4dE5PdE1pdERERWhMWElJeW5BQXZ1T0VXRTNYM05kQWZ0OTRWZ2FHNDJYSVF0MFpYNlBlQ0UvcVFGZTlySzZIeDdZVTUwS3ZIN2ZXNGZTK3E3S0tCSnhzZ2dCWDVwU0FHaDFqSXJWaDV6UTZ3M1JmYWFoQlhtL2FDYkNaVGpDVUZVVHlXWnFXOXA2Mk1qSlBYVnFPclBnTU80TnY3NEdrZitvd2Z0TlZCRFFuakZKcUhTdzE3cFh2aFdXNUtacWUvUTQ5Ti9VU1RDQVZXb1FYRklIQkhYWGUzRlByVURzdUdEbXRGL2hIS1RIcGVreGhpQU9QSStTSnE2UzZIRjRJOVlXemtCSlRvNDZpVU16V3A4UGlyL1JpZHVMeEtZc1Nrc1Y4dkxsT1F2aEdYMllsUjBPQmhCakMrdS9nRWN2WTBBcEs3WWs0MU54alBTUW5XRkhURjY2VXJqZ2V2QjhDdTVhK2wydllTUlB0dVZEbzczaGhkTVNIblVYN3RUanNWWkd4QWwvV3B0aU9JRVExZ25MMjltWDYvdFIxdG1sa1lqOFc0WCtDU2pXY1VER1kxTnBTL0M3aFNLcWlNTE0vbDJRbVNXWjczRGR6K2dpbzhCQ0VOWVBRNDZxbmt6d1hVYnF2Qmt4alVRc1dmWkZnYnVvM3JBZit3TjdqT085MCt5bng0UGkzTCswbllMMVNjaERVZ0FQNGdQVi83SWQxcSsxSFNobXVHa0lxV1JQZ3l4TUZxUDhIZmpUbmpYd1k1YlFmYkpjdDZPSXpLZ01Ib3RGL0hlMWVnc2F4SFNxRzZ3ZmRtUTV4OE55VEZGcUJjcDJpU293SFIzeWs1KzM2aEY3dlhBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMV9QUkUiLCJGSURPXzJfMSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJsYXJnZUJsb2JLZXkiLCJjcmVkQmxvYiIsIm1pblBpbkxlbmd0aCJdLCJhYWd1aWQiOiJhMjUzNDJjMDNjZGM0NDE0OGU0NmY0ODA3ZmNhNTExYyIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImxhcmdlQmxvYnMiOnRydWUsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjp0cnVlLCJhbHdheXNVdiI6ZmFsc2V9LCJtYXhNc2dTaXplIjoxMjgwLCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjgsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4LCJ0cmFuc3BvcnRzIjpbIm5mYyIsInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi04fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotMzV9XSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5Ijo0MDk2LCJtaW5QSU5MZW5ndGgiOjQsImZpcm13YXJlVmVyc2lvbiI6MzI5NDczLCJtYXhDcmVkQmxvYkxlbmd0aCI6MzIsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjoxLCJyZW1haW5pbmdEaXNjb3ZlcmFibGVDcmVkZW50aWFscyI6MTAwfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMTAtMTIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDczLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ill1YmlLZXkgNSBTZXJpZXMgd2l0aCBORkMiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI0MTAxMjAwMyIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTA2LTA0IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3MywiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZdWJpS2V5IDUgU2VyaWVzIHdpdGggTkZDIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNDA2MDQwMDAiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0wNi0wNCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzN9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjQtMTEtMTIifSx7ImFhZ3VpZCI6IjNhNjYyOTYyLWM2ZDQtNDAyMy1iZWJiLTk4YWU5MmU3OGUyMCIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiM2E2NjI5NjItYzZkNC00MDIzLWJlYmItOThhZTkyZTc4ZTIwIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ill1YmlLZXkgNSBGSVBTIFNlcmllcyB3aXRoIExpZ2h0bmluZyAoRW50ZXJwcmlzZSBQcm9maWxlKSJ9LCJkZXNjcmlwdGlvbiI6Ill1YmlLZXkgNSBGSVBTIFNlcmllcyB3aXRoIExpZ2h0bmluZyAoRW50ZXJwcmlzZSBQcm9maWxlKSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzYsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfSx7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciLCJlZDI1NTE5X2VkZHNhX3NoYTUxMl9yYXciLCJzZWNwMzg0cjFfZWNkc2Ffc2hhMzg0X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjgsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6OCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURTRENDQWpDZ0F3SUJBZ0lVRHFFUncrNFJuR1NnZ3hnVWV3SkZFUERSWjNZd0RRWUpLb1pJaHZjTkFRRUxCUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURJN1huSCtadkR3TUNRVThNOFplVjVxc2N1Ymx2VllhYVJ0M1liYXhuOWdvZEx4NXN3SDBsWHJkZ2poNWg3RnBWZ0NnWVlYN0U0YmwxdmJ6VUxlbXJNV1Q4TjNXTUdVZThRQUpiQmVpb1Y3Vy9FK2hUWlAvMFNLSlZhM2V3S0JvNlVMZU1uZlFaRHJWT1JBazh3VExxMnY1TGxqNXZNajdKdE9vdEthOUo3bkhTOGtMbXpYWFNhajBTd0VQaDVPQVpVVE5WNHpzMWJ2b1RBUVFXckw0L0o5UXVLdDZXQ0ZFNW5VTmlSUWNFYlZGOG1scUsyYngyejZva1ZsdHlEVkxDeFlicFVURUx2WTF1c1IzRFRHUFVvSUNsT200Y3Jwd25EUkxWSHZqWWVQR0JCLy9wRXl6eEEvZ2NTY3hqd2FIMVpVdzliblNiSHl1cktxYlRhMUt2akFnTUJBQUdqWmpCa01CMEdBMVVkRGdRV0JCVHF0MEtRbmd4N1pIcmJWSHdEdW54T245aWhZVEFmQmdOVkhTTUVHREFXZ0JUUzd1OWFJbzA2YlZ3amx6M3loZFVtOFNWN2tqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQTRHQTFVZER3RUIvd1FFQXdJQmhqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFxUWFDV014VEdxVlZYN1NrN2trSm1VdWVUU1lLdVU2K0tCQlNnd0lSbmx3OUs3SGUxSXB4WjBoZHdwUE5pa0tqbWN5RmdGUHpoSW13SEpneHh1VDkwUHczdllPZGNKSk5rdERnMzVQWE9melNuMTVjRkF4MVJPMG1QVG1JYjhkWGlFV09wem9YdmR3WERNNDFaYUNEWU1UN3c0SVF0TXl2RTd4VUJacTJianRBbnEvTkRVQTdiZTRIOEgzaXBDKy8rTktsVXJjVWgrajQ4SzY3V0kwdTFtNkZlUXVlQkE3bjA2ajgyNXJxRHFzYUxzOVRiN0tBSEF3OFBtcldhTlBHMmtqS2VyeFBFZmVjaXZsRmF3cDJSV1p2eHJWdG4zVFYyU0J4eUNKQ2tYc05EMDVkQ0VyVkhTSklzK0JkdFRWTlk5QXd0eVBtbnliMHY0bVNUenZXZHc9PSIsIk1JSURTRENDQWpDZ0F3SUJBZ0lVVWNtTVh6UklGT2dHVEswVGIzZ0V1Wllaa0JJd0RRWUpLb1pJaHZjTkFRRUxCUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JCSURFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURtNTU1YldZOVdXK3RPWTBySVdIbGRoK2FOYW5vQ1pDRmg3R2szWVpyUW1QVXcwaGtTRzZxWUhRdFArZlp5UzMzVkVydmcrQlFxbm11bWdOaGZ4RnJrd0VaRUxlaWRCY0M4QzRBZzRucXFpUFdwenN2STE3TmN4WWxJbkxOTEZjWlkvK2dPaU42Wk9UaWhPNS92QlpNYmo5cmlhQWNxbGlZbU5HSlBnVGNNR2FFQXlNekVNTnkybm02RXArcGpQNWFGNmdpMjF0L1VRRnN1SjFqMlJqL3luTS9TZFJ0K2VjYWw1T1lvdHhIa0ZiTDl2dnYyQTJPdjVJVFpDbHc0Yk9TOW5weXBRaW1PWjVRQVl5dG1ZYVFwV2wvcE1ZejZ6U2o4UnFrVkRORUpHcU5mVEtBMml2TFl3WDZsU3R0TVBhcGcwSjg0bDlYMHZvVk4vRnBTNFZDVkFnTUJBQUdqWmpCa01CMEdBMVVkRGdRV0JCUWdLRkFoRzZSYVcraFR5NTJkeGVUOGJDOTZIekFmQmdOVkhTTUVHREFXZ0JUUzd1OWFJbzA2YlZ3amx6M3loZFVtOFNWN2tqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQTRHQTFVZER3RUIvd1FFQXdJQmhqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFZTXpnTHJKTElyME9vdlFuQVpyUklHdWFiaUhTVUtTbWJMUldwUmtXZUF0c0NoREVIcFhjSi9iZ0ROS1lXb0hxUTh4UlVqQjRDeWVwWWV2YzNZbHJHOG83ekh4cGZWY2FvTDVTZXVKa3pIeEtuNGJUYVNwOStNdndhbW5wNjRrWk1pTmJGTGtuZlA5a1lLb1JIa01XaGVSSjFVc1AxejRTY21rQ2VJTGZzTXM2dnFvdnFqV0NsRnNKcEJjc2x1WUhXRjdiQkoxbjRSd2crQVRFb3BZNElnR3Y2WnZ3YytBOXIrQVQyaHFwb1NrWW9BbCtBTll3Z3NsT2Y5c0plMFYrVEE5WVkvVWxhQm1QUFRkMC8vcjl3dmNlUFdaa1BqS29BQy96VU5oZkRiaDRMVjhHSHMzbHlYMlhvbUwvTE5jOEpZenlJYURFaEdRdmVvUGhoL3RyMWc9PSIsIk1JSURTakNDQWpLZ0F3SUJBZ0lVVG5iYkdJUjJOSHZ6cUlLRkFlUXdHMVhCaXMwd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JCSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVFZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU9zWGozazA0QmFuNFRZZHRaS3FEL09QSnh5RHlhUG1DQlVGVWlhWklnVHRlWm5qM1gyNURoZ3BaWlhzQzREMHlkSWNybEE2d05VSW5PUkwvTDl6QmJURUlNQVZNR282ZzdVS0FtYjJNRjZBSGJuaFlKZDllaWt1cFZOV1NoSE5ZTmM0R0JkTzFZTjZBZlVxdkpoSGJlM1Y0U05NUG1CUkVLSlBWejdUaHdnbWdnVGU4V3MySzAvd3NxdjJ3U0U3cGJDQnNVWmhJWDUxYlpNM3BxRHdKUFRtUkZFdnQwLzZ0RzVlTzhGM2oxNE9YcWZFaG1qbjFWdnhLRFlRT0xaQXhDd3dnQzBQNENkZld2M3k4UFNSOEkzNTRoTzFZK0d6Tmp2SXFYMzhOS0x5d3VJWUhGZXJPeE5seEVNQnZGaFlCdVJ1WUFra2dVYVBxTjZVQmhzSUxyc0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ0NvUkhoaXlObmJuWFJXSUw2WkJYb0JYOVlUTUI4R0ExVWRJd1FZTUJhQUZDQW9VQ0VicEZwYjZGUExuWjNGNVB4c0wzb2ZNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUNRRmFmSkkxLzVXZzlDRUVpbUUxUlA1NFJnUXdUTlRPT1FzTEFDVGUrckl0bEZRekM5WkRoclY4Mjh5WDdqenkrQUFzcDNpeks3VDF0aDJkbDdtK3R1MHN3MlBhL29sYzAybnQ2UHlJdzM0OGdhSHpoSTErMEtFNDVxeHZGRGVMMmxNeGJQZkNZdnlFRWFZemppUUVMVTU5NTFwWEdXeUtNYS80Zkx0TytaS09YaE11VmVxNHJYRFBJNTRXNkpIT2lBYWlLZGl3KzVlM2Mya3QvakZJUXRNNnZNWGc5TE5GemRqRVROdDIwVlg5UWV2UnBGWmZ1Y01HOXdDYVFEb0ZsUHpwVE1KS2hQZXYvaW1KbVpZaEtmcjBsTGNlbXRxakl4TEFvcVpkT1lmSEJnNit2QWNkUEkvaWF1R3BVQXY3WCtVS05tRHdqWjJCYUg0c0x3aEIybSIsIk1JSURQakNDQWlhZ0F3SUJBZ0lVWHplaUVESkVPVHQxNEY1bjBvNlpmL2JCd2lVd0RRWUpLb1pJaHZjTkFRRU5CUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTVo2L1R4TThySVQrRWFvUHZHODFvbnRNT28vMm1RMlJCd0pIUzBRWmN4VmFOWHZsMTJMVWhCWjVMbWlCU2NJWmQxUm54MW9kNTg1aCsvZGhLN2hFbTdKQUFMa0tLdHMxZk81M0tHTkxadWp6NWgzd0duY3I0aHlLRjBHNzRiL1UzSzloRTVtR05ENnpxWWNoQ1JBSGZyWU1ZUkRGNFlMMFg0RDVuR2R4dnBwQXk2bmtFbXRXbU1ud08zaTBUQXVjc3JiRTQ4NUh2R000cjBWcGdWZEpwdmdRamlUSkNUSXErRDM1aHd0VDhRREl2K25HdnBjeWk1d2NJZkNrenlDaW1KdWtoWXk2S29xTk1LUUVkcE5pU092V3lETVRNdDFid0N2RXpwdzkxdSttc1V0NHJqMGVmbk85czBaT3dkd01SRG5INHhnVWw1Wkx3cnJQa2ZDMS8wQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQjhHQTFVZEl3UVlNQmFBRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRTXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJEUVVBQTRJQkFRQzNJVy9zZ0I5cFo4YXBKTmp4dUdvWCtGa0lMa3Mwd01OcmRYTC9jb1V2c3JoenN2bDZtZVBNcmJHSkJ5SjFYbnF1QjVzZ2NSRU5GeGRRRm1hM21pbzhVcGYxb3dNMVpyZVhySjBtQURHMkJwbHFiSm54aXlZYStSMTFyZUlGVFdlSWhNTmNaS3NEWnJGQXlQdUZqQ1dTUXZKbU5XZTltRlJZRmdOaFhKS2tYSWI1SDFYZ0VEbHdpZWRZUk03Vm9sQk5sbGQ2cFJGS2xYOHVzdDZPVE1PZUFEbDJ4TkYwbTFMVGhTZGV1WHZEeUMxZzkrSUxmejNTNk9JWWdjM2lyb1JjRkQzNTRnN3JLZnU2N3FGQXc5Z0M0eWkweEJUUHJZOTVyaDQvSHFhVVlDQS9MOGxkUms2SDdYazM1RCtXVnBtcTJTaC94VDVIaUZ1aGY0d0piMGJLIiwiTUlJRFNqQ0NBaktnQXdJQkFnSVVSMzhtcTI2U2Yyc3pWVjJCZEc2V0VON2t1V1V3RFFZSktvWklodmNOQVFFTEJRQXdMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3SUJjTk1qUXhNakF4TURBd01EQXdXaGdQT1RrNU9URXlNekV5TXpVNU5UbGFNQ1l4SkRBaUJnTlZCQU1NRzFsMVltbGpieUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRUlnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTlkwV2I5b1BvUm9Lb1F5V1BhSnB6MTF2cldUZzZ6VHRtTmoyVm9LUm55dktHUnFwemI4M3c1bDZZQTk2VVlrWUJEUVAwaWxPMkRQZTZ3V3FWUjV6RGZSemRjSDhiaCtMN2RHR3ZhZTZoUlRaaGtGa0NwWERzNEhjY2tuckRmOEZDbEo3SGUzOUpmNDIvRzFRbTJ6ejlXV21yUFh0Z2lLL3gwNUdqc1FmR3VERzF6ZjVRVFVVaWU4bHd5bUszVGZkT3ZOZWVKQUFQZTJwbjdJdGZSYityVnJOV2lEemxSbjJ2Tm5aMndQbzR3SC9XSjZkaFhaRytyTVdUK2E2Qm9jZzFVZkl3NmtkdW5HNGJUcFp6c3ZhY0ZZeVIwbXBmK0RlT25wU1dBbXl3SldIdlRsZjJZWHhGeWVYY1RBQ2RRbGNNTkdKMlZoWlE0OHh0UDUvUkJQLzhrQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZDaHk0Mm9raXFjVFMxaXFhL0hSV2prQm40SC9NQjhHQTFVZEl3UVlNQmFBRk9xM1FwQ2VESHRrZXR0VWZBTzZmRTZmMktGaE1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQW4rUkhJUGJ0TUVETmRUMWc4SC9SaXRBa1VkTGdBdDF0V0dXbmxqOWtuYnY0LzRHbFg3QzlwNDVlZlBPOS9hWkw2T1YxWFJLQmk2S210Qlc1SzdudVlFbk14LzVCcUJTYkxUN3JoZHVDNDlUQmVNYjlQSGRYc1RsU1ZOWWVmcjFkR2lkcjRqMHhWQlFMYjFya25EQWJkV0R6S2Z2bmF5S084RnJ3ZTdIeDg0M01HL3JKK2MwWHJ1VXZiZlZUQ0hMaUlXaE03b05EaEw4eG9iNnhVbzlLTEtjU0wrSXRZc08zLzlXYjhROUdqc3FMNEZYc0RjRzFTYVloN0twZnVNbU9peHF6SlpPMm5JaWNQWVJnMUkyU3VpVWZZTzcwdG1kSGNibCtrU1FtU1l0N3JxNHZpSUxnMkd4M2o5cklUdVdUamJhVWFTU1F4Z09tTVNIdXl6TUFDIl0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWZDQVlBQUFDR1ZzK01BQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBSFlZQUFCMkdBVjJpRTRFQUFBYk5TVVJCVkZoSHBWZDdUTlYxRkQvM2Q1OXdlUVNJZ1M5QVFBWGNGTEFRWmk5ZnBlVnoxdFkvV1RacjVXeHBjN1c1a25MYTVqSTNaODVzclMybk0yc2p0V3daUzdJVUg0SDR4Q25FUXg0REFaRjc0Vjd1czg4NXY5L2xJbkJ2VkovQjRQdjludS81bnUvNW52TTU1NmZ6QS9RdjBIYi9JclgzVkZLUG80NWNubTRpblVJV1l3TEZSbVpRVXV3akZHL04xaVJIaDFFWjBOUlZSdWRxdDFCZCsyblNLeVMvT2h5czArbGszZS8za1E5cXZENFpVdGE0VlZTVXVZMGVpcHlpVGhBZm9jb09SVmdEdXV3M3FLUmlBZDNyYmNFdGpUallJb2Y2V2FIc0NtelZQV0NNeCtjZ2g4dExxV01LYU1Xc1VqTHFvMlJ0SklRMG9Pem1lcnBRdTRlc1pnc09Oa0d4SDdkMGtkdlRUMTdzNE9NVTdWSThaaGpnR2FNK0FxOWlFTnU4UGlmMXVkejA3TXd2S1dmOEdsVm9DRVkwNFBDNVdkVGFYWUZiUjh2TnZMNSszS2dmYjV4Tk15YTlSYW1KaXluYU1sR1RWdEZscjZiYTl1K3BxbkVYNHVNdVJSZ2pTWUVock43dXRGRmU2bHFhbDdOZmt3NWltQUdIeW5QcGJrOFZtWTB4c3RucHRsRkNWQ1l0elR1Qk44M1FwTUxqVHRldmRQelNVbko3ZThta2p4WjM5ZlhiS0RmbGRacWJ2VStUVWdHbkJWRjZmUTJpUEhnNFcxNlVXVXd2emJrMTZzTVpFK1BuMHB2ejdKU2V1QXllczhsY3BDbWFLdW8vcCtxV3IyVWN3SUFIV3J2UDBZRXpoWEF0TEFic3NIaHA3aUdhbXZ5aWpQOHJ5cXJYVVdYOVhvb3d4eUF1Zk5CcnA0M1BPQkZYWmxrZjhNRFJpcWNweW93QXdwdXoyeCtmV3Z6L0R0ZGU5c21zenlndGNSNkMxd2JkekJsNk9scTVXTllZNG9HYXRoSk1ya1RFeDBqQVJTSEFWcys1cllrUU5YYitRZ2ZQTHNRNmdYeUluc3JlUWZtcG03UlZGWWZMODZuMWZpVU9rWXZTaGtVUHh2YnVrem95NksxaWhNMWhvM1h6VzZFdlNmWEErZHBpV0dhV2QrZG9Yekx6bUd3S1lGTENBc1JBbFBCQWhNbENGWFU3dEJVVlByOEhnVmNKSFdxK0YwMHBscitETVRkclA0enZ4WTExa05NaHhUK1NlVEdnK2Q0VjVMUUppdHlVR0pOQjhWRlpzamdZQlpNL0lJL1hDVGtqMHF5RE9wRjJBVlExN0NJalVwL0RuVDFVa0w1RjVnZGorc1Mxd2cxZ0UzZ2lnbTYwZkNYelNuUFhieUFQYklYditJRHBFMTZUaGFISVM5c2t5aGxtTUU1RjNjZnFBS2hxMkMwRTVQSDFnWWFYYUxQRGtaRzBIREpPbktXSHA1MUkwejVTT3V4OGUxV0F1WnpkSFFyVGtwOFRtalhvSStsYTB3R1pzenVicWJPM2lmUTZBL1c3dlZTWXNWM21SMEpLd2tLYzRXSGlCa21SOEkzQ0NnSTg3b09MNHF6VDVQK1JVSkJlakVPZ0FQSzhoWVB6YXRNK2VJVHAySU85eVRRbWVyb21QUnh4MXF4QWNzaWxlL3ViU2VFYmNXUUdZRUNnaGNMWTJIeUtqb2dqSDI1aE1wanBVdjFPdWdsaTRlaDJlUncwTzMyYkpqa3l1Q2dOemcwdnpsWU1TaVNzMHVvbzRNRzdoTU9qQ0VhWDF5RkUwblN2akJ6dVRuRXBLODZaOElvcUZBSXVidzhrZzlBckVhUkVXU1pJK2pINFhicDZnOUU5RW5KVDNvYVJ6RE4rTVVKQlFESG41NmE4b1VtRUJ1c094QnMvTjUrdEpFYlBrQUZEajhVR3ZPcy9JV3ZjU2dsR0JodlM3L0ZUWWZwV0dZZERZOGZQQXhXU0EzNXNUQzRwNCtMbTRBYXFJb1BlUXRmdWZLNkpoMFpoeGxic1VYT1NtWE5pZkQ1WlRBa3lEb2ZiYmNjbHhuQThXTkFxeENiUk55a2hYeFFwYUR3NjdmWFVZYnNpRzBLaHR2Mm9lSXZoOHJoUU1ZT2NFQXFYRy9lSSt6bmdPYzV5eHI4cTgySUFNMWMvRkxGT3BscXU1ZUZRWHJNWnpHY1ZDalliTFdHNUk0QlQxZXVScmxieHROT3RNaXREREVoTFhJSXluQUF2dU9FV0UzWDNOZEFmdDk0VmdhRzQyWElRdDBaWDZQZUNFL3FRRmU5cks2SHg3WVU1MEt2SDdmVzRmUytxN0tLQkp4c2dnQlg1cFNBR2gxaklyVmg1elE2dzNSZmFhaEJYbS9hQ2JDWlRqQ1VGVVR5V1pxVzlwNjJNakpQWFZxT3JQZ01PNE52NzRHa2Yrb3dmdE5WQkRRbmpGSnFIU3cxN3BYdmhXVzVLWnFlL1E0OU4vVVNUQ0FWV29RWEZJSEJIWFhlM0ZQclVEc3VHRG10Ri9oSEtUSHBla3hoaUFPUEkrU0pxNlM2SEY0STlZV3prQkpUbzQ2aVVNeldwOFBpci9SaWR1THhLWXNTa3NWOHZMbE9RdmhHWDJZbFIwT0JoQmpDK3UvZ0VjdlkwQXBLN1lrNDFOeGpQU1FuV0ZIVEY2NlVyamdldkI4Q3U1YStsMnZZU1JQdHVWRG83M2hoZE1TSG5VWDd0VGpzVlpHeEFsL1dwdGlPSUVRMWduTDI5bVg2L3RSMXRtbGtZajhXNFgrQ1NqV2NVREdZMU5wUy9DN2hTS3FpTUxNL2wyUW1TV1o3M0RkeitnaW84QkNFTllQUTQ2cW5rendYVWJxdkJreGpVUXNXZlpGZ2J1bzNyQWYrd043ak9POTAreW54NFBpM0wrMG5ZTDFTY2hEVWdBUDRnUFYvN0lkMXErMUhTaG11R2tJcVdSUGd5eE1GcVA4SGZqVG5qWHdZNWJRZmJKY3Q2T0l6S2dNSG90Ri9IZTFlZ3NheEhTcUc2d2ZkbVE1eDhOeVRGRnFCY3AyaVNvd0hSM3lrNSszNmhGN3ZYQUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIkZJRE9fMl8wIiwiRklET18yXzFfUFJFIiwiRklET18yXzEiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwibGFyZ2VCbG9iS2V5IiwiY3JlZEJsb2IiLCJtaW5QaW5MZW5ndGgiXSwiYWFndWlkIjoiM2E2NjI5NjJjNmQ0NDAyM2JlYmI5OGFlOTJlNzhlMjAiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJsYXJnZUJsb2JzIjp0cnVlLCJlcCI6ZmFsc2UsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjpmYWxzZSwiYWx3YXlzVXYiOnRydWV9LCJtYXhNc2dTaXplIjoxNTM2LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjgsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4LCJ0cmFuc3BvcnRzIjpbInVzYiIsImxpZ2h0bmluZyJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi04fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotMzV9XSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5Ijo0MDk2LCJtaW5QSU5MZW5ndGgiOjgsImZpcm13YXJlVmVyc2lvbiI6MzI5NDc2LCJtYXhDcmVkQmxvYkxlbmd0aCI6MzIsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjoxLCJjZXJ0aWZpY2F0aW9ucyI6eyJGSVBTLUNNVlAtMyI6MiwiRklQUy1DTVZQLTMtUEhZIjozfSwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjEwMH19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTEyLTIxIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZdWJpS2V5IDUgRklQUyBTZXJpZXMgd2l0aCBMaWdodG5pbmcgKEVudGVycHJpc2UgUHJvZmlsZSkiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI0MTIyMTAwNiIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTEyLTIxIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3Nn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wMS0xMCJ9LHsiYWFndWlkIjoiMjBmMGJlOTgtOWFmOS05ODZhLTRiNDItOGVjYTRhY2IyOGU0IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiIyMGYwYmU5OC05YWY5LTk4NmEtNGI0Mi04ZWNhNGFjYjI4ZTQiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiRXhjZWxzZWN1IGVTZWN1IEZJRE8yIEZpbmdlcnByaW50IFNlY3VyaXR5IEtleSJ9LCJkZXNjcmlwdGlvbiI6IkV4Y2Vsc2VjdSBlU2VjdSBGSURPMiBGaW5nZXJwcmludCBTZWN1cml0eSBLZXkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MiwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwiLCJiYURlc2MiOnsic2VsZkF0dGVzdGVkRlJSIjowLjAsInNlbGZBdHRlc3RlZEZBUiI6MC4wLCJpQVBBUlRocmVzaG9sZCI6MC4wLCJtYXhUZW1wbGF0ZXMiOjAsIm1heFJldHJpZXMiOjAsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2ludGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDU0RDQ0FlMmdBd0lCQWdJSkFNOVJ6WXU0RUlJbE1Bb0dDQ3FHU000OUJBTUNNSDh4Q3pBSkJnTlZCQVlUQWtOT01Td3dLZ1lEVlFRS0RDTkZlR05sYkhObFkzVWdSR0YwWVNCVVpXTm9ibTlzYjJkNUlFTnZMaXdnVEhSa0xqRWVNQndHQTFVRUN3d1ZSWGhqWld4elpXTjFJRVpwWkc4Z1UyVnlkbVZ5TVNJd0lBWURWUVFEREJsRmVHTmxiSE5sWTNVZ1JtbGtieUJTYjI5MElFTkJJREF5TUNBWERURTVNVEF5TXpBNU5UQTBNMW9ZRHpJd05Ua3hNREV6TURrMU1EUXpXakIvTVFzd0NRWURWUVFHRXdKRFRqRXNNQ29HQTFVRUNnd2pSWGhqWld4elpXTjFJRVJoZEdFZ1ZHVmphRzV2Ykc5bmVTQkRieTRzSUV4MFpDNHhIakFjQmdOVkJBc01GVVY0WTJWc2MyVmpkU0JHYVdSdklGTmxjblpsY2pFaU1DQUdBMVVFQXd3WlJYaGpaV3h6WldOMUlFWnBaRzhnVW05dmRDQkRRU0F3TWpCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQkhscTJqVVFNYWxIai9CUmVRZWZHaXo0RXZZSnlGTFdQejRSZmhKR0txcWwrOG45NmhUMW01Z1hvVHZvTHJqU1U3WDBjQmVvVHNnaHloMjIreXJzNCtTalVEQk9NQjBHQTFVZERnUVdCQlErOFNHVzJCWGJxYjJkY0FPaVdKT1UrR0NzUGpBZkJnTlZIU01FR0RBV2dCUSs4U0dXMkJYYnFiMmRjQU9pV0pPVStHQ3NQakFNQmdOVkhSTUVCVEFEQVFIL01Bb0dDQ3FHU000OUJBTUNBMGtBTUVZQ0lRRHE4eElXMFpLNXl6M0VBem11eDg4TENUWU8xNTdmVGZ5T2lPekMyQUR5YXdJaEFPMVBXWWxlRmdILzNtdUQ4Y0JBTXIxMWZFS2RGL0FhQzE2ZnR4YWV6TlhIIl0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUl3QUFBQVlDQVlBQUFBb054VnJBQUFBQ1hCSVdYTUFBQjdDQUFBZXdnRnUwSFUrQUFBRklHbFVXSFJZVFV3NlkyOXRMbUZrYjJKbExuaHRjQUFBQUFBQVBEOTRjR0ZqYTJWMElHSmxaMmx1UFNMdnU3OGlJR2xrUFNKWE5VMHdUWEJEWldocFNIcHlaVk42VGxSamVtdGpPV1FpUHo0Z1BIZzZlRzF3YldWMFlTQjRiV3h1Y3pwNFBTSmhaRzlpWlRwdWN6cHRaWFJoTHlJZ2VEcDRiWEIwYXowaVFXUnZZbVVnV0UxUUlFTnZjbVVnTlM0MkxXTXhORElnTnprdU1UWXdPVEkwTENBeU1ERTNMekEzTHpFekxUQXhPakEyT2pNNUlDQWdJQ0FnSUNBaVBpQThjbVJtT2xKRVJpQjRiV3h1Y3pweVpHWTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5MekU1T1Rrdk1ESXZNakl0Y21SbUxYTjViblJoZUMxdWN5TWlQaUE4Y21SbU9rUmxjMk55YVhCMGFXOXVJSEprWmpwaFltOTFkRDBpSWlCNGJXeHVjenA0YlhBOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOGlJSGh0Ykc1ek9tUmpQU0pvZEhSd09pOHZjSFZ5YkM1dmNtY3ZaR012Wld4bGJXVnVkSE12TVM0eEx5SWdlRzFzYm5NNmNHaHZkRzl6YUc5d1BTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM0JvYjNSdmMyaHZjQzh4TGpBdklpQjRiV3h1Y3pwNGJYQk5UVDBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5NFlYQXZNUzR3TDIxdEx5SWdlRzFzYm5NNmMzUkZkblE5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5elZIbHdaUzlTWlhOdmRYSmpaVVYyWlc1MEl5SWdlRzF3T2tOeVpXRjBiM0pVYjI5c1BTSkJaRzlpWlNCUWFHOTBiM05vYjNBZ1EwTWdLRmRwYm1SdmQzTXBJaUI0YlhBNlEzSmxZWFJsUkdGMFpUMGlNakF4T0Mwd05TMHlNMVF4TkRvME1EbzFOU3N3T0Rvd01DSWdlRzF3T2sxdlpHbG1lVVJoZEdVOUlqSXdNVGt0TURVdE1EVlVNRGs2TXpNNk5EY3JNRGc2TURBaUlIaHRjRHBOWlhSaFpHRjBZVVJoZEdVOUlqSXdNVGt0TURVdE1EVlVNRGs2TXpNNk5EY3JNRGc2TURBaUlHUmpPbVp2Y20xaGREMGlhVzFoWjJVdmNHNW5JaUJ3YUc5MGIzTm9iM0E2UTI5c2IzSk5iMlJsUFNJeklpQndhRzkwYjNOb2IzQTZTVU5EVUhKdlptbHNaVDBpYzFKSFFpQkpSVU0yTVRrMk5pMHlMakVpSUhodGNFMU5Pa2x1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2TWpFNE5XWXlZbVl0T0RWbU9TMWpaalEzTFdGaU9EY3RPVEZqTTJJelpqQmlOemhsSWlCNGJYQk5UVHBFYjJOMWJXVnVkRWxFUFNKaFpHOWlaVHBrYjJOcFpEcHdhRzkwYjNOb2IzQTZaV014WlRnM01qRXROek0zWVMwd05UUmxMV0V6WVRrdE5URmtNVE16TkRabFpUSTVJaUI0YlhCTlRUcFBjbWxuYVc1aGJFUnZZM1Z0Wlc1MFNVUTlJbmh0Y0M1a2FXUTZNakU0TldZeVltWXRPRFZtT1MxalpqUTNMV0ZpT0RjdE9URmpNMkl6WmpCaU56aGxJajRnUEhodGNFMU5Pa2hwYzNSdmNuaytJRHh5WkdZNlUyVnhQaUE4Y21SbU9teHBJSE4wUlhaME9tRmpkR2x2YmowaVkzSmxZWFJsWkNJZ2MzUkZkblE2YVc1emRHRnVZMlZKUkQwaWVHMXdMbWxwWkRveU1UZzFaakppWmkwNE5XWTVMV05tTkRjdFlXSTROeTA1TVdNellqTm1NR0kzT0dVaUlITjBSWFowT25kb1pXNDlJakl3TVRndE1EVXRNak5VTVRRNk5EQTZOVFVyTURnNk1EQWlJSE4wUlhaME9uTnZablIzWVhKbFFXZGxiblE5SWtGa2IySmxJRkJvYjNSdmMyaHZjQ0JEUXlBb1YybHVaRzkzY3lraUx6NGdQQzl5WkdZNlUyVnhQaUE4TDNodGNFMU5Pa2hwYzNSdmNuaytJRHd2Y21SbU9rUmxjMk55YVhCMGFXOXVQaUE4TDNKa1pqcFNSRVkrSUR3dmVEcDRiWEJ0WlhSaFBpQThQM2h3WVdOclpYUWdaVzVrUFNKeUlqOCsvMFZ4UlFBQUdmVkpSRUZVYUFYVndYZmNuM1Y5Ny9IWDUvdjlYdGR2M0RzN0pKQUlBVUxZQlptQ2ltRFZEbGZ0dzIzSHFZdXFQVjBXdGRiV1I2M25WRzJybnJhT3RzaERyUlVmUFIzV1dTM0tWaEFaWVFvRVFrTFduZHp6TjY3cituN2U1MDRpS05XTzg1OCtuMm51aXNTL0ozRzhZWmVaMlpURUltRDg1K1JPTzBaU1VmaUhKUDZGSHlJRVdCakF3ek53Nm9iSTNDeWtDR2FHSk55aExNV3dnbnJvcE5KSUNCTlVjb29pME84Yit4ZkY2UExBcUlNY0dvZDJXK3pZRDlGZzQ5ckFnYjFpMFRKVEhXR0N1bzZVaGVFSmRpOW1WclNOOGNLWXE0MmQrOFNLQ1NPMmdBd2RJQlFRVFB4N1psRFZka2tXYnpUWmNLVEkzZGh2dnJHbHVlTTlkOFVUWDBScitqbW95WUNRT01Tc0JMcEFBakxRUnhwZ3hvK1JBbWxyNG9jSVpoZUdrRjVsQnBMNHJ3aElDWExEZkgrZ0R4ZUZrSGdDQ2VTd2Y3OGhFei9Lak1QRUQ1SWdSWHVSdWYyMHBZQlpRNzJmN1N0R0gzWW1UdnhGTWhjZ0F3bGlBUkxnR1d3R05BZldRcXdtaHNoQmNuNHNHT0ErbDhxQ3h4bVFCVTNEU1pJajhWOFRZRkMwallVRmJlMzFkUDJ5NVpBelR4QVM1TVpBZ1BHanpRQkIxWUR4QTlaWjBLa21jRUhJbWM5M0x2aTNIZkhJa3FaZWpUSWdNRUFPN2w4bnhrOGgzWUxuM1lRMGp1c00xTHlPRU01RTRzZUNnT3ovbFBZY0VJOXhRVHR4eEhnM251a1lJTDVyRWRnT0NDajRmZ1lTc1I1cVJhZWpxMEppdXFwNGdoUU5MdzFWNHNlRkFLOUZNcjVIUUxUalFneWJNY2lOZzdIbjFwV1hmT09oNnNTTDhQa2pNUWRMWUdHYXdkN2ZKWFl2UjBXZkVNQUMxQldFNGxaNkMvOU1tZjZPY3VUcFNJRDRrV1VHMG03RXZlbTJiYzVqaG8xWU94bVBPbk1UcDJhSjdJQ0JpWThKL1Q3UUFrWUFjWkFBUThFb2MwTzJ5TGJSVVVNQ001Q01kaHYyelRsa0kvSmpSR0FSUWhISWpYaU1HY2RLR25lTTBqS0lPeDZwVisvTFp1Y2o3eEFNU1B2bzZ4VjQ5UVhTT016Tnc4Z0VkRm93TXdNalk1RFNYcHJtclJUNkI0eFZpQjlkRWt0dUpOcU90SGMrOEpqK0VEcGQyeFRhakdnQUdlTWdkLzluWUU4STRJSVFRQ3dKZ0lNTFhCQU5tZ3lTa1IySzROejlJRHc2THpZZkxRcmp4NFlaTkRYMGVrNTNMQ0J4U0FwMmpwbGhnaFkxc3paeDAxWE5CWE1FdGhBcVFCVzk1aDAwNlF2RUVhaEp0TXVYVU1RWDBGUlgwMnA5aENMTm93Q2Vyc2Y4UHJCVi9LZkVZY1ovbnpqTStBSHVFQUwvSVRsZ1lNWmhCcTZiRVF2cFNVZEdIbFBWeEJWamRvNnk0UklnRU5zRU82SkJscEVDVkxVVGdoRkxRVFljSXlNS1FaTWhHMVFORktYNDVqMWlZdEpvSlVPVitDRU1HQUVDTUErSS93OENYR0NBTzFqa3Y4MVlJc2dPRW9lSXd5eEFYWW01L2M2cWxZWm5hREpINWN6SmhJQk1tT0FoMy9qbGdYVldRejZSWURBWVhzdEMvUmQwbGtNNUF2STNVSFRmUndCcWZ4NGpvMXVCTDJJUjZnRFpHMElBQk80UUkyRGdEaVlPc1FSeWtJTVpQMGpnR1VMaWNSWUFnUXZNT0VRQ015aGE0Qm5rUElFRUZxQm9RYTdBSFVJRUJEbmZpY2pwcEVseGlJREltczZZblprYmFESllNRHo3M2NnZm1Xa0NSWUxKQ1AwK1dBQUtIbWVBWkVnUUFnVGprTkUycEFnU2h3aklBb3pqZ1o5Qk9rK3d6c0JjN0FPK2d2aWt4S1A4SndTNEdERzRLRVhPRXF6cXRQQUEzekhqQzRLdC9CY0V5NEp4OFdpYk0ySmtLb29hZUFENEN1TGJHQlFseEJFalprR2Y5WFZ0bTRoZ0NJelp2K1hGRHowWU5wNk5MYXhFRG1YbnMweVpFeW9vMHhuSS9vaWNvYWtoUk1CZWczd1RVa24yMVJnbkU4UWhyUTRvZzJjSGJRZjI0cXdpMkhxU0JScUJBRE1lNXc2cGdNNFlESHFRR3pDRGtDQVZNT3lCSEN3QUFnR3hBRGw0Qm9zY1pxQU1DR0lMd2poVVBhRnN3QTZDN21GSm1ubFVIT1FaV2wxV2o0eXlSVUVna0J0bHlUMnRxQU43NTRXNXNXUkNjS3JnRExEamdPVUdDb0dkR0xjQy95cDRoQjlHRU9DWXFYWjRiVzdzUmRGMEZHYUdJQU1wUXNDZVpZRmZNN04zQ1A3YVFId2ZBVG1yUlBaTHJjaXZZR3lXV1ZlQ3RaTWdsNXJLM3BTaVBvYnpoOENBN3lNZ2kxR1pYZXB1cjR6R3BnMnJZbG5YQWplVWhEc1BXZVRQTGZMSDFVRGFmbSttTG95UnR2M0VaTmNtcXl4YU5DQnV2VDZldXdQeE10UnY0K3JSRzl4SU11ZzBNTlFCTE54UGEyUUx1WUZxQU1UbkE4L25vQ0lBeGlFaGd1Y0RMUFkrVGpQNEV1Tmo5K0RXSjRSQU5YTTZkTi9DeUxLeldKd0ZieUJFUUJCTFVJREZtUWR4WFVjcTdzVENnR0gvS1Bweno2QXplaElHTkEya05uamV3ZmJiUHNyWTZ2dG9UejRmYTE2SUJjZ1pXaU9RNjBmWWZ2K0htRmh4QjkzUm44UHp5M0RkanJHZEphbTdNWENRQkVYa0REUEdjZ1VXd1hBR2ZWMWZXMEJ1YXkzeTg3Zzl2OTIyRXcxYklUY3dnU0FGUThKajRINlpYVkZMSHdCbStTNEhBcng0OVRKN1I5a0t4dzhXd1FLUGs2QnNRUUdXemRZWG8vR2pkWk9qTWg4MkRwTWdKanRwOVVUODM5MWtGK2VHb2tqQ0piSU1seEJZcm5Wa3UydHZNdzlIbXZKckJRT1dPRkFFVGxuVkRoOXNXYmlnY2NOTTFCbkVraUFra0xFaEJIdDNHV3dWbWQrOGQ1dnp4ZS9FOU15ejdjeUx6NGZxRVNpVjJWbHMrUHllWW0yUFBrL0ZNc2dIRFBveldJQ3FnbTduQVR5L2dOazlyNkVvbjBkNzlFazBGWWNJQ0FIRUVvRVB2OHFqRDd5VFZjZGR3OFI0UXpXQUxCQmcrV0ZtRnIvS2JITUZVK1h6Q0FteWd3VW8weDcyUGZTWFBIRG4zN0xsS1E5aDFpZEV3R0ZtMXlvNng3eVZzdnRHNmhrd29EUDZOaFptTG1mWnhoWXBYWXpYSUFHQ2FDQzlpMTc5RnpUWFFUcmhRc3BONEl2ZkF1WlprcnBkY1pDZ0UyVm5lelpjSW1LME9ueDFkdGIrTGplNmVOVUsrMkRDanE5ZGhCQzA1QURTaUFYS1ZqU2FSalFpeEdESGdyM1Q0Rm5BcjBwODJ3V2R5RnRiSStHM1RUYmV1QkFRZ0JBTjVQTWpMVDUzeDRPNmV0c0MrODQvd2RaT1lpOXRpTzh5eTdjaTNjaEI0dHhXeXo0UzRjUWlRT2c2dlI1N1RGeVZnanlZWFNSWTFRQU9kR0o4cWFSckpQdG9VM1BRdVNuWUZhUFJObVdEakREWVdkVit2Um5aNEd3ejIyQkFOWlNWbmZpcW80N2xzNVBPVmZQTGJPMktVZHRNWDJBR0JRdzZFOWMwZCsxZHhkcmpOdEZPb0RoQ1ovOTU3SGhnSzBlZkM2RUc1eDRHaTc5T1NoOGdwS2NSL2Rjb3U2ZlFuNGZza0NKUS96M1ViMkJxelU2YVBvd3NPNWJoNEFKY3UvRG1xN1FuQnZTWlovdld0ek4yN0dsMEp6Y3lXQVRaOVZSemI2YmR2b2JONTRxaUJXcWdHb0lpdEVmM3NPZkFteGkzU0xkOUtWVi9GNjN1VnpqNkxJakZPbFJkZ0FVUUVBTU1xM3ZKZGhWcjFrSnVMY01tbjRvcW9MNFpQSU9SR0hDSUdWTkVUaEpnQnRuOXk4TUJyeDhkczdjRmhYZDJvaGcyZm1QTytuU1EzUXkyRDlOa1U5a3BpNDIvb0d5Rmk4cElrQXR2eE1TWW5SK0srQWtMell0RzIzWkJ1d3h2eXoyMTYwYVlRWkZBVVBWNy9xbWlzRDluVkxmMSt2U25lNDRzUU5ZVmplenRwZkhVUm40VHNNNHN2TS9FaVNIQlRGLzloVVg3MDdLdGo0NjAySVhJTjl6VmJKNGFpKy9mY25TNHNCcUl4bFcwWTN6ZHZnVSt1bTNhanpqdEtQNE1iRk10a0duT3M3ODNoUERKRU94UlNSZ2NpWGdieGtzRmxxS3RhS2Y0d3Y1UVY1MTZySjYweWptaDJtOVlFSlRzZm85ZS84aDlCemFld1JIelU0UUNGRnFFOEFhOHVvbWl1SVdtRDU2aExNRGlnN1JISHVTV2E3L0VzUDlSVG5uNnM0Z0dpL1cxeU41SUhPeWtNN0dNaFlVM3M3ajRVc1JxaWxBZ1BrNk92MDY3M3N0UjYyOG5oeHZJMmtoMy9DYm1GMStMdUkzeE5lRGg2VlQ5VnlHT1JQbG1HdjlUSmxidHhJRDU0Vi9TYWo4WGZDZHpleGV4TnRUVldVVGZnQm1ZUVREb0RYZlEwelltV3BBMm5vUDdDZmhnSHlIZmpvbURrampNeFBwQU9BNER6OXdnOFg3VityMlJUbno1WXEwSGRzL2xQeHdwN1RQQm1PTzdna0hsWEh2M3cvNnhpU24vK1ZNMnBiZFhzL1lrajJJNEVLRUtXNTU2VXZIbG1KaW9lbW9yYzBnclFRT1BIaGo2VzJuc2I4cUN4OFVJTVJpNDl0ZFpmMUFVWERCV3BvbUZTcjlsRnM0SkNBdk03WnIxUy92emZIekRlc01NRURSdXQ4NzNtcmNvcC9jRVdCOER6WFJQOTMvcU9pL09Qem45YW12VW5yd3dDNWdlOHRwZkJYeU5KN29iOUR1WW5XallhWjdGWXJaTk1jTksySktDalZkbWRCbkFnQnNmMGhIYjJMTHVkYVFESTFRVnlLQ3o2bVNPbWZvazduK00vRXQ0L1FpdFVlaU9nemNnN1dEWSt6MXlQb21pWEU5amY0aHBCNmIxcEhnNTR5dWZ3WEFBWmhBTlhDK25hbTRsOEI2NjQ5QktCOGdMTU5kN0o1VnVvNHFSRWJ1TXdjSnZZMkVNaTFDTVhvU3FEdGhseEFBZHpkSTBleWs3MzJJNG5PT3V1Mkg5NnROWnRUd3hyQ0FZeEFRTCsyL0NyTS9vYXVoVlQ2WlZkSmh1cnFldEEzUWlPS1FVamU4NnhZd3B3VTdIcjIwbmUwdjJkRzQvNit2dS9pcGdHOTlsZ0ZoaUhOSTR2VWE2SFBkdjdodndpYkZPT0RVQnVSSGpJeHlSSGVvR2drRU1zR3RHMzg3QjMxaDI3R29KRU9EUWJVTzNNdTdkbmxuWkVXWEJWTHNkTzVZNVhoNWVvQ2lLQ0ROeitVUFQrL3pqclpTUXdJQTZ3OXBKWnpEMGF3ZnorZWVTYVN3bWNwWFpOVFZxcDY5WlliOGlCOCtPUjk2ZFV2eGFNRVlsR1dCTFdKS0JBM0o5MjR6VFdPS29YRFNuSzl1WUpBUUVnd1BONk5XN2UydWd6ZG1RUVN3UjRORHViTWI5cjhqRlZxSStBZllab3QrSCtuRDBhU3o1QnNxMzBCdnNndkFObWozZ2ZoUmgrVFNodVJKNUJZaUdBaGdoNkI2S0JBYXNXSDQ2WDcveWMxanJLK3g3QURZKzgrWEUrQWNJd3dSaVNZWjIrVXRJWjFBM014UmhBbWt6bG42ZmJkc2FSSWVpT0pXRERKQkR3NEQyMkxjWTltQjJEa0o2TXJSZ3FuTXpUWDJBYkJ5VWtGalN3dXgwQ1F5ZmptN1BEZU5oMDZEVUYxcDl2WnpHcHVXQVFBWVpNTUFNM0NFQTNUWlFzSFd1MXMvVU1mL1ZVZDF3U2IrR1FRMEdtRUdJUUFwZmYzUi9mdTNLRmR6bEFqTlFnR1lJSjIyQVpwdjQwT2Zod2pNRHp6M2RMdDI1eCtSbzQrcmx0aXdQSVhTNHAxM3lKMVB6UnJzRnFRVjFBd1owUzJNNEJFazdESkZsckJpTnhZdlA1NFZrVml6T2laQnNFZW1uZ0xNRTQ0RDRuaG9vRE03aUlBT0R4V2dVMFRoSkF0d2d3WmZqSlhkc0RTZTJDUGtJVkFNQk1CRFFERGtrZFU3RXV1K2lIcndhZUFtVG96Zmd3R0lGcUlmNEJLVlAweDlDNWpxOHVZNVE4RDNHSWNwUWxOQ2RXTW5ldmN2NDlyYyt5ckxPSWl2WHJtQ3l1SXpLRFJOZ1BLN0pYZUJjek1BZHNQc3h1NDJOUjRINzhaVGhGT29LTUVEZzdHQjBmQ3NSMkx2L0JJNVl0eGtMOEowYnI2TzNQeE1MRGtwa0RwcWswT2tnWXJDanJXTWo5KzNSVGRNTGV2VTRUSzhlZzdJRmJwQU5oQWhCV0FObWNNUnlZNlNBL29MWXZNeTMxemxlMld1NGhDWEdZV1pRTmY3My9ZcEx5NVoybFFGS2pOQUNCZWhWMENtRUFBZGl5WG5kYm5ycDF1bm1qOHBSemw3ZnNuYmR3TTU1djNyZGx2RG95UnNNR2pIWUFUUFQwRXF3Y3NLd0VGRXczQ0NIUUlUVjBleWlXdUFHRVViS0VIN2FBUW5NREFRT0dHQXNDWVlBQTVSOWF5Zlk2UWw3dW1TVTdScm1lSEI3L2FUYkIxUGQ1NUI3RzNETFlMczVyQTAyQVVUVWdBdFNzWkhzTDJiUGdSdG9IQ3h2QUZ0RHNLMFlNSGxjQzA4cnlMMkU2aHFMNHFBUXVyZ21pVVhCc1A4d3ZkWXJxUGJNc243bDFaejZIRmkyNWtKeTNzaGdIa0xnQ1F3UUlDQVZzREI3TGIzZWJsYXRoUkJQWVhiZkNnNnlDRlpBLzVFN0dlNituZEZUWU0yRzB4bHJIME52NWdCWC9lTzlQSHczZEVZNUtDbHcwTEdCY0NvWW9KRk9TK3pjbVQrOVk1ZTJyMTVoZER2RzJuRmpVSUVCQnBoZ1VJdDJhUnk1eXJoOXU1anRpUlBXOFJ5djdIZmRqSUI0VEREREczdjR6bDNEZld1bmpORldvaDJNSmtMdEVJRUE5SVl3VmpLKzZhajRmK2dxbkxaSk4yWEYxd3ptaFJWVURObmFUQU1tNmdYUnpCbXQwcEE3VlEycmxoYzBibVFYTVFuUHJPa05PYzZDaUlZSFdCQ3FCTWtNWTRtRXhZQWxvMTlsOVRtczdXYlQ5ZEEvVnJUdDlCaXRXMVhRc1F5SjY2NVpQSFVIenM5aWd4THhCb3lyZ1FJNEh2UUJ6S1p3UVZtQTVEeTg2eVlxd2ZJV2RPSUZNSElDc2QwRFFUVlloelZYZ0UxQm1BVnp6RWFBSTRFYVl6L1lES2s2RnpwWGNNSFBQa3puS0NDdHA5b2ZlWnlBd0NGeWlBa0NtZXlSMUxxZFhQV1kyUU5tSjVES2hEdFlnUGJZa01YWi80dEZpQ3VBQXo5Qk00UisvMFkybjdPTGRjZEJLamtveVFCak05QTFSQmJVaXl5dW43QzdqbDRMVDFwanpDN0FZQWhtUEVFd2tLQnFJRHNFQzc4STlxYzFqRWVFK0I1MzBXbUZYMTQybXU2cWMvNndBeGx3QVFZSXFneGpIVmE4OHFKd3hVbXJ3bW1QUGx5L2Vxb2REeVN6NVhValltM0ZpcmFXeis0V1FTS1pFVnFnaXNNRVRhT09qR3lvYUhmRmNORkdsQmtMTERFTGcreC9IY3cvVWdRN0tyc2lRZzRxWkhtMjBlNlcyWnh4U0xkcHZKMmQrd3JzOVRsRExBMEdrVVUxZHpRVHU2RGlHSkxOWTN3V3RBME1wUHVCUzhIT0JZRUU4NHQvUXRINk9LdVhRZjlSOFBaVGFZK3NZdmIrQllZek1QS2tmUlRsUG1JOEh4ek1RQWIxNE1zRXU1SlEzSUw3eTRpRDgwaGpzN2hWVE84QjkxdG90MnBTVE1oQUJqU1EvWE1VNVZmQmQ3TTQyRUlJbDdGbTVSeWpKWHppejZDdXR2UGNOMlI2L1VUVGg4WDlINmZWK1J1cUdhQS9UcTUrZ2w0RnFmVU5Mdno1L2FRQ0pBNUtKbG9XN0dRelF4SW1ZK2o2MW9ZanVOYk4yRGNMR0ppQmVKd0JKVEIwUVFyVzNiREMvcUFzd3B1R3RTWE1PY2pFZmhrZG9DUEFYV1BITEV2dm5lOWpjajVpQWVlN2hLaHFlOGJ4YThMN1d1dmlLZmZkblIvKzVqMzYwbk9lVHBoTWlneEFZSlY0YW94V0ZvVEtsVUVHQm5JSTBYN1pqSmNIVkFtYjJEL2pmemJSc3U4b1dkK3p1c2tnaS9ZZys1MmpJZDZKR1dZUWdleUJQWlhPM2RBTkZ3ZlJkVEVtK1R0YXBSOFJ6SjZSM2VoMHdmWTNmR2JmZWJkZGMrekxWbEZySTRPcURXcUR3QUtnQThCYndmOG5LUVZDNjFOVU01OWgxU1MwT3RBZnZaaWk5UUpNc0xodEdja2dObk5RL2pMS2QwQThoNUFYcVB0L0Q5MVBFRk9tR1hZSmNSbGlpVGFqWmdyM2FiSmRoL1JPeEcraFBFV0ljeWk4SDVwM0kxK2ticUEvL0IzV3JvVTdiempBby9mRDFCR3c3YlpQTTZ5T3BDak9vYW4rbGY3c0IybFBRUVI2dTA5Z1pPUmtIREQ3SnRVUXFpR1BTUmFZREdaUEZvY1p3a3lyK3hXL0dRd3JqRUk4cmhXTVpZS1Z3T2RkZk1oZDU4VEMzcmxxTXB4ZnUyZ2FVUVNqY3QwV3NGY1gwaXVhYUpmS1JSYTBJcU5sTjM1ZzZQNnpMbjBPN0NHRG84R2VFWU05blJERzZMblB6dWMzYlp6aW9lWkFYcWJ4c0sxVmhPWERTcGpaQmFYQ1I4ejBCb2M1bHJpelBKcTl2U3p0MGlvVE95MWpVR24yMFdtL3U3M0J0cmZhM0QrWXRaT3pZRFRaYTNwVm1CczI5cnV0a3NyTWtCaFBRYis0dmgxK1R6QmxCbG02eTR5M0oyT0YwQmFMUnIyWVNTVjNQYmpxS1YrYm1WdjNVOFRla1pnRDhkbTQzMDNPRUFPWS9SdVI2Mm0xQ3RBODFYNElVOUJVbXlsYjc4ZktaZVErTEgveVpSVERXNm1iL2VEVGlMZVQycU1NRm9iTTd4NnkraFRJZmpUVy96Z3huWXNERmk2aUdaNkM2ZDlvcFl6eHh6UzZpbVp3QkdPajkxT0gyL0RnWklkVytmc1U2ZTIwT3JEbm9ST3BkU1duUGczV2JOcEh0cmV4c0RCQ3F6WEh5Q1EwRGlIQi9QUkd4aVpYWVBWZWN2TVFNcjVmR2huVitvVjVPeTFFRG5GQTJIR2x3bHVpQWNaaHhpRXU3VFhaZlVMSGhFS1hFM2hhNWF5aWhtaEdBOVJaLytUR2I3am43OGo5RVN4ZUhDd2NEMktZUlRBcmtvWG51UGpKQUgyRHRvS2xnaVV5V1BSTEp6djZoMWdFRnFmWi84aDIvYzBKeDNOcVVaSnlBMlo2aGRBV0kveXJSTGRUOEV6SE5zdWcwektpYVdlS2VnbkdMUU1wRE9hNWNpVFl5YlVMaTJiZE12NUduWFdoWVZlRHVtWjJ0c3hPRzQxSzJhR1czU0RwSlJZMElOaDVZQWdEQndMM3JJcjdGcWs0RFV0Z0JqRyttZXgzSW4wUk04aUNmak5nY0dEQTdDT1FhNUM5aUZpOEQxdFlqOWNnUVdmaUV1cnA5K0xWSDVIQ3ZaZzUrQno5UGl6MGw3R09YNEQ4RmhwYmpzUWhSaUlXNzZZWi9nSXAzb1hVWU0zMXBCTG01MkZRUVh0cVBhM3d2NUMvRkRPWW1ZYlRudjNieFBZT2Vnc2ZZZDJ4TUt3eWcycWVsajJiT2grTDZ5OW90MFJhZlJHNUJ1VnY0SG9ZeFBkTHV3OXczbmhiSFhjd1FJSWlRcEZnV0FsM3NNQVE4WWpnOWliN3JrUVlpWVU5SDdOMUxoRUVqWERROVl0RGYzODBQdE5xQmM5QUkrMEkyWDhwcFhDNXNHTWRJUWx4U0JTTUdsQ1lNV2cwYmRhOHZvVSs3ZG53REowSWV3N29ZMnNhZjlycWtmaHp2VmtubTh6Z3pHRGhUQUVSRVlOUlpkRWZhdXRZbDFlbnhIV0d5QWZjTGR0Znh6RjdWdG0yOC9wOXNTU21aT2U0Y3c0WUJ6bEdQd3QzLzVjUXdwc3d0ZzFySm1JUm5obUNnYUFUS21ZMGRkdm45VHdvT1F2bU9VUmFUUXlYSS84WThGVmNEekIwR002dll6ZzRoYlhIUDVNbVA1TzhXQklUaDVoQk5ROTBmb0d5ZlNHZXZ3aTJDMjlFZC94SXl2WUZEQmVQQmtwQ0FuR1laN0I0Rm1YN004RGxvT3N3N1NhbWtybitNWGo5RkxycGVlREgwVGlZZ1dkb2pYYW82L2NTZURiRDNxMWtiMmlYeCtQMlhGS01pSjhtMkRpeFBBMDE0TnhNdGxtTUowamI5dG5aWnh4bkRPZmtCQlFDdzJHamhjVkswMld5bmdWbHllWXhUSEJjQ3VFQ0M0eldXVm5pM21TNnJ3amNPWmU1dnNxNk9zcjJTZUl4QnBpNGJ1RDV4UUc3TEptOTBNRlNNQ1J3aVNMU202bjFqd3VWM3J1eXhjMHNrVVJyTXREcEdpZE1zWkNDL2FxeXp3cTlNa1VyekkxR0FveGEwRTdhNDVXdTdBLzFKMlBkY0Q4Q0JLcEV1OVNPbk1QTDk4M3o1eE50UFNzUkdHWW9Ba2pnRWdtL1o5OVFIeTRqbDNlRDdSOVVqbUFDT0JXSlE4VGlQbHYrMmZ0MTNCYkU2WVFhQ0RYdWh0a2FpdUxOb05lUXduNUdDcU5ZUHNteUk4YUlSYUx1UTY0YlFpRVFoeGxnRWV4b1RLL2pvSnloMVlHUlNSak1DMUVUQWsra1FFeGJVSDRYaEJrSXM3aEtwcFl2dzJ3RXIxbmltRFdBRVNJTWVtQTJTb3pQUi81OFlvUUV1QUNEWUpjZ0IzT1dPSEFkUWZ4N2FmUHE4TUZxVVovRWFFQUt3Ulo3ZmVZWEt5MGV1ZEt5R3BzYVZrekdTTnRnQk9USXBwdEdNMkFMS1hFQW1IZlJ1S0JnaWZGRUJsbjZsc1Ava091S1lQYVVvZXVvRUd3WXBIdnF4cjllSzl6a01EUytUelNzTURvSkF1ejJyRGNPaC9udktzVm5XTkR4TFFpWXB0MTFpekpmazdUVnpES1BNU0FBQmlIdzRONDV2ZVRoUGY2VFc5YnlsTEpndzZEQ3pOaVpUTmVZK0hxV0hoTEc5RUpOM1lpVTdNQklhYThSZ1NBbEVvdGZxSjkxODEzOTQxZlE3YitTUU1aVkFZWmttTFdSdWhodHlnUWgxQmlMVklzRGpFeElnUE5FRFFnREVwQUlCcmx1eUUyRG1UQ1dpQitnSmdBZGpCSE1FcEtJY1FqMGFPb2haZzRZanpHV3lKQWlVQ0FIVVFNTkIwa1JjRVFiYkJhNGlSL2kvd0gzRDVQTXBkMnQ1UUFBQUFCSlJVNUVya0pnZ2c9PSIsInN1cHBvcnRlZEV4dGVuc2lvbnMiOlt7ImlkIjoiaG1hYy1zZWNyZXQiLCJmYWlsX2lmX3Vua25vd24iOmZhbHNlfSx7ImlkIjoiY3JlZFByb3RlY3QiLCJmYWlsX2lmX3Vua25vd24iOmZhbHNlfV0sImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIkZJRE9fMl8wIl0sImFhZ3VpZCI6IjIwZjBiZTk4LTlhZjktOTg2YS00YjQyLThlY2E0YWNiMjhlNCJ9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMC0wOC0wMyIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiZVNlY3UgRklETzLCriBGaW5nZXJwcmludCBLZXkiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDE5MDcwODAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4xLjEiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMyJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMC0wOC0wMyJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjAtMDgtMDMifSx7ImFhZ3VpZCI6ImNhNGNmZjFiLTVhODEtNDQwNC04MTk0LTU5YWFiY2YxNjYwYiIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiY2E0Y2ZmMWItNWE4MS00NDA0LTgxOTQtNTlhYWJjZjE2NjBiIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IklEUHJpbWUgMzkzMCBGSURPIn0sImRlc2NyaXB0aW9uIjoiSURQcmltZSAzOTMwIEZJRE8iLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MiwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjowLCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjowLCJibG9ja1Nsb3dkb3duIjowfX0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQzZUQ0NBZEdnQXdJQkFnSUpBSmJUeXJ1MVgvSVBNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1DTXhJVEFmQmdOVkJBTU1HRWRsYldGc2RHOGdUWFZzZEdsQmNIQWdSa2xFVHlCRFFUQWVGdzB4T0RBMk1USXhORFExTlRCYUZ3MHlPREEyTURreE5EUTFOVEJhTUNNeElUQWZCZ05WQkFNTUdFZGxiV0ZzZEc4Z1RYVnNkR2xCY0hBZ1JrbEVUeUJEUVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTVZqS0hXcGJEN1RTbE14b2NqVGw2bklmN3gzMlBtc1E5ekd1TEdHcUEwVVFab0lxM1hMekw2TFlVdko1QTVnMHV5RkdsbEhFZkdBS3JFYUNROEZWdlBTL1VoMEZ5ZnpXaFJBemlUU2lqak1JSVZqampVdjltOXZGbWNYU2NnSGlnN09kejg4NThWMGtyTkg5OXFHbTN3amdhT2VyVFdtdCtqWENVZm4wMUlrVFB3eEcySGxnRWQ0NWpOTFNWN1Zvb2wrS2U4RTJraTRsRWtUZUh6Ym91bFI1R1VicDNuTWk3RTQ3Vk1RYTNiTndueldCYnNhQlNTUWhMazNtNUhhS2hoeGE2d0pESzQ3TmlNQ2tDa2RJSHVXU1FMVkFmbTg1VUFPTnRFT1B3aTBPdUszcWJlOHlLT0ZHZjBLaEI1TU1lQXltN01WL000VzBhNDlvZ1BEOXBNQ0F3RUFBYU1nTUI0d0RBWURWUjBUQkFVd0F3RUIvekFPQmdOVkhROEJBZjhFQkFNQ0FvUXdEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBSld6NXhMTWs1V05ZYkFiNnlPeEVDQm9aMldlQi9xbDRWSjNPLzMvdE5zeE9ZbnpMZVdvNTQwelFoOXJBbWF4ejdldW1CbHNrTXE0eUdQU05YQjl5Y1dHSGdrY0NlU3pOMnd2OENJekRCczJvQlpqVE5rNjVMQlpEc3NUT0J0TVcvK3VURkhRZmJ1TzNJU0xoSTBEWGZSRWk5TkRNM2pmazExeEhjc2ZoMlJNVitRZE5md1ZhWlpyQ3Erb3VHK0V2a3Y3S3FxK295dTBWRk0vdHo2OFRHbDZ5bGhQRlIxcWg5d3R0cFZqQU9PQ0VRQ0xxUDJkUDI4bHdZQnlDcUhRcVZId2J1anYvTFpqWm5LVzNMWW5kWml4UFBTUkNKc3NERHdKdmgvZjZuVHhnOVpFKy9KY1lyZTVDYUk4bnpWSGFTT0NqTko3RnpVTEc2NEppV092UTUwPSIsIk1JSURkVENDQWwyZ0F3SUJBZ0lKQUlDVVR2a2d0ajVDTUEwR0NTcUdTSWIzRFFFQkN3VUFNRkV4Q3pBSkJnTlZCQVlUQWtaU01Rd3dDZ1lEVlFRS0RBTkVTVk14Q3pBSkJnTlZCQXNNQWtOVE1TY3dKUVlEVlFRRERCNUhaVzFoYkhSdklFMTFiSFJwUVhCd0lFWkpSRThnVTNWaVkyRWdRMEV3SGhjTk1qQXdOekEzTVRRek56RTRXaGNOTXpBd056QTFNVFF6TnpFNFdqQlJNUXN3Q1FZRFZRUUdFd0pHVWpFTU1Bb0dBMVVFQ2d3RFJFbFRNUXN3Q1FZRFZRUUxEQUpEVXpFbk1DVUdBMVVFQXd3ZVIyVnRZV3gwYnlCTmRXeDBhVUZ3Y0NCR1NVUlBJRk4xWW1OaElFTkJNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXZBS09lcUM1L3AwRDFpc0NZS1FKbFZVT3JCNkk3RExvY3VuRS9SbThkdUdUYnl4UWh0M0NiRlZUdjNOMkxwMmZianhsSSszc09TR2szM0ZUWWtUcXhjZEpJcko3U3NrQmNVU05yZktPYVFULzZLUWNQNENtN1YrNjU1VHErVFd4eXhXUWhEeWd0MTVxb1A3TXVLNmJUOVN3cENqcGZLaGFNU215UWFNb1VjUkFiTHFkekJDYWMwaHpCK1plK2dxSmxuV1Y5VWFTSTJyRnNWdUg0WkUwY1JPK01PcGFMZ00vczI0OG5HR0hwMjJld1NRZmJuUGFCYmI4aXF5QVArY3U1MkdMc1VwS1JKZWJFK1I2K1BNUTlKQ2RXZVFaUjNEa2ZTaWRrdjNtY2I0anExaUl0YStNcUtoUm53cmZYaDkxMUtXTG5ZQWw5RU5DaExYMGM2U2oxUUlEQVFBQm8xQXdUakFkQmdOVkhRNEVGZ1FVV0x2aFJCVVBuOHVMSWY2OCtndi9OWkl3R1NJd0h3WURWUjBqQkJnd0ZvQVVXTHZoUkJVUG44dUxJZjY4K2d2L05aSXdHU0l3REFZRFZSMFRCQVV3QXdFQi96QU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFGTHJEaGFlZ2VLSHhZakgzRVAzdlVCS2huek0yMDZBU3hnZVlDTzJFYzlwT2xZSmFlcUZFK3NVYW1VVi9wd2pEbHFOYVNnRmd5N1R3ZVlrdk9tTW40cVNjc0hxdkozekdPQWlhZndhaDF2VUhmQ2xYUjgrYXhPMmlHT1VGMEpLclo5WVlqYkFhNS80SENsdjdqRlBPZE1XVE9ReW5nb2lIQXMzamt1WWpwQ0xGbEI0Vk9pM2Qxd2pBMXBuVGRCS2tBYjd0OG5UdncrL1hiRnZjUWE3M1ZIN3Nqdm9CcUQzZmRNZlJjdVZxNHFVWnRaVDZjR2FnVEhENjFUdHFoOW9NQ1pYY0RiUjFQR1puTmJxeWNzV1BESUswbnBtSzMvM2xmVjhjK1pzcnk2ZTE3MG1mSk1acDdPOG02Q1N6Ni9WTEsreURKZDc4NDF3cG1lS1RmNkluWkE9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFRd0FBQUFnQ0FZQUFBRG5sVVpxQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUVuUUFBQkowQWQ1bUgzZ0FBQUFaZEVWWWRGTnZablIzWVhKbEFIQmhhVzUwTG01bGRDQTBMakF1TWpIeElHbVZBQUFLMUVsRVFWUjRYdTFkRFhBY1pSbStOT0FmS29nNldPMFFjcmVYM083MVI0MW9IZFNxcURBT2czK2NZRVhCb2xYUlRFbjIyMHRhS1RjNjRtZ0JxekJpRVVWcEJkcWl3d2hxU2RJUzJ1cFlTZ3ZSdHBUU2NrbGpXekhhZ2pwU1JkcjR2THR2anJ2azI3dmR2ZDFMam43UHpETjN0L2QrNy90K2Y4Lys3OGFLME5EYWFyMnFPZFhab3FXeUg5UjBhMEZjdDY3V2RIR1Rab2pWQ2NQcVNlalcxb1F1SHNPeS9lQlRzRG1NLzU0WlQ5aitMV0dJZzdEZkIvc0JjRFBzZjRYZlA4WDNiMnVHMVpIUXpVOG1VdUtkeVdUSG01cWFjaS9qSEFLQnlpZjBiQnIrTHdhWElQWVBrTWRxZkw4WGRXcGxzMUFBMzEvUWpPdzk4TDhTOWI4QlhJUjIrbkRjNkRvemxzazBzbG5rUU14a1BHWE85RUp0Vm5ZR0Y0c1V5Vm5kOFVUYWVwOGJ3KzZMYWtCajVpemRiTkpTMXJ4RVdueVd4ZzM2RW1QZFdvUFBEZWpmN2VBVEdNc0hhRHpUdUM2aGJqME4vcFhtQXNydWdzMFdMUDhOdUJKalpKbVdFbGNsMDltUEoxSm1XMHRMNSt1aUhCdUdrWHNsalg4N25pNEV6Vm5rOUF2a3NRbjU3RVNkaHJCOEJNdVBqT1dQLy80T0hzUi9lN0Q4WWRUbGZ0UmhGZmdkTEc5SHUxd0FmenI1NWpBT2tpUUtodlZiR0I2QzAvL2krMmlOZVJ4OEZnbnZSZnhmYWluelNrN05FMGlJVVBiZjQzd1dtTlROZDdCcEtFQTdMWmZGQVk5enAzeVpUU01EaVFWaS9VK1NnNVFZQUlmT21HMmV3c1VqQS9yaFc3TDRCZXJtajloMFVvQjJPQitUWlRXNEIvazhPeUcveUNpT29XMUlZSDZIOFhQejlMYmNLemlsUUdocE1admhaeUhHd0czZzQyQms4NVo4bzkwRzhYME5pU3MxSXYyUUdrOEtkV3N6dDRzbklQOFJxUjltRFFYRElkWlNiQm9aMElsM1MyT1haWFlwRjQ4TVUxNHduSzFiZVc0MXBMM0ZFUUNKbFBWV3RERzJmdXlWck5SM3RCVGRTakI4WXJJRm95VnRubzJPQ3pCZ3hETkJCNnBYS01Id3hpRDlnSzNLYzZQY2t2QkdKUmkrTWNtQzBZRDRmZEs0WG9oOVcvWVRDWlJnZUtOdndjaGtHdEcyZTJXK2Frc2xHTDR4bVlKQmF4bHBUSStrTlJRZG1HUjNvVU1KaGpmNkZRdzZjQ3J6VTN0Q01MRFd1UXNkM1IrQXczS25CUTVLeW5qaGpkeE9ubkRpQ0VadUdqcnNZV2xNSnRwaVdVSzNCbVQvRmZFdWRoZzZVUGU2Rmd6MGJSNmZhNk1tblkza2xEd2hhWWpMVVU2ZXMyN3QwZ3p6bTdWZ1V1OTZENmZrSHhDYTYyVVZHQ01xOGcwMmpSUW5pbUJvUnZZaWFUd20ybnRmVzl2Q2s3VzBkWUhzL3dKMTYzazZlTVp1UTBXOUN3Ykc5SzFzT3FXQXZJVTBYNXRpRFp0TmJTakJjR0VFZ3RIV2Rzdko4RTJuQXVVeGlicDVoV005Mm9EZjJ5YjhYMEt4M3JFTkYwb3dvZ0htMGhKcHZqYVZZUGpDaVNBWWliVDFlV2tzSmliQ2svUG01VTVpYzhyeFFwbGRNUlBwN0hsc0hocVVZRVFESlJnaDRzVXVHSFNSRCtwSVYrVEo0eEgxTEc5ZGpDSFRpTWxSNFZpRzJFN0hSYmhBS0ZDQ0VRMlVZSVNJRjd0Z29KMnowamhNdEhPZWpsMndlUUZZL2xHWmZTbkZmRFlQQlVvd29rSENNQmRMODdXcEJNTVhLZ3FHSVM1dlRwdG5oMFhVKzA1Wm5BSkRGQXpENkRnZC9wNld4bUhHRGZGRk5oK0gwUWIwd2FPeU1tT0UrT1VOSS9jU0xsQTE2bDB3MEY2NzQ3cTRwUnBHY2RxYTdrdVI1VXRFSDQ1Z0Rtd0tpL0RaajgvN0lFUzM0ck96ZWFhWXpXbFVoM29SakpvelJNR29PQUVOYTBpMmRUR0dlRXA4VEZKbVBEdll2R3JVdTJDRVFicWhrc09GQnN5bGkyV3hhc1RqNk5kMTJwc1h2NTdUQ1FZbEdDNE1TVEJhVzYwM29vMWRiNnF6cVZ0ZlluTTU2QXBCdzlveG9Wd1JNWWxHTkszOTFWeWlLaWpCaUVZd21sUGRMYkpZdFNUYTdxSGlBK3Urb1FURGhTRUpCdHB2aGRUL0dIV3h2OXpXeFJpMHRQaUV0SHdKeGJWc1hoV1VZRVFqR0hSd0d1T2gwZ1Y1a1RPZU1pL2hoUHhEQ1lZTFF4Q01zMXF0Vmd6dThyZXZweXlQandId3NwVmgvU3VWV2pLZEN3U0dFb3lvQkFPNXA4MzNvcCtlazhXc0ZkRit3YThTVm9MaHdoQUVBMzdXVFBCYlJIVGNBZXhHdkpUTkhmUU1OY2Y2QnMrUDllYm54ZnFlUEpXWDJrQ1p6SGdmRXhqQ0dRSWxHTkVKQnNGK0VKRXVkc3ZpMW9iaVQ1eUtmOVNOWU9qV1pqVHlmYUhSdWQ5QUhvdFlwV0E0TnhxSlkxTGZUTlQ1SzJ3ZWk2MGZNaUFVRDRLakJmYm1qOGI2OHN0ajJ3N2FEMnFoZlUvMHh5NlpyekhTMnF1bHBUTmwrd3lJdWhjTWpCVTY2MVFObTJjdVBvUERSWVRSQmpwYlIyTUFPVjlIWnpPUTk4L3cvZll3aVBIdGZqZTBidjJGay9DUGVoR01PcnNPby9MdDY3bzFYRGdWdWlFL0J3THhqeEt4S09YRzJNNmR0aTM2dzhPUmRuR1A3VGNna0Z1ZEM4YlV2QTZqbGtpa084K1R0ZzJJTVhTWXpmeERDWVlMcXhBTUw3ZXZvNzd0dG5GLy8wbllrdGdoRVlseEhMcWF6SjJ0akVxYnM5aXlTV1huMnY0RFFBbEcvYU9zWUJqV0FUYnpEeVVZTGd3c0dMbHBLTHRWNnBOSkhWWjRZSExmL25mSkJXSUNoMkhkUUVYaTZld2xNcjhsZEo1SFl0djdoUktNK2tjNXdVRDc3R1V6LzFDQzRjS0FndUhwOUdkS1hNWG1FSXg4dTBRY1hQallhKzB5bVV3ajJ1dHhxZThpb280WDJ2WStvUVNqL2xGaGwrU1BiT1lmU2pCY0dFQXc2SG9LN0E2VW5jaW81OEdtcHN0ZWVCMUQ3OUJYNWVJZzRmM0RwM09wR09MTWwva2Z4eDJ4ekZyZmo4VlhnbEgvcUxCTHNvWE4vRU1KaGdzRENFWWlWZjcyZFdicEpkdzkrODZSaXNONDlnN3VoM1ZoRjRQRjZRbUovMUxxMWdJdTRobVZCQU1UOXU3eDcwd0pnL1RZZlU2aExKUmdWRWFGWFpJSDJNdy9sR0M0MEtkZ3pKNXRuZ0tmQjZTK21Qai8wSXdaSFMvbklnNUdSeHNoQmdOU2tTamxZaTVSQVBydVVsbWNZbUp5L1huRzNIRXhLNkRpRmtaRXhCall5Q21VUlNYQlFEdVBvQTVibzJiU3lMNmRVL0lFM2lxVW5nWU5tMmdEMTdOMCtHOFZwK1FmU2pCYzZGTXc0cnBsU2YwVUVURk5OaTlGei9ETVdHLytpRVFrSFBibU44UzJiWnQ0K2JoemowbjVKM2lCZEZzMWwvQUUxTDJ1QmFOV1RPcmlBNXlTSnlEdjc4cjgxSnllcnk2V1FBbUdDMzBJUnRPYzNHbG9wOE5TUDJQVXhWTmwxL1RyOHEyeHZ2eDY4UGtpc2ZnbmZsOGY2eDkwZlFVbDRuNUdHcStZdWpoeTVxenUxM0NSaWxDQzRZMTFLUmowV2tndEYvd21SU1VZTHZRaEdGNG1HQWFMWVBQeTJEZzBQZFl6OUg3c3BzeU45UXhVZkMwaVhmeUZQdG9uaTFsTUdxeGNwQ0tVWUhoajNRa0d4Q0twVysvbWRJSkJDWVlMUFFvR3ZZUWE5dVhmNzFscDY2SktsSHQ4L1FzVVIrMFhUWHVBRWd4dnJBL0JvTGZyMlFmSHIvR3psZW1LS1NNWXVua0hUU3pFbEw0K3NGYUNnZm8rQis3V2pPem4yTFFzbk5jR2lEMVVUdWJQb2RuRjVwR0F6cGdndnV0V0J1cjZIN3RPdXJpVWk1UUZYU1dLTXQvSEJONUVheVhVcit3OU1jRXBqdkdLNHZmSWJ3VmR3OElwbEFXTkJaUzVEdldoTjVYbjRlZG9xZDhvaUZ5eDJ3aytpdS8wSXVpbDlLd1RUc2tUNG1seER0cnpSbTVYalBVbzJwWGU2RzQ5Z2p4dncrZkNoTkdoY2Zod1FDOWphVExFRzl4b0dGZVd2aVkrVXVTbTJRK2NvWGR5Nk5ZaU5Pd3lWUHJIR0JoM0pvenVVQ3NlVDVtWFFmRi9qaGcveE9mWE5kMjhnam8wYUgzcExBbE5OR2R0TDVZaTU1dlFnYmVqNCs2Zy85Z3NNcUFPSDNIYVNmd0ViWGNEdm1lVGh2VXBUZTk2eTRRek03NlFtOVkwWjlGcGRQY202dk5wc0F0OXN0eHBPK3ZYNEViRTIwb1RDY3NHU29ubCtCL2Y2V2EvVmNWNTBhU1B4N3RPRGVFQnhnMTB4eStka29YZ2ZBZ3hGaURlMTlBTzMwTS9yRVFPOXlMbUE0aS9CYiszbCtibmtQSUhONFByVUwrMStGd0IyMnZob3gxaWYxRzgxWHBidkEyNVpqSytyMmx4UjI0YTFkOFJQekVmdXdvV2NzRVdpSk16WWorSTN3K1Z0S3NoSGdIL0FQWlNucWpUemZpOHhoNjd1blV1UGRyQTI4TnhZckgvQXozdEk0ajUrVE9MQUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIl0sImV4dGVuc2lvbnMiOlsiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiY2E0Y2ZmMWI1YTgxNDQwNDgxOTQ1OWFhYmNmMTY2MGIiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjp0cnVlLCJ1cCI6dHJ1ZX0sInBpblV2QXV0aFByb3RvY29scyI6WzFdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIyLTA3LTIyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiSURQcmltZSAzOTMwIEZJRE8iLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDIyMDcyMjAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIyLTA3LTIyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjQtMDYtMTgifSx7ImFhZ3VpZCI6ImFiMzJmMGM2LTIyMzktYWZiYi1jNDcwLWQyZWY0ZTI1NGRiNiIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiYWIzMmYwYzYtMjIzOS1hZmJiLWM0NzAtZDJlZjRlMjU0ZGI2IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlRFU1QgKERVTU1ZIFJFQ09SRCkifSwiZGVzY3JpcHRpb24iOiJURVNUIChEVU1NWSBSRUNPUkQpIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2ludGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQ0xEQ0NBZElDQ1FDdjF2bHFLZVc1ZWpBS0JnZ3Foa2pPUFFRREFqQ0JuREVMTUFrR0ExVUVCaE1DUTBneER6QU5CZ05WQkFnTUJrZGxibVYyWVRFUU1BNEdBMVVFQnd3SFZtVnljMjlwZURFUE1BMEdBMVVFQ2d3R1ZFOUxSVTR5TVNJd0lBWURWUVFMREJsQmRYUm9aVzUwYVdOaGRHOXlJRUYwZEdWemRHRjBhVzl1TVJNd0VRWURWUVFEREFwMGIydGxiakl1WTI5dE1TQXdIZ1lKS29aSWh2Y05BUWtCRmhGdlptWnBZMlZBZEc5clpXNHlMbU52YlRBZ0Z3MHhPVEExTVRRd05qVTBNakZhR0E4eU1EY3lNRFV5TURBMk5UUXlNVm93Z1p3eEN6QUpCZ05WQkFZVEFrTklNUTh3RFFZRFZRUUlEQVpIWlc1bGRtRXhFREFPQmdOVkJBY01CMVpsY25OdmFYZ3hEekFOQmdOVkJBb01CbFJQUzBWT01qRWlNQ0FHQTFVRUN3d1pRWFYwYUdWdWRHbGpZWFJ2Y2lCQmRIUmxjM1JoZEdsdmJqRVRNQkVHQTFVRUF3d0tkRzlyWlc0eUxtTnZiVEVnTUI0R0NTcUdTSWIzRFFFSkFSWVJiMlptYVdObFFIUnZhMlZ1TWk1amIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBVGpiU1pkNjEvN0hhb3h5b3hsM3loNnRqazN0TDZBU0NDdW0vMm5kcTg2RFFMdCtEVTZNVjZmNC8rK3VwQVBiVFpVNmpXbnZJTG92dG5zUmdDV3dVWVJNQW9HQ0NxR1NNNDlCQU1DQTBnQU1FVUNJRWlOZk5wQUxaSUg4bjFWeVhwRnlMSXpEZVpFWk9DUmlLaDQ0dW5pYUJaUEFpRUFvZGFuT2xQVUVDakdIRWYrRTRkVEtreUNscExpNEpkRUprVkhRcElYRUpBPSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFnQ0FZQUFBQnplbnIwQUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUtUMmxEUTFCUWFHOTBiM05vYjNBZ1NVTkRJSEJ5YjJacGJHVUFBSGphblZOblZGUHBGajMzM3ZSQ1M0aUFsRXR2VWhVSUlGSkNpNEFVa1NZcUlRa1FTb2dob2RrVlVjRVJSVVVFRzhpZ2lBT09qb0NNRlZFc0RJb0syQWZrSWFLT2c2T0lpc3I3NFh1amE5YTg5K2JOL3JYWFB1ZXM4NTJ6endmQUNBeVdTRE5STllBTXFVSWVFZUNEeDhURzRlUXVRSUVLSkhBQUVBaXpaQ0Z6L1NNQkFQaCtQRHdySXNBSHZnQUJlTk1MQ0FEQVRadkFNQnlIL3cvcVFwbGNBWUNFQWNCMGtUaExDSUFVQUVCNmprS21BRUJHQVlDZG1DWlRBS0FFQUdETFkyTGpBRkF0QUdBbmYrYlRBSUNkK0psN0FRQmJsQ0VWQWFDUkFDQVRaWWhFQUdnN0FLelBWb3BGQUZnd0FCUm1TOFE1QU5ndEFEQkpWMlpJQUxDM0FNRE9FQXV5QUFnTUFEQlJpSVVwQUFSN0FHRElJeU40QUlTWkFCUkc4bGM4OFN1dUVPY3FBQUI0bWJJOHVTUTVSWUZiQ0MxeEIxZFhMaDRvemtrWEt4UTJZUUpobWtBdXdubVpHVEtCTkEvZzg4d0FBS0NSRlJIZ2cvUDllTTRPcnM3T05vNjJEbDh0NnI4Ry95SmlZdVArNWMrcmNFQUFBT0YwZnRIK0xDK3pHb0E3Qm9CdC9xSWw3Z1JvWGd1Z2RmZUxacklQUUxVQW9PbmFWL053K0g0OFBFV2hrTG5aMmVYazVOaEt4RUpiWWNwWGZmNW53bC9BVi8xcytYNDgvUGYxNEw3aUpJRXlYWUZIQlBqZ3dzejBUS1VjejVJSmhHTGM1bzlIL0xjTC8vd2QweUxFU1dLNVdDb1U0MUVTY1k1RW1venpNcVVpaVVLU0tjVWwwdjlrNHQ4cyt3TSszelVBc0dvK0FYdVJMYWhkWXdQMlN5Y1FXSFRBNHZjQUFQSzdiOEhVS0FnRGdHaUQ0YzkzLys4Ly9VZWdKUUNBWmttU2NRQUFYa1FrTGxUS3N6L0hDQUFBUktDQktyQkJHL1RCR0N6QUJoekJCZHpCQy94Z05vUkNKTVRDUWhCQ0NtU0FISEpnS2F5Q1FpaUd6YkFkS21BdjFFQWROTUJSYUlhVGNBNHV3bFc0RGoxd0QvcGhDSjdCS0x5QkNRUkJ5QWdUWVNIYWlBRmlpbGdqamdnWG1ZWDRJY0ZJQkJLTEpDREppQlJSSWt1Uk5VZ3hVb3BVSUZWSUhmSTljZ0k1aDF4R3VwRTd5QUF5Z3Z5R3ZFY3hsSUd5VVQzVURMVkR1YWczR29SR29ndlFaSFF4bW84V29KdlFjclFhUFl3Mm9lZlFxMmdQMm84K1E4Y3d3T2dZQnpQRWJEQXV4c05Dc1Rnc0NaTmp5N0VpckF5cnhocXdWcXdEdTRuMVk4K3hkd1FTZ1VYQUNUWUVkMElnWVI1QlNGaE1XRTdZU0tnZ0hDUTBFZG9KTndrRGhGSENKeUtUcUV1MEpyb1IrY1FZWWpJeGgxaElMQ1BXRW84VEx4QjdpRVBFTnlRU2lVTXlKN21RQWtteHBGVFNFdEpHMG01U0kra3NxWnMwU0Jvams4bmFaR3V5QnptVUxDQXJ5SVhrbmVURDVEUGtHK1FoOGxzS25XSkFjYVQ0VStJb1VzcHFTaG5sRU9VMDVRWmxtREpCVmFPYVV0Mm9vVlFSTlk5YVFxMmh0bEt2VVllb0V6UjFtam5OZ3haSlM2V3RvcFhUR21nWGFQZHByK2gwdWhIZGxSNU9sOUJYMHN2cFIraVg2QVAwZHd3TmhoV0R4NGhuS0JtYkdBY1laeGwzR0srWVRLWVowNHNaeDFRd056SHJtT2VaRDVsdlZWZ3F0aXA4RlpIS0NwVktsU2FWR3lvdlZLbXFwcXJlcWd0VjgxWExWSStwWGxOOXJrWlZNMVBqcVFuVWxxdFZxcDFRNjFNYlUyZXBPNmlIcW1lb2IxUS9wSDVaL1lrR1djTk13MDlEcEZHZ3NWL2p2TVlnQzJNWnMzZ3NJV3NOcTRaMWdUWEVKckhOMlh4MktydVkvUjI3aXoycXFhRTVRek5LTTFlelV2T1VaajhINDVoeCtKeDBUZ25uS0tlWDgzNkszaFR2S2VJcEc2WTBUTGt4WlZ4cnFwYVhsbGlyU0t0UnEwZnJ2VGF1N2FlZHByMUZ1MW43Z1E1Qngwb25YQ2RIWjQvT0JaM25VOWxUM2FjS3B4Wk5QVHIxcmk2cWE2VWJvYnRFZDc5dXArNllucjVlZ0o1TWI2ZmVlYjNuK2h4OUwvMVUvVzM2cC9WSERGZ0dzd3drQnRzTXpoZzh4VFZ4Ynp3ZEw4ZmI4VkZEWGNOQVE2VmhsV0dYNFlTUnVkRThvOVZHalVZUGpHbkdYT01rNDIzR2JjYWpKZ1ltSVNaTFRlcE43cHBTVGJtbUthWTdURHRNeDgzTXphTE4xcGsxbXoweDF6TG5tK2ViMTV2ZnQyQmFlRm9zdHFpMnVHVkpzdVJhcGxudXRyeHVoVm81V2FWWVZWcGRzMGF0bmEwbDFydXR1NmNScDdsT2swNnJudFpudzdEeHRzbTJxYmNac09YWUJ0dXV0bTIyZldGblloZG50OFd1dys2VHZaTjl1bjJOL1QwSERZZlpEcXNkV2gxK2M3UnlGRHBXT3Q2YXpwenVQMzNGOUpicEwyZFl6eERQMkRQanRoUExLY1JwblZPYjAwZG5GMmU1YzRQemlJdUpTNExMTHBjK0xwc2J4dDNJdmVSS2RQVnhYZUY2MHZXZG03T2J3dTJvMjYvdU51NXA3b2Zjbjh3MG55bWVXVE56ME1QSVErQlI1ZEUvQzUrVk1HdmZySDVQUTArQlo3WG5JeTlqTDVGWHJkZXd0NlYzcXZkaDd4Yys5ajV5bitNKzR6dzMzakxlV1YvTU44QzN5TGZMVDhOdm5sK0YzME4vSS85ay8zci8wUUNuZ0NVQlp3T0pnVUdCV3dMNytIcDhJYitPUHpyYlpmYXkyZTFCaktDNVFSVkJqNEt0Z3VYQnJTRm95T3lRclNIMzU1ak9rYzVwRG9WUWZ1alcwQWRoNW1HTHczNE1KNFdIaFZlR1A0NXdpRmdhMFRHWE5YZlIzRU56MzBUNlJKWkUzcHRuTVU4NXJ5MUtOU28rcWk1cVBObzN1alM2UDhZdVpsbk0xVmlkV0Vsc1N4dzVMaXF1Tm01c3Z0Lzg3Zk9INHAzaUMrTjdGNWd2eUYxd2VhSE93dlNGcHhhcExoSXNPcFpBVEloT09KVHdRUkFxcUJhTUpmSVRkeVdPQ25uQ0hjSm5JaS9STnRHSTJFTmNLaDVPOGtncVRYcVM3Skc4Tlhra3hUT2xMT1c1aENlcGtMeE1EVXpkbXpxZUZwcDJJRzB5UFRxOU1ZT1NrWkJ4UXFvaFRaTzJaK3BuNW1aMnk2eGxoYkwreFc2THR5OGVsUWZKYTdPUXJBVlpMUXEyUXFib1ZGb28xeW9Ic21kbFYyYS96WW5LT1phcm5pdk43Y3l6eXR1UU41enZuLy90RXNJUzRaSzJwWVpMVnkwZFdPYTlyR281c2p4eGVkc0s0eFVGSzRaV0Jxdzh1SXEyS20zVlQ2dnRWNWV1ZnIwbWVrMXJnVjdCeW9MQnRRRnI2d3RWQ3VXRmZldmMxKzFkVDFndldkKzFZZnFHblJzK0ZZbUtyaFRiRjVjVmY5Z28zSGpsRzRkdnlyK1ozSlMwcWF2RXVXVFBadEptNmViZUxaNWJEcGFxbCthWERtNE4yZHEwRGQ5V3RPMzE5a1hiTDVmTktOdTdnN1pEdWFPL1BMaThaYWZKenMwN1AxU2tWUFJVK2xRMjd0TGR0V0hYK0c3UjdodDd2UFkwN05YYlc3ejMvVDdKdnR0VkFWVk4xV2JWWmZ0Sis3UDNQNjZKcXVuNGx2dHRYYTFPYlhIdHh3UFNBLzBISXc2MjE3blUxUjNTUFZSU2o5WXI2MGNPeHgrKy9wM3ZkeTBOTmcxVmpaekc0aU53UkhuazZmY0ozL2NlRFRyYWRveDdyT0VIMHg5MkhXY2RMMnBDbXZLYVJwdFRtdnRiWWx1NlQ4dyswZGJxM25yOFI5c2ZENXcwUEZsNVN2TlV5V25hNllMVGsyZnl6NHlkbFoxOWZpNzUzR0Rib3JaNzUyUE8zMm9QYisrNkVIVGgwa1gvaStjN3ZEdk9YUEs0ZFBLeTIrVVRWN2hYbXE4NlgyM3FkT284L3BQVFQ4ZTduTHVhcnJsY2E3bnVlcjIxZTJiMzZSdWVOODdkOUwxNThSYi8xdFdlT1QzZHZmTjZiL2ZGOS9YZkZ0MStjaWY5enN1NzJYY243cTI4VDd4ZjlFRHRRZGxEM1lmVlAxdiszTmp2M0g5cXdIZWc4OUhjUi9jR2hZUFAvcEgxanc5REJZK1pqOHVHRFlicm5qZytPVG5pUDNMOTZmeW5RODlrenlhZUYvNmkvc3V1RnhZdmZ2alY2OWZPMFpqUm9aZnlsNU8vYlh5bC9lckE2eG12MjhiQ3hoNit5WGd6TVY3MFZ2dnR3WGZjZHgzdm85OFBUK1I4SUg4by8yajVzZlZUMEtmN2t4bVRrLzhFQTVqei9HTXpMZHNBQUFBZ1kwaFNUUUFBZWlVQUFJQ0RBQUQ1L3dBQWdPa0FBSFV3QUFEcVlBQUFPcGdBQUJkdmtsL0ZSZ0FBQStkSlJFRlVlTnJFbDA5b1hGVVV4bi8zdnZmbWp6T2RtWmNtY1Nha21VeUdxb1FvbEJRWE1WMkovN0R1bExZR0ZIRlJOMEowSVFoU1VBcDIyWTB1dEJaTHNhSllNR2hBVFYxSU54SnIxWkttTnFVWU01a1lrMmttTXpHWm1mZnZ1aGhKdFVMbWpRN05XYjUzM3prZjN6bmZkOTRWMDVsK2dNZUJWNEY3dVQxeENUZ0dqSXZwVFA5RHdGZHNUendzZ2VOc1h4eVhRSFliQVdSMXdBYUN2ajhSQXBUQ1c5L0FMWmZCZFJHQkFGb2lqZ2dHUWFsbUFOZzY0UG11cmV1NHhTSjJZWmxBdXBmb252c1F3U0J1Y1pYcTVTdTQrWG1NN2wySVVBaGMxMDlLVDIrbXVMMzRPekljb3V2WVVjeG5SekNTeWMzMzFhbkxGTjUrbDVWM1RpSVRjWFRUUlBrQUlhWXovU1VnMXVpZ1d5d1M2RTJUL1hvY3JhME5nSTN2dnNlYW5TUFkxMHQ0Y0E4QXhROCtJdmZjWWJRMkV4bUpOR3BKMlQ4RG1vNXlYYXo1QmZTTkNybkRMN0wyNVRtVVcwVnFJU0xEUS9TY1BvRTVjZ0NuVUNBLytqTEJ2dDJ0WTBEb09zN0tDZ2lKbm9oVCsyVVdveXVGQ0Jnb3k2R2F1MHBrWUMrN0o4OGp3eUZtOXU2ak5uTU52WDNubGd4SXZ3d294MEZMSkpBQkE3ZFVKdENiUnVnNmVBcWhhNFN6QTZ4UFhhRDQvbWtBWXZzZncxMWJiWmhYTnFWYXowTUVnOGhvQkx4YnhLTVVHaUhXdjUwRUlOaVhCdHdXQTVBU1pWa28yd1lwLytVUENoc3RHcTFqclZxK1V1ck5HSkN5TEZUTlFqa08wdk1RNFhDZENTbFJHeHNvUEJJSG53U2c4c09QQ0FJdEJBRFl1VGw2VHIwSG1rWis5QldrbEFqRFFGa1dYcVZLNnNnYlJQWTlnTE44ZzlMWk1mVE96aGExUUVyc1hJN0kwQkRtTTA5ampod2djdjhnVHVGR25lNVNtVUFtVGZMMTF3RElQZjhDenZJeVdteEhpeGh3WEpSdGt6eDZCSUMxTHliNDQ1dnpteExURWdtc3VYbFdUcDdDbXAyai9Obm5CUHF5TFhKQ0liRHplU0xEUTJUUGpRT0ttY0ZocWxQVEdMdTY2ek1nQkhnS1oya0o1WGtZcWVUbTBtb1FQcHhRS2J6YU91YWhBd0NVUGhsai9lSWtvY3pkTjZXb0ZFalFPdG9SUXR4ODFnb1ZlSlVLZ1ZRUHNmMlBBckI2OWxNRUJnamc3elVVQ05tY3FuME5vVnNxRSt5L0IvM09UcFJsVS9ucEVucmJ6bWIzL244SG9DcFZndGxNZmVWZStSbG5jUWtaRHJYc2w2Z3hBRnlNN3E2NkQ4d3Y0SzZ0MVhkQWk4SkhKZzh0WWRiYlVTaFFjOHJ3cTN2TEFQd3p0RFlUdmIwRFpWdXRBU0R2Q0FNUWZlUkI3anJ6TVhKSGRHdHRqWTJ6OHVFWmpNNVVLd0FvTU9ySGpHU1N4S0duR3Z2V2NvR2xFMjloa1ByL1JxUnFOWXgwRDNwSHUrKytPcjh0WXVjWDZuL0pQb3hveTBHVWtTaTFxOWVvWExqb0c0QVdqNk9aSnNxeEc0cEFiOVFHNWRobzhSaGFQTmJVZFBzb0RtQkk0UG8yM295dVMrQ2xiUVF3cWdNVHdCTi9YYzhIYmxQaEtlQk5ZT0xQQVFESXNYcWJzcVpLR3dBQUFBQkpSVTVFcmtKZ2dnPT0iLCJzdXBwb3J0ZWRFeHRlbnNpb25zIjpbeyJpZCI6ImhtYWMtc2VjcmV0IiwiZmFpbF9pZl91bmtub3duIjpmYWxzZX1dLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiJhYjMyZjBjNjIyMzlhZmJiYzQ3MGQyZWY0ZTI1NGRiNiIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlfSwibWF4TXNnU2l6ZSI6MjA0OCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6OCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjo5NiwidHJhbnNwb3J0cyI6WyJ1c2IiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fV19fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiTk9UX0ZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjMtMDItMjgifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIzLTAyLTI4In0seyJhYWd1aWQiOiI3NjBlZGEzNi0wMGFhLTRkMjktODU1Yi00MDEyYTE4MmNkZWIiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6Ijc2MGVkYTM2LTAwYWEtNGQyOS04NTViLTQwMTJhMTgyY2RlYiIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJTZWN1cml0eSBLZXkgTkZDIGJ5IFl1YmljbyBQcmV2aWV3In0sImRlc2NyaXB0aW9uIjoiU2VjdXJpdHkgS2V5IE5GQyBieSBZdWJpY28gUHJldmlldyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzIsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfSx7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDM4NHIxX2VjZHNhX3NoYTM4NF9yYXciLCJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyIsImVkMjU1MTlfZWRkc2Ffc2hhNTEyX3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURLakNDQWhLZ0F3SUJBZ0lVZWYrVnZIa2NUUW5FRCsrd0pNL0l4elNVTGswd0RRWUpLb1pJaHZjTkFRRUxCUUF3SmpFa01DSUdBMVVFQXd3YldYVmlhV052SURJd01qTWdSa2xFVHlCUWNtVjJhV1YzSUVOQk1CNFhEVEl6TURreU5URXhNekkwTVZvWERUSTBNVEl6TVRFeE16STBNVm93SmpFa01DSUdBMVVFQXd3YldYVmlhV052SURJd01qTWdSa2xFVHlCUWNtVjJhV1YzSUVOQk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBb3VGTVRPS2FFMFl0ZXhPb2lzU3hwK0ViaTVJQTRlc0VTY3gxNmx6UWRxVjYvZVo4Mkt0SmVOWEV1TmtCVlpEcGMzMmdTdHV4TEJIOG1nc29IQkZhaTJEa2pmQm41cWJ3Ui9jNStzbmx3WnZqZ1ZBMGh6S3c5Q3dBZUF3UkQ1a3JXdDg4L0NWeUNrTWNnTFNHd1pzL3JqN0YvTHMzRWJnN01xTGJiUUo5Q296YmJMZEpVWUlIY1BwU1pQdG9NclpiNEd2bmk2aVZTOVV2Q0tncHFjNkxHUm1vWUdHNFpSM2xHSi9YUVpmdStHZUpXNjdpaW1Nai95b1hPd3h1Y3hpdlpIRms2Y1FTZ3d1d2lvZU5tNHd2azgzTGhTdVdjdGYya0F5UWNaN2tVbnBOZWUrZDRNZ3JtR1U0WE1GTGlUZ3V0YUIrZTlWOGQ1SlRrVU9IaUx6dGtRSURBUUFCbzFBd1RqQWRCZ05WSFE0RUZnUVVNNVNCNWJIclYranBJT01kSmw3dTdiY25UWTh3SHdZRFZSMGpCQmd3Rm9BVU01U0I1YkhyVitqcElPTWRKbDd1N2JjblRZOHdEQVlEVlIwVEJBVXdBd0VCL3pBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQUNvd1IzS1RMZmlkSnlRRk5xRUZmVXJmWjlhYTllZ3BPUXROUkpkTFN0SjZ4dTJXZkx3dkc0b2pHSmxCS05uZmE1REljeVFZZi84cUo0ZWxpQVZlTlh1WW1lTW1nTmdaWnl1WTZHMXlXQ0QyVjNzRDZaNHVqM1NiYURPSGozZ0h2c3pnUWhyaFQxaC9wdUhRa242K2hZS0FwNzdrTTdJYzZBWi9SRmJqcG1MTGsyRDBzRTFselQvMDJpK0JoN004c21haURaOSsrSkd6eGVTdW44VzFIbGVaVW0ycUtHbVJhNFhQZHJ5VDd4NktHVUduVTRhM2JwVW1WZVk5clEvc2ZNZDVaVG9vKzN1bkZXRHpvVlYydk51OCsrVkxDOXpvNDBGYUtRTHI5VkFKREo0eUxFTlI3S3JtVjhMMGNDWEtKR1pXQVd0RzVSR1RtSEloZCtuQjQxZz09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWZDQVlBQUFDR1ZzK01BQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBSFlZQUFCMkdBVjJpRTRFQUFBYk5TVVJCVkZoSHBWZDdUTlYxRkQvM2Q1OXdlUVNJZ1M5QVFBWGNGTEFRWmk5ZnBlVnoxdFkvV1RacjVXeHBjN1c1a25MYTVqSTNaODVzclMybk0yc2p0V3daUzdJVUg0SDR4Q25FUXg0REFaRjc0Vjd1czg4NXY5L2xJbkJ2VkovQjRQdjludS81bnUvNW52TTU1NmZ6QS9RdjBIYi9JclgzVkZLUG80NWNubTRpblVJV1l3TEZSbVpRVXV3akZHL04xaVJIaDFFWjBOUlZSdWRxdDFCZCsyblNLeVMvT2h5czArbGszZS8za1E5cXZENFpVdGE0VlZTVXVZMGVpcHlpVGhBZm9jb09SVmdEdXV3M3FLUmlBZDNyYmNFdGpUallJb2Y2V2FIc0NtelZQV0NNeCtjZ2g4dExxV01LYU1Xc1VqTHFvMlJ0SklRMG9Pem1lcnBRdTRlc1pnc09Oa0d4SDdkMGtkdlRUMTdzNE9NVTdWSThaaGpnR2FNK0FxOWlFTnU4UGlmMXVkejA3TXd2S1dmOEdsVm9DRVkwNFBDNVdkVGFYWUZiUjh2TnZMNSszS2dmYjV4Tk15YTlSYW1KaXluYU1sR1RWdEZscjZiYTl1K3BxbkVYNHVNdVJSZ2pTWUVock43dXRGRmU2bHFhbDdOZmt3NWltQUdIeW5QcGJrOFZtWTB4c3RucHRsRkNWQ1l0elR1Qk44M1FwTUxqVHRldmRQelNVbko3ZThta2p4WjM5ZlhiS0RmbGRacWJ2VStUVWdHbkJWRjZmUTJpUEhnNFcxNlVXVXd2emJrMTZzTVpFK1BuMHB2ejdKU2V1QXllczhsY3BDbWFLdW8vcCtxV3IyVWN3SUFIV3J2UDBZRXpoWEF0TEFic3NIaHA3aUdhbXZ5aWpQOHJ5cXJYVVdYOVhvb3d4eUF1Zk5CcnA0M1BPQkZYWmxrZjhNRFJpcWNweW93QXdwdXoyeCtmV3Z6L0R0ZGU5c21zenlndGNSNkMxd2JkekJsNk9scTVXTllZNG9HYXRoSk1ya1RFeDBqQVJTSEFWcys1cllrUU5YYitRZ2ZQTHNRNmdYeUluc3JlUWZtcG03UlZGWWZMODZuMWZpVU9rWXZTaGtVUHh2YnVrem95NksxaWhNMWhvM1h6VzZFdlNmWEErZHBpV0dhV2QrZG9Yekx6bUd3S1lGTENBc1JBbFBCQWhNbENGWFU3dEJVVlByOEhnVmNKSFdxK0YwMHBscitETVRkclA0enZ4WTExa05NaHhUK1NlVEdnK2Q0VjVMUUppdHlVR0pOQjhWRlpzamdZQlpNL0lJL1hDVGtqMHF5RE9wRjJBVlExN0NJalVwL0RuVDFVa0w1RjVnZGorc1Mxd2cxZ0UzZ2lnbTYwZkNYelNuUFhieUFQYklYditJRHBFMTZUaGFISVM5c2t5aGxtTUU1RjNjZnFBS2hxMkMwRTVQSDFnWWFYYUxQRGtaRzBIREpPbktXSHA1MUkwejVTT3V4OGUxV0F1WnpkSFFyVGtwOFRtalhvSStsYTB3R1pzenVicWJPM2lmUTZBL1c3dlZTWXNWM21SMEpLd2tLYzRXSGlCa21SOEkzQ0NnSTg3b09MNHF6VDVQK1JVSkJlakVPZ0FQSzhoWVB6YXRNK2VJVHAySU85eVRRbWVyb21QUnh4MXF4QWNzaWxlL3ViU2VFYmNXUUdZRUNnaGNMWTJIeUtqb2dqSDI1aE1wanBVdjFPdWdsaTRlaDJlUncwTzMyYkpqa3l1Q2dOemcwdnpsWU1TaVNzMHVvbzRNRzdoTU9qQ0VhWDF5RkUwblN2akJ6dVRuRXBLODZaOElvcUZBSXVidzhrZzlBckVhUkVXU1pJK2pINFhicDZnOUU5RW5KVDNvYVJ6RE4rTVVKQlFESG41NmE4b1VtRUJ1c094QnMvTjUrdEpFYlBrQUZEajhVR3ZPcy9JV3ZjU2dsR0JodlM3L0ZUWWZwV0dZZERZOGZQQXhXU0EzNXNUQzRwNCtMbTRBYXFJb1BlUXRmdWZLNkpoMFpoeGxic1VYT1NtWE5pZkQ1WlRBa3lEb2ZiYmNjbHhuQThXTkFxeENiUk55a2hYeFFwYUR3NjdmWFVZYnNpRzBLaHR2Mm9lSXZoOHJoUU1ZT2NFQXFYRy9lSSt6bmdPYzV5eHI4cTgySUFNMWMvRkxGT3BscXU1ZUZRWHJNWnpHY1ZDalliTFdHNUk0QlQxZXVScmxieHROT3RNaXREREVoTFhJSXluQUF2dU9FV0UzWDNOZEFmdDk0VmdhRzQyWElRdDBaWDZQZUNFL3FRRmU5cks2SHg3WVU1MEt2SDdmVzRmUytxN0tLQkp4c2dnQlg1cFNBR2gxaklyVmg1elE2dzNSZmFhaEJYbS9hQ2JDWlRqQ1VGVVR5V1pxVzlwNjJNakpQWFZxT3JQZ01PNE52NzRHa2Yrb3dmdE5WQkRRbmpGSnFIU3cxN3BYdmhXVzVLWnFlL1E0OU4vVVNUQ0FWV29RWEZJSEJIWFhlM0ZQclVEc3VHRG10Ri9oSEtUSHBla3hoaUFPUEkrU0pxNlM2SEY0STlZV3prQkpUbzQ2aVVNeldwOFBpci9SaWR1THhLWXNTa3NWOHZMbE9RdmhHWDJZbFIwT0JoQmpDK3UvZ0VjdlkwQXBLN1lrNDFOeGpQU1FuV0ZIVEY2NlVyamdldkI4Q3U1YStsMnZZU1JQdHVWRG83M2hoZE1TSG5VWDd0VGpzVlpHeEFsL1dwdGlPSUVRMWduTDI5bVg2L3RSMXRtbGtZajhXNFgrQ1NqV2NVREdZMU5wUy9DN2hTS3FpTUxNL2wyUW1TV1o3M0RkeitnaW84QkNFTllQUTQ2cW5rendYVWJxdkJreGpVUXNXZlpGZ2J1bzNyQWYrd043ak9POTAreW54NFBpM0wrMG5ZTDFTY2hEVWdBUDRnUFYvN0lkMXErMUhTaG11R2tJcVdSUGd5eE1GcVA4SGZqVG5qWHdZNWJRZmJKY3Q2T0l6S2dNSG90Ri9IZTFlZ3NheEhTcUc2d2ZkbVE1eDhOeVRGRnFCY3AyaVNvd0hSM3lrNSszNmhGN3ZYQUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzFfUFJFIiwiRklET18yXzEiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwibGFyZ2VCbG9iS2V5IiwiY3JlZEJsb2IiLCJtaW5QaW5MZW5ndGgiXSwiYWFndWlkIjoiNzYwZWRhMzYwMGFhNGQyOTg1NWI0MDEyYTE4MmNkZWIiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJsYXJnZUJsb2JzIjp0cnVlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6dHJ1ZSwiYWx3YXlzVXYiOmZhbHNlfSwibWF4TXNnU2l6ZSI6MTI4MCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0Ijo4LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjEyOCwidHJhbnNwb3J0cyI6WyJuZmMiLCJ1c2IiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotOH0seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTM1fV0sIm1heFNlcmlhbGl6ZWRMYXJnZUJsb2JBcnJheSI6NDA5NiwibWluUElOTGVuZ3RoIjo0LCJmaXJtd2FyZVZlcnNpb24iOjMyOTQ3MiwibWF4Q3JlZEJsb2JMZW5ndGgiOjMyLCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6MSwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjEwMH19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0wNC0wNyJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjQtMDQtMDcifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyJhOTdiMzMxOWVlY2RiNTk5M2M0MTg0Mjc2NDQxYjA1OWI0ODUwNmYxIl0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbImE5N2IzMzE5ZWVjZGI1OTkzYzQxODQyNzY0NDFiMDU5YjQ4NTA2ZjEiXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlRydXN0S2V5IEczMTAgVTJGIEF1dGhlbnRpY2F0b3IifSwiZGVzY3JpcHRpb24iOiJUcnVzdEtleSBHMzEwIFUyRiBBdXRoZW50aWNhdG9yIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJyZW1vdGVfaGFuZGxlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjI1NiwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNnakNDQWlpZ0F3SUJBZ0lCQVRBS0JnZ3Foa2pPUFFRREFqQ0JuVEVMTUFrR0ExVUVCaE1DUzFJeERqQU1CZ05WQkFnTUJWTmxiM1ZzTVJBd0RnWURWUVFIREFkSFlXNW5ibUZ0TVJjd0ZRWURWUVFLREE1bFYwSk5JRU52TGl3Z1RIUmtMakVaTUJjR0ExVUVDd3dRUTJWeWRHbG1hV05oZEdVZ1ZXNXBkREVaTUJjR0ExVUVBd3dRWlZkQ1RTQkRaWEowYVdacFkyRjBaVEVkTUJzR0NTcUdTSWIzRFFFSkFSWU9hVzVtYjBCbExYZGliUzVqYjIwd0lCY05Nak13TnpFeE1ETTBOakUwV2hnUE1qQTNNekEyTWpnd016UTJNVFJhTUlHZE1Rc3dDUVlEVlFRR0V3SkxVakVPTUF3R0ExVUVDQXdGVTJWdmRXd3hFREFPQmdOVkJBY01CMGRoYm1kdVlXMHhGekFWQmdOVkJBb01EbVZYUWswZ1EyOHVMQ0JNZEdRdU1Sa3dGd1lEVlFRTERCQkRaWEowYVdacFkyRjBaU0JWYm1sME1Sa3dGd1lEVlFRRERCQmxWMEpOSUVObGNuUnBabWxqWVhSbE1SMHdHd1lKS29aSWh2Y05BUWtCRmc1cGJtWnZRR1V0ZDJKdExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCQWgrb2VLeUxTZzc5N0k2cEpvT3V2MkswYllqS1lHUWVkSU1aQWdoaVpQNitvRHdDQTd6V2FpWnpZdDNrOGFrUTNxYTRUbmpBOGRDTzl6L0lLS0h5N2FqVlRCVE1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdIUVlEVlIwT0JCWUVGTGNuOS9HSUMvYmFLdDBHejN4STRPRVh1UlQrTUFzR0ExVWREd1FFQXdJQkJqQVJCZ2xnaGtnQmh2aENBUUVFQkFNQ0FBY3dDZ1lJS29aSXpqMEVBd0lEU0FBd1JRSWhBTlZuSmRlLy90QkxxOE1ERGkrU0FkNlVkWUlaU25nNFBNcW15TnJ2Wmo2NEFpQVgweFN6QWhGYUNDcC91aHBWZ25sRitYQmdyd0FJc290WkdUQjZya0IzMUE9PSIsIk1JSUNwVENDQWtxZ0F3SUJBZ0lCQVRBS0JnZ3Foa2pPUFFRREFqQ0JyekVMTUFrR0ExVUVCaE1DUzFJeEVUQVBCZ05WQkFnTUNGTmxiM1ZzTFZOcE1STXdFUVlEVlFRSERBcEhZVzVuYm1GdExVZDFNUmN3RlFZRFZRUUtEQTVsVjBKTklFTnZMaXdnVEhSa0xqRWlNQ0FHQTFVRUN3d1pRWFYwYUdWdWRHbGpZWFJ2Y2lCQmRIUmxjM1JoZEdsdmJqRWNNQm9HQTFVRUF3d1RaVmRDVFNCRFFTQkRaWEowYVdacFkyRjBaVEVkTUJzR0NTcUdTSWIzRFFFSkFSWU9hVzVtYjBCbExYZGliUzVqYjIwd0hoY05NVGd3TnpBeU1EVXpNVE01V2hjTk1qTXdOekF4TURVek1UTTVXakNCcnpFTE1Ba0dBMVVFQmhNQ1MxSXhFVEFQQmdOVkJBZ01DRk5sYjNWc0xWTnBNUk13RVFZRFZRUUhEQXBIWVc1bmJtRnRMVWQxTVJjd0ZRWURWUVFLREE1bFYwSk5JRU52TGl3Z1RIUmtMakVpTUNBR0ExVUVDd3daUVhWMGFHVnVkR2xqWVhSdmNpQkJkSFJsYzNSaGRHbHZiakVjTUJvR0ExVUVBd3dUWlZkQ1RTQkRRU0JEWlhKMGFXWnBZMkYwWlRFZE1Cc0dDU3FHU0liM0RRRUpBUllPYVc1bWIwQmxMWGRpYlM1amIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUUlmcUhpc2kwb08vZXlPcVNhRHJyOWl0RzJJeW1Ca0huU0RHUUlJWW1UK3ZxQThBZ084MW1vbWMyTGQ1UEdwRU42bXVFNTR3UEhRanZjL3lDaWg4dTJvMVV3VXpBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQU1CMEdBMVVkRGdRV0JCUzNKL2Z4aUF2MjJpcmRCczk4U09EaEY3a1UvakFMQmdOVkhROEVCQU1DQVFZd0VRWUpZSVpJQVliNFFnRUJCQVFEQWdBSE1Bb0dDQ3FHU000OUJBTUNBMGtBTUVZQ0lRRGM0MUxGSzRMSkNCVTJWVktJejdaNnN4UGhVRWtoOG5MU0xLNklYZGtQNXdJaEFJZUtWT1pjaGFWTzVhRjdmYmRYb1NyY3l5MVlZZVVlUExvamNLSTlmWDg0Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQStnQUFBRXhDQVlBQUFEdkRZZ3FBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRW5RQUFCSjBBZDVtSDNnQUFGaWNTVVJCVkhoZTdkMEhlQlhGMnNEeE43M1FDVFZBNkZJRkZLa0NVdXlBRXVtS1lrRlViSUNDSWlLQ1VnUUU3TDBnZGxRc0tDcFNySWdnU0MraEpuUkNKNEgwYjJmdmVELzBraENTbmMyZWsvL3Z1WG1ZZDQ2WGtKTno5c3k3TS9OT1FKWkZBQUFBQUFCQWdRclVmd0lBQUFBQWdBSkVnZzRBQUFBQWdBZVFvQU1BQUFBQTRBRWs2QUFBQUFBQWVBQUpPZ0FBQUFBQUhrQ0NEZ0FBQUFDQUI1Q2dBd0FBQUFEZ0FTVG9BQUFBQUFCNEFBazZBQUFBQUFBZVFJSU9BQUFBQUlBSGtLQURBQUFBQU9BQkpPZ0FBQUFBQUhnQUNUb0FBQUFBQUI1QWdnNEFBQUFBZ0FlUW9BTUFBQUFBNEFFazZBQUFBQUFBZUVCQWxrVzNQU3N6TlZYU0R5VEtxYTFiNWRTYWRaSzZlNCtrSHo5bTk0bjMvL21BY1FFaG9SSmN1cFFFUjBWSldKVktFdDZndm9SWHJ5WkJwVXBKUUNEMzRRQUFBQUJmNE5rRVBTc2pRMDV0M2lLSFB2cEVqdit3UU5MMzdaT3MxRFQ5S0lDekNZeU1sTkFhMWFURU5aMmxaSmZPRWxxaHZQV09EOUNQQWdBQUFQQWF6eVhvS2pFL012YzdTWHh6aHB4YXNWTDNBc2lQZ05BUUtkcXh2WlM5WTRBVWFkSlk5d0lBQUFEd0VrOGw2TWQvKzEzMmpIdEtVdGF0MXowQW5GYTg2OVZTWWRnUUNhdFNSZmNBQUFBQThBSlBKT2daSjA3SW5vbFQ1UEFISDR0a1p1cGVBS1lFaElkTGhWRWpKS3BYZHdrSUR0YTlBQUFBQUFwU2dTZm9wN1pzbFIwREIwbnExdTI2QjRBckFnS2syQldYU3BYSkV5U29hRkhkQ1FBQUFLQ2dGR2lDZnVMUDVSSS9ZSkJrSERtaWV3QzRMYnhSUTZuMjVpc1NFaFdsZXdBQUFBQVVoQUpMMEU4c1hTWTdicmxETXBPU2RBK0FnaEphcTRiVS9PaGRDUzVkV3ZjQUFBQUFjRnVCSEpDc2xyWEgzM2t2eVRuZ0VhbWJ0OHIyZ1lNa2cvY2tBQUFBVUdCY1Q5RFRqeDZUN2JmZElSbUhEdXNlQUY1dzhzKy9aT2NqajBrV2hSb0JBQUNBQXVIcUVuZDF4bm44QXcvSnNTL202SjV6RnhnWklVR2xTa2xJamVvU1ZLSzQ3Z1VLT2V0dG5MNXZ2NlR0aUplTUkwY2xLeTFOUDNEdUtrNFlLMlg2OU5JUkFBQUFBTGU0bXFBZlhiaklMZ3AzemtlcEJRWksrUGtOSktwL1B5bld1cVVFbHlrakFVRkIra0VBZjh0TVRaWFVYYnZrNkxmejVORE05eVY5ejE3OVNPNEZsaXdoNS8zd0RVWGpBQUFBQUplNWxxQm5KQ1ZMM0ZYWFNGckNUdDJUTzZFMXEwdkZVU09rZU5zMmRxSU9JSGN5VDU2VWd4OThMUHVmZVY0eWp4M1h2YmxUb2x0WGlaazZ5YnBDQk9nZUFBQUFBS2E1bHZFZW1mUDF1U1huVm1KUW9tZXMxSjR6VzRwZjBvN2tIRGhIZ1JFUlV2YlcvbExMZWcrcG85VE94YkZ2djVkVDhRazZBZ0FBQU9BR1Y3SmV0ZXgyLy9NdjZTZ1hyR1E4YXRCQWlYbHF2QVNHaCt0T0FIa1JWcVd5ZllSYTVNVXRkYy9aWloxS2tmM1B2cUFqQUFBQUFHNXdKVUUvc1hpSnBPL2FvNk96Q0FpUTBqZjNrK2loOTdPOEZuQ0l1dEZWN2RVWHoya20vY1NDUlpKKzVLaU9BQUFBQUpqbXloNTBWYm45NkdkZjZDaG5Lb0dvK2ZIN0VoZ1dxbnZ5eWZyeHN0TFRKZjNFQ2NrNGZseXlVdk5lM1Jwd2l6cXRJTGhZTVh1WnVsMFEwYUdiVmFlMjc1RE5WMTRqV1NrcHVpZG5sWjZaSXFXdjZhSWpBQUFBQUNZWlQ5QlZjcnl1ZVJ2SlBIeEU5K1FnT0ZpcXozcFBpalpwckR2eUxubmRlamsyZjZFay9icFlVclpzbFl6RWcvb1J3SGNFeDFTUmlOcTFwR2lIZGxLc1kzc0pxMWhSUDVKMysxNTZWZlpQbXFxam5CVzlyS05VZi9WRkhRRUFBQUF3eVhpQ25yeG1yV3pwMmwxSE9TdmE4UktwL3ZyTGVaNHR6RHlWSWtlKy9VNFNYM3RUVXRadDBMMkFud2dNbEtLZDJrdVpXL3RMc1JiTjgvdytTVDk2VkRaMXZGSXlEaDNXUGRrTEtsNWM2djd4c3dTR2hla2VBQUFBQUtZWTM0T2UvTmRLM1RxNzBuMTY1UzNweU1xUzQ0dC9sN2pPM1dUWGtPRWs1L0JQbVpseVl0NEMyWDdETGJKdDRDQkp5V09WOWVBU0phVEV0VjExbEROMVZGdnF6bDA2QWdBQUFHQ1M4UVQ5NVByY0pjc0JrUkZTN0pLMk9zbzlWU0YrOThUSnN1T21BWks2ZFp2dUJmeVlTdFIvV0NpYnUxNG5oK2Q4WThmbnFrU1hxM1FyWjFscGFaTEMrd29BQUFCd2hka0VQU3RMMHJadTEwSE93aHZVbDhEUWN5c01wNHErYmIvakhqbjQ2cHYyWG5lZ01NazhkbHgyRGg0bWU2WStZNy9YemtWRXpSb1NXTFNvam5LV3NpZVhKekFBQUFBQXlCZWpDYnJhM3A2Um5LeWpuS216bXMrRlNzNjMzVHBRa2hiOXBIdUFRaWdqUXhKZmVNVmVSWEl1U1hwQVJJUUVsNDNTVWM3U2Q1T2dBd0FBQUc0d080T2VtU21adVR6T0thaENlZDA2TzdYc05uN1lDRG01YklYdUFRbzN0WXJrd0ZzemRIUjI2dWkyZ05EY0ZYN0wyTGRmdHdBQUFBQ1laSHdQdWduN1gzdFRUbnozZzQ0QUtQc21UWk9rRlgvcENBQUFBSUN2TVhyTW10b1h2cWxMcktSdWpOTTkyWXNhTkZDaWh3M1ZVZlpPYm9xVExWMnVzMmZSY3kwdzBONXZHMXdtU2dLalN1bE93S09zZDJUR3psMlNjZUtFWko1STBwMjVFMXFyaHRUKzhsTUpqSWpRUFdlV2xaRWhjWjFqSldYakp0MlR2WkxkdWtxVmFaTjFCQUFBQU1BVTMwclFyWC9xdHR2dWtCTUxjN252M0Q0M3VvT1VIWEN6aE5lcks4SEZpdWtIQUkvTHpKUzB3NGZseE85L3lJSG5YN0lTYWVzOWxKdTNha0NBbEI4eFRNcmRmcXZ1T0RNU2RBQUFBTUI3ZkdxSmU5S3ExYmxPemtOaXFrajFqMlpLOVZkZmtLTE5tNUdjdzdjRUJrcElWSlNVNm55VjFKNHpXeW8rT1ZvQ3dzUDFnem13a3ZqRWwxK1RqS1J6bTNrSEFBQUFVUEI4SjBHM0VvOERyNzZoZzV5Rm45OUFhczcrU0lwZTFGVDNBTDVMRlhRcmMzMGYrNFpUVU1rU3VqZDdHWWNPeXhGMVBqb0FBQUFBbitJekNYcjZrYU9TOU10dk9zcGVjTVh5VXUzMWx5V2tkR25kQS9pSElvM09sOHJQVGJWZTVFRzZKM3RIUHZ0Q3R3QUFBQUQ0Q3A5SjBKTldycExNWThkMWxJM0FRS2s0ZHJTRWxDdXJPd0QvVXJ6TnhWTHFoajQ2eWw3eW55c2s0L2dKSFFFQUFBRHdCYjZUb1AvMnUyNWxMN3hlSFNuUjRSSWRBZjZwN0lCYkpTQTRXRWZaeU1pUXBKVXJkUUFBQUFEQUYvaE1ncDY4YnAxdVphOUVsNnZ0L2JxQVB3dXJYRWtpV2pYWFVmWk9yVjZyV3dBQUFBQjhnVThrNkZrWm1aSzJhYk9Pc2xmc3NrNjZCZmkzWW0zYjZGYjJVdmZ2MXkwQUFBQUF2c0JIRXZSME8way9tN0FLRlhRTDhHK2gxYXZwVnZZeVQzRFVHZ0FBQU9CTGZHYUplNjRFNkQ4QmY4ZHJIUUFBQVBBNy9wV2dBd0FBQUFEZ28walFBUUFBQUFEd0FCSjBBQUFBQUFBOGdBUWRBQUFBQUFBUElFRUhBQUFBQU1BRFNOQUJBQUFBQVBBQUVuUUFBQUFBQUR5QUJCMEFBQUFBQUE4Z1FRY0FBQUFBd0FOSTBBRUFBQUFBOEFBU2RBQUFBQUFBUElBRUhRQUFBQUFBRHlCQkJ3QUFBQURBQTBqUUFRQUFBQUR3QUJKMEFBQUFBQUE4Z0FRZEFBQUFBQUFQSUVFSEFBQUFBTUFEU05BQkFBQUFBUEFBRW5RQUFBQUFBRHlBQkIwQUFBQUFBQThnUVFjQUFBQUF3QU5JMEFFQUFBQUE4QUFTZEFBQUFBQUFQSUFFSFFBQUFBQUFEeUJCQndBQUFBREFBMGpRQVFBQUFBRHdBQkowQUFBQUFBQThnQVFkQUFBQUFBQVBJRUVIQUFBQUFNQURTTkFCQUFBQUFQQUFFblFBQUFBQUFEeUFCQjBBQUFBQUFBOGdRUWNBQUFBQXdBTkkwQUVBQUFBQThBQVNkQUFBQUFBQVBJQUVIUUFBQUFBQUR5QkJCd0FBQUFEQUEwalFBUUFBQUFEd0FCSjBBQUFBQUFBOGdBUWRBQUFBQUFBUENNaXk2TGJqc3RMVFpWT1hXRW5kR0tkN3NoYzFhS0JFRHh1cW8zL0tURTJWRGEzYVM4YWhRN3JuekJxc1hTNkJrWkU2TWljMVBrRk9yZCtnSS9pejBKZ1lDYTlYUjBmZWNXVCtBa2tZTUVoSFoxYWlSNnpFVEo2Z28zL0t5c2lRdU02eGtySnhrKzdKWHNsdVhhWEt0TWs2QWdBQUFHQUtDWG9lSEp6NXZ1eCtiS3lPNE0raSt2ZVQ2TWNmMVpGM2tLQURBQUFBL29jbDdnQUFBQUFBZUFBSk9nQUFBQUFBSGtDQ0RnQUFBQUNBQjVDZ0F3QUFBQURnQVNUb0FBQUFBQUI0QUFrNkFBQUFBQUFlUUlJT0FBQUFBSUFIa0tBREFBQUFBT0FCSk9nQUFBQUFBSGdBQ1RvQUFBQUFBQjVBZ2c0QUFBQUFnQWVRb0FNQUFBQUE0QUVrNkFBQUFBQUFlQUFKT2dBQUFBQUFIa0NDRGdBQUFBQ0FCd1JrV1hUYmNWbnA2YktwUzZ5a2JvelRQZG1MR2pSUW9vY04xZEUvWmFhbXlvWlc3U1hqMENIZGMyWU4xaTZYd01oSUhabHpjdlVhT2Y3anp6cnl2dVEvVjhqeFJUL3B5Rm5sQjk4ckV1Uy85M2tpR3AwdnhkcTEwWkYzSEptL1FCSUdETkxSbVpYb0VTc3hreWZvNkoreU1qSWtybk9zcEd6Y3BIdXlWN0piVjZreWJiS09BQUFBQUpoQ2dsNElKTDQ1US9ZOGNlWkVMYjhheHEyUmdPQmdIY0V0L3B5Z1o2V2xTVmFtc2N0UzRSTWdFaGdTWXYxcE5RQUEvME9OTThXRmo1MkE0Q0FKQ0FyU1VjRno5Zk9XenlJZzEwalFDd0VTZFAvanp3bjZ0cUhENU5TS2xUcENmZ1dWS0M2MVBuNWZBa05EZFE4QTRIUngzZnRJK2xuR21FNG9QL3dCS1gzVkZUb3FXQmxKU2JMbHhsc2s0L0FSM1dOV1pJdG1FalArQ1FrSVpIY3RjRFlrNklVQUNici84ZWNFUGE3ZnpYSnk4UklkSWI5Q2ExU1h1dk8rMFJFQTROL1d0V3duNlFjTzZNaWM2RW5qcFV6M1dCMFZvTXhNMlQ1MG1Cejd5cDNQaHVBSzVhWDI3SThscEZ3NTNRTWdKOXpHQWdBL0ZsYXJwbTRCQUNDUytORXMxNUx6Z0xBd3FUSjFFc2s1Y0E1STBBSEFqNFdXTDY5YkFJRENMbm5kZXRrejdpa2RtVmR1eUwxU3JFVnpIUUhJRFJKMEFQQmpZWTBhNmhZQW9ERExPSDVjNGdjL0tGa25UK29lczRwZGNabVV1KzBXSFFISUxSSjBBUEJqNFRWcjZCWUFvTkRLeXBMZGs1NlcxQzFiZFlkWklaV2lwY3I0c1JTRkEvS0FkdzBBK0t1Z0lBbXJVRUVIQUlEQzZ2QTMzOHJoRHo3V2tWbUJrUkVTODhJekVseXlwTzRCY0M1STBBSEFUd1dWS2lXQnhZcnFDQUJRR0tYRXg4dXVrYVB0V1hUamdvS2t3cWhIcE1qNWJLOEM4b29FSFFEOFZGRFJJaElZRnFZakFEQXJNek5UVHA0OEtZY09IWkt0MjdiSjBxVkxKVFUxVlQrS2dwQjVLa1YyREg1UU1vOGYxejFtcWFOWnkvVHNyaU1BZVVHQ0RnQitLcVJ5SlFrSUN0SVJBT1NOU3J6VDB0SWtPVGxaRWhNVFpmUG16Yko0OFdKNTcvMzNaZHo0OFRKNHlCQzVOalpXYXRldEsrZlZxeWQxcks5NkRScEk2N1p0NWJoTGlTSE9RTzA3ZjJxeW5GcTVXbmVZRmQ2b29WUWVPMW9rSUVEM0FNZ0xFblFBOEZPaFZXTjBDd0J5cGhMd0F3Y095TnExYTJYMjdObnk0a3N2eVdPalIwdS9tMjZTaTl1MWs2Yk5tdGxKZDZXWUdLblhzS0cwNjlCQmJyNzFWbmw4N0ZoNXdmcHZ2NWs3VitMajQyWHYzcjF5NU9oUk82bEh3VHE2NkNjNS9QNUhPaklyc0doUmlaaytSUUxEdzNVUGdMd2lRUWNBUHhWS2dUZ0FPVGgyN0poY2V2bmxVcmQrZllrc1ZreWlxMVNSSmsyYlNxKytmZVgrSVVOa3dsTlB5VWNmZnl6TGxpMlQ5UnMyeU80OWUwaThmVVRxN2oyeWMvZ0l5VXBQMXowR0JRUkk5Sk9QUzNqVnFyb0RRSDZRb0FPQW53cS9vSkZ1QWNEL1V2dkRGLy8rdTJ6WjZzN1JXM0JIcHZWN2pYL29FY2s0ZEZqM0dHUWw1MUVEYnBiU1hUdnJEZ0Q1UllJT0FINHF2RW9WM1FJQUZCYjdYMzFka24vN1hVZG1SVjdVVkNvT0hhd2pBRTRnUVFjQVB4UVFFU0VoWmNycUNBQlFHQnhmc2xUMlAvZVNqc3dLcmxoQnFqNDNWUUpEUTNVUEFDZVFvQU9BSHdvdVgwNENRb0oxQkFEd2QrbEhqa2pDc0llc2h2bDk1d0doSVZKNThnUUpLY3VOWU1CcEpPZ0E0SWRDU3BhVWdFQXU4UUJRR0toaWNQSERINUgwWFh0MGoxbGw3cnBEaXJkcXFTTUFUbUwwQmdCK0tLUkdOYzZpQllCQzRzRGI3OGlKK1F0MVpGYlI5dTJrNHIyRGRBVEFhU1RvQUR3bHBGeFpDYTFTMmJXdmtJb1YzVWxrcmU4UlVpbjZqUDhHRTE4UjlldnJid3dBOEdkSksxZkp2cW5QNk1pc0VPdnpKV2JLUkc0QUF3WUZaRmwwMjNGcXVjMm1MckdTdWpGTzkyUXZhdEJBaVI0MlZFZi9wSTZMMk5DcXZXUWNPcVI3enF6QjJ1VVNHQm1wSS93dDhjMFpzdWVKQ1RweVZzTzROUklRekQ1WHR4Mlp2MEFTQnVSODk3cEVqMWlKbVh6bTMzdFdSb2JFZFk2VmxJMmJkRS8yU25icktsV21UZGFSL3prVkh5OXhsM1UyZmxac1lKRWlVbWZCZHhKU0prcjNBRURCU2t4TWxLbzFhdGpIclpteWQ5Y3VpWXJ5OW5WdlhjdDJrbjdnZ0k3TWlaNDBYc3AwajlXUk05S1BIWk80YmowbGJVZTg3akVuTUNKQ3FuL3dqaFE1djZIdUFXQUNNK2dBQUFDQUQ5cjF4SGhYa25NSkRKVHlqejVFY2c2NGdBUWRBQUFBOERFSFA1MHRSei83UWtkbWxlamFXY3IwNnFrakFDYVJvQU1BQUFBKzVHVGNadGt6WnB5T3pBcXJjNTVVR1RlR2swRUFsL0JPZzA5UjlRaTI5cnRaMWwzUXd2aFgzTFU5Sk9ORWt2N09BQUFBQlMvanhBbUp2LzhCeVV3eVAwWUpMRlpNWXA2Zlp1OC9CK0FPRW5UNGpxd3MyVGY5ZVVuNjlYZkpPSExVNkZkbThrbXBPSHFrQkJVdG9yODVBS0N3eU16TWxQVDA5RE4rWldSa1dCOUh4dXJyQWpuS3NsNmJ1eWRNeWxXUjEzd0xDcFRvTWFNa29rWU4zVkY0cWZkOFR0Y0Y5UmpnRktxNEZ3TCtVc1g5Mk0rL3lJNWI3eFRyU3FoN3pDbDcvOTFTWWZDOU92SWVxcmc3aHlydXZpOGxKVVhXcmwwcmY2MWNLZnYzNzVjRGlZbjZFWkd3MEZBcFdiS2tsQzFiVm1yWHJpMzE2dGIxZkVWcHVDY3BLVW0yYnQwcXExYXZsajE3OXNpMjdkdGw0OGFOY3VyVUtUbDU4dVFaQjkwUkVSRVNFaElpcFVxVmtnYjE2MHVsU3BXa2F0V3FkcnR5NWNvUzdFTW5tMURGL1Q5OHFZcjdrZSsrbC9oN2hxaTdTTHJIbk5MOSswbmxVWThVdWlQVjB0TFNKTjRhR3l4ZnNVSVNFaElrTGk1T05sbGY2cnFRbkp5cy82di9wOTd6WVdGaFVyeDRjV25Zb0lGOUhhaFdyWm8wYnRUSXZqNzQwalVCM2tDQ1hnajRRNEtldW51UGJMWmVTeG1IaitnZWN5SmJ0NVFhTTkvMDlGNHJFblRua0tEN3BxTkhqOHJjYjcrVkR6NzhVSDc4NlNjNzBjcXRPdWVkSjQ4LzlwajA2TkZEOTZBd1VNbjJ0bTNiWlBIdnY4dWlIMytVdi83NlMxYXVXcVVmZFVaNGVMZzBiOVpNTHJqZ0FtblZzcVcwYk5IQ0hxQjdGUW42Zi9oS2dwNlNzRlBpcnVrdW1jZU82UjV6SWk1c0lqVm52aTJCNFdHNngzK3AxNys2d2Z2TEw3L0kvQVVMNVBjbFMrU1lRODl4cEpXWHRHM1RSdHBmY29tMHNLNEh6UzY2eUw1T0FEa2hRUzhFZkQxQnoweEprYTNYOTVlVHkvL1NQZVlFbFMwanRiK2VMU0ZseStvZWJ5SkJkdzRKZXU3OGJpVTE2OWF2MTVFekxySUdLbzNPUDE5SHVYUEFHa1MvL09xck11WHBwODg0azVGYnN6NzZTTHBkZTYyT3p0MnNUejZSNDhlUDY4aDVWMTV4aFVSSFIrdklHWjk5OXBrY09YcFVSODY3eEJxQTF2VFlVbGkxSEgzVHBrM3kyZXpaOHNtbm44cjZEUnZzUHJjRUJRWFpONFI2OWV3cFYxMTVwVFJvME1DZWFUTnAxYXBWc3V6UFAzV1VzeE1uVHNoREkwYllTM1JOZVhyeVpDbGF0S2lPOHE1OCtmTFMrZXFyZGVRc1gwalFzOUxTWkhPL20rWGtzdVc2eDV6Z2NtV2wxdXhaRWxxaHZPN3hQK28xcjI3UWZXaDlGcno3M250eThPQkI0MXRYQWdJQ3BGaXhZdEtqZTNmcGQvMzEwcng1YytQWGd6TlJOeXMvLytJTE9YTEU3S1JYNmRLbDgvVTVtMWZxNTN0bjVzd3pyb0J5aXJySjBydFhML3NhYndJSmVpSGcwd202OWZMYzg4enprdmpzQzFaYjl4a1NZRjBrcTc3OW1oUnIyVnozZUJjSnVuTkkwSFBuL2lGRDVNV1hYdEtSTSs2NzV4NTVlc29VSGVWTURhWm16Wm9sUXg5OFVCS3RnVlIrcU9XR2YvN3hoOVN2WDEvM25CdjFzZG1vU1JQWnNIR2o3bkhldDk5OEk1MDZkdFNSTTVvMmEyWXY1VGJsbmJmZmxyNTkrdWlvWUtrVkZkOS8vNzFNc2w1ZmFoQ3VscXdXTkRXUVUwdGZCOXg2cS8wOHhjVEUyQU4ycDAyZE5zMU91djJOU21vK3NCSXBFenlmb0Z2WG5GMFRKc3ZCTjk3U0hlYW9NVjNWMTErUzRtM2I2Qjcvb203c2ZqOXZuancxYVpLcytPc3ZWMi9ZblU2OTk2dFhxeWFENzcvZlR2UlVNdXVtMndjT2xMZmZlVWRIWnFpYkVic1RFbHhmTWFDMkxkVS8vM3lqdjlzTzdkdkxkM1BuR3JtR0t4U0pnNmNkKzIyeEhIemhGZVBKdWZVT2t6S0RCdnBFY2c3NGk0U2RPM1VyWjRjUEg1YnJiN2hCYnI3dHRud241NHFhelZPSkV2eVBXcXI2M3Z2djJ6Y2pldlh0YTg4a2V5RTVWOVJnY2NlT0hUSnE5R2o3QnMrMXNiR3lkTm15QWtzUWZFM3JWcTEwcS9CUk5YZ096akNiVFAydHpGMjMrMlZ5cm03eWZ2bmxsOUtrYVZQcDJidTNmVzBveVBlZXV0RzdkZHMydVcvd1lLblhzS0U4UFhWcXZsYUZuYXRldlhycGxqbHFsWm1xRCtPMkpVdVdHUC9kOXJGZVE2YVNjNFVFSFo2VmRpQlJkajN3c1BHWlRTV3lXVk1wZjlkQUhRRnd3eHJyZy90c2k3alVudUcyN2R2TDdDKytjR3k1V3BreVpldzcrL0FmNm5YMDg4OC9TNXQyN2VUbVcyK1ZMVnUzNmtlOEtmbmtTYnVHZ3ZyM1huSFZWZllXRXVTc1JpR3RKSjY2Yjc4a0RIL0V5akROSjVORjJsNHNGZTY5VzBmK1EyM1B1cnBMRitsdUphWHFNOFZyRGgwNkpBOC84b2g5WS9HTEw3ODg2K2VpRXk2eHJqMnEwS1ZwYzcvN1RyZmNNMy9oUXQweVE2MEl1QzQyZjhVZXo0WUVIWjZrOWxvbFBQaVFwRnNmVEthcHZWWXh6MCtYZ0pBUTNRUEFEY2VPSHJVclpXZEhWYzd0ZU9tbGRsVnRKMTE0d1FWRzczekRYV29mOWRBSEhwRExycnpTWHJMcVM5Uk5KMVhrVU4yRTZ0NnpwMnpjNU1MUldUNUk3ZE5WVmZJTEc3WEZNK0hoUnlUandQK2ZUR0ZLY01VS0VqTjVvZ1FZMmxOYkVOU0ttc2xQUHkwdFdyV1NoWXNXNlY3djJyeGxpejI3MysrbW0reDZLeWFGaG9aS2Q4Tkpwcko0OFdMZGNvZTZwcW9pb0NhcG14dnFkQmlUU05EaFBWbFpzdStsVnlYcHAxOTFoemtxS2E4MGFaeUVsQzJqZXdDNDVkang0L2J5OVRQWnZYdTNYRzRsWER0MzdkSTl6aW1NQTMxL3BXYkQybmZzS00rLytLTFBMeFgvOHF1djVLTG16V1hzRTAvWU54M3cvMEtDZzZWQ2hRbzZLanoydi9HMk8yT2hpQWlwK3Z4MHZ4b0xxV01UdTE1empUd3ljcVI5UEpxdlVMUG5IOCthWmMrbS83RjBxZTQxNDdycnJqTitzMW90Y1RkNVNzUy9xYU15MVZZaWsyN3MxMCszekNGQmgrY2MvMzJKSkQ3L3NvN01paHB3aXhTL3BKMk9BTGhKelo2cnMyYi9UUlg0NnRXbmo1SGtYRkhWeHVIN2xscURWN1ZFM09tajBncVNTaVNlR0RkT1dsNThzYXhZc1VMM29tN2R1b1h1YUtyamZ5eVZBOU9mMDVGQmdZRlNZZmhRS2RLa3NlN3dmU3RYcnJTdkRRdDhZTlk4TzN2MjdyVnZVczk4OTExalM5NVZYUWQxREp4SnUzYnZOcDR3bjI3ZXZIbTZaVVpFUklSOXlvcHBKT2p3bExUOSt5WGgvZ2Z0SmU2bVJUUy9TQ29NdlU5SEFBcUN1dHQ5T3JVOGJjZ0REOGlTUC83UVBjNEtDdzB0dEh0Wi9ZazZyL2lLcTYrVy9TNVUzaTRJYWx0SDMzNzlYSjE1OHJLYU5XdnFWdUdRZnV5NDdCeitpQ3MxZUlwZmVabVU2WGU5am55ZldsTGR2bE1uaVU5STBEMitTOTJzSG5qbm5USnQrblFqU1hxUklrV2syelhYNk1pY2IxM2FoNjZlbzNrLy9LQWpNOVRwS2lWS2xOQ1JPU1RvOEF6MVFhUUtvYml4MXlvb3FyVEVUSjFrL0F4M0FEbjc3Vi83MDlUeE4yckd3SlN5WmN0S0tjTjd4MkRXK3ZYcjdSVVdKcytoOTRMSlR6MWw3eE9GU0xPTEx0SXQvNmVPUVUwWU9VclNFbkozeWtWK2hOYXVLVlVtanBPQVFQOUlCMzc4OFVlNXFrc1h2OW9pb3FyUGp4ZzVVcDU1OWxuZDR5eFZqZHkweFM0VndUeVZraUovR0xxNS83Y0J0OTJtVzJhUm9NTXo5ci8rcGlUOStJdU96TEgzblU4ZUw2R1ZvblVQZ0lKeStoTDNvMGVQMmtmT3FBR0pLZVhMbDdjTFRzRTNxV3JIc1QxNnlJRkU4emR5QzlLZEF3ZEtWeXZSd0g4MGJkcFV0L3hmNHJ2dnkvRnZ6TTg0QmhhSmxKanBVeVNvU0JIZDQ5dlVxcXR1M2J2YnM4NytScTBzRy9iUVEvTGVlKy9wSHVlMGJObFNpaGN2cmlNejFMRm5LVmJ5Yk5ybXVEalp1MitmanB5bnpxcHYxN2F0anN3aVFZY25uUGhqcWV5ZlBGMUhacFVlY0xPVTZOQmVSd0FLa3BvTi9kc2JiNzVwL0FpY3BoZGVTQVYzSDZXV0w2cUNUMXUyYk5FOS9ra1ZNWnd3ZnJ5T29QYWVWNnRhVlVmK0xYbk5XdGs3ZWFxT0RBb01rSXBqUmtsazNicTZ3N2R0Mzc1ZHV2Zm80ZmZGRmUrOCsyN0h0MytwYXVSWFgzV1Zqc3pZdDMrLzdMZStUUHRtN2x6ZE1rTXRiM2ZyaUZZU2RCUzQ5RU9ISkdISWNIV0xVUGVZRTltaW1WUWN3cjV6d0N2VUhtSzFWRGt4TVZIR2pCMnJlODFSeGFiZ214WXRXaVJ2elppaEkvK2s5b1MrL2VhYlVyUm9VZDJEa2lWS1NGUlVsSTc4Vi9xeFk3Smo4SU9TZGRKd3hmR0FBQ25kNzNxSjZuYXQ3dkJ0YXNhOGQ5KytkaExvNzFRUnlSdjY5Yk5YRWpuSmRGVnlOWHYrNysxc1RsT3JERXp1ZFZjMzl1KzQvWFlkbVVlQ2pnSmxuM2MrYklTazc5NmplOHdKS2xWS3FreWZ6SG5uZ0llbzVlejc5dTJUOTk1L1g1SnpPQlBkS2VyOFV2Z2U5VG9aTlhxMFBRanpWMm9BT09LaGg2UkpreWE2QjByNUNoWHN5c2wrTFN0TGRqMDVRZEsyL2JOb3Bnbmg5ZXRKOUVNUDJvbTZQeGo3NUpPeTNNVVRENEtDZ3V4aW8ycGxoL3BTVzZaQ3JIR2xXeXV6ZHNUSHk1MkRCamw2TFd6ZXJKbVVLV1AyaUwxdnYvMVd0OHc0ZXV5WXJEdHRSWjdUb2l0V2xHYlc4K1FXRW5RVXFQMXZ6WkFUQzM3VWtVSFdoVE42L0JnSkxZVG5xQUplcHFwVXI5K3dRVjU2MmZ6Umltb2dWYTFhTlIzQmw2aXE3YVlxKzN1Rk92Sm82SkFoT3NMZkdqZHFwRnYrNjlDWGMrVG9aMS9veUp5Z01sRlM5YVhuSk5CUGpxejcrZWVmWmVxMGFUb3lSeFZydk9MeXkrV0Y1NTZUWDMvNlNiWnQyU0o3ZCsyeXYvYnMzQ2tiMXE2VmIrYk1zVyt3MWE5WFQvKy96UG5LK2w1T3poYXJxdVFkREI4LytyTjFEYy9JeU5DUjg5VEpGMDZ2TERoZCsvYnRqUjlKZHpvU2RCU1lFMzhza3dOVG50R1JRVlp5WHZxMi9sTHl5c3QxQndBdmVmT3R0MlRMMXEwNk1xZHExYXF1ZnNEQ0dXcnYrYlBQUDY4ajg2cFVxU0kzMzNTVFBEMTVzc3l6QnNFYjE2MlRyWEZ4c20vM2J0bTBmcjJzVzcxYTVuLy92VHozekRNeWNzUUl1YVpyVjZsWHQ2NEU1K05Va0tqU3BlV2RHVFBzbVRqOFUrM2F0WFhMUDUzYXZrTjJqeDVyejZLYkZCQVNMSlVuUENGaGZsSWdWKzAzSHpCd29JN01VTFBpdlhyMnROL3pjNzc4VWdiZWZydGRzRkNkQnFLMm82Z3Z0U2M1SmlaR0x1M1VTY2FPR1NQTGx5MlQyWjkrS3VjM2JLai9GdWVwRlVYM0R4N3MySjU3OVhQZWNMM1pvL1pVWWMrOWUvZnF5SG5mV2Rka2s5eGMzcTZRb0tOQXBDVWVsSVQ3SDNEbnZQTUxtMGpGQjVtVkFMeHF6dGRmNjVaWmxhS2o4NVZFb1dBY1BIaFFmdnI1WngyWlU3MTZkWGx2NWt3N0lYL3QxVmZsdm52dmxmYVhYR0tmbTYrU2RsWEJWLzAzS21GczE2NmQzSG5ISGZMNDZOSHk2YXhac3VMUFAyVlhmTHg4L09HSDlrQzNTdVhLK20vTm5TbVRKa21NOVQzd3YveDVXMHBHY3JMRVcyT2h6T1BtaTV0RjNYYUxsT2pZUVVlK2I5S1VLYkxWWUZIUjRsYmlQWFBHREhuM25YZnNtN3U1cFpiQWQrbmNXUmIvK3F1ZDBKdXlmY2NPZWY2RkYzU1VmNWRZMXpwVk1NNlVaT3UxL3FkMW5UUkIzY1Q5NGd0eksxRFU3LzhpbDQ5NkpFR0g2N0l5TTJYWDZMR1N2dGZjVVFoL1U4dTVZcDZkS29FY3F3UVVlbTUvd01JWnExZXZ0by9nTStuaTFxM2xqOFdMN2RteXZNeGlxMEc1U3VCanUzV3ppN3l0VzdOR2ZscTRVSHIyNkhIV0k0eHU2TnRYYnJqaEJoM2xuN3B4c05NYXZPZm1hOVdLRmNiUFdsLzExMTluL042NS9WTDdZLzJSR2d2dGZtcUtuRnF6VnZlWVU2Uk5hNms0OUg0ZCtUNjFEOXZKNVBUZjFFcXJEOTkvWDNyMzZtWFBMdWVGMmxMMTdQVHBjdis5OStiNTd6aWJxZGJmNzlTMVVhMEd1TFJqUngyWk1YL0JBdDF5bHFvUWIvSjBqOHN2dmRUMTFVMGs2SEJkNHRzelhUbmpVNEtESkhyQ0V4SWFYVkYzQUNqTWF0ZXFwVnZ3SmFabnoxVmkvY0Y3N3prNmU2U0tSN1ZxMVVyZWYvZGRlM25zeFBIajdSVWMveDZvcTVuMnA1OSsydEVCdkVvdTFIbi91ZmxTUzNWTksyZDlqek45Nzl4K3Fac2YvdWpvRHd2azhBY2Y2OGljNEhMbEpHYnlSQW53bytkeGl2V2VVYWQvbURKNjFDaTU3TExMZEpSMzZyVTdmdHc0WTZ0QURoOCtMSysrOXBxTzhrZGRnOVFOU3BOKytmVlgzWExXWHl0WEdpMHlhN3JLL1ptUW9NTlZTU3RYeWI0cDVndDZLS1g2OXBhU25meG5PUmVBL0ZHenBQQTlKaXZ6S3BkYkEvR0tGYzNkeUZWSjVnTkRoOXF6Nm1yZnV0cXZxcWhLMEcrKy9ycTkveHlGUzhxdVhiSnp4Q2dSZzBXemxJQ3dNSWw1ZnFxRWxETi9JOFl0TzNmdWxMY05IcmZZb25semUzdUxVOVFLbFJlZmYxNGlEWjFFOEpwMURWRjcwcDJnYmtvVU1WaW5aYzNhdGZaTkJhY3RNRFF6cjZpdFI4MnQxNFRiU05EaG12UkRoeVhoM3FIbXovaTBoRGVvSjlHUFBxeHVDZW9lQUlXWldtNFljdzc3Q09FZGE5ZXQweTB6cXJ0VTJWL05iTjh4Y0tDOXJIelV5SkV5ZVBCZ2U5OG5DcGRNZmJ4czVwRWp1c2Vjd0tKRkpNelBUcTZZK2U2Nzlubmdwb3daUGRyeFdpV3Fic1d0dDl5aUkyZHQyNzVkRmk1Y3FLUDhLVnEwcUhUcDBrVkh6bE5IdzZscTdrNVMrODlORm9qcjJyVnJnYXppSVVHSEs3TFMweVhob1Vja0xXR243akZIZlNCVmVYNmFCQnJlVndlZ1lLZ2pZYTYrOGtvWi8rU1Q5cEUzQ2RZQTVlamh3M0xNK2pwNjZKQnMzN0pGZnJNR0FXci8zMTEzM0dHZks5M200b3Z0R1V2NG5zVEVSTjB5STgyRllxV25VM3M5SHhzMVNwNFlNOGJZM2xSNDEvNlhYNVBrSlV0MVpGYkd3VU95OC9FbjdmM3UvdURreVpQeW5NRzk1NjFhdHBTT2h2WmgzM1AzM2NiMk1iL2w0SW9DVlRmRHBDVkxsdWlXTS9iczJTTWJOMjNTa2JPQ0FnUGwrcjU5ZGVRdUVuUzRJdkhEaitYRS9FVTZNaWNnT0VncVRaNGc0WngxRFBpZHFLZ29lZnl4eCt3cTIxOTgvcmtNZS9CQmUrbFpoUW9WN09XREVkYVhtcVdzVkttU05Mdm9Jcm5yemp2bDJXZWVzWXQvZlRGN05za1F6aWh1ODJaN0ZzWnR2QjRMcCtBeVVicmxqdU56djVORG4zK3BJOS8ydy96NWN1REFBUjA1NzVhYmJ6YjJ2cXhtalVzYm5YKytqcHlsNm5Ra0pTWHBLSC9hdFcxcmY1YWFvdjZ0VGw1dmY3Y1NmcWVXK1A5YjVjcVZwZW1GRitySVhTVG9NQzU1elZyWk4yNlNXb2VpZTh3cHFmYWRYNUgvd2g0QXZFTU5sOVN4TlN1V0xaT1JqenhpSityblFnMjQxQkozK0NiVGlleUNoUXRsbThIam1vRFRSZlhzTHBITm11cklCZGJZYTgrVEV5VE5ZR0xybGxtelp1bVc4OVFLcTY0R2wzZXJaZExYeGNicXlGbjc5dTJUcFV1ZFdaVlJxbFFwdTJxNUtXb2ZlbXBxcW83eWI5RWljNU4vM2J0M0w3QWlsU1RvTUNyanhBbEpHRHBjc2d6dUYvcGJXUDI2RXYzSWNEV2EwejBBZkozNmNMei8vdnRsMWtjZkdTM2tCZTh5ZmN5V3FnWjlkZGV1a3BDUW9Ic0Fjd0tDZzZYU0U0OUxnSXZITm1VZVBTWTdSNDF4WmFMRWxKU1VGSm56elRjNmNsNHo2enBUcGt3WkhabHhtY0hFOStOUFB0R3QvT3ZWcTVkdU9lK0VsUmNzWDc1Y1IvbW5ickNhb0c3WTlML3BKaDI1andRZHhtUmxaTWpPa2FNbE5jN2MyWVIvQ3l4V1ZHSmVtQzZCNGVHNkI0QS9HSFRublRKcDRrVEhpL2JBZDFSem9iaWZPa08zV2N1VzhzR0hIem82dXdPY1NVVHRXbEwydnJ0MTVJN2o4K2JMUVI5ZTZ2N3JiNzhaUFZxdGsrRXp3Slc2ZGV2cWx2TlU4VFZWaE0wSjZsZzRWU3ZERkxWVndRbTdkdTgydHYrOFpxMWFjbDd0MmpweUh3azZ6TWpLa3NUM1A1UmpYNW03Mi9sZmdRRlNjZXhqN0RzSC9Fem5xNjZTeVpNbUdWL2lERzlyMUtpUmJwbDE4T0JCNlgvTExkSzBlWE9aOWNrbmN2VG9VZjBJNEx4eXQvYVhzTHAxZE9TT3ZlTW1TdXFldlRyeUxWOS8vYlZ1T1U5OXhuUm8zMTVINW9TSGg4djVEUnZxeUZtN3JXVDEwS0ZET3NvZmRUUmtHNFBIa3FyejBKM1loejUzN2x6ZGNsNzMyTmdDblJnZ1FZY1J5ZXMzeUw2SlU5elpkOTZ6dTVTK3RxdU9BUGlEMHFWTHl5c3Z2MXhnKzcvZ0hlcGNZcmR1MHFoQjQ0WU5HK1Q2ZnYya2JvTUdjdS85OTh1eVpjdnM1YldBazlTS3Y4cVR4a3VBaTZkTFpCdytJZ21QakxKWE9Qb1NWUVRzeDU5KzBwSHoxUEZpNmlnMDA5UjFyR0tGQ2pweTFyRmp4K3lDbDA3cDM3Ky9iamx2MDZaTmpxeFVNcmE4UFN4TWJyNzVaaDBWREJKME9DN2orSEZKdUdld1pDV2YxRDNtaE5hcUlaVkdqMlRmT2VCSDFDRG15YkZqN2J2NFFJMGExblUrT2xwSDdsSEh1NzM4eWl2U3FrMGJhZFNraVR3d2JKaGRpTW50WTluZ3Y0clVyeWVsKy9mVGtUdVNmdmxORHMzK1FrZStRUzF0WDc5K3ZZNmNwMDcvS0ZteXBJN01LbUh3KzZ4WnMwYTM4cS85SlpkSThlTEZkZVNzbmJ0MnlmYnQyM1dVTitxbTZkSmx5M1RrckFiMTZ4ZklaODdwU05EaHJLd3MyZlg0azVLNmJZZnVNRWZ0TzYvNjh2TVNhUEE0Q0FEdVUvdjBidXpuN3FBVjNxVUd6N0hkdXVtb1lHemR0azJlZmU0NWFkMjJyZFNvVlV2NjNYU1RmRHhybGwwOUdjZ3pOYU02K0Y0SnFScWpPMXlRbVdsWGRVL1pibjZjNWhTVnpLVWF2REdtOWhxSHVyU1NvVnpac3JybHZOOFdMOWF0L0ZPbnBiUnMwVUpIenB2NzdiZTZsVGZ4Q1FuNVR2S3owKzNhYXd0ODlSNEpPaHgxY05hbmNuUzJDMFZJckRkT3hkRWpKYnhtRGQwQndCK28yZk9IaHcrMzkrb0JmN3ZuN3JzOWMxVGVYaXNwLytqamorV0dHMitVS3RXcVNZdFdyV1RNMkxHeTZNY2ZqUmF4Z24reWw3cFBlTUxWbFlDWngwOUl3cU9qZldhcHV5cUFabExWR1BkdWtKUXJWMDYzbkxkbnp4N2R5ci9Bd0VDNXllQ044dnh1V2ZqaGh4OTB5MW1oSVNGR2wvZm5GZ2s2SEhOeTR5YlpNL3BKVi9hZGw0aTlSa3BmVjdBektnQ2NWN2xTSmZ2dU5YQzY2dFdyUzQvdTNYWGtIV3JQK3ZJVksrVEo4ZVBsOGl1dmxFcldRTDlYbno3eXNaWEFxOEd5RTRXUTRQK0t0V2d1cGE3dnJTTjNKQzllSWdkbXZxY2piMU9uTEpoVXFuUnAzZkp0Y1hGeHV1V01LNjY0d3RqS2dwVXJWK2E1dG9lNnJuNWo2TWk5cGsyYkdxc1RjQzVJME9HSWpLUWtpYi83Zm5mT082OTdubFIrWWpUN3pnRS8xS2QzYjN0Sk0zQTZ0Ykppek9qUlVxeFlNZDNqUFdyUWVQTGtTWm45K2VkeXcwMDNTZjJHRGVXS3E2NlN6ejc3akpsMW5GV0Z3ZmRLa09GenVQOXQvOVJuNUpRUExIVlhOOEZNZW52R0RLbGVxNVlyWDA5UG02YS9xL01PSGpva3B4d2NoNWNvVVVMYXRtbWpJMmVwbFVqcW1MUzhVTmZUUHcyOUpxNjk1aHI3ODZhZ2thQWozN0l5TS8rejczekxOdDFqVGtCRWhGUjU1bW5PT3dmOGtGcGFOdUMyMjNRRS9GUFZxbFhsaVRGalBERjR5bzBUU1VteWNORWk2WDM5OVZLdlFRTzd5TnlPSFR1WVZjY1poWlF1TFpXZWZGeXRMZFk5NW1VbUpjdk9oMGRLVm5xNjd2RWVWWlRSeWFYYlo2SVN2cDA3ZDdyeXBhcXRtNkxPUVZjM0NaMmlyclU5ZS9UUWtiUFU3MVVWM2N5THpaczN5NEVEQjNUa0hQWHozbUJkcjcyQUJCMzVkdmlMcitUb3A1L3J5Q0RyalZQeHNSRVNjWjc1b3pBQXVLOSsvZnAyRWdaazU0NkJBK1hxcTY3U2tlL1l0MysvWFdTdVZwMDYwdmVHRzJURlgzL3BSNEQvVjZKamV5bldxWU9PM0pHODlFODU4UDZIT3ZJZXRRejZGTWNjNWs1V2x1T25USmljVWY1cXpoemRPamZ6RE8wL3Y3aDFhNm5nZ2VYdENnazY4a1h0Tzk4OVlwUjlVVEN0ZUxldUV0VzdwNDRBK0p0T25UcHg3amx5RkJ3Y0xEUGVla3N1YU5KRTkvaWVUei83ekM0c3B4SjFkUjR3OExjQTYvcFhlZXhvQ1NybHpwRmZmOXMvYWFxYzNPVHMvbVducVBPeTg3cFh1YkRKeU14MGZJYStUSmt5Y3ZsbGwrbklXVXYrK0VNeThsQ284THZ2djljdFovWHQwMGUzQ2g0Sk92SWwvdDRoa3BXU3FpTnpRdXZVdGo2MEhyTm4wUUg0cCtzOTlPRUk3MUw3SXIvKzZpdHAwcml4N3ZFOWFwbjdKNTkrS2syYk43Y3J3Q2NuSit0SFVOaUZsQ3NyRlI1OVdFZnV5RHg1VWhJZWZGZ3lyV1RZYTFUQ2VmVG9VUjJoSVBUcDFVdTNuTFZ2NzE1NzJmKzVPSGp3b1B5NWZMbU9uQk1SRWVHcEFyVWs2TWlYTkpmT080OTVkcW9FRlMycWV3RDRtMHJSMFZLdlhqMGRBVGtyVzdhc3pQdnVPN244MGt0MWoyOVNCWjFVQmZpTDI3YTE5MVVDU3RRMTEwalJEdTEwNUk1VGE5ZkovbGRmMTVGM3FKdFoxRzBvV0IwN2RwU1FrQkFkT2Vla2RmMDcxKzArYTlhdWRYU2YvZC9hWEh5eDBTUHd6aFVKT2p5di9NTVBzdThjOEhOTm1qUXhNZ0NBL3lwWnNxUjg5dW1uTXVUKysrMHplMzJaR25TMnZlUVNtZnZ0dDdvSGhWcGdnRVNQR2lrQkxwLzlmK0RGVnlYWlN0UzlKTjFIem1yM1o5SFIwWEp4cTFZNmN0YlhYMyt0VzdtemFORWlJemRzYmpSNDVudGVrS0REODlKVTlVN3VuZ0orclJyRjRaQUhZVllDTSttcHAyVFdSeDlKbGNxVmRhOXZTang0VUhyMDZpWHZ2ZisrN2tGaEZsNDFSc29QRytMcTFyNnNsQlRaT2ZJeHlYSzQwRmgrc1AzREcvcjI3YXRiempyWDVlcno1OC9YTGVlb2JWT205dG5uRlFrNlBPL2dxMi9Lc1o5LzBSRUFBUDkwVGRldXN1cXZ2K3paZERYWThsV3FJTmFBZ1FObDFpZWY2QjRVWm1WdTZDdmhEZHpkK25OcTlWclorOEpMT2lwNHhkamVtR3RxSlZGa1pLU09uTldoZlh2N2hxalQxT3FoL2Z2MzZ5aG5pWW1Kc3ZUUFAzWGtISFhXZTFSVWxJNjhnUVFkK1JMWm9wbHVtWk9WbWlZN0h4d2hxYnZObm9NSkFQQmRSYTJCdkpwTi84c2F3UFh1MWN2WVFOVzA5UFIwdWYyT08yVDVpaFc2QjRWVllHaW9WSmswUVFMQzNWM3Fudmo2MjVLMGFyV09DcGFwSTc3OGtYcW0xRWtYSnFnalVCczJhS0FqNTZqbDZyOHRYcXlqbkMzKy9YZjcrdWkwL2pmZHBGdmVRWUtPZktreTlTa0pLbVArcmxQR2dVU0pIL3lBSnl1TUFnQzhvM0xseWpKenhneFp1WHk1M0h2UFBSSlZ1clIreEhja0pTVkovNXR2Wm5rdjdCbzhaVzYvVFVmdXlGSlYzWWMvWWxkM0wyaXFOZ24xU1hJbndPQU11cHFkdjdsL2Z4MDU2N2ZmZnRPdG5QMzAwMCs2NVp6eTVjckpwWjA2NmNnN1NOQ1JMeUhXQzd2S00xTWtJTVRNSGJ2VG5WeTZYUFk5KzRLT0FBQTRNelhyVnExYU5aazZaWXBzMnJCQjNucmpEV25Wc3FWUHpjWnQyTGhSSmt5Y3FDTVVXdFpydHZ5ZHQwdG9yWnE2d3gycGNadGw3NHN2NjZqZ3FJU3pTSkVpT2tKT1ZCSWRHaHFxSStkMXZ2cHFDVFB3OTZ1Wjhkd1VmdnMxbDRuOHVWRFYyOVhxSzY4aFFVZStGV3ZkU3FLc0R3ODNKTDc4dWh6NzFmazNLQURBUHhVdlhsejYzWENEL0xSb2tXeGN0MDRtakJ0bkQ4cE1ERFNkOXRJcnI4aStmZnQwaE1JcU1EeGNLazk0VWlRb1NQZTRRNDI1VGhnNGMvcGNxSDNQNFM1WHMvZFY1Y3FXTlpxZ3EycnVqUnMzMXBGelZxMWFaUjg1bVJONy8vbXlaVHB5VHUvZXZYWExXd0t5REI0dW1KV2VMcHU2eEVycXhqamRrNzJvUVFNbGV0aFFIZjJUV3RhOG9WVjd5VGgwU1BlY1dZTzF5eVhRUi9lY21aVDQ1Z3paODhRRUhUbXJZZHdhQ1FnT3RuL1gyMjY5UTVKKy9sVS9ZazV3dWJKUzY2dlBKTVQ2czdBNk1uK0JKQXdZcEtNeks5RWpWbUltbi9uM25wV1JJWEdkWXlWbDR5YmRrNzJTM2JwS2xXbVRkZVIvVHNYSFM5eGxuZTNYc0VtQlJZcEluUVhmU1lnTFcwSk11SC9JRUhueEpYT0ZnKzYrNnk2WlBtMmFqcnhOZld3MmF0TEVudUUwNWR0dnZwRk9IVHZxeUJsTm16V1RWYXZON1N0OTUrMjNwVytmUGpyeU52VTdQSGJzbUh3emQ2NHN0QkozdGNSeXk5YXRSdlkzNXRld0J4NlE4ZVBHNmNoWmF0QmJ0VVlOdXppZEtYdDM3ZkpjQWFaL1c5ZXluYVFmT0tBamM2SW5qWmN5M1dOMWRPNTJUWGhLRHI3K3RvN2NFVkkxUnM2Yk0xdUNDbWg4cmQ2VGRSczBrQjA3ZHVnZTU2blZOdTNhdHRXUjd6cXZkbTE1YVBod0habngwc3N2eTMyREIrdklPUXQvK0VIYXRHbWpvLy8xeWFlZlN0OGJidENSTTlTNTUxczJiWkx3OEhEZDR4MGs2SVdBR3dtNmtuYndvTVJkM1UweTlwdi9rSXRzM1ZKcXZQMmFCQlRTZlVrazZNNGhRYzhkRXZUL1I0SitacjZVb1ArYlNnTFVUTFZLMk5XWG1xbFJsWVVORHBGeVRjMWFxWmwvRTROSUV2VC84SlVFUGVQNGNkbDQ5YldTN25MUjNOTDkra3JseDBmWnkrMEx3aVVkT3VTNmtGaGVYSFhsbGZMbDU1L3JDRGxSMThWcU5XdEttc05IOFkxNDZDRVpPMmFNanY3WGdOdHZseGt6WitySUdYMTY5N2JybFhnUlM5emhtQkRyQTdqeWxJbXVMTUZLWHJ4RTlyN3dzaG9wNng0QUFQSkdWVDZ1VkttUzNENWdnTXorOUZQWnNIYXQvUHpqajNMWEhYZEkxWmdZWTVXUmMyUHYzcjJ5Y3RVcUhhRXdDeXBXVENvOWFTVXhnZTRPM3c5L09FdU8vMWx3UzkyYlhYU1JicG14ZXMwYXljakkwQkZ5VXJac1dXblpvb1dPbkpQVFBuUjFBM0h4a2lVNmNrNlA3dDExeTN0STBPR280bTB2bGpKM3ViQWYzWG9USDN6eFZUbit4MUxkQVFDQU0xVFJvQmJObTh1enp6d2o2NjFrL2FlRkMyWFFYWGNWU0VYNHpNeE0rZnJycjNXRXdrNk5zMHBjMDFsSDdsQXJ6SFlPZjBReWtncm1WSUhhdFd2cmxoa25UcHl3dDd6ZzdGU2h6V3U2ZHRXUmM5U0t0SlNVRkIzOTA1NDllMlRMbGkwNmNrYjU4dVh0bFJOZVJZSU94NVcvWjVCRU5EZDd0MVBKU2t1VG5mYzlJR2t1TEtrSEFCUk82b2luWnMyYXlUUFRwc25Xelp2bHBSZGVrTnExYXVsSDNiSGtqejkwQzRXZE9rb3IrdUZoRWhUbDdzMml0QjN4c252aTVBSlp1ZGpDd0l6dDZWUnl2aW51N050eDhSL1hYbnV0NHlkaXFKVkMyN2R2MTlFL3FUb2hUcTl3Nk5LNXM5R0NldmxGZ2c3SEJZYUZTc3d6VXlTb2JCbmRZMDY2bFp3bkRIdFlzdEpabWdRQU1Fc2QrVFRndHR0azVZb1Y4dVRZc1JJUkVhRWZNVXZ0aVdjSkx2NFdVcmFzUkk4ZTZmcFM5eU1mZnlMSGZqTzNGenc3MWF0Vk0zclVtbHFsOHNNUFArZ0laNk4rSDgyYk5kT1JjK1prczFMSTZSVkU2amk2M2oxNzZzaWJTTkJoUkdpRkNsTDU2WW4vTFNCblV0SlB2OHErNTEvVUVRQUFacWxaZFZVdCtmTlBQNVVpTGhTblZVWHNmSFVKcmhjcjQvdURrbGRlSWNVdWRiYVE1Tm5ZUzkySGpaRDB3NGQxanp2VWxwUDY5ZXJweUF5VkhIcWhLS1N2TUZFUTlFeUZBSk9Ta2h6ZmYxN1J5bEZhdDI2dEkyOGlRWWN4eGR0Y0xLWHZ1RTFIWmlXcS9laS9zd1FRQU9DZURoMDZ5UEJodzNSa2pwcmhVL3RrbmFhSzN6bTlWUFhmMk50clJrQlFrRlI2L0ZFSkxGRmM5N2dqZmQ5KzJUVitrcXRMM1lPc24vWFNUcDEwWk1aZksxZkt0bTNiZElTenVlTHl5eDB2bnJsOHhZci9PUTlkSFgrcEtzYzdxVnUzYnZiNStsNUdnZzV6ckEvOWl2ZmZJeEV0blY4RzgyLzJmdlFISG5MOXJpNEFtS0FTTWllcG1TR25qOFhCZndvbTNYYmJiY2FYdXF2ZjM3OEhyazVRZzFUVENickpJOXdLdTlEeTVhWDhnME4wNUo2am4zOHBSeGY5cUNOM1hISEZGYnBsaGxycDhaWkhqOXp5b2hvMWFrakRCZzEwNUF4MTFPV3UzYnQxOUIrTEZ5OTJkR1dEdXRuVHorSHoxRTBnUVlkUjZwenlLcE1uU2xDcGtyckhISFV1YU1KREk0MmZadzBBcGgwL2ZseTNuUEhKcDUvSytnMGJkQVFubFM1Vnl0NlQ2WXRNSitmS1pvZXJMK09meXZUcUtSRk5MOUNSU3pJelpkZGpZeVg5NkZIZFlaNDZWVUVkOFdYU2pIZmVzWmRVNCt6VVB1NGIrL1hUa1RQVVRaTGZmdnROUi84eFo4NGMzWEpHMWFwVnBkSDU1K3ZJdTBqUVlWeFk1VXBTYWVwVDluSXMwMDdNV3lENzMzaGJSd0RnbTV4YzBoY2ZIeS8zRFI2c0kvOXk4T0JCT1hDZ1lFL3lVQU5WdFNmZE5EWHo0N1R3OEhBSk5KeWtxMldyTUNjZ09FZ3FqMzlDQWlMQ2RZODcxS1RJemtkSDI4bTZHOVJ5Nmw2R0MzdXA0N3pHUHZHRWpncWUweXVwbkthT0tYTzZFdnJjYjcvVnJmL2NxUDdsWHdsN2ZsMTd6VFdlcnQ3K054SjB1S0xFSmUyazFLMDM2Y2lzQTFPbXkvSEZ6aGFVQUFBM3JYQW9xVkg3Zi92ZGVLTWtKaWJxSHYraGt2T3UxMTRyelZxMHNDc3dGK1JnMXZSdVhKV2NGeTl1WnE5eDQ4YU5kY3NNTlNORzhTMnpJbXJWbEhMM0RySzNGcnJwMkxmZnk1SDVDM1JrbnFxOGJYclZ4NnV2dlNacjE2M1RVY0ZRMjVIZWZmZGR1ZW5tbXoxZFpMRmF0V3BTdlhwMUhUbERGWXI3KzJkZXRXcVZveXNhMU0zVVcvcjMxNUcza2FEREhkWUZ0ZUtRK3lTOFNTUGRZYzUvcW93K0xPbUhqK2dlQUhDT0dpQ1dLbFZLUjJhb1k3WHltOVNrcEtUSUxiZmU2bmdGWEM5UU15dlh4c2JhejVQYXM5akZTdFQ3MzNLTDdQN1gva1UzcUwzaHBtK0FoQVFIUzRrU0pYVGtyTXFWS3VtV0djdisvTk0rNHhobWxlMS9vNFRWcTZNamwyUm15YTZSb3lYTnBWVXN6WnMzTjE3Ti9ZU1ZFS3FibWtkZFhMNy9OM1hOWDdseXBWeDYrZVZ5eTRBQjh2R3NXZkxzYzg5NTlnYVhXam5VNy9ycmRlUU1kZU4xMTY1ZGRsc2w2MDcrN09mVnJpMjFyUzlmUUlJTzF3UkdSRWpNYzFNbDBOQXN3T25TZCszNXovbm9IbDhlQk1BM21TNEt0bnJOR2xtN2RxMk96dDNKa3lmbFppczUvOUxoL1h0ZW9LcVo5KzdiVjViODhmOG5kNmd6d2ovODZDTnBmT0dGOHRTa1NVWXFubWZucDU5L05uNWpvRW1USnNhVzBWY3luS0NyMzhYalk4YmtlYUROTVcyNUV4Z2VMbFVtUEduWC9uRlR4c0ZEc3ZPeHNTcTcxRDNtcUpVa1ExellyclBHdXZiMjZ0UEg4Vm9nT1ZGSjZXMjMzeTR0TDc3NHY4ZU5xZmZNcU5HalpmNzgrWGJzUmRmRnhqcTYvVWJkOEZRMzlSU256NmJ2MHFXTDQ1WG5UU0ZCaDZ2Q0tsZVdTbE1tNk1pc0UvTVh5WUYzM3RNUkFEakgxR3ptNmNaUG5KaW5wRVlOOUdLN2Q3Y0x3L2tiTldEdWU4TU5NaStiZ2R1UkkwZmswY2Nla3pyMTY4dTA2ZE9OejJ5ci9lK0RoNWl2b24zaGhSZnFsdk5hdDJxbFcrYk1mTzg5ZWVPTk44N3A5YnhwMHlZWlBIU290R3Zmbmtyd3VSVFpvTDVFM2VMT2RzTFRIWjgzWHc1OThaV096RklKWWFYb2FCMlpzMkRoUW1uVHJwMnNXNzllOTVpeGRkczJHVFo4dU5ScjBFQm12dnZ1Lzl5UVVxOTl0VHBvKy9idHVzZGIxQkwzZW5YcjZzZ1ozOCtiWjIvUCt2SG5uM1dQTTI2em5rZGZRWUlPMTVXOHJKTkUzVGxBUjJidG56UlZrbGF0MWhFQU9NUHA0MlhPUkNYWUw3MzhjcTZUR2pYejhONzc3OHRGelp2TC9BWHU3UXQxaTFxeVAyRGdRUG4ydSs5MFQvWlVrYjNoRHo4c05Xdlh0Z3ZrTFYyNjFQRmo1clpaQStiT1hidmFBMnlUMUw1Sms4V3hhdFdxWlg4UGs5UnpmODk5OTltSnh1clZxOCtZY0t2WDcwWXJLWC9ublhma3lxdXZsa1lYWENBdnZQaWl2WTFCSlM3SWhZQUFxWEQvUFJKYXZhcnVjSWwxamRvejdpbEpkV0VyUTdGaXhlVFJrU04xWkpaS3psdTJibTJ2eWpuczRERythb1dUbWhWWEs0SHFOMndvMDU5OVZrN21jSXppL2dNSDVOcnJybk4xWlZCdXFaVTl2WHYxMHBFelZOMEtkYzEyc3E3SUJkYjFSQjBONXl0STBGRWdLZ3krVDhJYW1OMUhwR1JaRjhHRSt4N2dmSFFBamxMRmNVeFRpZm5RQng2UUlVT0gyck1uYWhuM3Y2aytkWGFzS2lqVXRGa3p1ZVcyMnlUeDRFSDlxUDlReVp2NjJUNmJQVnYzNUU2eTlSbWdibkswYmQ5ZTZqWm9JSTg5L3Jnc3N4SStOVHVUbDlVSmFzQ29LajFQZk9vcGFYTGhoYkxpcjcvMEkrWlVybHhaenJjRzhhYW9HYkNTSmMwZmhacGhQWGNmZlBpaE5HL1ZTaXJGeE5oSnVOcUcwY2RLVWxwZGZMRlVybHBWTHJDZTA5c0dEclJ2TUozK2VsZS9ON1UzRldlbmxycFhHamRXclFmWFBlN0lPSFJJZG80Y0xWa1o1cmNXWG4vOTlVYmZFNmRUeWJSYWxWTzNmbjE1Y1Bod1diNTgrVGtueXVxMXJGYnpxTzB3YWxWSW5YcjE1S291WGV6cjJabXU2MmV5YnQwNnVlT3V1enhaMlYwbDZFN2U1TnV3Y2FOODl2bm5lYnBHWjBkVmJ6ZDlJOUpKQWRZUDc5eFAveStxV05lbUxyR1N1akZPOTJRdmF0QkFpUjQyVkVmL2xKbWFLaHRhdGJmZi9EbHBzSGE1QkVaRzZnaC9TM3h6aHV4NXdzeXk4b1p4YXlRZ2ovczVUbTNiTGx1NlhpZVpTY202eDV5aVYxNG0xWjZmN3NwUmIyNVFWVk1UQmd6UzBabVY2QkVyTVpQUC9IdlBzajRRNGpySFNzckdUYm9uZXlXN2RaVXEweWJyeVArY2lvK1h1TXM2R3o4L1A3QklFYW16NERzSktST2xlM3pML1VPR3lJc3Z2YVFqNTkxdERUeW1UNXVtSSsvN2ErVkthZDZ5cGFNRGlKeW80N0JxV0ltVU9ndjQ3MlJLTGVmK2Zja1MyYmxybDZ0N0piUHp6dHR2Uzk4K2ZYVGtIRFZ6cmhJNXA1YnNxeUovWmFLaTdKc3NIVHQwa1BQUFA5OHVQRlc2ZEdtN1VycmFUNm0rMU1CWmZhbVpNMVdJN3BkZmZwSHZ2djllL3N6REFEMC9IbjNrRVJsdEpRZ21YZHV0bTN4ejJ2RkdYalQ0dnZ0azhxUkpPbkxXdXBidEpOMkZRbWZSazhaTG1lNnhPakxJdWk0bFBEWkdEci8va2U1d2lmWGVxdlRVT0lseTRXZjgyWG8vcW1KcUJaR3dsaTlmM2k0NDFySkZDNmxRc2FKOWJWYlhqckRRVUVtM3JobHFtYnE2cWFxS0k4YkZ4Y212aXhmTGdmMzc1ZWl4WS9wdnlMdW5Ka3lRb1M1c3F6a1g2bmZRdWswYis5cm9sTCt2d1U1UTEveTFxMWI1VElFNGhSbDBGSmp3NnRVazJycVFpd3QzdEU1OE8wOE96SmlwSXdESUh6VTRpN0NTWnJlb0dXUzEzUEt0R1ROazJqUFAyRitxdlg3REJrOGs1NmFvZ2E3YTQrM2tmbnAxVStWQVlxSzlkUHFweVpPbDMwMDN5WVhObWttMW1qV2xkTm15VXJWR0RYdlphWXlWd0t1NDVubm4yZnVnSDNuMFVmbnhwNTljVGM3VlRZTjc3N2xIUitiME1YQmp4V2t2dmZLS2JMS1NIZVNDV3VvKytGNEpLbGRXZDdqRWVtL3RuVGhaVXZmdDB4M21YTnk2ZFlFZG1hVldMYWtiQkpPZmZsb2VlUEJCdStaSHA4c3VremFYWENMdE8zYTBieHlvN1RocTVuM0d6Sm15ZWZObVI1SnpaZlRqajl2NzQ3MUV6VXgzNjlaTlI4NXdLamxYTG1qU3hLZVNjNFVFSFFXcTFGVlhTS20renU1ZHljNyt5ZE1sZVczQm5tMEp3RDlFUmtaS2h3NGRkQVFUVkhKKy8rREI4dnFiYitvZWQ2aVZDZkVKQ1k0TnFQTmowSjEzMmttNmFaZDI2aVRGaXhYVGtUZXBsUlFQUGZ5d2E2dFdmRjFJVkpSVUdqUEtsVW1RMDJVY09pd0p3eDh4dnlyTitybWVuakxGOFFKbFhuZktlaC9jMUwrLzdOaXhRL2Q0dzVXWFgyN1BWSHZSRFE0ZkJlY0dFblFVTE9zQ0d6MXFoSVNmYjc3Z1V0YXBVNUp3NzFESk9PNjlJaHNBZkUvUEhqMTBDMDVUU3lZZkhEWk1YbjM5ZGQxVCtEU29YMThlZnVnaEhabFZwa3dadWV5eXkzVGtYVjkvODQwcyt2RkhIZUZzU2x6YVNZcGQza2xIN2tuNmRiRWNuR1grRklraVJZckl6Qmt6N01KeGhjbSsvZnZ0V1hzdnJaNXExS2lSSjR1d2hZYUdTdGV1WFhYa08walFVZUFDdzhJazVvVm5KTEJZVWQxalR1cTI3Wkx3MEVoN0R6WUE1SWVhZFZRRFJEaExMVzE4Y3R3NGVmSGxsM1ZQNGFNR2xhOWFQMytZOWZub0JqWHo5Y2pERHp0Nm5yRUphdlo4K0VNUGNleGFMZ1VFQmtybHNhTWxLTXI4S294L3NINVBlOFpQa2xNNzRuV0hPWTBiTjVZM1gzL2RmczhVSnF2WHJKRkI5OXpqNkZMdy9GQXJHa3pVSU1tdnBoZGVLTldxdW55cWdRTkkwT0VKWVZVcVMvU1RqOXN6NnFZZC8yNmVIUHp3WXgwQlFONm9Ra0d4RHUrN015MHFLa291YWRkT1I5NmpFckJKa3lmTHVBa1RDdTFTWnBVa1B6TnRtalJ2M2x6M3VFTVZ5K3ZhcFl1T3ZFc1ZhSHhuSmpWbGNrc3RkYS93MElQMnZuUTNaU1VueTg3aEl5VExoU0p1cWtMMytDZWY5T3dTYTFNKy9PZ2ptZkwwMHpvcWVGMDdkN1lUZFMvcGYrT05Qdm02SUVHSFo1VHEybGxLOXJwT1J3WlpIeFo3eDArUzVIWHJkUWNBNU0yd0J4N3dtWmtiOWU5ODdlV1g3VXJ3WHFVR1VsMnNRVjZ0bWpWMVQrR2lCcmNQRHg4dXQ5MTZxKzV4ajNydXh6Nyt1R3V6OXZueHhMaHhkcTBBNUU1VTdMVlNwTzNGT25KUDhyTGxjdUN0R1RveVI3MTJWVEhGeHcyZmR1QkZVNmRQOTh3UmhPb21YNlhvYUIwVnZLSkZpOHBWVjEybEk5OUNnZzd2c0M2dzBTTkhTRmdkODVVV3M1SlBTdnhkOTBtR0gxYy9CbUJldlhyMTdEdjB2a0FOWHRWZXZKaVlHTjNqVFdxUTkvdml4ZmJadW9WcFJpdzRPRmhHUFBTUVBEWnFWSUg5M09yMXJJNTE4L3J6dm52M2Joay9jYUtPY0ZhQmdWSnA5RWdKaUlqUUhlN1ovK3lMa2hKdmZxbTd1cmsxNHVHSDVaV1hYcExJQXZnNUM0SmF2cjF3L254N1paUVhoSVNFeUkzOSt1bW80RjNVdEtsVXJGaFJSNzZGQkIyZUVsUzBpTVM4K0t3RUZqZGY4Q010UGtGMmpoeHQ3NVVDZ0x4UWljeVRUendoVlNwWDFqM2VvLzZOSTBlTWtBY2ZlTUNPNjV4M252Mm5seFVyV3RRdS92VEJ1KzlLeFFvVmRLLy9VdWZjUHp0OXVuM2VlVUV2RVgxZzZGRHAwTDY5anJ6clJTc1IyN2h4bzQ1d051SFZxa241WVVQc3lSQTNaWjQ0SWZGRGgwdW1DM1VEMUxYdTFsdHVrZG1mZlNabHk3cDh4SnlMU3BRb0lVK09IU3MvTFZvazlldlYwNzNlY0Yxc3JHZHFXVnpmdDYvbmJ6Wm1od1FkbmhOZW83cFVmTUpLbkYwWXBCeWJNMWNTUC9oSVJ3Qnc3dFF4V0srLytxb25sN3FyV1ZrMUkzcjZyR3k1Y3VYc1A3MU8vWHU3ZCs4dWZ5NWRLamYxNitjVFM2L3pvbXJWcXZMTm5EbHkrNEFCbmhoTXFsbXc5MmJPbEVibm42OTd2TWsrZG0zRWlFSmJxeUF2eXZUcExlRU42K3ZJUFNmL1dpVUgzbnBIUitaMTdOQkJmdi8xVi91c2RGOU4wTTVFSmI2WFhYcXAvUG5ISC9MUThPR2UvTXhScTNDOE1HdXRLdnVyMmdTK2lnUWRubFNxeTlWU3NxY0wrOUd0RC9aOTQ1NlNrM0diZFFjQW5MdU9IVHZLMUNsVENuejI4M1JxbWVjTHp6NHJqNDRjK1k5L1Y2bFNwWHhxMEtwbXdsNS83VFg1K2NjZnBYV3JWcDU2anZOREpjSzM5Tzh2UzM3N1RkcTJhYU43dlVFZHUvYkY3Tm1lVDlMVnNXdno1czNURWM0bU1DeFVxancxWGdMY3Z0bGxqYlVPUFArU3EyTXR0WlhudTdselpkd1RUOWg3a1gyWnVsNDNhTkJBdnZqc001bno1WmYyVFQydlVqY05lbmJ2cnFPQ282NnA2clBPVjVHZ3c1UFUwU0RxZlBTd3V1YVhZbWFxL2VpRDdwZU1wR1RkQXdEbmJ1RHR0OXVWaEwyUVFLb2w5M08rK2twdXZmWFcvL24zcUprRlZZSGVsNmdCNmdWTm1zaUNIMzZRTDYzRVVTWHF2a3p0amZ6ZVNoNWVlZmxseit3Zi9iZksxbXRJSlRocU50S0wxR3RDblVoUXljUGJTN3dvNHJ6YVVtYWcrMFVJTTVPVEpXSFl3NUtabHFaN3pGT3Jib1k5K0tEOHNYaXhkTHZtR3ArY1RhOWJwNDY4L2NZYjlvMjhLNjY0d2lkdVVIcmh1RFZmcjJGQ2dnN1BDaXBTUktwTW15eUJMcHd6bkxwNWkreDZiSXhkNFIwQThrSU5CdFQrM2JkZWY5M2VRMTBRMUwraDMvWFgyOHZDczV1VlZUTWNCZlh2eXkrMXhGTU5VaGN0V0NBTDVzMlRYajE3K3N4WjlPcDNveEx6OTk5OVYzNzkrV2RwWS8xK3ZENkFWRFBwYXNaT0ZhOEw5OUFXQTFVYzY0UDMzcFB2di8xV0d0UjNmOG0yVDdOZWMrWHZ1bFBDckVUZGJhZFdyNVY5ejcyb0kvZlVybDFiWm4zOHNmeTRjS0ZjY2ZubG5qL3ZYMUhMOHo5OC8zMVo4ZWVmY3IxMVRmZWxMVDVxbVh2MTZ0VjE1TDdpeFl2N3hKR1JPU0ZCaDZkRjFLMGpGY2VPc2w2cDVsK3FSei8vU2c3Ty9rSkhBSkEzYWpDMWRNa1NWODhiVjN2TjI3VnRLejh2V2lSdnZ2Rkdqa3Y3MU5KcU5ZdnV5MVJpMjliNmVkVmU2YTF4Y2ZMVXhJbHk0UVVYMk0rRDE2aUNUajJ1dTA1K1hMREFUc3g3OXVqaFU4djAxZXRsN0pneHNtVHhZdW5Vc1dPQlBjZXFrSjc2L3A5OThvbjlQSGEzbmxOLzJlN2dOclhVdmRLNE1lckNvWHZjay9qcUc1Szh2bUNPdVczVnNxVjg5Y1VYc2x6WHRTampzZFVyYXUrMk9tTHhMeXNwVjZ1RjFHdmNpOWUwczFIdjFkaHUzWFRrUG5XZDhQblB1Q3lEMVRXeTB0TmxVNWRZU2QwWXAzdXlGelZvb0VRUEc2cWpmMUtWSHplMGFpOFpodzdwbmpOcnNIYTVCRVpHNmdoL1MzeHpodXg1WW9LT25OVXdibzBFR0w1NFpHVm1Tc0tJUitYb3g1L3BIbk1DcklGSXphOCtrWWc2ZFhTUE54Mlp2MEFTQmd6UzBabVY2QkVyTVpQUC9IdlB5c2lRdU02eGtySnhrKzdKWHNsdVhlMlZEUDRxN2NBQjJUVnVvdldjbUYwOVlRK0lIbnRVZ2wwNG9jQ0VHZSs4SS9Pc0FZTXBsM2JxSkRmMzc2OGovNUJodmMrK21qTkh4b3dkSytzM2JMQmpweFd4UHZOVW92ckl3dzlMOCtiTmN6MHpwQ3BnLzJZbFhFNGFkT2VkMHJwMWF4MjVUejIvTytMajVRdHJBUDY1OWJWMjNUbzVldlNvZnRROTZ1WkJ5WklscGRsRkY5bUplVGRyb09yTGV5RlBsMmw5SHE5WXNjSSs0bXpCd29WeTRzUUovWWdaYXRhd1JvMGE5cDdXL2pmZFpDKzdONUdVSjR3Y0xlbkhqdW5JbktqciswanhWaTEwVlBEMnYvbTJKSzFZcVNQM2hKOVhXeXJlYzVjOW0xK1ExUFZoN3R5NU1tUG1UUGx6K1hJNWZQaXdmc1FkNm5xdGlveDJ1T1FTT3pGdjJiS2xSUHBKSHFNKzg4YU5INitqLzNVeU9WbSt0cDU3RTUrTDZzYXRXbDNseTBqUUN3RmZUOUNWRE91RGMvTjF2U1YxeXpiZFkwNVk3VnBTNjh0UEpEQThYUGQ0RHdrNjREdlMwdExrajZWTDVaVlhYcEc1MzM0cng2MmtKcStEa2tCclFLdG1ORlV5cmdZZ25hKysyazVhdkw1VTJtMXFhSFB3NEVGWnZYcTFmUHZkZC9iZ2U4a2ZmMGk2TlM1UlgwNVNNMXhxb0swUzhoYlc3K1ZxNjNlaWlxdXBKTjJmcWJQSXY3RUcyTE0rK2NSK2JrK2VQR2tuOFBtaFh0dHF4VUZySzFGUlMxVGJ0V3RuRjhUeWhTWEo4RzFIamh5eHJ4T3E4T0RpeFl0bDlabzE5clhDeVFSU1hTdlVsaHgxcmJqOHNzdWtmZnYyOWg3emlFSnlidnZwUHBzOVczcjM3YXNqNTZqbmQxZDh2TTlzZmNvT0NYb2g0QThKdXBLOGJyMXM3WG1EWkNXYkwrWldzbmNQcVRMaGlRSy91NXNkRW5UQU41MDZkVXJXV0FNL2xiRC8vdnZ2RXArUUlJbFdJaGx2RFNoVWduTTZ0ZiszZkxseWRoRXhWZlN0V2JObTByQmhRMm5jcUpIZkozOG1wRnBqaVowN2Q4cWF0V3Z0UHpmRnhjbldyVnZ0Z2JtYVNVdEtTckpuNE05RS9RNmlTcGUybjNlMXY3R2FsVFRXcTF0WHFzVEUyTCtUeXBVcUZjcEI5dC9VYzdmV2VsNVhybG9sNjlldnQyZlAxR3lrZWw2M2JOa2kveDVvVm9xT3RtY08xWmM2NS82Q0N5NlFtalZyU2lQcnRSMVRwUW9KT1FxY1doMnliZHMyZXlXT3VsNm9tMURIamgyenY5UTFZL2VlUFpKOGh2R29TZ3lqSzFhMGJ6U3A2NFc2Z2FwdTJLbXE4dWRiMTRvcTF1dGIzWWdxek5SblhZdldyZTFyaGRQNjNYQ0R2UFhHR3pyeVhTVG9oWUMvSk9pS09yTjh6eU9qZFdSV3BXY21TK2xydXVySVcwalFBZjl4dG85aFpzZk55KzFRaU4vRnVjbnBlZVc1aEsvS3pmV0MxM2YyWG52OWRSbDB6ejA2Y282NnNmZkRkOS9aQlRoOUhRbDZJWEJrOWhkeTRPWFhkZVNzV2w5L2JpWG9MdDdwdGw2dXU2YzlLeW1ienY2YXlxL0FZc1drOHBoUkV1VEIxeFFKT2dBQUFIekp2bjM3cFBFRkY4akJzK1IwZWFHMkMveTFmTGxmck1BaFFRZDhFQWs2QUFBQWZJVktPVys1OVZaNTc0TVBkSTl6MUlxRjExNTV4UzRtNlE4NG53SUFBQUFBWU16N1ZtSnVJamxYeXBVcko5ZkZ4dXJJOTVHZ0F3QUFBQUNNK1BYWFg0M3NPLy9iblFNSCt2elo1NmNqUVFjQUFBQUFPRzdWNnRYU3EwK2ZNMWE5ZDBMRmloWGx2bnZ2MVpGL0lFRUhBQUFBQURocS9vSUZjdmtWVjhqK0F3ZDBqL09HUC9pZ2ZmeWxQeUZCQndBQUFBQTRJaTB0VFo1LzRRVzVOamJXU01YMnY5V3RXMWNHM242N2p2d0hDVG9BQUFBQUlGOVVwZmIxNjlmTDFWMjZ5SkFISHBDVWxCVDlpUE5VNWZZcGt5WkphR2lvN3ZFZkpPZ0FBQUFBZ0R6YnNHR0QzRGxva0Z6WXJKa3MrdkZIM1d0T3J4NDk1SXJMTDllUmZ5RkJCd0FBQUFDY2swT0hEc25zenorWHpsMjZTS01MTHBBMzMzcEwwdFBUOWFQbVJGZXNLTTlNbjY0ai8wT0NEZ0FBQUFESVVWSlNrcXhidDA3ZWV2dHRpYjN1T3FsZXE1WmRvZjM3SDM2d2w3ZTdJVHc4WEQ1NDd6Mkppb3JTUGY2SEJCMEFBQUFBSUptWm1YTHExQ2w3ZG56RHhvM3kxWnc1TXVxeHgrVHlLNitVV25YcTJFdllCOTU1cDh6NTVodGpSNmRsSnpBd1VCNTc5RkZwM2JxMTd2RlBKT2dBQUFBQVVNaWRPSEZDV3JkcEk0MmFOSkVhdFd2TCtZMGJ5M1U5ZXNqRVNaTms0YUpGa3BpWUtCa1pHZnEvZGwrZlhyMWs2SkFoT3ZKZkpPZ0FBQUFBVU1nVktWSkVkdTdhSmR1MmI3ZVhzM3RKMnpadDVPV1hYcEtnb0NEZDQ3OUkwQUVBQUFDZ2tGTkhsN1Z1MVVwSDN0SDB3Z3ZsMDFtekpDSWlRdmY0TnhKMEFBQUFBSURVT2U4ODNmS0dpMXUzbHJuZmZDT2xTcFhTUGY2UEJCMEFBQUFBSU0yYU5kT3RncVZtODYvcDBrVytuak5IU3BVc3FYc0xCeEowQUFBQUFJQlVxVnhadHdxT1NzNkgzSCsvZlBqQkIxSWtNbEwzRmg0azZBQUFBQUFBaVltSmtXTEZpdW5JZlNWS2xKQjNaOHlRcHlaT2xKQ1FFTjFidUpDZ0F3QUFBQUNrZVBIaUVoNFdwaVAzQkFZRXlHV1hYaXJMbHk2VlhyMTY2ZDdDaVFRZEFBQUFBR0RQV3J1OUR6MjZZa1Y1NmNVWDVhc3Z2ckJuOEFzN0VuUUFBQUFBZ0sxQmd3YTZaVlprUklUY1BXaVFyRnl4UW02OTVaWkNjY1o1YnBDZ0F3QUFBQUJzRnpacG9sdG1oSWVIeXgwREI4ckt2LzZTNlZPblNzbENWcVg5YkVqUUFRQUFBQUMyT25YcTZKYXpxc2JFeU5qSEg1Zk5HemZLODg4K0s5V3FWdFdQNEhRazZBQUFBQUFBVzNSMHRCUXRVa1JIK1ZQSitydjZYWCs5ZkQ5M3JteGN2MTVHUFB5d2xDOWZYaitLTXlGQkJ3QUFBQURZaWhZdEt1WHltRVNyLzIrZDg4NlRPKys0UXhiTm55OGIxcTJUdDk1OFV6cDA2TUFlODF3aVFRY0FBQUFBMk1MQ3dpU21TaFVkblZsQVFJQmQ1RTN0SDI5L3lTVnkzNzMzeXR5dnY1WU5hOWZhUmQrZWUrWVp1ZmppaSszOTVqZzNKT2dBQUFBQWdQOXEyYUtGL1dlNXNtV2xjZVBHMHJGREI3a3VOdFplb2o1enhneVpQMitlckxlUzhWM3g4VEx2dSsvazZjbVQ1ZEpPbmV6bDY4eVU1dzhKT2dBQUFBRGd2MFk5K3Fpa25Ub2x1eElTWk5tU0pmTGQzTG55MFFjZjJFWGUrdlR1TFczYnRMSDNxb2VHaHVyL0I1eENnZzRBQUFBQStDOFM3NEpEZ2c0QUFBQUFnQWVRb0FNQUFBQUE0QUVrNkFBQUFBQUFlQUFKT2dBQUFBQUFIdUFqQ1hxQS9iK3p5VHgxU3JjQS81YVpmRkszY2hERS9UY0FBQURBbC9qRUNENHdORVNDaWhYVFVmYVNWcTNSTGNDL25WeTJYTGV5RnhKVlJyY0FBQUFBK0FLZm1XSUx2NkN4Ym1YdjZOZHpkUXZ3WDFscGFYTHNoL2s2eWw1bzVXamRBZ0FBQU9BTGZDWkJqenkvb1c1bDc4UzhCWkorNkpDT0FQOTA3SmRmSlgzUFBoMWxMN0pGTTkwQ0FBQUE0QXQ4SmtFdmVuRXI2MStiODBiMGpLTkhaZmRUVDR0a1p1b2V3TDlrSkNmTDN2R1RSTEt5ZE0rWkJaVXZKK0hWcXVrSUFBQUFnQy93bVFROXJGcFZDYTFlWFVmWk8vcnA1NUw0eVdjNkF2eEhWbnE2N0JvNVdsSTNiOVU5MlN2ZXFZTUVCUHJNMnhzQUFBQ0F4V2RHOElHaG9WS3FWM2NkNVNBalEvYU9mRndPdlBPdVpGbHR3QjlrSkNWSi9JTVB5OUV2NXVpZUhGaUplYW5lUFhRQUFBQUF3RmY0MUJSYlZOL2VFbFNxcEk2eXAyWWE5ejQrVHJiZmZwZWMycnFOSmUvd1dlcTFmT3luWDJUenRUM2xtRXJPejdLMFhZbHNjWkVVeVVYTkJnQUFBQURlRXBCbDBXM0hxZVJpVTVkWVNkMFlwM3V5RnpWb29FUVBHNnFqN08xLzVYWFpOM0dLanM0dUlEaFlJcG8xbGFMdDIwbEVyUm9TVkxhc2ZnVHdxS3hNU1l2ZkpTYzNicFRqMy84Z0taczI2d2ZPTGlBMFJHcDgrb0ZFTnN3NVFWZXJTK0k2eDByS3hrMjZKM3NsdTNXVkt0TW02d2dBQUFDQUtUNlhvR2VtcHNubTJKNlNzbTZEN2dId3QxSTNYUytWeHp5bW8reVJvQU1BQUFEZTQzTlZwQUpEUTZUSzFFa1NXS1NJN2dHZ2hOV3ZLOUVqaHVzSUFBQUFnSzh4bTZBSEJGai95L2xvdFA5S1Q5ZU5zNHVvYzU1VW1qNUpBa0pDZEE5UXVBVlhLQy9WWG45SkFzUERkYzlacUhVenVWdzhvN2FKQUFBQUFERFBlSUllR0ptN21lN2NIQjExdXBLZE9rckY4V1BzUGJkQVlSWVVWVnFxdmYyYWhGYXNxSHZPTGlzdFZUS09IOWRSem9LclY5VXRBQUFBQUNZWlRkRFZPY3pCdWFpNnJwemFzVU8zY3NsSy9xTjZYQ2RWWG5sQkFvc1gwNTFBNFJKYXA3YlUrT1I5ZTFYSnVVZy9kRmpTOXgvUVVjNUNLbFRRTFFBQUFBQW1HZCtESG5aK2ZkM0tXZHFXYlpLeWM2ZU9jcTlFKzNaUzY4dFBKS0o1VTkwRCtEKzE3THhrMzE1UzY3T1BKTHhhTmQyYmU4Y1gveTZTa2FHakhBUUVTRmlWeWpvQUFBQUFZSkx4QkQzaXZOelA3QjMrK0RQZE9qZGhWYXRLemZmZmtlaEo0eVNrYWhYZEMvaWhvQ0NKYUhhaFZQLzRYYWt5Ym93RVJVYnFCM0pQVlhBLy9QRW5Pc3BaWUVTNGhGVS85eHNBQUFBQUFNNmQwV1BXbExURWc3S2hSVnVSekV6ZGs3MlF5cFhrdk8vbldFbEJoTzQ1ZDVrcEtYTHN4NS9sNER2dnlxblZheVh6V083MjJRS2VwYmFLUkpXV3lOWXRwY3lBbXlXeVhqMEpzQkwxdkVwYXRWcTJkZTlySDRONE5xRTFxa3VkSDc2eFo5SUJBQUFBbUdVOFFWYzJYZHREVWxhdDBWSE95ZzY1VnlyY2Q3ZU84aWY5eUJFNXVYR1RKQzlmSVNtYk5rdjZzV09TbFpxbUh3VzhLeWd5UW9LS0Y1ZndDeHBMa1NhTkpheGFOYnN2djFSU3ZxWHZUWEp5MlhMZGs3UFN0L1dYU28rTzBCRUFBQUFBazF4SjBQZTkvSnJzZitwcEhlVXNNREpTcW4veW5qMUxDTUJaQjk1NVQvWSsvbVR1amxnTENwU2FYMzRxa2ZWNUx3SUFBQUJ1TUw0SFhTblorYXBjTDhuTlRFNlcrRHZ2eTFQQk9BRFpPN3J3UjlrM2JtS3V6ejhQcTFWVElzNnJyU01BQUFBQXBybVNvS3NxMEVXdnZrSkhaNWNXbnlCYis5d29KemR2MFQwQThzeEt5STk4KzcwazNIWHZPVzN4aUxybEpydGFQQUFBQUFCM3VKS2dLK1h1dlAyY0J2dnB1L2JJMXRqZWN1anpMM05WekFyQS84bzRjVUoyVFpna0NmY01rYXlVVk4xN2RpSFZxa3FwMkd0MUJBQUFBTUFOcmlYb2tmWHFTdkhZcmpyS25VeVZYQXg5U0xiY2NMT2NXTHFNUkIzSXBjeFRwK1RncDdNbDdvcXVjdWkxdDNKMzV2bmZBZ0trM0gyREpEQTBWSGNBQUFBQWNJTXJSZUwrbG5ZZ1VlSTZkNU1NNjg5elppVU5vVFZyU05GMkYwdVJDNXJZN2FBU0pmU0RRQ0dYbFNucCt3L0lxVTF4a3JSa3FaejRkYkZrV0hGZUZMSGVZOVhmZWswQ0FsMjdmd2NBQUFEQTRtcUNyaHo1WVlHOUYxYlN6MkZHTHp1Y3pRejhQd2ZleW9FbGlrdXRPYk1sckhJbDNRTUFBQURBTGE0bjZDcUoyRFBwYVVsOCtYWGRBY0FMQXNKQ0plYlZGNlY0dXphNkJ3QUFBSUNiM0YvREdoQWdGUjRjSWlXdW93QVY0QmxCZ1ZKaDlFaVNjd0FBQUtBQUZjZ21VM1VtZXVWeFk2VG9wUjEwRDRBQ0V4Z281UjRZTEdYNjlOSWRBQUFBQUFxQyswdmNUNU9WbWlvN0h4c3JSejc2UlBjQWNKTmExbDV4ekNpSjZ0MVQ5d0FBQUFBb0tBV2FvTnVzYjUvNDNnZXliOElVeVV4TzFwMEFUQXVKcVN5VnAweVVvczB1MGowQUFBQUFDbExCSitqYXFlM2JaZWVESStUazhoVlcwcTQ3QVRndUlEUlVTbHpiUmFJZmUwU0NpaGJWdlFBQUFBQUttbWNTZENVclBWMk9mUCtEN0pzOFRkSjJ4TnV6NndDY0VSQVNMQkZOR3R0TDJpUHIxckU2T0tZUUFBQUE4QkpQSmVoL3kweEprZU8vTHBiRU45NldrMzhzc3hOM0FIbGdKZUdCUlNLbDJHV2RwTXl0TjBsay9mcDJVVGdBQUFBQTN1UEpCUDEwcWZ2M3kvRkZQMG5TYjcvTHlZMmJKRzNMTnNsS1M5T1BBdmkzQUNzaEQ2dFZVeUlibnk5RjI3YVJvcTFhU0ZDUkl2cFJBQUFBQUY3bCtRVDlINngvcXBwTlR6dDhSREpPSEpmMGc0Y2tLek5UUHdnVVhvSGhZUkpVdklRRWx5d3B3U1dLU3dDejVBQUFBSURQOGEwRUhRQUFBQUFBUDhVMEd3QUFBQUFBSGtDQ0RnQUFBQUNBQjVDZ0F3QUFBQURnQVNUb0FBQUFBQUI0QUFrNkFBQUFBQUFlUUlJT0FBQUFBSUFIa0tBREFBQUFBT0FCSk9nQUFBQUFBSGdBQ1RvQUFBQUFBQjVBZ2c0QUFBQUFnQWVRb0FNQUFBQUE0QUVrNkFBQUFBQUFlQUFKT2dBQUFBQUFIa0NDRGdBQUFBQ0FCNUNnQXdBQUFBRGdBU1RvQUFBQUFBQjRBQWs2QUFBQUFBQUZUdVQvQUVpNFBoc1dEcENoQUFBQUFFbEZUa1N1UW1DQyJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIwLTEyLTIxIiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJUcnVzdGtleSBTb2x1dGlvbnMgVDMxMCBVMkYgQXV0aGVudGljYXRvciIsImNlcnRpZmljYXRlTnVtYmVyIjoiVTJGMTEwMDIwMjAwODE0MDAzIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjMuNyIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4wLjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjAtMTItMjEifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIwLTEyLTIxIn0seyJhYWd1aWQiOiI2MDI4YjAxNy1iMWQ0LTRjMDItYjRiMy1hZmNkYWZjOTZiYjIiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjYwMjhiMDE3LWIxZDQtNGMwMi1iNGIzLWFmY2RhZmM5NmJiMiIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJXaW5kb3dzIEhlbGxvIFNvZnR3YXJlIEF1dGhlbnRpY2F0b3IifSwiZGVzY3JpcHRpb24iOiJXaW5kb3dzIEhlbGxvIFNvZnR3YXJlIEF1dGhlbnRpY2F0b3IiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInJzYXNzYV9wa2NzdjE1X3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19zdXJyb2dhdGUiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImV5ZXByaW50X2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmFjZXByaW50X2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJzb2Z0d2FyZSJdLCJpc0tleVJlc3RyaWN0ZWQiOmZhbHNlLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJzb2Z0d2FyZSJdLCJhdHRhY2htZW50SGludCI6WyJpbnRlcm5hbCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOltdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFFZ0FBQUJJQ0FZQUFBQlY3Yk5IQUFBQ2tVbEVRVlI0MnV5YWkzR0RNQXlHUXllZ0d6QUNuYUNNa0JIb0Joa2huU0FqMEEyU0RhQVQwRTZRYkVBM2NPWFc2WEVwQnRuSW1Ndjl1dE9sbHhqRi9xS0hMVGRSU20wZ2Rua0FBZ0FDSUFBQ0lBQUNJQUFDSUFnQUFSQUFBUkFBQVJBQUFSQkVBRkNTSklOS2twTHVTVHRTWmJRejc2VzI1emhLa3BGV1BidGF6NlE3NXZQdW9sdXVQbXF4bFpLMnlpNzZzOVJ6bmpscE4ySzdDckZXYVVBSE5TMEhUMEF0dzNZcERTanhiZG9QdWF6aUczdWs1NzljdklkZVdzYlFEN0w3TkFZb1dwS21MeThjaHVlTzVyZUI3S0tLclFuUUpkRFluOUFKWkhjNVFCVDdlbklOWTJoanhycUl0c3ZKV1NkeEZ4S3VZbE9sV0ptRTZ6UFBjc0p1TjdXRmlGN21lNURPQXdzNE95WnlHNlRPc3IvS1F6aURhSm0vbWN5MlYxVjArVDBKZVh4cXFscldDOW1HR3kzTzZ3d0ZhSTBTZFIrRU1nOUFFQUFDSUFCeXFWaVpiKy9wcmdGZE42cWIzMDZqM2xUV3MwQko3NlFqdzBrdE8rM2FkNjBQUWhNcmZNOVl3cUs3bFVQZTRqKy9PUjQwY0RhcUplSit4bzgwSnNXaWgxV1RCQWNiOHlzS3JiK1Rmb3dRS3kzdjU1d2JCa2s0OUZKYlF1c3FyNHNuYWRMOWhFdFhDM25PMUcxSEc2VWZ4SWo1b0RuSmxIUE9WVkFlcldHbXZZUXh3YzcwaGlUaDdCaWR5My8zWkZFNmlzeGY4ZXBOaFVDbDRuNWZ0WXFXS3pNUDNJSXF1YUZucXVYTzBzWjF5bi9SV3E2OVN1SzZHZFBYT1JmU3o0SFBuazFiTlhPMCtVWnplNUhxS0lvZE5Zd25IVlZjT1Vpdk5jU3R4ajRDR0ZZaFdBV2dYZ211RjRKemRNaG42d0RVbTFEcG1GeVZZN0l2UXFlVFJkb2QydjJGOGxObi9nY3BXK3JVc09pOW1BbUZ3bFNvM1B3OUpRM3ArOGJoZ25BTWtQTTYxM0J4T0JRcWMyRkVCNFNtUFFTQUFBaUFBQWlBQUFpQUFBaUFJQUFFUUFBRVFBQUVRUGNvM3dJTUFET1hnRmhPVGdodUFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJGSURPXzJfMCJdLCJhYWd1aWQiOiI2MDI4YjAxN2IxZDQ0YzAyYjRiM2FmY2RhZmM5NmJiMiIsIm9wdGlvbnMiOnsicGxhdCI6dHJ1ZSwicmsiOnRydWUsInVwIjp0cnVlfSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0IjoxMDAsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MzIsInRyYW5zcG9ydHMiOlsiaW50ZXJuYWwiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi0yNTd9XSwibWluUElOTGVuZ3RoIjo0LCJmaXJtd2FyZVZlcnNpb24iOjE5MDQyfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjAtMDgtMDUiLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IldpbmRvd3MgSGVsbG8gU29mdHdhcmUgQXV0aGVudGljYXRvciIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMTkwNDE4MDAzIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjMuNiIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4xLjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjAtMDgtMDUifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIwLTA4LTA1In0seyJhYWd1aWQiOiJiMTJlYWMzNS01ODZjLTQ4MDktYTRiMS1kODFhZjZjMzA1Y2YiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6ImIxMmVhYzM1LTU4NmMtNDgwOS1hNGIxLWQ4MWFmNmMzMDVjZiIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJTYWZlS2V5L0NsYXNzaWMgKE5GQykifSwiZGVzY3JpcHRpb24iOiJEZWVwbmV0IFNhZmVLZXkvQ2xhc3NpYyAoTkZDKSIsImFsdGVybmF0aXZlRGVzY3JpcHRpb25zIjp7ImVuLVVTIjoiRGVlcG5ldCBTYWZlS2V5L0NsYXNzaWMgKE5GQykifSwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNuVENDQWtTZ0F3SUJBZ0lJY2FEYXVUUjZBSTR3Q2dZSUtvWkl6ajBFQXdJd2dhb3hLakFvQmdrcWhraUc5dzBCQ1FFV0czTjFjSEJ2Y25SQVpHVmxjRzVsZEhObFkzVnlhWFI1TG1OdmJURU5NQXNHQTFVRUN3d0VSa2xFVHpFWk1CY0dBMVVFQ2d3UVJHVmxjRzVsZENCVFpXTjFjbWwwZVRFUU1BNEdBMVVFQnd3SFJXNW5iR2x6YURFUU1BNEdBMVVFQ0F3SFJXNW5iR0Z1WkRFaE1COEdBMVVFQXd3WVptbGtieTVrWldWd2JtVjBjMlZqZFhKcGRIa3VZMjl0TVFzd0NRWURWUVFHRXdKVlN6QWdGdzB5TkRBeU1qY3hNakUxTlRWYUdBOHlNRGMwTURJeU56RXlNVFUxTlZvd2dhb3hLakFvQmdrcWhraUc5dzBCQ1FFV0czTjFjSEJ2Y25SQVpHVmxjRzVsZEhObFkzVnlhWFI1TG1OdmJURU5NQXNHQTFVRUN3d0VSa2xFVHpFWk1CY0dBMVVFQ2d3UVJHVmxjRzVsZENCVFpXTjFjbWwwZVRFUU1BNEdBMVVFQnd3SFJXNW5iR2x6YURFUU1BNEdBMVVFQ0F3SFJXNW5iR0Z1WkRFaE1COEdBMVVFQXd3WVptbGtieTVrWldWd2JtVjBjMlZqZFhKcGRIa3VZMjl0TVFzd0NRWURWUVFHRXdKVlN6QlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJLalhiTjJxME1rVnNsbzZTekk4Zzc5ZHcyMC8zKytRUmxyUWhNM2h1cHBaNWk1RWxTRml5d3pXaHBpZzgxQXEwU0l1MkttbFRZcHQ4Nm1MTCtkQVo1R2pVREJPTUIwR0ExVWREZ1FXQkJTMEdDd05NaTZ2V2FKbEJyeStnT25oWXNydG9EQWZCZ05WSFNNRUdEQVdnQlMwR0N3Tk1pNnZXYUpsQnJ5K2dPbmhZc3J0b0RBTUJnTlZIUk1FQlRBREFRSC9NQW9HQ0NxR1NNNDlCQU1DQTBjQU1FUUNJR1pjbXFtQ2hYaTFoTDlkWjJYcjZOS08zaHlmTkJsNzVaMk1peHM5WFRxL0FpQjc3NTk1dkd1MFFxOUg5QUM3YlVYcDRQbTNTTEh1aytrQlk1bnZ3TVRueUE9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFNZ0FBQUJHQ0FNQUFBQytQQ3NFQUFBQWpWQk1WRVZIY0V3eVFVNHlRVTR5UVU1Y09FVXlRVTR5UVU0OFAwd3lRVTZUS2preVFVNHlRVTR5UVU0eVFVNHlRVTR5UVU0eVFVNHlRVTR5UVU0eVFVNHlRVTR5UVU0eVFVNi9IaTYvSGk0eVFVNHlRVTR5UVU0eVFVNHlRVTdBSGk2L0hpNi9IaTYvSGk2L0hpNHlRVTdBSGk2L0hpNi9IaTYvSGk2L0hpNi9IaTYvSGk2L0hpNi9IaTR5UVU2L0hpNWp3NFI3QUFBQUxYUlNUbE1BdS9RU0JkbnFDaG9DNGZ6QVFmbE1KdE5nTW41V295dWp5b3FWYmJVK0h0Z1I3S3l2bVl0dFY4aDdTYnlMWm5SeUFBQUluRWxFUVZSbzN1MWFoMjdqT0JDVjFhbmVyV3Bia1Z0c0svLy9lY2NtaWxSeEFoek9HeTl1c01BNm9qaWN4K21rSk9udEtIWXNrY0lxbHQ2UlFHcjF2YzM5Ni92UWYwc2trcXYxRXdxRDk5Ukp2QWs1a2lHUzZqMVZJaGtLUjZuZTk1cjBGNUJSOUwzOE53QUpvTXZvYnltNTZVYzhOZEJIbW5mRTRZZWV6UkdLV25MNmhpSExES2ZCdC9kSzlSMFZJdHNpZVZwdHZLVnZRN2RJZWZMZk14dEs5K014My8wTjBmYjY5ZldWYjNuYXEyOEpaUHNCa1h6d2REaHQzN0xTT24vTjZQTXRrZXp6T1pMVERLNkxjbVVhLzJxcmErL25uS01qdExXUDZUdHEwNlBRckNlL0VBbmdmM1BVUHFCS0ZvQmcwbjloOXhnbHNUTEI4RDBRN3hjMmoxV3ZPNGtwWGZJSkhTR093d3hJRlliZXJ3VUM1WEtsQlZmLytqclAzbFlVYy9PTGdjakxRSTc3cFFuWjd3WnkrcGpTNGJ5STQ3Y0QyVytuMUFMcEhZRThqOHZRT1V6VFZNQWFFQU1OTDFiOUFFOVVWNDg3bmd6U3VZdjd1Y0IxRlFnL3phOGN6YktLTEZJV2dDaCt1UWt0Uzl1VXJqRnJEcklDVGV6cW9TbFFvaHBTR3VEenA2U0I4OEltaWFtd2Fvb0dJL0tuaWVkcVJaWXFjNjVJbkhEa2FzQ0pEcEtyd2d6TWxZM3hIWTgyalhhUmdna1FJM0xrb2FlVU95RlJCcVhGMmswckllSUVPdVlUeHBKWjZnTlh2U1JMSzZSTjFTT0lLU3Jzb1ZQZENGek5STE1aVnpyUkZBNFhWL1JpSkRMM2tsNExRSUNaZVR3UEsrVlBBWVRPdVFsR0lIMWZCaHQrMElrNUlIMmhLQ1cvcU1ZaGNRdUI2eWI0S1JBMW9aTFNFd2xkNDRGUWNUeEwwNGlFT3ROVlJCN0ltcVlSb1RZbUI2UnJLRk82ZUJGd1FMU2dFbzhQR21helBsR3liQTFjbmVDSFFDTHlmbGltZmxvTjd3OUFsSVpZVkJvb1NseHIzSUV4Y0hXaWU5ZFVURGZEVE5CaGhwazFXRm9kSXBDYkpFMlREVm1nZzdJYVZZTU5Tc09iWjNWbFVoS3Jsb2Z0Y1MyT2E0Vm5WcENyVVNjSlltdG5DYUtsTHAyY3JzalVGb1BNRm9Ba3hLVHBmc1ZZNnlXWmgzOFAxcTNXYUUwZDdaU3F4dFJ6Q3Q4Z2pvbzN3SXZ3SUo0bncwM1F5d0JGSmFVbTB0S05jL0JFeWhWZ3BROGdzNmRSQzlSNEVWYTJLeGtQQklza1I2UDlJc1pXd0NBV2JHdlVjaFNIMnNFNFNMYlp3ZEhBb0s1aitYeFk3UjJ5VjdVdFhCSUF2RXFHaFFQUGdTaDRZN014ckFZaEI2UWMrUkJ4RVRNN0doUXBjMEU2UU1KcTVnaUVINHc4SmdRRk1ycWE1TXBzSnBiR1M4VnpYYnB6M3dCeG1Va01WSTlBTUY5aE1MTHB2cWVlNEtLMEFTRHJZQ0IyeDZVellqRUpCeVRoakhzVTFwZVo1cWhLTW9ic0d5QllkeHMreitHdEpVQXd5c0kwUnNKUGtCbGdlMGk0RVFNL3FVY2c2V3laUm1WQXRHQmlGS1NUdzYrVlBOZVNvZjRHU0RmWkhyb1NBUkpoSTNBNEtwQWlRb1dLRS9KREZ1T0VnZWpCVFBHaHdvRHdOMHlHTXdCUnNUUWF4M1NEdU5yVkQ0QTRnOUZQR2hpZmJkQ2NOSVVsaENtVkRFZ28xQjFZemRoOENKQm9FWWhSTEhQOUNaQmlYaUVtN0ZHMUNzVFV2Z1BpR0xNZ3J6TWd2RHlBQVFGcjIvTmpJTzR6SU5wbVNwVkIzYUNZRGFVL0F5S2NiWXdhd1c4dGNJMStDRVQwU3h4ekNaQ1NwR3RqUXVvUWZkMmxJUXFrRUV4cmpFd3pJS05HaU52TC9qTFhiNEEwTE5hSUVjOW5rYmhiYWlmdzR2YktQUkVYVHdlSzlTRlhQTk1JT2NPSlZsTDNjeUFrNWZHOURUWlVMdnhhd1ZxN3RuYTdiV296eDhQNUIwZjVaeHFaSldDaHVIM2V1ZUtjeTBkMWtwVElCRktIMVl2ejdGV01OQkpVVXlGSUpIaW1FY24zMWc4SFFUWVBzTktrQnVBVENWbVRMMUcwWUtGRHBzS3E2MEFzdnNmUUdjK25HaUU3bHhucnhyUDZpUU9SMjNJblZmMVFOT0pTdmVFN1N6Y3h4bHd0MXh3U28vWjVJSDNIM0IwZmxWSDNmNm9SYVZMQ1lxNkRKMFlUU1plS3JUNms0eXJ0bHFnZmc1TDBOcTdLMmxDTFZqNmtqQi9LZnpqVDdleEM2RXZ0aWlJSmNNSzJhK2xialVnbUxzcThhakFDTmM2OG9SZ211MXE0SzJjWktzbDZPbXhsek1CSERSTHVkSndraVZsajFldFpHcURoTXNURkYvRWxBamxNM0VBeDQ2aERmeVpBNkV1ZENQZGpKTTAxaXZSRUkzYVhKQ2FyK0dIblJiaG1PdTNYbVBIMGVwZlVpeTRmMExwQTFrSUwrMXBIeFVCK0JRS0h0b3g2U0laSGg2UEtnMTFwcU9ta0h3dkhNbDdIVlpKVmhMcllscTlvQkwyTXJTS2RjeDJjTkdibFJMZW9rMWlvY09RbzRvQWd1N0RGZWtGUEJ0dFBwM1ZLNFk4YUNXdEwrS0xLbFZhQWpEY0E3dEtSQnB5YXFtSS92d1lFOXJmamlZWVcwVURHRXBOU2h4d1V1WFBIcEJOVU9uL0FrcGljczJ1bVgzQ3pBc0dRWkNIQzFoNm5rUm5YY2d5YUlPN2taMEFrdzg4czJiTTl2Y0J0dlZzMWlKZ2htbEdud1dGYjFndnhpQTZvY2Vub3NtMTdzdFhVd1hCMlNZSEF5RkRva0t1c1pmNDR5eWczVGRNSkVkMklNclFlZXdqaXhNSHlFSzdDcTI3U0ZXRllybmJ1cXVtbXFSOFBScU1pQW1QbU1NellSNThZS0F1OWNnQm5wbTVnVFBJSXJrY1VOTTAxVlhFdFNMUDF4WWZBbUhObGxxZ29pdkd6QzdyRjhlOWVrSmFBdk9BMjhiK2sveHlJOUQrUWZ3R0UyU1FBdk4reDUrVC84UzNPTmVtSUNnQjlPbm4zbFVEMnR6eS9rTDdvZHN6ei9FNGRGbDM1a3d1ejdRbjlkejlqLzFVdnA5UHBRaTdTOXVRTGsvMHB6K0hNRzJLeVErK3F0OHZyZmFROW51NzNLd2FpSHZQZGJrZGtiTStQQzN6ZW90KzdBNUwzOG9uL01CNm43ZjJSWTFEN0EvNllxZDN0Ym9mcmJvdUVieDluSU4wUHU5ZHJaRHN1cWg3SEsrUWI5eEhNQk1nTmF1ZXc1NEJBdWg1YUdxaDJoMTM3dUx6ZVIwQjdQTjdiQWNocHU5M2l2VzQvYjlJNkVPTjJSTCtCQ0lTNnpUa25vNi9XQ05qZkhvODdJRUFPeDJOT3pQNXdYUVh5ZVg0OGlMcVdnRWo3ejhQdWowUXRBTm9ibGhTWmx0R1NpK1Qyc0s2UjArN3lpVVZkMUlna25ZL3FId3EvVU96cnhFZkErWE84NFNmcU9lV0ErVWgrQXFzYWdVREFpNEhnTS9YdDViNmpVdk5SYTM5OFhIWTdITFdBZXY2OGI2a1dNQkJ3SmM2KzVZRHMveHdRY3BXRjBzaVptRHpKSTlRNTJpdk1EamV5enkzTUhXY3FzM3ErY2dsa0NHMjcwNmlSNisybFFMeHlyS09YSzF5VXE4ZHNMdVI3TUNSd01DOVl1Y1QvQ2lCTjlKNGZzTTc2dE9EMWEvNERzZ1c5R1ZvRFFvSUFBQUFBU1VWT1JLNUNZSUk9IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMV9QUkUiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6ImIxMmVhYzM1NTg2YzQ4MDlhNGIxZDgxYWY2YzMwNWNmIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6dHJ1ZSwidXAiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZX0sIm1heE1zZ1NpemUiOjEwMjQsInBpblV2QXV0aFByb3RvY29scyI6WzFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjYsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6OTYsInRyYW5zcG9ydHMiOlsibmZjIiwidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN31dfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMDItMDYiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJTYWZlS2V5IiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNDAyMDYwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0wMi0wNiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTA0LTI5In0seyJhYWd1aWQiOiIzMGI1MDM1ZS1kMjk3LTRmYzEtYjAwYi1hZGRjOTZiYTZhOTciLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjMwYjUwMzVlLWQyOTctNGZjMS1iMDBiLWFkZGM5NmJhNmE5NyIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJPbmVTcGFuIEZJRE8gVG91Y2gifSwiZGVzY3JpcHRpb24iOiJPbmVTcGFuIEZJRE8gVG91Y2giLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MiwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9pbnRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo2LCJtYXhSZXRyaWVzIjo1LCJibG9ja1Nsb3dkb3duIjowfX1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sImlzRnJlc2hVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZWQiOnRydWUsIm1hdGNoZXJQcm90ZWN0aW9uIjpbInNvZnR3YXJlIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsImJsdWV0b290aCJdLCJ0Y0Rpc3BsYXkiOlsiYW55Il0sInRjRGlzcGxheUNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbiIsImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlCMXpDQ0FYeWdBd0lCQWdJRWVDb091VEFLQmdncWhrak9QUVFEQWpCcU1Rc3dDUVlEVlFRR0V3SlZVekVRTUE0R0ExVUVDaE1IVDI1bFUzQmhiakVpTUNBR0ExVUVDeE1aUVhWMGFHVnVkR2xqWVhSdmNpQkJkSFJsYzNSaGRHbHZiakVsTUNNR0ExVUVBeE1jVDI1bFUzQmhiaUJFYVdkcGNHRnpjeUEzT0RVZ1JrbEVUeUJEUVRBZUZ3MHhPREE0TURFeE1EUXdNRGhhRncwME9EQTRNREV4TURRd01EaGFNR294Q3pBSkJnTlZCQVlUQWxWVE1SQXdEZ1lEVlFRS0V3ZFBibVZUY0dGdU1TSXdJQVlEVlFRTEV4bEJkWFJvWlc1MGFXTmhkRzl5SUVGMGRHVnpkR0YwYVc5dU1TVXdJd1lEVlFRREV4eFBibVZUY0dGdUlFUnBaMmx3WVhOeklEYzROU0JHU1VSUElFTkJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUU3cGdFdis3cEJXM3ZhZmkzQUdHSlJjVXdmTHJMYnZiZm9vMFpaczRZLzE4ZHhQUHNyOTd5UDhxR1BlVlZ4QTVjcXR2RFowZTBVcVJZTnJ4WUp0citTS01RTUE0d0RBWURWUjBUQkFVd0F3RUIvekFLQmdncWhrak9QUVFEQWdOSkFEQkdBaUVBZ09xUHBTbStqK05sNm1xamk2YTlpYnR5UzZXTnFXeGdRM05JLy9ucS9Yc0NJUURvMXVIZ2o3NllUZmpKUFFIdEdPY29zMkMzdXBVZlNNaVpLUWdwY2xyM2dnPT0iLCJNSUlCNVRDQ0FZcWdBd0lCQWdJRWVDb091VEFLQmdncWhrak9QUVFEQWpCc01Rc3dDUVlEVlFRR0V3SlZVekVRTUE0R0ExVUVDaE1IVDI1bFUzQmhiakVpTUNBR0ExVUVDeE1aUVhWMGFHVnVkR2xqWVhSdmNpQkJkSFJsYzNSaGRHbHZiakVuTUNVR0ExVUVBeE1lVDI1bFUzQmhiaUJFYVdkcGNHRnpjeUJHU1VSUElGUnZkV05vSUVOQk1CNFhEVEU1TURReU9UQTVNVGcxT1ZvWERUUTBNRFF5T1RBNU1UZzFPVm93ZVRFTE1Ba0dBMVVFQmhNQ1ZWTXhFREFPQmdOVkJBb1RCMDl1WlZOd1lXNHhJakFnQmdOVkJBc1RHVUYxZEdobGJuUnBZMkYwYjNJZ1FYUjBaWE4wWVhScGIyNHhOREF5QmdOVkJBTVRLMDl1WlZOd1lXNGdSR2xuYVhCaGMzTWdSa2xFVHlCVWIzVmphQ0JCZEhSbGMzUmhkR2x2YmlCTFpYa3dXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUWZmMWxISTFCM1ZFanpnbitMTGdhQmpEYjU0ZUlKV3cvajN6VFhhVDN1bkVJWHBHUWptQjFLOVI4S2EvMTBnYjR1MkJzb1lYbHJMZnhHN204ek5VRmxvdzB3Q3pBSkJnTlZIUk1FQWpBQU1Bb0dDQ3FHU000OUJBTUNBMGtBTUVZQ0lRRHZxUUlXLysrdWxBbVlUTnZpNWJZZ2RkTDV3RkEzMjU1VkRLLzJnMVhRT1FJaEFPbzREeHF5UzI0Um5Sbk9kN1hXaXZ3T0xkSkJtQkJxTzJJNnM0T3lpbTBjIiwiTUlJQ3VUQ0NBbCtnQXdJQkFnSUpBS3E1Y2paWXhJNEFNQW9HQ0NxR1NNNDlCQU1DTUlHNE1Rc3dDUVlEVlFRR0V3SkNSVEVRTUE0R0ExVUVDQXdIUW5KaFltRnVkREVZTUJZR0ExVUVCd3dQVTNSeWIyMWlaV1ZyTFVKbGRtVnlNUnd3R2dZRFZRUUtEQk5XUVZORFR5QkVZWFJoSUZObFkzVnlhWFI1TVNJd0lBWURWUVFMREJsQmRYUm9aVzUwYVdOaGRHOXlJRUYwZEdWemRHRjBhVzl1TVIwd0d3WURWUVFEREJSV1FWTkRUeUJFVURjNE5VWkpSRThnVWs5UFZERWNNQm9HQ1NxR1NJYjNEUUVKQVJZTmFtOTJRSFpoYzJOdkxtTnZiVEFlRncweE9EQTBNVEV4TWpRMU1EUmFGdzB5T0RBME1EZ3hNalExTURSYU1JRzRNUXN3Q1FZRFZRUUdFd0pDUlRFUU1BNEdBMVVFQ0F3SFFuSmhZbUZ1ZERFWU1CWUdBMVVFQnd3UFUzUnliMjFpWldWckxVSmxkbVZ5TVJ3d0dnWURWUVFLREJOV1FWTkRUeUJFWVhSaElGTmxZM1Z5YVhSNU1TSXdJQVlEVlFRTERCbEJkWFJvWlc1MGFXTmhkRzl5SUVGMGRHVnpkR0YwYVc5dU1SMHdHd1lEVlFRRERCUldRVk5EVHlCRVVEYzROVVpKUkU4Z1VrOVBWREVjTUJvR0NTcUdTSWIzRFFFSkFSWU5hbTkyUUhaaGMyTnZMbU52YlRCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQkxEY1lpdUM5MkxSaXlxYUdBMU1SSUg3M21nT3BiZ3d2b3hzcituUEJqKzQzOHVJQk9NbjlwNGlUM2pLZmNCYURQczQ0K2dnMnRmWWxxRm9kN3JORnNHalVEQk9NQjBHQTFVZERnUVdCQlNlalQ5L2s4TE5GaCtWNHM1ZzRTYkUwTzM4VVRBZkJnTlZIU01FR0RBV2dCU2VqVDkvazhMTkZoK1Y0czVnNFNiRTBPMzhVVEFNQmdOVkhSTUVCVEFEQVFIL01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lRRFVNVlhkNFhTQTFicis2bjF3MlFrOVRjWDVvdVpEVmNhSHNGRERteDF6dFFJZ010RzNvQUJoNmJHVnphTE44MEh0a3ljV0FHVVZTdDdrRGRRWUlqTnpUQ1E9Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQURJQUFBQmFDQUlBQUFCMStwTFJBQUFBQ1hCSVdYTUFBQTdEQUFBT3d3SEhiNmhrQUFBQUIzUkpUVVVINHdvWERoa2xBZURrWGdBQUh2QkpSRUZVYU42Vm0zdXc1VmRWNTc5cnJiMS81OXg3dSsvdDI1MU91dE9TcCtrUTB1YkpTekFCQXo0QXhRRkhtQm10S2FRWVFSMVJxMGFuUkJKRlFNc3BBYUZHQlFjSkQzV3dpRVRHaEVmRWlFUEdCSGwwaDZSUmt1NDh1anY5U1BmdDEzMmQ4OXQ3cmUvOHNjL3Q3dURNVk0ycFU5Mm56cjNuZC9kdjdiWFdYdXV6dmtlZTNQZmszWi83N0RlLytkRGkwdW1wNGN5b2o1bDFRNFdxcVlvNDJhbGFTa0VJbUZJWERFdEdocW1hSlRGUlVhR0lhcGZOU1lHWXFvamtMZ01DU0ZKVk01QWlvS2dxREJLa2l2UVJwcVlDVWVsU21wcWUybnJodG10MzdFaTdkbjM5OWovNThNS3g0eEROZWFpV1JPQWtBeWxwa0xVdmdLcWw4S0ttQUZRMWdrSFNDd2hOR1FJR2sxa3dSRlJBSjRVMDAxcGRWVWd5V0NOVVFVSUlnb0JFZURMeldnTVVZYTFsZm03Mk45L3hqaFFSSkVtQ0FoRkxIVVNTRUxSZ1pmaHdPT1VSNFpGTW5UQnBONnFNS3ByTVZFVGNRMVFJU1pZRFFMaEFWQmhrc2tTQlNKaDJBeUFpUkFEQXd3R0lpS2d4dlBROUVTUUJoTHVDU0tZQVJBbUFYbFVZUkttaklGVFV3L3ZTUTBGUk13MVFRQW8wbVVmMThBaW5BS0lSQVhwV0FFd3FJaERBSWFBSWpRd3kxRFFRRUJHSWlwb2tlaEEwVllpcUdnVkU2TVVYWHhwQmtCQ1lHUVNNWU5SQlRtWmFTaEZJMTNVcGFiSU1NSm1xS3VoZ0RMc3VtUUZpQWpNeFlRQWViamxGQkVSRjBCbFVSVlZ5U2dBVUFNeE04MkRZcFVTaG1JWER1dHcxLzRPUW9sdTJidlVhQkJoT1FOWGF6dmUxQ2lNbkRVYlVBcGZ3a2pTSktBTWlGa0ZOT1lqY2RSUTFGVXZKVEZOS1FscFNNc3hTSlZSZ3FsNXIxMldBSmdpUDhCcWlTVFM4ZGwxR2dNS0lFSUNNTkJnTWF1bEZKS1hPYTgyNXF6VlNzbkNxUVd3WTQxSEtIU0ZkeWdSQWlxaElXT3FTU2JKQmlSZ09Pb0dHaHFtU1VZTTVaN01La2F3MHphQ0xKa0lvS21xcVRLS2xWTzBHaVVGM0tyd0hWRVJWUlJOSWlnQVMxYTNMQ2d3R1F5Qk1BUUxpYXBwVGhvaXFsWDRVaERBc3BhUXFZQkREM0VXRXFOS1J1K3kxVE9jdXZJU21uTHRTaXFrS2pDQUFVUk9HV3FiWGxLelVNZFJFQUErSUNCbmhJa2d0aUNKY3M1SSs3c2NwSlJHQldnUnowa0dYU0lyQ1REQVlBR3FtREVmQTZUa2xVU1FkUksyRHdjQkxHUXlIcEVxWFM0Mm9SUVFwZDE1RE5YTE9vOVd4NVZ6N0lncFJ5NkxWSzBNWTFRUmpBa1FFVTBRb0lBS0ltbVcxUklHbHBCQWs2N29VNFNKcWxzMHdHdldXTWtETEdSRUJBRXFFaVVUS0tlV1VjODZwOURXQ1hRNFhRSkUwcVhoRW1PWEJVQXhpWnJWV2VFMDVBUnpWa3JyT1N5R0RBSUVVREUycHVUeEVJaUpiWmdRc21RbENKRFFBUnNrMkdBd0hFQnQwWGQ4WG9wb0lHZTVRTXpHeG5NcDRWSXQ0MU9tcG1iNzBDb0ZCSUdxZDJYQ2xWQlBwUzFXVm5HeGNTMVN2dGU5eWR2Zm03NkpDTXBGVTBGU2RBbEJVUmNWVUJhd2VrTjRzbVppcTlPNEdpTXJLeXJLS3FTZ2pMSm1rTEtSQ0VPaTZhUldrbktyWHJrc1lEUHJ4T055N0pCNGg3cFp5R21vcHhTUFVsQXhWcSs0cUlxb2lDZ3BKRlJHcWVqQ1pxSWdBcWtLZ2VrMHFxdENrWWtwd09FaWlCa3N6VXpOcVlwWWtKNC93VWlNUWhOZnF0ZlJsSkVDeU5CNlYzb09CbkRxcWdkRU5Cd3dQMGgybDd5TmdtaXlacVFRSkVSRkVSREQwOUttVFdVMGhYajJjWGM0UlZOVmtSaGloSXBvRXFrcE1qRmhLSHg3alVtcDEweVNxSGw2OG5Xc2dVV3RsSU1JVFNMQjREYTlkTnd5dlZERXpOWFFwQzFuZEl4Qk9GYTIxVUVSVkVFeGYvL3JYcWpzUlpobUNZSmhhdUpzbGc0dFlMYVdkUWlyYVY2L2hXYUJxWG91YXJZeFhVa3FnTXRnamVvWmFvaWs5K3I2MHhBRmkzTmRTZWhIclM1R2NoSVJab3RDa2xqNEVYbm9UZFJBUUFLa2ZqejJDa0VvWUNVaTRMeTR0ZWkycWlYU3pKR3FXTE56RlVpMjlnSGt3N1BzQ3VFbk9PZFdJNm1GQ0VHcFF6V0JBamVFQWNzcXIvVWdoRVZBSnFJYTdxcGtJd1c0d1ZDQkVWWVVFdzkwOWtTRWlrOFBWdEpVcmorOTlsQXo4L3ora2xRZlBlQUVBSkFDZSs1dnRIUkc1NktKTFptYm4yMGFKbW9pUVNBRk84aThFdFZiTlNvb0tIYys4eXNTODdWclArTkhhRDg0dVNLQ2lrRlk4U1BzNENiSmRwejBDZ0VCYmJFVWx6MVEyaUFTSVVBUWFFWlpUVnZFS2lCQUtVQ1ovOWR5bG5MVkh1NGladnZZMXI3M2xsbHU2cnJ2L2dRZnUrTlNubHBhWElSQUJ6bGxIV3hiT3Z0SHlrVmpLZlhVS0kxd0FCZ2xSVUFJa0F4Q3p0aUFSVVFqUFdJSVFRaWlDYzU3TnhxOTk3V3QzN3R6NXlVOSs4aTF2ZWNzYjMvakdQLzdRaDNidDJ2WFdYL2lGU1ltM2RqTmt5OTV0VFdkdlRDQUlhdnNyTWFua1FLUmdDS2lxWmlxaTdqVWl6dHphWk0rNDVpT1Rtd1JBVUY3NXlsZDg4SU1mM0xCaHcrN2R1L3UrRjFFeU5tL2UvSzUzdmF2cnV2ZTg5L2NFNSs2Z3JCbnFIUHNCSVJKQ0JsVGdFU1FpSWdsRG9DQkxLU201YUFiNWYzRXJPYk1ta2dMY2V1dXRHemR1Zk9DQkIyNjQ0WWJCWU5BTXNMQ3c4T0NERC83c3ovN3N4ei8rOFNOSERqOHpJTmFzc2VhVkpOZDhnVEtwTUFHRXFxVkpEV1VKYWlwckJsOXowWE1EWjNMYkpJZ1h2ZWhGMTE1NzdTT1BQTEo5Ky9ZdmZ2R0x2L2lMdi9pbU43M3BFNS80aEtyZWNNTU5CdzhlZlBPYjN6enBSTWd6TGcvdzdMVW5vUWFGVURTS0EzU1N3UVF3SUF6Q1dvbG1VUUlRaUtMbENMTDVOd2hwV1J5QTRDVXZlZWx3T0R4eDRzUWRkOXh4NjYyM2lncUkyMisvL1RXdmVjMkhQL3poSzY2NDRuT2YreHpPZGZFempucjJQa0hDUGFyWG5MS2JvYWVwVklaR2hBcFVBVklpdkhxWEVxUmxkVHZqVWx6YnZUTWIyeExiM3IxN2I3dnROaEhCSlBidzZVOS8rczQ3Nzl5MGFkUHM3Q3kvd3gvT1dlT1o0RW5KY2phR1R4SVZxYUlhN2hITmRGSGRhL1Z4S1pJU0xNR1NxRUgwVEY3aW1mVUI5OTEzMzJnMDJyRmpCMGt4czVUVVZGUkU1TDc3N291STdkdTNUNVo3OW9tSnVjL2tDQUU5d3FHVzFFU2diRTBSQkFoWFFFMUpOcmVXRFZzSEYzNjNUcTJEWlZFVFVVeWVNckdKeUJYYnQrL1pzK2VhYTY1NTMrLy92blk1RGJzOEhLYWNYLzNxVjcvdWRhOXJsbWtCYnFabjRwakVtbVZGRmFZU0FGVFk2aWlJUUFFa3J3NlY4QWhXVlU4cElUVFVhcDRlYkwxay9QUis5Q1BXSW1maklGcmI5STF2ZkdNMEhwODRjZUkvL3Z6UFgzZmRkVis0NTU2VEowKzgrRVV2ZnVVclh2SFk0NCtyNnNNUFB6dzFNekRUOE9qSHBkWWFNWEVLVlRIVkx1bjB6QlFqaElDcG1XakxZMkJTVllGQ3hDeXJHU0JrU09yUURZcFh5MU1PMWV5TUtwUGdkWW1RbEw3MTVMN0YwNmVQSEhuNitQRVROOTkwMDB0dXZobEFST3pjdWV2S0s3Yy8vZlRSMnovMjBibno1cWFtQnVIMTlNTHBwY1hWVXB5a2lKakpoZWZQM25UZGZPbkg5eitxUkVnSVlrSUFBQ1F5QUlvZzJXVHZWUlVrUzJVRUNOYVFiS0lxWGFjcGljQnlScmdLZnZPM2YrZlBQL2JSNmVucG5ic2VUR1lFd3YycTUxeVZ6Tjc3M3ZlTlltVm1kanAzSnN6MEd1NnJxOFhkQVhSZHV1cVNXWTZXRjArN1lDQlFoZEFzZ2tBSWtLb1RnSWdHSTZkVzJpZ2pRQ2JXZm5Xc09ldGdXaExvUlZMU2xHeHFDclVJK09EK0F6LzVoamY4em0rOTg3azMzcEJ6YnY1MDRLbW4zditCRDN6cXJrK3QzekNUdTZRa0dJTkJ0MjdkMEV6SDQxSkx6SzJmMm45b2VWK3RLeVBuTkNQQ1RFU2dLZzBFcEJhMEFyR1VWUlNpZlJtYm1LSFcwd3ZTRFhXd0RoUVlMYWNvWXdKUmk1a0p5RnAyN2QzN3FqZSs0WHV2dk9xV20yK2FucHArOE9HSDd2N0M1MndvNithbXU2dzVxWUoxWExxa21CbVlpcW5JRkd1dEo1YWoxcG9vUmxneWlESUtSRlRXV2d5Q3poQ3Z5YXRvTWxFdUh5OUxvS3NOWnVoUUkyc3ZnL1RUUC9hcVU2Y1hQL1BsL3lVNVNRUzhpa0RCYng0NThPMjdQLzFkOHhzZmYzeXZUbGt5YVh4ck9FeURCSlJVcG14MVNiRXViOWw4L3VIRHA0NGZYODI1bTQxbENSd1NKUVFSZlNXRFFnQklJcGdjOUJHQWlBS2tqMWRsTUMxbXdnb1I3NHNPN1Axdi84OTF2RG83TzdmOWlpdjJIejU4K1VYUHV2UHV1d2M1ZmYvTk4vM0Y1ei83cS8vK1RZc25UaDU3enJWLzlkblBuRGMvZjNMNU9Ca1hYSEIrVGpXaFNtQzhOSjZiNFpaTjZkajUzWUVuVHgxYzhGdWV1L25Zc2NNSHZ4a1JJWXFVdFBRQ0ZSSnA3U0NZTEZSYUFRT3lqQkhMSHRVRzY5TDBockhIZWZNYlh2K1d0Mk5tNXFPLy9jNGZlTmt0OTkxMzM2Lzk4aTlkY01HV1BmdjJ2ZWU1ei92blJ4OVpQejM5MEgwUC8rNDczdjNZM3NmbjVtWVBITnEzNVlLdHo3bnEyZmQvNWU5MlhQWGNpUExGTC96eGRUZGVYa2RMLy9UUXQ1KzRhOCtoUTh2amZpYVpEYnN1NklKQUJBUlFWZmNBVktCbUd1NGViRUNzWldITkE4dnJZbVUxYVVEa3htZHYvOWN2dVdrOEh1OTc2dUFIUHYwWmg4ek56UTJuWjA2dmpuYnUrZmJIN3JyejlULytFeWRQblByQ0kvZE9iNTI1K1BMTFB2S1pQMzdrOFc5RDlQNnYvcDNxNlJ0ZmNQT1Z6NzUyeHpVM2Z0L04xOS8wdmRzM3puWGFMMVl2ZmQvWDNtdDFpakFBMG43NGgzOXcxNE83bGxkV3pUUVBwaFNvMVU4dUxWTXpCSGxtbnRDcHpWdFU4NkVuSG52clcvN0RwUmMvNjdmZjk0RnRXN2Q4ZmU5amw1Mi8rY21ubnJyczBrdis3cXYvZU5YMTEzN2Z0VGM4K2NRVGwxNXgrWTVuN3poNjlPZ3g3ditKSC9pM3d6emNmL0RSbWVuMDNPdDNuRHkxY09FRnMwbTViaXF1ZWZhNisrOTdhbnBHSGp1V3VtNlljNjYxTUR6bjlJSVhQRCtSRVJHcVNvSmVxU2J0M0ZPSVptZ2F6bS93NGl6anIrNTU0bHUvKzE3VThhbFRwOTd6OFQ4ZGJKajdvNy85MHV6Mnl6YU5seTU2em1VK1BYam95S0hvVGw4MTRGL3YvdHR0RzJlMnpFN3RQSFRYNnZHbGNUbDIvVFV2SDQ4UFhuN1JMQUhUWWU3bU1EejJ3aGRmOHJFUGY5bnJocFJ6ZUloSURSZENJSW10MHArVVFqSTVsY01SM3ZCSksyeHRacWhaWWFxaFdzWmVTMDE1ZVBGbFU5LzFySTNQMnJacDQ4WU5YWnJOeWVhbmRwN1llOEdXOHpkT2QxTkpWckpQeitSTjNkWWQyM2VjUEgyUVhDbmpjVWlnTE5VeTNuemVjRGhVOUlod1p3Z3d5SjJERUNna2hDQ2plaVVabE5ibndpdTgwc2MrSHNXNEYxUHBPcXFGTyt2WVYxZThFdXZYcCttcGxKSzNzd0pjNnNlYk5zeWxaQ2RYVGo1eGRNL3A1Uk1MVHk5ZGN0bDNuVnhlSEhUbmxYNmxsanBhUGIyOHVHKzhldnowNmZINnVRRVpERFQrVTcyMm9pTTE2TmFhK21Eb3BGa0tlQUhncThzY0RpKzg2c3FqaDQ5WlNocStldUlZekFTYXp0OHkySHkrNWE2VXdscVFzREphT1huNkJKWVdwdVpUalNxTTVTTjQrcDhPTDE1NXdmSEJFOXMyWHp0LzN2TU55cWhMN0ZaV2RqNzAwRUZKQ2RKcVlpbnVyZGNDbUVnR1FnQWhFWWhhRlFDRElTSUI1ZXFKaFgxZmY4QzZhWjJaV3U1WDBIWFExRzJZbTlxeVpXYlRwc0hVY0hZdzJEQTFQYkRvRllzbkZwN1l1M2RxeEcyWG5yZThjR0xQemtlSDJZNGRYdDB3V0Z5ZVBqbTdibk9wSTVEZGNGdk1qT1kzN2NzSEUrbk9hRXl5NVZDQkprc0tTTkN6cUdVMXplTlNKZ1pUdGlxa2p2dTZzdEl2ZGpZOVpaTFQ3SVp1OHdXRHVka3VtWWxNRDRlTC9laEV2N1N5dUhEODRLSEZJOGZyeHNIK0U0YzN6RTA5LzVYWExSODgvcVV2UHZRLzQrRlgvOGloS3k2OU1xa21TZEdmS3NzSG52ZjhpL2NmV2NIdVkzQUdtMmMzN29uRVlGdGdrQXg2VkVHc1Zkb0JVQVl6SkZFcnZZK2FWR1owTU5UaEFGRmpkVm14SG1RaVR2V2pwNTUrNnVsSG41amFQRk8wRjZUTjUyMjhlTXY1c20zcmwrLzY4dU9QSHY2YmV3cGZ1amcvT3owOW5JL1J5WVNsaU02OXRFM0tPVmNmZ3dGUlFTUVJkVVNEZWlUWmhnWGdodG5aODg0N2IrL0JRK3RpTkxWdWFoR3VxcHUzYmwxT25kZFNUNS9TWVRjNnVpNDJ6ejk5OHVTbTZYUjY2ZlNKUFUvMG8xR25uU3dWWm9uSzVaWFZzblJpRlg3azhQSEg5aDdhOS9qUmE3N255cG44VC8zQ2dVMXowK3RuWjhxNFZ4VkErbjdrSHBPR1Z6U2Q2YUJWaE1GczJvdVNlUGM3ZjJ0cWVucGhZZUhDYmRzWThmRHUzZHV2dXZwWjI3WTllZkR3K1Z1MmZPdWhCNi9iY2ZXQmhlTnpjM04vK0xYN2Yra1ZyL3pIcnkvODFDMnZYL2VxNllQSERxMmJtdWxTL3VTWC92ejFML3gzQnc0Y3VPSDFyMXA5MWVyQ3dqRlZQWDc4K1BZcnJsRFVJL3YzYk5pNDhjVE85NHRZTWdzVmdMV3dkUjdhZWs1dEwxUUQ3VDJTTkZXdjNwcTY3Lzd1N1JHTVdvNGNQZHFQUmxmditKNHVKK25IenpwdjQ0YWp4NWFQbjl5L2IxOUtXVXlUWm9VSjVPZ2pDN3QzZjJ2WE54NzA0am5uK2ZuNUxWdTJ6cy9QcjQ1R290MVM3VlpyZm5ML2twZ1c3MDJWZ1FpS2lnZ2JyNE1JMWN6ZDFYSUwwbC81bFY5WnYzNzlzZVBIaDFOVE0zUHpZMXZmMmhMYmRtRzk1TEoxNDZYMWg1NDRmdURBM095NjA4YUhIMzV3ZXV1bW5RZjJyaHRrSGNqaWdjUGowNnVqZnZFamYvcmhFMGRPM0h2dnZjY09INHZnb0JzY1BIamc2cXQzbkRwNVluWDU1T3pjaG1OSFI0UDFOVmwyWjQzYVdscENra0Fna3h5dklyV09XOWU2dXJxNnVqcUM2dXBvWEtZY1ErTjRqQWpaczFlUEhEcnA0N3B4Ym1sMWViV011cGxwMlhyQmhkZGV2WGwrZHZYUXdSTUhENnlzTEo4NmZyeU9lcmlYS0kvdDJiT3lOS3BsVWdIczJyVkxSZFRrK01sRlFJZXo0dTZXRTBadGJpRUNKRXFzOWFPSWlKdzdsNEpuOUlVU1paeG1KWG9uQzV4YzdHbFlPUlVlbnF3VFlPclNiWXVqMWNHeXpjM1BQZmJBTjQ0OGRqRG9YcHkxOU12anZpL2haeUZlTktEdklnSlRDR2lxVVdvakt3Uk1OVFZidGNtanFFRFZhNXpoR0NBWkhxTlZLU3VpTGprRUd1SC81ZGEzLytncmZ2aXY3N3I3RzE5OC93dWZNL1g3VDU1R1djYTY2Uis1YkhYTHRzVS9mT0JVbEJvUkVURmU3Yy9oZytlMjJTUW4zYnpUUmNWTWEzRVZFWkZFYUFNeEVlRWV5ZUlzWVdzcmkwQXQvWkdudXZtTnc1bnBidEJ0bUo1NncwLzk1QmMrLy9uUDNuMzNMZHU3NnkrMzFTOGZyRE9wRHJ1YlhsUTJMSTY5MWdobjhNS3RXMis3OVRkR28vSFU5UFNiZitabituNk1jem5FMm1BTGJNaXdqVWFEaUNSRXU0dWN6VXdKUnVPVEV3UWlBT0dWWHV1Sm8rUHgxRkt0ZjNEN3g2YW1wbWJXclgvRlZYdXV2SFRqUHgvb2h3dUgzL0dLelp2bVk2Z0UrSU12KzZHZmZzTWJadGJOZlBidXozN3A3NytVTEYxMzNmWG40TVFKVDIydnZaVldqRFlTSkFqUkJFRzA0V0swRVNPVHBYTTJzZjFQQUZGcVdWcHh4dUZEaDBnKy9mU1J3d3ZsaHUzOWk2NUt2L0RLNlpkZm0vLzZINDQ5NzlMTkJHOTkrOXR6enZ2MjdYdmIyOTUyODgwMzdkbno2TzIzZjdTNTZUblk5UnpncW9xZ2UxR1pjRDZka0JNMlR3eUZ0TFE3SVRCeWxudEdoTmVLNE8wZitZalhldWVkZC83ZW5jY2ZmbngxYWFVKzU2THVrZjByUC9QZUF3ZVBqVUZjZnZubDk5NTc3M3ZlODU3MTY5ZmZlT056M2VPWlhvVnpsMGF2TmxtdVRCaFZnNVJCQktpTmVaa1NldTZuK0IwYzZBeExpb2grdkxUVVA3QTdacWIwaDU0MzkvNmYyN1psMDJEM2swdUhEaDE2NFF0ZXVHSERocFdWbFowN2Q1N3pvWE1NSlpOWFZJT3c5aE9RNUNTRXFxSU5LNW1aSlFPOUwrVTdydkFkajZXbHBhOTg1U3NMQ3d0MGYrTHc2TEdEbzNmLzJkRmRlNWV2dVdMNm5uOWMrUGErbGR0dXU2M1VzbVBIam5lLys5MjdkKzkrSml6SEdoRmMyMEFCVkZOV0FjR1FJQ2hwd3BFaHRWYTFrS1RKN0F6NmZnYnJYcnZsUng1NTVLVXZmU2xFMU5LSFBuZlNzb25vai83NlhpOEYwU0RtWDk1eHh4My9rcldSa09hdERRbERBRlIzdXF2cUpNRzN3WjI3VHo2bGJUeURpSXAvQ1dKRnpxR0JrNEp0Z3EwcklucTZQd09vaVp3RjhPZThYc09MWnpjaFd3SVFJUk5qQmxWVjE2NUVCSU5RMDVtWjlZUGg4QmtmbGJVQnJhaUlpb28wRVlFSWdsRnFWR2NRUWZEL01YVDV6dkZITThWZ2F1QVJxaE0rRzR5SW1pWVNqU1laTWUxeW5sbTMvdVczdlB6d2tjT3F5bWpsckhpRUFFRXlZaTNNUlZVOUFrMTFFMnQ1aE5FcXR2WkJyRVU3STlUTVZDSW1hdy9HaFJkZUtKWWVmL3hKZDRjb0F5cENTa0t3SFR2UnNvQnplWGxsZVdrUkZHY2trUUJGSkFnRkE0THdkdGVEUEJpVm9tbzVkN1U2S0VRSURLSXdtRWp4OElpVWNrVHQ4ckI0eVNtTlM4bVdXK3FKV2c4ZU9scHFJYW1DUHB5TWx0MVRBQ0lXREJVanBFYlI0Z29oYUpZaklpVjFocW8xL1lhMThwK2dTcElFVVJBaFVJQ1FyaHVNeDZ0ZHptYWFJU0phU20vZFVDQlprZ2R6TjJnejMzRS9ibEloRlVCWW5RSlIxV2FGeEhBeUdoeU1xQmtta09vdUVLSlBLYlhSa0FCaU9Tc0E2V3VmMDhBc3RRanc2b09jUk5RRDRXV1FjZ3ZIM2lNbHBtUVJRYWpsMUxENVlEQXMvVGhaWmxTUWxuTDByRjRFRVI2dHhWQ2VPOFNoVkErQ09lZXU2MFFNcEVjb29LS21NTFdJeUdiSmxGN0pLTFdxcXJ2WENOQmJ2OUJnUVVyWnhHcVFZcXBTeG4zVThGTEhvNUVJQmJTVUNLeU9Wa1VRN2o0QnZpb1FkZmZHbkVrRVF5QVJRZENqQWhUUmxJeGs4MWw2UU1BUVVLRGE5MzB3ek5SVVMrbExyUkNxYUFpRjRhVVhBRTZoajBhamlDaDFyR3BCbHI2QTBmY2wzTHVVKzNHdktoRnRqczZHZEhsR05kWDJSSkNha1FDNGlycFk2dG9SR3FSbEUxS1VwUlFSbUVxdFJWU1NHWUpDbEZxb0dra0E2V3NsSW1nQ3VudEtxZFpTcTZlVVN1MmJEelRmYXR2WHhHUUFrNndOL2tUaHRYb3kwQ0hJcVRNemtBSFcya090UzZhcWZTbEp0RVFWTW5lNUh4ZUlSbkZSVlRLQ2F1TGhYbEdkT1p0N2lWcFVOSmxXai9CSVNmclNnMEd5ZWhYUnRuL05oMFZ0c3RZek9iQ05rNXFpcnBZKzZKVk9oS2taVUdvcGZkOTBndTFZS3pWRXBicTMvcTY2aXhKRXN0eVhudUcxOUtTWXFDcWlFVkdOV29vZ0lPWWVnNjR6a01FMWIyZnJLNUpIblVSaU94cEZxdFBNaVdSQk5xRmdZbFFLS0ZPNWpuc0JoRm9KYlFvVWtqQ2hXTTRoRnJVbVFKdlhhZ0lqSUhYa3Bpb3E0U0VRTWdBMzFmRzRGMHBFcXh1b01vay9qWWptTkFLWXRwRndjMnA2ZFNWeVRxMStkNkJmSHBzbDBVUkFnUWlxS0VSYVR2WUkxREdpa293STBhYWV0TkwzVFlIbjRkVkxDRXA3Vkc5U3dkemxiQ21DMnJaU0pMVTlhOGQ4S2RXc0EwV1RtbVdReGIxNkFFZ3Bxd3JBdnBTbVMxUkJJSkoxcHNsclJLMldGYlFhcFk3SDdjeGtvUHFZUkVwYXE3ZkQ3ZnRmK3BLTEw3cm9xMS83Mm9NUGZ0TURGSHB4QUpxTXRhd05WeUErbWZOVFJkeHJ6bDFERWRHVUI0U21GT0dxTmhrK2lqQUVDSU42VUVrUFY2RDJyaUltQWpNQ1h0MVVDVWs1cTFBa2JyemgrbmU5ODUzYnRtMWJXUjYvOWEzcG5udis1cGQrK1QvVkp1VUVvanBFU0JLU0dIV3luV3BtWnUzQUlqMG9va29SdFZwcXpva1I3b1RBb3dZNTZISmZpb0FndTJ4OVgwUU40b0NZcWtjTnNWSnJ5cG5CS2t5V2Z2TTNiak5kOXljZi9NckpreXNiNW1kZTlvUFArL21mZS9NZi9OR0gyT1FPeVlMUmZDaE5PbGNnb3UxWEw5cmxsRHhnU2R4RjZjbVViQ3JZM3RROHFzQmFKYUVpMVNOcWJiSUs5MURWVWlva1FLYWt0WXhGT3lVdnZmelNTeSs5OVAzdi9memRuLy9Fd2FlL2ZmWDJseXd0dnZwWmwxMFo0VTBrNWM2b3pVYVNTcW5uOUlXdERsSDNzTlI1alp5dERTWkZGSUtjTzlFa2s5QUJRL3BheEpKSWlJaVptWm9JeEtSNmJValkxRWkzWkdJWmtLL3QvTXY5VHoxRThwdTc3N255aXVzV0gwcW01aEVxays0ZUJCaEp6UmlUZWEyS3F0cVZPNjc1a1ZmL3VLbW9LRlFnbG9ES0VCSFR4cWUxemRVNVFaMlRnalVZWkpob01LTDlRc1RDOFdQLzdiKytOOGpEVHgwL2N2ajBiYmY5NnErOTdkY2ZmbWozdjNyTmo3M3M1Yys5NjMvY1B4NlBwV1ZpajhtWUdFeG9IVGVheE1XVDVHOC8vT0RlZi82V1I1aW9tamFLS3BwTTREWGF1TEhVYWltcm9KSDBWdVUydmJLN2s1S3pOU2x0Y2RmVWllTFU0dE4vK2FsL2VOMi9lZkYvLy9NL08zWHExTlJ3M1IxLzhmREJ3M3RTemxIcldaRUZTU0tKU090bHBjbWh6TlRVYTRVQWFtMXJ3d2s0clNsbHd5Rm1DbUhMNEJBMlFVNnRKUUk1cFFpdnhRRWhtVk1pNE80cStLdlBmUHowS1Z4ODhmbXpjOTMrSi9jOHN1ZWhyKzc4ekVUSm9JaEtURFFPbXRiYUl3SGdYdDF6QkZVZ2FxWFduQklFYWtaM0VTTWdxbDZLcFpZc2xFR29kbG5wREJ2UUNhR2w1QjRnTEtWeFB4cmtJUWlSMkgvNDRULzlpMSsvYXZ0Tk16UHpSNTUrL05ISEhsQlYwVGI5Q2hWR29CV1U2WXkwQ1FwVHE3VjBnMEhEUFFvVmhWbFdVUnQwcFZTSUVaSnpvcWdCS2lwWkNJUlhRcUo2emwycEJZUnBnZ1NnWm9PZ2M5S05vZmYrVzQvOGZmVnFlaFozQzl3OUpwSVd0bEcveUlRbGtSNmVVMnFpQURQVHBCRXdrVnJHcFhxYjZ4RU1TcTN1VVUxRlFIZ0ZrcGxwU3RBMjlrNVF1b2ZYQ25pckFVQkFOS3NSM3BKMWsrZjJwVVJRMWJnbWxnR1p6TFRwZUJxeUQ0UlNvcm9tMFpRZ0tPNmsxRnBGVFJta1RIVURqeUM5UnBoUXhBZ1hHQ0ljQU5tWE10R3RBVWtNZ2lhRERMcWFxU1l2dFkvS05qTnNiUlVqSW9UU0ZNUkpOZW1rSFFYaDRVcWhXUmZoUXFVVHB0bVNxampnSlN6SjB2S2lDRXhOMVpoUzBDTllheDEwd3hvQmhDVng5NG5PRDFCcFlRODRLS1NqcnpVbUJMZk56N1VmOTJDcjdwcDhEUFNXY1J3TWdtSXBOOFZENmZzQUZheGxUSWFYSGhKOXFSRkJDTlVvTEdYY1pyYXFOaHFQNk1VanFvZVRIdTFyRFVHMVZvWkRNZXI3Y2VtRFVFaWNLZlZJdFFrQnFPRVFTU0lDQ2hsWVkrQUtKZG9NVm96d0NCRWRqMGZob2FhdE15MjFCaWxCTlMxbDNHWHIrK3BrbDNJTlYxVjZtNHVIcUpUUmlBeWRhR0dDWVdpZElWREtXQ0JCRWdFd2dnMWlOWEhQV1JnZndlcGx3aTNNcWhkRDdzc29xZlhWTlVJaGF3ZU1GRVl0UFVTV2xzY0NVWlVRYWJOU245VGxQc3hkSVZXa2RlU2k5RHBSRGs5c3BaQ0FOOXRLQTdsSWV1WjdKVUVBWThwZzBKRUNCdHhGdFpaVmtoV1Y3c2lwZXJCTUJ0dVRhclpVaFJRV2MrMUxyeE5GWjFNazJxanZ4ZFM5Zlp2Q1dVUFZJbXBMTHg0Qko5amFDMmNMdklpVVU0cEdMeU5LalpUb3RaQU0wTlpNMkw1b29pSVlxUW9vS29KazVoN2hUaEZUYmVYREdTSW4wbzRqSmRzeExOSnlvV3JMY3dDYVRyS3h2QWkyQzd0WGt1a0YzL3RpSnhZWEYxZVdsL3UrNG13anRGWk9ORVFEVVZWNTVnTWkveWZ1ZUZiaEtPZXFVczhJWk05UTNjay9JaUxKTk9jOEdBNW1aK2R1dU9IRy93MGpKNmk3d1owdmtBQUFBQUJKUlU1RXJrSmdnZz09IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiRklET18yXzAiXSwiZXh0ZW5zaW9ucyI6WyJ1dm0iLCJleHRzIiwiaG1hYy1zZWNyZXQiLCJ0eEF1dGhTaW1wbGUiXSwiYWFndWlkIjoiMzBiNTAzNWVkMjk3NGZjMWIwMGJhZGRjOTZiYTZhOTciLCJvcHRpb25zIjp7InJrIjp0cnVlLCJ1cCI6dHJ1ZSwidXYiOmZhbHNlfSwibWF4TXNnU2l6ZSI6NDA5MH19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIwLTAyLTEzIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiT25lU3BhbiBGSURPIFRvdWNoIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyMDAyMTMwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMS4xIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjMifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMTktMTAtMjgiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDE4MDkyNjAxNiIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4zLjQiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMC4xIn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMy0xMi0xOSJ9LHsiYWFpZCI6IjAwMjQjMjMyMyIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFpZCI6IjAwMjQjMjMyMyIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJHK0RGYWNlSURLZXljaGFpbmlPUyJ9LCJkZXNjcmlwdGlvbiI6IkcrRCBGYWNlSURLZXljaGFpbmlPUyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6InVhZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjJ9LHsibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X2RlciJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmYWNlcHJpbnRfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiYXR0YWNobWVudEhpbnQiOlsiaW50ZXJuYWwiXSwidGNEaXNwbGF5IjpbImFueSIsInByaXZpbGVnZWRfc29mdHdhcmUiXSwidGNEaXNwbGF5Q29udGVudFR5cGUiOiJpbWFnZS9wbmciLCJ0Y0Rpc3BsYXlQTkdDaGFyYWN0ZXJpc3RpY3MiOlt7IndpZHRoIjo1NDAsImhlaWdodCI6OTYwLCJiaXREZXB0aCI6MTYsImNvbG9yVHlwZSI6MiwiY29tcHJlc3Npb24iOjAsImZpbHRlciI6MCwiaW50ZXJsYWNlIjowfV0sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlCbURDQ0FUMENCR1FkUFIwd0NnWUlLb1pJemowRUF3SXdWakVMTUFrR0ExVUVCaE1DU1U0eEN6QUpCZ05WQkFnTUFrMUlNUTB3Q3dZRFZRUUhEQVJRVlU1Rk1Rc3dDUVlEVlFRS0RBSkhSREVMTUFrR0ExVUVDd3dDUkZNeEVUQVBCZ05WQkFNTUNFRlZWRWhTVDA5VU1CNFhEVEl6TURNeU5EQTJNRE13T1ZvWERUUXpNRE15TkRBMk1ETXdPVm93VmpFTE1Ba0dBMVVFQmhNQ1NVNHhDekFKQmdOVkJBZ01BazFJTVEwd0N3WURWUVFIREFSUVZVNUZNUXN3Q1FZRFZRUUtEQUpIUkRFTE1Ba0dBMVVFQ3d3Q1JGTXhFVEFQQmdOVkJBTU1DRUZWVkVoU1QwOVVNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVTSXBJL2RLWUNEWWh6d0Qyd1NmWUFPYi9uTmFpUGNXRjIxdnhaay9UZ0QwT0p0Y0QrT1BtNjRud1pkRldTRVlTVzdpT3FucG1KeWRlOG1nci90bkFpekFLQmdncWhrak9QUVFEQWdOSkFEQkdBaUVBM2J2aGF6UUZQd215WGx4Sy94Q1hmaDdnMVgxRW9iTEMzTCsyR09SeHA3Z0NJUUNmTkVUWC9tMkJlYlJMWEk0TE1QMUVRR1BYRkRmN09rNzRVN3hiaU00VmtBPT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCwvOWovNEFBUVNrWkpSZ0FCQVFBQUFRQUJBQUQvMndCREFBTUNBZ01DQWdNREF3TUVBd01FQlFnRkJRUUVCUW9IQndZSURBb01EQXNLQ3dzTkRoSVFEUTRSRGdzTEVCWVFFUk1VRlJVVkRBOFhHQllVR0JJVUZSVC8yd0JEQVFNRUJBVUVCUWtGQlFrVURRc05GQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJUL3dnQVJDQURJQU1nREFTSUFBaEVCQXhFQi84UUFIQUFCQUFNQUF3RUJBQUFBQUFBQUFBQUFBQWNJQ1FRRkJnSUQvOFFBR3dFQkFBSURBUUVBQUFBQUFBQUFBQUFBQUFFREFnVUdCQWYvMmdBTUF3RUFBaEFERUFBQUFheWo2RjV3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVnZDNlRFQ1eExKMzZ4Rm9jNWw4bEdQU1hLc3pORE0wOU5WZE4rOFA4WmRMS0JIcGllK3ZoVHVvZk5YTkF2bStNeVVtUm4xZFFaZ0FITTRjdzFMaWNQMVZMZVF1alR6SjJkSk0zMzVwaGFhVWplYWJLVVJ2ZFY3U1oxZFRTNlN1Rmt3US9iSHI3NjV0MkYxbWRrODdOUHFFK1NZeUhSMWdBTEIxOGx2eVRlalBYUXFtdWdzZ1lkVlZwMXlhSGZYTFczdlVRazJwYUlxZDVNcllxSVBmamRMTm1UWXkyK0NUb3hzYjZJdHRTdTZsQTlCWkhBNnFvQUJ5T09OSFAycFBlbmpycy84QXhtbmNZYkxDaWE2ejB4U21hWnQ5SFJNbFVSdmRGK3F6b1l1czNsZEtWMXU2aWFtM3Q3UHJ0Sm4wR2VudS9BOURXR3h4QUFBZXY4Z3hYS2svT1pxYzlKbWJLbHBNelpHa3pOa2FUTTJScE53TTZFcmgxajh3Mk9JZXlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQLzhRQUtCQUFBUU1EQXdRQkJRRUFBQUFBQUFBQUJRQUVCZ0lEQnhVWElBRVFFellSRWhZd05IQTEvOW9BQ0FFQkFBRUZBdjZiR0lTUmxOWWJGZ1VaUzNGTW1sUGd0S1cyYmZTTHJFMVBTdVcrQzB2QmFYZ3RMd1dsNExTY2lHTHlrMWlnT1Jwa3NRSXhlOStHQVFtcVVQRzdlMDBzUG43WWEzZTVkQnRxOTV4YU9aWUhGQXl4SjdjcEJreGhIaTI4NHRiemkxdk9MVEhMUUozVzFkMkgxaDZ5c0VXczVoMXlLRU9iUnJjZk9nWWl5QkZTV1F0NHlLUFNGN0kzdkRFbnR5eWY3dHdqY29mUmg0Q05ONUFNbEFLM0l3bHkzVlp1Y3NWTU9qMlhMTFJtcDlJKzFHSmoxZE8waDViU0hsQW9DVmpwOVRYSGhZOUpkcER5MmtQSnppdzQwYmRzT21hbTVkWkhZZEI4dzVZWStOZVU0K3JwTHV6YjlibWUvd0FQdGpYNnZ2VlpmK1B1dmxpNGgwWVM5WmRDVk16M2FuSnNqb3AzUGtpM1BraXg1TlRCNlJLZFRvMkZsRzU4a1c1OGtWL0pFaGRXTzJIQWxWNGdzaGtPaEtYOHJGK3RyZmpSeTFJd3g0RzJrUXlTUlIvRjNYREVudHl5Zjd0d2lzTmZTbHlJRk53ZytZU0dpTkE2cXV0ZFhPRVRHN0UzN0IrM0tOTDdlMDZ0UGNYeDk1WHRDQ1cwSUpiUWdrQmdBdU9QMGF4MEpQRXRvUVMyaEJMYUVFbU9NNCt4cnRXcUxGc29WYWhtVXhsbDZXRXZ3eDZVa0l6ZkM1ZUdQS1c4cURPcWRkR3JYUnExMGF0ZEdyWFJxMTBhdGRHclhScTEwYW5NdEN0S1RlWUI3V2s5Skg4a2MvMDMvOFFBSFJFQUFnSUNBd0VBQUFBQUFBQUFBQUFBQUFFUkVnSVFJQ0V4VVAvYUFBZ0JBd0VCUHdINnl4azZSS0Y3cVVTaDR6eWZTMURFbVpFUFdMTXVDOU10V1JZYmdzaHVSZW1YbkZPU3BWaXhZMUpWbFdKUU56eXNXTEZpeFlibjdILy94QUF1RVFBQkF3RUZCZ1VGQVFBQUFBQUFBQUFDQUFFREJBVVJGU0ZTRWhRZ01VRlJFeUl5WVlFUUpGQng4RFAvMmdBSUFRSUJBVDhCL0xWbGQ0UGtqNXI3aXB6emRSMGxReHM3aXFyL0FBUDlLT001WDJRelc1MU9sYnJVam5zdW9LK1dGN2p6WlJtTWdzWTh1Q1UvQ2pjK3lwWXQ2bXVMOXVoRmhhNFZ2VUd0bFUxTUpRa3pFck9rR09WM043c2x2Y0d0a0VvUytoNzFhRk14ZzhyYzJWbFN2ZThYendWWTdVQnN5c3MyR1oyZnI5TUxtN3QvZkNrczZXTVhOM2JKUVFGVUZzQXNMbTd0L2ZDb2FZNlpuWStxcXpZSUNkMVpZM3pYKzNEVlU1VXNtMFBMb29iVUc2NlZsaWNIdXA3UWhraUlHNnFobkNua2NqN0xFNFBkUGFrSFM5Vk5VZFdWM1RzcUttM2VQemMzNFNGamJaSkhaY1JaaTl5d2tkYXdrZGF3a2Rhd2tkYXdrTlNocElvUFMyZjVqLy9FQUVNUUFBRURBZ0FIQ3dvRUJRVUFBQUFBQUFFQ0F3UUFFUkFTRXlFeFFaTUZJQ0lqTXpWUllaR2gwUlF3TWpSU1luR0J3ZUZDYzdHeVUzQ1NzL0JVY25TQ3d2L2FBQWdCQVFBR1B3TCtadDJFWktNRHdwRG5vL0xwb0Y5czdvUGUwOTZQOU5XWWlNTWpvUTJCWEpwN0szV0lRa0h5VnpWN3VBQWdFWkJlbjVWeWFleXVUVDJWeWFleXVUVDJWeWFleXJQd283dzk5b0dsS2loVzU3M1MzblIvU2ZwVnBUZU15bzhCOXZPaFhtaTlJdW5jNWs4TWo4WjlrVWhsbHRMVFNCWktFaXdGRitVK2lPMFB4dUt0UlMwSkVyM20yN0R2SXIxS1oySjhhbXcyNGtwSzMyVk5ncXhiQzQrT0Fma0wrbUI2QTlGa09PTld1cEdMYk9MOVBYWHFVenNUNDE2bE03RStOZXBUT3hQalFTNFg0blc2M203cjBsNk84aDlwV2hiYXJpbkk4bHBMekxnc3BDcTRGM0lMMmRsdzZ2ZFBYNWhtT3lNWjExWVFrZFpxUEJZOUZwTmlmYU9zMDVNZjRYNFcyOWExZEZHUk1keHZaUVBSUU9nRGVqOGhmMHdUL2czL0FHMDcwUFJYT0xQS01xOUZZL3pYVE0yTWVBdlNrNlVuV0RVaUV1Mk1vWGJWN0s5UnBUYXhpclNiRUhVZCswdFF1STdhbmZwOWNIa1FQRXcwZ1c5NDV6OU1JVUJIc2MvSzFvamJXdEViYTBKY3NNNUhKcVR3RjNPQ1ZOaWhuSU9ZbUxqdVdPWklGYUkyMXJSRzJ0T3Z1Q1BpTnBLMVdjMURDL3VjbzhWSVJqcEh2ajdmcGduQklzbDBoNGZNWisrKy9tOVBrMy9vWU4xY2JUbHpoYS8yanpHNlAvSGMvYWNPNXVMMHIvWXJBbTMrbVJmdE8vanBVYkprSVV6OVIzZ1lFYm9KVHhNdE9jKytNMzZXd2hJbml3emNpMzRWemdOZzM0VnpnTmczNFVJczJYbG1Na3BXTGswcHovSVlKY1NITXlVZEdKaXB5U0RwUURyRmM0RFlOK0ZjNERZTitGT011VGdwdHhKU29aRkdnL0xESjNVV25pbVU1SkI2VkhUM2ZyZzNRV2szUTJySkQvcUxIdnZ2MjNtbFlqamFncEtocUlxUE5hdGRZc3RQc3IxaW5ZVWtjQmVoUTBvVnFJb3R5bTd0RThXK24wRi81MGIwZmtMK21DZjhHLzdhZDZBeWd0UlFlTWtxSEJIdzZUVE1PS25GWmFGdXM5WnArVVNNc1JpTXA2VjZ2R2lwUnVvNXlUNWc0MTNJTHZMTkQ5dzY2Ymt4WFV2TUxGMHFUU21ubTB1dHEwb1dMZzBWQ0txT1QvQmNJN3EweXRyOXEweXRyOXEweXRyOXE4c2lGL0s0cFR4aTdqOU1EczZTWDhzNWErSXV3ekMzUjFWcGxiWDdWcGxiWDdWcGxiWDdVRmVSbVFvZngxbFhkb3BLRzBKYlFuTUVwRmdLY2xUSFF5eWpXZGZVS3l5cnR4bTh6TFhzanArUG1zZUU5WkI5TmxlZEN2bFFUUGJYQWQxbTJPanV6MWR2ZFNJZW92QUd1Y0l1MlRYT0VYYkpybkNMdGsxemhGMnlhNXdpN1pOYzRSZHNtdWNJdTJUWE9FWGJKcm5DTHRrMWQzZFNJT29PaFI3QlJUdWN5dWE3cVd2Z0k4YXkwNTdIdDZMWXpJUjhCL003LzhRQUtCQUJBQUVCQlFnREFRRUFBQUFBQUFBQUFSRUFJVEZCVVdFUWNZR1JvY0h3OFNBdzBiRncvOW9BQ0FFQkFBRS9JZjhBVFlqbzRhRFRNME9NVVk2M3ZFdEJaRythQkZ1RCtoWHE5RzVFQ0hOc3U1YUJOUFY2OVhyMWV2VjY5WHBjNVlmMnltWk8wUloxVCtpZ1o0VGdoT0RvL1VUQnU2Ti9OL1hBMzBhNDBTT1FWZXFyQWQyL1NvTUhndXJPbXhHRWhucENBdVczNFVTTHFobGhNU1BnUm8wYnB0c3QzTzZYYWFvYmlWQ0VKTWllWTBERTAzaG0wSFU0eDg5ZHFYSkJSbUVTRGJpdXF5MWJwaXdNTHVIOVhBR2wzT1c3Y3N2NjQvWlJ3VnNvU3VPTStZcWZ1ZVFmTkZDcUp2d3ZVNkxUKzI3K0JoUG5aa0gzT3c5WjhOaFplaGFZbkpIRGJBNW9QQlhuUHl2T2ZsRTJERzh4RmthYkhtUkdJR3NqTWE4NStWNXo4cS9VUEZnbHcwMnBOa1pmSjN6NU5uSHZJQ2ZtRkIzVzYzN2JEYVBNNVlkSTIrV3krdFFGYkp0TjF0c1diY3g2Zm5QQXBYTk9vTGpzVEJEQnVCRWNRdWUwb1lJR0Z0b1VKMnJCTE1pTFFkaG5BcFlNbGFqZXUxQ2hpRmdYa0lTekx0U2dKZGtyRzdZd3dnNFowSHpOQXZSaUpIblNoQ0MyNjcvUkdzY3VYWWMwZnBqVGxMTWRodndkVnYyVWNJTkJyQ2NUK0E0eFZqMWxONWptSzIxYXRFV01kQmUwS2Z3MlFsWDZISU9oZURMUmRic2tuRHFLeC9IU2lKOUJadFJxMHk4eFBOSWNDdlNxZWxVOUtvYlFOaElHK3lHekRkZjdBRUdnVjZWVDBxbnBWTU5JRWp1Y1NnREZEZ1pBVVNXcmJ4WUJpdVZMUWxudkVhc2VCaDlTK1laNWg1dFNHc0RkRkx4c09YR2pVNS9CRm12UHU5ZWZkNjgrNzE1OTNyejd2WG4zZXZQdTllZmQ2OCs3MHlpbjY0TFdCdVFSMXR0Ym9OOVNVNlZHV0J2di93Qk8vOW9BREFNQkFBSUFBd0FBQUJENzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc2b01qZzR4dlAzNzc2bXB6eXl2emVwcjc3NzNqNVQvejVlL3o3NzY0cHY4QXZxLzZJRysrKyt2Yy93RC9BUDhBdGY4QXZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnYveEFBZUVRRUFBZ0VGQVFFQUFBQUFBQUFBQUFBQkFCRXhFQ0FoVVdGQlVQL2FBQWdCQXdFQlB4RDliTWRCcXpNRVVNejJsbjJCaEVScDJCYlVXQ1puaExCeEFweFBLSW1aUTFEOTJjUkR4ckFXb0F0MGl3aHNib0RUSHJwQVJqQ2pXaG01dEdvTXpMOVMvVXYxTDlTL1VYTDlqLy9FQUNnUkFRQUJBUVVJQXdFQkFBQUFBQUFBQUFFQUVTRkJZWEhoSURGUmdaR2hzZEhCOFBGUUVQL2FBQWdCQWdFQlB4RCtzYjMxOXVOWURvN3RQUkZVMEU4NXp2a29kVnZtTjdlNCtLdEpVKzN3N3pKK0dLelZiR0dSWXRWcVcvVEZnWXFCZFAzSUM5VWFGWVhRVkZ1WlAxSVVvMGNJWE5OOWlZNVFEbXlsSGgrT213M0JIaTJYQVN6T3g4ZjR1MTdqRkhrRmJGOVIrZ0lWdDVGdzhaKzR3cGcxRzZ2eUV2QkJPYlpFVWJoZVRZUVNqTngycXE0WVpuZVVWZGVKZnl1bjFHc3JRMUNGbXNxRlVVV1pucWZVYXdCVUxrZTRNSlM0TGJmbGpaeWNPQnk4N0wwS2pjeHFxd2J6dmIzbUs2YXpGZE5aaXVtc3hYVFdGUzE5Q1czbkcxMDVmMlAveEFBbUVBRUFBUU1EQkFNQUF3RUFBQUFBQUFBQkVRQWhNUkJCWVNCUmNZRXd3ZkJ3a2FIUi85b0FDQUVCQUFFL0VQNU52Y1U0WmtpNStBdEtRMEhyQlo3cWVlSnZtaml0QU5lZ3I5TjlVekdNQWpzc2FTR2t4QjZOZnB2cXYwMzFYNmI2cjlOOVYrbStxUE1VSnIvU2l4OCtub2c0b3FtQlBia3NER05zYktTRS9FUzB4VEhBMkZrU3VnRUlRU1dYaGNBc0ZXVmZUUjJDdDFGaEs3RlRKdEFwZUhTREN6SjNmdWhNRVRBdkhRME9MbTlsbzFnREprZWhnd1lORCt4RStXRGxBNzBicDU3b2NJa201a3B0M2Z0ckNNSUlSQkVRYVAwS1V3WFdXdWtPSWt2RDRIRmR3ZFBnbEwxakF1SlYrWStDWUxCVS9pd09BVjJ4WmdNaERBTVlQajFCdElnWWx2QktXL3lORkpCRzJwc20xREE5Z29xd2gyR09BWVQwa0paR25pa0p3MUIySndaQnZSaWJlaEFnN2lKMWx0aWtraUw4Z2prYU1CRlEvd0JuZndjKzdyZFBhWXNKSi92WFBObGdkOEJoYTdSOXNSSjNWSkhLeEd1ZVpGYjFkREVac0syckx6MFpDaW8ya203OGVoQ1Q0RVN0Kyt2S3FKTjd2K2s2QkxKVGRPSFdmaDl2eDNzYlJXZTQ5YU5PRVFoK2R1c2FOUzBFSS9RT1JveUlTbDNuMmhYZDR1b0dIeXFBUUd1VEphRkd6YTdZWkxhWTBtV2Z0ZHcwbDExekJiV1RKdjFEc3NuQ2twSkVkU0lDSmFXUzQ0ZkhReXIrR1RFbnRNOTllTTVkRERjZ0gxUXhFUzVLQ2IydUp6dUZNcVNEUzhTbkNMd2lsbFRBYkNyc283UE5oeVF2eHRGQktCUWhuc0xlRzNKQzlaejhJVjNkQkxLZTdZQ0NwckxSYXZGbTkza1RLVWdYTWtKbFYzVlorQis2c1RGWURZRmJXRGRGQWJBcE1HNG1RYktCRVJCSzRGbnVpRWllU21BRmRLOEo0UUhRelpzek5WeXkvQmNzYjZFbW1DUEo4Sk1pK1o2R2JOblBNMCt4Y3oyRkRVS0JkZ0FBNEtrYUNmT3dDOGFBU3RYcVk2U3Q0Yk1Zb3hBU0IrSjlnd1RGNWlJV21BdE1TVkRZb0tKM0N1ZG1KM1pvRWVKZ2J5WWV6NHYvQVA4QS93RC9BUDhBL3dEL0FQZ2dSTDZ4UWVpb2IwUlYvQmI4anNvQTNiRW1Nall3SlVxQ1ZqK1R2Ly9aIn0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTA0LTE2In1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wNC0xNiJ9LHsiYWFndWlkIjoiNTYwYTc4MGMtYjZhZS00ZjAzLWIxMTAtMDgyZjg1NjQyNWI0IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI1NjBhNzgwYy1iNmFlLTRmMDMtYjExMC0wODJmODU2NDI1YjQiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiS1FDIFF1S2V5IEJpbyBGSURPMiBBdXRoZW50aWNhdG9yIn0sImRlc2NyaXB0aW9uIjoiS1FDIFF1S2V5IEJpbyBGSURPMiBBdXRoZW50aWNhdG9yIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfSx7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyIsImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIiwiYmFzaWNfc3Vycm9nYXRlIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCIsImJhRGVzYyI6eyJzZWxmQXR0ZXN0ZWRGUlIiOjAuMywic2VsZkF0dGVzdGVkRkFSIjowLjAwMiwiaUFQQVJUaHJlc2hvbGQiOjAuMCwibWF4VGVtcGxhdGVzIjo1LCJtYXhSZXRyaWVzIjo1LCJibG9ja1Nsb3dkb3duIjoxfX0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MTAsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDbWpDQ0FrQ2dBd0lCQWdJQkFUQUtCZ2dxaGtqT1BRUURBakNCc0RFdk1DMEdBMVVFQXd3bVJrbEVUeklnUlc1MFpYSndjbWx6WlNCQmRIUmxjM1JoZEdsdmJpQlVSVk5VSUZKUFQxUXhKVEFqQmdrcWhraUc5dzBCQ1FFV0ZuUnZiMnh6UUdacFpHOWhiR3hwWVc1alpTNXZjbWN4RmpBVUJnTlZCQW9NRFVaSlJFOGdRV3hzYVdGdVkyVXhEREFLQmdOVkJBc01BME5YUnpFTE1Ba0dBMVVFQmhNQ1ZWTXhDekFKQmdOVkJBZ01Ba05CTVJZd0ZBWURWUVFIREExTmIzVnVkR0ZwYmlCV2FXVjNNQjRYRFRJeE1EVXhNekV6TVRrd09Gb1hEVEkyTVRFd016RXpNVGt3T0Zvd2djMHhPakE0QmdOVkJBTU1NVVpKUkU4eUlFVnVkR1Z5Y0hKcGMyVWdRWFIwWlhOMFlYUnBiMjRnUWtGVVEwZ2dTMFZaSUhCeWFXMWxNalUyZGpFeEpUQWpCZ2txaGtpRzl3MEJDUUVXRm5SdmIyeHpRR1pwWkc5aGJHeHBZVzVqWlM1dmNtY3hGakFVQmdOVkJBb01EVVpKUkU4Z1FXeHNhV0Z1WTJVeElqQWdCZ05WQkFzTUdVRjFkR2hsYm5ScFkyRjBiM0lnUVhSMFpYTjBZWFJwYjI0eEN6QUpCZ05WQkFZVEFsVlRNUXN3Q1FZRFZRUUlEQUpOV1RFU01CQUdBMVVFQnd3SlYyRnJaV1pwWld4a01Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRXJWSGNkQ3czZjNnNExTby9RT25qcnJXZVJaUHlnc2JFZ3Z2VzF4dmFmT3dNWEk2SzA5MEs5VlpEOFB3TERkZnBDdXNPdkU4U0o5ZThzS2tWSDBsdUVLTXNNQ293Q1FZRFZSMFRCQUl3QURBZEJnTlZIUTRFRmdRVUh0UHBtcStKbXJjUVlhT3VkSDg2bHBiYXptRXdDZ1lJS29aSXpqMEVBd0lEU0FBd1JRSWhBSTdYbkw2UG1lRFBpQVIrd09GYXFrcWoxL3hUbjQ4VFp1Y0RqN2h0aTdGRUFpQVdhS1g1WXBySitTZUlPSkZwTHgvZnNPTkpES285VEJEMG5PN1kyQ2dCSmc9PSIsIk1JSUNGakNDQWJ5Z0F3SUJBZ0lVU1FaM2hyOFlzNTY0eUplam9razB2R3JVQU04d0NnWUlLb1pJemowRUF3SXdWekVMTUFrR0ExVUVCaE1DVlZNeEREQUtCZ05WQkFvTUEwdFJRekViTUJrR0ExVUVDd3dTUVhWMGFHVnVkR2xqWVhSdmNpQlNiMjkwTVIwd0d3WURWUVFEREJSTFVVTWdRWFIwWlhOMFlYUnBiMjRnVW05dmREQWVGdzB5TlRFd01UWXhPVEUwTlRkYUZ3MHpOVEV3TVRReE9URTBOVGRhTUZjeEN6QUpCZ05WQkFZVEFsVlRNUXd3Q2dZRFZRUUtEQU5MVVVNeEd6QVpCZ05WQkFzTUVrRjFkR2hsYm5ScFkyRjBiM0lnVW05dmRERWRNQnNHQTFVRUF3d1VTMUZESUVGMGRHVnpkR0YwYVc5dUlGSnZiM1F3V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVEreWJmVkc2cjNnSEFyQkVsZy8yL283NFhBSEVYeUNpZi9jb1pmeldCdy94ZXZRMmxOcFcyM2NSUDdrTkZBQnlraW1kbStGcW1FNkVqSEJ4K08rUlVjbzJZd1pEQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUJNQTRHQTFVZER3RUIvd1FFQXdJQkJqQWRCZ05WSFE0RUZnUVUyanNtMDBhQmJOaEh1WElpZHFvajBmVjNtTU13SHdZRFZSMGpCQmd3Rm9BVTJqc20wMGFCYk5oSHVYSWlkcW9qMGZWM21NTXdDZ1lJS29aSXpqMEVBd0lEU0FBd1JRSWdKSDBoZ3hPblFpMHZoM0dnS0swSlNIbUJDSnZ1Q0w2ZGdvbjJpNzBXVGU0Q0lRQ01MdkhidjI0cDRIKytuUzJoclRtZVRzZlhvYkNaV3NxcVkvTGF2RjR0MFE9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFnQUFBQUlBQ0FZQUFBRDBlTlQ2QUFCNThrbEVRVlI0bk96OVI1QmNXYjduK1gzUE9WZTRDaDFBUUd1UkFCS3BrRG9ycS9LVmVMSzdYM042MkROajAwYWowV2hENDRJYjdybmdsaXR5VDdPaDlZSkRHMDViTjN2bTZhcDZsU1V5czFJTHBFSkNhMFFnaEVlNHV1b2NMcTY3aDBkQVpFUUFTSWo3LzFpaGdBVGl1dlo3ZnZlSS8xSE9PWWNRUWdnaENrVS83QWNnaEJCQ2lCK2VCQUFoaEJDaWdDUUFDQ0dFRUFVa0FVQUlJWVFvSUFrQVFnZ2hSQUZKQUJCQ0NDRUtTQUtBRUVJSVVVQVNBSVFRUW9nQ2tnQWdoQkJDRkpBRUFDR0VFS0tBSkFBSUlZUVFCU1FCUUFnaGhDZ2dDUUJDQ0NGRUFVa0FFRUlJSVFwSUFvQVFRZ2hSUUJJQWhCQkNpQUtTQUNDRUVFSVVrQVFBSVlRUW9vQWtBQWdoaEJBRkpBRkFDQ0dFS0NBSkFFSUlJVVFCU1FBUVFnZ2hDa2dDZ0JCQ0NGRkFFZ0NFRUVLSUFwSUFJSVFRUWhTUUJBQWhoQkNpZ0NRQUNDR0VFQVVrQVVBSUlZUW9JQWtBUWdnaFJBRkpBQkJDQ0NFS1NBS0FFRUlJVVVBU0FJUVFRb2dDa2dBZ2hCQkNGSkFFQUNHRUVLS0FKQUFJSVlRUUJTUUJRQWdoaENnZ0NRQkNDQ0ZFQVVrQUVFSUlJUXBJQW9BUVFnaFJRQklBaEJCQ2lBS1NBQ0NFRUVJVWtBUUFJWVFRb29Ba0FBZ2hoQkFGSkFGQUNDR0VLQ0FKQUVJSUlVUUJTUUFRUWdnaENrZ0NnQkJDQ0ZGQUVnQ0VFRUtJQXBJQUlJUVFRaFNRQkFBaGhCQ2lnQ1FBQ0NHRUVBVWtBVUFJSVlRb0lBa0FRZ2doUkFGSkFCQkNDQ0VLU0FLQUVFSUlVVUFTQUlRUVFvZ0NrZ0FnaEJCQ0ZKQUVBQ0dFRUtLQUpBQUlJWVFRQlNRQlFBZ2hoQ2dnQ1FCQ0NDRkVBVWtBRUVJSUlRcElBb0FRUWdoUlFCSUFoQkJDaUFLU0FDQ0VFRUlVa0FRQUlZUVFvb0FrQUFnaGhCQUZKQUZBQ0NHRUtDQUpBRUlJSVVRQlNRQVFRZ2doQ2tnQ2dCQkNDRkZBRWdDRUVFS0lBcElBSUlRUVFoU1FCQUFoaEJDaWdDUUFDQ0dFRUFVa0FVQUlJWVFvSUFrQVFnZ2hSQUZKQUJCQ0NDRUtTQUtBRUVJSVVVQVNBSVFRUW9nQ2tnQWdoQkJDRkpBRUFDR0VFS0tBSkFBSUlZUVFCU1FCUUFnaGhDZ2dDUUJDQ0NGRUFVa0FFRUlJSVFwSUFvQVFRZ2hSUUJJQWhCQkNpQUtTQUNDRUVFSVVrQVFBSVlRUW9vQWtBQWdoaEJBRkpBRkFDQ0dFS0NBSkFFSUlJVVFCU1FBUVFnZ2hDa2dDZ0JCQ0NGRkFFZ0NFRUVLSUFwSUFJSVFRUWhTUUJBQWhoQkNpZ0NRQUNDR0VFQVVrQVVBSUlZUW9JQWtBUWdnaFJBRkpBQkJDQ0NFS1NBS0FFRUlJVVVBU0FJUVFRb2dDa2dBZ2hCQkNGSkFFQUNHRUVLS0FKQUFJSVlRUUJTUUJRQWdoaENnZ0NRQkNDQ0ZFQVVrQUVFSUlJUXBJQW9BUVFnaFJRQklBaEJCQ2lBS1NBQ0NFRUVJVWtBUUFJWVFRb29Ba0FBZ2hoQkFGSkFGQUNDR0VLQ0FKQUVJSUlVUUJTUUFRUWdnaENrZ0NnQkJDQ0ZGQUVnQ0VFRUtJQXBJQUlJUVFRaFNRQkFBaGhCQ2lnQ1FBQ0NHRUVBVWtBVUFJSVlRb0lBa0FRZ2doUkFGSkFCQkNDQ0VLU0FLQUVFSUlVVUFTQUlRUVFvZ0NrZ0FnaEJCQ0ZKQUVBQ0dFRUtLQUpBQUlJWVFRQlNRQlFBZ2hoQ2dnQ1FCQ0NDRkVBVWtBRUVJSUlRcElBb0FRUWdoUlFCSUFoQkJDaUFLU0FDQ0VFRUlVa0FRQUlZUVFvb0FrQUFnaGhCQUZKQUZBQ0NHRUtDQUpBRUlJSVVRQlNRQVFRZ2doQ2tnQ2dCQkNDRkZBRWdDRUVFS0lBcElBSUlRUVFoU1FCQUFoaEJDaWdDUUFDQ0dFRUFVa0FVQUlJWVFvSUFrQVFnZ2hSQUZKQUJCQ0NDRUtTQUtBRUVJSVVVQVNBSVFRUW9nQ2tnQWdoQkJDRkpBRUFDR0VFS0tBSkFBSUlZUVFCU1FCUUFnaGhDZ2dDUUJDQ0NGRUFVa0FFRUlJSVFwSUFvQVFRZ2hSUUJJQWhCQkNpQUtTQUNDRUVFSVVrQVFBSVlRUW9vQWtBQWdoaEJBRkpBRkFDQ0dFS0NBSkFFSUlJVVFCU1FBUVFnZ2hDa2dDZ0JCQ0NGRkFFZ0NFRUVLSUFwSUFJSVFRUWhTUUJBQWhoQkNpZ0NRQUNDR0VFQVVrQVVBSUlZUW9JQWtBUWdnaFJBRkpBQkJDQ0NFS1NBS0FFRUlJVVVBU0FJUVFRb2dDa2dBZ2hCQkNGSkFFQUNHRUVLS0FKQUFJSVlRUUJlUTk3QWZ3TURnY0N2V3dIMFloT0FlWnRiUTdsa3BKWTh6RHo1ek91ZjZmbGZvQlB3Zk93UTk1ZjA4UVp5MVJiTWtTUUlNeGlpQlFLS1YrMlBmd0hqbm5jQTZzYzZSSi9qbjBQSVV4V2o0YVB5Z0gwZ2FnM09EWnNDQWtBQlNiQklESGtaeXd4ZjNTKy83TDU2bVFQUUQ1MjU3UmpGSVc2bTJXR2hISzB3eUZJVm9yTWxKVWR1Y1Boek41Z01oU3NNNmlGSGpHRVBvRzN6T0VnVWZvK3pqbEhxdXJrL3ZKV29lMUZtMDBldUExU0pLVVMxZHZFcVVaWVZpbUZQb29MRGF6R3c1bHR2dUYxaWg4ejBNYjZDU1d4bEtUSkVyUVJqRThPc1RJVUlsU2FQQ1Z3YTE0WHg1YzQ3S2l6VmNLc013dnRsaGNhdE5KTEo3blV3bzBSaWt5UUdVRnl1TW0vODNaZkN6U09WQkdZYlFHcFNoNWhsTEpJd2g4N3ZUK09PZXdEclQ2Z2NQY091UjUwK1dmTW5YM1QzbVNwTFRhS1VtYWtqcEhsamtNRGt2K1hKVUdzdnoybGoyYXovdGhjRWFoY05ncy8yL2w4dGNkclNuN2huTEZwMUlLR1h6OXJIVm9YY3pYc0pBQkFCUlJsSER1NGl3ZmZuR0pMMDlmdy9jOHRrMVVLUVVCSFp2aWtqdWZpSld2TUtranloek9PYlNuS1ljaFd5YXJURTBPc1gxcWhLbkpZWHpmN3gvalhMSENnSE9XVHBKUVZnR1k1ZWY5eGJlWCtkVTdwNWl0dHhnYnFUQThGT0FwajA0bnViZjdJejhObGlvK29lZXpVRzh4TjkrbUhUY1pHNnB5NU5BT2poN2N3dGFwR241WmQ4T0c2ajdXL0wxK01PL1B5bkFSZFJLKytPWXFIMzU1anBtRkRwV3d4RWpacHh3RVJHbEtvVHJrVk85MUIrVXB5TUJvalY4eWhOcGpmS3pLNXNrYWU3Wk1NRGs1Zk51YnNNN2hMRGl0Z0VmMU81WjMrenZuUUlHNlEyTnpmV2FSYTlQejNKaHBzakMvUk5PbUpKMHNIell3RHB2a3QwTTNVTnpxVVh6dVB5eWxGQVpIYkxzWEJVcUJObFJMUGp1bVJ0bTdhNXlEZTZjWWZLMGtBQlJRdTVOdzV2d00vOHV2UHVjM2YvaUcwUFBZdTJjVHc4TmxvazVNbHJuYmZwMGM0Qm1GYzQ1bUp5TkpVanhQc1hseW1NTjdOM1AwMEE0OFl4Z2JycTRJQUVYUkN6cEdhMnJsMG9wL201NXY4UGR2bitJLy91UDdYTHV4eVBod2phMVR3MmdNN1NqYThNbmJvZEJxK1FUcmdQcDhtOWw2aXlEVUhONjdoWEsxek42ZDR5Z2MrYVhuRDlQUXJ1NzFiM2NTUHZ2eUV2L2ozM3pNaFl0ekRGZExiTnN5UmlVczArcTBlNWVMeGFBdGtKK0t0ZFk0QjU2bkNmMkFNQXlZMmxSbHovWUpEdTJkNHRpaGJXelpQRXExSEt5NENhUDFJejJWdVgvVnIrQk9EWFM5MGVMSzFRVytQbk9EODVkbk9IOTVsdW1aSnEwb0pvcGowQTZYT1RMYkRRQzJkOHVEOXdLUDlBdnhBOGxmYTBjbmNqanJRRnM4ejdCcFlwaG5EbTJqVXZHN0FXQlpGRG04Z3JhRUJYM2FZRFBIek93U1g1eTZ5dXhucHdIRGJLUEY1dEVxclNnaGliTTdCb0F3TUtUV3NkU01TSk1VNHhsMmJCNUZPY1g0YUkxOU84ZEpuVjE1M0VCRDhLU09abHJuaUtJTTM5ZDRxeWI3ZmZiMUZYNzUrNi81MjE5OXdrZWZuOGZWTzF5cGxiZytNNFJXM1FDd2xoT1lwbnNDcE4vMWEzeURyelZaWmxscXQ0bGFNVFFTOEExYmRrOFFoaDVqd3lWR2hrS3E1UXF3M0MyYmg0NzcrMjZzZUsvZHluYzdUaTBYYjlUNTZJdUxwS2V1YzMwbzVNYWVMZFRLSlZyTkRyWklBU0R2eTBaNW9ERDVVSUJXZUo3Qjl6WGpZelcrblpqbTFQazV2dnp1R3BzbmE0eFd5NHhQVk5pN2N4Tjd0bTlhY1d2V3VuNEFWWS9Ba0VBK0RPYnd2RnMvWXpmbkY3bDZ2Y0dsYTdOY3ZqN1BqWms2Wnk3Tk16T3p3SlhwQlJZVzJyVGloRFROTUNxZnRXU3R4V1c5V3hpOHZiVDd1M253VCtvUlo1VENhVVduRS9jR1hkQ2Vac2VXY1lhckFRdEw3VnVPY1QvUXhjQ2pxTEFCd0NsTmFqT1dtaDJnRGdSRWpUYjFra2U3MFNHSnN0c0hhZ3RCYU1BNjBxVTJKQW1aNTFHdkJYVGFDWjBreFVHZVBndkd1ZnlVSHF3NjhaNjZNTVAvL01zditKdC8vb0xQdnJpRWE4VDVEMGNwOVhvTGxDRk9JOVp5QldQeW5sNnlnYi96UFVOb05PMGtKWnR2UUNjQ1BDcWJOM0hrNERaZU9MYVRJM3VuMkxwNWxOczI5dDh6TG5zdmJ2MFVLS0pPU3JyUUFSWmhxVUs5MlFJSFM2MFd0a2h6QUxxTTZtYzZuRklZcTFER3NialVZV1oya1VzMzZwdzZXNlZhclRCVThkbStkWXdUeDNaUXE1YVlIQjNxMzA0L2JOM2xhdnVIdEp3dFY0YkEyZGtsUHY3cUl0K2NudWJMNzY1eDZjb3NOK2VXbUYzc0VIVTZMRFVpR3AwSVVvWFQrUndqamNObEt6LzM0bGFlVVNpblNEcmRjd3dPUEkrbGtUTE5PQ1pLMHUrOWpTSXBiQUJBYWRMTUVjVXArZWtuemYvWGlVblRETkwwamdFZ05YbTZKOG9nemIrU1Vad1Fad2xaa3QrYVVzWHBqck0yNzNyWFdsRXJyZnhJMVJkYi9PYmRiL25WT3lmNThMT3pwTE9MK1dXNzU0R3p4SEVHeW9LMUxEY0RkNVk1dWpQR0FHVkFRZEtPU0ZJTHJRaGFiZkI4bUtwdy9QQTIzaml4bjVlTzcySFA3Z21DUjJGSXh1bDhnbEtja2wrNVpYbVlUR0pzbW5hZllMR3NidFN5N3VkcEtja0QrczNGTnRNM1F6emxVYTFvdGw0WnBkVnNvUlM4L094Kzl1L2FCSXBIWW9rcE1OQUxvZkFHNXI4c0xEUTVmM1dCNzg1ZDVZdHZyL0hOMldtK1BuMkY2emZxTkpzeG5TUkRLWWROVXNneWNDcnYvbWVnMS8vaDU1cEhXdW9VT0oyZmwzc0J3RUljcDJUcDJzNHhSVkxZQU9DVXhmU3ZWTHNmQ3MvaHRFTjVHcGVxMndjQUJjYlRlYU5udW9kcWpWWWFwVFMrN3pEZHNlalZ4ejJKbklNc3praFJsRUs5WXNEN3c4L084OXNQVHZIM2YvaUt6MDVlSkYxbzVnMWMyUWZmNUY5VTFiMzhNMnQ4Z1RMQWdmSThna0RqbkNOdVpCQkZFQ2NRbHZGM2pQUGlzUjM4MlUrZTVrOWVQY3l4Zzl1WkdLK3R1Sm5CN3VFZjhxMHhtdnh6cFZUdkQrRHl6eDMrRS9vaFdZK01QQ0FDZWJxenBGbk1mQ2NDcTFnSVBKYWFFVGRuRnpsN1laWlBUMTdscmRjTzhwTlhEbEdwaEN0dXlycmxlVHcvMUhDQWM0NHNzL2s4bUlGQU1qTzN3Tis5L1EwZmZYYUo4NWR2TUxQUTVzYjBJdGV2ejlOcWQvSUFuQ3BjMEgzZVNuY25TYXJsbnYwTTZlWC9Ic3BYT0tjaElROU1EdEF1bjJPQ1FadmJ2SURGeTl4OWhRMEFTaWw4MzFDcEJzd1JBaUg0SHJWcUJlMDZaUHJPVnhNbTBIaUpvMTJyUUJLQjlxbFVmRW9sTHkvbzRTbDBnVDVVeWxPRVdxODR5VjY3TWMvZi8vNGIvdWFYbi9MWk41ZHBMemJBOTZBY1VDcjdhSzFXalhldjc4eW1GUGkrSnJFMmJ6QzBocUVxNDF0SE9mSDhQdDU4NlFBLy85RlR2UFQwTHJ4Z2VlTFl3NTd4cTVRaUNEUlVBcGd2UVZBaXJIaFV5Mld3Q21zSzlNRlpoeXlEeENXNDFORlk3REI3WTVIdnp0M2ttM00zcUM4MUtaVjgzaml4djd0a01OZGJmdnBEckt6b2p6Nm9YbEdmNWM5WTVqSisvK0ZaL3VaWG4vUEhUeTR3UGIrSVF1R3NwUjNIZ01JUFEweVF6NGZvVFdRVjY2ZTF3amxJcTJYSUlDWERhRTJsRkJBR1p1Q2lUMENCQXdDT2dTNDZEekQ0Slo5QUcxS3RpZTl5YUVscmJNbVJwcG9FZ3pJR1l6eU1VV2lsVU1vKzhWL2czb1FyclRXZXQ3THh2cm13eUQvKy9pdCs5LzdYZkhieU11M3BCUWdWdXVZVEdJTXhtdEJYUktsYlcwME8xNXROM1gzUGdNUmFrc1RTeVd6M3l0OWpaSEtVRjQ3djVjZXZIK0pQWG4yS0U4ZDJyR2o4dXpmMVVDa0Z2bFpnREdEQU54alBKL0FNSGExUjZtRS93b2ZnZGt2YVhUNDVxN2Q4VG11SDhRM0thcEkweStkNUpKYUxhY3F2QWc4ZGVOeVlYZUsxNXcrd2UvdllpcHUzem5VN1hkUURxOFhVcS9CbjlNcktoSmV1emZQMkg3L2xIMzc3RmU5OWVvYUxsK2FnMVlIQWg4QURtMkU4SDkydExhS1V5dGY2OStjeURMeEcwblo5TDE4cG5PbUdQZ05ZaFZFS3p4aTh4NnhxNUEraHVBR0FmS0plUGxrdkJReEpsSkJrR1lteldIdm5zYUlvelJ2QUpMR1FaamdMMXFaa21jdlhKVHY5eEg5WHJiVWtpU01NVjM2cFB2dnFJcjk2OXhTLy92MVhmSHp5RXUxbWszeUNnTUUzK1ppOXRaWjJQSENtSC9qdGRub1hjUG5WRmFSR2tTYVdxSmxBbGs4ZUhOMDB4dkhEMjNqOTVmMzg1SlhESEQrNG5XQlY0dzg4OUFxUXprRmlIZGp1M0pQRVlaT0VKUEN4enVaRFMwWFcremdNdkF5OXhsVTdVTnFCVlZBT0lGUmdIYWUvdnNMMHpDSmZucnJPdFJ1TC9PdGZQTWZlWFJQTHgxdlhyUlB3NE9weE9QTHZ2aG5veVZwWWFQUC8vczhmOGgvKzVrTysrTzR5bmFVb0gvVUpQZEFHcFEwS2hkWU81eFJXdWJ6WHZ6dmdmOHZETFBoSFl5MFNyWEJKZm83SnNyejN4UmxOWmpQUzdrV0xXRmJjQU5DZG9idGl6cFdqZThWeDkrWFkvWDhmK09VS05qMVhhMDBZcnV4T2J6UmEvUGFEMC96L2Z2azVuMzk1a1lYNVJmQTgxRWlKSU16WGVEdG44L2wrRy9naXVtNWxOREtJV2gxb3hhQVY1ZkVLVHgvY3dvOWVQc2lySi9ieDlJR3RETmVXeDRPenpLSjFyMjc4L1hqMjk0SHRMbWR3ZHNWblRzNVB0OG8vWTkwM3J0dDVva3BsQXFWcHhaWjRlbzdGMlFhL3JVY0VCbXJWZ0ovWncremJzeG1nMzBQMUlGN2J3UXR6ZjlVa3hOOS9kSnEvK2RXbmZQRE8xekMvQ09QRERHMGF6cGNIZG9PSWN5c3Y4MWNHbi92L2VKOTB0M3lYQnYvOHFIejNIeUhGRFFCaTNYcnJtbzFSSzAvS3dKVWI4N3p6d1hmODlvK24rUHpyU3l4Y244c3J1MVZEL0hEd1I3c04zenIwR201ckhUWnorZEJCSndXbDhVZXJQSFY0Qno5NjlUQnZ2bktBRjU3WnlkaHc1UzYzdGQ1bkxSNm13UUk2YXRYWXVNUGxReWErbnlmNXVRVisvL3R2YUVVSjlZVVcvKzdmdk1xV1RTUDluODh5bTNkRzNhZVdvTmVRbS81OG9meDJ6MStlNWZNdnovTWYvdUZ6UHZ2cUVpeTB1b0ZQWTdQK2dzZmxJMVN2c2MrTDJFakRMMzRvRWdERW11Vkw5eDFsdmZKSytydUxOL25IdDAveTIvZSs1ZDJQejdFd3Q1aDNZL3A2UmVPZldidWhic3plMkw5ejNXR1hKTW1IRk1hR09ISndpdGRmUHN4YnJ4M2twV2YyTUQ0eWRNdnhXc3RPYTQrclhzR201VDh2LzMyVXp4SkFqMVh4ZFkybzNxQnpjWnAzYnRacHR4TDI3Wm5pdi9qejV3WnZiWGtJYUVYTmdJMCt0bDYxdVh6c0g2QVRKZnpUNzc3aGYvaWI5M24vMDdNMFo1Wmd2SkxmVnhCMGw4em05U2o3M2RIUzRJdUhSQUtBK0Y2OWNWT3RGWlhRckdoTW96VGx3NVBuK05VN1gvUEhqODV4OWNaY2ZyVlRDZk5adDFyanV1UCs2ejNScWU2VlVUNHU3b2c2RnBwTlVBWXpVdUh3d1NsZWZYNGZyNS9ZeC9Fak8xWTAvbG1XRFd3Vks2My9rMHByelZDb3FaWkRibGhITnJNSXpRVSsrZXdDZi9mYkw5bTFZNXdYbjk0RnNHS3lhbThGaXI0UHlYQ3dsNkxWU2ZqMG00djg4KysrZ292WFlYU0VvYWtSQXFEVERSM3VOb0ZHaUlkQkFvQzRLK2Z5d2l4R2tWZk1HemhmWHAxWjRKT3ZMdk9iMzMzRGg1K2U0K3FsV2VoMFVMVVNRZWl0bU1tOVh2bmQ1WGRtcmN0citLZHhYanRnT0dUM3JrMjg4Y29CZnZIcVlWNTVZUS9iSmxmTy9GNmU2TFh4Y2YvQnE4LzFIOWY3ODNKNVdvQ3M5NCs2djI2c0gxUWVxVGtLUDVoN2J3elQxTkdKSXd5UTFTb1FoVEMveEgvOHV3OXBOSnY4MS8vaUZmNzZGOCt1T0NicjFnall5SEJBYnlYQjdkNnY2d3VMWEw1ZWg2c0xRQk9pS3RaM0tEUXV0c2hGdjNpVVNBQVEzNnM3QXJ2aVpEYzczK1NkRDAvejYzZFA4WWVQVG5QMXhrTGVOUjk2aEtVQXBWVjNxOWFObmVwNmMzYWNjNlRPa3NWcFBuNDdVbWJQemsyOC9Pd3VmdkxpUGw0L3NaZXRtOFp1T2I3WDRONUxnM3EzRFZ6V2Rpd0R2UkM1L2pyay9pUkExdzhKdlY5aVBmSk5jdHJ0L0xVdWJ4a0RGTzJaUldZL1BjZi9aM29CejJoT1BMT1RIVlBqeTBkdDlIUHBWdmFJRFU2Q2JYVlN2ang1bWVucE9nUWEwbksrekJPUHRMdHBkWkhyem90SGp3UUFjVnZMVnptM2xsaU5rNFJQdnJuTUh6NDR6enNmbnViMHVSbXlUZ1NCZ1NBZ01Jck1WOWg0QXlmYWdTRmE1eHhSNG5DdFR2NVBsWURkMnlkNTZZWGR2SEZpUHllZTNyV2k4Vit4NWVvOVBmdDdNeGc2Vmk4NVU2c0xURWxsMHBWVVhnQnZ2YzJrYzJDTW9sd05DWXloWFc4QkVWeWQ0ZU9URjNudjQvUDhsMzh4dnVLWTFSczJyU1VzT3Rlcks3RHloNjlOMS9uYnQ3L2tuLy93TlZjdXprQWxoTUJIbDh0a0xzUGVZOWZPUFdUUlFsa08zcmY1czJTdlcwZ0FFTGRsWGI0bWVYVTM1Mng5a1MrL3ZzcHYzLzJXMzMxNGltKy91MDQwMXdCZjR3VUIydXV1YzA4MmRyV2p1ak9oYmIrbjNPWlZHVVBEenExanZQajhmbjd4K2lGZWVYNC9oL2FzM05aenVkZi8vcTMydjMxK3VmdWFvc0ZpTTlhNmJuR28zci9aL0V2WFcwVVJhclJSK04waVVvVTh5YTk2enYxWDE2M3hFOVN2SGVDSTJnbk9UL0theTM0VnRPYjZiSU5mdmYwTm5sSWNPYnlkdzNzM0UzaGVQaW1WWG5YSTJ6eVFPOXhabE5oYmRydjhoOTkreWYvOS8vVnJUbjcwWGI0VDVYQ1p5b2lQQld5U3IxYllTUHV6ZWhXRXVMdmxuaitWYi9HYjViMDBSaXVVTHVJUTI5MUpBQkMzMVd1TEJyOHdqV2FIejc2NXhqc2ZuT1lQSDUzaHUzTXpkSm9kOEEzbGNrZ1FhaUxiUGRHNURWekdkVGtIVWRKYkkyOHhZWW1wcmNNOGZYZ25yejYzbTlkZTJNZFRlNmZvYmRhd3VwRytuOS94MjU4dzduNFBnOGZvbGRzakxDOWxTeHlRUUNjbWl4eHRQeVB1TGJPODk0ZjlHRm9PVlJ1ZXMwRSsyYlFUUVZEeFNQMUp0SUVrVG5ubjB6T2twSGkreCtHOWVYMkEzdks5Zk9obDQ0MkR0WTZQdnI3TXlkK2RoS1dyd0JoNnl3alZrUXJOUnJ0YkhHeUR6MmxnSHNwZGFwT0pydDZhL3l4eitYNUszWlVhY2RJYlludllqL0RSSWdGQTlMbHV6VjJsdWxlakF5MTRxeFB6OWFucnZQZmhHZDc1NEF3bnY3N0s0dHdTK1dKL0gvemxTV3h1blkxLzd5cG5jRm1VaXhKd0ZsTUsyRDQxekhOUDcrS05GL2Z6eHZNSE9MeDNLOXBidmdMcmIvcnlDRjVBbTFWZC9xSHY1Yzh6VG9BSXJDRnV4bUE4NHFVT09FZWhOaXp0ZmN3TW9BMUdHNHluK3BQczFxdjNzZE5hVVM1clBHT29OenFjdmpCTnBSTHkyb21sVzQ1SlU4ZHRpa2JlY3J1OVFCeXUyclJwdHQ1aW9kNkFSa1JlVmRRUkJCN2EweWl0SUhQckswR3NsaXRXOXVlRjNNT0UybUxwN2dVUTJidzZtM05ZejVHNGpDeVRPVGFyU1FBUUsvUytJSU5kai9YRkZ0OWVtT0dkRDc3amR4K2M0YU9UVjVpNU1RODJnOUJnUEEvbklMNFBrOWdVb0ZNTlNtUEtBWnNtcWp4emRDZHZ2WFNRTjE4OXlKRkRPekNldnVXWSt6YUR2bittSHV6bTMzZ1pNVGU0OWh4WWFyYnoxNmdXd253WlZKaFBuUFEwV1NrZ1c3MWYrWjN1OW5FOWo2M29IZEhkcXJjT3lGQmFvOGozbCtqLzhFWW1CTkR0RFhDT05FcWgxYUhWc2R5Y2J6SmZieEtuS1lFM2VPcGIyK0MvNjlicUh3eDFEamg5ZnBvNGN6QXhERGRqQ0VOY2xwTEZ5VUFaNjdVLzlzSFB5M0tvQnVVVXJvaDdSYXhEYnpNZ3RGM3VoZFFLN1JRNDJRdGdOUWtBWW9YVlk2R3RWc1RwOHpmNTZJc0wvUEhrVmI3NjVpb3pjNHVRV1ZSWXBsTEt2M0QyUGx5ZFJJbEZaU2tPZ3drMW04ZUhPSHB3Q3llZTM4dkxMeDdnNklFdFZFcmRqNnh6V0I3QUZiK0N6Rms2cllSNnZjVmNvMG16aytDc3hTbU5yN3M3UUsvNU9XVUVvV0cwVnNWWng5bnpOM0hBVTRlMmMyNm9UTFhzTVRWYUpmQUM0alRGclo0VjZPN3dEQi9YaHFEN2ZIcXZYMm96a3RqU2FEZHB0eXl0T0tMVGlrRTdsQWtJdlh2bzFsSGdEUG4vMll3a2pWbFliRE83MEdEcjVHai94M3ovanJmUVoyM3Z1N0hjTStHYzQ3TnZyL0RITDg1VHI3Y29UOVJvaytVL21FSFNUallVaUh2N2tEanlYUkI3TlRTY2NtRHpTYTc5RDZFTUM2eWdUTGU4Y216QjJXNFBrOHIzYVNFaGlRdFdzLzE3U0FBUXl5Y3B4WXF1eWpSSnVIQjVsbmMvUGNNN241em5veS9QYy9uR0hFUVJLSWZ2NTFkRnZXN2M5WjdzK2hOMnVodWZPQ3d1elZDK3grVDRNTThlMmM1ckovYnp4b3Y3ZVBhcGJWUXFwZVhIUFBCZ043cUQzbkp2eDJBTG8walNsT3MzNjN4OStqb2ZuYnpJNVd2emRLSk9YbjNRMTlpczI0QVp0V296aWR5Szg3THg4bjNjRmFnc3d3U2FjalhrcjMveERKNXZnTHk4OGUwZkMzZGVJUCtZWHNtNDNuQU5lV25lS0U1WWFuYTRPbDNuNHJWNXJseWJwNzdRaERURmthSjBnUEpZODNMUzVSbjlLcitTVmk1L1F6SkxveGx6OWRvQzM1MmJZV3BpcEY4RVNDbTlvbEZmdlNLZ3Q3ckV1Wlh2ejhXcjgvejZ2VlA4NDIrLzV1U3BxNlJSaGlxSEtBeUtmSnJIZXI0VHZXcVh2V0dnTEU3SVB6aTZXMjFRZzZlNkt4QWUwd0Q0Z0NtVFgrMTNuTzJtUDFDZUpnd01ucS94dmJWRzkyS1FBQ0RvRHZ4M3U4anlwcXNUcDF5Nk1zOG5YMS9pbzgvUDg5SG41emwzNlFhMkUwTVE5RXVmOXM5dkc1M2sxSjEzb0hYM0NpdjBHUjJ2Y2ZqQUZLK2UyTStiTHgvZzJhTTdxQTAwL3Iwamw1ZjYzTi9Hc0JNbFRNOHQ4c2xYRi9qYmYvNlNrOTljcGJXd0JKNlBWektraVVVYmpWWU9lNXNyOVA3cDJUcThVQk1uRmhhWHdCbTJIZHJHdi92cmwvZ3YvdlFGRGg3WVJMUFY0ZkwxUmRxZG1GTG81WTNBaXFmNTVBV0EvdGE4U1VvelNwaVphM0x1OGpUZm5wK2hWaXB6OXNvTkZoZmJaQ25vZkF2QWRWWUtXaGxvdTFXc2lKT1VhN04xVG41N2hkR2hLb2YzVGhDRzRZcTEvTmE1MjFZSDdBV0RRUmV1M2VTMzc1M2k3VDkrVFdkbUtaOE1Xd256MVFWcVk2dGdlb0hCeGZrZUEwRXBwRnoxQ2Z5UVVza25NSGxnY1hMbGYxdjVkc3FLVGh6bllkTXBqS2Zac1htY0xSTmoxS3JoTGNkNDN1UDVYYm9mSkFBSVlIQ2RzY0U1eTlXcjgzejJ6V1UrL09JQ24zMXptUXRYWmtsYkhkQ2Fjc21EKzlEbHI4aG5VSGZhY2Y0Zm5tWnlkSmhEKzZkNDhabjl2UExNWG80L3RaM3hrVnIvR052dEFuVURYYkwzbTNJUXh6QmY3M0RwNmdLdFN6ZWd0UVQ0cElHQjJHRzF3dDZoQjZDZkFDekVGUjlhQ1RBUHdOWHJaY29sbnhQSGQyTThHQnVxTURrMlRIMnBSWGtvSkhERkNBQk9LMnlXMHVsWUZoZmJiTjh5d3ZZdEkyelpQTWFtYjRlNWVHR0dxOU4xMmtzdDRpZ0RUN0hoODdUVytiTEwxREp6czhIcGN6ZVptS3l4ZGRNUW04S1ZEY0o2ZG8yYm0yOXkrY29jblN1ejBNeGdxa1pnRkpIU0d3dkVEdUxVNGVJWXRFZTFITEIxNnhnN3Q0MnhhWHljc2ZFU29WRjR5bUN4WkphQ3JoaTVzM3pPaENiTzRud0V3R21VVVl3TlY5aTNlNUpONDdWYmp2RUszQW9XK0trWG0rdDJuL2U2SEFldnBLOWRiL0RwMTVkNSsvMHp2UC94YWI0OU0wTzAyTXo3dFQyZjVVbHh2UkN3em01T3VtVlllMnZoYlFiS1k2Ulc0c2krS1g3OHlpRmVQM0dRbDUvZHlmallyWnY3S1BLTHdnZEZhNDN4SUNpRjFDbytWQU9JeS9tWm9tVEFkL2xWWlc5MjF1MGVZRGNBVVBYeU5lbExBV0FwVlFQR1JrcVlnVzllS2ZBd3d4Vjh2MmhmeDRCcUdTYkdhbXliR3VHcC9WczVmbWllWXdlbWVQK1RjM3p3OFRtK1BaL1NXbXBEQ3NiTGgweUE3a1RCTllaUUE2U0t1Sk53WTZiT3QyZW1tWm9hWnVaQWswMFRLejlmK1F5VWxTbEFxWHdzM3F4cWJiTWtvNVBFZVZwMENqd1A3U2xVdndiRzl6KzRYcmQvL25WMEtPdHdXbE9waHV6WU9zYUo1L2Z5L0pGdEhOeXpoYTJiaGdsOWcvRU1DdFd2WTZBZTVKZmhzWk8vZDg3WjdwOFVtYk9FeHFOU0RaZ1lxUXo4WEc2d0I2aG9pbmJHRVFONnMrZnoxajgvb1Y2ZlhlS3JzMWY1OElzTHZQL3BHYjQ5UFUxcnNRRmFvMElmMy9TTzdObllGTzE4Nlo0bGpsTXdQa1BEWmZidjNzd3JMeHpnalJNSGVQN29Ec2JIaGxjZWRxZHg4dnRNYVVVNU5BeVZQYVltaDVqZU1rcTlVc0x6UGZ3UWJPUlFubG9lczExOWZDOFhaRkN1K0xRNk1kRU5CV25LNXZFYVErWFZ3eG4wQ3g4VlZWZ0syRlFLMkRRK3hMYXRJNVFDbjhYRk5yT0xEZHFkaUNoS3lYdW5YSGQ4ZisyZlBJM0I2WHl1eGRKaXhNejhFak96U3pRYW5WdC8rRTQzZXJzenBRTGZOeEQ0NERLVTJmam4wamxIa3VieldTcERaWFp1RytQNFU3dDUvZm05dlA3Q1BwNDZzSTF5c0liWmltTGRKQUNJd3VoZHNLOXNUUE1yaUxuRkJwOTlmWVYzUHp6Tkh6ODl4N2RucjFHZmIwQ2M0ZzFWOEgyMW9aNU5XQjVpMEVwaG5hUFRUdklySjYycGpBOXg1TUEyWG43dUFEOSthUjh2UEwyYnFjbmxLN1BsQWg0Ylg0NjNMczZDVW1oZkUzaUdJQXdvaFNtZU5wUjhTSEFZOC8wQndGb29CejdXWlVTK0R5cXZBNkJYWExIbHowbGI5WU05dlVmZDFQZ0lSdzl0NDd1ek43ZzZVNmZSakppWnJSUEhBQTQvdVBOcmYxc0dsREpnSFZHYzBtekVMRFVqMnF1WFhON0Y3VTZVMW5ZL2wwcUQzdGpzOHQ1bkpZNVRjSlp5dWNUT2JaT2NPTDZIRThlMjg4cnoremwyYUN1Qko0My9nMVBjTDUwRWdBSngzZEtxcXZkbjV6RGRmczAweWZqbXUydTgrK0YzdlAzZXQzejI5VFhxTjV1UXBXRFU4aElvMWovYnY3ZXVYcEVYVVltVDdpQytBNm9sRHUyWjRxM1hEL09qVi9ieitqUDdtQmkvdGR0ZmEvTGxQVC9FbDFYcHZIcGJZdWtrQ1oxT1JLZVRvclhDdXU3dWhHb05QUUJBUmtRU1dlZ2trS1owT2ltWkhXeDQ4dWVUZWVBWDl6eDBpNTFiUmpsOFlDdlhaK3JNenpWWVdtclRiRVI1Y1plZ2hBSHNPdm9CTkE1ckhKbktTR3hDa21hMytTU3Q3TGJ2WmM1OFIrbGI2MHhFVVVvVzI3ejdwbmVZQVpLN1A1YmJmbTdTRExSaWVMakMwL3UyOHVPWDl2TGFzM3M0ZkhEYnFwb0Y0dDcxWG52NXdza25xNENVVXYyR0gvSzEyRitmdmNiN241empuWS9POHNXM1Y1aWZXUUxsME5VeW51S3VWN3pmcDNlOW0yV1dldHVTUlNuRUZqVlVZZCtlVGJ6Ni9CNWVmM2svTHgzZnZhTHh6KzlyZWZuVkQxbkVvOWUwT0tmenhydzdWNksvNGRDS3gzaXIzbC9yZmlXMzVWK1owNnQrMXBGMExINVpGYkk3TXUydWN6ZGE5K3RRVkFMRDFza1Jka3hOc25seW1vdVhiOUpzeFJEZjIxaUpVYUJOdHpiOHVvcnpyT1N3eEpsZDUrcUVWYmZoQmc1WENsTU9HQit2c252M09FY1BiZVBRM2luQ1lQa1VuZmM0T0t5eks3NExVdHptTmxhMThhcTdYRGxmY2l5dlY0OEVnSUp3NUNlUTJGcktxeWFiZmZybFJmNzVuVk84L2U1M2ZQcmxSV2FuRzVCRUVQZ0VYcmRyZXNQYjRpcUNRR08wWTNZaGcvbEdQcU5xdk1iVGgzZnc1bzhPODR0WEQvRGFNN3ZaUERHNjhqRS9vZVBpZGtWdjhSUDZKTmVvbS9GSVhSNldyTTE3bXp6ZlozaWt6Tmg0aFlueEd1VktpS3EzY0ZxVHdicktKUnZJTjZuS1hGNU90OStRcnYwMlZtL1UxR3pGdERzSldYZTQ2SllaZ25jelVEZkRXa2VhV2xUZ01UWlVZZXZrR0R1MmpySnRjb1RTTFV0ZjgwOUw2dklUdHhyNE8zRUhidmtQZVFpUXhuOVFZUU9BZHZra2JWZUF3bEIzVzlwMDd2SXMvL3plYWY3MjdTLzU1UE1MMU9lWDhnYmE5OUYrMEMzUW96WlVoMXdObktFMCtTUTQ0aFJLSHR0M1R2S0xIejNGbjczMU5LODh0NHVSYXZXV3g1elBUM3p5Wmpock5maWhXNjU3LzBQM2Nqd0s4cWVyMGRDdkxaRnpCSjZoRkhpVVN3R2xjb25BTjBSSmlzZnlFRlorRzJ2cm1kSllVcWZKck1ObERuWExNYXVHbUpZdnoxRjY1ZnlYcFhaRXA1bm12UmZLTFgvWUI5L2FPNjNnN0Q3eHhOcjhNR3NKU3g2YnhtdHNtYW94UGxJaHVNMkVQNjN6SWtCNTcwV3hQaWZpd1Noc0FDaUtYcGUxVmdwak5PV0JiVXd2M1p6bnR4K2U1cmZ2bitiekx5OVJ2MTRISExvYTRBY21QK0hvN25qNE9ndVA1QnNLUVpwWkZ1WlRjREcwWXFpVjJMWi9DMis5ZXBnZnYzS1FsNTVaMmZqYjdtV1pjNjZRM2VGRk5YZzFtODh6c2ZrY0ZRODh6MkM4YmhqVWhpekxCdllMZURnNnJZUjJFdVV6UGRYR2EvTGFLSy8yVjlJQjFXckkySENWb1hLUWJ5TFUrNW51ZDBMcCs3Zk50UkFnQWVESjF1MWliTWVXU21oV05LamZYWnJoYjM3NUJiLzgzYmQ4K05rWjVtWVh3Q2JnZTNpK3lhOHdldVBkNjdqeWQrUVhRMEdnQ1gyUCtsSUVjMHZRYWNMUUVFODl2WnUvL1BseDNucmpLVjUvZmk5alF5dXYvSmN2Yk9SVVYwUzlkMTBwRDYzQkdJMHhHazN2cXRjQitkWHh1bmJZVzNIck52OTF1ODkxdnRyd3JrY0R0RHN4U1piaE1wY1hHZElhanpWMUFLQjZQV3FwZzh5Q1o4QTRTa0ZJS2ZRcFYwdFV3K1VlZ1A1bVFJTi9JY1I5SUFIZ0NkV3J1YTVRbEh5MW9tcGU1aHh2di9zdC8vRWZQdWE5VDg0Unp6WEFVMUFOMFVHQU1RUDdwSzl6Z1hydkhKMGtEczg0b3NoQm1vRHlHZGsxd1M5K2ZJei84cTllNU1RenV3bFdqWnNPZHVuS09VNzBoa1N5UjJ5WUxrc3pPa2xLbGxueXVvYWFsVTMvT3ZWU3MzSmdOTWFBN3k5L1lUYzYrVmFJN3lNQjRBbmtuQ096RnExVVhyTis0SkttMFlyNHg5OS94VCsrL1NXZm5yeEVmRzBlaklYS0tPV1NZbm5MelBXUCtXdWRqNVhhMU5KYWltbE4xL3ZkL3BzT1RQR0wxNC93NTI4OXhZbW5kNjFvL0tYYlh6eE9zc3hoWGY3cmZqYkwrWTYxM2Qzc0h0ZmRIc1ZqUlFMQUU4aDFDKzJFb2IvaXl2L2FUSjMvNzk5K3hOLzgrZ3ZlLy9RY2l6Y1g4eXQvNHhQNDNSS2FySy9MdjNkL3ZhdTE0YUVTelVhYjl1SVNOQnJnQmV3OXZwOS84K2NuK0tzL09jYXJ6KzhqV0xVS29WZUdXSzc2eGFQbWR2Tm5uZXJOVWJqMXE3S0dNZ0IzcExySDU5SDR5WnY4S2g0OUVnQ2VRRW9weXVYbHJ2eWVQM3h3aXYveDd6N2tEKzk4Q3dzdEtKY3BUdzVoSFpodVNlREIyZFhydVQvb3J2TmZhTk9PWW9oU3dLTzhaek0vLzlGVC9LLy81UWxlUHI1M3hYSDVmYWx1aFVDUWNYOVJaTDF2M1NNMjRpR2VZQklBbmlCcGx1RWMrSjdCRE5RbHYzNXprZmMrTzh0LytzY3YrUGp6QzNCek1mOEh6L1ZuNjYrMzhlMVZTZE5hVVM1ck1tZW96N2U3RS80U3FBYnNmR0UvUDN2OUNQL3E1OC95L0xGZEs0N3ZkL3ZqcE5rWFFvaUhRQUxBRThJNVNHSkhSb3J2YVhvTmVweWsvRTkvK3hILzA5OS96Q2VmbmFNOTE0QktDWXhHbDRMK1ZjZTZKeGwxRTRCQzRYa2xqTExRanFHWmI1dTc5ZUFPL3R0Ly9UTC82azlmNE1YanUvRDF5Z2wvdllsKzY5bCtWUWdoeFAwakFlQXgxOXNrUnlsRnFXUlFhdVZiK3M0SFovamIzNXprN2JlL2dmazZESldwVGc3MXh5KzE3cFlZelc5bXpYcGIrYWFaWlhGaGlVNmFRck1OSm9TZFU3ejEraEgrOHVmUDhkb0xnOTMrbHN4MkczN2JLeTk4cjYrQUVFS0lqU2hzQUxBcW4yYWoxbEhCODFHVVdVc250bFJLSmk5WDJuWDEranp2Zlg2ZS8veVBuL1BoSitkaG9aRVBMcXFWN2Z5NkwveTczZjVoMlJDWWdKbUZCdTc2SExSYVVLcXc2K1g5L1B5TlovbFhmM2FNRjU3WnVlcll3ZnJsNjMrdVFnZ2g3cC9DQm9Bbmh1dXVSRjdWb1A3akg3N2szLy9IOS9uZ283TTA1cHBRcTRHWG9QMnczK2d2YjdPN2RubkQ3ZERrUy9aY3gwR3JEVmpLdXlmNDEzLzZQUC9WWDcvRVM4L3N4amVyeXBrcXVnVmRrRzUvSVlSNHlDUUFQSVo2RGJmV0NzOHpyTjR0OUkrZm4rTlg3MzdMMisrZHhsNmFoV3JJMEtZS1R2bGszY3FsNnkzdEMvbUdLRW9wMGl4anFSNlRkRnBRYjBEZ28zZHM0VTkvZEl3L2UrdHBYbjkrUDROVjE3S3NXOHlFVzRPS0VFS0loME1Dd0dQSVdrZXJZNm1XVjViM25aNnQ4OHMvZk1zLy9lRmIzbjduRkhaK01SL25NSkE2MTIxOEhjNnVmOGEvSXQ5R2RhaFNZcjdlSXBtcFE3TUpmcG5keC9meXM1OC96MS85OUJnL2V1a0FnNWYzRG9YU2VVVkNkVi9McGdnaGhMZ1hFZ0FlUTBvcC9QRFd2ZVBmLytROC84UC8vRWQrOCs0WkdqY1dJQXloV3M0M1R1bU8vZWVUL2RhNXpyLzd1N1dPT0VucDJDU3Y4SWVEcVZGKzh1YlQvTHUvZm9rM1hqcHdTNUdmM2wycERTdzFGRUlJOGVCSUFIaEkzSnFuM1MvdmsyYXQ2KzdRcHlnTkxLdUxvcFN2emx6aE4zODR4YnNmbmFOeGRnYkkwRnVHS1BrKzFya05UN3BUS3I4L20xbmE3WWpXWWh0YUVWUkQvS25OdlBYS1lYN3hKOGQ0N2NUK0ZZMS9scm51VnNJeTRVOElJUjVGRWdBZWd2WHRzTGRjTUNlT0xVR2dWeFQ1V1ZoczhjdDN2dUczSDV6aVY3LzdodG5wUlRBT3RNSFRKaS90cThoRHdBWWVxMUpRRG4xYW5SalhUbUdwQmI3SHRzUGJlZXZIUi9qNTYwZjU2ZXRQVVFwWFR2alRpbHYyVUJkQ0NQSG9rQUR3RUdpbE50QWJyaWlWOUMxWDA1OThjNGwvZVBzcmZ2WGUxNXc3T3dOWkJpTTFnbERsMjZpcWZQZS9EWlQ0Qi9MeXZzMTJUQ2RKSUk1QWFZS3BNVjUrOFJCLy9mUG5lZVBsQTJ5YkhPbit0R053ODBDWjdDK0VFSTh1Q1FDUGtjSEdmN0VWOGZXcHEvejY5OS93N2tlbk9YZnFHaXkxb1JKU0t1ZkRBNzNkMDN1L3IvMStGRnJsR3dPMU9oWTZiVWhUOEFKR2RvM3g2clA3K1BtUGovRGpsL2F6cGQvNGczWExHd01KSVlSNHRFa0ErSUVNTm9tOWZmZldkbjFzV2IwejJGSXo0Zzhmbk9FUEgzM0hyOS85aGpQbmJrQW5CcytBNTNXWDNPWGJsVzYwRDk1VDVOdWVaUm5FTVJqTjVNNEpmdnphUVg3MjJtRisrdG9odG13YXZlVzQzbEpCdWZRWFFvaEhtd1NBaDBBTi9QLzNXOW40SjZubDVLbkx2UFB4YVg3NXp0ZDgrZTFWT28wV2hBRjRQcVdTUmh1TmM3YS80YzU2SDV1MWxrNEdTWnpsRy92NGhwSE5ZN3o0OUM1KzhjWWhmdkxTVVE3djJ0SS9wbmMvMWptTUxQUVhRb2pIUW1FRGdIYjV0Ylg3Z2ZiZUhPd1dqNU9VcFhhSEtMWTR6MUR6TkVZNVVwczM5ODdsZnc1OGhXYzBGb2R6bW9XRk5xZk9UZlBPcDkveTIzZS80K1NYVjJqTzF2T3FQbFdmd00vN0ZkWjk1ZCs5WUZkSzRhUG9aQmxSdXdPeGcwQXp0VzJjRThkMjhiTTNqL0t6MTQ5d2NNL1cxWWYzcS93SklZUjRQQlEyQUR4TXMvTU52amw3bmJtRkZsN2dNVm9yVS9ZTXNjMXcxdUdjSThzZ0NBeGhhRkRXc3RUS3VIeDlscTlPMytDVGt4ZjUrdFFWbWd0TGtGa29seWlWZ3Z6cTNUbXN0ZXRxaWhYTHl4SlRCVkZFM3ZpSG1rMVQ0N3p5L0Q1Kzlzb2hmdno2WVE3dTJiN2lXT3Nzb0xwZC8vZnJGUkpDQ1BHZ1NRQjRVUHFONGExai9SZXVUdk4zYjUvazB2bHB5a0hJNk9RUUk3VXlyVTdVM1prdkwvWHJhVVZZMGlobmFYVWMxMllXdVhSbGtUTlhyak96MElSTVFja25ySGlZUU9FU1VNNXRZTUpmdmxLZzNiWmdFK2hrRU1DbXplT2NPTHFUbjd4OGtEOTU0eWtPNzF1KzhuZUFzL2s4QXkwdHZ4QkNQSFlrQUR4d2VXTStPQVJ3OXZ3Yy8rSHZQK2JzQjJjb2hTRmorN2N5TVZLaTJZNUpzd3pYTGR1bmxNUDNOTTRwTXB2UmlTeXRkb2RPRk9WWC9vR0Jia0VnRzY5M1d6L3lybjhGb2E5cHg5M0dQMDdCODlpMGJZUlhuOTNIVDE0NXdKKy9lWXlqaDdmZmNoTmFLM0RTOFMrRUVJOGpDUUFQVE40c3BxbGJVYmdIWUhxK3lka3ZyMER6RkoxbXlMVldoMnRqUTlEb1FKWUFwdHN2bi9WdkI5K0FNUkI0NFB2NGxTQ2ZxVS9lZmU4R3l2dXVwVUh1VmVuTE1rZmJaclE3S1VRcEJJYkp5UkZPSE4vTm15OGY0Q2N2SHVUbzRaVmovcG5OdS8yTlZuTDFMNFFRanlrSkFBK0JTek5JTXFEN0s3R1FXa2d6eUJ5UURpemV6d0FOMWtKSWZzV3RGWWFWdlFwdUhmWDlsY29iYitzY3JTU0ZScFEvaGxDemVlczRMeHpkeVU5Zk84SlBYei9LMHdjMk03Z1N3ZHBlajhaOWVDR0VFRUk4TklVTkFGYmx6Wm95My91ajk4SEsxckl5WElMTkk3QXdDcFJoOHpDbGtRcFIxY2ZaVmZ2MERxNVM4UE0rZTAvbkRYNzNRbnhkTS81N014S01COW9wYVBTNi9SVmpVeE84K3R3KzNuejVJSC94azJNY1c5WHQ3OGlML0JocC9ZVVE0ckZYMkFEd01GVkRqODJqRmFZWmc3Qk1lYnpHMXBFYVM2ME9jWmF1WFBuZit3OExtYzFJVThBdFR4UmNUK1BmcTg5anJhWFR5ZHQ5MmdtRUhyWEpJVjQ0c3BNZnZYU0FuN3g2bUdNSEJpYjh1ZnkrckxNWWJlVHFYd2dobmdBU0FCNEM1eHpPZGx0dmF5R3haSmtqelN4WmN1ZkNCUG0vckcrVy95Q2xGQjZLeFRpQnBTWjBMQVNhOFYxanZQemNQbjcyMmxQODJZK1BjUFRBZGpCNnhYRlM0bGNJSVo0c0VnQWVnaXh6ZE9JRWlDQlJSSEZDSjBxSTQ0VE1XdElIZEwrcU4xeVFaTkNLUVVFNHVZbFhuOS9QWC96a0dEOTkvU2hIRDI1WmNZenI3aUtvdFd6dEk0UVFUeElKQUErQmM2bzdhUy8vWmNpM3ozMFFWTGRNbjdXT0xITll5T2NTVEE0elBsSGwrV2YyOFdjL1BzVFBYanZFa1FPYkJ4OGttWE1rMWhGby9jQWVueEJDaUllanNBSGdoeTBGdkxvWWtHWDFwSDFySHRUMWRhOUNuNlBUc1dBZGZzVmo5OVp4amgvWndadXZIT1puUDNxS0l3ZFdUL2pMTi9ZSnRGVDRFMEtJSjVIKy9oOFI5OXZ5dXYyTVBJWThPRXIxeHZESmEvekdDWUUyYkpvYzV1aFQyM24rNlowY1c5WDRwMW1HdGZtWXY5Wkt4djZGRU9JSkpBR2dTTHJ2dHMyZ2sxcVdXbkZlZFhDVk9MWlllMnN2aFJCQ2lDZUhCSUFuWEcrdWdWS2dnaERDTWxHY2NPSGlERjk4ZlptVDMxNW1xUm10T01iemVrV0c4bU1sQndnaHhKT25zSE1BaXFSM0pSOEVCcTBVN2FaamJyYk9sOTllWTJwOG1KMVQ0L3ppamNOVUs2WDg1M3gvNEZnbmsvK0ZFT0lKSkFIZ0NkZmI1cmUzR2lEdkN2QWdUWm1iWCtLakw4NVJDa3ZVR3kzKzlQVkRiSjJhV0hGOEdsbDBvUE9hLzkwZ0lIbEFDQ0VlZnhJQUNpQVBBY3VyQWNLU0kwbDhYSnB4K3Z3TWphV0UyWVY1TkJuLzlpOWVKQ3lWZWtkMjl5Wll2aDJaRHlpRUVFOEdDUUFQUVY3dVgvVi9XYVhBNWJQdDF6YmozdDN6QkwwZ01NUnhnbHVLdWJiUTVqMVNObzhPczIzVE9EOTU1U0NlN3dNS3Y1cC9SSG9yRjJSRmdCQkNQQmtrQUR3RW9lOVJydmkwS0tOS1pjckRWWWFIUW94eXhGbDZ4eTUyQ3pqcnlMS1VKSEczYkFPOEZxNDNIS0JBK1I0UVE1WXhjMjJCMzczM0hjcHozSnhyOE5NZkhXUFRlSFg1dnAwbGpoMWhxQ1VFQ0NIRUUwQUN3RU9RNFVoVEMxaGNuSkdrR1owc0k3SVo3ZXd1bFlrY0dBZHAzSjJkdjg1ZWdINVk2UFkwK0JxeVdobE5oclVacDg1Zll5bUtXYWlubEVLZnYvNno1L3ZIR2cyQnY3d0ZzUXdIQ0NIRTQwMEN3RU13dDlTZ2Zua0d1QVMyUkhUS2NHbnpFTlE3a0tYTHMreDZCUVI3RGIzUkVCZ0lQRlE1SURENTFmZzZkd1R1VTBwUkxodTBNclE3S1hhaHliWG9PdTlxemJiTlE0eFAxbmpqdWYxb293R042VzZkYkozRFdUQkdFb0FRUWp5dUNoc0FyTXFMSUNqelE5emJ5b2F5c1pUQXpBSXdDL2lRbE9CS0IyaHg5NmJjQTBLb1ZYSGFvQ3I1c3I1OG92LzZod0p3eTFVQ3JkVmdnQ1RoeXVVWi91bnR6NGlUbUpzM2wvakZqNSttVmc3NngyYVpKVTJocEdVNFFBZ2hIbGVGRFFBUDAwaXRCRHMyd2VXZGdBRi9Fa2FIb0ZuTlp3ajIydkxCTWsxS2c2OUJhL0R5UmplT003UTJHSDhEUy9NRzg0S0NNRlNrcGtabVU0Z1R2ajUxbFZhVWtTYU95WWxoM256eFFQL0hmVTlqTk5MNEN5SEVZMHdDd0FPVHQ3Q2VwMjY1T0gvdXlFNytqLys3bjNQMjFERkdQRU80WlpocXBVTFNTY202T3hSWndHaUROaDVLcFRnVXJVYkU3T3dTRjYvTmN1SEtBdTNGQnRiRlpKUW9CZm5NUHRjYm5GOW5qNERXaXNCWE9IdzZVUXJ6YlM2a04vaDlLV1RMMURDaFp6aCtkRHZsSUFBVXVodE9zc3ptd3hCYVNYMEFJWVI0akVnQWVGRDY3YS9xdHNmTFMramVmT2tnengzWlFXWWRKYytnUWc5UEs4Z2NHZm5QV2d1bHdLQTlqYldReGluWGI5YjU0dXRML1ByZGIvajFIMDV6OG5SQ1Z1K0FTMUVxcERjeGNEMXpBbm9UQS9QanVyVUNmQSs4QktLVTc4NU84N2UvK1lKT0hEUGZhdk9ucnh4R21lVnhreVJ4ZUQ0WXA2UkNrQkJDUEVZa0FEeHd0N2FLMmloR1JpcTMvcWdIL3ExL2k5RmdTaDY3ZDB5d1kyb1VVTXpXWStydEZoZVRtOWdrb1UwRXlzTTNDclBPZVEyOXpnS3Q4MHFCWVRrZ3dvTXNJMXRxODhtWGwwZ3ppeDhHYkJzZjV2aFRPL3JIbGtwbXhlM0lxSUFRUWp3ZUNoc0F0T3V1cTcvTHFydjdxVGVoLzE0WjMzRGkyVDNjbUt1VDJnUlBhODVlbk1GMkVyQWQ3RkFaWDZuOHVhMnpPNkJmTmhnSVM0bzA4Y2hhSGR4TXpGZnFLa1Bsa05IQXB4Mm5QSE40RzZVd0dEZzRIdzR3T2g4T0VFSUk4V2dyYkFCNG5HM2RQTUxySnc2Z3RNYmk2RVFKbDYvVm9SM2pVcHRQRk93dCtXZnR3d0hXdWY0UGE2MEpRa2U3NmtFcklWMW84OW5KeS9pZW9aTmFrampoOVJmMm8zcVRBVnp2LzZUeEYwS0l4NEVFZ0ljZ3pTeEpZbkZwbXYrRjhiQzMrVGtOSkduZUl2dWV3dmNWdnBkM3VSL1lzd21VWXFrVHMxUnZrNmFXNjljV3lhS0VWcHFnVllCZjZvN3B1N1dIQU1pYmNLMFZucWV3bFJLUk1oQmxOR2JyZkhMeUV0WTZnc0F3WEsxeS9NalcvQWdObmg0Y0RwQ3l3VUlJOFNpVEFQQVFhSzBJQW8zemw3dlFiOWRVT3NEMzh5NzVmQ08vNVoveVBaOGorN2VTSmhseE8wVnJ4VWZxTWxldjNjUWxDWm5PQ0xXUFZubk5nL1dVREhia1A1OGsrWmgrV1BhSnJJVm1TdjNLTEI5WlMxZ0tDQUpESzBsNTd2QjJ3bkM1OGJmV1loMnlWRkFJSVI1aEVnQWVBcVZVdnIzdU9qZ2MxcnBicnF5ZjJyK0ZSaXZDV2t1Y1dLSWtZdmJtSXFRSmFlcmhHYkFiR1E3b0hxU1V3aGlOcXBYb09BdnRsT2JOUlQ3NTRoS2g3NU9rNEduRkM4ZDI5QjlYNzdsSjR5K0VFSTh1Q1FDUEdlc2N5blZuN0FPKzczSHN5SGJRampTemRLS1lyeHpNM0pnamJqU0pqU0VvaDNoR283ckhyMnM0b0x0dmdOWUt2MUlpSVlJbzRlYlZXZDVUaWpSemxIMmZ3TmNjUGJRRm93d29SVzhlb0xWMkhic2NpclhvVGRic1Q3dDRrUHFyTzVXczhCRGlDVlBZQVBERGxnSytkNHJsUmhWV2pyRVBsMHU4OHR4K3NKb3NzM2pLOEVHV3NuaXpEa2xHRWtDNXBDR0YyRm5XMDJya05Ra3N6cmw4NktKV0lrWkJJK0xtaFd1OGw4VDRHaEtia0tRcHp4N2RpVkc2ZXl6RTF1SXJqVFpTS09qK1dkNEo4c0dFZ040TmRodDlwVkRLNFpEM1VJZ25TV0VEd09Ob2VTYytSNVk1akZuK080M2krT0h0TkRzUk5uTTBremFmV2tmbjVoS3UwYUpKTmE4UG9McUxCTmF4TkxBM2Y4QXpCczlYYUJTZExJVjJ4c0wxZVQ3NDdEdzZCTThvZ3BMUDAvdTJkZWNzUU1ucjNxbTRiL0llRlpEWFZRaHhMeVFBUEtZR3EvMzJ1bVpyMVpCWG50dEx5ZmR3V0xRemZQTEZSZHJUQzZUelM2VGxrRkl0b0Z3MlJKRWp5K3lhaXZjTS9reVdrYS96TDVlQkNPS0k2MWVtZWZmRGpLUURvTENkbEtlUDdlcHVaWkFmYUszRE9vdFdDcTMxYmU5SDNOMUR2d1ozdllFSEdRNFE0a2tnQWVBeDFCdVQ3NVVZN3A2U0FSaXFsSGpqcFgwNDVYQk9ZVlBISDlzUmJxRU5jWVREUnlrd0ptL00xM1ovK2UvV1duRDVmZ09sME9DQ0NsRkRReU5pK3V3TXYrOVluTXFYT0NxdE9YNWt4OEN0T0NLWFVGWStnMTNNNGpIUjZ3bVN0MHlJSjRZRWdNZlVjcU1NaWJNRVd2Y25CaW9Neng3YVNkTEppTE9NVGlmaTgyK3VZQmViUkxNdG90akg5M3lNVVJpalZuVHozNDBEbkhVb0JaNm5LZmsrT0VlVVpCQ2xMRjZkNWNOUE5iN1RsRW8rNVpMUGdiMVRRRjVZcUtwTDVPUFh5eXNNeFBvNE1weURMSDh6OEpXL2N0ZklCMFhKK3lYRWswWUN3R05PYWZEZHJWMnl3OE5sM25qNUFHSG80MnRGdVZ6bXZVL1A0SzdlaEpZaUdSdW1QRkdtVkNyUmJIYklzbHVYR043Mi9yci83QndrY1Y0b1FGVktPQjFEdTgzTXBSbCtuMWppTktQVFNmanBtMGQ1WVVWUGdDTExNcElVd2tEMVE0dTRrKzRHVDBxaFVDUU9ia3d2Y21ObWdmbWxKc29hZ3NBajhEMVV0d1IwbnVqVy83cHFsWS8xSkhGS2xEcU1VNHhOVnRpMWFaalJzZHFLbjdYZElKaVRJUUVoSGtjU0FCNXpXcWwrcTV4Wmk5YTYzMHNiQmo2dnY3UVg2K1VOZXl1TytLelJodmttdENMaW9SRGZUemQwUlo1bGxvejhyc3RsRDFzeWRBelFqcGk3TXN2dmtyejN3VG9ZcllUczI3MXArVEVialllVlJtTU5ldFdaZXk5Vm1tVFVGOXQ4K2QxMXpsK1pvYjJVb0R4RHBlUjMzOGQ4eWVWNkNqLzE1SjhsYUNZWm5WWkNZQlRidDQzejNLSE5ITnkzbFMyYlIvcy8yNXVJdUpIN0VVSThHaVFBUEVHY2d5akxDTlRLNFlBVFIzZEJCbkhteUdMTHlhOHZ3M3lkenJWNU9yVVF2MXpDRHp5VW9sOXNhQzMzaGNvYmpWS2d5WURNaGlSWWFFVTByOC94MGVjRzdTdXFGWjkvK2ZObjJiVjFIQUN0Tk5yTCs2M3pna05PYWdYY2dSdHMvUUdqRFhHU3NWQnZjTzc4TkJjdUxiRFlUREJHNFdrSXd3RGpxL3g5WE9kR1Y3NVNLRSt6MUk1Sk9na21NR3paTk1SY2ZZbTVSb2NYanU1aTU3WUpZT1hFVWRrQlFvakhrd1NBSjRqV2lnQjF5MHp4U2hqeTVvdjdLWWMrRmQ5amRLekc3MzkvRXE3ZmhIYUhaRlBBOEhDSThSek5Sa3c2MENqZnlmSlFnS09UNUQrdmxjS3Zsa2t5QmUyRSt2VjUzbjAvSTJxbkxDeTIrZG1QRHZQcXMvdjd0K0djSTRyeVZtcHdXMkZ4WjU0eGxNS0FTaWtFcDVpZWEzRHV3alN0S01Vb3FKVkQvSkloUzJ5L211TmFhYU53U3RHSkU5STR3L004S21XUEs5Y1d1SHhqZ1RTekROVktqQTVYKzhmMHdxTHIxcG04bnlIT3FkNHlWSENhUnlabEtDQmZETnRiRmRIN2RXOHM0RktIczJ0ZnBpdkV2WkFBOEFUcGxlQjFMdDl3eU9qQnEyck5pOGYzWUxTSDV5dm02M1crYkhTZzBZQkdtMGJWSXd3MVdkWWIyMTM3MmRiYWZDc2pyVFdWUU5QV2hrN1FoazVHOC9vODc3UlQydTBVbkdQYjFCaTd0dVE5QVVvcHltV1BMT3R0aFNTckEyNW44TlhRQ2liR3l1emVOc0hWSGZOOGQybVcrSXlGbXcyeU5LRmU4U0gwd0Jsdzl2WTNjc2M3NmhhSmlQUDNLdFdhemt6S2ZLTkRNK2t3TkZSbTAwU05sNTdlUTdrVTVvOW5ZRW5uL1c2MHVsTVM4bC9ycTEvMVdOS0E4dko1UGRJWkpuNElFZ0NlVks0N1VVdXpZdCtCNTQ3dHdKSVJ4U25HOC9ucTVEblNxMHRFVjJPaWNrZ3dXcVZXODhnc3hIR0d0V3V2RTlBYkY5WmE0WmRDRWhmQlVrSTJ1OEJuSi9OcWhLV3l4Ny80MlhQczJUWkpHT1JYL2Nab3JIV2tXWVpXQ21PZTdONEE2OWIrL0pSYWJydDdrelJIaHlvY1BiQ1ZLSTY0TWRmaTBwVjVMclk3c0dEejVRR2RGTHp1RzJkVS9uZTlMSEMzdTg1NnhTVzZ5LzJjZ3lqQnpUVTVkMkdHUDc1L2lxSEFKMDRjcnh6ZncxQ3R0T3A1T2N4OWJMbVUxdjJoSVdVVTZsRXBIOUY5V1pYcWxoTzlEOEhFS2REYTRDbUZaOGlEbUJBUG1BU0FKMUMremorL2RGS3J6azRLT0hGc042WEFNRFJjNVI5R3kvenkxeWZoeGl4MEV1SnFtU0FvRVdjUnhKQXZBRmQzdllJY0hBNW9SL2tjQXEwVVFTVWt0aGJhR2NsQ2kvYytQc2RTSytMcWRKTi8rYk5uZU92bEEvM2JjTTdSN3FTVVM5NWQyNmduUTdybW54enNVcytEbGlQd1BiWnZHOGN6QWEzSTBtekh2QitXT0h0eG1paHVRMllCSDFWU2VDaVMza3hDV0ZOUGdIRzkrM1drQ2tEVFhtenk1VGZYU0oyaTNVN1FDdDU2OVNDNisyNjU3c3FEL3B5Ris3QWR0TllXcFhSZThSTE5iZmZNZnNCdTl3eTBwL1BKdGxxaHJHSjkyMndOL0tRSEpIbUNjRTVqYlVwbUhWbW1jSGQ3c2pMcFF0d25FZ0NlVUwyVHIrM1c0dys2bDVLOTNvQmpCM2VBOHVqRU1WZHZMUEZWdXdPTEhaaHZNT2Zua3dnZHkxMjhhNXNZdVB3enhtaENINHlxMEE0dHRCT1NtVVUrYlhkb3g1YVJhc2loblpOczJ6cmEvL25oV2duYjdiWjIzVzZGSiswODV5eDRubjhQdDdEOGlreE4xWGoxdWYwNFlLZ1NZdDVYbkQ1emxVNmpnd29NMVlvaE1JcTA0NWF2L05jeU1UQUFZeFZaNmtoRzh3TTduWWo2elVWT09vZHZGT05qRmFZMmpYQnMvOWI4VVNsRnIrUG1mdlhVNXg4RjJ5MUFsV0lma1lrQW50TDR2c1pvamRIcTNzYytGRGhTYkpZUnh5bHhrdUd5NWR1VWxSYmlRWkVBOElSVGdLK1cvenpvMklFdHRPT25TYU9VZnhvSytlRFQ4eVNYYmhKZlNtQzBSR20wUnJVYTBPNGtaT25hNmdRc2x3MTJ4R25lQ3hINmlpanh3YldoM3ViVW1XdjgzVzlPWXJUbTUyODh4UXRQNzhMMzg5WkRxM3hEb3ppeEJJSEpUN0EvTUFVb2EvcmJOaXVsdXJ0SFpkeTlELzNXMituL3VMVmd3WGg1RWFWbHl4djdiTVN1N1dPVVNnZXhpZVhDbFFWT241bk91KzJOb2V6NzRBeVJpbkdaNmwrbjlvY1U3dlNZWThqVXdGQkE3MmZUbE5iTkJ0K2N2c2I0U0kxcXhTZHVKeng3ZE1mS3VRRGRPU0hyN1FGdzBPODlTbE5MczUzUWJMU0lvb1Fvem5ET2duVVlzK29TK0h0ZXU2ei92QlZhTFE4cnVQVit0Z1pxWW9mbEVOODNxSUdOTlZiMzY2ZzdaSVBldEVsUFFhb1ZHTWhTYUxRUzZvc1I4NHRONWhaYURGVkRVSm8weXdEVm5XajU1SVhpSDVLc05GcEpBc0FUVGluVkg1ZDFxeGVWQXllTzdpRFFtckdoRU8xNy9MN2Vob1VGcUN2c2NCWGxkTCtsV011WFo3bEM0ZkxNYUswVllVVVJVWUUweGJYYWZQRHhPZXBMRWRkbkZrSERLOC91N2QrR1VZb3NXMTRERHovc2RaOUdZYlRHMHdyUGFJdzI0S2s3bnREWHBIdXd0UXhNZWx6eEEydTRpY0hoZ09Vd3RubGloQmVPNytUTFU5TjhjL29xMzBVZHlESTZIVXVhcFZqcjBGcjNHOWoxUGU2OHlRbkNnTmc2c0k2NXVSYWZmbmtSclJYV1Fybmk4OVMrcmJkOU9tdnByZTd0Y2FBR2ZqYkxMSzFXeXNKaXhPSmltMVk3SVU0emV1TUFBK1V2MXZWa0ZLbzd5MDZ2NjBQVnI1WFIvZTlxT2FSYzZRWlV4WHBHZGZvZklxMFUydmNCUzV5bXpDKzB1RDR6ejQzcEplYnJEU1pIeTFRcTVmeDEwZDJtdnpjM1EyTEFPc25yZFRzU0FBckV1dnpxVEdtRlVYUzcyRFhQUExVRFp4MnppeDFtWnBiNDlvc0xVRzhRenpTNUdUdjhBSXd4L1FJejYyMUV0TlpvRGFvYTRKeFAxSTdKNXBmNCt1UUZqSEpzM1R6TXptMmpiTnMwMWoxQVVhdDZPSmFEeEdDQm93Zk44eHhHYTN6UDRCdURNUjdLS1Z4MzBkZTljTTdTU1FaYml6eFloQ0hkclpkdjAyajJwMkFzbDIyT3JlM3V0SmpidDJzemI3NjhqMWFudzY5L3IvanM1SG1XenQwQXo2REdSeGdlOWtnenNGbTJ2aERUSFRaeWFNSktDS2tpaWpwY3VqS0xWWlpTeVdQSGpqRjJiaG1qV3NrbkJXcXRzTTdsRzBBeFVLbDQ5VkI1OTcrdGRmbjFyVEw5VUJPR0hrWXBralNsMmVuUTdzUTRtL1dITU83bFFzNngvdWtFcTkrVFdzbWo1QWNvN2Jwekx0Yi95VkJLRVFTS0RFUFNTWmlkVytUNmRJMzVlb3NvemlpRklWb3J0UFpXSDdqdSt4TGlkaVFBRkloVzRIcExBMWVkUTQ0ZDJNcGkreGcyYy94cXZNeUhINTBqdlR5UGE4ZkVZeFdxa3hWS29hYlRzbVRPRGZhR2ZxL0J3S0FVeXpPY1d6R256dDNnYjM3OU9WbVc4YU1UQi9tVE53NngzTnhCbkZsY21sQUt3M3dYd2grQXAzMjhVRkV1K1ZScklaV0tSNzJ1c1ZtQ2N4cG42VzdGM0h0K0s0OTN0M1JicUc3ZnZ5UHVKRnlmcVRNOXU4RG1pZEgrTWFtREtJcHgxbUJ0dnJWeS95WU1HRS9saFhxNlY1eitxdGZDOXcwLys5RlQ3Tnd4Umhnb3ZyMTBrODYxSzRDSG14aGxlTGhLSzAxcDFkdmdlcnRBcnVIMWRQbnMvdDZrUHUwRGJRY0xEYTZrR1NmTEpmYnUzTVRVK0FqUFBiV0RXclVFS0xMVUVxV1dKSEY0K3M3M3BUVjA0ZzRXdzBnMXdCOElOWEdhMEdxa0xEVVRPcTBFa2hSVUhvS015WHNmZXB0aGZiOE1peVpRQ3Mrb1BOaXRma3d1ZjYxN3JmM3FIcGZCT1NuVmNrZzFDRENhZkwxaWwrWDdwd1F1Vjk3TXc1TExISFFTMnUyRTY3VTZNM01ObGxvSjJydkQreU1kQU9JK2tRQlFJTXY3eU9jbmRUVlF3OTBMUEY0NHRoTlBRYW5rMDQ1VFBxdTNvTjZFcGlZYkxtR05oKzJXbDF2UFJjaGdRUnF0ODQyQ09nQ1pJMjUzK1BEamN5elVXeXdzdGRrNk5jUlRCN2IxZno0MG1nenZCNzNvVVVZelZDMHhPbEppYktUTVNMWE1YTkNrMlVxSWt4VGxUTDdLWWkxNmsrNENEY29RUlJubkx0N2tuUS9QOHNhTEI5ZzBNUXhBSmZBZzhMbzlMSHp2SGdsdVlKdGw1eHpHYUR4UGMvVEFWdjdzcmFmNTNTZG4rY1BGR1dpMW9kRmhicW1OeTlMdVprN3I2ZnVtMysraFZSNUNUQmlTZFdLSUVpNWRtK2VETHk1UUsrZDFBVjQ5dmhjdk1QaSt3ZmNoQy9PNkV2b3U5eG1HRlFETXdEeUNSaWZpNm8wNmwyL01NN3ZRSUlxN3ZTWWIrUnhrZWUrWDdvYVlmRmhIczU0K3BkV0JWeW1ONytYekNYQ3NmV3ZOQVVvcFBFK1JaYTQzVzVlRmVvTXIxK3FjdTN5VEM1Y24yTHR6OGpZSFNnSVE5NGNFZ0lMcU5UU0RkUUtxcFpBVHgzZGhVNWl1dDFpY2EzUHUyeXZRaXVqTU40aWlNbDZnOEwyOHE5Wm1kbDBkbjcxYUFWcm5JVU1CN1VhYmVLN09WMGxDdWVLemM5c1ExYUVLMnllR3U4dXRscnRBczh6bUY5TVBZSTMwNmdtT0k4Tmx0bXdlWmR1Mk1UWmRtMlZtZXBGbXV3MXhodlBXZnY5cDJuMkZBaDk4UXlkTytQU3J5NVRETW9tei9ObVBqekZjS2ZkL2ZqQ2tyZVV4VytkSW5Wc3hOZkhFOFYzOGIvNzFLMndhcS9HUC8vd2xyVk1YYWM3T1FybENzRzJja2RFU3JTZ2xpN0oxOWVTZzhsSUJ2cS9JYW1YSU1oYm5Xbno4eVJtU0tLTVVlaHplTmNtbVRhUDlROVl5aWZQVzk5UHg4UmZuZWUvak0zenkxV1d1WEZzZ1RTMHFERUhuZ2FML3VxNzFvVnZJdXJGSmUvbFN2dHRPcDd2RHcwMkJZUFhqRGt6KzNiRnNlSWxpMmhzTjhqeXdHZTA0NGZURjYvem1EMSt6dE5qZytKR2Q3Tjg1d1VpdHhzUjRwZnNabGNaLzR5UThEWklBVUZDNk93bHE5Y2svOEFPZVBicUQrV1lFbWVYM1l5VSsrZlFDekMvaG9wUmtiSWhhVmVHY0lyTHJteFhuM09CZUE5MHZvbGI1SUhFcjVzdnZydkdmL3U1em1rM0xqMTg2eEp1dnJLNFRFQk9HWG5jbTk3Mi9CcmQwOFE3ODNWQ2x4TGJOSSt5Y0d1WFNwbEV1MVdhWm5nV1hXZkxtb0RjbkF1N1U0ZXU2Vjg5S1FWRDI4YlNtM1VuNTh0UmxadXN0T2paaHk4UUliNzUwY0gwUHZIOTNDcVBCckRxaERWWEwvSGYvelkvNTZldEhHQnVwOHQvLzN5NEJONkE5akdLTVdyV01wVTByeXJwWDkydDdNZk50aUIxT1Fia2NrQURwekNMejN5enkyNFUySTdXUWw1N1p1U0lBYk1TN241emhIOTcraWwrK2ZaTFBUbDJIcFE2RWhsTEY3d2ZYOWF5Y3NLUW9DOFl6VktzQjR5TTF4b2JMQk9WVnoxdUJkNXZoTVFlWTNnNkxBLy9tR3c5ZmU5MWlTL25mYVFNdVdkdno3SDEybEFLLzZwT0dBUzZMT1h0K210bjVKVDcrNmp6N2RtN202SUZ0SEQ0d3hVdkhkN05uNXdTalF4V2tFZHVJRlROU3VoN0dOT05IaHdTQWdocHNRTFBNb2dmS0J0ZHFKVjQrdnBPTUZPMWdkaUhtWWl1Q1ZnU3RGdTNTVUgraTEzcS9Ob01OcmRhYVVxVkVSd2ZnVWpyMUp1OTllcDVtTzBWYjJMTnJsSjFiSi9zL1g2dUVaTTQ5a09HQTIxMEpEMVVyak5RcVZNb0J2dEc0TksrTVIybnRQUUM5MDB2djlYVXVnL2syMXhzUjc0MkVITm0xbVMyVEl4emN1M250RDNaRk85UWJDckMwV2pHbGtvZm41Vi9yQTdzMzhkZS9lSmEvKzgxSnJyL2ZBaXpSUW90cHJlbE5XOU5hcjdraEhYenZ3dEJRTW9iNUpRUDFCSzdOOGVXM1YvbkR4MmZadG5XU0E3czJmYyt0M2Q1SFg1M24xKzk4eWU4Ky9JNHZ2N3NPTS9YOE9WYUc4RU5GR3E5OXc2cStOSi84cWtPUGtlRXllM1pPY0dEM0pPTURleHBzVkpRNGlGSllZNk8vV3U5NWVKN0c5eFZ4SEpDMm1zek9MREo3OWdiZm5wM211d3N6dkRpOW0wYXJ3K0hweld3ZUcwWWJRMm9keWlod1dYOGxSZEhwN3FJbGwya2MrWDRZV21rQzN6QlU5cGdZcXpFNk1yVGltSHlWVERGZk93a0FCWGVuMCtqbXlXRmVmWFlQV1pSeFk3NUZIRWRjdnpnTm5ZeE9vNFAyQS94QW9VMCthMnE5Rzgva005cGRkd2E4SXN0ODBuWkVkRzJCejFQRnlIQ1o4YzFWL3VLdFo5aTZlVFNmOURhd3BMRlhObGpmaCtHQU8xM0VlMXJoK1JyZjk3RG9mTEcyWGQ2cHhRc2c3bnpQYlE4c29YU0FOajdXZENETk9ILytKbi8vOXVkY242NnphL3M0UTdXUXpDcVVjWGpHUitzRTVmbU0xMnBzbXhwaDcvWkpOazNXYnJsOTFaOTF0cm92QUg3eThsUDhYLy9QZjhsLy9zOWIrZTF2VHJKMDlRYk4yUVVZSGFHOGRaaGFLYURWU3NqczJ2cXdIWG1uVFpxQnIxTW9oL2tTQm11NWRPVW1mL2Viazl5WWJySjM5d1NqdFdwK1JaeGxaRGF2ZHFjMEdHZEpuU05OSFU0YnNpeEZBL1ZHaysvT3pmRDFxZXVjUG5lRGRLbWR6N2IwTlg2ZzF0ek5mc3NrUEdmQldTcWxrRDA3Ti9QaXNSMjg4UFFPdG5aN0tucXY0UjM3UWdiWG82NjZweVRMSU00bkdUZ0xlVEgvcER0M1lqM3llOWE5TXNES1FXSmh0c2taZTRNa3pwaWVtZVBEeVRFcTVRRFBHSklNVExmSVI0YTd6YnRmUU4yWElJN3o5ME5oTVJyR3hvWTR1SGVDRjQ3dDRzVmJBb0M5TCtlUng1RUVnSUpUZ0RhM253NDFOVDdDaWVON21LMjNzTmJ5Y2RuajlPa1o2TVRZeE9MODhrQTMrdnBPZDcydVhPaE5ob0kwOENGTmlPc3RQdm5pSW1FWTBHd2svUFMxUXp4M2JOZUtZOVBFNGQ5TFFiM1Zidk1DYUszeERDalB3L01VeTl2VHJmL21YYmZmMnZjZ0dxNUJscEoySW43My9sbis4UEU1bFBid3ZMd2hNcDVISlFneHZxTmFDZG0xWlp6bmorL21GNi91NS9sbjlqSTFNZEs3MGZ3Mzh0NkZTdGtNWE1ua3pkbm9jTWgvOTErOXhldlBIT1QvVWdyNVQvLzlMOEhkaExxSDJqWk00QnRhYXUyWHI2cDd0MWxteVRKSFlBekp0bEZjRkpPMFkzNzN6bW5lKytnQ3c3VVM1WktQNS9zNFo4bHMvdnkxQll6R3BRbHA2bWhubGs0Y2tjUVdhMU5jcGdDYmQ2bUhIcXBjeHZkQmFVV1NmSDhDNksvTUdGeVoxNjNmVkttV09MQm5FNjg4ZTVEamgzWU92anM0MTExMXNZNHg5a29sWkhTMEFtTVZhRVpnTStJb0dlaWQrTDcxQUFPUG9EY25Cd2dxSlZJL3hOcXMrMXd5TGx5ZTV1S2xHMmlqdS9NTnU0SEkzRHBrVVdUYUtLeFQwSW1YNnlWNG1oMDdKM245eFFOTWpJM3c0dE9EUnlpaUtPMzNtaFZOTVorMXVDMXI4eXQ1WTVhSEEzWnVIZU9WWi9jUnBURlpGclBVVExoeGFSYWloTGpkUWV0S2Z4blVSZ3ZsYUoyUDZZZlZrRWdiaUMxenN3dTgvOUZac3N4U0xodTJUSTJ3WlhLa2V6OXF4ZmJCYTZsUXVCRmFLY3JsSUMrcFcvTEIxOUJXK1l4dElJM1hkM3Q1bDd1aVV0S0FvZFcyTUYvSExqV0F1RHVNckFCRGsyNGE4RFZudGs3UTZIU1lIQzB6Tmo1Q3RSSlFLNWRYTEV0ejBGOG1tYVVaaTYwbVk5VXF2ZnE4VHgvWnpsLzh4YlA4OGN0TFhIcy9iNWhhOHgyeTJQWlhIZlRxUEt5RnRYbnZqZWZwdkI1QjRMSFlpdURtSWtrN1poWkhQa0hCNjAwZXlJZGYreHMvZGdmeWlidS9laTEyQllhR1lLaEt1UnJtYzFXNmxmRTNYQkkzelNESlp6dU1qVlRZdTMzbHpQcDgwNnlWaFloV3U5M0hhL3ZVRUNlZTJjMWN2Y21wTTljaGptZzF3TmNhSGVZVEJPMjZhMmJrMVFyTEpRWDRKS2tqeXl6UlVodlg2SkMxRTdEeHdDT1YxbitRelM5cHlEOVR2YmxHaHN1WjQrcU9UYlE2MFMzSGJHQUJ4eE5EQW9BWVdLNnUralAxZTdSV0hOMC9CYzVpazR5bGVzSW5LR2F1endHV0tIWUV2dXVYVndXMzdoQXdlTVVVbER4aUZVTXo0ZWFWV1Q1VWpwR2F6MGl0ekk5T0hHTFg5dkh1QTFiOVkzdGRlUGNVQW01ejVWZXJsWmphTk1yMlRhTnMyekxHK2NrYTg2dHF0UGVHTWZJcnlEVSs4ZTRFTm1VY0xqU1FsS0F6OEZYME5YamRiWG5qREdZYmZQZmREQjl0dWNod3JVcFlDbmhtLzFaMGZ6VkM5elV3dXZ0VUZMNWZ4cTBxbnZRWFAzbWFwYVUyLzdoM003Lzk0eWs2MStlSVpoZGhiSmpoaVRKS0srTFk1aE1EMS9wVVhONis0a0I1QmhmNmVXUHZiRDVXWUxvOUo4WXR6NzhhREFGSkNheFBQckZTUVJEbU0rSk5Ia3hjZjQzOXV0YWIwSnRjcDlCNUNISVpwZEJRcVpZWUh3NXZlUTZxTnc1d20xVVlpdTUzWWtWdmwrTEkvazM4Mjc5NG50R1JrTC8vNTYvNCtKTXp1SHFET0N4VERqeTBwM0RKMmtOVjc3RTRJT211Y3VpRmNwU0dvQnNLVXpNd0hOSjdYUWZUVllIMWV1bzZkSWQrQU05SGxUMUtnYjVsQ21EUlNRQVFmVXF4cXRoT2ZxTHpmTVBoL1ZPMDJnbjF4UmlySFY5cXhmV1pPaTVMaUZJSXl4NmdOdFFEME8vK1ZOMDZBZVVTSFd1aGtUSTdQYy83bjV5akZQaDAyaEZ2dm5LWWczdTNERHpvL1AvdXBmRlgzUDRLei9jTld6ZlYyTDkzRXdjdXpuSGg4azJpeU5KYTZwQ2s0QnVMZFhSN1ROYlErOUVkWis0MUNJSFJNRnJEamRSd1p2bmczcks0VGllRFpnZXNZbkdweFZlbmJqQlV6V3Z3ajViTDdOazFTbmNYK1lHR0t5OFdWQ25kK3ByczNEVEMvK0cvL1FrN05vL1N5bEorLzArTHNOQ0JLTTI3ODFYM3NhM2hwVnd1Z3VUNkc5Y0V4dUFtYStzZUl1ay85NHgrdWR2ZTcrdTlnaDRNaHBrRm15b0lOS1Z5bGFtSlVUYU5WTkQreWlmb1VvY0w3bEtyb0x0MGxZSG5uSWVzRWo5KytSQzFtcy8xS3d0OCt2bDVzc1VXVkRSdXVFeG9QTnBKdk80Ukk3dHFtRWxyVFZnTGNiVndROE5QUmFMOS9Cd1VSZDNMK3U0RXYrMWJ4dGcwTWNUUXdKTGIvakdyS3kwV1NIR2Z1YmlqM2hLcnZNQk1mdFlMQTUvREJ6YXowR3lUWmhscGt0Sk9ZaFptR3BDbVJOcFNMb2ZMazlMV2NVSGNvNVFpNk81Q21KVkRFZ3NrbHZOWFpnaytPWXUxamlEMEtWY0Nka3lONThlZytvL1JkUi84UnNLQUduaThnME1LRTZORDdOczV5ZjVkTTN4M2NZS0ZoUmF0ZGt3V3hXVGF3dzhBOUxxSFAzcFY0UHpRNE91Z1h4d3hueWlZVjRmVHVrUG1WWWlqRE51T09YditCcDducUZSOHRvelhHQjd5R1IvTEp6UVpzM3h0WTExKzBzdkg2ak9hclRZancyWEFVQXQ4M25qNUVGOThkNVZyTitxYytmb1NKQm5OWm9lT0NUQWVHSyszUmUzNlhrTmpWRjRBcUZ2Tkw5L01yOWUvZXB0TmxIUWVYN1EyR0tYSnNOZ01FaHVSUkJ2YkpFa3BoUWVrenRGWmJBT2FZS2pFNFgxVHZIQjhGM3UyVC9ZZnkzcUdqbnFUT0h0TFdZMWVYalp5L09BT0pzWnFaTzBZYUVMTEFLUExvZUVlR3UxZTNReWxOSjduWVR6eUxaZ0hMMlhsd3IvUG1IeUpjc2ZFWkZtR01ScHRvRllKS1FjZS9wMnFLeGFVQkFEUk45Q3ozdjJMbFYrV3NlRXFKNTdlZ1RHT0pNMW9SUkduVU5RWGxqQ3F0NTJMNjErSnJyZHl2bk9PcERzMHJGRG9Vb2hOWWxoc2MrcjBEYUxFNHZzK1h1anh5dE43MkxOejg0cUg2R3hlclYrejltSTZ5ODg5ditMc0ZkZnByVGJ3UFk5OU96ZHg3UEE4RjJmcTFPdHRsaHB0NnZVbXBBbVo4Zk5KYW1wOVovcmVHdkNrWTBsVUJ6WHdldlZ1eVhhcjlnV2hJV3BFUkRmbU9aa2toSjdQK0VoSXFSTHk3Tkh0akEwdHJ3eXcxcEU0UitpV2gzTXFsWkRCRm1QSHBpRisvdG9oWEp6eHorTTFQanA1a1hoK2tVeGxtSkZTdC9aL3Q0RmN4N055RHBMRTlpZnJyYXlSTURncmIvbk55Vi9tcE44UTl6YXNjaHNJSUFydy9YejFScU1EeEFrWW55MVRJL3o0bFlQOC9NMGp2SEJzKzhCOWQyZmUrMnZyUVZMazRTcHhyQ2dqN1BzK2xaRUtsRDN5VTZwZXNkZlF1b2VJQnZRQ1VQN2FKaVFKYkhqTllRSDBnbSthWm1SQUZzZjRSdE9KRTlxSkpaV3d0SUlFQUhGSHF0K2R1cHdGTm8wTmMvemdOcFlXV3R5c3Q4a1N5eGtjalhxYktFckluS0VVcnI4Qjd1a3RKOVJhVWZNMVNWQ2luVHBvdDdsd2FZWjN5d0ZCTGNBbUZxVTBld1pLcGQ2dnRieXJHeDdmODlpM1l4T0hkODR5ZmIzTzlJMTVscG90YkNmRmFwMlA0Mi9vNU03QWVQdnRqdy9EZkoxK1ZQRmdNY0V0TmZuMjdEVW1KcXVFZ1k4ZmVMeDROQ0FNOHpwMVdpc0NWalkrK1VTNjNuM2szVFBQUGJVVGpTWlZsb1hGRGw4M0ltakh4SjBFWXdhZXozcW1Ocmk3TmRydXRuOWUvdmw3Njl2dTljREVzY05pc2EwWU9pbU1oZXplT3M0THoremk5UmYyTXo3ZUMwdTkxeUlQQXV0WlErOVNiamx6VG0wYTRjaFRPL202a1VFbnB0MkpzYzcyeXpSdmRJSXNMQWVwalI1Zk5MMWVHcHQxaDRKdzJNeDFQNThGbnZGM0d4SUF4RjB0WHhFdlgwRnUyVFRLTThkMjBXakhLR2RKcmVWMFo0Ym1VZ3RzaWdwTC9YWmp4WlhkT3ZRbUZTb0ZsRXcrODc3WjRidHpOekNCd3NVcGdmSHhQSThkVzBjSGoxeHhmeHNhRHJqTjMyM2JPc2JUaDdjeE85L2t5dVY1cG1lWHFMZHNYaGVBNVpQN1JwL3ZiUitIVW1TWndtbndRNStra2tHY3NEUzl5QjgvdmtBU09YeWpHYTZHSER1MGpkNFVwOTdVUDJ0dGYwdy9QeW1DY3htZVp4Z2RxZkwwb1cxTXp5OXk0Zkk4OVdhYnExZG5JVW5vZEJKMG9QRlZyOWI5eG5kQnZPUEx2L1o1aHQ4cm56bXZ1a3NUTGUwNGhVNENSbE1iR2VMUTdzMDhjMkFiaytNcmUwcDZ4NjZuL0hLKzhxSDcranJYbnpmdzJyTzdXZmhmdmNZL2pZL3lodysvSTVxZUphcGJxRllaSGk5aE01M1hXcmlIMTFLSSswMENnTGl0NVliemR0ZEdpZ083cC9KQ0c4cWpIV1cwMmhtWEwwT24wOFpEazkzamFjNDVSOXhOOEtIdms0NzRaSXNkc29VR1gzOTdoU1JLOGZ3QXoxTll1NHVkMnlkVzlGaFlaMUVibUJ4NHA4WWdNQjZIOTIxaFliSE5wUnRMVE04dmNpWjJ0T01ZcmZvNTRKNGJ6RUhPNVV2QXlQTHRrRXREWlRwSkNXYnFMSnk1emgrYUVVRUFJOE5WZkYvejFONXRLNDRkREVHOXNlVEJvWUR4NFFvSDkweng4dkhkMk1UeVVlQno2ZW8wU1pTU3hTbCtXTXJIdnRYR1crc2Y0cXBWb1NoNWlxWlZ4SEVDU1FZbFEzbDRoT2VlMnM2elIzZXlaL2ZLcFgvTHd4UHI2NjFTS2krL0RDc25EVDU3ZUFmYnAwYVltaHltM1c3ejdzdzhMRVVRcEJpakNEeVBWaWNldUc4aEhqNEpBR0pOQnNkemU0M3F2bDBUZEtLVStYcVRwV1libTZWY3VaTFJUaExTTEVNWmoxSndtOGxmYTc3UC9QNk0wVlJDUllzeTBXSURXKzl3OXVKTlB2amtMSlZRWTdYQ2VKcnR2WW1CaW02UHhjYUdCQVliaE1FeW9XUERWZmJ2M3NTUnZUZTVlbTBMaldhSHk5Zm1hTGFpZkRHeERpbVZOOWJyY0NjclhvT1NRaWVXVmpPRVJwUG94Z0tmZjNHSjBiRlJqS2Z4amMvK2JnbGVwUlRHbUJWanlQMWVDZFY5WlF4czJUekM4MC92SW8xU2x0b2RGdXBMekhVV0lMSkVPcUdrZkt5OXk1WDhRN0s4Q2dIU3pOTElISjFXQkswWVBNUFE1RERQSGR2TlQxODd5dkdEVXd3Tjljcit1bnlaMkQwWUxCcVhaYlkvQVhOeWRJaWZ2WHFJVHo0OXgrZGZYYUxaakNGS1dWcktNQ2J2alNscXlWbnhhQ3BzQU5DdU95MUpob1MrVjMvMWM3K2JPLy9kR0krbkRtNGhqak15YS9PbDYzSEdsYXZ6RUZrb3BXamxnZXZ1bGFMWThPVlB2MUt0SDRDTlNSZGFmUDN0VlZDV0tIWDRKbDlqdDMzTEdMMXhic2k3YVoxMS9XSkRhM3ErQTkzNHF4L3VycTJUUEhka0I0dUxMZHJ0TnZWR203a2JDL2w0YzZoUTVYSi9PV1AvTnV6R2V3U1c1MTg0T3JFQ0M2b2M1bk1IV2hGWEw4endxOStlcE5sbzV4TUpsZUxBd0x3SXBWUzNkcjd0Ly9meXk2Q1pHaDlHSHpDNEpHTyswZWI2OUFMdFRrUjdxWVBMOHNjT3k4OW4vU1dmNzY5ZUQ0MVdDazhwWW10SmtveWtGZVhWK0J6bzBSR09IOXZCWC8vWmNmN0ZXOCt4Zldvay8zd0FXZWE2cytydjZWRUFkL2g4YkJ2bitlZDM4TnAzZTNuWEdKbzM1a21YbXFSYVFWQ21VbEg5WlRJS2g5M0FTZ2NoN3BmQ0JnQ3hkaXQzelZ2NWI3NHhQSDE0Q29jbHRSbjFaa3c3eXJnNVcwZXBmQlo3WG1mZWRSc28xdDJkYkswampydjdCbFI4c2lBZzdVUTA1cGY0L0t1VXpEb3FvVUdqVWNxeGJXcGkrYkhUbTR1dzBlZSs4ci9Ed0xCdnoyWWFqVGIxVHNUTWZJTldITk9aYllIWFczNlhyMGJ3UEVXUzNOdFlkKy8rODBZODM3NjNWRFpRcnRMMkRkUmJ6Snk2ekcraWhKTHZFUVFhb3gxN3QyOWFjUnNyNTBRc1Q0QUQyRFJaNWREK0xWeWZYZUx5alFYU09PUHNwUnUwMnhseG5LRjhnMW5Icm9FUFZsNjIxeW1ITm5rZ1NxSXM3L1pYQmpWUjQvaVJyZnprdGFQOHk1OCt3Nkg5VzFZZTNTMFBleit1eEFjbnh3NTY5dkFlYnI3VnhJUWhmL3o0TkF2WDZ1U0ZJeXhLRzVuVUp4NFpFZ0RFdXZXdWZIb24wVEFNT1hwd2lrNFcwMmduSkZIQ0Y5K2t6RTR2MFVoYVlDR29CdjNKVXhzOThlWGpyd3JQS0NBZ1hld1FMVFk1ZGZZNlE1VXduOUJsSEVGZ21Cd2JYVDdHRE43dnh1b0VERTc0MmpReHhKRkRVeXhHRVF1ekRXd0dGL3hwRnBzeHpVNEM3UWkwUWdYNWN6Wkc5NWZXcmJTK1JxRFhGWjhQQi9nNEI1MU9BbzJJcGNzMytlTkgzK0dGSG1oRnBSVDA5d3pvRFFmWWJqZUs3YzRQMEhwNTl2dlV4RERIRG0xamRxRkpacUhWaWJsd2NZNnMxUWFqeVlaSy9hNXZwZTY2Y09HK1d2bGV1VzVsUEVzU0piU01qNHZpZklkR1QxSFpNc3F6VCsva3JkZVA4TmFyaHppMGY5dUsyOHF5Kzc4R3JEZTdQN01XcnpzVXNIZkhHRysrY3BnMGMwU2ROcDlranZwY0hXeEd1Nk94YVF6V0p5amxSWnVXcTJndVAwK1F1UUxpd1pNQUlOWnN4ZFdqV25sMnFwVEx2SEJrTnlRYVh5bHdpbmRiWjRqbWw4QlpqQWtwQjVwT1lySHJyaERRcXczUXZmcHpEcWVCMElNMHBURzd4TWRmWHFJVEpVUXU3KzUvL3VtOGUzdjVlTmV2c05ZTEJHdDd2Z09QSVgvbWVGcXhhL3RtalBGUk5tTmt2TVlYWDlRNGRYNkdLemNXNk5RYkVEbGNOU09wVmdoOFJia1VZRW5KdWkxbkd1ZHJ3M3VyLzlmU0RUellHOUJxNTJ2QlZhV0M4d3kwSWk2ZXVVb3p6a2lTaExMbjhTZXZIMlJ5Yk9TVzE5RjFMMTBIQndQODBPT3BnMU00SEw2dmFTNjFXV3BFek1RSjJJdzBVL1FLNktsdUFuaWc4OWxWdHhhRW53YytwY0YxSERHT0pNbWdGZVBTRHVEQTl4bmJQczZMVCsvaXovL2tLSC81MWpQczM3WGwxcHRVdDJ0czcrRWhxdDR5d3VVYUFWb3B4b1pydkhTOENqaml6RklxQlh4ejZob3pzMDJhN1JqYU1haU1XSmNJUzRvZzBIaWVJbk9ReHZtbmJQbnpJRDBGNHNHUkFMQ0tmTmZ1Ym5sOC9OWjl0Q3Vsa09lUDdjQXBSNXlrekM0MCtES3oyS1VtblU3U1AwbkMramFlNlhIUUg1UDJ0U0tvQmNTeFQ5WnNzVFJUNTdQRWdqRlVmUStsTlM4L3M1dXg0VnIvY1p2dWVQajZudS9BL2ErcUhMZDl5eGd2UDN1QVdybkdjRGt2ekdOOGozTnBSckxZeW12aEp5bFpvR20yNC96NUdyb1RJamJPV29mdGZsSXJOUS93YVhvS1pwdk1ucjdLYjdWbXJEWkVFQ2plT0xHZnlmRlJZSGtjLzViTlQ3cUJJUFFEamg3WVNwSTViczQxbVYxc2tWckgvTTBsc2pnaFN5QUl2ZnM2eWZHT3VnRWppeDNad0d1V04rQVdWTGVNWU5sbmZQTW9MejI3bTUrKy9oUi85U2ZIT2J4djVaVi9KODBJakw3dkUvQjZCYTk2ajJ1UU1ZcmpoN2JUYWtaVUFzUFlVSlZ2ejE3bjh2VTYwek1wUkZtK0kyU2FMN1ZNMXJsbmdMaTdqSlVGRXVXVnZiM0NCb0I4SjAyRjloVDV5MkRRMmlmd0RMSFdkLzNFQkw3R1drZnFheEpyd0hnWVQvVjMwVlBLRnVJRDF3c0JxT1VsVWRWcWllZWYya0VuVG1pME1vTEE1OU92enBOTkw5RlNEcXBseWtNbEttVkRGT1cxOUpWYSs4enNmaWtiSDBKUFk0eWo2U3E0cEUybjJlSE0yV25lcTVZd1dsTXJoYnp5N0I0OGYvbGozbXNFZWwzWTYyM0xWby83N3RvNlFTbjBDY3MrMVhMQXhQZ3dPemVOY09YNlRhYm5Hc3pOTHRHWldZVFU1aHZqZUNiZm5NWW9sTy9qKzNyRld2UzFGS1RwVnd4VWltcEY0NmtTbWJWMG9neWloT2xyODd6ejhTbkNzcUVTQnZ6MFIyV01YdDRBeHhqZDI5Q1F6SGIzVCtzK3FTRHdPYkp2aXZwU2kwNWk4VHpGSjU5ZlluR3VEbEZLblBtVXFxWGwxMEFwMUgzc0RlaDFxVnZyU0t6Rk5lTjhUYjlMODBaL3FFU2xWb0ZOSWFXU1lmUGtNRWYzYmVYTlZ3L3g1b3Y3T2J4dis0cmJTek9iYngyOThVVWhHMWF0aEJ4L2FpdmxzbVprcU1MbXFYSE9uTDNPNlhObHJzM1VXYXkzeVpiYVpGayt6SUxMZXpQd0ZVcjdCTDdxZnpieTdSNlV0R1RmbzFjSk1OQU9OR1JaZmw0MkpwODBxdFRHVnlVOWlRb2JBSG83bFpaTEhoQ2dUSUJmOHdqS0htVUNramk5YmVQZ0hJU2hSMm9kVVpwaWRZRFdobklRVUFxOHZDZ0pac1ZTb1NlUlVubTM3TzBxbk5XR3lyejV3ajRxdmsrMWJJaVNtSk0zejhCaUE3UkdqMWNvbHdPMGNXUXVRMjlnWlpaeUJtMGdDTE44bG4ycFNpZXh6RGViZlBYdGxmNDRlTFZhNHJrak8yNDV2bGR5ZGoyMTRPRTJiWWlHelpQRCtFSEFjRFZnLzY0cHJoMlo0N3R6MS9uODlEWGUvZVFzUzR2VDBHam5QMTh1NVR1VytYNitXMStRQndEZlUzaDVvZmYrU2NxNTdOYnl6Q3kzQWNybEU4cWNjWlJLUG1weWlOUTVra2JDMStlbVVVWXhWUEhaUERIQ3M4ZDJEVDRiK2hmRHQ1a2hXYXVXZVBuNEhrSS95SGRBN3FSOCtuVkNQTGVVcjBKWVZiYjRmbG0rb25aa21jdkg5eHR0YUhXQUZFd0pKb2JZc1gyQ1RXTkRURzBlWXUvT3pieHdlRE92dm5TSWZUczMzM0tiUmlzcW9Ybmd2UmE5Um5xMVRST2oxSWJMYk5zOHdkNWQwNXphUGNFM095YzQrZlZsVGwyWTRlcUZhV2czdTVNWVBhZ29VQjQ2ekZES1IydU5GM2g0dmUvYW96QVA4eEZtUElWMW1yVFR5UXRmWVZCR1VRb0NqSy94bnZEejhub1ZOZ0JZcTRnaXkySWpBcFp3V1VnMDEyQldLK0pHNTY0VGhreVE5d0FrclFRNkVabjJtYStHTERZaWtpUWp0YjJ4M2lmWFlNTzB2QzN1OHZocXFWeml4V2QzazFySHpma1dNemRiM0RoOUZiS01acjFEMGtxSW5jUHJYdGxzcFB1elYyTmRkVy9ET2dlelRhN010NWhaYkJHM1UxcnRtUHBpbTllZTIwVVFodDkvbzNkN3ZsMTVqZjdlWThqL01EWmM0dERlTFd6Zk9zbFNmUk83OTA0d1BGWm1zZFhpazA1S3ROQUVtK1lCb0V0clRSeGJVTkF4RGsyNjdwbGZhZmQzWHltQ2tvL09Vb2dpN00xNVRzNHZvYldpNUJsYVVjeUpJenNKeXJkL0RaWW5TT2JQZG5pb3pQTlA3U0NPVXVZVzI3VGppTzlRZE9ZN3RCc1JtSHc0d0hqMzc0cXFOejlCcVR5Z2gwTVZPcDZIclliNUZzTzFrS2YyYmVQNGtlM3Mzem5KdHFrUjl1NmU1UGpCcmV3ZVdQWFFteWlvdFZyWDhzOTdzYnAyUk84ekNWRDJRM2J2Q0tuVlNteWVIR0Y4WkpqUm9UTFZhZ1ZQSzY3TUxKQzFJa2dkdXVSaGxTWkxMWm5MTU1xaDR6Ui9mOVFUZmxLNUQzbzlBRW5hSFROS016QWV0VnFiVmljbVN0TzczMERCRkRZQUpOYXkwT3h3L2NZQ01BZDRjS1hHVXBUbVZ4ekpuUWRxMDlCQTZxRGRJaDl0OGxoUWxodmJ4cGhiYXRQcEpOaTdIUCtrV2wxK053d0RUanl6bTNhY0VBUSsvL3pPMTN6eDZWbTRQRWRNQkdqU2Nqay9zYVgzY0hMVDNSWWpTcUU3TVN5K09jdmIxeGE0Y0dtR3N4ZG11SHJ0R0NlTzcyWnFhb1NSV2hrOTBKdnErdk1TMW5oLzZ2Wkx3SVpxSllacXNHV2l4dGF0bzlSS0pWTHIyREk1d2x5OWc4c1NQRFQxcFE2emkyMldtazNtRmpyUWFPSGlCQnNuZWNuajNvbStWMzU1RFM5Tm9oUkoyYzhieXFVbTBJQzVlVDcvZFp1NStSYm5iaXp3cjM1Nm5EZGUyTWZtVGFQTFQ2Vjc1ZHJiazJEd09kV0dRcDQvdW9OV0hGTU9QWDRiZk1zblgxNmtjM01KZ0V4NWVON2dROXpBR2srV3IveXp6SklrRHFVY0UwTVZOazhPTVR4YUl2QUNQS09wMWtMMjdkbksvbDBUSE53MXpvNnRZMHhNRHJGbFl2Uk90N3p1eDNLLzNPN3pNVEZhbzFvSnFaVkxUSTZVMkR3eHpKN3RZMXk4UGt0OXFVMmpHWkhHS1RmckxlYm5HN1FiSGJLbG1DeU44L2ZWdWY3dXo4dDM5RU0rcThlQTZYYVRkQkw2c3dBOHpUWGZNRGZYcE5XS0grckRlOVFVTmdBNEM4YTY3bmFsM1ZUb01ralRQRFhHZDBtS0draGM5N2hlMG5UWTFKSWxsaXk3OTFLNGo1TjhYTDIzL24zbCthbFdDZm56SHg5bDArUXdJN1dRZXIzQnhSc3pRQVB3SWV0dVhYTzMxL3RPK29zU1hONVlXc2Z5dHJNZHFOL2svQjhqRmx0dG5NMkxGYjMwM0I1R2FtVUdHL3oxN2h1Zzc5RGRPL2k0YXBVU0x6NnpDOTg0RGgvWVFydWRrRVVaVVpKeWVXYU9zMWNYdVh4eGhyT1hiaktkV1lqaVBIVGFnWjRuM2YzeldqNUt6dVU5REpuckhsQUNNb2pxWFA3b1cvNDJUUmdkQ3BpYUhLWTJIRklKODMzUiszTWk3bEMrZUh5OHlvOWZQc2hJT2Q5c2FLSFI1cHNvdzdVaUxBa0trL2U4cU5zUEI2MUY3M1czMXVHaUJCVW93ckxQcmgyYjJiOS9NMXMzVjVrY0dXSjBwTXpXcVhFMlR3NHhNVlpqY3FnTTV0WSszWHpjWFA4d2t4VnY0MjZURFV1Qno3NWQ0MHlPbHRtemM1S2poN2R5YlhxZXhhVTIwM09MM0p4cmNlN1NIR2N1ekhMNStpek45aExFblh3T2laT3Q3TDZYcnlEVjVPZm03bmNoTmJnMHlUOWZ0M3R2Q2p5c1V0Z0FZTFJpWXJUR29mMWJPWFYyUCtCakRtOWowMmlGcUIyUjN1V0sxUGNWTmxQVWw5cTRMTUY0QWR1M2pyRnYxeVJiTm85UXE0UXJOczhwRW1zZFR1VkZmNVpQaElvVFIzZXl0TlRpMUxsclhML1JJSjZaaCtFUzQxdUdVWmtpU3RMMWZ3OHQvZEwyU3VudWNrT05VcHBHczBYY1NBQkY0QnM2Y2NaU2Q0aG05ZXFGZTlHcmllRElsNEFOTmpwaEVQRDBvUjFzM3paT2xJQ05FMXJ0aEVzMzU5bHlkcG9MWXpYR3g2dGNuUmhsWm42UlJyT0Z0ZlFuNkJtajhtdVlOVGFxR29YRm9ReVVRNDkyTTJQcDVnSjRCdDk0eEhHK2pYTWFPN2pEYUlpMTBKM1YxNTNIb2hpcGxYam02WjNVV3kxbVpoZkpNc3Zac3pPazdRN050QTJlcGxRT05od0FlbnA5WmhhSVkwZ3lTMWdLT2JCM0M4Y1A3bUxiVkpXUmZrbmYxWTg3WDF5cWxFSS94TVova0hOdXVZeXlvanZ2SXYrTWpJeFVHQm1wc0dtaVJuM1BKRXZOaU5tNVJXN01OTmk2ZVliSnNScGJyZzV4WldLQmVxTkJKODd5c3NPYWxaK0hoLzgwSHltZTBubDlqQ1RGV1lmUzVHWEN0MDZ3Yy9zNHcwUGxXNDRwOHJ6QXdnYUFTa1Z6K01CVy9wdS9mSkdUdTZjb0djM2sxakdDa29kTjNWMlhpL1dxdlVWcFJocG5hS01ZR2FteGUrczRlM2VPczMzekVPVlNzT0tZd1JQU2sveWR2ZHZWOGZOSGR2R3ZmdllzazhNanpDM1dxVlpMakl5V1VMMmQwdTdCNEppOEFwcHBSbU94Zzhzc1E5VVMrM1pOc0hQYkJLVXd3S0s0Slo3ZHc1dlNtNzEvdTBhblVpMVRxUzZmZE9JMFlkUFVFRnMyalhKajN4TEhadWFZbjIzUmJIWm9SZ2xxWUlsZi8vYlcxS2d1OTcwb0JZRldSTll4TjllZ2s2Wk1qSTd3d3JGdGpBNVg4TzgwYmovNDFxMmFmVGc2Vk9IbDQzdUlrb3loYW9sZmVkOXc4c3NyK1hCWllGQ1YzbXUvOGZVQW5nSVYrbVE0Rmh0TnpseTV3ZkJFaVdNSEo1a2NLOSt4OFlmOE8ybnRlamIxL1NHb2JqWE1PL2N1alk1VUdCMnBrS1lKemEzNVVOR09iZU1jMmpmRjlNd2lDNHR0V3UwOHVPYTdDVXF2LzkzMGh2YXl6T2FCMG1rMGpyR0pNdnQyYkdiUDFwRmJqZ2tMUERPd3VBRWc5SGxxMzJhcWxSZjQwU3RQWVR6RmFMV0U3eGt5bCtMY25UOFVTbG1jMDkycnlmeEtLVFNLYWlXZ1ZpMHhWQzBUOXZlSXY4UHM4U2ZRNEU1NnZjSTdnenVtalF5WCtja3JUM0ZnenhUdE5DSDBmS29WRCt2eUNYejM4aG90WDNsYXROYWtjVVpxTFRhekdLTUlRNTlxTFdDc1ZNYW9sUU1WZDVyQnZSYnJ2ZElNUEordGt5T01qZFE0c0QybTJkbEd1NTBTeHpHSnphOWc3M21tdHdPbEZWbm1pRG9SMWxvODMyZHlxTUxJWkJYUE02em9QaGw0SHYzRkFkMmVqY0duTjdWNWpEZFBIQ0kwUGd1TmlCdHpUV1l1ellDMXBDbjR2czNmUjdXK09nKzlDWWhhSzNTb01FQzdHWEh1MGh4K1lOaTVaWmdqKzdjd1BsckdtTlduck40RVZQM0lyYnk1VzhPL211ZjVqTlI4Um1wbHBzYUhPTEJuTTNFN3BoV254Rm1LelN5VzdwTEx3YXo4aUQzbmgwMDVzQXF3RG9jRmwxZmdEQUpEclJReU1WYTY1WmdpYjlCVXpBRGdMRW9aeGtlcmpBeFZpSzBEWXlpdjg4dlVXMHVlcjZTeUtOY2RDTzFPUGxrOUhsNDB6cm51a0xUcjc1aTJmZXNJbXpjUDRiVEY1OEV2ejRKOFdDSkxIYWxMK3Z2R2UvZHg5bnBQYnlpQS9tejJPOVdjVjVSOGo5S0l4OGhJNWI0L2pqcy93TzRuTTgyd1ZuMXZnem00MlUzdmVVeHRHdWE1WXp1NWZHT1I2OU4xUHJRcHM5ZnJKTzBXU2F6eGd3RFAweHRhMmRGck1QTWxtaGJhYlM1ZG1lZkRUeTR5TVZRbGFxVzg5TUllS3FYbGs3aTFqdGc2UXJPeEVzOC9sRnZxLzZ2bDNxcVZESld5b1hLSDFScGliWmFYcWFwK2o1cnUvczJkd204UkZUTUE5RXZhYW94UmxEZllGdlI2U2ZPUGoxN1JmMXI0YmpxbCtsKzQxVjh3MzJoK3lFc1hyUlU2VVBpRWtGbXNoc0dPMU1HS2J2Y2kvMWlwL29TNFIrN0Vva0Rqc09iMlMrUFVxdi9xalYydkh0amZ1VzJjVjEvWVM3UFZKdlFVNzN4MmhwdFhGcUdUa0NpTjczdnJXbnJuQmx0RjhuZkdoQUVaR2UxV3hNY25MN08wMk9IR3pCTFdLUDdrbGNPckhuWDNkTC9PeVp3L3BMeUdUOTdnUDRJUDc0bXpjcy9Md1JmYzB0K1JiS0NVYzFFVk13QUFBMVBJNzk5TnVvSGZDdnloZ2w0NFdoN0RkdDBKdVVvLzVCbE1KaDhUZkZEVVFBanNXVzQvVjMzZTdqVHk0UHIvdCtxbTdzZnI5ZjFYL3JEaXJlc1BCUXdPQ1R5MVo1STBPVVNtRW1ibm04ek9OWEh6TWNRcHJyengxN2QzcE84clFoM1FhblZvWDUzaDgra0ZGcGM2akk1VTJUUXl4Tk5QNWVWK3RWYVVkSzl3MHFNZHUyK1hNMWUvMWYyZlZTdCtZdkFXeEwyUVNrb3JGRFFBUEtBUFFXOGkyajFOaFhwQ3JWZ2krTEMvaEwzdzkrRGR1bWQ4N3lxVmZtL0JMZTVUajhUOXREd25JSDljNVVxSkUwL3ZKRTRqTGw2cWMvYmFMTmNhR1pEbFMySk5yN2FDNmgrL3B2dnAvcTVVUGhjQTVlZExkWnNwNTg5ZDU1ZS8veHJQODFscWRYanRoWDByanJXMk4vL2d2anpsQjZvL0pKRC90c0xLSHFuSDRNazhUdnJsbE9YOERJVU5BQS9lb3pZZithRzY0M2pudy9URFBKckhwVUc2azE1UFR0NEQ0THBMcTdxRFhzYnc5TUdkdlBqTURKZXZ6dkdoVmR5NHVVQmlIUzV6ZUg1dkE2SjE3R2pYL1VGSFhodks5eFRKeUhBZUFoSjQvN09MTERZVG1uSE1jQzNrMktIdEE0Y3VkMUVzNzNqNGFPbzE4bzlnMW52eXlZdmVWK2dBc0NLRmM3OCtFby8zQ2Y5QmV6Q3YrZG85U3VQRDdtRmNpV3lnVVJ4OHlUSnJNUVByN0VlR0s3eHdaRGVMU3hIT0tYNzdRVVQ5NGsxd2xteW9RcVYyYjVNdGpkRUV0UkpLUTJNeHdzMHM4SFU3WVhURTU5RHVUV3paT3N6RTBCREFpb21kdDZ2RTk3aHdLLzlQM0VlUDB2Zi9VVkRvQU5Celh6dUU1Zk8xSmcvblpaSTM1MTVlZ2VXSmpXckYxc2hIait4Z2Fzc0lXam0rdlhpRCtxa3JlV1hIV29sUzZKSEZLWEYvNmVYNjlyZFgzUW1WZ1FFdytWN0dqUVpmbmJyQlAvMytXMHBselorOGVwUWRtMGRYSEdldGZXUUtBcTNYRHpkQVZUU1AzMmZoUVN0MEFCZ2NhNU9QeGcvamZzMjRmeEk4YnErRlV2bTJxcEFYV3NuWDNpdDhyZGd5TWN4YnJ4N21kNStjNDh5WkcyUXpkYkNXT0U3SnJNM0wyT3QxVkFwMHkvMUVGb2dTQ0R5SWg4cmdvRDdmNHZmdm55SjFHVmtDLy9hdm5xZFN1clhLMitQcWNmdHNpTWRUb1FPQUVHSmpySVBVV2tvRFY5bUg5MjNsejk4OGluSVovL3lINzVnNWY0M0d4WnNRYVB6eFlVemdRYkx4NmJFbVVKU0RDa3BCYTc3RnRiTTNlTWM1cHNhR2VPYklObDQ0dXFmL3M1NW4rZ0Zpc0xkQ0NMRk1Bb0FRWXQyTXp1czhERGFzUWVEeGIvN2lCQ2VPN0dDNE9zVC84OS8vQ3VhdVFhdUVIUittNnZ0RVdVSmkzYnBXNGZabUxTaXQwYjVDdSs2NjBtYWJHNWRtK2VMcnkzejQyUVZHaDZ2czI3SHBsdU9zYzJpWm15UEVMU1FBQ0NIV1RYZUxDVGpuNkhReXlxRUJyUmlwbG5qMjJHNys1YzhXZVArVE0zdysxNElrSmVza05EMUQxbTM4RmIyS2YydTV0NEdpVGFoODcwN2Z5N2QrYlhmNDl2UTFmdm43YjdFdTQ2M1hqL0hVbnFtVlJ4ZTlKS2NRZHlBQlFBaXhZZm5HSzQ1T25GRXFMWjlPWGoreGovLzlmLzBqL3RONGpYYytPRXZuMmh6TnVhVzg0UjZwb28yUFRST1c5d0M4MjJxQjVaOVJtWTh5THQ4ZTExTVFwOXo4N2hyL1N4UXp0N0NFMFQ3alF5VTJUeXh2K2pKNDVmODRydzRRNG42VEFDQ0UyRENsRkpXS3VhVlJuUndiNHYvMHYvMHB4dzVzNGYveDc5L21QLytuZDJHbURtbUltcWdSZUk2T2hiV1ZoTmIwTCtIVEJKc0JKWU91RG1HYkhiaTVTUHViSnI5dXAremFNc25oZlZPTWo5VDZ5d0oxdjQ0QnlBNGRRaXlUQUNDRTJEQUYvY0pBbWMySUkwZTViT2cxc2ovOTBWRyt1empOZCtldTgvVVhHZ3lNakpUd2RFQ3BuT0FaZzFOcld4M1EyOGdJWlRDZVlxamkwV3BsVERzUDZvdTRWc1NaOHpOOGMvbzZteWVHT0xSL1MzZnNmMlZaWnVrQkVDSW5BVUFJY1krV1ovUmxPTExNOVpjTEF2emlqYU1zTlR2ODhkQldMbDJmSjRwVFZPYlFSbE1LUEt3Q2w5M3h4bGV3TmdOdDhJeW1IUHBFYWNMNGFJMkZlaE90TmEwazRyT3ZMakZjTFRNOFZHTGI1ckdCby9PdGd4MlBib1ZBSVg1SXlqM3FPMmdJSVI0YjFqbjBiUzZ4RzYwT0o3Kzl6THRmWE9ETXVldkVFVlRMUGtPVkVGUmV4Mzg5QnZjWVNDeVFPWmJhRVl0TFRRTFA1K2lCTGZ6Vno1N215SUZ0L1dPY2MxaWJCdzhKQUVKSUQ0QVE0ajdxTmY3V1dyTE00dnY1MXMrMVNvbFhuei9BK01RdzMrM2FSQlNsMUNvbGF1VUFxeHhadXY3cmtHNW5BR0hvRS9xR3BXYUhTOU1MTE13MW1CZ1pJZ3o5VzQ2UjduOGhsa2tQZ0JEaXZyUE80YXpGbUlFSmZPUURCWE9MRFZ6bUNBS2Z3Q2ljY21EWE1oa1Flc01OR1E1dDg5b0F4bGY0MmhERktYTkxEUllYSThMQVkySzR3dkJJWmNXMFB5a0tKTVF5Q1FCQ2lBZmtZVzM1ZE91amtDWmZpRnZKRUlBUTRvR3gxdEdPTThpZ1hOYjlBa0kvRkxtNkVlTE9wQWRBQ0NHRUtLQWZObzRMSVlRUTRwRWdBVUFJSVlRb0lBa0FRZ2doUkFGSkFCQkNDQ0VLU0FLQUVFSUlVVUFTQUlRUVFvZ0NrZ0FnaEJCQ0ZKQUVBQ0dFRUtLQUpBQUlJWVFRQlNRQlFBZ2hoQ2dnQ1FCQ0NDRkVBVWtBRUVJSUlRcElBb0FRUWdoUlFCSUFoQkJDaUFLU0FDQ0VFRUlVa0FRQUlZUVFvb0FrQUFnaGhCQUZKQUZBQ0NHRUtDQUpBRUlJSVVRQlNRQVFRZ2doQ2tnQ2dCQkNDRkZBRWdDRUVFS0lBcElBSUlRUVFoU1FCQUFoaEJDaWdDUUFDQ0dFRUFVa0FVQUlJWVFvSUFrQVFnZ2hSQUZKQUJCQ0NDRUtTQUtBRUVJSVVVQVNBSVFRUW9nQ2tnQWdoQkJDRkpBRUFDR0VFS0tBSkFBSUlZUVFCU1FCUUFnaGhDZ2dDUUJDQ0NGRUFVa0FFRUlJSVFwSUFvQVFRZ2hSUUJJQWhCQkNpQUtTQUNDRUVFSVVrQVFBSVlRUW9vQWtBQWdoaEJBRkpBRkFDQ0dFS0NBSkFFSUlJVVFCU1FBUVFnZ2hDa2dDZ0JCQ0NGRkFFZ0NFRUVLSUFwSUFJSVFRUWhTUUJBQWhoQkNpZ0NRQUNDR0VFQVVrQVVBSUlZUW9JQWtBUWdnaFJBRkpBQkJDQ0NFS1NBS0FFRUlJVVVBU0FJUVFRb2dDa2dBZ2hCQkNGSkFFQUNHRUVLS0FKQUFJSVlRUUJTUUJRQWdoaENnZ0NRQkNDQ0ZFQVVrQUVFSUlJUXBJQW9BUVFnaFJRQklBaEJCQ2lBS1NBQ0NFRUVJVWtBUUFJWVFRb29Ba0FBZ2hoQkFGSkFGQUNDR0VLQ0FKQUVJSUlVUUJTUUFRUWdnaENrZ0NnQkJDQ0ZGQUVnQ0VFRUtJQXBJQUlJUVFRaFNRQkFBaGhCQ2lnQ1FBQ0NHRUVBVWtBVUFJSVlRb0lBa0FRZ2doUkFGSkFCQkNDQ0VLU0FLQUVFSUlVVUFTQUlRUVFvZ0NrZ0FnaEJCQ0ZKQUVBQ0dFRUtLQUpBQUlJWVFRQlNRQlFBZ2hoQ2dnQ1FCQ0NDRkVBVWtBRUVJSUlRcElBb0FRUWdoUlFCSUFoQkJDaUFLU0FDQ0VFRUlVa0FRQUlZUVFvb0FrQUFnaGhCQUZKQUZBQ0NHRUtDQUpBRUlJSVVRQlNRQVFRZ2doQ2tnQ2dCQkNDRkZBRWdDRUVFS0lBcElBSUlRUVFoU1FCQUFoaEJDaWdDUUFDQ0dFRUFVa0FVQUlJWVFvSUFrQVFnZ2hSQUZKQUJCQ0NDRUtTQUtBRUVJSVVVQVNBSVFRUW9nQ2tnQWdoQkJDRkpBRUFDR0VFS0tBSkFBSUlZUVFCU1FCUUFnaGhDZ2dDUUJDQ0NGRUFVa0FFRUlJSVFwSUFvQVFRZ2hSUUJJQWhCQkNpQUtTQUNDRUVFSVVrQVFBSVlRUW9vQWtBQWdoaEJBRkpBRkFDQ0dFS0NBSkFFSUlJVVFCU1FBUVFnZ2hDa2dDZ0JCQ0NGRkFFZ0NFRUVLSUFwSUFJSVFRUWhTUUJBQWhoQkNpZ0NRQUNDR0VFQVVrQVVBSUlZUW9JQWtBUWdnaFJBRkpBQkJDQ0NFS1NBS0FFRUlJVVVBU0FJUVFRb2dDa2dBZ2hCQkNGSkFFQUNHRUVLS0FKQUFJSVlRUUJTUUJRQWdoaENnZ0NRQkNDQ0ZFQVVrQUVFSUlJUXBJQW9BUVFnaFJRQklBaEJCQ2lBS1NBQ0NFRUVJVWtBUUFJWVFRb29Ba0FBZ2hoQkFGSkFGQUNDR0VLQ0FKQUVJSUlVUUJTUUFRUWdnaENrZ0NnQkJDQ0ZGQUVnQ0VFRUtJQXBJQUlJUVFRaFNRQkFBaGhCQ2lnQ1FBQ0NHRUVBVWtBVUFJSVlRb0lBa0FRZ2doUkFGSkFCQkNDQ0VLU0FLQUVFSUlVVUFTQUlRUVFvZ0NrZ0FnaEJCQ0ZKQUVBQ0dFRUtLQUpBQUlJWVFRQlNRQlFBZ2hoQ2dnQ1FCQ0NDRkVBVWtBRUVJSUlRcElBb0FRUWdoUlFCSUFoQkJDaUFLU0FDQ0VFRUlVa0FRQUlZUVFvb0FrQUFnaGhCQUZKQUZBQ0NHRUtDQUpBRUlJSVVRQlNRQVFRZ2doQ2tnQ2dCQkNDRkZBRWdDRUVFS0lBcElBSUlRUVFoU1FCQUFoaEJELy8zYnJRQUFBQUFCQWtMLzFJQmRGREFrQUFBd0pBQUFNQ1FBQURBa0FBQXdKQUFBTUNRQUFEQWtBQUF3SkFBQU1DUUFBREFrQUFBd0pBQUFNQlVGekJUaGxremE0QUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIkZJRE9fMl8wIiwiRklET18yXzEiLCJGSURPXzJfMV9QUkUiXSwiZXh0ZW5zaW9ucyI6WyJobWFjLXNlY3JldCIsImNyZWRQcm90ZWN0IiwibWluUGluTGVuZ3RoIiwiY3JlZEJsb2IiLCJsYXJnZUJsb2JLZXkiLCJlbnRlcnByaXNlQXR0ZXN0YXRpb24iXSwiYWFndWlkIjoiNTYwYTc4MGNiNmFlNGYwM2IxMTAwODJmODU2NDI1YjQiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjp0cnVlLCJ1cCI6dHJ1ZSwidXYiOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJsYXJnZUJsb2JzIjp0cnVlLCJlcCI6ZmFsc2UsImJpb0Vucm9sbCI6dHJ1ZSwidXNlclZlcmlmaWNhdGlvbk1nbXRQcmV2aWV3Ijp0cnVlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6ZmFsc2UsImFsd2F5c1V2Ijp0cnVlfSwibWF4TXNnU2l6ZSI6NzYwOSwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0IjoxNiwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoyNDEsInRyYW5zcG9ydHMiOlsidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN31dLCJtYXhTZXJpYWxpemVkTGFyZ2VCbG9iQXJyYXkiOjIwNDgsIm1pblBJTkxlbmd0aCI6NCwibWF4Q3JlZEJsb2JMZW5ndGgiOjMyLCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6OCwicHJlZmVycmVkUGxhdGZvcm1VdkF0dGVtcHRzIjo1LCJ1dk1vZGFsaXR5IjoyLCJyZW1haW5pbmdEaXNjb3ZlcmFibGVDcmVkZW50aWFscyI6MTUwLCJhdHRlc3RhdGlvbkZvcm1hdHMiOlsicGFja2VkIl19fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiTk9UX0ZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMTAtMDIifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTEwLTAyIn0seyJhYWd1aWQiOiIxYWM3MWY2NC00NjhkLTRmZTAtYmVmMS0wZTVmMmY1NTFmMTgiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjFhYzcxZjY0LTQ2OGQtNGZlMC1iZWYxLTBlNWYyZjU1MWYxOCIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IDUgU2VyaWVzIHdpdGggTkZDIChFbnRlcnByaXNlIFByb2ZpbGUpIn0sImRlc2NyaXB0aW9uIjoiWXViaUtleSA1IFNlcmllcyB3aXRoIE5GQyAoRW50ZXJwcmlzZSBQcm9maWxlKSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzMsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfSx7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciLCJzZWNwMzg0cjFfZWNkc2Ffc2hhMzg0X3JhdyIsImVkMjU1MTlfZWRkc2Ffc2hhNTEyX3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURNekNDQWh1Z0F3SUJBZ0lVU09FalRmLy95cVJmUFc3UXE4cXRJeUNyQWc4d0RRWUpLb1pJaHZjTkFRRUxCUUF3THpFdE1Dc0dBMVVFQXd3a1dYVmlhV052SUVaSlJFOGdVbTl2ZENCRFFTQlRaWEpwWVd3Z05EVXdNakF6TlRVMk1DQVhEVEkwTURVd01UQXdNREF3TUZvWUR6SXdOakF3TkRNd01EQXdNREF3V2pBdk1TMHdLd1lEVlFRRERDUlpkV0pwWTI4Z1JrbEVUeUJTYjI5MElFTkJJRk5sY21saGJDQTBOVEF5TURNMU5UWXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFDZHZsMjd3Mmd1MWZQWGVFRmJJZHF4MEJhbHZWRFZXclFQSjdIcXZpdUV0WkhseFNMeFNGdGNYcFRvbHZMdm9mOGY0dE1lclFUa1ZHemNtWXptMUVCVDRJSnVNbW9FcWZrRUVoV3BzQURNRnJqWmtxbFpZOUVxeFF6TG9WRUVvbkU1b0d4U2RWQ3hDY0xJYWNrcHlSL0NDWHZqMUJ0L2hUZ0U5aFRsRjRwUnF4TWt4M3BsRjd5OGREWmxSSFdzN3ZibmhtQkNHZUkwWlBFUTZubDJtQ2cycjc0YWRGMnU2SzlyckxmaEJDM1FMRThFUHJncVVzSStoa3VxMnRLNE0yU01PcDh1VVZWa3FVZXUzaDBrcjNXVkkwVzAycGtnck9naUZLTEZOa1NyYlloZGpNQkRqNWl6bXFmYzl4SlJLb0RYNjEycWQ4WkdWSHBUNUFZRlgrMWhBZ01CQUFHalJUQkRNQjBHQTFVZERnUVdCQlRaeVU1RGlRL2EyVUVnRTdxQkswemhJc1JOUmpBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQU1BNEdBMVVkRHdFQi93UUVBd0lCQmpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQVh2bkI0U0x1VUpmWU1TVkdBaHNzTC9TbVdsaTNGU2NjZ3h5ZHZLbEFDY2lkSUlXS1FxYTNxL1FTVUVRekM5RGdFZk1ncjdpQzFCa1RaYklMYm9WNlVaNWtuTnN2akVaV3VNZW9nSjh0Z1pzMWhWdkt3Wml6d0orbUVjbXNqaElyQll1b0wxVDZ5ck9KdktGZzFqditDeTRad0E5QnBrL1YzVU9pcjFWeUs4ZEN0eUh1NnZmb3NvdEFkWXg4RkF1UjI0M2dSVE1WNkp4OEpkaWcySkRJQVFNbHpWZURwU1VIWC9LMkhYUkh4SHdmZ2piZ1VqakJ1LzcycjhPZmVoeWh6SFhJM0s4Q0ZGZGZsTys4bkVPSkszeThGMWl2Z1M1dU4vOFNtY1l3L1NUUVl3aHJ4UHV3ejNuUDhiYU11bTRCQjJublltcEI2MHNYM2JsNWs4UVVTdz09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWZDQVlBQUFDR1ZzK01BQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBSFlZQUFCMkdBVjJpRTRFQUFBYk5TVVJCVkZoSHBWZDdUTlYxRkQvM2Q1OXdlUVNJZ1M5QVFBWGNGTEFRWmk5ZnBlVnoxdFkvV1RacjVXeHBjN1c1a25MYTVqSTNaODVzclMybk0yc2p0V3daUzdJVUg0SDR4Q25FUXg0REFaRjc0Vjd1czg4NXY5L2xJbkJ2VkovQjRQdjludS81bnUvNW52TTU1NmZ6QS9RdjBIYi9JclgzVkZLUG80NWNubTRpblVJV1l3TEZSbVpRVXV3akZHL04xaVJIaDFFWjBOUlZSdWRxdDFCZCsyblNLeVMvT2h5czArbGszZS8za1E5cXZENFpVdGE0VlZTVXVZMGVpcHlpVGhBZm9jb09SVmdEdXV3M3FLUmlBZDNyYmNFdGpUallJb2Y2V2FIc0NtelZQV0NNeCtjZ2g4dExxV01LYU1Xc1VqTHFvMlJ0SklRMG9Pem1lcnBRdTRlc1pnc09Oa0d4SDdkMGtkdlRUMTdzNE9NVTdWSThaaGpnR2FNK0FxOWlFTnU4UGlmMXVkejA3TXd2S1dmOEdsVm9DRVkwNFBDNVdkVGFYWUZiUjh2TnZMNSszS2dmYjV4Tk15YTlSYW1KaXluYU1sR1RWdEZscjZiYTl1K3BxbkVYNHVNdVJSZ2pTWUVock43dXRGRmU2bHFhbDdOZmt3NWltQUdIeW5QcGJrOFZtWTB4c3RucHRsRkNWQ1l0elR1Qk44M1FwTUxqVHRldmRQelNVbko3ZThta2p4WjM5ZlhiS0RmbGRacWJ2VStUVWdHbkJWRjZmUTJpUEhnNFcxNlVXVXd2emJrMTZzTVpFK1BuMHB2ejdKU2V1QXllczhsY3BDbWFLdW8vcCtxV3IyVWN3SUFIV3J2UDBZRXpoWEF0TEFic3NIaHA3aUdhbXZ5aWpQOHJ5cXJYVVdYOVhvb3d4eUF1Zk5CcnA0M1BPQkZYWmxrZjhNRFJpcWNweW93QXdwdXoyeCtmV3Z6L0R0ZGU5c21zenlndGNSNkMxd2JkekJsNk9scTVXTllZNG9HYXRoSk1ya1RFeDBqQVJTSEFWcys1cllrUU5YYitRZ2ZQTHNRNmdYeUluc3JlUWZtcG03UlZGWWZMODZuMWZpVU9rWXZTaGtVUHh2YnVrem95NksxaWhNMWhvM1h6VzZFdlNmWEErZHBpV0dhV2QrZG9Yekx6bUd3S1lGTENBc1JBbFBCQWhNbENGWFU3dEJVVlByOEhnVmNKSFdxK0YwMHBscitETVRkclA0enZ4WTExa05NaHhUK1NlVEdnK2Q0VjVMUUppdHlVR0pOQjhWRlpzamdZQlpNL0lJL1hDVGtqMHF5RE9wRjJBVlExN0NJalVwL0RuVDFVa0w1RjVnZGorc1Mxd2cxZ0UzZ2lnbTYwZkNYelNuUFhieUFQYklYditJRHBFMTZUaGFISVM5c2t5aGxtTUU1RjNjZnFBS2hxMkMwRTVQSDFnWWFYYUxQRGtaRzBIREpPbktXSHA1MUkwejVTT3V4OGUxV0F1WnpkSFFyVGtwOFRtalhvSStsYTB3R1pzenVicWJPM2lmUTZBL1c3dlZTWXNWM21SMEpLd2tLYzRXSGlCa21SOEkzQ0NnSTg3b09MNHF6VDVQK1JVSkJlakVPZ0FQSzhoWVB6YXRNK2VJVHAySU85eVRRbWVyb21QUnh4MXF4QWNzaWxlL3ViU2VFYmNXUUdZRUNnaGNMWTJIeUtqb2dqSDI1aE1wanBVdjFPdWdsaTRlaDJlUncwTzMyYkpqa3l1Q2dOemcwdnpsWU1TaVNzMHVvbzRNRzdoTU9qQ0VhWDF5RkUwblN2akJ6dVRuRXBLODZaOElvcUZBSXVidzhrZzlBckVhUkVXU1pJK2pINFhicDZnOUU5RW5KVDNvYVJ6RE4rTVVKQlFESG41NmE4b1VtRUJ1c094QnMvTjUrdEpFYlBrQUZEajhVR3ZPcy9JV3ZjU2dsR0JodlM3L0ZUWWZwV0dZZERZOGZQQXhXU0EzNXNUQzRwNCtMbTRBYXFJb1BlUXRmdWZLNkpoMFpoeGxic1VYT1NtWE5pZkQ1WlRBa3lEb2ZiYmNjbHhuQThXTkFxeENiUk55a2hYeFFwYUR3NjdmWFVZYnNpRzBLaHR2Mm9lSXZoOHJoUU1ZT2NFQXFYRy9lSSt6bmdPYzV5eHI4cTgySUFNMWMvRkxGT3BscXU1ZUZRWHJNWnpHY1ZDalliTFdHNUk0QlQxZXVScmxieHROT3RNaXREREVoTFhJSXluQUF2dU9FV0UzWDNOZEFmdDk0VmdhRzQyWElRdDBaWDZQZUNFL3FRRmU5cks2SHg3WVU1MEt2SDdmVzRmUytxN0tLQkp4c2dnQlg1cFNBR2gxaklyVmg1elE2dzNSZmFhaEJYbS9hQ2JDWlRqQ1VGVVR5V1pxVzlwNjJNakpQWFZxT3JQZ01PNE52NzRHa2Yrb3dmdE5WQkRRbmpGSnFIU3cxN3BYdmhXVzVLWnFlL1E0OU4vVVNUQ0FWV29RWEZJSEJIWFhlM0ZQclVEc3VHRG10Ri9oSEtUSHBla3hoaUFPUEkrU0pxNlM2SEY0STlZV3prQkpUbzQ2aVVNeldwOFBpci9SaWR1THhLWXNTa3NWOHZMbE9RdmhHWDJZbFIwT0JoQmpDK3UvZ0VjdlkwQXBLN1lrNDFOeGpQU1FuV0ZIVEY2NlVyamdldkI4Q3U1YStsMnZZU1JQdHVWRG83M2hoZE1TSG5VWDd0VGpzVlpHeEFsL1dwdGlPSUVRMWduTDI5bVg2L3RSMXRtbGtZajhXNFgrQ1NqV2NVREdZMU5wUy9DN2hTS3FpTUxNL2wyUW1TV1o3M0RkeitnaW84QkNFTllQUTQ2cW5rendYVWJxdkJreGpVUXNXZlpGZ2J1bzNyQWYrd043ak9POTAreW54NFBpM0wrMG5ZTDFTY2hEVWdBUDRnUFYvN0lkMXErMUhTaG11R2tJcVdSUGd5eE1GcVA4SGZqVG5qWHdZNWJRZmJKY3Q2T0l6S2dNSG90Ri9IZTFlZ3NheEhTcUc2d2ZkbVE1eDhOeVRGRnFCY3AyaVNvd0hSM3lrNSszNmhGN3ZYQUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzFfUFJFIiwiRklET18yXzEiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwibGFyZ2VCbG9iS2V5IiwiY3JlZEJsb2IiLCJtaW5QaW5MZW5ndGgiXSwiYWFndWlkIjoiMWFjNzFmNjQ0NjhkNGZlMGJlZjEwZTVmMmY1NTFmMTgiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJsYXJnZUJsb2JzIjp0cnVlLCJlcCI6ZmFsc2UsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjp0cnVlLCJhbHdheXNVdiI6ZmFsc2V9LCJtYXhNc2dTaXplIjoxMjgwLCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjgsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4LCJ0cmFuc3BvcnRzIjpbIm5mYyIsInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi04fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotMzV9XSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5Ijo0MDk2LCJtaW5QSU5MZW5ndGgiOjQsImZpcm13YXJlVmVyc2lvbiI6MzI5NDczLCJtYXhDcmVkQmxvYkxlbmd0aCI6MzIsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjoxLCJyZW1haW5pbmdEaXNjb3ZlcmFibGVDcmVkZW50aWFscyI6MTAwfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMTAtMTIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDczLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ill1YmlLZXkgNSBTZXJpZXMgd2l0aCBORkMgKEVudGVycHJpc2UgUHJvZmlsZSkiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI0MTAxMjAwMiIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTEwLTEyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3M31dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNC0xMC0yOSJ9LHsiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbImM3NjUwN2UzMTUzMjhmYmIwNmQ3MTg0YmRlZWYxMmFmMGUzMjdmNGUiXSwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiYzc2NTA3ZTMxNTMyOGZiYjA2ZDcxODRiZGVlZjEyYWYwZTMyN2Y0ZSJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiWXViaUtleSA1IFNlcmllcyAoRW50ZXJwcmlzZSBQcm9maWxlKSJ9LCJkZXNjcmlwdGlvbiI6Ill1YmlLZXkgNSBTZXJpZXMgKEVudGVycHJpc2UgUHJvZmlsZSkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDczLCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjJ9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50IiwicmVtb3RlX2hhbmRsZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURNekNDQWh1Z0F3SUJBZ0lVU09FalRmLy95cVJmUFc3UXE4cXRJeUNyQWc4d0RRWUpLb1pJaHZjTkFRRUxCUUF3THpFdE1Dc0dBMVVFQXd3a1dYVmlhV052SUVaSlJFOGdVbTl2ZENCRFFTQlRaWEpwWVd3Z05EVXdNakF6TlRVMk1DQVhEVEkwTURVd01UQXdNREF3TUZvWUR6SXdOakF3TkRNd01EQXdNREF3V2pBdk1TMHdLd1lEVlFRRERDUlpkV0pwWTI4Z1JrbEVUeUJTYjI5MElFTkJJRk5sY21saGJDQTBOVEF5TURNMU5UWXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFDZHZsMjd3Mmd1MWZQWGVFRmJJZHF4MEJhbHZWRFZXclFQSjdIcXZpdUV0WkhseFNMeFNGdGNYcFRvbHZMdm9mOGY0dE1lclFUa1ZHemNtWXptMUVCVDRJSnVNbW9FcWZrRUVoV3BzQURNRnJqWmtxbFpZOUVxeFF6TG9WRUVvbkU1b0d4U2RWQ3hDY0xJYWNrcHlSL0NDWHZqMUJ0L2hUZ0U5aFRsRjRwUnF4TWt4M3BsRjd5OGREWmxSSFdzN3ZibmhtQkNHZUkwWlBFUTZubDJtQ2cycjc0YWRGMnU2SzlyckxmaEJDM1FMRThFUHJncVVzSStoa3VxMnRLNE0yU01PcDh1VVZWa3FVZXUzaDBrcjNXVkkwVzAycGtnck9naUZLTEZOa1NyYlloZGpNQkRqNWl6bXFmYzl4SlJLb0RYNjEycWQ4WkdWSHBUNUFZRlgrMWhBZ01CQUFHalJUQkRNQjBHQTFVZERnUVdCQlRaeVU1RGlRL2EyVUVnRTdxQkswemhJc1JOUmpBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQU1BNEdBMVVkRHdFQi93UUVBd0lCQmpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQVh2bkI0U0x1VUpmWU1TVkdBaHNzTC9TbVdsaTNGU2NjZ3h5ZHZLbEFDY2lkSUlXS1FxYTNxL1FTVUVRekM5RGdFZk1ncjdpQzFCa1RaYklMYm9WNlVaNWtuTnN2akVaV3VNZW9nSjh0Z1pzMWhWdkt3Wml6d0orbUVjbXNqaElyQll1b0wxVDZ5ck9KdktGZzFqditDeTRad0E5QnBrL1YzVU9pcjFWeUs4ZEN0eUh1NnZmb3NvdEFkWXg4RkF1UjI0M2dSVE1WNkp4OEpkaWcySkRJQVFNbHpWZURwU1VIWC9LMkhYUkh4SHdmZ2piZ1VqakJ1LzcycjhPZmVoeWh6SFhJM0s4Q0ZGZGZsTys4bkVPSkszeThGMWl2Z1M1dU4vOFNtY1l3L1NUUVl3aHJ4UHV3ejNuUDhiYU11bTRCQjJublltcEI2MHNYM2JsNWs4UVVTdz09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWZDQVlBQUFDR1ZzK01BQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBSFlZQUFCMkdBVjJpRTRFQUFBYk5TVVJCVkZoSHBWZDdUTlYxRkQvM2Q1OXdlUVNJZ1M5QVFBWGNGTEFRWmk5ZnBlVnoxdFkvV1RacjVXeHBjN1c1a25MYTVqSTNaODVzclMybk0yc2p0V3daUzdJVUg0SDR4Q25FUXg0REFaRjc0Vjd1czg4NXY5L2xJbkJ2VkovQjRQdjludS81bnUvNW52TTU1NmZ6QS9RdjBIYi9JclgzVkZLUG80NWNubTRpblVJV1l3TEZSbVpRVXV3akZHL04xaVJIaDFFWjBOUlZSdWRxdDFCZCsyblNLeVMvT2h5czArbGszZS8za1E5cXZENFpVdGE0VlZTVXVZMGVpcHlpVGhBZm9jb09SVmdEdXV3M3FLUmlBZDNyYmNFdGpUallJb2Y2V2FIc0NtelZQV0NNeCtjZ2g4dExxV01LYU1Xc1VqTHFvMlJ0SklRMG9Pem1lcnBRdTRlc1pnc09Oa0d4SDdkMGtkdlRUMTdzNE9NVTdWSThaaGpnR2FNK0FxOWlFTnU4UGlmMXVkejA3TXd2S1dmOEdsVm9DRVkwNFBDNVdkVGFYWUZiUjh2TnZMNSszS2dmYjV4Tk15YTlSYW1KaXluYU1sR1RWdEZscjZiYTl1K3BxbkVYNHVNdVJSZ2pTWUVock43dXRGRmU2bHFhbDdOZmt3NWltQUdIeW5QcGJrOFZtWTB4c3RucHRsRkNWQ1l0elR1Qk44M1FwTUxqVHRldmRQelNVbko3ZThta2p4WjM5ZlhiS0RmbGRacWJ2VStUVWdHbkJWRjZmUTJpUEhnNFcxNlVXVXd2emJrMTZzTVpFK1BuMHB2ejdKU2V1QXllczhsY3BDbWFLdW8vcCtxV3IyVWN3SUFIV3J2UDBZRXpoWEF0TEFic3NIaHA3aUdhbXZ5aWpQOHJ5cXJYVVdYOVhvb3d4eUF1Zk5CcnA0M1BPQkZYWmxrZjhNRFJpcWNweW93QXdwdXoyeCtmV3Z6L0R0ZGU5c21zenlndGNSNkMxd2JkekJsNk9scTVXTllZNG9HYXRoSk1ya1RFeDBqQVJTSEFWcys1cllrUU5YYitRZ2ZQTHNRNmdYeUluc3JlUWZtcG03UlZGWWZMODZuMWZpVU9rWXZTaGtVUHh2YnVrem95NksxaWhNMWhvM1h6VzZFdlNmWEErZHBpV0dhV2QrZG9Yekx6bUd3S1lGTENBc1JBbFBCQWhNbENGWFU3dEJVVlByOEhnVmNKSFdxK0YwMHBscitETVRkclA0enZ4WTExa05NaHhUK1NlVEdnK2Q0VjVMUUppdHlVR0pOQjhWRlpzamdZQlpNL0lJL1hDVGtqMHF5RE9wRjJBVlExN0NJalVwL0RuVDFVa0w1RjVnZGorc1Mxd2cxZ0UzZ2lnbTYwZkNYelNuUFhieUFQYklYditJRHBFMTZUaGFISVM5c2t5aGxtTUU1RjNjZnFBS2hxMkMwRTVQSDFnWWFYYUxQRGtaRzBIREpPbktXSHA1MUkwejVTT3V4OGUxV0F1WnpkSFFyVGtwOFRtalhvSStsYTB3R1pzenVicWJPM2lmUTZBL1c3dlZTWXNWM21SMEpLd2tLYzRXSGlCa21SOEkzQ0NnSTg3b09MNHF6VDVQK1JVSkJlakVPZ0FQSzhoWVB6YXRNK2VJVHAySU85eVRRbWVyb21QUnh4MXF4QWNzaWxlL3ViU2VFYmNXUUdZRUNnaGNMWTJIeUtqb2dqSDI1aE1wanBVdjFPdWdsaTRlaDJlUncwTzMyYkpqa3l1Q2dOemcwdnpsWU1TaVNzMHVvbzRNRzdoTU9qQ0VhWDF5RkUwblN2akJ6dVRuRXBLODZaOElvcUZBSXVidzhrZzlBckVhUkVXU1pJK2pINFhicDZnOUU5RW5KVDNvYVJ6RE4rTVVKQlFESG41NmE4b1VtRUJ1c094QnMvTjUrdEpFYlBrQUZEajhVR3ZPcy9JV3ZjU2dsR0JodlM3L0ZUWWZwV0dZZERZOGZQQXhXU0EzNXNUQzRwNCtMbTRBYXFJb1BlUXRmdWZLNkpoMFpoeGxic1VYT1NtWE5pZkQ1WlRBa3lEb2ZiYmNjbHhuQThXTkFxeENiUk55a2hYeFFwYUR3NjdmWFVZYnNpRzBLaHR2Mm9lSXZoOHJoUU1ZT2NFQXFYRy9lSSt6bmdPYzV5eHI4cTgySUFNMWMvRkxGT3BscXU1ZUZRWHJNWnpHY1ZDalliTFdHNUk0QlQxZXVScmxieHROT3RNaXREREVoTFhJSXluQUF2dU9FV0UzWDNOZEFmdDk0VmdhRzQyWElRdDBaWDZQZUNFL3FRRmU5cks2SHg3WVU1MEt2SDdmVzRmUytxN0tLQkp4c2dnQlg1cFNBR2gxaklyVmg1elE2dzNSZmFhaEJYbS9hQ2JDWlRqQ1VGVVR5V1pxVzlwNjJNakpQWFZxT3JQZ01PNE52NzRHa2Yrb3dmdE5WQkRRbmpGSnFIU3cxN3BYdmhXVzVLWnFlL1E0OU4vVVNUQ0FWV29RWEZJSEJIWFhlM0ZQclVEc3VHRG10Ri9oSEtUSHBla3hoaUFPUEkrU0pxNlM2SEY0STlZV3prQkpUbzQ2aVVNeldwOFBpci9SaWR1THhLWXNTa3NWOHZMbE9RdmhHWDJZbFIwT0JoQmpDK3UvZ0VjdlkwQXBLN1lrNDFOeGpQU1FuV0ZIVEY2NlVyamdldkI4Q3U1YStsMnZZU1JQdHVWRG83M2hoZE1TSG5VWDd0VGpzVlpHeEFsL1dwdGlPSUVRMWduTDI5bVg2L3RSMXRtbGtZajhXNFgrQ1NqV2NVREdZMU5wUy9DN2hTS3FpTUxNL2wyUW1TV1o3M0RkeitnaW84QkNFTllQUTQ2cW5rendYVWJxdkJreGpVUXNXZlpGZ2J1bzNyQWYrd043ak9POTAreW54NFBpM0wrMG5ZTDFTY2hEVWdBUDRnUFYvN0lkMXErMUhTaG11R2tJcVdSUGd5eE1GcVA4SGZqVG5qWHdZNWJRZmJKY3Q2T0l6S2dNSG90Ri9IZTFlZ3NheEhTcUc2d2ZkbVE1eDhOeVRGRnFCY3AyaVNvd0hSM3lrNSszNmhGN3ZYQUFBQUFFbEZUa1N1UW1DQyJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTEwLTEyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3MywiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZdWJpS2V5IDUgU2VyaWVzIChFbnRlcnByaXNlIFByb2ZpbGUpIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVMkYxMDAwMjAyNDEwMTIwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblByb2ZpbGVzIjpbImVudGVycHJpc2UiXSwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMC0xMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzN9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjQtMTAtMjUifSx7ImFhZ3VpZCI6IjZkNDRiYTliLWY2ZWMtMmU0OS1iOTMwLTBjOGZlOTIwY2I3MyIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiNmQ0NGJhOWItZjZlYy0yZTQ5LWI5MzAtMGM4ZmU5MjBjYjczIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlNlY3VyaXR5IEtleSBieSBZdWJpY28gd2l0aCBORkMifSwiZGVzY3JpcHRpb24iOiJTZWN1cml0eSBLZXkgYnkgWXViaWNvIHdpdGggTkZDIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjUwMTAwLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsiZWQyNTUxOV9lZGRzYV9zaGE1MTJfcmF3Iiwic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURIakNDQWdhZ0F3SUJBZ0lFRzBCVDl6QU5CZ2txaGtpRzl3MEJBUXNGQURBdU1Td3dLZ1lEVlFRREV5TlpkV0pwWTI4Z1ZUSkdJRkp2YjNRZ1EwRWdVMlZ5YVdGc0lEUTFOekl3TURZek1UQWdGdzB4TkRBNE1ERXdNREF3TURCYUdBOHlNRFV3TURrd05EQXdNREF3TUZvd0xqRXNNQ29HQTFVRUF4TWpXWFZpYVdOdklGVXlSaUJTYjI5MElFTkJJRk5sY21saGJDQTBOVGN5TURBMk16RXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFDL2p3WXVoQlZscWFpWVdFTXNyV0Zpc2dKK1B0TTkxZVNycEk0VEs3VTUzbXdDSWF3U0RIeTh2VW1rNU4yS0FqOWFidlQ5TlA1U01TMWhRaTN1c3hvWUdvblhRZ2ZPNlpYeVVBOWErS0FrcWRGbkJubHl1Z1NlQ09lcDhFZFpGZnNhUkZ0TWprd3o1R2N6MlB5NHZJWXZDZE1IUHR3YXowYlZ1em5ldWVJRXo2VG5RakU2M1JkdDJ6YnduZWJ3VEc1WnliZVdTd2J6eStCSjM0WkhjVWhQQVk4OXlKUVh1RTBJek1aRmNFQmJQTlJiV0VDUktnanEvL3FUOW5tRE9GVmxTUkN0MndpcVBTemx1d24rditzdVFFQnNValRHTUVkMjV0S1hYVGtOVzIxd0lXYnhlU3lVb1RYd0x2R1M2eGx3UVNnTnBrMnFYWXdmOGlYZzdWV1pBZ01CQUFHalFqQkFNQjBHQTFVZERnUVdCQlFnSXZ6MGJOR0poamdwVG9rc3lLcFA5eHY5b0RBUEJnTlZIUk1FQ0RBR0FRSC9BZ0VBTUE0R0ExVWREd0VCL3dRRUF3SUJCakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBanZqdU9NRFNhK0pYRkNMeUJLc3ljWHRCVlpzSjRVZTNMYmFFc1BZNE1ZTi9oSVE1Wk01cDdFamZjbk1HNEN0WWtOc2ZOSGMwQWhCTGRxNDVyblQ4N3EvNk8zdlVFdE5NYWZiaFU2a3RoWDdZKzlYRk45TnBtWXhyK2VrVlk1eE94aThoOUpESWdvTVA0VkIxdVMwYXVuTDFJR3FyTm9vTDltbUZuTDJrTFZWZWU2L1ZSNkM1K0tTVENNQ1dwcE11SklaSUkydjlvNGRrb1o4WTdRUmpRbExmWXpkM3FHdEtidzd4YUYxVXNHLzV4VWIvQnR3YjJYMmc0SW5waUIveXQvM0NwUVhwaVdYL0s0bUJ2VUtpR24wNVpzcWVZMWd4NGcweExCcWNVOXBzbXlQeksrVnNndzJqZVJRNUpsS0R5cUUwaGViZkMxdHZGdTBDQ3JKRmN3PT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZkNBWUFBQUNHVnMrTUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFIWVlBQUIyR0FWMmlFNEVBQUFiTlNVUkJWRmhIcFZkN1ROVjFGRC8zZDU5d2VRU0lnUzlBUUFYY0ZMQVFaaTlmcGVWejF0WS9XVFpyNVd4cGM3VzVrbkxhNWpJM1o4NXNyUzJuTTJzanRXd1pTN0lVSDRINHhDbkVReDREQVpGNzRWN3VzODg1djkvbEluQnZWSi9CNFB2OW51LzVudS81bnZNNTU2ZnpBL1F2MEhiL0lyWDNWRktQbzQ1Y25tNGluVUlXWXdMRlJtWlFVdXdqRkcvTjFpUkhoMUVaME5SVlJ1ZHF0MUJkKzJuU0t5Uy9PaHlzMCtsazNlLzNrUTlxdkQ0WlV0YTRWVlNVdVkwZWlweWlUaEFmb2NvT1JWZ0R1dXczcUtSaUFkM3JiY0V0alRqWUlvZjZXYUhzQ216VlBXQ014K2NnaDh0THFXTUthTVdzVWpMcW8yUnRKSVEwb096bWVycFF1NGVzWmdzT05rR3hIN2Qwa2R2VFQxN3M0T01VN1ZJOFpoamdHYU0rQXE5aUVOdThQaWYxdWR6MDdNd3ZLV2Y4R2xWb0NFWTA0UEM1V2RUYVhZRmJSOHZOdkw1KzNLZ2ZiNXhOTXlhOVJhbUppeW5hTWxHVFZ0RmxyNmJhOXUrcHFuRVg0dU11UlJnalNZRWhyTjd1dEZGZTZscWFsN05ma3c1aW1BR0h5blBwYms4Vm1ZMHhzdG5wdGxGQ1ZDWXR6VHVCTjgzUXBNTGpUdGV2ZFB6U1VuSjdlOG1ranhaMzlmWGJLRGZsZFpxYnZVK1RVZ0duQlZGNmZRMmlQSGc0VzE2VVdVd3Z6YmsxNnNNWkUrUG4wcHZ6N0pTZXVBeWVzOGxjcENtYUt1by9wK3FXcjJVY3dJQUhXcnZQMFlFemhYQXRMQWJzc0hocDdpR2FtdnlpalA4cnlxclhVV1g5WG9vd3h5QXVmTkJycDQzUE9CRlhabGtmOE1EUmlxY3B5b3dBd3B1ejJ4K2ZXdnovRHRkZTlzbXN6eWd0Y1I2QzF3YmR6Qmw2T2xxNVdOWVk0b0dhdGhKTXJrVEV4MGpBUlNIQVZzKzVyWWtRTlhiK1FnZlBMc1E2Z1h5SW5zcmVRZm1wbTdSVkZZZkw4Nm4xZmlVT2tZdlNoa1VQeHZidWt6b3k2SzFpaE0xaG8zWHpXNkV2U2ZYQStkcGlXR2FXZCtkb1h6THptR3dLWUZMQ0FzUkFsUEJBaE1sQ0ZYVTd0QlVWUHI4SGdWY0pIV3ErRjAwcGxyK0RNVGRyUDR6dnhZMTFrTk1oeFQrU2VUR2crZDRWNUxRSml0eVVHSk5COFZGWnNqZ1lCWk0vSUkvWENUa2owcXlET3BGMkFWUTE3Q0lqVXAvRG5UMVVrTDVGNWdkaitzUzF3ZzFnRTNnaWdtNjBmQ1h6U25QWGJ5QVBiSVh2K0lEcEUxNlRoYUhJUzlza3lobG1NRTVGM2NmcUFLaHEyQzBFNVBIMWdZYVhhTFBEa1pHMEhESk9uS1dIcDUxSTB6NVNPdXg4ZTFXQXVaemRIUXJUa3A4VG1qWG9JK2xhMHdHWnN6dWJxYk8zaWZRNkEvVzd2VlNZc1YzbVIwSkt3a0tjNFdIaUJrbVI4STNDQ2dJODdvT0w0cXpUNVArUlVKQmVqRU9nQVBLOGhZUHphdE0rZUlUcDJJTzl5VFFtZXJvbVBSeHgxcXhBY3NpbGUvdWJTZUViY1dRR1lFQ2doY0xZMkh5S2pvZ2pIMjVoTXBqcFV2MU91Z2xpNGVoMmVSdzBPMzJiSmpreXVDZ056ZzB2emxZTVNpU3MwdW9vNE1HN2hNT2pDRWFYMXlGRTBuU3ZqQnp1VG5FcEs4Nlo4SW9xRkFJdWJ3OGtnOUFyRWFSRVdTWkkrakg0WGJwNmc5RTlFbkpUM29hUnpETitNVUpCUURIbjU2YThvVW1FQnVzT3hCcy9ONSt0SkViUGtBRkRqOFVHdk9zL0lXdmNTZ2xHQmh2UzcvRlRZZnBXR1lkRFk4ZlBBeFdTQTM1c1RDNHA0K0xtNEFhcUlvUGVRdGZ1Zks2SmgwWmh4bGJzVVhPU21YTmlmRDVaVEFreURvZmJiY2NseG5BOFdOQXF4Q2JSTnlraFh4UXBhRHc2N2ZYVVlic2lHMEtodHYyb2VJdmg4cmhRTVlPY0VBcVhHL2VJK3puZ09jNXl4cjhxODJJQU0xYy9GTEZPcGxxdTVlRlFYck1aekdjVkNqWWJMV0c1STRCVDFldVJybGJ4dE5PdE1pdERERWhMWElJeW5BQXZ1T0VXRTNYM05kQWZ0OTRWZ2FHNDJYSVF0MFpYNlBlQ0UvcVFGZTlySzZIeDdZVTUwS3ZIN2ZXNGZTK3E3S0tCSnhzZ2dCWDVwU0FHaDFqSXJWaDV6UTZ3M1JmYWFoQlhtL2FDYkNaVGpDVUZVVHlXWnFXOXA2Mk1qSlBYVnFPclBnTU80TnY3NEdrZitvd2Z0TlZCRFFuakZKcUhTdzE3cFh2aFdXNUtacWUvUTQ5Ti9VU1RDQVZXb1FYRklIQkhYWGUzRlByVURzdUdEbXRGL2hIS1RIcGVreGhpQU9QSStTSnE2UzZIRjRJOVlXemtCSlRvNDZpVU16V3A4UGlyL1JpZHVMeEtZc1Nrc1Y4dkxsT1F2aEdYMllsUjBPQmhCakMrdS9nRWN2WTBBcEs3WWs0MU54alBTUW5XRkhURjY2VXJqZ2V2QjhDdTVhK2wydllTUlB0dVZEbzczaGhkTVNIblVYN3RUanNWWkd4QWwvV3B0aU9JRVExZ25MMjltWDYvdFIxdG1sa1lqOFc0WCtDU2pXY1VER1kxTnBTL0M3aFNLcWlNTE0vbDJRbVNXWjczRGR6K2dpbzhCQ0VOWVBRNDZxbmt6d1hVYnF2Qmt4alVRc1dmWkZnYnVvM3JBZit3TjdqT085MCt5bng0UGkzTCswbllMMVNjaERVZ0FQNGdQVi83SWQxcSsxSFNobXVHa0lxV1JQZ3l4TUZxUDhIZmpUbmpYd1k1YlFmYkpjdDZPSXpLZ01Ib3RGL0hlMWVnc2F4SFNxRzZ3ZmRtUTV4OE55VEZGcUJjcDJpU293SFIzeWs1KzM2aEY3dlhBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiXSwiZXh0ZW5zaW9ucyI6WyJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiI2ZDQ0YmE5YmY2ZWMyZTQ5YjkzMDBjOGZlOTIwY2I3MyIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOnRydWUsInVwIjp0cnVlfSwibWF4TXNnU2l6ZSI6MTIwMCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMV19fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMC0wNS0xMiIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiU2VjdXJpdHkgS2V5IGJ5IFl1YmljbyB3aXRoIE5GQyIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMTgwOTE4MDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjEuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4yIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIwLTA1LTEyIn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMC0wNS0xMiJ9LHsiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjRlMzAzOGY2YTRlYmZkNmNlYTJjZmUxNGU0NDhjNmY4ZjMwODUxNjciLCJiMzllNmE4ZjVlNGRhNzExNzEyMWIyYjE0ODFhYmIxZDE1ZjE1N2JiIiwiYjc2NjMyZTJjNzVlOTkyYzkwMjc3Zjk5YWZkMmMxMzk5NjhmM2QyZSJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyI0ZTMwMzhmNmE0ZWJmZDZjZWEyY2ZlMTRlNDQ4YzZmOGYzMDg1MTY3IiwiYjM5ZTZhOGY1ZTRkYTcxMTcxMjFiMmIxNDgxYWJiMWQxNWYxNTdiYiIsImI3NjYzMmUyYzc1ZTk5MmM5MDI3N2Y5OWFmZDJjMTM5OTY4ZjNkMmUiXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkdlbWFsdG8gTXVsdGlBcHAgRklETyBBdXRoZW50aWNhdG9yIn0sImRlc2NyaXB0aW9uIjoiR2VtYWx0byBNdWx0aUFwcCBGSURPIEF1dGhlbnRpY2F0b3IiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCIsInJlbW90ZV9oYW5kbGUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlFQ1RDQ0F2R2dBd0lCQWdJTVIzTUVDK1V0TW5IU0ZTeXRNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1Hb3hDekFKQmdOVkJBWVRBa1pTTVE0d0RBWURWUVFIREFWVWIzVnljekVRTUE0R0ExVUVDZ3dIUjJWdFlXeDBiekU1TURjR0ExVUVBd3d3UjJWdFlXeDBieUJDZFhOcGJtVnpjeUJUYjJ4MWRHbHZibk1nUTJWeWRHbG1hV05oZEdVZ1FYVjBhRzl5YVhSNU1CNFhEVEU1TURVd01qRTBNelUxTTFvWERUSTVNRFV3TVRFME16WTFNMW93VGpFTE1Ba0dBMVVFQmhNQ1JsSXhFekFSQmdOVkJBb01Da2RsYldGc2RHOGdVMEV4RERBS0JnTlZCQXNNQTBSSlV6RWNNQm9HQTFVRUF3d1RkM2QzTG5Sb1lXeGxjMmR5YjNWd0xtTnZiVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFLMXEzTUlCMGVrR0JiS3daMEZXS01Gb20xZWhzQXlFTDFVZkdYZTE4WlR5aHlWZytWY2h5L2lIOW8zc3EwZlBDa3VEeTI5aUFQanlXV09RVGY3cWRTMUVUcThpUnBLTlN4eHBsSmtWR25Tekx6Syt4Q0R4NU00ZGFISkxwODhXMkpPOEhMMFdjaThKcm9ObTNVejdZUit6NFVVMGFwek9iZGQybFJ3RUUwbXAxVERGSjBqeFQreGFobHpaQWxkZjkyLy9zV2Rkb1lSclRvZGMvamRlZkVYOWJtZ3dITlR0M3pIQkpvUDg4eW9RMTJuVUtIZXMzTjIvcVF4M0hqQTIreVNGZm1kWUFxZXJEZWo1Mm9ydkExVi9RcGQ4N1BWOURCTkkwdDl0QjAxdCs2UGJ1UG9qZmVxU2xOQm0xa1RxS3lVOU9LbVZ3OEJ3UUVYUUttVCt0MHNDQXdFQUFhT0J5akNCeHpBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQU1CMEdBMVVkRGdRV0JCUXZNcTMwUWplSExPeldtRGk1M0tFT2c4NkdqREFmQmdOVkhTTUVHREFXZ0JSM1ZmV25MV1ZEVW9oU2xZcnpnMjN5WWFBMmJqQU9CZ05WSFE4QkFmOEVCQU1DQVFZd1lRWURWUjBmQkZvd1dEQldvRlNnVW9aUWFIUjBjRG92TDJOeWJDMWljR3RwTG1kbGJXRnNkRzh1WTI5dEwwTlNUQzlIWlcxaGJIUnZRblZ6YVc1bGMzTlRiMngxZEdsdmJuTkRaWEowYVdacFkyRjBaVUYxZEdodmNtbDBlUzVqY213d0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFIY2tJbFFvcE5pQkNENm1NU2lFZzA3dGFvWlpOVlBMS0FTdjU0WnFYb2Z4aElkb3FscXRzL1c1TllKNlQrL0Z3aG43bVNlYkNLbnd1VWhhcUJ5VmtWdDdraGVCSXcvRjZhUGFBZFU4WUljdUw4Ymt2R1B2dDVvUW1VOTlidVVWMXBUYnJFZWRVMVJZbFdMZTRFdG42TFNpRXlLS3BzRG9CUUJIV3NKRWpnVnFIS0ZlUmtRL1dnRm1HYzErd3hSeUtBR0ZvdGhydHJhdzFyZXJLM3ArQk55MEdSdGZNTjd0T25UbjJnaU92dE90ZWJNQkNZenllUmwvOVhBTGZVQzhNdytPb3h2YzUxT0U3bGhlMnlqdU8zeEYzU2pFMGF4K2NXQWpHUUhodUl1VmRmWDhDVnUvUjVTRzUyekE5T280eXVnK2NqS2llQUFFdTJPUEgraW1JeU09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQVBRQUFBQWVDQUlBQUFDVWtxUk5BQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFBN0RBY2R2cUdRQUFBQVlkRVZZZEZOdlpuUjNZWEpsQUhCaGFXNTBMbTVsZENBMExqRXVOdjFPQ2VnQUFBeWpTVVJCVkhoZTdWejNXMVJYR3A1OTlvZnNEL3Z6L2czQVZJb3RsbWgwZFJXeHBwbDFsU3BxSXAyaG8wYXhKWWFzUTdQRm1HaVNUVFNKSUUwRVJTV3VqaFVyYlJpVU1vT1V3Q0Rpd09pKzk5NERjK2RPdlRPWXdleTh6L3Y0Z1BlYzd6dmx2ZC81emozM0luanBnUWQvVUhERlBURHdyTGxacTJyU2dEZXVOeDMvNW56VXh3ZEQxeXBDMSs1em1JcndFTVVYbnhlZXE2cHRiR2huVEQxNTBrY2NXRWQvL3lCS050UzNseFpmbDhjZm9lMFU1T2VXa3N0OGtKNTZQQ3c0TDJTTll2dlcvOVJjZktCU2FadWJOWHI5TUxuc0F0UVlIQlVaSHhPcXRFMU5IYVNRQytqcmUycG1Yd3VuSXlNR1VtSmMwZE9qWTd3OGZOQmFjdnBhZXVveFBuT3RDRjJ6YjJmV2llcnpkeHNiT2xRcXlzN1RwMFBFTkIvMDlnNHd6WURrOG5KTFE0TnA0MXgzSENxMlpIeFhjZVoyUTMwYlJreXQ3bnp4NGdVeE53cWp1Q0hyNDk5VXIxNlZMUlZHaTcyaVJGNmJSRjVSWXU4WWlVKzgxQ2VCSitNbDNyRmk3MmpHQ1A2ZFAzZno5azkrMUdwK0k4NHNJUzc2c01RbmpuWWF6VGoxazZSdlhKOVBMdlBCM05tWnZ1SVVXSUJCOUVYc0hTVVR4Mzk1NkN5NTdDeUtpNVFCVXZsb3Ywd0lGeEpoSEdJQktlb3N2ajFXamI0emd6WnFPWHF5WDBKWFZ6OHBNVTZBRWc0ZE9MTWtjQWZ0QmU2WVlZOWpUYUpEcEVhWUhoQ01nTmhyMDVwLy92dDBvZEpnNE9yTUlxQ0hYRVZKOXQ3Q1pVRTdhTWt4ellqbHVMQkd0bXRmY1V6TXBpL1BWOTBocG1rWXhhM1I5TDQxSTAwbVlpWVBEU1hPbUNIbVQ3cWhZL1NPazRtU2I5MXNKczRzWVVsZ2xsU1lPT3FYTW9KZjQySU9rOHQ4QUZQMGZXSnNpVXlVSkk4N1FpNDdoZWREK3BYTGRrcUZDU2I5R2lYK0U4TzllR0dXVHZlTVZIQUtpQzl3SWZhaTRndERpVTlNZ0RUdVZZaDc1clJrYXJwWlhSZ2RNYjRrMWFrZ0lrcGU4MkgyOExEOWRRWnIrN3pabjhpRWNoQ2hjTXdJejJhTXVZNzJFNmVsSkI0bDFta1l4ZDNaK1J1dENiamgxQjhYd24zTW5kb1c0c3dTM2wyeGh3NWF4bHJqSkc1aUtpUGxHTG5zRlBibmwwdUZKczB6Sjd4OHV1Y25Vc0VwL0o2Uk8zREJKNXhSY3Awd3VER3l3SzY0Qy9KS01WYmpLellFbDIyYnZ5Y09hQmpGcmRYMkxwaTdCYmN5Mm1lRDBDakhLRWd0eW1ZbFRSbVB6dHkrcFNiT0xHRWlpeHQzL3J3NW1YU0FNZHJFVUhCR0E3OU9EWkNyMVZwU2pUL2NMbTRJampWcnZJa1ZNaXhZWVZ2Y2QyclZrMlFKU0Q5WWZ1M3F4ejU5UlNtY0tUYUt1N3U3ZitQNmdxV0JPNE1XYmJmQnViTXpXRzBpTGNQb2M0cVpNUXZwWFgxZEczRm1DUk5XM05CQmZrNkpWQ2huRzRTT3AwMlN6NW1WemhZaUtCTW1ZanZyOU9iVnZlTEdkbXZSL0sxbWM4ZURTd04zYmQzOC9jaUlyWnk3cFBnNlVoR1dYeVF6TVJ3N1RuQlo0QjVNRS9GQnd5aHVCMUZaY1p0SnlzY2FoeHh4d3pwbnRuMGNURmh4ZDNmcnB2Z2owaGlETkVaZ2treU9MY1NGNm52WVBZLzlQM1dKSkdDMjFpZ2JjS080MGV3M0p5YzU4bHpMUlpTWDNhUzNMc1F2MXNQNWIyOStGWStEZUl2N1hHV3R1YmlSWnBITExtRENpbnZQenBQc3lhQ3R4VWRHNU9IUzBKRCsvWGMrUTdiSHZvcGVmTFJoUDFPWEw5d3ViaXpncE1RcmcwVnhHOUNnOFlZbmN0dEJzMG83ZTBZbU8yeWo3MzZTQktXeWtTbUFxYUo5bWNoeGlsL0sxU3YxVEFGZWNMdTRzYnNnSlY0WkxJcDdlSGlFWEI0L2VNUnRCMXN5dmtOZGtkZkhZNmFRTHliR2YwVXV2M3lKOVByOWxXZzUxOTNHeUh3bkpzeTk0cDQrSmJtL2Y1Q1VlR1V3Ri9lQ3Vadkp0WEhGQkJlM1BGbHU4dVRTUVN4ZnNuTmN4SDN2N2lOZk1Ua3BZSWlmWmNLNEsvK3RJeVZvRkJVcS9jUko3REhCejhqRnNYTWlKUnlHZThVOXhUL3htcktCT1N5MHl4WjFwNE9ITlJ5WWlUdm03Vm5wOVhWdEhQdU9VcVY5L3R6eTluMUNpMXZzSGJ0MGNWYXVvb1F2Wjc2WndsWWs2SVM0c2NWQjlPWGswL2cxTEVSQlNvd0NtZmVLcGJpZFRCb1AzYXhZdW92dmNiUWJ4YzJMdUJObXowZ2JISHhPelBGQldTbkVqY1dRYTlNcFVzYzM2OE1MZmpweG1WaG5ZVUtMRzhrQUJwRTV4T0pGc1RjN2lGSjBRdHlYTHR5SGQ0N09wZ2FrS0s4MmtCSXNsSlhjNE53R0lJTDMwU05WcElSamNMdTRxVk4wQnlqeGlaMzFab3B6NGo1VGJoSzVpVi82ck5FSllxeGdEWXQ4UVI3M05hUUpMdTV4STE5eDYvVWovL29nbXh1MmhRa2ZyYmY4WEFqVHZIcFZ0b1R6Mk1RN0ZtdElmeitQQS9uL2g4amQzZDBmdEdpNzNlTmVYa1I3d0pxYUI4UUhEWSs0TFlNNmFCQ1pudG9nVG5qSFhMMWlJV3d6K1Bua1pZNHVRUXhPWHE3SnlZSnR2RWJpZm10NnFuUGlCcjQ2VWlXamp0L2phUzF4alR0SFRIRnE4amZFQVExUFdtSUJDTnZ2ck5qTm1YaFlDQTlXR0ppenR4Y3ZIdWowWlkvN3puWU1QT3duRTR4dHpmS2dIUkp2azFyWU5zeVpsZG5XMXMyVXNRdTNpeHZlSmNJRXU1U0prdndrc2M2OTRNcmcrTEhxSllGWjZCbzFaU0x1RERwQytnRGYrQlFMRTVRaS81cFlwekdoeFkzRURodksvTnhTdnB3NXphVU41Y2tmZitVcXpDdmFYNXA0NlNLMTZqMGJObnlnN1BoVDJTTkJxVnBRMXZMbm9vWmdaWHZyb0I2WGlrNWR0WkI1Q3hQMzdITDBiU3EzaWp2S1h4cjNSWGJod1FObjdISi9RUm5VNmZyRDZXdkt4dndjVEZrWlp3WWQ0WHZVRTFqakN5b1k1N1RYS0hLNzVWRWdvdEhLWmJzNUdTRzJoaEZoT2JqYW96ZXN2TmtwcVBsTlVOb3NLRkZSaE1TdlBKMVhUWjIzRHczcFY3MzNHUWFFWFZmaUV6TjlTb3BhM1VtYnR3TTNpaHVMNVBRcFNjK2ZVM2ZwYTRHZE8wNndYL2g1N2NUdGhrT2N3d2NyVUpoZEY1MlZDbU9aRThjVGJUckJyLzJDNGliQjZVWWpTOVZ2VkhhY2FxUDA5K01QTlZRdlRQTWlHSXlOT2tTYnR3UDNpdnYzT2FFY0wyekpaTTdYU1B2eHMwZmN0dERWcFpzek00M3puakhxaGdVclJ1Z2xlTUY1dGVCc3U0bXl3YUlHS0g1YlF5OEtQQjBjQ2xxNG5lTWRJeWIxaWJseTJlVG94eUk4NG5ZY0huRWJUZGtWdDhId0ludHZJU2RwcGgvcnhsWlZVdDh2UVJCZTVZMkNzMjFjY1lPWGVuYzNVdUlHZmpweDJWL0NPYkNrUmlrc09HZHcwTTRPekpxNGRRTXVmZUJqRG12aTducjFMMDZORjdadTlvaDcxSlJkY2JlMFBQR1h4V09PVFNyNnhLOEx6NFVVR0tUV2FnWFYzVnhsZ3hkN2R0ZjNNR1ZHUmd6TGc3Z0hscUJNbUZoVmVac3BZdzBXeFIwZ2kwZFMxRkRmWGwvWHhvdjM3ejN1NjN0S1RKdkNFN2t0NEE4c2JneU4xSWViYlFmSWttb3VHWThHYW5YNnY1N1RVSmtKVXBFeFpaL1QvcTJzK1hHZk1iaU9Qdk5tbTZJTzVOOWR2c3Y4STIwMnpNVU5ZdldZTmtrK1kyb3lObnk4T0dOcVJuR1JrcGcyaGJtNFFha3dldUg4cllzWGJuT2FRWXV5M2wreHA5dG1FblhwNHYwbGdic1gvMk9iaTV3MkdidEp0ZzdsU1FuR0Y5b0FqN2dKN3QxOU5IMXFPamRzQ3hQV3J2N0NZUG9lL2NuVy9qY3FXcWx0NVRtdDRMeFdjS0g3TCtVdGVZMG1UN0lIZE0vb05uRDBIU1VUSlJTZHVrb0tXWUpGY1lOb21CT1VpWkpQL0ZCRFRKdkNvcmhCRno4enc0akpoTkZhRGNuUUxLS2srTHF2T0lWVDBRblNPaHhyT2ZVTitPZWYva0o4MFBDSW13S2lLVzU2K3JtUzhWQUFmY1JNbDVmZElJVllLTmJvUXVwMDg4NnI1MVczUk56UUtOc3RmTDN5L2JjWHpHV0toUDdEOS9ZT1dFK2dyWW5iT2FMWFdFT0lhVk5ZRTdlTGhEYW0raWQyYW0zbE5weTNBbDBubkVMWnExZDl6c25CZUl2NzdKbGJDQWtpTDBiZkZER0NrZUhVWnlrdVlzWFNYWFNmMmJmTmVJa2J0N1U4TGNra0lXT2o3bUdyeUR1YTd0ZFlGY3A3V0xEQ3hsdWR3MFA2a1NHclQ0V0hodlJMQXJkekRpeEJ0Q1F2eCtwZkdqcDZwSksreDVnL0hlTzB4TWtiUlpoeUc1SDc3M015TWVEMGFhNHJ2aGpTcnpIUkwxVDVDbU0wSGJZaWQybkpEVFJzckpGbXB1eVNWSVNtcVlWQ2xEelpMMm5UeG9POXZRUEV3U2g0aTd1aS9CWTZRSzk2VUFORnpOYTZzRnh5MlFYUUIwN1VmZzdoamFHZkpIMURwRE8zemRnZjVVSG44Uzg5Q29tWmFkK1N5Nll3R0F5YlBqcEFUelByejhFSTVkaEtWbFhXa2tKTzRkVFBWM3hGS1V3YmFKc0p6S0kvZDNaR2V6dlpmWElBanpPbXBkS3hnMHBGTUNERzZnNVRRajRzcDc0WXFqeHJkUXNidW5ZZmZZSk5sVVFWamhGSFNVWjQ3T0ZwMUpvUHMzVTJ2M2k0L092REFCbjJOcFNzeVpqejZlTm9ETUoyS0Q0cDRXaEJYc1gxYTAzRXRDbDRpN3Vqby9kMDBiWGkwMFlXRlNvdHZnWEtGMjF0M2FvbXpWZUhLOE9EYzhPQ2N4QTExNFh0enpkN2o5RVJaS1FlandqTmg0WHdrTnpJaUh3a2VjM05uVjFQTE85eWtKTzBQdTU2K0xCdGYzNDU3WmR5amVycDlqYWdkdEhUTTVBcy96b2lOQThHbWNicy9mU1gyemVibXhvMTF2NTJEeGFLOXZidVpwVzJ2cTRkUVhkRFpENXFNZFVkSTlWNHhiN2l1M2Nmd1VpTHVsT3Z0M3BDM3RPalF4bncxazFWUVY3cFdIVmVEQS9KV1JlV2QraEF4ZDA3TGJRMWpXMWxBOFBESXkwdG5Tajg0SDRyS2thRTVNQUl4NnhGaGdkVEpZOThXWG1IOXZYNFVSZXhhQVc4eGUyQkI2OEhYcjc4SHlocjFDMWJtSjc4QUFBQUFFbEZUa1N1UW1DQyJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDE5LTA3LTE2IiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJVbml2ZXJzYWwgU2Vjb25kIEZhY3RvciAoVTJGKSIsImNlcnRpZmljYXRlTnVtYmVyIjoiVTJGMTEwMDIwMTgwNTIzMDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjAuMSJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMTktMDctMTYifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyIxZDRjNDY3MmZmY2JkMTQ0NTZkODljN2ExYzhhMmMxMmJhZjAxOTM4Il0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjFkNGM0NjcyZmZjYmQxNDQ1NmQ4OWM3YTFjOGEyYzEyYmFmMDE5MzgiXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IklELU9uZSBLZXkifSwiZGVzY3JpcHRpb24iOiJJRC1PbmUgS2V5IChVU0IgQykiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MTY3NzcyMTYsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6Mn0seyJtYWpvciI6MSwibWlub3IiOjF9LHsibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQzNqQ0NBaitnQXdJQkFnSUdBT3EwQUFBQ01Bb0dDQ3FHU000OUJBTUVNSUdSTVFzd0NRWURWUVFHRXdKVlV6RUxNQWtHQTFVRUNBd0NWa0V4RHpBTkJnTlZCQWNNQmxKbGMzUnZiakV0TUNzR0ExVUVDZ3drU1VSRlRVbEJJRWxrWlc1MGFYUjVJR0Z1WkNCVFpXTjFjbWwwZVNCVlUwRWdURXhETVRVd013WURWUVFEREN4SlJFVk5TVUVnU1dSbGJuUnBkSGtnWVc1a0lGTmxZM1Z5YVhSNUlGVlRRU0JNVEVNZ1VtOXZkQ0JEUVRBZ0Z3MHlOREE1TVRneU1qQXdNREJhR0E4eU1EWTBNRGt4T1RJeE5UazFPVm93Z1pFeEN6QUpCZ05WQkFZVEFsVlRNUXN3Q1FZRFZRUUlEQUpXUVRFUE1BMEdBMVVFQnd3R1VtVnpkRzl1TVMwd0t3WURWUVFLRENSSlJFVk5TVUVnU1dSbGJuUnBkSGtnWVc1a0lGTmxZM1Z5YVhSNUlGVlRRU0JNVEVNeE5UQXpCZ05WQkFNTUxFbEVSVTFKUVNCSlpHVnVkR2wwZVNCaGJtUWdVMlZqZFhKcGRIa2dWVk5CSUV4TVF5QlNiMjkwSUVOQk1JR2JNQkFHQnlxR1NNNDlBZ0VHQlN1QkJBQWpBNEdHQUFRQWxjVFlzQ1YyTHh1d0s4UTVQSyswMy93U0FQU3BRWlI2azEyUDJwcWZCMXA3TTNKVWZVd3ZlbWl0b2hLSlkyRWVwUExhZElpd3oyZ1ZhclBCNk1GYy9INEJSbXY1eWNVWWhXd0p5UGlSZnFGSlFyY25PcjJRbUdVbTduL0daaFFLVno1dXI4TDdOT3Bub252eGN1aGNldWplZTF4SHBJVStXcnlDbzJocE5mWG9ZaUtqUERBNk1CMEdBMVVkRGdRV0JCUTdWamxMM2FnU1RYdlZBRnlLYjRHSUVjcDB3ekFMQmdOVkhROEVCQU1DQVA4d0RBWURWUjBUQkFVd0F3RUIvekFLQmdncWhrak9QUVFEQkFPQmpBQXdnWWdDUWdFK2ZiYkpGY1hpRmdRWmJacjN4UWRVV1NuZ2cxaE5ya0hGSGg1UTZSRUhYSEVYYXl4K0ltZjAwaVBvTnBBRTZjOW1DU1RWZVdCc0dPcURTNEIzNlJWUW9RSkNBYlh3TUQrbDFGL0xzeFJCZTQrME1IaHdyMjB2NmhrbStzMktPVlVyMm4rSUF6MmNnaENDbExPVGRYWHZRR2w0NjUzWFgzdndYOVZwZ3lSU1VUMXRoaWV4Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQURJQUFBQXlDQUlBQUFDUlhSL21BQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRmlVQUFCWWxBVWxTSlBBQUFBb3JTVVJCVkZoSHpWaHBjRlBYR2RYeW5tUXRYaVhMKzBJYXNNSEdPd1liRWxKS2dFa0NBYVlNMDB5Yk1tbExLQU5objhuQ1pnZ3A1QS9VaEk0emhORFNhV2NLSkd5Rk1LR0JOSEh4Z28xdEdiTWJiL0sreUpZbFdjdVQxSE4xaFZCa1c5SVBZbkxHNHpudjNpdmQ4Nzd0ZmxkOGg4UEJHNFhHZTExMWxacmV6bUhPWnVmelhZTlBFdzRld3dwakVrS3laeVhGSnlsY2d4N3dsblg4OEhmSEQxMDM2aTBTS1NzUUNuNFVUVTVnV3h0bkh6RmFJMVRTOVR0K3ZtUmxybXZDaVNleUJyWERLK2FVR0hUVzRGQXhCTkhCQ1lETlpoL3NOeVpQaVRqNTN6VThucEFPdW1SMXR2Y3ZTaTlXeFFURHRuUmlnbUUyY1VhanViUjVHeU1VNDVIS3NzOU8zaStUaVlYTXhCbHBOQ3htVGhiTW5yK3hFWnpvK0dEdGFTSHdURFVCSWpIVDIyVTRmdmdhT045Z01NeE8vRGdxTm9ULzQ0VjN3TERiSGJyQmtiSzJEd1FYVDZsbDhxQ2ZnaVpBSU9EYjdieks3KzhMcDhRczdHelRQWE1QUG9IREVhNlNDam8xdXNETEFZeU1mTVlmelYvODkzeDBMd0RvbytPSDZ3TUJ4SFJwaGdSV0N4ZWdBN0Vsa2dVVlZpeG1lSHlTd3B6VkxnQVFBYzVITEJBS3lhUER3U2RTN0E1RU1aNnh4RFRDQmFnTVgyV3hZQmRlUUtMd3BUMmR1clBsNnkvWGI3NVF2V0Y0Y01ScXNUMlhvcnlzM29RUmhVcUdrbTBZTm0vWnN4Q1BYOS9hck8wemNKdzlQam44c25vejFpeDlJOGVnTjd1K3l4LzRlQkVYOVFmVGlQVzFsUm1oRVJMd05VdFBpSU1ZbUdwNlhqeWRmWFN2RjNaaVJjSnZ2N3BEUjhJVVVxR1FYMW5hVlBiTlF6eHVMSnB2NDRnNTZheGZDQUpaQ0ZQMTl4aUxpcGVCTnovc3F5aDlKQTVpclZZdUxUTU9JMjJQK3ExV0cxL0FaMWhCUTEySDh4Tzh5ZE9pWUswSWhheG80M2s2OHNkM1g5THJUSlQ3Z3owZ2ErSGsvdTI2QW9HUXVIdjcyMmNVa1RLUUVZTTF0ekFaUkYybEVZa1lFQmlzbzJVSUJFalBqb05XSlBqZ2dQR3JMK294OHB1MWhmaThPeHQ4d2NGRGJQa0JpWFFMdDNYZkl2RHEwcFk3OVIyc2lNR2dQRGdvVkVGOFduMjlGZTREUWJRaXpoL2U3Z2JQbVpXTTRBTUpDWmZzMzNZSkJOaDVhTW5nd0FqbHZ1SGZpYkQ4NnMwdlViNW55N2tJSlRFVng5bFNNNkxwNE8yYjdlempBeDVtVTkvUWdHVE9USUE1UVdCQ0syZjdSMGtaK0lKbDZRcWxITTRsUzMzQ2p4UHROanUrOTYzTmM4Q3ZuR3ZvYXRQUkZvT3oyTE5tSmppWDhPN1dkd2xaMS9mQWJEVVZyU0FTR2F0VXlmQng4T0RRb0UvMlhYWE84M1lYdjQ0a3Bkd0gvTWdhR2pSdCt4TnhIN0JudzRVd1p5WUNjQ3ROdzVZSEE0em9TWldCMldyTGlTeGdhbVlzTlF4S0Y3TGg0STRyNFBsekowMUppNkwrOVFGZnNsQVNaVExSNHBWWjRDYy9yMFQxcHVjQi9NNVpiSEFUZUUxRlU1Q0VKYXVkUUl5M05nMVFucG1mNE41ZUpoZWZPRkpLZWRIaHBmMDl3NVNQQjEreXRIM0dQVWRJVVFBTzdiNENYMUJPeW5jUUV4b21CYitqN29JbDZEZ0ZwdTQzZElGTXo0dURVZWtnc2lGVUlkMjEvaXo0NUxTbzNNSkpPRERvMUpnWVZ4YlNPM215WXZiODU4RS8rZkFiMkFtK29GTTJ6cGFTRmtONVRYbUxPOTRwVUducmJyU0JaT1Fub09TNnp4d1k5Y0kvYXdlNlNXRHRQN29jaGNQSGNUU3VySUZlZmRHZmwxSis0c2gxZVREcFpTbXMxaWZ4amtLRm5LQ2NBaXJWbFVTV1JDTENuM3RyR0N4TUtkMjFnUmhNR1IweTc3VnBhSlRwMUdpTUxRc1d4bFZwV2s0cytKNTN6aU90OEtWMENzQnNWbjRpU1BPRFBwUEppdnBPeHluZzA5czFuWlJuNXNGZ1Q2SWJKL2YxcXc5Ykd2dkI5LzFsR1c0VzR4bHNERmxZaVZwMTRMTmZndmYxNkUrZnFKSklSWFFLY1BBY05xczk3NFVrOE9yU1pzOTRwNER4TkMxYVdocXlDeElSREhRY3dMdUZLMlRiVnAwRVJ3aitZZXNMdUpEUktTK01hUzBIUHErTUNnYnJhTkhTem9WT0VEaDRmQUY1YjFDRDNnSStHdWdtME1tQXlFUEZYdmJBQ1laMml2TDQ1QWdrTytWZUdPTmJJU0pJeXU1WWV3WThZMFpDL3B4SlpvK3NvUkxWbGFTVTV4WW1tWXplOFlGektUbytSQ29uQnE0cWJmWktDR1QzL3FQRUQ4QkhXeStpY0ZEdWhiRmpDNjc1OTc5cUIzcEoxbncwS212RUVyYnFmODBnYWJseDZGNjg3SUhzUXdtZ3ZMYWl6ZlBpQ1lkT1NsRVdPck83dU9nL3JKZzBqWFRLQzJQTElrR2dsTzFjUnd3R2J5NVlra2FkUW9HZGJsVzNVNjZLQ2JIWmZpQUxlK2NVa01pRFhPMkEzbk5qdk9mdWc2K0RvSlA5ZTBrWmJxWjBmRFRHbGdVZ2VzcXVOaUxYd0ZHWDBZNjZyY0t5QXZWTjRrUWdNei9PTTljQXE1bEx6eVhuVWtOTnU1QVJ1dU1TK1p0YjRNcnV2WnN1U21VaXJ4VDJ4TGl5cU1IZSsvMXBjTEdFZVdQTlRLUEI0cDVDcXFJTkJFL044SmFGNU1xZVNjcEhYVVdieU5ud0FIaWwvaDQ5NGdIY29ET2YvdXNORkIwNk5TYkdsUVdnSGJoL3A3dW1vZ1Y4eTk1Rncxb1ROUmhrTVl3QWNRT09xUGVzaXFnTFNoVkpZUUFkRHUzREFLeVo5OHJVeUtnUThCM3J6aWlqNUw3dkVMNWtBUkdSc3FMMTV5amZzSE8rYnNqVjljTEZOTHhTTTJJOGt4R0JsVDNMZFFEY3FtbW44WTZYd1YzNXd4Snl2R3FhdE5jdTNxWDF4UWY4eUdJWVlVZmIwTmRmTm9DdjJqaEh4QXBwcFdIUVZ6MXVZSEIwb2xCUmpuTUpOWVh5anRaQmVpNk5HQ3dyM3BvaGRkYUM5OS8rSWtJbGN3ZmNlUEFqQzhBZDVzQjJWOWY3enM2WGRZUEVZSERpM1ZyWGJTSTlLdzc5SitVV0U1ZnRQQzVyeXpXaUlKZXBVSFhmM2Y4S09KS2dvYTVkeFBveEZlQmZGdDdZT0d3NWRhd0tmUG1iT2FHaEV0Z0dnejNkdzFZelVaTXpPNUVTS0FCU3MwaXUxZDFvRllsSlVPdDE1dFZiNTRJQVNDRGNoUUs1bVBxWEJZU0VTVDUrMzJXd1hZY1hhd2RJbWNWSmNMT00rSEY2WGdMdHErdzJoekphVHN1NnVxb1ZkUVFWSDBtd2VodVI5ZTJsdTEwZHJwN2JMd0tTaFpJSUVTVUh5QzlQaGZNbXg4YUZveWdnYk5YVkpCbFRwa2RqQWV6a3ZIZTQrckI3dDdvUmwwUGFrVTI3RjlLUkErOWRDb3NnbldNZ0NFZ1dnTVByMk1IdktmLzA3SnR3RFhadHFIRVYxZGpFTUpnS2FmamlMMUxvU0UrSERyVWtMakZzeGUveThQamwzNnExL2NiQWZ4ZmkvM3BoU2JkRzc5WEtqUWswNWdxVlBEbzJCTlcxdnJvZERnTFNTQ1R4bXgvMkdnMVdKR25TenhSb0dGRlJHKy8yUUlRcUpoaG5GL0t1dmtxRHgvRk9RRTlZekxZWkw4YnpWNzE2dEwxcEtNRDNnSnRnRlJEVVNXd0dXZlFTZ1lpaFc4SzVrSXNwV2tnaGxOWU85d0svd0JsVk1DOUpvSXlTZVoyMVBnREhJYVR3UndzUC90Tkg5NWJZSG8vdTRnNG5lQzN3Qzd5Mklrb21tSm9WNWRsQVBuUGdtRXJMalJYTVg1eHFHRGJESGE3aFp3cWF6bk1YVGhFa0pzZG16WXBHb0xsbW5pbU1ldXVydjBvVnN6SVN0aHBOeDlLOHo1U1JjaDhOMEFTQTNBQk1sc3NONjZSQndTakU5dmo0MkwyZkx1aHFIMFlTdVpaTU9KQ3pmVDJHNGxQTG9Ba3lVQmY0eU9wRlMvTDNIVnVnMHhvUmNSTWNaOWh1eEdBMW15d2xGNVpuWktWQURCOVhMNXhaS0RXNEYyQytzYkdsdU9pYXVyd1BGM2JjUXVIVHgwNTl1czRscjQxM2gxVlE5bXljcldCQjNQcnQ4MVdSa1FLR3p3akpUOVBPWDZwNURqdG5SOVJqa2RsaWJueWdxZnl1cWZtQlZqOWtocitkcG51cTluTVdQWlRBa0hEeDgxT1ZNK2MrbDVBWXc0cFlkTmlzbU1GVmlzZmoveC94cU9jUFJkU3Zhd0FBQUFCSlJVNUVya0pnZ2c9PSJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTEyLTI3IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjE2Nzc3MjE2LCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IklELU9uZSBLZXkgKFVTQiBDKSIsImNlcnRpZmljYXRlTnVtYmVyIjoiVTJGMTAwMDIwMjQxMjI3MDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMTItMjciLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MTY3NzcyMTZ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDYtMjYifSx7ImFhZ3VpZCI6IjllYjg1YmI2LTk2MjUtNGE3Mi04MTVkLTA0ODc4MzBjY2FiMiIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiOWViODViYjYtOTYyNS00YTcyLTgxNWQtMDQ4NzgzMGNjYWIyIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkVuc3VyaXR5IEFVVEggQmlvUHJvIERlc2t0b3AifSwiZGVzY3JpcHRpb24iOiJFbnN1cml0eSBBVVRIIEJpb1BybyBEZXNrdG9wIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIxMjIsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfaW50ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MTAsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIiwiYmFEZXNjIjp7InNlbGZBdHRlc3RlZEZSUiI6MC4wLCJzZWxmQXR0ZXN0ZWRGQVIiOjAuMCwiaUFQQVJUaHJlc2hvbGQiOjAuMCwibWF4VGVtcGxhdGVzIjowLCJtYXhSZXRyaWVzIjo1LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRENUQ0NBZkdnQXdJQkFnSUpBTEtLajBzS1RYRGxNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1DRXhIekFkQmdOVkJBTU1Ga1Z1YzNWeWFYUjVJRlJvYVc1RElGSnZiM1FnUTBFd0lCY05NVGd3TnpJek1UTXpOekl4V2hnUE1qQTJPREEzTVRBeE16TTNNakZhTUNFeEh6QWRCZ05WQkFNTUZrVnVjM1Z5YVhSNUlGUm9hVzVESUZKdmIzUWdRMEV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRREVpWmg0dEljQVVQZlVrQ21YYk53V0RJRnZXeHhHUGhKcS8vRnMzdVBCQTRKUVVYaUFIV1VvZjBtTnhmVTM5eWZLMzkvMnlYZ09KNVFvWkd6cFFFR1N3NVNub3kwKzYxb2VJKzBJWGtBYU12ZlZ2dG1Ob08yT0pPNStBRHRsRHU2cmdKdVY2SXBMTFI1U0tYT1Uxek9QSFlyQVBzWXh2M1VMZzI2VzYzek1UcXBDTkNnNHB6d1pSeVhqY0xyVWVDekY0WGNmK3AvRzQyWmRHekJlWmM0eit5Y2NPTXhCeDR3c0djUGcxSEZ5elhsM0ptdHlnN3pVREVxYmplSDhOc3k5K2tUMzFtVlhvY2lnQjNoRzd3Y3RpSW42QTVsUEdNUEpvSTg0UlpkckIzZXM5UWxIWldTbnZkSkdlYUxuTzVYcTRtSWh1ZmJZNHMxVXEvcHZHc0FQQWdNQkFBR2pRakJBTUIwR0ExVWREZ1FXQkJTT0VuK1ZGaEkvWkdVVFNVZWhFeU9seHhGeEx6QVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUFNQXNHQTFVZER3UUVBd0lCQmpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQXJhRG84dW1yZWpYTllRNkJSQm40WHNEZWhEbGlqM0xBTk03Sjd0aW1hTk1mb3hhZHd5UzFudkE4ZTdjTzdPQXczaWVsWWpPNm9pU3B6VXN1NmVIMmxvWjBMSzBma29pYVpabkhLYi80Nm82bzk5NDdpOHR1QU95b1ZyR1B3OWMyOVZvSVFrRTNRai8wUEpabVUwWXViaWxSVU54NmxkSzI1YTBvL3E4bGs3QkwzMk5qV2RUektESlBnZEttcndsMW0zSzJlR212MlpJZ0FQNHBXVW1nMERGNFhTL0phbmtGaWJSWmhzNktnMFYwMkU5UGNiR3lYSW8raHhVOVFzampnSVB0RmlGOCtWdlFiUFRWZU0xWmMwQ3hQbTFYeDIya2kzSWVQcGFEaWd6UzBLZnhrNVJuRnRxWS9aT3lWdGFtL29BUDl0cS9NVGpFUXUxZmxycHBSUT09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUtnQUFBQ29DQVlBQUFCMFM2VzBBQUFBQ1hCSVdYTUFBQTdFQUFBT3hBR1ZLdzRiQUFBRTltbFVXSFJZVFV3NlkyOXRMbUZrYjJKbExuaHRjQUFBQUFBQVBEOTRjR0ZqYTJWMElHSmxaMmx1UFNMdnU3OGlJR2xrUFNKWE5VMHdUWEJEWldocFNIcHlaVk42VGxSamVtdGpPV1FpUHo0Z1BIZzZlRzF3YldWMFlTQjRiV3h1Y3pwNFBTSmhaRzlpWlRwdWN6cHRaWFJoTHlJZ2VEcDRiWEIwYXowaVFXUnZZbVVnV0UxUUlFTnZjbVVnT1M0eExXTXdNRElnTnprdVlUWmhOak01TmpoaExDQXlNREkwTHpBekx6QTJMVEV4T2pVeU9qQTFJQ0FnSUNBZ0lDQWlQaUE4Y21SbU9sSkVSaUI0Yld4dWN6cHlaR1k5SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpFNU9Ua3ZNREl2TWpJdGNtUm1MWE41Ym5SaGVDMXVjeU1pUGlBOGNtUm1Pa1JsYzJOeWFYQjBhVzl1SUhKa1pqcGhZbTkxZEQwaUlpQjRiV3h1Y3pwNGJYQTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzhpSUhodGJHNXpPbVJqUFNKb2RIUndPaTh2Y0hWeWJDNXZjbWN2WkdNdlpXeGxiV1Z1ZEhNdk1TNHhMeUlnZUcxc2JuTTZjR2h2ZEc5emFHOXdQU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNCb2IzUnZjMmh2Y0M4eExqQXZJaUI0Yld4dWN6cDRiWEJOVFQwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOTRZWEF2TVM0d0wyMXRMeUlnZUcxc2JuTTZjM1JGZG5ROUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXpWSGx3WlM5U1pYTnZkWEpqWlVWMlpXNTBJeUlnZUcxd09rTnlaV0YwYjNKVWIyOXNQU0pCWkc5aVpTQlFhRzkwYjNOb2IzQWdNalV1TVRFZ0tFMWhZMmx1ZEc5emFDa2lJSGh0Y0RwRGNtVmhkR1ZFWVhSbFBTSXlNREkwTFRBNExUSXpWREV4T2pBek9qVTJLekExT2pNd0lpQjRiWEE2VFc5a2FXWjVSR0YwWlQwaU1qQXlOQzB3T1Mwd00xUXhNVG96TlRvME1Tc3dOVG96TUNJZ2VHMXdPazFsZEdGa1lYUmhSR0YwWlQwaU1qQXlOQzB3T1Mwd00xUXhNVG96TlRvME1Tc3dOVG96TUNJZ1pHTTZabTl5YldGMFBTSnBiV0ZuWlM5d2JtY2lJSEJvYjNSdmMyaHZjRHBEYjJ4dmNrMXZaR1U5SWpNaUlIaHRjRTFOT2tsdWMzUmhibU5sU1VROUluaHRjQzVwYVdRNlkyWTJZemRpT0RJdFpEUTNNeTAwTWprekxUazJNRE10Wm1VMlpqRTRaRE13TjJWaUlpQjRiWEJOVFRwRWIyTjFiV1Z1ZEVsRVBTSjRiWEF1Wkdsa09tTm1ObU0zWWpneUxXUTBOek10TkRJNU15MDVOakF6TFdabE5tWXhPR1F6TURkbFlpSWdlRzF3VFUwNlQzSnBaMmx1WVd4RWIyTjFiV1Z1ZEVsRVBTSjRiWEF1Wkdsa09tTm1ObU0zWWpneUxXUTBOek10TkRJNU15MDVOakF6TFdabE5tWXhPR1F6TURkbFlpSStJRHg0YlhCTlRUcElhWE4wYjNKNVBpQThjbVJtT2xObGNUNGdQSEprWmpwc2FTQnpkRVYyZERwaFkzUnBiMjQ5SW1OeVpXRjBaV1FpSUhOMFJYWjBPbWx1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2WTJZMll6ZGlPREl0WkRRM015MDBNamt6TFRrMk1ETXRabVUyWmpFNFpETXdOMlZpSWlCemRFVjJkRHAzYUdWdVBTSXlNREkwTFRBNExUSXpWREV4T2pBek9qVTJLekExT2pNd0lpQnpkRVYyZERwemIyWjBkMkZ5WlVGblpXNTBQU0pCWkc5aVpTQlFhRzkwYjNOb2IzQWdNalV1TVRFZ0tFMWhZMmx1ZEc5emFDa2lMejRnUEM5eVpHWTZVMlZ4UGlBOEwzaHRjRTFOT2tocGMzUnZjbmsrSUR3dmNtUm1Pa1JsYzJOeWFYQjBhVzl1UGlBOEwzSmtaanBTUkVZK0lEd3ZlRHA0YlhCdFpYUmhQaUE4UDNod1lXTnJaWFFnWlc1a1BTSnlJajgra2F6N2FRQUFPUFpKUkVGVWVKenR2WG1ZSkVkOUp2eEdSSjUxVjFmZlBUMmpHVWxJUmhJZ1JnZElDSm5MbGpoc0RBK3l6V0lPdytQMWgwR3NiT00xUm9EUFJkNDFHSXlXUS9nQUJFWXlFc0tmOGE1a0l3MGdvV04wTXpwR001Sm1lcVo3K3U2dXUvS0lZLy9Jek9yc211bzV1MGRsbk84ek9WV1ZYWmtWR2ZIR0wzNVhSQkNsRkJJazZGWFFGN29BQ1JJY0NRbEJFL1EwRW9JbTZHa2tCRTNRMDBnSW1xQ25rUkEwUVU4aklXaUNua1pDMEFROWpZU2dDWG9hQ1VFVDlEUVNnaWJvYVNRRVRkRFRTQWlhb0tlUkVEUkJUeU1oYUlLZVJrTFFCRDJOaEtBSmVob0pRUlAwTkJLQ0p1aHBKQVJOME5OSUNKcWdwNUVRTkVGUEl5Rm9ncDVHUXRBRVBZMkVvQWw2R2dsQkUvUTBFb0ltNkdra0JFM1EwMGdJbXFDbmtSQTBRVThqSVdpQ25rWkMwQVE5allTZ0NYb2FDVUVUOURRU2dpYm9hU1FFVGREVFNBaWFvS2VSRURSQlR5TWhhSUtlQnZuUWh6NEVBRkJLUWRkMUxDMHRZY3VXTGRCMUU0TkR3d0NBaGZrNVdKYU9kRHFEMmRrNXVLNFAzL2ZodEpyUWRJYWhrV0VVKzRyZ25vOUt1UUxQOTFFb0Z1QTZIcGFYbG1EYk5xUlVjRjBYQ3dzTEtCWUx5QmVLNkIvb0I2RUVlNS9lalhRNmhjR2hFWEFwY0dEL2ZrZ2h3QVdIVkVDbFhJVnBHbWVmZGRaWnI2dzNtcU82cm8vWnRwVnRObHZNTUhTUnkrYmN4YVVsMTNXZGhxN3JaU1ZsUzlmMWxtV1p2bVdsZkUzVDNPbnBRdzNQODV6QndhR3lsR0xKTkUxdVdiWmNYbDcwbHBjcnpvdGVkR2I5dE5OT2s3VmFGYnQzUHczSGFVRXBnalBPZUJFS2hSd0toVHkyYjkrT3h4Ly9LVzY1NVJhY2UrNDV5T2R6eUdaejJMSmxDMzY0NDBjd2JSTnpNL09ZbXB5RlpsTDA5UlZ4Mm1tbllXQm9BSVA5L2RnME5vNXYzM1FUSnFlbWNONjU1eUpmTEdMejVrMTQ5cG05K1BFOTkyQjgweGp5dVN4U3FUUUdCb2V3Yjk5em1OaS9IMmVjY1FhV2xwWmdtaVpTcVJRbUppYWdsTUpsbDEyR3ViazVQUEhFRXpBTUEvVkdDMzJsZnJ6MHBlZGhabW9haisvYUJTdGxnWUppWUdBQTlVWWRyV1lMVEdPb1ZpcDQvcm5uc0dYcmFkaTZkUnV5NlF5eTJTd1lvN0JUTnNxVktpaWg0TUtIcm11d1RCdWx2ajVrYzFuVXEzWFVHMVVzTDFlUnplWnh6ejAveFBlKzkxMzA5WlZRcTlWUXExWkI2ZnJJUG0xZDdyS09vSVJDS2dVcEpTZ2xBNVRRdDQrTWpyeEgxL1ZYVktzVlVFclJiTFJRclN4RDEzVTA2Z0l6MDRkZ1d6WjBRNFBuT3FDRWdITWZqVVlkVXM1REtRVk4wOEFZeGVMaUhDaGxpbExpQXhCQ0NKOHh1Sk9UQjZwemN6TVZJV1REOXozUDk3MFdJY3lkbXBwYW5wdWJtVFVNdlQ0MU9kbWFtWm54UE05dHpzN09MTlhydGJwbEw3ZGMxMnUwV2s2ejBGZWNKSVM0MGRab2hCQXd5cUJyR2d6ZGdHVlpvSlFpMlR6dDJORVRCRlVBUUFDbWFmQWRoK202L2phaWErODFEZU1YQ2FXTVVnSXBGSVNTVUVwQzB6Um9XbEIweGlnTVF3L3VveFFvSlFodkI4WW9HQXQ2TWlFRVNpa0lJZUg3bkFnaERDRUVBTmhLS1N3dUxnNzR2ZzlDS0F6REFHTU1qRkUwR2xVd3hxRHBCRk9ISnBEUDUvR3k4OCtGcnV0SXAxSXdUUnY1UWdhdmVlMWxPSFJvZW5lOTBmeFRRdWp6QktCU3FxYlBlY1Z4dldxajFYU3F0YnJEdVpDYXByV2xZVDZYaDJWWmtGS0JzWURJcG1rZ2xVcEIxNFBuMGpRTmhCQVFRa0FwYlQ5TDlQNW5HUzhZUVFPcHhrQlp1d2l2V2x5WWY1ZmplZTh3VGJNdjVCbVVVdkI5RVRUUWNmNUcxSkJTS25oZUM1N25RZE1ZVW1rYldUTURROWRobWpaU0tSdTJiY08wVEZpV2pYUTZEY3V5b0RFR1RXY0JRU2dCRktBVWd2djVIanpYaGV0NWFMV2FtSm84aU4yNzk1emRhSGovYU5zYUZKR28xNnQ0K3VrbkZkbE42NFNnU1FsdGVaNWYxM1ZXZmZiWnZXWDl3SVM3NTVuZFRyMWFiZGlXMFdnMUc3TmxnbktyMWVLZXo1MUt1VndqUUxQWmJNNHBwU29BaEZMS1YwcTVoSkFxSVlSVFNrT2kwb0RrbENLZFNzRXdEVWdwZzk1UEVIeW5vd2IvSThqeFUwdFFBa2dwSVdVZ0JXdlYrdW0rNE84elRQUGRTbUc4VnF0QzAxaFEyYkhhT3hFcG9WU2c4eXFsWUpvbVJrZEhjUGJaWjJQTGFWc2dwUS9oYzJpTUFZUkFDQUhCT1lRRVBNOUZxOW5FOGxJTnJ1dWkxV3loMFdqQ2NUeTRyb09XNjhGeFBQaStIMXduT0lRSU9wQnQyekFNQTRBQUFhQ2toTTk5b3FUTUtxV3lRa3FZcGdIUDlWR3JWU0dGZ09mN01FMFQ2WFFLNWZJU2xwWVcyM1hFR0lOaEdOaS9mejhvcFpJUTRoTkNPT2ZjSllUVTdydnZ2a1VwWlkwUTR2bWN0M1JkYjdVY3AvSDA3dDJMOVdxdGFsbFdrMUk2RDBYS3Z1ODNwWkoxZ0N4QllVbEsyZko5enhYaE1FSW9oYTVySUNkWTN4dUZVMHBRS1NWMHd6akxNTXhmODMzK3BtcGw3a0lwSlN6TGdKUzhQYVNkQ0NKcDZmdUJBYWZyT29hSGh6RXlNb0owT2cwQUVFTGk2YWQybzFJcG85R293M1BkdGhSMFhRL2NsMUJTZ2dzT3BSQ3FDd3FVTWxDcWdZQ0NhZ1NVRWVpNkJzUFFqOWlZaEJBd3hnREdBQUR0cHlPQVpWa2doQ0FWNnFOU1JyK3oraDVLcWVpNUtBQVRnTWtZUzBzcCs1YVdsclpFdjBGQW9Xa2FuR1lUdTUvYURVM1RZS2RzU0tFQW9yQzB0QmlvUFlIK1hTMFdpczJYbi85eXg3S3NCY0g1dE5OcXpsY0llZEsyekR0TTIzcUtNUVpJOVlKTDJRMGlxQUloRkpTMERZSVJJY1E3TkUzLzFjR0Iva3NZby9EY0pqU05BR0NRVWdESFBZQUhJS0VFZEYwWGhCRGs4M2tNRGc1aWVIZ1lobUdnVXFsZzM3N25zYkN3aUdxMUNpNDRETTBFWmJTdDAxRkt3WmdPazVIMlBZTTN3WCtCa0NFZ1JBTWhFb1NzVDdNZHE3SFVKbnJIdVVCYXgrNG5PU2dGMG1rTEFDQ0ZENlZVcUI2cFFKZG1oRENONVEzRHlGdFdDVUtJclZJSytMNkxjdGxGMDlCUnJWZWZOOHpVMXcxZC94cWw5TUFMS1ZIWGxhRHhCaGVTMjU3dnZZMVM3ZDJjcTljVHdxak9DSUJnV0R6Wmg0NmtwUkFDdXE1amRIUVVtelp0UWpxZGh1LzdtSitmeDlUVUZHcTFHcFFTTUUwTCtYd2VTa1VOelhHNEZyWlNKcDl6ZUs0RDB6UmdwMUtBSWhCQ2dYTUY3dnVRU29aRHNVTFFJUWtDRXFOdDBCQ3lZcUFGcXN1cGJHZ0ZLUUZLQS8xVDA3VDJDTVVZQTZVVW5IdGdUQU5qK2lxRFMzS3h6WkhPbjNEZi94T21zVnNacFo5Z2pEMGRkWkpUS1ZWUG1xQkJEdzMwRis3NXpQZjkxd2d1ZjJOcFllbHRTcW1NcmpNb0ZVaWdxREZQUkZvU1FpQ2xCT2NjbkFjRUx4YUxHQndjeE9EZ0lFelRSTGxjeHNURUJPYm41MUdyMWNBWWcyVlpzYklDZ0F6TG9HTDNEdjRtaElEbmVhQ1VZdE9tVFRqNzdMTmdtZ3dBZ1pBQ25IdWdoRUdCZ05LQWpBQUI5ems4MzRYdmMzRHVnM01PM3hmd1hBL2xTaG10Vmd1Y1MwZ0JiSFR6UmxLWkVBSmRaK0hvd0VJM0cydEw0MGlZUk8vakhvTEk2QUlBSmZqYjNaWjh1NUx5bjdLWnpEWEZ2dUtoQm0yZU1sZlpjUk0wb3BaU0NrSkthSVJCS1huUjNOekNWYzFhL1RlRUVJT1J0VWdwZ1ZJeXZFTGlSSWR4SVFRQ0Z4QkJKcE5CcVZUQzRPQmdHQUNRcUZRcW1KcWF3dkp5NEJzMWpNQk5jM2dseG9tNVVoYkg4Y0M1ajF3dWgzUE9PUWNEQXdPWW5KekVMYmZjaWdjZjJvbG1zd25MTW1BYVp0dkN0KzNBOGpkTW8yMGNHWVlKMDlCQkdVV3oxWVJsbW5qcFMxK0NURGFObi83MFNTek9WMkhvK29sV3d4RVJQV3MwZ2tXdXVPaHp0eU5PeXM3M2tiQm5vWmZGODl5cjlrOGN2RW9xZFkxdFdwOEwzSHdiVDlMaklPaEt6NU1Lb0pTK1BKUEp2czh3dEhjMGF2VWgzL2Voc2FDWGR1OWR4OTRxY1ducCt6NHN5OExZMkJoR1IwZVJ5K1hnK3o1bVoyZnh6RFBQdEMxbzMvZGhHSUZyeFhYZG8wWXlvdThCd1BEd01NNCsrMnhrczFrODhjUVQrT1kzdjRtNzdyb0xudWNkZS9WMFlIQmdBSmYvL09Xd3JUUjBYVWV0Mm9TbXNRMGpaNkJHYUtIL2R1V0lDQmVYb05GUUhpZHJoT2g5L0R3aEJDYlR3SVhDd1FNVGY1MUtwZC9aMTVmL1pVTG85RVpUOUlnRUpTQWdOSEIyRTBMZ09LMXRQdmZmU1lsOHAyNmFQeGRJU0FFbEpYUmRBMEJPV3ZSSFpPT2NJNS9QWTNoNHVHM3dMQzB0NGFtbm5zTEN3Z0pjMTRWaEdLc3FPNUlDUjBORTZ0SFJVV3pkdWhXVVV0eHp6ejI0N2JiYnNHZlBubFZsaWZTdTZIZmllaVNsdEMzZGdjQ2gvdktYYjhlclhuVXB6ampqREVncE1UczdpM0s1RHRNMHdOajZSWkdrbEt0MC9wWGd3dXJodTFOYXh1c24rbTcwWEoya2pQK05FTURRS1pSbXdQT2NDOHRsOVJ6bi9BMVErTW02UE5BYTZFclFRTkVQSHREei9RSVg0dGVhNWZvSHBKVGJBVURUS0pRU2tOSG9UUTRmTms4VW51ZWhXQ3ppOU5OUFJ6YWJoZS83bUptWndlVGtKQnFOQmdEQU1BeWswK2tUYW13aEJHemJ4bGxubllWaXNZaTllL2ZpcHB0dXhnTVAzQS9QODVESnBFRUloZS83OER3UG5QT2ozck5VS3VHVnIzd2x0bS9manZIeGNiUmFEbVptWnVGNVBqU053VFF0QUdwZDliYUlmTkZRSGlkalJNaTR4SXdUTUU3QzZEVitYWVRWQkYxUjJ4aGpVRkxadXE3ZFk1ckd6M1BPZjZTVTJwRFJvVTNRS0hUR09ZZm4rVVRUekRkUFRVMytwcy85TjNNdU5CcVNOakFvT2cyZDlVdUtpcEpXaEJCNCt1bW5NVGMzRjBhQXRBNkQ1OFFhbTFJS0tTVW1KdlpoejU3ZGFEVHFlTldyWG9rM3Zla0tTQ1hhYW9YZzBYc08xM1hiL3RYQVllL0NjUnpVYWpVTURBemdvb3N1d3NEQUFKYVhsL0g4ODgrM0F4RzZyb1hsUERsaXhwODFidlFjU2Nmc1JzeE93blhxbmhFNjM2OTFuYUZScEZMV3YwcXBMbXcwbWsrWFN1dnY1TmR5dVZ3d3JISWZqWG9UcG1GY3FXdjBhNjFtYmRCeEhUQktRSWdPTjdSQUNSZ1VGQ2lWUVFpTmRDcmJRT0J1SVVEd0w3VGJvM2Zkc1BKUWhtbGhmbUVSMHpNeklBVFFOUjIyYmEvYkExTWFTTWZGeFhxNzNKcW1vZGxzaHFReVlPaFdJQ2tvQTlOWVd6b0Z6eFpZdUpFRDNmTTgxR28xUFBmY2M0Y05rNUgzNGtRUjZaWng0a1hEZUJTZlB4STVPNG5hU2NhNFNoUW5ZdlM1czk0NnJ3V0FTbVVwZmZubGwvK0w2enJiZCs3Y1dRa0RVK3NHY3VtbGwwSXBCY3V5a2N0bHJuakxXNjc0djZlZHRnV2U2OFB6WEhEQndYMGZydXVEK3h3K2wvQjlDYzkzQTVlS3p4RTRlamw4enFHa2hKUUNRZ1IrUWhLeHRQMmdERUVqQTVRUUVFcEFDQXVJSHNXN0Vma1dRM0tIdkZaQkhBNEl5WEd5dlRXNFhvWHVwOENQR2J3UDdxM0M1SlJ1MGpyZTZCdUp1SXNvN2haYTZUU3JKV1EzVXE1RjJPZzUyczc4RHYyNjh6bTdQYk5TRW9PRFE2aFVhai80OUtmL3h4c09ISmdBVzZkVU93QWd1cTdEOTMxczI3cnQ3QTkrOERjZnV1RENsNmROMDRhbU1VVHRFdWlrQVZta0ZDQUtrSkpBU0JuR3NBVzRMOEREWVpIN1Buek80ZnRlNkJ2azhMd3dmczBsZkYrMC9ZV2NjMGlwd3JpMmJCTlVTYlREalpUUVFJdWdwSjA2cDJuYXV1cDA0Wk4yT1hmcTNOSnhIMmFuTlI0M2ZycEp6TGd4MTgxU2o4NUZxbHo4dTNGMDZxZlI5WEUzMXNvMW9SQlJCRU5EdzdqMzNudi81bi84eFo5L1JOZDFXSmExTHUyanZmakZMMGExV2t1OS9lMi9kT3RMWG5KT1dra0p6a1dIaTRXR29reUd3MXhVa1FEVEtCZ1lMRXNIcFJwb3lPYmc0U21VRENSVUpCVzVMeUNsREFrcDRQbGVRRnJPNFhzK0JPZGhGQ2V3anJrUTRMNkhWc3NCWVF6RnZqNHN6QytnV3EyR2taRk9BMDExdkhhZTcvejh3dU5JeE95MHhvODBqSGU2aStKL2krNGZKMTZFYmpwbXQrOTNONkFDNmJ1d01JL1h2dlkxVnovOTlGT1AzWHpUemYrd2FkT21JSnZxSktGbHN6bTg1cldYM0hUcHF5NTZzVkNBcVdreDUzb0VpWkNaVU1FNEMwQ0dxV2R4UjN3M2kzY2xyazFBUUVCQkVPUlg2b2FHVk1vRW9SU1VyZzRGUmtPdERGVUdwU2lhVFk1eXVZekZ4WGs0VGhPZUYrWkdSaDBHQUJBbWRsQVNxQkR4ZzRiaHlPQVhPc3A1NmdrYmwwcmRkTXUxaHZOTzR3ZFlleWp1UnJvSW5lZTZxUVR4N3g1KzdjcG5LU1VXRnhmeGdRLzgxdC9Qek13K2VjOVA3dDQ1T2pKNjBpUWxWLyszMzdsNis4dlAvbnhmY1JDR2FRZitUTlc5OEIyWHJuSExvMGdxRlJIMmFJU0lwQW9OVlF3R0tRa3ExUXA4endzTUZOZUZINm9KZ1Z2SUJlY0E5d0hPZmZpK0Y2Z2hRb0g3SEVMdzBMZ0pPdHFLN2tWQnFBSWdBcFVpRFBXdEdIcXgxNjVFUGo3Vm9OUDRpVHZSTzQyZnVLK3lVK2VNNjQ1eHNuWkxMRm1MbUozdDIwM3Fybld2enI5SktURTRPSWpGeGFWbmYvZDNmL2RseTh0TGpiNit2cE1pcWJaNXkvaDU2WFFLbVhRYTJWd2ZoQlNRSWpKeVJOdFFFRUxFWXVsQWxCZ1J2YWVSZElxSi9xNE5kOHlaUUpIRWpnamxnMUtLL2xKaFJSK0w0c1dCNGhvbUo2L2thSExPUXhWQkJrYWM3NFdHSGc4TlBhK3RNM3VldjZKRGg0U1hRZ1RUVDhTS3NhUVVDVDBYYUpPWVVJckEwQXZWR3dDRUhmNUVjV0t1Tm41WXUyTjBFck5Ub25XendpTXBHK21ZblVaUE4wTEdQOGZ2RS85Yi9QV3cxdWx5bmpHR3VibDViTm8wZHNidi8vN3YvZjNuUC8vNVg3VnQrNlRTS0RYSGFlMTFmUStFS1BUM0YyTU5Fanlva2pLV3VTUGJRNjZVS2p5aXp4R0pnOGFVUWtLcXd4OWkxWkNqd3FTRXRtNjdOZ2doVUJMd1hCK0FINTVWSWVIamxha0N2WWdSbUpvT2k1Z0FJV0J0cVFoRUZqc1E1R0hLc054Q0tnak93ZjFRTnhZaTFNZmRObWtqc2tmbmdrT0dmdExBaXlHa2hPOEZIWXVRbGFIY01JTHBITHB1aENTTTlNdEFpcStsWTNaejczUU8rZkY2T3F5ZU8rbysvcmxUVFloN1I0NGtSUUVjMWhFQWdER0M2ZWxwbkwvOTVWZTk0NnBmdmVldU8rLzhRbitwQkthdEZRSS9NalRQNFhQYzUyZzA2MmcwNm1BYURjTm9OQXgxRWpCQ29ZV3VJRVR0QzlyV0V5TzNqd29udXlrbElaV0Nra0hLVjBUZ1NMcEZhV3JSc1hKZGNMOUlhblpXQ2dIckdIWURyVGFvcUpVQWdsSVVrQXFCUnk0YVhsYjc1NVFLOGpxRERoTHF4eVRRaXczVFFKYWwyM3BXdkxHRDhnWWRVRWdCd1lQTzZvZGVDY0hGaXBFWEV0aDFIYmlPQTgvbjhQeklOVWVoRklPbTZXQ2FEdG9tR3pxSUdSSHJjRjJ6MCtLTy96MSt2cE5FM2R4TjNhN3ZkdTg0MWdvcks2V3d0TGlFU3krOTVQT1pUT2FlaGZtRlJ3VVhhMzcvU05Bb1lUT1NoeEpQQWhwaGFKTUVLbXpYV0diMUt1S0VMdmpRUDBrUVZpeGgwQ2tOODMxWEQvM1JQSmxJR2lzbEE1ZFNlRHVsQWdrRWtCaXhaZXk5T3V4ek1QeTJxM0ZGU29iRUMzSUdnbE8wM2REQmQ1UlNNZDlyMUFBQ2ZpU2t1eUJTWHdnQktLTmdHb1ZwNlRIaWtEQXRML2dlcFJSU0JkNFJ4L0hRYURUUWFubW9WbXBZTGkvQmRUbHNLeFhxbnpLc3F5aTdma1V0NkpTZXdHb1B3SkdrWlhUZGtReWZJNTA3MHVlTzJnRWhnT3M0TUEyRFhIelJoVi9kdGV1cEN4WVhGMkdhNWhHdTZ3NHRsYlltaEpEZ3ZnY2hmQkRTVFY4ZzdhWmJyVmJHUG9TTnZCSkpDSHlacTJ5bDBNWWdVYzlIMkF0WjJKdUJnT2h4S1lBVjhrWk9kU2xscUhxb1VFK09kRThCcFVoSVloR3FIQ0tjelJrTjR6eHdmWFdFWnpzbFN2QktRUlJaL2N3RWJTOUg0TkZRQ0tSMDl3aEtRSzVnaHFpbU0rVHpXWlJLZldCVWd4QVM1Zkl5Wm1kbnNiUzRCTWVwd2JCTTZNeENrTDJQa0xBcitaa3JVU3JWMWowN24yR2wvR2hmczlhUTMrMjE4MzNuL2FQUmNxM3ZSYi9wYzQ1NnZiNTlhSGo0ODBPalF4ODVZakJ4RFdpbXJpMUtJYXRjOEJ6bkhvRDFDaXNTRUxycVkreFZoUTBOQ0NrUUwvVUtHVmVkYVV2b2VFVUhrOTVZVzdja0lGQWc3VXRVS0pIYituU29TNHUyamgxSXRSVnBIcWdqUW9wMlJFeXFGVFZrZFpKekp4bTZTYkRWK3BvVUFyNTA0WHQrbTF5bFVoOEdCd2ZRYkRReE56dUxnMU9UY053bWJDc0xRclJRUDEzUm1UdC9lK1gzdSt1ZjNUdGU5K3U2dGlKWm5hRjJOR0oyZ25NT3c5Q3U3aXNWYjg3bmN2Y2VyeDZxVWNJV1RkdGFKQnJOY1NrUTFtcWdWNktySGI0K1dGWE9GZmEyYlpndWljVUFWdlZlRVVwSG9GM2tRTEpFSjdEaUN3VUF5b0xZdWtsVzlOZm90K0t1MzRESW9Tb1I2cHZCT1FFaDFJcmFJUVJFS00xRnBIdkxGV3MvR3Q2WnhrQ0pEaWh0VlVkVFVIQmNCNVJRV0phRk04NDhDd1BESXpodzRBQm1aeFpCR1dCYkJxS0lUZHdZUEpMZXVWYktYRGR5SFUxcUh1bDh0KzkwRXBBUUFpNDlWS3JsLzVYTlpDN1ZkZjI0M0U3YTRuSkYySXBNWk0zTTFudzIweHdaSExTa0VDQ0VLaEJRVHdqaSsxN2d1cEV5ek5VVVFZT0dWdjRLaytrcU9pa29ySXlRS3ZRd2hWSXVlb0R3YjRkSGdEcTZCMEg3dW5nVnJLN2crR2UxVW9aUStrbGZISEdFSVVDWUcwQUJFc3plWkVRRE1lS2VoNmdjSzdxcmlobDZLeDRQUU1rVlNhMmtndWNGMFRLTjZkQ3BBUXJTbHY2ZUg0U0NNK2tVemp2M1hJd01MV0wveEFGVXF6V1lwb1Z1R2V4SE1uNjZvZE5JT1pJRVhlc2VVYWpaTkUwMG04MjJxcEhQNStFNERwck41bUcvb3pFR29zZ2wrL2ROZlB6eHh4Ly9pM2duT2hySStLWnhNSUViQjR1RmQ1MTI5dW5selp1M1pBcjVYSzNVVitTV2JlV3o2WXpvS3hVYVZ0cE9HNmFwNTdPNVppYWRZbFJudG1ab1V0YzBSUWpWaEJTRUM5NjJidDNRV29WVW9jdUpReWtCQmJZeURLOElzTU4wMVZYMFZJZzVobFkzVXhkUDFqcWkwNXV3cW11MGpiQVZJeVptZFlPdVNFc0UwbHZUQXIyejJXcWlXcTFBU1FYVHRNTEdpanBCa0VSajJ4bHdMakF4TVlHSkF3ZWhhUVpNMDF5VnpMTFdrQjZkNjN5Tmt5NGVrMjgvMFJFa1pmVDlZckdJdWJrNUxDNHU0dlRUVHcrbU45czJicnZ0TmhTTFJXemZ2aDMxZXYyd2VtUk1BNldhdk8yMjc1NDlOVFcxdDFUcVB5WkpTa3I5L1dnMEduL210RnJYNm9hSndjRkJNTVpDU2EySVpSaGVKcDMyRGRNMExjTlF4VUsrbHMzbWROTXk3R0t4VUMwVkNzSzI3WHdtay9hTEE4VjZOcHZKbXBhcDUzTDVXamFkMW5WTlM1dVc2WnUycVNpamhsS0tTaW1oQVBBb0Z1OExLQ0hBaFlBdkJaUU1aWlFLL21zVE0zeERWSkE3SXJIUkJEMUd0QjJlcS93ZHE4aEVDWVZobUxDc0ZFd3ptQlBmYURTd3VEZ1B6amxNTXhXU1hMV0pieGdtVE5QQzlNdzA5dXpaQStFcldIWVdBWm1EeGowV1lzWmZJeHlQMUFRQ0o3empPSmlZbUVDaFVNQ05OOTZJZDcvNzNWaGFXc0x1M2J0eC8vMzM0eVV2ZVFrKy9PRVBZMjV1cmtzVktlVHpCUnc0TVBtTm0yLyt4L2RFczNHUEJ1MFQxMTZMNzMvLyt4TS8rTUVQTURRNGdKR1JZZWk2VGdLTFdFRklhVWdoakpicm9ORnE0TkRjWEovbiswQXdwUFZKRWN5UzFIV0QySmFWMDNYTk1IUmRGbk1GbXM2a3FHRWFzbGdvT01WaVVkcTJwV1V6NldhcFZHeG1NcG1zYmRtc3IxQ29wdksyeVhTV1NxVlNUamFUVnBxbTJaUXlTaWtWaENqcVMwNDkzNFBrQ05VTURsOXdRRW9RcVNCakJnekJDOERZcUdISjZ0K1A5TWFvNFIyM2hXYXpEa0lvTXBrc3Nwazg4cmt6VUtsV3NMQXdEMHBwT0kwbDFOMDRoMUl0YkJyYmhGUTZoU2QyUFFYWGJTR1ZTa09wdUkvMHlEcmxXbi92NW1oZit4RUpjcmtjdnZlOTcrSFZyMzQxTHJqZ0FuejBveC9GeFJkZkRFM1RNRE16ZzgyYk42UFJhSUF4aHM2OFVFSUlhclVxempycnpIZjM5dy84N1E5L3VPUHVMVnUySEZXS2FnODg4QUFxbGNvKzB6VGI0Y0ZvWWE3SVVsYVV0bGZGU0tkSTlIUXJEUk04ckM2RTBKVlM4S1ZnVS9NekJUNGRPT1Y5bitjNTUxQUFHS0dXcGpHRE1hWWJ1dUhuTWxuZFRsbWFZUnFxV01oN2ZZV2lzbXpUeW1hejlZRlNxV1duN1p4dDI2UlVLdFJ6bWJScG1LYWR6bWFhNlV4YTZZYWVacFFxd3pBRXBWU1RVaklldXBHRWxQQjhINTd2aFFHRE1OSVZqZGt4ZDBGRXFzZ0wwazJWV0E5UUNqQ3FBWVNpM3FpaFdpMGprODJqMURlSWZMNkkrZms1MUdwVldLWUZRbG5iOEtzMzZpZ1YrM0hSaFJmaHNjY2VRNk5SUnlxVkRkc0k3YmFLdjY1MUxvNWpJV2MwdEZOS2tjMW1jYzAxMStDQkJ4NkFaVm5vNys5SHBWTEJsNzcwSlh6clc5L0M3YmZmanZuNWVaUktKYlJhcmNQdUphVkV0VnJHci96S1cvOGlsOHUrK3VEQmc2dG1TWFF0NHdVWFhBRGY5MGYzNzkvL3JLN3I5c2pJQ0xMWjdHRTk0SGl3bGtVWG5ndzhoNkhiaFllZElpUnlFSTBSSXRUZkFyTG91c0V6cVpSbm1JWm1HQWJONTdMMVlpRVB3elF5dVZ5dU9WQXF0U3pieXFmc2xPb3ZGYXZaVENwbFdLYWR5K2ZxdVZ5V0dMcWVNUTFEMnVtVXp6VE5VRkFhRUpwbVVzRDFncnpWd0NvWDhFUHJuSVNDT1RLM2lBSmtxRFFIWlZNZ0lKQ2c2TkNNUVVLcVN3TFEwT2Nxb1lLSWtRcitDZ0p3MzRHVUJQMzl3OGpsQ21qVVcxaVlud2RoQ0NjaUJxUW1sQ0dWU3NIelBEejZ5TU9vMWhwSXAzTmhEUVdqV0R2QnBVdGJSTytQSjlGN1JiY09pSHp6elRlalhxOWpZR0FBUC8zcFQvSCs5NzhmMy96bU4zSEZGVmZnclc5OUs5Ny8vdmZqRmE5NEJkNzYxcmRpY1hHeDZ6MlZVdWp2Nzhjamp6enlrUWNmZlBCdlJrWkdqaWhGdFhLNURLWFVJY2JZODBLSWM2SkZFZUkzUE5ZSGlsOXpoS2NHQWNCSUVCOC9taDRTdXBVMElZVG1jUjh0MThIODRrTEI5L3hBR2lxVmsxTG1wRkpnakFuTE5QTzZwdW02cmlPZnk5SmNKa3MwUTBjK20zVktmVVhQdGkwdGswcTNCZ2I2cTVsc09tMllwcGt2Rm12NWZKYWFCc3RhdHUzbE0xbk9ETjBPY2phb0lJUlNvUVQxZkIrU1MwQW9lQ0tNdllkK1ZpbFVMTzB2MUVjSmFYc3VFTDJvZU4xS2FKb0JFSWJGeFRsVXlzc1lHZG1NTFZ0UHcvVDBGRGozWTlLVXdIRmF5R1F5dU9EQ0MvREFnenZoTkJ0SXAzTHRVZUZrOWN5b3ZpTlZnM09PVXFtRSsrKy9IM2ZmZlRjSUlmamhEMytJTDMzcFMzQmRGLy84ei8rTWQ3M3JYYmp1dXV2dzZLT1Bnbk9PcGFXbE5xSFhtb213dkx5TU04NDQ0MU5LcWUvTXo4OVA1L1A1TlVsS05tM2FCRW9wYXJYYXJWTEt0dzBORFdGZ1lBQ1JEcm9lVXlzMkVuSGYza3BNUDlCTDJ3a2NvVVBlQ3pPVUtLVlMxM1ZCQUtZeFRXWXptVllxWlRQRDBNMThMbGN2Rll1K1pWbTVUTm9XcGY2K1dpNmJTOXNwMitnckZHdlpYSWJwbHBIT1pESnVycERqdXE2bk5FYXBZUmljQmRhbHhnV0g2emhvdVU3d20wcGl4WjVmN1lnRFNEalZKVmdEeXVjZUJnZUdVU29OWVhaMkJxMldBOU0wUVdtMG1CbVF5ZVpRcnpkdzMvMzNRZmlBWmFYUXpRWFY3ZjNSUUFocHIwMzY4TU1QWThlT0hmanQzLzV0ZlBHTFg4VHc4REFxbFFvdXZ2aGl2T1V0YjhGVlYxMkZ5eTY3RFAzOS9manFWNytLdDczdGJYajk2MThQWGRlUE9oczJsOHRoMTY1ZDMvejYxNy8rRzFMS05jT2dKSmZMUmU5L2t4RHlkNlZTQ2FPam95Q0V0T2RleDRtNkVwVTVQTHF3MFZqcmR6b2I0R2pSam5qNXBWS3hxU2RScHBLM3FrY0h1cmdtMHJidEdvYk9kRjNYc3Rsc28xakljOHV5c3FtVTdRMlVTclZNSnAzckt4VGwyT2lJN0I4b3N2NytFaTBVQzlUS3BneVArNlJXcWFMcE9NSENGMWpSZVVGV2s5WjFIQlFLSll5TmJzSEN3Z0thclFaTTB3eGNVR0ZrS1pmUFkyNXVBUS9jL3lBbzFXRVkrbUhDNUZpSkdjMmtwZUdJZHVlZGQrTFdXMi9GbFZkZWlkMjdkMk4wZEJUdmU5Lzc4T2xQZnhwbm5ua21kdTdjaVU5ODRoUHdQQTkvOEFkL2dHdXV1UVpubm5rbURNT0E2N3BvTkJwSDlYTXlSbEVzOXVHR0cyNTR5M2UrODUzdkR3ME5kZjBleVdhejdVSUMySlZPcDg5TnA5UHRLYTJkRTdZNjA4RTZJeFZSdzNlK3hpdWo4L09KU09oakpldGExM2JUa3p1TmlzQ09VbTI5bVVzUlJKV2lCV3c5cnowNU1Jb2tHWnJCTGN0RU1WL3dCMHQ5Y25od1NJNXZHaVBudlBoRi9Kenp6dGJITjIyeVBFZzJ1N2dBMy9OWHhkS2owWjhxd0hFZFpETjVqSTF0UWFWU2hldTBBZ3Vma3ZBQUN2aytQTE43THg1LzdLZElaN0tyZUg2ODVJd3kra3VsRWo3d2dRK2dYQzdqbW11dXdlYk5tL0hIZi96SGVQZTczNDFLcFlKZHUzWmhhR2dJOTk5L1B6N3ptYzlnWm1ZR2hCQU1EQXlnMFdpMGhkcXhJSlZPWVdaNjVzbnZmdmU3TDVOUzhzN1YrZ0NBZE13MWZ5a2g1RjVDU0FwWVBhK2wyN1RYK1B1SXpKMVRGanFYVytsRVhGS3RKWmw3V2NXSUVKVXhXbC9mOXp3NHJvZW0wNExudU1vMkxYL3JsczNlSzE5MnZuek41YTlTRjcvNmxSWXN6WnllbllIMGVKRHhGR1V6cXVCK3J0TkVLcFhCbGkwdlFyVmFoZS81MEkxZzBWMUtDRFNOd3JiVGVPakJoL0g4OHdlUnpXWGJxWWRIUXFSbjJyWU5wWUtGZnIvem5lL2c4Y2NmeHp2ZitVNVFTbkhUVFRkQlNvbENvWURMTHJzTVAvclJqekF4TVFIRE1QREpUMzRTKy9mdng3WnQyekE2T29wR285RmVPK3Q0a2NsazhPU1RULzdwM1hmZi9hbHNObnU0SGgwUk5CclNmZDhmQi9DL0thVnZXVXZwWGl2MjJ5bHBPOWNLaXErQ0VaOFVSc2pxckp6NExNTE9pbjBoVkl2MWdCQVMxVm9OeTVVeVVxYmxYSHJCaGM2N2Z2MGRlUDJWcjAwdE93MWpkbjRlVm1UdHQrc1djSjBXY3JrK2pJOXZRNjFXZ3hDUjFBMFVoRlRLaHV2NDJMSGpSL0M1Q0tOTlI2K1hkRHFONWVWbGpJMk40ZENoUTdqNjZxc3hQajZPUnFPQks2KzhFb09EZzNqa2tVZmdPQTU4MzhjYjMvaEczSG5ublJnY0hNUXYvL0l2STUvUFkyRmhvYjJNMEluQ01BeTBXaTExeHgxM25MdG56NTZuQWxVbXBxWjArcUdpTlRjQm5BYmdGd0NjRDJDSUVMSUp3RlpDU0k0UVlod3RwTlp0MmtGMHhFbThsa1R1TmgrOE0vdTdFMjI5c2tNcXY5Q0lsNEZTQ3MvM01UMDdDd2JpdmZXTlZ6WSs4dDgreUVaT0c4dE9UaDRNVm1ZanEvVTMxMm1oVkJyQ3lNaG0xR3JsOEQ3Uk5HTWdreWxnLy83bjhNQURPNUd5MHlDMHkzeVRFSVFFS3dUdTJMRUQzL2pHTjNENjZhZmpReC82RUs2Ly9ucWNmLzc1dU9LS0svQ2U5N3dISC92WXgxQXFsZkNGTDN3QmUvZnV4Vi85MVYvaGdnc3V3TnpjSEJxTnhra1RNMVllcGVzNm1aeWMvTmZwNmVrM1IxSzkvZmRPZ2taK3lEVWFOZzJnQ0NBSFlBZ0JpWWNBYkFVd0RxQ1BFREpBQ09rSGtGdUxvTkhuK0d2OGZhZGEwVTBTZDc3R1NSejMzMFgzN1NaNU95VnkvRy9yaVc2R0phTVVydTloLzhSQmJCdmYzTGp1VHovaHZ1YksxMmFmbnp5Z1M1ZUhNMUFqU0RpT2gwMWoyMUFxbFZDcExJZUx6Z0lJTTdZc080MTc3L3NKSnZidlJ5NVh4RnFQRVMwaDlQR1BmeHpaYkJaRFEwT1ltSmpBNjE3M09uejcyOS9HWnovN1dVeE5UZUc2NjY3RDVaZGZqb01IRCtMQ0N5L0VaWmRkdHBJUXN3N1RpVHZodWk0c3kvb3ZqTEYvak5mVDhhNFAyZ2dQQUhpcTJ4ZVVVbFFwbFFjd0RLQUVJSXVBMUdNQU5nSG9CekJLQ0JrbGhPUUpJWGtBVmpmeXhvZjZJMG5qVHYyNFV5S3ZKWTNqOTFqTEU5RE4yRHRSRXJmMVZDbkJoWURPTkp4MTVobVltWjFMdi9mL3Uxcjd5ei81MVBKVi8rWHR4WDJIRHVqZ0VqUjA5QU1FcG1GZ1p1WWdiTnRFT3AyRjR6aUlobmtoQmFUMGNkNTVMOEhDd2p3Y3B3WFRTa2ZKREt2S0lJU0FZUmc0N2JUVE1EOGY3Q0ZWcTlWd3lTV1hZSGw1R1IvNXlFZHd3dzAzNEExdmVBUFM2VFN1dWVZYVZLdFZMQzh2ZzNOK1F0TTJqb2JJZTdDOHZQeEpBTGN3eHRxTE1oeXZCRjF2cE1OakNNQzI4SFVBd0NDQUVVTElHSUF4UXNnSUFLUFQyRHJTNGdPZDV6b1hQdWltSjNkYlg3UHp1dmo5STBseUpJa01vRjJmOFd6NE9CaGpXRnhlUm5teDdIM3hyLzluOVpldWVsUHh1ZjM3bUFFTk1rcFBwQkxjYzZIcktXemI5bk1Rd2tVOHFLS1VRanFkeDRHRCszSGZmUS9BdHRMaDd4MWVua3dtZzRXRkJWeDk5ZFhvNit2RHRkZGVpM3Z2dlJmajQrUDR3UTkrZ0hQT09RZnZmZTk3TVRzN0N5K2M0cjJSWUl3QlNxbEtwVUs0RVAvVnNxd2IydE9xWDJDQ0hnc1lWcVJ4Q1FHSk55TWc5QUFoWkFCQUhrQ0pFRElNZ01VbGJLY0tjU1RETDY0ZXhCZE5PRmI5T0g1dEhORjBrMDdkT0Y0V3hoam1GeFpBRkJxM2Z1TWYvSzB2UGJOd1lPb2dUR2hCNEpSSWdDZzRMUjhqdytNWUhCeEJ2VjV0TysranJDbmJ6bUhuenZzRHF6NlRnK3F5bUVZMGYvM3h4eC9IalRmZWlOblpXVHo3N0xQNDZFYy9pcmUvL2UyWW5KeEVLcFZxQnowMkNsRjdDQ0hRYXJhZzZ4b1dsNVoyZlBuTFgzNnQ0emlCVyswL0FFR1BGVG9DTlNJdWhiY2hVQ3RHQUF3VFF2cEMvZGhhYS9KWU4xSjNmcStiUkk0VE51NVhqSko3STBkNHRISjA1Qy9zN0NEUFQwemcxZHN2WHY3RzE3OXN6anVWbEZ1ckE0U0ZQbExWbmlhOWRldFpNRTBUclZZekpwa2xiRHVGWnJPRkhYZitHSnhMNkpiV05ldEZLWVdCZ1FGTVRFemdycnZ1UW45L1B5NjU1QktrVXFuMmNwTWI2ZDZMT25TcjFVS3IxWUpTQ29hdWd3dUJIVHQydkt6VmFqMXVtdWJQRkVHUEJUb0NLYndaQVdtTEFFWVJTT2dSQUpzSklmMkVrQ0loSkFOQVg4dklpODRkNlRVaWI3UnVmajZmUnk2WEEyT3NYYzl4QXk2Njd2bjkrOFdmL2Q1SEt4Kzg1cjhXbnA1NG5zYm5LUkFTR0JUcFZCNWJ0NTRKMTIyRzk0azZuRUFxbGNlVFR6eUJ4eC9maFZ5K2dMWHlzcVNVeUdReVNLZlQ3YlgrbzAwa05oS01NVWdwMFdnMDJzdTFCK3Q0U2VUeU9VeE9UbDczMkdPUGZTeWRUdituSStpeGdDQlFHZUxIQ0FLUFJUK0FBaUVrMHBIN0FXd2loTFJESUVkU0wzUmRSeWFUUVY5ZkgzSzVYSHNCdFRnWVk2aldhNUF1Yi96VFYyL3d0MjcvdWNMa29Vbm9oTVV5cVJRY3g4UHc4RGdHQjRmUmFOUmlCSlZnVElPbTZiajc3bnN3Tzd1QVRDYmJudmJTOVlGSjk4U085VVpFekdnQllDRkVvQTRSMGpib0xNdEN2ZDU0L210ZisvcFp6V2FESndROU9SQUVFcmdmZ1dRZVJxQlNiRU9nWmd3VFFrcUVrQ0ZDU0NFKzdBOE9EcUsvdjMrVkN5cWVlL25zL3YyNDRoV3ZXcjdoaHM5YnMrNnl6UnNlRktIaEhDOFZyc21xY1BycFo4T3lMRFNiamJZK0txVkNKcE5CdVZ6R2poMC9BaUVCWVZlbVJwL2F5Rnlrdm5ETzIxR253ejBuVVFjaTZPc3I0ZmJiYi8rVm5UdDNmbzlGeWNrUk5sb3gvaGxFRGNBc2dIMEFkZ0g0Q1lEdkEvZ25BSDhQNEhxbDFQOVdTdDBpaExnSGdXRzNKWnBjbHN2bDJzWlQzQ0xQNTNKNCtJbGQrbWl1ci9uenI3dk1tcTRzRXkyS05ORm84OWhnaDcxOHZyaEtRaElTYkVTUnpmWkJRV0J5NmlCTUl4SkVwNWFjRVJFZHgybkg2dU1Mb3EwZ3pMQlZCTUVPMWdaYzE3MDFJZWlwZ1FkZ0JzQlBwWlQvSUtXY281UytLZHFwSkpQSkhHYmhhNHlCTUVJZisra1QvQTJYWHVZTWpBMVoxWG9kak5BZ3p4U0F4alEwbXpYb3VvbDh2Z2pYZFdJTnI2Q1V3TURBQU9ZWDVsRXBWMDVvWlkrVEFXUEJla3pOWmhPTzQ2d0tpeCtPZ0tDRUJLTzRaVmxieDhmSHY1WVE5QVdBVXVvaEljVGpoSkJmODMyL25YOFpyM3VsRkZLV2hZbnBLYk15djl6OHBUZGRRV3JDMVlndlZxMGRFRWluRnZMNVltaDhSU0ZJQWk1OG1LYUZiRGFQZzVOVFVHcnQ5WlRXRXhFUlBTOVk1c2Z6dkRXazVxcXJFQVVlQWhlY01yTDV3bE1KUVY4QWhFN28zVXFwT1VycG16am55R1F5N2NoWk81OEJRQzZieGYyUFBzSk9IeHhydlBLeVY5aHo1U1ZvSUZCaFl6UEc0SGt1Zk45RHNUZ0FJVGlpWVp3UUF0L3pVQ2owQTBwaTh1QVVMRE8xb2MrbWFScWtsS2pYNjIzM1VhZGYrR2lJakRiQjFiTUpRVjhna0NCNzdDRks2VVZLcVRNWlk0Y045VUJBUUY4SzlzUVRUL0lyTHIzY3k0K1V6SHF6SGk2Q0ZwRlVRNk5SaFdsWXlPVUtzYUUrOGlRSUZBc0Z6TTdNb3RGc1FUZldmNVByeUxoelhSZjFlaDJjODJPUW1tdURFQUlvTXAwUTlCU2pzOEdrbFBjeHhuNUxDS0ZibGdYVE5BL1RSN1BwREo3WnY4L2sxV2JqclcrK2dpMDVEVWJrNGZkdE51ckk1NHZRTkQzY1VUb2dzUkFDZGlvTHl6SXdjV0JmU0p6MUcrb2o5MUd6Mld6UDVqeFpWU0wwUEIxS0NIcUswZWtiVlVxVmxWSlZRc2lWVWtwa3M5bkQ4bUdET0hzS094OS9qUHpjbHRNYjJ5ODQzMTRvTDYrczE0b2dPeXBZVkZlaVdPd0g1eDVVT0RPY0VBTE9mWlJLZzJnNURjeE1UNGU3MzUyY1JSK0ZkZU5TczF2aXpZbUNFTEtZRVBRVW90T0pIeldrRUdJbnBmUVNJY1RwcG1tMmQzR093OUIxMUoyV3R2dXB2ZDZiWC9jNmJoVXpodE5xQmN1T0F3QVVtTWJRYURSZ0dDWXltUXg4M3dNSkxhckF4MHJRMzkrUDJabHBOSnROR0lhSkV5VnBGTFlOMWpvTnBPYng2cHBIQXlHWVN3aDZDdEZ0Mkl1UjlFRks2VzhKSVZnNm5ZWmhHSWRKMFd3Nmd5ZjI3RFkxU1JwdnV2SVh0SEt0ekloU29jRkUyclB3bXMwNjh2bFNlNFdQb0RNRUcwdWtVbGxrTWhrY1BIQVFsT3JoVUgvczdSMGwwTVF0OVBXVW1pdFFJRVRibHhEMEZLSXphdFF4eVhBUmdkUC9DZ0R0K0hobjFsTXFsU0lQUFBvb3RwOTFkdlBzODgrejV5dkwwRURiZ3BCU0JzOE5TSlBQOThIMzNWVTVBajczMEZmc2grTUdHOTRHdnRGamErOUlRc2FsNXNhUU15aXJrT1NKaEtDbkFOMkc5bTZIRU9JQlN1a3ZDQ0hHRGNOb3A3ekZZUmtHeXJXYS90emVmYzVicnJ4Q0VsczN1T09HVTVkWFhFLzFlZ1dwVkE2Mm5ZYm51ZTB3cUZJS2pGTDA5UlV3TlRVSjEvV091bmhHSkRWOTMwZTlYbTluT20xa3RwT1VBdWwwOW9jSlFVOEJ1azNWWGtzZlZVcnRJNFM4SjhvMGl2eUtFWlJTeU9XeWVPenBwOHdjTVJwdmZNUHJqTGxhbWJMWVV1V01CdHRVdXE2RFlqR0s5MGZwZmRGUW40TlVFZ2NQSElSaFdGaUxhL0ZvVUJTcTNDaXBHWDlHTzJYajRNSEpMeWNFM1dCRTB1ZFlKQ2lsRkVLSS9ZUVFVeWwxV1dUVkF4M3o5eFZnV2hiWitmQWo4c0p6em11ZWVlNkw3RXFsQW9ZZ21VUkJRZE1ZV3MwR2xBS0t4ZjZZd1JRSVd5NDRSb2JINERqQlVOK1pOQlNWTzFxSUlkSTFOellTRlNqUnVxNkJVZVk4OE9BRDF5UUVQUVZZUy9kYzZ4QkMvSmd4OWs3T2VaOWxXYkJ0KzdDMFBOdXlNTGU4WkV3ZE9PVCt5aFcvcUlTdWRPR0ZHKzlRQXFJSU5FWlJxMWVSVG1XUlNtWGdlVzVvRkZFb0tjQVl4YWF4elppWm5zSHk4bkticEJFSm04MW1leFhsazNHNkh4dUNuVmdvSkVZM2plUHBaNTc5NGc5MzNIVnpRdEFOeGdubVdrb3A1WDdHMks5SFVqUnloa2RRU2lHWHllRFJKNS9VU3VsczQzV3ZlNjA1WFZraWxKRDIvaVdFRWlncHcxaDlYeXpqcWUwNWdHSFlHQjRad2R6Y0xLSnBGbEZhbk91NnA0Q1k3UWVHbmJMUVB6Q0UrKzdmK1MvZitjNC92YWRlYnlBaDZBYmpXQTJremtOSytRd2haTE5TNm56R1dOdXE3N3kzYnVqMGtjZDJpY3N2dXJnMXRtWE1xdFRxMEVLWGt5UUVqREswV2czb21vNTh2aThNZ3dhdUpVSldzdjAzalk5amRpYVFwSTdqdE5QaVRnV0VrT2p2N3dQVGRmejR4ei81ODl1K2UrdHZ6Uy9NSTU4dkpBVGRhSnlNOUpGUzNra3AvWFhmOTR1MmJSOFdCZ1VBMjdKeFlQcVFzVFE5MTNySEc2OUVIYjR1T0k5dFp4RTQ2RnV0Sm5MWklyUnc1VGxDZ29YSWREMXcxdXVhaGtPSHBuSG8wRlI3bllHTnhjb09nWnMzYjBhbFV2R3UvYU5yZjJuWHJsMDNqSStQdzNHY29Cd2JYSXIvMURnWmNvYXFRY1B6dkdzOHo4UDgvSHc3QVNNT3pqazJqNDNoWDNiY2xmNzJ0MjlwYlIwZWcxUnFWWHdvY0JGNU9EUjlBSnFtZzFJVzg2K3V1Sjk4M3dWajJyckc2ZGVDRkQ0c3k4U1cwN2Jobm52dWZmU0RIL3pnNlU4OCtjVC9HUjRlZ3FicjdiVldFNEp1RUU1MGFPKzA2am5uLzh3NXY2M1JhS0JjTHJjWFo0di9qczRZOHNXQzhkbXYvcTN4L0s0OTFaSEJRZmh0U1J0a3FSdW1oV3B0Q2N2TDgrRWE5eXU2S0JETUNGVktoTEg3amFXRkVCd0QvWDNvSHhqQWw3Lzg1UzkrL09NZmUvbnk4dkpreXJiRHFVbXhwWUkydENRSjFnV3U2MTRqaEdpVnkyWFU2L1hEaGwrcEZQb0xCVXpNVEdmKyttKyt5TE9hN1dpV0JoSjNUUkZBMDNYTXpoNkM1emt3VFh0bHZYNUVub2FOZlk1ZzZSeUY4ZkhOcU5ZYjd1OWU4M3R2KythTjMvZ2RTZ2lLaGNLcThrUklDTHFCT0Y3M1VyY2pOSmdtUE0vN2VLdlZhcS85ZnRqaUVGSmk4OWdZYnJuajl2UnR0L3ovclcxRFl4QXFidlVEak9yZzNNUE16R1F3ZDUrU1ZXV1ZNcjY1NnZyWGhhN3JHQnNieGFPUFB2YVRqMzcwRHpjLzhzakR0ekZOZzJHYVhja0pKQVRkRUt6SDhONDUxSHVlOTllKzcvOWJyVlpEcFZMcGFtRWJ1bzVVTm0xKzdzdGZvZFA3RGxYNytqczN5MUl3VEFQbHloSVdGK2RobXFsVlUwdzJZbEV3QUpCQ0lKTkpJNTFPNDkvLy9kOC9lZjMxWDNqVjFOVGtIR1BzcU4waEllZ0dZVDJrWjJkQ2llZDVIL1o5MzF0YVdtcGJ1UkdKUXdjL2hrcjllR3IvOC9ucnYvUzNZaWhUOUtoT3dZSjlLd0VBQkJRYTB6QTNmeWlNTG9WVGxaV0FoQUFoNm5pU200NWNCMkU5OVBXWHNMUmNYcmo5ampzdXZmdnV1Ly9NTUF4a3M5bGo2aEFKUWRjWlVZaXdjMm1ja3oxQ2libkg5LzJQdFZvdExDMHRkWFVIQ2lFd1BqcUtiMzMzdS9hLy9jc2Q5YTFqbStBcXNlSjBVZ0RUR0lUME1UOS9DTzJ0eFNXZ1pIUy85V0VvQVdCWkZtWm1aKzY0YThlT3pYdjI3TDEzYkd3TXVxNGZzeXN6SWVnR1lHWEg0L1U5Q0NId2ZmK3puUFA3SzVVSzZ2VjZPNWtqbm5DU3NtM0FaTmIvL0p2cldXVjZ1WjR0OVFIUjlwSWhVM1Ztb0ZKZXdzejBaRmhxQ2lYRGVVN2s1QWthZEN5R2VyMytSeis1NXlkWGVLN2JLaHhodTVrMTczUFNKVWx3R0RhQ25CMUQvY2Q5MzhmQ3dnSjgzKy9xR3gwWkhNVERUejJaKzlKWC90NGJ6L2I3b0d5VmxVNW9zTm50Y25rZXZ1K0Mwc0RWZFBKaFRRSkNHS1RFb2hEcUZTM0grYlJoR0lGdlV4Mi9qcHNRZEIxeEttTFdZZDdvWFo3bmZTYXk2aU5ES29KU0NrcElqSTJOa24rNDZTYnJ4M2ZzcUkrUGpZSXJzYXJCQ1NWZ0dvSHJOY0dGQzZYNFNiaWFWQmlkWXVDYzMxNnYxellycFI1Z2xJWDdRSjNZalJPQ3JpTWlvcHlLdy9mOWE0VVF6MVVxRmRScXRWVlNsQVRlZHFRdEN6NWs2ck5mL0FweGxwdU5mQzRIS0E2Q2FKdEhBZ1VGemoxNFRwVHBkRHhZV1c2SFVnWktOWEFoLzlCMXZTdVZVczJndzU2Y3VwQVFkQjF4S2lSbzdIY2MxM1UvN1BzK2xwYVdJSUlkOUZaOVR5cUZzYUZoL09paG5kbS8rN3V2TzV2Nmg0V1BrRllra0tEY0Z4Q0NCNXRuaERINjQ0RlN3WXAwbEdxTGxVcjFGWnlMdjF6Umg5ZEJsejNwT3lRQTBGNkk0WlFkQU1BNS83Kys3Myt0Mld5Mnc2Q2RaVkpLWVhob2lOMXc0NDNXUS9jK1hCc2YyUVFoZzBnM0lRU1dhYUpTTG1PNXZBVGEzdDdtNkFoeVJEVmtzbG5zMjdmL2psMjdkbTFoakQ1QUtWbFhYMzlDMFAvZ2NGMzNEenpQbTE5Y1hFUzlYbS9QTDRvNzRQUFpESmJydGZUbnIvK1N0SHpXU3FkUzdUbEszT2RZWEp4RnJWcUJiZGs0RnFtbmxJUmxtaUNVb2xKdC9OSCsvUk5YTEM4dE5WS3BjRm1kZFF5WkpnUmRCNXlxb1gyTjM1MlBNcDZpamJVaTExTWthWVdRMkx4cEUrNjQrMGZabTI2NnBiVmxkRE44ejBXOVhzUGk4Z0lXbHhZeHZ6QUhFaTVsZmpRZlpTcVZoZ0lXSDNyd29VdjNQclBuMDRWQ0FhWmxRbXhBSkNvaDZEcGdJOTFLeCtKMkVrSjhpM1ArZjVyTkpwYVdsdHJyNDhmOXA3cW1vZGhYMUQvM2xhL29UOTczYUNWdHBiQzBQSS9xNGlKcWxScm1GK2JndW5XWWxnbWxEdTl3d1pET1lGa21LcFhhSGZ2MjdkKzhzREIvcjI0WWdlNjdRWWttQ1VGUEVxZlNjbC9ySUlUQWRkMy83dnUrTEpmTGFEYWJxeWJxUlV2cDVOSnBQTDMvK2V3bi92alBwY2FWQzBwUXIxVGd1UjZhelFhV2xoWmc2T3d3UTBrcEJkTzBJSVRBOVBUTUgrN2V2ZnNLUXRBMFRldEVwN1FjTXhLQy9nd2dOTkNlOER6dno2T2hIZ0IwWFc4YmI2MVdDOHZsTXZxeVdkeDIxeDNaRzc3NmRYKzRyMTgxcEk5bW93SHBlWmlibTBHMXNveVViWURHdGxNTTlxdW5NN3QzNzc1NDc5NW4vekpZUDRwaHc4Um1ET3UvRHQ5L01zU0gyaGNhdnU5L2lqSDJpN1ZhN2VKcXRZcENvZENlL09ZNERselhoUlFTbW1Gb2YvVzVMeGlqd3dQT2x2Tk90NTk1NG1sSTRhUFZhbUh2bnFjd1BMd0YvWU9qeU9WeUFCUW1KdlovOGRDaDZhc2R4eEdHWWF5YkMrbFlrQkQwWnd5dTYvNE9ZK3loeGNYRjlwNU1yVllMbnVlQmN3NmxGTksyalVxbFlsejdaOWQ1MTMzcVdtOWtZTkI0N3RsbjRUZ3U1dXNWVE03T1k3aC9CQXJZWjl2cFg3TnRlMmVyNWNBMFRYQisrTVpnRzRsa2lQOFpnMUxxWWNkeGZyL1JhR0JoWVFIMWVyMjlNWmNRQXB3SFRubkxzckJZS1J0Ly9CZC9xV2FlbmZUSFM4T1Fnc0JyY1V3ZlBJQTdidi9YVDk5ODgwM2I5dXpadTdOUUtFRFhOWndxcVJsSFF0Q2ZRUWdoUHVPNjd2WFJ3Z3ZSVm96UnZrelJlMElJcGhibnpULzVYNThUTy83dG5vTmVyWW42N05LZTVjbUZselNiemg5bE1obGtzOWx3VzZJWDVsbVNJZjVuRkp6ekR5dWxidlk4N3pKQ3lDQWhaRWdwWlVvcFdhZzNONVZTVlFDVjVWYjlxVy9kL3YyNzNyejlFai9kbjZ1TmJ0N1VhQjA4RUM1STlzTHExNlJYRlB3RUNib2hHZUlUOURRU2dpYm9hU1FFVGREVFNBaWFvS2VSRURSQlR5TWhhSUtlUmtMUUJEMk5oS0FKZWhvSlFSUDBOQktDSnVocEpBUk4wTk5JQ0pxZ3A1RVFORUZQSXlGb2dwNUdRdEFFUFkyRW9BbDZHZ2xCRS9RMEVvSW02R2trQkUzUTAwZ0ltcUNua1JBMFFVOGpJV2lDbmtaQzBBUTlqWVNnQ1hvYUNVRVQ5RFFTZ2lib2FTUUVUZERUU0FpYW9LZVJFRFJCVHlNaGFJS2VSa0xRQkQyTmhLQUplaG9KUVJQME5CS0NKdWhwSkFSTjBOTklDSnFncDVFUU5FRlBJeUZvZ3A1R1F0QUVQWTMvQjBsYnlZMFo2K05PQUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8xIiwiRklET18yXzFfUFJFIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiI5ZWI4NWJiNjk2MjU0YTcyODE1ZDA0ODc4MzBjY2FiMiIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwidXYiOmZhbHNlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibm9NY0dhUGVybWlzc2lvbnNXaXRoQ2xpZW50UGluIjpmYWxzZSwibGFyZ2VCbG9icyI6ZmFsc2UsImJpb0Vucm9sbCI6ZmFsc2UsInVzZXJWZXJpZmljYXRpb25NZ210UHJldmlldyI6ZmFsc2UsInV2QmlvRW5yb2xsIjpmYWxzZSwiYXV0aG5yQ2ZnIjp0cnVlLCJ1dkFjZmciOmZhbHNlLCJjcmVkTWdtdCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOmZhbHNlLCJhbHdheXNVdiI6dHJ1ZX0sIm1heE1zZ1NpemUiOjE1MDAsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6OCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoxOTIsInRyYW5zcG9ydHMiOlsidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN31dLCJtaW5QSU5MZW5ndGgiOjQsImZpcm13YXJlVmVyc2lvbiI6MjEyMiwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjEsInByZWZlcnJlZFBsYXRmb3JtVXZBdHRlbXB0cyI6NSwidXZNb2RhbGl0eSI6MiwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjI1fX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTA5LTA1In1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNC0wOS0wNSJ9LHsiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjA2YWY0YTRmMDVhY2EwMzI0MGRkYzZlOTg2ZWRmNzg5ZTU1YTliZDkiXSwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiMDZhZjRhNGYwNWFjYTAzMjQwZGRjNmU5ODZlZGY3ODllNTVhOWJkOSJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiSURFTUlBIFNPTFZPIEZseSA4MCBSMyBGSURPIENhcmQgYyJ9LCJkZXNjcmlwdGlvbiI6IklERU1JQSBTT0xWTyBGbHkgODAgUjMgRklETyBDYXJkIGMiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MTEwNzQ0ODgzMSwicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfSx7Im1ham9yIjoxLCJtaW5vciI6MX0seyJtYWpvciI6MSwibWlub3IiOjJ9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDeERDQ0FpV2dBd0lCQWdJR0FPckFBQUFCTUFvR0NDcUdTTTQ5QkFNRU1JR0VNUXN3Q1FZRFZRUUdFd0pHVWpFTU1Bb0dBMVVFQ0F3RFNVUkdNUk13RVFZRFZRUUhEQXBEYjNWeVltVjJiMmxsTVNNd0lRWURWUVFLREJwSlJFVk5TVUVnVTJWamRYSmxJRlJ5WVc1ellXTjBhVzl1Y3pFdE1Dc0dBMVVFQXd3a1NVUkZUVWxCSUZObFkzVnlaU0JVY21GdWMyRmpkR2x2Ym5NZ0xTQlNiMjkwSUVOQk1DQVhEVEkxTURneU9ESXlNREF3TUZvWUR6SXdOalV3T0RJNU1qRTFPVFU1V2pDQmhERUxNQWtHQTFVRUJoTUNSbEl4RERBS0JnTlZCQWdNQTBsRVJqRVRNQkVHQTFVRUJ3d0tRMjkxY21KbGRtOXBaVEVqTUNFR0ExVUVDZ3dhU1VSRlRVbEJJRk5sWTNWeVpTQlVjbUZ1YzJGamRHbHZibk14TFRBckJnTlZCQU1NSkVsRVJVMUpRU0JUWldOMWNtVWdWSEpoYm5OaFkzUnBiMjV6SUMwZ1VtOXZkQ0JEUVRDQm16QVFCZ2NxaGtqT1BRSUJCZ1VyZ1FRQUl3T0JoZ0FFQUNlOGpkU25WVEt0emtnc0NLSkZ1aXBXTDl1VWl6c1JyNi9pVENlK0RLcm4wMlNucHNQSFp5bzRXWjU4cFV1NjZUNmt2ZkI4YUdBNWk3ZXFVSlNnaFF0R0FFYmZsZFN6R0lidFd2WFBoQWpFUmV5ZlNuM2J4b0VCUmZwdDF4aDJsMUdKV3RnRXE2WUk5U3FrQ0lYV0JwMVIzeDZpYWJFOUhXM09ZRlFJRHJtSlV1RTBvend3T2pBZEJnTlZIUTRFRmdRVXorb2RFUndWRUtNNFZmK3NQVVBDcHpWZXlTNHdDd1lEVlIwUEJBUURBZ0QvTUF3R0ExVWRFd1FGTUFNQkFmOHdDZ1lJS29aSXpqMEVBd1FEZ1l3QU1JR0lBa0lCTy9sZWpqdHBmYXIwcWwwM1NoR2ZNUE9QRFR4SEVaZFVyUFNpd2RJOGtvSWtxdFhnQi9xYm84UnYrT0NCKzB2ZUJzc2k2SlA5ckhJaGVzZlhlUkM1RGNJQ1FnR3ljam9ydUt3MUM4czRYM2psZFdLQlIrRFVjOFRXMGl4RWdKMVdTcm02SjN1bFN3dzZjRjUxemVmQjBPQWh2Ri9oQTRKODduejN4dWNGTDFLYnFqSWNuUT09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQURJQUFBQXlDQUlBQUFDUlhSL21BQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRmlVQUFCWWxBVWxTSlBBQUFBb3JTVVJCVkZoSHpWaHBjRlBYR2RYeW5tUXRYaVhMKzBJYXNNSEdPd1liRWxKS2dFa0NBYVlNMDB5Yk1tbExLQU5objhuQ1pnZ3A1QS9VaEk0emhORFNhV2NLSkd5Rk1LR0JOSEh4Z28xdEdiTWJiL0sreUpZbFdjdVQxSE4xaFZCa1c5SVBZbkxHNHpudjNpdmQ4Nzd0ZmxkOGg4UEJHNFhHZTExMWxacmV6bUhPWnVmelhZTlBFdzRld3dwakVrS3laeVhGSnlsY2d4N3dsblg4OEhmSEQxMDM2aTBTS1NzUUNuNFVUVTVnV3h0bkh6RmFJMVRTOVR0K3ZtUmxybXZDaVNleUJyWERLK2FVR0hUVzRGQXhCTkhCQ1lETlpoL3NOeVpQaVRqNTN6VThucEFPdW1SMXR2Y3ZTaTlXeFFURHRuUmlnbUUyY1VhanViUjVHeU1VNDVIS3NzOU8zaStUaVlYTXhCbHBOQ3htVGhiTW5yK3hFWnpvK0dEdGFTSHdURFVCSWpIVDIyVTRmdmdhT045Z01NeE8vRGdxTm9ULzQ0VjN3TERiSGJyQmtiSzJEd1FYVDZsbDhxQ2ZnaVpBSU9EYjdieks3KzhMcDhRczdHelRQWE1QUG9IREVhNlNDam8xdXNETEFZeU1mTVlmelYvODkzeDBMd0RvbytPSDZ3TUJ4SFJwaGdSV0N4ZWdBN0Vsa2dVVlZpeG1lSHlTd3B6VkxnQVFBYzVITEJBS3lhUER3U2RTN0E1RU1aNnh4RFRDQmFnTVgyV3hZQmRlUUtMd3BUMmR1clBsNnkvWGI3NVF2V0Y0Y01ScXNUMlhvcnlzM29RUmhVcUdrbTBZTm0vWnN4Q1BYOS9hck8wemNKdzlQam44c25vejFpeDlJOGVnTjd1K3l4LzRlQkVYOVFmVGlQVzFsUm1oRVJMd05VdFBpSU1ZbUdwNlhqeWRmWFN2RjNaaVJjSnZ2N3BEUjhJVVVxR1FYMW5hVlBiTlF6eHVMSnB2NDRnNTZheGZDQUpaQ0ZQMTl4aUxpcGVCTnovc3F5aDlKQTVpclZZdUxUTU9JMjJQK3ExV0cxL0FaMWhCUTEySDh4Tzh5ZE9pWUswSWhheG80M2s2OHNkM1g5THJUSlQ3Z3owZ2ErSGsvdTI2QW9HUXVIdjcyMmNVa1RLUUVZTTF0ekFaUkYybEVZa1lFQmlzbzJVSUJFalBqb05XSlBqZ2dQR3JMK294OHB1MWhmaThPeHQ4d2NGRGJQa0JpWFFMdDNYZkl2RHEwcFk3OVIyc2lNR2dQRGdvVkVGOFduMjlGZTREUWJRaXpoL2U3Z2JQbVpXTTRBTUpDWmZzMzNZSkJOaDVhTW5nd0FqbHZ1SGZpYkQ4NnMwdlViNW55N2tJSlRFVng5bFNNNkxwNE8yYjdlempBeDVtVTkvUWdHVE9USUE1UVdCQ0syZjdSMGtaK0lKbDZRcWxITTRsUzMzQ2p4UHROanUrOTYzTmM4Q3ZuR3ZvYXRQUkZvT3oyTE5tSmppWDhPN1dkd2xaMS9mQWJEVVZyU0FTR2F0VXlmQng4T0RRb0UvMlhYWE84M1lYdjQ0a3Bkd0gvTWdhR2pSdCt4TnhIN0JudzRVd1p5WUNjQ3ROdzVZSEE0em9TWldCMldyTGlTeGdhbVlzTlF4S0Y3TGg0STRyNFBsekowMUppNkwrOVFGZnNsQVNaVExSNHBWWjRDYy9yMFQxcHVjQi9NNVpiSEFUZUUxRlU1Q0VKYXVkUUl5M05nMVFucG1mNE41ZUpoZWZPRkpLZWRIaHBmMDl3NVNQQjEreXRIM0dQVWRJVVFBTzdiNENYMUJPeW5jUUV4b21CYitqN29JbDZEZ0ZwdTQzZElGTXo0dURVZWtnc2lGVUlkMjEvaXo0NUxTbzNNSkpPRERvMUpnWVZ4YlNPM215WXZiODU4RS8rZkFiMkFtK29GTTJ6cGFTRmtONVRYbUxPOTRwVUducmJyU0JaT1Fub09TNnp4d1k5Y0kvYXdlNlNXRHRQN29jaGNQSGNUU3VySUZlZmRHZmwxSis0c2gxZVREcFpTbXMxaWZ4amtLRm5LQ2NBaXJWbFVTV1JDTENuM3RyR0N4TUtkMjFnUmhNR1IweTc3VnBhSlRwMUdpTUxRc1d4bFZwV2s0cytKNTN6aU90OEtWMENzQnNWbjRpU1BPRFBwUEppdnBPeHluZzA5czFuWlJuNXNGZ1Q2SWJKL2YxcXc5Ykd2dkI5LzFsR1c0VzR4bHNERmxZaVZwMTRMTmZndmYxNkUrZnFKSklSWFFLY1BBY05xczk3NFVrOE9yU1pzOTRwNER4TkMxYVdocXlDeElSREhRY3dMdUZLMlRiVnAwRVJ3aitZZXNMdUpEUktTK01hUzBIUHErTUNnYnJhTkhTem9WT0VEaDRmQUY1YjFDRDNnSStHdWdtME1tQXlFUEZYdmJBQ1laMml2TDQ1QWdrTytWZUdPTmJJU0pJeXU1WWV3WThZMFpDL3B4SlpvK3NvUkxWbGFTVTV4WW1tWXplOFlGektUbytSQ29uQnE0cWJmWktDR1QzL3FQRUQ4QkhXeStpY0ZEdWhiRmpDNjc1OTc5cUIzcEoxbncwS212RUVyYnFmODBnYWJseDZGNjg3SUhzUXdtZ3ZMYWl6ZlBpQ1lkT1NsRVdPck83dU9nL3JKZzBqWFRLQzJQTElrR2dsTzFjUnd3R2J5NVlra2FkUW9HZGJsVzNVNjZLQ2JIWmZpQUxlK2NVa01pRFhPMkEzbk5qdk9mdWc2K0RvSlA5ZTBrWmJxWjBmRFRHbGdVZ2VzcXVOaUxYd0ZHWDBZNjZyY0t5QXZWTjRrUWdNei9PTTljQXE1bEx6eVhuVWtOTnU1QVJ1dU1TK1p0YjRNcnV2WnN1U21VaXJ4VDJ4TGl5cU1IZSsvMXBjTEdFZVdQTlRLUEI0cDVDcXFJTkJFL044SmFGNU1xZVNjcEhYVVdieU5ud0FIaWwvaDQ5NGdIY29ET2YvdXNORkIwNk5TYkdsUVdnSGJoL3A3dW1vZ1Y4eTk1Rncxb1ROUmhrTVl3QWNRT09xUGVzaXFnTFNoVkpZUUFkRHUzREFLeVo5OHJVeUtnUThCM3J6aWlqNUw3dkVMNWtBUkdSc3FMMTV5amZzSE8rYnNqVjljTEZOTHhTTTJJOGt4R0JsVDNMZFFEY3FtbW44WTZYd1YzNXd4Snl2R3FhdE5jdTNxWDF4UWY4eUdJWVlVZmIwTmRmTm9DdjJqaEh4QXBwcFdIUVZ6MXVZSEIwb2xCUmpuTUpOWVh5anRaQmVpNk5HQ3dyM3BvaGRkYUM5OS8rSWtJbGN3ZmNlUEFqQzhBZDVzQjJWOWY3enM2WGRZUEVZSERpM1ZyWGJTSTlLdzc5SitVV0U1ZnRQQzVyeXpXaUlKZXBVSFhmM2Y4S09KS2dvYTVkeFBveEZlQmZGdDdZT0d3NWRhd0tmUG1iT2FHaEV0Z0dnejNkdzFZelVaTXpPNUVTS0FCU3MwaXUxZDFvRllsSlVPdDE1dFZiNTRJQVNDRGNoUUs1bVBxWEJZU0VTVDUrMzJXd1hZY1hhd2RJbWNWSmNMT00rSEY2WGdMdHErdzJoekphVHN1NnVxb1ZkUVFWSDBtd2VodVI5ZTJsdTEwZHJwN2JMd0tTaFpJSUVTVUh5QzlQaGZNbXg4YUZveWdnYk5YVkpCbFRwa2RqQWV6a3ZIZTQrckI3dDdvUmwwUGFrVTI3RjlLUkErOWRDb3NnbldNZ0NFZ1dnTVByMk1IdktmLzA3SnR3RFhadHFIRVYxZGpFTUpnS2FmamlMMUxvU0UrSERyVWtMakZzeGUveThQamwzNnExL2NiQWZ4ZmkvM3BoU2JkRzc5WEtqUWswNWdxVlBEbzJCTlcxdnJvZERnTFNTQ1R4bXgvMkdnMVdKR25TenhSb0dGRlJHKy8yUUlRcUpoaG5GL0t1dmtxRHgvRk9RRTlZekxZWkw4YnpWNzE2dEwxcEtNRDNnSnRnRlJEVVNXd0dXZlFTZ1lpaFc4SzVrSXNwV2tnaGxOWU85d0svd0JsVk1DOUpvSXlTZVoyMVBnREhJYVR3UndzUC90Tkg5NWJZSG8vdTRnNG5lQzN3Qzd5Mklrb21tSm9WNWRsQVBuUGdtRXJMalJYTVg1eHFHRGJESGE3aFp3cWF6bk1YVGhFa0pzZG16WXBHb0xsbW5pbU1ldXVydjBvVnN6SVN0aHBOeDlLOHo1U1JjaDhOMEFTQTNBQk1sc3NONjZSQndTakU5dmo0MkwyZkx1aHFIMFlTdVpaTU9KQ3pmVDJHNGxQTG9Ba3lVQmY0eU9wRlMvTDNIVnVnMHhvUmNSTWNaOWh1eEdBMW15d2xGNVpuWktWQURCOVhMNXhaS0RXNEYyQytzYkdsdU9pYXVyd1BGM2JjUXVIVHgwNTl1czRscjQxM2gxVlE5bXljcldCQjNQcnQ4MVdSa1FLR3p3akpUOVBPWDZwNURqdG5SOVJqa2RsaWJueWdxZnl1cWZtQlZqOWtocitkcG51cTluTVdQWlRBa0hEeDgxT1ZNK2MrbDVBWXc0cFlkTmlzbU1GVmlzZmoveC94cU9jUFJkU3Zhd0FBQUFCSlJVNUVya0pnZ2c9PSJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTA4LTI3IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjExMDc0NDg4MzEsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiSURFTUlBIFNPTFZPIEZseSA4MCBSMyBGSURPIENhcmQgYyIsImNlcnRpZmljYXRlTnVtYmVyIjoiVTJGMTAwMDIwMjUwODI3MDAyIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDgtMjciLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MTEwNzQ0ODgzMX1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wOS0xMSJ9LHsiYWFndWlkIjoiMzBiNTAzNWUtZDI5Ny00ZmY3LTAxMGItYWRkYzk2YmE2YTk4IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiIzMGI1MDM1ZS1kMjk3LTRmZjctMDEwYi1hZGRjOTZiYTZhOTgiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiT25lU3BhbiBESUdJUEFTUyBGWDctQiJ9LCJkZXNjcmlwdGlvbiI6Ik9uZVNwYW4gRElHSVBBU1MgRlg3LUIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9LHsibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sImlzRnJlc2hVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZWQiOnRydWUsIm1hdGNoZXJQcm90ZWN0aW9uIjpbInNvZnR3YXJlIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNIVENDQWNLZ0F3SUJBZ0lFQVRUK0VUQUtCZ2dxaGtqT1BRUURBakJzTVFzd0NRWURWUVFHRXdKVlV6RVFNQTRHQTFVRUNoTUhUMjVsVTNCaGJqRWlNQ0FHQTFVRUN4TVpRWFYwYUdWdWRHbGpZWFJ2Y2lCQmRIUmxjM1JoZEdsdmJqRW5NQ1VHQTFVRUF4TWVUMjVsVTNCaGJpQkVTVWRKVUVGVFV5QkdXRGRHU1ZCVElFd3lJRU5CTUNBWERUSTFNREV5T1RFME5UZ3dNMW9ZRHpJd05UVXdNVE13TVRRMU9EQXpXakJzTVFzd0NRWURWUVFHRXdKVlV6RVFNQTRHQTFVRUNoTUhUMjVsVTNCaGJqRWlNQ0FHQTFVRUN4TVpRWFYwYUdWdWRHbGpZWFJ2Y2lCQmRIUmxjM1JoZEdsdmJqRW5NQ1VHQTFVRUF4TWVUMjVsVTNCaGJpQkVTVWRKVUVGVFV5QkdXRGRHU1ZCVElFd3lJRU5CTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFN1ZlRmJsMEZ3QlduSEs5cmFLMmRyV1FBYUF4ZDczeUt0dzVwSngzNUVqU1ozaGZPbWZKL3lid2tidThlekZpK1JOVUEwR2NQQ2tIa2dMaWMzbVNGV2FOUU1FNHdIUVlEVlIwT0JCWUVGQ2o3bldTT3hmT09Pd3B1ZFFlSDRJVkZwbDhiTUI4R0ExVWRJd1FZTUJhQUZDajduV1NPeGZPT093cHVkUWVINElWRnBsOGJNQXdHQTFVZEV3UUZNQU1CQWY4d0NnWUlLb1pJemowRUF3SURTUUF3UmdJaEFPTzZNU2paVlVmT1kyOFNWSlVkZ1lWMmJxWUE2RHkrOEJCa0dqUDhhbTdCQWlFQW1rNkF1WEZhaDFYWDdHTVptZVQ0ZHNLdzFva2F6djl4V0dNais5bkZSNFU9IiwiTUlJQ0VqQ0NBYmlnQXdJQkFnSUVBVFVCRlRBS0JnZ3Foa2pPUFFRREFqQm5NUXN3Q1FZRFZRUUdFd0pWVXpFUU1BNEdBMVVFQ2hNSFQyNWxVM0JoYmpFaU1DQUdBMVVFQ3hNWlFYVjBhR1Z1ZEdsallYUnZjaUJCZEhSbGMzUmhkR2x2YmpFaU1DQUdBMVVFQXhNWlQyNWxVM0JoYmlCRVNVZEpVRUZUVXlCR1dEY3RRaUJEUVRBZ0Z3MHlOVEE1TURFeE1qVXpOVGRhR0E4eU1EVTFNRGt3TWpFeU5UTTFOMW93WnpFTE1Ba0dBMVVFQmhNQ1ZWTXhFREFPQmdOVkJBb1RCMDl1WlZOd1lXNHhJakFnQmdOVkJBc1RHVUYxZEdobGJuUnBZMkYwYjNJZ1FYUjBaWE4wWVhScGIyNHhJakFnQmdOVkJBTVRHVTl1WlZOd1lXNGdSRWxIU1ZCQlUxTWdSbGczTFVJZ1EwRXdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUmdueW13Y2FMbFpKVnQ2Z1ZMUnNXNFNPcGtJbkQ3d1F4d1dSTDJMUDJWY3Q2RlpSNVhsZzRtbUg2OTRuaXc0cFJOQWJESlVTY01Kd3VPS0lzMC9xN1dvMUF3VGpBZEJnTlZIUTRFRmdRVTU1NXg1Um5ReTNjY0JwNlE5NFVudEJDdXdQRXdId1lEVlIwakJCZ3dGb0FVNTU1eDVSblF5M2NjQnA2UTk0VW50QkN1d1BFd0RBWURWUjBUQkFVd0F3RUIvekFLQmdncWhrak9QUVFEQWdOSUFEQkZBaUVBZzAxcCsraXRmTTFUZk5Ic3lLVkpFVGNBN0x1V2lTK2ozOWYydWtGbys4Z0NJSFR1M2w2Y0JpQnFTZC9vKzY3MzBScHlhK1l6T3VOMmZ2NFZtWkRZZjk1ciJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFRQUFBQUI3Q0FZQUFBQ2I0RjdRQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUxpTUFBQzRqQVhpbFAzWUFBRzFuU1VSQlZIaGU3YjBKbEdaWGRSNTYvcm5HcnVwNW5tZk5za0JDYUFLTUJBYUJKUHdpYkdMekRIN0U4VXRpTzM2eDMwcklpcC9qZUszWVdYYWVzNTdqckNTZTFvb1hOckpCSUFrSk1BaUVRQWdoTkhlcnU5WHpYTlZkMVVQTi8vUys3OXZuM09FZnFxcGJyWUYyZlZYN1AvTzVaOXI3N0hQdXVmZTZPY3hoRHY5d2tmSG1IT1l3aHd2RXFsV3JPdnY2K2hiUlBsNnZpNWM2TTVrNlRhQ1l5K1UydVh4ZUR2M21jaTRISTFNbzFHdFRsU3V5K1N4OWhhekM0TVovdFZyZG5zMHd1NnhEWnBsc05sdlBLbXJHMVdxMWpRZ3AwVVh1elNCT1pjdjJYSGJaaXUzd09lRHE5ZlAxV3YzRTFQalk0Y0g5SjM3bjRKZis4b3ppdHNHY0FKakQyd3AzM0hGSC9zaVJJK3RLcFpLYm5KdzBUd3ozRXY3QUNIa3d3Slo4UGw4SE11U3FmQzRQeHNuVmFhOU4xYlpsY2puakZRRHgrVU9lY3RWYWJSMDRxZE5Dd0ZSZ1ZMZ1Jsa1ZZWlVYR1pmcWRtTGVlQVJpRm5GZXYxMnBMY0sxbDlJT0pLUEJYT0RQSklwdE0wYnY4ZnpEVENGS0JZQml5YWc4RXRnMW1DWVBGbzNyMTlhNndicU5sNm1ueTdCazM4T3F1Zjd2M0MzLzF1ejVhU3pTV2N3NC92c2lBZVRqQk5HRndjSkE4c01sY01ZckZvc3lxcTI0R0V4WENETVVmMnNobzVYSjVMWmlvVzB4RmZ0SVBma0dZcVpaaFNscEF0NExKSEdZbjQ4d0h3eXozYmdCekZSbkRHS203V2dWREJrYWl3YlNNa3lVVFpncm1Iek9iZ1hZTy9HQUd4TzZMWlN4TDF6cVVqTjhPelVFdDRqWjRtYk5ObnQ2N1RXaExaRys2eFpVMmJVVWluelBNOHZDUU8vN0NjMGNxUFlYTkIvL3lMeWNVMEFMSjFwMURDOXh3d3cwRndQUzRCcHc3ZDI0OXdveUw5RnMwQThPM1dxNnVnbTBlMUVBeFUyQ3FURDVUcjFhcW5GVVdrWW1Nb1FKam9mT3E5YjVxdmJveW15SGpXUGZRQ3RaQWtub2Zac0NWU2FZd0JpUHIxRHN3eTYybFRmNHl5RUFjUzJJazhYWXFMYWp0UUVPQUgwNzZUU0VLSXhMaEtmOEE4MHo3SjF4TllSNHB6K2xueElEWTJpWjIyMHhpekNKS0doZWM0UFVpN3IrQTNLM3ZjUjFicjRBTmhWRjU2bTdxOUNsMy9JYy9nSHgySDl2M3hiLzZJbjFib1RtM09RaHIxNjd0V0xCbzBSLzBkSGY5REpobXZqRVJRNnpKUENQNTlndGhnQjhRWnNTakl6MVRZRUNuM0lEY0xRYTY5MmdLZ2ROOG12MEQwaUhlMVQ1NmE4d1lmOFljREROR1l3T0dTTmFZczh6NU1rSVlSQVJybjNTM1IrbjlIM1RGamRBQUlrQUFEQTY0NDA5L3o5WHF0VWYyZnVGemQvdUFKc3p1Q3Y4QWNmWFZWMzltMGVMRi8zMXFxaXlWU3BCaDlyYURzMDFBKy9odFExS1lYYXdHVEp2b0FydCsxdEYvakliVVJUWHEydzg5UC9kcGwrMWY0RjBBNmpVNWVOS2QvTjRUcmx5dlRZNVBuVjl3L09HSHgzeG9DdFFmNTlBQ1BiMDkxMkNkNmlvVnJKQXJOU080cTlXNnFOYU9hcTJwM283UVdXbmlHcm1aWEVRb25LaVZYd05GUUp3bXVrQzB5citSaE9ZQTFDQng1ZUFPZmtsMzhMdTAxQkpSZWQ5c3RDcGhncWhLWGlCbGUrYTVUQzRQd2hJekVKZVhES3U3VW1laDV3UEl2Q1htQkVBYllPM2VSZVlYZzdYcXFEZU1aa0lpbnJkeU9USTlNWTVSbEh3R1NxYUpxVlhlQ1dyemg1U2dnT0FPZmtsMzhMdTBhTHlDQ0Q5SmFoMEoxQmF0SWpkUTQwVkVyYU5HZEJISTVNSDhZUGhNbG94dmhCOWR6dU9EM216Q25BQm9neXh2QVhGS2J1eWdRQUd0d2xwUTB6Z1FnVDFlRC9rLzVEUnJtdTFmcTdTWE0xclZWaTNScXQxRkNKK0pFbmtGSlAxaWVwMS9uUDNGOE53dEJuRmpHQVhRWFJscVZmVTVBWERoOEJwczFNaU5mMnhjTmZEcy9rSlhwMmtPRjQ5VzdYbXBhVHEwaXQrZUxuNGNKT0pKcXJRZ3p2aGtlbWtCbnVBZlg4K3QyblR2eHpmUzBvZzVBZEFHMVdyMU1ta2JEWUFFd3FCb3BpRFVPS2dpQWZlMklKdmQwdFFxM3B0SmFxWUd2emVDd25WQWNVK2wvbmc3dWJGdEZKUC9aczNXc3U0MjJKckE0TXNTbXphdGZWZHZiOS9IY29XODduL1hxdlh0ZmtFdnFHRWcvMmhBMWQ5UXE5YzZRbk9nUGV2WmJHRlpMbGNxelc2enFFVXplcThXSVc4aWtsZWZUVVhlMnRKZWVyd1o5WG5yMjZ6LzF6OXJHa0FDNDhlT3VLRW52K2tteTFPdVdxdTdtblAvYzkrRGYvMFpIeHpoY3V0eFljMmFOZStidjdEdmF4QjhPYnVGNXdkLzJnQmdTL21abXhLMHE2c0hicTZ0THJTSkxzc21iWU1mOTdxK1RjdmZvbGpUbGJULzEvOXRrd0FZT3dvQjhOMXZ1S21wS1ZlcDFUaXNYOXo3NE45YzY0TWpYSlpMZ082ZXpvL2tzN25jMU9Ta0dvRDM4a1dRaG5TWEl5cTdjdG1vSXFycXRsKzVVdUVCQ3E4bDhPZENhRGE0MkhUVDRVTHliQlgzWW1nbUlBNGJjUllVcTd4dkppV0wwQ3I4RWxJMlRkbnBDUEVicVdXZW52QmpiZDJpYjRJTDgrQzJ0ZmY4Ny8zeVRPQ3lGQURaWEhaenVVd201bjMyQkVFUGdwRW14RGZpZnFtMzQ0ZjM3dFBycXRkSlhLZUJkUHkzVmFkSFlibUxwSkErU2EzaWtWckZmU01JOWNMZ2JFdSs3cm1vRFFLMXl1dU5wc1l5WEdKcXFIc3JScjU0QXBNM2tDRjJ3Q2htcytPYjVVZ2dpbm81NFpwcnJueTRXcTEvdUFiVjUyTFIwOVByaXNVdUNKTzhTWVZMQW5ZSURPYlgwUEp0dk9jd2h4aHR4bUh2ci8wYkRKejB5Qms5ZWdoTGdNZWgxVUxUclZhNUIwRDhFcFlCLzkyc2hzdHl2RjE3M2RVUGxhY3FkOXY2LytMUTNkM2pPanQ3WGFGUWtrYncrbkZKTXJtODBkQkViN3NXbTZGQWIxVjVlMzdsTi9Icldka2JvMGNPdTlQZmU5elZJZ0dnVTZmL1plK1hQdityRnNOd21RcUFxNzQ4TlZYNXlPdnBrYTZ1YmpkdjNuelgwZEd0NVVBejNyanVUZ3VjUzN3ZG45MGxMMzFEaHE4Ny94WlM5NUtYT1luWG1ma2JXcmFBTmhmcC9HZS8zc1RKRWdCUGZTc1dBR2pQZWliejk5QUE3dlJSaE10VEFGenJCVUNFV1ZZVDBSZ3pCN1cvV0N5NWhRdVhRQWowYTJQUTBMNmJwOU0yTEdqbUlUSWJ4cC9tTXNLTTEvSkJNMlFUb3lIaXJOSTFGSExHTkRORW1OVTFMd0lYTXZoYmxtR216cmdBTk9Va2o5bmxYL2duL3lKNWd4dFV4eExnc0J1Q0FLaFh5cTdNNTFsUVZzUTVzUGZCejYrM2VJWUxhWU1mRzJ6YnZ1WEw4L3NYZkdUcDB1VnVjbktpaVNsUy9RWTdtaVp5TUl3dnlqaHg4b1JiczNxOVc3Um9pWnVZaU4rbkVCZzltV2ZyL0pOaGhPVWRBWTYwTStHQzFWeitOeGtSYUJJMkRmRlRTSGkxQ1BXZWNVajdPREhTVHJoYUptcVBhYU1yc0gyTUtLVFo4b1lqWGJUbTY4NFUzZ3B4bXRuRmJ3UlQ1VDc5eStEa05DdVBRQUJRQTNEVmhBQ291N09sVW4zSmpnY2VtUExSTGs4QnNHN0Qyb2M2U3gxM3ordnJzOTE4ZXFLQitOZSt4Z3FOd05kUkxWcTgxTTN2WDZoYmgySDNuTzNNblZmYk9RNStURW0vc0NzYi9OQkJhbmpyM0ViaDBkcU00eEVoVElBUmhjZ2V1UklCYWJUMm5qNWQyZ3V1Vm5FU1pTVGthdkFMYUJkbS90RlBoS2FZTGVLazRkczY4VHR0ZEdER0xCT0JiYXJWQU44YlRYR2JFMGMrczRnYm9KQTJ3WmxmK0F3SFpTcVlHc0RwNzM4N0xRRGduNnZtRnU5KytIT25MRlpvdWNzTTZ6YXNmcWlqMkhsM1gxOC9CQUR2NXh1REdrL09yc3BqWTJQdTNQa1JTK3RiVnZkdzRlWWY4elhtWnY2OHhXZjVjckRvYW9nbklaR0RrUERoRWhqZVA1OHZ4SEhnejF1RWZKdWR4YVdKcThEVTllQVgzRG5FNVFWQ1BMNXhLSnRCZXJ1b3lxQVN3c3FsVEN1b092NG5hWSt0NmNFc2w3Y1RQalRsbDBTVDl5dzRxR1dNbHA1V3h4bUJ0SmE4VlNacFA3bWFvdm5VclpLM2hJK3YzeGFZZFQ2R0tIcXpwUW4xVDM0S3YrbDJHZUZKd0tjaEFDb1Y3UUZVTVU2WlE3WlNYN1hua2I4OWFyRm0zWm8vWGxpM0RnS2dJeFlBNUFaVk5KaXpxUGJBd0lDcklpbjNBamdJQ2dVd0xKaVlUTTg4eVlCa01ESW9oWUFFQWdscHhjZ2crb2w0QU1INzg5clZHaDh6Wmt3SWdKemx3N1JUNVVtOUkwQjVNU2ZHUVZGWjZvZ0pjVDBLQXp1b0JIL0daLzZNbXRCQUNLWmpPVmptZkQ3dmhZMlZnU2JqRm9zZHJsZ293cTRUMDhpckV0V053a3N0aG5nRTQ1VktIU2dmU29QcnFRendweEF5Z1daMVpuc1E0VnBFckRHWXFWLy9rN1NuZnUwL3Nwc3R0bnVYZDV0bkhCVFo0cERZQzliZ2prSVQ0UWsvd3VlVjhvME1XTHlkOENXS0lXZnMxMlJMR1hGb0NyaCt5eER2My8xTHZ4TDFVY0RvOGFNUUFOK0JCbEJ4RlM4QTJDdlZldWFPQTEvKy9CTVdLL1RPTk9BNzhjcmxzcjMzcmdXV2drNTZNL0V6ZTB5NTllUFY4UkpVN3FheWxMQmc0ZHNoSjJzMWhaV3kyWHFabGpKK3daQ05NSytDTzNSby8zL0dnTHl0cjMrK0dJdlZ0UGJCai8xSERTcHZJYllSUjQ4ZGxRRG83T2p5UGo2dG9tVmNEZ00rbDgyN0tsUXNNbUZJcnZmS2h0eWpRV2hwRGJSa1hBbU1WeXAxZ1VseWlsOUZSNDJQajdqejU0ZmR4TVM0bUp3WEM4a1lod3pMdCtEU1gyL0Q5VXhOWnFXYkdrRVlGRXhINFVMVVVCRXlKWXNUaElRRUdRYUd0Qmo4NWNuc1lPQnlCVzFMdndReE04Ymx0YmliekhEbUVRa2hlU0YvTHJmZ1p2d0Myb2V2UzJUejErcThqc1hONjkyanFITklBd3ZkRU5pNmZnWFhaNzRVUWhSYVFZc3h3WUpFS0N1RkVQMTVnak1JRytaQlArWkJ2eHFFTEUwVGRCUnVpZnFrRU55aHBRTVExOXRpeTRXaU9lR0Y1ZGsrVWpKazNpLy9YL2hObDMvc3hIRTM5SU1nQUNwYUFuQ1lWdDBzQmNEUC9kd24vLzNwVXdNL244dGxlb3VsNGtLMEhQL1ZpWHd6anIzTmhoNCtnYmVvLy9GakRZK0NOdFFoZlVGRzlsYUExbVIwcnFuWnNleDhEbWFiSFJzN01jNkFOZzd3UGEvdGNXUGo0NjZmR2dEaVdveUVFSmdGWWdIQU4wa24wb0NueUpZVUFHUzZLdFpYaWFIaUsrRGR5WExheFQyeUxRUkFGUUxnZkNRQU9JQUZaSkhNbjlkbSsrYnlPVEdZQmoyRkFQS2hsbUt6YmxTQ0ZtQU9iWkFNZ04yV0s2WVpXSnRiQlBhSnRCRDJoYitTeFRWdFF3SkgvbUJ1TFZtQ2xnUS9oRE1rbExNS0ZaVnBqRm50ZXV4dkNrVFdNekMralR0ckUxMVY1VEZvZkNUaXNwaHFKK1JIZ2FNMlJ2NU14ejZqdHNMMkwwQzdZMTJRVlBrbjgyeVBtZVBNS2h2QklrYlJaNTB1amQ1L3l0dUF5YzZEQURnSkFSQnBBQmNoQVA3UGYvRXJENThaSFBwd1oyZlJkWFhhNjlSRFEwVm9tenFOK0RhYVFRTVlEVDhkVWxtM2Q2UVFRcDU2K2lrM05EenMrcUVCY05CWmtjazRaczRHUjQ4ZVFjUFZOTnNvVFNJWkdZNERpd09KZzA0ZEY4TFIwRW1uUmtOb3M4aE9EYUN6aFFDZ0JqRGtCUUJuTnNSblpvb1I4dlFDQU8wbkFjQVBUOUNOZkRoamFvWlhIRW1xQ0pFMWxHVTZORVVKSG1ieU40clNGUGRDd0pJR1d4c2dRUHNkS0hmRVdQU2owQU16czJVaURReEd6bXM5bXFUQTlBRnNMekk0MjVtbjQ2YW1KaUhnR1FjQ0hPblp6MzE5QzZTSndFTnB3dVdtUi90WVVYbG5oRVhVNzZ6VEdISkxscm11ajMwQzlVKzNJSmNBdzg4ODZRVUFsZ0NvSTJ2VktBQ3N0VnFnQTRPenU2c2JaaWNhcFVQRVJ1S2FPS0xDN0tpcnN5dEZuRlc1bnB5T09MZ2p5cE5Lbm9LN21mS2V5S0RHTWtTd3hlWnNZTEV4UUpGWHZMWTJ4Z29Ea3BRQ2tqVGx6amowREtNaEdoVk5NUzhLeWdWNVVtT2dwSzlnUnJXQjdRVVRrQ3JsUlYyV2lVaGVLSUdDRDZzVEtQWk0wTFJnUGhheDdSOHk1cDZKWnJGYW9LcVdLcnpGeXdlK3lqenN3b2U3WUU3QWoxU3VURmw3ZUpvRXcvTmhNS2JsTy9OS25kMnVxN3ZYelp1MzBDMVl1TlIxd0QwMFBPZ09IZDRMSVh3ZThXd1p3clpyNk9VR2hCaU5oRjhZVGFTUVJ0QVg0NGwvaU5TZVFqN2VqckZadXVOT3RaSDJueUxDWkhKcXdEUW1kUXpSdWtPbUVRQWQ5YTdPSHRmVDArTktXQWQzekpxNlhTY2FNeUs2azVUd1kxdzJ2TXlMb0JLcFJPcEtrZFJXMURXcWJySU5CRnFTMUFMd1prTnpoejFOWkg0ajloczdRZ3YvQnFUYVhWQkVUK2xBK2hqUythUmRDY1FKRU1rWWhldG1DZ0ZxRG1ZYTh6Q1RwbHpwa2ZhOENJUk1ZcksvdEcvYWNhbGdtY1ZYdkJoWW9TZ1F1UGxLazJPeGQ5NThMQjlIc1FRODVFNmNQQ3Jod2ZZMnhwc2xJV2V3YU9vditESkNVL3hBY2F3MmxNd3Q0d3BYWCsreTh4ZWlHcWlMQkQ3TnVwdUNBRHUvZjdlclFVaFNDR1FSQnYwSnFacmJpbm0xeE8vOGg5OS9hUFRzMk4yclZ5MXppeGJwODJjZXVIUXFWWnNzRUtsdDVpazB4MHI3d0RWdFJzMkJmL29YZitMMjdOM2w1dmN2TUNaQUhDdnp0Qmw1V0J3dUFkaHNYUmdVQVpZVENNeXZiN2xCNWE1aGdJUnJNRUkwSUdHa3J0WndhUzRCcUdWbHN0emtxbU9nTmV3Qm9OT1lyOG1XZUppelZhbVJVTWpaSGtCWVN0VnQxeDRWWlJpSmR4MGlRZVZqR1JvS0V4Qzgyd1FicHV0WGhzUWxqWDliSUVTRjJUWk9DekNKdFRmU2NZejV3ZGl5VkJlU2NRTzBSd0VoZXY3OEdTME51SjhVcmpzOTRqaHRZemNFbUhNMmVjZklRQnZ2dVA4WFlOcG5BZ09vQVF6ODZQdHU3TkErakIyTVlJNGg1TTJpWTZSV2FxNndjZC9ERHh6eTBkczMwUi8veWY5NGFQamsrYnZ2dWU4dXQvMktiZDYzRlY1SEs3OXV0R2cwZVAzaVp6N3R2dnZkSjkzOCtRc3VmaFB3NkZGa2xaSEdFaU1lY0JJQVdJUFdvSkpHQTZPdXBqWTdBV3QwdFliTFNnQkFZOHBrTGw0QWNLbkVjaGdRVjBzVjN1cGoyVXdJNkc0Q0w1NjZma05oUEdZUkJXQUpaRndFbWhNMStreVhMZHZBTkIxYm8zUGZRNHg2Z1FXYWZVd1RCS09qNTNTdHhZdVhZcWxwZHlYYUlkSDcwemthWEVDVHgvUW8zSENUeTE5L2szZkZHTlAzQUI1M21XclptQi90UmU0bkgwQWMvT21lUng3OFAzeFVvZTBTSUR5alBUSXlyaDNuOXBSOUM2bEZlUXFZQlZHcjVFeDhjUWc1Y0xpQUVyTk5Dc244d2EyZVBidy9menhSU0pBaW1OMVVzL1pnYUlqUmVQVW9KZktsc0FoazEwRnNiNVcvWHhMRUZNSmlRaFFqeTdJMU1XeTZjRkFjS1JETFl1VVJ6UWpXMUJQYlBBZ3hJTW8vQWx1Y2EvWEVuKytyWmdvYVVUTzFDMk43ZEhYTmt6RGxzbUJreEE2SDRWK0V5NlVRdkVUNGljbktFRHprMWgrY1RYRm5vSTRPbDd2eU9xUktnN2RxaDNlK3FJMC9NcjgxbGhtb3g4bnFaSUgzQzFOQWRxM3hoMy80UncvdGZIbm4zUi83Nlh2YzdYZmNJajhOSExQSXpwNlFDZExUUm8zRVFlZmprSmhZZGd3eGN6T1BnTGdvYWhZNXJZRllhLzNSOUswUTNHYTN1QUcvK3V1LzZyNy8vZSs3K1F1d0JHQVArdmlFMHN3Q3VnMVlyYnZ1bm5seWgvUUJrUVlRbGdBaG1OWHlwdjlwU0FtZ0REeUEwMW5xMXNCaXJKUUdNR2wzQVVLYnhmbjRPa1JMQU41VHoxczh4TkVTQUg4MDdmWVhCckVTd0xlekMxRVFEOXFGOS9RRXYxWnRBcThtWHg4dktvZCtXeUFLYUk3UjZCTkhUWVpZZlNONHAwWU82aEIyL2FYaGNKbWowTWFjWndFa2lkS0c1QTJYam92RnV4QlZOenB5VmcrSWNVa3dlM0Q4ZStzMFVKUW9YdnNFK1J2ZTVmTFgzZWhkTWM0ZDJPdE9QL2MwMXZ5MitjZlpuMlBEZURQemlUMWZlZkJ6UG1xRXFIcU4rRGVmL1hjUFBmUDBVM2YvelAzM3VxdXV1bElaelk1d1VUSSs3QzJGZ3NnUGJraHVPejl2SjlTNHdTYVRuWnB5VzBkTDVjdkZicVVEYWFlZWY2cE54djNXNy93Lzd0bm5mdVFXWUFsZzE0bkQrQi9ESENrdkR3cUFDbFpNUGIxOWNqZkdsQUNBQ3M0Nmdnc3RDTlpVdCtuYUNFTDVYS1hzNmxQK0dRd1VwbGlBQU1BU0lKdmxyYXpwQlFERHFTbEVqTmNnQU9TSFBIVWFqMjBEdTdXaFdzVmwwUTc1SzYrUnZYcm9nS3RQVHFnTW12RjAyOHpuaTNyVStTbTA0U0dWTjFVYnh2ZnhDTm95M1QwdUV4aUIxOEsxZldFTkxEL1NDYWhmOWRnUnN5dGJ5MXQ1NnQvaVdYOFpXUXdQT0RSeGVEdGhNN2FsYlJUc0ZpK0s2SE9Qb2ZaQ21YbmJNTzl2SFJMSk1Sc0Q2VFhHRUk1K09UVTA0QmJPWCt4NmUvbmV5RFpJSkUvbWxBWkM3SC8yd0JLazlQRlBPYXdmdlllaE9qbmxqajcrcUt1Tm5YY1psTkUwZ0pxLy8xOS85TFd2ZkpuZkI3UzFVd0p4elJzUUdvRUhNcmlUT0h2Q1JWRUFrdTFJSnlrUkI5UWMza0JXK0lTYkpzb0Zpa3lXRTJFVUt0SE90NW9VZG04ajVDMUxrdkREOUJGRlhvYkdVWk1DQnRDbUxTNjNhbzNMTGxzUlVVNjAzTXlseTExMjhSS1hYYmthdEVhcGxMVXVZT1V6bUxzZHJCanRDMk1NWUlJeFhoY2JVMGhZOUpvS3EwSGNCVTJBZ21ocTB0VW5KbHg5Wk5SaFduUFFiVjM5ekxCejQyT3V1TzBLTEtkNE81V2Jpa2pEdkhrSGhNSkdqTVo4Y2ExVmExMTlmTnpWejU2QjBEamozUEN3aEVkOWFOalZoazRiblQ3bHFnTW4xVWU1WlN1Um5NSXlXUmZVTzlIZzdBZnJiK3NUODBWOC9NdkZIeXNDd3YyNDRGMFBUU3F3ZXovZUN0TkVvL3d0VEgxc3VRQThIcDExSGNXYzYrNHNpcnBLQmRjSmQ2bVFkU1dFRlQyVnNLenNLSUx4UURRWEwxam9UcDArNmNiR0oxUzJsbisrL1ZsWGJ4amh5b0gwcS9CQWNxYmlORkp1N2NZbTVpZk9IZHpyYXVPalhJVXFIdXVISmlSL2pOY3JtVitDUnhQekUyMEZRTmlFSXNOeWJSRVJHenVpMEFGdFNNeWVwTVk0N2ZPUUZpRVRibCtXTUNoQ1o0c1VuZ3p6SFV5RGRqbTlYMlMyZ3hLbHJXMlM1RmFzZERVd1RCVnFWM1cvSjlnckIxNER3WVM3Y25DZnF4NCtpRHhzMkdVWExiYkVRRHBiNjdKWllacW9HRUlhUUlJdk8vVUcxOTNyS2llT3VmTHhvMjVxejZ1dU1uUUtkTnBWaGsrNzZsblVBUXhNcXB3NzY2cm5ZRDgxNkxKTGxscDZscDN0eUl4aGhMNTNFR3hLTnpUb3FpUG5YRTBFSVRJNjZtb1FLTFRUWDJGakk3cDJadjU4Tkp3dFdVSS9CdEkxV0dUdkh6RXNTU0VHMmZrREN1R3BTU0l4WHZTbi9CTjVJcHlxUEN5b0VrOHE4aENWRWQwK1k1blV1dXcwS29VZzI5ZmNQUkNpaXlBRVRwNDg1aVloVENQR2JVZkpQM2lZWUVpR0IvSzJLS0NaY2x1dmpHSUg0c25MMFNNSE5ldXpqQ3kvNmt5N3kvejIzcTk5NlRBc0xkRmVBNkQ0QUpJenVzalAza2FORE41QTdJeUxvblNIMm94dkhSamMwZXhQb3R0WE9wU2JiZ1A4Z2kxWVpnUWFrcnU5Vk8wanNMRTlvSHBuTUt2V0JnZThSeXZZeGJKOEhxRmNkdFdEKzExbTBSS3BjTWxpcElzVXJwRzRWZ0p0aXg5Rmorc3FPeXFjV2JqWVZVNFB1cWxkTzF4NTkwNlVoUzlMUlNqYktraytQcWxDWmwyd1NQVk1nb3pQY0ZlRWRzQTdMQkFxVVhvUkp4bGZtS1EvUzRXMEZTdy9jbXZXS293TUdjWHgvWmNreXlZUlpsbjZueGlLeS9Cb3JIaFNDa1pnTUs5bGNmVkhPNEo0Q1RLMG90RXpLcnFscC9aa2QxUEFKZ3dtQTBvcnlyamU3bTdYMjlQclRrQUljTHdHeG81SW1aa0paNG9ZNUVQc1R3SGVQMG5tRlZFVzE4d3NYd1ZiR2xNUTRoVUlib0gxOEhWRXNRNjUydVQvYXdHdE1ZMEd3SXdnQU5CeGpZd2Rhd014azE0c3BZUUVHUnpYbFNrL01qN0orL3ZCWUhGZ1p4aE51WDNIczdNOTRPMHQwUStieHY4Rm45YkljZDI4R29PMUJYSlE2Ym1lMVRwck9rQjF6aTFmNlNxUXpsUkptU2EzTnZWQ2xnUkNpZGpWRjRkUW1wQVRkSGFYd1V4ZVBYRmNiVVJQTTlsbWpBRFFqUHpOSkpYM3YrYXlhOVlwQ3BjQTlOUE1ENU4xcWgwOURLc3hGdjM0cHo3QUh3YzFUZm1MbEkycm5UOUhqdU8yZXB6T3A2VnBNTlBTK1RDNTdTZjlSejhMQytPQTl0amYvQXlXSXZLVFB4blg0dG1ZWXgwdFB2ZVc5TUFWeXd1UVNXMXB4VW1ScjQrdnVIazlYVHd3NTRhdzdBbE1HaEYrWWpJbUY2TWp0REdjSHZSTi82WGprTExybWw3cUs0d2NPUlRQL2dDcndHUGgvK3luZjZidjkzL2xYei96NEtOUGZ1Mi8vZG5mL0RhQ21HMEtiUVVBbVluZ1o3RmoxZDhZTTlZR0dvVkRJc3hUVXhwUHdiOHRoVTdob0lKZEVsNmRaRXh1ekUvVHg0SGJPcEttaWc3QUhteVJKUkIrRk5maXB3akJWYXhkTmRNMXJMY3lrUHJVRHVybk1KZ2J3WVFSd0NoTGw3a0t0UVMwalh5Z1lxT0FManV2cnlIdTYwRkRueWJ5emE3YjRDcjdYb09mZWNhdDRkSGs5QjdNY2d6clNiUnRabDYvUmg4RkdOdlpkWFc3T3VwZk80dTZlREJWNkNPdHZlbUQvOENVdkw1TWdKdVErZldibE1yYTNzSUpwcVBOdklJOWprTkRVQURKVXFoY0lReGd2T2phUUtxRjRHVjVXeGgvVVdxbG9UK1psTXpEKy8xNnJnQ0pBd055ak9zYkVqQXRYc0gxeit0MUk2UG4zUlEwcTRqSlBabGJXVVJsc0NBZjVuMFZMdi9naUh3alV2eDF6Wi8zNDJtLzhlT0hFVU1WRUxFZTk3N3ZnKzcybSs3b1c3MTYwOVVyVjYyN3MxRHMrSGYvL0Y5K05uVUdnR2dyQU5nb3pDeWNMVzlTK2NsNFRlUTFnd1FGd2RBWXQzVjZTdURZYlFQSys3RmlnY25wRndtQmhMKzNXN2Z5bDNVd215R1lqYUIvb0dDdFk3QWV4SXk5d1h2UkV5cmdpbFZZMTBjSHFacmhzM0Rja1YrNHlOVk94Y3NFQmxXUEhuTFpGYXM1eFhpZlFFVFMzZ3lOaXdZMCt5RTkvalA4c2hIYlkrUThuSEdldE11bGFQRmZDdDVaUHJEWDVWYXZrMVA5QVVzV1doSDNPaXlEa05hSWZhSmxndUl5bkZHc1h4aFhnM1J5MHRYT1lNYkVFb09wRkVlR1hPWVFyR1pNTDVJTGlDdytuYzliTGlYeGRnK1ZNQkhGNFBNVVVYaHdMNEF6Zmc2TVQrSVRnOXo0dEc0aWlmbjVjZzBRMjRKM293cUZ2T3VHTnRQVjJlRk9ENSsyNjRQRXpHWUZHZlBTTStrdnlOdUhlOTlnODBraTBuaGFzcHhSVWhnL05laHE0Mk9xQTdVQXR2VWFqSzlQZlBSKzE5ZS93UFhQWCtqNjVpOXlpNWVzY0lWUzhROSsvYk8vZzhFWG83MEdRQWFEYWN4UGhnZERreEVESlpoNzVobWR3Z0Jta2xyR0M0U084YVlHRlR2S003dkM2UGFWVGRsOW1MVVllMTAxZ1I5TnRkRXN3RWhJZzcvYXhMaXJZeWJNb2lHSkxNOFZ3SzNiYURNZ0Q4RlJnUnJkaEtrcFY4T2FQTmRpTFJmQTBnZHFENnNNeTJrV0szZEFidDE2VnpsOElQYnhsaWhQV0RnNEk4UkpZV1diZ2RDL2xXT0huVnV5VFAyZHdXQ3FRZDJ0VGFJT0RPYzFaZEl3ZXlRRU5INThQcjVmck84d1hyZ1VXb242ZTVVNmhnb1ZwY01QYkNFa0daRytJY1M3R0RmRXg0K2w5M2IrUmVHS1lXSGVUZ2JrclZPRzgyRWpUbjhoakxBeGFWb2M0MUl6ME4wVzJEblUrcUhSalkrUHVnbTBDOHVwUDFhRlJmYkZOaXY5TFVDRzl5Zk0yOExqdnpoT2hodklqTlNBTVV3b0ZLd2tscCt0L3ZFUDMrZjYrM3BkWjFmSnFMUGt1cnU3M1pMRnkzb3JFNVAvdDA4cXRCVUFhZ01hZ1NuSjZJSHBnNTl2R0JNR0pnamFDd01La0FZaGtpSU9FTE56a0lqWk5aaFFNZnB6UUlVd0gxOGR5blRlVkFQUXJrNXZoUGtndEVWWU0wTGUxZU5ITVdPdjFJWllkdGx5ek9CdE4xU1ZiN2F2MzJVWEwxTTVLU3dhd1RqVUNqTG9FTWVYWUppM3lwd0UrOXJ1NTJkY3FWVFNzZWIrK1h4TmVRZlMrRlFoVFNLdHlvQ2xCNjhSblRzZ29pVEpRUlFuREswaWsxWU54cXlyRFoxeW1mNzVXazZRYWRrZWFrTzFjMmh2a2lVenV4ODhoTEtONDRzb1dLaGRyZUt0VVVVUUVCS2lLeDc3R0JhWFFkdm5lWDNVS3lERU13c05NckNpdzg3cm9KMURtSTVvV3hndHNSdDFoTVdlbVVDN2hEYW5YVkZaQm94WjNnNzhpWGU0amx0dmQxMHdDNTNvTi9RTDgrTjR6ME5yNENQejJndGdOc3FLZWZDWDdXaCs4dktHd24xQUlzZ1FQRUpDMGpJSXpNamZpTXV0U1doVEFnckRWdStCNW5mWGJiZGd6UENGT2taY3hSWkxCYXplZWxEdTdLZi81Vy85Z2Mxb1FIS2JPNFdiM25Yekp3Wk9udGl5ZnQwYXFBOVFaWEdCcUFNOUE2YjhJZ1kxLzBCeGVJTDRCOU1RYW1SUVI1ak4vOUhxYmQ0MFNlbFRCUk5RanZqNTd2ZWVkTWVQSHdkL29lYnNaQjh4empzSjc1YzIzSG5ldmtJZFN3VzBJRHQ1MHhZdzFhRHVuV3R6RFdwaUZsUm5uaGdNR1o3TGg1VE9iN3ZDWmFuNkQ1NlUraDNuR0lNKzJmS1VLM0ZUWjNoWWZoeG9lc1IxYWdMQ3RPd1dMcGp2M25IRE85MGR0Ny9IdmZNZE43b3JycmpLWFFtNjl0cnIzZFhYWEF0cHZsVDE0YU9yQk8yNjF3ODFOcmRtbmFzZVBBQmZzQVV1WnRWdUxnY0QxSllNUTd2Vi9WRm1NajdmZGtTVC9wbFZxM1dZS0lPQmp0R3VPeHM1YUFPOEU1RHBtdzhCc1VCYWttamhZcnNTdENkcjc5RFBWa1pqSEl5TjhYRUpsR3hQcjZWRFhzb1RBalRUVDRMUUlTRy93b1pOTHI5b0NaWU4wRUJPUTdEeGpWRG9WNEpqU1JjRXNlemhhZ3FsSC9WM0lBdzNqVDNXRTJVcEZNRFl4YndyVXJoVEc4RVlacFVaeG5oaE1zc3NYK2x5aXhjclRoNU1WRmk0eE9WUWxzd2lMR05RN2hyYm83ZlBuWU5tMDlzekw5bzROTVQxYjQzWmhXZXZ2Y0U1ZnlndG9JcXhlRzdQRGxpZ3RiQk5VZFlQdmVjbjNaMjMzS2diV0VrNlBUanNUcDQ0NlVaSHpoY3kxY2tkMy92TzR5OHdqN1lhQUtwdUpodEJhbnVybWIvRnJLKzRzVHVkSmswV2x0WUtrdnNGVWRxRVg1S1NlU2Z0RVJyYVZvT2xDZlFEY1lRRUF3UjJBbDhiQS9CQUMyZXRMRG9nQjJZUXJjRGdCV2tRWTgyVlhicGNneGFqeDdLTmJxRWhneGFvajQySldjbFFZWERTd2xlUzMzSDdlOTE5OTkwUHByOVM3MlNJWVJINUVORDY5UnZjKysvOGdQdm9SKzl6Q3prUUZjYkNvdjQ4Qzk0QndVVWZlQ2wvYndZaGJHRm1qLzRTZGpHclp3UUpkL3pWdUFZK2N0aFZqaDdSK1FadTZQSFdYdVhRZmxjbUhRVHRlMDBhU01hLzRvdDV4TERyQ21RU0NLd0s4enR5eUZXUEhIRTFNQkExTEpMWmVSMHNZeURrbEpMbHBzVXp2OW82bFQ5QklRWjQ3MUJYUlF0Um1RMzhUWXRrR0dkOUZNY1RJd1NOVStNSnhEaThKVWpWdndhMXU3enpKVGYxeW90dWFzZExycnA3aDhzY09hQzdCbndUbFJWVEJXVm1nb29STytOdzd4Y0gwUzlKNWxYdHRpUHBWZ21qTXNZUXg2VVYyWEs4ODVaMzA5VUVac1U2OElVblUrWEtlNzMzTkVzQVg0REFWQ0l2QkdKbU15RkFlOG92c3MrQ2xKNzVCZ0hENVVRZ2U1dUpYdXFBd2RlT3VERWplOW5zVkpsaldDZXJlVlFsMnF5eFNHa0VYMUJvWndHendiNDljTU04c00rSWgzd3c0Rk8wYTZlcjd0MGp4cWhpWUxjRHIwQnRvWGIyakQ5eWE1N2RQVDN1b3grNTEyM2VzazNYWnJtbFJWbU15RXhpeWRLbDdrTWYrb2hidmRwT0doTGF2T1JHSXhPQVFwMlpJWGU0Ky9yNnNDNjB0endwakVGeUFiQll0VzJtbGxhSDJad0htMnJjLzREbXdqMFF6c0w4NklTSWRoQy9Ra00zNjA0aHlRRzNBRFBsdW5YcjNmTGxLeURjNG43aHJkUUtoRWlkSnhKSmZDRXFsaXpLUDBGOC8yTmx6NnZHYUx3elE2Rk1vSkJrNmxCV1E2aUYxWlVVbG9iOG83L1M4SWN1SDBjdTJuMjZTSnNGNmZZYWhUQVBSM0h2ZzhMcDlLREdLVlh3RENaS2xvZ1BvaFZCZkJtSjh2SHdsL0N3Y3FnczlQUCtjYkQzcHpWSmZIVVo3OFpFOVRTVXo1OVYrUmlMdit6Ym03WnZkTDJZZXhxcHM0VEpobkV3TWFGZTBVYWcrYmJBalRmZTlJbkJnWk5iVnE5ZTZSWXZUaXdCMkRBd1kvWGUzTE1qRkRYaERwQXRkalpBaWFJNFpzYlhEM3NCRWlhKzQzYS90dHU5aHBtSTkyalZhUHEzeGd1ZFB4TkdNT3ZVcWxnQ0tBOEFBNXVIZnlDVmRJeVdBNUVxb1FZWS9rejl4Qi9VZmpFMnl1UXY2VUVIUzQrWWZKdlNtZzB1eS91M2ZrQlRWWDNmZTMvUzljNmJCMEhJcDdtWWhXcnJJUStWWDNVQWhVZCsyZkZySUFENC9NSWtseWhnbW5CR244eExjQS9oRnF4aGJ3VnBHWEgxTlc3TDVxMXFzNkZoYURnd2xUL0t3ZWNUTk5OeFE0ekxHZVRCdXhka1ZKNFFySi9Gd09Qc2puelpEeXFhL1dBR1JYb0k0YjdGUzl3SDduaVB1L0dkTjd1Tkd6ZTdMVnUzYWVuQ2g1Uk9RS1BLWUFsVFBYSlFaU1BZbHRhZWZqd2w4dU8xYXBqdHFsanZjaStBK3hJSXNuWWdXRzdmMk43SGwwbk5GUG1GT0RTWWxzOENjQW5BTmJ5TlkwNUFYdlhIeE1SeVpDSEFzdEM0Nmx4U25UaW1PeGdzSThlYlNzbjZNMHZrUjc5eENMRjVIQ2VFQlFGbWFYREdidHJzdnpYQS9ObnQxM2hIakpIRDBMalFkN3hkeTNJdnd6TGw1Kys5MTNHN0VrUFhWUUtoYTArY0hIWkhvR1ZOUVVDTmpaMmZldnA3VC93eDgyaXJBU0EvRllnWmMrYVBabXhTbzByZXBBV2tLZVd2Um83SkdqdG9BSTJ6UDJkMmFnQjI4TUtJSHpxSVozdHBBSndsNkErVDYyam1HeEFHa2t5Nk9iamFrdFU1SmtzVFBIajdMN3RtUGF3WVFRcnlNZkFqazBBbVljQzFBemUvcU5veWxjV3R1NnV1dWthenVURWl2RFJ5TTI3dzFJRDd6bmUrNWY3Mjd6N3ZQdi9BWDd0SEgzM1lIZVp0U0JYV0UwQ3Q1NmFiYm1aQ0pNY2c1cWs3TEZIQVZkb3Z1T2VlajdsVm1KVmZlZVZsOThRVGordDlDZU5nN050dXZjTzlGK3ZHSUZTWVhxZmRXRElJR0s2N2VaQklZUkJzMmM0dVBVL0FtUFR6U1FUTGduNFpkeXNZdmdmQzdPKy84VFgzMTUvN1grN0JMLzZkMi9YcXErNzY2My9DOVY1MXJhdFFvMkxScmZncHlNdjdoN1ptZWFnUjFNNmRsZmJFUzFJRWhldUZhMGVRTzFqa1kxbUdLR2czamoyT0xZNFptaHliOHVPSE5PaEdORDdmVWVmSlNQeXhYVTNENVJPZ050bElZUGp4eit1YkJtdkMxSzVvWTBUWGppekI4QjcyM3g1OGJ3U01VSFFCK1pmUG4xT3BtSnAvNjFZc2MxMlkwanZCMVIyZ29qYzc0UWNSaWlUTlYybXJBV0F3ZmVMVTRNQ1dWYXVXdThXTEZscGxrVUV6MDh5V1dPYTBYd29NNTA5a04xTytEV2xvcWl3VVRyNFRyR09zSTNiczJPSDI3OThmejk1QTFIaXdwQnF5d1JVd3dwa2MvWmg2S1NnOVlNbEFWZGRCR2N4TU1jT0Ntb0NBQm44K21KUHBndnA5NnBUakczMDRhSGhiNmZiYjM0UDZWTnpVMUlRRUg2dTZaODh1OTdXdlArWk9EcHgwNDFoYjhtdEY1OUhwZTEvYjQwWkdSOXo2OVJ1eGpEWm01V0R2NzEvZ1RwdzRZUnVES0ZlR0x5N3Q3WE1mdU8wMlY0TFc4ZEJERDdxOVdLS2NoaW85T0RqZ2R1OSsxZlgyOXJyTm03WkE0eG1Cc0JtRXlyN0liZHF3MVowNWM4WnR2QVphd3JKbGJtbC9ueHNkSGRXTE5NbUErWTFiWEFZejRiWnQyN1ZQc1hidE91MVZEUE5CSUJTOHU3dlgzZnl1ZDd2ZEowKzRIY2VQdWFuVFEwaC9Ib0xyb0RzK051NkdvVUZRalg0UEJNOHBsR1haMHVYdWxwdHZkVmRlZVkyYkI2RXhQRFNrOS9jUjNPL2dCdWlONzd4SkdzU3ErZk9oaFN4M1E4aUw2dStLbFN2ZGRkQm9CdEdlMUc2b2NXemRzbDBNZkpxYVJxTDlrd0tDTmpvTDFBSUsxSGpnNExoQ0g3UHRxWTBVdUsrRGZOQ2dpbXZqemhncGpFSEYxeGkxL0NlbnltcHJuaVhnc0JBaVM3Q21QUkt1QkdMZitwSmxMcmVPaDZkOHVlbUg2NTdic3hQTE1YNUx3bmp6UGU5OGg3dmpodXNWajJBT0lUNDFnTU5IanVrOWl1aUxVek5xQU4wOWZPY2VQd0poVE5XSzJzMzRiUW1ORjd1dDhVak1SK2NNSURsMU94R05Ib2d6dkxTQnhHd2ZpSU1rbVB4OFZ6Q1pGMkVkbzkrbzAwTEh4VzUyYUNQQlh6a0VzSmZvZzdTREorMmhIblJ3UUNvMlcxdEk1MkJ1TVB1NmphNENkWkpwZUIzbXkxZXUxZXNWUFFiTXV0TC9GR1orenRTc3MrV0VqSlUzZitwdTk2NVhNWnUvUkErNXc5WFc4S3k5ZDlWT0huT3IxNi9YT3Z5NTUzOEVCdVVkQnl1Z0JqVE03MzMvdTJyblRaczJ3eThyWnJ6OTlqdmNoei84RVhmRGxtMXVVV2VudSthYTY5eFBmK3dmdWZuYzVFUWI1MGJPdVh0Kyt1T1lKTjZ0c2pMSGQ5MzhidmNocE9HeWhJS0NMK0ZjQTJaZWlldG5JZkM0Vk9HbTMrbDh3VldQSFpiZ291RDVxUTkrMk4yQnBjSW92OFFFNFhMVmxWZTdqM3prWHRmSjl4Y0E3M3ZmK3lWTXFLMGNRcnZ4aGJMdjJiRGVyZHQyQmE1ZGMzM3ordHoyN1ZlaWZQZUQ4VHJjZ1FQN3RiL3gzdmUrMzIxWXYwRk1TZEpqNHl5cG1weHRiOW90MzViTFhmdFNzYWoxTVFVT0QvWjA5dlM2VGo3Rk9YRENsaVlvaTFwWkZ0aVFqbmw0cDM1NHk3WVRQTU82MDhzQ2FTR1lPdUhoclZHd1FJOUE1aVRsVWh2QkJqSjlIV1BGdS9TL2FYWHFqSS92YVFQN080RFpCclFWQUpsc1RybkdETnRNcGdLQjBCR05ZVW1LWitxa1g5cE5TaTBCcFBxRDZSUE1UelUvVXZWVFFzQ1luMitHMVN6bEJZRGFCWTJaSW5hY3lqTWRCUld1QlZCWHFkZU5aL3BEZExWYUFnbi9ITmJwVEF0SjV6M3B6Um16MHc2U2pHT2RpN296N3M1WGQwZ3RUZVVGSkR2VkJFQXlSbDB6dW56d3cvck9oOFFuQXd3T0RzWnRvTGhFM2ZIRHA1d3ArUlVsZTV5WXJ6bkQ3SUpCLy9rSC84NDkrS1V2dUc5ODgrdmFaOWk4ZWF1YTVRWXNKZWIzOWJrSEgvb2lsaWZmRmozNmxZZmR5aFVyc1pTNVduWDQ3bmUvbzJYSlhWZ0tmUExqbndCVDMrZXV3U3lmdzdYUWlTb2Z4dzN2ZW5CcDg1MG5uM0RmZnVKYjd0SEhIa0VkNW1tcHdNcFNxL2o2MzMvVlBmNnRiN2dmL3ZBSDd1R0hIOFFNTnVLdXdKSkp4NUo5VFo1Ly9sbjMyRmNmY1Q5NDV2dnVrYTg4SkwrdFc3ZkxKT096MWxIOUU4VEpoMjFLNXMxejFrYzl0Uit4YkxtckhEL2lHNXlONlNlR3lLU2Y1YzM0Rkh3OEdxd3pCU0FyR0g4UVYzOGU1aFZaWThCbC8wMlVhYmo5WjFDSUx4L3FCM01STkxWMm9JSVRnVWs5MmdxQVFxR2cwY2VLSnBsMFprTDhsRUR3NlJ2OUlqZG5maU90cFdTU01QTnpMVVpCUU9iM2dxQ3N0VCtaM3hoZnpBL0dqelFCa0pnSWlEdkt6R1RuelVRQ0dvMjJpSmdWVEQzVVFtQ21VVnltWVloTXduNWxCT0t1TzVZVGZJUTRCQWQwWVUydDlnamx3OSs1cG1jTmtuc0xaaHNkR1ZFYktqdC83VEJ6aHBLRU5IUkZLckNDYUxmWmtkZlVBTTdaZHdYWVRoUXVGUWdreHVLZXd3UlVUWDVzbFZpSm1YRUlTNFlWRUFqYndHUmtORzR5Y3UyOEFtSE1kOS9ldmU1eldQdC82MXZmZEs4ZDNPOFdMRjNtYm9XcS9pRm9Dclk1QzZBY2UvZStCclVVNmo3TEJPTDVEUzQvRm1JcGtnVkQvUkNheTNuVWs1ckJ1OTk5SzVZTjcwZFpNVk5qTE9RaGhNVnN1TjZ4WThlVUpmT2dKa0ZWbHk5TWtSZmJ4cmVycWk3UXo3UUFFc2NaUFRoMnltaVRXbmUzcTNLekVYNVIzN0N0L1hpMi9IQmxQakFFb1pIRHRmTGNMRVQ3MmNhdWhVZlhTemhpYTdCWldjeXZHWFgwVFRPczd3aExsM0ZybGpjZkZaNEpiUVVBMXB4NVpod3piWUxZSUpIYk16aW8xYXd1djRiNEhHREJUdE9XQUhTRDRSTmFRS1FCaVBuQjlFRUw0T3lmMGdSTUNBUmluZ1M3UU0zTHpycEFDckJPYnliZTk4NnNXZWZxZkxLdHAwZHZ4NUVKSm9rT3NYaml3UlkrQUZORkdpRndwWWR0R3NFU1gxWXpvOURncjdRK3ZYWWtOTmhvTVFPRk53STRQcmlYd2JCRlBNM28vY3hpZGw1bklaWUlGS3hVazFrM3B1ZlpCMTZZZjZIdndvRGpua1VYQnZxNlZXdTBEOEhiZkd2QmpFZU9IQllERTR6TGw1dnUycjNUZlJzYXhOKzgrSUo3ZWQ4K3R4VHIyUlcrTEFMaVdaR3R6SFV3ZEFXWDZVQTdGaUJnYnZ2b2ZWcCtyRnl6eHAxSDNQMFFqQlBVSU1UNE1IaEFpTVhDRC8vOHYrVVg4c1lmSCtMaTNrVis0MlpSNFlxclhXSDdWWHErUHJ0bHU4dFN1NEYvRFhYSlFtdlJMVXFrMWJqRVdBeU1iN2VsT1Y2aDhpUFAwdFhYdVJMeUttNjdFclRkRmZpQ0dKVE5hZ1BRNGgxbURSN2VFL0JWdnlDd3J0Wm1ySzNoMkVEODNFbnNtN3hTTTlvS0FLZ3lFcWtSZytOaVlTQ2txRkVZek9DT21iK1pBdU5UQ0xDaEk3Y1lQd2lCSk9PSFdkK0VRQ0NtVVVPejVpaDNZR29qTVBBc2lBT1laUnFmR0l0b2dpWm1SZHJId0ZoOGYzeVpqTW8xV2srM3ZTS0xCMkE0dzVGNEJwTkhkenU2a0NldXJiVmhLQmRiMTNDT3R3MkYySFBGOGdTVENNa3VOYXpHMmpjRkpPZGFPVVlHYStJRGJueHMzRjJ6ZmJ2cndmSWd2Z1F0R1hjTkJ6QlU5ZDI3ZDhtSDdjaytZemlLTElTMkU0dWhYYmpKT0lYKytPYU9WOXhqVU5sSlg0WDYvY3d6UDNDdnZQd2lOSnB1OTQ1MzN1ZzNLSEVWekthVnlYRTNBQzJDTTdhK3ZpUFVVYzhWWWhoRkJIcFdyWElMc1J3NWYyclFkWjA0NnJZdlh1eGUyZkdTK3hxdThmSlRUN3BEenozamltUnMxTFA4NnN2U1dPQ1VQS0FzbEpBS0ZBQzc3cnp3Y0pFL3M4RjNJNVIzNzNEbFhUdmMxS3V2dU1tZHI3aHhIdXpaczlOVjl1N1IyNXc0NWptV3hQQWNoeHFuMWhZRU5SQjNZSytySVM4ZUJpb2pEeDV4NW0xRk5TYUkvUjMrek5NamhDZThEQ0ZlVEZXK3NZblZhU1QxVXd5V3J4VVlOWTM0b20wRkFOWkVldDZUekJBWWxMTkRFQWl5by9SeFdLT0FRSlVUYVZ1NVk3czFjREJqOG93UHV3a0FrTC85RjJiKzFocEFlZ2x3TWNUQnkzd21NZEFDY1VhVE9ZN0JoelhpdVplZmR4TThDWGY4cUtzZVArYXFKOW9RejgrZk82TmpyU3FYL3czZE1EREl6NnZTQjEzbFBUZHYyZXFXOEswOFJMSUhmWGdCZ3VmbXF4UDNodVZmMXl5c25GRUg4a0FaYmZpREEvdGRGNWp1N2c5LzFGMEpWWG81Vk1YVnE5ZTYyMjY3dy8zRTlUZG8xdDZCd2FzK1JWdGJHK0N5L3JxYVdVbjhCKzNBOG1BQm1QVFdGU3RjUDdTYjNubDl1cy8vMFh2dmMrdldiOUFHOG5YWDNlRHV2ZWRqYmhObTFWV1lhVGZXS3U3NjFTdlZYd042a1lyTnpsdzZmT0N1RCtvVzVWck12ajkxMjN0MHV1M1pIejBqd2M4eFFRMkZiYkVNYmY2VFAzbVhLNWFDZG9ReE5JQzJRNkdDdXMveWlXQzNENTVpTWx1MlFyY3dkVHdaZmFxZGZWQUdZeENsWUVhV0JsSkVkZVdCSjQ3WHpoNHpOWGJOdExnWlY4U1NKb2Y4c2hodnBvWHhxOC84dnFHeEZHTHJMd1ZMcm5wN3E0ZTVRcnNIQ3NqNThXeGd6VmhZa01ycnZZRGhjM1lzbkVna0YxaG1IdzJJYlcwRmdBbVhScVlHUlV5Y1pQN21zSm1ZWCs2VTMvUkNJR2dCMUFDaXpVQnBBL0hNSCs4QkJFa1lHdlhDQ1Q5V0xwcEo0aURnbXAyREU1SVpzZlduSmtkNE8vQllhNWJuOXd1OGU1Q094L1UrYi9YRi9uWmk3NjQ3UHlqMVdrajA5Q0lJa285ODlGN1h5OXVSQ2ZBMklXOGRKc0hCdnhleisxZS8rcWphODFZdy9UMGYvWmo3MEFmdmRodldiY1RzK3JJMjN0U2ZkYXgvMFg2c1B6OG56VWRRZVUyV2ltdHE1czhxSGp4MTJuMGJzLzh5TU1ISFAvNlAzU2MrOFVuMzdsdHVkM3QyNzNiNzl1L1ZMY2F2ZmUxUlZZZTMrbjdxMnV2Y0xlKzh5VTFDYS9yNkM4L3IxcC9WdFM3Tll4UU05OEVQZkFpQzRLZkVVRi83K3FPNlZjbGJqNDgvL2cwMGQ0Lzc4SWZ1Y2JmZCtoNjNIL2svKyt3ejdwemZoemt6UE9RR1FSUG9jN2FPV2dpRlBIYnNxRHR4NHJqTGNHT09oNWtnaUxrUlJ0SmhKODhRUm5iMklROHlCczY0TXE3REpaN2FSV09TbXFGRXROMHR3REltZ3p5bGNhQWVHczlvWDZvaEdqOEJWazIxbTdmR25wNzBhd0VwS0EySXIyb0xKWTJBNityT2lyd3M3SFRET3hxSWtFTEZsTVdiSGczT0dMLzVyei83K3k4KzkreHZiTm0wem0zYnVzV0tpZEl3WTJNUS9yUGlhVHVkY3NuZTZJWk5IdWFPMGFvWXNWOVVlTy9uMjV6L2RKbUQ4SDVQZmYvNzd2a1hYM1RkR0RpbXpyYUFUOUlPWjlIb282UGNCTU9BQ0FWZ21XSE5ZYzFYZ2VySW1ZUzNTdm1aTTcwOEFvR0tHZitra0prM3orV3dadVd4Mm9LK21kaWpYV04rRkRSYktyZ1B2UDh1T3dISUg2YjNaVHh6ZGhnRGZWaHQxbzFseHRLbFMvMnVNemVnK0YxK1hxc094dmloZS9tbEYyR0hHMzU1cU9LRlRWdGRCU3F1NVpWeEM2NzdDZGVMSmN3VVprVE94QnpZT2VuT1dReDB2dFRDNlQ3K0ZMOVloRUZPOVpnTW9BeHdmVjZMNitjYTZnQjFTeHVZTE1jNW5wejBNeFh2SlBCeS9LaDdOOWZhaC9kRGU1b1VsZFp1Y0RXKzlSaGF6eWQvL2xQdTFWZDN1dTgrOVIyWDR5ZmpObTF6RXp0ZVZEa0NPTHV5cml5N3ZZTGQraE1qU016S21qdG9RL21Ock9mTG1veWlzY1UyMklCMS9jQ0plT01XWUIzRGpGZ3NaTjNDZWQxNjRTZjNtcGlTeWJtaFdWdXdHSFhJdXFtamZPRUdoWWVkMlNodDNPSnlFSWoySUJlRUpTY0tFTFhUc2NtS2ZaQ0d3a0R3WldtQlVNdzA2S2xhUmNodHU4cmxibjIvZHhsWXp4TlBmdE5WaGdiMVVwQUszSi81Nlh2ZGIzenlIeXZjOTFnMHc3KzBZNzk3NHNtbk1hNkgzZWxUQXhOLytCOS9xeHR0VUF2aHpXQkRJd2ZOZ2cxazZuK3djK1pvQ0l1SWpCN2JGUzYzemFReGhUaEdiTkNrRnFEVGdPRnVBTFdBeENuQXNEbW9wWUEwQW44U1VJMkxINXF0Q0QrcFAvUkdrdUFGY1BhVEpRS1BzR3FEekhkdzFJbkphT2trRWVvY2hCaEVlaU5RQTRaNys5d1BmdlJEN3lKOEpoZ0wvTXJ4dW5VYjNQb05HOFg4aE1wcE5qcmNnZE9uM1lzdnZ1RDlHUUlHV2JIYWJqdkN5VUZQeXhCbS9DTndIOFdTaFcwVjVzRncvb0QxR2FNS1BENm1KeCs1aVprRTMzSmNIMEU5b0Nrd0tXZnBzenpZNDVtZmpNWHJNMWVlUkJ6RDlZZUhobldRaWRmbk9weFA5dVZLSGNiQVpFUlFBZXRwYnBKYU9mR2pLbGc5RExHcCt2a2dSWmxDbjJPSnhYY3UwaDNJWVFMZ3BtS05CNk5TNFBLREVkQkd2Q0QrUS8yWmtNeXJzVGg0UXZYVit5RXRtY3RCNjhyemZaRFFVTUttdGQ2V3BIRmF4dElSQWtKM09Tei9KRUs1QXFWQkQrdTVZRGRDMmFReHBjSGxDc3RCd1cyTmxuRTc5dnBOWnNCU21zbFFnOWxRejl3RER6d2dSMXNCSUFtQzFLYjZCdVlNekdwbVVoREkzUkEzeGZ5d3g4d1BNNUdPbE56OVoyT2EydzRCQllydkNBUXlway9kRmFnazdnS2cvRGFvV3hFakJESkw5RWMzbXNjR280VUltSW4wRU0vSkU1WU9pQnZYNEwwdHorZ2lIckR5eWJsd1JKZHVoZmFCeWFCZXYvVGNEOTNUUDNncU1YdDRoQ3dTV1VXQTM2dTdkcnB2UHZtRXkvaU5LNVpmZHlWUU9MNmROd2sreUVNQmxvZHc0T3pLcy9uMittOEVna0w3RUh3aWp3L3RaRENvRlV5Tmd3SVF3b09nOE5BbUhFZVJiNGlvcmFBWmNaZThmZ2FNcVkwNlQ4aTdCdFU4djNxZEd4b2F3b3gweHVVb0VORjNkV2dtVVIxOWVTTEFuM21yYUlvakQ3blozM3lxa01JWjZnZ0RsVGEzZHAwZE9mWWV2SDZjS2QzVUx2alVKNFF5K3haOXd2eTR3eCt1VTkyN0MxclVGcVZsbkNJMEdHNGlrdmxKYktzd3Zsa09ubUVvVDAzYUpScWd5OCtBVmxHNGYyUUZTcVBZYTY5cnM3YkYwdXdFeHFWSHFDbEpWVUY2OVkyeWlmTnFyd0dnVW9SbWVGUXNNSHZhREdGc01MTWI0NVBNYm00Zm4yN2E1VGE3cFdsMk41TFVMQzhjZ3VSTmFnbEpZajRHVmIySlVuOHFLM3lUVVdqUXo2dytFQU5xMVdveEJRcGdqWXNCWklNcWpTZ2RRVWVVT1FEQlZScytyVjFtK1pFSitacXRJNXlwNjVqRm4zZGYrdElYM0ZFK0hodnFrZXpOQkhpNDU2dGYvWXI3emhQZmN1V1R4eUZJK3UxamtTaFRGZ3pHMlovRlN4YVJkczVzUE0vUFo5anRQbnF5eEtGTlFDenJ5V01xSCt2Si9RUzk0Z3hDT0tvVDQvbjBTcVArcnV1ZEJHVXduMElWYk1zSG1ucFlDdlYrK052ZjFPWmpidVVhVnoxK1dHT0VZeVBrYTRibGwrbnMxSG8rcm9yTjRocExpb3Q4RHgvVVlTc201RU5MUEc3TTltWVlJVU5wWkJHUitWRms3ZlNUeXRRMFlmS3JVQnF2STlDR29HSHdRVEMrcjZBR2UzbkUzZ0ZJVFpRVGtXa0JOU3dIdTF3UGhCN0hJTXZYRW0yOHB3TWZycXBPSk8vdUdBb1VuT2kvTUE1UG5EcnR6bzJPdXpJdVAxbDI3dng0M1owNlYzUEhoNnR1ZUlSZkNqWXRCMlhlZC8vOTkydVdhWFhDUUhqWExiZmVPWGppK0MzOS9iMXV3WUw1U21qRU5veE5XdlRuL2Rpb1VUaitGQjdpS3N6c0ZzYjQ4clZ3L1FlN1lqUzdhYzVBeDArY2RLZE9uYkpISCtFV3ZORWFGcGlNd3Mwd0xqdUNKeG1HcndTckhqMXFicEJPajJGUTZvczg2SUNrTUdqWnp6NmM3ODR2Z2tIejZMZ0N0SUhKbzRmY09JUUNCeE5CZGZrMVB0SDQyaDUzRmpQb0tHYWVjNWkxejJMRzVNYld3WU1IM0ZOUGZkZTlCSlgvdkQ4d3hLd3pveU91Z1BXcEhIeThWcHRIdUY2cWZZekpxbERiQytzMzZrTWVGY2F0MnlCV2UrR2ZkWkdnSFJ2UjY2ajRtQysxSHo0R3JTYkZqd2xuQ21RS2NKc04rUkVVbG9ISFZNdFlPeXRQTmFLL1Bvckc2OWZBUk5sVmEyVG5vOEExMUkwUU05SFAvN0V1aGEzYmRROC91eHdhRHBjblk5QVVCTVd3dWpOZmFEYzVQcTBJYlNLL1lxV3I3dDluMFFBRUM1WkNGdFV4cDNyVzNCVDZlZ3FjVTY3d1lTQUtBekFLL0NrSUttamp3alhYWXkyMndFM3NlQVV6Zk1VRVFJZ0xvdlpaN094eWk3RmtDSDFpVncxWE5xUmRNOEZpOHhOZjJmV2JvTlgxeWgwQjQyZms0RjVJZFBZZHlnbkJ0V1g5ZGZDZTU4Nk1WTjNJV05WTlROYTVWZU9Hc0VRY2dERG51SjRZR3p2NTlQZWUrSy9Nb3EwQXVQbG1DSUNUeDIvcDYrdlIyMm5VYk94QTJsSW1EZHI1anovNjBUTmhwejh0d2Q0WXY5a09rcDErWm8vSWh4azFoSG5pbTA5T1FSb1d3SmgwcHhHN1V5RU4wY2lNM0Z0UWV2UUQzd2prZUdLdFdKUjZuU1ZoVmlqMDkwRVM5Mk50Mk92NGtKQlViM1FFTXZBNU5VQ2pGUTNQTStkWFh5LzFkeEt6OXpnLzFwRktrOUVkamRPbkJ0MVJ6THFIY2UyOVAvcWhPM0xra0R1SkpjZ1VsZ3ljdmFoZWgxR2x0L2hTOVFZVDhMMEVLTHh2RXpJb2lDYUltaHRHTnBnVTB3UmZmYzd6QWZQblE0VmVJaWJYc3c0TEZ6cTNBRVFUZGM0dVgySFA2UE5jQStxck4vZndzL0VRaWhrUzMrYUQrSHhsdUNzV2xFYXZROWMxclhGUkVycytCeXp6eWtNRmh4Q3FncWtkMnBKdkdNcnFiVUQrN1VKMEwxamtNa3VXSVNYeVlkdWgzV29EZHRnb1FOWDMvY2UzRlJldnZvNVR1cjJlYlNIcjQrdUY4dkZ0VFNUZUdjaWh2clZDeVUwT253RmpjUFlQUkdiaUdRQnU4S0hNQzVlZ0haYTZTaWJuS3NWT1YrMlo1MnA5ZkJNUWlHYmZRamVWTDdyRkhTVTlqOEFUbW1td2hMNlRBQTJCMk9uUjZHRnUvZUludTNTRnk3QWNDWERKd2xlQzE3SHNSYU9xZmVkRHE5dkdaWXJYaGptbVNLY0hCOXdwYUg3akVPamo0Mk4vLzRPbnZ2TUY1dEZlQUx6NzNYY09uRGh4UzkrOEhvd0QrOFllKzFFbUkzaFRuYXQvQ3pkL3Mxdkh4M2IrNlQ5cHR4Z05kdjJtN1phSnBaMkJUZzZnc2hRQUJiNXRoNm1aVndJcFJ4SnhYTHUxU0FHQWh1NmZEOVZ5TGRhelE1cGQ1QWxpNTJSaDVzbDRHTlJTamNIOHVmVWJNRWdIbXJwVW9DZDZueHRocFVWOHJWZldUWjAvNDhZZ25ibW5FY0gzUEEwKzhVVm0wTVliS0dnYjRidUlHazIrbm1SQ2FpdDEzbXVuWDJNaGZMNEVQK3RWNDVkOXVLSEZsMXhBMFBCakoxVVFkK21ySUxxNWVhblpIOW9IMSsvVUxQaFVJSTgxODNOaVNhSmdwTHF1ejRJaFA5WkFtbEZVRHJhYkx5dVp2cnNieTZxamVzY0FOeGYxOWg5b0J5SnUza0U0OEZOclZrZU1jNzZxalNmZTJQN0tOc3BZNE1zN3lPZzhlOEVYbzJpekxoREtWUGRFZXhWYVltWVpOSVh6STY3S2pVU3EvTmExYWVKVnVQZUI4VEQ1eXN1dWdqWmcya0JsdEZOM3JZTFpmN0dPTWNkTDBFWTBsSlhsVDNrRmg5VktydUFGd1pmMVR3UUdzTzhuVVk4SzJrb0NBSVU5Y1hyQXZlY25icmJiNXR3VEUwMjVJZlR6RU1MTzhUeEtOdjlIVHozNStIUE1nd3ZBbHFCYUpCT1ptb3JIbVlPbVYvMkNQMDFKZFRLZnhZblcvZDZ1ZENSdmovS1JHZXhJTTQxZDEwdlk0L1ROWnBMcEE2VWRTY1FCeVdDZkJjV3NQUmpDVzJuRmt0NExHSWpmdkt0Q3RlSXRwaHJVUGpJR3Y1TlhPM25TWmt3a1QrWXB5QVBYQWxOenR1TDZVZ05hU0kwR2dlVmdmZmphTEtyTTVtZDFEUG1HZXhWMXJQL3JXUFpVZHU5MHVRMWhzQ1N1bnNqZXJFaEhyUVB0WnFCdkNERklUVjY3M2xWZWV0N2VDd2cvcFJGQllJbUNHMXJUenBmZDFEUGZkMlcybHpMdzVCRlpVVTdlRGFuc2Z0VU9TR0dOcSs4TTBndzBDY0t5aHJkY3VVU29RbFBpMjRIQ09BdjlIQUZsemE5WjV5cXZ2S1RiclJsb0lZMUlwOEFNZitpQWhMdTVZa3FDV3MzVUM4KzZxZWVmMWR1V2t6RlZGc3kwOCtmMzZ3UWtHUzhJUFRGM291Nkdaay9HUy9wR29ZbG9WYXI2Uk1LUDZJQzJwd05NSkdSMENrTDQ2WmVlMWJjS1JrYlBRUnM1NTBaQVBNWEtDV1ppY254OFFVL3Z3ejc1Tkp1QWdLcEloaEp6QmRNYVBtSit6NmdSczdld0t4M0oyNk44WkFhN01YYktycnpOTGpOcGorS0ZmQkltNHNRVjhKUkNISkNLa25Db0E2RmU1NmgrVXFxallaR3gxTW8wRUZuWEl4RW9BMmErckw2REZ5dFlJVlRJNWFYYWxuZTg1Q3F2N2JKYmEvQzIwaEN3cVo2eFdadVkwQnR4K0tXZnVNMFJILytoVGJqeHhsZVJhK2NmZzlKdU56YU1tQWdhcGcxL0ZqdEpaSG95SVJtMHhsZDlyVmtyZjZnZmlCQW9KT0FQa053RjkxNkVSYk0vZlYzSWF4TzhNeEJldlI2Z3VOb3dRUDBnYkN1dnZPaXFFQlphT3FpZHJLMzA2OHZCZHBSV01vbTJPbnBJZHpBc28wYkNUeURVaXg5RXpmT1FGdk1nOGE2RnB4eWY3YUIyeDJVSzQwSnc4NnRSdHZGRzlxbTdGU3VXdXlWTGxyakJrMEdRQi9qYStrdWwwZUJCSitQWlR5cVkxaHlZdHpyTTI0RU1qNmx6eVhJN2VzNkppbVdHOXlQZmZkd05EdytDVG9uT2dNYlFoM3phRkdQbWYzNzJzNzltUjArQjZUVUFEaXd3VkJPemNRRDZRVWVUL2hHenAreU1hK0VXdjlIdTgyaGpwNW0weTB6YUl6UDQwd3dEdzh3WVlkQllTS0MwSXdsNGNIT1A2aVIzMkFHK3JKSXplNm8zRStsUUhKOVhUUy9OREROTFFBam1sNEtySjQvcHlHc1ZLaHkvM1orRjJxN085M0VFT2dNQnZQMm9GNC82WTY4RTR6S2RabEhNb0Ztb2ZCekl0WVA3WFhIalpzaWFJdVJRM2lpYjEyMC9FZy9YOENRWjE1RXk2UVlwbmo5Z3hLZmJ1Rm1aT1g0TVlYbVhHWVU2anZ6eVhCSWhEZk1US1gvN1ZIa3I0bE9HZ2VUR0dwcVVnWXBQdDhNU29BanRodnNpZGpzdUIrWUw1U01oSFUyV0QvYmdyL3hSVnZsM2RPZ0ZIZzVMRnZwbFJzSFVwVTVYZ0dCUm5mMW1yUjdaUlRoTkhoOHVsWXF1TUhUS2RhNWE1VXFkSFhBWFhDZlc4cDE4SjBCWHArdlpzczBWc0hibSt3TDBPZllUUjEwbnRDdWx5N01jV2MzK2ZCc3dWZTNXc0E3MFBCdTZFNGh0RVJxOElpY1Q4ZzVVQS9Lb3Q1YVNhQXNLSkFxd1F4aGJ6Kzk2aFFkKzNPblQzQThiZ0JadzFwMDVPM1N1czZmdlAvcWtRdHM5Z0p2ZWRmT2Rwd1lHYnVucDdYSUxNWnVKYmZUdmh5ZVpUNGE1eGRTeTBqUzdZcVRzZE5KbWZncFRpcVJka1dLL3BKMm1yR1pQbXNFZnYyNWdjTkNkaHNxb3Q3S0VNUDE2cEJ4SnhBRjh3S2lHV1VxdncrS3BMM1lBVDZoaGtIS2RxVmtSNEtEbVpxUE5DUElDWU1Fc0tPMUJzekhTZVhETnE4TTFZS284bUlrZE5qbU05U2lXR2VXQkV5aEJzbkJSaG1aalhWQXV2cVlLWWwyRGovZXhlWjgrdjM2amN4QTZuSmpGMU1nWHVic09QcDJHTmFJWW5zeUg4dk1VSXVOd2hndU1MeWJ6REVXR1laekNLakEvbGpjWmFCOEtRN3dNaEV4cDh6YVhRZnZLajR3WW1GRW1DZXE5WjQ2UUxybysycW9JQnFwak1HZXJQRHR2anlIbkN4MHVQMytoY3pxeForcHNOQ01qbkhtRkJ1WXZWVjZkaEVTWTdHdWdtbE9Zb3QxTlFDQ1BzUkhkNmNnTUQ1a2ZQM0d1TUphRlp5RDQyVzhJZ1VMT0ZkQzJIU3RXdWdKbVNaNGc1U25ON3JVYkhSWlZyZ2cvUGVmUGt1RW43MnF1eU5lM25SMTJLMWV0ZEV1V0xuRW5qbU41d21XUWxRN1VpSVEvREZiRmZMeGZBeXpNUXhiOHNHNWJyNUpYQkdhRXNrMWc3UEJ1QU1jSVI5Q1J3Wk51R2NicEdNYmZLTnIwM0xsaHpLMlZYLzdEMy8xMzM3R0VocllhQUdkV01nUVpTTE8ybjJIRmROSHM2OE85R1daL2hTbE5nejNrb2ZnK0Q3bGplNVErOGt2WWFZTHNtdTNOQURaRUlDSGxDSWhqeFRaME10U3FBZ1pJdUpVbUlJQUNRUnR5R0h6eVFwbDU2eXJjRGpPeUhkZ3BIcGVGeXF4ZGI5WVRBeWU3Y3BVT0EvSEZuK1hLcEJzYkgzSGo1NGExajBBMXRCMVlKcG4reVVFZUt3NERKTHQ4bFIxT2dxRGhnSW9HRmNyTzk5ano5Sm94STQ4UGw4U0VnU2xqcGswUVowZG9KUVZxRlZqK01LMFlpa0lPcW1qOTlDbVhYN0hLL0NtQUZJYXJTZ1dGWFlkcmVMaUliakt4cGRlMStJSkxDSWdNVkduR1J3U2x3WFRsOGd6akpwNVBKeWk5eFl0YVFlN1lWUDB3Ty9PRm5SYkZOZ2oxVnVGejU3UTBVQUNqVStpUkVBRkZRcGtnS0NHc0NsZ3ZGenVLcnFPL0h4b0FCRURmWXRlemZMMHJuaG1GTnREaitFWmpDZ3dKQWdqc0FsVCtJdnFBMzU2b2xLdFFyOGVqSXFVdGpVajRlU3RxSzJzSWFVN2x3NkdKaElrbmlRNStwNENicnhTR2JHdGMrK3pZbUh0eTF5c0Q1ODhOL2NYdzJjSGZya3lWLytrZi9kNS8rQXVmSkVKN0RlQ21kOTA1U0EyZ3U5TXRDQm9BUVVhVXlYLzl5SVMzR0ZDdUtDejJOM2V3aDN5OEg5MTBtY1dIeWRJUTMyRFhhVy95L1hCRFE4T2F5WUpmTTN3YS9TYmdQVGhnb1RkaDh1ZHJuZ0YxS0lFSTNPbGZ2TmlZa2Y3eTRqM2o1TW5GcXF0QWM2aERqZVJaYlRjMW9aMTBIUnNkNHR0NWVLKzV6RnN5K2hoSUdYbGxNRnRyRFl1MGNjRVN3eUZZb1lyclVWVE1iTG5PVHUyUzEvaDllSlFsU2JvTkNzR1MzYmhGTy90a1NxclFMRElmL0NFc3JtZGdUMlRZd2dhazRYMTgxa0ZsUVppWUIxYk9pTnlRUkRsVUtOUWxJSmtQaXh1WVY5ZEE0c0xtN2E2NmZ3L0NrS255NVdFY0R0cXNOZ0d6M0JzQWd4RXFDNjRaeW1ld01jSE1wVjFRWTFtL1NkOG4wRk4rUGxxSXoyUEExSTU0aDRLM1NSbk9FR1NydHdJWElLeEswQUxJM0c0UzJzMFZWN25pb2lWZzhHVjZkVmtkQXBxQ204OGhVSkF6SFNjaXp2NzhTdE5TOUNrUGJVVVhCbWdUUlQrTlNQaUZ5QjZwMkFxemRneW9vYjc2dG1RQ2JOZnExSlNyb0V3b3BQcURUVHM4TWQ3NXlzRHBYL3pxbi8zWHYzN3F5Y2VmdGRocHROVUFBamp6dHA3NS9ZeExNK2tPZHM3a21zMURXdG9aUm51Y2ovbHgxbXdJYStWSEUyVFhhVysyQjV2RktOaUUyRHRDVUd0YlFRTVVNd0tYQXJ5ZW5rTEVqTWFuNWZoS01uc3NtZWFFRzl2M21xdXRYZXV5VjE3bHNqQ3J4NCtnbkt3SEQ1T0E4Y3VURWhZY1lMeHZ6b00wYVRRVURPQjdCZmlOUHU1SDZHT2RVS2RaZHo5aW90aEtpYkx3Rmw5aDNVYVg3WjRIUDdaUmt2bmo0Y1V3NWRQVnBZRm5MejYxT0dIbU5GVWZESW13NGczdmNzVWJiOWJIVVJoZC91UVFwYkVzaUdCcVE1RXF2bmJLS1dTWnAya0t1TEI5aHhGaGVaNUhZRjVLNTY5UGdsK1VtUURoc1hDUkJGSVdRdGFXTXFadEtMNlB3eE9DZWI0clVXbXRiRG1Tc2xPdFZaWWltRG5mMit0eUMzbk9vUk9Cdk9VTExhSmVVZHhTQWNzOUpLVFdzQUN6L3dxVWs4d2ZGOG55TnpMSXhiTEFFdnNTYVZjaUU0T1BuL1JWbE4zKzdrb0R1cWlSUVd2angyYllUdEp3SURtejJkci9oK0NHekdPMDFRRGVlZU9OZDU0YUhMaUY3NnZqU1VCMWtBK0w3UGhSODlIdFBXamFZUFIyYi9KSDhXUlZKTmxEUExQT3pzL3liMjl5L1Q4OGRBYXFMdC8zN2hNQnNRMUlPWkx3ZVlIWWtHT2E1ZWp3UGVMQjJVcEhnOEdJRE5PR05lTHpsVkRnRXBnZ3pNQU9uWkpmdmRybHVjbUhBY1NqdXZyRUdQNG9QSGpZQklWVU9mWHdEVzlmOGRnclh5elMyVzEycGhWMVE0V0c2czhEUjdpTWp1aHloc2I2ajhOZERPQm5TODZhUEFsSmxaNHpZRzdKY3BmbmpuRmx5bVc2a1JlWEJyM3pYSlpxTisvSGcrU215Um1HVDhDQkdVTnJjRUJKQ0RCLzVGbTQ0bHExandobDR1MUFmZWFMNlduNmcxRTVNaFR6Ulp3OGx5b0g5a21RcXptWmx4cFZyUTAzMmd6Q0xiOTVxK0xud0pEVXRMZzAwb0Vlbm5FZ1FmMm1XczlOdjhMOGhkQW9YbE81SXNabjVyN2tjcGZMZWxOUERubFF1QlNYTEhVbHJOczdsaTJESGVvelpuc2VubUo0amdlOWtBWnpqMTdFd2FVWjNXVDZVb0hMR0tqY3ZmMVEvYnYxR0hkNGJrT1hKRVZJT1FDNDdiK0pJZ1FIVExQR29jcWZKb1VudnhLTWZrdUM1ZVl0U0w0cUhJTUsxWThtd3RYOVc2OGNPTFBybFdlOE80VzJBdURHbTI2Q0FCaThwYnVyQTB1QWZ0K2NBQWRxWklWTi94ekEzaDNzRmlBL2tTV0k3QmJYK3lWTldWdUVSVjVtbWM2a0FCZ2FIcFo2R1B5RmhEV05PQ0RZTklnd3FGSUNJTlZkZGFuZUhPVFp2dmoxWHpsUU9PQ2kzWDB5d2J3K01LSU5kaDRtcWZxSGljSitCKzJxS2Y3NXpvRDYrYk4yNEVpTWtyZ21CamdxSk9LRE9mbitCUmpjWUZKcUpJaEdacmNabFl6QWJRcmJJQ3RDcThpV01LTlI4emg1Vk90NERpU0h0TnhVNUZsUk1ra0dTeElOTUFvT01pTnZmZkZhdkxTbVN5c0dMYnlOeHpKUUtEQk45ZGhSTzZqRTVZN3lCVUhZWktIWlpLRnhaQ3BWdFExZjRFRWRoV1VWYy9vY2pYbkJZQ2dyNzVEd0N6ejE0Vk91anI3a1BvUU9Ga0dUcVp3YVVQdnhvQkxYNHRKSTJON1VBcENlQ0gydUxzUVBoVklXQXBXZkxYTm5vRG1keGRMcHpDbVhnOGxsVkpYbk9uaHdpL3N3L0FBcHlsS2VtSFNqdTNmcnpBUExtODl5RExKdElJUzV0RUxmOGVVd0J0YkMxOFdzSHBIRkErNFc0Y0ZMTHZ6RXZvYmdiMEJwUmlDVXRqUzhEUW9vZFBlNlNkU0hleDljN2tRODRkd3RDN2R2K2F1aFYxOE5aNVFqdEJVQTc3anB4anRQRHd6ZXd0c2hDeFo0YWNPeHg1K0UzYTVCMCt3SzV6L2Q4bWZ3ZEhiQ3UybUxMVzNEWmpLbEFReERBOERnVUM3bTNZQzBaOG9GaHdZbkJvSUVRTG9IQkQ3Ung4TXBQTVZHTFlCbjZrbjZjZ3pYOFZqVDYxQVFpT2Y5Y3p3ZUMwYVllblduemZUVUZGRGVwQURJem9jNkN5YlVoaDd2UEdCSmtUb1l3elB3SUpyY0xPT09QRDlRcWd3UW56djVaQ0tDZzUvZkhSQmhacXVmT2VzcVJ3KzZ6TGxoVTVmSjhHSldYQU96cm9RQUJRTUdEKzhhNU5kdHN2MElDZ3JrejJ6VkpzaFgyZ0Qvc0F6aXVwa3pNSGZ2bFI3NTZMUWk4NkdiMXlJVHdjMWJpRHpQem8yc2FGY2RwdTNNdzkwRllRcWhabDlnTnExRDRid28rd1EvdG56aVdoN3JkOVF0UjQxaDNRWUlDcFNWK3l0K0RGaFprU2ZTRnpadTFxbEFDaW9PK0R6VWZvaGluemMvbVlHY2tZemZDT0FtNVJSZjhZWFY4UlQ2dnNKbENWK1V3aVZkbFZvVjc5eGtzZXJnOHdpOEJrbVhCTlFxOWtkUCtpc3dpZ0I0ZCtTZER1TmYwaStPWXY3NjVmTVpYQ3BDeTdJd0E4Y0NoZklVRDZSQkM4aHdud2NWQTE5MDFPcTUxY083WG5uQVI0MWdvNlVWdUplQXYzZ2RibzB2T3loYTI2dERmQno2YVZiellUNk5yZDhiN1RiNFpZYjBYbXFsMS93TXB6azloWmN5Y0QyZGdvMkhCT2hobnNFV1JVazVra2kwTWlCMUhDbzBaNldBVkI0SmNJM0t3VGYxOUZPWXRRWXh5NElaa3RraFBtcUtUREhZb1o3eTVSWFRRVW5SeVZ3cTZMZ3JtQ1VIMWRwQ2VQRzRBTnpZS3ZIc2V3WHRjbkMvQkpUTnRHUXNydWRKdkR0QUpqUTdsMDFNeDdmZDVLRTJSd01aUDdwMWhtdVRDZkpRejhzdi9FZ25CRGx6OHR0NElUMzNUNWpPOGlXakl3T3NrWGdIeFU3b2xkUUdETk1TaGZXQnNNNnZYWWYxK2dFd21PMi9NRThyYnlpem1hRklkRk40YUkzUGpUNDJvMEpJQnQyS1BRdmhCSUVYblFOZytUajAyZmFlbUNrZmthNmVPT3Ftb0hGTW9MMzRUQUtQMDQ1REVGTjBkUEZobkdwTkc4TldEaU95VWRJdFA1bFdkL05MeEVuK2VULzhzQkFzY29SR2Y3UDZPTS85Z0E2akVBL0VnMEZGTEl0NExvS2ZOR1A3VU5paWUvKzNqZmZjZjYvU0p1QnphOGFuZnZFenYvL3FqcGQrZ3p1a0N4YjAyYkFpVThwZ3EvR2ZQNjM4ekpTZkplTnZrMm4vd1ExN2JHRlFrMXV4WldsT2t6UkhSa1oxRjRBdlpxQlFZUHdrMGk2Z3lRTU5nNFpqcStsMFYyaDBBdm5udG16VEVWTE81T3pFQU5uVUVYSXlFNnlWcjNKMXpDZzhOSkxIZWo2L2VZdXI3bmlaTllCQ1lBK2ZVTmpwZ1JmTVlEcDNFQ0Z4WFlBdVVoYU00akNvczZQbnRjekpMMTJCNlF0TXhDUElZQ2pHNHF6WjA5dm5lcTYvMFZWZTIrMHFVR21ybFVuRU42YWtNQTZEVDIySGZ6SmpnYmZvd0lDUXV5NkRtYlY4OHBpcm5JR3FMY0ZBRFFOcFZxOXpaWjZCSHpxbDZqS01wakxoUDVpZGdsdGFEajFRSG5VUE4wcTRMSUpncWI5bVIzckQydDB0aEVERDBvT2ZYK1AxczFDNTJRWGhpVXpyMzdxYmdzYkM3ei93Z253RmV2aTZFaC9XNG5zWmVRclNOcWJSNzJpYjRwYnR1Tlp1WnFDMnkwUG9kZVRaYTRqREhQSER1cFo2dWwzbnRpdmM1SXZQdWNreU5BbUU2WjJFWUc2K2Y3RUh6RitlOG5lRUFsZ3ViMjJFUnF3Q0V6RlVCME1ZMFFxUHZNMVhUWmtDKzhsYkFWbmhVWC9maDExbTdVYjVKY0czUFozWjhZS3JRakR6N1VzVmFGOTYzTGxXTzVJcDFxL2E5OEFEMGIzdDVtdDUzUCt6UC91ZmRyNzgwci9pdCtyWjZCRlFpYmdhSHNrNkJGc2lVaXBGYzNBemZFTk5HeWVnS1d1czF6QlErU1JmaVdmM0pRQU1xZnltelp5RGx4dDUyU1lCd0NmaCtNUmFCVE9FOTRrYU1YU01BSU5uNkxrTXlLSWppaENrbWlGWFlyWkdoMVNoRFZCcjBST0hHVEF2MU5TcG5YeDFseTl2Vkw0NFA5cjR0RjhPak1rdkViT2VPVEkreXByZnV0ME9Ba0dnRUJRQS9kdXZjVVhrcllkNk9BQ3dKczlUQUlBSjlCNTh4dU4yT0JoVHpNOVRmam1vOVlEZXF3aUd6S3hiajJYTFM1cEZkRmNFMTY4dFcrN0dYbmxKVEFiK1JUUVRETklBMlhmMXJPcG1UVUUzVFE1aWUrRkdGdVYzV0w5emljRTQybk1BbzA2Ky9LSzRVZS9hcC9hUTRhMVNFd0FVa3JSSUZlZnlCYTVPYUdKOHJUbXZuZVY5K2kxWHVQSXJMMGo0c0N6VUNqTCsrUXlXaS9LSXQvNDZpNXdWVGZPa0FHYll2SGZlNUtvUVN1WHpJKzdzR0Q4dVUzZWxqcEx1LzNlVVNsaVpZYm5rWWFKa2VxaTRWbkV6dlR2NCtBaTAyRy9rYm9hMUkrSEhtbmZYT1Jidit6azBhRnFSWjA3bjl1MXhZd2RlMDROQ0ZYMXV6aStQNnBsUDdIdm9nYzlaVEl4UmJ6Wmg2N1lyN2pwOWF2RGRITGpuenAxM2ZES09nNEtQUi9LcnVlUXJGbG9tUzZUeVd5ZFR2ZEpSVGtoeW1uWmNsQXpBKzYwME1kQ2dpdkUrZFZETGRFSU5BMUJVc0lZdkZqckV4TVZpaDZoVTZrUm5kSnJaMFFWN2wyWUIyanY1VGprUUg4amd1byszNFRoZ214cTJmVHNEaVVDT2JKRHRBZmdXUjc2Y2FTcDdNS05FY1ZzTEFPN2VjMU9RYXJwVVZReG9sc3RoL1Z2WXNFbFA0R21KZ3pibHlUNCtHTVNYakRiRDV3NkROdTZRVi9uQ1NxWkxxTmhjeC9QWWJsM3ZxVU5jRE5xdU5XQzBZN2krR0k5OWhaV3RMd3U2VVlPY3dnUHM3L3VEcWptR2hOb012UWhHenFCZnFGTG1KOEIwNk1mODVtMXVZczh1VitYK0JPT2hVRHFlaTJ0UTJOSXJ0RG1Ga0YxWGd3UXdmNzdocHJRTm1oR2ZtVUFjTW1xRlR3UkNTMEdMTUV2a2k3U0tiRXlqZktraGNTRERKS3p1RnNpOWlpb2RXQmR6M3lYZjE2OHorL3grUTRVek9aZGVDSVpZaHhDZ0lJQUQxK0I0NVZrQWZnUmsvT3g1TnpMSnZRb2VFZTUwWGJ5RGd6Z3FQOHhBMG9KbUlFVDBkdG40NDlPYTI2SjQvNlRib3pHdmRCelkrY2MrZ0FCMGk1ZkJMdzNlcVRtL2J6YzBnQW5UWk5RM0ZJenUxVE43ZG43VFIxUE9MZkdQUHY2enZ6YzBlUG8zeDhiT3VUVnIxb01aN2Zpb0NJM0d3Y3pPUzY1dFdEZ1p5dGJzU2RQKzVZZ2dkOXJMSTZSTEl2YUliTTBXdCtQVkYwVXNNOVZCd2NaZUc4U0J3YWExMDlMbDdzU3VWM1hmbXVBT05WOUlrVno3aCt2eVZ6WmY2RHpVU2EyN3g4ZkFYRGtJTU5NQTJFNThvQ2l6WUpHYm9tcE9RYmxoaTV2Q2pCb0d0aEFWQ2ZsWmx2WVFDZ1k0bnpOZ0gyamR6ZlV6N0l4VDJyUU5Td09iOGZoUmpXN01aQ1hNY0x3bUR5ZHg5Z3pyYWpFRnJrY2h5ZlI4anIxWTdGUmNZMXFJZGZpei9mamhDMGZWdkhlZXEyVHFiblRmTGgxZTRtamlwVTF6NExLQkE2eU92UGxvcldrQWFuL1V4VmNCNE5qSnVLNlY2K3hwd01IakxyTmlsUnQ3L29mTUR1blkxaEJKRUNyTWdDOHFvVnRsZ3IyQ1pRelg1WVEyQVZGL3J1a0YyRXZYWE8rbVh2aVI2N2p1SFc1cTF3N2R5cU0yUUhDODh0aHZieWZYeG1CNmFENThFUWpyV2tkRnVIenFCT1BiZS8yOUlFcVVQSWIzU3dXbDQ3RzgzdWIvdmR2N3l5MnJkeWZqTjZDUlIyUmw0eEtvYy8zdSs1MXIrSHhZQmN2VFk5OTRXSnZIZkkyZTNtdWdrTXgvMmYvSUYzNVZWbUFhRFdEclhWakwzY0pIQ3BjdVhhWk9VN0hSTU93VWRoUUhGVSt6VmFwVFVLVklXSjlodWFCRE1PVUpIWVNoeWNFeU9UWGVnaWJjQkV4K0ZKTTBtYUl4K0xXZ3FSWitTaCs3N2MybnB6QzRJZStiMnpPQk9EQVZEUTU3VDE3R1RVSUlrS0hZMExubEs3UkdiWWFKdGRBeHZGK05FYWI3L2VabGdwTmdlYlIzc0dnSjFMTVIzZFBsTS9lVTFLbXlLa1A4S0ZPemF6ZWJ4NHNSVVlLRVFwajV3cTdvNCtPdXdNZFZPZE4zZExyQ21iTmlFakk0dFEweVBZZUJObW9SaDhTQngvTHA0RlBXbm1uZ1JjT013VGpjUFMrczN5eU5abkxQVGxkR0cxZlIzMXBuSXo5cWNoUUMxUGl5V0hKd3FjR3hvWEFKQU5NQ0FpUHlXdnkwRnc4RzhlVGYrTXZQUzhWbWZOdkVwYnJPb1dtQ2k4M0F2bFE5a0JjM0Rma3dEdmQ0MkE2Mk1Ra3RFdmxXQjA3b0xUL1o4MmYxWEFDdnpTVUsxWGdLTzFUZFFleTVNb3BDRm1jL1UrTWs0MVBiek9rT0FadVVFeEJKelp0d0p5ajZveWFDdjRZdy9jdXVER1hTN1lNaU8zOW9EZllrSmVQRWJublE1Zmh0QTJrQURVOVRVdU01ejFleVFSZ2J6L29BbDNrYUdzQmozdEZlQUt6ZnVIRkx0Vno1RVBtK3A1Y2ZZVFRHRi9PL2xlUUhicG80bThYRVQxR2ZQczE3eEswRVFPd3hUUkFHQmhnQmczUmtZRURQMW1zM240ZFlFbXZCR093Sy9nSzRKaC9MWlZ3T2ZtV0pBREdUbGs2MjZWZkIramVMR1pzcU5oK3pSWUFZSUNvdkxKb1ZQUEVrRzEvQ1VZWDZMSC9rckFIQXdjQW9TS3Y3N1ZBSmVUUzJ2R3VuNjhDQUw0STVtWjU3T2R3TXN1eVluak1pMUY4d0x1LzVFL2FLY2RzZ3RGZHpNVi84UU5Ya1laekpFMGZkNU9tVGFtUEdVVjBRajh1MUVnUU8zVlhlK2dNVDhjazVuVU5BK2ZoUVZoRU1HTHZSUmpuTXZxZE91TWxqQjEwZS9jcW44TWlvZWN6UXZQVmNMTUdlQjNQRFRXYlgzUVc0QzlDaytJVmdNci9kdWFCMlpYbXpJWmcvbjl6VHdnWjl5UGdNMTNLVDdjR3lJcTIrQm95MEJmZ3hEemFqa2U5TE9zeG1GRWZ3VG10N3RsZExPMUxCd24vWWZScDVLVVQrQ2svNmVYdVN2RzhpWG5ERERFNHU5ZmdnRmNNOTFhRFpuSWVteHFYUlJRbUF0ZXRXWDQwMTF6MlU1dk42dTlDMHh2d1JhWUJjUEpHWlcvazNFYS9UUkp4ZGpGTE1ENmxIazkvRDQwRWc3WWhIRlk4c0NadEhrd2NuY0RBQ3pKSGhJVzFTWmJsTHpTLzhZSUFyQUMxS1JncE1haVlhbW8yUG1WanZyaE9Uc0x6R0xMWitoUjBtejI3cjlXR0lxemNOMFkrekgxVzFobnhKM04zVzIzTG9ENmp2VWNZdzZLeFF1UGJZaUI0Q3lrS2o0TDRKbVR6YzRtTmF4aXpxa2RjT01BM0RxTnh3RDREcVBvOG44NW54TXVVWTVCKzFOR2dwR1doNnA0NjQydm5UdUFxMEFjUW53eGFMWUNBdWJaQi9GVnBncmNiZCtacG5WZzR0SHZpeDEyUlRJTENjWkZRSkF6QWVaKzBTQkZBUjRkenY0VDRFVGM3SXV0V1k1ejRRbWRmSUh1dWxQeGljK3hFTVkxd3hzV2toakcrUFFFTmpnSC9VTnB6WllZL2JDbDZ3eW85L01MbEVZQU1GdjhndU41M2h6N1F1VWhUT2ZnaC8zbTcvZEN1eDdQNWZhUWh2Ukc0TERhYVJ3a0o4VXVSVzdoSUFkUXFBQkRpK3p1L2REUXMxSzR3aDc0ODBLUUZndWJiQUxiZmYvdW1CNDhmK2xNODQ4MU5NVWZuaW5HRDFEaG5lbGJRVHNLVGpHUnI5NUxaL3VkS0d0eERKT0VtN054aFhxaUtjSEJCa3dnQWZLMGFUUnd4VEYrdnVKTlR6MHJVM3VNclJ3enA2Ty9uU2M2N09kd00yUUgwU0xBRytQT3d3MnhBemI3dWZqc0dNbWF3RDJrWG0wQUVNWXFyZVpGSUxEMnQ3TXEwTlpxcm8xR2k0Y1dmcmZ3NDBDaGZkQ2tSNUpiUjhPR0hha2UwQjJMVjlXWkFQelhCZWc0eEZ4dU5ha2JDOHdNQ0lRMUFkVjN0UW1DRWZwbVdaZkkxVlRxclNETGNJdHFRZ0dOZGJmSHZyUjllMVBrK2FDb2pDYU5LTkh5UTNRV2VtTFgxaXYrRHZHU0pwOHZMSWdrdFVXNXB3ZjRKcllyNGxGMElZNGJhWFpXa3NyMUJ1RWtFUC9pZmNNc3hNL2dZL0t6Y05LNzg1ZloxbWRNZlpHQkpYaVB4OWFmQlR2K1Y5cm9ZbFdoSlRtQVNQZitNUmJRNXpZcWtpWDd0UzV0Y09QUEtGUDdKWWlld2FjYzJkZDNhUDd0dnpmcTduaTEybGV1dkhZbUpVS3R5RHRVNFBLSldRVGh2eHhUTWpJOUFkcDBWSi8xUTNNeDBkYWdXN0lUVTlKaVltZkIyNGd3MHhEMlN6dGZzbXA4cS9SN1hQYmg4bDBPQnNEVEFSR1E2TU1ZcVpwdFEzejJXd25zLzE5dHNETGNjT2l5RmlCaldHNXFEaDVjenRON0VnZldrM05SUHhtVGRNSWpDb2RZTVZMQjdjWElkN2hpTkR3eExjeHVCV2JWNmZjWlVuZXdEbEl2TnBWNSt6S055YVdZdWRzTk9md3NMQytFV2prTGYrV0FUWmd3bWIvdVdqYTVrcFk5WmdkTldRZVNvdFRWcVNadXl2UDVwQmVDdk1kelBxcXFFUGszN21TN2Vaa1R0QThXSWtYYnhHdVRMaHBpWkhvZW1NMmY1VmVVSkMxUVFBazRjVTNnelhONGYvYjQ1akZiSjZFSEU5Vy91WktWLytOQ0V1UjNRVmI4RTRlZmQ3WFgxRFdnQk1ESjEySjUvNEdwYXNrOUV0UUl3VVY4dlVmL25nd3cvK054OHR6dXR5d3RxMXEzOEJzOXVmYytDSHhtN1RyZzJJSXpIdHNtV3JvNWttREVhNnlXVE1seHRVN0d6T0lGTHRRY3lCQThMVWY3b3NUOGJYYmpQZDdBeTViUVlPY1prZjc1OXIzWTJlWWVkWWZyeU1mcU9CUUROcEQrWFNacDZZM29TTzdQUVhtZHRNM2czZ1N0bksxb2pJcDBVWW9YcVlKWUpaVy9uRG9YK3J0MngwUjNaengzYWpBRjlOSUYzbkFOWEJyQkVVcWdEOHhGRWpXSGc2d0JpWmg0MU1XNkRBTmFFSjRjNXg0R1BwVjJsOWV0Z3RyUnptN2N1ZnJtT3dLNlRCTHhrL1JrTVI3VG9KUDFvck45L2hIRjhISDRBc1JvNGRjYWQrOENRQ1l3SGd4ZWsvT2ZESWcvL0RyS21zTGg5SUFOUWdBTERHRkROTmkzUjRjSEd6aUx2aS9CWWZUNk9KT2YwNlBkemE0bzgzWmthcmpwd0pUVkZtbFVwb0xoSjltSHFtd3M3MkNtOHMzaDZsTUZCWThud0p6d1h3MVYrOFcyQWxSSCtvb0kxMlE1cTVrd3h2WVNsLzlrdndReFp4TG9TNUdySUhiRHlVYjdyVlpYZ0xPSUd6Ky9hNDRSZWZoUVl3Z1RGYnN5VUFJOWV6ZHh6NHloZWVzRmlOMTdsTXNIYkQ2bCtvVEZiK1hEMWk3WDNCNk9JR0hkSnExbFpIdGNNRk51RTAwV2ZQM2cwSXlXWlpWdzIybHJqb0VydzVTQld1dWFSdlJ0blpjcnlETUEvTHdiNTU4MTFQTjVhSDBxUW9BSXlzSkRadVVrd2VpTGxFYm1xTndhMllpSi9HVFBXYWV1Zk56dkc3RlFud0pPRHdpei9VSGtDRlMwM21qWXlneDF5OTc1RXZ2dXlqdlNsdDlxWmo4K1lOdnpBeU12cm5WSGUxbVhVaDhDMUNEWUNkeXVmMXJSTm5pVVNMdmg1MlNnNkV0dm1rdk9sb0tPY0ZGUHR0ZzFrM1dUSml1NHJPT3JNSXMwbVI3SnRTc2RNdFdiekNMVnU2VnU4UkRKdVJNY1BIeTd5a2FSdXd3Uy8yVjEzQXFjMDFNaDlGU1lETzhldXVkZlVORzh6RDQreSszZTZNTkFBS0FDd3hFUkZYbUNyVWVoYS85dGhmUlk4RlgzZ0wvUmlBQXVEOHlNaWYyK3V2R3FzNHV5cno1SjdlWFFlWlNVRmlTTGQreXBWMCtFdlFTS2RvZ1NoQ0hGTzJHUk1TelpIaXRPbXdkdjdUSVk2WlNEUDc1RzJSTHNiRlpzaDBvWVZuMTZmeGxkcGM4MktMQW5BUFp1bVNOVzdEdXUydUY5cUJidjE2eHJhOUhqUEYrRFNUZHMvOEpnUjhoZ21rdkJJT1daRmcvTHBySUFENHZZSVlGQURETC8wSUxEOEJBY0QxUDJObmpoNzR5b044ZERUQzdGcnV4d3diTnEzOTFPajVzVC9Ud1JidmQ2SGcvZTE4anM4bDhCa0VmdTc1VXFPNVpKSFBtOW9yeWVHVnZIQnEyS1hRTkVpUkxLUnNOWUF2REkzbGVkMFp0b1Z5am45U3NOazRSbkNiRVllRldUdjJycnZseTlhNVZTczI2azRMbDVERzZIYkhKekIrTEJSQ09OMGgzMFNEcHRCS0Y4eTQ4V3V2Y3JVV0F1QU1CVURRQU9DSDNMOTI4Q3RmK29ERk1GeWdmdnpqZ1huOXZkZVh5NVY3d3EyeFpyVDBUSUU3KzNvZXdDOGpURUpmSXZKL2ZzUjRNL1p2bWVaU2sxMzRiUWoyalNmKyszWDFtMGQyMTRjemVwcnNya200Z3hKVFBqcUhvVnVzbUhUR0owYmQ0T2xqYUdjZWZPclFKcko5Y1pnbkxEM1RpOURyNkFqckMxeWIxK0J4YW0vcUlTdm1uK1ZrNUIrbTh3ZWg3TzNPUEFoVmRKT0w1N3Q2Zi9wWmdNbWhVMjVpOExqalIxcHRkS2t0djN4bXo2dGZWUVNQeTFJQTlNK2J0NzVhcVh5Y0hka2FvVW5hRXpzM3ZHR0hBNkFsRTEwd0llZWttMy9tbWZaL1E2bWhERWxpM1Z2NXo0cW15ZmYxMGtXVlMwa3VnbHJsRlJOaU5GTUxmODd1NTg0UHVZbkpVZGMzYjVFWU9CWXdTZE5JUW9aK01rTjRiTmYySGV5U2lrSXduUnViMStucS9JaHJBdU9uQnR3a1h5UHVOd0I5OUQ4NXMyZlhpN0o1eExsY1JsaTdkdVc3SnFmS1QvRXp6cFRPMDFaU2pkb012Z2lsVU93d3FSdnRBY3dXbDZoWkc3S1pYYTZYNk5vWERGejNvc3I3Wm1PYVV2bWc5akdhUTlvTUg0RjhSK0hRMGRIdHRtOTlSM1F5TlJZb3RDdXFJY29ybVdtckM4RFBNcGYxNU1yRnJyb2xmUkRveko2ZDd0ek9GMTJONzU3Z3RWRFFhaTUvMWVHSC9pNzFXdUZXdWYvWVkrWEtsWnZycnJMNy9MbFJ5bUx2T3gwZ1piMHRZRjVmcitzb2RVdkZvMG8yTzdSb3pndG80VXZYR1c5Z3Q4NlE5WVZmK1EwczY4VWlVU1N6enFLTWlCTEhqY2VjOFduZGRYZjF1dXV2ZlRlRVFNSDhQZWNIVFlEcFRCdElhZ1lKdXk3UVlGY096dTNzenJyUjFXdGdpMGY3V1FxQVhTKzVxZ1FBUERLWmthN3U0c0lkRHp5UU9zY2U4cmpja0Z1eGN0a0RFeE1UOSttVlV0T2dkUVB3ZFZvOWV2bElGdXN2cW1kdk9sU3dpK3VldDArblhtQkozb0NDeno3TGl5dnI5S2tZNnBrU0ROL1IwZW5XckxUTnVzQ29xZlJnNmlTTTBSUDJDTFNISEp3YlhyZk9aYSs2MXJzQUJKM1ovWW9iMmJORGoxbmJBOWFadnovNDZKZnV0QWd4MGxlOHpMQml6WXE3WGExMmd4eCtKelNDZDVoaHY1QzMvWmxjYmpsM1pEczdPNWU3ZXZaMnZjbTJvV09TdU5BR1RIWjgzSVZ2TEpyTE9NdFNYMERsMGdQMDdRWmZ0bGtVY2ZhMVNNUnNiWTBRemNzdytGUWtsd0t6UTNxRXlCVmxGZWVadWZJYTEzLzcrODN0Y2ViVlY5em8zcDJ1VXFuWUhZQnM1dDhmZk9STHYyV2hNV1pmMzM5ZzJMWnQyNGZISnlZZWxzbzJqUUNZSHBZdW1UcmRwYTB3YzR4TGcvWjF1ckRhWGtUYlhFU1NOQm96WUp2RmZyUEpQcDFpR2lqU0xQT09BczBTeDQxVmM2citmQitqdmJ6MTBxQzAvV3EzNkFNZjlTN0RtWjB2dTlIOXV5UUE5SWk2cTk5NjZOR0h2dXVESTd3RnV1MlBCMnExS2I1NVF4MFhiOXBjS0hHVEowMXVSc0lWbTRpRnVOU0VuellVbFg5V2Y2alhqTlR3bDd6R1JWQmptNWwvMHQxTWR0akd6RVo3SXlYVDZmNThncHJqSnNwV0MrVGphZ2ZlNHVCSHhMbUVyMHdMN2t0RnlUSWEyYVBaQ0NYR2E5MmxINWsxamN2eU51Q2x3SUlGaXdybFN2bFhkUXVtb2JFdmxGS0RwSkZTZjRqZWt0Nll2MVpYU2hIS04zdHFTSjVDWStEcm84WS8rYU1NTGR0WGpOcmdSeWFOM0NFOEtVdzhLVjltN2UwRTdFUnlkazlSRkFDN3ZCSnBFY1pnenNweVhyUm1tUVkvYWRhNVlZdXVGV2g4NElRcm54MVMzWENocngvNjhoZi8wa2RQNGRLVTRETEU1czJiTjB4TVR1eXRWbXBhdHhsOGM3Vm90YlRYakJIZVZMeXhsNTRtOTB0MVljOC95ay8yaUtVMDJNMHJtSW5RaEYvQ04vWnZRRlJjTUtiWllkSkN0L3k4bWZXbUFoVXJrZGdndnlSQ0ZLVGhkdzE0S0lqUG0xd0tsTFpzZHd1U1N3QlU3c3dyTDdpeEkvdDBCNkNXeWZ6elE0OSsrWTk5YUFvTnBaeER3S3BWcXhaZzhoOGNIUjF2WGlZbFIwK2JGa3dPaWxZRFJBajVNSXoyWUJKSzBpb1I0ZjBWcHdIUm9FeEFqbmE1d2RjSHBNTmIrY2QrUk1McUVZZkhZYkZmRXVhVkRMQ0s2eGMvWWxIdm9NRlp1Sm5aYWVKUGptYWtMaHM1bXE4OGE1RHBaZmlET3dteTE3UEZ1Y2FYYS9DRG05ckcrUGk0WHNneWEvaHJOeVBqQ3VzMnVBVWZ1cys3QWJUSG1aZWZjMlBIRG1JQmxxbGxDbTdGL29jZWF2bENudFo1emtGWXMzYlZFeE1UVTdmeDJHWUtmc1MxR1hjQVF1eS9OUklqdG4wZXMwZTdnZEVhbCtLS01TNXRiczJ3V2lUcUFtdUtGYncxOG1zUkxuZlNmeHA3NVBKZUFpcVo3REYxSDRVUENWYnl1TDJGaVVkM2VZeVh3b0FCakc4Wm1UWE9lMktjNzJ6a2NkNWlpQUxEV3dMZ2JQSUxTSVR4RS9GOWQzMUVkZ0dGT3ZNS0JjQWhWODlrdjNYZ3NZZmU2ME9hMENiM09SQmJ0Mjd0SFo4Yy82VjZ0WG85Vm9ndGdjNWVoVmJza2FOZXp4aHYyM0N4WDQrVXcvVmh0bGhCaTgxZ0NPVDdtdVRtVHh4WlF5dzRNNjRZNGdXa3dodWdmRnNoNFIxYjI4UnRSTXUwQWRQa01jdnNaNFBHckVLRHpId0pINk5OeE9BZE5iQzRtRVpzYXJiM0pobmRSQURVYktqMGZNQ0hZQmlYalRxRkdqRjl6UHkwWVhtcDI0RmRYVFowbWhDdXFkOVc4Q0hNYjhWcTEvditENWtiNENiZ21aZWVjK01uajZBdytmdjNQL2JscG8rQ0JyVFBmdzV2TzJ6YXRHa1ZCcGMySkNid2gvODIvUmQvd3c3UkYyY3l1VVZWblllcTJxR1FTcVVwWGNOeHFVd2hYOWlLRVowSmdvK3ZDVytDdkdMUm1NdmxWdFl6Ymg2OUFqUFY2clZweHhpWW9RZ200Y1BzaUdkNXBSV3UxdHlheVdRM0lLMFcwWHh1bzFLcGpJQUJEeWN1bGdVRDZpMFp5RitaSUU1eTA3c0VmOTJRTjBGSlFVeFhBK0FYZXljY3ZCRHRZbFR6cEJaQWh1Y0RQM0xyWVNGb0JqeE42alVEcG1PS01YMHdwcUNYaXJTR2p6Z0RGR1hGS3RmenZwK1NtK0FicHJrRUdCODh0aitmclc5LzdiSEhFdC8yUzJNV2w1akRIQzQvUUpqT0E3UUlIeGdZMEQ0UG1IVnhxVlJhaVBWNWxsOGdLaFE2MXJxczY4UnNuUzNtaXV1cjlXb0pRcVk3bDgzZVZxM1cvTlFkaTRjQXlZV1VKZE9keVdZNk9mTlQ3ZWRkQ0g3ZmtDK1BuZCsvQ01GcE5wd2RVeVppclZqcGV0LzdRZStBQUsxVTNOa2RMN2p5eUxsUHYvYmx2LzF6NzkwU3M3dldIT1l3aDR2R05kZGMwejB4TWRGSiszaG12Rmc5WC8wVXRJUi9sYy9sK3ZzaEFLZzF0TWMwWVNGb0dRWEFYZDRCeFd5cTdNN3YzdUZjZWVMbmR6N3dWLy9MZTdmRTNFR2dPY3poRGNhTEw3NDR1bnYzN2xPa3c3c09Id04rRjd4N0Z4UUVMRnVxVUJUaXYyYU5JdmkxSU8wZEdlbndUOVdvVmlucklTRG9OS0RwTVNjQTVqQ0h0d0FuVHB4NEJxejduL1VKTnAwZUJJR1I5ZnB1SFU2S1NTY1NSUmFubWNqNHpNZW94dThzK28rOHpJUTVBVENIT2J4RnlHVXluK2RyNWlOR0RvS2dnZUkzQ0NVRlF4QVdpRE01WVovRjg2UVBnaUt1YmZsT2p6a0JNSWM1dkVWWXVuVHBMbkQrc0JnN1VNVGdNYVZtLzBnd3dDOFF2eXhkZ1NEaGd6OGdmaGNRQWNrYk5HMHhKd0RtTUllM0NNOCsreXcvcGZ4c3JPSUhwazR3ZWpUVEo0VkJBMUZ3OEp1SDFBQWdBR3BURTdZM01LY0J6R0VPYjIvVXF0V0JlTFkzaG05azdpU2x0SVdJc080bjQ0dktyam81YVFLZ1VwL3hMdCtjQUpqREhONUMxRE9aNC9Gc0QyWnVReVlRZ29CSUV6ODNyM1YvR1ZvQXpCcVdBSXl2ejgzUGdEa0JNSWM1dklYSTFPdkgwck05bURwSmdjbEZyWVNDSGJ2a3pqOWZBRXJtRDBzQTZBWCtLdTB4SndEbU1JZTNGTFd6c2VwUGlobGJKS0dRcEVhaDRMOHF6VWVNK1FKUTNoSGdHUUFLaGxsZ1RnRE1ZUTV2SWFpbGs5RWJaL2ZBM0duaFFHb2xGS0R1VDQ2NzZzUzRxNHlQK1RNQjNBU2NHWE1DWUE1emVBdkJ1L1d0R0RvYzZ0SEJIcmhiVWhBV2lGTVpHeFZWSVFBYzA4RWZscGJ2QUVoaVRnRE1ZUTV2SmNESWtib2ZVWXRaUDBrUUd5THZybUhtcjQ2YkJsQ2JtdlFDQU9scTdyQy9TbHZNQ1lBNXpPRXRSTGxjUGpFMVZkYlRnYVJ5dWVMS0ZaaWUrUDdBQ3RiNGdYaDBtTHY3cEtBSlNPV3ZsblVud0NHT3ZnZFlkeThjZk9lMXUveGwybUpPQU14aERtOGh3TUREK05XbW5XYnpPaGs3cG1vTlRFL0c5MVFCbzBkMkx5Qm9kNTc1U2JWYS9aREwxVDdsZnZ1M1o5d0puUEdnd0J6bU1JYzNEa3VYTHUzT0ZySjNGcktGRmk4STVBeFBNNzZmSDJ3WmwrblB1c3h5bHdVTEkwNSs4M2FYeVdYR2E1bnNqa0xPZmVPMXh4NDc1NlBPWVE1em1NTWM1akNIT2N4aERuT1l3eHptTUlkLzhIRHUvd2MvL0VmOTEzYkRsZ0FBQUFCSlJVNUVya0pnZ2c9PSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzFfUFJFIiwiRklET18yXzEiXSwiZXh0ZW5zaW9ucyI6WyJ1dm0iLCJjcmVkQmxvYiIsImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJsYXJnZUJsb2JLZXkiLCJtaW5QaW5MZW5ndGgiXSwiYWFndWlkIjoiMzBiNTAzNWVkMjk3NGZmNzAxMGJhZGRjOTZiYTZhOTgiLCJvcHRpb25zIjp7InJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImxhcmdlQmxvYnMiOnRydWUsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJhbHdheXNVdiI6ZmFsc2V9LCJtYXhNc2dTaXplIjo3NjA5LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjgsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6NTAwLCJ0cmFuc3BvcnRzIjpbInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5IjoyMDA4LCJtaW5QSU5MZW5ndGgiOjQsIm1heENyZWRCbG9iTGVuZ3RoIjo2NCwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjE1LCJyZW1haW5pbmdEaXNjb3ZlcmFibGVDcmVkZW50aWFscyI6MTM5fX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDgtMjYiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJESUdJUEFTUyBGWDdGSVBTIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNTA4MjYwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wOC0yNiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTEwLTIxIn0seyJhYWd1aWQiOiI1Y2ExYWIxZS1mYTU3LTEzMzctZjFkMC1hMTE3MzcxY2E3MDIiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjVjYTFhYjFlLWZhNTctMTMzNy1mMWQwLWExMTczNzFjYTcwMiIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJBbGx0aGVudGljYXRvciBBbmRyb2lkIEFwcCJ9LCJkZXNjcmlwdGlvbiI6IkFsbHRoZW50aWNhdG9yIEFuZHJvaWQgQXBwOiByb2FtaW5nIEJMRSBGSURPMiBBbGx0aGVudGljYXRvciBmb3IgV2luZG93cywgTWFjLCBMaW51eCwgYW5kIEFsbHRoZW50aWNhdGUgZG9vciByZWFkZXJzIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjUsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJyc2Fzc2FfcGtjc3YxNV9zaGEyNTZfcmF3Iiwic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjAsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZhY2VwcmludF9pbnRlcm5hbCIsImJhRGVzYyI6eyJzZWxmQXR0ZXN0ZWRGUlIiOjAuMCwic2VsZkF0dGVzdGVkRkFSIjowLjAsImlBUEFSVGhyZXNob2xkIjowLjAsIm1heFRlbXBsYXRlcyI6MCwibWF4UmV0cmllcyI6MCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwiLCJiYURlc2MiOnsic2VsZkF0dGVzdGVkRlJSIjowLjAsInNlbGZBdHRlc3RlZEZBUiI6MC4wLCJpQVBBUlRocmVzaG9sZCI6MC4wLCJtYXhUZW1wbGF0ZXMiOjAsIm1heFJldHJpZXMiOjAsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQ3FEQ0NBazZnQXdJQkFnSVVHRkNjNnJoZTRFaVJhL09TcVBOd3VvUjJqa1F3Q2dZSUtvWkl6ajBFQXdJd2dhb3hDekFKQmdOVkJBWVRBbFZUTVE0d0RBWURWUVFJREFWVVpYaGhjekVRTUE0R0ExVUVCd3dIU0c5MWMzUnZiakVXTUJRR0ExVUVDZ3dOUVd4c2RHaGxiblJwWTJGMFpURWlNQ0FHQTFVRUN3d1pRWFYwYUdWdWRHbGpZWFJ2Y2lCQmRIUmxjM1JoZEdsdmJqRVdNQlFHQTFVRUF3d05RV3hzZEdobGJuUnBZMkYwWlRFbE1DTUdDU3FHU0liM0RRRUpBUllXYUdWc2NFQmhiR3gwYUdWdWRHbGpZWFJsTG1OdmJUQWVGdzB5TkRBek1UUXhOVFV5TlRKYUZ3MHpOREF6TVRJeE5UVXlOVEphTUlHcU1Rc3dDUVlEVlFRR0V3SlZVekVPTUF3R0ExVUVDQXdGVkdWNFlYTXhFREFPQmdOVkJBY01CMGh2ZFhOMGIyNHhGakFVQmdOVkJBb01EVUZzYkhSb1pXNTBhV05oZEdVeElqQWdCZ05WQkFzTUdVRjFkR2hsYm5ScFkyRjBiM0lnUVhSMFpYTjBZWFJwYjI0eEZqQVVCZ05WQkFNTURVRnNiSFJvWlc1MGFXTmhkR1V4SlRBakJna3Foa2lHOXcwQkNRRVdGbWhsYkhCQVlXeHNkR2hsYm5ScFkyRjBaUzVqYjIwd1dUQVRCZ2NxaGtqT1BRSUJCZ2dxaGtqT1BRTUJCd05DQUFTMklBQzV0M2lFUnE1eHBzRUF5cVB6alRiK2VreCsrNVo0VnU2WXJtN1NGZnR6YzVCZFVWaTdxbkpwWm90SWQyR2ZGamFkMFpqa0lmOFQ1UjVodGRWTG8xQXdUakFkQmdOVkhRNEVGZ1FVQXk1UU9tSXRrQngrUmdGbjRFZmxRVllmbjFFd0h3WURWUjBqQkJnd0ZvQVVBeTVRT21JdGtCeCtSZ0ZuNEVmbFFWWWZuMUV3REFZRFZSMFRBUUgvQkFJd0FEQUtCZ2dxaGtqT1BRUURBZ05JQURCRkFpRUF3c0phaThna0ExOGd3K2FMbVRLd3cwT0pOeWRnTjRvemVLZTk1N3JSbTYwQ0lFZ3dBTG5CUWtyMUFGSVRpYkpKK1REUFAyeUw1bm82SGRURUFDQTdtSHdIIl0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUtBQUFBQ01DQVlBQUFEN29hSmdBQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBRE9WSlJFRlVlTnJzWFYxMjRqd1NsVG45M3N3SzJqek40OEFLR2xZUXNvS0dEVXhnQllFVjBKa054RmtCc0FLY0ZUVDlPRS94N01EZkNucWtkS20vaXBEOEs4a3kxRDNISnduQnRuUlZVbFZkV1RKakJBS0JRQ0FRQ0FRQ2dVQWdFQWdFQW9GQUlCQUlCQUtCUUNBUUNBUUNnVUFnRUFnRVFndEVRUmZ1My8rZDh4OFAvSGo1OVo5L0p0UmN0YmhiOEIvZitQSEV1VHVRQWRZamI4eC83UGd4UlIrbi9OaHlNbE15cjBiY3JUbDNaekxBWXZLRy9NY2pQMVlGWDB1QXpKek03WUk3WVhpTGdxOTloMDRjREhlRGdBZ1VSdmRXWW53TUNIN2ozOStRMlYxd3R5ajU2Z3E0V3dWVDlnREltMExQSFRjNFBlUEg4bGJkTW5EM3pJKzR3ZWxuOENUcFRSb2dKeThHdzV0YnVGd0tocGpkaU9IWjVPNEFocGpkaEFGQ3JMS0M3SFpvK2ZKYkVlZGNhM3pva0R2QjExTVgzRVdlQ1p4RHo0MGQzaWFEUUR1NU11UHp4ZDNhcDJ3VGVTSXZobGhsNnJITmdwVWVhbktuazFWOGNPY2xwSWtjazFkRlZuR05oUFZRdGdtRU8rZXlUZVNRd0FYMDNHRUE3WmtEa2Q5N1lud3JNTDVRdUZ1N0Nta2lCK1JOV1hOWnhUVXlGckJzRXpoM1RtU2J5Q0o1TWZUYVJROEdtVTZsQndOM3RtUVZIeUhOMWhaM2tTVUNOOHlOck9JYW5jbzJqaVVwMTI1WlBPU3c2ZFFBUFVrRFB0eXlkOW5taXJockpkdEVEY2tUcFBtV1ZYeElEODVsbTQ1a0ZSL2NOWkp0b3Bya2hTQU45Rko2SU81YUdtQmdzb3FQR01lYWJIT0QzRldXYmFJSzVJVXNEUVF0UFJCMzVkeEZKWEZlWDJRVjE2Z2wyeEIzSDVDd0F0a21NaEM0WWYyVVZaeExENnhFdGlIdXpOenBaSnVCSVZqK1FnUmVRQ1lSUDBCQ01TVWFuNGs3TFhkZmdKL0tMdmlXNDVlcTBvTld0cmxTcWNWSkxCZ0JXWE9UYXdrZ2d6dXdzS2VvRW1aNDJnYTRFNk5tZklQY0ZXYkRNTUJsQStSYTNvQ3dENEFMak5odmpjZjNDRFBoOTcrSCs2ZUJHdUNDR1JaSkFYY1Q5bnZLenpkM0krQnUwZ0YzMytIK2lTNUI0OGVKL3lxT09BSkxQQ21GMTY2LzllUmFNbWFZR211NUNNY0hSTm1YQnU1aTV2NkJnNHdacHNZOGpjWkZZWW1jOTM1RUg4OTBCbGpGdGJpWXg2eThMcUVIbVdiS0RGTlRqanBScFljREhENzhZRFQ4a2pDdTBBQUxLMmF3NkRheFNxM0hvM3FpdFcwTFltdGJENTBtck9ialVaWkg0Nkk2bGlXeXBRWllaV2h2VTVuV0R6bjJJRnMzQnVNVmR6TUlsVHZqb0ZGamNLaHNnTFpkaS9WSDVBTjdqTDF1ZkRTRnNrL2JHTFFuN294eGJvUHdxTFlCNGl4bmF4aDJ5d3JnYktGTFQ1NDRLWk50ZG9GeVZ4aG5Oc3dMR2h0Z0U5ZGlIQUVja0JtNkVHejBBSWJZMnVoNVBIRlgxR2xpMXZ6WjBGWUdXQnFMd0xYbC9uN2U5NmdMUUFpMklkdDB4WjBZMGVUK2dxa2piL051Z0tLaWI1WmN5emEwL1Zrc1ordXVFTlFpcVlvZDI4YnMyQ1NDQy83eXFVZDFSRm9iVitITExRZkpuU3ZGZ2RjMXNtMkFwYkpOSUNUMmNqYWw0ODVyWFhOMWFZRGVnK2NHcE5hUkM3cVNiVHJuemlWUFBnelF1WHhRSWZaN1lPYlpIQm5vaC95MFRTZHJsMzBzRy9WcGdJV3lqYWZzdHlqanRCcmI5Snc3YjdHeWJ3UEVyc1hKYnZjVjlUK2phK3ZKYklvcjdyeUwrRjBab0VUQ0xHMmIxbkJPVmV2YVdzN1A5bzQ3eTdKS2JRUHNjcGQ4VWVuV3U5M1gyQ0ZlaGZZaFhOR28vRml5Ymg3a3JNdmRxaVYzVTNnNDlMbXJVYi9MRWJDVjlHQlpUakc2dGg0c0ttL0NuUk5acFc4dXVKSDA0RGh6MWJxMmE1cE5DVWwrQ3RFQWpiS05SeVBJUzJTYjBEZGxNc1cyd2UzRzFYVU1XSVNWSmh2ek5RSzlaNE84d2Q3QXpXUENNbjdNK0svMzRQcEN4RVVtQzdIaW5nVTQrek5BY1FUaEkwUmpuWGpqN1dIa3c0WjQ0TWNJUnBzK2JINGU3RUo1YVlCZExCM3NDK1l5VzFkWDlvT2Jua0Q4UmFnWDYwLytHQ0JJRDRMTUVaRlo2TnArYUViREROYmZDdGQ4SnBvcVpld3orV0R5b0lCTWNzdDY4akpEUUozeVEvVHFkVS9jY2hmSjBVU2RUaHdVa0RraU12OWt4VUxlR0ZYUjJ1QXhlOEZkUWpiM0R1RlJCWGNiM2N6TmdNZ3NSQUxrMVZxOTE1UFpGQjhlUTdqYSt5SnRja0JrbW9Oa1VlODI4NjBpemdIWlpubERucVNXeHhnMEpETzdZdkkrQk1rMjBPRUdUOEY3akVGRE1xOVJ0dGt5dzQ1T2xveFFlSkkxQzN1bkwrOGU0MU5UTXZrUG9ZdUp4dXI3KzBKUzV2SFJkN2pQakY3eTAzQUVWTWtFdDl4SDJVWUd5Yk11MWwzQWdpM3BTZm9ZSDJwbGxicjRaSWxNTVlxTWVySkJkekRMSHhWUDBwZVhGVnBkd3p5d1RPaUdoUzNieUNCNUUxS2hlaklCVUVsVzZkUUFVYkM5QkRKRENiWlRJRzhaOHB2VEE1MEFxQ1dyZEc2QUNwbGRhMkJZVnVsTjVoblFCRUJ0V1NVWUEwUmtKa0NtYjluR3FhemlJejdzMEpNMGxsVTZTVUpxQnR1dVpSdXZzb29QdHl6cTVHbHRTbXRaSmJnUlVCTnN1NUp0eFBYdXU1SlZQSG9TVis3UWlxd1M1QWhvNk5XMlpKdmdkNVd5N0VuV25MY25pNTZrMDYzaEJoMFR1bWtaYkNmUWE2L2UrQXllcE0zYUZDZXlTcThNc0VXd2ZVYXlTc1p1RkExblU1ektLcjB6UU95V0s4ZzJVbGFaOUVsVzhkQ0JONnphMmhUbnNzcFZRQ3orVWRkZXdEdkc2RFdvNWR4TjFlMUc0TE1wc1VNZ0VBZ0VBb0ZBSUJBSUJBS0JRQ0FRQ0FRQ2dVQWdFQWdFQW9GQUlCQUlCQUtCUUNBUUNEWVJPYi9CNzNmNGlrZnBjN3pyS0hwRS9GeG45VDA4bHYvK1l1bHJXaGNDK3dXS0phcXZ0N1RLNzFNRG9sUnlzcExGelBJRjBzSlladWp6RS95c3UvWEVHSjBiWFZGYjdPR25XTDl4c0xsRjhOVVlJUFRTUjgzbkI1dDdpTUE3YklYUmJxOWxORUIxa3F2L1ZPVFNVN0FPdDJnRHovUm5jSER0WmVvdXk3eER2K05SYjg0SWJTSFg5MDVDM2tLdWF4ZjhKMjVqdi9ld1d5RERUTWlHbWdNVzJHOXVyZDZWRFJDU2lSaitmQkc5VkxoZUdQM21JamxvMjNOUllpTFgvMzZwa3F6QU90aXZVTDRNQXZtazVGNHhsUDFmY0o3b1ZELzVvUTBuVURsRXpKdkIrZksrT1p5YnFEczFhT28wVksrRnloT3J5WnFtRFdTWmgxRG1WOWdob1NocGsrZU00ZU1qMUROVCtJalJkOTdqYmY0NTB5VjhtdXZtaUwreml4SHdHL285UlJXWkl6ZmNkaFE4S1g4djBDaDdrYXhBZ3p3cnBMMmZ4Ly8zQURHTXpwaEVZclF5ak80Ny92KzF4b0JsMmJiOC81ODE1Ny9IeC94L1MrWGNVMEVTdFVXajNnTGlhelZaazQyOVo1ZWJFWW0vVi96L29zR1hhc09Eb2UvWjVlWlBVeWdycnVkQ0U5L3ZkSW9KNUFMUG11dEtEZzVRbnR5bUFjNVJyNVVWUFVCQmJMbmhGRFhTRUVhekRBWHB1c3hSamw1SFZJNHhISHROWTU1UVE0cHJ2OGpSRnVvbzd2c3NlcjVoRkgxQVpSUDEvd3ZPbFIxRm5KdWkwVVd0VTg3K2ZxdG1WcU5qamxINGMwUmxYa2lqNXZjZHlVYUh6bmxTWXZiLzhlTXoxRE9Hc21Zd3VtVlExcUZ5cjF6amJaNVJteHpndXBoN2VmMkpGUU5VM084QnhTMVczYkRNRHBHUnZKUmt3VEgwTkd3b1lpUE1QWlJKU0JveGNuTUxaSHdKYklxRTY3bEdqYjB6WlBkRGFNdzEvaDlzbWZZRC9oUWp5ZEpRcDdNaEN5NlN2YVJCcUhXVjl6MUJ1WGJ5dm1nMHk4RVRZQTEyQzJXTjVhZ0wxMDJVTEhpTlhTK014RHRrbk9yT1doc283eU80NzBWWktGUTFDOFpELzR2eXYyT0gyYkJwTjgrMW9ld1BLSjVjYWpwQWpzNGRvbEZObFV2V3FtRkNBeDlReDdBRkdmcWt1cnJDZmVXbW55L29jMkVjRVQvK29icG1LUHVUaHA4eUxKRGIxZTVNQmdOR3B2RGQyZ1ZMRW5RQnNtMDNYQWNIVTBZcGcyZHBESGdHUlJoZ3lXWTlVcE1UQ1lhNmsxUlNNTXIvbENPdkpVMHVSc1o4TFBBYzU0SnJ6RFV4c25UZmRYR0hRb2RoQVljcENnM2FHU0NRTUVZWjNLK2lPTkZHTmx6RFpkZVpMUmdia3BzaTZIYmorc3RqQjhNajZibW04WTVSak95aVhDZGZNa3hkdDJvakczYU5NNnUyb1dNdnA4Tmd0RCtoRG5UV2pLQmZLblpDazRjNCt6SkFMTC9NS2tnb29ZclNPRjQ1OW1TS0x6ZU1obFVHZ2FFcGNVRUpXVk1Eek9va1VvME5VSW1iRGtYemdrbzJISWUyZFM3RWhSazA1TmVLZGM2NnJJY0lNWGg1Y0R5YWxNV0swRVl4dW9acE1QamFvRWl2RU4rT2k5b1lQUUZWK3NUU29FSlBZbVZCc01OcytMUGxOcFZaNHNVdW9nalBNSnFmV0Jpdm9aV0oxa0lYOUVPSCtRSGxmVFFZZ3k0eGFUTDZZV1BlR1l4dlVWU2V1aTc0cml6ak5HVEQzelRaNHhobUlJNUtyeEJpcUVudlcwSHYvZ2t5Uk5xeU1iK3p2OFZTY2QrdjBLc3orT3dCalI2cDVYZG01TWo0OXpYcXRFWXU5UVF2K3puQzllNlFOSUlscEFRMS9nbDB2ek44VDU2VEc1S3NYR2tiS2JZbjRFVzJjRzNoNmQ1QXpsR3Z6WlR5MUI4QjBWeWYxTTN5RW5lUkl5TWRvejJlWDFGR3VXSWZaeUZrYktQMmxDZGxOSDIwTVJwQkdXY29nRjZnRVErL1BGclU0OTd5U0laM3NxOWNKMVRtREpWNUQyVmVJZU83bDZvQXVFYXNaKzdnKzNzNFB6TVpCMXdqUVcyemdySktGNzlCZzB1c3ViWnMyMWtWbGVKVGlRU3hSYnBPRlR4Qno4WVYycURZQzE5cndqNEttL2ljQXo5bnBqUlFpaXEzcmRqZ0YyV0hCcDJBcTdoVDduL1dqTkNGMTlQb1gwWHgzRVJ4ZmFtaGZqcWpHQm5LZkdRYWJWTHNoQTl6eEErNjd5dnRxOTV2eWM5OVZSS2ZEUDFmdml6blFaRzNjdUF2ZEJXRVFDQVFDQVFDZ1VBZ0VBZ0VBb0ZBSUJBSUJBS0JRQ0FRQ0FRQ2dVQWdFQWdFQW9Gd0xmaS9BQU1BVGFpdDY5blVVU0VBQUFBQVNVVk9SSzVDWUlJPSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIkZJRE9fMl8wIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiI1Y2ExYWIxZWZhNTcxMzM3ZjFkMGExMTczNzFjYTcwMiIsIm9wdGlvbnMiOnsicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJ1diI6dHJ1ZX0sIm1heE1zZ1NpemUiOjEyMDAsInBpblV2QXV0aFByb3RvY29scyI6WzFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjE2LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjEyOCwidHJhbnNwb3J0cyI6WyJ1c2IiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotMjU3fV0sImZpcm13YXJlVmVyc2lvbiI6NX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTA5LTE3IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjUsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiQWxsdGhlbnRpY2F0b3IgQW5kcm9pZCBBcHA6IHJvYW1pbmcgQkxFIEZJRE8yIEFsbHRoZW50aWNhdG9yIGZvciBXaW5kb3dzLCBNYWMsIExpbnV4LCBhbmQgQWxsdGhlbnRpY2F0ZSBkb29yIHJlYWRlcnMiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI0MDkxNzAwMiIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTA5LTE3IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjV9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjQtMTAtMTEifSx7ImFhZ3VpZCI6ImVhYmI0NmNjLWUyNDEtODBiZi1hZTllLTk2ZmE2ZDI5NzVjZiIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiZWFiYjQ2Y2MtZTI0MS04MGJmLWFlOWUtOTZmYTZkMjk3NWNmIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlRPS0VOMiBQSU4gUGx1cyBTZWN1cml0eSBLZXkgU2VyaWVzICJ9LCJkZXNjcmlwdGlvbiI6IlRPS0VOMiBQSU4gUGx1cyBTZWN1cml0eSBLZXkgU2VyaWVzICIsImFsdGVybmF0aXZlRGVzY3JpcHRpb25zIjp7ImZyIjoiU8OpcmllIGRlIGNsw6lzIGRlIHPDqWN1cml0w6kgVE9LRU4yIFBJTiBQbHVzIn0sImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH0seyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3IiwiZWQyNTUxOV9lZGRzYV9zaGE1MTJfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo2LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjYsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDTERDQ0FkSUNDUUN2MXZscUtlVzVlakFLQmdncWhrak9QUVFEQWpDQm5ERUxNQWtHQTFVRUJoTUNRMGd4RHpBTkJnTlZCQWdNQmtkbGJtVjJZVEVRTUE0R0ExVUVCd3dIVm1WeWMyOXBlREVQTUEwR0ExVUVDZ3dHVkU5TFJVNHlNU0l3SUFZRFZRUUxEQmxCZFhSb1pXNTBhV05oZEc5eUlFRjBkR1Z6ZEdGMGFXOXVNUk13RVFZRFZRUUREQXAwYjJ0bGJqSXVZMjl0TVNBd0hnWUpLb1pJaHZjTkFRa0JGaEZ2Wm1acFkyVkFkRzlyWlc0eUxtTnZiVEFnRncweE9UQTFNVFF3TmpVME1qRmFHQTh5TURjeU1EVXlNREEyTlRReU1Wb3dnWnd4Q3pBSkJnTlZCQVlUQWtOSU1ROHdEUVlEVlFRSURBWkhaVzVsZG1FeEVEQU9CZ05WQkFjTUIxWmxjbk52YVhneER6QU5CZ05WQkFvTUJsUlBTMFZPTWpFaU1DQUdBMVVFQ3d3WlFYVjBhR1Z1ZEdsallYUnZjaUJCZEhSbGMzUmhkR2x2YmpFVE1CRUdBMVVFQXd3S2RHOXJaVzR5TG1OdmJURWdNQjRHQ1NxR1NJYjNEUUVKQVJZUmIyWm1hV05sUUhSdmEyVnVNaTVqYjIwd1dUQVRCZ2NxaGtqT1BRSUJCZ2dxaGtqT1BRTUJCd05DQUFUamJTWmQ2MS83SGFveHlveGwzeWg2dGprM3RMNkFTQ0N1bS8ybmRxODZEUUx0K0RVNk1WNmY0LysrdXBBUGJUWlU2aldudklMb3Z0bnNSZ0NXd1VZUk1Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lFaU5mTnBBTFpJSDhuMVZ5WHBGeUxJekRlWkVaT0NSaUtoNDR1bmlhQlpQQWlFQW9kYW5PbFBVRUNqR0hFZitFNGRUS2t5Q2xwTGk0SmRFSmtWSFFwSVhFSkE9Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWdDQVlBQUFCemVucjBBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBS1QybERRMUJRYUc5MGIzTm9iM0FnU1VORElIQnliMlpwYkdVQUFIamFuVk5uVkZQcEZqMzMzdlJDUzRpQWxFdHZVaFVJSUZKQ2k0QVVrU1lxSVFrUVNvZ2hvZGtWVWNFUlJVVUVHOGlnaUFPT2pvQ01GVkVzRElvSzJBZmtJYUtPZzZPSWlzcjc0WHVqYTlhODkrYk4vclhYUHVlczg1Mnp6d2ZBQ0F5V1NETlJOWUFNcVVJZUVlQ0R4OFRHNGVRdVFJRUtKSEFBRUFpelpDRnovU01CQVBoK1BEd3JJc0FIdmdBQmVOTUxDQURBVFp2QU1CeUgvdy9xUXBsY0FZQ0VBY0Iwa1RoTENJQVVBRUI2amtLbUFFQkdBWUNkbUNaVEFLQUVBR0RMWTJMakFGQXRBR0FuZitiVEFJQ2QrSmw3QVFCYmxDRVZBYUNSQUNBVFpZaEVBR2c3QUt6UFZvcEZBRmd3QUJSbVM4UTVBTmd0QURCSlYyWklBTEMzQU1ET0VBdXlBQWdNQURCUmlJVXBBQVI3QUdESUl5TjRBSVNaQUJSRzhsYzg4U3V1RU9jcUFBQjRtYkk4dVNRNVJZRmJDQzF4QjFkWExoNG96a2tYS3hRMllRSmhta0F1d25tWkdUS0JOQS9nODh3QUFLQ1JGUkhnZy9QOWVNNE9yczdPTm82MkRsOHQ2cjhHL3lKaVl1UCs1YytyY0VBQUFPRjBmdEgrTEMrekdvQTdCb0J0L3FJbDdnUm9YZ3VnZGZlTFpySVBRTFVBb09uYVYvTncrSDQ4UEVXaGtMbloyZVhrNU5oS3hFSmJZY3BYZmY1bndsL0FWLzFzK1g0OC9QZjE0TDdpSklFeVhZRkhCUGpnd3N6MFRLVWN6NUlKaEdMYzVvOUgvTGNMLy93ZDB5TEVTV0s1V0NvVTQxRVNjWTVFbW96ek1xVWlpVUtTS2NVbDB2OWs0dDhzK3dNKzN6VUFzR28rQVh1UkxhaGRZd1AyU3ljUVdIVEE0dmNBQVBLN2I4SFVLQWdEZ0dpRDRjOTMvKzgvL1VlZ0pRQ0Faa21TY1FBQVhrUWtMbFRLc3ovSENBQUFSS0NCS3JCQkcvVEJHQ3pBQmh6QkJkekJDL3hnTm9SQ0pNVENRaEJDQ21TQUhISmdLYXlDUWlpR3piQWRLbUF2MUVBZE5NQlJhSWFUY0E0dXdsVzREajF3RC9waENKN0JLTHlCQ1FSQnlBZ1RZU0hhaUFGaWlsZ2pqZ2dYbVlYNEljRklCQktMSkNESmlCUlJJa3VSTlVneFVvcFVJRlZJSGZJOWNnSTVoMXhHdXBFN3lBQXlndnlHdkVjeGxJR3lVVDNVRExWRHVhZzNHb1JHb2d2UVpIUXhtbzhXb0p2UWNyUWFQWXcyb2VmUXEyZ1AybzgrUThjd3dPZ1lCelBFYkRBdXhzTkNzVGdzQ1pOank3RWlyQXlyeGhxd1Zxd0R1NG4xWTgreGR3UVNnVVhBQ1RZRWQwSWdZUjVCU0ZoTVdFN1lTS2dnSENRMEVkb0pOd2tEaEZIQ0p5S1RxRXUwSnJvUitjUVlZakl4aDFoSUxDUFdFbzhUTHhCN2lFUEVOeVFTaVVNeUo3bVFBa214cEZUU0V0SkcwbTVTSStrc3FaczBTQm9qazhuYVpHdXlCem1VTENBcnlJWGtuZVRENURQa0crUWg4bHNLbldKQWNhVDRVK0lvVXNwcVNobmxFT1UwNVFabG1ESkJWYU9hVXQyb29WUVJOWTlhUXEyaHRsS3ZVWWVvRXpSMW1qbk5neFpKUzZXdG9wWFRHbWdYYVBkcHIraDB1aEhkbFI1T2w5Qlgwc3ZwUitpWDZBUDBkd3dOaGhXRHg0aG5LQm1iR0FjWVp4bDNHSytZVEtZWjA0c1p4MVF3TnpIcm1PZVpENWx2VlZncXRpcDhGWkhLQ3BWS2xTYVZHeW92VkttcXBxcmVxZ3RWODFYTFZJK3BYbE45cmtaVk0xUGpxUW5VbHF0VnFwMVE2MU1iVTJlcE82aUhxbWVvYjFRL3BINVovWWtHV2NOTXcwOURwRkdnc1YvanZNWWdDMk1aczNnc0lXc05xNFoxZ1RYRUpySE4yWHgyS3J1WS9SMjdpejJxcWFFNVF6TktNMWV6VXZPVVpqOEg0NWh4K0p4MFRnbm5LS2VYODM2SzNoVHZLZUlwRzZZMFRMa3haVnhycXBhWGxsaXJTS3RScTBmcnZUYXU3YWVkcHIxRnUxbjdnUTVCeDBvblhDZEhaNC9PQlozblU5bFQzYWNLcHhaTlBUcjFyaTZxYTZVYm9idEVkNzl1cCs2WW5yNWVnSjVNYjZmZWViM24raHg5TC8xVS9XMzZwL1ZIREZnR3N3d2tCdHNNemhnOHhUVnhiendkTDhmYjhWRkRYY05BUTZWaGxXR1g0WVNSdWRFOG85VkdqVVlQakduR1hPTWs0MjNHYmNhakpnWW1JU1pMVGVwTjdwcFNUYm1tS2FZN1REdE14ODNNemFMTjFwazFtejB4MXpMbm0rZWIxNXZmdDJCYWVGb3N0cWkydUdWSnN1UmFwbG51dHJ4dWhWbzVXYVZZVlZwZHMwYXRuYTBsMXJ1dHU2Y1JwN2xPazA2cm50Wm53N0R4dHNtMnFiY1pzT1hZQnR1dXRtMjJmV0ZuWWhkbnQ4V3V3KzZUdlpOOXVuMk4vVDBIRFlmWkRxc2RXaDErYzdSeUZEcFdPdDZhenB6dVAzM0Y5SmJwTDJkWXp4RFAyRFBqdGhQTEtjUnBuVk9iMDBkbkYyZTVjNFB6aUl1SlM0TExMcGMrTHBzYnh0M0l2ZVJLZFBWeFhlRjYwdldkbTdPYnd1Mm8yNi91TnU1cDdvZmNuOHcwbnltZVdUTnowTVBJUStCUjVkRS9DNStWTUd2ZnJINVBRMCtCWjdYbkl5OWpMNUZYcmRld3Q2VjNxdmRoN3hjKzlqNXluK00rNHp3MzNqTGVXVi9NTjhDM3lMZkxUOE52bmwrRjMwTi9JLzlrLzNyLzBRQ25nQ1VCWndPSmdVR0JXd0w3K0hwOEliK09QenJiWmZheTJlMUJqS0M1UVJWQmo0S3RndVhCclNGb3lPeVFyU0gzNTVqT2tjNXBEb1ZRZnVqVzBBZGg1bUdMdzM0TUo0V0hoVmVHUDQ1d2lGZ2EwVEdYTlhmUjNFTnozMFQ2UkpaRTNwdG5NVTg1cnkxS05TbytxaTVxUE5vM3VqUzZQOFl1WmxuTTFWaWRXRWxzU3h3NUxpcXVObTVzdnQvODdmT0g0cDNpQytON0Y1Z3Z5RjF3ZWFIT3d2U0ZweGFwTGhJc09wWkFUSWhPT0pUd1FSQXFxQmFNSmZJVGR5V09Dbm5DSGNKbklpL1JOdEdJMkVOY0toNU84a2dxVFhxUzdKRzhOWGtreFRPbExPVzVoQ2Vwa0x4TURVemRtenFlRnBwMklHMHlQVHE5TVlPU2taQnhRcW9oVFpPMlorcG41bVoyeTZ4bGhiTCt4VzZMdHk4ZWxRZkphN09RckFWWkxRcTJRcWJvVkZvbzF5b0hzbWRsVjJhL3pZbktPWmFybml2TjdjeXp5dHVRTjV6dm4vL3RFc0lTNFpLMnBZWkxWeTBkV09hOXJHbzVzanh4ZWRzSzR4VUZLNFpXQnF3OHVJcTJLbTNWVDZ2dFY1ZXVmcjBtZWsxcmdWN0J5b0xCdFFGcjZ3dFZDdVdGZmV2YzErMWRUMWd2V2QrMVlmcUduUnMrRlltS3JoVGJGNWNWZjlnbzNIamxHNGR2eXIrWjNKUzBxYXZFdVdUUFp0Sm02ZWJlTFo1YkRwYXFsK2FYRG00TjJkcTBEZDlXdE8zMTlrWGJMNWZOS051N2c3WkR1YU8vUExpOFphZkp6czA3UDFTa1ZQUlUrbFEyN3RMZHRXSFgrRzdSN2h0N3ZQWTA3TlhiVzd6My9UN0p2dHRWQVZWTjFXYlZaZnRKKzdQM1A2NkpxdW40bHZ0dFhhMU9iWEh0eHdQU0EvMEhJdzYyMTduVTFSM1NQVlJTajlZcjYwY094eCsrL3AzdmR5ME5OZzFWalp6RzRpTndSSG5rNmZjSjMvY2VEVHJhZG94N3JPRUgweDkySFdjZEwycENtdkthUnB0VG12dGJZbHU2VDh3KzBkYnEzbnI4UjlzZkQ1dzBQRmw1U3ZOVXlXbmE2WUxUazJmeXo0eWRsWjE5Zmk3NTNHRGJvclo3NTJQTzMyb1BiKys2RUhUaDBrWC9pK2M3dkR2T1hQSzRkUEt5MitVVFY3aFhtcTg2WDIzcWRPbzgvcFBUVDhlN25MdWFycmxjYTdudWVyMjFlMmIzNlJ1ZU44N2Q5TDE1OFJiLzF0V2VPVDNkdmZONmIvZkY5L1hmRnQxK2NpZjl6c3U3MlhjbjdxMjhUN3hmOUVEdFFkbEQzWWZWUDF2KzNOanYzSDlxd0hlZzg5SGNSL2NHaFlQUC9wSDFqdzlEQlkrWmo4dUdEWWJybmpnK09UbmlQM0w5NmZ5blE4OWt6eWFlRi82aS9zdXVGeFl2ZnZqVjY5Zk8wWmpSb1pmeWw1Ty9iWHlsL2VyQTZ4bXYyOGJDeGg2K3lYZ3pNVjcwVnZ2dHdYZmNkeDN2bzk4UFQrUjhJSDhvLzJqNXNmVlQwS2Y3a3htVGsvOEVBNWp6L0dNekxkc0FBQUFnWTBoU1RRQUFlaVVBQUlDREFBRDUvd0FBZ09rQUFIVXdBQURxWUFBQU9wZ0FBQmR2a2wvRlJnQUFBK2RKUkVGVWVOckVsMDlvWEZVVXhuLzN2dmZtanpPZG1aY21jU2FrbVV5R3FvUW9sQlFYTVYySi83RHVsTFlHRkhGUk4wSjBJUWhTVUFwMjJZMHV0QlpMc2FKWU1HaEFUVjFJTnhKcjFaS21OcVVZTTVrWWsya21NekdabWZmdnVoaEp0VUxtalE3TldiNTMzemtmM3puZmQ5NFYwNWwrZ01lQlY0Rjd1VDF4Q1RnR2pJdnBUUDlEd0Zkc1R6d3NnZU5zWHh5WFFIWWJBV1Ixd0FhQ3ZqOFJBcFRDVzkvQUxaZkJkUkdCQUZvaWpnZ0dRYWxtQU5nNjRQbXVyZXU0eFNKMllabEF1cGZvbnZzUXdTQnVjWlhxNVN1NCtYbU03bDJJVUFoYzEwOUtUMittdUwzNE96SWNvdXZZVWN4blJ6Q1N5YzMzMWFuTEZONStsNVYzVGlJVGNYVFRSUGtBSWFZei9TVWcxdWlnV3l3UzZFMlQvWG9jcmEwTmdJM3Z2c2VhblNQWTEwdDRjQThBeFE4K0l2ZmNZYlEyRXhtSk5HcEoyVDhEbW81eVhhejVCZlNOQ3JuREw3TDI1VG1VVzBWcUlTTERRL1NjUG9FNWNnQ25VQ0EvK2pMQnZ0MnRZMERvT3M3S0NnaUpub2hUKzJVV295dUZDQmdveTZHYXUwcGtZQys3Sjg4and5Rm05dTZqTm5NTnZYM25sZ3hJdnd3b3gwRkxKSkFCQTdkVUp0Q2JSdWc2ZUFxaGE0U3pBNnhQWGFENC9ta0FZdnNmdzExYmJaaFhOcVZhejBNRWc4aG9CTHhieEtNVUdpSFd2NTBFSU5pWEJ0d1dBNUFTWlZrbzJ3WXAvK1VQQ2hzdEdxMWpyVnErVXVyTkdKQ3lMRlROUWprTzB2TVE0WENkQ1NsUkd4c29QQklIbndTZzhzT1BDQUl0QkFEWXVUbDZUcjBIbWtaKzlCV2tsQWpEUUZrV1hxVks2c2diUlBZOWdMTjhnOUxaTWZUT3poYTFRRXJzWEk3STBCRG1NMDlqamh3Z2N2OGdUdUZHbmU1U21VQW1UZkwxMXdESVBmOEN6dkl5V214SGl4aHdYSlJ0a3p4NkJJQzFMeWI0NDV2em14TFRFZ21zdVhsV1RwN0NtcDJqL05ubkJQcXlMWEpDSWJEemVTTERRMlRQalFPS21jRmhxbFBUR0x1NjZ6TWdCSGdLWjJrSjVYa1lxZVRtMG1vUVBweFFLYnphT3VhaEF3Q1VQaGxqL2VJa29jemRONldvRkVqUU90b1JRdHg4MWdvVmVKVUtnVlFQc2YyUEFyQjY5bE1FQmdqZzd6VVVDTm1jcW4wTm9Wc3FFK3kvQi8zT1RwUmxVL25wRW5yYnptYjMvbjhIb0NwVmd0bE1mZVZlK1JsbmNRa1pEclhzbDZneEFGeU03cTY2RDh3djRLNnQxWGRBaThKSEpnOHRZZGJiVVNoUWM4cndxM3ZMQVB3enREWVR2YjBEWlZ1dEFTRHZDQU1RZmVSQjdqcnpNWEpIZEd0dGpZMno4dUVaak01VUt3QW9NT3JIakdTU3hLR25HdnZXY29HbEUyOWhrUHIvUnFScU5ZeDBEM3BIdSsrK09yOHRZdWNYNm4vSlBveG95MEdVa1NpMXE5ZW9YTGpvRzRBV2o2T1pKc3F4RzRwQWI5UUc1ZGhvOFJoYVBOYlVkUHNvRG1CSTRQbzIzb3l1UytDbGJRUXdxZ01Ud0JOL1hjOEhibFBoS2VCTllPTFBBUURJc1hxYnNxWktHd0FBQUFCSlJVNUVya0pnZ2c9PSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIkZJRE9fMl8wIiwiRklET18yXzFfUFJFIiwiRklET18yXzEiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkQmxvYiIsImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJsYXJnZUJsb2JLZXkiLCJtaW5QaW5MZW5ndGgiXSwiYWFndWlkIjoiZWFiYjQ2Y2NlMjQxODBiZmFlOWU5NmZhNmQyOTc1Y2YiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJsYXJnZUJsb2JzIjp0cnVlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6dHJ1ZSwiYWx3YXlzVXYiOmZhbHNlfSwibWF4TXNnU2l6ZSI6MTUzNiwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0Ijo4LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjk2LCJ0cmFuc3BvcnRzIjpbInVzYiIsIm5mYyJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi04fV0sIm1heFNlcmlhbGl6ZWRMYXJnZUJsb2JBcnJheSI6MjA0OCwiZm9yY2VQSU5DaGFuZ2UiOmZhbHNlLCJtaW5QSU5MZW5ndGgiOjYsImZpcm13YXJlVmVyc2lvbiI6MSwibWF4Q3JlZEJsb2JMZW5ndGgiOjMyLCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6NiwiY2VydGlmaWNhdGlvbnMiOnsiRklETyI6MX0sInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjo1MH19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTEyLTI3IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiVE9LRU4yIFBJTiBQbHVzIFNlY3VyaXR5IEtleSBTZXJpZXMiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI0MTIyNzAwNCIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTAxLTE3IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjI1NiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJUT0tFTjIgUElOIFBsdXMgU2VjdXJpdHkgS2V5IFNlcmllcyIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjQwMTE3MDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjIiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0wMS0xNyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyNTZ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjQtMTItMzAifSx7ImFhZ3VpZCI6IjUzNDE0ZDUzLTU1NGUtNDcwMC0wMDAwLTAwMDAwMDAwMDAwMCIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiNTM0MTRkNTMtNTU0ZS00NzAwLTAwMDAtMDAwMDAwMDAwMDAwIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlNhbXN1bmcgUGFzcyJ9LCJkZXNjcmlwdGlvbiI6IlNhbXN1bmcgUGFzcyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoyLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInRlZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJ0ZWUiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiaW50ZXJuYWwiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNwakNDQWtxZ0F3SUJBZ0lCQXpBTUJnZ3Foa2pPUFFRREFnVUFNSUdtTVI4d0hRWURWUVFERXhaVFlXMXpkVzVuSUVWc1pXTjBjbTl1YVdOeklFTkJNUnd3R2dZRFZRUUtFeE5UWVcxemRXNW5JRVZzWldOMGNtOXVhV056TVJjd0ZRWURWUVFMRXc1VFlXMXpkVzVuSUUxdlltbHNaVEVUTUJFR0ExVUVCeE1LVTNWM2IyNGdZMmwwZVRFTE1Ba0dBMVVFQmhNQ1MxSXhLakFvQmdvSmtpYUprL0lzWkFFQkRCcFRZVzF6ZFc1blJHVjJhV05sVW05dmRFTkJTMlY1WDBWRFF6QWdGdzB5TXpBNU1USXdNREk1TkRSYUdBOHlNRFk1TVRJek1URTBOVGsxT1Zvd2dhWXhIekFkQmdOVkJBTVRGbE5oYlhOMWJtY2dSV3hsWTNSeWIyNXBZM01nUTBFeEhEQWFCZ05WQkFvVEUxTmhiWE4xYm1jZ1JXeGxZM1J5YjI1cFkzTXhGekFWQmdOVkJBc1REbE5oYlhOMWJtY2dUVzlpYVd4bE1STXdFUVlEVlFRSEV3cFRkWGR2YmlCamFYUjVNUXN3Q1FZRFZRUUdFd0pMVWpFcU1DZ0dDZ21TSm9tVDhpeGtBUUVNR2xOaGJYTjFibWRFWlhacFkyVlNiMjkwUTBGTFpYbGZSVU5ETUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFN20ydTNaMXhYVktmSldOeU5FM0hMMk0wTlpNT29BRElaTGxzNTluUnRDSHR2UjFtZ1UyeVpOdE9jWVBPNTZ1NURpcmc3bWtTN1NSTXhlWjZzWGVlM0tOak1HRXdId1lEVlIwakJCZ3dGb0FVc3BsemE3ZG5NU3lUZEhpcEpLazNQR09RUmtFd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBT0JnTlZIUThCQWY4RUJBTUNBUVl3SFFZRFZSME9CQllFRkxLWmMydTNaekVzazNSNHFTU3BOenhqa0VaQk1Bd0dDQ3FHU000OUJBTUNCUUFEU0FBd1JRSWdOTXpvRjczRGtTWmIxRlgycU52R09kZjd5OFpZS1FOc1dyaDJObHdxUWo4Q0lRRGRPNmkra2U1ZTVLK2tFcFhsOU9YdTI4V3V1bCtaeTRKZzRtRlRLQ0xTVUE9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIWmxjbk5wYjI0OUlqRXVNU0lnZDJsa2RHZzlJalV5Y0hnaUlHaGxhV2RvZEQwaU5USndlQ0lnZG1sbGQwSnZlRDBpTUNBd0lEVXlMakFnTlRJdU1DSWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklpQjRiV3h1Y3pwNGJHbHVhejBpYUhSMGNEb3ZMM2QzZHk1M015NXZjbWN2TVRrNU9TOTRiR2x1YXlJK1BHUmxabk0rUEdOc2FYQlFZWFJvSUdsa1BTSnBNQ0krUEhCaGRHZ2daRDBpVFRNMk1Dd3dJRXd6TmpBc09EQXdJRXd3TERnd01DQk1NQ3d3SUV3ek5qQXNNQ0JhSWo0OEwzQmhkR2crUEM5amJHbHdVR0YwYUQ0OFkyeHBjRkJoZEdnZ2FXUTlJbWt4SWo0OGNHRjBhQ0JrUFNKTk1qWXNNQ0JETXpNdU9Ua3hNREkzT0N3d0lEUXhMakV6T1RVNE16TXNNQzQ1TnpVZ05EVXVPVEE0TnpjM09DdzFMamMzTnpjM056YzRJRU0wT1M0M01UQXhPVFEwTERrdU5qQTFPVEUyTmpjZ05USXNNVFV1T0RZMU1EVTFOaUExTWl3eU5pQkROVElzTXpZdU1UTTBPVFEwTkNBME9TNDNNRGs0TXpNekxEUXlMak01TkRRME5EUWdORFV1T1RBNE1EVTFOaXcwTmk0eU1qSTFPRE16SUVNME1TNHhNemc0TmpFeExEVXhMakF5TkRZek9Ea2dNek11T1Rrd016QTFOaXcxTWlBeU5pdzFNaUJETVRndU1EQTRPVGN5TWl3MU1pQXhNQzQ0TmpBM056YzRMRFV4TGpBeU5EWXpPRGtnTmk0d09URTFPRE16TXl3ME5pNHlNakkxT0RNeklFTXlMakk1TURFMk5qWTNMRFF5TGpNNU5EUTBORFFnTUN3ek5pNHhNelE1TkRRMElEQXNNallnUXpBc01UVXVPRFkxTURVMU5pQXlMakk0T1Rnd05UVTJMRGt1TmpBMU5UVTFOVFlnTmk0d09UQTROakV4TVN3MUxqYzNOemMzTnpjNElFTXhNQzQ0TmpBd05UVTJMREF1T1RjMUlERTRMakF3T0RZeE1URXNNQ0F5Tml3d0lGb2lQand2Y0dGMGFENDhMMk5zYVhCUVlYUm9QanhzYVc1bFlYSkhjbUZrYVdWdWRDQnBaRDBpYVRJaUlIZ3hQU0l5Tm5CNElpQjVNVDBpTlRKd2VDSWdlREk5SWpJMmNIZ2lJSGt5UFNJd0xqRTVOVGt5TVRFME9IQjRJaUJuY21Ga2FXVnVkRlZ1YVhSelBTSjFjMlZ5VTNCaFkyVlBibFZ6WlNJK1BITjBiM0FnYzNSdmNDMWpiMnh2Y2owaUl6STVNamxDTWlJZ2IyWm1jMlYwUFNJd0pTSStQQzl6ZEc5d1BqeHpkRzl3SUhOMGIzQXRZMjlzYjNJOUlpTXhRVFF3UTBNaUlHOW1abk5sZEQwaU1UQXdKU0krUEM5emRHOXdQand2YkdsdVpXRnlSM0poWkdsbGJuUStQR05zYVhCUVlYUm9JR2xrUFNKcE15SStQSEJoZEdnZ1pEMGlUVE0zTGpFNU5EUTBORFFzTUNCTU16Y3VNVGswTkRRME5DdzFMamN5TWpJeU1qSXlJRXd3TERVdU56SXlNakl5TWpJZ1REQXNNQ0JNTXpjdU1UazBORFEwTkN3d0lGb2lQand2Y0dGMGFENDhMMk5zYVhCUVlYUm9QanhqYkdsd1VHRjBhQ0JwWkQwaWFUUWlQanh3WVhSb0lHUTlJazB4TGpnNE16UXlNakV6TERBZ1F6SXVOakl3TnpVNU9EY3NNQ0F6TGpZME16VTJOREF5TERBdU1UZ3hOakV3T0RjeElETXVOalF6TlRZME1ESXNNUzR6TWpFeE1UZ3hPU0JNTXk0Mk5ETTFOalF3TWl3eExqWTRPVEV4TlRZeUlFd3lMak0wTWpjNU16TTVMREV1TmpnNU1URTFOaklnVERJdU16UXlOemt6TXprc01TNHpOalE1TURZMU9TQkRNaTR6TkRJM09UTXpPU3d4TGpBM09UVTNOVGN6SURJdU1UWXpNVGsyTmpRc01DNDRPRGt4TlRNek56RWdNUzQ0TlRneE56WTRMREF1T0RnNU1UVXpNemN4SUVNeExqVXlPVE14TnpnNExEQXVPRGc1TVRVek16Y3hJREV1TkRFMk5EZ3pPVGdzTVM0d056VXlOekE0T0NBeExqTTRNRGcxT1RJM0xERXVNalF5TVRVeE1Ea2dRekV1TXpZMk56azJPRGdzTVM0ek1EQXlOalkxTnlBeExqTTJNRGt3TkRBNExERXVOREV4TnpJeE9EUWdNUzR6T0RZeE5EazBNU3d4TGpVeE56STFOemt6SUVNeExqVXpORFl3T0RBeUxESXVNVE13TkRrM015QXpMalV4TWpRME9UQXlMREl1TkRVMk1URTRPRGNnTXk0M016STFOVGc0TXl3ekxqVTFOVFV6TnpJM0lFTXpMamMxTXpjeE9UTTNMRE11TmpZM01EVTVPQ0F6TGpnd01EYzVORGc0TERNdU9UWXhNVE0wT0RnZ015NDNNemd3TkRrNE5pdzBMalF4TXpBd09UWXpJRU16TGpZeE1UZ3lNekl4TERVdU1qZzVOalV5TURNZ01pNDRNemd3TlRjeUxEVXVOakV5TVRjNU5Ea2dNUzQ0T1RVNE1UQTBNeXcxTGpZeE1qRTNPVFE1SUVNd0xqa3hOVGN5T1RFek5pdzFMall4TWpFM09UUTVJREFzTlM0eU5UazVPRGc1TWlBd0xEUXVNRGc0T0RBd05pQk1NQ3d6TGpZNE9ESTBOemN6SUV3eExqTTVPVFF3T0RJekxETXVOamc0TWpRM056TWdUREV1TkRBeE1qRTJNalVzTkM0eE9USXpNVGczT1NCRE1TNDBNREV5TVRZeU5TdzBMalEzT0RZMU9EWWdNUzQxT1RZd09EQTNNeXcwTGpZMk9USTRNamMxSURFdU9USXhPRFU1TXpJc05DNDJOamt5T0RJM05TQkRNaTR5TnpBM05EQTBMRFF1TmpZNU1qZ3lOelVnTWk0ek9EZ3pPVFUyT1N3MExqUTVNVFV3TlRnNUlESXVORE14TVRnMU5USXNOQzR6TVRVME1UQTJNU0JETWk0ME5UWXlNams1Tml3MExqSXhOak01T1RBMUlESXVORGN4TkRrM05qa3NOQzR3TlRRMk16QTROU0F5TGpReU1UQXdOekF6TERNdU9USTROalEyTnpFZ1F6SXVNVFV4TXpRME1EWXNNeTR5TlRBNU5qa3hNU0F3TGpJNU56a3lNVFkzTnl3eUxqazBNVEk0T0RrMUlEQXVNRGN5TVRFNU9UUTNNeXd4TGpnM01ETXlNamt5SUVNd0xqQXhOek0wTXpZd09EVXNNUzQyTURVMk5ERTRPU0F3TGpBeU16Z3pPVEE1TVRJc01TNHpPVGt3TnpZek5DQXdMakEyTVRjME1EVTJOemNzTVM0eE5qUXlOakF5TVNCRE1DNHlNREF5TWpFMU9ERXNNQzR6TURnNE56TXdNRGNnTUM0NU5UY3hNVEkzTWpjc01DQXhMamc0TXpReU1qRXpMREFnV2lCTk1UZ3VPRFF4TVRFNE5pd3dMakF5T1RZMk16RXdPRGtnUXpFNUxqVTNNRFE0Tnpjc01DNHdNamsyTmpNeE1EZzVJREl3TGpVM056ZzVNREVzTUM0eU1EWTVOamt4TWprZ01qQXVOVGMzT0Rrd01Td3hMak16TlRZME56QTJJRXd5TUM0MU56YzRPVEF4TERFdU56QXdOelV5TVRjZ1RERTVMakk1TWpFNE5qUXNNUzQzTURBM05USXhOeUJNTVRrdU1qa3lNVGcyTkN3eExqTTRNRFEwTkRReElFTXhPUzR5T1RJeE9EWTBMREV1TURrM05EQXdOU0F4T1M0eE1UVTJNRE1zTUM0NU1EZzNPVFF5TlNBeE9DNDRNVFEwTURBeExEQXVPVEE0TnprME1qVWdRekU0TGpRNU1USXpNekVzTUM0NU1EZzNPVFF5TlNBeE9DNHpOemt3TmpnNExERXVNRGt4TmpFMU9EWWdNVGd1TXpReE56Y3NNUzR5TlRrek56QTBPU0JETVRndU16STVOemd6TlN3eExqTXhOamd4TXpNMElERTRMak15TXpBNE56RXNNUzQwTWpZMk5UUXlPQ0F4T0M0ek5EWXlOVFkyTERFdU5UTXdNVGN5TkRnZ1F6RTRMalE1TkRNeE16UXNNaTR4TXpZME1UWTBOeUF5TUM0ME5UQXpPVEV5TERJdU5EWXpNVEUwTWpVZ01qQXVOalkyTURFME5Dd3pMalUwT1RJeE5EVXlJRU15TUM0Mk9EazJOVEkyTERNdU5qVTVNRFUxTkRjZ01qQXVOek0wTURRNU5pd3pMamsxTURjd09UQTNJREl3TGpZM05URTRPRFVzTkM0ek9UZzBNVE0xSUVNeU1DNDFOVEUzTnpRekxEVXVNalkxTVRBd09UTWdNVGt1TnpneU5EazBPU3cxTGpVNE5EZ3dNek16SURFNExqZzFNVEE1TmpJc05TNDFPRFE0TURNek15QkRNVGN1T0RjNE5UZ3hPQ3cxTGpVNE5EZ3dNek16SURFMkxqazNOVFkwTWpnc05TNHlNelUwTXpjNE15QXhOaTQ1TnpVMk5ESTRMRFF1TURjM05UQXdNemNnVERFMkxqazNOVFkwTWpnc015NDJOemM0T0RreE9TQk1NVGd1TXpVNU5URTFOQ3d6TGpZM056ZzRPVEU1SUV3eE9DNHpOVGs1TVRjeUxEUXVNVGd3TmpFME9UZ2dRekU0TGpNMU9Ua3hOeklzTkM0ME5qTXdOVE0xTWlBeE9DNDFOVFV4T0RNMExEUXVOalV3TkRRNU1ETWdNVGd1T0RjNU56VTJOeXcwTGpZMU1EUTBPVEF6SUVNeE9TNHlNalUzTlRnekxEUXVOalV3TkRRNU1ETWdNVGt1TXpReU5EYzJNU3cwTGpRM05URTJNRGt4SURFNUxqTTRNak00TmpVc05DNHpNREE0T0RFM05DQkRNVGt1TkRBMk16VTVOU3cwTGpJd05UVTJPVFkySURFNUxqUXhPVGd4T1RJc05DNHdORE00TURFME5pQXhPUzR6TnpJNE1UQTNMRE11T1RFMk9UUXlPU0JETVRrdU1UQTJOREk0T1N3ekxqSTBOekkyT1RZeklERTNMakkzTVRFMU16Y3NNaTQ1TkRBd056Z3lNU0F4Tnk0d05EYzNOakkzTERFdU9EZ3hNVFV5TXlCRE1UWXVPVGt3TVRBMk9Td3hMall4T1RNMk16WWdNVFl1T1RrNU1EZ3dNU3d4TGpReE5ESXhNRFU0SURFM0xqQXpOVE13TnpRc01TNHhPRE13T1RNNU15QkRNVGN1TVRjeU16RTFNeXd3TGpNek16Z3lOelk0TmlBeE55NDVNakkxTVN3d0xqQXlPVFkyTXpFd09Ea2dNVGd1T0RReE1URTROaXd3TGpBeU9UWTJNekV3T0RrZ1dpQk5Nak11TWpNMk5EZzBOU3d3TGpFMk5qZzRNREl4TVNCTU1qTXVNak0yTWpJNU1TdzBMakV4TVRNM016WTJJRU15TXk0eU16Y3lNRFl6TERRdU1UVTNPVGcwTmpJZ01qTXVNalF3T0RneE9DdzBMakl3TkRBMk56UTFJREl6TGpJME9UWTNOalFzTkM0eU5ERXhOVEU1TkNCRE1qTXVNamMxTVRJeU5pdzBMak0zTVRJek9URXpJREl6TGpNNE56YzFOVFlzTkM0Mk1qRTFPVE13T0NBeU15NDNORFk1TkRreExEUXVOakl4TlRrek1EZ2dRekkwTGpFeE1EZ3pNREVzTkM0Mk1qRTFPVE13T0NBeU5DNHlNakExT0RNMkxEUXVNemN4TWpNNU1UTWdNalF1TWpRNE1UQTFOeXcwTGpJME1URTFNVGswSUVNeU5DNHlOVGsyT1RBMUxEUXVNVGcxTlRJMU1pQXlOQzR5TmpFM05qWXpMRFF1TVRBNU5qVXlNaklnTWpRdU1qVTVOamt3TlN3MExqQTBNakV4T1RnNElFd3lOQzR5TlRrMk9UQTFMREF1TVRZMk9EZ3dNakV4SUV3eU5TNDFOemcyTURnekxEQXVNVFkyT0Rnd01qRXhJRXd5TlM0MU56ZzJNRGd6TERNdU9USXhPRFV6TVRJZ1F6STFMalU0TkRNd01ESXNOQzR3TVRnMk5EUTVPU0F5TlM0MU56UTNNalEwTERRdU1qRTJNems1TURVZ01qVXVOVFkzTkRJMU15dzBMakkyT0RFNU1UYzRJRU15TlM0ME56UTNORGMxTERVdU1qUTJOamN3TnprZ01qUXVOekEzTkRjM0xEVXVOVFkwTXpVMU1qa2dNak11TnpRMk9UUTVNU3cxTGpVMk5ETTFOVEk1SUVNeU1pNDNPRGd5T1RZeUxEVXVOVFkwTXpVMU1qa2dNakl1TURJd05UVTNMRFV1TWpRMk5qY3dOemtnTWpFdU9USTVOVFV6TWl3MExqSTJPREU1TVRjNElFTXlNUzQ1TWpNNE5qRXpMRFF1TWpFMk16azVNRFVnTWpFdU9URTJNamswTkN3MExqQXhPRFkwTkRrNUlESXhMamt4TnprMk9EVXNNeTQ1TWpFNE5UTXhNaUJNTWpFdU9URTNPVFk0TlN3d0xqRTJOamc0TURJeE1TQk1Nak11TWpNMk5EZzBOU3d3TGpFMk5qZzRNREl4TVNCYUlFMHpOQzQyTWprM05qSXhMREF1TURJMU9UWXpOakk0TWlCRE16VXVOVFV6T1RrMU5pd3dMakF5TlRrMk16WXlPRElnTXpZdU16WXdNRE00TWl3d0xqTXpOamcxTkRVek5DQXpOaTQwTlRnM05ESTNMREV1TXpFNU5UQXpPRGNnUXpNMkxqUTJOVFUzTXl3eExqTTVNVEU1TmpreUlETTJMalEyT0RNNE1UUXNNUzQwTmpVeE1UTTNPQ0F6Tmk0ME5qa3pOakEzTERFdU5USTJNVGd3TWpJZ1RETTJMalEyT1RBd05Dd3hMalkxTlRjMU5EQXlJRXd6Tmk0ME5qZzNNakF6TERFdU5qWTJNVGM0T0RRZ1RETTJMalEyT0RjeU1ETXNNUzQ0TXpnd016WTFOQ0JNTXpVdU1UVTFNell3TlN3eExqZ3pPREF6TmpVMElFd3pOUzR4TlRVeE5Td3hMalV6TXpVMU5UVTJJRU16TlM0eE5UUTBORGN4TERFdU5EazROek16TmpJZ016VXVNVFV4TkRrc01TNDBNRFUyTkRFeU15QXpOUzR4TXprME9UQXhMREV1TXpRMU1qWTFOekVnUXpNMUxqRXhOalkxTlRVc01TNHlNekV6TWpFM0lETTFMakF4TnpBNE1EUXNNQzQ1TmpZd016VXpNRFlnTXpRdU5qRTRNVGMzTkN3d0xqazJOakF6TlRNd05pQkRNelF1TWpNNE1UVTRNaXd3TGprMk5qQXpOVE13TmlBek5DNHhNalUxT1RJeExERXVNakUzTlRrNU9Ua2dNelF1TURrNU5qYzNNaXd4TGpNME5USTJOVGN4SUVNek5DNHdPREUzT1RjNExERXVOREUxTkRJeE16SWdNelF1TURjMk1UQTFPU3d4TGpVd09ERXhNREV5SURNMExqQTNOakV3TlRrc01TNDFPVEkzT1RRMklFd3pOQzR3TnpZeE1EVTVMRE11T1RnMk9EazJOeklnUXpNMExqQTNOakV3TlRrc05DNHdOVFEyTXpBNE5TQXpOQzR3T0RBeE9UQTNMRFF1TVRJM05qRXhOVEVnTXpRdU1EZzVOelkyTlN3MExqRTROakV6TURVM0lFTXpOQzR4TVRJMU16UXlMRFF1TXpJM05URTRJRE0wTGpJME16ZzFNREVzTkM0MU5qZ3lOVE16SURNMExqWXlNRGs0T1Rrc05DNDFOamd5TlRNeklFTXpOUzR3TURBME1EWTBMRFF1TlRZNE1qVXpNeUF6TlM0eE16UXhNek1zTkM0ek1qYzFNVGdnTXpVdU1UVTFNell3TlN3MExqRTROakV6TURVM0lFTXpOUzR4TmpZNU5EVXlMRFF1TVRJM05qRXhOVEVnTXpVdU1UY3dOakk0TWl3MExqQTFORFl6TURnMUlETTFMakUyT0RrMU5ERXNNeTQ1T0RZNE9UWTNNaUJNTXpVdU1UWTRPVFUwTVN3ekxqSXlPRGt3TmpjMklFd3pOQzQyTXpRME5EazJMRE11TWpJNE9UQTJOellnVERNMExqWXpORFEwT1RZc01pNDBOalE1TXpBek5pQk1Nell1TkRjNU1UWTJOeXd5TGpRMk5Ea3pNRE0ySUV3ek5pNDBOemt4TmpZM0xETXVPRFk0TlRFek16UWdRek0yTGpRM056QTVNRGdzTXk0NU5qUTBNekEzT0NBek5pNDBOelUwT0RNM0xEUXVNRE00TmpnNU5EVWdNell1TkRZd01ERTFMRFF1TWpFek9UYzNOVGNnUXpNMkxqTTNNamd5T0RJc05TNHhOamsxT0Rjd055QXpOUzQxTlRNNU9UVTJMRFV1TlRBNE16STBPVGNnTXpRdU5qSTJNRGM1TVN3MUxqVXdPRE15TkRrM0lFTXpNeTQzTURNNE5UUTFMRFV1TlRBNE16STBPVGNnTXpJdU9EYzVNek1zTlM0eE5qazFPRGN3TnlBek1pNDNPVE0yTVRZMExEUXVNakV6T1RjM05UY2dRek15TGpjM05Ua3pPQ3cwTGpBek9EWTRPVFExSURNeUxqYzNNamcxTnpZc015NDVOalEwTXpBM09DQXpNaTQzTnpJNE5UYzJMRE11T0RZNE5URXpNelFnVERNeUxqYzNNamcxTnpZc01TNDJOall4TnpnNE5DQkRNekl1TnpjeU9EVTNOaXd4TGpVM01ESTJNVFFnTXpJdU56ZzROekk0TERFdU5EQTVNRGs0TlRjZ016SXVOems1TVRBM05Dd3hMak14T1RVd016ZzNJRU16TWk0NU1UUXhOVEV4TERBdU16TTVOelEyT0RVMUlETXpMamN3TXpnMU5EVXNNQzR3TWpVNU5qTTJNamd5SURNMExqWXlPVGMyTWpFc01DNHdNalU1TmpNMk1qZ3lJRm9nVFRFeUxqRTBORGMwTkRjc01DNHhOalk0T0RBeU1URWdUREV5TGpnd01qSTJNVFlzTkM0eU5qRTFPVGs1T0NCTU1UTXVORFl3TVRnd05Dd3dMakUyTmpnNE1ESXhNU0JNTVRVdU5UZzFNamMwTml3d0xqRTJOamc0TURJeE1TQk1NVFV1TnpBeE9USTFOU3cxTGpRd05USXhNRE0ySUV3eE5DNHpPVFV5TmpJc05TNDBNRFV5TVRBek5pQk1NVFF1TXpVNU9ETTRNaXd3TGpVMU5Ua3pNVEExTkNCTU1UTXVORFl5TWpVMk1pdzFMalF3TlRJeE1ETTJJRXd4TWk0eE16azROVFl6TERVdU5EQTFNakV3TXpZZ1RERXhMakkwTXpBM056a3NNQzQxTlRVNU16RXdOVFFnVERFeExqSXdOemM0T0N3MUxqUXdOVEl4TURNMklFdzVMamt3TkRRd05UZ3NOUzQwTURVeU1UQXpOaUJNTVRBdU1ERTNNak01Tnl3d0xqRTJOamc0TURJeE1TQk1NVEl1TVRRME56UTBOeXd3TGpFMk5qZzRNREl4TVNCYUlFMDNMamt3TVRJMU1qVXNNQzR4TmpZNE9EQXlNVEVnVERndU9EWXpNalV6TlRnc05TNDBNRFV5TVRBek5pQk1OeTQwTmpRek1UUXhMRFV1TkRBMU1qRXdNellnVERZdU56VXpPREk0T0RNc01DNDFOVFU1TXpFd05UUWdURFl1TURJMU9EWTJNRElzTlM0ME1EVXlNVEF6TmlCTU5DNDJNVGN4TkRrNE15dzFMalF3TlRJeE1ETTJJRXcxTGpVNE16RTJPRGN6TERBdU1UWTJPRGd3TWpFeElFdzNMamt3TVRJMU1qVXNNQzR4TmpZNE9EQXlNVEVnV2lCTk1qZ3VNekEwT0RNMkxEVXVNelV3TlRreU5UY2dUREkzTGpBeU5EWXlNek1zTlM0ek5UQTFPVEkxTnlCTU1qY3VNREkwTmpJek15d3dMakUyTmpnNE1ESXhNU0JNTWpndU9UVTVPRGMxTXl3d0xqRTJOamc0TURJeE1TQk1NekF1TVRnM09Ua3dNeXcwTGpNNE5ETTFOVFEzSUV3ek1DNHhNVFk0TnpRNExEQXVNVFkyT0Rnd01qRXhJRXd6TVM0ME1EVTBOVGd4TERBdU1UWTJPRGd3TWpFeElFd3pNUzQwTURVME5UZ3hMRFV1TXpVd05Ua3lOVGNnVERJNUxqVTBPVFF5TkRFc05TNHpOVEExT1RJMU55Qk1Namd1TWpNc01DNDVPVGtnVERJNExqTXdORGd6Tml3MUxqTTFNRFU1TWpVM0lGb2lQand2Y0dGMGFENDhMMk5zYVhCUVlYUm9QanhqYkdsd1VHRjBhQ0JwWkQwaWFUVWlQanh3WVhSb0lHUTlJazB5TkM0ek16VXlPVFkyTERJdU5EY3dNRFkwTXpJZ1F6STFMak13T1RZMU1ESXNNaTQwTnpBd05qUXpNaUF5Tmk0eE1qRXpNak1zTWk0Mk5UWTJNRFUyTkNBeU5pNDNOamt5TnpZNExETXVNREk0T1Rjek5UWWdRekkzTGpReE56SXpNRFVzTXk0ME1ERTJPVGc0TXlBeU55NDVNamsxTURFM0xETXVPVEE0TkRNek5qY2dNamd1TXpBMk1Ea3dNaXcwTGpVMU1ESTFNREUxSUV3eU5pNHpPVFUwTlRjekxEVXVORGd5TlRrNU16Y2dRekkyTGpFNU5qQTROamtzTlM0eE5EWXpNalEzSURJMUxqa3hPVEU0TXpZc05DNDRPREF3T1RJek5pQXlOUzQxTmpRM05EY3pMRFF1TmpnME5qRTNNRGdnUXpJMUxqSXhNRE14TVRFc05DNDBPRGt4TkRFM09TQXlOQzQ0TURBME9UUXlMRFF1TXpreE1qSTFORGNnTWpRdU16TTFNamsyTml3MExqTTVNVEl5TlRRM0lFTXlNeTQ0TURNMk5ESXlMRFF1TXpreE1qSTFORGNnTWpNdU5ERXdORE01TlN3MExqUTVORGcxT1RVeklESXpMakUxTlRZNE9EVXNOQzQzTURJeE1qYzJOaUJETWpJdU9UQXdOVGt4TXl3MExqa3dPVE01TlRjNUlESXlMamMzTXpVMk1Ua3NOUzR4TkRrMU5EQTVNeUF5TWk0M056TTFOakU1TERVdU5ESXlNakExTnpNZ1F6SXlMamMzTXpVMk1Ua3NOUzQzTXpnME5qZ3pNU0F5TWk0NU5qRTROVFl5TERVdU9UWTFNRE16T0RFZ01qTXVNek00TkRRME55dzJMakV3TURnek1ERTNJRU15TXk0M01UUTJPRGNzTmk0eU16Y3pOREV5TlNBeU5DNHlOamc0TXprNExEWXVNemd5TURjeE5UZ2dNalF1T1RrNU9EWTBOaXcyTGpVek5EWTJNemd4SUVNeU5TNHpPVGcyTURVMExEWXVOakV4TVRNNE5pQXlOUzQzT1RrM05qa3NOaTQzTVRFMU5UWTBOQ0F5Tmk0eU1EUXpPVFFzTmk0NE16Y3pORFkzTlNCRE1qWXVOakE0TmpjeU9TdzJMamsyTWpjM09UY2dNall1T1RjMk9UVTBNeXczTGpFek1UZ3hNRFF6SURJM0xqTXdPVEl6T0RNc055NHpORFEzT1RZek1TQkRNamN1TmpReE5USXlNaXczTGpVMU56UXlORGd5SURJM0xqa3hNREV4T0RVc055NDRNamszTXpJeU5pQXlPQzR4TVRVd01qWTVMRGd1TVRZeU56a3dOeUJETWpndU16RTVPVE0xTkN3NExqUTVOVFE1TVRjNElESTRMalF5TWpNNE9UWXNPQzQ1TVRJMU1qazFOU0F5T0M0ME1qSXpPRGsyTERrdU5ERTBNall4TXpjZ1F6STRMalF5TWpNNE9UWXNPUzQzTlRJek1qSTRNeUF5T0M0ek5EUTROVFkzTERFd0xqRXdORE15TVRNZ01qZ3VNVGc1Tnprd09Dd3hNQzQwTmprMU5ESWdRekk0TGpBek5ETTNPRGdzTVRBdU9ETTBOell5T0NBeU55NDNPVE00TVRreExERXhMakUzTXpFNE1UWWdNamN1TkRZM01EY3pNU3d4TVM0ME9ETTNNalkwSUVNeU55NHhOREF6TWpjeUxERXhMamM1TkRrNE5pQXlOaTQzTWpjM05ERXpMREV5TGpBME9ETTFNelFnTWpZdU1qSTVNekUxTXl3eE1pNHlORFExTkRNMElFTXlOUzQzTXpBNE9Ea3pMREV5TGpRME1UQTVNRGdnTWpVdU1UTXlOemM0TWl3eE1pNDFNemt3TURjeElESTBMalF6TkRrNE1UZ3NNVEl1TlRNNU1EQTNNU0JETWpNdU16WXdOVGsyT1N3eE1pNDFNemt3TURjeElESXlMalEyT0RrMk9ESXNNVEl1TXpNeU9ERXhJREl4TGpjMk1EQTVOVGNzTVRFdU9USXdNRFl4TmlCRE1qRXVNRFV4TWpJek15d3hNUzQxTURZNU5UUTRJREl3TGpVd01qazFORGNzTVRBdU9URXdOVEl5T0NBeU1DNHhNVFV5T1N3eE1DNHhNekF3TlRFeElFd3lNaTR4T1RJd05qUTVMRGt1TVRZMU1UZ3lNalVnUXpJeUxqUXlORFkyTXpjc09TNDJNRFEzTXpNMk15QXlNaTQzTkRBek16TTFMRGt1T1RReU5ETTNOelFnTWpNdU1UTTVNRGMwTXl3eE1DNHhOemcyTlRFNUlFTXlNeTQxTXpjNE1UVXhMREV3TGpReE5EVXdPRGdnTWpRdU1EQXpNREV5Tml3eE1DNDFNekl3TnprNElESTBMalV6TkRZMk55d3hNQzQxTXpJd056azRJRU15TlM0d09EZzBOek0yTERFd0xqVXpNakEzT1RnZ01qVXVOVEF6T0RJNE5pd3hNQzQwTVRjM01qVWdNalV1Tnpnd056TXhPU3d4TUM0eE9Ea3dNVFV6SUVNeU5pNHdOVGN5T0RreExEa3VPVFU1T1RRNE16SWdNall1TVRrMk1EZzJPU3c1TGpZNE56WTBNRGc0SURJMkxqRTVOakE0Tmprc09TNHpOekV3TWpBNU5TQkRNall1TVRrMk1EZzJPU3c1TGpFNU5qWXlPVGd6SURJMkxqRXpNak01T1RJc09TNHdOVFV4TVRVM015QXlOaTR3TURVd01qTTJMRGd1T1RRMU56WXpPVElnUXpJMUxqZzNOelkwT0RFc09DNDRNemN4TWpZNE15QXlOUzQzTVRFMU1EWXhMRGd1TnpReE16VTBOallnTWpVdU5UQTJOVGszTml3NExqWTFPVGczTmpnMUlFTXlOUzR6TURFek5ETXhMRGd1TlRjNE1EUXhOamNnTWpVdU1EWXdOemd6TXl3NExqVXhNREUwTXpRNUlESTBMamM0TXpnNExEZ3VORFUxTVRFd01qTWdRekkwTGpVd05qazNOamNzT0M0ME1EQTNPVEUyT1NBeU5DNHlNVGc1T1RjeUxEZ3VNelF3TnpVMU5DQXlNeTQ1TVRrNU5ERTJMRGd1TWpjMU16VTROek1nUXpJekxqUTVPRGN3TWpVc09DNHhPRGd4TmpNeE9DQXlNeTR3T0RZME5qSTJMRGd1TURnME9EZzJORGNnTWpJdU5qZ3lNVGd6T0N3M0xqazJORGd4TXprZ1F6SXlMakkzTnprd05TdzNMamcwTlRBNU9EWTVJREl4TGpreE5URTJNVFlzTnk0Mk56ZzFOamswTnlBeU1TNDFPVE01TlRNNExEY3VORFkyTWprNE16RWdRekl4TGpJM01qYzBOVGtzTnk0eU5UTXpNVEkwTkNBeU1TNHdNVEkwTlRZNExEWXVPVGd3TmpRM05qUWdNakF1T0RFek1EZzJOQ3cyTGpZME9ETXdNemt5SUVNeU1DNDJNVE0zTVRZc05pNHpNVFU1TmpBeUlESXdMalV4TkRBek1EZ3NOUzQ0T1RnNU1qSTBNeUF5TUM0MU1UUXdNekE0TERVdU16azNOVFEzT1RjZ1F6SXdMalV4TkRBek1EZ3NOUzR3TVRVMU16RXpOeUF5TUM0Mk1EVTBNRGc1TERRdU5qUTNPREE1TVRJZ01qQXVOemc0TVRZMU1TdzBMakk1TXpZMk5qVWdRekl3TGprM01Ea3lNVE1zTXk0NU16a3hOalkxTXlBeU1TNHlNamcwTkRFMExETXVOakkyTVRJd01UZ2dNakV1TlRZd056STFOQ3d6TGpNMU16QTVPREF6SUVNeU1TNDRPVE13TURrekxETXVNRGd3Tnprd05Ua2dNakl1TWprME1UY3pMREl1T0RZMU5qWXdOVFlnTWpJdU56WTFNalUwT0N3eUxqY3dOek0xTURZZ1F6SXpMakl6TlRrNU1EUXNNaTQxTkRrd05EQTJNeUF5TXk0M05Ua3pNemMzTERJdU5EY3dNRFkwTXpJZ01qUXVNek0xTWprMk5pd3lMalEzTURBMk5ETXlJRm9nVFRNekxqRXdOek0xTVRVc01pNDBOekF3TmpRek1pQkRNelF1TURneE56QTFMREl1TkRjd01EWTBNeklnTXpRdU9Ea3pNemMzT1N3eUxqWTFOall3TlRZMElETTFMalUwTVRNek1UWXNNeTR3TWpnNU56TTFOaUJETXpZdU1UZzVNamcxTkN3ekxqUXdNVFk1T0RneklETTJMamN3TVRVMU5qVXNNeTQ1TURnME16TTJOeUF6Tnk0d056Z3hORFV4TERRdU5UVXdNalV3TVRVZ1RETTFMakUyTnpVeE1qSXNOUzQwT0RJMU9Ua3pOeUJETXpRdU9UWTRNVFF4T0N3MUxqRTBOak15TkRjZ016UXVOamt4TWpNNE5DdzBMamc0TURBNU1qTTJJRE0wTGpNek5qZ3dNaklzTkM0Mk9EUTJNVGN3T0NCRE16TXVPVGd5TXpZMU9TdzBMalE0T1RFME1UYzVJRE16TGpVM01qVTBPU3cwTGpNNU1USXlOVFEzSURNekxqRXdOek0xTVRVc05DNHpPVEV5TWpVME55QkRNekl1TlRjMU5qazNNU3cwTGpNNU1USXlOVFEzSURNeUxqRTRNalE1TkRRc05DNDBPVFE0TlRrMU15QXpNUzQ1TWpjM05ETXpMRFF1TnpBeU1USTNOallnUXpNeExqWTNNalkwTmpFc05DNDVNRGt6T1RVM09TQXpNUzQxTkRVMk1UWTNMRFV1TVRRNU5UUXdPVE1nTXpFdU5UUTFOakUyTnl3MUxqUXlNakl3TlRjeklFTXpNUzQxTkRVMk1UWTNMRFV1TnpNNE5EWTRNekVnTXpFdU56TXpPVEV4TERVdU9UWTFNRE16T0RFZ016SXVNVEV3TkRrNU5TdzJMakV3TURnek1ERTNJRU16TWk0ME9EWTNOREU1TERZdU1qTTNNelF4TWpVZ016TXVNRFF3T0RrME55dzJMak00TWpBM01UVTRJRE16TGpjM01Ua3hPVFFzTmk0MU16UTJOak00TVNCRE16UXVNVGN3TmpZd01pdzJMall4TVRFek9EWWdNelF1TlRjeE9ESXpPU3cyTGpjeE1UVTFOalEwSURNMExqazNOalEwT0Rrc05pNDRNemN6TkRZM05TQkRNelV1TXpnd056STNOeXcyTGprMk1qYzNPVGNnTXpVdU56UTVNREE1TVN3M0xqRXpNVGd4TURReklETTJMakE0TVRJNU16RXNOeTR6TkRRM09UWXpNU0JETXpZdU5ERXpOVGMzTVN3M0xqVTFOelF5TkRneUlETTJMalk0TWpFM016TXNOeTQ0TWprM016SXlOaUF6Tmk0NE9EY3dPREU0TERndU1UWXlOemt3TnlCRE16Y3VNRGt4T1Rrd01pdzRMalE1TlRRNU1UYzRJRE0zTGpFNU5EUTBORFFzT0M0NU1USTFNamsxTlNBek55NHhPVFEwTkRRMExEa3VOREUwTWpZeE16Y2dRek0zTGpFNU5EUTBORFFzT1M0M05USXpNakk0TXlBek55NHhNVFk1TVRFMUxERXdMakV3TkRNeU1UTWdNell1T1RZeE9EUTFOeXd4TUM0ME5qazFORElnUXpNMkxqZ3dOalF6TXpjc01UQXVPRE0wTnpZeU9DQXpOaTQxTmpVNE56TTVMREV4TGpFM016RTRNVFlnTXpZdU1qTTVNVEk0TERFeExqUTRNemN5TmpRZ1F6TTFMamt4TWpNNE1qRXNNVEV1TnprME9UZzJJRE0xTGpRNU9UYzVOakVzTVRJdU1EUTRNelV6TkNBek5TNHdNREV6TnpBeUxERXlMakkwTkRVME16UWdRek0wTGpVd01qazBORElzTVRJdU5EUXhNRGt3T0NBek15NDVNRFE0TXpNc01USXVOVE01TURBM01TQXpNeTR5TURjd016WTNMREV5TGpVek9UQXdOekVnUXpNeUxqRXpNalkxTVRnc01USXVOVE01TURBM01TQXpNUzR5TkRFd01qTXhMREV5TGpNek1qZ3hNU0F6TUM0MU16SXhOVEEyTERFeExqa3lNREEyTVRZZ1F6STVMamd5TXpJM09ERXNNVEV1TlRBMk9UVTBPQ0F5T1M0eU56VXdNRGsxTERFd0xqa3hNRFV5TWpnZ01qZ3VPRGczTXpRME9Td3hNQzR4TXpBd05URXhJRXd6TUM0NU5qUXhNVGs0TERrdU1UWTFNVGd5TWpVZ1F6TXhMakU1TmpjeE9EWXNPUzQyTURRM016TTJNeUF6TVM0MU1USXpPRGd6TERrdU9UUXlORE0zTnpRZ016RXVPVEV4TVRJNU1Td3hNQzR4TnpnMk5URTVJRU16TWk0ek1EazROams1TERFd0xqUXhORFV3T0RnZ016SXVOemMxTURZM05Td3hNQzQxTXpJd056azRJRE16TGpNd05qY3lNVGdzTVRBdU5UTXlNRGM1T0NCRE16TXVPRFl3TlRJNE5Td3hNQzQxTXpJd056azRJRE0wTGpJM05UZzRNelVzTVRBdU5ERTNOekkxSURNMExqVTFNamM0Tmpnc01UQXVNVGc1TURFMU15QkRNelF1T0RJNU16UTBMRGt1T1RVNU9UUTRNeklnTXpRdU9UWTRNVFF4T0N3NUxqWTROelkwTURnNElETTBMamsyT0RFME1UZ3NPUzR6TnpFd01qQTVOU0JETXpRdU9UWTRNVFF4T0N3NUxqRTVOall5T1RneklETTBMamt3TkRRMU5DdzVMakExTlRFeE5UY3pJRE0wTGpjM056QTNPRFVzT0M0NU5EVTNOak01TWlCRE16UXVOalE1TnpBeU9TdzRMamd6TnpFeU5qZ3pJRE0wTGpRNE16VTJNU3c0TGpjME1UTTFORFkySURNMExqSTNPRFkxTWpVc09DNDJOVGs0TnpZNE5TQkRNelF1TURjek16azNPU3c0TGpVM09EQTBNVFkzSURNekxqZ3pNamd6T0RJc09DNDFNVEF4TkRNME9TQXpNeTQxTlRVNU16UTRMRGd1TkRVMU1URXdNak1nUXpNekxqSTNPVEF6TVRVc09DNDBNREEzT1RFMk9TQXpNaTQ1T1RFd05USXhMRGd1TXpRd056VTFOQ0F6TWk0Mk9URTVPVFkxTERndU1qYzFNelU0TnpNZ1F6TXlMakkzTURjMU56TXNPQzR4T0RneE5qTXhPQ0F6TVM0NE5UZzFNVGMxTERndU1EZzBPRGcyTkRjZ016RXVORFUwTWpNNE5pdzNMamsyTkRneE16a2dRek14TGpBME9UazFPVGdzTnk0NE5EVXdPVGcyT1NBek1DNDJPRGN5TVRZMUxEY3VOamM0TlRZNU5EY2dNekF1TXpZMk1EQTROaXczTGpRMk5qSTVPRE14SUVNek1DNHdORFE0TURBNExEY3VNalV6TXpFeU5EUWdNamt1TnpnME5URXhOaXcyTGprNE1EWTBOelkwSURJNUxqVTROVEUwTVRJc05pNDJORGd6TURNNU1pQkRNamt1TXpnMU56Y3dPU3cyTGpNeE5UazJNRElnTWprdU1qZzJNRGcxTnl3MUxqZzVPRGt5TWpReklESTVMakk0TmpBNE5UY3NOUzR6T1RjMU5EYzVOeUJETWprdU1qZzJNRGcxTnl3MUxqQXhOVFV6TVRNM0lESTVMak0zTnpRMk16Z3NOQzQyTkRjNE1Ea3hNaUF5T1M0MU5qQXlNVGs1TERRdU1qa3pOalkyTlNCRE1qa3VOelF5T1RjMk1Td3pMamt6T1RFMk5qVXpJRE13TGpBd01EUTVOaklzTXk0Mk1qWXhNakF4T0NBek1DNHpNekkzT0RBeUxETXVNelV6TURrNE1ETWdRek13TGpZMk5UQTJORElzTXk0d09EQTNPVEExT1NBek1TNHdOall5TWpjNUxESXVPRFkxTmpZd05UWWdNekV1TlRNM016QTVOaXd5TGpjd056TTFNRFlnUXpNeUxqQXdPREEwTlRNc01pNDFORGt3TkRBMk15QXpNaTQxTXpFek9USTJMREl1TkRjd01EWTBNeklnTXpNdU1UQTNNelV4TlN3eUxqUTNNREEyTkRNeUlGb2dUVEV6TGpjM016SXdOVGNzTWk0ME56QXdNamcxT1NCRE1UUXVOREUxTmpJeE5Dd3lMalEzTURBeU9EVTVJREUxTGpBd09ERTVORFVzTWk0MU9UQXhNREV4TmlBeE5TNDFOVEE1TWpVc01pNDRNamsxTXpFMU9TQkRNVFl1TURrek16QTVOQ3d6TGpBMk9UWTNOamN6SURFMkxqVTBNakl6T0Rrc015NHpPVFkyTmpBd055QXhOaTQ0T1RZMk56VXhMRE11T0RFd09ETTRPVGNnVERFMkxqZzVOalkzTlRFc01pNDBPRGN4T0RFNE1TQk1NVGt1TVRNNU5Ua3lMREl1TkRnM01UZ3hPREVnVERFNUxqRXpPVFU1TWl3eE1pNDFNakU0TVRneElFd3hOaTQ0T1RZMk56VXhMREV5TGpVeU1UZ3hPREVnVERFMkxqZzVOalkzTlRFc01URXVNRGsxT1RVMk15QkRNVFl1TlRReU1qTTRPU3d4TVM0MU5EUXdPRFF6SURFMkxqQTRPREV4TnpRc01URXVPRGsyTnprM05TQXhOUzQxTXpRek1UQTRMREV5TGpFMU16Y3pPRFVnUXpFMExqazRNRFV3TkRJc01USXVOREV3TmpjNU5TQXhOQzR6T0RJek9UTXNNVEl1TlRNNE9UY3hOQ0F4TXk0M016azVOemN6TERFeUxqVXpPRGszTVRRZ1F6RXpMakUxTWprME1qTXNNVEl1TlRNNE9UY3hOQ0F4TWk0MU56UXlNVFF6TERFeUxqUXlOalF3TXpNZ01USXVNREF6Tnprek5Td3hNaTR5TURBMU5USTFJRU14TVM0ME16TXpOekkyTERFeExqazNORE0wTkRRZ01UQXVPVEl4TVRBeE5Td3hNUzQyTkRZeU9Ea2dNVEF1TkRZMk9UZ3dNU3d4TVM0eU1UWXpPRFl6SUVNeE1DNHdNVEk0TlRnMkxERXdMamM0TmpRNE16WWdPUzQyTkRjd01EQXhNU3d4TUM0eU5qQXdPVFFnT1M0ek56QTBOREk1TWl3NUxqWXpOelUzTkRreElFTTVMakE1TXpVek9UWXNPUzR3TVRRMk9UZzBOQ0E0TGprMU5UQTROemswTERndU16QTJOREV6TWpJZ09DNDVOVFV3T0RjNU5DdzNMalV4TXpBM05qVTRJRU00TGprMU5UQTROemswTERZdU56QTRNekEwTkRjZ09TNHdPVEEwTWpRME5DdzFMams1TlRBeE5qSXlJRGt1TXpZeU1UTTFPRElzTlM0ek56RTNPREkwSUVNNUxqWXpNelV3TVRBM0xEUXVOelE0T1RBMU9UTWdPUzQ1T1RNME56VXpPU3cwTGpJeU1qZzNNemN4SURFd0xqUTBNakExT0Rnc015NDNPVEk1TnpFd015QkRNVEF1T0Rrd05qUXlNU3d6TGpNMk1qY3hNRGs0SURFeExqUXdOVFk0TWpNc015NHdNelV3TVRJNU1pQXhNUzQ1T0RjeE56a3pMREl1T0RBNU5URTVORGtnUXpFeUxqVTJPRFkzTmpNc01pNDFPRE16TVRFek5DQXhNeTR4TmpRd01UZzBMREl1TkRjd01ESTROVGtnTVRNdU56Y3pNakExTnl3eUxqUTNNREF5T0RVNUlGb2dUVFF1TVRVek5UUTVOemdzTUNCRE5DNDNPRFE0T0Rrek5Td3dJRFV1TXpZMk16ZzJNeklzTUM0eE1UY3lNVE0zTURFZ05TNDRPVGd3TkRBMk9Td3dMak0xTVRrNU9EUTJNU0JETmk0ME1qazJPVFV3Tml3d0xqVTROalF5TlRnMk1pQTJMamc0T1RBd09EUTBMREF1T1RBek5EQXpNVFUySURjdU1qYzNNREU1TWpJc01TNHpNRFF3TURJME1pQkROeTQyTmpRMk9ETTROaXd4TGpjd05ESTBORE15SURjdU9UWTRPVE14TXpnc01pNHhOelU1TlRnZ09DNHhPVEE0TURBeE55d3lMamN4T1RFME16UTBJRU00TGpReE1qTXlNamd5TERNdU1qWXhPVGN4TlRJZ09DNDFNak13T0RReE5Td3pMamcwTWpNeU1qSTRJRGd1TlRJek1EZzBNVFVzTkM0ME5qQXhPVFUzTWlCRE9DNDFNak13T0RReE5TdzFMakEzTnpNMU5EUTBJRGd1TkRFeU16SXlPRElzTlM0Mk5qQTFOalF3T0NBNExqRTVNRGd3TURFM0xEWXVNakE1TkRZM01qWWdRemN1T1RZNE9UTXhNemdzTmk0M05UZ3pOekEwTkNBM0xqWTJORFk0TXpnMkxEY3VNak15T1RReU9Ua2dOeTR5Tnpjd01Ua3lNaXczTGpZek16VTBNakkxSUVNMkxqZzRPVEF3T0RRMExEZ3VNRE16TnpnME1UWWdOaTQwTWpZNU1qWXdNeXc0TGpNMU1URXhPRGd4SURVdU9EZzVOek16TlRrc09DNDFPRFV4T0RnNE5TQkROUzR6TlRJeE9UVXdNaXc0TGpneE9UWXhOakkxSURRdU56WTRNamMxTVRVc09DNDVNelk0TWprNU5TQTBMakV6Tmprek5UVTRMRGd1T1RNMk9ESTVPVFVnVERJdU1qVTVOVE14TURnc09DNDVNelk0TWprNU5TQk1NaTR5TlRrMU16RXdPQ3d4TWk0MU1qRTROVE01SUV3d0xERXlMalV5TVRnMU16a2dUREFzTUNCTU5DNHhOVE0xTkRrM09Dd3dJRm9nVFRFMExqRXdOVFE0T1Rjc05DNDFPREF5TXpJMU5pQkRNVE11TmprMU5qY3lPQ3cwTGpVNE1ESXpNalUySURFekxqTXhNRGMzTnpFc05DNDJOVFUyTXpVeU55QXhNaTQ1TlRBNE1ESTRMRFF1T0RBMU56STFPVGtnUXpFeUxqVTVNRGd5T0RVc05DNDVOVFU0TVRZM0lERXlMakkzTnpreU56Z3NOUzR4TmpBeU1qVTVOaUF4TWk0d01USXhNREEyTERVdU5ERTNOVEkwTXpNZ1F6RXhMamMwTmpJM016UXNOUzQyTnpVMU16YzBNU0F4TVM0MU16ZzFPVFU1TERVdU9UZ3hOemt6T1RRZ01URXVNemc1TURZNE1TdzJMak16TmpJNU16a3hJRU14TVM0eU16azFOREF6TERZdU5qa3dOemt6T0RrZ01URXVNVFkwTnpjMk5DdzNMakEzTVRjek9EUXhJREV4TGpFMk5EYzNOalFzTnk0ME9EQXhPVGsxTnlCRE1URXVNVFkwTnpjMk5DdzNMamc0T0RNd016TTNJREV4TGpJek9UVTBNRE1zT0M0eU56STBOalF4TXlBeE1TNHpPRGt3TmpneExEZ3VOak14T1RZM01USWdRekV4TGpVek9EVTVOVGtzT0M0NU9URTBOekF4TWlBeE1TNDNORFl5TnpNMExEa3VNekF5TnpJNU5qY2dNVEl1TURFeU1UQXdOaXc1TGpVMk5qUTJNRFVnUXpFeUxqSTNOemt5Tnpnc09TNDRNamswTnpZMk1TQXhNaTQxT1RBNE1qZzFMREV3TGpBek5qQXpJREV5TGprMU1EZ3dNamdzTVRBdU1UZzJPRE0xTkNCRE1UTXVNekV3TnpjM01Td3hNQzR6TXpZNU1qWXlJREV6TGpZNU5UWTNNamdzTVRBdU5ERXhPVGN4TlNBeE5DNHhNRFUwT0RrM0xERXdMalF4TVRrM01UVWdRekUwTGpVeU5qTTRNamNzTVRBdU5ERXhPVGN4TlNBeE5DNDVNVE0zTURFeUxERXdMak16TmpreU5qSWdNVFV1TWpZNE5EZ3pOaXd4TUM0eE9EWTRNelUwSUVNeE5TNDJNakk1TVRrNUxERXdMakF6TmpBeklERTFMamt5TnpFMk56UXNPUzQ0TWpZMk1UYzNOQ0F4Tmk0eE9ESXlOalEyTERrdU5UVTNPRGd6T0RrZ1F6RTJMalF6TnpBeE5UWXNPUzR5T0RrMU1EY3pPU0F4Tmk0Mk16a3hOVFVzT0M0NU56YzRPVEEwT0NBeE5pNDNPRGcyT0RJNExEZ3VOakl6TnpRM09EY2dRekUyTGprek9ESXhNRFlzT0M0eU5qazJNRFV5TmlBeE55NHdNVEk1TnpRMUxEY3VPRGc0TXpBek16Y2dNVGN1TURFeU9UYzBOU3czTGpRNE1ERTVPVFUzSUVNeE55NHdNVEk1TnpRMUxEY3VNRGd5T0RFMk5UUWdNVFl1T1RNNE1qRXdOaXcyTGpjd05qZzNOVEF6SURFMkxqYzRPRFk0TWpnc05pNHpOVEl6TnpVd05pQkRNVFl1TmpNNU1UVTFMRFV1T1RrM09EYzFNRGtnTVRZdU5ETTNNREUxTml3MUxqWTRPVEV4TnpBMUlERTJMakU0TWpJMk5EWXNOUzQwTWpZeE1EQTVOQ0JETVRVdU9USTNNVFkzTkN3MUxqRTJNamN5TnpRM0lERTFMall5TWpreE9Ua3NOQzQ1TlRVNE1UWTNJREUxTGpJMk9EUTRNellzTkM0NE1EVTNNalU1T1NCRE1UUXVPVEV6TnpBeE1pdzBMalkxTlRZek5USTNJREUwTGpVeU5qTTRNamNzTkM0MU9EQXlNekkxTmlBeE5DNHhNRFUwT0RrM0xEUXVOVGd3TWpNeU5UWWdXaUJOTXk0NU9EYzBNRGMzT1N3eUxqRTJNVE13TmpJNElFd3lMakkxT1RVek1UQTRMREl1TVRZeE16QTJNamdnVERJdU1qVTVOVE14TURnc05pNDNOelUxTWpNMk55Qk1NeTQ1T0RjME1EYzNPU3cyTGpjM05UVXlNelkzSUVNMExqTXhPVFk1TVRjM0xEWXVOemMxTlRJek5qY2dOQzQyTWpReU9EVTBNaXcyTGpjeE5UUTROek00SURRdU9UQXhNVGc0TnpRc05pNDFPVFUwTVRRNE1TQkROUzR4TnpjM05EVTVNeXcyTGpRM05UTTBNakkwSURVdU5ERTJNakk0T1RJc05pNHpNRGsxTWpjM05DQTFMall4TlRVNU9UTXNOaTR3T1Rnek1qZzJOaUJETlM0NE1UUTVOamsyT1N3MUxqZzROamMzTWpJeUlEVXVPVGN3TURNMU5UVXNOUzQyTkRBMU5URTVPQ0EyTGpBNE1EYzVOamc0TERVdU16WXdNemd5TmpVZ1F6WXVNVGt4TWpFeU1EZ3NOUzR3T0RBMU56QTJOeUEyTGpJME5qa3pPRGczTERRdU56Z3dNRE14T0RrZ05pNHlORFk1TXpnNE55dzBMalEyTURFNU5UY3lJRU0yTGpJME5qa3pPRGczTERRdU1UTTVOalEwT0RRZ05pNHhPVEV5TVRJd09Dd3pMamd6T1RRMk16UXhJRFl1TURnd056azJPRGdzTXk0MU5Ua3lPVFF3T0NCRE5TNDVOekF3TXpVMU5Td3pMakkzT1RFeU5EYzFJRFV1T0RFME9UWTVOamtzTXk0d016WXhNakEzTXlBMUxqWXhOVFU1T1RNc01pNDRNekF5T0RJd05DQkROUzQwTVRZeU1qZzVNaXd5TGpZeU5EUTBNek0wSURVdU1UYzNOelExT1RNc01pNDBOakUwT0RjM01TQTBMamt3TVRFNE9EYzBMREl1TXpReE5ERTFNVFFnUXpRdU5qSTBNamcxTkRJc01pNHlNakV6TkRJMU55QTBMak14T1RZNU1UYzNMREl1TVRZeE16QTJNamdnTXk0NU9EYzBNRGMzT1N3eUxqRTJNVE13TmpJNElGb2lQand2Y0dGMGFENDhMMk5zYVhCUVlYUm9Qand2WkdWbWN6NDhaeUIwY21GdWMyWnZjbTA5SW5SeVlXNXpiR0YwWlNndE1qTXpMakFnTFRFMk1DNHdLU0krUEdjZ1kyeHBjQzF3WVhSb1BTSjFjbXdvSTJrd0tTSStQR2NnZEhKaGJuTm1iM0p0UFNKMGNtRnVjMnhoZEdVb01qTXpMakFnTVRZd0xqQXBJajQ4WnlCMGNtRnVjMlp2Y20wOUluUnlZVzV6YkdGMFpTZ3RNQzR3TURBeE9EQTFOVFUxTlRVMU5USXdOelUwT0NBd0xqQXBJajQ4WnlCamJHbHdMWEJoZEdnOUluVnliQ2dqYVRFcElqNDhjRzlzZVdkdmJpQndiMmx1ZEhNOUlqQXNNQ0ExTWl3d0lEVXlMRFV5SURBc05USWdNQ3d3SWlCemRISnZhMlU5SW01dmJtVWlJR1pwYkd3OUluVnliQ2dqYVRJcElqNDhMM0J2YkhsbmIyNCtQQzluUGp3dlp6NDhaeUIwY21GdWMyWnZjbTA5SW5SeVlXNXpiR0YwWlNnM0xqVTRNek16TXpNek16TXpNek16TWlBeE5DNDRNRFUxTlRVMU5UVTFOVFUxTlNraVBqeG5JR05zYVhBdGNHRjBhRDBpZFhKc0tDTnBNeWtpUGp4bklHTnNhWEF0Y0dGMGFEMGlkWEpzS0NOcE5Da2lQanh3YjJ4NVoyOXVJSEJ2YVc1MGN6MGlNQ3d3SURNMkxqUTNPVEUyTmpjc01DQXpOaTQwTnpreE5qWTNMRFV1TmpFeU1UYzVORGtnTUN3MUxqWXhNakUzT1RRNUlEQXNNQ0lnYzNSeWIydGxQU0p1YjI1bElpQm1hV3hzUFNJalJrWkdSa1pHSWo0OEwzQnZiSGxuYjI0K1BDOW5Qand2Wno0OEwyYytQR2NnZEhKaGJuTm1iM0p0UFNKMGNtRnVjMnhoZEdVb055NDFPRE16TXpNek16TXpNek16TnpFZ01qUXVORE15TURnd01qVTFORGMzTXpNcElqNDhaeUJqYkdsd0xYQmhkR2c5SW5WeWJDZ2phVFVwSWo0OGNHOXNlV2R2YmlCd2IybHVkSE05SWpBc01DQXpOeTR4T1RRME5EUTBMREFnTXpjdU1UazBORFEwTkN3eE1pNDFNemt3TURjeElEQXNNVEl1TlRNNU1EQTNNU0F3TERBaUlITjBjbTlyWlQwaWJtOXVaU0lnWm1sc2JEMGlJMFpHUmtaR1JpSStQQzl3YjJ4NVoyOXVQand2Wno0OEwyYytQQzluUGp3dlp6NDhMMmMrUEM5emRtYysiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJGSURPXzJfMSJdLCJleHRlbnNpb25zIjpbInV2bSIsImRldmljZVB1YktleSJdLCJhYWd1aWQiOiI1MzQxNGQ1MzU1NGU0NzAwMDAwMDAwMDAwMDAwMDAwMCIsIm9wdGlvbnMiOnsicGxhdCI6dHJ1ZSwicmsiOmZhbHNlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6ZmFsc2UsInV2Ijp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZX19fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiTk9UX0ZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMDMtMTIifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI0LTAzLTEyIn0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiYmFiMTQ4NzE4MWZhNGI3ZjYwNjRiN2Y2YmJhNmNmZjllZmRmZDcxZSJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyJiYWIxNDg3MTgxZmE0YjdmNjA2NGI3ZjZiYmE2Y2ZmOWVmZGZkNzFlIl0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJTZWN1cml0eSBLZXkgTkZDIGJ5IFl1YmljbyJ9LCJkZXNjcmlwdGlvbiI6IlNlY3VyaXR5IEtleSBORkMgYnkgWXViaWNvIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyODcwNywicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCIsInJlbW90ZV9oYW5kbGUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURIakNDQWdhZ0F3SUJBZ0lFRzBCVDl6QU5CZ2txaGtpRzl3MEJBUXNGQURBdU1Td3dLZ1lEVlFRREV5TlpkV0pwWTI4Z1ZUSkdJRkp2YjNRZ1EwRWdVMlZ5YVdGc0lEUTFOekl3TURZek1UQWdGdzB4TkRBNE1ERXdNREF3TURCYUdBOHlNRFV3TURrd05EQXdNREF3TUZvd0xqRXNNQ29HQTFVRUF4TWpXWFZpYVdOdklGVXlSaUJTYjI5MElFTkJJRk5sY21saGJDQTBOVGN5TURBMk16RXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFDL2p3WXVoQlZscWFpWVdFTXNyV0Zpc2dKK1B0TTkxZVNycEk0VEs3VTUzbXdDSWF3U0RIeTh2VW1rNU4yS0FqOWFidlQ5TlA1U01TMWhRaTN1c3hvWUdvblhRZ2ZPNlpYeVVBOWErS0FrcWRGbkJubHl1Z1NlQ09lcDhFZFpGZnNhUkZ0TWprd3o1R2N6MlB5NHZJWXZDZE1IUHR3YXowYlZ1em5ldWVJRXo2VG5RakU2M1JkdDJ6YnduZWJ3VEc1WnliZVdTd2J6eStCSjM0WkhjVWhQQVk4OXlKUVh1RTBJek1aRmNFQmJQTlJiV0VDUktnanEvL3FUOW5tRE9GVmxTUkN0MndpcVBTemx1d24rditzdVFFQnNValRHTUVkMjV0S1hYVGtOVzIxd0lXYnhlU3lVb1RYd0x2R1M2eGx3UVNnTnBrMnFYWXdmOGlYZzdWV1pBZ01CQUFHalFqQkFNQjBHQTFVZERnUVdCQlFnSXZ6MGJOR0poamdwVG9rc3lLcFA5eHY5b0RBUEJnTlZIUk1FQ0RBR0FRSC9BZ0VBTUE0R0ExVWREd0VCL3dRRUF3SUJCakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBanZqdU9NRFNhK0pYRkNMeUJLc3ljWHRCVlpzSjRVZTNMYmFFc1BZNE1ZTi9oSVE1Wk01cDdFamZjbk1HNEN0WWtOc2ZOSGMwQWhCTGRxNDVyblQ4N3EvNk8zdlVFdE5NYWZiaFU2a3RoWDdZKzlYRk45TnBtWXhyK2VrVlk1eE94aThoOUpESWdvTVA0VkIxdVMwYXVuTDFJR3FyTm9vTDltbUZuTDJrTFZWZWU2L1ZSNkM1K0tTVENNQ1dwcE11SklaSUkydjlvNGRrb1o4WTdRUmpRbExmWXpkM3FHdEtidzd4YUYxVXNHLzV4VWIvQnR3YjJYMmc0SW5waUIveXQvM0NwUVhwaVdYL0s0bUJ2VUtpR24wNVpzcWVZMWd4NGcweExCcWNVOXBzbXlQeksrVnNndzJqZVJRNUpsS0R5cUUwaGViZkMxdHZGdTBDQ3JKRmN3PT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZkNBWUFBQUNHVnMrTUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFIWVlBQUIyR0FWMmlFNEVBQUFiTlNVUkJWRmhIcFZkN1ROVjFGRC8zZDU5d2VRU0lnUzlBUUFYY0ZMQVFaaTlmcGVWejF0WS9XVFpyNVd4cGM3VzVrbkxhNWpJM1o4NXNyUzJuTTJzanRXd1pTN0lVSDRINHhDbkVReDREQVpGNzRWN3VzODg1djkvbEluQnZWSi9CNFB2OW51LzVudS81bnZNNTU2ZnpBL1F2MEhiL0lyWDNWRktQbzQ1Y25tNGluVUlXWXdMRlJtWlFVdXdqRkcvTjFpUkhoMUVaME5SVlJ1ZHF0MUJkKzJuU0t5Uy9PaHlzMCtsazNlLzNrUTlxdkQ0WlV0YTRWVlNVdVkwZWlweWlUaEFmb2NvT1JWZ0R1dXczcUtSaUFkM3JiY0V0alRqWUlvZjZXYUhzQ216VlBXQ014K2NnaDh0THFXTUthTVdzVWpMcW8yUnRKSVEwb096bWVycFF1NGVzWmdzT05rR3hIN2Qwa2R2VFQxN3M0T01VN1ZJOFpoamdHYU0rQXE5aUVOdThQaWYxdWR6MDdNd3ZLV2Y4R2xWb0NFWTA0UEM1V2RUYVhZRmJSOHZOdkw1KzNLZ2ZiNXhOTXlhOVJhbUppeW5hTWxHVFZ0RmxyNmJhOXUrcHFuRVg0dU11UlJnalNZRWhyTjd1dEZGZTZscWFsN05ma3c1aW1BR0h5blBwYms4Vm1ZMHhzdG5wdGxGQ1ZDWXR6VHVCTjgzUXBNTGpUdGV2ZFB6U1VuSjdlOG1ranhaMzlmWGJLRGZsZFpxYnZVK1RVZ0duQlZGNmZRMmlQSGc0VzE2VVdVd3Z6YmsxNnNNWkUrUG4wcHZ6N0pTZXVBeWVzOGxjcENtYUt1by9wK3FXcjJVY3dJQUhXcnZQMFlFemhYQXRMQWJzc0hocDdpR2FtdnlpalA4cnlxclhVV1g5WG9vd3h5QXVmTkJycDQzUE9CRlhabGtmOE1EUmlxY3B5b3dBd3B1ejJ4K2ZXdnovRHRkZTlzbXN6eWd0Y1I2QzF3YmR6Qmw2T2xxNVdOWVk0b0dhdGhKTXJrVEV4MGpBUlNIQVZzKzVyWWtRTlhiK1FnZlBMc1E2Z1h5SW5zcmVRZm1wbTdSVkZZZkw4Nm4xZmlVT2tZdlNoa1VQeHZidWt6b3k2SzFpaE0xaG8zWHpXNkV2U2ZYQStkcGlXR2FXZCtkb1h6THptR3dLWUZMQ0FzUkFsUEJBaE1sQ0ZYVTd0QlVWUHI4SGdWY0pIV3ErRjAwcGxyK0RNVGRyUDR6dnhZMTFrTk1oeFQrU2VUR2crZDRWNUxRSml0eVVHSk5COFZGWnNqZ1lCWk0vSUkvWENUa2owcXlET3BGMkFWUTE3Q0lqVXAvRG5UMVVrTDVGNWdkaitzUzF3ZzFnRTNnaWdtNjBmQ1h6U25QWGJ5QVBiSVh2K0lEcEUxNlRoYUhJUzlza3lobG1NRTVGM2NmcUFLaHEyQzBFNVBIMWdZYVhhTFBEa1pHMEhESk9uS1dIcDUxSTB6NVNPdXg4ZTFXQXVaemRIUXJUa3A4VG1qWG9JK2xhMHdHWnN6dWJxYk8zaWZRNkEvVzd2VlNZc1YzbVIwSkt3a0tjNFdIaUJrbVI4STNDQ2dJODdvT0w0cXpUNVArUlVKQmVqRU9nQVBLOGhZUHphdE0rZUlUcDJJTzl5VFFtZXJvbVBSeHgxcXhBY3NpbGUvdWJTZUViY1dRR1lFQ2doY0xZMkh5S2pvZ2pIMjVoTXBqcFV2MU91Z2xpNGVoMmVSdzBPMzJiSmpreXVDZ056ZzB2emxZTVNpU3MwdW9vNE1HN2hNT2pDRWFYMXlGRTBuU3ZqQnp1VG5FcEs4Nlo4SW9xRkFJdWJ3OGtnOUFyRWFSRVdTWkkrakg0WGJwNmc5RTlFbkpUM29hUnpETitNVUpCUURIbjU2YThvVW1FQnVzT3hCcy9ONSt0SkViUGtBRkRqOFVHdk9zL0lXdmNTZ2xHQmh2UzcvRlRZZnBXR1lkRFk4ZlBBeFdTQTM1c1RDNHA0K0xtNEFhcUlvUGVRdGZ1Zks2SmgwWmh4bGJzVVhPU21YTmlmRDVaVEFreURvZmJiY2NseG5BOFdOQXF4Q2JSTnlraFh4UXBhRHc2N2ZYVVlic2lHMEtodHYyb2VJdmg4cmhRTVlPY0VBcVhHL2VJK3puZ09jNXl4cjhxODJJQU0xYy9GTEZPcGxxdTVlRlFYck1aekdjVkNqWWJMV0c1STRCVDFldVJybGJ4dE5PdE1pdERERWhMWElJeW5BQXZ1T0VXRTNYM05kQWZ0OTRWZ2FHNDJYSVF0MFpYNlBlQ0UvcVFGZTlySzZIeDdZVTUwS3ZIN2ZXNGZTK3E3S0tCSnhzZ2dCWDVwU0FHaDFqSXJWaDV6UTZ3M1JmYWFoQlhtL2FDYkNaVGpDVUZVVHlXWnFXOXA2Mk1qSlBYVnFPclBnTU80TnY3NEdrZitvd2Z0TlZCRFFuakZKcUhTdzE3cFh2aFdXNUtacWUvUTQ5Ti9VU1RDQVZXb1FYRklIQkhYWGUzRlByVURzdUdEbXRGL2hIS1RIcGVreGhpQU9QSStTSnE2UzZIRjRJOVlXemtCSlRvNDZpVU16V3A4UGlyL1JpZHVMeEtZc1Nrc1Y4dkxsT1F2aEdYMllsUjBPQmhCakMrdS9nRWN2WTBBcEs3WWs0MU54alBTUW5XRkhURjY2VXJqZ2V2QjhDdTVhK2wydllTUlB0dVZEbzczaGhkTVNIblVYN3RUanNWWkd4QWwvV3B0aU9JRVExZ25MMjltWDYvdFIxdG1sa1lqOFc0WCtDU2pXY1VER1kxTnBTL0M3aFNLcWlNTE0vbDJRbVNXWjczRGR6K2dpbzhCQ0VOWVBRNDZxbmt6d1hVYnF2Qmt4alVRc1dmWkZnYnVvM3JBZit3TjdqT085MCt5bng0UGkzTCswbllMMVNjaERVZ0FQNGdQVi83SWQxcSsxSFNobXVHa0lxV1JQZ3l4TUZxUDhIZmpUbmpYd1k1YlFmYkpjdDZPSXpLZ01Ib3RGL0hlMWVnc2F4SFNxRzZ3ZmRtUTV4OE55VEZGcUJjcDJpU293SFIzeWs1KzM2aEY3dlhBQUFBQUVsRlRrU3VRbUNDIn0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjMtMDItMDIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI4NzA3LCJ1cmwiOiJodHRwczovL3d3dy55dWJpY28uY29tLyIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiU2VjdXJpdHkgS2V5IE5GQyBieSBZdWJpY28iLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlUyRjEwMDAyMDIzMDIwMjAwMiIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMyJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMy0wMi0wMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjg3MDd9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjMtMDItMDgifSx7ImFhZ3VpZCI6ImU0MTYyMDFiLWFmZWItNDFjYS1hMDNkLTIyODFjMjgzMjJhYSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiZTQxNjIwMWItYWZlYi00MWNhLWEwM2QtMjI4MWMyODMyMmFhIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkFUS2V5LlBybyBDVEFQMi4xIn0sImRlc2NyaXB0aW9uIjoiQVRLZXkuUHJvIENUQVAyLjEiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MjAwMDEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfSx7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsiZWQyNTUxOV9lZGRzYV9zaGE1MTJfcmF3Iiwic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCIsImJhRGVzYyI6eyJzZWxmQXR0ZXN0ZWRGUlIiOjAuMDIsInNlbGZBdHRlc3RlZEZBUiI6MkUtMDUsImlBUEFSVGhyZXNob2xkIjowLjAsIm1heFRlbXBsYXRlcyI6MTAsIm1heFJldHJpZXMiOjUsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MTAsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUJ6RENDQVhHZ0F3SUJBZ0lCQVRBS0JnZ3Foa2pPUFFRREFqQmlNUXN3Q1FZRFZRUUdFd0pUUlRFU01CQUdBMVVFQ2d3SlFWUkxaWGxEUVRBd01TSXdJQVlEVlFRTERCbEJkWFJvWlc1MGFXTmhkRzl5SUVGMGRHVnpkR0YwYVc5dU1Sc3dHUVlEVlFRREV4SkJkWFJvWlc1MGNtVnVaQ0JEUVNBd01EQXdJQmNOTVRZd01qSTJNRGd4TVRBMldoZ1BNakExTURBeU1qVXdPREV4TURaYU1HSXhDekFKQmdOVkJBWVRBbE5GTVJJd0VBWURWUVFLREFsQlZFdGxlVU5CTURBeElqQWdCZ05WQkFzTUdVRjFkR2hsYm5ScFkyRjBiM0lnUVhSMFpYTjBZWFJwYjI0eEd6QVpCZ05WQkFNVEVrRjFkR2hsYm5SeVpXNWtJRU5CSURBd01EQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJBSmNXcWVDeGdhOUtKYkZPMlRaZGpjZ3J0WkFnZmk4VFhLdSt2NWxjUjVjZWI1R0pZeHlvQ2podWVFU0wzZGRtTUlrcEd5aHNFRXRmRlV5QndzeUZWQ2pGakFVTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0NnWUlLb1pJemowRUF3SURTUUF3UmdJaEFMNFRiUDAwc0VOYlRFWEdvYWdNNkhrbDJYSURyeGdLYkh3b3cvOUdpYllUQWlFQXVkSW03RUdxZnlhOFF5Z0tjYmtRZnFyd2VmWW5CdlpLSTB4d24va0tXeDQ9Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUpZQUFBQTlDQUlBQUFEQXVBZVlBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRW5RQUFCSjBBZDVtSDNnQUFCR3VTVVJCVkhoZTdad0pmQlBWOXNjelMvWTAzUmNvM1hjS0JWd1JCSGtpVDU4THF4dkNFM0F0b0lJQ0JRVFoyZ0l0VWlndFZHaWhLUG9YQVIreXlQTGhBUlpaMUVkVm9Qb1FwS1cwQlZxNlpjOWtsdnhQTXJmUWxpWk5sN1FQUC9sK0xuVG1uRHVUeWZ6dXZlZmNtMGt3czlrc2NIRXZnNk8vTHU1WlVDLzh6NEJuTkw4V1lZU0l0M1k3SEdzSWVINU0vTTRzdE8vQ05rakNzd1BIYW4vNUhSZi9yMGpJNmd6KzQ1L3QvZmthdE8vQ05tZ2d4WGh3SExiTU5HTTIwZDFUYUVhQVd5NER3ekc0RXY3YVhOZ0g5Y0xDUjhaQkw4VEVJalBIeVdMQ2NZTG8ralFIcERQVHRPN2lGVXhJY25xRDM4dlA5dDZXZ1h3dWJOTlVRcEZRUURPRHE4OFNjaG52N21Lb3lsdW5BdTRubFo0dUNSMm5lVVlLaXJKYVBkcnBjamlkQVcyNWNKZ1dKeFZkUFlRMm9odGYrbDdGTlMrODUrbE1DVm1Ea1RPWk9CUEYwVFNIYkM2Y1RxZEpxUC92bGU5azBhZjhIanJwKytCSlpUK21waDQ1WERpWlRwUHdZdUlDQWhlYldWYkFtVm1qb1dTeGExYmVSWFNPaFByaXN0b1R4M0dGRENNSWpNQUpoZHYxVGR0cGpSYTVYVGlUenBIdzhyU0ZCT21CWVJpck4zSVVJeUF3QVUyWExzNUViaGZPcEJNa05KVGRxRDU4aEpCS1lFTHBOLzQ1NWNOOXpSUk5LT1RsRzc1ZzlLNTVudFBwQkFrdlRWOU1rQW9CSm1CWVRWVFdvckRVT2JTeERvWlRqakplUzNaOTFPQjBPaVFoek1NTjE2dXE5eDNDWlZKT2IvQVpNVUtvZFBNWWZMOGlLcDZqYUZJdUwxKy9qYU5NcUxZTDU5QWhDVEdCNE1yTUZJSVF3emJOcUdKeVYvRDJ5RFVMR0dNOWRFVElhRXJUTi9KR0YwNmlReEpTbGJlcWR1NjNkRUdEMFh2SU1HbElJRy8zZWVadnNzZ1ltT0FMWmZLeU5ma2N6ZkIyRjg2Z1F4SmVTVXJEY0VJQWlTaXRqdG1ZaXF4V0lsZk9aUXhxZ1pCZzYyckwxbXkyMmx6cm4wNmgvUkpTMWJWVm4rOGw1RkxPU0hrTUhDU1BpMFFPSzc3am5wS0ZScHBOREM1VGxHVnNaczJjZGR4MTBmbTBYOEtTaFJsbU0ydnBnaWIxN1NqWW1MQzBKTWFnd1VqQ1ZIbXJZdDFueU9xaXMybW5oSFM5Nm1iK0xrSXVNek9NY3NBRHNxaFFxcW9hUXVQdFlycFY2L1g0STlLZ1lBSExFVkpaK2FwYzF6RHFKTm9wWWNtU2RXWVREVGtuUnBMRzRyS1RudjEvQ0I3eVE4alEyK1ZNME9BeklZOHlLcTJBd0hFaGFhaW91TDdwUzNTd2kwNmxQUkl5V3YzTjNPM1doek1zejB5WkljNlJKQ1lTTmk4RUFTa01WSUJhcEZSK2JjVW42SGdYblVyeloyZWdiejFTZWtMazc4dTdXK1RTZTB1dlpYMUNrbTVvSDRIaE1nbklCVnNnS21lZ21xV2dORlBYT3ljek1QRVZ0TjhTaHVMU014RkQ3bjUySmpkdlMwSEJDWWxZcktlb3BZc1dSa1UxU1oyYWtaeVMrdWVmeFVKU0NOZFNyNnAvOElFSDVpYk5ycW1wZlN0eHVxZTd1OUZrSERqdzRYZW1UZDI5WisrT3IzYkk1UW83bWJLSk52VkxTSmcxYTJaeGNmR3NPZk84UGIwNE0wZVFSTzdHSEZURE5ucTk0ZDBaTStGTzRCaGVXMSsvTVNmYjE5ZmVYVzAzSlByck1HYVc1ZXJVUFY1NndkckpHb0MrSmlLcnZ0d3ZFQWxCUUZ3czloMzNwT1dKd2taM2h6UFJoait1b0owMmN1SENoZjNmSHBETDVWcWRidVo3N3lCclN5VE5uYjhwYjdOY0pvY3JVcW5VOGZGeHUzWnNCenRGR2ZmczNSdmc3Ni9UNmlSaUNWait2SHhsNy80RG5oNGVadHNhR2cxR3lnUnRVUkFlSG42aHFFaWoxcEFrV2E5U2pSazkrdWwvUE1uWHNjWFdyWi91M1BtMW05TE5hS0R1RzlEZlNmb0JiWllRbEl2ZHRocnROT1ZHL2c1UzVHNW1XRExRSXk1L0ZiSjJCaUt4V0NxWFFXRUZITVJXWkwyTHVmUG01K2JuKy9qNmduNXdvL3NQU1BqK3UyTzhDN3FDVkdvNUEyYzJ3OW5BSWhUQzZHNngySkVRdzNHUnhLSTNrSmFhTXVYdFJIOFBkNXdrbDZlbHRTb2h0Q1JQSDIrUlVLalJhRk5TbGlDckUyaGJMS1FwMDlYbDYwdFhiTGlhbkZYK3lkM3BTY085WUZtMFlRV3NwYXR5cjZabWw4S3hHVnRzM3JDT01XLyt3bzE1K2Q1ZTN0YitwNHFMaXI2dFg0dm85THFheWx0VmxsSnRwNmpyVlh6OWNjK1BWY2prTE1lS3hhTGZmdis5c0xDUXQ3Zkk5cTkybEpWWENJVkNpcUw2RCtqMzhFTVBJWWNUYUp1RUZSbjVseFlzdnZMaHFvdUw1cEV5UzF0MkJBaVBkRlhOSHdzL3VySmcxYVZaYzI3dE9ZSWNuY2VDaFIvbGJNcjE4YkhxcDFaSGhvZWZLRGlLZkRhWTlmN00ycHFiWlNXWHltMlhxaHVsWDJ6YmlnNkFWNWszUjFXbmdwZFFTR1hKS1N1UnRTWFdaYTlYS09Ud3h1dnFWUjhtelVGVzU5QUdDU0VLbG1ma1NXUUJoRVRxSHY1Z3dLdGprY01Cd2xMZWw3Z0ZFUW8za2NqdnF2V2o0RTdzaS9NWGZKU1ZzOUhYMXdkdXJscXRqb3VPUG4yeUFQbHNJNUZJUEQwOWxlN3Vkb3FIaDRkQ29VQUhDQVRUcDAvRE1ZempPSkZFZXVyTXFlTGlFdVJveXNGRGh5LytjVmtvRXRFMEhSMFI4ZFJUclF5NUhhUU5FcFpuZldhcXJoSUlDY2FvRGt0dFU4c3lFMkp4ME13cHJGYU5TVVRhYytkcURwM29yTlcySlV1VGN6WnU4clBHUDdWYUE4bHF3ZkYvSTErTFlCMXFQVysrOFpwR3E4TnhUQ2dVcDZWL2pLeE5XYnMyU3lhWHdmVkFQSjcxd1F4a2RSb09TOGlaeXo3T0phUUtzNG1SQm9jRnZQd01zanVFUmErZzJhOFRDcVdBNHdpUnZMTWVqbHF5TkdWdDlub2ZIMHYvMDJnMDhiR3hKKzNHUHd0bTY5VzBsNlNrT1NhakVXWmlrQnZ0UDNDZ3RyWUdPUm80ZmVhSHM3LytBdk1maG1FQy9RTmVHZjh5Y2pnTlJ5VXN6L3ZTV0ZHT0NVbmFvQTViMHA2V0pWUXFBNmUrd21vMW1FU3MrcW13OXZnWjVHZ3Z5OVBTSWVUNGVGdmlINlQ3MFZGUlI0NGNSRDdiZ0g0ZGtkRERYVGwyekNpWTgrRTRUalBzdXF3TnlOSEEycldab0I4L0pDUW12b1dzenNRaENTRy9MRnU1MGRJRmFVWWFHTlJqeXZQSTBVYUNrdDdHWVNvTkhWRW80eU5pTzhBSnl6VXZYNW0rS24yMWw3Y1hURW1oLy9XT2l6MTI1SkNkK2NadFlCVGxCOUtxcXFwZno1MHYrdTEzTytYOCthS1NxODBEM3NMNTgzUmFMWFJFU0ZpMi9kK1hFUENRUXlBb0t2cjl1KzlQU3FWU2xtWGRQWlN2VFptTUhNN0VJUW1ydG42dEx5bUI0WjgxYUVJK25JYXNiVWZzNDlWenlnc3N4QktwdVA3NzAvV25MWGw1bXlJVFpCTktON2ZzOVRucHF6TzhmWDFBUHhORnhjZkZIVDY0SHliZHFKSmo1T1p0R1REZ2dVRkRodzBhWXJQY1AzRFFqUGRub3dNYUNJOElmMnpvRUNORjRRU2hVcW56Tm05QkRvRWdNeXNMalB5by91cUVDZkl1K1lLWVE4MjJkSG1PVUNJM000dzRvR2ZQdCsydGtMVkswUHhFSENiTEhJZVQwcEpGYTVIVllXUlNhY3J5dE9RVks3MnQ0NmZBYkdZb1UrN0dISmlCb1JxdDBqQ01LdVFLSDM5L2Z6OC8rR2VyQlBqN1FWYUtEbWpFZ2cvbnFWVXF6Q3lRSzJTYjhwQ0VwZGV1SFRod1NDNlRRY29xa1lpbmRja29DclF1WWVYMi9mckxsd1VpRWF2WEJzMTVneC9IMmdlMEJrbFBmLytKWTFpdEhwZEo2bzZlVUowdGNqd3lXVFREOENQSGpya3BGTkFkZVF0R0VuT1M1dk1WSEtLaDF4dU5ocnE2T2xWOWZYMWRuWjJpMTdYd1FQUEREejJZMExjUFJadUVwTEM4dkdMM045K0FFY1lHbW1VZ1JtcDF1ckdqUi9uNStmR1ZuVTNyeTl3LzluM0srT2MxRE9LTVREcXc3Q1JwWFoxcWtXTllDS24wZ0hncDd1VS84SkxOek5CUVd2Rmo5SEJjSk9TTWxPY1RnL3NkekVjTzI4dmNzNVBtZmZIbDlzWlROSlBKUkp0b3lOMUJ4cHJxNnBSbFM2WlBUVVMrbHJoNTQyWlVYTitBSHY1NnJXN1VxSkVic2pOUG5qcDE3UGgzTUR0RU5WcUNwcG5JaVBDWFhud0I3VGRpejc3OXIwNSszYy9QMTJnMHhzWEU3TnZ6cjlqNEJNdFh6REZNcjlPZFBIRXNJandDVlhVeXJjU1A2L203Nm90T2tRSXZScUNPbVo5c1J6L0FMR0F0MzlObm9EUlpZR3VHTkNUUTc4V25iMzcrTDBJcXUzWG9zT2I4UmJlRVdPUnpESzFXMnljK2Z0alFJWm1aMlVvdkQwOHZyMlVweTBjTUh4NGRIWVZxMk9aMjZIMTA4R0FvYUtmdGpIcnUyZUJlZ1JxZFhpd1dYeTR1SGo5eEVzMHdrTWpBdFQwNTRnazcrakVNdS8ycnJ3SUNBbUJJMFdnMUpwb09DdzNwbDlCUEpISTRGalRGM3FnSTd4YjZaVXhLV2xUNmd0amxLM3JPZkIwNWJDRDA4aFg2K3dnRGZFbGZMMlN5UWNqaUdlTEFRS0cvcjhTdlYxbkduWFRBRWVBZUJRZjEydi9OMXhDUSt0M1h6NkRYd3dBaEVncW52TjVGc2VjMjc3NHpYYVcyckxjUk9GYjQ4OCtnSHd4cERNM01uUEV1cXRFU0pHbjVIWU9SWTU1L2R2U1ljK2ZPVXhRMWFzd0xVYkc5WVVoQU5kb0tuQTQ0TzNEc2QrTFlBcmUrOEQ5MXM0bzNRbGptTnh5aFdWWEhqNFJYdVYxWmYrWHFVVUZRZ1RMaE9CbjEyOFQza2RWc25qVm5ia0N2a01qWStLQ3d5RUdQUGdadm03ZVhscFVGQm9lRlJjWkV4TVo3Ky9WWThORmkzbjQzTjY3ZlVMajd3Qmw2OUFxZE92MDlaTzBZMElGQ3c2UENvbUlqWTN0SHhNVER5UU5Ed2tlTkdZZmNkb21LNjZQMDhyMTA2Ukpzbnp4MVdxcndDSStNTlJnc2l3WnR4VjR2dEtRUER0T3NhcHVTRkFjcncrVkMvRnVYbVNFU29kL0hDZTdWS3pWNWFYMjlDbndlbnA3WjJSdCsrczlaM3RVRkNFbnl0U21UTkNvTmJGdXpZek5vOE1GTXg5YzlNTXBvK1RBeU5qYkdUZUVHZzJwNVJUbnZxS3lxZ3Y5cnFtc3F5cEVGS0R6Nzg3TGsxRzJmZndGNUFESlphVW5DMitHaTYybjFwVEV6aGpXNTVrbXYvblBFOEwvcE5GcG9DUjVlbmhQK09RazViTkd4TmRKbXZQZnVPeEtaR01ZUjJJWTcyN2R2bjZGRGgvQXUrNkJyc0xaZXZWNW5OQmtKZ29RWlRsYjIrbERvMVBIOVB2MXNHL3hOR1BBUVRER2hEblR1RjErWjhOTExMMzc2MlJkZVBnR05XMm9MRWxwK3RxZTdhTzJsNFozRHlJdDJHc2pmc2xrbWs5RTBEYk5EbFVyVFNsRHMyQnBwTTl6ZDNVTkRRbG5XRWdvZ1NNOThkenB5dEFaY0E4akhUMmNYTGxpc3JxMmJOSEdDbTVzYnhOZVE0RjZFVUxoOTU2N25ubnR1MEtDSHdUaG4zb2Q3djltN09qMHRKaXBxUzk0blFyRjQ1T2c3SHhNMWw5QU1OOUZ1MnVsVU1Nc0kyZVk3TEpOSmN6WmtxMVFxdUkvdTdzb2R1M2J0UDJCenNkUnk3OUJtSjNEMDZQRno1eStBRXRDQUlzTWpSbzhhaVJ3T0lKZkxaOCtiSHgwYmYvSFM1ZDI3djE2NUVqME9iMm1PRkpXMVp2Vm4rWG43OXV4bWFQcmJBd2VVM2w0OUEzdUNOemc0Mk1mYlM2WFduRG1ERnBtYlRpcGdrQ0xJSDhNZkU5elYwcnNDR09MZzlkMlUvRE5VYmVMdkk0WlBHUC9TamwyN1FVTEkxeWUvOXNhMWtzc3lhUXZyVzVaK2JOMVl0eTQ3ZFdVNjFMZnV0WXlSTWo0K2JOaldMWGxvL3k1V3BLZDdLSlZtZ2FVTExsMjBFRmtkUTZmVlphL0pDQWtOUWZzTlFFT0U5dzlobGQvVjZRMFVSWU1GSnFDOEJhWXhrQVJURFJHeFNTKzBKQlk0eHBsb2ptRzdvZENzNVFGK2pHaGZOOGxlbHhrWTRBL0pLZzV6RExGNDdMaFdQdVZoT1k2R0dRREwyaW5ncHBzK1JOS1l3c0tmZi96cHJFZ3FnWG85L1FOZW5UZ1JPVnJpME9IREd6YmMrWklYTkZOb1NUcDlDNy9TeExmZzIwa2VOTEllOEw1TXBxdFhyL0lXUGFqTHN2MFQrdk83U0VLWWoxdVVvMHlXMzdKajJPNHJjQmttdUF5T3NWd0dmMjBBd3pDUUxKZ2dpd2V2N1IrSHk5K1NCMDBiV2l2a2lzY0xDckxYMzNsVUVKcTJDUTYybk1NRVo3TllPRFByQUh5cTBpSXIwbFlwbFc1d3A3VjYzZVRKayt3c1BVSWZoU1kxZlhwaVFjRUpaTkdvb1lsVVZsYnl1NDNSNlhRbUZoclhuYStETFZ1OGlNRHd6TXhzMkQ1OStvZVNQeS9QVFpydDRlbk9lOUVDMjRXeGlicWl5ekNSNTYyT0EyL0E1aDF0eldzSHprRDVqQndldFFZTlRhbkxWMzZ6ZDU5VUtvSGhaZk9talFrSmZYajczYXhhdldibnJxOGxVZ204cjVxYTJ1K1BIZlgyc2F3elZGWlZQdjdFUDd5OXZZd0d3OTlIakVoSlhySmx5OWJzbkU4VWJuY1c3ZTRHK3ZTZ1J4NVo4M0U2Mm05RWNYSEpmUThPOVBIMUFZMmh3NXd2UEN0WHlKR3ZKZDZiOFVIUmI3L3QyN3RicjlPKytlYTBHN2NxaFlRUUo3RFJJMGQrOFA2ZGVjalNaY2tIRGgzR0NjTFQzWDNhMU1Sbm4zbWF0Ly95eTYvTFY2eWtHQVlYWU9OZmZySHhtcDlGUWhDeG9kZisxWUQ3QytNcTJ1bFUzbmhyNnJjSER5b1VDclZhL2NacmsxT1RseUZIbDJPVjBOcGQyb2Y5WXp0eTV2OWxidDJxam8xUGdHa29ETkFtaWlyODZVeVhmUzV4TjVZVzJwRzdiUC9ZdjZSK3dLcU1OYVNReERFTThoRVk2N3BSUHdERlFoZU9ZekFhd3lPaVpkWlB2aUQxT0gzaWVIaDRPTy9xRnB3U0ovN2F3SVFTa2trSXNhRGxzS0ZEdWxjL3dOVUwyMHl2MEFpUlNBUVNxdXBWUnc3dDY5OS9BSEowRTY1ZTJEYlNWNjJ1S0MycnE2Mi9YbkdqVDUvNGJ0Y1BjUFhDdG5IdTNIbWFvYUVMTWd3YkZocml2SytjT1k1THduc2UxMEI2anlNUS9EL2V4TGc4Ui80c1FBQUFBQUJKUlU1RXJrSmdnZz09IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMSIsIkZJRE9fMl8xX1BSRSJdLCJleHRlbnNpb25zIjpbImNyZWRCbG9iIiwiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsImxhcmdlQmxvYktleSIsIm1pblBpbkxlbmd0aCJdLCJhYWd1aWQiOiJlNDE2MjAxYmFmZWI0MWNhYTAzZDIyODFjMjgzMjJhYSIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwidXYiOmZhbHNlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibm9NY0dhUGVybWlzc2lvbnNXaXRoQ2xpZW50UGluIjpmYWxzZSwibGFyZ2VCbG9icyI6dHJ1ZSwiYmlvRW5yb2xsIjpmYWxzZSwidXNlclZlcmlmaWNhdGlvbk1nbXRQcmV2aWV3IjpmYWxzZSwidXZCaW9FbnJvbGwiOnRydWUsImF1dGhuckNmZyI6dHJ1ZSwidXZBY2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOmZhbHNlLCJhbHdheXNVdiI6dHJ1ZX0sIm1heE1zZ1NpemUiOjIwNDgsInBpblV2QXV0aFByb3RvY29scyI6WzEsMl0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6MjAsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6NjQsInRyYW5zcG9ydHMiOlsidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN30seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTh9XSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5IjoxMDI0LCJmb3JjZVBJTkNoYW5nZSI6ZmFsc2UsIm1pblBJTkxlbmd0aCI6NCwiZmlybXdhcmVWZXJzaW9uIjoyMDAwMSwibWF4Q3JlZEJsb2JMZW5ndGgiOjI1NiwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjEwLCJ1dk1vZGFsaXR5IjoyfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjItMDMtMTUiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MjAwMDEsInVybCI6Imh0dHBzOi8vd3d3LmF1dGhlbnRyZW5kLmNvbS8iLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDIyMDMxNTAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4zIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMi0wMy0xNSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyMDAwMX1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMi0wOC0wMiJ9LHsiYWFpZCI6IjAwMjQjMjM2MSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFpZCI6IjAwMjQjMjM2MSIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJHK0RTQkFLZXljaGFpbmlPUyJ9LCJkZXNjcmlwdGlvbiI6IkcrRCBTQkFLZXljaGFpbmlPUyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6InVhZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9LHsibWFqb3IiOjEsIm1pbm9yIjoyfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X2RlciJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJzb2Z0d2FyZSJdLCJhdHRhY2htZW50SGludCI6WyJpbnRlcm5hbCJdLCJ0Y0Rpc3BsYXkiOlsiYW55IiwicHJpdmlsZWdlZF9zb2Z0d2FyZSJdLCJ0Y0Rpc3BsYXlDb250ZW50VHlwZSI6ImltYWdlL3BuZyIsInRjRGlzcGxheVBOR0NoYXJhY3RlcmlzdGljcyI6W3sid2lkdGgiOjU0MCwiaGVpZ2h0Ijo5NjAsImJpdERlcHRoIjoxNiwiY29sb3JUeXBlIjoyLCJjb21wcmVzc2lvbiI6MCwiZmlsdGVyIjowLCJpbnRlcmxhY2UiOjB9XSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUJtRENDQVQwQ0JHUWRQUjB3Q2dZSUtvWkl6ajBFQXdJd1ZqRUxNQWtHQTFVRUJoTUNTVTR4Q3pBSkJnTlZCQWdNQWsxSU1RMHdDd1lEVlFRSERBUlFWVTVGTVFzd0NRWURWUVFLREFKSFJERUxNQWtHQTFVRUN3d0NSRk14RVRBUEJnTlZCQU1NQ0VGVlZFaFNUMDlVTUI0WERUSXpNRE15TkRBMk1ETXdPVm9YRFRRek1ETXlOREEyTURNd09Wb3dWakVMTUFrR0ExVUVCaE1DU1U0eEN6QUpCZ05WQkFnTUFrMUlNUTB3Q3dZRFZRUUhEQVJRVlU1Rk1Rc3dDUVlEVlFRS0RBSkhSREVMTUFrR0ExVUVDd3dDUkZNeEVUQVBCZ05WQkFNTUNFRlZWRWhTVDA5VU1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRVNJcEkvZEtZQ0RZaHp3RDJ3U2ZZQU9iL25OYWlQY1dGMjF2eFprL1RnRDBPSnRjRCtPUG02NG53WmRGV1NFWVNXN2lPcW5wbUp5ZGU4bWdyL3RuQWl6QUtCZ2dxaGtqT1BRUURBZ05KQURCR0FpRUEzYnZoYXpRRlB3bXlYbHhLL3hDWGZoN2cxWDFFb2JMQzNMKzJHT1J4cDdnQ0lRQ2ZORVRYL20yQmViUkxYSTRMTVAxRVFHUFhGRGY3T2s3NFU3eGJpTTRWa0E9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LC85ai80QUFRU2taSlJnQUJBUUFBQVFBQkFBRC8yd0JEQUFNQ0FnTUNBZ01EQXdNRUF3TUVCUWdGQlFRRUJRb0hCd1lJREFvTURBc0tDd3NORGhJUURRNFJEZ3NMRUJZUUVSTVVGUlVWREE4WEdCWVVHQklVRlJULzJ3QkRBUU1FQkFVRUJRa0ZCUWtVRFFzTkZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlQvd2dBUkNBRElBTWdEQVNJQUFoRUJBeEVCLzhRQUhBQUJBQU1BQXdFQkFBQUFBQUFBQUFBQUFBY0lDUVFGQmdJRC84UUFHd0VCQUFJREFRRUFBQUFBQUFBQUFBQUFBQUVEQWdVR0JBZi8yZ0FNQXdFQUFoQURFQUFBQWF5ajZGNXdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRWdkM2VEVDV4TEozNnhGb2M1bDhsR1BTWEtzek5ETTA5TlZkTis4UDhaZExLQkhwaWUrdmhUdW9mTlhOQXZtK015VW1SbjFkUVpnQUhNNGN3MUxpY1AxVkxlUXVqVHpKMmRKTTMzNXBoYWFVamVhYktVUnZkVjdTWjFkVFM2U3VGa3dRL2JIcjc2NXQyRjFtZGs4N05QcUUrU1l5SFIxZ0FMQjE4bHZ5VGVqUFhRcW11Z3NnWWRWVnAxeWFIZlhMVzN2VVFrMnBhSXFkNU1yWXFJUGZqZExObVRZeTIrQ1RveHNiNkl0dFN1NmxBOUJaSEE2cW9BQnlPT05IUDJwUGVuanJzLzhBeG1uY1liTENpYTZ6MHhTbWFadDlIUk1sVVJ2ZEYrcXpvWXVzM2xkS1YxdTZpYW0zdDdQcnRKbjBHZW51L0E5RFdHeHhBQUFldjhneFhLay9PWnFjOUptYktscE16Wkdrek5rYVRNMlJwTndNNkVyaDFqOHcyT0lleUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVAvOFFBS0JBQUFRTURBd1FCQlFFQUFBQUFBQUFBQlFBRUJnSURCeFVYSUFFUUV6WVJFaFl3TkhBMS85b0FDQUVCQUFFRkF2NmJHSVNSbE5ZYkZnVVpTM0ZNbWxQZ3RLVzJiZlNMckUxUFN1VytDMHZCYVhndEx3V2w0TFNjaUdMeWsxaWdPUnBrc1FJeGU5K0dBUW1xVVBHN2UwMHNQbjdZYTNlNWRCdHE5NXhhT1pZSEZBeXhKN2NwQmt4aEhpMjg0dGJ6aTF2T0xUSExRSjNXMWQySDFoNnlzRVdzNWgxeUtFT2JScmNmT2dZaXlCRlNXUXQ0eUtQU0Y3STN2REVudHl5Zjd0d2pjb2ZSaDRDTk41QU1sQUszSXdseTNWWnVjc1ZNT2oyWExMUm1wOUkrMUdKajFkTzBoNWJTSGxBb0NWanA5VFhIaFk5SmRwRHkya1BKeml3NDBiZHNPbWFtNWRaSFlkQjh3NVlZK05lVTQrcnBMdXpiOWJtZS93QVB0alg2dnZWWmYrUHV2bGk0aDBZUzlaZENWTXozYW5Kc2pvcDNQa2kzUGtpeDVOVEI2UktkVG8yRmxHNThrVzU4a1YvSkVoZFdPMkhBbFY0Z3Noa09oS1g4ckYrdHJmalJ5MUl3eDRHMmtReVNSUi9GM1hERW50eXlmN3R3aXNOZlNseUlGTndnK1lTR2lOQTZxdXRkWE9FVEc3RTM3QiszS05MN2UwNnRQY1h4OTVYdENDVzBJSmJRZ2tCZ0F1T1AwYXgwSlBFdG9RUzJoQkxhRUVtT000K3hydFdxTEZzb1ZhaG1VeGxsNldFdnd4NlVrSXpmQzVlR1BLVzhxRE9xZGRHclhScTEwYXRkR3JYUnExMGF0ZEdyWFJxMTBhbk10Q3RLVGVZQjdXazlKSDhrYy8wMy84UUFIUkVBQWdJQ0F3RUFBQUFBQUFBQUFBQUFBQUVSRWdJUUlDRXhVUC9hQUFnQkF3RUJQd0g2eXhrNlJLRjdxVVNoNHp5ZlMxREVtWkVQV0xNdUM5TXRXUlliZ3NodVJlbVhuRk9TcFZpeFkxSlZsV0pRTnp5c1dMRml4WWJuN0gvL3hBQXVFUUFCQXdFRkJnVUZBUUFBQUFBQUFBQUNBQUVEQkFVUkZTRlNFaFFnTVVGUkV5SXlZWUVRSkZCeDhEUC8yZ0FJQVFJQkFUOEIvTFZsZDRQa2o1cjdpcHp6ZFIwbFF4czdpcXIvQUFQOUtPTTVYMlF6VzUxT2xiclVqbnN1b0srV0Y3anpaUm1NZ3NZOHVDVS9DamMreXBZdDZtdUw5dWhGaGE0VnZVR3RsVTFNSlFrekVyT2tHT1YzTjdzbHZjR3RrRW9TK2g3MWFGTXhnOHJjMlZsU3ZlOFh6d1ZZN1VCc3lzczJHWjJmcjlNTG03dC9mQ2tzNldNWE4zYkpRUUZVRnNBc0xtN3QvZkNvYVk2Wm5ZK3FxellJQ2QxWlkzelgrM0RWVTVVc20wUExvb2JVRzY2VmxpY0h1cDdRaGtpSUc2cWhuQ25rY2o3TEU0UGRQYWtIUzlWTlVkV1YzVHNxS20zZVB6YzM0U0ZqYlpKSFpjUlppOXl3a2Rhd2tkYXdrZGF3a2Rhd2tOU2hwSW9QUzJmNWovL0VBRU1RQUFFREFnQUhDd29FQlFVQUFBQUFBQUVDQXdRQUVSQVNFeUV4UVpNRklDSWpNelZSWVpHaDBSUXdNalJTWW5HQndlRkNjN0d5VTNDU3MvQlVjblNDd3YvYUFBZ0JBUUFHUHdMK1p0MkVaS01Ed3BEbm8vTHBvRjlzN29QZTA5NlA5TldZaU1Nam9RMkJYSnA3SzNXSVFrSHlWelY3dUFBZ0VaQmVuNVZ5YWV5dVRUMlZ5YWV5dVRUMlZ5YWV5clB3bzd3OTlvR2xLaWhXNTczUzNuUi9TZnBWcFRlTXlvOEI5dk9oWG1pOUl1bmM1azhNajhaOWtVaGxsdExUU0JaS0Vpd0ZGK1UraU8wUHh1S3RSUzBKRXIzbTI3RHZJcjFLWjJKOGFtdzI0a3BLMzJWTmdxeGJDNCtPQWZrTCttQjZBOUZrT09OV3VwR0xiT0w5UFhYcVV6c1Q0MTZsTTdFK05lcFRPeFBqUVM0WDRuVzYzbTdyMGw2TzhoOXBXaGJhcmluSThscEx6TGdzcENxNEYzSUwyZGx3NnZkUFg1aG1PeU1aMTFZUWtkWnFQQlk5RnBOaWZhT3MwNU1mNFg0VzI5YTFkRkdSTWR4dlpRUFJRT2dEZWo4aGYwd1QvZzMvQUcwNzBQUlhPTFBLTXE5RlkvelhUTTJNZUF2U2s2VW5XRFVpRXUyTW9YYlY3SzlScFRheGlyU2JFSFVkKzB0UXVJN2FuZnA5Y0hrUVBFdzBnVzk0NXo5TUlVQkhzYy9LMW9qYld0RWJhMEpjc001SEpxVHdGM09DVk5paG5JT1ltTGp1V09aSUZhSTIxclJHMnRPdnVDUGlOcEsxV2MxREMvdWNvOFZJUmpwSHZqN2ZwZ25CSXNsMGg0Zk1aKysrL205UGszL29ZTjFjYlRsemhhLzJqekc2UC9IYy9hY081dUwwci9ZckFtMyttUmZ0Ty9qcFViSmtJVXo5UjNnWUVib0pUeE10T2MrK00zNld3aEluaXd6Y2kzNFZ6Z05nMzRWemdOZzM0VUlzMlhsbU1rcFdMazBwei9JWUpjU0hNeVVkR0ppcHlTRHBRRHJGYzREWU4rRmM0RFlOK0ZPTXVUZ3B0eEpTb1pGR2cvTERKM1VXbmltVTVKQjZWSFQzZnJnM1FXazNRMnJKRC9xTEh2dnYyM21sWWpqYWdwS2hxSXFQTmF0ZFlzdFBzcjFpbllVa2NCZWhRMG9WcUlvdHltN3RFOFcrbjBGLzUwYjBma0wrbUNmOEcvN2FkNkF5Z3RSUWVNa3FIQkh3NlRUTU9LbkZaYUZ1czlacCtVU01zUmlNcDZWNnZHaXBSdW81eVQ1ZzQxM0lMdkxORDl3NjZia3hYVXZNTEYwcVRTbW5tMHV0cTBvV0xnMFZDS3FPVC9CY0k3cTB5dHI5cTB5dHI5cTB5dHI5cThzaUYvSzRwVHhpN2o5TURzNlNYOHM1YStJdXd6QzNSMVZwbGJYN1ZwbGJYN1ZwbGJYN1VGZVJtUW9meDFsWGRvcEtHMEpiUW5NRXBGZ0tjbFRIUXl5aldkZlVLeXlydHhtOHpMWHNqcCtQbXNlRTlaQjlObGVkQ3ZsUVRQYlhBZDFtMk9qdXoxZHZkU0llb3ZBR3VjSXUyVFhPRVhiSnJuQ0x0azF6aEYyeWE1d2k3Wk5jNFJkc211Y0l1MlRYT0VYYkpybkNMdGsxZDNkU0lPb09oUjdCUlR1Y3l1YTdxV3ZnSThheTA1N0h0NkxZeklSOEIvTTcvOFFBS0JBQkFBRUJCUWdEQVFFQUFBQUFBQUFBQVJFQUlURkJVV0VRY1lHUm9jSHc4U0F3MGJGdy85b0FDQUVCQUFFL0lmOEFUWWpvNGFEVE0wT01VWTYzdkV0QlpHK2FCRnVEK2hYcTlHNUVDSE5zdTVhQk5QVjY5WHIxZXZWNjlYcGM1WWYyeW1aTzBSWjFUK2lnWjRUZ2hPRG8vVVRCdTZOL04vWEEzMGE0MFNPUVZlcXJBZDIvU29NSGd1ck9teEdFaG5wQ0F1VzM0VVNMcWhsaE1TUGdSbzBicHRzdDNPNlhhYW9iaVZDRUpNaWVZMERFMDNobTBIVTR4ODlkcVhKQlJtRVNEYml1cXkxYnBpd01MdUg5WEFHbDNPVzdjc3Y2NC9aUndWc29TdU9NK1lxZnVlUWZORkNxSnZ3dlU2TFQrMjcrQmhQblprSDNPdzlaOE5oWmVoYVluSkhEYkE1b1BCWG5QeXZPZmxFMkRHOHhGa2FiSG1SR0lHc2pNYTg1K1Y1ejhxL1VQRmdsdzAycE5rWmZKM3o1Tm5IdklDZm1GQjNXNjM3YkRhUE01WWRJMitXeSt0UUZiSnROMXRzV2JjeDZmblBBcFhOT29ManNUQkRCdUJFY1F1ZTBvWUlHRnRvVUoyckJMTWlMUWRobkFwWU1sYWpldTFDaGlGZ1hrSVN6THRTZ0pka3JHN1l3d2c0WjBIek5BdlJpSkhuU2hDQzI2Ny9SR3NjdVhZYzBmcGpUbExNZGh2d2RWdjJVY0lOQnJDY1QrQTR4VmoxbE41am1LMjFhdEVXTWRCZTBLZncyUWxYNkhJT2hlRExSZGJza25EcUt4L0hTaUo5Qlp0UnEweTh4UE5JY0N2U3FlbFU5S29iUU5oSUcreUd6RGRmN0FFR2dWNlZUMHFucFZNTklFanVjU2dERkRnWkFVU1dyYnhZQml1VkxRbG52RWFzZUJoOVMrWVo1aDV0U0dzRGRGTHhzT1hHalU1L0JGbXZQdTllZmQ2OCs3MTU5M3J6N3ZYbjNldlB1OWVmZDY4KzcweWluNjRMV0J1UVIxdHRib045U1U2VkdXQnZ2L3dCTy85b0FEQU1CQUFJQUF3QUFBQkQ3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3NzZvTWpnNHh2UDM3NzZtcHp5eXZ6ZXByNzc3M2o1VC96NWUvejc3NjRwdjhBdnEvNklHKysrK3ZjL3dEL0FQOEF0ZjhBdnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2di94QUFlRVFFQUFnRUZBUUVBQUFBQUFBQUFBQUFCQUJFeEVDQWhVV0ZCVVAvYUFBZ0JBd0VCUHhEOWJNZEJxek1FVU16MmxuMkJoRVJwMkJiVVdDWm5oTEJ4QXB4UEtJbVpRMUQ5MmNSRHhyQVdvQXQwaXdoc2JvRFRIcnBBUmpDaldobTV0R29Nekw5Uy9VdjFMOVMvVVhMOWovL0VBQ2dSQVFBQkFRVUlBd0VCQUFBQUFBQUFBQUVBRVNGQllYSGhJREZSZ1pHaHNkSEI4UEZRRVAvYUFBZ0JBZ0VCUHhEK3NiMzE5dU5ZRG83dFBSRlUwRTg1enZrb2RWdm1ON2U0K0t0SlUrM3c3ekorR0t6VmJHR1JZdFZxVy9URmdZcUJkUDNJQzlVYUZZWFFWRnVaUDFJVW8wY0lYTk45aVk1UURteWxIaCtPbXczQkhpMlhBU3pPeDhmNHUxN2pGSGtGYkY5UitnSVZ0NUZ3OForNHdwZzFHNnZ5RXZCQk9iWkVVYmhlVFlRU2pOeDJxcTRZWm5lVVZkZUpmeXVuMUdzclExQ0Ztc3FGVVVXWm5xZlVhd0JVTGtlNE1KUzRMYmZsalp5Y09CeTg3TDBLamN4cXF3Ynp2YjNtSzZhekZkTlppdW1zeFhUV0ZTMTlDVzNuRzEwNWYyUC94QUFtRUFFQUFRTURCQU1BQXdFQUFBQUFBQUFCRVFBaE1SQkJZU0JSY1lFd3dmQndrYUhSLzlvQUNBRUJBQUUvRVA1TnZjVTRaa2k1K0F0S1EwSHJCWjdxZWVKdm1qaXRBTmVncjlOOVV6R01BanNzYVNHa3hCNk5mcHZxdjAzMVg2YjZyOU45VittK3FQTVVKci9TaXg4K25vZzRvcW1CUGJrc0RHTnNiS1NFL0VTMHhUSEEyRmtTdWdFSVFTV1hoY0FzRldWZlRSMkN0MUZoSzdGVEp0QXBlSFNEQ3pKM2Z1aE1FVEF2SFEwT0xtOWxvMWdESmtlaGd3WU5EK3hFK1dEbEE3MGJwNTdvY0lrbTVrcHQzZnRyQ01JSVJCRVFhUDBLVXdYV1d1a09Ja3ZENEhGZHdkUGdsTDFqQXVKVitZK0NZTEJVL2l3T0FWMnhaZ01oREFNWVBqMUJ0SWdZbHZCS1cveU5GSkJHMnBzbTFEQTlnb3F3aDJHT0FZVDBrSlpHbmlrSncxQjJKd1pCdlJpYmVoQWc3aUoxbHRpa2tpTDhnamthTUJGUS93Qm5md2MrN3JkUGFZc0pKL3ZYUE5sZ2Q4QmhhN1I5c1JKM1ZKSEt4R3VlWkZiMWRERVpzSzJyTHowWkNpbzJrbTc4ZWhDVDRFU3QrK3ZLcUpON3YrazZCTEpUZE9IV2ZoOXZ4M3NiUldlNDlhTk9FUWgrZHVzYU5TMEVJL1FPUm95SVNsM24yaFhkNHVvR0h5cUFRR3VUSmFGR3phN1laTGFZMG1XZnRkdzBsMTF6QmJXVEp2MURzc25Da3BKRWRTSUNKYVdTNDRmSFF5citHVEVudE05OWVNNWRERGNnSDFReEVTNUtDYjJ1Snp1Rk1xU0RTOFNuQ0x3aWxsVEFiQ3JzbzdQTmh5UXZ4dEZCS0JRaG5zTGVHM0pDOVp6OElWM2RCTEtlN1lDQ3ByTFJhdkZtOTNrVEtVZ1hNa0psVjNWWitCKzZzVEZZRFlGYldEZEZBYkFwTUc0bVFiS0JFUkJLNEZudWlFaWVTbUFGZEs4SjRRSFF6WnN6TlZ5eS9CY3NiNkVtbUNQSjhKTWkrWjZHYk5uUE0wK3hjejJGRFVLQmRnQUE0S2thQ2ZPd0M4YUFTdFhxWTZTdDRiTVlveEFTQitKOWd3VEY1aUlXbUF0TVNWRFlvS0ozQ3VkbUozWm9FZUpnYnlZZXo0di9BUDhBL3dEL0FQOEEvd0QvQVBnZ1JMNnhRZWlvYjBSVi9CYjhqc29BM2JFbU1qWXdKVXFDVmorVHYvL1oifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiTk9UX0ZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDQtMTYifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTA0LTE2In0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiODg2Mjk5OTk5ZDdjY2NhNzRkNTAyMjIxZTIwMTJhMjY4N2E5NDE4MyJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyI4ODYyOTk5OTlkN2NjY2E3NGQ1MDIyMjFlMjAxMmEyNjg3YTk0MTgzIl0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJWZXJpTWFyayhUTSkgR3VhcmQgMi4xIEZpbmdlcnByaW50IFNlY3VyaXR5IEtleSJ9LCJkZXNjcmlwdGlvbiI6IlZlcmlNYXJrKFRNKSBHdWFyZCAyLjEgRmluZ2VycHJpbnQgU2VjdXJpdHkgS2V5IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6Mn1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiLCJyZW1vdGVfaGFuZGxlIl0sImlzS2V5UmVzdHJpY3RlZCI6dHJ1ZSwiaXNGcmVzaFVzZXJWZXJpZmljYXRpb25SZXF1aXJlZCI6dHJ1ZSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTEyLCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDZkRDQ0FpT2dBd0lCQWdJSkFQNGZTUlFwUnAzcU1Bb0dDQ3FHU000OUJBTUNNSUdaTVFzd0NRWURWUVFHRXdKVlV6RUxNQWtHQTFVRUNBd0NRMEV4RVRBUEJnTlZCQWNNQ0ZOaGJpQktiM05sTVJnd0ZnWURWUVFLREE5VGVXNWhjSFJwWTNNc0lFbHVZeTR4RERBS0JnTlZCQXNNQTFCRFJERVZNQk1HQTFVRUF3d01VM2x1WVhCMGFXTnpJRU5CTVNzd0tRWUpLb1pJaHZjTkFRa0JGaHhqWlhKMExXRjFkR2h2Y21sMGVVQnplVzVoY0hScFkzTXVZMjl0TUNBWERUSXdNRFl3T0RJek5UQXdPVm9ZRHpJd05URXdOakE0TWpNMU1EQTVXakNCbVRFTE1Ba0dBMVVFQmhNQ1ZWTXhDekFKQmdOVkJBZ01Ba05CTVJFd0R3WURWUVFIREFoVFlXNGdTbTl6WlRFWU1CWUdBMVVFQ2d3UFUzbHVZWEIwYVdOekxDQkpibU11TVF3d0NnWURWUVFMREFOUVEwUXhGVEFUQmdOVkJBTU1ERk41Ym1Gd2RHbGpjeUJEUVRFck1Da0dDU3FHU0liM0RRRUpBUlljWTJWeWRDMWhkWFJvYjNKcGRIbEFjM2x1WVhCMGFXTnpMbU52YlRCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQkxQUW01MERnQjk4MHJkSUlwNkhZTm8rbmZRZVVoUHNtNHM3OE5ST2VMTU9oZXVLbjhaeFBYREhEK1NLcUJIQW5YTmJ0b1E4ZzRjaCtxaVMrc1d2SnVPalVEQk9NQjBHQTFVZERnUVdCQlJEbldvMjRDMlBwRVN6VmJKUHoxWkZUZWJTSnpBZkJnTlZIU01FR0RBV2dCUkRuV28yNEMyUHBFU3pWYkpQejFaRlRlYlNKekFNQmdOVkhSTUVCVEFEQVFIL01Bb0dDQ3FHU000OUJBTUNBMGNBTUVRQ0lFU2trNzZrdEZuREJEeVNlYkpIdHczVGNKSVhUZk5vNU5nNEFqODhCSTdSQWlCdEViNW94dWk4U3pzVVo2d2NRUWpuNWFCNW5kMmFOSkJoWksraUZISEd4Zz09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQTRrQUFBRERDQVlBQUFBdkJWVENBQUFBQ1hCSVdYTUFBQzRqQUFBdUl3RjRwVDkyQUFBZ0FFbEVRVlI0bk8zZFRYSWJPYmFHNGVTTm1xdDZCVkt0UU9vVm1GNkJWVk5PSksvQXJJakxzZVV4QjVaWFlHbHdPUzE1QlNXdG9LUVZsTFNDdGxiQUczQi9hYWVaSk1XZmM1QUE4bjBpRk4wbVhSWi9NZ0VjNE9CZ1VQM3YvLzFhVmRWSlplOStQaDE5ZGZoM294cE1aa2RWVlIxNS84NzVkSFRiZWhBQUFBQUFJdnRGQWVKZkRyLzJkVlZWV1FjK0NoRHZxNm82YUQxcDZ6cjN6d29BQUFCQUdmNkg3M0c1d1dRV1ZsaHZJZ1NJRC9QcDZMejFLQUFBQUFCMGdDQnh0Y3VxcW81WFBtdmp1YXFxWWFmdkVnQUFBQUFhQ0JLWEdFeG00NnFxenRyUG1Qb1dJSmF3YnhNQUFBQkFPWDdodS96WllESUxLM3NmVzAvWUc4K25vL3ZPM2lnQStCVG5LcUpvR1ZBS2JaK3hMRkRJUFE3MEFFRmlnd1pMTjYwbjdIMllUMGRYM2J4TEFQaEoyQlA5M3ZBanliNW9HVkFZNndLRjNPTkFENUJ1S2hFTDFYeVpUMGNYclVjQkFBQUFJQUVFaVQvRUtGVHpvRmw3QUFBQUFFZ1NRV0xjUWpXbjVQRURBSUNJcUtJT1lHdTlEeElIazlsSnBFSTFvWkxwWSt0UkFBQUFBRWhJcjRORTdVT01zZm42TFpWTUFRQUFBT1NnN3l1SnR4RUsxVnhUeVJRQUFBQkFMbm9iSkE0bXM2c0loV3J1NXRNUmhXb0FBQUFBWktPWFFlSmdNanVQVUtqbUtSU3FhVDBLQUFBQUFBbnJYWkNvUWpXZlcwL1lvcElwQUFBQWdDejFLa2lNV0tqbW5FSTFBQUFBQUhMVXQ1WEVHSVZxL3BoUFJ6ZXRSd0VBQUFBZ0E3MEpFaU1WcWdtVlRDOWJqd0lBQUFCQUpub1JKRVlxVlBOUVZkVzQ5U2dBQUFBQVpLVDRJREZpb1pvaGhXb0FBQUFBNUs3b0lERlNvUm9DUkFBQUFBREZLSDBsTVVhaG1qR1ZUQUVBQUFDVTRwZFN2OGxJaFdvK3phZWpxOWFqQUpDUHg2cXE3Z3hmTFZrVkFBQmtyc2dnTVZLaG1pL3o2WWhDTlFDeXBva3VKcnNBQU1CM3hhV2JSaXBVRXlxWm5yY2VCUUFBQUlETUZSVWtSaXhVYzBxaEdnQUFBQUFsS20wbDhTWkNvWm9RSUQ2MkhnVUFBQUNBQWhRVEpBNG1zOHVxcWw2MW5yRDFkajRkZWE5VUFnQUFBRUJuaWdnU1Zham1YZXNKVzlkVU1nVUFBQUJRdXV5RFJCV3F1V3c5WWV0dVBoMVJxQVlBQUFCQThiSU9FbFdveG5zZjRsUFloOWg2RkFBQUFBQUtsUHRLWWdnUUQxdVAycUdTS1FBQUFJQmV5Zll3L1VpRmFzN24wOUY5NjFHZ1E0UEo3S2lxcXFNTlhzRTlFeHlBcjhGa050emdGM3lsTDhFMmxDa1Z0dFBVLzF1NzNhR0EzalovUC9RdFo2MUhmM2ErNFhXL2svbDBkT0gxYjZQZkdEOXRKOHNnTVZLaG1qL20wOUZONjlHZVduZGpVZkhWVG1OZ1VBOE82bzc0WkplMDZzRmtWdi9mdXpCUURRMWYvY05STGk5cmZCK2JlT1F6TFl2MnZCL3BHcWpid0hCTkhHLzdSaHYzWXRqQzhLajc4RkgzSW0zb0RoYnV6MVgzNnFOK3FwUUhmdXBqVDlYbUQxOW83N2U2WG5SOWJmVGZLUGg3S1VoODZmbDlaUjhrTGdUUnF3THFlL1hMaktPTTZITS9hclRidityL2I1MTF1REIrcW5RUDFXMTJrcE4rNnJPR0MrUEhhdGYrWmxEOTcvK0ZmK1N2MWpQN2UrMXgwZXNEdUgyaEFkM1hkZDhLMVRRNjIrWU50dTJOOWR4bzlPNzFQVEViczBiamhoN3E4L2RNbjE3MHJPL29SclBUdlF4d0doTWdpNTNMUG0wTVFYbG0xQVkyNzBYdlRKVkZEL1g5eUlDeFRmZnBzREdKdHV2Mzg5enNuOVQyZGRKSDZabzcxOCttRXc4ZlBGZmFOTWoyR0JOdWJENGREYnI4L2R0UUg3NzRzMi9mMGV3M3lFQllvVEYrcWovL3JTZnY5bENQbitvMnU3UCtYZTNJV08zSUptUEk4TnJEYVEyWEw3M3VySUpFZlJEM3pnUHAwRkVQK3hEWURDYXo1cXlsNTgzMTFMaVJlcjA2cTJ1NC90eFBuU2M3dHZXZ1NzRTNKVi8vamNGbS9STXJNSDlxZENySkJPV0R5U3dNT04rM250aWR5d1NoQncweXppTzBnZHQ2MXVUTlZaOERSdlZScHhIdTB6dDkzbEVHZTQxQjNYaUhQb0Fnc1VNZDlPR01ueG9pdGduYmVsRGdGVFZnSEV4bVk2MjhONi9ENThaRVF6MldHNjVZK0ZuYm51UVdKTjQ2eis2R0QvYW84QUZ5ZllOMUZhRDBjdkNqRk9ud21iOXBQWm1lK2p1NktHWDFhOGNaZTI4UGpYdWh5MW5JWGdXSm1pUVk2MzVNYVpDeHlwUHV4VjZjMDl2NGZzNDc2cU8rYUliZDVScGVNYWpieHRwQm5jSHJJMGhjUW1Pbjg0Nzc4TDZPbjdvZXQyN3IydnM3MHBqbWNpSDErMXB0MThyVjU4YkVhTE45WGJrNGxrMlFxRUkxbnZzUW4vVWhyZnh3YzdYRFVuUXNSUTkrRWhqc1dMak9PVmpVZ09jOHdoNmFmZFd6a0ZmTEdtcFBmUWtTTlZFelRtekZjQnVsdDVkREJVK3gwM3hYTWYyODFROWZHUVFaQkltUkpEeDJxbnJRSHFUODJXOHFaQ2lNcmVNS2ZUYTNqYjdzWWR0Q20wdmFveWVkNXZEVHY1RkZrS2pPL1hQckNWdHZTN3ZaOWt4cGlhbW94azZkN0RpVFZjTk51UTVNckNVNDROeFU5Rlhja29QRVFnWWFpN1llRUtSTU05c3hxcFh2NmttZjk4N1h0TjdqbGRFRUJVR2lzNHpHVGxXQjQ2Y2o5ZDJwVCt4dTQ1TytJNU1KNElXc3lyMXFxQ2l6NGFQKzJGcFJURDVJakZTbzV0TjhPaHEzSHMyWUJuNDVOSEJORDVwMXlUS05Jb1BCenI2U0g1eXFnN2txNUR1SXNvcGJhcENZYVJ1NGphd21iaFpwSUg0Um9WSzVsUzlxLzdZYTZEbU1ZUWdTSFdYY2J1dzltZEdsUW9QRHB2cmM5YjIrbjRXc3l1OEI0cm9UQ0dSbEVjbUZoYmk3K1hUMHZTcHEwb2ZwcXhPNWNiNVp2NVFVSUlZR2ZqQ1pQV3JRbDFzakYyWlovOUpOa0kxd25RNG1zeENZL0Yxd2dGanArL2xiRFVweU5DTjJYOUIzRURyTGY4SzFwYllRR3dqN1Z6SnVBN2Z4ZmpDWjNlZDRiU2dRdWM4b1FLeVVHZks0emZtQWtjWXdNSkQ1MktsU3BrUVlQOTNrMUNaby9CU0N3MzhLRGhBclhWTi82YjN1UkJOT2RadjVaV0VGOFZ5VE82dCsvak9Zek9hNlBuNXF3N1FLL1VGL2ZLV3gxRGRKQjRscVhMMHJtUlp4MUlWdXRFdGRITG1uVmIzVDRHZlptVmRKMGMzMFdIamp0dWl6Z3VJazZOcS9WY3BFaVlPeHN6WG5iRUhDVEtxdWd6OExTaTE5eWJFQ2wrVGJ5cG9HU2JuMlU5c085THpITU5oVFlXT25xakdaY2RwNkpqRjZqZmZHbVN5cGU3L0h4Rys5Z1BLOFIrenlSbTNZVC8rOXNoTWU5TWVMK3ZVbEd5VHFwdld1WkxwMTZraUtHdWtzT2MzS3ZpUU1mbTYzbWJXTnFURWdMVFV3ZWNsWkNvR2lydjJTVmc5WDRheXNOUXBjUmQ3R2dkcktwQU5GRGNadkNoa1F2bitwL1ZNZzJjZnJNUnVOL3FPa3NWT2xOdUhQbENaem14cHRRWjhtOUpyTzFHWnZIQ2pxV3EzYmsvRUxzVXRJR1IzVVAxVlYvYXVxcXQ5VlNLZTJMR092WGtFOFVDWFpOSU5FUmJqZU4yMnJpaytPTkJOem0zSEZ2blVPbHMxNGRLM25BOUttVGdQRnh1Ukk4WjBNQi9FdngyVE5kMGtIaW8xcWZDVVY4MXJaL3VsNzZOUHFTSFkwcmlpOS96aExMU1ZkRS8rUGhiVUZ1emplTWxDc3g4SFAyeFlwQ2dHbHp0ZzgxUUpaY0xBazdmUzJzWnI0N2ZjbEZ5UTJpbjk0ZWx2Q0dUTnE1UDdzd2VEb2N3cUJZbVAycSs4RDBxYXpMdmFRUmlwb2xZcTdQRjVtWEkxVXBiNVAxdFRxUUhGZDhZTG9scFJyTDhtcVFER3JmZlY5b3o3cmMwLzZqM0RmSmJGOXA1SFd5L2pwdjQ2M2FDdnFnTzZtOWN5R3RQcjQwdUpZM1o1OTYxZVRDaEliNTNaNFhrRFhKWlFLam5Rc1NFbzZEUlFiUVVuZlo3K1dlUmZ6dStsaE1RaFNUUmNvbGE4UEUyVGJPdGhuRUdHdDhBQ3hkdFlzOUtEWmVTWXVFcVdndnJUMDBwY2NkcGxwMEtnYjBMZlBmUk5uRys1eHJ0dlFmUmU0WGxxNS9EN2VDRzFaYWl1SlZ1Y0lyZkt3ejNraXFlaGhnRmo3M01WbWJIWDZwUTkwOW5VWmNRV2piOFVnU0RWdDBDQ1BWTDdWamhPcUVPM2RwNmZpWTJNQW51MnhKS1ZUMjlHbkluTk5uYVNrOTZodXdEN2VyNnUvc1pDU3V2TjRRTEZEM1I0L0w4dW9YSHpzbDlhLzBoRkYwcDZyTkU4bFZBanNjWUJZQzFXaGhySDJrL0o1Yit4QUEwTFhlNnlueFNCWVNlelBxcFNWc0xwL3Myd1FFSXNDMVQ1bFh0eXdpcGl1bmdlSXRUcFFqREtHNnRtMmtIMkZzZTNKaW9JMHpjQisyZk9ManBhc1RwNDJBOFFOeDJvblNRU0pXaDN5bkJtdUQ3SE11cEtwT3FBdUE1Ym5KUVBXazhnTndJRTY0MVUza3hsZGw2a0hpQTlMR28zWTMwa3RuSzl6N3BYT3JaWEtMczgwWFhiOVYwcmZjQXRjU3RnL2JTVDFBSEhaOWVGNmJiemc2b1hEbGQybzdZeVpXdmFrNitOUjMwSGRKcDdvT3hoR2FCY1BsM3ovU0VCQ0FXTGRYM2M1a1JCbERLWCtPdlVBTWFYeDA2SEdOeTlsSW14UzZPWndUVXgxdDAwODFIbVFxSmtHN3oyQzU3bFhNdFhuRkhPdnlaTitYL2pjN2wvNi9QVDZUdFFabjBib2pLL3FFcjJPVXFrVStLRHY0VkdON3RkTnJ1ZkdkM0txN3lWR3czZXBGUXlQenVjaVl1UDlzSEQ5YjVUaW9jLzhTSi83aWNIbi90QjZwTDlTQ0JEclFMQU9TQjUxZmF5OTNyVUsycndYWTd5WHd6Q2JyUE92b21uVUZ2RDJwS0lQTjJ2dXo1OG1XQlM4bmpvR0RLeVlKRVlyS3JFRHhIcjg5SzJkV05WZlJ4NDNOUjNxdFhtT2NZNFN1UitlNm41OHgvRlR6Ty9tMjlFNlM5cXpiZU9YeFFuTFp1RDdTdGZtSml1Sjk1MEdpWkVLMVh4UTZkZHNSZnFjS2wxWTRmZGNMcmxJMTlKTmQxOFBEaUoweG0vQzc4ajl1MTJoMmNIYzdocHdOYjhUWFVPbkNyUTg5L01kYkRnYnRoWE5TbnAzOUpzTU90ZHFmT2JmcjB1OTl1R093VHI3RWJ2M3BYRXY3alRacUh2NHRnNWFOQUFaUjdpbXh5SHRNM0lXemFWelgvV3NjOEsyRGtUVlg5d29jT2dpZUVCRTJpNnlha1hGMnRianB4WGpwbkdrbGNaanRRMWRadWQ0ZUZiL2UyTTFmcXArWEV2bkViNmJpOFdEOHNON0dFeG05UjgzeVE0SkU1Yy9CWUVhaDl4b2duSmwxdGZpbnRXdVZ4SzlON1ZmeDU1RmRYTGgvRG1Gd2ZIRnNndG1Wd3Vkc2RmZWxCRDhIT1dlUml4MUIzUGxzZXF0eitoS245blllVlhPWTJEcWVSK2JYLzlOR2pCYzdUaUJRdnBhTis3MGZibXNpdXNlUDFmN2VPVTQ4RGpRZ0NOS0lSdHRpZkFNdks0M09FajZSYm9uejVXR2VOWFRBNzJMRnVrNHRVcDk5NldDdzMydnk1dkczdFlZKysvRDN1WGJBaWJiNjhEd3ltdDdoc1lIVndvV1BTZkN6cFFCc2pqUjhLQTRZTGhMcGtiNDl6VDIrRWNQbmE3NGQ0YU4vK2Eyc3lBeFFxR2FoNDczTDVsUVkrRzF0K05aRFp2YkFGd1grcW5laDNWbmZLQ0dOT2Z2MlRWQVdXWStIVjNxdk1jYnA4bUhnelVOME5ZYXE2QWVQdW56anpiUjBCZ0lqUFcreG11K0IvWWp4bld0NnlIS0NxNSt6MURYd3NmV1g3QXhqbmh1bitka3psdnJkaklNZ2hwYlhsSXNzdE5NRzd0ZCtOK05hUlZoMDhydW02eFVYR2VRNVJBais4cWwvMUNnTTlTZzN2dDk1RHpaWG1mL1hNVjYvYUVOYW95ZnZJTDQ4Wkp4YmIwbmYrZXhrQUxGT3RoYzFkN1Y3Y1MzODVrN0NSSWpGYW9aRnJMQzVCVTgzR212WnF6QmtGZG4vRTZyVnJtbDVVVVBEcHZVV0hnZTdYRmhlTzE2N1Fjd0gzUnVZMkYxZDZoT1lmSGVJTjAwanFqQjRTSk4zSHgxS3BSMUdDTTEzN0d5WjkyZnU2eXE2ejQ4VGFTNGlVbXEzQkpIeG1NdXR4VWJDNnFzNjUxOWRlNzlHWVI3dGxHUHd1djkxSlhKb3g4dnRvZG50ZGVkSFBXaiszTG8yR2FjTHdrUzYvTTlEMWFsaW01b1padWlOcnkrenI3OSs5SFBTWXhVcUthSUFGR3JyUjVwTUo5Q3ZuTHNBVkg0VHViVDBha0daSlp5U3lrT3M0OG5YUVlvVmFPaGN5cU9jbWg0SHBOSDU5VnBnTGdvRERaMGIveld1RCtlTTV6OHlFMFk3TDBPNStkMi9WbnJlbnpiZXNKR2pQT0J2ZHJoMHhpRjUzU0dzblhmdEtrbnRVbS82bHIwS3Y1bEl2RUEwVFA3cXRJRSswbXN6NkRPTm5DK050OTBjUWIxanNJZThhT3VBc1FteHpialFHbXQzNmtOdk5PZkx4Yk9UclJTdCtIMVpGWGNJREZTQVphM3VWY3lyWDU4Vmg1cGxHKzczcWpzY0dPZFJUeklmUi9QR3BEdXZhZkdTaU5RZkhiNDU2MEdwdFpuTDM1S0tVQnNDZ01DM1Irdkk2WUk5dFYxek1IZUpuUmRmbkQ0cDk4NERTcStjVnhGZkJ2eis5RzlGN3VpY0dpUGpsSnRrekxrMlc1ZWE0STlhdit0Q1hidlNZeEx6emJDUUJpai9CNG1VeE9iUUJrN3RSbkxndlk2aUR1MHVNNmJCL2hyeTBQZGhuOVBvWTY5a3VoZHFDYlp3ZDhPUERiR0pyTjZvZ2J2Uyt1SjNlV3dtamhNY1FaV2pZSEhTc095Um00ckN2NHQ3NFBuSEs0VnJTeVdVSFFyVlYrMFlwUGNhbzIrOTd2V0UvdXpubXhwOG1nL3JqdnFyMDZkSnMyVzZYelN0aVFhNkhxTk1hODFidW1NYzZCNG1IaDloL01VQyt3NGpwOWEyN0kwZnZ5a1A1N3BlcStmQzRIZFFEOHIyM3BOY3RSL3I2NjJmZDdZRTMvWFhLV05GaVJHS0ZUenBaVEcxcW5jZjFMcGRYS3VOQnNMcDRuUGdsVXByM0NyOGJVZW1CNGFyUEJhbitNVSt6Z0FwQ24xYkJPUHZzd2xuVXp0cm5WLzlkVFZnRlhwZlRFbWFQNWc5ZENPcmtPdjc2M3pBTEdtMStFeGlWU3BNbm1xNDZpVTA2L3ZQVEpBbHFVQUs4NnBWeTQvS3JiYTUzZWNOL2JDUHkzMkUxR0N4QWlGYWg0aTdibUl4YnB6N0dwR2RxMjZZTUM2djdPRmc4S3VnUzU0ZExBclo3UTJaQjBrbG5pdUpncWpRWWYxaW9IWFNxSkg4Qm0xNHZBaXphUjdEY1NyeGRsNm1CZzdiV1c2U3lWQWJEZzFuR0J2T2lqaFZJQ09YRHBrSUt3YS96UnJTWVFEK0crMm5aQVBrd0VxOEZRSGlNL2EvLzFUdStzZUpFWW9WUE9zWmVnaVZnYzBpMlBaSUQwazJNQjlwOEhRcDlZVHV5RkkzSU5TRDZ3SFJwNHBibHNyWWI4eWVzTTZpRGgwV2lXd0RoS2ZFcG5VOUZ4TkpKWGNrR01OaDliS1NncU1KOWdYcGJ5YW1LeEd0WEpMUzhkUGpWb1M5WGd0WkduZWg2RHZwV0F4UEsvVng4ZEdnYWNIN2M5dmpZOWNqOENJVktnbVN1V3ppS3pML2VjUU9GM29kZTc3dm8vRHBBU0J3RjZzRC9aZU5STzJxYVdONUk1aUY2UUFkaGJhc2NhWlZsWk9ITTdldEo0SVNpS0EwckZOZHc0RmVSNVNyZzZhS2E5VnhOYktTaXJVUG54d3lOS3JzN0pZNmQ3ZXBYRmwzWlZ0VCtNWWpvdkc5ZjlPeDhJOWFVdEZjeXg4cFBaL3NUOVplOWFuOTBxaWQ2R2FxSlhQSXJHY0RmdVFROEJrUEFPVDAxay9LYkpPeC9TOC83ZkY3Q2h5RTJWbWVsZXFqbWM1T0U5bEZiSG04VnBJZWJmbnNZcVkvUGhKUmE0ODBrNUpPZDJCOWpPYlRrYS90REtvYStCRXdWNmQ3bnFvMWNYM2paK3poZkZZMk03dzIwdlY5ajJEeEdVSFExdEtjcC9kUHBTYWF6V29mczVzSnNqcXRSSWs3a0dOaFdYVjJjcnd2TVI5ZVp3NUNuaXluZ1JkTytEWVFkRjdoalhHc041bnhDcWlJUlhlc0Y1RmZNcW91clJIdHRqaHNxSXAySWgxRy9aaW02MmpzMEt3OTZ1T3ovcWdjZHpkd2s5NC9QZXFxdjYxNmRuQW51bW1uZ0ZpMHZ2czltRDVucktxNGhndVZxUFVucEJ5ZXNRaDVIdTVONzUvazFuQkN4MWZpbVcwZ1dXVVV2WnNPQWkyRGhLdFUwMVRuUGk5Y2FqZUNqc2VZOEZzeHBlT2FkR25ySHJ2NU5ZNEJYaTR6Y1NTc2l2TkpxSmluNU5vcGRRWkRzdjNsV00rdVZXRGxGU3hsQXhaejNTbnNwSllzZEtNREZtbXZGa0hpWmIvM2xPaTZYMnMvQ1ZLcVhqV3dkRmRodHVZUEZZOXp5aGdzNzNTdHNEbEdpUVdWeGxNaloxVk90eDFwdFZlQ1JMVFlEMVEyNmVqc1Y0UlB0TStLaUFYbG9NTzY1UnJ5ejNIcVE2dUNCTFQ1WEw4U3V1UnhEbFZKcStZVk4yWjVUN1JUaWZaY3cwU3cwQ3Z0STIxbGpkamxwMmFVa1F0OW4ra3RIS1ZuY1FtR0R6U2htK1lJVVZHa2t5ZDMvWmNyZzBrV1NSRS9aTGxvSSsyeDQ1MVdtaU9xNGcxaitDV0lIRTNsbTEycCsxRnJrRmk4TEd3RlFITDk1SnpIcm5GUUNHbGlwcTVzcHlWM09mYTloZzRodjFkdHdrVjFBSFdTWFYvZFMrQ1JMSDhEbWgzREdpU3dycXZ6L2JZQndXMzFwVk95YnJaVFRFMU1UeURSS3NEMHRjcGFVWEE2bVo4eURUVnRHWXlpMGRLWVRHOEd0dGpCWXJNbEtKWEVtNGJVdzRTU1RsTmozWGIvVlJBVVRQcklQZUFzZFJPQ0JJM2NCTWhVRHdvb2ZIV2pKaFY5VHFxZXY0WHM3VUZVQ0VMNnhMMHRYRFAvVG1Zekc3cENKR3dWQ2Y5VE8rWnpDYzNFVjhmS3V0dXl5UElwVy9zTWRkMDAzQnVoL1hCa2t1RUl3OXl2N2t0QTVya0Q4OS9nVlhRYjUwS2hlNTR6KzZHNm5oL0VTd2lSYWtmNk4wVGxwT3Z0REUyQ0JJWGVCem16dlhhdWVJTDE1dzZyZ1RVem5TZ2FxNVk5YkxIWjFxT1dDbEFkYkFZenV3Y094VG1BTENjOTJUeXZzalFTWWoyazFzZW9QOVEwTm5LMXNFdVk2bHVXVjduVy9NOFRQOGJIWkllQXJnL1cwL2EranlZek80em5YVzF2QW5QTTE4TnNkcGpTZ1c1UW9SOUlvUEo3TW1oZlA4cTRmZDhWSEdzTzNXNnR3VU5Jb0RVa0dxS2JWZ0hMaVh0T2JWK0wyRmY0aEg5WHorNUI0blZqMEZlMkovNHJ2V2tyVnRkekxsMU9KWUJ6V0hFd1hUS3FIQmFsaENvdmUvZ0hiMnFEMnNlVEdZUGVoMDNkSmlBS1NiMXNBM3JJREgzZ2pYZmhZV1N3V1QyYkx3Q2RjSnFlajlGT3dJajB2N0VYQXZadkdvOUFxRHBNa0xhK2t1T3RjTDRqMUpTTHpsR0F6Q1IrcVFlOTNsYVRMK1BqTTlHWE1YNi9YRDk5MVRzY3hKajdFOHNvWkFORExDbnJCektEdkE0TEhoWGg4cU0rSHN3bVgwTmJRN0hhYUJuK3BRaWFyblNTV3J0L2l5RGx0VDN3KzdDZXRzVlk2bWVpaG9rS2tVclJvR1piQXJac0JMaGlvYXRJUFBwNk5MNGtIOHJJWVBoVE1kcEVEQ2lMMHdIb29sUDZsa0dpVlNyM1o5bEttV0ozNGYxU2lKanFaNkt2WkpZNmJEU0dBZnRmODRrQUdNdkJyQzU4d1RTVHRkcEJvenp3V1IyazNubFpTQ1dsQWVpVE9ZbXdxRXdYNGw3N2F6ZkU5ZC9UMFVQRXVVaTBoSi9LR1JERUFZVUltSTJncFUzbXJDcVZ4anBiRkVLNjRGb3lsVzVMZTliQ29Da3BiVDlpSlZEWWJWT2oyRkFkem9KRXJXL0tNYUtRSzZGYkFDc29HeUV0OHVmVFZhOXd2ZzNoL2FqQkE0RDBTUW5VQnpPNUNOSTNBK3BqNXNwY2E4bEl1dHFKYkhTZVliajFoUDJVaTlrdzJBUjJOSjhPcnJLTUZDczFZZjJFeXdpZDVZRDBWVHZCZXZYeFo3RS9aZ0dpUVZXTnEyWkZraWlyK3Fuem9MRTZzZEE3N3IxaEwxc0N0a0EyRXptZ1dLMUVDd3lPNDRjV2E2S0hTUmE4TWx5Y1B5VTRUbk95QlBYR2ZiV2FaQW9NYzVQckRJcVpBTmdRd29VZjArOG1NMUxYdW5zeFpTTytBQTJZYjBxbGxTUXFKb0diMXBQN0k1VlJNVEN0WWE5ZFI0a1J0eWZXRkhJQmlpUDlpZ09DOWlEOFg0d21kMnpxb2lNV0tmcW5TYldSMXRuSUZFaklTM3Myd1BXU0dFbE1lYit4TEQ1L0tiMUtJQ3NoVFprUGgyRlRJRVBtYitWNHpBRFROWURjdUN3bitzZ3NlckYxdU1TZ3NTMGtKSUpySkZFa0ZqRjNaLzRhakNaWGJZZTdRNmRCbUJrUGgyRmxNMS9KM3JvL3FZT1ZBV1ZmZFRJd1JmajF6aE9ZVFZSOTk5aDY0bmRQV2xDSEFDeWtFeVFLTEgySjc1akFBYVVTYXVLUSsxVmZNcjRUWDZtblVJR3JMTnpEaU5sRnEya0lOVjZqekJaVEFDeWtsU1FHSGwvNGlVcFhVQzV3bDdGK1hSMHBBcW91YTRzRWlnaWRSN0J6N2pqdmJrWHhxdUlRY3BIY2ZYVnE3NS9BTUE2djZ4NXJoTmhGV0F3bVlWWnhNL092Ly9iL3NRUUtIWmNrdHI2ZDkrUnd2b2RoeGFqVG1XLzBxVFFXQlVVTFEvSDloWW10TzVKVlVPS1F2ODVtTXkrR0ZjQnJlc0hSSi9JMVhsdzcxcFA3SWRVVThSR0FUVHNMYmtnc2RLZ1RnMzFXZXRKVzRmcWlEbzdKRlJCY2V2eFBkeHFYeGFBaFhzdFpDb29sZXhVUDVZRFd5K3BUR2dCcTF3NTNFdkhnOG5zYWo0ZFJWdEpWOXZnc1RLYVVoMEU5QU5CSXZhVzJwN0VwbGo3RTFNb1pKUHpHVzlBVmtLZ0ZTYWk1dE5SQ0JML3BYUlU2K0liMWc0WmFDSlZPb2JHWS8vdldheDBhd1dJdHc1WkJzK2ttcG95blNqVGdnUmV4a3A0RHlVYkpFYmVuOWgxSVJ0dVBxQURtUVdNWnd4b2tEQ3ZEQmIzZmJtTkFQRzQ5ZVQrTHNrQU1NVjRhVE9tK3kyNWh2c3A1WlhFbU9jblZoMFhzckhjTzVmU1FjUkFOaklKR0ZsTlJKSzA5OWVybW5BSUZGMVc0OVR2ZXdXSXo5eXp5U3R1NGkyRkkyUlFocVNEeENydStZbjF2cDh1Ymk3TElKR0tyY0NlRWc0WXd6NnQwOWFqUUJvODk4T0hsZlI3eThsY0ZjbnpDaEFyVmhIdHphY2o2OEo4Slk2WnJOOVR6dWNPWXcvSkI0a1NhMy9pWVVkbkdWazJlbXhXQmd5dENCaGp0RWVyZEhxR0hMQ0tKblU5QjVRaG1QczdyQ3J1YzBSR1NOc09BV2RWVlI4ZEt4MC9VVVF1Q3dTSndBcFpCSW1SOXlkMlVjakdNc2Yra0ZRRHdFY2pZQXlkOEc5VlZYM3FvUERVcTQ3UGtBUFdpZEZYaDhybi93d21zNUQ5YzdwSm54ZnVtYkJ5T0pqTVF1Yk9YNDZyaHpYT04vVmpPUkZ4V0dCN2FoMGtjcXhhVHlWNUJNWXlFYzlQckZUSTVsNnpvdTUwenRTRFlhYzE3R2hGRk9pTitYVDBxRlc5c1FwcmVCekF2Y29wZTUyUW9uQmZEQ2F6QzYzU2VYdFRINzJoUHZSeFlkTDFWdzJZVHlLZmpmckpJUzBTUDl3YkYyWVpGbGFCMW5xZkpXZE85MVF1NmFiZlJOeWZXSFZReU1aeU5aRUtpRUJFV2wwOFVpcHFqSlZGVmltUXJQbDBkTm5CSHQ1akJZenZHei92RkV6RURCQWY1dE1SS2VHK3JJT1dZdlo1YTFYVWVyS1NJTEduc2dvU0pkYit4TmlGYkN4WC9paHNBWFJBRTFsSFNrUDFkRXhhT1JKMzN2SGUzUzQ4TTBrYmhmVXFiVW5mbWZsN1lWVzh2N0lMRWh2N0UyT0lXY2pHOGlZc01jY2V5SUwyTFliSnJOK2RWeFVwVG9Ca3FhOGVkckJudHl2ZkFrU3FtZnJUOFdpV0RqbytLOXVTOVNKQjN5WjYwSkRqU21MZFFQelJlc0xISysydjhINVBYNDF2UnRKZGdBN05wNk1iNTBFeVFTS1MxcU5Bc1E0UU9lZzlIdXNxdXRsbllDbTc1RTNyaWYyd2l0aGpXUWFKVmZ3OUQrOGpuVTFtdVhHYVBVdEF4elJvOUxvWFNUZEY4blFQREF0ZWtTQkE3SVoxbHRlYkFqS3dQTWFwQklrOWxtMlFLR0h3OWRSNjFNZFZoRUkybG8xZVNla1RRTGEwb3VneG9jVktJckpRY0tCSWdOZ2RqNjFBdVdkZ2VieCtnc1FleXpwSVZDcExyQlNCQXdXS2JyUDNLcWx2MllseWtDK1FCby9PbTVWRTVPYWlvTlRUMEZjZkVTQjJRK01sNjBXQzgxd0xnZzBtczZIRDJaOTM3TEh0dDl4WEVtUHZUenlPY0phTzVkbG5oNndtQXQxem1BQUNzcUJEN0VPLytaK3FxdjZNZkJ5RmwzQU80Z2tENk01WnJ5WWVaTHlhNkRIVzQ3enRuc3MrU0t6aTcwOTg0MXpJNXNaNHB2V1NVdmxBRXVodzBSdWgzeGxNWnFGdi9xZXFxck5DM25kWXVYck5PWWpKc0p4VXI0MXoyNXVvMSt0eGo5Rm45VndSUWFMRTNKL29Wc2hHTTVPbWV4TkpPd1dTd0tvRGVrSDc5KzkxbUgwSndzVHRoL2wwZE1TWmNkKy8zODQ1WldnY09BV2ZuanhlNzUwK1gvUllNVUZpNVAySmxYTWhHK3VnN3AzeTFRRjBoNzFMS0o3NnhWdWRNNXk3YjhHaDloN21QTmxxM2Zha3ROTG1FU0M5eVdYTXBOZHBmZXhGRldGckZUSlEwa3BpN1AySmJvVnNOSHR6M1hwaVA2NUZkd0M4eUhyUTBmc1ZEYVNsRVNEbXZ1L3dTV09KYjhGaDduc1BIVjUvTXBXVjU5UFJsVk14cEZ6R1RCNUI4ak9wcHFoS0N4S3IrUHNUUFF2WldQKzdoOXowUUtkeVA0TUxXRW43b25JT0VFTmcrS21xcW44cnJmU3lzTUkwbHR0eFVqdDQzaU5RT2t3OTdWVDFNYXdybWdaWEZHVkNWV0tRS0RIM0o3b1VzdEcrQit0Zzk1V3F6QUdJejNwZ3hVb2lVbkpqSENDR3ZXWnZxNnI2WGNIYlhldHY3UC92WDJ2RnNBNE14d1VmYVUzZ2RiZ0FBQS80U1VSQlZHRzV2K3c0c2VJdWwwNnJpV2VwVm9qWHF2MzcxaE0yY3R1VENTZS9sUGpCaGhrUUZaYjV1L1drajFESTVsNkhabHNhTytTYWgwWXZmRVljalFGRW9vR0c5UW9MZXh5UkJPTVZqVERCZTc1UUlPWjczNm9Vd0RyZGNWa0s5NUYrdmk2NVI4Sy8rYlduWnh1RzkvNnE5ZWp1emxNcGlxY3gzNlZUMFBSNU1KazlwbFN3U1BlQVYyYllOUVZyVUNzeVNLeTBQM0V3bVlVWndvK3RKMzJFL1BXaFplY1RidFRCWkhidFVOcVlRQkdJUkIyNjlXRHFpWFFncEVEWHQ5V1JFQ0ZBWEh2K29KNnJCK3lzcG0vdTFqaUlTaVpJbEV0ZGh4N3B6amZXNDdzOTNUZ1docUlhUHI0ck5kMzBtOGo3RTcwSzJZd2QweWhJUFFYOFhUaDA2QXlPa1FyTGdYbjJSV0lTWmgzZ0hLYVVpcW5yeGl2QUNkZjNiUXBIZjJqY1pya2kzTVFxSW41U2RKQW9NZmNubWhleWNXNzRRcUI0bjl2QnNiVlV6bXBDWEdGZ2tzczFxMEdVeDFseEZLRkNLcXhXRVo5VnFSSU9OSmF3M3RkNW1WSUZVQzBNV0orYldPczhVRlNBNkhGb2ZxWEZDS3Q3R1lVb1BranM0UHhFODBJMmF2aXNHL2RhQ0d6dnRZY3pDeUh0WXpDWmhaV1V2d2tVKzBVRGtzOVZWZjBUcm9GVWl3cFVQd0xFejYwbjl2ZnNzUDhaMkpyNkRhdFZSUGJZK3JOdU53NFNQRS9QczArb0E4V28vVTdvOTV3RHhJcFZmQ3pUaDVYRTJPY25WaXBrczJ4RC9UN09uZEpPS3pWOGZ3NG1zNXVVVjJpMGdoUlNJZjVxcEZzdzg5VXZ6Y21NVjNWUmdUQXhrOUsxTzVqTXhrNEJZa1hsT1NRa2l3UEg4WjFIUVBkRzdWMFNOTjc3NFBoYUR0VHZSRmxGYlJ3dDR4a2dQbWd4QXZoSkw0TEVLdjcreEVvYm5jMEdyY29UOTU2OWVxTlZ4WXRVVWtqQ1o2alg4MVdEN3NXOVhkbXNnTUxFc3UvN1VBVVovdEZFUjJlcmk3cGViNTBMWnBHU2gxU1F5WkVSclJSNWpJTStKclkvOGNJeDdiVDJUdU1sdDRrU2ZhYjNUbWNoMXA0ampDMlJxZDRFaVJKemYrS0JBa1d6WUVzcFp0ZXRKMndkYU1EOXFKbXk2S3N6U3EwNDEyRDdINzJlVlNsTkJ6bWx5bUozdXBkZU9oTG1qV1o1UTBuMHExalhocTdaQzNYb1hrVUZLZ29MSURHVy9ZUG5mWU1mdkZhTVBxdk5UV1dQNHFsajlsVXRURkQrWloyRjFkaFM4M25OMk1mS1JVK1BoTUVHZWhVa2RyQS84ZGk2UWRheEZkNHpaSlVhcG5mTnZWK2VqWC9ZV3hoU1Z0UXcva2VONDZhREJvTEVmdGptZXo1UWVzNmZ6WURSK2hwV1ozNmxhM2JkWklZRkNnc2dOYVpWZTFQZVkxd0tuZmZuVmVQZ1RLdHJuWCtQa2JLdmFtOGFtU3c3ajBmVVI5MHViS254ZEUyYUtkWXA5cHpFVlRvNFAvRk1CKzFiM29oRHJWaDRuWk96NkZWai85ZUQ4dVBEeitPMk0xQ05nNURyQTQrSCt2TStnMnVDeEg3WTlYdXVBOFp2ZXpvYTEvQzlydUdOajVOUWF0R0pmaXlMZG15Q3dnSW9YZGhhY01OMTd1NUNnWWlIUTQwVkxsUW9KN1N2WDBNNzIrai9hNkU5L1Q0bW1FOUhwcGxMSWZzcThuanZqZlpvUGpmZSsvMnFjWkpXSCt1K1pCaHhURmRwc1lGSlI2elZ1eUN4MHY1RXpmYkVTbS81cUVEUjVHeXowSUhxOWQ5R0hxUldXaDA5cnN2NmgwUDVsY0w3VWdyY2tXTUQrQzNsbElxUDVkb3cxWFJUeDgwOUhycUduMStvcnJqdlJNYSs3cGp4UllLZWpOdjFRMVdQSEJJbytsSEFkdWM4QmpyVU9LRTVWbGdyQkUzVzZmUWE3NTA0RjM1WnREZ3hXUzMwTVYzM0orRzFuSEtQNFNWOTI1UFlGQ05mdmNtNmtNMjlacDVpdm9kVkRodXJqYXQrdkdmSVdFMHNtL2YzZTdEaXVxMS91dTdRU2NORGlqejJ4eDVyVC93NHBUUDRDcFJpbStKU0JFYmJkTHpyT2J6a0lLSCtaTWplZG15aXQwRmlCL3NUUFFyWnBCUW9kbzBnc1d4OS9uN3AwSkdxZGF2dit6aFFpdUNqOWhPZnAzdzhVNDdVcG5nZUZiRUx0M1kra1VDeGEzV0FTS0VhYktTWDZhWTFwVng4VU1HSkdPcENObVl6ZU5wak9ld285VFFsSWVYMGhNYXZQTWFwcHJsNXl6V05oTjNXNllST0Z0UDI2cFM5OFBOVks1bk5DWlI3VXVnMkY0NkswTllWenlNV3R1RjY3bVlJRkpYNkdUUDFOQlVFaU5oYXI0UEU2a2NqT1l5NFA5RzhrRTBqVUx4S3FMSHZ3amtic1l2VTExWEVFQ0J5SmlKU1pyTFBmZ3ZObEwybE50bjc5b0xGL2NsMVFIcGZGMkJaLzU5blo2aEFPNFZKNWdQdFIzWDdqQlVvMXNkTDlNV1Q5aUFTSUdJcmZkNlQyQlI3ZitKSDZ3TllHNm1uWHFXdGMwREthWm42dGg4dnRFVy9FeUFpZFZxMUt5MkZiM0YvOGp0bEcvMnBNL0htWWFKWGFiQmpGVVhKbHI3RGxMYXR1SzRtVnY5OXo2RnRmZDJUclRxaGlpbFpWdGdKUVdJMyt4TXI2MEkybGQ3SGZEb0tEZXluMXBQOWNKaDdoNDJmNlI1WnVXcFFvQ2VsQkZHcEY3bm80MlRHc1ZJV3c3N0p2d2VUV2IxM01zdUpTZ1VRcVdUaFJQa010VnA1VXZqRStxZjVkSFJDQ2paMlJaQW9hakJpYnVJMkwyUlRtMDlIWTgyU1BiV2VMQjlWSU12U3A5WGhPMlo4a1J2bnc5bHpjYWlnOGMvQlpQWlZBV05XRTVaYVhYdWJ3T3JhY2F5cXRxRjRqeWJXVXl2Z3M2ODZHNFh0TjlnTFFXSkQySjhZdWJPckM5bVlhOHlTOVdsVjhVNEgyS0ljZlJpQWhnNzlqekJZWWNZWG1UcW55dlozZGJHZHNNSjRtOVBxb2dMRkZGSlAzVk5PbXpUMis2MlF2aWFrZngrUmpRSUxCSWx0c2ZjbmhrSTJMck05U2ordFZ4VkxIbWlIUnZHMUJ0bWxGUlhvdGJDcXBwbmUxNFdXTC8raTFVTU95a2UyZEp6Q0JkOWd5eXV0TGo1YTF5SHdva3lHRSsxbDYwcjB3THF4cXZoN3BsbFlkeG9IblRQWkNDc0VpUXM2MnA5b1hzaW1LUVJPYXZ6ZUZwU0MrcXdVa2QvVUtCSWNGa3pYOExsbWUvOG80RHF1Ty9SVHprQkVDVFRSMGZkejZGWTVWTkdiMnh6T2UxVEFkTkpoR21abkFYVllnWnRQUjBjWmpaZWVWQW1iU1hLWUkwaGNvb1A5aVpYWC9zU21rRXJTYVB4eVhWbjhvbHo3WDBPS0NBUHNmdEhnNVZMWDhiK1ZUcDFUd1BpRlZXOFViTnp4Q2xUcXdzcml2VmYya0xVTzB6QVB1dzZtTXhndjNXa3NkRVFsYkhnaFNGeWhnLzJKQjdIT25GTGpOMndNc2xQZlMvSkZEZlcvdFBKQ3JqM3FWTlJ4STJEOGtPZ0E5VW1ybjcvcCtpVTRSSkVheHluMHZaRE5PZ2ZLSHJxTlZhQmxINDAwek5mcWkyTkpZaTluWTd6MFd3S1Rrazk2RGI5cG9wR3hFRnoxL2pEOUY1eEdQbVEyVlBXNlVscWR1MGJaNjdFMjF3LzFuZzhqdmQ5VjdoUXczektneGlaMExZZWZDdzI4aHZvNTZlZ0lqUys2aG05WTdVYWYxSUhpWURLNzFCbURXQzYwUzQ4NlBENzVpc2JxaSt0MDJWTVZLenB1L2NYOVBEVDYvcVFDSUxYajlYanBwREZlOHU1ZjdocDlDWld2RWRVdkdsaTlkdmlsMlYvTW9iTlRZNUQ4SG9KOXFVRytVUU40cE1GMVBjZytjUWlVbjNXTmZOWC9ocC9IeEJyQnExaXJ1d2tLbmFIVkxIZlVUZlFhcE40MEs5M3FQcTd2NWFIKzEySXk1RWtUU2ZVMWZKOWhSMjU5blh1OWY4dCtLcmZBM2ZLOVI3ayt3eXIvWURLN1VVR2JQcDExdW8wREJWNVpCSXJWajJBcFRBQmNOaWJrNnZiMVYvMHNCbzlQUys2NXV2OS9WTitmVFYvYm1KVDhWbkJNTlNYcS91Vmt4LzZsSGhNOU52cVNuTWNmMXJGRlR2MXFNV1BId1h3K2J6MElMTE5RWEdlVGplWDNpd0VDSzROSWlTWkU2a21nb3hjbWhKclg3aU1yaE1CbWxLbHlGVEVySjBlL2t6NVlGZ1hSTDUyWGVVODFVcVNLSUJFQUFMaFFrWllMQXNRWGhaV2tiRllVQVpTUElCRUFBSmhTNXNubGt0UkRyUGFzYzFQSlVnRFFPWUpFQUFCZ1FpbDJGeFN0MmRtRFZoUkpRUVRRS1k3QUFBQUFlMU9CcUZzQ3hMMGNLOGdHZ0U2eGtnZ0FBUGJpWEp6bUlWS1Y1SlNxc0w2bTBCdUFMbkZPSWdBQTJObGdNZ3RuNW4wMi9nU2Z0S2Z4S25icVphUHFjZk40aDlqbkIxOXVVQmtUQU55d2tnZ0FBSGJpRUNDRzRQQmlQaDFkdFo3cGtQTWg4cXU4VGUxekFOQWZCSWtBQUdCcnhnSGlzNExEeTlZemlWSEFHUFlObmptL3NxZjVkTFR1N0ZZQWNFT1FDQUFBdHFJaU5YOGJmV3BoeitGcGJrYy9SQW9XT1dRZlFDZW9iZ29BQURhbVl5NnNpcXBjNjhpSDdNNEdESzk1UGgyRjFkVFhXZ24xY043dHV3VFFWNndrQWdDQWpRMG1zN0N5OWNiZ0U3dFdrSlc5UnVEc3NWL3hYNXliQ0NBMlZoSUJBTUJHdEEvUklrQzhLeVZBclA2N3F2aFYxVkFmV2svdTd6VDIrd0VBZ2tRQUFQQWlyWlpaRkpaNUxqSHdhUVNLMXFtbkJJa0FvaU5JQkFBQW14Z2JIWlkvTGpWOVV1L0xlb1YwMkhvRUFKeXhKeEVBQUt5bFZjUkhneUN4RjhjNkRDYXpzRC94VmV1SjNmMldZM0VmQVBsaUpSRUFBTHpFYWhVeCtYTVFqVmdmZ3M5NWlRQ2lJa2dFQUFBdnNVcWh0QTZlVW1WOXR1Rko2eEVBY0VTUUNBQUFWaHBNWnFGd3l1R3E1N2Z3MEplakhQUStMU3VkL3RwNkJBQWNFU1FDQUlCMXJBcW4zTGNlS1J0bkd3TElGa0VpQUFCWXgrb0lCZ3F2QUVBbUNCSUJBTUJTcW1wcWtXb0tBTWdJUVNJQUFGakZzbUJLMzlKTkFTQmJCSWtBQUdBVnk0UGMrMWFoazRxa0FMSkZrQWdBQUdCb01Ka2RHWjByQ1FDZElFZ0VBQUNyV0I3aTNxZVZOY3NWMklwVVhRQ3hFU1FDQUlCVkNCSjNZMVVSdHNaeEdnQ2lJa2dFQUFBeEhDb05zMmlxQ1B2RzhqM09wNlBiMW9NQTRJZ2dFUUFBckdLZDVuamVlcVE4WStOMzlOQjZCQUNjRVNRQ0FJQlZyTk1jeDFwcEs1TGVtM1dReUg1RUFORVJKQUlBZ0ZXc2c4UURoeUFxSlZjT1ZVMXZXbzhBZ0RPQ1JBQUFzSXJIS3RiN3dXUldYQkdid1dSMmFyMFhVZGlQQ0NDNndYdys1MU1IQUFCTERTWXpqNEhDVTZoMk9wK09pcWphcWFEMzFtRVY4Y3Q4T3JLdWxBb0FMMklsRVFBQXJITzM1cmxkSFlhZ3FvVDlpWTRCWXFYMFZRQ0lqaUFSQUFDczQ3VW43bGlCWXJhcHA4NEI0dE44T21JL0lvQk9FQ1FDQUlCMVBGZXo2a0F4dTVUS3dXUVdDdkQ4N1JRZ0JoZXRSd0FnRXZZa0FnQ0F0UWFUV1FnVXo5YjlIUU1ocmZWOFBoMDlwdnh0RENhekl3WE9yMXBQMmdtcmlFZXgzeHNBMUZoSkJBQUFMNG14cWhXQ3JuOUNRRHFZeklhdFp6c1dna01GeS84NEI0Z1ZxNGdBdXNaS0lnQUFlRkdrMWNTbUI2M1kzWFM1dXFpQTlUemllNytiVDBmSkJja0Erb1VnRVFBQXZFaHBsdmVPZS9EV2VWQ0JtRzgvbmtkbnFPTHFVRCtucXNRYXkzUDR2ZlBweU9OOFNnRFlHRUVpQUFEWWlJcTFmRXpnMDNwV3dCcCt2allPbkgvY2ROVlJ3V0JkV1RVRWhFZjY4M0hyTDhmengzdzZ1dXp3OXdQQU53U0pBQUJnWTRQSjdEYkNucncrdXA1UFIrZDkveEFBcElIQ05RQUFZQnNoQmZPSlQ4eFVTS2NkRi9SK0FHU09JQkVBQUd4TSt3RlBsZktKL1Qxb0g2TGJQa3NBMkJaQklnQUEySW9LcXd3SkZQZEdnQWdnU1FTSkFBQmdhd1NLZXlOQUJKQXNna1FBQUxDVFJxRElIc1h0ZkNGQUJKQXlxcHNDQUlDOTZEaUpHNnFlYnVURGZEcTZ5T0IxQXVneGdrUUFBR0JpTUptRjRPYzluK1pTWWJYMWZENGQzUzU3RWdCU1Fyb3BBQUF3b1JXeWYydS9IWDc0RkE3cUowQUVrQXRXRWdFQWdMbkJaQmJPL1F0QjQwR1BQOTI3Y1A2aDltNENRRFlJRWdFQWdBdnRWUnpycDAvQllnZ09MMWc1QkpBcmdrUUFBT0NxUjhFaXdTR0FJaEFrQWdDQUtCUXNuaXBZUEM3a1V3L25SRjVWVlhVNW40NGVXODhDUUlZSUVnRUFRSFNEeWV4SXdXSUlHZzh6K3dhZWRlVEh6WHc2dW1rOUN3Q1pJMGdFQUFDZEdreG1KenFVL3pUaHN4WkRLdW10QWtNSzBRQW9Ha0VpQUFCSXltQXlDd0hqU2VNbmRtcHFDQWhENm1nSUJ1L1pZd2lnYndnU0FRQkE4clRhK0t0V0hDc0ZrTDgyL3Y4bUJYR2VGUHpWNnVEdnNRNEs1OVBSMTlaL0JRQjlVbFhWL3dQaFdLM3RNUFZ0R1FBQUFBQkpSVTVFcmtKZ2dnPT0ifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiTk9UX0ZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMTAtMDYifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTEwLTA2In0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiYjhkZDM1ZjAwODViZjhjMmM4ZGRlMDBjYTI5MDE5ZTJjMzA4OTk0ZSJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyJiOGRkMzVmMDA4NWJmOGMyYzhkZGUwMGNhMjkwMTllMmMzMDg5OTRlIl0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IDUgQ0NOIFNlcmllcyB3aXRoIE5GQyJ9LCJkZXNjcmlwdGlvbiI6Ill1YmlLZXkgNSBDQ04gU2VyaWVzIHdpdGggTkZDIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NiwicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoyfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCIsInJlbW90ZV9oYW5kbGUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURTakNDQWpLZ0F3SUJBZ0lVUjM4bXEyNlNmMnN6VlYyQmRHNldFTjdrdVdVd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVJZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU5ZMFdiOW9Qb1JvS29ReVdQYUpwejExdnJXVGc2elR0bU5qMlZvS1JueXZLR1JxcHpiODN3NWw2WUE5NlVZa1lCRFFQMGlsTzJEUGU2d1dxVlI1ekRmUnpkY0g4YmgrTDdkR0d2YWU2aFJUWmhrRmtDcFhEczRIY2NrbnJEZjhGQ2xKN0hlMzlKZjQyL0cxUW0yeno5V1dtclBYdGdpSy94MDVHanNRZkd1REcxemY1UVRVVWllOGx3eW1LM1RmZE92TmVlSkFBUGUycG43SXRmUmIrclZyTldpRHpsUm4ydk5uWjJ3UG80d0gvV0o2ZGhYWkcrck1XVCthNkJvY2cxVWZJdzZrZHVuRzRiVHBaenN2YWNGWXlSMG1wZitEZU9ucFNXQW15d0pXSHZUbGYyWVh4RnllWGNUQUNkUWxjTU5HSjJWaFpRNDh4dFA1L1JCUC84a0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ2h5NDJva2lxY1RTMWlxYS9IUldqa0JuNEgvTUI4R0ExVWRJd1FZTUJhQUZPcTNRcENlREh0a2V0dFVmQU82ZkU2ZjJLRmhNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUFuK1JISVBidE1FRE5kVDFnOEgvUml0QWtVZExnQXQxdFdHV25sajlrbmJ2NC80R2xYN0M5cDQ1ZWZQTzkvYVpMNk9WMVhSS0JpNkttdEJXNUs3bnVZRW5NeC81QnFCU2JMVDdyaGR1QzQ5VEJlTWI5UEhkWHNUbFNWTlllZnIxZEdpZHI0ajB4VkJRTGIxcmtuREFiZFdEektmdm5heUtPOEZyd2U3SHg4NDNNRy9ySitjMFhydVV2YmZWVENITGlJV2hNN29ORGhMOHhvYjZ4VW85S0xLY1NMK0l0WXNPMy85V2I4UTlHanNxTDRGWHNEY0cxU2FZaDdLcGZ1TW1PaXhxekpaTzJuSWljUFlSZzFJMlN1aVVmWU83MHRtZEhjYmwra1NRbVNZdDdycTR2aUlMZzJHeDNqOXJJVHVXVGpiYVVhU1NReGdPbU1TSHV5ek1BQyIsIk1JSURQakNDQWlhZ0F3SUJBZ0lVWHplaUVESkVPVHQxNEY1bjBvNlpmL2JCd2lVd0RRWUpLb1pJaHZjTkFRRU5CUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTVo2L1R4TThySVQrRWFvUHZHODFvbnRNT28vMm1RMlJCd0pIUzBRWmN4VmFOWHZsMTJMVWhCWjVMbWlCU2NJWmQxUm54MW9kNTg1aCsvZGhLN2hFbTdKQUFMa0tLdHMxZk81M0tHTkxadWp6NWgzd0duY3I0aHlLRjBHNzRiL1UzSzloRTVtR05ENnpxWWNoQ1JBSGZyWU1ZUkRGNFlMMFg0RDVuR2R4dnBwQXk2bmtFbXRXbU1ud08zaTBUQXVjc3JiRTQ4NUh2R000cjBWcGdWZEpwdmdRamlUSkNUSXErRDM1aHd0VDhRREl2K25HdnBjeWk1d2NJZkNrenlDaW1KdWtoWXk2S29xTk1LUUVkcE5pU092V3lETVRNdDFid0N2RXpwdzkxdSttc1V0NHJqMGVmbk85czBaT3dkd01SRG5INHhnVWw1Wkx3cnJQa2ZDMS8wQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQjhHQTFVZEl3UVlNQmFBRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRTXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJEUVVBQTRJQkFRQzNJVy9zZ0I5cFo4YXBKTmp4dUdvWCtGa0lMa3Mwd01OcmRYTC9jb1V2c3JoenN2bDZtZVBNcmJHSkJ5SjFYbnF1QjVzZ2NSRU5GeGRRRm1hM21pbzhVcGYxb3dNMVpyZVhySjBtQURHMkJwbHFiSm54aXlZYStSMTFyZUlGVFdlSWhNTmNaS3NEWnJGQXlQdUZqQ1dTUXZKbU5XZTltRlJZRmdOaFhKS2tYSWI1SDFYZ0VEbHdpZWRZUk03Vm9sQk5sbGQ2cFJGS2xYOHVzdDZPVE1PZUFEbDJ4TkYwbTFMVGhTZGV1WHZEeUMxZzkrSUxmejNTNk9JWWdjM2lyb1JjRkQzNTRnN3JLZnU2N3FGQXc5Z0M0eWkweEJUUHJZOTVyaDQvSHFhVVlDQS9MOGxkUms2SDdYazM1RCtXVnBtcTJTaC94VDVIaUZ1aGY0d0piMGJLIiwiTUlJRFNqQ0NBaktnQXdJQkFnSVVUbmJiR0lSMk5IdnpxSUtGQWVRd0cxWEJpczB3RFFZSktvWklodmNOQVFFTEJRQXdMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3SUJjTk1qUXhNakF4TURBd01EQXdXaGdQT1RrNU9URXlNekV5TXpVNU5UbGFNQ1l4SkRBaUJnTlZCQU1NRzFsMVltbGpieUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRUVnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBT3NYajNrMDRCYW40VFlkdFpLcUQvT1BKeHlEeWFQbUNCVUZVaWFaSWdUdGVabmozWDI1RGhncFpaWHNDNEQweWRJY3JsQTZ3TlVJbk9STC9MOXpCYlRFSU1BVk1HbzZnN1VLQW1iMk1GNkFIYm5oWUpkOWVpa3VwVk5XU2hITllOYzRHQmRPMVlONkFmVXF2SmhIYmUzVjRTTk1QbUJSRUtKUFZ6N1Rod2dtZ2dUZThXczJLMC93c3F2MndTRTdwYkNCc1VaaElYNTFiWk0zcHFEd0pQVG1SRkV2dDAvNnRHNWVPOEYzajE0T1hxZkVobWpuMVZ2eEtEWVFPTFpBeEN3d2dDMFA0Q2RmV3YzeThQU1I4STM1NGhPMVkrR3pOanZJcVgzOE5LTHl3dUlZSEZlck94Tmx4RU1CdkZoWUJ1UnVZQWtrZ1VhUHFONlVCaHNJTHJzQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZDQ29SSGhpeU5uYm5YUldJTDZaQlhvQlg5WVRNQjhHQTFVZEl3UVlNQmFBRkNBb1VDRWJwRnBiNkZQTG5aM0Y1UHhzTDNvZk1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQ1FGYWZKSTEvNVdnOUNFRWltRTFSUDU0UmdRd1ROVE9PUXNMQUNUZStySXRsRlF6QzlaRGhyVjgyOHlYN2p6eStBQXNwM2l6SzdUMXRoMmRsN20rdHUwc3cyUGEvb2xjMDJudDZQeUl3MzQ4Z2FIemhJMSswS0U0NXF4dkZEZUwybE14YlBmQ1l2eUVFYVl6amlRRUxVNTk1MXBYR1d5S01hLzRmTHRPK1pLT1hoTXVWZXE0clhEUEk1NFc2SkhPaUFhaUtkaXcrNWUzYzJrdC9qRklRdE02dk1YZzlMTkZ6ZGpFVE50MjBWWDlRZXZScEZaZnVjTUc5d0NhUURvRmxQenBUTUpLaFBldi9pbUptWlloS2ZyMGxMY2VtdHFqSXhMQW9xWmRPWWZIQmc2K3ZBY2RQSS9pYXVHcFVBdjdYK1VLTm1Ed2paMkJhSDRzTHdoQjJtIiwiTUlJRFNEQ0NBakNnQXdJQkFnSVVVY21NWHpSSUZPZ0dUSzBUYjNnRXVaWVprQkl3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRRG01NTViV1k5V1crdE9ZMHJJV0hsZGgrYU5hbm9DWkNGaDdHazNZWnJRbVBVdzBoa1NHNnFZSFF0UCtmWnlTMzNWRXJ2ZytCUXFubXVtZ05oZnhGcmt3RVpFTGVpZEJjQzhDNEFnNG5xcWlQV3B6c3ZJMTdOY3hZbEluTE5MRmNaWS8rZ09pTjZaT1RpaE81L3ZCWk1iajlyaWFBY3FsaVltTkdKUGdUY01HYUVBeU16RU1OeTJubTZFcCtwalA1YUY2Z2kyMXQvVVFGc3VKMWoyUmoveW5NL1NkUnQrZWNhbDVPWW90eEhrRmJMOXZ2djJBMk92NUlUWkNsdzRiT1M5bnB5cFFpbU9aNVFBWXl0bVlhUXBXbC9wTVl6NnpTajhScWtWRE5FSkdxTmZUS0EyaXZMWXdYNmxTdHRNUGFwZzBKODRsOVgwdm9WTi9GcFM0VkNWQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJRZ0tGQWhHNlJhVytoVHk1MmR4ZVQ4YkM5Nkh6QWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQVlNemdMckpMSXIwT292UW5BWnJSSUd1YWJpSFNVS1NtYkxSV3BSa1dlQXRzQ2hERUhwWGNKL2JnRE5LWVdvSHFROHhSVWpCNEN5ZXBZZXZjM1lsckc4bzd6SHhwZlZjYW9MNVNldUprekh4S240YlRhU3A5K012d2FtbnA2NGtaTWlOYkZMa25mUDlrWUtvUkhrTVdoZVJKMVVzUDF6NFNjbWtDZUlMZnNNczZ2cW92cWpXQ2xGc0pwQmNzbHVZSFdGN2JCSjFuNFJ3ZytBVEVvcFk0SWdHdjZadndjK0E5citBVDJocXBvU2tZb0FsK0FOWXdnc2xPZjlzSmUwVitUQTlZWS9VbGFCbVBQVGQwLy9yOXd2Y2VQV1prUGpLb0FDL3pVTmhmRGJoNExWOEdIczNseVgyWG9tTC9MTmM4Sll6eUlhREVoR1F2ZW9QaGgvdHIxZz09IiwiTUlJRFNEQ0NBakNnQXdJQkFnSVVEcUVSdys0Um5HU2dneGdVZXdKRkVQRFJaM1l3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRREk3WG5IK1p2RHdNQ1FVOE04WmVWNXFzY3VibHZWWWFhUnQzWWJheG45Z29kTHg1c3dIMGxYcmRnamg1aDdGcFZnQ2dZWVg3RTRibDF2YnpVTGVtck1XVDhOM1dNR1VlOFFBSmJCZWlvVjdXL0UraFRaUC8wU0tKVmEzZXdLQm82VUxlTW5mUVpEclZPUkFrOHdUTHEydjVMbGo1dk1qN0p0T290S2E5SjduSFM4a0xtelhYU2FqMFN3RVBoNU9BWlVUTlY0enMxYnZvVEFRUVdyTDQvSjlRdUt0NldDRkU1blVOaVJRY0ViVkY4bWxxSzJieDJ6Nm9rVmx0eURWTEN4WWJwVVRFTHZZMXVzUjNEVEdQVW9JQ2xPbTRjcnB3bkRSTFZIdmpZZVBHQkIvL3BFeXp4QS9nY1NjeGp3YUgxWlV3OWJuU2JIeXVyS3FiVGExS3ZqQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJUcXQwS1FuZ3g3WkhyYlZId0R1bnhPbjlpaFlUQWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQXFRYUNXTXhUR3FWVlg3U2s3a2tKbVV1ZVRTWUt1VTYrS0JCU2d3SVJubHc5SzdIZTFJcHhaMGhkd3BQTmlrS2ptY3lGZ0ZQemhJbXdISmd4eHVUOTBQdzN2WU9kY0pKTmt0RGczNVBYT2Z6U24xNWNGQXgxUk8wbVBUbUliOGRYaUVXT3B6b1h2ZHdYRE00MVphQ0RZTVQ3dzRJUXRNeXZFN3hVQlpxMmJqdEFucS9ORFVBN2JlNEg4SDNpcEMrLytOS2xVcmNVaCtqNDhLNjdXSTB1MW02RmVRdWVCQTduMDZqODI1cnFEcXNhTHM5VGI3S0FIQXc4UG1yV2FOUEcya2pLZXJ4UEVmZWNpdmxGYXdwMlJXWnZ4clZ0bjNUVjJTQnh5Q0pDa1hzTkQwNWRDRXJWSFNKSXMrQmR0VFZOWTlBd3R5UG1ueWIwdjRtU1R6dldkdz09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWZDQVlBQUFDR1ZzK01BQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBSFlZQUFCMkdBVjJpRTRFQUFBYk5TVVJCVkZoSHBWZDdUTlYxRkQvM2Q1OXdlUVNJZ1M5QVFBWGNGTEFRWmk5ZnBlVnoxdFkvV1RacjVXeHBjN1c1a25MYTVqSTNaODVzclMybk0yc2p0V3daUzdJVUg0SDR4Q25FUXg0REFaRjc0Vjd1czg4NXY5L2xJbkJ2VkovQjRQdjludS81bnUvNW52TTU1NmZ6QS9RdjBIYi9JclgzVkZLUG80NWNubTRpblVJV1l3TEZSbVpRVXV3akZHL04xaVJIaDFFWjBOUlZSdWRxdDFCZCsyblNLeVMvT2h5czArbGszZS8za1E5cXZENFpVdGE0VlZTVXVZMGVpcHlpVGhBZm9jb09SVmdEdXV3M3FLUmlBZDNyYmNFdGpUallJb2Y2V2FIc0NtelZQV0NNeCtjZ2g4dExxV01LYU1Xc1VqTHFvMlJ0SklRMG9Pem1lcnBRdTRlc1pnc09Oa0d4SDdkMGtkdlRUMTdzNE9NVTdWSThaaGpnR2FNK0FxOWlFTnU4UGlmMXVkejA3TXd2S1dmOEdsVm9DRVkwNFBDNVdkVGFYWUZiUjh2TnZMNSszS2dmYjV4Tk15YTlSYW1KaXluYU1sR1RWdEZscjZiYTl1K3BxbkVYNHVNdVJSZ2pTWUVock43dXRGRmU2bHFhbDdOZmt3NWltQUdIeW5QcGJrOFZtWTB4c3RucHRsRkNWQ1l0elR1Qk44M1FwTUxqVHRldmRQelNVbko3ZThta2p4WjM5ZlhiS0RmbGRacWJ2VStUVWdHbkJWRjZmUTJpUEhnNFcxNlVXVXd2emJrMTZzTVpFK1BuMHB2ejdKU2V1QXllczhsY3BDbWFLdW8vcCtxV3IyVWN3SUFIV3J2UDBZRXpoWEF0TEFic3NIaHA3aUdhbXZ5aWpQOHJ5cXJYVVdYOVhvb3d4eUF1Zk5CcnA0M1BPQkZYWmxrZjhNRFJpcWNweW93QXdwdXoyeCtmV3Z6L0R0ZGU5c21zenlndGNSNkMxd2JkekJsNk9scTVXTllZNG9HYXRoSk1ya1RFeDBqQVJTSEFWcys1cllrUU5YYitRZ2ZQTHNRNmdYeUluc3JlUWZtcG03UlZGWWZMODZuMWZpVU9rWXZTaGtVUHh2YnVrem95NksxaWhNMWhvM1h6VzZFdlNmWEErZHBpV0dhV2QrZG9Yekx6bUd3S1lGTENBc1JBbFBCQWhNbENGWFU3dEJVVlByOEhnVmNKSFdxK0YwMHBscitETVRkclA0enZ4WTExa05NaHhUK1NlVEdnK2Q0VjVMUUppdHlVR0pOQjhWRlpzamdZQlpNL0lJL1hDVGtqMHF5RE9wRjJBVlExN0NJalVwL0RuVDFVa0w1RjVnZGorc1Mxd2cxZ0UzZ2lnbTYwZkNYelNuUFhieUFQYklYditJRHBFMTZUaGFISVM5c2t5aGxtTUU1RjNjZnFBS2hxMkMwRTVQSDFnWWFYYUxQRGtaRzBIREpPbktXSHA1MUkwejVTT3V4OGUxV0F1WnpkSFFyVGtwOFRtalhvSStsYTB3R1pzenVicWJPM2lmUTZBL1c3dlZTWXNWM21SMEpLd2tLYzRXSGlCa21SOEkzQ0NnSTg3b09MNHF6VDVQK1JVSkJlakVPZ0FQSzhoWVB6YXRNK2VJVHAySU85eVRRbWVyb21QUnh4MXF4QWNzaWxlL3ViU2VFYmNXUUdZRUNnaGNMWTJIeUtqb2dqSDI1aE1wanBVdjFPdWdsaTRlaDJlUncwTzMyYkpqa3l1Q2dOemcwdnpsWU1TaVNzMHVvbzRNRzdoTU9qQ0VhWDF5RkUwblN2akJ6dVRuRXBLODZaOElvcUZBSXVidzhrZzlBckVhUkVXU1pJK2pINFhicDZnOUU5RW5KVDNvYVJ6RE4rTVVKQlFESG41NmE4b1VtRUJ1c094QnMvTjUrdEpFYlBrQUZEajhVR3ZPcy9JV3ZjU2dsR0JodlM3L0ZUWWZwV0dZZERZOGZQQXhXU0EzNXNUQzRwNCtMbTRBYXFJb1BlUXRmdWZLNkpoMFpoeGxic1VYT1NtWE5pZkQ1WlRBa3lEb2ZiYmNjbHhuQThXTkFxeENiUk55a2hYeFFwYUR3NjdmWFVZYnNpRzBLaHR2Mm9lSXZoOHJoUU1ZT2NFQXFYRy9lSSt6bmdPYzV5eHI4cTgySUFNMWMvRkxGT3BscXU1ZUZRWHJNWnpHY1ZDalliTFdHNUk0QlQxZXVScmxieHROT3RNaXREREVoTFhJSXluQUF2dU9FV0UzWDNOZEFmdDk0VmdhRzQyWElRdDBaWDZQZUNFL3FRRmU5cks2SHg3WVU1MEt2SDdmVzRmUytxN0tLQkp4c2dnQlg1cFNBR2gxaklyVmg1elE2dzNSZmFhaEJYbS9hQ2JDWlRqQ1VGVVR5V1pxVzlwNjJNakpQWFZxT3JQZ01PNE52NzRHa2Yrb3dmdE5WQkRRbmpGSnFIU3cxN3BYdmhXVzVLWnFlL1E0OU4vVVNUQ0FWV29RWEZJSEJIWFhlM0ZQclVEc3VHRG10Ri9oSEtUSHBla3hoaUFPUEkrU0pxNlM2SEY0STlZV3prQkpUbzQ2aVVNeldwOFBpci9SaWR1THhLWXNTa3NWOHZMbE9RdmhHWDJZbFIwT0JoQmpDK3UvZ0VjdlkwQXBLN1lrNDFOeGpQU1FuV0ZIVEY2NlVyamdldkI4Q3U1YStsMnZZU1JQdHVWRG83M2hoZE1TSG5VWDd0VGpzVlpHeEFsL1dwdGlPSUVRMWduTDI5bVg2L3RSMXRtbGtZajhXNFgrQ1NqV2NVREdZMU5wUy9DN2hTS3FpTUxNL2wyUW1TV1o3M0RkeitnaW84QkNFTllQUTQ2cW5rendYVWJxdkJreGpVUXNXZlpGZ2J1bzNyQWYrd043ak9POTAreW54NFBpM0wrMG5ZTDFTY2hEVWdBUDRnUFYvN0lkMXErMUhTaG11R2tJcVdSUGd5eE1GcVA4SGZqVG5qWHdZNWJRZmJKY3Q2T0l6S2dNSG90Ri9IZTFlZ3NheEhTcUc2d2ZkbVE1eDhOeVRGRnFCY3AyaVNvd0hSM3lrNSszNmhGN3ZYQUFBQUFFbEZUa1N1UW1DQyJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTEwLTE2IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZdWJpS2V5IDUgQ0NOIFNlcmllcyB3aXRoIE5GQyIsImNlcnRpZmljYXRlTnVtYmVyIjoiVTJGMTAwMDIwMjUxMDE2MDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMTAtMTYiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTEwLTI0In0seyJhYWd1aWQiOiI5MDViNGNiNC1lZDZmLTRkYTktOTJmYy00NWUwZDRlOWI1YzciLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjkwNWI0Y2I0LWVkNmYtNGRhOS05MmZjLTQ1ZTBkNGU5YjVjNyIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IDUgRklQUyBTZXJpZXMgKEVudGVycHJpc2UgUHJvZmlsZSkifSwiZGVzY3JpcHRpb24iOiJZdWJpS2V5IDUgRklQUyBTZXJpZXMgKEVudGVycHJpc2UgUHJvZmlsZSkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2LCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH0seyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbImVkMjU1MTlfZWRkc2Ffc2hhNTEyX3JhdyIsInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Iiwic2VjcDM4NHIxX2VjZHNhX3NoYTM4NF9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjgsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjgsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlEU2pDQ0FqS2dBd0lCQWdJVVIzOG1xMjZTZjJzelZWMkJkRzZXRU43a3VXVXdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFSWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFOWTBXYjlvUG9Sb0tvUXlXUGFKcHoxMXZyV1RnNnpUdG1OajJWb0tSbnl2S0dScXB6YjgzdzVsNllBOTZVWWtZQkRRUDBpbE8yRFBlNndXcVZSNXpEZlJ6ZGNIOGJoK0w3ZEdHdmFlNmhSVFpoa0ZrQ3BYRHM0SGNja25yRGY4RkNsSjdIZTM5SmY0Mi9HMVFtMnp6OVdXbXJQWHRnaUsveDA1R2pzUWZHdURHMXpmNVFUVVVpZThsd3ltSzNUZmRPdk5lZUpBQVBlMnBuN0l0ZlJiK3JWck5XaUR6bFJuMnZObloyd1BvNHdIL1dKNmRoWFpHK3JNV1QrYTZCb2NnMVVmSXc2a2R1bkc0YlRwWnpzdmFjRll5UjBtcGYrRGVPbnBTV0FteXdKV0h2VGxmMllYeEZ5ZVhjVEFDZFFsY01OR0oyVmhaUTQ4eHRQNS9SQlAvOGtDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNoeTQyb2tpcWNUUzFpcWEvSFJXamtCbjRIL01COEdBMVVkSXdRWU1CYUFGT3EzUXBDZURIdGtldHRVZkFPNmZFNmYyS0ZoTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBbitSSElQYnRNRUROZFQxZzhIL1JpdEFrVWRMZ0F0MXRXR1dubGo5a25idjQvNEdsWDdDOXA0NWVmUE85L2FaTDZPVjFYUktCaTZLbXRCVzVLN251WUVuTXgvNUJxQlNiTFQ3cmhkdUM0OVRCZU1iOVBIZFhzVGxTVk5ZZWZyMWRHaWRyNGoweFZCUUxiMXJrbkRBYmRXRHpLZnZuYXlLTzhGcndlN0h4ODQzTUcvckorYzBYcnVVdmJmVlRDSExpSVdoTTdvTkRoTDh4b2I2eFVvOUtMS2NTTCtJdFlzTzMvOVdiOFE5R2pzcUw0RlhzRGNHMVNhWWg3S3BmdU1tT2l4cXpKWk8ybklpY1BZUmcxSTJTdWlVZllPNzB0bWRIY2JsK2tTUW1TWXQ3cnE0dmlJTGcyR3gzajlySVR1V1RqYmFVYVNTUXhnT21NU0h1eXpNQUMiLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVRuYmJHSVIyTkh2enFJS0ZBZVF3RzFYQmlzMHdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFRWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPc1hqM2swNEJhbjRUWWR0WktxRC9PUEp4eUR5YVBtQ0JVRlVpYVpJZ1R0ZVpuajNYMjVEaGdwWlpYc0M0RDB5ZEljcmxBNndOVUluT1JML0w5ekJiVEVJTUFWTUdvNmc3VUtBbWIyTUY2QUhibmhZSmQ5ZWlrdXBWTldTaEhOWU5jNEdCZE8xWU42QWZVcXZKaEhiZTNWNFNOTVBtQlJFS0pQVno3VGh3Z21nZ1RlOFdzMkswL3dzcXYyd1NFN3BiQ0JzVVpoSVg1MWJaTTNwcUR3SlBUbVJGRXZ0MC82dEc1ZU84RjNqMTRPWHFmRWhtam4xVnZ4S0RZUU9MWkF4Q3d3Z0MwUDRDZGZXdjN5OFBTUjhJMzU0aE8xWStHek5qdklxWDM4TktMeXd1SVlIRmVyT3hObHhFTUJ2RmhZQnVSdVlBa2tnVWFQcU42VUJoc0lMcnNDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNDb1JIaGl5Tm5iblhSV0lMNlpCWG9CWDlZVE1COEdBMVVkSXdRWU1CYUFGQ0FvVUNFYnBGcGI2RlBMblozRjVQeHNMM29mTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFDUUZhZkpJMS81V2c5Q0VFaW1FMVJQNTRSZ1F3VE5UT09Rc0xBQ1RlK3JJdGxGUXpDOVpEaHJWODI4eVg3anp5K0FBc3AzaXpLN1QxdGgyZGw3bSt0dTBzdzJQYS9vbGMwMm50NlB5SXczNDhnYUh6aEkxKzBLRTQ1cXh2RkRlTDJsTXhiUGZDWXZ5RUVhWXpqaVFFTFU1OTUxcFhHV3lLTWEvNGZMdE8rWktPWGhNdVZlcTRyWERQSTU0VzZKSE9pQWFpS2Rpdys1ZTNjMmt0L2pGSVF0TTZ2TVhnOUxORnpkakVUTnQyMFZYOVFldlJwRlpmdWNNRzl3Q2FRRG9GbFB6cFRNSktoUGV2L2ltSm1aWWhLZnIwbExjZW10cWpJeExBb3FaZE9ZZkhCZzYrdkFjZFBJL2lhdUdwVUF2N1grVUtObUR3aloyQmFINHNMd2hCMm0iLCJNSUlEU0RDQ0FqQ2dBd0lCQWdJVURxRVJ3KzRSbkdTZ2d4Z1Vld0pGRVBEUlozWXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFESTdYbkgrWnZEd01DUVU4TThaZVY1cXNjdWJsdlZZYWFSdDNZYmF4bjlnb2RMeDVzd0gwbFhyZGdqaDVoN0ZwVmdDZ1lZWDdFNGJsMXZielVMZW1yTVdUOE4zV01HVWU4UUFKYkJlaW9WN1cvRStoVFpQLzBTS0pWYTNld0tCbzZVTGVNbmZRWkRyVk9SQWs4d1RMcTJ2NUxsajV2TWo3SnRPb3RLYTlKN25IUzhrTG16WFhTYWowU3dFUGg1T0FaVVROVjR6czFidm9UQVFRV3JMNC9KOVF1S3Q2V0NGRTVuVU5pUlFjRWJWRjhtbHFLMmJ4Mno2b2tWbHR5RFZMQ3hZYnBVVEVMdlkxdXNSM0RUR1BVb0lDbE9tNGNycHduRFJMVkh2alllUEdCQi8vcEV5enhBL2djU2N4andhSDFaVXc5Ym5TYkh5dXJLcWJUYTFLdmpBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlRxdDBLUW5neDdaSHJiVkh3RHVueE9uOWloWVRBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBcVFhQ1dNeFRHcVZWWDdTazdra0ptVXVlVFNZS3VVNitLQkJTZ3dJUm5sdzlLN0hlMUlweFowaGR3cFBOaWtLam1jeUZnRlB6aEltd0hKZ3h4dVQ5MFB3M3ZZT2RjSkpOa3REZzM1UFhPZnpTbjE1Y0ZBeDFSTzBtUFRtSWI4ZFhpRVdPcHpvWHZkd1hETTQxWmFDRFlNVDd3NElRdE15dkU3eFVCWnEyYmp0QW5xL05EVUE3YmU0SDhIM2lwQysvK05LbFVyY1VoK2o0OEs2N1dJMHUxbTZGZVF1ZUJBN24wNmo4MjVycURxc2FMczlUYjdLQUhBdzhQbXJXYU5QRzJraktlcnhQRWZlY2l2bEZhd3AyUldadnhyVnRuM1RWMlNCeHlDSkNrWHNORDA1ZENFclZIU0pJcytCZHRUVk5ZOUF3dHlQbW55YjB2NG1TVHp2V2R3PT0iLCJNSUlEU0RDQ0FqQ2dBd0lCQWdJVVVjbU1YelJJRk9nR1RLMFRiM2dFdVpZWmtCSXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFEbTU1NWJXWTlXVyt0T1kwcklXSGxkaCthTmFub0NaQ0ZoN0drM1laclFtUFV3MGhrU0c2cVlIUXRQK2ZaeVMzM1ZFcnZnK0JRcW5tdW1nTmhmeEZya3dFWkVMZWlkQmNDOEM0QWc0bnFxaVBXcHpzdkkxN05jeFlsSW5MTkxGY1pZLytnT2lONlpPVGloTzUvdkJaTWJqOXJpYUFjcWxpWW1OR0pQZ1RjTUdhRUF5TXpFTU55Mm5tNkVwK3BqUDVhRjZnaTIxdC9VUUZzdUoxajJSai95bk0vU2RSdCtlY2FsNU9Zb3R4SGtGYkw5dnZ2MkEyT3Y1SVRaQ2x3NGJPUzlucHlwUWltT1o1UUFZeXRtWWFRcFdsL3BNWXo2elNqOFJxa1ZETkVKR3FOZlRLQTJpdkxZd1g2bFN0dE1QYXBnMEo4NGw5WDB2b1ZOL0ZwUzRWQ1ZBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlFnS0ZBaEc2UmFXK2hUeTUyZHhlVDhiQzk2SHpBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBWU16Z0xySkxJcjBPb3ZRbkFaclJJR3VhYmlIU1VLU21iTFJXcFJrV2VBdHNDaERFSHBYY0ovYmdETktZV29IcVE4eFJVakI0Q3llcFlldmMzWWxyRzhvN3pIeHBmVmNhb0w1U2V1Smt6SHhLbjRiVGFTcDkrTXZ3YW1ucDY0a1pNaU5iRkxrbmZQOWtZS29SSGtNV2hlUkoxVXNQMXo0U2Nta0NlSUxmc01zNnZxb3ZxaldDbEZzSnBCY3NsdVlIV0Y3YkJKMW40UndnK0FURW9wWTRJZ0d2Nlp2d2MrQTlyK0FUMmhxcG9Ta1lvQWwrQU5Zd2dzbE9mOXNKZTBWK1RBOVlZL1VsYUJtUFBUZDAvL3I5d3ZjZVBXWmtQaktvQUMvelVOaGZEYmg0TFY4R0hzM2x5WDJYb21ML0xOYzhKWXp5SWFERWhHUXZlb1BoaC90cjFnPT0iLCJNSUlEUGpDQ0FpYWdBd0lCQWdJVVh6ZWlFREpFT1R0MTRGNW4wbzZaZi9iQndpVXdEUVlKS29aSWh2Y05BUUVOQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU1aNi9UeE04cklUK0Vhb1B2Rzgxb250TU9vLzJtUTJSQndKSFMwUVpjeFZhTlh2bDEyTFVoQlo1TG1pQlNjSVpkMVJueDFvZDU4NWgrL2RoSzdoRW03SkFBTGtLS3RzMWZPNTNLR05MWnVqejVoM3dHbmNyNGh5S0YwRzc0Yi9VM0s5aEU1bUdORDZ6cVljaENSQUhmcllNWVJERjRZTDBYNEQ1bkdkeHZwcEF5Nm5rRW10V21NbndPM2kwVEF1Y3NyYkU0ODVIdkdNNHIwVnBnVmRKcHZnUWppVEpDVElxK0QzNWh3dFQ4UURJdituR3ZwY3lpNXdjSWZDa3p5Q2ltSnVraFl5NktvcU5NS1FFZHBOaVNPdld5RE1UTXQxYndDdkV6cHc5MXUrbXNVdDRyajBlZm5POXMwWk93ZHdNUkRuSDR4Z1VsNVpMd3JyUGtmQzEvMENBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUI4R0ExVWRJd1FZTUJhQUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUU13RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCRFFVQUE0SUJBUUMzSVcvc2dCOXBaOGFwSk5qeHVHb1grRmtJTGtzMHdNTnJkWEwvY29VdnNyaHpzdmw2bWVQTXJiR0pCeUoxWG5xdUI1c2djUkVORnhkUUZtYTNtaW84VXBmMW93TTFacmVYckowbUFERzJCcGxxYkpueGl5WWErUjExcmVJRlRXZUloTU5jWktzRFpyRkF5UHVGakNXU1F2Sm1OV2U5bUZSWUZnTmhYSktrWEliNUgxWGdFRGx3aWVkWVJNN1ZvbEJObGxkNnBSRktsWDh1c3Q2T1RNT2VBRGwyeE5GMG0xTFRoU2RldVh2RHlDMWc5K0lMZnozUzZPSVlnYzNpcm9SY0ZEMzU0ZzdyS2Z1NjdxRkF3OWdDNHlpMHhCVFByWTk1cmg0L0hxYVVZQ0EvTDhsZFJrNkg3WGszNUQrV1ZwbXEyU2gveFQ1SGlGdWhmNHdKYjBiSyJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFmQ0FZQUFBQ0dWcytNQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUhZWUFBQjJHQVYyaUU0RUFBQWJOU1VSQlZGaEhwVmQ3VE5WMUZELzNkNTl3ZVFTSWdTOUFRQVhjRkxBUVppOWZwZVZ6MXRZL1dUWnI1V3hwYzdXNWtuTGE1akkzWjg1c3JTMm5NMnNqdFd3WlM3SVVINEg0eENuRVF4NERBWkY3NFY3dXM4ODV2OS9sSW5CdlZKL0I0UHY5bnUvNW51LzVudk01NTZmekEvUXYwSGIvSXJYM1ZGS1BvNDVjbm00aW5VSVdZd0xGUm1aUVV1d2pGRy9OMWlSSGgxRVowTlJWUnVkcXQxQmQrMm5TS3lTL09oeXMwK2xrM2UvM2tROXF2RDRaVXRhNFZWU1V1WTBlaXB5aVRoQWZvY29PUlZnRHV1dzNxS1JpQWQzcmJjRXRqVGpZSW9mNldhSHNDbXpWUFdDTXgrY2doOHRMcVdNS2FNV3NVakxxbzJSdEpJUTBvT3ptZXJwUXU0ZXNaZ3NPTmtHeEg3ZDBrZHZUVDE3czRPTVU3Vkk4WmhqZ0dhTStBcTlpRU51OFBpZjF1ZHowN013dktXZjhHbFZvQ0VZMDRQQzVXZFRhWFlGYlI4dk52TDUrM0tnZmI1eE5NeWE5UmFtSml5bmFNbEdUVnRGbHI2YmE5dStwcW5FWDR1TXVSUmdqU1lFaHJON3V0RkZlNmxxYWw3TmZrdzVpbUFHSHluUHBiazhWbVkweHN0bnB0bEZDVkNZdHpUdUJOODNRcE1MalR0ZXZkUHpTVW5KN2U4bWtqeFozOWZYYktEZmxkWnFidlUrVFVnR25CVkY2ZlEyaVBIZzRXMTZVV1V3dnpiazE2c01aRStQbjBwdno3SlNldUF5ZXM4bGNwQ21hS3VvL3ArcVdyMlVjd0lBSFdydlAwWUV6aFhBdExBYnNzSGhwN2lHYW12eWlqUDhyeXFyWFVXWDlYb293eHlBdWZOQnJwNDNQT0JGWFpsa2Y4TURSaXFjcHlvd0F3cHV6MngrZld2ei9EdGRlOXNtc3p5Z3RjUjZDMXdiZHpCbDZPbHE1V05ZWTRvR2F0aEpNcmtURXgwakFSU0hBVnMrNXJZa1FOWGIrUWdmUExzUTZnWHlJbnNyZVFmbXBtN1JWRllmTDg2bjFmaVVPa1l2U2hrVVB4dmJ1a3pveTZLMWloTTFobzNYelc2RXZTZlhBK2RwaVdHYVdkK2RvWHpMem1Hd0tZRkxDQXNSQWxQQkFoTWxDRlhVN3RCVVZQcjhIZ1ZjSkhXcStGMDBwbHIrRE1UZHJQNHp2eFkxMWtOTWh4VCtTZVRHZytkNFY1TFFKaXR5VUdKTkI4VkZac2pnWUJaTS9JSS9YQ1RrajBxeURPcEYyQVZRMTdDSWpVcC9EblQxVWtMNUY1Z2RqK3NTMXdnMWdFM2dpZ202MGZDWHpTblBYYnlBUGJJWHYrSURwRTE2VGhhSElTOXNreWhsbU1FNUYzY2ZxQUtocTJDMEU1UEgxZ1lhWGFMUERrWkcwSERKT25LV0hwNTFJMHo1U091eDhlMVdBdVp6ZEhRclRrcDhUbWpYb0krbGEwd0dac3p1YnFiTzNpZlE2QS9XN3ZWU1lzVjNtUjBKS3drS2M0V0hpQmttUjhJM0NDZ0k4N29PTDRxelQ1UCtSVUpCZWpFT2dBUEs4aFlQemF0TStlSVRwMklPOXlUUW1lcm9tUFJ4eDFxeEFjc2lsZS91YlNlRWJjV1FHWUVDZ2hjTFkySHlLam9nakgyNWhNcGpwVXYxT3VnbGk0ZWgyZVJ3ME8zMmJKamt5dUNnTnpnMHZ6bFlNU2lTczB1b280TUc3aE1PakNFYVgxeUZFMG5TdmpCenVUbkVwSzg2WjhJb3FGQUl1Ync4a2c5QXJFYVJFV1NaSStqSDRYYnA2ZzlFOUVuSlQzb2FSekROK01VSkJRREhuNTZhOG9VbUVCdXNPeEJzL041K3RKRWJQa0FGRGo4VUd2T3MvSVd2Y1NnbEdCaHZTNy9GVFlmcFdHWWREWThmUEF4V1NBMzVzVEM0cDQrTG00QWFxSW9QZVF0ZnVmSzZKaDBaaHhsYnNVWE9TbVhOaWZENVpUQWt5RG9mYmJjY2x4bkE4V05BcXhDYlJOeWtoWHhRcGFEdzY3ZlhVWWJzaUcwS2h0djJvZUl2aDhyaFFNWU9jRUFxWEcvZUkrem5nT2M1eXhyOHE4MklBTTFjL0ZMRk9wbHF1NWVGUVhyTVp6R2NWQ2pZYkxXRzVJNEJUMWV1UnJsYnh0Tk90TWl0RERFaExYSUl5bkFBdnVPRVdFM1gzTmRBZnQ5NFZnYUc0MlhJUXQwWlg2UGVDRS9xUUZlOXJLNkh4N1lVNTBLdkg3Zlc0ZlMrcTdLS0JKeHNnZ0JYNXBTQUdoMWpJclZoNXpRNnczUmZhYWhCWG0vYUNiQ1pUakNVRlVUeVdacVc5cDYyTWpKUFhWcU9yUGdNTzROdjc0R2tmK293ZnROVkJEUW5qRkpxSFN3MTdwWHZoV1c1S1pxZS9RNDlOL1VTVENBVldvUVhGSUhCSFhYZTNGUHJVRHN1R0RtdEYvaEhLVEhwZWt4aGlBT1BJK1NKcTZTNkhGNEk5WVd6a0JKVG80NmlVTXpXcDhQaXIvUmlkdUx4S1lzU2tzVjh2TGxPUXZoR1gyWWxSME9CaEJqQyt1L2dFY3ZZMEFwSzdZazQxTnhqUFNRbldGSFRGNjZVcmpnZXZCOEN1NWErbDJ2WVNSUHR1VkRvNzNoaGRNU0huVVg3dFRqc1ZaR3hBbC9XcHRpT0lFUTFnbkwyOW1YNi90UjF0bWxrWWo4VzRYK0NTaldjVURHWTFOcFMvQzdoU0txaU1MTS9sMlFtU1daNzNEZHorZ2lvOEJDRU5ZUFE0NnFua3p3WFVicXZCa3hqVVFzV2ZaRmdidW8zckFmK3dON2pPTzkwK3lueDRQaTNMKzBuWUwxU2NoRFVnQVA0Z1BWLzdJZDFxKzFIU2htdUdrSXFXUlBneXhNRnFQOEhmalRualh3WTViUWZiSmN0Nk9JektnTUhvdEYvSGUxZWdzYXhIU3FHNndmZG1RNXg4TnlURkZxQmNwMmlTb3dIUjN5azUrMzZoRjd2WEFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJGSURPXzJfMCIsIkZJRE9fMl8xX1BSRSIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsImxhcmdlQmxvYktleSIsImNyZWRCbG9iIiwibWluUGluTGVuZ3RoIl0sImFhZ3VpZCI6IjkwNWI0Y2I0ZWQ2ZjRkYTk5MmZjNDVlMGQ0ZTliNWM3Iiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibGFyZ2VCbG9icyI6dHJ1ZSwiZXAiOmZhbHNlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6ZmFsc2UsImFsd2F5c1V2Ijp0cnVlfSwibWF4TXNnU2l6ZSI6MTUzNiwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0Ijo4LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjEyOCwidHJhbnNwb3J0cyI6WyJ1c2IiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotOH0seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTM1fV0sIm1heFNlcmlhbGl6ZWRMYXJnZUJsb2JBcnJheSI6NDA5NiwibWluUElOTGVuZ3RoIjo4LCJmaXJtd2FyZVZlcnNpb24iOjMyOTQ3NiwibWF4Q3JlZEJsb2JMZW5ndGgiOjMyLCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6MSwiY2VydGlmaWNhdGlvbnMiOnsiRklQUy1DTVZQLTMiOjIsIkZJUFMtQ01WUC0zLVBIWSI6M30sInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjoxMDB9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMi0yMSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzYsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWXViaUtleSA1IEZJUFMgU2VyaWVzIChFbnRlcnByaXNlIFByb2ZpbGUpIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNDEyMjEwMDQiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMi0yMSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzZ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDEtMTAifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyJmMzY3YzczYzU4YTY3YTk1NDIwNzc4OTAwZGZmNDc1OWExMzU0ZmVjIl0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbImYzNjdjNzNjNThhNjdhOTU0MjA3Nzg5MDBkZmY0NzU5YTEzNTRmZWMiXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6ImF1dGhlbnRvbjEgLSBDVEFQIDIuMSJ9LCJkZXNjcmlwdGlvbiI6ImF1dGhlbnRvbjEgLSBDVEFQIDIuMSIsImFsdGVybmF0aXZlRGVzY3JpcHRpb25zIjp7ImZyLUZSIjoiYXV0aGVudG9uMSAtIENUQVAgMi4xIiwiZGUtREUiOiJhdXRoZW50b24xIC0gQ1RBUCAyLjEifSwiYXV0aGVudGljYXRvclZlcnNpb24iOjIsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6Mn0seyJtYWpvciI6MSwibWlub3IiOjB9LHsibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJzb2Z0d2FyZSJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlEWHpDQ0FrZWdBd0lCQWdJTEJBQUFBQUFCSVZoVENLSXdEUVlKS29aSWh2Y05BUUVMQlFBd1RERWdNQjRHQTFVRUN4TVhSMnh2WW1Gc1UybG5iaUJTYjI5MElFTkJJQzBnVWpNeEV6QVJCZ05WQkFvVENrZHNiMkpoYkZOcFoyNHhFekFSQmdOVkJBTVRDa2RzYjJKaGJGTnBaMjR3SGhjTk1Ea3dNekU0TVRBd01EQXdXaGNOTWprd016RTRNVEF3TURBd1dqQk1NU0F3SGdZRFZRUUxFeGRIYkc5aVlXeFRhV2R1SUZKdmIzUWdRMEVnTFNCU016RVRNQkVHQTFVRUNoTUtSMnh2WW1Gc1UybG5iakVUTUJFR0ExVUVBeE1LUjJ4dlltRnNVMmxuYmpDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTXdsZHBCNUJuZ2lGdlhBZzdhRXlpaWUvUVYyRWNXdGlITDhSZ0pEeDdLS25RUmZKTXN1UytGZ2drYmhVcXNNZ1Vkd2JOMWswZXYxTEtNUGdqME1LNjZYMTdZVWhoQjV1enNUZ0hlTUNPRkowbXBpTHg5ZStwWm8zNGtubFRpZkJ0Yyt5Y3NtV1ExejNyREk2U1lPZ3hYRzcxdUwwZ1JneWttbUtQWnBPL2JMeUNpUjVaMktZVmMzckhRVTNIVGdPdTV5THk2Yys5Qzd2L1U5QU9FR00raUNLNjVUcGpvV2M0emRRUTRnT3NDMHA2SHBzaytRTGpKZzZWZkx1UVNTYUdqbE9DWmdkYktmZC8rUkZPK3VJRW44clVBVlNORUNNV0VaWHJpWDc2MTN0MlNhZXI5ZndSUHZtMkw3RFd6Z1ZHa1dxUVBhYnVtRGszRjJ4bW1GZ2hjQ0F3RUFBYU5DTUVBd0RnWURWUjBQQVFIL0JBUURBZ0VHTUE4R0ExVWRFd0VCL3dRRk1BTUJBZjh3SFFZRFZSME9CQllFRkkvd1MzK29Ma1VrcmsxUSttT2FpOTdpM1J1OE1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQkxRTnZBVUtyK3lBenY5NVpVUlVtN2xnQUpRYXl6RTRhR0tBY3p5bXZtZExtNkFDMnVwQXJUOWZIeEQ0cS9jMmRLZzhkRWUzamdyMjVzYndNcGpqTTVSY09PNUxsWGJLcjhFcGJzVThZdDVDUnN1WlJqKzl4VGFHZFdQb080enpVaHc4bG8vczdhd2xPcXpKQ0s2ZkJkUm95VjNYcFlLQm92SGQ3TkFEZEJqKzFFYmRkVEtKZCs4MmNFSGhYWGlwYTAwOTVNSjZSTUczTnpkdlFYbWNJZmVnN2pMUWl0Q2h3cy96eXJWUTRQa1g0MjY4TlhTYjdoTGkxOFlJdkRRVkVUSTUzTzl6SnJsQUdvbWVjc014ODZPeVhTaGtET095eUdlTWxoTHhTNjd0dFZiOStFN2dVSlRiMG8ySExPMDJKUVpSN3JrcGVETWRtenRjcEhXRDlmIiwiTUlJRmhEQ0NCR3lnQXdJQkFnSU1iVUk5K3p5RVFVVEQrZG5DTUEwR0NTcUdTSWIzRFFFQkN3VUFNRnN4Q3pBSkJnTlZCQVlUQWtKRk1Sa3dGd1lEVlFRS0V4QkhiRzlpWVd4VGFXZHVJRzUyTFhOaE1URXdMd1lEVlFRREV5aEhiRzlpWVd4VGFXZHVJRWREUXlCU015QlFaWEp6YjI1aGJGTnBaMjRnTWlCRFFTQXlNREl3TUI0WERUSXpNREV5TkRFMU1ERXdNMW9YRFRJMk1ERXlOREUxTURFd00xb3dnYll4Q3pBSkJnTlZCQVlUQWtSRk1ROHdEUVlEVlFRSUV3WkNZWGxsY200eEVUQVBCZ05WQkFjVENFRnpZMmhvWldsdE1Tb3dLQVlEVlFRS0V5RkJTVmhsWTNWMGFYWmxMbU52YlNBb1FYaGxiQ0JXYjI1a1pYSm9ZV2RsYmlreEVqQVFCZ05WQkFzVENXRjFkR2hsYm5SdmJqRVRNQkVHQTFVRUF4TUtRVWxZWldOMWRHbDJaVEV1TUN3R0NTcUdTSWIzRFFFSkFSWWZRVmhGVEM1V1QwNUVSVkpJUVVkRlRrQkJTVmhGUTFWVVNWWkZMa05QVFRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBS2YvNEd6R0FVbUpINFI5bUN2Y0orQ2dUVWdQMUROcjhkTjJrRHZTQTl4dUlNYjFOWkpYUWd4U09PQVlxSUJ6Rk5jamtOVmw4MFkzZHJtNHRQSlNsM2tmV1dNMjZ4WUxGc3ZsMUJjcXRyUHJzc3l4SUJ0WDVrVGUycCtNOVJsY1pRY0VqNUNiWXBBU3B1U1RCeXpvT3VmK1ZTZk9VVnFEekNESDRDcXNFQ3l2eUxLckp3OWtqTjRCNmxGWHl6bXJJV3FSbUdXS3g0Y3NvL3d4WUlVTmNPVitwNkk4NFkyejFuRklXRWhjQTZkZ3JKUW5EcEQ1SUdFSmRTeFRuOHQyWm5BTnA0SkVBcDhqNXczdGJVODlSS2kzeVBBdXdzeGkzWGNsb0ZBdEd4dzJ3azduSnlpenE5OHRPNWx3ZmdITi9ZbmdsWXdVNFVGbk9CelA1TXV6UHJFQ0F3RUFBYU9DQWVvd2dnSG1NQTRHQTFVZER3RUIvd1FFQXdJRm9EQ0Jvd1lJS3dZQkJRVUhBUUVFZ1pZd2daTXdUZ1lJS3dZQkJRVUhNQUtHUW1oMGRIQTZMeTl6WldOMWNtVXVaMnh2WW1Gc2MybG5iaTVqYjIwdlkyRmpaWEowTDJkeloyTmpjak53WlhKemIyNWhiSE5wWjI0eVkyRXlNREl3TG1OeWREQkJCZ2dyQmdFRkJRY3dBWVkxYUhSMGNEb3ZMMjlqYzNBdVoyeHZZbUZzYzJsbmJpNWpiMjB2WjNOblkyTnlNM0JsY25OdmJtRnNjMmxuYmpKallUSXdNakF3VFFZRFZSMGdCRVl3UkRCQ0Jnb3JCZ0VFQWFBeUFTZ0tNRFF3TWdZSUt3WUJCUVVIQWdFV0ptaDBkSEJ6T2k4dmQzZDNMbWRzYjJKaGJITnBaMjR1WTI5dEwzSmxjRzl6YVhSdmNua3ZNQWtHQTFVZEV3UUNNQUF3U1FZRFZSMGZCRUl3UURBK29EeWdPb1k0YUhSMGNEb3ZMMk55YkM1bmJHOWlZV3h6YVdkdUxtTnZiUzluYzJkalkzSXpjR1Z5YzI5dVlXeHphV2R1TW1OaE1qQXlNQzVqY213d0tnWURWUjBSQkNNd0lZRWZRVmhGVEM1V1QwNUVSVkpJUVVkRlRrQkJTVmhGUTFWVVNWWkZMa05QVFRBZEJnTlZIU1VFRmpBVUJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3UXdId1lEVlIwakJCZ3dGb0FVbGpQUjVsZ1hXelIxaW9GV1pOVytTTjZoajg4d0hRWURWUjBPQkJZRUZDNTdMTjNSVzM4ZGV4UWh4ZkhXL1dXdDdjQ1FNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUN2dlBpbTdqb0YwRzR2T2VwU0ZiQ1JndEN3UkF5ZW45Zkh6RFMyN1duc1RiRzlVb3EremlHcmNEK1U1RW5INlVybUYxQnF4WEwxQ2pxRVBybjVZUXRaU3MzcGZ2b25Ya0ZDaHRpWVlPZ0s0Z0lxSnRDVkJhWDNINERIa0kxVjdCaDdiNHZqWkFEOGNKTHhpSmY2QXZJNGUxMUQ5SzV0cFo3WVpRRTVNdzQ5VkR0UThBN3Brak82d1hqSEZYWGdZMWxQdytMUlF1VTNtOUtHQU0zQzRnZTBvdHBXMFh5S0R4cXNLV094bU1YN0lqaFhGRHBLWW9wbW1MUGNUejcwT050YkUyTkh5SWEzVXVqaGNqYmNycG9Oa21hRmlMazJwcUtSWklvSGtaYUZNZDl3YVE5ZjFsUzJ3d1ZReHRIK3ZOVjlOM0srSG5MM25CL0NVMkUwYnRKSCJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFiQUFBQUd4Q0FZQUFBQURFdU9QQUFBQUNYQklXWE1BQUJjU0FBQVhFZ0ZubjlKU0FBQUZGbWxVV0hSWVRVdzZZMjl0TG1Ga2IySmxMbmh0Y0FBQUFBQUFQRDk0Y0dGamEyVjBJR0psWjJsdVBTTHZ1NzhpSUdsa1BTSlhOVTB3VFhCRFpXaHBTSHB5WlZONlRsUmplbXRqT1dRaVB6NGdQSGc2ZUcxd2JXVjBZU0I0Yld4dWN6cDRQU0poWkc5aVpUcHVjenB0WlhSaEx5SWdlRHA0YlhCMGF6MGlRV1J2WW1VZ1dFMVFJRU52Y21VZ05pNHdMV013TURNZ056a3VNVFkwTlRJM0xDQXlNREl3THpFd0x6RTFMVEUzT2pRNE9qTXlJQ0FnSUNBZ0lDQWlQaUE4Y21SbU9sSkVSaUI0Yld4dWN6cHlaR1k5SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpFNU9Ua3ZNREl2TWpJdGNtUm1MWE41Ym5SaGVDMXVjeU1pUGlBOGNtUm1Pa1JsYzJOeWFYQjBhVzl1SUhKa1pqcGhZbTkxZEQwaUlpQjRiV3h1Y3pwNGJYQTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzhpSUhodGJHNXpPbVJqUFNKb2RIUndPaTh2Y0hWeWJDNXZjbWN2WkdNdlpXeGxiV1Z1ZEhNdk1TNHhMeUlnZUcxc2JuTTZjR2h2ZEc5emFHOXdQU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNCb2IzUnZjMmh2Y0M4eExqQXZJaUI0Yld4dWN6cDRiWEJOVFQwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOTRZWEF2TVM0d0wyMXRMeUlnZUcxc2JuTTZjM1JGZG5ROUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXpWSGx3WlM5U1pYTnZkWEpqWlVWMlpXNTBJeUlnZUcxd09rTnlaV0YwYjNKVWIyOXNQU0pCWkc5aVpTQlFhRzkwYjNOb2IzQWdNakl1TVNBb1YybHVaRzkzY3lraUlIaHRjRHBEY21WaGRHVkVZWFJsUFNJeU1ESXhMVEV4TFRJd1ZERTBPalF3T2pVd0t6QXhPakF3SWlCNGJYQTZUVzlrYVdaNVJHRjBaVDBpTWpBeU15MHdOQzB4TmxReE9Eb3hPVG8xT1Nzd01qb3dNQ0lnZUcxd09rMWxkR0ZrWVhSaFJHRjBaVDBpTWpBeU15MHdOQzB4TmxReE9Eb3hPVG8xT1Nzd01qb3dNQ0lnWkdNNlptOXliV0YwUFNKcGJXRm5aUzl3Ym1jaUlIQm9iM1J2YzJodmNEcERiMnh2Y2sxdlpHVTlJak1pSUhCb2IzUnZjMmh2Y0RwSlEwTlFjbTltYVd4bFBTSnpVa2RDSUVsRlF6WXhPVFkyTFRJdU1TSWdlRzF3VFUwNlNXNXpkR0Z1WTJWSlJEMGllRzF3TG1scFpEbzJOR1JpWmpVNFpDMDVPVFk0TFRnNE5EY3RZak01TlMwNU1UWTVOalV4WVRRd01HUWlJSGh0Y0UxTk9rUnZZM1Z0Wlc1MFNVUTlJbmh0Y0M1a2FXUTZOalJrWW1ZMU9HUXRPVGsyT0MwNE9EUTNMV0l6T1RVdE9URTJPVFkxTVdFME1EQmtJaUI0YlhCTlRUcFBjbWxuYVc1aGJFUnZZM1Z0Wlc1MFNVUTlJbmh0Y0M1a2FXUTZOalJrWW1ZMU9HUXRPVGsyT0MwNE9EUTNMV0l6T1RVdE9URTJPVFkxTVdFME1EQmtJajRnUEhodGNFMU5Pa2hwYzNSdmNuaytJRHh5WkdZNlUyVnhQaUE4Y21SbU9teHBJSE4wUlhaME9tRmpkR2x2YmowaVkzSmxZWFJsWkNJZ2MzUkZkblE2YVc1emRHRnVZMlZKUkQwaWVHMXdMbWxwWkRvMk5HUmlaalU0WkMwNU9UWTRMVGc0TkRjdFlqTTVOUzA1TVRZNU5qVXhZVFF3TUdRaUlITjBSWFowT25kb1pXNDlJakl3TWpFdE1URXRNakJVTVRRNk5EQTZOVEFyTURFNk1EQWlJSE4wUlhaME9uTnZablIzWVhKbFFXZGxiblE5SWtGa2IySmxJRkJvYjNSdmMyaHZjQ0F5TWk0eElDaFhhVzVrYjNkektTSXZQaUE4TDNKa1pqcFRaWEUrSUR3dmVHMXdUVTA2U0dsemRHOXllVDRnUEM5eVpHWTZSR1Z6WTNKcGNIUnBiMjQrSUR3dmNtUm1PbEpFUmo0Z1BDOTRPbmh0Y0cxbGRHRStJRHcvZUhCaFkydGxkQ0JsYm1ROUluSWlQejZ6T1hSbEFBQnVOMGxFUVZSNG5PMjllYncxVFZYZis2MHpQK01MTDYrQ1lCQkJFRVJFb2tFaWlHTWNiaVNLaWthOUdEWEdSRFNScURGcWpPalZhNHk1UkhGRWNjRGdpRW9VSEZIamhCQkh4SWlBZ3N3enZNRDdER2Q2enFuN1I5V3FXbFZkdmZjK3o3UFBQcnQ3cisvbjA2ZDc5eDdPN3Q3ZDlhczExQ3JudmNjd0RNTXdoc2JhV1g4Qnd6QU13N2daVE1BTXd6Q01RV0lDWmhpR1lReVNqYlArQXJlQ2MrNnN2NEl4VWp3czVjWGx3SUxXeHR3WmFpN0VvQVhNTUc2RkdVVnFXWVRNeHorOTM4ZkV6VmcxVE1DTWxXQ0tXTFdlTzRsdzNhckl6U0k4OGo5YXIrMFZOeE0xWTh5WWdCbWpaSUpnMWZ2ZGpNKzFIcDgydGZqNDZqdkk4NjdudFozellJSm1qQWtUTUdNVTlBaldMR0pWclBYbnVNYSsrcmw1NHhzQzQ3SVkrWG9mL2V1bXFKbWdHV1BDQk13WUxET0lWbE9rVU1Ma3FtM1gySy9mYzFyQ1ZYOWhKVlkrbWwwK2ZqZXZCYTIxVGY5YTA3SFFUTXlNb1dFQ1pneUtLYUxWV2hjQzVVc2hjdVI5YVZHdjZ3aFo0Ly9QUzlDYUxzREsraEtSU291djlubjF2b2FvNlcxWFBUWXhNd2FIQ1ppeDlKeEF0TksyRml6WEZhZzF5dWZYZkxVdHI5VkNWb25mcVZHTEVBM0I4bkNNMmhZUjA4ODEzcVBGRHZVYUV6TmprSmlBR1V2TEJHdW5GaTF0SGExVmdpVml0YVlFYWswOWwvYVRsODc3ZlBmLzFOOXBEb2RiYnZ1MktJbHdIUVBIc2ordTAzTksxSXIza1VYeDJIV0ZiS0tZbVpBWnk0WUptTEZVbkVTMGFpdExXVTlydFdCRmdWcjNwVkN0eGRjVys1WElwYytqRkVYOWZXN1pJdk1OOGFLMG9KSUl1U3hheCtyeEVXcWZldjdJcS9jb1FVdmJQZFpaVTh6TUtqT1dEUk13WXltWUlsejF0b2hUc3FMSXdyVmVDNWFEOWZpYTlmajhPbm0vaU5kNlhFUzgxaHZXV2kxaUVBUjBUcWVnMkphbHNLb3FzVHJ5Y09UVU5rR2NaUHVvRXJna2FPUjlXaGk5RXJtV2lLWHZhVmFac1F5WWdCbG5Tbzg3cm1sdGtkMkRTVlI4S1RUcjlhSUVhd08xcmZiM0xnMXJyUkN3ZWNmQ2xDVldDMWhoVmRXTEVxc2pINVliYXY4TkxXaFUyOG82S3dTdGNqT2FWV1lzSlc2b05iQUFxNFU0WUdZUnJtZzlKZkVpVzFaaVhZbGx0VkVMVlZ6WFM3RS92a2MvMTFyNkJLempTcnoxVTVMV0hRR2pSN3pJSW5WREJFc3Q5ZU5pdnhLMkcyUVJPNkxycGhRWG93aWMvcDc2dThzSkdXNmpzcUlNVlFmTUFqTVd5Z1RoNnNTMmRHS0Z1QVo5YVYxdGlHZ3BJZHFjc3Q0QU5sMzVubHI0dEhocEVYTlVHWW5NV2NCRUxPZ0syQkdsaUdtQk92Slp4RzRBaDJTeE91eGJleVZxVGxsdTBIVS94dTAxMmxaWmNRem1YalFXaFFtWXNSQm1GUzV5OG9Ra1U5UVdVYktnZkxDaU5uMFdxTmF5UlJhdFRSK0Z6Q3NSVTJLbS80Y1dyM1dVNjNLS2VNMHFhSzNHWGZyQlJmeUxVcnlPVVVJam9sV0xsd3NDZFVnV3JBUHk0MktKNzlXaXB5MDFpYk9sMkp2dlpqaWFrQmxuZ3JrUWpWUGxwTUpGdHJaYW9xV3RxYlE0MlBKWnJEYUJyY2ErK2owYlN2aGFGbGh0ZmZXNUVPSFdyYkM2OFova1FwVDFqV3A5V0lsWXZSeEVVVHNnaTVuZVY3OWVXMnZwLzdneUVVUUVUYnNYbTY1RkU3SGxacWc2WUJhWWNTcmNoSEJKTW9hT1MwbXNTaXduYlZWTlhIejV1QmF5MnZLYVJieDBQRzZlNGlVVUlxWmNpY2ZNSUdKS3ZMVHI4QkFsVmtxOHBpM3BmUzY3R3BPWXVmeC9qOGxaa0s0aFpPbDR6Qm96VGdPendJeTUweEF2TFdCckRlR1NyRC9KRUJTM29CYWZldGxXNisxcVg3MFVya1RheVIxRmlqMTU3ZWkzdnVaOUFVNUs1SkIxSjFXZWRySkc3VHBzQ2RXK1d1OVgrOUpTV1dueTJZVlZobkl4MHJYR3pDSmJjb2FxQTJhQkdYTmptdFhsR3dPSVVZa1lZbW41NEFMY2pGYlV0b050WDRxVjdOdW11NXhFdkZwcDgzWFN4a25GNjFaaVlIci9KQkVyeG5iUkwyVFRSR3kvV2c0YzdIdTFMejZXMTlhVzJTSFo4cHRGeU5MeCtaQU1NOHhXMDFnYVRNQ01XMllXNFhKaE93MGcxcTVDTFZ4RW9ZcmJPMlNoMmlHdmQzeGJ5RnJpbGR5R3RNV3I2UzZrTFY3MThaMEd0YlhTSzJLMDNZcDkxcGgyS1JZaXBrVXJydmNvMTFyTTlsMTBSNHFJeWJvV01wK3RSZm5PeFhHYVc5RzRWVXpBakZ1aXgxMm9selIyS3dyWHhpVGhvaUZXTGdqV0RuQ3VmdDUzM1llZGVKZUtkYzJTcE5HeXVIb3RMemNuSWZQZFJyelBFcHNrWnAzNFdCVWI2OFRGS0Myc1dyejJQT3hGNGRxVDV5cXhTM0V6TFdReFRyWkdUUG9nV0Z4MWZNeXNNZU9XTUFFemJocmZ0a3FLT0ZjZDMwSmxFZFp1UWFKZ0VVVHJuSWlXRWk5NVhvdFlzcmhjemp3czNJVis4dURram5CVnlSb3Q0VXJicDlUcStzYTJwMHp1bU1VcTAzR3l3cTJvNGxvdGwySVNLMkRYS3pHalhQYVZ1RW04N01DcjlIemlBT3RvbFRuMS9ZcmpOUkV6YmdZVE1PUEV6R0oxVWNhVzZtekNMVmU2Qm1VNUY2MnRjejRJbGw1cThhcVROalo4MTExWWkxWXJNYU5qY2ZueXVJQ09sWFZhN2tPaDF4cnovWlpaWFhXKzVWcE1RdVlwMHVYNzRtSmFySFpiNnloZTIzRmJ2M2M5L284MVNtdnNpQjVyekZ5S3hra3hBVE5PeEFUeGtnSzdPczZWeGxxNXlrMFl4VXVFNlZ5MHVNNTVPRSsvZUltQTFlNUNiWEcxcW1ub0t2UFRFak1tV2x4blJLOUZWbTBuTVl1V1d0TXFveHpiMVVyMEVOZGc0VTUwd1JyVEFsWXZJbmFiUHNmTjFwVllpb1ZyMXBneEYwekFqSm5wY1JscVM2YmpLb3hXMTViUFNSZVNoS0VGNm54OExPS2xSYXdXcm0zS09OY3NpUm5hclRrcHJqVXBRZU9zUk13My9yZWZzUGFVYnNiYXhUZ3A0VVBpV09JS0xLd3gzN1hBcnF2MVRseUxLM2ZYaGQ5bkwzN1dPbG5JMW1KY1RnUk5mMGVIaVpneEl5Wmd4bFFtdVF5OVN0Q0l5UkxyeWxWWVpCUFNkUTJlYnl6bnlCYVpGaSt4M3VyTXdtbkZkNmVsd1UrenRNN2ErcEwvNzZmczZ4VXpKaWQ5Rk81Rm4xUGp4U0pyV1dOaWNaMXpjTjFuOFpMRW11dUVhMkNQOEJ2dFVmNCtoekhPS0pVOWlDSzJwcisvdVJTTmFaaUFHUk9abEtoQmRzdkpWQ1ZhWEhSaXhpVFJ1b0N5dkVTNGxIalZHWWE2L0ZOTHVQcEVhNXFWMVJTcUc4QTdnWGVCdXpOdXZ4bDRHL0FPdGJ3TnVFcloyaDhTV25rWEQwNU9paWo2WmVDOWdIc0FkOFQxUFlIM0FXNlB5OTNCM3g3ZTJ5ZXVYbTFEdjVDdE1ka3FrMlVySHJhc3QrTWg3WkN0c1hQeDBIWjkxOVdycmJEcnFPTEpkS2VwdWFHc1lqMStUR1BXbU5HTENaalJTNS9MVUZ0ZFpKZGhLdlBrbGNYbGNseXJKVm9YQ0tJbExzVGE2dEx1d2s3ZFFxZStDeWRMZis4VnE3ZUQreXZnYjRHWEFHK2lGS3FySnpxREFROWNPK0Y3TGhFRTdSN2c3aUFJM1FPQmh3TWZETHd2K0szdzBwWVFhN2RqeXlLcnhXemQ1U2xVUk1nMnlVSW1XWVhpVmt4Sk53UWhhMldIYnBNSHBFdGxGYkhHNU5vNWlPSWsxcnhPOEJDUk5aZWkwWXNKbU5GaG1zdlFxV0s3eXVxU0pBM2R1SjMzV2Foa09WOXRpOERwUkkyV3U3QWV3NlhGNjhTaWRReThIdHhyZ1QrTnkxOFNyQ3V4bnM2U0szRjVUYlYvZzNDQzdnbnU0Y0JIQVA4UXVBOXdQL0E3NFdYVHJMV09tS21Fai9XNDNxQ01reDM2UEZ5aHJ3cEt5aENWMTNxS1FlVXBWaGxkelhybWdVTmlnb2RTWC9tT1lDNUZvNEhWUWpRS0pvaVhORFoxaFhoeEZ5VjNvV3NMVjcya21KZkxMa09kRnQ4WDUrcHpGVkp0VTIxekRkeUxnRDhBL2hwNFJWeHFuOVVRdVMvd1FRUUw3YkhBWTRCTC9lbjRzbDBMV3VGYWRMbGtWWjNzMFJvM0pza2Mxd2tHNXpXQ3dYck53VlVmMXRkODJDL0pIN3JTaDA3ckw2WnZvUlJjd0VSczNneFZCMHpBakVTZnk1QmdlVWw2ZkpxSEM1VmRTQm5qMGtKMTBjRUZEeGVwTEMvS0xNTzZCRlNmY0UyeXVQUjM1d2g0RmJpL0FYNERlRDd3RmtLck9XYTJDVEcxUndPZlRMRFNIcEJkamtKTHpGcUpIMUk0V005RHBrdFR6U0ppZXBIOThqcEowZDhuRG9KMnVYcUl6Qkt0eFRWOWR4T3grVEZVSFRBQk00Q1o0MTFTMmFKamRWSEd0eTZxOVVWNnhNdVZwYUE2YmlabUY2N2lRcmdUM0hPQlh3ZGVCTHhoSGlkb3dOd1RlQlR3Q2NBL0piZ2FxNWYwSlg3MFpTNzJXV002US9GNnRMaXVSZ3Rza3BEdGtrdFdIYmp3ZWFtS0IrWDhZeVppcDhCUWRjQUV6R2lKbDFoZEtkN2xWS1dMR0FNcFlsMlZsWFhKd1VWZkNwbUlXejIycTg5ZDJDcjMxQkpaQU40SzdxWEF6eEtFNjgyTXd6VTRiKzRndUJnL2gyQ2gzWHYyVlB4NlVIUnRqZW5Dd0VuRWFGdGhWeWhGN0JwWnhLU2lSNXFMek9WWm9iV2dwdTlwSW5ickRGVUhUTUJXbkVxODlMSk9UcEdYREVCSnJ0Q3A4UmVBQ3lKWWNYMkpydVVsVmxwZFRhT1ZGdCtLYytudm1IZ1Z1R2NEdndDOGVHNW5aVFY0S1BCcHdHY0RIekxaS21zS21RZ0xaVFVQN1ZKc3VSTkZ2SzRveTB5TG1JNk5wVG5JWEhRcGtsMktSVnpNUk96V0dLb09tSUN0TUQzaVZTZHJiTG95UFY2N0RHczM0YVhxc1ZoZTRqYXNFelhxS2hvekNkZDE0TVhnZmhMNEplQ3Q4enNsSzhrOWdJOEMvaFh3R1BDWHlxZW5DVm1ScVVoWmprcGJZdGZwV21GWDZMb1Z0VXR4RDFVY21DbkpIU1ppTjg5UWRjQUViRVdaSmw2U3JJRkttM2F4a2taMEY0cDRYVkxyMnZLcXhVc25hc2cwSnpNbmFCd0R6d1gzWThDdllTN0MwK0FUZ2M4bldHWGIvZTdGbGx1eHJuaGZ4OFdtaWRnVlFyenNXc3hZM1BXaEhGV2F0a1dTTzB6RTVzOVFkY0FFYkFXWlJieklNeU52K1NoQVViak9veXd1QjVlOEVxL29RdFRpVldjWjZrU051a0o4TXpuakt2RDc0SjRHdklEeFp4R2VOZXZBaHdOZkFUd091RHhaeVBxS0JldkpNL2NJWXJUcmN6cDlFakVIVjN6WElydEdTQVNScXZlUzNIRm9JalovaHFvRE5wQjV4VGlKZUJHVE5Wd2MxK1ZEck91U0x5MHV2WWhsZHNHVlZUVlNvb2F5dW1xWFlVZTRQUEFjY0Q4RS9QYXBuaFZEY3dUOGNWdytDbmdTdU04bUNVUGRhNngvdnpyNVJoZFhMcWJYb1YzTHNwUEFFNjlaNTlVL3FiNklWZTFZVVV6QVZvaEd0dUVreTBzR0Y4dWc1SXZrQkkzTHhIVWpZVU9xYXpUalhYNTZyQXVBUHdQM0hjQ3ZFdnhIeHRud2h3UWhleGJ3ZGVBZVRVZkl0SjYwRmkxRWhaRFJGYlNPZ0VVeFN0ZHVqNGo1K0hxclpyOWltSUN0Q0EzeDB0T005SW9YWmF4THhPdXkydTZJRjVYTDBJWFBuV1IxSmVGNkpianZCNTVCQ0pnWVo4OEJJZWI0TzhBWEFsOEo3c0d6V1dQT2xTVy9XdFpXMzZTajZUcngxVFhTSTJKSFpCR1QxNW1JalJ3VHNCWEE5emMwNjVQRXkrV3hYRnE0dElDSjlTVnA4aDN4b3VzeWJGcGRCOEF6bzlYMW1ybWZBV01lN0FNL1JCaG45eC9CZlRFcDBhUFhHdlBkamtyTHhkZ1VNSmZmMzhIbmxTZFlYTjVsQzB5OXhCZ3pKbUNyaFc1WTFoeHBFc29OVk15THRuamRGdGVYWGVrNkZNdXJUdGFvM1VKYXVJb2U5WXZCZlF2dzNOTStlbU11dkE3NGNzTHY5YTNnUG54R2E0enlHcWhqWlBXczJTNHFVTWU5VERYZ09nVy84b3ZTUUdlendzYU5DZGpJYVNSdFNQVnZFUzQ5UURtTjcxTGlKY0tWQkt3aFh1ZFEwNS9NNmpLOER2d2d1UDlPcUp4aERJdmZKRXc1ODVYZ25relRHcE5KS3VXeFV3TFZuTHV0WWJIVnd1VmRFQ2FKeFhsUG5vRmE3VS92TVJFYkx5WmdJNmFWY1NqeGlDZ3dVcFJYc2czUCtUTG1KZTdDMjhnQ2xqSU82VnBlbTB3V0wva3UvQTI0ZncvODFpa2V2M0g2dkFYNGVrS3l4M2VDKzZEU0lKSjV4NmE1RkxWRjFoSXVJUWxXdlMyaVJramg5NVREQkUzRVJvb0oyRWlabEM1UEhrUzg2Y01BNVIzeXZGd1hLTjJHV3J4MDBrWkx2UFQ0cnQ0RzZXZkJmVDN3MmxNN2VtUFIvQnJ3VXVEYndYMXV2MHRSYUYyYm5VNk9Rb3RVMmlhWHRKSVlXQksyK0Q1ZC9OY1lJU1pncTBFU0w2Y21vblI1WWtJWjZ5V0RreS83YnRLR1dGK3RiTU5XSWQ1T3cvUjJjTjhLL0FCV1JXT012QmI0QXVCL3g1am0zYnBDMWpkL1d5MWNIYmNoNUVrM1haNDkrcGdzYXNkZWlaekw3MDFKSFdhRmpROFRzQkhTWjMzRmpFT1pSVm1tUTBtV1YwemNrTW9hdFhEMXBjcnJHWk5yeTB1K0EzOEw3bDhEdjMrNmgyNmNNVWZBOXdLdkNtdjMvdTBzUmRSalZ6MFdVcUtHc3J5T0tjV3JYclFGcG9YTWtqcEdpZ25ZeUppUXRDRVpYNjJxOGhjb0J5bnJiRU10WUhWUjN0cnlxb1B5QVB3bXVLOEUvdllVajl0WUxuNE4rSHZnQjhCOVROc1NnMzd4MHVpWVYxMjJxaU5pWGxsbERTdE1QczlFYkNTWWdJMklIc3ZMUmF0cm5SRHpFZ0VyeEl2R1lPV2ViTU0rOFdyR3UzNFUzSDhFN2p5OXd6YVdsSmNEbnd0OEY3aC9uZ1ZEcmcxSjhPaERXMU10MFpMdEk1ZG5qRTR4TWJLUXJTc3J6RVJyWkppQWpSZnRObHh6WlkzREhVSlYrZk05V1lldENodXRoSTFlOGRvSDkwM0FVN0Y0MXlyelZrSmM3RTB4MVg2dDN4b1RmR05kVzFwU05QaVlQQ2RaMnVkTElkT0x4Y05HaGduWVNKaVdkZWh6ckNxNURuMXBmZFhWTlNhVmg1b29YdGZCZlFQd1BhZDZ4TVpRdUFGOEhXSGMzOWVEVzU4dVl0QjJHM2FxM3Jzd3hZb1dORDNwWlJJeGk0ZU5FeE93RVRBcDd1WEtHWlU3Y1MrWFkxOTZxUzB2S2NvNzFmSzZBdTVKd0UrZDlrRWJnK0lHOEJUZ25jQzNnYnN3V2NScXkwbktSSWwxbFN3dVgwN2hrdmFyVE1Ya1RzVGlZYVBEQkd3ODFHbnJhYkF5T1dWZWkxZWR1S0huOUxwQWNDK2VKRldldDRMN3Q4QXZMT1o0allIaGdhY1JMTEh2QW5lK0xXS2VzbDBxVXVocFcyQTM0dmFSYlBzb1l1bzlOajVzaEppQURSeGZOZ0FReFN1TzkwcXpLdnRzZmNsRWt4Y0pZblhKWjB2c0lublN5bVpoWG5vR0tOOEo3a3NJMDU4WXhpU2VRYmlBdmh2Y2RyOGx0azQ3a2FNUU1LOW1ndlo1UnVqYU9rdURuUW5XbkU0ME1pdHN3SmlBRFpnKzF5RjV2RmNxMGt0UDFxRzRELzFzTWErbWVMMHJqdkV5OFRKbTVZY0lGOXAvQWJkVmlsamhTdFRDUTN2bVo3Ryt0SUFWUWtad0p5WWhvK0ZLUEtYRE5FNFpFN0R4b0JNM0poYnFKVnRmWW5YcDhsQTZWWDdMVFo1Qm1hdlJiZmlMaXpwS1l6UThqWENSZlJ1NEtqdFJYOGN3d1FJalcxK0hxS1YyTFZJbWVZaElKbGVpV1dIRHhBUnNvUFJsSGJvc05rVzFEYXJZRjluNm1qak95NWZXVjJGNTdZSDdLdUNuVC8xb2pURnlESHdIY0Fmd1ZlVlRNakdsam9rVlZwakxWcFVJbVJZd0VTL1pObGZpU0RFQkd6WkpVQ1Rya0xiMVZjK3VyQmNSdGNMeW9oM3pLdEtkdngzNDBkTTlQbU1GK00vQSsxQVVBWloxS3pOUnNoRzFCWmFFaThvU28zSXArdElTMC8vUEdDQW1ZQU9rU3R4STQ3MTAxaUZkMTZFSW1CWXhMVjZ6WkJ6Sy8rTkh3WDA3ZHVjYnQ4NHU4RytCKzRCN2JEYytsZHlKdE9OZ3RaQWRrTVhyd01GaGRDK0tLN0dWbVdoVzJFQnBEU0EwbHBoSkE1WmRWOEFrY2FPMnZpN1FGYS9XV0s5bVZmbmZBUGUxV0lVTlkzN2NDVHdKZUhrak1Va3QrdnJXaVVsMWJEZGQzMTVkM3o2NDFBdTN1Ry9VN2pTR2d3bllzQ2tTTjFEaTVkbzNlQ0ZpcmhTdnVyNWhhMDR2WGdydTN3RHZXc3p4R1N2RTN4QkU3RXAvSjAxZjQzVW5yWjVOWE9LNlJWYXRpMW0xMFZ1eFZzWEJIRFNIcGhoTGlnbllnRGlKOWVYYnZWTVJzZk9FVWxKMTBzWWs2NHNyNFA0ZDhMcFRQMUpqVmZrOTRGdm8rUEMwSlZZa0taRkZySGFUdDd3TUltTEZkZTRiMTdveERFekFoa2xLM0VBbGJuZ1YrM0txWUMvbHpYeGVMWFhTUml0ZEhnZ0JobThFZm5jaGgyZXNNdDhQUEt2ZFdVdVdtT3RQVk9xNzNuZklia1RKc0pWWkd1UjZUNWdWTmd4TXdBWkNaWDFCQ0RZN2RSTnVPT1ZXaWRiVmVhOEV5N1hUNWJjSXBhWW14cjErRnR3ekZuR2d4c3F6RDN3OXdWMGRkOVh4c0hUTms2MndQcGQ1dXVaZEk5YnJzaFhXdWVhTjVjY0ViRmdVYWZNK1RwVkNLVjdUYm1RUnNDTHVOV213OGt2QS9RZGdiMUZIYWF3OGJ5WmtKdDQxUFI3V3FqYWpNMi9UNGh0VEF2bDJ2QmN3SzJ3SW1JQU5nTWFObEc2NG1GRzE0Y05jWDhsMVNIbnpTbkhlRTA5S2VZVXdOY3BiVC9jUURhUERIOUtja3FlTy9SYXpMYmdlRVhQWkF1dU1kVFFyYkxpWWdBMEhiWDA1R2xVM2FQZENXOWxZMDFMbUUwOEhmdjJVRDh3d1dod0IveFg0bzlsY2licnlUS2NUNTh2WkZiWmR2eFZXWFA5bWhTMDNKbUJMemhUcnF6Tnd1WkY5ZUZMeFNpTDI1K0MrOHpRUHpqQ21jQTM0QmtMQjZMaXJKV1oxYW4wdFlucDlqaEFqbHZ0Z2czNHJ6Rmh5ckJMSGNPaFlYNzVoZmJtUUhsLzcvOC9GNTdaOTVUcnA2MzNlRmVOZTcxemdBUTZaTlhMdllKc3k1eHRDRnFlVWtkZ254QlAzc2NIZ3MvQ0hoTUsvVHlGZG9IS2RTcTFFSFJQVEFyWlBGcTlkdGQ0QjloM3MrMWk1STk0SFIrb3pqK0wvc2VvY1M0d0oyQkxUeUR4c1dsOU91VTU4NlQ3VTQxOTByN1BQZFpKNm5zOGtqTWt4U200SFBoQjRQK0RlY2JtRGJsMHVNUXZrQmpzazF6RzZycGFyaEU3Q213aHh4dGNBZndlOFpSRUhNeUMrRC9oTWNBL3JxVnBQT0xXRk44SjE3d2NSc1QxZ3orY01SaWsxdGU3alRNNHUvdzhUcmlYR0JHd1lUTEsrTnVPTnVLTnUyTUp0RXEyeVB0ZGhSN3hlQmU0N0ZudDhTNGNqaU5UN0FnOEhIaFhYOXlMM0NPVG04YmZZeUVsamVVUm9XWGNKb3ZaUzRFK0F2eUFNSG44dHE1c0plaWZ3VGNEUGtlWVBnM1pXNGhIbFlINnh3clNJU1RhaUdNS2JCQ3ZzaURDVHMzeXVGZnRkY2t6QWxwOTYzRmRmMFY3ZDI5UWlKcGFYOXZtM3NnNEJ1QkhGYTFVdGdJY0Nud2c4RXZndzRJRnhmMHVrZWxxMVdSczduYTd0SWZ3WTR2TzlCL0FnNERQaTY5NEUvRG53WXVCL0FTOGttQTJyeEc4QXZ3QjhYbmpZbDlpaDc0dXQ2RGJYOThVNVFxZHVWd25jZ1FzZWlSc3Vlemk4eThWK2JiNndKY1Y1UDl6ZnhMbnh4bGtyOTZHTStWcEhwY3Y3NExHNjVPQXljSGNmUEZ6M2lNdnR3TjBkM00ySDUyWEN5cnJ5UmhILytuVndqeWNFQmxhRkR3QStqdEF3UG94dzRpWllWYTM5dDNvVHRTN2s1c1h0d0YwbHVCci9KL0JjNFA4UVd1RlY0S0hBYndIM3l1SWlvY1ZqY2tYNmZZS2xkUTI0QXR4RktOOTVKOEc0bGVWZER0N3R3MnV1RXJ5Nit5NWMvaktqYzZwYVAyWUJHNm9PbUFXMjNDVFhubE5DUm5BaFN0RmVjWlhvOVBsV3RwVzREbnZUNXZmQmZTdXJJMTRmQXp3QmVEendQbVRScW01bFA4UDJMSStGV3BocUY1V092Ymg2dndkL2dkQ1FmM0JNdFBsMTREa0U2MlRzTHNhWEV1YWcrMC9oWWNzSzYzZ25YTTdPVGZkSWRLdnZ4dnRqMzRXTzRRWkJ1Q1NtZG96NmZjd0tXejRzalg0SjhkMkdTOStjUmRrb3I3SVBxWkkyWEx2V1lTdnU1UUIrQ3ZqalV6KzZzMlVMZURUd2M4QXZBMThHL2w1NWxsNUI5K3gxRDE5dnQrYWwwbk5UMWZ1blBWOS9idXYvSnBkVy9KSitHL3luZzM4bThDTGdYd04zdS9YVHROVDhFQ0ZPcTNaMXhvZlJQemJzSEVHOFJOQjI0bXMyWFZqNlptSVlyN3Rud0ppQUxTLzZ4a2szbEF1dXhFM2ZqWC9WRnRpSnJLOTNndnMreHQyOS9GRGd4d25abFU4QWYybTZhR2tSYVltUW5raXhYazlhV3U4cFpnNm1LMnl0NzVhKy94cjRoNE4vT3ZBcndPY3kzaGIzRGNBUGtJWWcxQjJ4cG9pUlJVeGJZbW5rZzZ2bUN2TTJKbXdRbUF0eHVXbGxIOHJBeXkzSlBxUzhJV1daTmV2UUFUd0xlTWtDRDJ5UjNBMzRLb0oxOGw3OXJqN2YySzdqTE9teHkxWmJ2ZWpQMU5zZGR5RFY3K0R5YjEwM3lQVStuU0ZYZktZSC81SEFJMk1zODFzSWJyZXg4VXpnQzNOYVBmUjRLaWdGVEZ0aXRRV1dpbHJIZVBOYUZMRmpsei9meG9RdEdTWmdTMGFWdkNHUDExeE81SkM2aC9WTjJlbFYwaFd3cHZYMWRuRGZ6VGp2eW84SHZvMlFCdDl3RThwNmtsZzEzWG0rL2RwSlFnWTl3a1dPYjlhaXRWWnRUeEsxNG45c2dIOEN1SThDdmhWNEJ1UEtXbndYOEZTQ2tERTlGbGFNbFNRUCtLL3ZsUzJmQnpiZndGTHFseDRUc09VazNaQXVwODZuZWI5Y0tXRDFEWmxxdmZucGsxUTZDRzYxc1UxU3VRWDhPMEt3LzdiUWN4YjZoS3NRS2hjSHROS05kL1hGdzFxdXZXa0NWZ3RWL2JpSXg3aDhIZlFKV3lGa0h2dzlnZThCOTJqZ2E0RTN6bmI2QnNHdkFIOEY3a082VmxodGlYVTZmTDVyaWFYaTF0SFRJVE05ckdISkhFdUxDZGdTNGVuMHBDZFpYNFdBVmIxSlhUS3F0OUk4d0p2QlBXc0J4N1pJN2tQb25YOE9UYXVySlZ3ZGtmTGRPRlM5WFF2YU5CR2JSYnpXRyt1MDdhdkgxWHRidjY4alBPRS9EOXhEQ1c3VXNTVHEzQW44TUtITTFIcDV6RnJ3TzNVU1habVZtTnp0cXROWHU5eWx2SlQ4RHhPdkpjRUViRG5Sc1MvbmN1WDVZdW9JU2hlaWpBM3JKRzVVUGZlaWtYc2U4TEtGSHRycDhoQkNsdHBqSmx0ZHRXaHBnYnJSV05mNzB1S3kyTlVpcHY4ZmxNSlNpRmZzOFd2QjBqRWMvYnZYKytvNTNQU2ljUjc4aHdDL0JPN0xDV24zWStEWndGZUFlM0FqRnViTGM1a0dOL3ZxM3BIN3hnY1Jrd1NwQThMdmNnUnBHSXV4WkppQUxSLzZScEdxQUsyc0tsMCtxbG5ya0p4UjFZeDlYUVgzdll5bm9PeWpDTWtvRDVoc2RVMFNMWjBSS1BYeEpCNGkrd3B4ODIxcnJCVVBheVZuaUdXbGYxKzlGcGZXaHJJTTlHKzdTVmZNNUgvV3Y3Y0R1Q2Y0bndCM08vQWpKei9GUzhjN0NNZngvNFdITFN0WGw2VnNaaVQ2cnVkQ3pubWR6R0Z1eENYREJHdzVFY3RMOXlUMTdMUEpuMS8xSnVVNUhmdnF6VHo4WmNhVG9mWlk0SDhBOSswWHJ6N2hhcVc5SDhqYVY4KzVJRnF0bEhjdFlyVVZCbTNycTNZVmlzVXM2ZHhTNjFLN3dQUmFMOXBLRXlHcnJURUhjQUg4ZDRIYkJINXd4dk83ekR3YitCcHc5MnAzRmxvWmllbitVZTdFZFArNFBLaDUzUWNMdVpVd1krSzFCSmlBTFFtKzZqM0dIbDdxcGJ0Y2ZhTytDWXRNS3VVQzBlNlRUdXhyYjBTeHI0OEVmcFpVWGdqS3RRaUtGaGs5L3VwQUZoY0U2NEJZSDArdHRhRFZZN2RhQTVLVGNEclZZNmMveWFBUU1HVnRhY0dTMzF2aU9KTDZyWmNqUXNiZGNXeUFkWU5lQ05rRjhQOGQzREhCNVRwazNnRDhEUER2dzBPeGtscnh4WTRIbzQ0ZHkvMGpGaGpaUW5aS3lFeThsZ1FUc09XaWNCOTYxZEQ1MHBVa1JVbzcxcGN2ZStOMWdELzlqejhqRklRZE9vOEFmb0tKNHFXdHJ0cmkwa0sxNTh1cHV2WmNtQzlLaTVnSVdjdWRtRnlJVHFYWlZ5MWR5aXFsYkZnN2JrUEtobGIvM2p1VVZzT09PcTR0d3YvZWpNY3Y5N2VJbDF4UEhuRGI0TDhUM0xzSVZzeVFlUTd3eGVCdXkrSTF6UXJiVnV0MEQ4Vk9nVmhnRzZqc1Q1L0hoQUhtUmx3R1RNQ1dqNWI3Y0IwbFhwU0JhTjBETDlMbVhiZWFRQkt4bnlGVUx4MHk5d04ra2lMbUpXdnR4dFB1UXUwaUZMSFN5NjVlK3l4bXRTWFdaNEVkazlQdlBVQmxnYVZ4ZlhRRnJFN1NLU3d2SlY0Ni9mdGMvRTZ5djFXOXc1UG4xWlNVOENSaWw4RC9BTGkzQXI4Lys2bGZPbDRJdkFENHAzbFhKOVpJT1lmZVp0VUJUQlU1eUIzQlpJR1pHM0U1TVFGYkFpcjNZWEkzdWRqN0kxZmdrRUdaRW16V1Bjbk9tQzlQSi80RmhLbFNmbUVoUjNaNjNBNThEL0NRdHVXbHhVdGJYU0pjK3k0STFDNWhrZmtsOVdNdGJETGx4cUh2RnpBOWRpeFY2dkRLamVlcXpGTGZibHgxQTl0WEJrbW15dG1MMndmcSsrelFUaVlST2lKMk8vZ2ZCdmM0NEc5UCtEc3NDNTR3cURrS1dGOHlSeEt3eXYzYXNjQlFpUnlZRzNGcE1RRmJIdEpOSjI0bXIyNjZxa0VyYmpwS0MyeFMxUTBIOFBQQTJ4ZHlTS2ZER3FHNnh1UG90Q0xhYmFqRlM2eW5aR2xGOGJybW9uajVNUFhHZGVDNnk4OXJBVHVNOGJGREZ6L1h0eTJ2UHVFQTFZT3YzSWdwemtsTTRGQy90UXlaMEFQV1pXYmg4OFRwUDVTdzltVkQxcWRRUkF5QUI0TC9RVUw1cWJ1bW5QOWw1YmNKUlg2VlJkNktPUllaaWE2YlZpOERtamQ5SHRUYzYwWTB6aFlUc09VaUpYREU3VFQ3c3JiQWZMN3h0SGpWV1doTjhUb0E5N3lGSHRMOCtRTGdTeWtHS1d1cnF5VmU0aTRVQzB2RTZtb1VycXRxMzNXZnJiRmtmWkV0TU1sQ2JNVzlrbWpJZDlNdXhQaGxVNk5hV1dHRnU5aFZMbVBLU1V2UG84UzFzZ3FieVNTTjA3aEcyZER6Y2NEWEFkOHcwNit3Zk54Rm1DUHRhOHJkdlZZWVhVdE00bzFTbmI0bzd0dHlJOGFBbTFsalo0UUoySkxoczNEcDZndjFPSlphdlBwS1JuWGNoMzhSbDZIeUtPRC9KVlNYaUx0YTRpVUNwc1ZMM0lRaVdQVnlqU3hpdThCdWxjU2h4NE9sUWN4azYwdStReElNM2JCRm4xUGgybEtOWWozZUx4VnRwcHUwMDNGdDBoV3d2ckZvTFZLQ2h3Zi9OZUQrQlBpbENXOVlWanp3YThDWGdydWNkM2M2ZzB4SXF5ZmVXOHJqc1k0YUR3WTJxSG1aTUFFN1kzelZxM09xY2FQSGhlanlUZGFxZDlpcU9vK3NmNHRRZ21lSTdCREU2MzI2NHRXS2UwbVdvUmF2cTRUWmQyVUczaXNPcnZoS3dGd1VDRjhLeEEzWDd6WXNxdE5YUFhJZEE1TWQ2YmZXTVRHNnd5YVNpTVhmZTVzZ3Fuc0UxK0crTDJOeldzRHFrbGExOVZCY0Y3SzlBZjdid2IwSWVPdE12OHB5OFNlRUdhb2ZuWGUxM0xaRnNrekRteUgzbW96THF5MHcrVnl6dk00WUU3RGxRaytkb3VzZmJpaWhTbTZQU3J5UzllWEs3RU5rZlIzY2tKTTNua3h3YzgwUTl4THhrcW5sdFhqZEZaY3J3RjAraXBtRGErSTY5TjNNUTIxNUZZVitSYmg4T2VacllzTW1QWGd0WkpTL2UrM3UyaUJYU3U5a1JmcUcrMUFKYXZ5WG5jUUc0dWVLQlppKzNvUEIvMmR3VDQ0Zk9pU3VBODhsQ1ppSVRDc1cxaGRiN25nMWxOVzIxdmpOYklxVk04UUViSGx3OFUvUlc2eGNpUFhOMVpxc01tVk1VVFpXL0JXaGR6cEVIazZZMDZzUjkwcVdsNE1qWDdvT1crTDFIaGVFUzRUc0tpRVdKZ2tjeWZKeVhiZGhFaTlYaXRiTTRpVmYzRVdMek9mZk8xbGt0VFZHYUdnbGlXUkxMQzcxM1RxeEw1L1BUUzFjcmFvc3hYVUNJYzc0UDRIZm1YWXdTOGh6Z1c4RHQ5a1dyOElLOCtWOVZJdVl6a1JNSFl2S2hXaVcyQmxpQW5hR1ZER1JTZW56cmJGQnJkaFhzK2FoYlAvU0tSL1BhYkZCbUJibGpuN3hPaWFJbHg2Z0xFa2JFdk82QXR3VnhlczlhdnNxS28zZU4ySmVVUmlUY0ZYLzM3djhuVTRTME5jZEZubXMzVjNhSXJzUnJ3UEpmdXdVR0haVkVvbDhwbkpUMW9QYTZ3azBRY1hETG9KL0NyZy9paWR5U0x3YWVCR2h2RmlrMXdLak1XaWMwdHNoWXlwMXgxQ3lPRTI4emhnVHNMTW5OV0NWOVZWWDBxN0hCalhkaDdSNzJWd0g5d2NMTzZUNThpbkFaM1YzdDF5SE4yaTREbDJ3c081eThKNG9YdTl4SWZaMXhXWHJheTlhWDNYTVN6NWYvbCt5dGx3cHFQVjNtMFRkOEVsOExLMHBmOGZqS0tLNkNuNTZyRjJhNm5NTFM3NjErTzcxVW55bnh3Q2ZCL3pZbElOWk5nNkFYNlVRTU9oYVlYMkR4NXYzbDIrNDV4M0dXV01DdGp5MGVzb2JhcEVhYmEzWVY1OEZsdTZ4RnpQTVFhb1hDQk14TXNYNlFvMzNjakdMME1mRWpCam51dUt6RlhZbHVoQ3Yramp1Q3lWZVRxWEtSM0h3cmhTSG14V3Urbld1NTdFMGpzYytOSm95Wmt1RVRLekJ2am5JdElXVjRxbVVTeTFvTFZlaWZ4SzRYMlY0Q1IwdkJONEY3dTU1Vjh1VjJFem1jRG1wUXpxTmhYdmVsWi9sc0RqWW1XRUN0aHhvZDVMRVFab3A5TDdzS2ZaTnZ0ZUphYnlRWVdZZmZoYndFZDNkUmV5THN0S0dsSUNxc3c1VDhrYTB2Q1JwNDNwOHZZaGZpaWVKU0xoU0hQckVxNkN2TWZPVlFEU095K2wxL0J5bllscVM4YWpUOTMxOFV4SHpFVXZlbHgyZHVzTlRwSWpINzVGY2lSOUcrQTIrZjlMQkxpRi9DYndjK01mbDdrTFlxZTR2Mzc3SGVoT2tYUG01Smw1bmdBblkyZU9nakgvUkhxL1NXdXJHcU80WkFyaURnYm9QTHdGZkRtek1ibjNwdEhsSml4Y1JLOFo4K1R6bVM0cjJIaExpWGtldUhPUFZFaS9nUlBHdW1kN2p5NGF3RURQWFBYWkpJaUZ1eTR2bHQ1ZTRqVzZrbXlMbXV4MGYrVGc4K0s4QTl4TU1xM2JtTmVCUEtRU3NJK3hVQTVzckYzMG5uUjVWbFlQeVBqUHhPaVBXcHIvRU9BMThKVEt1SFhBdjVvaGlzbmpWTnhheXZoUDRvNFVjMVh6NVpPQWY1WWNkOFhKZDZ5dkZ2dHlFQWNzdXVnMmRHa3VGS2hIRmhNSEFMbHBBcCtFdWFueDIvZjhsV2VVb2ZsZkpUQlRMVStKKzF3anUwZFpnYlYxbFJGZlg3ejNtQndQL2ZONEh1d0NlbnplMTFhdmRpUFVjYkNuV3JOWWJMbHVxNjNLUCtYeXZHbWVJV1dCTGdyYkFmSzRha0hyTHZ1d2hOZ2N1MTZJb24vM253THNYZUN6ellCdDRFczIwZEdsWUpZbWhjQjhTRzNGZldtQ3lTS2JoTGpuWm94aWs3THJKRUVtNFR1dFlXOGovYTFsbGhZOVJiYU9zaThyNmttdW5OZGFwVGdMU0NSM0pDbnNpdUdjenJEcUpmd3pjU1NoV1REY0dWc1RDZkZsZXFsaWpyQzk1ajhYQmxnT3p3TTZlNUpkWHNZZzY2SzVUZWx2SkczM3hMd2Z3R3dzOG1IbnhDY0FqeTEyMTlYVk0xL3BLQWthd3RPb1NVV0o5U0VWNlBjdHl5MjE0SnVLbDZiSEdaRHpha1ZpaFBsaGo2Uno0WUdFbVY2b1NkRzJGNlVvamZWT3hlQWkveFdNV2NjQno1TjNBSDNaM2F4R2JsbzNZdk5ja0RsWlpZR2FOblFFbVlFdUF1aGs2c3pDVDNZZDk0dFhLUEV3MzB6NjRQMXZrd2N5QmRlQXpnSFB0eElua1JxTmJNaXBOamVKeVVWNHRYbnArcjZKNmV5dm1kVnF1d3BQUzQxYlVJbllqTG9VcnRYSXA2bEpadThSaEE1VHpuSW1JRmVJRnNBMytzeGR4c0hQa2lNNGNaL1U5a2dUTTBYVFZTM0xIaG5wZHk5Tmg0blZHbUlDZExlbmlGNWRFdkRucUtlYW5pVmR2L09zVndPc1dkVFJ6NG40RUFWTVV5UXZLK3FxblNrblY1bjNYMmlpbVJuRTVUYjdaYUMrRGNOWDBpUmhCeVBTOFoya3NuTXN4d1NUbVBydFMwL21ndjQ1aU9pZVBKL3cyUStLdkNKMDQrdU5nS1dtcUZRZWptL0NTckRCbmNiQXp4d1RzREtoNmNNaU5VUG5ZVXkxRTJ0bGpoZnV3TC83MWN1QnRDemltZWZMUGdMdmxoM1dqM1lwOWRTd3dTcGRoSjJuQjU4Szg5VmlxcFJRdllZSkxNUTNtMXBhWXoyUGlXdWRsejFVRmkrbUtXT0l5OE9tbmVuVHo1KytCMSthSCtoNnA0MkFwWnVoeXAxRmJaWkxNa1Z6MTVrSThlMHpBemg3dFBuUlVBMDk5S1Z4OVFmZStnYWo4SDBLTE5CUzJnU2ZRU2Q2b0xZNVc4b2Eyd01UcXFCdnBsRzNvSmpUVXkwN0xFbE5MWVptNjdseG9oYWo3cm9EMVpTVGl3Zjh6d3F3QVErSDF3Q3U3dXlmRndlcnliV2xPTUtvT282TW82Z3VrenFteElFekF6cGJrUG5SMEN2aHFLNnQzRUNvOUE1Y0J0dy91THhkeEZIUGtId0VQeVE4TEs0TVk4NkU3V2FXa3oyc0xURnhrUlhGZXB4cG90MlFKR3pkSit2NituQXZ0Qm1HbTVpVHdyaFQ0WGRlZVY2eHZNa3dQb2FqeWh5N2tzT2JERWZDU2NsY3JmdFZLNXRDeFoxMkZZNTJjY0dWVzJCbGpBbmJHK1BiTkpEZEs3VUtjdFJTUWcxRDBiMmdKSFA4RXVLMXRmV2xMUTF0ZkxRdHN6K1VraGNMQzhCTXk3WVlrWGkxWFl0eW5SZjZRSU55NlFrazZUejZPaGFOaGdibXVrQUZ3ZC9BZnRaQWpuQjh2SW5raEpzWEJPaUxtR3gxSFQrOTBSU1plWjRBSjJObFJ1eDBLOGZKNUxNK0c2N2ZBV21OU0VxOW5XRFhzTGdJZlUrN1NqWFR0SXF2alg0VUwwVmZ1TVpXMDBhcXdNU2p4RWx4WDZKTXJVY1hFOUdCbmZhN0VPdTJJUExHTUZvMUVEb0JQSlBqV2hzSmZBZ2R0OGRKTDBYR2tZWUZSZFJ5VkM5RTRJMHpBRmt6dGNsRHV3M1FqK2JLR1hSMEg2OHk2M0pmQThlTFRQNXk1OHY3QW8vTERWcHhIdThpMGdJa0xVVGZPZXVMSFpIMzVmaGZaa09tend2cVNYY1NsS09kb1VpTEhjZlYvZUF6d0QwNy9tT2JHMjREWDVJZVRyTEJVd2kwbWN0U3VmRjMxeG9GVjVEaHJUTURPaHVLQ3J5MHd5cHVsdm5uNjRsL05CSTRoOGJHRThoQ0tWdkpHVVhtZTNDanJ4cmtZNjZXdEw5Y1FyaUZhWDBMbFNvU0dGZVpLZDZzV0xXMTl0ZHlJVGFIZm9XTXBMeldITk84RlI1bUVVZHg3UHQ5N0hmSHlhbkZseDlHRWJNR1lnSjB0aGVYbDJ2NzRqb2lwMXptMUxqNFhjSCsxa0VPWUg1OUVrWDFZdUs5OE4vNVZXMkJhdUhTalhGdGVZN08rT2lLbXJEQ1pmdVVHUWNnTDBmZTVJa2x4dmxEVitHbTRFVDM0ajEzYzRkMHludUJHVkNTeDhmMGR4eUllNXNyaXYwWGlWT1ZHTkl0c2daaUFuUjNwNHRmdUNNcWJwQ1Zpa3FVNE1YMytuY0NiRjNNY2MrRzlnQS9LRC90aU83VkZVWXRYSzU0enV0alhGSklyVVZ1dExwYWJjbDByYkwrS0ZjcDUweTdFK3ZmZ1ljRHRpenFpT2ZBMzdkMmRHQmlOdEhvb1pvZElIVTF4L1p0Z25SMG1ZTXRCSFVqV3BhUm1jUjNXbjhQZkErOWExTGVmQTQ4QzdsbnVxdDJIU2NCOE93YW1yWWdpbmhOZGFXbnVMRVprZlZYb1k5TUNwQk02V3U3RWRNNThOUmFzVC9qZkQzam9ZbzVwTHJ3WmVIZi8vYUx2dno0ckxEMzJGRlU0eklWNGhwaUFuU0c2OTZZc3NiNkN2cTNVK2Q0TXhEY1EwdWlId3NPQm5hNm9pUHZRVTQ1dmt0aVdGcXhXTWtMS3FQTjBabFVlbGZYbHVsWlNjaVBTclY2U1JFemNoeTZmdC9yY05RWC9OdkFmZU1ySE5FL2VBYndsUDJ3SlQ5Tjk3M29xMzhSRkQyWTJ6Z0FUc0xPaDB4T01ZbFpZWUpRM2s5N1hsNEdZZUNPaFJSb0NXd1NYVktTMmttb1hZa3JpOEtVVlZyakFYS3kyNGVqUHBoc3BLUjdtbFFYclZPVjZwMFRNUnlGVDV6TEZ3T2l2aStnQkhzRndXdTYzVVFpWVVGdGdmY2tjZlozSGRBK2FHL0ZzTUFFN1E2VDNwa1JJUnZpM1ltRFRTa2NWUWpha0FyNjNBeC9TM1QxSnZBb3JRbS83TW1WZXN2RWt2VHcxdm1PeXZvUldNb2RLNkVnV3JPODVkNVFXV0V2RUNqNE1PSGVhQnpSSHJ0RWJFMjVsSXZhNUV0T2tscjYvODJoQ3RrQk13QlpJNjRMMzFjM2p5eHVvMCt1alg3d1NCeFRqWHBhZU80QUhscnRTUSt5NklsYTRFYWxpWHE2TTRTVDNJZU9OZS9WUnV4RmxyYzlSNS94UnhjRG9EajFJNS9DRGdFc0xPNXhiNXpYbHczVFBlRG9XV0Y4SGN0Mlg5Nmp6dEdzaUdvdkJCT3dNMGZFdnlwdWdFMUIycGR1aU4vc1FjTmZCdlhaQnh6QVBIa0k0eUFvZC8ycFpZRElXN0ZBdlhvblhDcm9QQmE4MmRDS01pTHBVcmRjZGdVNzhpM2J5UytJU25ZN0hVdk1xT2o5K3kzVllkeURyQWN6VDdqOGczOXZHNldJQ2RuWWs2MGw2Y2I1OUl4V1dtWi9CQXR1ajZlOWZXaDVPLy9ndjJ0bDBXc1E2RGEvcldnLzZjMGZwUGhRbUhLOElXZW9JK1BLOE5jV0wvQnQwUHRlRFY3SExwZWNOd0kzSmJyOUMwRnpEQzFMRnFmVjkyL284NDVReEFUc2JPaGU4RXE5ZUVYT1R4U3Z0MjJOWWM0QjlhTjVzWmlGU1dtQXROMktyNFQzMjBZSnpEZXRoVlhEeEhQaitqa0RSR1hEVGt6Z0VEODNZNWRJU0JheW12biswZTdEWGhTOXV4MnB0TEJnVHNETkUrYzZURzVIU1JWRlU1Nmg4OWIzdWkzY1MwdktHZ0FQdTM5MDl5UUtyM1lncHBpT05yMWZXd3lxTEYycFFNMVU4REpXVnFCZmxncTBITWpmUDR3TVdjUlJ6NGswVW1ibXRCS2crZDJJZGYwN1dWL1V2TEE2MllFekFsb04wSTZsNFdKM1UwVW5pY0QxQ05xUU14UHNBdDVXNzZnU09WZ3lzc01SOG5xQlN1dzZQeGZyUW56MW05NkhRRXUzV3VmUmRBV3VkNDFZTU1YMzJleE5tYWg0Q1Z3bmp3WHBvaVZpZm1CWFdsMnVMbWJFQVRNRE9DRi9kQU1vVjBSRXUxNzI1SnZiMDNuajZYMzl1dkI5d29iczd4VmdvNHpDMUMxRm5HMHJhL0pFMDFvMjQycXFSemtOMHBZcXcxeFp0T3E4cWZsaFU3ZSt6Wk84RzNIc2hoM0xySEJHbUdLcW83NlZKbGxqUnVYUlQ3a1BqOURFQk8zdFMvTXVWcm9sTzRKZ3lCdFpNeTRkaEpYRGNsMExBNmhoTDRVWjBVMFNNbkRXWDNJZXJZSEZOUTUySFZsWm5JVjYrYTNrZHEvZDFST3h1d0wwV2RTQzNpS2QvZnJ3Sm5jU09rRFhpWGlaaVo0UUoyT0xwNjdVbElmTjBLdFBYeVJ1dHowaVBKN2hKbG83M0lkVG9VZFJaaUVuQWZMZlJMWVFMTldiSjA3SEFWaHAxUG82VmlCVkM1aHZuazBZZFJQMzRJbkNQUlIzRUhIam41S2Y3Ukt0MkszWmNoeDVMNURnTFRNRE9FTzA2ckpZNllhTVRRS1lVc2VMR0daS0EzWlBrS3B5VWdWZ3Zrb0RRRVRHVnBMRHFDUnhDY1E1YzF5M2Jzc2JrSE5kcDlKM3p1VTZJZ3cyRnQ3ZDM5OTJITFNFcjB1Zjd2Q0RHWWpBQk95TmNLVDdwWm5IWnQ5NjZjYWFLRnd4SHdCeTlqVjhkdStxNHZjUmFjQlR1eFRwbVUzem1LcnNUS3hkaXMyTlF1V2lMemdBOW5Rd1Bma2dDVnQwYmZlSlRkeGJyWVN4MUIzT1d6elJPQVJPd0JkSHFxZm1HaUhrNlJYMzdYSWpVbnlmUHZmdFVqbUQrN05CeFArbEdzdU5DcExJWVhIWXJwcmdYVWFncUYrTEswYkkrWFhWT1hYVStmYi9yc1A1ZEN0N3JsSTdoTkpnd1BuS3FCZVo3T3BFZXkwSThLMHpBemhnSkhydkpOMHhmTm1LSFhZWXpCbXlIa0FUUW9DNitXNHZYc1lpWHF5d0k1ZlpLbjhVS0M1bWdNaEhUZWZWZDY2dHZtU2hpZDZjVHgxeGE3bXJ2Ym5wRGFBdFdiemtwRTdIRll3SjJSbmpWZTFQcmlUZFFaY1UxcmJEck5Lc05MQ1U3ZE1hQTFiVGlOWHArcThMTnBhMHV0K0l1UTBYVDllZHl3b3QwQm5TWnFhbXhMLzM0SHNEbWFYMzdPUk03ZDMydVAvMWNyMmcxN2xYdFRVbWZaMGtkcDQ4SjJPTHBpRkREc3VyMCttamNOSFJ2T3ZZWWpvQnQweFN3T2xiVGNTRldyaSs5djYreFhYbVVvR3NYcTY1U3I2ZWYwWmJYMUxGZ2QyYzRBaWFsOTN0STk1ZWI0ZzFScnpIMzRSbGlBbmIyVE9yNTFUZlVwUGdYTUN3TGJKdGlPbzYrTE1SYXhGSkQyN09zZlB4ckNvVXIwVFU2Q2RYNTFTN0g1am05ekhCY2lBZUVUbDVGcDBOWVdWbE5kMktQRjhWWUlDWmdTMEFybWFOZWV0eUhIWFlaam9CdDBwa1FzWlhBMFp2RVFVTzQ2SDZlQ1ZrWFBTYXN0elBnU2dGTDc2MGVjNEhtZERoTFNTVmdrN3daTTNsRFhQLzdqUVZnQW5aR3VLN3JvYjd3VzVQa1RYczhLQmZpQmlFT1ZsRTNsc2sxNkNaWVhiVkZZZkd2THNveWJWbGVuWTZDei9zbXhzSE9NU3dCbTVEa1ZJaFF3N1hmV3ZUN2pBVmpBbmIyZElLL3NyU0N4ZXBGelp2bWtHQ2FESUd0c09wckdEdlpjaTFyd1pYUGFmZFl3WW9MV3BGQjZKZ2NZNnlXUGhGTDUvTUN3MmxJWkJxRENmUzVFWnZpWlc3RHMyVW8xOTJvdVlrZ2NPL3JqeGhPUzMxdTh0TXRkMktuZ2RYeG5PcDlyYzlhYVNvUnI0V3A3aGo0eG11YTUzaUg0VmhnY2tBVlV6MGQwN3doRFkrS3NRQk13SmFIT3F0cG10dWl5WkFFckNmd1B5a08xbXBRaXludnBaRzJKSTRrV0w3ZVYxdGZMZGVzTHkyd1NSMEVEL2loTkNRU1FHM1JFS0NadkNHTng4YUNHTXAxWjh6SWdBV3MxVWpXSXRhSjI3anVjMXE4TEltalRjdWRPRzBBODhSek9aUXNSTW4rbWNDSnhNaXNyclBGQkd4a0RGakFhdnBjaU5yYVNpNUVSMGY4akFvUmRpMzZPbEhEZGNXcnprTHNQY2NEZHlIVzlIby9HbDRTNHd3eEFSc1owdm9NZ1JrYXZhWWw1c3JHMTFjTnM5RmxrblVxNTdOd3hkSzJ3S0Q3Zm1BNEZ0Z2tGNkl4UEV6QWpHV2p6aUtzWFZjNmhsUHZBNEtRbVpoTkpBbSt1QkFicnRoSjR0WEJUQkhqTERBQk01YVZUckxBaEVaMjB2dU1CbFd5UzJ0ODJNemlaUmhuaFFtWXNjemNUS05wUlZTN05PTTF2aUgrTGV0V1AyNWxOaHJHV1RFVTE3V3h1dHhVWSttclFQc0t0N2k5WXU2QzJQYzlaL1VramFYSEJNeFlkaVpaVTBWMm1JaFdZeHpkS3RQSm9DT2ZxNU5pZ21Zc0ZTWmd4akxUYW1PYm91VjdCcHk2NENaZlpiZVhuSXZPck1LK2ZRNkJZTUgyZkpaaExBMG1ZR2VFdGhicXh0YzNHdW16L2JablFxZmFnUy9QeVZwOHJCdmxkV0RkNVJSd1IxbHVhdVZRcmxTWjFWdk8xenJxM1BsUzZNeUN6VXk4UjdXcitpYXRXdU1XTUFGYkhIVlpHaUEzTUxYbFFMdGN6VXJjSDVWZzYvT1JySWpZRUs4N1dQZWhNZDV3VWNCOEtJK0U3NThTWkpXUWE2NDRaNFR6dElFNmgwNTFDaWl2dDJtVzJSaVpkQSsydkFCQU4vYks2bDUzQzhFRTdKUnAzUEM2eDlicnlxbXNqRmFEUGxaYXgxclBoaXVONzBaY2I4YnRUY0k0VmVkRDRmRzZNTzNLb1JwVHNiYUtjd1pzVnVkeW5jYnN3M1IvbDdIU09WWVI5WjU3VkhjUU9wMVB1ZjlYMVFOdzJwaUFuUko5VmtURFZWUEVKcXAxeTZYVCt2eXgwR2Q1eVhsWWo4c0d1UkhlZExEbHd3VFBNcFpKckxMa1BselZqTHJLdWw5eldhaTJnZTE0N2piSmdpWWlKa0xXNXhVWTNmVTN4ZkozUGZmb1d2Vjhzc3owUjV1UW5RNG1ZSE9tY1JQSU9vbVZ5L0VIaWRtSUMwZGNPN29YN09qMmhEdXVuUkVRdlg1cHV5VmM2NFNHZGlzdTJ3NTJQQnc2dUtGaVlqSXQyckd6R0ZpeTVzblgzQ2JoM0cxNzJJbm5jSnQ4WGpjcHozbXpFOFg0cmo5WjE1YS8zaTd1VTlWWlduZmhtbHVQRjVxblc5WE5oR3pPbUlETmlTbkNsUm9RMTdVaXhQVzFxWHZDcnV2U2FUVWdOQjRQblZZRHN1N3llWkpHZG9mUThCNEFSMUdrNUp6ZEFJNmNxdSszcWhZWWxVdWFIQy9janFKMTNvZXAyWGJpa2tRc25zKzZNelZHRjNicm5xbzdVT21lVlBlcDNMT0hoT3RPaWlMTHhlWmNPd1pyUWpZblRNQnVrV25DUlhiZEpJdUxlQk5FOTgyV2k0Mkd6NzNmRkpkZ3NrdW4vcjlqb1dOOXhmT2h4ZXNjb2VHUVh1NWFQSC9id0EwWFJVMmVYOVdHUXE1UGlkSDRmUDNKdVRvUFhDUk1yQ3hDSnRkajM3VTNKbWF4L090NDZ5YmxmWnV1TjZjK0oxcGtqdmE4YW1CQ2RzdVlnTjBrc3dxWFduUkR2QkhGSzdseENNdTJpN0VKSldaMUl6S3hKK3daVHJWdDVWK1JScVJwZlpFYkRoR3Y4NVRpSlc2eGc3ai9oZzhXV0tkaS9RcVNZakx4bXEzUDUzbEtFVHRQRmpGOS9VMTBZdy9sbXBzdzNWRGZ0VmVjTDNWL3luMTdHTVZMTWwvbC9UZmkrb2orT2RZRUU3S2J4QVRzSnBnUTdPMElWK3o1YXVIYTlHSFpJcmpBemprNDUrRzhpKzRjVjdwenBNYzNUY1FjOFExM0FMdW5lUUxtZ0FjdWw3dHFFZE9OaURTMjJ3UXI0UWE1elV3eEhZSjRTZnhMTERCSjdGakpoa0VTT0ZRaWg0NGxicEk3QkNKaTV3bm5XR0ppY3UyMU1oTFRmWEI3WEphZGUxQTBldE02VHZvOGFiZjFPUWNIMGZLNkVhK3o1S0oxY09qRElzOGZ1Y21UaFNMcjZPNWR5V3YxWmpBQk93SFRFalNrOXhVRlMrSmQwb1BkZE5sbnJoTVF6dnZRODcyZzF0S0k3QkFha3JvbjNPdktlU1R3UExMdllsazVCdTdlM2QyTVBhQWFFT250eHRkcjhkb25XbDlVOFM5b0ZxNWRGZEoxNnFvNEdQbmNhUkc3RUR0U2ZWWlkwL3IvWVVLbmFabXZPVTg0b0FmMHY2VHYycE56ZEM3ZW13YytYbWZ4dXRJaGdnMFBCeTZzZFljcUNablBDVWJKeGEyL3BsbGpzMk1DTmlPVHJDN2ZjQlVxOFpKNFZvcDN4ZUQ1amk4Ymprc09Mdmx1UEtJbFlMMDk0ZHVBUjV6R0NUZzlYRU5jeE8yVkdnWENlVGhXcnBvMXRYK2Y0RDY4RVpkajMrK3VXVVcwRlNiWGo4Ulh4YkxkSmxnV09xbGptenpZdVRVbVVUN2NQWFF4eHpFMzFBVXh5Zkx2Q0JqeE9vdENKTy9YTWRvOUIvcyt2TzdBNSt2eTBHWFB3UnE1STlaSzlEQnJiRVpNd0diQWQ0V2l1Tmlsb1ZXaXBRTytXeWpoOHZsbWtCc2l1VytpZUYybUZESHR5cG5ZRTNiTDNRR2VoY0lDVStKVjNPREtpdGdpVzE3SitpSm5nNjF5N0t2QTBSbURxQnRvYWFSMVBMYXd3UHowYk5oQjRjcU8welRMdjNaZCsvaEdmUjF1RVl6UWJROTd3SDVEeUE1ZGRDdVNMVEtkNk5HMHhrekUrakVCbThDc1ZwZUx3aUtpNVVyaDJtNElsNGlYRnJBTEJPR1NSUWZVeFFxVG52QVlNOEphUFdGUGRoUHExNGtGSVhHSkZQY2l4K2xiYzF1dExMNjZmdW1PclN2RzE2bnRtV0pnSXlCZGQ4cnlGMkdYNjByWDJKUnJNSWsvNFZyY0pRallYaVZrNGlVNGlLN0ZsT2dSM1pIaWRlaFlZK1pTN01jRXJJY0o0dFZuZFVtTVMxeUVyUjZ0aUZZdFlPZklncVhYT3EyNTdnbkxaS1NERnpMVkc5WU5veFl3VFozWUliMWluZTNWREpDdk1MWG5vSGFWMWRiWXBubzhNUXR4SkZZL3hGZ1dRVEMwNVY4blhrRDNHcFQ3ZTVjc1lHazdDdGtlV2NqMlhlandIaEtzTWpmRkdqT1hZZzhtWUEybXVReDlOWjZMT0thTDNIdXRCZXNreTNsS29aUGU4Q3lEbXNlQ0hOZGFZNzkyOFd4aDRqVXJzNGlZVGpyYXFQYVAwZXJYMUowbk9RZjZldEtXbDQ0ZjdoTHUxOTBabGxTeXl3VnJiSjBvWkxIZE9WSW4yRnlLVXpBQnErZ1JyMVQzek1XcUVPVEJ5SnZhUmVoaW1pMmxlekJ0dTVESmxLd3dsNU01dEdESk9zVy9YTGErbWlJMmdwNndvSTlqcmRvdmx1OFI0VGVvaFV2M2t1MG1iMU0zMUxXUVNSYnRwS0srbzdqV0dwWS81R3RPWXFoUXhzcTA5U1gxSk9XZTN5VWtjZXo2c0gwOUxyb2p1dVZ5TnZJZUtpemdzbHZSeFd0Y1hJcmFkV2tpcGpBQlV6VEVLeFhwVkRlMUpHalU5ZmhTbXEwTG1WdzZ0cFhHZVBuU3VwTDNiVk1LbG80L2lIaEpqM2cwRFloR05TYnhZYUpvT0ZVQ1IwdTRXdUpsTjNxZ2Rvbkx1aU5rdml0c2RmeE0zank2NnhBVkkweUtrZmZYMXY4V29mTzZUeENqY3dTWDRTNndxenFyMThsaVZ4UXBjUG0rM3BmejduSTg3RWlwcTF6bkptSUtFN0NJNzk3VXFjRjBGTk4zZE9yeEVTMnNLRkl5anV1Q1drVFFDdkdpSzFoNjRMS3VsVGh4RVBOWUdwSUpJZ2I1dUNWVzBlc3V0QnQ3TWhOYzVGck0raFo1dzlpdXVhYmxyOFNyRmpDZCtDSmVFeTFrWW9YcGUxM0VTMXRoblVvN1BpUjdwSG5HNHBjN0pzZUZ3VVFNTUFFRCtzVUxWWFVhbFYzb0tjYUZuSTlXbDRpVlpCQVdBa1pYdkNhS0Z0MzR3NmpGUytnUk1ibVB0Vml0MFdOMVZXNGZvNlMrWGxyWGZ0OWoyUmpyTlRmSmZhMEZyRTZ6UHlTSWpyUUxlNVRKVzdXWFpac2NmdEJXbUlRcHBQT3NCVlJpdlpxVkY3R1ZGN0FlOFVySkdzcDlKOFYyNVlJOFQxbEZRNmZBYXhGckpXWG9zVjJ0ZVppbXhSOUcxWURVVExERWxFZkgzSVZ6b00rdDJGckxnMUZmZTB4d1g5TVZzQ1BDL1h1RFVzajA0UEJpY2JFZDhlcmU5NVVWNWhzZFZhV3VJbUlXRTJQRkJhd3ZZUU1sWHVRNGxGVFBrSVFNYlhGZG9pMWdFZ2RyRFE2ZFJiaTBTMGUrMzJoN3docVhiOXcrbDZJOG5uYmpydVNOM1dEYXRkSjNmdVhCYUs4MW1OcHAwZ0ltcnJ4MTR2eGY1UHU0ZGl0Mnh0WDVmcTlMY2Y5cksweDlQeTFpOGwxV1dzUldWc0Q2RWphb3hNdm5RSzI0REZ2Q2RVbHRYM1E1RGxiWE5Ld3ZYSmtRYjVxMU5YbzNUaDh6Q3Rta0czY2x6dE10MG51T1Z1VTZnNGtpQnRsbDNSRXlGOHBLYVl2c2tPN2djT2tJNjNuL2RFcDlrZm5wR3hZWUtpdlNLZkdhNjBrWUdDc3JZQlVwNXRVU0wzTEZlRjB0UTBUck1wVUY1cnVXVjEwT0tsMndmckpvcmF4dzFkVEg3Y3NiZHlYUHlXbXdxdGVYVUhXWVd1NXJXVVRJdkE5aXN1NUMxbUJud2xxMUZKUFdxbVhkbHhhWWcxUjh1ZlVkdmZweU1sWnNKYTJ3bFJTd1J0eExqOE5JSmFIb2lwY0kxV1hnc2d2RmQyc0JhNGxYUGROeUxWeDlKWG82YnB3RDRCM0F1NEgzQUcrSmo5OUpUb0Zha1N0NHBSdGE0K1paSTd0VDdnRzhGM0F2d2sxOGU5eTNQbnNjTm9tWnp4YVpGcVErTVNzRVRIbGlVdWZWcTMvbXN2VkZ0UjlXV01SV1RzQW1pSmNXTHFsaHVCUEZLMWxkRGk1SDBaSjFxaUx2eW5UNWxHMkVjaG42c3BjMWszQzlEdHdmQXk4Ry9oWjRGZkI2NE01NW54ekRXR0hlRzNnLzRQN0FRNEJIZ1B2SHdCMzlia1hacC9Wa1RYVk8xeHVMRnF3a1hMNGJRZ0NLakZwUEhseXQ2M3pXbHVKS2lkaEtDVmhQeG1HS2UwR2FjREpOVzYvY2hpSmV0eEdFNnphaUd6RUtuTVM5K3BJMUpxYkRxelg3d0t2QlBSOTRMdkEzQkF2cmNQNm54RENNeU52aThxZng4UTVoY3RoSGdIczg4RmpnZnVEWHludTJOb2hrTFIzVWVwRk1ReG1pMDJvVE5KNnVZTWtFcmJKQVdZVm1aVmdwQWF0SUY1Z3I2eHFtbVpKUk1TOGxYcmNSM0lkaWdkV1Y0NmZOcE55YlZmZ2U0SG5nZmdsNFBuRDE5STdkTUl3cDdBRnZpTXZ6Q0JiYUo0SDdET0NUd1crSGw5V0MweGZMYm9sWjBTYkVtRmRUd0lnVFlNWjRtL2ZLR25QNWRmTGVsYkhDVmtiQWVxeXYxbGd2UFVPdENGaHlHOGJsTnArVE9QUllMejFJVVQ1ejZsaXV0NEQ3YWVCSENTN0NlclNpWVJobno5dUFad0UvRHp3TTNKT0FUd1h1VVZwZElocWRNV1JSb0hwajMxRjBKSUhFVTFYRDk5M3lhVEtyc3hheWxZcUhyWVNBdGNSTEoyMVExamFyeFVzeURTOER0MFhMUzZmTnQySmVrOG8veWZmZ1BlQ2VDZndROFBMVE9uakRNT2JLSHNITitFWEF3NEVuZy9zOFlMTzBnbXAzb21RVTlsbG9RQ0ZlM3BXaWRVd3VYbjFFbnRHNW5vWEI1WThhUHlzaFlCWEpuUGNOMXlGcW9MSUxLZkdTcEhHWmJ0WmhQYzZyVmR1c2M2RWVBNzhEN2luQS8xN01NUnVHY1FxOEJQZ1M0T2VBYndIM2o3cEpGVERqMkU2RnB5MWVSeTRJbDU2RklWbGgxZUpZQVN0czlBTFc1enBFWlI2Nm5ESy9ReTRQZGRIbkpBMFJMUkV1N1Rhc3hhdmxOcFQvejZ2QWZTZndUQ3dwd3pER3dCSHdHOEFMZ0M4RDl4OUltWXUxTllaNjNOclc4UzRSTUttQmVBTzQ0ZU1Fcmk1c0owdk1aVGZqU3JrU1J5OWdrVW11d3pSZzJjWHBVQ2pkaDVkUXFmTDBpNWRPMk9qNHR3RitIZHpYQUM5YndBRWJockZZcmdML0RmZ2o0S25nUHFKcmpla0N3YnJ0cmEwbmJYMGw4WEpad0dvaHErTmpPaU55MUl4YXdCb1pQVExYemhyZFdWVjFuVU5kMC9BU3dScXJ4YXN1RGRVNzJlUXU4RjNndnAwd01aQmhHT1BsaGNEamdHOEg5MFhnMThOdWFZdjYwdVdobTd5UnhJc2dWSWVVU3hJeXNudXhHUThicXhVMmFnR0xGTllYY2ZBZ0t2YmwxR1NVdEdzZFhuQjVrSEpkVVg1U3pJdDNnUHNxNENjWGRiU0dZWnc1N3dDK0FuaHA3TGllYTF0am50d0dGeFlZWmR5ckpWNkhCS3ZzVUlzWVpaYmk2SzJ3MFFwWVpYMFY0ekI4WlgzNUtubUQ3cFFvOVNEbE91YlZGSy9YZ2Z0QzRQZE84VGdOdzFoT0RvQ25FZEx2bndidWpuNlg0am85NGtWYnZBN2ljdWpET2xscExvdVlMajRNSTdYQ1JpdGdFVzE5eVZpTW9tUVUzWEZmcllrcFd4WGwrNFRMQWJ3YzNCZGpXWWFHc2VyOERIQVg4Q1BnN2xtS2lvNko0WExGalpZTFVRdlhQbkRnNE1DSDlhRlhsbGlWMENIQ09FcldwcjlrZURTc3IwN3FQR3FPTDdMMXBXZFcxdE9oRkFrYnJqRi9qL28vdkFyY1oySGlaUmhHNEZlQkp4SkNDbkZYMFM3UjlRenBZVDNuQ0dHTVlwWjM4UXI1MkxGMjVSalVOS2VZV2tiSEtBVXMwclMreUduenFlcUdVKzVEWDEwa2RCTTJKZzVTZmhPNGYwbW9YMmdZaGlIOE52RGx3TlVKUTN2b2l0ZzJXY1IwSjd2VnVaNFVrd2VhaVcyRFpuUXV4RmJtSVkyQnl5NExtQ1J2MUl1K01QVEYwUnZ6ZWhlNEx3SCs0SFFQMFRDTWdmTHpoQ2xiL2p1aGdZbElHd1U1c2VPWTBPYUlHMUhpWGZzK3VCQjNDVVZCWk5uM3NPL0NzS0FiUG1ZbDBvaUZuZW9CTHBqUlcyQzE5VVVlK3lYdXc4S0ZHSmR6cmpGSTJaWGlWVXg3Y0FSOEkyRkFvMkVZUmgvUEFMNnZiWVU1eW1sWDZqaTl0Rk82dlNvNjJyNmN1cWxaNVg1TVZ0aFlCVXhmSE5yNldpZGFYNVFYaFRiUnp4R3NNbTE1RmI1bEd0YlhqNEQ3d2NVY20yRVlBK1lZK0daQ1lZTzRxeGF4b3RBQ1pYc2xDV2ZuWGRsMlNWdTFSWnp4UFNhc1NTZCtsTEd3VVFsWUszbkRoVVhHZnhXVk42aDZOYTcwS2V0cFVTYU85ZnB6Y04rNGdPTXpER01jN0FKZkRieStQNmtqalZkRlRiSkxicHVrOElKdXIxSlZJTitlYTJ4MGpFckFJcTNBNkJyaEI5MmthNEVsTjZJdkx3UXRYcTI0RndCM2duc3lZY0pKd3pDTVdYazU4SFdFd0Zha2xUSGRLWGxIN25qcjlxdXd3TWd6UDhzMExxTjBJNDVSd0FUblZmVU5WSGFQdUFkZDE0VzQ0N29sb2lhTzkzb0dvZmFaWVJqR1NmbDU0TGtUc2hKcks0d2MydERpdGVONnhxbU9QYVYrTkFKV3V3KzljaC82aGpsT0NIaDJMZ1RmdUFqb0NZYStBdHhURjNCc2htR01reHZBVXdpZUhMVTdpVmhsaGVuYXJiVTdjZHVWaGNVM0NMR3dOUitXVVFtWE1Cb0JpNlFlaHNzWGdMZ1AwL2d2bENtdS9NcmFCSjg2cjljQjhDMkVtbWVHWVJnM3k4dUE3ODRQT3drZFRpV2cwV2pEeUJtSXV2M2FqRWtjbzNZamprM0FoT1ErMUFrY2NmeVhqb0ZKSGNSYXZLYTZEbjhYM0M4di9MQU13eGdqUDBJby9LdDI2VmhZSFFiUjdrUnRrU1h2VVd6dk50VDdhemZpS0JpamdEWGRoMTRGUW4zNWcrdUxvR1Y5eVlXVWZ2Z2JoQjdUN21LUHl6Q01rZklXNE9uNVlTc3pzVFUrckNOZXNYTys2VlViRnR0QlY0ZFpUdk40RnNVb0JNeDNmM0RJb2lNaVZ2ZGVpc1YxTGEvZTJOY0x3UDMyYVIrVVlSZ3J4YzhBcnk3Yk1sbW5UR3JLZHF6VGx2a3FCa1pNcDNkbWdTMDlUbTNVR1lpNkFyMHMydnFTSDM1U3FTaEgrRXllVHFpOFlSaUdNUy91Qkg2ODNOVWFFdFFVTVpjNzRzVWt1eTVhWU9RMmNUVGlCZU1TTU1naUk0T1hKUWJXc3I1MEQyYWE5Wlg0YTNCL3VKaGpNUXhqeFhnZThOWkd4NWwrVjZJTVhDN1dLT3RMRnBlVDI1SVZOblJCRzV1QTRjc2ZLYVdoVG5BaGRreHUydVdpSE1DdkFXOWU1QUVaaHJFeXZJVG11Rkp0Z1UxeUphYTJUQTBia25GZ2F3MnhHclI0d1FnRXJDLytwY3FvU0JKSFNrTjE1WHFER2NWckQ5eHpGM05ZaG1Hc0tMOVVQdXkxd3FwT3VWNXZ0Skk0b0ZNWGNmQU1Yc0FpbmZnWERiK3h5ejl1MDl3bUMxN3pSMzRGOE1jTE9CakRNRmFYM3dUZTJXMS9PbFpZSXptdEVESEtEcmwySVk2R3NRaVlrTVRMcWQ2S0wzc2xyUis2aUgzMVRVUHdtNFJLMG9aaEdLZkZuWUNLcytzMnFOTXhWNVU2dE10UXQyZTZsRlFyblg3UWpFbkFYUHpqWE01QTFCYVk5aHUzaEt0WnJGYysyNFA3WDRzNENzTXdWcG9qNEhlNnUzWEh2UFl1MVcxYjBhYjV0bkNOd28wNEpnRnJ4Y1BFSmFpbko5QS9kaTFldmZHdk53Q3ZYdGlSR0lheHl2dzFjRFUvVEVManUrS2xSU3d0VGlWdnFOZExnWWRDdUlac2tZMUZ3T29mT1AzSXJxekdvWDNHUlphT2VuMHovdlV5NEkwTE9SVERNRmFkdndkZVcrNmFKYlUrZGRMRkErVXJyOUxZTWhISEltQ2dYSWc2MDBiOWtPdmtXWlcxMVZWa0h2WlZiZjU3NFBwQ0RzTXdqRlhuVGNBYmU4SVphcWt0ckxVcWRGSjB5bDIvaUEyV1FRdFkvVU1vMDdpMnd0YlZEMTJiMjMxdVE5MXI0UlduZlRDR1lSaVJJK0NWM2QxMSsrYVVoZFVSTHYwYU42RnpQbVFHTFdDUmpqKzNjZ05LQ1pVKzRXckZ2Z29Pd2IzbU5JL0FNQXlqNHUveVpwMkpxUGRKMWFGYXhKeGF0eGlGbUkxQndCS05MSnZXRHpwSnVPcUxCTUR0RVpJNERNTXdGc1hmOXovVjZhRFgreWE4WmxTTVJjQUt3V2xZWVMzQldxdWVieVp2QUJ3QWJ6M05iMjhZaGxIUlNCcnJpNGVsN1VZU1d0R210YklRaDh4WUJBeTYxcGVzK3pKM3RPbmQ5M2tPNEpBd3VOQXdER05SdkwyOXU5VmVUYkxHcHIxMzBJeEp3QW9hWThJbW1kVzkxaGNFQWJNTVJNTXdGc2w3ZXZhN0NXMVZIMk95dWpTakVyQ0dlWHhpRTd2eG1JUFQrYnFHWVJpOTdFOS9TVy9uM0hYYnUxRXlLZ0ZUOVBtS0o1cllmYjJVdzlQNGhvWmhHQk93anZOMHhpcGdOMk15OTc3ZTMrSjNNUXpET0NuVzdreG50QUlXYVpuU2ZZdGhHSVl4SU1ZdVlJWmhHTVpJTVFFekRNTXdCb2tKbUdFWWhqRklUTUFNd3pDTVFXSUNaaGlHWVF3U0V6RERNQXhqa0ppQUdZWmhHSVBFQk13d0RNTVlKQ1pnaG1FWXhpQXhBVE1Nd3pBR2lRbVlZUmlHTVVoTXdBekRNSXhCWWdKbUdJWmhEQklUTU1Nd0RHT1FtSUFaaG1FWWc4UUV6REFNd3hna0ptQ0dZUmpHSURFQk13ekRNQWFKQ1poaEdJWXhTRXpBRE1Nd2pFRmlBbVlZaG1FTUVoTXd3ekFNWTVDWWdCbUdZUmlEeEFUTU1BekRHQ1FtWUlaaEdNWWcyVGpyTDJBWVkyUXRMaTQrOXNCeFhBekRtQThtWUlaeGkrd0FEd0xlRDdndjhFRGdYc0JGNEFKQnZLNEJkd0Z2QkY0SnZCNTROZkIzd05IaXY3SmhqQUlUTU1PNENUYUFSd0tmQWZ4RGdtaTk3d25lNzhrQzlpZkFzNEdYWVdKbUdDZkJCTXd3VHNDOWdjY0RYd2c4RE5pdW52ZEJtNmJpd04wZnVEL3dTY0JYQTM4TS9CandHOEE3NXZSOURXUE1tSUFaeGd4Y0JyNE0rQnpnRVhHZkJ6K0RXbmx5S0V6dkxONTZIdHpIQWg4TC9HL2dHY0N6Z01OYitkS0dNWElzQzlFd0pyQU9mQnJ3TzhCM0VNUXJDcGNXSUY4dHgycHBQZGFMZklDWDVWSEFqd0MvQlR6MlZJL09NSWFOQ1poaDlIQTc4RlJDZk9yRDZRaFhMVVJhcUdyUjZsczhwYWpKQjN2QWZ6VHd5OEEzQWVkTzhUZ05ZNmlZZ0JsR2c0Y0R2d0o4SmJBNVdiaHFVVHFhY2VrVHNVTEliZ1AvTGNEUEVESWNEY1BJV0F6TU1DbytDbmdtSWNHaXgxV290L3NFcUJBamNoek16YkFVNy9IZ1B3M2NmWUVuQWkrOTFRTTBqSkZnRnBoaEtENEYrRVU2NHRXeXVzU1N1aUdMQ3prWGg4QkJZOW12SHN0cmI5QzF5cHB1eFVmRTd5WkpKSWF4NnBnRlpoaVJ4eEN5Lys0b3N3c254YnFPSFJ6NXVPMnpDTFVTTmJTRnRhYVc5ZXF4WGpUT2cvOUFjRDlOU09WLytSeVAzVENHaUFtWVlRQVBKYVN0MzRmQzc5ZG5lWWx3SGZuU0VrdlAwN1dpdEhpdHEvVkdYT3RGM3JlbTN1T0pJdlpnY0Q4QlBBNTQyOXpQaEdFTUJ4TXdZK1c1Qi9BOXdQM29kUnQyRWpTOGNoMlNYWUdGTzlDcDVBOFh4RWRiWFNKZW0zR3RGM21lK1BwalZBek5nMzhrdU84RS9nMndOK2Z6WVJoRHdRVE1XSG0rbmpDQWVKcDRPYmpoczJEcHBZaHB4ZGNkKzJ5RjRVdnJTNFJxRTlpcTFzZHhyYitMaUpsRFdXS2ZEKzVQZ2UrZit4a3hqR0ZnQW1hc05COEgvTHV3T1VtOGJrU1hvUmFzZldEZndZRXZFelFPNCt1T1hCQXgrVnl4dnBKNE9kanlvUnJWTmtFWXQ4bWl0eG5mdDY3V3g2alkyRHI0YndiM2ZFSk5SY05ZTlV6QWpKWGxNdkRObE9aT3BJaDVLZkZLd2tYdzNPMzZzSlpGWnhqZTBCWVl3WG9TNjJ0TGlkZE9YSFJHNHFUNG1kN0hIY0EzQWwrTUZRSTJWZzhUTUdObCtUekNtSzhKcmtOeEc0cDQ3UUY3TGdqWExuQTlMcnR4RVhFN0lDZDFTUHhLQkd5VEtGNE9kbndvc25HT2FMVlJpbDRmWW9VNUQvNEo0SDRLZVA0dG5RM0RHQjRtWU1aS2NnbjQwbkpYYzV5WGlubUoxWFhkQjlHNjV1Q3FEMU45aVpEdGtRWHNrSElPUyswKzNBYTJvM2lkSnd0ZW40QkpOcUlzSGpYZytSendyNEhmVnYvTU1GWUJFekJqSlhrY3VUQ3YybDJYaGpwQ2lWZTB2SzREVndqaWRRVzRTaEN4YTJRclRBVHNpRElHSmhhWXVBN1B4ZGVMKzdCMk9lb3hZNDVTeU5MclBQakhnZnNJNEVWek9EZUdNUlJNd0l5VjVJbmx3ODU0cjBiU3hsNFVyNnR4dVNzdVdzUjJ5Ykd3V1FUc1BHWHNTLzUvUGRoWkw4MVkyQ2J3K1ppQUdhdUZDWml4Y253WXVicTgybDFrSHFweFhwSzRzUWRjZDNBdFdsNTNBZStKYXhHdzY0VE14SDFDN0d5YWdJbnJVS3d2eUxFeVBWWk1qdzNUNDhJS2QrTEhFR2FGZnNPdG55TERHQVFtWU1iSzhWaEM5bDVVRnAzdFY5YzUxTWtidTRUNDExV3lnR2tyN0ZwME1lNzVNcWJWRXJBdHN1dFE0bDc2TlhxY1dEM1FXYWZUSi9IeTRCOEU3aDlpQW1hc0RpWmd4a3F4QmZ6ajlsTjF4UTFKM2hBTFRMSU9yNUhkaUZka2NkMFltS1RmRndMbVlNT0hyMUVJWEt6VW9hdHpiRlhMSVZuRW1yVVdOK094UGZjV3pvOWhEQWtUTUdPbHVCdndFZlM2RDczTFJYbTFnQ1VMakRJRDhTcHdOYm9WcnhFU1BmWjlZeHlZZ3pXZk14RjF4aUZrOFJMaGtoVDduZmg1MjNHL1dJWlNMN0hEWStLSEhON3ltVEtNNWNjRXpGZ3A3azJZR0xKeUg2YkZxK29iNUJoWWJZVkpLbjNhZGpHQnc2c0VEbGRtRmE0UlJFenFKQjc3dkYrTDF3N1JGUm5GS3cyTXBueXYvdDRwcGY3aGhBSGE3NXpmS1RPTXBjVUV6RmdwSHRqL1ZPMUNsQmhZc3dJSHNPdUNZTzBSMXZ2QWdZdnhMeCtuV1hHVmdJbjRWT0lsWThOMFZZOTlYNmJZcHlMQnZ1cytsQVB3TzNIaVN4TXdZeFd3Q1MyTmxlSUQyN3M3YWZTVTA2Um9LMHhpWFBzKzFrS2tPMEZsc1loTFVvb0J5OFNYTGd1ZS91eWlycUw2bkw1cFd0RGJHOENEYnZyc0dNYXdNQXZNV0NudTFkMlZNaEJkNlVMVXlSeDFCZm9rV0Q0SVVVdXdqc1dGR1AxN3pzZHRIMXgrTjJMY3ExWGR2aFpDUFdOengrMkpjaUc2OWpFYXhpZ3hBVE5XaWt1enZheXV5RkZZWkM2WG1aSk13eVBLNnZNaVhrVmxKOWQ5VGhKRytwWmtjYW01eFRxdVEvV2RIY0RGR2MrRllRd2RFekJqcGVocDNIMzgwM0xORll1MjBuUXloUWlNNjRwTThYblY2NC9WNTJuM1pSSlErVnpmRmExbUZ1S0VZelNNMFdFeE1NTlFMcmdUdkg2Vzl6UkZ4MDBRSDhNd1pzY0V6RmdwZGljODUwcGhhdFlqOUkzdE9NYkx1VndWUTFlT0wvNUZITENjbnZmZElyMjYzdUdhdk5ZMVB1dG1qdEV3eG9RSm1MRlNURWd2MThKU0M5YzZzT0hLa2s2cHRKTVBGVGFrVHVHYUt3V3NXRVN3ZlA3Y291Nmg2OVkrWEtjVXpqN3JMKzJ6RkhwalZUQUJNMWFLTjNWM3VXcGJDMWhSbDlESHdjWXVERGplVk11R1Y2TGpzNWk1eG1ldU9TVmVycXg1dU9saDA1WDFEM1VSMzlwYTY0aVpieCtqWVl3U1MrSXdWb3EvYmU5dUNVMnJMcUZNUkNuVjVMY0o0N2EyVU9uemxCVTRkS0hlTllMQWJSQ3NyU1NLNUhKUld6Ny9QeEUyYlkyMWhDdHRId0d2T3ZGWk1ZeGhZZ0ptckJRdkl6VHkwZldncHlQUkFsWlhoQmVCa1Vrb3p4RkNUZWRRQTQ2ZHFyN2g4K2VMdUdoWDVLWVB5elo1MmFtV2JSZkVURmVrcitjRks2d3ZCKzVkd0t2bmNhSU1Zd0NZZ0JrcnhkdUF2Nk9veUtGRlRGdGY2d1IzM3Bidml0ZDV5b2tyYnhERmk1enk3bHplSjhWODY0SzkyejUvcG56dU9VSVIzeDJmclRMdFVwem9Rdnh6TEluRFdCMU13SXlWNGozQUM0RUh4OG9ZY1hmTGhTaHhMN0crenRFdTlWUVUycVg4VEpsOEVrTHNhME5aWGpzaVhnNHVlTGhBWHM3SDU4Uk5LUUpXeDhNNi9FSDhNb2F4Q2xnU2g3RlNIQUYvUkRFUVM2Zk5PNExRMVBFdmNldWRKNHFNQytPRkx3SVhYUlFkbE9oRTYyckx4Y1dYbHR3T2NENis3eUxsT29sWWZKM0V3MFRBYWhkaXNzS3VFc1RaTUZZRnM4Q01sZU4zZ2RjUnBsV0o2RGlWOThxRlNKNTg4aHlxYnFGdjFENUVXVjh4N2YxUXVSRFhZenhMckRteHVpNzZVT0hxSW5sZGlDRmxNa2N0WG5JQTdxK0FsOHpsREJuR01EQUJNMWFPVnhOY2JVOHMzWWhRdWhFM0NPSWpFMG5XVmVaYk5RdDFBb2Q4eGhHQXo4a2JPMlNMNjFLMVhIUkIwQzR3bXd1eEVMRmZBOTQ5bHpOa0dNUEFCTXhZU1o0T2ZBNUJHU2pqU1dzRVVSTTNvaTdrTzYzd2JqM1AxMkY4RGtMOGE4dkJ1U2hRbHdoelQxNTJjTm1IN1V1KzY0NlVKSTZXZUNYZUR2eVBXenduaGpFMFRNQ01sZVJQZ2VjRG41cXRzTHFFbEJheExkclY2Zlc2dHI3V0NmTjlIY1hxRy9JNTU0aldsd2lYaUJjcW5oYVRPT29zeEdic3k0SDdTZUQxOHo5TmhySFVtSUFaSzhraDhGVGdvK2xVYjY4RlRGZUo3eXdxVmY3WWwvTjlyUU1ITVQ0bUFyYnRnM1Yxa1dCdFhVYUpGeUV1SnRhWGlKZE9uOWNKSEluWEVpeEt3MWcxVE1DTWxlVVBnV2NELzdKcmhZSEswSFhkdWJpU0ZlWkxRZE1XMkNZaDVWN1M2Q1dCNDN5TWMybnhTZ0pHemo2c2t6ZWFzUzhIN3VuMFZoZ3hqRkZqQW1hc0xFZkFOd01mQzl5L0sySWlZRDZXZm1vSldHMkZTVUtJRElMZTl3MEI4OTBFanBaNGJjV2tENTA2WDhTL0hMZ1hBTjh6MTdOaUdNUEJCTXhZYWQ0QWZBUHdZd1MvblVKbkpFSlh3SktRS2ZFU0FWd25pTThCcFF0eEp5WnhhQUZyaWhkVmdXRDFmUkp2QmI0V3VENlBFMkVZQThRRXpGaDVuZzA4RFBoUHBSV215MHRCR1EvYml1c2psd1hzdUhyUEprSEFDZ3ZNNXlRT1dlb3hYenBwbzVWMTZBQ093UDBuNEVWelBoZUdNU1JNd0l5Vnh3UGZCandRK096K2VGaWQxT0VweGV0WXZYNmRJRVFpWUNtSmcxenpVS3l1T21takZxOW0zT3Vwd0kvTzhSd1l4aEF4QVRNTVFtWGVMeU9veCtOblQrclFscGNlRUMxbHFBNHBCVXpTNkVYRUpvbFhiOUxHOXdIL2VYNkhiaGlEeFFUTU1DSjNBbDlLVUlwUGI0OFBjK1NxOG5VeWg0OHZjajRMMkExS0Fkc2sxMElVSVp2bU5pekU2d2VBcnlFb28yR3NPbGJNMXpBVTd3RCtCZkJENFdGSHZDaW5XeEdyS2syMzRyTjdzRk1taWpKaG94QXYxN1c4aXRqWEFiaHZCcjZLa0p0dkdJWlpZSWJSNFM2Q08vRVZoTVNPMjl1Vk91cDRHT3I1RGZJMEt5a3pVYVpUSVF0WEsrT3c0elo4STdpdkEzN3F0QTdZTUFhS0NaaGhOUERBZHhGS1RuMEg4QkhnMXNOVDJtdmhWZmtvSWMwbFJraWhUNW1KUGxmVkVKZGhQVkZsWVhVZEFzOEg5dzNBLzVuN0VSckc4REVYb21GTTRBWEFKNEg3c1hLM2lNeDZyREl2Z3JWTk9YdXpUdFNRVkhrOXgxZHYwc1lOY044QlBCNFRMOFBvd3dUTU1LWndEZml6YmxKRnFvNVJpWmlPaWVtRURkbXVheHcya3pZT2dCY0VJVE1Nb3dkeklSckdES2diUmFmV1M5VU5vbnRRaEUxUGNDa3V4RG9KUksrYlJYbzNUK0U0REdOTW1JQVp4c25SOVJLUEtVczlIUU5yVlFGZy9mcGFzSnFWTmx3bFpvWmhkREVCTTR3WmNUUm5jSllxSGZKWUVqWmEyWW5hRXV1TTg4TEV5ekJPaEFtWVlad0FKV0s2WGlKa0laUDl2djMyNWlMUG1YZ1p4Z2t3QVRPTUUxS0pXUFZVUjd6cTEzVkVxL0U1aG1ITWdBbVlZZHdFbFR1eEpXVFFIUUJkUCsvVURoTXh3emdoSm1DR2NaTk1FYkcrZlozOUpsNkdjWE9ZZ0JuR0xTRGlNMFhJcHI3Zk1JeVRZd0ptR0hPZ0lXUlRYMnNZeHExaEFtWVljOFRFeVRBV2g1V1NNZ3pETUFhSkNaaGhHSVl4U0V6QURNTXdqRUZpQW1ZWWhtRU1FaE13d3pBTVk1Q1lnQm1HWVJpRHhBVE1NQXpER0NRbVlJWmhHTVlnTVFFekRNTXdCb2tKbUdFWWhqRklUTUFNd3pDTVFXSUNaaGlHWVF3U0V6RERNQXhqa0ppQUdZWmhHSVBFQk13d0RNTVlKQ1pnaG1FWXhpQXhBVE1Nd3pBR2lRbVlZUmlHTVVoTXdBekRNSXhCWWdKbUdJWmhEQklUTU1Nd0RHT1FtSUFaeGd3Y0xmai8rVFA0bjRZeE5FekFER01HcnJGWVFUa0VyaS93L3huR0VERUJNNHdaZUFPd3Y4RC9kdzE0MHdML24yRU1FUk13dzVpQmx3SlhGL2ovM2c2OGZvSC96ekNHaUFtWVljekFPNEMvWE9ELyt5UGdZSUgvenpDR2lBbVlZY3pJenl6by94d0RQN2VnLzJVWVE4WUV6REJtNUxlQmx5M2cvL3d1OEJjTCtEK0dNWFJNd0F4alJ0NEFmRC9CUWpvdGRvR25FcEk0RE1PWWpBbVlZWnlBSHdkKzZ4US8vNW1uL1BtR01TWk13QXpqQkZ3SHZnSjQrU2w4OXU4RDN3amNPSVhQTm93eFlnSm1HQ2ZrbGNBVGdiK2I0MmUrRVBnaTRNNDVmcVpoakIwVE1NTzRDZjRNZUR6d2UzUDRySjhIUGhONDlSdyt5ekJXQ1JNd3c3aEpYZ284QWZoL3VEbkw2ZlhBa3dpVzExdm0rTDBNWTFYWU9Pc3ZZQmhENWgzQVU0Qm5BVjhDZkR6d0VPQkN6K3Z2SktUaVB3LzRDVXk0RE9OV01BRXpqRG53U3VEcmdEdUFEd1llQU53WHVEc2g3ZjRkd09zSWNiTy9CcTZjemRjMGpGRmhBbVlZYytRZGhMalk3NTN0MXpDTWxjQmlZSVpoR01ZZ01RRXpETU13Qm9rSm1HRVloakZJVE1BTXd6Q01RV0lDWmhpR1lRd1NFekRETUF4amtKaUFHWVpoR0lQRUJNd3dETU1ZSkNaZ2htRVl4aUF4QVRNTXd6QUdpUW1ZWVJpR01VakdMbURlZzlmckNZdGhHSVl4SUVZcllQN2tvbVFpWmhpR01TREdLbUMxR0NWTHkwMnd2UHBFYi8wMHZxRmhHTVlFYktxUTZZenFIUG11S09uSExWZGkvWnJXWTdaTzVkc2FobUgwWSszT2RNWnFnZUc2QXRWWjNHUWhTMndCbTZmNmJRM0RNRW91VG45SmI5dldpUDJQa2pFSldHMUZ5WHJxajB6N0IwNzdONEc3bmNwWE5nekRhSE5Iei82YkVhV2J5QWtZQkdNUnNFSzhYRmVjanRXNlh2VHp6UXRqRTdqOU5MKzlZUmhHeFh1M2QwL3FiRStNOGZlOGQ5Q01SY0NBd20wSXBXRDFpWmQrdm5ZbnBzL1pBZDczVkwrNVlSaEd5ZjI2dS9xUzA5TDJ0QmkvejY4WkJXTVFzT0xIYUZoZjNtV2hPbExMSkNFcjJBWnZBbVlZeGlKNS8vNm4rbUw1czhiN1I4T2dCY3oxL3lDRis5Qm44ZW9Uc2I0ZkhnZ242VUduY3dpR1lSaE5QaWh2dHJ4RE9wYmY4akxwMEVpTFVRamFvQVdzd290NXJIb2J4NjRTTDFjS21CYTFZOXFaaVFBOEFCc1BaaGpHWXJnTTNLZTd1eU5lYm5wODM3dlFpUitsRlRZV0FVcy9paFl2c3ZXVkxDL2ZGYkRDbmRpWG1mZ2dlb09xaG1FWWMrWCt3UHYxSjJMVTNxVzB1SWFRU1pzbXNhOEpucXZCTVJZQkE1cGp2K3JZMXcyMXRFU3NOd0Q2WU9EZWl6Z0l3ekJXbmc4QTdsbnU2Z3R6RkdFUjZhQzdVdEJTTzlZUXIwR0wyWmdFek1jL0tZa2ovbGhhdkFvUmM2V1FUVXJtOER2Z1AzeFJSMklZeHNyaWdFZFROTTYxaDBsM3pPdTR2aGF5MmtMenFuMmsrc3hCTWlZQmd5citwZDJIcm11QkhmcTJOZFpLNmdEZ1V4WjRJSVpockNZN3dDZDBkMnMzNEVtOFM4Y3VMTDR4ekdpd3dpV01SY0JhUFlyYXZDN0VxMXJMano0eHBmNGpNVGVpWVJpbnk4TUpJWXVJYm9mcWhBM2RNWjhvWWo0bnRkVkNObWdHTDJCMTNFdGxJa3JQNDVoc1VoKzZJRnF5M0lqN2FoSFRLYWpwQXJvZC9QKzF5SU16REdQbCtBeGd2UkhHb0NGZVBvZENkR2U4MlNsdnVRK0h6dUFGckViMU1Md1BQMXBoZ2Zrc1hnZkFnU3RkaWJybjBrbm9XQU0rRmRoZTZCRVpockVxdkRmd1Q4cGRXcmdLcjVMUGJab0lXQkl4SGQvMzBmS0N6cURud1RNMkFTc1NPVlFtemhIaFJ5M0VpeUJlK29jdi9NWTBmdXlQQmo1a2dRZGtHTWJxOE5IQVEvcFQ1MXNoa2NQRzBySENsSWpWbnp0b3hpWmdFSHNaVGxYZ3FDd3NMV0w3S0RGRENabnZ4c0k4d0czZ1AzZkJCMlFZeHZqWkFKNUltZ2VzbFM0dlM2Y3RjK1U2dFdNNmxLSXp0Qm5KbUxBeENWajZZZW80R0xISDRrdnJxN1YwTERGS0M4d0RmQUZ3MzBVZGxXRVlLOEVqZ1UvcGlYdnBkb3h1Ui96QXg4NjR6NTRsY1M5S1o5eVBMWUVEUmlKZzlZOGlZeVVrQnFZeWRlUkgzNitXV3NEcUFHZ25tZU5KQ3pndXd6QldBd2Y4ZTRweWRVWHN5N2NGYkthT3VNdHQ0YWppWHpBU0FhdW9nNVdTeUNIQlRmMURGeUxtVG1DRi9kL0FCeS9xaUF6REdEV2ZESHhpbFZHdGxsYmNLN1ZmcnQwUkw4SWhQZVBBQnMvWUJDeGRBR3JjUTJHQitlckhCL2Jpc3U4YlBaaXF0bGo2MGU4Ti9xc1hkRkNHWVl5WDg4RFhBcGZDdzc3WWwvWWkxWjN2UFVvUk95UjAxb3V5VW1hQkxUSFZlTENtRzFFRk92ZGRGaTc1OFdXdFJTeVZaS0Y3WWZINTRCKzNzQ00wREdPTWZBbncwVlBHZktIRXkzVTczN29kRTAvU0RSOUVMTGtQNjJyMFk0aUhqVWJBS3BJYlVRMWtsaC8wME1lZ3B4S3hYYXFMZ0d5R2l3WFhxZEN4QVh3OWNNZUNEODR3akhId0lPREorV0hMK3Fyajk1S3drZG91cjlvdUY1NlhnZzNKQWh2alZDb3dUZ0ZyWmlNU2ZraWRpYmp2dXoyWXBvajUvZ2t3ZVJUNGIxam80Um1HTVFhMmdHOEY3dGR2ZmRWeHIyUjV1ZHp4bHM3M1Bqa01vdVA0cmZKNG94R3lVUW5ZaEd6RVZIYUZyaHR4RjloMWpZdUJhSXJUTFROVlhBaFBBdi80UlJ5Z1lSaWo0Y3VCSjdRVE4rb0J5enJ1SlZhWHRGZEZ1eVdKYUw1L1BDc3dEdmNoakV6QUtqcCtaRlV6N01DWHB2aXVoK3VVRjBRbkhrYlB2R0Zid0g4REhycXdRek1NWThqOEUrQWIrOFVyVlE5Q2lWZU1mVW43VkxkWE9oR3RDSDM0VXJ4R0lWekNXQVVzWFJEYUNrT1o0MDZKRi9saXVBNWNyNnl4SWg1R2p5dngvdUNmQnR4dFFRZG9HTVl3dVIvd05PRHU1ZTZpcysyN3JzTTlYNHFYTENsK0g5dTBOSlpWRXRER1Z2OVFNem9CYTgxNW81TTVuTExBNklwWWNXRzRNaVpXMTB6c3VCSS9EdndQQXhkUC9TZ053eGdpOXdLZUJUeDRzdXRReEtzZTd0TnBwMXdXc1gyZlMwbEpDbjFuK0ErTXgzMElJWkZ1ck9nTFJNWkJhTC95QWFIWHNnVnNSeGZpZHR5VzlSYXdTVGhQR3dUQmw4V3AveVVkQWZkWjROOEY3c3ZqUHpFTXd3QzREZmhoNE5GZDhlcE1rVUlaOXhMaHVnWmNjM0ROaCszcjBTcmJjMUhBWXBKYW4vVTFHdUVTUmlsZ0xtUWZpc0NraThUbFFwaUgwUUxiOUxsbnMxMHR0WGl0MHhVd1dmU0Y0ZjRWK0x2QWZWUDhZTU13VnB2THdOT0JUNTBnWHBUaXBhMHViWGtsOFVLNUVMMXlIN29WU040UVJpbGdpcVlWNXNxTFpKTndFV3cxbHMyNGJEaFk5MW5FUkxnMDJoM3J2aHI4N2VDK0VyaDZLb2RtR01ZUWVCK0NlRDJ1N1Rhc1hZZWRqRU9pNVVWb1NxNnA1VHJkWVQ4clkzM0IrQVZNNkx0UTFnay8vZ1packxhcTlTYXc0VXNMektIY2h1ci9GQ0wyUmVBdmcvczN3RHRQNTdnTXcxaGkzaC80Y2VDeHM4Vzh0T1cxNTRLTFVBdldWYktJU2JLWldGOEh4SWtzbGZWVnhML0dabjNCaUFWTXVSRnJLOHo1VXNSRXdIYkpnclhwZ250UnV3OWxxUzJ3aVpiWVo0Si9iM0JQQmw0ODMwTTBER09KK1dqZ2U0RVB2cm14WHRkOWpudGRCYTVRV21BcC9rVTVzN3l1SERScTZ3dEdtSVdvYVdVa2tzZFo2SXRHWi9oY0E2NzZmTkhJaFpONlBuVEhpZlZWci9jQUh3WCt1ZUMvZ0s3YUdZWXhMallKNWFHZUEvNEU0bFZuR2w1enVkM1JiZEJWbFBWRnQrQkNQZTRMR0tmMUJTTzJ3Q3JreHp0MlFVT09BS2RFYkYxWld4c3V1d3pYWGR0OTJJcUIxUlJ1eHZzQVB3YitROEg5VitDdGN6dzR3ekNXZ3djQ1R3RStyNy96N09sbVErdHNRNGw1MVozb1pJRzVQTXhISnJFc1NrZTVGYkcrWUFVRXJNcEloUERqRXQySWE0UWZmODNCbWcrUEpWbGpuVEp4WXhZQjB4ZkxXclZtTGJnUy9jZUQreS9BY3doWHJtRVl3K1k4WWFiMi93QzhmN2ZxaGM0MmxFem9QZy9RVmVDcUN3SjJsNE83UEZ4eGNDVUsyalZmSm04VWlSczB4R3VzMWhlc2dJQXA2aDZSakx0d1hva1hXYkRxdU5kSnhNdFRUSzVheHN3ZUJ2Nm5nZWRFYSt4UGIvWElETU00TXo0UitCcmdFOXBXMXpTM1lUM082eXBCck80aWloZEt2Q2lyYjZUWVZ5TjFmaVZZQ1FGckpYUzRmRUc1ZUJFNFpZV0pnSzBSckRQbnA3c08rMUprdFFBV1grc3p3RCthSUdUZkI3eUNhQjRhaHJIVWJBQWZEbndsOENraDIxaW8yNEZpbkJlVFkrL2lLcnlyV25RQ2gxaGZkZnk5NlRvY3MvVUZLeUpnRFZKTUxKcmVqdXlQZHJWZ1RSQ3Yya1dnMXo0S3A0aVlwekdHN0o3Z3Znejh2d0IrSHR4emdOOGpYTEdHWVN3WGw0Q1BBejRmK0hUd3FnSHRTOVpvVmRqb3RieUE5OGppc2dWV2lKZkxaYU51VUphTldpbnhnaFVTc0lZVkJqR3RQbDVjOGtRU3EwcklvQlN3MW9WYUNGazA2VGZvRjdIMGVlZkIvUXZ3bnd2OE9iaGZBWDRSZUIyaHUyVVl4dGx3SG5ndzhBVGdZNEVQQmIrVm4rN3p2QlN6S2Z1dTViVkhWN3p1SW9oWDRUNGt4TVN1a3lldkxLWk1jU3ZvT2hTYzk4TTladWRPbnBUdVN6RnlSTGVoeTVtSU1vaDVCemdIbkhkdzBZY2F2WmNJVldGdWkrdkxEaTdINXk0Q0Z3algrdzY1SkpWVThraVpqZkovS1lXc0k1Szd3SXZCL1Nid0Y4QXJnZGRpZ21ZWXA4bEZ3Z0RrRHdBZVJZaHhmUkQ0emZKbDA0VHJXRmxkblFrcFVlSWxDUnRVQWtZVXNQajhkUmNFTEZYZGlJT1dhd0c3S2V0cnFEcXdNaGFZMExERWp0VUQ1MHEzSWNUbmF0T04wc282Y25FN1hyVGk3ejRpaXBpeXhvN3B0OFlLUlQ0SDdpUEJmMlI4MDJ1QTF3T3ZCZmNLNEZYeDhkdUFPOGsraVdGZWlvYXhHQnloWjNvT2VDL2dEc0lVSnc4QVBoRDhQd0R1Qy95RDdsdDlZNjJGeTVQZGVkcGxXTSttZkQwSzBsVWZFalJTM0V1NURlOGlaeDFLeFkwMFArRTh4V3ZJckp5QVZYU1NPa1NzUkxDaUcxRmUyT2xwaVhENThxTFY1V0dPQ0JiZEViazRjS3V5UjZ2Q2gzd2Qxb0Q3Zzd0LytiME53emdkNm51c1Q3dzZ3a1UzV1VPN0RYZDlyS2Jobyt0UWk1YXZ4bnloQ2llNG1MVGh5NlNObFJVdldGRUI2eGtidG9heXhpb1IwMWRGSVdDK3ZHRDFjcWkyZCtLNlZlRiswaml6UXNTcWJjTXdUZ2ZmMk80VHJsYVdZVjBhU3JzTjY3alhGZDhkckh6VlpjdExpMWRLbWFlY2szQmxXVWtCZzQ0clVkYkhVTzVVNHVVcE13dTFuN3Z1ZGVsRlRINlpaMHdxM1crb1piMUs0VzhsZXJRU1NRekRtRCsxZ0xVVzhiN29jSUcrL3c5aXRxQ3VzS0hGSzVXSmNubWNWNnEwNGRWZzVZWjRhZkZNMzNmVnJDOVlZUUdEaVptSlRSRnpqVUR0QlBFNjBJc1BMdmNEeXVRT1dTU0JSSTgvYXlWNlFDbGdKbWFHTVIvNnJLNWljVGxjMFBLKzZQdCszeXUzSVdwQ1Nrb0JrNUpSZW9xVVhSZGpYajNpcFRNT1YxYThZTVVGREdZWE1hTGxKZHYwRDFBc0x1SnEyVkZMWjg0eCtxdC85RlhBTndFempQblF0THBxajRzdjcvbFd4MVc3RE1WdEtQVU5wVlJVMzl4ZTF3bkNWUXhVN2hHdmxZMTdhVlpld0dBMkVWUFBGYjB3dWoyd09uQXJGL041Y3ZMVEhsSEVvbXRSaTlpc3NiRkN2SnlKbVdHY0NEODVVY09USzd2ck9vWXRxMHVFcTU2SXNuWWRhaXRNUDViWDdibXlRTytoTDZkSE1mR3FNQUdMVEJBeHJ5d3d1ZWdMVjZJRVZYMHBZSkl5cTEwSjU5U3lRenN1TnMwYWE3b1VWL29xTm94Ym85ZGxTQll0M1ZrOWNrRmM2dnU5S1Y0dVp4NWUxNHVMcjFIdHc0RlhNeXU3T0QwS1pjS0dpWmZDQkV6UkVERlBFSTRqY1IvNjdGYlFjYkRVRzRzWGR1MCtsSXY1SEhtZ2N4SXhTaEhUQTU5RnlOWm9XMlBRYjNtWlJXWVlKWDBOZmt2QVdsYlhFYm42ZXgzbkZtK0xGTnBOQXVhekcxSGlXN3UrRWk1Wm5ISVoranpPeXhJMmVqQUJxMmhrSjBxNXFVNDJJbEhJVkNhaUNGa2R5QlczNFRteWtPbDRtQmF4VGNMQTU0NGxGak1WV3pFeE1NRXlqSnVoSTE2TkVNR2tSQzNkVWQxemVkQnhFaXFVaTVBc1hQdkVERU1mTzc2b3NhTytPODRyZlZjVHI0d0pXSU8rRkh1VmhWZ0hkdE5GN3JPQUhVWi85cjRQRi9hZWh4MEg1M3hwZ2ZWWllUb210a0hJVkt3VE8rTFhMZGFHWWN4R1J4aDhLVjUxakh0U290WWU0VjRYb2Ryek9hNGxqK1YxT2p0WkxEcHhUVGFyYTJEaTFjUUVySWVlbUJpbzVBNXlabUs2MktQNWYrakRSYWt0c1gxQ3pHdVh0dlVsQWxhbjJDY3J6SFZGekt3d3c3ZzVmTFdkT3FYS0Ftc1ZLU2hjaDJxc1Z4S3h1SmFFREJHdUE1MmdvUzJ1UnFKR2MwWmxFNjh1Sm1BVFVDSUdqZVFPbnkvOE9wbmpocXNFak9BdTJBSjJ2Qkl0MTAza1NBSVc0MkNiQkFIYjhKT3pFaHRmM3pBTVJVc0F0SVVqOTdWTzNLZ3I3RWlTaFZoUSt2NU9ZaFpkZzVLWm1Hb1kra3E0NVA4b2wyRW5XUU5NdlBvd0FadUNYRGlONUE1WHhjRjA3NjJPaVIwU0x1Z3R3a1dkeE1ybjdhMG9jRnMreDhGYXlSeXBtcjJqS0Rwc2dtVVlKME83RG92a0RVZnZRT1hlWWdXVXJzRWtkTW9qbytmdmtnTGdSMDZKSjVqTDhDU3MzSFFxdDRMdnV1dnFaWTJRYUNIdVBrbkFTT254TGlab3VDeFVPdVlsanpmSUZ0Z3NLZlZnQW1ZWUo2V1R3RUYvOXFHSWo0elBTa0ttVXVvUDlENlVhSkV6QzhWVDAzSVZucG5WTlZRZE1BRTdJUTBSazdValdFUmlHYTJUNXhuVG1ZU2JaR0VTWWR1a0hBTW0yeUorZmRVNWdEUUZqR0VZSjhRM0JpL1RiNFdsTkhwS3E2d3UzcTJYbzFxNFZOeThGcTB6Y3hrT1ZRZE13RzZTV1lRTXRjUVVlSjJNSWNKVVpCcnFiUzErcml6MmExbUlobkhyMU1LaFhYbXRZdDNpK3BQNGxYWUpwbjJWWUNWcmF4bUZTeGlxRHBpQTNTSTlic1cwTFJZWldYeFNMTXZueDFyWXRIQ0pCVmNuYjZ6UkVDNnp4QXhqTm53cEZDMHJUSThIMDVVNGttdFJ4RTJKM0xFU0wxM29vQll1cXUwemozVU5WUWNzaWVNV21aQ3BDSG5BczFNWDhiSFBTUmdTTDlQV1ZTRll2clRpSkdtamxYM29obmtKR3NhWlVZdVlKRTRjK3lxdG5yS1lyd3lacWQyTitua3RoTDNDRmYrZjNibzNpUW5ZSE9qSlZOUWtJU05XOWlCYVViSEg1cHl5c0pTZ2FXdHJ6YXQ0bDRpbVdWMkdjZXY0TEY0Nkl6R0prTS9idFhXV3NwQmR0clphU1JrbVhLZUFDZGdjNlJFeUVTNVppd2pKOHltalVBUkt1UjNUZnZKemhldFEzUUVtWklaeE1qb2VrM2lUSmhGemFsM3RPNjczcStma3N6c3hMakRobWljbVlLZEFKV1J4TXlGQ0ZsK2FxdDNYcnNGa2FZbHcrZnc2MlREUk1vdzU0Zk45VzF0ak5JU3MySmMvb3JsR3ZkNllJeVpncDhnRUlhdXRNZ2hDVmF4OTk3a2lhU1MrMlVUTU1HNEIzeENXbGlpNWFnMmRqaW1ZYUMwVXkwSmNNTDR0T0hVbVk5Kyt2c2VHWWN5SGpsdnhoTnZBOElScnFEcGdGdGlDMFJmMkZCZWpMOTgyNjhjYmhqRURzN2JZemFTczFndUhKbHBqd0FUc0RLa3YrQjVCMDQrbkNaVGRRSVl4SDZiZVN5WllaNDhKMkJMUnVpRXFsNlBkTUlheFlFeW9scGRCeDhBTXd6Q00xV1Z0K2tzTXd6QU1ZL2t3QVRNTXd6QUdpUW1ZWVJpR01VaitmK1BKZlBlY2FxcEtBQUFBQUVsRlRrU3VRbUNDIn0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjMtMDMtMjgiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJhdXRoZW50b24xIC0gQ1RBUDIuMSIsImNlcnRpZmljYXRlTnVtYmVyIjoiVTJGMTAwMDIwMjMwMzI4MDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjMtMDMtMjgiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6Mn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMy0xMC0wMyJ9LHsiYWFpZCI6IjAwNjYjMDAwMSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFpZCI6IjAwNjYjMDAwMSIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJDQVBZIFVBRiJ9LCJkZXNjcmlwdGlvbiI6IkNBUFkgVUFGIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMsInByb3RvY29sRmFtaWx5IjoidWFmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9kZXIiXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX3N1cnJvZ2F0ZSJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJ0ZWUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsidGVlIl0sImF0dGFjaG1lbnRIaW50IjpbImludGVybmFsIl0sInRjRGlzcGxheSI6WyJhbnkiXSwidGNEaXNwbGF5Q29udGVudFR5cGUiOiJ0ZXh0L3BsYWluIiwidGNEaXNwbGF5UE5HQ2hhcmFjdGVyaXN0aWNzIjpbeyJ3aWR0aCI6MzIsImhlaWdodCI6MzIsImJpdERlcHRoIjoxLCJjb2xvclR5cGUiOjMsImNvbXByZXNzaW9uIjowLCJmaWx0ZXIiOjAsImludGVybGFjZSI6MCwicGx0ZSI6W3siciI6MjU1LCJnIjoyNTUsImIiOjI1NX1dfV0sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6W10sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWdDQUlBQUFEOEdPMmpBQUFLbjJsRFExQnBZMk1BQUVqSGxaWUhVSlBaRnNmdjk2VTNXa0xvRUhvVHBCTkFlZzFkT3RnSVNZQlFRa2dJS2paVUZsZGdMYWlJZ0xLZ2l4UUYxd0xJV2hBTHRrWEFBdFlOc2lpbzYyTEJoc3Ard0NQdXZwazNiL1prem5kL2MrYmNjOCs5dVhmbUR3QjVrQzBVWnNBS0FHUUtja1FSL2w2TXVQZ0VCdTR4Z0FBQitSa0FGVFpITFBRTUR3OEdpTTJOLzdSM2Q1QnN4RzVhVE5jQy84NFV1VHd4QndBb0hPRWtycGlUaWZCeHhEczVRbEVPQUNqRWdmN3lIT0UwbHlOTUV5RU5JbnhvbWxObXVYT2FrMmI1MWt4T1ZJUTN3cU1BNE1sc3RpZ0ZBTkpiSk03STVhUWdkY2cwaEswRVhMNEFZUitFM1RpcGJDN0NCUWpQeTh6TW11WWpDSnNrL2ExT3lqOXFKc2xxc3RrcE1wN2R5NHpoZmZoaVlRWjc1Yjg4anY5dm1SbVN1VFgwRVNlbmlnSWlwc2ZwYzB2UENwS3hJQ2swYkk3NTNKbjhHVTZWQkVUUE1VZnNuVERIWExaUGtHeHVSbWp3SENmei9WaXlPam1zcURrV1pVWEk2dlBFdnBGenpCWjlXMHVTSHUwcFc1ZkhrdFhNUzQyS25lTmNma3pvSEl2VEk0Tys1WGpMNGlKSmhLem5aSkdmYkkrWjRyL3RpOCtTNWVla1JnWEk5c2orMWh0UEhDZnJnY3Z6OFpYRkJkR3lIR0dPbDZ5K01DTmNscy9MOEpmRnhibVJzcms1eUdYN05qZGNkajVwN01Ed09RYVJ3QWJZQVd0Z0JXSnplQ3VtN3pUd3poS3VGUEZUVW5NWW5zaXI0VEZZQW83bFBJYU5sVFVUZ09rM09Qc1h2eG1jZVZzUUhmOHRsbzJzN2ZRYmNoY1BmNHNsQ2dGbzNRVUF2ZnBiekZBWEFQa1NBTnFsSElrb2R6YUdudjVnQUJISUF4cFFBOXJJSFRJQkZraDNEc0FGZUFCZkVBakNRQlNJQjBzQkI2U0NUQ0FDeThGcXNCNFVnbUt3RGV3Q0ZhQWE3QWYxNERBNEN0ckFLWEFPWEFMWFFDKzREZTRES1JnQno4RTRlQWNtSVFqQ1FSU0lDcWxCT3BBaFpBN1pRRXpJRGZLRmdxRUlLQjVLaEZJZ0FTU0JWa01ib1dLb0ZLcUFhcUFHNkdmb0pIUU91Z0wxUVhlaElXZ01lZzE5Z2xFd0dhYkJXckFSUEI5bXdwNXdFQndGTDRGVDRHdzREeTZBdDhEbGNDMThDRzZGejhIWDROdXdGSDRPVDZBQWlvU2lvM1JSRmlnbXloc1Zoa3BBSmFORXFMV29JbFFacWhiVmpPcEFkYU51b3FTb0Y2aVBhQ3lhaW1hZ0xkQXU2QUIwTkpxRHprYXZSWmVnSzlEMTZGYjBCZlJOOUJCNkhQMFZROEZvWXN3eHpoZ1dKZzZUZ2xtT0tjU1VZZW93SnpBWE1iY3hJNWgzV0N5V2pqWEdPbUlEc1BIWU5Pd3FiQWwyTDdZRjI0bnR3dzVqSjNBNG5Cck9IT2VLQzhPeGNUbTRRdHdlM0NIY1dWdy9iZ1QzQVUvQzYrQnQ4SDc0Qkx3QXZ3RmZobS9FbjhIMzQ1L2lKd2tLQkVPQ015R013Q1dzSkd3bEhDQjBFRzRRUmdpVFJFV2lNZEdWR0VWTUk2NG5saE9iaVJlSkQ0aHZTQ1NTSHNtSnRKREVKK1dUeWtsSFNKZEpRNlNQWkNXeUdkbWJ2SmdzSVc4aEh5UjNrdStTMzFBb0ZDT0tCeVdCa2tQWlFtbWduS2M4b255UW84cFp5ckhrdUhMcjVDcmxXdVg2NVY3S0UrUU41VDNsbDhybnlaZkpINU8vSWY5Q2dhQmdwT0N0d0ZaWXExQ3BjRkpoUUdGQ2thcG9yUmltbUtsWW90aW9lRVZ4VkFtblpLVGtxOFJWS2xEYXIzUmVhWmlLb3VwVHZha2M2a2JxQWVwRjZnZ05Tek9tc1docHRHTGFZVm9QYlZ4WlNkbE9PVVo1aFhLbDhtbGxLUjFGTjZLejZCbjByZlNqOUR2MFR5cGFLcDRxUEpYTktzMHEvU3J2VlRWVVBWUjVxa1dxTGFxM1ZUK3BNZFI4MWRMVnRxdTFxVDFVUjZ1YnFTOVVYNjYrVC8yaStnc05tb2FMQmtlalNPT294ajFOV05OTU0wSnpsZVoremV1YUUxcmFXdjVhUXEwOVd1ZTFYbWpUdFQyMDA3UjNhcC9SSHRPaDZyanA4SFYyNnB6VmVjWlFabmd5TWhqbGpBdU1jVjFOM1FCZGlXNk5iby91cEo2eFhyVGVCcjBXdllmNlJIMm1mckwrVHYwdS9YRURIWU1RZzlVR1RRYjNEQW1HVE1OVXc5MkczWWJ2all5TllvMDJHYlVaalJxckdyT004NHliakIrWVVFemNUYkpOYWsxdW1XSk5tYWJwcG50TmU4MWdNM3V6VkxOS3N4dm1zTG1ET2Q5OHIzbmZQTXc4cDNtQ2ViWHpCaXpJRnA0V3VSWk5Ga09XZE10Z3l3MldiWll2NXh2TVQ1aS9mWDczL0s5VzlsWVpWZ2VzN2xzcldRZGFiN0R1c0g1dFkyYkRzYW0wdVdWTHNmV3pYV2ZiYnZ2S3p0eU9aN2ZQYnRDZWFoOWl2OG0reS82TGc2T0R5S0haWWN6UndESFJzY3B4Z0VsamhqTkxtSmVkTUU1ZVR1dWNUamw5ZEhad3puRSs2dnluaTRWTHVrdWp5K2dDNHdXOEJRY1dETHZxdWJKZGExeWxiZ3kzUkxjZjNhVHV1dTVzOTFyM3h4NzZIbHlQT28rbm5xYWVhWjZIUEY5NldYbUp2RTU0dmZkMjlsN2ozZW1EOHZIM0tmTHA4Vlh5amZhdDhIM2twK2VYNHRma04rNXY3Ny9LdnpNQUV4QVVzRDFnZ0tYRjRyQWFXT09Cam9GckFpOEVrWU1pZ3lxQ0hnZWJCWXVDTzBMZ2tNQ1FIU0VQUWcxREJhRnRZU0NNRmJZajdHRzRjWGgyK0M4THNRdkRGMVl1ZkJKaEhiRTZvanVTR3Jrc3NqSHlYWlJYMU5hbys5RW0wWkxvcmhqNW1NVXhEVEh2WTMxaVMyT2xjZlBqMXNSZGkxZVA1OGUzSitBU1loTHFFaVlXK1M3YXRXaGtzZjNpd3NWM2xoZ3ZXYkhreWxMMXBSbExUeStUWDhaZWRpd1JreGliMkpqNG1SM0dybVZQSkxHU3FwTEdPZDZjM1p6blhBL3VUdTRZejVWWHludWE3SnBjbWp5YTRwcXlJMlVzMVQyMUxQVUYzNXRmd1grVkZwQlduZlkrUFN6OVlQcFVSbXhHU3lZK016SHpwRUJKa0M2NGtLV2R0U0tyVDJndUxCUktzNTJ6ZDJXUGk0SkVkV0pJdkVUY25rTkR4TTUxaVlua084bFFybHR1WmU2SDVUSExqNjFRWENGWWNYMmwyY3JOSzUvbStlWDl0QXE5aXJPcWE3WHU2dldyaDlaNHJxbFpDNjFOV3R1MVRuOWR3YnFSZlAvOCt2WEU5ZW5yZjkxZ3RhRjB3OXVOc1JzN0NyUUs4Z3VHdi9QL3JxbFFybEJVT0xESlpWUDE5K2p2K2QvM2JMYmR2R2Z6MXlKdTBkVmlxK0t5NHM4bG5KS3JQMWovVVA3RDFKYmtMVDFiSGJidTI0YmRKdGgyWjd2Nzl2cFN4ZEs4MHVFZElUdGFkekoyRnUxOHUydlpyaXRsZG1YVnU0bTdKYnVsNWNIbDdYc005bXpiODdraXRlSjJwVmRsUzVWbTFlYXE5M3U1ZS92M2VleHJydGFxTHE3KzlDUC94OEVhLzVyV1dxUGFzdjNZL2JuN254eUlPZEQ5RS9PbmhqcjF1dUs2THdjRkI2WDFFZlVYR2h3YkdobzFHN2Myd1UyU3ByRkRpdy8xSHZZNTNONXMwVnpUUW04cFBnS09TSTQ4K3pueDV6dEhnNDUySFdNZWF6NXVlTHpxQlBWRVVTdlV1ckoxdkMyMVRkb2UzOTUzTXZCa1Y0ZEx4NGxmTEg4NWVFcjNWT1ZwNWROYnp4RFBGSnlaT3B0M2RxSlQyUG5pWE1xNTRhNWxYZmZQeDUyL2RXSGhoWjZMUVJjdlgvSzdkTDdicy92c1pkZkxwNjQ0WHpsNWxYbTE3WnJEdGRicjl0ZFAvR3IvNjRrZWg1N1dHNDQzMm51ZGVqdjZGdlNkNlhmdlAzZlQ1K2FsVzZ4YjEyNkgzdTY3RTMxbmNHRHhnSFNRT3poNk4rUHVxM3U1OXlidjV6L0FQQ2g2cVBDdzdKSG1vOXJmVEg5cmtUcElUdy81REYxL0hQbjQvakJuK1BudjR0OC9qeFE4b1R3cGU2cnp0R0hVWnZUVW1OOVk3N05GejBhZUM1OVB2aWo4US9HUHFwY21MNC8vNmZIbjlmRzQ4WkZYb2xkVHIwdmVxTDA1K05idWJkZEUrTVNqZDVudkp0OFhmVkQ3VVArUitiSDdVK3lucDVQTFArTStsMzh4L2RMeE5lanJnNm5NcVNraFc4U2VrUUlveE9Ia1pBQmVId1NBRWc4QXRSY0E0cUpaalR4ajBLeXVueUh3djNoV1I4K1lBd0Q3RVMwZWxROUFNREpXSW02RXNMd0hBT0dJUjNrQTJOWlc1djh4Y2JLdHpXd3RVaHNpVGNxbXB0NGcyaEJuQ3NDWGdhbXB5YmFwcVM5MVNMUDNBT2g4TjZ2TnAwMzVQQUNxTTEyY1BhQ1IvOThhK1MrWXp3ZDFqR2lEZFFBQUFDQmpTRkpOQUFCNkpnQUFnSVFBQVBvQUFBQ0E2QUFBZFRBQUFPcGdBQUE2bUFBQUYzQ2N1bEU4QUFBQUJtSkxSMFFBL3dEL0FQK2d2YWVUQUFBQUNYQklXWE1BQUFzU0FBQUxFZ0hTM1g3OEFBQUFCM1JKVFVVSDRnY05CQzBNK1llcS9BQUFBSGQwUlZoMFVtRjNJSEJ5YjJacGJHVWdkSGx3WlNBNFltbHRBQW80WW1sdENpQWdJQ0FnSURRd0NqTTROREkwT1RSa01EUXdOREF3TURBd01EQXdNREF3TURNNE5ESTBPVFJrTURReU5UQXdNREF3TURBd01EQXhNR1EwTVdRNFkyUTVPR1l3TUdJeU1EUmxPVGd3TURrNU9BcGxZMlk0TkRJM1pRcW1VOE9PQUFBTVJucFVXSFJTWVhjZ2NISnZabWxzWlNCMGVYQmxJR2xqWXdBQVdNT3RtV3VXNUtnUmhmOXJGVjRDQkJBUXkrRVY1M2ovRy9DSGxOVlYzWmxqZTN5c0dsb3BDVUVRajNzdm11dWZjMTcvNEVqUzJoWE9NVmZUV0VNTk9vUEUrNVl1M1RWWEtaSnJGZ21sRlN0ZFFxaWJmOExwWkUrVHpHVzlOR3FxcVlZY1N5Z2h6L0E2L3J6K2Q0Y3o2L1VhL1Q1V2t2WExzcjk1WEgrdmU0eWF0ZFNrNmJrc3Ivc3FsK1p6VzlmellPVG5QQU1MRGxYcWM1MWU1eUNwVmp3WHZ1NWJlMDJRTDl4NXUvRjUwT2ZYQTYwLzczK3RsUHUvOVYvNTUwQ1p5RHltcHYzTTBNSWtDTEdLMXZ0NitKZEZvU3IyMTVkRk03N3VwM0RwWnRXbSszbVF2eDVzdXBNUytucWhmUTAwQ2RCUy83by9YcFpLdS9TdkxLcC9iYWwrc1BTNkg5VDNCNzlGNS90b0dmdFAzaWxEVnZ1ZncvOS95NlAvWWlCY09HdjVjeW55ZFQyMVZjbXR5TmYxL1M5NXAwTTlqeUxYMjRPdGtuZjJ0L3YyaXRTZjl4dFJhYVc4RDBRSjUvUkt1Si8zczhhYzgvZ3c4V1RpK1Q2UXF2R1d2VnRVYzdhUy83eFAwanBwNHU4REVmUmNTbnE3VDU1L1docCtIYVhrK0Q1UTA1THRGdzU5djlDMWthTDE3VDRyS0pyMzIwQWs0U2pwM1Jkbm9KenlmbDlhTFVVK09Wc0pzMzRJODZvL1UrUG5Db3dWZkxBb255WGs5aDVOb3ZiSmQvaTB0RTlSNHhGaEx1OHY2QzRmQmpvZ2wrVkRRcDV5L0FINlB3ZWFoT2h0eVJTdzR0UHlZV2tQMUgyYUdWNTV5eVB0TExtWDhEWlFDTWY4eEVDSjN5a2U5T01lbUlnM1d2MVZKam1wTTdpUmtBWU10UXYyZzhNZUNqckJ5cUNsSnRreWhlRVNRNlhiOGI4SThzZmhhWjFuTjUzZHZCWTF0RThkYTN5Y25tdzlSWno2K3RSUE1lTmUyaUE1NzVXcCthZU9CT1VoVVcrM0MwYmJoNjRLeWFoZmZSNGZmUVBFR2ZCVXZoK0tvVkc4Y1QrNEpDeEQxc3QvREpERzgrS3hPbmNHT3Roem9sRjRxZkRTQVRkdEIrcFkzRkVOMUZmRmtvWlZqUUhhZU9rSEJqQW1OZDd2aVlFNkwzVmVHcncwZUduTVExZ0hGQisrT1NTOGVHbngrNVRhNXZjZXQ5SElCOXJBM1ZSL3hGT1IzakVtbXRFOFJDazBPckNNRTdXWWRqaU9qeVJxSkxRUjY0a1FqWGZoeEZoSnlJalpzVEVJSmtlakUrYkd6aHlkem9QejRJeUZjWEplbkJmbnpYbHpkdnA3aDcxWW1vUWpyakp0QlJHbE9iNXQ2S2RJRzRTTVo0Vm56QzZWZTVVWFlWNGhkSUtJRUVJc25hS1Z3Y3ZNS1BoRDhJV2NJT0VEOFhJbmRRcURyRlNDRldrckpDWUIxV2tlRHJZbjVWbWxhRlBkSVRWdUdEY1lQWFd1Qjllem9qWjRZUi9LbmlHNUVXMmxERktnR21pTE9obmhRRTQrd0FiU2hJekptUUV6Q1pmeFVTYVNHVXZ6ekNFeldNWW5KMHV5YnpKdGhZS0FLZ1NqcEU3bVdDZ0ZNVnBZT3pWSk1TbXBST3UwUWFHREpvV2xGc0pkQ1BQOXh4SlY2cTNDRkV1VTZLbjJvSFZjNUI3eXpGYlE3cmQwVkNLak93VllKcHhhcnFSRVpmYWFGa2ppQ0NRU0JoU29URnlOWjRpek9xQ2p1bEJQekZxOUlWc0dDZXloa1Q4dG4xTHVKUE1PclhHTnRhMXpQYmptbmJacmFDU2prYnNtK01oWXB6SFRvV1JEcUZqamQrYzNEcmZKYnlZeFh1Z3hoczZ5T3BaMVVxS3pwRTdaZEZLZ2Q4Qy80NHUrWnVoK0FzMGY2bndrQzZQRUF3dVVPbFZENXpGTzlYREc4WU1JemtnR1NrZmxwVEFMZVlRR1FkcnRNSHNOODVRWm1Uc1pkSjAvRXZUb3pjVVNGMzVaOUZ0ay9KbzhYL3pHSFp0MDJJSkZtL0NoSThPdUhyWU42bEhEeGdkN2IrclNnbE4zVHBZN3lPQmt0ZU1ySHlrNHkvWjlxaHN2aVY0a0NNQ3NPS0JpczFGY2d3ZXJuamNqaFh6L0Y3TURveXZHTm1Qc2VHdGFqTHV4dUJvcHF5aXdTQlROa2RxSjBsT1VTZHZBOUlGcW9URUpPaElBb0hWeWVoYUFvRkNaVUFlRmh6NUJlZmVZMjdqZ2tnVTZiQ1lGSGFKRVNDcVdvaEhPQUMxR0xHTkZWbldxN2NoWkZMTkYxUm0xZWRRaEdNbzk3MWVzWUVQTk1jSnpzVGFMdGU5SWJzWHFOVFp3aEVLUEtKVFlXbyt0ZTJ5TDM5NGZ4TWtsbW81b0ZxOW9nOXhkSzFKaHNVdVBIZGYwV29HakhVbU4ySEhvaURtT05PSmdtWU1CQjVhTTFlTUJJRklnVGlnN3pqcml4RDl6empoeDhBSzFGbFc4NnNFd2k0UTZMZ2JiQ1BLTmRSdWZiTXR4azFCN1czU2k0V2xmMFpVTEh2anc2THZMamFYNG5zSVQwcHlzQXpUQU9rSUYvalhXRERsMW5EbTM4SktJVkRuNlNLVHh1N3ZJV3BCT0Y0QkxBQ3RKbGlWTmtlUUhMRjF5WHV4S3ArUStKSzlPZGxGaDlDMUtzM3BKbWFnR2g4SVpHWHFYSTZoMTBIWWp3TFJzVWl0VnhnQjFUZGh0U1VzdWpSUnFIVHRXRnNEa0VtTlVQQzltUzBBVHFnY0RVeEdrbm5RYndMRURJaUlqS2Foc011aEhSc2lCdHBtTS9SSTZvY3NsYzFWQWM4ckNMNnVxTEdaZW03d2thOURQZ21GQWVCVktSbGdnVU43RkxZcXpFbmVBS3lGZmRGNjRoZkpkZzBJZ2xUUGh3MFZ4Y0haSnh6YlJsTVFHdUo4VEhWTUNtMVAxbEVaTGlaQmxiRVh5WENuYlRubTFSUEtuQWtDWGhpaWNrb3F2ZExZQmlOT2tmU2ZkQmxsa0JCcDhZVE5WMUdtTE9UWElwalVzYXJPQlB1VU9rakdURFZidXdCM0Q5Sm9USzRWWVBMSGdOSlMwN0QyTjNRaG9UU2lxTkZuUjNPbEtpd2hUTG9sRVRVQk0ybkkyb2pRWUNTUWhQakU1ejUzTThDMHdJMUpPODRISWd6MTRsaVRVZmxFWGt6VGQyQU5WWWJ1TWdrY3hoWExIZnFhRHVxRERqTHpNcldjS25Bb0RPTmc0RkRDNXJNM1dXNjZqMEVFQ1ZLVkRiWGlwVnBRbkx6Y1lxK1dScWVQY2dFZUtCVm1JU3pzQ25iNDkxZHlaQ0RzZzlubmxlOFBBeUFPektjQk1WUE1jUFpOU21XNTVHYkZZYktVUUFWdDNKaFVlcmtUdjQ4cnM2L0I4dmVDaFdFQjJvQjZzZ0F1QmcwSmxGcEtnU0tXdUFYVmdyUkJHaUxVWEhGYU9STS9OQ1RJN0kySGJoNndwaExxQXdrV2hWdTNzZEJ4eGlQU3ZsQklzWGhvcDJDb2lkSTVpZ0l3aE9HMGN4cXVsODFidk5HZWdnZHVHMGRnaHpFUUR4ZWJTc3RqMnJOckttbFpBcHNKT3NleXhDcEFQZzhjQ0FTQzFzS0dRV2IxZkdNTU9Qdk9vZzZNWUpyaFViQ295Q2RlU1RGWTFRUzM1QlAxc0xyZVJQY3hrMVBnK1h6Z1dXemE1bENwWGVGMnJrY1Iwb3JJVmV0YTJKeHVvcEdZZDFVeW01TWJLSFlsUWRURHg2Snpkc2JQcTdINmhYUnY0alhZWWFINDRaYk1CMzVOc3dPT09VbkFnSFRVRzBTTmJOcUVoMzZPVmlrUWd2bFJ6eHc3RUtLbEQwUXgyR1RFL1g0WW1ZUUp0VU80VjU1eDFWUVhZMVZ0bEEwdWFKZmdGbnRCZEczMU5lclZtVjdVTmJHV3RSTGFpdnlvQVh3ZUZCTERXMldpSFZOaXRVRUwxNk5jTkFtNmVBdzRJbUZ4OUYxUlp2WkFTN1dpS0JrbTFPQmNnRWtBNkFOZ3prRkFiVlFwOXJrYXF0N3dwOWt3byswQWRIZWNLZm1IVGxNYlZxbmxqeU1iZUZEVFl6UUJ0TTR6MTNhakwxbWR2VUgzRGhXMzRiRk1CRE80dGtHdnh5bkp2Vy9VaU9MdDVnamNONFl4MlE2NGhONkFXMUdmc3phQVBRTHNiVkg2S3hjQVNFQWRKMVNnNjZxUVV0ekx0dXV1UStCb1N5dkNtNFFoanMydHRZQmhKaGJvejgwa1NOR09YWlFPc0g5ME5GclJKbCtuVmx1WUxraFdEK0d6M1Rib3NGanJNSFkybnlOc0ZyYkxsaDJMaEM1cHBCNkFwZkJwTW1Ta3FxcHdDYkZjdm5jblFLbmlna3pTazJlNVkxUnRFMG1idUFDdzlEREV6ZTRmMFlaUStLTE94RFVhZmZhSUVWODVYWDVENWhqczJ0SDhTR0l2T1p3aGtiRUYxOVlFTUdYSEJWeG5HbnlCOXd2ZDlzMExLMUtqa21FWnAvVUtmWVhpMUFiQ1JkVzFnRGJWTmZTKzJNOUNxOFRJb1Bmb29qTFQ1Y2RJc2ptbmpDSjZ4a0xZczRBTEh3VFNIK2FGUzk0Sm9acGV6VVJSYVVRNWdmSEZJRDBZQVNOSmlMNERzQjI1bnlZT1ZrUTJaWGZWTTE2UTJFQ1FrU0ZxempUbmhEeVl6QkVxYk9HT0NGbk1Nbll3MFdjaUVzQ1o0Qm5Ib0JCVFFyWFg2YU5jNmUrZ3drRzFwc2hoa2FQTEZibWtCOXd1K3dZK0dIUUJSM3Fzc3ZGWEswZ1dLTXg1dVdFMWh4YzFBcGdoaTRrNjRWdmVCNzFHLzdFSm02OGd2VkxBcERENFhpbWM1NnNBN094dm9NZ3h1WjdZN0UzMVQwa1hBQmxhbURYaHRhR1JubjVRaE9CL1dQdDlld1l0TkFrQ0p5SUF4MFZpay9pS2VZR3JmZ0NiZ01ueGNHMmpkQ04rOWJDSVQyaWF3MjZFK253anB3bjVpRjQvb2hlaU9sc0VsMFJ4SThneUJRRHRla09GdzIrV3F5L1VFRGFYWjZOVElPcVFPTlZBZFpQR09raCsxT3VHa1VCb09ORi9VeU03RDk1cGdKR1hyZnJIeE9wK2I0NDhQRDEvZmlFUTU3ZzhRWU5kOVo1WDdheURjL3ZSZ2VWK2ZwZi84eEJyRGovOEg4T05lK0UvM3J6OGYvUFo5Kzl2STI3TCsrdEplWGwvTzhueXVFVERQUUtLdlQycXZyOURsOWJHa1BOL0owYWNwZlRqL2RnRCtMRElsK2MyeU1SNmZRS3ZIa1o1ZTN4K3IzRDZDN3V0OW4zNzNlWFY5bG9ZNE9xY1pUZ3gvZklyL0doa0t2cy90MjAvRDJlU005bTFSK0l2aitoY1Q5VG9SQXJQM2xRQUFBQ1YwUlZoMFVtRjNJSEJ5YjJacGJHVWdkSGx3WlNCcGNIUmpBQXBwY0hSakNpQWdJQ0FnSUNBd0NzRFcvR1lBQUFlY1NVUkJWRWpIclZaYmJKeFhFWjQ1Ly9rdmU4bXVkKzFkcjJNN2R1ekd1VFNoaWRLRXBpRnBCQ1VSRW9RS2FGVUVSUlZDb2srZ1ZqeENIM2ppQWZIQ0V3OG9TQ0JCS3dqUW9wYVdGQXBOUSt2Z0pzM0ZjWnlMTDdHOWErL052M2YvKzMvTzhIRFdibWdyVkM3bjZUOXo1ajl6WnVhYitRYUpTQkl3aEZqS3VicWZNclJTMWdRQUlrQ0UvMzF4U2NRUWJ5dzdQM2w5c2VaRUd1SjlnK2x2UHRSdjZ0ci94UVpuaUUwbitzRkxjN1luaUVoaitLZkpaaXpwbWVOREcwcVNBT0ZmakJFQUFoQUIzQ1ZYd3ZmcE1BQjQ0V0sxMW83eUtmNzVmVDJIUmpQWmhQYjI3YlhyRlFjUmhDUUFZQWlJUUFTMC9qT3V4MURKTjRSM0w3VmxmaVF1ekxjMXhDY09sYjcyNE9hbmp3ODlNSnBwK2VLZHVSWUFhQXlKYUxibWxWY0RSRUFBQWhCU2hyRkVCTnVMeW5hZ1BCQ1NJaUhsdWpVaWlvU01wZVR6RGI5c0Ixc0wxcEd4cmxnU1ozaHNlLzZsUy9WYlZSY0FhdTN3UjYvTXo5Vjl4bkQvVVBxcFl3T1dydjNzemFWclplZnhnNlZUWjh0Tkp6cTVyK2Z4ZzMxVEZlZUhmNXc5TXBiNytpZjZBZURsSzdYbng1ZWZPamJBSzNib0JtS2trQUJBQmdRQTIwdkpIMzlsdTZFeEFIaHVmUG55Z3JNcG9jV0NYcjNhM0pLM3ZyQy90K21LaFViNDB6ZVc1aHRCTnNHZlA3K3lkekF6bExkYXZyeTY2Q2pVVEpYZHBpdDZNeWF6M1ZnUTlLUjFsUllBMERVMldrZ081aTB2Rk9NemE3a1UvOTduaHI5eHRDK2hzeHNySGdCWW5QbVI1SXc5YzN4d3JEY1JDL2p6VkNOdDhlR2VSTFVWclhreEFDdzJnNEdjMlo4eldSQkxJTEIwZG5kK1ZHNWpTZHQ2azQ4ZEtPN3NTeDhaeXhrY2c1Z1ViSUtZSGoxUS9OVE83aWNlTEJrY1oycytBSXdXRWcwbmFqaFJMR1RaRGdmemxzRVpSOFNOdDI4c2pTRUFiTEw0ZHorN2RYa3RPRE5aSDU5WkN5TFNWRDRKa2diYjFwc0VnSUZjb2pkak5KMFlBTVpLaWRNVHNtS0hhWXV2dXZFOXhRUUE4S1RCQU1FSnhQdHdSa1NJK1BMbDZxbXpaZHNUMlFRM2RKVFVPVEk0S3FkTnpsS201Z1Noa0RSU1NPcWNMVGFEcE1HRXBORmlBZ0JZUHFYckRDdDJxQW9LQUJZYS9yZC9lZjBYYjVYZFVQenE3UldEc3ljUGw1NDlPV3h5OWg0SzE3MldSRUlTMTFBUTlXV043aFNmYi9nM1Y3eVVxUTNtTFFCZy9Ua3ptK1RYeWs3TGo3bUdBSEJwb1hWaHJxMHp0cklXckxUQ1QrL0tmL25qZlNPRlpCUVRBZ0lBUS9SQzJRcGlBSEJEMlhEaVRSYlhFQzFkRytxMjV1citsY1gyUU03c1NSc0F3QVp5MWxDM1ZXMUZwODR1QmJHWXFib3ZYNjUzcC9uZUxXay9rcElnaytBQU1GVjIyb0hRR0tqQ2pnUzlQdFVFZ0xkdXJkWmFZVi9XVUduYlZrcFc3UEI2eFZVSmtFUWNBQjdhM25WcG9UMCswNXBjbW80RTJaNFk3ckYyOUtXbmw5MlVxWjI3YVpzNi91SGRPdGRRM1NJa0pBMzJ5cFhHOUxKYlhZc1l3OTBES1JXNjBVSUNBQ0xSU1FBUmNBQjRlRmYzeE56YXVadHJRY3dra2M3d3ljTjlBTEMxeHhvdFdKTmxaMkt1ZGVMZW5CQTBYWEVVVEJNNjI5MmYrdXUwelJtT0ZxMVA3c2dyQTBQZENVdG5ZU3kzOWlTVUpsYzk2enNuaGw4c1ZhOHVPZ21EZldaUDk4Nit0SkNrYSt6cDQxdCsvWStWWXNaNDlQN2k1SkpUYllWRXhCQ0NtTDU2cUcrMG1LeTFveS91TDFpNnBraWxOMnZrVW56TkV3TjVDd0FRa0t0MnFERjhaRi94a1gzdjlXZU5JUkZzN3JLKzlmQVdKZHd6c0dualZCSVpuSDNwL3Q1MVRIY2dibWpNRFdWL3pzeFluSlFIeWhFQ0lFbUlxSURPRUR0eUF0V2tFWkdJaEFSZFEwUmdpQXF5c1NSdFhYbHAxZi9kaFdxMUZSN2IzZ1VBVXBMR2tHMzBic2JVbjhEdVloWjFGME5FQUlhb1VCVEc1SVdpVS9PSWlLQ012WHVuL2R0M2Focml4d2JTRzBURS8wTUdSQUFZekJ0N0JsSzZ4dTUrQndEa1UvcEl3WHhnSkt1QzJRa0RFYWs0c0gvTHYvUUJ3b0lQREFaRUpJZzRZK29JRUJBQXBhVC9ndGtWWnVBakRCOE1FV3F0OEcvVERSVkhvZzdIMG5xTFZkdHFLK3dvQUJBQlE2aTN3MW83N0FCaG5hNkRTSzY2RVJFMW5MQWR4S0JJLy95c1hiR0RNNU4xRlUzMUlseVBpZHA2WVR3eGE3dWgyQmd2eG1kc1YvVmdCRVhYQUhDdDdQeG1Zam1XOU1aMDg5cFNHd0M0RzRxMkx4NDcwTGZxaGhmbTE2Ykt6c205aGRNVHk0V01zYTJZVEJxOGJQczNWN3dkcGVURk82M1p1bmRpZCtIMmlydDNTMmF4R2ZUbnpOZk8xZytPWkN0MmFPbnM4RDA1THhJcFU3TzkyT1JNSlpVbERXMUx0L1g5RjI0dHJZYmwxYUEzYXp4M3ZySi9PTnViTWVjYmdSZkptWnJmMzJXMkE3R3RtT3BKbTFjV1dsNGtBV0RYNXRTZFJuQjBMRit4dytXMWNIZC9HZ0RhZ1VpYnZHS0h1c1pVMEZqTGo4ZEtxV2RQanY3OTFtcmRpU3pPVW9hMnVjdThkM1BLMHBtbE01T3pvWjZFcVRPTjRXZ3hlWFBGTFdVTUFPQWFJNExSWXBJekxLU05iRUwzSWpGYjllWWJmcTBkYWhxcTVIR0RzOStmcjJ3dEpFcFowOUpSRXZYbnpMOU1OVXlPc1lUYlZUZHRhbjRraUtEaGhBTjUwd3RsSnFFRGdKQzB5ZEpldkxoaTZreGpEQUJtYTk2QmtjeDlnNW1mbjFzc1pVMkxzdzU0NzlTOTB4TVZQeEtMVGUrMWF6VWlldk5HczlvS1ptdnUrWm5WZWp0bytaSHRSUXNOYjluMlg3MVNqV0pKUlBWMkVFVGl6R1N0MmdxYVRraEVUU2RzZVJFUnpkZmRaZHRYd2crcGd3K3RLYlZ1VjkyRnBuOTBMSytHbjQ5VStxcVNKWkZxbjZxa0pYWFlrWUFRT2lNaklvU3gxRlgzV1M4eEtRbHhRNldEYjFyL1FvQi9BcVpJR1hMM3pUaEVBQUFBYkdWWVNXWk5UUUFxQUFBQUNBQUVBUm9BQlFBQUFBRUFBQUErQVJzQUJRQUFBQUVBQUFCR0FTZ0FBd0FBQUFFQUFnQUFoMmtBQkFBQUFBRUFBQUJPQUFBQUFBQUFBRWdBQUFBQkFBQUFTQUFBQUFFQUFxQUNBQVFBQUFBQkFBQUVUYUFEQUFRQUFBQUJBQUFDb3dBQUFBQU95UDVmQUFBQUpYUkZXSFJrWVhSbE9tTnlaV0YwWlFBeU1ERTRMVEEzTFRFelZEQTBPalExT2pFeUt6QXdPakF3NmhaTzBnQUFBQ1YwUlZoMFpHRjBaVHB0YjJScFpua0FNakF4T0Mwd055MHhNMVF3TkRvME5Ub3hNaXN3TURvd01KdEw5bTRBQUFBWWRFVllkR1Y0YVdZNlJYaHBaa2x0WVdkbFRHVnVaM1JvQURZM05TQUpBTXdBQUFBWWRFVllkR1Y0YVdZNlJYaHBaa2x0WVdkbFYybGtkR2dBTVRFd01RWW5OcThBQUFBU2RFVllkR1Y0YVdZNlJYaHBaazltWm5ObGRBQTNPTW5VZXljQUFBQW9kRVZZZEdsall6cGpiM0I1Y21sbmFIUUFRMjl3ZVhKcFoyaDBJRUZ3Y0d4bElFbHVZeTRzSURJd01UZ3ZUQVZCQUFBQUYzUkZXSFJwWTJNNlpHVnpZM0pwY0hScGIyNEFSR2x6Y0d4aGVSY2JsYmdBQUFBQVNVVk9SSzVDWUlJPSJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAxOC0wNy0yMCJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMTgtMDctMjAifSx7ImFhZ3VpZCI6ImNmY2IxM2EyLTI0NGYtNGIzNi05MDc3LTgyYjc5ZDZhN2RlNyIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiY2ZjYjEzYTItMjQ0Zi00YjM2LTkwNzctODJiNzlkNmE3ZGU3IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlVTQi9ORkMgUGFzc2NvZGUgQXV0aGVudGljYXRvciJ9LCJkZXNjcmlwdGlvbiI6IlVTQi9ORkMgUGFzc2NvZGUgQXV0aGVudGljYXRvciIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9kZXIiXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfaW50ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MTAsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6MywiYmxvY2tTbG93ZG93biI6MH19XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQ0NUQ0NBYStnQXdJQkFnSUpBUEF6ZWdjVTZzVkFNQW9HQ0NxR1NNNDlCQU1DTUhZeEN6QUpCZ05WQkFZVEFrUkZNU0V3SHdZRFZRUUtFeGhKYm1acGJtVnZiaUJVWldOb2JtOXNiMmRwWlhNZ1FVY3hLVEFuQmdOVkJBc1RJRU5CSUdadmNpQkJkWFJvWlc1MGFXTmhkRzl5SUVGMGRHVnpkR0YwYVc5dU1Sa3dGd1lEVlFRREV4QkpibVpwYm1WdmJpQkdTVVJQSUVOQk1CNFhEVEU0TURReU5URXpNelV4TTFvWERUSXpNRE14TURFek16VXhNMW93ZGpFTE1Ba0dBMVVFQmhNQ1JFVXhJVEFmQmdOVkJBb1RHRWx1Wm1sdVpXOXVJRlJsWTJodWIyeHZaMmxsY3lCQlJ6RXBNQ2NHQTFVRUN4TWdRMEVnWm05eUlFRjFkR2hsYm5ScFkyRjBiM0lnUVhSMFpYTjBZWFJwYjI0eEdUQVhCZ05WQkFNVEVFbHVabWx1Wlc5dUlFWkpSRThnUTBFd1dUQVRCZ2NxaGtqT1BRSUJCZ2dxaGtqT1BRTUJCd05DQUFTVmJENG8rUXdsdGl4VG9PWlNGRXB0RHhEYStjWk9tbnk5clA4V3l4dGdjd0g0eU5JdDM3endkajU4b0dVZ2pCQ1VlRDhURE41MkFBRGE5S1NWT2Nzam95WXdKREFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VBTUE0R0ExVWREd0VCL3dRRUF3SUNCREFLQmdncWhrak9QUVFEQWdOSUFEQkZBaUExTmhxdUpOUCtXcjNMZTI5UjlCY3hkQUVKZDJZV3hIRHk4WkVpOWtoam1BSWhBS3pSZDlmNWRmNGtROVFBVU5aclNsVC9teTdPSVhpTXgwd0g4ZU1ZNDJGZiJdLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJGSURPXzJfMCJdLCJhYWd1aWQiOiJjZmNiMTNhMi0yNDRmLTRiMzYtOTA3Ny04MmI3OWQ2YTdkZTcifX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjAtMDQtMTYiLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IlNMRTc4IENUQVAgVVNCL05GQyBSZWYgRGVzaWduIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAxODA5MjYwMTUiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMy40IiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjAuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMC0wNC0xNiJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjAtMDQtMTYifSx7ImFhZ3VpZCI6Ijc2NjkyZGMxLWM1NmEtNDhkOS04ZTdkLTMxYjVjZWQ0MzBhYyIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiNzY2OTJkYzEtYzU2YS00OGQ5LThlN2QtMzFiNWNlZDQzMGFjIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlZlcmlNYXJrIE5GQysgVVNCLUEgU2VjdXJpdHkgS2V5In0sImRlc2NyaXB0aW9uIjoiVmVyaU1hcmsgTkZDKyBVU0ItQSBTZWN1cml0eSBLZXkiLCJhbHRlcm5hdGl2ZURlc2NyaXB0aW9ucyI6eyJlbi1VUyI6IlZlcmlNYXJrIE5GQysgVVNCLUEgU2VjdXJpdHkgS2V5In0sImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyNjIxNDUsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfSx7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciLCJzZWNwMzg0cjFfZWNkc2Ffc2hhMzg0X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQnREQ0NBVnFnQXdJQkFnSUpBSzI5MHNoN3FpUzlNQW9HQ0NxR1NNNDlCQU1DTURzeElEQWVCZ05WQkFNTUYwZHZWSEoxYzNRZ1JrbEVUeklnVW05dmRDQkRRU0F6TVJjd0ZRWURWUVFLREE1SGIxUnlkWE4wU1VRZ1NXNWpMakFnRncweU5UQTVNVFl3TmpRd01qWmFHQTh5TURVd01Ea3hOakEyTkRBeU5sb3dPekVnTUI0R0ExVUVBd3dYUjI5VWNuVnpkQ0JHU1VSUE1pQlNiMjkwSUVOQklETXhGekFWQmdOVkJBb01Ea2R2VkhKMWMzUkpSQ0JKYm1NdU1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRXJUVlliTmtYa09MQmxFSGVZT0EveHJyZ0k4UmZyMWZjdTBVY3c0SHFnVmdDSWE1QXFUdmZ5YjB5d2E0UlFneTdEaG1sK3NNcGhtZ3pxZ29sRFRsSzdLTkZNRU13RWdZRFZSMFRBUUgvQkFnd0JnRUIvd0lCQURBT0JnTlZIUThCQWY4RUJBTUNBUVl3SFFZRFZSME9CQllFRlBGaU90dVNTMmxLUnJhT0JZaUFkL2I2b3VuL01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lRRHA0dlQzWUZmV3lmMDljSjRld0Z2dDRldUJFaHUyZDVlb2JpdlQvTGczdVFJZ1NybVVqZlIwWUN3MjlsYWk0RWh6RUU0UmpyUTNYTHFkTjc3ZWJkZDlrRms9Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUxrQUFBQW9DQVlBQUFDaWwxdTZBQUFBQ1hCSVdYTUFBQVdKQUFBRmlRRnRhSjM2QUFBSURFbEVRVlI0bk8xYzBYSGJPQkI5ZTNQL2RnZGhLckJTZ1prS3JBNmlWSEM2Q2tKWGNFb0ZaaW80dTRJd0ZaeGNRZWdPckFyMlByQk1vT1VDQkNsS29oSytHWXdHSUxCWUFvK0xCYmdVQVdEczQ1NlpDMFJBUk5jQUtnQTM2dEl6TXk5aWJXZk1PRFgrR05odWd6YkJYd0RrQjJsellTQWlWaWsvdDA1RFFVU1Z1cGZpM0RxTmhkNGtKNklWZ0ErcWVBZGd5Y3l2WXlnMVk4YVk2RVZ5SWxvQWVEQXVyWmw1TzQ1S00yYU1pejlUSzNwK3VNWTlNNWRqS1hSaCtLYnk4MG8yQVFoWDBYZ1d5U1NISS9pVktudnEycVQreW1EbS9OdzZ6TmdIRVcwQUxBRnNpUWdBVmtra0o2SVN4a2tLZ05XSSt2V0d1RS9YZmhrelYrZlJwaCtzVGVvWXVoTlIzaVZITE4wQ3dLdm5aamEvMTNCem5SazYxc3hjcCtyUnAzNkNyRDFZOXloOHlPQU1jdk83QXR3Um9wOEtaa2FUcEpLdTh3b2c4K3VGa25TMmdSdEVMV2NMWUEzZ09sSFd0ZWhUR2JMODlBZ2dUNVMzanNqYml1N212VW83UHkwUytyTEdRZXNlbEdQSXphWE5xekZIcGErNzZMRHg2bFFCZVNIZGlnNDlTa09Qb2ZPY09sYTUwcUVRUGJad0QzS0IySTFJSlV0NEo0R2tmZEdocEQ4aHl3NVp5OEFBeGxJNW9yeVZJU05wWEdRYyt1cmU2czhnd21PaXJFTGE2UG9IazF6MHFFYWM1L1dBc1NvOFhiWXkzczFEc3JRbXltOWdkUllkZkUvWnNxZWlRZGtEWmNVbUpqYVJvNUhjRy9TaHVwdUVHQ2pYR3NPRFNBNXhlVVlheXo0UGk1WFduazZseUZwS1daRGtWb2RCeTVoZ3dXdTRweXVYdEpZeXYwN0xEWW9NZWcyMzlDNDltWnRBWFMzVElraXBaSzJ4Yi9sYUxvUWhRNU04cEh0amJYSXZsVWE5MThENFd2ZlpXSzFjZmxNZWdzcVRtWG4zM1VseWhJMmdQODlMaEZlYjFMR3FVOGNLQVhmSW1xZ2lNSWl0cHo0Z01EUGFscFlDc0MxU21YRHo2MGovVnYyaVE3K1l2R3NFZk5FQkV4ZGRyZ01FV3huNjZEcVBBWGxWZ0RnRjJnOStFUnF6Z0d5TGFLWVJoTDJ2cXhQbXJXWHhPMlNhOWEySnNpeEFiWkUwOGVhakR3ZHNpM0FkdS9sRGRCZ2lMOUpQWDVKM0dncTBWN2ROd3VSbUFWbVpVZGZVb1EvSkEzSk5ncWMrd0FQbk9Xb2dtMlM5OGRSSGhaREdxUzg2bGlwZnhDcUwzRklWNTRsOWhWQ3BmQmFyUExHWWswZVYxd0Z2T3YvRWdXTTZLWDlTeGRWUXhUeXNWWDVubEdsZE5uRHhUVDQwVi9wQ2oxVm1WYkpJcmhVQmdMV2NRVVloZGZaZUdISGEyVyt0OG9kR01tcDVieUxYQU9BckVXMklLRHV3M3pIUVpVejAySFNGVXh3ajNFS1RNOVVJYmxUKzdrQTlrZ3l2UmZJUzdhZi9Dc0JqODdvMGd0WjFJMUt2bFFEODB5Vm5MSWgxMDYvakFlQXZBTitKYUN1RVAvUkIrNVh4UnVXMVJRMmgwZ1VIcnFKSkQzQW9RR3VGdGtWL2crNmJHWXNZeHliWUNtNkp0WEFEUi9qL2lLaVdxTXNwUVU5czExaU5PcFlCVWlhUmpjOFV4R2VTWEpZZXkxKzY3WWd6UHBvRkhoTml6UmV3TGJxUE53QWVKTlo2S3ZlbWlYSVhjck9rWExzRW94T3R4Mzd0TEFqR3JqRHpsb2p1QVh4U2x6NFIwWmFaTGF0ZUdmWHZCK2hWRDJqVEMwTDBYQ3pUQ3UwWWVSKzMrSG1PZm01VVJsa0plN05lcXZ3dTBQNlhSalJBaTVrTEljR3R1bFJLSUpDMkNxMG5taWNlcFNnYjQ0cUkxbkFrWHNMZUVOMFIwZUpjUzI0RFpxNko2RE9jUzlYZ2xvaWFGMHl2a0xOOXRFL0tOb2RhWFdhdUpMcnZCMUtDd3FSZWRramZRNUh5MGNRU2JmLzFDbzdvZTB1NEVHQ3ZMaEZOd2ZwMWdwbGZtYmxrNWlXQXQyaHZ2b0ZwV0hMQUVmaFpsZDBBK0JmQVYvbTF2cjh0UnVwLzZGRmdicFFkM1doMGtqemluOStndlJ3QzdjMXA5UHgwaW1EbVdzaXVKek03Z3pvdHlKeWtubWdBYnUrUmo2aENwZktyeEQzTFN1V2ZUK0hQSjMzK0prdVI1VnZmR1J2UlV1VnZKM2hDa1FvOUFmVTVsTkFnb2dydHZZK0ZKd0FmbVRrZlFLYllxVXlwOGxkb240SHZRVmIwbHR2YlU2ZEJTUDdHVTVZNjZ6VGlrKytTeUFPaDZ6MmtFSjJJc2xPY1lrZy8wYU0xMll2b0piOCtsazZwa0hIVVpIblB6QVRuWnIxdjhzeTg1UFJQRTJ1VnZ3dU5VV0NPUDhpK3h0SzVpUXowc1RQS2pvSytYK3RiL2puZy9QUE15NitNZXMxUjNON1NSa1FMS2FzQWZNZHB2alphdzUyRGI0bG83MjJ1NkZQQStiWStkdWpuSWh3TG1jcS9OSnMrY2JPcXhMZk1HdGE5bFVTMEZLT1FxMnRydE9mNEg1bmpKZkREbUJTd1A1MWNuL0xvc1JXaDFoRVVreHR0bXNBdVA3QnFnV0d4eHR1dS9oSUNkNkp0MEE2Q1Nra3JvNTlqQkdnVnNUYkdkWVlqVVJQZXFsT2ZyNHdzMmJIN1d3NFlSek9RYXFSNU5zZlhtcWdveVRzR28xVDFGZ01KZFdnVVlyQU53bDg3OVNMNEdVaytSSCtHczlUbWZTajVvZmh2a3hzRDV0amsxMGp6Ykk3dm9IL1FZdWVmNnlNc1FQbGx6THhsNWd6QTM3QUR2M3k4QVBnTTRDMGZjUmxqZDh6NVR2cUs2YlFEOEVYMEtZK2xUMStJL3A4SE5MMkRjeG0zc2YwSXUxT2xlOWh1YWF1ZDZMTkFmSTc5c1N4NjZuMHdxREhuSituTStlMlpjV2w3VEdMSDRIMjU3c1AvaW4xeWtIR3MwQTZVU3NVT3pvMnBPL3BaNEdlb1J0MVYzOU10ODRyT1BwWW5KZm1Nd3lIRXE3Qy9rZnVDOE1uUEFtNVoxeHUvYi95Yi9HL01UUElMZ3F3Nk5YNFNkZ2UzRDRoYVNtbTNRVHMrNTkyNXJld3BNUFJmYldlY0IydnNXK1JOQ2tuWmhTeXMwUGFaOC9GVW15NW1rbDhXZEhoRjFiTjlyZkpUQ1I4K0ttYVNYeGIwRzlpK0pNMVVmdEp4NEdOaEp2bGxRUi9yclZJYnl0R3VQbzJwRHRUbklqQ1QvTEtnWDczZkVkRmpMRTZiaUs3bDFicitqdmJsZDloMEF2UHB5a1ZCeVB3OWNQa1pMclNpOXNwQ3g0ZUFDK0txUmxOdXdwaEpmbUdRS01TSEE4VjhuTkpiM0dOamRsY3VERUxPOStnT2s3RHdBbWZCeXpGMW1qcG1TMzdCa0pEV0psa3VDZUNJWGNIOVgrSVVRb1ZQanY4QjdReUMxTUMrZWljQUFBQUFTVVZPUks1Q1lJST0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xIiwiRklET18yXzFfUFJFIl0sImV4dGVuc2lvbnMiOlsidXZtIiwiY3JlZEJsb2IiLCJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwibGFyZ2VCbG9iS2V5IiwibWluUGluTGVuZ3RoIl0sImFhZ3VpZCI6Ijc2NjkyZGMxYzU2YTQ4ZDk4ZTdkMzFiNWNlZDQzMGFjIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6dHJ1ZSwidXAiOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJsYXJnZUJsb2JzIjp0cnVlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6dHJ1ZSwiYWx3YXlzVXYiOmZhbHNlfSwibWF4TXNnU2l6ZSI6MTYwMCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0Ijo4LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjk2LCJ0cmFuc3BvcnRzIjpbIm5mYyIsInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi0zNX1dLCJtYXhTZXJpYWxpemVkTGFyZ2VCbG9iQXJyYXkiOjQwOTYsImZvcmNlUElOQ2hhbmdlIjpmYWxzZSwibWluUElOTGVuZ3RoIjo0LCJmaXJtd2FyZVZlcnNpb24iOjI2MjE0NSwibWF4Q3JlZEJsb2JMZW5ndGgiOjMyLCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6MiwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjUwfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMTAtMjciLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MjYyMTQ1LCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IktlbnNpbmd0b24gVmVyaU1hcmsgTkZDKyBVU0ItQSBTZWN1cml0eSBLZXkiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI1MTAyNzAwMyIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUHJvZmlsZXMiOlsiY29uc3VtZXIiXSwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0xMC0yNyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyNjIxNDV9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjYtMDItMTEifSx7ImFhZ3VpZCI6IjkxYWQ2YjkzLTI2NGItNDk4Ny04NzM3LTNhNjkwY2FkNjkxNyIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiOTFhZDZiOTMtMjY0Yi00OTg3LTg3MzctM2E2OTBjYWQ2OTE3IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlRva2VuIFJpbmcgRklETzIgQXV0aGVudGljYXRvciJ9LCJkZXNjcmlwdGlvbiI6IlRva2VuIFJpbmcgRklETzIgQXV0aGVudGljYXRvciIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19zdXJyb2dhdGUiLCJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUIvRENDQWFHZ0F3SUJBZ0lVRUwvV2taZm54RHc5czg1WHpVU0pneWNKanJRd0NnWUlLb1pJemowRUF3SXdjVEVMTUFrR0ExVUVCaE1DVlZNeEVUQVBCZ05WQkFnTUNFNWxkeUJaYjNKck1SWXdGQVlEVlFRS0RBMVViMnRsYm1sNlpTQkpibU11TVNJd0lBWURWUVFMREJsQmRYUm9aVzUwYVdOaGRHOXlJRUYwZEdWemRHRjBhVzl1TVJNd0VRWURWUVFEREFwVWIydGxiaUJTYVc1bk1CNFhEVEl4TURZeU1URTJNVGN6TkZvWERUTXhNRFl4T1RFMk1UY3pORm93ZXpFTE1Ba0dBMVVFQmhNQ1ZWTXhFVEFQQmdOVkJBZ01DRTVsZHlCWmIzSnJNUll3RkFZRFZRUUtEQTFVYjJ0bGJtbDZaU0JKYm1NdU1TSXdJQVlEVlFRTERCbEJkWFJvWlc1MGFXTmhkRzl5SUVGMGRHVnpkR0YwYVc5dU1SMHdHd1lEVlFRRERCUlViMnRsYmpFZ1FYVjBhR1Z1ZEdsallYUnZjakJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCTGN3VTVBZG5RYVlibExpVzRYc3dEOHM2emVRK25FQXZLS2p4eTMyUEsxQ1dVeHZ2NVJBZ1E2d1VRSkpZVlU0UmNxVmZkckdGcUk5ZElBdXYxbmVjM3lqRFRBTE1Ba0dBMVVkRXdRQ01BQXdDZ1lJS29aSXpqMEVBd0lEU1FBd1JnSWhBTHQrSHozbCtnZlpHRUFtL2VlNU1ncDJJQkN3K1VZTFNnN3IyTFhSQzlTa0FpRUExemp6ZWo2dHo5c29TMG96MlZzNEQ2QXR6b1hZMkhXWkJnWXQ4RzFLbmlFPSJdLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJGSURPXzJfMCIsIlUyRl9WMiJdLCJleHRlbnNpb25zIjpbImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6IjkxYWQ2YjkzMjY0YjQ5ODc4NzM3M2E2OTBjYWQ2OTE3Iiwib3B0aW9ucyI6eyJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXYiOnRydWV9LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxXX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIyLTAxLTI1IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIsInVybCI6Imh0dHBzOi8vdG9rZW5yaW5nLmNvbS8iLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IlRva2VuIFJpbmciLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDIyMDEyNTAwMiIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMyJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMi0wMS0yNSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIzLTAxLTExIn0seyJhYWd1aWQiOiJhMDIxNDBiNy0wY2JkLTQyZTEtYTliNS1hMzlkYTI1NDUxMTQiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6ImEwMjE0MGI3LTBjYmQtNDJlMS1hOWI1LWEzOWRhMjU0NTExNCIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJGZWl0aWFuIEJpb1Bhc3MgRklETzIgUGx1cyAoRW50ZXJwcmlzZSBQcm9maWxlKSJ9LCJkZXNjcmlwdGlvbiI6IkZlaXRpYW4gQmlvUGFzcyBGSURPMiBQbHVzIChFbnRlcnByaXNlIFByb2ZpbGUpIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfSx7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlCMkRDQ0FYNmdBd0lCQWdJUUJUbWszWndpbEZYanNaeXdIRG5NZ0RBS0JnZ3Foa2pPUFFRREFqQkxNUXN3Q1FZRFZRUUdFd0pEVGpFZE1Cc0dBMVVFQ2d3VVJtVnBkR2xoYmlCVVpXTm9ibTlzYjJkcFpYTXhIVEFiQmdOVkJBTU1GRVpsYVhScFlXNGdSa2xFVHlCU2IyOTBJRU5CTUNBWERUSXlNRFl3T0RBd01EQXdNRm9ZRHpJd05USXdOakEzTWpNMU9UVTVXakJMTVFzd0NRWURWUVFHRXdKRFRqRWRNQnNHQTFVRUNnd1VSbVZwZEdsaGJpQlVaV05vYm05c2IyZHBaWE14SFRBYkJnTlZCQU1NRkVabGFYUnBZVzRnUmtsRVR5QlNiMjkwSUVOQk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRW5mQUtianZNWDFFeTFiNmsrV1FRZE5WTXQ5SmdHV3lKM1B2TTRCU0s1WHFUZm8rKzBvQWovNHRud3lJTDBIRkJSOVN0K2t0anFTWERmamlYQXVyczg2TkNNRUF3SFFZRFZSME9CQllFRk5HaG1FMkJmOE81YS9ZSFo3MVFFdjZRUmZGVU1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0RnWURWUjBQQVFIL0JBUURBZ0VHTUFvR0NDcUdTTTQ5QkFNQ0EwZ0FNRVVDSUJ5Uno0T0FsUlo5SHo5S1Y3ZzJRTnRDMEM4SnhIL3hMSlk4RlpFbXRKM3NBaUVBc3JlVDArZU5rTmNVakk5aDVPUENvSDZObXNPa2d2RUFCSlpyRjA3QURrWT0iLCJNSUlCMlRDQ0FYNmdBd0lCQWdJUUZRTktXKzd6YmcvN2QrbFR5cklXd0RBS0JnZ3Foa2pPUFFRREFqQkxNUXN3Q1FZRFZRUUdFd0pWVXpFZE1Cc0dBMVVFQ2d3VVJtVnBkR2xoYmlCVVpXTm9ibTlzYjJkcFpYTXhIVEFiQmdOVkJBTU1GRVpsYVhScFlXNGdSa2xFVHlCU2IyOTBJRU5CTUNBWERUSXlNRFl3T0RBd01EQXdNRm9ZRHpJd05USXdOakEzTWpNMU9UVTVXakJMTVFzd0NRWURWUVFHRXdKVlV6RWRNQnNHQTFVRUNnd1VSbVZwZEdsaGJpQlVaV05vYm05c2IyZHBaWE14SFRBYkJnTlZCQU1NRkVabGFYUnBZVzRnUmtsRVR5QlNiMjkwSUVOQk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRXNGWUVFaGlKdXFxbk1nUWpTaWl2QmpWN0RHQ1RmNFhCQkgvQjd1dlpzS3hYU2hGMEw4dURJU1dVdmNFeGl4UnM2Z0Izb2xkU3Jqb3g2TDhUOTROT3pxTkNNRUF3SFFZRFZSME9CQllFRkV1OWh5WVJyUnlKendSWXZuRFNDSXhyRmlPM01BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0RnWURWUjBQQVFIL0JBUURBZ0VHTUFvR0NDcUdTTTQ5QkFNQ0Ewa0FNRVlDSVFDQjBORlFTTjB6NGxXei95YzM2ZXdyVEN6dHRLL3FGdmxhUE9LaCtUMW82d0loQVAwb0tLQStjaWNzRHkzWTNuK1ZsUDhlQjNQQnpNa2h2Vy85SVNYQ3crVkIiLCJNSUlCMkRDQ0FYK2dBd0lCQWdJUkFNczhZWFZCb0JOdVhVanFmQ29YN3k0d0NnWUlLb1pJemowRUF3SXdTekVMTUFrR0ExVUVCaE1DVlZNeEhUQWJCZ05WQkFvTUZFWmxhWFJwWVc0Z1ZHVmphRzV2Ykc5bmFXVnpNUjB3R3dZRFZRUUREQlJHWldsMGFXRnVJRVpKUkU4Z1JVRWdVbTl2ZERBZ0Z3MHlNekF4TURFd01EQXdNREJhR0E4eU1EVXlNVEl6TVRJek5UazFPVm93U3pFTE1Ba0dBMVVFQmhNQ1ZWTXhIVEFiQmdOVkJBb01GRVpsYVhScFlXNGdWR1ZqYUc1dmJHOW5hV1Z6TVIwd0d3WURWUVFEREJSR1pXbDBhV0Z1SUVaSlJFOGdSVUVnVW05dmREQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJEMkxISEFRcVliZFIxV1psdWVydE0zMHJXaG9yWWF2V21NVmE0bmRYOVBad3VSRXBMUTRtMW5FbHFRS01uUkU4LzRDK1Jxd2lhdittcEk0a3hkNWU1dWpRakJBTUIwR0ExVWREZ1FXQkJTM1paanlHbGhaOTlOMXZMb1RQWFZVYTRaRVlEQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01BNEdBMVVkRHdFQi93UUVBd0lCQmpBS0JnZ3Foa2pPUFFRREFnTkhBREJFQWlBb0QrUjZrb2xJV2FOSno0aHowM0QzZ2VzM0diTUJqQVdwa09VZzlheUZnd0lnYkV3N0FZU3lrNjhPdnhnWGV6Z25kVFJURXVTV1QrZmRSbkxhQk5zYVR3MD0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBRkFBQUFBVUNBTUFBQUF0QmtybEFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFCSFpwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFBRHcvZUhCaFkydGxkQ0JpWldkcGJqMGk3N3UvSWlCcFpEMGlWelZOTUUxd1EyVm9hVWg2Y21WVGVrNVVZM3ByWXpsa0lqOCtJRHg0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJa0ZrYjJKbElGaE5VQ0JEYjNKbElEVXVOaTFqTURFMElEYzVMakUxTmpjNU55d2dNakF4TkM4d09DOHlNQzB3T1RvMU16b3dNaUFnSUNBZ0lDQWdJajRnUEhKa1pqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWo0Z1BISmtaanBFWlhOamNtbHdkR2x2YmlCeVpHWTZZV0p2ZFhROUlpSWdlRzFzYm5NNmVHMXdQU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2SWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhodGJHNXpPbkJvYjNSdmMyaHZjRDBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5d2FHOTBiM05vYjNBdk1TNHdMeUlnZUcxc2JuTTZlRzF3VFUwOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXRiUzhpSUhodGJHNXpPbk4wVW1WbVBTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZjMVI1Y0dVdlVtVnpiM1Z5WTJWU1pXWWpJaUI0YlhBNlEzSmxZWFJ2Y2xSdmIydzlJa0ZrYjJKbElGQm9iM1J2YzJodmNDQkRReUF5TURFMElDaE5ZV05wYm5SdmMyZ3BJaUI0YlhBNlEzSmxZWFJsUkdGMFpUMGlNakF4TmkweE1pMHpNRlF4TkRvek16b3dPQ3N3T0Rvd01DSWdlRzF3T2sxdlpHbG1lVVJoZEdVOUlqSXdNVFl0TVRJdE16QlVNRGM2TXpFNk5Ua3JNRGc2TURBaUlIaHRjRHBOWlhSaFpHRjBZVVJoZEdVOUlqSXdNVFl0TVRJdE16QlVNRGM2TXpFNk5Ua3JNRGc2TURBaUlHUmpPbVp2Y20xaGREMGlhVzFoWjJVdmNHNW5JaUJ3YUc5MGIzTm9iM0E2U0dsemRHOXllVDBpTWpBeE5pMHhNaTB6TUZReE5Ub3pNRG95Tnlzd09Eb3dNQ1lqZURrNzVwYUg1THUySU9hY3F1YWdoK21pbUMweElPVzNzdWFKaytXOGdDWWplRUU3SWlCNGJYQk5UVHBKYm5OMFlXNWpaVWxFUFNKNGJYQXVhV2xrT2pKRk56RkNSa1pEUXpZM1JqRXhSVFk1TnpoRVFUbERRa0kyTkRZelJqa3dJaUI0YlhCTlRUcEViMk4xYldWdWRFbEVQU0o0YlhBdVpHbGtPakpGTnpGQ1JrWkVRelkzUmpFeFJUWTVOemhFUVRsRFFrSTJORFl6Umprd0lqNGdQSGh0Y0UxTk9rUmxjbWwyWldSR2NtOXRJSE4wVW1WbU9tbHVjM1JoYm1ObFNVUTlJbmh0Y0M1cGFXUTZNa1UzTVVKR1JrRkROamRHTVRGRk5qazNPRVJCT1VOQ1FqWTBOak5HT1RBaUlITjBVbVZtT21SdlkzVnRaVzUwU1VROUluaHRjQzVrYVdRNk1rVTNNVUpHUmtKRE5qZEdNVEZGTmprM09FUkJPVU5DUWpZME5qTkdPVEFpTHo0Z1BDOXlaR1k2UkdWelkzSnBjSFJwYjI0K0lEd3ZjbVJtT2xKRVJqNGdQQzk0T25odGNHMWxkR0UrSUR3L2VIQmhZMnRsZENCbGJtUTlJbklpUHo0NzdKWEZBQUFBWUZCTVZFWC8vLzhFVnFJWFphdkcyT29xY0xHMnpPT2t3dDBCU0p0cWxjWFY0dSthdXRsV2hiems3UFVBTVk5SGNyS2p0TmJxOGZlQWw4YUJvc3p6OXZwZGpzR0dxdEYzbjh1VHNOU1pwYzZKc05UNSt2MHhZS251OFBmZjUvTDQ4ZmcvZnJpY3pKZ1lBQUFEQUVsRVFWUjQya1JVQ1piRElBakZYWk9ZMVRhdE5jMzliemtzU1ljM3I0TUU0Zk1CQWFENnpsOHkvOVRPZ2V0OGQ1amZONzhid00vZERDUnBSNTIxelhmb2pISjA1SUl5aEJBVVNWQU9OZEd6Qll0MmY3S0ZyZmtKYUFrSGg5RlpoY0RYSFJrVEtvOU1MaWhHYWF2SW1uVjNxeUVYMEVwcmd6LzREd1VEN2tDSFJuZDhRRk40M0dvNFVWbUREZ3phNHcyN29pemRBMitjSyt1dVVwampvMit4d2MvNDJXNTB4NUxHWWVEQnNSMEhWSXg1eDhpRjYwQ2JsYlRFRWtGcjI3Yk5EQlVWU3ExT0tWUGJFNjJiM0VIOEZxQmc1T09PRXVjMnQ4WkppcU1PdUdwK2NLamc3d1ZHY2VvenFONHB4Z1ZQUWtqRllnYlZKS0RVaERDallyYXdQNXE0RVRnQzlmSU1SSHRpdHBRY0N2Sk9FTGNiTXNRZ25jaVJrbGpweVFqdkc0NGpxQlVFVEZpQmkxUEVJeWVrT3pzVytUeTVjTEhvczVSK2RNUzFMdFNTeGYzZ1FIY3pSMkNJNGdNTnBXNElSQTFRTWE2dEo0K0M2dUh1R0U4bU5ESXlGcWcvT1AvTU1VdWVTNklxOFM5MGRBZUJKU0V5L3FLa0srQk53ejhjWVk0amI1SjZ1NGlXQ0kyQjFaNTZMVzVrRWM0aGtkTXBzdlVDNTU4NVNYMFF1YmNnTnF5ZmdERkVjVHQrNDAvMFM1Tngwd2FDdzNPS2tjT2JBNUluMEFZcDAxcGpqdzJuNjI2VURqdEh3YTI4aUh1VEtxdHJ2K3JlVzQxTlo2aUdscjd1dUxKQ2ZrRnRjdGNHMDRzZ20xZU5TK1phRG5wYVRFckdveVg1SksyaU16OHhzMG5Pd1dHY1BETjQ5cWFDZDRiekpvekRabS9hQksrRW96THcrWGhOQmlZd0hmMHNpT3UxWFBrRy96S3d2cVlLY2ZTd0RFY0gvb1VlMDdlcy9XUThySXlnMkRPWGo4dGprWmR1REIvYjhoekRsbE1NT0NTNUJFbmQ1MzRmOHRpM1VaYzRrTXMzeEx5YWZNU3NKaGRHOFhQcWpOazV0QWdPMjVmZUtDaG5WZERqL0owRk1rT3NVL3hNQnYwd0ZoWWVFR2ZWSDEzZnVEVTB5REZMYTRmYzdSbldIQmZ1VEZWMnRFbU53YWRjN2FjM1VZMmpmQmw3SFQzNmZlMzRpUU81bU5DRkZCVzA3S2pQZ3FoT0xVMDF2WjhQdWVaMkpDbEZaTjhqa1VzNjl1a2E5ZVBwNitFZkw0QUY1K055d1NiaXJIdGNCOE1sL2drd0FFamtLNjRLakhQZUFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xIiwiRklET18yXzFfUFJFIl0sImV4dGVuc2lvbnMiOlsiY3JlZEJsb2IiLCJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwibGFyZ2VCbG9iS2V5IiwibWluUGluTGVuZ3RoIl0sImFhZ3VpZCI6ImEwMjE0MGI3MGNiZDQyZTFhOWI1YTM5ZGEyNTQ1MTE0Iiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJ1diI6ZmFsc2UsInBpblV2QXV0aFRva2VuIjp0cnVlLCJub01jR2FQZXJtaXNzaW9uc1dpdGhDbGllbnRQaW4iOmZhbHNlLCJsYXJnZUJsb2JzIjp0cnVlLCJlcCI6ZmFsc2UsImJpb0Vucm9sbCI6ZmFsc2UsInVzZXJWZXJpZmljYXRpb25NZ210UHJldmlldyI6ZmFsc2UsInV2QmlvRW5yb2xsIjp0cnVlLCJhdXRobnJDZmciOnRydWUsInV2QWNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjp0cnVlLCJhbHdheXNVdiI6ZmFsc2V9LCJtYXhNc2dTaXplIjoxNDAwLCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjYsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6OTYsInRyYW5zcG9ydHMiOlsidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN31dLCJtYXhTZXJpYWxpemVkTGFyZ2VCbG9iQXJyYXkiOjEwMjQsIm1pblBJTkxlbmd0aCI6NCwibWF4Q3JlZEJsb2JMZW5ndGgiOjMyLCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6MywicHJlZmVycmVkUGxhdGZvcm1VdkF0dGVtcHRzIjo1LCJ1dk1vZGFsaXR5IjoyLCJyZW1haW5pbmdEaXNjb3ZlcmFibGVDcmVkZW50aWFscyI6MTI4fX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMDktMjYiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJGZWl0aWFuIEJpb1Bhc3MgRklETzIgUGx1cyAoRW50ZXJwcmlzZSBQcm9maWxlKSIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjQwOTI2MDAzIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMDktMjYiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MX1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNC0xMS0yMCJ9LHsiYWFndWlkIjoiNTc1MzM2MmItNGU2Yi02MzQ1LTdiMmYtMjU1NDM4NDA0Yzc1IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI1NzUzMzYyYi00ZTZiLTYzNDUtN2IyZi0yNTU0Mzg0MDRjNzUiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiV2lTRUNVUkUgQmxlbnRpdHkgRklETzIgQXV0aGVudGljYXRvciJ9LCJkZXNjcmlwdGlvbiI6IldpU0VDVVJFIEJsZW50aXR5IEZJRE8yIEF1dGhlbnRpY2F0b3IiLCJhbHRlcm5hdGl2ZURlc2NyaXB0aW9ucyI6eyJ6aC1UVyI6IldpU0VDVVJFIEJsZW50aXR5IEZJRE8yIOi6q-S7vempl-itieWZqCJ9LCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MiwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9LHsibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQ016Q0NBZG1nQXdJQkFnSVViYXJWOFBxQzlJbmsxZGtvRFh1TzV6aFA4Mmd3Q2dZSUtvWkl6ajBFQXdJd2VERUxNQWtHQTFVRUJoTUNWRmN4S2pBb0JnTlZCQW9NSVZkcFUwVkRWVkpGSUZSbFkyaHViMnh2WjJsbGN5QkRiM0p3YjNKaGRHbHZiakVpTUNBR0ExVUVDd3daUVhWMGFHVnVkR2xqWVhSdmNpQkJkSFJsYzNSaGRHbHZiakVaTUJjR0ExVUVBd3dRVjJsVFJVTlZVa1VnVW05dmRDQkRRVEFnRncweU1qQXpNak13TkRBeU5UZGFHQTh5TURVeU1ETXhOVEEwTURJMU4xb3dlREVMTUFrR0ExVUVCaE1DVkZjeEtqQW9CZ05WQkFvTUlWZHBVMFZEVlZKRklGUmxZMmh1YjJ4dloybGxjeUJEYjNKd2IzSmhkR2x2YmpFaU1DQUdBMVVFQ3d3WlFYVjBhR1Z1ZEdsallYUnZjaUJCZEhSbGMzUmhkR2x2YmpFWk1CY0dBMVVFQXd3UVYybFRSVU5WVWtVZ1VtOXZkQ0JEUVRCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQlBOV0xLQUdPVWZScEJPSEVmamRMcldQNnNIa0ZURVBPeFVkT3p1NStTVkFSNEtxTm90dndsdDhaVExGeTZ0Q1YvOUNxMWZRRUpjYmxwQUczTTJ2K3BhalB6QTlNQjBHQTFVZERnUVdCQlJNcnB6L1Vvb21FeEZJU2g2YUtaUUcyN0piampBTUJnTlZIUk1FQlRBREFRSC9NQTRHQTFVZER3RUIvd1FFQXdJQkJqQUtCZ2dxaGtqT1BRUURBZ05JQURCRkFpQWVJSEVpckNWQ3VPeWE2aC9yYUg0T1paYnF1OTQzNFpVR1lCR1F0Z0RUblFJaEFPeWxBM3o2S0N3R0xuYkZCd2lLRHdqY2gwakV1ek5ndmRoTHR5aG5FbVJKIl0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWdDQUlBQUFEOEdPMmpBQUFBQ1hCSVdYTUFBQzRqQUFBdUl3RjRwVDkyQUFBS1QybERRMUJRYUc5MGIzTm9iM0FnU1VORElIQnliMlpwYkdVQUFIamFuVk5uVkZQcEZqMzMzdlJDUzRpQWxFdHZVaFVJSUZKQ2k0QVVrU1lxSVFrUVNvZ2hvZGtWVWNFUlJVVUVHOGlnaUFPT2pvQ01GVkVzRElvSzJBZmtJYUtPZzZPSWlzcjc0WHVqYTlhODkrYk4vclhYUHVlczg1Mnp6d2ZBQ0F5V1NETlJOWUFNcVVJZUVlQ0R4OFRHNGVRdVFJRUtKSEFBRUFpelpDRnovU01CQVBoK1BEd3JJc0FIdmdBQmVOTUxDQURBVFp2QU1CeUgvdy9xUXBsY0FZQ0VBY0Iwa1RoTENJQVVBRUI2amtLbUFFQkdBWUNkbUNaVEFLQUVBR0RMWTJMakFGQXRBR0FuZitiVEFJQ2QrSmw3QVFCYmxDRVZBYUNSQUNBVFpZaEVBR2c3QUt6UFZvcEZBRmd3QUJSbVM4UTVBTmd0QURCSlYyWklBTEMzQU1ET0VBdXlBQWdNQURCUmlJVXBBQVI3QUdESUl5TjRBSVNaQUJSRzhsYzg4U3V1RU9jcUFBQjRtYkk4dVNRNVJZRmJDQzF4QjFkWExoNG96a2tYS3hRMllRSmhta0F1d25tWkdUS0JOQS9nODh3QUFLQ1JGUkhnZy9QOWVNNE9yczdPTm82MkRsOHQ2cjhHL3lKaVl1UCs1YytyY0VBQUFPRjBmdEgrTEMrekdvQTdCb0J0L3FJbDdnUm9YZ3VnZGZlTFpySVBRTFVBb09uYVYvTncrSDQ4UEVXaGtMbloyZVhrNU5oS3hFSmJZY3BYZmY1bndsL0FWLzFzK1g0OC9QZjE0TDdpSklFeVhZRkhCUGpnd3N6MFRLVWN6NUlKaEdMYzVvOUgvTGNMLy93ZDB5TEVTV0s1V0NvVTQxRVNjWTVFbW96ek1xVWlpVUtTS2NVbDB2OWs0dDhzK3dNKzN6VUFzR28rQVh1UkxhaGRZd1AyU3ljUVdIVEE0dmNBQVBLN2I4SFVLQWdEZ0dpRDRjOTMvKzgvL1VlZ0pRQ0Faa21TY1FBQVhrUWtMbFRLc3ovSENBQUFSS0NCS3JCQkcvVEJHQ3pBQmh6QkJkekJDL3hnTm9SQ0pNVENRaEJDQ21TQUhISmdLYXlDUWlpR3piQWRLbUF2MUVBZE5NQlJhSWFUY0E0dXdsVzREajF3RC9waENKN0JLTHlCQ1FSQnlBZ1RZU0hhaUFGaWlsZ2pqZ2dYbVlYNEljRklCQktMSkNESmlCUlJJa3VSTlVneFVvcFVJRlZJSGZJOWNnSTVoMXhHdXBFN3lBQXlndnlHdkVjeGxJR3lVVDNVRExWRHVhZzNHb1JHb2d2UVpIUXhtbzhXb0p2UWNyUWFQWXcyb2VmUXEyZ1AybzgrUThjd3dPZ1lCelBFYkRBdXhzTkNzVGdzQ1pOank3RWlyQXlyeGhxd1Zxd0R1NG4xWTgreGR3UVNnVVhBQ1RZRWQwSWdZUjVCU0ZoTVdFN1lTS2dnSENRMEVkb0pOd2tEaEZIQ0p5S1RxRXUwSnJvUitjUVlZakl4aDFoSUxDUFdFbzhUTHhCN2lFUEVOeVFTaVVNeUo3bVFBa214cEZUU0V0SkcwbTVTSStrc3FaczBTQm9qazhuYVpHdXlCem1VTENBcnlJWGtuZVRENURQa0crUWg4bHNLbldKQWNhVDRVK0lvVXNwcVNobmxFT1UwNVFabG1ESkJWYU9hVXQyb29WUVJOWTlhUXEyaHRsS3ZVWWVvRXpSMW1qbk5neFpKUzZXdG9wWFRHbWdYYVBkcHIraDB1aEhkbFI1T2w5Qlgwc3ZwUitpWDZBUDBkd3dOaGhXRHg0aG5LQm1iR0FjWVp4bDNHSytZVEtZWjA0c1p4MVF3TnpIcm1PZVpENWx2VlZncXRpcDhGWkhLQ3BWS2xTYVZHeW92VkttcXBxcmVxZ3RWODFYTFZJK3BYbE45cmtaVk0xUGpxUW5VbHF0VnFwMVE2MU1iVTJlcE82aUhxbWVvYjFRL3BINVovWWtHV2NOTXcwOURwRkdnc1YvanZNWWdDMk1aczNnc0lXc05xNFoxZ1RYRUpySE4yWHgyS3J1WS9SMjdpejJxcWFFNVF6TktNMWV6VXZPVVpqOEg0NWh4K0p4MFRnbm5LS2VYODM2SzNoVHZLZUlwRzZZMFRMa3haVnhycXBhWGxsaXJTS3RScTBmcnZUYXU3YWVkcHIxRnUxbjdnUTVCeDBvblhDZEhaNC9PQlozblU5bFQzYWNLcHhaTlBUcjFyaTZxYTZVYm9idEVkNzl1cCs2WW5yNWVnSjVNYjZmZWViM24raHg5TC8xVS9XMzZwL1ZIREZnR3N3d2tCdHNNemhnOHhUVnhiendkTDhmYjhWRkRYY05BUTZWaGxXR1g0WVNSdWRFOG85VkdqVVlQakduR1hPTWs0MjNHYmNhakpnWW1JU1pMVGVwTjdwcFNUYm1tS2FZN1REdE14ODNNemFMTjFwazFtejB4MXpMbm0rZWIxNXZmdDJCYWVGb3N0cWkydUdWSnN1UmFwbG51dHJ4dWhWbzVXYVZZVlZwZHMwYXRuYTBsMXJ1dHU2Y1JwN2xPazA2cm50Wm53N0R4dHNtMnFiY1pzT1hZQnR1dXRtMjJmV0ZuWWhkbnQ4V3V3KzZUdlpOOXVuMk4vVDBIRFlmWkRxc2RXaDErYzdSeUZEcFdPdDZhenB6dVAzM0Y5SmJwTDJkWXp4RFAyRFBqdGhQTEtjUnBuVk9iMDBkbkYyZTVjNFB6aUl1SlM0TExMcGMrTHBzYnh0M0l2ZVJLZFBWeFhlRjYwdldkbTdPYnd1Mm8yNi91TnU1cDdvZmNuOHcwbnltZVdUTnowTVBJUStCUjVkRS9DNStWTUd2ZnJINVBRMCtCWjdYbkl5OWpMNUZYcmRld3Q2VjNxdmRoN3hjKzlqNXluK00rNHp3MzNqTGVXVi9NTjhDM3lMZkxUOE52bmwrRjMwTi9JLzlrLzNyLzBRQ25nQ1VCWndPSmdVR0JXd0w3K0hwOEliK09QenJiWmZheTJlMUJqS0M1UVJWQmo0S3RndVhCclNGb3lPeVFyU0gzNTVqT2tjNXBEb1ZRZnVqVzBBZGg1bUdMdzM0TUo0V0hoVmVHUDQ1d2lGZ2EwVEdYTlhmUjNFTnozMFQ2UkpaRTNwdG5NVTg1cnkxS05TbytxaTVxUE5vM3VqUzZQOFl1WmxuTTFWaWRXRWxzU3h3NUxpcXVObTVzdnQvODdmT0g0cDNpQytON0Y1Z3Z5RjF3ZWFIT3d2U0ZweGFwTGhJc09wWkFUSWhPT0pUd1FSQXFxQmFNSmZJVGR5V09Dbm5DSGNKbklpL1JOdEdJMkVOY0toNU84a2dxVFhxUzdKRzhOWGtreFRPbExPVzVoQ2Vwa0x4TURVemRtenFlRnBwMklHMHlQVHE5TVlPU2taQnhRcW9oVFpPMlorcG41bVoyeTZ4bGhiTCt4VzZMdHk4ZWxRZkphN09RckFWWkxRcTJRcWJvVkZvbzF5b0hzbWRsVjJhL3pZbktPWmFybml2TjdjeXp5dHVRTjV6dm4vL3RFc0lTNFpLMnBZWkxWeTBkV09hOXJHbzVzanh4ZWRzSzR4VUZLNFpXQnF3OHVJcTJLbTNWVDZ2dFY1ZXVmcjBtZWsxcmdWN0J5b0xCdFFGcjZ3dFZDdVdGZmV2YzErMWRUMWd2V2QrMVlmcUduUnMrRlltS3JoVGJGNWNWZjlnbzNIamxHNGR2eXIrWjNKUzBxYXZFdVdUUFp0Sm02ZWJlTFo1YkRwYXFsK2FYRG00TjJkcTBEZDlXdE8zMTlrWGJMNWZOS051N2c3WkR1YU8vUExpOFphZkp6czA3UDFTa1ZQUlUrbFEyN3RMZHRXSFgrRzdSN2h0N3ZQWTA3TlhiVzd6My9UN0p2dHRWQVZWTjFXYlZaZnRKKzdQM1A2NkpxdW40bHZ0dFhhMU9iWEh0eHdQU0EvMEhJdzYyMTduVTFSM1NQVlJTajlZcjYwY094eCsrL3AzdmR5ME5OZzFWalp6RzRpTndSSG5rNmZjSjMvY2VEVHJhZG94N3JPRUgweDkySFdjZEwycENtdkthUnB0VG12dGJZbHU2VDh3KzBkYnEzbnI4UjlzZkQ1dzBQRmw1U3ZOVXlXbmE2WUxUazJmeXo0eWRsWjE5Zmk3NTNHRGJvclo3NTJQTzMyb1BiKys2RUhUaDBrWC9pK2M3dkR2T1hQSzRkUEt5MitVVFY3aFhtcTg2WDIzcWRPbzgvcFBUVDhlN25MdWFycmxjYTdudWVyMjFlMmIzNlJ1ZU44N2Q5TDE1OFJiLzF0V2VPVDNkdmZONmIvZkY5L1hmRnQxK2NpZjl6c3U3MlhjbjdxMjhUN3hmOUVEdFFkbEQzWWZWUDF2KzNOanYzSDlxd0hlZzg5SGNSL2NHaFlQUC9wSDFqdzlEQlkrWmo4dUdEWWJybmpnK09UbmlQM0w5NmZ5blE4OWt6eWFlRi82aS9zdXVGeFl2ZnZqVjY5Zk8wWmpSb1pmeWw1Ty9iWHlsL2VyQTZ4bXYyOGJDeGg2K3lYZ3pNVjcwVnZ2dHdYZmNkeDN2bzk4UFQrUjhJSDhvLzJqNXNmVlQwS2Y3a3htVGsvOEVBNWp6L0dNekxkc0FBQUFnWTBoU1RRQUFlaVVBQUlDREFBRDUvd0FBZ09rQUFIVXdBQURxWUFBQU9wZ0FBQmR2a2wvRlJnQUFBdGhKUkVGVWVOcnNsdDlMazFFWXg3L3ZOdGUwdlhPazd5UzdxeVdCWXZuaklrdEdVMHZEQ3drdFY0S1hwdjN3Qi80QkJpSWEvUUMxd2prVlV4TnNVdXV1emQxazZpQkxDeElGemNEWE9UWndZOHIyc3IxcnA0dVhadW9nZ3J5SmZTOGVlTDZjNTN3NDUrRTVISW9RZ29PVUNBZXNHQ0FHaUFFQXlYNkxaZG4xOVhXR1lkUnE5VDhna04xcWEyMFZEbFZaY1pVUVlwdVpLUzB0SFRjYTl5d3o2SHVycTZzL3pzNlNQMmtYd0dJMkF6aktxSFE2M2Z0M2s0U1Fwb1lHQU1XRlJYdktMbW9MQUF3T0RQd2RvTGRIRDJCa2FPaDM4NDNKNUhLNTlwVFYxZHdFOEdwOGZQK09TNHRMNXJmbUg2R1FrTzcwb0x1emMyand1U29wMmRCck9DeW5rNUtPOVBYM1oyWmtNQ2twcXl2ZkdJWUJjTCs5dzJxZEtDb3FDZ1FDQUhpZUYyb2ZQM3hrTXIxVzBJcmF1bHB0UVlIUDd3TkY3ZTJCTmw4RElPMzRDUUFOZCt1N3U3b0FTRUFCcUt1cEpZUlU2YTREb0dYeHFhb1VwWndXQTlhSkNVSkk0UVV0Z0ZQcWt3blNRd0Q2OVByb1Z4UU1CdHZiMmlpS2V0RFJ3Zk44S0JUaU9PN1prNmNBK25vTkxNc0N5TW84emZuOUhNZmxuTWtDc0xTNE9EMDFEVUIzOVJvaHhPbDB5aE1TNGlpUjNXNlBiTHN6QjNGeGNiUkNRUWhSSkNaS0pCS3hXQ3lUeWVSeUdvQlVLdjB5L3htQVRsY3BpNCtYeVdRYWpRYUF6K2VibXB3RVVGNVJEa0NsVWhWcUMzZ1NucCtiaXo0SG5OOFB3Ty8zUjV4QWdNdk56azVta2tXVUNNRHE2bmZCZHpnMkJEQ3RVQUJ3T2wyL2ZJZEFpZzRJQm9PUktJam5lUVZOYjNtM2lpK1hpRUhwK3d6cEdlbHV0L3VsMFFnZ0VBaVVYU203ZGVmMnZaYVd0TFMwaFlXdkgrWSs1Wi9OeThuTmpmNVVTQ1NTU0l3NDRYRFk0ZGhRS3BYRHc4TmlpcXB2YkJ3ZGVWRjFvd29BdTdhV21uck0wS1BmM3Q2K1ZGTGMxTng4UHUvYzZOaVlTQ1NLUHNrZXQyZDVlZG5qOFVRY3I5ZHJYN2U3M1p0Q3lySnJWcXMxSEE0VFFwWlhWcnhlcitDN045MFdpOFZtcyswZkN5cjJxNGdCWW9EL0FQQnpBSTZWTnFHUVBVcW5BQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMSIsIkZJRE9fMl8xX1BSRSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiNTc1MzM2MmI0ZTZiNjM0NTdiMmYyNTU0Mzg0MDRjNzUiLCJvcHRpb25zIjp7InJrIjp0cnVlLCJjbGllbnRQaW4iOnRydWUsInVwIjp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6ZmFsc2UsImNyZWRNZ210Ijp0cnVlfSwibWF4TXNnU2l6ZSI6MTAwMCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6OCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoxMjgsInRyYW5zcG9ydHMiOlsidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN31dLCJmaXJtd2FyZVZlcnNpb24iOjJ9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiTk9UX0ZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMDItMjMifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI0LTAyLTIzIn0seyJhYWd1aWQiOiI5Zjc3ZTI3OS1hNmUyLTRkNTgtYjcwMC0zMWU1OTQzYzZhOTgiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjlmNzdlMjc5LWE2ZTItNGQ1OC1iNzAwLTMxZTU5NDNjNmE5OCIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJIeXBlciBGSURPIFBybyJ9LCJkZXNjcmlwdGlvbiI6Ikh5cGVyIEZJRE8gUHJvIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUJ4ekNDQVd5Z0F3SUJBZ0lDRUFzd0NnWUlLb1pJemowRUF3SXdPakVMTUFrR0ExVUVCaE1DUTBFeEVqQVFCZ05WQkFvTUNVaFpVRVZTVTBWRFZURVhNQlVHQTFVRUF3d09TRmxRUlZKR1NVUlBJREF5TURBd0lCY05NVGd3TVRBeE1EQXdNREF3V2hnUE1qQTBOekV5TXpFeU16VTVOVGxhTURveEN6QUpCZ05WQkFZVEFrTkJNUkl3RUFZRFZRUUtEQWxJV1ZCRlVsTkZRMVV4RnpBVkJnTlZCQU1NRGtoWlVFVlNSa2xFVHlBd01qQXdNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVyS1VJMUcwUzdhNklPTGxtSGlwTGxCdXhUWWpzRUVTUXZ6UWgzZEI3ZHZ4eFdXbTdrV0w5MXJxNlM3YXlaRzBnWlBSK3pZcWRGendBWURjRzQrYVg2Nk5nTUY0d0hRWURWUjBPQkJZRUZMWlljZk1Nd2tRQUdidDNyeXpaRlBGeXBtc0lNQjhHQTFVZEl3UVlNQmFBRkxaWWNmTU13a1FBR2J0M3J5elpGUEZ5cG1zSU1Bd0dBMVVkRXdRRk1BTUJBZjh3RGdZRFZSMFBBUUgvQkFRREFnRUdNQW9HQ0NxR1NNNDlCQU1DQTBrQU1FWUNJUUNHMi9wcE1HdDdwa2NSaWU1WUlvaFMzdURQSXJtaVJjVGpxRGNsS1ZXZzBnSWhBTmNQTkRaSEUyL3paK3VCNVRoRzlPWnVzK3hTYjRrbmtyYkF5WEtYMnptLyJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFJMEFBQUFXQ0FZQUFBRDkveDhsQUFBQUJITkNTVlFJQ0FnSWZBaGtpQUFBQjNGSlJFRlVhSUh0bWsxeTI5Z1J4MzhOSXRMU3pBbk1uTURNTmttVjZhcXB5bko0QTlNbk1DU1NWYUcwTUx3UXNSQmx3U2NRZFlLUlZsbWxSRzVtRytvRVE1MGcxQzVVU0hRV2ovaCsvTkJFdG1jbStxOEl2RWEvZmtEM3YvdjFZNFZOT0F4YS9QbTdLai8rWTFvYTgvd3FmL25yMy9uVGQzZlc4V2Y4WnVHdUhXbjNtd2dYd0J2cmVHVXZCQnBBZzhQZ0haOTZ3eTlpNFRPK0xkcjlKaUt2VmxkakJyMlJZeFhzbnRTQml3Mktob2k4VGE0ZExqZ01XazlvNmpOK0NlajBQVVJtd0JpSnJvbW8wUWthWmFmcG50U0o1QWFSNmdaRmIwdjNueDNuTndpcE11aU5VQjJpRWxLSkpxRDFmSHJ5L0NvcUYyc2R4ampGK2RvNWpPT3dNVlZsNlU2aWEwNlBKN254VHRBQVhxK3V4aXlZNHBJNjZXTCttZENmNVo3cG50UlI1L3RVaGt0K0YxV0o1QlVpdFpJTnFsT1dNaWJzcGJWWXArK0J2RmhyZDZ3MzdFMU5ZRlZlSTJwNVR6Smg4ZTl4eWNaNGJTcXZjcytKanZpUDNDVzJQTWFPR0Y1UW82S3ZTMnNWSFhGNk5NYnpxN2o3NzgzYVpjYlozejduNUx5Z2xyemppTHZrKzBXWU9VU3FxTllZSEUvb0JNMjgwN2g3VnlEMXpKMXJCcjFSc3VCU3l0SURWRm9JcjVKYkRoZTArelBPanE2c0N4WThZcWRRUjRCSlFhSUJmRmo5L2dqekVQWVBBUE1pSzN0L0FQS01Gb21ISkk1MUQvUFA2TjRRa2RmWUlHS3F1Vnd0SnV1RElZYkxHSmlpRWlKcTE0MUNaVy9HWVhDUTZPNmUxSW1jSDRBYW9nVnhBVmZIcTNVL3pnNkFkaEFpdkFleG1DTFFDZUthMURmcUZTRHZOQzYxWk56Uk1XRHNGdXFySlExQmpIT2hzelE5dGZ0RHlMeGs1WmJGdkpVc1d2V0hna2tmR1J5RkxPY05sTnZDMk1XcUx2cmZZU0kyVEs1RjNocmpWL0NDV2k1ZFJualdLTGZCNFNLbjY2a2dVa1gwSE04M2pCTEpGY0xUejlNSmZPTXdYd2hMUXRwQkNQSVR5RSs0dEZnOERBM1RIQWF0VEtRYWgxbk9HNFQrRE0rdmxtb2MxVXZPam94bkdwa0dsZjFSd2pnaVZaUUw0STlQWXZ5ZzU5UHV0eEI1Q1VBRkQvRE1iL1dUS0ZPOTQ5TlJPVFdxWGlJU1UyNE5KOE9ZRGczaXlFb2ZPQUFwTWlBczV1VjdXZDFabGhTcDR1N1hnVkZpOXpyZG9tdWNmSXNkU2pNaEdOVTdJQzVjODdMR2pzZkRwRUN2ZU5zMWthcm5HWHE3WjBremlWWjNmd2hrYy9jMVowY3BBNTBlVDZ5T2c5VHBCRDZEbnYrekRDNUN4VisxQUFCOWkrZjdzRi9OT2J1SXZSQVhtU1pwRnFEVGJ5V3M2dGdZUUNZNStVM0k2eDdSRHBxNWRGM0VRcTV5OWNobTVadnR5TTRqMGxvcjJ3bDJtMjVIdUZUVXo3RkloSmRmbEZiVFNPYVc1U3BseFVWenpDYWhQNk43MGtLZGY2YVA2bnZpWEdtRDhwSnVQMThiUkx5MHBXYys5WWJKeHpaUjdLRmFTNTFkeHd5T2R2dlEzeElWYm1qM2ZaWVAxenVuVVJ1NkozV3k1ZEd1VHY0RWNCRnBacTd2MSs1OGlpbkwzYnNwRk0xd2VqeWgweDhuVVN4U3hRdHFheU5MYUtFRmRyQTVURHJvQXpmR0huMmYzK1hKYnM0WlVjdlZidkVPSVkrYlVuU3F6amc3K3YxRzNTb05zTENNU1dHR0VZVWF5QkIzSDlyQkVPRnl3d2N2MjJHQ280RTY5aDN1VjRCRHZDc0JVUDYxUnM2U3NzU2VKN1ZBOXp0VDhRNHdML2Nhb0ZSamJhYnhGaW9qVkVhWitnUGdubWh1MytXVmRLeHBRMlIxWjFsVjlTNnhhZm5nb1hwcGZkWTR4dE9rOEs4RUZ6VERETlE0REZwNXRwRVpFalVJajFkYnZQNFErTjZpSys0eFpJdSs4Y2JaVmUrUVFxUXJ0WHpoV01BQ0Q3Y3cvM0lEeTZ5ZG0xdWNxR1ZORVlZWkNzNitybGkxNGhwSFU1dk1IQzI4d01mVkpvcFhXT01IdkdCWUNqQ2JIVkhScnE4UEZ5VkVTT2xhOUp6dXlTUnB1aTNtNllzMVBZRnNOL2crK1dYNk9JVWV3NWFQS1RJc0Zjb202ajdZSDhBd1Y3dWYwcjN5ZVN1YlpYYzR1K1IrWTlldU5jSWJWS3VJWkZzU1lhbHBHZHR1MmdmaDZuMWRFVE85NlpYazE3SEpEck1yU3E4M2xRRmJaYlcrcFM3SXdWazE0YTR6aHBvdGR0eG5pUjNHYk12elBRR0pURVBLMXNkUlBuK3g0aXdiZmNKMkJvaDNPRi9LbnVJN1JMYzM2QWE5RVpweGt1aVJmUnp6WGRLZ3JXd0t0SUtzbTJtT21sNVNwdDFpMmVJWFlQbzBpM21MeXQ0a29VeVJLaEUzZEUvZWNIbzg0VEJvNVhvYkFCSHYrSFE4c1o1VktiZWM5VXI3KzE4UDlKeE9VSFpHaVE2c0RBTG1IYnI3VStCRnJ0MWdqampLVHFUVWNnMi9TbVRSdThVTzFhdE1nZDFhSGRGTXJMSXdJaTByUHRBTzNpSk1VYTFEdGw3VHJZRmxuTVpzbDV1cllzN1FaZXc0N2I1bklpZERYeEZwK3oxeWhnalpvdlNPNVVOajI4Uy9iS3dyOGpmc1dFSi9ScWZ2SjhjQXF1L3hnaUZLbGVTSUlEdEZWcTllTXJBNTR4WTdsdUxqMGlUN3pZcHp4YklTK2FqVFNHV3BBVFVrWTRoeXUvYjRKNFAwN09uMGVFTDNwSUU2ZWNjcGRrdFZMM05kMTN3ajZ4NUhtNXh0NkQrb1RKTHpGMXRSRnpGZG5YK3NML3Aya2RrMlQvbUJ6VVU3cEozYnJPNXNOM2R3Rk5MdTF4RnFDQ1lOTEJqaThoRTBQbHVxQXk5V0c1QVpFVmY1THZZajdBaDdVN3lnVGdVUDBYcXFHK01Bd3BURktnV2VIaytNclBvZzlmeDMwekhJaU9VOExFNWxuYjUweDlCcDZqaFptT09EZkYrbEUyUmJURysrWnBQcEdkOEc1Zi9UbkI1UFZnWHVmWDVBeHlXSHlTTGkzYlBEL0gvQS9zKzlvdU1vdHl3ZW1sWlpJM0R3L0hmUFp4aDBUK3AwK3FQa2lOK0dUdjlYdkV0NnhzL0Jmd0doaG1uWWNheWRnUUFBQUFCSlJVNUVya0pnZ2c9PSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzFfUFJFIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiI5Zjc3ZTI3OWE2ZTI0ZDU4YjcwMDMxZTU5NDNjNmE5OCIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlfSwibWF4TXNnU2l6ZSI6MjA0OCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6MTAsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6OTYsInRyYW5zcG9ydHMiOlsidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN31dfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjAtMDctMTciLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ikh5cGVyIEZJRE_CriBQcm8iLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDE5MDgwNTAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4zLjYiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMC4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDE5LTA4LTA4In1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMC0wNy0xNyJ9LHsiYWFndWlkIjoiYjlmNmI3YjYtZjkyOS00MTg5LWJjYTktZGQ5NTEyNDBjMTMyIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiJiOWY2YjdiNi1mOTI5LTQxODktYmNhOS1kZDk1MTI0MGMxMzIiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiRGVlcG5ldCBTYWZlS2V5L0NsYXNzaWMgKFVTQikifSwiZGVzY3JpcHRpb24iOiJEZWVwbmV0IFNhZmVLZXkvQ2xhc3NpYyAoVVNCKSIsImFsdGVybmF0aXZlRGVzY3JpcHRpb25zIjp7ImVuLVVTIjoiRGVlcG5ldCBTYWZlS2V5L0NsYXNzaWMgKFVTQikifSwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNuVENDQWtTZ0F3SUJBZ0lJY2FEYXVUUjZBSTR3Q2dZSUtvWkl6ajBFQXdJd2dhb3hLakFvQmdrcWhraUc5dzBCQ1FFV0czTjFjSEJ2Y25SQVpHVmxjRzVsZEhObFkzVnlhWFI1TG1OdmJURU5NQXNHQTFVRUN3d0VSa2xFVHpFWk1CY0dBMVVFQ2d3UVJHVmxjRzVsZENCVFpXTjFjbWwwZVRFUU1BNEdBMVVFQnd3SFJXNW5iR2x6YURFUU1BNEdBMVVFQ0F3SFJXNW5iR0Z1WkRFaE1COEdBMVVFQXd3WVptbGtieTVrWldWd2JtVjBjMlZqZFhKcGRIa3VZMjl0TVFzd0NRWURWUVFHRXdKVlN6QWdGdzB5TkRBeU1qY3hNakUxTlRWYUdBOHlNRGMwTURJeU56RXlNVFUxTlZvd2dhb3hLakFvQmdrcWhraUc5dzBCQ1FFV0czTjFjSEJ2Y25SQVpHVmxjRzVsZEhObFkzVnlhWFI1TG1OdmJURU5NQXNHQTFVRUN3d0VSa2xFVHpFWk1CY0dBMVVFQ2d3UVJHVmxjRzVsZENCVFpXTjFjbWwwZVRFUU1BNEdBMVVFQnd3SFJXNW5iR2x6YURFUU1BNEdBMVVFQ0F3SFJXNW5iR0Z1WkRFaE1COEdBMVVFQXd3WVptbGtieTVrWldWd2JtVjBjMlZqZFhKcGRIa3VZMjl0TVFzd0NRWURWUVFHRXdKVlN6QlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJLalhiTjJxME1rVnNsbzZTekk4Zzc5ZHcyMC8zKytRUmxyUWhNM2h1cHBaNWk1RWxTRml5d3pXaHBpZzgxQXEwU0l1MkttbFRZcHQ4Nm1MTCtkQVo1R2pVREJPTUIwR0ExVWREZ1FXQkJTMEdDd05NaTZ2V2FKbEJyeStnT25oWXNydG9EQWZCZ05WSFNNRUdEQVdnQlMwR0N3Tk1pNnZXYUpsQnJ5K2dPbmhZc3J0b0RBTUJnTlZIUk1FQlRBREFRSC9NQW9HQ0NxR1NNNDlCQU1DQTBjQU1FUUNJR1pjbXFtQ2hYaTFoTDlkWjJYcjZOS08zaHlmTkJsNzVaMk1peHM5WFRxL0FpQjc3NTk1dkd1MFFxOUg5QUM3YlVYcDRQbTNTTEh1aytrQlk1bnZ3TVRueUE9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFNZ0FBQUJHQ0FNQUFBQytQQ3NFQUFBQWpWQk1WRVZIY0V3eVFVNHlRVTR5UVU1Y09FVXlRVTR5UVU0OFAwd3lRVTZUS2preVFVNHlRVTR5UVU0eVFVNHlRVTR5UVU0eVFVNHlRVTR5UVU0eVFVNHlRVTR5UVU0eVFVNi9IaTYvSGk0eVFVNHlRVTR5UVU0eVFVNHlRVTdBSGk2L0hpNi9IaTYvSGk2L0hpNHlRVTdBSGk2L0hpNi9IaTYvSGk2L0hpNi9IaTYvSGk2L0hpNi9IaTR5UVU2L0hpNWp3NFI3QUFBQUxYUlNUbE1BdS9RU0JkbnFDaG9DNGZ6QVFmbE1KdE5nTW41V295dWp5b3FWYmJVK0h0Z1I3S3l2bVl0dFY4aDdTYnlMWm5SeUFBQUluRWxFUVZSbzN1MWFoMjdqT0JDVjFhbmVyV3Bia1Z0c0svLy9lY2NtaWxSeEFoek9HeTl1c01BNm9qaWN4K21rSk9udEtIWXNrY0lxbHQ2UlFHcjF2YzM5Ni92UWYwc2trcXYxRXdxRDk5Ukp2QWs1a2lHUzZqMVZJaGtLUjZuZTk1cjBGNUJSOUwzOE53QUpvTXZvYnltNTZVYzhOZEJIbW5mRTRZZWV6UkdLV25MNmhpSExES2ZCdC9kSzlSMFZJdHNpZVZwdHZLVnZRN2RJZWZMZk14dEs5K014My8wTjBmYjY5ZldWYjNuYXEyOEpaUHNCa1h6d2REaHQzN0xTT24vTjZQTXRrZXp6T1pMVERLNkxjbVVhLzJxcmErL25uS01qdExXUDZUdHEwNlBRckNlL0VBbmdmM1BVUHFCS0ZvQmcwbjloOXhnbHNUTEI4RDBRN3hjMmoxV3ZPNGtwWGZJSkhTR093d3hJRlliZXJ3VUM1WEtsQlZmLytqclAzbFlVYy9PTGdjakxRSTc3cFFuWjd3WnkrcGpTNGJ5STQ3Y0QyVytuMUFMcEhZRThqOHZRT1V6VFZNQWFFQU1OTDFiOUFFOVVWNDg3bmd6U3VZdjd1Y0IxRlFnL3phOGN6YktLTEZJV2dDaCt1UWt0Uzl1VXJqRnJEcklDVGV6cW9TbFFvaHBTR3VEenA2U0I4OEltaWFtd2Fvb0dJL0tuaWVkcVJaWXFjNjVJbkhEa2FzQ0pEcEtyd2d6TWxZM3hIWTgyalhhUmdna1FJM0xrb2FlVU95RlJCcVhGMmswckllSUVPdVlUeHBKWjZnTlh2U1JMSzZSTjFTT0lLU3Jzb1ZQZENGek5STE1aVnpyUkZBNFhWL1JpSkRMM2tsNExRSUNaZVR3UEsrVlBBWVRPdVFsR0lIMWZCaHQrMElrNUlIMmhLQ1cvcU1ZaGNRdUI2eWI0S1JBMW9aTFNFd2xkNDRGUWNUeEwwNGlFT3ROVlJCN0ltcVlSb1RZbUI2UnJLRk82ZUJGd1FMU2dFbzhQR21helBsR3liQTFjbmVDSFFDTHlmbGltZmxvTjd3OUFsSVpZVkJvb1NseHIzSUV4Y0hXaWU5ZFVURGZEVE5CaGhwazFXRm9kSXBDYkpFMlREVm1nZzdJYVZZTU5Tc09iWjNWbFVoS3Jsb2Z0Y1MyT2E0Vm5WcENyVVNjSlltdG5DYUtsTHAyY3JzalVGb1BNRm9Ba3hLVHBmc1ZZNnlXWmgzOFAxcTNXYUUwZDdaU3F4dFJ6Q3Q4Z2pvbzN3SXZ3SUo0bncwM1F5d0JGSmFVbTB0S05jL0JFeWhWZ3BROGdzNmRSQzlSNEVWYTJLeGtQQklza1I2UDlJc1pXd0NBV2JHdlVjaFNIMnNFNFNMYlp3ZEhBb0s1aitYeFk3UjJ5VjdVdFhCSUF2RXFHaFFQUGdTaDRZN014ckFZaEI2UWMrUkJ4RVRNN0doUXBjMEU2UU1KcTVnaUVINHc4SmdRRk1ycWE1TXBzSnBiR1M4VnpYYnB6M3dCeG1Va01WSTlBTUY5aE1MTHB2cWVlNEtLMEFTRHJZQ0IyeDZVellqRUpCeVRoakhzVTFwZVo1cWhLTW9ic0d5QllkeHMreitHdEpVQXd5c0kwUnNKUGtCbGdlMGk0RVFNL3FVY2c2V3laUm1WQXRHQmlGS1NUdzYrVlBOZVNvZjRHU0RmWkhyb1NBUkpoSTNBNEtwQWlRb1dLRS9KREZ1T0VnZWpCVFBHaHdvRHdOMHlHTXdCUnNUUWF4M1NEdU5yVkQ0QTRnOUZQR2hpZmJkQ2NOSVVsaENtVkRFZ28xQjFZemRoOENKQm9FWWhSTEhQOUNaQmlYaUVtN0ZHMUNzVFV2Z1BpR0xNZ3J6TWd2RHlBQVFGcjIvTmpJTzR6SU5wbVNwVkIzYUNZRGFVL0F5S2NiWXdhd1c4dGNJMStDRVQwU3h4ekNaQ1NwR3RqUXVvUWZkMmxJUXFrRUV4cmpFd3pJS05HaU52TC9qTFhiNEEwTE5hSUVjOW5rYmhiYWlmdzR2YktQUkVYVHdlSzlTRlhQTk1JT2NPSlZsTDNjeUFrNWZHOURUWlVMdnhhd1ZxN3RuYTdiV296eDhQNUIwZjVaeHFaSldDaHVIM2V1ZUtjeTBkMWtwVElCRktIMVl2ejdGV01OQkpVVXlGSUpIaW1FY24zMWc4SFFUWVBzTktrQnVBVENWbVRMMUcwWUtGRHBzS3E2MEFzdnNmUUdjK25HaUU3bHhucnhyUDZpUU9SMjNJblZmMVFOT0pTdmVFN1N6Y3h4bHd0MXh3U28vWjVJSDNIM0IwZmxWSDNmNm9SYVZMQ1lxNkRKMFlUU1plS3JUNms0eXJ0bHFnZmc1TDBOcTdLMmxDTFZqNmtqQi9LZnpqVDdleEM2RXZ0aWlJSmNNSzJhK2xialVnbUxzcThhakFDTmM2OG9SZ211MXE0SzJjWktzbDZPbXhsek1CSERSTHVkSndraVZsajFldFpHcURoTXNURkYvRWxBamxNM0VBeDQ2aERmeVpBNkV1ZENQZGpKTTAxaXZSRUkzYVhKQ2FyK0dIblJiaG1PdTNYbVBIMGVwZlVpeTRmMExwQTFrSUwrMXBIeFVCK0JRS0h0b3g2U0laSGg2UEtnMTFwcU9ta0h3dkhNbDdIVlpKVmhMcllscTlvQkwyTXJTS2RjeDJjTkdibFJMZW9rMWlvY09RbzRvQWd1N0RGZWtGUEJ0dFBwM1ZLNFk4YUNXdEwrS0xLbFZhQWpEY0E3dEtSQnB5YXFtSS92d1lFOXJmamlZWVcwVURHRXBOU2h4d1V1WFBIcEJOVU9uL0FrcGljczJ1bVgzQ3pBc0dRWkNIQzFoNm5rUm5YY2d5YUlPN2taMEFrdzg4czJiTTl2Y0J0dlZzMWlKZ2htbEdud1dGYjFndnhpQTZvY2Vub3NtMTdzdFhVd1hCMlNZSEF5RkRva0t1c1pmNDR5eWczVGRNSkVkMklNclFlZXdqaXhNSHlFSzdDcTI3U0ZXRllybmJ1cXVtbXFSOFBScU1pQW1QbU1NellSNThZS0F1OWNnQm5wbTVnVFBJSXJrY1VOTTAxVlhFdFNMUDF4WWZBbUhObGxxZ29pdkd6QzdyRjhlOWVrSmFBdk9BMjhiK2sveHlJOUQrUWZ3R0UyU1FBdk4reDUrVC84UzNPTmVtSUNnQjlPbm4zbFVEMnR6eS9rTDdvZHN6ei9FNGRGbDM1a3d1ejdRbjlkejlqLzFVdnA5UHBRaTdTOXVRTGsvMHB6K0hNRzJLeVErK3F0OHZyZmFROW51NzNLd2FpSHZQZGJrZGtiTStQQzN6ZW90KzdBNUwzOG9uL01CNm43ZjJSWTFEN0EvNllxZDN0Ym9mcmJvdUVieDluSU4wUHU5ZHJaRHN1cWg3SEsrUWI5eEhNQk1nTmF1ZXc1NEJBdWg1YUdxaDJoMTM3dUx6ZVIwQjdQTjdiQWNocHU5M2l2VzQvYjlJNkVPTjJSTCtCQ0lTNnpUa25vNi9XQ05qZkhvODdJRUFPeDJOT3pQNXdYUVh5ZVg0OGlMcVdnRWo3ejhQdWowUXRBTm9ibGhTWmx0R1NpK1Qyc0s2UjArN3lpVVZkMUlna25ZL3FId3EvVU96cnhFZkErWE84NFNmcU9lV0ErVWgrQXFzYWdVREFpNEhnTS9YdDViNmpVdk5SYTM5OFhIWTdITFdBZXY2OGI2a1dNQkJ3SmM2KzVZRHMveHdRY3BXRjBzaVptRHpKSTlRNTJpdk1EamV5enkzTUhXY3FzM3ErY2dsa0NHMjcwNmlSNisybFFMeHlyS09YSzF5VXE4ZHNMdVI3TUNSd01DOVl1Y1QvQ2lCTjlKNGZzTTc2dE9EMWEvNERzZ1c5R1ZvRFFvSUFBQUFBU1VWT1JLNUNZSUk9IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMV9QUkUiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6ImI5ZjZiN2I2ZjkyOTQxODliY2E5ZGQ5NTEyNDBjMTMyIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWV9LCJtYXhNc2dTaXplIjoyMDQ4LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0IjoxMCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjo5NiwidHJhbnNwb3J0cyI6WyJ1c2IiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fV19fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiTk9UX0ZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDItMjUifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTAyLTI1In0seyJhYWd1aWQiOiJjYzQ1ZjY0ZS01MmEyLTQ1MWItODMxYS00ZWRkODAyMmEyMDIiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6ImNjNDVmNjRlLTUyYTItNDUxYi04MzFhLTRlZGQ4MDIyYTIwMiIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJUb290aFBpYyBQYXNza2V5IFByb3ZpZGVyIn0sImRlc2NyaXB0aW9uIjoiVG9vdGhQaWMgUGFzc2tleSBQcm92aWRlciIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9kZXIiXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX3N1cnJvZ2F0ZSJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXR0ZXJuX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmYWNlcHJpbnRfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiXSwiaXNLZXlSZXN0cmljdGVkIjp0cnVlLCJpc0ZyZXNoVXNlclZlcmlmaWNhdGlvblJlcXVpcmVkIjp0cnVlLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJ0ZWUiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlbGVzcyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQ0VqQ0NBYmlnQXdJQkFnSVJBSVFSc3YzRGlMOVAxYWY5b0oyeW5qWXdDZ1lJS29aSXpqMEVBd0l3YnpFTE1Ba0dBMVVFQmhNQ1NWUXhHREFXQmdOVkJBb01EMVJ2YjNSb1VHbGpJSE11Y2k1c0xqRWlNQ0FHQTFVRUN3d1pRWFYwYUdWdWRHbGpZWFJ2Y2lCQmRIUmxjM1JoZEdsdmJqRWlNQ0FHQTFVRUF3d1pWRzl2ZEdoUWFXTWdVR0Z6YzJ0bGVTQlFjbTkyYVdSbGNqQWdGdzB5TlRBNE1EVXhNREF3TXpCYUdBOHlNRFUxTURnd05URXdNREF6TUZvd2J6RUxNQWtHQTFVRUJoTUNTVlF4R0RBV0JnTlZCQW9NRDFSdmIzUm9VR2xqSUhNdWNpNXNMakVpTUNBR0ExVUVDd3daUVhWMGFHVnVkR2xqWVhSdmNpQkJkSFJsYzNSaGRHbHZiakVpTUNBR0ExVUVBd3daVkc5dmRHaFFhV01nVUdGemMydGxlU0JRY205MmFXUmxjakJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCTEtVVnFSUWlwdlRNd2d6dStyUEhhb25jb3p0Y20ydXhiZUIwOUlyYkpiMzhEU1VMVTZVdEtCNjMvRnJQa2dmVkprV1JsWWxNN0NrTmJneWVpSjNuTnlqTXpBeE1Bd0dBMVVkRXdFQi93UUNNQUF3SVFZTEt3WUJCQUdDNVJ3QkFRUUVFZ1FRekVYMlRsS2lSUnVER2s3ZGdDS2lBakFLQmdncWhrak9QUVFEQWdOSUFEQkZBaUVBOVRXcWVCTzRhRU1vcVU2b2t2WGJObXdwempMQkt4NTJHdlZubTZFQm16d0NJQ1dKdnYxb0o0endLR3BuU3N3OEo3L2liRCtpV1dGRmNZU1BQbVYremhMYiJdLCJpY29uIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lJSE4wWVc1a1lXeHZibVU5SW01dklqOCtDanh6ZG1jS0lDQWdlRzFzYm5NNlpHTTlJbWgwZEhBNkx5OXdkWEpzTG05eVp5OWtZeTlsYkdWdFpXNTBjeTh4TGpFdklnb2dJQ0I0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5Naklnb2dJQ0I0Yld4dWN6cHlaR1k5SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpFNU9Ua3ZNREl2TWpJdGNtUm1MWE41Ym5SaGVDMXVjeU1pQ2lBZ0lIaHRiRzV6T25OMlp6MGlhSFIwY0RvdkwzZDNkeTUzTXk1dmNtY3ZNakF3TUM5emRtY2lDaUFnSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlLSUNBZ2RtbGxkMEp2ZUQwaU1DQXdJRFkyTmk0Mk5qWTJPU0EyTmpZdU5qWTJOamtpQ2lBZ0lHaGxhV2RvZEQwaU5qWTJMalkyTmpZNUlnb2dJQ0IzYVdSMGFEMGlOalkyTGpZMk5qWTVJZ29nSUNCNGJXdzZjM0JoWTJVOUluQnlaWE5sY25abElnb2dJQ0JwWkQwaWMzWm5NaUlLSUNBZ2RtVnljMmx2YmowaU1TNHhJajQ4YldWMFlXUmhkR0VLSUNBZ0lDQnBaRDBpYldWMFlXUmhkR0U0SWo0OGNtUm1PbEpFUmo0OFkyTTZWMjl5YXdvZ0lDQWdJQ0FnSUNCeVpHWTZZV0p2ZFhROUlpSStQR1JqT21admNtMWhkRDVwYldGblpTOXpkbWNyZUcxc1BDOWtZenBtYjNKdFlYUStQR1JqT25SNWNHVUtJQ0FnSUNBZ0lDQWdJQ0J5WkdZNmNtVnpiM1Z5WTJVOUltaDBkSEE2THk5d2RYSnNMbTl5Wnk5a1l5OWtZMjFwZEhsd1pTOVRkR2xzYkVsdFlXZGxJaUF2UGp3dlkyTTZWMjl5YXo0OEwzSmtaanBTUkVZK1BDOXRaWFJoWkdGMFlUNDhaR1ZtY3dvZ0lDQWdJR2xrUFNKa1pXWnpOaUkrUEdOc2FYQlFZWFJvQ2lBZ0lDQWdJQ0JwWkQwaVkyeHBjRkJoZEdneE9DSUtJQ0FnSUNBZ0lHTnNhWEJRWVhSb1ZXNXBkSE05SW5WelpYSlRjR0ZqWlU5dVZYTmxJajQ4Y0dGMGFBb2dJQ0FnSUNBZ0lDQnBaRDBpY0dGMGFERTJJZ29nSUNBZ0lDQWdJQ0JrUFNKTklEQXNOVEF3SUVnZ05UQXdJRllnTUNCSUlEQWdXaUlnTHo0OEwyTnNhWEJRWVhSb1Bqd3ZaR1ZtY3o0OFp3b2dJQ0FnSUhSeVlXNXpabTl5YlQwaWJXRjBjbWw0S0RFdU16TXpNek16TXl3d0xEQXNMVEV1TXpNek16TXpNeXd3TERZMk5pNDJOalkyTnlraUNpQWdJQ0FnYVdROUltY3hNQ0krUEdjS0lDQWdJQ0FnSUdsa1BTSm5NVElpUGp4bkNpQWdJQ0FnSUNBZ0lHTnNhWEF0Y0dGMGFEMGlkWEpzS0NOamJHbHdVR0YwYURFNEtTSUtJQ0FnSUNBZ0lDQWdhV1E5SW1jeE5DSStQR2NLSUNBZ0lDQWdJQ0FnSUNCMGNtRnVjMlp2Y20wOUluUnlZVzV6YkdGMFpTZ3lOekV1T1RNd01pd3hOakV1T1RnMk9Da2lDaUFnSUNBZ0lDQWdJQ0FnYVdROUltY3lNQ0krUEhCaGRHZ0tJQ0FnSUNBZ0lDQWdJQ0FnSUdsa1BTSndZWFJvTWpJaUNpQWdJQ0FnSUNBZ0lDQWdJQ0J6ZEhsc1pUMGlabWxzYkRvak1qTXhaakl3TzJacGJHd3RiM0JoWTJsMGVUb3hPMlpwYkd3dGNuVnNaVHB1YjI1NlpYSnZPM04wY205clpUcHViMjVsSWdvZ0lDQWdJQ0FnSUNBZ0lDQWdaRDBpYlNBd0xEQWdZeUF0TVM0Mk1Ea3NNakl1TXpJMUlEZ3VNVGt4TERNMUxqazJNU0F5Tnk0NU5qa3NORFV1TnpJeUlETTRMakkxTVN3eE9DNDROemdnTmpBdU5qYzNMRFE1TGprd05pQTJOUzQ1TlRRc09USXVOelUySURVdU9EY3NORGN1TmpZMElDMHhPUzR3TVRJc09UUXVOREV4SUMwMk1pNDFOVFVzTVRFM0xqRTNNeUF0TkRNdU1EZzJMREl5TGpVeU15QXRPVFl1TWpNc01UVXVOekkySUMweE16RXVOak01TEMweE5pNDRNellnTFRZeUxqWTJOQ3d0TlRjdU5qSTJJQzAwT1M0eE5UWXNMVEUxTlM0d01qWWdNamN1TXpjNExDMHhPVEl1T1RjMUlESXdMak0yT1N3dE1UQXVNRGs1SURJNUxqVXhOaXd0TWpRdU5EQTVJREk0TGpneU55d3RORGN1TURVeElHd2dMVEF1TmpZMUxDMDVNQzQ1TlRZZ1l5QXRNQzR4TlRRc0xUVXVNaklnTFRBdU1UQTFMQzB4TlM0eE5qUWdMVGt1TWpjeUxDMHhOUzR4TmpRZ0xURXdMakUxTWl3d0lDMDVMak0zT0N3NUxqZzJOQ0F0T1M0MU5ERXNNVFV1TURVMUlHd2dMVEF1TWl3NE9TNDBOakVnWXlBd0xqVXlPU3d4TlM0NU56RWdMVFF1TnpNekxESTFMakl5TXlBdE1Ua3VOVFE0TERNeUxqUTFPQ0F0TlRRdU1EWTBMREkyTGpNNU9TQXRPREV1TnpZMExEZ3hMakl4T0NBdE56UXVNRGcxTERFME15NHlNemtnTmk0MU5EY3NOVEl1T0RneUlEVXdMalE0T1N3NU9TNHlNRFFnTVRBMUxqa3pOeXd4TVRFdU5qYzRJRU1nTVRRdU56SXpMREk1T1M0ME5ETWdPREl1TURBNExESTJNaTQzTnpJZ01UQTFMak16TWl3eE9Ua3VNVEU0SURFeU9TNHhNalFzTVRNMExqRTROaUF4TURJdU5qRTFMRFl5TGpFM015QTBNUzQyTkRjc016RXVNekUwSURJekxqYzVOaXd5TWk0eU56a2dNVGN1TVRZeUxERXhMak00TlNBeE9DNHlNellzTFRndU1UUXlJR3dnTUM0ek1qSXNMVGd5TGpBd05pQmpJQzB3TGpBMExDMDNMakExTVNBeExqVXhPQ3d0TVRjdU5ERTRJQzA0TGpjekxDMHhOeTR4TVRNZ0xURXdMamd3T0N3d0xqTXlNaUF0T1M0ME1qVXNNVEF1TXpnNElDMDVMalUyTXl3eE55NDNPVEVnZWlJZ0x6NDhMMmMrUEdjS0lDQWdJQ0FnSUNBZ0lDQjBjbUZ1YzJadmNtMDlJblJ5WVc1emJHRjBaU2d6TlRRdU16ZzFNeXd6TVRRdU1qVXhLU0lLSUNBZ0lDQWdJQ0FnSUNCcFpEMGlaekkwSWo0OGNHRjBhQW9nSUNBZ0lDQWdJQ0FnSUNBZ2FXUTlJbkJoZEdneU5pSUtJQ0FnSUNBZ0lDQWdJQ0FnSUhOMGVXeGxQU0ptYVd4c09pTXlNekZtTWpBN1ptbHNiQzF2Y0dGamFYUjVPakU3Wm1sc2JDMXlkV3hsT201dmJucGxjbTg3YzNSeWIydGxPbTV2Ym1VaUNpQWdJQ0FnSUNBZ0lDQWdJQ0JrUFNKdElEQXNNQ0JqSUMweExqZzNOeXd0TkRRdU5USTFJQzB5TVM0ME9EZ3NMVGMyTGpVME9TQXROakF1T1RVc0xUazFMalk0TmlBdE5pNDJOamtzTFRNdU1qTTBJQzB4TkM0ek1URXNMVGd1TlRrZ0xUSXdMak00TWl3d0xqWTJOeUF0TXk0MU9Td3hNUzR3TVRJZ05DNDROVE1zTVRNdU1ERTVJREV4TGprME9Dd3hOaTQwTmpVZ016TXVPREl5TERFMkxqUXlNaUExTXk0eU1EZ3NORGt1TmpZMUlEVXdMakF6TXl3NE5TNDFOakVnTFRJdU9UYzJMRE16TGpZek5TQXRNamN1T0RVeExEWTBMakEzTXlBdE5qQXVORE16TERjekxqazBOQ0F0TkRJdU5ESXlMREV5TGpnMU1pQXRPRFl1T1RReUxDMDRMakkzTlNBdE1UQTBMakEwTkN3dE5Ea3VNemMwSUMweE5pNDVNVFlzTFRRd0xqWTFOQ0F3TGpFNE9Dd3RPRGN1TlRnMklETTVMalEzTXl3dE1UQTRMakUyTkNBekxqVXdNU3d0TVM0NE16VWdOeTR5Tmpnc0xUTXVOamc1SURFd0xqVXlOU3d0TlM0eE9UVWdOQzQ0TVRRc0xUSXVNakkxSURrdU1qY3pMQzAyTGpZMElEWXVNakUwTEMweE15NHdPVFlnTFRNdU56Y3pMQzAxTGprME9TQXRNVEF1TVRVNExDMDBMamt5T0NBdE1UTXVPRE1zTFRNdU5UYzBJQzB6TkM0d05Td3hNaTQxTlRrZ0xUVTJMakUwT0N3ek55NHdPVFFnTFRZMUxqQTFOeXczTVM0NU5UTWdMVEUwTGpRekxEVTJMalExTnlBeU1DNHpNaklzTVRFekxqVXpOeUEzTmk0ek1Td3hNamN1TlRFMUlFTWdMVGN6TGpRM09Td3hNVFV1TVRjMElDMHhOaTQxTXpNc09EQXVNamNnTFRJdU56YzJMREl5TGpZeE15QXRNQzQ1TkRrc01UUXVPVFU0SUMwd0xqZ3dPQ3cyTGprZ01Dd3dJaUF2UGp3dlp6NDhad29nSUNBZ0lDQWdJQ0FnSUhSeVlXNXpabTl5YlQwaWRISmhibk5zWVhSbEtETXdNaTQ1TkRJNUxETXhNeTQzTWpjMUtTSUtJQ0FnSUNBZ0lDQWdJQ0JwWkQwaVp6STRJajQ4Y0dGMGFBb2dJQ0FnSUNBZ0lDQWdJQ0FnYVdROUluQmhkR2d6TUNJS0lDQWdJQ0FnSUNBZ0lDQWdJSE4wZVd4bFBTSm1hV3hzT2lNeU16Rm1NakE3Wm1sc2JDMXZjR0ZqYVhSNU9qRTdabWxzYkMxeWRXeGxPbTV2Ym5wbGNtODdjM1J5YjJ0bE9tNXZibVVpQ2lBZ0lDQWdJQ0FnSUNBZ0lDQmtQU0pOSURBc01DQkRJQzB3TGpFeU5pd3pNQzR3TXpFZ0xUSTBMall4TERVMExqTXhNaUF0TlRRdU1UTTBMRFV6TGpZNE55QXRPREl1T0RNMUxEVXpMakEzT0NBdE1UQTNMakk0T1N3eU9DNDFPRGtnTFRFd055NDJORGtzTUM0d09UVWdMVEV3T0M0d01UWXNMVEk0TGpnNE5DQXRPREl1TnpreExDMDFOQzR4TkNBdE5UTXVORGszTEMwMU5DNHhNalFnTFRJekxqUTBMQzAxTkM0eE1EY2dNQzR4TWpnc0xUTXdMakkyTXlBd0xEQWdiU0F0TlRJdU1EWTVMRGN5TGpZME9TQmpJRE01TGpneE1Td3RNQzQwTXprZ056SXVOakkzTEMwek5DNHdPVGdnTnpJdU1EUTJMQzAzTXk0NE9UY2dMVEF1TlRreUxDMDBNQzQxTWpRZ0xUTTBMalV3TXl3dE56TXVNREl6SUMwM05TNHpOak1zTFRjeUxqSXlOU0F0TXprdU9EZzRMREF1TnpjNUlDMDNNUzR3Tnpjc016TXVOemMzSUMwM01DNDJPQ3czTkM0M09DQXdMak00T1N3ME1DNHhOVFlnTXpNdU1qQXlMRGN4TGpjNU15QTNNeTQ1T1Rjc056RXVNelF5SWlBdlBqd3ZaejQ4WndvZ0lDQWdJQ0FnSUNBZ0lIUnlZVzV6Wm05eWJUMGlkSEpoYm5Oc1lYUmxLREkwTUM0eU1qUTJMREl4TkM0ek5ETXpLU0lLSUNBZ0lDQWdJQ0FnSUNCcFpEMGlaek15SWo0OGNHRjBhQW9nSUNBZ0lDQWdJQ0FnSUNBZ2FXUTlJbkJoZEdnek5DSUtJQ0FnSUNBZ0lDQWdJQ0FnSUhOMGVXeGxQU0ptYVd4c09pTXlNekZtTWpBN1ptbHNiQzF2Y0dGamFYUjVPakU3Wm1sc2JDMXlkV3hsT201dmJucGxjbTg3YzNSeWIydGxPbTV2Ym1VaUNpQWdJQ0FnSUNBZ0lDQWdJQ0JrUFNKdElEQXNNQ0JqSURBdU1qRTBMRFV1TkRFeElDMHhMamN5Tml3eE5TNDVJRGt1TURVc01UVXVPU0F4TUM0d05Ea3NNQ0E1TGpRME5Dd3RNVEF1TWpNMUlEa3VOVEU1TEMweE5TNDBNaUJzSUMwd0xqQXhOQ3d0TVRneExqSTRNaUJqSUMwd0xqQTNOeXd0TlM0ek5qUWdNQzQxTkRRc0xURTFMakUzTkNBdE9TNHdPVFlzTFRFMUxqRTBPU0F0T1M0NE16RXNMVEF1TlRZZ0xURXdMakF3TVN3NExqTXlOQ0F0T1M0NU5USXNNVFl1TVRZMUlIb2lJQzgrUEM5blBqeG5DaUFnSUNBZ0lDQWdJQ0FnZEhKaGJuTm1iM0p0UFNKMGNtRnVjMnhoZEdVb01UZ3dMakkxTURVc05EYzFMamc1TkRVcElnb2dJQ0FnSUNBZ0lDQWdJR2xrUFNKbk16WWlQanh3WVhSb0NpQWdJQ0FnSUNBZ0lDQWdJQ0JwWkQwaWNHRjBhRE00SWdvZ0lDQWdJQ0FnSUNBZ0lDQWdjM1I1YkdVOUltWnBiR3c2Ym05dVpUdHpkSEp2YTJVNkl6SXpNV1l5TUR0emRISnZhMlV0ZDJsa2RHZzZNVGN1T1RBeU1EQXdORE03YzNSeWIydGxMV3hwYm1WallYQTZjbTkxYm1RN2MzUnliMnRsTFd4cGJtVnFiMmx1T20xcGRHVnlPM04wY205clpTMXRhWFJsY214cGJXbDBPakV3TzNOMGNtOXJaUzFrWVhOb1lYSnlZWGs2Ym05dVpUdHpkSEp2YTJVdGIzQmhZMmwwZVRveElnb2dJQ0FnSUNBZ0lDQWdJQ0FnWkQwaVRTQXdMREFnUXlBdE5EY3VPRE01TERBZ0xUZzBMalUzTlN3dE16VXVPVFl4SUMwNE5DNDFOelVzTFRneUxqVTJNU0lnTHo0OEwyYytQR2NLSUNBZ0lDQWdJQ0FnSUNCMGNtRnVjMlp2Y20wOUluUnlZVzV6YkdGMFpTZzBNRGN1TURBME9Td3pPVE11TXpNMEtTSUtJQ0FnSUNBZ0lDQWdJQ0JwWkQwaVp6UXdJajQ4Y0dGMGFBb2dJQ0FnSUNBZ0lDQWdJQ0FnYVdROUluQmhkR2cwTWlJS0lDQWdJQ0FnSUNBZ0lDQWdJSE4wZVd4bFBTSm1hV3hzT201dmJtVTdjM1J5YjJ0bE9pTXlNekZtTWpBN2MzUnliMnRsTFhkcFpIUm9PakUzTGprd01qQXdNRFF6TzNOMGNtOXJaUzFzYVc1bFkyRndPbkp2ZFc1a08zTjBjbTlyWlMxc2FXNWxhbTlwYmpwdGFYUmxjanR6ZEhKdmEyVXRiV2wwWlhKc2FXMXBkRG94TUR0emRISnZhMlV0WkdGemFHRnljbUY1T201dmJtVTdjM1J5YjJ0bExXOXdZV05wZEhrNk1TSUtJQ0FnSUNBZ0lDQWdJQ0FnSUdROUlrMGdNQ3d3SUVNZ01DdzFNeTR4T0RNZ0xUUXdMall4TERneUxqVTJNU0F0T0RRdU5UYzFMRGd5TGpVMk1TSWdMejQ4TDJjK1BHY0tJQ0FnSUNBZ0lDQWdJQ0IwY21GdWMyWnZjbTA5SW5SeVlXNXpiR0YwWlNnek1qSXVORE13TWl3eU5pNDBOakU1S1NJS0lDQWdJQ0FnSUNBZ0lDQnBaRDBpWnpRMElqNDhjR0YwYUFvZ0lDQWdJQ0FnSUNBZ0lDQWdhV1E5SW5CaGRHZzBOaUlLSUNBZ0lDQWdJQ0FnSUNBZ0lITjBlV3hsUFNKbWFXeHNPbTV2Ym1VN2MzUnliMnRsT2lNeU16Rm1NakE3YzNSeWIydGxMWGRwWkhSb09qRTNMamt3TWpBd01EUXpPM04wY205clpTMXNhVzVsWTJGd09uSnZkVzVrTzNOMGNtOXJaUzFzYVc1bGFtOXBianB0YVhSbGNqdHpkSEp2YTJVdGJXbDBaWEpzYVcxcGREb3hNRHR6ZEhKdmEyVXRaR0Z6YUdGeWNtRjVPbTV2Ym1VN2MzUnliMnRsTFc5d1lXTnBkSGs2TVNJS0lDQWdJQ0FnSUNBZ0lDQWdJR1E5SWswZ01Dd3dJRU1nTkRjdU9ETTVMREFnT0RRdU5UYzFMRE0xTGprMk1TQTROQzQxTnpVc09ESXVOVFl4SWlBdlBqd3ZaejQ4WndvZ0lDQWdJQ0FnSUNBZ0lIUnlZVzV6Wm05eWJUMGlkSEpoYm5Oc1lYUmxLRGsxTGpZM05UTXNNVEE1TGpBeU1qVXBJZ29nSUNBZ0lDQWdJQ0FnSUdsa1BTSm5ORGdpUGp4d1lYUm9DaUFnSUNBZ0lDQWdJQ0FnSUNCcFpEMGljR0YwYURVd0lnb2dJQ0FnSUNBZ0lDQWdJQ0FnYzNSNWJHVTlJbVpwYkd3NmJtOXVaVHR6ZEhKdmEyVTZJekl6TVdZeU1EdHpkSEp2YTJVdGQybGtkR2c2TVRjdU9UQXlNREF3TkRNN2MzUnliMnRsTFd4cGJtVmpZWEE2Y205MWJtUTdjM1J5YjJ0bExXeHBibVZxYjJsdU9tMXBkR1Z5TzNOMGNtOXJaUzF0YVhSbGNteHBiV2wwT2pFd08zTjBjbTlyWlMxa1lYTm9ZWEp5WVhrNmJtOXVaVHR6ZEhKdmEyVXRiM0JoWTJsMGVUb3hJZ29nSUNBZ0lDQWdJQ0FnSUNBZ1pEMGlUU0F3TERBZ1F5QXdMQzAxTXk0eE9ETWdOREF1TmpFc0xUZ3lMalUyTVNBNE5DNDFOelVzTFRneUxqVTJNU0lnTHo0OEwyYytQR2NLSUNBZ0lDQWdJQ0FnSUNCMGNtRnVjMlp2Y20wOUluUnlZVzV6YkdGMFpTZ3lOek11TVRjMk15d3pNVE11TXpVMEtTSUtJQ0FnSUNBZ0lDQWdJQ0JwWkQwaVp6VXlJajQ4Y0dGMGFBb2dJQ0FnSUNBZ0lDQWdJQ0FnYVdROUluQmhkR2cxTkNJS0lDQWdJQ0FnSUNBZ0lDQWdJSE4wZVd4bFBTSm1hV3hzT2lObU5qZzNNVEk3Wm1sc2JDMXZjR0ZqYVhSNU9qRTdabWxzYkMxeWRXeGxPbTV2Ym5wbGNtODdjM1J5YjJ0bE9tNXZibVVpQ2lBZ0lDQWdJQ0FnSUNBZ0lDQmtQU0p0SURBc01DQmpJREFzTFRFekxqQXhPU0F0TVRBdU5UVTBMQzB5TXk0MU56SWdMVEl6TGpVM01pd3RNak11TlRjeUlDMHhNeTR3TVRrc01DQXRNak11TlRjekxERXdMalUxTXlBdE1qTXVOVGN6TERJekxqVTNNaUF3TERFekxqQXhPU0F4TUM0MU5UUXNNak11TlRjeUlESXpMalUzTXl3eU15NDFOeklnUXlBdE1UQXVOVFUwTERJekxqVTNNaUF3TERFekxqQXhPU0F3TERBaUlDOCtQQzluUGp4bkNpQWdJQ0FnSUNBZ0lDQWdkSEpoYm5ObWIzSnRQU0owY21GdWMyeGhkR1VvTWpRNUxqWXdNelVzTWpnNUxqYzRNVGNwSWdvZ0lDQWdJQ0FnSUNBZ0lHbGtQU0puTlRZaVBqeHdZWFJvQ2lBZ0lDQWdJQ0FnSUNBZ0lDQnBaRDBpY0dGMGFEVTRJZ29nSUNBZ0lDQWdJQ0FnSUNBZ2MzUjViR1U5SW1acGJHdzZJekl6TVdZeU1EdG1hV3hzTFc5d1lXTnBkSGs2TVR0bWFXeHNMWEoxYkdVNmJtOXVlbVZ5Ynp0emRISnZhMlU2Ym05dVpTSUtJQ0FnSUNBZ0lDQWdJQ0FnSUdROUltMGdNQ3d3SUdNZ0xURXpMakF4T1N3d0lDMHlNeTQxTnpJc01UQXVOVFUwSUMweU15NDFOeklzTWpNdU5UY3lJREFzTVRNdU1ERTVJREV3TGpVMU15d3lNeTQxTnpNZ01qTXVOVGN5TERJekxqVTNNeUF4TXk0d01Ua3NNQ0F5TXk0MU56TXNMVEV3TGpVMU5DQXlNeTQxTnpNc0xUSXpMalUzTXlCRElESXpMalUzTXl3eE1DNDFOVFFnTVRNdU1ERTVMREFnTUN3d0lFMGdNUzQwTURJc05qUXVORFV5SUVNZ0xUSXlMakF4Tnl3Mk5DNDRPRFFnTFRRd0xqWTFPU3cwTnk0ek16VWdMVFF4TGpJeE15d3lOQzR6TXpZZ0xUUXhMamMyTERFdU5qSTJJQzB5TXk0eU5EZ3NMVEUzTGpFME15QXRNQzR4TXpJc0xURTNMak14TXlBeU15NDJNVFFzTFRFM0xqUTRPU0EwTVM0eU1qa3NMVEF1TURrMElEUXhMakl5TlN3eU15NDFNeUEwTVM0eU1qSXNORFl1TmpJeElESTBMakk0TERZMExqQXlPU0F4TGpRd01pdzJOQzQwTlRJaUlDOCtQQzluUGp3dlp6NDhMMmMrUEM5blBqd3ZjM1puUGc9PSIsIm11bHRpRGV2aWNlQ3JlZGVudGlhbFN1cHBvcnQiOiJleHBsaWNpdCIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIkZJRE9fMl8wIl0sImV4dGVuc2lvbnMiOltdLCJhYWd1aWQiOiJjYzQ1ZjY0ZTUyYTI0NTFiODMxYTRlZGQ4MDIyYTIwMiIsIm9wdGlvbnMiOnsicGxhdCI6dHJ1ZSwicmsiOnRydWUsInVwIjp0cnVlLCJ1diI6dHJ1ZX0sInRyYW5zcG9ydHMiOlsiaHlicmlkIiwiaW50ZXJuYWwiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fV0sImZpcm13YXJlVmVyc2lvbiI6MX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wNi0wNSJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDYtMDUifSx7ImFhZ3VpZCI6IjBiYjQzNTQ1LWZkMmMtNDE4NS04N2RkLWZlYjBiMjkxNmFjZSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiMGJiNDM1NDUtZmQyYy00MTg1LTg3ZGQtZmViMGIyOTE2YWNlIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlNlY3VyaXR5IEtleSBORkMgYnkgWXViaWNvIC0gRW50ZXJwcmlzZSBFZGl0aW9uIn0sImRlc2NyaXB0aW9uIjoiU2VjdXJpdHkgS2V5IE5GQyBieSBZdWJpY28gLSBFbnRlcnByaXNlIEVkaXRpb24iLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI4NzA3LCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsiZWQyNTUxOV9lZGRzYV9zaGE1MTJfcmF3Iiwic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURIakNDQWdhZ0F3SUJBZ0lFRzBCVDl6QU5CZ2txaGtpRzl3MEJBUXNGQURBdU1Td3dLZ1lEVlFRREV5TlpkV0pwWTI4Z1ZUSkdJRkp2YjNRZ1EwRWdVMlZ5YVdGc0lEUTFOekl3TURZek1UQWdGdzB4TkRBNE1ERXdNREF3TURCYUdBOHlNRFV3TURrd05EQXdNREF3TUZvd0xqRXNNQ29HQTFVRUF4TWpXWFZpYVdOdklGVXlSaUJTYjI5MElFTkJJRk5sY21saGJDQTBOVGN5TURBMk16RXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFDL2p3WXVoQlZscWFpWVdFTXNyV0Zpc2dKK1B0TTkxZVNycEk0VEs3VTUzbXdDSWF3U0RIeTh2VW1rNU4yS0FqOWFidlQ5TlA1U01TMWhRaTN1c3hvWUdvblhRZ2ZPNlpYeVVBOWErS0FrcWRGbkJubHl1Z1NlQ09lcDhFZFpGZnNhUkZ0TWprd3o1R2N6MlB5NHZJWXZDZE1IUHR3YXowYlZ1em5ldWVJRXo2VG5RakU2M1JkdDJ6YnduZWJ3VEc1WnliZVdTd2J6eStCSjM0WkhjVWhQQVk4OXlKUVh1RTBJek1aRmNFQmJQTlJiV0VDUktnanEvL3FUOW5tRE9GVmxTUkN0MndpcVBTemx1d24rditzdVFFQnNValRHTUVkMjV0S1hYVGtOVzIxd0lXYnhlU3lVb1RYd0x2R1M2eGx3UVNnTnBrMnFYWXdmOGlYZzdWV1pBZ01CQUFHalFqQkFNQjBHQTFVZERnUVdCQlFnSXZ6MGJOR0poamdwVG9rc3lLcFA5eHY5b0RBUEJnTlZIUk1FQ0RBR0FRSC9BZ0VBTUE0R0ExVWREd0VCL3dRRUF3SUJCakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBanZqdU9NRFNhK0pYRkNMeUJLc3ljWHRCVlpzSjRVZTNMYmFFc1BZNE1ZTi9oSVE1Wk01cDdFamZjbk1HNEN0WWtOc2ZOSGMwQWhCTGRxNDVyblQ4N3EvNk8zdlVFdE5NYWZiaFU2a3RoWDdZKzlYRk45TnBtWXhyK2VrVlk1eE94aThoOUpESWdvTVA0VkIxdVMwYXVuTDFJR3FyTm9vTDltbUZuTDJrTFZWZWU2L1ZSNkM1K0tTVENNQ1dwcE11SklaSUkydjlvNGRrb1o4WTdRUmpRbExmWXpkM3FHdEtidzd4YUYxVXNHLzV4VWIvQnR3YjJYMmc0SW5waUIveXQvM0NwUVhwaVdYL0s0bUJ2VUtpR24wNVpzcWVZMWd4NGcweExCcWNVOXBzbXlQeksrVnNndzJqZVJRNUpsS0R5cUUwaGViZkMxdHZGdTBDQ3JKRmN3PT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZkNBWUFBQUNHVnMrTUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFIWVlBQUIyR0FWMmlFNEVBQUFiTlNVUkJWRmhIcFZkN1ROVjFGRC8zZDU5d2VRU0lnUzlBUUFYY0ZMQVFaaTlmcGVWejF0WS9XVFpyNVd4cGM3VzVrbkxhNWpJM1o4NXNyUzJuTTJzanRXd1pTN0lVSDRINHhDbkVReDREQVpGNzRWN3VzODg1djkvbEluQnZWSi9CNFB2OW51LzVudS81bnZNNTU2ZnpBL1F2MEhiL0lyWDNWRktQbzQ1Y25tNGluVUlXWXdMRlJtWlFVdXdqRkcvTjFpUkhoMUVaME5SVlJ1ZHF0MUJkKzJuU0t5Uy9PaHlzMCtsazNlLzNrUTlxdkQ0WlV0YTRWVlNVdVkwZWlweWlUaEFmb2NvT1JWZ0R1dXczcUtSaUFkM3JiY0V0alRqWUlvZjZXYUhzQ216VlBXQ014K2NnaDh0THFXTUthTVdzVWpMcW8yUnRKSVEwb096bWVycFF1NGVzWmdzT05rR3hIN2Qwa2R2VFQxN3M0T01VN1ZJOFpoamdHYU0rQXE5aUVOdThQaWYxdWR6MDdNd3ZLV2Y4R2xWb0NFWTA0UEM1V2RUYVhZRmJSOHZOdkw1KzNLZ2ZiNXhOTXlhOVJhbUppeW5hTWxHVFZ0RmxyNmJhOXUrcHFuRVg0dU11UlJnalNZRWhyTjd1dEZGZTZscWFsN05ma3c1aW1BR0h5blBwYms4Vm1ZMHhzdG5wdGxGQ1ZDWXR6VHVCTjgzUXBNTGpUdGV2ZFB6U1VuSjdlOG1ranhaMzlmWGJLRGZsZFpxYnZVK1RVZ0duQlZGNmZRMmlQSGc0VzE2VVdVd3Z6YmsxNnNNWkUrUG4wcHZ6N0pTZXVBeWVzOGxjcENtYUt1by9wK3FXcjJVY3dJQUhXcnZQMFlFemhYQXRMQWJzc0hocDdpR2FtdnlpalA4cnlxclhVV1g5WG9vd3h5QXVmTkJycDQzUE9CRlhabGtmOE1EUmlxY3B5b3dBd3B1ejJ4K2ZXdnovRHRkZTlzbXN6eWd0Y1I2QzF3YmR6Qmw2T2xxNVdOWVk0b0dhdGhKTXJrVEV4MGpBUlNIQVZzKzVyWWtRTlhiK1FnZlBMc1E2Z1h5SW5zcmVRZm1wbTdSVkZZZkw4Nm4xZmlVT2tZdlNoa1VQeHZidWt6b3k2SzFpaE0xaG8zWHpXNkV2U2ZYQStkcGlXR2FXZCtkb1h6THptR3dLWUZMQ0FzUkFsUEJBaE1sQ0ZYVTd0QlVWUHI4SGdWY0pIV3ErRjAwcGxyK0RNVGRyUDR6dnhZMTFrTk1oeFQrU2VUR2crZDRWNUxRSml0eVVHSk5COFZGWnNqZ1lCWk0vSUkvWENUa2owcXlET3BGMkFWUTE3Q0lqVXAvRG5UMVVrTDVGNWdkaitzUzF3ZzFnRTNnaWdtNjBmQ1h6U25QWGJ5QVBiSVh2K0lEcEUxNlRoYUhJUzlza3lobG1NRTVGM2NmcUFLaHEyQzBFNVBIMWdZYVhhTFBEa1pHMEhESk9uS1dIcDUxSTB6NVNPdXg4ZTFXQXVaemRIUXJUa3A4VG1qWG9JK2xhMHdHWnN6dWJxYk8zaWZRNkEvVzd2VlNZc1YzbVIwSkt3a0tjNFdIaUJrbVI4STNDQ2dJODdvT0w0cXpUNVArUlVKQmVqRU9nQVBLOGhZUHphdE0rZUlUcDJJTzl5VFFtZXJvbVBSeHgxcXhBY3NpbGUvdWJTZUViY1dRR1lFQ2doY0xZMkh5S2pvZ2pIMjVoTXBqcFV2MU91Z2xpNGVoMmVSdzBPMzJiSmpreXVDZ056ZzB2emxZTVNpU3MwdW9vNE1HN2hNT2pDRWFYMXlGRTBuU3ZqQnp1VG5FcEs4Nlo4SW9xRkFJdWJ3OGtnOUFyRWFSRVdTWkkrakg0WGJwNmc5RTlFbkpUM29hUnpETitNVUpCUURIbjU2YThvVW1FQnVzT3hCcy9ONSt0SkViUGtBRkRqOFVHdk9zL0lXdmNTZ2xHQmh2UzcvRlRZZnBXR1lkRFk4ZlBBeFdTQTM1c1RDNHA0K0xtNEFhcUlvUGVRdGZ1Zks2SmgwWmh4bGJzVVhPU21YTmlmRDVaVEFreURvZmJiY2NseG5BOFdOQXF4Q2JSTnlraFh4UXBhRHc2N2ZYVVlic2lHMEtodHYyb2VJdmg4cmhRTVlPY0VBcVhHL2VJK3puZ09jNXl4cjhxODJJQU0xYy9GTEZPcGxxdTVlRlFYck1aekdjVkNqWWJMV0c1STRCVDFldVJybGJ4dE5PdE1pdERERWhMWElJeW5BQXZ1T0VXRTNYM05kQWZ0OTRWZ2FHNDJYSVF0MFpYNlBlQ0UvcVFGZTlySzZIeDdZVTUwS3ZIN2ZXNGZTK3E3S0tCSnhzZ2dCWDVwU0FHaDFqSXJWaDV6UTZ3M1JmYWFoQlhtL2FDYkNaVGpDVUZVVHlXWnFXOXA2Mk1qSlBYVnFPclBnTU80TnY3NEdrZitvd2Z0TlZCRFFuakZKcUhTdzE3cFh2aFdXNUtacWUvUTQ5Ti9VU1RDQVZXb1FYRklIQkhYWGUzRlByVURzdUdEbXRGL2hIS1RIcGVreGhpQU9QSStTSnE2UzZIRjRJOVlXemtCSlRvNDZpVU16V3A4UGlyL1JpZHVMeEtZc1Nrc1Y4dkxsT1F2aEdYMllsUjBPQmhCakMrdS9nRWN2WTBBcEs3WWs0MU54alBTUW5XRkhURjY2VXJqZ2V2QjhDdTVhK2wydllTUlB0dVZEbzczaGhkTVNIblVYN3RUanNWWkd4QWwvV3B0aU9JRVExZ25MMjltWDYvdFIxdG1sa1lqOFc0WCtDU2pXY1VER1kxTnBTL0M3aFNLcWlNTE0vbDJRbVNXWjczRGR6K2dpbzhCQ0VOWVBRNDZxbmt6d1hVYnF2Qmt4alVRc1dmWkZnYnVvM3JBZit3TjdqT085MCt5bng0UGkzTCswbllMMVNjaERVZ0FQNGdQVi83SWQxcSsxSFNobXVHa0lxV1JQZ3l4TUZxUDhIZmpUbmpYd1k1YlFmYkpjdDZPSXpLZ01Ib3RGL0hlMWVnc2F4SFNxRzZ3ZmRtUTV4OE55VEZGcUJjcDJpU293SFIzeWs1KzM2aEY3dlhBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMV9QUkUiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6IjBiYjQzNTQ1ZmQyYzQxODU4N2RkZmViMGIyOTE2YWNlIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWV9LCJtYXhNc2dTaXplIjoxMjAwLCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjgsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4LCJ0cmFuc3BvcnRzIjpbIm5mYyIsInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi04fV0sIm1pblBJTkxlbmd0aCI6NCwiZmlybXdhcmVWZXJzaW9uIjozMjg3MDd9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMy0wMy0yOCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjg3MDcsInVybCI6Imh0dHBzOi8vd3d3Lnl1Ymljby5jb20vcHJvZHVjdHMvIiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJTZWN1cml0eSBLZXkgTkZDIGJ5IFl1YmljbyAtIEVudGVycHJpc2UgRWRpdGlvbiIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjMwMzI4MDAzIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjMiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMyJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMy0wMi0wMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjg3MDcsInVybCI6Imh0dHBzOi8vd3d3Lnl1Ymljby5jb20vIiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJTZWN1cml0eSBLZXkgTkZDIGJ5IFl1YmljbyAtIEVudGVycHJpc2UgRWRpdGlvbiIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjMwMjAyMDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4zIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIzLTAyLTAyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyODcwN31dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMy0wMy0yOSJ9LHsiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjFmNGJkMDIzZDU1OTZhYjhmNTA0ZjZhZjkzZjk4Y2ZmNjNhNTg1MDciXSwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiMWY0YmQwMjNkNTU5NmFiOGY1MDRmNmFmOTNmOThjZmY2M2E1ODUwNyJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiWXViaUtleSBCaW8gU2VyaWVzIChFbnRlcnByaXNlIFByb2ZpbGUpIn0sImRlc2NyaXB0aW9uIjoiWXViaUtleSBCaW8gU2VyaWVzIC0gRklETyBFZGl0aW9uIChFbnRlcnByaXNlIFByb2ZpbGUpIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NCwicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoyfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCIsInJlbW90ZV9oYW5kbGUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlETXpDQ0FodWdBd0lCQWdJVVNPRWpUZi8veXFSZlBXN1FxOHF0SXlDckFnOHdEUVlKS29aSWh2Y05BUUVMQlFBd0x6RXRNQ3NHQTFVRUF3d2tXWFZpYVdOdklFWkpSRThnVW05dmRDQkRRU0JUWlhKcFlXd2dORFV3TWpBek5UVTJNQ0FYRFRJME1EVXdNVEF3TURBd01Gb1lEekl3TmpBd05ETXdNREF3TURBd1dqQXZNUzB3S3dZRFZRUUREQ1JaZFdKcFkyOGdSa2xFVHlCU2IyOTBJRU5CSUZObGNtbGhiQ0EwTlRBeU1ETTFOVFl3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRQ2R2bDI3dzJndTFmUFhlRUZiSWRxeDBCYWx2VkRWV3JRUEo3SHF2aXVFdFpIbHhTTHhTRnRjWHBUb2x2THZvZjhmNHRNZXJRVGtWR3pjbVl6bTFFQlQ0SUp1TW1vRXFma0VFaFdwc0FETUZyalprcWxaWTlFcXhRekxvVkVFb25FNW9HeFNkVkN4Q2NMSWFja3B5Ui9DQ1h2ajFCdC9oVGdFOWhUbEY0cFJxeE1reDNwbEY3eThkRFpsUkhXczd2Ym5obUJDR2VJMFpQRVE2bmwybUNnMnI3NGFkRjJ1Nks5cnJMZmhCQzNRTEU4RVByZ3FVc0kraGt1cTJ0SzRNMlNNT3A4dVVWVmtxVWV1M2gwa3IzV1ZJMFcwMnBrZ3JPZ2lGS0xGTmtTcmJZaGRqTUJEajVpem1xZmM5eEpSS29EWDYxMnFkOFpHVkhwVDVBWUZYKzFoQWdNQkFBR2pSVEJETUIwR0ExVWREZ1FXQkJUWnlVNURpUS9hMlVFZ0U3cUJLMHpoSXNSTlJqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUFNQTRHQTFVZER3RUIvd1FFQXdJQkJqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFYdm5CNFNMdVVKZllNU1ZHQWhzc0wvU21XbGkzRlNjY2d4eWR2S2xBQ2NpZElJV0tRcWEzcS9RU1VFUXpDOURnRWZNZ3I3aUMxQmtUWmJJTGJvVjZVWjVrbk5zdmpFWld1TWVvZ0o4dGdaczFoVnZLd1ppendKK21FY21zamhJckJZdW9MMVQ2eXJPSnZLRmcxanYrQ3k0WndBOUJway9WM1VPaXIxVnlLOGRDdHlIdTZ2Zm9zb3RBZFl4OEZBdVIyNDNnUlRNVjZKeDhKZGlnMkpESUFRTWx6VmVEcFNVSFgvSzJIWFJIeEh3ZmdqYmdVampCdS83MnI4T2ZlaHloekhYSTNLOENGRmRmbE8rOG5FT0pLM3k4RjFpdmdTNXVOLzhTbWNZdy9TVFFZd2hyeFB1d3ozblA4YmFNdW00QkIybm5ZbXBCNjBzWDNibDVrOFFVU3c9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFmQ0FZQUFBQ0dWcytNQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUhZWUFBQjJHQVYyaUU0RUFBQWJOU1VSQlZGaEhwVmQ3VE5WMUZELzNkNTl3ZVFTSWdTOUFRQVhjRkxBUVppOWZwZVZ6MXRZL1dUWnI1V3hwYzdXNWtuTGE1akkzWjg1c3JTMm5NMnNqdFd3WlM3SVVINEg0eENuRVF4NERBWkY3NFY3dXM4ODV2OS9sSW5CdlZKL0I0UHY5bnUvNW51LzVudk01NTZmekEvUXYwSGIvSXJYM1ZGS1BvNDVjbm00aW5VSVdZd0xGUm1aUVV1d2pGRy9OMWlSSGgxRVowTlJWUnVkcXQxQmQrMm5TS3lTL09oeXMwK2xrM2UvM2tROXF2RDRaVXRhNFZWU1V1WTBlaXB5aVRoQWZvY29PUlZnRHV1dzNxS1JpQWQzcmJjRXRqVGpZSW9mNldhSHNDbXpWUFdDTXgrY2doOHRMcVdNS2FNV3NVakxxbzJSdEpJUTBvT3ptZXJwUXU0ZXNaZ3NPTmtHeEg3ZDBrZHZUVDE3czRPTVU3Vkk4WmhqZ0dhTStBcTlpRU51OFBpZjF1ZHowN013dktXZjhHbFZvQ0VZMDRQQzVXZFRhWFlGYlI4dk52TDUrM0tnZmI1eE5NeWE5UmFtSml5bmFNbEdUVnRGbHI2YmE5dStwcW5FWDR1TXVSUmdqU1lFaHJON3V0RkZlNmxxYWw3TmZrdzVpbUFHSHluUHBiazhWbVkweHN0bnB0bEZDVkNZdHpUdUJOODNRcE1MalR0ZXZkUHpTVW5KN2U4bWtqeFozOWZYYktEZmxkWnFidlUrVFVnR25CVkY2ZlEyaVBIZzRXMTZVV1V3dnpiazE2c01aRStQbjBwdno3SlNldUF5ZXM4bGNwQ21hS3VvL3ArcVdyMlVjd0lBSFdydlAwWUV6aFhBdExBYnNzSGhwN2lHYW12eWlqUDhyeXFyWFVXWDlYb293eHlBdWZOQnJwNDNQT0JGWFpsa2Y4TURSaXFjcHlvd0F3cHV6MngrZld2ei9EdGRlOXNtc3p5Z3RjUjZDMXdiZHpCbDZPbHE1V05ZWTRvR2F0aEpNcmtURXgwakFSU0hBVnMrNXJZa1FOWGIrUWdmUExzUTZnWHlJbnNyZVFmbXBtN1JWRllmTDg2bjFmaVVPa1l2U2hrVVB4dmJ1a3pveTZLMWloTTFobzNYelc2RXZTZlhBK2RwaVdHYVdkK2RvWHpMem1Hd0tZRkxDQXNSQWxQQkFoTWxDRlhVN3RCVVZQcjhIZ1ZjSkhXcStGMDBwbHIrRE1UZHJQNHp2eFkxMWtOTWh4VCtTZVRHZytkNFY1TFFKaXR5VUdKTkI4VkZac2pnWUJaTS9JSS9YQ1RrajBxeURPcEYyQVZRMTdDSWpVcC9EblQxVWtMNUY1Z2RqK3NTMXdnMWdFM2dpZ202MGZDWHpTblBYYnlBUGJJWHYrSURwRTE2VGhhSElTOXNreWhsbU1FNUYzY2ZxQUtocTJDMEU1UEgxZ1lhWGFMUERrWkcwSERKT25LV0hwNTFJMHo1U091eDhlMVdBdVp6ZEhRclRrcDhUbWpYb0krbGEwd0dac3p1YnFiTzNpZlE2QS9XN3ZWU1lzVjNtUjBKS3drS2M0V0hpQmttUjhJM0NDZ0k4N29PTDRxelQ1UCtSVUpCZWpFT2dBUEs4aFlQemF0TStlSVRwMklPOXlUUW1lcm9tUFJ4eDFxeEFjc2lsZS91YlNlRWJjV1FHWUVDZ2hjTFkySHlLam9nakgyNWhNcGpwVXYxT3VnbGk0ZWgyZVJ3ME8zMmJKamt5dUNnTnpnMHZ6bFlNU2lTczB1b280TUc3aE1PakNFYVgxeUZFMG5TdmpCenVUbkVwSzg2WjhJb3FGQUl1Ync4a2c5QXJFYVJFV1NaSStqSDRYYnA2ZzlFOUVuSlQzb2FSekROK01VSkJRREhuNTZhOG9VbUVCdXNPeEJzL041K3RKRWJQa0FGRGo4VUd2T3MvSVd2Y1NnbEdCaHZTNy9GVFlmcFdHWWREWThmUEF4V1NBMzVzVEM0cDQrTG00QWFxSW9QZVF0ZnVmSzZKaDBaaHhsYnNVWE9TbVhOaWZENVpUQWt5RG9mYmJjY2x4bkE4V05BcXhDYlJOeWtoWHhRcGFEdzY3ZlhVWWJzaUcwS2h0djJvZUl2aDhyaFFNWU9jRUFxWEcvZUkrem5nT2M1eXhyOHE4MklBTTFjL0ZMRk9wbHF1NWVGUVhyTVp6R2NWQ2pZYkxXRzVJNEJUMWV1UnJsYnh0Tk90TWl0RERFaExYSUl5bkFBdnVPRVdFM1gzTmRBZnQ5NFZnYUc0MlhJUXQwWlg2UGVDRS9xUUZlOXJLNkh4N1lVNTBLdkg3Zlc0ZlMrcTdLS0JKeHNnZ0JYNXBTQUdoMWpJclZoNXpRNnczUmZhYWhCWG0vYUNiQ1pUakNVRlVUeVdacVc5cDYyTWpKUFhWcU9yUGdNTzROdjc0R2tmK293ZnROVkJEUW5qRkpxSFN3MTdwWHZoV1c1S1pxZS9RNDlOL1VTVENBVldvUVhGSUhCSFhYZTNGUHJVRHN1R0RtdEYvaEhLVEhwZWt4aGlBT1BJK1NKcTZTNkhGNEk5WVd6a0JKVG80NmlVTXpXcDhQaXIvUmlkdUx4S1lzU2tzVjh2TGxPUXZoR1gyWWxSME9CaEJqQyt1L2dFY3ZZMEFwSzdZazQxTnhqUFNRbldGSFRGNjZVcmpnZXZCOEN1NWErbDJ2WVNSUHR1VkRvNzNoaGRNU0huVVg3dFRqc1ZaR3hBbC9XcHRpT0lFUTFnbkwyOW1YNi90UjF0bWxrWWo4VzRYK0NTaldjVURHWTFOcFMvQzdoU0txaU1MTS9sMlFtU1daNzNEZHorZ2lvOEJDRU5ZUFE0NnFua3p3WFVicXZCa3hqVVFzV2ZaRmdidW8zckFmK3dON2pPTzkwK3lueDRQaTNMKzBuWUwxU2NoRFVnQVA0Z1BWLzdJZDFxKzFIU2htdUdrSXFXUlBneXhNRnFQOEhmalRualh3WTViUWZiSmN0Nk9JektnTUhvdEYvSGUxZWdzYXhIU3FHNndmZG1RNXg4TnlURkZxQmNwMmlTb3dIUjN5azUrMzZoRjd2WEFBQUFBRWxGVGtTdVFtQ0MifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wMi0wMSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzQsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWXViaUtleSBCaW8gU2VyaWVzIChFbnRlcnByaXNlIFByb2ZpbGUpIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVMkYxMDAwMjAyNTAyMDEwMDciLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wMi0wMSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzR9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDItMDYifSx7ImFhZ3VpZCI6IjczNDAyMjUxLWYyYTgtNGYwMy04NzNlLTNjYjZkYjYwNGIwMyIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiNzM0MDIyNTEtZjJhOC00ZjAzLTg3M2UtM2NiNmRiNjA0YjAzIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6InVUcnVzdCBGSURPMiBTZWN1cml0eSBLZXkifSwiZGVzY3JpcHRpb24iOiJ1VHJ1c3QgRklETzIgU2VjdXJpdHkgS2V5IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEwMCwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRFVqQ0NBanFnQXdJQkFnSUdRMkZzWVdsQ01BMEdDU3FHU0liM0RRRUJDd1VBTURVeE16QXhCZ05WQkFNTUtrbGtaVzUwYVhZZ1JrbEVUeUJTYjI5MElFTkJJRk5sY21saGJDQTNOREE0TlRjd09USXhNVGszTURBZ0Z3MHlNREEwTWprd05UUXhNakJhR0E4eU1EWXdNRFF4T1RBMU5ERXlNRm93TlRFek1ERUdBMVVFQXd3cVNXUmxiblJwZGlCR1NVUlBJRkp2YjNRZ1EwRWdVMlZ5YVdGc0lEYzBNRGcxTnpBNU1qRXhPVGN3TUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUF0R0IrRU9CcDJKZDN2N1ZFQWtaWVVRdXVPMi9hNTF2dEwvdHZHQ0pIVGJRK204dWYzZ0U2dFd5OHpEWW9qMFpkKysvRUlqZ2dkUnJPRDFkWUg1bCt5NWlwUlQzSnNtNlpVMU5CdXRUK1g4S3I1SzhUeDZFUThTL3lTeFl2Rm9USmRzUFB6dDdZdFpSeEg4RTdHTWI3b084d2VqS0QyZ0JUclRFU3MzZDJGTVlhNGovdHJFNjMrdCs0TnFja0pXMHRlTzZlT0ZtSWFYUUtQeC93dUlYM1JlRTlab05DUU9uTmozVVpETlJaWlhMMVZFVENyUm9nUWN2ai9jUWNZRlN3U2VCMjNUa2VzTlF4UktyaUViZVYrajh5cVZFMlR1ekpJUHo0SjEwdTJPbW1yUlFPeHc4Q2RFTlpNYWo2RXQvdFk1MWFHbEFIcjZ4OXBSOHFXM1BoQ1FJREFRQUJvMll3WkRBZEJnTlZIUTRFRmdRVUdkK3lONUdIc2JvWVEvWDR0cHhaMysyanRxQXdId1lEVlIwakJCZ3dGb0FVR2QreU41R0hzYm9ZUS9YNHRweFozKzJqdHFBd0VnWURWUjBUQVFIL0JBZ3dCZ0VCL3dJQkFEQU9CZ05WSFE4QkFmOEVCQU1DQVFZd0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFFVlQ1ODl4QkkzZXY2Y0hVTDdxRkhlQ01PMVMyTVVodDh3TVZQNkdXUG9kMUUxcnlreXlTNmUrdkJva09mWlBURVQ3KzJlRjBRQk5YLzc0Rzk2Vitxdmw1blpISVJxSXhaMGN6dzNlK2EvNFUvWWMzNm0rcjJ2Z3BqelBJbjlHRkw2czd0bXdnMStiTnlQeVU2eXBrRWVWNDZBY2YwYldlL0lBYjg1VlFKWldkQUdoSFNKMWRVVmI4OGw3T2Vxa1FSbnFlM20zYzIwMUpETkNkMXc1LzNMVSs4Zm1tak9tYXRzR3d3NHlSR3czY0dEcFdROWgxVlpwU3VVZGZtN09oL3VsN1BuZmo5dTA1Z0lZYVhCbzl6WEF6MXNlUExWN2hrZmJTN3J5UEwweERVZTZGYklHMjY3ck5KaWg0ZUs2eWtOUEVOR2lSUWV3OHcxQVNkbkxpS289IiwiTUlJQ3VEQ0NBYUNnQXdJQkFnSUNFQVF3RFFZSktvWklodmNOQVFFTEJRQXdKekVsTUNNR0ExVUVBd3djU1dSbGJuUnBkaUJHU1VSUElFbHVkR1Z5YldWa2FXRjBaU0JEUVRBZ0Z3MHlNREE0TVRReE5qTTVOVFJhR0E4eU1EVXdNRGt3TmpFMk16azFORm93YnpFTE1Ba0dBMVVFQmhNQ1ZWTXhGVEFUQmdOVkJBb01ERWxrWlc1MGFYWWdTVzVqTGpFaU1DQUdBMVVFQ3d3WlFYVjBhR1Z1ZEdsallYUnZjaUJCZEhSbGMzUmhkR2x2YmpFbE1DTUdBMVVFQXd3Y2RWUnlkWE4wSUVaSlJFOHlJRk5sWTNWeWFYUjVJRXRsZVNCUU1UQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJIWGhwbGI4ZnU0TFA5WGMwZzVEVlgxdTI2K3EyVlNwVURWSDNON012K3BLRk04dE9QZzN4YWtmQmRYeGUvQ0VMSUNQZWliUVR1b3pUNjQxaURsV3NzcWpiekJ0TUIwR0ExVWREZ1FXQkJSZXV1NHJjSDdxZXNFRWxUakpkcXBkZXB5NmFUQUpCZ05WSFJNRUFqQUFNQk1HQ3lzR0FRUUJndVVjQWdFQkJBUURBZ1F3TUI4R0ExVWRJd1FZTUJhQUZMYmUrdGcxMitsNzRtM0JLL2tHRmh2SzNCWS9NQXNHQTFVZER3UUVBd0lGNERBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQVV4VlAxUGZBYk5XMjV1dmdwcnV4bHRnZ2ZQYm9ZTGNRYWJ6RkhzbGQyUDNyaWlwYzM0TFhMeG1vekJyamR3NUcvcGtUc1Vqc2p5bU44azQ1NVN3enlGZ1RZSng2OUR5S1d4SWlqaGNDSEt0MmtReXBmbWlhZDJnSUcvd1ZXckNYZ2MxbklMb0lCRHVMVXlGZkNIN2VmM2dMdWlyeTZybzJSVnE2R1VLVzgzRS9TVUhkbFVUSmtTcXBXOEUzR092ZmZITkZqV0hiOGExOW9FWmRmUDNrQ3o2NXA2LzJNU3h4djJ3VHQ4ZFE1VWxkWEFFQlhCUFNUZnNxNWJiME5zcXdudkJGa3ZBYUtqK3VleVEvUzlvNVBRckluN0poR2lwWHJhdTQzOGhtdDBSRVE2N1hQRmk0NkNwTVMwVDlzQlBHeVNJb0xNbW5UY25IcjBVb3Rwc0N4UT09IiwiTUlJRFFEQ0NBaWlnQXdJQkFnSUNFQUF3RFFZSktvWklodmNOQVFFTEJRQXdOVEV6TURFR0ExVUVBd3dxU1dSbGJuUnBkaUJHU1VSUElGSnZiM1FnUTBFZ1UyVnlhV0ZzSURjME1EZzFOekE1TWpFeE9UY3dNQ0FYRFRJd01EUXlPVEEyTlRjME5Gb1lEekl3TlRBd05ESXlNRFkxTnpRMFdqQW5NU1V3SXdZRFZRUUREQnhKWkdWdWRHbDJJRVpKUkU4Z1NXNTBaWEp0WldScFlYUmxJRU5CTUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUF1b0FvelVTbXZlTnUyTWNzckxSaURjMnZaK09EY0l6b1dORjY1elJVUTlVakZZVzVkWVhrYUxZSlJzSXo1c2RpZ1l5Y01pR2dhb05GT2x5UjB3U1JYMHBaUzlBV1hXTTdwUnNaUVA5VGR3RGhnbnRpRlNkbWVlYWlLRVNZT1RoK1lHbHNkWTRSMFpmdjVOMzJGcHdzSDB2WTJGL0tjcjNKWDZpNXZLa3pCU20xbWdFSWRmbE5BRzlzL0cwOU1wbnowTWUvMXlJakp2OVY5REVBV0hKbjZNWU4rZmJJQmZvdmxDS1lRWE5UR3hmQWd5UTgyZ2FzQlZXa3VpVUV6dFkyVWJmZ3lBMnBVWjg2T0lkaW5DcU9wZ2w5MmJaaDFqVnhORmplcHZ5ZldLbWxBWVlTdHU4alQ1a2V2QU5RRnlzNFFPMDYzbFpCOU9zdDRBb2hOTXNoVVFJREFRQUJvMll3WkRBZEJnTlZIUTRFRmdRVXR0NzYyRFhiNlh2aWJjRXIrUVlXRzhyY0ZqOHdId1lEVlIwakJCZ3dGb0FVR2QreU41R0hzYm9ZUS9YNHRweFozKzJqdHFBd0VnWURWUjBUQVFIL0JBZ3dCZ0VCL3dJQkFEQU9CZ05WSFE4QkFmOEVCQU1DQVlZd0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFGQ2xta0RMZTdGL0NSbVJ1NzJpS0tOcWlMZllXMDhMRDdUa1FXb3o1M25JQWpzODhzTXNiZnJFU2pyQVBKYzRnc2JDRlpUTGMyRngzejE1NmZUd1dFQStQRGNZTUZucmthTFRCSXZYWVlFZFA1MHVSVXdWeHR3TXExSHVERk41T2FYcDltQzVmQVBTUElPODlTV1VXYlExM0wrblI0SXFKN08waEJ5S0tjV0sxemRUeThUazVMYWRITUo1ZUxGbkhhcFordVJ0N2FtVkN1ZjhGYTNxdVlVQWY0d1FIMjJZaWkwcHZwMUdWaTRLcE1YdXdoTEFpdnJRMjRBdStpK3lod0hxVnpnaGw5RThGSmxvMFlsSy9ickhKRXMzR2RLd0hVQVpBdktkUGZsa09DWTh6L2NTaWJkSURob3dPV3RINmxHdlFoeER6WEIrQW5reE11VE1RQzg9Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUdRQUFBQU9DQVlBQUFEWmpibG9BQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRW5RQUFCSjBBZDVtSDNnQUFBZmZhVlJZZEZoTlREcGpiMjB1WVdSdlltVXVlRzF3QUFBQUFBQThQM2h3WVdOclpYUWdZbVZuYVc0OUl1Kzd2eUlnYVdROUlsYzFUVEJOY0VObGFHbEllbkpsVTNwT1ZHTjZhMk01WkNJL1BpQThlRHA0YlhCdFpYUmhJSGh0Ykc1ek9uZzlJbUZrYjJKbE9tNXpPbTFsZEdFdklpQjRPbmh0Y0hSclBTSkJaRzlpWlNCWVRWQWdRMjl5WlNBMUxqWXRZekUwT0NBM09TNHhOalF3TXpZc0lESXdNVGt2TURndk1UTXRNREU2TURZNk5UY2dJQ0FnSUNBZ0lDSStJRHh5WkdZNlVrUkdJSGh0Ykc1ek9uSmtaajBpYUhSMGNEb3ZMM2QzZHk1M015NXZjbWN2TVRrNU9TOHdNaTh5TWkxeVpHWXRjM2x1ZEdGNExXNXpJeUkrSUR4eVpHWTZSR1Z6WTNKcGNIUnBiMjRnY21SbU9tRmliM1YwUFNJaUlIaHRiRzV6T25odGNEMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzk0WVhBdk1TNHdMeUlnZUcxc2JuTTZaR005SW1oMGRIQTZMeTl3ZFhKc0xtOXlaeTlrWXk5bGJHVnRaVzUwY3k4eExqRXZJaUI0Yld4dWN6cHdhRzkwYjNOb2IzQTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2Y0dodmRHOXphRzl3THpFdU1DOGlJSGh0Ykc1ek9uaHRjRTFOUFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdmJXMHZJaUI0Yld4dWN6cHpkRVYyZEQwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOTRZWEF2TVM0d0wzTlVlWEJsTDFKbGMyOTFjbU5sUlhabGJuUWpJaUI0Yld4dWN6cHpkRkpsWmowaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOTRZWEF2TVM0d0wzTlVlWEJsTDFKbGMyOTFjbU5sVW1WbUl5SWdlRzF3T2tOeVpXRjBiM0pVYjI5c1BTSkJaRzlpWlNCUWFHOTBiM05vYjNBZ01qRXVNU0FvVFdGamFXNTBiM05vS1NJZ2VHMXdPa055WldGMFpVUmhkR1U5SWpJd01qQXRNRFF0TVRCVU1URTZORFk2TVRZdE1EUTZNREFpSUhodGNEcE5iMlJwWm5sRVlYUmxQU0l5TURJd0xUQTBMVEV3VkRFeE9qUTJPak15TFRBME9qQXdJaUI0YlhBNlRXVjBZV1JoZEdGRVlYUmxQU0l5TURJd0xUQTBMVEV3VkRFeE9qUTJPak15TFRBME9qQXdJaUJrWXpwbWIzSnRZWFE5SW1sdFlXZGxMM0J1WnlJZ2NHaHZkRzl6YUc5d09rTnZiRzl5VFc5a1pUMGlNeUlnY0dodmRHOXphRzl3T2tsRFExQnliMlpwYkdVOUluTlNSMElnU1VWRE5qRTVOall0TWk0eElpQjRiWEJOVFRwSmJuTjBZVzVqWlVsRVBTSjRiWEF1YVdsa09qVXlNMkZrTXpOa0xUa3dNak10TkdObE5TMDVNR0ptTFdVelptRXhaRGRqTUdGbE5pSWdlRzF3VFUwNlJHOWpkVzFsYm5SSlJEMGlZV1J2WW1VNlpHOWphV1E2Y0dodmRHOXphRzl3T2pCaE1URmxaVGRtTFdRNVpUUXRZV00wTkMxaE0ySTJMVGxsWm1Wa1lUQTBOREE1WmlJZ2VHMXdUVTA2VDNKcFoybHVZV3hFYjJOMWJXVnVkRWxFUFNKNGJYQXVaR2xrT21JNFpHUm1ZVEE1TFRkaU0yTXRORE13TXkxaU5UbG1MV0UyTVRReVpUZGlNVEpoWVNJK0lEeDRiWEJOVFRwSWFYTjBiM0o1UGlBOGNtUm1PbE5sY1Q0Z1BISmtaanBzYVNCemRFVjJkRHBoWTNScGIyNDlJbU55WldGMFpXUWlJSE4wUlhaME9tbHVjM1JoYm1ObFNVUTlJbmh0Y0M1cGFXUTZZamhrWkdaaE1Ea3ROMkl6WXkwME16QXpMV0kxT1dZdFlUWXhOREpsTjJJeE1tRmhJaUJ6ZEVWMmREcDNhR1Z1UFNJeU1ESXdMVEEwTFRFd1ZERXhPalEyT2pFMkxUQTBPakF3SWlCemRFVjJkRHB6YjJaMGQyRnlaVUZuWlc1MFBTSkJaRzlpWlNCUWFHOTBiM05vYjNBZ01qRXVNU0FvVFdGamFXNTBiM05vS1NJdlBpQThjbVJtT214cElITjBSWFowT21GamRHbHZiajBpWTI5dWRtVnlkR1ZrSWlCemRFVjJkRHB3WVhKaGJXVjBaWEp6UFNKbWNtOXRJR0Z3Y0d4cFkyRjBhVzl1TDNadVpDNWhaRzlpWlM1d2FHOTBiM05vYjNBZ2RHOGdhVzFoWjJVdmNHNW5JaTgrSUR4eVpHWTZiR2tnYzNSRmRuUTZZV04wYVc5dVBTSnpZWFpsWkNJZ2MzUkZkblE2YVc1emRHRnVZMlZKUkQwaWVHMXdMbWxwWkRvMU1qTmhaRE16WkMwNU1ESXpMVFJqWlRVdE9UQmlaaTFsTTJaaE1XUTNZekJoWlRZaUlITjBSWFowT25kb1pXNDlJakl3TWpBdE1EUXRNVEJVTVRFNk5EWTZNekl0TURRNk1EQWlJSE4wUlhaME9uTnZablIzWVhKbFFXZGxiblE5SWtGa2IySmxJRkJvYjNSdmMyaHZjQ0F5TVM0eElDaE5ZV05wYm5SdmMyZ3BJaUJ6ZEVWMmREcGphR0Z1WjJWa1BTSXZJaTgrSUR3dmNtUm1PbE5sY1Q0Z1BDOTRiWEJOVFRwSWFYTjBiM0o1UGlBOGVHMXdUVTA2U1c1bmNtVmthV1Z1ZEhNK0lEeHlaR1k2UW1GblBpQThjbVJtT214cElITjBVbVZtT214cGJtdEdiM0p0UFNKU1pXWmxjbVZ1WTJWVGRISmxZVzBpSUhOMFVtVm1PbVpwYkdWUVlYUm9QU0pqYkc5MVpDMWhjM05sZERvdkwyTmpMV0Z3YVMxemRHOXlZV2RsTG1Ga2IySmxMbWx2TDJGemMyVjBjeTloWkc5aVpTMXNhV0p5WVhKcFpYTXZaakU1T0RVM09EQXRObVl5WVMweE1XVTBMVGd4WlRJdE5qRmpNek01TXpjek5qaGlPMjV2WkdVOU56TTBOams1TUdRdE1USXpOQzAwTm1KakxUbGpOekV0TkdWbU9UVXpOV0l3WVdWaElpQnpkRkpsWmpwRWIyTjFiV1Z1ZEVsRVBTSjFkV2xrT2psalpETTFaamd4TFRSa01UWXROVFUwWVMxaU1qVTNMV1EyWlRFMk16UmxNalV3WmlJdlBpQThMM0prWmpwQ1lXYytJRHd2ZUcxd1RVMDZTVzVuY21Wa2FXVnVkSE0rSUR3dmNtUm1Pa1JsYzJOeWFYQjBhVzl1UGlBOEwzSmtaanBTUkVZK0lEd3ZlRHA0YlhCdFpYUmhQaUE4UDNod1lXTnJaWFFnWlc1a1BTSnlJajgrbm9hTWFnQUFCWnRKUkVGVVdFZk5tR2xzVkZVVXgvOXYza3luUTZmdFRNZlFCVVFXQllrVUVXa0RDZ1lWVkdSUjJZS0lpWkVvR3NRRmlJcGIrR1Q4UVB4a2pHeUJFQXVtMG1LQ0xBbkd4SWlhQU5JS0FzVlNwQVlqYmFlZG1jN1NXZDdpUGZmZHpzenJUSXVFcWVXWG5MeDc3aks1NzU1N2xqZFNvL3NlSFZsUXUwTW8zYmdHSXo3WkpIcFNYS2lhaitDcEgxQ3RoMFJQLytpNkR1VmFPOEsvbmtYWHJscDAxdStIcmJnTWtzVWladlNQcmlpd09QSXh1YTBSVGRVTDBYUHVJaXoyUERHYVFvdkhrVDkrSENhZVBzTDFxMjl0UnZ0bnV5RVhPcm1lOEhsUmVma0V2TnRxMExabGE3TC9Sb2o3L2thVjdrUHozSlVJSFQvQjkwWG9xZ1lKT3U0TlhNQUp5WVU4MXdoSWttU01KUlRJSGpjcXIvekM5WFFhaSs0R213aEpscmxPNytDb25JanJuOHBOUXB1emxaZkN0V0FPeHRadHcrUkxEVkFDWHVpYUptYmNQSkxOaG1CRDVrdi9YOURCRTg3S0t1anhCRzhUa3MyS2FPdEZKTm82Ukk5QjVMZnpVSUpkU1dNUVdqak1IV0RRRGRJWCs3ZzdNSGJmRHFnQnYraGhtNG5Gb2ZoOG1STDBRL1VGeEt4TXlQc0lNcnFNWWZBZlBNYjFvYUwwN1ZlaFJjSkNNNUF0aGN3ejl3ck53THQ5THl6V0FxRVo3NkVoQnZlU0ozTnZrTWpwMzNGdS9DdzBUVjhFNzlZYTBXdW1aTVVpZG52czNOM0pHQVZWVTNEWHNhOHdybjZuV2VwMllVenRGMktWR1c0TVZVMFpKUzhmL3ZxanZOMGZhaUNJaE5MT3drOWJVclJJanhnMWswaWJRNUpBNmdMMWgyZlZZbmF3MGVTZUNNdXdmQjRxMC9IdTJNZjdlNkU5M0xaeUJXL24zQ0FxKy9GSTgzbjBuTG1BbGxkZVF1am5VMkxFakh2eFBPaXhHRDlVKzloUktKb3pDNjVubmpBSnpYRTkvYmhZWVlaQ1ErR2pNNU1od3BKdmg2LzJJRzluZzR3eDZ2T1BNYTI3SFZPRHJWeXE5QTY0bjJPSDJNY29aSXhwYkd4cXlKaEhVajJBcDZialdiWWNlaVFxTkNPY1JxODJNNDgzMWxNZTFHTGRwbkNseHJ0UnRta2RiK2ZjSUpTc0plVHhBN0xKdytIZmYwaU1tTW1mUEpISFhpblBodEJQSjlHNmVpUCtYUFc2U1M0dlhRUHY3bHF4d293ZWpjSzlmQ0YvRXZTQ1NxVFQrRTEyQ0gwaGJ5UW9vY3ZPWVZ3SWl2Tjk4NWtPbFQvbEFtTWVpZFZWeFB1dUIrVUJOUjRVbW9FUnRnd3Y4VzVuM3BFZXJsamhrdWVwZ0dQU0JLNFBiZzZSTFZBNnVvUml4dW9wNFFjaFdhMUkvTk9HemkvcjRmdjZXNU4wMVgyRFNNTlpzY0tNcHJHWXkwS2ZxcVZpdG9YbEVWb25zY3Z3bjBrTEw3bWdvSG9LWkVjeHV3Q0dVUW5KNGVCNWcvQnVyMkhoeXNIYmhCb0tvK3k5MTRRMjJBWWhMRVlKbUVGNk41Vi81Rmw5aExZblNkbTN5SXBwbnN6dFphT1RWWTdGWVllLzdyRHBoWWVDMHZVdnM2b3BJalREQzZNdHpRaWZPc05DZWlnWnJpalhxSHFReis5bGNBM0MzTkUyc2x3b1pwU09UbjdvZEpOa3R3dUZqendBNTh4cWt4UStPSjFYWlFOUjh1eFQwSHJEbHQyT3dPSHZlWnVNUEZSUXRhV29nVlRCd2ZaaUxmYmcwcnhWN09ubWZZUWVaVjcrMkFLaEdlVGNJQlFUTlFTaCtMc1IxNjVoK05vWHhJaVpub1p6UnZ4bVZWWVJTODUzSHRyREtxMjlKcGx3L0FDR3IzdFJyTWlPYTlsOGFJb3dDSG1hVldiVjFoR2V3NFlLdWNnSjU2UnA1bThTdW55VTM3am5HNmpSSUV2bWE0Vm1rSE9ENUkwYWdZb043NkQ4b3pkeDMrVVcyQ3BLeFlnWlg5MGhJOVl6OTQyMXRLTDd1eC9oUDNBMFE3cHFEb2dWMlhIT3VKK0hyK1J0cEtxbTZSTFBUVU5KdG0rU2RHTlFaTERZQ2xBNGU0Ym9NY2k1UWV5alIyTGtsZzlSc1hrOTdHTnVGNzFtMmo3ZHhwKzBRZm9ySkh5eUVjMXpWNkJsOGVvTXVjaHFlejUzZ0JCVVBQdGg3bW05RExVeENNL3pTeksrU2RLaEhFTVZXVjl5YnBEclFUSCtydzN2UW5ZVml4NjJDV1lVcTl1ZFhaQ0t1ZjNoWHJZUVdrK3E5cjlWOEN4ZENqM0x2c2hJbEdQSzNqZStQZElaZElQb2lzcEMwaFYwN3RtUHB1b0YrR1ArY3RoYzVRUGUrQnVsaEhtUkR2YVJlWXRSOXNFYlVHT3BhcXNYUFI1SDhVTnorSGVPR2VCZkozNTZDTDhHZEQ4QUFBQUFTVVZPUks1Q1lJST0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCJdLCJleHRlbnNpb25zIjpbImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6IjczNDAyMjUxZjJhODRmMDM4NzNlM2NiNmRiNjA0YjAzIiwib3B0aW9ucyI6eyJyayI6dHJ1ZSwiY2xpZW50UGluIjp0cnVlfSwibWF4TXNnU2l6ZSI6MjIwMCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMV0sImZpcm13YXJlVmVyc2lvbiI6MTAwfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjAtMDgtMjEiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MiwidXJsIjoiaHR0cHM6Ly93d3cuaWRlbnRpdi5jb20iLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6InVUcnVzdCBGSURPMiBTZWN1cml0eSBLZXkiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDIwMDgyMTAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4yIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjMifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjAtMDgtMjEiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6Mn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMi0wNC0wNyJ9LHsiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbImM4ODlhYmQwMTYyN2I5OGQyZjdjMWNkOWQ1ZDE2ZDJkMDI2MmY2OTYiXSwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiYzg4OWFiZDAxNjI3Yjk4ZDJmN2MxY2Q5ZDVkMTZkMmQwMjYyZjY5NiJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiRWdpcyBVMkYgQkxFIEF1dGhlbnRpY2F0b3IifSwiZGVzY3JpcHRpb24iOiJFZ2lzIFUyRiBCTEUgQXV0aGVudGljYXRvciIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyLCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIiwiYmFEZXNjIjp7InNlbGZBdHRlc3RlZEZSUiI6MC4wLCJzZWxmQXR0ZXN0ZWRGQVIiOjAuMCwiaUFQQVJUaHJlc2hvbGQiOjAuMCwibWF4VGVtcGxhdGVzIjowLCJtYXhSZXRyaWVzIjowLCJibG9ja1Nsb3dkb3duIjowfX1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlbGVzcyIsImJsdWV0b290aCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQmJEQ0NBUkdnQXdJQkFnSUJBVEFLQmdncWhrak9QUVFEQWpBZE1Sc3dHUVlEVlFRREV4SkZaMmx6ZEdWaklFTkJJR1p2Y2lCVk1rWXdIaGNOTVRZd01qSTJNRGd4TVRBMldoY05NVGt3TWpJMU1EZ3hNVEEyV2pBZE1Sc3dHUVlEVlFRREV4SkZaMmx6ZEdWaklFTkJJR1p2Y2lCVk1rWXdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUlAzQUU2VnM1dEZCQ0lNZXhtZFhpUkZjOFFjeVRyYzZubDFmRW9CS3dNZEJNdGpmL3Z6UGpyckFpdGs1UTJPak85WU55MjZDaTRUTUlZSXdyOFlCUW9vMEl3UURBZEJnTlZIUTRFRmdRVXlJbXIwQlludVkwdmZCeloxZEZ0TFFKaTlwWXdId1lEVlIwakJCZ3dGb0FVTXVyaVAvQzFpRmc0dnFCRzE1azR2SGhPczNnd0NnWUlLb1pJemowRUF3SURTUUF3UmdJaEFKUU1PNm42UEk5RVBZeDZNanVzSUZvN0dQQjFZOFlweitVQm1VajZDVWwyQWlFQWgwRTJtcGFUVlRScDFwYVdVbEh2bllHQnUzUzA0SHJkMzdPUjBsWG9YUjA9Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQU1nQUFBQnFDQVlBQUFENWpCNTdBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNJQUFBN0NBUlVvU29BQUFCelpTVVJCVkhoZTdaMEhZRlJGR3NmLzZiMEhRa2lqU0pFaWdocEFsTjZiSUJBNnlpa0luQVVWRGp6dVBFKzlwbGhvS2lycUlVVkFGRkM2aUNqRkErbElrNmFVUUlCQUV0S3ptL3UrZWU5bGE1TGR6U2JabGZucHNKdlp0N1B6NXMxL3Z2bm16Y3p6S0NZZ2tVaXM0cW0rU2lRU0swaUJTQ1JsSUFVaWtaU0JGSWhFVWdaU0lOV0lIQjF4ZlVvZHhjbzVmeDZwcTlaQ241OFBEdzhQTlZiaURMaklQYnk4a1BqSUtQaEdocXV4RWxla1ZJRmMrMkVuOWo4MkFZVVptZUppU3B4SHNVNFBMejgvUExCMUxZTHExMWRqSmE1STZWMHNOaHBzT1dSd2Z2QlVYeVV1VHhrK2lISVJQVHc4NGVFcGcxT0RzVmdrTG8zZFRqcjN5R1N3UDBqY2s5SjlrTzI3c1AveGlTakt5SUtIdCtLRGlFUDVnaGNWb1ZpdkYzR1NjaUFyNGVucnE3NVZMRWF4VGtkeDVJTjgreldDNnRVVGNSTFh4RDZCa0NpOEFnTVIycVF4Zk1MRHBVaHNnVXIzMnJidlJlTWlCZUorMkNVUWZXRWhBdXNrb2NXc21RaTd0eVdLOHd0RXZNUUtKZTZGQnpZMXZBc2dVV2lqZ1ZJZzdvUDlBcWxYRnkzbnowWlk4MllpVGxJK0c1SWFvYml3U0FyRURiSC9UanJMU1hhdGJJS0xTclEvVnBzZ2lUc2dwNXBJSkdVZ0JTS1JsSUg5UGtoZDhrSGVleHRoTGNqeE5LSW9OeGRaUHgrRHZxQ0EzTkxiNndaWU1mM240ZTJOaVB2dUtSbXBZa1RCVXZGdVRHb3Noc2FsRCtKK09FMGcyV2ZPWXUrajQ1RjNKUTJlbm1TWWJoZU5VT25weVNmempZeEV4MTFiMVVnRktSRDN4MmtDdVhYcURQNDNhQVR5VWxOdnY4bU5WT0Y5bzZQUjVlaGVrM1pCQ3NUOWNaNFBRalhEdzh1VGdqYzhxU0o0VXBmamRnaGM2Ymw3SlY3Vm9wRDhmcEJPdWtSU0JsSWdFa2tadUxWQTJIMHFLMGdrRmNWdEJTSUVvTmREbjVkUElRODZOZkI3UGM4Um84K2tTQ1FWeFQwRndoWkNwNE5QUkRnYS9ua3FHcjR3RlkybVQwR2pGNmFJOTNkTS9pTjhvaUxGTVh5c1JPSW9iaWtRcnZMNm9pTEVwd3hCZytlZVFvUG5uMGFES2MvUUs0ZW4wV2pHbjFENzRZZkU2ajFwUlNRVndmMEVRaFdlNzhjRUpTVWlhZHdqYXFRbGlXTkd3Q2M4VkxVaWFxUkVZaWR1SnhDMkNKN2VYb2diT2hnQnRXUFZXRXVDNjlkRFRJOXVRaURVSVZOakpSTDdjQytCc085QlhhdUF1RGpVZnFpdkdsazZkU2M4cnZnaTlCMkp4QkhjUnlBc0RuN1JGNk5HbDQ0SWJuaUhFbDhHUVEwYklPN2hBZUIxNFhKNXNNUVIzTXFDY0hmSmx5eEMvSWloYW93WlpqMHBudm9STjJRZy9HcEVLNzZJUkdJbmJpTVFVZmZKQ3NTblBJeXc1azFGbkRGcG03Y2dkZDE2OVM4RDRTMWJJT3IrTnNLQ3lCRXRpYjI0ajBESWorRDdIdkhEaHFneEJuVDUrVGc5NngyY1g3aUVMSVZsVnlwK1JBcTgvUHlWYnBZVWljUU8zRUlnM1BMckM0c1EyNzh2UXBvMFZtTU5YUDFtSzY1djM0WDAvLzJFRzN0K1VtTU5STFc3SDdVSDloTWlrL0tRMklQckM0U2RjL0lmL0dwR2kwcHVEdDhUT2I5a0dUeDhmYURMeWNHNWp6Nmw3NWhhRVo2R3o4UENQc0ZCMGhlUjJJWExDNFJiZk80YXhYVHJqUEJXTFpWSUk2NTk5ejNTZC94WXNqNGpkZFZxWE4rMVcvM1VRR1RiWk5UbzJobjZna0xwaTBoc3hyVUZ3aFZaWDB6K2d5OWlCejRFVDNvMWhpY21YbGp4SlhTNXVYUW1kQ3JxeHRBWGxxeFFqekRBMDA1aUIvU0RUMWlJY1BhbEx5S3hCWmNXQ0ZkaFhYNGVZbnAyUjQxTzdaVklJektQSGtmYXVvMWlSVjhKWHQ1STIvUU4wbmRiK2lMUkhkb2h1bU43Nm1aSlgwUmlHNjRyRVBZOXFLWDNEZ3BDMHVQVzUxeWRmZTlENlBMeXhZMUF0aHg4MzRNdEJULzBKM1hsYWd0L3d6c29HTFY2OTZTekprR3hGWkZJeXNGbEJTSmFlS3JndGZyMFJHaXpKaUxPbUt2Zi9ZQzB6ZC9DazV6ekVyUXRkOGdwdjdEOGMrU2NPYWY4YlVUYzRBR0lhdHRhT1BmU0Y1R1VoMnNLaENzdUJYNXNRSzMrZmVBZEdLUitvTUNXNGZMcXI2RExVWHdQNDcyb2hDV2h1S0xNTFB6NjMwVnFyQ2xza2NRT0krcnZTQ1NsNFpJQzRTckxJb2hvazR5WTdsMlZTQ051N0QrSXkrczJDVXRSR3A1K2Z1VEFmNEdiQnc2cU1RYWkyclZGemE2ZHhMMFZLUTlKV2Jpc0JlRzc0NG1QamhMM01NeTV2R1l0OHRQU2hLVmd1S3RrSEFUc2k5ek13S1ZWWDFsWUNaK3dVTVQwNms3Zko4dGo5cGxFWW96TENVUlVjbXJaMlhMVTZOeEJqVFdRdm5zUExpNWRMcnBJNHM1NEdZRWQ4VXZMdjBUVzBSUHF0dzNFRHV5UDBPWk55VkxKT1ZxUzBuRTlDNkluZ2RCL0NhT0d3anNnUUkwMGtQdnJlWVMwYUk2YUxLQXVIY3NNTmJ0MVFYRGpCc2k5ZUZIOXRnSHZ3RUQ2amVIUTU1RWZJd1VpS1FYbmJUMTYrZ3gyRHhtRnZOUXI4T1J1a1pIamJDdkNldWlLRUptY2pQdVdMeFRQRWplRnMrcFl1dUpiWm5rcXVIRVRlNGFOSmovbE1EeDlmRXljZlZzUnhVZVd5amNxQ2wwT205N0JGd1ZMbjh1dFI5MFgxN0lnWE5tS1BWQ3JmMjhyNG1Ec3I4Q01xUGhXS3I4dnp3NGVQbFNJVXZ5MlJHS0d5d2hFV0E5cWlVT2JOa2I4a0lGcWJPWER1NStFTm05R3YwMi9MMFVpTWNOMUxBaFZUdXJ2SVQ1bEVMeERROVhJeXNjbk5BU3hmWG9wZDlhbFFDUm11SVJBTk9zUjNLZ2g2anp4bUJwYmRTU09IWW1nK25VcEgzSkVTMktLU3pqcElndmt1RVoxYkkrRWtVUEYrL0phYys0U2VRYjZvMGI3QjhTejI0M2hDWTdYdCsxQTBhMWJKZmRLU29YeXliOTAvdU5GdUw1N2p6amVIbWRkNUYwNjZiOWJYRWNnRlBqeGJiem9TYWxaS2lJWnk3UTRMMEYxRXRGMjB4b0UxNm1qeGlya3BWN0dqcDRQSWV2b2NURmR4UkwrUGZVdFEzbGxrWWw1WGZSZUNrU2lVZTFkTEtXQ1VSZUxueU5PclRmUHVQVU9waEJDSVN3RXZoRVJZaTI2YjJTRVJmQU9DeFVQNnpISHc5T0wvQmo2cnBYdmNGbys5TXBwaTkvZzN3b0tvcElnUzhLV2l5cDdLVzJHNURha1dnV2l0YjdlNGFGbzl0YS9jZGVzMTlGODFtc2kzRFY3cHRpSTJpc3dRQWpJYWREditWRnIzM0Q2RlBxTk4wcCtyOFdzbWJqemxSZmhGMXVMaENKRklsR29kZ3ZDYzY1NDVDcHg1REN4WTBuQzhCUVI0b2NPUm1CY2JSVGV5cmJXdzZvUXZBSXhNQ0dPZm1PUTRmZUdEVWJkY1dNUjA2MExIVUhpa0FLUkVOVW1FRzZodVYvT0kxZjFucHlneGhyZ1ozMmNlbnNldmRFTHY4QnBVRGVPNzZDZisrQVRGR1dUK015b08zRThmS2pyeFlNQVVpU1M2ck1nYXVXTDZkNFpmdEZSNHIweEY1YXRSUGF2NThVQWdUTU5DRHZndkxsRHhzRWp1TDd6UnpYV1FHQlNQS0k3ZFNTZnFOREVqNWZjbmxUUEtCYjlwTDVJQi8vWUdDU3ZXSVRnTytxckh5Z1VabVZoVjg4QklrM3hCRmtyYVhGZUFxaWIxUHFMcGRSZFNsQmpGZkt2WE1XUGc0Y2orK1FwcTZOWWZNbzhZaGFSZkEvYXJsbXBUSHMzSXZ2TU9ld2FrSUtDdEd1S1FNczRGMUY4bFRTS2RaTXMzWTk3ZGlNck00c01uOUtXOFRQWlEwTkMwYUhEZy9EMzl4ZHh0bEJBNTd2bDIrK1FrMk5xTlRuN1Jib2kzTldzR1pvMHVWT05CVTZjL0FXWFV5L0J5MHRaNzAvMlhsalZwazJhSU1xb1Fjdkl6TVQySDdZamh5eStad1Vzdlk1NkN2ejd6Wm9hVm84ZVBYb01SNDRlaFpmWlVMMU9yOE45OTl5THVuVk5SeS90SlRjM2o4cmtXK1JSM3JWcnpOZE1SOWVuYmV0a0pDWW1WbzlBUkFWbDM0UDYvUzNtdktuR0draGR1eEVISnp3bEtwSldxY3lwaUVDNFZ2Q05TVS8vQUhMT1gwT3RmcjNWRDFUb3M4TlRYc0NGSmNzQTc3SW5NVmFtUUk0ZU80YnhFeWJpN05sZjRVMzVZQW9MQzlDd1lVTXNXN29JTVRWcmlqaGJXUExaTWt5Yi9tZFZhTnI1RkNPZnJrT1RPNXRnM3B4WnVQUE9SbW84TU9PdkwrS3paU3NReUlNa0JKOG1pK3k5ZVhQUXVYTW5FY2VjSkNFTkd6a2FhV2xwSldLeUh5VWZrNTk1R3RQL05FV05BelpzM0l3bkprNFNaYXhjQXc3RlZBYUZHRFJ3SU9iTTVycFQrclVwajIrMmZJdkh4MDhRalk2SGh5SkNIVjJuZ0tCQWJObTRUZ2pFVkpwVkFWZE9xaUQ4YkkrNms4YXJrUWFLc25Odzd2MEYwTkhGWUgraFV1RENwclIxMUpxZW5iOUFXQk1UNkxPRVVjUGdFOG1QVHFqT2plYUs0ZVh0UzhHYkJPS2xCbm92aEdaN3hWaTRlREZlZnVVZlFoemkrMnBhbkFhM3d2UGZuV3NpRGlZdnJ3QzNidDFDTmwwUEpXVFQzOWtvb0Fwa0ROY3JieEtHYVI3dERjcjN6UzFGeng3ZDBMTFYzZlRPUXh5akhldExqZDZPblR1eGQ5OEI1VUFIeU1uSnhjSkZpNFcxOFBIeEVXbDdjZm8rM3VqZnA0OFFCMVBsQXVGV2xSK2Z4dXMxUXUrMDNFWTBmZGVQeU5oL1VOemZjTHh0S0I5dWtialZ5RHp5TTI1WTJTS0lONmtMYmRGY2lMa1VJMXNGS0RjdHVldkNsWnVEa20vYmIyWWVQSGdJTTJlK0pWcG9yZ2hhR3R4cSt2bjdZZXFVNTlDZ2dlV2pKRHlwMitsRjE4QTBXSnRsWUpsSGU0UDJmV3ZuTkhiTUdCUVZGWXIzNGpnNm52Tnk0K1pOYlA1bWk0aDNCTGJPZS9mdUU0TFQ4c0M5aXZEd2NIVHZ6aU9aQ2xVdkVCS0hQM1VONm96L2d4cGpRRS85MEZOdnpCRkR2NVJyTGhIMWswcUNMcmd1T3hmbkZpd2tJVmcrWktmK1V4UEY4bHl4SVhhMWljUnh1QTgvN2M4emtKNmVMaXFWcUFSMEhpd09QcHNYWjd5QWh3Y01VQTZ1RU5RcjRKNkJnMEZKUWZ2SGxQWVBQb2kyYmRxUVNBelhSeFBTaWhXZmk2NmRJN3crODAxa2thL0w1YUxCWGJlMnJWdWpTK2ZPYWt3VkMwUVVCbFcyR3AzYkk2U3hxVWxuMG5mdXdzMTkrOFVvVXlWTG93UVBNcW5YZCt6RWpaOHN6WFZrbTJSaDZWalVWcTZkUzFOWVVJaVhYbjRWSjA3OEFqOC9QMU54ME91b0VjTXhhdVFJOVdqSDRmVFlPckdqNjJqSTVWZHltQXRWUzJGTWVIZ1llblR2VnBKdkRud3VYTEV2WGtyRjFxM2IxQ050NS9TcDB6aHc0SURvMW1ubHdxR0llZ3REVXdZTHE2SlJkUUxoVEZBRy9HSnFJbjU0aWhwcGdPOTduSm56cmlJTWJpSFVWcUl5RVMwUldhcUNHeGs0L2ZZY05kWUFUMzFKZW5RMHZFUGNhOU5ycm5UUFBqOFYyN2Z2b05OVHVpVmFKZUErZDkvZXZURmoralQxNklvUkdocUMzcjE3WWRDZ2gvSHd3QUVPaFVFVUJnOStHRTJ0N0gvRzE2aGZ2ejZvWGJ1MnlMOHhmbjYrV1BEeEo4ak16RkpqeW9mVCtIVEpVdVNScUkxOUhyWlFkOTkxRnpwMk5OMEhvY29Fd3FmR2xTd2l1WlhGQ0JpVHZtczNidTQvUkI2Zm95TWhqc0V5OUNJcmNuWGJkbVQrZkV5Sk5DSXkrVjVFdFcwam5IWHpDK1NxdlB2ZSs5aXk5VHY0Qi9pWHRKQk1FWFVoMk4rWU1XTTZBdFRScVlvU1d5c1dyNzd5ZDh5WjlSYmVmdXNOaHdPUG92VWo1OWdhc2JWcW9YT25Ea0xjeG5CTGYvYmNPWHl6NVJzMXBueDRSSERidHU5Rm82SEI1Y09PLytqUkk5VVlBMVZuUWNoRThtelp1cE9lZ0hlUTZmUjBGczc1eForaEtDTkRXQTdSc2xjVnFoV2hKZ1JuNXM2M3RCVGtwNGdOSktpbDVIT2cwbFEvY0UxV3JWNkQyWFBuSVRjM1IxUUNyU3k1aGF4WHZ6N216bjRidFdKaVJKeXpFQTU2QlFPMzVtVmQ5eEhEaHlFb01MQ2txOFhIY21DL1ljblM1YUtiWnd0cjE2OFRvaXB4ekNrdEhyNXUyZkp1ZE94Z3VZdE9sUWlFTTZITEx5RGZveE1pN20ybHhocklQbk1XVnpac0puL0FhQnZScW9aYW8ydmZiMGZHb2NOcWhJR0kxdmNodkVWek1mcm15dkw0WWNkMi9QTmYveEh2dVhYVktnRGZoQXNKRHFadTFaL1F1SkdsNytjT05HcllVSFIvakoxMWhuMlJJMGVPNE5EaEkycE0yU3hlOHBrUXBGWTJES2ZabFJ6ek9DdVBGYTk4Z1hBbVNQVTh2Nm1PbFUyb2VSWGZpWC84Unp6S2dISXRNbDdWOEcreXYxRnc5YXJWUnlmNFJrWlMzaDlWTEkxYXFLN0diNy85aG1uVFp1RHlsU3NXSTFZOHZQdnM1TW5vMnRVd2ZPbHVjQmRvN0tOanhIMEtQaThPNHJwUnVFRTlqOVZrT2JraEtJdEY1SHVjdjNCQlhHdXRubkg1MUtoWkF3TUg5aGQvbTFQcEF1SHFKTzU3VUIrU04yb3o1OGFlZlVqZjhUK3hWV2gxdzlOYUxxNWNoWHdTaWpreHZYc0lmMFJQbGxCcmVWd0ZucEx5MTcvOUhSY3VYaElWU1lNdlB2ZmJ4NDk3REkrTUdhWEd1aSt0V3JZVVUyS01mUkd1NkFIKy9zS3ZPSEhTY29OQWpjeXNXMWl6NWl2NHFKWlZvNkNnRVAzNzlVV042QnBxakNtVkt4Q3VTQlM4eVBlSUh6bFVMSDR5aHU4OVhGejJ1Wmg3UmJrMnlYaFZJMzZiV2hiMmcwNis5cFlhYTBxZGNXT1ZoL2lvNStVYUZHUDZqTDhJcDl4WDNlbWV6MFVUUjk4K3ZUSGx1Y2xrVmFxa04xMnBzR1VjbHBJaUtybmVxUHlGczA0VzlLdXZ2bFpqTE5tMmJSc09Iam9rMHREZ3JoVjNxMGFTZjFNYWxWcHFmQXJzOUlhUzZxMDlBQ2ZyeENsYy9tcTkwblZ4SmhYUW1RZFpzclQxbTVCNXhISkVLK0tlbG1KRGJWNzlXTjN5NEg0MDg5NzdDN0IyM1hyNHFaYUR4Y0VXTHA4c1hkczJyVEZ0eXZNaS92ZENwODRka0pTVUJEM1ZLMk5MN2t2ZHlPVXJWdUxxMVd0cWpDa3J2L2hTV0FzdUg2Mk1lRGk4ZTQrdXFGL1BkTEtzTVpWdlFZajZUMCswT3Vudy9LS2x5Rk0zb1JZdHVOMnc3MkNaTG05NDdVaDZXdUVWWEVzWHp6bzB4NTlhbTBUZVZFSnJqWTB1VU5YaUFSK3lGanhpTld2MkhPRmphSG5uQ3k5R3JPclZ3WnN6WDBkaWtqS25xTExJemMwVkxmT2VuMzRTVXpjY0NUL3QzU3UrZjhIS0ZySG14TlNNUWMrZVBlaWR3Y2xtZUZUcThwWEwrSHJkV2pYR0FNOU0zdkx0Vm5FTW8zMlB1Nk5EQmcwdXNieldxRHlCVUNaNGJrdEkwenZoSFJsTzF1SVhjWitCQTc5UDI3d1ZhUnMydzR2Nmo0NVVadm9TK1BFRldjZFBVRGlKektPVU5vV3NZeWZFbzltSzh3dkZNWGJEbFl5K2RtbjExN2kyYlR2bGxkSTJ5cmQvWEJ4OG95THB3T29SQjVlVmw3Y25qbEIrWG43MVZYRVgybmc0bDd0VzBWSFJlT25GdjZLMmxWRVpaM1B4MGlVOE0vbDVQREwyY1l4OWZKeGo0Ykh4R0RWbUxGWjgvb1dhYXRtTUhqVUNRVUVCNGx5NXNtdm43a21ONWFiTlc1QjIxWFQ2eWVMRlM4V3hmSngyTEhjLzc3Ky9MWm9hVGZHM1J1VUpoRE5ERjQ0M216NHc3a25zSGpRQ3U0ZU9Wc0xnRVRqNDVETmtQYTRLeDlnUjJDSVZwcWZqME5QUGkvUjJwMUM2SElhTXhJRUpUeU1uTmRXaHRFVWhVdHA1Rnk5ai80U25LTjhqRGZrZU5Cejd4MDFDRVRsOGRLVHloU3FHKzlCWHFkeW1UNStPR3pjeXhNeGU3YUpyNUJma2kzbHRWUUZYUEdXbTd5MHgyOWV4Y0V2TWl5bzBuMVZkQ2p6TnYyK2ZQbVFwVFoxMXRxU0hEaDBXTXdnMGpoejVHV3UrV3FNT1hpaFdod1BQM2gyYU1zVEVKN0ZHcFhheFdDQzgvanYvMm5Ya1g3K09ndXZwSXZEZlJWbkt3aDN6aTJzci9EMjJVSVhwR1pTMmtxNUltMEpoK2syK2NoVkttenI1NUxCbm11YWJBL1Z4MmE4U0tUdVlma1hndk4zTXlNQ2wxTXRXTHk1YkU2NXdmM3Y1WlJMUURUVzI4dUQ4Y012TmVhbG8wTHBBdGpDTUtqY3YzR0pMb0hXWitQdVptWm40ZWkzNXRTb3JWcTdFalpzWkluM3RjbkVYbEJkK2RXeHY2UmViVTZrQ1lWZ2syalBNalFPMzBvNVdZQTMrUGkvbXNraWI0cHlTTmw4MHM3UkYrcHgyQmROM0ZKRXZOV2hvclNJSGp1Y0srOXR2NS9IeUsvOUVOaittcnRJeC9MNGpRVWxCKzhjMm1qWnRJbGI5NlkxMnZPRnpaeXV5OWJ0dE9IUG1yR2dndmw2M1FZeHlHY1BPK1pqUm94RVJFYTdHbEU2bEMwVGlmTXdGd2kwaWQzVVlybkQ4RVZlVURaczJZdG15NVNLK3N1RGY0NjRPNThIUndOTkZlSjRZTDZXMUZlNHk4ZjJMZ0FBL2NlNmEwTmlLNkhSRmVIdjJIS3hkdjU2Nm8ya2xaY1hIc01YaEtUZTloS05mUHBVZ0VGWFJuT0hiSVloekxmbW55dUNMelJXRDV5QjE3OVlWQ1FueG9ySXhpaFh4Rk5iam5YZm40K3haeTZmOU9vdEEvd0MwYW5VMzJsQnIzanI1UG9kQ0d3bzhKSjFndG5TNlBIZ2FmRUo4UWtuandQQzU4L0xrNzdaOWo3bnozaE5kS3kxZUU5R3dsTUVrTE52Vzh6dDNUZnJnVWNpN2ZGbDBUVzRycUZYeXBmNXdsOE43MUFnRlJUY1ZXNU0rNmFuSk9IZjJyTEFJR256SmxNdm1nYjU5ZTJIbWYvNk45UnMyNHJtcDA4VDlBUmFIVmlHNGRlN1VzUVBlblBrYUlpTjU5TTAycGs1N0FZdVhMRVVRN3pwSmNGb3N4ZzgvbUk4ZUpFZ05ycHpzcFBPTk82MmxkZ1RlRU1MZjMwK3NYYkdIQlI5OWpGZis4VzhTZ3JJNmtkSEtoNE54V2JEMTRJYmtnL252aXJsZHR1QTBDOEtyN25nakJwNVR4V3M3YnJjZ3BxQ29aVkhaOE1YbWZuVHZudDN4S2puakxCN3ViblRyMHRuRWFlV0t3UnNwY0d2Nnp2ejNSWnl6NFFvWUVoS0NzTkJRaE5Lcm95RXNMTlJ1Y1RBOFJaNm44SE5EWUh6ZUhEUnhhTENGdmI5dEc1dkZ3VGpOZ2hSY3Y0NExpNWVoNEZhMlNhWnVDNmdJdlFJQ2NNZXpUNm9SQ3FKZzZUTm5XaEMrWEJ6dWFkVVNIMzM0QVlLRERjK1FQM2Z1SENZOStReCtQbnBVSE0vWGdZOWwwUVNIQk9POXVYUFFydDM5NnRGbFk2c0ZjUVg0WnVsYnMrYVVPaEttVkhIS2YwRWh2dCs2QlhYckpDa2YySURUQkNLeHBESUV3aTFsZkZ3Y0ZuNnlBUFdzZkpjbjdUMyt4Q1JxTFF2Vm9VMURWNnQ1OCtiNDVLTVBFQjFsdVZHZk9lNGtrTE5VUGtPR2pjSzFhMWROdXFJYW5IZGU4OUdGTE96SEg5cG5TZVVvbHB2QkZ6c2dJQkFob1dGcWpDa2RPclFYZDVxNUpUVnUrM2lvOC9DUkkyS2QrdStOdXRSb1AvaEFXL0tIRE1QR0d2dzMrMG5jalh0c3JPVnlpL0tRQW5GTExDdUNNWS85NFZIY2ZYY0xzaHJLMUh5MkloeDQxZDY2ZGV2eDlicDE2cEcvSC9yMDdvWHdpREFoQnZPeTRXSG9saTFib2xVcnk4VjY1ZUdnUUc0ekg2TWlWSU0vRmxlN05sNzh5d3ZrbjRTUS8yR1lyOFJXaFN2UTY2Ky9pV1BIajZ0SC96NTRzTjBEYU5PNmRjbFF0d2FmTzA4clNSa3lDSUZXbnJ0ZkhuWUxoSzkzdFM2TmRTTllHdFhWbExTNHF3WCtPR2tDWFMvRFZqOHNFckYyNHRkZnhiNVFya25wbHJFc2VCTzgyckd4SnRhRDMvTUFCY2YzN05GZGpiVVB1NXgwZGk1OUlpSlFxMTh2Qk1UVkZqdDlTRXFIeGNHRmUrck4yV0xlR0UrN1lTcmlwTE96MmJCQkF5eGV0QkExYTBTTHVOTGdUYStuLytWRnJGcTFpdndXUSt2Smw1eGJXdDRIZCtLRUo5UllVMngxMHErbnArUExMMWNqT3lmYjZnaVNyWEIrV2ljbmkyRllSemg5K2d5ZW1QaEhuRHA5V2pRQzNCZ29EUVB3N0ROUDRha25KNmxIMm9kOUFsRVA1UVZEOUsvNFgxSUdwQkF1TXk4L1AvSEtGNDJwS29Fd3g0K2ZSTXFJRVNTV1crSm1HdWVCODhLYnBFV0VoMkgrTy9PUW5IeWZlclFCV3dWeTR1UkpEQjh4R2xmUzBrVEZkQVR5cUpDZmw0OW5KL1BtMVZQVldQdVlQLzhEdlBhR1loVzFBUW9ldVV0TVRNQm5pejlGWEZ5YytNeGU3Sks4ZG9GNU4wTHVabm40eWxCbW9ETGkzZVdOeFZIVk5HN2NFTk9uVGhYOWNHNVJHYzRMVDVOUFQ3K0JWLy81TDJUd2Rrc093cFdScDNhd2dCME82dmU5ckN4K3N3V2V2Yng2N1ZvU1JKRkpPZk9vMXJBaFF4d1dCK09BRDJLWVRTcUQ3Y0ZoMkZDVHdMUWdvdXkwM095Z2N1QzFGOGJwY0l1Lzc4QUJMUGpvRS9HM28xZzdYMGVESSt6WTlTTitPZm1MYUFTME5MakxGaGtaZ1Q1OXpSNXRZU2VPZHhvbFZZRGlZSnNIM2lwSnErUzJ3RUo0Y3RKRU5HdldSRlFjUXpyRjR0RUZzK2UrUTM2SzVSSmpkNENuM1BDTVplNythVDRRbnhldjJlL2NzU1BxSk5sKzE5d2FwUXFFKzhuNjNEd1U1ZWFnS0VjR1p3WmRUcTZZdjhXT2UxbjQrdmloVmt4TkpNVEhJVDZ1dGhyaUVFTng1cy9TS0kvWTJGamhyUEtHQjd6UHJaWmVRbnc4WW12RllPbnlGY0xoMXVDMTV2ejBLTzUrYVlIM3dPVit2VEU4U25UclZwYkpjWFlIL2gwS1hObnRaZSsrL2RpK2M2ZG9CRFRyd1hrS0RRdEQzMzdXdHpLMWgxS2RkRjdiZlhyZWZPaElJTnJvaThRNThNeFZEK3AzTjNscGhuZ01YV2tVVUdYTXpNZ1VyYjUyOGZseThZTmVvaUlqSFJvMVN1TVZrV3c5NkwzV29XRW5tWmZvUmtWRmxrd1kvRzdiRHpoMi9KandEeGcrWHE4clFzL3UzWkJVeC9Eb00xNlV0SGI5QnVTUThEM1ZwelRaQzZmTlQzYmlhZlBKOTFrT0dKVEZtRWZIVWw2M2k0MFh1SXk0ZkFySW1uU2pmSDd3N2p5cno5RzNoMUlGd284cDBCWFl0dCtweERGNHN6eDNiSHk0eWpqcUx6aVQ0eWRPSUdYb1NHU1JCZE5HMExqcnlNOWhYTEg4TXp4d3YyMFRNOHVpZElGSUpDNE1DK0Z2TDcyQ1JVdVdtRXpLNUdIdzFtMlNzV0xwRXZYSWlpSDdUaEszSlBWeUtuYnMya2xDTWJUdi9KNjNJZTNUczVjYVUzR2tRQ1J1eWVkZmZDbWVzT3ZEOStSVTY4R1RNNXMyYjQ1ZXZSeWJWbUlOS1JDSjIxRklEdjJ5WlorTG00dU01aFB4NkZXbjlnK0szUmVkaFJTSXhPMzQ3OEpQY2VuU0paTlJQQlpIamVob0RCOW0rWGkvaWlBRkluRXJlRnJKeG8yYnhYdHRKRTEwcjhnNUgvQlFmMFNUU0p5SkZJakVyZGkwK1J2czNiY1BPcjFlM0IvaXdIZlI0eE1UTUx5TXh4ZzRpaHptbGJnVi9JRFM3VHQyd0pObkpxdTNPdlBKZWp6UXJoMmVHUGNIK1BvNjkwRk1VaUFTU1JuSUxwWkVVaXJBL3dGQXpyZ1dXbmQwakFBQUFBQkpSVTVFcmtKZ2dnPT0ifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAxOC0wOS0xNCIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiVW5pdmVyc2FsIFNlY29uZCBGYWN0b3IgKFUyRikiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlUyRjEwMDAyMDE4MDIyMTAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4zLjIiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAxOC0wOS0xNCJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMTgtMDktMTQifSx7ImFhZ3VpZCI6ImMxZjlhMGJjLTFkZDItNDA0YS1iMjdmLThlMjkwNDdhNDNmZCIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiYzFmOWEwYmMtMWRkMi00MDRhLWIyN2YtOGUyOTA0N2E0M2ZkIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ill1YmlLZXkgNSBGSVBTIFNlcmllcyB3aXRoIE5GQyJ9LCJkZXNjcmlwdGlvbiI6Ill1YmlLZXkgNSBGSVBTIFNlcmllcyB3aXRoIE5GQyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjg3MDYsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyIsImVkMjU1MTlfZWRkc2Ffc2hhNTEyX3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NiwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo2LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJREhqQ0NBZ2FnQXdJQkFnSUVHMEJUOXpBTkJna3Foa2lHOXcwQkFRc0ZBREF1TVN3d0tnWURWUVFERXlOWmRXSnBZMjhnVlRKR0lGSnZiM1FnUTBFZ1UyVnlhV0ZzSURRMU56SXdNRFl6TVRBZ0Z3MHhOREE0TURFd01EQXdNREJhR0E4eU1EVXdNRGt3TkRBd01EQXdNRm93TGpFc01Db0dBMVVFQXhNaldYVmlhV052SUZVeVJpQlNiMjkwSUVOQklGTmxjbWxoYkNBME5UY3lNREEyTXpFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUUMvandZdWhCVmxxYWlZV0VNc3JXRmlzZ0orUHRNOTFlU3JwSTRUSzdVNTNtd0NJYXdTREh5OHZVbWs1TjJLQWo5YWJ2VDlOUDVTTVMxaFFpM3VzeG9ZR29uWFFnZk82Wlh5VUE5YStLQWtxZEZuQm5seXVnU2VDT2VwOEVkWkZmc2FSRnRNamt3ejVHY3oyUHk0dklZdkNkTUhQdHdhejBiVnV6bmV1ZUlFejZUblFqRTYzUmR0Mnpid25lYndURzVaeWJlV1N3Ynp5K0JKMzRaSGNVaFBBWTg5eUpRWHVFMEl6TVpGY0VCYlBOUmJXRUNSS2dqcS8vcVQ5bm1ET0ZWbFNSQ3Qyd2lxUFN6bHV3bit2K3N1UUVCc1VqVEdNRWQyNXRLWFhUa05XMjF3SVdieGVTeVVvVFh3THZHUzZ4bHdRU2dOcGsycVhZd2Y4aVhnN1ZXWkFnTUJBQUdqUWpCQU1CMEdBMVVkRGdRV0JCUWdJdnowYk5HSmhqZ3BUb2tzeUtwUDl4djlvREFQQmdOVkhSTUVDREFHQVFIL0FnRUFNQTRHQTFVZER3RUIvd1FFQXdJQkJqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFqdmp1T01EU2ErSlhGQ0x5QktzeWNYdEJWWnNKNFVlM0xiYUVzUFk0TVlOL2hJUTVaTTVwN0VqZmNuTUc0Q3RZa05zZk5IYzBBaEJMZHE0NXJuVDg3cS82TzN2VUV0Tk1hZmJoVTZrdGhYN1krOVhGTjlOcG1ZeHIrZWtWWTV4T3hpOGg5SkRJZ29NUDRWQjF1UzBhdW5MMUlHcXJOb29MOW1tRm5MMmtMVlZlZTYvVlI2QzUrS1NUQ01DV3BwTXVKSVpJSTJ2OW80ZGtvWjhZN1FSalFsTGZZemQzcUd0S2J3N3hhRjFVc0cvNXhVYi9CdHdiMlgyZzRJbnBpQi95dC8zQ3BRWHBpV1gvSzRtQnZVS2lHbjA1WnNxZVkxZ3g0ZzB4TEJxY1U5cHNteVB6SytWc2d3MmplUlE1SmxLRHlxRTBoZWJmQzF0dkZ1MENDckpGY3c9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFmQ0FZQUFBQ0dWcytNQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUhZWUFBQjJHQVYyaUU0RUFBQWJOU1VSQlZGaEhwVmQ3VE5WMUZELzNkNTl3ZVFTSWdTOUFRQVhjRkxBUVppOWZwZVZ6MXRZL1dUWnI1V3hwYzdXNWtuTGE1akkzWjg1c3JTMm5NMnNqdFd3WlM3SVVINEg0eENuRVF4NERBWkY3NFY3dXM4ODV2OS9sSW5CdlZKL0I0UHY5bnUvNW51LzVudk01NTZmekEvUXYwSGIvSXJYM1ZGS1BvNDVjbm00aW5VSVdZd0xGUm1aUVV1d2pGRy9OMWlSSGgxRVowTlJWUnVkcXQxQmQrMm5TS3lTL09oeXMwK2xrM2UvM2tROXF2RDRaVXRhNFZWU1V1WTBlaXB5aVRoQWZvY29PUlZnRHV1dzNxS1JpQWQzcmJjRXRqVGpZSW9mNldhSHNDbXpWUFdDTXgrY2doOHRMcVdNS2FNV3NVakxxbzJSdEpJUTBvT3ptZXJwUXU0ZXNaZ3NPTmtHeEg3ZDBrZHZUVDE3czRPTVU3Vkk4WmhqZ0dhTStBcTlpRU51OFBpZjF1ZHowN013dktXZjhHbFZvQ0VZMDRQQzVXZFRhWFlGYlI4dk52TDUrM0tnZmI1eE5NeWE5UmFtSml5bmFNbEdUVnRGbHI2YmE5dStwcW5FWDR1TXVSUmdqU1lFaHJON3V0RkZlNmxxYWw3TmZrdzVpbUFHSHluUHBiazhWbVkweHN0bnB0bEZDVkNZdHpUdUJOODNRcE1MalR0ZXZkUHpTVW5KN2U4bWtqeFozOWZYYktEZmxkWnFidlUrVFVnR25CVkY2ZlEyaVBIZzRXMTZVV1V3dnpiazE2c01aRStQbjBwdno3SlNldUF5ZXM4bGNwQ21hS3VvL3ArcVdyMlVjd0lBSFdydlAwWUV6aFhBdExBYnNzSGhwN2lHYW12eWlqUDhyeXFyWFVXWDlYb293eHlBdWZOQnJwNDNQT0JGWFpsa2Y4TURSaXFjcHlvd0F3cHV6MngrZld2ei9EdGRlOXNtc3p5Z3RjUjZDMXdiZHpCbDZPbHE1V05ZWTRvR2F0aEpNcmtURXgwakFSU0hBVnMrNXJZa1FOWGIrUWdmUExzUTZnWHlJbnNyZVFmbXBtN1JWRllmTDg2bjFmaVVPa1l2U2hrVVB4dmJ1a3pveTZLMWloTTFobzNYelc2RXZTZlhBK2RwaVdHYVdkK2RvWHpMem1Hd0tZRkxDQXNSQWxQQkFoTWxDRlhVN3RCVVZQcjhIZ1ZjSkhXcStGMDBwbHIrRE1UZHJQNHp2eFkxMWtOTWh4VCtTZVRHZytkNFY1TFFKaXR5VUdKTkI4VkZac2pnWUJaTS9JSS9YQ1RrajBxeURPcEYyQVZRMTdDSWpVcC9EblQxVWtMNUY1Z2RqK3NTMXdnMWdFM2dpZ202MGZDWHpTblBYYnlBUGJJWHYrSURwRTE2VGhhSElTOXNreWhsbU1FNUYzY2ZxQUtocTJDMEU1UEgxZ1lhWGFMUERrWkcwSERKT25LV0hwNTFJMHo1U091eDhlMVdBdVp6ZEhRclRrcDhUbWpYb0krbGEwd0dac3p1YnFiTzNpZlE2QS9XN3ZWU1lzVjNtUjBKS3drS2M0V0hpQmttUjhJM0NDZ0k4N29PTDRxelQ1UCtSVUpCZWpFT2dBUEs4aFlQemF0TStlSVRwMklPOXlUUW1lcm9tUFJ4eDFxeEFjc2lsZS91YlNlRWJjV1FHWUVDZ2hjTFkySHlLam9nakgyNWhNcGpwVXYxT3VnbGk0ZWgyZVJ3ME8zMmJKamt5dUNnTnpnMHZ6bFlNU2lTczB1b280TUc3aE1PakNFYVgxeUZFMG5TdmpCenVUbkVwSzg2WjhJb3FGQUl1Ync4a2c5QXJFYVJFV1NaSStqSDRYYnA2ZzlFOUVuSlQzb2FSekROK01VSkJRREhuNTZhOG9VbUVCdXNPeEJzL041K3RKRWJQa0FGRGo4VUd2T3MvSVd2Y1NnbEdCaHZTNy9GVFlmcFdHWWREWThmUEF4V1NBMzVzVEM0cDQrTG00QWFxSW9QZVF0ZnVmSzZKaDBaaHhsYnNVWE9TbVhOaWZENVpUQWt5RG9mYmJjY2x4bkE4V05BcXhDYlJOeWtoWHhRcGFEdzY3ZlhVWWJzaUcwS2h0djJvZUl2aDhyaFFNWU9jRUFxWEcvZUkrem5nT2M1eXhyOHE4MklBTTFjL0ZMRk9wbHF1NWVGUVhyTVp6R2NWQ2pZYkxXRzVJNEJUMWV1UnJsYnh0Tk90TWl0RERFaExYSUl5bkFBdnVPRVdFM1gzTmRBZnQ5NFZnYUc0MlhJUXQwWlg2UGVDRS9xUUZlOXJLNkh4N1lVNTBLdkg3Zlc0ZlMrcTdLS0JKeHNnZ0JYNXBTQUdoMWpJclZoNXpRNnczUmZhYWhCWG0vYUNiQ1pUakNVRlVUeVdacVc5cDYyTWpKUFhWcU9yUGdNTzROdjc0R2tmK293ZnROVkJEUW5qRkpxSFN3MTdwWHZoV1c1S1pxZS9RNDlOL1VTVENBVldvUVhGSUhCSFhYZTNGUHJVRHN1R0RtdEYvaEhLVEhwZWt4aGlBT1BJK1NKcTZTNkhGNEk5WVd6a0JKVG80NmlVTXpXcDhQaXIvUmlkdUx4S1lzU2tzVjh2TGxPUXZoR1gyWWxSME9CaEJqQyt1L2dFY3ZZMEFwSzdZazQxTnhqUFNRbldGSFRGNjZVcmpnZXZCOEN1NWErbDJ2WVNSUHR1VkRvNzNoaGRNU0huVVg3dFRqc1ZaR3hBbC9XcHRpT0lFUTFnbkwyOW1YNi90UjF0bWxrWWo4VzRYK0NTaldjVURHWTFOcFMvQzdoU0txaU1MTS9sMlFtU1daNzNEZHorZ2lvOEJDRU5ZUFE0NnFua3p3WFVicXZCa3hqVVFzV2ZaRmdidW8zckFmK3dON2pPTzkwK3lueDRQaTNMKzBuWUwxU2NoRFVnQVA0Z1BWLzdJZDFxKzFIU2htdUdrSXFXUlBneXhNRnFQOEhmalRualh3WTViUWZiSmN0Nk9JektnTUhvdEYvSGUxZWdzYXhIU3FHNndmZG1RNXg4TnlURkZxQmNwMmlTb3dIUjN5azUrMzZoRjd2WEFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xX1BSRSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiYzFmOWEwYmMxZGQyNDA0YWIyN2Y4ZTI5MDQ3YTQzZmQiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZX0sIm1heE1zZ1NpemUiOjEyMDAsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6OCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoxMjgsInRyYW5zcG9ydHMiOlsibmZjIiwidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN30seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTh9XSwibWluUElOTGVuZ3RoIjo2LCJmaXJtd2FyZVZlcnNpb24iOjMyODcwNiwiY2VydGlmaWNhdGlvbnMiOnsiRklQUy1DTVZQLTIiOjIsIkZJUFMtQ01WUC0yLVBIWSI6M319fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMy0wMy0yOCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjg3MDYsInVybCI6Imh0dHBzOi8vd3d3Lnl1Ymljby5jb20vcHJvZHVjdHMiLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ill1YmlLZXkgNSBGSVBTIFNlcmllcyB3aXRoIE5GQyIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjMwMzI4MDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjMiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMyJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMS0wMi0xOCIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWUsgNSBGSVBTIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyMTAxMTgwMDQiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMy43IiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjMifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjEtMDItMTgifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIzLTAzLTI5In0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiMGUzMDY1NDI5ODU5NmNhYzZiY2I4ZjlkMTJmZmY0NjFjMDE1MzFmYSJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyIwZTMwNjU0Mjk4NTk2Y2FjNmJjYjhmOWQxMmZmZjQ2MWMwMTUzMWZhIl0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IDUgU2VyaWVzIHdpdGggTkZDIn0sImRlc2NyaXB0aW9uIjoiWXViaUtleSA1IFNlcmllcyB3aXRoIE5GQyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzYsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6Mn1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiLCJyZW1vdGVfaGFuZGxlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlEU2pDQ0FqS2dBd0lCQWdJVVIzOG1xMjZTZjJzelZWMkJkRzZXRU43a3VXVXdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFSWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFOWTBXYjlvUG9Sb0tvUXlXUGFKcHoxMXZyV1RnNnpUdG1OajJWb0tSbnl2S0dScXB6YjgzdzVsNllBOTZVWWtZQkRRUDBpbE8yRFBlNndXcVZSNXpEZlJ6ZGNIOGJoK0w3ZEdHdmFlNmhSVFpoa0ZrQ3BYRHM0SGNja25yRGY4RkNsSjdIZTM5SmY0Mi9HMVFtMnp6OVdXbXJQWHRnaUsveDA1R2pzUWZHdURHMXpmNVFUVVVpZThsd3ltSzNUZmRPdk5lZUpBQVBlMnBuN0l0ZlJiK3JWck5XaUR6bFJuMnZObloyd1BvNHdIL1dKNmRoWFpHK3JNV1QrYTZCb2NnMVVmSXc2a2R1bkc0YlRwWnpzdmFjRll5UjBtcGYrRGVPbnBTV0FteXdKV0h2VGxmMllYeEZ5ZVhjVEFDZFFsY01OR0oyVmhaUTQ4eHRQNS9SQlAvOGtDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNoeTQyb2tpcWNUUzFpcWEvSFJXamtCbjRIL01COEdBMVVkSXdRWU1CYUFGT3EzUXBDZURIdGtldHRVZkFPNmZFNmYyS0ZoTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBbitSSElQYnRNRUROZFQxZzhIL1JpdEFrVWRMZ0F0MXRXR1dubGo5a25idjQvNEdsWDdDOXA0NWVmUE85L2FaTDZPVjFYUktCaTZLbXRCVzVLN251WUVuTXgvNUJxQlNiTFQ3cmhkdUM0OVRCZU1iOVBIZFhzVGxTVk5ZZWZyMWRHaWRyNGoweFZCUUxiMXJrbkRBYmRXRHpLZnZuYXlLTzhGcndlN0h4ODQzTUcvckorYzBYcnVVdmJmVlRDSExpSVdoTTdvTkRoTDh4b2I2eFVvOUtMS2NTTCtJdFlzTzMvOVdiOFE5R2pzcUw0RlhzRGNHMVNhWWg3S3BmdU1tT2l4cXpKWk8ybklpY1BZUmcxSTJTdWlVZllPNzB0bWRIY2JsK2tTUW1TWXQ3cnE0dmlJTGcyR3gzajlySVR1V1RqYmFVYVNTUXhnT21NU0h1eXpNQUMiLCJNSUlEUGpDQ0FpYWdBd0lCQWdJVVh6ZWlFREpFT1R0MTRGNW4wbzZaZi9iQndpVXdEUVlKS29aSWh2Y05BUUVOQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU1aNi9UeE04cklUK0Vhb1B2Rzgxb250TU9vLzJtUTJSQndKSFMwUVpjeFZhTlh2bDEyTFVoQlo1TG1pQlNjSVpkMVJueDFvZDU4NWgrL2RoSzdoRW03SkFBTGtLS3RzMWZPNTNLR05MWnVqejVoM3dHbmNyNGh5S0YwRzc0Yi9VM0s5aEU1bUdORDZ6cVljaENSQUhmcllNWVJERjRZTDBYNEQ1bkdkeHZwcEF5Nm5rRW10V21NbndPM2kwVEF1Y3NyYkU0ODVIdkdNNHIwVnBnVmRKcHZnUWppVEpDVElxK0QzNWh3dFQ4UURJdituR3ZwY3lpNXdjSWZDa3p5Q2ltSnVraFl5NktvcU5NS1FFZHBOaVNPdld5RE1UTXQxYndDdkV6cHc5MXUrbXNVdDRyajBlZm5POXMwWk93ZHdNUkRuSDR4Z1VsNVpMd3JyUGtmQzEvMENBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUI4R0ExVWRJd1FZTUJhQUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUU13RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCRFFVQUE0SUJBUUMzSVcvc2dCOXBaOGFwSk5qeHVHb1grRmtJTGtzMHdNTnJkWEwvY29VdnNyaHpzdmw2bWVQTXJiR0pCeUoxWG5xdUI1c2djUkVORnhkUUZtYTNtaW84VXBmMW93TTFacmVYckowbUFERzJCcGxxYkpueGl5WWErUjExcmVJRlRXZUloTU5jWktzRFpyRkF5UHVGakNXU1F2Sm1OV2U5bUZSWUZnTmhYSktrWEliNUgxWGdFRGx3aWVkWVJNN1ZvbEJObGxkNnBSRktsWDh1c3Q2T1RNT2VBRGwyeE5GMG0xTFRoU2RldVh2RHlDMWc5K0lMZnozUzZPSVlnYzNpcm9SY0ZEMzU0ZzdyS2Z1NjdxRkF3OWdDNHlpMHhCVFByWTk1cmg0L0hxYVVZQ0EvTDhsZFJrNkg3WGszNUQrV1ZwbXEyU2gveFQ1SGlGdWhmNHdKYjBiSyIsIk1JSURTRENDQWpDZ0F3SUJBZ0lVVWNtTVh6UklGT2dHVEswVGIzZ0V1Wllaa0JJd0RRWUpLb1pJaHZjTkFRRUxCUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JCSURFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURtNTU1YldZOVdXK3RPWTBySVdIbGRoK2FOYW5vQ1pDRmg3R2szWVpyUW1QVXcwaGtTRzZxWUhRdFArZlp5UzMzVkVydmcrQlFxbm11bWdOaGZ4RnJrd0VaRUxlaWRCY0M4QzRBZzRucXFpUFdwenN2STE3TmN4WWxJbkxOTEZjWlkvK2dPaU42Wk9UaWhPNS92QlpNYmo5cmlhQWNxbGlZbU5HSlBnVGNNR2FFQXlNekVNTnkybm02RXArcGpQNWFGNmdpMjF0L1VRRnN1SjFqMlJqL3luTS9TZFJ0K2VjYWw1T1lvdHhIa0ZiTDl2dnYyQTJPdjVJVFpDbHc0Yk9TOW5weXBRaW1PWjVRQVl5dG1ZYVFwV2wvcE1ZejZ6U2o4UnFrVkRORUpHcU5mVEtBMml2TFl3WDZsU3R0TVBhcGcwSjg0bDlYMHZvVk4vRnBTNFZDVkFnTUJBQUdqWmpCa01CMEdBMVVkRGdRV0JCUWdLRkFoRzZSYVcraFR5NTJkeGVUOGJDOTZIekFmQmdOVkhTTUVHREFXZ0JUUzd1OWFJbzA2YlZ3amx6M3loZFVtOFNWN2tqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQTRHQTFVZER3RUIvd1FFQXdJQmhqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFZTXpnTHJKTElyME9vdlFuQVpyUklHdWFiaUhTVUtTbWJMUldwUmtXZUF0c0NoREVIcFhjSi9iZ0ROS1lXb0hxUTh4UlVqQjRDeWVwWWV2YzNZbHJHOG83ekh4cGZWY2FvTDVTZXVKa3pIeEtuNGJUYVNwOStNdndhbW5wNjRrWk1pTmJGTGtuZlA5a1lLb1JIa01XaGVSSjFVc1AxejRTY21rQ2VJTGZzTXM2dnFvdnFqV0NsRnNKcEJjc2x1WUhXRjdiQkoxbjRSd2crQVRFb3BZNElnR3Y2WnZ3YytBOXIrQVQyaHFwb1NrWW9BbCtBTll3Z3NsT2Y5c0plMFYrVEE5WVkvVWxhQm1QUFRkMC8vcjl3dmNlUFdaa1BqS29BQy96VU5oZkRiaDRMVjhHSHMzbHlYMlhvbUwvTE5jOEpZenlJYURFaEdRdmVvUGhoL3RyMWc9PSIsIk1JSURTRENDQWpDZ0F3SUJBZ0lVRHFFUncrNFJuR1NnZ3hnVWV3SkZFUERSWjNZd0RRWUpLb1pJaHZjTkFRRUxCUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURJN1huSCtadkR3TUNRVThNOFplVjVxc2N1Ymx2VllhYVJ0M1liYXhuOWdvZEx4NXN3SDBsWHJkZ2poNWg3RnBWZ0NnWVlYN0U0YmwxdmJ6VUxlbXJNV1Q4TjNXTUdVZThRQUpiQmVpb1Y3Vy9FK2hUWlAvMFNLSlZhM2V3S0JvNlVMZU1uZlFaRHJWT1JBazh3VExxMnY1TGxqNXZNajdKdE9vdEthOUo3bkhTOGtMbXpYWFNhajBTd0VQaDVPQVpVVE5WNHpzMWJ2b1RBUVFXckw0L0o5UXVLdDZXQ0ZFNW5VTmlSUWNFYlZGOG1scUsyYngyejZva1ZsdHlEVkxDeFlicFVURUx2WTF1c1IzRFRHUFVvSUNsT200Y3Jwd25EUkxWSHZqWWVQR0JCLy9wRXl6eEEvZ2NTY3hqd2FIMVpVdzliblNiSHl1cktxYlRhMUt2akFnTUJBQUdqWmpCa01CMEdBMVVkRGdRV0JCVHF0MEtRbmd4N1pIcmJWSHdEdW54T245aWhZVEFmQmdOVkhTTUVHREFXZ0JUUzd1OWFJbzA2YlZ3amx6M3loZFVtOFNWN2tqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQTRHQTFVZER3RUIvd1FFQXdJQmhqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFxUWFDV014VEdxVlZYN1NrN2trSm1VdWVUU1lLdVU2K0tCQlNnd0lSbmx3OUs3SGUxSXB4WjBoZHdwUE5pa0tqbWN5RmdGUHpoSW13SEpneHh1VDkwUHczdllPZGNKSk5rdERnMzVQWE9melNuMTVjRkF4MVJPMG1QVG1JYjhkWGlFV09wem9YdmR3WERNNDFaYUNEWU1UN3c0SVF0TXl2RTd4VUJacTJianRBbnEvTkRVQTdiZTRIOEgzaXBDKy8rTktsVXJjVWgrajQ4SzY3V0kwdTFtNkZlUXVlQkE3bjA2ajgyNXJxRHFzYUxzOVRiN0tBSEF3OFBtcldhTlBHMmtqS2VyeFBFZmVjaXZsRmF3cDJSV1p2eHJWdG4zVFYyU0J4eUNKQ2tYc05EMDVkQ0VyVkhTSklzK0JkdFRWTlk5QXd0eVBtbnliMHY0bVNUenZXZHc9PSIsIk1JSURTakNDQWpLZ0F3SUJBZ0lVVG5iYkdJUjJOSHZ6cUlLRkFlUXdHMVhCaXMwd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JCSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVFZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU9zWGozazA0QmFuNFRZZHRaS3FEL09QSnh5RHlhUG1DQlVGVWlhWklnVHRlWm5qM1gyNURoZ3BaWlhzQzREMHlkSWNybEE2d05VSW5PUkwvTDl6QmJURUlNQVZNR282ZzdVS0FtYjJNRjZBSGJuaFlKZDllaWt1cFZOV1NoSE5ZTmM0R0JkTzFZTjZBZlVxdkpoSGJlM1Y0U05NUG1CUkVLSlBWejdUaHdnbWdnVGU4V3MySzAvd3NxdjJ3U0U3cGJDQnNVWmhJWDUxYlpNM3BxRHdKUFRtUkZFdnQwLzZ0RzVlTzhGM2oxNE9YcWZFaG1qbjFWdnhLRFlRT0xaQXhDd3dnQzBQNENkZld2M3k4UFNSOEkzNTRoTzFZK0d6Tmp2SXFYMzhOS0x5d3VJWUhGZXJPeE5seEVNQnZGaFlCdVJ1WUFra2dVYVBxTjZVQmhzSUxyc0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ0NvUkhoaXlObmJuWFJXSUw2WkJYb0JYOVlUTUI4R0ExVWRJd1FZTUJhQUZDQW9VQ0VicEZwYjZGUExuWjNGNVB4c0wzb2ZNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUNRRmFmSkkxLzVXZzlDRUVpbUUxUlA1NFJnUXdUTlRPT1FzTEFDVGUrckl0bEZRekM5WkRoclY4Mjh5WDdqenkrQUFzcDNpeks3VDF0aDJkbDdtK3R1MHN3MlBhL29sYzAybnQ2UHlJdzM0OGdhSHpoSTErMEtFNDVxeHZGRGVMMmxNeGJQZkNZdnlFRWFZemppUUVMVTU5NTFwWEdXeUtNYS80Zkx0TytaS09YaE11VmVxNHJYRFBJNTRXNkpIT2lBYWlLZGl3KzVlM2Mya3QvakZJUXRNNnZNWGc5TE5GemRqRVROdDIwVlg5UWV2UnBGWmZ1Y01HOXdDYVFEb0ZsUHpwVE1KS2hQZXYvaW1KbVpZaEtmcjBsTGNlbXRxakl4TEFvcVpkT1lmSEJnNit2QWNkUEkvaWF1R3BVQXY3WCtVS05tRHdqWjJCYUg0c0x3aEIybSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFmQ0FZQUFBQ0dWcytNQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUhZWUFBQjJHQVYyaUU0RUFBQWJOU1VSQlZGaEhwVmQ3VE5WMUZELzNkNTl3ZVFTSWdTOUFRQVhjRkxBUVppOWZwZVZ6MXRZL1dUWnI1V3hwYzdXNWtuTGE1akkzWjg1c3JTMm5NMnNqdFd3WlM3SVVINEg0eENuRVF4NERBWkY3NFY3dXM4ODV2OS9sSW5CdlZKL0I0UHY5bnUvNW51LzVudk01NTZmekEvUXYwSGIvSXJYM1ZGS1BvNDVjbm00aW5VSVdZd0xGUm1aUVV1d2pGRy9OMWlSSGgxRVowTlJWUnVkcXQxQmQrMm5TS3lTL09oeXMwK2xrM2UvM2tROXF2RDRaVXRhNFZWU1V1WTBlaXB5aVRoQWZvY29PUlZnRHV1dzNxS1JpQWQzcmJjRXRqVGpZSW9mNldhSHNDbXpWUFdDTXgrY2doOHRMcVdNS2FNV3NVakxxbzJSdEpJUTBvT3ptZXJwUXU0ZXNaZ3NPTmtHeEg3ZDBrZHZUVDE3czRPTVU3Vkk4WmhqZ0dhTStBcTlpRU51OFBpZjF1ZHowN013dktXZjhHbFZvQ0VZMDRQQzVXZFRhWFlGYlI4dk52TDUrM0tnZmI1eE5NeWE5UmFtSml5bmFNbEdUVnRGbHI2YmE5dStwcW5FWDR1TXVSUmdqU1lFaHJON3V0RkZlNmxxYWw3TmZrdzVpbUFHSHluUHBiazhWbVkweHN0bnB0bEZDVkNZdHpUdUJOODNRcE1MalR0ZXZkUHpTVW5KN2U4bWtqeFozOWZYYktEZmxkWnFidlUrVFVnR25CVkY2ZlEyaVBIZzRXMTZVV1V3dnpiazE2c01aRStQbjBwdno3SlNldUF5ZXM4bGNwQ21hS3VvL3ArcVdyMlVjd0lBSFdydlAwWUV6aFhBdExBYnNzSGhwN2lHYW12eWlqUDhyeXFyWFVXWDlYb293eHlBdWZOQnJwNDNQT0JGWFpsa2Y4TURSaXFjcHlvd0F3cHV6MngrZld2ei9EdGRlOXNtc3p5Z3RjUjZDMXdiZHpCbDZPbHE1V05ZWTRvR2F0aEpNcmtURXgwakFSU0hBVnMrNXJZa1FOWGIrUWdmUExzUTZnWHlJbnNyZVFmbXBtN1JWRllmTDg2bjFmaVVPa1l2U2hrVVB4dmJ1a3pveTZLMWloTTFobzNYelc2RXZTZlhBK2RwaVdHYVdkK2RvWHpMem1Hd0tZRkxDQXNSQWxQQkFoTWxDRlhVN3RCVVZQcjhIZ1ZjSkhXcStGMDBwbHIrRE1UZHJQNHp2eFkxMWtOTWh4VCtTZVRHZytkNFY1TFFKaXR5VUdKTkI4VkZac2pnWUJaTS9JSS9YQ1RrajBxeURPcEYyQVZRMTdDSWpVcC9EblQxVWtMNUY1Z2RqK3NTMXdnMWdFM2dpZ202MGZDWHpTblBYYnlBUGJJWHYrSURwRTE2VGhhSElTOXNreWhsbU1FNUYzY2ZxQUtocTJDMEU1UEgxZ1lhWGFMUERrWkcwSERKT25LV0hwNTFJMHo1U091eDhlMVdBdVp6ZEhRclRrcDhUbWpYb0krbGEwd0dac3p1YnFiTzNpZlE2QS9XN3ZWU1lzVjNtUjBKS3drS2M0V0hpQmttUjhJM0NDZ0k4N29PTDRxelQ1UCtSVUpCZWpFT2dBUEs4aFlQemF0TStlSVRwMklPOXlUUW1lcm9tUFJ4eDFxeEFjc2lsZS91YlNlRWJjV1FHWUVDZ2hjTFkySHlLam9nakgyNWhNcGpwVXYxT3VnbGk0ZWgyZVJ3ME8zMmJKamt5dUNnTnpnMHZ6bFlNU2lTczB1b280TUc3aE1PakNFYVgxeUZFMG5TdmpCenVUbkVwSzg2WjhJb3FGQUl1Ync4a2c5QXJFYVJFV1NaSStqSDRYYnA2ZzlFOUVuSlQzb2FSekROK01VSkJRREhuNTZhOG9VbUVCdXNPeEJzL041K3RKRWJQa0FGRGo4VUd2T3MvSVd2Y1NnbEdCaHZTNy9GVFlmcFdHWWREWThmUEF4V1NBMzVzVEM0cDQrTG00QWFxSW9QZVF0ZnVmSzZKaDBaaHhsYnNVWE9TbVhOaWZENVpUQWt5RG9mYmJjY2x4bkE4V05BcXhDYlJOeWtoWHhRcGFEdzY3ZlhVWWJzaUcwS2h0djJvZUl2aDhyaFFNWU9jRUFxWEcvZUkrem5nT2M1eXhyOHE4MklBTTFjL0ZMRk9wbHF1NWVGUVhyTVp6R2NWQ2pZYkxXRzVJNEJUMWV1UnJsYnh0Tk90TWl0RERFaExYSUl5bkFBdnVPRVdFM1gzTmRBZnQ5NFZnYUc0MlhJUXQwWlg2UGVDRS9xUUZlOXJLNkh4N1lVNTBLdkg3Zlc0ZlMrcTdLS0JKeHNnZ0JYNXBTQUdoMWpJclZoNXpRNnczUmZhYWhCWG0vYUNiQ1pUakNVRlVUeVdacVc5cDYyTWpKUFhWcU9yUGdNTzROdjc0R2tmK293ZnROVkJEUW5qRkpxSFN3MTdwWHZoV1c1S1pxZS9RNDlOL1VTVENBVldvUVhGSUhCSFhYZTNGUHJVRHN1R0RtdEYvaEhLVEhwZWt4aGlBT1BJK1NKcTZTNkhGNEk5WVd6a0JKVG80NmlVTXpXcDhQaXIvUmlkdUx4S1lzU2tzVjh2TGxPUXZoR1gyWWxSME9CaEJqQyt1L2dFY3ZZMEFwSzdZazQxTnhqUFNRbldGSFRGNjZVcmpnZXZCOEN1NWErbDJ2WVNSUHR1VkRvNzNoaGRNU0huVVg3dFRqc1ZaR3hBbC9XcHRpT0lFUTFnbkwyOW1YNi90UjF0bWxrWWo4VzRYK0NTaldjVURHWTFOcFMvQzdoU0txaU1MTS9sMlFtU1daNzNEZHorZ2lvOEJDRU5ZUFE0NnFua3p3WFVicXZCa3hqVVFzV2ZaRmdidW8zckFmK3dON2pPTzkwK3lueDRQaTNMKzBuWUwxU2NoRFVnQVA0Z1BWLzdJZDFxKzFIU2htdUdrSXFXUlBneXhNRnFQOEhmalRualh3WTViUWZiSmN0Nk9JektnTUhvdEYvSGUxZWdzYXhIU3FHNndmZG1RNXg4TnlURkZxQmNwMmlTb3dIUjN5azUrMzZoRjd2WEFBQUFBRWxGVGtTdVFtQ0MifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMi0yMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzYsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWXViaUtleSA1IFNlcmllcyB3aXRoIE5GQyIsImNlcnRpZmljYXRlTnVtYmVyIjoiVTJGMTAwMDIwMjQxMjIyMDA2IiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMTItMjIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTAxLTEwIn0seyJhYWd1aWQiOiI3MGU3YzM2Zi1mMmY2LTllMGQtMDdhNi1iY2MyNDMyNjJlNmIiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjcwZTdjMzZmLWYyZjYtOWUwZC0wN2E2LWJjYzI0MzI2MmU2YiIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJPbmVLZXkgRklETzIgQmx1ZXRvb3RoIEF1dGhlbnRpY2F0b3IifSwiZGVzY3JpcHRpb24iOiJPbmVLZXkgRklETzIgQmx1ZXRvb3RoIEF1dGhlbnRpY2F0b3IiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6NSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9LHsibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiLCJiYXNpY19zdXJyb2dhdGUiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsImJsdWV0b290aCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQ21EQ0NBajZnQXdJQkFnSUlVTzNyVlp3K1lJd3dDZ1lJS29aSXpqMEVBd0l3Z1pjeEN6QUpCZ05WQkFZVEFrTk9NUkF3RGdZRFZRUUlFd2RDUlVsS1NVNUhNUkF3RGdZRFZRUUhFd2RJUVVsRVNVRk9NUjh3SFFZRFZRUUtFeFpQVGtWTFJWa2dSMHhQUWtGTUlFTlBMaXdnVEZSRU1ROHdEUVlEVlFRTEV3WlBUa1ZMUlZreEZEQVNCZ05WQkFNVEMwOU9SVXRGV1NCU1QwOVVNUnd3R2dZSktvWklodmNOQVFrQkZnMWtaWFpBYjI1bGEyVjVMbk52TUI0WERUSXpNVEV3TnpBek5URXdNRm9YRFRNek1URXdOekF6TlRFd01Gb3dnWmN4Q3pBSkJnTlZCQVlUQWtOT01SQXdEZ1lEVlFRSUV3ZENSVWxLU1U1SE1SQXdEZ1lEVlFRSEV3ZElRVWxFU1VGT01SOHdIUVlEVlFRS0V4WlBUa1ZMUlZrZ1IweFBRa0ZNSUVOUExpd2dURlJFTVE4d0RRWURWUVFMRXdaUFRrVkxSVmt4RkRBU0JnTlZCQU1UQzA5T1JVdEZXU0JTVDA5VU1Sd3dHZ1lKS29aSWh2Y05BUWtCRmcxa1pYWkFiMjVsYTJWNUxuTnZNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVBOXZNTEpRRG1uemZUZkNFRTMzWUUrTlI2aFpyeHl6OVRGb0VrNlVvOXhTN3h1OHhOZ2U1L01uVGczRVh3ZmRKaU1RVWRYSEh0M2NXQUVHTTlxYnNKS055TUhBd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBZEJnTlZIUTRFRmdRVVpjdWZTeldBbVZBSnR0QXJWUXJiR2dWRi91a3dDd1lEVlIwUEJBUURBZ0VHTUJFR0NXQ0dTQUdHK0VJQkFRUUVBd0lBQnpBZUJnbGdoa2dCaHZoQ0FRMEVFUllQZUdOaElHTmxjblJwWm1sallYUmxNQW9HQ0NxR1NNNDlCQU1DQTBnQU1FVUNJUUNERkJYTUtFV1Bkd0ZjeVpzREM3dWVRU0tCNUJscmd5TTZLaldEV1J2NkpBSWdIOFdJSk5oWnFWZmMxTFlpSStJVEhZL1BsOUM1Qm9BVlVvdjd2TnB3R08wPSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFHQUFBQUJnQ0FZQUFBRGltSGM0QUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQWNVU1VSQlZIZ0I3WjNQYnhOSEZNZS9zM2FNb0VFWVVWR0JWR0VPVUZXcWhBMGtvcGZHT1ZPSjVGUXVWWUxVSG5wS3FOUWVHNmYvQVBURW9VZzRVZys5RWRUMlZpbk9pU29KeFp3cVViVTRVZ1d0VkJRalVDc1NlNmZ6MWhnVi8wZzhzek96YTJjK2toWEhXU2Z4Kzg2OGVmUGV6Q3pnY0RnY0RvZkQ0WEE0SEE2SHcyRU5ocmh5TjV2RzFsQUdIc3NBUEEwdXZqTHhsWGtIdG4wZjk1K0lhNnZpMmczeDhkYkY5MVVrYTJYa3lsWEVrSGdJUU1hdXAvTENldUxCam9uL0tndU9ETFRDU1lDeWVOd1RmNk9FeENhSlVrSEVSQ2ZBM1hNWitQNFVlR0QwUEtKQkNNS1g0YU9JMGRVeUlzQytBR3VqRStKRHowUm85RzZVa2NCVjVGWVdZQkY3QXF5TlRJT3hPZjJ1UlRNY0ZTUlJzQ1dFZVFGV3orWGgrVGRpYi9oV0xBbGhUZ0FhV1AwaDBlTFpMUG9aeG92d3R1Wk5EZGhtQkxpZHpXQW9kVk04eTJJUUNIckQ1cmdKRWZRTFFNWlBwWmI2enVYc1RCVStIOWNkTGVrVllIQ04zMFM3Q1BvRUdIempONm1LU1Z4T2x6dnlvSXZkWVh3aWpacjRyQlJrYUVDUEFIZEc0eC9mNjRTSnoxcFAzWUFHd3J1Z1JzVHpBTHVUU1p4ZFdVUUl3dmNBY2oyN0ZZNHJZVjFSRW1HZzlJSUYxNU5KSGVucHVtcjltWGc4aFRYSUZkVlNOTkVzUUpGd0x1ak82QVBUQXFRVCs3R1IvYkduYXk5VnZrVHg4USt3REVWRngxWHJEZW91YU8zTWhJM1dQNUYrRHpGSFJFVjdwcUZJaURFZ01RVUxYRWlQSWZZdy93SVVVUk9BSWgvUk9HRVljajhUL1NBQTFUWld6K2FoZ0pvQVEwTjVXS0FQM00vLzhQSlFRREVLWXNwZFRvYnlQNzlpL1A0bmJhOHZuYnlHMk9HQlhISUJrcWlHb1hsWW9QenZmZlFORkpEUW5FQXlHcEozUVExZnB5VVBNbkRVaDZUSFJZVXhJREVZUlJZamVOSzJrUmVBOFg0SVN5TENQd1ZKRkhvQXo4RFJCV2FoQnlqOGtWMUVPbGh3Sm9HY0FKcUtFQVBOVmwzS1JuSUMxSkt1OWUrRUo3Y1NSRTRBV3AzczJCN3VHZXdCOEp3QU95TFhTT1Ztd3NFYWZVUk90NXgvWmZNUklzZGp4MlF1RDFjUml3Z3F2QXdLZlNrQVFhbnFkR0k0ZUc2OUZLa1JTUmVFU0YxUWZ2ZzBKZzZPNGNLQk1XVDJ2Rm9uSmdGS1QzL0dnbkJQaTlWbFJBYjNNektYOTBVUHlPNDlnU3R2Zm9yOC90TmRyMmtXYitoQll3RzVLUklrN3VoYkdXZUltY01Yc2ZUV3RXMk4zd3F0b3FDYXdkeVJqeEYzWXQwRHlJQ0ZveDlCbGVaNzV4OTlqYmdpT1JGREJaWWdmeC9HK0Uzb2Q4eUtYbVFOenA3SVhCN2JIbkRqK0JkZGYwYnpnRnRpb0cxV3pNamxUQjg2ajZsRDczZThmazZJUU8reEVpbDViRVBtOGxnS1FNYnN0QnF1OGx3TXJ1dnRneXU5VHE4VkhsNFBmSDlyaEVRRGRPR0k2QWwvWEVIY2tNMEZWV0NCdWFQdGcyZTE5alFvMEc4WDJWRDBROWVRSUsxTXZYNCtFTUk0UGwrWHVWd3lDdktOYi9mUDdqM1pzZlhQLzNtOXAxUkRFSUt1dDgrVXlmaGorM013RHpOWWxQZTlDZ3lUNzJLazR0KzlyL21rWHRMSjM0OFBuNEZ4a25XcHBmcHlBdFFUeG50QUp6ZlJ6YURiY1d1amZUWjhJR25CQmRVZ0ZRWEpDZkR1VHhYUWF1QStwZGRsN3FHZ2sxa2tVQ25LVjJDWlp0Sk5oazZ0M1VLNnVtcCtZWmJQN3NFZ25ZeVUzWGRTT29LaDk3U3kvdndoek1LbHQ2OHFyQXRpUm85MTZSWm16aDcrQUwzU2JSNVJlbVk2T2VkSk4wNTVBYmhmZ2tHb0I5Q2kzRlptM3Jnb1d2V0pIZDlQaHU4MGoyaE8xb3lTcUV2dmw1TVhvTEZMM09oQXZQRDR1N2JYeUFYUkxIZEt0TzV1VVA2SU1xZlJ0SDRpS2QwRDFNb3JhNk4wRUlmUkRSb1AzbGxzU3lrMG9aWmNmUHc5MWwrTUYyUnd5Z04xUzFsVDZ3OW15RVlIWWVIL3o2NUt6L1RVY2tHY0xZdTBoRkVCSm4vL0RIZmYvcWJqejhqUU12V0Jna2hIbTQrQVBLVXluRnBCSnZtOENNTnVpTVlCSGNWM3FnVXMyTmc1NmZ0RktLQW1RQkRyY3FQUkVFRXA1TW5mUHUrWVhOc0pTdDVkRnRsUHlwQ2FSOWhDOFFRVjlaSWs1L093QUJYWXlYOHZDSi9mS3pSRzVINzVFRmYvK2haV1NMQ3JVQ1RjR29lMWtTV2JweC9TWURzcnd0RlRJbVBhT2dhUXkxcCtkaWNRekdveG5rN1RHbGs1RGtYQ0NVRGJsWmdYMlZrUndkcWc1TENTaTlKR0F0TmhEdllMdjhySGNpK0lGU0ZiUHhGK1dZcVB5OWl0Sk5VUDZXZ1NYZ0FhL1Rtc0RNaXhnckdpampORjlTek1HbGtwaVA1WXdtNkJYSSszVjB2UDE3Y3liaXR4eWVhNm9jZ0l6aEQxeHBFcmFabUk2aE9BcW1XYjRoOGJhQkY0VmN4L0pwRUxLb05hMExzMmRKQkZvSmJ2SStZSHR6YTVmUzZEb2ZyTmdkblMrdEx0Nkd2NVRjeXNqcWFlUUtuWmdZaU8yRmRJN3N1Wk1IN3cyMkVhNmcwcHYvOE9kYVZXRC84U1J0WktNSWk3Z1VNckEzY0RoMVlhK2FNWldEanlUQTZheHdoM0UvSWdWbG1pMi9IVkdLano0aG1kTkNVR2EyWjVEL0xMdXlvdEl2SGFncTY0WHBZWTdQcDlRZEF6MktsR1lvOU9aTkVjUVZGb3pJTzdKcFZFTEg4UHllRnlWRVovOWQrS00zVHlTSzNXdUlFYnZHT2lGbjB3ZUwzYlptaU9KOEs0TDI3aUZqd1gvanhaTVJYQk9Cd09oOFBoY0RnY0RvZkQ0WEQwR2Y4QjlXTjIvbGRxaTNFQUFBQUFTVVZPUks1Q1lJST0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCJdLCJleHRlbnNpb25zIjpbImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6IjcwZTdjMzZmZjJmNjllMGQwN2E2YmNjMjQzMjYyZTZiIiwib3B0aW9ucyI6eyJyayI6dHJ1ZSwidXAiOnRydWUsInV2Ijp0cnVlfSwibWF4TXNnU2l6ZSI6MTAyNCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6MTAsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6NTEyLCJ0cmFuc3BvcnRzIjpbInVzYiIsImJsZSJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XSwiZmlybXdhcmVWZXJzaW9uIjo1fX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTEyLTE2In1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNC0xMi0xNiJ9LHsiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjBlODAyMGQ3ODJiNjdkMDBmNDc4MzlmNDQyZGRjMjQyZGJlNGZjMmYiXSwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiMGU4MDIwZDc4MmI2N2QwMGY0NzgzOWY0NDJkZGMyNDJkYmU0ZmMyZiJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiVmVyaU1hcmsgRFQgRmluZ2VycHJpbnQgS2V5In0sImRlc2NyaXB0aW9uIjoiVmVyaU1hcmsgRFQgRmluZ2VycHJpbnQgS2V5IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6Mn1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiLCJyZW1vdGVfaGFuZGxlIl0sImlzS2V5UmVzdHJpY3RlZCI6dHJ1ZSwiaXNGcmVzaFVzZXJWZXJpZmljYXRpb25SZXF1aXJlZCI6dHJ1ZSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTEyLCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDZkRDQ0FpT2dBd0lCQWdJSkFQNGZTUlFwUnAzcU1Bb0dDQ3FHU000OUJBTUNNSUdaTVFzd0NRWURWUVFHRXdKVlV6RUxNQWtHQTFVRUNBd0NRMEV4RVRBUEJnTlZCQWNNQ0ZOaGJpQktiM05sTVJnd0ZnWURWUVFLREE5VGVXNWhjSFJwWTNNc0lFbHVZeTR4RERBS0JnTlZCQXNNQTFCRFJERVZNQk1HQTFVRUF3d01VM2x1WVhCMGFXTnpJRU5CTVNzd0tRWUpLb1pJaHZjTkFRa0JGaHhqWlhKMExXRjFkR2h2Y21sMGVVQnplVzVoY0hScFkzTXVZMjl0TUNBWERUSXdNRFl3T0RJek5UQXdPVm9ZRHpJd05URXdOakE0TWpNMU1EQTVXakNCbVRFTE1Ba0dBMVVFQmhNQ1ZWTXhDekFKQmdOVkJBZ01Ba05CTVJFd0R3WURWUVFIREFoVFlXNGdTbTl6WlRFWU1CWUdBMVVFQ2d3UFUzbHVZWEIwYVdOekxDQkpibU11TVF3d0NnWURWUVFMREFOUVEwUXhGVEFUQmdOVkJBTU1ERk41Ym1Gd2RHbGpjeUJEUVRFck1Da0dDU3FHU0liM0RRRUpBUlljWTJWeWRDMWhkWFJvYjNKcGRIbEFjM2x1WVhCMGFXTnpMbU52YlRCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQkxQUW01MERnQjk4MHJkSUlwNkhZTm8rbmZRZVVoUHNtNHM3OE5ST2VMTU9oZXVLbjhaeFBYREhEK1NLcUJIQW5YTmJ0b1E4ZzRjaCtxaVMrc1d2SnVPalVEQk9NQjBHQTFVZERnUVdCQlJEbldvMjRDMlBwRVN6VmJKUHoxWkZUZWJTSnpBZkJnTlZIU01FR0RBV2dCUkRuV28yNEMyUHBFU3pWYkpQejFaRlRlYlNKekFNQmdOVkhSTUVCVEFEQVFIL01Bb0dDQ3FHU000OUJBTUNBMGNBTUVRQ0lFU2trNzZrdEZuREJEeVNlYkpIdHczVGNKSVhUZk5vNU5nNEFqODhCSTdSQWlCdEViNW94dWk4U3pzVVo2d2NRUWpuNWFCNW5kMmFOSkJoWksraUZISEd4Zz09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQTRrQUFBRERDQVlBQUFBdkJWVENBQUFBQ1hCSVdYTUFBQzRqQUFBdUl3RjRwVDkyQUFBZ0FFbEVRVlI0bk8zZFRYSWJPYmFHNGVTTm1xdDZCVkt0UU9vVm1GNkJWVk5PSksvQXJJakxzZVV4QjVaWFlHbHdPUzE1QlNXdG9LUVZsTFNDdGxiQUczQi9hYWVaSk1XZmM1QUE4bjBpRk4wbVhSWi9NZ0VjNE9CZ1VQM3YvLzFhVmRWSlplOStQaDE5ZGZoM294cE1aa2RWVlIxNS84NzVkSFRiZWhBQUFBQUFJdnRGQWVKZkRyLzJkVlZWV1FjK0NoRHZxNm82YUQxcDZ6cjN6d29BQUFCQUdmNkg3M0c1d1dRV1ZsaHZJZ1NJRC9QcDZMejFLQUFBQUFCMGdDQnh0Y3VxcW81WFBtdmp1YXFxWWFmdkVnQUFBQUFhQ0JLWEdFeG00NnFxenRyUG1Qb1dJSmF3YnhNQUFBQkFPWDdodS96WllESUxLM3NmVzAvWUc4K25vL3ZPM2lnQStCVG5LcUpvR1ZBS2JaK3hMRkRJUFE3MEFFRmlnd1pMTjYwbjdIMllUMGRYM2J4TEFQaEoyQlA5M3ZBanliNW9HVkFZNndLRjNPTkFENUJ1S2hFTDFYeVpUMGNYclVjQkFBQUFJQUVFaVQvRUtGVHpvRmw3QUFBQUFFZ1NRV0xjUWpXbjVQRURBSUNJcUtJT1lHdTlEeElIazlsSnBFSTFvWkxwWSt0UkFBQUFBRWhJcjRORTdVT01zZm42TFpWTUFRQUFBT1NnN3l1SnR4RUsxVnhUeVJRQUFBQkFMbm9iSkE0bXM2c0loV3J1NXRNUmhXb0FBQUFBWktPWFFlSmdNanVQVUtqbUtSU3FhVDBLQUFBQUFBbnJYWkNvUWpXZlcwL1lvcElwQUFBQWdDejFLa2lNV0tqbW5FSTFBQUFBQUhMVXQ1WEVHSVZxL3BoUFJ6ZXRSd0VBQUFBZ0E3MEpFaU1WcWdtVlRDOWJqd0lBQUFCQUpub1JKRVlxVlBOUVZkVzQ5U2dBQUFBQVpLVDRJREZpb1pvaGhXb0FBQUFBNUs3b0lERlNvUm9DUkFBQUFBREZLSDBsTVVhaG1qR1ZUQUVBQUFDVTRwZFN2OGxJaFdvK3phZWpxOWFqQUpDUHg2cXE3Z3hmTFZrVkFBQmtyc2dnTVZLaG1pL3o2WWhDTlFDeXBva3VKcnNBQU1CM3hhV2JSaXBVRXlxWm5yY2VCUUFBQUlETUZSVWtSaXhVYzBxaEdnQUFBQUFsS20wbDhTWkNvWm9RSUQ2MkhnVUFBQUNBQWhRVEpBNG1zOHVxcWw2MW5yRDFkajRkZWE5VUFnQUFBRUJuaWdnU1Zham1YZXNKVzlkVU1nVUFBQUJRdXV5RFJCV3F1V3c5WWV0dVBoMVJxQVlBQUFCQThiSU9FbFdveG5zZjRsUFloOWg2RkFBQUFBQUtsUHRLWWdnUUQxdVAycUdTS1FBQUFJQmV5Zll3L1VpRmFzN24wOUY5NjFHZ1E0UEo3S2lxcXFNTlhzRTlFeHlBcjhGa050emdGM3lsTDhFMmxDa1Z0dFBVLzF1NzNhR0EzalovUC9RdFo2MUhmM2ErNFhXL2svbDBkT0gxYjZQZkdEOXRKOHNnTVZLaG1qL20wOUZONjlHZVduZGpVZkhWVG1OZ1VBOE82bzc0WkplMDZzRmtWdi9mdXpCUURRMWYvY05STGk5cmZCK2JlT1F6TFl2MnZCL3BHcWpid0hCTkhHLzdSaHYzWXRqQzhLajc4RkgzSW0zb0RoYnV6MVgzNnFOK3FwUUhmdXBqVDlYbUQxOW83N2U2WG5SOWJmVGZLUGg3S1VoODZmbDlaUjhrTGdUUnF3THFlL1hMaktPTTZITS9hclRidityL2I1MTF1REIrcW5RUDFXMTJrcE4rNnJPR0MrUEhhdGYrWmxEOTcvK0ZmK1N2MWpQN2UrMXgwZXNEdUgyaEFkM1hkZDhLMVRRNjIrWU50dTJOOWR4bzlPNzFQVEViczBiamhoN3E4L2RNbjE3MHJPL29SclBUdlF4d0doTWdpNTNMUG0wTVFYbG0xQVkyNzBYdlRKVkZEL1g5eUlDeFRmZnBzREdKdHV2Mzg5enNuOVQyZGRKSDZabzcxOCttRXc4ZlBGZmFOTWoyR0JOdWJENGREYnI4L2R0UUg3NzRzMi9mMGV3M3lFQllvVEYrcWovL3JTZnY5bENQbitvMnU3UCtYZTNJV08zSUptUEk4TnJEYVEyWEw3M3VySUpFZlJEM3pnUHAwRkVQK3hEWURDYXo1cXlsNTgzMTFMaVJlcjA2cTJ1NC90eFBuU2M3dHZXZ1NzRTNKVi8vamNGbS9STXJNSDlxZENySkJPV0R5U3dNT04rM250aWR5d1NoQncweXppTzBnZHQ2MXVUTlZaOERSdlZScHhIdTB6dDkzbEVHZTQxQjNYaUhQb0Fnc1VNZDlPR01ueG9pdGduYmVsRGdGVFZnSEV4bVk2MjhONi9ENThaRVF6MldHNjVZK0ZuYm51UVdKTjQ2eis2R0QvYW84QUZ5ZllOMUZhRDBjdkNqRk9ud21iOXBQWm1lK2p1NktHWDFhOGNaZTI4UGpYdWh5MW5JWGdXSm1pUVk2MzVNYVpDeHlwUHV4VjZjMDl2NGZzNDc2cU8rYUliZDVScGVNYWpieHRwQm5jSHJJMGhjUW1Pbjg0Nzc4TDZPbjdvZXQyN3IydnM3MHBqbWNpSDErMXB0MThyVjU4YkVhTE45WGJrNGxrMlFxRUkxbnZzUW4vVWhyZnh3YzdYRFVuUXNSUTkrRWhqc1dMak9PVmpVZ09jOHdoNmFmZFd6a0ZmTEdtcFBmUWtTTlZFelRtekZjQnVsdDVkREJVK3gwM3hYTWYyODFROWZHUVFaQkltUkpEeDJxbnJRSHFUODJXOHFaQ2lNcmVNS2ZUYTNqYjdzWWR0Q20wdmFveWVkNXZEVHY1RkZrS2pPL1hQckNWdHZTN3ZaOWt4cGlhbW94azZkN0RpVFZjTk51UTVNckNVNDROeFU5Rlhja29QRVFnWWFpN1llRUtSTU05c3hxcFh2NmttZjk4N1h0TjdqbGRFRUJVR2lzNHpHVGxXQjQ2Y2o5ZDJwVCt4dTQ1TytJNU1KNElXc3lyMXFxQ2l6NGFQKzJGcFJURDVJakZTbzV0TjhPaHEzSHMyWUJuNDVOSEJORDVwMXlUS05Jb1BCenI2U0g1eXFnN2txNUR1SXNvcGJhcENZYVJ1NGphd21iaFpwSUg0Um9WSzVsUzlxLzdZYTZEbU1ZUWdTSFdYY2J1dzltZEdsUW9QRHB2cmM5YjIrbjRXc3l1OEI0cm9UQ0dSbEVjbUZoYmk3K1hUMHZTcHEwb2ZwcXhPNWNiNVp2NVFVSUlZR2ZqQ1pQV3JRbDFzakYyWlovOUpOa0kxd25RNG1zeENZL0Yxd2dGanArL2xiRFVweU5DTjJYOUIzRURyTGY4SzFwYllRR3dqN1Z6SnVBN2Z4ZmpDWjNlZDRiU2dRdWM4b1FLeVVHZks0emZtQWtjWXdNSkQ1MktsU3BrUVlQOTNrMUNaby9CU0N3MzhLRGhBclhWTi82YjN1UkJOT2RadjVaV0VGOFZ5VE82dCsvak9Zek9hNlBuNXF3N1FLL1VGL2ZLV3gxRGRKQjRscVhMMHJtUlp4MUlWdXRFdGRITG1uVmIzVDRHZlptVmRKMGMzMFdIamp0dWl6Z3VJazZOcS9WY3BFaVlPeHN6WG5iRUhDVEtxdWd6OExTaTE5eWJFQ2wrVGJ5cG9HU2JuMlU5c085THpITU5oVFlXT25xakdaY2RwNkpqRjZqZmZHbVN5cGU3L0h4Rys5Z1BLOFIrenlSbTNZVC8rOXNoTWU5TWVMK3ZVbEd5VHFwdld1WkxwMTZraUtHdWtzT2MzS3ZpUU1mbTYzbWJXTnFURWdMVFV3ZWNsWkNvR2lydjJTVmc5WDRheXNOUXBjUmQ3R2dkcktwQU5GRGNadkNoa1F2bitwL1ZNZzJjZnJNUnVOL3FPa3NWT2xOdUhQbENaem14cHRRWjhtOUpyTzFHWnZIQ2pxV3EzYmsvRUxzVXRJR1IzVVAxVlYvYXVxcXQ5VlNLZTJMR092WGtFOFVDWFpOSU5FUmJqZU4yMnJpaytPTkJOem0zSEZ2blVPbHMxNGRLM25BOUttVGdQRnh1Ukk4WjBNQi9FdngyVE5kMGtIaW8xcWZDVVY4MXJaL3VsNzZOUHFTSFkwcmlpOS96aExMU1ZkRS8rUGhiVUZ1emplTWxDc3g4SFAyeFlwQ2dHbHp0ZzgxUUpaY0xBazdmUzJzWnI0N2ZjbEZ5UTJpbjk0ZWx2Q0dUTnE1UDdzd2VEb2N3cUJZbVAycSs4RDBxYXpMdmFRUmlwb2xZcTdQRjVtWEkxVXBiNVAxdFRxUUhGZDhZTG9scFJyTDhtcVFER3JmZlY5b3o3cmMwLzZqM0RmSmJGOXA1SFd5L2pwdjQ2M2FDdnFnTzZtOWN5R3RQcjQwdUpZM1o1OTYxZVRDaEliNTNaNFhrRFhKWlFLam5Rc1NFbzZEUlFiUVVuZlo3K1dlUmZ6dStsaE1RaFNUUmNvbGE4UEUyVGJPdGhuRUdHdDhBQ3hkdFlzOUtEWmVTWXVFcVdndnJUMDBwY2NkcGxwMEtnYjBMZlBmUk5uRys1eHJ0dlFmUmU0WGxxNS9EN2VDRzFaYWl1SlZ1Y0lyZkt3ejNraXFlaGhnRmo3M01WbWJIWDZwUTkwOW5VWmNRV2piOFVnU0RWdDBDQ1BWTDdWamhPcUVPM2RwNmZpWTJNQW51MnhKS1ZUMjlHbkluTk5uYVNrOTZodXdEN2VyNnUvc1pDU3V2TjRRTEZEM1I0L0w4dW9YSHpzbDlhLzBoRkYwcDZyTkU4bFZBanNjWUJZQzFXaGhySDJrL0o1Yit4QUEwTFhlNnlueFNCWVNlelBxcFNWc0xwL3Myd1FFSXNDMVQ1bFh0eXdpcGl1bmdlSXRUcFFqREtHNnRtMmtIMkZzZTNKaW9JMHpjQisyZk9ManBhc1RwNDJBOFFOeDJvblNRU0pXaDN5bkJtdUQ3SE11cEtwT3FBdUE1Ym5KUVBXazhnTndJRTY0MVUza3hsZGw2a0hpQTlMR28zWTMwa3RuSzl6N3BYT3JaWEtMczgwWFhiOVYwcmZjQXRjU3RnL2JTVDFBSEhaOWVGNmJiemc2b1hEbGQybzdZeVpXdmFrNitOUjMwSGRKcDdvT3hoR2FCY1BsM3ovU0VCQ0FXTGRYM2M1a1JCbERLWCtPdlVBTWFYeDA2SEdOeTlsSW14UzZPWndUVXgxdDAwODFIbVFxSmtHN3oyQzU3bFhNdFhuRkhPdnlaTitYL2pjN2wvNi9QVDZUdFFabjBib2pLL3FFcjJPVXFrVStLRHY0VkdON3RkTnJ1ZkdkM0txN3lWR3czZXBGUXlQenVjaVl1UDlzSEQ5YjVUaW9jLzhTSi83aWNIbi90QjZwTDlTQ0JEclFMQU9TQjUxZmF5OTNyVUsycndYWTd5WHd6Q2JyUE92b21uVUZ2RDJwS0lQTjJ2dXo1OG1XQlM4bmpvR0RLeVlKRVlyS3JFRHhIcjg5SzJkV05WZlJ4NDNOUjNxdFhtT2NZNFN1UitlNm41OHgvRlR6Ty9tMjlFNlM5cXpiZU9YeFFuTFp1RDdTdGZtSml1Sjk1MEdpWkVLMVh4UTZkZHNSZnFjS2wxWTRmZGNMcmxJMTlKTmQxOFBEaUoweG0vQzc4ajl1MTJoMmNIYzdocHdOYjhUWFVPbkNyUTg5L01kYkRnYnRoWE5TbnAzOUpzTU90ZHFmT2JmcjB1OTl1R093VHI3RWJ2M3BYRXY3alRacUh2NHRnNWFOQUFaUjdpbXh5SHRNM0lXemFWelgvV3NjOEsyRGtUVlg5d29jT2dpZUVCRTJpNnlha1hGMnRianB4WGpwbkdrbGNaanRRMWRadWQ0ZUZiL2UyTTFmcXArWEV2bkViNmJpOFdEOHNON0dFeG05UjgzeVE0SkU1Yy9CWUVhaDl4b2duSmwxdGZpbnRXdVZ4SzlON1ZmeDU1RmRYTGgvRG1Gd2ZIRnNndG1Wd3Vkc2RmZWxCRDhIT1dlUml4MUIzUGxzZXF0eitoS245blllVlhPWTJEcWVSK2JYLzlOR2pCYzdUaUJRdnBhTis3MGZibXNpdXNlUDFmN2VPVTQ4RGpRZ0NOS0lSdHRpZkFNdks0M09FajZSYm9uejVXR2VOWFRBNzJMRnVrNHRVcDk5NldDdzMydnk1dkczdFlZKysvRDN1WGJBaWJiNjhEd3ltdDdoc1lIVndvV1BTZkN6cFFCc2pqUjhLQTRZTGhMcGtiNDl6VDIrRWNQbmE3NGQ0YU4vK2Eyc3lBeFFxR2FoNDczTDVsUVkrRzF0K05aRFp2YkFGd1grcW5laDNWbmZLQ0dOT2Z2MlRWQVdXWStIVjNxdk1jYnA4bUhnelVOME5ZYXE2QWVQdW56anpiUjBCZ0lqUFcreG11K0IvWWp4bld0NnlIS0NxNSt6MURYd3NmV1g3QXhqbmh1bitka3psdnJkaklNZ2hwYlhsSXNzdE5NRzd0ZCtOK05hUlZoMDhydW02eFVYR2VRNVJBais4cWwvMUNnTTlTZzN2dDk1RHpaWG1mL1hNVjYvYUVOYW95ZnZJTDQ4Wkp4YmIwbmYrZXhrQUxGT3RoYzFkN1Y3Y1MzODVrN0NSSWpGYW9aRnJMQzVCVTgzR212WnF6QmtGZG4vRTZyVnJtbDVVVVBEcHZVV0hnZTdYRmhlTzE2N1Fjd0gzUnVZMkYxZDZoT1lmSGVJTjAwanFqQjRTSk4zSHgxS3BSMUdDTTEzN0d5WjkyZnU2eXE2ejQ4VGFTNGlVbXEzQkpIeG1NdXR4VWJDNnFzNjUxOWRlNzlHWVI3dGxHUHd1djkxSlhKb3g4dnRvZG50ZGVkSFBXaiszTG8yR2FjTHdrUzYvTTlEMWFsaW01b1padWlOcnkrenI3OSs5SFBTWXhVcUthSUFGR3JyUjVwTUo5Q3ZuTHNBVkg0VHViVDBha0daSlp5U3lrT3M0OG5YUVlvVmFPaGN5cU9jbWg0SHBOSDU5VnBnTGdvRERaMGIveld1RCtlTTV6OHlFMFk3TDBPNStkMi9WbnJlbnpiZXNKR2pQT0J2ZHJoMHhpRjUzU0dzblhmdEtrbnRVbS82bHIwS3Y1bEl2RUEwVFA3cXRJRSswbXN6NkRPTm5DK050OTBjUWIxanNJZThhT3VBc1FteHpialFHbXQzNmtOdk5PZkx4Yk9UclJTdCtIMVpGWGNJREZTQVphM3VWY3lyWDU4Vmg1cGxHKzczcWpzY0dPZFJUeklmUi9QR3BEdXZhZkdTaU5RZkhiNDU2MEdwdFpuTDM1S0tVQnNDZ01DM1Irdkk2WUk5dFYxek1IZUpuUmRmbkQ0cDk4NERTcStjVnhGZkJ2eis5RzlGN3VpY0dpUGpsSnRrekxrMlc1ZWE0STlhdit0Q1hidlNZeEx6emJDUUJpai9CNG1VeE9iUUJrN3RSbkxndlk2aUR1MHVNNmJCL2hyeTBQZGhuOVBvWTY5a3VoZHFDYlp3ZDhPUERiR0pyTjZvZ2J2Uyt1SjNlV3dtamhNY1FaV2pZSEhTc095Um00ckN2NHQ3NFBuSEs0VnJTeVdVSFFyVlYrMFlwUGNhbzIrOTd2V0UvdXpubXhwOG1nL3JqdnFyMDZkSnMyVzZYelN0aVFhNkhxTk1hODFidW1NYzZCNG1IaDloL01VQyt3NGpwOWEyN0kwZnZ5a1A1N3BlcStmQzRIZFFEOHIyM3BOY3RSL3I2NjJmZDdZRTMvWFhLV05GaVJHS0ZUenBaVEcxcW5jZjFMcGRYS3VOQnNMcDRuUGdsVXByM0NyOGJVZW1CNGFyUEJhbitNVSt6Z0FwQ24xYkJPUHZzd2xuVXp0cm5WLzlkVFZnRlhwZlRFbWFQNWc5ZENPcmtPdjc2M3pBTEdtMStFeGlWU3BNbm1xNDZpVTA2L3ZQVEpBbHFVQUs4NnBWeTQvS3JiYTUzZWNOL2JDUHkzMkUxR0N4QWlGYWg0aTdibUl4YnB6N0dwR2RxMjZZTUM2djdPRmc4S3VnUzU0ZExBclo3UTJaQjBrbG5pdUpncWpRWWYxaW9IWFNxSkg4Qm0xNHZBaXphUjdEY1NyeGRsNm1CZzdiV1c2U3lWQWJEZzFuR0J2T2lqaFZJQ09YRHBrSUt3YS96UnJTWVFEK0crMm5aQVBrd0VxOEZRSGlNL2EvLzFUdStzZUpFWW9WUE9zWmVnaVZnYzBpMlBaSUQwazJNQjlwOEhRcDlZVHV5RkkzSU5TRDZ3SFJwNHBibHNyWWI4eWVzTTZpRGgwV2lXd0RoS2ZFcG5VOUZ4TkpKWGNrR01OaDliS1NncU1KOWdYcGJ5YW1LeEd0WEpMUzhkUGpWb1M5WGd0WkduZWg2RHZwV0F4UEsvVng4ZEdnYWNIN2M5dmpZOWNqOENJVktnbVN1V3ppS3pML2VjUU9GM29kZTc3dm8vRHBBU0J3RjZzRC9aZU5STzJxYVdONUk1aUY2UUFkaGJhc2NhWlZsWk9ITTdldEo0SVNpS0EwckZOZHc0RmVSNVNyZzZhS2E5VnhOYktTaXJVUG54d3lOS3JzN0pZNmQ3ZXBYRmwzWlZ0VCtNWWpvdkc5ZjlPeDhJOWFVdEZjeXg4cFBaL3NUOVplOWFuOTBxaWQ2R2FxSlhQSXJHY0RmdVFROEJrUEFPVDAxay9LYkpPeC9TOC83ZkY3Q2h5RTJWbWVsZXFqbWM1T0U5bEZiSG04VnBJZWJmbnNZcVkvUGhKUmE0ODBrNUpPZDJCOWpPYlRrYS90REtvYStCRXdWNmQ3bnFvMWNYM2paK3poZkZZMk03dzIwdlY5ajJEeEdVSFExdEtjcC9kUHBTYWF6V29mczVzSnNqcXRSSWs3a0dOaFdYVjJjcnd2TVI5ZVp3NUNuaXluZ1JkTytEWVFkRjdoalhHc041bnhDcWlJUlhlc0Y1RmZNcW91clJIdHRqaHNxSXAySWgxRy9aaW02MmpzMEt3OTZ1T3ovcWdjZHpkd2s5NC9QZXFxdjYxNmRuQW51bW1uZ0ZpMHZ2czltRDVucktxNGhndVZxUFVucEJ5ZXNRaDVIdTVONzUvazFuQkN4MWZpbVcwZ1dXVVV2WnNPQWkyRGhLdFUwMVRuUGk5Y2FqZUNqc2VZOEZzeHBlT2FkR25ySHJ2NU5ZNEJYaTR6Y1NTc2l2TkpxSmluNU5vcGRRWkRzdjNsV00rdVZXRGxGU3hsQXhaejNTbnNwSllzZEtNREZtbXZGa0hpWmIvM2xPaTZYMnMvQ1ZLcVhqV3dkRmRodHVZUEZZOXp5aGdzNzNTdHNEbEdpUVdWeGxNaloxVk90eDFwdFZlQ1JMVFlEMVEyNmVqc1Y0UlB0TStLaUFYbG9NTzY1UnJ5ejNIcVE2dUNCTFQ1WEw4U3V1UnhEbFZKcStZVk4yWjVUN1JUaWZaY3cwU3cwQ3Z0STIxbGpkamxwMmFVa1F0OW4ra3RIS1ZuY1FtR0R6U2htK1lJVVZHa2t5ZDMvWmNyZzBrV1NSRS9aTGxvSSsyeDQ1MVdtaU9xNGcxaitDV0lIRTNsbTEycCsxRnJrRmk4TEd3RlFITDk1SnpIcm5GUUNHbGlwcTVzcHlWM09mYTloZzRodjFkdHdrVjFBSFdTWFYvZFMrQ1JMSDhEbWgzREdpU3dycXZ6L2JZQndXMzFwVk95YnJaVFRFMU1UeURSS3NEMHRjcGFVWEE2bVo4eURUVnRHWXlpMGRLWVRHOEd0dGpCWXJNbEtKWEVtNGJVdzRTU1RsTmozWGIvVlJBVVRQcklQZUFzZFJPQ0JJM2NCTWhVRHdvb2ZIV2pKaFY5VHFxZXY0WHM3VUZVQ0VMNnhMMHRYRFAvVG1Zekc3cENKR3dWQ2Y5VE8rWnpDYzNFVjhmS3V0dXl5UElwVy9zTWRkMDAzQnVoL1hCa2t1RUl3OXl2N2t0QTVya0Q4OS9nVlhRYjUwS2hlNTR6KzZHNm5oL0VTd2lSYWtmNk4wVGxwT3Z0REUyQ0JJWGVCem16dlhhdWVJTDE1dzZyZ1RVem5TZ2FxNVk5YkxIWjFxT1dDbEFkYkFZenV3Y094VG1BTENjOTJUeXZzalFTWWoyazFzZW9QOVEwTm5LMXNFdVk2bHVXVjduVy9NOFRQOGJIWkllQXJnL1cwL2EranlZek80em5YVzF2QW5QTTE4TnNkcGpTZ1c1UW9SOUlvUEo3TW1oZlA4cTRmZDhWSEdzTzNXNnR3VU5Jb0RVa0dxS2JWZ0hMaVh0T2JWK0wyRmY0aEg5WHorNUI0blZqMEZlMkovNHJ2V2tyVnRkekxsMU9KWUJ6V0hFd1hUS3FIQmFsaENvdmUvZ0hiMnFEMnNlVEdZUGVoMDNkSmlBS1NiMXNBM3JJREgzZ2pYZmhZV1N3V1QyYkx3Q2RjSnFlajlGT3dJajB2N0VYQXZadkdvOUFxRHBNa0xhK2t1T3RjTDRqMUpTTHpsR0F6Q1IrcVFlOTNsYVRMK1BqTTlHWE1YNi9YRDk5MVRzY3hKajdFOHNvWkFORExDbnJCektEdkE0TEhoWGg4cU0rSHN3bVgwTmJRN0hhYUJuK3BRaWFyblNTV3J0L2l5RGx0VDN3KzdDZXRzVlk2bWVpaG9rS2tVclJvR1piQXJac0JMaGlvYXRJUFBwNk5MNGtIOHJJWVBoVE1kcEVEQ2lMMHdIb29sUDZsa0dpVlNyM1o5bEttV0ozNGYxU2lKanFaNkt2WkpZNmJEU0dBZnRmODRrQUdNdkJyQzU4d1RTVHRkcEJvenp3V1IyazNubFpTQ1dsQWVpVE9ZbXdxRXdYNGw3N2F6ZkU5ZC9UMFVQRXVVaTBoSi9LR1JERUFZVUltSTJncFUzbXJDcVZ4anBiRkVLNjRGb3lsVzVMZTliQ29Da3BiVDlpSlZEWWJWT2oyRkFkem9KRXJXL0tNYUtRSzZGYkFDc29HeUV0OHVmVFZhOXd2ZzNoL2FqQkE0RDBTUW5VQnpPNUNOSTNBK3BqNXNwY2E4bEl1dHFKYkhTZVliajFoUDJVaTlrdzJBUjJOSjhPcnJLTUZDczFZZjJFeXdpZDVZRDBWVHZCZXZYeFo3RS9aZ0dpUVZXTnEyWkZraWlyK3Fuem9MRTZzZEE3N3IxaEwxc0N0a0EyRXptZ1dLMUVDd3lPNDRjV2E2S0hTUmE4TWx5Y1B5VTRUbk95QlBYR2ZiV2FaQW9NYzVQckRJcVpBTmdRd29VZjArOG1NMUxYdW5zeFpTTytBQTJZYjBxbGxTUXFKb0diMXBQN0k1VlJNVEN0WWE5ZFI0a1J0eWZXRkhJQmlpUDlpZ09DOWlEOFg0d21kMnpxb2lNV0tmcW5TYldSMXRuSUZFaklTM3Myd1BXU0dFbE1lYit4TEQ1L0tiMUtJQ3NoVFprUGgyRlRJRVBtYitWNHpBRFROWURjdUN3bitzZ3NlckYxdU1TZ3NTMGtKSUpySkZFa0ZqRjNaLzRhakNaWGJZZTdRNmRCbUJrUGgyRmxNMS9KM3JvL3FZT1ZBV1ZmZFRJd1JmajF6aE9ZVFZSOTk5aDY0bmRQV2xDSEFDeWtFeVFLTEgySjc1akFBYVVTYXVLUSsxVmZNcjRUWDZtblVJR3JMTnpEaU5sRnEya0lOVjZqekJaVEFDeWtsU1FHSGwvNGlVcFhVQzV3bDdGK1hSMHBBcW91YTRzRWlnaWRSN0J6N2pqdmJrWHhxdUlRY3BIY2ZYVnE3NS9BTUE2djZ4NXJoTmhGV0F3bVlWWnhNL092Ly9iL3NRUUtIWmNrdHI2ZDkrUnd2b2RoeGFqVG1XLzBxVFFXQlVVTFEvSDloWW10TzVKVlVPS1F2ODVtTXkrR0ZjQnJlc0hSSi9JMVhsdzcxcFA3SWRVVThSR0FUVHNMYmtnc2RLZ1RnMzFXZXRKVzRmcWlEbzdKRlJCY2V2eFBkeHFYeGFBaFhzdFpDb29sZXhVUDVZRFd5K3BUR2dCcTF3NTNFdkhnOG5zYWo0ZFJWdEpWOXZnc1RLYVVoMEU5QU5CSXZhVzJwN0VwbGo3RTFNb1pKUHpHVzlBVmtLZ0ZTYWk1dE5SQ0JML3BYUlU2K0liMWc0WmFDSlZPb2JHWS8vdldheDBhd1dJdHc1WkJzK2ttcG95blNqVGdnUmV4a3A0RHlVYkpFYmVuOWgxSVJ0dVBxQURtUVdNWnd4b2tEQ3ZEQmIzZmJtTkFQRzQ5ZVQrTHNrQU1NVjRhVE9tK3kyNWh2c3A1WlhFbU9jblZoMFhzckhjTzVmU1FjUkFOaklKR0ZsTlJKSzA5OWVybW5BSUZGMVc0OVR2ZXdXSXo5eXp5U3R1NGkyRkkyUlFocVNEeENydStZbjF2cDh1Ymk3TElKR0tyY0NlRWc0WXd6NnQwOWFqUUJvODk4T0hsZlI3eThsY0ZjbnpDaEFyVmhIdHphY2o2OEo4Slk2WnJOOVR6dWNPWXcvSkI0a1NhMy9pWVVkbkdWazJlbXhXQmd5dENCaGp0RWVyZEhxR0hMQ0tKblU5QjVRaG1QczdyQ3J1YzBSR1NOc09BV2RWVlI4ZEt4MC9VVVF1Q3dTSndBcFpCSW1SOXlkMlVjakdNc2Yra0ZRRHdFY2pZQXlkOEc5VlZYM3FvUERVcTQ3UGtBUFdpZEZYaDhybi93d21zNUQ5YzdwSm54ZnVtYkJ5T0pqTVF1Yk9YNDZyaHpYT04vVmpPUkZ4V0dCN2FoMGtjcXhhVHlWNUJNWXlFYzlQckZUSTVsNnpvdTUwenRTRFlhYzE3R2hGRk9pTitYVDBxRlc5c1FwcmVCekF2Y29wZTUyUW9uQmZEQ2F6QzYzU2VYdFRINzJoUHZSeFlkTDFWdzJZVHlLZmpmckpJUzBTUDl3YkYyWVpGbGFCMW5xZkpXZE85MVF1NmFiZlJOeWZXSFZReU1aeU5aRUtpRUJFV2wwOFVpcHFqSlZGVmltUXJQbDBkTm5CSHQ1akJZenZHei92RkV6RURCQWY1dE1SS2VHK3JJT1dZdlo1YTFYVWVyS1NJTEduc2dvU0pkYit4TmlGYkN4WC9paHNBWFJBRTFsSFNrUDFkRXhhT1JKMzN2SGUzUzQ4TTBrYmhmVXFiVW5mbWZsN1lWVzh2N0lMRWh2N0UyT0lXY2pHOGlZc01jY2V5SUwyTFliSnJOK2RWeFVwVG9Ca3FhOGVkckJudHl2ZkFrU3FtZnJUOFdpV0RqbytLOXVTOVNKQjN5WjYwSkRqU21MZFFQelJlc0xISysydjhINVBYNDF2UnRKZGdBN05wNk1iNTBFeVFTS1MxcU5Bc1E0UU9lZzlIdXNxdXRsbllDbTc1RTNyaWYyd2l0aGpXUWFKVmZ3OUQrOGpuVTFtdVhHYVBVdEF4elJvOUxvWFNUZEY4blFQREF0ZWtTQkE3SVoxbHRlYkFqS3dQTWFwQklrOWxtMlFLR0h3OWRSNjFNZFZoRUkybG8xZVNla1RRTGEwb3VneG9jVktJckpRY0tCSWdOZ2RqNjFBdVdkZ2VieCtnc1FleXpwSVZDcExyQlNCQXdXS2JyUDNLcWx2MllseWtDK1FCby9PbTVWRTVPYWlvTlRUMEZjZkVTQjJRK01sNjBXQzgxd0xnZzBtczZIRDJaOTM3TEh0dDl4WEVtUHZUenlPY0phTzVkbG5oNndtQXQxem1BQUNzcUJEN0VPLytaK3FxdjZNZkJ5RmwzQU80Z2tENk01WnJ5WWVaTHlhNkRIVzQ3enRuc3MrU0t6aTcwOTg0MXpJNXNaNHB2V1NVdmxBRXVodzBSdWgzeGxNWnFGdi9xZXFxck5DM25kWXVYck5PWWpKc0p4VXI0MXoyNXVvMSt0eGo5Rm45VndSUWFMRTNKL29Wc2hHTTVPbWV4TkpPd1dTd0tvRGVrSDc5KzkxbUgwSndzVHRoL2wwZE1TWmNkKy8zODQ1WldnY09BV2ZuanhlNzUwK1gvUllNVUZpNVAySmxYTWhHK3VnN3AzeTFRRjBoNzFMS0o3NnhWdWRNNXk3YjhHaDloN21QTmxxM2Zha3ROTG1FU0M5eVdYTXBOZHBmZXhGRldGckZUSlEwa3BpN1AySmJvVnNOSHR6M1hwaVA2NUZkd0M4eUhyUTBmc1ZEYVNsRVNEbXZ1L3dTV09KYjhGaDduc1BIVjUvTXBXVjU5UFJsVk14cEZ6R1RCNUI4ak9wcHFoS0N4S3IrUHNUUFF2WldQKzdoOXowUUtkeVA0TUxXRW43b25JT0VFTmcrS21xcW44cnJmU3lzTUkwbHR0eFVqdDQzaU5RT2t3OTdWVDFNYXdybWdaWEZHVkNWV0tRS0RIM0o3b1VzdEcrQit0Zzk1V3F6QUdJejNwZ3hVb2lVbkpqSENDR3ZXWnZxNnI2WGNIYlhldHY3UC92WDJ2RnNBNE14d1VmYVUzZ2RiZ0FBQS80U1VSQlZHRzV2K3c0c2VJdWwwNnJpV2VwVm9qWHF2MzcxaE0yY3R1VENTZS9sUGpCaGhrUUZaYjV1L1drajFESTVsNkhabHNhTytTYWgwWXZmRVljalFGRW9vR0c5UW9MZXh5UkJPTVZqVERCZTc1UUlPWjczNm9Vd0RyZGNWa0s5NUYrdmk2NVI4Sy8rYlduWnh1RzkvNnE5ZWp1emxNcGlxY3gzNlZUMFBSNU1KazlwbFN3U1BlQVYyYllOUVZyVUNzeVNLeTBQM0V3bVlVWndvK3RKMzJFL1BXaFplY1RidFRCWkhidFVOcVlRQkdJUkIyNjlXRHFpWFFncEVEWHQ5V1JFQ0ZBWEh2K29KNnJCK3lzcG0vdTFqaUlTaVpJbEV0ZGh4N3B6amZXNDdzOTNUZ1docUlhUHI0ck5kMzBtOGo3RTcwSzJZd2QweWhJUFFYOFhUaDA2QXlPa1FyTGdYbjJSV0lTWmgzZ0hLYVVpcW5yeGl2QUNkZjNiUXBIZjJqY1pya2kzTVFxSW41U2RKQW9NZmNubWhleWNXNzRRcUI0bjl2QnNiVlV6bXBDWEdGZ2tzczFxMEdVeDFseEZLRkNLcXhXRVo5VnFSSU9OSmF3M3RkNW1WSUZVQzBNV0orYldPczhVRlNBNkhGb2ZxWEZDS3Q3R1lVb1BranM0UHhFODBJMmF2aXNHL2RhQ0d6dnRZY3pDeUh0WXpDWmhaV1V2d2tVKzBVRGtzOVZWZjBUcm9GVWl3cFVQd0xFejYwbjl2ZnNzUDhaMkpyNkRhdFZSUGJZK3JOdU53NFNQRS9QczArb0E4V28vVTdvOTV3RHhJcFZmQ3pUaDVYRTJPY25WaXBrczJ4RC9UN09uZEpPS3pWOGZ3NG1zNXVVVjJpMGdoUlNJZjVxcEZzdzg5VXZ6Y21NVjNWUmdUQXhrOUsxTzVqTXhrNEJZa1hsT1NRa2l3UEg4WjFIUVBkRzdWMFNOTjc3NFBoYUR0VHZSRmxGYlJ3dDR4a2dQbWd4QXZoSkw0TEVLdjcreEVvYm5jMEdyY29UOTU2OWVxTlZ4WXRVVWtqQ1o2alg4MVdEN3NXOVhkbXNnTUxFc3UvN1VBVVovdEZFUjJlcmk3cGViNTBMWnBHU2gxU1F5WkVSclJSNWpJTStKclkvOGNJeDdiVDJUdU1sdDRrU2ZhYjNUbWNoMXA0ampDMlJxZDRFaVJKemYrS0JBa1d6WUVzcFp0ZXRKMndkYU1EOXFKbXk2S3N6U3EwNDEyRDdINzJlVlNsTkJ6bWx5bUozdXBkZU9oTG1qV1o1UTBuMHExalhocTdaQzNYb1hrVUZLZ29MSURHVy9ZUG5mWU1mdkZhTVBxdk5UV1dQNHFsajlsVXRURkQrWloyRjFkaFM4M25OMk1mS1JVK1BoTUVHZWhVa2RyQS84ZGk2UWRheEZkNHpaSlVhcG5mTnZWK2VqWC9ZV3hoU1Z0UXcva2VONDZhREJvTEVmdGptZXo1UWVzNmZ6WURSK2hwV1ozNmxhM2JkWklZRkNnc2dOYVpWZTFQZVkxd0tuZmZuVmVQZ1RLdHJuWCtQa2JLdmFtOGFtU3c3ajBmVVI5MHViS254ZEUyYUtkWXA5cHpFVlRvNFAvRk1CKzFiM29oRHJWaDRuWk96NkZWai85ZUQ4dVBEeitPMk0xQ05nNURyQTQrSCt2TStnMnVDeEg3WTlYdXVBOFp2ZXpvYTEvQzlydUdOajVOUWF0R0pmaXlMZG15Q3dnSW9YZGhhY01OMTd1NUNnWWlIUTQwVkxsUW9KN1N2WDBNNzIrai9hNkU5L1Q0bW1FOUhwcGxMSWZzcThuanZqZlpvUGpmZSsvMnFjWkpXSCt1K1pCaHhURmRwc1lGSlI2elZ1eUN4MHY1RXpmYkVTbS81cUVEUjVHeXowSUhxOWQ5R0hxUldXaDA5cnN2NmgwUDVsY0w3VWdyY2tXTUQrQzNsbElxUDVkb3cxWFJUeDgwOUhycUduMStvcnJqdlJNYSs3cGp4UllLZWpOdjFRMVdQSEJJbytsSEFkdWM4QmpyVU9LRTVWbGdyQkUzVzZmUWE3NTA0RjM1WnREZ3hXUzMwTVYzM0orRzFuSEtQNFNWOTI1UFlGQ05mdmNtNmtNMjlacDVpdm9kVkRodXJqYXQrdkdmSVdFMHNtL2YzZTdEaXVxMS91dTdRU2NORGlqejJ4eDVyVC93NHBUUDRDcFJpbStKU0JFYmJkTHpyT2J6a0lLSCtaTWplZG15aXQwRmlCL3NUUFFyWnBCUW9kbzBnc1d4OS9uN3AwSkdxZGF2dit6aFFpdUNqOWhPZnAzdzhVNDdVcG5nZUZiRUx0M1kra1VDeGEzV0FTS0VhYktTWDZhWTFwVng4VU1HSkdPcENObVl6ZU5wak9ld285VFFsSWVYMGhNYXZQTWFwcHJsNXl6V05oTjNXNllST0Z0UDI2cFM5OFBOVks1bk5DWlI3VXVnMkY0NkswTllWenlNV3R1RjY3bVlJRkpYNkdUUDFOQlVFaU5oYXI0UEU2a2NqT1l5NFA5RzhrRTBqVUx4S3FMSHZ3amtic1l2VTExWEVFQ0J5SmlKU1pyTFBmZ3ZObEwybE50bjc5b0xGL2NsMVFIcGZGMkJaLzU5blo2aEFPNFZKNWdQdFIzWDdqQlVvMXNkTDlNV1Q5aUFTSUdJcmZkNlQyQlI3ZitKSDZ3TllHNm1uWHFXdGMwREthWm42dGg4dnRFVy9FeUFpZFZxMUt5MkZiM0YvOGp0bEcvMnBNL0htWWFKWGFiQmpGVVhKbHI3RGxMYXR1SzRtVnY5OXo2RnRmZDJUclRxaGlpbFpWdGdKUVdJMyt4TXI2MEkybGQ3SGZEb0tEZXluMXBQOWNKaDdoNDJmNlI1WnVXcFFvQ2VsQkZHcEY3bm80MlRHc1ZJV3c3N0p2d2VUV2IxM01zdUpTZ1VRcVdUaFJQa010VnA1VXZqRStxZjVkSFJDQ2paMlJaQW9hakJpYnVJMkwyUlRtMDlIWTgyU1BiV2VMQjlWSU12U3A5WGhPMlo4a1J2bnc5bHpjYWlnOGMvQlpQWlZBV05XRTVaYVhYdWJ3T3JhY2F5cXRxRjRqeWJXVXl2Z3M2ODZHNFh0TjlnTFFXSkQySjhZdWJPckM5bVlhOHlTOVdsVjhVNEgyS0ljZlJpQWhnNzlqekJZWWNZWG1UcW55dlozZGJHZHNNSjRtOVBxb2dMRkZGSlAzVk5PbXpUMis2MlF2aWFrZngrUmpRSUxCSWx0c2ZjbmhrSTJMck05U2ordFZ4VkxIbWlIUnZHMUJ0bWxGUlhvdGJDcXBwbmUxNFdXTC8raTFVTU95a2UyZEp6Q0JkOWd5eXV0TGo1YTF5SHdva3lHRSsxbDYwcjB3THF4cXZoN3BsbFlkeG9IblRQWkNDc0VpUXM2MnA5b1hzaW1LUVJPYXZ6ZUZwU0MrcXdVa2QvVUtCSWNGa3pYOExsbWUvOG80RHF1Ty9SVHprQkVDVFRSMGZkejZGWTVWTkdiMnh6T2UxVEFkTkpoR21abkFYVllnWnRQUjBjWmpaZWVWQW1iU1hLWUkwaGNvb1A5aVpYWC9zU21rRXJTYVB4eVhWbjhvbHo3WDBPS0NBUHNmdEhnNVZMWDhiK1ZUcDFUd1BpRlZXOFViTnp4Q2xUcXdzcml2VmYya0xVTzB6QVB1dzZtTXhndjNXa3NkRVFsYkhnaFNGeWhnLzJKQjdIT25GTGpOMndNc2xQZlMvSkZEZlcvdFBKQ3JqM3FWTlJ4STJEOGtPZ0E5VW1ybjcvcCtpVTRSSkVheHluMHZaRE5PZ2ZLSHJxTlZhQmxINDAwek5mcWkyTkpZaTluWTd6MFd3S1Rrazk2RGI5cG9wR3hFRnoxL2pEOUY1eEdQbVEyVlBXNlVscWR1MGJaNjdFMjF3LzFuZzhqdmQ5VjdoUXczektneGlaMExZZWZDdzI4aHZvNTZlZ0lqUys2aG05WTdVYWYxSUhpWURLNzFCbURXQzYwUzQ4NlBENzVpc2JxaSt0MDJWTVZLenB1L2NYOVBEVDYvcVFDSUxYajlYanBwREZlOHU1ZjdocDlDWld2RWRVdkdsaTlkdmlsMlYvTW9iTlRZNUQ4SG9KOXFVRytVUU40cE1GMVBjZytjUWlVbjNXTmZOWC9ocC9IeEJyQnExaXJ1d2tLbmFIVkxIZlVUZlFhcE40MEs5M3FQcTd2NWFIKzEySXk1RWtUU2ZVMWZKOWhSMjU5blh1OWY4dCtLcmZBM2ZLOVI3ayt3eXIvWURLN1VVR2JQcDExdW8wREJWNVpCSXJWajJBcFRBQmNOaWJrNnZiMVYvMHNCbzlQUys2NXV2OS9WTitmVFYvYm1KVDhWbkJNTlNYcS91Vmt4LzZsSGhNOU52cVNuTWNmMXJGRlR2MXFNV1BId1h3K2J6MElMTE5RWEdlVGplWDNpd0VDSzROSWlTWkU2a21nb3hjbWhKclg3aU1yaE1CbWxLbHlGVEVySjBlL2t6NVlGZ1hSTDUyWGVVODFVcVNLSUJFQUFMaFFrWllMQXNRWGhaV2tiRllVQVpTUElCRUFBSmhTNXNubGt0UkRyUGFzYzFQSlVnRFFPWUpFQUFCZ1FpbDJGeFN0MmRtRFZoUkpRUVRRS1k3QUFBQUFlMU9CcUZzQ3hMMGNLOGdHZ0U2eGtnZ0FBUGJpWEp6bUlWS1Y1SlNxc0w2bTBCdUFMbkZPSWdBQTJObGdNZ3RuNW4wMi9nU2Z0S2Z4S25icVphUHFjZk40aDlqbkIxOXVVQmtUQU55d2tnZ0FBSGJpRUNDRzRQQmlQaDFkdFo3cGtQTWg4cXU4VGUxekFOQWZCSWtBQUdCcnhnSGlzNExEeTlZemlWSEFHUFlObmptL3NxZjVkTFR1N0ZZQWNFT1FDQUFBdHFJaU5YOGJmV3BoeitGcGJrYy9SQW9XT1dRZlFDZW9iZ29BQURhbVl5NnNpcXBjNjhpSDdNNEdESzk1UGgyRjFkVFhXZ24xY043dHV3VFFWNndrQWdDQWpRMG1zN0N5OWNiZ0U3dFdrSlc5UnVEc3NWL3hYNXliQ0NBMlZoSUJBTUJHdEEvUklrQzhLeVZBclA2N3F2aFYxVkFmV2svdTd6VDIrd0VBZ2tRQUFQQWlyWlpaRkpaNUxqSHdhUVNLMXFtbkJJa0FvaU5JQkFBQW14Z2JIWlkvTGpWOVV1L0xlb1YwMkhvRUFKeXhKeEVBQUt5bFZjUkhneUN4RjhjNkRDYXpzRC94VmV1SjNmMldZM0VmQVBsaUpSRUFBTHpFYWhVeCtYTVFqVmdmZ3M5NWlRQ2lJa2dFQUFBdnNVcWh0QTZlVW1WOXR1Rko2eEVBY0VTUUNBQUFWaHBNWnFGd3l1R3E1N2Z3MEplakhQUStMU3VkL3RwNkJBQWNFU1FDQUlCMXJBcW4zTGNlS1J0bkd3TElGa0VpQUFCWXgrb0lCZ3F2QUVBbUNCSUJBTUJTcW1wcWtXb0tBTWdJUVNJQUFGakZzbUJLMzlKTkFTQmJCSWtBQUdBVnk0UGMrMWFoazRxa0FMSkZrQWdBQUdCb01Ka2RHWjByQ1FDZElFZ0VBQUNyV0I3aTNxZVZOY3NWMklwVVhRQ3hFU1FDQUlCVkNCSjNZMVVSdHNaeEdnQ2lJa2dFQUFBeEhDb05zMmlxQ1B2RzhqM09wNlBiMW9NQTRJZ2dFUUFBckdLZDVuamVlcVE4WStOMzlOQjZCQUNjRVNRQ0FJQlZyTk1jeDFwcEs1TGVtM1dReUg1RUFORVJKQUlBZ0ZXc2c4UURoeUFxSlZjT1ZVMXZXbzhBZ0RPQ1JBQUFzSXJIS3RiN3dXUldYQkdid1dSMmFyMFhVZGlQQ0NDNndYdys1MU1IQUFCTERTWXpqNEhDVTZoMk9wK09pcWphcWFEMzFtRVY4Y3Q4T3JLdWxBb0FMMklsRVFBQXJITzM1cmxkSFlhZ3FvVDlpWTRCWXFYMFZRQ0lqaUFSQUFDczQ3VW43bGlCWXJhcHA4NEI0dE44T21JL0lvQk9FQ1FDQUlCMVBGZXo2a0F4dTVUS3dXUVdDdkQ4N1JRZ0JoZXRSd0FnRXZZa0FnQ0F0UWFUV1FnVXo5YjlIUU1ocmZWOFBoMDlwdnh0RENhekl3WE9yMXBQMmdtcmlFZXgzeHNBMUZoSkJBQUFMNG14cWhXQ3JuOUNRRHFZeklhdFp6c1dna01GeS84NEI0Z1ZxNGdBdXNaS0lnQUFlRkdrMWNTbUI2M1kzWFM1dXFpQTlUemllNytiVDBmSkJja0Erb1VnRVFBQXZFaHBsdmVPZS9EV2VWQ0JtRzgvbmtkbnFPTHFVRCtucXNRYXkzUDR2ZlBweU9OOFNnRFlHRUVpQUFEWWlJcTFmRXpnMDNwV3dCcCt2allPbkgvY2ROVlJ3V0JkV1RVRWhFZjY4M0hyTDhmengzdzZ1dXp3OXdQQU53U0pBQUJnWTRQSjdEYkNucncrdXA1UFIrZDkveEFBcElIQ05RQUFZQnNoQmZPSlQ4eFVTS2NkRi9SK0FHU09JQkVBQUd4TSt3RlBsZktKL1Qxb0g2TGJQa3NBMkJaQklnQUEySW9LcXd3SkZQZEdnQWdnU1FTSkFBQmdhd1NLZXlOQUJKQXNna1FBQUxDVFJxRElIc1h0ZkNGQUJKQXlxcHNDQUlDOTZEaUpHNnFlYnVURGZEcTZ5T0IxQXVneGdrUUFBR0JpTUptRjRPYzluK1pTWWJYMWZENGQzUzU3RWdCU1Fyb3BBQUF3b1JXeWYydS9IWDc0RkE3cUowQUVrQXRXRWdFQWdMbkJaQmJPL1F0QjQwR1BQOTI3Y1A2aDltNENRRFlJRWdFQWdBdnRWUnpycDAvQllnZ09MMWc1QkpBcmdrUUFBT0NxUjhFaXdTR0FJaEFrQWdDQUtCUXNuaXBZUEM3a1V3L25SRjVWVlhVNW40NGVXODhDUUlZSUVnRUFRSFNEeWV4SXdXSUlHZzh6K3dhZWRlVEh6WHc2dW1rOUN3Q1pJMGdFQUFDZEdreG1KenFVL3pUaHN4WkRLdW10QWtNSzBRQW9Ha0VpQUFCSXltQXlDd0hqU2VNbmRtcHFDQWhENm1nSUJ1L1pZd2lnYndnU0FRQkE4clRhK0t0V0hDc0ZrTDgyL3Y4bUJYR2VGUHpWNnVEdnNRNEs1OVBSMTlaL0JRQjlVbFhWL3dQaFdLM3RNUFZ0R1FBQUFBQkpSVTVFcmtKZ2dnPT0ifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMS0wMS0wNCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IlZlcmlNYXJrIERUIEZpbmdlcnByaW50IEtleSIsImNlcnRpZmljYXRlTnVtYmVyIjoiVTJGMTAwMDIwMjEwMjA0MDAyIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjIiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMyJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMS0wMS0wNCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI0LTA2LTE4In0seyJhYWd1aWQiOiI0ZmM4NGYxNi0yNTQ1LTRlNTMtYjhmYy03YmY0ZDcyODJhMTAiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjRmYzg0ZjE2LTI1NDUtNGU1My1iOGZjLTdiZjRkNzI4MmExMCIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IDUgQ0NOIFNlcmllcyB3aXRoIE5GQyAoRW50ZXJwcmlzZSBQcm9maWxlKSJ9LCJkZXNjcmlwdGlvbiI6Ill1YmlLZXkgNSBDQ04gU2VyaWVzIHdpdGggTkZDIChFbnRlcnByaXNlIFByb2ZpbGUpIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NiwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9LHsibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJlZDI1NTE5X2VkZHNhX3NoYTUxMl9yYXciLCJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyIsInNlY3AzODRyMV9lY2RzYV9zaGEzODRfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlEUGpDQ0FpYWdBd0lCQWdJVVh6ZWlFREpFT1R0MTRGNW4wbzZaZi9iQndpVXdEUVlKS29aSWh2Y05BUUVOQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU1aNi9UeE04cklUK0Vhb1B2Rzgxb250TU9vLzJtUTJSQndKSFMwUVpjeFZhTlh2bDEyTFVoQlo1TG1pQlNjSVpkMVJueDFvZDU4NWgrL2RoSzdoRW03SkFBTGtLS3RzMWZPNTNLR05MWnVqejVoM3dHbmNyNGh5S0YwRzc0Yi9VM0s5aEU1bUdORDZ6cVljaENSQUhmcllNWVJERjRZTDBYNEQ1bkdkeHZwcEF5Nm5rRW10V21NbndPM2kwVEF1Y3NyYkU0ODVIdkdNNHIwVnBnVmRKcHZnUWppVEpDVElxK0QzNWh3dFQ4UURJdituR3ZwY3lpNXdjSWZDa3p5Q2ltSnVraFl5NktvcU5NS1FFZHBOaVNPdld5RE1UTXQxYndDdkV6cHc5MXUrbXNVdDRyajBlZm5POXMwWk93ZHdNUkRuSDR4Z1VsNVpMd3JyUGtmQzEvMENBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUI4R0ExVWRJd1FZTUJhQUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUU13RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCRFFVQUE0SUJBUUMzSVcvc2dCOXBaOGFwSk5qeHVHb1grRmtJTGtzMHdNTnJkWEwvY29VdnNyaHpzdmw2bWVQTXJiR0pCeUoxWG5xdUI1c2djUkVORnhkUUZtYTNtaW84VXBmMW93TTFacmVYckowbUFERzJCcGxxYkpueGl5WWErUjExcmVJRlRXZUloTU5jWktzRFpyRkF5UHVGakNXU1F2Sm1OV2U5bUZSWUZnTmhYSktrWEliNUgxWGdFRGx3aWVkWVJNN1ZvbEJObGxkNnBSRktsWDh1c3Q2T1RNT2VBRGwyeE5GMG0xTFRoU2RldVh2RHlDMWc5K0lMZnozUzZPSVlnYzNpcm9SY0ZEMzU0ZzdyS2Z1NjdxRkF3OWdDNHlpMHhCVFByWTk1cmg0L0hxYVVZQ0EvTDhsZFJrNkg3WGszNUQrV1ZwbXEyU2gveFQ1SGlGdWhmNHdKYjBiSyIsIk1JSURTakNDQWpLZ0F3SUJBZ0lVVG5iYkdJUjJOSHZ6cUlLRkFlUXdHMVhCaXMwd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JCSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVFZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU9zWGozazA0QmFuNFRZZHRaS3FEL09QSnh5RHlhUG1DQlVGVWlhWklnVHRlWm5qM1gyNURoZ3BaWlhzQzREMHlkSWNybEE2d05VSW5PUkwvTDl6QmJURUlNQVZNR282ZzdVS0FtYjJNRjZBSGJuaFlKZDllaWt1cFZOV1NoSE5ZTmM0R0JkTzFZTjZBZlVxdkpoSGJlM1Y0U05NUG1CUkVLSlBWejdUaHdnbWdnVGU4V3MySzAvd3NxdjJ3U0U3cGJDQnNVWmhJWDUxYlpNM3BxRHdKUFRtUkZFdnQwLzZ0RzVlTzhGM2oxNE9YcWZFaG1qbjFWdnhLRFlRT0xaQXhDd3dnQzBQNENkZld2M3k4UFNSOEkzNTRoTzFZK0d6Tmp2SXFYMzhOS0x5d3VJWUhGZXJPeE5seEVNQnZGaFlCdVJ1WUFra2dVYVBxTjZVQmhzSUxyc0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ0NvUkhoaXlObmJuWFJXSUw2WkJYb0JYOVlUTUI4R0ExVWRJd1FZTUJhQUZDQW9VQ0VicEZwYjZGUExuWjNGNVB4c0wzb2ZNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUNRRmFmSkkxLzVXZzlDRUVpbUUxUlA1NFJnUXdUTlRPT1FzTEFDVGUrckl0bEZRekM5WkRoclY4Mjh5WDdqenkrQUFzcDNpeks3VDF0aDJkbDdtK3R1MHN3MlBhL29sYzAybnQ2UHlJdzM0OGdhSHpoSTErMEtFNDVxeHZGRGVMMmxNeGJQZkNZdnlFRWFZemppUUVMVTU5NTFwWEdXeUtNYS80Zkx0TytaS09YaE11VmVxNHJYRFBJNTRXNkpIT2lBYWlLZGl3KzVlM2Mya3QvakZJUXRNNnZNWGc5TE5GemRqRVROdDIwVlg5UWV2UnBGWmZ1Y01HOXdDYVFEb0ZsUHpwVE1KS2hQZXYvaW1KbVpZaEtmcjBsTGNlbXRxakl4TEFvcVpkT1lmSEJnNit2QWNkUEkvaWF1R3BVQXY3WCtVS05tRHdqWjJCYUg0c0x3aEIybSIsIk1JSURTakNDQWpLZ0F3SUJBZ0lVUjM4bXEyNlNmMnN6VlYyQmRHNldFTjdrdVdVd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVJZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU5ZMFdiOW9Qb1JvS29ReVdQYUpwejExdnJXVGc2elR0bU5qMlZvS1JueXZLR1JxcHpiODN3NWw2WUE5NlVZa1lCRFFQMGlsTzJEUGU2d1dxVlI1ekRmUnpkY0g4YmgrTDdkR0d2YWU2aFJUWmhrRmtDcFhEczRIY2NrbnJEZjhGQ2xKN0hlMzlKZjQyL0cxUW0yeno5V1dtclBYdGdpSy94MDVHanNRZkd1REcxemY1UVRVVWllOGx3eW1LM1RmZE92TmVlSkFBUGUycG43SXRmUmIrclZyTldpRHpsUm4ydk5uWjJ3UG80d0gvV0o2ZGhYWkcrck1XVCthNkJvY2cxVWZJdzZrZHVuRzRiVHBaenN2YWNGWXlSMG1wZitEZU9ucFNXQW15d0pXSHZUbGYyWVh4RnllWGNUQUNkUWxjTU5HSjJWaFpRNDh4dFA1L1JCUC84a0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ2h5NDJva2lxY1RTMWlxYS9IUldqa0JuNEgvTUI4R0ExVWRJd1FZTUJhQUZPcTNRcENlREh0a2V0dFVmQU82ZkU2ZjJLRmhNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUFuK1JISVBidE1FRE5kVDFnOEgvUml0QWtVZExnQXQxdFdHV25sajlrbmJ2NC80R2xYN0M5cDQ1ZWZQTzkvYVpMNk9WMVhSS0JpNkttdEJXNUs3bnVZRW5NeC81QnFCU2JMVDdyaGR1QzQ5VEJlTWI5UEhkWHNUbFNWTlllZnIxZEdpZHI0ajB4VkJRTGIxcmtuREFiZFdEektmdm5heUtPOEZyd2U3SHg4NDNNRy9ySitjMFhydVV2YmZWVENITGlJV2hNN29ORGhMOHhvYjZ4VW85S0xLY1NMK0l0WXNPMy85V2I4UTlHanNxTDRGWHNEY0cxU2FZaDdLcGZ1TW1PaXhxekpaTzJuSWljUFlSZzFJMlN1aVVmWU83MHRtZEhjYmwra1NRbVNZdDdycTR2aUlMZzJHeDNqOXJJVHVXVGpiYVVhU1NReGdPbU1TSHV5ek1BQyIsIk1JSURTRENDQWpDZ0F3SUJBZ0lVRHFFUncrNFJuR1NnZ3hnVWV3SkZFUERSWjNZd0RRWUpLb1pJaHZjTkFRRUxCUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURJN1huSCtadkR3TUNRVThNOFplVjVxc2N1Ymx2VllhYVJ0M1liYXhuOWdvZEx4NXN3SDBsWHJkZ2poNWg3RnBWZ0NnWVlYN0U0YmwxdmJ6VUxlbXJNV1Q4TjNXTUdVZThRQUpiQmVpb1Y3Vy9FK2hUWlAvMFNLSlZhM2V3S0JvNlVMZU1uZlFaRHJWT1JBazh3VExxMnY1TGxqNXZNajdKdE9vdEthOUo3bkhTOGtMbXpYWFNhajBTd0VQaDVPQVpVVE5WNHpzMWJ2b1RBUVFXckw0L0o5UXVLdDZXQ0ZFNW5VTmlSUWNFYlZGOG1scUsyYngyejZva1ZsdHlEVkxDeFlicFVURUx2WTF1c1IzRFRHUFVvSUNsT200Y3Jwd25EUkxWSHZqWWVQR0JCLy9wRXl6eEEvZ2NTY3hqd2FIMVpVdzliblNiSHl1cktxYlRhMUt2akFnTUJBQUdqWmpCa01CMEdBMVVkRGdRV0JCVHF0MEtRbmd4N1pIcmJWSHdEdW54T245aWhZVEFmQmdOVkhTTUVHREFXZ0JUUzd1OWFJbzA2YlZ3amx6M3loZFVtOFNWN2tqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQTRHQTFVZER3RUIvd1FFQXdJQmhqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFxUWFDV014VEdxVlZYN1NrN2trSm1VdWVUU1lLdVU2K0tCQlNnd0lSbmx3OUs3SGUxSXB4WjBoZHdwUE5pa0tqbWN5RmdGUHpoSW13SEpneHh1VDkwUHczdllPZGNKSk5rdERnMzVQWE9melNuMTVjRkF4MVJPMG1QVG1JYjhkWGlFV09wem9YdmR3WERNNDFaYUNEWU1UN3c0SVF0TXl2RTd4VUJacTJianRBbnEvTkRVQTdiZTRIOEgzaXBDKy8rTktsVXJjVWgrajQ4SzY3V0kwdTFtNkZlUXVlQkE3bjA2ajgyNXJxRHFzYUxzOVRiN0tBSEF3OFBtcldhTlBHMmtqS2VyeFBFZmVjaXZsRmF3cDJSV1p2eHJWdG4zVFYyU0J4eUNKQ2tYc05EMDVkQ0VyVkhTSklzK0JkdFRWTlk5QXd0eVBtbnliMHY0bVNUenZXZHc9PSIsIk1JSURTRENDQWpDZ0F3SUJBZ0lVVWNtTVh6UklGT2dHVEswVGIzZ0V1Wllaa0JJd0RRWUpLb1pJaHZjTkFRRUxCUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JCSURFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURtNTU1YldZOVdXK3RPWTBySVdIbGRoK2FOYW5vQ1pDRmg3R2szWVpyUW1QVXcwaGtTRzZxWUhRdFArZlp5UzMzVkVydmcrQlFxbm11bWdOaGZ4RnJrd0VaRUxlaWRCY0M4QzRBZzRucXFpUFdwenN2STE3TmN4WWxJbkxOTEZjWlkvK2dPaU42Wk9UaWhPNS92QlpNYmo5cmlhQWNxbGlZbU5HSlBnVGNNR2FFQXlNekVNTnkybm02RXArcGpQNWFGNmdpMjF0L1VRRnN1SjFqMlJqL3luTS9TZFJ0K2VjYWw1T1lvdHhIa0ZiTDl2dnYyQTJPdjVJVFpDbHc0Yk9TOW5weXBRaW1PWjVRQVl5dG1ZYVFwV2wvcE1ZejZ6U2o4UnFrVkRORUpHcU5mVEtBMml2TFl3WDZsU3R0TVBhcGcwSjg0bDlYMHZvVk4vRnBTNFZDVkFnTUJBQUdqWmpCa01CMEdBMVVkRGdRV0JCUWdLRkFoRzZSYVcraFR5NTJkeGVUOGJDOTZIekFmQmdOVkhTTUVHREFXZ0JUUzd1OWFJbzA2YlZ3amx6M3loZFVtOFNWN2tqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQTRHQTFVZER3RUIvd1FFQXdJQmhqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFZTXpnTHJKTElyME9vdlFuQVpyUklHdWFiaUhTVUtTbWJMUldwUmtXZUF0c0NoREVIcFhjSi9iZ0ROS1lXb0hxUTh4UlVqQjRDeWVwWWV2YzNZbHJHOG83ekh4cGZWY2FvTDVTZXVKa3pIeEtuNGJUYVNwOStNdndhbW5wNjRrWk1pTmJGTGtuZlA5a1lLb1JIa01XaGVSSjFVc1AxejRTY21rQ2VJTGZzTXM2dnFvdnFqV0NsRnNKcEJjc2x1WUhXRjdiQkoxbjRSd2crQVRFb3BZNElnR3Y2WnZ3YytBOXIrQVQyaHFwb1NrWW9BbCtBTll3Z3NsT2Y5c0plMFYrVEE5WVkvVWxhQm1QUFRkMC8vcjl3dmNlUFdaa1BqS29BQy96VU5oZkRiaDRMVjhHSHMzbHlYMlhvbUwvTE5jOEpZenlJYURFaEdRdmVvUGhoL3RyMWc9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFmQ0FZQUFBQ0dWcytNQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUhZWUFBQjJHQVYyaUU0RUFBQWJOU1VSQlZGaEhwVmQ3VE5WMUZELzNkNTl3ZVFTSWdTOUFRQVhjRkxBUVppOWZwZVZ6MXRZL1dUWnI1V3hwYzdXNWtuTGE1akkzWjg1c3JTMm5NMnNqdFd3WlM3SVVINEg0eENuRVF4NERBWkY3NFY3dXM4ODV2OS9sSW5CdlZKL0I0UHY5bnUvNW51LzVudk01NTZmekEvUXYwSGIvSXJYM1ZGS1BvNDVjbm00aW5VSVdZd0xGUm1aUVV1d2pGRy9OMWlSSGgxRVowTlJWUnVkcXQxQmQrMm5TS3lTL09oeXMwK2xrM2UvM2tROXF2RDRaVXRhNFZWU1V1WTBlaXB5aVRoQWZvY29PUlZnRHV1dzNxS1JpQWQzcmJjRXRqVGpZSW9mNldhSHNDbXpWUFdDTXgrY2doOHRMcVdNS2FNV3NVakxxbzJSdEpJUTBvT3ptZXJwUXU0ZXNaZ3NPTmtHeEg3ZDBrZHZUVDE3czRPTVU3Vkk4WmhqZ0dhTStBcTlpRU51OFBpZjF1ZHowN013dktXZjhHbFZvQ0VZMDRQQzVXZFRhWFlGYlI4dk52TDUrM0tnZmI1eE5NeWE5UmFtSml5bmFNbEdUVnRGbHI2YmE5dStwcW5FWDR1TXVSUmdqU1lFaHJON3V0RkZlNmxxYWw3TmZrdzVpbUFHSHluUHBiazhWbVkweHN0bnB0bEZDVkNZdHpUdUJOODNRcE1MalR0ZXZkUHpTVW5KN2U4bWtqeFozOWZYYktEZmxkWnFidlUrVFVnR25CVkY2ZlEyaVBIZzRXMTZVV1V3dnpiazE2c01aRStQbjBwdno3SlNldUF5ZXM4bGNwQ21hS3VvL3ArcVdyMlVjd0lBSFdydlAwWUV6aFhBdExBYnNzSGhwN2lHYW12eWlqUDhyeXFyWFVXWDlYb293eHlBdWZOQnJwNDNQT0JGWFpsa2Y4TURSaXFjcHlvd0F3cHV6MngrZld2ei9EdGRlOXNtc3p5Z3RjUjZDMXdiZHpCbDZPbHE1V05ZWTRvR2F0aEpNcmtURXgwakFSU0hBVnMrNXJZa1FOWGIrUWdmUExzUTZnWHlJbnNyZVFmbXBtN1JWRllmTDg2bjFmaVVPa1l2U2hrVVB4dmJ1a3pveTZLMWloTTFobzNYelc2RXZTZlhBK2RwaVdHYVdkK2RvWHpMem1Hd0tZRkxDQXNSQWxQQkFoTWxDRlhVN3RCVVZQcjhIZ1ZjSkhXcStGMDBwbHIrRE1UZHJQNHp2eFkxMWtOTWh4VCtTZVRHZytkNFY1TFFKaXR5VUdKTkI4VkZac2pnWUJaTS9JSS9YQ1RrajBxeURPcEYyQVZRMTdDSWpVcC9EblQxVWtMNUY1Z2RqK3NTMXdnMWdFM2dpZ202MGZDWHpTblBYYnlBUGJJWHYrSURwRTE2VGhhSElTOXNreWhsbU1FNUYzY2ZxQUtocTJDMEU1UEgxZ1lhWGFMUERrWkcwSERKT25LV0hwNTFJMHo1U091eDhlMVdBdVp6ZEhRclRrcDhUbWpYb0krbGEwd0dac3p1YnFiTzNpZlE2QS9XN3ZWU1lzVjNtUjBKS3drS2M0V0hpQmttUjhJM0NDZ0k4N29PTDRxelQ1UCtSVUpCZWpFT2dBUEs4aFlQemF0TStlSVRwMklPOXlUUW1lcm9tUFJ4eDFxeEFjc2lsZS91YlNlRWJjV1FHWUVDZ2hjTFkySHlLam9nakgyNWhNcGpwVXYxT3VnbGk0ZWgyZVJ3ME8zMmJKamt5dUNnTnpnMHZ6bFlNU2lTczB1b280TUc3aE1PakNFYVgxeUZFMG5TdmpCenVUbkVwSzg2WjhJb3FGQUl1Ync4a2c5QXJFYVJFV1NaSStqSDRYYnA2ZzlFOUVuSlQzb2FSekROK01VSkJRREhuNTZhOG9VbUVCdXNPeEJzL041K3RKRWJQa0FGRGo4VUd2T3MvSVd2Y1NnbEdCaHZTNy9GVFlmcFdHWWREWThmUEF4V1NBMzVzVEM0cDQrTG00QWFxSW9QZVF0ZnVmSzZKaDBaaHhsYnNVWE9TbVhOaWZENVpUQWt5RG9mYmJjY2x4bkE4V05BcXhDYlJOeWtoWHhRcGFEdzY3ZlhVWWJzaUcwS2h0djJvZUl2aDhyaFFNWU9jRUFxWEcvZUkrem5nT2M1eXhyOHE4MklBTTFjL0ZMRk9wbHF1NWVGUVhyTVp6R2NWQ2pZYkxXRzVJNEJUMWV1UnJsYnh0Tk90TWl0RERFaExYSUl5bkFBdnVPRVdFM1gzTmRBZnQ5NFZnYUc0MlhJUXQwWlg2UGVDRS9xUUZlOXJLNkh4N1lVNTBLdkg3Zlc0ZlMrcTdLS0JKeHNnZ0JYNXBTQUdoMWpJclZoNXpRNnczUmZhYWhCWG0vYUNiQ1pUakNVRlVUeVdacVc5cDYyTWpKUFhWcU9yUGdNTzROdjc0R2tmK293ZnROVkJEUW5qRkpxSFN3MTdwWHZoV1c1S1pxZS9RNDlOL1VTVENBVldvUVhGSUhCSFhYZTNGUHJVRHN1R0RtdEYvaEhLVEhwZWt4aGlBT1BJK1NKcTZTNkhGNEk5WVd6a0JKVG80NmlVTXpXcDhQaXIvUmlkdUx4S1lzU2tzVjh2TGxPUXZoR1gyWWxSME9CaEJqQyt1L2dFY3ZZMEFwSzdZazQxTnhqUFNRbldGSFRGNjZVcmpnZXZCOEN1NWErbDJ2WVNSUHR1VkRvNzNoaGRNU0huVVg3dFRqc1ZaR3hBbC9XcHRpT0lFUTFnbkwyOW1YNi90UjF0bWxrWWo4VzRYK0NTaldjVURHWTFOcFMvQzdoU0txaU1MTS9sMlFtU1daNzNEZHorZ2lvOEJDRU5ZUFE0NnFua3p3WFVicXZCa3hqVVFzV2ZaRmdidW8zckFmK3dON2pPTzkwK3lueDRQaTNMKzBuWUwxU2NoRFVnQVA0Z1BWLzdJZDFxKzFIU2htdUdrSXFXUlBneXhNRnFQOEhmalRualh3WTViUWZiSmN0Nk9JektnTUhvdEYvSGUxZWdzYXhIU3FHNndmZG1RNXg4TnlURkZxQmNwMmlTb3dIUjN5azUrMzZoRjd2WEFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xX1BSRSIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsImxhcmdlQmxvYktleSIsImNyZWRCbG9iIiwibWluUGluTGVuZ3RoIl0sImFhZ3VpZCI6IjRmYzg0ZjE2MjU0NTRlNTNiOGZjN2JmNGQ3MjgyYTEwIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibGFyZ2VCbG9icyI6dHJ1ZSwiZXAiOmZhbHNlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6dHJ1ZSwiYWx3YXlzVXYiOmZhbHNlfSwibWF4TXNnU2l6ZSI6MTUzNiwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0Ijo4LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjEyOCwidHJhbnNwb3J0cyI6WyJuZmMiLCJ1c2IiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotOH0seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTM1fV0sIm1heFNlcmlhbGl6ZWRMYXJnZUJsb2JBcnJheSI6NDA5NiwibWluUElOTGVuZ3RoIjo0LCJmaXJtd2FyZVZlcnNpb24iOjMyOTQ3NiwibWF4Q3JlZEJsb2JMZW5ndGgiOjMyLCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6MSwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjEwMH19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTEwLTE2IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZdWJpS2V5IDUgQ0NOIFNlcmllcyB3aXRoIE5GQyAoRW50ZXJwcmlzZSBQcm9maWxlKSIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjUxMDE2MDAyIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMTAtMTYiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTEwLTI0In0seyJhYWd1aWQiOiI2YWI1NmZhZC04ODFmLTRhNDMtYWNiMi0wYmUwNjU5MjQ1MjIiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjZhYjU2ZmFkLTg4MWYtNGE0My1hY2IyLTBiZTA2NTkyNDUyMiIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IDUgU2VyaWVzIHdpdGggTkZDIChFbnRlcnByaXNlIFByb2ZpbGUpIn0sImRlc2NyaXB0aW9uIjoiWXViaUtleSA1IFNlcmllcyB3aXRoIE5GQyAoRW50ZXJwcmlzZSBQcm9maWxlKSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzYsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfSx7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciLCJzZWNwMzg0cjFfZWNkc2Ffc2hhMzg0X3JhdyIsImVkMjU1MTlfZWRkc2Ffc2hhNTEyX3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRFBqQ0NBaWFnQXdJQkFnSVVYemVpRURKRU9UdDE0RjVuMG82WmYvYkJ3aVV3RFFZSktvWklodmNOQVFFTkJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNWjYvVHhNOHJJVCtFYW9Qdkc4MW9udE1Pby8ybVEyUkJ3SkhTMFFaY3hWYU5YdmwxMkxVaEJaNUxtaUJTY0laZDFSbngxb2Q1ODVoKy9kaEs3aEVtN0pBQUxrS0t0czFmTzUzS0dOTFp1ano1aDN3R25jcjRoeUtGMEc3NGIvVTNLOWhFNW1HTkQ2enFZY2hDUkFIZnJZTVlSREY0WUwwWDRENW5HZHh2cHBBeTZua0VtdFdtTW53TzNpMFRBdWNzcmJFNDg1SHZHTTRyMFZwZ1ZkSnB2Z1FqaVRKQ1RJcStEMzVod3RUOFFESXYrbkd2cGN5aTV3Y0lmQ2t6eUNpbUp1a2hZeTZLb3FOTUtRRWRwTmlTT3ZXeURNVE10MWJ3Q3ZFenB3OTF1K21zVXQ0cmowZWZuTzlzMFpPd2R3TVJEbkg0eGdVbDVaTHdyclBrZkMxLzBDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01COEdBMVVkSXdRWU1CYUFGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFNd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkRRVUFBNElCQVFDM0lXL3NnQjlwWjhhcEpOanh1R29YK0ZrSUxrczB3TU5yZFhML2NvVXZzcmh6c3ZsNm1lUE1yYkdKQnlKMVhucXVCNXNnY1JFTkZ4ZFFGbWEzbWlvOFVwZjFvd00xWnJlWHJKMG1BREcyQnBscWJKbnhpeVlhK1IxMXJlSUZUV2VJaE1OY1pLc0RackZBeVB1RmpDV1NRdkptTldlOW1GUllGZ05oWEpLa1hJYjVIMVhnRURsd2llZFlSTTdWb2xCTmxsZDZwUkZLbFg4dXN0Nk9UTU9lQURsMnhORjBtMUxUaFNkZXVYdkR5QzFnOStJTGZ6M1M2T0lZZ2MzaXJvUmNGRDM1NGc3cktmdTY3cUZBdzlnQzR5aTB4QlRQclk5NXJoNC9IcWFVWUNBL0w4bGRSazZIN1hrMzVEK1dWcG1xMlNoL3hUNUhpRnVoZjR3SmIwYksiLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVIzOG1xMjZTZjJzelZWMkJkRzZXRU43a3VXVXdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFSWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFOWTBXYjlvUG9Sb0tvUXlXUGFKcHoxMXZyV1RnNnpUdG1OajJWb0tSbnl2S0dScXB6YjgzdzVsNllBOTZVWWtZQkRRUDBpbE8yRFBlNndXcVZSNXpEZlJ6ZGNIOGJoK0w3ZEdHdmFlNmhSVFpoa0ZrQ3BYRHM0SGNja25yRGY4RkNsSjdIZTM5SmY0Mi9HMVFtMnp6OVdXbXJQWHRnaUsveDA1R2pzUWZHdURHMXpmNVFUVVVpZThsd3ltSzNUZmRPdk5lZUpBQVBlMnBuN0l0ZlJiK3JWck5XaUR6bFJuMnZObloyd1BvNHdIL1dKNmRoWFpHK3JNV1QrYTZCb2NnMVVmSXc2a2R1bkc0YlRwWnpzdmFjRll5UjBtcGYrRGVPbnBTV0FteXdKV0h2VGxmMllYeEZ5ZVhjVEFDZFFsY01OR0oyVmhaUTQ4eHRQNS9SQlAvOGtDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNoeTQyb2tpcWNUUzFpcWEvSFJXamtCbjRIL01COEdBMVVkSXdRWU1CYUFGT3EzUXBDZURIdGtldHRVZkFPNmZFNmYyS0ZoTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBbitSSElQYnRNRUROZFQxZzhIL1JpdEFrVWRMZ0F0MXRXR1dubGo5a25idjQvNEdsWDdDOXA0NWVmUE85L2FaTDZPVjFYUktCaTZLbXRCVzVLN251WUVuTXgvNUJxQlNiTFQ3cmhkdUM0OVRCZU1iOVBIZFhzVGxTVk5ZZWZyMWRHaWRyNGoweFZCUUxiMXJrbkRBYmRXRHpLZnZuYXlLTzhGcndlN0h4ODQzTUcvckorYzBYcnVVdmJmVlRDSExpSVdoTTdvTkRoTDh4b2I2eFVvOUtMS2NTTCtJdFlzTzMvOVdiOFE5R2pzcUw0RlhzRGNHMVNhWWg3S3BmdU1tT2l4cXpKWk8ybklpY1BZUmcxSTJTdWlVZllPNzB0bWRIY2JsK2tTUW1TWXQ3cnE0dmlJTGcyR3gzajlySVR1V1RqYmFVYVNTUXhnT21NU0h1eXpNQUMiLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVRuYmJHSVIyTkh2enFJS0ZBZVF3RzFYQmlzMHdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFRWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPc1hqM2swNEJhbjRUWWR0WktxRC9PUEp4eUR5YVBtQ0JVRlVpYVpJZ1R0ZVpuajNYMjVEaGdwWlpYc0M0RDB5ZEljcmxBNndOVUluT1JML0w5ekJiVEVJTUFWTUdvNmc3VUtBbWIyTUY2QUhibmhZSmQ5ZWlrdXBWTldTaEhOWU5jNEdCZE8xWU42QWZVcXZKaEhiZTNWNFNOTVBtQlJFS0pQVno3VGh3Z21nZ1RlOFdzMkswL3dzcXYyd1NFN3BiQ0JzVVpoSVg1MWJaTTNwcUR3SlBUbVJGRXZ0MC82dEc1ZU84RjNqMTRPWHFmRWhtam4xVnZ4S0RZUU9MWkF4Q3d3Z0MwUDRDZGZXdjN5OFBTUjhJMzU0aE8xWStHek5qdklxWDM4TktMeXd1SVlIRmVyT3hObHhFTUJ2RmhZQnVSdVlBa2tnVWFQcU42VUJoc0lMcnNDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNDb1JIaGl5Tm5iblhSV0lMNlpCWG9CWDlZVE1COEdBMVVkSXdRWU1CYUFGQ0FvVUNFYnBGcGI2RlBMblozRjVQeHNMM29mTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFDUUZhZkpJMS81V2c5Q0VFaW1FMVJQNTRSZ1F3VE5UT09Rc0xBQ1RlK3JJdGxGUXpDOVpEaHJWODI4eVg3anp5K0FBc3AzaXpLN1QxdGgyZGw3bSt0dTBzdzJQYS9vbGMwMm50NlB5SXczNDhnYUh6aEkxKzBLRTQ1cXh2RkRlTDJsTXhiUGZDWXZ5RUVhWXpqaVFFTFU1OTUxcFhHV3lLTWEvNGZMdE8rWktPWGhNdVZlcTRyWERQSTU0VzZKSE9pQWFpS2Rpdys1ZTNjMmt0L2pGSVF0TTZ2TVhnOUxORnpkakVUTnQyMFZYOVFldlJwRlpmdWNNRzl3Q2FRRG9GbFB6cFRNSktoUGV2L2ltSm1aWWhLZnIwbExjZW10cWpJeExBb3FaZE9ZZkhCZzYrdkFjZFBJL2lhdUdwVUF2N1grVUtObUR3aloyQmFINHNMd2hCMm0iLCJNSUlEU0RDQ0FqQ2dBd0lCQWdJVURxRVJ3KzRSbkdTZ2d4Z1Vld0pGRVBEUlozWXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFESTdYbkgrWnZEd01DUVU4TThaZVY1cXNjdWJsdlZZYWFSdDNZYmF4bjlnb2RMeDVzd0gwbFhyZGdqaDVoN0ZwVmdDZ1lZWDdFNGJsMXZielVMZW1yTVdUOE4zV01HVWU4UUFKYkJlaW9WN1cvRStoVFpQLzBTS0pWYTNld0tCbzZVTGVNbmZRWkRyVk9SQWs4d1RMcTJ2NUxsajV2TWo3SnRPb3RLYTlKN25IUzhrTG16WFhTYWowU3dFUGg1T0FaVVROVjR6czFidm9UQVFRV3JMNC9KOVF1S3Q2V0NGRTVuVU5pUlFjRWJWRjhtbHFLMmJ4Mno2b2tWbHR5RFZMQ3hZYnBVVEVMdlkxdXNSM0RUR1BVb0lDbE9tNGNycHduRFJMVkh2alllUEdCQi8vcEV5enhBL2djU2N4andhSDFaVXc5Ym5TYkh5dXJLcWJUYTFLdmpBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlRxdDBLUW5neDdaSHJiVkh3RHVueE9uOWloWVRBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBcVFhQ1dNeFRHcVZWWDdTazdra0ptVXVlVFNZS3VVNitLQkJTZ3dJUm5sdzlLN0hlMUlweFowaGR3cFBOaWtLam1jeUZnRlB6aEltd0hKZ3h4dVQ5MFB3M3ZZT2RjSkpOa3REZzM1UFhPZnpTbjE1Y0ZBeDFSTzBtUFRtSWI4ZFhpRVdPcHpvWHZkd1hETTQxWmFDRFlNVDd3NElRdE15dkU3eFVCWnEyYmp0QW5xL05EVUE3YmU0SDhIM2lwQysvK05LbFVyY1VoK2o0OEs2N1dJMHUxbTZGZVF1ZUJBN24wNmo4MjVycURxc2FMczlUYjdLQUhBdzhQbXJXYU5QRzJraktlcnhQRWZlY2l2bEZhd3AyUldadnhyVnRuM1RWMlNCeHlDSkNrWHNORDA1ZENFclZIU0pJcytCZHRUVk5ZOUF3dHlQbW55YjB2NG1TVHp2V2R3PT0iLCJNSUlEU0RDQ0FqQ2dBd0lCQWdJVVVjbU1YelJJRk9nR1RLMFRiM2dFdVpZWmtCSXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFEbTU1NWJXWTlXVyt0T1kwcklXSGxkaCthTmFub0NaQ0ZoN0drM1laclFtUFV3MGhrU0c2cVlIUXRQK2ZaeVMzM1ZFcnZnK0JRcW5tdW1nTmhmeEZya3dFWkVMZWlkQmNDOEM0QWc0bnFxaVBXcHpzdkkxN05jeFlsSW5MTkxGY1pZLytnT2lONlpPVGloTzUvdkJaTWJqOXJpYUFjcWxpWW1OR0pQZ1RjTUdhRUF5TXpFTU55Mm5tNkVwK3BqUDVhRjZnaTIxdC9VUUZzdUoxajJSai95bk0vU2RSdCtlY2FsNU9Zb3R4SGtGYkw5dnZ2MkEyT3Y1SVRaQ2x3NGJPUzlucHlwUWltT1o1UUFZeXRtWWFRcFdsL3BNWXo2elNqOFJxa1ZETkVKR3FOZlRLQTJpdkxZd1g2bFN0dE1QYXBnMEo4NGw5WDB2b1ZOL0ZwUzRWQ1ZBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlFnS0ZBaEc2UmFXK2hUeTUyZHhlVDhiQzk2SHpBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBWU16Z0xySkxJcjBPb3ZRbkFaclJJR3VhYmlIU1VLU21iTFJXcFJrV2VBdHNDaERFSHBYY0ovYmdETktZV29IcVE4eFJVakI0Q3llcFlldmMzWWxyRzhvN3pIeHBmVmNhb0w1U2V1Smt6SHhLbjRiVGFTcDkrTXZ3YW1ucDY0a1pNaU5iRkxrbmZQOWtZS29SSGtNV2hlUkoxVXNQMXo0U2Nta0NlSUxmc01zNnZxb3ZxaldDbEZzSnBCY3NsdVlIV0Y3YkJKMW40UndnK0FURW9wWTRJZ0d2Nlp2d2MrQTlyK0FUMmhxcG9Ta1lvQWwrQU5Zd2dzbE9mOXNKZTBWK1RBOVlZL1VsYUJtUFBUZDAvL3I5d3ZjZVBXWmtQaktvQUMvelVOaGZEYmg0TFY4R0hzM2x5WDJYb21ML0xOYzhKWXp5SWFERWhHUXZlb1BoaC90cjFnPT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZkNBWUFBQUNHVnMrTUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFIWVlBQUIyR0FWMmlFNEVBQUFiTlNVUkJWRmhIcFZkN1ROVjFGRC8zZDU5d2VRU0lnUzlBUUFYY0ZMQVFaaTlmcGVWejF0WS9XVFpyNVd4cGM3VzVrbkxhNWpJM1o4NXNyUzJuTTJzanRXd1pTN0lVSDRINHhDbkVReDREQVpGNzRWN3VzODg1djkvbEluQnZWSi9CNFB2OW51LzVudS81bnZNNTU2ZnpBL1F2MEhiL0lyWDNWRktQbzQ1Y25tNGluVUlXWXdMRlJtWlFVdXdqRkcvTjFpUkhoMUVaME5SVlJ1ZHF0MUJkKzJuU0t5Uy9PaHlzMCtsazNlLzNrUTlxdkQ0WlV0YTRWVlNVdVkwZWlweWlUaEFmb2NvT1JWZ0R1dXczcUtSaUFkM3JiY0V0alRqWUlvZjZXYUhzQ216VlBXQ014K2NnaDh0THFXTUthTVdzVWpMcW8yUnRKSVEwb096bWVycFF1NGVzWmdzT05rR3hIN2Qwa2R2VFQxN3M0T01VN1ZJOFpoamdHYU0rQXE5aUVOdThQaWYxdWR6MDdNd3ZLV2Y4R2xWb0NFWTA0UEM1V2RUYVhZRmJSOHZOdkw1KzNLZ2ZiNXhOTXlhOVJhbUppeW5hTWxHVFZ0RmxyNmJhOXUrcHFuRVg0dU11UlJnalNZRWhyTjd1dEZGZTZscWFsN05ma3c1aW1BR0h5blBwYms4Vm1ZMHhzdG5wdGxGQ1ZDWXR6VHVCTjgzUXBNTGpUdGV2ZFB6U1VuSjdlOG1ranhaMzlmWGJLRGZsZFpxYnZVK1RVZ0duQlZGNmZRMmlQSGc0VzE2VVdVd3Z6YmsxNnNNWkUrUG4wcHZ6N0pTZXVBeWVzOGxjcENtYUt1by9wK3FXcjJVY3dJQUhXcnZQMFlFemhYQXRMQWJzc0hocDdpR2FtdnlpalA4cnlxclhVV1g5WG9vd3h5QXVmTkJycDQzUE9CRlhabGtmOE1EUmlxY3B5b3dBd3B1ejJ4K2ZXdnovRHRkZTlzbXN6eWd0Y1I2QzF3YmR6Qmw2T2xxNVdOWVk0b0dhdGhKTXJrVEV4MGpBUlNIQVZzKzVyWWtRTlhiK1FnZlBMc1E2Z1h5SW5zcmVRZm1wbTdSVkZZZkw4Nm4xZmlVT2tZdlNoa1VQeHZidWt6b3k2SzFpaE0xaG8zWHpXNkV2U2ZYQStkcGlXR2FXZCtkb1h6THptR3dLWUZMQ0FzUkFsUEJBaE1sQ0ZYVTd0QlVWUHI4SGdWY0pIV3ErRjAwcGxyK0RNVGRyUDR6dnhZMTFrTk1oeFQrU2VUR2crZDRWNUxRSml0eVVHSk5COFZGWnNqZ1lCWk0vSUkvWENUa2owcXlET3BGMkFWUTE3Q0lqVXAvRG5UMVVrTDVGNWdkaitzUzF3ZzFnRTNnaWdtNjBmQ1h6U25QWGJ5QVBiSVh2K0lEcEUxNlRoYUhJUzlza3lobG1NRTVGM2NmcUFLaHEyQzBFNVBIMWdZYVhhTFBEa1pHMEhESk9uS1dIcDUxSTB6NVNPdXg4ZTFXQXVaemRIUXJUa3A4VG1qWG9JK2xhMHdHWnN6dWJxYk8zaWZRNkEvVzd2VlNZc1YzbVIwSkt3a0tjNFdIaUJrbVI4STNDQ2dJODdvT0w0cXpUNVArUlVKQmVqRU9nQVBLOGhZUHphdE0rZUlUcDJJTzl5VFFtZXJvbVBSeHgxcXhBY3NpbGUvdWJTZUViY1dRR1lFQ2doY0xZMkh5S2pvZ2pIMjVoTXBqcFV2MU91Z2xpNGVoMmVSdzBPMzJiSmpreXVDZ056ZzB2emxZTVNpU3MwdW9vNE1HN2hNT2pDRWFYMXlGRTBuU3ZqQnp1VG5FcEs4Nlo4SW9xRkFJdWJ3OGtnOUFyRWFSRVdTWkkrakg0WGJwNmc5RTlFbkpUM29hUnpETitNVUpCUURIbjU2YThvVW1FQnVzT3hCcy9ONSt0SkViUGtBRkRqOFVHdk9zL0lXdmNTZ2xHQmh2UzcvRlRZZnBXR1lkRFk4ZlBBeFdTQTM1c1RDNHA0K0xtNEFhcUlvUGVRdGZ1Zks2SmgwWmh4bGJzVVhPU21YTmlmRDVaVEFreURvZmJiY2NseG5BOFdOQXF4Q2JSTnlraFh4UXBhRHc2N2ZYVVlic2lHMEtodHYyb2VJdmg4cmhRTVlPY0VBcVhHL2VJK3puZ09jNXl4cjhxODJJQU0xYy9GTEZPcGxxdTVlRlFYck1aekdjVkNqWWJMV0c1STRCVDFldVJybGJ4dE5PdE1pdERERWhMWElJeW5BQXZ1T0VXRTNYM05kQWZ0OTRWZ2FHNDJYSVF0MFpYNlBlQ0UvcVFGZTlySzZIeDdZVTUwS3ZIN2ZXNGZTK3E3S0tCSnhzZ2dCWDVwU0FHaDFqSXJWaDV6UTZ3M1JmYWFoQlhtL2FDYkNaVGpDVUZVVHlXWnFXOXA2Mk1qSlBYVnFPclBnTU80TnY3NEdrZitvd2Z0TlZCRFFuakZKcUhTdzE3cFh2aFdXNUtacWUvUTQ5Ti9VU1RDQVZXb1FYRklIQkhYWGUzRlByVURzdUdEbXRGL2hIS1RIcGVreGhpQU9QSStTSnE2UzZIRjRJOVlXemtCSlRvNDZpVU16V3A4UGlyL1JpZHVMeEtZc1Nrc1Y4dkxsT1F2aEdYMllsUjBPQmhCakMrdS9nRWN2WTBBcEs3WWs0MU54alBTUW5XRkhURjY2VXJqZ2V2QjhDdTVhK2wydllTUlB0dVZEbzczaGhkTVNIblVYN3RUanNWWkd4QWwvV3B0aU9JRVExZ25MMjltWDYvdFIxdG1sa1lqOFc0WCtDU2pXY1VER1kxTnBTL0M3aFNLcWlNTE0vbDJRbVNXWjczRGR6K2dpbzhCQ0VOWVBRNDZxbmt6d1hVYnF2Qmt4alVRc1dmWkZnYnVvM3JBZit3TjdqT085MCt5bng0UGkzTCswbllMMVNjaERVZ0FQNGdQVi83SWQxcSsxSFNobXVHa0lxV1JQZ3l4TUZxUDhIZmpUbmpYd1k1YlFmYkpjdDZPSXpLZ01Ib3RGL0hlMWVnc2F4SFNxRzZ3ZmRtUTV4OE55VEZGcUJjcDJpU293SFIzeWs1KzM2aEY3dlhBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMV9QUkUiLCJGSURPXzJfMSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJsYXJnZUJsb2JLZXkiLCJjcmVkQmxvYiIsIm1pblBpbkxlbmd0aCJdLCJhYWd1aWQiOiI2YWI1NmZhZDg4MWY0YTQzYWNiMjBiZTA2NTkyNDUyMiIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImxhcmdlQmxvYnMiOnRydWUsImVwIjpmYWxzZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOnRydWUsImFsd2F5c1V2IjpmYWxzZX0sIm1heE1zZ1NpemUiOjE1MzYsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6OCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoxMjgsInRyYW5zcG9ydHMiOlsibmZjIiwidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN30seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTh9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi0zNX1dLCJtYXhTZXJpYWxpemVkTGFyZ2VCbG9iQXJyYXkiOjQwOTYsIm1pblBJTkxlbmd0aCI6NCwiZmlybXdhcmVWZXJzaW9uIjozMjk0NzYsIm1heENyZWRCbG9iTGVuZ3RoIjozMiwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjEsInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjoxMDB9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMi0yMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzYsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWXViaUtleSA1IFNlcmllcyB3aXRoIE5GQyAoRW50ZXJwcmlzZSBQcm9maWxlKSIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjQxMjIyMDAyIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMTItMjIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTAxLTEwIn0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiNzdiOTg1OTJlMThmYWZkOTIwMjdhZmI0YWY2ODg4N2Y1MGEyZTNiNyJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyI3N2I5ODU5MmUxOGZhZmQ5MjAyN2FmYjRhZjY4ODg3ZjUwYTJlM2I3Il0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJJREVNSUEgU09MVk8gRmx5IDgwIFIzIEZJRE8gQ2FyZCBlIn0sImRlc2NyaXB0aW9uIjoiSURFTUlBIFNPTFZPIEZseSA4MCBSMyBGSURPIENhcmQgZSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxMTA3NDQ4ODMxLCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjJ9LHsibWFqb3IiOjEsIm1pbm9yIjoxfSx7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUN4RENDQWlXZ0F3SUJBZ0lHQU9yQUFBQUJNQW9HQ0NxR1NNNDlCQU1FTUlHRU1Rc3dDUVlEVlFRR0V3SkdVakVNTUFvR0ExVUVDQXdEU1VSR01STXdFUVlEVlFRSERBcERiM1Z5WW1WMmIybGxNU013SVFZRFZRUUtEQnBKUkVWTlNVRWdVMlZqZFhKbElGUnlZVzV6WVdOMGFXOXVjekV0TUNzR0ExVUVBd3drU1VSRlRVbEJJRk5sWTNWeVpTQlVjbUZ1YzJGamRHbHZibk1nTFNCU2IyOTBJRU5CTUNBWERUSTFNRGd5T0RJeU1EQXdNRm9ZRHpJd05qVXdPREk1TWpFMU9UVTVXakNCaERFTE1Ba0dBMVVFQmhNQ1JsSXhEREFLQmdOVkJBZ01BMGxFUmpFVE1CRUdBMVVFQnd3S1EyOTFjbUpsZG05cFpURWpNQ0VHQTFVRUNnd2FTVVJGVFVsQklGTmxZM1Z5WlNCVWNtRnVjMkZqZEdsdmJuTXhMVEFyQmdOVkJBTU1KRWxFUlUxSlFTQlRaV04xY21VZ1ZISmhibk5oWTNScGIyNXpJQzBnVW05dmRDQkRRVENCbXpBUUJnY3Foa2pPUFFJQkJnVXJnUVFBSXdPQmhnQUVBQ2U4amRTblZUS3R6a2dzQ0tKRnVpcFdMOXVVaXpzUnI2L2lUQ2UrREtybjAyU25wc1BIWnlvNFdaNThwVXU2NlQ2a3ZmQjhhR0E1aTdlcVVKU2doUXRHQUViZmxkU3pHSWJ0V3ZYUGhBakVSZXlmU24zYnhvRUJSZnB0MXhoMmwxR0pXdGdFcTZZSTlTcWtDSVhXQnAxUjN4NmlhYkU5SFczT1lGUUlEcm1KVXVFMG96d3dPakFkQmdOVkhRNEVGZ1FVeitvZEVSd1ZFS000VmYrc1BVUENwelZleVM0d0N3WURWUjBQQkFRREFnRC9NQXdHQTFVZEV3UUZNQU1CQWY4d0NnWUlLb1pJemowRUF3UURnWXdBTUlHSUFrSUJPL2xlamp0cGZhcjBxbDAzU2hHZk1QT1BEVHhIRVpkVXJQU2l3ZEk4a29Ja3F0WGdCL3FibzhSditPQ0IrMHZlQnNzaTZKUDlySEloZXNmWGVSQzVEY0lDUWdHeWNqb3J1S3cxQzhzNFgzamxkV0tCUitEVWM4VFcwaXhFZ0oxV1NybTZKM3VsU3d3NmNGNTF6ZWZCME9BaHZGL2hBNEo4N256M3h1Y0ZMMUticWpJY25RPT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBRElBQUFBeUNBSUFBQUNSWFIvbUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFGaVVBQUJZbEFVbFNKUEFBQUFvclNVUkJWRmhIelZocGNGUFhHZFh5bm1RdFhpWEwrMElhc01IR093WWJFbEpLZ0VrQ0FhWU0wMHliTW1sTEtBTmhuOG5DWmdncDVBL1VoSTR6aE5EU2FXY0tKR3lGTUtHQk5ISHhnbzF0R2JNYmIvSyt5SllsV2N1VDFITjFoVkJrVzlJUFluTEc0em52M2l2ZDg3N3RmbGQ4aDhQQkc0WEdlMTExbFpyZXptSE9adWZ6WFlOUEV3NGV3d3BqRWtLeVp5WEZKeWxjZ3g3d2xuWDg4SGZIRDEwMzZpMFNLU3NRQ240VVRVNWdXeHRuSHpGYUkxVFM5VHQrdm1SbHJtdkNpU2V5QnJYREsrYVVHSFRXNEZBeEJOSEJDWUROWmgvc055WlBpVGo1M3pVOG5wQU91bVIxdHZjdlNpOVd4UVREdG5SaWdtRTJjVWFqdWJSNUd5TVU0NUhLc3M5TzNpK1RpWVhNeEJscE5DeG1UaGJNbnIreEVaem8rR0R0YVNId1REVUJJakhUMjJVNGZ2Z2FPTjlnTU14Ty9EZ3FOb1QvNDRWM3dMRGJIYnJCa2JLMkR3UVhUNmxsOHFDZmdpWkFJT0RiN2J6SzcrOExwOFFzN0d6VFBYTVBQb0hERWE2U0NqbzF1c0RMQVl5TWZNWWZ6Vi84OTN4MEx3RG9vK09INndNQnhIUnBoZ1JXQ3hlZ0E3RWxrZ1VWVml4bWVIeVN3cHpWTGdBUUFjNUhMQkFLeWFQRHdTZFM3QTVFTVo2eHhEVENCYWdNWDJXeFlCZGVRS0x3cFQyZHVyUGw2eS9YYjc1UXZXRjRjTVJxc1QyWG9yeXMzb1FSaFVxR2ttMFlObS9ac3hDUFg5L2FyTzB6Y0p3OVBqbjhzbm96MWl4OUk4ZWdON3UreXgvNGVCRVg5UWZUaVBXMWxSbWhFUkx3TlV0UGlJTVltR3A2WGp5ZGZYU3ZGM1ppUmNKdnY3cERSOElVVXFHUVgxbmFWUGJOUXp4dUxKcHY0NGc1NmF4ZkNBSlpDRlAxOXhpTGlwZUJOei9zcXloOUpBNWlyVll1TFRNT0kyMlArcTFXRzEvQVoxaEJRMTJIOHhPOHlkT2lZSzBJaGF4bzQzazY4c2QzWDlMclRKVDdnejBnYStIay91MjZBb0dRdUh2NzIyY1VrVEtRRVlNMXR6QVpSRjJsRVlrWUVCaXNvMlVJQkVqUGpvTldKUGpnZ1BHckwrb3g4cHUxaGZpOE94dDh3Y0ZEYlBrQmlYUUx0M1hmSXZEcTBwWTc5UjJzaU1HZ1BEZ29WRUY4V24yOUZlNERRYlFpemgvZTdnYlBtWldNNEFNSkNaZnMzM1lKQk5oNWFNbmd3QWpsdnVIZmliRDg2czB2VWI1bnk3a0lKVEVWeDlsU002THA0TzJiN2V6akF4NW1VOS9RZ0dUT1RJQTVRV0JDSzJmN1Iwa1orSUpsNlFxbEhNNGxTMzNDanhQdE5qdSs5NjNOYzhDdm5Hdm9hdFBSRm9PejJMTm1KamlYOE83V2R3bFoxL2ZBYkRVVnJTQVNHYXRVeWZCeDhPRFFvRS8yWFhYTzgzWVh2NDRrcGR3SC9NZ2FHalJ0K3hOeEg3Qm53NFV3WnlZQ2NDdE53NVlIQTR6b1NaV0IyV3JMaVN4Z2FtWXNOUXhLRjdMaDRJNHI0UGx6SjAxSmk2TCs5UUZmc2xBU1pUTFI0cFZaNENjL3IwVDFwdWNCL001WmJIQVRlRTFGVTVDRUphdWRRSXkzTmcxUW5wbWY0TjVlSmhlZk9GSktlZEhocGYwOXc1U1BCMSt5dEgzR1BVZElVUUFPN2I0Q1gxQk95bmNRRXhvbUJiK2o3b0lsNkRnRnB1NDNkSUZNejR1RFVla2dzaUZVSWQyMS9pejQ1TFNvM01KSk9ERG8xSmdZVnhiU08zbXlZdmI4NThFLytmQWIyQW0rb0ZNMnpwYVNGa041VFhtTE85NHBVR25yYnJTQlpPUW5vT1M2enh3WTljSS9hd2U2U1dEdFA3b2NoY1BIY1RTdXJJRmVmZEdmbDFKKzRzaDFlVERwWlNtczFpZnhqa0tGbktDY0FpclZsVVNXUkNMQ24zdHJHQ3hNS2QyMWdSaE1HUjB5NzdWcGFKVHAxR2lNTFFzV3hsVnBXazRzK0o1M3ppT3Q4S1YwQ3NCc1ZuNGlTUE9EUHBQSml2cE94eW5nMDlzMW5aUm41c0ZnVDZJYkovZjFxdzliR3Z2QjkvMWxHVzRXNHhsc0RGbFlpVnAxNExOZmd2ZjE2RStmcUpKSVJYUUtjUEFjTnFzOTc0VWs4T3JTWnM5NHA0RHhOQzFhV2hxeUN4SVJESFFjd0x1RksyVGJWcDBFUndqK1llc0x1SkRSS1MrTWFTMEhQcStNQ2dicmFOSFN6b1ZPRURoNGZBRjViMUNEM2dJK0d1Z20wTW1BeUVQRlh2YkFDWVoyaXZMNDVBZ2tPK1ZlR09OYklTSkl5dTVZZXdZOFkwWkMvcHhKWm8rc29STFZsYVNVNXhZbW1ZemU4WUZ6S1RvK1JDb25CcTRxYmZaS0NHVDMvcVBFRDhCSFd5K2ljRkR1aGJGakM2NzU5NzlxQjNwSjFudzBLbXZFRXJicWY4MGdhYmx4NkY2ODdJSHNRd21ndkxhaXpmUGlDWWRPU2xFV09yTzd1T2cvckpnMGpYVEtDMlBMSWtHZ2xPMWNSd3dHYnk1WWtrYWRRb0dkYmxXM1U2NktDYkhaZmlBTGUrY1VrTWlEWE8yQTNuTmp2T2Z1ZzYrRG9KUDllMGtaYnFaMGZEVEdsZ1VnZXNxdU5pTFh3RkdYMFk2NnJjS3lBdlZONGtRZ016L09NOWNBcTVsTHp5WG5Va05OdTVBUnV1TVMrWnRiNE1ydXZac3VTbVVpcnhUMnhMaXlxTUhlKy8xcGNMR0VlV1BOVEtQQjRwNUNxcUlOQkUvTjhKYUY1TXFlU2NwSFhVV2J5Tm53QUhpbC9oNDk0Z0hjb0RPZi91c05GQjA2TlNiR2xRV2dIYmgvcDd1bW9nVjh5OTVGdzFvVE5SaGtNWXdBY1FPT3FQZXNpcWdMU2hWSllRQWREdTNEQUt5Wjk4clV5S2dROEIzcnppaWo1TDd2RUw1a0FSR1JzcUwxNXlqZnNITytic2pWOWNMRk5MeFNNMkk4a3hHQmxUM0xkUURjcW1tbjhZNlh3VjM1d3hKeXZHcWF0TmN1M3FYMXhRZjh5R0lZWVVmYjBOZGZOb0N2MmpoSHhBcHBwV0hRVnoxdVlIQjBvbEJSam5NSk5ZWHlqdFpCZWk2TkdDd3IzcG9oZGRhQzk5LytJa0lsY3dmY2VQQWpDOEFkNXNCMlY5Zjd6czZYZFlQRVlIRGkzVnJYYlNJOUt3NzlKK1VXRTVmdFBDNXJ5eldpSUplcFVIWGYzZjhLT0pLZ29hNWR4UG94RmVCZkZ0N1lPR3c1ZGF3S2ZQbWJPYUdoRXRnR2d6M2R3MVl6VVpNek81RVNLQUJTczBpdTFkMW9GWWxKVU90MTV0VmI1NElBU0NEY2hRSzVtUHFYQllTRVNUNSszMld3WFljWGF3ZEltY1ZKY0xPTStIRjZYZ0x0cSt3Mmh6SmFUc3U2dXFvVmRRUVZIMG13ZWh1UjllMmx1MTBkcnA3Ykx3S1NoWklJRVNVSHlDOVBoZk1teDhhRm95Z2diTlhWSkJsVHBrZGpBZXprdkhlNCtyQjd0N29SbDBQYWtVMjdGOUtSQSs5ZENvc2duV01nQ0VnV2dNUHIyTUh2S2YvMDdKdHdEWFp0cUhFVjFkakVNSmdLYWZqaUwxTG9TRStIRHJVa0xqRnN4ZS95OFBqbDM2cTEvY2JBZnhmaS8zcGhTYmRHNzlYS2pRazA1Z3FWUERvMkJOVzF2cm9kRGdMU1NDVHhteC8yR2cxV0pHblN6eFJvR0ZGUkcrLzJRSVFxSmhobkYvS3V2a3FEeC9GT1FFOVl6TFlaTDhielY3MTZ0TDFwS01EM2dKdGdGUkRVU1d3R1dmUVNnWWloVzhLNWtJc3BXa2dobE5ZTzl3Sy93QmxWTUM5Sm9JeVNlWjIxUGdESElhVHdSd3NQL3ROSDk1YllIby91NGc0bmVDM3dDN3kySWtvbW1Kb1Y1ZGxBUG5QZ21FckxqUlhNWDV4cUdEYkRIYTdoWndxYXpuTVhUaEVrSnNkbXpZcEdvTGxtbmltTWV1dXJ2MG9Wc3pJU3RocE54OUs4ejVTUmNoOE4wQVNBM0FCTWxzc042NlJCd1NqRTl2ajQyTDJmTHVocUgwWVN1WlpNT0pDemZUMkc0bFBMb0FreVVCZjR5T3BGUy9MM0hWdWcweG9SY1JNY1o5aHV4R0ExbXl3bEY1Wm5aS1ZBREI5WEw1eFpLRFc0RjJDK3NiR2x1T2lhdXJ3UEYzYmNRdUhUeDA1OXVzNGxyNDEzaDFWUTlteWNyV0JCM1BydDgxV1JrUUtHendqSlQ5UE9YNnA1RGp0blI5UmprZGxpYm55Z3FmeXVxZm1CVmo5a2hyK2RwbnVxOW5NV1BaVEFrSER4ODFPVk0rYytsNUFZdzRwWWROaXNtTUZWaXNmai94L3hxT2NQUmRTdmF3QUFBQUJKUlU1RXJrSmdnZz09In0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDgtMjciLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MTEwNzQ0ODgzMSwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJJREVNSUEgU09MVk8gRmx5IDgwIFIzIEZJRE8gQ2FyZCBlIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVMkYxMDAwMjAyNTA4MjcwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wOC0yNyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxMTA3NDQ4ODMxfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTA5LTExIn0seyJhYWd1aWQiOiI1MDRkNzE0OS00ZTRjLTM4NDEtNDU1NS01NTQ0NWE2NzczNTciLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjUwNGQ3MTQ5LTRlNGMtMzg0MS00NTU1LTU1NDQ1YTY3NzM1NyIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJXaVNFQ1VSRSBBdXRoVHJvbiBVU0IgRklETzIgQXV0aGVudGljYXRvciJ9LCJkZXNjcmlwdGlvbiI6IldpU0VDVVJFIEF1dGhUcm9uIFVTQiBGSURPMiBBdXRoZW50aWNhdG9yIiwiYWx0ZXJuYXRpdmVEZXNjcmlwdGlvbnMiOnsiemgtVFciOiJXaVNFQ1VSRSBBdXRoVHJvbiBVU0IgRklETzIg6Lqr5Lu96amX6K2J5ZmoIn0sImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsiZWQyNTUxOV9lZGRzYV9zaGE1MTJfcmF3Iiwic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlEUmpDQ0F1MmdBd0lCQWdJVVpQaFNEdHhJNWxnMnFneSs3SUdESmhHcVBPZ3dDZ1lJS29aSXpqMEVBd0l3Z1ljeEN6QUpCZ05WQkFZVEFsUlhNUTh3RFFZRFZRUUlEQVpVWVdsd1pXa3hFakFRQmdOVkJBY01DVk52YldWM2FHVnlaVEVXTUJRR0ExVUVDZ3dOVjJsVFJVTlZVa1VnU1c1akxqRWdNQjRHQ1NxR1NJYjNEUUVKQVJZUllXUnRhVzVBWlhoaGJYQnNaUzV2Y21jeEdUQVhCZ05WQkFNTUVGZHBVMFZEVlZKRklGSnZiM1FnUTBFd0hoY05NakV3TVRJNE1EZ3lOekl3V2hjTk16RXdNVEkyTURneU56SXdXakNCaHpFTE1Ba0dBMVVFQmhNQ1ZGY3hEekFOQmdOVkJBZ01CbFJoYVhCbGFURVNNQkFHQTFVRUJ3d0pVMjl0Wlhkb1pYSmxNUll3RkFZRFZRUUtEQTFYYVZORlExVlNSU0JKYm1NdU1TQXdIZ1lKS29aSWh2Y05BUWtCRmhGaFpHMXBia0JsZUdGdGNHeGxMbTl5WnpFWk1CY0dBMVVFQXd3UVYybFRSVU5WVWtVZ1VtOXZkQ0JEUVRCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQkJpV3ZGYWYvSWhGTU9XTnFsd2VxcjRHZk8wbXUvMUIxOEowM09HK3BTbHRSaXg5R2pSb2pCeWE0TEFSeVhNUDhudzJYaDlQdndPQm05UWVkTUM2NlhHamdnRXpNSUlCTHpBZEJnTlZIUTRFRmdRVWQrWXZqNkkzWThjS0gzUVJOTGxDOC9PcDk3Y3dnY2NHQTFVZEl3U0J2ekNCdklBVWQrWXZqNkkzWThjS0gzUVJOTGxDOC9PcDk3ZWhnWTJrZ1lvd2dZY3hDekFKQmdOVkJBWVRBbFJYTVE4d0RRWURWUVFJREFaVVlXbHdaV2t4RWpBUUJnTlZCQWNNQ1ZOdmJXVjNhR1Z5WlRFV01CUUdBMVVFQ2d3TlYybFRSVU5WVWtVZ1NXNWpMakVnTUI0R0NTcUdTSWIzRFFFSkFSWVJZV1J0YVc1QVpYaGhiWEJzWlM1dmNtY3hHVEFYQmdOVkJBTU1FRmRwVTBWRFZWSkZJRkp2YjNRZ1EwR0NGR1Q0VWc3Y1NPWllOcW9NdnV5Qmd5WVJxanpvTUF3R0ExVWRFd0VCL3dRQ01BQXdOZ1lEVlIwZkJDOHdMVEFyb0NtZ0o0WWxhSFIwY0RvdkwzZDNkeTVsZUdGdGNHeGxMbTl5Wnk5bGVHRnRjR3hsWDJOaExtTnliREFLQmdncWhrak9QUVFEQWdOSEFEQkVBaUJmM3A4TEozUGxmTXN4VHpXZ2pIYWFsNnV6SW81dHgzbytFVXliZERZNG9nSWdWNm5SMU1VRTF3S3oxdUM3L2tFTmcvRnBKT2V0RmFKZVBjZ29uZUV3c0tBPSIsIk1JSUNNekNDQWRtZ0F3SUJBZ0lVYmFyVjhQcUM5SW5rMWRrb0RYdU81emhQODJnd0NnWUlLb1pJemowRUF3SXdlREVMTUFrR0ExVUVCaE1DVkZjeEtqQW9CZ05WQkFvTUlWZHBVMFZEVlZKRklGUmxZMmh1YjJ4dloybGxjeUJEYjNKd2IzSmhkR2x2YmpFaU1DQUdBMVVFQ3d3WlFYVjBhR1Z1ZEdsallYUnZjaUJCZEhSbGMzUmhkR2x2YmpFWk1CY0dBMVVFQXd3UVYybFRSVU5WVWtVZ1VtOXZkQ0JEUVRBZ0Z3MHlNakF6TWpNd05EQXlOVGRhR0E4eU1EVXlNRE14TlRBME1ESTFOMW93ZURFTE1Ba0dBMVVFQmhNQ1ZGY3hLakFvQmdOVkJBb01JVmRwVTBWRFZWSkZJRlJsWTJodWIyeHZaMmxsY3lCRGIzSndiM0poZEdsdmJqRWlNQ0FHQTFVRUN3d1pRWFYwYUdWdWRHbGpZWFJ2Y2lCQmRIUmxjM1JoZEdsdmJqRVpNQmNHQTFVRUF3d1FWMmxUUlVOVlVrVWdVbTl2ZENCRFFUQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJQTldMS0FHT1VmUnBCT0hFZmpkTHJXUDZzSGtGVEVQT3hVZE96dTUrU1ZBUjRLcU5vdHZ3bHQ4WlRMRnk2dENWLzlDcTFmUUVKY2JscEFHM00yditwYWpQekE5TUIwR0ExVWREZ1FXQkJSTXJwei9Vb29tRXhGSVNoNmFLWlFHMjdKYmpqQU1CZ05WSFJNRUJUQURBUUgvTUE0R0ExVWREd0VCL3dRRUF3SUJCakFLQmdncWhrak9QUVFEQWdOSUFEQkZBaUFlSUhFaXJDVkN1T3lhNmgvcmFINE9aWmJxdTk0MzRaVUdZQkdRdGdEVG5RSWhBT3lsQTN6NktDd0dMbmJGQndpS0R3amNoMGpFdXpOZ3ZkaEx0eWhuRW1SSiIsIk1JSURFakNDQXJlZ0F3SUJBZ0lVTEtMQlNWd0RxOWl0M3ArMHl2eUNQazJGRkxvd0NnWUlLb1pJemowRUF3SXdkakVMTUFrR0ExVUVCaE1DVkZjeER6QU5CZ05WQkFnTUJsUmhhWEJsYVRFUE1BMEdBMVVFQnd3R1ZHRnBkMkZ1TVNvd0tBWURWUVFLRENGWGFWTkZRMVZTUlNCVVpXTm9ibTlzYjJkcFpYTWdRMjl5Y0c5eVlYUnBiMjR4R1RBWEJnTlZCQU1NRUZkcFUwVkRWVkpGSUZKdmIzUWdRMEV3SUJjTk1qRXdOREEzTVRFeE5qQTBXaGdQTWpBM01UQXpNall4TVRFMk1EUmFNSFl4Q3pBSkJnTlZCQVlUQWxSWE1ROHdEUVlEVlFRSURBWlVZV2x3WldreER6QU5CZ05WQkFjTUJsUmhhWGRoYmpFcU1DZ0dBMVVFQ2d3aFYybFRSVU5WVWtVZ1ZHVmphRzV2Ykc5bmFXVnpJRU52Y25CdmNtRjBhVzl1TVJrd0Z3WURWUVFEREJCWGFWTkZRMVZTUlNCU2IyOTBJRU5CTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFRUhVZXdQcFdieFFyS0I3emxJbUd0U0YwMW1LSEpRMmY0YWlKdlVVSnRDZ20rTE1KSG1CYzBJTWVGVk0wSGJOTXNwWHVjVVE5M2ZjS2pCeTE4dkVBZ3FPQ0FSOHdnZ0ViTUIwR0ExVWREZ1FXQkJUSHd6Y0ozWG9SYzM3M1k3TlhJc2EySWVwa2V6Q0Jzd1lEVlIwakJJR3JNSUdvZ0JUSHd6Y0ozWG9SYzM3M1k3TlhJc2EySWVwa2U2RjZwSGd3ZGpFTE1Ba0dBMVVFQmhNQ1ZGY3hEekFOQmdOVkJBZ01CbFJoYVhCbGFURVBNQTBHQTFVRUJ3d0dWR0ZwZDJGdU1Tb3dLQVlEVlFRS0RDRlhhVk5GUTFWU1JTQlVaV05vYm05c2IyZHBaWE1nUTI5eWNHOXlZWFJwYjI0eEdUQVhCZ05WQkFNTUVGZHBVMFZEVlZKRklGSnZiM1FnUTBHQ0ZDeWl3VWxjQTZ2WXJkNmZ0TXI4Z2o1TmhSUzZNQXdHQTFVZEV3RUIvd1FDTUFBd05nWURWUjBmQkM4d0xUQXJvQ21nSjRZbGFIUjBjRG92TDNkM2R5NWxlR0Z0Y0d4bExtOXlaeTlsZUdGdGNHeGxYMk5oTG1OeWJEQUtCZ2dxaGtqT1BRUURBZ05KQURCR0FpRUF2eEMrRnJwR0lITDdXcDl1NWQ1UHR5RWFPeFNaTVplVU5jYzd2azIzUmE4Q0lRRHViT3k1S0Nua3lWZkhyK09yUGZOKzhJc0RqVGk3ckdTV1dpaDlCMlkvWlE9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFnQ0FJQUFBRDhHTzJqQUFBQUNYQklXWE1BQUM0akFBQXVJd0Y0cFQ5MkFBQUtUMmxEUTFCUWFHOTBiM05vYjNBZ1NVTkRJSEJ5YjJacGJHVUFBSGphblZOblZGUHBGajMzM3ZSQ1M0aUFsRXR2VWhVSUlGSkNpNEFVa1NZcUlRa1FTb2dob2RrVlVjRVJSVVVFRzhpZ2lBT09qb0NNRlZFc0RJb0syQWZrSWFLT2c2T0lpc3I3NFh1amE5YTg5K2JOL3JYWFB1ZXM4NTJ6endmQUNBeVdTRE5STllBTXFVSWVFZUNEeDhURzRlUXVRSUVLSkhBQUVBaXpaQ0Z6L1NNQkFQaCtQRHdySXNBSHZnQUJlTk1MQ0FEQVRadkFNQnlIL3cvcVFwbGNBWUNFQWNCMGtUaExDSUFVQUVCNmprS21BRUJHQVlDZG1DWlRBS0FFQUdETFkyTGpBRkF0QUdBbmYrYlRBSUNkK0psN0FRQmJsQ0VWQWFDUkFDQVRaWWhFQUdnN0FLelBWb3BGQUZnd0FCUm1TOFE1QU5ndEFEQkpWMlpJQUxDM0FNRE9FQXV5QUFnTUFEQlJpSVVwQUFSN0FHRElJeU40QUlTWkFCUkc4bGM4OFN1dUVPY3FBQUI0bWJJOHVTUTVSWUZiQ0MxeEIxZFhMaDRvemtrWEt4UTJZUUpobWtBdXdubVpHVEtCTkEvZzg4d0FBS0NSRlJIZ2cvUDllTTRPcnM3T05vNjJEbDh0NnI4Ry95SmlZdVArNWMrcmNFQUFBT0YwZnRIK0xDK3pHb0E3Qm9CdC9xSWw3Z1JvWGd1Z2RmZUxacklQUUxVQW9PbmFWL053K0g0OFBFV2hrTG5aMmVYazVOaEt4RUpiWWNwWGZmNW53bC9BVi8xcytYNDgvUGYxNEw3aUpJRXlYWUZIQlBqZ3dzejBUS1VjejVJSmhHTGM1bzlIL0xjTC8vd2QweUxFU1dLNVdDb1U0MUVTY1k1RW1venpNcVVpaVVLU0tjVWwwdjlrNHQ4cyt3TSszelVBc0dvK0FYdVJMYWhkWXdQMlN5Y1FXSFRBNHZjQUFQSzdiOEhVS0FnRGdHaUQ0YzkzLys4Ly9VZWdKUUNBWmttU2NRQUFYa1FrTGxUS3N6L0hDQUFBUktDQktyQkJHL1RCR0N6QUJoekJCZHpCQy94Z05vUkNKTVRDUWhCQ0NtU0FISEpnS2F5Q1FpaUd6YkFkS21BdjFFQWROTUJSYUlhVGNBNHV3bFc0RGoxd0QvcGhDSjdCS0x5QkNRUkJ5QWdUWVNIYWlBRmlpbGdqamdnWG1ZWDRJY0ZJQkJLTEpDREppQlJSSWt1Uk5VZ3hVb3BVSUZWSUhmSTljZ0k1aDF4R3VwRTd5QUF5Z3Z5R3ZFY3hsSUd5VVQzVURMVkR1YWczR29SR29ndlFaSFF4bW84V29KdlFjclFhUFl3Mm9lZlFxMmdQMm84K1E4Y3d3T2dZQnpQRWJEQXV4c05Dc1Rnc0NaTmp5N0VpckF5cnhocXdWcXdEdTRuMVk4K3hkd1FTZ1VYQUNUWUVkMElnWVI1QlNGaE1XRTdZU0tnZ0hDUTBFZG9KTndrRGhGSENKeUtUcUV1MEpyb1IrY1FZWWpJeGgxaElMQ1BXRW84VEx4QjdpRVBFTnlRU2lVTXlKN21RQWtteHBGVFNFdEpHMG01U0kra3NxWnMwU0Jvams4bmFaR3V5QnptVUxDQXJ5SVhrbmVURDVEUGtHK1FoOGxzS25XSkFjYVQ0VStJb1VzcHFTaG5sRU9VMDVRWmxtREpCVmFPYVV0Mm9vVlFSTlk5YVFxMmh0bEt2VVllb0V6UjFtam5OZ3haSlM2V3RvcFhUR21nWGFQZHByK2gwdWhIZGxSNU9sOUJYMHN2cFIraVg2QVAwZHd3TmhoV0R4NGhuS0JtYkdBY1laeGwzR0srWVRLWVowNHNaeDFRd056SHJtT2VaRDVsdlZWZ3F0aXA4RlpIS0NwVktsU2FWR3lvdlZLbXFwcXJlcWd0VjgxWExWSStwWGxOOXJrWlZNMVBqcVFuVWxxdFZxcDFRNjFNYlUyZXBPNmlIcW1lb2IxUS9wSDVaL1lrR1djTk13MDlEcEZHZ3NWL2p2TVlnQzJNWnMzZ3NJV3NOcTRaMWdUWEVKckhOMlh4MktydVkvUjI3aXoycXFhRTVRek5LTTFlelV2T1VaajhINDVoeCtKeDBUZ25uS0tlWDgzNkszaFR2S2VJcEc2WTBUTGt4WlZ4cnFwYVhsbGlyU0t0UnEwZnJ2VGF1N2FlZHByMUZ1MW43Z1E1Qngwb25YQ2RIWjQvT0JaM25VOWxUM2FjS3B4Wk5QVHIxcmk2cWE2VWJvYnRFZDc5dXArNllucjVlZ0o1TWI2ZmVlYjNuK2h4OUwvMVUvVzM2cC9WSERGZ0dzd3drQnRzTXpoZzh4VFZ4Ynp3ZEw4ZmI4VkZEWGNOQVE2VmhsV0dYNFlTUnVkRThvOVZHalVZUGpHbkdYT01rNDIzR2JjYWpKZ1ltSVNaTFRlcE43cHBTVGJtbUthWTdURHRNeDgzTXphTE4xcGsxbXoweDF6TG5tK2ViMTV2ZnQyQmFlRm9zdHFpMnVHVkpzdVJhcGxudXRyeHVoVm81V2FWWVZWcGRzMGF0bmEwbDFydXR1NmNScDdsT2swNnJudFpudzdEeHRzbTJxYmNac09YWUJ0dXV0bTIyZldGblloZG50OFd1dys2VHZaTjl1bjJOL1QwSERZZlpEcXNkV2gxK2M3UnlGRHBXT3Q2YXpwenVQMzNGOUpicEwyZFl6eERQMkRQanRoUExLY1JwblZPYjAwZG5GMmU1YzRQemlJdUpTNExMTHBjK0xwc2J4dDNJdmVSS2RQVnhYZUY2MHZXZG03T2J3dTJvMjYvdU51NXA3b2Zjbjh3MG55bWVXVE56ME1QSVErQlI1ZEUvQzUrVk1HdmZySDVQUTArQlo3WG5JeTlqTDVGWHJkZXd0NlYzcXZkaDd4Yys5ajV5bitNKzR6dzMzakxlV1YvTU44QzN5TGZMVDhOdm5sK0YzME4vSS85ay8zci8wUUNuZ0NVQlp3T0pnVUdCV3dMNytIcDhJYitPUHpyYlpmYXkyZTFCaktDNVFSVkJqNEt0Z3VYQnJTRm95T3lRclNIMzU1ak9rYzVwRG9WUWZ1alcwQWRoNW1HTHczNE1KNFdIaFZlR1A0NXdpRmdhMFRHWE5YZlIzRU56MzBUNlJKWkUzcHRuTVU4NXJ5MUtOU28rcWk1cVBObzN1alM2UDhZdVpsbk0xVmlkV0Vsc1N4dzVMaXF1Tm01c3Z0Lzg3Zk9INHAzaUMrTjdGNWd2eUYxd2VhSE93dlNGcHhhcExoSXNPcFpBVEloT09KVHdRUkFxcUJhTUpmSVRkeVdPQ25uQ0hjSm5JaS9STnRHSTJFTmNLaDVPOGtncVRYcVM3Skc4Tlhra3hUT2xMT1c1aENlcGtMeE1EVXpkbXpxZUZwcDJJRzB5UFRxOU1ZT1NrWkJ4UXFvaFRaTzJaK3BuNW1aMnk2eGxoYkwreFc2THR5OGVsUWZKYTdPUXJBVlpMUXEyUXFib1ZGb28xeW9Ic21kbFYyYS96WW5LT1phcm5pdk43Y3l6eXR1UU41enZuLy90RXNJUzRaSzJwWVpMVnkwZFdPYTlyR281c2p4eGVkc0s0eFVGSzRaV0Jxdzh1SXEyS20zVlQ2dnRWNWV1ZnIwbWVrMXJnVjdCeW9MQnRRRnI2d3RWQ3VXRmZldmMxKzFkVDFndldkKzFZZnFHblJzK0ZZbUtyaFRiRjVjVmY5Z28zSGpsRzRkdnlyK1ozSlMwcWF2RXVXVFBadEptNmViZUxaNWJEcGFxbCthWERtNE4yZHEwRGQ5V3RPMzE5a1hiTDVmTktOdTdnN1pEdWFPL1BMaThaYWZKenMwN1AxU2tWUFJVK2xRMjd0TGR0V0hYK0c3UjdodDd2UFkwN05YYlc3ejMvVDdKdnR0VkFWVk4xV2JWWmZ0Sis3UDNQNjZKcXVuNGx2dHRYYTFPYlhIdHh3UFNBLzBISXc2MjE3blUxUjNTUFZSU2o5WXI2MGNPeHgrKy9wM3ZkeTBOTmcxVmpaekc0aU53UkhuazZmY0ozL2NlRFRyYWRveDdyT0VIMHg5MkhXY2RMMnBDbXZLYVJwdFRtdnRiWWx1NlQ4dyswZGJxM25yOFI5c2ZENXcwUEZsNVN2TlV5V25hNllMVGsyZnl6NHlkbFoxOWZpNzUzR0Rib3JaNzUyUE8zMm9QYisrNkVIVGgwa1gvaStjN3ZEdk9YUEs0ZFBLeTIrVVRWN2hYbXE4NlgyM3FkT284L3BQVFQ4ZTduTHVhcnJsY2E3bnVlcjIxZTJiMzZSdWVOODdkOUwxNThSYi8xdFdlT1QzZHZmTjZiL2ZGOS9YZkZ0MStjaWY5enN1NzJYY243cTI4VDd4ZjlFRHRRZGxEM1lmVlAxdiszTmp2M0g5cXdIZWc4OUhjUi9jR2hZUFAvcEgxanc5REJZK1pqOHVHRFlicm5qZytPVG5pUDNMOTZmeW5RODlrenlhZUYvNmkvc3V1RnhZdmZ2alY2OWZPMFpqUm9aZnlsNU8vYlh5bC9lckE2eG12MjhiQ3hoNit5WGd6TVY3MFZ2dnR3WGZjZHgzdm85OFBUK1I4SUg4by8yajVzZlZUMEtmN2t4bVRrLzhFQTVqei9HTXpMZHNBQUFBZ1kwaFNUUUFBZWlVQUFJQ0RBQUQ1L3dBQWdPa0FBSFV3QUFEcVlBQUFPcGdBQUJkdmtsL0ZSZ0FBQXRoSlJFRlVlTnJzbHQ5TGsxRVl4Ny92TnRlMHZYT2s3eVM3cXlXQll2bmpJa3RHVTB2REN3a3RWNEtYcHYzd0IvNEJCaUlhL1FDMXdqa1ZVeE5zVXV1dXpkMWs2aUJMQ3hJRnpjRFhPVFp3WThyMnNyMXJwNHVYWnVvZ2dyeUpmUzhlZUw2YzUzdzQ1K0U1SElvUWdvT1VDQWVzR0NBR2lBRUF5WDZMWmRuMTlYV0dZZFJxOVQ4Z2tOMXFhMjBWRGxWWmNaVVFZcHVaS1MwdEhUY2E5eXd6Nkh1cnE2cy96czZTUDJrWHdHSTJBempLcUhRNjNmdDNrNFNRcG9ZR0FNV0ZSWHZLTG1vTEFBd09EUHdkb0xkSEQyQmthT2gzODQzSjVISzU5cFRWMWR3RThHcDhmUCtPUzR0TDVyZm1INkdRa083MG9MdXpjMmp3dVNvcDJkQnJPQ3luazVLTzlQWDNaMlprTUNrcHF5dmZHSVlCY0wrOXcycWRLQ29xQ2dRQ0FIaWVGMm9mUDN4a01yMVcwSXJhdWxwdFFZSFA3d05GN2UyQk5sOERJTzM0Q1FBTmQrdTd1N29BU0VBQnFLdXBKWVJVNmE0RG9HWHhxYW9VcFp3V0E5YUpDVUpJNFFVdGdGUHFrd25TUXdENjlQcm9WeFFNQnR2YjJpaUtldERSd2ZOOEtCVGlPTzdaazZjQStub05MTXNDeU1vOHpmbjlITWZsbk1rQ3NMUzRPRDAxRFVCMzlSb2h4T2wweWhNUzRpaVIzVzZQYkxzekIzRnhjYlJDUVFoUkpDWktKQkt4V0N5VHllUnlHb0JVS3YweS94bUFUbGNwaTQrWHlXUWFqUWFBeitlYm1wd0VVRjVSRGtDbFVoVnFDM2dTbnArYml6NEhuTjhQd08vM1I1eEFnTXZOems1bWtrV1VDTURxNm5mQmR6ZzJCREN0VUFCd09sMi9mSWRBaWc0SUJvT1JLSWpuZVFWTmIzbTNpaStYaUVIcCt3enBHZWx1dC91bDBRZ2dFQWlVWFNtN2RlZjJ2WmFXdExTMGhZV3ZIK1krNVovTnk4bk5qZjVVU0NTU1NJdzQ0WERZNGRoUUtwWER3OE5paXFwdmJCd2RlVkYxb3dvQXU3YVdtbnJNMEtQZjN0NitWRkxjMU54OFB1L2M2TmlZU0NTS1Bza2V0MmQ1ZWRuajhVUWNyOWRyWDdlNzNadEN5ckpyVnFzMUhBNFRRcFpYVnJ4ZXIrQzdOOTBXaThWbXMrMGZDeXIycTRnQllvRC9BUEJ6QUk2Vk5xR1FQVXFuQUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIl0sImV4dGVuc2lvbnMiOlsiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiNTA0ZDcxNDk0ZTRjMzg0MTQ1NTU1NTQ0NWE2NzczNTciLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjp0cnVlLCJ1cCI6dHJ1ZX0sIm1heE1zZ1NpemUiOjEyMDAsInBpblV2QXV0aFByb3RvY29scyI6WzFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjI1LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjEyOCwidHJhbnNwb3J0cyI6WyJ1c2IiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotOH1dLCJmaXJtd2FyZVZlcnNpb24iOjJ9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMS0xMS0xMSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IkF1dGhUcm9uIFVTQiBLZXkgRklETzIiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDIxMDQyMTAwMiIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4zIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjMifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjEtMTEtMTEiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MX1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMS0xMS0xMSJ9LHsiYWFndWlkIjoiMmMyYWVlZDgtODE3NC00MTU5LTgxNGItNDg2ZTkyYTI2MWQwIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiIyYzJhZWVkOC04MTc0LTQxNTktODE0Yi00ODZlOTJhMjYxZDAiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiTkVPV0FWRSBXSU5LRU8gVjIuMCJ9LCJkZXNjcmlwdGlvbiI6Ik5FT1dBVkUgV0lOS0VPIFYyLjAiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzM2MTk5NzYsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfSx7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwiaXNLZXlSZXN0cmljdGVkIjp0cnVlLCJpc0ZyZXNoVXNlclZlcmlmaWNhdGlvblJlcXVpcmVkIjp0cnVlLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJzb2Z0d2FyZSJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlCM2pDQ0FZV2dBd0lCQWdJVUt5VURHcmhSUWJVM3JtbGwrcmUxdFliUnM5NHdDZ1lJS29aSXpqMEVBd0l3UERFTE1Ba0dBMVVFQmhNQ1EwZ3hFREFPQmdOVkJBb01CMWRKVTJWTFpYa3hHekFaQmdOVkJBTU1FbE5sWVd4VFVTQkpUMVFnVWs5UFZDQkhRVEFnRncweU5EQTRNRGt4TVRBME1UUmFHQTh5TURZME1EY3pNREV4TURReE0xb3dQREVMTUFrR0ExVUVCaE1DUTBneEVEQU9CZ05WQkFvTUIxZEpVMlZMWlhreEd6QVpCZ05WQkFNTUVsTmxZV3hUVVNCSlQxUWdVazlQVkNCSFFUQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJGeVk2T05EbHVobmozODNNUnc1SmZ3Z01rSnJuVzArSXRsT1RoNDJuREx0ZlprcnpSREZoOUtGRGFPRisyMVoybTlLU05xcjFNS2txak9pUnoyczROaWpZekJoTUE4R0ExVWRFd0VCL3dRRk1BTUJBZjh3SHdZRFZSMGpCQmd3Rm9BVXhUc2ZUS2U1SnRIOXRJVXBQM1IxeWRPV3pJa3dIUVlEVlIwT0JCWUVGTVU3SDB5bnVTYlIvYlNGS1Q5MGRjblRsc3lKTUE0R0ExVWREd0VCL3dRRUF3SUJoakFLQmdncWhrak9QUVFEQWdOSEFEQkVBaUJSSkRINDBpeThhN0xOZ1pmTFVkdXc4YkxEemtUOWkwb0l2VmplVmVMa1VnSWdXNXIzQjg0eDZ0OGNvTENKTG9GTGlwWjc1bitOKzNtOTl6RkxkUmx2SWRNPSIsIk1JSUNkRENDQWhtZ0F3SUJBZ0lVUnBRTFdRcm1HRFNNR2cvbzd4N3gvN29VaVpVd0NnWUlLb1pJemowRUF3SXdQREVMTUFrR0ExVUVCaE1DUTBneEVEQU9CZ05WQkFvTUIxZEpVMlZMWlhreEd6QVpCZ05WQkFNTUVsTmxZV3hUVVNCSlQxUWdVazlQVkNCSFFUQWVGdzB5TkRBNE1Ea3hNVEV3TVRkYUZ3MDBPVEE0TURNeE1URXdNVFphTURveEN6QUpCZ05WQkFZVEFrTklNUkF3RGdZRFZRUUtEQWRYU1ZObFMyVjVNUmt3RndZRFZRUUREQkJUWldGc1UxRWdTVTlVSUVsRFFTQXhNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVCMzRiRTl5UGZRUmNFb0kwWUZCOGVjMENTRTB1am1HZUNSRmRkQkJCVUpKKzYzWnJ1VnVvcndQY29wZDFOVlFaSGZUVmgzZFY0SnA3VjdtU3JINmh2cU9CK2pDQjl6QVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUFNQjhHQTFVZEl3UVlNQmFBRk1VN0gweW51U2JSL2JTRktUOTBkY25UbHN5Sk1FMEdDQ3NHQVFVRkJ3RUJCRUV3UHpBOUJnZ3JCZ0VGQlFjd0FvWXhhSFIwY0RvdkwzQjFZbXhwWXk1M2FYTmxhMlY1TG1OdmJTOWpjblF2YzJWaGJITnhhVzkwY205dmRHZGhMbU5sY2pCQ0JnTlZIUjhFT3pBNU1EZWdOYUF6aGpGb2RIUndPaTh2Y0hWaWJHbGpMbmRwYzJWclpYa3VZMjl0TDJOeWJDOXpaV0ZzYzNGcGIzUnliMjkwWjJFdVkzSnNNQjBHQTFVZERnUVdCQlNvTWFPSzlsbFp5TUxrc3daOE9YeDE4eHpGN0RBT0JnTlZIUThCQWY4RUJBTUNBWVl3Q2dZSUtvWkl6ajBFQXdJRFNRQXdSZ0loQUxzQjZ6QmJVVlh1eWowbjJETXdIZDhGeDFtelAwcFIzbjlTSHhQMmFmUzhBaUVBenphd2J5elkvb2k4aDFCMTRuOWhxQjNuekJlVG5rNmpINVR4WTZlU1Npaz0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZ0NBSUFBQUQ4R08yakFBQUNxVWxFUVZSSXgyUDgvLzgvQXkwQkV3T053YWdGcEZsdzhjS0Zpckl5UjN0N1MxT3owS0RnQmZQbS8vejVrM2l6dm4zOWxwK1RhMnRsdFdUUklvVG9meGhZdFhLbGxwcTZzcndDQWlrb1JJVkh2SDM3OWo5eDROU3BVMEF0UUkxVzVoWndRYWdQenA4N1YxMVppWEF2SXhqOVp6aDU0a1JOWlJXUlB2ajk2eGNET00wek1US2lCOUc4dVhQLy9mc0hORlJBU0xDK3NYSG03Tmx1YnU0UW0zYnQzTGx1N1ZwaUxHQ0VtY3VJYWNHWlU2ZkI0Y1dRWDFBUUd4L243T0l5YWVvVWJWMGRpSXZhbWx1ZVBYdEdVU1QvK2czMkhTT0Rob1lHUklTRmhhV3BwWVdWbFJVbytPSGpoNmI2Qm9vc2dIdnF6NTgvY0RsOWZmM003Q3dJZTgrZTNhdFhycVFnbWVJb2tES3pzL1gxOUVHeS94azZPem9mUDNwRVdVYkRzQVlZUkMzdGJSd2NIRUQyaC9mdjYycHFDUmVPakNUbVpFMHRyWnk4WEFqNzhLRkR5NVl1SmQ1MFZBc1ljZXBLVFU4M05qV0JxT251N0h4dy93RStPLzdqc2dDMzE1bVptUnVibTluWjJZRnF2bnorMGxCZmh6T2cvcU83bFFtL0IrRUFtSHdMaW9vZ0NvNGNPcnhrMFdJaVBVRWdrcEZCVW5LeW1aazVoTjNUMVhYM3poMWlZb0tKY0RUQkE0cUZ1Ym10bFl1YkM4aisrdlZyVFZVMXFIUWh6UWVNQkh5aHJLeGNXRndNVVhuNjFLbjVjK2RTdjhKSlNFeTB0ckdHc0NmMDk5KzZkUXN1eGNMQ0NySDdQNUlyU1lnRGVLRlMzOVRFeDhzSFpILy85cjJ1R2hGUU42NWZoMlZQTm9xcVRDVWxwZUt5VW1neGZQcE1TV0VSTUFNdVg3YXN2N2NYSXFpbHJZWHdGcnhlZy9xT3VHWlNkRXpNM3QxN0RoMDZDUFQwcGswYk4yM2NDSTlGWUtaSno4aEU5OEhmZjM4aEREWTJkaUw5MGRIZHBhdXJpeGF3ckN5c3JlM3R1bnE2aUxUWDBOQUFUb0lzVHg0L3RuZHdpSXlPQXRZRXhGakF6YzN0NCtzTEpMOTkvUW9zRTBWRlJlM3M3UnRibW9HVkZVcWNqVFlkaDc4RkFJaEJMbE5kN2p1MUFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsiY3JlZEJsb2IiLCJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwibGFyZ2VCbG9iS2V5IiwibWluUGluTGVuZ3RoIiwidXZtIl0sImFhZ3VpZCI6IjJjMmFlZWQ4ODE3NDQxNTk4MTRiNDg2ZTkyYTI2MWQwIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6dHJ1ZSwidXAiOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJsYXJnZUJsb2JzIjp0cnVlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOnRydWUsImFsd2F5c1V2IjpmYWxzZX0sIm1heE1zZ1NpemUiOjEyMDAsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6MTYsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTYsInRyYW5zcG9ydHMiOlsidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN31dLCJtYXhTZXJpYWxpemVkTGFyZ2VCbG9iQXJyYXkiOjEwMjQsIm1pblBJTkxlbmd0aCI6NCwiZmlybXdhcmVWZXJzaW9uIjozMzYxOTk3NiwibWF4Q3JlZEJsb2JMZW5ndGgiOjI1NiwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjMyfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMTEtMDQiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzM2MTk5NzYsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiTkVPV0FWRSBXSU5LRU8gVjIuMCIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjUxMTA0MDAyIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25Qcm9maWxlcyI6WyJjb25zdW1lciJdLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTExLTA0IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMzNjE5OTc2fSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMTEtMDQiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzM2MTk5NzZ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMTItMDUifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyIzYmMxMjExYzEyZDk1MmEzMmIwM2M1NWI4OGQzZWE2ZjdkMTUyZjE4IiwiOGRjMmE2ZjI5M2VhNDg0NWJiNzZhNDJjNDJiODk2MDFhYWI1NDdmOCJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyIzYmMxMjExYzEyZDk1MmEzMmIwM2M1NWI4OGQzZWE2ZjdkMTUyZjE4IiwiOGRjMmE2ZjI5M2VhNDg0NWJiNzZhNDJjNDJiODk2MDFhYWI1NDdmOCJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiR29UcnVzdCBJZGVtIEtleSBVMkYgQXV0aGVudGljYXRvciJ9LCJkZXNjcmlwdGlvbiI6IkdvVHJ1c3QgSWRlbSBLZXkgVTJGIEF1dGhlbnRpY2F0b3IiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MiwicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCIsInJlbW90ZV9oYW5kbGUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUJxVENDQVUrZ0F3SUJBZ0lCQVRBS0JnZ3Foa2pPUFFRREFqQTdNU0F3SGdZRFZRUUREQmRIYjFSeWRYTjBJRVpKUkU4eUlGSnZiM1FnUTBFZ01URVhNQlVHQTFVRUNnd09SMjlVY25WemRFbEVJRWx1WXk0d0lCY05NakV3TXpBeU1EWXhPRFE0V2hnUE1qQTFNVEF5TWpNd05qRTRORGhhTURzeElEQWVCZ05WQkFNTUYwZHZWSEoxYzNRZ1JrbEVUeklnVW05dmRDQkRRU0F4TVJjd0ZRWURWUVFLREE1SGIxUnlkWE4wU1VRZ1NXNWpMakJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCSXprTWR0Tlp0MFpPek8rdTFmMkVLWlJTbmZodnl3YmhvbkJGOU5TUHEyV0c3bnVSaS95dlo4bERqd3A1ZGFyUTZPZFpnK0hxYlNTZVhKWHc3VXBjbFNqUWpCQU1BOEdBMVVkRXdRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0VHTUIwR0ExVWREZ1FXQkJSald4VG8xRXEzM1pyeGZMRFdzc2RkYkQvdlpUQUtCZ2dxaGtqT1BRUURBZ05JQURCRkFpQitFMDlHem1jWWxNOTVxVC9hZm5QVTlxNlhKbXhPU0tXQVJPNStrZ1VuV2dJaEFJYTluNXA0MHRjR2ZtZUY2L1d2WW9qQU51eWtRcWhWazhXbmZnMTVTNjlyIiwiTUlJQnp6Q0NBWGFnQXdJQkFnSUNBU0F3Q2dZSUtvWkl6ajBFQXdJd096RWdNQjRHQTFVRUF3d1hSMjlVY25WemRDQkdTVVJQTWlCU2IyOTBJRU5CSURFeEZ6QVZCZ05WQkFvTURrZHZWSEoxYzNSSlJDQkpibU11TUNJWUR6SXdNVGt4TWpBME1EWTFPVFF3V2hnUE1qQTFNVEEwTURjd016QTFNREJhTURzeElEQWVCZ05WQkFNTUYwZHZWSEoxYzNRZ1JrbEVUeklnVW05dmRDQkRRU0F4TVJjd0ZRWURWUVFLREE1SGIxUnlkWE4wU1VRZ1NXNWpMakJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCQTVtallzam93QUkwam5waS8vQ0ozS256aEdiVFVtc3ROV3FONzhpb0cxQ1RLOWdQZ1BsOVVpRk9KTy92K0ZmRksrUHh2MTBjNjA0ZHZsSURBYkt3K2lqWmpCa01CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdFR01CMEdBMVVkRGdRV0JCU2dXdFkwbkVjbVBtR0RMdUN3Y2VLZUpQU2NvekFmQmdOVkhTTUVHREFXZ0JTZ1d0WTBuRWNtUG1HREx1Q3djZUtlSlBTY296QUtCZ2dxaGtqT1BRUURBZ05IQURCRUFpQWtyTE01VjNEbkQwWGNWVUZXK05NRmNCWkNPMUZ4eVl6NFZrUEgzQTdLR1FJZ0hheVRmVTg4b0lFaU1OYXgxM3RnWmFvaGhNQVhFTWpxVHlJdGJjVFQ4UWM9IiwiTUlJQnpUQ0NBWE9nQXdJQkFnSUpBTFMzU2liR0RYVFBNQW9HQ0NxR1NNNDlCQU1DTURzeElEQWVCZ05WQkFNTUYwZHZWSEoxYzNRZ1JrbEVUeklnVW05dmRDQkRRU0F4TVJjd0ZRWURWUVFLREE1SGIxUnlkWE4wU1VRZ1NXNWpMakFlRncweE9URXlNRFF3TmpVNU5EQmFGdzAwT1RFeE1qWXdOalU1TkRCYU1Ec3hJREFlQmdOVkJBTU1GMGR2VkhKMWMzUWdSa2xFVHpJZ1VtOXZkQ0JEUVNBeE1SY3dGUVlEVlFRS0RBNUhiMVJ5ZFhOMFNVUWdTVzVqTGpCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQkE1bWpZc2pvd0FJMGpucGkvL0NKM0tuemhHYlRVbXN0TldxTjc4aW9HMUNUSzlnUGdQbDlVaUZPSk8vditGZkZLK1B4djEwYzYwNGR2bElEQWJLdytpallEQmVNQXdHQTFVZEV3RUIvd1FDTUFBd0RnWURWUjBQQVFIL0JBUURBZ0VHTUIwR0ExVWREZ1FXQkJTZ1d0WTBuRWNtUG1HREx1Q3djZUtlSlBTY296QWZCZ05WSFNNRUdEQVdnQlNnV3RZMG5FY21QbUdETHVDd2NlS2VKUFNjb3pBS0JnZ3Foa2pPUFFRREFnTklBREJGQWlBeG9WczZxajdEWDJ4aXhDampjRFVkeEJUSm1TVExiMGYxclJHd3JBQnpUUUloQVB0MFAzMnF6QWVlcEY0Ly90Z3p4cU5vS2tXRGNhUFBTWHJnK3h6cmxWSHciXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBakNBWUFBQUQxN2doYUFBQUFCR2RCVFVFQUFMR09mUHRSa3dBQUFDQmpTRkpOQUFDSER3QUFqQThBQVAxU0FBQ0JRQUFBZlhrQUFPbUxBQUE4NVFBQUdjeHpQSVYzQUFBS0wybERRMUJKUTBNZ1VISnZabWxzWlFBQVNNZWRsbmRVVk5jV2g4KzlkM3FoelREU0dYcVRMakNBOUM0Z0hRUlJHR1lHR01vQXd3eE5iSWlvUUVRUkVRRkZrS0NBQWFPaFNLeUlZaUVvcUdBUFNCQlFZakNLcUtoa1J0WktmSGw1NytYbDk4ZTkzOXBuNzNQMzJYdWZ0UzRBSkU4ZkxpOEZsZ0lnbVNmZ0IzbzQwMWVGUjlDeC9RQUdlSUFCcGdBd1dlbXB2a0h1d1VBa0x6Y1hlcnJJQ2Z5TDNnd0JTUHkrWmVqcFQ2ZUQvMC9TckZTK0FBRElYOFRtYkU0NlM4VDVJazdLRktTSzdUTWlwc1lraWhsR2laa3ZTbERFY21LT1crU2xuMzBXMlZITTdHUWVXOFRpbkZQWnlXd3g5NGg0ZTRhUUkyTEVSOFFGR1Z4T3BvaHZpMWd6U1pqTUZmRmJjV3d5aDVrT0FJb2t0Z3M0ckhnUm00aVl4QThPZEJIeGNnQndwTGd2T09ZTEZuQ3lCT0pEdWFTa1p2TzVjZkVDdWk1TGoyNXFiYzJnZTNJeWt6Z0NnYUUvazVYSTVMUHBMaW5KcVV4ZU5nQ0xaLzRzR1hGdDZhSWlXNXBhVzFvYW1obVpmbEdvLzdyNE55WHU3U0s5Q3ZqY000alc5NGZ0ci94UzZnQmd6SXBxcytzUFc4eCtBRHEyQWlCMy93K2I1aUVBSkVWOWE3L3h4WGxvNG5tSkZ3aFNiWXlOTXpNempiZ2NscEc0b0wvcmZ6cjhEWDN4UFNQeGRyK1hoKzdLaVdVS2t3UjBjZDFZS1VrcFFqNDlQWlhKNHRBTi96ekUvemp3ci9OWUdzaUo1ZkE1UEZGRXFHakt1THc0VWJ0NWJLNkFtOEtqYzNuL3FZbi9NT3hQV3B4cmtTajFud0ExeWdoSTNhQUM1T2MrZ0tJUUFSSjVVTnoxMy92bWd3OEY0cHNYcGpxeE9QZWZCZjM3cm5DSitKSE9qZnNjNXhJWVRHY0orUm1MYStKckNkQ0FBQ1FCRmNnREZhQUJkSUVoTUFOV3dCWTRBamV3QXZpQllCQU8xZ0lXaUFmSmdBOHlRUzdZREFwQUVkZ0Y5b0pLVUFQcVFTTm9BU2RBQnpnTkxvREw0RHE0Q2U2QUIyQUVqSVBuWUFhOEFmTVFCR0VoTWtTQjVDRlZTQXN5Z013Z0JtUVB1VUUrVUNBVURrVkRjUkFQRWtLNTBCYW9DQ3FGS3FGYXFCSDZGam9GWFlDdVFnUFFQV2dVbW9KK2hkN0RDRXlDcWJBeXJBMGJ3d3pZQ2ZhR2crRTFjQnljQnVmQStmQk91QUt1ZzQvQjdmQUYrRHA4Qng2Qm44T3pDRUNJQ0ExUlF3d1JCdUtDK0NFUlNDekNSellnaFVnNVVvZTBJRjFJTDNJTEdVR21rWGNvRElxQ29xTU1VYllvVDFRSWlvVktRMjFBRmFNcVVVZFI3YWdlMUMzVUtHb0c5UWxOUml1aERkQTJhQy8wS25RY09oTmRnQzVITjZEYjBKZlFkOURqNkRjWURJYUcwY0ZZWVR3eDRaZ0V6RHBNTWVZQXBoVnpIak9BR2NQTVlyRlllYXdCMWc3cmgyVmlCZGdDN0g3c01ldzU3Q0IySFBzV1I4U3A0c3h3N3JnSUhBK1hoeXZITmVITzRnWnhFN2g1dkJSZUMyK0Q5OE96OGRuNEVudzl2Z3QvQXorT255ZElFM1FJZG9SZ1FnSmhNNkdDMEVLNFJIaEllRVVrRXRXSjFzUUFJcGU0aVZoQlBFNjhRaHdsdmlQSmtQUkpMcVJJa3BDMGszU0VkSjUwai9TS1RDWnJreDNKRVdRQmVTZTVrWHlSL0pqOFZvSWlZU1RoSmNHVzJDaFJKZEV1TVNqeFFoSXZxU1hwSkxsV01rZXlYUEtrNUEzSmFTbThsTGFVaXhSVGFvTlVsZFFwcVdHcFdXbUt0S20wbjNTeWRMRjBrL1JWNlVrWnJJeTJqSnNNV3laZjVyRE1SWmt4Q2tMUm9MaFFXSlF0bEhyS0pjbzRGVVBWb1hwUkU2aEYxRytvL2RRWldSblpaYktoc2xteVZiSm5aRWRvQ0UyYjVrVkxvcFhRVHRDR2FPK1hLQzl4V3NKWnNtTkp5NUxCSlhOeWluS09jaHk1UXJsV3VUdHk3K1hwOG03eWlmSzc1VHZrSHltZ0ZQUVZBaFF5RlE0cVhGS1lWcVFxMmlxeUZBc1ZUeWplVjRLVjlKVUNsZFlwSFZicVU1cFZWbEgyVUU1VjNxOThVWGxhaGFiaXFKS2dVcVp5Vm1WS2xhSnFyOHBWTFZNOXAvcU1Ma3Qzb2lmUksrZzk5QmsxSlRWUE5hRmFyVnEvMnJ5NmpucUllcDU2cS9vakRZSUdReU5XbzB5alcyTkdVMVhUVnpOWHMxbnp2aFplaTZFVnI3VlBxMWRyVGx0SE8weDdtM2FIOXFTT25JNlhUbzVPczg1RFhiS3VnMjZhYnAzdWJUMk1Ia012VWUrQTNrMTlXTjlDUDE2L1N2K0dBV3hnYWNBMU9HQXdzQlM5MUhvcGIybmQwbUZEa3FHVFlZWmhzK0dvRWMzSXh5alBxTVBvaGJHbWNZVHhidU5lNDA4bUZpWkpKdlVtRDB4bFRGZVk1cGwybWY1cXBtL0dNcXN5dTIxT05uYzMzMmplYWY1eW1jRXl6cktEeSs1YVVDeDhMYlpaZEZ0OHRMU3k1RnUyV0U1WmFWcEZXMVZiRFRPb0RIOUdNZU9LTmRyYTJYcWo5V25yZHphV05nS2JFemEvMkJyYUp0bzIyVTR1MTFuT1dWNi9mTXhPM1k1cFYyczNZayszajdZL1pEL2lvT2JBZEtoemVPS280Y2gyYkhDY2NOSnpTbkE2NXZUQzJjU1o3OXptUE9kaTQ3TGU1YndyNHVyaFd1amE3eWJqRnVKVzZmYllYZDA5enIzWmZjYkR3bU9keDNsUHRLZTM1MjdQWVM5bEw1WlhvOWZNQ3FzVjYxZjBlSk84Zzd3cnZaLzQ2UHZ3ZmJwOFlkOFZ2bnQ4SDY3VVdzbGIyZUVIL0x6ODl2Zzk4dGZ4VC9QL1BnQVQ0QjlRRmZBMDBEUXdON0EzaUJJVUZkUVU5Q2JZT2JnaytFR0lib2d3cER0VU1qUXl0REYwTHN3MXJEUnNaSlh4cXZXcnJvY3JoSFBET3lPd0VhRVJEUkd6cTkxVzcxMDlIbWtSV1JBNXRFWm5UZGFhcTJzVjFpYXRQUk1sR2NXTU9obU5qZzZMYm9yK3dQUmoxakZuWTd4aXFtTm1XQzZzZmF6bmJFZDJHWHVLWThjcDVVekUyc1dXeGs3RzJjWHRpWnVLZDRndmo1L211bkFydVM4VFBCTnFFdVlTL1JLUEpDNGtoU1cxSnVPU281TlA4V1I0aWJ5ZUZKV1VySlNCVklQVWd0U1JOSnUwdldremZHOStRenFVdmlhOVUwQVYvVXoxQ1hXRlc0V2pHZllaVlJsdk0wTXpUMlpKWi9HeStyTDFzM2RrVCtTNDUzeTlEcldPdGE0N1Z5MTNjKzdvZXFmMXRSdWdEVEVidWpkcWJNemZPTDdKWTlQUnpZVE5pWnQveURQSks4MTd2U1ZzUzFlK2N2Nm0vTEd0SGx1YkN5UUsrQVhEMjJ5MzFXeEhiZWR1Nzk5aHZtUC9qaytGN01KclJTWkY1VVVmaWxuRjE3NHkvYXJpcTRXZHNUdjdTeXhMRHU3QzdPTHRHdHJ0c1B0b3FYUnBUdW5ZSHQ4OTdXWDBzc0t5MTN1ajlsNHRYMVplczQrd1Q3aHZwTUtub25PLzV2NWQrejlVeGxmZXFYS3VhcTFXcXQ1UlBYZUFmV0R3b09QQmxocmxtcUthOTRlNGgrN1dldFMyMTJuWGxSL0dITTQ0L0xRK3RMNzNhOGJYalEwS0RVVU5INC93am93Y0RUemEwMmpWMk5pazFGVFNERGNMbTZlT1JSNjcrWTNyTjUwdGhpMjFyYlRXb3VQZ3VQRDRzMitqdngwNjRYMmkreVRqWk10M1d0OVZ0MUhhQ3R1aDl1ejJtWTc0anBITzhNNkJVeXRPZFhmWmRyVjliL1Q5a2ROcXA2dk95SjRwT1VzNG0zOTI0VnpPdWRuenFlZW5MOFJkR091TzZuNXdjZFhGMnowQlBmMlh2QzlkdWV4KytXS3ZVKys1SzNaWFRsKzF1WHJxR3VOYXgzWEw2KzE5Rm4xdFAxajgwTlp2MmQ5K3crcEc1MDNybTEwRHl3Zk9Eam9NWHJqbGV1dnliYS9iMSsrc3ZETXdGREowZHpoeWVPUXUrKzdrdmFSN0wrOW4zSjkvc09raCttSGhJNmxINVkrVkh0ZjlxUGRqNjRqbHlKbFIxOUcrSjBGUEhveXh4cDcvbFA3VGgvSDhwK1NuNVJPcUU0MlRacE9ucDl5bmJqNWIvV3o4ZWVyeitlbUNuNlYvcm42aCsrSzdYeHgvNlp0Wk5UUCtrdjl5NGRmaVYvS3ZqcnhlOXJwNzFuLzI4WnZrTi9OemhXL2wzeDU5eDNqWCt6N3MvY1I4NWdmc2g0cVBlaCs3UG5sL2VyaVF2TER3Ry9lRTgvczNCQ2tlQUFBQUNYQklXWE1BQUE3RUFBQU94QUdWS3c0YkFBQUFJWFJGV0hSRGNtVmhkR2x2YmlCVWFXMWxBREl3TVRnNk1EVTZNamdnTVRZNk5ESTZNVFQ5aHdyZkFBQUlIVWxFUVZSWVI1MVhDMUJVNXhYK2RsbGdRZDRQVVJBZmlTaGFORzFpN0JodG0wNUtVa25UV0IrTlFhMFlHMk9EbGpvT0drMWlPNTFxTkdRY2s5b2tSSnMwNEl3NnB1TjBURXhUYU9zWVM3U1NwaHBmMUtBVkJSWmhXUjRySUx0N2I3L3ozN3ZzUWhhQy9TNy9zdnozdk0vNXovbXg2QVNHQ1oyUC9GZ3M4cGY2NklOZmpNVjRPV3hZemQvRGcrWlhZRUhsSjUvanZnV2I4T2pxSFdoc2NhbjlPMVV1R0Y0RWhNUVUzdHJoUnQ3cWwzR3FzaHBJaUFGOFBxRHJOcFlWNU9IMUYxY2dKam9xS0ZMQ0krSUhOMng0RVRDVi8zemJINUE4Y1JGT1ZWOENSaWNEVVpGQU5KZlZpdklERmFqNjl4ZUtUaWtrajZiUkZIMXc1WUpCSXREZjZqOVZuc2E4WjNiUVd5OFFTNit0NWp0M3Q0ckExczBGMkx6cWNXT1A2TDFhcDR5S0dEZkczQ0VHQzRRWUVBeU5qeCsxMTV2MEtZK3UxNUdXcHlNblg4YzBXVXQxWkQraEkrbGhmV0hSVHQzcjlablVCaHBYYmRUUElWdy9qeEc2WTgwV2M1ZHlmUUc1d1JpMEJ2S0xkMk4vMlFmTWN5eGdaNWdGa3UrV2RveWNPQVpWKzMrTnV6UFRqSDNDdGZzZE9OWVcwMUVmd3BEQUhZMVBCLysySVdOZktlS1h6RGNJQjhDaU1WSEIxZnYySDQ5aFpXRUpNTUlPeEl6Z0R1M1RXUDRkWFRURWh2SlhpckQwc1RrR01kRlRmUVoxMzE0QVgzY2pGYk11K0NsUWhhaGk3dVhUZ3Nqa2lSaHo3QkRzT2RucURWZ2ZGcWF5THdKZlhHL0M3Q1cvd3MzTHpGOUtvbEdlOHFhblZ5bGZ1M1loWG51K1FFZ1Z2TTJ0YUpqM0ZEcXJqdExIVk83WTFMNUV3SWQycXJaUVJMejZOUFk5M0c5R2JPNGlaQjR0SjNtWU1xL1BBTXU0SDlIRENLNXdRN0dQWGplMVlzYUQ5NkxpblJlWWlXZ2hVM0NzZmc3TzB0Zm9hd3lGUkN0QnVncTVDMkhXUkdSV0hZYnU5VEV5ODZGcjdhUkw0bnN4aVdKcG5DMHBBMW5PYzBxV01xKyt5Y1d6M0FORW1zcDdic01XYnNYSEgrM0M2ZmUyOVNsdmUvY1FMbGppNENwOWkvNm1rRm1VaTg5dXJqYU0zTG9kazN4MWlQcm1mWWllUFJQWnZoc1l1YjJFS1dnbXQ0ZVVPbmxpNFdtdGcrWm1TZ2tWQVllekRhTnpsZ0pwU1R4RFhxU1BUa0w5WDNjckFrSDN5Yzl3NDRjcjRHbXVVZUVXTVlZMzNhclFFbjljZ1BTRGJ4akVSQWVGaDltc0xDUFdrWW5hakJud05UU1JMNHdHdFdOeVZ5T3NVWFl6UVNKT01xR1d4djdDVkppNE5tc2Vyc3lhQmEzNUpwVkwxUXVMRjcxb2dIM2ExekNwcnJhZjhwSzNqeUIrYWo1aTZORHJiRTUrMk1hbTAxaXZpb0pSbkxMTUZDaW9QV1BUTEFzRjkwa3BzbEg4SmtkUnd1MVVRaWI4cFFJVHp2NE40Wm5waXU1RTlVVkU1T1JqdzVhOVFCeFRGaEdPd2swQncrUUlHOUw3STJDQTZBeFM3RWNZN0dTVUVwSWk2MGJxOWgzSTF1c3hJdmM3NnYzMW15NU1tN2NCMzNxa0NCNWhUNDRqRTQ4aWo1aE5EUGtLQkF3WUJNb3V0WGdxNkZYS3htZlZ2cUI5Y1NIRzNyTU01eTVlQXpLWW5yQlFQZ2J3WmZjR1NjRkF5QUZTajhVZ2IzMTFEeTVhWXVBK2VBalc5QlRqOUlpQmJwNmtMczRIdnlacFlFRVlPZ1hzVEFNWkJNSWszaXVaMWtoY3Vlc0JOUDVpSFZPVHlIbkR3U1JHZDdOWk9Wd29MbHlBalQ5YlFDTjR4Q2dxTXR4b1RuNUk3UmhGR0VEQUFFNHZ0UVpBVExMS1kySG42dmJBdzBrblBVQjJkYTBYV2tNTDd2MTZGdHBxMzhQTDYvUFppR2lRTVBHWFBWd2lFNENTd3ljWVFSRWdWNGdpTkRvY1AzazhqVzRtdlY1VHA4RWRsNERLRDNiaTAwTmJFVzgySzFjbnZUZkhkYkEwK1M2UzVBbEcvd2lFcUFHYm1teUdhamtOR2pwVjEwdjc3VzVNYWorSGg3NlJwZWphZVRlWXRmZ0Z2UEg3STd5a1JDbWVZSWprcjQ1QWlCcVFycVdoaCtKNjJFd2JrTEJ5SmFicUhVaGFFeGhNVC85eUR4TEdQWTZULzZwaEQrQUVGVzJzcWM1YlJyc1ZEQjBCQ1gxUURkZzRxZnpJZHJHM1Q3OEhFVk9tWUhKekUwYnQ1YWcyOGRiQlNsZ216TWZlc2crQmRFNUV1VGRJRkNVTm5DY2x4Y3RNU201VHRoSEYvbEZXR2xYcW1XUDFoVTNrOGpVSC9uemlqTHhDV0VJaXhwOWgxN3Z3ZDloU09DdUkwNTlmUWNvRHEvRE11bDI4TXpEY2ZxOXY4elRjYU1hU1JkK0ZmdlV3aXBibktYcUJ0MUVHRWd0M1FHcVVBWkdSOUZqR3I0QUZwRE1WY3hjK2h5ay9LRWFkdzJuc0UyMjhGOHhjL0NKbVBsUUlaMXVIZVcrZ0NDOTVHMXVSTTNrODZpL3R4NzRkYTB3TzhyeFp6Z2thRDIvZE5kb1lyaUtnTTdIUWVMc2krbTVFdVN0K3c0citCNUJxQ3BWS0ZvK2EyL0RUWitjamxTMzJwYTN2QW9sQlZ6U3BtWFkzNTNzY2p2NXVBM0xuVERmMmlhNFRwMUQveUZKNHVocFl5TWxVYWt4UUwwZTNMVDRGazlwNHN5Wk1BOVJYbEIwNWdlVWJPSWFsb3lXYVRVWndpOTFOR2xXTWpGZHpUL0pNYk51OEhKdWVEdHlJdmMxTzNKaTdETGMrcmVDQlRTTzFUWEdJMXg3Y1JPeU03eUh6NDhPdzBBblpWd1lJWS9DOXNMaGtIMTU1cVl5RGhVY3dpcU5admVPU091bjFzT3M1OGNSVGorSEF6aUtEd1VUalQ5YkJWVjVLeFhHa3RsT3A4UG1vdWhVUjlqUmtWQjdnUmVWK2cxanFUZVRLaFNRVXZKcFBuLzNrRmw3SjV4clg4S2xQcXU5WjMxK25PMXJhVENvRHpsZjM4Q3B1NTFVOFVhOUJKdGRZL1JMWEJmNTlIckc2czdUTXBKUnJmLzlyL0pjTWtJandwdy9WNTJ2MTFEbXJkUXYvTDNqLytHZm1yb0hPaXVQNmYyS3pxQ1JhS2F6QmVLNXgra1drY1M5S2J5aFliMUlLUks2eGdqSG8vd1ZEd2NPclZiM2srZXh4aGp1RmdaYWhJMklrejAySXVUOFhZOTdmQjl0SUtUNlZ2RUZoZEo0aElTSUNOamF0ZlI0MUdhUFFmZllzMVk3dVU2NHh6OVlJTys2cStnVGovL21ob1Z4OEM3Q0doa1RnVG5ENzhuLzFxOU1mWnM0akdlcFVoanFldVU3U25idjJtaFIzaGpzeVFHTmgralBvL3VpWVhwZVhyenVLdGdUOU54bjYvNytoOEgvVlFDaUlrS0Z5SFJyQS93QzRlK08rWjFjbjRRQUFBQUJKUlU1RXJrSmdnZz09In0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjEtMDMtMDkiLCJ1cmwiOiJodHRwczovL3d3dy5nb3RydXN0aWQuY29tL2lkZW0ta2V5IiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJVMkYgQXV0aGVudGljYXRvciAoSWRlbSBTZW5zZSkiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlUyRjEwMDAyMDE2MDMyMzAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4yLjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMy4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIwLTA5LTE4IiwidXJsIjoiaHR0cHM6Ly93d3cuZ290cnVzdGlkLmNvbS9pZGVtLWtleSIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiVTJGIEF1dGhlbnRpY2F0b3IgKElkZW0gU2Vuc2UpIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVMkYxMDAwMjAxNjAzMjMwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMi4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjMuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMC0wOS0xMSIsInVybCI6Imh0dHBzOi8vd3d3LmdvdHJ1c3RpZC5jb20vaWRlbS1rZXkiLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IlUyRiBBdXRoZW50aWNhdG9yIChJZGVtIFNlbnNlKSIsImNlcnRpZmljYXRlTnVtYmVyIjoiVTJGMTAwMDIwMTYwMzIzMDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjIuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4zLjAifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIxLTAzLTA5In0seyJhYWd1aWQiOiJmMjE0NWU4Ni0yMTFlLTQ5MzEtYjg3NC1lMjJiYmE3ZDAxY2MiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6ImYyMTQ1ZTg2LTIxMWUtNDkzMS1iODc0LWUyMmJiYTdkMDFjYyIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJJRC1PbmUgS2V5In0sImRlc2NyaXB0aW9uIjoiSUQtT25lIEtleSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxNjc3NzIxNiwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9LHsibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMzg0cjFfZWNkc2Ffc2hhMzg0X3JhdyIsInNlY3A1MjFyMV9lY2RzYV9zaGE1MTJfcmF3Iiwic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJ3aXJlZCIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQzNqQ0NBaitnQXdJQkFnSUdBT3EwQUFBQ01Bb0dDQ3FHU000OUJBTUVNSUdSTVFzd0NRWURWUVFHRXdKVlV6RUxNQWtHQTFVRUNBd0NWa0V4RHpBTkJnTlZCQWNNQmxKbGMzUnZiakV0TUNzR0ExVUVDZ3drU1VSRlRVbEJJRWxrWlc1MGFYUjVJR0Z1WkNCVFpXTjFjbWwwZVNCVlUwRWdURXhETVRVd013WURWUVFEREN4SlJFVk5TVUVnU1dSbGJuUnBkSGtnWVc1a0lGTmxZM1Z5YVhSNUlGVlRRU0JNVEVNZ1VtOXZkQ0JEUVRBZ0Z3MHlOREE1TVRneU1qQXdNREJhR0E4eU1EWTBNRGt4T1RJeE5UazFPVm93Z1pFeEN6QUpCZ05WQkFZVEFsVlRNUXN3Q1FZRFZRUUlEQUpXUVRFUE1BMEdBMVVFQnd3R1VtVnpkRzl1TVMwd0t3WURWUVFLRENSSlJFVk5TVUVnU1dSbGJuUnBkSGtnWVc1a0lGTmxZM1Z5YVhSNUlGVlRRU0JNVEVNeE5UQXpCZ05WQkFNTUxFbEVSVTFKUVNCSlpHVnVkR2wwZVNCaGJtUWdVMlZqZFhKcGRIa2dWVk5CSUV4TVF5QlNiMjkwSUVOQk1JR2JNQkFHQnlxR1NNNDlBZ0VHQlN1QkJBQWpBNEdHQUFRQWxjVFlzQ1YyTHh1d0s4UTVQSyswMy93U0FQU3BRWlI2azEyUDJwcWZCMXA3TTNKVWZVd3ZlbWl0b2hLSlkyRWVwUExhZElpd3oyZ1ZhclBCNk1GYy9INEJSbXY1eWNVWWhXd0p5UGlSZnFGSlFyY25PcjJRbUdVbTduL0daaFFLVno1dXI4TDdOT3Bub252eGN1aGNldWplZTF4SHBJVStXcnlDbzJocE5mWG9ZaUtqUERBNk1CMEdBMVVkRGdRV0JCUTdWamxMM2FnU1RYdlZBRnlLYjRHSUVjcDB3ekFMQmdOVkhROEVCQU1DQVA4d0RBWURWUjBUQkFVd0F3RUIvekFLQmdncWhrak9QUVFEQkFPQmpBQXdnWWdDUWdFK2ZiYkpGY1hpRmdRWmJacjN4UWRVV1NuZ2cxaE5ya0hGSGg1UTZSRUhYSEVYYXl4K0ltZjAwaVBvTnBBRTZjOW1DU1RWZVdCc0dPcURTNEIzNlJWUW9RSkNBYlh3TUQrbDFGL0xzeFJCZTQrME1IaHdyMjB2NmhrbStzMktPVlVyMm4rSUF6MmNnaENDbExPVGRYWHZRR2w0NjUzWFgzdndYOVZwZ3lSU1VUMXRoaWV4Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQURJQUFBQXlDQUlBQUFDUlhSL21BQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRmlVQUFCWWxBVWxTSlBBQUFBb3JTVVJCVkZoSHpWaHBjRlBYR2RYeW5tUXRYaVhMKzBJYXNNSEdPd1liRWxKS2dFa0NBYVlNMDB5Yk1tbExLQU5objhuQ1pnZ3A1QS9VaEk0emhORFNhV2NLSkd5Rk1LR0JOSEh4Z28xdEdiTWJiL0sreUpZbFdjdVQxSE4xaFZCa1c5SVBZbkxHNHpudjNpdmQ4Nzd0ZmxkOGg4UEJHNFhHZTExMWxacmV6bUhPWnVmelhZTlBFdzRld3dwakVrS3laeVhGSnlsY2d4N3dsblg4OEhmSEQxMDM2aTBTS1NzUUNuNFVUVTVnV3h0bkh6RmFJMVRTOVR0K3ZtUmxybXZDaVNleUJyWERLK2FVR0hUVzRGQXhCTkhCQ1lETlpoL3NOeVpQaVRqNTN6VThucEFPdW1SMXR2Y3ZTaTlXeFFURHRuUmlnbUUyY1VhanViUjVHeU1VNDVIS3NzOU8zaStUaVlYTXhCbHBOQ3htVGhiTW5yK3hFWnpvK0dEdGFTSHdURFVCSWpIVDIyVTRmdmdhT045Z01NeE8vRGdxTm9ULzQ0VjN3TERiSGJyQmtiSzJEd1FYVDZsbDhxQ2ZnaVpBSU9EYjdieks3KzhMcDhRczdHelRQWE1QUG9IREVhNlNDam8xdXNETEFZeU1mTVlmelYvODkzeDBMd0RvbytPSDZ3TUJ4SFJwaGdSV0N4ZWdBN0Vsa2dVVlZpeG1lSHlTd3B6VkxnQVFBYzVITEJBS3lhUER3U2RTN0E1RU1aNnh4RFRDQmFnTVgyV3hZQmRlUUtMd3BUMmR1clBsNnkvWGI3NVF2V0Y0Y01ScXNUMlhvcnlzM29RUmhVcUdrbTBZTm0vWnN4Q1BYOS9hck8wemNKdzlQam44c25vejFpeDlJOGVnTjd1K3l4LzRlQkVYOVFmVGlQVzFsUm1oRVJMd05VdFBpSU1ZbUdwNlhqeWRmWFN2RjNaaVJjSnZ2N3BEUjhJVVVxR1FYMW5hVlBiTlF6eHVMSnB2NDRnNTZheGZDQUpaQ0ZQMTl4aUxpcGVCTnovc3F5aDlKQTVpclZZdUxUTU9JMjJQK3ExV0cxL0FaMWhCUTEySDh4Tzh5ZE9pWUswSWhheG80M2s2OHNkM1g5THJUSlQ3Z3owZ2ErSGsvdTI2QW9HUXVIdjcyMmNVa1RLUUVZTTF0ekFaUkYybEVZa1lFQmlzbzJVSUJFalBqb05XSlBqZ2dQR3JMK294OHB1MWhmaThPeHQ4d2NGRGJQa0JpWFFMdDNYZkl2RHEwcFk3OVIyc2lNR2dQRGdvVkVGOFduMjlGZTREUWJRaXpoL2U3Z2JQbVpXTTRBTUpDWmZzMzNZSkJOaDVhTW5nd0FqbHZ1SGZpYkQ4NnMwdlViNW55N2tJSlRFVng5bFNNNkxwNE8yYjdlempBeDVtVTkvUWdHVE9USUE1UVdCQ0syZjdSMGtaK0lKbDZRcWxITTRsUzMzQ2p4UHROanUrOTYzTmM4Q3ZuR3ZvYXRQUkZvT3oyTE5tSmppWDhPN1dkd2xaMS9mQWJEVVZyU0FTR2F0VXlmQng4T0RRb0UvMlhYWE84M1lYdjQ0a3Bkd0gvTWdhR2pSdCt4TnhIN0JudzRVd1p5WUNjQ3ROdzVZSEE0em9TWldCMldyTGlTeGdhbVlzTlF4S0Y3TGg0STRyNFBsekowMUppNkwrOVFGZnNsQVNaVExSNHBWWjRDYy9yMFQxcHVjQi9NNVpiSEFUZUUxRlU1Q0VKYXVkUUl5M05nMVFucG1mNE41ZUpoZWZPRkpLZWRIaHBmMDl3NVNQQjEreXRIM0dQVWRJVVFBTzdiNENYMUJPeW5jUUV4b21CYitqN29JbDZEZ0ZwdTQzZElGTXo0dURVZWtnc2lGVUlkMjEvaXo0NUxTbzNNSkpPRERvMUpnWVZ4YlNPM215WXZiODU4RS8rZkFiMkFtK29GTTJ6cGFTRmtONVRYbUxPOTRwVUducmJyU0JaT1Fub09TNnp4d1k5Y0kvYXdlNlNXRHRQN29jaGNQSGNUU3VySUZlZmRHZmwxSis0c2gxZVREcFpTbXMxaWZ4amtLRm5LQ2NBaXJWbFVTV1JDTENuM3RyR0N4TUtkMjFnUmhNR1IweTc3VnBhSlRwMUdpTUxRc1d4bFZwV2s0cytKNTN6aU90OEtWMENzQnNWbjRpU1BPRFBwUEppdnBPeHluZzA5czFuWlJuNXNGZ1Q2SWJKL2YxcXc5Ykd2dkI5LzFsR1c0VzR4bHNERmxZaVZwMTRMTmZndmYxNkUrZnFKSklSWFFLY1BBY05xczk3NFVrOE9yU1pzOTRwNER4TkMxYVdocXlDeElSREhRY3dMdUZLMlRiVnAwRVJ3aitZZXNMdUpEUktTK01hUzBIUHErTUNnYnJhTkhTem9WT0VEaDRmQUY1YjFDRDNnSStHdWdtME1tQXlFUEZYdmJBQ1laMml2TDQ1QWdrTytWZUdPTmJJU0pJeXU1WWV3WThZMFpDL3B4SlpvK3NvUkxWbGFTVTV4WW1tWXplOFlGektUbytSQ29uQnE0cWJmWktDR1QzL3FQRUQ4QkhXeStpY0ZEdWhiRmpDNjc1OTc5cUIzcEoxbncwS212RUVyYnFmODBnYWJseDZGNjg3SUhzUXdtZ3ZMYWl6ZlBpQ1lkT1NsRVdPck83dU9nL3JKZzBqWFRLQzJQTElrR2dsTzFjUnd3R2J5NVlra2FkUW9HZGJsVzNVNjZLQ2JIWmZpQUxlK2NVa01pRFhPMkEzbk5qdk9mdWc2K0RvSlA5ZTBrWmJxWjBmRFRHbGdVZ2VzcXVOaUxYd0ZHWDBZNjZyY0t5QXZWTjRrUWdNei9PTTljQXE1bEx6eVhuVWtOTnU1QVJ1dU1TK1p0YjRNcnV2WnN1U21VaXJ4VDJ4TGl5cU1IZSsvMXBjTEdFZVdQTlRLUEI0cDVDcXFJTkJFL044SmFGNU1xZVNjcEhYVVdieU5ud0FIaWwvaDQ5NGdIY29ET2YvdXNORkIwNk5TYkdsUVdnSGJoL3A3dW1vZ1Y4eTk1Rncxb1ROUmhrTVl3QWNRT09xUGVzaXFnTFNoVkpZUUFkRHUzREFLeVo5OHJVeUtnUThCM3J6aWlqNUw3dkVMNWtBUkdSc3FMMTV5amZzSE8rYnNqVjljTEZOTHhTTTJJOGt4R0JsVDNMZFFEY3FtbW44WTZYd1YzNXd4Snl2R3FhdE5jdTNxWDF4UWY4eUdJWVlVZmIwTmRmTm9DdjJqaEh4QXBwcFdIUVZ6MXVZSEIwb2xCUmpuTUpOWVh5anRaQmVpNk5HQ3dyM3BvaGRkYUM5OS8rSWtJbGN3ZmNlUEFqQzhBZDVzQjJWOWY3enM2WGRZUEVZSERpM1ZyWGJTSTlLdzc5SitVV0U1ZnRQQzVyeXpXaUlKZXBVSFhmM2Y4S09KS2dvYTVkeFBveEZlQmZGdDdZT0d3NWRhd0tmUG1iT2FHaEV0Z0dnejNkdzFZelVaTXpPNUVTS0FCU3MwaXUxZDFvRllsSlVPdDE1dFZiNTRJQVNDRGNoUUs1bVBxWEJZU0VTVDUrMzJXd1hZY1hhd2RJbWNWSmNMT00rSEY2WGdMdHErdzJoekphVHN1NnVxb1ZkUVFWSDBtd2VodVI5ZTJsdTEwZHJwN2JMd0tTaFpJSUVTVUh5QzlQaGZNbXg4YUZveWdnYk5YVkpCbFRwa2RqQWV6a3ZIZTQrckI3dDdvUmwwUGFrVTI3RjlLUkErOWRDb3NnbldNZ0NFZ1dnTVByMk1IdktmLzA3SnR3RFhadHFIRVYxZGpFTUpnS2FmamlMMUxvU0UrSERyVWtMakZzeGUveThQamwzNnExL2NiQWZ4ZmkvM3BoU2JkRzc5WEtqUWswNWdxVlBEbzJCTlcxdnJvZERnTFNTQ1R4bXgvMkdnMVdKR25TenhSb0dGRlJHKy8yUUlRcUpoaG5GL0t1dmtxRHgvRk9RRTlZekxZWkw4YnpWNzE2dEwxcEtNRDNnSnRnRlJEVVNXd0dXZlFTZ1lpaFc4SzVrSXNwV2tnaGxOWU85d0svd0JsVk1DOUpvSXlTZVoyMVBnREhJYVR3UndzUC90Tkg5NWJZSG8vdTRnNG5lQzN3Qzd5Mklrb21tSm9WNWRsQVBuUGdtRXJMalJYTVg1eHFHRGJESGE3aFp3cWF6bk1YVGhFa0pzZG16WXBHb0xsbW5pbU1ldXVydjBvVnN6SVN0aHBOeDlLOHo1U1JjaDhOMEFTQTNBQk1sc3NONjZSQndTakU5dmo0MkwyZkx1aHFIMFlTdVpaTU9KQ3pmVDJHNGxQTG9Ba3lVQmY0eU9wRlMvTDNIVnVnMHhvUmNSTWNaOWh1eEdBMW15d2xGNVpuWktWQURCOVhMNXhaS0RXNEYyQytzYkdsdU9pYXVyd1BGM2JjUXVIVHgwNTl1czRscjQxM2gxVlE5bXljcldCQjNQcnQ4MVdSa1FLR3p3akpUOVBPWDZwNURqdG5SOVJqa2RsaWJueWdxZnl1cWZtQlZqOWtocitkcG51cTluTVdQWlRBa0hEeDgxT1ZNK2MrbDVBWXc0cFlkTmlzbU1GVmlzZmoveC94cU9jUFJkU3Zhd0FBQUFCSlJVNUVya0pnZ2c9PSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzEiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6ImYyMTQ1ZTg2MjExZTQ5MzFiODc0ZTIyYmJhN2QwMWNjIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6dHJ1ZSwidXAiOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJlcCI6dHJ1ZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwiYWx3YXlzVXYiOnRydWV9LCJtYXhNc2dTaXplIjoxMjUwLCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjE2LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjIwOCwidHJhbnNwb3J0cyI6WyJuZmMiLCJ1c2IiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotMzV9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi0zNn1dLCJtaW5QSU5MZW5ndGgiOjQsImZpcm13YXJlVmVyc2lvbiI6MTY3NzcyMTYsImNlcnRpZmljYXRpb25zIjp7IkZJRE8iOjN9LCJyZW1haW5pbmdEaXNjb3ZlcmFibGVDcmVkZW50aWFscyI6NTF9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMi0yNyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxNjc3NzIxNiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJJRC1PbmUgS2V5IiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNDEyMjcwMDQiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMi0yNyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxNjc3NzIxNn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wNi0yNiJ9LHsiYWFndWlkIjoiYTM5NzU1NDktYjE5MS1mZDY3LWI4ZmItMDE3ZTI5MTdmZGIzIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiJhMzk3NTU0OS1iMTkxLWZkNjctYjhmYi0wMTdlMjkxN2ZkYjMiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiRXhjZWxzZWN1IGVTZWN1IEZJRE8yIE5GQyBTZWN1cml0eSBLZXkifSwiZGVzY3JpcHRpb24iOiJFeGNlbHNlY3UgZVNlY3UgRklETzIgTkZDIFNlY3VyaXR5IEtleSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyNTYsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfSx7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsiZWQyNTUxOV9lZGRzYV9zaGE1MTJfcmF3Iiwic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNTRENDQWUyZ0F3SUJBZ0lKQU05UnpZdTRFSUlsTUFvR0NDcUdTTTQ5QkFNQ01IOHhDekFKQmdOVkJBWVRBa05PTVN3d0tnWURWUVFLRENORmVHTmxiSE5sWTNVZ1JHRjBZU0JVWldOb2JtOXNiMmQ1SUVOdkxpd2dUSFJrTGpFZU1Cd0dBMVVFQ3d3VlJYaGpaV3h6WldOMUlFWnBaRzhnVTJWeWRtVnlNU0l3SUFZRFZRUUREQmxGZUdObGJITmxZM1VnUm1sa2J5QlNiMjkwSUVOQklEQXlNQ0FYRFRFNU1UQXlNekE1TlRBME0xb1lEekl3TlRreE1ERXpNRGsxTURReldqQi9NUXN3Q1FZRFZRUUdFd0pEVGpFc01Db0dBMVVFQ2d3alJYaGpaV3h6WldOMUlFUmhkR0VnVkdWamFHNXZiRzluZVNCRGJ5NHNJRXgwWkM0eEhqQWNCZ05WQkFzTUZVVjRZMlZzYzJWamRTQkdhV1J2SUZObGNuWmxjakVpTUNBR0ExVUVBd3daUlhoalpXeHpaV04xSUVacFpHOGdVbTl2ZENCRFFTQXdNakJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCSGxxMmpVUU1hbEhqL0JSZVFlZkdpejRFdllKeUZMV1B6NFJmaEpHS3FxbCs4bjk2aFQxbTVnWG9Udm9McmpTVTdYMGNCZW9Uc2doeWgyMit5cnM0K1NqVURCT01CMEdBMVVkRGdRV0JCUSs4U0dXMkJYYnFiMmRjQU9pV0pPVStHQ3NQakFmQmdOVkhTTUVHREFXZ0JRKzhTR1cyQlhicWIyZGNBT2lXSk9VK0dDc1BqQU1CZ05WSFJNRUJUQURBUUgvTUFvR0NDcUdTTTQ5QkFNQ0Ewa0FNRVlDSVFEcTh4SVcwWks1eXozRUF6bXV4ODhMQ1RZTzE1N2ZUZnlPaU96QzJBRHlhd0loQU8xUFdZbGVGZ0gvM211RDhjQkFNcjExZkVLZEYvQWFDMTZmdHhhZXpOWEgiXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSXdBQUFBWUNBWUFBQUFvTnhWckFBQUFDWEJJV1hNQUFCN0NBQUFld2dGdTBIVStBQUFGSUdsVVdIUllUVXc2WTI5dExtRmtiMkpsTG5odGNBQUFBQUFBUEQ5NGNHRmphMlYwSUdKbFoybHVQU0x2dTc4aUlHbGtQU0pYTlUwd1RYQkRaV2hwU0hweVpWTjZUbFJqZW10ak9XUWlQejRnUEhnNmVHMXdiV1YwWVNCNGJXeHVjenA0UFNKaFpHOWlaVHB1Y3pwdFpYUmhMeUlnZURwNGJYQjBhejBpUVdSdlltVWdXRTFRSUVOdmNtVWdOUzQyTFdNeE5ESWdOemt1TVRZd09USTBMQ0F5TURFM0x6QTNMekV6TFRBeE9qQTJPak01SUNBZ0lDQWdJQ0FpUGlBOGNtUm1PbEpFUmlCNGJXeHVjenB5WkdZOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6RTVPVGt2TURJdk1qSXRjbVJtTFhONWJuUmhlQzF1Y3lNaVBpQThjbVJtT2tSbGMyTnlhWEIwYVc5dUlISmtaanBoWW05MWREMGlJaUI0Yld4dWN6cDRiWEE5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM4aUlIaHRiRzV6T21SalBTSm9kSFJ3T2k4dmNIVnliQzV2Y21jdlpHTXZaV3hsYldWdWRITXZNUzR4THlJZ2VHMXNibk02Y0dodmRHOXphRzl3UFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzQm9iM1J2YzJodmNDOHhMakF2SWlCNGJXeHVjenA0YlhCTlRUMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzk0WVhBdk1TNHdMMjF0THlJZ2VHMXNibk02YzNSRmRuUTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl6Vkhsd1pTOVNaWE52ZFhKalpVVjJaVzUwSXlJZ2VHMXdPa055WldGMGIzSlViMjlzUFNKQlpHOWlaU0JRYUc5MGIzTm9iM0FnUTBNZ0tGZHBibVJ2ZDNNcElpQjRiWEE2UTNKbFlYUmxSR0YwWlQwaU1qQXhPQzB3TlMweU0xUXhORG8wTURvMU5Tc3dPRG93TUNJZ2VHMXdPazF2WkdsbWVVUmhkR1U5SWpJd01Ua3RNRFV0TURWVU1EazZNek02TkRjck1EZzZNREFpSUhodGNEcE5aWFJoWkdGMFlVUmhkR1U5SWpJd01Ua3RNRFV0TURWVU1EazZNek02TkRjck1EZzZNREFpSUdSak9tWnZjbTFoZEQwaWFXMWhaMlV2Y0c1bklpQndhRzkwYjNOb2IzQTZRMjlzYjNKTmIyUmxQU0l6SWlCd2FHOTBiM05vYjNBNlNVTkRVSEp2Wm1sc1pUMGljMUpIUWlCSlJVTTJNVGsyTmkweUxqRWlJSGh0Y0UxTk9rbHVjM1JoYm1ObFNVUTlJbmh0Y0M1cGFXUTZNakU0TldZeVltWXRPRFZtT1MxalpqUTNMV0ZpT0RjdE9URmpNMkl6WmpCaU56aGxJaUI0YlhCTlRUcEViMk4xYldWdWRFbEVQU0poWkc5aVpUcGtiMk5wWkRwd2FHOTBiM05vYjNBNlpXTXhaVGczTWpFdE56TTNZUzB3TlRSbExXRXpZVGt0TlRGa01UTXpORFpsWlRJNUlpQjRiWEJOVFRwUGNtbG5hVzVoYkVSdlkzVnRaVzUwU1VROUluaHRjQzVrYVdRNk1qRTROV1l5WW1ZdE9EVm1PUzFqWmpRM0xXRmlPRGN0T1RGak0ySXpaakJpTnpobElqNGdQSGh0Y0UxTk9raHBjM1J2Y25rK0lEeHlaR1k2VTJWeFBpQThjbVJtT214cElITjBSWFowT21GamRHbHZiajBpWTNKbFlYUmxaQ0lnYzNSRmRuUTZhVzV6ZEdGdVkyVkpSRDBpZUcxd0xtbHBaRG95TVRnMVpqSmlaaTA0TldZNUxXTm1ORGN0WVdJNE55MDVNV016WWpObU1HSTNPR1VpSUhOMFJYWjBPbmRvWlc0OUlqSXdNVGd0TURVdE1qTlVNVFE2TkRBNk5UVXJNRGc2TURBaUlITjBSWFowT25OdlpuUjNZWEpsUVdkbGJuUTlJa0ZrYjJKbElGQm9iM1J2YzJodmNDQkRReUFvVjJsdVpHOTNjeWtpTHo0Z1BDOXlaR1k2VTJWeFBpQThMM2h0Y0UxTk9raHBjM1J2Y25rK0lEd3ZjbVJtT2tSbGMyTnlhWEIwYVc5dVBpQThMM0prWmpwU1JFWStJRHd2ZURwNGJYQnRaWFJoUGlBOFAzaHdZV05yWlhRZ1pXNWtQU0p5SWo4Ky8wVnhSUUFBR2ZWSlJFRlVhQVhWd1hmY24zVjk3L0hYNS92OVh0ZHYzRHM3SkpBSUFVTFlCWm1DaW1EVkRsZnR3MjNIcVl1cVBWMFd0ZGJXUjYzblZHMnJucmFPdHNoRHJSVWZQUjNXV1MzS1ZoQVpZUW9FUWtMV25kenpONjdyK243ZTUwNGlLTldPODU4K24ybnVpc1MvSjNHOFlaZVoyWlRFSW1EODUrUk9PMFpTVWZpSEpQNkZIeUlFV0JqQXd6Tnc2b2JJM0N5a0NHYUdKTnloTE1Xd2ducm9wTkpJQ0JOVWNvb2kwTzhiK3hmRjZQTEFxSU1jR29kMlcrellEOUZnNDlyQWdiMWkwVEpUSFdHQ3VvNlVoZUVKZGk5bVZyU044Y0tZcTQyZCs4U0tDU08yZ0F3ZElCUVFUUHg3WmxEVmRra1dielRaY0tUSTNkaHZ2ckdsdWVNOWQ4VVRYMFJyK2ptb3lZQ1FPTVNzQkxwQUFqTFFSeHBneG8rUkFtbHI0b2NJWmhlR2tGNWxCcEw0cndoSUNYTERmSCtnRHhlRmtIZ0NDZVN3Zjc4aEV6L0tqTVBFRDVJZ1JYdVJ1ZjIwcFlCWlE3MmY3U3RHSDNZbVR2eEZNaGNnQXdsaUFSTGdHV3dHTkFmV1Fxd21oc2hCY240c0dPQStsOHFDeHhtUUJVM0RTWklqOFY4VFlGQzBqWVVGYmUzMWRQMnk1WkF6VHhBUzVNWkFnUEdqelFCQjFZRHhBOVpaMEtrbWNFSEltYzkzTHZpM0hmSElrcVplalRJZ01FQU83bDhueGs4aDNZTG4zWVEwanVzTTFMeU9FTTVFNHNlQ2dPei9sUFljRUk5eFFUdHh4SGczbnVrWUlMNXJFZGdPQ0NqNGZnWVNzUjVxUmFlanEwSml1cXA0Z2hRTkx3MVY0c2VGQUs5Rk1yNUhRTFRqUWd5Yk1jaU5nN0huMXBXWGZPT2g2c1NMOFBrak1RZExZR0dhd2Q3ZkpYWXZSMFdmRU1BQzFCV0U0bFo2Qy85TW1mNk9jdVRwU0lENGtXVUcwbTdFdmVtMmJjNWpobzFZT3htUE9uTVRwMmFKN0lDQmlZOEovVDdRQWtZQWNaQUFROEVvYzBPMnlMYlJVVU1DTTVDTWRodjJ6VGxrSS9KalJHQVJRaEhJalhpTUdjZEtHbmVNMGpLSU94NnBWKy9MWnVjajd4QU1TUHZvNnhWNDlRWFNPTXpOdzhnRWRGb3dNd01qWTVEU1hwcm1yUlQ2QjR4VmlCOWRFa3R1Sk5xT3RIYys4SmorRURwZDJ4VGFqR2dBR2VNZ2QvOW5ZRThJNElJUVFDd0pnSU1MWEJBTm1neVNrUjJLNE56OUlEdzZMellmTFFyang0WVpORFgwZWs1M0xDQnhTQXAyanBsaGdoWTFzelp4MDFYTkJYTUV0aEFxUUJXOTVoMDA2UXZFRWFoSnRNdVhVTVFYMEZSWDAycDloQ0xOb3dDZXJzZjhQckJWL0tmRVljWi9uempNK0FIdUVBTC9JVGxnWU1aaEJxNmJFUXZwU1VkR0hsUFZ4QlZqZG82eTRSSWdFTnNFTzZKQmxwRUNWTFVUZ2hGTFFUWWNJeU1LUVpNaEcxUU5GS1g0NWoxaVl0Sm9KVU9WK0NFTUdBRUNNQStJL3c4Q1hHQ0FPMWprdjgxWUlzZ09Fb2VJd3l4QVhZbTUvYzZxbFlabmFESkg1Y3pKaElCTW1PQWgzL2psZ1hWV1F6NlJZREFZWHN0Qy9SZDBsa001QXZJM1VIVGZSd0JxZng0am8xdUJMMklSNmdEWkcwSUFCTzRRSTJEZ0RpWU9zUVJ5a0lNWlAwamdHVUxpY1JZQWdRdk1PRVFDTXloYTRCbmtQSUVFRnFCb1FhN0FIVUlFQkRuZmljanBwRWx4aUlESW1zNlluWmtiYURKWU1EejczY2dmbVdrQ1JZTEpDUDArV0FBS0htZUFaRWdRQWdUamtORTJwQWdTaHdqSUFvempnWjlCT2srd3pzQmM3QU8rZ3Zpa3hLUDhKd1M0R0RHNEtFWE9FcXpxdFBBQTN6SGpDNEt0L0JjRXk0Sng4V2liTTJKa0tvb2FlQUQ0Q3VMYkdCUWx4QkVqWmtHZjlYVnRtNGhnQ0l6WnYrWEZEejBZTnA2TkxheEVEbVhuczB5WkV5b28weG5JL29pY29ha2hSTUJlZzN3VFVrbjIxUmduRThRaHJRNG9nMmNIYlFmMjRxd2kySHFTQlJxQkFETWU1dzZwZ000WURIcVFHekNEa0NBVk1PeUJIQ3dBQWdHeEFEbDRCb3NjWnFBTUNHSUx3amhVUGFGc3dBNkM3bUZKbW5sVUhPUVpXbDFXajR5eVJVRWdrQnRseVQydHFBTjc1NFc1c1dSQ2NLcmdETERqZ09VR0NvR2RHTGNDL3lwNGhCOUdFT0NZcVhaNGJXN3NSZEYwRkdhR0lBTXBRc0NlWllGZk03TjNDUDdhUUh3ZkFUbXJSUFpMcmNpdllHeVdXVmVDdFpNZ2w1ckszcFNpUG9iemg4Q0E3eU1naTFHWlhlcHVyNHpHcGcycllsblhBamVVaERzUFdlVFBMZkxIMVVEYWZtK21Mb3lSdHYzRVpOY21xeXhhTkNCdXZUNmV1d1B4TXRSdjQrclJHOXhJTXVnME1OUUJMTnhQYTJRTHVZRnFBTVRuQTgvbm9DSUF4aUVoZ3VjRExQWStUalA0RXVOajkrRFdKNFJBTlhNNmROL0N5TEt6V0p3RmJ5QkVRQkJMVUlERm1RZHhYVWNxN3NUQ2dHSC9LUHB6ejZBemVoSUdOQTJrTm5qZXdmYmJQc3JZNnZ0b1R6NGZhMTZJQmNnWldpT1E2MGZZZnYrSG1GaHhCOTNSbjhQenkzRGRqckdkSmFtN01YQ1FCRVhrRERQR2NnVVd3WEFHZlYxZlcwQnVheTN5ODdnOXY5MjJFdzFiSVRjd2dTQUZROEpqNEg2WlhWRkxId0JtK1M0SEFyeDQ5VEo3UjlrS3h3OFd3UUtQazZCc1FRR1d6ZFlYby9HamRaT2pNaDgyRHBNZ0pqdHA5VVQ4Mzkxa0YrZUdva2pDSmJJTWx4QllyblZrdTJ0dk13OUhtdkpyQlFPV09GQUVUbG5WRGg5c1diaWdjY05NMUJuRWtpQWtrTEVoQkh0M0dXd1ZtZCs4ZDV2enhlL0U5TXl6N2N5THo0ZnFFU2lWMlZscytQeWVZbTJQUGsvRk1zZ0hEUG96V0lDcWdtN25BVHkvZ05rOXI2RW9uMGQ3OUVrMEZZY0lDQUhFRW9FUHY4cWpEN3lUVmNkZHc4UjRReldBTEJCZytXRm1Gci9LYkhNRlUrWHpDQW15Z3dVbzB4NzJQZlNYUEhEbjM3TGxLUTloMWlkRXdHRm0xeW82eDd5VnN2dEc2aGt3b0RQNk5oWm1MbWZaeGhZcFhZelhJQUdDYUNDOWkxNzlGelRYUVRyaFFzcE40SXZmQXVaWmtycGRjWkNnRTJWbmV6WmNJbUswT254MWR0YitMamU2ZU5VSysyRENqcTlkaEJDMDVBRFNpQVhLVmpTYVJqUWl4R0RIZ3IzVDRGbkFyMHA4MndXZHlGdGJJK0czVFRiZXVCQVFnQkFONVBNakxUNTN4NE82ZXRzQys4NC93ZFpPWWk5dGlPOHl5N2NpM2NoQjR0eFd5ejRTNGNRaVFPZzZ2UjU3VEZ5VmdqeVlYU1JZMVFBT2RHSjhxYVJySlB0b1UzUFF1U25ZRmFQUk5tV0RqRERZV2RWK3ZSblo0R3d6MjJCQU5aU1ZuZmlxbzQ3bHM1UE9WZlBMYk8yS1VkdE1YMkFHQlF3NkU5YzBkKzFkeGRyak50Rk9vRGhDWi85NTdIaGdLMGVmQzZFRzV4NEdpNzlPU2g4Z3BLY1IvZGNvdTZmUW40ZnNrQ0pRL3ozVWIyQnF6VTZhUG93c081Ymg0QUpjdS9EbXE3UW5CdlNaWi92V3R6TjI3R2wwSnpjeVdBVFo5VlJ6YjZiZHZvYk41NHFpQldxZ0dvSWl0RWYzc09mQW14aTNTTGQ5S1ZWL0Y2M3VWemo2TElqRk9sUmRnQVVRRUFNTXEzdkpkaFZyMWtKdUxjTW1uNG9xb0w0WlBJT1JHSENJR1ZORVRoSmdCdG45eThNQnJ4OGRzN2NGaFhkMm9oZzJmbVBPK25TUTNReTJEOU5rVTlrcGk0Mi9vR3lGaThwSWtBdHZ4TVNZblIrSytBa0x6WXRHMjNaQnV3eHZ5ejIxNjBhWVFaRkFVUFY3L3FtaXNEOW5WTGYxK3ZTbmU0NHNRTllWamV6dHBmSFVSbjRUc000c3ZNL0VpU0hCVEYvOWhVWDcwN0t0ajQ2MDJJWElOOXpWYko0YWkrL2ZjblM0c0JxSXhsVzBZM3pkdmdVK3VtM2Fqemp0S1A0TWJGTXRrR25Pczc4M2hQREpFT3hSU1JnY2lYZ2J4a3NGbHFLdGFLZjR3djVRVjUxNnJKNjB5am1oMm05WUVKVHNmbzllLzhoOUJ6YWV3Ukh6VTRRQ0ZGcUU4QWE4dW9taXVJV21ENTZoTE1EaWc3UkhIdVNXYTcvRXNQOVJUbm42czRnR2kvVzF5TjVJSE95a003R01oWVUzczdqNFVzUnFpbEFnUGs2T3YwNjczc3RSNjI4bmh4dkkya2gzL0NibUYxK0x1STN4TmVEaDZWVDlWeUdPUlBsbUd2OVRKbGJ0eElENTRWL1NhajhYZkNkemV4ZXhOdFRWV1VUZmdCbVlRVERvRFhmUTB6WW1XcEEybm9QN0NmaGdIeUhmam9tRGtqak14UHBBT0E0RHo5d2c4WDdWK3IyUlRuejVZcTBIZHMvbFB4d3A3VFBCbU9PN2drSGxYSHYzdy82eGlTbi8rVk0ycGJkWHMvWWtqMkk0RUtFS1c1NTZVdkhsbUppb2Vtb3JjMGdyUVFPUEhoajZXMm5zYjhxQ3g4VUlNUmk0OXRkWmYxQVVYREJXcG9tRlNyOWxGczRKQ0F2TTdacjFTL3Z6Zkh6RGVzTU1FRFJ1dDg3M21yY29wL2NFV0I4RHpYUlA5My9xT2kvT1B6bjlhbXZVbnJ3d0M1Z2U4dHBmQlh5Tko3b2I5RHVZbldqWWFaN0ZZclpOTWNOSzJKS0NqVmRtZEJuQWdCc2YwaEhiMkxMdWRhUURJMVFWeUtDejZtU09tZm9rN24rTS9FdDQvUWl0VWVpT2d6Y2c3V0RZK3oxeVBvbWlYRTlqZjRocEI2YjFwSGc1NHl1ZndYQUFaaEFOWEMrbmFtNGw4QjY2NDlCS0I4Z0xNTmQ3SjVWdW80cVJFYnVNd2NKdlkyRU1pMUNNWG9TcUR0aGx4QUFkemRJMGV5azczMkk0bk9PdXUySDk2dE5adFR3eHJDQVl4QVFMKzIvQ3JNL29hdWhWVDZaVmRKaHVycWV0QTNRaU9LUVVqZTg2eFl3cHdVN0hyMjBuZTB2MmRHNC82K3Z1L2lwZ0c5OWxnRmhpSE5JNHZVYTZIUGR2N2h2d2liRk9PRFVCdVJIakl4eVJIZW9HZ2tFTXNHdEczODdCMzFoMjdHb0pFT0RRYlVPM011N2RubG5aRVdYQlZMc2RPNVk1WGg1ZW9DaUtDRE56K1VQVCsvempyWlNRd0lBNnc5cEpaekQwYXdmeitlZVNhU3dtY3BYWk5UVnFwNjlaWWI4aUI4K09SOTZkVXZ4YU1FWWxHV0JMV0pLQkEzSjkyNHpUV09Lb1hEU25LOXVZSkFRRWd3UE42Tlc3ZTJ1Z3pkbVFRU3dSNE5EdWJNYjlyOGpGVnFJK0FmWVpvdCtIK25EMGFTejVCc3EzMEJ2c2d2QU5tajNnZmhSaCtUU2h1Uko1QllpR0FoZ2g2QjZLQkFhc1dINDZYNy95YzFqcksreDdBRFkrOCtYRStBY0l3d1JpU1laMitVdElaMUEzTXhSaEFta3psbjZmYmRzYVJJZWlPSldEREpCRHc0RDIyTGNZOW1CMkRrSjZNclJncW5NelRYMkFiQnlVa0ZqU3d1eDBDUXlmam03UERlTmgwNkRVRjFwOXZaekdwdVdBUUFZWk1NQU0zQ0VBM1RaUXNIV3Uxcy9VTWYvVlVkMXdTYitHUVEwR21FR0lRQXBmZjNSL2Z1M0tGZHpsQWpOUWdHWUlKMjJBWnB2NDBPZmh3ak1EenozZEx0MjV4K1JvNCtybHRpd1BJWFM0cDEzeUoxUHpScnNGcVFWMUF3WjBTMk00QkVrN0RKRmxyQmlOeFl2UDU0VmtWaXpPaVpCc0VlbW5nTE1FNDRENG5ob29ETTdpSUFPRHhXZ1UwVGhKQXR3Z3daZmpKWGRzRFNlMkNQa0lWQU1CTUJEUUREa2tkVTdFdXUraUhyd2FlQW1Ub3pmZ3dHSUZxSWY0QktWUDB4OUM1anE4dVk1UThEM0dJY3BRbE5DZFdNbmV2Y3Y0OXJjK3lyTE9JaXZYcm1DeXVJektEUk5nUEs3SlhlQmN6TUFkc1BzeHU0Mk5SNEg3OFpUaEZPb0tNRURnN0dCMGZDc1IyTHYvQkk1WXR4a0w4SjBicjZPM1B4TUxEa3BrRHBxazBPa2dZckNqcldNajkrM1JUZE1MZXZVNFRLOGVnN0lGYnBBTmhBaEJXQU5tY01SeVk2U0Evb0xZdk15MzF6bGUyV3U0aENYR1lXWlFOZjczL1lwTHk1WjJsUUZLak5BQ0JlaFYwQ21FQUFkaXlYbmRibnJwMXVubWo4cFJ6bDdmc25iZHdNNTV2M3JkbHZEb3lSc01HakhZQVRQVDBFcXdjc0t3RUZFdzNDQ0hRSVRWMGV5aVd1QUdFVWJLRUg3YUFRbk1EQVFPR0dBc0NZWUFBNVI5YXlmWTZRbDd1bVNVN1JybWVIQjcvYVRiQjFQZDU1QjdHM0RMWUxzNXJBMDJBVVRVZ0F0U3NaSHNMMmJQZ1J0b0hDeHZBRnREc0swWU1IbGNDMDhyeUwyRTZocUw0cUFRdXJnbWlVWEJzUDh3dmRZcnFQYk1zbjdsMVp6NkhGaTI1a0p5M3NoZ0hrTGdDUXdRSUNBVnNEQjdMYjNlYmxhdGhSQlBZWGJmQ2c2eUNGWkEvNUU3R2U2K25kRlRZTTJHMHhsckgwTnY1Z0JYL2VPOVBIdzNkRVk1S0NsdzBMR0JjQ29Zb0pGT1MremNtVCs5WTVlMnIxNWhkRHZHMm5GalVJRUJCcGhnVUl0MmFSeTV5cmg5dTVqdGlSUFc4Unl2N0hmZGpJQjRURERERzN2NHpsM0RmV3Vuak5GV29oMk1Ka0x0RUlFQTlJWXdWaksrNmFqNGYrZ3FuTFpKTjJYRjF3em1oUlZVRE5uYVRBTW02Z1hSekJtdDBwQTdWUTJybGhjMGJtUVhNUW5Qck9rTk9jNkNpSVlIV0JDcUJNa01ZNG1FeFlBbG8xOWw5VG1zN1diVDlkQS9WclR0OUJpdFcxWFFzUXlKNjY1WlBIVUh6czlpZ3hMeEJveXJnUUk0SHZRQnpLWndRVm1BNUR5ODZ5WXF3ZklXZE9JRk1ISUNzZDBEUVRWWWh6VlhnRTFCbUFWenpFYUFJNEVhWXovWURLazZGenBYY01IUFBrem5LQ0N0cDlvZmVaeUF3Q0Z5aUFrQ21leVIxTHFkWFBXWTJRTm1KNURLaER0WWdQYllrTVhaLzR0RmlDdUFBejlCTTRSKy8wWTJuN09MZGNkQktqa295UUJqTTlBMVJCYlVpeXl1bjdDN2psNExUMXBqekM3QVlBaG1QRUV3a0tCcUlEc0VDNzhJOXFjMWpFZUUrQjUzMFdtRlgxNDJtdTZxYy82d0F4bHdBUVlJcWd4akhWYTg4cUp3eFVtcndtbVBQbHkvZXFvZER5U3o1WFVqWW0zRmlyYVd6KzRXUVNLWkVWcWdpc01FVGFPT2pHeW9hSGZGY05GR2xCa0xMREVMZyt4L0hjdy9VZ1E3S3JzaVFnNHFaSG0yMGU2VzJaeHhTTGRwdkoyZCt3cnM5VGxETEEwR2tVVTFkelFUdTZEaUdKTE5ZM3dXdEEwTXBQdUJTOEhPQllFRTg0dC9RdEg2T0t1WFFmOVI4UFpUYVkrc1l2YitCWVl6TVBLa2ZSVGxQbUk4SHh6TVFBYjE0TXNFdTVKUTNJTDd5NGlEODBoanM3aFZUTzhCOTF0b3QycFNUTWhBQmpTUS9YTVU1VmZCZDdNNDJFSUlsN0ZtNVJ5akpYeml6NkN1dHZQY04yUjYvVVRUaDhYOUg2ZlYrUnVxR2FBL1RxNStnbDRGcWZVTkx2ejUvYVFDSkE1S0psb1c3R1F6UXhJbVkrajYxb1lqdU5iTjJEY0xHSmlCZUp3QkpUQjBRUXJXM2JEQy9xQXN3cHVHdFNYTU9jakVmaGtkb0NQQVhXUEhMRXZ2bmU5amNqNWlBZWU3aEtocWU4YnhhOEw3V3V2aUtmZmRuUi8rNWozNjBuT2VUcGhNaWd4QVlKVjRhb3hXRm9US2xVRUdCbklJMFg3WmpKY0hWQW1iMkQvamZ6YlJzdThvV2QrenVza2dpL1lnKzUyaklkNkpHV1lRZ2V5QlBaWE8zZEFORndmUmRURW0rVHRhcFI4UnpKNlIzZWgwd2ZZM2ZHYmZlYmRkYyt6TFZsRnJJNE9xRFdxRHdBS2dBOEJid2Y4bktRVkM2MU5VTTU5aDFTUzBPdEFmdlppaTlRSk1zTGh0R2NrZ05uTlEvakxLZDBBOGg1QVhxUHQvRDkxUEVGT21HWFlKY1JsaWlUYWpaZ3IzYWJKZGgvUk94RytoUEVXSWN5aThINXAzSTEra2JxQS8vQjNXcm9VN2J6akFvL2ZEMUJHdzdiWlBNNnlPcENqT29hbitsZjdzQjJsUFFRUjZ1MDlnWk9Sa0hERDdKdFVRcWlHUFNSYVlER1pQRm9jWndreXIreFcvR1F3cmpFSThyaFdNWllLVndPZGRmTWhkNThUQzNybHFNcHhmdTJnYVVRU2pjdDBXc0ZjWDBpdWFhSmZLUlJhMElxTmxOMzVnNlA2ekxuME83Q0dEbzhHZUVZTTluUkRHNkxuUHp1YzNiWnppb2VaQVhxYnhzSzFWaE9YRFNwalpCYVhDUjh6MEJvYzVscml6UEpxOXZTenQwaW9UT3kxalVHbjIwV20vdTczQnRyZmEzRCtZdFpPellEVFphM3BWbUJzMjlydXRrc3JNa0JoUFFiKzR2aDErVHpCbEJsbTZ5NHkzSjJPRjBCYUxScjJZU1NWM1BianFLVitibVZ2M1U4VGVrWmdEOGRtNDMwM09FQU9ZL1J1UjYybTFDdEE4MVg0SVU5QlVteWxiNzhmS1plUStMSC95WlJURFc2bWIvZURUaUxlVDJxTU1Gb2JNN3g2eStoVElmalRXL3pneG5Zc0RGaTZpR1o2QzZkOW9wWXp4eHpTNmltWndCR09qOTFPSDIvRGdaSWRXK2ZzVTZlMjBPckRub1JPcGRTV25QZzNXYk5wSHRyZXhzREJDcXpYSHlDUTBEaUhCL1BSR3hpWlhZUFZlY3ZNUU1yNWZHaG5WK29WNU95MUVEbkZBMkhHbHdsdWlBY1poeGlFdTdUWFpmVUxIaEVLWEUzaGE1YXlpaG1oR0E5UlovK1RHYjdqbjc4ajlFU3hlSEN3Y0QyS1lSVEFya29YbnVQakpBSDJEdG9LbGdpVXlXUFJMSnp2NmgxZ0VGcWZaLzhoMi9jMEp4M05xVVpKeUEyWjZoZEFXSS95clJMZFQ4RXpITnN1ZzB6S2lhV2VLZWduR0xRTXBET2E1Y2lUWXliVUxpMmJkTXY1R25YV2hZVmVEdW1aMnRzeE9HNDFLMmFHVzNTRHBKUlkwSU5oNVlBZ0RCd0wzcklyN0ZxazREVXRnQmpHK21leDNJbjBSTThpQ2ZqTmdjR0RBN0NPUWE1QzlpRmk4RDF0WWo5Y2dRV2ZpRXVycDkrTFZINUhDdlpnNStCejlQaXowbDdHT1g0RDhGaHBianNRaFJpSVc3NllaL2dJcDNvWFVZTTMxcEJMbTUyRlFRWHRxUGEzd3Y1Qy9GRE9ZbVliVG52M2J4UFlPZWdzZllkMnhNS3d5ZzJxZWxqMmJPaCtMNnk5b3QwUmFmUkc1QnVWdjRIb1l4UGRMdXc5dzNuaGJIWGN3UUlJaVFwRmdXQWwzc01BUThZamc5aWI3cmtRWWlZVTlIN04xTGhFRWpYRFE5WXREZjM4MFB0TnFCYzlBSSswSTJYOHBwWEM1c0dNZElRbHhTQlNNR2xDWU1XZzBiZGE4dm9VKzdkbndESjBJZXc3b1kyc2FmOXJxa2ZoenZWa25tOHpnekdEaFRBRVJFWU5SWmRFZmF1dFlsMWVueEhXR3lBZmNMZHRmeHpGN1Z0bTI4L3A5c1NTbVpPZTRjdzRZQnpsR1B3dDMvNWNRd3Bzd3RnMXJKbUlSbmhtQ2dhQVRLbVkwZGR2bjlUd29PUXZtT1VSYVRReVhJLzhZOEZWY0R6QjBHTTZ2WXpnNGhiWEhQNU1tUDVPOFdCSVRoNWhCTlE5MGZvR3lmU0dldndpMkMyOUVkL3hJeXZZRkRCZVBCa3BDQW5HWVo3QjRGbVg3TThEbG9Pc3c3U2Fta3JuK01YajlGTHJwZWVESDBUaVlnV2RvalhhbzYvY1NlRGJEM3Exa2IyaVh4K1AyWEZLTWlKOG0yRGl4UEEwMTROeE10bG1NSjBqYjl0blpaeHhuRE9ma0JCUUN3MkdqaGNWSzAyV3luZ1ZseWVZeFRIQmNDdUVDQzR6V1dWbmkzbVM2cndqY09aZTV2c3E2T3NyMlNlSXhCcGk0YnVENXhRRzdMSm05ME1GU01DUndpU0xTbTZuMWp3dVYzcnV5eGMwc2tVUnJNdERwR2lkTXNaQ0MvYXF5endxOU1rVXJ6STFHQW94YTBFN2E0NVd1N0EvMUoyUGRjRDhDQktwRXU5U09uTVBMOTgzejV4TnRQU3NSR0dZb0FramdFZ20vWjk5UUh5NGpsM2VEN1I5VWptQUNPQldKUThUaVBsdisyZnQxM0JiRTZZUWFDRFh1aHRrYWl1TE5vTmVRd241R0NxTllQc215SThhSVJhTHVRNjRiUWlFUWh4bGdFZXhvVEsvam9KeWgxWUdSU1JqTUMxRVRBaytrUUV4YlVINFhoQmtJczdoS3BwWXZ3MndFcjFuaW1EV0FFU0lNZW1BMlNvelBSLzU4WW9RRXVBQ0RZSmNnQjNPV09IQWRRZng3YWZQcThNRnFVWi9FYUVBS3dSWjdmZVlYS3kwZXVkS3lHcHNhVmt6R1NOdGdCT1RJcHB0R00yQUxLWEVBbUhmUnVLQmdpZkZFQmxuNmxzUC9rT3VLWVBhVW9ldW9FR3dZcEh2cXhyOWVLOXprTURTK1R6U3NNRG9KQXV6MnJEY09oL252S3NWbldORHhMUWlZcHQxMWl6SmZrN1RWekRLUE1TQUFCaUh3NE40NXZlVGhQZjZUVzlieWxMSmd3NkRDek5pWlROZVkrSHFXSGhMRzlFSk4zWWlVN01CSWFhOFJnU0FsRW90ZnFKOTE4MTM5NDFmUTdiK1NRTVpWQVlaa21MV1J1aGh0eWdRaDFCaUxWSXNEakV4SWdQTkVEUWdERXBBSUJybHV5RTJEbVRDV2lCK2dKZ0FkakJITUVwS0ljUWowYU9vaFpnNFlqekdXeUpBaVVDQUhVUU1OQjBrUmNFUWJiQmE0aVIvaS93SDNENVBNcGQydDVRQUFBQUJKUlU1RXJrSmdnZz09IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMV9QUkUiLCJGSURPXzJfMSJdLCJleHRlbnNpb25zIjpbImNyZWRCbG9iIiwiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsImxhcmdlQmxvYktleSIsIm1pblBpbkxlbmd0aCJdLCJhYWd1aWQiOiJhMzk3NTU0OWIxOTFmZDY3YjhmYjAxN2UyOTE3ZmRiMyIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImxhcmdlQmxvYnMiOnRydWUsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjp0cnVlLCJhbHdheXNVdiI6ZmFsc2V9LCJtYXhNc2dTaXplIjoxNTM2LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjgsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6OTYsInRyYW5zcG9ydHMiOlsidXNiIiwibmZjIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN30seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTh9XSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5IjoyMDQ4LCJmb3JjZVBJTkNoYW5nZSI6ZmFsc2UsIm1pblBJTkxlbmd0aCI6NCwiZmlybXdhcmVWZXJzaW9uIjoyNTYsIm1heENyZWRCbG9iTGVuZ3RoIjozMiwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjYsImNlcnRpZmljYXRpb25zIjp7IkZJRE8iOjF9LCJyZW1haW5pbmdEaXNjb3ZlcmFibGVDcmVkZW50aWFscyI6NTB9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMi0wNS0wOSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyNTYsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiRXhjZWxzZWN1IGVTZWN1IEZJRE8yIE5GQyBTZWN1cml0eSBLZXkiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDIyMDUwOTAwMiIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4yIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjQifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjItMDUtMDkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MjU2fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIzLTEyLTA4In0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiNDE4Mzc3ZTIxM2RiMTRhYmM2NTA5ZGI1ZTEwYzk1OThiNDJmOTJlYSIsIjUyNWVhOTZjNDdiOWE0NzkzM2EwOWI0ODcxYzM5OGRmNjQwN2FhYTQiXSwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiNDE4Mzc3ZTIxM2RiMTRhYmM2NTA5ZGI1ZTEwYzk1OThiNDJmOTJlYSIsIjUyNWVhOTZjNDdiOWE0NzkzM2EwOWI0ODcxYzM5OGRmNjQwN2FhYTQiXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkZlaXRpYW4gTXVsdGlQYXNzIEZJRE8gU2VjdXJpdHkgS2V5In0sImRlc2NyaXB0aW9uIjoiRmVpdGlhbiBNdWx0aVBhc3MgRklETyBTZWN1cml0eSBLZXkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCIsInJlbW90ZV9oYW5kbGUiXSwiaXNLZXlSZXN0cmljdGVkIjp0cnVlLCJpc0ZyZXNoVXNlclZlcmlmaWNhdGlvblJlcXVpcmVkIjp0cnVlLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlCZmpDQ0FTV2dBd0lCQWdJQkFUQUtCZ2dxaGtqT1BRUURBakFYTVJVd0V3WURWUVFEREF4R1ZDQkdTVVJQSURBeU1EQXdJQmNOTVRZd05UQXhNREF3TURBd1doZ1BNakExTURBMU1ERXdNREF3TURCYU1CY3hGVEFUQmdOVkJBTU1ERVpVSUVaSlJFOGdNREl3TURCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQk5CbXJScVZPeHp0VEpWTjE5dnRkcWNMN3RLUWVvbDJubk0yL3lZZ3Zrc1pucjUwU0tiVmdJRWt6SFFWT3U4MExWRUUzbFZoZU8xSGpnZ3hBbFQ2bzRXallEQmVNQjBHQTFVZERnUVdCQlJKRldRdDFidkczak02WGdtVi9JY2pOdE8vQ3pBZkJnTlZIU01FR0RBV2dCUkpGV1F0MWJ2RzNqTTZYZ21WL0ljak50Ty9DekFNQmdOVkhSTUVCVEFEQVFIL01BNEdBMVVkRHdFQi93UUVBd0lCQmpBS0JnZ3Foa2pPUFFRREFnTkhBREJFQWlBd2ZQcWdJV0lVQitRQkJhVkdzZEh5MHM1Uk14bGt6cFNYL3pTeVRabVVwUUlnQjJ3SjZuWlJNOG9YL25BNDNSaDZTSm92TTJYd0NDSC8vK0xpckJBYkIwTT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBRkFBQUFBVUNBTUFBQUF0QmtybEFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFCSFpwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFBRHcvZUhCaFkydGxkQ0JpWldkcGJqMGk3N3UvSWlCcFpEMGlWelZOTUUxd1EyVm9hVWg2Y21WVGVrNVVZM3ByWXpsa0lqOCtJRHg0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJa0ZrYjJKbElGaE5VQ0JEYjNKbElEVXVOaTFqTURFMElEYzVMakUxTmpjNU55d2dNakF4TkM4d09DOHlNQzB3T1RvMU16b3dNaUFnSUNBZ0lDQWdJajRnUEhKa1pqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWo0Z1BISmtaanBFWlhOamNtbHdkR2x2YmlCeVpHWTZZV0p2ZFhROUlpSWdlRzFzYm5NNmVHMXdQU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2SWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhodGJHNXpPbkJvYjNSdmMyaHZjRDBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5d2FHOTBiM05vYjNBdk1TNHdMeUlnZUcxc2JuTTZlRzF3VFUwOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXRiUzhpSUhodGJHNXpPbk4wVW1WbVBTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZjMVI1Y0dVdlVtVnpiM1Z5WTJWU1pXWWpJaUI0YlhBNlEzSmxZWFJ2Y2xSdmIydzlJa0ZrYjJKbElGQm9iM1J2YzJodmNDQkRReUF5TURFMElDaE5ZV05wYm5SdmMyZ3BJaUI0YlhBNlEzSmxZWFJsUkdGMFpUMGlNakF4TmkweE1pMHpNRlF4TkRvek16b3dPQ3N3T0Rvd01DSWdlRzF3T2sxdlpHbG1lVVJoZEdVOUlqSXdNVFl0TVRJdE16QlVNRGM2TXpFNk5Ua3JNRGc2TURBaUlIaHRjRHBOWlhSaFpHRjBZVVJoZEdVOUlqSXdNVFl0TVRJdE16QlVNRGM2TXpFNk5Ua3JNRGc2TURBaUlHUmpPbVp2Y20xaGREMGlhVzFoWjJVdmNHNW5JaUJ3YUc5MGIzTm9iM0E2U0dsemRHOXllVDBpTWpBeE5pMHhNaTB6TUZReE5Ub3pNRG95Tnlzd09Eb3dNQ1lqZURrNzVwYUg1THUySU9hY3F1YWdoK21pbUMweElPVzNzdWFKaytXOGdDWWplRUU3SWlCNGJYQk5UVHBKYm5OMFlXNWpaVWxFUFNKNGJYQXVhV2xrT2pKRk56RkNSa1pEUXpZM1JqRXhSVFk1TnpoRVFUbERRa0kyTkRZelJqa3dJaUI0YlhCTlRUcEViMk4xYldWdWRFbEVQU0o0YlhBdVpHbGtPakpGTnpGQ1JrWkVRelkzUmpFeFJUWTVOemhFUVRsRFFrSTJORFl6Umprd0lqNGdQSGh0Y0UxTk9rUmxjbWwyWldSR2NtOXRJSE4wVW1WbU9tbHVjM1JoYm1ObFNVUTlJbmh0Y0M1cGFXUTZNa1UzTVVKR1JrRkROamRHTVRGRk5qazNPRVJCT1VOQ1FqWTBOak5HT1RBaUlITjBVbVZtT21SdlkzVnRaVzUwU1VROUluaHRjQzVrYVdRNk1rVTNNVUpHUmtKRE5qZEdNVEZGTmprM09FUkJPVU5DUWpZME5qTkdPVEFpTHo0Z1BDOXlaR1k2UkdWelkzSnBjSFJwYjI0K0lEd3ZjbVJtT2xKRVJqNGdQQzk0T25odGNHMWxkR0UrSUR3L2VIQmhZMnRsZENCbGJtUTlJbklpUHo0NzdKWEZBQUFBWUZCTVZFWC8vLzhFVnFJWFphdkcyT29xY0xHMnpPT2t3dDBCU0p0cWxjWFY0dSthdXRsV2hiems3UFVBTVk5SGNyS2p0TmJxOGZlQWw4YUJvc3p6OXZwZGpzR0dxdEYzbjh1VHNOU1pwYzZKc05UNSt2MHhZS251OFBmZjUvTDQ4ZmcvZnJpY3pKZ1lBQUFEQUVsRVFWUjQya1JVQ1piRElBakZYWk9ZMVRhdE5jMzliemtzU1ljM3I0TUU0Zk1CQWFENnpsOHkvOVRPZ2V0OGQ1amZONzhid00vZERDUnBSNTIxelhmb2pISjA1SUl5aEJBVVNWQU9OZEd6Qll0MmY3S0ZyZmtKYUFrSGg5RlpoY0RYSFJrVEtvOU1MaWhHYWF2SW1uVjNxeUVYMEVwcmd6LzREd1VEN2tDSFJuZDhRRk40M0dvNFVWbUREZ3phNHcyN29pemRBMitjSyt1dVVwampvMit4d2MvNDJXNTB4NUxHWWVEQnNSMEhWSXg1eDhpRjYwQ2JsYlRFRWtGcjI3Yk5EQlVWU3ExT0tWUGJFNjJiM0VIOEZxQmc1T09PRXVjMnQ4WkppcU1PdUdwK2NLamc3d1ZHY2VvenFONHB4Z1ZQUWtqRllnYlZKS0RVaERDallyYXdQNXE0RVRnQzlmSU1SSHRpdHBRY0N2Sk9FTGNiTXNRZ25jaVJrbGpweVFqdkc0NGpxQlVFVEZpQmkxUEVJeWVrT3pzVytUeTVjTEhvczVSK2RNUzFMdFNTeGYzZ1FIY3pSMkNJNGdNTnBXNElSQTFRTWE2dEo0K0M2dUh1R0U4bU5ESXlGcWcvT1AvTU1VdWVTNklxOFM5MGRBZUJKU0V5L3FLa0srQk53ejhjWVk0amI1SjZ1NGlXQ0kyQjFaNTZMVzVrRWM0aGtkTXBzdlVDNTU4NVNYMFF1YmNnTnF5ZmdERkVjVHQrNDAvMFM1Tngwd2FDdzNPS2tjT2JBNUluMEFZcDAxcGpqdzJuNjI2VURqdEh3YTI4aUh1VEtxdHJ2K3JlVzQxTlo2aUdscjd1dUxKQ2ZrRnRjdGNHMDRzZ20xZU5TK1phRG5wYVRFckdveVg1SksyaU16OHhzMG5Pd1dHY1BETjQ5cWFDZDRiekpvekRabS9hQksrRW96THcrWGhOQmlZd0hmMHNpT3UxWFBrRy96S3d2cVlLY2ZTd0RFY0gvb1VlMDdlcy9XUThySXlnMkRPWGo4dGprWmR1REIvYjhoekRsbE1NT0NTNUJFbmQ1MzRmOHRpM1VaYzRrTXMzeEx5YWZNU3NKaGRHOFhQcWpOazV0QWdPMjVmZUtDaG5WZERqL0owRk1rT3NVL3hNQnYwd0ZoWWVFR2ZWSDEzZnVEVTB5REZMYTRmYzdSbldIQmZ1VEZWMnRFbU53YWRjN2FjM1VZMmpmQmw3SFQzNmZlMzRpUU81bU5DRkZCVzA3S2pQZ3FoT0xVMDF2WjhQdWVaMkpDbEZaTjhqa1VzNjl1a2E5ZVBwNitFZkw0QUY1K055d1NiaXJIdGNCOE1sL2drd0FFamtLNjRLakhQZUFBQUFBRWxGVGtTdVFtQ0MifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAxOC0xMS0wMSIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiTXVsdGlQYXNzIEZJRE8gU2VjdXJpdHkgS2V5IiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVMkYxMDAwMjAxODAyMjgwMDYiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMC4xIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjAuMSJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAxOC0xMS0wMSJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMTgtMTEtMDEifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyIyZTc5NzllMDVjNzdmZjY4N2NjZWYyYjE0NWUxZTMxNjYyMjBlNmU0Il0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjJlNzk3OWUwNWM3N2ZmNjg3Y2NlZjJiMTQ1ZTFlMzE2NjIyMGU2ZTQiXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ill1YmlLZXkgQmlvIFNlcmllcyAtIE11bHRpLXByb3RvY29sIEVkaXRpb24ifSwiZGVzY3JpcHRpb24iOiJZdWJpS2V5IEJpbyBTZXJpZXMgLSBNdWx0aS1wcm90b2NvbCBFZGl0aW9uIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NiwicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoyfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCIsInJlbW90ZV9oYW5kbGUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlEU0RDQ0FqQ2dBd0lCQWdJVURxRVJ3KzRSbkdTZ2d4Z1Vld0pGRVBEUlozWXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFESTdYbkgrWnZEd01DUVU4TThaZVY1cXNjdWJsdlZZYWFSdDNZYmF4bjlnb2RMeDVzd0gwbFhyZGdqaDVoN0ZwVmdDZ1lZWDdFNGJsMXZielVMZW1yTVdUOE4zV01HVWU4UUFKYkJlaW9WN1cvRStoVFpQLzBTS0pWYTNld0tCbzZVTGVNbmZRWkRyVk9SQWs4d1RMcTJ2NUxsajV2TWo3SnRPb3RLYTlKN25IUzhrTG16WFhTYWowU3dFUGg1T0FaVVROVjR6czFidm9UQVFRV3JMNC9KOVF1S3Q2V0NGRTVuVU5pUlFjRWJWRjhtbHFLMmJ4Mno2b2tWbHR5RFZMQ3hZYnBVVEVMdlkxdXNSM0RUR1BVb0lDbE9tNGNycHduRFJMVkh2alllUEdCQi8vcEV5enhBL2djU2N4andhSDFaVXc5Ym5TYkh5dXJLcWJUYTFLdmpBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlRxdDBLUW5neDdaSHJiVkh3RHVueE9uOWloWVRBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBcVFhQ1dNeFRHcVZWWDdTazdra0ptVXVlVFNZS3VVNitLQkJTZ3dJUm5sdzlLN0hlMUlweFowaGR3cFBOaWtLam1jeUZnRlB6aEltd0hKZ3h4dVQ5MFB3M3ZZT2RjSkpOa3REZzM1UFhPZnpTbjE1Y0ZBeDFSTzBtUFRtSWI4ZFhpRVdPcHpvWHZkd1hETTQxWmFDRFlNVDd3NElRdE15dkU3eFVCWnEyYmp0QW5xL05EVUE3YmU0SDhIM2lwQysvK05LbFVyY1VoK2o0OEs2N1dJMHUxbTZGZVF1ZUJBN24wNmo4MjVycURxc2FMczlUYjdLQUhBdzhQbXJXYU5QRzJraktlcnhQRWZlY2l2bEZhd3AyUldadnhyVnRuM1RWMlNCeHlDSkNrWHNORDA1ZENFclZIU0pJcytCZHRUVk5ZOUF3dHlQbW55YjB2NG1TVHp2V2R3PT0iLCJNSUlEUGpDQ0FpYWdBd0lCQWdJVVh6ZWlFREpFT1R0MTRGNW4wbzZaZi9iQndpVXdEUVlKS29aSWh2Y05BUUVOQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU1aNi9UeE04cklUK0Vhb1B2Rzgxb250TU9vLzJtUTJSQndKSFMwUVpjeFZhTlh2bDEyTFVoQlo1TG1pQlNjSVpkMVJueDFvZDU4NWgrL2RoSzdoRW03SkFBTGtLS3RzMWZPNTNLR05MWnVqejVoM3dHbmNyNGh5S0YwRzc0Yi9VM0s5aEU1bUdORDZ6cVljaENSQUhmcllNWVJERjRZTDBYNEQ1bkdkeHZwcEF5Nm5rRW10V21NbndPM2kwVEF1Y3NyYkU0ODVIdkdNNHIwVnBnVmRKcHZnUWppVEpDVElxK0QzNWh3dFQ4UURJdituR3ZwY3lpNXdjSWZDa3p5Q2ltSnVraFl5NktvcU5NS1FFZHBOaVNPdld5RE1UTXQxYndDdkV6cHc5MXUrbXNVdDRyajBlZm5POXMwWk93ZHdNUkRuSDR4Z1VsNVpMd3JyUGtmQzEvMENBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUI4R0ExVWRJd1FZTUJhQUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUU13RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCRFFVQUE0SUJBUUMzSVcvc2dCOXBaOGFwSk5qeHVHb1grRmtJTGtzMHdNTnJkWEwvY29VdnNyaHpzdmw2bWVQTXJiR0pCeUoxWG5xdUI1c2djUkVORnhkUUZtYTNtaW84VXBmMW93TTFacmVYckowbUFERzJCcGxxYkpueGl5WWErUjExcmVJRlRXZUloTU5jWktzRFpyRkF5UHVGakNXU1F2Sm1OV2U5bUZSWUZnTmhYSktrWEliNUgxWGdFRGx3aWVkWVJNN1ZvbEJObGxkNnBSRktsWDh1c3Q2T1RNT2VBRGwyeE5GMG0xTFRoU2RldVh2RHlDMWc5K0lMZnozUzZPSVlnYzNpcm9SY0ZEMzU0ZzdyS2Z1NjdxRkF3OWdDNHlpMHhCVFByWTk1cmg0L0hxYVVZQ0EvTDhsZFJrNkg3WGszNUQrV1ZwbXEyU2gveFQ1SGlGdWhmNHdKYjBiSyIsIk1JSURTakNDQWpLZ0F3SUJBZ0lVVG5iYkdJUjJOSHZ6cUlLRkFlUXdHMVhCaXMwd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JCSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVFZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU9zWGozazA0QmFuNFRZZHRaS3FEL09QSnh5RHlhUG1DQlVGVWlhWklnVHRlWm5qM1gyNURoZ3BaWlhzQzREMHlkSWNybEE2d05VSW5PUkwvTDl6QmJURUlNQVZNR282ZzdVS0FtYjJNRjZBSGJuaFlKZDllaWt1cFZOV1NoSE5ZTmM0R0JkTzFZTjZBZlVxdkpoSGJlM1Y0U05NUG1CUkVLSlBWejdUaHdnbWdnVGU4V3MySzAvd3NxdjJ3U0U3cGJDQnNVWmhJWDUxYlpNM3BxRHdKUFRtUkZFdnQwLzZ0RzVlTzhGM2oxNE9YcWZFaG1qbjFWdnhLRFlRT0xaQXhDd3dnQzBQNENkZld2M3k4UFNSOEkzNTRoTzFZK0d6Tmp2SXFYMzhOS0x5d3VJWUhGZXJPeE5seEVNQnZGaFlCdVJ1WUFra2dVYVBxTjZVQmhzSUxyc0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ0NvUkhoaXlObmJuWFJXSUw2WkJYb0JYOVlUTUI4R0ExVWRJd1FZTUJhQUZDQW9VQ0VicEZwYjZGUExuWjNGNVB4c0wzb2ZNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUNRRmFmSkkxLzVXZzlDRUVpbUUxUlA1NFJnUXdUTlRPT1FzTEFDVGUrckl0bEZRekM5WkRoclY4Mjh5WDdqenkrQUFzcDNpeks3VDF0aDJkbDdtK3R1MHN3MlBhL29sYzAybnQ2UHlJdzM0OGdhSHpoSTErMEtFNDVxeHZGRGVMMmxNeGJQZkNZdnlFRWFZemppUUVMVTU5NTFwWEdXeUtNYS80Zkx0TytaS09YaE11VmVxNHJYRFBJNTRXNkpIT2lBYWlLZGl3KzVlM2Mya3QvakZJUXRNNnZNWGc5TE5GemRqRVROdDIwVlg5UWV2UnBGWmZ1Y01HOXdDYVFEb0ZsUHpwVE1KS2hQZXYvaW1KbVpZaEtmcjBsTGNlbXRxakl4TEFvcVpkT1lmSEJnNit2QWNkUEkvaWF1R3BVQXY3WCtVS05tRHdqWjJCYUg0c0x3aEIybSIsIk1JSURTRENDQWpDZ0F3SUJBZ0lVVWNtTVh6UklGT2dHVEswVGIzZ0V1Wllaa0JJd0RRWUpLb1pJaHZjTkFRRUxCUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JCSURFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURtNTU1YldZOVdXK3RPWTBySVdIbGRoK2FOYW5vQ1pDRmg3R2szWVpyUW1QVXcwaGtTRzZxWUhRdFArZlp5UzMzVkVydmcrQlFxbm11bWdOaGZ4RnJrd0VaRUxlaWRCY0M4QzRBZzRucXFpUFdwenN2STE3TmN4WWxJbkxOTEZjWlkvK2dPaU42Wk9UaWhPNS92QlpNYmo5cmlhQWNxbGlZbU5HSlBnVGNNR2FFQXlNekVNTnkybm02RXArcGpQNWFGNmdpMjF0L1VRRnN1SjFqMlJqL3luTS9TZFJ0K2VjYWw1T1lvdHhIa0ZiTDl2dnYyQTJPdjVJVFpDbHc0Yk9TOW5weXBRaW1PWjVRQVl5dG1ZYVFwV2wvcE1ZejZ6U2o4UnFrVkRORUpHcU5mVEtBMml2TFl3WDZsU3R0TVBhcGcwSjg0bDlYMHZvVk4vRnBTNFZDVkFnTUJBQUdqWmpCa01CMEdBMVVkRGdRV0JCUWdLRkFoRzZSYVcraFR5NTJkeGVUOGJDOTZIekFmQmdOVkhTTUVHREFXZ0JUUzd1OWFJbzA2YlZ3amx6M3loZFVtOFNWN2tqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQTRHQTFVZER3RUIvd1FFQXdJQmhqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFZTXpnTHJKTElyME9vdlFuQVpyUklHdWFiaUhTVUtTbWJMUldwUmtXZUF0c0NoREVIcFhjSi9iZ0ROS1lXb0hxUTh4UlVqQjRDeWVwWWV2YzNZbHJHOG83ekh4cGZWY2FvTDVTZXVKa3pIeEtuNGJUYVNwOStNdndhbW5wNjRrWk1pTmJGTGtuZlA5a1lLb1JIa01XaGVSSjFVc1AxejRTY21rQ2VJTGZzTXM2dnFvdnFqV0NsRnNKcEJjc2x1WUhXRjdiQkoxbjRSd2crQVRFb3BZNElnR3Y2WnZ3YytBOXIrQVQyaHFwb1NrWW9BbCtBTll3Z3NsT2Y5c0plMFYrVEE5WVkvVWxhQm1QUFRkMC8vcjl3dmNlUFdaa1BqS29BQy96VU5oZkRiaDRMVjhHSHMzbHlYMlhvbUwvTE5jOEpZenlJYURFaEdRdmVvUGhoL3RyMWc9PSIsIk1JSURTakNDQWpLZ0F3SUJBZ0lVUjM4bXEyNlNmMnN6VlYyQmRHNldFTjdrdVdVd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVJZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU5ZMFdiOW9Qb1JvS29ReVdQYUpwejExdnJXVGc2elR0bU5qMlZvS1JueXZLR1JxcHpiODN3NWw2WUE5NlVZa1lCRFFQMGlsTzJEUGU2d1dxVlI1ekRmUnpkY0g4YmgrTDdkR0d2YWU2aFJUWmhrRmtDcFhEczRIY2NrbnJEZjhGQ2xKN0hlMzlKZjQyL0cxUW0yeno5V1dtclBYdGdpSy94MDVHanNRZkd1REcxemY1UVRVVWllOGx3eW1LM1RmZE92TmVlSkFBUGUycG43SXRmUmIrclZyTldpRHpsUm4ydk5uWjJ3UG80d0gvV0o2ZGhYWkcrck1XVCthNkJvY2cxVWZJdzZrZHVuRzRiVHBaenN2YWNGWXlSMG1wZitEZU9ucFNXQW15d0pXSHZUbGYyWVh4RnllWGNUQUNkUWxjTU5HSjJWaFpRNDh4dFA1L1JCUC84a0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ2h5NDJva2lxY1RTMWlxYS9IUldqa0JuNEgvTUI4R0ExVWRJd1FZTUJhQUZPcTNRcENlREh0a2V0dFVmQU82ZkU2ZjJLRmhNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUFuK1JISVBidE1FRE5kVDFnOEgvUml0QWtVZExnQXQxdFdHV25sajlrbmJ2NC80R2xYN0M5cDQ1ZWZQTzkvYVpMNk9WMVhSS0JpNkttdEJXNUs3bnVZRW5NeC81QnFCU2JMVDdyaGR1QzQ5VEJlTWI5UEhkWHNUbFNWTlllZnIxZEdpZHI0ajB4VkJRTGIxcmtuREFiZFdEektmdm5heUtPOEZyd2U3SHg4NDNNRy9ySitjMFhydVV2YmZWVENITGlJV2hNN29ORGhMOHhvYjZ4VW85S0xLY1NMK0l0WXNPMy85V2I4UTlHanNxTDRGWHNEY0cxU2FZaDdLcGZ1TW1PaXhxekpaTzJuSWljUFlSZzFJMlN1aVVmWU83MHRtZEhjYmwra1NRbVNZdDdycTR2aUlMZzJHeDNqOXJJVHVXVGpiYVVhU1NReGdPbU1TSHV5ek1BQyJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFmQ0FZQUFBQ0dWcytNQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUhZWUFBQjJHQVYyaUU0RUFBQWJOU1VSQlZGaEhwVmQ3VE5WMUZELzNkNTl3ZVFTSWdTOUFRQVhjRkxBUVppOWZwZVZ6MXRZL1dUWnI1V3hwYzdXNWtuTGE1akkzWjg1c3JTMm5NMnNqdFd3WlM3SVVINEg0eENuRVF4NERBWkY3NFY3dXM4ODV2OS9sSW5CdlZKL0I0UHY5bnUvNW51LzVudk01NTZmekEvUXYwSGIvSXJYM1ZGS1BvNDVjbm00aW5VSVdZd0xGUm1aUVV1d2pGRy9OMWlSSGgxRVowTlJWUnVkcXQxQmQrMm5TS3lTL09oeXMwK2xrM2UvM2tROXF2RDRaVXRhNFZWU1V1WTBlaXB5aVRoQWZvY29PUlZnRHV1dzNxS1JpQWQzcmJjRXRqVGpZSW9mNldhSHNDbXpWUFdDTXgrY2doOHRMcVdNS2FNV3NVakxxbzJSdEpJUTBvT3ptZXJwUXU0ZXNaZ3NPTmtHeEg3ZDBrZHZUVDE3czRPTVU3Vkk4WmhqZ0dhTStBcTlpRU51OFBpZjF1ZHowN013dktXZjhHbFZvQ0VZMDRQQzVXZFRhWFlGYlI4dk52TDUrM0tnZmI1eE5NeWE5UmFtSml5bmFNbEdUVnRGbHI2YmE5dStwcW5FWDR1TXVSUmdqU1lFaHJON3V0RkZlNmxxYWw3TmZrdzVpbUFHSHluUHBiazhWbVkweHN0bnB0bEZDVkNZdHpUdUJOODNRcE1MalR0ZXZkUHpTVW5KN2U4bWtqeFozOWZYYktEZmxkWnFidlUrVFVnR25CVkY2ZlEyaVBIZzRXMTZVV1V3dnpiazE2c01aRStQbjBwdno3SlNldUF5ZXM4bGNwQ21hS3VvL3ArcVdyMlVjd0lBSFdydlAwWUV6aFhBdExBYnNzSGhwN2lHYW12eWlqUDhyeXFyWFVXWDlYb293eHlBdWZOQnJwNDNQT0JGWFpsa2Y4TURSaXFjcHlvd0F3cHV6MngrZld2ei9EdGRlOXNtc3p5Z3RjUjZDMXdiZHpCbDZPbHE1V05ZWTRvR2F0aEpNcmtURXgwakFSU0hBVnMrNXJZa1FOWGIrUWdmUExzUTZnWHlJbnNyZVFmbXBtN1JWRllmTDg2bjFmaVVPa1l2U2hrVVB4dmJ1a3pveTZLMWloTTFobzNYelc2RXZTZlhBK2RwaVdHYVdkK2RvWHpMem1Hd0tZRkxDQXNSQWxQQkFoTWxDRlhVN3RCVVZQcjhIZ1ZjSkhXcStGMDBwbHIrRE1UZHJQNHp2eFkxMWtOTWh4VCtTZVRHZytkNFY1TFFKaXR5VUdKTkI4VkZac2pnWUJaTS9JSS9YQ1RrajBxeURPcEYyQVZRMTdDSWpVcC9EblQxVWtMNUY1Z2RqK3NTMXdnMWdFM2dpZ202MGZDWHpTblBYYnlBUGJJWHYrSURwRTE2VGhhSElTOXNreWhsbU1FNUYzY2ZxQUtocTJDMEU1UEgxZ1lhWGFMUERrWkcwSERKT25LV0hwNTFJMHo1U091eDhlMVdBdVp6ZEhRclRrcDhUbWpYb0krbGEwd0dac3p1YnFiTzNpZlE2QS9XN3ZWU1lzVjNtUjBKS3drS2M0V0hpQmttUjhJM0NDZ0k4N29PTDRxelQ1UCtSVUpCZWpFT2dBUEs4aFlQemF0TStlSVRwMklPOXlUUW1lcm9tUFJ4eDFxeEFjc2lsZS91YlNlRWJjV1FHWUVDZ2hjTFkySHlLam9nakgyNWhNcGpwVXYxT3VnbGk0ZWgyZVJ3ME8zMmJKamt5dUNnTnpnMHZ6bFlNU2lTczB1b280TUc3aE1PakNFYVgxeUZFMG5TdmpCenVUbkVwSzg2WjhJb3FGQUl1Ync4a2c5QXJFYVJFV1NaSStqSDRYYnA2ZzlFOUVuSlQzb2FSekROK01VSkJRREhuNTZhOG9VbUVCdXNPeEJzL041K3RKRWJQa0FGRGo4VUd2T3MvSVd2Y1NnbEdCaHZTNy9GVFlmcFdHWWREWThmUEF4V1NBMzVzVEM0cDQrTG00QWFxSW9QZVF0ZnVmSzZKaDBaaHhsYnNVWE9TbVhOaWZENVpUQWt5RG9mYmJjY2x4bkE4V05BcXhDYlJOeWtoWHhRcGFEdzY3ZlhVWWJzaUcwS2h0djJvZUl2aDhyaFFNWU9jRUFxWEcvZUkrem5nT2M1eXhyOHE4MklBTTFjL0ZMRk9wbHF1NWVGUVhyTVp6R2NWQ2pZYkxXRzVJNEJUMWV1UnJsYnh0Tk90TWl0RERFaExYSUl5bkFBdnVPRVdFM1gzTmRBZnQ5NFZnYUc0MlhJUXQwWlg2UGVDRS9xUUZlOXJLNkh4N1lVNTBLdkg3Zlc0ZlMrcTdLS0JKeHNnZ0JYNXBTQUdoMWpJclZoNXpRNnczUmZhYWhCWG0vYUNiQ1pUakNVRlVUeVdacVc5cDYyTWpKUFhWcU9yUGdNTzROdjc0R2tmK293ZnROVkJEUW5qRkpxSFN3MTdwWHZoV1c1S1pxZS9RNDlOL1VTVENBVldvUVhGSUhCSFhYZTNGUHJVRHN1R0RtdEYvaEhLVEhwZWt4aGlBT1BJK1NKcTZTNkhGNEk5WVd6a0JKVG80NmlVTXpXcDhQaXIvUmlkdUx4S1lzU2tzVjh2TGxPUXZoR1gyWWxSME9CaEJqQyt1L2dFY3ZZMEFwSzdZazQxTnhqUFNRbldGSFRGNjZVcmpnZXZCOEN1NWErbDJ2WVNSUHR1VkRvNzNoaGRNU0huVVg3dFRqc1ZaR3hBbC9XcHRpT0lFUTFnbkwyOW1YNi90UjF0bWxrWWo4VzRYK0NTaldjVURHWTFOcFMvQzdoU0txaU1MTS9sMlFtU1daNzNEZHorZ2lvOEJDRU5ZUFE0NnFua3p3WFVicXZCa3hqVVFzV2ZaRmdidW8zckFmK3dON2pPTzkwK3lueDRQaTNMKzBuWUwxU2NoRFVnQVA0Z1BWLzdJZDFxKzFIU2htdUdrSXFXUlBneXhNRnFQOEhmalRualh3WTViUWZiSmN0Nk9JektnTUhvdEYvSGUxZWdzYXhIU3FHNndmZG1RNXg4TnlURkZxQmNwMmlTb3dIUjN5azUrMzZoRjd2WEFBQUFBRWxGVGtTdVFtQ0MifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wMi0wMSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzYsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWXViaUtleSBCaW8gU2VyaWVzIC0gTXVsdGktcHJvdG9jb2wgRWRpdGlvbiIsImNlcnRpZmljYXRlTnVtYmVyIjoiVTJGMTAwMDIwMjUwMjAxMDAzIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDItMDEiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTAyLTA2In0seyJhYWd1aWQiOiIxOTA4M2MzZC04MzgzLTRiMTgtYmMwMy04ZjFjOWFiMmZkMWIiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjE5MDgzYzNkLTgzODMtNGIxOC1iYzAzLThmMWM5YWIyZmQxYiIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IDUgU2VyaWVzIn0sImRlc2NyaXB0aW9uIjoiWXViaUtleSA1IFNlcmllcyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzMsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfSx7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDM4NHIxX2VjZHNhX3NoYTM4NF9yYXciLCJlZDI1NTE5X2VkZHNhX3NoYTUxMl9yYXciLCJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURIakNDQWdhZ0F3SUJBZ0lFRzBCVDl6QU5CZ2txaGtpRzl3MEJBUXNGQURBdU1Td3dLZ1lEVlFRREV5TlpkV0pwWTI4Z1ZUSkdJRkp2YjNRZ1EwRWdVMlZ5YVdGc0lEUTFOekl3TURZek1UQWdGdzB4TkRBNE1ERXdNREF3TURCYUdBOHlNRFV3TURrd05EQXdNREF3TUZvd0xqRXNNQ29HQTFVRUF4TWpXWFZpYVdOdklGVXlSaUJTYjI5MElFTkJJRk5sY21saGJDQTBOVGN5TURBMk16RXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFDL2p3WXVoQlZscWFpWVdFTXNyV0Zpc2dKK1B0TTkxZVNycEk0VEs3VTUzbXdDSWF3U0RIeTh2VW1rNU4yS0FqOWFidlQ5TlA1U01TMWhRaTN1c3hvWUdvblhRZ2ZPNlpYeVVBOWErS0FrcWRGbkJubHl1Z1NlQ09lcDhFZFpGZnNhUkZ0TWprd3o1R2N6MlB5NHZJWXZDZE1IUHR3YXowYlZ1em5ldWVJRXo2VG5RakU2M1JkdDJ6YnduZWJ3VEc1WnliZVdTd2J6eStCSjM0WkhjVWhQQVk4OXlKUVh1RTBJek1aRmNFQmJQTlJiV0VDUktnanEvL3FUOW5tRE9GVmxTUkN0MndpcVBTemx1d24rditzdVFFQnNValRHTUVkMjV0S1hYVGtOVzIxd0lXYnhlU3lVb1RYd0x2R1M2eGx3UVNnTnBrMnFYWXdmOGlYZzdWV1pBZ01CQUFHalFqQkFNQjBHQTFVZERnUVdCQlFnSXZ6MGJOR0poamdwVG9rc3lLcFA5eHY5b0RBUEJnTlZIUk1FQ0RBR0FRSC9BZ0VBTUE0R0ExVWREd0VCL3dRRUF3SUJCakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBanZqdU9NRFNhK0pYRkNMeUJLc3ljWHRCVlpzSjRVZTNMYmFFc1BZNE1ZTi9oSVE1Wk01cDdFamZjbk1HNEN0WWtOc2ZOSGMwQWhCTGRxNDVyblQ4N3EvNk8zdlVFdE5NYWZiaFU2a3RoWDdZKzlYRk45TnBtWXhyK2VrVlk1eE94aThoOUpESWdvTVA0VkIxdVMwYXVuTDFJR3FyTm9vTDltbUZuTDJrTFZWZWU2L1ZSNkM1K0tTVENNQ1dwcE11SklaSUkydjlvNGRrb1o4WTdRUmpRbExmWXpkM3FHdEtidzd4YUYxVXNHLzV4VWIvQnR3YjJYMmc0SW5waUIveXQvM0NwUVhwaVdYL0s0bUJ2VUtpR24wNVpzcWVZMWd4NGcweExCcWNVOXBzbXlQeksrVnNndzJqZVJRNUpsS0R5cUUwaGViZkMxdHZGdTBDQ3JKRmN3PT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZkNBWUFBQUNHVnMrTUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFIWVlBQUIyR0FWMmlFNEVBQUFiTlNVUkJWRmhIcFZkN1ROVjFGRC8zZDU5d2VRU0lnUzlBUUFYY0ZMQVFaaTlmcGVWejF0WS9XVFpyNVd4cGM3VzVrbkxhNWpJM1o4NXNyUzJuTTJzanRXd1pTN0lVSDRINHhDbkVReDREQVpGNzRWN3VzODg1djkvbEluQnZWSi9CNFB2OW51LzVudS81bnZNNTU2ZnpBL1F2MEhiL0lyWDNWRktQbzQ1Y25tNGluVUlXWXdMRlJtWlFVdXdqRkcvTjFpUkhoMUVaME5SVlJ1ZHF0MUJkKzJuU0t5Uy9PaHlzMCtsazNlLzNrUTlxdkQ0WlV0YTRWVlNVdVkwZWlweWlUaEFmb2NvT1JWZ0R1dXczcUtSaUFkM3JiY0V0alRqWUlvZjZXYUhzQ216VlBXQ014K2NnaDh0THFXTUthTVdzVWpMcW8yUnRKSVEwb096bWVycFF1NGVzWmdzT05rR3hIN2Qwa2R2VFQxN3M0T01VN1ZJOFpoamdHYU0rQXE5aUVOdThQaWYxdWR6MDdNd3ZLV2Y4R2xWb0NFWTA0UEM1V2RUYVhZRmJSOHZOdkw1KzNLZ2ZiNXhOTXlhOVJhbUppeW5hTWxHVFZ0RmxyNmJhOXUrcHFuRVg0dU11UlJnalNZRWhyTjd1dEZGZTZscWFsN05ma3c1aW1BR0h5blBwYms4Vm1ZMHhzdG5wdGxGQ1ZDWXR6VHVCTjgzUXBNTGpUdGV2ZFB6U1VuSjdlOG1ranhaMzlmWGJLRGZsZFpxYnZVK1RVZ0duQlZGNmZRMmlQSGc0VzE2VVdVd3Z6YmsxNnNNWkUrUG4wcHZ6N0pTZXVBeWVzOGxjcENtYUt1by9wK3FXcjJVY3dJQUhXcnZQMFlFemhYQXRMQWJzc0hocDdpR2FtdnlpalA4cnlxclhVV1g5WG9vd3h5QXVmTkJycDQzUE9CRlhabGtmOE1EUmlxY3B5b3dBd3B1ejJ4K2ZXdnovRHRkZTlzbXN6eWd0Y1I2QzF3YmR6Qmw2T2xxNVdOWVk0b0dhdGhKTXJrVEV4MGpBUlNIQVZzKzVyWWtRTlhiK1FnZlBMc1E2Z1h5SW5zcmVRZm1wbTdSVkZZZkw4Nm4xZmlVT2tZdlNoa1VQeHZidWt6b3k2SzFpaE0xaG8zWHpXNkV2U2ZYQStkcGlXR2FXZCtkb1h6THptR3dLWUZMQ0FzUkFsUEJBaE1sQ0ZYVTd0QlVWUHI4SGdWY0pIV3ErRjAwcGxyK0RNVGRyUDR6dnhZMTFrTk1oeFQrU2VUR2crZDRWNUxRSml0eVVHSk5COFZGWnNqZ1lCWk0vSUkvWENUa2owcXlET3BGMkFWUTE3Q0lqVXAvRG5UMVVrTDVGNWdkaitzUzF3ZzFnRTNnaWdtNjBmQ1h6U25QWGJ5QVBiSVh2K0lEcEUxNlRoYUhJUzlza3lobG1NRTVGM2NmcUFLaHEyQzBFNVBIMWdZYVhhTFBEa1pHMEhESk9uS1dIcDUxSTB6NVNPdXg4ZTFXQXVaemRIUXJUa3A4VG1qWG9JK2xhMHdHWnN6dWJxYk8zaWZRNkEvVzd2VlNZc1YzbVIwSkt3a0tjNFdIaUJrbVI4STNDQ2dJODdvT0w0cXpUNVArUlVKQmVqRU9nQVBLOGhZUHphdE0rZUlUcDJJTzl5VFFtZXJvbVBSeHgxcXhBY3NpbGUvdWJTZUViY1dRR1lFQ2doY0xZMkh5S2pvZ2pIMjVoTXBqcFV2MU91Z2xpNGVoMmVSdzBPMzJiSmpreXVDZ056ZzB2emxZTVNpU3MwdW9vNE1HN2hNT2pDRWFYMXlGRTBuU3ZqQnp1VG5FcEs4Nlo4SW9xRkFJdWJ3OGtnOUFyRWFSRVdTWkkrakg0WGJwNmc5RTlFbkpUM29hUnpETitNVUpCUURIbjU2YThvVW1FQnVzT3hCcy9ONSt0SkViUGtBRkRqOFVHdk9zL0lXdmNTZ2xHQmh2UzcvRlRZZnBXR1lkRFk4ZlBBeFdTQTM1c1RDNHA0K0xtNEFhcUlvUGVRdGZ1Zks2SmgwWmh4bGJzVVhPU21YTmlmRDVaVEFreURvZmJiY2NseG5BOFdOQXF4Q2JSTnlraFh4UXBhRHc2N2ZYVVlic2lHMEtodHYyb2VJdmg4cmhRTVlPY0VBcVhHL2VJK3puZ09jNXl4cjhxODJJQU0xYy9GTEZPcGxxdTVlRlFYck1aekdjVkNqWWJMV0c1STRCVDFldVJybGJ4dE5PdE1pdERERWhMWElJeW5BQXZ1T0VXRTNYM05kQWZ0OTRWZ2FHNDJYSVF0MFpYNlBlQ0UvcVFGZTlySzZIeDdZVTUwS3ZIN2ZXNGZTK3E3S0tCSnhzZ2dCWDVwU0FHaDFqSXJWaDV6UTZ3M1JmYWFoQlhtL2FDYkNaVGpDVUZVVHlXWnFXOXA2Mk1qSlBYVnFPclBnTU80TnY3NEdrZitvd2Z0TlZCRFFuakZKcUhTdzE3cFh2aFdXNUtacWUvUTQ5Ti9VU1RDQVZXb1FYRklIQkhYWGUzRlByVURzdUdEbXRGL2hIS1RIcGVreGhpQU9QSStTSnE2UzZIRjRJOVlXemtCSlRvNDZpVU16V3A4UGlyL1JpZHVMeEtZc1Nrc1Y4dkxsT1F2aEdYMllsUjBPQmhCakMrdS9nRWN2WTBBcEs3WWs0MU54alBTUW5XRkhURjY2VXJqZ2V2QjhDdTVhK2wydllTUlB0dVZEbzczaGhkTVNIblVYN3RUanNWWkd4QWwvV3B0aU9JRVExZ25MMjltWDYvdFIxdG1sa1lqOFc0WCtDU2pXY1VER1kxTnBTL0M3aFNLcWlNTE0vbDJRbVNXWjczRGR6K2dpbzhCQ0VOWVBRNDZxbmt6d1hVYnF2Qmt4alVRc1dmWkZnYnVvM3JBZit3TjdqT085MCt5bng0UGkzTCswbllMMVNjaERVZ0FQNGdQVi83SWQxcSsxSFNobXVHa0lxV1JQZ3l4TUZxUDhIZmpUbmpYd1k1YlFmYkpjdDZPSXpLZ01Ib3RGL0hlMWVnc2F4SFNxRzZ3ZmRtUTV4OE55VEZGcUJjcDJpU293SFIzeWs1KzM2aEY3dlhBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMV9QUkUiLCJGSURPXzJfMSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJsYXJnZUJsb2JLZXkiLCJjcmVkQmxvYiIsIm1pblBpbkxlbmd0aCJdLCJhYWd1aWQiOiIxOTA4M2MzZDgzODM0YjE4YmMwMzhmMWM5YWIyZmQxYiIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImxhcmdlQmxvYnMiOnRydWUsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjp0cnVlLCJhbHdheXNVdiI6ZmFsc2V9LCJtYXhNc2dTaXplIjoxMjgwLCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjgsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4LCJ0cmFuc3BvcnRzIjpbInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi04fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotMzV9XSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5Ijo0MDk2LCJtaW5QSU5MZW5ndGgiOjQsImZpcm13YXJlVmVyc2lvbiI6MzI5NDczLCJtYXhDcmVkQmxvYkxlbmd0aCI6MzIsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjoxLCJyZW1haW5pbmdEaXNjb3ZlcmFibGVDcmVkZW50aWFscyI6MTAwfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMTAtMTIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDczLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ill1YmlLZXkgNSBTZXJpZXMiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI0MTAxMjAwNyIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTA2LTA0IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3MywiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZdWJpS2V5IDUgU2VyaWVzIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNDA2MDQwMDMiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0wNi0wNCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzN9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjQtMTEtMTIifSx7ImFhZ3VpZCI6ImRhMWZhMjYzLThiMjUtNDJiNi1hODIwLWMwMDM2ZjIxYmE3ZiIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiZGExZmEyNjMtOGIyNS00MmI2LWE4MjAtYzAwMzZmMjFiYTdmIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkFUS2V5LkNhcmQgTkZDIn0sImRlc2NyaXB0aW9uIjoiQVRLZXkuQ2FyZCBORkMiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6NTAxLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX0seyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwiLCJiYURlc2MiOnsic2VsZkF0dGVzdGVkRlJSIjowLjAxLCJzZWxmQXR0ZXN0ZWRGQVIiOjRFLTA1LCJpQVBBUlRocmVzaG9sZCI6MC4wLCJtYXhUZW1wbGF0ZXMiOjIsIm1heFJldHJpZXMiOjE1LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUJiVENDQVJTZ0F3SUJBZ0lCQVRBS0JnZ3Foa2pPUFFRREFqQXRNU3N3S1FZRFZRUUREQ0pCZFhSb1pXNTBjbVZ1WkNCQlZFdGxlU0JTYjI5MElFTkJJREl3TWpJd09UQTRNQ0FYRFRJeU1Ea3dPREE0TXpnMU4xb1lEekl3TmpJd09ESTVNRGd6T0RVM1dqQXRNU3N3S1FZRFZRUUREQ0pCZFhSb1pXNTBjbVZ1WkNCQlZFdGxlU0JTYjI5MElFTkJJREl3TWpJd09UQTRNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUUvTit2L1BieDY0dER2TU1pU2tjandQNU04RDJJVWZyR2wwSG56b0hNSkdVd2IrUjQ4TWV6V2kxSjNaQlhlT3BTSGZqcmd4RmZvM2lyTGVMVndJSzdDNk1qTUNFd0R3WURWUjBUQkFnd0JnRUIvd0lCQURBT0JnTlZIUThCQWY4RUJBTUNBUVl3Q2dZSUtvWkl6ajBFQXdJRFJ3QXdSQUlnV3FuM2VOK3kwVjkzM01HajNmUXJkclVYczhWbVVwckVzN0MwTlY5OERUSUNJRVlDKys5ZE80Y2phVVJ1VzRiZHRPeklxMFA0Y1RXZDdwU2NCYWpMTjNkeCJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFHb0FBQUFwQ0FJQUFBQlNqeXNDQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUVuUUFBQkowQWQ1bUgzZ0FBQW51U1VSQlZHaEQ3WnAzVkZSWEhzZC85RHBERzRiZTBUV2FZOHR1TE1mR0lXWTFHQk5OTkt0Ulkxbk5CaVJSMEUxMGRTTWk0aXBTckNzbm14VkRGNlVad1JKN0FZT0tyc2JGUkxEU2c0MCt3T3ozdmZ1RXh6QVlUT0NQeGZtZTc1bHo3Ky8rM2h2NGNOLzkzVHNEZmU4ekowdmEvNUJzVUk4Nld6WW9TOXYxZG5TY3NuZUpjc2RNU3lXSGRISktJY3NlczFVNnVXV1FWV0hrYnVGdGU0c29kOXowVkxJNzZqNnFJR2p6RDM5ZDF3TU91YkVxTkkzc00waFdHQlVqdkcxdkVZZHZIOGx5MzVzdkJIcEcrOGlzTitNNzcvT2hFT2dadlN6NDlwSlJFaGttazhsdmR6eFIvcnpQMlcxZkZud1oraTRaNUpwQjdzOXhKbmxra2lkZVZlTHQ3YkdmWk5jL0MyYTNmYm53OFlEVUcxd1NTVGVCdEZQSWpJZklhS3F4QnArcU1hMVN5TFQ2NXUybk53b0wxa1ltazBRbFFXd05QbFVqTTM5UkFNdUU5cE5sQnJtcDVMUmFnMC9WQ2FURjBsb1V0WGk5RmI1ckw1bXE1TFJhZzYrZDk1TThiOVpma0tPb2ZyUkRKbVg1S1NUdGJBSnE4TFZ6QWxGell3TnlqaTZZOHplaXg0VUZhQmNFUi9BMVJEVVoxdUJyY3lyWjVrNlp3M0tDaWNLSmtrYTh4cnJKWklDU29wSVBhL0MxR1h0Z3hjT0hTRGpoLy9FbW9xMDZPa0ZFOVJXbGlQeXdjbjBLbWF2a3d4cDhnbFBKL3F6M1ZKYXdtbWdqN3hDaTJLR3ZzaUIyZ2gwbm9BYWZZS3g2ZGNVbEdDMCtjK3Jrc21VNWE5YmtmUGtsZk56UEYwVVk4U3QrSy9hUmxjcFZHbnljMDhqeDVJZ0piUFE1U2lJOWxRbW93Y2NaaC8rbk53cWFHK29VVHgvRERWVlZMTE9wdms3eDZCRUxvcHUvY0drcTJZa3YxT0NEUGJFeGppSDZCcVdXOU9GL0V6VlVsQ0h6MGdlZnhBcEJnOTFFY1VTb3pxSUxOZmk0VlUrM0t1Y2k0bmUvVGt3aEM5QUVyTVpIM0FTODZyY2lsZVRJd2I1UHFXeEdKSGZ5TERIQnp2Q1ZGQmR2V0JzU3VqYTR1cnFHallvVnZYMUhWRmdFRXVKanZrRjNRM0RJeG5YcmJ4Y1YvZmZHalUzclE3ZUVSNG9kdFRraWNsTVkwblpFYlluWUdMWWxQSUsvaHhwdERZOUF3cmJJS0tIZlRYb2V2blJ5em5ZWnl1Smd3VTRYYmZoOFYrQWNnZ2lLeHJVbHF4RnBxcTFGa1dIWHdwM2h5ODA1YjBSYWVrVGd5RVpiTlgvV0hETTlJM045bzc2T0xpeWlRMlJNT2tleXNoUGo0OUd3bFZxSUxUYzFzekl5UlZwa1dMZ0o2Um9RNWVmbnN3dkZ1cHgzMFpESWhIU0FXd2gxazU2SEw0RjBxczU5aitDOW1PUmtNbUxCanZoUU1SSkpoNzlhZWZhTnFkamxzTXpPOEYyNmVOSGFXR3BoWUZKZXppMENyZkpkc0VobUxIR3lrcjgrY0lnUVVpcEJSMjVxZnVMWThiMEpDWllHSmk3V3RtSWoyY0hjaW1YYVNpeWNaRGFUMzFSVDVmNDQxc3RaWm1OblppbjB1MCtkNGtzbmw0UHlWMWd3ald4YkQ3WWQ4Y0Y0cnErdldJZGdRMFY1NndSOElYd0JpLzFCeWxsbU82VGZBQ0hFaThNbk1mODI4NERRNzF4NHpPM01yU1RhK3VYbDVVS0kxOTA3ZDZUYUJtQVhGdm9QSWRSOTZoUmZJdW1WWlgySFNQSGVqQ1F5WkVSZ3RmZ3dBWEYwNDIrZ1BEWFNKNDBjRU93NnZpVytpNjBNVFoydGJmdTdlYkpJcTdxT0Q3TFFOM2Ewa3ZzdVdDajBlYzJlL2lkSG1SejNGL3JkS3ZYNDBzbjFnTVNkUmRCQWwyR0MxZUtEVVVBS2dyaFZ2TGJ3TnB1QVhjUVg0T3ZQMkExdzc4UG50dE1MNGZOYitESHdZZWtVK2twbGRYVTE1cU9EcGZVWEFjdUVVTGRLTFQ0M3JIU2wzeDVGRnhNUTA3Q1ZFWXlkaXVJSmQvaTk2cmRTakE4VE1JV0V2L0N4d1Y3WWJQOGlQclRYcjFscmJtRHNidWY0cWtkZlBsRlZETitSUTRkdi9mVFR4bldoVVp2RHhZNE0yNHg2S3FRcWxaV1ZsUkp0UFh0eldjaWFJQllKOVAvVTBkSmFxbU5RVjh0OVFObU51bE5VaEZjMStMRHFaWkRUbzd4TGxTZlBaZHNOUXJlVkVReXlUWFZQa0hsOTZkOVR5VVk4bEVMU0h6ZHN3VkJOMFMya1BSK2ZpOXh1K1pJQTBPbnI1SW9heXRJNml1RTdlZnhFWWx5OEVXbmJTQzNFdGtibGJmOVV2alBoTFJRUUc2azU2MW9ZR0tNN2IrWXMxbFhScHBEUTl5ZTlNMjN5dThHcnVKM0RDNG1JdUZlMUR5Ky9saGtEZ1FvN21QOEt6U0tGSkRoam9LMHlDbVQ4RUxCNlBnZWYzRmdLYWk3V2RoNTJqcGg2OXVaVzRra2tGc09IeXB1U21JVGE2dW5nTExhSG5STnVJcVR5dW5iMVA5ajYyRWpNRDJabTd0eTZqUzhtZXNVUEhnakR6NFJkSkg3L2dNV2ZuajV4OHJ2RFJ6YUdyQmNHdXF4TzhCbUFIU3V5bnJ6YjBYa1JBNS8xOVNWY09ZYlU0bk9WMjQzNi9iQUpYdDZ1TnZZbVdycjM3OTFqeVdJeGZBZTd0dll4RFI4OEZDdnA2d01IRCs0M0FQc1ZIKy94d29CSStPWHpMbHdRT2lLZFBYVTZPUzYrdVpuN0hBVDY4ZWJOZTNmdk5qWTI1cHc3enlLbmpoMC9uSFVJRGZYNGtrZzNrYlArYnplT2RKZm5CckxiZHNUblllL2tabU9QYnBOQ1lhWm42R2JyME05RktGWmlNWHhkTEIxTVdRY09XQnRMMlBURVRMeDY1WW93OEV5SnNmSERCdzBST2lMNS9ublJuQTltZmhHNFhKZW9ndC85N05xMmZjcGJiMXViU1BHWW80dU53WnRqdkQ1Zkd2amFnSUdzUUtuaXE4ck53eW50WVc0M3VPcGNidTBkWVVKMVhQdXNqQ1JsWmNMR0plYnIzY0JrYTJhSmxaNUZXdlVyOEVGOW5GeTVQNCt0dzRqQndrZmlZZ1g2ZjdaNElmZWxUV2ZDUWRCLzRTZG83TitiWWtqYUxMZ3BkTU9FY2Q2c1hWUllpT01RR2dLK25NbXoyVUFQcVNNK1ZON0tpa28yQ2szMGVnTlBuS21XN3VXOFMwS0kxNi9EdDJ2YkRteFdaRWFTSTluY2c2YWlvRldyNTgwUXBvdUtnbGF1SGp0c1JCOUhsN2w4dFVtSWpYdlA1MjAyTkhHY2QyWmFPbXREYlEvdmZySTVQZnJkSjlkdS9Id21wL3Q5TnZmeDVTdlk0blRFcDNKb3c0bk4zZGJSMFZJdTlIa3hmSWNPWnRYVzFGdzRuM01wNzJKNzUrVmQ0STZWS2hvMmlGdisram03Q2YzMndvVTRIUXNka1hBS3hOa1pqZVNFeEJsVHBxRUJmRk1uVHVJSGxaUEdUMGlJaldkdHFBMWZLam5ob0txeWNuV3JEZEs1a3QwUlg3dlQxWkdzYkttdUFXYk43T2t6aEJERFo4cHRYR0pqWXZBNzQwS3hNWXBkc1pENlRCZHljckZmUWZHTjI3T0hSUjVXUFl6ZXZwTzFtYnhHamhyemgrRkNSNmxzYVdtcHJxNWhSS0M1TTJaaUVVU0R4K2ZEZ25HNzk2REVzWGJVNWdqc290Q2dzNjk0cDVKaE9rblR5YXpubk1aOUhVd0ZhN2ZpTGMrZE9hdUZuNVRvd2YzNy9BL1RKb0F6SW00d2VzYy91WDVMQzlyYVJOaUZ4TVhzd1hJRExtS2o1cGhxNmZHWHRtbjg2TEVvdUE0VzFrSmZxZnhYOUZlNGo5QjVKdXhhVUNJY0xHUldoaWF1L081bjBVZno1Q1ptcU5jNFJJNGZQUTZScjNaR2p4czJray9udE9paitmZ1RBdUxPTFZ2MTJPeHJxUHE1dHJpa3JxUzBSMTBMMzMvUVZNTnQvWnVhRktWUVNZbXdPMmd2aktEcTRad3ZkRXRLeTBwTEZBcEZRME5EV1dscFpVV0YyRkJyL1dHNlhWU0VNNGFkbVdVRS96bmdMNnF1cnJhNW1mdXdrZ252d2hyMTlmVjR4YXhzYkZTd0NCTWlyRkZmVjRkWE5VdkEvN1UrZkg4YWpobDRxSVYrRDZ0WDRYdjY1QW1tSGg3YkZZRTk4Z0ZCUi9VcWZFdjkvSEgraytqb045UUx6MkJQcS9mZ0F6SnNWZ2IvcnYvSzVjSi9CUGU0bE1yL0FjL0FSbjZsUmRRYUFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xIiwiRklET18yXzFfUFJFIl0sImV4dGVuc2lvbnMiOlsiY3JlZEJsb2IiLCJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwibGFyZ2VCbG9iS2V5IiwibWluUGluTGVuZ3RoIl0sImFhZ3VpZCI6ImRhMWZhMjYzOGIyNTQyYjZhODIwYzAwMzZmMjFiYTdmIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJ1diI6ZmFsc2UsInBpblV2QXV0aFRva2VuIjp0cnVlLCJub01jR2FQZXJtaXNzaW9uc1dpdGhDbGllbnRQaW4iOmZhbHNlLCJsYXJnZUJsb2JzIjp0cnVlLCJiaW9FbnJvbGwiOmZhbHNlLCJ1c2VyVmVyaWZpY2F0aW9uTWdtdFByZXZpZXciOmZhbHNlLCJ1dkJpb0Vucm9sbCI6dHJ1ZSwiYXV0aG5yQ2ZnIjp0cnVlLCJ1dkFjZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6ZmFsc2UsImFsd2F5c1V2Ijp0cnVlfSwibWF4TXNnU2l6ZSI6MjA0OCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMSwyXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0IjoxNiwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjo4MCwidHJhbnNwb3J0cyI6WyJuZmMiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fV0sIm1heFNlcmlhbGl6ZWRMYXJnZUJsb2JBcnJheSI6MTAyNCwiZm9yY2VQSU5DaGFuZ2UiOmZhbHNlLCJtaW5QSU5MZW5ndGgiOjQsImZpcm13YXJlVmVyc2lvbiI6NTAxLCJtYXhDcmVkQmxvYkxlbmd0aCI6NjQsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjozLCJ1dk1vZGFsaXR5IjoyLCJyZW1haW5pbmdEaXNjb3ZlcmFibGVDcmVkZW50aWFscyI6Mzh9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMy0xMS0wMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjo1MDEsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiQVRLZXkuQ2FyZCBORkMiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDIzMTEwMjAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIzLTExLTAyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjUwMX1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMy0xMi0wOCJ9LHsiYWFndWlkIjoiNjAwMmYwMzMtM2MwNy1jZTNlLWQwZjctMGZmZTVlZDQyNTQzIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI2MDAyZjAzMy0zYzA3LWNlM2UtZDBmNy0wZmZlNWVkNDI1NDMiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiRXhjZWxzZWN1IGVTZWN1IEZJRE8yIEZpbmdlcnByaW50IEtleSJ9LCJkZXNjcmlwdGlvbiI6IkV4Y2Vsc2VjdSBlU2VjdSBGSURPMiBGaW5nZXJwcmludCBLZXkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MjU2LCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH0seyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbImVkMjU1MTlfZWRkc2Ffc2hhNTEyX3JhdyIsInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCIsImJhRGVzYyI6eyJzZWxmQXR0ZXN0ZWRGUlIiOjAuMCwic2VsZkF0dGVzdGVkRkFSIjoxRS0wNSwiaUFQQVJUaHJlc2hvbGQiOjAuMCwibWF4VGVtcGxhdGVzIjozMCwibWF4UmV0cmllcyI6NSwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCIsImJhRGVzYyI6eyJzZWxmQXR0ZXN0ZWRGUlIiOjFFLTA1LCJzZWxmQXR0ZXN0ZWRGQVIiOjAuMDEsImlBUEFSVGhyZXNob2xkIjowLjAsIm1heFRlbXBsYXRlcyI6MzAsIm1heFJldHJpZXMiOjUsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDU0RDQ0FlMmdBd0lCQWdJSkFNOVJ6WXU0RUlJbE1Bb0dDQ3FHU000OUJBTUNNSDh4Q3pBSkJnTlZCQVlUQWtOT01Td3dLZ1lEVlFRS0RDTkZlR05sYkhObFkzVWdSR0YwWVNCVVpXTm9ibTlzYjJkNUlFTnZMaXdnVEhSa0xqRWVNQndHQTFVRUN3d1ZSWGhqWld4elpXTjFJRVpwWkc4Z1UyVnlkbVZ5TVNJd0lBWURWUVFEREJsRmVHTmxiSE5sWTNVZ1JtbGtieUJTYjI5MElFTkJJREF5TUNBWERURTVNVEF5TXpBNU5UQTBNMW9ZRHpJd05Ua3hNREV6TURrMU1EUXpXakIvTVFzd0NRWURWUVFHRXdKRFRqRXNNQ29HQTFVRUNnd2pSWGhqWld4elpXTjFJRVJoZEdFZ1ZHVmphRzV2Ykc5bmVTQkRieTRzSUV4MFpDNHhIakFjQmdOVkJBc01GVVY0WTJWc2MyVmpkU0JHYVdSdklGTmxjblpsY2pFaU1DQUdBMVVFQXd3WlJYaGpaV3h6WldOMUlFWnBaRzhnVW05dmRDQkRRU0F3TWpCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQkhscTJqVVFNYWxIai9CUmVRZWZHaXo0RXZZSnlGTFdQejRSZmhKR0txcWwrOG45NmhUMW01Z1hvVHZvTHJqU1U3WDBjQmVvVHNnaHloMjIreXJzNCtTalVEQk9NQjBHQTFVZERnUVdCQlErOFNHVzJCWGJxYjJkY0FPaVdKT1UrR0NzUGpBZkJnTlZIU01FR0RBV2dCUSs4U0dXMkJYYnFiMmRjQU9pV0pPVStHQ3NQakFNQmdOVkhSTUVCVEFEQVFIL01Bb0dDQ3FHU000OUJBTUNBMGtBTUVZQ0lRRHE4eElXMFpLNXl6M0VBem11eDg4TENUWU8xNTdmVGZ5T2lPekMyQUR5YXdJaEFPMVBXWWxlRmdILzNtdUQ4Y0JBTXIxMWZFS2RGL0FhQzE2ZnR4YWV6TlhIIl0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUl3QUFBQVlDQVlBQUFBb054VnJBQUFBQ1hCSVdYTUFBQjdDQUFBZXdnRnUwSFUrQUFBRklHbFVXSFJZVFV3NlkyOXRMbUZrYjJKbExuaHRjQUFBQUFBQVBEOTRjR0ZqYTJWMElHSmxaMmx1UFNMdnU3OGlJR2xrUFNKWE5VMHdUWEJEWldocFNIcHlaVk42VGxSamVtdGpPV1FpUHo0Z1BIZzZlRzF3YldWMFlTQjRiV3h1Y3pwNFBTSmhaRzlpWlRwdWN6cHRaWFJoTHlJZ2VEcDRiWEIwYXowaVFXUnZZbVVnV0UxUUlFTnZjbVVnTlM0MkxXTXhORElnTnprdU1UWXdPVEkwTENBeU1ERTNMekEzTHpFekxUQXhPakEyT2pNNUlDQWdJQ0FnSUNBaVBpQThjbVJtT2xKRVJpQjRiV3h1Y3pweVpHWTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5MekU1T1Rrdk1ESXZNakl0Y21SbUxYTjViblJoZUMxdWN5TWlQaUE4Y21SbU9rUmxjMk55YVhCMGFXOXVJSEprWmpwaFltOTFkRDBpSWlCNGJXeHVjenA0YlhBOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOGlJSGh0Ykc1ek9tUmpQU0pvZEhSd09pOHZjSFZ5YkM1dmNtY3ZaR012Wld4bGJXVnVkSE12TVM0eEx5SWdlRzFzYm5NNmNHaHZkRzl6YUc5d1BTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM0JvYjNSdmMyaHZjQzh4TGpBdklpQjRiV3h1Y3pwNGJYQk5UVDBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5NFlYQXZNUzR3TDIxdEx5SWdlRzFzYm5NNmMzUkZkblE5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5elZIbHdaUzlTWlhOdmRYSmpaVVYyWlc1MEl5SWdlRzF3T2tOeVpXRjBiM0pVYjI5c1BTSkJaRzlpWlNCUWFHOTBiM05vYjNBZ1EwTWdLRmRwYm1SdmQzTXBJaUI0YlhBNlEzSmxZWFJsUkdGMFpUMGlNakF4T0Mwd05TMHlNMVF4TkRvME1EbzFOU3N3T0Rvd01DSWdlRzF3T2sxdlpHbG1lVVJoZEdVOUlqSXdNVGt0TURVdE1EVlVNRGs2TXpNNk5EY3JNRGc2TURBaUlIaHRjRHBOWlhSaFpHRjBZVVJoZEdVOUlqSXdNVGt0TURVdE1EVlVNRGs2TXpNNk5EY3JNRGc2TURBaUlHUmpPbVp2Y20xaGREMGlhVzFoWjJVdmNHNW5JaUJ3YUc5MGIzTm9iM0E2UTI5c2IzSk5iMlJsUFNJeklpQndhRzkwYjNOb2IzQTZTVU5EVUhKdlptbHNaVDBpYzFKSFFpQkpSVU0yTVRrMk5pMHlMakVpSUhodGNFMU5Pa2x1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2TWpFNE5XWXlZbVl0T0RWbU9TMWpaalEzTFdGaU9EY3RPVEZqTTJJelpqQmlOemhsSWlCNGJYQk5UVHBFYjJOMWJXVnVkRWxFUFNKaFpHOWlaVHBrYjJOcFpEcHdhRzkwYjNOb2IzQTZaV014WlRnM01qRXROek0zWVMwd05UUmxMV0V6WVRrdE5URmtNVE16TkRabFpUSTVJaUI0YlhCTlRUcFBjbWxuYVc1aGJFUnZZM1Z0Wlc1MFNVUTlJbmh0Y0M1a2FXUTZNakU0TldZeVltWXRPRFZtT1MxalpqUTNMV0ZpT0RjdE9URmpNMkl6WmpCaU56aGxJajRnUEhodGNFMU5Pa2hwYzNSdmNuaytJRHh5WkdZNlUyVnhQaUE4Y21SbU9teHBJSE4wUlhaME9tRmpkR2x2YmowaVkzSmxZWFJsWkNJZ2MzUkZkblE2YVc1emRHRnVZMlZKUkQwaWVHMXdMbWxwWkRveU1UZzFaakppWmkwNE5XWTVMV05tTkRjdFlXSTROeTA1TVdNellqTm1NR0kzT0dVaUlITjBSWFowT25kb1pXNDlJakl3TVRndE1EVXRNak5VTVRRNk5EQTZOVFVyTURnNk1EQWlJSE4wUlhaME9uTnZablIzWVhKbFFXZGxiblE5SWtGa2IySmxJRkJvYjNSdmMyaHZjQ0JEUXlBb1YybHVaRzkzY3lraUx6NGdQQzl5WkdZNlUyVnhQaUE4TDNodGNFMU5Pa2hwYzNSdmNuaytJRHd2Y21SbU9rUmxjMk55YVhCMGFXOXVQaUE4TDNKa1pqcFNSRVkrSUR3dmVEcDRiWEJ0WlhSaFBpQThQM2h3WVdOclpYUWdaVzVrUFNKeUlqOCsvMFZ4UlFBQUdmVkpSRUZVYUFYVndYZmNuM1Y5Ny9IWDUvdjlYdGR2M0RzN0pKQUlBVUxZQlptQ2ltRFZEbGZ0dzIzSHFZdXFQVjBXdGRiV1I2M25WRzJybnJhT3RzaERyUlVmUFIzV1dTM0tWaEFaWVFvRVFrTFduZHp6TjY3cituN2U1MDRpS05XTzg1OCtuMm51aXNTL0ozRzhZWmVaMlpURUltRDg1K1JPTzBaU1VmaUhKUDZGSHlJRVdCakF3ek53Nm9iSTNDeWtDR2FHSk55aExNV3dnbnJvcE5KSUNCTlVjb29pME84Yit4ZkY2UExBcUlNY0dvZDJXK3pZRDlGZzQ5ckFnYjFpMFRKVEhXR0N1bzZVaGVFSmRpOW1WclNOOGNLWXE0MmQrOFNLQ1NPMmdBd2RJQlFRVFB4N1psRFZka2tXYnpUWmNLVEkzZGh2dnJHbHVlTTlkOFVUWDBScitqbW95WUNRT01Tc0JMcEFBakxRUnhwZ3hvK1JBbWxyNG9jSVpoZUdrRjVsQnBMNHJ3aElDWExEZkgrZ0R4ZUZrSGdDQ2VTd2Y3OGhFei9Lak1QRUQ1SWdSWHVSdWYyMHBZQlpRNzJmN1N0R0gzWW1UdnhGTWhjZ0F3bGlBUkxnR1d3R05BZldRcXdtaHNoQmNuNHNHT0ErbDhxQ3h4bVFCVTNEU1pJajhWOFRZRkMwallVRmJlMzFkUDJ5NVpBelR4QVM1TVpBZ1BHanpRQkIxWUR4QTlaWjBLa21jRUhJbWM5M0x2aTNIZkhJa3FaZWpUSWdNRUFPN2w4bnhrOGgzWUxuM1lRMGp1c00xTHlPRU01RTRzZUNnT3ovbFBZY0VJOXhRVHR4eEhnM251a1lJTDVyRWRnT0NDajRmZ1lTc1I1cVJhZWpxMEppdXFwNGdoUU5MdzFWNHNlRkFLOUZNcjVIUUxUalFneWJNY2lOZzdIbjFwV1hmT09oNnNTTDhQa2pNUWRMWUdHYXdkN2ZKWFl2UjBXZkVNQUMxQldFNGxaNkMvOU1tZjZPY3VUcFNJRDRrV1VHMG03RXZlbTJiYzVqaG8xWU94bVBPbk1UcDJhSjdJQ0JpWThKL1Q3UUFrWUFjWkFBUThFb2MwTzJ5TGJSVVVNQ001Q01kaHYyelRsa0kvSmpSR0FSUWhISWpYaU1HY2RLR25lTTBqS0lPeDZwVisvTFp1Y2o3eEFNU1B2bzZ4VjQ5UVhTT016Tnc4Z0VkRm93TXdNalk1RFNYcHJtclJUNkI0eFZpQjlkRWt0dUpOcU90SGMrOEpqK0VEcGQyeFRhakdnQUdlTWdkLzluWUU4STRJSVFRQ3dKZ0lNTFhCQU5tZ3lTa1IySzROejlJRHc2THpZZkxRcmp4NFlaTkRYMGVrNTNMQ0J4U0FwMmpwbGhnaFkxc3paeDAxWE5CWE1FdGhBcVFCVzk1aDAwNlF2RUVhaEp0TXVYVU1RWDBGUlgwMnA5aENMTm93Q2Vyc2Y4UHJCVi9LZkVZY1ovbnpqTStBSHVFQUwvSVRsZ1lNWmhCcTZiRVF2cFNVZEdIbFBWeEJWamRvNnk0UklnRU5zRU82SkJscEVDVkxVVGdoRkxRVFljSXlNS1FaTWhHMVFORktYNDVqMWlZdEpvSlVPVitDRU1HQUVDTUErSS93OENYR0NBTzFqa3Y4MVlJc2dPRW9lSXd5eEFYWW01L2M2cWxZWm5hREpINWN6SmhJQk1tT0FoMy9qbGdYVldRejZSWURBWVhzdEMvUmQwbGtNNUF2STNVSFRmUndCcWZ4NGpvMXVCTDJJUjZnRFpHMElBQk80UUkyRGdEaVlPc1FSeWtJTVpQMGpnR1VMaWNSWUFnUXZNT0VRQ015aGE0Qm5rUElFRUZxQm9RYTdBSFVJRUJEbmZpY2pwcEVseGlJREltczZZblprYmFESllNRHo3M2NnZm1Xa0NSWUxKQ1AwK1dBQUtIbWVBWkVnUUFnVGprTkUycEFnU2h3aklBb3pqZ1o5Qk9rK3d6c0JjN0FPK2d2aWt4S1A4SndTNEdERzRLRVhPRXF6cXRQQUEzekhqQzRLdC9CY0V5NEp4OFdpYk0ySmtLb29hZUFENEN1TGJHQlFseEJFalprR2Y5WFZ0bTRoZ0NJelp2K1hGRHowWU5wNk5MYXhFRG1YbnMweVpFeW9vMHhuSS9vaWNvYWtoUk1CZWczd1RVa24yMVJnbkU4UWhyUTRvZzJjSGJRZjI0cXdpMkhxU0JScUJBRE1lNXc2cGdNNFlESHFRR3pDRGtDQVZNT3lCSEN3QUFnR3hBRGw0Qm9zY1pxQU1DR0lMd2poVVBhRnN3QTZDN21GSm1ubFVIT1FaV2wxV2o0eXlSVUVna0J0bHlUMnRxQU43NTRXNXNXUkNjS3JnRExEamdPVUdDb0dkR0xjQy95cDRoQjlHRU9DWXFYWjRiVzdzUmRGMEZHYUdJQU1wUXNDZVpZRmZNN04zQ1A3YVFId2ZBVG1yUlBaTHJjaXZZR3lXV1ZlQ3RaTWdsNXJLM3BTaVBvYnpoOENBN3lNZ2kxR1pYZXB1cjR6R3BnMnJZbG5YQWplVWhEc1BXZVRQTGZMSDFVRGFmbSttTG95UnR2M0VaTmNtcXl4YU5DQnV2VDZldXdQeE10UnY0K3JSRzl4SU11ZzBNTlFCTE54UGEyUUx1WUZxQU1UbkE4L25vQ0lBeGlFaGd1Y0RMUFkrVGpQNEV1Tmo5K0RXSjRSQU5YTTZkTi9DeUxLeldKd0ZieUJFUUJCTFVJREZtUWR4WFVjcTdzVENnR0gvS1Bweno2QXplaElHTkEya05uamV3ZmJiUHNyWTZ2dG9UejRmYTE2SUJjZ1pXaU9RNjBmWWZ2K0htRmh4QjkzUm44UHp5M0RkanJHZEphbTdNWENRQkVYa0REUEdjZ1VXd1hBR2ZWMWZXMEJ1YXkzeTg3Zzl2OTIyRXcxYklUY3dnU0FGUThKajRINlpYVkZMSHdCbStTNEhBcng0OVRKN1I5a0t4dzhXd1FLUGs2QnNRUUdXemRZWG8vR2pkWk9qTWg4MkRwTWdKanRwOVVUODM5MWtGK2VHb2tqQ0piSU1seEJZcm5Wa3UydHZNdzlIbXZKckJRT1dPRkFFVGxuVkRoOXNXYmlnY2NOTTFCbkVraUFra0xFaEJIdDNHV3dWbWQrOGQ1dnp4ZS9FOU15ejdjeUx6NGZxRVNpVjJWbHMrUHllWW0yUFBrL0ZNc2dIRFBveldJQ3FnbTduQVR5L2dOazlyNkVvbjBkNzlFazBGWWNJQ0FIRUVvRVB2OHFqRDd5VFZjZGR3OFI0UXpXQUxCQmcrV0ZtRnIvS2JITUZVK1h6Q0FteWd3VW8weDcyUGZTWFBIRG4zN0xsS1E5aDFpZEV3R0ZtMXlvNng3eVZzdnRHNmhrd29EUDZOaFptTG1mWnhoWXBYWXpYSUFHQ2FDQzlpMTc5RnpUWFFUcmhRc3BONEl2ZkF1WlprcnBkY1pDZ0UyVm5lelpjSW1LME9ueDFkdGIrTGplNmVOVUsrMkRDanE5ZGhCQzA1QURTaUFYS1ZqU2FSalFpeEdESGdyM1Q0Rm5BcjBwODJ3V2R5RnRiSStHM1RUYmV1QkFRZ0JBTjVQTWpMVDUzeDRPNmV0c0MrODQvd2RaT1lpOXRpTzh5eTdjaTNjaEI0dHhXeXo0UzRjUWlRT2c2dlI1N1RGeVZnanlZWFNSWTFRQU9kR0o4cWFSckpQdG9VM1BRdVNuWUZhUFJObVdEakREWVdkVit2Um5aNEd3ejIyQkFOWlNWbmZpcW80N2xzNVBPVmZQTGJPMktVZHRNWDJBR0JRdzZFOWMwZCsxZHhkcmpOdEZPb0RoQ1ovOTU3SGhnSzBlZkM2RUc1eDRHaTc5T1NoOGdwS2NSL2Rjb3U2ZlFuNGZza0NKUS96M1ViMkJxelU2YVBvd3NPNWJoNEFKY3UvRG1xN1FuQnZTWlovdld0ek4yN0dsMEp6Y3lXQVRaOVZSemI2YmR2b2JONTRxaUJXcWdHb0lpdEVmM3NPZkFteGkzU0xkOUtWVi9GNjN1VnpqNkxJakZPbFJkZ0FVUUVBTU1xM3ZKZGhWcjFrSnVMY01tbjRvcW9MNFpQSU9SR0hDSUdWTkVUaEpnQnRuOXk4TUJyeDhkczdjRmhYZDJvaGcyZm1QTytuU1EzUXkyRDlOa1U5a3BpNDIvb0d5Rmk4cElrQXR2eE1TWW5SK0srQWtMell0RzIzWkJ1d3h2eXoyMTYwYVlRWkZBVVBWNy9xbWlzRDluVkxmMSt2U25lNDRzUU5ZVmplenRwZkhVUm40VHNNNHN2TS9FaVNIQlRGLzloVVg3MDdLdGo0NjAySVhJTjl6VmJKNGFpKy9mY25TNHNCcUl4bFcwWTN6ZHZnVSt1bTNhanpqdEtQNE1iRk10a0duT3M3ODNoUERKRU94UlNSZ2NpWGdieGtzRmxxS3RhS2Y0d3Y1UVY1MTZySjYweWptaDJtOVlFSlRzZm85ZS84aDlCemFld1JIelU0UUNGRnFFOEFhOHVvbWl1SVdtRDU2aExNRGlnN1JISHVTV2E3L0VzUDlSVG5uNnM0Z0dpL1cxeU41SUhPeWtNN0dNaFlVM3M3ajRVc1JxaWxBZ1BrNk92MDY3M3N0UjYyOG5oeHZJMmtoMy9DYm1GMStMdUkzeE5lRGg2VlQ5VnlHT1JQbG1HdjlUSmxidHhJRDU0Vi9TYWo4WGZDZHpleGV4TnRUVldVVGZnQm1ZUVREb0RYZlEwelltV3BBMm5vUDdDZmhnSHlIZmpvbURrampNeFBwQU9BNER6OXdnOFg3VityMlJUbno1WXEwSGRzL2xQeHdwN1RQQm1PTzdna0hsWEh2M3cvNnhpU24vK1ZNMnBiZFhzL1lrajJJNEVLRUtXNTU2VXZIbG1KaW9lbW9yYzBnclFRT1BIaGo2VzJuc2I4cUN4OFVJTVJpNDl0ZFpmMUFVWERCV3BvbUZTcjlsRnM0SkNBdk03WnIxUy92emZIekRlc01NRURSdXQ4NzNtcmNvcC9jRVdCOER6WFJQOTMvcU9pL09Qem45YW12VW5yd3dDNWdlOHRwZkJYeU5KN29iOUR1WW5XallhWjdGWXJaTk1jTksySktDalZkbWRCbkFnQnNmMGhIYjJMTHVkYVFESTFRVnlLQ3o2bVNPbWZvazduK00vRXQ0L1FpdFVlaU9nemNnN1dEWSt6MXlQb21pWEU5amY0aHBCNmIxcEhnNTR5dWZ3WEFBWmhBTlhDK25hbTRsOEI2NjQ5QktCOGdMTU5kN0o1VnVvNHFSRWJ1TXdjSnZZMkVNaTFDTVhvU3FEdGhseEFBZHpkSTBleWs3MzJJNG5PT3V1Mkg5NnROWnRUd3hyQ0FZeEFRTCsyL0NyTS9vYXVoVlQ2WlZkSmh1cnFldEEzUWlPS1FVamU4NnhZd3B3VTdIcjIwbmUwdjJkRzQvNit2dS9pcGdHOTlsZ0ZoaUhOSTR2VWE2SFBkdjdodndpYkZPT0RVQnVSSGpJeHlSSGVvR2drRU1zR3RHMzg3QjMxaDI3R29KRU9EUWJVTzNNdTdkbmxuWkVXWEJWTHNkTzVZNVhoNWVvQ2lLQ0ROeitVUFQrL3pqclpTUXdJQTZ3OXBKWnpEMGF3ZnorZWVTYVN3bWNwWFpOVFZxcDY5WlliOGlCOCtPUjk2ZFV2eGFNRVlsR1dCTFdKS0JBM0o5MjR6VFdPS29YRFNuSzl1WUpBUUVnd1BONk5XN2UydWd6ZG1RUVN3UjRORHViTWI5cjhqRlZxSStBZllab3QrSCtuRDBhU3o1QnNxMzBCdnNndkFObWozZ2ZoUmgrVFNodVJKNUJZaUdBaGdoNkI2S0JBYXNXSDQ2WDcveWMxanJLK3g3QURZKzgrWEUrQWNJd3dSaVNZWjIrVXRJWjFBM014UmhBbWt6bG42ZmJkc2FSSWVpT0pXRERKQkR3NEQyMkxjWTltQjJEa0o2TXJSZ3FuTXpUWDJBYkJ5VWtGalN3dXgwQ1F5ZmptN1BEZU5oMDZEVUYxcDl2WnpHcHVXQVFBWVpNTUFNM0NFQTNUWlFzSFd1MXMvVU1mL1ZVZDF3U2IrR1FRMEdtRUdJUUFwZmYzUi9mdTNLRmR6bEFqTlFnR1lJSjIyQVpwdjQwT2Zod2pNRHp6M2RMdDI1eCtSbzQrcmx0aXdQSVhTNHAxM3lKMVB6UnJzRnFRVjFBd1owUzJNNEJFazdESkZsckJpTnhZdlA1NFZrVml6T2laQnNFZW1uZ0xNRTQ0RDRuaG9vRE03aUlBT0R4V2dVMFRoSkF0d2d3WmZqSlhkc0RTZTJDUGtJVkFNQk1CRFFERGtrZFU3RXV1K2lIcndhZUFtVG96Zmd3R0lGcUlmNEJLVlAweDlDNWpxOHVZNVE4RDNHSWNwUWxOQ2RXTW5ldmN2NDlyYyt5ckxPSWl2WHJtQ3l1SXpLRFJOZ1BLN0pYZUJjek1BZHNQc3h1NDJOUjRINzhaVGhGT29LTUVEZzdHQjBmQ3NSMkx2L0JJNVl0eGtMOEowYnI2TzNQeE1MRGtwa0RwcWswT2tnWXJDanJXTWo5KzNSVGRNTGV2VTRUSzhlZzdJRmJwQU5oQWhCV0FObWNNUnlZNlNBL29MWXZNeTMxemxlMld1NGhDWEdZV1pRTmY3My9ZcEx5NVoybFFGS2pOQUNCZWhWMENtRUFBZGl5WG5kYm5ycDF1bm1qOHBSemw3ZnNuYmR3TTU1djNyZGx2RG95UnNNR2pIWUFUUFQwRXF3Y3NLd0VGRXczQ0NIUUlUVjBleWlXdUFHRVViS0VIN2FBUW5NREFRT0dHQXNDWVlBQTVSOWF5Zlk2UWw3dW1TVTdScm1lSEI3L2FUYkIxUGQ1NUI3RzNETFlMczVyQTAyQVVUVWdBdFNzWkhzTDJiUGdSdG9IQ3h2QUZ0RHNLMFlNSGxjQzA4cnlMMkU2aHFMNHFBUXVyZ21pVVhCc1A4d3ZkWXJxUGJNc243bDFaejZIRmkyNWtKeTNzaGdIa0xnQ1F3UUlDQVZzREI3TGIzZWJsYXRoUkJQWVhiZkNnNnlDRlpBLzVFN0dlNituZEZUWU0yRzB4bHJIME52NWdCWC9lTzlQSHczZEVZNUtDbHcwTEdCY0NvWW9KRk9TK3pjbVQrOVk1ZTJyMTVoZER2RzJuRmpVSUVCQnBoZ1VJdDJhUnk1eXJoOXU1anRpUlBXOFJ5djdIZmRqSUI0VEREREczdjR6bDNEZld1bmpORldvaDJNSmtMdEVJRUE5SVl3VmpLKzZhajRmK2dxbkxaSk4yWEYxd3ptaFJWVURObmFUQU1tNmdYUnpCbXQwcEE3VlEycmxoYzBibVFYTVFuUHJPa05PYzZDaUlZSFdCQ3FCTWtNWTRtRXhZQWxvMTlsOVRtczdXYlQ5ZEEvVnJUdDlCaXRXMVhRc1F5SjY2NVpQSFVIenM5aWd4THhCb3lyZ1FJNEh2UUJ6S1p3UVZtQTVEeTg2eVlxd2ZJV2RPSUZNSElDc2QwRFFUVlloelZYZ0UxQm1BVnp6RWFBSTRFYVl6L1lES2s2RnpwWGNNSFBQa3puS0NDdHA5b2ZlWnlBd0NGeWlBa0NtZXlSMUxxZFhQV1kyUU5tSjVES2hEdFlnUGJZa01YWi80dEZpQ3VBQXo5Qk00UisvMFkybjdPTGRjZEJLamtveVFCak05QTFSQmJVaXl5dW43QzdqbDRMVDFwanpDN0FZQWhtUEVFd2tLQnFJRHNFQzc4STlxYzFqRWVFK0I1MzBXbUZYMTQybXU2cWMvNndBeGx3QVFZSXFneGpIVmE4OHFKd3hVbXJ3bW1QUGx5L2Vxb2REeVN6NVhValltM0ZpcmFXeis0V1FTS1pFVnFnaXNNRVRhT09qR3lvYUhmRmNORkdsQmtMTERFTGcreC9IY3cvVWdRN0tyc2lRZzRxWkhtMjBlNlcyWnh4U0xkcHZKMmQrd3JzOVRsRExBMEdrVVUxZHpRVHU2RGlHSkxOWTN3V3RBME1wUHVCUzhIT0JZRUU4NHQvUXRINk9LdVhRZjlSOFBaVGFZK3NZdmIrQllZek1QS2tmUlRsUG1JOEh4ek1RQWIxNE1zRXU1SlEzSUw3eTRpRDgwaGpzN2hWVE84QjkxdG90MnBTVE1oQUJqU1EvWE1VNVZmQmQ3TTQyRUlJbDdGbTVSeWpKWHppejZDdXR2UGNOMlI2L1VUVGg4WDlINmZWK1J1cUdhQS9UcTUrZ2w0RnFmVU5Mdno1L2FRQ0pBNUtKbG9XN0dRelF4SW1ZK2o2MW9ZanVOYk4yRGNMR0ppQmVKd0JKVEIwUVFyVzNiREMvcUFzd3B1R3RTWE1PY2pFZmhrZG9DUEFYV1BITEV2dm5lOWpjajVpQWVlN2hLaHFlOGJ4YThMN1d1dmlLZmZkblIvKzVqMzYwbk9lVHBoTWlneEFZSlY0YW94V0ZvVEtsVUVHQm5JSTBYN1pqSmNIVkFtYjJEL2pmemJSc3U4b1dkK3p1c2tnaS9ZZys1MmpJZDZKR1dZUWdleUJQWlhPM2RBTkZ3ZlJkVEVtK1R0YXBSOFJ6SjZSM2VoMHdmWTNmR2JmZWJkZGMrekxWbEZySTRPcURXcUR3QUtnQThCYndmOG5LUVZDNjFOVU01OWgxU1MwT3RBZnZaaWk5UUpNc0xodEdja2dObk5RL2pMS2QwQThoNUFYcVB0L0Q5MVBFRk9tR1hZSmNSbGlpVGFqWmdyM2FiSmRoL1JPeEcraFBFV0ljeWk4SDVwM0kxK2ticUEvL0IzV3JvVTdiempBby9mRDFCR3c3YlpQTTZ5T3BDak9vYW4rbGY3c0IybFBRUVI2dTA5Z1pPUmtIREQ3SnRVUXFpR1BTUmFZREdaUEZvY1p3a3lyK3hXL0dRd3JqRUk4cmhXTVpZS1Z3T2RkZk1oZDU4VEMzcmxxTXB4ZnUyZ2FVUVNqY3QwV3NGY1gwaXVhYUpmS1JSYTBJcU5sTjM1ZzZQNnpMbjBPN0NHRG84R2VFWU05blJERzZMblB6dWMzYlp6aW9lWkFYcWJ4c0sxVmhPWERTcGpaQmFYQ1I4ejBCb2M1bHJpelBKcTl2U3p0MGlvVE95MWpVR24yMFdtL3U3M0J0cmZhM0QrWXRaT3pZRFRaYTNwVm1CczI5cnV0a3NyTWtCaFBRYis0dmgxK1R6QmxCbG02eTR5M0oyT0YwQmFMUnIyWVNTVjNQYmpxS1YrYm1WdjNVOFRla1pnRDhkbTQzMDNPRUFPWS9SdVI2Mm0xQ3RBODFYNElVOUJVbXlsYjc4ZktaZVErTEgveVpSVERXNm1iL2VEVGlMZVQycU1NRm9iTTd4NnkraFRJZmpUVy96Z3huWXNERmk2aUdaNkM2ZDlvcFl6eHh6UzZpbVp3QkdPajkxT0gyL0RnWklkVytmc1U2ZTIwT3JEbm9ST3BkU1duUGczV2JOcEh0cmV4c0RCQ3F6WEh5Q1EwRGlIQi9QUkd4aVpYWVBWZWN2TVFNcjVmR2huVitvVjVPeTFFRG5GQTJIR2x3bHVpQWNaaHhpRXU3VFhaZlVMSGhFS1hFM2hhNWF5aWhtaEdBOVJaLytUR2I3am43OGo5RVN4ZUhDd2NEMktZUlRBcmtvWG51UGpKQUgyRHRvS2xnaVV5V1BSTEp6djZoMWdFRnFmWi84aDIvYzBKeDNOcVVaSnlBMlo2aGRBV0kveXJSTGRUOEV6SE5zdWcwektpYVdlS2VnbkdMUU1wRE9hNWNpVFl5YlVMaTJiZE12NUduWFdoWVZlRHVtWjJ0c3hPRzQxSzJhR1czU0RwSlJZMElOaDVZQWdEQndMM3JJcjdGcWs0RFV0Z0JqRyttZXgzSW4wUk04aUNmak5nY0dEQTdDT1FhNUM5aUZpOEQxdFlqOWNnUVdmaUV1cnA5K0xWSDVIQ3ZaZzUrQno5UGl6MGw3R09YNEQ4RmhwYmpzUWhSaUlXNzZZWi9nSXAzb1hVWU0zMXBCTG01MkZRUVh0cVBhM3d2NUMvRkRPWW1ZYlRudjNieFBZT2Vnc2ZZZDJ4TUt3eWcycWVsajJiT2grTDZ5OW90MFJhZlJHNUJ1VnY0SG9ZeFBkTHV3OXczbmhiSFhjd1FJSWlRcEZnV0FsM3NNQVE4WWpnOWliN3JrUVlpWVU5SDdOMUxoRUVqWERROVl0RGYzODBQdE5xQmM5QUkrMEkyWDhwcFhDNXNHTWRJUWx4U0JTTUdsQ1lNV2cwYmRhOHZvVSs3ZG53REowSWV3N29ZMnNhZjlycWtmaHp2VmtubTh6Z3pHRGhUQUVSRVlOUlpkRWZhdXRZbDFlbnhIV0d5QWZjTGR0Znh6RjdWdG0yOC9wOXNTU21aT2U0Y3c0WUJ6bEdQd3QzLzVjUXdwc3d0ZzFySm1JUm5obUNnYUFUS21ZMGRkdm45VHdvT1F2bU9VUmFUUXlYSS84WThGVmNEekIwR002dll6ZzRoYlhIUDVNbVA1TzhXQklUaDVoQk5ROTBmb0d5ZlNHZXZ3aTJDMjlFZC94SXl2WUZEQmVQQmtwQ0FuR1laN0I0Rm1YN004RGxvT3N3N1NhbWtybitNWGo5RkxycGVlREgwVGlZZ1dkb2pYYW82L2NTZURiRDNxMWtiMmlYeCtQMlhGS01pSjhtMkRpeFBBMDE0TnhNdGxtTUowamI5dG5aWnh4bkRPZmtCQlFDdzJHamhjVkswMld5bmdWbHllWXhUSEJjQ3VFQ0M0eldXVm5pM21TNnJ3amNPWmU1dnNxNk9zcjJTZUl4QnBpNGJ1RDV4UUc3TEptOTBNRlNNQ1J3aVNMU202bjFqd3VWM3J1eXhjMHNrVVJyTXREcEdpZE1zWkNDL2FxeXp3cTlNa1VyekkxR0FveGEwRTdhNDVXdTdBLzFKMlBkY0Q4Q0JLcEV1OVNPbk1QTDk4M3o1eE50UFNzUkdHWW9Ba2pnRWdtL1o5OVFIeTRqbDNlRDdSOVVqbUFDT0JXSlE4VGlQbHYrMmZ0MTNCYkU2WVFhQ0RYdWh0a2FpdUxOb05lUXduNUdDcU5ZUHNteUk4YUlSYUx1UTY0YlFpRVFoeGxnRWV4b1RLL2pvSnloMVlHUlNSak1DMUVUQWsra1FFeGJVSDRYaEJrSXM3aEtwcFl2dzJ3RXIxbmltRFdBRVNJTWVtQTJTb3pQUi81OFlvUUV1QUNEWUpjZ0IzT1dPSEFkUWZ4N2FmUHE4TUZxVVovRWFFQUt3Ulo3ZmVZWEt5MGV1ZEt5R3BzYVZrekdTTnRnQk9USXBwdEdNMkFMS1hFQW1IZlJ1S0JnaWZGRUJsbjZsc1Ava091S1lQYVVvZXVvRUd3WXBIdnF4cjllSzl6a01EUytUelNzTURvSkF1ejJyRGNPaC9udktzVm5XTkR4TFFpWXB0MTFpekpmazdUVnpES1BNU0FBQmlIdzRONDV2ZVRoUGY2VFc5YnlsTEpndzZEQ3pOaVpUTmVZK0hxV0hoTEc5RUpOM1lpVTdNQklhYThSZ1NBbEVvdGZxSjkxODEzOTQxZlE3YitTUU1aVkFZWmttTFdSdWhodHlnUWgxQmlMVklzRGpFeElnUE5FRFFnREVwQUlCcmx1eUUyRG1UQ1dpQitnSmdBZGpCSE1FcEtJY1FqMGFPb2haZzRZanpHV3lKQWlVQ0FIVVFNTkIwa1JjRVFiYkJhNGlSL2kvd0gzRDVQTXBkMnQ1UUFBQUFCSlJVNUVya0pnZ2c9PSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzFfUFJFIiwiRklET18yXzEiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkQmxvYiIsImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJsYXJnZUJsb2JLZXkiLCJtaW5QaW5MZW5ndGgiXSwiYWFndWlkIjoiNjAwMmYwMzMzYzA3Y2UzZWQwZjcwZmZlNWVkNDI1NDMiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsInV2IjpmYWxzZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImxhcmdlQmxvYnMiOnRydWUsImJpb0Vucm9sbCI6ZmFsc2UsInVzZXJWZXJpZmljYXRpb25NZ210UHJldmlldyI6ZmFsc2UsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjp0cnVlLCJhbHdheXNVdiI6ZmFsc2V9LCJtYXhNc2dTaXplIjoyMDQ4LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjgsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6OTYsInRyYW5zcG9ydHMiOlsidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN30seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTh9XSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5IjoyMDQ4LCJmb3JjZVBJTkNoYW5nZSI6ZmFsc2UsIm1pblBJTkxlbmd0aCI6NCwiZmlybXdhcmVWZXJzaW9uIjoyNTYsIm1heENyZWRCbG9iTGVuZ3RoIjozMiwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjYsInByZWZlcnJlZFBsYXRmb3JtVXZBdHRlbXB0cyI6MSwidXZNb2RhbGl0eSI6MiwiY2VydGlmaWNhdGlvbnMiOnsiRklETyI6MX0sInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjo1MH19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIzLTA1LTE2IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjI1NiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJFeGNlbHNlY3UgZVNlY3UgRklETzIgRmluZ2VycHJpbnQgS2V5IiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyMzA1MTYwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMy0wNS0xNiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyNTZ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjMtMTItMDgifSx7ImFhZ3VpZCI6IjVmZGI4MWI4LTUzZjAtNDk2Ny1hODgxLWY1ZWMyNmZlNGQxOCIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiNWZkYjgxYjgtNTNmMC00OTY3LWE4ODEtZjVlYzI2ZmU0ZDE4IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlZpbkNTUyBGSURPMiBBdXRoZW50aWNhdG9yIn0sImRlc2NyaXB0aW9uIjoiVmluQ1NTIEZJRE8yIEF1dGhlbnRpY2F0b3IiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MiwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCIsImJhc2ljX3N1cnJvZ2F0ZSJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlCOVRDQ0Fac0NGRFc0NGFnbHhaaVkvSjNESkZDNGU1bzc0MjIwTUFvR0NDcUdTTTQ5QkFNQ01Id3hDekFKQmdOVkJBWVRBbFpPTVJJd0VBWURWUVFJREFsSWIwTm9hVTFwYm1neER6QU5CZ05WQkFvTUJsWnBia05UVXpFUE1BMEdBMVVFQ3d3R1VtOXZkRU5CTVJZd0ZBWURWUVFEREExallTNTJhVzVqYzNNdWJtVjBNUjh3SFFZSktvWklodmNOQVFrQkZoQmhaRzFwYmtCMmFXNWpjM011Ym1WME1DQVhEVEU1TVRBeU16QTBNVGcxTkZvWUR6SXdOamt4TURFd01EUXhPRFUwV2pCOE1Rc3dDUVlEVlFRR0V3SldUakVTTUJBR0ExVUVDQXdKU0c5RGFHbE5hVzVvTVE4d0RRWURWUVFLREFaV2FXNURVMU14RHpBTkJnTlZCQXNNQmxKdmIzUkRRVEVXTUJRR0ExVUVBd3dOWTJFdWRtbHVZM056TG01bGRERWZNQjBHQ1NxR1NJYjNEUUVKQVJZUVlXUnRhVzVBZG1sdVkzTnpMbTVsZERCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQk8wWmxSTXFrT1BScUhOYTRYajdvVHZFS0hMdGpXZXh2dUFDOFdMbEs1M1RJR1hjMkpKM0diRWFWbzEwdEZqbkxITFhoZUthZFpDajJIRXozTkpTYVVJd0NnWUlLb1pJemowRUF3SURTQUF3UlFJaEFMSGVxa2NsOE83a3kxaVJYaWNWQUM3eDJ6c1UxMnZTM0JPVnlYQ2dlZEUzQWlCbE0rK3huek9PRXMybTNzRjgvWnRidzZVTC9BTVQxWlh0NWZ5cVVoSXVXdz09IiwiTUlJREhEQ0NBc0tnQXdJQkFnSUJBVEFLQmdncWhrak9QUVFEQWpCOE1Rc3dDUVlEVlFRR0V3SldUakVTTUJBR0ExVUVDQXdKU0c5RGFHbE5hVzVvTVE4d0RRWURWUVFLREFaV2FXNURVMU14RHpBTkJnTlZCQXNNQmxKdmIzUkRRVEVXTUJRR0ExVUVBd3dOWTJFdWRtbHVZM056TG01bGRERWZNQjBHQ1NxR1NJYjNEUUVKQVJZUVlXUnRhVzVBZG1sdVkzTnpMbTVsZERBZ0Z3MHlNekV3TWpVeU16VXhOVE5hR0E4eU1EY3pNVEF4TWpJek5URTFNMW93Z1pJeEN6QUpCZ05WQkFZVEFsWk9NUkl3RUFZRFZRUUlEQWxJYjBOb2FVMXBibWd4RHpBTkJnTlZCQW9NQmxacGJrTlRVekVpTUNBR0ExVUVDd3daUVhWMGFHVnVkR2xqWVhSdmNpQkJkSFJsYzNSaGRHbHZiakVaTUJjR0ExVUVBd3dRWm1sa2J6SXVkbWx1WTNOekxtNWxkREVmTUIwR0NTcUdTSWIzRFFFSkFSWVFZV1J0YVc1QWRtbHVZM056TG01bGREQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJEY2xsU2tOeXkyZWJWSnVVaDdFRFI0bytwZkZYdERSd0NYdW4wTC8ydTF3VjhRWW9wbXJLdk4yWW1XVTN4ZkVvdTlHWWxnOEZWU3lpdUk3WGhzblZUMmpnZ0VhTUlJQkZqQWRCZ05WSFE0RUZnUVV0VG10K0hrZ0JtaUtLdHhuNUFmcjUyMVRJc0V3Z2FRR0ExVWRJd1NCbkRDQm1hR0JnS1IrTUh3eEN6QUpCZ05WQkFZVEFsWk9NUkl3RUFZRFZRUUlEQWxJYjBOb2FVMXBibWd4RHpBTkJnTlZCQW9NQmxacGJrTlRVekVQTUEwR0ExVUVDd3dHVW05dmRFTkJNUll3RkFZRFZRUUREQTFqWVM1MmFXNWpjM011Ym1WME1SOHdIUVlKS29aSWh2Y05BUWtCRmhCaFpHMXBia0IyYVc1amMzTXVibVYwZ2hRMXVPR29KY1dZbVB5ZHd5UlF1SHVhTytOdHREQUpCZ05WSFJNRUFqQUFNQXNHQTFVZER3UUVBd0lFOERBVEJnc3JCZ0VFQVlMbEhBSUJBUVFFQXdJRklEQWhCZ3NyQmdFRUFZTGxIQUVCQkFRU0JCQmYyNEc0VS9CSlo2aUI5ZXdtL2swWU1Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lRRHpSMGhhMWJ0MVlBOTFKbUJWS3hUcUJON2dBaGhVbEJ1blJOT3VnaUoyaFFJZ1VtdXNRMEs2cHpSbjl6VGdsZE5yeXdsNkFVaXBQTzh0MVl6UHdRbHFKaU09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQU13QUFBRE1DQVlBQUFBL0lrenlBQUFBQkdkQlRVRUFBTEdQQy94aEJRQUFBQ0JqU0ZKTkFBQjZKZ0FBZ0lRQUFQb0FBQUNBNkFBQWRUQUFBT3BnQUFBNm1BQUFGM0NjdWxFOEFBQUFCbUpMUjBRQS93RC9BUCtndmFlVEFBQUFDWEJJV1hNQUFDNGpBQUF1SXdGNHBUOTJBQUFBQjNSSlRVVUg1QVVaQXdvMmsrT25Hd0FBSGU1SlJFRlVlTnJ0blhsNFpGV2Q5eisvZTJ1NVNYZlRXMUtoUVlRQkc2U1RBQU80NExpZ29nT01yL293ekRpS0RnNmlxS2lNSXlDRE9Bb2lJTDZJNG9Jb0xvQ0N3cWl2aU9JMk1Hd3FDaTEwS3IzUXJNM1dxYVFYT3Aza1ZsSjFmdThmcDlKME45bHFTVzdkcXZONW51cmtlVHAxNjl4YjkzdlBPYjhWSEE2SHcrRndPQndPaDhQaGNEZ2NEb2ZENFhBNEhBNkh3K0Z3T0J3T2g4UGhjRGdjRG9mRDRYQTRIQTZIdytGd09Cd09oOFBoY0RnY0RvZkQ0WEE0SEE1SHN5TlJEOEFSRDBhNjA0QWl6QlB3UlkwM2Z1K0lpSWlpaWdBR1JWV1JvcUtocWdxdGE0YWlIbjdOY0lKcGNrYTZNcWd4NG5sZUVtRUJzQUJZRExJWVdGSjZMUVlXQW5zQUxVQnl0MWNDTU1BWU1MclR6eEFZQW9aMytya1ZHQUMybEg0ZlJIVklWRWRVVFFGOERWYm5vcjRzaytJRTB5U01yR2hqYkdpTTFJSjBFbGlNc0NmSWZzQnlZSDlnUDJBWlZpRHpnVllnQlhqVTlqNFpGOVlJVmtDRHdHWWdCenhUZWowTlBJMnlFZEYrbE9kUUNVa2tEUGtSZ3JXYkk3dU9UakFOU3RpZEFhT0NKL05CWGd4MEFZY0FLNENYQUh0aVo0MWsxR09kQU1YT1VOdXdZbm9XZUJKNEhIak0vcTVQby9RTGJETnFSZ1VJZWdkbWZXQk9NQTNDYVBjU2lxWVZrZEUwSXZzQWh3Ti9WL3I1RXFBTnUzUnFCTWFBNTRBK3JKQWVBUjdGQ3VvcG9BL1Z6YURiQVEyeS9UWDdZQ2VZR0JOMmQ2QkdFWkVXaElPQW80SFhBNGRobDFmMU9IdE1oOEh1ZllaTHIrM1k1VnVJRlVvQktHTEZueXE5a29CZmVobnM3TFFaK0N0d04vQTdJQi8wOUZVOXVFWjU0alFWWVhjR1VCL1ZBOFNUWTRGamdTT3hzMGljSG9JaGR1K3lBVmdQUEF3OGdkM0RiQUdlUTNVRVlReVZNVUdMQ0FiRmxNN1QxM0doQ0FtUUpCQmc5MkZMZ1VXQWorTFhhc0J4dXJoTlRiaWlEWHdmVk9jamNoUndJdkQzd0Q3WWpYa2NHTU51Nmg4RS9nemNEenlFYWovb2tDQkdKVWZRRS9Vd0o4Y0pwczRKTzl1UlJCS0t4U1VxdkFsNEwvQnFyQ1VyRG94aE4rcDNBTDlIOVg2VXAxSXB5UStOS0F2VzFxOEplU0tjWU9xVS9DRnRxUEVCRmlLOERmZ0FkdG1Wam5wc00yUUF1QVAwSjhEZEdKNFJLS1o3NHlXUTNYR0NxVVBzSG9VQTVCamdvOERyaUlkUUZEdWIvQXoweHlpcnhDTmZLQWp6VmxlLzRhNEgzS2EvanNoM1pjQVVSVlc2RUQ0Qm5JRDF2TmM3QnJ0cC93SHdZekhGUjFURTFOS2NXeSs0R2FZT0NGZDBnS2NBaXhCNUwvQXg0RytpSHRjTWVScjRMcXJmd3hRZlIwVG53b0VZRlc2R2laaDhWd2F2V0tRby91SEFaNERqaUlmL1pBVDRHYXFYQ1R3QW1QVHFUVkdQYWRaeE0weUVoRjJsdllySWU0QnpzZkZjY2FBWHVBVGxwd2pEdFhBSXhnVW5tQWdJVjNSWWw1dlNoc2k1d0duWVlNZDZKdy9jaU9xRnhrczk1SnVRZExaeGwxOFQ0UVF6eDRTZDdlQjVvSG9nSWw4RTNrSThISThEd0VXb1hvVklVODBxTytNRU00ZUVYVzJJbDBLMWVDVHdWZUNWVVk5cGhqd00rZ21NM29LSUNiTHg5cVZVUXh5ZWJBMUJ2anVEOFpPb0tid2V1SWI0aU9WKzRGK0xxZVROQWswdEZuQXp6SndRZHJXVjRnTE42NENyc2VIMmNlQWU0SU9nV1JDYWRSbTJNMDR3czB6WWxRRVJnRmNBM3dFNm94N1REUGtENktrZ2F6dzFwQnJRQ1ZrSlRqQ3p5RmpuVW9wZUFwUVZDTmNDUjBROXBobXlDamdaZUFCVm1uMFp0ak51RHpPTEZDVUJ5dDRJbHhNZnNUeUY4dThnRDJDTUU4dHVPTUhNRXRZcHFYc2dYQXk4T2VyeHpKQmg0UHpOcjJ1N0hhTUV2VzRadGp0dVNUWUw1THN5b0VWUHZjUTV3UG5FSndUcENsRTlXeUh2WnBhSmNZS3BNV0ZuTy9nZUtNY0IxMkxUaHVQQW5TanZCSjRKc3M0YU5obHVTVlpyckJkL1ArQUM0aU9XelNpZlIzaEdWS01lUzEzakJGTkR3cTRPUkRVSjhuRnNkbVJjdUU0d3Q0RVM5NHpJMlNZdWErdTZ4em9uQmJXRktVNk9lanhsc0I3MFNoVXBCRDFPTE5QaFpwaGFJUjVnT29CenNCVWw0NEFDMzFGSnJzT3R4R2FFRTB3TkNMc3lxTzhEY2hKd1ZOVGpLWU1zcXRlTEtUaC95d3h4Z3FrRklralJMTWRXZG9uTE5WWGdPaEwrazFJMFVZOGxOc1RseTYxYndxNE1Palltd1B1QWc2SWVUeGs4aXVwUEtSclNhNXlEY3FZNHdWU0xDSkpJdkJSNFI5UkRLWk5iMVJRZVJkM3NVZzRUV3NsR3VqcEExTE1iUVRFdHpwRTFJV0ZYQmo5WVFERWNmQmZ4eWNjSFcrRDcvNG1mVkJleVh4NFRtNVd0Lzc5ZFJONEI1TUx1ekVwVW54QzhmRkVNclQxdUNnZEFoR0s0YlgrUXVNMHVxMEJYUmoySU9ETGhra3hRUk9uSFp0dWRDUEpyeEx0SmhZOTZlSWVGM1psV1BlSW9ocnZqNHNpdVBXRm5wdlJna2JjU240U3djWDZEZUZ0d3E3R3ltVFNXTEZ6UkJwNlBqYmlWOXdCbkFmc0MvZGc2VkxjQnQ2SGFtNXEvYUNqY3RvbldKcWhMdGVQNjJCSkpTeEQ1QmZDcXFNZFRCcHRSUFI2UmU5MXlySHltRGI0TXV6SzJhWTh2aDRCOEduZ3J0b21OWW50NHJBUitEZnhlMUt6RDg4SmkwZERhd0tIaHVsY3IrYVVMQU40TzNJRHRTUklYN2dEOVA4Q2c4K3lYejdSV3NpQ2JRL3c4cUt4Q09RVTRFOXNXVGJDTmE0NEJ2Z2o4UnNYN3NTcnY5MFQyRFRzelh0alpFZlg1elFyaGt2bW9NVDd3TnVJbEZvQjdFRy9RZWZZcm82encvckFyZzZJaUlrZUJmQTdiSW01MzBSV3gvUVovQ2R5RTZrb2dMQnJEdk5XTlVmUXQ3TzRBZERuSWI0bVhkV3dFK0VmZ1ZyY2NxNHl5ODJIeUs1YWlmZ0pVT3hBNUMxdTFjYkxtUHB1QjI0RWZvbm83NG05VlU2UWx4aEd4bzUzdEdNOEQ2OVcva25qNXN0WUJid1NlZG9LcGpMSy83UFRxVGFWeU85S0hjaTV3T3JaNzdVUXN3VDdScmtma1pqQ25pYkRYOE40KzRjRkxvejczaWpBaW9KckNwaDNIU1N3QXZhS2F3K1c4VkV6RlgzaVE3VU13byttaHZtdXhYdTQ3cC9wejREWEExeEg1bGJlazdRd1MvbDU2ekVMckpJMFRJaUN5SC9DeXFJZFNBWDlWVDhiRTZhVmlxbnBDcHJQOTVGc3pZQnQ4dmh2NFByYW40V1Q0d0tIQVpTQzM1UHVDMHdYdE1JZnV6VWhuSnVwck1TMTZ3STZvL2FPQXZhTWVUNW5rZ1FkUVhKSllGVlM5cEFpeU9idEVVMzBTMVk4Q253TzJUZk0ySC9oYjRNdUkzREpxQ3U4VGtjVmhkd2ZoaXZvVlRyNGxqWmlpWUdmTG1yV3luaU1HUUIvQ21jZXFvbVpyOEZJK3hYWlJ2Umc0QTl1WmFqb1MyRlRlYnlEOE4vQTJQQTFLVHNHNlJNVnJKNTdMc2FkUWNrNHYxVkhUVFd1UXphRkNBUXJYZ0o0Q3JKbmhXMVBBRzRBZklONjNFVGtpMzluaDVldHRmMlAzTHdjUm4zWjZPL01vbU1Hb0J4RjNhbTdsQ1hweVNCSEZTLzRXZUEvd3h6TGVQaCs3Ri9xNWV2eW5DcG53a0E1R085dWp2azdrT3hlUC8zb1k4V2pVdWp2cmtVUlIzQlJURmJOaUZrMnYzb1FXeGdEdVIvVms0Tll5RDdFM3RnRGVUMUNPTTBJaTZtV2FTaElwR28vNGxIemRHWVB0OFVMYUZSV3ZpbG56STdUMDVxQ1FCL0hXbzd3ZnVCSEtpby8xZ1ZjRFAwUzh6d043alhUdnlXam5rbWl1bEFqcWV3dUpUL1g5bmNrenN6MmxZeHBtMWZFV3JObEtla2hCOUdsVVR3ZStDeFRLUE14aTRDeEViaExNRzQzNFhvU3p6VExnUlZGOWVCVU1BczZXWEFObTNWTXRqL1pSaW9vZFFQVXM0SnRNN2F1WjhEREFxMEN1Ujd4UEFvdnlYUjBNelgwK3p2N1k2SVc0OFJ6b1pyZDdxWjQ1QyswSXNqa1F0Z3A2TG5BRk1GckJZVExBQlloOFQwVzdOWm13aGI5bm1kR1g3dERJZ1ZpTFh0elloRExreXNCV3o1ekdRZ1U5T1ZRWlJQVXp3R1hZdFhXNUpJQzNnOXlVR05NVEZQelpYcUpwd21jMHRSRGdnTG04WGpWa20wRG9LczlYejV3SEQ1Wm1taUhRendHWFVwbG93SlkwdWhxUnN4RG1oOTJ6S1JvaG5kK1NKcDcrRjRDdEJnckdOV3VvbWtpaWJVdDdtaEhRaTdISlo1V0taakZ3UHNpWFVka3I3TzVndEx2MlBodURZUERtWXpmOWNXUnpTMCtmODhIVWdNakMwNjFvWkFUVmk0RC9TK1dpU1FHbklGd0Rlb2pCc3oxYWFvaDE4TE1IOGR6d0F3eU9ITG9YbnF0QlZqV1I1bk1FUFgwZ01nSjZFZkFsS2pNRWdMV2lIUVB5QTlEWGp4WTNNd3Y3bXFYRTA4TVBNQ0lZdktKYmtsVkw1QWxRTnRKWmhsRXVCTDVLK1g2YW5la0crWDRxMlhhQ29GTFRmWTJ5QkdpTjltcFZUSWhDWXEzejhsZEw1SUlCbTR5RzZMQ29YZ0JjVFhrUkFidnpZdUFiS3Q1SkdMeXdWZ0djd21MaTIwOW5KT29CTkFwMUlSZ29tWnlGYmFDZkFxNmp1c1NORHVETGVIS0toL0ZyNUt0WlRQeHlZTWFwWnRaMjdFVGRDQVoyR0FJMm8zbzI4TE1xRDdjVStLSVI3elNqSkVhcUY4MmlxSytQSTNycVNqQUFFaG9ReVlHZXlkUjFBbWJDSXVCaThlVERHRWxVVWlldGVQQWVxQWpBdktpdlRSVzQzWDZOcUR2QnBOZVBiMHpsTWVEandPb3FEN2tIY0tINGZFVEVKTU91OGt6T0JTOEo0Z08wUkgxdEhORlRkNElCYXptVFloRThXUW42Y2FvUFRWOEFYS0RpblNxcVpVVTdxM2g0NlJhSXQyQ1NVUStnVWFoTHdRQ2tWdytneG5EM3R0eHZnWE9adnJER2RDd0FMbFRQZjVkbkNqSnowUWlwZ1NjZ3ZoWXlpR2ZBYUYxU3Q0SUJhT25KOFpvRkdVVE45Y0RsVkcvdFdRSmNhdnpFOGVDUm42R2ZKa3pORStKcklZT1NZSFN2T0cvRDZvTzZGZ3hBT3B0RGtRS3FYOEpXeXErV1pTQ1hJK2FWaWt5ZkhpQ0E3OFhpV2sxQlNrVW9Mb3BiM2ZUNkl4WTNnUzNoSk51QVR3TjMxZUNReTBHK2duS2dpakRhT1hVaW1tZ1JiSkgxdUpJR3htdENPNm9nTmxld0ZHbjdCSEEyOEZnTkR2bHloTXVBRHVOTnNkcFNHRDM0S0NYZXpyK1VlaDdxck10VkV4dkJwTE01d0lBbS80U3RLTE85Qm9mOUIrQy9VRzJaM0FpZ0pCN3JoZkxUcXV1SmxQemJWMUFYM2w4MXNSRU1RTkRURDR5QjBSdUFxNmkrN3FrQXB5QnlLcE5Zemp4VnBGQUVDS00rL3lwSXkxV25pZk5mVmsrc0JBT2xRRTFQUmtFdkJYNVRpME1DbjhKUHZnbngyTjJ4bVpROFl2TklocU0rOXlwSUlaNVRTdzJJbldBc0JwQWM2SG5ZYm1mVjBnRmNqSnJsaUtEN1B2OGZraDJrTkpFTlJYM1dWZENxU0V5LzYvb2lsaGN4Nk9rSE5lQW43cWU2dWdBN2N6Z2k1Nk1zeUMrWWNEOVRyZU0wU2xvOEVVL0VUVExWRWt2QkFBVFpmaWdVUWZrQjhOODFPdXlKaUp3bVVwRHdoYlVCdGhCZjAzSUFKRnpuc2VxSnJXQmdQUEdNSWVBaVlHME5EcGtFUHFFa2o1NGdFdUE1NG10YURsUklxcHRncWliV2dnSHdGTlJHTkY5Q2JUSUw5OFNhbWp0MmV4NXZKYjZXc2dDVkpFNHhWUk43d2FTeWZZZ3FxTjRFL0x4R2gzMHRJaC8yaXNiYktYUm1LL0cxbEFVSUNXZFZycDQ0UitEdUlQM3NDUG05V29leE5jNk9BdmF0OHBBZThDSGorLytMYlpzT2R0TS9TRHhya3dXZ013N3gzN3A4UnkvUFhTUW1SaFNCaFE5dmpmcDhJcU1oQkNPYkJnbVh0Wko0MTU0ckN6ZHMvRHB3TWRWSEY3Y0QvNG5xS21BVE1JVElBTGErY3R4SWdhU24rb1A4aXFWb0lnbkdMRVhrZGRnSHo2TGQvcXdQdUN2c3p0d0RzbjEwZEpBOTFzVjEwcTJNaGhBTVdBTkFlQU9BZmcva1dHd0x3R3A1QXlLbjl2ZjBmYUd0czMxWVJKNk4randySk1rVUNYRGhpblkwNVVQUkhJbkl4Y0JybVR5SFpoams1NkRucGRJTEhnMVh6Q2RZM1R5ZE5HSy9oOWtGQXlBRDJFTG50ZkNiK01EcDdkMGRSK0w3QmVDcHFFK3hRcVlVREw0SFJUMEk1TnZBTVV5ZGNOWUt2QlBrYXhqYThadHJZOVJRZ2dsNiswQVYxUHdQMVZlZEdXY2Y0Sk5paWdFMldqcU9UQ3FZc0RPRGx5OEk4QUZzLzg2WjhtYUVmd0pocE13NkNYR21vUVFENDkwQnZEeHdKWGJOWFF2ZWduZ25ZTk1LNHVpTG1YeUc4Y0NrL1F6d3BqS1A2UVBIb3lab3BnaUNoaE1NWUdjWlkrNmpkaEVBQWZBZjJPVklMZElLNWhxZnFjdEVMY1UycXlxWEZ3SHpteWxyb0NFRkUyUno0SGxGNEJwcU44c2NCbnlXZU5aWEZpWVZqQUF5U21YNVBubmlPZU5XVEVNS0Jpak5NdnBYeW05NVBoaytzSng0Vm1EeGdQa1QvbzhDeWtaZ2ZRWEg3UkZqdGpYUGdxeUJCWlBPNXNDVEFyWndSaHlYVWJWbVlzR2dJR3dIcnFXODBKOEI0SWZxK3liVlJHMW5HbFl3OXFtbm9Qb240QzlSajZjT21LZEE4ZUJkQzM3WUFpTUtxamNDMzJKbVM3TWg0QkkxNWs1VlJad2ZwakZRQmNUYkJ2d2k2ckhVQWZNUW44SUU4UStsSXZEREtPY0Jud0Fld0VabkQrMzIyZ0xjRGJ4ZjBLOTZuaFJic3MwakZtaUNKTyt3dXdQZ1VHdzZjNDJheGNTU0sxbSs0TU9zMjBiUU8vRk5iZ05OVlJUSklMS2ZLanZDYWNUK013VDZhSHE3dDJXMFZVbjMxc3FlRWg4YUpqUm1HdFlERHdKdmpub2dFZExLMnVjRVR5WTFBdHZLUENqV3N0aDhhcGdCRGIwa0EreTZUR1FZK0dQVVE0bVllU3BOOEgzUE1nMS9BWU5zcnJTWjRYNHFienJiQ0xTS0UwelZOTWNGdEw2R2g3RmgrczFLSUNLSmh0KzB6akxOc1lleHkvWWN5RWJpbVFCV0N3S1VKREZ2RUR2VTNVYWdQbU1ZSDVFOVFCYWpMRVlJQUVVWkFkMkN6WkFkUkNoU0VJSTF0ZG1TTllWZ1N0dmNJWlhtbm1GMEJ0OTNlSEFiakkxQmtGNkt5SUhZUkRvRFBJdnFRNlJTZzJaNE82MXJ0ODdvUTB0V3lpVHdOOEIrMk5DaWJjQmpvbWFESXNWZ0d0TjAyTjBHK0FnYUtMSmlURGdhdkpjQkx3RTZFT1pqejAwUnhrQ0dZRWYwd3A5SWNHZllsVm1ISjNuR0NnUnJLcjhObW1LR0xyVWVUeUxjREJ3YjlYZ2lZalhvRzRBKzYzZlpsYTNMRnhLazB3Q0xFSGtuY0RKd01QWUdWMng2OWtyZzI2aitBaGlaNmtZUHV6SjRhc1I0L3VIQWg3QVd5Z3cyeEdnTWVBYTRCZVdiWTZUV3BpUlBlb0p4bGNyM0JvaThFVGdGZUEzUXhzenZYUVZ5d0IzQTkwWDFOaUNmcnRCLzFDU0N5UUFzUU9SWHdLdWpIazlFUElyTnBIdzY2SG5oOHFRMEV5ekRKdC85RTVQUFJzUEFsYUo2dnNMZ1JLSUp1ek9JcXFoNEoyTHJMRXhWWTZFWE9CM2hEb3d5ZnJ5d00wUFFteVBzN2pnRU9BdDRHN2FMWERWc0EzNkVUV0YvWERDa2UvckxPc0NjQzBZUGFpT2Y4c0UrS1ZhQTNvYnE0NEkzcGpKRzBMTzU1cDlwYndiZEgrUi9zTXVDWnVSSjBOZUNQTDY3WU93TXJQTVErUnJ3M2hrY3F3QmNoREVYSUxzdXFVWTZNN2FNczNJTXdyWE1iTS9ZQTd3RFdCUDA5QkhhZW5BSmtCT0JDN0JCcjdYa1h1QU1oSHQzRnVsTWlOQktwc1BBUjBGdVI3eHJWRGdKRXZ2a3U5cThmQTB6K0o0L2xyd0dtNy9SckNRbUtvU1I3OHFVSXZ6bExkaWJkb2JING9PSXZKemRrc2RFQU5WRkNHY3pjd05MTi9BeDBJUjl1RWtBY2lhMlEwT3R4UUx3Q3VBN3FMNENFY3JwckQzbmdwRjFBMUFzZ0plNEgrVUQyUGlrZHdMZkEvbTlpdjgxRmUvNHNEdVR5WGUzU3pqRFBwU1RvYllHOTk3QWFUU0prV01TRXNBTEJLTW9xRWxqeFZKT3ArZ01JaWZneS9nZTBTSUN3aXVBdnl0emZQOEFjZ0JxRXRpbVdaL0J0b3gvZnFnMm1ub1ROZ3BoSzlXVjd1MEV1UngwdjNMcXRFZHlBd1dyTnhGMlpoRGYrNE9xdmcvN0pEa01XOExvUU9DOUlBOHBjZ2Z3dTdBcnN4SzBENUZpT3N3ajY1K2I5alBHRG15bkdIaWd1Z3prSXVDVlVaeHJIWkVBVGI5Z0ZXNXZsbmFncTRKakhrSFJ6Q3VWNnlXL29yMlVmQ2xIVUg2aTNUTGc3WWkzRURnRG0rVUsxdGh3Ti9CYm9CZGxBTkU4eUh4Z2YreWU5TTNBQVpRL0FSd0ZjamFxL3g1MlpVWm5zalNMZE5NZmRtVktjemlIQTk4RVhqYlJud0dQWTBQMDd3VDlDOHFUQW9QNTR0aVlMeDd6Vm04aTdKNUhvYkEvWG1LamVDcHBSRHF3KzZUVGdGZFZjREVialVIZ09PQ2VuZmN3cGYzZENwRGJLRDg0ZFJYb01VQi8wSk96MzZmbmc1b3ZBUit2WUl3aDFnVHRZMDNaZHdDWGl1cWQ2akhzNTRYa3V1ZkhQdExaQVlvblB2dGl2K2NQQWd2TC9Nem5nSDhCZmkzRkl1blZBMVArY2FSTGxDQ2JLMjN3WkNYd1B1QWJ2TkNLRlFBdkxiMU9BdG1Nc0VGaFF5cVJlaHJZRkhaM0RBR3BSQ0szQ0x3MmhMMndUNXdYRWM4TXlkbGd3aVdaUlh3cWU2RDQ3UHpRRlFYMUFGUHBnM2g4VmhrRHZvUHlXWVErTFRMaHhyekZSa3Vic0R2ekdNcDVpRHlFdGNvdEtlTXpGd0tuaWVxZGVONjBWUWtqWDlNSFBUbnluZTBZeitzUjFWTVErVHFUVnpEeHNEYjROdXlzNUpnNVB2YnBIUWV1RjlWUEtteWJ5R2UwTzNaMmF5K0lLWHhmdldRRytCemwzZHRISzNJa3dwM1QvV0ZkTEZQU3ZmMzRwZ0FpNjFGOVA3YW9lQlBWSXBrVFBPSWhtRjdnOHlxeXJSeHpiNUR0Ujcya0FhN0dtbzNMWVJIQ1c5VHptYzdJVkJlQ0FVajFiZ0tLSVBJRWRpMTZIZkZ0WUZTdjFQdnkxQURmUWxoZjJlTlN3ZFlhdUxHQ054OHR4Y0tTNlQ2M2JnUURFUFFNRVBUMGdlcEdWTThBdmtaemgrVFhFcUg2QXUyenpRYmdWMmlwV1ZhWjdMUjh1d2NvMXdPK0hKSGxURk9Vc0s0RXMrUEVzemtRMllycXVkajFxS3Y2VWh2cVBSUnFGYW9icWxxTjIxNUJHeWsvbFdNUmNNaDBmMVNYZ2dIc1RJTU1vL29GYkN4Uk0wY2ExNHA2Rjh3NjlmeFJxYVlYcHdpSWpGSlpHc1BCK0Q1aDUrU2UvN29WRE95WWxzZFE4eTFzeE91R3FNY1VjK3Jka0RJZ2FraG55d3VJbk9ROEt6blgvYVV3bGhSdjh1ZEtYUXNHeHUzdllrWjYrbTVDOWQrd1ZoUkgrU2lWbFlPZFM2b3ZPMXVwVkN3WlJWcW1tdURxWGpCZ1JkUFMxUWJpM3dhOEI2YTNsenRlZ0dKcklkY3pVUzhaRnlQU090WEdQeGFDQVFpeUEyQUtBSDhGL2hWck9uUm01NWxUeEZrY3A2T1Y1Nk1OSmlRMmdnRUlldnRKRHdIb0U2aCtFTGljK0hZMm5tdkdpSGsrL3h5UW9wRUVBeUNQOW8zYjI3ZWdPbDdhZEdQVTQ0b0JJVFlBMHpFNVB0TTRkMk1ubUhGS3hvQThSYTdDWmduMlJEMm1Pc2NKWm5vOHB0RkViQVVEMXV5c0dCVlBmb1BxdndDL3BOUWExdkVDQm9IaCtyY3NSODZVaG9kWUN3YWdaWFUvWm5RTVJGYVh6TTVYWUN2Tk8zWWxoK3FnMDB0MXhGNHdBQzFyTmhIMDlDRkN2NkRuWURQMm5veDZYSFhHTXloaDlKYmJlTk1RZ2hrbjNaTkREWGtOQzk4dExkSHV4SzFCeHRtZ3ZtODhkWmI0YW1nb3dRQUV2VGtTZ2FnaWZ5aUo1cXU0SlpvQzYwUU5xZDZCcWcvV3pEU2NZQUNTUFFPMFpQdEFlQmJWczdGeGFBOUhQYTRJMlFhc2pYb1FqVUJEQ21hY29DY0hRbjVrWk5sMTJHcU90OUJrYmJKTGJJUXF3K1lkUUlNTEJxeG9XcExQQVBvQXFpZGo2MTAxVjJOR1dJZExqNmdKRFM4WWdHQk5ianc2WUROcUxzR1cxYm1MNXZIWjNLZDQrYXJ5VEJ4QWt3aG1uQ0NiZzZJWWhOdFIvV2ZnVW16bHpVWm1HTGhYMEZya21UUTlUU1VZS00wMnEvb0FOb3FhVDRPK0cvZ1RqVHZiUEk2NnNLRmEwWFNDR1NmSTVzQlF3Sk5mZ1o0QVhFaGpkZzYrR3pPMkVXM1U1OEhjMHJTQ0FVaXY3aWQ0c0ErVVp6SG1mT0FmZ1YvUU9Ia2pJWEFyZmxJRHR4eXJDVTB0bUhHQ2JBNDh6NkRjZytxN2dZL1JHSDZMSGxUdndXMzJhNFlUVEltZ3A0OGcyNGVIYmt1UERWMEYrbGJnSzhUWEhLdkFqL0NrMzhXUDFRNG5tTjFJWmZ1UnRkdEJXUy9HbkFsNkluYVpGa1k5dGpKWmhlcE50c05XSTI3Tm9zRUpaaEtDYkE3MUtBRC9DM29TdHAzQ1N1SmhUY3NEVitENVQrS0NMV3VLRTh3VUJEMzlCRDA1UkJrMEl0ZWl2QlU0RDNpSStvNHp1UW5WR3pGRmd0NjRyaWpyRXllWUdaRE81bWhkdFJIUXA4WG9KY0R4d09leGpaN3FUVGozb3ZwWlJMYVhVZjIrMG1wZXU3eEhGRlFNRlI0TGFqdDdWM28rVTc3UENhWU1nbXlPZEc5T01Ud2lSZjBNcXNjQlh3Q2VvRDZFOHlEd0VVUWUwUmxieGhUUUlTcmJvdzN1L0Q3UDdMamZ0bFp3TEtVbVVSY0thSjdLNm5GUFcvZkFDYVlDZ3Q0KzBxdHpSbUd0cW40S09CWmJOUDBob3R2ajNBV2NvbkNmcU5JeTA5bkYzdVA5d0NNVmZPWnFyMWpZUGg2amxsdzlRT24zTE9YN3NyYWl1cWI2eTZCUXlHK25zZ3FwajZDYW04b003d1JUQlMzWkhDM1puQkhWdGFMbXM2REhBdWRnaXczT2xmTnpCUGd1eXJ0QlZvb1dTWmZSaUFnQThiWUROMU9lMkllQW00MmZOS2x3Mis3LzkwZkt2MkgvQUdTcjlSbWxzLzJRREJScjJTeG5sbEhnWmhWdmNLcU9GMDR3TlNDZHpaSE85cXNXZWN6a2kxOUVPUTQ0R2ZnSk50eG1OcFpyQnJzRSt4Q3FIMEhZRVBSc3RCVkN5eURJNWtvdEl2Z1JkcGFhS1Q5RDlmZWd5TVBQVjZDVllnRTg3MWxzYjUrWkZsbnNCNjVBWktoYWo1SEFlTXVMMjRHZmx2SFd1MUM5UWRTUW5xSk5vUE5velFKaGR4dUtqNmltRVRrSTJ4YjdUY0NoMkJiZjFUeW94ckJQN3grQlhwOWV0TStUNFpZTnRGUVIrcEx2NmtEdG5YQUV0dVhkWWRPODVYZW9mZ0RoY1JrenBOZnVLdEt3dXdPVU5NSjV3SmxNWFUxeUMzQ09tTEdyVlh4VGl4Q2VzQTFZMWdIb3ZpQlhBWDgvelZzZUJFNVZ1TTlUblhLR2RvS1paWWE2Mm1oTkxTQS9PdFNLeUFIWVpyWXZCN3FCRjJNYjNMWXd1WWlLMktYRnM4Q2ZzUjI2N3BCaWNTT2VSN3EzTnJsdytjNE14dk1RMVU2RVQySmJsQy9sK1h2RWxNWndvNmhlcnVJOTZac0N5VWxxQklUZEdWQmFFRGtKK0Fod01MdFdsUndCN2dNdUU5VmZBb1d5bDVKVE1OYlpUdEh6UVBWRmlQd0g4TS9Bc3AydXMyS2pPRzRGL1FMaTkxSXNFUFJPTFZnbm1EbG1wRE1ER0JIeDVpR1NBZllCOXNOK21ZdXdqVnVMV09malZ1QXByUGw2QTBiNzhhU1FmbVF6TWx6N3poWGFEWG50UU5DMFFqY2lyOEtLMmdEclViMUhyR0ZqUmpmM2FHYzducW9VUEcvUDByRU9CZVpqMituOUJlWFB4ZGFXTGY3UTBMUTNhcVhrdXpJQUNZVURFWGsxOEJLc2FEWUE5NkJrZ1h4YStoQ1hCT0Z3T0J3T2g4UGhjRGdjRG9mRDRYQTRIQTZIdytGd09Cd09oOFBoY0RnY0RvZkQ0WEE0SEE2SHcrRndPQndPaDhQaGNEZ2NEb2ZENFhBNEhBNkh3K0Z3T0J3T2g4UGhjRGdjRG9mRDRYQTRIQTZIdytGd09Cd09oOFBoY0RRWS94OFFMRXR3bHk4T05BQUFBQ1YwUlZoMFpHRjBaVHBqY21WaGRHVUFNakF5TUMwd05TMHlOVlF3TXpveE1EbzFOQzB3TkRvd01BV2pTNm9BQUFBbGRFVllkR1JoZEdVNmJXOWthV1o1QURJd01qQXRNRFV0TWpWVU1ETTZNVEE2TlRRdE1EUTZNREIwL3ZNV0FBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCJdLCJleHRlbnNpb25zIjpbImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6IjVmZGI4MWI4NTNmMDQ5NjdhODgxZjVlYzI2ZmU0ZDE4Iiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6dHJ1ZSwidXAiOnRydWV9LCJtYXhNc2dTaXplIjoxMjAwLCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxXX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIwLTA1LTI1IiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJWaW5DU1MgRklETzLCriBBdXRoZW50aWNhdG9yIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAxOTEyMjQwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjAuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMC0wNS0yNSJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjAtMDUtMjUifSx7ImFhZ3VpZCI6Ijc4YmEzOTkzLWQ3ODQtNGY0NC04ZDZlLWNjMGE4YWQ1MjMwZSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiNzhiYTM5OTMtZDc4NC00ZjQ0LThkNmUtY2MwYThhZDUyMzBlIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkZlaXRpYW4gZVBhc3MgRklETy1ORkMoQ1RBUDIuMSwgQ1RBUDIuMCwgVTJGKSJ9LCJkZXNjcmlwdGlvbiI6IkZlaXRpYW4gZVBhc3MgRklETy1ORkMoQ1RBUDIuMSwgQ1RBUDIuMCwgVTJGKSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH0seyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNYRENDQWIyZ0F3SUJBZ0lRR2dIdFVWdW5taU91MjFxSkx5eGlvREFLQmdncWhrak9QUVFEQXpCTE1Rc3dDUVlEVlFRR0V3SlZVekVkTUJzR0ExVUVDZ3dVUm1WcGRHbGhiaUJVWldOb2JtOXNiMmRwWlhNeEhUQWJCZ05WQkFNTUZFWkZTVlJKUVU0Z1JrbEVUeUJTYjI5MElFTkJNQ0FYRFRJMU1ERXdNVEF3TURBd01Gb1lEekl4TURBeE1qTXhNak0xT1RVNVdqQkpNUXN3Q1FZRFZRUUdFd0pWVXpFZE1Cc0dBMVVFQ2d3VVJtVnBkR2xoYmlCVVpXTm9ibTlzYjJkcFpYTXhHekFaQmdOVkJBTU1Fa1pGU1ZSSlFVNGdSa2xFVHlCRFFTQXdNakIyTUJBR0J5cUdTTTQ5QWdFR0JTdUJCQUFpQTJJQUJHME9aNjlLdFpxd21Eb2hCU0dLb3QwZllSakZyRXFZMzRWWnByUEFXcVdqSUVRaHpmdUE1NGZGR1FpNEdyQWNMVDdTZnQwYkxlYm4rcWFBNWFMdFFjSUdKUDZ2OU5TSS8rQU1KU3U3L3owSFhVWVRKSXJxVnBGalJ5K015d3Zpc0tObU1HUXdIUVlEVlIwT0JCWUVGQ2pBemdUbWdQZGZDelVFRnR1VWk2TlZ5M0JJTUI4R0ExVWRJd1FZTUJhQUZKTzhacmd6a1I2c0xsZUIwakhXQ3kzU2VkN1BNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnRUdNQW9HQ0NxR1NNNDlCQU1EQTRHTUFEQ0JpQUpDQVhDWUNHTVdIVjJxNnd2RzJwbGVHZXNJY1BmVXdqNmsxY3pncituSGNuTXdhTGRxQUQwLytwZk1FckpwSGpMYUNoaFJkenFNbWNEVHNJU2pqa2s4YlNkekFrSUIyQVNxOWR2TkxtZFZJNkphUHgvWW1BQnV6d0h0OHRDaUZ6Tm4rNTg5YkYrQkM5enRQM3gzek00ZWdDd1BLOHYwNlM3Yk1waFBEenUyQnJPWFA2WVNrR1E9IiwiTUlJQjJUQ0NBWDZnQXdJQkFnSVFGUU5LVys3emJnLzdkK2xUeXJJV3dEQUtCZ2dxaGtqT1BRUURBakJMTVFzd0NRWURWUVFHRXdKVlV6RWRNQnNHQTFVRUNnd1VSbVZwZEdsaGJpQlVaV05vYm05c2IyZHBaWE14SFRBYkJnTlZCQU1NRkVabGFYUnBZVzRnUmtsRVR5QlNiMjkwSUVOQk1DQVhEVEl5TURZd09EQXdNREF3TUZvWUR6SXdOVEl3TmpBM01qTTFPVFU1V2pCTE1Rc3dDUVlEVlFRR0V3SlZVekVkTUJzR0ExVUVDZ3dVUm1WcGRHbGhiaUJVWldOb2JtOXNiMmRwWlhNeEhUQWJCZ05WQkFNTUZFWmxhWFJwWVc0Z1JrbEVUeUJTYjI5MElFTkJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVzRllFRWhpSnVxcW5NZ1FqU2lpdkJqVjdER0NUZjRYQkJIL0I3dXZac0t4WFNoRjBMOHVESVNXVXZjRXhpeFJzNmdCM29sZFNyam94Nkw4VDk0Tk96cU5DTUVBd0hRWURWUjBPQkJZRUZFdTloeVlSclJ5Snp3Ull2bkRTQ0l4ckZpTzNNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdEZ1lEVlIwUEFRSC9CQVFEQWdFR01Bb0dDQ3FHU000OUJBTUNBMGtBTUVZQ0lRQ0IwTkZRU04wejRsV3oveWMzNmV3clRDenR0Sy9xRnZsYVBPS2grVDFvNndJaEFQMG9LS0ErY2ljc0R5M1kzbitWbFA4ZUIzUEJ6TWtodlcvOUlTWEN3K1ZCIiwiTUlJQ1h6Q0NBY0dnQXdJQkFnSVFabHJnWDdodWZ2bGxpVS96R1hoaXhEQUtCZ2dxaGtqT1BRUURCREJMTVFzd0NRWURWUVFHRXdKVlV6RWRNQnNHQTFVRUNnd1VSbVZwZEdsaGJpQlVaV05vYm05c2IyZHBaWE14SFRBYkJnTlZCQU1NRkVaRlNWUkpRVTRnUmtsRVR5QlNiMjkwSUVOQk1DQVhEVEkxTURFd01UQXdNREF3TUZvWUR6SXhNalF4TWpNeE1qTTFPVFU1V2pCTE1Rc3dDUVlEVlFRR0V3SlZVekVkTUJzR0ExVUVDZ3dVUm1WcGRHbGhiaUJVWldOb2JtOXNiMmRwWlhNeEhUQWJCZ05WQkFNTUZFWkZTVlJKUVU0Z1JrbEVUeUJTYjI5MElFTkJNSUdiTUJBR0J5cUdTTTQ5QWdFR0JTdUJCQUFqQTRHR0FBUUFNM0s0UmxiZ0t4QnNmQ2pHVVF0U0s2MUpDYW9NK1psWEJhOFN4T0h3QUlxYkhhMStpN0VvMjNSR3hyZkJ4OGVVQkRlRXdTTFk2eU5oTXNZTWNuaHpYOEFCZWEyR0F5NUF5ZC8wbzB5VFh0NE5LT2dSVmt0dVc3ZmJBS3BPb2JBZXJEazdyTk9GajVLSWFmY1h5bTR4QWZEcFhFUElMaXFYRnB5eVJyUk1rL01EYXlPalFqQkFNQjBHQTFVZERnUVdCQlNUdkdhNE01RWVyQzVYZ2RJeDFnc3Qwbm5lenpBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUE0R0ExVWREd0VCL3dRRUF3SUJCakFLQmdncWhrak9QUVFEQkFPQml3QXdnWWNDUWdGZVJDWEl4STRsaHNKczc2SytaVkZXaDNiVG1jcllFNHkzNlhkYTg5TEcxV2pjeG1LdjFBUXVxRk4zUFFsb3hSamZ4ZmhGT3FMa3E1a0d3SFIyU2FzYzhBSkJTZVVOU2pzR1V0T09iTDZFOWwxWmY5d2s3UlNXeEh0bHNIMEdqU3JGMENiMkdXSTAyVktMV1dQd2VYWlNJblpwd2xOenJDQkVOcGNEbTE0L095VVBXVWc9Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUZBQUFBQVVDQU1BQUFBdEJrcmxBQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQkhacFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR3L2VIQmhZMnRsZENCaVpXZHBiajBpNzd1L0lpQnBaRDBpVnpWTk1FMXdRMlZvYVVoNmNtVlRlazVVWTNwcll6bGtJajgrSUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWtGa2IySmxJRmhOVUNCRGIzSmxJRFV1Tmkxak1ERTBJRGM1TGpFMU5qYzVOeXdnTWpBeE5DOHdPQzh5TUMwd09UbzFNem93TWlBZ0lDQWdJQ0FnSWo0Z1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNGdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlnZUcxc2JuTTZlRzF3UFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIaHRiRzV6T25Cb2IzUnZjMmh2Y0QwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOXdhRzkwYjNOb2IzQXZNUzR3THlJZ2VHMXNibk02ZUcxd1RVMDlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl0YlM4aUlIaHRiRzV6T25OMFVtVm1QU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2YzFSNWNHVXZVbVZ6YjNWeVkyVlNaV1lqSWlCNGJYQTZRM0psWVhSdmNsUnZiMnc5SWtGa2IySmxJRkJvYjNSdmMyaHZjQ0JEUXlBeU1ERTBJQ2hOWVdOcGJuUnZjMmdwSWlCNGJYQTZRM0psWVhSbFJHRjBaVDBpTWpBeE5pMHhNaTB6TUZReE5Eb3pNem93T0Nzd09Eb3dNQ0lnZUcxd09rMXZaR2xtZVVSaGRHVTlJakl3TVRZdE1USXRNekJVTURjNk16RTZOVGtyTURnNk1EQWlJSGh0Y0RwTlpYUmhaR0YwWVVSaGRHVTlJakl3TVRZdE1USXRNekJVTURjNk16RTZOVGtyTURnNk1EQWlJR1JqT21admNtMWhkRDBpYVcxaFoyVXZjRzVuSWlCd2FHOTBiM05vYjNBNlNHbHpkRzl5ZVQwaU1qQXhOaTB4TWkwek1GUXhOVG96TURveU55c3dPRG93TUNZamVEazc1cGFINUx1MklPYWNxdWFnaCttaW1DMHhJT1czc3VhSmsrVzhnQ1lqZUVFN0lpQjRiWEJOVFRwSmJuTjBZVzVqWlVsRVBTSjRiWEF1YVdsa09qSkZOekZDUmtaRFF6WTNSakV4UlRZNU56aEVRVGxEUWtJMk5EWXpSamt3SWlCNGJYQk5UVHBFYjJOMWJXVnVkRWxFUFNKNGJYQXVaR2xrT2pKRk56RkNSa1pFUXpZM1JqRXhSVFk1TnpoRVFUbERRa0kyTkRZelJqa3dJajRnUEhodGNFMU5Pa1JsY21sMlpXUkdjbTl0SUhOMFVtVm1PbWx1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2TWtVM01VSkdSa0ZETmpkR01URkZOamszT0VSQk9VTkNRalkwTmpOR09UQWlJSE4wVW1WbU9tUnZZM1Z0Wlc1MFNVUTlJbmh0Y0M1a2FXUTZNa1UzTVVKR1JrSkROamRHTVRGRk5qazNPRVJCT1VOQ1FqWTBOak5HT1RBaUx6NGdQQzl5WkdZNlJHVnpZM0pwY0hScGIyNCtJRHd2Y21SbU9sSkVSajRnUEM5NE9uaHRjRzFsZEdFK0lEdy9lSEJoWTJ0bGRDQmxibVE5SW5JaVB6NDc3SlhGQUFBQVlGQk1WRVgvLy84RVZxSVhaYXZHMk9vcWNMRzJ6T09rd3QwQlNKdHFsY1hWNHUrYXV0bFdoYnprN1BVQU1ZOUhjcktqdE5icThmZUFsOGFCb3N6ejl2cGRqc0dHcXRGM244dVRzTlNacGM2SnNOVDUrdjB4WUtudThQZmY1L0w0OGZnL2ZyaWN6SmdZQUFBREFFbEVRVlI0MmtSVUNaYkRJQWpGWFpPWTFUYXROYzM5Ynprc1NZYzNyNE1FNGZNQkFhRDZ6bDh5LzlUT2dldDhkNWpmTjc4YndNL2REQ1JwUjUyMXpYZm9qSEowNUlJeWhCQVVTVkFPTmRHekJZdDJmN0tGcmZrSmFBa0hoOUZaaGNEWEhSa1RLbzlNTGloR2FhdkltblYzcXlFWDBFcHJnei80RHdVRDdrQ0hSbmQ4UUZONDNHbzRVVm1ERGd6YTR3MjdvaXpkQTIrY0srdXVVcGpqbzIreHdjLzQyVzUweDVMR1llREJzUjBIVkl4NXg4aUY2MENibGJURUVrRnIyN2JOREJVVlNxMU9LVlBiRTYyYjNFSDhGcUJnNU9PT0V1YzJ0OFpKaXFNT3VHcCtjS2pnN3dWR2Nlb3pxTjRweGdWUFFrakZZZ2JWSktEVWhEQ2pZcmF3UDVxNEVUZ0M5ZklNUkh0aXRwUWNDdkpPRUxjYk1zUWduY2lSa2xqcHlRanZHNDRqcUJVRVRGaUJpMVBFSXlla096c1crVHk1Y0xIb3M1UitkTVMxTHRTU3hmM2dRSGN6UjJDSTRnTU5wVzRJUkExUU1hNnRKNCtDNnVIdUdFOG1OREl5RnFnL09QL01NVXVlUzZJcThTOTBkQWVCSlNFeS9xS2tLK0JOd3o4Y1lZNGpiNUo2dTRpV0NJMkIxWjU2TFc1a0VjNGhrZE1wc3ZVQzU1ODVTWDBRdWJjZ05xeWZnREZFY1R0KzQwLzBTNU54MHdhQ3czT0trY09iQTVJbjBBWXAwMXBqancybjYyNlVEanRId2EyOGlIdVRLcXRydityZVc0MU5aNmlHbHI3dXVMSkNma0Z0Y3RjRzA0c2dtMWVOUytaYURucGFURXJHb3lYNUpLMmlNejh4czBuT3dXR2NQRE40OXFhQ2Q0YnpKb3pEWm0vYUJLK0Vvekx3K1hoTkJpWXdIZjBzaU91MVhQa0cvekt3dnFZS2NmU3dERWNIL29VZTA3ZXMvV1E4ckl5ZzJET1hqOHRqa1pkdURCL2I4aHpEbGxNTU9DUzVCRW5kNTM0Zjh0aTNVWmM0a01zM3hMeWFmTVNzSmhkRzhYUHFqTms1dEFnTzI1ZmVLQ2huVmREai9KMEZNa09zVS94TUJ2MHdGaFllRUdmVkgxM2Z1RFUweURGTGE0ZmM3Um5XSEJmdVRGVjJ0RW1Od2FkYzdhYzNVWTJqZkJsN0hUMzZmZTM0aVFPNW1OQ0ZGQlcwN0tqUGdxaE9MVTAxdlo4UHVlWjJKQ2xGWk44amtVczY5dWthOWVQcDYrRWZMNEFGNStOeXdTYmlySHRjQjhNbC9na3dBRWprSzY0S2pIUGVBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMSIsIkZJRE9fMl8xX1BSRSJdLCJleHRlbnNpb25zIjpbImNyZWRCbG9iIiwiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsImxhcmdlQmxvYktleSIsIm1pblBpbkxlbmd0aCJdLCJhYWd1aWQiOiI3OGJhMzk5M2Q3ODQ0ZjQ0OGQ2ZWNjMGE4YWQ1MjMwZSIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImxhcmdlQmxvYnMiOnRydWUsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjp0cnVlLCJhbHdheXNVdiI6ZmFsc2V9LCJtYXhNc2dTaXplIjoyMDQ4LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjYsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6OTYsInRyYW5zcG9ydHMiOlsibmZjIiwidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN31dLCJtYXhTZXJpYWxpemVkTGFyZ2VCbG9iQXJyYXkiOjEwMjQsIm1pblBJTkxlbmd0aCI6NCwibWF4Q3JlZEJsb2JMZW5ndGgiOjMyLCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6MywicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjEyOH19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTAzLTAzIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiZVBhc3MgRklETy1ORkMgU2VyaWVzIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNTAzMDMwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wMy0wMyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTA0LTA5In0seyJhYWd1aWQiOiI1N2Y3ZGU1NC1jODA3LTRlYWItYjFjNi0xYzliZTc5ODRlOTIiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjU3ZjdkZTU0LWM4MDctNGVhYi1iMWM2LTFjOWJlNzk4NGU5MiIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IDUgRklQUyBTZXJpZXMifSwiZGVzY3JpcHRpb24iOiJZdWJpS2V5IDUgRklQUyBTZXJpZXMiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2LCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH0seyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AzODRyMV9lY2RzYV9zaGEzODRfcmF3IiwiZWQyNTUxOV9lZGRzYV9zaGE1MTJfcmF3Iiwic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjgsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjgsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlEU0RDQ0FqQ2dBd0lCQWdJVVVjbU1YelJJRk9nR1RLMFRiM2dFdVpZWmtCSXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFEbTU1NWJXWTlXVyt0T1kwcklXSGxkaCthTmFub0NaQ0ZoN0drM1laclFtUFV3MGhrU0c2cVlIUXRQK2ZaeVMzM1ZFcnZnK0JRcW5tdW1nTmhmeEZya3dFWkVMZWlkQmNDOEM0QWc0bnFxaVBXcHpzdkkxN05jeFlsSW5MTkxGY1pZLytnT2lONlpPVGloTzUvdkJaTWJqOXJpYUFjcWxpWW1OR0pQZ1RjTUdhRUF5TXpFTU55Mm5tNkVwK3BqUDVhRjZnaTIxdC9VUUZzdUoxajJSai95bk0vU2RSdCtlY2FsNU9Zb3R4SGtGYkw5dnZ2MkEyT3Y1SVRaQ2x3NGJPUzlucHlwUWltT1o1UUFZeXRtWWFRcFdsL3BNWXo2elNqOFJxa1ZETkVKR3FOZlRLQTJpdkxZd1g2bFN0dE1QYXBnMEo4NGw5WDB2b1ZOL0ZwUzRWQ1ZBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlFnS0ZBaEc2UmFXK2hUeTUyZHhlVDhiQzk2SHpBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBWU16Z0xySkxJcjBPb3ZRbkFaclJJR3VhYmlIU1VLU21iTFJXcFJrV2VBdHNDaERFSHBYY0ovYmdETktZV29IcVE4eFJVakI0Q3llcFlldmMzWWxyRzhvN3pIeHBmVmNhb0w1U2V1Smt6SHhLbjRiVGFTcDkrTXZ3YW1ucDY0a1pNaU5iRkxrbmZQOWtZS29SSGtNV2hlUkoxVXNQMXo0U2Nta0NlSUxmc01zNnZxb3ZxaldDbEZzSnBCY3NsdVlIV0Y3YkJKMW40UndnK0FURW9wWTRJZ0d2Nlp2d2MrQTlyK0FUMmhxcG9Ta1lvQWwrQU5Zd2dzbE9mOXNKZTBWK1RBOVlZL1VsYUJtUFBUZDAvL3I5d3ZjZVBXWmtQaktvQUMvelVOaGZEYmg0TFY4R0hzM2x5WDJYb21ML0xOYzhKWXp5SWFERWhHUXZlb1BoaC90cjFnPT0iLCJNSUlEU0RDQ0FqQ2dBd0lCQWdJVURxRVJ3KzRSbkdTZ2d4Z1Vld0pGRVBEUlozWXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFESTdYbkgrWnZEd01DUVU4TThaZVY1cXNjdWJsdlZZYWFSdDNZYmF4bjlnb2RMeDVzd0gwbFhyZGdqaDVoN0ZwVmdDZ1lZWDdFNGJsMXZielVMZW1yTVdUOE4zV01HVWU4UUFKYkJlaW9WN1cvRStoVFpQLzBTS0pWYTNld0tCbzZVTGVNbmZRWkRyVk9SQWs4d1RMcTJ2NUxsajV2TWo3SnRPb3RLYTlKN25IUzhrTG16WFhTYWowU3dFUGg1T0FaVVROVjR6czFidm9UQVFRV3JMNC9KOVF1S3Q2V0NGRTVuVU5pUlFjRWJWRjhtbHFLMmJ4Mno2b2tWbHR5RFZMQ3hZYnBVVEVMdlkxdXNSM0RUR1BVb0lDbE9tNGNycHduRFJMVkh2alllUEdCQi8vcEV5enhBL2djU2N4andhSDFaVXc5Ym5TYkh5dXJLcWJUYTFLdmpBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlRxdDBLUW5neDdaSHJiVkh3RHVueE9uOWloWVRBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBcVFhQ1dNeFRHcVZWWDdTazdra0ptVXVlVFNZS3VVNitLQkJTZ3dJUm5sdzlLN0hlMUlweFowaGR3cFBOaWtLam1jeUZnRlB6aEltd0hKZ3h4dVQ5MFB3M3ZZT2RjSkpOa3REZzM1UFhPZnpTbjE1Y0ZBeDFSTzBtUFRtSWI4ZFhpRVdPcHpvWHZkd1hETTQxWmFDRFlNVDd3NElRdE15dkU3eFVCWnEyYmp0QW5xL05EVUE3YmU0SDhIM2lwQysvK05LbFVyY1VoK2o0OEs2N1dJMHUxbTZGZVF1ZUJBN24wNmo4MjVycURxc2FMczlUYjdLQUhBdzhQbXJXYU5QRzJraktlcnhQRWZlY2l2bEZhd3AyUldadnhyVnRuM1RWMlNCeHlDSkNrWHNORDA1ZENFclZIU0pJcytCZHRUVk5ZOUF3dHlQbW55YjB2NG1TVHp2V2R3PT0iLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVRuYmJHSVIyTkh2enFJS0ZBZVF3RzFYQmlzMHdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFRWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPc1hqM2swNEJhbjRUWWR0WktxRC9PUEp4eUR5YVBtQ0JVRlVpYVpJZ1R0ZVpuajNYMjVEaGdwWlpYc0M0RDB5ZEljcmxBNndOVUluT1JML0w5ekJiVEVJTUFWTUdvNmc3VUtBbWIyTUY2QUhibmhZSmQ5ZWlrdXBWTldTaEhOWU5jNEdCZE8xWU42QWZVcXZKaEhiZTNWNFNOTVBtQlJFS0pQVno3VGh3Z21nZ1RlOFdzMkswL3dzcXYyd1NFN3BiQ0JzVVpoSVg1MWJaTTNwcUR3SlBUbVJGRXZ0MC82dEc1ZU84RjNqMTRPWHFmRWhtam4xVnZ4S0RZUU9MWkF4Q3d3Z0MwUDRDZGZXdjN5OFBTUjhJMzU0aE8xWStHek5qdklxWDM4TktMeXd1SVlIRmVyT3hObHhFTUJ2RmhZQnVSdVlBa2tnVWFQcU42VUJoc0lMcnNDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNDb1JIaGl5Tm5iblhSV0lMNlpCWG9CWDlZVE1COEdBMVVkSXdRWU1CYUFGQ0FvVUNFYnBGcGI2RlBMblozRjVQeHNMM29mTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFDUUZhZkpJMS81V2c5Q0VFaW1FMVJQNTRSZ1F3VE5UT09Rc0xBQ1RlK3JJdGxGUXpDOVpEaHJWODI4eVg3anp5K0FBc3AzaXpLN1QxdGgyZGw3bSt0dTBzdzJQYS9vbGMwMm50NlB5SXczNDhnYUh6aEkxKzBLRTQ1cXh2RkRlTDJsTXhiUGZDWXZ5RUVhWXpqaVFFTFU1OTUxcFhHV3lLTWEvNGZMdE8rWktPWGhNdVZlcTRyWERQSTU0VzZKSE9pQWFpS2Rpdys1ZTNjMmt0L2pGSVF0TTZ2TVhnOUxORnpkakVUTnQyMFZYOVFldlJwRlpmdWNNRzl3Q2FRRG9GbFB6cFRNSktoUGV2L2ltSm1aWWhLZnIwbExjZW10cWpJeExBb3FaZE9ZZkhCZzYrdkFjZFBJL2lhdUdwVUF2N1grVUtObUR3aloyQmFINHNMd2hCMm0iLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVIzOG1xMjZTZjJzelZWMkJkRzZXRU43a3VXVXdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFSWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFOWTBXYjlvUG9Sb0tvUXlXUGFKcHoxMXZyV1RnNnpUdG1OajJWb0tSbnl2S0dScXB6YjgzdzVsNllBOTZVWWtZQkRRUDBpbE8yRFBlNndXcVZSNXpEZlJ6ZGNIOGJoK0w3ZEdHdmFlNmhSVFpoa0ZrQ3BYRHM0SGNja25yRGY4RkNsSjdIZTM5SmY0Mi9HMVFtMnp6OVdXbXJQWHRnaUsveDA1R2pzUWZHdURHMXpmNVFUVVVpZThsd3ltSzNUZmRPdk5lZUpBQVBlMnBuN0l0ZlJiK3JWck5XaUR6bFJuMnZObloyd1BvNHdIL1dKNmRoWFpHK3JNV1QrYTZCb2NnMVVmSXc2a2R1bkc0YlRwWnpzdmFjRll5UjBtcGYrRGVPbnBTV0FteXdKV0h2VGxmMllYeEZ5ZVhjVEFDZFFsY01OR0oyVmhaUTQ4eHRQNS9SQlAvOGtDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNoeTQyb2tpcWNUUzFpcWEvSFJXamtCbjRIL01COEdBMVVkSXdRWU1CYUFGT3EzUXBDZURIdGtldHRVZkFPNmZFNmYyS0ZoTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBbitSSElQYnRNRUROZFQxZzhIL1JpdEFrVWRMZ0F0MXRXR1dubGo5a25idjQvNEdsWDdDOXA0NWVmUE85L2FaTDZPVjFYUktCaTZLbXRCVzVLN251WUVuTXgvNUJxQlNiTFQ3cmhkdUM0OVRCZU1iOVBIZFhzVGxTVk5ZZWZyMWRHaWRyNGoweFZCUUxiMXJrbkRBYmRXRHpLZnZuYXlLTzhGcndlN0h4ODQzTUcvckorYzBYcnVVdmJmVlRDSExpSVdoTTdvTkRoTDh4b2I2eFVvOUtMS2NTTCtJdFlzTzMvOVdiOFE5R2pzcUw0RlhzRGNHMVNhWWg3S3BmdU1tT2l4cXpKWk8ybklpY1BZUmcxSTJTdWlVZllPNzB0bWRIY2JsK2tTUW1TWXQ3cnE0dmlJTGcyR3gzajlySVR1V1RqYmFVYVNTUXhnT21NU0h1eXpNQUMiLCJNSUlEUGpDQ0FpYWdBd0lCQWdJVVh6ZWlFREpFT1R0MTRGNW4wbzZaZi9iQndpVXdEUVlKS29aSWh2Y05BUUVOQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU1aNi9UeE04cklUK0Vhb1B2Rzgxb250TU9vLzJtUTJSQndKSFMwUVpjeFZhTlh2bDEyTFVoQlo1TG1pQlNjSVpkMVJueDFvZDU4NWgrL2RoSzdoRW03SkFBTGtLS3RzMWZPNTNLR05MWnVqejVoM3dHbmNyNGh5S0YwRzc0Yi9VM0s5aEU1bUdORDZ6cVljaENSQUhmcllNWVJERjRZTDBYNEQ1bkdkeHZwcEF5Nm5rRW10V21NbndPM2kwVEF1Y3NyYkU0ODVIdkdNNHIwVnBnVmRKcHZnUWppVEpDVElxK0QzNWh3dFQ4UURJdituR3ZwY3lpNXdjSWZDa3p5Q2ltSnVraFl5NktvcU5NS1FFZHBOaVNPdld5RE1UTXQxYndDdkV6cHc5MXUrbXNVdDRyajBlZm5POXMwWk93ZHdNUkRuSDR4Z1VsNVpMd3JyUGtmQzEvMENBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUI4R0ExVWRJd1FZTUJhQUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUU13RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCRFFVQUE0SUJBUUMzSVcvc2dCOXBaOGFwSk5qeHVHb1grRmtJTGtzMHdNTnJkWEwvY29VdnNyaHpzdmw2bWVQTXJiR0pCeUoxWG5xdUI1c2djUkVORnhkUUZtYTNtaW84VXBmMW93TTFacmVYckowbUFERzJCcGxxYkpueGl5WWErUjExcmVJRlRXZUloTU5jWktzRFpyRkF5UHVGakNXU1F2Sm1OV2U5bUZSWUZnTmhYSktrWEliNUgxWGdFRGx3aWVkWVJNN1ZvbEJObGxkNnBSRktsWDh1c3Q2T1RNT2VBRGwyeE5GMG0xTFRoU2RldVh2RHlDMWc5K0lMZnozUzZPSVlnYzNpcm9SY0ZEMzU0ZzdyS2Z1NjdxRkF3OWdDNHlpMHhCVFByWTk1cmg0L0hxYVVZQ0EvTDhsZFJrNkg3WGszNUQrV1ZwbXEyU2gveFQ1SGlGdWhmNHdKYjBiSyJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFmQ0FZQUFBQ0dWcytNQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUhZWUFBQjJHQVYyaUU0RUFBQWJOU1VSQlZGaEhwVmQ3VE5WMUZELzNkNTl3ZVFTSWdTOUFRQVhjRkxBUVppOWZwZVZ6MXRZL1dUWnI1V3hwYzdXNWtuTGE1akkzWjg1c3JTMm5NMnNqdFd3WlM3SVVINEg0eENuRVF4NERBWkY3NFY3dXM4ODV2OS9sSW5CdlZKL0I0UHY5bnUvNW51LzVudk01NTZmekEvUXYwSGIvSXJYM1ZGS1BvNDVjbm00aW5VSVdZd0xGUm1aUVV1d2pGRy9OMWlSSGgxRVowTlJWUnVkcXQxQmQrMm5TS3lTL09oeXMwK2xrM2UvM2tROXF2RDRaVXRhNFZWU1V1WTBlaXB5aVRoQWZvY29PUlZnRHV1dzNxS1JpQWQzcmJjRXRqVGpZSW9mNldhSHNDbXpWUFdDTXgrY2doOHRMcVdNS2FNV3NVakxxbzJSdEpJUTBvT3ptZXJwUXU0ZXNaZ3NPTmtHeEg3ZDBrZHZUVDE3czRPTVU3Vkk4WmhqZ0dhTStBcTlpRU51OFBpZjF1ZHowN013dktXZjhHbFZvQ0VZMDRQQzVXZFRhWFlGYlI4dk52TDUrM0tnZmI1eE5NeWE5UmFtSml5bmFNbEdUVnRGbHI2YmE5dStwcW5FWDR1TXVSUmdqU1lFaHJON3V0RkZlNmxxYWw3TmZrdzVpbUFHSHluUHBiazhWbVkweHN0bnB0bEZDVkNZdHpUdUJOODNRcE1MalR0ZXZkUHpTVW5KN2U4bWtqeFozOWZYYktEZmxkWnFidlUrVFVnR25CVkY2ZlEyaVBIZzRXMTZVV1V3dnpiazE2c01aRStQbjBwdno3SlNldUF5ZXM4bGNwQ21hS3VvL3ArcVdyMlVjd0lBSFdydlAwWUV6aFhBdExBYnNzSGhwN2lHYW12eWlqUDhyeXFyWFVXWDlYb293eHlBdWZOQnJwNDNQT0JGWFpsa2Y4TURSaXFjcHlvd0F3cHV6MngrZld2ei9EdGRlOXNtc3p5Z3RjUjZDMXdiZHpCbDZPbHE1V05ZWTRvR2F0aEpNcmtURXgwakFSU0hBVnMrNXJZa1FOWGIrUWdmUExzUTZnWHlJbnNyZVFmbXBtN1JWRllmTDg2bjFmaVVPa1l2U2hrVVB4dmJ1a3pveTZLMWloTTFobzNYelc2RXZTZlhBK2RwaVdHYVdkK2RvWHpMem1Hd0tZRkxDQXNSQWxQQkFoTWxDRlhVN3RCVVZQcjhIZ1ZjSkhXcStGMDBwbHIrRE1UZHJQNHp2eFkxMWtOTWh4VCtTZVRHZytkNFY1TFFKaXR5VUdKTkI4VkZac2pnWUJaTS9JSS9YQ1RrajBxeURPcEYyQVZRMTdDSWpVcC9EblQxVWtMNUY1Z2RqK3NTMXdnMWdFM2dpZ202MGZDWHpTblBYYnlBUGJJWHYrSURwRTE2VGhhSElTOXNreWhsbU1FNUYzY2ZxQUtocTJDMEU1UEgxZ1lhWGFMUERrWkcwSERKT25LV0hwNTFJMHo1U091eDhlMVdBdVp6ZEhRclRrcDhUbWpYb0krbGEwd0dac3p1YnFiTzNpZlE2QS9XN3ZWU1lzVjNtUjBKS3drS2M0V0hpQmttUjhJM0NDZ0k4N29PTDRxelQ1UCtSVUpCZWpFT2dBUEs4aFlQemF0TStlSVRwMklPOXlUUW1lcm9tUFJ4eDFxeEFjc2lsZS91YlNlRWJjV1FHWUVDZ2hjTFkySHlLam9nakgyNWhNcGpwVXYxT3VnbGk0ZWgyZVJ3ME8zMmJKamt5dUNnTnpnMHZ6bFlNU2lTczB1b280TUc3aE1PakNFYVgxeUZFMG5TdmpCenVUbkVwSzg2WjhJb3FGQUl1Ync4a2c5QXJFYVJFV1NaSStqSDRYYnA2ZzlFOUVuSlQzb2FSekROK01VSkJRREhuNTZhOG9VbUVCdXNPeEJzL041K3RKRWJQa0FGRGo4VUd2T3MvSVd2Y1NnbEdCaHZTNy9GVFlmcFdHWWREWThmUEF4V1NBMzVzVEM0cDQrTG00QWFxSW9QZVF0ZnVmSzZKaDBaaHhsYnNVWE9TbVhOaWZENVpUQWt5RG9mYmJjY2x4bkE4V05BcXhDYlJOeWtoWHhRcGFEdzY3ZlhVWWJzaUcwS2h0djJvZUl2aDhyaFFNWU9jRUFxWEcvZUkrem5nT2M1eXhyOHE4MklBTTFjL0ZMRk9wbHF1NWVGUVhyTVp6R2NWQ2pZYkxXRzVJNEJUMWV1UnJsYnh0Tk90TWl0RERFaExYSUl5bkFBdnVPRVdFM1gzTmRBZnQ5NFZnYUc0MlhJUXQwWlg2UGVDRS9xUUZlOXJLNkh4N1lVNTBLdkg3Zlc0ZlMrcTdLS0JKeHNnZ0JYNXBTQUdoMWpJclZoNXpRNnczUmZhYWhCWG0vYUNiQ1pUakNVRlVUeVdacVc5cDYyTWpKUFhWcU9yUGdNTzROdjc0R2tmK293ZnROVkJEUW5qRkpxSFN3MTdwWHZoV1c1S1pxZS9RNDlOL1VTVENBVldvUVhGSUhCSFhYZTNGUHJVRHN1R0RtdEYvaEhLVEhwZWt4aGlBT1BJK1NKcTZTNkhGNEk5WVd6a0JKVG80NmlVTXpXcDhQaXIvUmlkdUx4S1lzU2tzVjh2TGxPUXZoR1gyWWxSME9CaEJqQyt1L2dFY3ZZMEFwSzdZazQxTnhqUFNRbldGSFRGNjZVcmpnZXZCOEN1NWErbDJ2WVNSUHR1VkRvNzNoaGRNU0huVVg3dFRqc1ZaR3hBbC9XcHRpT0lFUTFnbkwyOW1YNi90UjF0bWxrWWo4VzRYK0NTaldjVURHWTFOcFMvQzdoU0txaU1MTS9sMlFtU1daNzNEZHorZ2lvOEJDRU5ZUFE0NnFua3p3WFVicXZCa3hqVVFzV2ZaRmdidW8zckFmK3dON2pPTzkwK3lueDRQaTNMKzBuWUwxU2NoRFVnQVA0Z1BWLzdJZDFxKzFIU2htdUdrSXFXUlBneXhNRnFQOEhmalRualh3WTViUWZiSmN0Nk9JektnTUhvdEYvSGUxZWdzYXhIU3FHNndmZG1RNXg4TnlURkZxQmNwMmlTb3dIUjN5azUrMzZoRjd2WEFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJGSURPXzJfMCIsIkZJRE9fMl8xX1BSRSIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsImxhcmdlQmxvYktleSIsImNyZWRCbG9iIiwibWluUGluTGVuZ3RoIl0sImFhZ3VpZCI6IjU3ZjdkZTU0YzgwNzRlYWJiMWM2MWM5YmU3OTg0ZTkyIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibGFyZ2VCbG9icyI6dHJ1ZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOmZhbHNlLCJhbHdheXNVdiI6dHJ1ZX0sIm1heE1zZ1NpemUiOjE1MzYsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6OCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoxMjgsInRyYW5zcG9ydHMiOlsidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN30seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTh9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi0zNX1dLCJtYXhTZXJpYWxpemVkTGFyZ2VCbG9iQXJyYXkiOjQwOTYsIm1pblBJTkxlbmd0aCI6OCwiZmlybXdhcmVWZXJzaW9uIjozMjk0NzYsIm1heENyZWRCbG9iTGVuZ3RoIjozMiwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjEsImNlcnRpZmljYXRpb25zIjp7IkZJUFMtQ01WUC0zIjoyLCJGSVBTLUNNVlAtMy1QSFkiOjN9LCJyZW1haW5pbmdEaXNjb3ZlcmFibGVDcmVkZW50aWFscyI6MTAwfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMTItMjEiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2LCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ill1YmlLZXkgNSBGSVBTIFNlcmllcyIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjQxMjIxMDAzIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMTItMjEiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTAxLTEwIn0seyJhYWd1aWQiOiJiYjQwNTI2NS00MGNmLTQxMTUtOTNlNS1hMzMyYzE5NjhkOGMiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6ImJiNDA1MjY1LTQwY2YtNDExNS05M2U1LWEzMzJjMTk2OGQ4YyIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJJRC1PbmUgQ2FyZCJ9LCJkZXNjcmlwdGlvbiI6IklELU9uZSBDYXJkIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjE2Nzc3MjE2LCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX0seyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3A1MjFyMV9lY2RzYV9zaGE1MTJfcmF3Iiwic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciLCJzZWNwMzg0cjFfZWNkc2Ffc2hhMzg0X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQzNqQ0NBaitnQXdJQkFnSUdBT3EwQUFBQ01Bb0dDQ3FHU000OUJBTUVNSUdSTVFzd0NRWURWUVFHRXdKVlV6RUxNQWtHQTFVRUNBd0NWa0V4RHpBTkJnTlZCQWNNQmxKbGMzUnZiakV0TUNzR0ExVUVDZ3drU1VSRlRVbEJJRWxrWlc1MGFYUjVJR0Z1WkNCVFpXTjFjbWwwZVNCVlUwRWdURXhETVRVd013WURWUVFEREN4SlJFVk5TVUVnU1dSbGJuUnBkSGtnWVc1a0lGTmxZM1Z5YVhSNUlGVlRRU0JNVEVNZ1VtOXZkQ0JEUVRBZ0Z3MHlOREE1TVRneU1qQXdNREJhR0E4eU1EWTBNRGt4T1RJeE5UazFPVm93Z1pFeEN6QUpCZ05WQkFZVEFsVlRNUXN3Q1FZRFZRUUlEQUpXUVRFUE1BMEdBMVVFQnd3R1VtVnpkRzl1TVMwd0t3WURWUVFLRENSSlJFVk5TVUVnU1dSbGJuUnBkSGtnWVc1a0lGTmxZM1Z5YVhSNUlGVlRRU0JNVEVNeE5UQXpCZ05WQkFNTUxFbEVSVTFKUVNCSlpHVnVkR2wwZVNCaGJtUWdVMlZqZFhKcGRIa2dWVk5CSUV4TVF5QlNiMjkwSUVOQk1JR2JNQkFHQnlxR1NNNDlBZ0VHQlN1QkJBQWpBNEdHQUFRQWxjVFlzQ1YyTHh1d0s4UTVQSyswMy93U0FQU3BRWlI2azEyUDJwcWZCMXA3TTNKVWZVd3ZlbWl0b2hLSlkyRWVwUExhZElpd3oyZ1ZhclBCNk1GYy9INEJSbXY1eWNVWWhXd0p5UGlSZnFGSlFyY25PcjJRbUdVbTduL0daaFFLVno1dXI4TDdOT3Bub252eGN1aGNldWplZTF4SHBJVStXcnlDbzJocE5mWG9ZaUtqUERBNk1CMEdBMVVkRGdRV0JCUTdWamxMM2FnU1RYdlZBRnlLYjRHSUVjcDB3ekFMQmdOVkhROEVCQU1DQVA4d0RBWURWUjBUQkFVd0F3RUIvekFLQmdncWhrak9QUVFEQkFPQmpBQXdnWWdDUWdFK2ZiYkpGY1hpRmdRWmJacjN4UWRVV1NuZ2cxaE5ya0hGSGg1UTZSRUhYSEVYYXl4K0ltZjAwaVBvTnBBRTZjOW1DU1RWZVdCc0dPcURTNEIzNlJWUW9RSkNBYlh3TUQrbDFGL0xzeFJCZTQrME1IaHdyMjB2NmhrbStzMktPVlVyMm4rSUF6MmNnaENDbExPVGRYWHZRR2w0NjUzWFgzdndYOVZwZ3lSU1VUMXRoaWV4IiwiTUlJQzJ6Q0NBajJnQXdJQkFnSUU2clFBQVRBS0JnZ3Foa2pPUFFRREJEQ0JrVEVMTUFrR0ExVUVCaE1DVlZNeEN6QUpCZ05WQkFnTUFsWkJNUTh3RFFZRFZRUUhEQVpTWlhOMGIyNHhMVEFyQmdOVkJBb01KRWxFUlUxSlFTQkpaR1Z1ZEdsMGVTQmhibVFnVTJWamRYSnBkSGtnVlZOQklFeE1RekUxTURNR0ExVUVBd3dzU1VSRlRVbEJJRWxrWlc1MGFYUjVJR0Z1WkNCVFpXTjFjbWwwZVNCVlUwRWdURXhESUZKdmIzUWdRMEV3SUJjTk1qUXdOekkwTWpFMU9UVTVXaGdQTWpBMk5EQTNNalF5TVRVNU5UbGFNSUdSTVFzd0NRWURWUVFHRXdKVlV6RUxNQWtHQTFVRUNBd0NWa0V4RHpBTkJnTlZCQWNNQmxKbGMzUnZiakV0TUNzR0ExVUVDZ3drU1VSRlRVbEJJRWxrWlc1MGFYUjVJR0Z1WkNCVFpXTjFjbWwwZVNCVlUwRWdURXhETVRVd013WURWUVFEREN4SlJFVk5TVUVnU1dSbGJuUnBkSGtnWVc1a0lGTmxZM1Z5YVhSNUlGVlRRU0JNVEVNZ1VtOXZkQ0JEUVRDQm16QVFCZ2NxaGtqT1BRSUJCZ1VyZ1FRQUl3T0JoZ0FFQUpYRTJMQWxkaThic0N2RU9UeXZ0Ti84RWdEMHFVR1VlcE5kajlxYW53ZGFlek55VkgxTUwzcG9yYUlTaVdOaEhxVHkyblNJc005b0ZXcXp3ZWpCWFB4K0FVWnIrY25GR0lWc0NjajRrWDZoU1VLM0p6cTlrSmhsSnU1L3htWVVDbGMrYnEvQyt6VHFaNko3OFhMb1hIcm8zbnRjUjZTRlBscThncU5vYVRYMTZHSWlvend3T2pBZEJnTlZIUTRFRmdRVU8xWTVTOTJvRWsxNzFRQmNpbStCaUJIS2RNTXdDd1lEVlIwUEJBUURBZ0QvTUF3R0ExVWRFd1FGTUFNQkFmOHdDZ1lJS29aSXpqMEVBd1FEZ1lzQU1JR0hBa0VHTXc4Y1hCSXpwbUJhWExxMWJGc0xpdUE4dFZjRklPeGozbzJhMDNlOXNyc2tDbUxaMHAyTVlxTWdUMUlwVlRhVFVyalNnSGluZ1JmZnNZUGYrbW5jcUFKQ0FJbDJXcnRneFZRTUFXd2QrZS9YQ1IrVVo1a3BtUGhwRzVqZGVmaG5LSE5oSDIwY1dtbmEvSzY2SXk4WDZwcTZZUzVuTlFnV2hLM3RCUGY1N0NVdGtESm4iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBRElBQUFBeUNBSUFBQUNSWFIvbUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFGaVVBQUJZbEFVbFNKUEFBQUFvclNVUkJWRmhIelZocGNGUFhHZFh5bm1RdFhpWEwrMElhc01IR093WWJFbEpLZ0VrQ0FhWU0wMHliTW1sTEtBTmhuOG5DWmdncDVBL1VoSTR6aE5EU2FXY0tKR3lGTUtHQk5ISHhnbzF0R2JNYmIvSyt5SllsV2N1VDFITjFoVkJrVzlJUFluTEc0em52M2l2ZDg3N3RmbGQ4aDhQQkc0WEdlMTExbFpyZXptSE9adWZ6WFlOUEV3NGV3d3BqRWtLeVp5WEZKeWxjZ3g3d2xuWDg4SGZIRDEwMzZpMFNLU3NRQ240VVRVNWdXeHRuSHpGYUkxVFM5VHQrdm1SbHJtdkNpU2V5QnJYREsrYVVHSFRXNEZBeEJOSEJDWUROWmgvc055WlBpVGo1M3pVOG5wQU91bVIxdHZjdlNpOVd4UVREdG5SaWdtRTJjVWFqdWJSNUd5TVU0NUhLc3M5TzNpK1RpWVhNeEJscE5DeG1UaGJNbnIreEVaem8rR0R0YVNId1REVUJJakhUMjJVNGZ2Z2FPTjlnTU14Ty9EZ3FOb1QvNDRWM3dMRGJIYnJCa2JLMkR3UVhUNmxsOHFDZmdpWkFJT0RiN2J6SzcrOExwOFFzN0d6VFBYTVBQb0hERWE2U0NqbzF1c0RMQVl5TWZNWWZ6Vi84OTN4MEx3RG9vK09INndNQnhIUnBoZ1JXQ3hlZ0E3RWxrZ1VWVml4bWVIeVN3cHpWTGdBUUFjNUhMQkFLeWFQRHdTZFM3QTVFTVo2eHhEVENCYWdNWDJXeFlCZGVRS0x3cFQyZHVyUGw2eS9YYjc1UXZXRjRjTVJxc1QyWG9yeXMzb1FSaFVxR2ttMFlObS9ac3hDUFg5L2FyTzB6Y0p3OVBqbjhzbm96MWl4OUk4ZWdON3UreXgvNGVCRVg5UWZUaVBXMWxSbWhFUkx3TlV0UGlJTVltR3A2WGp5ZGZYU3ZGM1ppUmNKdnY3cERSOElVVXFHUVgxbmFWUGJOUXp4dUxKcHY0NGc1NmF4ZkNBSlpDRlAxOXhpTGlwZUJOei9zcXloOUpBNWlyVll1TFRNT0kyMlArcTFXRzEvQVoxaEJRMTJIOHhPOHlkT2lZSzBJaGF4bzQzazY4c2QzWDlMclRKVDdnejBnYStIay91MjZBb0dRdUh2NzIyY1VrVEtRRVlNMXR6QVpSRjJsRVlrWUVCaXNvMlVJQkVqUGpvTldKUGpnZ1BHckwrb3g4cHUxaGZpOE94dDh3Y0ZEYlBrQmlYUUx0M1hmSXZEcTBwWTc5UjJzaU1HZ1BEZ29WRUY4V24yOUZlNERRYlFpemgvZTdnYlBtWldNNEFNSkNaZnMzM1lKQk5oNWFNbmd3QWpsdnVIZmliRDg2czB2VWI1bnk3a0lKVEVWeDlsU002THA0TzJiN2V6akF4NW1VOS9RZ0dUT1RJQTVRV0JDSzJmN1Iwa1orSUpsNlFxbEhNNGxTMzNDanhQdE5qdSs5NjNOYzhDdm5Hdm9hdFBSRm9PejJMTm1KamlYOE83V2R3bFoxL2ZBYkRVVnJTQVNHYXRVeWZCeDhPRFFvRS8yWFhYTzgzWVh2NDRrcGR3SC9NZ2FHalJ0K3hOeEg3Qm53NFV3WnlZQ2NDdE53NVlIQTR6b1NaV0IyV3JMaVN4Z2FtWXNOUXhLRjdMaDRJNHI0UGx6SjAxSmk2TCs5UUZmc2xBU1pUTFI0cFZaNENjL3IwVDFwdWNCL001WmJIQVRlRTFGVTVDRUphdWRRSXkzTmcxUW5wbWY0TjVlSmhlZk9GSktlZEhocGYwOXc1U1BCMSt5dEgzR1BVZElVUUFPN2I0Q1gxQk95bmNRRXhvbUJiK2o3b0lsNkRnRnB1NDNkSUZNejR1RFVla2dzaUZVSWQyMS9pejQ1TFNvM01KSk9ERG8xSmdZVnhiU08zbXlZdmI4NThFLytmQWIyQW0rb0ZNMnpwYVNGa041VFhtTE85NHBVR25yYnJTQlpPUW5vT1M2enh3WTljSS9hd2U2U1dEdFA3b2NoY1BIY1RTdXJJRmVmZEdmbDFKKzRzaDFlVERwWlNtczFpZnhqa0tGbktDY0FpclZsVVNXUkNMQ24zdHJHQ3hNS2QyMWdSaE1HUjB5NzdWcGFKVHAxR2lNTFFzV3hsVnBXazRzK0o1M3ppT3Q4S1YwQ3NCc1ZuNGlTUE9EUHBQSml2cE94eW5nMDlzMW5aUm41c0ZnVDZJYkovZjFxdzliR3Z2QjkvMWxHVzRXNHhsc0RGbFlpVnAxNExOZmd2ZjE2RStmcUpKSVJYUUtjUEFjTnFzOTc0VWs4T3JTWnM5NHA0RHhOQzFhV2hxeUN4SVJESFFjd0x1RksyVGJWcDBFUndqK1llc0x1SkRSS1MrTWFTMEhQcStNQ2dicmFOSFN6b1ZPRURoNGZBRjViMUNEM2dJK0d1Z20wTW1BeUVQRlh2YkFDWVoyaXZMNDVBZ2tPK1ZlR09OYklTSkl5dTVZZXdZOFkwWkMvcHhKWm8rc29STFZsYVNVNXhZbW1ZemU4WUZ6S1RvK1JDb25CcTRxYmZaS0NHVDMvcVBFRDhCSFd5K2ljRkR1aGJGakM2NzU5NzlxQjNwSjFudzBLbXZFRXJicWY4MGdhYmx4NkY2ODdJSHNRd21ndkxhaXpmUGlDWWRPU2xFV09yTzd1T2cvckpnMGpYVEtDMlBMSWtHZ2xPMWNSd3dHYnk1WWtrYWRRb0dkYmxXM1U2NktDYkhaZmlBTGUrY1VrTWlEWE8yQTNuTmp2T2Z1ZzYrRG9KUDllMGtaYnFaMGZEVEdsZ1VnZXNxdU5pTFh3RkdYMFk2NnJjS3lBdlZONGtRZ016L09NOWNBcTVsTHp5WG5Va05OdTVBUnV1TVMrWnRiNE1ydXZac3VTbVVpcnhUMnhMaXlxTUhlKy8xcGNMR0VlV1BOVEtQQjRwNUNxcUlOQkUvTjhKYUY1TXFlU2NwSFhVV2J5Tm53QUhpbC9oNDk0Z0hjb0RPZi91c05GQjA2TlNiR2xRV2dIYmgvcDd1bW9nVjh5OTVGdzFvVE5SaGtNWXdBY1FPT3FQZXNpcWdMU2hWSllRQWREdTNEQUt5Wjk4clV5S2dROEIzcnppaWo1TDd2RUw1a0FSR1JzcUwxNXlqZnNITytic2pWOWNMRk5MeFNNMkk4a3hHQmxUM0xkUURjcW1tbjhZNlh3VjM1d3hKeXZHcWF0TmN1M3FYMXhRZjh5R0lZWVVmYjBOZGZOb0N2MmpoSHhBcHBwV0hRVnoxdVlIQjBvbEJSam5NSk5ZWHlqdFpCZWk2TkdDd3IzcG9oZGRhQzk5LytJa0lsY3dmY2VQQWpDOEFkNXNCMlY5Zjd6czZYZFlQRVlIRGkzVnJYYlNJOUt3NzlKK1VXRTVmdFBDNXJ5eldpSUplcFVIWGYzZjhLT0pLZ29hNWR4UG94RmVCZkZ0N1lPR3c1ZGF3S2ZQbWJPYUdoRXRnR2d6M2R3MVl6VVpNek81RVNLQUJTczBpdTFkMW9GWWxKVU90MTV0VmI1NElBU0NEY2hRSzVtUHFYQllTRVNUNSszMld3WFljWGF3ZEltY1ZKY0xPTStIRjZYZ0x0cSt3Mmh6SmFUc3U2dXFvVmRRUVZIMG13ZWh1UjllMmx1MTBkcnA3Ykx3S1NoWklJRVNVSHlDOVBoZk1teDhhRm95Z2diTlhWSkJsVHBrZGpBZXprdkhlNCtyQjd0N29SbDBQYWtVMjdGOUtSQSs5ZENvc2duV01nQ0VnV2dNUHIyTUh2S2YvMDdKdHdEWFp0cUhFVjFkakVNSmdLYWZqaUwxTG9TRStIRHJVa0xqRnN4ZS95OFBqbDM2cTEvY2JBZnhmaS8zcGhTYmRHNzlYS2pRazA1Z3FWUERvMkJOVzF2cm9kRGdMU1NDVHhteC8yR2cxV0pHblN6eFJvR0ZGUkcrLzJRSVFxSmhobkYvS3V2a3FEeC9GT1FFOVl6TFlaTDhielY3MTZ0TDFwS01EM2dKdGdGUkRVU1d3R1dmUVNnWWloVzhLNWtJc3BXa2dobE5ZTzl3Sy93QmxWTUM5Sm9JeVNlWjIxUGdESElhVHdSd3NQL3ROSDk1YllIby91NGc0bmVDM3dDN3kySWtvbW1Kb1Y1ZGxBUG5QZ21FckxqUlhNWDV4cUdEYkRIYTdoWndxYXpuTVhUaEVrSnNkbXpZcEdvTGxtbmltTWV1dXJ2MG9Wc3pJU3RocE54OUs4ejVTUmNoOE4wQVNBM0FCTWxzc042NlJCd1NqRTl2ajQyTDJmTHVocUgwWVN1WlpNT0pDemZUMkc0bFBMb0FreVVCZjR5T3BGUy9MM0hWdWcweG9SY1JNY1o5aHV4R0ExbXl3bEY1Wm5aS1ZBREI5WEw1eFpLRFc0RjJDK3NiR2x1T2lhdXJ3UEYzYmNRdUhUeDA1OXVzNGxyNDEzaDFWUTlteWNyV0JCM1BydDgxV1JrUUtHendqSlQ5UE9YNnA1RGp0blI5UmprZGxpYm55Z3FmeXVxZm1CVmo5a2hyK2RwbnVxOW5NV1BaVEFrSER4ODFPVk0rYytsNUFZdzRwWWROaXNtTUZWaXNmai94L3hxT2NQUmRTdmF3QUFBQUJKUlU1RXJrSmdnZz09IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiYmI0MDUyNjU0MGNmNDExNTkzZTVhMzMyYzE5NjhkOGMiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjp0cnVlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImVwIjp0cnVlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJhbHdheXNVdiI6dHJ1ZX0sIm1heE1zZ1NpemUiOjEyNTAsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6MTYsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MjA4LCJ0cmFuc3BvcnRzIjpbIm5mYyJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi0zNX0seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTM2fV0sIm1pblBJTkxlbmd0aCI6NCwiZmlybXdhcmVWZXJzaW9uIjoxNjc3NzIxNiwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjUxfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMDktMDYiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MTY3NzcyMTYsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiSUQtT25lIENhcmQiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI0MDkwNjAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUHJvZmlsZXMiOlsiZW50ZXJwcmlzZSJdLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTA5LTA2IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjE2Nzc3MjE2fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI0LTA5LTIwIn0seyJhYWd1aWQiOiIyZDNiZWMyNi0xNWVlLTRmNWQtODhiMi01MzYyMjQ5MDI3MGIiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjJkM2JlYzI2LTE1ZWUtNGY1ZC04OGIyLTUzNjIyNDkwMjcwYiIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJISUQgQ3Jlc2NlbmRvIEtleSBWMiJ9LCJkZXNjcmlwdGlvbiI6IkhJRCBDcmVzY2VuZG8gS2V5IFYyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMwLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQyt6Q0NBcUdnQXdJQkFnSVVJTHdHNTZlWExLK21LV3A0NkhvWE9ZK2I2TTB3Q2dZSUtvWkl6ajBFQXdJd2F6RUxNQWtHQTFVRUJoTUNWVk14RXpBUkJnTlZCQW9NQ2toSlJDQkhiRzlpWVd3eElqQWdCZ05WQkFzTUdVRjFkR2hsYm5ScFkyRjBiM0lnUVhSMFpYTjBZWFJwYjI0eEl6QWhCZ05WQkFNTUdrWkpSRThnUVhSMFpYTjBZWFJwYjI0Z1VtOXZkQ0JEUVNBeU1CNFhEVEl5TVRFd05ESXhNVEF5TjFvWERUUTNNVEV3TkRJeE1UQXlOMW93WmpFTE1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBb01Da2hKUkNCSGJHOWlZV3d4SWpBZ0JnTlZCQXNNR1VGMWRHaGxiblJwWTJGMGIzSWdRWFIwWlhOMFlYUnBiMjR4SGpBY0JnTlZCQU1NRlVaSlJFOGdRWFIwWlhOMFlYUnBiMjRnUTBFZ05UQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJDSG5LUHNqS05kQXMwU0NOZ3NXbFM0RGNvYms3QTdsa3pRRGtNa2FMbkxlNmliVzhyKzdrM3JuOElVU28rNXhNTUx0SUVKL3N2Sk1nQlpXeFVvRHhzV2pnZ0VtTUlJQklqQU9CZ05WSFE4QkFmOEVCQU1DQVlZd0VnWURWUjBUQVFIL0JBZ3dCZ0VCL3dJQkFEQWZCZ05WSFNNRUdEQVdnQlM3NkRwbDkzdkIyaDVGREx2eU1NdlVCeWozaXpBZEJnTlZIUTRFRmdRVURET0REWmRUaVBXclduakRpTXdzWmd5b2V6d3dSQVlEVlIwZkJEMHdPekE1b0RlZ05ZWXphSFIwY0RvdkwyTnliQzVvZVdSeVlXNTBhV1F1WTI5dEwwWkpSRTlCZEhSbGMzUmhkR2x2YmxKdmIzUkRRVEl1WTNKc01IWUdDQ3NHQVFVRkJ3RUJCR293YURBL0JnZ3JCZ0VGQlFjd0FvWXphSFIwY0RvdkwyTnliQzVvZVdSeVlXNTBhV1F1WTI5dEwwWkpSRTlCZEhSbGMzUmhkR2x2YmxKdmIzUkRRVEl1Y0Rkak1DVUdDQ3NHQVFVRkJ6QUJoaGxvZEhSd09pOHZiMk56Y0M1b2VXUnlZVzUwYVdRdVkyOXRNQW9HQ0NxR1NNNDlCQU1DQTBnQU1FVUNJQjI0TGUyenQ3Wi9XL1A5ekU5TmZxemdQWmpCSXBLazFxdXFnYlpZNjYvRkFpRUF0c1JZNWJ4YU45TURLR2FlZmFUUzZ6Z01WYnhVbEVwRG40OUM2VlNXZ21FPSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFWTUFBQUNzQ0FZQUFBREcrRThNQUFBQUlHTklVazBBQUhvbEFBQ0Fnd0FBK2Y4QUFJRHBBQUIxTUFBQTZtQUFBRHFZQUFBWGI1SmZ4VVlBQUFBSmNFaFpjd0FBRDJBQUFBOWdBWHA0UlkwQUFBeWdTVVJCVkhoZTdaMS9iSlRsSGNCdmpoak5jQzRPK2RYZVhWdFVUTXppUDdvWVhaWTUxSWtLZDFmTm5GSGo1b2hCbUE3ajJNUnNab2xteGhoTkpvcnQyNEtnc2lGc2ltN1RBZE1ZUkZRRUZUY1Z4dy9yd0FFRlJDaFErdXVlUGMvMXFRUDNUTnMrMzN2ZXUrdm5rM3pTNDJnZm52ZTl0NTgrNzczWEl3RUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVVFcGtHNi9YUHBuSVJSOGdJaDV0NDFyOWNZYXRCZndQOVEzbjZ4MjBUWnRQMURjcFJNVFBOZGVVMTR1dVZ0Mk1xMjFGQmt4dE1qbXJMcFZxMFI4MzExWlgzMnJ2TG1NS1AyMzBqcW1QM0RzTkVmSHp6RVc3RXhmT0dXbUw4b1drazhrZjFxWFNQWFhWcWFYSlVhUE9xS21xT3JNdW1mcHJiVExWblVxbExyZWZWa1pNbVAxMS9aT2x3N2x6RUJFSG9qbXJ6VVpUYlYzK0wzVmp4MDR3SVIwOWV2VEo0MUtwS2RvYmpDTkhqaHcxZHV6WTVMaDBqZEtyMUxQdHA1Y0JKcVNzUmhGUjB0Nmd6clNWY1hHTURxbXFTU1l6K3ZZd0U4NmFxdFMxdGRYcDY4M3R1akZqVWpWams1UDFLclc5OTlQTGdWelU1ZHdaaUlnK21xQmVPcWZPbHVZbzB1bjBjVHFtWGZhUHc4d0sxZDVPNkZQOHQyclQ2VnYwelMrYnNQYmVXK3Jrb28rY093RVJVY0pjZE1EVzVpaXFxNnVQSDVlcTZWdDFGbGFtT3FJNzYxSTEyMDlKMS9SRjlrdmxFZFA2aG04N054NFJVZEpzd3oyMk9wOWlZcXBYbzUzMmoyWmxtai9wcEpPK3FqOTJwOGVNT2QzZWYweDV4RFRYdE0rNTRZaUlrdWFpRGx1ZEkrazloVThuanRPM0N6RTFkNDRZTVdLTXZuM1EzQjQrZXZqSituYmZLcldFNFhXa2lCakt5NXZQc3VYNWxMcFVhbVp0TXIzZjNLNnRUcjVUdUZOVGwwdytXcE5LM2F6L3JxTzJPajNOM2wyaVRJNm1PamNZRWJFWTVwcWV0ZlU1aXJycTFETzF5ZFNCY1ZXcEcreGRpYnFxNUF5ek90WDNMN1IzbFREMTBYTG5CaU1pRnNOY1UrSFUzVVZ5VlBJTUhkV1ZwOVhXcVZOcmF2UDY5dktxRVZXbjJyOHVjZXFqL2M0TlJrUXNocm1vakY0dk9oQ0lLU0tHMUgwUnFnSWdwb2dZVW1LS2lDZ2dNVVZFRkpDWUlpSUtTRXdSRVFVa3BvaUlBaEpUUkVRQmlTa2lvb0RFRkJGUlFHS0tpQ2dnTVVWRUZKQ1lJaUlLU0V3UkVRVWtwb2lJQWhKVFFTOTdXQ1V1ZUVBbExwd2RWdk52NWlMM25BYnI5eDUwLzF2RjlpS3RhejRETWE3SHdEeitydm4weDZ4Ky9PS1lkekUwMjNHUlBuN01NWFNwM2llVEc5M2JYR2tTVXpsdm52dXlpb3ZqcnB6bm5OT2cxQWYvdXMyNzdNaGgyZm5Kb2Q1dlFOZTgrcVArSm82TGFkRXE5NXo2NGRldVhXQkhxUXc2dTN0VVczdW4ycnhqbjFxOVlhZGFzbnF6dXFuNVpYWHlOUXRVNHVLSFZDSlRnWUVscG5LYWI2YTRxSlNZZnJUblFObkc5SWFIWDNMUHFSK2VxQ016Vk5pei83QmE4ZFpXZGVWOXo2dkVCTDJLclpTd0VsTTVpYWsveEhSbzBkblZvNTVkOTZFYWYrTWl2NmRKU2tGaUtpY3g5WWVZRGwzZWJ0bWp6cHUxMU8veGoxTmlLaWN4OVllWXdodGJkcWxUcHVxVnFya281OWhYSlNzeGxaT1kra05Nd3pQcnNUWHF6c1Z2cUx1V3ZLRXlkeTlUdVh1V3ExOHVmTDF3MzcxTDE2c1Y2N2NWTGlhRnBDZWZWNCsrK0UrVnVHQzJjMytWcE1SVVRtTHFEekVOVDJMQ2IvVXFzRkVsTWczL25aTzVLRlM0VHp0SlB4Nlh6bEZWVXhhcUtYTldxby9iRHR1dkxENjcyOXJWTjM2NnhJVHFxUDFWa2hKVE9ZbXBQOFEwUElYWGhqcm01RlJIN1pqSkRlcU8zNisxWDExOHVudDYxQzJQck5iSDVSR3hMMFdKcVp6RTFCOWlHcDRCeGJSUEhiWkpkeSt6STRSaC9ndnZGMWJJenZtVWdzUlVUbUxxRHpFTno2Qmlhc3cwcWgvcjAvNlFQUG5xQjM3SFJ6RWxwbklTVTMrSWFYZ0dIVk5qTmxKLy8zQ1BIU2tNVDcvV1VwcEJKYVp5RWxOL2lHbDR2R0txSGYrVHhYYWtjUHp4RmIxQ0xiWG5VSW1wbk1UVUgySWFIdCtZbXFpOXQyMnZIUzBjUDF2d3FucytjVWxNNVNTbS9oRFQ4SGpITkJlcDgyNS8ybzRXam53K3I4WlBYK3llVXh3U1V6bUpxVC9FTkR6ZU1kVis1YXBIN0doaDJYZXdRMlQrSWhKVE9ZbXBQOFEwUENJeG1tUk85VCt4STRibG1UVXRoZFd4YzE0aEphWnlFbE4vaUdsNFJHS2FqZFF0ODE2eEk0Wm4rRldDeC85Z0phWnlFbE4vaUdsNHBFNlR6NXl4eEk0WW52Yy8ydHY3NjYrT2VRV1RtTXBKVFAwaHB1R1JpdW5vNngrM0k4YkRpT3NlZGM0cm1NUlVUbUxxRHpFTmoxUk1oMTNSYkVlTUIzUE14dnJjS1RHVms1ajZRMHpESXhWVGN4R3FxN3ZiamhxZXJ1NGV1VzBaak1SVVRtTHFEekVOajFpQTlIR3pkbE9ySFRVZWJwMGY0d3Y1aWFtY3hOUWZZaG9lc1pobUd0WENsUnZ0cVBHd2JiYytmdUo2aDM1aUtpY3g5WWVZaGtjc3BqcGl0ejIyeG80YUQrMGRYU294TWFhMzZTT21jaEpUZjRocGVDUmpHdWRyVGZ1STdhbytNWlV6enBoKzUxZC9VdWZPZWxyRWIvNzhLYlVoaGpldU1CRFQ4SWpGTktiZjBmOHN0ejIreGoyL1lrdE01WXd6cHBVQ01RMlBXRXkxNTl5MjFJNGFINnZlM2U2Y1c5RWxwbklTVTMrSWFYZ3FMYVpiNDdvSVJVemxKS2IrRU5Qd1ZGcE10Kzg5MlB1L3Fqcm1WMVNKcVp6RTFCOWlHcDVLaSttdWZlMHFsbmZoSjZaeUVsTi9pR2w0S2kybWhmYzR2Y3pqR0Jxc3hGUk9ZdW9QTVExUHhaM21mOHhwdml6RXRDd2hwdUdwdEpqdTJIdUltSXBDVE1zU1locWVTb3ZwQnp2M203QTU1MWRVaWFtY2NjYlV2TUhFNjBLdTJiaFRIV2p2c2lPSGhaaUdwOUppdW1UMVp1ZmNpaTR4bFRQT21CNXJmaEtiSjkwbHZQZ2g5ZnJHZU43OWg1aUdSeXltSmZJYlVQWDNMSGZQcjlnU1V6bmpqQ20vbTI4bHBnTkdMS1lsOHJ2NXNaemlHNG1wbk1UVUgySWFIc21ZVG8vNXVzSCtRNTI5WjFldStSVmJZaW9uTWZXSG1JWkhMS2FaUnJYb3BVMTIxSGhZMzdLYmxhazR4SFR3RXROQlFVd2IxWXIxMit5bzhYRDJ6S1h1dVlXUW1NcEpUUDBocHVFUmkrbmtCdFg2eVNFN2FuamEydlVwL2lVeHZURzBrWmpLU1V6OUlhYmhrWHpPTkU2ZVdMWEpQYTlRRWxNNWlhay94RFE4VWpFOThacjVkc1R3OVBUazQzbmJ2U01scG5JU1UzK0lhWGlrWW5ycTlDZnNpT0g1eTdwL21aZzU1eFZNWWlvbk1mV0htSVpISktZNlpKZmMrWndkTVN5SE83djFNUlBqYzZWOUVsTTVpYWsveERROElqSE5OS29scTdmWUVjTXlyWEdWZTA2aEphWnlFbE4vaUdsNFJHSWEwOFduVGR2M3hmY2kvYzlLVE9Va3B2NFEwL0JJeEhUOHRFVjJ0SEMwZCtqVGUzMnN1dVlUaThSVVRtTHFEekVOajNkTTlTbiszT2MzMk5IQ1lLN2Vuelh6U2ZkODRwS1l5a2xNL1NHbTRmR042ZkFmekxNamhXUEd2SmVkYzRsVllpb25NZldIbUliSEs2YVRHOVRjdjRWZGxkNitjSTBKbDNzK2NVcE01U1NtL2hEVDhBdzZwdGxJblgvSG4rMG9ZYmlwZVZVOC95VkpmeVNtY2hKVGY0aHBlQVlWMDB5RE92ZjJaK3dJeGFlN0o2OStOUHZGMGx5UjlrbE01U1NtL2hEVDhQUTdwaVprK3JUZUhHdjNQclhlZm5YeE9kamVxY1pOWGVTZVV5bEpUT1VrcHY0UTAvQWt2blYvNzdzdGZkYUpENmxoVnpTckU2K2VyMDYvYWJISzNMMWMvU0h3Qy9PWHZibTFNQS9YUGlzNWlhbWN4TlFmWWdxR2c0YzcxVlgzUDE5WUNidjJWMGxLVE9Va3B2NFEwNkZOUjFlM2Vualp1eXJ4M1FlYys2bWtKYVp5RWxOL2lPblFwTDJ6U3pXdDJOQjdTbC9LRjVrK1QySXFKekgxaDVnT0hmTDV2SHE3WlkrYU1tZWxTbHlnVjZMbEd0RStpYW1jeE5RZllsclpmTngyV0sxNmI0ZTYwYnpUVTdaUkpTWjVQTmFsSmpHVmM5SnZscW5sYjI0dFhJRU02Y3AzL3EyTy9mNWM1NXdHWmFaUlBmanNQNXovVnJIOTNjcU4raHZNNDZMRHhEbnFwWGUzTzhjdXBpdmUycVl1dWVzNTk1ejY0UWxYejFlNzk3ZXJsdGEyaXZETkxidlYyazJ0aFgzejZ5Zldxb2wzUHFkT01EL3dMOWFuOGZxSHRXc2ZsTDNFRkxFRU5LZTQ1dVZJWmxWZTdwcnRNRmZoeStsS3ZJVEVGQkZSUUdLS2lDZ2dNVVZFRkpDWUlpSUtTRXdSRVFVa3BvaUlBaEpUUkVRQmlTa2lvb0RFRkJGUlFHS0tpQ2dnTVVWRUZKQ1lJaUlLU0V3UkVRVWtwb2lJQWhKVFJFUUJLemFtdWFqVnVjR0lpTVh4b0sxUGhaRnRhSEpzTENKaWNjeEZ1Mng5S293cm1zYzdOeGdSc1JobW9sL1krbFFnNWprTTEwWWpJa3FhaS9LMk9oVktydWtGNTRZaklrcWFpM2JZNmxRd3VhamJ1ZkdJaUJMbXRPZmNkN3d0VGdXVGk2WTdkd0Fpb29TNWFKbXR6UkNnUG5yTnVSTVFFWDNNUnEyMk1rT0liT05HNTg1QVJCeU11YVlLZlNsVWY4aEZpL1FPeU91VnFudm5JQ0ora2ViS2ZYM1RXbHVWSVV3Mk9rMnZVbHVKS2lJTzJGeTBONUZ0dXM3V0JBcVlxTlpINi9USGZUcXNuWW42WnIyekVCR1AwS3hDczFHYmJzU1dSS1poZ3EwSEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVCcGtVajhCNEFvbStNYlQrM0pBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6IjJkM2JlYzI2MTVlZTRmNWQ4OGIyNTM2MjI0OTAyNzBiIiwib3B0aW9ucyI6eyJyayI6dHJ1ZSwiY2xpZW50UGluIjp0cnVlfSwicGluVXZBdXRoUHJvdG9jb2xzIjpbMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6NSwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjo4MH19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIzLTAxLTIwIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMwLCJ1cmwiOiJodHRwczovL3d3dy5oaWRnbG9iYWwuY29tLyIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiSElEIENyZXNjZW5kbyBLZXkgVjIiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDIzMDEyMDAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIzLTAxLTIwIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMwfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIzLTAxLTI0In0seyJhYWd1aWQiOiI0ODlmZjM3Ni1iNDhkLTY2NDAtYmI2OS03ODJhODYwY2E3OTUiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjQ4OWZmMzc2LWI0OGQtNjY0MC1iYjY5LTc4MmE4NjBjYTc5NSIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJNZXR0bGVzZW1pIFZpc2h3YWFzIEVhZ2xlIEF1dGhlbnRpY2F0b3IgdXNpbmcgRklETzIifSwiZGVzY3JpcHRpb24iOiJNZXR0bGVzZW1pIFZpc2h3YWFzIEVhZ2xlIEF1dGhlbnRpY2F0b3IgdXNpbmcgRklETzIiLCJhbHRlcm5hdGl2ZURlc2NyaXB0aW9ucyI6eyJlbi1VUyI6IkhhcmR3YXJlIEF1dGhlbnRpY2F0aW9uIHdpdGggTWV0dGxlc2VtaSBWaXNod2FhcyBFYWdsZSBBdXRoZW50aWNhdG9yIHVzaW5nIEZJRE8yIn0sImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjAsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjAsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQ2hUQ0NBaXFnQXdJQkFnSVVXRzV6ZmhhSlJnUVpYSkt2aFFUNkRkQVNXWll3Q2dZSUtvWkl6ajBFQXdJd2dhRXhNREF1QmdOVkJBTU1KMDFsZEhSc1pYTmxiV2tnVm1semFIZGhZWE1nUldGbmJHVWdRWFYwYUdWdWRHbGpZWFJ2Y2pFOE1Eb0dBMVVFQ2d3elRXVjBkR3hsYzJWdGFTQlRlWE4wWlcxeklHRnVaQ0JVWldOb2JtOXNiMmRwWlhNZ1VISnBkbUYwWlNCTWFXMXBkR1ZrTVNJd0lBWURWUVFMREJsQmRYUm9aVzUwYVdOaGRHOXlJRUYwZEdWemRHRjBhVzl1TVFzd0NRWURWUVFHRXdKSlRqQWdGdzB5TlRBMk1qQXdOalV5TXpsYUdBOHlNRFUxTURZeE16QTJOVEl6T1Zvd2dhRXhNREF1QmdOVkJBTU1KMDFsZEhSc1pYTmxiV2tnVm1semFIZGhZWE1nUldGbmJHVWdRWFYwYUdWdWRHbGpZWFJ2Y2pFOE1Eb0dBMVVFQ2d3elRXVjBkR3hsYzJWdGFTQlRlWE4wWlcxeklHRnVaQ0JVWldOb2JtOXNiMmRwWlhNZ1VISnBkbUYwWlNCTWFXMXBkR1ZrTVNJd0lBWURWUVFMREJsQmRYUm9aVzUwYVdOaGRHOXlJRUYwZEdWemRHRjBhVzl1TVFzd0NRWURWUVFHRXdKSlRqQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJLQU1xNEdRMXRGdHRzSVMrRTlCWG5jZzd2RDdrcHREekdvU1UvTHBRenF6ckFJNTRuNWE5Y2c2MUwwYnBBZm84VlB1SU9ZSks5TmxBVlRHR1ppck5rV2pQREE2TUF3R0ExVWRFd1FGTUFNQkFmOHdDd1lEVlIwUEJBUURBZ0VHTUIwR0ExVWREZ1FXQkJUSmJaWFM4bWdLV0h1eVdBdG1QVUFRTmIya1FEQUtCZ2dxaGtqT1BRUURBZ05KQURCR0FpRUFxd0ZlUHlneGRWbUZtTFcrbUhsanUxRnBya3A4QjNGRGMrd2VsbHRUUVZJQ0lRREpaMHQ0NjR2cmhYcmF6Y0E4U05yaEdyYTFZcSt2Qlh5K0JoTk1DUFhpTWc9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LC85ai80QUFRU2taSlJnQUJBUUFBQVFBQkFBRC8yd0NFQUFZRUJRWUZCQVlHQlFZSEJ3WUlDaEFLQ2drSkNoUU9Ed3dRRnhRWUdCY1VGaFlhSFNVZkdoc2pIQllXSUN3Z0l5WW5LU29wR1I4dE1DMG9NQ1VvS1NnQkJ3Y0hDZ2dLRXdvS0V5Z2FGaG9vS0Nnb0tDZ29LQ2dvS0Nnb0tDZ29LQ2dvS0Nnb0tDZ29LQ2dvS0Nnb0tDZ29LQ2dvS0Nnb0tDZ29LQ2dvS0Nnb0tQL0FBQkVJQUlBQWdBTUJFUUFDRVFFREVRSC94QUdpQUFBQkJRRUJBUUVCQVFBQUFBQUFBQUFBQVFJREJBVUdCd2dKQ2dzUUFBSUJBd01DQkFNRkJRUUVBQUFCZlFFQ0F3QUVFUVVTSVRGQkJoTlJZUWNpY1JReWdaR2hDQ05Dc2NFVlV0SHdKRE5pY29JSkNoWVhHQmthSlNZbktDa3FORFUyTnpnNU9rTkVSVVpIU0VsS1UxUlZWbGRZV1ZwalpHVm1aMmhwYW5OMGRYWjNlSGw2ZzRTRmhvZUlpWXFTazVTVmxwZVltWnFpbzZTbHBxZW9xYXF5czdTMXRyZTR1YnJDdzhURnhzZkl5Y3JTMDlUVjF0ZlkyZHJoNHVQazVlYm42T25xOGZMejlQWDI5L2o1K2dFQUF3RUJBUUVCQVFFQkFRQUFBQUFBQUFFQ0F3UUZCZ2NJQ1FvTEVRQUNBUUlFQkFNRUJ3VUVCQUFCQW5jQUFRSURFUVFGSVRFR0VrRlJCMkZ4RXlJeWdRZ1VRcEdoc2NFSkl6TlM4QlZpY3RFS0ZpUTA0U1h4RnhnWkdpWW5LQ2txTlRZM09EazZRMFJGUmtkSVNVcFRWRlZXVjFoWldtTmtaV1puYUdscWMzUjFkbmQ0ZVhxQ2c0U0Zob2VJaVlxU2s1U1ZscGVZbVpxaW82U2xwcWVvcWFxeXM3UzF0cmU0dWJyQ3c4VEZ4c2ZJeWNyUzA5VFYxdGZZMmRyaTQrVGw1dWZvNmVyeTgvVDE5dmY0K2ZyLzJnQU1Bd0VBQWhFREVRQS9BUHArZ0FvQUtBQ2dBb0FLQUlMMjd0N0cya3ViMmVLM3Q0eGw1SlhDcW85eWFhaTVPeUUyb3E3T0Z1Zmk5NFFpdUdoZ3ZwN3NyOTVyYTJra1VmampuOEs2bGdhelYyckhPOFhTWFUxZkRmeEQ4TWVJYmdXK25hcEY5clBBdDUxTVVoUG9Bd0dUOU0xRlRDMWFhdkphRnd4Rk9ic21kWlhPYkJRQVVBRkFCUUFVQUZBQlFBVUFGQUJRQXlXV09HTnBKblNORjVMTWNBZmpUU2IyQnV4VE9yNmYvWk0ycHJlUVNXRUtPN3p4dUdRQmM3dVI2WU5WeVM1dVcycFBPcmMxOUR5U2JTdFcrSk9sMy9pRy9HTFpZWGZSTkhkOEk1QU8yYVlkeVQwQjQvRHI2Q25ERFNWTmZOL29qaWNKVjA1djVJNTN3YjRyZlZmaGpyT2lYbXZXZGhxMHhLV0NxcXhTYlFBU21Jd0FNa01vNzgvU3RxMUhrclJtbzNYVXlwVmVhazROMmZRd3RSbG5zZmgvNGNoMURTWU5YYlZua25odUhXUXpRQXNBc0VVZzUzZFc1eU9laHJXS1Vxc21uYTM5WFptN3hweFRWN25zUGdYVjlWMEx4QVBCL2ltWjdtUjR2TzB1K2srOWNSanJHLzhBdHIvVDZaODZ2Q05TSHRxZnpSM1VweWhMMlUva2Q2K28yVWQ4TEtTN3QxdkNvY1FOSUE1VWtnSGIxeHdmeXJrVUpOYzF0RHA1bGUxOVMzVWpDZ0FvQUtBQ2dBb0FwNnZxVnBvK21YR29hak1JYlMzVGZKSVFUdEgwSE5WQ0RuSlJqdXlaU1VGelBZOG0xajQ5YVFzdmtlSHRLdnRVbkp3dVI1YXNmWWNzZnlGZWhETFo3emRqamxqbzdRVnpOL3QzNHUrS3YrUVpwVVdoMnJkSkpJeEd3SDFreTM1TFYrendsTDRuZGtjK0pxZkNyRWtQd1cxdlc1Rm04YWVMTG01UFV4UWxwTWZSbk9CLzN6U2VQaERTbEN3MWc1ejFxU05uNGk2SmIrRi9oUmFlR3RKa21GdmRYc05tSGtiTGtTUzcyNUFIWEI3ZEt6dzlSMWE3cVM2SnN1dEJVNktweDdtSDR6K0g3K0hOVTFYeFkzaUc3MC9UWW84Ui9ZVllYQ2Jnc2FSOWNiQWNmaFd0SEUrMGlxWExkK2V4blZvZXpicWMxa2NHSkYxTFh2RE5oNHlua3RkS2pNb2U2ZTBOazdmSmtNMGgrOGNoZWZmM3JxdHl4bEtrdGZXNXovRktLcWJmY2F1bVdtbndlUEpvL0RTYTlyK2lhVExhM2RyRllUaVdOWkFNL1B1N1ozQVl4M3FKU2s2WDd5MFc3clV1S2lxbnVYYVZpM3J2eEIxSHhGcWxwZFhla2ZZSmRFMU9LV09SUTIrTldrMk5ESm5qY1JnOGVsVEREUnB4YVR2ekwrbU9kZVUybTFhelBVZmlMOEx0TThiMzhlb1hONWQybDlGQ0lVZUxhVjJna2pLa2VySG9SWEJoOFpLZ3VWSzZPeXZoWTFYek4yWnhYL0NBZkVyd3Z6NFk4VUMrdDArN0JNNUhIb0VmY28vTVYxZldjTlYvaVFzYy9zSzlQNEpYQWZGRHgxNFpPM3hoNFRhV0ZlR3VJVmFNZlhjTnlIOUtQcWRDci9DbUgxbXRUL2lST3c4SC9GL3cxNG12cmV3amE2czcrZHRrY054SHd6ZWdaY2o4OFZ6VnNEVnBMbTNSdlR4ZE9vN2JNOUdyak9vS0FDZ0R6LzQ5U21MNFZhMFYvaThwUHpsU3V2QXE5ZUp6WXQycE1sK0MrbTJscDhPOURtZ3RZSTU1cmNQSktzWURPU1NlVDFOTEdUYnJTVFk4TEZLa21qdTY1VG9DZ0R5ejQxYXJaV0dzZUNVMVdZUVdDNmw5c21rS2xnQkVCamdBbnExZDJEZzVSbnk3MnQ5NXg0cVNVb1gydVdQaU5ZM1B4SThCV3A4RzMwVTFwTk9IY016UkxPaWtnakpHZUdBT0NPMzBwWWVTdzFWKzFXbzY4WFhwcjJiT0s4V0NYVS9FM2cvd1ZyZXRSR1MxaWkrMnpHMjgzZGNubEUza0EvTW94MTU2a1YxVXZjaE92Q08rM29ZVlBlbEdsSjdmbUh4VHNQOEFoWEdvcHF2aDNVOVF0WDFXN016MmtPeU9BTEdBV1hwNzRBOXpTd3N2cks1SnBPeTM2aGlJK3dmTkI3bllmR0c4ajFINGJhYmZSSTZSM1YzWnpLcmpEQU1RUUQ3ODF6NFNQTFdjWDBUTjhTK2FrbjZIcUZjSjFoUUFoR1JnOUtBUEJ2aTNaV3VtZkYzd0xjV050RGJ2UGN4ZVlZa0M3ejV5akp4MU9EWHE0U1RsaDZpYi9xeDUySmlvMW9OSHZWZVVlaUZBQlFCNTc4Zkl6SjhLdFp4Mk1MZmxLbGRtQi9qeE9iR2Z3V2FQd2ZjU2ZETHc4UjJ0Z3Y1RWorbFJpLzQwaXNOL0NpZGpYTWJoUUJEZFJyTEM0ZEZmNVRnRVo3VTR1ekUxZEhpdndxOGY2UjRaOEQyR2xhdERxU1hrRFM3MVN6ZGdNeU13NXg2RVY2V0t3MDZ0UnpqYTNxY09IcnhwMDFHVjcraDEzaHVEd1o0NDhRU2VKOVBzNUpOVnNaRmplU1pYakt1QjhwS0U0SkE2SEhhdWVvNjFDSHNwUFJtMEZTclM5b2xxanVOUTArejFHSll0UXRMZTZpVmc0U2VNT0FmWEJIV3VhTXBSK0YyT2h4VXQwY0g4ZGdCNElnQUFBR29XMkFQOSt1ckEvd0FSK2pPYkYvQjgwZWpWeG5VRkFCUUI0YjhhZjNueFk4QVJEcUxpTnY4QXlPditGZXBnL3dDQlVmOEFXeDUrSy9qUS9ycWU1VjVaNkFVQUZBSEgvRjYzKzFmRFR4REdCbkZxWlA4QXZraHY2VjBZUjJyUk1NU3IwcEdiOEJMajdSOExOSEdjbUl5eG44Skcvb1JXbVBWcThpY0c3MGtlaFZ4blNGQUJRQVVBZU42RHI4M2hEeFo0eFcrOFArSUxwTDNVak5ESloySmtSbHgxemtmcFhwVktTclU0V2t0RjFad3dtNlU1WGk5WDJPaC80V2piL3dEUXErTHYvQllmL2lxeCtwditlUDNtdjFsZnl2N2psL2lMNHFsOFc2SGI2WHAzaHJ4TEZPYnlDVGRjYWV5b0FyYzVJSnJmRDBWUms1U2t0bjFNYTFWMVlxS2k5K3g3WFhtSGVGQUJRQjRkOFFmOU8vYUc4SVdvNThpS09RajZOSS85QlhxWWYzY0pObm4xdGNURkh1TmVXZWdGQUJRQm0zbjluYTFhNmhwVDNFTXdlTm9MbUtPVUYwVmdRUVFPUWV0V3VhRFU3RXZsbW5FeXZDV202QjRTMG00MHpTcjJKYmExa01rd2x1Vll3bHY3eC9oNmQ2MHF6cVZwYzBscXlLY1lVbHl4WnFSZUlOR21sU09MVnRQa2tjaFZSYmxDV0o2QURQSnJOMHByVnBsS3BCOVJyK0l0RVIyUjlZMDFXVTRJTjBnSVBwMXAreW4yWWUwaDNIU2VJTkdpMmVacStucHZYY3U2NVFaSHFPZWxKVXB2b3c5cEh1T1RYTkplM2U0VFZMRm9FWUswZ3VFS3FUMEJPY0EwZXpuZTFoODhiWHVYbmtTT05wSGRWalViaXhPQUI2NXFMZENqTkhpUFF5UUJyT21rbnQ5cVQvR3RQWlQvQUpXUjdTSGRFMm9heHB1bXZHbW9haFoycnlmY1dlWlVMZlRKNXBScHlsOEt1TnpqSGRrbDVxVmpaUnh5WGw3Ylc4Y24zR2xsVkEzMEpQTkpRbExSSUhKTGRrVnJyV2wzWmNXdXBXVTVSUzdpT2RXMnFPcE9Ed1BlbTZjbHVnVTR2WmxpQzl0YmkwKzFRWE1FdHRnbnpra0RKZ2RUdUhIRlM0dE96V28xSk5YUnlkem8zaFQvQUlTcTE4WTNHb1FDOUttT0dacnRSRXdDbER0NXdjQW44YTZGVXE4am9wYWVoaTRVK2YycmVwMTFwY3dYa0N6Mms4VThMZmRraWNNcDdjRWNWenROT3pOazA5VVRVaGhRQjhzWDJ0YXg0WCtLUGkveEJvOFBudzI5Mjl0Y3huT0NKUzJ3a2VnWlIrT0IzcjNZMDRWYUVLYytxL0k4aHpuVHF5bkUyUGcvcEU5emMrUDdEeERhUGYzYjI4YjNGc1pDclN5WmQ5cFljZ2xzRDYxbmk1cEtuS0RzaThOQnR6ak5YTkh3YjRhdFg4VWFiNS93d3ZOTVJKaEo5c2UvbGRZU3Z6QmlEd2VRT0ttdFdmSTdWYi9JcWxUWE9yMDdmTWk4ZStCZkQxcDhVL0NlbjI5aHN0TlRlUnJ1UHpYUG1IUHJuSS9ERkZERVZIUW5KdlZiQldvUVZhTVV0R2FIeHk4QytIZEc4QnRxR25XSGszZHNZYmVKL05kdHFidW1DY0hxYWpCWW1wT3J5eWVqS3hkQ0VLZk1rVS9pYjRZMG53NThHWVgwZTErenRlejJzczU4eG0zdHNQUEpPT3A2VmVHcXpxWWozM3RjbXZUalRvZTZ0N0h1VTFyRGZhTzlwZFIrYmJ6d0dLUk00M0tWd1JrZXhyeTAzR1YwZWhaT05tZUFhWjRYdExqVnJXM3VQaFBmVzl2Sk1xUE8yb3lrUnFXd1dJOWh6WHJTck5SYlZYOER6WTBrNUplei9FWHhsb013K0lIaUhVSnRIZzhYYWU2aEhpdHJ2L1NMRVl4allwSlVqQnhrSHA5YUtOUmV5akZTNUg2YU1Lc0g3U1VtdVpma2E5dFlhSHJQd2swZVRTZEIxTHhQRlozTHhSMnR4Y21PYUV0a3RrcHdRUGx4eDBJck55bkN2SlNrbzNORW9Ub3JsWE5ZbThIYUhiV21pK0tyei9oQ3JqdzNjSnBrc1NTUzNUeSthckt4WUFOMHh0V3ByVkc1UVhQemE5aDBvSlJrK1RsMFBMdEExRHhQYmVDMjhOMk1aYXgxeEd1b3BjbjkzSEdYRXc5czdCbjIvd0I2dTZwQ2s2bnRIdkhUL0k0NFNxS0hJdG4vQUV6cXJ6VGJTNi9abXNiNmVFUGRXY3JtQjl4R3pmYzdXNDZISTlhd1Uyc1k0clovNUd6aW5oVTMwL3pQZC9BdW0ybWsrRWRLdGRQaEVOdUlGazJBay9NdzNNZWZVa212S3J6YzZqY2owYVVWR0NTTjZzalFLQU9ZOE8rRXRQMFh4RHIycVdzODB0enFzaXl6eHlNcFZDQ3hHMEFaSDNqMXpXMDhRNmtZdy9sTW9Vb3dsS1M2bEkvRDJ3RjM0bHVZYi9VWUo5ZDIrYzhVaXFZdHB6OGhBeVB4elYvV3BXaW1sN3BQMWVONU5QYzR2UmZDdWd3K0liVHl2RlBpbVF4WEFNYnpULzZQTTZIT3pkdHdRY0VlL05jMzl1VXFrdlpLSzEwdmJUNU01NDA0Y3k5NS9vZWdhNTRZMHpXUEUramE1Y1hjaVhXbGxqRWlPdXhzL3dCN0l6K1JGYVF4WEpDVUZhek9tZE9NNXFiZXhMNDIwRFR2RjJnUzZUcUYwOFVFanE1ZUYxREFxY2pxQ0tWSEVleG56eGFIVmhHckhsYkt2aXp3bnBmaWJ3dEJvTjVlU3hXc0pqS3ZFNmgva0dCbklJL1NxcFlyMlUvYUsxeFZLVWFrT1JzeE5HK0d0aHBkeEpNbmlmWFp0OEVrRzJXOVVoUTZsZHc0NmpPUjdpdFo0OVRWckl6amg0eGQrWmxKZmhOcDRJUC9BQWwvaVRqL0FLZjEvd0RpYXIrMFYvTEVuNnJIK1ovZVhmRW53eTBiVjlhdU5VczlZMURTYnU1WGJjbXl1QW9tOTJIcWUvWStsVFR4N2hIbGRtbDNLbmhvU2x6SjJaSmMvRG5RL3dEaEh0TzBhdzFmVU5OdDdKbmZmYTNTbzhyTmpKYzQ1NmUxU3NmNzduS3piQjRlSEtvSjJzTG9Idy8wN1NHdnMrSTlXdlV1N1NTMGRMcTdWMVZYeGxnTWZlR09ENzBUeHluYlJLenVPRkNNYis4M2MydEE4T2FWb3ZnOWZEdHZkdEphTEZMQ0paSFV5WWtMRThnWS9pOUt6cVlwVHFlMGJWeTRVNHdoeUpuT1gzd3cwSzc4SmFiNGVPczZoSFkyVFNPUExuUUdVdTI3NS9sd2NIcHhXMGN3dFVkVFM3TW5ob09DaGZSSFplRDlHdC9EK2d3YVphWHR4ZXhRRnNTM0VnZCtUbkJJN0RPQldGU3Q3YVRucDhqZWxCUWp5cDNOcW9OQW9BNWZVdjhBaVZlTTdHOUhGdHFTZlk1dlFTRG1NL1U4aXZQcS91Y1ZHcDBuby9Yb1l5OTJvcGQ5Qzk0djFCOU4wRzRrdCticVhFRUNqcVpIT0Z4K2Vmd3JYRzFuU290eDNlaTlXVlZseXgwT0RidzFwK2wzRThPclhiM0ZyWVd5WFVzYXc3V2tYTEJVMzd1Zm16MkhVYzE0N3dWT2pKeHF5dW9xNzAzOHIzN25MN0tNWGFUMkxpK0gwa1VQSDRHaTJNTXJ1MUVBNDl4V2l3aWVxdy8vQUpNVjdOUDdINGxhOThQVzBXdldjTnY0YmltZVN4TXN0bjlyMmhHM2daMzU1eDAvR29xWVNDclJqR2xlOGJ0WDgrNG5UU2trbzlDMG1qNlhiWE5zbXMrRWxzNExpVVFyTWwzNW9Ebm9DQWNqUHJXaXc5R0VrcTFDeWJ0ZTk5UjhrVTF6UXNhT2plSFBEV29SWHBrMGVLQ1MwdUhna1V5dWNiZjRzNTZFRUd0NkdEd3RWU3ZUdHl0cmRsd3BVNVgwMklQRE9rZUU5ZTB1VytpMGxJVWlrZEdEU01jQWNnOWU0SU5SaGNQZzhUVGRSUXRiellxY0tVNDNzVXJiUmJPK3NMVzgwL3dkRE5ET2hjRnI0b1FOeEE0UHFBRCtOWlJ3MU9wQ002ZEM2ZjhBZUpWT01rbkdINGo0ZEYwcUM5dFlkWjhKcFpSWE1naGptVzdNbzNub0NBZU00NjA0NGFqR2FqV284cWVsNzMxR29SVFNsQzF5ZS84QUM5dkRlU1IyZmc2QzVnVS9KS2IvQUdidndQU3JxWUdNWk5Rb0pyL0VPVkpKNlEvRVpZYU5vUDJ5UzAxbncydW5UaUZyaEQ5b01xT2kvZXdRZW80NHFhZUd3L000VnFYSzdYM3ZvS01JWHRLTml0YmFOYTMxdkhjMkhnbEpMV1ViNG5rdjlqTXA2RXJuaW9qaG9WRXAwOFBvOXZlRW9LU3VvYWVwMm5oVFRvOU8wMHJIcGlhYThqbG5nV2J6Um5vRHUrbGVyZzZLcFFzb2N0K2w3blJTaW9yYXh0VjFtZ1VBWS9pelRtMVRRYm1DSGk1VUNXQmgxRWk4cmo4Umo4YTVjWlJkYWk0cmZkZXFNNnNlYUxSeituYWd2aXZXOUlkQm0zc1lCZHpyMkU3ZktxbjNHR05jVkt0OWRxd2EyaXJ2MTIvQXlqTDJzbDVhL010M2xoRnFmaXpWN0s1ejVVK214SXhYcVBuZmtWcE9sR3RpYWxPV3ppdnpaVGlwVGNYMkZuMDN4SlpXanZGNGdoa1NCQ3lyTFpMbGdCMEpCL1duS2ppcWNicXJ0NUE0MUlyNHZ3R2FQZXRxWGlYUzcxMENOY2FQNWhVZEFTNm1wb1ZmYTE0VkgxaCtxQ011YWFma1dmSDMvSU5zUCt3aGIvOEFvZGFaai9Eai9pWDVqcjdMMVJoZUtyaVRTZFkxZTF0OGg5YXQ0eEIvMTEzQ05zZSsxZ2Z3cmp4azNRcXpoSC9sNGxiMTJmNEdWUnVFbWwxSWRkVStIcDc3U3JJRUxxdHBERGJEL3BvQ0ltL0hhUWZ3cWNRdnFybFJoOXRKTDEyZjRDbXZaM2l1cS80QnNYZW5MZCtJTFBRM251SXRPdGRQRWdpaGtNWmR0MndaSTVJQUhUM3JxblJVNjBjTzIxRlI2YWVSbzQza29kRWlsNGk4TzJXbHk2TlBhdGRHUTZsQXVKTGgzR04zb1Q3VmppY0hUb3VuS043OHk2dGsxS2FqWnJ1aTlIcHFlSU5jMWs2amMzWmp0SmxoaGlpbmFOVkd3RW5DbmtrbnJXeW9yRlZhbnRHN1Jka2s3ZENsSDJrbnpkQ0JOQ3M5UDhZV01FSm5lTzRzN2haQkxNMG5HVUhHVHgxTlFzTFRwWW1NWTMxVDNkK3d2WnFOUkpkbVhMZlFOY3NMZU8xMDd4QXFXc1EyeEpMWnE3S282QW5QTmF4d21JcHBRcDFkRnRkRktuT0t0R1docCtFOVNtMVhSSXJpNkNDNER2RTVRWVZpckZjajY0cm93ZGFWYWtwUzMxWDNNdWxKeWpkbXhYVWFCUUFVQVoya2FOWmFRMTIxbEdVTjFLWnBNblBKN0QwSHQ3MWhRdzFPaHpPQzNkeUlRVUwyNmlYZWoyMXpjM053WG5qbXVJVmdaNHBDcENna2pCSFE1TktlR2hPVGxyZHF3T0NiYk14L0I5bElwU2ErMWFXTnVHUjcxeXJEMEk5S3dlWFUzbzVTYTlXUjdCZFcvdk5hSFNyV0M5aHVvVUtQRGIvWmtWVDhvVElPTWZnSzZZMElSa3BwYkszeU5GQkozUS9WTk9nMU9HS0s2REZZNVVtWGFjZk1weUtkV2pHc2twZEhmN2dsRlMwWkhxR2sybC9mV04zY29XbXNuTHhIUEFKSGYxN0g4S1ZURHdxempPUzFqc0VvS1RUZlFXLzBxMHY3eXh1YmxDMHRtNWtpSVBRa1k1L1EvZ0tLbENGV1VaeVdzZGdsQlNhYjZFV3M2SFo2czhVbHg1MGM4V1FrMEVoamRRZW95TzFUWHd0T3UwNWJycXRHS2ROVDNLMWw0WHNiVzhpdW5sdmJxV0k3by90VncwZ1Erb0I0eldkUEEwNFNVMjIydTd1VEdsRk80N1V2RGRqZjNyWGUrNnRybHdGZDdXZG9qSUIwM1k2NHAxY0ZUcVM1OVUvSjJIS2xHVHVMcDNoeXlzWG5rUjdxVzRsak1Sbm1uWjVGVTlsSjZldkZGTEIwNmJiVjIzcGR1N0NOSlJLcDhJMnBCQjFIV0NEMiszUFdmOW53L21sOTdKOWl1Nys4MjlPc2JmVHJLSzBzNHhIQkVNS281L3lhNjZWS05LQ2hCV1NOWXhVVlpGbXRCaFFBVUFGQUJRQjRWNCswN3hGOE92RVk4VmVIYm02dmREZHY5S3NwWldkWWdUeU1FbkNuc2Y0VDdkZlZvVHA0bUhzcWl0TG96ejYwWjBKZTBocWoxVHdWNHQwdnhocENYK2t6WnhnU3d0OStGdlJoL1hvYTRLMUNWR1hMSTY2VldOV040blExaWFoUUFVQUZBSGszeFcrSmgweVUrSGZDWU41NGl1RDVSTVEzL1p5ZU1EMWYyN2RUNlY2R0Z3bk4rOHFhUlJ4NGpFOHZ1VTlXYnZ3bzhIWHZoclNqY2E3ZjNON3JGMEFaZk1uYVJZUjEyTGs5ZlU5L3BXV0tyeHF5dEJXU05NUFJkTlhrN3M3eXVRNkFvQUtBQ2dBb0FLQUNnQW9BWkxHa3NUeHlvcnh1Q3JLd3lDRDFCRkNkdFVEVnp4SHhkOE5OWDhMYXUzaVQ0YVRQRklNdE5wNm5PUjFJVUhobC93QmcvaDJBOVNsaTRWWSt6eEgzbm4xTU5LbkwybEg3amQ4Qi9HTFN0YWRkUDhRcU5HMWhUc1pac3JFN2V4UDNUN04rWnJLdmdaUTk2R3FOS09MalAzWjZNOVRVaGxES1FRZVFSM3JnT3dvNjFyR25hSFl2ZWF0ZVEybHN2VjVXeG4ySGNuMkhOWENuS283UlZ5WlRqQlhrenhYeEI4U05mOGVYNzZGOE43T2VPQnZsbTFCeHRZTDY1LzVaajMrOGUyRFhwVThMVHc2OXBYZnlPQ2VJbldmSlJYek81K0dQdzAwN3daRDlxbVlYdXR5RDk3ZHNQdTU2cWdQUWUvVS9wWExpY1hLdm90RWRGRERScGE3czlBcmtPa0tBQ2dBb0FLQUNnQW9BS0FDZ0FvQUtBT084Y2ZEcncvNHdRdnFOcjVWN2pDM2NHRmtIMTdNUHJtdW1oaXFsSDRYcDJNS3VIaFYzV3A1ci93QUlUOFMvQlJNUGhEV1JxT25OOHF4U01vTVlQZlpKa0RIK3lmd3J0K3NZYXZyVmpabkw3R3ZTMHB1Nkxta2ZCdlV0YnZrMUw0aWE1UGZUZGZzME1oSUhzWFBRZXlnZldwbmo0d1hMUWpZY2NIS2I1cXJ1ZXdhTG8rbjZIWUpaYVJadzJsc25SSWx4aytwOVQ3bm12T25PVlI4MG5kbmRHRVlLMFVYNmdvS0FDZ0FvQUtBQ2dBb0FLQUNnQW9BS0FDZ0FvQUtBQ2dBb0FLQUNnQW9BS0FDZ0FvQS8vOWs9IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6IjQ4OWZmMzc2YjQ4ZDY2NDBiYjY5NzgyYTg2MGNhNzk1Iiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6dHJ1ZSwidXAiOnRydWUsImNyZWRNZ210IjpmYWxzZX0sIm1heE1zZ1NpemUiOjEyMDAsInBpblV2QXV0aFByb3RvY29scyI6WzFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjIwLCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjEyOCwidHJhbnNwb3J0cyI6WyJ1c2IiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fV19fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wOC0xMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ik1ldHRsZXNlbWkgVmlzaHdhYXMgRWFnbGUgQXV0aGVuaXRpY2F0b3IiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI1MDgxMjAwMyIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUHJvZmlsZXMiOlsiY29uc3VtZXIiXSwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wOC0xMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI2LTAyLTExIn0seyJhYWd1aWQiOiIzYjI0YmY0OS0xZDQ1LTQ0ODQtYTkxNy0xMzE3NWRmMDg2N2IiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjNiMjRiZjQ5LTFkNDUtNDQ4NC1hOTE3LTEzMTc1ZGYwODY3YiIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IDUgU2VyaWVzIHdpdGggTGlnaHRuaW5nIChFbnRlcnByaXNlIFByb2ZpbGUpIn0sImRlc2NyaXB0aW9uIjoiWXViaUtleSA1IFNlcmllcyB3aXRoIExpZ2h0bmluZyAoRW50ZXJwcmlzZSBQcm9maWxlKSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzYsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfSx7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDM4NHIxX2VjZHNhX3NoYTM4NF9yYXciLCJlZDI1NTE5X2VkZHNhX3NoYTUxMl9yYXciLCJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURTakNDQWpLZ0F3SUJBZ0lVUjM4bXEyNlNmMnN6VlYyQmRHNldFTjdrdVdVd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVJZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU5ZMFdiOW9Qb1JvS29ReVdQYUpwejExdnJXVGc2elR0bU5qMlZvS1JueXZLR1JxcHpiODN3NWw2WUE5NlVZa1lCRFFQMGlsTzJEUGU2d1dxVlI1ekRmUnpkY0g4YmgrTDdkR0d2YWU2aFJUWmhrRmtDcFhEczRIY2NrbnJEZjhGQ2xKN0hlMzlKZjQyL0cxUW0yeno5V1dtclBYdGdpSy94MDVHanNRZkd1REcxemY1UVRVVWllOGx3eW1LM1RmZE92TmVlSkFBUGUycG43SXRmUmIrclZyTldpRHpsUm4ydk5uWjJ3UG80d0gvV0o2ZGhYWkcrck1XVCthNkJvY2cxVWZJdzZrZHVuRzRiVHBaenN2YWNGWXlSMG1wZitEZU9ucFNXQW15d0pXSHZUbGYyWVh4RnllWGNUQUNkUWxjTU5HSjJWaFpRNDh4dFA1L1JCUC84a0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ2h5NDJva2lxY1RTMWlxYS9IUldqa0JuNEgvTUI4R0ExVWRJd1FZTUJhQUZPcTNRcENlREh0a2V0dFVmQU82ZkU2ZjJLRmhNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUFuK1JISVBidE1FRE5kVDFnOEgvUml0QWtVZExnQXQxdFdHV25sajlrbmJ2NC80R2xYN0M5cDQ1ZWZQTzkvYVpMNk9WMVhSS0JpNkttdEJXNUs3bnVZRW5NeC81QnFCU2JMVDdyaGR1QzQ5VEJlTWI5UEhkWHNUbFNWTlllZnIxZEdpZHI0ajB4VkJRTGIxcmtuREFiZFdEektmdm5heUtPOEZyd2U3SHg4NDNNRy9ySitjMFhydVV2YmZWVENITGlJV2hNN29ORGhMOHhvYjZ4VW85S0xLY1NMK0l0WXNPMy85V2I4UTlHanNxTDRGWHNEY0cxU2FZaDdLcGZ1TW1PaXhxekpaTzJuSWljUFlSZzFJMlN1aVVmWU83MHRtZEhjYmwra1NRbVNZdDdycTR2aUlMZzJHeDNqOXJJVHVXVGpiYVVhU1NReGdPbU1TSHV5ek1BQyIsIk1JSURTRENDQWpDZ0F3SUJBZ0lVVWNtTVh6UklGT2dHVEswVGIzZ0V1Wllaa0JJd0RRWUpLb1pJaHZjTkFRRUxCUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JCSURFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURtNTU1YldZOVdXK3RPWTBySVdIbGRoK2FOYW5vQ1pDRmg3R2szWVpyUW1QVXcwaGtTRzZxWUhRdFArZlp5UzMzVkVydmcrQlFxbm11bWdOaGZ4RnJrd0VaRUxlaWRCY0M4QzRBZzRucXFpUFdwenN2STE3TmN4WWxJbkxOTEZjWlkvK2dPaU42Wk9UaWhPNS92QlpNYmo5cmlhQWNxbGlZbU5HSlBnVGNNR2FFQXlNekVNTnkybm02RXArcGpQNWFGNmdpMjF0L1VRRnN1SjFqMlJqL3luTS9TZFJ0K2VjYWw1T1lvdHhIa0ZiTDl2dnYyQTJPdjVJVFpDbHc0Yk9TOW5weXBRaW1PWjVRQVl5dG1ZYVFwV2wvcE1ZejZ6U2o4UnFrVkRORUpHcU5mVEtBMml2TFl3WDZsU3R0TVBhcGcwSjg0bDlYMHZvVk4vRnBTNFZDVkFnTUJBQUdqWmpCa01CMEdBMVVkRGdRV0JCUWdLRkFoRzZSYVcraFR5NTJkeGVUOGJDOTZIekFmQmdOVkhTTUVHREFXZ0JUUzd1OWFJbzA2YlZ3amx6M3loZFVtOFNWN2tqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQTRHQTFVZER3RUIvd1FFQXdJQmhqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFZTXpnTHJKTElyME9vdlFuQVpyUklHdWFiaUhTVUtTbWJMUldwUmtXZUF0c0NoREVIcFhjSi9iZ0ROS1lXb0hxUTh4UlVqQjRDeWVwWWV2YzNZbHJHOG83ekh4cGZWY2FvTDVTZXVKa3pIeEtuNGJUYVNwOStNdndhbW5wNjRrWk1pTmJGTGtuZlA5a1lLb1JIa01XaGVSSjFVc1AxejRTY21rQ2VJTGZzTXM2dnFvdnFqV0NsRnNKcEJjc2x1WUhXRjdiQkoxbjRSd2crQVRFb3BZNElnR3Y2WnZ3YytBOXIrQVQyaHFwb1NrWW9BbCtBTll3Z3NsT2Y5c0plMFYrVEE5WVkvVWxhQm1QUFRkMC8vcjl3dmNlUFdaa1BqS29BQy96VU5oZkRiaDRMVjhHSHMzbHlYMlhvbUwvTE5jOEpZenlJYURFaEdRdmVvUGhoL3RyMWc9PSIsIk1JSURTakNDQWpLZ0F3SUJBZ0lVVG5iYkdJUjJOSHZ6cUlLRkFlUXdHMVhCaXMwd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JCSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVFZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU9zWGozazA0QmFuNFRZZHRaS3FEL09QSnh5RHlhUG1DQlVGVWlhWklnVHRlWm5qM1gyNURoZ3BaWlhzQzREMHlkSWNybEE2d05VSW5PUkwvTDl6QmJURUlNQVZNR282ZzdVS0FtYjJNRjZBSGJuaFlKZDllaWt1cFZOV1NoSE5ZTmM0R0JkTzFZTjZBZlVxdkpoSGJlM1Y0U05NUG1CUkVLSlBWejdUaHdnbWdnVGU4V3MySzAvd3NxdjJ3U0U3cGJDQnNVWmhJWDUxYlpNM3BxRHdKUFRtUkZFdnQwLzZ0RzVlTzhGM2oxNE9YcWZFaG1qbjFWdnhLRFlRT0xaQXhDd3dnQzBQNENkZld2M3k4UFNSOEkzNTRoTzFZK0d6Tmp2SXFYMzhOS0x5d3VJWUhGZXJPeE5seEVNQnZGaFlCdVJ1WUFra2dVYVBxTjZVQmhzSUxyc0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ0NvUkhoaXlObmJuWFJXSUw2WkJYb0JYOVlUTUI4R0ExVWRJd1FZTUJhQUZDQW9VQ0VicEZwYjZGUExuWjNGNVB4c0wzb2ZNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUNRRmFmSkkxLzVXZzlDRUVpbUUxUlA1NFJnUXdUTlRPT1FzTEFDVGUrckl0bEZRekM5WkRoclY4Mjh5WDdqenkrQUFzcDNpeks3VDF0aDJkbDdtK3R1MHN3MlBhL29sYzAybnQ2UHlJdzM0OGdhSHpoSTErMEtFNDVxeHZGRGVMMmxNeGJQZkNZdnlFRWFZemppUUVMVTU5NTFwWEdXeUtNYS80Zkx0TytaS09YaE11VmVxNHJYRFBJNTRXNkpIT2lBYWlLZGl3KzVlM2Mya3QvakZJUXRNNnZNWGc5TE5GemRqRVROdDIwVlg5UWV2UnBGWmZ1Y01HOXdDYVFEb0ZsUHpwVE1KS2hQZXYvaW1KbVpZaEtmcjBsTGNlbXRxakl4TEFvcVpkT1lmSEJnNit2QWNkUEkvaWF1R3BVQXY3WCtVS05tRHdqWjJCYUg0c0x3aEIybSIsIk1JSURTRENDQWpDZ0F3SUJBZ0lVRHFFUncrNFJuR1NnZ3hnVWV3SkZFUERSWjNZd0RRWUpLb1pJaHZjTkFRRUxCUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURJN1huSCtadkR3TUNRVThNOFplVjVxc2N1Ymx2VllhYVJ0M1liYXhuOWdvZEx4NXN3SDBsWHJkZ2poNWg3RnBWZ0NnWVlYN0U0YmwxdmJ6VUxlbXJNV1Q4TjNXTUdVZThRQUpiQmVpb1Y3Vy9FK2hUWlAvMFNLSlZhM2V3S0JvNlVMZU1uZlFaRHJWT1JBazh3VExxMnY1TGxqNXZNajdKdE9vdEthOUo3bkhTOGtMbXpYWFNhajBTd0VQaDVPQVpVVE5WNHpzMWJ2b1RBUVFXckw0L0o5UXVLdDZXQ0ZFNW5VTmlSUWNFYlZGOG1scUsyYngyejZva1ZsdHlEVkxDeFlicFVURUx2WTF1c1IzRFRHUFVvSUNsT200Y3Jwd25EUkxWSHZqWWVQR0JCLy9wRXl6eEEvZ2NTY3hqd2FIMVpVdzliblNiSHl1cktxYlRhMUt2akFnTUJBQUdqWmpCa01CMEdBMVVkRGdRV0JCVHF0MEtRbmd4N1pIcmJWSHdEdW54T245aWhZVEFmQmdOVkhTTUVHREFXZ0JUUzd1OWFJbzA2YlZ3amx6M3loZFVtOFNWN2tqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQTRHQTFVZER3RUIvd1FFQXdJQmhqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFxUWFDV014VEdxVlZYN1NrN2trSm1VdWVUU1lLdVU2K0tCQlNnd0lSbmx3OUs3SGUxSXB4WjBoZHdwUE5pa0tqbWN5RmdGUHpoSW13SEpneHh1VDkwUHczdllPZGNKSk5rdERnMzVQWE9melNuMTVjRkF4MVJPMG1QVG1JYjhkWGlFV09wem9YdmR3WERNNDFaYUNEWU1UN3c0SVF0TXl2RTd4VUJacTJianRBbnEvTkRVQTdiZTRIOEgzaXBDKy8rTktsVXJjVWgrajQ4SzY3V0kwdTFtNkZlUXVlQkE3bjA2ajgyNXJxRHFzYUxzOVRiN0tBSEF3OFBtcldhTlBHMmtqS2VyeFBFZmVjaXZsRmF3cDJSV1p2eHJWdG4zVFYyU0J4eUNKQ2tYc05EMDVkQ0VyVkhTSklzK0JkdFRWTlk5QXd0eVBtbnliMHY0bVNUenZXZHc9PSIsIk1JSURQakNDQWlhZ0F3SUJBZ0lVWHplaUVESkVPVHQxNEY1bjBvNlpmL2JCd2lVd0RRWUpLb1pJaHZjTkFRRU5CUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTVo2L1R4TThySVQrRWFvUHZHODFvbnRNT28vMm1RMlJCd0pIUzBRWmN4VmFOWHZsMTJMVWhCWjVMbWlCU2NJWmQxUm54MW9kNTg1aCsvZGhLN2hFbTdKQUFMa0tLdHMxZk81M0tHTkxadWp6NWgzd0duY3I0aHlLRjBHNzRiL1UzSzloRTVtR05ENnpxWWNoQ1JBSGZyWU1ZUkRGNFlMMFg0RDVuR2R4dnBwQXk2bmtFbXRXbU1ud08zaTBUQXVjc3JiRTQ4NUh2R000cjBWcGdWZEpwdmdRamlUSkNUSXErRDM1aHd0VDhRREl2K25HdnBjeWk1d2NJZkNrenlDaW1KdWtoWXk2S29xTk1LUUVkcE5pU092V3lETVRNdDFid0N2RXpwdzkxdSttc1V0NHJqMGVmbk85czBaT3dkd01SRG5INHhnVWw1Wkx3cnJQa2ZDMS8wQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQjhHQTFVZEl3UVlNQmFBRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRTXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJEUVVBQTRJQkFRQzNJVy9zZ0I5cFo4YXBKTmp4dUdvWCtGa0lMa3Mwd01OcmRYTC9jb1V2c3JoenN2bDZtZVBNcmJHSkJ5SjFYbnF1QjVzZ2NSRU5GeGRRRm1hM21pbzhVcGYxb3dNMVpyZVhySjBtQURHMkJwbHFiSm54aXlZYStSMTFyZUlGVFdlSWhNTmNaS3NEWnJGQXlQdUZqQ1dTUXZKbU5XZTltRlJZRmdOaFhKS2tYSWI1SDFYZ0VEbHdpZWRZUk03Vm9sQk5sbGQ2cFJGS2xYOHVzdDZPVE1PZUFEbDJ4TkYwbTFMVGhTZGV1WHZEeUMxZzkrSUxmejNTNk9JWWdjM2lyb1JjRkQzNTRnN3JLZnU2N3FGQXc5Z0M0eWkweEJUUHJZOTVyaDQvSHFhVVlDQS9MOGxkUms2SDdYazM1RCtXVnBtcTJTaC94VDVIaUZ1aGY0d0piMGJLIl0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWZDQVlBQUFDR1ZzK01BQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBSFlZQUFCMkdBVjJpRTRFQUFBYk5TVVJCVkZoSHBWZDdUTlYxRkQvM2Q1OXdlUVNJZ1M5QVFBWGNGTEFRWmk5ZnBlVnoxdFkvV1RacjVXeHBjN1c1a25MYTVqSTNaODVzclMybk0yc2p0V3daUzdJVUg0SDR4Q25FUXg0REFaRjc0Vjd1czg4NXY5L2xJbkJ2VkovQjRQdjludS81bnUvNW52TTU1NmZ6QS9RdjBIYi9JclgzVkZLUG80NWNubTRpblVJV1l3TEZSbVpRVXV3akZHL04xaVJIaDFFWjBOUlZSdWRxdDFCZCsyblNLeVMvT2h5czArbGszZS8za1E5cXZENFpVdGE0VlZTVXVZMGVpcHlpVGhBZm9jb09SVmdEdXV3M3FLUmlBZDNyYmNFdGpUallJb2Y2V2FIc0NtelZQV0NNeCtjZ2g4dExxV01LYU1Xc1VqTHFvMlJ0SklRMG9Pem1lcnBRdTRlc1pnc09Oa0d4SDdkMGtkdlRUMTdzNE9NVTdWSThaaGpnR2FNK0FxOWlFTnU4UGlmMXVkejA3TXd2S1dmOEdsVm9DRVkwNFBDNVdkVGFYWUZiUjh2TnZMNSszS2dmYjV4Tk15YTlSYW1KaXluYU1sR1RWdEZscjZiYTl1K3BxbkVYNHVNdVJSZ2pTWUVock43dXRGRmU2bHFhbDdOZmt3NWltQUdIeW5QcGJrOFZtWTB4c3RucHRsRkNWQ1l0elR1Qk44M1FwTUxqVHRldmRQelNVbko3ZThta2p4WjM5ZlhiS0RmbGRacWJ2VStUVWdHbkJWRjZmUTJpUEhnNFcxNlVXVXd2emJrMTZzTVpFK1BuMHB2ejdKU2V1QXllczhsY3BDbWFLdW8vcCtxV3IyVWN3SUFIV3J2UDBZRXpoWEF0TEFic3NIaHA3aUdhbXZ5aWpQOHJ5cXJYVVdYOVhvb3d4eUF1Zk5CcnA0M1BPQkZYWmxrZjhNRFJpcWNweW93QXdwdXoyeCtmV3Z6L0R0ZGU5c21zenlndGNSNkMxd2JkekJsNk9scTVXTllZNG9HYXRoSk1ya1RFeDBqQVJTSEFWcys1cllrUU5YYitRZ2ZQTHNRNmdYeUluc3JlUWZtcG03UlZGWWZMODZuMWZpVU9rWXZTaGtVUHh2YnVrem95NksxaWhNMWhvM1h6VzZFdlNmWEErZHBpV0dhV2QrZG9Yekx6bUd3S1lGTENBc1JBbFBCQWhNbENGWFU3dEJVVlByOEhnVmNKSFdxK0YwMHBscitETVRkclA0enZ4WTExa05NaHhUK1NlVEdnK2Q0VjVMUUppdHlVR0pOQjhWRlpzamdZQlpNL0lJL1hDVGtqMHF5RE9wRjJBVlExN0NJalVwL0RuVDFVa0w1RjVnZGorc1Mxd2cxZ0UzZ2lnbTYwZkNYelNuUFhieUFQYklYditJRHBFMTZUaGFISVM5c2t5aGxtTUU1RjNjZnFBS2hxMkMwRTVQSDFnWWFYYUxQRGtaRzBIREpPbktXSHA1MUkwejVTT3V4OGUxV0F1WnpkSFFyVGtwOFRtalhvSStsYTB3R1pzenVicWJPM2lmUTZBL1c3dlZTWXNWM21SMEpLd2tLYzRXSGlCa21SOEkzQ0NnSTg3b09MNHF6VDVQK1JVSkJlakVPZ0FQSzhoWVB6YXRNK2VJVHAySU85eVRRbWVyb21QUnh4MXF4QWNzaWxlL3ViU2VFYmNXUUdZRUNnaGNMWTJIeUtqb2dqSDI1aE1wanBVdjFPdWdsaTRlaDJlUncwTzMyYkpqa3l1Q2dOemcwdnpsWU1TaVNzMHVvbzRNRzdoTU9qQ0VhWDF5RkUwblN2akJ6dVRuRXBLODZaOElvcUZBSXVidzhrZzlBckVhUkVXU1pJK2pINFhicDZnOUU5RW5KVDNvYVJ6RE4rTVVKQlFESG41NmE4b1VtRUJ1c094QnMvTjUrdEpFYlBrQUZEajhVR3ZPcy9JV3ZjU2dsR0JodlM3L0ZUWWZwV0dZZERZOGZQQXhXU0EzNXNUQzRwNCtMbTRBYXFJb1BlUXRmdWZLNkpoMFpoeGxic1VYT1NtWE5pZkQ1WlRBa3lEb2ZiYmNjbHhuQThXTkFxeENiUk55a2hYeFFwYUR3NjdmWFVZYnNpRzBLaHR2Mm9lSXZoOHJoUU1ZT2NFQXFYRy9lSSt6bmdPYzV5eHI4cTgySUFNMWMvRkxGT3BscXU1ZUZRWHJNWnpHY1ZDalliTFdHNUk0QlQxZXVScmxieHROT3RNaXREREVoTFhJSXluQUF2dU9FV0UzWDNOZEFmdDk0VmdhRzQyWElRdDBaWDZQZUNFL3FRRmU5cks2SHg3WVU1MEt2SDdmVzRmUytxN0tLQkp4c2dnQlg1cFNBR2gxaklyVmg1elE2dzNSZmFhaEJYbS9hQ2JDWlRqQ1VGVVR5V1pxVzlwNjJNakpQWFZxT3JQZ01PNE52NzRHa2Yrb3dmdE5WQkRRbmpGSnFIU3cxN3BYdmhXVzVLWnFlL1E0OU4vVVNUQ0FWV29RWEZJSEJIWFhlM0ZQclVEc3VHRG10Ri9oSEtUSHBla3hoaUFPUEkrU0pxNlM2SEY0STlZV3prQkpUbzQ2aVVNeldwOFBpci9SaWR1THhLWXNTa3NWOHZMbE9RdmhHWDJZbFIwT0JoQmpDK3UvZ0VjdlkwQXBLN1lrNDFOeGpQU1FuV0ZIVEY2NlVyamdldkI4Q3U1YStsMnZZU1JQdHVWRG83M2hoZE1TSG5VWDd0VGpzVlpHeEFsL1dwdGlPSUVRMWduTDI5bVg2L3RSMXRtbGtZajhXNFgrQ1NqV2NVREdZMU5wUy9DN2hTS3FpTUxNL2wyUW1TV1o3M0RkeitnaW84QkNFTllQUTQ2cW5rendYVWJxdkJreGpVUXNXZlpGZ2J1bzNyQWYrd043ak9POTAreW54NFBpM0wrMG5ZTDFTY2hEVWdBUDRnUFYvN0lkMXErMUhTaG11R2tJcVdSUGd5eE1GcVA4SGZqVG5qWHdZNWJRZmJKY3Q2T0l6S2dNSG90Ri9IZTFlZ3NheEhTcUc2d2ZkbVE1eDhOeVRGRnFCY3AyaVNvd0hSM3lrNSszNmhGN3ZYQUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzFfUFJFIiwiRklET18yXzEiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwibGFyZ2VCbG9iS2V5IiwiY3JlZEJsb2IiLCJtaW5QaW5MZW5ndGgiXSwiYWFndWlkIjoiM2IyNGJmNDkxZDQ1NDQ4NGE5MTcxMzE3NWRmMDg2N2IiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJsYXJnZUJsb2JzIjp0cnVlLCJlcCI6ZmFsc2UsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjp0cnVlLCJhbHdheXNVdiI6ZmFsc2V9LCJtYXhNc2dTaXplIjoxNTM2LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjgsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4LCJ0cmFuc3BvcnRzIjpbInVzYiIsImxpZ2h0bmluZyJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi04fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotMzV9XSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5Ijo0MDk2LCJtaW5QSU5MZW5ndGgiOjQsImZpcm13YXJlVmVyc2lvbiI6MzI5NDc2LCJtYXhDcmVkQmxvYkxlbmd0aCI6MzIsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjoxLCJyZW1haW5pbmdEaXNjb3ZlcmFibGVDcmVkZW50aWFscyI6MTAwfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMTItMjIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2LCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ill1YmlLZXkgNSBTZXJpZXMgd2l0aCBMaWdodG5pbmcgKEVudGVycHJpc2UgUHJvZmlsZSkiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI0MTIyMjAwMyIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTEyLTIyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3Nn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wMS0xMCJ9LHsiYWFndWlkIjoiMzBiNTAzNWUtZDI5Ny00ZmYxLTAxMGItYWRkYzk2YmE2YTk4IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiIzMGI1MDM1ZS1kMjk3LTRmZjEtMDEwYi1hZGRjOTZiYTZhOTgiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiT25lU3BhbiBESUdJUEFTUyBGWDFhIn0sImRlc2NyaXB0aW9uIjoiT25lU3BhbiBESUdJUEFTUyBGWDFhIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfSx7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwiLCJiYURlc2MiOnsic2VsZkF0dGVzdGVkRlJSIjowLjAzLCJzZWxmQXR0ZXN0ZWRGQVIiOjFFLTA1LCJpQVBBUlRocmVzaG9sZCI6MC4wLCJtYXhUZW1wbGF0ZXMiOjUsIm1heFJldHJpZXMiOjMsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJpc0ZyZXNoVXNlclZlcmlmaWNhdGlvblJlcXVpcmVkIjp0cnVlLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJzb2Z0d2FyZSJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNFRENDQWJhZ0F3SUJBZ0lFZUtTV3NUQUtCZ2dxaGtqT1BRUURBakJtTVFzd0NRWURWUVFHRXdKVlV6RVFNQTRHQTFVRUNoTUhUMjVsVTNCaGJqRWlNQ0FHQTFVRUN4TVpRWFYwYUdWdWRHbGpZWFJ2Y2lCQmRIUmxjM1JoZEdsdmJqRWhNQjhHQTFVRUF4TVlUMjVsVTNCaGJpQkVTVWRKVUVGVFV5QkdXREZoSUVOQk1DQVhEVEkwTURVeU5EQTRNelkxT0ZvWUR6SXdOVFF3TlRJMU1EZ3pOalU0V2pCbU1Rc3dDUVlEVlFRR0V3SlZVekVRTUE0R0ExVUVDaE1IVDI1bFUzQmhiakVpTUNBR0ExVUVDeE1aUVhWMGFHVnVkR2xqWVhSdmNpQkJkSFJsYzNSaGRHbHZiakVoTUI4R0ExVUVBeE1ZVDI1bFUzQmhiaUJFU1VkSlVFRlRVeUJHV0RGaElFTkJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVDRTdqelRHa001eFQrenUraWlxa01zRllpN2d4MlgwVXhkdGFGYnhYa1BSK21zR0lITWlRRGUyaFdzbnVuV09HVEVDM3REVDkwbkFyRjhDZUZXZTJXNk5RTUU0d0hRWURWUjBPQkJZRUZFaTRnekZqclJsdnJOamtRd2syWFk2UzE0Q0lNQjhHQTFVZEl3UVlNQmFBRkVpNGd6RmpyUmx2ck5qa1F3azJYWTZTMTRDSU1Bd0dBMVVkRXdRRk1BTUJBZjh3Q2dZSUtvWkl6ajBFQXdJRFNBQXdSUUloQUs2WTFneUJtajFLL1Y1TUtEUHA0NnppcENJbHQvWFcweG5TcHNJUXZxeGtBaUI5dzhOamJvWnNTWm5lZzNKNnB3Zys5ZzJsWnRhN0h6WmpsZStMS201UXhRPT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBTFFBQUFEdUNBTUFBQUNuQnQyUkFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBNFJwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFBRHcvZUhCaFkydGxkQ0JpWldkcGJqMGk3N3UvSWlCcFpEMGlWelZOTUUxd1EyVm9hVWg2Y21WVGVrNVVZM3ByWXpsa0lqOCtJRHg0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJa0ZrYjJKbElGaE5VQ0JEYjNKbElEY3VNaTFqTURBd0lEYzVMakZpTmpWaE56bGlOQ3dnTWpBeU1pOHdOaTh4TXkweU1qb3dNVG93TVNBZ0lDQWdJQ0FnSWo0Z1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNGdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlnZUcxc2JuTTZlRzF3VFUwOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXRiUzhpSUhodGJHNXpPbk4wVW1WbVBTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZjMVI1Y0dVdlVtVnpiM1Z5WTJWU1pXWWpJaUI0Yld4dWN6cDRiWEE5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM4aUlIaHRjRTFOT2s5eWFXZHBibUZzUkc5amRXMWxiblJKUkQwaWVHMXdMbVJwWkRveVlqRmtaVFF5TlMxaE5tVmtMVEF5TkRVdFlUWTBaaTFpWTJZNU9HVmlOR0k0T0RjaUlIaHRjRTFOT2tSdlkzVnRaVzUwU1VROUluaHRjQzVrYVdRNk1EQkZRMFJETkRjM01qVXdNVEZGUkVJME1URkRNRGM1TnpNNU5rUkdPREVpSUhodGNFMU5Pa2x1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2TURCRlEwUkRORFkzTWpVd01URkZSRUkwTVRGRE1EYzVOek01TmtSR09ERWlJSGh0Y0RwRGNtVmhkRzl5Vkc5dmJEMGlRV1J2WW1VZ1VHaHZkRzl6YUc5d0lESXpMalFnS0ZkcGJtUnZkM01wSWo0Z1BIaHRjRTFOT2tSbGNtbDJaV1JHY205dElITjBVbVZtT21sdWMzUmhibU5sU1VROUluaHRjQzVwYVdRNllqUmxNV1kxTXpJdE16WmlPQzFqTURRMUxUZ3hPVE10TVRCaFpEZzVPV1F3WWpWbElpQnpkRkpsWmpwa2IyTjFiV1Z1ZEVsRVBTSmhaRzlpWlRwa2IyTnBaRHB3YUc5MGIzTm9iM0E2TWpZeFlXSmlZMll0WXpnMU5DMHpNelExTFRneU1HSXRObVV3WlRZek5USTRNalZqSWk4K0lEd3ZjbVJtT2tSbGMyTnlhWEIwYVc5dVBpQThMM0prWmpwU1JFWStJRHd2ZURwNGJYQnRaWFJoUGlBOFAzaHdZV05yWlhRZ1pXNWtQU0p5SWo4Ky9CUVBud0FBQVlCUVRGUkZXbHRqTFMwd1cxdGRURTFUWm1WbUl5UWppNHVTYld4dFZWVlk2T2pvR3h3Yk1ERXlSRVJMU2twTUxqQXhrWkdWYkcxM05EVTQvdjcrdXJxOHlzdk5lbnA3OC9QeitmbjVVVkpXTEMwdW1wcWNjM0p6WVdGaXFxdXRpb3FOc2JLelFVSkdsWldZT3p4Q3dzUEZNVEkwTkRVMmc0S0VvcUtsT1RrK3JxNnlLaXd1aElTS1pHUnJmSHlCMGRMVUV4UVROemc1TWpRMTI5dmJkWFY1bloyZ0tDa3AvUHo4cGFXb3pNM1BPRGs2dGJhNFQwOVRQVDQvS1Nvc1lXRmx4Y2JIQ2dzS2JHcHN2YjdBUjBkTVYxaGFJQ0lpYTJwcUpTWW1hV3B2UGo5REppY3F4OGpLYVdsb1MwcFhaMmRvejlEU1hsOW11TGk2YjNCNE9qczlsNWljdjhEQ1IwZFFqNCtVSGg4ZFpHTmtoNGlNWGw1ZzF0YlhGaGdZcjYreFptZHZaMlpuYVdocGIyOXdaMmhySHlBZmg0YUlZMlJtZjMrQXA2aXFFUklRRGc4T0xpOHZGUllWU0VoVUhSNGVNak16S2lzckR4QVBhbWxxMytEZ2EydHJKaWNuR0JrWSsvdjdqNCtSYkd4d1kySmpsNWVaTHpBd0t5NHVhMnByLy8vL1M1WXBPUUFBQUlCMFVrNVQvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vd0E0QlV0bkFBQWZXa2xFUVZSNDJ1eWRpMXZhU052R0RRU0R4TVRpRVR4R0c5VFNxckJJTGFMMUFIeFVYVS9GRTJWMWdjVmpsRkFLMXRyZy91dmY4MHhBclFZSTl0MlZ2YTVPSU9SRStIRnp6ek16eVpBMC9QMGZUQTIvb0g5Qi80TCtCZjBMdXViMHR1bTNMNVhTYjAxdjZ3NzZTOFFVS3BOUzZrdmFOVjVuMEY5NEoxK29uSnloK1M5MUJkM3FjWXFGQWxVUk9oTTZqZFVWOUZ2T3lsZFYyclN2dE5ZVGRKZGdaZm5LUW9QUysvYTM5UVQ5dFZrVXF3aGR5SVRQNnd3NklJclY3RkdvTzZXRjZwN09tUDZMMEhWbkQ4RmEzZFAxcG5TWERxV2RvWHBUZWttSDB1SDlRbjBwdmVUV2tSSFA2dzFhVjBZczFKazlxaGN1VGxPZGVWcVAwczdRZnVhWFBYNCs1SWw2YW5uL1FYdVk2akFqL3VmcUh2cVUzcSs3RWxGUExTL1VXV2NsSXFzalRvZS8xcG1uOVNoZFg5QzY0blJvUDE5bjBHSjFlNFRQNnd4NlJsZWN6dGRWOU9pMDZpb1JMVjExQlMzcUNubjduZjgxcFFINnNxNmdmNk4wbFlnVFRmVUV2VjNRQTMwNU1WNG4wT1NZNHFSVGo2Y3ZUOXZxU1dtUDA2VkRhY3RwU3gxQnQzSjhkYVVMSWN1NXJiVitvRHROdko3bTFyNGwzRlUvMEgvc3UvVmtSSXRsNGt2OVFFL3BnVWFsUHgvVURYU3J6U0s2ZE5UeUxPa0pjMnU5UURlbFUxQ01WMjhFWElJL091c0Z1bTBpcmF2dVliRlk1dWZxQkxvMXVLOUhhUWg1bHZSWnJMVStvSnYyTFNGZFNsK205MDQvTjlVSDlPRytKYVVyNUYxYVVoTm5MWFVCM1JuZVQ2ZjFRSU05VXVlZjg1MzFBRDAxQVY0VmRTbWREcDJmei9mVkFmUlhYenBsQ3J2ZHV1d1J1anovUFBQMithRTdsME5lSjIvVmxSRXQ0ZjNMejZHdTU0ZnVtZzNsWjNsOUdURnRzdXhQbU9vQ2VqbnNMRmgxbkNnS0VhVlBRMS9yUk9tQ0Ruc1VpRDMyVCt0QjZjNVpVOWhKdVhWNkd1eFJMNTUyOGpxalI5aHllUnArZm51MERvakw0ZVZsWFVydnB3RjZQMzNRK3V6UU1XcldJczdxTEZ6UzgvTm5wOEt6UTc5ZG81YlRWbkcwZWg4VnFKcnVtK2JQNWsvOXp3LzlSbHhPVTBPam96cVVUbHRDbHZsNmdHNEY2SkExTWhUNUFWcXJENVp6T1pST1pTenpFMXdkMkVOMFdrZGRMamZQU2hLZzhSUXZGZUFMd0xqQUY4Z3JQbkRHbXcrYlFrcDYvbDlUdXZYdDE2NkhpU3pwcEsxV2wzWFVpakVQRTNMZWpjbXpvSzRvRkdhOXk3UGVUTnJXK2ZYeHpuQi9iMXYvWjlCZFRYKzBUYjcrMEdCYnRXRmFMYjdhL0xaaTR0d2lJTE5GWnFJeXI2cGM1QzJ1b0FyT3dxekY1VGNhTHppT0Mrd1lPYi9OYUxRWi9jWEIvTWF6ZTdMeXBhdjFaNkU3eHljQjE3alRMQ3dObFUxV3QzaUhWaWl4OC9lbFYxZlpseTJuMXRGUjE2aWFoa3JqU0hFQnJsa3lmcHByYW4wNmRHdFQzNHVHaG9zZG9SbDJiSzJRc0ZuTDNub1hIM2RUNmd3TWxOMGJzdXpQaXFLVkRLVmtKWS9pQXB5QmI5WDg2YmUzVDROdS9hM3hUWU9OYXhhR0VCajJ5SW9VN3BpQ2dlWHhsVXp5WkRua3Z6SlI0MjZSRXp3dFVwUllISGljTENhKytIUTZLU2VCSC8xcnZQVUowRTFiZnphc2N1QUtvckVvM3ZzSS9FRDRDRmI5Wko0dmZXeTU1S1R1M29sejZuQTdjcXFiT0tuWlluTEM3cTNXajAyMVFyOXRHM3ZUY05HOHRJUytFSzEzd0QrQWxFYjNHVlFNNXgxUmFYN1dPVXZOVWpBaWt6aU5jMDU0d0FoZXFHWG44dXd5SkJnQnQyaGRtdnBhRTNUVDRJc05ZQjRxZWhsMTVzdnJSd0JMeUNYUXUyOVNSSVpOVkdZeXFaSTZTeTlra2lBdlkvMExzT0Zuc1FhYmFvRCt3L05uZzIxSElNeWpKTjlZclE3dFBPaFFCNGRJNXR6RlpTUnppZzYzMncwQkhOOE8wMVlScDl3a3Q3bko4Q0N4TEVzNWw1ZEQ0ZkJ5Q01qaHh4Q0ZkYjNRYncvR1hqUVlBMmhuWklieURrbzhTRDRZSGlVb1dXRHNjTGdjTG55UUo4eGlpV1BGaFZaNE9oeGtKU3gwL0pCa2ZNZ090OFBobHRVcDJTMno5dVdRQ2FsTmVUREphSnMrNks3SjE4Qk1Bak5HVHA5S1hDSi9BRXlZSGZjWEFxY3FOMkc5OXlRL3lBL003anRXOGdySVdFNkp5ckxKWkFxRlRXSHZMRHM2clFPNnRhdTc4Y1dHZjZjWmRSNzErUjVwYWlXNmtubXlxRVNDbWhKSnJZVHZBU0Q0eDRGV1VTRWh3VWlXZ1JGQVpSRW40WVU4Y05xaExLZE1JUmlXblpTVzFvK1Uzbjd0SWRGWmdLSUtWQVpxSCtqcGltQ2F1ZmQ4bkh4a05JcXZQakxyVXgvcTY4UDA0RmREQTRINEZLdCtBNGNkLzJWaU1vVm5LZDk0VmVqT1JzOEdtQU1DeHhEdUdLaXRyc2lNRU9EOGZxeHRxS1BTNU8xY01ka2V2RDVNeHRzcHJqaVVsc00wQjg4QU4rTldpT3l5WWtvamRuald1ZFJVQmZycjd0aWZabU9nZWFoNXlLZTYyQmRaQ3BnTnZkZHI4YlY0ZkcwTkg3L0RhTzFvalY0N2lxOGQwV3QwL0M3Uk5NekJ3amk5aHRPMHVoM01IdUZvalF5d0JZNGZwOTVlUTlEczUxeEY3SEFhLzlaam1xWFczbGFHbm43OXNjRjJzUU5LdTBpczhQa0VmeXpMNUpJTWt5TkQ4WUhQaFlVY3M4REFLTGZBNUhBeXQ1QlRsK1JnQ3FkaGJnR1hrNDNJQ05iZ0ZyZ0pic2ZnU0YyQ3EyRzNkQXk0SFlndHNpcDEyTWtlVklSdTZoaDdZMXU5YU41cFJwbmhFZUd1R2Z5b3grbm1uMGtNYzlNYkRBcEk3V1pObGxRS2NpTVZhYW9BM2RvSTBRNkV2dGhSODRsVkNDYi9WV1NWTzJzdytDVldaR1UyWkVtRlVwQVpoMXZMUTdlL0hudGpOdTVjckViVUhDMUVrLzg2TXFRUFRHL1F4cklRLzZSMEdpeGljcnAvS3d2OWRReUVYalZlckE2cHpOeGE4aG1RaWRqUm9FMENxV1d2QmFoTnk3TWRyZVdnNTFCby84WHF6cWpxamQrZml4bXBZNXhkQnVxVUpaMUttYnl1cG5MUUIxaXVySzZ1TG1IUlovWDFKcDhMR2FsN0RZTEVzbklHcFE1NW5aTmxvTHMrTmI0STJveXJPeVRZeWNIazh5RWpkY3dnUTcyUFNBMnV0bjNWaHY2dDR6VzByeTVXbDlBY3NwQmpuaEg1NW1aaHpVQU1rcm0wb0t2RmNXM29nOWNmTjh5cnF4ZkUwWTVZOGptUmlkUXhLR1JZSlczWlM0Znk5a0ZONk5iZHhoZG82V1prZGd1TUZuSVd5dVlvSFU5VS9jUUVia2ZyMlE0Mmk4YXptdXNNbkFSaEQwLzBwa3l6aGxZdDZNNnh4ajlKTnNTS0ovdWpvMHVma095ZmZOVTMwdDlUQlNlZU9CNDhPZWo3M3BHZ3F5QW4rMGY2RGliN2sxbzdaR0pCQmVLSDZnOXZwRk1MK3NzWXNmU0ZXaGpHbVVmTWNXWmtwYjN0NEdCenBmMmtwd0pOTmo2OCtPN2x3TUhBeS9XMncwcGZqKzZaYWwrWjdudlYxcjR5eWNRZnJjNWRHeUtRRXdzV0NDQ2h2T00zTGVodGdDNjVRN3puanR1UDZKaWJhK2tCZjhTVFZ5L2JoOHRTSjdJbjR5Y2RON0RkVFVmZitGUzJMRFY5Mkw3ZG53UWp4WHNHNStZNmFBMS9DQkpreGZRbEZPWjVhVnNMK3VUMTJJYlplTkVNUWRySCtwbUgyWTgrWHU5am9va2JnTWhHYjBiR0Q4dFFaN01IN2NQUk9IZ1YzRW9QdHc4a3NtV1krOGRIYnVqZkNWMDAyZmZ1K0pIV0MxZ0ZZZVVRbURvVXBxYTBvQWNieHpac3hndFNoQ3NsUzkvWnRLZjlCSC9xUk1jeDBHYWprK3NkY1cyV2tYY2QwWGl1Zitwa3BEOFpwenZlaldoL3UzakgrbVQwOXZ2RTZiNlZaT0tScVcxb2FoT2FPcHpwMTRCdWJkejlDTkE3SkIveU1lWkJsS1A3dG04UzZOZkRka0lkSDlqVWxEQSt2TjRmcFR2YXByOWZEUjRzRHRQMDRiam10L3UvK1BSQVhJMGRVVFhRYlBmUmowckZvQWhLaDBsT25CM1dnbTdaL1FpMXBSMml0TmpML0JpWUU1NzFUN0RQSEJNZFhuK0pQMlI4YkgxWUM0WitOVTNITytaYU9rWU9Sam9PNTQ3ajlNQ0JsdFR4dy9VT3VtZXcrM3QzTno2dnZrVVAzM2tlN0pDNURtS2htTCswV0NCODlMUnFRQTgyUXFObFI0Vm1yNWtmM3gvdGZubVRoWjkwcytkNDRIdTdCelNQVDU5b3dDUjYyZytqek9MVjRkeFV5OVRLVlg4YkUrMXY3OUhJaS9USmREeCszSDV5TWpVeWRUSjFNTmNUdjluZW9oOHEzZUFHZitUVm1IZWtCZDBDWmNzcTF6eUVSelBrM2dmUThla3AzR05pY3JHbGJYTUUrRy9vN3Uxc1ZrUEFsWjdvWVZ2SDluREx5ZUhoeXZGbWZ4Uyt4dU9mSkh2ejhqc2RQOTZNWDErUGRmVDJNb3NRMHFlbTQxcjJFSW5TSWU5YU9XamJCVUFEdGZnQU9udXorRDJLcjNSMysvZ2tuU1daLzNIT2dhV0RpMWw2Y21xeSsvdkE0Y0NuazZudWtXanU1YUJHTkV2TzlkT0o0ODJiWlBmNllQYlFzeklRajNZdlBsQUJhbnBGZTZEU2REbG8vd1hhNDdIU1dXYTdoWHh5UE5uZTdxRkxtbXBBZjE5TVJLY212eDl1SHJZYzk3V01ESTVFaTkvM29ZMVdodVB4NGMyZTdxdSt0cjcrWlB0MGdyNUNCejVRR3V5QlN1K0IwclMycHduMEtDcjlDRHJSTmtuczBiTTV2YjVJTWd6ZFA4Yzh0Z2Q4TWhPZEdra20ydzQzUGRQOUhZdUhORE4zOVZqcGJCS1dKbzdidnQzRUpnZDZlcE56ay9Ib1pGdmlzVDNrVzArdlZmSTBIb3g3bEJIcHZnRWFtUmRIamdjbTUxQml6RWthUWVHNDNYTjlOZEE5T05MZFBUSThzTm1kaUhlOE8xN1QySEJ6SkJvL1h1em82VG51Z2VjaWxJelRmWm9aa1NWS1Y3Q0hiUWN6SWtTUGh4bVJKakVnNFJtTURrUHRBeVRPNWw1MmEwU1BMRFBYSGUwWkh0NDgzaDd1TzdrQ0owVy92OVQ0UlVnNGd0QzR1TGpZQnMvdHhTU1VYdjIwVnNpVHEzbGFWZHJoRUI4cVRXQ3dUSWtQLzlHWEFLR2pMZTg4V3JVS2VuS09TY1RqVUJ4dTkvZVBlQktRNHlhak41cXg4U3FhUzNwQVpud21iNktUait3RzlpaG14Q3BLNzR6aW9jQ0gwUVBOT2s2cU5QSGhQcXdDeFQzdGs1ckZjeUs1TWhYTkpub0dQQjNUbTU1NE5qcWxGV1RJdDJ2L0dFL2NKcnBqL0pIMVFXbTNHdklxZWRyczMya2V4Y1Bmanp3TldmRmdwUU8xVGpKbzZKNlhtemZhRlNGNmVMdzdta2prbUhqMjJBTnhiTHhNZlRCNzA3YWRMSzNLUmozdGZZK3FCZUJwOFU3cEtoa1JXb2lQbEw1SkxBeTh1MXFMcmlXZ3hnQ1Z5clprdVNvbi9DWjlQVkVhMUx1Tzl2U05YNVdyd3lhU2JYUEQ4U2pLSE0zMnJ4LzhYK0p4aTd5azlGNmxFaEV6b3JZOTRFTVNrK3R0M3lHdkgxOXRyazh4OGZKMSsrR1g3U2ZEbmg3UDhNbTc3ZVB5cllVNE03WGUxb0x4WTNCN3ZUdVIwRGlNRUpRVnZTSFA1ZEJRR290RHo4aGNlL3RLKzl6SmNjWDJWbnpoYXJwOVpRVmFKVmNWdmh1MnRvNVA1bUIvSzNOVEhiU0cyVEI2eURwS1JGVGE4YmdZTDZZMU91Y1pIdTVncXJWWXM5QVlPUjRlNjFtanM1VTNqTk5NeC9Dd2g2SGoyZ2RzUUdsRkxOYnlLc1hwVVR5UFVBWWE4Mk04SHMvcU9BQUEyeVVTT3JiREhaWnIyNkRTaWx3dGVqU1E2QUhGT0ZzTyt0ODk4b0Z4V21HclZVMFJHazlPL1JUMEFsTktTWGd1L0N5MFhDbmtEUmJ0Z1djcHhTZERBMmJpMmhDMEdUbU9NL3JOaG1zSTdNeFBRMWN1eGk4QTJtcDE4RStEQnVLb3djOEpRNUZSNGpLcmRUU3l4QVhwSitxdGhyeFM0Ukt2RkQzd3c1NmtOR2hzOEFlRUdmVXNxSHBHRkx6bXRvNEdERGRQd2I2RHhvWXRYZEVlVDh5SWdHd1VsZ0JUVmpLbVVOcUNoMmp6R1ZaMllLZVRwZUJOOGllVkxsKzRZSVhKK3BTTXlDekUvTTFMRHJmYmJybzhQWnVINGV6czgrZlBweE9Yb1l6YjRSYkZKVVBOM29hNlI3RkVCT2psM3l2YUF5dE10VUl6dEpsYmNzaHMzaklCcUovUEVQbjA5SFRpOVBUejJlZHprd0xZYmk1UjYwNHhUcGRxZWJPVlFsNEV2VmdyTkJQekIzd3lHNzZjZ0hSNmlzenpCSHZpRkwvQi9FU0lkYmo1U0l5cFhXa1NQU3lWN0ZFTWVUVkM1NWlnVFhDN001YUppZlB6Q1pENjlCd2R2WmUyWEU0UTBlRWJUT1JsTjJzMU03a2FQWDFYOXpncTI3QWxoVXVOMExtYm9HMUdGazJYNStmSWZKN0syMEVmQlQ5UHNYdlQ1MFQwczdNMDYyQjVXeTNVcWowcUZpNHR1NWdSMFI2MWVackpCVzBSbVE5WkxKZUF2ZWRsRWJhVVdGbVU4dnRuOCtqemM3dERwUHcxeEw0ZmxkYU0wNE83TDh5MlFPMzJ5QVhORWJkazJnUG9jOHZzUGVCYmNNVjdpUVkvTy9VQ3RabXBMZVRkRnVQMC8xQnBKZ2JNZHBNcEJkUjVSSVlxem1QczhDa0V3TFBQZVlmTUI1TTFGZU9WNHpSNDJtemNFV3FFWm1KQlFiU25RaWJUWHNyT0VtQU5hb1hOWENJMWFNMWE5ZSs3ZXVFQzltandxL2JRWHlMbWFJTlJsQ3dXazhrVVZqU3NjVWN0SWZYbkNidWJHc291MUdLUDRxSGUyVXJRdGNWcHhoQjBzSmNUSUVWZVMrQjdTVllzWjFEY25Jc2l4U1ZyaFU1WFZCcnNnWDBDOVVJenNZMFpoMlVlQ210VFJXSkN6VnF3a0V5N1dWRm5JVU9nK2FyUUpIcFk5ZHNqRWJPSnMxalJzQ2hWb2RFaFdFUjYzWkxBNkkzVExLOVU5UFJXTVhxSVZvZW9FNW94OVByazAvbjUrYzhaV2FtZTJNd0VRRit5SW05STZsUmE1SldLclhHRU5xck5MYjFLZzlBcy9uVmxQcVdIR1J3U0FuK2NodDJVUHFsQmFWR3FuQkc3aS9ZQXBhMktMbWdtOWliQ2ZnYWhKeFM5Q1F4eXVnL0ZwTDc5UXpIT3M1VTh2UjdZOEpneDVFRjFXdGFwZEs5QkRBUHpmSmpWeVN6bTBkVjUyZTVuOU5xamxCRTFxNlp2UXVLZnhCN1l5VllYOUFLOXhvbjdOUW1OVWsrY1dtVEZsMlYwUWxkVXVzZnRhb0E0TGVpSFptSi8raVFVT2lUclpwWk5BQTBsREd2UUI4MnFTcGVyZXh4L1lENkEwZ1Rhb2N2VHVmY2JZZ2lZenlSV3Y5TDJjNkEyeVpRZWYyQkdWQ29lckRubXVJYUcxVUN6ejZGWDZYakN6RjRDOUxsWWd6MlVQV2phcE4yOG9GTnBxV0tjN21GbGppZ3Q2NFRPMGQ4Qy9PZmEzS0g2WTJLZlpWM3huQTVvZzNoWFlkSlN1a09VdVEyanFyU3V1c2RDNzdlSUhTM3RyY0VkQ3V1RlZ1UzV4TXJYakw2UVIxWEtpQjVvTGlNMFVWcVBwNW5yRDlabFl1bGEzS0hZOXlmT0oyWjE1Y1M3NkZFdUkzYXdiaVArNVFLVmx2VXAvVjQwQWZTcFVsdkM1bTllbE15TUxudEl4WkNYeW1ncFBVWTVMalpXVmFWMVJZOWNMTVppOE5pdmpabTFnTkpodDJKTDZndDVwV0pjVStreFhqWnVRSndHcFdWUmx6M2VHOWdVUXJPMVVhZWd6VzZ5VWphbXhxcXBwajBVMlFpMVBJalRWcXV1V2w2dTE4RHVZY1NyRFpvTlhWb3V3N0tlQmk1V1RhVmlKeFh0cmhQSGtwdkRSc0NvVzNSYktUMmVqZ1dmcEhUSVlyR0VSZDZ2eXg3eVhZbW9CZDJCOWxodGhscWV3NjNQSGpFREtSRFBhOHlJK1ZBb25XRjVuVXJ6dDkyQk5ET2lCUFpBcFVXM1cxL0k2NDA1c0k1M1dsdklVOEI4Rk1XeVFhYTJXbDRacFIzY2h1cHBVU2YwZTJzR0dnQm45cHI4SWVQZkJVVkZqdFVhcHpVOVRhSFNBVlRhSWVzNWZaRzdQcHFoem1xcFRXT1NITUtTTUNUeXJpT2RKV0t4d3FTZEVTSGtvZExOUHF2YnJRK2E3bTFtendGNnI1YTZoMlRGRXpLc01xUGo0QWNxTGJHVkdnR2V5L1RTaHIrNTJTZkxPbXQ1MlY0YmE0RVc0Z1JmazZYeG40cXN3dW1ybXNvS1Zja2V5ZE9KQVBHMDdOWVhQVWo0Q09OeDNGcHFUQ3drN05abzAxVTFOYkI4eFlNMUhmUG5RU2dSbTEzNDEwWjkwTDN2SS94bmJJdlhBRTNaSVVITjlGcG5JNkJ5Yytzd0hTSC9uUngxeS9wQzNzMU5vcGREZjV4TjZHKzZTRjVJVHBZVjlCek9JNFZMeGFwcFY0L25Zd040MmlVNkhLTGVRd2dHTm9PSHVreTZvVFA1ZkQ0c3NRNmJucU0xZDBwRDRiSmM5a3lBRVJ1MmJsbm5JWVRjZFV4Z0xhZm41NWQ2cFVhaDhkeGloTTdkNlBRMFh3cDU1VTh6QjlRU2tkSjVMTThRNUozbis1ZVhKcDFDRnpKQURVSnp1ZytMVlRscVNrN0pCUVFYL2hGVzBYa3NyemNtVUtGemkrWFNxMC9vVENianRZUFFVVVl2dEtxMHBXS3YzZ0NHUE5tdDk0VCtnc0hBVWhiWXFVVmZXVjZ3WndvSzYvRHJQbXBhNWJDWXFuUXhJN0k2anlDRHF3TzhGNmd2MDFXcHdSV3lJdGtwM2pFVDEzZGVEajFkdVhBQjZJOW1jb1JKbE1VYXpnVEVmQ3hla2RLU3FrSXR5VE1SYUh4S29od3g2TjE1YjBucHZWU3FmRWFFT08wamw4UFFmVEluQ3dhQnhzZ2UvSUtaU3RTU0t5RE0rRnd5eS9yOHVrOFVxUWZWdzFYc1lTVFJ3NnBmNlp0Y05HYVcrSkFsbmQ1TGxjK05raElKQkRoQmNBR3prTkI3MGhhVmxnZzBLbDBPT21oc2JyYldwalJHRUU2aVFtbE1KdTE0TFVGOUZLOVMwenpqcGx6Q1VRMjdEc0wrcUhDRmMrTlhhc2dieFN0RDFOSWRpSWtkY1pJUzJrdWxVNmxVWG1MNXg4Z3pIRW1DTExtRVdHMW5iQ1dxb2ozSUNmMW13UVZDeTFJdEovUVp3M3MvUkZQNENWT2hrTWxyL3dFWVlzWk13TTl4UnM0b3NMeFBNTlRRd1FhVnBoUStYS1czR0hqYWhaZFZVR3JxT3NIRWVzMnNraUgzeVRTWndsNjdYU3Fkem5kRWxnS2Nlc1dBQ01YT2NMRmFPZ1VoTk95cWt0SmJhdUVDMERKYkd6VDZlaU1pOGZsUXltUXk1YjNlREh3VXRDVmN2cGtaSVNBRWtGbHcyTUhZMThtYkdxRUxQRjhKdWx1MXh5Z0xGU2FsMWo0d3RHR05nMWFHRjRUTzV6TUF6WXB1bHk4U0VXWUVEaktoNExMemtXWmJvdGFlTlVGVzliU2xnajJDUkdrb1hLaGErekRsYm1Mdmp3U0s0alBldkRkRGxIWTRmQkdpdEREaktFaVJaczVRYXpjMzRtbSs1R202bkQyd0dFZG9wZll1YmlEMm05NkFhSmNrZThadXAyU1dLQjJaOFRsNE96dkVjZVpFN2J0RXBTVTFlcFQ1UjlGMzdGNGZXSEtCUFZqcENmM3ljbEFSK2VzdjdFZ0JHWkZWOEZvR2tEbWdiZVVMY1A1ZzlBbWRONG5TdHhueHFHeEd4TU5pSURYMXBHNmJDMHkwTi9yaW00RVRmRzRXRDJqSnJraUFzNW5OaHZpVCtwdXE1MXo0cW5FNnNJUVo4U24yS1BZYlMxekhqcTdmSEIwZHhXSUdTQUFjbzIrWXAvMS9tNFM4MjR5bzJZZHA2eE1xTFZqUjA5TFR1eUtEcG9ub2RheTM5LzExYit5YVRpdzh2VFB5WGVGUzlvVCtvRnJMR3dVci9neTBLcmg2clpXZjZqMWRDbmxLcFJLUktMMHo1QlBSSHJFNjZha09HYkZLM2VOYkE2bmx5ZUtUUGYwUFFQTjZsSWFNNkdhcHVvRXVTR3A5T3FRZDhyNFhsV1pGa2VYckJscjFkTHB5dnp3SWVRQmRQMHJmVlUzcE1pVWlSZytpZEQxNW1nOVg2ZFdMY2JyRzV0WS9iUStTRVMwVjRyVFpCaTBYUEh3czlkWmZ5Q3RyajFVQ0xkWVJkSlUyNHZkUFJVK3pjajBwVFZyamxrcC93VFkyUTlWVXJpZDdWR2tqRHBMQ0JaVUdlOVJOTVM1VnJrL2Zaa1M1anV5aFNCSlZzVFZPbEFaN3NIVmxqMEsxcW1uUVNKU3VJM3RBYzAweVZjMklXUGVvRzZWalFkNXVyNmowVmFNSDRqVFVQZXBJYVJ0UGdhY3RwTzR4cG5YNWwzNjgwQTZKSHF5Y01kUUh0Tjh1VWJ6SnNsZnVRanQvWDMxNi9XYjFBcHRib3VpMEplc0JPc2hsaUtlaE9wMVh2bXRCVDQwMS90bHcwVHdLN2hBemdYcFFPaGNVbkFWS0lkZjV5OGduV3REVG50MFhObVB6RUI1a29TSTNDOC9PdkpDd2pXYWtBcFZDUzJkY2MxclF2LzIxaGNkNmgwQnBscStIdWlsWW1vWGdrZG16cEZJbWUrU0w1bFhjRmdZeEp6WmI4U3JwWG44ZFFKc0ZPeVZKWHN2ZW5pa3ZHYnMwcjVkM3ZQdjZUN01SY2lJdjhuWnJOdmZjanFZNWx4T2lod21ZVFJsSGgrYjE4djQrNlJuODJBQ3RSTHhPUFR0clRqNjcwQUVRbXJMdlFld0lTNUUyN2NzcE52VnV2Y1pJUGNwRHFMYUxhODlyRUlZT1dFRm5KYiszRndwNUhWeVROblNyNTFQamh3YXVlUWlyVE95czhMelFDLzRoTzFXUTdLbTlWQXFFOXJ3dGQxM1RiMXVlQnR2TzBpajJOT0pubjdXQVlZSUNWcFlvN3g1ZWkxVVcyc3BkakxYemFPdjFCNmpwcVZJWHFPRHphYzBZbGtRN1pVZWhRNkd3M1dmckxIdUI0YW14clk0Tk01U0tSV3JETTJtZEEyYUh2U0FWRk5OZUNLb2REcUd2L0ZXUm0ySXR1OThhL00xTGJrSXRVV2JtT2NSbUdQT1FJeU5SbEpRSGI1Z3k4a3lzcWNKRnMvdis2bjc5QnZPaVREclFTVTdoS1Bsdll5OHcwY0NvREhhV3BFd3FCSVpXSXY2RFNsZjY3b3ErM3ZKZzJJdUlSR3ZlN3ZiSEdTYjNMNHFjak5xR3JPQm1pdUtkZU5vNmIzZHhINXNxWGxOOTNEQzU5ZEdBRVVSVVZHeW5OV0JJRksrS2tpUkQ4Um9weWVLaSs4dUtVOFhycUNSTDcwamVYM0gvZmFVVnhVMlN1WGlNbTdGQ3c1Q2lDcnlkblA4RlE3OFpxSExKL2NteDZaWVhEVFpPaUtpK0JvL1lLWmRndEptRHdhQ1pERUYxeWx5YXZWMUtwa3VyZzdqRjNYdlVUZTV2VWR5SHVUZ3lCMjFtK0ZTclNFbDRMaEs4WVNMbjJSMHp3Y0d1S3RCZlBmM1RMUitndHJkMFM0MDMwcUI0Y3JjWmx0eUVodHlRaGhXTGkzaFI1SEVTTzNiQnE3cWNGK0VkOEQ2Y0lIZWNJVGQvZ2RvakxHUFZXOEhnVGxteWpDTDNBNkxJRTNDcEFnUzdndGNVQ3VlQldiQjkrbEwxamd5ZHNjWUJvUFlIaElnYStWZ0ZUd255dktMK2paWlgrNkZRc0pDSEdWaEZLZGc5Q3BDTEd5aklJbUczQ1VraHQ2dmhKUjdtWVV3cFpCbk9VZ29NbU5tdzFKT3dCMnFoQUJxREx6QUw4czV3Q0dUT0tDN0JQUHpIMitvMzdHZ0s3cjVxK1JDMDdRU0dSb3ZaRVpLQ25VOTRsUm9sQmNId2ExQ0lqR3NKSzRLVGRUeEJSalJvNDVFSjBCTytBZUlUY2g2WmVWSWhBa1lvK2dwMm5NRnZZUWR1TDNabXlPREpYdk53MTkrdE9tNk5ndFM3M3d4bUxqQXpaQldKb29yS1hFUWlQekdMY3hSYkZKMVNmd0IxVXdJSmlTaGRSTVZaZ24vM0F4UlVZQlNhRE9CakNob3FrdE1iRGlPeTRwamhnc09kT205QzAzUjA5V3B5N0wzWnp3bExveTRyL3ZHZVYzLzFvajlVMFZGZzlDU3hpZnFDMmhmdFFCQkJUcnlIa1lJMlVKZVFWWGhmTHRVWmdLcnlvamxRY21mR204OTd2WGE3SWtjRVk3Qy9VL2VkY3pxUHgvcE9Qb0ZGaklJd0ZIRmhBMHlWaEl4Z3NPTWt2a3JxRTVkQTdzRkJLMlVlTFNoazdCbFltbEhmQXpOT3A5MEppN3pZd3dXSVdZZFA0TXk5VTEwMTNLT290ZS9OMXFzdHozdXpqUXNJTXhHZlE1YXhueG9hVWNHY3BFNlI2ZUp5MGw4SmYzbEpNNEZSaTFPVWFselZFL2dENEJvN1RwRkNVQ0tkaUZ5UkpjNTI5SEdsdGJaYldIMzVOblp5OHFubmpRR3hoWm1aaUhwTG4zdlhXSEk4dXMrTTQvNzFsKzdQdUJ3NmtrdVcxZGRJUkJBNFcyOXlzS25tKzI2OWJldHBmRFUxT1BZaFp2TnpBUUlPYVlrOFp1Nm1sMG92UDZhbHBlSVc5NWZkdnBiMkVpSHpRK3BFNlNrRU9Gdnc2Sy9EOXJkUHVTMWJWOXZZOEt2TmswOGYvM3B2TVB1NW1sSWd3QVZnckk3SUF1NTJsZ3lsa2ZxS2lTTWR0RGkvT1hhVTlBd3ZkajMxQm5oZDcxckdKZ2RlVFcwMWppV1BZckhZUm05c0kwWlNBd3lZRERncUx0TklEYmlGZ2ZUOHVKOWdVWVBoVVlyMXZqOWErMnVocCtPNFphWHpaKzdhMTlxNVByblZ2VFV5TXJYVnNydmIySGpWQ0dtM3BRVm1XbURZSFJ6OFBqZzQyTi9ZL3dsUy8rN1dJRWt0K0d6cDM5MjlncmQ4YXV5SDk3VzB3QkkxNFdKWWdldDJyMkFNKzRYWHhxdXJscXV4c2JGUGszTk4xVzQ1WGYzK2lLMXZPNXYrMkY1Y1dWOS85KzVkTzZaM01MbStUa1p0MDIyYmJac0RydzRnRGJ6YXZKZW10MWZhWVB4eVpXVnVaV1dsSGQ2S2I4Znh5c0RBOUFDa2crTGpBTWZUQTlNSEJ5ODM1NXAwM0I3eGYzRm45d3JmOXgvYTd6OEsvZmN2NkYvUXY2Qi9RZGRWK244QkJnQzdDbVlkaDZwWXlBQUFBQUJKUlU1RXJrSmdnZz09IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMV9QUkUiLCJGSURPXzJfMSJdLCJleHRlbnNpb25zIjpbInV2bSIsImNyZWRCbG9iIiwiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsImxhcmdlQmxvYktleSIsIm1pblBpbkxlbmd0aCJdLCJhYWd1aWQiOiIzMGI1MDM1ZWQyOTc0ZmYxMDEwYmFkZGM5NmJhNmE5OCIsIm9wdGlvbnMiOnsicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJ1diI6ZmFsc2UsInBpblV2QXV0aFRva2VuIjp0cnVlLCJsYXJnZUJsb2JzIjp0cnVlLCJiaW9FbnJvbGwiOmZhbHNlLCJ1c2VyVmVyaWZpY2F0aW9uTWdtdFByZXZpZXciOmZhbHNlLCJ1dkJpb0Vucm9sbCI6dHJ1ZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsImFsd2F5c1V2Ijp0cnVlfSwibWF4TXNnU2l6ZSI6ODA5MiwicGluVXZBdXRoUHJvdG9jb2xzIjpbMSwyXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0Ijo4LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjMyMiwidHJhbnNwb3J0cyI6WyJ1c2IiLCJuZmMiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fV0sIm1heFNlcmlhbGl6ZWRMYXJnZUJsb2JBcnJheSI6NDA1NiwibWluUElOTGVuZ3RoIjo0LCJtYXhDcmVkQmxvYkxlbmd0aCI6NjQsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjo0LCJwcmVmZXJyZWRQbGF0Zm9ybVV2QXR0ZW1wdHMiOjMsInV2TW9kYWxpdHkiOjIsInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjoxNjV9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0wOC0wMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ik9uZVNwYW4gRElHSVBBU1MgRlgxYSIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjQwODAyMDAzIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMDgtMDIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MX1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNC0wOC0wMyJ9LHsiYWFndWlkIjoiY2I2OTQ4MWUtOGZmNy00MDM5LTkzZWMtMGEyNzI5YTE1NGE4IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiJjYjY5NDgxZS04ZmY3LTQwMzktOTNlYy0wYTI3MjlhMTU0YTgiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiWXViaUtleSA1IFNlcmllcyJ9LCJkZXNjcmlwdGlvbiI6Ill1YmlLZXkgNSBTZXJpZXMiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6NTAxMDAsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJlZDI1NTE5X2VkZHNhX3NoYTUxMl9yYXciLCJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURIakNDQWdhZ0F3SUJBZ0lFRzBCVDl6QU5CZ2txaGtpRzl3MEJBUXNGQURBdU1Td3dLZ1lEVlFRREV5TlpkV0pwWTI4Z1ZUSkdJRkp2YjNRZ1EwRWdVMlZ5YVdGc0lEUTFOekl3TURZek1UQWdGdzB4TkRBNE1ERXdNREF3TURCYUdBOHlNRFV3TURrd05EQXdNREF3TUZvd0xqRXNNQ29HQTFVRUF4TWpXWFZpYVdOdklGVXlSaUJTYjI5MElFTkJJRk5sY21saGJDQTBOVGN5TURBMk16RXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFDL2p3WXVoQlZscWFpWVdFTXNyV0Zpc2dKK1B0TTkxZVNycEk0VEs3VTUzbXdDSWF3U0RIeTh2VW1rNU4yS0FqOWFidlQ5TlA1U01TMWhRaTN1c3hvWUdvblhRZ2ZPNlpYeVVBOWErS0FrcWRGbkJubHl1Z1NlQ09lcDhFZFpGZnNhUkZ0TWprd3o1R2N6MlB5NHZJWXZDZE1IUHR3YXowYlZ1em5ldWVJRXo2VG5RakU2M1JkdDJ6YnduZWJ3VEc1WnliZVdTd2J6eStCSjM0WkhjVWhQQVk4OXlKUVh1RTBJek1aRmNFQmJQTlJiV0VDUktnanEvL3FUOW5tRE9GVmxTUkN0MndpcVBTemx1d24rditzdVFFQnNValRHTUVkMjV0S1hYVGtOVzIxd0lXYnhlU3lVb1RYd0x2R1M2eGx3UVNnTnBrMnFYWXdmOGlYZzdWV1pBZ01CQUFHalFqQkFNQjBHQTFVZERnUVdCQlFnSXZ6MGJOR0poamdwVG9rc3lLcFA5eHY5b0RBUEJnTlZIUk1FQ0RBR0FRSC9BZ0VBTUE0R0ExVWREd0VCL3dRRUF3SUJCakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBanZqdU9NRFNhK0pYRkNMeUJLc3ljWHRCVlpzSjRVZTNMYmFFc1BZNE1ZTi9oSVE1Wk01cDdFamZjbk1HNEN0WWtOc2ZOSGMwQWhCTGRxNDVyblQ4N3EvNk8zdlVFdE5NYWZiaFU2a3RoWDdZKzlYRk45TnBtWXhyK2VrVlk1eE94aThoOUpESWdvTVA0VkIxdVMwYXVuTDFJR3FyTm9vTDltbUZuTDJrTFZWZWU2L1ZSNkM1K0tTVENNQ1dwcE11SklaSUkydjlvNGRrb1o4WTdRUmpRbExmWXpkM3FHdEtidzd4YUYxVXNHLzV4VWIvQnR3YjJYMmc0SW5waUIveXQvM0NwUVhwaVdYL0s0bUJ2VUtpR24wNVpzcWVZMWd4NGcweExCcWNVOXBzbXlQeksrVnNndzJqZVJRNUpsS0R5cUUwaGViZkMxdHZGdTBDQ3JKRmN3PT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZkNBWUFBQUNHVnMrTUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFIWVlBQUIyR0FWMmlFNEVBQUFiTlNVUkJWRmhIcFZkN1ROVjFGRC8zZDU5d2VRU0lnUzlBUUFYY0ZMQVFaaTlmcGVWejF0WS9XVFpyNVd4cGM3VzVrbkxhNWpJM1o4NXNyUzJuTTJzanRXd1pTN0lVSDRINHhDbkVReDREQVpGNzRWN3VzODg1djkvbEluQnZWSi9CNFB2OW51LzVudS81bnZNNTU2ZnpBL1F2MEhiL0lyWDNWRktQbzQ1Y25tNGluVUlXWXdMRlJtWlFVdXdqRkcvTjFpUkhoMUVaME5SVlJ1ZHF0MUJkKzJuU0t5Uy9PaHlzMCtsazNlLzNrUTlxdkQ0WlV0YTRWVlNVdVkwZWlweWlUaEFmb2NvT1JWZ0R1dXczcUtSaUFkM3JiY0V0alRqWUlvZjZXYUhzQ216VlBXQ014K2NnaDh0THFXTUthTVdzVWpMcW8yUnRKSVEwb096bWVycFF1NGVzWmdzT05rR3hIN2Qwa2R2VFQxN3M0T01VN1ZJOFpoamdHYU0rQXE5aUVOdThQaWYxdWR6MDdNd3ZLV2Y4R2xWb0NFWTA0UEM1V2RUYVhZRmJSOHZOdkw1KzNLZ2ZiNXhOTXlhOVJhbUppeW5hTWxHVFZ0RmxyNmJhOXUrcHFuRVg0dU11UlJnalNZRWhyTjd1dEZGZTZscWFsN05ma3c1aW1BR0h5blBwYms4Vm1ZMHhzdG5wdGxGQ1ZDWXR6VHVCTjgzUXBNTGpUdGV2ZFB6U1VuSjdlOG1ranhaMzlmWGJLRGZsZFpxYnZVK1RVZ0duQlZGNmZRMmlQSGc0VzE2VVdVd3Z6YmsxNnNNWkUrUG4wcHZ6N0pTZXVBeWVzOGxjcENtYUt1by9wK3FXcjJVY3dJQUhXcnZQMFlFemhYQXRMQWJzc0hocDdpR2FtdnlpalA4cnlxclhVV1g5WG9vd3h5QXVmTkJycDQzUE9CRlhabGtmOE1EUmlxY3B5b3dBd3B1ejJ4K2ZXdnovRHRkZTlzbXN6eWd0Y1I2QzF3YmR6Qmw2T2xxNVdOWVk0b0dhdGhKTXJrVEV4MGpBUlNIQVZzKzVyWWtRTlhiK1FnZlBMc1E2Z1h5SW5zcmVRZm1wbTdSVkZZZkw4Nm4xZmlVT2tZdlNoa1VQeHZidWt6b3k2SzFpaE0xaG8zWHpXNkV2U2ZYQStkcGlXR2FXZCtkb1h6THptR3dLWUZMQ0FzUkFsUEJBaE1sQ0ZYVTd0QlVWUHI4SGdWY0pIV3ErRjAwcGxyK0RNVGRyUDR6dnhZMTFrTk1oeFQrU2VUR2crZDRWNUxRSml0eVVHSk5COFZGWnNqZ1lCWk0vSUkvWENUa2owcXlET3BGMkFWUTE3Q0lqVXAvRG5UMVVrTDVGNWdkaitzUzF3ZzFnRTNnaWdtNjBmQ1h6U25QWGJ5QVBiSVh2K0lEcEUxNlRoYUhJUzlza3lobG1NRTVGM2NmcUFLaHEyQzBFNVBIMWdZYVhhTFBEa1pHMEhESk9uS1dIcDUxSTB6NVNPdXg4ZTFXQXVaemRIUXJUa3A4VG1qWG9JK2xhMHdHWnN6dWJxYk8zaWZRNkEvVzd2VlNZc1YzbVIwSkt3a0tjNFdIaUJrbVI4STNDQ2dJODdvT0w0cXpUNVArUlVKQmVqRU9nQVBLOGhZUHphdE0rZUlUcDJJTzl5VFFtZXJvbVBSeHgxcXhBY3NpbGUvdWJTZUViY1dRR1lFQ2doY0xZMkh5S2pvZ2pIMjVoTXBqcFV2MU91Z2xpNGVoMmVSdzBPMzJiSmpreXVDZ056ZzB2emxZTVNpU3MwdW9vNE1HN2hNT2pDRWFYMXlGRTBuU3ZqQnp1VG5FcEs4Nlo4SW9xRkFJdWJ3OGtnOUFyRWFSRVdTWkkrakg0WGJwNmc5RTlFbkpUM29hUnpETitNVUpCUURIbjU2YThvVW1FQnVzT3hCcy9ONSt0SkViUGtBRkRqOFVHdk9zL0lXdmNTZ2xHQmh2UzcvRlRZZnBXR1lkRFk4ZlBBeFdTQTM1c1RDNHA0K0xtNEFhcUlvUGVRdGZ1Zks2SmgwWmh4bGJzVVhPU21YTmlmRDVaVEFreURvZmJiY2NseG5BOFdOQXF4Q2JSTnlraFh4UXBhRHc2N2ZYVVlic2lHMEtodHYyb2VJdmg4cmhRTVlPY0VBcVhHL2VJK3puZ09jNXl4cjhxODJJQU0xYy9GTEZPcGxxdTVlRlFYck1aekdjVkNqWWJMV0c1STRCVDFldVJybGJ4dE5PdE1pdERERWhMWElJeW5BQXZ1T0VXRTNYM05kQWZ0OTRWZ2FHNDJYSVF0MFpYNlBlQ0UvcVFGZTlySzZIeDdZVTUwS3ZIN2ZXNGZTK3E3S0tCSnhzZ2dCWDVwU0FHaDFqSXJWaDV6UTZ3M1JmYWFoQlhtL2FDYkNaVGpDVUZVVHlXWnFXOXA2Mk1qSlBYVnFPclBnTU80TnY3NEdrZitvd2Z0TlZCRFFuakZKcUhTdzE3cFh2aFdXNUtacWUvUTQ5Ti9VU1RDQVZXb1FYRklIQkhYWGUzRlByVURzdUdEbXRGL2hIS1RIcGVreGhpQU9QSStTSnE2UzZIRjRJOVlXemtCSlRvNDZpVU16V3A4UGlyL1JpZHVMeEtZc1Nrc1Y4dkxsT1F2aEdYMllsUjBPQmhCakMrdS9nRWN2WTBBcEs3WWs0MU54alBTUW5XRkhURjY2VXJqZ2V2QjhDdTVhK2wydllTUlB0dVZEbzczaGhkTVNIblVYN3RUanNWWkd4QWwvV3B0aU9JRVExZ25MMjltWDYvdFIxdG1sa1lqOFc0WCtDU2pXY1VER1kxTnBTL0M3aFNLcWlNTE0vbDJRbVNXWjczRGR6K2dpbzhCQ0VOWVBRNDZxbmt6d1hVYnF2Qmt4alVRc1dmWkZnYnVvM3JBZit3TjdqT085MCt5bng0UGkzTCswbllMMVNjaERVZ0FQNGdQVi83SWQxcSsxSFNobXVHa0lxV1JQZ3l4TUZxUDhIZmpUbmpYd1k1YlFmYkpjdDZPSXpLZ01Ib3RGL0hlMWVnc2F4SFNxRzZ3ZmRtUTV4OE55VEZGcUJjcDJpU293SFIzeWs1KzM2aEY3dlhBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiXSwiZXh0ZW5zaW9ucyI6WyJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiJjYjY5NDgxZThmZjc0MDM5OTNlYzBhMjcyOWExNTRhOCIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOnRydWUsInVwIjp0cnVlfSwibWF4TXNnU2l6ZSI6MTIwMCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMV19fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMC0wNS0xMiIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWXViaUtleSA1QSIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMTgxMDMxMDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjAuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4wLjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjAtMDUtMTIifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIwLTA1LTEyIn0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiOTZmMGNjYzEzNWRmZjlkY2Q2YjNmZmUxODUyZmUwNmU4ZjVjYWJlYiJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyI5NmYwY2NjMTM1ZGZmOWRjZDZiM2ZmZTE4NTJmZTA2ZThmNWNhYmViIl0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJJbXByb3ZlSUQgQXV0aGVudGljYXRvciJ9LCJkZXNjcmlwdGlvbiI6IkltcHJvdmVJRCBBdXRoZW50aWNhdG9yIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjQ1LCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjJ9LHsibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjYsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDYlRDQ0FoT2dBd0lCQWdJSkFLTTlGcWswK1g5L01Bb0dDQ3FHU000OUJBTUNNSUdSTVFzd0NRWURWUVFHRXdKVlV6RVJNQThHQTFVRUNBd0lWbWx5WjJsdWFXRXhFREFPQmdOVkJBY01CMEZ6YUdKMWNtNHhHREFXQmdOVkJBb01EMGx0Y0hKdmRtVkpSQ3dnU1c1akxqRWlNQ0FHQTFVRUN3d1pRWFYwYUdWdWRHbGpZWFJ2Y2lCQmRIUmxjM1JoZEdsdmJqRWZNQjBHQTFVRUF3d1dTVzF3Y205MlpVbEVJRVpKUkU4Z1VtOXZkQ0JEUVRBZ0Z3MHlNakV5TURFd09USTVOVGhhR0E4eU1EVXlNVEV5TXpBNU1qazFPRm93Z1pFeEN6QUpCZ05WQkFZVEFsVlRNUkV3RHdZRFZRUUlEQWhXYVhKbmFXNXBZVEVRTUE0R0ExVUVCd3dIUVhOb1luVnliakVZTUJZR0ExVUVDZ3dQU1cxd2NtOTJaVWxFTENCSmJtTXVNU0l3SUFZRFZRUUxEQmxCZFhSb1pXNTBhV05oZEc5eUlFRjBkR1Z6ZEdGMGFXOXVNUjh3SFFZRFZRUUREQlpKYlhCeWIzWmxTVVFnUmtsRVR5QlNiMjkwSUVOQk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRWZYMHNGeWtpdkNHOTVQaTVqV1dnME1zYTB4b1hxRzVSKzZYb2hrUFNPV3FtY0pXK0NrQzREV09BQUR6RERZWnVoeDBzMUIvVWsyQm9WaTltUklxYWdxTlFNRTR3SFFZRFZSME9CQllFRk1KcEtoM1hjZlJOaVhWV2Y2UG51ZFppMk1zM01COEdBMVVkSXdRWU1CYUFGTUpwS2gzWGNmUk5pWFZXZjZQbnVkWmkyTXMzTUF3R0ExVWRFd1FGTUFNQkFmOHdDZ1lJS29aSXpqMEVBd0lEU0FBd1JRSWdNOTBZVjBUVDM5VjdCRHhuZkZLSmJqVS9IdkVuSnNrY0ZnV1Y5L3RLcmZrQ0lRRGZDQ1RmQ3p3WVJXSnBYcnVOOHdSZjREWTFFYTY0Z2pqSTlqNWxsaElQdHc9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFnQ0FJQUFBRDhHTzJqQUFBQUNYQklXWE1BQUM0akFBQXVJd0Y0cFQ5MkFBQUtUMmxEUTFCUWFHOTBiM05vYjNBZ1NVTkRJSEJ5YjJacGJHVUFBSGphblZOblZGUHBGajMzM3ZSQ1M0aUFsRXR2VWhVSUlGSkNpNEFVa1NZcUlRa1FTb2dob2RrVlVjRVJSVVVFRzhpZ2lBT09qb0NNRlZFc0RJb0syQWZrSWFLT2c2T0lpc3I3NFh1amE5YTg5K2JOL3JYWFB1ZXM4NTJ6endmQUNBeVdTRE5STllBTXFVSWVFZUNEeDhURzRlUXVRSUVLSkhBQUVBaXpaQ0Z6L1NNQkFQaCtQRHdySXNBSHZnQUJlTk1MQ0FEQVRadkFNQnlIL3cvcVFwbGNBWUNFQWNCMGtUaExDSUFVQUVCNmprS21BRUJHQVlDZG1DWlRBS0FFQUdETFkyTGpBRkF0QUdBbmYrYlRBSUNkK0psN0FRQmJsQ0VWQWFDUkFDQVRaWWhFQUdnN0FLelBWb3BGQUZnd0FCUm1TOFE1QU5ndEFEQkpWMlpJQUxDM0FNRE9FQXV5QUFnTUFEQlJpSVVwQUFSN0FHRElJeU40QUlTWkFCUkc4bGM4OFN1dUVPY3FBQUI0bWJJOHVTUTVSWUZiQ0MxeEIxZFhMaDRvemtrWEt4UTJZUUpobWtBdXdubVpHVEtCTkEvZzg4d0FBS0NSRlJIZ2cvUDllTTRPcnM3T05vNjJEbDh0NnI4Ry95SmlZdVArNWMrcmNFQUFBT0YwZnRIK0xDK3pHb0E3Qm9CdC9xSWw3Z1JvWGd1Z2RmZUxacklQUUxVQW9PbmFWL053K0g0OFBFV2hrTG5aMmVYazVOaEt4RUpiWWNwWGZmNW53bC9BVi8xcytYNDgvUGYxNEw3aUpJRXlYWUZIQlBqZ3dzejBUS1VjejVJSmhHTGM1bzlIL0xjTC8vd2QweUxFU1dLNVdDb1U0MUVTY1k1RW1venpNcVVpaVVLU0tjVWwwdjlrNHQ4cyt3TSszelVBc0dvK0FYdVJMYWhkWXdQMlN5Y1FXSFRBNHZjQUFQSzdiOEhVS0FnRGdHaUQ0YzkzLys4Ly9VZWdKUUNBWmttU2NRQUFYa1FrTGxUS3N6L0hDQUFBUktDQktyQkJHL1RCR0N6QUJoekJCZHpCQy94Z05vUkNKTVRDUWhCQ0NtU0FISEpnS2F5Q1FpaUd6YkFkS21BdjFFQWROTUJSYUlhVGNBNHV3bFc0RGoxd0QvcGhDSjdCS0x5QkNRUkJ5QWdUWVNIYWlBRmlpbGdqamdnWG1ZWDRJY0ZJQkJLTEpDREppQlJSSWt1Uk5VZ3hVb3BVSUZWSUhmSTljZ0k1aDF4R3VwRTd5QUF5Z3Z5R3ZFY3hsSUd5VVQzVURMVkR1YWczR29SR29ndlFaSFF4bW84V29KdlFjclFhUFl3Mm9lZlFxMmdQMm84K1E4Y3d3T2dZQnpQRWJEQXV4c05Dc1Rnc0NaTmp5N0VpckF5cnhocXdWcXdEdTRuMVk4K3hkd1FTZ1VYQUNUWUVkMElnWVI1QlNGaE1XRTdZU0tnZ0hDUTBFZG9KTndrRGhGSENKeUtUcUV1MEpyb1IrY1FZWWpJeGgxaElMQ1BXRW84VEx4QjdpRVBFTnlRU2lVTXlKN21RQWtteHBGVFNFdEpHMG01U0kra3NxWnMwU0Jvams4bmFaR3V5QnptVUxDQXJ5SVhrbmVURDVEUGtHK1FoOGxzS25XSkFjYVQ0VStJb1VzcHFTaG5sRU9VMDVRWmxtREpCVmFPYVV0Mm9vVlFSTlk5YVFxMmh0bEt2VVllb0V6UjFtam5OZ3haSlM2V3RvcFhUR21nWGFQZHByK2gwdWhIZGxSNU9sOUJYMHN2cFIraVg2QVAwZHd3TmhoV0R4NGhuS0JtYkdBY1laeGwzR0srWVRLWVowNHNaeDFRd056SHJtT2VaRDVsdlZWZ3F0aXA4RlpIS0NwVktsU2FWR3lvdlZLbXFwcXJlcWd0VjgxWExWSStwWGxOOXJrWlZNMVBqcVFuVWxxdFZxcDFRNjFNYlUyZXBPNmlIcW1lb2IxUS9wSDVaL1lrR1djTk13MDlEcEZHZ3NWL2p2TVlnQzJNWnMzZ3NJV3NOcTRaMWdUWEVKckhOMlh4MktydVkvUjI3aXoycXFhRTVRek5LTTFlelV2T1VaajhINDVoeCtKeDBUZ25uS0tlWDgzNkszaFR2S2VJcEc2WTBUTGt4WlZ4cnFwYVhsbGlyU0t0UnEwZnJ2VGF1N2FlZHByMUZ1MW43Z1E1Qngwb25YQ2RIWjQvT0JaM25VOWxUM2FjS3B4Wk5QVHIxcmk2cWE2VWJvYnRFZDc5dXArNllucjVlZ0o1TWI2ZmVlYjNuK2h4OUwvMVUvVzM2cC9WSERGZ0dzd3drQnRzTXpoZzh4VFZ4Ynp3ZEw4ZmI4VkZEWGNOQVE2VmhsV0dYNFlTUnVkRThvOVZHalVZUGpHbkdYT01rNDIzR2JjYWpKZ1ltSVNaTFRlcE43cHBTVGJtbUthWTdURHRNeDgzTXphTE4xcGsxbXoweDF6TG5tK2ViMTV2ZnQyQmFlRm9zdHFpMnVHVkpzdVJhcGxudXRyeHVoVm81V2FWWVZWcGRzMGF0bmEwbDFydXR1NmNScDdsT2swNnJudFpudzdEeHRzbTJxYmNac09YWUJ0dXV0bTIyZldGblloZG50OFd1dys2VHZaTjl1bjJOL1QwSERZZlpEcXNkV2gxK2M3UnlGRHBXT3Q2YXpwenVQMzNGOUpicEwyZFl6eERQMkRQanRoUExLY1JwblZPYjAwZG5GMmU1YzRQemlJdUpTNExMTHBjK0xwc2J4dDNJdmVSS2RQVnhYZUY2MHZXZG03T2J3dTJvMjYvdU51NXA3b2Zjbjh3MG55bWVXVE56ME1QSVErQlI1ZEUvQzUrVk1HdmZySDVQUTArQlo3WG5JeTlqTDVGWHJkZXd0NlYzcXZkaDd4Yys5ajV5bitNKzR6dzMzakxlV1YvTU44QzN5TGZMVDhOdm5sK0YzME4vSS85ay8zci8wUUNuZ0NVQlp3T0pnVUdCV3dMNytIcDhJYitPUHpyYlpmYXkyZTFCaktDNVFSVkJqNEt0Z3VYQnJTRm95T3lRclNIMzU1ak9rYzVwRG9WUWZ1alcwQWRoNW1HTHczNE1KNFdIaFZlR1A0NXdpRmdhMFRHWE5YZlIzRU56MzBUNlJKWkUzcHRuTVU4NXJ5MUtOU28rcWk1cVBObzN1alM2UDhZdVpsbk0xVmlkV0Vsc1N4dzVMaXF1Tm01c3Z0Lzg3Zk9INHAzaUMrTjdGNWd2eUYxd2VhSE93dlNGcHhhcExoSXNPcFpBVEloT09KVHdRUkFxcUJhTUpmSVRkeVdPQ25uQ0hjSm5JaS9STnRHSTJFTmNLaDVPOGtncVRYcVM3Skc4Tlhra3hUT2xMT1c1aENlcGtMeE1EVXpkbXpxZUZwcDJJRzB5UFRxOU1ZT1NrWkJ4UXFvaFRaTzJaK3BuNW1aMnk2eGxoYkwreFc2THR5OGVsUWZKYTdPUXJBVlpMUXEyUXFib1ZGb28xeW9Ic21kbFYyYS96WW5LT1phcm5pdk43Y3l6eXR1UU41enZuLy90RXNJUzRaSzJwWVpMVnkwZFdPYTlyR281c2p4eGVkc0s0eFVGSzRaV0Jxdzh1SXEyS20zVlQ2dnRWNWV1ZnIwbWVrMXJnVjdCeW9MQnRRRnI2d3RWQ3VXRmZldmMxKzFkVDFndldkKzFZZnFHblJzK0ZZbUtyaFRiRjVjVmY5Z28zSGpsRzRkdnlyK1ozSlMwcWF2RXVXVFBadEptNmViZUxaNWJEcGFxbCthWERtNE4yZHEwRGQ5V3RPMzE5a1hiTDVmTktOdTdnN1pEdWFPL1BMaThaYWZKenMwN1AxU2tWUFJVK2xRMjd0TGR0V0hYK0c3UjdodDd2UFkwN05YYlc3ejMvVDdKdnR0VkFWVk4xV2JWWmZ0Sis3UDNQNjZKcXVuNGx2dHRYYTFPYlhIdHh3UFNBLzBISXc2MjE3blUxUjNTUFZSU2o5WXI2MGNPeHgrKy9wM3ZkeTBOTmcxVmpaekc0aU53UkhuazZmY0ozL2NlRFRyYWRveDdyT0VIMHg5MkhXY2RMMnBDbXZLYVJwdFRtdnRiWWx1NlQ4dyswZGJxM25yOFI5c2ZENXcwUEZsNVN2TlV5V25hNllMVGsyZnl6NHlkbFoxOWZpNzUzR0Rib3JaNzUyUE8zMm9QYisrNkVIVGgwa1gvaStjN3ZEdk9YUEs0ZFBLeTIrVVRWN2hYbXE4NlgyM3FkT284L3BQVFQ4ZTduTHVhcnJsY2E3bnVlcjIxZTJiMzZSdWVOODdkOUwxNThSYi8xdFdlT1QzZHZmTjZiL2ZGOS9YZkZ0MStjaWY5enN1NzJYY243cTI4VDd4ZjlFRHRRZGxEM1lmVlAxdiszTmp2M0g5cXdIZWc4OUhjUi9jR2hZUFAvcEgxanc5REJZK1pqOHVHRFlicm5qZytPVG5pUDNMOTZmeW5RODlrenlhZUYvNmkvc3V1RnhZdmZ2alY2OWZPMFpqUm9aZnlsNU8vYlh5bC9lckE2eG12MjhiQ3hoNit5WGd6TVY3MFZ2dnR3WGZjZHgzdm85OFBUK1I4SUg4by8yajVzZlZUMEtmN2t4bVRrLzhFQTVqei9HTXpMZHNBQUFBZ1kwaFNUUUFBZWlVQUFJQ0RBQUQ1L3dBQWdPa0FBSFV3QUFEcVlBQUFPcGdBQUJkdmtsL0ZSZ0FBQXRoSlJFRlVlTnJzbHQ5TGsxRVl4Ny92TnRlMHZYT2s3eVM3cXlXQll2bmpJa3RHVTB2REN3a3RWNEtYcHYzd0IvNEJCaUlhL1FDMXdqa1ZVeE5zVXV1dXpkMWs2aUJMQ3hJRnpjRFhPVFp3WThyMnNyMXJwNHVYWnVvZ2dyeUpmUzhlZUw2YzUzdzQ1K0U1SElvUWdvT1VDQWVzR0NBR2lBRUF5WDZMWmRuMTlYV0dZZFJxOVQ4Z2tOMXFhMjBWRGxWWmNaVVFZcHVaS1MwdEhUY2E5eXd6Nkh1cnE2cy96czZTUDJrWHdHSTJBempLcUhRNjNmdDNrNFNRcG9ZR0FNV0ZSWHZLTG1vTEFBd09EUHdkb0xkSEQyQmthT2gzODQzSjVISzU5cFRWMWR3RThHcDhmUCtPUzR0TDVyZm1INkdRa083MG9MdXpjMmp3dVNvcDJkQnJPQ3luazVLTzlQWDNaMlprTUNrcHF5dmZHSVlCY0wrOXcycWRLQ29xQ2dRQ0FIaWVGMm9mUDN4a01yMVcwSXJhdWxwdFFZSFA3d05GN2UyQk5sOERJTzM0Q1FBTmQrdTd1N29BU0VBQnFLdXBKWVJVNmE0RG9HWHhxYW9VcFp3V0E5YUpDVUpJNFFVdGdGUHFrd25TUXdENjlQcm9WeFFNQnR2YjJpaUtldERSd2ZOOEtCVGlPTzdaazZjQStub05MTXNDeU1vOHpmbjlITWZsbk1rQ3NMUzRPRDAxRFVCMzlSb2h4T2wweWhNUzRpaVIzVzZQYkxzekIzRnhjYlJDUVFoUkpDWktKQkt4V0N5VHllUnlHb0JVS3YweS94bUFUbGNwaTQrWHlXUWFqUWFBeitlYm1wd0VVRjVSRGtDbFVoVnFDM2dTbnArYml6NEhuTjhQd08vM1I1eEFnTXZOems1bWtrV1VDTURxNm5mQmR6ZzJCREN0VUFCd09sMi9mSWRBaWc0SUJvT1JLSWpuZVFWTmIzbTNpaStYaUVIcCt3enBHZWx1dC91bDBRZ2dFQWlVWFNtN2RlZjJ2WmFXdExTMGhZV3ZIK1krNVovTnk4bk5qZjVVU0NTU1NJdzQ0WERZNGRoUUtwWER3OE5paXFwdmJCd2RlVkYxb3dvQXU3YVdtbnJNMEtQZjN0NitWRkxjMU54OFB1L2M2TmlZU0NTS1Bza2V0MmQ1ZWRuajhVUWNyOWRyWDdlNzNadEN5ckpyVnFzMUhBNFRRcFpYVnJ4ZXIrQzdOOTBXaThWbXMrMGZDeXIycTRnQllvRC9BUEJ6QUk2Vk5xR1FQVXFuQUFBQUFFbEZUa1N1UW1DQyJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIzLTAxLTE3IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjQ1LCJ1cmwiOiJodHRwczovL3d3dy5pbXByb3ZlaWQuY29tLyIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiSW1wcm92ZUlEIEF1dGhlbnRpY2F0b3IiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlUyRjAwMDIwMjMwMTE3MDAyIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjMtMDEtMTciLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6NDV9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjMtMDUtMTgifSx7ImFhZ3VpZCI6IjAwNzY2MzFiLWQ0YTAtNDI3Zi01NzczLTBlYzcxYzllMDI3OSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiMDA3NjYzMWItZDRhMC00MjdmLTU3NzMtMGVjNzFjOWUwMjc5IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkhZUFIgRklETzIgQXV0aGVudGljYXRvciJ9LCJkZXNjcmlwdGlvbiI6IkhZUFIgRklETzIgQXV0aGVudGljYXRvciIsImFsdGVybmF0aXZlRGVzY3JpcHRpb25zIjp7ImVuLVVTIjoiSFlQUiBGSURPMiBBdXRoZW50aWNhdG9yIn0sImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZhY2VwcmludF9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJ2b2ljZXByaW50X2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZXllcHJpbnRfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhdHRlcm5faW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImhhbmRwcmludF9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibG9jYXRpb25faW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbInNvZnR3YXJlIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWxlc3MiLCJuZXR3b3JrIiwid2lmaV9kaXJlY3QiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNBekNDQWFnQ0NRQ0czVXI0enFZOTNqQUtCZ2dxaGtqT1BRUURBakNCaHpFTE1Ba0dBMVVFQmhNQ1ZWTXhDekFKQmdOVkJBZ01BazVaTVJFd0R3WURWUVFIREFoT1pYY2dXVzl5YXpFU01CQUdBMVVFQ2d3SlNGbFFVaUJEYjNKd01SQXdEZ1lEVlFRTERBZFNiMjkwSUVOQk1SRXdEd1lEVlFRRERBaG9lWEJ5TG1OdmJURWZNQjBHQ1NxR1NJYjNEUUVKQVJZUWMzVndjRzl5ZEVCb2VYQnlMbU52YlRBZ0Z3MHlNakE1TVRNd01qQTRNalphR0E4eU1EY3lNRGd6TVRBeU1EZ3lObG93Z1ljeEN6QUpCZ05WQkFZVEFsVlRNUXN3Q1FZRFZRUUlEQUpPV1RFUk1BOEdBMVVFQnd3SVRtVjNJRmx2Y21zeEVqQVFCZ05WQkFvTUNVaFpVRklnUTI5eWNERVFNQTRHQTFVRUN3d0hVbTl2ZENCRFFURVJNQThHQTFVRUF3d0lhSGx3Y2k1amIyMHhIekFkQmdrcWhraUc5dzBCQ1FFV0VITjFjSEJ2Y25SQWFIbHdjaTVqYjIwd1dUQVRCZ2NxaGtqT1BRSUJCZ2dxaGtqT1BRTUJCd05DQUFRc0VRT2cvQjUzcktJRkpuNG5VZlBOVlBxekRaVkxoV2lmS2xxU1lYVmcxWjY4OG1PYkE2Q25sK1BKVXcyNzI3RW1JRTJZSEF3QkJmUHdQeSs5Mk5FU01Bb0dDQ3FHU000OUJBTUNBMGtBTUVZQ0lRQ1dUbHlsU3lFeWhvVEJzZzdVVlozYW5aM3k5Wm1CT3RkZGgyZm5TNzBhYlFJaEFKRlFzemdROTRGTFZQUHVrbDcvam43Z3RibXNvM0VxTWRXT1ZlRW85SzBSIl0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQ05nQUFBallDQVlBQUFBQURJTFBBQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQkFOcFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR3L2VIQmhZMnRsZENCaVpXZHBiajBpNzd1L0lpQnBaRDBpVnpWTk1FMXdRMlZvYVVoNmNtVlRlazVVWTNwcll6bGtJajgrSUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWtGa2IySmxJRmhOVUNCRGIzSmxJRFV1Tmkxak1UUTFJRGM1TGpFMk16UTVPU3dnTWpBeE9DOHdPQzh4TXkweE5qbzBNRG95TWlBZ0lDQWdJQ0FnSWo0Z1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNGdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlnZUcxc2JuTTZlRzF3VFUwOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXRiUzhpSUhodGJHNXpPbk4wVW1WbVBTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZjMVI1Y0dVdlVtVnpiM1Z5WTJWU1pXWWpJaUI0Yld4dWN6cDRiWEE5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM4aUlIaHRiRzV6T21SalBTSm9kSFJ3T2k4dmNIVnliQzV2Y21jdlpHTXZaV3hsYldWdWRITXZNUzR4THlJZ2VHMXdUVTA2VDNKcFoybHVZV3hFYjJOMWJXVnVkRWxFUFNKMWRXbGtPalZFTWpBNE9USTBPVE5DUmtSQ01URTVNVFJCT0RVNU1FUXpNVFV3T0VNNElpQjRiWEJOVFRwRWIyTjFiV1Z1ZEVsRVBTSjRiWEF1Wkdsa09rUTRSVGhFUmpjd056TTFOekV4UlRrNU1UVTFSVVUyTkVNM01FRXdOREV4SWlCNGJYQk5UVHBKYm5OMFlXNWpaVWxFUFNKNGJYQXVhV2xrT2tRNFJUaEVSalpHTnpNMU56RXhSVGs1TVRVMVJVVTJORU0zTUVFd05ERXhJaUI0YlhBNlEzSmxZWFJ2Y2xSdmIydzlJa0ZrYjJKbElGQm9iM1J2YzJodmNDQkRReUF5TURFNUlDaE5ZV05wYm5SdmMyZ3BJajRnUEhodGNFMU5Pa1JsY21sMlpXUkdjbTl0SUhOMFVtVm1PbWx1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2TVRCaE1qSmtNR1V0TWpVek55MDBaalUxTFdFek5UY3RaakUzWXprMFkyWmxOVGt4SWlCemRGSmxaanBrYjJOMWJXVnVkRWxFUFNKaFpHOWlaVHBrYjJOcFpEcHdhRzkwYjNOb2IzQTZPVGc1WVRBelkyWXROamxoWlMweFpEUXdMV0kwT1dZdE9XUXhNVEZsTUdVMllqTTFJaTgrSUR4a1l6cDBhWFJzWlQ0Z1BISmtaanBCYkhRK0lEeHlaR1k2YkdrZ2VHMXNPbXhoYm1jOUluZ3RaR1ZtWVhWc2RDSStVSEpwYm5ROEwzSmtaanBzYVQ0Z1BDOXlaR1k2UVd4MFBpQThMMlJqT25ScGRHeGxQaUE4TDNKa1pqcEVaWE5qY21sd2RHbHZiajRnUEM5eVpHWTZVa1JHUGlBOEwzZzZlRzF3YldWMFlUNGdQRDk0Y0dGamEyVjBJR1Z1WkQwaWNpSS9QbDJEeXgwQUFKeWRTVVJCVkhqYTdOMy9iVnhWR29EaEUwUUJLV0VhUUVvSkxpRWRyRHZZTklDU2lBSVFGWkJVc05rS0dDckFpQUlZS2lCYmdYY09NeFAvVVBJU2tuakdubmtlNlVqMmhEL2dzM1dVZSsvTHVZOHVMeThIQUFBQUFBQUFBQUR3Zmw4WkFRQUFBQUFBQUFBQWZKakFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBTUxYUmdEc2ZQUGsyMVA4ejM2eVhoZCsrZ0FBQUNkdFhocytOZ2IyYUdrRThMY1cyd1YzWmJWZEFIL3J0NHZ2REFFUTJBQW5hZDQ0L2RkNlBkMWVwRDh5RWdBQWdKTTJydytmR3dNSDluYmMvSitBVnV2MXg3V3ZWOXV2TDdiL0xCeTdzL1g2MFJnNGdOdjc3UHorZisvNXM2VlJBY0JwZVhSNWVXa0t3RitPL0FTYjIxSE5qYjNRVHg4QUFPQ2t6V3ZHWDR5QkIyYTFYZk5CNzYvakt0RFpmUTdINFBmaEZCdnV2MTEwTS9mZVA2NTlMNGlFSStJRUcyQnlnZzF3ekNxcUFRQUFnSjFkbE9EYWtZZGtjZTEzOXVrSGZxL25nOTJmeDFWMHN6UTJIcGlYd3lrMjNIOVAvdWJQbCtObWZMTWFOMDhzQXdBZUNJRU5jSXdYTTZJYUFBQUEvcWszNi9YTUdEZ2l1d2UrWjdjK1g0M05nOTE1NnMxeU9QR0crKzNWMkx6Q2IyRVVQR0JuSC9oOHR3Zi91dDJYbDBZRkFQZWJ3QVk0QnFJYUFBQUFQdGM4NVVOZ3d5bFliTmU4ai9KOCs5azg2V1k1cnFJYnJ6WGhQbmw5N1hjVmpzblplejY3R0ZjUnBPZ0dBTzZaUjVlWGw2WUEvT1diSjk4K3BIL2RMeG5WUFBMVEJ3QUFZTzNQOVhwc0RQQ1gzVVBlR1o4dGgxTnVPSnk1TC85dWYrYUVMYmQ3OFM2NEVVRENBZngyOFowaEFFNndBUjRVSjlVQUFBQndsNWJiYTA1Z2N4OW1ydlB0OTZ0eDlaQjNPUVEzN00rTUNYNFlUckhoZEoyTm02ZmRYTnphandVM0FMQW5UckFCM3Jtbko5anNJNnB4Z2cwQUFBRFQrWHI5YUF6d1VWYnI5V1o0d010K09NVUdQbXk1M1l2bm5ueGhISEEzbkdBRFRBSWI0SjE3Rk5nczF1dmZZMzhuMVFoc0FBQUFtT2FEMnorTkFUN0pjcjMrT3pZUGVGZkd3UjJZQWVTNU1VQjZPNjdpeHpkRC9BaGZqTUFHbUFRMndEc0hEbXdXWXhQVXpOTnFudXg3TC9UVEJ3QUFZT3VYQTF5WHdyRlpqYzJEM2RmRGFRcDhPWXV4T2NVRytIZ1gyNzFZL0FpZlNXQURURjhaQVhEZ2krSm5ZM1B6Y2w0Y2Z6L2N4QVFBQU9Dd1hoc0JmTGJGdUhuUFo1NDg4dFJZK0V5cjlYcGxEUENQelB2dDMyLzM0cmtudnhqdXdRUEFKeFBZQVB1MkdLSWFBQUFBN3ErbEVjQVh0UmliMS9yOFoyeGV3VFpqbXpOajRSTzlOQUw0WlBNKy9QTnhkVy8rMlhhUEJnQStrc0FHMklmRkVOVUFBQUR3TU14WEtheU1BZTdFNDdHSmJYNGE3aEh4YWViKy9NWVk0TE10eHMyVGJaNXQ5MmdBSUFoc2dMdjhDN3FvQmdBQWdJZkl3MXU0ZTR0eGRlL0l3MTMraVIrTUFMNm8zV3VrNWlsajg3U3hjeU1CZ1BjVDJBQmYwbUtJYWdBQUFIajRmallDMkt2YkQzZWZHZ2xoT2J6T0QrN0szSDkvM083SDd1OER3QzBDRytCekxZYW9CZ0FBZ09NeVQ3QjVhd3h3RVBQaDdveHM1bjJtRjJOejd3bHVlMmtFY0tmbWlXTFhUeGs3SDA0WkF3Q0JEZkJKRmtOVUF3QUF3SEh6bWlnNHJNVjZQUitiZTAvek5JVXpJK0dhNVhwZEdBUHN4WlB0UHJ4N0ZyQXdFZ0JPbGNBRytGanpMODJpR2dBQWdQMWZpM0VZWGhNRjk4ZjVldjAwTnZlazV0ZE9VV0Q2d1FoZ3IzYW4yc3k5ZUo0MGRtWWtBSndhZ1ExUUZrTlVBd0FBY0NqbjIyc3hENUlQd3drMmNQOHN4dFVwQ2krR0NQSFV2VnF2bFRIQVFjelgrVjBQSHdIZ0pBaHNnTnNXUTFRREFBQndhT2RqOHhCNWVtb2NCL0YyYkY1QkF0dy9Nenk4L3Zxb2haR2NySmRHQUFlMTJPN0RmNDVOK0NnTUIrQ29DV3lBNjNiSE80cHE0UC9zM2U5MTIwaTY0T0YzNzVudm80MWdjQ05vZFFSbVI5QjJCRVpIWURzQ1N4SFlqc0RvQ0t5T29Oa1J0Q2FDNFdTZ0RIWlpKbW45bHlnU0JSUlF6M01PanUvT2Z1SkxOUVM0ZnE0Q0FJRHh0SEVkMXlTdmpHUTBmeGdCVE9LZTZiaVNlblZoRnhzb3djM3dNYTB2TkVZQ3dCd0piSUM3RDhFQUFBQ01wNDNiY1UxaUI1dnhPQ1lLcG1OM1hFbTZGc1pSbGQrTkFJcVIxaGgyLzVEWERtTUF6STdBQmdBQUFLQU1iZHlQYTVLMFVMRXdubEdzd3M0SU1EWHBmaW0wcWN2bjJCenJCNVQzYkN1MEFXQldCRFlBQUFBQTQydmo0YmhtNTFjakdvMWRiR0NhRmlHMHFVV0thNzRZQXhUOW5DdTBBV0FXQkRZQUFBQUE0MnJqNmJnbWNVelVlUDR3QXBpMFJRaHRhbUFYRzVqR002L1FCb0JKRTlnQUFBQUFqS2VONStPYXBBa0xFV05aaGtWYm1JTkZiQ0tiYis2bnM1VHUwM1ljZytrOC8vNjl2czVpY3hRcUFFeUd3QVlBQUFCZ0hHM3NGOWZzMk1WbVBCWnRZVDdTdlhTM2c0S0YzWGs1TndLWWpIVC8vYmk5SDU4WkJ3QlRJYkFCQUFBQUdGNGJMNHRya3JmR05ockhSTUU4NzhPN2hWMmh6VHlzMWxkbkREQXBOME9iMWpnQUtKM0FCZ0FBQUdCWWJidzhya2xPd3lMd1dKWkdBTE8wVzlqOU95enN6b1ZkYkdDYW11M3pjVHJLYjJFY0FKUktZQU1BQUFBd25EWU9pMnQySEJNMWpxdHdUQlRNV1JQWEM3dW54akZwSy9kcm1MVEY5bDdzR0Q4QWlpU3dBUUFBQUJoR0c4ZkZOY212eGppYXY0d0FabThSbTkxc0xPeE8yeGNqZ0ZrOE42ZGpvOTRiQlFBbEVkZ0FBQUFBNU5mRzhYRk5zakRLMGRnUkFlcTZaLzhuSEJzMVZjdHd0Qi9NUVFvZFA4VW1mUFFNREVBUkJEWUFBQUFBZWJYUlQxeVRwSVVHeDBTTlk3VytMbzBCcW5FU2pvMmFzbk1qZ05rNERjZEdBVkFJZ1EwQUFBQkFQbTMwRjlmc3ZETFcwU3lOQUtxemlNM3VDV2RoWVhkcTkydFJKTXp2dVRydExpWTJCMkEwQWhzQUFBQ0FQTnJvUDY1SkxDcU01M2NqZ0dwOURNZVVUTTBYSTREWlNhSGp0OWpzYU5NWUJ3QkRFOWdBQUFBQTlLK05QSEZOMG9UalNzYVNka080TWdhb1Zyci9wa1hkVDJFM215bm9Zbk84SHpBL2k5aEVqKytOQW9BaENXd0FBQUFBK3RWR3ZyaG1aMkhNbzdrd0FxaGVXdEMxbTgwMG5Cc0J6RllLSFZQd2FEY2JBQVlqc0FFQUFBRG9UeHY1NDVya3JWR1A1ZzhqQU1KdU5sUFJoVjFzWU80V1lUY2JBQVlpc0FFQUFBRG9SeHZEeERWSk9pTEtndTQ0bGtZQTNMRGJ6Y2JSZmVYNjNRaGc5bTd1WnVNWkdZQnNCRFlBQUFBQXgydGp1TGhtNTdXeGorSXFIQk1GM05iRUpySTVNNG9pZmQ3ZXU0SDVXNnl2LzNoT0JpQVhnUTBBQUFEQWNkb1lQcTVKZmpYNjBUZ21DbmpJeDlpRU5vMVJGQ1hGTlYrTUFhcVJkckQ1Rm83d0F5QURnUTBBQUFEQTRkb1lKNjVKL012YzhTeU5BSGhFT2lycTcrM3ZCOHBoRnh1b1R6ckM3ODl3aEI4QVBSTFlBQUFBQUJ5bWpmSGltaDJSelRoVzYrdlNHSUJIbkd4L1Azd051eWVVd3ZGK1VLZGQ5UGplS0FEb2c4QUdBQUFBNE9YYUdEK3VTUndUTlI3SFJBSDcvSzZ3ZTBJNXpvMEFxcFdPaTBySFJva2VBVGlLd0FZQUFBRGdaZG9vSTY1SkZyNk8wZGdKQWRoSGltditERWRHbFdDMXZqcGpnR3FsblIvL0R0RWpBRWNRMkFBQUFBRHNyNDF5NHBxa0NZc0VZMGxIUksyTUFkakR6U09qR0pkZGJLQnU2ZGxaOUFqQXdRUTJBQUFBQVB0cG84ekYwZGUrbXRFc2pRQjQ0ZStSdEh1Q0kwckdzd283a0VIdFJJOEFIRXhnQXdBQUFQQzhOc3I5Uy9oZmZUMmorY01JZ0JkS3U0NzlKeHp4TjZZdlJnQ0U2QkdBQXdoc0FBQUFBSjdXUnRuL3dqVXQxamErcGxIWUJRRTRSRnJNZFVUSmVKWmhCekxnK2puNlArSElWUUQySkxBQkFBQUFlRndiMDlnK2Z1R3JHbzNJQmppVUkwckdjMjRFd0ZhS0h2OE8wU01BZXhEWUFBQUFBRHlzamVrc2ZEb21hanlPaVFLTy9WM2ppSkxoTGRmWHBURUFONlRuL2svR0FNQlRCRFlBQUFBQTk3VXhyVjBGWG9mRjJiRXNqUUE0VWpxYTVNOXdSTW5RdmhnQmNNZjc5ZlhOY3pVQWp4SFlBQUFBQU56V3hqU1A3Rmo0NmtheENyc2dBTWNUMlF5djI5N0RBVzU2dmIwZmkyd0F1RWRnQXdBQUFIQ3RqV25HTllsam9zYnp1eEVBUFVpTHVYOXZmeGN4akhNakFCNlFZc2YvaE9nUmdEc0VOZ0FBQUFBYmJVdzNya2xlK3dwSHN6UUNvRWZwZDlGN1l4aEVGM2F4QVI2V29rYzdpd0Z3aThBR0FBQUFZUHB4VFpJV0FTd0FqQ01kRWJVeUJxQkhuMmJ3ZTJrcTdFSUdQUFY4YldjeEFINFEyQUFBQUFDMWEyTStpNWh2ZloyanVUQUN3TytuU2ZxOHZxNk1BWGpDMXhEWkFCQUNHd0FBQUtCdWJjeHI4WExoS3gzTlgwWUFaUG85bFhaUE9ER0tiRkpjODhVWWdHZWtkNFpQeGdCUU40RU5BQUFBVUtzMjVyY3pRRG9pcXZIVmppTHRZR01IQkNEWHZmM1BFTm5rWkJjYllCL3Z3ODVpQUZVVDJBQUFBQUExYW1PK2Z6bisydGM3bXFVUkFKbUliUEpLY1kyai9vRGEzeU1BZUliQUJnQUFBS2hORy9QK1MvRlh2dUxSL0dFRVFFYTd5S1l4aWl6T2pRRHdQZ0hBVS81aEJBQUFBRUJGMnBqL1g0YW5IV3pTRGdlT3VoaGUydjFnWlF3OFlQSEkvLzZ2dUIxTExJeUtaNlRJNXUvMTljdjZ1alNPWHFYNzk4OWhsNkE1TzluK04vU1FtNEZ5RTBJMjludXZTRDlUdjNudUJxaUh3QVlBQUFDb1JSdjEvRXZURk5sMHZ2TEJwY1dWcFRId2dKZitYTnhjQkY1cy8zeDE1LzlOdmRMUFI5ckpSbVRUUC9PY3Y1Y2VCWGE2L1c5dWQxLys1L2JQSmtRNGJKNjVtKzM5V0dRRFVBR0JEUUFBQUZDRE51cmF4ajB0eEhlK2RwaXNtN0hXOG9ILy8yWjdwVVhlZjIzL1hCaGJWVVEyTUl5Yi8zMDlGT2ZzQXB6RmpmdnhxYkZWNWZURy9WaGtBekJ6QWhzQUFBQmc3dHFvSzY1SjByK20vYzFYRDdPMTJsN0xPLzk3RTllTHV5bTBXeGpWcklsc1lIeTcvL2J1M285MzkrS2Z0dmRpMGMyOGlXd0FLaUd3QVFBQUFPYXNqZnJpbW1UM0w2bVhmZ1NnS3F2dGRYT1hoZDN1TnJ0RjNzYVlabmUvRjlsQWVTNGYrRzl5Y2VkK2ZHSk1zeUt5QWFpQXdBWUFBQUNZcXpicWpHdDJmZzJCRFhCL2tiZUp6Y0x1cjJHQmR5NTJrYzMvaGtWZEtObnl6clBaNlozN01kT1h2dE5QWVNkSmdObjZIeU1BQUFBQVpxaU51dU9hNUxVZkErQUJxL1hWcmE4MzYrdi9ycStmMTlkNTJQMWs2bmFSaldBS3BpUGRkei9IWnNlVC83TzlMMy9lM3FmeEhnSkFnUVEyQUFBQXdOeTA0Uysxa3lZY0JRTThMeTN3bnNVbXRFazdvS1IvZFg5aExKTzBPNTVFWkFQVGxPNjlIN2IzNHArMy83ZjQwZnNJQUFVUjJBQUFBQUJ6MG9hL3pMN0pMamJBUzZ6aTl1NDJZcHZwRWRuQVBPeDJ0OW5GajJJYjd5VUFGRUJnQXdBQUFNeEZHLzRTKzY1ZmpRQTQwRlhjajIyV3hqSUp1OGdHbUlkVjNJNXR6c014VWxONlB6a3pCb0Q1RU5nQUFBQUFjOUNHdU9ZaGk3Q0xBWEM4WFd6elMxamNuWXBUdnhkaGx0Szk5eXl1ajVIcXR2ZG95dlZ4KzY0Q3dBd0liQUFBQUlDcGE4TWk0bE1jRXdYMGFSWFhpN3RwZHh0SFNQbjlDSXdqSFJuMTIvWisvRnM0UXFwa1gwTmtBekFMQWhzQUFBQmd5dHF3ZVBpY1YwWUFaSkxpbWhUWjJOV203TitUNzQwQlptMjN5OWpQY2IyckRlWDVGSnZkeFFDWU1JRU5BQUFBTUZWdGlHdjJZUWNiSUxkVlhPOXFZeGVGOG53S095ZEFMWGE3MnZ6ZkVENldKaDNiK21lSWJBQW1UV0FEQUFBQVRGRWI0cHA5cGIvTUY5a0FRK2xpczRQQ0wrdHJhUnpGU0w4ekxlcENQZEt1Tm1keEhUNnVqS1NZNS9LdjJ6OEJtQ0NCRFFBQUFEQTFiWWhyWHNveFVjRFFsckdKYk5MaWJtY2NSYkJ6QXRTcDI5NkwzNFR3c1FTbjIvc3hBQk1rc0FFQUFBQ21wQTF4elNIc1lBT01aUldiM1JPRU51T3pjd0xVN1NJMjRhTWR4c1ozNnAwR1lKb0VOZ0FBQU1CVXRPRXZvZy9WaEYwTGdIR3RRbWhUZ3ZTNzRKc3hRTldXSWJRcDVkM216QmdBcGtWZ0F3QUFBRXhCRytLYVl5Mk1BQ2pBS3E1RG13dmpHTzMzZ2QrcHdES3VRNXVWY1l6aVk5aHBFbUJTQkRZQUFBQkE2ZHF3RU5pSHQwWUFGR1MxdnQ2RUhSVEcvTjNhR2dPd3ZRZW42UEczRU5xTUliM24yR2tTWUNJRU5nQUFBRURKMmhEWDlDWDl4ZjJKTVFDRldjWW1za214emNvNEJtVlJGN2lwVzE4L3I2L3o5WFZsSElOSnorZmZQS2NEVElQQUJnQUFBQ2hWRytLYXZ0bUNIaWhWT2k0cTdhQmdZWGRZZjRaRlhlQmF1ditlYmUvSG5YRU1wb2xOWkFOQTRRUTJBQUFBUUluYUVOZms4S3NSQUlVN2k4ME9DaGRHTVlnVTEveHBETUFkS2JSSlIwYWxIY1l1aldNUWkvWDF5UmdBeWlhd0FRQUFBRXJUaHJnbUY3c1VBRk93aXMyUlViK0VZNk9Ha0k2SnNxZ0xQR1FabStqeFE5aGRiQWp2dzQ2VEFFVVQyQUFBQUFBbGFVTmNrMHY2MThkdmpBR1lrR1ZjSHh0Rlh1KzN2NE1CSHZKNWV6KzJ1MWgrNlYyb01RYUFNZ2xzQUFBQWdGSzBJYTdKSmNVMWFTY0kvL0lZbUtLejJPeWdzRFNLck5JdU5xZkdBRHdpUFVlKzJWNmVLZk5KTzA1K013YUFNZ2xzQUFBQWdCSzBJYTdKUlZ3RHpPbGU1cGlTZkU2MnY0c2RKd2c4SmUxaVl6ZWJ2QnpkQjFBb2dRMEFBQUF3dGpiRU5ibUlhNEM1U2NlVS9MeTl2OUUvaTdyQVB1eG1rMTg2dXUrMU1RQ1VSV0FEQUFBQWpLa05jVTB1NGhwZ3JsYXhpV3pPalNMYjcyYUx1c0ErN0dhVFYzcFBhb3dCb0J3Q0d3QUFBR0FzYllocmNoSFhBRFU0aTAxb3N6S0szbG5VQmZhMTI4M21OOCtldlV0SDluMHpCb0J5Q0d3QUFBQ0FNYlFocnNsRlhBUFVkczlMa1UxbkZMMDY4WHNhZUtGdSt3enFDTDkrcGFQN3pvd0JvQXdDR3dBQUFHQm9iVmkweTBWY0E5UW8zZk4rQzdzbjlHMFJGbldCbHorTHB1anhzMUgwNnVQMm5nekF5QVEyQUFBQXdKRGFFTmZrSXE0QmF0ZUYzUlA2bGhaMVQ0MEJlS0VQc1RrMnluTnBmOUk3MUlreEFJeExZQU1BQUFBTXBRMXhUUzdpR29EYjk4TUxvK2lOUlYzZ0VCY2hldXhURTV2b0VZQVJDV3dBQUFDQUliUWhyc2xGWEFOd1c3b2ZwcDBUUGhoRkw5SU9OaFoxZ1dPZVUwV1AvWGkvdmw0YkE4QjRCRFlBQUFCQWJtMklhM0lSMXdBODdyTjdaRy9Tb3U3Q0dJQUQ3S0xIYzZQb2hWM0ZBRVlrc0FFQUFBQnlha05jazR1NEJ1QjV5M0JFU1Y4czZnTEhPSXROYU9QWjlUZ24zcThBeGlPd0FRQUFBSEpwdzEvKzVpS3VBWGo1UFhOcEZFZHB3bEZSd0hFdVBNUDI0blU0S2dwZ0ZBSWJBQUFBSUljMnhEVzVpR3NBWHU1cWUrL3NqT0lvam9vQytuaVcvZCt3czlpeFBvVmR4UUFHSjdBQkFBQUErdGFHdUNhWGJuMzlIT0lhZ0VQOXRyN09qZUVvZnNjRHg5cEZqeGRHY2JBbTdDb0dNRGlCRFFBQUFOQ25OaXk4NWRMRlptRVlnT09jdVo4ZXBkbk9FT0FZS2JKNUUzWVdPNFpkeFFBR0pyQUJBQUFBK3RLR3VDYVhMaXdHQStTNHI5b1I3REJwMTRUR0dJQWVwSHZ4WjJNNG1QY3ZnQUVKYkFBQUFJQSt0T0V2ZDNQcFFsd0RrT3YrbW80b0Vka2N4dTk5b0M4ZlBPOGVyQW03aWdFTVJtQURBQUFBSEtzTmkyeTVkR0d4QVNDbnl4RFpIR3F4ZlFZQThOdzdybmRoVnpHQVFRaHNBQUFBZ0dPMElhN0pwUXVMREFCREVOa2M3dFA2T2pFR3dQUHZxRTY4a3dFTVEyQURBQUFBSEtvTmY1R2JTeGNXRndDR0pMSTVURnJVL1dnTWdPZmcwUzNXMTJ0akFNaExZQU1BQUFBY29nMXhUUzVkV0ZRQUdJUEk1akR2MTllcE1RQ2VoMGYzeVFnQThoTFlBQUFBQUMvVmhyZ21seTRzSmdDTVNXUnpHSXU2Z09maThUWHI2OHdZQVBJUjJBQUFBQUF2MFlhNEpwY3VMQ0lBbEVCazgzS0xjRFFKNFBtNEJPOWlFOW9Ba0lIQUJnQUFBTmhYRytLYVhMcXdlQUJRRXBITnk5bkZCdkNjUEw2VDlmWFJHQUR5RU5nQUFBQUErMmhEWEpOTEZ4WU5BRW9rc25tWkpoeE5BbmhlTHVYZDdkUVlBUG9uc0FFQUFBQ2UwNGE0SnBjdUxCWUFsQ3hGTmgrTVlXL3BhSklUWXdBeVBUZDN4ckEzdTRvQlpDQ3dBUUFBQUo3U2hyZ21seTdFTlFEdTEvUGlhQklncDk5Q1pMT3Z4ZllDb0VjQ0d3QUFBT0F4YllocmN1bkNZaTNBMU83YjU4YXdsL2V4T1M0S0lJZjBETDAwaHIxNGx3UG9tY0FHQUFBQWVFZ2Iva0kybHk3RU5RQlRkQloyVHRpWFhXeUFuTjdFNWdnL250WnMzK3NBNkluQUJnQUFBTGlyRFhGTkxsMklhd0Ntek00Sit6OUxuQm9Ea01uVit2cGwreWRQRXp3QzlFaGdBd0FBQU56VWhyZ21seTdFTlFCellPZUUvWHd5QWlBamtjMSttdGdjM1FkQUR3UTJBQUFBd0U0YjRwcGN1aERYQU16RjFmYWVibEgzYVl2dEJaQkxpaDAvR01PejBpNDJKOFlBY0R5QkRRQUFBSkMwSWE3SnBRdHhEY0RjcEVYZE44YndMRWVUQUVNOGE1OGJ3NU5TWEdNWEc0QWVDR3dBQUFDQU5zUTF1WFFocmdHWXEyWFlPZUU1aTdDTERaRGYyZnE2TUlZbnZRdTcyQUFjVFdBREFBQUFkV3REWEpOTEYrSWFnTG43SEJaMW4yTVhHMkFJNmJsN1pReVBzb3NOUUE4RU5nQUFBRkN2TnNRMXVYUWhyZ0dvUmJyZlh4ckRveFpoRnhzZ3Y2dllITjEzWlJTUHNvc053SkVFTmdBQUFGQ25Oc1ExdVhRaHJnR295ZFgydm05UjkzRjJzUUdHa0dKSFIvYzk3bVQ3SGdqQWdRUTJBQUFBVUo4MnhEVzVkQ0d1QWFpUlJkMm5MZFpYWXd6QVFNL2puVEU4NnAwUkFCeE9ZQU1BQUFCMWFVTmNrMHNYNGhxQTJuOFBkTWJ3S0x2WUFFTkp3YU9qK3g3V2hGMXNBQTRtc0FFQUFJQjZ0Q0d1eWFVTGNRMEFtMFhkbFRFOCtoelNHQU13Z0N2UDVrOFNQQUljU0dBREFBQUFkV2hEWEpOTEYvNENINENOdEtqN3hoZ2VaVkVYR0lxait4N1hySy9YeGdEd2NnSWJBQUFBbUw4MnhEVzVkQ0d1QWVDMnRLaDdiZ3dQU2d1Nko4WUFET1R6K2xvYXc0UGVHUUhBeXdsc0FBQUFZTjdhRU5mazBvVzRCb0NIbmNVbXRPRzJGTmU4TndaZ1FPbDUvY29ZN2xsc0x3QmVRR0FEQUFBQTg5V0d1Q2FYTHNRMUFEek5vdTdEM2hvQk1LQ1Y1M2IzWTRDK0NHd0FBQUJnbnRvUTErVFNoYitrQitCNWpvcDZXTE45VGdFWXlzWDI0djQ3WTJNTUFQc1QyQUFBQU1EOHBLTVh4RFY1ZENHdUFXQi9uOE5SVVE5NVp3VEF3T3dxOXJEV0NBRDJKN0FCQUFDQWVVbGh6U2RqeUtJTGNRMEFMK2QzeDMybjJ3dGdLQ211c2F2WWZZSkhnQmNRMkFBQUFNQjhwTGltTllZc3VyQkFDc0JoSEJYMU1JdTZ3TkRTcm1KTFk3amx4RHNrd1A0RU5nQUFBREFQNHBwOHVoRFhBSENjcy9XMU1vWmIwblBMaVRFQUEvTmNmOTliSXdEWWo4QUdBQUFBcGs5Y2swOFgvaEllZ0g3NGZYS2Y1eGRnYUt1d3E5aGRpM0JzSDhCZUJEWUFBQUF3YmVLYWZMcXdHQXBBZjVicjY4SVlibkZNRkRDR2RGVFV5aGpjandGZVNtQURBQUFBMHlXdXlhY0xjUTBBL2Z1d3ZxNk00WWNtTmpzbkFBenBhbnMvNXRwckl3QjRuc0FHQUFBQXBrbGNrMDhYNGhvQThsaXRyeS9HY010Ykl3QkdrSFlVV3hyRER5ZmVMd0dlSjdBQkFBQ0E2UkhYNU5PRnVBYUF2TTdDMFNRM3BWMFRUb3dCR0lIbi90c0Vqd0RQRU5nQUFBREF0SWhyOHVuQ1g3SURNSXh6SS9naHhUV09KZ0hHc0ZwZm40M2hoMFZzanU0RDRCRUNHd0FBQUpnT2NVMCtYWWhyQUJqMjk4N1NHSDZ3YXdJd2xoUThYaG5ERDk0M0FaNGdzQUVBQUlCcEVOZmswNFc0Qm9EaDJjWG0yaUxzbWdDTUk4VTFYNHpoQjhFandCTUVOZ0FBQUZBK2NVMCtYWWhyQUJqSE11eGljNU5qb29DeHBHT2lWc2J3WGJPK1RvMEI0R0VDR3dBQUFDaWJ1Q2FmTHNRMUFJekw3NkZyNzR3QUdFbmF4Y2F1WXRmc1lnUHdDSUVOQUFBQWxFdGNrMDhYRmpVQkdOOXErenNKdXlZQTQ3OGZySXpoTysrZ0FJOFEyQUFBQUVDWnhEWDVkQ0d1QWFBY2RrMjRadGNFd1AxNGZDZmgyRDZBQndsc0FBQUFvRHppbW55NkVOY0FVSlpWMk1WbXg0SXVNUGE3d3NvWXZ2dlZDQUR1RTlnQUFBQkFXY1ExK1hRaHJnR2dUSFpOMkdqQ01WR0ErM0VKQkk4QUR4RFlBQUFBUURuRU5mbDBJYTRCb0Z5cnNJdk5qbU9pZ0xIZkcxYkc0SmdvZ0ljSWJBQUFBS0FNNHBwOHVoRFhBRkMrTDBid25RVmRZR3gyc2Rsd1RCVEFIUUliQUFBQUdKKzRKcDh1eERVQVRNUGwrbG9hZzJPaWdORmRySzhyWTRpRkVRRGNKckFCQUFDQWNZbHI4dWxDWEFQQXROZzFZV05oQk1DSVVseGpWekhCSThBOUFoc0FBQUFZajdnbW55N0VOUUJNejNKOXJZd2gzaG9CTUxMUFJ1QitESENYd0FZQUFBREdJYTdKcHd0eERRRFRaUmVielk0Sko4WUFqT2hxKzE1UnU0VVJBRndUMkFBQUFNRHd4RFg1ZENHdUFXRDZ2OHV1akNGZUd3RXdNc2RFYllMSHhoZ0FOZ1EyQUFBQU1DeHhUVDVkaUdzQW1BZUx1aEcvR2dFd3NzdllITjFYdTRVUkFHd0liQUFBQUdBNDRwcDh1aERYQURDdjMydTFXeGdCVUlEZmpVRHdDTEFqc0FFQUFJQmhpR3Z5NlVKY0E4QzhyTmJYUmVVek9BbVJEVkRHdTBidHgvYTVGd05zQ1d3QUFBQWdQM0ZOUGwySWF3Q1lKN3NtV05RRnlubm5xSm5nRVdCTFlBTUFBQUI1aVd2eTZVSmNBOEI4cFIxc1ZwWFB3TEVrUUFtK0dJSEFCaUFSMkFBQUFFQSs0cHA4dWhEWEFEQi90UjhUZFJxYm5STUF4clJhWDh2S1p5QjRCQWlCRFFBQUFPUWlyc21uQzNFTkFIV3dhNEpkRTRBeTFINXNuK0FSSUFRMkFBQUFrSU80SnA4dXhEVUExR08xdmk0cm44RXJQd1pBQVM2TVFQQUlJTEFCQUFDQWZvbHI4dWxDWEFOQWZXcmZOV0hoUndBb3dOWDJmYVJtZ2tlZ2VnSWJBQUFBNkkrNEpwOHV4RFVBMVBzN3NHYU9KUUZLOFlmN01VRGRCRFlBQUFEUUQzRk5QbDJJYXdDb1Y5bzFvZmFqU1JaK0RJQUNYR3p2eWU3RkFKVVMyQUFBQU1EeHhEWDVkQ0d1QVFDN0pnQ1VRZkFJVURHQkRRQUFBQnhIWEpOUEYrSWFBRWhxWDlCOTVVY0FLRVR0d2VQQ2p3QlFNNEVOQUFBQUhFNWNrMDhYNGhvQTJFbEhraXdyL3Z3TFB3SkFJV28vSnVvblB3SkF6UVEyQUFBQWNCaHhUVDVkaUdzQTRDN0hSQUdVb2VaZHhSYStmcUJtQWhzQUFBQjRPWEZOUGwySWF3RGdJYlVmRTdYd0l3QVU0cStLUC92SittcjhDQUMxRXRnQUFBREF5NGhyOHVsQ1hBTUFqMW10cjh1S1A3OWpTWUJTMUI0ODJsRU1xSmJBQmdBQUFQWW5yc21uQzNFTkFEeG5XZkZudDZBTGxPS3E4dnZ4S3o4Q1FLMEVOZ0FBQUxBZmNVMCtYWWhyQUdBZmYxVDgyUVUyZ1B1eCt6SEFxQVEyQUFBQThEeHhUVDVkaUdzQVlGL0wyT3ljVUt1Rkh3R2dvUHR4clFRMlFMVUVOZ0FBQVBBMGNVMCtYWWhyQU9DbGxoVi9kb3U2UUNrdW85N2c4V1I5Tlg0RWdCb0piQUFBQU9CeDRwcDh1aERYQU1BaC9xcjRzLy9MMXc4VVpGbnhaeGM4QWxVUzJBQUFBTUREeERYNWRDR3VBWUJETFN2KzdCWjBnWkxVSER5Nkh3TlZFdGdBQUFEQWZlS2FmTG9RMXdEQU1Xbytsc1NDTGxDU1pjV2YvU2RmUDFBamdRMEFBQURjSnE3SnB3dHhEUUQwWVZucDV6NVpYNDJ2SHloRXpjR2plekZRSllFTkFBQUFYQlBYNU5PRnVBWUErbEx6c1NTTnJ4OG95TExTejIxSE1hQktBaHNBQUFEWUVOZmswNFc0QmdENmRGbnhaN2VvQzVTazV1RFIvUmlvanNBR0FBQUF4RFU1ZFNHdUFZQytMU3YrN1AveTlRTUZxVGw0Ykh6OVFHMEVOZ0FBQU5ST1hKTlBGK0lhQU1obFdlbm50bU1DNEY3c2Znd3dDb0VOQUFBQU5SUFg1Tk9GdUFZQWNxcDExNFRHVncrNEh4ZkJqbUpBZFFRMkFBQUExRXBjazA4WDRob0F5TzNmbFg3dXhsY1BGRWJ3Q0ZBSmdRMEFBQUExRXRmazA0VzRCZ0NHY0ZueFozY3NDVkNTV29OSDkyS2dPZ0liQUFBQWFpT3V5YWNMY1EwQURLWG13T2JFMXcrNEg3c1hBd3hOWUFNQUFFQk54RFg1ZENHdUFZQ2gxYnFvYTljRW9DVExpais3K3pGUUZZRU5BQUFBdFJEWDVOT0Z1QVlBeHJDcTlIUGJOUUZ3UDNZL0JoaWN3QVlBQUlBYWlHdnk2VUpjQXdCaitYZWxuL3NuWHoxUW1GV2xuOXNPTmtCVkJEWUFBQURNbmJnbW55N0VOUUF3cGxxUGlMSmpBbENhdjl5UEFlWlBZQU1BQU1DY2lXdnk2VUpjQXdCalcxWDZ1UnRmUFZDWXEwby85Nzk4OVVCTkJEWUFBQURNbGJnbW55N0VOUUJRZ2xwM3NHbDg5WUQ3c2ZzeHdOQUVOZ0FBQU15UnVDYWZMc1ExQUZDU2xSRUF1QmNEa0ovQUJnQUFnTGtSMStUVGhiZ0dBRXF6cXZSekwzejFnSHV4ZXpIQWtBUTJBQUFBekltNEpwOHV4RFVBVUtLVkVRQVU0ZElJQU9aTllBTUFBTUJjaUd2eTZVSmNBd0NsK20rbG4vdkVWdzhVNXNvSUFPWk5ZQU1BQU1BY2lHdnk2VUpjQXdBbHEzVkI5OVJYRHhSbVZlbm5YdmpxZ1ZvSWJBQUFBSmc2Y1UwK1hZaHJBS0IwamlRQktNTi9qUUJnM2dRMkFBQUFUSm00SnA4dXhEVUFBQUFBOEozQUJnQUFnS2tTMStUVGhiZ0dBS2FpMWgxc2Z2TFZBNFZaVnZxNUcxODlVQXVCRFFBQUFGTWtyc21uQzNFTkFFekpWYVdmKzhSWEQxQ0V4Z2lBV2doc0FBQUFtQnB4VFQ1ZGlHc0FBQUFPY1dVRUFQTW1zQUVBQUdCS3hEWDVkQ0d1QVlDcHVqUUNBUGRpQVBJUzJBQUFBREFWNHBwOHVoRFhBTUNVMlRVQkFBQXlFOWdBQUFBd0JlS2FmTG9RMXdBQTA3TXdBb0FpL0dRRVFDMEVOZ0FBQUpST1hKTlBGK0lhQUFDQXZ0UzRvOWlKcngyb2hjQUdBQUNBa29scjh1bENYQU1BYzdFeUFvQWlYQm9Cd0h3SmJBQUFBQ2lWdUNhZkxzUTFBREFuL3pVQ0FBRElTMkFEQUFCQWljUTErWFFocmdFQUFBQ0FGeEhZQUFBQVVCcHhUVDVkaUdzQUFBQUE0TVVFTmdBQUFKUkVYSk5QRitJYUFBQUFBRGlJd0FZQUFJQlNpR3Z5NlVKY0F3QUFBQUFIRTlnQUFBQlFBbkZOUGwySWF3QUFBQURnS0FJYkFBQUF4aWF1eWFjTGNRMEFBQUFBSEUxZ0F3QUF3SmpFTmZsMElhNEJBQUFBZ0Y0SWJBQUFBQmlMdUNhZkxzUTFBQUFBQU5BYmdRMEFBQUJqRU5mazA0VzRCZ0FBQUFCNkpiQUJBQUJnYU9LYWZMb1Exd0FBQUFCQTd3UTJBQUFBREVsY2swOFg0aG9BQUFBQXlFSmdBd0FBd0ZERU5mbDBJYTRCQUFBQWdHd0VOZ0FBQUF4QlhKTlBGK0lhQUtqZFA0MEFBQUR5RXRnQUFBQ1FtN2dtbnk3RU5RQkF4S2tSQUxnZkE1Q1h3QVlBQUlDY3hEWDVkQ0d1QVFBQUtNbUpFUURNbDhBR0FBQ0FYTVExK1hRaHJnRUE2blpwQkFCRitNc0lnRm9JYkFBQUFNaEJYSk5QRitJYUFJQXJJd0FBWUVnQ0d3QUFBUG9tcnNtbkMzRU5BSERmd2dnQVJuZHFCQUR6SnJBQkFBQ2dUK0thZkxvUTF3QUFBSlRxeEFnQTVrMWdBd0FBUUYvRU5mbDBJYTRCQUFDZ1BJN3NBNm9oc0FFQUFLQVA0cHA4dWhEWEFBQ1BXMVQ2dWYveTFRT0ZxZldJcUV0ZlBWQUxnUTBBQUFESEV0ZmswNFc0QmdBQVlBb2NFUVV3Y3dJYkFBQUFqaUd1eWFjTGNRMEE4THpHQ0FDSzhFOGpBSmczZ1EwQUFBQ0hFdGZrMDRXNEJnRFlUMVBwNTNZa0NWQWFSMFFCekp6QUJnQUFnRU9JYS9McFFsd0RBT3l2MWgwVHJuejFRR0ZxUFNMSy9SaW9oc0FHQUFDQWx4TFg1Tk9GdUFZQWVKbFRJd0J3UHdZZ1A0RU5BQUFBTHlHdXlhY0xjUTBBOEhKTnBaL2JrU1JBU1dyZHZXYnBxd2RxSXJBQkFBQmdYK0thZkxvUTF3QUFoMmtxL2R5T0pBRktZdmNhZ0FvSWJBQUFBTmlIdUNhZkxzUTFBTUJoYWwzUUZkY0FwV2txL2R3clh6MVFFNEVOQUFBQXp4SFg1Tk9GdUFZQU9GeXRSNUk0SGdvb1RWUHA1LzZ2cng2b2ljQUdBQUNBcDRocjh1bENYQU1BSEdkaEJBQkYrS25TejIxSE1hQXFBaHNBQUFBZUk2N0pwd3R4RFFCd3ZIOVYrcm4vOHRVRGhXa3EvZHgyRkFPcUlyQUJBQURnSWVLYWZMb1Exd0FBL1dpTUFLQUlwMFlBTUg4Q0d3QUFBTzRTMStUVGhiZ0dBT2pQb3RMUHZmVFZBKzdGN3NjQVF4UFlBQUFBY0pPNEpwOHV4RFVBUUgvc2xnQlFocWJTejMzbHF3ZHFJN0FCQUFCZ1IxeVRUeGZpR2dDZ1gwM0ZuMzNwNndjSzhsT2xuL3ZTVncvVVJtQURBQUJBSXE3SnB3dHhEUURRdjFwM3NMRmpBdUIrN0g0TU1BcUJEUUFBQU9LYWZMb1Exd0FBZWJ5cTlIUGJNUUVvemFMU3ovMXZYejFRRzRFTkFBQkEzY1ExK1hRaHJnRUE4bGxVK3JsWHZucWdJS2NWZjNiQkkxQWRnUTBBQUVDOXhEWDVkQ0d1QVFEeXFYbEI5NysrZnFBZ2k0by91eU9pZ09vSWJBQUFBT29rcnNtbkMzRU5BSkRYb3VMUHZ2VDFBd1g1eWYwWW9CNENHd0FBZ1BxSWEvTHBRbHdEQU9SWDg0THV5dGNQRkdUaFhneFFENEVOQUFCQVhjUTErWFFocmdFQWhyR28rTE92ZlAxQUlacnQ1VjRNVUFtQkRRQUFRRDNFTmZsMElhNEJBSWJSUkwwTHVrdGZQMUNRUmNXZi9TOWZQMUFqZ1EwQUFFQWR4RFg1ZENHdUFRQ0dzNmo0czY5OC9VQkJYcmtmQTlSRllBTUFBREIvNHBwOHVoRFhBQUREcW5sQjk5KytmcUFnaTRvLys2V3ZINmlSd0FZQUFHRGV4RFg1ZENHdUFRQ0c5N3JpejI1QkZ5aEZFL1VlMStkK0RGVHJIMFlBQUFBd1crS2FmRkpZMHhrREFEQ3cwL1YxVXZIbnQ2QUxsS0xtMkhIcDZ3ZHFaUWNiQUFDQWVSTFg1Q091QVFER3NxajRzNi9XMTVVZkFhQVFOUi9YSjNZRXFpV3dBUUFBbUI5eFRUN2lHZ0JnVEc4ci91d1dkSUdTMUx5RHpiOTkvVUN0QkRZQUFBRHpJcTdKUjF3REFJd3BIUTExV3ZIbi84dVBBRkNJMTVWL2ZzRWpVQzJCRFFBQXdIeUlhL0lSMXdBQVk3T2dDMUNHWDkyUEFlb2tzQUVBQUpnSGNVMCs0aG9Bb0FTMUwrZ3UvUWdBaFZpNEZ3UFVTV0FEQUFBd2ZlS2FmTVExQUVBcGF0N0J4bTRKUUNuU1VYMU54Wi9mY1gxQTFRUTJBQUFBMHlhdXlVZGNBd0NVb3Ziam9aWitCSUJDdkszODh3c2VnYW9KYkFBQUFLWkxYSk9QdUFZQUtFbnR4MFBaTVFFb2hlQVJvR0lDR3dBQWdHa1MxK1FqcmdFQVNuSVNGblR0bUFDVW9QYmpvZEs5K01xUEFWQXpnUTBBQU1EMGlHdnlFZGNBQUtWSmNjMUp4WjkvdGIwQXh2YXU4cysvOUNNQTFFNWdBd0FBTUMzaW1uekVOUUJBaVdvL0htcnBSd0FvUk8yN2lmM2Jqd0JRTzRFTkFBREFkSWhyOGhIWEFBQWxjanhVeEY5K0RJQUMxTDZiV0hMaHh3Q29uY0FHQUFCZ0dzUTErWWhyQUlCU2VmNnpndzFRaHJlVmYvN0w5WFhseHdDb25jQUdBQUNnZk9LYWZNUTFBRURKM2xYKytkT0M3c3FQQVRBeXU0bUpIUUcrRTlnQUFBQ1VUVnlUajdnR0FDalo2ZnBxS3AvQjBvOEJVQUR2NUk3ckEvaE9ZQU1BQUZBdWNVMCs0aG9Bb0hUdmpNQ0NMdUIrWElpbEVRQUliQUFBQUVvbHJzbEhYQU1BbE01eEpCdExJd0JHdGdpN2lhVjc4WlVmQlFDQkRRQUFRSW5FTmZtSWF3Q0FLVWpQZ2llVnoyQVpGblNCOGIwMWd2akRDQUEyQkRZQUFBQmxFZGZrSTY0QkFLYkNjU1FXZElIeE5kN1B2MXNhQWNDR3dBWUFBS0FjNHBwOHhEVUF3RlFzd25Fa3lZVVJBQ1B6Zmg2eFdsK1h4Z0N3OFE4akFBQUFHRjNhL3Y5YmJCWlQ2Sis0QmdDWWtvOUc4SDFCZDJVTXdNanNKaVoyQkxoRllBTUFBREN1Rk5mOHViNU9qU0lMY1EwQU1DVk5pSzRUQzdyQTJOcnQrM3J0L2pJQ2dHdU9pQUlBQUJpUHVDWXZjUTBBTURWMnI5bjQzUWdBOStQUlhZWGdFZUFXZ1EwQUFNQTR4RFY1aVdzQWdLbHBZck5qUXUzU2d1NmxNUUFqYXJmMzVOcUphd0R1RU5nQUFBQU1UMXlUbDdnR0FKaWlkMGJ3blFWZFlHeHZqZUE3eDBNQjNDR3dBUUFBR0phNEppOXhEUUF3MVdmRTFoaSsrOE1JZ0JFdHRoZUNSNEI3QkRZQUFBRERFZGZrSmE0QkFLYnEvZlpac1hicGVDZ0x1c0NZUGhyQmR4ZmJleklBTndoc0FBQUFoaUd1eVV0Y0F3Qk0rVG5SOFZBYjRocGdUSXV3ZTgyTzNjUUFIaUN3QVFBQXlFOWNrNWU0QmdDWU1ydlhYTE9nQzR6SjdqVWJkaE1EZUlUQUJnQUFJQzl4VFY3aUdnQmc2cytLZHEvWnNLQUxqR2tSZHEvWmNUd1V3Q01FTmdBQUFQbUlhL0lTMXdBQVUvY3A3RjZ6NDdrT0dQdCt6SWJkeEFBZUliQUJBQURJUTF5VGw3Z0dBSmk2Wm4yMXh2REQ3MFlBaktUMTd2NkQzY1FBbmlDd0FRQUE2Sis0Smk5eERRQXdCeCtONElmVitybzBCc0Q5ZUhUZXRRR2VJTEFCQUFEb2w3Z21MM0VOQURBSGk3Qjd6VTFmakFBWXlWbHNkaFJqdzI1aUFFOFEyQUFBQVBSSFhKT1h1QVlBbUF1N0pkem1PQkpnckhmNGQ4Ynd3eXJzSmdid0pJRU5BQUJBUDhRMWVZbHJBSUM1YUdPemd3MGJLYTVaR1FNd2dvL2JkM2syN0NZRzhBeUJEUUFBd1BIRU5YbUphd0NBT1QwMzJyM210aitNQUJoQmVuOS9id3kzZU84R2VJYkFCZ0FBNERqaW1yekVOUURBbktURjNNWVlmcmp5ckFlTTVKTVIzTkp0NzhrQVBFRmdBd0FBY0RoeFRWN2lHZ0JnVHBxd2U4MWRudldBTWJUaHFMNjdmamNDZ09jSmJBQUFBQTRqcnNsTFhBTUF6TTFYSTdqbml4RUFJN3pMMjczbXR0WDZXaG9Ed1BNRU5nQUFBQzhucnNsTFhBTUF6RTBiZGt1NGF4bWJSVjJBSVgzY3Z0TnpUZXdJc0NlQkRRQUF3TXVJYS9JUzF3QUFjM3grdEZ2Q2ZSWjBnYUV0MXRkN1k3akhPempBbmdRMkFBQUEreFBYNUNXdUFRRG02R3ZZTGVHdTFmcTZNQVpnNFBkNVIvWGRsOTdCcjR3QllEOENHd0FBZ1AySWEvSVMxd0FBYy9SNmUzR2IzV3VBb2FXZGF4cGpjRDhHT0liQUJnQUE0SG5pbXJ6RU5RREFYSjhoN1padzM1Vm5QMkJnNlYzK296SGNzMXhmbDhZQXNEK0JEUUFBd05QRU5YbUphd0NBdVhJMDFNUFMwVkNPSXdHR2ZLZi9aZ3dQc25zTndBc0piQUFBQUI0bnJzbExYQU1BekpXam9SNTNiZ1RBZ05MT05ZMHgzTE9LVGZBSXdBc0liQUFBQUI0bXJzbExYQU1BelBrNTB0RlFEMHVMdVN0akFBYXlXRi92amVGQllrZUFBd2hzQUFBQTdoUFg1Q1d1QVFEbTdGczRHdW94amlNQmhueXZkelRVdzlJeGZYYXZBVGlBd0FZQUFPQTJjVTFlNGhvQVlNN1NUZ2tMWTNqUWNuc0JET0ZyaUIwZmsyTEhLMk1BZURtQkRRQUF3RFZ4VFY3aUdnQmd6dEl6NUNkamVKVGpTSUNocE5qeHRURThLSVUxbjQwQjREQUNHd0FBZ0ExeFRWN2lHZ0JnN3MrU2ppSjUzQ3JzWGdNTVErejROTHZYQUJ4QllBTUFBQ0N1eVUxY0F3RE1YVHFLcERHR1I5bTlCaGpxM1Y3cytEVHY1Z0JIRU5nQUFBQzFFOWZrSmE0QkFPYnVMQnhGOHBTVjUwRmdJQ211YVl6aFVkMzJuZ3pBZ1FRMkFBQkF6Y1ExZVlsckFJQzVXNnl2ajhid0pMdlhBRU00Mjk2VGNUOEd5RVpnQXdBQTFFcGNrNWU0QmdDWXV5WWNSZktjbFdkQ1lBQnBGekd4NDlPNnNIc053TkVFTmdBQVFJM0VOWG1KYXdDQUdwNG52MjMvNUhGMlN3QnlTKy8xWDQzQi9SaGdDQUliQUFDZ051S2F2TVExQUVBTnZucWVmTmJLY3lFd3dQdTkyUEY1NTJIM0dvQmVDR3dBQUlDYWlHdnlFdGNBQURYNEZKdmpTSGphQnlNQU1rdnY5NDB4UE9scWZYMDJCb0IrQ0d3QUFJQmFpR3Z5RXRjQUFEVm8xOWQ3WTNqV2NuMWRHQU9Ra1ozRTl2TWxOcEVOQUQwUTJBQUFBRFVRMStRbHJnRUFhcEIycmZscURIczVOd0lnbzdTVFdHc016N0o3RFVEUEJEWUFBTURjaVd2eUV0Y0FBRFZJejVMaW12MHN0eGRBRG0zWVNXeGZLWGEwZXcxQWp3UTJBQURBbklscjhoTFhBQUExT04wK1U1NFl4ZDdQaUFBNXRDRjIzTmNxN0Y0RDBEdUJEUUFBTUZmaW1yekVOUUJBTGMrVTMwSmNzNi8wZkxneUJpQURPNG05ekFjakFPaWZ3QVlBQUpnamNVMWU0aG9Bb0tabnlzWW85cEtPSWJHZ0MrU3cyMG1NL1N6WDE0VXhBUFJQWUFNQUFNeU51Q1l2Y1EwQTRKbVNoM3lKVFdRRDBDZkg5TDJjMkJFZ0U0RU5BQUF3SnhaQzhoTFhBQUNlS1huSWFuMmRHUVBRTTNITnk2VjM5a3RqQU1oRFlBTUFBTXlGaFpDOHhEVUFnR2RLSG1PM0JLQnY0cHFYYzFRZlFHWUNHd0FBWUE0c2hPUWxyZ0VBUEZQeW1PWDZ1akFHb0VmaW1zT2NoNlA2QUxJUzJBQUFBRk5uSVNRdmNRMEE0Sm1TNTU0WEFmb2lyamxNT2hicXN6RUE1Q1d3QVFBQXBzeENTRjdpR2dEQU15VlBTYnNsckl3QjZJbTQ1bkNPaGdJWWdNQUdBQUNZS2dzaGVZbHJBQURQbER4bEZYWkxBUG9qcmpsY2VuZGZHZ05BZmdJYkFBQmdpaXlFNUNXdUFRQnEwSGltUFBxWjhjb1lnQjY4RG5ITm9kSjkyTzQxQUFQNWh4RUFBQUFUSTY3SlMxd0RBTlRBVGduSHVRaTdKUUQ5YU5mWFYyTTRXSXByeEk0QUE3R0REUUFBTUNYaW1yekVOUUJBRGNRMXg3bmFQamNDSE90OWlHdU9zZlFPRHpBc2dRMEFBREFWNHBxOHhEVUFRQTNhOWZWM2lHdU9jUjUyU3dDT2w4S2FUOFp3TUxFandBZ0VOZ0FBd0JTSWEvSVMxd0FBTlRnTE95VWNhN20rUGhzRGNPVDcvYmZZQkk4Y0xzV09LMk1BR05ZL2pBQUFBQ2ljdUNZdmNRMEFVTVB6Wk5vbG9UV0tvOWd0QVRoV0U1dTR4dnY5Y1M1RDdBZ3dDb0VOQUFCUU1uRk5YdUlhQU1EekpQdXlXd0p3ak5QdC9kZ1JmZjI4eXdNd0FrZEVBUUFBcGJJWWtwZTRCZ0NZdS9RYytSL1BrNzFZaHQwU2dNTzE2K3Z2RU5mMDRVTnNkckFCWUFRQ0d3QUFvRVRpbXJ6RU5RREEzTFZoTWJjdmpvWUNqbm0zLzdxOU9ONHl4STRBbzNKRUZBQUFVQnB4VFY3aUdnQmc3cytTbjJJVDJOQ1B0RnZDeWhpQUYyclcxemZ2OXIwUk93SVV3QTQyQUFCQVNjUTFlWWxyQUlBNU85MCtTN1pHMFpzTHo0L0FBVjdIWmhjeDcvYjlFVHNDRkVCZ0F3QUFsRUpjazVlNEJnQ1lzOWF6Wk85V1liY0U0T1hTTG1MZndoRjlmUkk3QWhUQ0VWRUFBRUFKeERWNWlXc0FnRGsvUnpvU0t0OHo1SlV4QUh0SzcvTmZ2ZGYzenRGUUFBV3hndzBBQURBMmNVMWU0aG9BWUs0V3NUbUNwRFdLM3AydnI2VXhBSHQ2NzcwK216Y2hkZ1FvaGgxc0FBQ0FNWWxyOGhMWEFBQnpkYmErUGhwREZwZmIrUUxzODA2ZmpvTmFHRVVXWWtlQXdnaHNBQUNBc1locjhoTFhBQUJ6NUFpU3ZOSXVDVytNQWRqRDYrMzkrTVFvc2xpRzJCR2dPSTZJQWdBQXhpQ3V5VXRjQXdETTBWbHNqb1R5REpuM09YSmxETUF6Ny9QZnRwZTRKZyt4STBDaDdHQURBQUFNVFZ5VGw3Z0dBSmliUld4MlNXaU1JcXZQNit2Q0dJQW52SS9OOFh6Q21yeFNYSE5sREFEbHNZTU5BQUF3SkhGTlh1SWFBR0J1ejQ2ZnRzK1BqWEZrdFZ4Zkg0d0JlTVRwOWw3OEtjUTF1WjF2NzhrQUZNZ09OZ0FBd0ZERU5YbUphd0NBT1duRFF1NVFIRVVDUFBVZXY5dTFodnpTTG1KbnhnQlFMb0VOQUFBd0JIRk5YdUlhQUdBdTB2TmlDbXNXUmpHWVg4SlJKTUI5Yld6Q21zWW9CckhhdnRzRFVEQ0JEUUFBa0p1NEppOXhEUUF3bDJmR0ZOYTBSakg0cytTbE1RQTNMR0lUMWl5TVlqQzduY1RFamdDRkU5Z0FBQUE1aVd2eUV0Y0FBSE40WGt6SGo3d0x4MEVOcmZNc0NkelF4Q2FzYVkxaWNCOUM3QWd3Q1FJYkFBQWdGM0ZOWHVJYUFHRHEydGpzV2lPc0dkNWxPSW9FdUg1M1Q2SGpSNk1ZeGJsM2U0RHBFTmdBQUFBNWlHdnlFdGNBQUZQV3htWWh0ekdLVWF6VzF5L0dBTjdid3c1aVk3dFlYMmZHQURBZEFoc0FBS0J2NHBxOHhEVUF3RlMxSWF3WjI5WDZlclA5RTZqM25WMVlNejQ3aVFGTWtNQUdBQURvazdnbUwzRU5BREJGYlFoclNucWV2RFFHcVBaOVhWaFRoaFE1L2hKaVI0REpFZGdBQUFCOUVkZmtKYTRCQUtiMmJQZzZoRFdsUFU5ZUdBTlVKOTJEVTFUVGhyQ21CT0lhZ0FrVDJBQUFBSDBRMStRbHJnRUFwcUtKelNLdUhSTEswbm1laE9xY3huVllRMW52OTNZU0E1Z29nUTBBQUhBc2NVMWU0aG9BWUFvVzYrdHRXTWd0VWJkOXBnVHEwRzd2eHd1aktQTDkzazVpQUJNbXNBRUFBSTRocnNsTFhBTUFsUDRzbUk2QmV1ZDVzRmhwbDRRUHhnQ3oxOFIxV05NWVI1RStlNzhIbUQ2QkRRQUFjQ2h4VFY3aUdnQ2dWTHRqUjE2SFk2QktsdUthWDliWGxWSEFiTFhyNjlmdC9aaHlwWGQ3c1NQQURBaHNBQUNBUTRocjhoTFhBQUNsYWVKNnQ1ckdPSXFYb2hweERjeVR5SEZhdW5CTUg4QnNDR3dBQUlDWEV0ZmtKYTRCQUVwNjdtdGpjK1NJWjcvcEVOZkEvSnh1NzhVcHFtbU1ZekljMHdjd013SWJBQURnSmNRMWVZbHJBSUN4TmJGWndFMUhqaXlNWTNKMmNjMmxVY0RraVdxbXpURjlBRE1rc0FFQUFQWWxyc2xMWEFNQWpDVTkzKzJpR3M5NjB5V3VnZW03R1RnMnhqRlo0aHFBbVJMWUFBQUEreERYNUNXdUFRQ0cxTVJtOGZaVmJCWnpUNHhrRnQ2RXVBYW01dlRPL1pqcEU5Y0F6SmpBQmdBQWVJNjRKaTl4RFFDUVd4UFhDN2lMc0N2Q1hKOHBsOFlBeFR1OWN6OFdPTTdMS3NRMUFMTW1zQUVBQUo0aXJzbExYQU1BNUxEWVhqOXRuK01hSS9GTUNReXUyZDZEMC9WcSs2ZWdacjVTVlBNbXhEVUFzeWF3QVFBQW52STF4RFc1V0FnQkFJN1Z4UFh1TkdJYXo1VEFlRTV2M0lQRk5QVkpVVTNhdWNZeGZRQXpKN0FCQUFDZTRpOEU4N0FRQWdEc2E3ZEl1L3N6aFRSTmlLRHhUQWxEVzl6NDg1OXhIZFEwUmxNMWNRMUFSUVEyQUFBQXc3SVFBZ0IxYXVMaFJkakZqZjg3eFRNbkQvenY0SmtTK3ZQUTdqSzdrSEhuMVNQL085eDB1YjBmaTJzQUtpR3dBWWo0ZjBZQU1CbkwyUHlySUpncUN5RkFLZjRNaS9jQVUzUzFmYWE4TUlvczJ0Z2Nrd3Z3bkJUVi9MSzlMd05RQ1lFTkFBREFNTVExQUFBY3d6RWsrZTJlMTBVMndGUEVOUUNWK2g4akFBQUF5RTVjQXdEQU1jUTF3K20yeis4QUR4SFhBRlJNWUFNQUFKQ1h1QVlBZ0dPSWE0YlhoY2dHdUU5Y0ExQTVnUTBBQUVBKzRob0FBSTZSRm5OL0RuSE5HTG9RMlFDMzd3bnBmaXl1QWFqWVA0d0FBQUFnQzNFTkFBREhzRlBDK0hiUDgxK05BcXEvRndqdUFMQ0REUUFBUUFiaUdnQUFqbkVSNHBwU2RHRmhIV3Iyd1QwQWdCMDcyQUFBQVBSTFhBTUF3REc2c0pqNy85bTcxK080alN3QW83Y2N3V2F3NVJBY2drSlFCcTBRbUlHVUFaWEJWUWJjRE1ZWmpET0FNK0Jtc0lPZGhrVkpwRFFQOUF6UU9LY0sxU3ovYkpLb29mdlQ3U1YrVDBZbTJZQy83d0hZTUlFTkFBREFmUHpQTndBQXJqRk9TbmkwRFlzMGZjNFgyVUQveHVsaDR4U3h2YTBBNENWWFJBRUFBTXhEWEFNQXdLV2U2K2RKY2MyeVpaZ3VCTDBiUWx3RHdCdE1zQUVBQUxpZXVBWUFnRXVabExBdTArZCtrMnlnUC92NlBuNjJGUUM4eGdRYkFBQ0E2NGhyQUFDNDFIaVkrM3VJYTlZbXd5UWI2UEgzK284UTF3RHdFd0liQUFDQXk0bHJBQUM0MVBnNTBxU0VkWC8vUkRiUWh3ZS96d0Njd2hWUkFBQUFseEhYQUFCd3FmRXc5OUUyck43MDk0RHJvbUNkeHNEeC9lSFoyUW9BVGlHd0FRQUFPSis0QmdDQVN6ak03Yy8wZDRISUJ0WmxYOS9IZzYwQTRGU3VpQUlBQURpUHVBWUFnRXVNaDdsL2hMaW1SeG11bDRHMS9jNk9WL1FOdGdLQWN3aHNBQUFBVGlldUFRRGdFdU5uU0llNS9YK1BSVGF3Yk0vMTkvUkQvUm9BenVLS0tBQUFnTk9JYXdBQU9OZDRnUHZnYytSbVROOW4xMFhCOGd4eHZCSnFieXNBdUpRSk5nQUFBTDhtcmdFQTRGempJZTQ3bnlNM0o4TWtHMWlhcHpoZTBTZXVBZUFxQWhzQUFJQ2ZFOWNBQUhDdThmUGpHTmM0ek4zdTkxOWtBL2MzWFFuMVBsd0pCY0FNWEJFRkFBRHdObkVOQUFEbm1BNXpuMnpGNWsxL1I3Z3VDdTVqWDkvSFFrY0FabU9DRFFBQXdPdkVOUUFBbkdNWHh5dEl4RFZNTWt5eWdYdDRERmRDQWRDQUNUWUFBQUEvRXRjQUFIQ09oemdlNk1MM3ByOHJUTEtCOW9iNjkvek9WZ0RRZ3NBR0FBRGdXN3NRMXdBQWNCcFhrSENLNmU4TGtRMjA4MVRmeDgrMkFvQldYQkVGQUFBQUFBRG4reFN1SU9GMEdhNkxnaGJHb09aOWZjUTFBRFJsZ2cwQUFBQUFBSnpPMUJvdWxYVTF5UWJtWVdvTkFEZGxnZzBBQUFBQUFKekcxQnF1bFdHU0RWekwxQm9BN3NJRUd3QUFBQUFBK0xsZEhLT0l3Vll3ZzZ5clNUWnd2c2M0eG83Q0dnQnV6Z1FiQUFBQUFBQjQzWGlBKzNCNDNvVzRobmxsbUdRRDU5alhkL0ZEaUdzQXVCTVRiQUFBQUFBQTRFY1pEbkpwL3pNMk1za0czamErZ3o4Zm5vKzJBb0I3RTlnQUFBQUFBTUJYNDVTRU1heloyUXB1SU9zcXNvRWZQZFgzOFdBckFGZ0NnUTBBQUFBQUFCeW5KSHc2UEkrMmdodkx1b3BzNEdpSTR4VnFPMXNCd0pMOFpnc0FBQUFBQU5pNFBEeS9oN2lHKy80TWZyQU5iTndZT2o3VTkvSE9kZ0N3TkNiWUFBQUFBQUN3VmJzNEh1YnViUVVMa0hVMXlZWXRHZ1BIY1lyWXM2MEFZS2tFTmdBQUFBQUFiTTBRcmg5aG1iS3VJaHUyWWxmZng0T3RBR0RwWEJFRkFBQUFBTUJXREhFOHlIWDlDRXVXNGJvbytqZStnOS9WWjdBZEFLeUJDVFlBQUFBQUFQUnV2SExrOCtINWFDdFlpYXlyU1RiMFpvamoxWHhQdGdLQXRSSFlBQUFBQUFEUXF5bXNlYXhmdzVwa1hVVTI5R0E0UEo5ZS9Gd0R3T29JYkFBQUFBQUE2STJ3aGw1a1hVVTJyTlVRd2hvQU9pR3dBUUFBQUFDZ0Y4SWFlcFIxRmRtd0prTUlhd0Rvak1BR0FBQUFBSUMxR3c3UGx4RFcwSytzcThpR3BkdkhNWFJNV3dGQWJ3UTJBQUFBQUFDczFSQW1KTEFkMDgrNXlJWWwydFgzOGM1V0FOQXJnUTBBQUFBQUFHdXppK09FaENkYndjWmtYVVUyTE9sbmNud2Y3MjBGQUwwVDJBQUFBQUFBc0JZWkRuSWg2eXF5NFY2ZTQrczFVSVB0QUdBckJEWUFBQUFBQUN6WmNIaStISjdIT0I3cUFpSWI3bU9NR3orSGEva0EyQ2lCRFFBQUFBQUFTelJlLy9RbFhBTUZiOG02aW15NHhjK2E2V0VBYko3QUJnQUFBQUNBcFJqaUdOVmt1SFlFVHBGMUZka3d0MmxhelJnNW1oNEdBQ0d3QVFBQUFBRGcvdkx3L0NkTXE0RkxmMzlHSWh1dTlWemZ3NmJWQU1BckJEWUFBQUFBQU55RDZRZ3duNnlyeUlaTHVKSVBBRTRnc0FFQUFBQUE0RmJHcUdZNnhCMXNCOHdxNnlxeTRSVGplM2lhSENaeUJJQVRDR3dBQUFBQUFHaEpWQU8zazNVVjJmQWFVUTBBWEVGZ0F3QUFBQURBM0VRMWNEOVpWNUVORWFJYUFKaU53QVlBQUFBQWdHdU5oN2E3Y0lnTFM1RjFGZGxzei9EZCt4Z0FtSW5BQmdBQUFBQ0FTNHhUYW5aeFBNVGQyUTVZbkt5cnlLWi9MOS9GZTlzQkFHMEliQUFBQUFBQU9NVVEzeDdpbWxJRHk1ZDFGZG4wWlFvYy93eFRhZ0RnWmdRMkFBQUFBQUM4NXVVQjd2ajFZRXRnbGJLdUlwdjEydFgzOEo4aGNBU0F1eEhZQUFBQUFBQXdIdGErUEx6ZGh3TmM2RW5XVldTemZFTjlCLzlWMzhjN1d3SUF5eUN3QVFBQUFBRFlscUUrMDJRYTAybGdHN0t1SXB0bHZZOWZ4alRpUmdCWU1JRU5BQUFBQUVDZnBxazA0L1AzaTY4ZDNzSjJaVjFGTnJjMXhOZVlabm9mNzJ3TEFLeUx3QVlBQUFBQVlMMkdGODkwYURzR05EdGJBN3doNnlxeWFXTjhCMy8yUGdhQS9naHNBQUFBQUFDV1ovZmk2L0dROXIveGRTTE45TjlNb2dFdWxYVVYyY3p2WDRmbjM0Zm5vNjBBZ0w0SWJBQWlQdGtDZ05VWWJBRUFjTVhuaUMrMmdRWDhITDcxbVhabmU0QWJ5N3FLYk9aWDZ2ckJWZ0JBUHdRMkFQNGxBUUFBd0JZTS92NERnQjlrWFVVMjh5dDFGZGtBUUNkK3N3VUFBQUFBQUFDYmxTRUNhYVdFZUFrQXVpR3dBUUFBQUFBQTJMWU1rVTBySlVRMkFOQUZnUTBBQUFBQUFBQVpJcHRXU29oc0FHRDFCRFlBQUFBQUFBQ01Na1EyclpRUTJRREFxZ2xzQUFBQUFBQUFtR1NJYkZvcEliSUJnTlVTMkFBQUFBQUFBUEJTaHNpbWxSSWlHd0JZSllFTkFBQUFBQUFBMzhzUTJiUlNRbVFEQUtzanNBRUFBQUFBQU9BMUdTS2JWa3FJYkFCZ1ZRUTJBQUFBQUFBQXZDVkRaTk5LQ1pFTkFLeUd3QVlBQUFBQUFJQ2Z5UkRadEZKQ1pBTUFxeUN3QVFBQUFBQUE0RmN5UkRhdGxCRFpBTURpQ1d3QUFBQUFBQUE0UlliSXBwVVNJaHNBV0RTQkRRQUFBQUFBQUtmS0VObTBVa0prQXdDTEpiQUJBQUFBQUFEZ0hCa2ltMVpLaUd3QVlKRUVOZ0FBQUFBQUFKd3JRMlRUU2dtUkRRQXNqc0FHQUFBQUFBQ0FTMlNJYkZvcEliSUJnRVVSMkFBQUFBQUFBSENwREpGTkt5VkVOZ0N3R0FJYkFBQUFBQUFBcnBFaHNtbWxoTWdHQUJaQllBTUFBQUFBQU1DMU1rUTJyWlFRMlFEQTNRbHNBQUFBQUFBQW1FT0d5S2FWRWlJYkFMZ3JnUTBBQUFBQUFBQnp5UkRadEZKQ1pBTUFkeU93QVFBQUFBQUFZRTRaSXB0V1NvaHNBT0F1QkRZQUFBQUFBQURNTFVOazAwb0prUTBBM0p6QUJnQUFBQUFBZ0JZeVJEYXRsQkRaQU1CTkNXd0FBQUFBQUFCb0pVTmswMG9Ka1EwQTNJekFCZ0FBQUFBQWdKWXlSRGF0bEJEWkFNQk5DR3dBQUFBQUFBQm9MVU5rMDBvSmtRMEFOQ2V3QVFBQUFBQUE0Qll5UkRhdGxCRFpBRUJUQWhzQUFBQUFBQUJ1SlVOazAwb0prUTBBTkNPd0FRQUFBQUFBNEpZeVJEYXRsQkRaQUVBVEFoc0FBQUFBQUFCdUxVTmswMG9Ka1EwQXpFNWdBd0FBQUFBQXdEMWtpR3hhS1NHeUFZQlpDV3dBQUFBQUFBQzRsd3lSVFNzbFJEWUFNQnVCRFFBQUFBQUFBUGVVSWJKcHBZVElCZ0JtSWJBQkFBQUFBQURnM2pKRU5xMlVFTmtBd05VRU5nQUFBQUFBQUN4QmhzaW1sUklpR3dDNGlzQUdBQUFBQUFDQXBjZ1EyYlJTUW1RREFCY1QyQUFBQUFBQUFMQWtHU0tiVmtxSWJBRGdJZ0liQUFBQUFBQUFsaVpEWk5OS0NaRU5BSnhOWUFNQUFBQUFBTUFTWlloc1dpa2hzZ0dBc3doc0FBQUFBQUFBV0tvTWtVMHJKVVEyQUhBeWdRMEFBQUFBQUFCTGxpR3lhYVdFeUFZQVRpS3dBUUFBQUFBQVlPa3lSRGF0bEJEWkFNQXZDV3dBQUFBQUFBQllnd3lSVFNzbFJEWUE4Rk1DR3dBQUFBQUFBTllpUTJUVFNnbVJEUUM4U1dBREFBQUFBQURBbW1TSWJGb3BJYklCZ0ZjSmJBQUFBQUFBQUZpYkRKRk5LeVZFTmdEd0E0RU5BQUFBQUFBQWE1UWhzbW1saE1nR0FMNGhzQUVBQUFBQUFHQ3RNa1EyclpRUTJRREFQd1EyQUFBQUFBQUFyRm1HeUthVkVpSWJBUGcvZ1EwQUFBQUFBQUJybHlHeWFhV0V5QVlBQkRZQUFBQUFBQUIwSVVOazAwb0prUTBBR3lld0FRQUFBQUFBb0JjWklwdFdTb2hzQU5nd2dRMEFBQUFBQUFBOXlSRFp0RkpDWkFQQVJnbHNBQUFBQUFBQTZFMkd5S2FWRWlJYkFEWklZQU1BQUFBQUFFQ1BNa1EyclpRUTJRQ3dNUUliQUFBQUFBQUFlcFVoc21tbGhNZ0dnQTBSMkFBQUFBQUFBTkN6REpGTkt5VkVOZ0JzaE1BR0FBQUFBQUNBM21XSWJGb3BJYklCWUFNRU5nQUFBQUFBQUd4QmhzaW1sUklpR3dBNko3QUJBQUFBQUFCZ0t6SkVOcTJVRU5rQTBER0JEUUFBQUFBQUFGdVNJYkpwcFlUSUJvQk9DV3dBQUFBQUFBRFltZ3lSVFNzbFJEWUFkRWhnQXdBQUFBQUF3QlpsaUd4YUtTR3lBYUF6QWhzQUFBQUFBQUMyS2tOazAwb0prUTBBSFJIWUFBQUFBQUFBc0dVWklwdFdTb2hzQU9qRS93Umc3OTZPNURpU05JeitENnZJYXJBVUFTSlFBeDhScU1HTUJEc2l1QWdVZ2FOQml3QVJzQm9zQ21pUUFORUk5S1c4S2kvbm1JWFZ1MmM5dUZsK2xpR3dBUUFBQUFBQTRPdzZJcHNwRlpFTkFBY2dzQUVBQUFBQUFBQ1J6YVNLeUFhQW5SUFlBQUFBQUFBQXdHY2RrYzJVaXNnR2dCMFQyQUFBQUFBQUFNQmZPaUtiS1JXUkRRQTdKYkFCQUFBQUFBQ0FiM1ZFTmxNcUloc0Fka2hnQXdBQUFBQUFBTi9yaUd5bVZFUTJBT3lNd0FZQUFBQUFBQUNlMWhIWlRLbUliQURZRVlFTkFBQUFBQUFBL0ZoSFpET2xJcklCWUNjRU5nQUFBQUFBQUxEV0VkbE1xWWhzQU5nQmdRMEFBQUFBQUFEOFhFZGtNNlVpc2dGZzR3UTJBQUFBQUFBQThEd2RrYzJVaXNnR2dBMFQyQUFBQUFBQUFNRHpkVVEyVXlvaUd3QTJTbUFEQUFBQUFBQUFMOU1SMlV5cGlHd0EyQ0NCRFFBQUFBQUFBTHhjUjJRenBTS3lBV0JqQkRZQUFBQUFBQUR3T2gyUnpaU0t5QWFBRFJIWUFBQUFBQUFBd090MVJEWlRLaUliQURaQ1lBTUFBQUFBQUFCdjB4SFpUS21JYkFEWUFJRU5BQUFBQUFBQXZGMUhaRE9sSXJJQjRNNEVOZ0FBQUFBQUFIQWRIWkhObElySUJvQTdFdGdBQUFBQUFBREE5WFJFTmxNcUloc0E3a1JnQXdBQUFBQUFBTmZWRWRsTXFZaHNBTGdEZ1EwQUFBQUFBQUJjWDBka002VWlzZ0hneGdRMkFBQUFBQUFBTUtNanNwbFNFZGtBY0VNQ0d3QUFBQUFBQUpqVEVkbE1xWWhzQUxnUmdRMEFBQUFBQUFETTZvaHNwbFJFTmdEY2dNQUdBQUFBQUFBQTVuVkVObE1xSWhzQWhnbHNBQUFBQUFBQTREWTZJcHNwRlpFTkFJTUVOZ0FBQUFBQUFIQTdIWkhObElySUJvQWhBaHNBQUFBQUFBQzRyWTdJWmtwRlpBUEFBSUVOQUFBQUFBQUEzRjVIWkRPbElySUI0TW9FTmdBQUFBQUFBSEFmSFpITmxJcklCb0FyRXRnQUFBQUFBQURBL1hSRU5sTXFJaHNBcmtSZ0F3QUFBQUFBQVBmVkVkbE1xWWhzQUxnQ2dRMEFBQUFBQUFEY1gwZGtNNlVpc2dIZ2pRUTJBQUFBQUFBQXNBMGRrYzJVaXNnR2dEY1EyQUFBQUFBQUFNQjJkRVEyVXlvaUd3QmVTV0FEQUFBQUFBQUEyOUlSMlV5cGlHd0FlQVdCRFFBQUFBQUFBR3hQUjJRenBTS3lBZUNGQkRZQUFBQUFBQUN3VFIyUnpaU0t5QWFBRnhEWUFBQUFBQUFBd0haMVJEWlRLaUliQUo1SllBTUFBQUFBQUFEYjFoSFpUS21JYkFCNEJvRU5BQUFBQUFBQWJGOUhaRE9sSXJJQjRDY0VOZ0FBQUFBQUFMQVBIWkhObElySUJvQUZnUTBBQUFBQUFBRHNSMGRrTTZVaXNnSGdCd1EyQUFBQUFBQUFzQzhka2MyVWlzZ0dnQ2NJYkFBQUFBQUFBR0IvT2lLYktSV1JEUUIvSTdBQkFBQUFBQUNBZmVxSWJLWlVSRFlBZkVWZ0F3QUFBQUFBQVB2VkVkbE1xWWhzQUhna3NBRUFBQUFBQUlCOTY0aHNwbFJFTmdCRVlBTUFBQUFBQUFCSDBCSFpUS21JYkFCT1QyQURBQUFBQUFBQXg5QVIyVXlwaUd3QVRrMWdBd0FBQUFBQUFNZlJFZGxNcVloc0FFNUxZQU1BQUFBQUFBREgwaEhaVEttSWJBQk9TV0FEQUFBQUFBQUF4OU1SMlV5cGlHd0FUa2RnQXdBQUFBQUFBTWZVRWRsTXFZaHNBRTVGWUFNQUFBQUFBQURIMVJIWlRLbUliQUJPUTJBREFBQUFBQUFBeDlZUjJVeXBpR3dBVGtGZ0F3QUFBQUFBQU1mWEVkbE1xWWhzQUE1UFlBTUFBQUFBQUFEbjBCSFpUS21JYkFBT1RXQURBQUFBQUFBQTU5RVIyVXlwaUd3QURrdGdBd0FBQUFBQUFPZlNFZGxNcVloc0FBNUpZQU1BQUFBQUFBRG4weEhaVEttSWJBQU9SMkFEQUFBQUFBQUE1OVFSMlV5cGlHd0FEa1ZnQXdBQUFBQUFBT2ZWRWRsTXFZaHNBQTVEWUFNQUFBQUFBQURuMWhIWlRLbUliQUFPUVdBREFBQUFBQUFBZEVRMlV5b2lHNERkRTlnQUFBQUFBQUFBRngyUnpaU0t5QVpnMXdRMkFBQUFBQUFBd0JjZGtjMlVpc2dHWUxjRU5nQUFBQUFBQU1EWE9pS2JLUldSRGNBdUNXd0FBQUFBQUFDQXYrdUliS1pVUkRZQXV5T3dBUUFBQUFBQUFKN1NFZGxNcVloc0FIWkZZQU1BQUFBQUFBRDhTRWRrTTZVaXNnSFlEWUVOQUFBQUFBQUFzTklSMlV5cGlHd0Fka0ZnQXdBQUFBQUFBUHhNUjJRenBTS3lBZGc4Z1EwQUFBQUFBQUR3SEIyUnpaU0t5QVpnMHdRMkFBQUFBQUFBd0hOMVJEWlRLaUliZ00wUzJBQUFBQUFBQUFBdjBSSFpUS21JYkFBMlNXQURBQUFBQUFBQXZGUkhaRE9sSXJJQjJCeUJEUUFBQUFBQUFQQWFIWkhObElySUJtQlRCRFlBQUFBQUFBREFhM1ZFTmxNcUlodUF6UkRZQUFBQUFBQUFBRy9SRWRsTXFZaHNBRFpCWUFNQUFBQUFBQUM4VlVka002VWlzZ0c0TzRFTkFBQUFBQUFBY0EwZGtjMlVpc2dHNEs0RU5nQUFBQUFBQU1DMWRFUTJVeW9pRzRDN0VkZ0FBQUFBQUFBQTE5UVIyVXlwaUd3QTdrSmdBd0FBQUFBQUFGeGJSMlF6cFNLeUFiZzVnUTBBQUFBQUFBQXdvU095bVZJUjJRRGNsTUFHQUFBQUFBQUFtTklSMlV5cGlHd0Fia1pnQXdBQUFBQUFBRXpxaUd5bVZFUTJBRGNoc0FFQUFBQUFBQUNtZFVRMlV5b2lHNEJ4QWhzQUFBQUFBQURnRmpvaW15a1ZrUTNBS0lFTkFBQUFBQUFBY0NzZGtjMlVpc2dHWUl6QUJnQUFBQUFBQUxpbGpzaG1Ta1ZrQXpCQ1lBTUFBQUFBQUFEY1drZGtNNlVpc2dHNE9vRU5BQUFBQUFBQWNBOGRrYzJVaXNnRzRLb0VOZ0FBQUFBQUFNQzlkRVEyVXlvaUc0Q3JFZGdBQUFBQUFBQUE5OVFSMlV5cGlHd0Fya0pnQXdBQUFBQUFBTnhiUjJRenBTS3lBWGd6Z1EwQUFBQUFBQUN3QlIyUnpaU0t5QWJnVFFRMkFBQUFBQUFBd0ZaMFJEWlRLaUliZ0ZjVDJBQUFBQUFBQUFCYjBoSFpUS21JYkFCZVJXQURBQUFBQUFBQWJFMUhaRE9sSXJJQmVER0JEUUFBQUFBQUFMQkZIWkhObElySUJ1QkZCRFlBQUFBQUFBREFWblZFTmxNcUlodUFaeFBZQUFBQUFBQUFBRnZXRWRsTXFZaHNBSjVGWUFNQUFBQUFBQUJzWFVka002VWlzZ0g0S1lFTkFBQUFBQUFBc0FjZGtjMlVpc2dHWUVsZ0F3QUFBQUFBQU94RlIyUXpwU0t5QWZnaGdRMEFBQUFBQUFDd0p4MlJ6WlNLeUFiZ1NRSWJBQUFBQUFBQVlHODZJcHNwRlpFTndIY0VOZ0FBQUFBQUFNQWVkVVEyVXlvaUc0QnZDR3dBQUFBQUFBQ0F2ZXFJYktaVVJEWUFmeExZQUFBQUFBQUFBSHZXRWRsTXFZaHNBRDRSMkFBQUFBQUFBQUI3MXhIWlRLbUliQUFFTmdBQUFBQUFBTUFoZEVRMlV5b2lHK0RrQkRZQUFBQUFBQURBVVhSRU5sTXFJaHZneEFRMkFBQUFBQUFBd0pGMFJEWlRLaUliNEtRRU5nQUFBQUFBQU1EUmRFUTJVeW9pRytDRUJEWUFBQUFBQUFEQUVYVkVObE1xSWh2Z1pBUTJBQUFBQUFBQXdGRjFSRFpUS2lJYjRFUUVOZ0FBQUFBQUFNQ1JkVVEyVXlvaUcrQWtCRFlBQUFBQUFBREEwWFZFTmxNcUlodmdCQVEyQUFBQUFBQUF3QmwwUkRaVEtpSWI0T0FFTmdBQUFBQUFBTUJaZEVRMlV5b2lHK0RBQkRZQUFBQUFBQURBbVhSRU5sTXFJaHZnb0FRMkFBQUFBQUFBd05sMFJEWlRLaUliNElBRU5nQUFBQUFBQU1BWmRVUTJVeW9pRytCZ0JEWUFBQUFBQUFEQVdYVkVObE1xSWh2Z1FBUTJBQUFBQUFBQXdKbDFSRFpUS2lJYjRDQUVOZ0FBQUFBQUFNRFpkVVEyVXlvaUcrQUFCRFlBQUFBQUFBQUFJcHRKRlpFTnNITUNHd0FBQUFBQUFJRFBPaUtiS1JXUkRiQmpBaHNBQUFBQUFBQ0F2M1JFTmxNcUlodGdwd1EyQUFBQUFBQUFBTi9xaUd5bVZFUTJ3QTRKYkFBQUFBQUFBQUMrMXhIWlRLbUliSUNkRWRnQUFBQUFBQUFBUEswanNwbFNFZGtBT3lLd0FRQUFBQUFBQVBpeGpzaG1Ta1ZrQSt5RXdBWUFBQUFBQUFCZ3JTT3ltVklSMlFBN0lMQUJBQUFBQUFBQStMbU95R1pLUldRRGJKekFCdmphUHgrWFF3QUFBQUFBQUw3WEVkbE1xWWhzZ0EwVDJBQi9kMWtLLzIwTUFBQUFBQUFBVCtxSWJLWlVSRGJBUmdsc2dLZjhaakVFQUFBQUFBRDRvWTUzS1ZNcUlodGdnd1Eyd0dveC9QWGorV0FVQUFBQUFBQUEzK21JYktaVVJEYkF4Z2hzZ0pYZlA1NTNFZGtBQUFBQUFBQThwU095bVZJUjJRQWJJckFCZnViaDQvbnZ4MThBQUFBQUFBQysxUkhaVEttSWJJQ05FTmdBejNINWdzM2xTelovR0FVQUFBQUFBTUIzT2lLYktSV1JEYkFCQWh2Z3ViNUVObTBVQUFBQUFBQUEzK21JYktaVVJEYkFuUWxzZ0plNkxJYi9NZ1lBQUFBQUFJRHZkRVEyVXlvaUcrQ09CRGJBYS96VGNnZ0FBQUFBQVBDa2p2Y29VeW9pRytCT0JEYkFXNWJEeTVWUkg0d0NBQUFBQUFEZ0d4MlJ6WlNLeUFhNEE0RU44QlovUkdRREFBQUFBQUR3bEk3SVprcEZaQVBjbU1BR2VLdUhqK2UvSDM4QkFBQUFBQUQ0UzBka002VWlzZ0Z1U0dBRFhNUGxDemFYTDluOFlSUUFBQUFBQUFEZjZJaHNwbFJFTnNDTkNHeUFhL2tTMmJSUkFBQUFBQUFBZktNanNwbFNFZGtBTnlDd0FhN3RzaHoreXhnQUFBQUFBQUMrMFJIWlRLbUliSUJoQWh0Z3dqOHRpQUFBQUFBQUFOL3BlSWN5cFNLeUFRWUpiSURKQmZGeVpkUUhvd0FBQUFBQUFQaFRSMlF6cFNLeUFZWUliSUJKZitSelpQUGVLQUFBQUFBQUFQN1VFZGxNcVloc2dBRUNHMkRhdzhmenkrTXZBQUFBQUFBQW4zVkVObE1xSWh2Z3lnUTJ3QzFjcm9tNmZNbm1kNk1BQUFBQUFBRDRVMGRrTTZVaXNnR3VTR0FEM01vbHN2bjFjVkVFQUFBQUFBRGdzNDdJWmtwRlpBTmNpY0FHdUxYTGd2aWJNUUFBQUFBQUFQeXBJN0taVWhIWkFGY2dzQUh1NGQrV1JBQUFBQUFBZ0c5MHZEK1pVaEhaQUc4a3NBSHV1U1Qra3M5WFJ3RUFBQUFBQUNDeW1WUVIyUUJ2SUxBQjd1bmg0M24zOGJ3M0NnQUFBQUFBZ0U4Nklwc3BGWkVOOEVvQ0crRGVMcEhOTDQrL0FBQUFBQUFBaUd3bVZVUTJ3Q3NJYklBdHVGd1RkZm1TemU5R0FRQUFBQUFBOEVsSFpET2xJcklCWGtoZ0EyekZKYkw1OVhGWkJBQUFBQUFBUUdRenFTS3lBVjVBWUFOc3pXVkovTTBZQUFBQUFBQUFQdW1JYktaVVJEYkFNd2xzZ0MzNjkrT2krTUVvQUFBQUFBQUFSRGFES2lJYjRCa0VOc0NXRjhWM0Vka0FBQUFBQUFCY2RFUTJVeW9pRytBbkJEYkFsajNrYzJUellCUUFBQUFBQUFBaW0wRVZrUTJ3SUxBQnRrNWtBd0FBQUFBQThKZU95R1pLUldRRC9JREFCdGlEeXpWUjd4NFhSZ0FBQUFBQWdMUHJpR3ltVkVRMndCTUVOc0JlZkhoY0ZOc29BQUFBQUFBQVJEYURLaUliNEc4RU5zRGUvTU95Q0FBQUFBQUE4RW5IZTVNcEZaRU44QldCRGJEblpmR0RVUUFBQUFBQUFDZlhFZGxNcVkvbmY0MEJ1QkRZQUh0ZUZ0OUZaQU1BQUFBQUFOQVIyVXo1SHlNQUxnUTJ3SjQ5NUhOazgyQVVBQUFBQUFEQXlYVkVOZ0JqQkRiQTNvbHNBQUFBQUFBQVB1dUliQUJHQ0d5QUk3aGNFL1h1Y1drRUFBQUFBQUE0czQ3SUJ1RHFCRGJBVVh4NFhCYmJLQUFBQUFBQWdKUHJpR3dBcmtwZ0F4ek5QeXlNQUFBQUFBQUFJaHVBYXhMWUFFZGRHSC9ONTYvYUFBQUFBQUFBbkZWSFpBTndGUUliNEtoKy8zamVSV1FEQUFBQUFBQ2NXMGRrOHhiL01RTGdRbUFESE5uRHgvUEw0eThBQUFBQUFNQlpkVVEyQUc4aXNBR083bjArZjhsR1pBTUFBQUFBQUp4WlIyUUQ4R29DRytBTUx0ZEUvZks0T0FJQUFBQUFBSnhWUjJRRDhDb0NHK0JNTGd2anY0MEJBQUFBQUFBNHNZN0lCdURGQkRiQTJmeG1hUVFBQUFBQUFFNnU0MzBKd0lzSWJJQ3pMbzIvNXZQVlVRQUFBQUFBQUdmVUVka0FQSnZBQmppcjN6K2VkeEhaQUFBQUFBQUE1OVVSMlFBOGk4QUdPTE9IaitjWFl3QUFBQUFBQUU2c0k3SlplVEFDNEVKZ0E1emRleU1BQUFBQUFBQk9yaU95K1JHM0lRQ2ZDR3dBQUFBQUFBQUE2SWhzQUg1SVlBTUFBQUFBQUFEQVJVZGtBL0FrZ1EwQUFBQUFBQUFBWDNSRU5nRGZFZGdBQUFBQUFBQUE4TFdPeUFiZ0d3SWJBQUFBQUFBQUFQNnVJN0lCK0pQQUJnQUFBQUFBQUlDbmRFUTJBSjhJYkFBQUFBQUFBQUQ0a2M2NUk1djMvZ0xBaGNBR0FBQUFBQUFBZ0pYT2VTT2I5eDQvY0NHd0FRQUFBQUFBQU9Cbk9xNkxBazVNWUFNQUFBQUFBQURBYzNSRU5zQkpDV3dBQUFBQUFBQUFlSzZPeUFZNElZRU5BQUFBQUFBQUFDL1JFZGtBSnlPd0FRQUFBQUFBQU9DbE9pSWI0RVFFTmdBQUFBQUFBQUM4Umtka0E1eUV3QVlBQUFBQUFBQ0ExK29jTjdMNTRQRUNYd2hzQUFBQUFBQUFBSGlMempFam13ZVBGdmhDWUFNQUFBQUFBQURBVzNWY0Z3VWNtTUFHQUFBQUFBQUFnR3ZvaUd5QWd4TFlBQUFBQUFBQUFIQXRIWkVOY0VBQ0d3QUFBQUFBQUFDdXFTT3lBUTVHWUFNQUFBQUFBQURBdFhWRU5zQ0JDR3dBQUFBQUFBQUFtTkFSMlFBSEliQUJBQUFBQUFBQVlFcEhaQU1jZ01BR0FBQUFBQUFBZ0VtZGZVWTIvL0hvZ0M4RU5nQUFBQUFBQUFCTTYvaVNEYkJqQWhzQUFBQUFBQUFBYnFFanNnRjJTbUFEQUFBQUFBQUF3SzEwUkRiQURnbHNBQUFBQUFBQUFMaWxqc2dHMkJtQkRRQUFBQUFBQUFDMzFoSFpBRHNpc0FFQUFBQUFBQURnSGpvaUcyQW5CRFlBQUFBQUFBQUEzRXRIWkFQc2dNQUdBQUFBQUFBQWdIdnFiRE95ZWZCb2dDOEVOZ0FBQUFBQUFBRGNXMmQ3a2MwSGp3WDRRbUFEQUFBQUFBQUF3QlowWEJjRmJKVEFCZ0FBQUFBQUFJQ3Q2SWhzZ0EwUzJBQUFBQUFBQUFDd0pSMlJEYkF4QWhzQUFBQUFBQUFBdHFZanNnRTJSR0FEQUFBQUFBQUF3QloxUkRiQVJnaHNBQUFBQUFBQUFOaXFqc2dHMkFDQkRRQUFBQUFBQUFCYjFybFBaUFBCNklFdkJEWUFBQUFBQUFBQWJGM245cEhOZzdFRFh3aHNBQUFBQUFBQUFOaURqdXVpZ0RzUjJBQUFBQUFBQUFDd0Z4MlJEWEFIQWhzQUFBQUFBQUFBOXFRanNnRnVUR0FEQUFBQUFBQUF3TjUwUkRiQURRbHNBQUFBQUFBQUFOaWpqc2dHdUJHQkRRQUFBQUFBQUFCNzFSSFpBRGNnc0FFQUFBQUFBQUJnenpvaUcyQ1l3QVlBQUFBQUFBQ0F2ZXRjTjdMNXcwaUJyd2xzQUFBQUFBQUFBRGlDamkvWkFFTUVOZ0FBQUFBQUFBQWNSVWRrQXd3UTJBQUFBQUFBQUFCd0pCMlJEWEJsQWhzQUFBQUFBQUFBanFZanNnR3VTR0FEQUFBQUFBQUF3QkYxUkRiQWxRaHNBQUFBQUFBQUFEaXFqc2dHdUFLQkRRQUFBQUFBQUFCSDFoSFpBRzhrc0FFQUFBQUFBQURnNkRvdmkyd2VqQXo0bXNBR0FBQUFBQUFBZ0RQb1BEK3krVC9qQXI0bXNBRUFBQUFBQUFEZ0xEcXVpd0plUVdBREFBQUFBQUFBd0psMFJEYkFDd2xzQUFBQUFBQUFBRGlianNnR2VBR0JEUUFBQUFBQUFBQm4xQkhaQU04a3NBRUFBQUFBQUFEZ3JEb2lHK0FaQkRZQUFBQUFBQUFBbkZsSFpBUDhoTUFHQUFBQUFBQUFnTFByZkJ2WnZEY1M0R3NDR3dBQUFBQUFBQUQ0TnJKNWJ4ekExLzdMQ0FBQUFBQUFBQURna3pZQzRDa0NHd0FBQUFBQUFBRDRTeHNCOEhldWlBSUFBQUFBQUFBQWdBV0JEUUFBQUFBQUFBQUFMQWhzQUFBQUFBQUFBQUJnUVdBREFBQUFBQUFBQUFBTEFoc0FBQUFBQUFBQUFGZ1EyQUFBQUFBQUFBQUF3SUxBQmdBQUFBQUFBQUFBRmdRMkFBQUFBQUFBQUFDd0lMQUJBQUFBQUFBQUFJQUZnUTBBQUFBQUFBQUFBQ3dJYkFBQUFBQUFBQUFBWUVGZ0F3QUFBQUFBQUFBQUN3SWJBQUFBQUFBQUFBQllFTmdBQUFBQUFBQUFBTUNDd0FZQUFBQUFBQUFBQUJZRU5nQUFBQUFBQUFBQXNDQ3dBUUFBQUFBQUFBQ0FCWUVOQUFBQUFBQUFBQUFzQ0d3QUFBQUFBQUFBQUdCQllBTUFBQUFBQUFBQUFBc0NHd0FBQUFBQUFBQUFXQkRZQUFBQUFBQUFBQURBZ3NBR0FBQUFBQUFBQUFBV0JEWUFBQUFBQUFBQUFMQWdzQUVBQUFBQUFBQUFnQVdCRFFBQUFBQUFBQUFBTEFoc0FBQUFBQUFBQUFCZ1FXQURBQUFBQUFBQUFBQUxBaHNBQUFBQUFBQUFBRmdRMkFBQUFBQUFBQUFBd0lMQUJnQUFBQUFBQUFBQUZnUTJBQUFBQUFBQUFBQ3dJTEFCQUFBQUFBQUFBSUFGZ1EwQUFBQUFBQUFBQUN3SWJBQUFBQUFBQUFBQVlFRmdBd0FBQUFBQUFBQUFDd0liQUFBQUFBQUFBQUJZRU5nQUFBQUFBQUFBQU1DQ3dBWUFBQUFBQUFBQUFCWUVOZ0FBQUFBQUFBQUFzQ0N3QVFBQUFBQUFBQUNBQllFTkFBQUFBQUFBQUFBc0NHd0FBQUFBQUFBQUFHQkJZQU1BQUFBQUFBQUFBQXNDR3dBQUFBQUFBQUFBV0JEWUFBQUFBQUFBQUFEQWdzQUdBQUFBQUFBQUFBQVdCRFlBQUFBQUFBQUFBTEFnc0FFQUFBQUFBQUFBZ0FXQkRRQUFBQUFBQUFBQUxBaHNBQUFBQUFBQUFBQmdRV0FEQUFBQUFBQUFBQUFMQWhzQUFBQUFBQUFBQUZnUTJBQUFBQUFBQUFBQXdJTEFCZ0FBQUFBQUFBQUFGZ1EyQUFBQUFBQUFBQUN3SUxBQkFBQUFBQUFBQUlBRmdRMEFBQUFBQUFBQUFDd0liQUFBQUFBQUFBQUFZRUZnQXdBQUFBQUFBQUFBQ3dJYkFBQUFBQUFBQUFCWUVOZ0FBQUFBQUFBQUFNQ0N3QVlBQUFBQUFBQUFBQllFTmdBQUFBQUFBQUFBc0NDd0FRQUFBQUFBQUFDQUJZRU5BQUFBQUFBQUFBQXNDR3dBQUFBQUFBQUFBR0JCWUFNQUFBQUFBQUFBQUFzQ0d3QUFBQUFBQUFBQVdCRFlBQUFBQUFBQUFBREFnc0FHQUFBQUFBQUFBQUFXQkRZQUFBQUFBQUFBQUxBZ3NBRUFBQUFBQUFBQWdBV0JEUUFBQUFBQUFBQUFMQWhzQUFBQUFBQUFBQUJnUVdBREFBQUFBQUFBQUFBTEFoc0FBQUFBQUFBQUFGZ1EyQUFBQUFBQUFBQUF3SUxBQmdBQUFBQUFBQUFBRmdRMkFBQUFBQUFBQUFDd0lMQUJBQUFBQUFBQUFJQUZnUTBBQUFBQUFBQUFBQ3dJYkFBQUFBQUFBQUFBWUVGZ0F3QUFBQUFBQUFBQUN3SWJBQUFBQUFBQUFBQllFTmdBQUFBQUFBQUFBTUNDd0FZQUFBQUFBQUFBQUJZRU5nQUFBQUFBQUFBQXNDQ3dBUUFBQUFBQUFBQ0FCWUVOQUFBQUFBQUFBQUFzQ0d3QUFBQUFBQUFBQUdCQllBTUFBQUFBQUFBQUFBc0NHd0FBQUFBQUFBQUFXQkRZQUFBQUFBQUFBQURBZ3NBR0FBQUFBQUFBQUFBV0JEWUFBQUFBQUFBQUFMQWdzQUVBQUFBQUFBQUFnQVdCRFFBQUFBQUFBQUFBTEFoc0FBQUFBQUFBQUFCZ1FXQURBQUFBQUFBQUFBQUxBaHNBQUFBQUFBQUFBRmdRMkFBQUFBQUFBQUFBd0lMQUJnQUFBQUFBQUFBQUZnUTJBQUFBQUFBQUFBQ3dJTEFCQUFBQUFBQUFBSUFGZ1EwQUFBQUFBQUFBQUN3SWJBQUFBQUFBQUFBQVlFRmdBd0FBQUFBQUFBQUFDd0liQUFBQUFBQUFBQUJZRU5nQUFBQUFBQUFBQU1DQ3dBWUFBQUFBQUFBQUFCWUVOZ0FBQUFBQUFBQUFzQ0N3QVFBQUFBQUFBQUNBQllFTkFBQUFBQUFBQUFBc0NHd0FBQUFBQUFBQUFHQkJZQU1BQUFBQUFBQUFBQXNDR3dBQUFBQUFBQUFBV0JEWUFBQUFBQUFBQUFEQWdzQUdBQUFBQUFBQUFBQVdCRFlBQUFBQUFBQUFBTEFnc0FFQUFBQUFBQUFBZ0FXQkRRQUFBQUFBQUFBQUxBaHNBQUFBQUFBQUFBQmdRV0FEQUFBQUFBQUFBQUFMQWhzQUFBQUFBQUFBQUZnUTJBQUFBQUFBQUFBQXdJTEFCZ0FBQUFBQUFBQUFGZ1EyQUFBQUFBQUFBQUN3SUxBQkFBQUFBQUFBQUlBRmdRMEFBQUFBQUFBQUFDd0liQUFBQUFBQUFBQUFZRUZnQXdBQUFBQUFBQUFBQ3dJYkFBQUFBQUFBQUFCWUVOZ0FBQUFBQUFBQUFNQ0N3QVlBQUFBQUFBQUFBQllFTmdBQUFBQUFBQUFBc0NDd0FRQUFBQUFBQUFDQUJZRU5BQUFBQUFBQUFBQXNDR3dBQUFBQUFBQUFBR0JCWUFNQUFBQUFBQUFBQUFzQ0d3QUFBQUFBQUFBQVdCRFlBQUFBQUFBQUFBREFnc0FHQUFBQUFBQUFBQUFXQkRZQUFBQUFBQUFBQUxBZ3NBRUFBQUFBQUFBQWdBV0JEUUFBQUFBQUFBQUFMQWhzQUFBQUFBQUFBQUJnUVdBREFBQUFBQUFBQUFBTEFoc0FBQUFBQUFBQUFGZ1EyQUFBQUFBQUFBQUF3SUxBQmdBQUFBQUFBQUFBRmdRMkFBQUFBQUFBQUFDd0lMQUJBQUFBQUFBQUFJQUZnUTBBQUFBQUFBQUFBQ3dJYkFBQUFBQUFBQUFBWUVGZ0F3QUFBQUFBQUFBQUN3SWJBQUFBQUFBQUFBQllFTmdBQUFBQUFBQUFBTUNDd0FZQUFBQUFBQUFBQUJZRU5nQUFBQUQvejk0ZDFjYU5obUVZOVVXSkZFSWdCRUlnRElRd2FCa0VncGRCSUhRWkRJUkFDSVQ5TFkrMGxYYjF0RTFta3JIbkhPbVQ3OS9yUi80QkFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBZ1BLWENRQUFBQUFBdUhVQ0d3QUFvTXpqRHVOZVRRRUFBQUFBd0swUzJBQUFBTDh5ajd1ZlJEWUFBQUFBQU53b2dRMEFBUEE3anVQdVRsOEFBQUFBQUxncEFoc0FBT0IzdlV6cm4yeCttQUlBQUFBQWdGc2lzQUVBQVA3RThrelVFdG5NcGdBQUFBQUE0RllJYkFBQWdMYzRqSHMwQXdBQUFBQUF0MEJnQXdBQXZOWFR0SVkyQUFBQUFBQ3dhd0liQUFEZ1BlWnhkOVA2ZEJRQUFBQUFBT3lTd0FZQUFIaXY0N2o3MHhjQUFBQUFBSFpIWUFNQUFKeUR5QVlBQUFBQWdOMFMyQUFBQU9leVBCTzFQQmMxbXdJQUFBQUFnRDBSMkFBQUFPZDJHUGZkREFBQUFBQUE3SVhBQmdBQXVJUnYweHJhQUFBQUFBREE1Z2xzQUFDQVM1bW45Y21vVjFNQUFBQUFBTEJsQWhzQUFPQ1NqdVB1VDE4QUFBQUFBTmdrZ1EwQUFIQnBJaHNBQUFBQUFEWk5ZQU1BQUh5RTVabW81Ym1vMlJRQUFBQUFBR3lOd0FZQUFQaEloM0hmelFBQUFBQUF3SllJYkFBQWdJLzJiVnBER3dBQUFBQUEyQVNCRFFBQThCbm1jZmZUK25RVUFBQUFBQUJjTllFTkFBRHdXWDVNYTJUellnb0FBQUFBQUs2WndBWUFBUGhNeDNGM3B5OEFBQUFBQUZ3bGdRMEFBUERabG1laWxqL1p6S1lBQUFBQUFPQWFDV3dBQUlCcnNFUTJoM0ZQcGdBQUFBQUE0Tm9JYkFBQWdHdnlPSzJoRFFBQUFBQUFYQTJCRFFBQWNHM21hWDB5NnRVVUFBQUFBQUJjQTRFTkFBQndqWDVNYTJUellnb0FBQUFBQUQ2YndBWUFBTGhXeDNGM3B5OEFBQUFBQUh3YWdRMEFBSERObG1laWxqL1p6S1lBQUFBQUFPQ3pDR3dBQUlCcnQwUTJoMGxrQXdBQUFBREFKeEhZQUFBQVczRTRIUUFBQUFBQWZDaUJEUUFBc0NYenVJZHAvYXNOQUFBQUFBQjhDSUVOQUFDd05jL2o3aWVSRFFBQUFBQUFIMFJnQXdBQWJORngzTmZURndBQUFBQUFMa3BnQXdBQWJOWHlCNXZsVHpiUHBnQUFBQUFBNEpJRU5nQUF3Sll0a2MzRHVOa1VBQUFBQUFCY2lzQUdBQURZZzhQcEFBQUFBQURnN0FRMkFBREFYc3pUK2plYlYxTUFBQUFBQUhCT0Foc0FBR0JQbnNmZFR5SWJBQUFBQUFET1NHQURBQURzelhIYzE5TVhBQUFBQUFEZVRXQURBQURzMGZJSG0rVlBOcyttQUFBQUFBRGd2UVEyQUFEQVhpMlJ6Y080MlJRQUFBQUFBTHlId0FZQUFOaTd3N2hITXdBQUFBQUE4RllDR3dBQTRCWThUV3RvODJvS0FBQUFBQUQrbE1BR0FBQzRGZk80KzBsa0F3QUFBQURBSHhMWUFBQUF0K1E0N3U3MEJRQUFBQUNBM3lLd0FRQUFiczNMdFA3SjVvY3BBQUFBQUFENEhRSWJBQURnRmkzUFJDMlJ6V3dLQUFBQUFBQitSV0FEQUFEY3NzTzRSek1BQUFBQUFGQUVOZ0FBd0sxN210YlE1dFVVQUFBQUFBRDhINEVOQUFEQStsVFU4bVNVeUFZQUFBQUFnUDhRMkFBQUFLeU80KzdHL1cwS0FBQUFBQUIrSnJBQkFBRDQxOHU0YjJZQUFBQUFBT0JuQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBYnNIUkJBQUFBTUJiQ1d3QUFBQUEyTHQ1M0tNWkFBQUFnTGNTMkFBQUFBQ3daL080Z3hrQUFBQ0E5eERZQUFBQUFMQlgzeWR4RFFBQUFIQUdYMHdBQUFBQXdBNHRZYzFzQmdBQUFPQWMvTUVHQUFBQWdMMFIxd0FBQUFCbkpiQUJBQUFBWUUvRU5RQUFBTURaQ1d3QUFBQUEySVBYY1ErVHVBWUFBQUM0Z0M4bUFBQUFBR0RqbHJqbWZ0elJGQUFBQU1BbCtJTU5BQUFBQUZzbXJnRUFBQUF1VG1BREFBQUF3RmFKYXdBQUFJQVBJYkFCQUFBQVlJdVdxRVpjQXdEOHc4NjkzVFFRUTFFVU5aSWJTd2twSWFXa0EwcHdDWlJBQ1NsbE9naTJSQkFJNGp4SVp1enhXdEp0NEh4dlhRQ0FXVVFUQUFBQUFOQ1pVMXd6bVFJQUFBQ1lndzgyQUFBQUFQUkVYQU1BQUFETVRtQURBQUFBUUMvRU5RQUFBTUFpQkRZQUFBQUE5T0F0aUdzQUFBQ0FoUWhzQUFBQUFHaGR5cmNONGhvQUFBQmdJUUliQUFBQUFGcVc4dTNNQUFBQUFDeEpZQU1BQUFCQXExSVExd0FBQUFBTkVOZ0FBQUFBMEtKOUVOY0FBQUFBallnbUFBQUFBS0F4SmF4SlpnQUFBQUJhNFlNTkFBQUFBQzBSMXdBQUFBRE5FZGdBQUFBQTBBcHhEUUFBQU5Ba2dRMEFBQUFBUzV2eWJZTzRCZ0FBQUdoVU5BRUFBQUFBQ3lweHpTYmZ3UlFBQUFCQXEzeXdBUUFBQUdBcDRob0FBQUNnQ3dJYkFBQUFBSllncmdFQUFBQzZJYkFCQUFBQVlHNGxxaEhYQUFBQUFOMklKZ0FBQUFCZ1JxZTRaaklGQUFBQTBBc2ZiQUFBQUFDWWk3Z0dBQUFBNkpMQUJnQUFBSUE1aUdzQUFBQ0FiZ2xzQUFBQUFIaTJ0eUN1QVFBQUFEb21zQUVBQUFEZ21WSytiUkRYQUFBQUFCMFQyQUFBQUFEd0xDbmZ6Z3dBQUFCQTd3UTJBQUFBQUR4REN1SWFBQUFBWUNVRU5nQUFBQUE4Mmo2SWF3QUFBSUFWaVNZQUFBQUE0SUZLV0pQTUFBQUFBS3lKRHpZQUFBQUFQSXE0QmdBQUFGZ2xnUTBBQUFBQWp5Q3VBUUFBQUZaTFlBTUFBQURBZjB6NXRrRmNBd0FBQUt4WU5BRUFBQUFBZHlweHpTYmZ3UlFBQUFEQW12bGdBd0FBQU1BOXhEVUFBQURBTUFRMkFBQUFBTnhLWEFNQUFBQU1SV0FEQUFBQXdDMUtWQ091QVFBQUFJWVNUUUFBQUFEQWxVNXh6V1FLQUFBQVlDUSsyQUFBQUFCd0RYRU5BQUFBTUN5QkRRQUFBQUNYaUdzQUFBQ0FvUWxzQUFBQUFLaDVEK0lhQUFBQVlIQUNHd0FBQUFET1NVRmNBd0FBQUNDd0FRQUFBT0JQS2QvT0RBQUFBQUFDR3dBQUFBQitTMEZjQXdBQUFQQkZZQU1BQUFEQWQ2OUJYQU1BQUFEd1F6UUJBQUFBQUo5S1dKUE1BQUFBQVBDVER6WUFBQUFBRk9JYUFBQUFnRE1FTmdBQUFBQ0lhd0FBQUFBcUJEWUFBQUFBNDVxQ3VBWUFBQURnb21nQ0FBQUFnQ0dWdUdhVDcyQUtBQUFBZ0RvZmJBQUFBQURHSTY0QkFBQUF1TUhMOFhpMEFnQUFBQUFBQUFBQW5PR0REUUFBQUFBQUFBQUFWQWhzQUFBQUFBQUFBQUNnUW1BREFBQUFBQUFBQUFBVkFoc0FBQUFBQUFBQUFLZ1EyQUFBQUFBQUFBQUFRSVhBQmdBQUFBQUFBQUFBS2dRMkFBQUFBQUFBQUFCUUliQUJBQUFBQUFBQUFJQ0tEd0hhdFFNQkFBQUFBRUgrMWh0TVVCd0pOZ0FBQUFBQUFBQUFNQVFiQUFBQUFBQUFBQUFZZ2cwQUFBQUFBQUFBQUF6QkJnQUFBQUFBQUFBQWhtQURBQUFBQUFBQUFBQkRzQUVBQUFBQUFBQUFnQ0hZQUFBQUFBQUFBQURBRUd3QUFBQUFBQUFBQUdBSU5nQUFBQUFBQUFBQU1BUWJBQUFBQUFBQUFBQVlnZzBBQUFBQUFBQUFBQXpCQmdBQUFBQUFBQUFBaG1BREFBQUFBQUFBQUFCRHNBRUFBQUFBQUFBQWdDSFlBQUFBQUFBQUFBREFFR3dBQUFBQUFBQUFBR0FJTmdBQUFBQUFBQUFBTUFRYkFBQUFBQUFBQUFBWWdnMEFBQUFBQUFBQUFBekJCZ0FBQUFBQUFBQUFobUFEQUFBQUFBQUFBQUJEc0FFQUFBQUFBQUFBZ0NIWUFBQUFBQUFBQUFEQUVHd0FBQUFBQUFBQUFHQUlOZ0FBQUFBQUFBQUFNQVFiQUFBQUFBQUFBQUFZZ2cwQUFBQUFBQUFBQUF6QkJnQUFBQUFBQUFBQWhtQURBQUFBQUFBQUFBQkRzQUVBQUFBQUFBQUFnQ0hZQUFBQUFBQUFBQURBRUd3QUFBQUFBQUFBQUdBSU5nQUFBQUFBQUFBQU1BUWJBQUFBQUFBQUFBQVlnZzBBQUFBQUFBQUFBQXpCQmdBQUFBQUFBQUFBaG1BREFBQUFBQUFBQUFCRHNBRUFBQUFBQUFBQWdDSFlBQUFBQUFBQUFBREFFR3dBQUFBQUFBQUFBR0FJTmdBQUFBQUFBQUFBTUFRYkFBQUFBQUFBQUFBWWdnMEFBQUFBQUFBQUFBekJCZ0FBQUFBQUFBQUFobUFEQUFBQUFBQUFBQUJEc0FFQUFBQUFBQUFBZ0NIWUFBQUFBQUFBQUFEQUVHd0FBQUFBQUFBQUFHQUlOZ0FBQUFBQUFBQUFNQVFiQUFBQUFBQUFBQUFZZ2cwQUFBQUFBQUFBQUF6QkJnQUFBQUFBQUFBQWhtQURBQUFBQUFBQUFBQkRzQUVBQUFBQUFBQUFnQ0hZQUFBQUFBQUFBQURBRUd3QUFBQUFBQUFBQUdBSU5nQUFBQUFBQUFBQU1BUWJBQUFBQUFBQUFBQVlnZzBBQUFBQUFBQUFBQXpCQmdBQUFBQUFBQUFBaG1BREFBQUFBQUFBQUFCRHNBRUFBQUFBQUFBQWdDSFlBQUFBQUFBQUFBREFFR3dBQUFBQUFBQUFBR0FJTmdBQUFBQUFBQUFBTUFRYkFBQUFBQUFBQUFBWWdnMEFBQUFBQUFBQUFBekJCZ0FBQUFBQUFBQUFobUFEQUFBQUFBQUFBQUJEc0FFQUFBQUFBQUFBZ0NIWUFBQUFBQUFBQUFEQUVHd0FBQUFBQUFBQUFHQUlOZ0FBQUFBQUFBQUFNQVFiQUFBQUFBQUFBQUFZZ2cwQUFBQUFBQUFBQUF6QkJnQUFBQUFBQUFBQWhtQURBQUFBQUFBQUFBQkRzQUVBQUFBQUFBQUFnQ0hZQUFBQUFBQUFBQURBRUd3QUFBQUFBQUFBQUdBSU5nQUFBQUFBQUFBQU1BUWJBQUFBQUFBQUFBQVlnZzBBQUFBQUFBQUFBQXpCQmdBQUFBQUFBQUFBaG1BREFBQUFBQUFBQUFCRHNBRUFBQUFBQUFBQWdDSFlBQUFBQUFBQUFBREFFR3dBQUFBQUFBQUFBR0FJTmdBQUFBQUFBQUFBTUFRYkFBQUFBQUFBQUFBWWdnMEFBQUFBQUFBQUFBekJCZ0FBQUFBQUFBQUFobUFEQUFBQUFBQUFBQUJEc0FFQUFBQUFBQUFBZ0NIWUFBQUFBQUFBQUFEQUVHd0FBQUFBQUFBQUFHQUlOZ0FBQUFBQUFBQUFNQVFiQUFBQUFBQUFBQUFZZ2cwQUFBQUFBQUFBQUF6QkJnQUFBQUFBQUFBQWhtQURBQUFBQUFBQUFBQkRzQUVBQUFBQUFBQUFnQ0hZQUFBQUFBQUFBQURBRUd3QUFBQUFBQUFBQUdBSU5nQUFBQUFBQUFBQU1BUWJBQUFBQUFBQUFBQVlnZzBBQUFBQUFBQUFBQXpCQmdBQUFBQUFBQUFBaG1BREFBQUFBQUFBQUFCRHNBRUFBQUFBQUFBQWdDSFlBQUFBQUFBQUFBREFFR3dBQUFBQUFBQUFBR0FJTmdBQUFBQUFBQUFBTUFRYkFBQUFBQUFBQUFBWWdnMEFBQUFBQUFBQUFBekJCZ0FBQUFBQUFBQUFobUFEQUFBQUFBQUFBQUJEc0FFQUFBQUFBQUFBZ0NIWUFBQUFBQUFBQUFEQUVHd0FBQUFBQUFBQUFHQUlOZ0FBQUFBQUFBQUFNQVFiQUFBQUFBQUFBQUFZZ2cwQUFBQUFBQUFBQUF6QkJnQUFBQUFBQUFBQWhtQURBQUFBQUFBQUFBQkRzQUVBQUFBQUFBQUFnQ0hZQUFBQUFBQUFBQURBRUd3QUFBQUFBQUFBQUdBSU5nQUFBQUFBQUFBQU1BUWJBQUFBQUFBQUFBQVlnZzBBQUFBQUFBQUFBQXpCQmdBQUFBQUFBQUFBaG1BREFBQUFBQUFBQUFCRHNBRUFBQUFBQUFBQWdDSFlBQUFBQUFBQUFBREFFR3dBQUFBQUFBQUFBR0FJTmdBQUFBQUFBQUFBTUFRYkFBQUFBQUFBQUFBWWdnMEFBQUFBQUFBQUFBekJCZ0FBQUFBQUFBQUFobUFEQUFBQUFBQUFBQUJEc0FFQUFBQUFBQUFBZ0NIWUFBQUFBQUFBQUFEQUVHd0FBQUFBQUFBQUFHQUlOZ0FBQUFBQUFBQUFNQVFiQUFBQUFBQUFBQUFZZ2cwQUFBQUFBQUFBQUF6QkJnQUFBQUFBQUFBQWhtQURBQUFBQUFBQUFBQkRzQUVBQUFBQUFBQUFnQ0hZQUFBQUFBQUFBQURBRUd3QUFBQUFBQUFBQUdBSU5nQUFBQUFBQUFBQU1BUWJBQUFBQUFBQUFBQVlnZzBBQUFBQUFBQUFBQXpCQmdBQUFBQUFBQUFBaG1BREFBQUFBQUFBQUFCRHNBRUFBQUFBQUFBQWdDSFlBQUFBQUFBQUFBREFFR3dBQUFBQUFBQUFBR0FJTmdBQUFBQUFBQUFBTUFRYkFBQUFBQUFBQUFBWWdnMEFBQUFBQUFBQUFBekJCZ0FBQUFBQUFBQUFobUFEQUFBQUFBQUFBQUJEc0FFQUFBQUFBQUFBZ0NIWUFBQUFBQUFBQUFEQUVHd0FBQUFBQUFBQUFHQUlOZ0FBQUFBQUFBQUFNQVFiQUFBQUFBQUFBQUFZZ2cwQUFBQUFBQUFBQUF6QkJnQUFBQUFBQUFBQWhtQURBQUFBQUFBQUFBQkRzQUVBQUFBQUFBQUFnQ0hZQUFBQUFBQUFBQURBRUd3QUFBQUFBQUFBQUdBSU5nQUFBQUFBQUFBQU1BUWJBQUFBQUFBQUFBQVlnZzBBQUFBQUFBQUFBQXpCQmdBQUFBQUFBQUFBaG1BREFBQUFBQUFBQUFCRHNBRUFBQUFBQUFBQWdDSFlBQUFBQUFBQUFBREFFR3dBQUFBQUFBQUFBR0FJTmdBQUFBQUFBQUFBTUFRYkFBQUFBQUFBQUFBWWdnMEFBQUFBQUFBQUFBekJCZ0FBQUFBQUFBQUFobUFEQUFBQUFBQUFBQUJEc0FFQUFBQUFBQUFBZ0NIWUFBQUFBQUFBQUFEQUVHd0FBQUFBQUFBQUFHQUlOZ0FBQUFBQUFBQUFNQVFiQUFBQUFBQUFBQUFZZ2cwQUFBQUFBQUFBQUF6QkJnQUFBQUFBQUFBQWhtQURBQUFBQUFBQUFBQkRzQUVBQUFBQUFBQUFnQ0hZQUFBQUFBQUFBQURBRUd3QUFBQUFBQUFBQUdBSU5nQUFBQUFBQUFBQU1BUWJBQUFBQUFBQUFBQVlnZzBBQUFBQUFBQUFBQXpCQmdBQUFBQUFBQUFBaG1BREFBQUFBQUFBQUFCRHNBRUFBQUFBQUFBQWdDSFlBQUFBQUFBQUFBREFFR3dBQUFBQUFBQUFBR0FJTmdBQUFBQUFBQUFBTUFRYkFBQUFBQUFBQUFBWWdnMEFBQUFBQUFBQUFBekJCZ0FBQUFBQUFBQUFobUFEQUFBQUFBQUFBQUJEc0FFQUFBQUFBQUFBZ0NIWUFBQUFBQUFBQUFEQUVHd0FBQUFBQUFBQUFHQUlOZ0FBQUFBQUFBQUFNQVFiQUFBQUFBQUFBQUFZZ2cwQUFBQUFBQUFBQUF6QkJnQUFBQUFBQUFBQWhtQURBQUFBQUFBQUFBQkRzQUVBQUFBQUFBQUFnQ0hZQUFBQUFBQUFBQURBRUd3QUFBQUFBQUFBQUdBSU5nQUFBQUFBQUFBQU1BUWJBQUFBQUFBQUFBQVlnZzBBQUFBQUFBQUFBQXpCQmdBQUFBQUFBQUFBaG1BREFBQUFBQUFBQUFCRHNBRUFBQUFBQUFBQWdDSFlBQUFBQUFBQUFBREFFR3dBQUFBQUFBQUFBR0FJTmdBQUFBQUFBQUFBTUFRYkFBQUFBQUFBQUFBWWdnMEFBQUFBQUFBQUFBekJCZ0FBQUFBQUFBQUFobUFEQUFBQUFBQUFBQUJEc0FFQUFBQUFBQUFBZ0NIWUFBQUFBQUFBQUFEQUVHd0FBQUFBQUFBQUFHQUlOZ0FBQUFBQUFBQUFNQVFiQUFBQUFBQUFBQUFZZ2cwQUFBQUFBQUFBQUF6QkJnQUFBQUFBQUFBQWhtQURBQUFBQUFBQUFBQkRzQUVBQUFBQUFBQUFnQ0hZQUFBQUFBQUFBQURBRUd3QUFBQUFBQUFBQUdBSU5nQUFBQUFBQUFBQU1BUWJBQUFBQUFBQUFBQVlnZzBBQUFBQUFBQUFBQXpCQmdBQUFBQUFBQUFBaG1BREFBQUFBQUFBQUFCRHNBRUFBQUFBQUFBQWdDSFlBQUFBQUFBQUFBREFFR3dBQUFBQUFBQUFBR0FJTmdBQUFBQUFBQUFBTUFRYkFBQUFBQUFBQUFBWWdnMEFBQUFBQUFBQUFBekJCZ0FBQUFBQUFBQUFobUFEQUFBQUFBQUFBQUJEc0FFQUFBQUFBQUFBZ0NIWUFBQUFBQUFBQUFEQUVHd0FBQUFBQUFBQUFHQUlOZ0FBQUFBQUFBQUFNQVFiQUFBQUFBQUFBQUFZZ2cwQUFBQUFBQUFBQUF6QkJnQUFBQUFBQUFBQWhtQURBQUFBQUFBQUFBQkRzQUVBQUFBQUFBQUFnQ0hZQUFBQUFBQUFBQURBRUd3QUFBQUFBQUFBQUdBSU5nQUFBQUFBQUFBQU1BUWJBQUFBQUFBQUFBQVlnZzBBQUFBQUFBQUFBQXpCQmdBQUFBQUFBQUFBaG1BREFBQUFBQUFBQUFCRHNBRUFBQUFBQUFBQWdDSFlBQUFBQUFBQUFBREFFR3dBQUFBQUFBQUFBR0FJTmdBQUFBQUFBQUFBTUFRYkFBQUFBQUFBQUFBWWdnMEFBQUFBQUFBQUFBekJCZ0FBQUFBQUFBQUFobUFEQUFBQUFBQUFBQUJEc0FFQUFBQUFBQUFBZ0NIWUFBQUFBQUFBQUFEQUVHd0FBQUFBQUFBQUFHQUlOZ0FBQUFBQUFBQUFNQVFiQUFBQUFBQUFBQUFZZ2cwQUFBQUFBQUFBQUF6QkJnQUFBQUFBQUFBQWhtQURBQUFBQUFBQUFBQkRzQUVBQUFBQUFBQUFnQ0hZQUFBQUFBQUFBQURBRUd3QUFBQUFBQUFBQUdBSU5nQUFBQUFBQUFBQU1BUWJBQUFBQUFBQUFBQVlnZzBBQUFBQUFBQUFBQXpCQmdBQUFBQUFBQUFBaG1BREFBQUFBQUFBQUFCRHNBRUFBQUFBQUFBQWdDSFlBQUFBQUFBQUFBREFFR3dBQUFBQUFBQUFBR0FJTmdBQUFBQUFBQUFBTUFRYkFBQUFBQUFBQUFBWWdnMEFBQUFBQUFBQUFBekJCZ0FBQUFBQUFBQUFobUFEQUFBQUFBQUFBQUJEc0FFQUFBQUFBQUFBZ0NIWUFBQUFBQUFBQUFEQUVHd0FBQUFBQUFBQUFHQUlOZ0FBQUFBQUFBQUFNQVFiQUFBQUFBQUFBQUFZZ2cwQUFBQUFBQUFBQUF6QkJnQUFBQUFBQUFBQWhtQURBQUFBQUFBQUFBQkRzQUVBQUFBQUFBQUFnQ0hZQUFBQUFBQUFBQURBRUd3QUFBQUFBQUFBQUdBSU5nQUFBQUFBQUFBQU1BUWJBQUFBQUFBQUFBQVlnZzBBQUFBQUFBQUFBQXpCQmdBQUFBQUFBQUFBaG1BREFBQUFBQUFBQUFCRHNBRUFBQUFBQUFBQWdDSFlBQUFBQUFBQUFBREFFR3dBQUFBQUFBQUFBR0FJTmdBQUFBQUFBQUFBTUFRYkFBQUFBQUFBQUFBWWdnMEFBQUFBQUFBQUFBekJCZ0FBQUFBQUFBQUFobUFEQUFBQUFBQUFBQUJEc0FFQUFBQUFBQUFBZ0NIWUFBQUFBQUFBQUFEQUVHd0FBQUFBQUFBQUFHQUlOZ0FBQUFBQUFBQUFNQVFiQUFBQUFBQUFBQUFZZ2cwQUFBQUFBQUFBQUF6QkJnQUFBQUFBQUFBQWhtQURBQUFBQUFBQUFBQkRzQUVBQUFBQUFBQUFnQ0hZQUFBQUFBQUFBQURBRUd3QUFBQUFBQUFBQUdBSU5nQUFBQUFBQUFBQU1BUWJBQUFBQUFBQUFBQVlnZzBBQUFBQUFBQUFBQXpCQmdBQUFBQUFBQUFBaG1BREFBQUFBQUFBQUFCRHNBRUFBQUFBQUFBQWdDSFlBQUFBQUFBQUFBREFFR3dBQUFBQUFBQUFBR0FJTmdBQUFBQUFBQUFBTUFRYkFBQUFBQUFBQUFBWWdnMEFBQUFBQUFBQUFBekJCZ0FBQUFBQUFBQUFobUFEQUFBQUFBQUFBQUJEc0FFQUFBQUFBQUFBZ0NIWUFBQUFBQUFBQUFEQUVHd0FBQUFBQUFBQUFHQUlOZ0FBQUFBQUFBQUFNQVFiQUFBQUFBQUFBQUFZZ2cwQUFBQUFBQUFBQUF6QkJnQUFBQUFBQUFBQWhtQURBQUFBQUFBQUFBQkRzQUVBQUFBQUFBQUFnQ0hZQUFBQUFBQUFBQURBRUd3QUFBQUFBQUFBQUdBSU5nQUFBQUFBQUFBQU1BUWJBQUFBQUFBQUFBQVlnZzBBQUFBQUFBQUFBQXpCQmdBQUFBQUFBQUFBaG1BREFBQUFBQUFBQUFCRHNBRUFBQUFBQUFBQWdDSFlBQUFBQUFBQUFBREFFR3dBQUFBQUFBQUFBR0FJTmdBQUFBQUFBQUFBTUFRYkFBQUFBQUFBQUFBWWdnMEFBQUFBQUFBQUFBekJCZ0FBQUFBQUFBQUFobUFEQUFBQUFBQUFBQUJEc0FFQUFBQUFBQUFBZ0NIWUFBQUFBQUFBQUFEQUVHd0FBQUFBQUFBQUFHQUlOZ0FBQUFBQUFBQUFNQVFiQUFBQUFBQUFBQUFZZ2cwQUFBQUFBQUFBQUF6QkJnQUFBQUFBQUFBQWhtQURBQUFBQUFBQUFBQkRzQUVBQUFBQUFBQUFnQ0hZQUFBQUFBQUFBQURBRUd3QUFBQUFBQUFBQUdBSU5nQUFBQUFBQUFBQU1BUWJBQUFBQUFBQUFBQVlnZzBBQUFBQUFBQUFBQXpCQmdBQUFBQUFBQUFBaG1BREFBQUFBQUFBQUFCRHNBRUFBQUFBQUFBQWdDSFlBQUFBQUFBQUFBREFFR3dBQUFBQUFBQUFBR0FJTmdBQUFBQUFBQUFBTUFRYkFBQUFBQUFBQUFBWWdnMEFBQUFBQUFBQUFBekJCZ0FBQUFBQUFBQUFobUFEQUFBQUFBQUFBQUJEc0FFQUFBQUFBQUFBZ0NIWUFBQUFBQUFBQUFEQUVHd0FBQUFBQUFBQUFHQUlOZ0FBQUFBQUFBQUFNQVFiQUFBQUFBQUFBQUFZZ2cwQUFBQUFBQUFBQUF6QkJnQUFBQUFBQUFBQVJ0WDhuRStBVWNrNEFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJGSURPXzJfMCJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiMDA3NjYzMWJkNGEwNDI3ZjU3NzMwZWM3MWM5ZTAyNzkiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjp0cnVlLCJ1cCI6dHJ1ZSwidXYiOnRydWUsImNyZWRNZ210Ijp0cnVlfSwibWF4TXNnU2l6ZSI6MTIwMCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6MjAsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4fX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjItMTAtMjAiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MiwidXJsIjoiaHR0cHM6Ly93d3cuaHlwci5jb20vIiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJIWVBSIEZJRE8yIE1vYmlsZSBBdXRoZW50aWNhdG9yIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyMjEwMjAwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMi0xMC0yMCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIzLTAxLTExIn0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiNTU2ZDI3ZjM4YjIzMWJiM2Q4MThiZmMxYjYxNWYyNjBmNmIwOGYyMCJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyI1NTZkMjdmMzhiMjMxYmIzZDgxOGJmYzFiNjE1ZjI2MGY2YjA4ZjIwIl0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJNSyBLZXlwYXNzIFMxIn0sImRlc2NyaXB0aW9uIjoiTUsgS2V5cGFzcyBTMSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozLCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUIrekNDQWFLZ0F3SUJBZ0lKQUk5Z2luMUFEMytETUFvR0NDcUdTTTQ5QkFNQ01Ga3hDekFKQmdOVkJBWVRBbFpPTVJNd0VRWURWUVFJREFwT2IzSjBhQ0JUYVdSbE1RNHdEQVlEVlFRSERBVklZVTV2YVRFUk1BOEdBMVVFQ2d3SVRVc2dSM0p2ZFhBeEVqQVFCZ05WQkFNTUNXMXJMbU52YlM1MmJqQWVGdzB4T0RFeU1qUXdNekV3TlRGYUZ3MHlPREV5TWpFd016RXdOVEZhTUZreEN6QUpCZ05WQkFZVEFsWk9NUk13RVFZRFZRUUlEQXBPYjNKMGFDQlRhV1JsTVE0d0RBWURWUVFIREFWSVlVNXZhVEVSTUE4R0ExVUVDZ3dJVFVzZ1IzSnZkWEF4RWpBUUJnTlZCQU1NQ1cxckxtTnZiUzUyYmpCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQk8xcndpM05rbVd6ZDBPR0o1T09jYU1ScXdWOFpEaVhUQzV1UXhVMnVQaElSNUN4VVU3QjcxZG5zZ0xpajVua2FaRWE5aGtmMkp6NmYvaWgzK0h4REVtalV6QlJNQjBHQTFVZERnUVdCQlJWYlNmeml5TWJzOWdZdjhHMkZmSmc5ckNQSURBZkJnTlZIU01FR0RBV2dCUlZiU2Z6aXlNYnM5Z1l2OEcyRmZKZzlyQ1BJREFQQmdOVkhSTUJBZjhFQlRBREFRSC9NQW9HQ0NxR1NNNDlCQU1DQTBjQU1FUUNJQkVQZW1hL2p0YU8xLzFxZVdNNlNyckp0R0JsY25HQ0pkazN0RmVaTnpDdEFpQXpDaU5XQmJyUTJLbEtzdys3UXEveDFBYnpVdncrU3lXbFBuSjBtVXJET3c9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFoWUFBQURmQkFNQUFBQllFWWUxQUFBQUcxQk1WRVVBVEpoQWViS0Fwc3kvMHVYZXUxem16SVh2M2E3Mzd0Yi8vLy9MWm42U0FBQVB5RWxFUVZSNDJ1MmRUWktqT2hMSEFXKzhWRlJ0V0ZMMGhpWDJiRGhBZGI4TDlHSU84R0ptRGpBeDhaWklldDNOc2NjSUJQcElTU2tNMWVDeUYxM1JHQXZwUnlyL3FRK1NKTkUrcHk3OCtmV3VmNzZCWjlIRS9LaGw4K0oySUd1NlhYM01DaU9xOXdQRm9yWlk1QW9LSW82a3phNVpJQXpqTzRvRnNWZ29YOTZzb2l6ZmNHYjQrMWlrMFdZQnMrQVdpa3p0UDhJaW1HWXIrMk1ScnQyZktCYXRWZkJadFpscVpKTHRta1VhNlRrZExJckU3WW5ZMURmcXBOa3ppNUJoL0JmSHdzZjRSb0NYdDA5MW8zTGVOWXNzMGl4QUZsNUZKVm52S2dRZWt1MmFoZDlzZitCWWVCWDFaZ3hNNkVoMU8yL2ZMRTR4Z3VwZzRWTlVsdlNkb3ovcGZMT2ZadGNzZk5VRHpBSml3WHc5citjZ1dCUm53V1hYTEU0eG5oTmswZnE2U0R1eTRQM0J2Yk5JWWp3bnlNS25xRjJiU2NOcGhPL1lONHM4eGl3QUZ0d2J0VXdzWHJzRHNIREdXKzg0RnY0eDZzQ2lMSVN0N0o2Rnl6QitJRm5ZaWxwMXRyOFFnSGJ2TDF5RzhSM0p3anRHdlZuTndLSk8rOTYwZXhhd3JQNTh4N0ZnL2xoV3hoZkQzMmIzTEU1b3p3bXdhUDE5cnRkU0VWL2NydEx1UE81MEdjYXZkeVFMRWlpTm5BWVd0MDVTWkFkZ2NVS2JoY1dDaDl5UEdLZjJuYVhrT3grbk9nM2pPNUlGOVUzakRDZmtFNVhxQ0N4eW5LQUNMUHlLT25TaVpyU2d0RHNDaXhSckZoYUxjRXhmRDhMQ3ljN25PMTJHOGZNZHlZSWhmQTlKMHFxN2tuMlpoWWRGaXZPY0Zvc1dFY1V5L0dyTUxsam92ZnpYTzVZRndlanpNTWRYZFVkaG9abjIzMWdXSEJuUWwyWFpkWWRob2QzUDcxZ1dRVVhkN3lmQkdjYVBkeXlMSXFpb2gyU2hHTWFmYUJaSi9LcmtJVmprQ0JVeFdMQzRhZlhqc0VqaiswZ2R2MEI3REJaS083QytrOFF0UFIySUJjb3d2bmtWTmVzZWhJVmlHRGdXQjFiVUlJdFRaQXgrWUVVTnNwaDcreThVaXdNcmFwZ0Z3akMrK2JySTZZRll6SWJ4RThIaXlJcUtZSEdPbWVNaitLWFovYk1nQzJUMTIyTW9xc1hpeTRKNDY1dG5HdWQ4WUJaVjdUR000RnBSY2VDZ0UyREJQWVl4eXVyWFAxMHNEcTJvTmd2QS9abXkrazhYaTJNcktzQ0NodUt0cjUyTHhiRVZGV0RoTll6ZWUvN2haSEZzUllWWStBeWpsOVcvWEN6WXNSVVZZc0VUcjJIODBibFl0QWZ2SWdDTHppZXJmNy8veDhuaTRJb0tzdkRLNnRmT3hZSWZYRkZCRmw3RDZKd3NqcTZvTUFzYVdHaUdXZFJIbnNaeHNnREVNUXV6T0xxaU9saFEvM29peU9Md2l1cGc0WTIzSEN3T3I2Z3VGclhYTUVBVzVPaUs2bUxoamJkQUZzZFhWQmNMdjZ4Q0xPaXhwM0Y4TEh6eEZzamkrSXJxWk5INUpqNGhGc25oRmRYTndoZHZBU3pZNFlOT0R3dkFNTTRlRnZYeEZkWERncm9kQU1EaUFSVFZ3NExIK0l0SFVGUVBDOHZzZlRyeUVPN0N3NEpIeEJlUGJoZUdZZmpqenVLaC9ZWHBQZjNqa2ZhaGRjUVFoOEE0OVFGRzdINFcxUEVGRkhlU0I0NDdEY05JUS9OYWp6d2VNYnhuY0w3enZwbGYxcWVNS1J2L0NYcmRydjB2dml4dnVNaFNvNWZwWmNIeDgrRDNxQ3FUOW1ja1l1T1NrTWpTcGswQ1hPVlZ5akJVaUJxVHdxYyt3K0kzN0JxOHgrQzgxbkpWZlhOZG40Mkh4aXh0TXd1dVhFem4xd0t0S0d4WGZsVXUrWXBrd2NGbXJUdmZXVGdyd1BSdEVCTUxyamxxTFpFZGpzVUZWcnpnMDVOQTExOTFIdnppcnNISWdwcmpaRU96VkJnb0ZxWnZlOFd4b05EUk5kZEhMSitydEd4a1FRd1d0UWM2aGdWM1NWNUlDQW5nQmJIclpvaE80cDFrSGxpOEdmTW53Q3pUYXhRTDU1UmRpQVVGMnJUaWVtcnRlLzZSZ1hOSnhMY2hGOEdDT25jM2gxaHdRQnpYVzJmbjNnYzFRQmExZDZjMmdnVng3bTRPQm91MWZYdlgyMzlSZXgrTWhWaHcvMDd0TUF2cTN2WWVaTUh0RnFIMzVaeVhtTVY4bHlFV3JmOG5ZUllrY2FiUkNnOGkvdEVoV2NUdmdKNGFsdDNDUXZabTNtV1ZSV2syNWFXQ2ZoSmtNVmV5ajA1TG92cjVKUU9xMWZieEVWMEhyb1lBTVZ0b3FWRlJadndreUtJMVNpeVUyN1ltaTFoVjVhWWtVdDJlbU8xNGFwZldaRWdXeEl4aWl2a1NhN0tJVmRYVzZrbTFaay9NUm1vRkZOTkZHeFFMYnQ4a01oMVprMFhzZnZEQ1ZodWlWb05acFRDZ1dLSzJMc1NDMm82TVRiZHRWUmFScWdyWURsVUZpRmx5MUFKZGo2ckZoRmpVUUxWcXlYZFZGbkdxeWlCYzZuMnpNNFlVa0xVUjVXQ0lCUUVLb1BJcXE3S0lVOVVXempjMU93eTdSempTTXMzRUFpdzQ2TkxKZUhCVkZuR3FXb2NheHVEQm10bnh1RkwxQUF1NEFGbVJkVmxFcVNvQnI2alVnNWxGVU5naEYyWlk2bVRSZ3NiS3hxUHJzb2hTVmRod2xJWXhzMDR0WEtSeU9NQ2locDNZaUhoZEZqR3F5bUdIMGxvc1RFNTU1N2l2WVJZRjNNamg4Tm9zSWxTVndUZFphWmlEUlFWVFRSRXNDRnlsOFZjcnM0aFFWUXAvelUwV1dhaFhxY2NETEJ3RjBFMVlSS2hxNjdqZ0FoWkZGSXZNWWFMNXlpd2lOaXU1V0pDcFlWWXZjc0dkKzQ2ZkJmT3lPSy9OQXErcXJZTlVZYkE0UTY3a0hoWm5SeWRiblFWZVZldWd3YU5adFB0a2dWZlZZbThzVHF1elFHZUpXY3JpZkMrTHlzRWlXNTBGZXBPOGkwWDdPQ3pRcXJxVVJYWWNGbWhWL1F3c3NLcGFSN1BnNjJqcUI3TEE3Z0Z1bzFsMFc3SGdHMmtxV2xWZHNWYUlSZEo1UXRWbExOaG1MSkNxNm9yQkY3RHdqODJTSUF1NkdRdWtxbEtITC9Hd1dEWm1EN05vdHhtYjRWWFZNWDhSWm5HR3FTcXR6U05aRkp1TTJTTlUxYVVLSGhhT09iNTZQZ3lFWTh5Y0tITU5qWnN0V0NCVjFkSDdQU3djYzcvRWJPM0pNV2ZFZkgxczlUbStHRlYxekY1NldERGZ4c3ZLY0IzNm5jazlMT2dtOCtCUnFscjdaclZoZ3dmSnRxcUJ1WlpvS3crTFlpeDFFeFk0VmFXd0wvR3hLS0IrcGEwTEV0UFl1TFg0Vk1GZEpOK0dCVTVWT2R4L2ZDeUNhOHYyaW10ckxVcFdzSHRydG1HQjNOSkhiTVBndVpkRmNNK0JiSHBqZkoxcExMUnQwenpaWkowOVVsVnJLL3JnNU94bDBkbSsrS0l2M0RLalRNMXFKQXROeVl0dDlsOUVxaW96UXpGT2tnQ0wyaXlPT1RhNDU3cUY1am9MQmNZbDJXWmZUcXlxRW1OL0ZrbENMS2FDeCtkQnJoYnJRbTNKOUVSQlk3Q1luaHQ1VXpZRWJNTUNtZlpnTnAvK1BkUnZROHU5TE9iZWw1VTNFb1ZkL0xSeTk5SjBaUUp0aHF1RzJyMTg2Zmk4cC9HMEhRdmM0MmZBWHRjUUMrcmY2K3JZUDVzRExPenFiY1FDT1ZhdG8xazQ5dTAyL2hPYUVJdTAyNDRGVWxWNVBBdnFOd3Z3QkgxVGRlVjZLZjFHTExBendIVTBDK2krYS9HQzU5Sk9GbW0zSlF2azQyZWNSTE5nU2FCbzZyUWFKNHRtVXhiWUdXQVd6Y0sycFZOZ09OU0VXTHgybTdKQUp4TzZSTE13MjVvR3ZGRGVtU3dJUE8yMkdRdWNxcG93c2c3QlFvZVJObjVqZSswc0ZuclB4RDZUdVp3RlB2bllWYTgzZ29YNmVHOFc2SG12bmMxQ296a1hrSlRhcDhHdytOKy90TSsvd1pONGFYNmNENS9MeDVDemFycnA2VndFZUh2a1k5L3BGMytSK21zR2xUSDc5Tnk0VXNCT1VqTW9qUzR3VHlTTm9LcTQ3N1g1QzI3ZG4vMmxxVUN5V1BKaGZqL3daTEZuRnFnbkdKOHNQaHNMaG4wVS9oT3dvUGc0NStGWjFPaDBFWS9QZ3VDeUFud0dGalRaVGxLUHhxTGVVRVlPeG9JbEc3ck9nN0VneVlhdWMrOHNTbWhpSXZ1Y0xMUlJkNEhNSWZLWUxMaVM1K05LMExsbEhwS0ZuSUFxeTlCVTFlT3pvSjRWdjgvR292WGxsUHBrTE9xUE5JdWRzeWcrMGl4MnpzSy9aUDdaV2VUZEoyVmg3emw0N1Q0ckN5MWI3ZVlvZGo4Mll3cU50TnFZdkg5dGNBZmpWRjRXY2pQWmIzWmUzZlB6WlBGazhXVHhaUEZrOFdUeFpQRms4V1R4WlBGazhXVHhaUEZrOFdUeFpQSGdMSzVsR2RpUDdmbXc4cTczdE9temRER2IramRoY2JscmMwRHJmUEFEVjJYMTdiOGtXVzhuenlJV05GbUR4ZEpsSWJYaGRmSzdXWkNWV0l6TGhSem9McXpDc09ESkloYlhaalVXUEZtSnhiZ2NRZ0FESVFtR1JidUlCWE04QjVnczZ5SlpyRm1mZFJaeVhjUXkraGwzSmRaMi9DeUtSYXRMclRESXdtcEVzdXkrTm5lekdCeHdmaDhMc21oVmZrMFdkZlNtUTVCRmYxZXo0YStqandSWkxIdjMrZEJIMW1GUlJPK29nbG53VVVvNDBObDVnMk94eUdPeGJrVVc2U29zZWdQTC9UZHdHeFpkdDJZZmFmUXdzaHBDVVRXd25NN2d0K01PRnRTd2NXWkVveXFMT1ZMVldHUm1PUHdsRlBOV3E3Sm90U2F3UWRLS09WNjR6QTkrM3Y2UUtidmIyV1RCNVh2Rmh2cTlhUm1QS3ZYbENrTjhtZG0rVTNPNyttTjdmWEZuTnIya0pldUxvK05UNHZKa2tXMU5uckJRVTJjcEcycVowdmtwZTZxbEdpR0ptMFhmbHJseGwwVExNYWl4SU5wckN5dkZRcFZJdnJZemJaa3N5Tm9zdUxwcmhGcWJyWWdTVldwWi8yd1d0Y0tDcTJVWUxHcjFPNFVGVlljMVdnRXlKYUhCSWxtYnhWQzFWd1cvdXR1S3F2OEpzR2pIOTgxVjZ0RGlaTE5JOUJRL2xUWWFrREMwQW1UeXhzMVpjR1dYbWFnTEVXd3VvaHFGT05JL0x6Nm03NnFFajFORytCcUxTamJ1OW9PWG9aT3JMUHJ4dU1CYkRiVTNXTkI1d011SCszTVpESU9LVkV0bFpiTElwdXZmMUZENDR6dFpLQThMTW5HNzZkQWpTSDhwR1RUSXRHNjVXMVA3MzBrVzhxVzFSRkpRNHM1NnRFS2lvRlBkcFlBaFJ3WkVYTEtZVTdscUxCcUZoZWFLRjdNWS9Wd2pyOFdUS1pSajBublZvM0UzSGhac2Jod2REVTE0ZW9NRkdmOE8zK25hTVFsTVBSeW5VejY1Qm1CeDZ0Wm5NY0E0aVd2TmplMHZTR1ZWcVpMdHpjVkM2U1AxbklFek0xbE0yZ0N3R0hRc2x4SGdxUEJNU2NHbnNqaHZ3V0tBVWNucXppelU0S0hxSmhrTXNwaENuOEppd2FlZkY4TXQxMkoyQVNNZGdiSFpnVmNRaTJvVEZnTEdDV0tSS3JIeTJBb1BpMjVpY1pKeWtCb3MyTlQ2WW5CSSt2aEZ3TWpGTlRpWms2czBIOGhDQ0FiRUlzT3pLRlFXWjNWMkk0S0ZJTkMvd2U4OG9aZ3ZZYkRvTm1MUlgvbE9GbVFNeUNybEZKQkY1Mk14U01pdEFLSys3TzlEV1FqUGZSY0xkVHhDbHR2RklPYkRTM1p1MzlPMC9IZ1dGR2FCOXhmdGNQemVQakpvaUxDTGRDemd3MWt3bUVXQ1prSGtBRTdWRVp0Rk4wMXorRm1jYWhGMDllcnMwaEdReFhrcnU1aHZZcEFGVGVTUHExRStuQ3hPSVJaWno0TTEwZ2xOOFFVZk9SWWhGc1Y5TEhyaHNsaU1JV2pIcXlBTG9nN0NXOWxFZ0VVeC9yMzYvRVU5cDQ0L2pjTWtoV1BpWkVIa1dHNTlIZWxiS0N3MXlLS1F5eHF5M2FKdVY1MUZNLzZnVjBxZXVYWGtOSTFIYW5HeFFockdFTCtMNkYxblVjL3ZFVzJHZUc0SmkzRmhtU2lzRlJiRC9NbzFVVmtVWXNDcGpGTzUrUG1VTjNNZXAxNFNuVVUvdmhYUlpKOUZ6Mkl4VkVSTVlNbHg2bFVmcC9iVnljUnRxd3dXdDM5ZituRnFMVWZYK2JLNTMzbmR6R1l4VFdzcExHcHova0xMN2FEUFh5Z3NwbGRSak5OREZndHRFcWxXbHlhNXJDQ2QwMFRxTEdUV2tlbUU1ajRXRGNCaWV0Kzh3b0xDTEY3VnlWd09zSkR2L2FJaEZxazZyNVhQSSttem1sNWRaekc5LzBTbTl1dnVZakdYcjdKZ05vdmhlaWFMVEova3Y5Z3NxRDdmZVhLeXFGenpuZW9ySEhRV3crbXpJZWQzc1hqcFFCWkRvMTVWVFIzNEdDeSttQXNlb3R5WGRoNmJqVVZOZzlIR3hhSnl6b1BMbzFWbnNlQXlaQzlHRzkxa2p4SmJ1T3ZtMmp1N0ZseVY0Nmk5Ti9ENnlEVzBnZWh0dURINzI2L1ZicGZ6SWJBK3Q4YzhqVThXYTZ5UlBoZ0x1dTBqN1FkaGNSMFh6TGJNZEhBVUZrVWZFMitaTHVkQUxNZ0haSDA0Q292dDg2SWNqa1h6Wk5HSGxyMnphSDdMbGNXV292OER3aWZFektwNHJVZ0FBQUFBU1VWT1JLNUNZSUk9In0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMTktMDEtMDciLCJ1cmwiOiJtay5jb20udm4iLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IlUyRiBBdXRoZW50aWNhdG9yIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVMkYxMTAwMjAxODA3MDkwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMy4zIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjEifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDE5LTAxLTA3In0seyJhYWd1aWQiOiJkNzE2MDE5YS05ZjRlLTQwNDEtOTc1MC0xN2M3OGY4YWU4MWEiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6ImQ3MTYwMTlhLTlmNGUtNDA0MS05NzUwLTE3Yzc4ZjhhZTgxYSIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJlVG9rZW4gRnVzaW9uIEJJTyJ9LCJkZXNjcmlwdGlvbiI6ImVUb2tlbiBGdXNpb24gQklPIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfSx7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sImlzRnJlc2hVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZWQiOmZhbHNlLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURkVENDQWwyZ0F3SUJBZ0lKQUlDVVR2a2d0ajVDTUEwR0NTcUdTSWIzRFFFQkN3VUFNRkV4Q3pBSkJnTlZCQVlUQWtaU01Rd3dDZ1lEVlFRS0RBTkVTVk14Q3pBSkJnTlZCQXNNQWtOVE1TY3dKUVlEVlFRRERCNUhaVzFoYkhSdklFMTFiSFJwUVhCd0lFWkpSRThnVTNWaVkyRWdRMEV3SGhjTk1qQXdOekEzTVRRek56RTRXaGNOTXpBd056QTFNVFF6TnpFNFdqQlJNUXN3Q1FZRFZRUUdFd0pHVWpFTU1Bb0dBMVVFQ2d3RFJFbFRNUXN3Q1FZRFZRUUxEQUpEVXpFbk1DVUdBMVVFQXd3ZVIyVnRZV3gwYnlCTmRXeDBhVUZ3Y0NCR1NVUlBJRk4xWW1OaElFTkJNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXZBS09lcUM1L3AwRDFpc0NZS1FKbFZVT3JCNkk3RExvY3VuRS9SbThkdUdUYnl4UWh0M0NiRlZUdjNOMkxwMmZianhsSSszc09TR2szM0ZUWWtUcXhjZEpJcko3U3NrQmNVU05yZktPYVFULzZLUWNQNENtN1YrNjU1VHErVFd4eXhXUWhEeWd0MTVxb1A3TXVLNmJUOVN3cENqcGZLaGFNU215UWFNb1VjUkFiTHFkekJDYWMwaHpCK1plK2dxSmxuV1Y5VWFTSTJyRnNWdUg0WkUwY1JPK01PcGFMZ00vczI0OG5HR0hwMjJld1NRZmJuUGFCYmI4aXF5QVArY3U1MkdMc1VwS1JKZWJFK1I2K1BNUTlKQ2RXZVFaUjNEa2ZTaWRrdjNtY2I0anExaUl0YStNcUtoUm53cmZYaDkxMUtXTG5ZQWw5RU5DaExYMGM2U2oxUUlEQVFBQm8xQXdUakFkQmdOVkhRNEVGZ1FVV0x2aFJCVVBuOHVMSWY2OCtndi9OWkl3R1NJd0h3WURWUjBqQkJnd0ZvQVVXTHZoUkJVUG44dUxJZjY4K2d2L05aSXdHU0l3REFZRFZSMFRCQVV3QXdFQi96QU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFGTHJEaGFlZ2VLSHhZakgzRVAzdlVCS2huek0yMDZBU3hnZVlDTzJFYzlwT2xZSmFlcUZFK3NVYW1VVi9wd2pEbHFOYVNnRmd5N1R3ZVlrdk9tTW40cVNjc0hxdkozekdPQWlhZndhaDF2VUhmQ2xYUjgrYXhPMmlHT1VGMEpLclo5WVlqYkFhNS80SENsdjdqRlBPZE1XVE9ReW5nb2lIQXMzamt1WWpwQ0xGbEI0Vk9pM2Qxd2pBMXBuVGRCS2tBYjd0OG5UdncrL1hiRnZjUWE3M1ZIN3Nqdm9CcUQzZmRNZlJjdVZxNHFVWnRaVDZjR2FnVEhENjFUdHFoOW9NQ1pYY0RiUjFQR1puTmJxeWNzV1BESUswbnBtSzMvM2xmVjhjK1pzcnk2ZTE3MG1mSk1acDdPOG02Q1N6Ni9WTEsreURKZDc4NDF3cG1lS1RmNkluWkE9PSIsIk1JSUM2VENDQWRHZ0F3SUJBZ0lKQUpiVHlydTFYL0lQTUEwR0NTcUdTSWIzRFFFQkN3VUFNQ014SVRBZkJnTlZCQU1NR0VkbGJXRnNkRzhnVFhWc2RHbEJjSEFnUmtsRVR5QkRRVEFlRncweE9EQTJNVEl4TkRRMU5UQmFGdzB5T0RBMk1Ea3hORFExTlRCYU1DTXhJVEFmQmdOVkJBTU1HRWRsYldGc2RHOGdUWFZzZEdsQmNIQWdSa2xFVHlCRFFUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU1WaktIV3BiRDdUU2xNeG9jalRsNm5JZjd4MzJQbXNROXpHdUxHR3FBMFVRWm9JcTNYTHpMNkxZVXZKNUE1ZzB1eUZHbGxIRWZHQUtyRWFDUThGVnZQUy9VaDBGeWZ6V2hSQXppVFNpampNSUlWampqVXY5bTl2Rm1jWFNjZ0hpZzdPZHo4ODU4VjBrck5IOTlxR20zd2pnYU9lclRXbXQralhDVWZuMDFJa1RQd3hHMkhsZ0VkNDVqTkxTVjdWb29sK0tlOEUya2k0bEVrVGVIemJvdWxSNUdVYnAzbk1pN0U0N1ZNUWEzYk53bnpXQmJzYUJTU1FoTGszbTVIYUtoaHhhNndKREs0N05pTUNrQ2tkSUh1V1NRTFZBZm04NVVBT050RU9Qd2kwT3VLM3FiZTh5S09GR2YwS2hCNU1NZUF5bTdNVi9NNFcwYTQ5b2dQRDlwTUNBd0VBQWFNZ01CNHdEQVlEVlIwVEJBVXdBd0VCL3pBT0JnTlZIUThCQWY4RUJBTUNBb1F3RFFZSktvWklodmNOQVFFTEJRQURnZ0VCQUpXejV4TE1rNVdOWWJBYjZ5T3hFQ0JvWjJXZUIvcWw0VkozTy8zL3ROc3hPWW56TGVXbzU0MHpRaDlyQW1heHo3ZXVtQmxza01xNHlHUFNOWEI5eWNXR0hna2NDZVN6TjJ3djhDSXpEQnMyb0JaalROazY1TEJaRHNzVE9CdE1XLyt1VEZIUWZidU8zSVNMaEkwRFhmUkVpOU5ETTNqZmsxMXhIY3NmaDJSTVYrUWROZndWYVpackNxK291RytFdmt2N0txcStveXUwVkZNL3R6NjhUR2w2eWxoUEZSMXFoOXd0dHBWakFPT0NFUUNMcVAyZFAyOGx3WUJ5Q3FIUXFWSHdidWp2L0xaalpuS1czTFluZFppeFBQU1JDSnNzRER3SnZoL2Y2blR4ZzlaRSsvSmNZcmU1Q2FJOG56VkhhU09Dak5KN0Z6VUxHNjRKaVdPdlE1MD0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBUXdBQUFBZ0NBWUFBQURubFVacUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFFblFBQUJKMEFkNW1IM2dBQUFBWmRFVllkRk52Wm5SM1lYSmxBSEJoYVc1MExtNWxkQ0EwTGpBdU1qSHhJR21WQUFBSzFFbEVRVlI0WHUxZERYQWNaUm0rTk9BZktvZzZXTzBRY3JlWDNPNzFSNDFvSGRTcXFEQU9nMytjWUVYQm9sWFJURW4yMjB0YUtUYzY0bWdCcXpCaUVVVnBCZHFpd3docVNkSVMydXBZU2d2UnRwVFNja2xqV3pIYWdqcFNSZHI0dkx0dmpydmsyN3ZkdmQxTGpuN1B6RE4zdC9kKzcvdCtmOC8rNzhhSzBORGFhcjJxT2RYWm9xV3lIOVIwYTBGY3Q2N1dkSEdUWm9qVkNjUHFTZWpXMW9RdUhzT3kvZUJUc0RtTS81NFpUOWorTFdHSWc3RGZCL3NCY0RQc2Y0WGZQOFgzYjJ1RzFaSFF6VThtVXVLZHlXVEhtNXFhY2kvakhBS0J5aWYwYkJyK0x3YVhJUFlQa01kcWZMOFhkV3BsczFBQTMxL1FqT3c5OEw4UzliOEJYSVIyK25EYzZEb3psc2swc2xua1FNeGtQR1hPOUVKdFZuWUdGNHNVeVZuZDhVVGFlcDhidys2TGFrQmo1aXpkYk5KUzFyeEVXbnlXeGczNkVtUGRXb1BQRGVqZjdlQVRHTXNIYUR6VHVDNmhiajBOL3BYbUFzcnVnczBXTFA4TnVCSmpaSm1XRWxjbDA5bVBKMUptVzB0TDUrdWlIQnVHa1hzbGpYODduaTRFelZuazlBdmtzUW41N0VTZGhyQjhCTXVQak9XUC8vNE9Ic1IvZTdEOFlkVGxmdFJoRmZnZExHOUh1MXdBZnpyNTVqQU9raVFLaHZWYkdCNkMwLy9pKzJpTmVSeDhGZ252UmZ4ZmFpbnpTazdORTBpSVVQYmY0M3dXbU5UTmQ3QnBLRUE3TFpmRkFZOXpwM3laVFNNRGlRVmkvVStTZzVRWUFJZk9tRzJld3NVakEvcmhXN0w0QmVybWo5aDBVb0IyT0IrVFpUVzRCL2s4T3lHL3lDaU9vVzFJWUg2SDhYUHo5TGJjS3ppbFFHaHBNWnZoWnlIR3dHM2c0MkJrODVaOG85MEc4WDBOaVNzMUl2MlFHazhLZFdzenQ0c25JUDhScVI5bURRWERJZFpTYkJvWjBJbDNTMk9YWlhZcEY0OE1VMTR3bksxYmVXNDFwTDNGRVFDSmxQVld0REcyZnV5VnJOUjN0QlRkU2pCOFlySUZveVZ0bm8yT0N6Qmd4RE5CQjZwWEtNSHd4aUQ5Z0szS2M2UGNrdkJHSlJpK01jbUMwWUQ0ZmRLNFhvaDlXL1lUQ1pSZ2VLTnZ3Y2hrR3RHMmUyVytha3NsR0w0eG1ZSkJheGxwVEkra05SUWRtR1Izb1VNSmhqZjZGUXc2Y0NyelUzdENNTERXdVFzZDNSK0F3M0tuQlE1S3luamhqZHhPbm5EaUNFWnVHanJzWVdsTUp0cGlXVUszQm1UL0ZmRXVkaGc2VVBlNkZnejBiUjZmYTZNbW5ZM2tsRHdoYVlqTFVVNmVzMjd0MGd6em03VmdVdTk2RDZma0h4Q2E2MlVWR0NNcThnMDJqUlFuaW1Cb1J2WWlhVHdtMm50Zlc5dkNrN1cwZFlIcy93SjE2M2s2ZU1adVEwVzlDd2JHOUsxc09xV0F2SVUwWDV0aURadE5iU2pCY0dFRWd0SFdkc3ZKOEUybkF1VXhpYnA1aFdNOTJvRGYyeWI4WDBLeDNyRU5GMG93b2dIbTBoSnB2amFWWVBqQ2lTQVlpYlQxZVdrc0ppYkNrL1BtNVU1aWM4cnhRcGxkTVJQcDdIbHNIaHFVWUVRREpSZ2g0c1V1R0hTUkQrcElWK1RKNHhIMUxHOWRqQ0hUaU1sUjRWaUcyRTdIUmJoQUtGQ0NFUTJVWUlTSUY3dGdvSjJ6MGpoTXRIT2VqbDJ3ZVFGWS9sR1pmU25GZkRZUEJVb3dva0hDTUJkTDg3V3BCTU1YS2dxR0lTNXZUcHRuaDBYVSswNVpuQUpERkF6RDZEZ2QvcDZXeG1IR0RmRkZOaCtIMFFiMHdhT3lNbU9FK09VTkkvY1NMbEExNmwwdzBGNjc0N3E0cFJwR2NkcWE3a3VSNVV0RUg0NWdEbXdLaS9EWmo4LzdJRVMzNHJPemVhYVl6V2xVaDNvUmpKb3pSTUdvT0FFTmEwaTJkVEdHZUVwOFRGSm1QRHZZdkdyVXUyQ0VRYnFoa3NPRkJzeWxpMld4YXNUajZOZDEycHNYdjU3VENRWWxHQzRNU1RCYVc2MDNvbzFkYjZxenFWdGZZbk01NkFwQnc5b3hvVndSTVlsR05LMzkxVnlpS2lqQmlFWXdtbFBkTGJKWXRTVGE3cUhpQSt1K29RVERoU0VKQnRwdmhkVC9HSFd4djl6V3hSaTB0UGlFdEh3SnhiVnNYaFdVWUVRakdIUndHdU9oMGdWNWtUT2VNaS9oaFB4RENZWUxReENNczFxdFZnenU4cmV2cHl5UGp3SHdzcFZoL1N1VldqS2RDd1NHRW95b0JBTzVwODMzb3ArZWs4V3NGZEYrd2E4U1ZvTGh3aEFFQTM3V1RQQmJSSFRjQWV4R3ZKVE5IZlFNTmNmNkJzK1A5ZWJueGZxZVBKV1gya0NaekhnZkV4akNHUUlsR05FSkJzRitFSkV1ZHN2aTFvYmlUNXlLZjlTTllPaldaalR5ZmFIUnVkOUFIb3RZcFdBNE54cUpZMUxmVE5UNUsyd2VpNjBmTWlBVUQ0S2pCZmJtajhiNjhzdGoydzdhRDJxaGZVLzB4eTZacnpIUzJxdWxwVE5sK3d5SXVoY01qQlU2NjFRTm0yY3VQb1BEUllUUkJqcGJSMk1BT1Y5SFp6T1E5OC93L2ZZd2lQSHRmamUwYnYyRmsvQ1BlaEdNT3JzT28vTHQ2N28xWERnVnVpRS9Cd0x4anhLeEtPWEcyTTZkdGkzNnc4T1JkbkdQN1RjZ2tGdWRDOGJVdkE2amxraWtPOCtUdGcySU1YU1l6ZnhEQ1lZTHF4QU1MN2V2bzc3dHRuRi8vMG5Za3RnaEVZbHhITHFhekoydGpFcWJzOWl5U1dYbjJ2NERRQWxHL2FPc1lCaldBVGJ6RHlVWUxnd3NHTGxwS0x0VjZwTkpIVlo0WUhMZi9uZkpCV0lDaDJIZFFFWGk2ZXdsTXI4bGRKNUhZdHY3aFJLTStrYzV3VUQ3N0dVei8xQ0M0Y0tBZ3VIcDlHZEtYTVhtRUl4OHUwUWNYUGpZYSsweW1Vd2oydXR4cWU4aW9vNFgydlkrb1FTai9sRmhsK1NQYk9ZZlNqQmNHRUF3NkhvSzdBNlVuY2lvNThHbXBzdGVlQjFENzlCWDVlSWc0ZjNEcDNPcEdPTE1sL2tmeHgyeHpGcmZqOFZYZ2xIL3FMQkxzb1hOL0VNSmhnc0RDRVlpVmY3MmRXYnBKZHc5Kzg2UmlzTjQ5Zzd1aDNWaEY0UEY2UW1KLzFMcTFnSXU0aG1WQkFNVDl1N3g3MHdKZy9UWWZVNmhMSlJnVkVhRlhaSUgyTXcvbEdDNDBLZGd6SjV0bmdLZkI2UyttUGovMEl3WkhTL25JZzVHUnhzaEJnTlNrU2psWWk1UkFQcnVVbG1jWW1KeS9YbkczSEV4SzZEaUZrWkV4QmpZeUNtVVJTWEJRRHVQb0E1Ym8yYlN5TDZkVS9JRTNpcVVuZ1lObTJnRDE3TjArRzhWcCtRZlNqQmM2Rk13NHJwbFNmMFVFVEZOTmk5RnovRE1XRy8raUVRa0hQYm1OOFMyYlp0NCtiaHpqMG41SjNpQmRGczFsL0FFMUwydUJhTldUT3JpQTV5U0p5RHY3OHI4MUp5ZXJ5NldRQW1HQzMwSVJ0T2MzR2xvcDhOU1AyUFV4Vk5sMS9UcjhxMnh2dng2OFBraXNmZ25mbDhmNng5MGZRVWw0bjVHR3ErWXVqaHk1cXp1MTNDUmlsQ0M0WTExS1JqMFdrZ3RGL3dtUlNVWUx2UWhHRjRtR0FhTFlQUHkyRGcwUGRZejlIN3Nwc3lOOVF4VWZDMGlYZnlGUHRvbmkxbE1HcXhjcENLVVlIaGozUWtHeENLcFcrL21kSUpCQ1lZTFBRb0d2WVFhOXVYZjcxbHA2NkpLbEh0OC9Rc1VSKzBYVFh1QUVneHZyQS9Cb0xmcjJRZkhyL0d6bGVtS0tTTVl1bmtIVFN6RWxMNCtzRmFDZ2ZvK0IrN1dqT3puMkxRc25OY0dpRDFVVHViUG9kbkY1cEdBenBnZ3Z1dFdCdXI2SDd0T3VyaVVpNVFGWFNXS010L0hCTjVFYXlYVXIrdzlNY0VwanZHSzR2Zklid1ZkdzhJcGxBV05CWlM1RHZXaE41WG40ZWRvcWQ4b2lGeXgyd2sraXUvMEl1aWw5S3dUVHNrVDRtbHhEdHJ6Um01WGpQVW8ycFhlNkc0OWdqeHZ3K2ZDaE5HaGNmaHdRQzlqYVRMRUc5eG9HRmVXdmlZK1V1U20yUStjb1hkeTZOWWlOT3d5VlBySEdCaDNKb3p1VUNzZVQ1bVhRZkYvamhnL3hPZlhOZDI4Z2pvMGFIM3BMQWxOTkdkdEw1WWk1NXZRZ2JlajQrNmcvOWdzTXFBT0gzSGFTZndFYlhjRHZtZVRodlVwVGU5Nnk0UXpNNzZRbTlZMFo5RnBkUGNtNnZOcHNBdDlzdHhwTyt2WDRFYkUyMG9UQ2NzR1NvbmwrQi9mNldhL1ZjVjUwYVNQeDd0T0RlRUJ4ZzEweHkrZGtvWGdmQWd4RmlEZTE5QU8zME0vckVRTzl5TG1BNGkvQmIrM2wrYm5rUElITjRQclVMKzErRndCMjJ2aG94MWlmMUc4MVhwYnZBMjVaaksrcjJseFIyNGExZDhSUHpFZnV3b1djc0VXaUpNellqK0kzdytWdEtzaEhnSC9BUFpTbnFqVHpmaTh4aDY3dW5VdVBkckEyOE54WXJIL0F6M3RJNGo1K1RPTEFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJGSURPXzJfMCIsIkZJRE9fMl8xIiwiRklET18yXzFfUFJFIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsIm1pblBpbkxlbmd0aCJdLCJhYWd1aWQiOiJkNzE2MDE5YTlmNGU0MDQxOTc1MDE3Yzc4ZjhhZTgxYSIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwidXYiOmZhbHNlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibm9NY0dhUGVybWlzc2lvbnNXaXRoQ2xpZW50UGluIjpmYWxzZSwiYmlvRW5yb2xsIjpmYWxzZSwidXNlclZlcmlmaWNhdGlvbk1nbXRQcmV2aWV3Ijp0cnVlLCJ1dkJpb0Vucm9sbCI6dHJ1ZSwiYXV0aG5yQ2ZnIjp0cnVlLCJ1dkFjZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6ZmFsc2UsImFsd2F5c1V2IjpmYWxzZX0sInBpblV2QXV0aFByb3RvY29scyI6WzEsMl0sIm1heENyZWRlbnRpYWxJZExlbmd0aCI6OTYsInRyYW5zcG9ydHMiOlsidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN31dLCJmb3JjZVBJTkNoYW5nZSI6ZmFsc2UsIm1pblBJTkxlbmd0aCI6NCwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjQsInByZWZlcnJlZFBsYXRmb3JtVXZBdHRlbXB0cyI6MywidXZNb2RhbGl0eSI6MiwiY2VydGlmaWNhdGlvbnMiOnsiRklETyI6M30sInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjoyNTV9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wOC0wMSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6ImVUb2tlbiBGdXNpb24gQklPIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNTA4MDEwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblByb2ZpbGVzIjpbImNvbnN1bWVyIl0sImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDgtMDEiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6Mn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNi0wMi0xMSJ9LHsiYWFndWlkIjoiNTcyMzU2OTQtNTFhNS00YTRkLWE4MWEtZjQyMTg1ZGY2NTAyIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI1NzIzNTY5NC01MWE1LTRhNGQtYTgxYS1mNDIxODVkZjY1MDIiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiU0hBTE8gQVVUSCJ9LCJkZXNjcmlwdGlvbiI6IlNIQUxPIEFVVEgiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MTMxMDgxLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX0seyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUJtRENDQVQ2Z0F3SUJBZ0lVQklnZlhwZDV3a01xeGhLV3RoWGo1cnA0d3o4d0NnWUlLb1pJemowRUF3SXdLVEVuTUNVR0ExVUVBd3dlUVZoRlRFd2dWVEpHSUVOQklGTmxjbWxoYkNBeE5ESXlORFUwTVRjMU1CNFhEVEl3TURJd016QTBOVGd3TmxvWERUUTNNRFl5TVRBME5UZ3dObG93S1RFbk1DVUdBMVVFQXd3ZVFWaEZURXdnVlRKR0lFTkJJRk5sY21saGJDQXhOREl5TkRVME1UYzFNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVlc2NNSko4RE9FbTM2ZHVTemV5bStFSE1lNzNGT29NSlNodjFqbVByNFAzS29tZFVBeSsxM3IvZW55d0w2RDBhNDFINmZvUlNWdTBCSThXbnN4eERjYU5FTUVJd0RBWURWUjBUQkFVd0F3RUIvekFUQmdOVkhTVUVEREFLQmdnckJnRUZCUWNEQXpBZEJnTlZIUTRFRmdRVTJSZTRJdTJJLytLWHV3SDZFTUprM3FyTS9XQXdDZ1lJS29aSXpqMEVBd0lEU0FBd1JRSWhBUFJDcXJEc0lBTW9GOWJTUk5KOWppZVN6RURTVU1Ray8vNGtUR0xiM0dlRkFpQmRnNTVNUXU0clM3VFBxRFVZaGxLUlB4OHV4enhBQmMwUUY0ZUM4K0VyRFE9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFRQUFBQUVBQ0FZQUFBQmNjcWhtQUFBQUNYQklXWE1BQUFzU0FBQUxFZ0hTM1g3OEFBQUFHM1JGV0hSVGIyWjBkMkZ5WlFCRFpXeHplWE1nVTNSMVpHbHZJRlJ2YjJ6QnArRjhBQUFNMkVsRVFWUjRuTzNkZmRCbWRWbkE4ZThGaTRKaEVDcElEbE5rTlU2YU1tSkRJME5EallpNElLQVRacE5OK1E2Q0NGSlpFN2JrQzVFdmxQRm0yaDlOMmF6NWdwQ2hwcE4vQ0NvS3VxS0RTa3N5eGJUQ3NyeFlxQ3k3ZS9YSE9XdmJ5ajdQczg5OTd2dDN6dS8zL2N3dytOZDVyaG04dnZjNTV6NzNmVWRtSXFsTllRQ2tkaGtBcVdFR1FHcVlBWkFhWmdDa2hoa0FxV0VHUUdxWUFaQWFaZ0NraGhrQXFXRUdRR3FZQVpBYVpnQ2toaGtBcVdFR1FHcVlBWkFhWmdDV0VSSDdBcjhCL0E1d1JObHAxTEFFYmdldUJLN0xnUmJYQUN3aEl2WURMZ05lVlhvV3FiY0R1QkM0ZUlnSUdJQTk2SmYvQ3VBVnBXZVJkdk13OEV1WitkVlpEMlFBSGtGRXJLRTcxWEw1TlZZWFplYTZXUTlpQUhiVEwvOVZ3TXRMenlJdDRhck1QSFBXZ3hpQVhmU24vVmZpOG12OERNQ1FYSDVOakFFWXlpN0wveklnQ284anJZUUJHRUovemIvemJyL0xyNmt3QUxQcWwvOXlmSjlmMDJNQVp0RXYvMlhBcTB2UElxMkNBVml0L3ByLzNjQnJTczhpclpJQldBMlhYNVV3QUh1clArMy9LMXgrVFo4QjJCdGU4NnN5Qm1DbHZOdXZDaG1BbGZDMFg1VXlBTXZwbDMvbkRUOGY4bEZORE1CU1hINVZ6Z0RzU2Y4MVhqdFArMTErMWNnQVBKSisrZDhObkZWNkZtbU9ETUR1K3RQK3Z3QmVXM29XYWM0TXdLNWNmalhHQU96azhxdEJCZ0IrZU0xL0tYQk82Vm1rQlRJQS9mSy9DM2hkNlZta0JXczdBTDd5cTNIdEJtQ1g1VDhiMytkWG05b01nTXN2QVMwR3dPV1hmcWl0QUxqODB2L1RUZ0M4MnkvOWlEWUMwQy8vMjRIelNzOGlqVWo5QWVpWC84K0I4MHZQSW8xTTNRRncrYVVsWFptWk0zL2lkWlFCY1BtbFpWMlltVytaOVNDakM0RFgvTkt5ZmdBY2xabmZtdlZBb3dwQXYvenZBTTdGdC9xa1IvSXc4THJNdkdxSWc0MG1BQzcvUW0wRk5nUDNBOThISGdKMkZKMUl5MGxnSS9EWG1YbmpVQWNkUlFCYy9ybDZHUGc2Y0FOd0kzQUw4QjkwaS85d1pycjREU3NlZ0lqWWgvKzc0ZWZ5RDJNNzhBVmdQZkJQd0oyWnViM3NTQnFqb2dIb2wvOFM0QTI0L0VONEVQZ0EzVGNpMytLcnU1WlRMQUQ5YWYvRndPOFZHYUF1RHdGL0QxeWNtYmVYSGtiVFVTUUEvZksvRGZqOWhmL3h1aVRkZGYyNW1mbkYwc05vZWhZZUFKZC9NRDhBM2d5OE16TWZLajJNcG1taEFYRDVCL09md0c5bTV2V2xCOUcwTFN3QS9RMi9QOE5yL2xuZERKeVdtWGVXSGtUVHQ1QUE3SEszLzRLNS83RzYvU3R3ZW1aK3QvUWdxc1BjQTlBdi84N1RmdC9xVzczUEFLZGs1b09sQjFFOTVob0FsMzh3RzRCZnpjejdTdytpdXN3dEFDNy9ZRFlCejg3TU8wb1BvdnJNSlFBdS8yQzJBaWRuNXFkS0Q2STZEUjZBZnZuZkN2d0JMditzTHM3TVB5bzloT28xYUFENjVYOEw4SWVESGJSZHQ5Q2QrbnZUVDNNeldBRDZoM3plREx3UlgvbG50UTA0S1RNL1hYb1ExVzNJQUx5UjdycmY1Wi9kMWNDTHN2Um50Vlc5UVFJUUVVY0Ezd1FlTS9QQnRCWDQ1Y3o4U3VsQlZMK2hBdkJid04vTlBvN292c0RqVkYvOXRRaERCZUFzNFBMWnh4RndndGYrV2hRRE1DNjNBVS8zNDcxYUZBTXdMcjd2cjRVeUFPTnlqTi9zbzBVeUFPUHhYOERQWnViM1N3K2lkaGlBOGJnbU0wOHJQWVRhWWdERzQ0OHo4NjJsaDFCYkRNQjRuSnFaMTVZZVFtMHhBT1B4MU15OHRmUVFhb3NCR0ljZHdDR1orVURwUWRRV0F6QU9Ed0NIK3c2QUZzMEFqTU4zZ0ovMkNVQXRtZ0VZaHp1QkoyZm0xdEtEcUMwR1lCdzhBMUFSQm1BY3ZnczgwWHNBV2pRRE1BNEpQQzR6N3lzOWlOcGlBTWJqNlpuNXRkSkRxQzBHWUR4ZW1KbFhseDVDYlRFQTQ3RXVNeThxUFlUYVlnREc0N3JNWEZ0NkNMWEZBSXpIM2NDUm1mbTkwb09vSFFaZ1hINGxNejliZWdpMXd3Q015NldaZVg3cElkUU9BekF1ZHdDLzRBTkJXaFFETUQ1K01ZZ1d4Z0NNejZlQkV6TnpSK2xCVkQ4RE1EN2JnT016ODRiU2c2aCtCbUNjUGdtc3pjenRwUWRSM1F6QU9PMmdlelQ0bXRLRHFHNEdZTHcyQXMveWV3STFUd1pnM0s3SXpOZVdIa0wxTWdEanRoMDRJek0vVW5vUTFja0FqTi85d0xIK1pvRG13UUJNdzBiZ3VNejhUdWxCVkJjRE1CMWZCcDZibVZ0S0Q2SjZHSUJwdVFsNFFXWnVLajJJNm1BQXB1ZGJkTThJZUU5QU16TUEwM1FQOEFyZzJoemlQNkNhWlFDbWF4dHdHZkNtelB6djBzTm9tZ3pBOUgwRE9BLzRsSjhnMU40eUFIWFlBWHdNV0FkczhMSkFLMlVBNnJJZHVBNzRTK0F6bmhGb09RYWdYaHVCOWNEVmRHY0Z4a0Evd2dEVUw0Rk53UFhBamNEWGdHOERtekx6d1pLRHFUd0QwS1p0L1QvZkEvNm4vOS9lTnhpMzdjQnR3SHVBZng3cVBvOEJrS1psQi9BbTRHMURSTUFBU05PekZUZ21NemZNZWlBRElFM1RSWm01YnRhREdBQnBtcTdLekROblBZZ0JrS2JKQUVnTk13QlN3d3lBMURBRElEWE1BRWdOTXdCU3d3eUExREFESURWc1ZBRjRFZkNobVE4a2FhVkdGWUJEZ0Z1QncyWSttS1NWR0U4QUFDTGlkT0Q5d0FHREhGRFNVc1lWQUlDSWVDWndMdkFNWU0xZ0IxWUphNEQ5Z1lQN2Y2OEI5aTA2a1hZMXZnQ29UaEZ4RVBBazRPZUFvNEJqZ0djRFB3NUV3ZEZhWmdCVVRrUThDamdXT0IzNGRlQ0paU2RxamdIUU9QUXhPQms0R3pnZXp3b1d3UUJvWENKaUg3ckxnNHVBNTJBSTVza0FhSno2RUt3RjNnSDhmT0Z4YW1VQU5HNFI4Vmk2czRHemdmMEtqMU1iQTZEeGk0Z0FUZ0xlQnh4ZWVKeWFHQUJOUjBROEdmZ0FjSFRwV1NwaEFEUXQvU1BqNjRFVFNzOVNBUU9nNlltSUE0Ri9wTHNzME9vWkFFMVRINEhyZ09OS3p6SmhCa0RURlJHUEJ6NUg5M2l4OXA0QjBMUkZ4RlBwZnJMOHgwclBNa0VHUU5NWEVTOEgzb3RQRGU0dEE2RHA2NThUdUFZNHBmUXNFMk1BVkllSU9CTFlRUGZ4WXEyTUFWQTlJbUlkOENlbDU1Z1FBNkI2Uk1SUDBIMnZwTjhyc0RJR1FIV0ppQXVCUHkwOXgwUVlBTlVsSW40UytDYncyTkt6VElBQlVIMGk0aCtBbDVTZVl3SU1nT29URVd1Qmo1V2VZd0lNZ09yVGY0bkl2d09QTHozTHlCa0ExU2tpUGdxY1ducU9rVE1BcWxORW5BZThxL1FjSTJjQVZLZUlPQmE0dnZRY0kyY0FWS2VJT0F6NE52N081RklNZ09vVUVZOEcvZzA0b3ZRc0kyWUFWSytJdUFtL1FIUXBCa0QxaW9oUEFzOHRQY2VJR1FEVkt5SStETHl3OUJ3alpnQlVyNGhZRDd5NDlCd2paZ0JVTDg4QWxtVUFWSytJK0FSd1l1azVSc3dBcUY0UmNUUHd6Tkp6akpnQlVKMGk0bEhBUm53T1lDa0dRSFhxbndTOEE5aS84Q2hqWmdCVUp6OExzQ0lHUUhXS2lOY0RsNWFlWStRTWdPb1VFVmNEcDVXZVkrUU1nT3JUZnlQUVJ1RFEwck9NbkFGUWZTTGlST0FUcGVlWUFBT2cra1RFM3dLL1hYcU9DVEFBcWt0RVBBRzREVGk0OUN3VFlBQlVsNGk0QUhoNzZUa213Z0NvSGhGeElOMXZBL3IwMzhvWUFOVWpJczRIM2xsNmpna3hBS3BEUkJ3S2ZCMTRRdWxaSnNRQXFBNFI4VGZBeTByUE1URUdRTk1YRWM4SHJnWDJMVDNMeEJnQVRWdi9jK0EzQVllWG5tV0NESUNtS3lMMkJ6NE9IRjk0bEtreUFKcW1pTmdYZUMvd3U2Vm5tVEFEb09tSmlIMkFTNEFMU3M4eWNRWkEwOUsvOGw4Q3ZLSDBMQlV3QUpxT2lEZ0FlQS93MHRLelZPS3l6RHhuMW9NWUFNMWRSUHdVOEg3ZzJOS3pWT1NWbWZtK1dROWlBRFEzRVJGMFArNXhPWEJZNFhGcWNqdHdkR1krTU91QkRJRG1JaUtPb0x2ZVB3TWY4aG5TSnVCNW1YbkxFQWN6QUJwVVJCd0NuQU84SGovWFA3UzdnQk16ODZ0REhkQUFhQkFSY1NUZDgveXZ3dS96bTRlNzZGNzVOd3g1VUFPZ1ZlbXY3dzhGbmdPOEJQZzE0SUNpUTlYckx1Q2t6UHpLMEFjMkFGcFMvK0RPZnNDamdTY0JUd09PQm80RGpnSWVVMjY2SnN4dCtXSGdBRVRFVStpdS80NmkreitOcG0wTjNlSWZCRHdPZjZwcjBlYTYvREJnQUNMaWVjQUhnUU1IT2FEVXRya3ZQd3dVZ0lnNENQZ0dmcXhUR3NKQ2xoK0dDOERwd0VkbUgwZHEzbHp1OXUvSlVBRTRpKzVwTDBtcmR6ZmQ4cy85bFg4bkF5Q053OTNBMnN5OGFaRi8xQUJJNVJWWmZqQUFVbW1iNlc3NDNWemlqeHNBcVp5aXl3OEdRQ3FsK1BLREFaQksyQXc4djhRMS8rNE1nTFJZbzFsK01BRFNJbTJoZTU5L0ZNc1BCa0JhbEh2b1h2bS9WSHFRWFJrQWFmN3VvWHVmLzR1bEI5bWRBWkRtYXpOdzhoaVhId3lBTkUralhuNHdBTks4alBhMGYxY0dRQnJlSkpZZkRJQTB0QzEwVC9pTjZtNy9uaGdBYVRqMzByM1ZkMlBwUVZiS0FFakR1SmZ1aHQvblN3K3lOd3lBTkx0SkxqOFlBR2xXOTlMZDhQdEM2VUZXd3dCSXE3ZUY3cFYva3NzUEJrQmFyY2t2UHhnQWFUVzJBS2RNOFpwL2R3WkEyanZWTEQ4WUFHbHYzRWQzMnYrNTBvTU14UUJJSzNNZjNTdi9EYVVIR1pJQmtKWlg1ZktEQVpDV1UrM3lnd0dRbGxMMThvTUJrUGFrK3VXSDRRSndKbkRGN09OSW85REU4c053QVRnQitKZlp4NUdLYTJiNVliZ0E3QTk4Q1hqYXpBZVR5cmtmZUVGbWZyYjBJSXN5U0FBQUl1SVhnWThDUHpQSUFhWEYyZ1Nja1puWGx4NWtrUVlMQUVCRUhBeThHSGdHc045Z0I1Ym1aeHR3SzdBK016ZVhIbWJSQmcyQXBHa3hBRkxERElEVU1BTWdOY3dBU0EwekFGTERESURVTUFNZ05jd0FTQTB6QUZMRERJRFVNQU1nTmN3QVNBMHpBRkxERElEVU1BTWdOY3dBU0EzN1gzRVE2V29IT3ZMVUFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xX1BSRSIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiI1NzIzNTY5NDUxYTU0YTRkYTgxYWY0MjE4NWRmNjUwMiIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsIm5vTWNHYVBlcm1pc3Npb25zV2l0aENsaWVudFBpbiI6ZmFsc2UsImNyZWRNZ210Ijp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWUsInNldE1pblBJTkxlbmd0aCI6ZmFsc2UsIm1ha2VDcmVkVXZOb3RScWQiOnRydWV9LCJtYXhNc2dTaXplIjoyMDQ4LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjE2LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjczLCJ0cmFuc3BvcnRzIjpbInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XSwibWluUElOTGVuZ3RoIjo0LCJmaXJtd2FyZVZlcnNpb24iOjEzMTA4MSwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjI1fX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDItMTMiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MTMxMDgxLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IlNIQUxPIEFVVEgiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI1MDIxMzAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTAyLTEzIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEzMTA4MX1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wMy0yNiJ9LHsiYWFndWlkIjoiMjQ2NzMxNDktNmM4Ni00MmU3LTk4ZDktNDMzZmI1YjczMjk2IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiIyNDY3MzE0OS02Yzg2LTQyZTctOThkOS00MzNmYjViNzMyOTYiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiWXViaUtleSA1IFNlcmllcyB3aXRoIExpZ2h0bmluZyJ9LCJkZXNjcmlwdGlvbiI6Ill1YmlLZXkgNSBTZXJpZXMgd2l0aCBMaWdodG5pbmciLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2LCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH0seyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbImVkMjU1MTlfZWRkc2Ffc2hhNTEyX3JhdyIsInNlY3AzODRyMV9lY2RzYV9zaGEzODRfcmF3Iiwic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlEU0RDQ0FqQ2dBd0lCQWdJVURxRVJ3KzRSbkdTZ2d4Z1Vld0pGRVBEUlozWXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFESTdYbkgrWnZEd01DUVU4TThaZVY1cXNjdWJsdlZZYWFSdDNZYmF4bjlnb2RMeDVzd0gwbFhyZGdqaDVoN0ZwVmdDZ1lZWDdFNGJsMXZielVMZW1yTVdUOE4zV01HVWU4UUFKYkJlaW9WN1cvRStoVFpQLzBTS0pWYTNld0tCbzZVTGVNbmZRWkRyVk9SQWs4d1RMcTJ2NUxsajV2TWo3SnRPb3RLYTlKN25IUzhrTG16WFhTYWowU3dFUGg1T0FaVVROVjR6czFidm9UQVFRV3JMNC9KOVF1S3Q2V0NGRTVuVU5pUlFjRWJWRjhtbHFLMmJ4Mno2b2tWbHR5RFZMQ3hZYnBVVEVMdlkxdXNSM0RUR1BVb0lDbE9tNGNycHduRFJMVkh2alllUEdCQi8vcEV5enhBL2djU2N4andhSDFaVXc5Ym5TYkh5dXJLcWJUYTFLdmpBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlRxdDBLUW5neDdaSHJiVkh3RHVueE9uOWloWVRBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBcVFhQ1dNeFRHcVZWWDdTazdra0ptVXVlVFNZS3VVNitLQkJTZ3dJUm5sdzlLN0hlMUlweFowaGR3cFBOaWtLam1jeUZnRlB6aEltd0hKZ3h4dVQ5MFB3M3ZZT2RjSkpOa3REZzM1UFhPZnpTbjE1Y0ZBeDFSTzBtUFRtSWI4ZFhpRVdPcHpvWHZkd1hETTQxWmFDRFlNVDd3NElRdE15dkU3eFVCWnEyYmp0QW5xL05EVUE3YmU0SDhIM2lwQysvK05LbFVyY1VoK2o0OEs2N1dJMHUxbTZGZVF1ZUJBN24wNmo4MjVycURxc2FMczlUYjdLQUhBdzhQbXJXYU5QRzJraktlcnhQRWZlY2l2bEZhd3AyUldadnhyVnRuM1RWMlNCeHlDSkNrWHNORDA1ZENFclZIU0pJcytCZHRUVk5ZOUF3dHlQbW55YjB2NG1TVHp2V2R3PT0iLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVIzOG1xMjZTZjJzelZWMkJkRzZXRU43a3VXVXdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFSWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFOWTBXYjlvUG9Sb0tvUXlXUGFKcHoxMXZyV1RnNnpUdG1OajJWb0tSbnl2S0dScXB6YjgzdzVsNllBOTZVWWtZQkRRUDBpbE8yRFBlNndXcVZSNXpEZlJ6ZGNIOGJoK0w3ZEdHdmFlNmhSVFpoa0ZrQ3BYRHM0SGNja25yRGY4RkNsSjdIZTM5SmY0Mi9HMVFtMnp6OVdXbXJQWHRnaUsveDA1R2pzUWZHdURHMXpmNVFUVVVpZThsd3ltSzNUZmRPdk5lZUpBQVBlMnBuN0l0ZlJiK3JWck5XaUR6bFJuMnZObloyd1BvNHdIL1dKNmRoWFpHK3JNV1QrYTZCb2NnMVVmSXc2a2R1bkc0YlRwWnpzdmFjRll5UjBtcGYrRGVPbnBTV0FteXdKV0h2VGxmMllYeEZ5ZVhjVEFDZFFsY01OR0oyVmhaUTQ4eHRQNS9SQlAvOGtDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNoeTQyb2tpcWNUUzFpcWEvSFJXamtCbjRIL01COEdBMVVkSXdRWU1CYUFGT3EzUXBDZURIdGtldHRVZkFPNmZFNmYyS0ZoTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBbitSSElQYnRNRUROZFQxZzhIL1JpdEFrVWRMZ0F0MXRXR1dubGo5a25idjQvNEdsWDdDOXA0NWVmUE85L2FaTDZPVjFYUktCaTZLbXRCVzVLN251WUVuTXgvNUJxQlNiTFQ3cmhkdUM0OVRCZU1iOVBIZFhzVGxTVk5ZZWZyMWRHaWRyNGoweFZCUUxiMXJrbkRBYmRXRHpLZnZuYXlLTzhGcndlN0h4ODQzTUcvckorYzBYcnVVdmJmVlRDSExpSVdoTTdvTkRoTDh4b2I2eFVvOUtMS2NTTCtJdFlzTzMvOVdiOFE5R2pzcUw0RlhzRGNHMVNhWWg3S3BmdU1tT2l4cXpKWk8ybklpY1BZUmcxSTJTdWlVZllPNzB0bWRIY2JsK2tTUW1TWXQ3cnE0dmlJTGcyR3gzajlySVR1V1RqYmFVYVNTUXhnT21NU0h1eXpNQUMiLCJNSUlEUGpDQ0FpYWdBd0lCQWdJVVh6ZWlFREpFT1R0MTRGNW4wbzZaZi9iQndpVXdEUVlKS29aSWh2Y05BUUVOQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU1aNi9UeE04cklUK0Vhb1B2Rzgxb250TU9vLzJtUTJSQndKSFMwUVpjeFZhTlh2bDEyTFVoQlo1TG1pQlNjSVpkMVJueDFvZDU4NWgrL2RoSzdoRW03SkFBTGtLS3RzMWZPNTNLR05MWnVqejVoM3dHbmNyNGh5S0YwRzc0Yi9VM0s5aEU1bUdORDZ6cVljaENSQUhmcllNWVJERjRZTDBYNEQ1bkdkeHZwcEF5Nm5rRW10V21NbndPM2kwVEF1Y3NyYkU0ODVIdkdNNHIwVnBnVmRKcHZnUWppVEpDVElxK0QzNWh3dFQ4UURJdituR3ZwY3lpNXdjSWZDa3p5Q2ltSnVraFl5NktvcU5NS1FFZHBOaVNPdld5RE1UTXQxYndDdkV6cHc5MXUrbXNVdDRyajBlZm5POXMwWk93ZHdNUkRuSDR4Z1VsNVpMd3JyUGtmQzEvMENBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUI4R0ExVWRJd1FZTUJhQUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUU13RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCRFFVQUE0SUJBUUMzSVcvc2dCOXBaOGFwSk5qeHVHb1grRmtJTGtzMHdNTnJkWEwvY29VdnNyaHpzdmw2bWVQTXJiR0pCeUoxWG5xdUI1c2djUkVORnhkUUZtYTNtaW84VXBmMW93TTFacmVYckowbUFERzJCcGxxYkpueGl5WWErUjExcmVJRlRXZUloTU5jWktzRFpyRkF5UHVGakNXU1F2Sm1OV2U5bUZSWUZnTmhYSktrWEliNUgxWGdFRGx3aWVkWVJNN1ZvbEJObGxkNnBSRktsWDh1c3Q2T1RNT2VBRGwyeE5GMG0xTFRoU2RldVh2RHlDMWc5K0lMZnozUzZPSVlnYzNpcm9SY0ZEMzU0ZzdyS2Z1NjdxRkF3OWdDNHlpMHhCVFByWTk1cmg0L0hxYVVZQ0EvTDhsZFJrNkg3WGszNUQrV1ZwbXEyU2gveFQ1SGlGdWhmNHdKYjBiSyIsIk1JSURTRENDQWpDZ0F3SUJBZ0lVVWNtTVh6UklGT2dHVEswVGIzZ0V1Wllaa0JJd0RRWUpLb1pJaHZjTkFRRUxCUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JCSURFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURtNTU1YldZOVdXK3RPWTBySVdIbGRoK2FOYW5vQ1pDRmg3R2szWVpyUW1QVXcwaGtTRzZxWUhRdFArZlp5UzMzVkVydmcrQlFxbm11bWdOaGZ4RnJrd0VaRUxlaWRCY0M4QzRBZzRucXFpUFdwenN2STE3TmN4WWxJbkxOTEZjWlkvK2dPaU42Wk9UaWhPNS92QlpNYmo5cmlhQWNxbGlZbU5HSlBnVGNNR2FFQXlNekVNTnkybm02RXArcGpQNWFGNmdpMjF0L1VRRnN1SjFqMlJqL3luTS9TZFJ0K2VjYWw1T1lvdHhIa0ZiTDl2dnYyQTJPdjVJVFpDbHc0Yk9TOW5weXBRaW1PWjVRQVl5dG1ZYVFwV2wvcE1ZejZ6U2o4UnFrVkRORUpHcU5mVEtBMml2TFl3WDZsU3R0TVBhcGcwSjg0bDlYMHZvVk4vRnBTNFZDVkFnTUJBQUdqWmpCa01CMEdBMVVkRGdRV0JCUWdLRkFoRzZSYVcraFR5NTJkeGVUOGJDOTZIekFmQmdOVkhTTUVHREFXZ0JUUzd1OWFJbzA2YlZ3amx6M3loZFVtOFNWN2tqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQTRHQTFVZER3RUIvd1FFQXdJQmhqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFZTXpnTHJKTElyME9vdlFuQVpyUklHdWFiaUhTVUtTbWJMUldwUmtXZUF0c0NoREVIcFhjSi9iZ0ROS1lXb0hxUTh4UlVqQjRDeWVwWWV2YzNZbHJHOG83ekh4cGZWY2FvTDVTZXVKa3pIeEtuNGJUYVNwOStNdndhbW5wNjRrWk1pTmJGTGtuZlA5a1lLb1JIa01XaGVSSjFVc1AxejRTY21rQ2VJTGZzTXM2dnFvdnFqV0NsRnNKcEJjc2x1WUhXRjdiQkoxbjRSd2crQVRFb3BZNElnR3Y2WnZ3YytBOXIrQVQyaHFwb1NrWW9BbCtBTll3Z3NsT2Y5c0plMFYrVEE5WVkvVWxhQm1QUFRkMC8vcjl3dmNlUFdaa1BqS29BQy96VU5oZkRiaDRMVjhHSHMzbHlYMlhvbUwvTE5jOEpZenlJYURFaEdRdmVvUGhoL3RyMWc9PSIsIk1JSURTakNDQWpLZ0F3SUJBZ0lVVG5iYkdJUjJOSHZ6cUlLRkFlUXdHMVhCaXMwd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JCSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVFZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU9zWGozazA0QmFuNFRZZHRaS3FEL09QSnh5RHlhUG1DQlVGVWlhWklnVHRlWm5qM1gyNURoZ3BaWlhzQzREMHlkSWNybEE2d05VSW5PUkwvTDl6QmJURUlNQVZNR282ZzdVS0FtYjJNRjZBSGJuaFlKZDllaWt1cFZOV1NoSE5ZTmM0R0JkTzFZTjZBZlVxdkpoSGJlM1Y0U05NUG1CUkVLSlBWejdUaHdnbWdnVGU4V3MySzAvd3NxdjJ3U0U3cGJDQnNVWmhJWDUxYlpNM3BxRHdKUFRtUkZFdnQwLzZ0RzVlTzhGM2oxNE9YcWZFaG1qbjFWdnhLRFlRT0xaQXhDd3dnQzBQNENkZld2M3k4UFNSOEkzNTRoTzFZK0d6Tmp2SXFYMzhOS0x5d3VJWUhGZXJPeE5seEVNQnZGaFlCdVJ1WUFra2dVYVBxTjZVQmhzSUxyc0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ0NvUkhoaXlObmJuWFJXSUw2WkJYb0JYOVlUTUI4R0ExVWRJd1FZTUJhQUZDQW9VQ0VicEZwYjZGUExuWjNGNVB4c0wzb2ZNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUNRRmFmSkkxLzVXZzlDRUVpbUUxUlA1NFJnUXdUTlRPT1FzTEFDVGUrckl0bEZRekM5WkRoclY4Mjh5WDdqenkrQUFzcDNpeks3VDF0aDJkbDdtK3R1MHN3MlBhL29sYzAybnQ2UHlJdzM0OGdhSHpoSTErMEtFNDVxeHZGRGVMMmxNeGJQZkNZdnlFRWFZemppUUVMVTU5NTFwWEdXeUtNYS80Zkx0TytaS09YaE11VmVxNHJYRFBJNTRXNkpIT2lBYWlLZGl3KzVlM2Mya3QvakZJUXRNNnZNWGc5TE5GemRqRVROdDIwVlg5UWV2UnBGWmZ1Y01HOXdDYVFEb0ZsUHpwVE1KS2hQZXYvaW1KbVpZaEtmcjBsTGNlbXRxakl4TEFvcVpkT1lmSEJnNit2QWNkUEkvaWF1R3BVQXY3WCtVS05tRHdqWjJCYUg0c0x3aEIybSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFmQ0FZQUFBQ0dWcytNQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUhZWUFBQjJHQVYyaUU0RUFBQWJOU1VSQlZGaEhwVmQ3VE5WMUZELzNkNTl3ZVFTSWdTOUFRQVhjRkxBUVppOWZwZVZ6MXRZL1dUWnI1V3hwYzdXNWtuTGE1akkzWjg1c3JTMm5NMnNqdFd3WlM3SVVINEg0eENuRVF4NERBWkY3NFY3dXM4ODV2OS9sSW5CdlZKL0I0UHY5bnUvNW51LzVudk01NTZmekEvUXYwSGIvSXJYM1ZGS1BvNDVjbm00aW5VSVdZd0xGUm1aUVV1d2pGRy9OMWlSSGgxRVowTlJWUnVkcXQxQmQrMm5TS3lTL09oeXMwK2xrM2UvM2tROXF2RDRaVXRhNFZWU1V1WTBlaXB5aVRoQWZvY29PUlZnRHV1dzNxS1JpQWQzcmJjRXRqVGpZSW9mNldhSHNDbXpWUFdDTXgrY2doOHRMcVdNS2FNV3NVakxxbzJSdEpJUTBvT3ptZXJwUXU0ZXNaZ3NPTmtHeEg3ZDBrZHZUVDE3czRPTVU3Vkk4WmhqZ0dhTStBcTlpRU51OFBpZjF1ZHowN013dktXZjhHbFZvQ0VZMDRQQzVXZFRhWFlGYlI4dk52TDUrM0tnZmI1eE5NeWE5UmFtSml5bmFNbEdUVnRGbHI2YmE5dStwcW5FWDR1TXVSUmdqU1lFaHJON3V0RkZlNmxxYWw3TmZrdzVpbUFHSHluUHBiazhWbVkweHN0bnB0bEZDVkNZdHpUdUJOODNRcE1MalR0ZXZkUHpTVW5KN2U4bWtqeFozOWZYYktEZmxkWnFidlUrVFVnR25CVkY2ZlEyaVBIZzRXMTZVV1V3dnpiazE2c01aRStQbjBwdno3SlNldUF5ZXM4bGNwQ21hS3VvL3ArcVdyMlVjd0lBSFdydlAwWUV6aFhBdExBYnNzSGhwN2lHYW12eWlqUDhyeXFyWFVXWDlYb293eHlBdWZOQnJwNDNQT0JGWFpsa2Y4TURSaXFjcHlvd0F3cHV6MngrZld2ei9EdGRlOXNtc3p5Z3RjUjZDMXdiZHpCbDZPbHE1V05ZWTRvR2F0aEpNcmtURXgwakFSU0hBVnMrNXJZa1FOWGIrUWdmUExzUTZnWHlJbnNyZVFmbXBtN1JWRllmTDg2bjFmaVVPa1l2U2hrVVB4dmJ1a3pveTZLMWloTTFobzNYelc2RXZTZlhBK2RwaVdHYVdkK2RvWHpMem1Hd0tZRkxDQXNSQWxQQkFoTWxDRlhVN3RCVVZQcjhIZ1ZjSkhXcStGMDBwbHIrRE1UZHJQNHp2eFkxMWtOTWh4VCtTZVRHZytkNFY1TFFKaXR5VUdKTkI4VkZac2pnWUJaTS9JSS9YQ1RrajBxeURPcEYyQVZRMTdDSWpVcC9EblQxVWtMNUY1Z2RqK3NTMXdnMWdFM2dpZ202MGZDWHpTblBYYnlBUGJJWHYrSURwRTE2VGhhSElTOXNreWhsbU1FNUYzY2ZxQUtocTJDMEU1UEgxZ1lhWGFMUERrWkcwSERKT25LV0hwNTFJMHo1U091eDhlMVdBdVp6ZEhRclRrcDhUbWpYb0krbGEwd0dac3p1YnFiTzNpZlE2QS9XN3ZWU1lzVjNtUjBKS3drS2M0V0hpQmttUjhJM0NDZ0k4N29PTDRxelQ1UCtSVUpCZWpFT2dBUEs4aFlQemF0TStlSVRwMklPOXlUUW1lcm9tUFJ4eDFxeEFjc2lsZS91YlNlRWJjV1FHWUVDZ2hjTFkySHlLam9nakgyNWhNcGpwVXYxT3VnbGk0ZWgyZVJ3ME8zMmJKamt5dUNnTnpnMHZ6bFlNU2lTczB1b280TUc3aE1PakNFYVgxeUZFMG5TdmpCenVUbkVwSzg2WjhJb3FGQUl1Ync4a2c5QXJFYVJFV1NaSStqSDRYYnA2ZzlFOUVuSlQzb2FSekROK01VSkJRREhuNTZhOG9VbUVCdXNPeEJzL041K3RKRWJQa0FGRGo4VUd2T3MvSVd2Y1NnbEdCaHZTNy9GVFlmcFdHWWREWThmUEF4V1NBMzVzVEM0cDQrTG00QWFxSW9QZVF0ZnVmSzZKaDBaaHhsYnNVWE9TbVhOaWZENVpUQWt5RG9mYmJjY2x4bkE4V05BcXhDYlJOeWtoWHhRcGFEdzY3ZlhVWWJzaUcwS2h0djJvZUl2aDhyaFFNWU9jRUFxWEcvZUkrem5nT2M1eXhyOHE4MklBTTFjL0ZMRk9wbHF1NWVGUVhyTVp6R2NWQ2pZYkxXRzVJNEJUMWV1UnJsYnh0Tk90TWl0RERFaExYSUl5bkFBdnVPRVdFM1gzTmRBZnQ5NFZnYUc0MlhJUXQwWlg2UGVDRS9xUUZlOXJLNkh4N1lVNTBLdkg3Zlc0ZlMrcTdLS0JKeHNnZ0JYNXBTQUdoMWpJclZoNXpRNnczUmZhYWhCWG0vYUNiQ1pUakNVRlVUeVdacVc5cDYyTWpKUFhWcU9yUGdNTzROdjc0R2tmK293ZnROVkJEUW5qRkpxSFN3MTdwWHZoV1c1S1pxZS9RNDlOL1VTVENBVldvUVhGSUhCSFhYZTNGUHJVRHN1R0RtdEYvaEhLVEhwZWt4aGlBT1BJK1NKcTZTNkhGNEk5WVd6a0JKVG80NmlVTXpXcDhQaXIvUmlkdUx4S1lzU2tzVjh2TGxPUXZoR1gyWWxSME9CaEJqQyt1L2dFY3ZZMEFwSzdZazQxTnhqUFNRbldGSFRGNjZVcmpnZXZCOEN1NWErbDJ2WVNSUHR1VkRvNzNoaGRNU0huVVg3dFRqc1ZaR3hBbC9XcHRpT0lFUTFnbkwyOW1YNi90UjF0bWxrWWo4VzRYK0NTaldjVURHWTFOcFMvQzdoU0txaU1MTS9sMlFtU1daNzNEZHorZ2lvOEJDRU5ZUFE0NnFua3p3WFVicXZCa3hqVVFzV2ZaRmdidW8zckFmK3dON2pPTzkwK3lueDRQaTNMKzBuWUwxU2NoRFVnQVA0Z1BWLzdJZDFxKzFIU2htdUdrSXFXUlBneXhNRnFQOEhmalRualh3WTViUWZiSmN0Nk9JektnTUhvdEYvSGUxZWdzYXhIU3FHNndmZG1RNXg4TnlURkZxQmNwMmlTb3dIUjN5azUrMzZoRjd2WEFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xX1BSRSIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsImxhcmdlQmxvYktleSIsImNyZWRCbG9iIiwibWluUGluTGVuZ3RoIl0sImFhZ3VpZCI6IjI0NjczMTQ5NmM4NjQyZTc5OGQ5NDMzZmI1YjczMjk2Iiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibGFyZ2VCbG9icyI6dHJ1ZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOnRydWUsImFsd2F5c1V2IjpmYWxzZX0sIm1heE1zZ1NpemUiOjE1MzYsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6OCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoxMjgsInRyYW5zcG9ydHMiOlsidXNiIiwibGlnaHRuaW5nIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN30seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTh9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi0zNX1dLCJtYXhTZXJpYWxpemVkTGFyZ2VCbG9iQXJyYXkiOjQwOTYsIm1pblBJTkxlbmd0aCI6NCwiZmlybXdhcmVWZXJzaW9uIjozMjk0NzYsIm1heENyZWRCbG9iTGVuZ3RoIjozMiwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjEsInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjoxMDB9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMi0yMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzYsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWXViaUtleSA1IFNlcmllcyB3aXRoIExpZ2h0bmluZyIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjQxMjIyMDA3IiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMTItMjIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTAxLTEwIn0seyJhYWd1aWQiOiI0MmRmMTdkZS0wNmJhLTQxNzctYTJiYi02NzAxYmUxMzgwZDYiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjQyZGYxN2RlLTA2YmEtNDE3Ny1hMmJiLTY3MDFiZTEzODBkNiIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJGZWl0aWFuIEJpb1Bhc3MgRklETzIgUGx1cyBBdXRoZW50aWNhdG9yIn0sImRlc2NyaXB0aW9uIjoiRmVpdGlhbiBCaW9QYXNzIEZJRE8yIFBsdXMgQXV0aGVudGljYXRvciIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX0seyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQjJUQ0NBWDZnQXdJQkFnSVFGUU5LVys3emJnLzdkK2xUeXJJV3dEQUtCZ2dxaGtqT1BRUURBakJMTVFzd0NRWURWUVFHRXdKVlV6RWRNQnNHQTFVRUNnd1VSbVZwZEdsaGJpQlVaV05vYm05c2IyZHBaWE14SFRBYkJnTlZCQU1NRkVabGFYUnBZVzRnUmtsRVR5QlNiMjkwSUVOQk1DQVhEVEl5TURZd09EQXdNREF3TUZvWUR6SXdOVEl3TmpBM01qTTFPVFU1V2pCTE1Rc3dDUVlEVlFRR0V3SlZVekVkTUJzR0ExVUVDZ3dVUm1WcGRHbGhiaUJVWldOb2JtOXNiMmRwWlhNeEhUQWJCZ05WQkFNTUZFWmxhWFJwWVc0Z1JrbEVUeUJTYjI5MElFTkJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVzRllFRWhpSnVxcW5NZ1FqU2lpdkJqVjdER0NUZjRYQkJIL0I3dXZac0t4WFNoRjBMOHVESVNXVXZjRXhpeFJzNmdCM29sZFNyam94Nkw4VDk0Tk96cU5DTUVBd0hRWURWUjBPQkJZRUZFdTloeVlSclJ5Snp3Ull2bkRTQ0l4ckZpTzNNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdEZ1lEVlIwUEFRSC9CQVFEQWdFR01Bb0dDQ3FHU000OUJBTUNBMGtBTUVZQ0lRQ0IwTkZRU04wejRsV3oveWMzNmV3clRDenR0Sy9xRnZsYVBPS2grVDFvNndJaEFQMG9LS0ErY2ljc0R5M1kzbitWbFA4ZUIzUEJ6TWtodlcvOUlTWEN3K1ZCIiwiTUlJQjJEQ0NBWCtnQXdJQkFnSVJBTXM4WVhWQm9CTnVYVWpxZkNvWDd5NHdDZ1lJS29aSXpqMEVBd0l3U3pFTE1Ba0dBMVVFQmhNQ1ZWTXhIVEFiQmdOVkJBb01GRVpsYVhScFlXNGdWR1ZqYUc1dmJHOW5hV1Z6TVIwd0d3WURWUVFEREJSR1pXbDBhV0Z1SUVaSlJFOGdSVUVnVW05dmREQWdGdzB5TXpBeE1ERXdNREF3TURCYUdBOHlNRFV5TVRJek1USXpOVGsxT1Zvd1N6RUxNQWtHQTFVRUJoTUNWVk14SFRBYkJnTlZCQW9NRkVabGFYUnBZVzRnVkdWamFHNXZiRzluYVdWek1SMHdHd1lEVlFRRERCUkdaV2wwYVdGdUlFWkpSRThnUlVFZ1VtOXZkREJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCRDJMSEhBUXFZYmRSMVdabHVlcnRNMzByV2hvcllhdldtTVZhNG5kWDlQWnd1UkVwTFE0bTFuRWxxUUtNblJFOC80QytScXdpYXYrbXBJNGt4ZDVlNXVqUWpCQU1CMEdBMVVkRGdRV0JCUzNaWmp5R2xoWjk5TjF2TG9UUFhWVWE0WkVZREFQQmdOVkhSTUJBZjhFQlRBREFRSC9NQTRHQTFVZER3RUIvd1FFQXdJQkJqQUtCZ2dxaGtqT1BRUURBZ05IQURCRUFpQW9EK1I2a29sSVdhTkp6NGh6MDNEM2dlczNHYk1CakFXcGtPVWc5YXlGZ3dJZ2JFdzdBWVN5azY4T3Z4Z1hlemduZFRSVEV1U1dUK2ZkUm5MYUJOc2FUdzA9IiwiTUlJQjJEQ0NBWDZnQXdJQkFnSVFCVG1rM1p3aWxGWGpzWnl3SERuTWdEQUtCZ2dxaGtqT1BRUURBakJMTVFzd0NRWURWUVFHRXdKRFRqRWRNQnNHQTFVRUNnd1VSbVZwZEdsaGJpQlVaV05vYm05c2IyZHBaWE14SFRBYkJnTlZCQU1NRkVabGFYUnBZVzRnUmtsRVR5QlNiMjkwSUVOQk1DQVhEVEl5TURZd09EQXdNREF3TUZvWUR6SXdOVEl3TmpBM01qTTFPVFU1V2pCTE1Rc3dDUVlEVlFRR0V3SkRUakVkTUJzR0ExVUVDZ3dVUm1WcGRHbGhiaUJVWldOb2JtOXNiMmRwWlhNeEhUQWJCZ05WQkFNTUZFWmxhWFJwWVc0Z1JrbEVUeUJTYjI5MElFTkJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVuZkFLYmp2TVgxRXkxYjZrK1dRUWROVk10OUpnR1d5SjNQdk00QlNLNVhxVGZvKyswb0FqLzR0bnd5SUwwSEZCUjlTdCtrdGpxU1hEZmppWEF1cnM4Nk5DTUVBd0hRWURWUjBPQkJZRUZOR2htRTJCZjhPNWEvWUhaNzFRRXY2UVJmRlVNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdEZ1lEVlIwUEFRSC9CQVFEQWdFR01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lCeVJ6NE9BbFJaOUh6OUtWN2cyUU50QzBDOEp4SC94TEpZOEZaRW10SjNzQWlFQXNyZVQwK2VOa05jVWpJOWg1T1BDb0g2Tm1zT2tndkVBQkpackYwN0FEa1k9Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUZBQUFBQVVDQU1BQUFBdEJrcmxBQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQkhacFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR3L2VIQmhZMnRsZENCaVpXZHBiajBpNzd1L0lpQnBaRDBpVnpWTk1FMXdRMlZvYVVoNmNtVlRlazVVWTNwcll6bGtJajgrSUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWtGa2IySmxJRmhOVUNCRGIzSmxJRFV1Tmkxak1ERTBJRGM1TGpFMU5qYzVOeXdnTWpBeE5DOHdPQzh5TUMwd09UbzFNem93TWlBZ0lDQWdJQ0FnSWo0Z1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNGdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlnZUcxc2JuTTZlRzF3UFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIaHRiRzV6T25Cb2IzUnZjMmh2Y0QwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOXdhRzkwYjNOb2IzQXZNUzR3THlJZ2VHMXNibk02ZUcxd1RVMDlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl0YlM4aUlIaHRiRzV6T25OMFVtVm1QU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2YzFSNWNHVXZVbVZ6YjNWeVkyVlNaV1lqSWlCNGJYQTZRM0psWVhSdmNsUnZiMnc5SWtGa2IySmxJRkJvYjNSdmMyaHZjQ0JEUXlBeU1ERTBJQ2hOWVdOcGJuUnZjMmdwSWlCNGJYQTZRM0psWVhSbFJHRjBaVDBpTWpBeE5pMHhNaTB6TUZReE5Eb3pNem93T0Nzd09Eb3dNQ0lnZUcxd09rMXZaR2xtZVVSaGRHVTlJakl3TVRZdE1USXRNekJVTURjNk16RTZOVGtyTURnNk1EQWlJSGh0Y0RwTlpYUmhaR0YwWVVSaGRHVTlJakl3TVRZdE1USXRNekJVTURjNk16RTZOVGtyTURnNk1EQWlJR1JqT21admNtMWhkRDBpYVcxaFoyVXZjRzVuSWlCd2FHOTBiM05vYjNBNlNHbHpkRzl5ZVQwaU1qQXhOaTB4TWkwek1GUXhOVG96TURveU55c3dPRG93TUNZamVEazc1cGFINUx1MklPYWNxdWFnaCttaW1DMHhJT1czc3VhSmsrVzhnQ1lqZUVFN0lpQjRiWEJOVFRwSmJuTjBZVzVqWlVsRVBTSjRiWEF1YVdsa09qSkZOekZDUmtaRFF6WTNSakV4UlRZNU56aEVRVGxEUWtJMk5EWXpSamt3SWlCNGJYQk5UVHBFYjJOMWJXVnVkRWxFUFNKNGJYQXVaR2xrT2pKRk56RkNSa1pFUXpZM1JqRXhSVFk1TnpoRVFUbERRa0kyTkRZelJqa3dJajRnUEhodGNFMU5Pa1JsY21sMlpXUkdjbTl0SUhOMFVtVm1PbWx1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2TWtVM01VSkdSa0ZETmpkR01URkZOamszT0VSQk9VTkNRalkwTmpOR09UQWlJSE4wVW1WbU9tUnZZM1Z0Wlc1MFNVUTlJbmh0Y0M1a2FXUTZNa1UzTVVKR1JrSkROamRHTVRGRk5qazNPRVJCT1VOQ1FqWTBOak5HT1RBaUx6NGdQQzl5WkdZNlJHVnpZM0pwY0hScGIyNCtJRHd2Y21SbU9sSkVSajRnUEM5NE9uaHRjRzFsZEdFK0lEdy9lSEJoWTJ0bGRDQmxibVE5SW5JaVB6NDc3SlhGQUFBQVlGQk1WRVgvLy84RVZxSVhaYXZHMk9vcWNMRzJ6T09rd3QwQlNKdHFsY1hWNHUrYXV0bFdoYnprN1BVQU1ZOUhjcktqdE5icThmZUFsOGFCb3N6ejl2cGRqc0dHcXRGM244dVRzTlNacGM2SnNOVDUrdjB4WUtudThQZmY1L0w0OGZnL2ZyaWN6SmdZQUFBREFFbEVRVlI0MmtSVUNaYkRJQWpGWFpPWTFUYXROYzM5Ynprc1NZYzNyNE1FNGZNQkFhRDZ6bDh5LzlUT2dldDhkNWpmTjc4YndNL2REQ1JwUjUyMXpYZm9qSEowNUlJeWhCQVVTVkFPTmRHekJZdDJmN0tGcmZrSmFBa0hoOUZaaGNEWEhSa1RLbzlNTGloR2FhdkltblYzcXlFWDBFcHJnei80RHdVRDdrQ0hSbmQ4UUZONDNHbzRVVm1ERGd6YTR3MjdvaXpkQTIrY0srdXVVcGpqbzIreHdjLzQyVzUweDVMR1llREJzUjBIVkl4NXg4aUY2MENibGJURUVrRnIyN2JOREJVVlNxMU9LVlBiRTYyYjNFSDhGcUJnNU9PT0V1YzJ0OFpKaXFNT3VHcCtjS2pnN3dWR2Nlb3pxTjRweGdWUFFrakZZZ2JWSktEVWhEQ2pZcmF3UDVxNEVUZ0M5ZklNUkh0aXRwUWNDdkpPRUxjYk1zUWduY2lSa2xqcHlRanZHNDRqcUJVRVRGaUJpMVBFSXlla096c1crVHk1Y0xIb3M1UitkTVMxTHRTU3hmM2dRSGN6UjJDSTRnTU5wVzRJUkExUU1hNnRKNCtDNnVIdUdFOG1OREl5RnFnL09QL01NVXVlUzZJcThTOTBkQWVCSlNFeS9xS2tLK0JOd3o4Y1lZNGpiNUo2dTRpV0NJMkIxWjU2TFc1a0VjNGhrZE1wc3ZVQzU1ODVTWDBRdWJjZ05xeWZnREZFY1R0KzQwLzBTNU54MHdhQ3czT0trY09iQTVJbjBBWXAwMXBqancybjYyNlVEanRId2EyOGlIdVRLcXRydityZVc0MU5aNmlHbHI3dXVMSkNma0Z0Y3RjRzA0c2dtMWVOUytaYURucGFURXJHb3lYNUpLMmlNejh4czBuT3dXR2NQRE40OXFhQ2Q0YnpKb3pEWm0vYUJLK0Vvekx3K1hoTkJpWXdIZjBzaU91MVhQa0cvekt3dnFZS2NmU3dERWNIL29VZTA3ZXMvV1E4ckl5ZzJET1hqOHRqa1pkdURCL2I4aHpEbGxNTU9DUzVCRW5kNTM0Zjh0aTNVWmM0a01zM3hMeWFmTVNzSmhkRzhYUHFqTms1dEFnTzI1ZmVLQ2huVmREai9KMEZNa09zVS94TUJ2MHdGaFllRUdmVkgxM2Z1RFUweURGTGE0ZmM3Um5XSEJmdVRGVjJ0RW1Od2FkYzdhYzNVWTJqZkJsN0hUMzZmZTM0aVFPNW1OQ0ZGQlcwN0tqUGdxaE9MVTAxdlo4UHVlWjJKQ2xGWk44amtVczY5dWthOWVQcDYrRWZMNEFGNStOeXdTYmlySHRjQjhNbC9na3dBRWprSzY0S2pIUGVBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMSIsIkZJRE9fMl8xX1BSRSJdLCJleHRlbnNpb25zIjpbImNyZWRCbG9iIiwiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsImxhcmdlQmxvYktleSIsIm1pblBpbkxlbmd0aCJdLCJhYWd1aWQiOiI0MmRmMTdkZTA2YmE0MTc3YTJiYjY3MDFiZTEzODBkNiIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwidXYiOmZhbHNlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibm9NY0dhUGVybWlzc2lvbnNXaXRoQ2xpZW50UGluIjpmYWxzZSwibGFyZ2VCbG9icyI6dHJ1ZSwiYmlvRW5yb2xsIjpmYWxzZSwidXNlclZlcmlmaWNhdGlvbk1nbXRQcmV2aWV3IjpmYWxzZSwidXZCaW9FbnJvbGwiOnRydWUsImF1dGhuckNmZyI6dHJ1ZSwidXZBY2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOnRydWUsImFsd2F5c1V2IjpmYWxzZX0sIm1heE1zZ1NpemUiOjE0MDAsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6NiwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjo5NiwidHJhbnNwb3J0cyI6WyJ1c2IiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fV0sIm1heFNlcmlhbGl6ZWRMYXJnZUJsb2JBcnJheSI6MTAyNCwibWluUElOTGVuZ3RoIjo0LCJtYXhDcmVkQmxvYkxlbmd0aCI6MzIsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjozLCJwcmVmZXJyZWRQbGF0Zm9ybVV2QXR0ZW1wdHMiOjUsInV2TW9kYWxpdHkiOjIsInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjoxMjh9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0wOS0yNiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IkZlaXRpYW4gQmlvUGFzcyBGSURPMiBQbHVzIEF1dGhlbnRpY2F0b3IiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI0MDkyNjAwNSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTA5LTI2IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjF9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjQtMTEtMjAifSx7ImFhZ3VpZCI6ImQ3YTQyM2FkLTNlMTktNDQ5Mi05MjAwLTc4MTM3ZGNjYzEzNiIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiZDdhNDIzYWQtM2UxOS00NDkyLTkyMDAtNzgxMzdkY2NjMTM2IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlZpdm9LZXkgQXBleCBGSURPMiJ9LCJkZXNjcmlwdGlvbiI6IlZpdm9LZXkgQXBleCBGSURPMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNOekNDQWIyZ0F3SUJBZ0lVYzhjUkVzWThrK3R1L0FsNWFmWUVZUjBuQzVjd0NnWUlLb1pJemowRUF3SXdhVEVMTUFrR0ExVUVCaE1DVlZNeEVEQU9CZ05WQkFvTUIxWnBkbTlMWlhreElqQWdCZ05WQkFzTUdVRjFkR2hsYm5ScFkyRjBiM0lnUVhSMFpYTjBZWFJwYjI0eEpEQWlCZ05WQkFNTUcxWnBkbTlMWlhrZ1FYUjBaWE4wWVhScGIyNGdVbTl2ZENCRFFUQWVGdzB5TWpBNE1UQXhOelF3TURsYUZ3MHpNakE0TURreE56UXdNRGxhTUdreEN6QUpCZ05WQkFZVEFsVlRNUkF3RGdZRFZRUUtEQWRXYVhadlMyVjVNU0l3SUFZRFZRUUxEQmxCZFhSb1pXNTBhV05oZEc5eUlFRjBkR1Z6ZEdGMGFXOXVNU1F3SWdZRFZRUUREQnRXYVhadlMyVjVJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdRMEV3ZGpBUUJnY3Foa2pPUFFJQkJnVXJnUVFBSWdOaUFBVGtqMDRvNWc1cWQ5SmIvb200YkQ0bHhXd2NscFNrUm1Gcy9sSk5XUklrVytrb3Q2Ni93Ukh1MlN1LzFCVEplZ1NFalBOMlUwVityMnFKK3hWY3VYam96dlNLcHRzMmFpMzF0QnV0bnFZWG92Mlg0Vk0wRzE0R0ZJaUhEam1xVXF1akpqQWtNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnRUdNQW9HQ0NxR1NNNDlCQU1DQTJnQU1HVUNNRTFUb25xRVp5czdTd1RNUGNxaTN2N2lKM2hrbHpua1ozenpWd1BJdDI2MFFPZHVUZXlaWi9oMndEVkR0dGZYbUFJeEFKVFVHeS9PdlNHZXR4Vytna0NyeC9RQlNQa0kwYlRVRVhua3c5bDMzVGlHb3c2VUxaKzUwUSs5Ni9jR2hLYmtwUT09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWdDQVlBQUFCemVucjBBQUFNT25wVVdIUlNZWGNnY0hKdlptbHNaU0IwZVhCbElHVjRhV1lBQUhqYXBaaHJjaU01RG9ULzh4UjdCQklrK0RnT254Rjdnem4rZnFESzZyYmJIVE85WTltcVVsV0pCSkdKUk5KdS8vWGY0LzdEVDVTUVhOSlNjOHZaODVOYWF0STVxZjcxMCs5NzhPbSszeDk1YnZINTAzWDN2aUZjaWh6ajYyUE56L01mMThON2dOZWhjNlkvRFZUbmMyTjh2dEhTTTM3OU10QXpjN1NJN0h3OUE3Vm5vQ2l2RytFWm9MK1c1WE9yNWVjbGpQMDZybytWMU5lZnM3ZFVQNGY5eStkQzlwWXlUeFRaTVVUUGU0eFBBTkgreE1YT1NlWGRibnQ3NXp4R3ZkYy9CaU1oMytYcC9kT0k2RmlvNmR1SFBxSHlQZ3ZmWDNkZjBVcnlQQksvSkRtL2o5OWVkMEcvM0lqdmVlVG5tVk45enVUejlYajhlRVgwSmZ2MmQ4NnE1NjZaVmZTVVNYVitGdlhPbXAzd0hJTWttN282UXN1KzhLY01VZTZyOGFxd2VrS0Y1U2N6RHM1YkVKQTRJWVVWZWpoaDMrTU1reENUYkNlRkU1RXA4VjZzc1VpVEdRMi9aSzl3cE1RV0Y4aEtuQmYyRk9VZFM3alROai9kbmEweTh3bzhLb0hCZ3ZIaVQxL3VUNzl3anBWQ0NMNitjMFZjSXBac3dqRGs3SjNIUUNTY0o2bDZFL3p4K3ZwanVFWVFWTXV5bFVnanNlTTF4TkR3UXduaUJUcnlvSEo4MVdBbzZ4bUFGREcxRWt5SUlBQnFJV3JJd1JlUkVnS0pyQURVQ1YxaWtnRUNRVlVXUVVxS01ZTk5GWnVhcjVSd0h4VVZManV1STJZZ29USEhBall0ZHNCS1NlRlBTUlVPZFkyYVZEVnIwYXBOZTQ0NVpjMDVsMnlpMkVzc3lSVXR1WlJTU3l1OXhwcXExbHhMcmJYVjNxUkZSRk5iYnFYVjFscnZ6TmtadWZQdHpnTzlEeGx4cEtGdTVGRkdIVzMwQ1gxbW1qcnpMTFBPTnZ1U0ZSZjZzZklxcTY2MitnNGJLdTIwZGVkZGR0MXQ5d1BWVG5RbkhUMzVsRk5QTy8yTjJnUHJMNjgvUUMwOHFNbEZ5aDRzYjlTNFdzckhFTUhrUkEwekFCT1hBb2dYZ3dCQ2kySG1hMGhKRERuRHpEY3huUk9DVk1Oc0JVTU1CTk1Pb2lkOFlPZmtoYWdoOTY5d2N5Vjl3azMrWCtTY1FmZUh5UDJLMjNlb0xXdEQ4eUwycWtKTHF1bWc1NWt1dFZ1amt3WXFxOFNseERwYjNyUFFzdFBzMjFNTWUyU3ljaFlCclRKS0lwQTk0aDZ6NTBaYWlQV3dNZ0krTGV5NmxJc3phK0JPMTd4ZHoza1BQVDBzb2FiNnJDeS8wOExDbktPcGJ2SmhXUUNTSXJHdjBRZkxCTUFvdlczbTliMXN0RmhkSFR3OUFLWlZCRk9Wazd5clRyNCtoRnl1MHhLNXlKR0psKytrWitSTW9TS2dsYVdVM0hRVW5kc3QxYjV6Q2FPdFRJaE0yb0d4c3NLanhYNWgwZW16c0J5V1N4WWpnKzgrMTRvTXdHZ3JqWk5pZHhNYys0SVNJOFRzbjJ6Nm5wV3BZeWF4aStsVVE5OVRSaUkvYVk0U0o4dXRxL1N5b0wwdWFzTTFLTGdoSENUUUdMZU4wOGwzc2hFYjMvSXNNZmVSK2hnc0xMZWxoMXoxdG9BOHp0TkhrUUdqcHV0OW5yWjVBaFFET013bjVhdUhkT2Fjd2tKbkJacDJMQmw4TWNkUVo5N1pMNlBnc0t2d3pYVWRQZEFFRzhnMTZMRThsVEpnMlN4Ykl2UktQTXRJRkl1V2xIS1kxQVBwWndvTmpKU0poRnJJanZxd1R3TlFOa2hUbmN0dkVwNDZURTZaRFBXdHdpUEQ1N3BybXF2ZlJNSVMzMmN5UWt5cXBibzBxZXQrVW9Qb2VnRmVqVDVJRHFPVlExbG9OdHBkN1JrYmsyamhhZHE3dEx3eWRjTVhTcHNMcVYwRVF0RVVnVU02UnliVnRRTkE2ank1YWJPN2hWdHFUUmJsclJOUjhZVVVndEdrMU1iY01yTGJvMG8zTGk4Z3BUNHBaM1JqZ3o4aVpha0czVUZaUlE1S25La01LNUNvOEw2UFFFNHFBaXpkNVVCaUlua2hWNXd1VWxxTW1Nd1ZSMVY2elFKenYxWU5NcHBuS2NHNENtdG5BVjhsbjJGUmxmQkkxbEY3aU1DVU1seTNBbGdYQ3pIU1FmSXkvSXJVSzhSdXhCSVNwZG9DblZLcjBZLzN0QnhLSHl2bmFCbzZkWkkyUUpJRWtmT29uWWxUckdzdVJIaUVreEx5eE5CYUtJYkNVeEV5bUZiTzZRcUNYNk51VXNodlNaUGFSQXZtVWdHVzN1YlFOTUNMbktVd0Q0WEUwR2dQUGp5WVltUVkzTURHd1hCa2IwSjI2RDFRY2M1cVM0WW9VckZSSmQ4Ti9LNEpCbFZLa0lDcFZ1U1VGbUlCbXBoTGM0bzBRM2c0ZVZLZ2dCc3JBblBFNEhnbzBZaVN4ZExSNTRBWFdZVDZZNzFxZWVxMGoyQVpSQzdjVGFVbUdDdU5pYWcvNHkwcjZLYWEyUXFXTC9kQVFWTnBDQUJDajdqNU9PZXlFbnhwYng3VUdqV2QyNTJhMlNpeHNWYzJ0RG9wcmErVTVqakk5cmExR3Jxb1BCeEg0Y0FpMGlOWXQ3Z0J6Mkp0ZlE4ckg5cVEwU292TDhhdVF4WVdlblc4VlZDMWlvRmZxWkx6VGFtZHRqYmZ6OUJ0dUVCeklaUmwwblVRWjFvZzd6dVp6TkJ4V095ZTFJSmhnTlpBQzRETjVwUFF5Z1dyU2FhbGc0MGZYWlV1YVBWczZtTnlKbGNYTi9LeDZhcTBMZlRHVW5nWTlhV2hMSlFVV2grQWFnc2l6SVNNUUpjeTRzb0pKQlBFaUsxRHJyYmpGYTVqTEZzZWhwREtma1dJMzlrQzl4akg5azFvYUYwdXNseG9UdzhvRlJnN3RXYitnQzZBcFNidWhrRHlkdWpqaGRhaXRXRXR0cEVVL0pOMUV0U0RkYnVzUHQ0dWlFS0JCRzJ0NXBQSWNhR1VXQitsd1ZlaXQvUUlhN3M1cUQrNkJGcWFrU1NLTnBZTTdKbjA2cHJLQW5OZldTWmlXT2svdGhLaVowd2tkZUY2SUJEZHFGdkI2QlpUTTE4UHV3WTNVQXAwSHdSWXFiYzRRWW1sRU1HcDlhQTBwa3hrS3VpZ3JjeTlQUS9EYWlDZ25aSTdYTTJNMlJFV3NvSis0czNLc0V5UkZkTkdOQnR4VHhFMVIxZm5JTU5VRVNqWklwR0xUUTEyNjZjTWlVZDJONi9XUUxsOVpKQTJ4QjFCRFh2cXpZVGVOcGVzT1FBalR3RVB0Q1B2U0NIa1J0QnNuK3ZFb21BYVJHU1pETUhPRVV4Y3k5VkFPd1NzZXpWaGZDVXNYd0t3czhkZWt5WWs2TUEyQjFkV1NMZGhZSGZxd3VwQUVSeEhNWGRDVHFuQlNBN045K3lEbUp1Tk1McldyU2F5akcvdGF0TDdCMXlqRTdBazloWFlDV0JCbzd6UlA2cWF4R0pkc2lDTGdRaklPNEZTSkxSUjlwbW9xblh4R0oxUzZTSERaQ3lGWnRRRjNiWGtZUm1vQ1hxVDhoZ1ZpQ1lFcEJ0WTVxME04eFNBbEVhclJ4WUtpWkFsZnJjNUVoYVI0U3JsS3pKS3R6QUgyWWs0UFpFYkg1ZUJzMkdaUnpmQnNINlVyUWtYUjdPN0xHMXNsWjRrRXNRa3RPNFhUTzVwVC9KWTBMVms0bkFUaEZPQUhGWi9RbHVlZkN5NEVWYVRNSUY0eVIySzdLQXlDeXkybktQOG1BOE44eHJKaWJSakJmQ3dWaE5qV29QTUdXR3phbkhtZ2dUWXJBcXhzYlkxc3hPYU5DcUptaFFhWmVpUmR3YnYwN3dCeXB2dnpnRFlVQm9NSlhyczBEdUF4MGVaZjZkQUtMU0tOMWl6SWtqZGhIaFp3NFF1TmRHNVhoUFJ5dVpISXA0akRkTGtZTHdJUmdQRklRQXU3YXFGT3JJaFRqZmRhMTNnd2FVVWxHQkYyMmVjakV5U1lxcXVxOE5uZWF5SW1xNVBETXZHdGw5WlJURU9UcXhTUDNoSmJMeDlBbU84Q2JZdFZUN1hleGRkQ0oySVR1TWU5eUdYdEJyUWQ5M05kaDgwZC9ZOW0rMkRXQTliMkx5SUVhTVRsM0tkV2xzM0I5d2ZZYmhvaWpsZlV1SHByaExlR3ZRNUNlK2p1YXVHbUtLdjF1LzdsZWZvR20yMlNManVwMksrMEN0S25LMGNYUlJPc2hzNjVrN3hZS0g1clpUQU5KR2xWK2RpR2hDQytZSWxsRWl4TW9BdWtxYzVieXZNSTNSd1JJRXUwdGJ3a2JSZ01BZTdBVHdWSTlFSWtFdjZJTmxjV081Vkc1dWF6SVZGN2FvSkZpMk9JcVFabTdYRmpTMDR5WTZ4RDA5QlVNdkJ0aUNWTHlRemZjbTJjL24yZDNkRnZOdS9DWDl6dEgyQkdWbkVHaWRhRFNlZkFaZ0d1c0h4WE1NL3M4TzhVTFRFT2Fad1pLTm9XMDRDcVBjaDdENCtEaU9DOHVFa094dkNLbytsaFBsMjhMSG1IcHdsR1VrcUxiMk9rUVQwU3VzRUVrcHozWVA5QndTeTJLNUxMek9SUDNvVVNYNU1LZUlQSDJFZm5LS2dycG5JckloU0dPWkkyVUtSS2NRVTIyRWUyYStzYk53SUxDSk8rK1hjL2ZDdm9yVTI5OUh1dmovUzZUZTdyREd2YjBQOEJlcEJaTklFUU5XRWE3dEJ6cWtIaXdXYkI1UVFGemZBQnBGUDdEM3BPSGdUcW1uYWhvdzJSUkZPYW8vdnl0WHUyZS9SWVp6WXZFKy9TVFd3N3IzdGdJME1rSTljN3BmMVk2Tk5BKzIzQi9TN21jM0IyZytWeEo2eHJzNHVtMFpwdmpoaXU5Z2RDenNTbzhyMUx1WHZGdjNqNkQ1ZmlPR0pkV3h6VUV0dzhvRStIZGswZWd6aTNUQmtzWHhRSzVFcWcrbHdzb2xESDBzSjEwNloyTmx4UWhQQU5KYmdoMjZucE1kaFlYcTlib1MyTFY1dFoxdU42K2JYMkIwSlFEWWFRWG5NYlBtbyt2alBsMlZIOS9NRis0ZUhyUS9WUFpUR3dWbEJNWFlHZEJMY0pKdjRReVFnd2hvcHhOZTJqYmd4dmZESXF0d2M2NjMyUk1rMmY4bEFkb2I5ajRKZGhMZEYyZGNvMENXMi9WMzFyb1NtcGVIdXlpWlNHMm5WVDIvejgyOXIrSGRIOS9WQ3M2NXI2N01TeDJZdStJT2NwNC9sMFNHZ2xscG5udXo2TVpkb2svanF0cmtzMjlGWUY4V2VUTHBoSVVJR01QY050YlUrcytUZmlhOGQzYzhYeWpsbjJmL3Yvd2RPT1pIMThWYVdBUUFBQVlWcFEwTlFTVU5ESUhCeWIyWnBiR1VBQUhpY2ZaRTlTTU5BSE1WZlc2V2xWRVRzSU1VaFFuV3lJQ3JpS0ZVc2dvWFNWbWpWd2VUU0wyalNrS1M0T0FxdUJRYy9GcXNPTHM2Nk9yZ0tndUFIaUtPVGs2S0xsUGkvcE5BaXhvUGpmcnk3OTdoN0IzaWJWYVlZUFJPQW9wcDZPaEVYY3ZsVndmK0tBSUlZd0FnaUlqTzBaR1l4QzlmeGRROFBYKzlpUE12OTNKK2pUeTRZRFBBSXhITk0wMDNpRGVLWlRWUGp2RThjWm1WUkpqNG5IdGZwZ3NTUFhKY2NmdU5jc3RuTE04TjZOajFQSENZV1NsMHNkVEVyNndyeE5IRlVWbFRLOStZY2xqbHZjVmFxZGRhK0ozOWhxS0N1WkxoT2N4Z0pMQ0dKRkFSSXFLT0NLa3pFYUZWSk1aQ20vYmlMUDJMN1UrU1N5RlVCSThjQ2FsQWcybjd3UC9qZHJWR2NtblNTUW5HZzk4V3lQa1lCL3k3UWFsalc5N0ZsdFU0QTN6TndwWGI4dFNZdyswbDZvNk5GajREK2JlRGl1cU5KZThEbERqRDBwSW02YUVzK210NWlFWGcvbzIvS0E0TzNRSERONmEyOWo5TUhJRXRkTGQ4QUI0ZkFXSW15MTEzZUhlanU3ZDh6N2Y1K0FIb21jcXA3SGppQkFBQU5HR2xVV0hSWVRVdzZZMjl0TG1Ga2IySmxMbmh0Y0FBQUFBQUFQRDk0Y0dGamEyVjBJR0psWjJsdVBTTHZ1NzhpSUdsa1BTSlhOVTB3VFhCRFpXaHBTSHB5WlZONlRsUmplbXRqT1dRaVB6NEtQSGc2ZUcxd2JXVjBZU0I0Yld4dWN6cDRQU0poWkc5aVpUcHVjenB0WlhSaEx5SWdlRHA0YlhCMGF6MGlXRTFRSUVOdmNtVWdOQzQwTGpBdFJYaHBkaklpUGdvZ1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNEtJQ0E4Y21SbU9rUmxjMk55YVhCMGFXOXVJSEprWmpwaFltOTFkRDBpSWdvZ0lDQWdlRzFzYm5NNmVHMXdUVTA5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5dGJTOGlDaUFnSUNCNGJXeHVjenB6ZEVWMmREMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzk0WVhBdk1TNHdMM05VZVhCbEwxSmxjMjkxY21ObFJYWmxiblFqSWdvZ0lDQWdlRzFzYm5NNlpHTTlJbWgwZEhBNkx5OXdkWEpzTG05eVp5OWtZeTlsYkdWdFpXNTBjeTh4TGpFdklnb2dJQ0FnZUcxc2JuTTZSMGxOVUQwaWFIUjBjRG92TDNkM2R5NW5hVzF3TG05eVp5OTRiWEF2SWdvZ0lDQWdlRzFzYm5NNmRHbG1aajBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5MGFXWm1MekV1TUM4aUNpQWdJQ0I0Yld4dWN6cDRiWEE5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM4aUNpQWdJSGh0Y0UxTk9rUnZZM1Z0Wlc1MFNVUTlJbWRwYlhBNlpHOWphV1E2WjJsdGNEbzJPV0V4WW1Nd05TMDBNMkprTFRSaE1qUXRPVFEzTUMwMU5HTTRZVEkzWXpjeFltTWlDaUFnSUhodGNFMU5Pa2x1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2TURKbVpHSmxabVl0TVRKbE9TMDBNems0TFRoa01EUXRNRFUwTXpFeFlXWmxZakUySWdvZ0lDQjRiWEJOVFRwUGNtbG5hVzVoYkVSdlkzVnRaVzUwU1VROUluaHRjQzVrYVdRNlpHTmpOamt5WXpjdFlqSmlOUzAwTldGbExXRm1PR1F0WmpBeVpXVXdZVEk1WkRVMUlnb2dJQ0JrWXpwR2IzSnRZWFE5SW1sdFlXZGxMM0J1WnlJS0lDQWdSMGxOVURwQlVFazlJakl1TUNJS0lDQWdSMGxOVURwUWJHRjBabTl5YlQwaVYybHVaRzkzY3lJS0lDQWdSMGxOVURwVWFXMWxVM1JoYlhBOUlqRTJOakF4TlRJNU1ERXdNelUzT0RBaUNpQWdJRWRKVFZBNlZtVnljMmx2YmowaU1pNHhNQzR6TUNJS0lDQWdkR2xtWmpwUGNtbGxiblJoZEdsdmJqMGlNU0lLSUNBZ2VHMXdPa055WldGMGIzSlViMjlzUFNKSFNVMVFJREl1TVRBaVBnb2dJQ0E4ZUcxd1RVMDZTR2x6ZEc5eWVUNEtJQ0FnSUR4eVpHWTZVMlZ4UGdvZ0lDQWdJRHh5WkdZNmJHa0tJQ0FnSUNBZ2MzUkZkblE2WVdOMGFXOXVQU0p6WVhabFpDSUtJQ0FnSUNBZ2MzUkZkblE2WTJoaGJtZGxaRDBpTHlJS0lDQWdJQ0FnYzNSRmRuUTZhVzV6ZEdGdVkyVkpSRDBpZUcxd0xtbHBaRHBoWWpsallUUmtOQzB4TURRM0xUUmpaR1F0T0RBeU5pMDBPVEkxWWpZNU9ETmpZbU1pQ2lBZ0lDQWdJSE4wUlhaME9uTnZablIzWVhKbFFXZGxiblE5SWtkcGJYQWdNaTR4TUNBb1YybHVaRzkzY3lraUNpQWdJQ0FnSUhOMFJYWjBPbmRvWlc0OUlqSXdNakl0TURndE1UQlVNVEE2TXpVNk1ERWlMejRLSUNBZ0lEd3ZjbVJtT2xObGNUNEtJQ0FnUEM5NGJYQk5UVHBJYVhOMGIzSjVQZ29nSUR3dmNtUm1Pa1JsYzJOeWFYQjBhVzl1UGdvZ1BDOXlaR1k2VWtSR1BnbzhMM2c2ZUcxd2JXVjBZVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBbzhQM2h3WVdOclpYUWdaVzVrUFNKM0lqOCs2SE10TndBQUFBWmlTMGRFQVA4QUFBQkJNdndOOVFBQUFBbHdTRmx6QUFBTEV3QUFDeE1CQUpxY0dBQUFBQWQwU1UxRkIrWUlDaEVqQVBCSlI3d0FBQWtEU1VSQlZGakRyWlo3YkZQM0ZjYy85MkhIZHB6NEZjZHhERW5JQzVLUThBeVFVSkpRQ3BRV05saGJ0STJxYTlWdTA5Uk9rL2JmMUQvMlI2ZjlXMDFiSjIzYTFrbnRpbWdSN1doWFNpbWxrSklHU0VsREFpSGs2UkRIZVRoeDdOajRmZS8rSUppWUFLMm1mZis2dXVmYzMvbWVjNzduM0orZ3Fxb0tvS3FRVWhTU0tZVlVTaUdSU3VJTDNNTHJEK0gxaDVnT1J2Q0hJZ1RDTVc3RkVpaUtTbG1CbWNmV2xqSTg0ZWZTb0JlZFJzWnMxSkZ2eXFheTBFYVowNHFJZ2lpS2lKS0lMSXJJa29RZ2tJWndoMEFrbHFCM2RJcXJOMzI0cHdKNC9TRVNLUVVBZGNGWlhYalFheVhXbCtSVFUrSmdZTXhINjQxeGtndStraWhRbG05aWE5VnlncEVZWjNwRzBXczFsTmh6V2VteVVWdGFnRkduVFJPUUFWSXBoWEEwUnZCV2xCNzNGTDVRRkhFeFRVQWppVlE0VEFpQ1NJWFRqRG5Yd01Yck4ra2M5YVY5dExKSS9Zb0Nxb3J0ZUtZRG5MazJSaXlaQWpYS1hEaUN3NlFuR291amt5VmtXYnBMd0I4SWNySG5CdlYxVmVUb3MzaS92WS9KWUNSOWNFcFJhYWt1cEtsMkJZSWdNTzRMY09MeUlHN2ZQQnBacE1KaFJpTkxsQmVZeURVYTZCbWE0T0x3MU8wU0E3a0dMUWMyVjFCVG5NL0FpSnVDUEJ2TG5RNEFSSUJJTk1hZmo1M20weTg3S01vMzhXeExMVTV6ZHBxQW9xb1UyMDA0clRrNExVYXVqZm00T1JNQ0FlcFhPRGk0cllZZk42L0diczZodFh1RTlxSEpkT3VzUmgzUHRkUlFXK0tnOCtwMTNqdDFqdUI4S0xNRkF1QU4zdUx3cVhiOHdSQUg5elR4NG1OcitOZlpIa2FtZzBpaXdKZTlZMlJwdGNTU1NhNjZweEVFVUJYSU54bklNMldUcFpINDZycUhFZDk4dW4wdWk1RkRUVFVVV0xJNTNkN0IrYTZyK09mREdTS1UwMm9FUXJFNHg5dTZtSjIveFU5L3NKTVhkcXpodmZPOVhQUE1NRFFkWk9LTEt5aEFKSkZLQys3Q3dBVDVaaU95TE5IZU40WUtpSUpBdWNQRTA0OVVZekZvT2Y1NUt4M1grNGtua3R3anJVVUVGZ3p4WklxelhYMkVJMUYrOGN4dURtNnI1c1NsZmpxR0pna3ZCTTZTSlFyTkJuSjFHbUpKaFdQdGZjeEg0eVFWRlZrVXFDdks0NG1ObGVnMWNQVFVHYTcwRDZlbjVIYXE5eElRQkF4YVRYck9Vb3JLeFQ0M2lYYys0cVVETzNtOHZvSWN2Wlp6dldPSW9rQlRaU0dXckJSbW5jaXRwRUlnWWFKOWNKcVpVSlF0NVU2MnJ5bEZUVVk1ZHFxTjdxRlIxRHZ6QzJnMU1xSW9aaElRSlJGYnJoSGZYRERkUDFWVjZSandrSGp2RTU3YjIwSlQzUXB5OUZsRTRnbjBrU24rOHRkL2NPVHdNVFkxYnVCWHI3ek1velhyQ0VWVGJLb3FJakEzeTRuV2RucmRZd2lMYXE2cUtqa0dIYklzWnk2aVNDekdGeGV2OFBjUHp6SVZDR1hzZ0pTaXNzcVZ4NDhlMzhhYXFuS1NpUVN2L1BKbHZtaHRRNnVSU2FaUzVGbXRIRDF5bUVMWE10eGpIazU4ZVlIaDhTbEVNYlBjT3EyV0hadlcwbHkvRHFOQmYzY01GVVVsUDgvSzgzdWJxVjd1eUJDS0pBcjBqZnY0Mndlbk9YZXBDelVaeCtzWlI2dTVuWVVzU2ZobVp3a0ZBL1QwOVhQc2RDc2ozcVhCemNac2RqZHVwTEtraUVVZElkMk1BYmVIU2Q4c0IzZHZwYjZpQ0kwazNYVVNCTWI5ODd4MW9wV0oyU0JWMWRWSWkreXJLc294VzJ5Y3ZuaVpLWDhnbyt5Q0lPQzBtWG15dVFGWmt1anBIMFJGemRTQVRxdkZaVFB6bXcvTzhQMkdPZzdzYU1DY2M0WCttMTVVUmVIbWJJaWtvcUNxQW4yajQ3ejB3dk1JcUlSRElSQUVEdXpmejh4OG1FUWltUTVxTXVqUmFtUnNwbHkyYlZ6RGlHZUNNeDNmc08rUlRSajF1a3dDa2lSaXM1cXc1eG81M3RiRjVHeVFRMDlzUXhKRkVza2toejgrUi8vNE5QdWIxdUUwYWpuZjloWDc5dTVGRWtVVVJlR214NFBkYnFlaHJvcld6cXZvczdUczJiYVpQSXNaUlZFNTI5SEo1ZDRCOUxvc3JCYnowaWtBTU9YbVVGdGN3T211SUYvZmNGTmU1T1RuVCswaW5raXlaZlU0cTh1V1k5T3F2UGE3MTdqVTFVMldWb3ZWWWlZY0RqTVhERkZXdkl6ZnZ2b3EyemV1WVdKbWxxclNFb3dHUFdjN3ZxRzdmNWlVb3BCdk1XRzNXakswa2FhU1o4NWxjMjBGNW13OWlxclNPemhLZC84SXZVT2pUQVpDV0EwYVBqeitiNjcyM1NCYmw0VXNDZ1RtNWtnbUV1UVlkRXhPKzNqem4yOGlxMGxFU2FMZmZSTzNkNUlCOXhqSmxJSkdsbGxadkF5SHpYci9UYWpWeUR5eWZqVXBSZVdkaytmcGNYdDU0OGpIcUlwS1kxMGxrMTRQSFoyZEdYc3NRMnpBd1BBSW5aMlhXYnVwZ2ZkUHQyTFE2WmlZOWFPUkpSN2R1SmF0Nit2UzA3T0VBSUF1UzB1Unk4SHorN2J6N3FmbjZmUDRpQ1JTUE5WU2p5OHlneXpMRkMxenBRTUtnckF3VW1xYVVDb2VKOTlpeGpzemgwYVdNR1ViMk5XNGtjSjhPOFpzQS9jaWc0QldJek16TzhlNHo4K0wrM2R3OUxNMnVvYTl4Qk1KMW0rczV3K3Z2NTdlNVJxTmhORmdJQnFMRTB2RUVSYmVHd3dHNG9rVUdsbkdsV2RoWjJNOWdYQ1lDZDhNSzB1V0x5R1F2cExkd2JRL3dCL2ZQazZXWGsvTGhtcGFPM3U1TWpDNkVGaE5aOTFZczRJZlBybWRTMTA5bk8vdVJVeFg0L2JLTGJCWjJGSlh6YkJuQXZlNGw1L3MzNFBkWW41NEJRRHNGaFBOOWJYODZkMlR6SWZDUExabERYWnpEcjdaT1h5QkVGMURIcUxKRktGd2hKU2lFbzNGbWZZSGtFU1JJa2NlK1JZekJvT2VGUzRuVndlRzZld2JaUC8yUnZMTUp1NEgrWDR2TjlldG9yMjdqMU5mWHljY2pmSHNFMDJVRlRVUUNJVjU0L0JIWEI3MExQbkdscHZEMHp0YnlMT2E4Zm5uK095ckRyb0dScWd1S1dKOTljb013ZDUzREJmRGFOQnhjTmRXSEpaY0xnNk00ZmZQWVRQblVPcHlZRFBuM3Zld2JJT09va0lINWh3amlVU0Nid1pHTU9yMTdHellnTkZnNEVHUUgyUW9jUlh3MHI0bWZ2L1dmemg1b1pzc3ZaNVFKTWExb1RHVVROa0FNRFU3eCtjWExsT1luMGRiWnpjQ3NMdGhQU1V1NTVJZjAzY2lvSkZsTnRXdTR1RDJTWTZlL1JyM2tVOUlLaXJ6MFRnc2pVODBudUJrV3dkYVdlSldMTTZXbWtyV1ZWV2l5OUx5TU1nUE01cHlzdmxlY3oxZW41L1c3a0hVKzJTK0dMRkVnbmd5U2ZreUo4MzE2N0E5UUhqZnFvSEZLSFRZT2JTbmlRM2x5MEFRSHVvckFDNjdsZDJOOVJTN25Id1hmQ3NCQWFnb1djWnplMXVvS3k2NHg2cXl1Qi81VmpON214cW9LaXRCZ1A4UGdUc1hrcHFLRW43MjFDNVdsemlYTUZSVktMQmFlR1puTXpVVnBROGN1Zitad08ycm1VaFZXUkcvUHJTWCtsWEZkek5Vb2JTd2dFTlA3bUJsYVRHUytKMlB2UDhxL2pZb3FzclVqSjhMUGYxc3FhM0VQVDZCS3o4UHB6M3ZvZVAySVB3WCt1aXFqb2NEZFBnQUFBQUFTVVZPUks1Q1lJST0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJGSURPXzJfMCJdLCJleHRlbnNpb25zIjpbXSwiYWFndWlkIjoiZDdhNDIzYWQzZTE5NDQ5MjkyMDA3ODEzN2RjY2MxMzYiLCJvcHRpb25zIjp7InJrIjp0cnVlLCJ1cCI6dHJ1ZSwidXYiOnRydWV9LCJtYXhNc2dTaXplIjoxMjAwLCJ0cmFuc3BvcnRzIjpbIm5mYyJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMi0wOC0xNCJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjItMDgtMTQifSx7ImFhZ3VpZCI6ImIzMzE1MTY2LWYzNmMtYjA1Zi1mZWE4LTY2YTNkZmRhZDE3MSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiYjMzMTUxNjYtZjM2Yy1iMDVmLWZlYTgtNjZhM2RmZGFkMTcxIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkxlZGdlciBOYW5vIEdlbjUgRklETzIgQXV0aGVudGljYXRvciJ9LCJkZXNjcmlwdGlvbiI6IkxlZGdlciBOYW5vIEdlbjUgRklETzIgQXV0aGVudGljYXRvciIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxMDcwNCwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbImVkMjU1MTlfZWRkc2Ffc2hhNTEyX3JhdyIsInNlY3AyNTZrMV9lY2RzYV9zaGEyNTZfcmF3Iiwic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9pbnRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjozLCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2ludGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjMsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6WyJhbnkiLCJoYXJkd2FyZSJdLCJ0Y0Rpc3BsYXlDb250ZW50VHlwZSI6InRleHQvcGxhaW4iLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQmdUQ0NBU2NDRkZNMVFDRFhnMTIyRjljdldGVm1xZUdYM3RRV01Bb0dDQ3FHU000OUJBTUNNRU14Q3pBSkJnTlZCQVlUQWtaU01ROHdEUVlEVlFRS0RBWk1aV1JuWlhJeEl6QWhCZ05WQkFNTUdreGxaR2RsY2lCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVOQk1CNFhEVEkwTURVek1ERTBNVGswTUZvWERUTTBNRFV5T0RFME1UazBNRm93UXpFTE1Ba0dBMVVFQmhNQ1JsSXhEekFOQmdOVkJBb01Ca3hsWkdkbGNqRWpNQ0VHQTFVRUF3d2FUR1ZrWjJWeUlFWkpSRThnUVhSMFpYTjBZWFJwYjI0Z1EwRXdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBVEs3blh5SDRwZ04zVE13Q1dTb01EUmU0RVY4SmwzWHp1aGljWi8yZ3ZoK3p6M1dtVzBPWi9FY1JZRUE4RjI2Y2VldU1jZDIxV1FSUktXcGpXRCtKV2lNQW9HQ0NxR1NNNDlCQU1DQTBnQU1FVUNJUUQ4SiswL2I4UGVZakZSUVlrVVJjcWhheDI3b2x3MWpZL3Bic2toQnVScDRBSWdPQUhiNm4rN2ZOZmZ5b3hwZUNxM1ZaN0Ixak4zd3FtUE5mbmFlQWpkb1hzPSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFTWUFBQUVBQ0FZQUFBQWVNZHZ4QUFBQUFYTlNSMElBcnM0YzZRQUFBSVJsV0VsbVRVMEFLZ0FBQUFnQUJRRVNBQU1BQUFBQkFBRUFBQUVhQUFVQUFBQUJBQUFBU2dFYkFBVUFBQUFCQUFBQVVnRW9BQU1BQUFBQkFBSUFBSWRwQUFRQUFBQUJBQUFBV2dBQUFBQUFBQUVzQUFBQUFRQUFBU3dBQUFBQkFBT2dBUUFEQUFBQUFRQUJBQUNnQWdBRUFBQUFBUUFBQVNhZ0F3QUVBQUFBQVFBQUFRQUFBQUFBZTZTQ2t3QUFBQWx3U0ZsekFBQXVJd0FBTGlNQmVLVS9kZ0FBQVZscFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWxoTlVDQkRiM0psSURZdU1DNHdJajRLSUNBZ1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNEtJQ0FnSUNBZ1BISmtaanBFWlhOamNtbHdkR2x2YmlCeVpHWTZZV0p2ZFhROUlpSUtJQ0FnSUNBZ0lDQWdJQ0FnZUcxc2JuTTZkR2xtWmowaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOTBhV1ptTHpFdU1DOGlQZ29nSUNBZ0lDQWdJQ0E4ZEdsbVpqcFBjbWxsYm5SaGRHbHZiajR4UEM5MGFXWm1Pazl5YVdWdWRHRjBhVzl1UGdvZ0lDQWdJQ0E4TDNKa1pqcEVaWE5qY21sd2RHbHZiajRLSUNBZ1BDOXlaR1k2VWtSR1BnbzhMM2c2ZUcxd2JXVjBZVDRLR1Y3aEJ3QUFENjVKUkVGVWVBSHQzTHVPSkdjVkIvQmQ5bUlITmhMaUloT1FPRWFDQ0RraUlDTkc0ZzM4Q2p3SkNRbENCQVNJQk42Q2hBZ0pKRVJpSkF2WkFveXhmRm52aGUvczlKRnFlM3RtdWs5L3A2ZDY1MWZTTjFWZFZlZFV6YTlxL2wyOTlzeWRPM2Z1dkQvR3N6R2ViT2F4Ykt6WDROSG0rdnhxekdONmNESHpkU0Z3ZjdQODh6R1Blem5OM05mcnZhL2oyanpkWEs5UHZ6SVdUQVFJRUZpVmdHQmExZVZ3TWdRSWhJQmdjaDhRSUxBNkFjRzB1a3ZpaEFnUUVFenVBUUlFVmljZ21GWjNTWndRQVFLQ3lUMUFnTURxQkFUVDZpNkpFeUpBUURDNUJ3Z1FXSjJBWUZyZEpYRkNCQWdJSnZjQUFRS3JFeEJNcTdza1RvZ0FBY0hrSHJndEF2RkxvcVl6RVJCTVozS2hGcWQ1ZDdPYzg4VW1pNWNJaEJXdlMzRFd1RHIvUE1ReDUrYWQ2Qmk5dzJ2VE8rZUhkN2c5RldtVWYwN2o5bnpuTi8rZEh2VkdFTVh4OTVpK1BVWmN2SDJmb1BLQ1IvMVB4L2pqR0crT0VYL1Q2YWdUR3ZXbXF3WEMvdDRZL3hranJsMTQ1L1VZaTZZaGtDWnZqZVZ2alBGNHMyN01URTBDY1EvR2c4N0hZM3gvak4rUEVWT3MzemNUY3QvUFpqd3gvV1VjK0wwNEE5UEpCZklIOE9RSFh2a0I4d2IvNXpqUEdLYlRDanc4OW5Bemd1bU56VW5FeWNRVGs2bGZJQUlwbm5Cam1IWUxSRGpGSjRBWXNXenFGNGkvcHZyNUdKa0o1U1BPQ0tZTW81am5jdm1FRkJLWUtDQzhKMkx1MFNvL3NzVkg1Nk9tZmY5TjZhaURLQ1pBNEZZSlpFQ1Z2Mm5CVktaVFNJQkFsNEJnNnBMVmx3Q0Jzb0JnS3RNcEpFQ2dTMEF3ZGNucVM0QkFXVUF3bGVrVUVpRFFKU0NZdW1UMUpVQ2dMQ0NZeW5RS0NSRG9FaEJNWGJMNkVpQlFGaEJNWlRxRkJBaDBDUWltTGxsOUNSQW9Dd2ltTXAxQ0FnUzZCQVJUbDZ5K0JBaVVCUVJUbVU0aEFRSmRBb0twUzFaZkFnVEtBb0twVEtlUUFJRXVBY0hVSmFzdkFRSmxBY0ZVcGxOSWdFQ1hnR0Rxa3RXWEFJR3lnR0FxMHlra1FLQkxRREIxeWVwTGdFQlpRRENWNlJRU0lOQWxJSmk2WlBVbFFLQXNJSmpLZEFvSkVPZ1NFRXhkc3ZvU0lGQVdFRXhsT29VRUNIUUpDS1l1V1gwSkVDZ0xDS1l5blVJQ0JMb0VCRk9Yckw0RUNKUUZCRk9aVGlFQkFsMENncWxMVmw4Q0JNb0NncWxNcDVBQWdTNEJ3ZFFscXk4QkFtVUJ3VlNtVTBpQVFKZUFZT3FTMVpjQWdiS0FZQ3JUS1NSQW9FdEFNSFhKNmt1QVFGbEFNSlhwRkJJZzBDVWdtTHBrOVNWQW9Dd2dtTXAwQ2drUTZCSVFURjJ5K2hJZ1VCWVFUR1U2aFFRSWRBa0lwaTVaZlFrUUtBc0lwaktkUWdJRXVnUUVVNWVzdmdRSWxBVUVVNWxPSVFFQ1hRS0NxVXRXWHdJRXlnS0NxVXlua0FDQkxnSEIxQ1dyTHdFQ1pRSEJWS1pUU0lCQWw4RDkwZmpMVGZOSFkzNXZqR2ViMTNkM0xDL1h4VzRQRi92RWE5UHBCT0phUEJnanI5Y2hSODdybU5mK2tGcjdFcmhPSU83SnZMZnkvc3g3TG1xWHk4dlhzZS96VElvdjM0d3RZM3I5WW5idzEvamhNSjFXSUM5c3ZKbVlDS3hGSU83TG1DSlhqc21GcjBhRFg0OFI0UlEzK2I0ZjdUSUY0K0FmakJGVHJydDQ1V3VYUUliU3Q4WUJmanpHNDhXQmNsdXN5cHRrZVYxeWUxejMvNDd4aHpHZWptRWlNRU1nNzZWL2oyYS8zVFNNK3kvdnhldU9FZnRHQm4xeDNZNzdidC8zd1B2MnM5L2xBdkZ4TzZZZmpSRVhzam8rSExYeFVUd20xKy9Dd2RmakJhYmNTL0hPR1FsMVRMTkl5ZmpoTUoxV0lKK1U0ck44WEw5OXIyRmNyM2pTL1dnTTEyMGdtS1lLNUQyVmI2Q1Y1czhpbVBJZHQ5SWdhdkpFcXZYcWpoT0lHMkRmVUZydXQrL0g5dVBPVHZWdEZjaVBkYVh2UDRPcFZLeG9WUUxMMExucXhISy9uRisxcjIwRXFnSkhQYkI0MTZ5eXF5TkFvRTFBTUxYUmFreUFRRlZBTUZYbDFCRWcwQ1lnbU5wb05TWkFvQ29nbUtweTZnZ1FhQk1RVEcyMEdoTWdVQlVRVEZVNWRRUUl0QWtJcGpaYWpRa1FxQW9JcHFxY09nSUUyZ1FFVXh1dHhnUUlWQVVFVTFWT0hRRUNiUUtDcVkxV1l3SUVxZ0tDcVNxbmpnQ0JOZ0hCMUVhck1RRUNWUUhCVkpWVFI0QkFtNEJnYXFQVm1BQ0Jxb0JncXNxcEkwQ2dUVUF3dGRGcVRJQkFWVUF3VmVYVUVTRFFKaUNZMm1nMUprQ2dLaUNZcW5McUNCQm9FeEJNYmJRYUV5QlFGUkJNVlRsMUJBaTBDUWltTmxxTkNSQ29DZ2ltcXB3NkFnVGFCQVJURzYzR0JBaFVCUVJUVlU0ZEFRSnRBb0twalZaakFnU3FBb0twS3FlT0FJRTJBY0hVUnFzeEFRSlZBY0ZVbFZOSGdFQ2JnR0JxbzlXWUFJR3FnR0NxeXFralFLQk5RREMxMFdwTWdFQlZRREJWNWRRUklOQW1JSmphYURVbVFLQXFJSmlxY3VvSUVHZ1RFRXh0dEJvVElGQVZFRXhWT1hVRUNMUUpDS1kyV28wSkVLZ0tDS2FxbkRvQ0JOb0VCRk1icmNZRUNGUUZCRk5WVGgwQkFtMENncW1OVm1NQ0JLb0NncWtxcDQ0QWdUWUJ3ZFJHcXpFQkFsVUJ3VlNWVTBlQVFKdUFZR3FqMVpnQWdhcUFZS3JLcVNOQW9FMUFNTFhSYWt5QVFGVkFNRlhsMUJFZzBDWWdtTnBvTlNaQW9Db2dtS3B5NmdnUWFCTVFURzIwR2hNZ1VCVVFURlU1ZFFRSXRBa0lwalphalFrUXFBb0lwcXFjT2dJRTJnUUVVeHV0eGdRSVZBVUVVMVZPSFFFQ2JRS0NxWTFXWXdJRXFnS0NxU3FuamdDQk5nSEIxRWFyTVFFQ1ZRSEJWSlZUUjRCQW00QmdhcVBWbUFDQnFvQmdxc3FwSTBDZ1RVQXd0ZEZxVElCQVZVQXdWZVhVRVNEUUppQ1kybWcxSmtDZ0tpQ1lxbkxxQ0JCb0V4Qk1iYlFhRXlCUUZSQk1WVGwxQkFpMENRaW1ObHFOQ1JDb0NnaW1xcHc2QWdUYUJBUlRHNjNHQkFoVUJRUlRWVTRkQVFKdEFvS3BqVlpqQWdTcUFvS3BLcWVPQUlFMkFjSFVScXN4QVFKVkFjRlVsVk5IZ0VDYmdHQnFvOVdZQUlHcWdHQ3F5cWtqUUtCTlFEQzEwV3BNZ0VCVlFEQlY1ZFFSSU5BbUlKamFhRFVtUUtBcUlKaXFjdW9JRUdnVEVFeHR0Qm9USUZBVkVFeFZPWFVFQ0xRSkNLWTJXbzBKRUtnS0NLYXFuRG9DQk5vRTdyZDExdmdjQk9MNlB4bmozaGpQenVHRUR6ekhwMlAvR0tZekV4Qk1aM2JCSnB4dUJsQUUwbWViZnEveUQrL2Q4VDNtOXp5QlQ0dFRDQWltVXlpdjZ4anhneHJUbTJQOFpJd3Z4NGlQOUsvU0QyOThMNitOOGFjeC9qNkdjQm9JSmdLZEF2R3hLNllmamhFL2dQSGtFMDg4c2J6dk9IVC9mZnV1YmIrZkRaT1lIbHpNZkQwWEFVOU01M0tsNXA1blBqVmxRT1hyQ0phWWRyMk9iY3NuajF6T2ZaOFg3dml5N0prOWNyZmNGcStYZlhLLzNMN2NsclU1WCs2VHk0L0h4bmhpK2lKM01qOHZBY0YwWHRkcjl0bkdEL3p5aDM2NUhNZGF2czdsbkc5dmo5ZTdwcXYyWDI1YjF1YjZuQyszYlM4djk4bmwvSy9OK1hxN3h1dVZDd2ltbFYrZzV0TjdWWDl3WDlYdnEvbDJXRS83ZkdkWnp4azVFd0xIQ2VUSHVlTzZxTDVSQWNGMG8vd08zaURnYWFrQjlkUXRCZE9weFIydlc4QVRVN2Z3Q2ZvTHBoTWdPOFJKQlR3eG5aUzc1MkNDcWNkVlZ3SUVqaEFRVEVmZ0tWMmxnSTl5cTd3c2g1MlVZRHJNeTk3ckYvQlJidjNYNk5vempQK1A2ZGdMNlIzcVd1YldIZmkveUJzZVRGNDB1WWxYUitXS0o2YWJ1R1E5eDh3Znhwem5VUzc3UWQzZUwvZVArWExiY2ptMzVickw1dGtydHgvNmVsa1h5OHZYMlN2bnkrMjVYODV6SC9NekU0Z25KaGZ4ekM3YTVuVHpsM2x6bnQvRjlqdlY5dXZMOXN2MU1WL1dMSmN2MjViNzVEeDdWVjh2NjViTDJYYzVYMjdQNVllYkhmenk3bExxdE10SDVVcGN5TitOOGRZWWo4YUlKNmhER2thd3ZUdkdYemUxOFV1aHBsNkJ1R1p4amI0MnhnL0dpTDh1RUZQK1VGNjh1dDFmNHo2TVgrTDk4eGp2alpGbVk5SFVLQkJ2a25FL3ZqM0dMemZIT1NSUFl0L284WG5VZmp4R3JLaU9kNkxKbUxiZnVTL1crdG9oSUlUMlYyVzF2OVd4ZStZVDZ2ZEdvMnFlUEsrTEo1NlB4b2cvR3BaUFRHUHgyaW1LWTRvVGlUOHhZVHF0UVBqSEQ1dzNnNnZkNDhuSlUvelZSak8zWmk3RVUxTSt5ZWU2Zlk0VCswWW1mUkpmWXNRVTgzMy9NWHg1TU85SXovbE8vaVd1Z1RlRms3TTc0QjRDeXpmTnVFLzN6WWpjOS82K1FiVEh1ZGlGQUFFQ2N3UUUweHhIWFFnUW1DZ2dtQ1ppYWtXQXdCd0J3VFRIVVJjQ0JDWUtDS2FKbUZvUklEQkhRREROY2RTRkFJR0pBb0pwSXFaV0JBak1FUkJNY3h4MUlVQmdvb0JnbW9pcEZRRUNjd1FFMHh4SFhRZ1FtQ2dnbUNaaWFrV0F3QndCd1RUSFVSY0NCQ1lLQ0thSm1Gb1JJREJIUURETmNkU0ZBSUdKQW9KcElxWldCQWpNRVJCTWN4eDFJVUJnb29CZ21vaXBGUUVDY3dRRTB4eEhYUWdRbUNnZ21DWmlha1dBd0J3QndUVEhVUmNDQkNZS0NLYUptRm9SSURCSFFERE5jZFNGQUlHSkFvSnBJcVpXQkFqTUVSQk1jeHgxSVVCZ29vQmdtb2lwRlFFQ2N3UUUweHhIWFFnUW1DZ2dtQ1ppYWtXQXdCd0J3VFRIVVJjQ0JDWUtDS2FKbUZvUklEQkhRREROY2RTRkFJR0pBb0pwSXFaV0JBak1FUkJNY3h4MUlVQmdvb0JnbW9pcEZRRUNjd1FFMHh4SFhRZ1FtQ2dnbUNaaWFrV0F3QndCd1RUSFVSY0NCQ1lLQ0thSm1Gb1JJREJIUURETmNkU0ZBSUdKQW9KcElxWldCQWpNRVJCTWN4eDFJVUJnb29CZ21vaXBGUUVDY3dRRTB4eEhYUWdRbUNnZ21DWmlha1dBd0J3QndUVEhVUmNDQkNZS0NLYUptRm9SSURCSFFERE5jZFNGQUlHSkFvSnBJcVpXQkFqTUVSQk1jeHgxSVVCZ29vQmdtb2lwRlFFQ2N3UUUweHhIWFFnUW1DaHdmMEt2RExkN0UzcHBzYi9BczdIcjAvMTN2NVY3eHIxNTkxWis1emZ6VFVlZVBCN2o2Q3lZRVV5ZmJBd2UzWXpGclQ1cS9OQkZRSmxlRmdnYndmMnlTK2VhSjV2bUh4OTdrQm5COU00NGlZZGp2REZHbkpoM3FJSFFPRVVRUFJqai9USCtOb1p3R2doYlU1cThQZFovWjR3dngzQmZiaUZOZmhuM1plVEovOGI0N296ZWNZTkgwd2lWbUJ2bllmQ2JjYTFpaXBBeXZTaVFiN2kvR0t2ZHorZGpFRSs0Y2IwK3pRdjQ0bVU5N0ZWZStNT3E3RjBSaUhmOWVQZVBKOVF2S2cxdVdVMys4MExNWjl6cnQ0eXYvTzNHZlhyVUUrcU1pNVVua1BQdDd5YUNLN2ZsY3N4aml2VzU3dm1LSFY5MmJjOTF5ejdMMHR3ZTY1YkwrWHE1Ynl4dm45LzI5bmlkeDRybDdmTmVIaU9YdCtmYlBlSjFUTXRqWDZ6WnZTNzN6ZjF6bmpYbUx3dWtVY3lYeTNsdG9pS1dZOHJ0eTIwWFcxNzh1dHcvOTgzNWNzL3RkZms2NTFmdG05dGkzNXppL1BMMXZ1ZWF0WWNjTTJ0eW5yVTV6L1V4MzdWdXViMjhQQ09ZNHVBSnRldEVsdHR5T2VmWDFWNjJQZXR6dm4zYzVmcmw4bVg5c241NzMxeS9xMjY1NzY3bFhKZnpYVDJ1Nm4vZC9zdGF5OWNMWEhZZGx1djNNVi91bjhzNVg1N0Y5cnA4bmZPcjlzMXQyL3RlOXpycnR1ZmJkYkY5MTdydHV1Vit1L2JmdFc1WGo0UFg1WC9xUDdoUUFRRUNCTG9FQkZPWHJMNEVDSlFGQkZPWlRpRUJBbDBDZ3FsTFZsOENCTW9DZ3FsTXA1QUFnUzRCd2RRbHF5OEJBbVVCd1ZTbVUwaUFRSmVBWU9xUzFaY0FnYktBWUNyVDNWaGgyLy9VZG1QZmtRTVQyQktJLy9NNy96UkV6cmQyOFhKbEF2SEwxbkhkNHRjQlRGY0xwRkhjMis3dnE2M1dzRFd1Vi93dHA2ZHhnNysrT2FOWnY1NnlhV2ZXSlBEYXBtLzhJcS9wYW9IOHl3dHBkdlhldHE1RjRQVUlvMzlzenViek1mZlJiaTJYNXZMemlMOFErUFV4UHR6c2trOEZsMWZjdmkxcDhxL3hyY2Q5L2NFWWNhLzdHRHdRVmp6bEU5T24vd2ViYTBWNVU2V0pxZ0FBQUFCSlJVNUVya0pnZ2c9PSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIl0sImV4dGVuc2lvbnMiOlsiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiYjMzMTUxNjZmMzZjYjA1ZmZlYTg2NmEzZGZkYWQxNzEiLCJvcHRpb25zIjp7InJrIjpmYWxzZSwiY2xpZW50UGluIjp0cnVlLCJ1cCI6dHJ1ZSwidXYiOnRydWV9LCJtYXhNc2dTaXplIjoxMDI0LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxXX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0xMS0yOCJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMTEtMjgifSx7ImFhZ3VpZCI6ImJhNzZhMjcxLTZlYjYtNDE3MS04NzRkLWI2NDI4ZGJlMzQzNyIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiYmE3NmEyNzEtNmViNi00MTcxLTg3NGQtYjY0MjhkYmUzNDM3IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkFUS2V5LlByb1MifSwiZGVzY3JpcHRpb24iOiJBVEtleS5Qcm9TIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjUwMDAxLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH0seyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3IiwiZWQyNTUxOV9lZGRzYV9zaGE1MTJfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwiLCJiYURlc2MiOnsic2VsZkF0dGVzdGVkRlJSIjowLjAyLCJzZWxmQXR0ZXN0ZWRGQVIiOjJFLTA1LCJpQVBBUlRocmVzaG9sZCI6MC4wLCJtYXhUZW1wbGF0ZXMiOjEwLCJtYXhSZXRyaWVzIjo1LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQmJUQ0NBUlNnQXdJQkFnSUJBVEFLQmdncWhrak9QUVFEQWpBdE1Tc3dLUVlEVlFRRERDSkJkWFJvWlc1MGNtVnVaQ0JCVkV0bGVTQlNiMjkwSUVOQklESXdNakl3T1RBNE1DQVhEVEl5TURrd09EQTRNemcxTjFvWUR6SXdOakl3T0RJNU1EZ3pPRFUzV2pBdE1Tc3dLUVlEVlFRRERDSkJkWFJvWlc1MGNtVnVaQ0JCVkV0bGVTQlNiMjkwSUVOQklESXdNakl3T1RBNE1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRS9OK3YvUGJ4NjR0RHZNTWlTa2Nqd1A1TThEMklVZnJHbDBIbnpvSE1KR1V3YitSNDhNZXpXaTFKM1pCWGVPcFNIZmpyZ3hGZm8zaXJMZUxWd0lLN0M2TWpNQ0V3RHdZRFZSMFRCQWd3QmdFQi93SUJBREFPQmdOVkhROEJBZjhFQkFNQ0FRWXdDZ1lJS29aSXpqMEVBd0lEUndBd1JBSWdXcW4zZU4reTBWOTMzTUdqM2ZRcmRyVVhzOFZtVXByRXM3QzBOVjk4RFRJQ0lFWUMrKzlkTzRjamFVUnVXNGJkdE96SXEwUDRjVFdkN3BTY0JhakxOM2R4Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUpZQUFBQTlDQUlBQUFEQXVBZVlBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRW5RQUFCSjBBZDVtSDNnQUFCR3VTVVJCVkhoZTdad0pmQlBWOXNjelMvWTAzUmNvM1hjS0JWd1JCSGtpVDU4THF4dkNFM0F0b0lJQ0JRVFoyZ0l0VWlndFZHaWhLUG9YQVIreXlQTGhBUlpaMUVkVm9Qb1FwS1cwQlZxNlpjOWtsdnhQTXJmUWxpWk5sN1FQUC9sK0xuVG1uRHVUeWZ6dXZlZmNtMGt3czlrc2NIRXZnNk8vTHU1WlVDLzh6NEJuTkw4V1lZU0l0M1k3SEdzSWVINU0vTTRzdE8vQ05rakNzd1BIYW4vNUhSZi9yMGpJNmd6KzQ1L3QvZmthdE8vQ05tZ2d4WGh3SExiTU5HTTIwZDFUYUVhQVd5NER3ekc0RXY3YVhOZ0g5Y0xDUjhaQkw4VEVJalBIeVdMQ2NZTG8ralFIcERQVHRPN2lGVXhJY25xRDM4dlA5dDZXZ1h3dWJOTlVRcEZRUURPRHE4OFNjaG52N21Lb3lsdW5BdTRubFo0dUNSMm5lVVlLaXJKYVBkcnBjamlkQVcyNWNKZ1dKeFZkUFlRMm9odGYrbDdGTlMrODUrbE1DVm1Ea1RPWk9CUEYwVFNIYkM2Y1RxZEpxUC92bGU5azBhZjhIanJwKytCSlpUK21waDQ1WERpWlRwUHdZdUlDQWhlYldWYkFtVm1qb1dTeGExYmVSWFNPaFByaXN0b1R4M0dGRENNSWpNQUpoZHYxVGR0cGpSYTVYVGlUenBIdzhyU0ZCT21CWVJpck4zSVVJeUF3QVUyWExzNUViaGZPcEJNa05KVGRxRDU4aEpCS1lFTHBOLzQ1NWNOOXpSUk5LT1RsRzc1ZzlLNTVudFBwQkFrdlRWOU1rQW9CSm1CWVRWVFdvckRVT2JTeERvWlRqakplUzNaOTFPQjBPaVFoek1NTjE2dXE5eDNDWlZKT2IvQVpNVUtvZFBNWWZMOGlLcDZqYUZJdUwxKy9qYU5NcUxZTDU5QWhDVEdCNE1yTUZJSVF3emJOcUdKeVYvRDJ5RFVMR0dNOWRFVElhRXJUTi9KR0YwNmlReEpTbGJlcWR1NjNkRUdEMFh2SU1HbElJRy8zZWVadnNzZ1ltT0FMWmZLeU5ma2N6ZkIyRjg2Z1F4SmVTVXJEY0VJQWlTaXRqdG1ZaXF4V0lsZk9aUXhxZ1pCZzYyckwxbXkyMmx6cm4wNmgvUkpTMWJWVm4rOGw1RkxPU0hrTUhDU1BpMFFPSzc3am5wS0ZScHBOREM1VGxHVnNaczJjZGR4MTBmbTBYOEtTaFJsbU0ydnBnaWIxN1NqWW1MQzBKTWFnd1VqQ1ZIbXJZdDFueU9xaXMybW5oSFM5Nm1iK0xrSXVNek9NY3NBRHNxaFFxcW9hUXVQdFlycFY2L1g0STlLZ1lBSExFVkpaK2FwYzF6RHFKTm9wWWNtU2RXWVREVGtuUnBMRzRyS1RudjEvQ0I3eVE4alEyK1ZNME9BeklZOHlLcTJBd0hFaGFhaW91TDdwUzNTd2kwNmxQUkl5V3YzTjNPM1doek1zejB5WkljNlJKQ1lTTmk4RUFTa01WSUJhcEZSK2JjVW42SGdYblVyeloyZWdiejFTZWtMazc4dTdXK1RTZTB1dlpYMUNrbTVvSDRIaE1nbklCVnNnS21lZ21xV2dORlBYT3ljek1QRVZ0TjhTaHVMU014RkQ3bjUySmpkdlMwSEJDWWxZcktlb3BZc1dSa1UxU1oyYWtaeVMrdWVmeFVKU0NOZFNyNnAvOElFSDVpYk5ycW1wZlN0eHVxZTd1OUZrSERqdzRYZW1UZDI5WisrT3IzYkk1UW83bWJLSk52VkxTSmcxYTJaeGNmR3NPZk84UGIwNE0wZVFSTzdHSEZURE5ucTk0ZDBaTStGTzRCaGVXMSsvTVNmYjE5ZmVYVzAzSlByck1HYVc1ZXJVUFY1NndkckpHb0MrSmlLcnZ0d3ZFQWxCUUZ3czloMzNwT1dKd2taM2h6UFJoait1b0owMmN1SENoZjNmSHBETDVWcWRidVo3N3lCclN5VE5uYjhwYjdOY0pvY3JVcW5VOGZGeHUzWnNCenRGR2ZmczNSdmc3Ni9UNmlSaUNWait2SHhsNy80RG5oNGVadHNhR2cxR3lnUnRVUkFlSG42aHFFaWoxcEFrV2E5U2pSazkrdWwvUE1uWHNjWFdyWi91M1BtMW05TE5hS0R1RzlEZlNmb0JiWllRbEl2ZHRocnROT1ZHL2c1UzVHNW1XRExRSXk1L0ZiSjJCaUt4V0NxWFFXRUZITVJXWkwyTHVmUG01K2JuKy9qNmduNXdvL3NQU1BqK3UyTzhDN3FDVkdvNUEyYzJ3OW5BSWhUQzZHNngySkVRdzNHUnhLSTNrSmFhTXVYdFJIOFBkNXdrbDZlbHRTb2h0Q1JQSDIrUlVLalJhRk5TbGlDckUyaGJMS1FwMDlYbDYwdFhiTGlhbkZYK3lkM3BTY085WUZtMFlRV3NwYXR5cjZabWw4S3hHVnRzM3JDT01XLyt3bzE1K2Q1ZTN0YitwNHFMaXI2dFg0dm85THFheWx0VmxsSnRwNmpyVlh6OWNjK1BWY2prTE1lS3hhTGZmdis5c0xDUXQ3Zkk5cTkybEpWWENJVkNpcUw2RCtqMzhFTVBJWWNUYUp1RUZSbjVseFlzdnZMaHFvdUw1cEV5UzF0MkJBaVBkRlhOSHdzL3VySmcxYVZaYzI3dE9ZSWNuY2VDaFIvbGJNcjE4YkhxcDFaSGhvZWZLRGlLZkRhWTlmN00ycHFiWlNXWHltMlhxaHVsWDJ6YmlnNkFWNWszUjFXbmdwZFFTR1hKS1N1UnRTWFdaYTlYS09Ud3h1dnFWUjhtelVGVzU5QUdDU0VLbG1ma1NXUUJoRVRxSHY1Z3dLdGprY01Cd2xMZWw3Z0ZFUW8za2NqdnF2V2o0RTdzaS9NWGZKU1ZzOUhYMXdkdXJscXRqb3VPUG4yeUFQbHNJNUZJUEQwOWxlN3Vkb3FIaDRkQ29VQUhDQVRUcDAvRE1ZempPSkZFZXVyTXFlTGlFdVJveXNGRGh5LytjVmtvRXRFMEhSMFI4ZFJUclF5NUhhUU5FcFpuZldhcXJoSUlDY2FvRGt0dFU4c3lFMkp4ME13cHJGYU5TVVRhYytkcURwM29yTlcySlV1VGN6WnU4clBHUDdWYUE4bHF3ZkYvSTErTFlCMXFQVysrOFpwR3E4TnhUQ2dVcDZWL2pLeE5XYnMyU3lhWHdmVkFQSjcxd1F4a2RSb09TOGlaeXo3T0phUUtzNG1SQm9jRnZQd01zanVFUmErZzJhOFRDcVdBNHdpUnZMTWVqbHF5TkdWdDlub2ZIMHYvMDJnMDhiR3hKKzNHUHd0bTY5VzBsNlNrT1NhakVXWmlrQnZ0UDNDZ3RyWUdPUm80ZmVhSHM3LytBdk1maG1FQy9RTmVHZjh5Y2pnTlJ5VXN6L3ZTV0ZHT0NVbmFvQTViMHA2V0pWUXFBNmUrd21vMW1FU3MrcW13OXZnWjVHZ3Z5OVBTSWVUNGVGdmlINlQ3MFZGUlI0NGNSRDdiZ0g0ZGtkRERYVGwyekNpWTgrRTRUalBzdXF3TnlOSEEycldab0I4L0pDUW12b1dzenNRaENTRy9MRnU1MGRJRmFVWWFHTlJqeXZQSTBVYUNrdDdHWVNvTkhWRW80eU5pTzhBSnl6VXZYNW0rS24yMWw3Y1hURW1oLy9XT2l6MTI1SkNkK2NadFlCVGxCOUtxcXFwZno1MHYrdTEzTytYOCthS1NxODBEM3NMNTgzUmFMWFJFU0ZpMi9kK1hFUENRUXlBb0t2cjl1KzlQU3FWU2xtWGRQWlN2VFptTUhNN0VJUW1ydG42dEx5bUI0WjgxYUVJK25JYXNiVWZzNDlWenlnc3N4QktwdVA3NzAvV25MWGw1bXlJVFpCTktON2ZzOVRucHF6TzhmWDFBUHhORnhjZkZIVDY0SHliZHFKSmo1T1p0R1REZ2dVRkRodzBhWXJQY1AzRFFqUGRub3dNYUNJOElmMnpvRUNORjRRU2hVcW56Tm05QkRvRWdNeXNMalB5by91cUVDZkl1K1lLWVE4MjJkSG1PVUNJM000dzRvR2ZQdCsydGtMVkswUHhFSENiTEhJZVQwcEpGYTVIVllXUlNhY3J5dE9RVks3MnQ0NmZBYkdZb1UrN0dISmlCb1JxdDBqQ01LdVFLSDM5L2Z6OC8rR2VyQlBqN1FWYUtEbWpFZ2cvbnFWVXF6Q3lRSzJTYjhwQ0VwZGV1SFRod1NDNlRRY29xa1lpbmRja29DclF1WWVYMi9mckxsd1VpRWF2WEJzMTVneC9IMmdlMEJrbFBmLytKWTFpdEhwZEo2bzZlVUowdGNqd3lXVFREOENQSGpya3BGTkFkZVF0R0VuT1M1dk1WSEtLaDF4dU5ocnE2T2xWOWZYMWRuWjJpMTdYd1FQUEREejJZMExjUFJadUVwTEM4dkdMM045K0FFY1lHbW1VZ1JtcDF1ckdqUi9uNStmR1ZuVTNyeTl3LzluM0srT2MxRE9LTVREcXc3Q1JwWFoxcWtXTllDS24wZ0hncDd1VS84SkxOek5CUVd2Rmo5SEJjSk9TTWxPY1RnL3NkekVjTzI4dmNzNVBtZmZIbDlzWlROSlBKUkp0b3lOMUJ4cHJxNnBSbFM2WlBUVVMrbHJoNTQyWlVYTitBSHY1NnJXN1VxSkVic2pOUG5qcDE3UGgzTUR0RU5WcUNwcG5JaVBDWFhud0I3VGRpejc3OXIwNSszYy9QMTJnMHhzWEU3TnZ6cjlqNEJNdFh6REZNcjlPZFBIRXNJandDVlhVeXJjU1A2L203Nm90T2tRSXZScUNPbVo5c1J6L0FMR0F0MzlObm9EUlpZR3VHTkNUUTc4V25iMzcrTDBJcXUzWG9zT2I4UmJlRVdPUnpESzFXMnljK2Z0alFJWm1aMlVvdkQwOHZyMlVweTBjTUh4NGRIWVZxMk9aMjZIMTA4R0FvYUtmdGpIcnUyZUJlZ1JxZFhpd1dYeTR1SGo5eEVzMHdrTWpBdFQwNTRnazcrakVNdS8ycnJ3SUNBbUJJMFdnMUpwb09DdzNwbDlCUEpISTRGalRGM3FnSTd4YjZaVXhLV2xUNmd0amxLM3JPZkIwNWJDRDA4aFg2K3dnRGZFbGZMMlN5UWNqaUdlTEFRS0cvcjhTdlYxbkduWFRBRWVBZUJRZjEydi9OMXhDUSt0M1h6NkRYd3dBaEVncW52TjVGc2VjMjc3NHpYYVcyckxjUk9GYjQ4OCtnSHd4cERNM01uUEV1cXRFU0pHbjVIWU9SWTU1L2R2U1ljK2ZPVXhRMWFzd0xVYkc5WVVoQU5kb0tuQTQ0TzNEc2QrTFlBcmUrOEQ5MXM0bzNRbGptTnh5aFdWWEhqNFJYdVYxWmYrWHFVVUZRZ1RMaE9CbjEyOFQza2RWc25qVm5ia0N2a01qWStLQ3d5RUdQUGdadm03ZVhscFVGQm9lRlJjWkV4TVo3Ky9WWThORmkzbjQzTjY3ZlVMajd3Qmw2OUFxZE92MDlaTzBZMElGQ3c2UENvbUlqWTN0SHhNVER5UU5Ed2tlTkdZZmNkb21LNjZQMDhyMTA2Ukpzbnp4MVdxcndDSStNTlJnc2l3WnR4VjR2dEtRUER0T3NhcHVTRkFjcncrVkMvRnVYbVNFU29kL0hDZTdWS3pWNWFYMjlDbndlbnA3WjJSdCsrczlaM3RVRkNFbnl0U21UTkNvTmJGdXpZek5vOE1GTXg5YzlNTXBvK1RBeU5qYkdUZUVHZzJwNVJUbnZxS3lxZ3Y5cnFtc3F5cEVGS0R6Nzg3TGsxRzJmZndGNUFESlphVW5DMitHaTYybjFwVEV6aGpXNTVrbXYvblBFOEwvcE5GcG9DUjVlbmhQK09RazViTkd4TmRKbXZQZnVPeEtaR01ZUjJJWTcyN2R2bjZGRGgvQXUrNkJyc0xaZXZWNW5OQmtKZ29RWlRsYjIrbERvMVBIOVB2MXNHL3hOR1BBUVRER2hEblR1RjErWjhOTExMMzc2MlJkZVBnR05XMm9MRWxwK3RxZTdhTzJsNFozRHlJdDJHc2pmc2xrbWs5RTBEYk5EbFVyVFNsRHMyQnBwTTl6ZDNVTkRRbG5XRWdvZ1NNOThkenB5dEFaY0E4akhUMmNYTGxpc3JxMmJOSEdDbTVzYnhOZVE0RjZFVUxoOTU2N25ubnR1MEtDSHdUaG4zb2Q3djltN09qMHRKaXBxUzk0blFyRjQ1T2c3SHhNMWw5QU1OOUZ1MnVsVU1Nc0kyZVk3TEpOSmN6WmtxMVFxdUkvdTdzb2R1M2J0UDJCenNkUnk3OUJtSjNEMDZQRno1eStBRXRDQUlzTWpSbzhhaVJ3T0lKZkxaOCtiSHgwYmYvSFM1ZDI3djE2NUVqME9iMm1PRkpXMVp2Vm4rWG43OXV4bWFQcmJBd2VVM2w0OUEzdUNOemc0Mk1mYlM2WFduRG1ERnBtYlRpcGdrQ0xJSDhNZkU5elYwcnNDR09MZzlkMlUvRE5VYmVMdkk0WlBHUC9TamwyN1FVTEkxeWUvOXNhMWtzc3lhUXZyVzVaK2JOMVl0eTQ3ZFdVNjFMZnV0WXlSTWo0K2JOaldMWGxvL3k1V3BLZDdLSlZtZ2FVTExsMjBFRmtkUTZmVlphL0pDQWtOUWZzTlFFT0U5dzlobGQvVjZRMFVSWU1GSnFDOEJhWXhrQVJURFJHeFNTKzBKQlk0eHBsb2ptRzdvZENzNVFGK2pHaGZOOGxlbHhrWTRBL0pLZzV6RExGNDdMaFdQdVZoT1k2R0dRREwyaW5ncHBzK1JOS1l3c0tmZi96cHJFZ3FnWG85L1FOZW5UZ1JPVnJpME9IREd6YmMrWklYTkZOb1NUcDlDNy9TeExmZzIwa2VOTEllOEw1TXBxdFhyL0lXUGFqTHN2MFQrdk83U0VLWWoxdVVvMHlXMzdKajJPNHJjQmttdUF5T3NWd0dmMjBBd3pDUUxKZ2dpd2V2N1IrSHk5K1NCMDBiV2l2a2lzY0xDckxYMzNsVUVKcTJDUTYybk1NRVo3TllPRFByQUh5cTBpSXIwbFlwbFc1d3A3VjYzZVRKayt3c1BVSWZoU1kxZlhwaVFjRUpaTkdvb1lsVVZsYnl1NDNSNlhRbUZoclhuYStETFZ1OGlNRHd6TXhzMkQ1OStvZVNQeS9QVFpydDRlbk9lOUVDMjRXeGlicWl5ekNSNTYyT0EyL0E1aDF0eldzSHprRDVqQndldFFZTlRhbkxWMzZ6ZDU5VUtvSGhaZk9talFrSmZYajczYXhhdldibnJxOGxVZ204cjVxYTJ1K1BIZlgyc2F3elZGWlZQdjdFUDd5OXZZd0d3OTlIakVoSlhySmx5OWJzbkU4VWJuY1c3ZTRHK3ZTZ1J4NVo4M0U2Mm05RWNYSEpmUThPOVBIMUFZMmh3NXd2UEN0WHlKR3ZKZDZiOFVIUmI3L3QyN3RicjlPKytlYTBHN2NxaFlRUUo3RFJJMGQrOFA2ZGVjalNaY2tIRGgzR0NjTFQzWDNhMU1Sbm4zbWF0Ly95eTYvTFY2eWtHQVlYWU9OZmZySHhtcDlGUWhDeG9kZisxWUQ3QytNcTJ1bFUzbmhyNnJjSER5b1VDclZhL2NacmsxT1RseUZIbDJPVjBOcGQyb2Y5WXp0eTV2OWxidDJxam8xUGdHa29ETkFtaWlyODZVeVhmUzV4TjVZVzJwRzdiUC9ZdjZSK3dLcU1OYVNReERFTThoRVk2N3BSUHdERlFoZU9ZekFhd3lPaVpkWlB2aUQxT0gzaWVIaDRPTy9xRnB3U0ovN2F3SVFTa2trSXNhRGxzS0ZEdWxjL3dOVUwyMHl2MEFpUlNBUVNxdXBWUnc3dDY5OS9BSEowRTY1ZTJEYlNWNjJ1S0MycnE2Mi9YbkdqVDUvNGJ0Y1BjUFhDdG5IdTNIbWFvYUVMTWd3YkZocml2SytjT1k1THduc2UxMEI2anlNUS9EL2V4TGc4Ui80c1FBQUFBQUJKUlU1RXJrSmdnZz09IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMSIsIkZJRE9fMl8xX1BSRSJdLCJleHRlbnNpb25zIjpbImNyZWRCbG9iIiwiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsImxhcmdlQmxvYktleSIsIm1pblBpbkxlbmd0aCJdLCJhYWd1aWQiOiJiYTc2YTI3MTZlYjY0MTcxODc0ZGI2NDI4ZGJlMzQzNyIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwidXYiOmZhbHNlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibm9NY0dhUGVybWlzc2lvbnNXaXRoQ2xpZW50UGluIjpmYWxzZSwibGFyZ2VCbG9icyI6dHJ1ZSwiYmlvRW5yb2xsIjpmYWxzZSwidXNlclZlcmlmaWNhdGlvbk1nbXRQcmV2aWV3IjpmYWxzZSwidXZCaW9FbnJvbGwiOnRydWUsImF1dGhuckNmZyI6dHJ1ZSwidXZBY2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOmZhbHNlLCJhbHdheXNVdiI6dHJ1ZX0sIm1heE1zZ1NpemUiOjIwNDgsInBpblV2QXV0aFByb3RvY29scyI6WzEsMl0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6MjAsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6NjQsInRyYW5zcG9ydHMiOlsidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN30seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTh9XSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5IjoxMDI0LCJmb3JjZVBJTkNoYW5nZSI6ZmFsc2UsIm1pblBJTkxlbmd0aCI6NCwiZmlybXdhcmVWZXJzaW9uIjo1MDAwMSwibWF4Q3JlZEJsb2JMZW5ndGgiOjI1NiwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjEwLCJ1dk1vZGFsaXR5IjoyfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjItMDYtMjMiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6NTAwMDEsInVybCI6Imh0dHBzOi8vYXV0aGVudHJlbmQuY29tL2F0a2V5LXByby8iLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IkFUS2V5LlBybyIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjIwNjIzMDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjMiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNC4xIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIyLTA2LTIzIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjUwMDAxfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIyLTEwLTA3In0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiMmViOWZmMzU3MmY2NzYyOGQxMjkxYTNiNTc5MjRmODE4YWFkOWU3MiJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyIyZWI5ZmYzNTcyZjY3NjI4ZDEyOTFhM2I1NzkyNGY4MThhYWQ5ZTcyIl0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJIeXBlciBGSURPIFUyRiBNaW5pIFNlY3VyaXR5IEtleSJ9LCJkZXNjcmlwdGlvbiI6Ikh5cGVyIEZJRE8gVTJGIE1pbmkgU2VjdXJpdHkgS2V5IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiLCJyZW1vdGVfaGFuZGxlIl0sImlzS2V5UmVzdHJpY3RlZCI6dHJ1ZSwiaXNGcmVzaFVzZXJWZXJpZmljYXRpb25SZXF1aXJlZCI6dHJ1ZSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQnh6Q0NBV3lnQXdJQkFnSUNFQXN3Q2dZSUtvWkl6ajBFQXdJd09qRUxNQWtHQTFVRUJoTUNRMEV4RWpBUUJnTlZCQW9NQ1VoWlVFVlNVMFZEVlRFWE1CVUdBMVVFQXd3T1NGbFFSVkpHU1VSUElEQXlNREF3SUJjTk1UZ3dNVEF4TURBd01EQXdXaGdQTWpBME56RXlNekV5TXpVNU5UbGFNRG94Q3pBSkJnTlZCQVlUQWtOQk1SSXdFQVlEVlFRS0RBbElXVkJGVWxORlExVXhGekFWQmdOVkJBTU1Ea2haVUVWU1JrbEVUeUF3TWpBd01Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRXJLVUkxRzBTN2E2SU9MbG1IaXBMbEJ1eFRZanNFRVNRdnpRaDNkQjdkdnh4V1dtN2tXTDkxcnE2UzdheVpHMGdaUFIrellxZEZ6d0FZRGNHNCthWDY2TmdNRjR3SFFZRFZSME9CQllFRkxaWWNmTU13a1FBR2J0M3J5elpGUEZ5cG1zSU1COEdBMVVkSXdRWU1CYUFGTFpZY2ZNTXdrUUFHYnQzcnl6WkZQRnlwbXNJTUF3R0ExVWRFd1FGTUFNQkFmOHdEZ1lEVlIwUEFRSC9CQVFEQWdFR01Bb0dDQ3FHU000OUJBTUNBMGtBTUVZQ0lRQ0cyL3BwTUd0N3BrY1JpZTVZSW9oUzN1RFBJcm1pUmNUanFEY2xLVldnMGdJaEFOY1BORFpIRTIvelordUI1VGhHOU9adXMreFNiNGtua3JiQXlYS1gyem0vIl0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUkwQUFBQVdDQVlBQUFEOS94OGxBQUFBQkhOQ1NWUUlDQWdJZkFoa2lBQUFCM0ZKUkVGVWFJSHRtazF5MjlnUngzOE5JdExTekFuTW5NRE1Oa21WNmFxcHluSjRBOU1uTUNTU1ZhRzBNTHdRc1JCbHdTY1FkWUtSVmxtbFJHNW1HK29FUTUwZzFDNVVTSFFXai9oKy9OQkV0bWNtK3E4SXZFYS9ma0Qzdi92MVk0Vk5PQXhhL1BtN0tqLytZMW9hOC93cWYvbnIzL25UZDNmVzhXZjhadUd1SFduM213Z1h3QnZyZUdVdkJCcEFnOFBnSFo5Nnd5OWk0VE8rTGRyOUppS3ZWbGRqQnIyUll4WHNudFNCaXcyS2hvaThUYTRkTGpnTVdrOW82ak4rQ2VqMFBVUm13QmlKcm9tbzBRa2FaYWZwbnRTSjVBYVI2Z1pGYjB2M254M25Od2lwTXVpTlVCMmlFbEtKSnFEMWZIcnkvQ29xRjJzZHhqakYrZG81ak9Pd01WVmw2VTZpYTA2UEo3bnhUdEFBWHErdXhpeVk0cEk2NldMK21kQ2Y1WjdwbnRSUjUvdFVoa3QrRjFXSjVCVWl0WklOcWxPV01pYnNwYlZZcCsrQnZGaHJkNnczN0UxTllGVmVJMnA1VHpKaDhlOXh5Y1o0YlNxdmNzK0pqdmlQM0NXMlBNYU9HRjVRbzZLdlMyc1ZIWEY2Tk1ienE3ajc3ODNhWmNiWjN6N241THlnbHJ6amlMdmsrMFdZT1VTcXFOWVlIRS9vQk0yODA3aDdWeUQxekoxckJyMVJzdUJTeXRJRFZGb0lyNUpiRGhlMCt6UE9qcTZzQ3hZOFlxZFFSNEJKUWFJQmZGajkvZ2p6RVBZUEFQTWlLM3QvQVBLTUZvbUhKSTUxRC9QUDZONFFrZGZZSUdLcXVWd3RKdXVESVliTEdKaWlFaUpxMTQxQ1pXL0dZWENRNk82ZTFJbWNINEFhb2dWeEFWZkhxM1Uvemc2QWRoQWl2QWV4bUNMUUNlS2ExRGZxRlNEdk5DNjFaTnpSTVdEc0Z1cXJKUTFCakhPaHN6UTl0ZnREeUx4azVaYkZ2SlVzV3ZXSGdra2ZHUnlGTE9jTmxOdkMyTVdxTHZyZllTSTJUSzVGM2hyalYvQ0NXaTVkUm5qV0tMZkI0U0tuNjZrZ1VrWDBITTgzakJMSkZjTFR6OU1KZk9Nd1h3aExRdHBCQ1BJVHlFKzR0Rmc4REEzVEhBYXRUS1FhaDFuT0c0VCtETSt2bG1vYzFVdk9qb3huR3BrR2xmMVJ3amdpVlpRTDRJOVBZdnlnNTlQdXR4QjVDVUFGRC9ETWIvV1RLRk85NDlOUk9UV3FYaUlTVTI0Tko4T1lEZzNpeUVvZk9BQXBNaUFzNXVWN1dkMVpsaFNwNHU3WGdWRmk5enJkb211Y2ZJc2RTak1oR05VN0lDNWM4N0xHanNmRHBFQ3ZlTnMxa2FybkdYcTdaMGt6aVZaM2Z3aGtjL2MxWjBjcEE1MGVUNnlPZzlUcEJENkRudit6REM1Q3hWKzFBQUI5aStmN3NGL05PYnVJdlJBWG1TWnBGcURUYnlXczZ0Z1lRQ1k1K1UzSTZ4N1JEcHE1ZEYzRVFxNXk5Y2htNVp2dHlNNGowbG9yMndsMm0yNUh1RlRVejdGSWhKZGZsRmJUU09hVzVTcGx4VVZ6ekNhaFA2Tjcwa0tkZjZhUDZudmlYR21EOHBKdVAxOGJSTHkwcFdjKzlZYkp4elpSN0tGYVM1MWR4d3lPZHZ2UTN4SVZibWozZlpZUDF6dW5VUnU2SjNXeTVkR3VUdjRFY0JGcFpxN3YxKzU4aWluTDNic3BGTTF3ZWp5aDB4OG5VU3hTeFF0cWF5TkxhS0VGZHJBNVREcm9BemZHSG4yZjMrWEpiczRaVWN2VmJ2RU9JWStiVW5TcXpqZzcrdjFHM1NvTnNMQ01TV0dHRVlVYXlCQjNIOXJCRU9GeXd3Y3YyMkdDbzRFNjloM3VWNEJEdkNzQlVQNjFSczZTc3NTZUo3VkE5enRUOFE0d0wvY2FvRlJqYmFieEZpb2pWRWFaK2dQZ25taHUzK1dWZEt4cFEyUjFaMWxWOVM2eGFmbmdvWHBwZmRZNHh0T2s4SzhFRnpUREROUTRERnA1dHBFWkVqVUlqMWRidlA0UStONmlLKzR4Wkl1KzhjYlpWZStRUXFRcnRYemhXTUFDRDdjdy8zSUR5NnlkbTF1Y3FHVk5FWVlaQ3M2K3JsaTE0aHBIVTV2TUhDMjh3TWZWSm9wWFdPTUh2R0JZQ2pDYkhWSFJycThQRnlWRVNPbGE5Snp1eVNScHVpM202WXMxUFlGc04vZysrV1g2T0lVZXc1YVBLVElzRmNvbTZqN1lIOEF3Vjd1ZjByM3llU3ViWlhjNHUrUitZOWV1TmNJYlZLdUlaRnNTWWFscEdkdHUyZ2ZoNm4xZEVUTzk2WlhrMTdISkRyTXJTcTgzbFFGYlpiVytwUzdJd1ZrMTRhNHpocG90ZHR4bmlSM0diTXZ6UFFHSlRFUEsxc2RSUG4reDRpd2JmY0oyQm9oM09GL0tudUk3UkxjMzZBYTlFWnB4a3VpUmZSenpYZEtncld3S3RJS3NtMm1PbWw1U3B0MWkyZUlYWVBvMGkzbUx5dDRrb1V5UktoRTNkRS9lY0hvODRUQm81WG9iQUJIditIUThzWjVWS2JlYzlVcjcrMThQOUp4T1VIWkdpUTZzREFMbUhicjdVK0JGcnQxZ2pqaktUcVRVY2cyL1NtVFJ1OFVPMWF0TWdkMWFIZEZNckxJd0lpMHJQdEFPM2lKTVVhMUR0bDdUcllGbG5NWnNsNXVyWXM3UVpldzQ3YjVuSWlkRFh4RnArejF5aGdqWm92U081VU5qMjhTL2JLd3I4amZzV0VKL1JxZnZKOGNBcXUveGdpRktsZVNJSUR0RlZxOWVNckE1NHhZN2x1TGowaVQ3ellwenhiSVMrYWpUU0dXcEFUVWtZNGh5dS9iNEo0UDA3T24wZUVMM3BJRTZlY2NwZGt0VkwzTmQxM3dqNng1SG01eHQ2RCtvVEpMekYxdFJGekZkblgrc0wvcDJrZGsyVC9tQnpVVTdwSjNick81c04zZHdGTkx1MXhGcUNDWU5MQmppOGhFMFBsdXFBeTlXRzVBWkVWZjVMdllqN0FoN1U3eWdUZ1VQMFhxcUcrTUF3cFRGS2dXZUhrK01yUG9nOWZ4MzB6SElpT1U4TEU1bG5iNTB4OUJwNmpoWm1PT0RmRitsRTJSYlRHKytacFBwR2Q4RzVmL1RuQjVQVmdYdWZYNUF4eVdIeVNMaTNiUEQvSC9BL3MrOW91TW90eXdlbWxaWkkzRHcvSGZQWnhoMFQrcDArcVBraU4rR1R2OVh2RXQ2eHMvQmZ3R2hobW5ZY2F5ZGdRQUFBQUJKUlU1RXJrSmdnZz09In0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMTktMDgtMDIiLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ikh5cGVyIEZJRE_CriBNaW5pIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVMkYxMDAwMjAxODA5MTgwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMy40IiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjEuMCJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMTktMDgtMDIifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyJjZDlkZDc3Y2Y1ODBkZmUwNWQ5ZDA4OTg2NWExNjRkYmI2NDMyY2QyIl0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbImNkOWRkNzdjZjU4MGRmZTA1ZDlkMDg5ODY1YTE2NGRiYjY0MzJjZDIiXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlRydXN0S2V5IFQxMTAgVTJGIEF1dGhlbnRpY2F0b3IifSwiZGVzY3JpcHRpb24iOiJUcnVzdEtleSBUMTEwIFUyRiBBdXRoZW50aWNhdG9yIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwicmVtb3RlX2hhbmRsZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoyNTYsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDcFRDQ0FrcWdBd0lCQWdJQkFUQUtCZ2dxaGtqT1BRUURBakNCcnpFTE1Ba0dBMVVFQmhNQ1MxSXhFVEFQQmdOVkJBZ01DRk5sYjNWc0xWTnBNUk13RVFZRFZRUUhEQXBIWVc1bmJtRnRMVWQxTVJjd0ZRWURWUVFLREE1bFYwSk5JRU52TGl3Z1RIUmtMakVpTUNBR0ExVUVDd3daUVhWMGFHVnVkR2xqWVhSdmNpQkJkSFJsYzNSaGRHbHZiakVjTUJvR0ExVUVBd3dUWlZkQ1RTQkRRU0JEWlhKMGFXWnBZMkYwWlRFZE1Cc0dDU3FHU0liM0RRRUpBUllPYVc1bWIwQmxMWGRpYlM1amIyMHdIaGNOTVRnd056QXlNRFV6TVRNNVdoY05Nak13TnpBeE1EVXpNVE01V2pDQnJ6RUxNQWtHQTFVRUJoTUNTMUl4RVRBUEJnTlZCQWdNQ0ZObGIzVnNMVk5wTVJNd0VRWURWUVFIREFwSFlXNW5ibUZ0TFVkMU1SY3dGUVlEVlFRS0RBNWxWMEpOSUVOdkxpd2dUSFJrTGpFaU1DQUdBMVVFQ3d3WlFYVjBhR1Z1ZEdsallYUnZjaUJCZEhSbGMzUmhkR2x2YmpFY01Cb0dBMVVFQXd3VFpWZENUU0JEUVNCRFpYSjBhV1pwWTJGMFpURWRNQnNHQ1NxR1NJYjNEUUVKQVJZT2FXNW1iMEJsTFhkaWJTNWpiMjB3V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVFJZnFIaXNpMG9PL2V5T3FTYURycjlpdEcySXltQmtIblNER1FJSVltVCt2cUE4QWdPODFtb21jMkxkNVBHcEVONm11RTU0d1BIUWp2Yy95Q2loOHUybzFVd1V6QVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUFNQjBHQTFVZERnUVdCQlMzSi9meGlBdjIyaXJkQnM5OFNPRGhGN2tVL2pBTEJnTlZIUThFQkFNQ0FRWXdFUVlKWUlaSUFZYjRRZ0VCQkFRREFnQUhNQW9HQ0NxR1NNNDlCQU1DQTBrQU1FWUNJUURjNDFMRks0TEpDQlUyVlZLSXo3WjZzeFBoVUVraDhuTFNMSzZJWGRrUDV3SWhBSWVLVk9aY2hhVk81YUY3ZmJkWG9TcmN5eTFZWWVVZVBMb2pjS0k5Zlg4NCIsIk1JSUNnakNDQWlpZ0F3SUJBZ0lCQVRBS0JnZ3Foa2pPUFFRREFqQ0JuVEVMTUFrR0ExVUVCaE1DUzFJeERqQU1CZ05WQkFnTUJWTmxiM1ZzTVJBd0RnWURWUVFIREFkSFlXNW5ibUZ0TVJjd0ZRWURWUVFLREE1bFYwSk5JRU52TGl3Z1RIUmtMakVaTUJjR0ExVUVDd3dRUTJWeWRHbG1hV05oZEdVZ1ZXNXBkREVaTUJjR0ExVUVBd3dRWlZkQ1RTQkRaWEowYVdacFkyRjBaVEVkTUJzR0NTcUdTSWIzRFFFSkFSWU9hVzVtYjBCbExYZGliUzVqYjIwd0lCY05Nak13TnpFeE1ETTBOakUwV2hnUE1qQTNNekEyTWpnd016UTJNVFJhTUlHZE1Rc3dDUVlEVlFRR0V3SkxVakVPTUF3R0ExVUVDQXdGVTJWdmRXd3hFREFPQmdOVkJBY01CMGRoYm1kdVlXMHhGekFWQmdOVkJBb01EbVZYUWswZ1EyOHVMQ0JNZEdRdU1Sa3dGd1lEVlFRTERCQkRaWEowYVdacFkyRjBaU0JWYm1sME1Sa3dGd1lEVlFRRERCQmxWMEpOSUVObGNuUnBabWxqWVhSbE1SMHdHd1lKS29aSWh2Y05BUWtCRmc1cGJtWnZRR1V0ZDJKdExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCQWgrb2VLeUxTZzc5N0k2cEpvT3V2MkswYllqS1lHUWVkSU1aQWdoaVpQNitvRHdDQTd6V2FpWnpZdDNrOGFrUTNxYTRUbmpBOGRDTzl6L0lLS0h5N2FqVlRCVE1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdIUVlEVlIwT0JCWUVGTGNuOS9HSUMvYmFLdDBHejN4STRPRVh1UlQrTUFzR0ExVWREd1FFQXdJQkJqQVJCZ2xnaGtnQmh2aENBUUVFQkFNQ0FBY3dDZ1lJS29aSXpqMEVBd0lEU0FBd1JRSWhBTlZuSmRlLy90QkxxOE1ERGkrU0FkNlVkWUlaU25nNFBNcW15TnJ2Wmo2NEFpQVgweFN6QWhGYUNDcC91aHBWZ25sRitYQmdyd0FJc290WkdUQjZya0IzMUE9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUErZ0FBQUV4Q0FZQUFBRHZEWWdxQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUVuUUFBQkowQWQ1bUgzZ0FBRmljU1VSQlZIaGU3ZDBIZUJYRjJzRHhONzNRQ1RWQTZGSUZGS2tDVXV5QUV1bUtZa0ZVYklDQ0lpS0NVZ1FFN0wwZ2RsUXNLQ3BTcklnZ1NDK2hKblJDSjRIMGIyZnZlRC8wa2hDU25jMmVrLy92dVhtWWQ0NlhrSk56OXN5N00vTk9RSlpGQUFBQUFBQkFnUXJVZndJQUFBQUFnQUpFZ2c0QUFBQUFnQWVRb0FNQUFBQUE0QUVrNkFBQUFBQUFlQUFKT2dBQUFBQUFIa0NDRGdBQUFBQ0FCNUNnQXdBQUFBRGdBU1RvQUFBQUFBQjRBQWs2QUFBQUFBQWVRSUlPQUFBQUFJQUhrS0FEQUFBQUFPQUJKT2dBQUFBQUFIZ0FDVG9BQUFBQUFCNUFnZzRBQUFBQWdBZVFvQU1BQUFBQTRBRWs2QUFBQUFBQWVFQkFsa1czUFNzek5WWFNEeVRLcWExYjVkU2FkWks2ZTQra0h6OW05NG4zLy9tQWNRRWhvUkpjdXBRRVIwVkpXSlZLRXQ2Z3ZvUlhyeVpCcFVwSlFDRDM0UUFBQUFCZjROa0VQU3NqUTA1dDNpS0hQdnBFanYrd1FOTDM3Wk9zMURUOUtJQ3pDWXlNbE5BYTFhVEVOWjJsWkpmT0VscWh2UFdPRDlDUEFnQUFBUEFhenlYb0tqRS9NdmM3U1h4emhweGFzVkwzQXNpUGdOQVFLZHF4dlpTOVk0QVVhZEpZOXdJQUFBRHdFazhsNk1kLysxMzJqSHRLVXRhdDF6MEFuRmE4NjlWU1lkZ1FDYXRTUmZjQUFBQUE4QUpQSk9nWkowN0lub2xUNVBBSEg0dGtadXBlQUtZRWhJZExoVkVqSktwWGR3a0lEdGE5QUFBQUFBcFNnU2ZvcDdac2xSMERCMG5xMXUyNkI0QXJBZ0trMkJXWFNwWEpFeVNvYUZIZENRQUFBS0NnRkdpQ2Z1TFA1UkkvWUpCa0hEbWlld0M0TGJ4UlE2bjI1aXNTRWhXbGV3QUFBQUFVaEFKTDBFOHNYU1k3YnJsRE1wT1NkQStBZ2hKYXE0YlUvT2hkQ1M1ZFd2Y0FBQUFBY0Z1QkhKQ3NsclhIMzNrdnlUbmdFYW1idDhyMmdZTWtnL2NrQUFBQVVHQmNUOURUang2VDdiZmRJUm1IRHVzZUFGNXc4cysvWk9jamowa1doUm9CQUFDQUF1SHFFbmQxeG5uOEF3L0pzUy9tNko1ekZ4Z1pJVUdsU2tsSWplb1NWS0s0N2dVS09ldHRuTDV2djZUdGlKZU1JMGNsS3kxTlAzRHVLazRZSzJYNjlOSVJBQUFBQUxlNG1xQWZYYmpJTGdwM3prZXBCUVpLK1BrTkpLcC9QeW5XdXFVRWx5a2pBVUZCK2tFQWY4dE1UWlhVWGJ2azZMZno1TkRNOXlWOXoxNzlTTzRGbGl3aDUvM3dEVVhqQUFBQUFKZTVscUJuSkNWTDNGWFhTRnJDVHQyVE82RTFxMHZGVVNPa2VOczJkcUlPSUhjeVQ1NlVneDk4TFB1ZmVWNHlqeDNYdmJsVG9sdFhpWms2eWJwQ0JPZ2VBQUFBQUthNWx2RWVtZlAxdVNYblZtSlFvbWVzMUo0elc0cGYwbzdrSERoSGdSRVJVdmJXL2xMTGVnK3BvOVRPeGJGdnY1ZFQ4UWs2QWdBQUFPQUdWN0pldGV4Mi8vTXY2U2dYckdROGF0QkFpWGxxdkFTR2grdE9BSGtSVnFXeWZZUmE1TVV0ZGMvWlpaMUtrZjNQdnFBakFBQUFBRzV3SlVFL3NYaUpwTy9hbzZPekNBaVEwamYzaytpaDk3TzhGbkNJdXRGVjdkVVh6MmttL2NTQ1JaSis1S2lPQUFBQUFKam15aDUwVmJuOTZHZGY2Q2huS29HbytmSDdFaGdXcW52eXlmcnhzdExUSmYzRUNjazRmbHl5VXZOZTNScHdpenF0SUxoWU1YdVp1bDBRMGFHYlZhZTI3NUROVjE0aldTa3B1aWRubFo2WklxV3Y2YUlqQUFBQUFDWVpUOUJWY3J5dWVSdkpQSHhFOStRZ09GaXF6M3BQaWpacHJEdnlMbm5kZWprMmY2RWsvYnBZVXJac2xZekVnL29Sd0hjRXgxU1JpTnExcEdpSGRsS3NZM3NKcTFoUlA1SjMrMTU2VmZaUG1xcWpuQlc5cktOVWYvVkZIUUVBQUFBd3lYaUNucnhtcld6cDJsMUhPU3ZhOFJLcC92ckxlWjR0ekR5VklrZSsvVTRTWDN0VFV0WnQwTDJBbndnTWxLS2Qya3VaVy90THNSYk44L3crU1Q5NlZEWjF2Rkl5RGgzV1Bka0xLbDVjNnY3eHN3U0doZWtlQUFBQUFLWVkzNE9lL05kSzNUcTcwbjE2NVMzcHlNcVM0NHQvbDdqTzNXVFhrT0VrNS9CUG1abHlZdDRDMlg3RExiSnQ0Q0JKeVdPVjllQVNKYVRFdFYxMWxETjFWRnZxemwwNkFnQUFBR0NTOFFUOTVQcmNKY3NCa1JGUzdKSzJPc285VlNGKzk4VEpzdU9tQVpLNmRadnVCZnlZU3RSL1dDaWJ1MTRuaCtkOFk4Zm5xa1NYcTNRcloxbHBhWkxDK3dvQUFBQndoZGtFUFN0TDByWnUxMEhPd2h2VWw4RFFjeXNNcDRxK2JiL2pIam40NnB2MlhuZWdNTWs4ZGx4MkRoNG1lNlkrWTcvWHprVkV6Um9TV0xTb2puS1dzaWVYSnpBQUFBQUF5QmVqQ2JyYTNwNlJuS3lqbkttem1zK0ZTczYzM1RwUWtoYjlwSHVBUWlnalF4SmZlTVZlUlhJdVNYcEFSSVFFbDQzU1VjN1NkNU9nQXdBQUFHNHdPNE9lbVNtWnVUek9LYWhDZWQwNk83WHNObjdZQ0RtNWJJWHVBUW8zdFlya3dGc3pkSFIyNnVpMmdORGNGWDdMMkxkZnR3QUFBQUNZWkh3UHVnbjdYM3RUVG56M2c0NEFLUHNtVFpPa0ZYL3BDQUFBQUlDdk1Yck1tdG9YdnFsTHJLUnVqTk05MllzYU5GQ2lodzNWVWZaT2JvcVRMVjJ1czJmUmN5MHcwTjV2RzF3bVNnS2pTdWxPd0tPc2QyVEd6bDJTY2VLRVpKNUkwcDI1RTFxcmh0VCs4bE1KaklqUVBXZVdsWkVoY1oxakpXWGpKdDJUdlpMZHVrcVZhWk4xQkFBQUFNQVUzMHJRclgvcXR0dnVrQk1MYzdudjNENDN1b09VSFhDemhOZXJLOEhGaXVrSEFJL0x6SlMwdzRmbHhPOS95SUhuWDdJU2FlczlsSnUzYWtDQWxCOHhUTXJkZnF2dU9ETVNkQUFBQU1CN2ZHcUplOUtxMWJsT3prTmlxa2oxajJaSzlWZGZrS0xObTVHY3c3Y0VCa3BJVkpTVTZueVYxSjR6V3lvK09Wb0N3c1AxZ3ptd2t2akVsMStUaktSem0za0hBQUFBVVBCOEowRzNFbzhEcjc2aGc1eUZuOTlBYXM3K1NJcGUxRlQzQUw1TEZYUXJjMzBmKzRaVFVNa1N1amQ3R1ljT3l4RjFQam9BQUFBQW4rSXpDWHI2a2FPUzlNdHZPc3BlY01YeVV1MzFseVdrZEduZEEvaUhJbzNPbDhyUFRiVmU1RUc2SjN0SFB2dEN0d0FBQUFENENwOUowSk5XcnBMTVk4ZDFsSTNBUUtrNGRyU0VsQ3VyT3dEL1Vyek54VkxxaGo0NnlsN3lueXNrNC9nSkhRRUFBQUR3QmI2VG9QLzJ1MjVsTDd4ZUhTblI0UklkQWY2cDdJQmJKU0E0V0VmWnlNaVFwSlVyZFFBQUFBREFGL2hNZ3A2OGJwMXVaYTlFbDZ2dC9icUFQd3VyWEVraVdqWFhVZlpPclY2cld3QUFBQUI4Z1U4azZGa1ptWksyYWJPT3NsZnNzazY2QmZpM1ltM2I2RmIyVXZmdjF5MEFBQUFBdnNCSEV2UjBPMGsvbTdBS0ZYUUw4RytoMWF2cFZ2WXlUM0RVR2dBQUFPQkxmR2FKZTY0RTZEOEJmOGRySFFBQUFQQTcvcFdnQXdBQUFBRGdvMGpRQVFBQUFBRHdBQkowQUFBQUFBQThnQVFkQUFBQUFBQVBJRUVIQUFBQUFNQURTTkFCQUFBQUFQQUFFblFBQUFBQUFEeUFCQjBBQUFBQUFBOGdRUWNBQUFBQXdBTkkwQUVBQUFBQThBQVNkQUFBQUFBQVBJQUVIUUFBQUFBQUR5QkJCd0FBQUFEQUEwalFBUUFBQUFEd0FCSjBBQUFBQUFBOGdBUWRBQUFBQUFBUElFRUhBQUFBQU1BRFNOQUJBQUFBQVBBQUVuUUFBQUFBQUR5QUJCMEFBQUFBQUE4Z1FRY0FBQUFBd0FOSTBBRUFBQUFBOEFBU2RBQUFBQUFBUElBRUhRQUFBQUFBRHlCQkJ3QUFBQURBQTBqUUFRQUFBQUR3QUJKMEFBQUFBQUE4Z0FRZEFBQUFBQUFQSUVFSEFBQUFBTUFEU05BQkFBQUFBUEFBRW5RQUFBQUFBRHlBQkIwQUFBQUFBQThnUVFjQUFBQUF3QU5JMEFFQUFBQUE4QUFTZEFBQUFBQUFQSUFFSFFBQUFBQUFEeUJCQndBQUFBREFBMGpRQVFBQUFBRHdBQkowQUFBQUFBQThnQVFkQUFBQUFBQVBDTWl5NkxianN0TFRaVk9YV0VuZEdLZDdzaGMxYUtCRUR4dXFvMy9LVEUyVkRhM2FTOGFoUTdybnpCcXNYUzZCa1pFNk1pYzFQa0ZPcmQrZ0kvaXowSmdZQ2E5WFIwZmVjV1QrQWtrWU1FaEhaMWFpUjZ6RVRKNmdvMy9LeXNpUXVNNnhrckp4ays3SlhzbHVYYVhLdE1rNkFnQUFBR0FLQ1hvZUhKejV2dXgrYkt5TzRNK2krdmVUNk1jZjFaRjNrS0FEQUFBQS9vY2w3Z0FBQUFBQWVBQUpPZ0FBQUFBQUhrQ0NEZ0FBQUFDQUI1Q2dBd0FBQUFEZ0FTVG9BQUFBQUFCNEFBazZBQUFBQUFBZVFJSU9BQUFBQUlBSGtLQURBQUFBQU9BQkpPZ0FBQUFBQUhnQUNUb0FBQUFBQUI1QWdnNEFBQUFBZ0FlUW9BTUFBQUFBNEFFazZBQUFBQUFBZUFBSk9nQUFBQUFBSGtDQ0RnQUFBQUNBQndSa1dYVGJjVm5wNmJLcFM2eWtib3pUUGRtTEdqUlFvb2NOMWRFL1phYW15b1pXN1NYajBDSGRjMllOMWk2WHdNaElIWmx6Y3ZVYU9mN2p6enJ5dnVRL1Y4anhSVC9weUZubEI5OHJFdVMvOTNraUdwMHZ4ZHExMFpGM0hKbS9RQklHRE5MUm1aWG9FU3N4a3lmbzZKK3lNaklrcm5Pc3BHemNwSHV5VjdKYlY2a3liYktPQUFBQUFKaENnbDRJSkw0NVEvWThjZVpFTGI4YXhxMlJnT0JnSGNFdC9weWdaNldsU1ZhbXNjdFM0Uk1nRWhnU1l2MXBOUUFBLzBPTk04V0ZqNTJBNENBSkNBclNVY0Z6OWZPV3p5SWcxMGpRQ3dFU2RQL2p6d242dHFIRDVOU0tsVHBDZmdXVktDNjFQbjVmQWtORGRROEE0SFJ4M2Z0SStsbkdtRTRvUC93QktYM1ZGVG9xV0JsSlNiTGx4bHNrNC9BUjNXTldaSXRtRWpQK0NRa0laSGN0Y0RZazZJVUFDYnIvOGVjRVBhN2Z6WEp5OFJJZEliOUNhMVNYdXZPKzBSRUE0Ti9XdFd3bjZRY082TWljNkVuanBVejNXQjBWb014TTJUNTBtQno3eXAzUGh1QUs1YVgyN0k4bHBGdzUzUU1nSjl6R0FnQS9GbGFycG00QkFDQ1MrTkVzMTVMemdMQXdxVEoxRXNrNWNBNUkwQUhBajRXV0w2OWJBSURDTG5uZGV0a3o3aWtkbVZkdXlMMVNyRVZ6SFFISURSSjBBUEJqWVkwYTZoWUFvRERMT0g1YzRnYy9LRmtuVCtvZXM0cGRjWm1VdSswV0hRSElMUkowQVBCajRUVnI2QllBb05ES3lwTGRrNTZXMUMxYmRZZFpJWldpcGNyNHNSU0ZBL0tBZHcwQStLdWdJQW1yVUVFSEFJREM2dkEzMzhyaER6N1drVm1Ca1JFUzg4SXpFbHl5cE80QmNDNUkwQUhBVHdXVktpV0J4WXJxQ0FCUUdLWEV4OHV1a2FQdFdYVGpnb0trd3FoSHBNajViSzhDOG9vRUhRRDhWRkRSSWhJWUZxWWpBREFyTXpOVFRwNDhLWWNPSFpLdDI3YkowcVZMSlRVMVZUK0tncEI1S2tWMkRINVFNbzhmMXoxbXFhTlp5L1RzcmlNQWVVR0NEZ0IrS3FSeUpRa0lDdElSQU9TTlNyelQwdElrT1RsWkVoTVRaZlBtemJKNDhXSjU3LzMzWmR6NDhUSjR5QkM1TmpaV2F0ZXRLK2ZWcXlkMXJLOTZEUnBJNjdadDViaExpU0hPUU8wN2YycXluRnE1V25lWUZkNm9vVlFlTzFva0lFRDNBTWdMRW5RQThGT2hWV04wQ3dCeXBoTHdBd2NPeU5xMWEyWDI3Tm55NGtzdnlXT2pSMHUvbTI2U2k5dTFrNmJObXRsSmQ2V1lHS25Yc0tHMDY5QkJicjcxVm5sODdGaDV3ZnB2djVrN1YrTGo0Mlh2M3IxeTVPaFJPNmxId1RxNjZDYzUvUDVIT2pJcnNHaFJpWmsrUlFMRHczVVBnTHdpUVFjQVB4VktnVGdBT1RoMjdKaGNldm5sVXJkK2ZZa3NWa3lpcTFTUkprMmJTcSsrZmVYK0lVTmt3bE5QeVVjZmZ5ekxsaTJUOVJzMnlPNDllMGk4ZlVUcTdqMnljL2dJeVVwUDF6MEdCUVJJOUpPUFMzalZxcm9EUUg2UW9BT0Fud3Evb0pGdUFjRC9VdnZERi8vK3Uyelo2czdSVzNCSHB2VjdqWC9vRWNrNGRGajNHR1FsNTFFRGJwYlNYVHZyRGdENVJZSU9BSDRxdkVvVjNRSUFGQmI3WDMxZGtuLzdYVWRtUlY3VVZDb09IYXdqQUU0Z1FRY0FQeFFRRVNFaFpjcnFDQUJRR0J4ZnNsVDJQL2VTanN3S3JsaEJxajQzVlFKRFEzVVBBQ2VRb0FPQUh3b3VYMDRDUW9KMUJBRHdkK2xIamtqQ3NJZXNodmw5NXdHaElWSjU4Z1FKS2N1TllNQnBKT2dBNElkQ1NwYVVnRUF1OFFCUUdLaGljUEhESDVIMFhYdDBqMWxsN3JwRGlyZHFxU01BVG1MMEJnQitLS1JHTmM2aUJZQkM0c0RiNzhpSitRdDFaRmJSOXUyazRyMkRkQVRBYVNUb0FEd2xwRnhaQ2ExUzJiV3ZrSW9WM1Vsa3JlOFJVaW42alA4R0UxOFI5ZXZyYnd3QThHZEpLMWZKdnFuUDZNaXNFT3Z6SldiS1JHNEFBd1lGWkZsMDIzRnF1YzJtTHJHU3VqRk85MlF2YXRCQWlSNDJWRWYvcEk2TDJOQ3F2V1FjT3FSN3pxekIydVVTR0JtcEkvd3Q4YzBac3VlSkNUcHlWc080TlJJUXpENVh0eDJadjBBU0J1Ujg5N3BFajFpSm1Yem0zM3RXUm9iRWRZNlZsSTJiZEUvMlNuYnJLbFdtVGRhUi96a1ZIeTl4bDNVMmZsWnNZSkVpVW1mQmR4SlNKa3IzQUVEQlNreE1sS28xYXRqSHJabXlkOWN1aVlyeTluVnZYY3Qya243Z2dJN01pWjQwWHNwMGo5V1JNOUtQSFpPNGJqMGxiVWU4N2pFbk1DSkNxbi93amhRNXY2SHVBV0FDTStnQUFBQ0FEOXIxeEhoWGtuTUpESlR5ano1RWNnNjRnQVFkQUFBQThERUhQNTB0UnovN1FrZG1sZWphV2NyMDZxa2pBQ2FSb0FNQUFBQSs1R1RjWnRrelpweU96QXFyYzU1VUdUZUdrMEVBbC9CT2cwOVI5UWkyOXJ0WjFsM1F3dmhYM0xVOUpPTkVrdjdPQUFBQUJTL2p4QW1Kdi84QnlVd3lQMFlKTEZaTVlwNmZadTgvQitBT0VuVDRqcXdzMlRmOWVVbjY5WGZKT0hMVTZGZG04a21wT0hxa0JCVXRvcjg1QUtDd3lNek1sUFQwOUROK1pXUmtXQjlIeHVyckFqbktzbDZidXlkTXlsV1IxM3dMQ3BUb01hTWtva1lOM1ZGNHFmZDhUdGNGOVJqZ0ZLcTRGd0wrVXNYOTJNKy95STViN3hUclNxaDd6Q2w3LzkxU1lmQzlPdkllcXJnN2h5cnV2aThsSlVYV3JsMHJmNjFjS2Z2Mzc1Y0RpWW42RVpHdzBGQXBXYktrbEMxYlZtclhyaTMxNnRiMWZFVnB1Q2NwS1VtMmJ0MHFxMWF2bGoxNzlzaTI3ZHRsNDhhTmN1clVLVGw1OHVRWkI5MFJFUkVTRWhJaXBVcVZrZ2IxNjB1bFNwV2thdFdxZHJ0eTVjb1M3RU1ubTFERi9UOThxWXI3a2UrK2wvaDdocWk3U0xySG5OTDkrMG5sVVk4VXVpUFYwdExTSk40YUd5eGZzVUlTRWhJa0xpNU9ObGxmNnJxUW5KeXMvNnYvcDk3ellXRmhVcng0Y1duWW9JRjlIYWhXclpvMGJ0VEl2ajc0MGpVQjNrQ0NYZ2o0UTRLZXVudVBiTFplU3htSGorZ2VjeUpidDVRYU05LzA5RjRyRW5UbmtLRDdwcU5IajhyY2I3K1ZEejc4VUg3ODZTYzcwY3F0T3VlZEo0OC85cGowNk5GRDk2QXdVTW4ydG0zYlpQSHZ2OHVpSDMrVXYvNzZTMWF1V3FVZmRVWjRlTGcwYjlaTUxyamdBbW5Wc3FXMGJOSENIcUI3RlFuNmYvaEtncDZTc0ZQaXJ1a3VtY2VPNlI1eklpNXNJalZudmkyQjRXRzZ4MytwMTcrNndmdkxMNy9JL0FVTDVQY2xTK1NZUTg5eHBKV1h0RzNUUnRwZmNvbTBzSzRIelM2NnlMNU9BRGtoUVM4RWZEMUJ6MHhKa2EzWDk1ZVR5Ly9TUGVZRWxTMGp0YitlTFNGbHkrb2VieUpCZHc0SmV1NzhiaVUxNjlhdjE1RXpMcklHS28zT1AxOUh1WFBBR2tTLy9PcXJNdVhwcDg4NGs1RmJzejc2U0xwZGU2Mk96dDJzVHo2UjQ4ZVA2OGg1VjE1eGhVUkhSK3ZJR1o5OTlwa2NPWHBVUjg2N3hCcUExdlRZVWxpMUhIM1RwazN5MmV6WjhzbW5uOHI2RFJ2c1ByY0VCUVhaTjRSNjlld3BWMTE1cFRSbzBNQ2VhVE5wMWFwVnN1elBQM1dVc3hNblRzaERJMGJZUzNSTmVYcnlaQ2xhdEtpTzhxNTgrZkxTK2VxcmRlUXNYMGpRczlMU1pITy9tK1hrc3VXNng1emdjbVdsMXV4WkVscWh2Tzd4UCtvMXIyN1FmV2g5RnJ6NzNudHk4T0JCNDF0WEFnSUNwRml4WXRLamUzZnBkLzMxMHJ4NWMrUFhnek5STnlzLy8rSUxPWExFN0tSWDZkS2w4L1U1bTFmcTUzdG41c3d6cm9CeWlyckowcnRYTC9zYWJ3SUplaUhnMHdtNjlmTGM4OHp6a3Zqc0MxWmI5eGtTWUYwa3E3NzltaFJyMlZ6M2VCY0p1bk5JMEhQbi9pRkQ1TVdYWHRLUk0rNjc1eDU1ZXNvVUhlVk1EYVptelpvbFF4OThVQkt0Z1ZSK3FPV0dmLzd4aDlTdlgxLzNuQnYxc2Rtb1NSUFpzSEdqN25IZXQ5OThJNTA2ZHRTUk01bzJhMll2NVRibG5iZmZscjU5K3Vpb1lLa1ZGZDkvLzcxTXNsNWZhaEN1bHF3V05EV1FVMHRmQjl4NnEvMDh4Y1RFMkFOMnAwMmROczFPdXYyTlNtbytzQklwRXp5Zm9GdlhuRjBUSnN2Qk45N1NIZWFvTVYzVjExK1M0bTNiNkI3L29tN3Nmajl2bmp3MWFaS3MrT3N2VjIvWW5VNjk5NnRYcXlhRDc3L2ZUdlJVTXV1bTJ3Y09sTGZmZVVkSFpxaWJFYnNURWx4Zk1hQzJMZFUvLzN5anY5c083ZHZMZDNQbkdybUdLeFNKZzZjZCsyMnhISHpoRmVQSnVmVU9rektEQnZwRWNnNzRpNFNkTzNVclo0Y1BINWJyYjdoQmJyN3R0bnduNTRxYXpWT0pFdnlQV3FyNjN2dnYyemNqZXZYdGE4OGtleUU1VjlSZ2NjZU9IVEpxOUdqN0JzKzFzYkd5ZE5teUFrc1FmRTNyVnExMHEvQlJOWGdPempDYlRQMnR6RjIzKzJWeXJtN3lmdm5sbDlLa2FWUHAyYnUzZlcwb3lQZWV1dEc3ZGRzMnVXL3dZS25Yc0tFOFBYVnF2bGFGbmF0ZXZYcnBsamxxbFptcUQrTzJKVXVXR1AvZDlyRmVRNmFTYzRVRUhaNlZkaUJSZGozd3NQR1pUU1d5V1ZNcGY5ZEFIUUZ3d3hycmcvdHNpN2pVbnVHMjdkdkw3QysrY0d5NVdwa3laZXc3Ky9BZjZuWDA4ODgvUzV0MjdlVG1XMitWTFZ1MzZrZThLZm5rU2J1R2d2cjNYbkhWVmZZV0V1U3NSaUd0Sko2NmI3OGtESC9FeWpETko1TkYybDRzRmU2OVcwZitRMjNQdXJwTEYrbHVKYVhxTThWckRoMDZKQTgvOG9oOVkvR0xMNzg4NitlaUV5NnhyajJxMEtWcGM3LzdUcmZjTTMvaFF0MHlRNjBJdUM0MmY4VWV6NFlFSFo2azlsb2xQUGlRcEZzZlRLYXB2Vll4ejArWGdKQVEzUVBBRGNlT0hyVXJaV2RIVmM3dGVPbWxkbFZ0SjExNHdRVkc3M3pEWFdvZjlkQUhIcERMcnJ6U1hyTHFTOVJOSjFYa1VOMkU2dDZ6cDJ6YzVNTFJXVDVJN2ROVlZmSUxHN1hGTStIaFJ5VGp3UCtmVEdGS2NNVUtFak41b2dRWTJsTmJFTlNLbXNsUFB5MHRXcldTaFlzVzZWN3YycnhsaXoyNzMrK21tK3g2S3lhRmhvWktkOE5KcHJKNDhXTGRjb2U2cHFvaW9DYXBteHZxZEJpVFNORGhQVmxac3UrbFZ5WHBwMTkxaHprcUthODBhWnlFbEMyamV3QzQ1ZGp4NC9ieTlUUFp2WHUzWEc0bFhEdDM3ZEk5emltTUEzMS9wV2JEMm5mc0tNKy8rS0xQTHhYLzhxdXY1S0xteldYc0UwL1lOeDN3LzBLQ2c2VkNoUW82S2p6MnYvRzJPMk9oaUFpcCt2eDB2eG9McVdNVHUxNXpqVHd5Y3FSOVBKcXZVTFBuSDgrYVpjK20vN0YwcWU0MTQ3cnJyak4rczFvdGNUZDVTc1MvcWFNeTFWWWlrMjdzMTArM3pDRkJoK2NjLzMySkpENy9zbzdNaWhwd2l4Uy9wSjJPQUxoSnpaNnJzMmIvVFJYNDZ0V25qNUhrWEZIVnh1SDdsbHFEVjdWRTNPbWowZ3FTU2lTZUdEZE9XbDU4c2F4WXNVTDNvbTdkdW9YdWFLcmpmeXlWQTlPZjA1RkJnWUZTWWZoUUtkS2tzZTd3ZlN0WHJyU3ZEUXQ4WU5ZOE8zdjI3clZ2VXM5ODkxMWpTOTVWWFFkMURKeEp1M2J2TnA0d24yN2V2SG02WlVaRVJJUjl5b3BwSk9qd2xMVDkreVhoL2dmdEplNm1SVFMvU0NvTXZVOUhBQXFDdXR0OU9yVThiY2dERDhpU1AvN1FQYzRLQ3cwdHRIdFovWWs2ci9pS3E2K1cvUzVVM2k0SWFsdEgzMzc5WEoxNThyS2FOV3ZxVnVHUWZ1eTQ3QnoraUNzMWVJcGZlWm1VNlhlOWpueWZXbExkdmxNbmlVOUkwRDIrUzkyc0huam5uVEp0K25RalNYcVJJa1drMnpYWDZNaWNiMTNhaDY2ZW8zay8vS0FqTTlUcEtpVktsTkNST1NUbzhBejFRYVFLb2JpeDF5b29xclRFVEoxay9BeDNBRG43N1YvNzA5VHhOMnJHd0pTeVpjdEtLY043eDJEVyt2WHI3UlVXSnMraDk0TEpUejFsN3hPRlNMT0xMdEl0LzZlT1FVMFlPVXJTRW5KM3lrVitoTmF1S1ZVbWpwT0FRUDlJQjM3ODhVZTVxa3NYdjlvaW9xclBqeGc1VXA1NTlsbmQ0eXhWamR5MHhTNFZ3VHlWa2lKL0dMcTUvN2NCdDkybVcyYVJvTU16OXIvK3BpVDkrSXVPekxIM25VOGVMNkdWb25VUGdJSnkraEwzbzBlUDJrZk9xQUdKS2VYTGw3Y0xUc0UzcVdySHNUMTZ5SUZFOHpkeUM5S2RBd2RLVnl2UndIODBiZHBVdC94ZjRydnZ5L0Z2ek04NEJoYUpsSmpwVXlTb1NCSGQ0OXZVcXF0dTNidmJzODcrUnEwc0cvYlFRL0xlZSsvcEh1ZTBiTmxTaWhjdnJpTXoxTEZuS1ZieWJOcm11RGpadTIrZmpweW56cXB2MTdhdGpzd2lRWWNublBoanFleWZQRjFIWnBVZWNMT1U2TkJlUndBS2twb04vZHNiYjc1cC9BaWNwaGRlU0FWM0g2V1dMNnFDVDF1MmJORTkva2tWTVp3d2ZyeU9vUGFlVjZ0YVZVZitMWG5OV3RrN2VhcU9EQW9Na0lwalJrbGszYnE2dzdkdDM3NWR1dmZvNGZmRkZlKzgrMjdIdDMrcGF1UlhYM1dWanN6WXQzKy83TGUrVFB0bTdsemRNa010YjNmcmlGWVNkQlM0OUVPSEpHSEljSFdMVVBlWUU5bWltVlFjd3I1endDdlVIbUsxVkRreE1WSEdqQjJyZTgxUnhhYmdteFl0V2lSdnpaaWhJLytrOW9TKy9lYWJVclJvVWQyRGtpVktTRlJVbEk3OFYvcXhZN0pqOElPU2RkSnd4ZkdBQUNuZDczcUo2bmF0N3ZCdGFzYThkOSsrZGhMbzcxUVJ5UnY2OWJOWEVqbkpkRlZ5Tlh2KzcrMXNUbE9yREV6dWRWYzM5dSs0L1hZZG1VZUNqZ0psbjNjK2JJU2s3OTZqZTh3SktsVktxa3lmekhubmdJZW81ZXo3OXUyVDk5NS9YNUp6T0JQZEtlcjhVdmdlOVRvWk5YcTBQUWp6VjJvQU9PS2hoNlJKa3lhNkIwcjVDaFhzeXNsK0xTdExkajA1UWRLMi9iTm9wZ25oOWV0SjlFTVAyb202UHhqNzVKT3kzTVVURDRLQ2d1eGlvMnBsaC9wU1c2WkNySEdsV3l1emRzVEh5NTJEQmpsNkxXemVySm1VS1dQMmlMMXZ2LzFXdDh3NGV1eVlyRHR0Ulo3VG9pdFdsR2JXOCtRV0VuUVVxUDF2elpBVEMzN1VrVUhXaFRONi9CZ0pMWVRucUFKZXBxcFVyOSt3UVY1NjJmelJpbW9nVmExYU5SM0JsNmlxN2FZcSszdUZPdkpvNkpBaE9zTGZHamRxcEZ2KzY5Q1hjK1RvWjEvb3lKeWdNbEZTOWFYbkpOQlBqcXo3K2VlZlplcTBhVG95UnhWcnZPTHl5K1dGNTU2VFgzLzZTYlp0MlNKN2QrMnl2L2JzM0NrYjFxNlZiK2JNc1crdzFhOVhULysvelBuSytsNU96aGFycXVRZERCOC8rck4xRGMvSXlOQ1I4OVRKRjA2dkxEaGQrL2J0alI5SmR6b1NkQlNZRTM4c2t3TlRudEdSUVZaeVh2cTIvbEx5eXN0MUJ3QXZlZk90dDJUTDFxMDZNcWRxMWFxdWZzRENHV3J2K2JQUFA2OGo4NnBVcVNJMzMzU1RQRDE1c3N5ekJzRWIxNjJUclhGeHNtLzNidG0wZnIyc1c3MWE1bi8vdlR6M3pETXljc1FJdWFaclY2bFh0NjRFNStOVWtLalNwZVdkR1RQc21UajhVKzNhdFhYTFA1M2F2a04yang1cno2S2JGQkFTTEpVblBDRmhmbElnViswM0h6QndvSTdNVUxQaXZYcjJ0Ti96Yzc3OFVnYmVmcnRkc0ZDZEJxSzJvNmd2dFNjNUppWkdMdTNVU2NhT0dTUExseTJUMlo5K0t1YzNiS2ovRnVlcEZVWDNEeDdzMko1NzlYUGVjTDNaby9aVVljKzllL2ZxeUhuZldkZGtrOXhjM3E2UW9LTkFwQ1VlbElUN0gzRG52UE1MbTBqRkI1bVZBTHhxenRkZjY1WlpsYUtqODVWRW9XQWNQSGhRZnZyNVp4MlpVNzE2ZFhsdjVrdzdJWC90MVZmbHZudnZsZmFYWEdLZm02K1NkbFhCVi8wM0ttRnMxNjZkM0huSEhmTDQ2Tkh5NmF4WnN1TFBQMlZYZkx4OC9PR0g5a0MzU3VYSyttL05uU21USmttTTlUM3d2L3g1VzBwR2NyTEVXMk9oek9QbWk1dEYzWGFMbE9qWVFVZStiOUtVS2JMVllGSFI0bGJpUFhQR0RIbjNuWGZzbTd1NXBaYkFkK25jV1JiLytxdWQwSnV5ZmNjT2VmNkZGM1NVZjVkWTF6cFZNTTZVWk91MS9xZDFuVFJCM2NUOTRndHpLMURVNy84aWw0OTZKRUdINjdJeU0yWFg2TEdTdnRmY1VRaC9VOHU1WXA2ZEtvRWNxd1FVZW01L3dNSVpxMWV2dG8vZ00rbmkxcTNsajhXTDdkbXl2TXhpcTBHNVN1Qmp1M1d6aTd5dFc3TkdmbHE0VUhyMjZISFdJNHh1Nk50WGJyamhCaDNsbjdweHNOTWF2T2ZtYTlXS0ZjYlBXbC8xMTE5bi9ONjUvVkw3WS8yUkdndnRmbXFLbkZxelZ2ZVlVNlJOYTZrNDlINGQrVDYxRDl2SjVQVGYxRXFyRDk5L1gzcjM2bVhQTHVlRjJsTDE3UFRwY3YrOTkrYjU3emlicWRiZjc5UzFVYTBHdUxSalJ4MlpNWC9CQXQxeWxxb1FiL0owajhzdnZkVDExVTBrNkhCZDR0c3pYVG5qVTRLREpIckNFeElhWFZGM0FDak1hdGVxcFZ2d0phWm56MVZpL2NGNzd6azZlNlNLUjdWcTFVcmVmL2RkZTNuc3hQSGo3UlVjL3g2b3E1bjJwNTkrMnRFQnZFb3UxSG4vdWZsU1MzVk5LMmQ5anpOOTc5eCtxWnNmL3Vqb0R3dms4QWNmNjhpYzRITGxKR2J5UkFud28rZHhpdldlVWFkL21ESjYxQ2k1N0xMTGRKUjM2clU3ZnR3NFk2dEFEaDgrTEsrKzlwcU84a2RkZzlRTlNwTisrZlZYM1hMV1h5dFhHaTB5YTdySy9abVFvTU5WU1N0WHliNHA1Z3Q2S0tYNjlwYVNuZnhuT1JlQS9GR3pwUEE5Sml2ektwZGJBL0dLRmMzZHlGVko1Z05EaDlxejZtcmZ1dHF2cXFoSzBHKysvcnE5L3h5RlM4cXVYYkp6eENnUmcwV3psSUN3TUlsNWZxcUVsRE4vSThZdE8zZnVsTGNOSHJmWW9ubHplM3VMVTlRS2xSZWZmMTRpRFoxRThKcDFEVkY3MHAyZ2Jrb1VNVmluWmMzYXRmWk5CYWN0TURRenI2aXRSODJ0MTRUYlNORGhtdlJEaHlYaDNxSG16L2kwaERlb0o5R1BQcXh1Q2VvZUFJV1pXbTRZY3c3N0NPRWRhOWV0MHkwenFydFUyVi9OYk44eGNLQzlySHpVeUpFeWVQQmdlOThuQ3BkTWZieHM1cEVqdXNlY3dLSkZKTXpQVHE2WStlNjc5bm5ncG93WlBkcnhXaVdxYnNXdHQ5eWlJMmR0Mjc1ZEZpNWNxS1A4S1ZxMHFIVHAwa1ZIemxOSHc2bHE3azVTKzg5TkZvanIyclZyZ2F6aUlVR0hLN0xTMHlYaG9VY2tMV0duN2pGSGZTQlZlWDZhQkJyZVZ3ZWdZS2dqWWE2Kzhrb1ovK1NUOXBFM0NkWUE1ZWpodzNMTStqcDY2SkJzMzdKRmZyTUdBV3IvMzExMzNHR2ZLOTNtNG92dEdVdjRuc1RFUk4weUk4MkZZcVduVTNzOUh4czFTcDRZTThiWTNsUjQxLzZYWDVQa0pVdDFaRmJHd1VPeTgvRW43ZjN1L3VEa3laUHluTUc5NTYxYXRwU09odlpoMzNQMzNjYjJNYi9sNElvQ1ZUZkRwQ1ZMbHVpV00vYnMyU01iTjIzU2tiT0NBZ1BsK3I1OWRlUXVFblM0SXZIRGorWEUvRVU2TWljZ09FZ3FUWjRnNFp4MURQaWRxS2dvZWZ5eHgrd3EyMTk4L3JrTWUvQkJlK2xaaFFvVjdPV0RFZGFYbXFXc1ZLbVNOTHZvSXJucnpqdmwyV2Vlc1l0L2ZURjdOc2tRemlodTgyWjdGc1p0dkI0THArQXlVYnJsanVOenY1TkRuMytwSTkvMncvejVjdURBQVIwNTc1YWJiemIydnF4bWpVc2JuWCsranB5bDZuUWtKU1hwS0gvYXRXMXJmNWFhb3Y2dFRsNXZmN2NTZnFlVytQOWI1Y3FWcGVtRkYrcklYU1RvTUM1NXpWclpOMjZTV29laWU4d3BxZmFkWDVIL3doNEF2RU1ObDlTeE5TdVdMWk9Sanp4aUorcm5RZzI0MUJKMytDYlRpZXlDaFF0bG04SGptb0RUUmZYc0xwSE5tdXJJQmRiWWE4K1RFeVROWUdMcmxsbXpadW1XODlRS3E2NEdsM2VyWmRMWHhjYnF5Rm43OXUyVHBVdWRXWlZScWxRcHUycTVLV29mZW1wcXFvN3liOUVpYzVOLzNidDNMN0FpbFNUb01Dcmp4QWxKR0RwY3NnenVGL3BiV1AyNkV2M0ljRFdhMHowQWZKMzZjTHovL3Z0bDFrY2ZHUzNrQmU4eWZjeVdxZ1o5ZGRldWtwQ1FvSHNBY3dLQ2c2WFNFNDlMZ0l2SE5tVWVQU1k3UjQxeFphTEVsSlNVRkpuenpUYzZjbDR6NnpwVHBrd1pIWmx4bWNIRTkrTlBQdEd0L092VnE1ZHVPZStFbFJjc1g3NWNSL21uYnJDYW9HN1k5TC9wSmgyNWp3UWR4bVJsWk1qT2thTWxOYzdjMllSL0N5eFdWR0plbUM2QjRlRzZCNEEvR0hUbm5USnA0a1RIaS9iQWQxUnpvYmlmT2tPM1djdVc4c0dISHpvNnV3T2NTVVR0V2xMMnZydDE1STdqOCtiTFFSOWU2djdyYjc4WlBWcXRrK0V6d0pXNmRldnFsdk5VOFRWVmhNMEo2bGc0VlN2REZMVlZ3UW03ZHU4MnR2KzhacTFhY2w3dDJqcHlId2s2ek1qS2tzVDNQNVJqWDVtNzIvbGZnUUZTY2V4ajdEc0gvRXpucTY2U3laTW1HVi9pREc5cjFLaVJicGwxOE9CQjZYL0xMZEswZVhPWjlja25jdlRvVWYwSTRMeHl0L2FYc0xwMWRPU092ZU1tU3VxZXZUcnlMVjkvL2JWdU9VOTl4blJvMzE1SDVvU0hoOHY1RFJ2cXlGbTdyV1QxMEtGRE9zb2ZkVFJrRzRQSGtxcnowSjNZaHo1MzdsemRjbDczMk5nQ25SZ2dRWWNSeWVzM3lMNkpVOXpaZDk2enU1Uyt0cXVPQVBpRDBxVkx5eXN2djF4Zys3L2dIZXBjWXJkdTBxaEI0NFlORytUNmZ2Mmtib01HY3UvOTk4dXlaY3ZzNWJXQWs5U0t2OHFUeGt1QWk2ZExaQncrSWdtUGpMSlhPUG9TVlFUc3g1OSswcEh6MVBGaTZpZzAwOVIxckdLRkNqcHkxckZqeCt5Q2wwN3AzNysvYmpsdjA2Wk5qcXhVTXJhOFBTeE1icjc1WmgwVkRCSjBPQzdqK0hGSnVHZXdaQ1dmMUQzbWhOYXFJWlZHajJUZk9lQkgxQ0RteWJGajdidjRRSTBhMW5VK09scEg3bEhIdTczOHlpdlNxazBiYWRTa2lUd3diSmhkaU1udFk5bmd2NHJVcnllbCsvZlRrVHVTZnZsTkRzMytRa2UrUVMxdFg3OSt2WTZjcDA3L0tGbXlwSTdNS21Idys2eFpzMGEzOHEvOUpaZEk4ZUxGZGVTc25idDJ5ZmJ0MjNXVU4rcW02ZEpseTNUa3JBYjE2eGZJWjg3cFNORGhyS3dzMmZYNGs1SzZiWWZ1TUVmdE82LzY4dk1TYVBBNENBRHVVL3YwYnV6bjdxQVYzcVVHejdIZHV1bW9ZR3pkdGsyZWZlNDVhZDIycmRTb1ZVdjYzWFNUZkR4cmxsMDlHY2d6TmFNNitGNEpxUnFqTzF5UW1XbFhkVS9aYm42YzVoU1Z6S1VhdkRHbTlocUh1clNTb1Z6WnNycmx2TjhXTDlhdC9GT25wYlJzMFVKSHpwdjc3YmU2bFRmeENRbjVUdkt6MCszYWF3dDg5UjRKT2h4MWNOYW5jblMyQzBWSXJEZE94ZEVqSmJ4bURkMEJ3QitvMmZPSGh3KzM5K29CZjd2bjdyczljMVRlWGlzcC8rampqK1dHRzIrVUt0V3FTWXRXcldUTTJMR3k2TWNmalJheGduK3lsN3BQZU1MVmxZQ1p4MDlJd3FPamZXYXB1eXFBWmxMVkdQZHVrSlFyVjA2M25MZG56eDdkeXIvQXdFQzV5ZUNOOHZ4dVdmamhoeDkweTFtaElTRkdsL2ZuRmdrNkhITnk0eWJaTS9wSlYvYWRsNGk5UmtwZlY3QXpLZ0NjVjdsU0pmdnVOWEM2NnRXclM0L3UzWFhrSFdyUCt2SVZLK1RKOGVQbDhpdXZsRXJXUUw5WG56N3lzWlhBcThHeUU0V1E0UCtLdFdndXBhN3ZyU04zSkM5ZUlnZG12cWNqYjFPbkxKaFVxblJwM2ZKdGNYRnh1dVdNSzY2NHd0aktncFVyVithNXRvZTZybjVqNk1pOXBrMmJHcXNUY0M1STBPR0lqS1FraWIvN2ZuZk9PNjk3bmxSK1lqVDd6Z0UvMUtkM2IzdEpNM0E2dGJKaXpPalJVcXhZTWQzalBXclFlUExrU1puOStlZHl3MDAzU2YyR0RlV0txNjZTeno3N2pKbDFuRldGd2ZkS2tPRnp1UDl0LzlSbjVKUVBMSFZYTjhGTWVudkdES2xlcTVZclgwOVBtNmEvcS9NT0hqb2tweHdjaDVjb1VVTGF0bW1qSTJlcGxVanFtTFM4VU5mVFB3MjlKcTY5NWhyNzg2YWdrYUFqMzdJeU0vK3o3M3pMTnQxalRrQkVoRlI1NW1uT093ZjhrRnBhTnVDMjIzUUUvRlBWcWxYbGlURmpQREY0eW8wVFNVbXljTkVpNlgzOTlWS3ZRUU83eU55T0hUdVlWY2NaaFpRdUxaV2VmRnl0TGRZOTVtVW1KY3ZPaDBkS1ZucTY3dkVlVlpUUnlhWGJaNklTdnAwN2Q3cnlwYXF0bTZMT1FWYzNDWjJpcnJVOWUvVFFrYlBVNzFVVjNjeUx6WnMzeTRFREIzVGtIUFh6M21CZHI3MkFCQjM1ZHZpTHIrVG9wNS9yeUNEcmpWUHhzUkVTY1o3NW96QUF1SzkrL2ZwMkVnWms1NDZCQStYcXE2N1NrZS9ZdDMrL1hXU3VWcDA2MHZlR0cyVEZYMy9wUjREL1Y2SmpleW5XcVlPTzNKRzg5RTg1OFA2SE92SWV0UXo2Rk1jYzVrNVdsdU9uVEppY1VmNXF6aHpkT2pmekRPMC92N2gxYTZuZ2dlWHRDZ2s2OGtYdE85ODlZcFI5VVRDdGVMZXVFdFc3cDQ0QStKdE9uVHB4N2pseUZCd2NMRFBlZWtzdWFOSkU5L2llVHovN3pDNHNweEoxZFI0dzhMY0E2L3BYZWV4b0NTcmx6cEZmZjlzL2FhcWMzT1RzL21XbnFQT3k4N3BYdWJESnlNeDBmSWErVEpreWN2bGxsK25JV1V2KytFTXk4bENvOEx2dnY5Y3RaL1h0MDBlM0NoNEpPdklsL3Q0aGtwV1NxaU56UXV2VXRqNjBIck5uMFFINHArczk5T0VJNzFMN0lyLys2aXRwMHJpeDd2RTlhcG43SjU5K0trMmJON2Nyd0NjbkordEhVTmlGbENzckZSNTlXRWZ1eUR4NVVoSWVmRmd5cldUWWExVENlZlRvVVIyaElQVHAxVXUzbkxWdjcxNTcyZis1T0hqd29QeTVmTG1PbkJNUkVlR3BBclVrNk1pWE5KZk9PNDk1ZHFvRUZTMnFld0Q0bTByUjBWS3ZYajBkQVRrclc3YXN6UHZ1TzduODBrdDFqMjlTQloxVUJmaUwyN2ExOTFVQ1N0UTExMGpSRHUxMDVJNVRhOWZKL2xkZjE1RjNxSnRaMUcwb1dCMDdkcFNRa0JBZE9lZWtkZjA3MSswK2E5YXVkWFNmL2QvYVhIeXgwU1B3emhVSk9qeXYvTU1Qc3U4YzhITk5talF4TWdDQS95cFpzcVI4OXVtbk11VCsrKzB6ZTMyWkduUzJ2ZVFTbWZ2dHQ3b0hoVnBnZ0VTUEdpa0JMcC85ZitERlZ5WFpTdFM5Sk4xSHptcjNaOUhSMFhKeHExWTZjdGJYWDMrdFc3bXphTkVpSXpkc2JqUjQ1bnRla0tERDg5SlU5VTd1bmdKK3JSckY0WkFIWVZZQ00rbXBwMlRXUng5SmxjcVZkYTl2U2p4NFVIcjA2aVh2dmYrKzdrRmhGbDQxUnNvUEcrTHExcjZzbEJUWk9mSXh5WEs0MEZoK3NQM0RHL3IyN2F0Ynpqclg1ZXJ6NTgvWExlZW9iVk9tOXRubkZRazZQTy9ncTIvS3NaOS8wUkVBQVA5MFRkZXVzdXF2dit6WmREWFk4bFdxSU5hQWdRTmwxaWVmNkI0VVptVnU2Q3ZoRGR6ZCtuTnE5VnJaKzhKTE9pcDR4ZGplbUd0cUpWRmtaS1NPbk5XaGZYdjdocWpUMU9xaC9mdjM2eWhuaVltSnN2VFBQM1hrSEhYV2UxUlVsSTY4Z1FRZCtSTFpvcGx1bVpPVm1pWTdIeHdocWJ2Tm5vTUpBUEJkUmEyQnZKcE4vOHNhd1BYdTFjdllRTlcwOVBSMHVmMk9PMlQ1aWhXNkI0VlZZR2lvVkprMFFRTEMzVjNxbnZqNjI1SzBhcldPQ3BhcEk3NzhrWHFtMUVrWEpxZ2pVQnMyYUtBajU2amw2cjh0WHF5am5DMysvWGY3K3VpMC9qZmRwRnZlUVlLT2ZLa3k5U2tKS21QK3JsUEdnVVNKSC95QUp5dU1BZ0M4bzNMbHlqSnp4Z3hadVh5NTNIdlBQUkpWdXJSK3hIY2tKU1ZKLzV0dlpua3Y3Qm84Wlc2L1RVZnV5RkpWM1ljL1lsZDNMMmlxTmduMVNYSW53T0FNdXBxZHY3bC9meDA1NjdmZmZ0T3RuUDMwMDArNjVaenk1Y3JKcFowNjZjZzdTTkNSTHlIV0M3dktNMU1rSU1UTUhidlRuVnk2WFBZOSs0S09BQUE0TXpYclZxMWFOWms2WllwczJyQkIzbnJqRFduVnNxVlB6Y1p0MkxoUkpreWNxQ01VV3RacnR2eWR0MHRvclpxNnd4MnBjWnRsNzRzdjY2amdxSVN6U0pFaU9rSk9WQklkR2hxcUkrZDF2dnBxQ1RQdzk2dVo4ZHdVZnZzMWw0bjh1VkRWMjlYcUs2OGhRVWUrRld2ZFNxS3NEdzgzSkw3OHVoejcxZmszS0FEQVB4VXZYbHo2M1hDRC9MUm9rV3hjdDA0bWpCdG5EOHBNRERTZDl0SXJyOGkrZmZ0MGhNSXFNRHhjS2s5NFVpUW9TUGU0UTQyNVRoZzRjL3BjcUgzUDRTNVhzL2RWNWNxV05acWdxMnJ1alJzMzFwRnpWcTFhWlI4NW1STjcvL215WlRweVR1L2V2WFhMV3dLeURCNHVtSldlTHB1NnhFcnF4ampkazcyb1FRTWxldGhRSGYyVFd0YThvVlY3eVRoMFNQZWNXWU8xeXlYUVIvZWNtWlQ0NWd6Wjg4UUVIVG1yWWR3YUNRZ090bi9YMjI2OVE1SisvbFUvWWs1d3ViSlM2NnZQSk1UNnM3QTZNbitCSkF3WXBLTXpLOUVqVm1JbW4vbjNucFdSSVhHZFl5Vmw0eWJkazcyUzNicEtsV21UZGVSL1RzWEhTOXhsbmUzWHNFbUJSWXBJblFYZlNZZ0xXMEpNdUgvSUVIbnhKWE9GZys2KzZ5NlpQbTJhanJ4TmZXdzJhdExFbnVFMDVkdHZ2cEZPSFR2cXlCbE5teldUVmF2TjdTdDk1KzIzcFcrZlBqcnlOdlU3UEhic21Id3pkNjRzdEJKM3RjUnl5OWF0UnZZMzV0ZXdCeDZROGVQRzZjaFphdEJidFVZTnV6aWRLWHQzN2ZKY0FhWi9XOWV5bmFRZk9LQWpjNklualpjeTNXTjFkTzUyVFhoS0RyNyt0bzdjRVZJMVJzNmJNMXVDQ21oOHJkNlRkUnMwa0IwN2R1Z2U1Nm5WTnUzYXR0V1I3enF2ZG0xNWFQaHdIWm54MHNzdnkzMkRCK3ZJT1F0LytFSGF0R21qby8vMXlhZWZTdDhiYnRDUk05UzU1MXMyYlpMdzhIRGQ0eDBrNklXQUd3bTZrbmJ3b01SZDNVMHk5cHYva0l0czNWSnF2UDJhQkJUU2ZVa2s2TTRoUWM4ZEV2VC9SNEorWnI2VW9QK2JTZ0xVVExWSzJOV1htcWxSbFlVTkRwRnlUYzFhcVpsL0U0TklFdlQvOEpVRVBlUDRjZGw0OWJXUzduTFIzTkw5K2tybHgwZlp5KzBMd2lVZE91UzZrRmhlWEhYbGxmTGw1NS9yQ0RsUjE4VnFOV3RLbXNOSDhZMTQ2Q0VaTzJhTWp2N1hnTnR2bHhrelorcklHWDE2OTdicmxYZ1JTOXpobUJEckE3anlsSW11TE1GS1hyeEU5cjd3c2hvcDZ4NEFBUEpHVlQ2dVZLbVMzRDVnZ016KzlGUFpzSGF0L1B6amozTFhIWGRJMVpnWVk1V1JjMlB2M3IyeWN0VXFIYUV3Q3lwV1RDbzlhU1V4Z2U0TzN3OS9PRXVPLzFsd1M5MmJYWFNSYnBteGVzMGF5Y2pJMEJGeVVyWnNXV25ab29XT25KUFRQblIxQTNIeGtpVTZjazZQN3QxMXkzdEkwT0dvNG0wdmxqSjN1YkFmM1hvVEgzenhWVG4reDFMZEFRQ0FNMVRSb0JiTm04dXp6endqNjYxay9hZUZDMlhRWFhjVlNFWDR6TXhNK2ZycnIzV0V3azZOczBwYzAxbEg3bEFyekhZT2YwUXlrZ3JtVklIYXRXdnJsaGtuVHB5d3Q3emc3RlNoeld1NmR0V1JjOVNLdEpTVUZCMzkwNTQ5ZTJUTGxpMDZja2I1OHVYdGxSTmVSWUlPeDVXL1o1QkVORGQ3dDFQSlNrdVRuZmM5SUdrdUxLa0hBQlJPNm9pblpzMmF5VFBUcHNuV3padmxwUmRla05xMWF1bEgzYkhrano5MEM0V2RPa29yK3VGaEVoVGw3czJpdEIzeHNudmk1QUpadWRqQ3dJenQ2VlJ5dmludTdOdHg4Ui9YWG51dDR5ZGlxSlZDMjdkdjE5RS9xVG9oVHE5dzZOSzVzOUdDZXZsRmdnN0hCWWFGU3N3elV5U29iQm5kWTA2Nmxad25ESHRZc3RKWm1nUUFNRXNkK1RUZ3R0dGs1WW9WOHVUWXNSSVJFYUVmTVV2dGlXY0pMdjRXVXJhc1JJOGU2ZnBTOXlNZmZ5TEhmak8zRnp3NzFhdFZNM3JVbWxxbDhzTVBQK2dJWjZOK0g4MmJOZE9SYytaa3MxTEk2UlZFNmppNjNqMTc2c2liU05CaFJHaUZDbEw1NlluL0xTQm5VdEpQdjhxKzUxL1VFUUFBWnFsWmRWVXQrZk5QUDVVaUxoU25WVVhzZkhVSnJoY3I0L3VEa2xkZUljVXVkYmFRNU5uWVM5MkhqWkQwdzRkMWp6dlVscFA2OWVycHlBeVZISHFoS0tTdk1GRVE5RXlGQUpPU2toemZmMTdSeWxGYXQyNnRJMjhpUVljeHhkdGNMS1h2dUUxSFppV3EvZWkvc3dRUUFPQ2VEaDA2eVBCaHczUmtqcHJoVS90a25hYUszem05VlBYZjJOdHJSa0JRa0ZSNi9GRUpMRkZjOTdnamZkOSsyVFYra3F0TDNZT3NuL1hTVHAxMFpNWmZLMWZLdG0zYmRJU3p1ZUx5eXgwdm5ybDh4WXIvT1E5ZEhYK3BLc2M3cVZ1M2J2YjUrbDVHZ2c1enJBLzlpdmZmSXhFdG5WOEc4Mi8yZnZRSEhuTDlyaTRBbUtBU01pZXBtU0duajhYQmZ3b20zWGJiYmNhWHVxdmYzNzhIcms1UWcxVFRDYnJKSTl3S3U5RHk1YVg4ZzBOMDVKNmpuMzhwUnhmOXFDTjNYSEhGRmJwbGhscnA4WlpIajl6eW9obzFha2pEQmcxMDVBeDExT1d1M2J0MTlCK0xGeTkyZEdXRHV0blR6K0h6MUUwZ1FZZFI2cHp5S3BNblNsQ3BrcnJISEhVdWFNSkRJNDJmWncwQXBoMC9mbHkzblBISnA1L0srZzBiZEFRbmxTNVZ5dDZUNll0TUorZktab2VyTCtPZnl2VHFLUkZOTDlDUlN6SXpaZGRqWXlYOTZGSGRZWjQ2VlVFZDhXWFNqSGZlc1pkVTQrelVQdTRiKy9YVGtUUFVUWkxmZnZ0TlIvOHhaODRjM1hKRzFhcFZwZEg1NSt2SXUwalFZVnhZNVVwU2FlcFQ5bklzMDA3TVd5RDczM2hiUndEZ201eGMwaGNmSHkvM0RSNnNJLzl5OE9CQk9YQ2dZRS95VUFOVnRTZmRORFh6NDdUdzhIQUpOSnlrcTJXck1DY2dPRWdxajM5Q0FpTENkWTg3MUtUSXprZEgyOG02RzlSeTZsNkdDM3VwNDd6R1B2R0VqZ3FlMHl1cG5LYU9LWE82RXZyY2I3L1ZyZi9jcVA3bFh3bDdmbDE3elRXZXJ0NytOeEowdUtMRUplMmsxSzAzNmNpc0ExT215L0hGemhhVUFBQTNyWEFvcVZIN2YvdmRlS01rSmlicUh2K2hrdk91MTE0cnpWcTBzQ3N3RitSZzF2UnVYSldjRnk5dVpxOXg0OGFOZGNzTU5TTkc4UzJ6SW1yVmxITDNEckszRnJycDJMZmZ5NUg1QzNSa25xcThiWHJWeDZ1dnZTWnIxNjNUVWNGUTI1SGVmZmRkdWVubW16MWRaTEZhdFdwU3ZYcDFIVGxERllyNysyZGV0V3FWb3lzYTFNM1VXL3IzMTVHM2thRERIZFlGdGVLUSt5UzhTU1BkWWM1L3FvdytMT21IaitnZUFIQ09HaUNXS2xWS1IyYW9ZN1h5bTlTa3BLVElMYmZlNm5nRlhDOVFNeXZYeHNiYXo1UGFzOWpGU3RUNzMzS0w3UDdYL2tVM3FMM2hwbStBaEFRSFM0a1NKWFRrck1xVkt1bVdHY3YrL05NKzR4aG1sZTEvbzRUVnE2TWpsMlJteWE2Um95WE5wVlVzelpzM04xN04vWVNWRUtxYm1rZGRYTDcvTjNYTlg3bHlwVng2K2VWeXk0QUI4dkdzV2ZMc2M4OTU5Z2FYV2puVTcvcnJkZVFNZGVOMTE2NWRkbHNsNjA3KzdPZlZyaTIxclM5ZlFJSU8xd1JHUkVqTWMxTWwwTkFzd09uU2QrMzV6L25vSGw4ZUJNQTNtUzRLdG5yTkdsbTdkcTJPenQzSmt5ZmxaaXM1LzlMaC9YdGVvS3FaOSs3YlY1Yjg4ZjhuZDZnendqLzg2Q05wZk9HRjh0U2tTVVlxbm1mbnA1OS9ObjVqb0VtVEpzYVcwVmN5bktDcjM4WGpZOGJrZWFETk1XMjVFeGdlTGxVbVBHblgvbkZUeHNGRHN2T3hzU3E3MUQzbXFKVWtRMXpZcnJQR3V2YjI2dFBIOFZvZ09WRko2VzIzM3k0dEw3NzR2OGVOcWZmTXFOR2paZjc4K1hic1JkZkZ4anE2L1ViZDhGUTM5UlNuejZidjBxV0w0NVhuVFNGQmg2dkNLbGVXU2xNbTZNaXNFL01YeVlGMzN0TVJBRGpIMUd6bTZjWlBuSmlucEVZTjlHSzdkN2NMdy9rYk5XRHVlOE1OTWkrYmdkdVJJMGZrMGNjZWt6cjE2OHUwNmRPTnoyeXIvZStEaDVpdm9uM2hoUmZxbHZOYXQycWxXK2JNZk84OWVlT05OODdwOWJ4cDB5WVpQSFNvdEd2Zm5rcnd1UlRab0w1RTNlTE9kc0xUSFo4M1h3NTk4WldPekZJSllhWG9hQjJaczJEaFFtblRycDJzVzc5ZTk1aXhkZHMyR1RaOHVOUnIwRUJtdnZ2dS85eVFVcTk5dFRwbysvYnR1c2RiMUJMM2VuWHI2c2daMzgrYloyL1ArdkhubjNXUE0yNnpua2RmUVlJTzE1VzhySk5FM1RsQVIyYnRuelJWa2xhdDFoRUFPTVBwNDJYT1JDWFlMNzM4Y3E2VEdqWHo4Tjc3Nzh0RnpadkwvQVh1N1F0MWkxcXlQMkRnUVBuMnUrOTBUL1pVa2IzaER6OHNOV3ZYdGd2a0xWMjYxUEZqNXJaWkErYk9YYnZhQTJ5VDFMNUprOFd4YXRXcVpYOFBrOVJ6Zjg5OTk5bUp4dXJWcTgrWWNLdlg3MFlyS1gvbm5YZmt5cXV2bGtZWFhDQXZ2UGlpdlkxQkpTN0loWUFBcVhEL1BSSmF2YXJ1Y0lsMWpkb3o3aWxKZFdFclE3Rml4ZVRSa1NOMVpKWkt6bHUyYm0ydnlqbnM0REcrYW9XVG1oVlhLNEhxTjJ3bzA1OTlWazdtY0l6aS9nTUg1TnJycm5OMVpWQnVxWlU5dlh2MTBwRXpWTjBLZGMxMnNxN0lCZGIxUkIwTjV5dEkwRkVnS2d5K1Q4SWFtTjFIcEdSWkY4R0UreDdnZkhRQWpsTEZjVXhUaWZuUUJ4NlFJVU9IMnJNbmFobjN2NmsrZFhhc0tpalV0Rmt6dWVXMjJ5VHg0RUg5cVA5UXladjYyVDZiUFZ2MzVFNnk5Um1nYm5LMGJkOWU2alpvSUk4OS9yZ3NzeEkrTlR1VGw5VUphc0NvS2oxUGZPb3BhWExoaGJMaXI3LzBJK1pVcmx4WnpyY0c4YWFvR2JDU0pjMGZoWnBoUFhjZmZQaWhORy9WU2lyRnhOaEp1TnFHMGNkS1VscGRmTEZVcmxwVkxyQ2UwOXNHRHJSdk1KMytlbGUvTjdVM0ZXZW5scnBYR2pkV3JRZlhQZTdJT0hSSWRvNGNMVmtaNXJjV1huLzk5VWJmRTZkVHliUmFsVk8zZm4xNWNQaHdXYjU4K1Rrbnl1cTFyRmJ6cU8wd2FsVkluWHIxNUtvdVhlenIyWm11NjJleWJ0MDZ1ZU91dXp4WjJWMGw2RTdlNU51d2NhTjg5dm5uZWJwR1owZFZiemQ5STlKSkFkWVA3OXhQL3krcVdOZW1MckdTdWpGTzkyUXZhdEJBaVI0MlZFZi9sSm1hS2h0YXRiZmYvRGxwc0hhNUJFWkc2Z2gvUzN4emh1eDV3c3l5OG9aeGF5UWdqL3M1VG0zYkxsdTZYaWVaU2NtNng1eWlWMTRtMVo2ZjdzcFJiMjVRVlZNVEJnelMwWm1WNkJFck1aUFAvSHZQc2o0UTRqckhTc3JHVGJvbmV5VzdkWlVxMHlicnlQK2NpbytYdU1zNkd6OC9QN0JJRWFtejREc0pLUk9sZTN6TC9VT0d5SXN2dmFRajU5MXREVHltVDV1bUkrLzdhK1ZLYWQ2eXBhTURpSnlvNDdCcVdJbVVPZ3Y0NzJSS0xlZitmY2tTMmJscmw2dDdKYlB6enR0dlM5OCtmWFRrSERWenJoSTVwNWJzcXlKL1phS2k3SnNzSFR0MGtQUFBQOTh1UEZXNmRHbTdVcnJhVDZtKzFNQlpmYW1aTTFXSTdwZGZmcEh2dnY5ZS9zekRBRDAvSG4za0VSbHRKUWdtWGR1dG0zeHoydkZHWGpUNHZ2dGs4cVJKT25MV3VwYnRKTjJGUW1mUms4WkxtZTZ4T2pMSXVpNGxQRFpHRHIvL2tlNXdpZlhlcXZUVU9JbHk0V2Y4MlhvL3FtSnFCWkd3bGk5ZjNpNDQxckpGQzZsUXNhSjliVmJYanJEUVVFbTNyaGxxbWJxNnFhcUtJOGJGeGNtdml4ZkxnZjM3NWVpeFkvcHZ5THVuSmt5UW9TNXNxemtYNm5mUXVrMGIrOXJvbEwrdndVNVExL3kxcTFiNVRJRTRoUmwwRkpqdzZ0VWsycnFRaXd0M3RFNThPMDhPekppcEl3RElIelU0aTdDU1pyZW9HV1MxM1BLdEdUTmsyalBQMkYrcXZYN0RCazhrNTZhb2dhN2E0KzNrZm5wMVUrVkFZcUs5ZFBxcHlaT2wzMDAzeVlYTm1rbTFtaldsZE5teVVyVkdEWHZaYVl5VndLdTQ1bm5uMmZ1Z0gzbjBVZm54cDU5Y1RjN1ZUWU43NzdsSFIrYjBNWEJqeFdrdnZmS0tiTEtTSGVTQ1d1bysrRjRKS2xkV2Q3akVlbS90blRoWlV2ZnQweDNtWE55NmRZRWRtYVZXTGFrYkJKT2ZmbG9lZVBCQnUrWkhwOHN1a3phWFhDTHRPM2EwYnh5bzdUaHE1bjNHekpteWVmTm1SNUp6WmZUamo5djc0NzFFelV4MzY5Wk5SODV3S2psWExtalN4S2VTYzRVRUhRV3ExRlZYU0ttK3p1NWR5YzcreWRNbGVXM0JubTBKd0Q5RVJrWktodzRkZEFRVFZISisvK0RCOHZxYmIrb2VkNmlWQ2ZFSkNZNE5xUE5qMEoxMzJrbTZhWmQyNmlURml4WFRrVGVwbFJRUFBmeXdhNnRXZkYxSVZKUlVHalBLbFVtUTAyVWNPaXdKd3g4eHZ5ck4rcm1lbmpMRjhRSmxYbmZLZWgvYzFMKy83Tml4US9kNHc1V1hYMjdQVkh2UkRRNGZCZWNHRW5RVUxPc0NHejFxaElTZmI3N2dVdGFwVTVKdzcxREpPTzY5SWhzQWZFL1BIajEwQzA1VFN5WWZIRFpNWG4zOWRkMVQrRFNvWDE4ZWZ1Z2hIWmxWcGt3WnVleXl5M1RrWFY5Lzg0MHMrdkZISGVGc1NsemFTWXBkM2tsSDdrbjZkYkVjbkdYK0ZJa2lSWXJJekJrejdNSnhoY20rL2Z2dFdYc3ZyWjVxMUtpUko0dXdoWWFHU3RldVhYWGtPMGpRVWVBQ3c4SWs1b1ZuSkxCWVVkMWpUdXEyN1pMdzBFaDdEellBNUllYWRWUURSRGhMTFcxOGN0dzRlZkhsbDNWUDRhTUdsYTlhUDMrWTlmbm9Calh6OWNqRER6dDZuckVKYXZaOCtFTVBjZXhhTGdVRUJrcmxzYU1sS01yOEtveC9zSDVQZThaUGtsTTc0bldIT1kwYk41WTNYMy9kZnM4VUpxdlhySkZCOTl6ajZGTHcvRkFyR2t6VUlNbXZwaGRlS05XcXVueXFnUU5JME9FSllWVXFTL1NUajlzejZxWWQvMjZlSFB6d1l4MEJRTjZvUWtHeER1KzdNeTBxS2tvdWFkZE9SOTZqRXJCSmt5Zkx1QWtUQ3UxU1pwVWtQek50bWpSdjNsejN1RU1WeSt2YXBZdU92RXNWYUh4bkpqVmxja3N0ZGEvdzBJUDJ2blEzWlNVbnk4N2hJeVRMaFNKdXFrTDMrQ2VmOU93U2ExTSsvT2dqbWZMMDB6b3FlRjA3ZDdZVGRTL3BmK09OUHZtNklFR0haNVRxMmxsSzlycE9Sd1paSHhaN3gwK1M1SFhyZFFjQTVNMndCeDd3bVprYjllOTg3ZVdYN1Vyd1hxVUdVbDJzUVY2dG1qVjFUK0dpQnJjUER4OHV0OTE2cSs1eGozcnV4ejcrdUd1ejl2bnh4TGh4ZHEwQTVFNVU3TFZTcE8zRk9uSlA4ckxsY3VDdEdUb3lSNzEyVlRIRnh3MmZkdUJGVTZkUDk4d1JoT29tWDZYb2FCMFZ2S0pGaThwVlYxMmxJOTlDZ2c3dnNDNncwU05IU0ZnZDg1VVdzNUpQU3Z4ZDkwbUdIMWMvQm1CZXZYcjE3RHYwdmtBTlh0VmV2SmlZR04zalRXcVE5L3ZpeGZiWnVvVnBSaXc0T0ZoR1BQU1FQRFpxVklIOTNPcjFySTUxOC9yenZudjNiaGsvY2FLT2NGYUJnVkpwOUVnSmlJalFIZTdaLyt5TGtoSnZmcW03dXJrMTR1R0g1WldYWHBMSUF2ZzVDNEphdnIxdy9ueDdaWlFYaElTRXlJMzkrdW1vNEYzVXRLbFVyRmhSUjc2RkJCMmVFbFMwaU1TOCtLd0VGamRmOENNdFBrRjJqaHh0NzVVQ2dMeFFpY3lUVHp3aFZTcFgxajNlby82TkkwZU1rQWNmZU1DTzY1eDNudjJubHhVcld0UXUvdlRCdSs5S3hRb1ZkSy8vVXVmY1B6dDl1bjNlZVVFdkVYMWc2RkRwMEw2OWpyenJSU3NSMjdoeG80NXdOdUhWcWtuNVlVUHN5UkEzWlo0NElmRkRoMHVtQzNVRDFMWHUxbHR1a2RtZmZTWmx5N3A4eEp5TFNwUW9JVStPSFNzL0xWb2s5ZXZWMDczZWNGMXNyR2RxV1Z6ZnQ2L25ielptaHdRZG5oTmVvN3BVZk1KS25GMFlwQnliTTFjU1AvaElSd0J3N3RReFdLKy8rcW9ubDdxcldWazFJM3I2ckd5NWN1WHNQNzFPL1h1N2QrOHVmeTVkS2pmMTYrY1RTNi96b21yVnF2TE5uRGx5KzRBQm5oaE1xbG13OTJiT2xFYm5uNjk3dk1rK2RtM0VpRUpicXlBdnl2VHBMZUVONit2SVBTZi9XaVVIM25wSFIrWjE3TkJCZnYvMVYvdXNkRjlOME01RUpiNlhYWHFwL1BuSEgvTFE4T0dlL014UnEzQzhNR3V0S3Z1cjJnUytpZ1FkbmxTcXk5VlNzcWNMKzlHdEQvWjk0NTZTazNHYmRRY0FuTHVPSFR2SzFDbFRDbnoyODNScW1lY0x6ejRyajQ0YytZOS9WNmxTcFh4cTBLcG13bDUvN1RYNStjY2ZwWFdyVnA1Nmp2TkRKY0szOU84dlMzNzdUZHEyYWFON3ZVRWR1L2JGN05tZVQ5TFZzV3Z6NXMzVEVjNG1NQ3hVcWp3MVhnTGN2dGxsamJVT1BQK1NxMk10dFpYbnU3bHpaZHdUVDloN2tYMlp1bDQzYU5CQXZ2anNNNW56NVpmMlRUMnZVamNOZW5idnJxT0NvNjZwNnJQT1Y1R2d3NVBVMFNEcWZQU3d1dWFYWW1hcS9laUQ3cGVNcEdUZEF3RG5idUR0dDl1VmhMMlFRS29sOTNPKytrcHV2ZlhXLy9uM3FKa0ZWWUhlbDZnQjZnVk5tc2lDSDM2UUw2M0VVU1hxdmt6dGpmemVTaDVlZWZsbHord2YvYmZLMW10SUpUaHFOdEtMMUd0Q25VaFF5Y1BiUzd3bzRyemFVbWFnKzBVSU01T1RKV0hZdzVLWmxxWjd6Rk9yYm9ZOStLRDhzWGl4ZEx2bUdwK2NUYTlicDQ2OC9jWWI5bzI4SzY2NHdpZHVVSHJodURWZnIyRkNnZzdQQ2lwU1JLcE1teXlCTHB3em5McDVpK3g2Ykl4ZDRSMEE4a0lOQnRUKzNiZGVmOTNlUTEwUTFMK2gzL1hYMjh2Q3M1dVZWVE1jQmZYdnl5KzF4Rk1OVWhjdFdDQUw1czJUWGoxNytzeFo5T3Azb3hMejk5OTlWMzc5K1dkcFkvMSt2RDZBVkRQcGFzWk9GYThMOTlBV0ExVWM2NFAzM3BQdnYvMVdHdFIzZjhtMlQ3TmVjK1h2dWxQQ3JFVGRiYWRXcjVWOXo3Mm9JL2ZVcmwxYlpuMzhzZnk0Y0tGY2Nmbmxuai92WDFITDh6OTgvMzFaOGVlZmNyMTFUZmVsTFQ1cW1YdjE2dFYxNUw3aXhZdjd4SkdST1NGQmg2ZEYxSzBqRmNlT3NsNnA1bCtxUnovL1NnN08va0pIQUpBM2FqQzFkTWtTVjg4YlYzdk4yN1Z0S3o4dldpUnZ2dkZHamt2NzFOSnFOWXZ1eTFSaTI5YjZlZFZlNmExeGNmTFV4SWx5NFFVWDJNK0QxNmlDVGoydXUwNStYTERBVHN4Nzl1amhVOHYwMWV0bDdKZ3hzbVR4WXVuVXNXT0JQY2Vxa0o3Ni9wOTk4b245UEhhM25sTi8yZTdnTnJYVXZkSzRNZXJDb1h2Y2svanFHNUs4dm1DT3VXM1ZzcVY4OWNVWHNselh0U2pqc2RVcmF1KzJPbUx4THlzcFY2dUYxR3ZjaTllMHMxSHYxZGh1M1hUa1BuV2Q4UG5QdUN5RDFUV3kwdE5sVTVkWVNkMFlwM3V5RnpWb29FUVBHNnFqZjFLVkh6ZTBhaThaaHc3cG5qTnJzSGE1QkVaRzZnaC9TM3h6aHV4NVlvS09uTlV3Ym8wRUdMNTRaR1ZtU3NLSVIrWG94NS9wSG5NQ3JJRkl6YTgra1lnNmRYU1BOeDJadjBBU0JnelMwWm1WNkJFck1aUFAvSHZQeXNpUXVNNnhrckp4ays3SlhzbHVYZTJWRFA0cTdjQUIyVFZ1b3ZXY21GMDlZUStJSG50VWdsMDRvY0NFR2UrOEkvT3NBWU1wbDNicUpEZjM3NjhqLzVCaHZjKyttak5IeG93ZEsrczNiTEJqcHhXeFB2TlVvdnJJd3c5TDgrYk5jejB6cENwZy8yWWxYRTRhZE9lZDBycDFheDI1VHoyL08rTGo1UXRyQVA2NTliVjIzVG81ZXZTb2Z0UTk2dVpCeVpJbHBkbEZGOW1KZVRkcm9PckxleUZQbDJsOUhxOVlzY0krNG16QndvVnk0c1FKL1lnWmF0YXdSbzBhOXA3Vy9qZmRaQys3TjVHVUo0d2NMZW5IanVuSW5LanIrMGp4VmkxMFZQRDJ2L20ySksxWXFTUDNoSjlYV3lyZWM1YzltMStRMVBWaDd0eTVNbVBtVFBseitYSTVmUGl3ZnNRZDZucXRpb3gydU9RU096RnYyYktsUlBwSkhxTSs4OGFOSDYrai8zVXlPVm0rdHA1N0U1K0w2c2F0V2wzbHkwalFDd0ZmVDlDVkRPdURjL04xdlNWMXl6YmRZMDVZN1ZwUzY4dFBKREE4WFBkNER3azY0RHZTMHRMa2o2Vkw1WlZYWHBHNTMzNHJ4NjJrSnErRGtrQnJRS3RtTkZVeXJnWWduYSsrMms1YXZMNVUybTFxYUhQdzRFRlp2WHExZlB2ZGQvYmdlOGtmZjBpNk5TNVJYMDVTTTF4cW9LMFM4aGJXNytWcTYzZWlpcXVwSk4yZnFiUEl2N0VHMkxNKytjUitiaytlUEdrbjhQbWhYdHRxeFVGcksxRlJTMVRidFd0bkY4VHloU1hKOEcxSGpoeXhyeE9xOE9EaXhZdGw5Wm8xOXJYQ3lRUlNYU3ZVbGh4MXJiajhzc3VrZmZ2MjloN3ppRUp5YnZ2cFBwczlXM3IzN2FzajU2am5kMWQ4dk05c2Zjb09DWG9oNEE4SnVwSzhicjFzN1htRFpDV2JMK1pXc25jUHFUTGhpUUsvdTVzZEVuVEFONTA2ZFVyV1dBTS9sYkQvL3Z2dkVwK1FJSWxXSWhsdkRTaFVnbk02dGYrM2ZMbHlkaEV4VmZTdFdiTm0wckJoUTJuY3FKSGZKMzhtcEZwamlaMDdkOHFhdFd2dFB6ZkZ4Y25XclZ2dGdibWFTVXRLU3JKbjRNOUUvUTZpU3BlMm4zZTF2N0dhbFRUV3ExdFhxc1RFMkwrVHlwVXFGY3BCOXQvVWM3ZldlbDVYcmxvbDY5ZXZ0MmZQMUd5a2VsNjNiTmtpL3g1b1ZvcU90bWNPMVpjNjUvNkNDeTZRbWpWclNpUHJ0UjFUcFFvSk9RcWNXaDJ5YmRzMmV5V091bDZvbTFESGpoMnp2OVExWS9lZVBaSjhodkdvU2d5aksxYTBielNwNjRXNmdhcHUyS21xOHVkYjE0b3ExdXRiM1lncXpOUm5YWXZXcmUxcmhkUDYzWENEdlBYR0d6cnlYU1RvaFlDL0pPaUtPck44enlPamRXUldwV2NtUytscnV1cklXMGpRQWY5eHRvOWhac2ZOeSsxUWlOL0Z1Y25wZWVXNWhLL0t6ZldDMTNmMlhudjlkUmwwenowNmNvNjZzZmZEZDkvWkJUaDlIUWw2SVhCazloZHk0T1hYZGVTc1dsOS9iaVhvTHQ3cHRsNnV1NmM5S3ltYnp2NmF5cS9BWXNXazhwaFJFdVRCMXhRSk9nQUFBSHpKdm4zN3BQRUZGOGpCcytSMGVhRzJDL3kxZkxsZnJNQWhRUWQ4RUFrNkFBQUFmSVZLT1crNTlWWjU3NE1QZEk5ejFJcUYxMTU1eFM0bTZRODRud0lBQUFBQVlNejdWbUp1SWpsWHlwVXJKOWZGeHVySTk1R2dBd0FBQUFDTStQWFhYNDNzTy8vYm5RTUgrdnpaNTZjalFRY0FBQUFBT0c3VjZ0WFNxMCtmTTFhOWQwTEZpaFhsdm52djFaRi9JRUVIQUFBQUFEaHEvb0lGY3ZrVlY4aitBd2Qwai9PR1AvaWdmZnlsUHlGQkJ3QUFBQUE0SWkwdFRaNS80UVc1TmpiV1NNWDJ2OVd0VzFjRzNuNjdqdndIQ1RvQUFBQUFJRjlVcGZiMTY5ZkwxVjI2eUpBSEhwQ1VsQlQ5aVBOVTVmWXBreVpKYUdpbzd2RWZKT2dBQUFBQWdEemJzR0dEM0Rsb2tGellySmtzK3ZGSDNXdE9yeDQ5NUlyTEw5ZVJmeUZCQndBQUFBQ2NrME9IRHNuc3p6K1h6bDI2U0tNTExwQTMzM3BMMHRQVDlhUG1SRmVzS005TW42NGovME9DRGdBQUFBRElVVkpTa3F4YnQwN2VldnR0aWIzdU9xbGVxNVpkb2YzN0gzNndsN2U3SVR3OFhENTQ3ejJKaW9yU1BmNkhCQjBBQUFBQUlKbVptWExxMUNsN2RuekR4bzN5MVp3NU11cXh4K1R5SzYrVVduWHEyRXZZQjk1NXA4ejU1aHRqUjZkbEp6QXdVQjU3OUZGcDNicTE3dkZQSk9nQUFBQUFVTWlkT0hGQ1dyZHBJNDJhTkpFYXRXdkwrWTBieTNVOWVzakVTWk5rNGFKRmtwaVlLQmtaR2ZxL2RsK2ZYcjFrNkpBaE92SmZKT2dBQUFBQVVNZ1ZLVkpFZHU3YUpkdTJiN2VYczN0SjJ6WnQ1T1dYWHBLZ29DRGQ0NzlJMEFFQUFBQ2drRk5IbDdWdTFVcEgzdEgwd2d2bDAxbXpKQ0lpUXZmNE54SjBBQUFBQUlEVU9lODgzZktHaTF1M2xybmZmQ09sU3BYU1BmNlBCQjBBQUFBQUlNMmFOZE90Z3FWbTg2L3Awa1crbmpOSFNwVXNxWHNMQnhKMEFBQUFBSUJVcVZ4WnR3cU9TczZIM0grL2ZQakJCMUlrTWxMM0ZoNGs2QUFBQUFBQWlZbUprV0xGaXVuSWZTVktsSkIzWjh5UXB5Wk9sSkNRRU4xYnVKQ2dBd0FBQUFDa2VQSGlFaDRXcGlQM0JBWUV5R1dYWGlyTGx5NlZYcjE2NmQ3Q2lRUWRBQUFBQUdEUFdydTlEejI2WWtWNTZjVVg1YXN2dnJCbjhBczdFblFBQUFBQWdLMUJnd2E2WlZaa1JJVGNQV2lRckZ5eFFtNjk1WlpDY2NaNWJwQ2dBd0FBQUFCc0Z6WnBvbHRtaEllSHl4MERCOHJLdi82UzZWT25Tc2xDVnFYOWJFalFBUUFBQUFDMk9uWHE2SmF6cXNiRXlOakhINWZOR3pmSzg4OCtLOVdxVnRXUDRIUWs2QUFBQUFBQVczUjB0QlF0VWtSSCtWUEorcnY2WFgrOWZEOTNybXhjdjE1R1BQeXdsQzlmWGorS015RkJCd0FBQUFEWWloWXRLdVh5bUVTci8yK2Q4ODZUTysrNFF4Yk5ueThiMXEyVHQ5NThVenAwNk1BZTgxd2lRUWNBQUFBQTJNTEN3aVNtU2hVZG5WbEFRSUJkNUUzdEgyOS95U1Z5MzczM3l0eXZ2NVlOYTlmYVJkK2VlK1ladWZqaWkrMzk1amczSk9nQUFBQUFnUDlxMmFLRi9XZTVzbVdsY2VQRzByRkRCN2t1TnRaZW9qNXp4Z3laUDIrZXJMZVM4VjN4OFRMdnUrL2s2Y21UNWRKT25lemw2OHlVNXc4Sk9nQUFBQURndjBZOStxaWtuVG9sdXhJU1pObVNKZkxkM0xueTBRY2YyRVhlK3ZUdUxXM2J0TEgzcW9lR2h1ci9CNXhDZ2c0QUFBQUErQzhTNzRKRGdnNEFBQUFBZ0FlUW9BTUFBQUFBNEFFazZBQUFBQUFBZUFBSk9nQUFBQUFBSHVBakNYcUEvYit6eVR4MVNyY0EvNWFaZkZLM2NoREUvVGNBQUFEQWwvakVDRDR3TkVTQ2loWFRVZmFTVnEzUkxjQy9uVnkyWExleUZ4SlZScmNBQUFBQStBS2ZtV0lMdjZDeGJtWHY2TmR6ZFF2d1gxbHBhWExzaC9rNnlsNW81V2pkQWdBQUFPQUxmQ1pCanp5L29XNWw3OFM4QlpKKzZKQ09BUDkwN0pkZkpYM1BQaDFsTDdKRk05MENBQUFBNEF0OEprRXZlbkVyNjErYjgwYjBqS05IWmZkVFQ0dGtadW9ld0w5a0pDZkwzdkdUUkxLeWRNK1pCWlV2SitIVnF1a0lBQUFBZ0Mvd21RUTlyRnBWQ2ExZVhVZlpPL3JwNTVMNHlXYzZBdnhIVm5xNjdCbzVXbEkzYjlVOTJTdmVxWU1FQlByTTJ4c0FBQUNBeFdkRzhJR2hvVktxVjNjZDVTQWpRL2FPZkZ3T3ZQT3VaRmx0d0I5a0pDVkovSU1QeTlFdjV1aWVIRmlKZWFuZVBYUUFBQUFBd0ZmNDFCUmJWTi9lRWxTcXBJNnlwMllhOXo0K1RyYmZmcGVjMnJxTkplL3dXZXExZk95blgyVHp0VDNsbUVyT3o3SzBYWWxzY1pFVXlVWE5CZ0FBQUFEZUVwQmwwVzNIcWVSaVU1ZFlTZDBZcDN1eUZ6Vm9vRVFQRzZxajdPMS81WFhaTjNHS2pzNHVJRGhZSXBvMWxhTHQyMGxFclJvU1ZMYXNmZ1R3cUt4TVNZdmZKU2MzYnBUajMvOGdLWnMyNndmT0xpQTBSR3A4K29GRU5zdzVRVmVyUytJNngwckt4azI2SjNzbHUzV1ZLdE1tNndnQUFBQ0FLVDZYb0dlbXBzbm0ySjZTc202RDdnSHd0MUkzWFMrVnh6eW1vK3lSb0FNQUFBRGU0M05WcEFKRFE2VEsxRWtTV0tTSTdnR2doTld2SzlFamh1c0lBQUFBZ0s4eG02QUhCRmoveS9sb3RQOUtUOWVOczR1b2M1NVVtajVKQWtKQ2RBOVF1QVZYS0MvVlhuOUpBc1BEZGM5WnFIVXp1Vnc4bzdhSkFBQUFBRERQZUlJZUdKbTdtZTdjSEIxMXVwS2RPa3JGOFdQc1BiZEFZUllVVlZxcXZmMmFoRmFzcUh2T0xpc3RWVEtPSDlkUnpvS3JWOVV0QUFBQUFDWVpUZERWT2N6QnVhaTZycHphc1VPM2NzbEsvcU42WENkVlhubEJBb3NYMDUxQTRSSmFwN2JVK09SOWUxWEp1VWcvZEZqUzl4L1FVYzVDS2xUUUxRQUFBQUFtR2QrREhuWitmZDNLV2RxV2JaS3ljNmVPY3E5RSszWlM2OHRQSktKNVU5MEQrRCsxN0x4azMxNVM2N09QSkx4YU5kMmJlOGNYL3k2U2thR2pIQVFFU0ZpVnlqb0FBQUFBWUpMeEJEM2l2TnpQN0IzKytEUGRPamRoVmF0S3pmZmZrZWhKNHlTa2FoWGRDL2lob0NDSmFIYWhWUC80WGFreWJvd0VSVWJxQjNKUFZYQS8vUEVuT3NwWllFUzRoRlUvOXhzQUFBQUFBTTZkMFdQV2xMVEVnN0toUlZ1UnpFemRrNzJReXBYa3ZPL25XRWxCaE80NWQ1a3BLWExzeDUvbDREdnZ5cW5WYXlYeldPNzIyUUtlcGJhS1JKV1d5Tll0cGN5QW15V3lYajBKc0JMMXZFcGF0VnEyZGU5ckg0TjROcUUxcWt1ZEg3NnhaOUlCQUFBQW1HVThRVmMyWGR0RFVsYXQwVkhPeWc2NVZ5cmNkN2VPOGlmOXlCRTV1WEdUSkM5ZklTbWJOa3Y2c1dPU2xacW1Id1c4S3lneVFvS0tGNWZ3Q3hwTGtTYU5KYXhhTmJzdnYxUlN2cVh2VFhKeTJYTGRrN1BTdC9XWFNvK08wQkVBQUFBQWsxeEowUGU5L0pyc2YrcHBIZVVzTURKU3FuL3luajFMQ01CWkI5NTVUL1krL21UdWpsZ0xDcFNhWDM0cWtmVjVMd0lBQUFCdU1MNEhYU25aK2FwY0w4bk5URTZXK0R2dnkxUEJPQURaTzdyd1I5azNibUt1eno4UHExVlRJczZyclNNQUFBQUFwcm1Tb0tzcTBFV3Z2a0pIWjVjV255QmIrOXdvSnpkdjBUMEE4c3hLeUk5OCs3MGszSFh2T1czeGlMcmxKcnRhUEFBQUFBQjN1SktnSytYdXZQMmNCdnZwdS9iSTF0amVjdWp6TDNOVnpBckEvOG80Y1VKMlRaZ2tDZmNNa2F5VVZOMTdkaUhWcWtxcDJHdDFCQUFBQU1BTnJpWG9rZlhxU3ZIWXJqcktuVXlWWEF4OVNMYmNjTE9jV0xxTVJCM0lwY3hUcCtUZ3A3TWw3b3F1Y3VpMXQzSjM1dm5mQWdLazNIMkRKREEwVkhjQUFBQUFjSU1yUmVMK2xuWWdVZUk2ZDVNTTY4OXpaaVVOb1RWclNORjJGMHVSQzVyWTdhQVNKZlNEUUNHWGxTbnArdy9JcVUxeGtyUmtxWno0ZGJGa1dIRmVGTEhlWTlYZmVrMENBbDI3ZndjQUFBREE0bXFDcmh6NVlZRzlGMWJTejJGR0x6dWN6UXo4UHdmZXlvRWxpa3V0T2JNbHJISWwzUU1BQUFEQUxhNG42Q3FKMkRQcGFVbDgrWFhkQWNBTEFzSkNKZWJWRjZWNHV6YTZCd0FBQUlDYjNGL0RHaEFnRlI0Y0lpV3Vvd0FWNEJsQmdWSmg5RWlTY3dBQUFLQUFGY2dtVTNVbWV1VnhZNlRvcFIxMEQ0QUNFeGdvNVI0WUxHWDY5TklkQUFBQUFBcUMrMHZjVDVPVm1pbzdIeHNyUno3NlJQY0FjSk5hMWw1eHpDaUo2dDFUOXdBQUFBQW9LQVdhb051c2I1LzQzZ2V5YjhJVXlVeE8xcDBBVEF1SnFTeVZwMHlVb3MwdTBqMEFBQUFBQ2xMQkoramFxZTNiWmVlREkrVGs4aFZXMHE0N0FUZ3VJRFJVU2x6YlJhSWZlMFNDaWhiVnZRQUFBQUFLbW1jU2RDVXJQVjJPZlArRDdKczhUZEoyeE51ejZ3Q2NFUkFTTEJGTkd0dEwyaVByMXJFNk9LWVFBQUFBOEJKUEplaC95MHhKa2VPL0xwYkVOOTZXazM4c3N4TjNBSGxnSmVHQlJTS2wyR1dkcE15dE4wbGsvZnAyVVRnQUFBQUEzdVBKQlAxMHFmdjN5L0ZGUDBuU2I3L0x5WTJiSkczTE5zbEtTOU9QQXZpM0FDc2hENnRWVXlJYm55OUYyN2FSb3ExYVNGQ1JJdnBSQUFBQUFGN2wrUVQ5SDZ4L3FwcE5UenQ4UkRKT0hKZjBnNGNrS3pOVFB3Z1VYb0hoWVJKVXZJUUVseXdwd1NXS1N3Q3o1QUFBQUlEUDhhMEVIUUFBQUFBQVA4VTBHd0FBQUFBQUhrQ0NEZ0FBQUFDQUI1Q2dBd0FBQUFEZ0FTVG9BQUFBQUFCNEFBazZBQUFBQUFBZVFJSU9BQUFBQUlBSGtLQURBQUFBQU9BQkpPZ0FBQUFBQUhnQUNUb0FBQUFBQUI1QWdnNEFBQUFBZ0FlUW9BTUFBQUFBNEFFazZBQUFBQUFBZUFBSk9nQUFBQUFBSGtDQ0RnQUFBQUNBQjVDZ0F3QUFBQURnQVNUb0FBQUFBQUI0QUFrNkFBQUFBQUFGVHVUL0FFaTRQaHNXRHBDaEFBQUFBRWxGVGtTdVFtQ0MifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMC0xMi0yMSIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiVHJ1c3RLZXkgU29sdXRpb25zIFQxMTAgVTJGIEF1dGhlbnRpY2F0b3IiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlUyRjExMDAyMDIwMDgxNDAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4zLjciLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMC4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIwLTEyLTIxIn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMC0xMi0yMSJ9LHsiYWFndWlkIjoiOTdlNmE4MzAtYzk1Mi00NzQwLTk1ZmMtN2M3OGRjOTdjZTQ3IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI5N2U2YTgzMC1jOTUyLTQ3NDAtOTVmYy03Yzc4ZGM5N2NlNDciLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiWXViaUtleSBCaW8gU2VyaWVzIC0gTXVsdGktcHJvdG9jb2wgRWRpdGlvbiAoRW50ZXJwcmlzZSBQcm9maWxlIn0sImRlc2NyaXB0aW9uIjoiWXViaUtleSBCaW8gU2VyaWVzIC0gTXVsdGktcHJvdG9jb2wgRWRpdGlvbiAoRW50ZXJwcmlzZSBQcm9maWxlKSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzQsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfSx7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDM4NHIxX2VjZHNhX3NoYTM4NF9yYXciLCJlZDI1NTE5X2VkZHNhX3NoYTUxMl9yYXciLCJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwiLCJiYURlc2MiOnsic2VsZkF0dGVzdGVkRlJSIjowLjAsInNlbGZBdHRlc3RlZEZBUiI6MC4wLCJpQVBBUlRocmVzaG9sZCI6MC4wLCJtYXhUZW1wbGF0ZXMiOjUsIm1heFJldHJpZXMiOjUsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIiwiYmFEZXNjIjp7InNlbGZBdHRlc3RlZEZSUiI6MC4wLCJzZWxmQXR0ZXN0ZWRGQVIiOjAuMCwiaUFQQVJUaHJlc2hvbGQiOjAuMCwibWF4VGVtcGxhdGVzIjo1LCJtYXhSZXRyaWVzIjo1LCJibG9ja1Nsb3dkb3duIjowfX0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjYsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjYsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlETXpDQ0FodWdBd0lCQWdJVVNPRWpUZi8veXFSZlBXN1FxOHF0SXlDckFnOHdEUVlKS29aSWh2Y05BUUVMQlFBd0x6RXRNQ3NHQTFVRUF3d2tXWFZpYVdOdklFWkpSRThnVW05dmRDQkRRU0JUWlhKcFlXd2dORFV3TWpBek5UVTJNQ0FYRFRJME1EVXdNVEF3TURBd01Gb1lEekl3TmpBd05ETXdNREF3TURBd1dqQXZNUzB3S3dZRFZRUUREQ1JaZFdKcFkyOGdSa2xFVHlCU2IyOTBJRU5CSUZObGNtbGhiQ0EwTlRBeU1ETTFOVFl3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRQ2R2bDI3dzJndTFmUFhlRUZiSWRxeDBCYWx2VkRWV3JRUEo3SHF2aXVFdFpIbHhTTHhTRnRjWHBUb2x2THZvZjhmNHRNZXJRVGtWR3pjbVl6bTFFQlQ0SUp1TW1vRXFma0VFaFdwc0FETUZyalprcWxaWTlFcXhRekxvVkVFb25FNW9HeFNkVkN4Q2NMSWFja3B5Ui9DQ1h2ajFCdC9oVGdFOWhUbEY0cFJxeE1reDNwbEY3eThkRFpsUkhXczd2Ym5obUJDR2VJMFpQRVE2bmwybUNnMnI3NGFkRjJ1Nks5cnJMZmhCQzNRTEU4RVByZ3FVc0kraGt1cTJ0SzRNMlNNT3A4dVVWVmtxVWV1M2gwa3IzV1ZJMFcwMnBrZ3JPZ2lGS0xGTmtTcmJZaGRqTUJEajVpem1xZmM5eEpSS29EWDYxMnFkOFpHVkhwVDVBWUZYKzFoQWdNQkFBR2pSVEJETUIwR0ExVWREZ1FXQkJUWnlVNURpUS9hMlVFZ0U3cUJLMHpoSXNSTlJqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUFNQTRHQTFVZER3RUIvd1FFQXdJQkJqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFYdm5CNFNMdVVKZllNU1ZHQWhzc0wvU21XbGkzRlNjY2d4eWR2S2xBQ2NpZElJV0tRcWEzcS9RU1VFUXpDOURnRWZNZ3I3aUMxQmtUWmJJTGJvVjZVWjVrbk5zdmpFWld1TWVvZ0o4dGdaczFoVnZLd1ppendKK21FY21zamhJckJZdW9MMVQ2eXJPSnZLRmcxanYrQ3k0WndBOUJway9WM1VPaXIxVnlLOGRDdHlIdTZ2Zm9zb3RBZFl4OEZBdVIyNDNnUlRNVjZKeDhKZGlnMkpESUFRTWx6VmVEcFNVSFgvSzJIWFJIeEh3ZmdqYmdVampCdS83MnI4T2ZlaHloekhYSTNLOENGRmRmbE8rOG5FT0pLM3k4RjFpdmdTNXVOLzhTbWNZdy9TVFFZd2hyeFB1d3ozblA4YmFNdW00QkIybm5ZbXBCNjBzWDNibDVrOFFVU3c9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFmQ0FZQUFBQ0dWcytNQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUhZWUFBQjJHQVYyaUU0RUFBQWJOU1VSQlZGaEhwVmQ3VE5WMUZELzNkNTl3ZVFTSWdTOUFRQVhjRkxBUVppOWZwZVZ6MXRZL1dUWnI1V3hwYzdXNWtuTGE1akkzWjg1c3JTMm5NMnNqdFd3WlM3SVVINEg0eENuRVF4NERBWkY3NFY3dXM4ODV2OS9sSW5CdlZKL0I0UHY5bnUvNW51LzVudk01NTZmekEvUXYwSGIvSXJYM1ZGS1BvNDVjbm00aW5VSVdZd0xGUm1aUVV1d2pGRy9OMWlSSGgxRVowTlJWUnVkcXQxQmQrMm5TS3lTL09oeXMwK2xrM2UvM2tROXF2RDRaVXRhNFZWU1V1WTBlaXB5aVRoQWZvY29PUlZnRHV1dzNxS1JpQWQzcmJjRXRqVGpZSW9mNldhSHNDbXpWUFdDTXgrY2doOHRMcVdNS2FNV3NVakxxbzJSdEpJUTBvT3ptZXJwUXU0ZXNaZ3NPTmtHeEg3ZDBrZHZUVDE3czRPTVU3Vkk4WmhqZ0dhTStBcTlpRU51OFBpZjF1ZHowN013dktXZjhHbFZvQ0VZMDRQQzVXZFRhWFlGYlI4dk52TDUrM0tnZmI1eE5NeWE5UmFtSml5bmFNbEdUVnRGbHI2YmE5dStwcW5FWDR1TXVSUmdqU1lFaHJON3V0RkZlNmxxYWw3TmZrdzVpbUFHSHluUHBiazhWbVkweHN0bnB0bEZDVkNZdHpUdUJOODNRcE1MalR0ZXZkUHpTVW5KN2U4bWtqeFozOWZYYktEZmxkWnFidlUrVFVnR25CVkY2ZlEyaVBIZzRXMTZVV1V3dnpiazE2c01aRStQbjBwdno3SlNldUF5ZXM4bGNwQ21hS3VvL3ArcVdyMlVjd0lBSFdydlAwWUV6aFhBdExBYnNzSGhwN2lHYW12eWlqUDhyeXFyWFVXWDlYb293eHlBdWZOQnJwNDNQT0JGWFpsa2Y4TURSaXFjcHlvd0F3cHV6MngrZld2ei9EdGRlOXNtc3p5Z3RjUjZDMXdiZHpCbDZPbHE1V05ZWTRvR2F0aEpNcmtURXgwakFSU0hBVnMrNXJZa1FOWGIrUWdmUExzUTZnWHlJbnNyZVFmbXBtN1JWRllmTDg2bjFmaVVPa1l2U2hrVVB4dmJ1a3pveTZLMWloTTFobzNYelc2RXZTZlhBK2RwaVdHYVdkK2RvWHpMem1Hd0tZRkxDQXNSQWxQQkFoTWxDRlhVN3RCVVZQcjhIZ1ZjSkhXcStGMDBwbHIrRE1UZHJQNHp2eFkxMWtOTWh4VCtTZVRHZytkNFY1TFFKaXR5VUdKTkI4VkZac2pnWUJaTS9JSS9YQ1RrajBxeURPcEYyQVZRMTdDSWpVcC9EblQxVWtMNUY1Z2RqK3NTMXdnMWdFM2dpZ202MGZDWHpTblBYYnlBUGJJWHYrSURwRTE2VGhhSElTOXNreWhsbU1FNUYzY2ZxQUtocTJDMEU1UEgxZ1lhWGFMUERrWkcwSERKT25LV0hwNTFJMHo1U091eDhlMVdBdVp6ZEhRclRrcDhUbWpYb0krbGEwd0dac3p1YnFiTzNpZlE2QS9XN3ZWU1lzVjNtUjBKS3drS2M0V0hpQmttUjhJM0NDZ0k4N29PTDRxelQ1UCtSVUpCZWpFT2dBUEs4aFlQemF0TStlSVRwMklPOXlUUW1lcm9tUFJ4eDFxeEFjc2lsZS91YlNlRWJjV1FHWUVDZ2hjTFkySHlLam9nakgyNWhNcGpwVXYxT3VnbGk0ZWgyZVJ3ME8zMmJKamt5dUNnTnpnMHZ6bFlNU2lTczB1b280TUc3aE1PakNFYVgxeUZFMG5TdmpCenVUbkVwSzg2WjhJb3FGQUl1Ync4a2c5QXJFYVJFV1NaSStqSDRYYnA2ZzlFOUVuSlQzb2FSekROK01VSkJRREhuNTZhOG9VbUVCdXNPeEJzL041K3RKRWJQa0FGRGo4VUd2T3MvSVd2Y1NnbEdCaHZTNy9GVFlmcFdHWWREWThmUEF4V1NBMzVzVEM0cDQrTG00QWFxSW9QZVF0ZnVmSzZKaDBaaHhsYnNVWE9TbVhOaWZENVpUQWt5RG9mYmJjY2x4bkE4V05BcXhDYlJOeWtoWHhRcGFEdzY3ZlhVWWJzaUcwS2h0djJvZUl2aDhyaFFNWU9jRUFxWEcvZUkrem5nT2M1eXhyOHE4MklBTTFjL0ZMRk9wbHF1NWVGUVhyTVp6R2NWQ2pZYkxXRzVJNEJUMWV1UnJsYnh0Tk90TWl0RERFaExYSUl5bkFBdnVPRVdFM1gzTmRBZnQ5NFZnYUc0MlhJUXQwWlg2UGVDRS9xUUZlOXJLNkh4N1lVNTBLdkg3Zlc0ZlMrcTdLS0JKeHNnZ0JYNXBTQUdoMWpJclZoNXpRNnczUmZhYWhCWG0vYUNiQ1pUakNVRlVUeVdacVc5cDYyTWpKUFhWcU9yUGdNTzROdjc0R2tmK293ZnROVkJEUW5qRkpxSFN3MTdwWHZoV1c1S1pxZS9RNDlOL1VTVENBVldvUVhGSUhCSFhYZTNGUHJVRHN1R0RtdEYvaEhLVEhwZWt4aGlBT1BJK1NKcTZTNkhGNEk5WVd6a0JKVG80NmlVTXpXcDhQaXIvUmlkdUx4S1lzU2tzVjh2TGxPUXZoR1gyWWxSME9CaEJqQyt1L2dFY3ZZMEFwSzdZazQxTnhqUFNRbldGSFRGNjZVcmpnZXZCOEN1NWErbDJ2WVNSUHR1VkRvNzNoaGRNU0huVVg3dFRqc1ZaR3hBbC9XcHRpT0lFUTFnbkwyOW1YNi90UjF0bWxrWWo4VzRYK0NTaldjVURHWTFOcFMvQzdoU0txaU1MTS9sMlFtU1daNzNEZHorZ2lvOEJDRU5ZUFE0NnFua3p3WFVicXZCa3hqVVFzV2ZaRmdidW8zckFmK3dON2pPTzkwK3lueDRQaTNMKzBuWUwxU2NoRFVnQVA0Z1BWLzdJZDFxKzFIU2htdUdrSXFXUlBneXhNRnFQOEhmalRualh3WTViUWZiSmN0Nk9JektnTUhvdEYvSGUxZWdzYXhIU3FHNndmZG1RNXg4TnlURkZxQmNwMmlTb3dIUjN5azUrMzZoRjd2WEFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJGSURPXzJfMCIsIkZJRE9fMl8xX1BSRSIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsImxhcmdlQmxvYktleSIsImNyZWRCbG9iIiwibWluUGluTGVuZ3RoIl0sImFhZ3VpZCI6Ijk3ZTZhODMwYzk1MjQ3NDA5NWZjN2M3OGRjOTdjZTQ3Iiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJ1diI6ZmFsc2UsInBpblV2QXV0aFRva2VuIjp0cnVlLCJsYXJnZUJsb2JzIjp0cnVlLCJlcCI6dHJ1ZSwiYmlvRW5yb2xsIjpmYWxzZSwidXNlclZlcmlmaWNhdGlvbk1nbXRQcmV2aWV3IjpmYWxzZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOmZhbHNlLCJhbHdheXNVdiI6dHJ1ZX0sIm1heE1zZ1NpemUiOjEyODAsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6OCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoxMjgsInRyYW5zcG9ydHMiOlsidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN30seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTh9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi0zNX1dLCJtYXhTZXJpYWxpemVkTGFyZ2VCbG9iQXJyYXkiOjQwOTYsIm1pblBJTkxlbmd0aCI6NiwiZmlybXdhcmVWZXJzaW9uIjozMjk0NzQsIm1heENyZWRCbG9iTGVuZ3RoIjozMiwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjEsInByZWZlcnJlZFBsYXRmb3JtVXZBdHRlbXB0cyI6MywidXZNb2RhbGl0eSI6MiwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjEwMH19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTAyLTAxIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NCwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZdWJpS2V5IEJpbyBTZXJpZXMgLSBNdWx0aS1wcm90b2NvbCBFZGl0aW9uIChFbnRlcnByaXNlIFByb2ZpbGUpIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNTAyMDEwMDYiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wMi0wMSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzR9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDItMDYifSx7ImFhZ3VpZCI6ImY1NzNmMjA5LWI3ZmItYjI2MS02NzFhLWQ3Y2Y2MjRjYzgxMiIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiZjU3M2YyMDktYjdmYi1iMjYxLTY3MWEtZDdjZjYyNGNjODEyIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkV4Y2Vsc2VjdSBlU2VjdSBGSURPMiBQUk8rIFNlY3VyaXR5IEtleSJ9LCJkZXNjcmlwdGlvbiI6IkV4Y2Vsc2VjdSBlU2VjdSBGSURPMiBQUk8rIFNlY3VyaXR5IEtleSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyNTYsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfSx7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciLCJlZDI1NTE5X2VkZHNhX3NoYTUxMl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwiLCJiYURlc2MiOnsic2VsZkF0dGVzdGVkRlJSIjoxRS0wNSwic2VsZkF0dGVzdGVkRkFSIjowLjAxLCJpQVBBUlRocmVzaG9sZCI6MC4wLCJtYXhUZW1wbGF0ZXMiOjMwLCJtYXhSZXRyaWVzIjo1LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCIsImJhRGVzYyI6eyJzZWxmQXR0ZXN0ZWRGUlIiOjAuMCwic2VsZkF0dGVzdGVkRkFSIjoxRS0wNSwiaUFQQVJUaHJlc2hvbGQiOjAuMCwibWF4VGVtcGxhdGVzIjozMCwibWF4UmV0cmllcyI6NSwiYmxvY2tTbG93ZG93biI6MH19XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNTRENDQWUyZ0F3SUJBZ0lKQU05UnpZdTRFSUlsTUFvR0NDcUdTTTQ5QkFNQ01IOHhDekFKQmdOVkJBWVRBa05PTVN3d0tnWURWUVFLRENORmVHTmxiSE5sWTNVZ1JHRjBZU0JVWldOb2JtOXNiMmQ1SUVOdkxpd2dUSFJrTGpFZU1Cd0dBMVVFQ3d3VlJYaGpaV3h6WldOMUlFWnBaRzhnVTJWeWRtVnlNU0l3SUFZRFZRUUREQmxGZUdObGJITmxZM1VnUm1sa2J5QlNiMjkwSUVOQklEQXlNQ0FYRFRFNU1UQXlNekE1TlRBME0xb1lEekl3TlRreE1ERXpNRGsxTURReldqQi9NUXN3Q1FZRFZRUUdFd0pEVGpFc01Db0dBMVVFQ2d3alJYaGpaV3h6WldOMUlFUmhkR0VnVkdWamFHNXZiRzluZVNCRGJ5NHNJRXgwWkM0eEhqQWNCZ05WQkFzTUZVVjRZMlZzYzJWamRTQkdhV1J2SUZObGNuWmxjakVpTUNBR0ExVUVBd3daUlhoalpXeHpaV04xSUVacFpHOGdVbTl2ZENCRFFTQXdNakJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCSGxxMmpVUU1hbEhqL0JSZVFlZkdpejRFdllKeUZMV1B6NFJmaEpHS3FxbCs4bjk2aFQxbTVnWG9Udm9McmpTVTdYMGNCZW9Uc2doeWgyMit5cnM0K1NqVURCT01CMEdBMVVkRGdRV0JCUSs4U0dXMkJYYnFiMmRjQU9pV0pPVStHQ3NQakFmQmdOVkhTTUVHREFXZ0JRKzhTR1cyQlhicWIyZGNBT2lXSk9VK0dDc1BqQU1CZ05WSFJNRUJUQURBUUgvTUFvR0NDcUdTTTQ5QkFNQ0Ewa0FNRVlDSVFEcTh4SVcwWks1eXozRUF6bXV4ODhMQ1RZTzE1N2ZUZnlPaU96QzJBRHlhd0loQU8xUFdZbGVGZ0gvM211RDhjQkFNcjExZkVLZEYvQWFDMTZmdHhhZXpOWEgiXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSXdBQUFBWUNBWUFBQUFvTnhWckFBQUFDWEJJV1hNQUFCN0NBQUFld2dGdTBIVStBQUFGSUdsVVdIUllUVXc2WTI5dExtRmtiMkpsTG5odGNBQUFBQUFBUEQ5NGNHRmphMlYwSUdKbFoybHVQU0x2dTc4aUlHbGtQU0pYTlUwd1RYQkRaV2hwU0hweVpWTjZUbFJqZW10ak9XUWlQejRnUEhnNmVHMXdiV1YwWVNCNGJXeHVjenA0UFNKaFpHOWlaVHB1Y3pwdFpYUmhMeUlnZURwNGJYQjBhejBpUVdSdlltVWdXRTFRSUVOdmNtVWdOUzQyTFdNeE5ESWdOemt1TVRZd09USTBMQ0F5TURFM0x6QTNMekV6TFRBeE9qQTJPak01SUNBZ0lDQWdJQ0FpUGlBOGNtUm1PbEpFUmlCNGJXeHVjenB5WkdZOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6RTVPVGt2TURJdk1qSXRjbVJtTFhONWJuUmhlQzF1Y3lNaVBpQThjbVJtT2tSbGMyTnlhWEIwYVc5dUlISmtaanBoWW05MWREMGlJaUI0Yld4dWN6cDRiWEE5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM4aUlIaHRiRzV6T21SalBTSm9kSFJ3T2k4dmNIVnliQzV2Y21jdlpHTXZaV3hsYldWdWRITXZNUzR4THlJZ2VHMXNibk02Y0dodmRHOXphRzl3UFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzQm9iM1J2YzJodmNDOHhMakF2SWlCNGJXeHVjenA0YlhCTlRUMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzk0WVhBdk1TNHdMMjF0THlJZ2VHMXNibk02YzNSRmRuUTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl6Vkhsd1pTOVNaWE52ZFhKalpVVjJaVzUwSXlJZ2VHMXdPa055WldGMGIzSlViMjlzUFNKQlpHOWlaU0JRYUc5MGIzTm9iM0FnUTBNZ0tGZHBibVJ2ZDNNcElpQjRiWEE2UTNKbFlYUmxSR0YwWlQwaU1qQXhPQzB3TlMweU0xUXhORG8wTURvMU5Tc3dPRG93TUNJZ2VHMXdPazF2WkdsbWVVUmhkR1U5SWpJd01Ua3RNRFV0TURWVU1EazZNek02TkRjck1EZzZNREFpSUhodGNEcE5aWFJoWkdGMFlVUmhkR1U5SWpJd01Ua3RNRFV0TURWVU1EazZNek02TkRjck1EZzZNREFpSUdSak9tWnZjbTFoZEQwaWFXMWhaMlV2Y0c1bklpQndhRzkwYjNOb2IzQTZRMjlzYjNKTmIyUmxQU0l6SWlCd2FHOTBiM05vYjNBNlNVTkRVSEp2Wm1sc1pUMGljMUpIUWlCSlJVTTJNVGsyTmkweUxqRWlJSGh0Y0UxTk9rbHVjM1JoYm1ObFNVUTlJbmh0Y0M1cGFXUTZNakU0TldZeVltWXRPRFZtT1MxalpqUTNMV0ZpT0RjdE9URmpNMkl6WmpCaU56aGxJaUI0YlhCTlRUcEViMk4xYldWdWRFbEVQU0poWkc5aVpUcGtiMk5wWkRwd2FHOTBiM05vYjNBNlpXTXhaVGczTWpFdE56TTNZUzB3TlRSbExXRXpZVGt0TlRGa01UTXpORFpsWlRJNUlpQjRiWEJOVFRwUGNtbG5hVzVoYkVSdlkzVnRaVzUwU1VROUluaHRjQzVrYVdRNk1qRTROV1l5WW1ZdE9EVm1PUzFqWmpRM0xXRmlPRGN0T1RGak0ySXpaakJpTnpobElqNGdQSGh0Y0UxTk9raHBjM1J2Y25rK0lEeHlaR1k2VTJWeFBpQThjbVJtT214cElITjBSWFowT21GamRHbHZiajBpWTNKbFlYUmxaQ0lnYzNSRmRuUTZhVzV6ZEdGdVkyVkpSRDBpZUcxd0xtbHBaRG95TVRnMVpqSmlaaTA0TldZNUxXTm1ORGN0WVdJNE55MDVNV016WWpObU1HSTNPR1VpSUhOMFJYWjBPbmRvWlc0OUlqSXdNVGd0TURVdE1qTlVNVFE2TkRBNk5UVXJNRGc2TURBaUlITjBSWFowT25OdlpuUjNZWEpsUVdkbGJuUTlJa0ZrYjJKbElGQm9iM1J2YzJodmNDQkRReUFvVjJsdVpHOTNjeWtpTHo0Z1BDOXlaR1k2VTJWeFBpQThMM2h0Y0UxTk9raHBjM1J2Y25rK0lEd3ZjbVJtT2tSbGMyTnlhWEIwYVc5dVBpQThMM0prWmpwU1JFWStJRHd2ZURwNGJYQnRaWFJoUGlBOFAzaHdZV05yWlhRZ1pXNWtQU0p5SWo4Ky8wVnhSUUFBR2ZWSlJFRlVhQVhWd1hmY24zVjk3L0hYNS92OVh0ZHYzRHM3SkpBSUFVTFlCWm1DaW1EVkRsZnR3MjNIcVl1cVBWMFd0ZGJXUjYzblZHMnJucmFPdHNoRHJSVWZQUjNXV1MzS1ZoQVpZUW9FUWtMV25kenpONjdyK243ZTUwNGlLTldPODU4K24ybnVpc1MvSjNHOFlaZVoyWlRFSW1EODUrUk9PMFpTVWZpSEpQNkZIeUlFV0JqQXd6Tnc2b2JJM0N5a0NHYUdKTnloTE1Xd2ducm9wTkpJQ0JOVWNvb2kwTzhiK3hmRjZQTEFxSU1jR29kMlcrellEOUZnNDlyQWdiMWkwVEpUSFdHQ3VvNlVoZUVKZGk5bVZyU044Y0tZcTQyZCs4U0tDU08yZ0F3ZElCUVFUUHg3WmxEVmRra1dielRaY0tUSTNkaHZ2ckdsdWVNOWQ4VVRYMFJyK2ptb3lZQ1FPTVNzQkxwQUFqTFFSeHBneG8rUkFtbHI0b2NJWmhlR2tGNWxCcEw0cndoSUNYTERmSCtnRHhlRmtIZ0NDZVN3Zjc4aEV6L0tqTVBFRDVJZ1JYdVJ1ZjIwcFlCWlE3MmY3U3RHSDNZbVR2eEZNaGNnQXdsaUFSTGdHV3dHTkFmV1Fxd21oc2hCY240c0dPQStsOHFDeHhtUUJVM0RTWklqOFY4VFlGQzBqWVVGYmUzMWRQMnk1WkF6VHhBUzVNWkFnUEdqelFCQjFZRHhBOVpaMEtrbWNFSEltYzkzTHZpM0hmSElrcVplalRJZ01FQU83bDhueGs4aDNZTG4zWVEwanVzTTFMeU9FTTVFNHNlQ2dPei9sUFljRUk5eFFUdHh4SGczbnVrWUlMNXJFZGdPQ0NqNGZnWVNzUjVxUmFlanEwSml1cXA0Z2hRTkx3MVY0c2VGQUs5Rk1yNUhRTFRqUWd5Yk1jaU5nN0huMXBXWGZPT2g2c1NMOFBrak1RZExZR0dhd2Q3ZkpYWXZSMFdmRU1BQzFCV0U0bFo2Qy85TW1mNk9jdVRwU0lENGtXVUcwbTdFdmVtMmJjNWpobzFZT3htUE9uTVRwMmFKN0lDQmlZOEovVDdRQWtZQWNaQUFROEVvYzBPMnlMYlJVVU1DTTVDTWRodjJ6VGxrSS9KalJHQVJRaEhJalhpTUdjZEtHbmVNMGpLSU94NnBWKy9MWnVjajd4QU1TUHZvNnhWNDlRWFNPTXpOdzhnRWRGb3dNd01qWTVEU1hwcm1yUlQ2QjR4VmlCOWRFa3R1Sk5xT3RIYys4SmorRURwZDJ4VGFqR2dBR2VNZ2QvOW5ZRThJNElJUVFDd0pnSU1MWEJBTm1neVNrUjJLNE56OUlEdzZMellmTFFyang0WVpORFgwZWs1M0xDQnhTQXAyanBsaGdoWTFzelp4MDFYTkJYTUV0aEFxUUJXOTVoMDA2UXZFRWFoSnRNdVhVTVFYMEZSWDAycDloQ0xOb3dDZXJzZjhQckJWL0tmRVljWi9uempNK0FIdUVBTC9JVGxnWU1aaEJxNmJFUXZwU1VkR0hsUFZ4QlZqZG82eTRSSWdFTnNFTzZKQmxwRUNWTFVUZ2hGTFFUWWNJeU1LUVpNaEcxUU5GS1g0NWoxaVl0Sm9KVU9WK0NFTUdBRUNNQStJL3c4Q1hHQ0FPMWprdjgxWUlzZ09Fb2VJd3l4QVhZbTUvYzZxbFlabmFESkg1Y3pKaElCTW1PQWgzL2psZ1hWV1F6NlJZREFZWHN0Qy9SZDBsa001QXZJM1VIVGZSd0JxZng0am8xdUJMMklSNmdEWkcwSUFCTzRRSTJEZ0RpWU9zUVJ5a0lNWlAwamdHVUxpY1JZQWdRdk1PRVFDTXloYTRCbmtQSUVFRnFCb1FhN0FIVUlFQkRuZmljanBwRWx4aUlESW1zNlluWmtiYURKWU1EejczY2dmbVdrQ1JZTEpDUDArV0FBS0htZUFaRWdRQWdUamtORTJwQWdTaHdqSUFvempnWjlCT2srd3pzQmM3QU8rZ3Zpa3hLUDhKd1M0R0RHNEtFWE9FcXpxdFBBQTN6SGpDNEt0L0JjRXk0Sng4V2liTTJKa0tvb2FlQUQ0Q3VMYkdCUWx4QkVqWmtHZjlYVnRtNGhnQ0l6WnYrWEZEejBZTnA2TkxheEVEbVhuczB5WkV5b28weG5JL29pY29ha2hSTUJlZzN3VFVrbjIxUmduRThRaHJRNG9nMmNIYlFmMjRxd2kySHFTQlJxQkFETWU1dzZwZ000WURIcVFHekNEa0NBVk1PeUJIQ3dBQWdHeEFEbDRCb3NjWnFBTUNHSUx3amhVUGFGc3dBNkM3bUZKbW5sVUhPUVpXbDFXajR5eVJVRWdrQnRseVQydHFBTjc1NFc1c1dSQ2NLcmdETERqZ09VR0NvR2RHTGNDL3lwNGhCOUdFT0NZcVhaNGJXN3NSZEYwRkdhR0lBTXBRc0NlWllGZk03TjNDUDdhUUh3ZkFUbXJSUFpMcmNpdllHeVdXVmVDdFpNZ2w1ckszcFNpUG9iemg4Q0E3eU1naTFHWlhlcHVyNHpHcGcycllsblhBamVVaERzUFdlVFBMZkxIMVVEYWZtK21Mb3lSdHYzRVpOY21xeXhhTkNCdXZUNmV1d1B4TXRSdjQrclJHOXhJTXVnME1OUUJMTnhQYTJRTHVZRnFBTVRuQTgvbm9DSUF4aUVoZ3VjRExQWStUalA0RXVOajkrRFdKNFJBTlhNNmROL0N5TEt6V0p3RmJ5QkVRQkJMVUlERm1RZHhYVWNxN3NUQ2dHSC9LUHB6ejZBemVoSUdOQTJrTm5qZXdmYmJQc3JZNnZ0b1R6NGZhMTZJQmNnWldpT1E2MGZZZnYrSG1GaHhCOTNSbjhQenkzRGRqckdkSmFtN01YQ1FCRVhrRERQR2NnVVd3WEFHZlYxZlcwQnVheTN5ODdnOXY5MjJFdzFiSVRjd2dTQUZROEpqNEg2WlhWRkxId0JtK1M0SEFyeDQ5VEo3UjlrS3h3OFd3UUtQazZCc1FRR1d6ZFlYby9HamRaT2pNaDgyRHBNZ0pqdHA5VVQ4Mzkxa0YrZUdva2pDSmJJTWx4QllyblZrdTJ0dk13OUhtdkpyQlFPV09GQUVUbG5WRGg5c1diaWdjY05NMUJuRWtpQWtrTEVoQkh0M0dXd1ZtZCs4ZDV2enhlL0U5TXl6N2N5THo0ZnFFU2lWMlZscytQeWVZbTJQUGsvRk1zZ0hEUG96V0lDcWdtN25BVHkvZ05rOXI2RW9uMGQ3OUVrMEZZY0lDQUhFRW9FUHY4cWpEN3lUVmNkZHc4UjRReldBTEJCZytXRm1Gci9LYkhNRlUrWHpDQW15Z3dVbzB4NzJQZlNYUEhEbjM3TGxLUTloMWlkRXdHRm0xeW82eDd5VnN2dEc2aGt3b0RQNk5oWm1MbWZaeGhZcFhZelhJQUdDYUNDOWkxNzlGelRYUVRyaFFzcE40SXZmQXVaWmtycGRjWkNnRTJWbmV6WmNJbUswT254MWR0YitMamU2ZU5VSysyRENqcTlkaEJDMDVBRFNpQVhLVmpTYVJqUWl4R0RIZ3IzVDRGbkFyMHA4MndXZHlGdGJJK0czVFRiZXVCQVFnQkFONVBNakxUNTN4NE82ZXRzQys4NC93ZFpPWWk5dGlPOHl5N2NpM2NoQjR0eFd5ejRTNGNRaVFPZzZ2UjU3VEZ5VmdqeVlYU1JZMVFBT2RHSjhxYVJySlB0b1UzUFF1U25ZRmFQUk5tV0RqRERZV2RWK3ZSblo0R3d6MjJCQU5aU1ZuZmlxbzQ3bHM1UE9WZlBMYk8yS1VkdE1YMkFHQlF3NkU5YzBkKzFkeGRyak50Rk9vRGhDWi85NTdIaGdLMGVmQzZFRzV4NEdpNzlPU2g4Z3BLY1IvZGNvdTZmUW40ZnNrQ0pRL3ozVWIyQnF6VTZhUG93c081Ymg0QUpjdS9EbXE3UW5CdlNaWi92V3R6TjI3R2wwSnpjeVdBVFo5VlJ6YjZiZHZvYk41NHFpQldxZ0dvSWl0RWYzc09mQW14aTNTTGQ5S1ZWL0Y2M3VWemo2TElqRk9sUmRnQVVRRUFNTXEzdkpkaFZyMWtKdUxjTW1uNG9xb0w0WlBJT1JHSENJR1ZORVRoSmdCdG45eThNQnJ4OGRzN2NGaFhkMm9oZzJmbVBPK25TUTNReTJEOU5rVTlrcGk0Mi9vR3lGaThwSWtBdHZ4TVNZblIrSytBa0x6WXRHMjNaQnV3eHZ5ejIxNjBhWVFaRkFVUFY3L3FtaXNEOW5WTGYxK3ZTbmU0NHNRTllWamV6dHBmSFVSbjRUc000c3ZNL0VpU0hCVEYvOWhVWDcwN0t0ajQ2MDJJWElOOXpWYko0YWkrL2ZjblM0c0JxSXhsVzBZM3pkdmdVK3VtM2Fqemp0S1A0TWJGTXRrR25Pczc4M2hQREpFT3hSU1JnY2lYZ2J4a3NGbHFLdGFLZjR3djVRVjUxNnJKNjB5am1oMm05WUVKVHNmbzllLzhoOUJ6YWV3Ukh6VTRRQ0ZGcUU4QWE4dW9taXVJV21ENTZoTE1EaWc3UkhIdVNXYTcvRXNQOVJUbm42czRnR2kvVzF5TjVJSE95a003R01oWVUzczdqNFVzUnFpbEFnUGs2T3YwNjczc3RSNjI4bmh4dkkya2gzL0NibUYxK0x1STN4TmVEaDZWVDlWeUdPUlBsbUd2OVRKbGJ0eElENTRWL1NhajhYZkNkemV4ZXhOdFRWV1VUZmdCbVlRVERvRFhmUTB6WW1XcEEybm9QN0NmaGdIeUhmam9tRGtqak14UHBBT0E0RHo5d2c4WDdWK3IyUlRuejVZcTBIZHMvbFB4d3A3VFBCbU9PN2drSGxYSHYzdy82eGlTbi8rVk0ycGJkWHMvWWtqMkk0RUtFS1c1NTZVdkhsbUppb2Vtb3JjMGdyUVFPUEhoajZXMm5zYjhxQ3g4VUlNUmk0OXRkWmYxQVVYREJXcG9tRlNyOWxGczRKQ0F2TTdacjFTL3Z6Zkh6RGVzTU1FRFJ1dDg3M21yY29wL2NFV0I4RHpYUlA5My9xT2kvT1B6bjlhbXZVbnJ3d0M1Z2U4dHBmQlh5Tko3b2I5RHVZbldqWWFaN0ZZclpOTWNOSzJKS0NqVmRtZEJuQWdCc2YwaEhiMkxMdWRhUURJMVFWeUtDejZtU09tZm9rN24rTS9FdDQvUWl0VWVpT2d6Y2c3V0RZK3oxeVBvbWlYRTlqZjRocEI2YjFwSGc1NHl1ZndYQUFaaEFOWEMrbmFtNGw4QjY2NDlCS0I4Z0xNTmQ3SjVWdW80cVJFYnVNd2NKdlkyRU1pMUNNWG9TcUR0aGx4QUFkemRJMGV5azczMkk0bk9PdXUySDk2dE5adFR3eHJDQVl4QVFMKzIvQ3JNL29hdWhWVDZaVmRKaHVycWV0QTNRaU9LUVVqZTg2eFl3cHdVN0hyMjBuZTB2MmRHNC82K3Z1L2lwZ0c5OWxnRmhpSE5JNHZVYTZIUGR2N2h2d2liRk9PRFVCdVJIakl4eVJIZW9HZ2tFTXNHdEczODdCMzFoMjdHb0pFT0RRYlVPM011N2RubG5aRVdYQlZMc2RPNVk1WGg1ZW9DaUtDRE56K1VQVCsvempyWlNRd0lBNnc5cEpaekQwYXdmeitlZVNhU3dtY3BYWk5UVnFwNjlaWWI4aUI4K09SOTZkVXZ4YU1FWWxHV0JMV0pLQkEzSjkyNHpUV09Lb1hEU25LOXVZSkFRRWd3UE42Tlc3ZTJ1Z3pkbVFRU3dSNE5EdWJNYjlyOGpGVnFJK0FmWVpvdCtIK25EMGFTejVCc3EzMEJ2c2d2QU5tajNnZmhSaCtUU2h1Uko1QllpR0FoZ2g2QjZLQkFhc1dINDZYNy95YzFqcksreDdBRFkrOCtYRStBY0l3d1JpU1laMitVdElaMUEzTXhSaEFta3psbjZmYmRzYVJJZWlPSldEREpCRHc0RDIyTGNZOW1CMkRrSjZNclJncW5NelRYMkFiQnlVa0ZqU3d1eDBDUXlmam03UERlTmgwNkRVRjFwOXZaekdwdVdBUUFZWk1NQU0zQ0VBM1RaUXNIV3Uxcy9VTWYvVlVkMXdTYitHUVEwR21FR0lRQXBmZjNSL2Z1M0tGZHpsQWpOUWdHWUlKMjJBWnB2NDBPZmh3ak1EenozZEx0MjV4K1JvNCtybHRpd1BJWFM0cDEzeUoxUHpScnNGcVFWMUF3WjBTMk00QkVrN0RKRmxyQmlOeFl2UDU0VmtWaXpPaVpCc0VlbW5nTE1FNDRENG5ob29ETTdpSUFPRHhXZ1UwVGhKQXR3Z3daZmpKWGRzRFNlMkNQa0lWQU1CTUJEUUREa2tkVTdFdXUraUhyd2FlQW1Ub3pmZ3dHSUZxSWY0QktWUDB4OUM1anE4dVk1UThEM0dJY3BRbE5DZFdNbmV2Y3Y0OXJjK3lyTE9JaXZYcm1DeXVJektEUk5nUEs3SlhlQmN6TUFkc1BzeHU0Mk5SNEg3OFpUaEZPb0tNRURnN0dCMGZDc1IyTHYvQkk1WXR4a0w4SjBicjZPM1B4TUxEa3BrRHBxazBPa2dZckNqcldNajkrM1JUZE1MZXZVNFRLOGVnN0lGYnBBTmhBaEJXQU5tY01SeVk2U0Evb0xZdk15MzF6bGUyV3U0aENYR1lXWlFOZjczL1lwTHk1WjJsUUZLak5BQ0JlaFYwQ21FQUFkaXlYbmRibnJwMXVubWo4cFJ6bDdmc25iZHdNNTV2M3JkbHZEb3lSc01HakhZQVRQVDBFcXdjc0t3RUZFdzNDQ0hRSVRWMGV5aVd1QUdFVWJLRUg3YUFRbk1EQVFPR0dBc0NZWUFBNVI5YXlmWTZRbDd1bVNVN1JybWVIQjcvYVRiQjFQZDU1QjdHM0RMWUxzNXJBMDJBVVRVZ0F0U3NaSHNMMmJQZ1J0b0hDeHZBRnREc0swWU1IbGNDMDhyeUwyRTZocUw0cUFRdXJnbWlVWEJzUDh3dmRZcnFQYk1zbjdsMVp6NkhGaTI1a0p5M3NoZ0hrTGdDUXdRSUNBVnNEQjdMYjNlYmxhdGhSQlBZWGJmQ2c2eUNGWkEvNUU3R2U2K25kRlRZTTJHMHhsckgwTnY1Z0JYL2VPOVBIdzNkRVk1S0NsdzBMR0JjQ29Zb0pGT1MremNtVCs5WTVlMnIxNWhkRHZHMm5GalVJRUJCcGhnVUl0MmFSeTV5cmg5dTVqdGlSUFc4Unl2N0hmZGpJQjRURERERzN2NHpsM0RmV3Vuak5GV29oMk1Ka0x0RUlFQTlJWXdWaksrNmFqNGYrZ3FuTFpKTjJYRjF3em1oUlZVRE5uYVRBTW02Z1hSekJtdDBwQTdWUTJybGhjMGJtUVhNUW5Qck9rTk9jNkNpSVlIV0JDcUJNa01ZNG1FeFlBbG8xOWw5VG1zN1diVDlkQS9WclR0OUJpdFcxWFFzUXlKNjY1WlBIVUh6czlpZ3hMeEJveXJnUUk0SHZRQnpLWndRVm1BNUR5ODZ5WXF3ZklXZE9JRk1ISUNzZDBEUVRWWWh6VlhnRTFCbUFWenpFYUFJNEVhWXovWURLazZGenBYY01IUFBrem5LQ0N0cDlvZmVaeUF3Q0Z5aUFrQ21leVIxTHFkWFBXWTJRTm1KNURLaER0WWdQYllrTVhaLzR0RmlDdUFBejlCTTRSKy8wWTJuN09MZGNkQktqa295UUJqTTlBMVJCYlVpeXl1bjdDN2psNExUMXBqekM3QVlBaG1QRUV3a0tCcUlEc0VDNzhJOXFjMWpFZUUrQjUzMFdtRlgxNDJtdTZxYy82d0F4bHdBUVlJcWd4akhWYTg4cUp3eFVtcndtbVBQbHkvZXFvZER5U3o1WFVqWW0zRmlyYVd6KzRXUVNLWkVWcWdpc01FVGFPT2pHeW9hSGZGY05GR2xCa0xMREVMZyt4L0hjdy9VZ1E3S3JzaVFnNHFaSG0yMGU2VzJaeHhTTGRwdkoyZCt3cnM5VGxETEEwR2tVVTFkelFUdTZEaUdKTE5ZM3dXdEEwTXBQdUJTOEhPQllFRTg0dC9RdEg2T0t1WFFmOVI4UFpUYVkrc1l2YitCWVl6TVBLa2ZSVGxQbUk4SHh6TVFBYjE0TXNFdTVKUTNJTDd5NGlEODBoanM3aFZUTzhCOTF0b3QycFNUTWhBQmpTUS9YTVU1VmZCZDdNNDJFSUlsN0ZtNVJ5akpYeml6NkN1dHZQY04yUjYvVVRUaDhYOUg2ZlYrUnVxR2FBL1RxNStnbDRGcWZVTkx2ejUvYVFDSkE1S0psb1c3R1F6UXhJbVkrajYxb1lqdU5iTjJEY0xHSmlCZUp3QkpUQjBRUXJXM2JEQy9xQXN3cHVHdFNYTU9jakVmaGtkb0NQQVhXUEhMRXZ2bmU5amNqNWlBZWU3aEtocWU4YnhhOEw3V3V2aUtmZmRuUi8rNWozNjBuT2VUcGhNaWd4QVlKVjRhb3hXRm9US2xVRUdCbklJMFg3WmpKY0hWQW1iMkQvamZ6YlJzdThvV2QrenVza2dpL1lnKzUyaklkNkpHV1lRZ2V5QlBaWE8zZEFORndmUmRURW0rVHRhcFI4UnpKNlIzZWgwd2ZZM2ZHYmZlYmRkYyt6TFZsRnJJNE9xRFdxRHdBS2dBOEJid2Y4bktRVkM2MU5VTTU5aDFTUzBPdEFmdlppaTlRSk1zTGh0R2NrZ05uTlEvakxLZDBBOGg1QVhxUHQvRDkxUEVGT21HWFlKY1JsaWlUYWpaZ3IzYWJKZGgvUk94RytoUEVXSWN5aThINXAzSTEra2JxQS8vQjNXcm9VN2J6akFvL2ZEMUJHdzdiWlBNNnlPcENqT29hbitsZjdzQjJsUFFRUjZ1MDlnWk9Sa0hERDdKdFVRcWlHUFNSYVlER1pQRm9jWndreXIreFcvR1F3cmpFSThyaFdNWllLVndPZGRmTWhkNThUQzNybHFNcHhmdTJnYVVRU2pjdDBXc0ZjWDBpdWFhSmZLUlJhMElxTmxOMzVnNlA2ekxuME83Q0dEbzhHZUVZTTluUkRHNkxuUHp1YzNiWnppb2VaQVhxYnhzSzFWaE9YRFNwalpCYVhDUjh6MEJvYzVscml6UEpxOXZTenQwaW9UT3kxalVHbjIwV20vdTczQnRyZmEzRCtZdFpPellEVFphM3BWbUJzMjlydXRrc3JNa0JoUFFiKzR2aDErVHpCbEJsbTZ5NHkzSjJPRjBCYUxScjJZU1NWM1BianFLVitibVZ2M1U4VGVrWmdEOGRtNDMwM09FQU9ZL1J1UjYybTFDdEE4MVg0SVU5QlVteWxiNzhmS1plUStMSC95WlJURFc2bWIvZURUaUxlVDJxTU1Gb2JNN3g2eStoVElmalRXL3pneG5Zc0RGaTZpR1o2QzZkOW9wWXp4eHpTNmltWndCR09qOTFPSDIvRGdaSWRXK2ZzVTZlMjBPckRub1JPcGRTV25QZzNXYk5wSHRyZXhzREJDcXpYSHlDUTBEaUhCL1BSR3hpWlhZUFZlY3ZNUU1yNWZHaG5WK29WNU95MUVEbkZBMkhHbHdsdWlBY1poeGlFdTdUWFpmVUxIaEVLWEUzaGE1YXlpaG1oR0E5UlovK1RHYjdqbjc4ajlFU3hlSEN3Y0QyS1lSVEFya29YbnVQakpBSDJEdG9LbGdpVXlXUFJMSnp2NmgxZ0VGcWZaLzhoMi9jMEp4M05xVVpKeUEyWjZoZEFXSS95clJMZFQ4RXpITnN1ZzB6S2lhV2VLZWduR0xRTXBET2E1Y2lUWXliVUxpMmJkTXY1R25YV2hZVmVEdW1aMnRzeE9HNDFLMmFHVzNTRHBKUlkwSU5oNVlBZ0RCd0wzcklyN0ZxazREVXRnQmpHK21leDNJbjBSTThpQ2ZqTmdjR0RBN0NPUWE1QzlpRmk4RDF0WWo5Y2dRV2ZpRXVycDkrTFZINUhDdlpnNStCejlQaXowbDdHT1g0RDhGaHBianNRaFJpSVc3NllaL2dJcDNvWFVZTTMxcEJMbTUyRlFRWHRxUGEzd3Y1Qy9GRE9ZbVliVG52M2J4UFlPZWdzZllkMnhNS3d5ZzJxZWxqMmJPaCtMNnk5b3QwUmFmUkc1QnVWdjRIb1l4UGRMdXc5dzNuaGJIWGN3UUlJaVFwRmdXQWwzc01BUThZamc5aWI3cmtRWWlZVTlIN04xTGhFRWpYRFE5WXREZjM4MFB0TnFCYzlBSSswSTJYOHBwWEM1c0dNZElRbHhTQlNNR2xDWU1XZzBiZGE4dm9VKzdkbndESjBJZXc3b1kyc2FmOXJxa2ZoenZWa25tOHpnekdEaFRBRVJFWU5SWmRFZmF1dFlsMWVueEhXR3lBZmNMZHRmeHpGN1Z0bTI4L3A5c1NTbVpPZTRjdzRZQnpsR1B3dDMvNWNRd3Bzd3RnMXJKbUlSbmhtQ2dhQVRLbVkwZGR2bjlUd29PUXZtT1VSYVRReVhJLzhZOEZWY0R6QjBHTTZ2WXpnNGhiWEhQNU1tUDVPOFdCSVRoNWhCTlE5MGZvR3lmU0dldndpMkMyOUVkL3hJeXZZRkRCZVBCa3BDQW5HWVo3QjRGbVg3TThEbG9Pc3c3U2Fta3JuK01YajlGTHJwZWVESDBUaVlnV2RvalhhbzYvY1NlRGJEM3Exa2IyaVh4K1AyWEZLTWlKOG0yRGl4UEEwMTROeE10bG1NSjBqYjl0blpaeHhuRE9ma0JCUUN3MkdqaGNWSzAyV3luZ1ZseWVZeFRIQmNDdUVDQzR6V1dWbmkzbVM2cndqY09aZTV2c3E2T3NyMlNlSXhCcGk0YnVENXhRRzdMSm05ME1GU01DUndpU0xTbTZuMWp3dVYzcnV5eGMwc2tVUnJNdERwR2lkTXNaQ0MvYXF5endxOU1rVXJ6STFHQW94YTBFN2E0NVd1N0EvMUoyUGRjRDhDQktwRXU5U09uTVBMOTgzejV4TnRQU3NSR0dZb0FramdFZ20vWjk5UUh5NGpsM2VEN1I5VWptQUNPQldKUThUaVBsdisyZnQxM0JiRTZZUWFDRFh1aHRrYWl1TE5vTmVRd241R0NxTllQc215SThhSVJhTHVRNjRiUWlFUWh4bGdFZXhvVEsvam9KeWgxWUdSU1JqTUMxRVRBaytrUUV4YlVINFhoQmtJczdoS3BwWXZ3MndFcjFuaW1EV0FFU0lNZW1BMlNvelBSLzU4WW9RRXVBQ0RZSmNnQjNPV09IQWRRZng3YWZQcThNRnFVWi9FYUVBS3dSWjdmZVlYS3kwZXVkS3lHcHNhVmt6R1NOdGdCT1RJcHB0R00yQUxLWEVBbUhmUnVLQmdpZkZFQmxuNmxzUC9rT3VLWVBhVW9ldW9FR3dZcEh2cXhyOWVLOXprTURTK1R6U3NNRG9KQXV6MnJEY09oL252S3NWbldORHhMUWlZcHQxMWl6SmZrN1RWekRLUE1TQUFCaUh3NE40NXZlVGhQZjZUVzlieWxMSmd3NkRDek5pWlROZVkrSHFXSGhMRzlFSk4zWWlVN01CSWFhOFJnU0FsRW90ZnFKOTE4MTM5NDFmUTdiK1NRTVpWQVlaa21MV1J1aGh0eWdRaDFCaUxWSXNEakV4SWdQTkVEUWdERXBBSUJybHV5RTJEbVRDV2lCK2dKZ0FkakJITUVwS0ljUWowYU9vaFpnNFlqekdXeUpBaVVDQUhVUU1OQjBrUmNFUWJiQmE0aVIvaS93SDNENVBNcGQydDVRQUFBQUJKUlU1RXJrSmdnZz09IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMV9QUkUiLCJGSURPXzJfMSJdLCJleHRlbnNpb25zIjpbImNyZWRCbG9iIiwiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsImxhcmdlQmxvYktleSIsIm1pblBpbkxlbmd0aCJdLCJhYWd1aWQiOiJmNTczZjIwOWI3ZmJiMjYxNjcxYWQ3Y2Y2MjRjYzgxMiIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwidXYiOmZhbHNlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibGFyZ2VCbG9icyI6dHJ1ZSwiYmlvRW5yb2xsIjpmYWxzZSwidXNlclZlcmlmaWNhdGlvbk1nbXRQcmV2aWV3IjpmYWxzZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOnRydWUsImFsd2F5c1V2IjpmYWxzZX0sIm1heE1zZ1NpemUiOjIwNDgsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6OCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjo5NiwidHJhbnNwb3J0cyI6WyJ1c2IiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotOH1dLCJtYXhTZXJpYWxpemVkTGFyZ2VCbG9iQXJyYXkiOjIwNDgsImZvcmNlUElOQ2hhbmdlIjpmYWxzZSwibWluUElOTGVuZ3RoIjo0LCJmaXJtd2FyZVZlcnNpb24iOjI1NiwibWF4Q3JlZEJsb2JMZW5ndGgiOjMyLCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6NiwicHJlZmVycmVkUGxhdGZvcm1VdkF0dGVtcHRzIjoxLCJ1dk1vZGFsaXR5IjoyLCJjZXJ0aWZpY2F0aW9ucyI6eyJGSURPIjoxfSwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjUwfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTEwLTMwIn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0xMC0zMCJ9LHsiYWFndWlkIjoiMDA1YjIwZTEtZjE0Ni00Yjg3LThmM2EtMzY4NDhmZjYwZWE2IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiIwMDViMjBlMS1mMTQ2LTRiODctOGYzYS0zNjg0OGZmNjBlYTYiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiU0VDT1JBIElEIFYyIFBheSBFZGl0aW9uIE0ifSwiZGVzY3JpcHRpb24iOiJTRUNPUkEgSUQgVjIgYnkgSW5maW5lb24gUGF5IEVkaXRpb24gTSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH0seyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNRRENDQWVhZ0F3SUJBZ0lIVUdGNVRVVmtNVEFLQmdncWhrak9QUVFEQWpDQmtqRUxNQWtHQTFVRUJoTUNSRVV4S1RBbkJnTlZCQXNNSUVOQklHWnZjaUJCZFhSb1pXNTBhV05oZEc5eUlFRjBkR1Z6ZEdGMGFXOXVNU0V3SHdZRFZRUUtEQmhKYm1acGJtVnZiaUJVWldOb2JtOXNiMmRwWlhNZ1FVY3hOVEF6QmdOVkJBTU1MRWx1Wm1sdVpXOXVJRVpKUkU4eUlGSnZiM1FnUTBFZ1UyVnlhV0ZzSURVd05qRTNPVFJFTkRVMk5ETXhNQ0FYRFRJMU1EVXpNVEl5TURBd01Gb1lEekl3TlRBeE1qTXdNak13TURBd1dqQ0JrakVMTUFrR0ExVUVCaE1DUkVVeEtUQW5CZ05WQkFzTUlFTkJJR1p2Y2lCQmRYUm9aVzUwYVdOaGRHOXlJRUYwZEdWemRHRjBhVzl1TVNFd0h3WURWUVFLREJoSmJtWnBibVZ2YmlCVVpXTm9ibTlzYjJkcFpYTWdRVWN4TlRBekJnTlZCQU1NTEVsdVptbHVaVzl1SUVaSlJFOHlJRkp2YjNRZ1EwRWdVMlZ5YVdGc0lEVXdOakUzT1RSRU5EVTJORE14TUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFL1h4TGxLTFE1cEdFUnVzc3Q0THlGcUxmY21aL296RTdHMERScnFLaEthM09FVUVEVEt3dnFQQy9Gbkd3UU1EMDFRblZpZWVYRFVXdFJrYWpRN0RJRzZNak1DRXdEd1lEVlIwVEJBZ3dCZ0VCL3dJQkFEQU9CZ05WSFE4QkFmOEVCQU1DQUFRd0NnWUlLb1pJemowRUF3SURTQUF3UlFJZ0E3U3Bua1ExVWJ4KzZSRUY3RlJKWGs3anpLTzhwWEtMZWRUcXUwVzAxVk1DSVFEK3VycjgydDhYQ3krVFVSVUVnVGt0bnBOUVBvZmQvSUlFYXQ4RUp3ak1pZz09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUljQUFBQThDQVlBQUFCTTZxbThBQUFBQkdkQlRVRUFBTEdPZlB0Umt3QUFBQ0JqU0ZKTkFBQ0hEd0FBakE4QUFQMVNBQUNCUUFBQWZYa0FBT21MQUFBODVRQUFHY3h6UElWM0FBQUtMMmxEUTFCSlEwTWdVSEp2Wm1sc1pRQUFTTWVkbG5kVVZOY1doOCs5ZDNxaHpUQUNVb2JldThBQTBudVRYa1ZobUJsZ0tBTU9NelN4SWFJQ0VVVkVtaUpJVU1TQTBWQWtWa1N4RUJSVXNBY2tDQ2d4R0VWVUxHOUcxb3V1ckx6Mzh2TDc0Nnh2N2JQM3VmdnN2YzlhRndDU3B5K1hsd1pMQVpES0UvQ0RQSnpwRVpGUmRPd0FnQUVlWUlBcEFFeFdScnBmc0hzSUVNbkx6WVdlSVhJQ1h3UUI4SHBZdkFKdzA5QXpnRTRILzUra1dlbDhnZWlZQUJHYnN6a1pMQkVYaURnbFM1QXV0cytLbUJxWExHWVlKV2ErS0VFUnk0azVZWkVOUHZzc3NxT1kyYWs4dG9qRk9hZXpVOWxpN2hYeHRrd2hSOFNJcjRnTE03bWNMQkhmRXJGR2lqQ1ZLK0kzNHRoVURqTURBQlJKYkJkd1dJa2lOaEV4aVI4UzVDTGk1UURnU0FsZmNkeFhMT0JrQzhTWGNrbEx6K0Z6RXhJRmRCMldMdDNVMnBwQjkrUmtwWEFFQXNNQUppdVp5V2ZUWGRKUzA1bThIQUFXNy94Wk11TGEwa1ZGdGpTMXRyUTBORE15L2FwUS8zWHpiMHJjMjBWNkdmaTVaeEN0LzR2dHIvelNHZ0JneklscXMvT0xMYTRLZ000dEFNamQrMkxUT0FDQXBLaHZIZGUvdWc5TlBDK0pBa0c2amJGeFZsYVdFWmZETWhJWDlBLzlUNGUvb2ErK1p5USs3by95MEYwNThVeGhpb0F1cmhzckxTVk55S2RucEROWkhMcmhuNGY0SHdmK2RSNEdRWng0RHAvREUwV0VpYWFNeTBzUXRadkg1Z3E0YVR3NmwvZWZtdmdQdy82a3hia1dpZEw0RVZCampJRFVkU3BBZnUwSEtBb1JJTkg3eFYzL28yKysrREFnZm5uaEtwT0xjLy92Ti8xbndhWGlKWU9iOERuT0pTaUV6aEx5TXhmM3hNOFNvQUVCU0FJcWtBZktRQjNvQUVOZ0JxeUFMWEFFYnNBYitJTVFFQWxXQXhaSUJLbUFEN0pBSHRnRUNrRXgyQW4yZ0dwUUJ4cEJNMmdGeDBFbk9BWE9nMHZnR3JnQmJvUDdZQlJNZ0dkZ0Zyd0dDeEFFWVNFeVJJSGtJUlZJRTlLSHpDQUdaQSs1UWI1UUVCUUp4VUlKRUE4U1FublFacWdZS29PcW9YcW9HZm9lT2dtZGg2NUFnOUJkYUF5YWhuNkgzc0VJVElLcHNCS3NCUnZERE5nSjlvRkQ0RlZ3QXJ3R3pvVUw0QjF3SmR3QUg0VTc0UFB3TmZnMlBBby9nK2NRZ0JBUkdxS0tHQ0lNeEFYeFI2S1FlSVNQckVlS2tBcWtBV2xGdXBFKzVDWXlpc3dnYjFFWUZBVkZSeG1pYkZHZXFGQVVDN1VHdFI1VmdxcEdIVVoxb0hwUk4xRmpxRm5VUnpRWnJZaldSOXVndmRBUjZBUjBGcm9RWFlGdVFyZWpMNkp2b3lmUXJ6RVlEQTJqamJIQ2VHSWlNVW1ZdFpnU3pENU1HK1ljWmhBempwbkRZckh5V0gyc0hkWWZ5OFFLc0lYWUt1eFI3Rm5zRUhZQyt3Wkh4S25nekhEdXVDZ2NENWVQcThBZHdaM0JEZUVtY1F0NEtid20zZ2J2ajJmamMvQ2wrRVo4Ti80NmZnSy9RSkFtYUJQc0NDR0VKTUltUWlXaGxYQ1I4SUR3a2tna3FoR3RpWUZFTG5FanNaSjRqSGlaT0VaOFM1SWg2WkZjU05Fa0lXa0g2UkRwSE9rdTZTV1pUTllpTzVLanlBTHlEbkl6K1FMNUVmbU5CRVhDU01KTGdpMnhRYUpHb2tOaVNPSzVKRjVTVTlKSmNyVmtybVNGNUFuSjY1SXpVbmdwTFNrWEthYlVlcWthcVpOU0kxSnowaFJwVTJsLzZWVHBFdWtqMGxla3AyU3dNbG95YmpKc21RS1pneklYWk1ZcENFV2Q0a0poVVRaVEdpa1hLUk5VREZXYjZrVk5vaFpUdjZNT1VHZGxaV1NYeVliSlpzdld5SjZXSGFVaE5DMmFGeTJGVmtvN1RodW12VnVpdE1ScENXZko5aVd0UzRhV3pNc3RsWE9VNDhnVnliWEozWlo3SjArWGQ1TlBsdDhsM3luL1VBR2xvS2NRcUpDbHNGL2hvc0xNVXVwUzI2V3NwVVZMankrOXB3Z3I2aWtHS2E1VlBLallyemlucEt6a29aU3VWS1YwUVdsR21hYnNxSnlrWEs1OFJubGFoYUppcjhKVktWYzVxL0tVTGt0M29xZlFLK205OUZsVlJWVlBWYUZxdmVxQTZvS2F0bHFvV3I1YW05cERkWUk2UXoxZXZWeTlSMzFXUTBYRFR5TlBvMFhqbmlaZWs2R1pxTGxYczA5elhrdGJLMXhycTFhbjFwUzJuTGFYZHE1MmkvWURIYktPZzg0YW5RYWRXN29ZWFladXN1NCszUnQ2c0o2RlhxSmVqZDUxZlZqZlVwK3J2MDkvMEFCdFlHM0FNMmd3R0RFa0dUb1paaHEyR0k0WjBZeDhqZktOT28yZUcyc1lSeG52TXU0ei9taGlZWkppMG1oeTMxVEcxTnMwMzdUYjlIY3pQVE9XV1kzWkxYT3l1YnY1QnZNdTh4Zkw5SmR4bHUxZmRzZUNZdUZuc2RXaXgrS0RwWlVsMzdMVmN0cEt3eXJXcXRacWhFRmxCREJLR0pldDBkYk8xaHVzVDFtL3RiRzBFZGdjdC9uTjF0QTIyZmFJN2RSeTdlV2M1WTNMeCszVTdKaDI5WGFqOW5UN1dQc0Q5cU1PcWc1TWh3YUh4NDdxam16SEpzZEpKMTJuSktlalRzK2RUWno1enUzTzh5NDJMdXRjenJraXJoNnVSYTREYmpKdW9XN1Ziby9jMWR3VDNGdmNaejBzUE5aNm5QTkVlL3A0N3ZJYzhWTHlZbmsxZTgxNlczbXY4KzcxSWZrRSsxVDdQUGJWOCtYN2R2dkJmdDUrdS8wZXJOQmN3VnZSNlEvOHZmeDMrejhNMEE1WUUvQmpJQ1l3SUxBbThFbVFhVkJlVUY4d0pUZ20rRWp3NnhEbmtOS1ErNkU2b2NMUW5qREpzT2l3NXJENWNOZndzdkRSQ09PSWRSSFhJaFVpdVpGZFVkaW9zS2ltcUxtVmJpdjNySnlJdG9ndWpCNWVwYjBxZTlXVjFRcXJVMWFmanBHTVljYWNpRVhIaHNjZWlYM1A5R2MyTU9maXZPSnE0MlpaTHF5OXJHZHNSM1k1ZTVwanh5bmpUTWJieFpmRlR5WFlKZXhPbUU1MFNLeEluT0c2Y0t1NUw1SThrK3FTNXBQOWt3OGxmMG9KVDJsTHhhWEdwcDdreWZDU2ViMXB5bW5aYVlQcCt1bUY2YU5yYk5ic1dUUEw5K0UzWlVBWnF6SzZCRlRSejFTL1VFZTRSVGlXYVo5Wmsva21LeXpyUkxaME5pKzdQMGN2WjN2T1pLNTc3cmRyVVd0WmEzdnlWUE0yNVkydGMxcFh2eDVhSDdlK1o0UDZob0lORXhzOU5oN2VSTmlVdk9tbmZKUDhzdnhYbThNM2R4Y29GV3dzR04vaXNhV2xVS0tRWHppeTFYWnIzVGJVTnU2MmdlM20yNnUyZnl4aUYxMHROaW11S0g1ZndpcTUrbzNwTjVYZmZOb1J2Mk9nMUxKMC8wN01UdDdPNFYwT3V3NlhTWmZsbG8zdjl0dmRVVTR2THlwL3RTZG16NVdLWlJWMWV3bDdoWHRISzMwcnU2bzBxblpXdmE5T3JMNWQ0MXpUVnF0WXU3MTJmaDk3MzlCK3gvMnRkVXAxeFhYdkRuQVAzS24zcU85bzBHcW9PSWc1bUhud1NXTllZOSszakcrYm14U2FpcHMrSE9JZEdqMGNkTGkzMmFxNStZamlrZElXdUVYWU1uMDArdWlONzF5LzYybzFiSzF2bzdVVkh3UEhoTWVlZmgvNy9mQnhuK005SnhnblduL1EvS0cybmRKZTFBRjE1SFRNZGlaMmpuWkZkZzJlOUQ3WjAyM2IzZjZqMFkrSFRxbWVxamt0ZTdyMERPRk13WmxQWjNQUHpwMUxQemR6UHVIOGVFOU16LzBMRVJkdTlRYjJEbHowdVhqNWt2dWxDMzFPZldjdjIxMCtkY1hteXNtcmpLdWQxeXl2ZGZSYjlMZi9aUEZUKzREbFFNZDFxK3RkTjZ4dmRBOHVIend6NURCMC9xYnJ6VXUzdkc1ZHU3M2k5dUJ3NlBDZGtlaVIwVHZzTzFOM1UrNit1SmQ1YitIK3hnZm9CMFVQcFI1V1BGSjgxUEN6N3M5dG81YWpwOGRjeC9vZkJ6KytQODRhZi9aTHhpL3ZKd3Fla0o5VVRLcE1OaytaVFoyYWRwKys4WFRsMDRsbjZjOFdaZ3AvbGY2MTlybk84eDkrYy95dGZ6WmlkdUlGLzhXbjMwdGV5cjg4OUdyWnE1NjVnTGxIcjFOZkw4d1h2WkYvYy9ndDQyM2Z1L0Iza3d0Wjc3SHZLei9vZnVqKzZQUHh3YWZVVDUvK0JRT1k4L3h2SnR3UEFBQUFDWEJJV1hNQUFBN0VBQUFPeEFHVkt3NGJBQUFBSjNSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCUWFHOTBiM05vYjNBZ1EwTWdLRTFoWTJsdWRHOXphQ20rNzRhQUFBQUFCM1JKVFVVSDNRb0hFVEVKRjNiekdBQUFBQ0YwUlZoMFEzSmxZWFJwYjI0Z1ZHbHRaUUF5TURFeE9qQTNPakEzSURFM09qTTBPalUwdkpjZWVnQUFHS0JKUkVGVWVGN3RYUWxnRkZXYS9xclBIT1JPeUVFNHdvMEJRUVJVRkJGRUdBRVZCRzltVUhDRW1aMGRjY1pqMWRtWmNWMVhSUkR2YzhSWlhZOFpBWFVRUkJBUVBBQXZrQnRDSUVCQzdqdnA3dlM1MzE5VlRibzdqUVFNRWJRL3FIVFZlNjlldmVONy8vSGVxMjdGUitBTWc4L3BocmV5Rmw2WERaNHlmaDZ1Z0tla0hCNVhGWHgxRG5pS2ErQXBPQXgzU1FuRHE0QnFIeFNMRWI0b0F3d21FNHlKU1ZEU0VtSHNsQUpEdkJVK2d4Rkdhekt2VTJITVNJRXhLeFdHdENRWUVtSmh6RTZIb2ovMzU0YlRtaHplUmdlOGRleDhIcllsbjhHNWZpTTh0anA0OWxiQlcxdERjdFRCNTdZenBZZUhDMUlSbjlFSVE1U0NxRDRqRVhYRlVGaUc5b014TGgzR0xqelM0cUVZekZDaXJLeTVQT0g0a0R3ajVEZ040RDVVRHVkM1cyQmZzeGxOZVp2aDJWZ0FWMlUrTzZnSkJuQWtJNXFwRFBDaW5JY2RKdVRBUEx3UHJQMEh3WHBKTGt5ZGV5RHFvZ0ZhWmhIOFlQeW81SERsRjhHNWZUTWFubHRLUW54T0tXQmpxSlBkSDhmUkdzV0RxZ0FPSGs0ZUNreTlzbUhJVFVIYytKc1FjL1hGTUtZa2FSbEZjRXJRcnVUd3VUMXdiYzJEYmZscU5MNzFJVno3RDhEbnFDVUZLTzRScTVLQnlvVC9iQ1NESFQ2ekJkR2pMb0oxMUhtSXVYNGN6Qm1aVkFrbUxiTUlUam5hbkJ5VjlRNjh2ZkVRZXFaM3dMaXpzOVF3NTQ0RHFIM21HZGhlWHdkZkk0MUcvak1oa1dTZzdxZWNFSnZCaXdhNFVVTjZ4TUk2NldMRVRCaUR1RnV2WjVvSWZpeTBLVGxtTGxpUGhlL3VBT0tqeUFnM1lEWGhtK2V2eHVCa0N3Nm1Yd2lsUWFoZ1lVcnBjcEVRRGhLaUdLYUVMRVNOSFkzWWE4Y2hkdW80TmE4SWZueTBHVGx1Zi9velBQWGhiaUF0VGd1US9uZlNpNml5bzN6WlRDUzh2eGFGVTZaVE1uUWtLV29aYVlKbFFGL0UvZWZOaUIwMUNvYlVlUFcyQ0U0ZnRCazVsTno1d0xCc0VRakJxR3JFYmVQNzRjWGZYSUJ0aW9LRStLRkllSEEyWWlkUHBIZlJVVThVd2VrSVVmZ25EWlZWMWJYSXE2U1hrVUkzMHhmR1F1aGd4Yzc4Q3ZXMHgzdWZvRXZ0bDBqNC9Zd0lNYzRBbkRRNTNFY3FjS2p6TU5TL3NnUzlVbUtBK2laTmxZVEM0NFhQS25ZR0VIUFZTUFV6Z2pNREowd09VVUxsTSsvRHdVNWRnY0lHTkx5MVFnMVB5TTBBR2tpUVFFanVoYlZZTUgyd2RuMEs4UDZtUTVpN2RDZWVYN2tIWCswdDEwTWphQXVja00xaC8vd3JsRjQ2SFVxVGg0YWxURUQ1NERZMW90dTNieU12cHgrRzMvWVBWQWhCTEVaTjU5aWN1SDNxMlhoaTVqRDEvcmJFSjd0S01lclBxd0NIazdhdHpJOFFOSUI3ZGtuQXVvY25JQ3VSSGhQeDZlWWlPRndlRE8yZmdjUVlUWUpGMERxMG1oeVZkenlNMmlmbXdZd2Nhby9taVNpWjJuYWhDdDNyZHFITWJNSGN0N2RnUjM0bExGRm0zREF5QjlkZmxLT25iRHZVMjF4SXZ2bHR1QldLcGlnaEJ2V1pWSU1xTE5OaVF0R3IxekJFd1dYM3I4REhuK1NUUEFiMDZwT0dyNStlaEhpNjF4RzBEc2NsaDQrai8xRHVDUGdLeWtnSnFnN05ETlhoSXpGS1lEcS9OenA5OEI0TUtiRjYrS25GQTI5c3hsLy9zUVZJb3EzalpYa2FuVEFZRkhpTDYzQVB2YUpIcGczR3F5VEZqTG5yZ0k0c0U3MGtIS25INHpQT3hSM1hEZEp6aWVCNCtGNmJvK21iblRpWU9nUW9hR3hCREZudmNPSUlVbCtkaTg0YlZyVWJNUVJQck5wTDYxWm1WNGw2TzE3NTNYQjRGdjBTSzUrNkN2ZGNkWllhWE9kd0FXYVJLTHdRL2xQQVJHVEdpZUdZa3NPeFpRZUt6NW5BTmswa2d6VDlyVUdCQi9Yd21lM290RzAxekgyNjZlRWFLbXNkV0wrbkRLdTJscUNpeG81LzN0bjJIb295NUVtQU5nUThQaVJTS3BRdW5BcUwzKzdRVWN4blo4MTRoMms4SEFJY0EzWVg5cjF5RFhwMFN0QlRSSEE4aENXSGMrZGVITTQ5RHhiMENMSXZOR0tVdzlTN0I3SzJMb2RpRGU2UXdpb2JPby83R3lER0lEdXJTL2NVSEh4MmtoN2JkbEQ2endlR2RnWm9hSjRWYjhYV1p5ZkRLS29qQklYVk50ejNmMVEvOE9MUkc4OUJaanRLdDU4Q1dxZ1Y1ODc5S01vZFMyTDBEQ0dHTEkvUjBMenNBbVJ0YjBrTWdkVnNoRUpDUUVablFqU2lhQWllRW9nazBPRW10U2xBd2lLYk5zbHIvejZjeDBVUllwd0VXdlJlOFpocERKUWw5T0RPOTFLVkdKS1NrTG55ZFNna1FWaFFDUG5FUUpSREJGSzRTYkcyZ051cjVjMUhDQUV0TkVaUEoxU0xlMzJTcUhXNDliTWZIMEhrS0xwNE10bFJSbG9FanpJdkdxRjBTMEhucWsxNlNDc1JNcUpyYkUyWTk2OGR1UExCajZIMGZCUVAwdTBWdkxlaEFGMW5MWVl5OEFrb0ErWWplZnJiMkxTclRJMEx4UFpEMWZqRGMxOEF2U21kUkZ3WUZSVFVOMkgyMDUvaGx2bnJNUEh1WlRoVVVxZW5CdVl2L2c1ai83UUN5clVrOU9BbjRhYXJHNGhsVzRwdzM4S3ZvTno0SnUyWXA5RGs5Y0xoOU9CM0wyeUFNdVpsS0dmTmd6TDhXY3grOGxQOWpuRFFLdmtPNjZCTS9sOG9aN1A4bDd5a3FyNllhVzlpN2RZamF2ejM0WXVkcGNpWXRRUkszN2xJSFBVQzIyRUJsUEd2NEtXVk5MekRRTXE0WVBsdVhQZklHajV2QWU1NWZMMGF2blpiTVViUmZaYzJWQVk4RHVXcXYyUEpad1ZxM01uZ3FNMWhXL3NwU2taUFVlMk00Rjcxd1kxcVpPMVpDVXZ2WU9NekZPVjFEblNjdVFpSXBqcHE4cUIzUmh6MlBIbWxIZ3RzTzFDRnMyY3ZBVHBZaEhHNC8rcGNPR2szUFBiT1ZtMlpQNXJoSWdSczlEUks2MUZJRDZSVGFqTlIxWWt2dVQrSDVQQ2JTdXhRTmIzZ1NCM3lGLzhLM2JPMEZkN3VzeGZqUUhFOUVHdEJHdXRSOXVaTmFyZ2YweDVlZ3pjK3pnUFM0MkJrZmgvZk54clQ2UDRXc1I2Z0xRTXp4NDVzVHkxdndPV0RPMkg1Zi85Q3V6RUVqeTNhaXJ0Zi9WcXJRNHlaOTdCTVJ0NHJFNEowczUrYk13Sy9HZE5MVHgyTTl6Y2V4S1NIMXJEdXZFL2FSVzE3TmtJVEpVaVZIVk5HOWNDaXV5OVIwL3BSWEV0ais0WTNLRFo1ajltRVFUbEp1R1ZrZDl6K0RBZU9oRW5aQmJKdG9zS0dOLzg4QmpkYytQMTlGdzZxNUpEZDNHVVRacE1Za2tFZ01SUzZxMFZJZnV6KzR4S2pOVWhOamtFMENTT2RoWGdMSHZwZ0Z4NWJ1Z3RJNjZCMWhKczlJU3BKZG50bHhXSFcvN0RSQW1BVVcwTWEwQmNnQWNRUWxZYWxEZFFsTngzWjZjeExSMElITmxJczQ4VDJDYXlXanI0OTA1aUlIVW8xNmVFeDZ2NlBVQ1JraStOOVVnNVJYd0xtK1NGSDhhR0tSdTA2QUhrazVOMFBzcHhTQjVtUU8xaE5NdG1Bd3pVa0NzdktPdi8yenVWd1NMNGhjTkNUbXZUSER6UURYa2dsWkNyZ2ZkVjJ0VXp5M01YTGR1SGwxU1J3QURKcHp3M3YxVkc3aDIyMTVWQU5ibjl4STU4VnJRMU1EamkxL09MQjhmbjNDbkZQQWlvNTZwNTdIVjU3RmMrQ2JRbVovVVNVRmZGM1R0ZERUaEFocGtBR095SkRPbGR0ZEVZS3k5bHhaa3FaYXpzbm9WOGM0MXk2emlVUnZxUzNVUzhqU0VlOHhZakpQVlBWMGFpQ28xMGMwNm5aQ2JpUzBtTFdvQ3hZWk1UNklkSkZTQkdHR0lJZVdjMUVVa2ttUktFcmZsNUtES2F3UEVvVHl5bEVsT0tTMUUrRkVmTVRIMXBOdDVvZEpkS2lwQUZmdjNBMWZNdHV3VWR6SjNDSTZ5cXVUekttUGFxSi9rQk12R2M1MENWUmt6STFEb3p0bDQ1TkwwM0JYVmVlcFk1NHRkemRrdkZ2VDM0T20xODY2a2dVMGt1NUpJMFF5V3FDa2ZiS3BPeEVuSnRJa3NnOGo0Q0RycUs2VVpYcUp3cU5IQTh0aEJtZGVCYmNpaktma2ZiVUkvclZTU0NrVTRRckhXVGR4UjloZCtGY2pvNlN2MStEZnp4OE9YWStQNFVqanlOSEVyS3p5aGx2RHlESHdKeGtMSG55S25VeFQwMUR1Nk1MTy9TZFI4YmovWGxYNEw3ZlhhZ2xiQ1dTUlVKSVBsSWNJVks5QXd0dU93OGIrWXhGajF5T2U2NWdKOVhyUkxTWVVCb2lPYjdkWDRXOUJaUVVNa0x0VHZ4NlVpN09GZklTWTBuVWlSVDFVa2RZekZpL294Z05jcTZqbU1SZm5jOEJTYlVBbHhEUWg0OGVHSXRodkgvdUxVTng0NGljb3l2ZExwc1RiOU9tQ1lRaUtzeHZtRk5TcEhDZ2ZUZC9JdDVsdWI5K1poSzZ5MHE1U0dMQ3hrUWxKUDJKd3RDMGFTdmNGV1c4UFZScWVLREVKaUJtMG1nOXBHMmdqbXk5TXpobXNPbXBTWlNHbEJnNk1nZGtrUFVraE41cE9vMkNvYzVwOE9EL0pqYVFVMFRvU1NCVzlicTBmTUNSOWNkSi9USG55bHcxVG5BRDlUMWREeTJlaDFGR2FnQSsrUHFRV2c4VkpPcTF3enByNXpwdUVqMHZaYU0zVlY1angvWkNFbC9IdTE4VmFwMHJ3N1BSZ1FkdlBFZUwwREhqOHQ2OGwvR1NQZTJ1bDFiczFpSjBXTlRGVGYzWjdQanRUMStGM0M3TnUvRjdpcHBURFhCRnpjSjlFbTFrc0greGtlV1RHNlVGQXVHR2VWQU9qR2swL3RvUWl0L3Q1Q090UERlR3VLSFpNcHI5bFdaVWFLbkNvVFZwd2tIdGEvL052RWdRTlJlQWRESHMzQ0s1OUVRaEUyMHZyODdYN0FXVzEwVDEyRmszaFAxSUVWdEk2aUsza2ZCVm9pcDBiSlh0QmY2QndzOGhmV24vQk9EaXN6S1FJb3VFY2ovejNsUHBvQ2tTb0ZyVXVaN21kb3BWSlhJelRHSnZ5U1JRY0pGUENBYm5oaDI4bnhtRlFPd05VMFpYL2FvTm9kZEhDaDJPektyUkdTYThQZUFOZlhEZ3pyWXdqV3lrYW9CUjY1UllkbUNHdmszQUQ1OTBycjgrUE4vbXQwR0lEV0t3NnAxdllwcHVzcE11QUdibVovUnZmZUFBYXFSa3E2VDNjaXg0L0FOS2gwa0dYVWpZaWNMZy9HTHZNY2xoN3BHdFg3VWZmbGgxMmhaSHl5TEVDRk13cDFGbkRDVktMVHRqeUp4L0llZlhpNUJ6NnlKMHYyMFJaajBycmlVSklHQm5GOGgyU2gxSEt0alJEQk1ZbWJkWmxRVEJVRVRkNmw2T1dBOTI4VUxhRVFaUFVRWHJybGNnQ0NaNFNzV0RpU0FjUk5rNHZRSGloQkprWDUwVEJmUXFDaWorRHpUeVU3d3F2L2RFSXRVR3FBWEZUbU16UUtXR0hlUkNQalZjSVVkOGROSUMxRW83SUVUak4wT2tpYXZvZ0g3MU0wZTRqZ3NObE40Vjc2S1dFc0YvMEFoRkpUMmNLa3FNU2p1cUpONlBFUHZsZElUQmtDUkdWTE83NklkQzU5YXp1MFMzMmlKUVZVc0FUQXl3K0RVQmlSRlB6MkRkdkluNGdtN3dad3V1REQ0ZXZ3SnJYcHlDQlRPYXQwdjZ4UGdOTUxyQ2N1V29RZWxqUnlrME9vTU41bE1OZzJsd04vWi91SVVpRTd6RlIrRGNGVHc3OTdPRWRGQVk2V0VKWEt2aCtibmRFbkZCanhSYzJDdTF4VEdLM2tpL1RQMkZMeUpWakZmOWZnK1pFYzdWOUlsYTBtMFJNWHVqVmRlNy9XQ3dqdXJQZXJlY0lKRTltRDZQRzQzdnJkSkRJZ2lGVzdZcHltWWlvbzRkdmZ0SXZYcmVHcHdqMnhyRXdGU0o0VVZ4WFlES0lleE9OMXppUmdzeFNad1l1dFZKU2NIZTBLbUd3VHI0MkR2RFplbSs2ay8zNjFjL1k4aWdEaVAyYjd1MHB6cnRyVnB1N01Edjltb3ZiN1VHdWRra2g3d3VxbmYrTnlHdlZYeTJ1eHpWYWp3VGtIaTlrcUtSMHM2NzV3MVJvNGNDY1ltc2YwczNTYndZSXpxZzd1blg5SkNmTWNLb2xZbEQ2T3BMNTBtYzFZeDczdmhHaXdpQVJKMzltOFVvQ3Btam1LRE9wakpXRXREZGZmVGQ3V3E0SDJ1L2xObFhua2orTkdhdkhkRmRpMmhIR0F4V0MySm5UU1kxWlArRTBEZ1FQcElqRTlWM3pZZkhkdUp6OCtGRzJ4bUpZOVJqY1Bka2RPOUNDU0MyZzhXSUNub2pGLzVoS1FvcUdtbWordkRQalFmUmE4WTcyRlpRZzF0RDlvUU02cGFNZnVsMEJtUmh6MnBDZVdrRDVpM1pwc1p0eUN2SHc0dDVuaUN2bURLZWVjMlVxZngyaG1ydHBQelhIVFJLcFFXRXFuSTBRNUVrVFE2VWpnM2VDOUVxQkdmMUU0U0M5LzVqTkxDRFhwMjBaSndWWHh5cFE4N1UxMkVZK1R5dSs4K1Z5SmM5RlJrZHNHTFZQcXFLNEExTWY1bEJxWjFmclYxa3h1TXUyWGgwK2Q4dy9MZnZxc3YxYXA3bERaaHozVUFreTRweE8wTWxoeElkaGZSL1BrT2Y1YUEvS0FqeWRwdno4KzlRZWU5Y1BlUVlJTDhVRVlQQ00vOW5DQ1Q0YUZ5NGVQOGZMYUUvSkJpQnoyaFozS1BReXNJRWV2SlFhSS9RSTQrVmo1cUlPTWFNMElDdVNmanJuQkhxY3IzcTlrZlRvOGhKQm1RdmJXZlpVRUFVMWVLMzB3ZmovTjdhaXEwZjF3M3ZpdW1UY2xVQ3FDTkpOaloxcEVjanhxcVV1OXFPWEo0dnVQVVlkcUcvN09HS3BvWnI4ZElPNFpJY0QwZWJKUGFhaVRBUDdFLzFJck9pTGJNeUlRVjFqOHhENC9LVyt4TDhjTGg4OEIyZ1VaWW5Sem55QTFZaC9kZ3R5KzE2ZkRsSGpUdHc0dzV4NExERTB6aVRZMzlsK0NsamlkdW5wU2s4V0FOWEdEZFFzRXZXTC9TMFpmdjVySkFOTjVVTmRCWDl6Nkl4V1J3d3ZTMnd5ZDZTUGZxeitGbXBkbUlvZlBqTDlDRjRlczVGbEFKc096bGthVi95Mmxhc2ZpNjg4eEk4Tyt0OGRRMGxGSCsvYXlSbWp1c0RiRDRDbFBJKzJYY2g5MzliaERFRE1ySHRwYWw2eW1BVWw5SXowdHNSZVpWdytEY202VGhZeGp6eUtLa1k3OHV2WUxZdDU3S09oNkJYRTN3dUx3NW5uZzlmWlJPbFJmQkNrQVlGVGRpRjlOZmZRSWRwRS9TdzlvWVU5MlRHUWZ2Z3E0SnFyQ1FwWkszazVwSGQwVkhkK3RjNlBMa3FENVVWRFlpTGo4WmRFL3Jxb1Q4T0hGL3VhUG5laW5QSGZoVDJ2eFJtcExJTFdrNjYrQ2c3M1NoSHlzS0hFWC9MOVhwb0JEOFYrSnFjcVBucnk0ai80N1R3THpXNTloL0d3UjREWVZWZm1nNC9aZHVFM1VqNDllMUlmZWtCUFNTQ014MU5HM2VpZHQ1TFNIdnJNU2htYzNoeUNGeDdDbEhVZHd6SklYTWRNdTBibWt5aEJDbUdLYmNuMHQ5L0ZlWWV3YnVnSWppelVQM1E0M0J1UDRUMHQ1N1FRNzdIMWpmM3lVWjIvaW9ZYzdOSWdwYnZrQWhaVE1pRWQwY3BEdmNjaHZyWDZIN3BDTXUyQ0U1TE9ENzlDb1VEeDhIVU5TZUlHSUpqU281QWxFeitKUnJmKzVocVJxUkRPRDRwY0tFUXBsNjlrUGJpbzRnYVJmODlndE1hcm0wRktMdm5MdmpvOVhUYXNCUkttQlhmWTBvT1A0UTVHZSsranN4VjhtVXAxWFIxSzdVSUZYNWVlZFhkNjc2OEdoU05IbytTY1RQVnIyK0k0UFNEYy8xM0tQN0ZMM0g0d2pGSS9OVk1aSCt6SWl3eEJLMlNISDU0YXVwUmZ2M3RzSCswbGlvbGdmSWlocUhCL3JWazVrVWRQNzJ3WE5pZnhzMHpNSGVXNy9hSTRNZUVNNjhBcGIrNGljN0dRU1ErTUFmSmY3NVRqemsyamlzNUFtRk1qRVBHaW9YSVhQY09sT3hFZWl3N1NZTGd5UldaZ1pEdk1oZnl1RC9mamNOZEJxSjR4RTJvZjJXUmxpQ0Nkb09QWFZOOTd3SWM2amdNK2IxekVETitETHFXN1d3Vk1RUW5KRGxDMGZqK3g2ajYvWU53SHpwQU1zaVAxb1RmakNJL2Y2RjkyWDBqNHUrZWd3N1hYd1hyT1gzMDJBamFFcDdLYXRqKzlRbnFuMzRkRFp2ZmhRWGRFWHZkWkNTLzhBQUg5NGw5RGNWSmswTnVFaW5ocmJmRDhkWFhLTDMwUmw0WlZZa0J5TTloU0t3L2xRWlJOUjdJbm9jb1dNN3BpK2dKbHlEK3JsdGdqRy9lSVJYQnlhRjIvbXV3TDFzRDU1ZGI0R284d0paMkkyWDJ2WWovMDJ5WU9nV3Y2YlFXUDBoeWhNSzJaQzFxbjEwSSs1bzExRmRSSklxL1VLSFQzZks3Q1M0U3BaWi9EOExhNVdMRVhuMFpZaWFNZ1BXOElUREV0ZjhLNUprRStZSmc1ODQ4Mk41YmlhYmxuOEorWUIxYldIdnYxNXpSSDBrUC9CNXh0MTJqWHY4UXRDazUvSEFYbDZQNkw4L0E5dUV5K0FycldIQVR5U0xHcTVubm9ZK1RYMTZ5TTFUNzBSM0ZrZ2hUVGhwaXJwdUk2Q3VIdzVUYWlUNTR1cDYyR2NFeTZhY0xyOTBKMTg1OThEUld3UGJpUjdDdFh3OFUxclBONnJYMm9yUTJKS1hBTW1Jd2toKzlGNWErYmJjcDZKU1F3dytmaDlKazZXbzB2cnFZZW5BdEsxUFBxaVN4UWxhVk1PRWh2NzNpNWxITHMzcVlvckpneXMyQ3RlOFFXQzhiQ0ZOMkYwUmRPdXduU1F5dnZQZjc3UzY0RCt4SDA0YWRjSDY5QmU3U1FyajNGYkk5NUJzZFJXVWIxY0Vrd3lONjdHWG9NRzBTb3NkZkFtTksyNnZtVTBxT1VEUyt0UksyVDViQi9zNG1lS3ZMMU5GdnBFVFJwSW80VG40N1JlRHZmaUdMdktqWW9EYVFRS0daWlZCaVlEcTNMNnlYRDRReGlkSW12Z3NzUS9yQjNLOHJwVS83N3JWc0xhUm0zdkpxT0xmc2hYdlhBYmg5SmZBY3FrYlQ2bTN3Yk44SHI2ZVJhY1Q3ODdDTy9uYVIyc3ZHWmFNYUZqMzdFa1NmTnhweE43ZjlGL0dGb2wzSjRZZlB3eEd5Y3o4TnFOVndMTjJBcG4xYjRDdVQ5MGpkYkpEbVgzQlNkNkVkSll0QUk0Lzhrd1lVdTBYYk9TL25Fc2RETlZlaVlFN3ZER08zTlBXUWQzTU1GcnJYSFZOZ3lFcUJrcFlFWTNJOGxNUVk5UzR0WHhNVUE3MHRBMDFway95MlhDQVlMM3RCWkR1Z2w4OVM5NkRvTGp3VGVxdnI0YWx1Z0srOEJ0NlNLcmpMcStCdHFvTzNzWUdkWHdGdllUWGMrUno5U2cxOExuYThTM3VpVmpkUnRSYjEwQ0NEZ2ZkS1c4UW53Tnl0SzZMRkhoczdFcGJCZmFIb1B6TFFIdmhSeUJFS2J5TTluclZmd2xWZGlQb0gzNkpZUFJEd1k0Q3hQS0xZakpRV0hEMHlncG9KRTFwMHVSYXJSanBQZmpUUXJSN1M0RnA0Y3dvTi9ta2VJYUtNVEpKQ2RrMjErS1pFZGlXSklSMHJJMW55bHkvZDFFZ3EwRDdsV3J3MHlWOTdqdVFyNmxQeUZnTEl1VVo0YlVPMzVOSEVneVFpMFdXM3Y1SDJRNGM3cHNJeWlGSnh5RkNZTXR2Mld3NU9CS2NGT2NMQm5WOE01LzQ4TkszYmhxYnQzNUl3MUwxYjg5bUlKV3hrRWJueWc0RWRlRWhIK2pzM2NFNVBHNXZObjRMUXFnWmZOM2Yyc2FBNTZCb0M4ejBXaEVoQ0FDR0NtMzlGTmRhcXp6R2J1OE0wb2lzczZiMFJOWDQ0ekQyNkl1cUMwK3VydDA5YmNyU0FTUFdLS29wMEIxdzdDdUJZK1ExY203ZkFZMnVFOXpDTjE0cHFTaHVLZGlkSEw4VytKajFrSkV2MXBDUDk1TkhJcEJGS1B2MWpYZnNNaFVZWS95RjUrdlAyZi9vbGdKODY0bjN4V2RTTUJtTUhHRk9UWU9pY0FHTjhJaXhEQnlINm1sR3FTalBFSk1Cd2dwTlM3WTB6aHh6ZkE2bUJ0NklXWGdmSjBXQWpVYWl6QzByaGtWK3o5dFhCUjNmUVYxTERjTHFBNWJ5bWZlQnBvSzFTUTlWbGE2SzdTTnZGUlJVbTc2WUdFWVRHSU8wUHhXcW1HV09CTVM0YVNseVVacXVrVUFXa3NaTlRTWUJPRlAxZU16czhHYVpPdEhFNnBjS1FRT2xtcFVxa2ZTTjdoYzg4QVA4UGNZRjVBS1ArcWgwQUFBQUFTVVZPUks1Q1lJST0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsiY3JlZEJsb2IiLCJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwibGFyZ2VCbG9iS2V5IiwibWluUGluTGVuZ3RoIl0sImFhZ3VpZCI6IjAwNWIyMGUxZjE0NjRiODc4ZjNhMzY4NDhmZjYwZWE2Iiwib3B0aW9ucyI6eyJyayI6dHJ1ZSwiY2xpZW50UGluIjp0cnVlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsIm5vTWNHYVBlcm1pc3Npb25zV2l0aENsaWVudFBpbiI6ZmFsc2UsImxhcmdlQmxvYnMiOnRydWUsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6ZmFsc2UsImFsd2F5c1V2IjpmYWxzZX0sIm1heE1zZ1NpemUiOjExNTAsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6MzUsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MjU2LCJ0cmFuc3BvcnRzIjpbIm5mYyJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5IjoxMDI0LCJtaW5QSU5MZW5ndGgiOjQsIm1heENyZWRCbG9iTGVuZ3RoIjozMiwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjM1fX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTEyLTA0In1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0xMi0wNCJ9LHsiYWFpZCI6IjAwMjQjMjM0MSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFpZCI6IjAwMjQjMjM0MSIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJHK0RGYWNlVm9pY2VLZXljaGFpbmlPUyJ9LCJkZXNjcmlwdGlvbiI6IkcrRCBGYWNlVm9pY2VLZXljaGFpbmlPUyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6InVhZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjJ9LHsibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X2RlciJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmYWNlcHJpbnRfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImFsbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoidm9pY2VwcmludF9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsic29mdHdhcmUiXSwiYXR0YWNobWVudEhpbnQiOlsiaW50ZXJuYWwiXSwidGNEaXNwbGF5IjpbImFueSIsInByaXZpbGVnZWRfc29mdHdhcmUiXSwidGNEaXNwbGF5Q29udGVudFR5cGUiOiJpbWFnZS9wbmciLCJ0Y0Rpc3BsYXlQTkdDaGFyYWN0ZXJpc3RpY3MiOlt7IndpZHRoIjo1NDAsImhlaWdodCI6OTYwLCJiaXREZXB0aCI6MTYsImNvbG9yVHlwZSI6MiwiY29tcHJlc3Npb24iOjAsImZpbHRlciI6MCwiaW50ZXJsYWNlIjowfV0sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlCbURDQ0FUMENCR1FkUFIwd0NnWUlLb1pJemowRUF3SXdWakVMTUFrR0ExVUVCaE1DU1U0eEN6QUpCZ05WQkFnTUFrMUlNUTB3Q3dZRFZRUUhEQVJRVlU1Rk1Rc3dDUVlEVlFRS0RBSkhSREVMTUFrR0ExVUVDd3dDUkZNeEVUQVBCZ05WQkFNTUNFRlZWRWhTVDA5VU1CNFhEVEl6TURNeU5EQTJNRE13T1ZvWERUUXpNRE15TkRBMk1ETXdPVm93VmpFTE1Ba0dBMVVFQmhNQ1NVNHhDekFKQmdOVkJBZ01BazFJTVEwd0N3WURWUVFIREFSUVZVNUZNUXN3Q1FZRFZRUUtEQUpIUkRFTE1Ba0dBMVVFQ3d3Q1JGTXhFVEFQQmdOVkJBTU1DRUZWVkVoU1QwOVVNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVTSXBJL2RLWUNEWWh6d0Qyd1NmWUFPYi9uTmFpUGNXRjIxdnhaay9UZ0QwT0p0Y0QrT1BtNjRud1pkRldTRVlTVzdpT3FucG1KeWRlOG1nci90bkFpekFLQmdncWhrak9QUVFEQWdOSkFEQkdBaUVBM2J2aGF6UUZQd215WGx4Sy94Q1hmaDdnMVgxRW9iTEMzTCsyR09SeHA3Z0NJUUNmTkVUWC9tMkJlYlJMWEk0TE1QMUVRR1BYRkRmN09rNzRVN3hiaU00VmtBPT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCwvOWovNEFBUVNrWkpSZ0FCQVFBQUFRQUJBQUQvMndCREFBTUNBZ01DQWdNREF3TUVBd01FQlFnRkJRUUVCUW9IQndZSURBb01EQXNLQ3dzTkRoSVFEUTRSRGdzTEVCWVFFUk1VRlJVVkRBOFhHQllVR0JJVUZSVC8yd0JEQVFNRUJBVUVCUWtGQlFrVURRc05GQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJUL3dnQVJDQURJQU1nREFTSUFBaEVCQXhFQi84UUFIQUFCQUFNQUF3RUJBQUFBQUFBQUFBQUFBQWNJQ1FRRkJnSUQvOFFBR3dFQkFBSURBUUVBQUFBQUFBQUFBQUFBQUFFREFnVUdCQWYvMmdBTUF3RUFBaEFERUFBQUFheWo2RjV3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVnZDNlRFQ1eExKMzZ4Rm9jNWw4bEdQU1hLc3pORE0wOU5WZE4rOFA4WmRMS0JIcGllK3ZoVHVvZk5YTkF2bStNeVVtUm4xZFFaZ0FITTRjdzFMaWNQMVZMZVF1alR6SjJkSk0zMzVwaGFhVWplYWJLVVJ2ZFY3U1oxZFRTNlN1Rmt3US9iSHI3NjV0MkYxbWRrODdOUHFFK1NZeUhSMWdBTEIxOGx2eVRlalBYUXFtdWdzZ1lkVlZwMXlhSGZYTFczdlVRazJwYUlxZDVNcllxSVBmamRMTm1UWXkyK0NUb3hzYjZJdHRTdTZsQTlCWkhBNnFvQUJ5T09OSFAycFBlbmpycy84QXhtbmNZYkxDaWE2ejB4U21hWnQ5SFJNbFVSdmRGK3F6b1l1czNsZEtWMXU2aWFtM3Q3UHJ0Sm4wR2VudS9BOURXR3h4QUFBZXY4Z3hYS2svT1pxYzlKbWJLbHBNelpHa3pOa2FUTTJScE53TTZFcmgxajh3Mk9JZXlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQLzhRQUtCQUFBUU1EQXdRQkJRRUFBQUFBQUFBQUJRQUVCZ0lEQnhVWElBRVFFellSRWhZd05IQTEvOW9BQ0FFQkFBRUZBdjZiR0lTUmxOWWJGZ1VaUzNGTW1sUGd0S1cyYmZTTHJFMVBTdVcrQzB2QmFYZ3RMd1dsNExTY2lHTHlrMWlnT1Jwa3NRSXhlOStHQVFtcVVQRzdlMDBzUG43WWEzZTVkQnRxOTV4YU9aWUhGQXl4SjdjcEJreGhIaTI4NHRiemkxdk9MVEhMUUozVzFkMkgxaDZ5c0VXczVoMXlLRU9iUnJjZk9nWWl5QkZTV1F0NHlLUFNGN0kzdkRFbnR5eWY3dHdqY29mUmg0Q05ONUFNbEFLM0l3bHkzVlp1Y3NWTU9qMlhMTFJtcDlJKzFHSmoxZE8waDViU0hsQW9DVmpwOVRYSGhZOUpkcER5MmtQSnppdzQwYmRzT21hbTVkWkhZZEI4dzVZWStOZVU0K3JwTHV6YjlibWUvd0FQdGpYNnZ2VlpmK1B1dmxpNGgwWVM5WmRDVk16M2FuSnNqb3AzUGtpM1BraXg1TlRCNlJLZFRvMkZsRzU4a1c1OGtWL0pFaGRXTzJIQWxWNGdzaGtPaEtYOHJGK3RyZmpSeTFJd3g0RzJrUXlTUlIvRjNYREVudHl5Zjd0d2lzTmZTbHlJRk53ZytZU0dpTkE2cXV0ZFhPRVRHN0UzN0IrM0tOTDdlMDZ0UGNYeDk1WHRDQ1cwSUpiUWdrQmdBdU9QMGF4MEpQRXRvUVMyaEJMYUVFbU9NNCt4cnRXcUxGc29WYWhtVXhsbDZXRXZ3eDZVa0l6ZkM1ZUdQS1c4cURPcWRkR3JYUnExMGF0ZEdyWFJxMTBhdGRHclhScTEwYW5NdEN0S1RlWUI3V2s5Skg4a2MvMDMvOFFBSFJFQUFnSUNBd0VBQUFBQUFBQUFBQUFBQUFFUkVnSVFJQ0V4VVAvYUFBZ0JBd0VCUHdINnl4azZSS0Y3cVVTaDR6eWZTMURFbVpFUFdMTXVDOU10V1JZYmdzaHVSZW1YbkZPU3BWaXhZMUpWbFdKUU56eXNXTEZpeFlibjdILy94QUF1RVFBQkF3RUZCZ1VGQVFBQUFBQUFBQUFDQUFFREJBVVJGU0ZTRWhRZ01VRlJFeUl5WVlFUUpGQng4RFAvMmdBSUFRSUJBVDhCL0xWbGQ0UGtqNXI3aXB6emRSMGxReHM3aXFyL0FBUDlLT001WDJRelc1MU9sYnJVam5zdW9LK1dGN2p6WlJtTWdzWTh1Q1UvQ2pjK3lwWXQ2bXVMOXVoRmhhNFZ2VUd0bFUxTUpRa3pFck9rR09WM043c2x2Y0d0a0VvUytoNzFhRk14ZzhyYzJWbFN2ZThYendWWTdVQnN5c3MyR1oyZnI5TUxtN3QvZkNrczZXTVhOM2JKUVFGVUZzQXNMbTd0L2ZDb2FZNlpuWStxcXpZSUNkMVpZM3pYKzNEVlU1VXNtMFBMb29iVUc2NlZsaWNIdXA3UWhraUlHNnFobkNua2NqN0xFNFBkUGFrSFM5Vk5VZFdWM1RzcUttM2VQemMzNFNGamJaSkhaY1JaaTl5d2tkYXdrZGF3a2Rhd2tkYXdrTlNocElvUFMyZjVqLy9FQUVNUUFBRURBZ0FIQ3dvRUJRVUFBQUFBQUFFQ0F3UUFFUkFTRXlFeFFaTUZJQ0lqTXpWUllaR2gwUlF3TWpSU1luR0J3ZUZDYzdHeVUzQ1NzL0JVY25TQ3d2L2FBQWdCQVFBR1B3TCtadDJFWktNRHdwRG5vL0xwb0Y5czdvUGUwOTZQOU5XWWlNTWpvUTJCWEpwN0szV0lRa0h5VnpWN3VBQWdFWkJlbjVWeWFleXVUVDJWeWFleXVUVDJWeWFleXJQd283dzk5b0dsS2loVzU3M1MzblIvU2ZwVnBUZU15bzhCOXZPaFhtaTlJdW5jNWs4TWo4WjlrVWhsbHRMVFNCWktFaXdGRitVK2lPMFB4dUt0UlMwSkVyM20yN0R2SXIxS1oySjhhbXcyNGtwSzMyVk5ncXhiQzQrT0Fma0wrbUI2QTlGa09PTld1cEdMYk9MOVBYWHFVenNUNDE2bE03RStOZXBUT3hQalFTNFg0blc2M203cjBsNk84aDlwV2hiYXJpbkk4bHBMekxnc3BDcTRGM0lMMmRsdzZ2ZFBYNWhtT3lNWjExWVFrZFpxUEJZOUZwTmlmYU9zMDVNZjRYNFcyOWExZEZHUk1keHZaUVBSUU9nRGVqOGhmMHdUL2czL0FHMDcwUFJYT0xQS01xOUZZL3pYVE0yTWVBdlNrNlVuV0RVaUV1Mk1vWGJWN0s5UnBUYXhpclNiRUhVZCswdFF1STdhbmZwOWNIa1FQRXcwZ1c5NDV6OU1JVUJIc2MvSzFvamJXdEViYTBKY3NNNUhKcVR3RjNPQ1ZOaWhuSU9ZbUxqdVdPWklGYUkyMXJSRzJ0T3Z1Q1BpTnBLMVdjMURDL3VjbzhWSVJqcEh2ajdmcGduQklzbDBoNGZNWisrKy9tOVBrMy9vWU4xY2JUbHpoYS8yanpHNlAvSGMvYWNPNXVMMHIvWXJBbTMrbVJmdE8vanBVYkprSVV6OVIzZ1lFYm9KVHhNdE9jKytNMzZXd2hJbml3emNpMzRWemdOZzM0VnpnTmczNFVJczJYbG1Na3BXTGswcHovSVlKY1NITXlVZEdKaXB5U0RwUURyRmM0RFlOK0ZjNERZTitGT011VGdwdHhKU29aRkdnL0xESjNVV25pbVU1SkI2VkhUM2ZyZzNRV2szUTJySkQvcUxIdnZ2MjNtbFlqamFncEtocUlxUE5hdGRZc3RQc3IxaW5ZVWtjQmVoUTBvVnFJb3R5bTd0RThXK24wRi81MGIwZmtMK21DZjhHLzdhZDZBeWd0UlFlTWtxSEJIdzZUVE1PS25GWmFGdXM5WnArVVNNc1JpTXA2VjZ2R2lwUnVvNXlUNWc0MTNJTHZMTkQ5dzY2Ymt4WFV2TUxGMHFUU21ubTB1dHEwb1dMZzBWQ0txT1QvQmNJN3EweXRyOXEweXRyOXEweXRyOXE4c2lGL0s0cFR4aTdqOU1EczZTWDhzNWErSXV3ekMzUjFWcGxiWDdWcGxiWDdWcGxiWDdVRmVSbVFvZngxbFhkb3BLRzBKYlFuTUVwRmdLY2xUSFF5eWpXZGZVS3l5cnR4bTh6TFhzanArUG1zZUU5WkI5TmxlZEN2bFFUUGJYQWQxbTJPanV6MWR2ZFNJZW92QUd1Y0l1MlRYT0VYYkpybkNMdGsxemhGMnlhNXdpN1pOYzRSZHNtdWNJdTJUWE9FWGJKcm5DTHRrMWQzZFNJT29PaFI3QlJUdWN5dWE3cVd2Z0k4YXkwNTdIdDZMWXpJUjhCL003LzhRQUtCQUJBQUVCQlFnREFRRUFBQUFBQUFBQUFSRUFJVEZCVVdFUWNZR1JvY0h3OFNBdzBiRncvOW9BQ0FFQkFBRS9JZjhBVFlqbzRhRFRNME9NVVk2M3ZFdEJaRythQkZ1RCtoWHE5RzVFQ0hOc3U1YUJOUFY2OVhyMWV2VjY5WHBjNVlmMnltWk8wUloxVCtpZ1o0VGdoT0RvL1VUQnU2Ti9OL1hBMzBhNDBTT1FWZXFyQWQyL1NvTUhndXJPbXhHRWhucENBdVczNFVTTHFobGhNU1BnUm8wYnB0c3QzTzZYYWFvYmlWQ0VKTWllWTBERTAzaG0wSFU0eDg5ZHFYSkJSbUVTRGJpdXF5MWJwaXdNTHVIOVhBR2wzT1c3Y3N2NjQvWlJ3VnNvU3VPTStZcWZ1ZVFmTkZDcUp2d3ZVNkxUKzI3K0JoUG5aa0gzT3c5WjhOaFplaGFZbkpIRGJBNW9QQlhuUHl2T2ZsRTJERzh4RmthYkhtUkdJR3NqTWE4NStWNXo4cS9VUEZnbHcwMnBOa1pmSjN6NU5uSHZJQ2ZtRkIzVzYzN2JEYVBNNVlkSTIrV3krdFFGYkp0TjF0c1diY3g2Zm5QQXBYTk9vTGpzVEJEQnVCRWNRdWUwb1lJR0Z0b1VKMnJCTE1pTFFkaG5BcFlNbGFqZXUxQ2hpRmdYa0lTekx0U2dKZGtyRzdZd3dnNFowSHpOQXZSaUpIblNoQ0MyNjcvUkdzY3VYWWMwZnBqVGxMTWRodndkVnYyVWNJTkJyQ2NUK0E0eFZqMWxONWptSzIxYXRFV01kQmUwS2Z3MlFsWDZISU9oZURMUmRic2tuRHFLeC9IU2lKOUJadFJxMHk4eFBOSWNDdlNxZWxVOUtvYlFOaElHK3lHekRkZjdBRUdnVjZWVDBxbnBWTU5JRWp1Y1NnREZEZ1pBVVNXcmJ4WUJpdVZMUWxudkVhc2VCaDlTK1laNWg1dFNHc0RkRkx4c09YR2pVNS9CRm12UHU5ZWZkNjgrNzE1OTNyejd2WG4zZXZQdTllZmQ2OCs3MHlpbjY0TFdCdVFSMXR0Ym9OOVNVNlZHV0J2di93Qk8vOW9BREFNQkFBSUFBd0FBQUJENzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc2b01qZzR4dlAzNzc2bXB6eXl2emVwcjc3NzNqNVQvejVlL3o3NzY0cHY4QXZxLzZJRysrKyt2Yy93RC9BUDhBdGY4QXZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnYveEFBZUVRRUFBZ0VGQVFFQUFBQUFBQUFBQUFBQkFCRXhFQ0FoVVdGQlVQL2FBQWdCQXdFQlB4RDliTWRCcXpNRVVNejJsbjJCaEVScDJCYlVXQ1puaExCeEFweFBLSW1aUTFEOTJjUkR4ckFXb0F0MGl3aHNib0RUSHJwQVJqQ2pXaG01dEdvTXpMOVMvVXYxTDlTL1VYTDlqLy9FQUNnUkFRQUJBUVVJQXdFQkFBQUFBQUFBQUFFQUVTRkJZWEhoSURGUmdaR2hzZEhCOFBGUUVQL2FBQWdCQWdFQlB4RCtzYjMxOXVOWURvN3RQUkZVMEU4NXp2a29kVnZtTjdlNCtLdEpVKzN3N3pKK0dLelZiR0dSWXRWcVcvVEZnWXFCZFAzSUM5VWFGWVhRVkZ1WlAxSVVvMGNJWE5OOWlZNVFEbXlsSGgrT213M0JIaTJYQVN6T3g4ZjR1MTdqRkhrRmJGOVIrZ0lWdDVGdzhaKzR3cGcxRzZ2eUV2QkJPYlpFVWJoZVRZUVNqTngycXE0WVpuZVVWZGVKZnl1bjFHc3JRMUNGbXNxRlVVV1pucWZVYXdCVUxrZTRNSlM0TGJmbGpaeWNPQnk4N0wwS2pjeHFxd2J6dmIzbUs2YXpGZE5aaXVtc3hYVFdGUzE5Q1czbkcxMDVmMlAveEFBbUVBRUFBUU1EQkFNQUF3RUFBQUFBQUFBQkVRQWhNUkJCWVNCUmNZRXd3ZkJ3a2FIUi85b0FDQUVCQUFFL0VQNU52Y1U0WmtpNStBdEtRMEhyQlo3cWVlSnZtaml0QU5lZ3I5TjlVekdNQWpzc2FTR2t4QjZOZnB2cXYwMzFYNmI2cjlOOVYrbStxUE1VSnIvU2l4OCtub2c0b3FtQlBia3NER05zYktTRS9FUzB4VEhBMkZrU3VnRUlRU1dYaGNBc0ZXVmZUUjJDdDFGaEs3RlRKdEFwZUhTREN6SjNmdWhNRVRBdkhRME9MbTlsbzFnREprZWhnd1lORCt4RStXRGxBNzBicDU3b2NJa201a3B0M2Z0ckNNSUlSQkVRYVAwS1V3WFdXdWtPSWt2RDRIRmR3ZFBnbEwxakF1SlYrWStDWUxCVS9pd09BVjJ4WmdNaERBTVlQajFCdElnWWx2QktXL3lORkpCRzJwc20xREE5Z29xd2gyR09BWVQwa0paR25pa0p3MUIySndaQnZSaWJlaEFnN2lKMWx0aWtraUw4Z2prYU1CRlEvd0JuZndjKzdyZFBhWXNKSi92WFBObGdkOEJoYTdSOXNSSjNWSkhLeEd1ZVpGYjFkREVac0syckx6MFpDaW8ya203OGVoQ1Q0RVN0Kyt2S3FKTjd2K2s2QkxKVGRPSFdmaDl2eDNzYlJXZTQ5YU5PRVFoK2R1c2FOUzBFSS9RT1JveUlTbDNuMmhYZDR1b0dIeXFBUUd1VEphRkd6YTdZWkxhWTBtV2Z0ZHcwbDExekJiV1RKdjFEc3NuQ2twSkVkU0lDSmFXUzQ0ZkhReXIrR1RFbnRNOTllTTVkRERjZ0gxUXhFUzVLQ2IydUp6dUZNcVNEUzhTbkNMd2lsbFRBYkNyc283UE5oeVF2eHRGQktCUWhuc0xlRzNKQzlaejhJVjNkQkxLZTdZQ0NwckxSYXZGbTkza1RLVWdYTWtKbFYzVlorQis2c1RGWURZRmJXRGRGQWJBcE1HNG1RYktCRVJCSzRGbnVpRWllU21BRmRLOEo0UUhRelpzek5WeXkvQmNzYjZFbW1DUEo4Sk1pK1o2R2JOblBNMCt4Y3oyRkRVS0JkZ0FBNEtrYUNmT3dDOGFBU3RYcVk2U3Q0Yk1Zb3hBU0IrSjlnd1RGNWlJV21BdE1TVkRZb0tKM0N1ZG1KM1pvRWVKZ2J5WWV6NHYvQVA4QS93RC9BUDhBL3dEL0FQZ2dSTDZ4UWVpb2IwUlYvQmI4anNvQTNiRW1Nall3SlVxQ1ZqK1R2Ly9aIn0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTA0LTE2In1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wNC0xNiJ9LHsiYWFndWlkIjoiNmUyNGQzODUtMDA0YS0xNmEwLTdiZmUtZWZkOTYzODQ1YjM0IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI2ZTI0ZDM4NS0wMDRhLTE2YTAtN2JmZS1lZmQ5NjM4NDViMzQiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiTGVkZ2VyIFN0YXggRklETzIgQXV0aGVudGljYXRvciJ9LCJkZXNjcmlwdGlvbiI6IkxlZGdlciBTdGF4IEZJRE8yIEF1dGhlbnRpY2F0b3IiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MTA2MDUsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2azFfZWNkc2Ffc2hhMjU2X3JhdyIsImVkMjU1MTlfZWRkc2Ffc2hhNTEyX3JhdyIsInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9pbnRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjozLCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9pbnRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjozLCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOlsiYW55IiwiaGFyZHdhcmUiXSwidGNEaXNwbGF5Q29udGVudFR5cGUiOiJ0ZXh0L3BsYWluIiwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUJnVENDQVNjQ0ZGTTFRQ0RYZzEyMkY5Y3ZXRlZtcWVHWDN0UVdNQW9HQ0NxR1NNNDlCQU1DTUVNeEN6QUpCZ05WQkFZVEFrWlNNUTh3RFFZRFZRUUtEQVpNWldSblpYSXhJekFoQmdOVkJBTU1Ha3hsWkdkbGNpQkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFTkJNQjRYRFRJME1EVXpNREUwTVRrME1Gb1hEVE0wTURVeU9ERTBNVGswTUZvd1F6RUxNQWtHQTFVRUJoTUNSbEl4RHpBTkJnTlZCQW9NQmt4bFpHZGxjakVqTUNFR0ExVUVBd3dhVEdWa1oyVnlJRVpKUkU4Z1FYUjBaWE4wWVhScGIyNGdRMEV3V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVRLN25YeUg0cGdOM1RNd0NXU29NRFJlNEVWOEpsM1h6dWhpY1ovMmd2aCt6ejNXbVcwT1ovRWNSWUVBOEYyNmNlZXVNY2QyMVdRUlJLV3BqV0QrSldpTUFvR0NDcUdTTTQ5QkFNQ0EwZ0FNRVVDSVFEOEorMC9iOFBlWWpGUlFZa1VSY3FoYXgyN29sdzFqWS9wYnNraEJ1UnA0QUlnT0FIYjZuKzdmTmZmeW94cGVDcTNWWjdCMWpOM3dxbVBOZm5hZUFqZG9Ycz0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBU1lBQUFFQUNBWUFBQUFlTWR2eEFBQUFBWE5TUjBJQXJzNGM2UUFBQUlSbFdFbG1UVTBBS2dBQUFBZ0FCUUVTQUFNQUFBQUJBQUVBQUFFYUFBVUFBQUFCQUFBQVNnRWJBQVVBQUFBQkFBQUFVZ0VvQUFNQUFBQUJBQUlBQUlkcEFBUUFBQUFCQUFBQVdnQUFBQUFBQUFFc0FBQUFBUUFBQVN3QUFBQUJBQU9nQVFBREFBQUFBUUFCQUFDZ0FnQUVBQUFBQVFBQUFTYWdBd0FFQUFBQUFRQUFBUUFBQUFBQWU2U0Nrd0FBQUFsd1NGbHpBQUF1SXdBQUxpTUJlS1UvZGdBQUFWbHBWRmgwV0UxTU9tTnZiUzVoWkc5aVpTNTRiWEFBQUFBQUFEeDRPbmh0Y0cxbGRHRWdlRzFzYm5NNmVEMGlZV1J2WW1VNmJuTTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlsaE5VQ0JEYjNKbElEWXVNQzR3SWo0S0lDQWdQSEprWmpwU1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJajRLSUNBZ0lDQWdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlLSUNBZ0lDQWdJQ0FnSUNBZ2VHMXNibk02ZEdsbVpqMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzkwYVdabUx6RXVNQzhpUGdvZ0lDQWdJQ0FnSUNBOGRHbG1aanBQY21sbGJuUmhkR2x2Ymo0eFBDOTBhV1ptT2s5eWFXVnVkR0YwYVc5dVBnb2dJQ0FnSUNBOEwzSmtaanBFWlhOamNtbHdkR2x2Ymo0S0lDQWdQQzl5WkdZNlVrUkdQZ284TDNnNmVHMXdiV1YwWVQ0S0dWN2hCd0FBRDY1SlJFRlVlQUh0M0x1T0pHY1ZCL0JkOW1JSE5oTGlJaE9RT0VhQ0NEa2lJQ05HNGczOENqd0pDUWxDQkFTSUJONkNoQWdKSkVSaUpBdlpBb3l4ZkZudmhlL3M5SkZxZTN0bXVrOS9wNmQ2NTFmU04xVmRWZWRVemE5cS9sMjk5c3lkTzNmdXZEL0dzekdlYk9heGJLelg0TkhtK3Z4cXpHTjZjREh6ZFNGd2Y3UDg4ekdQZXpuTjNOZnJ2YS9qMmp6ZFhLOVB2eklXVEFRSUVGaVZnR0JhMWVWd01nUUloSUJnY2g4UUlMQTZBY0cwdWt2aWhBZ1FFRXp1QVFJRVZpY2dtRlozU1p3UUFRS0N5VDFBZ01EcUJBVFQ2aTZKRXlKQVFEQzVCd2dRV0oyQVlGcmRKWEZDQkFnSUp2Y0FBUUtyRXhCTXE3c2tUb2dBQWNIa0hyZ3RBdkZMb3FZekVSQk1aM0toRnFkNWQ3T2M4OFVtaTVjSWhCV3ZTM0RXdURyL1BNUXg1K2FkNkJpOXcydlRPK2VIZDdnOUZXbVVmMDdqOW56bk4vK2RIdlZHRU1YeDk1aStQVVpjdkgyZm9QS0NSLzFQeC9qakdHK09FWC9UNmFnVEd2V21xd1hDL3Q0WS94a2pybDE0NS9VWWk2WWhrQ1p2amVWdmpQRjRzMjdNVEUwQ2NRL0dnODdIWTN4L2pOK1BFVk9zM3pjVGN0L1Baand4L1dVYytMMDRBOVBKQmZJSDhPUUhYdmtCOHdiLzV6alBHS2JUQ2p3ODluQXpndW1OelVuRXljUVRrNmxmSUFJcG5uQmptSFlMUkRqRko0QVlzV3pxRjRpL3B2cjVHSmtKNVNQT0NLWU1vNWpuY3ZtRUZCS1lLQ0M4SjJMdTBTby9zc1ZINTZPbWZmOU42YWlES0NaQTRGWUpaRUNWdjJuQlZLWlRTSUJBbDRCZzZwTFZsd0NCc29CZ0t0TXBKRUNnUzBBd2RjbnFTNEJBV1VBd2xla1VFaURRSlNDWXVtVDFKVUNnTENDWXluUUtDUkRvRWhCTVhiTDZFaUJRRmhCTVpUcUZCQWgwQ1FpbUxsbDlDUkFvQ3dpbU1wMUNBZ1M2QkFSVGw2eStCQWlVQlFSVG1VNGhBUUpkQW9LcFMxWmZBZ1RLQW9LcFRLZVFBSUV1QWNIVUphc3ZBUUpsQWNGVXBsTklnRUNYZ0dEcWt0V1hBSUd5Z0dBcTB5a2tRS0JMUURCMXllcExnRUJaUURDVjZSUVNJTkFsSUppNlpQVWxRS0FzSUpqS2RBb0pFT2dTRUV4ZHN2b1NJRkFXRUV4bE9vVUVDSFFKQ0tZdVdYMEpFQ2dMQ0tZeW5VSUNCTG9FQkZPWHJMNEVDSlFGQkZPWlRpRUJBbDBDZ3FsTFZsOENCTW9DZ3FsTXA1QUFnUzRCd2RRbHF5OEJBbVVCd1ZTbVUwaUFRSmVBWU9xUzFaY0FnYktBWUNyVEtTUkFvRXRBTUhYSjZrdUFRRmxBTUpYcEZCSWcwQ1VnbUxwazlTVkFvQ3dnbU1wMENna1E2QklRVEYyeStoSWdVQllRVEdVNmhRUUlkQWtJcGk1WmZRa1FLQXNJcGpLZFFnSUV1Z1FFVTVlc3ZnUUlsQVVFVTVsT0lRRUNYUUtDcVV0V1h3SUV5Z0tDcVV5bmtBQ0JMZ0hCMUNXckx3RUNaUUhCVktaVFNJQkFsOEQ5MGZqTFRmTkhZMzV2akdlYjEzZDNMQy9YeFc0UEYvdkVhOVBwQk9KYVBCZ2pyOWNoUjg3cm1OZitrRnI3RXJoT0lPN0p2TGZ5L3N4N0xtcVh5OHZYc2UvelRJb3YzNHd0WTNyOVluYncxL2poTUoxV0lDOXN2Sm1ZQ0t4RklPN0xtQ0pYanNtRnIwYURYNDhSNFJRMytiNGY3VElGNCtBZmpCRlRycnQ0NVd1WFFJYlN0OFlCZmp6RzQ4V0JjbHVzeXB0a2VWMXllMXozLzQ3eGh6R2VqbUVpTUVNZzc2Vi9qMmEvM1RTTSt5L3Z4ZXVPRWZ0R0JuMXgzWTc3YnQvM3dQdjJzOS9sQXZGeE82WWZqUkVYc2pvK0hMWHhVVHdtMSsvQ3dkZmpCYWJjUy9IT0dRbDFUTE5JeWZqaE1KMVdJSitVNHJOOFhMOTlyMkZjcjNqUy9XZ00xMjBnbUtZSzVEMlZiNkNWNXM4aW1QSWR0OUlnYXZKRXF2WHFqaE9JRzJEZlVGcnV0Ky9IOXVQT1R2VnRGY2lQZGFYdlA0T3BWS3hvVlFMTDBMbnF4SEsvbkYrMXIyMEVxZ0pIUGJCNDE2eXlxeU5Bb0UxQU1MWFJha3lBUUZWQU1GWGwxQkVnMENZZ21OcG9OU1pBb0NvZ21LcHk2Z2dRYUJNUVRHMjBHaE1nVUJVUVRGVTVkUVFJdEFrSXBqWmFqUWtRcUFvSXBxcWNPZ0lFMmdRRVV4dXR4Z1FJVkFVRVUxVk9IUUVDYlFLQ3FZMVdZd0lFcWdLQ3FTcW5qZ0NCTmdIQjFFYXJNUUVDVlFIQlZKVlRSNEJBbTRCZ2FxUFZtQUNCcW9CZ3FzcXBJMENnVFVBd3RkRnFUSUJBVlVBd1ZlWFVFU0RRSmlDWTJtZzFKa0NnS2lDWXFuTHFDQkJvRXhCTWJiUWFFeUJRRlJCTVZUbDFCQWkwQ1FpbU5scU5DUkNvQ2dpbXFwdzZBZ1RhQkFSVEc2M0dCQWhVQlFSVFZVNGRBUUp0QW9LcGpWWmpBZ1NxQW9LcEtxZU9BSUUyQWNIVVJxc3hBUUpWQWNGVWxWTkhnRUNiZ0dCcW85V1lBSUdxZ0dDcXlxa2pRS0JOUURDMTBXcE1nRUJWUURCVjVkUVJJTkFtSUpqYWFEVW1RS0FxSUppcWN1b0lFR2dURUV4dHRCb1RJRkFWRUV4Vk9YVUVDTFFKQ0tZMldvMEpFS2dLQ0thcW5Eb0NCTm9FQkZNYnJjWUVDRlFGQkZOVlRoMEJBbTBDZ3FtTlZtTUNCS29DZ3FrcXA0NEFnVFlCd2RSR3F6RUJBbFVCd1ZTVlUwZUFRSnVBWUdxajFaZ0FnYXFBWUtyS3FTTkFvRTFBTUxYUmFreUFRRlZBTUZYbDFCRWcwQ1lnbU5wb05TWkFvQ29nbUtweTZnZ1FhQk1RVEcyMEdoTWdVQlVRVEZVNWRRUUl0QWtJcGpaYWpRa1FxQW9JcHFxY09nSUUyZ1FFVXh1dHhnUUlWQVVFVTFWT0hRRUNiUUtDcVkxV1l3SUVxZ0tDcVNxbmpnQ0JOZ0hCMUVhck1RRUNWUUhCVkpWVFI0QkFtNEJnYXFQVm1BQ0Jxb0JncXNxcEkwQ2dUVUF3dGRGcVRJQkFWVUF3VmVYVUVTRFFKaUNZMm1nMUprQ2dLaUNZcW5McUNCQm9FeEJNYmJRYUV5QlFGUkJNVlRsMUJBaTBDUWltTmxxTkNSQ29DZ2ltcXB3NkFnVGFCQVJURzYzR0JBaFVCUVJUVlU0ZEFRSnRBb0twalZaakFnU3FBb0twS3FlT0FJRTJBY0hVUnFzeEFRSlZBY0ZVbFZOSGdFQ2JnR0JxbzlXWUFJR3FnR0NxeXFralFLQk5RREMxMFdwTWdFQlZRREJWNWRRUklOQW1JSmphYURVbVFLQXFJSmlxY3VvSUVHZ1RFRXh0dEJvVElGQVZFRXhWT1hVRUNMUUpDS1kyV28wSkVLZ0tDS2FxbkRvQ0JOb0U3cmQxMXZnY0JPTDZQeG5qM2hqUHp1R0VEenpIcDJQL0dLWXpFeEJNWjNiQkpweHVCbEFFMG1lYmZxL3lEKy9kOFQzbTl6eUJUNHRUQ0FpbVV5aXY2eGp4Z3hyVG0yUDhaSXd2eDRpUDlLL1NEMjk4TDYrTjhhY3gvajZHY0JvSUpnS2RBdkd4SzZZZmpoRS9nUEhrRTA4OHNienZPSFQvZmZ1dWJiK2ZEWk9ZSGx6TWZEMFhBVTlNNTNLbDVwNW5QalZsUU9YckNKYVlkcjJPYmNzbmoxek9mWjhYN3ZpeTdKazljcmZjRnErWGZYSy8zTDdjbHJVNVgrNlR5NC9IeG5oaStpSjNNajh2QWNGMFh0ZHI5dG5HRC96eWgzNjVITWRhdnM3bG5HOXZqOWU3cHF2MlgyNWIxdWI2bkMrM2JTOHY5OG5sL0svTitYcTd4dXVWQ3dpbWxWK2c1dE43Vlg5d1g5WHZxL2wyV0UvN2ZHZFp6eGs1RXdMSENlVEh1ZU82cUw1UkFjRjBvL3dPM2lEZ2Fha0I5ZFF0QmRPcHhSMnZXOEFUVTdmd0Nmb0xwaE1nTzhSSkJUd3huWlM3NTJDQ3FjZFZWd0lFamhBUVRFZmdLVjJsZ0k5eXE3d3NoNTJVWURyTXk5N3JGL0JSYnYzWDZOb3pqUCtQNmRnTDZSM3FXdWJXSGZpL3lCc2VURjQwdVlsWFIrV0tKNmFidUdROXg4d2Z4cHpuVVM3N1FkM2VML2VQK1hMYmNqbTM1YnJMNXRrcnR4LzZlbGtYeTh2WDJTdm55KzI1WDg1ekgvTXpFNGduSmhmeHpDN2E1blR6bDNsem50L0Y5anZWOXV2TDlzdjFNVi9XTEpjdjI1Yjc1RHg3VlY4djY1YkwyWGM1WDI3UDVZZWJIZnp5N2xMcXRNdEg1VXBjeU4rTjhkWVlqOGFJSjZoREdrYXd2VHZHWHplMThVdWhwbDZCdUdaeGpiNDJ4Zy9HaUw4dUVGUCtVRjY4dXQxZjR6Nk1YK0w5OHhqdmpaRm1ZOUhVS0JCdmtuRS92ajNHTHpmSE9TUlBZdC9vOFhuVWZqeEdyS2lPZDZMSm1MYmZ1Uy9XK3RvaElJVDJWMlcxdjlXeGUrWVQ2dmRHbzJxZVBLK0xKNTZQeG9nL0dwWlBUR1B4MmltS1k0b1RpVDh4WVRxdFFQakhENXczZzZ2ZDQ4bkpVL3pWUmpPM1ppN0VVMU0reWVlNmZZNFQrMFltZlJKZllzUVU4MzMvTVh4NU1POUl6L2xPL2lXdWdUZUZrN003NEI0Q3l6Zk51RS8zellqYzkvNitRYlRIdWRpRkFBRUNjd1FFMHh4SFhRZ1FtQ2dnbUNaaWFrV0F3QndCd1RUSFVSY0NCQ1lLQ0thSm1Gb1JJREJIUURETmNkU0ZBSUdKQW9KcElxWldCQWpNRVJCTWN4eDFJVUJnb29CZ21vaXBGUUVDY3dRRTB4eEhYUWdRbUNnZ21DWmlha1dBd0J3QndUVEhVUmNDQkNZS0NLYUptRm9SSURCSFFERE5jZFNGQUlHSkFvSnBJcVpXQkFqTUVSQk1jeHgxSVVCZ29vQmdtb2lwRlFFQ2N3UUUweHhIWFFnUW1DZ2dtQ1ppYWtXQXdCd0J3VFRIVVJjQ0JDWUtDS2FKbUZvUklEQkhRREROY2RTRkFJR0pBb0pwSXFaV0JBak1FUkJNY3h4MUlVQmdvb0JnbW9pcEZRRUNjd1FFMHh4SFhRZ1FtQ2dnbUNaaWFrV0F3QndCd1RUSFVSY0NCQ1lLQ0thSm1Gb1JJREJIUURETmNkU0ZBSUdKQW9KcElxWldCQWpNRVJCTWN4eDFJVUJnb29CZ21vaXBGUUVDY3dRRTB4eEhYUWdRbUNnZ21DWmlha1dBd0J3QndUVEhVUmNDQkNZS0NLYUptRm9SSURCSFFERE5jZFNGQUlHSkFvSnBJcVpXQkFqTUVSQk1jeHgxSVVCZ29vQmdtb2lwRlFFQ2N3UUUweHhIWFFnUW1DZ2dtQ1ppYWtXQXdCd0J3VFRIVVJjQ0JDWUtDS2FKbUZvUklEQkhRREROY2RTRkFJR0pBb0pwSXFaV0JBak1FUkJNY3h4MUlVQmdvb0JnbW9pcEZRRUNjd1FFMHh4SFhRZ1FtQ2h3ZjBLdkRMZDdFM3Bwc2IvQXM3SHIwLzEzdjVWN3hyMTU5MVorNXpmelRVZWVQQjdqNkN5WUVVeWZiQXdlM1l6RnJUNXEvTkJGUUpsZUZnZ2J3ZjJ5UytlYUo1dm1IeDk3a0JuQjlNNDRpWWRqdkRGR25KaDNxSUhRT0VVUVBSamovVEgrTm9ad0dnaGJVNXE4UGRaL1o0d3Z4M0JmYmlGTmZobjNaZVRKLzhiNDdvemVjWU5IMHdpVm1Cdm5ZZkNiY2ExaWlwQXl2U2lRYjdpL0dLdmR6K2RqRUUrNGNiMCt6UXY0NG1VOTdGVmUrTU9xN0YwUmlIZjllUGVQSjlRdktnMXVXVTMrODBMTVo5enJ0NHl2L08zR2ZYclVFK3FNaTVVbmtQUHQ3eWFDSzdmbGNzeGppdlc1N3ZtS0hWOTJiYzkxeXo3TDB0d2U2NWJMK1hxNWJ5eHZuOS8yOW5pZHg0cmw3Zk5lSGlPWHQrZmJQZUoxVE10alg2elp2UzczemYxem5qWG1Md3VrVWN5WHkzbHRvaUtXWThydHkyMFhXMTc4dXR3Lzk4MzVjcy90ZGZrNjUxZnRtOXRpMzV6aS9QTDF2dWVhdFljY00ydHluclU1ei9VeDM3VnV1YjI4UENPWTR1QUp0ZXRFbHR0eU9lZlgxVjYyUGV0enZuM2M1ZnJsOG1YOXNuNTczMXkvcTI2NTc2N2xYSmZ6WFQydTZuL2Qvc3RheTljTFhIWWRsdXYzTVYvdW44czVYNTdGOXJwOG5mT3I5czF0Mi90ZTl6cnJ0dWZiZGJGOTE3cnR1dVYrdS9iZnRXNVhqNFBYNVgvcVA3aFFBUUVDQkxvRUJGT1hyTDRFQ0pRRkJGT1pUaUVCQWwwQ2dxbExWbDhDQk1vQ2dxbE1wNUFBZ1M0QndkUWxxeThCQW1VQndWU21VMGlBUUplQVlPcVMxWmNBZ2JLQVlDclQzVmhoMi8vVWRtUGZrUU1UMkJLSS8vTTcvelJFenJkMjhYSmxBdkhMMW5IZDR0Y0JURmNMcEZIYzIrN3ZxNjNXc0RXdVYvd3RwNmR4ZzcrK09hTlp2NTZ5YVdmV0pQRGFwbS84SXEvcGFvSDh5d3RwZHZYZXRxNUY0UFVJbzM5c3p1YnpNZmZSYmkyWDV2THppTDhRK1BVeFB0enNrazhGbDFmY3ZpMXA4cS94cmNkOS9jRVljYS83R0R3UVZqemxFOU9uL3dlYmEwVjVVNldKcWdBQUFBQkpSVTVFcmtKZ2dnPT0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCJdLCJleHRlbnNpb25zIjpbImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6IjZlMjRkMzg1MDA0YTE2YTA3YmZlZWZkOTYzODQ1YjM0Iiwib3B0aW9ucyI6eyJyayI6ZmFsc2UsImNsaWVudFBpbiI6dHJ1ZSwidXAiOnRydWUsInV2Ijp0cnVlfSwibWF4TXNnU2l6ZSI6MTAyNCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMV19fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiTk9UX0ZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDMtMjcifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTAzLTI3In0seyJhYWd1aWQiOiJlZTg4Mjg3OS03MjFjLTQ5MTMtOTc3NS0zZGZjY2U5NzA3MmEiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6ImVlODgyODc5LTcyMWMtNDkxMy05Nzc1LTNkZmNjZTk3MDcyYSIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IDUgU2VyaWVzIn0sImRlc2NyaXB0aW9uIjoiWXViaUtleSA1IFNlcmllcyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjg3MDYsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyIsImVkMjU1MTlfZWRkc2Ffc2hhNTEyX3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURIakNDQWdhZ0F3SUJBZ0lFRzBCVDl6QU5CZ2txaGtpRzl3MEJBUXNGQURBdU1Td3dLZ1lEVlFRREV5TlpkV0pwWTI4Z1ZUSkdJRkp2YjNRZ1EwRWdVMlZ5YVdGc0lEUTFOekl3TURZek1UQWdGdzB4TkRBNE1ERXdNREF3TURCYUdBOHlNRFV3TURrd05EQXdNREF3TUZvd0xqRXNNQ29HQTFVRUF4TWpXWFZpYVdOdklGVXlSaUJTYjI5MElFTkJJRk5sY21saGJDQTBOVGN5TURBMk16RXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFDL2p3WXVoQlZscWFpWVdFTXNyV0Zpc2dKK1B0TTkxZVNycEk0VEs3VTUzbXdDSWF3U0RIeTh2VW1rNU4yS0FqOWFidlQ5TlA1U01TMWhRaTN1c3hvWUdvblhRZ2ZPNlpYeVVBOWErS0FrcWRGbkJubHl1Z1NlQ09lcDhFZFpGZnNhUkZ0TWprd3o1R2N6MlB5NHZJWXZDZE1IUHR3YXowYlZ1em5ldWVJRXo2VG5RakU2M1JkdDJ6YnduZWJ3VEc1WnliZVdTd2J6eStCSjM0WkhjVWhQQVk4OXlKUVh1RTBJek1aRmNFQmJQTlJiV0VDUktnanEvL3FUOW5tRE9GVmxTUkN0MndpcVBTemx1d24rditzdVFFQnNValRHTUVkMjV0S1hYVGtOVzIxd0lXYnhlU3lVb1RYd0x2R1M2eGx3UVNnTnBrMnFYWXdmOGlYZzdWV1pBZ01CQUFHalFqQkFNQjBHQTFVZERnUVdCQlFnSXZ6MGJOR0poamdwVG9rc3lLcFA5eHY5b0RBUEJnTlZIUk1FQ0RBR0FRSC9BZ0VBTUE0R0ExVWREd0VCL3dRRUF3SUJCakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBanZqdU9NRFNhK0pYRkNMeUJLc3ljWHRCVlpzSjRVZTNMYmFFc1BZNE1ZTi9oSVE1Wk01cDdFamZjbk1HNEN0WWtOc2ZOSGMwQWhCTGRxNDVyblQ4N3EvNk8zdlVFdE5NYWZiaFU2a3RoWDdZKzlYRk45TnBtWXhyK2VrVlk1eE94aThoOUpESWdvTVA0VkIxdVMwYXVuTDFJR3FyTm9vTDltbUZuTDJrTFZWZWU2L1ZSNkM1K0tTVENNQ1dwcE11SklaSUkydjlvNGRrb1o4WTdRUmpRbExmWXpkM3FHdEtidzd4YUYxVXNHLzV4VWIvQnR3YjJYMmc0SW5waUIveXQvM0NwUVhwaVdYL0s0bUJ2VUtpR24wNVpzcWVZMWd4NGcweExCcWNVOXBzbXlQeksrVnNndzJqZVJRNUpsS0R5cUUwaGViZkMxdHZGdTBDQ3JKRmN3PT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZkNBWUFBQUNHVnMrTUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFIWVlBQUIyR0FWMmlFNEVBQUFiTlNVUkJWRmhIcFZkN1ROVjFGRC8zZDU5d2VRU0lnUzlBUUFYY0ZMQVFaaTlmcGVWejF0WS9XVFpyNVd4cGM3VzVrbkxhNWpJM1o4NXNyUzJuTTJzanRXd1pTN0lVSDRINHhDbkVReDREQVpGNzRWN3VzODg1djkvbEluQnZWSi9CNFB2OW51LzVudS81bnZNNTU2ZnpBL1F2MEhiL0lyWDNWRktQbzQ1Y25tNGluVUlXWXdMRlJtWlFVdXdqRkcvTjFpUkhoMUVaME5SVlJ1ZHF0MUJkKzJuU0t5Uy9PaHlzMCtsazNlLzNrUTlxdkQ0WlV0YTRWVlNVdVkwZWlweWlUaEFmb2NvT1JWZ0R1dXczcUtSaUFkM3JiY0V0alRqWUlvZjZXYUhzQ216VlBXQ014K2NnaDh0THFXTUthTVdzVWpMcW8yUnRKSVEwb096bWVycFF1NGVzWmdzT05rR3hIN2Qwa2R2VFQxN3M0T01VN1ZJOFpoamdHYU0rQXE5aUVOdThQaWYxdWR6MDdNd3ZLV2Y4R2xWb0NFWTA0UEM1V2RUYVhZRmJSOHZOdkw1KzNLZ2ZiNXhOTXlhOVJhbUppeW5hTWxHVFZ0RmxyNmJhOXUrcHFuRVg0dU11UlJnalNZRWhyTjd1dEZGZTZscWFsN05ma3c1aW1BR0h5blBwYms4Vm1ZMHhzdG5wdGxGQ1ZDWXR6VHVCTjgzUXBNTGpUdGV2ZFB6U1VuSjdlOG1ranhaMzlmWGJLRGZsZFpxYnZVK1RVZ0duQlZGNmZRMmlQSGc0VzE2VVdVd3Z6YmsxNnNNWkUrUG4wcHZ6N0pTZXVBeWVzOGxjcENtYUt1by9wK3FXcjJVY3dJQUhXcnZQMFlFemhYQXRMQWJzc0hocDdpR2FtdnlpalA4cnlxclhVV1g5WG9vd3h5QXVmTkJycDQzUE9CRlhabGtmOE1EUmlxY3B5b3dBd3B1ejJ4K2ZXdnovRHRkZTlzbXN6eWd0Y1I2QzF3YmR6Qmw2T2xxNVdOWVk0b0dhdGhKTXJrVEV4MGpBUlNIQVZzKzVyWWtRTlhiK1FnZlBMc1E2Z1h5SW5zcmVRZm1wbTdSVkZZZkw4Nm4xZmlVT2tZdlNoa1VQeHZidWt6b3k2SzFpaE0xaG8zWHpXNkV2U2ZYQStkcGlXR2FXZCtkb1h6THptR3dLWUZMQ0FzUkFsUEJBaE1sQ0ZYVTd0QlVWUHI4SGdWY0pIV3ErRjAwcGxyK0RNVGRyUDR6dnhZMTFrTk1oeFQrU2VUR2crZDRWNUxRSml0eVVHSk5COFZGWnNqZ1lCWk0vSUkvWENUa2owcXlET3BGMkFWUTE3Q0lqVXAvRG5UMVVrTDVGNWdkaitzUzF3ZzFnRTNnaWdtNjBmQ1h6U25QWGJ5QVBiSVh2K0lEcEUxNlRoYUhJUzlza3lobG1NRTVGM2NmcUFLaHEyQzBFNVBIMWdZYVhhTFBEa1pHMEhESk9uS1dIcDUxSTB6NVNPdXg4ZTFXQXVaemRIUXJUa3A4VG1qWG9JK2xhMHdHWnN6dWJxYk8zaWZRNkEvVzd2VlNZc1YzbVIwSkt3a0tjNFdIaUJrbVI4STNDQ2dJODdvT0w0cXpUNVArUlVKQmVqRU9nQVBLOGhZUHphdE0rZUlUcDJJTzl5VFFtZXJvbVBSeHgxcXhBY3NpbGUvdWJTZUViY1dRR1lFQ2doY0xZMkh5S2pvZ2pIMjVoTXBqcFV2MU91Z2xpNGVoMmVSdzBPMzJiSmpreXVDZ056ZzB2emxZTVNpU3MwdW9vNE1HN2hNT2pDRWFYMXlGRTBuU3ZqQnp1VG5FcEs4Nlo4SW9xRkFJdWJ3OGtnOUFyRWFSRVdTWkkrakg0WGJwNmc5RTlFbkpUM29hUnpETitNVUpCUURIbjU2YThvVW1FQnVzT3hCcy9ONSt0SkViUGtBRkRqOFVHdk9zL0lXdmNTZ2xHQmh2UzcvRlRZZnBXR1lkRFk4ZlBBeFdTQTM1c1RDNHA0K0xtNEFhcUlvUGVRdGZ1Zks2SmgwWmh4bGJzVVhPU21YTmlmRDVaVEFreURvZmJiY2NseG5BOFdOQXF4Q2JSTnlraFh4UXBhRHc2N2ZYVVlic2lHMEtodHYyb2VJdmg4cmhRTVlPY0VBcVhHL2VJK3puZ09jNXl4cjhxODJJQU0xYy9GTEZPcGxxdTVlRlFYck1aekdjVkNqWWJMV0c1STRCVDFldVJybGJ4dE5PdE1pdERERWhMWElJeW5BQXZ1T0VXRTNYM05kQWZ0OTRWZ2FHNDJYSVF0MFpYNlBlQ0UvcVFGZTlySzZIeDdZVTUwS3ZIN2ZXNGZTK3E3S0tCSnhzZ2dCWDVwU0FHaDFqSXJWaDV6UTZ3M1JmYWFoQlhtL2FDYkNaVGpDVUZVVHlXWnFXOXA2Mk1qSlBYVnFPclBnTU80TnY3NEdrZitvd2Z0TlZCRFFuakZKcUhTdzE3cFh2aFdXNUtacWUvUTQ5Ti9VU1RDQVZXb1FYRklIQkhYWGUzRlByVURzdUdEbXRGL2hIS1RIcGVreGhpQU9QSStTSnE2UzZIRjRJOVlXemtCSlRvNDZpVU16V3A4UGlyL1JpZHVMeEtZc1Nrc1Y4dkxsT1F2aEdYMllsUjBPQmhCakMrdS9nRWN2WTBBcEs3WWs0MU54alBTUW5XRkhURjY2VXJqZ2V2QjhDdTVhK2wydllTUlB0dVZEbzczaGhkTVNIblVYN3RUanNWWkd4QWwvV3B0aU9JRVExZ25MMjltWDYvdFIxdG1sa1lqOFc0WCtDU2pXY1VER1kxTnBTL0M3aFNLcWlNTE0vbDJRbVNXWjczRGR6K2dpbzhCQ0VOWVBRNDZxbmt6d1hVYnF2Qmt4alVRc1dmWkZnYnVvM3JBZit3TjdqT085MCt5bng0UGkzTCswbllMMVNjaERVZ0FQNGdQVi83SWQxcSsxSFNobXVHa0lxV1JQZ3l4TUZxUDhIZmpUbmpYd1k1YlFmYkpjdDZPSXpLZ01Ib3RGL0hlMWVnc2F4SFNxRzZ3ZmRtUTV4OE55VEZGcUJjcDJpU293SFIzeWs1KzM2aEY3dlhBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMV9QUkUiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6ImVlODgyODc5NzIxYzQ5MTM5Nzc1M2RmY2NlOTcwNzJhIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWV9LCJtYXhNc2dTaXplIjoxMjAwLCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjgsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4LCJ0cmFuc3BvcnRzIjpbInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi04fV0sIm1pblBJTkxlbmd0aCI6NCwiZmlybXdhcmVWZXJzaW9uIjozMjg3MDZ9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMC0wNS0xMiIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWXViaUtleSA1IFNlcmllcyAoVVNCKSIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMTkxMDE3MDAyIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjEuMSIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4zIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIwLTA1LTEyIn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMC0wNS0xMiJ9LHsiYWFndWlkIjoiODg3NjYzMWItZDRhMC00MjdmLTU3NzMtMGVjNzFjOWUwMjc5IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI4ODc2NjMxYi1kNGEwLTQyN2YtNTc3My0wZWM3MWM5ZTAyNzkiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiU29sbyBTZWNwMjU2UjEgRklETzIgQ1RBUDIgQXV0aGVudGljYXRvciJ9LCJkZXNjcmlwdGlvbiI6IlNvbG8gU2VjcDI1NlIxIEZJRE8yIENUQVAyIEF1dGhlbnRpY2F0b3IiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MiwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUI5RENDQVpvQ0NRREVSMk9Tai9TK2pEQUtCZ2dxaGtqT1BRUURBakNCZ0RFTE1Ba0dBMVVFQmhNQ1ZWTXhFVEFQQmdOVkJBZ01DRTFoY25sc1lXNWtNUkl3RUFZRFZRUUtEQWxUYjJ4dklFdGxlWE14RURBT0JnTlZCQXNNQjFKdmIzUWdRMEV4RlRBVEJnTlZCQU1NREhOdmJHOXJaWGx6TG1OdmJURWhNQjhHQ1NxR1NJYjNEUUVKQVJZU2FHVnNiRzlBYzI5c2IydGxlWE11WTI5dE1DQVhEVEU0TVRFeE1URXlOVEUwTWxvWUR6SXdOamd4TURJNU1USTFNVFF5V2pDQmdERUxNQWtHQTFVRUJoTUNWVk14RVRBUEJnTlZCQWdNQ0UxaGNubHNZVzVrTVJJd0VBWURWUVFLREFsVGIyeHZJRXRsZVhNeEVEQU9CZ05WQkFzTUIxSnZiM1FnUTBFeEZUQVRCZ05WQkFNTURITnZiRzlyWlhsekxtTnZiVEVoTUI4R0NTcUdTSWIzRFFFSkFSWVNhR1ZzYkc5QWMyOXNiMnRsZVhNdVkyOXRNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVXSEFOMENDSlZaZE1zMG9rdFo1bTkzdXhtQjFpeXE4RUxSTHRxVkZMU09pSFFFYWI1NnFSVEIvUXpycEdBWSsrWTJtdyt2UnVRTU5oQmlVMEt6d2pCakFLQmdncWhrak9QUVFEQWdOSUFEQkZBaUVBejlTbHJBWElsRXU4N3ZyYTU0cklDUHMrNGIwcWhwM1BkemNUZzdydm5QMENJR2p4emx0ZVFReCtqUUdkN3J3U1p1RTVSV1VQVnlnWWhVc3RRTzl6TlVPcyJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFMUUFBQUMwQ0FNQUFBQUtFL1lBQUFBQUJHZEJUVUVBQUxHUEMveGhCUUFBQUNCalNGSk5BQUI2SmdBQWdJUUFBUG9BQUFDQTZBQUFkVEFBQU9wZ0FBQTZtQUFBRjNDY3VsRThBQUFDK2xCTVZFWC8vLy93OFBEWDE5ZSt2YjJscEtTa282Ty92cjdhMmRuMTlQWDYrdnE3dXJwNmVIaGZYRnhHUWtNc0tTb2pIeUF6THpCTlNrdG9aV2FLaUlqUzBkTFkxOWlEZ1lIOCsveloyTmw0ZG5jeExTNlhsWlc2dWJuNCtQam81K2Q0ZFhZbElTSTVOVGF1ckszKy92NjR0N2NzS0NsWlZsZnY3Kytqb2FIazVPUTVOamZyNit2ZzMrQmxZbUpXVTFTb3BxZkh4c1ltSXlNOU9UcFNUMUEvUEQwNE5EVjhlWHJXMWRYOC9QemUzdDZIaFlVdEtpcTh1cnN2S3l6ajQrUHY3dTVmWEYxblpHWFIwTkVuSXlUaDRPRDA5UFFySnloYVYxam01dVorZkgxRVFFSEZ4TVRLeWNxM3RiYWlvS0dOaTR5MnRMWHU3ZTdHeGNXeHNMQ2VuSnlSajVDbXBhWFF6OCtSajQ4L096ekV3OFNXbEpSVlVsTW1JaU5UVUZHVWtwUDkvZjNJeDhlSWhvWkhSRVZrWVdLa29xS2VuWjNVMDlOaFhsL1QwdEpLUjBkN2VYa2tJQ0dDZ0lCc2FtcHJhV25WMU5RcUppZHJhR25sNWVXMHM3TlhWRlRzN094RlFVTDI5dlkrT2p0MmMzUW9KQ1ZjV1ZxYW1Kbk15OHZOek15Ym1abzZOempuNXVjM016VHA2ZWxZVlZYNysvdG1aR1JpWDJET3pjMVNUaytWazVPUGpZM3E2dW8wTVRGdGEydUJmMzlNU1VxR2hJVmVXMXZMeXN1d3I2K3FxS2kzdHJZMU1UTHk4dkxqNHVKYldGbkt5Y2xDUHo4cEpTYXFxYWxJUlViYzNOeXNxNnV5c2JHenNySjFjblBmM3Q4ek1ERXVLaXVabDVpaG42Q2NtcHIyOWZYSnlNaFBURTJMaUluMzkvZGRXbHM4T0RsemNYRnljSENBZm41VVVWS1hscFpMUjBoMGNuSllWVmE1dUxoRFFFQ1FqbzZmblo1SlJrWnhibTlqWUdFd0xDMU1TRWxsWTJQejgvTkJQajlSVGs3YjJ0ckR3c0pRVFUycHA2aHdiVzVPUzB5TGlZcGdYVjdQenM3NStmbHFaMmd5TGk4N09EakN3Y0dkbTV1Smg0ZXJxcXBBUFQ2bnBhYlEwTkNFZ1lKK2Uzeng4Zkd0ckt6QXY3OXliM0NGZzRTU2tKRnVhMnkxczdTOXU3eXdycS9Ed3NPTWlvdUVnb1BjMjl1WWxwZTl2TDE5ZW52dDdlM2QzZDAyTWpPdnJhN3A2T2lnbnA5cFptZDNkSFhCd01EaTRlRkdRMFIvZlg2T2pJeHZiRzNXMXRhYzEyVjRBQUFBQVdKTFIwUUFpQVVkU0FBQUFBZDBTVTFGQitJSkdoYzZISTB0OG1BQUFBMlRTVVJCVkhqYTdWeDVmQlJGRmk3Q0hVa2FSQXkzd1VDNHhKQUFTN2pDRVFnb2tWUGtUQml5aWtDR3k0VVZDVUhPb0lhUWNDY1lnc2dweXhGQUVUY0NJZ1J3NVVnTXVBcm94Z3RXRlBCWVYxMTNmNy9OMU91ZWV0VmQzVE0xRVNaLzlQZFBwdDVSL2FXN3V2cFYxYXNpeElZTkd6WnMyTEJodzRZTkd6WnMyTEJodzRZTkd6WnNTS05TUU9VcVZhdFZyK0Z2SGw2aVp1QTl0WUtDRlJXMTY5eGI5ejVmcTZwM1AwUElIYVJjdjBGRHhZQ2dScjdkOGNhb2ppWjNqSExUQjBJVklabzlHRlpSU1Rkdm9aZ2l2R1hGSk4wcVZMRkFVT3VLU0xxS1lvMDJiU3NlNllkYWVDQ3R0S3R3cE1NZTlzUlpVU0lxR3VuMk9vS1JVUjA2UnVwa25TUTcyenRPK2dITUx2Z1BuYVBMWkNGZHVuYmpXSGV2V0tTYjlFQVhpSXB4eTN2MndxUjdWeXpTZlZEOXNYMlJvbDhkcEltVCs4VGNhZEtCcVA3K25LWWV2dFVES2hUcHFxaitSM2pWbzBnMTBPalpNdjZ4UVlNSER4b1NQMVNTOUlCaHd4K3ZPK0tKd0pFKy96K2pVUDJqZVZWRWI0WXhPcmVBc2VNU05MZlF4UEdkdlNYdG1KRDBSOWJvbm54SzdnbHFtSWdid1dOZU9qMDlTZCtUMTVyc0ZlbnVVL1FkYkhKVEgwZzN4MVU0cDNyenhOcE9jeW9HT0tlamo3MEo2Um1KUmo5bFpsSk5hZEo5K0NvYVBoUHhKdzhlbmFNVUlhSllHeEdUbm1VU0w4eitzeXpwR3NhYW5wMWFiWTY1UStOZ3hRVEJqUzFKRHpielU1NnJMOHQ2cnFpYWxIbXA5Y1RtODJOTnI2MmtQRzlCZW9HNW43SlFObzZjYjFaVG13ZUdWREpZTDFwc2NXMmwyUkpUMGdNVHJCeVhwa215WG1aZVY4SUxML0syanBld3VsdXY5T1hoTTdGa2RwZ0o2WXdWMkt4VDV1TlpLN21SeHlwSjBwVk1YaXpBNmpYWWRpM1NSSzZqc1YvTlZOeVhyRGNoL1FpU1pNT2R5Sm1PWkxFYkpGbmZ0MEt4d3N1NWJzdVFqVXljRjZoSk42RW4vNHBEU0hvRGVoTVdibGI5b2hzZ3M3bVNwRW5ybFphc2xmR2E0YXRJdUlYNTR3L1VWaUhwYmVnQmJXZU85ekp4d2tPeXJPZU0yR0hKT3RrQmRpaGNqWXBHN21qS3BMZUlkTnBPVnM1RTEzMFIyYjBtUzdyc3VydEdXN0grQ3pYYW5jY2tqYkQzS2liZm1TWWd2UWVWdVhka0w1T3ZsaWRkMWw2SFd6U1N2T291ays3b2FYSmZzYjdJZEkrQTlENVduTUpkZEIyNlJMNHZyQW1KaVpoZTI0VDFmcGMraVpVUDhKN284YWNMU005bXhZT2Mzd3hrT044MzBtVnc5RWwvZWFhQXROTVZRNzdPeW9tOFd4RFR2Q0VnalRxZGZaemZVR1M0M21mU0xqUnB2L3lRSVk1N3MweFJpeFdmNFYzMk04MDBBV24wSUFieGpuRk04MVM1U0x2UU9qMklKKzBhaWgxbXhhbTgrVnRNODFjajZYeFVMT0FkMzJhYUkrVW1YWWFqWEdqME50OElrbmpiZS9pR295T2RnNHJWZU1kalpnM0hWOHpIamJ0Rm1TQ2NGZC9oVFk4elRXOGphWUs2U3QxazFidE1NOUZiWHRGMVRqRHMwV3RQNGx0ZFNFZ20zd2dRVU1OSkZwQkcwUTNmQ1BvaHd5M0VXeXhFWGxsNjVTYWtkSllOaXJKWThSUnZpVDZveXdXa1Q3TmlBODd2RERJYzVqWHBwY2lybzE0NUhDazdFUzcwNEQ4RkxaRmhnWUIwTWlzdTVhNVFnTzdLVU9JdDBHdXZLTy9wbEtoZlZ2NVdWbTZMT3NKTjJEQ1Z5V01MQmFSUjJka0ZPNkozWWEvWG5NbjdtSFRENnB3dUJuOGV6eEwrTVo5RGhnNFV0NFFUQWVsK3FDUEtRbzU5MFYwNDd6M3BITzd6RjRXam1jNmRzSW9PV2hzaEFSclRZSTRUUmFUSkJWYnVVY2djNzBkMlJkNlR4ajJDQzNWZTNWRHNFczhwK0NBUHkydlR5WW1jRWlhNWVFYXJvZ2c5a2V6ZFF0SjRJRG83UjNPc2drWmM4eVE0azF6RmdCV0huMzFYTDFNZjZsZ2syakVTWkpmd25NS0hSRWdhTjE1bHBSb2hqc2NYa0F1WGtoVXZzRmhkbDZ1Qm0weGs0dDhyTjcvL0hCNmdYc3czSVQwREQ4WjNUbXJVL3FPNUgrTUxQQ25GbWZTekhOZXFjRS95eGNkYW1hVVVFUlBTNUVQTCtpL0tUaktOTEZFOEFYMFJxbHJaWFNhbXBNbFpDNys4SzVLY0NhbmZ4Z1BucTNnZElNbmN6aDFGaVVqUDZXLytnTFpLY3k3cmtNOVpVWTVzeEZ0SG1MU1FXQllMQ2VmeTBqNHh1VUQyR3ErWllqZ2lzazA1and2UVcrY2VFTmtkWU5NalpsTzlUK3dVT1hhUVg4Wlc4ZWtSOFdqODNEOEVTMFRGdXpycDdSWWZMVVlHWnBQcVBaTU1jN1JUR251aVpvV3crT1RuZEJXZVdtVTJCNXQvK1NTNmZOeVRWWFp6NnBGbzRZT2ZXc3g0Y3lucS9MSVBOdllsTTROSHk0RUw3c21jOVBDVU92MTdieHRWMnRQU3R2aFM2cXJQOXUvLzdQUFVVcmtGbjBwRHhtWmxoaythdSsvb1NFZTVHZHV3WWNPR0RSczJiTml3WWNOR2hjWGxjQmUrTU5GdW9kcncvcjZ2VE40UjFLVkR6Qy9GeXEzcUtIU1h2MWxLa1A1SzVkekszeVFsU0srSFBHcG5WWDl6bENCZG9ISit3dDhVSlVnSHdweWQ4MzEvTTVRZ2ZRMDRoMjd5b1U1L2thNmNBcHhmOVRjL0NkS2xzRXdVK3FDLzZVbVF2Z1NjRTY3N201MEU2WC9DNm1MQ2NIK1RreUE5RVBKZEVueFpWZkFYNmZiQU9mSXJmMU9USUwwSHBzc2pUWFB0dzlZa1RSODN1czNlZHNscjBaSXhjVFJ4UVp5ZVcweDFyRHhnMkxxdno0NDdualh4V3ZYODM0TjBMaXpBeGpZM3NjKzRnWEpFOGs2eUhRN2ZVRW1VUStDemlDNlF1bFB5NGxFR2x4Sjh2aEtSaG83MEd0ai9GR3V5RkJKOUZPOUFjdUYxZDU0RzVJNk1FWGg5aTBQRkNlRzZHaHFPM1Uwa3daTitIamlubUd6V3l0aXJHTEJEaTdVaFQva2RnUnZkSlJMM0tmMWRXYkJqTTBwMndaWWpYUVNMWmlrM3hiWXhwN1JtY2ZwVzBvVm1hbUdubWtWUlRKT0M0bklNYnBPcEdlUStkbEZ6QmZMZXJyV3QzV0V0czNaZU5KRUNKajBTbm4xZU5iSHBCbWpOb2VjN3crdDIrem9rVGZTWUFmclBhY2tZRkVKYVI3enJaeUdreVkyK3JPNFR1YklNOGxTKzlwbDBIN2dMZWFWaXkraERWTDBRWlpVMW5VZEZoMkcvNG5lMDBFSHZGL0s5U3h4RWYvOUFUV2FqUG1ZUERjeWM3eEVaTU5LVDFZZVZNa05zT1lKcWUzRXJkUTV3aDFSbEFzdmYzK2o4YmlJVGV0Tkxmc1RxZjFGMUpwR0JtL1RUN215RVI0VnY4eGs2SnZqK1U5MXRwQzladHd4YTJFcmRkZG1SWkJxOUU5REowTDJ4UC9INkRpNVpiWWN2cER1anBKNXRJc04vVTlVUGV2RjdWQXlML2pYcEVydHVjeXVrU2NGTDQ2QWZnUkY4RFYvUUdxU3lKMVRTQVZ5Q3ZTQlNXa0lEN0hDam9wMUx2aEYrUTE0RjMvZEVVQm5zRFF5aC9kMVp2Z0pJc2g5UEpBQ2t6OEVPakx5eE1DN2MyZGRnZDhUc2ZseWlDc2hCZUlqMkJSOXdlcHJ4ZlVwZEE2ZmQ1UGY4Z25qSVZoZWtabGJxb2h1Yzk3T1dXblhhRUVQUWJUa2xEbU1GYlhGRHBvblVzVGlaOFJjbmF6NkVRQWMwVmJKYnRpTHQ2dXNjMElrWjNxWkNPZ1VpM0NDOEdMV2JJZFQ1S05MU0ZodVpvWmJVSFZ6SHE1TnlnWkdHYjhvU3lGZlJkNXpYcVBSeFVRMTBJMGszZUFacDlEODRnYlFidWY0aVE4djJPNVorUlhhL2xvaDBTbVVRVklOdjFHSStIb0RreDB0dEJiaEZWZXE5MjBjTE05eCt6OU55cWJ1TURsNllPVzVWd2UzeWtkWTRFM0lEQkJlNDErV3E0Z0VxTDJqQ1dXNC8raC9oZVBWejN1M1g1T3ZXZVNWV3BGR01WRlBOdzFxQXpUN3pSRm9ibTlIR3NrUGJnbHBjWXVpWXR6VFRlYmI0cEF1UkJKQk91WVpFMjlXWUdwOVpjOEVUYVMxT2drMjcyckJudmF1UXNJaTdZdHFzcFRwZjU3SUFJZ1VnelgvNklheFJUdlZqb3BPZVNHdDdyMExvalR5dWx1aG1SMk5PWmtCU0lwOG9GM3lOeUVBNDczRVFxbnFkU2VpdTF0Q1lERk80NDVYQjlPYkNIdENobEZxZzZMcjVFOGIzUXFkRUpMeElKQ0FrWFVQZEE4UW1tR0JQbVRlSEhMV21uK3B2NmU5QnJwL05UQS9hQ0xtU1drdkwrKzRvTStZU1Q0dE5ocW04YnU3TmcvQlY4T3Awa2hkY2xoQSswOVIyNndEL2w2UVMvUTN5bGJTV2hYdE82d2JXME9JbjN0UUlaMEs0b3BUdDlDM3p0Qk4xTTZRbXltUWptNUFPZXdGWTMxRExOZWtNVHFJM05VYlRVZGxWb3FaMTEvTG9zSm0yL0IzbEowMXVRM2ZxTEZYTE5DWkpFZDIxV1JQTGdJZVZOQ0JzNHlDRW5ud3doQ24rNDM0R1BHQ01YMHk4aHVsS3dFQVk2MmVyc1E0a1RrOHoydjFJbzFtOFhqQ0FCbGNUWVBvbUd4MTFRTjlMNVRkREZaRHZLNUVvYTc3bWNoNGF5R3I0bk0rQjk4V1lOdndiL2FyMXd5STZMa2lHUVdWWEpCOURxemhocUFJQ0I0azR4SngwQ0FTL2RDdWkyL0MwUHFOMU54MXJ2OFhKNkZDMmR0cXZyai80RTUzZlRYeEw2UmN5VmlKWDFtSkpMZ2FtRkNKaG0wVUdETWgwSFZnYTdIQ2V3QWtkTk1PYVRvYng0elBZbzNSSWR6N0VBRHJsZWN4N3pwYUxuMFBVZmg4bVI5V3M2S3Y0VytINGtzcCsxZDBsR3ZuVGxyMldrNnY3WFk1em41dGkyS2lVL2p1UjFqWkgvaGRLNnU2U1krN2JHcmIrQkpXczJLN3phNm9sU1pmbzBwVFZNeTdtWFdMLzVacVhxV2ltcDNORnZDYWRyeDR3QSt0eXhkcFpEeDkzM1RMaGZ6OVhxZnNLRk9PS0RJNjlWVXZkdGxiU1U5dWdzbkg4Vi9GOWx4UnRmVk03SlN4VmdyTTFhVklQVmwrQ3Y2T2xFT0crajFCQlFGU3E2Z3lwN24xTnRub3NreHJyV3BQVzlyV3NoSjdmTVNMT2NMazJzd1J1NnNhNVEwYk5kdEhCTlVvRHVmRzVCOUxrSi80NXQ1N0dYMjNIZ255aDIxU3EvVWowLzdUU0gyeVNrQ2w3Uk9aTmVpYW1lWWhWNlFZMXVPcWV5OWljN2o3QXE4V3hJNFVtYnMrNjlEM0VaOStrRlN6N21CMFVWL0tHN05rZXZtRlI3cXlqb3pibE5qWC9IRUJRZU11OGl1aVk5cHQrNjdxcmUwQU9xVENBcnUxcGY5T1F3byswMDNuSjN6VGtBRWZVQkphL29ydUlYQnJWSHk3L2JxRzdnZHUwNndxN0NWRnNCVjZteGloU05sNTQ2eWQxM1M3STRXODYzcEptaUpQZnplbDMwazV2ejk3ek94anBGSzhQdnZBN2ZrbUVPRHIwWUV6NUs3dDdLTHd5cHZuQUx2bitwbUhEaGcwYk5tellzR0hEaGcwYmR3Ly9CMlpISUo2RG02VDhBQUFBSlhSRldIUmtZWFJsT21OeVpXRjBaUUF5TURFNExUQTVMVEkyVkRJek9qVTRPakk0S3pBeU9qQXdmelBZZFFBQUFDVjBSVmgwWkdGMFpUcHRiMlJwWm5rQU1qQXhPQzB3T1MweU5sUXlNem8xT0RveU9Dc3dNam93TUE1dVlNa0FBQUJYZWxSWWRGSmhkeUJ3Y205bWFXeGxJSFI1Y0dVZ2FYQjBZd0FBZUp6ajhnd0ljVllvS01wUHk4eEo1VklBQXlNTExtTUxFeU1UUzVNVUF4TWdSSUEwdzJRREk3TlVJTXZZMU1qRXpNUWN4QWZMZ0VpZ1NpNEE2aGNSZFBKQ05aVUFBQUFBU1VWT1JLNUNZSUk9IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiXSwiZXh0ZW5zaW9ucyI6WyJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiI4ODc2NjMxYmQ0YTA0MjdmNTc3MzBlYzcxYzllMDI3OSIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZX0sIm1heE1zZ1NpemUiOjEyMDAsInBpblV2QXV0aFByb3RvY29scyI6WzFdfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjAtMDQtMDIiLCJ1cmwiOiJodHRwczovL3NvbG9rZXlzLmNvbSIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiU29sbyBGSURPMiBBdXRoZW50aWNhdG9yIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAxOTEwMDEwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMy42IiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjAuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMC0wNC0wMiJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjAtMDQtMDIifSx7ImFhZ3VpZCI6ImZlYzA2N2ExLWYxZDAtNGM1ZS1iNGMwLWNjMzIzNzQ3NTQ2MSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiZmVjMDY3YTEtZjFkMC00YzVlLWI0YzAtY2MzMjM3NDc1NDYxIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IktYNzAxIFNtYXJ0VG9rZW4gRklETyJ9LCJkZXNjcmlwdGlvbiI6IktYNzAxIFNtYXJ0VG9rZW4gRklETyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH0seyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MTAsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6MCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MTAsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6MCwiYmxvY2tTbG93ZG93biI6MH19LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlCYURDQ0FRK2dBd0lCQWdJVUpVcjVUQkwrUi9yRmZ6VGZHcTh0RGRhd0F3a3dDZ1lJS29aSXpqMEVBd0l3SVRFZk1CMEdBMVVFQXd3V1MyVjVXR1Z1ZEdsaklFWkpSRThnVW05dmRDQkRRVEFnRncweU1EQTNNamd3T1RRME5USmFHQTh5TURjd01EY3hOakE1TkRRMU1sb3dJVEVmTUIwR0ExVUVBd3dXUzJWNVdHVnVkR2xqSUVaSlJFOGdVbTl2ZENCRFFUQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJNS0kya0cram1BN0hhV29wUGRudmhCd1JjYnFnK21KUlNhT2hTcWRCZkkwMHNjSXgzOXllaHM0TkNJRWR6bE9nQ0V0d0hHaFRGeklGQVhhaGdTaFVwZWpJekFoTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0N3WURWUjBQQkFRREFnSUVNQW9HQ0NxR1NNNDlCQU1DQTBjQU1FUUNJSE05VzlvbkNIQ0l5aWx3QlZrVitSVTFEc1RKTmliZnhhNlYvSEpGUGVRVUFpQjY5cU8vdzlieGVicStaZDZCdGtTWGpUM0hLZk5lWFlQN1A5Yi93TXpwalE9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFNZ0FBQURJQ0FZQUFBQ3RXSzZlQUFBSlZFbEVRVlI0MnUyZFRXOFdWUlNBKzQvOFMvd1FkbllscktRcjZhcUpDNDBzTU1GRURRc1dKRFlhVWpRZzBWQ0pSQXNTQlFvcVJkcXhaK0tRNmZqT3pMMHo5OXg3enJ6UGsweWtXTnAzMm5uZWMrNDU5Mk5qQXdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBS0k1ZnZIVFlmdmlKd0lyT2JwMXUzcjU0Y2ZWNGRibDZ1bjV6YmZYaSsyZDZxOXJYMVN2Nzk2cnZJdHc4dWhHZFh4L3B6cisvdjNxK050M1YxOEpKTG43K3kvVnRmMjlhdnU3RzlYRmJ6NnJ6dC84cE5yYSs3TCsrUHJQZDZxRGwwL1BMZTM1a2Z0cTM2OWNtMTlkOVgvUGYxKy9VVDNidkhCR2lyN3IrY1ZMYmtTcGpoNi9jL0xyNTlYeER4LzB5NUJZa0Z1UEg1eDVRSVl1K1R6NWZPOWlYUG54NjZEN2xVdGsyWC8ybTQ5N2ZuTndjRTRlK0JBeHVwZEVHcXYzVlVzeEZDR1VCSkVJRWZxZ2RCOGFqMktJM0JJaHB0eXpSQlR6NlZSbzFPaTdKQlV6bFQ0OStHaTZGRE1Fa2RSaDZvUFNUa1U4cFNDU1BzNjVYN2trOHBpTkhIUGxzQ0pKUGJDV01VVUtNU1lLTWpWeWVKVWtKcVVhdTBRMGN6ZllIWVRQdldRTVUwU08xR0pNRUNUbHcrSkJrdFQzSzVlcE1ZbWtWaW5sYUs2c1l3eXBSR21JRVNtSS9HSlRQeXlXSmRHUXc5d1liT3FnM0VJVWthcFVkRVZLVVJDdEI2YTVMRlc0dE8vVnhCdUNqRDAwNUdqS3Y2cFI0NCs5NnZqT2UvcHlSQWd5ZDJEdVJSSnRPY3lNUlY3ZDNLMjBCTkZNcytxeWJRNHhJZ1RSU3Erc1NaSkREak5wbHFSQm1vTDhzNS8rRjVtc2RPdFlrRktTNUpLamFab2lTR3lWS3NkNFk2SWcwdWpLS1VodVNlUWRQZmY5SVlnSE9ZeEdrSnlTcE9ycnhGenlQUkhFZ3h6R0JkR1dwSVFjakVGaXhod1ByNWFWNC9RS2ZhMmxCTkdTcEpRY1p1Wm1XUmRFdlFFWWNFbFJ3T0lnVm5zdVUwazV6UFJCTEF0U3o2a3FMRWZzTkJOWjgxSHlvVW9sU1drNVRJdy96QXVTcXdrNEZEMGV4ZWZCSmFvOUtTVXBMWWVwdVZoV0JTblM2K2pLY1RyMm1mcHp6ZEZSMTVERWdoeW1wcnhiRk1SQ2FpWFRXT2I4WEV0V3RLWStiQ1g2T0daVEs5T0NGRTZ0NXNyUmtHTFJWRzVKU2hZWnpNbGhVWkRTVmF0VWNpREpBdVN3S0VqSjZCRWpSOHgyUUVqaVZBNXJncFNNSGlGeTlDM2xyUXNLSTdKWWtTVG1ZY3doaVdrNXJBbFNLbnFFeUJIU3pSOHJDU09Ka3cwYUxBcHk4bVRYZEZxVnFqVHNVWklVdTVXNGxNT1NJTFAyck1veDVrallQL0VvaWN6eldqczVyQWhTcnl2UEtjZHBLaWZmVTdONGdDUUxrTU9LSUZtWHp3YkswYTFTMVJKSFJybVFUcnlGem5VdVNkekpZVVdRYk9sVnFCenR0U2VkZnhPN0xnVkpITXRoUmhDcmNpU1NSRDUvblNWeEs0Y0ZRZXF0ZXl6TDBmTTFwS1RiWEVIQ0JEUVZMVWdpR3lXRXJzTUlrY1MxSENZRTBWNHRHQ2hIVUpQeU5CVWNMRFFNaVJMWWRiY2dTY3d1amtQRkJ2Tzd0WHNRUkhXdGVVUzFhbFNRRlY5TGVqZmR2K3RMMFdKK0p4NGxhVGNVNWZYTHdyR05KVkJjRUNPbDNNRkdaVGU5NnE1VkVTbGFFZUxNLysrT1h3TG5jSG1UWkxFc1VwQ0FRWEZ3dXRkNndPczBhcUFmMG00ODFsOXJhSER2Wk9DKzlwS1VGRVJsWVZSQTVPZys2UDk3c0ZjOHhHTnlqSFhuUTZwalNJSWc2b0tFckNGZjFYZHAvN3Rha2dseXJKSmtkUEErRWttc3JFeGNXMGxLQ3FJeHZYM09ZSHhWVXk5V2ptN1ZLbVFTNXRpY01BdFJwSkVFUVR3TGNuOW5QSHFNVk0zYWtreVdvN1dYVmxDVUhIbmRGdGFLTDZhdnNjNkN5Snl1RkYzNzNtclZSRmxEeGsxYTg1OFdmZklUZ3BRVlpNNTVoMDBrQ3AycDdDV0NJTWlhcDFoSkJPbEVoTkhwTkNPdlcyUEJFaWtXZy9UcDM3TVpZRStaSjlaVHVoMzZXaktRSDNyTk1qK0tRVHBsM254bDNxR0JkNmZzR2pWWGJFVmpzRDNvWHluSndQd3V5cndJb3JLRFlteWpzSzh4R0NWSnQrUGVTdVY2SlFsb0ZGcUlIalFLbHpiVlpFbzNmY1ZEUFBydTM0b0NvOU5SSmt4L29ZdU9JQnVXMXAydkVtRlVrb2lPZTh3NUk4aUJJTE5McWFrbDZVdjV1aDMydDR1bHVsTkt4cHFLQVZVMkszTEVidWdtMWExbVhRalQzVk11bU5MZXNDSFJtcEN4ZC8rUWRmVWhFY1NiSEVNTHBoWlJFbWJKYlZ3SldLSkpIVDJlN05iL1BUUDJHSkprZ2V2U1E3WXVZc250T216YUVGbmFqWlZESHJRbHlzR21EYWtFeVhYRXM0d1JBbGJ6SlpVa1FBNXZHOGhOZWMxcysrTmw0N2pRbmR4blNxTDFvSG1VZzQzanZHMDlxaWdKY3JEMXFNN20xYm5Tck5oakQyS252QWVrY09zcUI1dFh6em4rSUVjMVMvRnNrRkJCUEo0MkpldFJVcjltOHdmbldCT2tqaUxlRDlCeHNxTjdyQnhyZTdxVU5VR3NIOEZXUjdtZU11NVNJd2RIc0hHSXAvb2huakpsSFRrNHhITVp4MENQTEY2S3hjcDZjcXR5Y0F4MHBDQ2g4NXBVSlhtWVp1VWNjaXhBRXBPQ0tDMmt5aW1KekdiMUpvZUYxMnhPRW91Q1RPby9HSlBFMjVqRDBvUkpVMzBTcTRKWVNMVkN0eExxSWx2amxIN0laQ2VVcVQ5M0M1S1lXVTlpV2hBRHFWYk00VGROT2JmMHd5WGppTG5QUldsSlpDMCtnb1NrV2dGNzI2cGZnU3NCaGZaQk1sN2xzQ0tKaWVXKzFnV0pudXFoZElXKzFwSzdrS1NVdzRJa0pvNXc4eUNJQ1VrQzA2d2x5VkU2S3ByWTV0U0xJUFdZcE1DTTN4aEJTbTN5cGlsSFNVa1F4RlA1MTZnZ09lUW9KUW1DZUVxM0RBcVNVNDRTa3BnUTVOWE5YVlZCdEY1MzlqbGJoc1lnMG9Rc0lVZHVTVXdJOHViZzRKeVdISWRibDFWdnNPNlQ1SnI5R3lpSWRoWEx5bTZIT1NReFVjVVNubCs4cENLSXBHODVYci9xN295UmdtaWU1V0Z0SzFCdFNjemM2OUd0MjhubGVMWjVJYXY5ZFVOUk01cEVkTlBYYVo5Y0xVbk1uV1FsNlpESDZKRnRBQjhoU09vb1luMFRhWTBqNHN6ZHI0eEY1RjAvaFJ3dnRuZUsybDl2STVRNjdZb1FKR1VIMnNzTzZ5blhrWmdaZTJoSW9qMHdMeFpSSWdWSklZbTM0d2RTU0dKK1N5Q1JaR3E2OWVlVlQ4M2VYRDFHbWRPSm55Q0lNSFhxdTV0dGNUcklOUFdwYTJITVJvNitCbUpvTkpHVVNxTWhxQ3BMYkFvMlVaRG1uVFcwL0N1ZlY3TEhVV0x3N25wejY5ZDM3OVdSUVNSb3lzRVNZZVJqa1VnaWp1ZGZwRHo0OVhFR2tvb05TVE5Ea0FaSmwyUUFMMUdsU2I5RUNQbFkvbjR4aDg1MDNoeEVBTG5ISnJMSW4rWHZYRVVNV0RIUS8yOXJueFJ5QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdHLytCUUI5ZDhINTlDWklBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMSJdLCJleHRlbnNpb25zIjpbImhtYWMtc2VjcmV0IiwiY3JlZFByb3RlY3QiXSwiYWFndWlkIjoiZmVjMDY3YTFmMWQwNGM1ZWI0YzBjYzMyMzc0NzU0NjEiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjp0cnVlLCJ1cCI6dHJ1ZSwiY3JlZE1nbXQiOnRydWV9LCJtYXhNc2dTaXplIjoxMjAwLCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxLDJdLCJ0cmFuc3BvcnRzIjpbInVzYiIsIm5mYyJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIzLTAzLTI3IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiS1g3MDEgU21hcnRUb2tlbiBGSURPIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyMzAzMjcwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMy0wMy0yNyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIzLTEwLTEwIn0seyJhYWd1aWQiOiIzMGI1MDM1ZS1kMjk3LTRmZjEtYjAwYi1hZGRjOTZiYTZhOTgiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjMwYjUwMzVlLWQyOTctNGZmMS1iMDBiLWFkZGM5NmJhNmE5OCIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJPbmVTcGFuIERJR0lQQVNTIEZYMSBCSU8ifSwiZGVzY3JpcHRpb24iOiJPbmVTcGFuIERJR0lQQVNTIEZYMSBCSU8iLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9LHsibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIiwiYmFEZXNjIjp7InNlbGZBdHRlc3RlZEZSUiI6MC4wMywic2VsZkF0dGVzdGVkRkFSIjoxRS0wNSwiaUFQQVJUaHJlc2hvbGQiOjAuMCwibWF4VGVtcGxhdGVzIjo1LCJtYXhSZXRyaWVzIjozLCJibG9ja1Nsb3dkb3duIjowfX1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sImlzRnJlc2hVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZWQiOnRydWUsIm1hdGNoZXJQcm90ZWN0aW9uIjpbInNvZnR3YXJlIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsImJsdWV0b290aCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQ0RqQ0NBYlNnQXdJQkFnSUVlSWNiQ1RBS0JnZ3Foa2pPUFFRREFqQmxNUXN3Q1FZRFZRUUdFd0pWVXpFUU1BNEdBMVVFQ2hNSFQyNWxVM0JoYmpFaU1DQUdBMVVFQ3hNWlFYVjBhR1Z1ZEdsallYUnZjaUJCZEhSbGMzUmhkR2x2YmpFZ01CNEdBMVVFQXhNWFQyNWxVM0JoYmlCRVNVZEpVRUZUVXlCR1dERWdRMEV3SUJjTk1qTXdPREEwTVRJek5USTJXaGdQTWpBMU16QTRNRFF4TWpNMU1qWmFNR1V4Q3pBSkJnTlZCQVlUQWxWVE1SQXdEZ1lEVlFRS0V3ZFBibVZUY0dGdU1TSXdJQVlEVlFRTEV4bEJkWFJvWlc1MGFXTmhkRzl5SUVGMGRHVnpkR0YwYVc5dU1TQXdIZ1lEVlFRREV4ZFBibVZUY0dGdUlFUkpSMGxRUVZOVElFWllNU0JEUVRCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQkdEZ3ZXN2NtTnVUano3dWtFQjRjTENQTncrMmU1TlN4c2huU0tMdWlsck1kTUs2SkFaVm1JbnNCNW9sN2ZPYTZhMXN3NTdnaDEzTnR1MGRoV3JvbURtalVEQk9NQjBHQTFVZERnUVdCQlRubThOOC9KdkNlTlFjVjdFdTJVTzFYVTRURWpBZkJnTlZIU01FR0RBV2dCVG5tOE44L0p2Q2VOUWNWN0V1MlVPMVhVNFRFakFNQmdOVkhSTUVCVEFEQVFIL01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lRRERJRlpubFRIa29CVUE0QnVMTi9BQjc3QjMyOTBLa01hemV3dVpDdzdzVHdJZ050OXFXZ3ExTkg2cjdoUEdQa3BIckMyZFUzbTY3RXUvWjlKTDFRWGJlbzA9Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUxRQUFBRHVDQU1BQUFDbkJ0MlJBQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQTRScFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR3L2VIQmhZMnRsZENCaVpXZHBiajBpNzd1L0lpQnBaRDBpVnpWTk1FMXdRMlZvYVVoNmNtVlRlazVVWTNwcll6bGtJajgrSUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWtGa2IySmxJRmhOVUNCRGIzSmxJRGN1TWkxak1EQXdJRGM1TGpGaU5qVmhOemxpTkN3Z01qQXlNaTh3Tmk4eE15MHlNam93TVRvd01TQWdJQ0FnSUNBZ0lqNGdQSEprWmpwU1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJajRnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJZ2VHMXNibk02ZUcxd1RVMDlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl0YlM4aUlIaHRiRzV6T25OMFVtVm1QU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2YzFSNWNHVXZVbVZ6YjNWeVkyVlNaV1lqSWlCNGJXeHVjenA0YlhBOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOGlJSGh0Y0UxTk9rOXlhV2RwYm1Gc1JHOWpkVzFsYm5SSlJEMGllRzF3TG1ScFpEb3lZakZrWlRReU5TMWhObVZrTFRBeU5EVXRZVFkwWmkxaVkyWTVPR1ZpTkdJNE9EY2lJSGh0Y0UxTk9rUnZZM1Z0Wlc1MFNVUTlJbmh0Y0M1a2FXUTZNREJGUTBSRE5EYzNNalV3TVRGRlJFSTBNVEZETURjNU56TTVOa1JHT0RFaUlIaHRjRTFOT2tsdWMzUmhibU5sU1VROUluaHRjQzVwYVdRNk1EQkZRMFJETkRZM01qVXdNVEZGUkVJME1URkRNRGM1TnpNNU5rUkdPREVpSUhodGNEcERjbVZoZEc5eVZHOXZiRDBpUVdSdlltVWdVR2h2ZEc5emFHOXdJREl6TGpRZ0tGZHBibVJ2ZDNNcElqNGdQSGh0Y0UxTk9rUmxjbWwyWldSR2NtOXRJSE4wVW1WbU9tbHVjM1JoYm1ObFNVUTlJbmh0Y0M1cGFXUTZZalJsTVdZMU16SXRNelppT0Mxak1EUTFMVGd4T1RNdE1UQmhaRGc1T1dRd1lqVmxJaUJ6ZEZKbFpqcGtiMk4xYldWdWRFbEVQU0poWkc5aVpUcGtiMk5wWkRwd2FHOTBiM05vYjNBNk1qWXhZV0ppWTJZdFl6ZzFOQzB6TXpRMUxUZ3lNR0l0Tm1Vd1pUWXpOVEk0TWpWaklpOCtJRHd2Y21SbU9rUmxjMk55YVhCMGFXOXVQaUE4TDNKa1pqcFNSRVkrSUR3dmVEcDRiWEJ0WlhSaFBpQThQM2h3WVdOclpYUWdaVzVrUFNKeUlqOCsvQlFQbndBQUFZQlFURlJGV2x0akxTMHdXMXRkVEUxVFptVm1JeVFqaTR1U2JXeHRWVlZZNk9qb0d4d2JNREV5UkVSTFNrcE1MakF4a1pHVmJHMTNORFU0L3Y3K3VycTh5c3ZOZW5wNzgvUHorZm41VVZKV0xDMHVtcHFjYzNKellXRmlxcXV0aW9xTnNiS3pRVUpHbFpXWU96eEN3c1BGTVRJME5EVTJnNEtFb3FLbE9UaytycTZ5S2l3dWhJU0taR1JyZkh5QjBkTFVFeFFUTnpnNU1qUTEyOXZiZFhWNW5aMmdLQ2twL1B6OHBhV296TTNQT0RrNnRiYTRUMDlUUFQ0L0tTb3NZV0ZseGNiSENnc0tiR3BzdmI3QVIwZE1WMWhhSUNJaWEycHFKU1ltYVdwdlBqOURKaWNxeDhqS2FXbG9TMHBYWjJkb3o5RFNYbDltdUxpNmIzQjRPanM5bDVpY3Y4RENSMGRRajQrVUhoOGRaR05raDRpTVhsNWcxdGJYRmhnWXI2K3habWR2WjJabmFXaHBiMjl3WjJockh5QWZoNGFJWTJSbWYzK0FwNmlxRVJJUURnOE9MaTh2RlJZVlNFaFVIUjRlTWpNektpc3JEeEFQYW1scTMrRGdhMnRySmljbkdCa1krL3Y3ajQrUmJHeHdZMkpqbDVlWkx6QXdLeTR1YTJwci8vLy9TNVlwT1FBQUFJQjBVazVULy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL3dBNEJVdG5BQUFmV2tsRVFWUjQydXlkaTF2YVNOdkdEUVNEeE1UaUVUeEdHOVRTcXJCSUxhTDFBSHhVWFUvRkUyVjFnY1ZqbEZBSzF0cmcvdXZmODB4QXJRWUk5dDJWdmE1T0lPUkUrSEZ6enpNenlaQTAvUDBmVEEyL29IOUIvNEwrQmYwTHV1YjB0dW0zTDVYU2IwMXY2dzc2UzhRVUtwTlM2a3ZhTlY1bjBGOTRKMStvbkp5aCtTOTFCZDNxY1lxRkFsVVJPaE02amRVVjlGdk95bGRWMnJTdnROWVRkSmRnWmZuS1FvUFMrL2EzOVFUOXRWa1Vxd2hkeUlUUDZ3dzZJSXJWN0ZHb082V0Y2cDdPbVA2TDBIVm5EOEZhM2RQMXBuU1hEcVdkb1hwVGVrbUgwdUg5UW4wcHZlVFdrUkhQNncxYVYwWXMxSms5cWhjdVRsT2RlVnFQMHM3UWZ1YVhQWDQrNUlsNmFubi9RWHVZNmpBai91ZnFIdnFVM3ErN0VsRlBMUy9VV1djbElxc2pUb2UvMXBtbjlTaGRYOUM2NG5Sb1AxOW4wR0oxZTRUUDZ3eDZSbGVjenRkVjlPaTA2aW9STFYxMUJTM3FDbm43bmY4MXBRSDZzcTZnZjZOMGxZZ1RUZlVFdlYzUUEzMDVNVjRuME9TWTRxUlRqNmN2VDl2cVNXbVAwNlZEYWN0cFN4MUJ0M0o4ZGFVTEljdTVyYlYrb0R0TnZKN20xcjRsM0ZVLzBIL3N1L1ZrUkl0bDRrdjlRRS9wZ1VhbFB4L1VEWFNyelNLNmROVHlMT2tKYzJ1OVFEZWxVMUNNVjI4RVhJSS9PdXNGdW0waXJhdnVZYkZZNXVmcUJMbzF1SzlIYVFoNWx2UlpyTFUrb0p2MkxTRmRTbCttOTA0L045VUg5T0crSmFVcjVGMWFVaE5uTFhVQjNSbmVUNmYxUUlNOVV1ZWY4NTMxQUQwMUFWNFZkU21kRHAyZnovZlZBZlJYWHpwbENydmR1dXdSdWp6L1BQUDIrYUU3bDBOZUoyL1ZsUkV0NGYzTHo2R3U1NGZ1bWczbFozbDlHVEZ0c3V4UG1Pb0Nlam5zTEZoMW5DZ0tFYVZQUTEvclJPbUNEbnNVaUQzMlQrdEI2YzVaVTloSnVYVjZHdXhSTDU1MjhqcWpSOWh5ZVJwK2ZudTBEb2pMNGVWbFhVcnZwd0Y2UDMzUSt1elFNV3JXSXM3cUxGelM4L05ucDhLelE3OWRvNWJUVm5HMGVoOFZxSnJ1bStiUDVrLzl6dy85Umx4T1UwT2pvenFVVGx0Q2x2bDZnRzRGNkpBMU1oVDVBVnFyRDVaek9aUk9aU3p6RTF3ZDJFTjBXa2RkTGpmUFNoS2c4UlF2RmVBTHdMakFGOGdyUG5ER213K2JRa3A2L2w5VHV2WHQxNjZIaVN6cHBLMVdsM1hVaWpFUEUzTGVqY216b0s0b0ZHYTl5N1BlVE5yVytmWHh6bkIvYjF2L1o5QmRUWCswVGI3KzBHQmJ0V0ZhTGI3YS9MWmk0dHdpSUxORlpxSXlyNnBjNUMydW9Bck93cXpGNVRjYUx6aU9DK3dZT2IvTmFMUVovY1hCL01hemU3THlwYXYxWjZFN3h5Y0IxN2pUTEN3TmxVMVd0M2lIVmlpeDgvZWxWMWZabHkybjF0RlIxNmlhaGtyalNIRUJybGt5ZnBwcmFuMDZkR3RUMzR1R2hvc2RvUmwyYksyUXNGbkwzbm9YSDNkVDZnd01sTjBic3V6UGlxS1ZES1ZrSlkvaUFweUJiOVg4NmJlM1Q0TnUvYTN4VFlPTmF4YUdFQmoyeUlvVTdwaUNnZVh4bFV6eVpEbmt2ekpSNDI2UkV6d3RVcFJZSEhpY0xDYSsrSFE2S1NlQkgvMXJ2UFVKMEUxYmZ6YXNjdUFLb3JFbzN2c0kvRUQ0Q0ZiOVpKNHZmV3k1NUtUdTNvbHo2bkE3Y3FxYk9LblpZbkxDN3EzV2owMjFRcjl0RzN2VGNORzh0SVMrRUsxM3dEK0FsRWIzR1ZRTTV4MVJhWDdXT1V2TlVqQWlremlOYzA1NHdBaGVxR1huOHV3eUpCZ0J0MmhkbXZwYUUzVFQ0SXNOWUI0cWVobDE1c3ZyUndCTHlDWFF1MjlTUklaTlZHWXlxWkk2U3k5a2tpQXZZLzBMc09GbnNRYWJhb0Qrdy9ObmcyMUhJTXlqSk45WXJRN3RQT2hRQjRkSTV0ekZaU1J6aWc2MzJ3MEJITjhPMDFZUnA5d2t0N25KOENDeExFczVsNWRENGZCeUNNamh4eENGZGIzUWJ3L0dYalFZQTJoblpJYnlEa284U0Q0WUhpVW9XV0RzY0xnY0xueVFKOHhpaVdQRmhWWjRPaHhrSlN4MC9KQmtmTWdPdDhQaGx0VXAyUzJ6OXVXUUNhbE5lVERKYUpzKzZLN0oxOEJNQWpOR1RwOUtYQ0ovQUV5WUhmY1hBcWNxTjJHOTl5US95QS9NN2p0VzhncklXRTZKeXJMSlpBcUZUV0h2TERzNnJRTzZ0YXU3OGNXR2Y2Y1pkUjcxK1I1cGFpVzZrbm15cUVTQ21oSkpyWVR2QVNENHg0RldVU0Vod1VpV2dSRkFaUkVuNFlVOGNOcWhMS2RNSVJpV25aU1cxbytVM243dElkRlpnS0lLVkFacUgranBpbUNhdWZkOG5IeGtOSXF2UGpMclV4L3E2OFAwNEZkREE0SDRGS3QrQTRjZC8yVmlNb1ZuS2Q5NFZlak9SczhHbUFNQ3h4RHVHS2l0cnNpTUVPRDhmcXh0cUtQUzVPMWNNZGtldkQ1TXh0c3ByamlVbHNNMEI4OEFOK05XaU95eVlrb2pkbmpXdWRSVUJmcnI3dGlmWm1PZ2VhaDV5S2U2MkJkWkNwZ052ZGRyOGJWNGZHME5INy9EYU8xb2pWNDdpcThkMFd0MC9DN1JOTXpCd2ppOWh0TzB1aDNNSHVGb2pReXdCWTRmcDk1ZVE5RHM1MXhGN0hBYS85WmptcVhXM2xhR25uNzlzY0Yyc1FOS3UwaXM4UGtFZnl6TDVKSU1reU5EOFlIUGhZVWNzOERBS0xmQTVIQXl0NUJUbCtSZ0NxZGhiZ0dYazQzSUNOYmdGcmdKYnNmZ1NGMkNxMkczZEF5NEhZZ3RzaXAxMk1rZVZJUnU2aGg3WTF1OWFONXBScG5oRWVHdUdmeW94K25tbjBrTWM5TWJEQXBJN1daTmxsUUtjaU1WYWFvQTNkb0kwUTZFdnRoUjg0bFZDQ2IvVldTVk8yc3crQ1ZXWkdVMlpFbUZVcEFaaDF2TFE3ZS9IbnRqTnU1Y3JFYlVIQzFFay84Nk1xUVBURy9ReHJJUS82UjBHaXhpY3JwL0t3djlkUXlFWGpWZXJBNnB6TnhhOGhtUWlkalJvRTBDcVdXdkJhaE55N01kcmVXZzUxQm8vOFhxenFqcWpkK2ZpeG1wWTV4ZEJ1cVVKWjFLbWJ5dXBuTFFCMWl1cks2dUxtSFJaL1gxSnA4TEdhbDdEWUxFc25JR3BRNTVuWk5sb0xzK05iNEkyb3lyT3lUWXljSGs4eUVqZGN3Z1E3MlBTQTJ1dG4zVmh2NnQ0elcwcnk1V2w5QWNzcEJqbmhINTVtWmh6VUFNa3JtMG9LdkZjVzNvZzljZk44eXJxeGZFMFk1WThqbVJpZFF4S0dSWUpXM1pTNGZ5OWtGTjZOYmR4aGRvNldaa2RndU1GbklXeXVZb0hVOVUvY1FFYmtmcjJRNDJpOGF6bXVzTW5BUmhEMC8wcGt5emhsWXQ2TTZ4eGo5Sk5zU0tKL3VqbzB1ZmtPeWZmTlUzMHQ5VEJTZWVPQjQ4T2VqNzNwR2dxeUFuKzBmNkRpYjdrMW83WkdKQkJlS0g2Zzl2cEZNTCtzc1lzZlNGV2hqR21VZk1jV1prcGIzdDRHQnpwZjJrcHdKTk5qNjgrTzdsd01IQXkvVzJ3MHBmais2WmFsK1o3bnZWMXI0eXljUWZyYzVkR3lLUUV3c1dDQ0Nodk9NM0xlaHRnQzY1UTd6bmp0dVA2SmliYStrQmY4U1RWeS9iaDh0U0o3SW40eWNkTjdEZFRVZmYrRlMyTERWOTJMN2Rud1FqeFhzRzUrWTZhQTEvQ0JKa3hmUWxGT1o1YVZzTCt1VDEySWJaZU5FTVFkckgrcG1IMlk4K1h1OWpvb2tiZ01oR2IwYkdEOHRRWjdNSDdjUFJPSGdWM0VvUHR3OGtzbVdZKzhkSGJ1amZDVjAwMmZmdStKSFdDMWdGWWVVUW1Eb1VwcWEwb0FjYnh6WnN4Z3RTaENzbFM5L1p0S2Y5QkgvcVJNY3gwR2FqaytzZGNXMldrWGNkMFhpdWYrcGtwRDhacHp2ZWpXaC91M2pIK21UMDl2dkU2YjZWWk9LUnFXMW9haE9hT3B6cDE0QnViZHo5Q05BN0pCL3lNZVpCbEtQN3RtOFM2TmZEZGtJZEg5alVsREErdk40ZnBUdmFwcjlmRFI0c0R0UDA0YmptdC91LytQUkFYSTBkVVRYUWJQZlJqMHJGb0FoS2gwbE9uQjNXZ203Wi9RaTFwUjJpdE5qTC9CaVlFNTcxVDdEUEhCTWRYbitKUDJSOGJIMVlDNForTlUzSE8rWmFPa1lPUmpvTzU0N2o5TUNCbHRUeHcvVU91bWV3KzN0M056NnZ2a1VQMzNrZTdKQzVEbUtobUwrMFdDQjg5TFJxUUE4MlFxTmxSNFZtcjVrZjN4L3Rmbm1UaFo5MHMrZDQ0SHU3QnpTUFQ1OW93Q1I2MmcranpPTFY0ZHhVeTlUS1ZYOGJFKzF2NzlISWkvVEpkRHgrM0g1eU1qVXlkVEoxTU5jVHY5bmVvaDhxM2VBR2YrVFZtSGVrQmQwQ1pjc3ExenlFUnpQazNnZlE4ZWtwM0dOaWNyR2xiWE1FK0cvbzd1MXNWa1BBbFo3b1lWdkg5bkRMeWVIaHl2Rm1meFMreHVPZkpIdno4anNkUDk2TVgxK1BkZlQyTW9zUTBxZW00MXIyRUluU0llOWFPV2piQlVBRHRmZ0FPbnV6K0QyS3IzUjMrL2drblNXWi8zSE9nYVdEaTFsNmNtcXkrL3ZBNGNDbms2bnVrV2p1NWFCR05Fdk85ZE9KNDgyYlpQZjZZUGJRc3pJUWozWXZQbEFCYW5wRmU2RFNkRGxvL3dYYTQ3SFNXV2E3aFh4eVBObmU3cUZMbW1wQWYxOU1SS2Ntdng5dUhyWWM5N1dNREk1RWk5LzNvWTFXaHVQeDRjMmU3cXUrdHI3K1pQdDBncjVDQno1UUd1eUJTdStCMHJTMnB3bjBLQ3I5Q0RyUk5rbnMwYk01dmI1SU1nemRQOGM4dGdkOE1oT2RHa2ttMnc0M1BkUDlIWXVITkROMzlWanBiQktXSm83YnZ0M0VKZ2Q2ZXBOemsvSG9aRnZpc1Qza1cwK3ZWZkkwSG94N2xCSHB2Z0VhbVJkSGpnY201MUJpekVrYVFlRzQzWE45TmRBOU9OTGRQVEk4c05tZGlIZThPMTdUMkhCekpCby9YdXpvNlRudWdlY2lsSXpUZlpvWmtTVktWN0NIYlFjeklrU1BoeG1SSmpFZzRSbU1Ea1B0QXlUTzVsNTJhMFNQTERQWEhlMFpIdDQ4M2g3dU83a0NKMFcvdjlUNFJVZzRndEM0dUxqWUJzL3R4U1NVWHYyMFZzaVRxM2xhVmRyaEVCOHFUV0N3VElrUC85R1hBS0dqTGU4OFdyVUtlbktPU2NUalVCeHU5L2VQZUJLUTR5YWpONXF4OFNxYVMzcEFabndtYjZLVGord0c5aWhteENwSzc0emlvY0NIMFFQTk9rNnFOUEhoUHF3Q3hUM3RrNXJGY3lLNU1oWE5Kbm9HUEIzVG01NTROanFsRldUSXQydi9HRS9jSnJwai9KSDFRV20zR3ZJcWVkcnMzMmtleGNQZmp6d05XZkZncFFPMVRqSm82SjZYbXpmYUZTRjZlTHc3bWtqa21IajIyQU54Ykx4TWZUQjcwN2FkTEszS1JqM3RmWStxQmVCcDhVN3BLaGtSV29pUGxMNUpMQXk4dTFxTHJpV2d4Z0NWeXJaa3VTb24vQ1o5UFZFYTFMdU85dlNOWDVXcnd5YVNiWFBEOFNqS0hNMzJyeC84WCtKeGk3eWs5RjZsRWhFem9yWTk0RU1Tayt0dDN5R3ZIMTl0cms4eDhmSjErK0dYN1NmRG5oN1A4TW03N2VQeXJZVTRNN1hlMW9MeFkzQjd2VHVSMERpTUVKUVZ2U0hQNWRCUUdvdER6OGhjZS90Sys5ekpjY1gyVm56aGFycDlaUVZhSlZjVnZodTJ0bzVQNW1CL0szTlRIYlNHMlRCNnlEcEtSRlRhOGJnWUw2WTFPdWNaSHU1Z3FyVllzOUFZT1I0ZTYxbWpzNVUzak5OTXgvQ3doNkhqMmdkc1FHbEZMTmJ5S3NYcFVUeVBVQVlhODJNOEhzL3FPQUFBMnlVU09yYkRIWlpyMjZEU2lsd3RlalNRNkFIRk9Gc08rdDg5OG9GeFdtR3JWVTBSR2s5Ty9SVDBBbE5LU1hndS9DeTBYQ25rRFJidGdXY3B4U2REQTJiaTJoQzBHVG1PTS9yTmhtc0k3TXhQUTFjdXhpOEEybXAxOEUrREJ1S293YzhKUTVGUjRqS3JkVFN5eEFYcEorcXRocnhTNFJLdkZEM3d3NTZrTkdoczhBZUVHZlVzcUhwR0ZMem10bzRHRERkUHdiNkR4b1l0WGRFZVQ4eUlnR3dVbGdCVFZqS21VTnFDaDJqekdWWjJZS2VUcGVCTjhpZVZMbCs0WUlYSitwU015Q3pFL00xTERyZmJicm84UFp1SDRlenM4K2ZQcHhPWG9ZemI0UmJGSlVQTjNvYTZSN0ZFQk9qbDN5dmFBeXRNdFVJenRKbGJjc2hzM2pJQnFKL1BFUG4wOUhUaTlQVHoyZWR6a3dMWWJpNVI2MDR4VHBkcWViT1ZRbDRFdlZnck5CUHpCM3d5Rzc2Y2dIUjZpc3p6Qkh2aUZML0IvRVNJZGJqNVNJeXBYV2tTUFN5VjdGRU1lVFZDNTVpZ1RYQzdNNWFKaWZQekNaRDY5QndkdlplMlhFNFEwZUViVE9SbE4yczFNN2thUFgxWDl6Z3EyN0FsaFV1TjBMbWJvRzFHRmsyWDUrZklmSjdLMjBFZkJUOVBzWHZUNTBUMHM3TTA2MkI1V3kzVXFqMHFGaTR0dTVnUjBSNjFlWnJKQlcwUm1ROVpMSmVBdmVkbEViYVVXRm1VOHZ0bjgranpjN3REcFB3MXhMNGZsZGFNMDRPN0w4eTJRTzMyeUFYTkViZGsyZ1BvYzh2c1BlQmJjTVY3aVFZL08vVUN0Wm1wTGVUZEZ1UDAvMUJwSmdiTWRwTXBCZFI1UklZcXptUHM4Q2tFd0xQUGVZZk1CNU0xRmVPVjR6UjQybXpjRVdxRVptSkJRYlNuUWliVFhzck9FbUFOYW9YTlhDSTFhTTFhOWUrN2V1RUM5bWp3cS9iUVh5TG1hSU5SbEN3V2s4a1VWalNzY1VjdElmWG5DYnViR3NvdTFHS1A0cUhlMlVyUXRjVnB4aEIwc0pjVElFVmVTK0I3U1ZZc1oxRGNuSXNpeFNWcmhVNVhWQnJzZ1gwQzlVSXpzWTBaaDJVZUNtdFRSV0pDelZxd2tFeTdXVkZuSVVPZythclFKSHBZOWRzakViT0pzMWpSc0NoVm9kRWhXRVI2M1pMQTZJM1RMSzlVOVBSV01YcUlWb2VvRTVveDlQcmswL241K2M4WldhbWUyTXdFUUYreUltOUk2bFJhNUpXS3JYR0VOcXJOTGIxS2c5QXMvblZsUHFXSEdSd1NBbitjaHQyVVBxbEJhVkdxbkJHN2kvWUFwYTJLTG1nbTlpYkNmZ2FoSnhTOUNReHl1Zy9GcEw3OVF6SE9zNVU4dlI3WThKZ3g1RUYxV3RhcGRLOUJEQVB6ZkpqVnlTem0wZFY1MmU1bjlOcWpsQkUxcTZadlF1S2Z4QjdZeVZZWDlBSzl4b243TlFtTlVrK2NXbVRGbDJWMFFsZFV1c2Z0YW9BNExlaUhabUovK2lRVU9pVHJacFpOQUEwbERHdlFCODJxU3BlcmV4eC9ZRDZBMGdUYW9jdlR1ZmNiWWdpWXp5Uld2OUwyYzZBMnlaUWVmMkJHVkNvZXJEbm11SWFHMVVDeno2Rlg2WGpDekY0QzlMbFlnejJVUFdqYXBOMjhvRk5wcVdLYzdtRmxqaWd0NjRUTzBkOEMvT2ZhM0tINlkyS2ZaVjN4bkE1b2czaFhZZEpTdWtPVXVRMmpxclN1dXNkQzc3ZUlIUzN0cmNFZEN1dUZWdVM1eE1yWGpMNlFSMVhLaUI1b0xpTTBVVnFQcDVuckQ5WmxZdWxhM0tIWTl5Zk9KMloxNWNTNzZGRXVJM2F3YmlQKzVRS1ZsdlVwL1Y0MEFmU3BVbHZDNW05ZWxNeU1MbnRJeFpDWHltZ3BQVVk1TGpaV1ZhVjFSWTljTE1aaThOaXZqWm0xZ05KaHQySkw2Z3Q1cFdKY1Ura3hYalp1UUp3R3BXVlJsejNlRzlnVVFyTzFVYWVnelc2eVVqYW14cXFwcGowVTJRaTFQSWpUVnF1dVdsNnUxOER1WWNTckRab05YVm91dzdLZUJpNVdUYVZpSnhYdHJoUEhrcHZEUnNDb1czUmJLVDJlamdXZnBIVElZckdFUmQ2dnl4N3lYWW1vQmQyQjlsaHRobHFldzYzUEhqRURLUkRQYTh5SStWQW9uV0Y1blVyenQ5MkJORE9pQlBaQXBVVzNXMS9JNjQwNXNJNTNXbHZJVThCOEZNV3lRYWEyV2w0WnBSM2NodXBwVVNmMGUyc0dHZ0JuOXByOEllUGZCVVZGanRVYXB6VTlUYUhTQVZUYUllczVmWkc3UHBxaHptcXBUV09TSE1LU01DVHlyaU9kSldLeHdxU2RFU0hrb2RMTlBxdmJyUSthN20xbXp3RjZyNWE2aDJURkV6S3NNcVBqNEFjcUxiR1ZHZ0dleS9UU2hyKzUyU2ZMT210NTJWNGJhNEVXNGdSZms2WHhuNHFzd3Vtcm1zb0tWY2tleWRPSkFQRzA3TllYUFVqNENPTngzRnBxVEN3azdOWm8wMVUxTmJCOHhZTTFIZlBuUVNnUm0xMzQxMFo5MEwzdkkveG5iSXZYQUUzWklVSE45RnBuSTZCeWMrc3dIU0gvblJ4MXkvcEMzczFOb3BkRGY1eE42Rys2U0Y1SVRwWVY5QnpPSTRWTHhhcHBWNC9uWXdONDJpVTZIS0xlUXdnR05vT0h1a3k2b1RQNWZENHNzUTZibnFNMWQwcEQ0YkpjOWt5QUVSdTJibG5uSVlUY2RVeGdMYWZuNTVkNnBVYWg4ZHhpaE03ZDZQUTBYd3A1NVU4ekI5UVNrZEo1TE04UTVKM24rNWVYSnAxQ0Z6SkFEVUp6dWcrTFZUbHFTazdKQlFRWC9oRlcwWGtzcnpjbVVLRnppK1hTcTAvb1RDYmp0WVBRVVVZdnRLcTBwV0t2M2dDR1BObXQ5NFQrZ3NIQVVoYllxVVZmV1Y2d1p3b0s2L0RyUG1wYTViQ1lxblF4STdJNmp5Q0Rxd084RjZndjAxV3B3Uld5SXRrcDNqRVQxM2RlRGoxZHVYQUI2STltY29SSmxNVWF6Z1RFZkN4ZWtkS1Nxa0l0eVRNUmFIeEtvaHd4Nk4xNWIwbnB2VlNxZkVhRU9PMGpsOFBRZlRJbkN3YUJ4c2dlL0lLWlN0U1NLeURNK0Z3eXkvcjh1azhVcVFmVncxWHNZU1RSdzZwZjZadGNOR2FXK0pBbG5kNUxsYytOa2hJSkJEaEJjQUd6a05CNzBoYVZsZ2cwS2wwT09taHNicmJXcGpSR0VFNmlRbWxNSnUxNExVRjlGSzlTMHp6anBsekNVUTI3RHNMK3FIQ0ZjK05YYXNnYnhTdEQxTklkaUlrZGNaSVMya3VsVTZsVVhtTDV4OGd6SEVtQ0xMbUVXRzFuYkNXcW9qM0lDZjFtd1FWQ3kxSXRKL1FadzNzL1JGUDRDVk9oa01sci93RVlZc1pNd005eFJzNG9zTHhQTU5UUXdRYVZwaFErWEtXM0dIamFoWmRWVUdycU9zSEVlczJza2lIM3lUU1p3bDY3WFNxZHpuZEVsZ0tjZXNXQUNNWE9jTEZhT2dVaE5PeXFrdEpiYXVFQzBESmJHelQ2ZWlNaThmbFF5bVF5NWIzZURId1V0Q1ZjdnBrWklTQUVrRmx3Mk1IWTE4bWJHcUVMUEY4SnVsdTF4eWdMRlNhbDFqNHd0R0dOZzFhR0Y0VE81ek1BellwdWx5OFNFV1lFRGpLaDRMTHprV1pib3RhZU5VRlc5YlNsZ2oyQ1JHa29YS2hhK3pEbGJtTHZqd1NLNGpQZXZEZERsSFk0ZkJHaXRERGpLRWlSWnM1UWF6YzM0bW0rNUdtNm5EMndHRWRvcGZZdWJpRDJtOTZBYUpja2U4WnVwMlNXS0IyWjhUbDRPenZFY2VaRTdidEVwU1UxZXBUNVI5RjM3RjRmV0hLQlBWanBDZjN5Y2xBUitlc3Y3RWdCR1pGVjhGb0drRG1nYmVVTGNQNWc5QW1kTjRuU3R4bnhxR3hHeE1OaUlEWDFwRzZiQzB5ME4vcmltNEVUZkc0V0Qyakpya2lBczVuTmh2aVQrcHVxNTF6NHFuRTZzSVFaOFNuMktQWWJTMXpIanE3ZkhCMGR4V0lHU0FBY28yK1lwLzEvbTRTODI0eW8yWWRwNnhNcUxWalIwOUxUdXlLRHBvbm9kYXkzOS8xMWIreWFUaXc4dlRQeVhlRlM5b1Qrb0ZyTEd3VXIvZ3kwS3JoNnJaV2Y2ajFkQ25sS3BSS1JLTDB6NUJQUkhyRTY2YWtPR2JGSzNlTmJBNm5seWVLVFBmMFBRUE42bElhTTZHYXB1b0V1U0dwOU9xUWQ4cjRYbFdaRmtlWHJCbHIxZExweXZ6d0llUUJkUDByZlZVM3BNaVVpUmcraWREMTVtZzlYNmRXTGNickc1dFkvYlErU0VTMFY0clRaQmkwWFBId3M5ZFpmeUN0cmoxVUNMZFlSZEpVMjR2ZFBSVSt6Y2owcFRWcmpsa3Avd1RZMlE5VlVyaWQ3VkdrakRwTENCWlVHZTlSTk1TNVZyay9mWmtTNWp1eWhTQkpWc1RWT2xBWjdzSFZsajBLMXFtblFTSlN1STN0QWMwMHlWYzJJV1Blb0c2VmpRZDV1cjZqMFZhTUg0alRVUGVwSWFSdFBnYWN0cE80eHBuWDVsMzY4MEE2SkhxeWNNZFFIdE44dVViekpzbGZ1UWp0L1gzMTYvV2IxQXB0Ym91aTBKZXNCT3NobGlLZWhPcDFYdm10QlQ0MDEvdGx3MFR3SzdoQXpnWHBRT2hjVW5BVktJZGY1eThnbld0RFRudDBYTm1QekVCNWtvU0kzQzgvT3ZKQ3dqV2FrQXBWQ1MyZGNjMXJRdi8yMWhjZDZoMEJwbHErSHVpbFltb1hna2RtenBGSW1lK1NMNWxYY0ZnWXhKelpiOFNycFhuOGRRSnNGT3lWSlhzdmVuaWt2R2JzMHI1ZDN2UHY2VDdNUmNpSXY4blpyTnZmY2pxWTVseE9paHdtWVRSbEhoK2IxOHY0KzZSbjgyQUN0Ukx4T1BUdHJUajY3MEFFUW1yTHZRZXdJUzVFMjdjc3BOdlZ1dmNaSVBjcERxTGFMYTg5ckVJWU9XRUZuSmIrM0Z3cDVIVnlUTm5TcjUxUGpod2F1ZVFpclRPeXM4THpRQy80aE8xV1E3S205VkFxRTlyd3RkMTNUYjF1ZUJ0dk8waWoyTk9Kbm43V0FZWUlDVnBZbzd4NWVpMVVXMnNwZGpMWHphT3YxQjZqcHFWSVhxT0R6YWMwWWxrUTdaVWVoUTZHdzNXZnJMSHVCNGFteHJZNE5NNVNLUldyRE0ybWRBMmFIdlNBVkZOTmVDS29kRHFHdi9GV1JtMkl0dTk4YS9NMUxia0l0VVdibU9jUm1HUE9RSXlOUmxKUUhiNWd5OGt5c3FjSkZzL3YrNm43OUJ2T2lURHJRU1U3aEtQbHZZeTh3MGNDb0RIYVdwRXdxQklaV0l2NkRTbGY2N29xKzN2SmcySXVJUkd2ZTd2YkhHU2IzTDRxY2pOcUdyT0JtaXVLZGVObzZiM2R4SDVzcVhsTjkzREM1OWRHQUVVUlVWR3luTldCSUZLK0traVJEOFJvcHllS2krOHVLVThYcnFDUkw3MGplWDNIL2ZhVVZ4VTJTdVhpTW03RkN3NUNpQ3J5ZG5QOEZRNzhacUhMSi9jbXg2WllYRFRaT2lLaStCby9ZS1pkZ3RKbUR3YUNaREVGMXlseWF2VjFLcGt1cmc3akYzWHZVVGU1dlVkeUh1VGd5QjIxbStGU3JTRWw0TGhLOFlTTG4yUjB6d2NHdUt0QmZQZjNUTFIrZ3RyZDBTNDAzMHFCNGNyY1psdHlFaHR5UWhoV0xpM2hSNUhFU08zYkJxN3FjRitFZDhENmNJSGVjSVRkL2dkb2pMR1BWVzhIZ1RsbXlqQ0wzQTZMSUUzQ3BBZ1M3Z3RjVUN1ZUJXYkI5K2xMMWpneWRzY1lCb1BZSGhJZ2ErVmdGVHdueXZLTCtqWlpYKzZGUXNKQ0hHVmhGS2RnOUNwQ0xHeWpJSW1HM0NVa2h0NnZoSlI3bVlVd3BaQm5PVWdvTW1ObXcxSk93QjJxaEFCcURMekFMOHM1d0NHVE9LQzdCUFB6SDIrbzM3R2dLN3I1cStSQzA3UVNHUm92WkVaS0NuVTk0bFJvbEJjSHdhMUNJakdzSks0S1RkVHhCUmpSbzQ1RUowQk8rQWVJVGNoNlplVkloQWtZbytncDJuTUZ2WVFkdUwzWm15T0RKWHZOdzE5K3RPbTZOZ3RTNzN3eG1MakF6WkJXSm9vcktYRVFpUHpHTGN4UmJGSjFTZndCMVV3SUppU2hkUk1WWmduLzNBeFJVWUJTYURPQmpDaG9xa3RNYkRpT3k0cGpoZ3NPZE9tOUMwM1IwOVdweTdMM1p6d2xMb3k0ci92R2VWMy8xb2o5VTBWRmc5Q1N4aWZxQzJoZnRRQkJCVHJ5SGtZSTJVSmVRVlhoZkx0VVpnS3J5b2psUWNtZkdtODk3dlhhN0lrY0VZN0MvVS9lZGN6cVB4L3BPUG9GRmpJSXdGSEZoQTB5VmhJeGdzT01rdmtycUU1ZEE3c0ZCSzJVZUxTaGs3QmxZbWxIZkF6Tk9wOTBKaTd6WXd3V0lXWWRQNE15OVUxMDEzS09vdGUvTjFxc3R6M3V6alFzSU14R2ZRNWF4bnhvYVVjR2NwRTZSNmVKeTBsOEpmM2xKTTRGUmkxT1VhbHpWRS9nRDRCbzdUcEZDVUNLZGlGeVJKYzUyOUhHbHRiWmJXSDM1Tm5aeThxbm5qUUd4aFptWmlIcExuM3ZYV0hJOHVzK000LzcxbCs3UHVCdzZra3VXMWRkSVJCQTRXMjl5c0tubSsyNjliZXRwZkRVMU9QWWhadk56QVFJT2FZazhadTZtbDBvdlA2YWxwZUlXOTVmZHZwYjJFaUh6UStwRTZTa0VPRnZ3NksvRDlyZFB1UzFiVjl2WThLdk5rMDhmLzNwdk1QdTVtbElnd0FWZ3JJN0lBdTUybGd5bGtmcUtpU01kdERpL09YYVU5QXd2ZGozMUJuaGQ3MXJHSmdkZVRXMDFqaVdQWXJIWVJtOXNJMFpTQXd5WUREZ3FMdE5JRGJpRmdmVDh1SjlnVVlQaFVZcjF2ajlhKzJ1aHArTzRaYVh6Wis3YTE5cTVQcm5WdlRVeU1yWFZzcnZiMkhqVkNHbTNwUVZtV21EWUhSejhQamc0Mk4vWS93bFMvKzdXSUVrdCtHenAzOTI5Z3JkOGF1eUg5N1cwd0JJMTRXSllnZXQycjJBTSs0WFh4cXVybHF1eHNiRlBrM05OMVc0NVhmMytpSzF2TzV2KzJGNWNXVjkvOSs1ZE82WjNNTG0rVGtadDAyMmJiWnNEcnc0Z0RiemF2SmVtdDFmYVlQeHlaV1Z1WldXbEhkNktiOGZ4eXNEQTlBQ2tnK0xqQU1mVEE5TUhCeTgzNTVwMDNCN3hmM0ZuOXdyZjl4L2E3ejhLL2ZjdjZGL1F2NkIvUWRkVituOEJCZ0M3Q21ZZGg2cFl5QUFBQUFCSlJVNUVya0pnZ2c9PSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzFfUFJFIiwiRklET18yXzEiXSwiZXh0ZW5zaW9ucyI6WyJ1dm0iLCJjcmVkQmxvYiIsImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJsYXJnZUJsb2JLZXkiLCJtaW5QaW5MZW5ndGgiXSwiYWFndWlkIjoiMzBiNTAzNWVkMjk3NGZmMWIwMGJhZGRjOTZiYTZhOTgiLCJvcHRpb25zIjp7InJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwidXYiOmZhbHNlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibGFyZ2VCbG9icyI6dHJ1ZSwiYmlvRW5yb2xsIjpmYWxzZSwidXNlclZlcmlmaWNhdGlvbk1nbXRQcmV2aWV3IjpmYWxzZSwidXZCaW9FbnJvbGwiOnRydWUsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJhbHdheXNVdiI6dHJ1ZX0sIm1heE1zZ1NpemUiOjgwOTIsInBpblV2QXV0aFByb3RvY29scyI6WzEsMl0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6OCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjozMjIsInRyYW5zcG9ydHMiOlsidXNiIiwiYmxlIiwibmZjIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN31dLCJtYXhTZXJpYWxpemVkTGFyZ2VCbG9iQXJyYXkiOjQwNTYsIm1pblBJTkxlbmd0aCI6NCwibWF4Q3JlZEJsb2JMZW5ndGgiOjY0LCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6NCwicHJlZmVycmVkUGxhdGZvcm1VdkF0dGVtcHRzIjozLCJ1dk1vZGFsaXR5IjoyLCJyZW1haW5pbmdEaXNjb3ZlcmFibGVDcmVkZW50aWFscyI6MTY1fX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjMtMTEtMTYiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJPbmVTcGFuIERJR0lQQVNTIEZYMSBCSU8iLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDIzMTExNjAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIzLTExLTE2IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjF9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjMtMTItMTkifSx7ImFhZ3VpZCI6ImIyNjcyMzliLTk1NGYtNDA0MS1hMDFiLWVlNGYzM2MxNDViNiIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiYjI2NzIzOWItOTU0Zi00MDQxLWEwMWItZWU0ZjMzYzE0NWI2IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6ImF1dGhlbnRvbjEgLSBDVEFQMi4xIn0sImRlc2NyaXB0aW9uIjoiYXV0aGVudG9uMSAtIENUQVAyLjEiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6NiwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9LHsibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MTAsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6MCwiYmxvY2tTbG93ZG93biI6MH19XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRFh6Q0NBa2VnQXdJQkFnSUxCQUFBQUFBQklWaFRDS0l3RFFZSktvWklodmNOQVFFTEJRQXdUREVnTUI0R0ExVUVDeE1YUjJ4dlltRnNVMmxuYmlCU2IyOTBJRU5CSUMwZ1VqTXhFekFSQmdOVkJBb1RDa2RzYjJKaGJGTnBaMjR4RXpBUkJnTlZCQU1UQ2tkc2IySmhiRk5wWjI0d0hoY05NRGt3TXpFNE1UQXdNREF3V2hjTk1qa3dNekU0TVRBd01EQXdXakJNTVNBd0hnWURWUVFMRXhkSGJHOWlZV3hUYVdkdUlGSnZiM1FnUTBFZ0xTQlNNekVUTUJFR0ExVUVDaE1LUjJ4dlltRnNVMmxuYmpFVE1CRUdBMVVFQXhNS1IyeHZZbUZzVTJsbmJqQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU13bGRwQjVCbmdpRnZYQWc3YUV5aWllL1FWMkVjV3RpSEw4UmdKRHg3S0tuUVJmSk1zdVMrRmdna2JoVXFzTWdVZHdiTjFrMGV2MUxLTVBnajBNSzY2WDE3WVVoaEI1dXpzVGdIZU1DT0ZKMG1waUx4OWUrcFpvMzRrbmxUaWZCdGMreWNzbVdRMXozckRJNlNZT2d4WEc3MXVMMGdSZ3lrbW1LUFpwTy9iTHlDaVI1WjJLWVZjM3JIUVUzSFRnT3U1eUx5NmMrOUM3di9VOUFPRUdNK2lDSzY1VHBqb1djNHpkUVE0Z09zQzBwNkhwc2srUUxqSmc2VmZMdVFTU2FHamxPQ1pnZGJLZmQvK1JGTyt1SUVuOHJVQVZTTkVDTVdFWlhyaVg3NjEzdDJTYWVyOWZ3UlB2bTJMN0RXemdWR2tXcVFQYWJ1bURrM0YyeG1tRmdoY0NBd0VBQWFOQ01FQXdEZ1lEVlIwUEFRSC9CQVFEQWdFR01BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0hRWURWUjBPQkJZRUZJL3dTMytvTGtVa3JrMVErbU9haTk3aTNSdThNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUJMUU52QVVLcit5QXp2OTVaVVJVbTdsZ0FKUWF5ekU0YUdLQWN6eW12bWRMbTZBQzJ1cEFyVDlmSHhENHEvYzJkS2c4ZEVlM2pncjI1c2J3TXBqak01UmNPTzVMbFhiS3I4RXBic1U4WXQ1Q1JzdVpSais5eFRhR2RXUG9PNHp6VWh3OGxvL3M3YXdsT3F6SkNLNmZCZFJveVYzWHBZS0JvdkhkN05BRGRCaisxRWJkZFRLSmQrODJjRUhoWFhpcGEwMDk1TUo2Uk1HM056ZHZRWG1jSWZlZzdqTFFpdENod3MvenlyVlE0UGtYNDI2OE5YU2I3aExpMThZSXZEUVZFVEk1M085ekpybEFHb21lY3NNeDg2T3lYU2hrRE9PeXlHZU1saEx4UzY3dHRWYjkrRTdnVUpUYjBvMkhMTzAySlFaUjdya3BlRE1kbXp0Y3BIV0Q5ZiIsIk1JSUZoRENDQkd5Z0F3SUJBZ0lNYlVJOSt6eUVRVVREK2RuQ01BMEdDU3FHU0liM0RRRUJDd1VBTUZzeEN6QUpCZ05WQkFZVEFrSkZNUmt3RndZRFZRUUtFeEJIYkc5aVlXeFRhV2R1SUc1MkxYTmhNVEV3THdZRFZRUURFeWhIYkc5aVlXeFRhV2R1SUVkRFF5QlNNeUJRWlhKemIyNWhiRk5wWjI0Z01pQkRRU0F5TURJd01CNFhEVEl6TURFeU5ERTFNREV3TTFvWERUSTJNREV5TkRFMU1ERXdNMW93Z2JZeEN6QUpCZ05WQkFZVEFrUkZNUTh3RFFZRFZRUUlFd1pDWVhsbGNtNHhFVEFQQmdOVkJBY1RDRUZ6WTJob1pXbHRNU293S0FZRFZRUUtFeUZCU1ZobFkzVjBhWFpsTG1OdmJTQW9RWGhsYkNCV2IyNWtaWEpvWVdkbGJpa3hFakFRQmdOVkJBc1RDV0YxZEdobGJuUnZiakVUTUJFR0ExVUVBeE1LUVVsWVpXTjFkR2wyWlRFdU1Dd0dDU3FHU0liM0RRRUpBUllmUVZoRlRDNVdUMDVFUlZKSVFVZEZUa0JCU1ZoRlExVlVTVlpGTGtOUFRUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQUtmLzRHekdBVW1KSDRSOW1DdmNKK0NnVFVnUDFETnI4ZE4ya0R2U0E5eHVJTWIxTlpKWFFneFNPT0FZcUlCekZOY2prTlZsODBZM2RybTR0UEpTbDNrZldXTTI2eFlMRnN2bDFCY3F0clByc3N5eElCdFg1a1RlMnArTTlSbGNaUWNFajVDYllwQVNwdVNUQnl6b091ZitWU2ZPVVZxRHpDREg0Q3FzRUN5dnlMS3JKdzlrak40QjZsRlh5em1ySVdxUm1HV0t4NGNzby93eFlJVU5jT1YrcDZJODRZMnoxbkZJV0VoY0E2ZGdySlFuRHBENUlHRUpkU3hUbjh0MlpuQU5wNEpFQXA4ajV3M3RiVTg5UktpM3lQQXV3c3hpM1hjbG9GQXRHeHcyd2s3bkp5aXpxOTh0TzVsd2ZnSE4vWW5nbFl3VTRVRm5PQnpQNU11elByRUNBd0VBQWFPQ0Flb3dnZ0htTUE0R0ExVWREd0VCL3dRRUF3SUZvRENCb3dZSUt3WUJCUVVIQVFFRWdaWXdnWk13VGdZSUt3WUJCUVVITUFLR1FtaDBkSEE2THk5elpXTjFjbVV1WjJ4dlltRnNjMmxuYmk1amIyMHZZMkZqWlhKMEwyZHpaMk5qY2pOd1pYSnpiMjVoYkhOcFoyNHlZMkV5TURJd0xtTnlkREJCQmdnckJnRUZCUWN3QVlZMWFIUjBjRG92TDI5amMzQXVaMnh2WW1Gc2MybG5iaTVqYjIwdlozTm5ZMk55TTNCbGNuTnZibUZzYzJsbmJqSmpZVEl3TWpBd1RRWURWUjBnQkVZd1JEQkNCZ29yQmdFRUFhQXlBU2dLTURRd01nWUlLd1lCQlFVSEFnRVdKbWgwZEhCek9pOHZkM2QzTG1kc2IySmhiSE5wWjI0dVkyOXRMM0psY0c5emFYUnZjbmt2TUFrR0ExVWRFd1FDTUFBd1NRWURWUjBmQkVJd1FEQStvRHlnT29ZNGFIUjBjRG92TDJOeWJDNW5iRzlpWVd4emFXZHVMbU52YlM5bmMyZGpZM0l6Y0dWeWMyOXVZV3h6YVdkdU1tTmhNakF5TUM1amNtd3dLZ1lEVlIwUkJDTXdJWUVmUVZoRlRDNVdUMDVFUlZKSVFVZEZUa0JCU1ZoRlExVlVTVlpGTGtOUFRUQWRCZ05WSFNVRUZqQVVCZ2dyQmdFRkJRY0RBZ1lJS3dZQkJRVUhBd1F3SHdZRFZSMGpCQmd3Rm9BVWxqUFI1bGdYV3pSMWlvRldaTlcrU042aGo4OHdIUVlEVlIwT0JCWUVGQzU3TE4zUlczOGRleFFoeGZIVy9XV3Q3Y0NRTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFDdnZQaW03am9GMEc0dk9lcFNGYkNSZ3RDd1JBeWVuOWZIekRTMjdXbnNUYkc5VW9xK3ppR3JjRCtVNUVuSDZVcm1GMUJxeFhMMUNqcUVQcm41WVF0WlNzM3Bmdm9uWGtGQ2h0aVlZT2dLNGdJcUp0Q1ZCYVgzSDRESGtJMVY3Qmg3YjR2alpBRDhjSkx4aUpmNkF2STRlMTFEOUs1dHBaN1laUUU1TXc0OVZEdFE4QTdwa2pPNndYakhGWFhnWTFsUHcrTFJRdVUzbTlLR0FNM0M0Z2Uwb3RwVzBYeUtEeHFzS1dPeG1NWDdJamhYRkRwS1lvcG1tTFBjVHo3ME9OdGJFMk5IeUlhM1V1amhjamJjcnBvTmttYUZpTGsycHFLUlpJb0hrWmFGTWQ5d2FROWYxbFMyd3dWUXh0SCt2TlY5TjNLK0huTDNuQi9DVTJFMGJ0SkgiXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBYkFBQUFHeENBWUFBQUFERXVPUEFBQUFDWEJJV1hNQUFCY1NBQUFYRWdGbm45SlNBQUFGRm1sVVdIUllUVXc2WTI5dExtRmtiMkpsTG5odGNBQUFBQUFBUEQ5NGNHRmphMlYwSUdKbFoybHVQU0x2dTc4aUlHbGtQU0pYTlUwd1RYQkRaV2hwU0hweVpWTjZUbFJqZW10ak9XUWlQejRnUEhnNmVHMXdiV1YwWVNCNGJXeHVjenA0UFNKaFpHOWlaVHB1Y3pwdFpYUmhMeUlnZURwNGJYQjBhejBpUVdSdlltVWdXRTFRSUVOdmNtVWdOaTR3TFdNd01ETWdOemt1TVRZME5USTNMQ0F5TURJd0x6RXdMekUxTFRFM09qUTRPak15SUNBZ0lDQWdJQ0FpUGlBOGNtUm1PbEpFUmlCNGJXeHVjenB5WkdZOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6RTVPVGt2TURJdk1qSXRjbVJtTFhONWJuUmhlQzF1Y3lNaVBpQThjbVJtT2tSbGMyTnlhWEIwYVc5dUlISmtaanBoWW05MWREMGlJaUI0Yld4dWN6cDRiWEE5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM4aUlIaHRiRzV6T21SalBTSm9kSFJ3T2k4dmNIVnliQzV2Y21jdlpHTXZaV3hsYldWdWRITXZNUzR4THlJZ2VHMXNibk02Y0dodmRHOXphRzl3UFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzQm9iM1J2YzJodmNDOHhMakF2SWlCNGJXeHVjenA0YlhCTlRUMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzk0WVhBdk1TNHdMMjF0THlJZ2VHMXNibk02YzNSRmRuUTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl6Vkhsd1pTOVNaWE52ZFhKalpVVjJaVzUwSXlJZ2VHMXdPa055WldGMGIzSlViMjlzUFNKQlpHOWlaU0JRYUc5MGIzTm9iM0FnTWpJdU1TQW9WMmx1Wkc5M2N5a2lJSGh0Y0RwRGNtVmhkR1ZFWVhSbFBTSXlNREl4TFRFeExUSXdWREUwT2pRd09qVXdLekF4T2pBd0lpQjRiWEE2VFc5a2FXWjVSR0YwWlQwaU1qQXlNeTB3TkMweE5sUXhPRG94T1RvMU9Tc3dNam93TUNJZ2VHMXdPazFsZEdGa1lYUmhSR0YwWlQwaU1qQXlNeTB3TkMweE5sUXhPRG94T1RvMU9Tc3dNam93TUNJZ1pHTTZabTl5YldGMFBTSnBiV0ZuWlM5d2JtY2lJSEJvYjNSdmMyaHZjRHBEYjJ4dmNrMXZaR1U5SWpNaUlIQm9iM1J2YzJodmNEcEpRME5RY205bWFXeGxQU0p6VWtkQ0lFbEZRell4T1RZMkxUSXVNU0lnZUcxd1RVMDZTVzV6ZEdGdVkyVkpSRDBpZUcxd0xtbHBaRG8yTkdSaVpqVTRaQzA1T1RZNExUZzRORGN0WWpNNU5TMDVNVFk1TmpVeFlUUXdNR1FpSUhodGNFMU5Pa1J2WTNWdFpXNTBTVVE5SW5odGNDNWthV1E2TmpSa1ltWTFPR1F0T1RrMk9DMDRPRFEzTFdJek9UVXRPVEUyT1RZMU1XRTBNREJrSWlCNGJYQk5UVHBQY21sbmFXNWhiRVJ2WTNWdFpXNTBTVVE5SW5odGNDNWthV1E2TmpSa1ltWTFPR1F0T1RrMk9DMDRPRFEzTFdJek9UVXRPVEUyT1RZMU1XRTBNREJrSWo0Z1BIaHRjRTFOT2tocGMzUnZjbmsrSUR4eVpHWTZVMlZ4UGlBOGNtUm1PbXhwSUhOMFJYWjBPbUZqZEdsdmJqMGlZM0psWVhSbFpDSWdjM1JGZG5RNmFXNXpkR0Z1WTJWSlJEMGllRzF3TG1scFpEbzJOR1JpWmpVNFpDMDVPVFk0TFRnNE5EY3RZak01TlMwNU1UWTVOalV4WVRRd01HUWlJSE4wUlhaME9uZG9aVzQ5SWpJd01qRXRNVEV0TWpCVU1UUTZOREE2TlRBck1ERTZNREFpSUhOMFJYWjBPbk52Wm5SM1lYSmxRV2RsYm5ROUlrRmtiMkpsSUZCb2IzUnZjMmh2Y0NBeU1pNHhJQ2hYYVc1a2IzZHpLU0l2UGlBOEwzSmtaanBUWlhFK0lEd3ZlRzF3VFUwNlNHbHpkRzl5ZVQ0Z1BDOXlaR1k2UkdWelkzSnBjSFJwYjI0K0lEd3ZjbVJtT2xKRVJqNGdQQzk0T25odGNHMWxkR0UrSUR3L2VIQmhZMnRsZENCbGJtUTlJbklpUHo2ek9YUmxBQUJ1TjBsRVFWUjRuTzI5ZWJ3MVRWWGYrNjB6UCtNTEw2K0NZQkJCRUVSRW9rRWlpR01jYmlTS2lrYTlHRFhHUkRTUnFERnFqT2pWYTR5NVJIRkVjY0RnaUVvVUhGSGpoQkJIeElpQWdzd3p2TUQ3REdkNnpxbjdSOVdxV2xWZHZmYyt6N1BQUHJ0N3IrL24wNmQ3OXg3Tzd0N2Q5YXMxMUNybnZjY3dETU13aHNiYVdYOEJ3ekFNdzdnWlRNQU13ekNNUVdJQ1poaUdZUXlTamJQK0FyZUNjKzZzdjRJeFVqd3M1Y1hsd0lMV3h0d1phaTdFb0FYTU1HNkZHVVZxV1lUTXh6KzkzOGZFelZnMVRNQ01sV0NLV0xXZU80bHczYXJJelNJODhqOWFyKzBWTnhNMVk4eVlnQm1qWklKZzFmdmRqTSsxSHA4MnRmajQ2anZJODY3bnRaM3pZSUptakFrVE1HTVU5QWpXTEdKVnJQWG51TWErK3JsNTR4c0M0N0lZK1hvZi9ldW1xSm1nR1dQQ0JNd1lMRE9JVmxPa1VNTGtxbTNYMksvZmMxckNWWDloSlZZK21sMCtmamV2QmEyMVRmOWEwN0hRVE15TW9XRUNaZ3lLS2FMVldoY0M1VXNoY3VSOWFWR3Y2d2haNC8vUFM5Q2FMc0RLK2hLUlNvdXY5bm4xdm9hbzZXMVhQVFl4TXdhSENaaXg5SnhBdE5LMkZpelhGYWcxeXVmWGZMVXRyOVZDVm9uZnFWR0xFQTNCOG5DTTJoWVIwODgxM3FQRkR2VWFFek5qa0ppQUdVdkxCR3VuRmkxdEhhMVZnaVZpdGFZRWFrMDlsL2FUbDg3N2ZQZi8xTjlwRG9kYmJ2dTJLSWx3SFFQSHNqK3UwM05LMUlyM2tVWHgySFdGYktLWW1aQVp5NFlKbUxGVW5FUzBhaXRMV1U5cnRXQkZnVnIzcFZDdHhkY1crNVhJcGMrakZFWDlmVzdaSXZNTjhhSzBvSklJdVN4YXgrcnhFV3FmZXY3SXEvY29RVXZiUGRaWlU4ek1Lak9XRFJNd1l5bVlJbHoxdG9oVHNxTEl3clZlQzVhRDlmaWE5Zmo4T25tL2lOZDZYRVM4MWh2V1dpMWlFQVIwVHFlZzJKYWxzS29xc1RyeWNPVFVOa0djWlB1b0VyZ2thT1I5V2hpOUVybVdpS1h2YVZhWnNReVlnQmxuU284N3JtbHRrZDJEU1ZSOEtUVHI5YUlFYXdPMXJmYjNMZzFyclJDd2VjZkNsQ1ZXQzFoaFZkV0xFcXNqSDVZYmF2OE5MV2hVMjhvNkt3U3Rjak9hVldZc0pXNm9OYkFBcTRVNFlHWVJybWc5SmZFaVcxWmlYWWxsdFZFTFZWelhTN0UvdmtjLzExcjZCS3pqU3J6MVU1TFdIUUdqUjd6SUluVkRCRXN0OWVOaXZ4SzJHMlFSTzZMcnBoUVhvd2ljL3A3NnU4c0pHVzZqc3FJTVZRZk1Bak1XeWdUaDZzUzJkR0tGdUFaOWFWMXRpR2dwSWRxY3N0NEFObDM1bmxyNHRIaHBFWE5VR1luTVdjQkVMT2dLMkJHbGlHbUJPdkpaeEc0QWgyU3hPdXhiZXlWcVRsbHUwSFUveHUwMTJsWlpjUXptWGpRV2hRbVlzUkJtRlM1eThvUWtVOVFXVWJLZ2ZMQ2lObjBXcU5heVJSYXRUUitGekNzUlUyS20vNGNXcjNXVTYzS0tlTTBxYUszR1hmckJSZnlMVXJ5T1VVSWpvbFdMbHdzQ2RVZ1dyQVB5NDJLSjc5V2lweTAxaWJPbDJKdnZaamlha0Jsbmdya1FqVlBscE1KRnRyWmFvcVd0cWJRNDJQSlpyRGFCcmNhKytqMGJTdmhhRmxodGZmVzVFT0hXcmJDNjhaL2tRcFQxaldwOVdJbFl2UnhFVVRzZ2k1bmVWNzllVzJ2cC83Z3lFVVFFVGJzWG02NUZFN0hsWnFnNllCYVljU3JjaEhCSk1vYU9TMG1zU2l3bmJWVk5YSHo1dUJheTJ2S2FSYngwUEc2ZTRpVVVJcVpjaWNmTUlHSkt2TFRyOEJBbFZrcThwaTNwZlM2N0dwT1l1ZngvajhsWmtLNGhaT2w0ekJvelRnT3p3SXk1MHhBdkxXQnJEZUdTckQvSkVCUzNvQmFmZXRsVzYrMXFYNzBVcmtUYXlSMUZpajE1N2VpM3Z1WjlBVTVLNUpCMUoxV2VkckpHN1Rwc0NkVytXdTlYKzlKU1dXbnkyWVZWaG5JeDByWEd6Q0piY29hcUEyYUJHWE5qbXRYbEd3T0lVWWtZWW1uNTRBTGNqRmJVdG9OdFg0cVY3TnVtdTV4RXZGcHA4M1hTeGtuRjYxWmlZSHIvSkJFcnhuYlJMMlRUUkd5L1dnNGM3SHUxTHo2VzE5YVcyU0haOHB0RnlOTHgrWkFNTTh4VzAxZ2FUTUNNVzJZVzRYSmhPdzBnMXE1Q0xWeEVvWXJiTzJTaDJpR3ZkM3hieUZyaWxkeUd0TVdyNlM2a0xWNzE4WjBHdGJYU0sySzAzWXA5MXBoMktSWWlwa1VycnZjbzExck05bDEwUjRxSXlib1dNcCt0UmZuT3hYR2FXOUc0VlV6QWpGdWl4MTJvbHpSMkt3clh4aVRob2lGV0xnaldEbkN1ZnQ1MzNZZWRlSmVLZGMyU3BOR3l1SG90THpjbklmUGRScnpQRXBza1pwMzRXQlViNjhURktDMnNXcnoyUE94RjRkcVQ1eXF4UzNFekxXUXhUclpHVFBvZ1dGeDFmTXlzTWVPV01BRXpiaHJmdGtxS09GY2QzMEpsRWRadVFhSmdFVVRybklpV0VpOTVYb3RZc3JoY3pqd3MzSVYrOHVEa2puQlZ5Um90NFVyYnA5VHErc2EycDB6dW1NVXEwM0d5d3EybzRsb3RsMklTSzJEWEt6R2pYUGFWdUVtODdNQ3I5SHppQU90b2xUbjEvWXJqTlJFemJnWVRNT1BFekdKMVVjYVc2bXpDTFZlNkJtVTVGNjJ0Y3o0SWxsNXE4YXFUTmpaODExMVlpMVlyTWFOamNmbnl1SUNPbFhWYTdrT2gxeHJ6L1paWlhYVys1VnBNUXVZcDB1WDc0bUphckhaYjZ5aGUyM0ZidjNjOS9vODFTbXZzaUI1cnpGeUt4a2t4QVROT3hBVHhrZ0s3T3M2VnhscTV5azBZeFV1RTZWeTB1TTU1T0UrL2VJbUExZTVDYlhHMXFtbm9LdlBURWpNbVdseG5SSzlGVm0wbk1ZdVdXdE1xb3h6YjFVcjBFTmRnNFU1MHdSclRBbFl2SW5hYlBzZk4xcFZZaW9WcjFwZ3hGMHpBakpucGNSbHFTNmJqS294VzE1YlBTUmVTaEtFRjZueDhMT0tsUmF3V3JtM0tPTmNzaVJuYXJUa3ByalVwUWVPc1JNdzMvcmVmc1BhVWJzYmF4VGdwNFVQaVdPSUtMS3d4MzdYQXJxdjFUbHlMSzNmWGhkOW5MMzdXT2xuSTFtSmNUZ1JOZjBlSGlaZ3hJeVpneGxRbXVReTlTdENJeVJMcnlsVllaQlBTZFEyZWJ5em55QmFaRmkreDN1ck13bW5GZDZlbHdVK3p0TTdhK3BMLzc2ZnM2eFV6SmlkOUZPNUZuMVBqeFNKcldXTmljWjF6Y04xbjhaTEVtdXVFYTJDUDhCdnRVZjQraHpIT0tKVTlpQ0sycHIrL3VSU05hWmlBR1JPWmxLaEJkc3ZKVkNWYVhIUml4aVRSdW9DeXZFUzRsSGpWR1lhNi9GTkx1UHBFYTVxVjFSU3FHOEE3Z1hlQnV6TnV2eGw0Ry9BT3Rid051RXJaMmg4U1dua1hEMDVPaWlqNlplQzlnSHNBZDhUMVBZSDNBVzZQeTkzQjN4N2UyeWV1WG0xRHY1Q3RNZGtxazJVckhyYXN0K01oN1pDdHNYUHgwSFo5MTlXcnJiRHJxT0xKZEtlcHVhR3NZajErVEdQV21OR0xDWmpSUzUvTFVGdGRaSmRoS3ZQa2xjWGxjbHlySlZvWENLSWxMc1RhNnRMdXdrN2RRcWUrQ3lkTGYrOFZxN2VEK3l2Z2I0R1hBRytpRktxckp6cURBUTljTytGN0xoRUU3UjdnN2lBSTNRT0Jod01mREx3ditLM3cwcFlRYTdkanl5S3J4V3pkNVNsVVJNZzJ5VUltV1lYaVZreEpOd1FoYTJXSGJwTUhwRXRsRmJIRzVObzVpT0lrMXJ4TzhCQ1JOWmVpMFlzSm1ORmhtc3ZRcVdLN3l1cVNKQTNkdUozM1dhaGtPVjl0aThEcFJJMld1N0FldzZYRjY4U2lkUXk4SHR4cmdUK055MThTckN1eG5zNlNLM0Y1VGJWL2czQ0M3Z251NGNCSEFQOFF1QTl3UC9BNzRXWFRyTFdPbUttRWovVzQzcUNNa3gzNlBGeWhyd3BLeWhDVjEzcUtRZVVwVmhsZHpYcm1nVU5pZ29kU1gvbU9ZQzVGbzRIVlFqUUtKb2lYTkRaMWhYaHhGeVYzb1dzTFY3MmttSmZMTGtPZEZ0OFg1K3B6RlZKdFUyMXpEZHlMZ0Q4QS9ocDRSVnhxbjlVUXVTL3dRUVFMN2JIQVk0QkwvZW40c2wwTFd1RmFkTGxrVlozczBSbzNKc2tjMXdrRzV6V0N3WHJOd1ZVZjF0ZDgyQy9KSDdyU2gwN3JMNlp2b1JSY3dFUnMzZ3hWQjB6QWpFU2Z5NUJnZVVsNmZKcUhDNVZkU0JuajBrSjEwY0VGRHhlcExDL0tMTU82QkZTZmNFMnl1UFIzNXdoNEZiaS9BWDREZUQ3d0ZrS3JPV2EyQ1RHMVJ3T2ZUTERTSHBCZGprSkx6RnFKSDFJNFdNOURwa3RUelNKaWVwSDk4anBKMGQ4bkRvSjJ1WHFJekJLdHhUVjlkeE94K1RGVUhUQUJNNENaNDExUzJhSmpkVkhHdHk2cTlVVjZ4TXVWcGFBNmJpWm1GNjdpUXJnVDNIT0JYd2RlQkx4aEhpZG93TndUZUJUd0NjQS9KYmdhcTVmMEpYNzBaUzcyV1dNNlEvRjZ0TGl1Umd0c2twRHRra3RXSGJqd2VhbUtCK1g4WXlaaXA4QlFkY0FFekdpSmwxaGRLZDdsVktXTEdBTXBZbDJWbFhYSndVVmZDcG1JV3oyMnE4OWQyQ3IzMUJKWkFONEs3cVhBenhLRTY4Mk13elU0Yis0Z3VCZy9oMkNoM1h2MlZQeDZVSFJ0amVuQ3dFbkVhRnRoVnloRjdCcFp4S1NpUjVxTHpPVlpvYldncHU5cEluYnJERlVIVE1CV25FcTg5TEpPVHBHWERFQkpydENwOFJlQUN5SlljWDJKcnVVbFZscGRUYU9WRnQrS2MrbnZtSGdWdUdjRHZ3QzhlRzVuWlRWNEtQQnB3R2NESHpMWkttc0ttUWdMWlRVUDdWSnN1Uk5Gdks0b3kweUxtSTZOcFRuSVhIUXBrbDJLUlZ6TVJPeldHS29PbUlDdE1EM2lWU2RyYkxveVBWNjdER3MzNGFYcXNWaGU0amFzRXpYcUtob3pDZGQxNE1YZ2ZoTDRKZUN0OHpzbEs4azlnSThDL2hYd0dQQ1h5cWVuQ1ZtUnFVaFpqa3BiWXRmcFdtRlg2TG9WdFV0eEQxVWNtQ25KSFNaaU44OVFkY0FFYkVXWkpsNlNySUZLbTNheGtrWjBGNHA0WFZMcjJ2S3F4VXNuYXNnMEp6TW5hQndEendYM1k4Q3ZZUzdDMCtBVGdjOG5XR1hiL2U3RmxsdXhybmhmeDhXbWlkZ1ZRcnpzV3N4WTNQV2hIRldhdGtXU08wekU1czlRZGNBRWJBV1pSYnpJTXlOditTaEFVYmpPb3l3dUI1ZThFcS9vUXRUaVZXY1o2a1NOdWtKOE16bmpLdkQ3NEo0R3ZJRHhaeEdlTmV2QWh3TmZBVHdPdUR4WnlQcUtCZXZKTS9jSVlyVHJjenA5RWpFSFYzelhJcnRHU0FTUnF2ZVMzSEZvSWpaL2hxb0ROcEI1eFRpSmVCR1ROVndjMStWRHJPdVNMeTB1dllobGRzR1ZWVFZTb29heXVtcVhZVWU0UFBBY2NEOEUvUGFwbmhWRGN3VDhjVncrQ25nU3VNOG1DVVBkYTZ4L3Z6cjVSaGRYTHFiWG9WM0xzcFBBRTY5WjU5VS9xYjZJVmUxWVVVekFWb2hHdHVFa3kwc0dGOHVnNUl2a0JJM0x4SFVqWVVPcWF6VGpYWDU2ckF1QVB3UDNIY0N2RXZ4SHh0bndod1FoZXhid2RlQWVUVWZJdEo2MEZpMUVoWkRSRmJTT2dFVXhTdGR1ajRqNStIcXJacjlpbUlDdENBM3gwdE9NOUlvWFpheEx4T3V5MnU2SUY1WEwwSVhQbldSMUplRjZKYmp2QjU1QkNKZ1laODhCSWViNE84QVhBbDhKN3NHeldXUE9sU1cvV3RaVzM2U2o2VHJ4MVRYU0kySkhaQkdUMTVtSWpSd1RzQlhBOXpjMDY1UEV5K1d4WEZxNHRJQ0o5U1ZwOGgzeG91c3liRnBkQjhBem85WDFtcm1mQVdNZTdBTS9SQmhuOXgvQmZURXAwYVBYR3ZQZGprckx4ZGdVTUpmZjM4SG5sU2RZWE41bEMweTl4Qmd6Sm1DcmhXNVkxaHhwRXNvTlZNeUx0bmpkRnRlWFhlazZGTXVyVHRhbzNVSmF1SW9lOVl2QmZRdnczTk0rZW1NdXZBNzRjc0x2OWEzZ1BueEdhNHp5R3FoalpQV3MyUzRxVU1lOVREWGdPZ1cvOG92U1FHZXp3c2FOQ2RqSWFTUnRTUFZ2RVM0OVFEbU43MUxpSmNLVkJLd2hYdWRRMDUvTTZqSzhEdndndVA5T3FKeGhESXZmSkV3NTg1WGdua3pUR3BOSkt1V3hVd0xWbkx1dFliSFZ3dVZkRUNhSnhYbFBub0ZhN1Uvdk1SRWJMeVpnSTZhVmNTanhpQ2d3VXBSWHNnM1ArVExtSmU3QzI4Z0NsaklPNlZwZW0wd1dML2t1L0EyNGZ3LzgxaWtldjNINnZBWDRla0t5eDNlQys2RFNJSko1eDZhNUZMVkYxaEl1SVFsV3ZTMmlSa2poOTVUREJFM0VSb29KMkVpWmxDNVBIa1M4NmNNQTVSM3l2RndYS04yR1dyeDAwa1pMdlBUNHJ0NEc2V2ZCZlQzdzJsTTdlbVBSL0Jyd1V1RGJ3WDF1djB0UmFGMmJuVTZPUW90VTJpYVh0SklZV0JLMitENWQvTmNZSVNaZ3EwRVNMNmNtb25SNVlrSVo2eVdEa3kvN2J0S0dXRit0Yk1OV0lkNU93L1IyY044Sy9BQldSV09NdkJiNEF1Qi94NWptM2JwQzFqZC9XeTFjSGJjaDVFazNYWjQ5K3Bnc2FzZGVpWnpMNzAxSkhXYUZqUThUc0JIU1ozM0ZqRU9aUlZtbVEwbVdWMHpja01vYXRYRDFwY3JyR1pOcnkwdStBMzhMN2w4RHYzKzZoMjZjTVVmQTl3S3ZDbXYzL3Uwc1JkUmpWejBXVXFLR3NyeU9LY1dyWHJRRnBvWE1ranBHaWduWXlKaVF0Q0VaWDYycThoY29CeW5yYkVNdFlIVlIzdHJ5cW9QeUFQd211SzhFL3ZZVWo5dFlMbjROK0h2Z0I4QjlUTnNTZzM3eDB1aVlWMTIycWlOaVhsbGxEU3RNUHM5RWJDU1lnSTJJSHN2TFJhdHJuUkR6RWdFcnhJdkdZT1dlYk1NKzhXckd1MzRVM0g4RTdqeTl3emFXbEpjRG53dDhGN2gvbmdWRHJnMUo4T2hEVzFNdDBaTHRJNWRuakU0eE1iS1FyU3NyekVSclpKaUFqUmZ0Tmx4elpZM0RIVUpWK2ZNOVdZZXRDaHV0aEkxZThkb0g5MDNBVTdGNDF5cnpWa0pjN0UweDFYNnQzeG9UZkdOZFcxcFNOUGlZUENkWjJ1ZExJZE9MeGNOR2hnbllTSmlXZGVoenJDcTVEbjFwZmRYVk5TYVZoNW9vWHRmQmZRUHdQYWQ2eE1aUXVBRjhIV0hjMzllRFc1OHVZdEIyRzNhcTNyc3d4WW9XTkQzcFpSSXhpNGVORXhPd0VUQXA3dVhLR1pVN2NTK1hZMTk2cVMwdktjbzcxZks2QXU1SndFK2Q5a0ViZytJRzhCVGduY0MzZ2Jzd1djUnF5MG5LUklsMWxTd3VYMDdoa3ZhclRNWGtUc1RpWWFQREJHdzgxR25yYWJBeU9XVmVpMWVkdUtIbjlMcEFjQytlSkZXZXQ0TDd0OEF2TE9aNGpZSGhnYWNSTExIdkFuZStMV0tlc2wwcVV1aHBXMkEzNHZhUmJQc29ZdW85Tmo1c2hKaUFEUnhmTmdBUXhTdU85MHF6S3Z0c2ZjbEVreGNKWW5YSlowdnNJbm5TeW1aaFhub0dLTjhKN2tzSTA1OFl4aVNlUWJpQXZodmNkcjhsdGs0N2thTVFNSzltZ3ZaNVJ1amFPa3VEblFuV25FNDBNaXRzd0ppQURaZysxeUY1dkZjcTBrdFAxcUc0RC8xc01hK21lTDByanZFeThUSm01WWNJRjlwL0FiZFZpbGpoU3RUQ1Ezdm1aN0crdElBVlFrWndKeVlobytGS1BLWERORTRaRTdEeG9CTTNKaGJxSlZ0ZlluWHA4bEE2Vlg3TFRaNUJtYXZSYmZpTGl6cEtZelE4alhDUmZSdTRLanRSWDhjd3dRSWpXMStIcUtWMkxWSW1lWWhJSmxlaVdXSER4QVJzb1BSbEhib3NOa1cxRGFyWUY5bjZtampPeTVmV1YyRjU3WUg3S3VDblQvMW9qVEZ5REh3SGNBZndWZVZUTWpHbGpva1ZWcGpMVnBVSW1SWXdFUy9aTmxmaVNERUJHelpKVUNUcmtMYjFWYyt1ckJjUnRjTHlvaDN6S3RLZHZ4MzQwZE05UG1NRitNL0ErMUFVQVpaMUt6TlJzaEcxQlphRWk4b1NvM0lwK3RJUzAvL1BHQ0FtWUFPa1N0eEk0NzEwMWlGZDE2RUltQll4TFY2elpCeksvK05Id1gwN2R1Y2J0ODR1OEcrQis0QjdiRGMrbGR5SnRPTmd0WkFka01YcndNRmhkQytLSzdHVm1XaFcyRUJwRFNBMGxwaEpBNVpkVjhBa2NhTzJ2aTdRRmEvV1dLOW1WZm5mQVBlMVdJVU5ZMzdjQ1R3SmVIa2pNVWt0K3ZyV2lVbDFiRGRkMzE1ZDN6NjQxQXUzdUcvVTdqU0dnd25Zc0NrU04xRGk1ZG8zZUNGaXJoU3Z1cjVoYTA0dlhncnUzd0R2V3N6eEdTdkUzeEJFN0VwL0owMWY0M1Vuclo1TlhPSzZSVmF0aTFtMTBWdXhWc1hCSERTSHBoaExpZ25ZZ0RpSjllWGJ2Vk1Sc2ZPRVVsSjEwc1lrNjRzcjRQNGQ4THBUUDFKalZmazk0RnZvK1BDMEpWWWtLWkZGckhhVHQ3d01JbUxGZGU0YjE3b3hERXpBaGtsSzNFQWxibmdWKzNLcVlDL2x6WHhlTFhYU1JpdGRIZ2dCaG04RWZuY2hoMmVzTXQ4UFBLdmRXVXVXbU90UFZPcTczbmZJYmtUSnNKVlpHdVI2VDVnVk5neE13QVpDWlgxQkNEWTdkUk51T09WV2lkYlZlYThFeTdYVDViY0lwYVlteHIxK0Z0d3pGbkdneHNxekQzdzl3VjBkZDlYeHNIVE5rNjJ3UHBkNXV1WmRJOWJyc2hYV3VlYU41Y2NFYkZnVWFmTStUcFZDS1Y3VGJtUVJzQ0x1TldtdzhrdkEvUWRnYjFGSGFhdzhieVprSnQ0MVBSN1dxamFqTTIvVDRodFRBdmwydkJjd0syd0ltSUFOZ01hTmxHNjRtRkcxNGNOY1g4bDFTSG56U25IZUUwOUtlWVV3TmNwYlQvY1FEYVBESDlLY2txZU8vUmF6TGJnZUVYUFpBdXVNZFRRcmJMaVlnQTBIYlgwNUdsVTNhUGRDVzlsWTAxTG1FMDhIZnYyVUQ4d3dXaHdCL3hYNG85bGNpYnJ5VEtjVDU4dlpGYlpkdnhWV1hQOW1oUzAzSm1CTHpoVHJxek53dVpGOWVGTHhTaUwyNStDKzh6UVB6akNtY0EzNEJrTEI2TGlySldaMWFuMHRZbnA5amhBamx2dGdnMzRyekZoeXJCTEhjT2hZWDc1aGZibVFIbC83LzgvRjU3Wjk1VHJwNjMzZUZlTmU3MXpnQVE2Wk5YTHZZSnN5NXh0Q0ZxZVVrZGdueEJQM3NjSGdzL0NIaE1LL1R5RmRvSEtkU3ExRUhSUFRBclpQRnE5ZHRkNEI5aDNzKzFpNUk5NEhSK296aitML3Nlb2NTNHdKMkJMVHlEeHNXbDlPdVU1ODZUN1U0MTkwcjdQUGRaSjZuczhrak1reFNtNEhQaEI0UCtEZWNibURibDB1TVF2a0Jqc2sxekc2cnBhcmhFN0Ntd2h4eHRjQWZ3ZThaUkVITXlDK0QvaE1jQS9ycVZwUE9MV0ZOOEoxN3djUnNUMWd6K2NNUmlrMXRlN2pUTTR1L3c4VHJpWEdCR3dZVExLK051T051S051Mk1KdEVxMnlQdGRoUjd4ZUJlNDdGbnQ4UzRjamlOVDdBZzhISGhYWDl5TDNDT1RtOGJmWXlFbGplVVJvV1hjSm92WlM0RStBdnlBTUhuOHRxNXNKZWlmd1RjRFBrZVlQZzNaVzRoSGxZSDZ4d3JTSVNUYWlHTUtiQkN2c2lEQ1RzM3l1RmZ0ZGNrekFscDk2M0ZkZjBWN2QyOVFpSnBhWDl2bTNzZzRCdUJIRmExVXRnSWNDbndnOEV2Z3c0SUZ4ZjB1a2VscTFXUnM3bmE3dElmd1k0dk85Qi9BZzREUGk2OTRFL0Rud1l1Qi9BUzhrbUEycnhHOEF2d0I4WG5qWWw5aWg3NHV0NkRiWDk4VTVRcWR1VnduY2dRc2VpUnN1ZXppOHk4VitiYjZ3SmNWNVA5emZ4TG54eGxrcjk2R00rVnBIcGN2NzRMRzY1T0F5Y0hjZlBGejNpTXZ0d04wZDNNMkg1MlhDeXJyeVJoSC8rblZ3anljRUJsYUZEd0EranRBd1BveHc0aVpZVmEzOXQzb1R0UzdrNXNYdHdGMGx1QnIvSi9CYzRQOFFXdUZWNEtIQWJ3SDN5dUlpb2NWamNrWDZmWUtsZFEyNEF0eEZLTjk1SjhHNGxlVmREdDd0dzJ1dUVyeTYreTVjL2pLamM2cGFQMllCRzZvT21BVzIzQ1RYbmxOQ1JuQWhTdEZlY1pYbzlQbFd0cFc0RG52VDV2ZkJmU3VySTE0ZkF6d0JlRHp3UG1UUnFtNWxQOFAyTEkrRldwaHFGNVdPdmJoNnZ3ZC9nZENRZjNCTXRQbDE0RGtFNjJUc0xzYVhFdWFnKzAvaFljc0s2M2duWE03T1RmZElkS3Z2eHZ0ajM0V080UVpCdUNTbWRvejZmY3dLV3o0c2pYNEo4ZDJHUzkrY1Jka29yN0lQcVpJMlhMdldZU3Z1NVFCK0N2ampVeis2czJVTGVEVHdjOEF2QTE4Ry9sNTVsbDVCOSt4MUQxOXZ0K2FsMG5OVDFmdW5QVjkvYnV2L0pwZFcvSkorRy95bmczOG04Q0xnWHdOM3UvWFR0TlQ4RUNGT3EzWjF4b2ZSUHpic0hFRzhSTkIyNG1zMlhWajZabUlZcjd0bndKaUFMUy82eGtrM2xBdXV4RTNmalgvVkZ0aUpySzkzZ3ZzK3h0MjkvRkRneHduWmxVOEFmMm02YUdrUmFZbVFua2l4WGs5YVd1OHBaZzZtSzJ5dDc1YSsveHI0aDROL092QXJ3T2N5M2hiM0RjQVBrSVlnMUIyeHBvaVJSVXhiWW1ua2c2dm1Ddk0ySm13UW1BdHh1V2xsSDhyQXl5M0pQcVM4SVdXWk5ldlFBVHdMZU1rQ0QyeVIzQTM0S29KMThsNzlyajdmMks3akxPbXh5MVpidmVqUDFOc2RkeURWNytEeWIxMDN5UFUrblNGWGZLWUgvNUhBSTJNczgxc0licmV4OFV6Z0MzTmFQZlI0S2lnRlRGdGl0UVdXaWxySGVQTmFGTEZqbHovZnhvUXRHU1pnUzBhVnZDR1AxMXhPNUpDNmgvVk4yZWxWMGhXd3B2WDFkbkRmelRqdnlvOEh2bzJRQnQ5d0U4cDZrbGcxM1htKy9kcEpRZ1k5d2tXT2I5YWl0Vlp0VHhLMTRuOXNnSDhDdUk4Q3ZoVjRCdVBLV253WDhGU0NrREU5RmxhTWxTUVArSy92bFMyZkJ6YmZ3RkxxbHg0VHNPVWszWkF1cDg2bmViOWNLV0QxRFpscXZmbnBrMVE2Q0c2MXNVMVN1UVg4TzBLdy83YlFjeGI2aEtzUUtoY0h0TktOZC9YRncxcXV2V2tDVmd0Vi9iaUl4N2g4SGZRSld5RmtIdnc5Z2U4QjkyamdhNEUzem5iNkJzR3ZBSDhGN2tPNlZsaHRpWFU2Zkw1cmlhWGkxdEhUSVRNOXJHSEpIRXVMQ2RnUzRlbjBwQ2RaWDRXQVZiMUpYVEtxdDlJOHdKdkJQV3NCeDdaSTdrUG9uWDhPVGF1ckpWd2RrZkxkT0ZTOVhRdmFOQkdiUmJ6V0crdTA3YXZIMVh0YnY2OGpQT0UvRDl4RENXN1VzU1RxM0FuOE1LSE0xSHA1ekZyd08zVVNYWm1WbU56dHF0Tlh1OXlsdkpUOER4T3ZKY0VFYkRuUnNTL25jdVg1WXVvSVNoZWlqQTNySkc1VVBmZWlrWHNlOExLRkh0cnA4aEJDbHRwakpsdGR0V2hwZ2JyUldOZjcwdUt5Mk5VaXB2OGZsTUpTaUZmczhXdkIwakVjL2J2WCsrbzUzUFNpY1I3OGh3Qy9CTzdMQ1duM1krRFp3RmVBZTNBakZ1YkxjNWtHTi92cTNwSDd4Z2NSa3dTcEE4THZjZ1JwR0l1eFpKaUFMUi82UnBHcUFLMnNLbDArcWxucmtKeFIxWXg5WFFYM3ZZeW5vT3lqQ01rb0Q1aHNkVTBTTFowUktQWHhKQjRpK3dweDgyMXJyQlVQYXlWbmlHV2xmMSs5RnBmV2hySU05Rys3U1ZmTTVIL1d2N2NEdUNmNG53QjNPL0FqSnovRlM4YzdDTWZ4LzRXSExTdFhsNlZzWmlUNnJ1ZEN6bm1kekdGdXhDWERCR3c1RWN0TDl5VDE3TFBKbjEvMUp1VTVIZnZxelR6OFpjYVRvZlpZNEg4QTkrMFhyejdoYXFXOUg4amFWOCs1SUZxdGxIY3RZclVWQm0zcnEzWVZpc1VzNmR4UzYxSzd3UFJhTDlwS0V5R3JyVEVIY0FIOGQ0SGJCSDV3eHZPN3pEd2IrQnB3OTJwM0Zsb1ppZW4rVWU3RWRQKzRQS2g1M1FjTHVaVXdZK0sxQkppQUxRbSs2ajNHSGw3cXBidGNmYU8rQ1l0TUt1VUMwZTZUVHV4cmIwU3hyNDhFZnBaVVhnakt0UWlLRmhrOS91cEFGaGNFNjRCWUgwK3R0YURWWTdkYUE1S1RjRHJWWTZjL3lhQVFNR1Z0YWNHUzMxdmlPSkw2clpjalFzYmRjV3lBZFlOZUNOa0Y4UDhkM0RIQjVUcGszZ0Q4RFBEdncwT3hrbHJ4eFk0SG80NGR5LzBqRmhqWlFuWkt5RXk4bGdRVHNPV2ljQjk2MWRENTBwVWtSVW83MXBjdmUrTjFnRC85ano4akZJUWRPbzhBZm9LSjRxV3RydHJpMGtLMTU4dXB1dlpjbUM5S2k1Z0lXY3VkbUZ5SVRxWFpWeTFkeWlxbGJGZzdia1BLaGxiLzNqdVVWc09PT3E0dHd2L2VqTWN2OTdlSWwxeFBIbkRiNEw4VDNMc0lWc3lRZVE3d3hlQnV5K0kxelFyYlZ1dDBEOFZPZ1ZoZ0c2anNUNS9IaEFIbVJsd0dUTUNXajViN2NCMGxYcFNCYU4wREw5TG1YYmVhUUJLeG55RlVMeDB5OXdOK2tpTG1KV3Z0eHRQdVF1MGlGTEhTeTY1ZSt5eG10U1hXWjRFZGs5UHZQVUJsZ2FWeGZYUUZyRTdTS1N3dkpWNDYvZnRjL0U2eXYxVzl3NVBuMVpTVThDUmlsOEQvQUxpM0FyOC8rNmxmT2w0SXZBRDRwM2xYSjlaSU9ZZmVadFVCVEJVNXlCM0JaSUdaRzNFNU1RRmJBaXIzWVhJM3VkajdJMWZna0VHWkVteldQY25PbUM5UEovNEZoS2xTZm1FaFIzWjYzQTU4RC9DUXR1V2x4VXRiWFNKYyt5NEkxQzVoa2ZrbDlXTXRiRExseHFIdkZ6QTlkaXhWNnZES2plZXF6RkxmYmx4MUE5dFhCa21teXRtTDJ3ZnErK3pRVGlZUk9pSjJPL2dmQnZjNDRHOVArRHNzQzU0d3FEa0tXRjh5UnhLd3l2M2FzY0JRaVJ5WUczRnBNUUZiSHRKTkoyNG1yMjY2cWtFcmJqcEtDMnhTMVEwSDhQUEEyeGR5U0tmREdxRzZ4dVBvdENMYWJhakZTNnluWkdsRjhicm1vbmo1TVBYR2RlQzZ5ODlyQVR1TThiRkRGei9YdHkydlB1RUExWU92M0lncHprbE00RkMvdFF5WjBBUFdaV2JoODhUcFA1U3c5bVZEMXFkUVJBeUFCNEwvUVVMNXFidW1uUDlsNWJjSlJYNlZSZDZLT1JZWmlhNmJWaThEbWpkOUh0VGM2MFkwemhZVHNPVWlKWERFN1RUN3NyYkFmTDd4dEhqVldXaE44VG9BOTd5Rkh0TDgrUUxnU3lrR0tXdXJxeVZlNGk0VUMwdkU2bW9VcnF0cTMzV2ZyYkZrZlpFdE1NbENiTVc5a21qSWQ5TXV4UGhsVTZOYVdXR0Z1OWhWTG1QS1NVdlBvOFMxc2dxYnlTU04wN2hHMmREemNjRFhBZDh3MDYrd2ZOeEZtQ1B0YThyZHZWWVlYVXRNNG8xU25iNG83dHR5SThhQW0xbGpaNFFKMkpMaHMzRHA2Z3YxT0paYXZQcEtSblhjaDM4Umw2SHlLT0QvSlZTWGlMdGE0aVVDcHNWTDNJUWlXUFZ5alN4aXU4QnVsY1NoeDRPbFFjeGs2MHUrUXhJTTNiQkZuMVBoMmxLTllqM2VMeFZ0cHB1MDAzRnQwaFd3dnJGb0xWS0Nod2YvTmVEK0JQaWxDVzlZVmp6d2E4Q1hncnVjZDNjNmcweElxeWZlVzhyanNZNGFEd1kycUhtWk1BRTdZM3pWcTNPcWNhUEhoZWp5VGRhcWQ5aXFPbytzZjR0UWdtZUk3QkRFNjMyNjR0V0tlMG1Xb1JhdnE0VFpkMlVHM2lzT3J2aEt3RndVQ0Y4S3hBM1g3ellzcXROWFBYSWRBNU1kNmJmV01URzZ3eWFTaU1YZmU1c2dxbnNFMStHK0wyTnpXc0Rxa2xhMTlWQmNGN0s5QWY3YndiMEllT3RNdjhweThTZUVHYW9mblhlMTNMWkZza3pEbXlIM21vekxxeTB3K1Z5enZNNFlFN0RsUWsrZG91c2ZiaWloU202UFNyeVM5ZVhLN0VOa2ZSM2NrSk0zbmt4d2M4MFE5eEx4a3FubHRYamRGWmNyd0YwK2lwbURhK0k2OU4zTVEyMTVGWVYrUmJoOE9lWnJZc01tUFhndFpKUy9lKzN1MmlCWFN1OWtSZnFHKzFBSmF2eVhuY1FHNHVlS0JaaSszb1BCLzJkd1Q0NGZPaVN1QTg4bENaaUlUQ3NXMWhkYjduZzFsTlcyMXZqTmJJcVZNOFFFYkhsdzhVL1JXNnhjaVBYTjFacXNNbVZNVVRaVy9CV2hkenBFSGs2WTA2c1I5MHFXbDRNalg3b09XK0wxSGhlRVM0VHNLaUVXSmdrY3lmSnlYYmRoRWk5WGl0Yk00aVZmM0VXTHpPZmZPMWxrdFRWR2FHZ2xpV1JMTEM3MTNUcXhMNS9QVFMxY3Jhb3N4WFVDSWM3NFA0SGZtWFl3UzhoemdXOER0OWtXcjhJSzgrVjlWSXVZemtSTUhZdktoV2lXMkJsaUFuYUdWREdSU2VuenJiRkJyZGhYcythaGJQL1NLUi9QYWJGQm1CYmxqbjd4T2lhSWx4NmdMRWtiRXZPNkF0d1Z4ZXM5YXZzcUtvM2VOMkplVVJpVGNGWC8zN3Y4blU0UzBOY2RGbm1zM1YzYUlyc1Jyd1BKZnV3VUdIWlZFb2w4cG5KVDFvUGE2d2swUWNYRExvSi9DcmcvaWlkeVNMd2FlQkdodkZpazF3S2pNV2ljMHRzaFl5cDF4MUN5T0UyOHpoZ1RzTE1uTldDVjlWVlgwcTdIQmpYZGg3UjcyVndIOXdjTE82VDU4aW5BWjNWM3QxeUhOMmk0RGwyd3NPNXk4SjRvWHU5eElmWjF4V1hyYXk5YVgzWE1TejVmL2wreXRsd3BxUFYzbTBUZDhFbDhMSzBwZjhmaktLSzZDbjU2ckYyYTZuTUxTNzYxK083MVVueW54d0NmQi96WWxJTlpOZzZBWDZVUU1PaGFZWDJEeDV2M2wyKzQ1eDNHV1dNQ3RqeTBlc29iYXBFYWJhM1lWNThGbHU2eEZ6UE1RYW9YQ0JNeE1zWDZRbzMzY2pHTDBNZkVqQmpudXVLekZYWWx1aEN2K2pqdUN5VmVUcVhLUjNId3JoU0hteFd1K25XdTU3RTBqc2MrTkpveVprdUVUS3pCdmpuSXRJV1Y0cW1VU3kxb0xWZWlmeEs0WDJWNENSMHZCTjRGN3U1NVY4dVYyRXptY0RtcFF6cU5oWHZlbFovbHNEalltV0VDdGh4b2Q1TEVRWm9wOUw3c0tmWk52dGVKYWJ5UVlXWWZmaGJ3RWQzZFJleUxzdEtHbElDcXN3NVQ4a2EwdkNScDQzcDh2WWhmaWllSlNMaFNIUHJFcTZDdk1mT1ZRRFNPeStsMS9CeW5ZbHFTOGFqVDkzMThVeEh6RVV2ZWx4MmR1c05UcElqSDc1RmNpUjlHK0EyK2Y5TEJMaUYvQ2J3YytNZmw3a0xZcWU0djM3N0hlaE9rWFBtNUpsNW5nQW5ZMmVPZ2pIL1JIcS9TV3VyR3FPNFpBcmlEZ2JvUEx3RmZEbXpNYm4zcHRIbEppeGNSSzhaOCtUem1TNHIySGhMaVhrZXVIT1BWRWkvZ1JQR3VtZDdqeTRhd0VEUFhQWFpKSWlGdXk0dmx0NWU0alc2a215TG11eDBmK1RnOCtLOEE5eE1NcTNibU5lQlBLUVNzSSt4VUE1c3JGMzBublI1VmxZUHlQalB4T2lQV3ByL0VPQTE4SlRLdUhYQXY1b2hpc25qVk54YXl2aFA0bzRVYzFYejVaT0FmNVljZDhYSmQ2eXZGdnR5RUFjc3V1ZzJkR2t1RktoSEZoTUhBTGxwQXArRXVhbngyL2Y4bFdlVW9mbGZKVEJUTFUrSisxd2p1MGRaZ2JWMWxSRmZYN3ozbUJ3UC9mTjRIdXdDZW56ZTExYXZkaVBVY2JDbldyTlliTGx1cTYzS1ArWHl2R21lSVdXQkxncmJBZks0YWtIckx2dXdoTmdjdTE2SW9uLzNud0xzWGVDenpZQnQ0RXMyMGRHbFlKWW1oY0I4U0czRmZXbUN5U0tiaExqblpveGlrN0xySkVFbTRUdXRZVzhqL2ExbGxoWTlSYmFPc2k4cjZrbXVuTmRhcFRnTFNDUjNKQ25zaXVHY3pyRHFKZnd6Y1NTaFdURGNHVnNUQ2ZGbGVxbGlqckM5NWo4WEJsZ096d002ZTVKZFhzWWc2Nks1VGVsdkpHMzN4THdmd0d3czhtSG54Q2NBankxMjE5WFZNMS9wS0FrYXd0T29TVVdKOVNFVjZQY3R5eTIxNEp1S2w2YkhHWkR6YWtWaWhQbGhqNlJ6NFlHRW1WNm9TZEcyRjZVb2pmVk94ZUFpL3hXTVdjY0J6NU4zQUgzWjNheEdibG8zWXZOY2tEbFpaWUdhTm5RRW1ZRXVBdWhrNnN6Q1QzWWQ5NHRYS1BFdzMwejY0UDF2a3djeUJkZUF6Z0hQdHhJbmtScU5iTWlwTmplSnlVVjR0WG5wK3I2SjZleXZtZFZxdXdwUFM0MWJVSW5ZakxvVXJ0WElwNmxKWnU4UmhBNVR6bkltSUZlSUZzQTMrc3hkeHNIUGtpTTRjWi9VOWtnVE0wWFRWUzNMSGhucGR5OU5oNG5WR21JQ2RMZW5pRjVkRXZEbnFLZWFuaVZkdi9Pc1Z3T3NXZFRSejRuNEVBVk1VeVF2SytxcW5Ta25WNW4zWDJpaW1SbkU1VGI3WmFDK0RjTlgwaVJoQnlQUzhaMmtzbk1zeHdTVG1QcnRTMC9tZ3Y0NWlPaWVQSi93MlErS3ZDSjA0K3VOZ0tXbXFGUWVqbS9DU3JEQm5jYkF6eHdUc0RLaDZjTWlOVVBuWVV5MUUydGxqaGZ1d0wvNzFjdUJ0Q3ppbWVmTFBnTHZsaDNXajNZcDlkU3d3U3BkaEoybkI1OEs4OVZpcXBSUXZZWUpMTVEzbTFwYVl6MlBpV3VkbHoxVUZpK21LV09JeThPbW5lblR6NSsrQjErYUgraDZwNDJBcFp1aHlwMUZiWlpMTWtWejE1a0k4ZTB6QXpoN3RQblJVQTA5OUtWeDlRZmUrZ2FqOEgwS0xOQlMyZ1NmUVNkNm9MWTVXOG9hMndNVHFxQnZwbEczb0pqVFV5MDdMRWxOTFlabTY3bHhvaGFqN3JvRDFaU1Rpd2Y4endxd0FRK0gxd0N1N3V5ZkZ3ZXJ5YldsT01Lb09vNk1vNmd1a3pxbXhJRXpBenBia1BuUjBDdmhxSzZ0M0VDbzlBNWNCdHcvdUx4ZHhGSFBrSHdFUHlROExLNE1ZODZFN1dhV2t6MnNMVEZ4a1JYRmVweHBvdDJRSkd6ZEordjYrbkF2dEJtR201aVR3cmhUNFhkZWVWNnh2TWt3UG9hanloeTdrc09iREVmQ1NjbGNyZnRWSzV0Q3haMTJGWTUyY2NHVlcyQmxqQW5iRytQYk5KRGRLN1VLY3RSU1FnMUQwYjJnSkhQOEV1SzF0ZldsTFExdGZMUXRzeitVa2hjTEM4Qk15N1lZa1hpMVhZdHluUmY2UUlOeTZRa2s2VHo2T2hhTmhnYm11a0FGd2QvQWZ0WkFqbkI4dklua2hKc1hCT2lMbUd4MUhUKzkwUlNaZVo0QUoyTmxSdXgwSzhmSjVMTStHNjdmQVdtTlNFcTluV0RYc0xnSWZVKzdTalhUdElxdmpYNFVMMFZmdU1aVzAwYXF3TVNqeEVseFg2Sk1yVWNYRTlHQm5mYTdFT3UySVBMR01GbzFFRG9CUEpQaldoc0pmQWdkdDhkSkwwWEdrWVlGUmRSeVZDOUU0STB6QUZrenRjbER1dzNRaitiS0dYUjBINjh5NjNKZkE4ZUxUUDV5NTh2N0FvL0xEVnB4SHU4aTBnSWtMVVRmT2V1TEhaSDM1ZmhmWmtPbXp3dnFTWGNTbEtPZG9VaUxIY2ZWL2VBendEMDcvbU9iRzI0RFg1SWVUckxCVXdpMG1jdFN1ZkYzMXhvRlY1RGhyVE1ET2h1S0NyeTB3eXB1bHZubjY0bC9OQkk0aDhiR0U4aENLVnZKR1VYbWUzQ2pyeHJrWTY2V3RMOWNRcmlGYVgwTGxTb1NHRmVaS2Q2c1dMVzE5dGR5SVRhSGZvV01wTHpXSE5POEZSNW1FVWR4N1B0OTdIZkh5YW5GbHg5R0ViTUdZZ0owdGhlWGwydjc0am9pcDF6bTFMajRYY0grMWtFT1lINTlFa1gxWXVLOThOLzVWVzJCYXVIU2pYRnRlWTdPK09pS21yRENaZnVVR1FjZ0wwZmU1SWtseHZsRFYrR200RVQzNGoxM2M0ZDB5bnVCR1ZDU3g4ZjBkeHlJZTVzcml2MFhpVk9WR05JdHNnWmlBblIzcDR0ZnVDTXFicENWaWtxVTRNWDMrbmNDYkYzTWNjK0c5Z0EvS0QvdGlPN1ZGVVl0WEs1NHp1dGpYRkpJclVWdXRMcGFiY2wwcmJMK0tGY3A1MHk3RSt2ZmdZY0R0aXpxaU9mQTM3ZDJkR0JpTnRIb29ab2RJSFUxeC9adGduUjBtWU10QkhValdwYVJtY1IzV244UGZBKzlhMUxlZkE0OEM3bG51cXQySFNjQjhPd2FtcllnaW5oTmRhV251TEVaa2ZWWG9ZOU1DcEJNNld1N0VkTTU4TlJhc1QvamZEM2pvWW81cExyd1plSGYvL2FMdnZ6NHJMRDMyRkZVNHpJVjRocGlBblNHNjk2WXNzYjZDdnEzVStkNE14RGNRMHVpSHdzT0JuYTZvaVB2UVU0NXZrdGlXRnF4V01rTEtxUE4wWmxVZWxmWGx1bFpTY2lQU3JWNlNSRXpjaHk2ZnQvcmNOUVgvTnZBZmVNckhORS9lQWJ3bFAyd0pUOU45NzNvcTM4UkZEMlkyemdBVHNMT2gweE9NWWxaWVlKUTNrOTdYbDRHWWVDT2hSUm9DV3dTWFZLUzJrbW9YWWtyaThLVVZWcmpBWEt5MjRlalBwaHNwS1I3bWxRWHJWT1Y2cDBUTVJ5RlQ1ekxGd09pdmkrZ0JIc0Z3V3U2M1VRaVlVRnRnZmNrY2ZaM0hkQSthRy9Gc01BRTdRNlQzcGtSSVJ2aTNZbURUU2tjVlFqYWtBcjYzQXgvUzNUMUp2QW9yUW0vN01tVmVzdkVrdlR3MXZtT3l2b1JXTW9kSzZFZ1dyTzg1ZDVRV1dFdkVDajRNT0hlYUJ6UkhydEViRTI1bEl2YTVFdE9rbHI2LzgyaEN0a0JNd0JaSTY0TDMxYzNqeXh1bzArdWpYN3dTQnhUalhwYWVPNEFIbHJ0U1EreTZJbGE0RWFsaVhxNk00U1QzSWVPTmUvVlJ1eEZscmM5UjUveFJ4Y0RvRGoxSTUvQ0RnRXNMTzV4YjV6WGx3M1RQZURvV1dGOEhjdDJYOTZqenRHc2lHb3ZCQk93TTBmRXZ5cHVnRTFCMnBkdWlOL3NRY05mQnZYWkJ4ekFQSGtJNHlBb2QvMnBaWURJVzdGQXZYb25YQ3JvUEJhODJkQ0tNaUxwVXJkY2RnVTc4aTNieVMrSVNuWTdIVXZNcU9qOSt5M1ZZZHlEckFjelQ3ajhnMzl2RzZXSUNkbllrNjBsNmNiNTlJeFdXbVovQkF0dWo2ZTlmV2g1Ty8vZ3YydGwwV3NRNkRhL3JXZy82YzBmcFBoUW1ISzhJV2VvSStQSzhOY1dML0J0MFB0ZURWN0hMcGVjTndJM0picjlDMEZ6REMxTEZxZlY5Mi9vODQ1UXhBVHNiT2hlOEVxOWVFWE9UeFN2dDIyTlljNEI5YU41c1ppRlNXbUF0TjJLcjRUMzIwWUp6RGV0aFZYRHhIUGoramtEUkdYRFRremdFRDgzWTVkSVNCYXltdm4rMGU3RFhoUzl1eDJwdExCZ1RzRE5FK2M2VEc1SFNSVkZVNTZoODliM3VpM2NTMHZLR2dBUHUzOTA5eVFLcjNZZ3BwaU9OcjFmV3d5cUxGMnBRTTFVOERKV1ZxQmZsZ3EwSE1qZlA0d01XY1JSejRrMFVtYm10QktnK2QySWRmMDdXVi9VdkxBNjJZRXpBbG9OMEk2bDRXSjNVMFVuaWNEMUNOcVFNeFBzQXQ1Vzc2Z1NPVmd5c3NNUjhucUJTdXc2UHhmclFuejFtOTZIUUV1M1d1ZlJkQVd1ZDQxWU1NWDMyZXhObWFoNENWd25qd1hwb2lWaWZtQlhXbDJ1TG1iRUFUTURPQ0YvZEFNb1YwUkV1MTcyNUp2YjAzbmo2WDM5dXZCOXdvYnM3eFZnbzR6QzFDMUZuRzByYS9KRTAxbzI0MnFxUnprTjBwWXF3MXhadE9xOHFmbGhVN2UrelpPOEczSHNoaDNMckhCR21HS3FvNzZWSmxsalJ1WFJUN2tQajlERUJPM3RTL011VnJvbE80Smd5QnRaTXk0ZGhKWERjbDBMQTZoaEw0VVowVTBTTW5EV1gzSWVyWUhGTlE1MkhWbFpuSVY2K2Eza2RxL2QxUk94dXdMMFdkU0MzaUtkL2Zyd0puY1NPa0RYaVhpWmlaNFFKMk9McDY3VWxJZk4wS3RQWHlSdXR6MGlQSjdoSmxvNzNJZFRvVWRSWmlFbkFmTGZSTFlRTE5XYkowN0hBVmhwMVBvNlZpQlZDNWh2bmswWWRSUDM0SW5DUFJSM0VISGpuNUtmN1JLdDJLM1pjaHg1TDVEZ0xUTURPRU8wNnJKWTZZYU1UUUtZVXNlTEdHWktBM1pQa0tweVVnVmd2a29EUUVUR1ZwTERxQ1J4Q2NRNWMxeTNic3Nia0hOZHA5SjN6dVU2SWd3MkZ0N2QzOTkySExTRXIwdWY3dkNER1lqQUJPeU5jS1Q3cFpuSFp0OTY2Y2FhS0Z3eEh3Qnk5alY4ZHUrcTR2Y1JhY0JUdXhUcG1VM3ptS3JzVEt4ZGlzMk5RdVdpTHpnQTluUXdQZmtnQ1Z0MGJmZUpUZHhicllTeDFCM09XenpST0FST3dCZEhxcWZtR2lIazZSWDM3WElqVW55ZlB2ZnRVam1EKzdOQnhQK2xHc3VOQ3BMSVlYSFlycHJnWFVhZ3FGK0xLMGJJK1hYVk9YWFUrZmIvcnNQNWRDdDdybEk3aE5KZ3dQbktxQmVaN09wRWV5MEk4SzB6QXpoZ0pIcnZKTjB4Zk5tS0hYWVl6Qm15SGtBVFFvQzYrVzR2WHNZaVhxeXdJNWZaS244VUtDNW1nTWhIVGVmVmQ2NnR2bVNoaWQ2Y1R4MXhhN21ydmJucERhQXRXYnprcEU3SEZZd0oyUm5qVmUxUHJpVGRRWmNVMXJiRHJOS3NOTENVN2RNYUExYlRpTlhwK3E4TE5wYTB1dCtJdVEwWFQ5ZWR5d290MEJuU1pxYW14TC8zNEhzRG1hWDM3T1JNN2QzMnVQLzFjcjJnMTdsWHRUVW1mWjBrZHA0OEoyT0xwaUZERHN1cjArbWpjTkhSdk92WVlqb0J0MHhTd09sYlRjU0ZXcmkrOXY2K3hYWG1Vb0dzWHE2NVNyNmVmMFpiWDFMRmdkMmM0QWlhbDkzdEk5NWViNGcxUnJ6SDM0UmxpQW5iMlRPcjUxVGZVcFBnWE1Dd0xiSnRpT282K0xNUmF4RkpEMjdPc2ZQeHJDb1VyMFRVNkNkWDUxUzdINWptOXpIQmNpQWVFVGw1RnAwTllXVmxOZDJLUEY4VllJQ1pnUzBBcm1hTmVldHlISFhZWmpvQnQwcGtRc1pYQTBadkVRVU80Nkg2ZUNWa1hQU2FzdHpQZ1NnRkw3NjBlYzRIbWREaExTU1Znazd3Wk0zbERYUC83alFWZ0FuWkd1Szdyb2I3d1c1UGtUWHM4S0JmaUJpRU9WbEUzbHNrMTZDWllYYlZGWWZHdkxzb3liVmxlblk2Q3ovc214c0hPTVN3Qm01RGtWSWhRdzdYZld2VDdqQVZqQW5iMmRJSy9zclNDeGVwRnpadm1rR0NhRElHdHNPcHJHRHZaY2kxcndaWFBhZmRZd1lvTFdwRkI2SmdjWTZ5V1BoRkw1L01DdzJsSVpCcURDZlM1RVp2aVpXN0RzMlVvMTkyb3VZa2djTy9yanhoT1MzMXU4dE10ZDJLbmdkWHhuT3A5cmM5YWFTb1JyNFdwN2hqNHhtdWE1M2lINFZoZ2NrQVZVejBkMDd3aERZK0tzUUJNd0phSE9xdHBtdHVpeVpBRXJDZndQeWtPMW1wUWl5bnZwWkcySkk0a1dMN2VWMXRmTGRlc0x5MndTUjBFRC9paE5DUVNRRzNSRUtDWnZDR054OGFDR01wMVo4eklnQVdzMVVqV0l0YUoyN2p1YzFxOExJbWpUY3VkT0cwQTg4UnpPWlFzUk1uK21jQ0p4TWlzcnJQRkJHeGtERmpBYXZwY2lOcmFTaTVFUjBmOGpBb1JkaTM2T2xIRGRjV3J6a0xzUGNjRGR5SFc5SG8vR2w0UzR3d3hBUnNaMHZvTWdSa2F2YVlsNXNyRzExY05zOUZsa25VcTU3Tnd4ZEsyd0tEN2ZtQTRGdGdrRjZJeFBFekFqR1dqemlLc1hWYzZobFB2QTRLUW1aaE5KQW0rdUJBYnJ0aEo0dFhCVEJIakxEQUJNNWFWVHJMQWhFWjIwdnVNQmxXeVMydDgyTXppWlJobmhRbVlzY3pjVEtOcFJWUzdOT00xdmlIK0xldFdQMjVsTmhyR1dURVUxN1d4dXR4VVkrbXJRUHNLdDdpOVl1NkMyUGM5Wi9Va2phWEhCTXhZZGlaWlUwVjJtSWhXWXh6ZEt0UEpvQ09mcTVOaWdtWXNGU1pneGpMVGFtT2JvdVY3QnB5NjRDWmZaYmVYbkl2T3JNSytmUTZCWU1IMmZKWmhMQTBtWUdlRXRoYnF4dGMzR3Vtei9iWm5RcWZhZ1MvUHlWcDhyQnZsZFdEZDVSUndSMWx1YXVWUXJsU1oxVnZPMXpycTNQbFM2TXlDelV5OFI3V3IraWF0V3VNV01BRmJISFZaR2lBM01MWGxRTHRjelVyY0g1Vmc2L09ScklqWUVLODdXUGVoTWQ1d1VjQjhLSStFNzU4U1pKV1FhNjQ0WjRUenRJRTZoMDUxQ2lpdnQybVcyUmlaZEErMnZBQkFOL2JLNmw1M0M4RUU3SlJwM1BDNng5YnJ5cW1zakZhRFBsWmF4MXJQaGl1TjcwWmNiOGJ0VGNJNFZlZEQ0Zkc2TU8zS29ScFRzYmFLY3dac1Z1ZHluY2JzdzNSL2w3SFNPVllSOVo1N1ZIY1FPcDFQdWY5WDFRTncycGlBblJKOVZrVERWVlBFSnFwMXk2WFQrdnl4MEdkNXlYbFlqOHNHdVJIZWRMRGx3d1RQTXBaSnJMTGtQbHpWakxyS3VsOXpXYWkyZ2UxNDdqYkpnaVlpSmtMVzV4VVkzZlUzeGZKM1BmZm9XdlY4c3N6MFI1dVFuUTRtWUhPbWNSUElPb21WeS9FSGlkbUlDMGRjTzdvWDdPajJoRHV1blJFUXZYNXB1eVZjNjRTR2Rpc3UydzUyUEJ3NnVLRmlZakl0MnJHekdGaXk1c25YM0NiaDNHMTcySW5uY0p0OFhqY3B6M216RThYNHJqOVoxNWEvM2k3dVU5VlpXbmZobWx1UEY1cW5XOVhOaEd6T21JRE5pU25DbFJvUTE3VWl4UFcxcVh2Q3J1dlNhVFVnTkI0UG5WWURzdTd5ZVpKR2RvZlE4QjRBUjFHazVKemRBSTZjcXUrM3FoWVlsVXVhSEMvY2pxSjEzb2VwMlhiaWtrUXNucys2TXpWR0YzYnJucW83VU9tZVZQZXAzTE9IaE90T2lpTEx4ZVpjT3daclFqWW5UTUJ1a1duQ1JYYmRKSXVMZUJORTk4MldpNDJHejczZkZKZGdza3VuL3I5am9XTjl4Zk9oeGVzY29lR1FYdTVhUEgvYndBMFhSVTJlWDlXR1FxNVBpZEg0ZlAzSnVUb1BYQ1JNckN4Q0p0ZGozN1UzSm1heC9PdDQ2eWJsZlp1dU42YytKMXBranZhOGFtQkNkc3VZZ04wa3N3cVhXblJEdkJIRks3bHhDTXUyaTdFSkpXWjFJekt4Sit3WlRyVnQ1VitSUnFScGZaRWJEaEd2ODVUaUpXNnhnN2ovaGc4V1dLZGkvUXFTWWpMeG1xM1A1M2xLRVR0UEZqRjkvVTEwWXcvbG1wc3czVkRmdFZlY0wzVi95bjE3R01WTE1sL2wvVGZpK29qK09kWUVFN0tieEFUc0pwZ1E3TzBJVit6NWF1SGE5R0haSXJqQXpqazQ1K0c4aSs0Y1Y3cHpwTWMzVGNRYzhRMTNBTHVuZVFMbWdBY3VsN3RxRWRPTmlEUzIyd1FyNFFhNXpVd3hIWUo0U2Z4TExEQko3RmpKaGtFU09GUWloNDRsYnBJN0JDSmk1d25uV0dKaWN1MjFNaExUZlhCN1hKYWRlMUEwZXRNNlR2bzhhYmYxT1FjSDBmSzZFYSt6NUtKMWNPakRJczhmdWNtVGhTTHI2TzVkeVd2MVpqQUJPd0hURWpTazl4VUZTK0pkMG9QZGRObG5yaE1RenZ2UTg3MmcxdEtJN0JBYWtyb24zT3ZLZVNUd1BMTHZZbGs1QnU3ZTNkMk1QYUFhRU9udHh0ZHI4ZG9uV2w5VThTOW9GcTVkRmRKMTZxbzRHUG5jYVJHN0VEdFNmVlpZMC9yL1lVS25hWm12T1U4NG9BZjB2NlR2MnBOemRDN2Vtd2MrWG1meHV0SWhnZzBQQnk2c2RZY3FDWm5QQ1ViSnhhMi9wbGxqczJNQ05pT1RyQzdmY0JVcThaSjRWb3AzeGVENWppOGJqa3NPTHZsdVBLSWxZTDA5NGR1QVI1ekdDVGc5WEVOY3hPMlZHZ1hDZVRoV3JwbzF0WCtmNEQ2OEVaZGozKyt1V1VXMEZTYlhqOFJYeGJMZEpsZ1dPcWxqbXp6WXVUVW1VVDdjUFhReHh6RTMxQVV4eWZMdkNCanhPb3RDSk8vWE1kbzlCL3Mrdk83QTUrdnkwR1hQd1JxNUk5Wks5REJyYkVaTXdHYkFkNFdpdU5pbG9WV2lwUU8rV3lqaDh2bG1rQnNpdVcraWVGMm1GREh0eXBuWUUzYkwzUUdlaGNJQ1UrSlYzT0RLaXRnaVcxN0oraUpuZzYxeTdLdkEwUm1EcUJ0b2FhUjFQTGF3d1B6MGJOaEI0Y3FPMHpUTHYzWmQrL2hHZlIxdUVZelFiUTk3d0g1RHlBNWRkQ3VTTFRLZDZORzB4a3pFK2pFQm04Q3NWcGVMd2lLaTVVcmgybTRJbDRpWEZyQUxCT0dTUlFmVXhRcVRudkFZTThKYVBXRlBkaFBxMTRrRklYR0pGUGNpeCtsYmMxdXRMTDY2ZnVtT3JTdkcxNm50bVdKZ0l5QmRkOHJ5RjJHWDYwclgySlJyTUlrLzRWcmNKUWpZWGlWazRpVTRpSzdGbE9nUjNaSGlkZWhZWStaUzdNY0VySWNKNHRWbmRVbU1TMXlFclI2dGlGWXRZT2ZJZ3FYWE9xMjU3Z25MWktTREZ6TFZHOVlOb3hZd1RaM1lJYjFpbmUzVkRKQ3ZNTFhub0hhVjFkYllwbm84TVF0eEpGWS94RmdXUVRDMDVWOG5Ya0QzR3BUN2U1Y3NZR2s3Q3RrZVdjajJYZWp3SGhLc01qZkZHak9YWWc4bVlBMm11UXg5Tlo2TE9LYUwzSHV0QmVza3kzbEtvWlBlOEN5RG1zZUNITmRhWTc5MjhXeGg0alVyczRpWVRqcmFxUGFQMGVyWDFKMG5PUWY2ZXRLV2w0NGY3aEx1MTkwWmxsU3l5d1ZyYkowb1pMSGRPVkluMkZ5S1V6QUJxK2dScjFUM3pNV3FFT1RCeUp2YVJlaGltaTJsZXpCdHU1REpsS3d3bDVNNXRHREpPc1cvWExhK21pSTJncDZ3b0k5anJkb3ZsdThSNFRlb2hVdjNrdTBtYjFNMzFMV1FTUmJ0cEtLK283aldHcFkvNUd0T1lxaFF4c3EwOVNYMUpPV2UzeVVrY2V6NnNIMDlMcm9qdXVWeU52SWVLaXpnc2x2UnhXdGNYSXJhZFdraXBqQUJVelRFS3hYcFZEZTFKR2pVOWZoU21xMExtVnc2dHBYR2VQblN1cEwzYlZNS2xvNC9pSGhKajNnMERZaEdOU2J4WWFKb09GVUNSMHU0V3VKbE4zcWdkb25MdWlOa3ZpdHNkZnhNM2p5NjZ4QVZJMHlLa2ZmWDF2OFdvZk82VHhDamN3U1g0UzZ3cXpxcjE4bGlWeFFwY1BtKzNwZno3bkk4N0VpcHExem5KbUlLRTdDSTc5N1VxY0YwRk5OM2RPcnhFUzJzS0ZJeWp1dUNXa1RRQ3ZHaUsxaDY0TEt1bFRoeEVQTllHcElKSWdiNXVDVlcwZXN1dEJ0N01oTmM1RnJNK2haNXc5aXV1YWJscjhTckZqQ2QrQ0plRXkxa1lvWHBlMTNFUzF0aG5VbzdQaVI3cEhuRzRwYzdKc2VGd1VRTU1BRUQrc1VMVlhVYWxWM29LY2FGbkk5V2w0aVZaQkFXQWtaWHZDYUtGdDM0dzZqRlMrZ1JNYm1QdFZpdDBXTjFWVzRmbzZTK1hsclhmdDlqMlJqck5UZkpmYTBGckU2elB5U0lqclFMZTVUSlc3V1haWnNjZnRCV21JUXBwUE9zQlZSaXZacVZGN0dWRjdBZThVckpHc3A5SjhWMjVZSThUMWxGUTZmQWF4RnJKV1hvc1YydGVaaW14UjlHMVlEVVRMREVsRWZIM0lWem9NK3QyRnJMZzFGZmUweHdYOU1Wc0NQQy9YdURVc2owNFBCaWNiRWQ4ZXJlOTVVVjVoc2RWYVd1SW1JV0UyUEZCYXd2WVFNbFh1UTRsRlRQa0lRTWJYRmRvaTFnRWdkckRRNmRSYmkwUzBlKzMyaDd3aHFYYjl3K2w2SThubmJqcnVTTjNXRGF0ZEozZnVYQmFLODFtTnBwMGdJbXJyeDE0dnhmNVB1NGRpdDJ4dFg1ZnE5TGNmOXJLMHg5UHkxaThsMVdXc1JXVnNENkVqYW94TXZuUUsyNERGdkNkVWx0WDNRNURsYlhOS3d2WEprUWI1cTFOWG8zVGg4ekN0bWtHM2NsenRNdDBudU9WdVU2ZzRraUJ0bGwzUkV5RjhwS2FZdnNrTzdnY09rSTYzbi9kRXA5a2ZucEd4WVlLaXZTS2ZHYTYwa1lHQ3NyWUJVcDV0VVNMM0xGZUYwdFEwVHJNcFVGNXJ1V1YxME9LbDJ3ZnJKb3JheHcxZFRIN2NzYmR5WFB5V213cXRlWFVIV1lXdTVyV1VUSXZBOWlzdTVDMW1CbndscTFGSlBXcW1YZGx4YVlnMVI4dWZVZHZmcHlNbFpzSmEyd2xSU3dSdHhMajhOSUphSG9pcGNJMVdYZ3NndkZkMnNCYTRsWFBkTnlMVng5SlhvNmJwd0Q0QjNBdTRIM0FHK0pqOTlKVG9GYWtTdDRwUnRhNCtaWkk3dFQ3Z0c4RjNBdndrMThlOXkzUG5zY05vbVp6eGFaRnFRK01Tc0VUSGxpVXVmVnEzL21zdlZGdFI5V1dNUldUc0FtaUpjV0xxbGh1QlBGSzFsZERpNUgwWkoxcWlMdnluVDVsRzJFY2huNnNwYzFrM0M5RHR3ZkF5OEcvaFo0RmZCNjRNNTVueHpEV0dIZUczZy80UDdBUTRCSGdQdkh3QjM5YmtYWnAvVmtUWFZPMXh1TEZxd2tYTDRiUWdDS2pGcFBIbHl0NjN6V2x1SktpZGhLQ1ZoUHhtR0tlMEdhY0RKTlc2L2NoaUpldHhHRTZ6YWlHekVLbk1TOStwSTFKcWJEcXpYN3dLdkJQUjk0THZBM0JBdnJjUDZueERDTXlOdmk4cWZ4OFE1aGN0aEhnSHM4OEZqZ2Z1RFh5bnUyTm9oa0xSM1VlcEZNUXhtaTAyb1ROSjZ1WU1rRXJiSkFXWVZtWlZncEFhdElGNWdyNnhxbW1aSlJNUzhsWHJjUjNJZGlnZFdWNDZmTnBOeWJWZmdlNEhuZ2ZnbDRQbkQxOUk3ZE1Jd3A3QUZ2aU12ekNCYmFKNEg3RE9DVHdXK0hsOVdDMHhmTGJvbFowU2JFbUZkVHdJZ1RZTVo0bS9mS0duUDVkZkxlbGJIQ1ZrYkFlcXl2MWxndlBVT3RDRmh5RzhibE5wK1RPUFJZTHoxSVVUNXo2bGl1dDREN2FlQkhDUzdDZXJTaVlSaG56OXVBWndFL0R6d00zSk9BVHdYdVVWcGRJaHFkTVdSUm9IcGozMUYwSklIRVUxWEQ5OTN5YVRLcnN4YXlsWXFIcllTQXRjUkxKMjFRMWphcnhVc3lEUzhEdDBYTFM2Zk50MkplazhvL3lmZmdQZUNlQ2Z3UThQTFRPbmpETU9iS0hzSE4rRVhBdzRFbmcvczhZTE8wZ21wM29tUVU5bGxvUUNGZTNwV2lkVXd1WG4xRW50RzVub1hCNVk4YVB5c2hZQlhKblBjTjF5RnFvTElMS2ZHU3BIR1pidFpoUGM2clZkdXNjNkVlQTc4RDdpbkEvMTdNTVJ1R2NRcThCUGdTNE9lQWJ3SDNqN3BKRlREajJFNkZweTFlUnk0SWw1NkZJVmxoMWVKWUFTdHM5QUxXNXpwRVpSNjZuREsvUXk0UGRkSG5KQTBSTFJFdTdUYXN4YXZsTnBUL3o2dkFmU2Z3VEN3cHd6REd3Qkh3RzhBTGdDOEQ5eDlJbVl1MU5ZWjYzTnJXOFM0Uk1LbUJlQU80NGVNRXJpNXNKMHZNWlRmalNya1NSeTlna1VtdXd6UmcyY1hwVUNqZGg1ZFFxZkwwaTVkTzJPajR0d0YrSGR6WEFDOWJ3QUViaHJGWXJnTC9EZmdqNEtuZ1BxSnJqZWtDd2JydHJhMG5iWDBsOFhKWndHb2hxK05qT2lOeTFJeGF3Qm9aUFRMWHpocmRXVlYxblVOZDAvQVN3UnFyeGFzdURkVTcyZVF1OEYzZ3ZwMHdNWkJoR09QbGhjRGpnRzhIOTBYZzE4TnVhWXY2MHVXaG03eVJ4SXNnVkllVVN4SXlzbnV4R1E4YnF4VTJhZ0dMRk5ZWGNmQWdLdmJsMUdTVXRHc2RYbkI1a0hKZFVYNVN6SXQzZ1BzcTRDY1hkYlNHWVp3NTd3QytBbmhwN0xpZWExdGpudHdHRnhZWVpkeXJKVjZIQkt2c1VJc1laWmJpNksydzBRcFlaWDBWNHpCOFpYMzVLbm1EN3BRbzlTRGxPdWJWRksvWGdmdEM0UGRPOFRnTncxaE9Eb0NuRWRMdm53YnVqbjZYNGpvOTRrVmJ2QTdpY3VqRE9sbHBMb3VZTGo0TUk3WENSaXRnRVcxOXlWaU1vbVFVM1hGZnJZa3BXeFhsKzRUTEFid2MzQmRqV1lhR3NlcjhESEFYOENQZzdsbUtpbzZKNFhMRmpaWUxVUXZYUG5EZzRNQ0g5YUZYbGxpVjBDSENPRXJXcHI5a2VEU3NyMDdxUEdxT0w3TDFwV2RXMXRPaEZBa2JyakYvai9vL3ZBcmNaMkhpWlJoRzRGZUJKeEpDQ25GWDBTN1I5UXpwWVQzbkNHR01ZcFozOFFyNTJMRjI1UmpVTktlWVdrYkhLQVVzMHJTK3lHbnpxZXFHVSs1RFgxMGtkQk0ySmc1U2ZoTzRmMG1vWDJnWWhpSDhOdkRsd05VSlEzdm9pdGcyV2NSMEo3dlZ1WjRVa3dlYWlXMkRablF1eEZibUlZMkJ5eTRMbUNSdjFJdStNUFRGMFJ2emVoZTRMd0grNEhRUDBUQ01nZkx6aENsYi9qdWhnWWxJR3dVNXNlT1kwT2FJRzFIaVhmcyt1QkIzQ1VWQlpObjNzTy9Dc0tBYlBtWWwwb2lGbmVvQkxwalJXMkMxOVVVZSt5WHV3OEtGR0pkenJqRkkyWlhpVlV4N2NBUjhJMkZBbzJFWVJoL1BBTDZ2YllVNXltbFg2amk5dEZPNnZTbzYycjZjdXFsWjVYNU1WdGhZQlV4ZkhOcjZXaWRhWDVRWGhUYlJ6eEdzTW0xNUZiNWxHdGJYajREN3djVWNtMkVZQStZWStHWkNZWU80cXhheG90QUNaWHNsQ1dmblhkbDJTVnUxUlp6eFBTYXNTU2QrbExHd1VRbFlLM25EaFVYR2Z4V1ZONmg2TmE3MEtldHBVU2FPOWZwemNOKzRnT016REdNYzdBSmZEYnkrUDZrampWZEZUYkpMYnB1azhJSnVyMUpWSU4rZWEyeDBqRXJBSXEzQTZCcmhCOTJrYTRFbE42SXZMd1F0WHEyNEZ3QjNnbnN5WWNKSnd6Q01XWGs1OEhXRXdGYWtsVEhkS1hsSDduanI5cXV3d01nelA4czBMcU4wSTQ1UndBVG5WZlVOVkhhUHVBZGQxNFc0NDdvbG9pYU85M29Hb2ZhWllSakdTZmw1NExrVHNoSnJLNHdjMnREaXRlTjZ4cW1PUGFWK05BSld1dys5Y2gvNmhqbE9DSGgyTGdUZnVBam9DWWErQXR4VEYzQnNobUdNa3h2QVV3aWVITFU3aVZobGhlbmFyYlU3Y2R1VmhjVTNDTEd3TlIrV1VRbVhNQm9CaTZRZWhzc1hnTGdQMC9ndmxDbXUvTXJhQko4NnI5Y0I4QzJFbW1lR1lSZzN5OHVBNzg0UE93a2RUaVdnMFdqRHlCbUl1djNhakVrY28zWWpqazNBaE9RKzFBa2NjZnlYam9GSkhjUmF2S2E2RG44WDNDOHYvTEFNd3hnalAwSW8vS3QyNlZoWUhRYlI3a1J0a1NYdlVXenZOdFQ3YXpmaUtCaWpnRFhkaDE0RlFuMzVnK3VMb0dWOXlZV1VmdmdiaEI3VDdtS1B5ekNNa2ZJVzRPbjVZU3N6c1RVK3JDTmVzWE8rNlZVYkZ0dEJWNGRaVHZONEZzVW9CTXgzZjNESW9pTWlWdmRlaXNWMUxhL2UyTmNMd1AzMmFSK1VZUmdyeGM4QXJ5N2JNbG1uVEdyS2RxelRsdmtxQmtaTXAzZG1nUzA5VG0zVUdZaTZBcjBzMnZxU0gzNVNxU2hIK0V5ZVRxaThZUmlHTVMvdUJINjgzTlVhRXRRVU1aYzc0c1VrdXk1YVlPUTJjVFRpQmVNU01NZ2lJNE9YSlFiV3NyNTBEMmFhOVpYNGEzQi91SmhqTVF4anhYZ2U4TlpHeDVsK1Y2SU1YQzdXS090TEZwZVQyNUlWTm5SQkc1dUE0Y3NmS2FXaFRuQWhka3h1MnVXaUhNQ3ZBVzllNUFFWmhyRXl2SVRtdUZKdGdVMXlKYWEyVEEwYmtuRmdhdzJ4R3JSNHdRZ0VyQy8rcGNxb1NCSkhTa04xNVhxREdjVnJEOXh6RjNOWWhtR3NLTDlVUHV5MXdxcE91VjV2dEpJNG9GTVhjZkFNWHNBaW5mZ1hEYit4eXo5dTA5d21DMTd6UjM0RjhNY0xPQmpETUZhWDN3VGUyVzEvT2xaWUl6bXRFREhLRHJsMklZNkdzUWlZa01UTHFkNktMM3NsclIrNmlIMzFUVVB3bTRSSzBvWmhHS2ZGbllDS3MrczJxTk14VjVVNnRNdFF0MmU2bEZRcm5YN1FqRW5BWFB6alhNNUExQmFZOWh1M2hLdFpyRmMrMjRQN1g0czRDc013VnBvajRIZTZ1M1hIdlBZdTFXMWIwYWI1dG5DTndvMDRKZ0ZyeGNQRUphaW5KOUEvZGkxZXZmR3ZOd0N2WHRpUkdJYXh5dncxY0RVL1RFTGp1K0tsUlN3dFRpVnZxTmRMZ1lkQ3VJWnNrWTFGd09vZk9QM0lycXpHb1gzR1JaYU9lbjB6L3ZVeTRJMExPUlRETUZhZHZ3ZGVXKzZhSmJVK2RkTEZBK1VycjlMWU1oSEhJbUNnWElnNjAwYjlrT3ZrV1pXMTFWVmtIdlpWYmY1NzRQcENEc013akZYblRjQWJlOElaYXFrdHJMVXFkRkoweWwyL2lBMldRUXRZL1VNbzA3aTJ3dGJWRDEyYjIzMXVROTFyNFJXbmZUQ0dZUmlSSStDVjNkMTErK2FVaGRVUkx2MGFONkZ6UG1RR0xXQ1JqaiszY2dOS0NaVSs0V3JGdmdvT3diM21OSS9BTUF5ajR1L3lacDJKcVBkSjFhRmF4SnhhdHhpRm1JMUJ3QktOTEp2V0R6cEp1T3FMQk1EdEVaSTRETU13RnNYZjl6L1Y2YURYK3lhOFpsU01SY0FLd1dsWVlTM0JXcXVlYnladkFCd0FiejNOYjI4WWhsSFJTQnJyaTRlbDdVWVNXdEdtdGJJUWg4eFlCQXk2MXBlcyt6SjN0T25kOTNrTzRKQXd1TkF3REdOUnZMMjl1OVZlVGJMR3ByMTMwSXhKd0FvYVk4SW1tZFc5MWhjRUFiTU1STU13RnNsN2V2YTdDVzFWSDJPeXVqU2pFckNHZVh4aUU3dnhtSVBUK2JxR1lSaTk3RTkvU1cvbjNIWGJ1MUV5S2dGVDlQbUtKNXJZZmIyVXc5UDRob1poR0JPd2p2TjB4aXBnTjJNeTk3N2UzK0ozTVF6RE9Dblc3a3hudEFJV2FablNmWXRoR0lZeElNWXVZSVpoR01aSU1RRXpETU13Qm9rSm1HRVloakZJVE1BTXd6Q01RV0lDWmhpR1lRd1NFekRETUF4amtKaUFHWVpoR0lQRUJNd3dETU1ZSkNaZ2htRVl4aUF4QVRNTXd6QUdpUW1ZWVJpR01VaE13QXpETUl4QllnSm1HSVpoREJJVE1NTXdER09RbUlBWmhtRVlnOFFFekRBTXd4Z2tKbUNHWVJqR0lERUJNd3pETUFhSkNaaGhHSVl4U0V6QURNTXdqRUZpQW1ZWWhtRU1FaE13d3pBTVk1Q1lnQm1HWVJpRHhBVE1NQXpER0NRbVlJWmhHTVlnMlRqckwyQVlZMlF0TGk0KzlzQnhYQXpEbUE4bVlJWnhpK3dBRHdMZUQ3Z3Y4RURnWHNCRjRBSkJ2SzRCZHdGdkJGNEp2QjU0TmZCM3dOSGl2N0poakFJVE1NTzRDVGFBUndLZkFmeERnbWk5N3duZTc4a0M5aWZBczRHWFlXSm1HQ2ZCQk13d1RzQzlnY2NEWHdnOEROaXVudmRCbTZiaXdOMGZ1RC93U2NCWEEzOE0vQmp3RzhBNzV2UjlEV1BNbUlBWnhneGNCcjRNK0J6Z0VYR2ZCeitEV25seUtFenZMTjU2SHR6SEFoOEwvRy9nR2NDemdNTmIrZEtHTVhJc0M5RXdKckFPZkJyd084QjNFTVFyQ3BjV0lGOHR4MnBwUGRhTGZJQ1g1VkhBandDL0JUejJWSS9PTUlhTkNaaGg5SEE3OEZSQ2ZPckQ2UWhYTFVSYXFHclI2bHM4cGFqSkIzdkFmelR3eThBM0FlZE84VGdOWTZpWWdCbEdnNGNEdndKOEpiQTVXYmhxVVRxYWNla1RzVUxJYmdQL0xjRFBFREljRGNQSVdBek1NQ28rQ25nbUljR2l4MVdvdC9zRXFCQWpjaHpNemJBVTcvSGdQdzNjZllFbkFpKzkxUU0wakpGZ0ZwaGhLRDRGK0VVNjR0V3l1c1NTdWlHTEN6a1hoOEJCWTltdkhzdHJiOUMxeXBwdXhVZkU3eVpKSklheDZwZ0ZaaGlSeHhDeS8rNG9zd3NueGJxT0hSejV1TzJ6Q0xVU05iU0Z0YWFXOWVxeFhqVE9nLzlBY0Q5TlNPVi8rUnlQM1RDR2lBbVlZUUFQSmFTdDM0ZkM3OWRuZVlsd0hmblNFa3ZQMDdXaXRIaXRxL1ZHWE90RjNyZW0zdU9KSXZaZ2NEOEJQQTU0Mjl6UGhHRU1CeE13WStXNUIvQTl3UDNvZFJ0MkVqUzhjaDJTWFlHRk85Q3A1QThYeEVkYlhTSmVtM0d0RjNtZStQcGpWQXpOZzM4a3VPOEUvZzJ3TitmellSaER3UVRNV0htK25qQ0FlSnA0T2JqaHMyRHBwWWhweGRjZCsyeUY0VXZyUzRScUU5aXExc2R4cmIrTGlKbERXV0tmRCs1UGdlK2YreGt4akdGZ0FtYXNOQjhIL0x1d09VbThia1NYb1Jhc2ZXRGZ3WUV2RXpRTzQrdU9YQkF4K1Z5eHZwSjRPZGp5b1JyVk5rRVl0OG1pdHhuZnQ2N1d4NmpZMkRyNGJ3YjNmRUpOUmNOWU5VekFqSlhsTXZETmxPWk9wSWg1S2ZGS3drWHczTzM2c0paRlp4amUwQllZd1hvUzYydExpZGRPWEhSRzRxVDRtZDdISGNBM0FsK01GUUkyVmc4VE1HTmwrVHpDbUs4SnJrTnhHNHA0N1FGN0xnalhMbkE5THJ0eEVYRTdJQ2QxU1B4S0JHeVRLRjRPZG53b3NuR09hTFZSaWw0ZllvVTVELzRKNEg0S2VQNHRuUTNER0I0bVlNWktjZ240MG5KWGM1eVhpbm1KMVhYZEI5RzY1dUNxRDFOOWlaRHRrUVhza0hJT1MrMCszQWEybzNpZEp3dGVuNEJKTnFJc0hqWGcrUnp3cjRIZlZ2L01NRllCRXpCakpYa2N1VEN2MmwyWGhqcENpVmUwdks0RFZ3amlkUVc0U2hDeGEyUXJUQVRzaURJR0poYVl1QTdQeGRlTCs3QjJPZW94WTQ1U3lOTHJQUGpIZ2ZzSTRFVnpPRGVHTVJSTXdJeVY1SW5sdzg1NHIwYlN4bDRVcjZ0eHVTc3VXc1IyeWJHd1dRVHNQR1hzUy81L1BkaFpMODFZMkNidytaaUFHYXVGQ1ppeGNud1l1YnE4Mmwxa0hxcHhYcEs0c1FkY2QzQXRXbDUzQWUrSmF4R3c2NFRNeEgxQzdHeWFnSW5yVUt3dnlMRXlQVlpNanczVDQ4SUtkK0xIRUdhRmZzT3RueUxER0FRbVlNYks4VmhDOWw1VUZwM3RWOWM1MU1rYnU0VDQxMVd5Z0drcjdGcDBNZTc1TXFiVkVyQXRzdXRRNGw3Nk5YcWNXRDNRV2FmVEovSHk0QjhFN2g5aUFtYXNEaVpneGtxeEJmemo5bE4xeFExSjNoQUxUTElPcjVIZGlGZGtjZDBZbUtUZkZ3TG1ZTU9IcjFFSVhLelVvYXR6YkZYTElWbkVtclVXTitPeFBmY1d6bzloREFrVE1HT2x1QnZ3RWZTNkQ3M0xSWG0xZ0NVTGpESUQ4U3B3TmJvVnJ4RVNQZlo5WXh5WWd6V2ZNeEYxeGlGazhSTGhraFQ3bmZoNTIzRy9XSVpTTDdIRFkrS0hITjd5bVRLTTVjY0V6RmdwN2syWUdMSnlINmJGcStvYjVCaFliWVZKS24zYWRqR0J3NnNFRGxkbUZhNFJSRXpxSkI3N3ZGK0wxdzdSRlJuRkt3Mk1wbnl2L3Q0cHBmN2hoQUhhNzV6ZktUT01wY1VFekZncEh0ai9WTzFDbEJoWXN3SUhzT3VDWU8wUjF2dkFnWXZ4THgrbldYR1ZnSW40Vk9JbFk4TjBWWTk5WDZiWXB5TEJ2dXMrbEFQd08zSGlTeE13WXhXd0NTMk5sZUlEMjdzN2FmU1UwNlJvSzB4aVhQcysxa0trTzBGbHNZaExVb29CeThTWExndWUvdXlpcnFMNm5MNXBXdERiRzhDRGJ2cnNHTWF3TUF2TVdDbnUxZDJWTWhCZDZVTFV5UngxQmZva1dENElVVXV3anNXRkdQMTd6c2R0SDF4K04yTGNxMVhkdmhaQ1BXTnp4KzJKY2lHNjlqRWF4aWd4QVROV2lrdXp2YXl1eUZGWVpDNlhtWkpNd3lQSzZ2TWlYa1ZsSjlkOVRoSkcrcFprY2FtNXhUcXVRL1dkSGNERkdjK0ZZUXdkRXpCanBlaHAzSDM4MDNMTkZZdTIwblF5aFFpTTY0cE04WG5WNjQvVjUybjNaUkpRK1Z6ZkZhMW1GdUtFWXpTTTBXRXhNTU5RTHJnVHZINlc5elJGeDAwUUg4TXdac2NFekZncGRpYzg1MHBoYXRZajlJM3RPTWJMdVZ3VlExZU9MLzVGSExDY252ZmRJcjI2M3VHYXZOWTFQdXRtanRFd3hvUUptTEZTVEVndjE4SlNDOWM2c09IS2trNnB0Sk1QRlRha1R1R2FLd1dzV0VTd2ZQN2NvdTZoNjlZK1hLY1V6ajdyTCsyekZIcGpWVEFCTTFhS04zVjN1V3BiQzFoUmw5REh3Y1l1RERqZVZNdUdWNkxqczVpNXhtZXVPU1ZlcnF4NXVPbGgwNVgxRDNVUjM5cGE2NGlaYngrallZd1NTK0l3Vm9xL2JlOXVDVTJyTHFGTVJDblY1TGNKNDdhMlVPbnpsQlU0ZEtIZU5ZTEFiUkNzclNTSzVISlJXejcvUHhFMmJZMjFoQ3R0SHdHdk92RlpNWXhoWWdKbXJCUXZJelR5MGZXZ3B5UFJBbFpYaEJlQmtVa296eEZDVGVkUUE0NmRxcjdoOCtlTHVHaFg1S1lQeXpaNTJhbVdiUmZFVEZla3IrY0ZLNnd2Qis1ZHdLdm5jYUlNWXdDWWdCa3J4ZHVBdjZPb3lLRkZURnRmNndSMzNwYnZpdGQ1eW9rcmJ4REZpNXp5N2x6ZUo4Vjg2NEs5Mno1L3BuenVPVUlSM3gyZnJUTHRVcHpvUXZ4ekxJbkRXQjFNd0l5VjRqM0FDNEVIeDhvWWNYZkxoU2h4TDdHK3p0RXU5VlFVMnFYOFRKbDhFa0xzYTBOWlhqc2lYZzR1ZUxoQVhzN0g1OFJOS1FKV3g4TTYvRUg4TW9heENsZ1NoN0ZTSEFGL1JERVFTNmZOTzRMUTFQRXZjZXVkSjRxTUMrT0ZMd0lYWFJRZGxPaEU2MnJMeGNXWGx0d09jRDYrN3lMbE9vbFlmSjNFdzBUQWFoZGlzc0t1RXNUWk1GWUZzOENNbGVOM2dkY1JwbFdKNkRpVjk4cUZTSjU4OGh5cWJxRnYxRDVFV1Y4eDdmMVF1UkRYWXp4THJEbXh1aTc2VU9IcUlubGRpQ0ZsTWtjdFhuSUE3cStBbDh6bERCbkdNREFCTTFhT1Z4TmNiVThzM1loUXVoRTNDT0lqRTBuV1ZlWmJOUXQxQW9kOHhoR0F6OGtiTzJTTDYxSzFYSFJCMEM0d213dXhFTEZmQTk0OWx6TmtHTVBBQk14WVNaNE9mQTVCR1NqalNXc0VVUk0zb2k3a082M3diajNQMTJGOERrTDhhOHZCdVNoUWx3aHpUMTUyY05tSDdVdSs2NDZVSkk2V2VDWGVEdnlQV3p3bmhqRTBUTUNNbGVSUGdlY0RuNXF0c0xxRWxCYXhMZHJWNmZXNnRyN1dDZk45SGNYcUcvSTU1NGpXbHdpWGlCY3FuaGFUT09vc3hHYnN5NEg3U2VEMTh6OU5ockhVbUlBWks4a2g4RlRnbytsVWI2OEZURmVKN3l3cVZmN1lsL045clFNSE1UNG1BcmJ0ZzNWMWtXQnRYVWFKRnlFdUp0YVhpSmRPbjljSkhJblhFaXhLdzFnMVRNQ01sZVVQZ1djRC83SnJoWUhLMEhYZHViaVNGZVpMUWRNVzJDWWg1VjdTNkNXQjQzeU1jMm54U2dKR3pqNnNremVhc1M4SDd1bjBWaGd4akZGakFtYXNMRWZBTndNZkM5eS9LMklpWUQ2V2Ztb0pXRzJGU1VLSURJTGU5dzBCODkwRWpwWjRiY1drRDUwNlg4Uy9ITGdYQU44ejE3TmlHTVBCQk14WWFkNEFmQVB3WXdTL25VSm5KRUpYd0pLUUtmRVNBVnduaU04QnBRdHhKeVp4YUFGcmloZFZnV0QxZlJKdkJiNFd1RDZQRTJFWUE4UUV6Rmg1bmcwOERQaFBwUldteTB0QkdRL2JpdXNqbHdYc3VIclBKa0hBQ2d2TTV5UU9XZW94WHpwcG81VjE2QUNPd1AwbjRFVnpQaGVHTVNSTXdJeVZ4d1BmQmp3UStPeitlRmlkMU9FcHhldFl2WDZkSUVRaVlDbUpnMXp6VUt5dU9tbWpGcTltM091cHdJL084UndZeGhBeEFUTU1RbVhlTHlPb3grTm5UK3JRbHBjZUVDMWxxQTRwQlV6UzZFWEVKb2xYYjlMRzl3SC9lWDZIYmhpRHhRVE1NQ0ozQWw5S1VJcFBiNDhQYytTcThuVXloNDh2Y2o0TDJBMUtBZHNrMTBJVUladm1OaXpFNndlQXJ5RW9vMkdzT2xiTTF6QVU3d0QrQmZCRDRXRkh2Q2luV3hHcktrMjM0ck43c0ZNbWlqSmhveEF2MTdXOGl0alhBYmh2QnI2S2tKdHZHSVpaWUliUjRTNkNPL0VWaE1TTzI5dVZPdXA0R09yNURmSTBLeWt6VWFaVElRdFhLK093NHpaOEk3aXZBMzdxdEE3WU1BYUtDWmhoTlBEQWR4RktUbjBIOEJIZzFzTlQybXZoVmZrb0ljMGxSa2loVDVtSlBsZlZFSmRoUFZGbFlYVWRBczhIOXczQS81bjdFUnJHOERFWG9tRk00QVhBSjRIN3NYSzNpTXg2ckRJdmdyVk5PWHV6VHRTUVZIazl4MWR2MHNZTmNOOEJQQjRUTDhQb3d3VE1NS1p3RGZpemJsSkZxbzVSaVppT2llbUVEZG11YXh3Mmt6WU9nQmNFSVRNTW93ZHpJUnJHREtnYlJhZldTOVVOb250UWhFMVBjQ2t1eERvSlJLK2JSWG8zVCtFNERHTk1tSUFaeHNuUjlSS1BLVXM5SFFOclZRRmcvZnBhc0pxVk5sd2xab1poZERFQk00d1pjVFJuY0pZcUhmSllFalphMlluYUV1dU04OExFeXpCT2hBbVlZWndBSldLNlhpSmtJWlA5dnYzMjVpTFBtWGdaeGdrd0FUT01FMUtKV1BWVVI3enExM1ZFcS9FNWhtSE1nQW1ZWWR3RWxUdXhKV1RRSFFCZFArL1VEaE14d3pnaEptQ0djWk5NRWJHK2ZaMzlKbDZHY1hPWWdCbkdMU0RpTTBYSXByN2ZNSXlUWXdKbUdIT2dJV1JUWDJzWXhxMWhBbVlZYzhURXlUQVdoNVdTTWd6RE1BYUpDWmhoR0lZeFNFekFETU13akVGaUFtWVlobUVNRWhNd3d6QU1ZNUNZZ0JtR1lSaUR4QVRNTUF6REdDUW1ZSVpoR01ZZ01RRXpETU13Qm9rSm1HRVloakZJVE1BTXd6Q01RV0lDWmhpR1lRd1NFekRETUF4amtKaUFHWVpoR0lQRUJNd3dETU1ZSkNaZ2htRVl4aUF4QVRNTXd6QUdpUW1ZWVJpR01VaE13QXpETUl4QllnSm1HSVpoREJJVE1NTXdER09RbUlBWnhnd2NMZmovK1RQNG40WXhORXpBREdNR3JyRllRVGtFcmkvdy94bkdFREVCTTR3WmVBT3d2OEQvZHcxNDB3TC9uMkVNRVJNd3c1aUJsd0pYRi9qLzNnNjhmb0gvenpDR2lBbVlZY3pBTzRDL1hPRC8reVBnWUlIL3p6Q0dpQW1ZWWN6SXp5em8veHdEUDdlZy8yVVlROFlFekRCbTVMZUJseTNnLy93dThCY0wrRCtHTVhSTXdBeGpSdDRBZkQvQlFqb3Rkb0duRXBJNERNT1lqQW1ZWVp5QUh3ZCs2eFEvLzVtbi9QbUdNU1pNd0F6akJGd0h2Z0o0K1NsODl1OEQzd2pjT0lYUE5vd3hZZ0ptR0Nma2xjQVRnYitiNDJlK0VQZ2k0TTQ1ZnFaaGpCMFRNTU80Q2Y0TWVEendlM1A0cko4SFBoTjQ5UncreXpCV0NSTXd3N2hKWGdvOEFmaC91RG5MNmZYQWt3aVcxMXZtK0wwTVkxWFlPT3N2WUJoRDVoM0FVNEJuQVY4Q2ZEendFT0JDeit2dkpLVGlQdy80Q1V5NERPTldNQUV6akRud1N1RHJnRHVBRHdZZUFOd1h1RHNoN2Y0ZHdPc0ljYk8vQnE2Y3pkYzBqRkZoQW1ZWWMrUWRoTGpZNzUzdDF6Q01sY0JpWUlaaEdNWWdNUUV6RE1Nd0Jva0ptR0VZaGpGSVRNQU13ekNNUVdJQ1poaUdZUXdTRXpERE1BeGprSmlBR1laaEdJUEVCTXd3RE1NWUpDWmdobUVZeGlBeEFUTU13ekFHaVFtWVlSaUdNVWpHTG1EZWc5ZnJDWXRoR0lZeElFWXJZUDdrb21RaVpoaUdNU0RHS21DMUdDVkx5MDJ3dlBwRWIvMDB2cUZoR01ZRWJLcVE2WXpxSFBtdUtPbkhMVmRpL1pyV1k3Wk81ZHNhaG1IMFkrM09kTVpxZ2VHNkF0VlozR1FoUzJ3Qm02ZjZiUTNETUVvdVRuOUpiOXZXaVAyUGtqRUpXRzFGeVhycWowejdCMDc3TjRHN25jcFhOZ3pEYUhOSHovNmJFYVdieUFrWUJHTVJzRUs4WEZlY2p0VzZYdlR6elF0akU3ajlOTCs5WVJoR3hYdTNkMC9xYkUrTThmZThkOUNNUmNDQXdtMElwV0QxaVpkK3ZuWW5wcy9aQWQ3M1ZMKzVZUmhHeWYyNnUvcVMwOUwydEJpL3o2OFpCV01Rc09MSGFGaGYzbVdoT2xMTEpDRXIyQVp2QW1ZWXhpSjUvLzZuK21MNXM4YjdSOE9nQmN6MS95Q0YrOUJuOGVvVHNiNGZIZ2duNlVHbmN3aUdZUmhOUGlodnRyeERPcGJmOGpMcDBFaUxVUWphb0FXc3dvdDVySG9ieDY0U0wxY0ttQmExWTlxWmlRQThBQnNQWmhqR1lyZ00zS2U3dXlOZWJucDgzN3ZRaVIrbEZUWVdBVXMvaWhZdnN2V1ZMQy9mRmJEQ25kaVhtZmdnZW9PcWhtRVljK1grd1B2MUoyTFUzcVcwdUlhUVNac21zYThKbnF2Qk1SWUJBNXBqdityWTF3MjF0RVNzTndENllPRGVpemdJd3pCV25nOEE3bG51Nmd0ekZHRVI2YUM3VXRCU085WVFyMEdMMlpnRXpNYy9LWWtqL2xoYXZBb1JjNldRVFVybThEdmdQM3hSUjJJWXhzcmlnRWRUTk02MWgwbDN6T3U0dmhheTJrTHpxbjJrK3N4Qk1pWUJneXIrcGQySHJtdUJIZnEyTmRaSzZnRGdVeFo0SUlaaHJDWTd3Q2QwZDJzMzRFbThTOGN1TEw0eHpHaXd3aVdNUmNCYVBZcmF2QzdFcTFyTGp6NHhwZjRqTVRlaVlSaW55OE1KSVl1SWJvZnFoQTNkTVo4b1lqNG50ZFZDTm1nR0wyQjEzRXRsSWtyUDQ1aHNVaCs2SUZxeTNJajdhaEhUS2FqcEFyb2QvUCsxeUlNekRHUGwrQXhndlJIR29DRmVQb2RDZEdlODJTbHZ1UStIenVBRnJFYjFNTHdQUDFwaGdma3NYZ2ZBZ1N0ZGlicm4wa25vV0FNK0ZkaGU2QkVaaHJFcXZEZndUOHBkV3JnS3I1TFBiWm9JV0JJeEhkLzMwZktDenFEbndUTTJBU3NTT1ZRbXpoSGhSeTNFaXlCZStvY3YvTVkwZnV5UEJqNWtnUWRrR01icThOSEFRL3BUNTFzaGtjUEcwckhDbElqVm56dG94aVpnRUhzWlRsWGdxQ3dzTFdMN0tERkRDWm52eHNJOHdHM2dQM2ZCQjJRWXh2alpBSjVJbWdlc2xTNHZTNmN0YytVNnRXTTZsS0l6dEJuSm1MQXhDVmo2WWVvNEdMSEg0a3ZycTdWMExERktDOHdEZkFGdzMwVWRsV0VZSzhFamdVL3BpWHZwZG94dVIvekF4ODY0ejU0bGNTOUtaOXlQTFlFRFJpSmc5WThpWXlVa0JxWXlkZVJIMzYrV1dzRHFBR2dubWVOSkN6Z3V3ekJXQXdmOGU0cHlkVVhzeTdjRmJLYU91TXR0NGFqaVh6QVNBYXVvZzVXU3lDSEJUZjFERnlMbVRtQ0YvZC9BQnkvcWlBekRHRFdmREh4aWxWR3RsbGJjSzdWZnJ0MFJMOEloUGVQQUJzL1lCQ3hkQUdyY1EyR0IrZXJIQi9iaXN1OGJQWmlxdGxqNjBlOE4vcXNYZEZDR1lZeVg4OERYQXBmQ3c3N1lsL1lpMVozdlBVb1JPeVIwMW91eVVtYUJMVEhWZUxDbUcxRUZPdmRkRmk3NThXV3RSU3lWWktGN1lmSDU0Qiszc0NNMERHT01mQW53MFZQR2ZLSEV5M1U3MzdvZEUwL1NEUjlFTExrUDYycjBZNGlIalViQUtwSWJVUTFrbGgvMDBNZWdweEt4WGFxTGdHeUdpd1hYcWRDeEFYdzljTWVDRDg0d2pISHdJT0RKK1dITCtxcmo5NUt3a2RvdXI5b3VGNTZYZ2czSkFodmpWQ293VGdGclppTVNma2lkaWJqdnV6Mllwb2o1L2drd2VSVDRiMWpvNFJtR01RYTJnRzhGN3RkdmZkVnhyMlI1dWR6eGxzNzNQamtNb3VQNHJmSjRveEd5VVFuWWhHekVWSGFGcmh0eEY5aDFqWXVCYUlyVExUTlZYQWhQQXYvNFJSeWdZUmlqNGN1Qko3UVROK29CeXpydUpWYVh0RmRGdXlXSmFMNS9QQ3N3RHZjaGpFekFLanArWkZVejdNQ1hwdml1aCt1VUYwUW5Ia2JQdkdGYndIOERIcnF3UXpNTVk4ajhFK0FiKzhVclZROUNpVmVNZlVuN1ZMZFhPaEd0Q0gzNFVyeEdJVnpDV0FVc1hSRGFDa09aNDA2SkYvbGl1QTVjcjZ5eEloNUdqeXZ4L3VDZkJ0eHRRUWRvR01Zd3VSL3dOT0R1NWU2aXMrMjdyc005WDRxWExDbCtIOXUwTkpaVkV0REdWdjlRTXpvQmE4MTVvNU01bkxMQTZJcFljV0c0TWlaVzEwenN1QkkvRHZ3UEF4ZFAvU2dOd3hnaTl3S2VCVHg0c3V0UXhLc2U3dE5wcDF3V3NYMmZTMGxKQ24xbitBK014MzBJSVpGdXJPZ0xSTVpCYUwveUFhSFhzZ1ZzUnhmaWR0eVc5UmF3U1RoUEd3VEJsOFdwL3lVZEFmZFo0TjhGN3N2alB6RU13d0M0RGZoaDRORmQ4ZXBNa1VJWjl4TGh1Z1pjYzNETmgrM3IwU3JiYzFIQVlwSmFuL1UxR3VFU1JpbGdMbVFmaXNDa2k4VGxRcGlIMFFMYjlMbG5zMTB0dFhpdDB4VXdXZlNGNGY0VitMdkFmVlA4WU1Nd1Zwdkx3Tk9CVDUwZ1hwVGlwYTB1YlhrbDhVSzVFTDF5SDdvVlNONFFSaWxnaXFZVjVzcUxaSk53RVd3MWxzMjRiRGhZOTFuRVJMZzAyaDNydmhyODdlQytFcmg2S29kbUdNWVFlQitDZUQydTdUYXNYWWVkakVPaTVVVm9TcTZwNVRyZFlUOHJZMzNCK0FWTTZMdFExZ2svL2daWnJMYXE5U2F3NFVzTHpLSGNodXIvRkNMMlJlQXZnL3Mzd0R0UDU3Z013MWhpM2gvNGNlQ3hzOFc4dE9XMTU0S0xVQXZXVmJLSVNiS1pXRjhIeElrc2xmVlZ4TC9HWm4zQmlBVk11UkZySzh6NVVzUkV3SGJKZ3JYcGdudFJ1dzlscVMyd2laYllaNEovYjNCUEJsNDgzME0wREdPSitXamdlNEVQdnJteFh0ZDlqbnRkQmE1UVdtQXAva1U1czd5dUhEUnE2d3RHbUlXb2FXVWtrc2RaNkl0R1ovaGNBNjc2Zk5ISWhaTjZQblRIaWZWVnIvY0FId1grdWVDL2dLN2FHWVl4TGpZSjVhR2VBLzRFNGxWbkdsNXp1ZDNSYmRCVmxQVkZ0K0JDUGU0TEdLZjFCU08yd0Nya3h6dDJRVU9PQUtkRWJGMVpXeHN1dXd6WFhkdDkySXFCMVJSdXh2c0FQd2IrUThIOVYrQ3Rjenc0d3pDV2d3Y0NUd0UrcjcvejdPbG1RK3RzUTRsNTFaM29aSUc1UE14SEpyRXNTa2U1RmJHK1lBVUVyTXBJaFBEakV0MklhNFFmZjgzQm1nK1BKVmxqblRKeFl4WUIweGZMV3JWbUxiZ1MvY2VEK3kvQWN3aFhybUVZdytZOFlhYjIvd0M4ZjdmcWhjNDJsRXpvUGcvUVZlQ3FDd0oybDRPN1BGeHhjQ1VLMmpWZkptOFVpUnMweEd1czFoZXNnSUFwNmg2UmpMdHdYb2tYV2JEcXVOZEp4TXRUVEs1YXhzd2VCdjZuZ2VkRWEreFBiL1hJRE1NNE16NFIrQnJnRTlwVzF6UzNZVDNPNnlwQnJPNGlpaGRLdkNpcmI2VFlWeU4xZmlWWUNRRnJKWFM0ZkVHNWVCRTRaWVdKZ0swUnJEUG5wN3NPKzFKa3RRQVdYK3N6d0QrYUlHVGZCN3lDYUI0YWhySFViQUFmRG53bDhDa2gyMWlvMjRGaW5CZVRZKy9pS3J5clduUUNoMWhmZGZ5OTZUb2NzL1VGS3lKZ0RWSk1MSnJlanV5UGRyVmdUUkN2MmtXZzF6NEtwNGlZcHpHRzdKN2d2Z3o4dndCK0h0eHpnTjhqWExHR1lTd1hsNENQQXo0ZitIVHdxZ0h0Uzlab1Zkam90YnlBOThqaXNnVldpSmZMWmFOdVVKYU5XaW54Z2hVU3NJWVZCakd0UGw1YzhrUVNxMHJJb0JTdzFvVmFDRmswNlRmb0Y3SDBlZWZCL1F2d253djhPYmhmQVg0UmVCMmh1MlVZeHRsd0huZ3c4QVRnWTRFUEJiK1ZuKzd6dkJTektmdXU1YlZIVjd6dUlvaFg0VDRreE1TdWt5ZXZMS1pNY1N2b09oU2M5OE05WnVkT25wVHVTekZ5UkxlaHk1bUlNb2g1QnpnSG5IZHcwWWNhdlpjSVZXRnVpK3ZMRGk3SDV5NENGd2pYK3c2NUpKVlU4a2laamZKL0tZV3NJNUs3d0l2Qi9TYndGOEFyZ2RkaWdtWVlwOGxGd2dEa0R3QWVSWWh4ZlJENHpmSmwwNFRyV0ZsZG5Ra3BVZUlsQ1J0VUFrWVVzUGo4ZFJjRUxGWGRpSU9XYXdHN0tldHJxRHF3TWhhWTBMREVqdFVENTBxM0ljVG5hdE9OMHNvNmNuRTdYclRpN3o0aWlwaXl4bzdwdDhZS1JUNEg3aVBCZjJSODAydUExd092QmZjSzRGWHg4ZHVBTzhrK2lXRmVpb2F4R0J5aFozb09lQy9nRHNJVUp3OEFQaEQ4UHdEdUMveUQ3bHQ5WTYyRnk1UGRlZHBsV00rbWZEMEswbFVmRWpSUzNFdTVEZThpWngxS3hZMDBQK0U4eFd2SXJKeUFWWFNTT2tTc1JMQ2lHMUZlMk9scGlYRDU4cUxWNVdHT0NCYmRFYms0Y0t1eVI2dkNoM3dkMW9EN2c3dC8rYjBOd3pnZDZudXNUN3c2d2tVM1dVTzdEWGQ5cktiaG8rdFFpNWF2eG55aENpZTRtTFRoeTZTTmxSVXZXRkVCNnhrYnRvYXl4aW9SMDFkRklXQyt2R0QxY3FpMmQrSzZWZUYrMGppelFzU3FiY013VGdmZjJPNFRybGFXWVYwYVNyc042N2pYRmQ4ZHJIelZaY3RMaTFkS21hZWNrM0JsV1VrQmc0NHJVZGJIVU81VTR1VXBNd3Uxbjd2dWRlbEZUSDZaWjB3cTNXK29aYjFLNFc4bGVyUVNTUXpEbUQrMWdMVVc4YjdvY0lHKy93OWl0cUN1c0tIRks1V0pjbm1jVjZxMDRkVmc1WVo0YWZGTTMzZlZyQzlZWVFHRGlabUpUUkZ6alVEdEJQRTYwSXNQTHZjRHl1UU9XU1NCUkk4L2F5VjZRQ2xnSm1hR01SLzZySzVpY1RsYzBQSys2UHQrM3l1M0lXcENTa29CazVKUmVvcVVYUmRqWGozaXBUTU9WMWE4WU1VRkRHWVhNYUxsSmR2MEQxQXNMdUpxMlZGTFo4NHgrcXQvOUZYQU53RXpqUG5RdExwcWo0c3Y3L2xXeDFXN0RNVnRLUFVOcFZSVTM5eGUxd25DVlF4VTdoR3ZsWTE3YVZaZXdHQTJFVlBQRmIwd3VqMndPbkFyRi9ONWN2TFRIbEhFb210Umk5aXNzYkZDdkp5Sm1XR2NDRDg1VWNPVEs3dnJPb1l0cTB1RXE1NklzbllkYWl0TVA1Ylg3Ym15UU8raEw2ZEhNZkdxTUFHTFRCQXhyeXd3dWVnTFY2SUVWWDBwWUpJeXExMEo1OVN5UXpzdU5zMGFhN29VVi9vcU5veGJvOWRsU0JZdDNWazlja0ZjNnZ1OUtWNHVaeDVlMTR1THIxSHR3NEZYTXl1N09EMEtaY0tHaVpmQ0JFelJFREZQRUk0amNSLzY3RmJRY2JEVUc0c1hkdTArbEl2NUhIbWdjeEl4U2hIVEE1OUZ5TlpvVzJQUWIzbVpSV1lZSlgwTmZrdkFXbGJYRWJuNmV4M25GbStMRk5wTkF1YXpHMUhpVzd1K0VpNVpuSElaK2p6T3l4STJlakFCcTJoa0owcTVxVTQySWxISVZDYWlDRmtkeUJXMzRUbXlrT2w0bUJheFRjTEE1NDRsRmpNVld6RXhNTUV5akp1aEkxNk5FTUdrUkMzZFVkMXplZEJ4RWlxVWk1QXNYUHZFREVNZk83Nm9zYU8rTzg0cmZWY1RyNHdKV0lPK0ZIdVZoVmdIZHRORjdyT0FIVVovOXI0UEYvYWVoeDBINTN4cGdmVlpZVG9tdGtISVZLd1RPK0xYTGRhR1ljeEdSeGg4S1Y1MWpIdFNvdFllNFY0WG9kcnpPYTRsaitWMU9qdFpMRHB4VFRhcmEyRGkxY1FFckllZW1CaW81QTV5Wm1LNjJLUDVmK2pEUmFrdHNYMUN6R3VYdHZVbEFsYW4yQ2NyekhWRnpLd3d3N2c1ZkxXZE9xWEtBbXNWS1NoY2gycXNWeEt4dUphRURCR3VBNTJnb1MydVJxSkdjMFpsRTY4dUptQVRVQ0lHamVRT255LzhPcG5qaHFzRWpPQXUyQUoydkJJdDEwM2tTQUlXNDJDYkJBSGI4Sk96RWh0ZjN6QU1SVXNBdElVajk3Vk8zS2dyN0VpU2hWaFErdjVPWWhaZGc1S1ptR29ZK2txNDVQOG9sMkVuV1FOTXZQb3dBWnVDWERpTjVBNVh4Y0YwNzYyT2lSMFNMdWd0d2tXZHhNcm43YTBvY0ZzK3g4RmF5UnlwbXIyaktEcHNnbVVZSjBPN0RvdmtEVWZ2UU9YZVlnV1Vyc0VrZE1vam8rZnZrZ0xnUjA2Sko1akw4Q1NzM0hRcXQ0THZ1dXZxWlkyUWFDSHVQa25BU09ueExpWm91Q3hVT3VZbGp6ZklGdGdzS2ZWZ0FtWVlKNldUd0VGLzlxR0lqNHpQU2tLbVV1b1A5RDZVYUpFekM4VlQwM0lWbnBuVk5WUWRNQUU3SVEwUms3VWpXRVJpR2EyVDV4blRtWVNiWkdFU1lkdWtIQU1tMnlKK2ZkVTVnRFFGakdFWUo4UTNCaS9UYjRXbE5IcEtxNnd1M3EyWG8xcTRWTnk4RnEwemN4a09WUWRNd0c2U1dZUU10Y1FVZUoyTUljSlVaQnJxYlMxK3JpejJhMW1JaG5IcjFNS2hYWG10WXQzaStwUDRsWFlKcG4yVllDVnJheG1GU3hpcURwaUEzU0k5YnNXMExSWVpXWHhTTE12bngxcll0SENKQlZjbmI2elJFQzZ6eEF4ak5ud3BGQzByVEk4SDA1VTRrbXRSeEUySjNMRVNMMTNvb0JZdXF1MHpqM1VOVlFjc2llTVdtWkNwQ0huQXMxTVg4YkhQU1JnU0w5UFdWU0ZZdnJUaUpHbWpsWDNvaG5rSkdzYVpVWXVZSkU0Yyt5cXRucktZcnd5WnFkMk4rbmt0aEwzQ0ZmK2YzYm8zaVFuWUhPakpWTlFrSVNOVzlpQmFVYkhINXB5eXNKU2dhV3RyemF0NGw0aW1XVjJHY2V2NExGNDZJekdKa00vYnRYV1dzcEJkdHJaYVNSa21YS2VBQ2RnYzZSRXlFUzVaaXdqSjh5bWpVQVJLdVIzVGZ2SnpoZXRRM1FFbVpJWnhNam9lazNpVEpoRnphbDN0TzY3M3ErZmtzenN4TGpEaG1pY21ZS2RBSldSeE15RkNGbCthcXQzWHJzRmthWWx3K2Z3NjJURFJNb3c1NGZOOVcxdGpOSVNzMkpjL29ybEd2ZDZZSXlaZ3A4Z0VJYXV0TWdoQ1ZheDk5N2tpYVNTKzJVVE1NRzRCM3hDV2xpaTVhZzJkamltWWFDMFV5MEpjTUw0dE9IVW1ZOSsrdnNlR1ljeUhqbHZ4aE52QThJUnJxRHBnRnRpQzBSZjJGQmVqTDk4MjY4Y2JoakVEczdiWXphU3MxZ3VISmxwandBVHNES2t2K0I1QjA0K25DWlRkUUlZeEg2YmVTeVpZWjQ4SjJCTFJ1aUVxbDZQZE1JYXhZRXlvbHBkQng4QU13ekNNMVdWdCtrc013ekFNWS9rd0FUTU13ekFHaVFtWVlSaUdNVWorZitQSmZQZWNhcXBLQUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzEiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkQmxvYiIsImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJsYXJnZUJsb2JLZXkiLCJtaW5QaW5MZW5ndGgiXSwiYWFndWlkIjoiYjI2NzIzOWI5NTRmNDA0MWEwMWJlZTRmMzNjMTQ1YjYiLCJvcHRpb25zIjp7InJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwibGFyZ2VCbG9icyI6dHJ1ZSwiZXAiOmZhbHNlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsImFsd2F5c1V2IjpmYWxzZX0sIm1heE1zZ1NpemUiOjEyMDAsInBpblV2QXV0aFByb3RvY29scyI6WzEsMl0sIm1heFNlcmlhbGl6ZWRMYXJnZUJsb2JBcnJheSI6MTAyNCwibWluUElOTGVuZ3RoIjo0LCJtYXhDcmVkQmxvYkxlbmd0aCI6MzIsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjo4fX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjMtMDMtMjgiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6NSwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJhdXRoZW50b24xIC0gQ1RBUDIuMSIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjMwMzI4MDA2IiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjMtMDMtMjgiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6NX1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMy0xMC0wMyJ9LHsiYWFndWlkIjoiYjUwZDVlMGEtN2Y4MS00OTU5LTliMTItZjQ1NDA3NDA3NTAzIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiJiNTBkNWUwYS03ZjgxLTQ5NTktOWIxMi1mNDU0MDc0MDc1MDMiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiSURQcmltZSAzOTQwIEZJRE8ifSwiZGVzY3JpcHRpb24iOiJJRFByaW1lIDM5NDAgRklETyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfaW50ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MjU2LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiLCJyZW1vdGVfaGFuZGxlIl0sImlzS2V5UmVzdHJpY3RlZCI6ZmFsc2UsImlzRnJlc2hVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZWQiOnRydWUsIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQzZUQ0NBZEdnQXdJQkFnSUpBSmJUeXJ1MVgvSVBNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1DTXhJVEFmQmdOVkJBTU1HRWRsYldGc2RHOGdUWFZzZEdsQmNIQWdSa2xFVHlCRFFUQWVGdzB4T0RBMk1USXhORFExTlRCYUZ3MHlPREEyTURreE5EUTFOVEJhTUNNeElUQWZCZ05WQkFNTUdFZGxiV0ZzZEc4Z1RYVnNkR2xCY0hBZ1JrbEVUeUJEUVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTVZqS0hXcGJEN1RTbE14b2NqVGw2bklmN3gzMlBtc1E5ekd1TEdHcUEwVVFab0lxM1hMekw2TFlVdko1QTVnMHV5RkdsbEhFZkdBS3JFYUNROEZWdlBTL1VoMEZ5ZnpXaFJBemlUU2lqak1JSVZqampVdjltOXZGbWNYU2NnSGlnN09kejg4NThWMGtyTkg5OXFHbTN3amdhT2VyVFdtdCtqWENVZm4wMUlrVFB3eEcySGxnRWQ0NWpOTFNWN1Zvb2wrS2U4RTJraTRsRWtUZUh6Ym91bFI1R1VicDNuTWk3RTQ3Vk1RYTNiTndueldCYnNhQlNTUWhMazNtNUhhS2hoeGE2d0pESzQ3TmlNQ2tDa2RJSHVXU1FMVkFmbTg1VUFPTnRFT1B3aTBPdUszcWJlOHlLT0ZHZjBLaEI1TU1lQXltN01WL000VzBhNDlvZ1BEOXBNQ0F3RUFBYU1nTUI0d0RBWURWUjBUQkFVd0F3RUIvekFPQmdOVkhROEJBZjhFQkFNQ0FvUXdEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBSld6NXhMTWs1V05ZYkFiNnlPeEVDQm9aMldlQi9xbDRWSjNPLzMvdE5zeE9ZbnpMZVdvNTQwelFoOXJBbWF4ejdldW1CbHNrTXE0eUdQU05YQjl5Y1dHSGdrY0NlU3pOMnd2OENJekRCczJvQlpqVE5rNjVMQlpEc3NUT0J0TVcvK3VURkhRZmJ1TzNJU0xoSTBEWGZSRWk5TkRNM2pmazExeEhjc2ZoMlJNVitRZE5md1ZhWlpyQ3Erb3VHK0V2a3Y3S3FxK295dTBWRk0vdHo2OFRHbDZ5bGhQRlIxcWg5d3R0cFZqQU9PQ0VRQ0xxUDJkUDI4bHdZQnlDcUhRcVZId2J1anYvTFpqWm5LVzNMWW5kWml4UFBTUkNKc3NERHdKdmgvZjZuVHhnOVpFKy9KY1lyZTVDYUk4bnpWSGFTT0NqTko3RnpVTEc2NEppV092UTUwPSIsIk1JSURkVENDQWwyZ0F3SUJBZ0lKQUlDVVR2a2d0ajVDTUEwR0NTcUdTSWIzRFFFQkN3VUFNRkV4Q3pBSkJnTlZCQVlUQWtaU01Rd3dDZ1lEVlFRS0RBTkVTVk14Q3pBSkJnTlZCQXNNQWtOVE1TY3dKUVlEVlFRRERCNUhaVzFoYkhSdklFMTFiSFJwUVhCd0lFWkpSRThnVTNWaVkyRWdRMEV3SGhjTk1qQXdOekEzTVRRek56RTRXaGNOTXpBd056QTFNVFF6TnpFNFdqQlJNUXN3Q1FZRFZRUUdFd0pHVWpFTU1Bb0dBMVVFQ2d3RFJFbFRNUXN3Q1FZRFZRUUxEQUpEVXpFbk1DVUdBMVVFQXd3ZVIyVnRZV3gwYnlCTmRXeDBhVUZ3Y0NCR1NVUlBJRk4xWW1OaElFTkJNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXZBS09lcUM1L3AwRDFpc0NZS1FKbFZVT3JCNkk3RExvY3VuRS9SbThkdUdUYnl4UWh0M0NiRlZUdjNOMkxwMmZianhsSSszc09TR2szM0ZUWWtUcXhjZEpJcko3U3NrQmNVU05yZktPYVFULzZLUWNQNENtN1YrNjU1VHErVFd4eXhXUWhEeWd0MTVxb1A3TXVLNmJUOVN3cENqcGZLaGFNU215UWFNb1VjUkFiTHFkekJDYWMwaHpCK1plK2dxSmxuV1Y5VWFTSTJyRnNWdUg0WkUwY1JPK01PcGFMZ00vczI0OG5HR0hwMjJld1NRZmJuUGFCYmI4aXF5QVArY3U1MkdMc1VwS1JKZWJFK1I2K1BNUTlKQ2RXZVFaUjNEa2ZTaWRrdjNtY2I0anExaUl0YStNcUtoUm53cmZYaDkxMUtXTG5ZQWw5RU5DaExYMGM2U2oxUUlEQVFBQm8xQXdUakFkQmdOVkhRNEVGZ1FVV0x2aFJCVVBuOHVMSWY2OCtndi9OWkl3R1NJd0h3WURWUjBqQkJnd0ZvQVVXTHZoUkJVUG44dUxJZjY4K2d2L05aSXdHU0l3REFZRFZSMFRCQVV3QXdFQi96QU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFGTHJEaGFlZ2VLSHhZakgzRVAzdlVCS2huek0yMDZBU3hnZVlDTzJFYzlwT2xZSmFlcUZFK3NVYW1VVi9wd2pEbHFOYVNnRmd5N1R3ZVlrdk9tTW40cVNjc0hxdkozekdPQWlhZndhaDF2VUhmQ2xYUjgrYXhPMmlHT1VGMEpLclo5WVlqYkFhNS80SENsdjdqRlBPZE1XVE9ReW5nb2lIQXMzamt1WWpwQ0xGbEI0Vk9pM2Qxd2pBMXBuVGRCS2tBYjd0OG5UdncrL1hiRnZjUWE3M1ZIN3Nqdm9CcUQzZmRNZlJjdVZxNHFVWnRaVDZjR2FnVEhENjFUdHFoOW9NQ1pYY0RiUjFQR1puTmJxeWNzV1BESUswbnBtSzMvM2xmVjhjK1pzcnk2ZTE3MG1mSk1acDdPOG02Q1N6Ni9WTEsreURKZDc4NDF3cG1lS1RmNkluWkE9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFRd0FBQUFnQ0FZQUFBRG5sVVpxQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUVuUUFBQkowQWQ1bUgzZ0FBQUFaZEVWWWRGTnZablIzWVhKbEFIQmhhVzUwTG01bGRDQTBMakF1TWpIeElHbVZBQUFLMUVsRVFWUjRYdTFkRFhBY1pSbStOT0FmS29nNldPMFFjcmVYM083MVI0MW9IZFNxcURBT2czK2NZRVhCb2xYUlRFbjIyMHRhS1RjNjRtZ0JxekJpRVVWcEJkcWl3d2hxU2RJUzJ1cFlTZ3ZSdHBUU2NrbGpXekhhZ2pwU1JkcjR2THR2anJ2azI3dmR2ZDFMam43UHpETjN0L2QrNy90K2Y4Lys3OGFLME5EYWFyMnFPZFhab3FXeUg5UjBhMEZjdDY3V2RIR1Rab2pWQ2NQcVNlalcxb1F1SHNPeS9lQlRzRG1NLzU0WlQ5aitMV0dJZzdEZkIvc0JjRFBzZjRYZlA4WDNiMnVHMVpIUXpVOG1VdUtkeVdUSG01cWFjaS9qSEFLQnlpZjBiQnIrTHdhWElQWVBrTWRxZkw4WGRXcGxzMUFBMzEvUWpPdzk4TDhTOWI4QlhJUjIrbkRjNkRvemxzazBzbG5rUU14a1BHWE85RUp0Vm5ZR0Y0c1V5Vm5kOFVUYWVwOGJ3KzZMYWtCajVpemRiTkpTMXJ4RVdueVd4ZzM2RW1QZFdvUFBEZWpmN2VBVEdNc0hhRHpUdUM2aGJqME4vcFhtQXNydWdzMFdMUDhOdUJKalpKbVdFbGNsMDltUEoxSm1XMHRMNSt1aUhCdUdrWHNsalg4N25pNEV6Vm5rOUF2a3NRbjU3RVNkaHJCOEJNdVBqT1dQLy80T0hzUi9lN0Q4WWRUbGZ0UmhGZmdkTEc5SHUxd0FmenI1NWpBT2tpUUtodlZiR0I2QzAvL2krMmlOZVJ4OEZnbnZSZnhmYWluelNrN05FMGlJVVBiZjQzd1dtTlROZDdCcEtFQTdMWmZGQVk5enAzeVpUU01EaVFWaS9VK1NnNVFZQUlmT21HMmV3c1VqQS9yaFc3TDRCZXJtajloMFVvQjJPQitUWlRXNEIvazhPeUcveUNpT29XMUlZSDZIOFhQejlMYmNLemlsUUdocE1admhaeUhHd0czZzQyQms4NVo4bzkwRzhYME5pU3MxSXYyUUdrOEtkV3N6dDRzbklQOFJxUjltRFFYRElkWlNiQm9aMElsM1MyT1haWFlwRjQ4TVUxNHduSzFiZVc0MXBMM0ZFUUNKbFBWV3RERzJmdXlWck5SM3RCVGRTakI4WXJJRm95VnRubzJPQ3pCZ3hETkJCNnBYS01Id3hpRDlnSzNLYzZQY2t2QkdKUmkrTWNtQzBZRDRmZEs0WG9oOVcvWVRDWlJnZUtOdndjaGtHdEcyZTJXK2Frc2xHTDR4bVlKQmF4bHBUSStrTlJRZG1HUjNvVU1KaGpmNkZRdzZjQ3J6VTN0Q01MRFd1UXNkM1IrQXczS25CUTVLeW5qaGpkeE9ubkRpQ0VadUdqcnNZV2xNSnRwaVdVSzNCbVQvRmZFdWRoZzZVUGU2Rmd6MGJSNmZhNk1tblkza2xEd2hhWWpMVVU2ZXMyN3QwZ3p6bTdWZ1V1OTZENmZrSHhDYTYyVVZHQ01xOGcwMmpSUW5pbUJvUnZZaWFUd20ybnRmVzl2Q2s3VzBkWUhzL3dKMTYzazZlTVp1UTBXOUN3Ykc5SzFzT3FXQXZJVTBYNXRpRFp0TmJTakJjR0VFZ3RIV2Rzdko4RTJuQXVVeGlicDVoV005Mm9EZjJ5YjhYMEt4M3JFTkYwb3dvZ0htMGhKcHZqYVZZUGpDaVNBWWliVDFlV2tzSmliQ2svUG01VTVpYzhyeFFwbGRNUlBwN0hsc0hocVVZRVFESlJnaDRzVXVHSFNSRCtwSVYrVEo0eEgxTEc5ZGpDSFRpTWxSNFZpRzJFN0hSYmhBS0ZDQ0VRMlVZSVNJRjd0Z29KMnowamhNdEhPZWpsMndlUUZZL2xHWmZTbkZmRFlQQlVvd29rSENNQmRMODdXcEJNTVhLZ3FHSVM1dlRwdG5oMFhVKzA1Wm5BSkRGQXpENkRnZC9wNld4bUhHRGZGRk5oK0gwUWIwd2FPeU1tT0UrT1VOSS9jU0xsQTE2bDB3MEY2NzQ3cTRwUnBHY2RxYTdrdVI1VXRFSDQ1Z0Rtd0tpL0RaajgvN0lFUzM0ck96ZWFhWXpXbFVoM29SakpvelJNR29PQUVOYTBpMmRUR0dlRXA4VEZKbVBEdll2R3JVdTJDRVFicWhrc09GQnN5bGkyV3hhc1RqNk5kMTJwc1h2NTdUQ1FZbEdDNE1TVEJhVzYwM29vMWRiNnF6cVZ0ZlluTTU2QXBCdzlveG9Wd1JNWWxHTkszOTFWeWlLaWpCaUVZd21sUGRMYkpZdFNUYTdxSGlBK3Urb1FURGhTRUpCdHB2aGRUL0dIV3h2OXpXeFJpMHRQaUV0SHdKeGJWc1hoV1VZRVFqR0hSd0d1T2gwZ1Y1a1RPZU1pL2hoUHhEQ1lZTFF4Q01zMXF0Vmd6dThyZXZweXlQandId3NwVmgvU3VWV2pLZEN3U0dFb3lvQkFPNXA4MzNvcCtlazhXc0ZkRit3YThTVm9MaHdoQUVBMzdXVFBCYlJIVGNBZXhHdkpUTkhmUU1OY2Y2QnMrUDllYm54ZnFlUEpXWDJrQ1p6SGdmRXhqQ0dRSWxHTkVKQnNGK0VKRXVkc3ZpMW9iaVQ1eUtmOVNOWU9qV1pqVHlmYUhSdWQ5QUhvdFlwV0E0TnhxSlkxTGZUTlQ1SzJ3ZWk2MGZNaUFVRDRLakJmYm1qOGI2OHN0ajJ3N2FEMnFoZlUvMHh5NlpyekhTMnF1bHBUTmwrd3lJdWhjTWpCVTY2MVFObTJjdVBvUERSWVRSQmpwYlIyTUFPVjlIWnpPUTk4L3cvZll3aVBIdGZqZTBidjJGay9DUGVoR01PcnNPby9MdDY3bzFYRGdWdWlFL0J3THhqeEt4S09YRzJNNmR0aTM2dzhPUmRuR1A3VGNna0Z1ZEM4YlV2QTZqbGtpa084K1R0ZzJJTVhTWXpmeERDWVlMcXhBTUw3ZXZvNzd0dG5GLy8wbllrdGdoRVlseEhMcWF6SjJ0akVxYnM5aXlTV1huMnY0RFFBbEcvYU9zWUJqV0FUYnpEeVVZTGd3c0dMbHBLTHRWNnBOSkhWWjRZSExmL25mSkJXSUNoMkhkUUVYaTZld2xNcjhsZEo1SFl0djdoUktNK2tjNXdVRDc3R1V6LzFDQzRjS0FndUhwOUdkS1hNWG1FSXg4dTBRY1hQallhKzB5bVV3ajJ1dHhxZThpb280WDJ2WStvUVNqL2xGaGwrU1BiT1lmU2pCY0dFQXc2SG9LN0E2VW5jaW81OEdtcHN0ZWVCMUQ3OUJYNWVJZzRmM0RwM09wR09MTWwva2Z4eDJ4ekZyZmo4VlhnbEgvcUxCTHNvWE4vRU1KaGdzRENFWWlWZjcyZFdicEpkdzkrODZSaXNONDlnN3VoM1ZoRjRQRjZRbUovMUxxMWdJdTRobVZCQU1UOXU3eDcwd0pnL1RZZlU2aExKUmdWRWFGWFpJSDJNdy9sR0M0MEtkZ3pKNXRuZ0tmQjZTK21Qai8wSXdaSFMvbklnNUdSeHNoQmdOU2tTamxZaTVSQVBydVVsbWNZbUp5L1huRzNIRXhLNkRpRmtaRXhCall5Q21VUlNYQlFEdVBvQTVibzJiU3lMNmRVL0lFM2lxVW5nWU5tMmdEMTdOMCtHOFZwK1FmU2pCYzZGTXc0cnBsU2YwVUVURk5OaTlGei9ETVdHLytpRVFrSFBibU44UzJiWnQ0K2JoemowbjVKM2lCZEZzMWwvQUUxTDJ1QmFOV1RPcmlBNXlTSnlEdjc4cjgxSnllcnk2V1FBbUdDMzBJUnRPYzNHbG9wOE5TUDJQVXhWTmwxL1RyOHEyeHZ2eDY4UGtpc2ZnbmZsOGY2eDkwZlFVbDRuNUdHcStZdWpoeTVxenUxM0NSaWxDQzRZMTFLUmowV2tndEYvd21SU1VZTHZRaEdGNG1HQWFMWVBQeTJEZzBQZFl6OUg3c3BzeU45UXhVZkMwaVhmeUZQdG9uaTFsTUdxeGNwQ0tVWUhoajNRa0d4Q0twVysvbWRJSkJDWVlMUFFvR3ZZUWE5dVhmNzFscDY2SktsSHQ4L1FzVVIrMFhUWHVBRWd4dnJBL0JvTGZyMlFmSHIvR3psZW1LS1NNWXVua0hUU3pFbEw0K3NGYUNnZm8rQis3V2pPem4yTFFzbk5jR2lEMVVUdWJQb2RuRjVwR0F6cGdndnV0V0J1cjZIN3RPdXJpVWk1UUZYU1dLTXQvSEJONUVheVhVcit3OU1jRXBqdkdLNHZmSWJ3VmR3OElwbEFXTkJaUzVEdldoTjVYbjRlZG9xZDhvaUZ5eDJ3aytpdS8wSXVpbDlLd1RUc2tUNG1seER0cnpSbTVYalBVbzJwWGU2RzQ5Z2p4dncrZkNoTkdoY2Zod1FDOWphVExFRzl4b0dGZVd2aVkrVXVTbTJRK2NvWGR5Nk5ZaU5Pd3lWUHJIR0JoM0pvenVVQ3NlVDVtWFFmRi9qaGcveE9mWE5kMjhnam8wYUgzcExBbE5OR2R0TDVZaTU1dlFnYmVqNCs2Zy85Z3NNcUFPSDNIYVNmd0ViWGNEdm1lVGh2VXBUZTk2eTRRek03NlFtOVkwWjlGcGRQY202dk5wc0F0OXN0eHBPK3ZYNEViRTIwb1RDY3NHU29ubCtCL2Y2V2EvVmNWNTBhU1B4N3RPRGVFQnhnMTB4eStka29YZ2ZBZ3hGaURlMTlBTzMwTS9yRVFPOXlMbUE0aS9CYiszbCtibmtQSUhONFByVUwrMStGd0IyMnZob3gxaWYxRzgxWHBidkEyNVpqSytyMmx4UjI0YTFkOFJQekVmdXdvV2NzRVdpSk16WWorSTN3K1Z0S3NoSGdIL0FQWlNucWpUemZpOHhoNjd1blV1UGRyQTI4TnhZckgvQXozdEk0ajUrVE9MQUFBQUFFbEZUa1N1UW1DQyIsInN1cHBvcnRlZEV4dGVuc2lvbnMiOlt7ImlkIjoiaG1hYy1zZWNyZXQiLCJmYWlsX2lmX3Vua25vd24iOmZhbHNlfV0sImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIkZJRE9fMl8wIl0sImFhZ3VpZCI6ImI1MGQ1ZTBhLTdmODEtNDk1OS05YjEyLWY0NTQwNzQwNzUwMyJ9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMS0wMS0wNiIsInVybCI6Imh0dHBzOi8vd3d3LnRoYWxlc2dyb3VwLmNvbS9lbj9nY2xpZD1DajBLQ1FpQTNOWF9CUkRRQVJJc0FMQTNmSUstenhpTlUxcVE5Z20tU0p0UXUyVUx1WXV4SnRVb19ZbGp6WGI1a2JZNTEweHV1Sm9jWEV3YUFwajVFQUx3X3djQiIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiSURQcmltZSAzOTQwIEZJRE8iLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDIwMTExODAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4xLjEiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMyJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMC0wNi0xNiJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjEtMDEtMDYifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyIzZTJjNDJhNTllODU1MTNmOWVkYWM4Y2Y3NGMzOTUzZjU3OTNkYWI2Il0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjNlMmM0MmE1OWU4NTUxM2Y5ZWRhYzhjZjc0YzM5NTNmNTc5M2RhYjYiXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ik9uZUtleSBVMkYgQXV0aGVudGljYXRvciJ9LCJkZXNjcmlwdGlvbiI6Ik9uZUtleSBVMkYgQXV0aGVudGljYXRvciIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyLCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjJ9LHsibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNtRENDQWo2Z0F3SUJBZ0lJVU8zclZadytZSXd3Q2dZSUtvWkl6ajBFQXdJd2daY3hDekFKQmdOVkJBWVRBa05PTVJBd0RnWURWUVFJRXdkQ1JVbEtTVTVITVJBd0RnWURWUVFIRXdkSVFVbEVTVUZPTVI4d0hRWURWUVFLRXhaUFRrVkxSVmtnUjB4UFFrRk1JRU5QTGl3Z1RGUkVNUTh3RFFZRFZRUUxFd1pQVGtWTFJWa3hGREFTQmdOVkJBTVRDMDlPUlV0RldTQlNUMDlVTVJ3d0dnWUpLb1pJaHZjTkFRa0JGZzFrWlhaQWIyNWxhMlY1TG5Odk1CNFhEVEl6TVRFd056QXpOVEV3TUZvWERUTXpNVEV3TnpBek5URXdNRm93Z1pjeEN6QUpCZ05WQkFZVEFrTk9NUkF3RGdZRFZRUUlFd2RDUlVsS1NVNUhNUkF3RGdZRFZRUUhFd2RJUVVsRVNVRk9NUjh3SFFZRFZRUUtFeFpQVGtWTFJWa2dSMHhQUWtGTUlFTlBMaXdnVEZSRU1ROHdEUVlEVlFRTEV3WlBUa1ZMUlZreEZEQVNCZ05WQkFNVEMwOU9SVXRGV1NCU1QwOVVNUnd3R2dZSktvWklodmNOQVFrQkZnMWtaWFpBYjI1bGEyVjVMbk52TUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFQTl2TUxKUURtbnpmVGZDRUUzM1lFK05SNmhacnh5ejlURm9FazZVbzl4Uzd4dTh4TmdlNS9NblRnM0VYd2ZkSmlNUVVkWEhIdDNjV0FFR005cWJzSktOeU1IQXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QWRCZ05WSFE0RUZnUVVaY3VmU3pXQW1WQUp0dEFyVlFyYkdnVkYvdWt3Q3dZRFZSMFBCQVFEQWdFR01CRUdDV0NHU0FHRytFSUJBUVFFQXdJQUJ6QWVCZ2xnaGtnQmh2aENBUTBFRVJZUGVHTmhJR05sY25ScFptbGpZWFJsTUFvR0NDcUdTTTQ5QkFNQ0EwZ0FNRVVDSVFDREZCWE1LRVdQZHdGY3lac0RDN3VlUVNLQjVCbHJneU02S2pXRFdSdjZKQUlnSDhXSUpOaFpxVmZjMUxZaUkrSVRIWS9QbDlDNUJvQVZVb3Y3dk5wd0dPMD0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBR0FBQUFCZ0NBWUFBQURpbUhjNEFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFjVVNVUkJWSGdCN1ozUGJ4TkhGTWUvczNhTW9FRVlVVkdCVkdFT1VGV3FoQTBrb3BmR09WT0o1RlF1VllMVUhucEtxTlFlRzZmL0FQVEVvVWc0VWcrOUVkVDJWaW5PaVNvSnhad3FVYlU0VWdXdFZCUWpVQ3NTZTZmejFoZ1YvMGc4c3pPemEyYytraFhIV1NmeCs4NjhlZlBlekN6Z2NEZ2NEb2ZENFhBNEhBNkh3MkVOaHJoeU41dkcxbEFHSHNzQVBBMHV2akx4bFhrSHRuMGY5NStJYTZ2aTJnM3g4ZGJGOTFVa2EyWGt5bFhFa0hnSVFNYXVwL0xDZXVMQmpvbi9LZ3VPRExUQ1NZQ3llTndUZjZPRXhDYUpVa0hFUkNmQTNYTVorUDRVZUdEMFBLSkJDTUtYNGFPSTBkVXlJc0MrQUd1akUrSkR6MFJvOUc2VWtjQlY1RllXWUJGN0FxeU5USU94T2YydVJUTWNGU1JSc0NXRWVRRld6K1hoK1RkaWIvaFdMQWxoVGdBYVdQMGgwZUxaTFBvWnhvdnd0dVpORGRobUJMaWR6V0FvZFZNOHkySVFDSHJENXJnSkVmUUxRTVpQcFpiNnp1WHNUQlUrSDljZExla1ZZSENOMzBTN0NQb0VHSHpqTjZtS1NWeE9senZ5b0l2ZFlYd2lqWnI0ckJSa2FFQ1BBSGRHNHgvZjY0U0p6MXBQM1lBR3dydWdSc1R6QUx1VFNaeGRXVVFJd3ZjQWNqMjdGWTRyWVYxUkVtR2c5SUlGMTVOSkhlbnB1bXI5bVhnOGhUWElGZFZTTk5Fc1FKRndMdWpPNkFQVEFxUVQrN0dSL2JHbmF5OVZ2a1R4OFErd0RFVkZ4MVhyRGVvdWFPM01oSTNXUDVGK0R6RkhSRVY3cHFGSWlERWdNUVVMWEVpUElmWXcvd0lVVVJPQUloL1JPR0VZY2o4VC9TQUExVFpXeithaGdKb0FRME41V0tBUDNNLy84UEpRUURFS1lzcGRUb2J5UDc5aS9QNG5iYTh2bmJ5RzJPR0JYSElCa3FpR29YbFlvUHp2ZmZRTkZKRFFuRUF5R3BKM1FRMWZweVVQTW5EVWg2VEhSWVV4SURFWVJSWWplTksya1JlQThYNElTeUxDUHdWSkZIb0F6OERSQldhaEJ5ajhrVjFFT2xod0pvR2NBSnFLRUFQTlZsM0tSbklDMUpLdTllK0VKN2NTUkU0QVdwM3MyQjd1R2V3QjhKd0FPeUxYU09WbXdzRWFmVVJPdDV4L1pmTVJJc2RqeDJRdUQxY1Jpd2dxdkF3S2ZTa0FRYW5xZEdJNGVHNjlGS2tSU1JlRVNGMVFmdmcwSmc2TzRjS0JNV1QydkZvbkpnRktUMy9HZ25CUGk5VmxSQWIzTXpLWDkwVVB5TzQ5Z1N0dmZvcjgvdE5kcjJrV2IraEJZd0c1S1JJazd1aGJHV2VJbWNNWHNmVFd0VzJOM3dxdG9xQ2F3ZHlSanhGM1l0MER5SUNGb3g5QmxlWjc1eDk5amJnaU9SRkRCWllnZngvRytFM29kOHlLWG1RTnpwN0lYQjdiSG5EaitCZGRmMGJ6Z0Z0aW9HMVd6TWpsVEI4Nmo2bEQ3M2U4Zms2SVFPK3hFaWw1YkVQbThsZ0tRTWJzdEJxdThsd01ydXZ0Z3l1OVRxOFZIbDRQZkg5cmhFUURkT0dJNkFsL1hFSGNrTTBGVldDQnVhUHRnMmUxOWpRbzBHOFgyVkQwUTllUUlLMU12WDQrRU1JNFBsK1h1Vnd5Q3ZLTmIvZlA3ajNac2ZYUC8zbTlwMVJERUlLdXQ4K1V5ZmhqKzNNd0R6TllsUGU5Q2d5VDcyS2s0dCs5ci9ta1h0TEozNDhQbjRGeGtuV3BwZnB5QXRRVHhudEFKemZSemFEYmNXdWpmVFo4SUduQkJkVWdGUVhKQ2ZEdVR4WFFhdUErcGRkbDdxR2drMWtrVUNuS1YyQ1padEpOaGs2dDNVSzZ1bXArWVpiUDdzRWduWXlVM1hkU09vS2g5N1N5L3Z3aHpNS2x0NjhxckF0aVJvOTE2Ulptemg3K0FMM1NiUjVSZW1ZNk9lZEpOMDU1QWJoZmdrR29COUNpM0ZabTNyZ29XdldKSGQ5UGh1ODBqMmhPMW95U3FFdnZsNU1Yb0xGTDNPaEF2UEQ0dTdiWHlBWFJMSGRLdE81dVVQNklNcWZSdEg0aUtkMEQxTW9yYTZOMEVJZlJEUm9QM2xsc1N5azBvWlpjZlB3OTFsK01GMlJ3eWdOMVMxbFQ2dzlteUVZSFllSC96NjVLei9UVWNrR2NMWXUwaEZFQkpuLy9ESGZmL3Fiano4alFNdldCZ2toSG00K0FQS1V5bkZwQkp2bThDTU51aU1ZQkhjVjNxZ1VzMk5nNTZmdEZLS0FtUUJEcmNxUFJFRUVwNU1uZlB1K1lYTnNKU3Q1ZEZ0bFB5cENhUjloQzhRUVY5WklrNS9Pd0FCWFl5WDh2Q0ovZkt6Ukc1SDc1RUZmLytoWldTTENyVUNUY0dvZTFrU1dicHgvU1lEc3J3dEZUSW1QYU9nYVF5MXArZGljUXpHb3huazdUR2xrNURrWENDVURibFpnWDJWa1J3ZHFnNUxDU2k5SkdBdE5oRHZZTHY4ckhjaStJRlNGYlB4RitXWXFQeTlpdEpOVVA2V2dTWGdBYS9UbXNETWl4Z3JHaWpqTkY5U3pNR2xrcGlQNVl3bTZCWEkrM1YwdlAxN2N5Yml0eHllYTZvY2dJemhEMXhwRXJhWm1JNmhPQXFtV2I0aDhiYUJGNFZjeC9KcEVMS29OYTBMczJkSkJGb0pidkkrWUh0emE1ZlM2RG9mck5nZG5TK3RMdDZHdjVUY3lzanFhZVFLblpnWWlPMkZkSTdzdVpNSDd3MjJFYTZnMHB2LzhPZGFWV0QvOFNSdFpLTUlpN2dVTXJBM2NEaDFZYSthTVpXRGp5VEE2YXh3aDNFL0lnVmxtaTIvSFZHS2p6NGhtZE5DVUdhMlo1RC9MTHV5b3RJdkhhZ3E2NFhwWVk3UHA5UWRBejJLbEdZbzlPWk5FY1FWRm96SU83SnBWRUxIOFB5ZUZ5VkVaLzlkK0tNM1R5U0szV3VJRWJ2R09pRm4wd2VMM2JabWlPSjhLNEwyN2lGandYL2p4Wk1SWEJPQndPaDhQaGNEZ2NEb2ZENFhEMEdmOEI5V04yL2xkcWkzRUFBQUFBU1VWT1JLNUNZSUk9In0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTA3LTE1In1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNC0wNy0xNSJ9LHsiYWFndWlkIjoiOGM5N2E3MzAtM2Y3Yi00MWE2LTg3ZDYtMWU5YjYyYmRhNmYwIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI4Yzk3YTczMC0zZjdiLTQxYTYtODdkNi0xZTliNjJiZGE2ZjAiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiRlQtSkNPUyBGSURPIEZpbmdlcnByaW50IENhcmQifSwiZGVzY3JpcHRpb24iOiJGVC1KQ09TIEZJRE8gRmluZ2VycHJpbnQgQ2FyZCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUIyRENDQVg2Z0F3SUJBZ0lRRlo5N3dzMkpHUEVvYTVOSStwOHoxakFLQmdncWhrak9QUVFEQWpCTE1Rc3dDUVlEVlFRR0V3SkRUakVkTUJzR0ExVUVDZ3dVUm1WcGRHbGhiaUJVWldOb2JtOXNiMmRwWlhNeEhUQWJCZ05WQkFNTUZFWmxhWFJwWVc0Z1JrbEVUeUJTYjI5MElFTkJNQ0FYRFRFNE1EUXdNVEF3TURBd01Gb1lEekl3TkRnd016TXhNak0xT1RVNVdqQkxNUXN3Q1FZRFZRUUdFd0pEVGpFZE1Cc0dBMVVFQ2d3VVJtVnBkR2xoYmlCVVpXTm9ibTlzYjJkcFpYTXhIVEFiQmdOVkJBTU1GRVpsYVhScFlXNGdSa2xFVHlCU2IyOTBJRU5CTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFbmZBS2Jqdk1YMUV5MWI2aytXUVFkTlZNdDlKZ0dXeUozUHZNNEJTSzVYcVRmbysrMG9Bai80dG53eUlMMEhGQlI5U3Qra3RqcVNYRGZqaVhBdXJzODZOQ01FQXdIUVlEVlIwT0JCWUVGTkdobUUyQmY4TzVhL1lIWjcxUUV2NlFSZkZVTUE4R0ExVWRFd0VCL3dRRk1BTUJBZjh3RGdZRFZSMFBBUUgvQkFRREFnRUdNQW9HQ0NxR1NNNDlCQU1DQTBnQU1FVUNJUUMzc1QxbEJqR2VGK3hLVHB6VjFLWVUyY2thaFRkNG1MSnl6WU9oYUh2NGlnSWdEMkpZa2Z5SDVRNEJwbzhycm9PMEl0N29ZakYya2d5L2VTWjNVOUdsYXF3PSIsIk1JSUIyRENDQVg2Z0F3SUJBZ0lRR0JVclFiZERybTIwRlpuRHNYMkNCVEFLQmdncWhrak9QUVFEQWpCTE1Rc3dDUVlEVlFRR0V3SlZVekVkTUJzR0ExVUVDZ3dVUm1WcGRHbGhiaUJVWldOb2JtOXNiMmRwWlhNeEhUQWJCZ05WQkFNTUZFWmxhWFJwWVc0Z1JrbEVUeUJTYjI5MElFTkJNQ0FYRFRFNE1EUXdNVEF3TURBd01Gb1lEekl3TkRnd016TXhNak0xT1RVNVdqQkxNUXN3Q1FZRFZRUUdFd0pWVXpFZE1Cc0dBMVVFQ2d3VVJtVnBkR2xoYmlCVVpXTm9ibTlzYjJkcFpYTXhIVEFiQmdOVkJBTU1GRVpsYVhScFlXNGdSa2xFVHlCU2IyOTBJRU5CTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFc0ZZRUVoaUp1cXFuTWdRalNpaXZCalY3REdDVGY0WEJCSC9CN3V2WnNLeFhTaEYwTDh1RElTV1V2Y0V4aXhSczZnQjNvbGRTcmpveDZMOFQ5NE5PenFOQ01FQXdIUVlEVlIwT0JCWUVGRXU5aHlZUnJSeUp6d1JZdm5EU0NJeHJGaU8zTUE4R0ExVWRFd0VCL3dRRk1BTUJBZjh3RGdZRFZSMFBBUUgvQkFRREFnRUdNQW9HQ0NxR1NNNDlCQU1DQTBnQU1FVUNJREhTYjJtYk5EQVVOWHZwUFUwb1dLZU55ZTBmUTJsOUQwMUFSMitzTFpkaEFpRUFvM3d6Njg0SUZNVnNDQ1JtdUpxeEg2RlFSRVNOcWV6dW8xRStLa0d4V3VNPSIsIk1JSUJmakNDQVNXZ0F3SUJBZ0lCQVRBS0JnZ3Foa2pPUFFRREFqQVhNUlV3RXdZRFZRUUREQXhHVkNCR1NVUlBJREF5TURBd0lCY05NVFl3TlRBeE1EQXdNREF3V2hnUE1qQTFNREExTURFd01EQXdNREJhTUJjeEZUQVRCZ05WQkFNTURFWlVJRVpKUkU4Z01ESXdNREJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCTkJtclJxVk94enRUSlZOMTl2dGRxY0w3dEtRZW9sMm5uTTIveVlndmtzWm5yNTBTS2JWZ0lFa3pIUVZPdTgwTFZFRTNsVmhlTzFIamdneEFsVDZvNFdqWURCZU1CMEdBMVVkRGdRV0JCUkpGV1F0MWJ2RzNqTTZYZ21WL0ljak50Ty9DekFmQmdOVkhTTUVHREFXZ0JSSkZXUXQxYnZHM2pNNlhnbVYvSWNqTnRPL0N6QU1CZ05WSFJNRUJUQURBUUgvTUE0R0ExVWREd0VCL3dRRUF3SUJCakFLQmdncWhrak9QUVFEQWdOSEFEQkVBaUF3ZlBxZ0lXSVVCK1FCQmFWR3NkSHkwczVSTXhsa3pwU1gvelN5VFptVXBRSWdCMndKNm5aUk04b1gvbkE0M1JoNlNKb3ZNMlh3Q0NILy8rTGlyQkFiQjBNPSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFGQUFBQUFVQ0FNQUFBQXRCa3JsQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUJIWnBWRmgwV0UxTU9tTnZiUzVoWkc5aVpTNTRiWEFBQUFBQUFEdy9lSEJoWTJ0bGRDQmlaV2RwYmowaTc3dS9JaUJwWkQwaVZ6Vk5NRTF3UTJWb2FVaDZjbVZUZWs1VVkzcHJZemxrSWo4K0lEeDRPbmh0Y0cxbGRHRWdlRzFzYm5NNmVEMGlZV1J2WW1VNmJuTTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlrRmtiMkpsSUZoTlVDQkRiM0psSURVdU5pMWpNREUwSURjNUxqRTFOamM1Tnl3Z01qQXhOQzh3T0M4eU1DMHdPVG8xTXpvd01pQWdJQ0FnSUNBZ0lqNGdQSEprWmpwU1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJajRnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJZ2VHMXNibk02ZUcxd1BTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGh0Ykc1ek9uQm9iM1J2YzJodmNEMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzl3YUc5MGIzTm9iM0F2TVM0d0x5SWdlRzFzYm5NNmVHMXdUVTA5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5dGJTOGlJSGh0Ykc1ek9uTjBVbVZtUFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdmMxUjVjR1V2VW1WemIzVnlZMlZTWldZaklpQjRiWEE2UTNKbFlYUnZjbFJ2YjJ3OUlrRmtiMkpsSUZCb2IzUnZjMmh2Y0NCRFF5QXlNREUwSUNoTllXTnBiblJ2YzJncElpQjRiWEE2UTNKbFlYUmxSR0YwWlQwaU1qQXhOaTB4TWkwek1GUXhORG96TXpvd09Dc3dPRG93TUNJZ2VHMXdPazF2WkdsbWVVUmhkR1U5SWpJd01UWXRNVEl0TXpCVU1EYzZNekU2TlRrck1EZzZNREFpSUhodGNEcE5aWFJoWkdGMFlVUmhkR1U5SWpJd01UWXRNVEl0TXpCVU1EYzZNekU2TlRrck1EZzZNREFpSUdSak9tWnZjbTFoZEQwaWFXMWhaMlV2Y0c1bklpQndhRzkwYjNOb2IzQTZTR2x6ZEc5eWVUMGlNakF4TmkweE1pMHpNRlF4TlRvek1Eb3lOeXN3T0Rvd01DWWplRGs3NXBhSDVMdTJJT2FjcXVhZ2grbWltQzB4SU9XM3N1YUprK1c4Z0NZamVFRTdJaUI0YlhCTlRUcEpibk4wWVc1alpVbEVQU0o0YlhBdWFXbGtPakpGTnpGQ1JrWkRRelkzUmpFeFJUWTVOemhFUVRsRFFrSTJORFl6Umprd0lpQjRiWEJOVFRwRWIyTjFiV1Z1ZEVsRVBTSjRiWEF1Wkdsa09qSkZOekZDUmtaRVF6WTNSakV4UlRZNU56aEVRVGxEUWtJMk5EWXpSamt3SWo0Z1BIaHRjRTFOT2tSbGNtbDJaV1JHY205dElITjBVbVZtT21sdWMzUmhibU5sU1VROUluaHRjQzVwYVdRNk1rVTNNVUpHUmtGRE5qZEdNVEZGTmprM09FUkJPVU5DUWpZME5qTkdPVEFpSUhOMFVtVm1PbVJ2WTNWdFpXNTBTVVE5SW5odGNDNWthV1E2TWtVM01VSkdSa0pETmpkR01URkZOamszT0VSQk9VTkNRalkwTmpOR09UQWlMejRnUEM5eVpHWTZSR1Z6WTNKcGNIUnBiMjQrSUR3dmNtUm1PbEpFUmo0Z1BDOTRPbmh0Y0cxbGRHRStJRHcvZUhCaFkydGxkQ0JsYm1ROUluSWlQejQ3N0pYRkFBQUFZRkJNVkVYLy8vOEVWcUlYWmF2RzJPb3FjTEcyek9Pa3d0MEJTSnRxbGNYVjR1K2F1dGxXaGJ6azdQVUFNWTlIY3JLanROYnE4ZmVBbDhhQm9zeno5dnBkanNHR3F0RjNuOHVUc05TWnBjNkpzTlQ1K3YweFlLbnU4UGZmNS9MNDhmZy9mcmljekpnWUFBQURBRWxFUVZSNDJrUlVDWmJESUFqRlhaT1kxVGF0TmMzOWJ6a3NTWWMzcjRNRTRmTUJBYUQ2emw4eS85VE9nZXQ4ZDVqZk43OGJ3TS9kRENScFI1MjF6WGZvakhKMDVJSXloQkFVU1ZBT05kR3pCWXQyZjdLRnJma0phQWtIaDlGWmhjRFhIUmtUS285TUxpaEdhYXZJbW5WM3F5RVgwRXByZ3ovNER3VUQ3a0NIUm5kOFFGTjQzR280VVZtRERnemE0dzI3b2l6ZEEyK2NLK3V1VXBqam8yK3h3Yy80Mlc1MHg1TEdZZURCc1IwSFZJeDV4OGlGNjBDYmxiVEVFa0ZyMjdiTkRCVVZTcTFPS1ZQYkU2MmIzRUg4RnFCZzVPT09FdWMydDhaSmlxTU91R3ArY0tqZzd3VkdjZW96cU40cHhnVlBRa2pGWWdiVkpLRFVoRENqWXJhd1A1cTRFVGdDOWZJTVJIdGl0cFFjQ3ZKT0VMY2JNc1FnbmNpUmtsanB5UWp2RzQ0anFCVUVURmlCaTFQRUl5ZWtPenNXK1R5NWNMSG9zNVIrZE1TMUx0U1N4ZjNnUUhjelIyQ0k0Z01OcFc0SVJBMVFNYTZ0SjQrQzZ1SHVHRThtTkRJeUZxZy9PUC9NTVV1ZVM2SXE4UzkwZEFlQkpTRXkvcUtrSytCTnd6OGNZWTRqYjVKNnU0aVdDSTJCMVo1NkxXNWtFYzRoa2RNcHN2VUM1NTg1U1gwUXViY2dOcXlmZ0RGRWNUdCs0MC8wUzVOeDB3YUN3M09La2NPYkE1SW4wQVlwMDFwamp3Mm42MjZVRGp0SHdhMjhpSHVUS3F0cnYrcmVXNDFOWjZpR2xyN3V1TEpDZmtGdGN0Y0cwNHNnbTFlTlMrWmFEbnBhVEVyR295WDVKSzJpTXo4eHMwbk93V0djUERONDlxYUNkNGJ6Sm96RFptL2FCSytFb3pMdytYaE5CaVl3SGYwc2lPdTFYUGtHL3pLd3ZxWUtjZlN3REVjSC9vVWUwN2VzL1dROHJJeWcyRE9Yajh0amtaZHVEQi9iOGh6RGxsTU1PQ1M1QkVuZDUzNGY4dGkzVVpjNGtNczN4THlhZk1Tc0poZEc4WFBxak5rNXRBZ08yNWZlS0NoblZkRGovSjBGTWtPc1UveE1CdjB3RmhZZUVHZlZIMTNmdURVMHlERkxhNGZjN1JuV0hCZnVURlYydEVtTndhZGM3YWMzVVkyamZCbDdIVDM2ZmUzNGlRTzVtTkNGRkJXMDdLalBncWhPTFUwMXZaOFB1ZVoySkNsRlpOOGprVXM2OXVrYTllUHA2K0VmTDRBRjUrTnl3U2Jpckh0Y0I4TWwvZ2t3QUVqa0s2NEtqSFBlQUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzFfUFJFIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiI4Yzk3YTczMDNmN2I0MWE2ODdkNjFlOWI2MmJkYTZmMCIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwidXYiOmZhbHNlLCJ1c2VyVmVyaWZpY2F0aW9uTWdtdFByZXZpZXciOmZhbHNlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWV9LCJtYXhNc2dTaXplIjoxMDI0LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0Ijo2LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjk2fX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjAtMDQtMjQiLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IkZULUpDT1MgRklET8KuIEZpbmdlcnByaW50IENhcmQiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDIwMDQxNzAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4yIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjMifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjAtMDQtMjQifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIwLTA0LTI0In0seyJhYWd1aWQiOiI5OWJmNDYxMC1lYzI2LTQyNTItYjMxZi03MzgwY2NkNTlkYjUiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6Ijk5YmY0NjEwLWVjMjYtNDI1Mi1iMzFmLTczODBjY2Q1OWRiNSIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJaVFBhc3MgU21hcnRBdXRoIn0sImRlc2NyaXB0aW9uIjoiWlRQYXNzIFNtYXJ0QXV0aCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjo0NSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9LHsibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDVnpDQ0FmMmdBd0lCQWdJSkFKTWM4VzFJT1NOaE1Bb0dDQ3FHU000OUJBTUNNSUdHTVFzd0NRWURWUVFHRXdKVlV6RVJNQThHQTFVRUNBd0lWbWx5WjJsdWFXRXhFREFPQmdOVkJBY01CMEZ6YUdKMWNtNHhGVEFUQmdOVkJBb01ERnBVVUdGemN5d2dTVzVqTGpFaU1DQUdBMVVFQ3d3WlFYVjBhR1Z1ZEdsallYUnZjaUJCZEhSbGMzUmhkR2x2YmpFWE1CVUdBMVVFQXd3T1dsUlFZWE56SUZKdmIzUWdRMEV3SUJjTk1qTXdPVEUwTVRBMU5UQTJXaGdQTWpBMU16QTVNRFl4TURVMU1EWmFNSUdHTVFzd0NRWURWUVFHRXdKVlV6RVJNQThHQTFVRUNBd0lWbWx5WjJsdWFXRXhFREFPQmdOVkJBY01CMEZ6YUdKMWNtNHhGVEFUQmdOVkJBb01ERnBVVUdGemN5d2dTVzVqTGpFaU1DQUdBMVVFQ3d3WlFYVjBhR1Z1ZEdsallYUnZjaUJCZEhSbGMzUmhkR2x2YmpFWE1CVUdBMVVFQXd3T1dsUlFZWE56SUZKdmIzUWdRMEV3V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVNKKzYxTEpmOTYwLzBDenZqZFMxTXVla04vMy9ONURYeDhRK05MdDZvaDlOZE9EQVRUeWpSQ0M4MGVuQzZyeVJRclAxakVlQVR0bUtKcVBUSnBBR1p6bzFBd1RqQWRCZ05WSFE0RUZnUVVsUTY4Q2p6Umt5MnhjQkwvYzQ3enA2alErTE13SHdZRFZSMGpCQmd3Rm9BVWxRNjhDanpSa3kyeGNCTC9jNDd6cDZqUStMTXdEQVlEVlIwVEJBVXdBd0VCL3pBS0JnZ3Foa2pPUFFRREFnTklBREJGQWlCYkhhQXk5VTZGUkxuSnVsSFA3NmRGN1Zpc0s3SEMwU3BLRHZyVjlMdGpVQUloQUxaS3NJNU1YUnkyQzJmOTFYYUloZk93TUJlSjVQTGhXUmtjZHliVzByNk0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZ0NBSUFBQUQ4R08yakFBQUFDWEJJV1hNQUFDNGpBQUF1SXdGNHBUOTJBQUFLVDJsRFExQlFhRzkwYjNOb2IzQWdTVU5ESUhCeWIyWnBiR1VBQUhqYW5WTm5WRlBwRmozMzN2UkNTNGlBbEV0dlVoVUlJRkpDaTRBVWtTWXFJUWtRU29naG9ka1ZVY0VSUlVVRUc4aWdpQU9Pam9DTUZWRXNESW9LMkFma0lhS09nNk9JaXNyNzRYdWphOWE4OStiTi9yWFhQdWVzODUyenp3ZkFDQXlXU0ROUk5ZQU1xVUllRWVDRHg4VEc0ZVF1UUlFS0pIQUFFQWl6WkNGei9TTUJBUGgrUER3cklzQUh2Z0FCZU5NTENBREFUWnZBTUJ5SC93L3FRcGxjQVlDRUFjQjBrVGhMQ0lBVUFFQjZqa0ttQUVCR0FZQ2RtQ1pUQUtBRUFHRExZMkxqQUZBdEFHQW5mK2JUQUlDZCtKbDdBUUJibENFVkFhQ1JBQ0FUWlloRUFHZzdBS3pQVm9wRkFGZ3dBQlJtUzhRNUFOZ3RBREJKVjJaSUFMQzNBTURPRUF1eUFBZ01BREJSaUlVcEFBUjdBR0RJSXlONEFJU1pBQlJHOGxjODhTdXVFT2NxQUFCNG1iSTh1U1E1UllGYkNDMXhCMWRYTGg0b3pra1hLeFEyWVFKaG1rQXV3bm1aR1RLQk5BL2c4OHdBQUtDUkZSSGdnL1A5ZU00T3JzN09ObzYyRGw4dDZyOEcveUppWXVQKzVjK3JjRUFBQU9GMGZ0SCtMQyt6R29BN0JvQnQvcUlsN2dSb1hndWdkZmVMWnJJUFFMVUFvT25hVi9OdytINDhQRVdoa0xuWjJlWGs1TmhLeEVKYlljcFhmZjVud2wvQVYvMXMrWDQ4L1BmMTRMN2lKSUV5WFlGSEJQamd3c3owVEtVY3o1SUpoR0xjNW85SC9MY0wvL3dkMHlMRVNXSzVXQ29VNDFFU2NZNUVtb3p6TXFVaWlVS1NLY1VsMHY5azR0OHMrd00rM3pVQXNHbytBWHVSTGFoZFl3UDJTeWNRV0hUQTR2Y0FBUEs3YjhIVUtBZ0RnR2lENGM5My8rOC8vVWVnSlFDQVprbVNjUUFBWGtRa0xsVEtzei9IQ0FBQVJLQ0JLckJCRy9UQkdDekFCaHpCQmR6QkMveGdOb1JDSk1UQ1FoQkNDbVNBSEhKZ0theUNRaWlHemJBZEttQXYxRUFkTk1CUmFJYVRjQTR1d2xXNERqMXdEL3BoQ0o3QktMeUJDUVJCeUFnVFlTSGFpQUZpaWxnampnZ1htWVg0SWNGSUJCS0xKQ0RKaUJSUklrdVJOVWd4VW9wVUlGVklIZkk5Y2dJNWgxeEd1cEU3eUFBeWd2eUd2RWN4bElHeVVUM1VETFZEdWFnM0dvUkdvZ3ZRWkhReG1vOFdvSnZRY3JRYVBZdzJvZWZRcTJnUDJvOCtROGN3d09nWUJ6UEViREF1eHNOQ3NUZ3NDWk5qeTdFaXJBeXJ4aHF3VnF3RHU0bjFZOCt4ZHdRU2dVWEFDVFlFZDBJZ1lSNUJTRmhNV0U3WVNLZ2dIQ1EwRWRvSk53a0RoRkhDSnlLVHFFdTBKcm9SK2NRWVlqSXhoMWhJTENQV0VvOFRMeEI3aUVQRU55UVNpVU15SjdtUUFrbXhwRlRTRXRKRzBtNVNJK2tzcVpzMFNCb2prOG5hWkd1eUJ6bVVMQ0FyeUlYa25lVEQ1RFBrRytRaDhsc0tuV0pBY2FUNFUrSW9Vc3BxU2hubEVPVTA1UVpsbURKQlZhT2FVdDJvb1ZRUk5ZOWFRcTJodGxLdlVZZW9FelIxbWpuTmd4WkpTNld0b3BYVEdtZ1hhUGRwcitoMHVoSGRsUjVPbDlCWDBzdnBSK2lYNkFQMGR3d05oaFdEeDRobktCbWJHQWNZWnhsM0dLK1lUS1laMDRzWngxUXdOekhybU9lWkQ1bHZWVmdxdGlwOEZaSEtDcFZLbFNhVkd5b3ZWS21xcHFyZXFndFY4MVhMVkkrcFhsTjlya1pWTTFQanFRblVscXRWcXAxUTYxTWJVMmVwTzZpSHFtZW9iMVEvcEg1Wi9Za0dXY05NdzA5RHBGR2dzVi9qdk1ZZ0MyTVpzM2dzSVdzTnE0WjFnVFhFSnJITjJYeDJLcnVZL1IyN2l6MnFxYUU1UXpOS00xZXpVdk9VWmo4SDQ1aHgrSngwVGdubktLZVg4MzZLM2hUdktlSXBHNlkwVExreFpWeHJxcGFYbGxpclNLdFJxMGZydlRhdTdhZWRwcjFGdTFuN2dRNUJ4MG9uWENkSFo0L09CWjNuVTlsVDNhY0tweFpOUFRyMXJpNnFhNlVib2J0RWQ3OXVwKzZZbnI1ZWdKNU1iNmZlZWIzbitoeDlMLzFVL1czNnAvVkhERmdHc3d3a0J0c016aGc4eFRWeGJ6d2RMOGZiOFZGRFhjTkFRNlZobFdHWDRZU1J1ZEU4bzlWR2pVWVBqR25HWE9NazQyM0diY2FqSmdZbUlTWkxUZXBON3BwU1RibW1LYVk3VER0TXg4M016YUxOMXBrMW16MHgxekxubStlYjE1dmZ0MkJhZUZvc3RxaTJ1R1ZKc3VSYXBsbnV0cnh1aFZvNVdhVllWVnBkczBhdG5hMGwxcnV0dTZjUnA3bE9rMDZybnRabnc3RHh0c20ycWJjWnNPWFlCdHV1dG0yMmZXRm5ZaGRudDhXdXcrNlR2Wk45dW4yTi9UMEhEWWZaRHFzZFdoMStjN1J5RkRwV090NmF6cHp1UDMzRjlKYnBMMmRZenhEUDJEUGp0aFBMS2NScG5WT2IwMGRuRjJlNWM0UHppSXVKUzRMTExwYytMcHNieHQzSXZlUktkUFZ4WGVGNjB2V2RtN09id3UybzI2L3VOdTVwN29mY244dzBueW1lV1ROejBNUElRK0JSNWRFL0M1K1ZNR3Zmckg1UFEwK0JaN1huSXk5akw1RlhyZGV3dDZWM3F2ZGg3eGMrOWo1eW4rTSs0enczM2pMZVdWL01OOEMzeUxmTFQ4TnZubCtGMzBOL0kvOWsvM3IvMFFDbmdDVUJad09KZ1VHQld3TDcrSHA4SWIrT1B6cmJaZmF5MmUxQmpLQzVRUlZCajRLdGd1WEJyU0ZveU95UXJTSDM1NWpPa2M1cERvVlFmdWpXMEFkaDVtR0x3MzRNSjRXSGhWZUdQNDV3aUZnYTBUR1hOWGZSM0VOejMwVDZSSlpFM3B0bk1VODVyeTFLTlNvK3FpNXFQTm8zdWpTNlA4WXVabG5NMVZpZFdFbHNTeHc1TGlxdU5tNXN2dC84N2ZPSDRwM2lDK043RjVndnlGMXdlYUhPd3ZTRnB4YXBMaElzT3BaQVRJaE9PSlR3UVJBcXFCYU1KZklUZHlXT0NubkNIY0puSWkvUk50R0kyRU5jS2g1TzhrZ3FUWHFTN0pHOE5Ya2t4VE9sTE9XNWhDZXBrTHhNRFV6ZG16cWVGcHAySUcweVBUcTlNWU9Ta1pCeFFxb2hUWk8yWitwbjVtWjJ5NnhsaGJMK3hXNkx0eThlbFFmSmE3T1FyQVZaTFFxMlFxYm9WRm9vMXlvSHNtZGxWMmEvelluS09aYXJuaXZON2N5enl0dVFONXp2bi8vdEVzSVM0WksycFlaTFZ5MGRXT2E5ckdvNXNqeHhlZHNLNHhVRks0WldCcXc4dUlxMkttM1ZUNnZ0VjVldWZyMG1lazFyZ1Y3QnlvTEJ0UUZyNnd0VkN1V0ZmZXZjMSsxZFQxZ3ZXZCsxWWZxR25ScytGWW1LcmhUYkY1Y1ZmOWdvM0hqbEc0ZHZ5citaM0pTMHFhdkV1V1RQWnRKbTZlYmVMWjViRHBhcWwrYVhEbTROMmRxMERkOVd0TzMxOWtYYkw1Zk5LTnU3ZzdaRHVhTy9QTGk4WmFmSnpzMDdQMVNrVlBSVStsUTI3dExkdFdIWCtHN1I3aHQ3dlBZMDdOWGJXN3ozL1Q3SnZ0dFZBVlZOMVdiVlpmdEorN1AzUDY2SnF1bjRsdnR0WGExT2JYSHR4d1BTQS8wSEl3NjIxN25VMVIzU1BWUlNqOVlyNjBjT3h4KysvcDN2ZHkwTk5nMVZqWnpHNGlOd1JIbms2ZmNKMy9jZURUcmFkb3g3ck9FSDB4OTJIV2NkTDJwQ212S2FScHRUbXZ0YllsdTZUOHcrMGRicTNucjhSOXNmRDV3MFBGbDVTdk5VeVduYTZZTFRrMmZ5ejR5ZGxaMTlmaTc1M0dEYm9yWjc1MlBPMzJvUGIrKzZFSFRoMGtYL2krYzd2RHZPWFBLNGRQS3kyK1VUVjdoWG1xODZYMjNxZE9vOC9wUFRUOGU3bkx1YXJybGNhN251ZXIyMWUyYjM2UnVlTjg3ZDlMMTU4UmIvMXRXZU9UM2R2Zk42Yi9mRjkvWGZGdDErY2lmOXpzdTcyWGNuN3EyOFQ3eGY5RUR0UWRsRDNZZlZQMXYrM05qdjNIOXF3SGVnODlIY1IvY0doWVBQL3BIMWp3OURCWStaajh1R0RZYnJuamcrT1RuaVAzTDk2ZnluUTg5a3p5YWVGLzZpL3N1dUZ4WXZmdmpWNjlmTzBaalJvWmZ5bDVPL2JYeWwvZXJBNnhtdjI4YkN4aDYreVhnek1WNzBWdnZ0d1hmY2R4M3ZvOThQVCtSOElIOG8vMmo1c2ZWVDBLZjdreG1Uay84RUE1anovR016TGRzQUFBQWdZMGhTVFFBQWVpVUFBSUNEQUFENS93QUFnT2tBQUhVd0FBRHFZQUFBT3BnQUFCZHZrbC9GUmdBQUF0aEpSRUZVZU5yc2x0OUxrMUVZeDcvdk50ZTB2WE9rN3lTN3F5V0JZdm5qSWt0R1UwdkRDd2t0VjRLWHB2M3dCLzRCQmlJYS9RQzF3amtWVXhOc1V1dXV6ZDFrNmlCTEN4SUZ6Y0RYT1Rad1k4cjJzcjFycDR1WFp1b2dncnlKZlM4ZWVMNmM1M3c0NStFNUhJb1Fnb09VQ0Flc0dDQUdpQUVBeVg2TFpkbjE5WFdHWWRScTlUOGdrTjFxYTIwVkRsVlpjWlVRWXB1WktTMHRIVGNhOXl3ejZIdXJxNnMvenM2U1Aya1h3R0kyQXpqS3FIUTYzZnQzazRTUXBvWUdBTVdGUlh2S0xtb0xBQXdPRFB3ZG9MZEhEMkJrYU9oMzg0M0o1SEs1OXBUVjFkd0U4R3A4ZlArT1M0dEw1cmZtSDZHUWtPNzBvTHV6YzJqd3VTb3AyZEJyT0N5bms1S085UFgzWjJaa01Da3BxeXZmR0lZQmNMKzl3MnFkS0NvcUNnUUNBSGllRjJvZlAzeGtNcjFXMElyYXVscHRRWUhQN3dORjdlMkJObDhESU8zNENRQU5kK3U3dTdvQVNFQUJxS3VwSllSVTZhNERvR1h4cWFvVXBad1dBOWFKQ1VKSTRRVXRnRlBxa3duU1F3RDY5UHJvVnhRTUJ0dmIyaWlLZXREUndmTjhLQlRpT083Wms2Y0Erbm9OTE1zQ3lNbzh6Zm45SE1mbG5Na0NzTFM0T0QwMURVQjM5Um9oeE9sMHloTVM0aWlSM1c2UGJMc3pCM0Z4Y2JSQ1FRaFJKQ1pLSkJLeFdDeVR5ZVJ5R29CVUt2MHkveG1BVGxjcGk0K1h5V1FhalFhQXorZWJtcHdFVUY1UkRrQ2xVaFZxQzNnU25wK2JpejRIbk44UHdPLzNSNXhBZ012TnprNW1ra1dVQ01EcTZuZkJkemcyQkRDdFVBQndPbDIvZklkQWlnNElCb09SS0lqbmVRVk5iM20zaWkrWGlFSHArd3pwR2VsdXQvdWwwUWdnRUFpVVhTbTdkZWYydlphV3RMUzBoWVd2SCtZKzVaL055OG5OamY1VVNDU1NTSXc0NFhEWTRkaFFLcFhEdzhOaWlxcHZiQndkZVZGMW93b0F1N2FXbW5yTTBLUGYzdDYrVkZMYzFOeDhQdS9jNk5pWVNDU0tQc2tldDJkNWVkbmo4VVFjcjlkclg3ZTczWnRDeXJKclZxczFIQTRUUXBaWFZyeGVyK0M3TjkwV2k4Vm1zKzBmQ3lyMnE0Z0JZb0QvQVBCekFJNlZOcUdRUFVxbkFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsImNyZWRCbG9iIiwibWluUGluTGVuZ3RoIl0sImFhZ3VpZCI6Ijk5YmY0NjEwZWMyNjQyNTJiMzFmNzM4MGNjZDU5ZGI1Iiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwiZXAiOmZhbHNlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOnRydWUsImFsd2F5c1V2IjpmYWxzZX0sIm1heE1zZ1NpemUiOjEwMjQsInBpblV2QXV0aFByb3RvY29scyI6WzEsMl0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6MTAsInRyYW5zcG9ydHMiOlsibmZjIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN31dLCJmb3JjZVBJTkNoYW5nZSI6ZmFsc2UsIm1pblBJTkxlbmd0aCI6NCwibWF4Q3JlZEJsb2JMZW5ndGgiOjMyLCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6MX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMy0xMS0yNCJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjMtMTEtMjQifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyJkODAzMTkxMWFlMDkyMzY0ZjYwZWYyMWUzMjhhNmE0NWFkMWQ4ZDA5Il0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbImQ4MDMxOTExYWUwOTIzNjRmNjBlZjIxZTMyOGE2YTQ1YWQxZDhkMDkiXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ik5FT1dBVkUgV2lua2VvIEZJRE8yIn0sImRlc2NyaXB0aW9uIjoiTkVPV0FWRSBXaW5rZW8gRklETzIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MiwicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoyfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURJVENDQXNlZ0F3SUJBZ0lVYWIwU0FpQzJZN3NhZVVDMXM4aWJjRUNYWi80d0NnWUlLb1pJemowRUF3SXdPakVMTUFrR0ExVUVCaE1DUTBneEVEQU9CZ05WQkFvTUIxZEpVMlZMWlhreEdUQVhCZ05WQkFNTUVGTmxZV3hUVVNCSlQxUWdTVU5CSURFd0hoY05NalF4TURJeE1UTXpPVEUwV2hjTk16UXhNREU1TVRNek9URXpXakNCeWpFTE1Ba0dBMVVFQmhNQ1JsSXhEVEFMQmdOVkJBZ01CRkJCUTBFeEVUQVBCZ05WQkFjTUNFZGhjbVJoYm01bE1SQXdEZ1lEVlFRS0RBZE9SVTlYUVZaRk1TSXdJQVlEVlFRTERCbEJkWFJvWlc1MGFXTmhkRzl5SUVGMGRHVnpkR0YwYVc5dU1VQXdQZ1lEVlFRREREZE9SVTlYUVZaRklFSmhaR2RsYnlCR1NVUlBNaUF0SUVaSlJFOGdWVEpHSUVGMGRHVnpkR0YwYVc5dUlFTmxjblJwWm1sallYUmxNU0V3SHdZSktvWklodmNOQVFrQkZoSmpiMjUwWVdOMFFHNWxiM2RoZG1VdVpuSXdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUlBTNkhaeWJRaDNJcnJaRFFFQlpodGdkMW9QSTZya2czMkR0eG4xWThTZmJYSmxhbTFrYW5DWHRzY1pvZmpZS2lLVHFKTCtHWXBpclg0am1kWHVjQXZvNElCR0RDQ0FSUXdDUVlEVlIwVEJBSXdBREFmQmdOVkhTTUVHREFXZ0JTb01hT0s5bGxaeU1Ma3N3WjhPWHgxOHh6RjdEQkxCZ2dyQmdFRkJRY0JBUVEvTUQwd093WUlLd1lCQlFVSE1BS0dMMmgwZEhBNkx5OXdkV0pzYVdNdWQybHpaV3RsZVM1amIyMHZZM0owTDNObFlXeHpjV2x2ZEdsallURXVZMlZ5TUJNR0ExVWRKUVFNTUFvR0NDc0dBUVVGQndNQ01FQUdBMVVkSHdRNU1EY3dOYUF6b0RHR0wyaDBkSEE2THk5d2RXSnNhV011ZDJselpXdGxlUzVqYjIwdlkzSnNMM05sWVd4emNXbHZkR2xqWVRFdVkzSnNNQjBHQTFVZERnUVdCQlRZQXhrUnJna2paUFlPOGg0eWltcEZyUjJOQ1RBT0JnTlZIUThCQWY4RUJBTUNCNEF3RXdZTEt3WUJCQUdDNVJ3Q0FRRUVCQU1DQUFNd0NnWUlLb1pJemowRUF3SURTQUF3UlFJZ1QvOW1NN0lMYVZNQnJJckhob2hNRVc2ZEQ3MUwwN1RnUENITExodDh1ZThDSVFEQnlwRFlDNWwzV0NqU2FRUXU1YUlGazdmQjNFcnRnM3hFbkU1dVZaUzZHQT09IiwiTUlJQjNqQ0NBWVdnQXdJQkFnSVVLeVVER3JoUlFiVTNybWxsK3JlMXRZYlJzOTR3Q2dZSUtvWkl6ajBFQXdJd1BERUxNQWtHQTFVRUJoTUNRMGd4RURBT0JnTlZCQW9NQjFkSlUyVkxaWGt4R3pBWkJnTlZCQU1NRWxObFlXeFRVU0JKVDFRZ1VrOVBWQ0JIUVRBZ0Z3MHlOREE0TURreE1UQTBNVFJhR0E4eU1EWTBNRGN6TURFeE1EUXhNMW93UERFTE1Ba0dBMVVFQmhNQ1EwZ3hFREFPQmdOVkJBb01CMWRKVTJWTFpYa3hHekFaQmdOVkJBTU1FbE5sWVd4VFVTQkpUMVFnVWs5UFZDQkhRVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCRnlZNk9ORGx1aG5qMzgzTVJ3NUpmd2dNa0pyblcwK0l0bE9UaDQybkRMdGZaa3J6UkRGaDlLRkRhT0YrMjFaMm05S1NOcXIxTUtrcWpPaVJ6MnM0TmlqWXpCaE1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0h3WURWUjBqQkJnd0ZvQVV4VHNmVEtlNUp0SDl0SVVwUDNSMXlkT1d6SWt3SFFZRFZSME9CQllFRk1VN0gweW51U2JSL2JTRktUOTBkY25UbHN5Sk1BNEdBMVVkRHdFQi93UUVBd0lCaGpBS0JnZ3Foa2pPUFFRREFnTkhBREJFQWlCUkpESDQwaXk4YTdMTmdaZkxVZHV3OGJMRHprVDlpMG9JdlZqZVZlTGtVZ0lnVzVyM0I4NHg2dDhjb0xDSkxvRkxpcFo3NW4rTiszbTk5ekZMZFJsdklkTT0iLCJNSUlDZERDQ0FobWdBd0lCQWdJVVJwUUxXUXJtR0RTTUdnL283eDd4LzdvVWlaVXdDZ1lJS29aSXpqMEVBd0l3UERFTE1Ba0dBMVVFQmhNQ1EwZ3hFREFPQmdOVkJBb01CMWRKVTJWTFpYa3hHekFaQmdOVkJBTU1FbE5sWVd4VFVTQkpUMVFnVWs5UFZDQkhRVEFlRncweU5EQTRNRGt4TVRFd01UZGFGdzAwT1RBNE1ETXhNVEV3TVRaYU1Eb3hDekFKQmdOVkJBWVRBa05JTVJBd0RnWURWUVFLREFkWFNWTmxTMlY1TVJrd0Z3WURWUVFEREJCVFpXRnNVMUVnU1U5VUlFbERRU0F4TUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFQjM0YkU5eVBmUVJjRW9JMFlGQjhlYzBDU0UwdWptR2VDUkZkZEJCQlVKSis2M1pydVZ1b3J3UGNvcGQxTlZRWkhmVFZoM2RWNEpwN1Y3bVNySDZodnFPQitqQ0I5ekFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VBTUI4R0ExVWRJd1FZTUJhQUZNVTdIMHludVNiUi9iU0ZLVDkwZGNuVGxzeUpNRTBHQ0NzR0FRVUZCd0VCQkVFd1B6QTlCZ2dyQmdFRkJRY3dBb1l4YUhSMGNEb3ZMM0IxWW14cFl5NTNhWE5sYTJWNUxtTnZiUzlqY25RdmMyVmhiSE54YVc5MGNtOXZkR2RoTG1ObGNqQkNCZ05WSFI4RU96QTVNRGVnTmFBemhqRm9kSFJ3T2k4dmNIVmliR2xqTG5kcGMyVnJaWGt1WTI5dEwyTnliQzl6WldGc2MzRnBiM1J5YjI5MFoyRXVZM0pzTUIwR0ExVWREZ1FXQkJTb01hT0s5bGxaeU1Ma3N3WjhPWHgxOHh6RjdEQU9CZ05WSFE4QkFmOEVCQU1DQVlZd0NnWUlLb1pJemowRUF3SURTUUF3UmdJaEFMc0I2ekJiVVZYdXlqMG4yRE13SGQ4RngxbXpQMHBSM245U0h4UDJhZlM4QWlFQXp6YXdieXpZL29pOGgxQjE0bjlocUIzbnpCZVRuazZqSDVUeFk2ZVNTaWs9Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWdDQUlBQUFEOEdPMmpBQUFDcVVsRVFWUkl4MlA4Ly84L0F5MEJFd09Od2FnRnBGbHc4Y0tGaXJJeVIzdDdTMU96MEtEZ0JmUG0vL3o1azNpenZuMzlscCtUYTJ0bHRXVFJJb1RvZnhoWXRYS2xscHE2c3J3Q0Fpa29SSVZIdkgzNzlqOXg0TlNwVTBBdFFJMVc1aFp3UWFnUHpwODdWMTFaaVhBdkl4ajlaemg1NGtSTlpSV1JQdmo5NnhjRE9NMHpNVEtpQjlHOHVYUC8vZnNITkZSQVNMQytzWEhtN05sdWJ1NFFtM2J0M0xsdTdWcGlMR0NFbWN1SWFjR1pVNmZCNGNXUVgxQVFHeC9uN09JeWFlb1ViVjBkaUl2YW1sdWVQWHRHVVNULytnMzJIU09EaG9ZR1JJU0ZoYVdwcFlXVmxSVW8rT0hqaDZiNkJvb3NnSHZxejU4L2NEbDlmZjNNN0N3SWU4K2UzYXRYcnFRZ21lSW9rREt6cy9YMTlFR3kveGs2T3pvZlAzcEVXVWJEc0FZWVJDM3RiUndjSEVEMmgvZnY2MnBxQ1JlT2pDVG1aRTB0clp5OFhBajc4S0ZEeTVZdUpkNTBWQXNZY2VwS1RVODNOaldCcU9udTdIeHcvd0UrTy83anNnQzMxNW1abVJ1Ym05bloyWUZxdm56KzBsQmZoek9nL3FPN2xRbS9CK0VBbUh3TGlvb2dDbzRjT3J4azBXSWlQVUVna3BGQlVuS3ltWms1aE4zVDFYWDN6aDFpWW9LSmNEVEJBNHFGdWJtdGxZdWJDOGorK3ZWclRWVTFxSFFoelFlTUJIeWhyS3hjV0Z3TVVYbjYxS241YytkU3Y4SkpTRXkwdHJHR3NDZjA5OSs2ZFFzdXhjTENDckg3UDVJclNZZ0RlS0ZTMzlURXg4c0haSC8vOXIydUdoRlFONjVmaDJWUE5vcXFUQ1VscGVLeVVtZ3hmUHBNU1dFUk1BTXVYN2FzdjdjWElxaWxyWVh3RnJ4ZWcvcU91R1pTZEV6TTN0MTdEaDA2Q1BUMHBrMGJOMjNjQ0k5RllLWkp6OGhFOThIZmYzOGhERFkyZGlMOTBkSGRwYXVyaXhhd3JDeXNyZTN0dW5xNmlMVFgwTkFBVG9Jc1R4NC90bmR3aUl5T0F0WUV4RmpBemMzdDQrc0xKTDk5L1Fvc0UwVkZSZTNzN1J0Ym1vR1ZGVXFjalRZZGg3OEZBSWhCTGxOZDdqdTFBQUFBQUVsRlRrU3VRbUNDIn0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTAzLTEzIn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wMy0xMyJ9LHsiYWFndWlkIjoiYTFmNTJiZTUtZGZhYi00MzY0LWI1MWMtMmJkNDk2YjE0YTU2IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiJhMWY1MmJlNS1kZmFiLTQzNjQtYjUxYy0yYmQ0OTZiMTRhNTYiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiT0NUQVRDTyBFekZpbmdlcjIgRklETzIgQVVUSEVOVElDQVRPUiJ9LCJkZXNjcmlwdGlvbiI6Ik9DVEFUQ08gRXpGaW5nZXIyIEZJRE8yIEFVVEhFTlRJQ0FUT1IiLCJhbHRlcm5hdGl2ZURlc2NyaXB0aW9ucyI6eyJrby1LUiI6IuyYpe2DgOy9lCDsnbTsp4DtlZHqsbAyIEZJRE8yIOyduOymneq4sCBWIDEuMCIsImVuLVVTIjoiT0NUQVRDTyBFekZpbmdlcjIgRklETzIgQVVUSEVOVElDQVRPUiBWIDEuMCJ9LCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6NSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCIsImJhc2ljX3N1cnJvZ2F0ZSJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiXSwidGNEaXNwbGF5IjpbImFueSJdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRHREQ0NBcHlnQXdJQkFnSUJBVEFOQmdrcWhraUc5dzBCQVFzRkFEQnlNUXN3Q1FZRFZRUUdFd0pMVWpFWk1CY0dBMVVFQ2d3UVQwTlVRVlJEVHlCRFR5NHNJRXhVUkRFaU1DQUdBMVVFQ3d3WlFYVjBhR1Z1ZEdsallYUnZjaUJCZEhSbGMzUmhkR2x2YmpFa01DSUdBMVVFQXd3YlQwTlVRVlJEVHlCU2IyOTBJRU5CSUVObGNuUnBabWxqWVhSbE1CNFhEVEl3TURJeE1UQTBNall3TTFvWERUSTJNREl3T1RBME1qWXdNMW93Y2pFTE1Ba0dBMVVFQmhNQ1MxSXhHVEFYQmdOVkJBb01FRTlEVkVGVVEwOGdRMDh1TENCTVZFUXhJakFnQmdOVkJBc01HVUYxZEdobGJuUnBZMkYwYjNJZ1FYUjBaWE4wWVhScGIyNHhKREFpQmdOVkJBTU1HMDlEVkVGVVEwOGdVbTl2ZENCRFFTQkRaWEowYVdacFkyRjBaVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFMWllhKzlZWkxKbjRGV2NrRG5ZL0VSb0N1TzNUQnRhMFczZjhSOVNZNWQ1c0JrMlFpdXBjaUkvbDdmd1BySDNGRGtlVlBYZWpNZStrVDBWb0pKZStOOUVNV2VyMC81UFhJUDk3bnJ1WWNyMER4YmhacGVzUUVlVThCZUlVdW5wTk5uRUpwb3hvSlR3b0RtdTgzWktrNG04ZzAvUGZwSndEaG1QQ0FxbTc5c0Z0UDhnN2xDOXFtczVURC82UE56KzJhZXdLWFRRQVIxb3BmaG5XRFVzSVp0dVVmRVJobEd3eFU3WCtoM29RMmtTR3c1aG9sZktTYjBnM3B3R1RjVFZOdmZVTVhIN0NhaVRxL0s3VC9qZEFDRCs5YU5qdGNkM1B5UWVyQThTYTJOMjhydmtOOFlmS29EUGc1Z0EzNzhPTkRWM0Jocmh0WThVaURrQmNUc1hBUUVDQXdFQUFhTlZNRk13RWdZRFZSMFRBUUgvQkFnd0JnRUIvd0lCQURBZEJnTlZIUTRFRmdRVU9DbUszMTBHdTNxOURmWC9idmRwc2Y0R0k4VXdDd1lEVlIwUEJBUURBZ0gyTUJFR0NXQ0dTQUdHK0VJQkFRUUVBd0lBQnpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQW5EVGNabmVLL2gwUWI4c0Z4Z0ZTOEZhNWRqUW5TSlFVTUZaL2t6T3NQaDFEVkZERjRuREcvSGxVK2Q3S2FOaGFRN1hMdDd4QWpoekV5VHlIYU1INzZnSDA4cjMzTmRWWi80c01oOUdJTFU2YlNtSllPdGRWaTN6QjNwNjlibllaSEpWcXZKS1g1bEVzU3BuL29wS1lsdnRvMm4wLzRzNGF3SmgrcStCa3lWU1BUUk1YNkxmYm42SVJ1NGNiZVMwVzEzdHNRNVNicEFvOU5IMkZBVHpWTU1LU0dFZGlRbmZZeWdkV3Z1RENMVXRRRjF3R21HU1lzRVBGVFY2UEcxVlA1SFM0ZmhyQk5idXJpMzhOSVVvY2ZrcGZtT0l5K2hIWmdmdnBaem9yazFHdkYzUFpSSXRKblRUdjVVanEwcUQ4cm5yODFxd3ZHbFRDSklCdEVVbU53UT09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUVnQUFBQklDQVlBQUFCVjdiTkhBQUFTVlVsRVFWUjQydTJiQjFoVTU5TEhNV29TcjdsK1Z2YWNzNDFtVGRTclJvTllBQ2tMaW9vRlN4UTdnWWlpaUtKR0RkZ1ZMSFJFbGwyYXFJQmlqZUtOWGZGYVltS05IU203Q3hwajlQdGlqSVc1ODU1ekZwWmxGMWRGWS94NG4yZWVwU3k3NS94Mi9qUHp6cnlZbWRXdTJsVzdhbGZ0cWwyMXEzYTl3MnVEV2xwZmZ0MjdVZXlGK0thclRoNXV0dlRJMWNhaEJ3ci9aMTd1elVaemMwODJXckIvWThPbGViUE0xdCt3TTFQbWYvei9Bd3BBSFRObFVmc0d5VGZUV3NTZisxVzA2aGhZTE5vSDFuTzNnOFdNTEJCT1RnZHFRaEl3bytKQlBEUVN4SVBXQXUwVjg2U0pYK2FsQmt0UHpEWkx2V0grL3NMSmhMcjEwMVJUbXFYZGZDQktPZytTNkpNZ0RUc01sb3R5alFLUzlnOEhpZXRTRU51SGdOQitJVFFabTFwUU4rcm5rV2FoOE1GNzV6bjEwb3ZuQ3JLTG5vc3pyb0g0RlFDSmJlZUNxTk5NYU9HNDdObEhvY2NqelRJdmZmaitBRklXZG0yMnJlU2haSHNSdkM0Z3B0MDBNUC9pMitjZnJqaTc4TDN4cEk4MmFtSWt1WGRCSDVCNDlUSG9GSFVjK3NZZmh3R3hoNkZQV0M2MERzb0N4anVoV2tDTTFXUm8waS82RHpQNXJXN3ZCYUIvWkdtT1d2NzdsM0pBcmRLdlFQREIyM0RzdWhvS1ZDVlFyQzRCbFpwN3ZGMnNnVU9YQ21EZWhqem80cXNFaVd5WlFVQzBaRExVWDNKYThWNEFhcGhWOHIwV1VQdXRCZkR2YXhyUWFFcGVhRC9kS0lhSnNmdEI3TFNvQ2lDRzlvRUcwM2FmWnpQajMzMjU1MnAyaXZmZWhSWmJWS0E4WnhvY3JSSFBHaFY3Q0VROTVsY0I5UEcwN3k3ODdRR1ZsSlNNUEhXcjVIbXJuUnI0WkxNS3poZVV2QlFnWW9ldnFjRnlSRnhsaVZsT2dmb3J6eWIrcmVFVUZSVTF3QnM4U1c0eTdrY04vSE5qTVd5NldPNUJaV2lQMFg1SCt6KzBQOUNlR3dKMEVhRzJuSmFsQThnZkdnOU8rTjBzc2FETHUzTzNYUkxxTTY0S01lV203TnBDcG5RVHlKUmZtcnNvZkFXeXBPbm1zcVFnZ2FzaWtISko4c2V2eHdoY2tnYVl1eVQzbUJwMndQN21iUlc1ZVZDalJmK2dCb2RkaFhEeWxtYUhXbDA2UktWU3RTNHVMbTZHSUp1V2xwWmFxOVYzM0RTYTBqQjgvblZkUUtubjFVQ1BTS2hJODI2cm9hWHl5b0svVEY0QzE5U0dsQ3o1VThwVk1WYmdJbyttbk5ZZHBSeGpORlN2TlErcDdpditwTHN1THFNN2h3RGQ2VnMwOGhqNmpPcXkrQ0hWZGZsZHlqWmNROW10VlZPOW9sVk1uL2pTdG9OU3lucE56SUx4SVh0aGhTTHZUK2ZWeDZNRTBUL2xtcSsvWUdlV21WblgwUHZmdlh2M24ycDFTYUJLVS9ycjdpc2FzRjV5a0kxQmpPMDhhT1cvQ1dKTzNJWWlqV2JXMnl4MTZ6RDlFLzdCZW9aelVnTGxuSENKdGwvN21MRmJDc0t1ODBIWUtSaUVIV2FBc1AwTVlEcDk4NVR1dGxndDZCNjJsZTRaTVo5MmpCNUN1eVI5M3R3cHBSWHhzQlo5bFpTNVU2S2dXWjhVb2ZPVWJlMXpqMTIra2JubkhDeVhILzlkNnBhVVllNlVjSVhxcTN6QStPOTRKRjY0ZjRka3lYN3ZKaXVPU1N4Q0QzN01Wc2ZFbFBtTnpaSUxYVHR0dkg1Q09Ic1hNSU1pb2VYMGJBakl1UWluYjNFU3hkaTI1TTF6Q1EzOWdKRXBPcHZMbERHVTh6bzE0N0FhUDZtRklQNWlMb2k3emdaeGwyQVFkWmtGd200aFpYU1BzSXVVVS93aUFzUE1JYlNlcVcrQmtnbmhiK2lZOXNOb0laUGJDQndUQXN4ZDVVZm9vZWxQUk40YmdmYmJlcm5KL0gweERjSlBwOVpkZDIxZjNYVlg5elJjZkNUWksvTnk3cFpMR3NoWFZZcExaU2pSMFcrTXk2ZGVtUithdXlTNUNsemx1YlJ6N0NPaHczSVE5L29XeE9qR1lydDViTTFCSUFsN0xINkNIbktJY2wzdlRtVDNLdTkxNTg2ZFR4RE9qM2hUbHdHZ3Z2NTFOTWNQU05CbmZZYkFQdTZCZVIvMExqZmxaS1ovUm5OdGZFRVFnL1NETnI1ZU1ZbGJid1FPN1pyY0JRUHFic1kxOXFuSWFRV0lIUmR5bFdwdkJOUnJBUXRKMURNVTZENHgrWlNMM0l2Y0JONVlIYlFQME9yaXhUWEV3Q3BTcTlWdE1MQjJSQUNkOEdmdGk0cnUyT0QzZ3V2WHIzOUVuZ2M2QVJTZlk0T2U5QVBlN0NoakVoYzRKOW9LZWtRY296NWZXVWIxU2JpS1h1MU5QQlZqMFh3OVFJL3gvVWJVT0JpUlRONFV3YXloWlFsUHhESnVqeU54WGd3U1VxWDJRVWdPb1N3a29XUFk4OWFEVW5KM0hiZ28wMmcwNDlGVzQwWHRScnVFOWh1Zm5xdXJXNTZobGFDZFJ0dUVmeCtLWUR3Um5oMStuWW8yVnQrVGRETWxaUisza0c2MzRESFZlVGxZZWlTZjNKOTM5UmVkMTc3M1J1QUluSlcyS0tjZmhlN1JJT203RXFUdXk5azlEZ3ZKWlFsQ1dveVFGb0hRZVEwRWh1OHZ5eTlRM2NPTCtkTUlnSWY0cVY3REM4MUJyMWlKTnp3RnpZdEwwUnBIL0xrVG1nZitiZ3grUHh1L1hvZVBSOG5mOE9uN0lkcCtJaDNpY2Zxd2NuUFBOZlFJeUZrazdZaGViRGtUYk53U0lEcmoxUE9DUXRWbTRyVTFucDBvRjZVWEpaUC9KdmJnZHNkU2p6Q1FzcEJXZ05TdEFwTElaVFY0ei84T0NvdlVCcUVRYnlDQkVlWFM4c3daSXg1UXpjclB2OThZZ1hSSFVQUHd0VTd4bm5nSExROS9Gb0ZBWS9CeEc0bFgrSGhuWHRTaDIzVEwyYzhaZ1I5UXRxdWY0WDNFV3pnb1A2NVJPS1NJbzl6a1Q4U2VrU0R4WEFQU2dhdEFPb0NIMUU4TENRTzBiQ1YwSHBVQmw2OFZWc29VWEhEVlRMNTM3MTZqbXUyZlFSMFN0L0MxNHhITXIvaGVCZmo5M0tLaVg0VDR1M3JrOXc2aEIrc0pIT0ozTW93L01NMG5BZld2cFlBaFltZFQ5L1JHTlFJSEsxby95bDMrV0RRa211MnRTQWF2QmNrZ2hPUzVtb05VN2swcmdKSEZ3dXFVLytqQ0tjUUxua0FLdGpmYmFJUTZwSUxtWWhPNzFWQVJXV296bE1CZGFVdDFXdlluMDNSQ09TUnpWMFZXQzRmWVQxNHY1c2dVemdLM3BFZENMOXpnRFVkQVhwRmNFM3hJUkFVazRrMmtJZFV2SEt3SHBzQVBGL0o1T0tWWnhjWDNSRyszSXdzZjRBZlNud1BFZmtBL2srKzdlMlUyd094MmhzQmhJVFZEU0YzRHk5Q1RJbC81elJqblZBa0N5cWU5RW9ENU1nNkVJMklSVWd5SWgwVlZRRUp2MGtJU2UwUUEyUXJjTGxBOVJlMHZKUzcrRis3OExSSE9PVzAyeE91UmR4aVJzWjJXVE9jQUVUUDNCZHpHUEVWSXcxOHQ3cmdvRkpTbkhHanZCS0JIeFhPUVJuS1FSTU40YitJaEVXOFNlVVNCODlkYnl3cUxTOWI4bFhCMGF5WSs0N0VlSGJqcXdCUGFKcmdDRUJwdE1RTndRM3dMaTllWEd3T1JiWVBBWGZHWThrWkFZeE01U0tQWHNVMXdaaVR4SmkwazNwc0dSNEJvUURSWURVd3Q4Ri8yZmJOM3BYR0FjY2dlNFR3aGdDYUc1Z0p0amJ2NFpoV0FtR1lUVVdwaFFMa21oYjdVdmdvRFdESTFWTUZPQnFqeFBLUXg2eXNnbFV0T0YxSVV5UTYvTTI1SnJkK2RLUkY4UUFMM3Jkc3FzQnVmQ1l3SU01azV4cUhtRTh0QkVka0puT1dGakVOQ2M5TzhwMzlDYzd6Uk8vUzRaS0FuS2NzaFVWcElCaVVYeFVxT2RrL0U3S0FNZWNjNmtVNWI5bDE0d3ZTT0FvYjVDaGpLaDRQVWdvZUVYaVRvR1ZWRzZqeVRYcEMwS2lnUEpUQmZwUUw5RlE5cG9vS0ROQTRoalYxZlNYSUVFaXM1OUNhaFp4enhvanZtN3NuVzd3cWcyTXhUbE4yNHpmZnBkbk9BRVg3RlFhSVJrb0NIMUh3Q1VPMFhrdXRPTXVrRmNYZStnQjZTRE1LdjA0SHhTMFZRS1VEN0pDTWszcHZHNlhnVFFxTDFKRWQ3ck1mQXB6aFlRNFhZNnkydnpMcGszMGpaaHBVeEZsOERJL0ZEbWZucVFab0V0TTBzQkpSMHpxVFhwSkFrTXpJVlJQNFo3SVNTOFVzRHhwZUR4RWxPVVRrdTZVbE9PQ3dHcUw2SkdQaVUyWTBkbEkzL3l0WXUrYkNwWHBIUG1GWUIzQVJEQzBuc3kza1RnWVNTbzZVQnhJTWVtTlFjNysyVGZVNDRPZzNFVXplQ2FBcUJ0QUc5aVVBeUlya3hPcExUUWhvZUMxUy9SSHhUNVVuS1hkSHViYk1oQVJmZk81M3F0Zlk1MHhacm4xWlRnTEh4NXlCWklpUXBEMG5yVGRLcHhJUEtUQWxvZmNhSDdIMHFISjBPMG1tYlFSeXdpWVBrdjhHQTVCUUdKYWViNWVpQkNZRDd1SHVVaXlLWXRFbmVOQml5Q2FWa1NjTXdLMTJqYlplQzhMTkFZTnBPQTZiTlZJU0Vab09nckJHVXBZNDNFVWlXMDRnSC9XRkszUkErSi9JdzNsd2FXQVJtZ1hUNlpwQVFTTVNiQ0NTRGtxc215eUVrNGRBNG9Qc2xrckwrR2xxQTBDbWxHU2xFYTdSSDFUMnpBZTRaaDJEUmQ1eTJqM2dtN0RLUDYzMGpJT0duMDNsSUFSeWtsandrcmVUUW0rZzJ3UVRRVFJNQWxlUXBjODRDNDVrQ2xrSFpZRG1EUU1vRUNldE5GWkpqZU1reFBpK1FuRGJMWVNrZ0hJb2U1WkVBbEZ2U0EzVG5qYVRFcDl5VUZxOEtDNlhid3R4WkljT0VFQzF3WGw5TU82d0YwUmNMMk40M0dldUkvaFhFRHdnNFNFSXlCMnVMa0ZyemtGakorYk9RNkU1c0Z0dHFDcUM3WjNHektlMmZBbGFCVzhCcTVoYUVsSTNlcElYRVNVNmtMemt0SkZaeWlVWWt4NVVDb3FHa0hFQlkvUkxLS0RmNWJ3anJQQ2FHRkx6QXVRUmFjeGVGUFhwRFJ6TGRJQ1p3bFgrR2hhc2QxbGVlYk52RlJSbFB1Y3J6S09kMXY5QjlJcDhKZXk4RFVmY0YzSUNnMjJ3UWY4NE5DRVNkZVVnZGd6aElueEZJMHpsSTVaTHpaNzJKNmhrQlpCWm5DcUJuUmNVYUdCaTRBNlFUTjRGTmNBNEhDYjNKWW9ZeHlhVldTRzZpb3Fya2RDR041S3Z2OGcwdm1tY2tibE9pUU9pQlh0WTNGaGgzZks0YmxnK3lkV1cwTEw2TWRvMER4alVHR0pjb3RsTXBjbG9KSXNjbElPNGRVbmxBMFAwYkh0S2Npa2xLWjk2Yk9nWVpsaHp4cHJaQldFa24zaWNURWxNQVBTWDdsZzI3enVHbm5BcldzM0pZU05henRvS1Z2dVNxeTNJVFhwRGxSbFJVMzFWN1RGejdSTnBQMjdFMDNOWmxlOS8yUEtTZTNKQ0FoY1JPVW5oSVdtK3FSbktVN1hKbzY3VmhwNG1iTzY2UFFyekkxVDhISkpNeXdXYk85Z3BJck9TeVdNbEpkZU9TVm5LKzJpeFhXWEpWTjd3VjFiZDJMeWN4MEdQU2JldEtkTnE2WkVqQVFqSXdTZUhHVGQ4WWxaeW80NHh5eVRFZGdzRVNkdzBiZDUrTE5CWFFmbTE3WU0vaG44RnljQnBZenR3RzFnVFM3RzFnbzRVVWxGME95V0NXMDVZQ2s1UXZMQVhZdUdTa3gxUzFyWXVRWkJXUTJFbUtZOFVrcFJLa0twS2JWUzQ1Tmk1MUNBSzZkd1RNanprQ3hjVnFQMU9ubDkvcU50bFhLUEtBR1pvT1ZuTjJnUFhjSFJ3a1E1SkRTQldTU3kvUGN2clZONEZFdldERHE5dGpxdFRXN2NlMWRRMUxicUVSeWZIRHkyNDZrdU1oMFhZcm9HL0FOaWdvVkQvRCt1OHpVL3NuWGZtZUxndUlUQ1o4RnUwRDBhaU5ZRFYzSjFoL3M2T3k1SUk0eVVrRDlVb0JmejR1K1pHNFZEWExHWldjVG85Sk1yZzZ5UzJ2SWprSks3blFDc24xMUpmY25ITEpDZTBXZyszWVRYRG0vQzI4VDgxWnNvTXd0WDlTRDhFYzB2VWkwa3Z4bnI4SGhLTXl3R29lZ2JTVGc0VGVWQkdYc25YaUVwRmNScVVzUit0WDM2YjJtTmk0dExZcUpHT1MwOFlsQjIxY3FwcmxoRDJYUXFlUkcrRDREemY0Mlh6SjlKY3F3TlRxVXBrMm0ya3R2MEFGQVN2M1k4RzNBU3hubzl3SUtBT1NzeWpQY3J6a2pHNTRrNnBtT2QwTnI2N2todXBJVGh1WFdNbXQxSkhjVWgzSkxVSlFoaVhIMkllRGcwOFduUHpwcHZiZThsOTZGRVVtbEJpTE12V0hmc1dZMlZZcVRvRE5pQXlFa01ONTAxd2prcXV1K2piWVkwbzAybVBTYmV0V0tRVThqSlFDZXBJVDlWNklOVlEwcTRTTFZ3cTA5L1FVbmNIN2xmWTI1RkFCbVdrWkdobm5IcjBDam41YlFEUnVNd1p2bmJpa0s3a2dJNUw3V2pmTEtTdjFtR3BDY2hJRFdVN29GQTV0QmlYRDJyU1RvRkpwZEU5MnBCdWQ3WnNZc0IzNWFXVVZTRVJ5eStSNTBONTdFMGg4czZ0bXVabGJkYXB2QTFuT3ozQ1dvMDFvNjVhWEFwVWtGMVloT1RmT204U3U0V0RSTHdFbWhPN2xnM0dsZXpoVlVGRFE1TFdubGVRd0FiN1lJMk1uTUg2OG1BL0JFWWVnRFdZNWlVOG1XQVVUVDZwR2NsUDFzcHl2WHBaN1lmVWRyVk45VjVXY0JFc0JzVHYrRE1FTW03MEx2anQ4R1ZUcUtzZUZMNVdXbGxyVldDdUJuSjVBZDd4ZjNWRVZvdXVWV0RQMThNa0dNV1k3Qy85c0xDcHpqR2M1UXh0ZXZSNVRsVkpBWjhPckx6bnhnQWpjeDhWQU82OFVtTExpZXpodzRocDcyTlBBdFo0aVE4VWFiMFNSMHhSa2pQdWljOGkzVVhyZllRVWV1T29BZEVkWVZ0NGJRZXF6R1N5blpvRmxZSFViWHNOWmpqYlMreFo2b1ExQ0c3QU9Pb3hNZzFIemRrUFMxck53OVVZUllObzJjdFpJcytXMVpmV0NTU1hGWjdlbnBoemFKdlhUd2Y5Y2d6V3BKMkZzeUY3b05qRVRMRWFrZzJUMEJnendhSlBRaTN3UmtKOTJINWZHVFZJbWthNEFRaHFQM3VTTmt2c1NiWmdjbUNGeXpHUkowSFo0R25nR2JZZVF1S093N2Z1TCtpZEpETmtEY3RJMVAvOHQvTGNoUDRnYmlxQ3V2T3dwZDJMa1prZ1dWT1NjeFNCL0hHYXNQb2hCTkJlR3o5a05nMmJ1aElGQk8vRG1kNEJYOEM0WXMyQVBLNWVRK0tNUXQrazA1Q0FNY2pDaVdHWHl2eUNRRTJxNzNzQmhLZE1PTVpIakpYZ0J0MThGbENFak1ZUEl3NGhFWHNhSWgrZmg5ZlY5clRSZVE3UHZGaGowQXZqNDlMeW1ZTDBHbU4zazJCNDVBUG91VFhlSjlPcVNnd0xrbUFudlZXVnZDY29UbFBzWnRBWGtTSi9adTc1STdYVC8vdjNHcVB2ZTVBUTdYdmdSL3FUcWt4b0NRdjVmNHpaMzhKTTk5Tm51clFUZk55MUR0RzVrMzBNT1ZxRmxjT0EwVi9uRGw0OTA1RWxrOHI5OFovTThQbmNmOFVvRU1vY2NBU1pBeVBscXM5cFZ1MnBYN2FwZHRhdDIxYTdhOVViWGZ3RnZVRUVINFlhcWxBQUFBQUJKUlU1RXJrSmdnZz09IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiRklET18yXzAiXSwiYWFndWlkIjoiYTFmNTJiZTVkZmFiNDM2NGI1MWMyYmQ0OTZiMTRhNTYiLCJvcHRpb25zIjp7InV2Ijp0cnVlfSwiZmlybXdhcmVWZXJzaW9uIjo1fX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjAtMDMtMjAiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJPQ1RBVENPIEV6RmluZ2VyMiBGSURPMiBBVVRIRU5USUNBVE9SIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyMDAzMjAwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMyIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4zIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIwLTAzLTIwIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjEtMDctMjcifSx7ImFhZ3VpZCI6IjBmMDBjYzIyLTQ2NDAtNDFlNy05NTg1LTM4NGVjNzNmZmU5YiIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiMGYwMGNjMjItNDY0MC00MWU3LTk1ODUtMzg0ZWM3M2ZmZTliIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlRhZ2xpbyBDVEFQMi4xIEJJTyJ9LCJkZXNjcmlwdGlvbiI6IlRhZ2xpbyBDVEFQMi4xIEJJTyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyNTA3LCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH0seyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjowLCJibG9ja1Nsb3dkb3duIjowfX0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDQ2pDQ0FiQ2dBd0lCQWdJSVhRcEtpLzRMZnNrd0NnWUlLb1pJemowRUF3SXdRakVMTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFvVENsUmhaMnhwYnlCTVRFTXhIakFjQmdOVkJBTVRGVlJGVTFRZ1JrbEVUeUJTYjI5MElFTkJJRVZEUXpBZ0Z3MHlOREEyTWpnd01EQXdNREJhR0E4eU1EVTBNRFl5TnpJek5UazFPVm93UWpFTE1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBb1RDbFJoWjJ4cGJ5Qk1URU14SGpBY0JnTlZCQU1URlZSRlUxUWdSa2xFVHlCU2IyOTBJRU5CSUVWRFF6QlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJGVGxwM0R0WGQvcjZvUmJqUzNpcmszNjU4TlEvdkRUWEw2c1lYekMyYTI0akhPMXpQZk1rMERtbWVTT0ZtUytXM1kyalpNY1V1aWErMGRmeS91QThuR2pnWTB3Z1lvd0RBWURWUjBUQkFVd0F3RUIvekFkQmdOVkhRNEVGZ1FVRnNzeGkvY1NPMHpseTV1cEoxT0plYXdZV0dzd1d3WURWUjBqQkZRd1VxRkdwRVF3UWpFTE1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBb1RDbFJoWjJ4cGJ5Qk1URU14SGpBY0JnTlZCQU1URlZSRlUxUWdSa2xFVHlCU2IyOTBJRU5CSUVWRFE0SUlYUXBLaS80TGZza3dDZ1lJS29aSXpqMEVBd0lEU0FBd1JRSWdVWHg4dWJyQitZVzhSTHpUT1I2Qy9sSy9oMnIyUEJTRnlPUWc1eTlCcWNZQ0lRRDM4Rjd1QkQ1SjFPMlJ1ZlFoT2w5MW9GdGNUM0tKRWtYRFBTOVpVQ0J5dGc9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFFMEFBQUFnQ0FZQUFBQlhZL1UwQUFBQUNYQklXWE1BQUFLdUFBQUNyZ0Z0N0RJYUFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCM2QzY3VhVzVyYzJOaGNHVXViM0pubSs0OEdnQUFDSE5KUkVGVWFJSHRtWDl3WEZVVnh6L2Y5emFiTG9Gb0FTbE42ZkJEQmdzSWd3cUkvRlJuQkVRRnh4R1VYMVZJazVjMHBVTlRPOE1neVhZakl6OHNkYkROajkzS3BGUUhJUzA2MVZvS2hUSU8wQTRnNktBVktPV0hoVmJxbERTa1AwS3kyWGY4NDcydDYyWjMyWkFHUnFiZm1aMTk5NXg3enpuM3UvZWRjKzlkbVJrSE1EbzRIM1VBLzQ4NFFOb0h3QUhTUGdBT2tQWUI4TEVscmFtcGFhcm5lWjhmRDl1UlVzcUVkTDBMVDl4aTlzcitjTmJRMEhDSm1WV1Y2bE5UVS9PN2VEdytQQlkvemMzTnNlSGg0YzBFaTZJQ29MNisvbXpnVGtrdHlXVHk4YkhZTDBrYXNDSURxeFBTc3hWdzU4MW0veHFMTXpQNzQvdjEyYkpsU3pXd2F5eCsrdnY3WTY3clJvRjk1RXVxQmM0QkxnVEdqN1M0V1g5Q3VoUjRPQTAzSnFTc2FnOHdBR3dDTmpqUTNXSzJzUXgvcVp6bnM0QlRKVDFuWnMrRnNxRmR1M2J0SGQwVXlvT2szbkJQK3VwWWJaVWtiYm5rQXNkWHcvbjljQTl3WmFpcUNqK0hBMmY3MEp5UTdnWG14czE2aTlsTEpwTmU5dG56dkFYQXFXYTJLcGxNemgvalBONFhlL2Z1blIrTHhWYlgxTlQ4YWF5MmlwSzJTS3JzaFJYQUorZVluUWRjMVNZOWJYQVg0T1oxRi9CRDRLeUVkRkhjYk10WUE5dmZXTFpzMlI3RytGcG1VWlMwWHZnbDhFMWdYeDVyTmJ1N1RkcGt3YXFiWEdEWU5HRE5BdW1NSDVudEdXMHd0YlcxaDdpdWV6WXdXZElSa3ZwOTMxK1hTcVUyNWZaTEpCS1JyVnUzZmxuU05LQkMwb3UrN3c4RFNOb0lET2JiYm1wcU9qaVR5WnppdXU1YjdlM3RiMmJsczJiTk9teG9hT2d5eDNFKzVmdis5a2drc3JLam8yTm5xVGdMYmprUzBsWEFOV0Z6WXE2dTFleWhTamdaNkFZS0hWeFAzQU0vTCtXMEVPcnI2eStLUkNML2xyUkdVamR3aDVsMVN0clkwTkJ3U2JhZjUzbVR0MjNiOXJ5a3RjQWlZS0daUFNScGJTajdRU0g3NlhTNjNjeldEdzhQWDVhVk5UWTJucE5PcHpkSnVzZk1icGZVbmNsa1hxcXZyeitoVkt3alNFdEpGY0R0T2FJSllXN2JoNXZNZHNiTnJoZGNCTHhld083MXQwb25sbkk4SWhESHFRSjZ6V3lGbVMweXM0WEFtMERFekdibGRGME1uR0ptVHdISHU2NDdEWGdCeUFBSngzSHVMMkwva055MjUza0grYjcvQUhBbzhBQkJldGtJSENIcGpwS3g1Z3ZlaG91QnFibXkxK0dnUW9OYnpkWWVDaWNDSHJBNVIrVm1vTEdVNDN6MDl2YXVUQ2FUVTFLcDFPV3BWR3AyS3BXYUsrbUdVSDAwd1BUcDA2dUFTd0VjeDdreG1VeSsydEhSOGJLa3V3RFh6QTdwN094OG94eC9abllwTUFYWVdsTlRjMDB5bWJ4WDBweFFmWEZ6YzNPczJOZ1JwRm13ajhtWDdldVhrTzVyazM2OFNLb0V1TUZzTUc2V09pbklaOThBbGhQa2xLK1ZFM3dXUFQwOW1YeFpKcFBaSGo1R0FhcXFxbzRseU1NMk9EajQ5MncvU1ZzQUhNZTVvRngva3M0UEh4L1BicVpkMTkwUXlpYnMzcjE3YXVHUmhRdkJpTmRLNE9jMFR6TzRzaGVtSjZUYXVObVRBSmViWllEVndPb0ZVdFVBZkxiY0NlU2lycTV1RW5DeTY3cXU0empSWEYwbWs0a28yQ3Y2UzVjdUhlenU3czdLRDVhRWplNXk4Tk1Ba3ZZVmhmYjI5dDJlNXcwQU1jZHhEaXMyc0JCcEk0NDVBMEcreUNLN3d6MEJlUGluMG5FM20yM1A3UjlXenFjVFVnUTRIempkZ1EzVFlIMUlia0Y0bmpmRGNad09vS0xRL0NXOVJWQjgzQmt6Wmt3QjNncmxwNFpkQ3VYWGdwQlVIZnA0TjArMUI0ajV2ajhxMHZyeTJnWU01YlRUNGZkbVFVTStZY3NsOXgvQmEzbzVRWDY4RC9oSmk5bU9VcFB3UE85dzRCY0VaOFVrOEZzek8wdFNJb3lCWkRLNXcvTzhaNEF2T283VFZsdGJlMHMwR2owS3lCYUs5ejJtWmVIN3ZoT3UyblNleWdEeVYza3VDcEgyTjRMSlp2RnUzQ3ozQUwwU1dBcDB0SnE5bHhYZUpoMldoaGtXRklDakNmTGF0K05tYThxWmhKbGRJQ2tHYk4yNWMyZFRUMDlQcHE2dXJqOGtiZC9xOUgyL3lYR2NSNERySXBISWRiN3ZaOGV2N092ciszVTV2Z0FjeHhrME13cGNJSHdpL0M1Ni9pMUUyaHBnWGs3N25WeGwzS3dsdDUyUXFvRzV3QndndDZ5M2wwc1lnS1RKQUdiMlNyWW9TTW9Xb0gya3VhNGJOYk9JcEI0ejJ5eHBBTmlRU3FYV2pUS243UWg5VkdjRnMyZlByaVlzT283akZEM1ZqQ0J0UGp3K0gxN2t2d1hodFVJRHc5ZXdDV2dGOHQvL0FlQm5aWWNmSUIwR095RXJjRjAzR3E2a1FZQ1pNMmRPTkxOVndNR1NtcnU2dXJabSszWjFkWTNLbVpsdERyOC9sNVVORGc2ZUZ6NzJUWm8wcWVqQmZnUnBabVp0MGx3TEtpSEFuL1A3SktUVENHNHN6aWhpZDJIYzdPMHk0OC82ZlNtc2dGL3dQTy9jZ1lHQnY4UmlzVE5EOVhzQTZYUjZxdU00aHdMNHZ2K0c1M21iZ1ZlQXZ6cU9zNnF6cy9PWlVmaDdUTkk4NE55NnVycXZtdG1yanVPMFNrTFM4bEozZWdXUFVhMW1Ed0hyQUFUUFp1V1MxQlk0ZXBiaWhLMCtDZUxsQnA5RlgxL2ZrOER6QklYZ2lWZ3N0aHU0SS9UYkM3Qmt5WklYek93U2dud2o0RFBBdDRBVzMvZWY5anp2N25MOVRaa3laUzJ3SHFoMEhPY3gxM1hma0hRbThGb21rMmtwTmJib2RiZmdFUUEzWEdrSnFYbytQR2h3SjhVUCtvOEEzeXUxcmNqQzkvM1ZrbTRDZmcvQjVyYWlvdUpDU1czQWc1SldtZGs5d05YUmFQUzdFUHhvd0xWQWxhU3JhMnBxb3BsTTVoZ3ptMGV3bDV6ZDJOaDRUQ2FUMlJ2YW5wUGo3MWVoN0ZHQWVEenVWMVpXZnQzTTVwblpNak5iS2FuRmRkM1RseXhaOGo4N2doSGNGTXVkYlpKbmtJaWJIWm1RamlKNFhVOHBZbWVYNExZallVRzlXWDRKMzIrb3I2Ly92cVRmQVBjbms4a3JjM1dlNTcwTW5PQTR6cm1kbloxUGpWY01VT0pxeUlLSzlXalkzQUhjU25CVmRCTEJ6VWNmd1FGM0hiQ2kxV3ozZUFZS0lPa3JBR2EyTFZmdWVkNDBnbTJPdWE3NzBuakhVZXJtdGxyQm5veDRzQi9yQ1Q4ZkpiWUJTR3BzYUdpWVlHYi9KTGhjdUJhb0JKWXZYcno0blZJRzlnZEtrUll4K01ONEJ6QWFEQTBOM1IyTlJyOURjRTArTTBkbGtucWkwV2pkaHhGSDBaeDJxM1RzTFdabG4rVStMRnh4eFJYdXhJa1R2eVRwT0RNN0V0Z3VhWDFYVjlkKytadXhIQlFsN1FDSzQyUDdEL3Q0NGorSXdULzFUTWt6N2dBQUFBQkpSVTVFcmtKZ2dnPT0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJGSURPXzJfMCIsIkZJRE9fMl8xIiwiRklET18yXzFfUFJFIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJjcmVkQmxvYiIsImxhcmdlQmxvYktleSIsImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6IjBmMDBjYzIyNDY0MDQxZTc5NTg1Mzg0ZWM3M2ZmZTliIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6dHJ1ZSwidXAiOnRydWUsInV2Ijp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibGFyZ2VCbG9icyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImFsd2F5c1V2Ijp0cnVlfSwibWF4TXNnU2l6ZSI6MTAyNCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMSwyXSwidHJhbnNwb3J0cyI6WyJuZmMiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fV0sIm1heFNlcmlhbGl6ZWRMYXJnZUJsb2JBcnJheSI6MjA0OCwibWluUElOTGVuZ3RoIjo0LCJmaXJtd2FyZVZlcnNpb24iOjI1MDcsIm1heENyZWRCbG9iTGVuZ3RoIjoxMjgsInByZWZlcnJlZFBsYXRmb3JtVXZBdHRlbXB0cyI6MywidXZNb2RhbGl0eSI6MiwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjUwfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjYtMDEtMTYiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MjUwNywiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJUYWdsaW8gQ1RBUDIuMSBCSU8iLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI2MDExNjAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUHJvZmlsZXMiOlsiY29uc3VtZXIiXSwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNi0wMS0xNiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyNTA3fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI2LTAxLTI2In0seyJhYWd1aWQiOiJmZjRkYWM0NS1lZGU4LTRlYzItYWNlZC1jZjY2MTAzZjQzMzUiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6ImZmNGRhYzQ1LWVkZTgtNGVjMi1hY2VkLWNmNjYxMDNmNDMzNSIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IDUgU2VyaWVzIn0sImRlc2NyaXB0aW9uIjoiWXViaUtleSA1IFNlcmllcyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzYsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfSx7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDM4NHIxX2VjZHNhX3NoYTM4NF9yYXciLCJlZDI1NTE5X2VkZHNhX3NoYTUxMl9yYXciLCJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURTakNDQWpLZ0F3SUJBZ0lVVG5iYkdJUjJOSHZ6cUlLRkFlUXdHMVhCaXMwd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JCSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVFZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU9zWGozazA0QmFuNFRZZHRaS3FEL09QSnh5RHlhUG1DQlVGVWlhWklnVHRlWm5qM1gyNURoZ3BaWlhzQzREMHlkSWNybEE2d05VSW5PUkwvTDl6QmJURUlNQVZNR282ZzdVS0FtYjJNRjZBSGJuaFlKZDllaWt1cFZOV1NoSE5ZTmM0R0JkTzFZTjZBZlVxdkpoSGJlM1Y0U05NUG1CUkVLSlBWejdUaHdnbWdnVGU4V3MySzAvd3NxdjJ3U0U3cGJDQnNVWmhJWDUxYlpNM3BxRHdKUFRtUkZFdnQwLzZ0RzVlTzhGM2oxNE9YcWZFaG1qbjFWdnhLRFlRT0xaQXhDd3dnQzBQNENkZld2M3k4UFNSOEkzNTRoTzFZK0d6Tmp2SXFYMzhOS0x5d3VJWUhGZXJPeE5seEVNQnZGaFlCdVJ1WUFra2dVYVBxTjZVQmhzSUxyc0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ0NvUkhoaXlObmJuWFJXSUw2WkJYb0JYOVlUTUI4R0ExVWRJd1FZTUJhQUZDQW9VQ0VicEZwYjZGUExuWjNGNVB4c0wzb2ZNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUNRRmFmSkkxLzVXZzlDRUVpbUUxUlA1NFJnUXdUTlRPT1FzTEFDVGUrckl0bEZRekM5WkRoclY4Mjh5WDdqenkrQUFzcDNpeks3VDF0aDJkbDdtK3R1MHN3MlBhL29sYzAybnQ2UHlJdzM0OGdhSHpoSTErMEtFNDVxeHZGRGVMMmxNeGJQZkNZdnlFRWFZemppUUVMVTU5NTFwWEdXeUtNYS80Zkx0TytaS09YaE11VmVxNHJYRFBJNTRXNkpIT2lBYWlLZGl3KzVlM2Mya3QvakZJUXRNNnZNWGc5TE5GemRqRVROdDIwVlg5UWV2UnBGWmZ1Y01HOXdDYVFEb0ZsUHpwVE1KS2hQZXYvaW1KbVpZaEtmcjBsTGNlbXRxakl4TEFvcVpkT1lmSEJnNit2QWNkUEkvaWF1R3BVQXY3WCtVS05tRHdqWjJCYUg0c0x3aEIybSIsIk1JSURTakNDQWpLZ0F3SUJBZ0lVUjM4bXEyNlNmMnN6VlYyQmRHNldFTjdrdVdVd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVJZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU5ZMFdiOW9Qb1JvS29ReVdQYUpwejExdnJXVGc2elR0bU5qMlZvS1JueXZLR1JxcHpiODN3NWw2WUE5NlVZa1lCRFFQMGlsTzJEUGU2d1dxVlI1ekRmUnpkY0g4YmgrTDdkR0d2YWU2aFJUWmhrRmtDcFhEczRIY2NrbnJEZjhGQ2xKN0hlMzlKZjQyL0cxUW0yeno5V1dtclBYdGdpSy94MDVHanNRZkd1REcxemY1UVRVVWllOGx3eW1LM1RmZE92TmVlSkFBUGUycG43SXRmUmIrclZyTldpRHpsUm4ydk5uWjJ3UG80d0gvV0o2ZGhYWkcrck1XVCthNkJvY2cxVWZJdzZrZHVuRzRiVHBaenN2YWNGWXlSMG1wZitEZU9ucFNXQW15d0pXSHZUbGYyWVh4RnllWGNUQUNkUWxjTU5HSjJWaFpRNDh4dFA1L1JCUC84a0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ2h5NDJva2lxY1RTMWlxYS9IUldqa0JuNEgvTUI4R0ExVWRJd1FZTUJhQUZPcTNRcENlREh0a2V0dFVmQU82ZkU2ZjJLRmhNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUFuK1JISVBidE1FRE5kVDFnOEgvUml0QWtVZExnQXQxdFdHV25sajlrbmJ2NC80R2xYN0M5cDQ1ZWZQTzkvYVpMNk9WMVhSS0JpNkttdEJXNUs3bnVZRW5NeC81QnFCU2JMVDdyaGR1QzQ5VEJlTWI5UEhkWHNUbFNWTlllZnIxZEdpZHI0ajB4VkJRTGIxcmtuREFiZFdEektmdm5heUtPOEZyd2U3SHg4NDNNRy9ySitjMFhydVV2YmZWVENITGlJV2hNN29ORGhMOHhvYjZ4VW85S0xLY1NMK0l0WXNPMy85V2I4UTlHanNxTDRGWHNEY0cxU2FZaDdLcGZ1TW1PaXhxekpaTzJuSWljUFlSZzFJMlN1aVVmWU83MHRtZEhjYmwra1NRbVNZdDdycTR2aUlMZzJHeDNqOXJJVHVXVGpiYVVhU1NReGdPbU1TSHV5ek1BQyIsIk1JSURTRENDQWpDZ0F3SUJBZ0lVVWNtTVh6UklGT2dHVEswVGIzZ0V1Wllaa0JJd0RRWUpLb1pJaHZjTkFRRUxCUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JCSURFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURtNTU1YldZOVdXK3RPWTBySVdIbGRoK2FOYW5vQ1pDRmg3R2szWVpyUW1QVXcwaGtTRzZxWUhRdFArZlp5UzMzVkVydmcrQlFxbm11bWdOaGZ4RnJrd0VaRUxlaWRCY0M4QzRBZzRucXFpUFdwenN2STE3TmN4WWxJbkxOTEZjWlkvK2dPaU42Wk9UaWhPNS92QlpNYmo5cmlhQWNxbGlZbU5HSlBnVGNNR2FFQXlNekVNTnkybm02RXArcGpQNWFGNmdpMjF0L1VRRnN1SjFqMlJqL3luTS9TZFJ0K2VjYWw1T1lvdHhIa0ZiTDl2dnYyQTJPdjVJVFpDbHc0Yk9TOW5weXBRaW1PWjVRQVl5dG1ZYVFwV2wvcE1ZejZ6U2o4UnFrVkRORUpHcU5mVEtBMml2TFl3WDZsU3R0TVBhcGcwSjg0bDlYMHZvVk4vRnBTNFZDVkFnTUJBQUdqWmpCa01CMEdBMVVkRGdRV0JCUWdLRkFoRzZSYVcraFR5NTJkeGVUOGJDOTZIekFmQmdOVkhTTUVHREFXZ0JUUzd1OWFJbzA2YlZ3amx6M3loZFVtOFNWN2tqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQTRHQTFVZER3RUIvd1FFQXdJQmhqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFZTXpnTHJKTElyME9vdlFuQVpyUklHdWFiaUhTVUtTbWJMUldwUmtXZUF0c0NoREVIcFhjSi9iZ0ROS1lXb0hxUTh4UlVqQjRDeWVwWWV2YzNZbHJHOG83ekh4cGZWY2FvTDVTZXVKa3pIeEtuNGJUYVNwOStNdndhbW5wNjRrWk1pTmJGTGtuZlA5a1lLb1JIa01XaGVSSjFVc1AxejRTY21rQ2VJTGZzTXM2dnFvdnFqV0NsRnNKcEJjc2x1WUhXRjdiQkoxbjRSd2crQVRFb3BZNElnR3Y2WnZ3YytBOXIrQVQyaHFwb1NrWW9BbCtBTll3Z3NsT2Y5c0plMFYrVEE5WVkvVWxhQm1QUFRkMC8vcjl3dmNlUFdaa1BqS29BQy96VU5oZkRiaDRMVjhHSHMzbHlYMlhvbUwvTE5jOEpZenlJYURFaEdRdmVvUGhoL3RyMWc9PSIsIk1JSURTRENDQWpDZ0F3SUJBZ0lVRHFFUncrNFJuR1NnZ3hnVWV3SkZFUERSWjNZd0RRWUpLb1pJaHZjTkFRRUxCUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURJN1huSCtadkR3TUNRVThNOFplVjVxc2N1Ymx2VllhYVJ0M1liYXhuOWdvZEx4NXN3SDBsWHJkZ2poNWg3RnBWZ0NnWVlYN0U0YmwxdmJ6VUxlbXJNV1Q4TjNXTUdVZThRQUpiQmVpb1Y3Vy9FK2hUWlAvMFNLSlZhM2V3S0JvNlVMZU1uZlFaRHJWT1JBazh3VExxMnY1TGxqNXZNajdKdE9vdEthOUo3bkhTOGtMbXpYWFNhajBTd0VQaDVPQVpVVE5WNHpzMWJ2b1RBUVFXckw0L0o5UXVLdDZXQ0ZFNW5VTmlSUWNFYlZGOG1scUsyYngyejZva1ZsdHlEVkxDeFlicFVURUx2WTF1c1IzRFRHUFVvSUNsT200Y3Jwd25EUkxWSHZqWWVQR0JCLy9wRXl6eEEvZ2NTY3hqd2FIMVpVdzliblNiSHl1cktxYlRhMUt2akFnTUJBQUdqWmpCa01CMEdBMVVkRGdRV0JCVHF0MEtRbmd4N1pIcmJWSHdEdW54T245aWhZVEFmQmdOVkhTTUVHREFXZ0JUUzd1OWFJbzA2YlZ3amx6M3loZFVtOFNWN2tqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQTRHQTFVZER3RUIvd1FFQXdJQmhqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFxUWFDV014VEdxVlZYN1NrN2trSm1VdWVUU1lLdVU2K0tCQlNnd0lSbmx3OUs3SGUxSXB4WjBoZHdwUE5pa0tqbWN5RmdGUHpoSW13SEpneHh1VDkwUHczdllPZGNKSk5rdERnMzVQWE9melNuMTVjRkF4MVJPMG1QVG1JYjhkWGlFV09wem9YdmR3WERNNDFaYUNEWU1UN3c0SVF0TXl2RTd4VUJacTJianRBbnEvTkRVQTdiZTRIOEgzaXBDKy8rTktsVXJjVWgrajQ4SzY3V0kwdTFtNkZlUXVlQkE3bjA2ajgyNXJxRHFzYUxzOVRiN0tBSEF3OFBtcldhTlBHMmtqS2VyeFBFZmVjaXZsRmF3cDJSV1p2eHJWdG4zVFYyU0J4eUNKQ2tYc05EMDVkQ0VyVkhTSklzK0JkdFRWTlk5QXd0eVBtbnliMHY0bVNUenZXZHc9PSIsIk1JSURQakNDQWlhZ0F3SUJBZ0lVWHplaUVESkVPVHQxNEY1bjBvNlpmL2JCd2lVd0RRWUpLb1pJaHZjTkFRRU5CUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTVo2L1R4TThySVQrRWFvUHZHODFvbnRNT28vMm1RMlJCd0pIUzBRWmN4VmFOWHZsMTJMVWhCWjVMbWlCU2NJWmQxUm54MW9kNTg1aCsvZGhLN2hFbTdKQUFMa0tLdHMxZk81M0tHTkxadWp6NWgzd0duY3I0aHlLRjBHNzRiL1UzSzloRTVtR05ENnpxWWNoQ1JBSGZyWU1ZUkRGNFlMMFg0RDVuR2R4dnBwQXk2bmtFbXRXbU1ud08zaTBUQXVjc3JiRTQ4NUh2R000cjBWcGdWZEpwdmdRamlUSkNUSXErRDM1aHd0VDhRREl2K25HdnBjeWk1d2NJZkNrenlDaW1KdWtoWXk2S29xTk1LUUVkcE5pU092V3lETVRNdDFid0N2RXpwdzkxdSttc1V0NHJqMGVmbk85czBaT3dkd01SRG5INHhnVWw1Wkx3cnJQa2ZDMS8wQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQjhHQTFVZEl3UVlNQmFBRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRTXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJEUVVBQTRJQkFRQzNJVy9zZ0I5cFo4YXBKTmp4dUdvWCtGa0lMa3Mwd01OcmRYTC9jb1V2c3JoenN2bDZtZVBNcmJHSkJ5SjFYbnF1QjVzZ2NSRU5GeGRRRm1hM21pbzhVcGYxb3dNMVpyZVhySjBtQURHMkJwbHFiSm54aXlZYStSMTFyZUlGVFdlSWhNTmNaS3NEWnJGQXlQdUZqQ1dTUXZKbU5XZTltRlJZRmdOaFhKS2tYSWI1SDFYZ0VEbHdpZWRZUk03Vm9sQk5sbGQ2cFJGS2xYOHVzdDZPVE1PZUFEbDJ4TkYwbTFMVGhTZGV1WHZEeUMxZzkrSUxmejNTNk9JWWdjM2lyb1JjRkQzNTRnN3JLZnU2N3FGQXc5Z0M0eWkweEJUUHJZOTVyaDQvSHFhVVlDQS9MOGxkUms2SDdYazM1RCtXVnBtcTJTaC94VDVIaUZ1aGY0d0piMGJLIl0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWZDQVlBQUFDR1ZzK01BQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBSFlZQUFCMkdBVjJpRTRFQUFBYk5TVVJCVkZoSHBWZDdUTlYxRkQvM2Q1OXdlUVNJZ1M5QVFBWGNGTEFRWmk5ZnBlVnoxdFkvV1RacjVXeHBjN1c1a25MYTVqSTNaODVzclMybk0yc2p0V3daUzdJVUg0SDR4Q25FUXg0REFaRjc0Vjd1czg4NXY5L2xJbkJ2VkovQjRQdjludS81bnUvNW52TTU1NmZ6QS9RdjBIYi9JclgzVkZLUG80NWNubTRpblVJV1l3TEZSbVpRVXV3akZHL04xaVJIaDFFWjBOUlZSdWRxdDFCZCsyblNLeVMvT2h5czArbGszZS8za1E5cXZENFpVdGE0VlZTVXVZMGVpcHlpVGhBZm9jb09SVmdEdXV3M3FLUmlBZDNyYmNFdGpUallJb2Y2V2FIc0NtelZQV0NNeCtjZ2g4dExxV01LYU1Xc1VqTHFvMlJ0SklRMG9Pem1lcnBRdTRlc1pnc09Oa0d4SDdkMGtkdlRUMTdzNE9NVTdWSThaaGpnR2FNK0FxOWlFTnU4UGlmMXVkejA3TXd2S1dmOEdsVm9DRVkwNFBDNVdkVGFYWUZiUjh2TnZMNSszS2dmYjV4Tk15YTlSYW1KaXluYU1sR1RWdEZscjZiYTl1K3BxbkVYNHVNdVJSZ2pTWUVock43dXRGRmU2bHFhbDdOZmt3NWltQUdIeW5QcGJrOFZtWTB4c3RucHRsRkNWQ1l0elR1Qk44M1FwTUxqVHRldmRQelNVbko3ZThta2p4WjM5ZlhiS0RmbGRacWJ2VStUVWdHbkJWRjZmUTJpUEhnNFcxNlVXVXd2emJrMTZzTVpFK1BuMHB2ejdKU2V1QXllczhsY3BDbWFLdW8vcCtxV3IyVWN3SUFIV3J2UDBZRXpoWEF0TEFic3NIaHA3aUdhbXZ5aWpQOHJ5cXJYVVdYOVhvb3d4eUF1Zk5CcnA0M1BPQkZYWmxrZjhNRFJpcWNweW93QXdwdXoyeCtmV3Z6L0R0ZGU5c21zenlndGNSNkMxd2JkekJsNk9scTVXTllZNG9HYXRoSk1ya1RFeDBqQVJTSEFWcys1cllrUU5YYitRZ2ZQTHNRNmdYeUluc3JlUWZtcG03UlZGWWZMODZuMWZpVU9rWXZTaGtVUHh2YnVrem95NksxaWhNMWhvM1h6VzZFdlNmWEErZHBpV0dhV2QrZG9Yekx6bUd3S1lGTENBc1JBbFBCQWhNbENGWFU3dEJVVlByOEhnVmNKSFdxK0YwMHBscitETVRkclA0enZ4WTExa05NaHhUK1NlVEdnK2Q0VjVMUUppdHlVR0pOQjhWRlpzamdZQlpNL0lJL1hDVGtqMHF5RE9wRjJBVlExN0NJalVwL0RuVDFVa0w1RjVnZGorc1Mxd2cxZ0UzZ2lnbTYwZkNYelNuUFhieUFQYklYditJRHBFMTZUaGFISVM5c2t5aGxtTUU1RjNjZnFBS2hxMkMwRTVQSDFnWWFYYUxQRGtaRzBIREpPbktXSHA1MUkwejVTT3V4OGUxV0F1WnpkSFFyVGtwOFRtalhvSStsYTB3R1pzenVicWJPM2lmUTZBL1c3dlZTWXNWM21SMEpLd2tLYzRXSGlCa21SOEkzQ0NnSTg3b09MNHF6VDVQK1JVSkJlakVPZ0FQSzhoWVB6YXRNK2VJVHAySU85eVRRbWVyb21QUnh4MXF4QWNzaWxlL3ViU2VFYmNXUUdZRUNnaGNMWTJIeUtqb2dqSDI1aE1wanBVdjFPdWdsaTRlaDJlUncwTzMyYkpqa3l1Q2dOemcwdnpsWU1TaVNzMHVvbzRNRzdoTU9qQ0VhWDF5RkUwblN2akJ6dVRuRXBLODZaOElvcUZBSXVidzhrZzlBckVhUkVXU1pJK2pINFhicDZnOUU5RW5KVDNvYVJ6RE4rTVVKQlFESG41NmE4b1VtRUJ1c094QnMvTjUrdEpFYlBrQUZEajhVR3ZPcy9JV3ZjU2dsR0JodlM3L0ZUWWZwV0dZZERZOGZQQXhXU0EzNXNUQzRwNCtMbTRBYXFJb1BlUXRmdWZLNkpoMFpoeGxic1VYT1NtWE5pZkQ1WlRBa3lEb2ZiYmNjbHhuQThXTkFxeENiUk55a2hYeFFwYUR3NjdmWFVZYnNpRzBLaHR2Mm9lSXZoOHJoUU1ZT2NFQXFYRy9lSSt6bmdPYzV5eHI4cTgySUFNMWMvRkxGT3BscXU1ZUZRWHJNWnpHY1ZDalliTFdHNUk0QlQxZXVScmxieHROT3RNaXREREVoTFhJSXluQUF2dU9FV0UzWDNOZEFmdDk0VmdhRzQyWElRdDBaWDZQZUNFL3FRRmU5cks2SHg3WVU1MEt2SDdmVzRmUytxN0tLQkp4c2dnQlg1cFNBR2gxaklyVmg1elE2dzNSZmFhaEJYbS9hQ2JDWlRqQ1VGVVR5V1pxVzlwNjJNakpQWFZxT3JQZ01PNE52NzRHa2Yrb3dmdE5WQkRRbmpGSnFIU3cxN3BYdmhXVzVLWnFlL1E0OU4vVVNUQ0FWV29RWEZJSEJIWFhlM0ZQclVEc3VHRG10Ri9oSEtUSHBla3hoaUFPUEkrU0pxNlM2SEY0STlZV3prQkpUbzQ2aVVNeldwOFBpci9SaWR1THhLWXNTa3NWOHZMbE9RdmhHWDJZbFIwT0JoQmpDK3UvZ0VjdlkwQXBLN1lrNDFOeGpQU1FuV0ZIVEY2NlVyamdldkI4Q3U1YStsMnZZU1JQdHVWRG83M2hoZE1TSG5VWDd0VGpzVlpHeEFsL1dwdGlPSUVRMWduTDI5bVg2L3RSMXRtbGtZajhXNFgrQ1NqV2NVREdZMU5wUy9DN2hTS3FpTUxNL2wyUW1TV1o3M0RkeitnaW84QkNFTllQUTQ2cW5rendYVWJxdkJreGpVUXNXZlpGZ2J1bzNyQWYrd043ak9POTAreW54NFBpM0wrMG5ZTDFTY2hEVWdBUDRnUFYvN0lkMXErMUhTaG11R2tJcVdSUGd5eE1GcVA4SGZqVG5qWHdZNWJRZmJKY3Q2T0l6S2dNSG90Ri9IZTFlZ3NheEhTcUc2d2ZkbVE1eDhOeVRGRnFCY3AyaVNvd0hSM3lrNSszNmhGN3ZYQUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzFfUFJFIiwiRklET18yXzEiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwibGFyZ2VCbG9iS2V5IiwiY3JlZEJsb2IiLCJtaW5QaW5MZW5ndGgiXSwiYWFndWlkIjoiZmY0ZGFjNDVlZGU4NGVjMmFjZWRjZjY2MTAzZjQzMzUiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJsYXJnZUJsb2JzIjp0cnVlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6dHJ1ZSwiYWx3YXlzVXYiOmZhbHNlfSwibWF4TXNnU2l6ZSI6MTUzNiwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0Ijo4LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjEyOCwidHJhbnNwb3J0cyI6WyJ1c2IiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotOH0seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTM1fV0sIm1heFNlcmlhbGl6ZWRMYXJnZUJsb2JBcnJheSI6NDA5NiwibWluUElOTGVuZ3RoIjo0LCJmaXJtd2FyZVZlcnNpb24iOjMyOTQ3NiwibWF4Q3JlZEJsb2JMZW5ndGgiOjMyLCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6MSwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjEwMH19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTEyLTIyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZdWJpS2V5IDUgU2VyaWVzIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNDEyMjIwMDUiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMi0yMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzZ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDEtMTAifSx7ImFhZ3VpZCI6ImJhODZkYzU2LTYzNWYtNDE0MS1hZWY2LTAwMjI3YjFiOWFmNiIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiYmE4NmRjNTYtNjM1Zi00MTQxLWFlZjYtMDAyMjdiMWI5YWY2IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlRydVUgV2luZG93cyBBdXRoZW50aWNhdG9yIn0sImRlc2NyaXB0aW9uIjoiVHJ1VSBXaW5kb3dzIEF1dGhlbnRpY2F0b3IiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbInNvZnR3YXJlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbInNvZnR3YXJlIl0sImNyeXB0b1N0cmVuZ3RoIjoyNTYsImF0dGFjaG1lbnRIaW50IjpbImludGVybmFsIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDU3pDQ0FmS2dBd0lCQWdJVVczWEs4eXl3YkFXbGlnbGl4SUY2M2R2cVl5OHdDZ1lJS29aSXpqMEVBd0l3ZkRFTE1Ba0dBMVVFQmhNQ1ZWTXhFVEFQQmdOVkJBZ01DRU52Ykc5eVlXUnZNUTh3RFFZRFZRUUhEQVpFWlc1MlpYSXhFekFSQmdOVkJBb01DbFJ5ZFZVc0lFbHVZeTR4SWpBZ0JnTlZCQXNNR1VGMWRHaGxiblJwWTJGMGIzSWdRWFIwWlhOMFlYUnBiMjR4RURBT0JnTlZCQU1NQjNSeWRYVXVZV2t3SUJjTk1qTXhNVEF6TWpBek5qVXhXaGdQTWpBMU16RXdNall5TURNMk5URmFNSHd4Q3pBSkJnTlZCQVlUQWxWVE1SRXdEd1lEVlFRSURBaERiMnh2Y21Ga2J6RVBNQTBHQTFVRUJ3d0dSR1Z1ZG1WeU1STXdFUVlEVlFRS0RBcFVjblZWTENCSmJtTXVNU0l3SUFZRFZRUUxEQmxCZFhSb1pXNTBhV05oZEc5eUlFRjBkR1Z6ZEdGMGFXOXVNUkF3RGdZRFZRUUREQWQwY25WMUxtRnBNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVOQXZidGNjTXI3ai9TUldtcUlFWlRSV05KeWo2bXNZcjVsR2VBZ2RTR3lDOU8wMzU2UkllY3VhVmlPcXowRHhnUzFmLzVLUGJacDF0MHlEMmZWUlg5Nk5RTUU0d0hRWURWUjBPQkJZRUZBNXRMMTBnODh0MnFYbFBsaElTSTJkSXpsYVZNQjhHQTFVZEl3UVlNQmFBRkE1dEwxMGc4OHQycVhsUGxoSVNJMmRJemxhVk1Bd0dBMVVkRXdFQi93UUNNQUF3Q2dZSUtvWkl6ajBFQXdJRFJ3QXdSQUlnWGZ1dmpzcCs0djVpR09xbmdVZ09nMWhtYmdGUEZNZ0lqeVd4Q0txdy9kOENJRmltTE5YTERJd0Erb0liUDF5T2ZxRTh4azZxNy80TFdPVllrUkFMb0JDMiJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUJBQUFBQVFBQ0FZQUFBQi9IU3VEQUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBRjBLU1VSQlZIZ0I3TjE5ako3bGZTZjZDMnppQVk5anh1QVpEMmFoWUNmbm5PaWtvRVE1U3VWSVNjN21sS3BObFFybmp6UlVjYzVxU1Z1emxUWndDbG1wTVEzMGFCT3pCYTFXSGdvNTJ0V01OalE2MGxpTkRwRktUcnB0VnBtMjJpb1JKTkxaczRrZFVtTHd2TmdlZzJjY0R5OW1uOTlqaGhqamwzbDVudWUrci92NmZLUlowMDFLc1ptNW4vdjZYcitYeXo3dzBWOS9QUUVBQUFDTmRua0NBQUFBR2s4QUFBQUFBQVVRQUFBQUFFQUJCQUFBQUFCUUFBRUFBQUFBRkVBQUFBQUFBQVVRQUFBQUFFQUJCQUFBQUFCUUFBRUFBQUFBRkVBQUFBQUFBQVVRQUFBQUFFQUJCQUFBQUFCUUFBRUFBQUFBRkVBQUFBQUFBQVVRQUFBQUFFQUJCQUFBQUFCUUFBRUFBQUFBRkVBQUFBQUFBQVVRQUFBQUFFQUJCQUFBQUFCUUFBRUFBQUFBRkVBQUFBQUFBQVVRQUFBQUFFQUJCQUFBQUFCUUFBRUFBQUFBRkVBQUFBQUFBQVVRQUFBQUFFQUJCQUFBQUFCUUFBRUFBQUFBRkVBQUFBQUFBQVVRQUFBQUFFQUJCQUFBQUFCUUFBRUFBQUFBRkVBQUFBQUFBQVVRQUFBQUFFQUJCQUFBQUFCUUFBRUFBQUFBRkVBQUFBQUFBQVVRQUFBQUFFQUJCQUFBQUFCUUFBRUFBQUFBRkVBQUFBQUFBQVVRQUFBQUFFQUJCQUFBQUFCUUFBRUFBQUFBRkVBQUFBQUFBQVVRQUFBQUFFQUJCQUFBQUFCUUFBRUFBQUFBRkVBQUFBQUFBQVVRQUFBQUFFQUJCQUFBQUFCUUFBRUFBQUFBRkVBQUFBQUFBQVVRQUFBQUFFQUJCQUFBQUFCUUFBRUFBQUFBRkVBQUFBQUFBQVVRQUFBQUFFQUJCQUFBQUFCUUFBRUFBQUFBRkVBQUFBQUFBQVVRQUFBQUFFQUJCQUFBQUFCUUFBRUFBQUFBRkVBQUFBQUFBQVVRQUFBQUFFQUJCQUFBQUFCUUFBRUFBQUFBRkVBQUFBQUFBQVVRQUFBQUFFQUJCQUFBQUFCUUFBRUFBQUFBRkVBQUFBQUFBQVVRQUFBQUFFQUJCQUFBQUFCUUFBRUFBQUFBRkVBQUFBQUFBQVVRQUFBQUFFQUJCQUFBQUFCUUFBRUFBQUFBRkVBQUFBQUFBQVVRQUFBQUFFQUJCQUFBQUFCUUFBRUFBQUFBRkVBQUFBQUFBQVVRQUFBQUFFQUJCQUFBQUFCUUFBRUFBQUFBRkVBQUFBQUFBQVVRQUFBQUFFQUJCQUFBQUFCUUFBRUFBQUFBRkVBQUFBQUFBQVVRQUFBQUFFQUJCQUFBQUFCUUFBRUFBQUFBRkVBQUFBQUFBQVVRQUFBQUFFQUJCQUFBQUFCUUFBRUFBQUFBRkVBQUFBQUFBQVVRQUFBQUFFQUJCQUFBQUFCUUFBRUFBQUFBRkVBQUFBQUFBQVVRQUFBQUFFQUJCQUFBQUFCUUFBRUFBQUFBRkVBQUFBQUFBQVVRQUFBQUFFQUJCQUFBQUFCUUFBRUFBQUFBRkVBQUFBQUFBQVZZbTRES2ZlYWFJMmxYNndzQW9Fbm1UbCtleG1jM3BmMnRyL2hyb0ZxWGZlQ2p2LzU2QWlxMzVZcFgya0hBYmU5OE1RRUE1TzZwRnplbXNXUFhwc2xYcmtoQVBRZ0FvR2EycjF0SVg3cnVVRHNRQUFESXpkTW5yMHBqUjY5TnovejhxZ1RVaXdBQWFpb3FBYUlpUUJBQUFPUWdTdnhIcG9mU1V5OXRURUE5bVFFQU5SVWZucEdjLzJvckNEQWZBQUNvSzMzK2tBOFZBSkFCOHdFQWdEcUtjditIcG9iMStVTW1CQUNRa1IzclQ2VGRnOVBhQWdDQVNoMDQxWmRHWmdiMStVTm10QUJBUmlibU42U0paemVZRHdBQVZDSksvRWVQYms3N1p3Y1NrQjhCQUdSb2NUNkF0Z0FBb0ZlaXp6K20rK3Z6aDN4cEFZRE1SUlhBN3MzVGFVZi9pUVFBMEduUjUvL296R0E2c05DWGdMd0pBS0FodEFVQUFKMFVnLzMyVGc3cjg0Y0dFUUJBdzBRSXNIUGdXT3EvL0hRQ0FGZ3VhLzJndVFRQTBFRFdCZ0lBSy9IVWl4dlR5TXlRZ3o4MGxBQUFHaXlDZ0QrOS9qbHRBUURBUlVXZmZ3ejRVKzRQelNZQWdBS1lEd0FBbkUvMCtjZkJQellNQWMxbkRTQVVJRDdVSitiNjArMERzMmxYS3dnQUFNcW16eC9LcEFJQUNtTStBQUNVTFM0Rm9zOC9iditCc2dnQW9GQzNYSGt5M2J2bHNMWUFBQ2lFUG45QUFBQ0ZNeDhBQUpvdFN2eEhqMjVPKzJjSEVsQTJNd0NnY0RFZklHNENicjk2TnUwY09KWUFnT1lZYmQzNDYvTUhGcWtBQU41a1BnQUFORU9VK3o4ME5helBIM2dMRlFEQW0rSWxZZS9rY0hxbTlkS2dMUUFBOHZQbVo3aytmK0E4VkFBQUY3VHo2dGwwKzhBeFFRQUExTnppV3I4WThnZHdJU29BZ0FzYVB6NlFKdWI3dFFVQVFJMHRIdnoxK1FPWG9nSUFXSktvQXZqRG9jUHAxcXRPSmdDZ2V0YjZBY3NsQUFDV3hkcEFBS2hXOVBtUFRBKzFxL1FBbGtNQUFLeEloQUN4TnJELzh0TUpBT2kreFQ1L2EvMkFsUklBQUN0bWJTQUE5TVpUTDI1TVk4ZXV0ZFlQV0JVQkFMQnFFUVQ4NmZYUGFRc0FnQTdUNXc5MGtnQUE2Qmp6QVFDZ002TEVQL3I4bjNwcFl3TG9GR3NBZ1k2Smw1U0p1ZjUwKzhCczJ0VUtBZ0NBNWRIbkQzU1RDZ0NnSzh3SEFJRGxpWEwvaDZhRzlma0RYU01BQUxwcXgvb1RhZmZndExZQUFMaUFBNmY2MHNqTW9ENS9vT3UwQUFCZE5URy9JVTA4dThGOEFBQTRSNVQ0ang3ZG5QYlBEaVNBWGhBQUFEMFI4d0hpWmtOYkFBQ2tkcDkvVFBmWDV3LzBraFlBb09laUNtRDM1dW0wby85RUFvQ1NSSi8vb3pPRDZjQkNYd0xvTlFFQVVCbHRBUUNVSWdiNzdaMGMxdWNQVkVvQUFGUnVzUzFBRUFCQTAxanJCOVNKQUFDb0JXc0RBV2lhcDE3Y21FWm1oaHo4Z2RvUUFBQzFFa0hBbDY0N2xMYXZXMGdBa0tQbzg0OEJmOHI5Z2JvUkFBQzFaRDRBQUxtSlB2ODQrTWZtRzRBNkVnQUF0Ullod0s3V0Z3RFVsVDUvSUJjQ0FLRDJ6QWNBb0s0bTV2cmJmZjV4K3c5UWR3SUFJQnN4RnlEbUEyZ0xBS0JxK3Z5QkhBa0FnT3lZRHdCQVZhTEVmL1RvNXJSL2RpQUI1R1p0QXNoTURGZUtHNWRmYlFVQjVnTUEwQ3VqclJ0L2ZmNUF6bFFBQUZrekh3Q0Fib3R5LzRlbWh2WDVBOWxUQVFCa0xWN0c5azRPcDJkYUwyZmFBZ0RvcERjL1kvVDVBdzJoQWdCb0ZQTUJBRml0eGJWK01lUVBvRWxVQUFDTnNqZ2ZRRnNBQUN1eGVQRFg1dzgwa1FvQW9MR2lDbUQzNXVtMG8vOUVBb0NMc2RZUEtJRUFBR2c4YlFFQVhFajArWTlNRDZXSitmNEUwSFFDQUtBWUVRTHNIRGlXK2k4L25RQW8yMktmdjdWK1FFa0VBRUJSckEwRTRLa1hONmF4WTlkYTZ3Y1VSd0FBRkNtQ2dEKzkvamx0QVFBRjBlY1BsRTRBQUJUTmZBQ0E1b3NTLytqemowMHhBQ1d6QmhBb1dyd01Uc3oxcDlzSFp0T3VWaEFBUUhQbzh3ZDRLeFVBQUc4d0h3Q2dPYUxjLzZHcFlYMytBR2NSQUFDYzQ1WXJUNlo3dHh6V0ZnQ1FvVGp3NzUwYzF1Y1BjQjRDQUlBTE1COEFJQjlSNGo5NmRIUGFQenVRQURnL013QUFMaURtQThRTjB1MVh6NmFkQThjU0FQVVVmZjR4M1YrZlA4REZxUUFBV0FMekFRRHFKL3I4SDUwWlRBY1craElBbDZZQ0FHQUozdXdwYmIxc2Fnc0FxSlkrZjRDVlVRRUFzQUk3cjU1TnR3OGNFd1FBOUpDMWZnQ3Jvd0lBWUFYR2p3K2tpZmwrYlFFQVBmTFVpeHZUeU15UWd6L0FLcWdBQUZpbHFBTDQwbldIMHZaMUN3bUF6b28rL3hqd3A5d2ZZUFVFQUFBZFltMGdRT2RFbjM4Yy9HTWpDd0NkSVFBQTZMQUlBWGExdmdCWVBuMytBTjBqQUFEb0Ftc0RBWll2eXYwZm1ocHUzLzREMEhrQ0FJQXVpaURnVDY5L1Rsc0F3RVhvOHdmb0RRRUFRQStZRHdEd2RsSGlQM3AwYzlvL081QUE2RDVyQUFGNklJWll4YzNXcjdhQ0FQTUJBRks3eno5dS9mWDVBL1NPQ2dDQUhqTWZBQ2laUG4rQTZnZ0FBQ3F5WS8ySnRIdHdXbHNBVUlRNDhPK2RITmJuRDFBaExRQUFGWm1ZMzVBbW50MWdQZ0RRYUl0ci9hTGNINEJxQ1FBQUtyWTRIMEJiQU5BMCt2d0I2a1VMQUVDTlJCWEE3czNUYVVmL2lRU1FLMnY5QU9wSkFBQlFROW9DZ0J4Rm4vL0k5RkNhbU85UEFOU1BBQUNneGhiYkFnUUJRSjB0OXZudmIzMHA5d2VvTHdFQVFNMVpHd2pVMlZNdmJreGp4NjYxMWc4Z0F3SUFnRXhFRVBDbDZ3Nmw3ZXNXRWtEVjlQa0Q1RWNBQUpBWjh3R0FLa1dKLytqUnpXbi83RUFDSUM4Q0FJQk1SUWl3cS9VRjBDdWpyUnQvZmY0QStSSUFBR1RNZkFDZ0Y2TGMvNkdwWVgzK0FKa1RBQUEwUU13RmlQa0EyZ0tBVG9vRC85N0pZWDMrQUtrWkJBQUFEV0krQU5BSit2d0JtbWx0QXFBeG5ucHBZL3VtN3Zhclo5UE9nV01KWUxuR1p6ZTFwL3ZyOHdkb0hoVUFBQTFsUGdDd0hOSG4vK2pNWURxdzBKY0FhQ1lWQUFBTjlXYnZidXVsWGxzQWNDSDYvQUhLb1FJQW9CQTdyNTVOdHc4Y0V3UUFiVkhpSCtYKzF2b0JsRU1GQUVBaHhvOFBwSW41Zm0wQlFIcnF4WTFwWkdiSXdSK2dNQ29BQUFvVVZRQi9PSFE0M1hyVnlRU1VJL3I4WThDZmNuK0FNZ2tBQUFwbWJTQ1VJVzc2UjZhSDJwdENBQ2lYQUFDQWRnZ1Fhd1A3THorZGdPYlE1dy9BMlFRQUFMUlpHd2pORXVYK0QwME50NmY4QTBBUUFBRHdGaEVFL09uMXoya0xnRXdkT05XWFJtWUc5ZmtEOERZQ0FBRE95M3dBeUV1VStJOGUzWnoyenc0a0FEZ2Zhd0FCT0s4WUZqWXgxNTl1SDVoTnUxcEJBRkJmMGVjZjAvMzErUU53TVNvQUFMZ2s4d0dnbnZUNUE3QWNBZ0FBbHV5V0swK21lN2NjMWhZQUZZc0QvOTdKWVgzK0FDeUxBQUNBWlRNZkFLcXh1Tll2eXYwQllMbk1BQUJnMldJK1FOdzgzbjcxYk5vNWNDd0IzYWZQSDREVlVnRUF3S3FZRHdEZEZYMytjZkJYN2cvQWFxa0FBR0JWM3V4RmJoMVN0QVZBNThUUDFzajBVSnFZNzA4QTBBa3FBQURvcUoxWHo2YmJCNDRKQW1DRkZ2djg5N2UrbFBzRDBFaytWYWlkS0NNZWNuQ0FiSTBmSDBqM0hMcWhQU2NBV0o2SnVmNzB1Lzk0azE1L3lGaTh4MnFMbzY1OHNsQTdVZkw0K0kwL1RidXVPWktBUEMyMkJkeng3TFowWUdGZEFpNHUrdnp2L3RrTmFjOEwxN2QvZm9EOHJMLzhkUHY5OWZFYm56V3pnOXBhcy9XbWQvMXhnaHFaZXZXS3RHbk5hK20zTngxdHA2ZnpwOWVrZ3d0OUNjalBYT3ZuOThrWEI5SlU2MEN6YmQxQzZsOXpPZ0cvRUxmOFh6MHltUDd0OUpiMjV4K1FweDNyNTlJRFd3K2xIZjF6NmE5ZmVxY3FPR3JMREFCcXFmL3kxOUxYYmo3WSt2WE1ZU0ZLSXZmTkRMVVBFVUMrWWtpZzZoNDRZL1RvdGZyOElYTzNYSFV5N2RwMHBQMXJpQXFlYUlOVHlVTmRxUUNnbGw1Ky9mTDBqc3RlVDdlKzhUQzk0UjB2cDUwRHMybkwybGZTZ1pmNzJsVUJRSDZpSlBKYnJWdVJxQVRZdm00aFFZbWkzRDhPQ0JOekcxcWZkNWNsSUQ5Ujd2KzVhMmZTdnh5YWZNdlEyOUZqbTlNL3pLOVBVRmNxQUtpMXI5MTA4RzJUeENOUmplRklTcXNnYnhFQWZPbTZRN1lGVUl3M1YyYnFEWWFzUlNWYmJMdFpyRlJkRkQvak1mc0c2a3dBUUszZGN1WEo5UEEvZWU2OC8xbDdQL0xNWVBzR0JjaFh6UHFJMWdCQkFFMFZKZjZqUnplbi9iTURDY2hYbFBuZk8zVDRncDlYRWZDNW9LTHV0QUJRYXpFUTZkWldDSEMrQjIyVUVIOTB3d2x0QVpDNUdQTDV0L01iMmdNREY5dCtvQ25HWnplbCsxKzQzcTAvWkN6VytqMTQzZlB0bS84TERiTjk2c1dOYWV6WXRRbnFUZ1VBdFJlSC8yZ0Z1SlJvQy9qTFZ1cHFVQ0RrSzM3ZW94ckEvbVJ5RjMzK2o4NE1wZ08yMkVDMm9zLy9zMitVKzE5S2xQNGIvRWNPVkFCUWUzRXJHRDFXNzdueTV4Zjk3MFZaVnF4ZXNUWVE4aFUvNzlIV2MvRFV1dlEvWFhuSzJrQ3lFd2VBUGEwYi83Z0pQUGJhMmdUa2FXZnIwQjlyL1c1WlFtVmFWUHI4OVlsM0pzaUJDZ0N5Y081YXdFczU4d0syVlJBQW1UTWZnRnhFbjM4Y0FxejFnN3pGZ1gvM3RkTnBlOStwSmYzM3JmMGpOeW9BeUVLc0JYeWw5VUwxZ2ZYelMvcnZ4NjNoYjE1OTNId0F5TnppZkFCckE2bXo2UDM5VjgvZmtQN2g1SHByL1NCVFovZjViMXI3NnBMLzkwWm1oc3o0SUNzcUFNaks0emMrbTdhdDRCQVE4d0ZHanhyTUFqbUxLb0RkbTZmVGp2NFRDZW9nK3Z6ajg4WExQK1FyK3Z3L09YRHN2R3Y5THNYYVAzSWtBQ0FyRjFzTGVDbnhrSTRYTmV0WklHL2FBcWhhbFBpUFRBLzVQSUhNeGVmSjdzR3BaUi84RjkzOXN4c0VnR1JIQUVCMkhyNyt1U1VOWkxtUUF3dnIyZ09hYkF1QXZDMXVDeEFFMEN2Ni9LRVo0ajF5MTZZanEzcWZqTmFmdlZQRENYSWpBQ0E3OGJMLzJJM1Byaml0WFJRUDd0Rmoxd29DSUdQV0J0SXJVZTcvVU90bDM2QXZ5RmVVKzkvVnV2SHZ4R2VHdFgva3loQkFzaE5yd3Q1eDJldnAxbFdrdG1GNzMwSjdiZUJsbDEyVy91dXBLeE9RbjhXMWdkOTZhV1A3Sm1mVDJ0Y1NkTktCVTMzcFR3NWYxMTdyTjJlZ0xHUXBEdjZmM25RMC9kRjF6NmYzTEhHNi84WEVYS240N0lFY3FRQWdTOHRkQzNncDVnTkFNNWdQUUtkRWlmL28wYzFwLyt4QUF2SVY0ZkM5UTRjNzlya1E3NHkvKzQ4M2FRTWlXeW9BeUZLc0JaeDlkVzM3QnI4VFlzVlkvTDJzRFlTOHhkckEvY2MzdGY5NnRWVkNsQ3Y2L085LzRYckR2U0JqMjlhZFNsOGNmcUc5MWkvZTh6b2wxdjZwSENWbktnREkybW9IQWw2SStRQ1FQL01CV0M1OS9wQy9LUGYvYk92WkgydjlPczNhUDVwQUFFRFdWck1XOEZLMEJVQXpiRisza0w1MDNTRnRBVnhRUE8vM1RnNjc4WWZNN1d3ZCtpUDQ3VlNMNkxrTS9xTUp0QUNRdGFsWHIyaS8xTWNMZnFjdHRnWEU3ZUhCbC90VUEwQ21qcjIydHQwV0VEL0QyMXJQaWs2V2dwSzM2T0g5ODJQWHRNdjk0L01FeUZOVWcwWlY2RWMzbkdnUGl1NkdxQTUxS1VRVHFBQWdlNTFhQzNncDJnSWdmL0c4dVAzcTJmWXRFV1dMUHYrbzhqTElDL0kxMUhxbTN6ZDB1Q3Z0b0dlTDUwUU0vblA3VHhPb0FDQjduVm9MZUNteE5uRG53R3k2TEowWk5QYnk2NWNsSUMveHZQaUhrK3ZiYXdPakVxQWIxVVBVVy9UNVI3bi9reTllN1RrT21WcGM2L2ZBZGMvM3BMMHJLb1dzL2FNcFZBRFFDTEVXOExFYmY5cXpIbC96QWFBWnJBMHNSenkzUjZhSDBzUjhmd0x5MWUwKy8zTVovRWZUQ0FCb2pCM3JUNlFIdGo2ZmVpaytGTzQrZElPMkFNamN6cXRuMnhPakJRSE5FNlc3VWU2L3YvV2wzQi95RldYK3V6WWQ2WHE1LzdtaVlzaUZEMDBpQUtCUnVyVVc4RkxNQjREOFdSdllQQk56L2UyZDNmcDJJVi9SNTMvWDVxbjJZT1plKzI3ckdSSkRRcUZKQkFBMFNqZlhBbDVLOUJidm54MUlvMGV2VFVDK0lnajR3NkhEWFo4clF2ZEVuMyswYVZuckIvbUtQdjlQRGh4clYyZjFxdHovWE5iKzBVU0dBTklvc2NZcFBpVGVjK1hQVTYvRklNS29Qb2pidy9sV0dCQ0RBb0g4UkpnWFF3S3REY3hQbFBoLzljaGcrcmZUVzZ6MWc0enRXRCtYSHRoNnFIM3IzNjIxZnBkaTdSOU5wUUtBeG9tQmdGKzcrV0JsYWZHaVoxbzNVRitaR3RZV0FKbUx0b0NkRmQ1QXNUUlJmYVhQSC9KV1ZaLy91ZUxXLzU1RE43ajlwNUZVQU5BNEw3OStlVS9XQWw1S2xCSEgyc0F0YTE5SkIxN3VhMWNGQVBtSk12Sy9PZkZPYXdOcktzcjk0MFU5Vm5SWjZ3ZDVpbkwvejEwN2svN2wwR1F0aHJIRzdCQXRSRFNWQ2dBYTYyczNIYXpOUk85SWtQY2YzNVRHWndjU2tLOTRwdnpwOWMvWkZsQUQ4VnlONmR4ZTBpRnZ1NjQ1VW1tZi83bXMvYVBwVkFEUVdOR0RmOXZHZWt6empwdkRENnlmTng4QU10Y2U5dGtLODh3SHFNNWluLy8vZWZnNmZmNlFzU2p6aisxTlZmYjVuMC9jL250UG84a0VBRFJXdkJqZWV1WEpXdDNVeFdFaFB1aTBCVURlNHVVd0JnVkd5NUZ0QWIwelBydXB2WkxMclQva0s5YjZQWGpkOCsyYi83cUZxREg0Yit5WWJVNDBteFlBR2kwTy85RUtVRmZSRWpEK3htMGlrS2Q0enNTZ3dLandvVHVpei8vUm1jRjB3SzBjWkN2Ni9ELzdScmwvWFZuN1J3bFVBTkJvVWE1YjFWckFwWGpQbGFmYUZRSGFBaUJmOFp5SkFYU3grU05LV3JVRmRFNjhpTzlwM2ZqSGpkeXgxOVltSUUreFNTWFcrbFU5M2Y5aW9zTG9yMCs4TTBIVHFRQ2c4ZXF5RnZCU3pyem9iaFVFUU9haUVpQXFBZ3dLWExubzg0K1hjV3Y5SUc5eDROOTk3WFRhM25jcTFabTFmNVJFQlFDTkZ6MjZyN1JlSUdNSVg1M0ZyZUZ2WG4zY2ZBRElYSVI0Znp1L3dkckFGWW9lM0gvMS9BM3BIMDZ1dDlZUE1uVjJuLyttdGErbXVyUDJqNUtvQUtBWWo5LzRiSHRxZHk3R2psNmJSbzhhUkFNNU14OWc2YUxQUDU1N1hzSWhYOUhuLzhtQlk3VmE2M2NwMXY1UkdnRUF4YmpseXBQcDRYL3lYTXBKZkNqRkMvRlRMMjFNUUw2MEJWeFlsUGlQVEE5NXprSG00am0zZTNBcW00UC9vcy85NHk5cHY2UW9BZ0NLRXZ0bTZ6eUE1a0lPTEt4ckQ4S3lMUUR5dHZQcTJmYk5tQ0JBbno4MFJieFg3ZHAwSk12M3EyZzUyanMxbktBa0FnQ0tFaS9kajkzNGJIYnA5S0w0b0JvOWRxMGdBREttTGVCTXVmOURyWmR1QTdjZ1g5SG52eXZ6WjVtMWY1VElFRUNLRXV1NjNuSFo2K25XREZQcXNMMXZvYjAyY01PYTAvcGtJVk9MYXdPLzlkTEc5bzNacHJXdnBWSWNPTldYL3VUd2RlMjFmbk1HblVLV29zLy8wNXVPcG51M0hFN3ZxZmwwLzR1Sk9VdnhMSWJTcUFDZ09MbXNCYndVOHdHZ0dVcVlEeEFsL3FOSE42Zjlzd01KeUZlRWx2Y09IYzcrZVdYd0h5VlRBVUJ4WWkzZzdLdHIyemZwT1lzVlkvRjcyTDd1VlByL1RsMXBiU0JrS29aUDdUKytxZjNYdVZZblhVejArZC8vd3ZXcWxpQmpjZkMvcjNYd2o1TC9lUC9JWGF6OU0vaVBVcWtBb0ZpNURnUzhFUE1CSUg5Tm1nK2d6eC95RitYK24yMDlrMko0YVZORUs5THZQdmRMQ1VvbEFLQllPYTRGdkJSdEFkQU0yOWN0cEM5ZGR5akxNdHQ0RHUyZEhIYmpENW5iOWNiQlAvZVd5WE1aL0VmcHRBQlFyS2xYcjJpL1hNZUxkbE1zdGdYRTdXSDgvbjcyOHJvRTVPZllhMnZiYlFGUjBiT3Q5WXpLb2VRMit2ei8vTmcxNmFISjY5TFBYbmxIQXZJVTFaRlJKUm52RXpFNHVVbWlXdElsQ2FWVEFVRFJtaklROEVLMEJVRCtJcWo4MVZhb0Y3ZHhkUlY5L2xGOUZDRUFrS2RZNnhkOS9rMXFqenhiM1ByZmMrZ0d0LzhVVHdVQVJZdUJnRG12QmJ5VVdCdTRjMkEyWGRiNjY4bFhyekFvRURJVTYvS2luRDdXQmtZbFFKMnFscUxQUDhyOW4zeng2dGJ6OUxJRTVHZHhyZDhEMXozZjZHMGs0OGMzV2ZzSFNRVUF0S3NBSHJ2eHA0MyswQXZtQTBBejdGaC9JdTBlbks3MG1lVjVBczJ3YytCWWUvQm9VeXNoRjFuN0I3OGdBSURVeklHQUZ4SWZnbnRlMkdyOURXUXVabjNFaTNzdmc0QW84WTl5Ly8ydEwrWCtrSzhvODkrMTZVaGp5LzNQRlpWS0FrczRRd3NBcERNREFXOXRoUUJOcndJSVVVTDhtMWNmVDF2V3ZwSU92TnluTFFBeUZTSGUzODV2NkZsYndNUmNmN3IvaGV2YkpiVEsvU0ZQN1Q3L0xZZlRuZGZPRlBIT0U3N2JlbmI5WDBjR0UzQ0dDZ0I0UTBsVkFHZUxNdDdSMWhlUXIzaVIzNzE1T3Uzb1A1RTZMZnI4NHpsaHJSL2tLL3I4UHpsd3JKRnIvUzdGMmo5NEt4VUE4SWFvQW9nUHhmZGMrZk5Va2lqL2kxTGlxQVRRRmdCNWlrR0JmMzNpblIxZEd4Z2wvbDl0M1pyOTIra3Q3ZWNqa0tmNGpQK2o0UmNhdWRidlVxejlnN2RUQVFCbmFmcGF3RXM1c0xBdTdYbmhlbXNESVhNeEcyRG5LbTc2b2lwSW56L2tyYlErLzNOWit3Zm5wd0lBenRMMHRZQ1hzbW50YSsyMWdlWURRTjZpWFA5dlRyeHoyZk1Cb3R3L1hwajErVU8rb3R6LzgwT1Q2YTdOMDhYMCtaL1B5TXlRMWlVNER4VUFjQjVmdStsZzBSK2FJUkx6L2NjM3BmSFpnUVRrSzU1bGYzcjljeGQ5cHNYUGUweko5cklNK1NxNXovOWMxdjdCaFFrQTREeEtIUWg0UHZaOVF6T2NiMjFnbFBpUEh0MmM5Z3Y2SUd0UjVuL3YwT0hpTHk4VzdYbisralF4MzUrQXQ5TUNBT2RSMGxyQVM0a1M0aGdjcEMwQThoWkRQcU9xSjBTYjAvanNwdlphUDdmK2tLOXQ2MDZsTHc2L2tIYTF3cjFPRFA5c2doajg5L1haYXhKd2Zpb0E0QUxpOEIrdEFMeFZ0QVNNdHc0UkJnVkN2cUk4MklBL3lGZVUrMysyZGVpUGNuL2V5dG8vdURnVkFIQUJjMi9jZEpjNkVQQkMzblBscVhaRmdMV0JrQzhEL2lCZnNlSGpnYTJIaXAzdWZ6R3h3U1NHbUFJWEp2NkhpNGkrV0xka2J4ZlZFZmR1T2R5dWtQQUNBZ0RkRjUrM2o5M3cwN1I3ODNUeFEvN09KMjc5djJWZUVWeVNDZ0M0aUZnTCtFb3JBUGpBK3ZuRTIwVy9ZUXdXTXg4QUFMcGpxQlc2UDNqZDgrMCsvMDFyWDAyY243Vi9zRFN1TnVFU3hvOFBwR2RPK2tDNW1OczJ2cGlldU9uZ21TRkViaVVBWU5XaXp6OCtWeCsvOFZuVmRwY1F0LysyRmNIU0NBQmdDYUtuakV1TEZXT1B0VjVVb2lvQUFGaVorQng5NHVZRDdjOVZ3ZnFsN1hsaGF3S1dSZ0FBU3hBbFpSTno5c2t1eGRuekFZYXNVUVNBSll1Yi9vZXZmNjc5T2VyZ3Z6U3g5czlRWWxpNnRRbFlrdWd0aXc5bUg4aExFMEZBdEFYRUIvUG9zV3V0RFFTQUM0akFQTXI5VmRBdDM5Z3hWWnF3SElZQXdoTEZXc0IzWFBhNnRZREx0TDF2SWQyMjhhVzBydlZuWnpnUEFQeEM5UGwvZXRQUjlvMy9lL3BPSlpiSDJqOVlQaTBBc0F5eEZuRFNUZmF5OVYvK1dydVBNZG9DM0c0QVFFbzcxcysxQi96cDgxK1plQjhiTTZNSmxrMEFBTXNRVlFBK2JGWnVjVDVBOURlYUR3QkFpUmI3L0IvWWVxajl1Y2pLZUIrRGxSRUF3RExGbWhsckFWY25YbjVpUHNDOVE0Y0ZBUUFVSWNyOTc5bzgzVDc4Vyt1M09nZE85Vm43Qnlza0FJQVZzQmF3TTI3YitHTDdSV2pud0d3Q2dLYUtBWCt4MXUvMmdXT0oxYnYvc0xWL3NGSUNBRmlCR0dZbmVlNk1LSC9jdlhuS2ZBQUFHaWR1K3VQelRaOS81OFIySWZPWVlPV3NBWVFWR3BrZVREdjZUL2hBNzVERitRQzNYSG5TMmtBQXNoYnRiZmNOSFZicTMySHR3WC9XL3NHcXFBQ0FGWXFCZ09Pem14S2RGVzBCTVI4Z3FnTE1Cd0FnSjR0OS92RTU1dkRmZVZGOTZmWWZWa2NBQUt0Z0xXRDN4RnlBbUErZ0xRQ0FIT3djT0tiUHY0dXMvWVBPRUFEQUtrUVZ3TjdKNFVSM0xMWUZSUC9rdG5XbkVnRFV6ZUphdjkydG0zOXRnZDNqOEErZFlRWUFyRklNQkl5MWdFcjl1aWVDZ01kdi9HbDc4SS81QUFEVWdUNy8zdm51WEwvaHk5QWhLZ0NnQS9iTkRDYTZiM0UrUUt4VEFvQXFSSjkvZkE0OWZ1T3pEdjg5OHVqTVVBSTZRd0FBSFhCd29jOUF3QjZLZFVyV0JnTFFhL0c1RTMzKzF2cjFqclYvMEZrQ0FPaVFzYVBYcExuVGZxUjZaWEUrd0dPdEd4amJBZ0RvcHNVKy8vamNjZkR2SFd2L29QUFdiTDNwWFgrY2dGVjcrZlhMMHl1dEFPQUQ2K2NUdmJOcDdXdnRqUUZiMXI2U0RyemNsK1pQcjBrQTBBbFI3di81b2NuMmFyOHR3dWFlRzVrWmFzOWFBanJIRUVEb29QSGpBKzMxUDE0U2VpL21BOFFOemJkZTJwaEdUUW9HWUJYaTRQL0oxdWQ1ZkthNzhhOUczUDRiL0FlZHAxNFpPc3hhd09wRThHSStBQUNyRVdGeURQalQ1MSt0a1dtRC82QWJWQUJBaDFrTFdMM0YrUUE3K2sra2ZUTkQxZ1lDY0VuYjFwMXFsL3I3L0s1ZURQNmJtTzlQUU9kZDlvR1AvdnJyQ2Vpb09JREdMVFQxRUM4U284ZXVGUVFBOERaUjd2L1oxbTEvbFB0VEQzYzh1ODNrZitnU1F3Q2hDK2JlR0VSM3ExdUVXdGpldDVCMjlNKzFCd1RHeWtZQUNEdGJoLzRIdGg1eTYxOGpNY2RuWW01REFyckREQURva3YyekE5WUMxc2hpVzBCVVprUnJBQURsaWdOL2ZCN3Mzanl0ejc5RzR0Yi9Xd2IvUVZlcEFJQXVzUmF3bnZyWG5FNGYzWERDMmtDQUFnMjF3dUFIcjNzKzdZb0JmMnNjL092RzJqL29QdGVUMEVXeEZqQUdBbEkvc1Rid2lkYnRUN3dFRGxuYkNOQm8wZWNmei90NDdpdjNyeWRyLzZBM0JBRFFaWGJTMTF1c2VYcjQrdWVzRFFSb3FPanpmK0xtQSszblBmVzE1NFd0Q2VnK0FRQjBXWlN5VGN4WlpWTm5aODhIVUEwQTBBeHgweDhCcno3LytvdHRQWWIwUW0rc1RVRFhSVTlidkloNEFhbTNDQUtpUE5UYVFJQjhSWkI3MSthcDl2WVg4akIyVExVazlJb0tBT2lCNkdzYm45MlV5TVBaOHdFQXlNTmluLy9qTno3cjhKK1JhSldjRkxoRHp3Z0FvRWRpTGFBUHVMeEV2MmkwQlpnUEFGQnZPOWJQdFEvKzhkeFdiWmVQZUM4YU15c0pla29BQUQweWQzcU5EN2tNTGM0SGVLejFZbWsrQUVDOUxQYjVQN0QxVVB0NVRWNjhGMEh2Q1FDZ2gySzlqYldBZWRxK2JxSGRGbkR2MEdGQkFFREZvdHovcnMzVDdjTy90WDU1T25DcXo5by9xSUFBQUhyTVdzQzh4WHlBZU9IY09UQ2JBT2k5NlBPUHRYNjNEeHhMNU92K3c5YitRUlVFQU5CanNSWlE0cDIzS0RQZHZYbktmQUNBSG9xYi9uanU2dlBQWDJ6Yk1SY0pxbUVOSUZSZ1pIb3c3ZWcvNFFVbWM0dnpBVzY1OHFTMWdRQmRFbTFYOXcwZFZ1cmZFTzNCZjliK1FXVlVBRUFGWWlDZ3RZRE5zYmcyTUtvQ3pBY0E2SXpGUHY5NHZqcjhOMGRVUWJyOWgrb0lBS0FpMWdJMlQ4d0ZpUGtBMmdJQVZtZm53REY5L2cxazdSOVVUd0FBRllrcWdMMlR3NGxtV1d3TCtKb2JLNEJsaStmbVl6ZjhOTzF1M2Z4cmsyc2VoMytvbmhrQVVLRVlDQmhyQVIwVW15ZUNnS2dHaUVGSDVnTUFYSncrLythTHowTkRrS0Y2S2dDZ1l2dG1CaFBOdFRnZllKZXAxUUJ2RTMzKzhYeDgvTVpuSGY0Ynp1QS9xSWMxVzI5NjF4OG5vREt6cjYxdEh3emZjK1hQRTgwVkw3WWYzZkJTbWorOUpoMWM2RXNBcFl0NUtWKysvbWZwQSt2bjB6c3VlejNSWEc3L29UNVVBRUFOakIyOUpzMmQ5dVBZZEdmUEI3QXRBQ2hWQktMUkloWFBRNVZSeldmdEg5U0xDZ0NvZ1pkZnZ6eTkwZ29BNGhhRTV1dGZjN3E5TVdETDJsZlNnWmY3MmxVQkFFMFh3ZWRkZzlQdDFYNWJoS0RGR0prWmFzODhBdXJCbFNQVXhQaHhhd0ZMRS9NQkhyL3hwKzMrVjRDbU9ydlAzNXJVc3NSN2pkSi9xQmNCQU5TSXRZRGw2Yi84dGZTWjFvdHh0QVY0TVFhYUpzcjk0K0QvR1lOUWl6UXlQWlNBZXJFR0VHckVXc0J5TGM0SDJORi9JdTJiR2JJMkVNaGFmSTd0Mm5URTUxbkJZdkRmeEh4L0F1cmxzZzk4OU5lTlhZVWFpWU5nM0FaVHRuaHhHajEyclNBQXlFcVUrMysyZGR0Lys4Q3hSTm51ZUhhYjFrYW9JVU1Bb1dibTNoZ0lkNnRiazZKdDcxdElPL3JuckEwRXNoRjkvbjkwM2ZOdS9VbWpSNjlORTNNYkVsQS9aZ0JBRGUyZkhiQVdrTGVzRFRRZkFLaXJPUERIYzBxZlB5RnUvZmZQYmtwQVBha0FnQnF5RnBDenhkckFxQWF3TmhDb2sxanI5MkRyeGo5dS91TTVCU0hXL3YzWFUxY21vSjVjTVVKTnhWckFHQWdJaTJKdDRCT3RXN1o0MlI2eVF4dW95T0phdjNnZUtmZm5iTmIrUWYwSkFLREdvb2NPemhWbHRnOWYvNXkyQUtEbmRnNGNTMC9jZktEOUhJSnozWFBvaGdUVW13QUFhaXpXQWs3TVdhSEQyNTA5SDJEYnVsTUpvSnZpcGorQ3g5MmJwL1g1YzE2eHZjYlVmNmkvdFFtb3RlaWxpeGN2TDF5Y1R3UUJqOS80VTJzRGdhNklkcU83TmsrMTU1REF4WXdkVTdVSU9WQUJBRFVYYWZxNGFicGN3dG56QVFCV2E3SFAvL0VibjNYNDU1S2laZEh0UCtSQkFBQVppTFdBUGxoWml1akx0VFlRV0kxNGZzVEIzMW8vbGlMZVQ4Yk1MSUpzQ0FBZ0EzT24xNlNSNmNFRVM3RTRIK0N4MWd1OGJRSEFVaTMyK2Nmelk0dG5CMHZrOEE5NU1RTUFNakV4djZHOUZ0REtKWlpxKzdxRmRsdUErUURBeFVTNS8xMkRVeXFIV0xZRHAvcXMvWVBNcUFDQWpGZ0x5RXJFZklDNDFUTWZBRGpiWXA5L3JQVnorR2NsN2orOE5RRjVXYlAxcG5mOWNRS3lNUFhxRmUxK3pQZGMrZk1FeTlHLzVuUzdlaVJlOHVkUHIwa0hGL29TVUs1NEhueDU2OC9hQS83ZWNkbnJDWllycXN2Yy9rTit0QUJBWnNhT1h0TzYwVDF1TUJNcnNqZ2ZZRWYvaWJSdlpraGJBQlJtMjdwVDZhN04wOXJKV0pYMjREOXIveUJMQWdESVRBd0VqTFdBeXJsWmpiajFpeS96QWFBTVVlNy8yZGJueHUwRHh4S3Mxdmp4VGJZVFFhYk1BSUFNV1F0SXB5ek9COUQvQzgyMXMzWG9qejUvaDM4NklkNC80ajBFeUpNQUFESVVWUUI3SjRjVGRNSmlXOERYYmpyWWJnMEFtaUhLL0IrNzRhZHA5K1pwYldOMGpMVi9rRGN0QUpDcFozNStsYldBZEZRRUFROWM5N3kyQU1qY1VPdG4rYjZod3o0ZjZEaUQveUIvS2dBZ1kvdG1CaE4wV3JRRlBISFR3ZmFjQ2JlR2tJL0Z0WDZQMy9pc3d6OWRZZkFmNU04YVFNalk3R3RyclFXa2ErSUE4ZEVOTDFrYkNCbUlPUjVmdnY1bjZRUHI1NjMxb3l0aUFQRmZuM2huQXZLbUFnQXlGMnNCNTA3N1VhWTd6cDRQRUdYRlFMMUVVQmVEUE9QblZNVU8zZEllL0hmYzREOW9BaFVBa0xtWFg3ODh2ZElLQU9MV0I3cWxmODNwdEhOZ05tMVorMG82OEhKZnV5b0FxRTRFY25jTlRxZTdOayszZ3pyb3BwR1pvZmJzSVNCL2hnQkNBNHkzVXZuYk5oNVAyOVl0Sk9pbW1BK3dZOE5jZXdYVXFFblEwSFBSNS8vSmdXUHRsWDV1L09tRnVQMDMrQSthUTkwd05NUys2YUVFdmRCLytXdnBNOWNjYWJjRlJOOHgwQnM3MXMrMUIveDl4b0JPZXNqYVlXZ1dGUURRRU5ZQzBtdUw4d0VpQlBqSzFMQzFnZEFsOFZ6ZnRlbUk1enM5RjJ2L2xQNURzMXoyZ1kvK3VsR3gwQkJ4SUh1c2RUdmtab2dxeEl2aTZMRnJCUUhRSVZIdS85bldiWCtVKzBNVjduaDJXN3NGQUdnT1F3Q2hRZVpPcjJtdmY3clZMUkVWMk42M2tIYjB6NlhMTHJzcy9kZFRWeVpnNVhhMUR2NS9kTjN6YnYycFRNeDVtWmpia0lCbU1RTUFHaWFHczFrTFNGV2lDbVgzNWluekFXQ0Y0c0FmUHovNi9LbFNlKzNmN0tZRU5JOEtBR2dZYXdHcGcxZ2JHTlVBMWdiQzBzUmF2d2RiTi81eDh4OC9QMUNsV1B1bmtndWF5UkJBYUtCWUM3aWovNFRTVVNvWGF3UGphM3gyb1BWOXVjbDhBRGlIUG4vcXh0by9hRFoxd3RCUWRyUlRKenNIWnRQRDF6K25MUURPc3JOMTZIL2k1Z01PLzlUS1BZZHVTRUJ6Q1FDZ29XSnRqd1NmT2xsY0d4ajl6YXBUS0ZsOC8wY2d0bnZ6dEQ1L2FpVzJ1Wmo2RDgybUJRQWFiT3pvdGUxV0FDK1kxRWtFQVhINHNUYVEwa1NmLzMxRGh3VmcxRklNRUI0N3Bub1FtazRGQURSWXBQampwdmhTVXpFYjRJbWJEcDRaZWlha29zR2l6eisrengrLzhWbUhmMm9yM2hmYy9rUHpDUUNnNFdJdG9BOTA2aXpXblQzV09oaVpEMEFUeGZkMUhQeXQ5YVBPNGoxaHpPd2dLSUlBQUJwdTd2U2FOREk5bUtET3pwNFBFR1hTa0x2RlB2LzR2dDdpZTVxYWMvaUhjcGdCQUFXWW1OK1Fuamw1bGRKVGFpOE9TdEVXWUQ0QXVZcHkvN3NHcDFTMGtJMm5UeG9hRENWUkFRQ0ZzQmFRbk1SOGdNZHYvR203YnhweXNOam5IMnY5SFA3SnlVTlR3d2tveDVxdE43M3JqeFBRZUZPdlh0SHVQMzNQbFQ5UGtJTjNYUFo2dTJvbERsUHpwOWVrZ3d0OUNlb292aysvdlBWbmFVZi9YUHY3Rm5JUjFWWnUvNkVzV2dDZ0lHTkhyMm5kckI0M2lJcXNMTTRIaUpXVysyYUd0QVZRRzl2V25VcDNiWjdXWGtXVzJvUC9yUDJENGdnQW9DQXhFRERXL0NpckprZHh1eHBmNWdOUXRTajMvMnpyT1hyN3dMRUV1Um8vYnUwZmxNZ01BQ2hNVFByMWdVL09ZajVBVEZmWFowMFZkcllPL2RIbjcvQlB6dUk5SU5ZRUErVVJBRUNCOWs0YStFUGV6bDRiR0swQjBHMVI1aC9mYjdzM1QydWpJbnZXL2tHNXRBQkFnWjc1K1ZYV0F0SUlFUVE4Y04zejJnTG9tcUhXOTloOVE0YzlMMmtNZy8rZ2JDb0FvRkI3cmYyaFFhSXQ0SW5XN1d6TXQ0Z0RHNnpXbTJ2OVd0OVhEdjgwaWNGL1VEWnJBS0ZRTVJEUVdrQ2FKZzVxTVNqUTJrQldJL3I4SDloNktIMWcvWHlDSm9sQndIOTk0cDBKS0pjS0FDaFlyQVdjTysweFFMT2NQUjhnMXJUQlVrV0FGQU1tOWZuVFJPM0JmOGNOL29QU3FRQ0FncjM4K3VYcGxWWUE0SmFMSnVwZmN6cjk1dFhIMDVhMXI2UURML2UxcXdMZ2ZOcDkvcTNRNk01clo5b0JFalRSeU14UWV3WVFVRFpYZjFDNDhkWnR3TUdGZFFtYTZ1ejVBSEMyeFQ3L3gyOTh0dDA2QWswVnQvOEcvd0ZCQUFDa2ZkTkRDWnJ1TTYyRFhyUUYzUGJPRnhQc1dEL1hQdmpIOTRWeWY1ck8rbDlna1FBQWVITXRJRFRkNG55QXgxb0hQOXNDeXJUWTV4OUQvcFQ3VTRKWSs2ZjBIMWdrQUFEYVlpMmdnWUNVWXZ1NmhYWmJ3TDFEaHdVQmhZaHkvN3MyVDdjUC85YjZVUkpyLzRDemVkc0gycUkvTU5ZRFFVbGlQc0N1VFdZRGxPQ3V3YWwwKzhDeEJDVVpQWHB0Ky9NZFlKRUFBSGpUL3RrQlZRQUEwQUR0dFgrQ2ZlQWMzdlNCTjgyZFhwTkdEQVFFZ095TnRXNy9oZnJBdVR3VmdMZUlOVUVHQWdKQXZxejlBeTVFQUFDOFRmUU1BZ0I1dXVmUURRbmdmQVFBd052RXVpQTNCd0NRbjFqN1ovQWZjQ0VDQU9DODlBNENRRjdpYzl2YVArQml2TjBENTJVdElBRGtKVDYzM2Y0REZ5TUFBQzRvMWdKNmtRQ0Erb3ZQNnpFemZJQkxFQUFBRjNSbUxlQmdBZ0RxemVFZldBb0JBSEJSRS9NYnJBVUVnQnA3K3FUaHZjRFNDQUNBUzdJV0VBRHE2NkdwNFFTd0ZBSUE0SkppTGFDQmdBQlFQOWIrQWNzaEFBQ1daT3pvTmRZQ0FrQ050QWYvV2ZzSExJTzNlV0JKWWlDZ0tnQUFxSS94NDliK0Fjc2pBQUNXTENZTWU5RUFnT3JGNTNHczZ3VllEZ0VBc0N4N0p3MGFBb0NxV2ZzSHJJUUFBRmlXR0Fob0xTQUFWQ2NHLzFuN0I2eUVBQUJZdHIzV0RRRkFaUXorQTFaS0FBQXNXL1FkR2dnSUFMMFhuNy9tOFFBckpRQUFWc1JhUUFEb3JmYmd2K01HL3dFcjUrMGRXSkZZQ3poMlpITUNBSHJETmg1Z3RRUUF3SXFOdDI0aERpNnNTd0JBZDhYQjMrQS9ZTFVFQU1DcTdKc2VTZ0JBZCsxNVlXc0NXQzBCQUxBcTFnSUNRSGZGMnIrREMzMEpZTFVFQU1DcXhWcEFBd0VCb0R1cy9RTTZ4UnM3c0dyV0FnSkFkNHdhL0FkMGtBQUE2SWo5c3dPcUFBQ2dnK0xnSDVQL0FUckYyenJRRWJFV2NNUkFRQURvR0lkL29OTUVBRURIeEhvaUF3RUJZUFdzL1FPNlFRQUFkTlNvMndvQVdMVjdEdDJRQURwTkFBQjBWS3dGZEdNQkFDc1hhLzhNL2dPNlFRQUFkRnowTEJvSUNBRExGNStmMXY0QjNlSU5IZWc0YXdFQllHWGk4OVB0UDlBdEFnQ2dLMkl0b0JjWUFGZzZhLytBYmhNQUFGMXhaaTNnWUFJQWxzYmhIK2cyQVFEUU5SUHpHNndGQklBbCtPNWN2eUc2UU5jSkFJQ3VzaFlRQUM3dDBabWhCTkJ0QWdDZ3EySXRvSUdBQUhCaDF2NEJ2U0lBQUxwdTdPZzExZ0lDd0htMEIvOVord2YwaURkeW9PdGlJS0FxQUFCNHV4ajg1L1lmNkJVQkFOQVRYbkFBNEszaWM5SGdQNkNYQkFCQXoreWRIRTRBd0JrajB3Yi9BYjBsQUFCNkpnWUNXZ3NJQUdjRy8wM005eWVBWGhJQUFEMjFkMG9WQUFBWS9BZFVRUUFBOUZUME80NGU5ZElEUUxsR3pjVUJLaUlBQUhwdS8reUF0WUFBRkNrTy90OHkrQStvaURkd29PZGlMZURZa2MwSkFFcGpLdzVRSlFFQVVJbng0d01HQWdKUUZHdi9nS29KQUlES21BVUFRRW4ydkxBMUFWUkpBQUJVeGxwQUFFb1JhLzhPTHZRbGdDb0pBSUJLeFZwQUF3RUJhRHByLzRBNjhOWU5WQ3I2SWNkbk55VUFhQ3ByLzRDNkVBQUFsYk1XRUlDbWlvUC9tSmszUUUxNDR3WXFGMnNCUjZhSEVnQTBqY00vVUNjQ0FLQVdZaTJTZ1lBQU5NbUJVMzNXL2dHMUlnQUFhc05hUUFDYTVQN0QxdjRCOVNJQUFHb2oxZ0s2S1FHZ0NXTHRuOEYvUU4wSUFJQmFHWmtlTkJBUWdLeTFCLzlaK3dmVWtMZHNvRlppSUtDMWdBRGtMS3JaM1A0RGRTUUFBR29uMWdKNmNRSWdSOWIrQVhVbUFBQnFKNm9BOWs0T0p3RElqY00vVUdjQ0FLQ1dZaUNndFlBQTVPUzdjLzJHMlFLMUpnQUFhbXZmekdBQ2dGdzhPak9VQU9wTUFBRFUxc0dGUGdNQkFjaUN0WDlBRGdRQVFLMk5IYjNHV2tBQWFzM2FQeUFYM3FxQldvdUJnR05ITmljQXFLc1kvT2YySDhpQkFBQ292ZkhqMWdJQ1VFL3grV1R3SDVBTEFRQ1FCV3NCQWFpamtXbUQvNEI4Q0FDQUxGZ0xDRURkeE9DL2lmbitCSkFMQVFDUWpiMVRxZ0FBcUErRC80RGNDQUNBYkVTZjVlaFJMMXNBVkcvVTREOGdRd0lBSUN2N1p3ZXNCUVNnVW5Idy81YkJmMENHdkVVRFdiRVdFSUNxV2ZzSDVFb0FBR1FuMWdJYUNBaEFGYXo5QTNJbUFBQ3laQllBQUZYWTg4TFdCSkFyQVFDUXBWZ0xPREZuOVJJQXZSTnIvdzR1OUNXQVhBa0FnR3lOekF3WkNBaEF6MWo3QitUT216T1FyZWpESEovZGxBQ2cyNno5QTVwQUFBQmtMZFlDZWlFRG9KdmljMmJNN0JtZ0FRUUFRTmJhYXdHOWxBSFFSVDVuZ0tZUUFBRFppM1ZNMWdJQzBBMEhUdlZaK3djMGhnQUFhQVJyQVFIb2h2c1BXL3NITkljQUFHaUVXQXZvaGdhQVRvcTFmK2JNQUUwaUFBQWFZMlI2MEZwQUFEcWlQZmpQMmorZ1lid3BBNDBSQXdHdEJRU2dFNktxek8wLzBEUUNBS0JSckFVRVlMV3MvUU9hU2dBQU5FcFVBZXlkSEU0QXNGSU8vMEJUQ1FDQXhvbUJnTllDQXJBUzM1M3JOMVFXYUN3QkFOQkkrMllHRXdBczE2TXpRd21ncVFRQVFDTWRYT2d6RUJDQVpiSDJEMmc2QVFEUVdHTkhyN0VXRUlBbHNmWVBLSUUzWTZDeFlpRGcySkhOQ1FBdUpRYi91ZjBIbWs0QUFEVGErSEZyQVFHNHVQaWNNUGdQS0lFQUFHZzhhd0VCdUppUmFZUC9nRElJQUlER3N4WVFnQXVKd1g4VDgvMEpvQVFDQUtBSWU2ZFVBUUR3ZGdiL0FTVVJBQUJGaVA3TzBhTmU4Z0Q0aFZHRC80RENDQUNBWXV5ZkhiQVdFSUMyT1BoL3krQS9vRERlaElGaVdBc0l3Q0pyLzRBU0NRQ0Fvc1JhUUFNQkFjcG03UjlRS2dFQVVCeXpBQURLdHVlRnJRbWdSQUlBb0RpeEZuQml6c29uZ0JMRjJyK0RDMzBKb0VRQ0FLQklJek5EQmdJQ0ZNamFQNkJrM242QklrWC81L2pzcGdSQU9hejlBMG9uQUFDS0ZXc0J2UWdDbENHZTkyTm13QUNGRXdBQXhXcXZCZlF5Q0ZBRXozc0FBUUJRdUZnRFpTMGdRTE1kT05WbjdSOUFFZ0FBV0FzSTBIRDNIN2IyRHlBSUFJRGl4VnBBTjBNQXpSUnIvOHg3QVRoREFBRFFNakk5YUMwZ1FNTzBCLzlaK3dmd0ptKzdBT25NUUVCckFRR2FKYXE3M1A0RC9JSUFBT0FOMWdJQ05JZTFmd0J2SndBQWVFTlVBZXlkSEU0QTVNL2hIK0R0QkFBQVo0bUJnTllDQXVUdHUzUDlocnNDbkljQUFPQWMrMllHRXdENWVuUm1LQUh3ZGdJQWdITWNYT2d6RUJBZ1U5YitBVnlZQUFEZ1BNYU9YbU10SUVCbXJQMER1RGh2dHdEbkVRTUJ4NDVzVGdEa0l3Yi91ZjBIdURBQkFNQUZqQiszRmhBZ0YvRzhOdmdQNE9JRUFBQVhZUzBnUUI1R3BnMytBN2dVQVFEQVJWZ0xDRkIvTWZodllyNC9BWEJ4QWdDQVM5ZzdwUW9Bb000TS9nTllHZ0VBd0NWRVgrbm9VUytYQUhVMGF2QWZ3SklKQUFDV1lQL3NnTFdBQURVVEIvLzlzNXNTQUV2amJSWmdDYXdGQktpZldQc25uQVZZT2s5TWdDV0t0WUFHQWdMVWc3Vi9BTXNuQUFCWUJyTUFBT3JobmtNM0pBQ1dSd0FBc0F5eEZuQml6cW9wZ0NyRjJqK0Qvd0NXVHdBQXNFd2pNME42VGdFcVpPMGZ3TXA0Z3dWWXByaDFHamQxR3FBUzF2NEJySndBQUdBRllpMmdGMUNBM29ybjdwaFpMQUFySmdBQVdJSDJXa0F2b1FBOTVia0xzRG9DQUlBVml2VlQxZ0lDOU1hQlUzM1cvZ0dza2dBQVlCV3NCUVRvamZzUGIwMEFySTRBQUdBVllpMmdHeW1BN3JMMkQ2QXpCQUFBcXpReVBXZ3RJRUNYdEFmL1dmc0gwQkhlV0FGV0tRWUNXZ3NJMEIzanh6ZTUvUWZvRUFFQVFBZFlDd2pRZWZGY2plY3JBSjBoQUFEb2dLZ0MyRHM1bkFEb0hHdi9BRHBMQUFEUUlURVEwRnBBZ002SXdYK0dyQUowbGdBQW9JUDJ6UXdtQUZiUDREK0F6aE1BQUhUUXdZVStBd0VCVnNuYVA0RHVFQUFBZE5qWTBXdXNCUVJZSVd2L0FMckhHeXBBaDhWQXdMRWpteE1BeXhlRC85eitBM1NIQUFDZ0M4YVBXd3NJc0Z6eDNEVDRENkI3QkFBQVhXSXRJTUR5akV3UEpRQzZSd0FBMENYV0FnSXNYUXorbTVqdlR3QjBqd0FBb0l2MlRxa0NBRmdLZy84QXVrOEFBTkJGMGM4NmV0UkxMY0RGakJyOEI5QVRBZ0NBTHRzL08yQXRJTUFGeE1GLy8reW1CRUQzZVNNRjZESnJBUUV1TE5iK0NVa0Jlc1BURnFBSFlpMmdnWUFBYjJYdEgwQnZDUUFBZXNRc0FJQzN1dWZRRFFtQTNoRUFBUFJJckFXY21MUGlDaURFMmorRC93QjZTd0FBMEVNak0wTjZYUUdTdFg4QVZmQVdDdEJEY2RzMWJ0bzFVRGhyL3dDcUlRQUE2TEZZQytqRkZ5aFZQUC9HekVRQnFJUUFBS0RIMm1zQnZmd0NoZkw4QTZpT0FBQ2dBckgyeWxwQW9EUlB0NTU3MXY0QlZFY0FBRkFSYXdHQjBqdzBOWndBcUk0QUFLQWlzUmJRVFJoUUNtdi9BS29uQUFDbzBNajBvTFdBUU9PMUIvOVord2RRT1crZEFCV0tnWURXQWdKTk4zNThrOXQvZ0JvUUFBQlV6RnBBb01uaStSYlBPUUNxSndBQXFGaFVBZXlkTkJnTGFDWnIvd0RxUXdBQVVBTXhFTkJhUUtCcFl2Q2ZZYWNBOVNFQUFLaUpmVE9EQ2FCSkRQNERxQmNCQUVCTkhGem9NeEFRYUl4NG5wbHZBbEF2QWdDQUdoazdlbzIxZ0VEMjJvUC9qaHY4QjFBMzNqSUJhaVFHQW80ZDJad0FjaGFELzl6K0E5U1BBQUNnWnNhUFd3c0k1Q3VlWHdiL0FkU1RBQUNnaHF3RkJITGwrUVZRWHdJQWdCcXlGaERJVWF6OWkrY1hBUFVrQUFDb3FiMVRidEdBdkZqN0IxQnZBZ0NBbW9vKzJ0R2pYcWFCUEl3YS9BZFFld0lBZ0JyYlB6dGdMU0JRZSsyMWY3T2JFZ0QxNXEwU29NYXNCUVJ5RUd2L2hKVUE5ZWRKRFZCenNSYlFRRUNncnF6OUE4aUhBQUFnQTJZQkFIVjF6NkViRWdCNUVBQUFaQ0RXYWszTTlTZUFPb20xZndiL0FlUkRBQUNRaVpHWklUMjJRRzNFODhqYVA0QzhlSk1FeUVUY3NvMmJzZzNVUkR5UDNQNEQ1RVVBQUpDUldBdm9oUnVvV2p5SHhzd21BY2lPQUFBZ0krMjFnRjY2Z1lwNURnSGtTUUFBa0psWXQyVXRJRkNWcDF2UEgydi9BUElrQUFESWtMV0FRRlVlbWhwT0FPUkpBQUNRb1ZnTDZBWU82RFZyL3dEeUpnQUF5TlRJOUtDMWdFRFB0QWYvV2ZzSGtEVnZqZ0NaaW9HQTFnSUN2VEorM05vL2dOd0pBQUF5WmkwZzBBdnhuSW5uRFFCNUV3QUFaQ3lxQVBaT0dzZ0ZkSmUxZndETklBQUF5RndNQkxRV0VPaVdHUHhuNkNoQU13Z0FBQnBnMzh4Z0F1Z0dnLzhBbWtNQUFOQUFCeGY2REFRRU9pNmVLK2FNQURTSEFBQ2dJY2FPWG1NdElOQXg3Y0YveHczK0EyZ1NiNG9BRFJFREFjZU9iRTRBblJDRC85eitBelNMQUFDZ1FjYVBXd3NJckY0OFJ3eitBMmdlQVFCQXcxZ0xDS3lXNXdoQU13a0FBQnJHV2tCZ05XTHRYenhIQUdnZUFRQkFBKzJkR2pZUUVGZ1JhLzhBbXN2YklVQURSZit1dFlEQWNvMGEvQWZRYUFJQWdJYmFQenVnQ2dCWXN2YmFQOEVoUUtONU13Um9LR3NCZ2VXSXRYOUNRNEJtODVRSGFMQllDMmdnSUhBcDF2NEJsRUVBQU5CdzBkTUxjREgzSExvaEFkQjhBZ0NBaG90MVhoTnovUW5nZkdMdG44Ri9BR1VRQUFBVVlHUm1TRzh2OERieFhMRDJENkFjM2dZQkNtQXRJSEErOFZ4dyt3OVFEZ0VBUUNGaUxhQVhmV0JSUEEvR3pBZ0JLSW9BQUtBUXNSWndaSG93QVFTSGY0RHlDQUFBQ2pJeHY4RmFRQ0E5M1hvT1dQc0hVQjRCQUVCaHJBVUVIcG9hVGdDVVJ3QUFVSmhZQzJnZ0lKVEwyaitBY2drQUFBbzBkdlFhYXdHaFFPM0JmOWIrQVJUTDJ4OUFnV0lnb0NvQUtNLzRjV3YvQUVvbUFBQW9sTFdBVUpiNGVZK2Zld0RLSlFBQUtGUlVBZXlkTkFnTVNtSHRId0FDQUlDQ3hVQkFhd0doK1dMd243Vi9BQWdBQUFxM2IyWXdBYzFtOEI4QVFRQUFVTGlEQzMwR0FrS0R4YyszZVI4QUJBRUFBTllDUWtPMUIvOGROL2dQZ0RPODdRSFFIZ2c0ZG1SekFwb2xCdis1L1FkZ2tRQUFnTGJ4MWkzaHdZVjFDV2lHT1BnYi9BZkEyUVFBQUx4cDMvUlFBcHJCbWs4QXppVUFBT0JOMWdKQ004VGF2L2g1Qm9DekNRQUFlSXU5VThNR0FrTG1yUDBENEh5ODRRSHdGdEUzYkMwZzVHdlU0RDhBTGtBQUFNRGI3SjhkVUFVQUdXcXYvUlBnQVhBQjN1NEFlQnRyQVNGUHNmWlBlQWZBaGZpRUFPQzhZaTJnZ1lDUUQydi9BTGdVQVFBQUZ4Uzl4RUFlN2psMFF3S0FpeEVBQUhCQnNVWnNZcTQvQWZVV2EvOE0vZ1BnVWdRQUFGelV5TXlRbm1Lb3NmajV0UFlQZ0tYd1JnZkFSVmtMQ1BVV1A1OXUvd0ZZQ2dFQUFKY1Vhd0VkTUtCKzR1ZHl6S3dPQUpaSUFBREFKY1Zhd0pIcHdRVFVpOE0vQU1zaEFBQmdTU2JtTjFnTENEWHlkT3ZuMGRvL0FKWkRBQURBa2xrTENQWHgwTlJ3QW9EbEVBQUFzR1N4RnRCQVFLaWV0WDhBcklRQUFJQmxHVHQ2amJXQVVLSDI0RDlyL3dCWUFXOXdBQ3hMREFSVUJRRFZHVDl1N1I4QUt5TUFBR0RackFXRWFzVFBYZno4QWNCS0NBQUFXTGFvQXRnN2FRQVo5SnExZndDc2hnQUFnQldKZ1lEV0FrTHZ4T0EvYS84QVdBMEJBQUFydG05bU1BRzlZZkFmQUtzbEFBQmd4UTR1OUJrSUNEMFFQMmZtYmdDd1dnSUFBRmJGV2tEb3J2Ymd2K01HL3dHd2V0N1lBRmlWR0FnNGRtUnpBcm9qQnYrNS9RZWdFd1FBQUt6YWVPdDI4dURDdWdSMFZoejhEZjREb0ZNRUFBQjB4TDdwb1FSMGxuV2JBSFNTQUFDQWpyQVdFRG9yMXY3Rnp4VUFkSW9BQUlDTzJUczFiQ0FnZElpMWZ3QjBtcmMwQURvbStwV3RCWVRWR3pYNEQ0QXVFQUFBMEZIN1p3ZFVBY0FxdE5mK0NkSUE2QUp2YUFCMGxMV0FzRHF4OWsrSUJrQTMrSFFCb09OaUxhQ0JnTEI4MXY0QjBFMENBQUM2SW5xWWdlVzU1OUFOQ1FDNlJRQUFRRmZFK3JLSnVmNEVMRTJzL1RQNEQ0QnVFZ0FBMERVak0wTjZtV0VKNHVmRTJqOEF1czFiR1FCZFl5MGdMRTM4bkxqOUI2RGJCQUFBZEZXc0JYU3dnUXVMbjQ4eE16TUE2QUVCQUFCZEZXc0JSNllIRTNCK0R2OEE5SW9BQUlDdW01amZZQzBnbk1mVHJaOExhLzhBNkJVQkFBQTlZUzBndk4xRFU4TUpBSHBGQUFCQVQ4UmFRQU1CNFJlcy9RT2cxd1FBQVBUTTJORnJyQVdFOU1iZ1Aydi9BT2d4YjJFQTlFd01CRlFGQUNtTkg3ZjJENERlRXdBQTBGTXg4ZHpCaDVMRjkzK3N4d1NBWGhNQUFOQnpleWNOUHFOYzF2NEJVQlVCQUFBOUZ3TUJyUVdrUkRINHo5by9BS29pQUFDZ0VudXRQNk5BQnY4QlVDVUJBQUNWaUQ1b0F3RXBTWHkvbTM4QlFKVUVBQUJVeGxwQVN0RWUvSGZjNEQ4QXF1V3RDNERLeEZyQXNTT2JFelNkN1JjQTFJRUFBSUJLamJkdVJROHVyRXZRVkhId04vZ1BnRG9RQUFCUXVYM1RRd21hYXM4TFd4TUExSUVBQUlES1dRdElVOFhhdjRNTGZRa0E2a0FBQUVBdHhGcEFBd0ZwR212L0FLZ1RiMW9BMUlLMWdEVE5xTUYvQU5TTUFBQ0EydGcvTzZBS2dFYUlnMzlNL2dlQU92R1dCVUJ0eEZyQUVRTUJhUUNIZndEcVNBQUFRSzNFdWpRREFjbVp0WDhBMUpVQUFJRGFHWFY3U3NidU9YUkRBb0E2RWdBQVVEdXhGdEFOS2ptS3RYOEcvd0ZRVndJQUFHb3BlcWdOQkNRbjhmMXE3UjhBZGViTkNvQmFzaGFRM01UM3E5dC9BT3BNQUFCQWJjVmFRQWNxY21EdEh3QTVFQUFBVUZ0bjFnSU9KcWc3aDM4QWNpQUFBS0RXSnVZM1dBdElyWDEzcnQvUVNnQ3lJQUFBb1Bhc0JhVE9IcDBaU2dDUUF3RUFBTFVYYXdFTkJLU09yUDBESUNjQ0FBQ3lNSGIwR21zQnFaWDI0RDlyL3dESWlEY3BBTElRQXdGVkFWQW5NZmpQN1Q4QU9SRUFBSkFOQnk3cUlyNFBEZjRESURjQ0FBQ3lzbmR5T0VIVnJQMERJRWNDQUFDeUVnTUJyUVdrU2pINHorMC9BRGtTQUFDUW5iMVRxZ0NvanNGL0FPUktBQUJBZHFMLzJrQkFxaERmZCtaUUFKQXJBUUFBV2JJV2tGNkxnLy8rNHdNSkFITGx6UW1BTE1WYXdMRWpteFAwaWkwVUFPUk9BQUJBdHNaYnQ3RUhGOVlsNkRaci93Qm9BZ0VBQUZuYk56MlVvTnYydkxBMUFVRHVCQUFBWk0xYVFMb3QxdjRkWE9oTEFKQTdBUUFBMll1MWdBWUMwaTNXL2dIUUZONldBTWlldFlCMHk2akJmd0EwaUFBQWdFYllQenVnQ29DT2lvTi9UUDRIZ0tid3BnUkFJOFJhd0JFREFla2doMzhBbWtZQUFFQmp4Sm8yQXdIcGhBT24rcXo5QTZCeEJBQUFOTXFvVzFzNjRQN0QxdjRCMER3Q0FBQWFKZFlDdXJsbE5XTHRuOEYvQURTUkFBQ0F4b25lYlFNQldZbjI0RDlyL3dCb0tHOUhBRFNPdFlDc1ZGU1B1UDBIb0trRUFBQTBVcXdGZEpCak9hejlBNkRwQkFBQU5OS1p0WUNEQ1piSzRSK0FwaE1BQU5CWUUvTWJyQVZrU2I0NzEyOTRKQUNOSndBQW9OR3NCV1FwSHAwWlNnRFFkQUlBQUJvdDFnSWFDTWpGV1BzSFFDa0VBQUEwM3RqUmE2d0Y1THlzL1FPZ0pONkdBR2k4R0Fpb0NvRHppY0YvYnY4QktJVUFBSUFpT09oeHJ2aCtNUGdQZ0pJSUFBQW94dDdKNFFTTFJxWU4vZ09nTEFJQUFJb1JBd0d0QlNURTRMK0orZjRFQUNVUkFBQlFsTDFUcWdCSUJ2OEJVQ1FCQUFCRmliNXZBd0hMTm1vZUJBQ0ZFZ0FBVUJ4ckFjc1ZCLzl2R2Z3SFFLRzgvUUJRbkZnTE9IWmtjNkk4dGtFQVVESUJBQUJGR2o4K2tBNHVyRXVVdzlvL0FFb25BQUNnV1B1c2dTdktuaGUySmdBbzJkb0VBSVdLdFlCYnJuZ2wwWHpmZW5Gak9yalFsd0NnWkNvQUFDaWFrdkF5UE4wS2V3Q2dkQUlBQUFBQUtJQUFBQUFBQUFvZ0FBQUFBSUFDQ0FBQUFBQ2dBQUlBQUFBQUtJQUFBQUFBQUFvZ0FBQUFBSUFDQ0FBQUFBQ2dBQUlBQUFBQUtJQUFBQUFBQUFvZ0FBQUFBSUFDQ0FBQUFBQ2dBQUlBQUFBQUtJQUFBQUFBQUFvZ0FBQUFBSUFDQ0FBQUFBQ2dBQUlBQUFBQUtJQUFBQUFBQUFvZ0FBQUFBSUFDQ0FBQUFBQ2dBQUlBQUFBQUtJQUFBQUFBQUFvZ0FBQUFBSUFDQ0FBQUFBQ2dBQUlBQUFBQUtJQUFBQUFBQUFvZ0FBQUFBSUFDQ0FBQUFBQVNOSjhBQUFBQUFBb2dBQUFBQUlBQ0NBQUFBQUNnQUFJQUFBQUFLSUFBQUFBQUFBb2dBQUFBQUlBQ0NBQUFBQUNnQUFJQUFBQUFLSUFBQUFBQUFBb2dBQUFBQUlBQ0NBQUFBQUNnQUFJQUFBQUFLSUFBQUFBQUFBb2dBQUFBQUlBQ0NBQUFBQUNnQUFJQUFBQUFLSUFBQUFBQUFBb2dBQUFBQUlBQ3JFMEFBRUF0L2RXNy8vOVVoYTlNRHFkdnZiUXhsZUMyalMrbWU0Y09weXI4MHgvOWp3bDZTUVVBQUFBQUZFQUFBQUFBQUFVUUFBQUFBRUFCQkFBQUFBQlFBQUVBQUFBQUZFQUFBQUFBQUFXd0JwQ2UreS8vNlp1Si9EM3dsWWZUazAvOVZXSjVIbjM0eTRtVVRzek5wN201dWZaZkg1NmFhdi9QazVObmZuMmg5ZXZocWVsRWMzMTR4d2ZUM1hkOUxsWGg5KzcrUWpvOFdjYjMxNmQyZmlMOWR1dXJDcC80OUQ5TEFOU1BBQUNnaDk1LzYzc1RTL09qQXo5cEJ3SS9idjM2L1dkKzBBb0dwdE9QRHY0a2tiLysvdjQwdkdVbzBWMGIrdGY3Y3diZ0xRUUFBTlRTdTdmZjNQNDFRcE5QZmZMTUxXWUVBdDk3K29mdFFPRDdyVjhGQWdBQVN5Y0FBQ0FiY2FQNWtROTlzUDBWRGs5T3RRT0JiejcxN2ZTOVozNllBQUM0TUFFQUFObUs4dWFQLzFwOGZhd2RCbngxOUlsV0lQQURNd1FBQU01REFBQkFJMFFZc09lK3o3Zi8rc20vL0hZckRQaWFJQUFBNEN6V0FBTFFPRkVSOEkwLy93OXB6NzJmVDhORGd3a0FBQUVBQUEwbUNBQUErQVVCQUFDTkYwSEFuejN5NWZUeDJ6NldBQUJLSlFBQW9BaUxNd0llZmZqTHFnRUFnQ0lKQUFBb3l2dHZmVys3R3VERE96NllBQUJLSWdBQW9EaFJEZkRRZzE5TWQrNjZJd0VBbEVJQUFFQ3g3dHoxNmZUNTNaOUxBQUFsRUFBQVVMVGYvdVFuMmxzQ0FBQ2FUZ0FBUVBGaVM4RGVCNzZZQUFDYVRBQUFBQzBmK2RBSFZRSUFBSTBtQUFDQU4wUWxnTUdBQUVCVENRQUE0Q3d4R1BCVE8zOHJBUUEwalFBQUFNNFJJY0R3MEdBQ0FHZ1NBUUFBbkdORC8vcjAwSU9HQWdJQXpTSUFBSUR6ZVBmMm05dVZBQUFBVFNFQUFJQUxpRmtBV2dFQWdLWVFBQURBQlVRcndKNzc3azRBQUUwZ0FBQ0FpM2ovcmU5Tjc3dmx2UWtBSUhjQ0FBQzRoRHQzM1pFQUFISW5BQUNBUzFBRkFBQTBnUUFBQUpiZ0l4LzZZQUlBeU5uYUJFRFBQUG1YMzA2bG1adWZUeWZtNXRMdzBGQjdxRjU4dld2N3R2YXZPZm1OMi82MzlOWFJKMXEvbC9rRUFKQWpBUUE5OTcvOHI3K1JjdkJmL3RNM1V4VytPdnExOWlHRFpucGc3eU9KTTlwQndMYWJXemZydjVMZWY4di8zQTRGNml6K2VYL2p0bytscjQ5L0l3RUE1RWdBQUVBbDRpYjkrOC84c1AwVmhyY01wVHQzZmJvVkJyeTMvZGQxOU9FZHZ5SUFBQUN5SlFBQW9CWU9UMDZsQjc1eXBrSWlidG8vMXdvRDZoWUV4RERBcUFUUUJnQUE1TWdRUUFCcTU1dFBmVHQ5NHRQL3JOMFNVemUyQVFBQXVSSUFBRkJiTVE4amdvQ29EcWlMcUFJQUFNaVJBQUNBV292RC8rOTg3Zy9Tanc3OEpOWEIrMjc1NVFRQWtDTUJBQUMxRnozM3YzLzNGMm9SQXJ4Nys4M1pyVEFFQUFnQ0FBQ3lFQ0hBSCs3NWsxb000TnRTMHkwRkFBQVhJd0FBSUJ0bk5nVThuS3IyUDJ5N0tRRUE1RVlBQUVCV3ZqUHg5K2w3VC84d1ZTbmFBQUFBY2lNQUFDQTdWYThIM0xKbFN3SUF5STBBQUlEc2ZQK1pIMVphQlhEZDBHQUNBTWlOQUFDQUxIMW40dTlTVld3QkFBQnlKQUFBSUVzeEM2QXF3N1lBQUFBWkVnQUFrS1hZQ0JCZkFBQXNqUUFBZ0d6OTZNQ3pxU3JhQUFDQTNBZ0FBTWpXaWZtNVZKVitBUUFBa0JrQkFBRFowZ0lBQUxCMEFnQUFBQUFvZ0FBQWdHeVp4ZzhBc0hRQ0FBQ3lWV1VMd056Y2ZBSUF5SWtBQUlCc1ZWa0JjRUlBQUFCa1JnQUFRTFkyck85UEFBQXNqUUFBZ0d4ZHQyVXdWY0gyQVFBZ1J3SUFBTEswb1g5OWV0ZjJtMU1WQkFBQVFJNEVBQUJrNlgyM3ZEZFY1YVg1a3drQUlEY0NBQUN5OU9FZHY1S3E4dU1EQnhNQVFHNEVBQUJrWjNob0tIMzgxejZXcXZLakF6OUpBQUM1RVFBQWtKMHFELy9CQ2tBQUlFY0NBQUN5RXJmL2QrNzZkS3JTOTUvNVlRSUF5STBBQUlDc1ZINzRmL29IQ1FBZ1J3SUFBTEp4NTY0N0tpLy8vOUZCL2Y4QVFKNEVBQUJrNGVPM2ZhenkyLy93TjkvOSt3UUFrQ01CQUFDMUY0Zi9QZmQ5UGxVdGh2L3Avd2NBY3JVMkFVQ05SZGwvSFc3K3cvY2MvZ0dBakFrQUFLaWxtUFlmdC83dnYvVzlxUzYrK1pmL2J3SUF5SlVBQUlCYVdWenpWL1d3djNNZG5weEszNW5RL3c4QTVFc0FBRURsTnF4Zm56NzhvVjlKdjNIYngycDE0MzgyNWY4QVFPNEVBQUQwMVBEUVlOclEzNS9ldmYzbTlPNXRONmYzdFE3ODhkZDE5OVhScnlVQWdKd0pBQUI2NkJ0UC9QdFVxdUV0UXlsWFR6NzE3WFI0Y2pvQkFPUk1BQURRUXprZmdrdm05aDhBYUlMTEV3QndRWEg0ZC9zUEFEU0JBQUFBTGlBbS8zOTkvQnNKQUtBSkJBQUFjQUVQNzNzOG5aaWJUd0FBVFNBQUFJRHppTkwvNzB6OGZRSUFhQW9CQUFDY0kwci92enI2UkFJQWFCSUJBQUNjSlE3L3YzZjNGeEpBeWZyWG5FNUE4d2dBQU9BTjBlOGZoMzlULzRHNm1EdGR6ZXQ2LytXdnBWSU1yWDBsVldIdTlKb0V2U1lBQUlBM09Qd0RkVFAzV2pXSHhQN0xWUUIwMjl4cmptTDBudTg2QUdoNTRDdVBwQjhmK0VrQ29Ld0tnQzFYVkZVQjRDaEc3NjFOQUZDd0tQdC9aTi9qNmNtbnZwMEE2cWFxUStLMnZsT3BGRnVxYWdGNFRRc0F2U2NBQUtCWWl6My9idjZCdXBxdjZKQzQ1WXBYVXluV3I2bW0ybUgrZFJVQTlKN3ZPZ0NLRk5QK2YrZHovOExoSDZpMXlWZXZTRldJRm9CUzVnQnNYN2VRcWpENThqc1M5Sm9BQUlEaWZQL3BIN1FPLzM5ZzRCOVFlMVdXaVc5YjEvdzJnRzBWSGY1RFZlRU9aZE1DQUVCUkh0NzNlUHI2K0RjUzFabWJtMHRWNmUvdmIvMi9aUVEvRy9yWHB5cEVkUTJkTS9scWRhL3IyL29XMGpNL3Z5bzEyWmExTDZlcVRMM2lLRWJ2cVFBQW9BZy9PdkNUZEVmcjF0L2h2M3B6Yy9PcEt0Y05EYVpTbkFrN3lOMThoYnZpdDcraitSVUF0MXoxODFTVnlWZFVBTkI3WWljQUdpMEcvWDE5L0MvU1YwZWZTRkRWclhnVmhvZUdVaFZPVkJqd05OR0JVMzJwS2pzMnpMV3VxVk9qYmErd3plSGdRblgvYmltWEFBQ0F4dnFiaWI5UGoreDdUSzkvemJ3d1ZkMi9qK0V0MVJ5S1MxSmxpMGNUelZlNEt6NEdBZDV5NWNuR3RnRzBmMzlYblV4Vk9MQ3dMa0VWQkFBQU5FNE0rWHU4ZGVQLy9XZCttT0JzSlFVQTc5NStjNnJDUy9QVkhLaWFLc3JFNTFvaFFGVVQrZU9BM05RQVlFZC9kV0hWbEFHQVZFUUFBRUFqUk5ueGR5YitMajM1bDk5MjhLKzVLb2ZFVlZVVzMydlI2bEJWdThQazVHU2lzeUlFcUdwVjNXM3ZmREdOSGIwMk5WR1ZBVUNWclIyVVRRQUFRTlppdUY4Yy9HTzRuOTdqZk1TL3F5b09xRlhkaXZmYXU3ZFY5L3Q4UWN0TngwV3ZlRlVCd0pZclhtbGtHOEJRNi9lMW8vOUVxc3BCTFFCVXhCWUFBTElXSmQwTy8vbXBxazg4UW9maExjM2ZCUEN1Q29NT2F3QTdyK3ArOFYzWEhFbE5jK3VWMWJhcVBIT3luSUdrMUlzQUFJQ3N4WUh1aS9mZW5jakxqdzQ4bTZyeS9sdmVtNXJ1L2JmOGNxcUtNSzd6cWo0c3hoeUF1REZ2a3M5VUdHcEVvRE4zMmpHTWF2ak9BeUI3SC9uUUI5T25kdjVXSWg4bjVxdnJ2UzJoRGVEZDIyOUtWZm54d1o4a09tdnFsYldWSHhoM2JXcE9GVURNTmRoU1lhQnhVUDgvRlJJQUFOQUlkKzc2ZEJvZWFuNXBkMVBFN0lhcWZIakhyNlFtaTBHSFZXMDdpTnQvRlFDZE4zZDZUZVdIeHRzMnZ0aWVCWkM3cUdUNFRNVXREVTNkcWtBZURBRUVLRUQwNUhhekx6Y09HMVd2VjR0V2dEMzMzWjErLys0dkpPcXYwazBBcmUvVjk5M3kzc1p1aS9qd2h6NllxdkxqQXdjVDNYRmdvYSt5bmZXTDd0bzhuVDczM0MrbG5NVThneTBWdHpNSUFLaVNBQUNnQUU4KzllMzAxZEVuVXJlOGE5dk42V3RmL1hlcGF1Ky85YjN0Vm9DdmovOUZvdDUrZExDNkdRQWh2bGVhR2dEODVtMGZTMVg1a2ZML3JwbVk2MDg3QjQ2bEttM3JPNVYyYjU1S0l6TjVydE9NMHYvNHFsTDAvOGRhUjZpS0ZnQUFWaTE2ZnI4NityVlVCMW9COGhBVkFGV1dpamQxWmtTVS8xZTVBZUI3VHpjelZLbURnelVaSExkellMYnlRL1JLUk9uLzdzSHFOMVJNekcxSVVDVUJBQUFkRVJVR1ZmWjFMNHBXZ0ljZS9HS2kvaVlyYkFPSTc1UDNOWEFiUUFSZ1ZWSUIwRDB4QjZBdXErTjJEMDZuYmV0T3BWekU0Zi9oNjU5TC9aZWZUbFdMU2c2b2tnQUFnSTc1MGxjZVNYVVFVOTZyUGdoeGFkOTc1Z2VwU25mdXVpTTFTZHorZi96WHFpdi9Qek5yWkRyUlBSUHo5VGc4OWwvK1ducjRuL3dzaXhCZzhmQmZkZDkvaU5ML2d3czJBRkF0QVFBQUhWT3ZWb0E3MnJNSnFLLy9kcUQ2T1FCTnFnS29PdlQ2YnhYUGRTakJ4SW4rMnV5UFh3d0JkcXl2YnFYbnBkVHA4QitVLzFNSEFnQUFPcW91clFEaDN6ejRSKzFTYitxcERrUDQ3ci92ODQzNEhxbjY5ai84NSsvK1hhSzc2ckFPOEd3UkFqeXc5VkI3c243ZFJERHgrSTNQMXVid0gvWWZIMGhRTlFFQUFCMVhsMWFBV1BmMnp6L1RyREx2SnVuMmVzcWxpTytSVCszOFJNcmRubGFRVWJXcVd6cEtNWHIwMmxRM24ya0ZBSEhUUGxTRHcvYjZ5MCszMXhWR01GR0hudjlGVDUrOHl2Ui9ha0VBQUVESDFha1Y0TGMvK1lsR0RudHJpdS9Wb0FvZzJrVnkvaDZKZi81b1o2aVMvdi9laVIzeWRXa0RPTnN0VjUxTVQ5eDBzRjBOVUVVUUVBZi8rTC85eE0wSDB1MFZyMHM4bjIrOXRERkJIUWdBQU9pS09yVUNOS1hNdTRucXNqWXV2a2R5WEI4WmN5N3FNUER5T3hQSy8zdHBmSFpUcXF2RmFvQjdodzczSkFnNCsrQWYvN2ZyZE91L0tHNytueElBVUJNQ0FBQzY1Zy8zL0VtbHU5NFhhUVdvci85Y2s0TmpmSS9FK3NpY2dxTG8rNDg1RjNYd045LzkrMFR2N0o4ZHFHVVZ3S0xvdTc5dDQ0dnRpb0FJQTI1NzU0c2REUVBpMEI5Ly8vaDcxL25ndjJpc2htMGJsR3R0QW9BdWliTGdhQVc0KzY3UHBhcEZLMERjVXRaaDhCeS9FQUZSVkFGVVhjSWVZbjNrb3c5L09mMyszVitvUlhCMU1YSDQvN05IL25VN3VLaGEvSno3dWVxdEdBWVlWUUIxSEw1M3JtZ05pSzl3WmczZXVuUmdvYSs5RGk5Q2pQai9tN3BBYjN5RUJqRm9jTXNWcjdhK1hrN2IzckdRYm0zOXZlb3dhMkNwM1A1VE53SUFBTHJxNitQZlNCL2U4U3UxT09ERkRlOXZmZnAvci8zaHJqUVJ6TlRoK3lORUNQQWZILzkzNmZjKy80VjBlS3FlUGUxUjloODMvM1U0L0ljNnpIRW9VVlFCN0J3NFZ1dWI3M05GWlVCODdlaXY3K3JBVG5QN1Q5MW9BUUNnNng3WSswZ3REdDFSM3YzRmUrOU8xTXMzbi9wMnJVS1pPRmovMlNOZnJ1Vmd3RS90L0szMHRhLyt1OW9jL3NPZnQwSStlbSt4Q29ENmN2dFBIUWtBQU9pNnhWYUFPdmpJaHo3WVBrUlJIM0g0cjlzUXVjVVFJQ2JzMTBHVS9FZDd3dDEzM1pucUpBWjkvcmdtd3o1TFZQZFpBS1Z6KzA4ZGVXSUEwQlBSQ2xDWGllOHhOVDNIaWU5Tjl1UmZmanZWVVh5dmZPT0pmNTgrZnR2SFVoVTJyRi9mRGlIK1krdld2eTV0RW1mN3V0di9Ta1VWd01oMGZhcEIrSVduWHR6bzlwOWFFZ0FBMEROMWFnWFljNTlXZ0RxSklYSjFDWWpPRmRVQWUrNzcvSnRCUUJ6S3UyM3g0UDhYZi80ZjJpRkVIYmNUUkdYUGswL1ZNN2dwU1J3eW56bDVWYUkrb3ZSLzdKamJmK3BKQUFCQXo5U3BGU0J1VTdVQzFFdmRENU9MUVVBY3l2ZmMrL24wa1IwZjdHZ1lFRlVwbjlyNWlYYXAvMS85UC85M2JRLytpeHorNjJQdjFMQldnQnFKMHYvSkMydzJnS3JaQWdCQVQ5VnBLMEFjc0w3ejNiK3Q3YlQzMHNRd3dNOUZlMGFOQnR5ZFR4ektQLzVySDJ0L2hlaURiMzhkUE5NUEgxVXVFWGFkbUQ5L3RVc2M5RGYwOTdjM0R2UzMvbDd2M25aeisrZWg3ci92czduOXI1ZjJqZk9SelduMzRGU2lXa3IvcVRzQkFBQTlGNjBBc1dxdDZ0dk54VmFBMlB0T1BUdysra1M2djNYTG5wTTR5TWRYU2VMd2YzaFNjRlluNDhjSDByYStVK20yZDc2WXFFWUVNU016WmpKUWIycUZBT2k1dXJVQ1JDVUE5ZkROOXNIU0xXYWRuZm41ZlNKUlB5UFRnMHJQS3hJdEdQY2N1a0VyQnJYbk94U0FTdFJySzhBZDZWM2J5cnJCcmJNdmZlV1JSSDA1L05kWGJBV0lRNmdRb1BmMkhyN09uenRaRUFBQVVKbTZiQVVJLytiQlA2cjF3TFdTMUhralFPbWk5Ri92ZjczRklYVFBDMXZkUlBmUTZORnIwOFI4ZjRJY2VESUFVSms2dFFMRUFMWi8vcGs3RXZWUXAzQ0lNK0xmUjExK1hybTRnd3Q5NmU2ZktVZnZoVGo4eDlSL3lJV25BZ0NWcWxNcndHOS84aFBwZmJkVXY1MkFlb1ZEbkJIL1Bneit5NGNRb1BzYy9zbVJKd0lBbGF2VGJXOU1vTmNLVUE5MUNvZEtGMlgvOGUrRHZBZ0J1c2ZobjF4NUdnQlFPYTBBWE1pOWV4NjBGYUJpcWpIeUZpSEE3LzdqVFFiVWRkQyttU0dIZjdJbEFBQ2dGclFDY0Q1UkdmSi9mUEZQekFPb1NQeTUvOTdkWDFENm43azQvTWQyZ0lNTDZ4SXJGNVVVVVZHeGYzWWdRYTRFQUFEVWhsWUF6dWZIQjMrU0h0NzNlS0wzOVAwM1I0UUFuL3ZIbTlxbDZ5emZnVk5uS2ltZStmbFZDWEltQUFDZ051cldDdkRGZSs5TzFNTTNuL3EyTXZRZWl6OXZmZi9ORTZYcmV5ZUh0UVFzdy9qc3B2Uzd6LzJTUHpNYVFRQUFRSzNVcVJYZ0l4LzZZUHJVenQ5SzFNTlhSNThRQXZSSS9EbkhuemZOOU5STEc5c3RBZkVyRnhZSC9pajVINWtaVE5BVUFnQUFhcWRPclFCMzd2cDBHaDd5OGxjWFFvRHVjL2d2UXh4dW94SkFOY0Q1UmF1RWtuK2FTQUFBUU8zVXFSVWc1Z0RzdVU4clFKMElBYnJINGI4OFVRVnd4N1BiMHNqMGtDQ2c1ZW1UVjdYL1BLSlZ3dnBFbXNoM05RQzFWS2RXZ1BmZitsNnRBRFVUaDFTREFUc3IvandkL3NzMWZueWczUllRTjk4bEJnRng4STl5Ly9nekVJVFFaQUlBQUdwTEt3QVhFeUhSSFhmK1FidGloSlZyci9yNy9CY00vS045OEkyYjd6Z0VsOUFhRURmOFQ3MjQ4YzJEdjNKL1NpQUFBS0MyNG1EM3dGY2VUbldnRmFDZVlrWGc3OTM5cjlLUER2d2tzWHp4NS9ZN24vc1g2ZnZQMUtQYWhucUlnLzlpYThDZTU3YzJibGhnM1BiSFlMODdmckk5N1owYWR2Q25LQUlBQUdydE94Ti9uLzdtdTMrZjZrQXJRRDFGVVBRN24vc0Rjd0dXNmV2amY1RisvKzR2dFA3OHBoTmN5TVQ4aG5ZMVFJUUI4V3Njbm5NVS85elIzdkRwMXU4amJ2dGp0WjhlZjBxME5nRkF6VDI0OStIVzRmcy90Ry9ocTNiM1hYZW03ejM5Zy9iTk0vVVMvZXRQUHZWWDZjOGUvdGRwZU10UTR2d2lNUG5TVng1eDY4K3lSRlhBNUNzYjI5VUEvWmVmVHJkY09aOTJiSmhMMjlhZFN0dlhMYVM2aVgvZU9QVC9vSFc3UHpHM3dXRWYzaUFBQUtEMm9rYzVXZ0VlZXZDTHFRNyt6WU4vMUw1eHJzdDhBbjRoRHJlZitQUS9TNS9hK1luMDI2MHZRY0F2eFBkcjNQcEhyNy92WFZZakR0TlJHUkJmWVRFUTJOYTMwUHIxWk9wZjgxcFBRNEU0N0I5WVdKZW1YbmxIZXVia2xlbVpuNjkzNEljTEVBQUFrSVhGVm9DUGZPaURxV3B4cVB6bm43a2pQVEppQ24xZHhTRTN2bWRpZU9QSGIvdFlLdDMzbi81Qit0TGVSNVQ3MHhYbkJnSWhRb0doSzE1T1c5YStrcmE4NDVVMHRQYlZ0UDd5MTlLV0sxNXAvK2ZuL25xaHYrL2NhMnZhZngySC9NWC8rU2N2cjJ2L3Vuam9kOWlIcFJNQUFKQ05PclVDL1BZblA5RTZZUDZkTXVvYU96TkU4cEYyYTBDcFFVQWMvQjl2L2Y1OW45SnI3Y1A2UWw4NjJQcEtDazZnTnNSbEFHUmpzUldnTHU2LzcvTzFDQ080dU1VZ0lGb0RubnpxMjQxZkczaW0xUDhiN2RWK3NTSEI0UitBUlNvQUFNaEtsSFhISWE0T3Q3bGFBZkt5R0FTRTMyaDkvL3ptYmY4MHZlL1dYMDVORWJmOWY5UDYrZmhtNitkRGp6OEE1eU1BQUNBN2oreDdQTDMvbHZmV1lzQ2JWb0E4eFNFNXZ1Sjc2TU03UHBnKzB2cktNUXlJUS8vM1d0OTdULzdsdDlQaEtmMzlBRnljQUFBdW9Lb1NVYmMyemViN3FqUGk5eE5yektJRXZ3N3UvT3dkNmQ0dlB1am5OMFB4TXhubDh2RVZZY0Q3V3NGU2hBSHYzbjV6TFRjSXhEOXZWTUg4dHdNL1NmKzVGVHo1bmdOZ09TNzd3RWQvL2ZVRUFNQmJSQUR3N20wM3BmZmYrc3Z0WDkrMWZWdFBaejdFWWY5SHJZTiszT3gvcjNYVEgxVW1EdndBcklZQUFBQmdpU0lBZU5lMm05dS9ScFhBaHY3K05EdzArR1l3c0ZnMWNMSHFnVGpFejgzTnRmODZEdmt2VEU2bnVmbjUxcTlUN2Y4c0R2MlRVMU1PK3dCMG5BQUFBQUFBQ21BTklBQUFBQlJBQUFBQUFBQUZFQUFBQUFCQUFRUUFBQUFBVUFBQkFBQUFBQlJBQUFBQUFBQUZFQUFBQUFCQUFRUUFBQUFBVUFBQkFBQUFBQlJBQUFBQUFBQUZFQUFBQUFCQUFRUUFBQUFBVUFBQkFBQUFBQlJBQUFBQUFBQUZFQUFBQUFCQUFRUUFBQUFBVUFBQkFBQUFBQlJBQUFBQUFBQUZFQUFBQUFCQUFRUUFBQUFBVUFBQkFBQUFBQlJBQUFBQUFBQUZFQUFBQUFCQUFRUUFBQUFBVUFBQkFBQUFBQlJBQUFBQUFBQUZFQUFBQUFCQUFRUUFBQUFBVUFBQkFBQUFBQlJBQUFBQUFBQUZFQUFBQUFCQUFRUUFBQUFBVUFBQkFBQUFBQlJBQUFBQUFBQUZFQUFBQUFCQUFRUUFBQUFBVUFBQkFBQUFBQlJBQUFBQUFBQUZFQUFBQUFCQUFRUUFBQUFBVUFBQkFBQUFBQlJBQUFBQUFBQUZFQUFBQUFCQUFRUUFBQUFBVUFBQkFBQUFBQlJBQUFBQUFBQUZFQUFBQUFCQUFRUUFBQUFBVUFBQkFBQUFBQlJBQUFBQUFBQUZFQUFBQUFCQUFRUUFBQUFBVUFBQkFBQUFBQlJBQUFBQUFBQUZFQUFBQUFCQUFRUUFBQUFBVUFBQkFBQUFBQlJBQUFBQUFBQUZFQUFBQUFCQUFRUUFBQUFBVUFBQkFBQUFBQlJBQUFBQUFBQUZFQUFBQUFCQUFRUUFBQUFBVUFBQkFBQUFBQlJBQUFBQUFBQUZFQUFBQUFCQUFRUUFBQUFBVUFBQkFBQUFBQlJBQUFBQUFBQUZFQUFBQUFCQUFRUUFBQUFBVUFBQkFBQUFBQlJBQUFBQUFBQUZFQUFBQUFCQUFRUUFBQUFBVUFBQkFBQUFBQlJBQUFBQUFBQUZFQUFBQUFCQUFRUUFBQUFBVUFBQkFBQUFBQlJBQUFBQUFBQUZFQUFBQUFCQUFRUUFBQUFBVUFBQkFBRC92UjA3RUFBQUFBQVE1Rzg5eUlVUkFBQURBZ0FBQUFBR0JBQUFBQUFNQ0FBQUFBQVlFQUFBQUFBd0lBQUFBQUJnUUFBQUFBREFnQUFBQUFDQUFRRUFBQUFBQXdJQUFBQUFCZ1FBQUFBQURBZ0FBQUFBR0JBQUFBQUFNQ0FBQUFBQVlFQUFBQUFBd0lBQUFBQUFnQUVCQUFBQUFBTUNBQUFBQUFZRUFBQUFBQXdJQUFBQUFCZ1FBQUFBQURBZ0FBQUFBR0JBQUFBQUFNQ0FBQUFBQUlBQkFRQUFBQUFEQWdBQUFBQUdCQUFBQUFBTUNBQUFBQUFZRUFBQUFBQXdJQUFBQUFCZ0lEUEk4elNGYmJsY0FBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJGSURPXzJfMCJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiYmE4NmRjNTY2MzVmNDE0MWFlZjYwMDIyN2IxYjlhZjYiLCJvcHRpb25zIjp7InBsYXQiOnRydWUsInJrIjp0cnVlLCJ1cCI6dHJ1ZSwidXYiOnRydWV9LCJtYXhNc2dTaXplIjoyMDQ4LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0IjoxMDAsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4LCJ0cmFuc3BvcnRzIjpbImludGVybmFsIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN31dLCJmaXJtd2FyZVZlcnNpb24iOjF9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiUkVWT0tFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIzLTEyLTIwIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjF9LHsic3RhdHVzIjoiTk9UX0ZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjMtMTEtMDcifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIzLTEyLTIwIn0seyJhYWd1aWQiOiIzZTA3OGZmZC00YzU0LTQ1ODYtOGJhYS1hNzdkYTExM2FlYzUiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjNlMDc4ZmZkLTRjNTQtNDU4Ni04YmFhLWE3N2RhMTEzYWVjNSIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJIaWRlZXogS2V5IDMgRklETzIifSwiZGVzY3JpcHRpb24iOiJIaWRlZXogS2V5IDMgRklETzIiLCJhbHRlcm5hdGl2ZURlc2NyaXB0aW9ucyI6eyJ1ay1VQSI6IkZJRE8yIEtleSAtINCy0ZbQtCBIaWRlZXoifSwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sImlzS2V5UmVzdHJpY3RlZCI6dHJ1ZSwiaXNGcmVzaFVzZXJWZXJpZmljYXRpb25SZXF1aXJlZCI6dHJ1ZSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVsZXNzIiwiYmx1ZXRvb3RoIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDc1RDQ0FsaWdBd0lCQWdJUkFQK1czUXRud015WGFmdVFvTmFYY3FVd0NnWUlLb1pJemowRUF3SXdnYWN4Q3pBSkJnTlZCQVlUQWxWVE1Rc3dDUVlEVlFRSURBSkVSVEVPTUF3R0ExVUVCd3dGUkc5MlpYSXhHakFZQmdOVkJBb01FVWhwWkdWbGVpQkhjbTkxY0NCSmJtTXVNU1V3SXdZRFZRUUxEQnhJYVdSbFpYb2dRMlZ5ZEdsbWFXTmhkR1VnUVhWMGFHOXlhWFI1TVJjd0ZRWURWUVFEREE1SWFXUmxaWG9nVW05dmRDQkRRVEVmTUIwR0NTcUdTSWIzRFFFSkFSWVFiR1ZuWVd4QWFHbGtaV1Y2TG1OdmJUQWVGdzB4T1RFeE1qY3hOREE0TUROYUZ3MHpPVEV4TWpjeE5EQTRNRE5hTUlHbk1Rc3dDUVlEVlFRR0V3SlZVekVMTUFrR0ExVUVDQXdDUkVVeERqQU1CZ05WQkFjTUJVUnZkbVZ5TVJvd0dBWURWUVFLREJGSWFXUmxaWG9nUjNKdmRYQWdTVzVqTGpFbE1DTUdBMVVFQ3d3Y1NHbGtaV1Y2SUVObGNuUnBabWxqWVhSbElFRjFkR2h2Y21sMGVURVhNQlVHQTFVRUF3d09TR2xrWldWNklGSnZiM1FnUTBFeEh6QWRCZ2txaGtpRzl3MEJDUUVXRUd4bFoyRnNRR2hwWkdWbGVpNWpiMjB3V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVR1dGgvM2NjVmxJL2hHeUo3elNOYXFoQ0xEeUtNOUp1Wk5qY1RzbkRBWXlSRE9wellFV2lMcXMzamRmVktkM1Zndjgvaitmb0RNU01wSSttd2pPei9wbzJNd1lUQWRCZ05WSFE0RUZnUVVwcUl0eFlwTXRhdG9rMTJSakFpZXlEVWhhcG93SHdZRFZSMGpCQmd3Rm9BVXBxSXR4WXBNdGF0b2sxMlJqQWlleURVaGFwb3dEd1lEVlIwVEFRSC9CQVV3QXdFQi96QU9CZ05WSFE4QkFmOEVCQU1DQVlZd0NnWUlLb1pJemowRUF3SURSd0F3UkFJZ040Z00rOXUzTkJMTWtkRVcxUGFERzlPbFpaaVViNnZoQ01NTmk0NXEwNnNDSUI4QThLbDh0UlYvR2tKWVBTK3J1eTBuTFMzVit0Q0Z6VElFaUJBWWs3aUEiLCJNSUlDclRDQ0FsU2dBd0lCQWdJUkFMaGQ5NC80MzEySW16a2llbTlrVXZnd0NnWUlLb1pJemowRUF3SXdnYWN4Q3pBSkJnTlZCQVlUQWxWVE1Rc3dDUVlEVlFRSURBSkVSVEVPTUF3R0ExVUVCd3dGUkc5MlpYSXhHakFZQmdOVkJBb01FVWhwWkdWbGVpQkhjbTkxY0NCSmJtTXVNU1V3SXdZRFZRUUxEQnhJYVdSbFpYb2dRMlZ5ZEdsbWFXTmhkR1VnUVhWMGFHOXlhWFI1TVJjd0ZRWURWUVFEREE1SWFXUmxaWG9nVW05dmRDQkRRVEVmTUIwR0NTcUdTSWIzRFFFSkFSWVFiR1ZuWVd4QWFHbGtaV1Y2TG1OdmJUQWVGdzB4T1RFeE1qY3hOREV3TVRSYUZ3MHlPVEV4TWpZeE5ERXdNVFJhTUlHZ01Rc3dDUVlEVlFRR0V3SlZVekVMTUFrR0ExVUVDQXdDUkVVeEdqQVlCZ05WQkFvTUVVaHBaR1ZsZWlCSGNtOTFjQ0JKYm1NdU1TVXdJd1lEVlFRTERCeElhV1JsWlhvZ1EyVnlkR2xtYVdOaGRHVWdRWFYwYUc5eWFYUjVNU0F3SGdZRFZRUUREQmRJYVdSbFpYb2dTMlY1SUVaSlJFOGdVbTl2ZENCRFFURWZNQjBHQ1NxR1NJYjNEUUVKQVJZUWJHVm5ZV3hBYUdsa1pXVjZMbU52YlRCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQkNCTHlqL20zUkR6WTNJRmQzTXN5ZzRleG1rTEdNaEM2YUdIK1VtemwwMWJiVG1vNklRY09hb3ErcmFJRndHdmkzc3dJQ0lQQ3FVS0ttR29oclNVb0t1alpqQmtNQjBHQTFVZERnUVdCQlFLOFlWOXpZYVhFYWc2My9OQmtoeXVBUTN2UERBZkJnTlZIU01FR0RBV2dCU21vaTNGaWt5MXEyaVRYWkdNQ0o3SU5TRnFtakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VBTUE0R0ExVWREd0VCL3dRRUF3SUJoakFLQmdncWhrak9QUVFEQWdOSEFEQkVBaUFuTjh6ZHR3RnBEME8xaFpWMHpZU3ZoU3hpOG44MEI3aGwySTd3SkdVb3l3SWdQcUd1VW92a2E5eitLenZVc2YrR05kUzVZYm54NjVPenlxeENOVHhLalZRPSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFJQUFBQUNBQ0FZQUFBRzBPVkZkQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUF5UnBWRmgwV0UxTU9tTnZiUzVoWkc5aVpTNTRiWEFBQUFBQUFEdy9lSEJoWTJ0bGRDQmlaV2RwYmowaTc3dS9JaUJwWkQwaVZ6Vk5NRTF3UTJWb2FVaDZjbVZUZWs1VVkzcHJZemxrSWo4K0lEeDRPbmh0Y0cxbGRHRWdlRzFzYm5NNmVEMGlZV1J2WW1VNmJuTTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlrRmtiMkpsSUZoTlVDQkRiM0psSURVdU15MWpNREV4SURZMkxqRTBOVFkyTVN3Z01qQXhNaTh3TWk4d05pMHhORG8xTmpveU55QWdJQ0FnSUNBZ0lqNGdQSEprWmpwU1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJajRnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJZ2VHMXNibk02ZUcxd1BTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZJaUI0Yld4dWN6cDRiWEJOVFQwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOTRZWEF2TVM0d0wyMXRMeUlnZUcxc2JuTTZjM1JTWldZOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXpWSGx3WlM5U1pYTnZkWEpqWlZKbFppTWlJSGh0Y0RwRGNtVmhkRzl5Vkc5dmJEMGlRV1J2WW1VZ1VHaHZkRzl6YUc5d0lFTlROaUFvVFdGamFXNTBiM05vS1NJZ2VHMXdUVTA2U1c1emRHRnVZMlZKUkQwaWVHMXdMbWxwWkRveE1qRkRPVUkyT1RWQk1ERXhNVVUxUWtSQlJFUXdRa0pGTVVaRlJqaEdSQ0lnZUcxd1RVMDZSRzlqZFcxbGJuUkpSRDBpZUcxd0xtUnBaRG94TWpGRE9VSTJRVFZCTURFeE1VVTFRa1JCUkVRd1FrSkZNVVpGUmpoR1JDSStJRHg0YlhCTlRUcEVaWEpwZG1Wa1JuSnZiU0J6ZEZKbFpqcHBibk4wWVc1alpVbEVQU0o0YlhBdWFXbGtPakV5TVVNNVFqWTNOVUV3TVRFeFJUVkNSRUZFUkRCQ1FrVXhSa1ZHT0VaRUlpQnpkRkpsWmpwa2IyTjFiV1Z1ZEVsRVBTSjRiWEF1Wkdsa09qRXlNVU01UWpZNE5VRXdNVEV4UlRWQ1JFRkVSREJDUWtVeFJrVkdPRVpFSWk4K0lEd3ZjbVJtT2tSbGMyTnlhWEIwYVc5dVBpQThMM0prWmpwU1JFWStJRHd2ZURwNGJYQnRaWFJoUGlBOFAzaHdZV05yWlhRZ1pXNWtQU0p5SWo4K3ZyNVhJZ0FBRS85SlJFRlVlTnBpRERsNmdRRVA0QUxpQkNDZWhrc0JFdzd4LzFDc0RkVzhEMGtNQmJCZzBRZ0NBa0Q4RVVuY0NVby9SbExEaUc0QWlnUU9JSXVrOWk4UU02TzdBSjltZEhYL2tjUGdQd21hVVF4aEl0Rm1kSEFGWkFBM0VKOGhFQnYvY2NqcmdBeUlCMkpqTWwwQURvTnBEQlFBRmlJQ2lxQUxZR0FkaVpiL1IzWUJJNTZBd3V0QzlMeHdnQVRiUGRIREFPWUtKU0MraDBkekFCQzdBUEZlYklISWlKWXZDQVlzUUFBeEVpZ1B3b0g0Q3hCdkpTVWEveE53RVNPK0FnVTVTek9pYWNMcVBTWTB6VllFRWcrR0lTeGtaR2RHcEF3R1R3ZnBaSlFGY0JmOEo3TThBT241eDBRZ3RjR3dFN0ZKR1JmWVMycTlBQUw5QkxMMVRQUkNGUjBVWVVrUHlDQU5pRTh3VVZDZ2dvQWxzaGZxU0MxTWtMMEFja1VqT1dtQkNWdHRRNFR0akxoaUFTU3hCeTBOSUdNdDlEQURDQ0JDNVFFNitBekVQR2hpMzZEdENHU3dISWlqaUsxWEdJaE16ZitobGpPaVlXNDBmaWNRUjZMcFN5YTNnWU1jNW94RUpya0tMT3JuNEtxaW1mQllERE9BaVlFeWdPNXdrUG1xdUFwVUVCQ2xNSE1SNDVCYlFMd2R1VUIrRGNUbmdkaUlnZllBdVZaZ2hZV0FDQkIzazlHMFFNYVR5WERNTDVBRFFxR2NaZVFVUlVnZ2g1em1EUk0wSHc4WVlFSnJkRlNSRUkvbUJGSTdTWVg1UWlqZFNvTGpUNUZZUHNDQUNiWXFPWUZBL0ZJVG5JYlM1dGhxbzFRYU93SzVrRHVGclNTY1EyUUxsMVFnQnpXdkh6MjZXQWdVRnRKQS9BU0wvQjFvdGowRzdkTktRaHY4b0toa0phSTRKcnFUOUJSTkl5akUvZ0N4Q3A0bXpGbTBoSVlYQUFRUXFlMEJsQVlWMUtMdlFMd2ZpTy9Tb3B1SURIeUFlRE1KNWN0L1loVVNBaWVnaG0zR0VhL1k0dmNmVWhPTW9oRDRqeVZOeUJEYjl3R0NxNFE2M0xoQ29BR0w1WXg0TENlVTR2K1Q0b0FsUUZ4UFpobVA3cEFMaEJ5QjdnQXpJSTRtWXdRSkZ6REUwZXJDNllDVFZMU2NBVWYzRjI4bm05cVc0eHFnbUlvdkRkRENjblN6czlBZDhKOE9scU03b2g1YmRVd3Z3QWZONm1BSGFBOUFVL0F6Y2tsNGdJTFVUV25hWVdLQzlna290WnpjQmt3Zk9mMis1MVNJZ2pKWURZdnNBQzRpTlV2Z2tmTWkwb3dtbUozSURwaEhwT1lsZU9TMkVXa0dPNngyUlhaQU9KR2FZNm1ZRytZelFkdHdsQlNyRE5ER0tUbTVZQm9MdEYzM253cU9JQmJzdzFjYmZxRkRJZVNJendIY2RDd041WkFkZ0J5Y0xUUzBGRG1xSDZPSHdDY29YVTJueWdnakN2aXhOUmhvNVB2UHVOSUFSb09CeGkwanZDMmlEelRxbGhQVkwyQ0VSa2taaFJZekEvRkdmT1VHQzRHZ0FybThFNHZjR2lEZXhBQVpjQVIxeDAyaFJiazVqb0tIa2R5dUdhN0JpaEFvcHJpMFpDSWg0WUJ3RHhGcXJVbnBUUUVFRUNYakE4UUNEU0F1aFBhNFNDbHBRWlBqb05IWFJiUjBIQk9WemR2T2dEbUVmSjBCTXNXRjd2a1NwSmppQmVLWGFQS2dTbm9oQS9hWkg2UEJFZ0FGYUE3endLSHVJOVNUeU9NcHZXaU5BQWswK1ZsNDdEMkxaT2N2ZWdlQUhwTGwvVGpVdkVQempBQVpMWjEwTkROVzRGREhpdVNlQjdRTWdNVlFTeTRTNFdCaEdtVFhTQ1R6RlhDb2tXZkF2M2lHckFDb2d4b1lnNjFGVFdTU3BUWjRpR1N2SDU3YW4yQkFrRHBFQ1FPOGRHcThFd00yTStDZlhQZ1BUYjF4cEtTQVloeUd3VUo5c0hnZWwvdXdkV1QvRTVzQ2RqTkFWaXFoQjlSL2hxRURjS1dJLzRSYTQrdlJQRy9CUVA1Q3M4R2FJbkNPRUFjeVFOYXBnY0JNcU1hVERNTURZRnM2Z1JFQTY1QVVaekFNVHdEeTIyd291eHM1QUpDNzRFcDBjSWdudExHRTNJcGNRYWRBU0VWcWlzTURBSGtJZ0piREFURFBnc1l3QmRIa3dwSGs5OUFwTUR4QUFXQ0pwUXFrTmdnanNTQjFwbEhCcTQvZUlXTmlJR0Z1blFLd2t0d1lvckk3ME1jVE5FRUI4QjJMd3NCQlVtamRvcko1THRoYWd2dXdLRnhGbzRZSnFXTUw5NmpvQmxNc1ludVljRmdDYWlGeTBpQVFEcENnMW92SzloL0ZJdGFOYmQwV0RMeWxRWkoyUk92anUwRjdjMG9NNUMxQ0k2WHd3N2FZNlFyNnlqbGtBRW9Cd1RUTzQ3dWh2Ym43TkxibkFvN0lRR2tKWXVzWXJSa0dyYjlYV01RdXc3SWpjZ0NBdGx4WmtUQW1NQlFBcUhNbmlrVmNEMWR2OERnRDl0bUZvUmdJVTVFNmR6aHJKR3dESXFkd0ZFUkRLUkRtWW1uU2I4TG1MMEp6VTlkQXJTVjhBd3FERU93Q1lsZGkyeUdFQmtXMWNBd29NQTFTeno5Rzgzd2RvUWdqZFc0T3VjRFVIV1NlQjBXTURKckhtd2xwWWlIUkVsZ2dnUHJ1bDdESWY0UG10UTBNa0swQjFCdzhCUTNQK1VJTE5pMXFOYm1wTVRrNmc0SDBmWVhVQktCMVQyUlBqMUVqTDJlZ05XTnJhT2haVUl0UkdNMCtpdVlHV1dqZ3lGWUc3SnRSV0tCdGYyZG9RMFFCcWNQRkRDM0Fia0hiSXFDUy9EWTlrZzlBQVBLdUxTU0xJQW9mTmFSQUpCSVNJN3NRV2tTUUpVWkptZDN3SmF4ZUlvZ3NFSXd1aEQwSTBvTkcwVU5sUlE5WlVZRVFCUktJa1JIZHlDTHlJU3FRSWdzaXFNZ0tvWWNTcEZEcjlKL2gzNll6dTdQN3o2eTdmeC84b0xPek8zTytuY3VaTTJmT2h1RWZJS09ZZmdXMFFFSGhQeEVCV0ptaE1Dc3pMb1F5YW1tTUtQTnhEdzZlbDM3L2poaTJDVmdaQTJUZ0cyMkhwSUh6dkl2d3FsTnNPVVRhRzNyR2QrbytrU1pnTVZVV3ovaHM5TWlMNTBEUVhVNmNobTN3eUkvNWJ0THpPNk5Hd0h5cVdJOUdYckdUaXdyTE4wZDZDNld2MEhqR09pcnZYaFFJR0ZFWUcyUTBnL3RldmtBMzVTc2tiZE1ObFVSRTNWZ1FzRWR6WWJTTjhoencrZndQTkVEbmFLeEN6NmF5VWcweUMrQ1VsZStSWnplWThYZ2RwSmVFVStaSGpiVUF1dVM5c3RrQ1JqMkV2MGh2M0xTN2J6ODkxMnVqcEE5b3o4OEdBVzdON0FkVnNNYXlUbkdUeW5ua2t1Y29yVStNRXVBbS9GWklIc1FJQytnT084M2xPdW9RcmFiR0FPMjRQV05nL01nZ3ZTT0x1YjZERktsanFiU0FVUmRWTlNxbXNYRzBlT0xRNG1XNGNTUGdpaUw5S1NUYzVLS0VLbERIdCtrTlFrQUo4UDd3NlAxZkN0SEVmbEJIdEJueVM4QXpKZzFENXF5SGFBUHJ1RlpoTmRxdVM4QkZKcTBMTk9NRlJRRFhxVXZJT0tOTGdPd1QvQUFTeHNnNEFRZEZibnU5dzRzQTJWbmkzZS9mY29nbmJqQ0syUVl2QXVUbDZIU0lON0E3TjBwcGJTb0Nqa1JJeVRFSlBIWjJXdEpjV1FJYTBsQjRnWjIwamhCWUl4T1E2N2lZQmVrSlhFa0tVL3M1bVFCeE9oRlBmWXhBK3FKWUh0c0VBY0k1dWd6K0g4emtab0VGSVJYZUFYODdTbU9NdlpVaHRnQ3hXdnhEUUc2SXJMZVJ3UEo4alBFODdvSjlMNVJsanI4M2lhVmtWVWpDbzZOaXVhYjl3ZFlzNUhRTUx4UXRJSXltVjYwcHZKY2RJbFhJRG1EWm1VeS9MN1pROE5VQTk2eTJVSTk1MHY5ek1pRVpubDJnd25DaFFlMkZyU0cwekdsSXdFU1A5WUFKQlNRSWlrSWdZRUltby9pc01seElIa1FEWEZ5OERCR3gwWWw4d3dVSDljQVlObHdQenFieDUxc0lBNWFaZnhyd1B0T0hzYmw0VWYxSXdBdm13Z3pEaGZjRXVNZjA2VFhPc05PSEJIQWZzcWcxWEhpNXovd0hReG9YQnBDQTI4eUZPZ3VGNmU1RW84N1FaTGpzUXRVRkpJQTdIenpaQWdIRDhHL1FUeG5vUG1mRDlON0lwTjN4ZWl0SXdoY0xsUkdhSjU0VHdyQ09RNHBXYUJMY2VITEt1UnptQnNJV3k1VkM5N2RySVFpdlFxZVRBSzZKYklIMFFMM2JSVUZBbCtKNmZob1FjTUp0blpFcE5Va1oxMk11Zkk0aWZSZEhBTGVwV0JwekFyaFFvME5jRjBDOFZEemtlSXdKV09abEZQSGFHa1BzamFud1p4WHB2VzRFZEN0dWFvNGhBWncyTzFjMUN6Z3hoVW5ibndadi94UFh6VGtDK2hYS3lhR1l2LzBDTnoxQUJ1ZWJ2eThtd25QT1hadTlGQ0VPMlV4YWV3d0lrSjI3TVB6ZjVTQUUvSVRraDVFRU5rWmNlTTY1cTBSSEZWWUI0d2ZJbjZWNkhWSGh4elBDR2dscmk5R0ZuWjVqUlpic0JhbmlxMS9oZFFsQTFFakw0ODhSRTM0aHRRQmZ3dnNoQUlFdU5Pc2MvK01XZHpXTTdVbnlJbXFoVHh6amxxK05WYitWZHdZaHdDMXV0TitocVV2czgrTWcxT1ExOEFUQUpMSlBJT2svSE9YaGVDUzhXeTRvWmk1WEJEMDRpU1E4aElUZnZqemk0azkyWE1iemdXaDlmazdhMkh0SE44S2RxVHhTVkdaQndreUd6L0Rqb29keFFnTHRiNlJ5Y25RcEpEN1BNYWlSRi9OVmdQbU4xNVBnWWZFeDNRV0FlYlBZR2hhRjNQZTdxTno2VkI5a2FnQjdUQlhDcHZqT291RGlNNmZHZkpkTmorQUQxSGV4a3BXZ2prS3RDL0dCQWZIcDRjT21HYlY1ZXZ5K05Cdk1wa1hXRXBxK3BrSnlCeGk3MGxzaURJL0UzZ0x6dThNc2ZnblEzcm1HV2xGRmNYeDU2RkprSklTYW1NWk5MNW1pZmJDSW91Z3E5cEtFeXBJd0E4MnVsTjBNTkFzcSt4SmhvV0NaNWFPWFZwYmFBN09Ya2Q2TW9xTDhFSlJtRDVNa1A1UWEyQVBMTXN6ZlBXdDNodE9abVQyUE0yZm0zUDJIZzlkelp2Yk0zbXZON0wzV1h1dS9Hc0VmVUcrUXprTUNaWnQrQnF1UG82OStUdEJGVTR0VVlpTktPcjMrb1M5MU5IbXYraENnOGY1T1B6c3NYL3FGd1RFRnZHZFlONGgxbnFCUFZGb1IvY3pVSmxxb0xjSjVLRWFYcmdrM1MwSktrNnhSeXZuOXRhb3h2dCt6K0Qyb2d6MGpnZkFQU1hsdnFMOHVzcGZvZDNIQTJoVUgzSnZhaHJsUDNpRHp4YTVpcDFNQUJRdUhUejJEeUx3NFY1S0htV0VxVHBRSzhSQlRBSHRqKzlTSmNKdCtaMzZubE1XWENhL0ppdkF1TlhwTWY5NlRuSVhqTjFvQm1KTmY5Z3pRbGhRRzZDOTl1ay8xQ0JUaTZQVVIybGlyRnFrNW43L1RvQmx1cjFKd2VGejc5RFFGWURYOGhWUnlKSktTMXZLcW5TWGxOQ2VFZGF3KzNUK2tlTSs4RGE3MUtBUlA5NlB5Ly9qU3FNRExlRURIWXFzRTB5RVVXZ0Z3VXIydUhZWGhZMlNDdHRpMG0rNFJ4c2txakN6VHZQYXIwclY0RkdKWndqYlBWb3ZqaUw1dGVqV0RBbHl2SFRva3RVTlBiSUNMOTE2MVdIcXBTYmN5WjJzWEZPSVdqMUt5Ly81K2d2WW1TYVdRL1ZWRlZBREQ2dlJjelBOeFRvelN3ZVR0Y1g5V2pwR1VzRVBuZTZNUVNRSkxUR3Job2lJb2dDbEVGeWZHZXFQYTRRd1lVYlRibXNqZmNwOUhHZUpXTHBxdFk3czZqd3F3VFB3TDhRVUIxK2RncWRTUitFV2FIeXVrZHExTlcwelJzVjZZQndXWXFqZHpjNHp6R0FCODVYdWs1OEpVbXlWZjROc1k1ekwyMXpSQ0FTQTJKYUI2VllSeldPRU8wZzQvS3c1ZTRQQTZYY2ZtcVlqbkVnbTNYV0s2OWVNb0FGNHpDT1JPc3p5K1MyMzBWaWt6NkRvRW8wTVZJVXFtNEFpMWxxYlhXd0ZJZVZ4c2Vld0c3Y2hGMHR4VUxQWENNb2xlWTR1M3g2WjZLQUJQTDVzdzUxb2NhK2lpcjNReVRBVWJ4WTVDMTRBSGp2S2QvZEpTZ0hhZG84S3F6YjBqZG5UWkR2RmdLSVJ0d29Fb1g0cUwvS3lrQ25DNWhKY0UvRnlWNDFJbm8weGdBdUpzUElTRVlvNk5xd0JqeEQ5L0ZQd3E1WTBkcWduODZlU1NPVjVWUmVnTU9RNU8wTkZSRllDay9hQnlEY3p2YkdOKzQrVFFjQ3hWUlhnZzRCaDJHdHRzRllBZHJ0ZDhHaklGeXphNGNjOGQ3bGJaclBXUjh4dTJDb0FwVVIxcTlaWllWcXB6YURnbXE2eTJWbjAvVEdwUXNWVXJBQXNMTDBrR1FSVURkREhvVUN5UXJYR0tsT01uRENBTXZUaElBYXJuRVNKaGZuSmpXVmhRZzZoNlYzVys5ejllLzNHSHZpYThZRnVXT1ByZm0yaFFXT1BnT2gycTlqSWJLamhPZHFuQ0gyNml2aEpNVzgyWFN1UVJZWGl2VkN0QUxYT0NzR2tDSWo4cDhDQkFqdnU0Q2p3S2lGdGtsL09qQXZlZG9KcGE5TkNkUmdITUZFQzZrbDlTYXhIclNKRGtZYUp2dTJJSTN3emVoMUlKNXk0aXQvNzVQdCtQVlZQL1B3VUk4dUpkVUxCTzg3U1R2cFZtL0gyN1RnMExDellXNDBMNjFLMEFKQ29HK1l6NTdiaUNkQmpUWjBZZDI1OHI0YTd4dktDZnp2ZEJWa0ovRklCRXl1RUJCdzRNYVNndldKZlJmYlpMOUtDTlJvQ2QyNkM2ZDhoOG1DbFoyamVrc2ZFNTd5eXYreXhaaktiRlhGZGtpVEFhZk9RK29LU1dRTmdDWjBMT096c3E0K3VWYXBqTWVVT1k4NjQ3TUxXa3dnL2JGajVUOHMwZituTURydmwzanNjRHF0Q3dVaWpkK1lrSUhoS0VBeGFOWHAzakRyUFJrV1YwTWJ1Z20zSThIamJUSVJGZUIxRUEvUDAyeERhVGN0eGhzb1ptWm5pOWpoeVBSWXZsdzBxVTEyNFVnSWllenl4T2FNdjVXb0Mzd0dVWlhJZFNHQi9rZUJ5bWlBODdiQlhZSStpdUg4S3JvTXV5OFp0eXZ2QXhjWFB2MXFIdDlkcjJ4emtmZzA3TDR3ZzJQVnp5RE53K2k1TW1TUHBWdHVxQmNTcXNoMU5veStUMVRTeEF2eWRaK2tLWThqZUxaL1hQYnQ5YXk0dmNJOFhCYktuazRlRVhoNUZqZDhpOFNPN2VPWkpPWm0vV3NDMDg5SUphQWVLbGljTWp1TU95QVFweHJoT0hQQUU2M3dVV3g1R2tneFByZTZteS8ySHVlTXp5WXJ4YWozZGpuaHUwSHYwOGFIbnNBaVA4YWdVQXNGclpWTTBpVE94cE4rNjV3V3F4Uy9KaGlwdm4vYUw2cE4vRXZvSWdwRW16M05nM0hJdkZmOSsvbHYvaW55QUZNUGEwYlpXVVI2UjJrUkdIYkhDRGxMTzFiVEN2bG5sY0NqaDRUUVRiZTVpVFJlWVlFMkVhWHVIM1VBZk5HOWVwY0cwQUUrZEFKNVBNUUxEdUZzdGpJWm55WlhBSld6amdXclVwbzloYmxhQ1BrMDNkUVpDdWJYMXUrQVlEOXdWc1ZvNTQvNTZ3dEF6WUpUdlJ5YWl1NXA2dDhCK1MyZ1hVSXlzQWdQYk54c2RNR0RtZXRwT2NyRkxIR1dyRzJaUUdtbmIwTThlbTBTZ1VNZVNWRVdRUVJxc08xeDhaS1lPY3pGSURLZmcyWGxwbzl1QWJmc2EyNGFnY1FWQ1pFU0VjeHZJRllUTnhCaU9jN0JLRHNIeWJzaTRyOU9HTFJKSWRseVp1cW1wbEdIM3JkalZYSE9JQkhvYXcyQU9jZDBNbEpnTnBFcUpJQWtrSUtMMGo1RGpNbGNsT2xwRkI3RVZZallPWnV1amVGZmNpYVZERlVsV1RiZE9nalNTMkgrOTBNclVHTVFqTEEzNWZwR08rUE9tRjBpU0x2bFZ2YXFuUDc5UjhXK0prRzRvbnBVeVBIeVQ0MjlPNldEM280anYxSnVmNEtNbDZKMk5mUUwxem84OTBrS3JnRGJLb0cwanU0VVlKenFUWm93dkdiZnJoNzYrbHpFVFdETUF2TWx5dElqNGo5ZCtCSVF2b1M5U2tyaHV5TGh4SmpaeFZrcXdjQ3BtL082VmNyMituTG9CMnEvbXpSK3BQT1krekM0cDc2RmZnU3laYWVvaitQVVJONExpZzRCV1UreTlsSlpCR1ZnNUZHZUREN2VtUlJiemx5R2grc1JFWGIyVFpPSnhKdmZWdHdIYnkyejFJNk5Ed3RXcmYrelJLK0kxV0FDL1lSQm92bFVoYzVzdm5SU05YQ3c2Y1pTdDFMV1Q2ZDRVRVJ5ZjNPQVdveGxjNkY1WThnM2FobE4yZGUzTXM3TDA2clozbnVXK2NaZE4xdlpJN05FUDFjTGFoaVltREVHRzByckQ3MTFIQVdDa3drY0JCQklIVWowVWV2RjVIampURFc5WWhMdjRGTUZiQjdvLy9KSVVBQUFBQVNVVk9SSzVDWUlJIiwic3VwcG9ydGVkRXh0ZW5zaW9ucyI6W3siaWQiOiJobWFjLXNlY3JldCIsImZhaWxfaWZfdW5rbm93biI6ZmFsc2V9XSwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiXSwiZXh0ZW5zaW9ucyI6WyJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiIzZTA3OGZmZDRjNTQ0NTg2OGJhYWE3N2RhMTEzYWVjNSIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOnRydWUsInVwIjp0cnVlfSwibWF4TXNnU2l6ZSI6MjA0OCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMV0sImZpcm13YXJlVmVyc2lvbiI6MX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMi0wNy0xMSJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjItMDctMTEifSx7ImFhZ3VpZCI6ImZjNWNhMjM3LTY5YTAtNGYzYy1hZmU0LTFlYmM2NmRlZjZkZiIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiZmM1Y2EyMzctNjlhMC00ZjNjLWFmZTQtMWViYzY2ZGVmNmRmIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkNsaWZlIEtleSAyIn0sImRlc2NyaXB0aW9uIjoiQ2xpZmUgS2V5IDIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MjU3MCwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9LHsibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUJ6akNDQVhXZ0F3SUJBZ0lVRVYydVkwVjAxanFiWFBFak1mWXpDZSs1VkJ3d0NnWUlLb1pJemowRUF3SXdJREVlTUJ3R0ExVUVBd3dWUTJocGNIZHZiaUJHU1VSUE1pQkRRU0F3TURBeE1DQVhEVEl6TURNd056QXpNVGd3TkZvWUR6SXdOek13TWpJeU1ETXhPREEwV2pBZ01SNHdIQVlEVlFRRERCVkRhR2x3ZDI5dUlFWkpSRTh5SUVOQklEQXdNREV3V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVNjSTFUalVMT1VPTE9TdkpJOGlYN2psai9zYTFnaU9kQkVxMjBXNndrWG56eFFKNktnMU51b2hzZStpSVM0MHFNQ3l5M0FwYVp4d05SKy8yOFZHbVB3bzRHS01JR0hNQjBHQTFVZERnUVdCQlF6ODlKUVhUeGJ5alNsUzM1bXNQSDdheWlHZXpCRkJnTlZIU01FUGpBOG9TU2tJakFnTVI0d0hBWURWUVFEREJWRGFHbHdkMjl1SUVaSlJFOHlJRU5CSURBd01ER0NGQkZkcm1ORmROWTZtMXp4SXpIMk13bnZ1VlFjTUE4R0ExVWRFd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnRUdNQW9HQ0NxR1NNNDlCQU1DQTBjQU1FUUNJRHdoOFNBc0l0UUthS3RhMWt0MmJ2MnBydkY1VXRXQWtUVjBlZzhrTGZMS0FpQWdleDl4cEtHQ0xQZWkrOFR1RWt4eUtRQzlGNjd0OTZIVnZRUEUrdVVmQlE9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFUQUFBQUN3Q0FJQUFBQUhYcVhJQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQURzTUFBQTdEQWNkdnFHUUFBQkR1U1VSQlZIaGU3WjM3YngzbEVZWVQzMk1udHBOZ1RHNDRjZXpjbk5oSmJNY1hISUpFZ2FvcVJkQWlWUlVDU3RVV2tIb0JVVlZWSVlDVXFxR2t2L1NIbGxaSXRGS0xvUCtrKzNHKzE5dk5hNS9qdmN6c3pwNHpqeDZoSkdkMzN0bmRHVTdpT1BhQmJjZHh6T0FMNlRpRzhJVjBIRVA0UWpxT0lYd2hIY2NRdnBDT1l3aGZTTWN4aEMrazR4akNGOUp4RE9FTDZUaUc4SVYwSEVQNFFqcU9JWHdoSGNjUXZwQ09Zd2hmU01jeGhDK2s0eGlpUnhmeTJ2elJIMzFuOXQzWEZqNTYrL3A3cnk5OGUrc1VYbkNjV3VubWhadzVNZmJmUHo5VjBnL2VYRUk1eDlHbjJ4WXl2TjNSUnNtNnRqaUZKTWRSb0VzV2t0YW1HcEh0T0hJMGV5RnBRK3J5NnR3a0duS2NjalJ5SVNlUERORktHQkg5T1U1UkdyYVFMejkzbG5iQW9PalZjZkxUbUlWOGR2TWt6YjF4MGJmajVLRVpDMG16M2lCeEFZNlREZXNMU2ZQZFJMLzY5QTR1eG5IMncrNUNEZzMyMFdRM1dseVY0M1RFNkVMU05IZUgvbGJwN0l2RmhhUTU3akp4a1k2ekY3WVc4cS92cjlQNGRxVzRXc2ZaaGFHRnBLbnRibi8xeWhWY3R1T2tzTEtRTksrOTRQMWZMK1BpSFdjSEV3dEprOXBUNGhZNFRvdjZGNUlHTktNNE9TZC8rMkNENmxnUXpUbE83UXRKbzluQlI0K040Qnc1S0tKRzBaRFQ4OVM1a0RTVWU0cERIMlp4NGNxVG14dkZSSW1Ib2RCYVJDdVZzSFR4Mk12UG5YMzloYmtINzYxU0c1MmRPVEdHRWowR1RkR054V3Q0UVpyYUZwS2VOSW1EVXR6ZVdLZWJVbDZVVGtGdFZDeWFFSVVpcEh6dGhUa0VkQy9IangybGdkbFRIQzFFUFF0SlR6Y3RqdGhoZldXWnJsOURoTzFBTFZYbWIzOGkvLy9kNmVPSEtFWFFjNmNPSTZhN21CZ2Zwd25aVjV4Wm1ob1draDVxSWw3ZWdTNjRHcEhkZ3RxclJtU0xRaEhpSXFaYm9KSElKVXFVb09xRnBHY1p4V3M3MEVWV0wvcG9RYTFXSUlMbFdGdWNvZ2h4a2RSOGFCSUtpRUpGcVhRaDZTbEc4Vm9MdXJaNlJVOHRxR2R0a1NvSDFkY1FTVTJHQnFDd0tGZUlPaGNTdjlxQ0xzbUlseS9NbzcvdDdmZC92a1Q5cTRwVUlmNzFoeTJxcnlIQ21nazkrcEtpYUg2cVc4aDJEMjl0K1NaZGpLQXpaODRncGowYnQxYnBMQkxIdGFDclVCV1JRbEJ4SlJIV05PaUppNGpTT2Fsb0lkczlOcm9HS1ZHOUtGUXRpQmRhMExYb2lUd2hxTGlleUdzTzlLeWxSUFdjVkxHUUU0Y0g5M3hnZEFIbFJWMVJrdUxycXl2NEpkL0pqaUtzT1NTUFdGd0U1S0dLaGR6OXRNcDhxczF1TjIrdHhyS3F4Q3o4cEprN1NaWDFSRjRUU0taSVEyVGtRWDBoZHo4bmFycU1XK3Ryc1dabGhGRDhxSmx2T0ZSY3lmNitnOGd6VDNxY05FUk1acXBieVBoVGFyZU1zV0QxckZ5L2poODFjQ2Vwc3A3SU13OE5sYmlJeVl6dVF0TGpvVjRMRzZ0WjROVDBhSEtOZWo2N2VSSjVFbEJ4SlJGbW0zTXpqOU5vaVl1a3pDZ3U1UE5QblVrL0cycTBzTEdhSFpJUlZCVmhFbEJsUFpGbkdCb3REWkdVR2NXRlREK1ZxNWN2VWFNRm5KczlGNnRaSXhsQlZSRW1BVlZXRW1HR29RSFRFRW1aMFZySWYzeTRtWDRxMUdVQll4MmIvUFFIRjVJcDFCTmhFbEJsUFpGbkZab3hEY2ZHUmhHV0RhMkZURDhQYXJHQXNZNWxraEZVRldFU1VHVWxFV1lWR2pNTmg0ZUhFWllObFlYODdPNDNYN29tL3BqNksyQ3NZNS8wSUNxSkpBbW9zcDdJTXdsTm1vWkl5b3pLUW9iSDhNZlcxemlrNWdvWUN6YUM5QlRxaVRBSnFMS1NDRE1KRFp1R1NNcU0vRUxHVDVTTFA2Ym04aHFMTklqMElDcUpKQW1vc3A3SXMwZjRBeDZObkxoSXlvejhRaVlQZ0RyTGEzOS9mNnpUSUFiNkQ2WUhVY1BwNDRjUUpnRVZWeEpoSnFHcEV4Y3htZEZhU0dxcmdMRmE0MGdQb3BKSWtvQXE2NGs4ZTlEVWlZdVl6QWd2WkhMcnFhMjh4aUlOSlQySUdnNFBTZjdlZ1lvcmlUQjdxSDZ5RGpMeW9MS1ExRlplWTZubWtoNUVKWkVrQVZYV0UzbjJvUEVURkFGNWtGeklnd2RSamRySzVlRGdZQ3pTYUdnV3hWMjkrZ2lTSktEaVNpTE1KRFNFSXFKMFRpUVhNdDUwYWl1dnNWVFRlV2JqWkhvV05VU1NCRlJaVCtUWmc0YXd2Rk9QSEVmcG5Bai9salZBbmVVU0pib0Nta1Z4VDB6NWgxc2xvVkVzS1lybVIzZ2hxYTI4b2txM1FPTW9MbUlrb01wNklzOGtOSTJGUmJsQ0dGcElsT2dpYUJiRjlRKzNpa016V1VBVUtvcmtRdmIxOVZGenVVU1Y3b0xHVVZ6RVNFQ1Y5VVNlVldnc3N6czVNWTRTSlpCY1NPb3ZseWpSZGRBc2lvc1lJYWk0a2dpekRjM252dUswMHZoQ3FrUGpLQzVpSktES2VpTFBQRFNsdTkxY3U0VkRoZkNGVklkbVVWekVDRUhGbFVSWW8zajg5T24xMVpVYmk5ZEVmbXZhRHJHRnBBWExKVXAwTHpTTzRpSkdBcXFzSi9LY2gvR0ZyQUthUlhFUkl3UVZWeEpoenNQNFFsWUVqYU80aUpHQUt1dUpQQ2VGTDJSRjBDeUtpeGdocUxpU0NITlN5Q3prMHRVRjJySHNIcDJjUkpWdWg4WlJYTVJJUUpYMVJKNnpnOHhDMG83bEVpVjZBSnBGY1JFakJCVlhFbUhPRHI2UWxVTGpLQzVpSktES2VpTFBhZUVMV1NrMGkrSWlSZ2dxcmlUQ25CYStrRlZENHlndVlpU2d5a3ArL2VBTzhoeGZ5T3FoY1JRWE1STGMrOFVOS3E0azhoeGZ5RnFnY1JRWE1SSlFaU1UvLy9nSjVQVTh2cEExOE1XOUxacElXUkVqd1hmdm5LYmlTaUt2NS9HRnJBY2FSM0VSSXdGVlZuSitSdkV6dGh1RUwyUTlmUFhwSFpwSVdSRWp3ZHMvdkVURmxVUmViK01MV1JzMGp1SWlSZ0txck9Ub3lBRHllaGhmeU5xZ2NSUVhNUko4OHU0eUZWY1NlVDJNTDJTZDBEaUtpeGdKcUxLU0NKT0RoazNRNmFrcFpJamlDMWtuTkk3aUlrWUM3WThNSnlLdk5EUm00aUpHbXZvWDhzcWxpNmpTazlBNGlvc1lDYWl5a2dncndkenNPWm94RFJFbVRmMExHVVNWbm9UR1VWekVTS0Q5a2VGRTVCVmlZR0NBcGt0RGhDa2dzNUFCNmppWEtOR3IwRGlLaTVqU2hDZEZsWlZFWGlIU2M2VW53aFR3aGF3ZkdrZHhFVk9PODJmUGhpZEZsZlZFYWs3U1E2VW53blR3aFRRQmphTzRpQ2xCOHJDb3NwSkl6Y1A2NmtyU3BLckkwOEhFUWdaUnBWZWhjUlFYTVVWSlB5bXFyQ2V5TTVOdVVrK0VxU0cya010TGk5UjZMbEdsVitudlAwampLT3VYbnp5SnBFTFF3NkxpU2lJN0c5U2huc2hUUTJ3aEE5UjZMbEdpaDZGeEZCY3grYUVuRmFUS2VxS0QvZGhhWDZNT2xlenY2ME9rR2xZVzhnbnA3NUhRT0w3L3JSa2FSMW4vL21HUi8rdlJZMHFrNGtxaWlmMmczdlJFbmlaV0ZqS0lLajBNamFPNGlNa0RQYU5FcXF3bittZ1BOYWJuemFWRlJHb2l1WkFCdW9aY29rUVBFLzZrUitNbzY5MjNscENVRFhwQUpCVlhFcTIwSWY1bFREVWlVaG14aGJ6L3puTDRMMTFEWG1PcFhvYkdVVnpFWklPZURrbVY5VVEzZTBFdHFZcElaWVRmSVV0K0dpR3E5REEwaStLKzhkSThrdmFESHMyZVVuRWwwZEF1cUJsVkVhbVA1RUtHZTNmZ3dBRzZrcnlpVmcrVG5rVU5FZE1SZWlqdHBNcDZvcTJIb1daVVJhUSs4Z3Q1ZTJPZExpYVhxTlhEcEFkUnd5d2ZicVdIMGtFcXJpVGFTa0Z0cUlySVNoQmV5TTgvM3ZRM3lmS2taMUZEeExTQkhrZG5xYktlYUs3Ritzb3l0YUVxVWl0QitNK1E0Y2FGaFN6L0Y3VW8xNnVrQjFIRHUyKzIvWERyekpuVDlDejJsWW9yaWY1YVVBT3FqbzJPSXJVUzVCY3k2RytTNVVrR1VVbkU3SUllUkJhcHNwNW9zWHQvdnhyUVdzaVI0V0c2c0x5aVlxK1NUS0dTYjd5NHg0ZGI2UkZrbDRvcmlTNWJVQU5LYmxiK0NXVENDeG1JOTY3OG0yUVFGWHVWWkJDVlJFd0t1di9acGNwNm90R3FGaEpoRmFLMWtJTURmYjZUSlVtbVVNbG5OazRpcVFYZCtieFNjU1hSYXd0cVFFTWtWWWo4UWdiaXZRc0xPVDg3UzFlWTEwZW5Ia0hSM3VQMjhuUXlpRW9pS1dTVis4dXFJRlhXRXgzckx5Umlxa1Z4SVlNOTlTYjU2dmZPSnhjZXZiUHlHRjRyQ2hVVTkvTHNSQXlpZTE1TUtxNWtiRGhDRGNpS2pHcFJXY2hBdkhjM0x4L3ZrWjFNeG1WUGNWQitxSTZHU0pJWWJxcXNKenJXWEVnRVZJN3VRZ2JEUW9yczVKSERoMUhhSGpNbkR5ZlgyMEVjblJNcUl1N2trYUVZUkRlOG1GUmN5ZGh3NE5ESUNEVWdKUUlxUjJzaEE4bnRrOXJKSUVvYkk3blNMT0tjek5EcEdpTEozeVIzUk9rNnFHSWhnMkVoVDU1NGpDNjdtS2h1aHZSbFpoY25aNFBPRmJlLy8yQU1vbHRkVENxdVpHdzRjT1hpUldxZ3ZDaGRCNG9MR1VqZlFhazN5ZUR3RUg2WFZUdnBDOHdyU21TQVR0UVFTZjRtdWJseFllNDg2dGFCN2tJR2t0djN6M3RiZ2pzWlJFRGxKSi9jbUZ4YVlXT2RMTkNKNGlKR1lyZzNiNjFTY1NYUnNmUkNvbWhOVkxlUXdmalpBckpmMEJZeFZaRWtwcStyakxIYXZ0QlpHaUtwT1crU1g5emJRc2VpTzRtS05hRytrSUgwVFJ3YS9HWW4rL3Y3NlM2VUZFbHFqSTZPcG9QU1YxVGVXTE16QytjbjZTeHhrU1F4M092TDE2bTRrdWhZYmlGUnJqNnFXTWhBK2laZXYzUXMvaUxkaS9JT0RRN0d5bEtNaldFUG8vRVgwOWNpWmF6Y0dUcEZReVExNTAwUzdiYWdCb3FKV3ZWUjBVSUcwdmZ4eXovaEMyblQ3WkJ5b2NUM25MdzRQMGZWZ3JjMzF1T3I2YXVRTmRidkFCMnZJWklrbnN2dHRhdFVYRWwwTE5FekN0VktkUXM1TXR5dmR5dXpPRDg3T3owMU5URStmdnpZMFNzWEw5Q3JIVVNYK2l1Qm1QYlE4Um9pU2VLaFVHVWxSMGNHMEhIcG5sR2xWcXBieUFEZHlpQmVxR29uODNwajhWcHM3OEY3SzlTNWtqR3VIWFN3aGtpU2VDSkh4Z2FwdUpMb3VGelBLRkUzbFM1a2dHNWxGSzhaVzB2MFZNa2FKTjc3NVUya3RvR08xeEJKNVI1SC9ONFFWRm5KMkcyRTJzZ3V6cSticWhjeVFIY3ppdGRhMEoycVh2UlI3U3BHMXhlbmtOMEdPbDVESkVtODRjelBqRk54SldOY2dOcklLRTQyUUEwTEdhQzdtWWlYVzlBdHE4REhwaDlGOXZiMjArc25xTGNLelBJRkdzUEcwbGthSWt6aURZY3FLNG13RnRSSkZuR21BZXBaeUFEZDBMUTRva1ZmWHgvZE8zR25weDU2VTdyNzFoTDFVNW5vWUQvb0xBMlJKUEdHODh6R1NTcXVKUEx5OXp4L2ZoWm5HcUMyaFF6UURTVnhVQXE2ajJWY1hMaUNvaW1vZ1NyOVQ1NXZxRXJuS29rd2lUY2NxcXdrd2xwUVA1M0ZPVGFvY3lFRHJ6elAvOHFlZk9mVlBUWW5jR2wrbm01ckJ5OWY2UFFOTFNpeGVqOTYrenBheVF4VjBCQkorUmNTcDZWNDQ2VjVLcTRrOG53aFMwSzN0WjA0dWpSamh3YW9jbzJPSHk3eTJVVlVSRW1FU2N3M1ZWWVNZZHZibzRjT1VWZnR4QWxtTUxHUUFicXpXUndlNnNmSjdUazFQZnFYMzYzUmlYWkVsNFdnVWhvaUtjOUNUb3lQNDV5SCtmM1BGcW00a3NqTDNET09Ob09WaFF6UW5lMTZjZGxGb1dwS0lreGl2cW15a2dqYjNsNjRmSWw2MnkwT3RZU2hoWXpRL2UxV2NiWGxvSm9hSWluYlFxNnRmUE5OZXp0QXhaVkVXSWFlY1p3bHpDMWtnTzV2bDNuNzVqU3VzelJVV1VtRVNjdzNWVllTWWZzMWpJT01ZWEVoSTNTWHUwTmNteHhVWDBNa0NiM2hVSEVsRWRheFp4eGhETHNMR2ZqcTB6dDBvNXZyRXpmKy8ybEFzbENRaGtnU21tOHFyaUdTMmpjOE1YNEVSeGpEOUVKRzZGNDNVVnlKRHBTbElaS2FzNUJCaExYcEdhL1pvd0VMR2FIYjNSVFJ2VElVcWlHU2hPYWJpbXVJcEwwYTNscGZ3MnYyYU14Q1J1aW1XeFlkVndXbGk0c1l1VGNjcXE4aGtuYjFqRjgxU2NNV01rTDMzWnJvc25Lb0RYRVJJemZmVkY5Y3hQaENWc1B4eVdGNkFQWDY5WU03Nkt3bUpnN3IvZ3Q5eElqT04wV0lpNWhVei9pNVZScThrR25vTVZRc21yQUI5U1lyTXFUbm0xSUVSWUF2WkYzUTg5RHovanY3ZkZaS2pWQ3JnaUpnZS92ODJiT3k4MDFCZ2lLZ3RaUDRrV0c2YlNIVDBJTXA3Ny92NS9oWGkvV2k5eFVQRU5DYTc3NitQdnhFQ01vU0VhVjlJUTN5MmQwY1g1dndOeisraXRNYXk5VFJFYnFvOHFMMDlqWjlwUVZCQmdmNktMU2txTnNFZW1zaGU1d1huMzZjSm5WZlgzOWhydGkvMkhTSzRRdnBPSWJ3aFhRY1EvaENPbzRoZkNFZHh4QytrSTVqQ0Y5SXh6R0VMNlRqR01JWDBuRU00UXZwT0lid2hYUWNRL2hDT280aGZDRWR4eEMra0k1akNGOUl4ekdFTDZUakdNSVgwbkVNNFF2cE9JYndoWFFjUS9oQ09vNGhmQ0VkeHhDK2tJNWpDRjlJeHpHRUw2VGpHTUlYMG5FTTRRdnBPSWJ3aFhRY1EvaENPbzRoZkNFZHh4QytrSTVqQ0Y5SXh6R0VMNlRqbUdGNyszK3FZTUpacGd4NXRnQUFBQUJKUlU1RXJrSmdnZz09IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiY3JlZEJsb2IiLCJobWFjLXNlY3JldCIsImxhcmdlQmxvYktleSIsIm1pblBpbkxlbmd0aCJdLCJhYWd1aWQiOiJmYzVjYTIzNzY5YTA0ZjNjYWZlNDFlYmM2NmRlZjZkZiIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImxhcmdlQmxvYnMiOnRydWUsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6dHJ1ZSwiYWx3YXlzVXYiOmZhbHNlfSwibWF4TXNnU2l6ZSI6MTIwMCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0IjoyMCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoxMjgsInRyYW5zcG9ydHMiOlsidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN31dLCJtYXhTZXJpYWxpemVkTGFyZ2VCbG9iQXJyYXkiOjIwNDgsImZvcmNlUElOQ2hhbmdlIjpmYWxzZSwibWluUElOTGVuZ3RoIjo0LCJmaXJtd2FyZVZlcnNpb24iOjI1NzAsIm1heENyZWRCbG9iTGVuZ3RoIjozMiwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjEsInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjo1MH19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTEyLTA4IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjI1NzAsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiQ2xpZmUgS2V5IDIgIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNTEyMDgwMDIiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblByb2ZpbGVzIjpbImNvbnN1bWVyIl0sImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMTItMDgiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MjU3MH1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0xMi0xOSJ9LHsiYWFndWlkIjoiZWMzMWI0Y2MtMmFjYy00YjhlLTljMDEtYmFkZTAwY2NiZTI2IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiJlYzMxYjRjYy0yYWNjLTRiOGUtOWMwMS1iYWRlMDBjY2JlMjYiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiS2V5WGVudGljIEZJRE8yIFNlY3AyNTZSMSBGSURPMiBDVEFQMiBBdXRoZW50aWNhdG9yIn0sImRlc2NyaXB0aW9uIjoiS2V5WGVudGljIEZJRE8yIFNlY3AyNTZSMSBGSURPMiBDVEFQMiBBdXRoZW50aWNhdG9yIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MTAsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6MCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjAsImJsb2NrU2xvd2Rvd24iOjB9fV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwiaXNGcmVzaFVzZXJWZXJpZmljYXRpb25SZXF1aXJlZCI6dHJ1ZSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlCYURDQ0FRK2dBd0lCQWdJVUpVcjVUQkwrUi9yRmZ6VGZHcTh0RGRhd0F3a3dDZ1lJS29aSXpqMEVBd0l3SVRFZk1CMEdBMVVFQXd3V1MyVjVXR1Z1ZEdsaklFWkpSRThnVW05dmRDQkRRVEFnRncweU1EQTNNamd3T1RRME5USmFHQTh5TURjd01EY3hOakE1TkRRMU1sb3dJVEVmTUIwR0ExVUVBd3dXUzJWNVdHVnVkR2xqSUVaSlJFOGdVbTl2ZENCRFFUQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJNS0kya0cram1BN0hhV29wUGRudmhCd1JjYnFnK21KUlNhT2hTcWRCZkkwMHNjSXgzOXllaHM0TkNJRWR6bE9nQ0V0d0hHaFRGeklGQVhhaGdTaFVwZWpJekFoTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0N3WURWUjBQQkFRREFnSUVNQW9HQ0NxR1NNNDlCQU1DQTBjQU1FUUNJSE05VzlvbkNIQ0l5aWx3QlZrVitSVTFEc1RKTmliZnhhNlYvSEpGUGVRVUFpQjY5cU8vdzlieGVicStaZDZCdGtTWGpUM0hLZk5lWFlQN1A5Yi93TXpwalE9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFNZ0FBQURJQ0FZQUFBQ3RXSzZlQUFBSlZFbEVRVlI0MnUyZFRXOFdWUlNBKzQvOFMvd1FkbllscktRcjZhcUpDNDBzTU1GRURRc1dKRFlhVWpRZzBWQ0pSQXNTQlFvcVJkcXhaK0tRNmZqT3pMMHo5OXg3enJ6UGsweWtXTnAzMm5uZWMrNDU5Mk5qQXdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBS0k1ZnZIVFlmdmlKd0lyT2JwMXUzcjU0Y2ZWNGRibDZ1bjV6YmZYaSsyZDZxOXJYMVN2Nzk2cnZJdHc4dWhHZFh4L3B6cisvdjNxK050M1YxOEpKTG43K3kvVnRmMjlhdnU3RzlYRmJ6NnJ6dC84cE5yYSs3TCsrUHJQZDZxRGwwL1BMZTM1a2Z0cTM2OWNtMTlkOVgvUGYxKy9VVDNidkhCR2lyN3IrY1ZMYmtTcGpoNi9jL0xyNTlYeER4LzB5NUJZa0Z1UEg1eDVRSVl1K1R6NWZPOWlYUG54NjZEN2xVdGsyWC8ybTQ5N2ZuTndjRTRlK0JBeHVwZEVHcXYzVlVzeEZDR1VCSkVJRWZxZ2RCOGFqMktJM0JJaHB0eXpSQlR6NlZSbzFPaTdKQlV6bFQ0OStHaTZGRE1Fa2RSaDZvUFNUa1U4cFNDU1BzNjVYN2trOHBpTkhIUGxzQ0pKUGJDV01VVUtNU1lLTWpWeWVKVWtKcVVhdTBRMGN6ZllIWVRQdldRTVUwU08xR0pNRUNUbHcrSkJrdFQzSzVlcE1ZbWtWaW5sYUs2c1l3eXBSR21JRVNtSS9HSlRQeXlXSmRHUXc5d1liT3FnM0VJVWthcFVkRVZLVVJDdEI2YTVMRlc0dE8vVnhCdUNqRDAwNUdqS3Y2cFI0NCs5NnZqT2UvcHlSQWd5ZDJEdVJSSnRPY3lNUlY3ZDNLMjBCTkZNcytxeWJRNHhJZ1RSU3Erc1NaSkREak5wbHFSQm1vTDhzNS8rRjVtc2RPdFlrRktTNUpLamFab2lTR3lWS3NkNFk2SWcwdWpLS1VodVNlUWRQZmY5SVlnSE9ZeEdrSnlTcE9ycnhGenlQUkhFZ3h6R0JkR1dwSVFjakVGaXhod1ByNWFWNC9RS2ZhMmxCTkdTcEpRY1p1Wm1XUmRFdlFFWWNFbFJ3T0lnVm5zdVUwazV6UFJCTEF0U3o2a3FMRWZzTkJOWjgxSHlvVW9sU1drNVRJdy96QXVTcXdrNEZEMGV4ZWZCSmFvOUtTVXBMWWVwdVZoV0JTblM2K2pLY1RyMm1mcHp6ZEZSMTVERWdoeW1wcnhiRk1SQ2FpWFRXT2I4WEV0V3RLWStiQ1g2T0daVEs5T0NGRTZ0NXNyUmtHTFJWRzVKU2hZWnpNbGhVWkRTVmF0VWNpREpBdVN3S0VqSjZCRWpSOHgyUUVqaVZBNXJncFNNSGlGeTlDM2xyUXNLSTdKWWtTVG1ZY3doaVdrNXJBbFNLbnFFeUJIU3pSOHJDU09Ka3cwYUxBcHk4bVRYZEZxVnFqVHNVWklVdTVXNGxNT1NJTFAyck1veDVrallQL0VvaWN6eldqczVyQWhTcnl2UEtjZHBLaWZmVTdONGdDUUxrTU9LSUZtWHp3YkswYTFTMVJKSFJybVFUcnlGem5VdVNkekpZVVdRYk9sVnFCenR0U2VkZnhPN0xnVkpITXRoUmhDcmNpU1NSRDUvblNWeEs0Y0ZRZXF0ZXl6TDBmTTFwS1RiWEVIQ0JEUVZMVWdpR3lXRXJzTUlrY1MxSENZRTBWNHRHQ2hIVUpQeU5CVWNMRFFNaVJMWWRiY2dTY3d1amtQRkJ2Tzd0WHNRUkhXdGVVUzFhbFNRRlY5TGVqZmR2K3RMMFdKK0p4NGxhVGNVNWZYTHdyR05KVkJjRUNPbDNNRkdaVGU5NnE1VkVTbGFFZUxNLysrT1h3TG5jSG1UWkxFc1VwQ0FRWEZ3dXRkNndPczBhcUFmMG00ODFsOXJhSER2Wk9DKzlwS1VGRVJsWVZSQTVPZys2UDk3c0ZjOHhHTnlqSFhuUTZwalNJSWc2b0tFckNGZjFYZHAvN3Rha2dseXJKSmtkUEErRWttc3JFeGNXMGxLQ3FJeHZYM09ZSHhWVXk5V2ptN1ZLbVFTNXRpY01BdFJwSkVFUVR3TGNuOW5QSHFNVk0zYWtreVdvN1dYVmxDVUhIbmRGdGFLTDZhdnNjNkN5Snl1RkYzNzNtclZSRmxEeGsxYTg1OFdmZklUZ3BRVlpNNTVoMDBrQ3AycDdDV0NJTWlhcDFoSkJPbEVoTkhwTkNPdlcyUEJFaWtXZy9UcDM3TVpZRStaSjlaVHVoMzZXaktRSDNyTk1qK0tRVHBsM254bDNxR0JkNmZzR2pWWGJFVmpzRDNvWHluSndQd3V5cndJb3JLRFlteWpzSzh4R0NWSnQrUGVTdVY2SlFsb0ZGcUlIalFLbHpiVlpFbzNmY1ZEUFBydTM0b0NvOU5SSmt4L29ZdU9JQnVXMXAydkVtRlVrb2lPZTh3NUk4aUJJTE5McWFrbDZVdjV1aDMydDR1bHVsTkt4cHFLQVZVMkszTEVidWdtMWExbVhRalQzVk11bU5MZXNDSFJtcEN4ZC8rUWRmVWhFY1NiSEVNTHBoWlJFbWJKYlZ3SldLSkpIVDJlN05iL1BUUDJHSkprZ2V2U1E3WXVZc250T216YUVGbmFqWlZESHJRbHlzR21EYWtFeVhYRXM0d1JBbGJ6SlpVa1FBNXZHOGhOZWMxcysrTmw0N2pRbmR4blNxTDFvSG1VZzQzanZHMDlxaWdKY3JEMXFNN20xYm5Tck5oakQyS252QWVrY09zcUI1dFh6em4rSUVjMVMvRnNrRkJCUEo0MkpldFJVcjltOHdmbldCT2tqaUxlRDlCeHNxTjdyQnhyZTdxVU5VR3NIOEZXUjdtZU11NVNJd2RIc0hHSXAvb2huakpsSFRrNHhITVp4MENQTEY2S3hjcDZjcXR5Y0F4MHBDQ2g4NXBVSlhtWVp1VWNjaXhBRXBPQ0tDMmt5aW1KekdiMUpvZUYxMnhPRW91Q1RPby9HSlBFMjVqRDBvUkpVMzBTcTRKWVNMVkN0eExxSWx2amxIN0laQ2VVcVQ5M0M1S1lXVTlpV2hBRHFWYk00VGROT2JmMHd5WGppTG5QUldsSlpDMCtnb1NrV2dGNzI2cGZnU3NCaGZaQk1sN2xzQ0tKaWVXKzFnV0pudXFoZElXKzFwSzdrS1NVdzRJa0pvNXc4eUNJQ1VrQzA2d2x5VkU2S3ByWTV0U0xJUFdZcE1DTTN4aEJTbTN5cGlsSFNVa1F4RlA1MTZnZ09lUW9KUW1DZUVxM0RBcVNVNDRTa3BnUTVOWE5YVlZCdEY1MzlqbGJoc1lnMG9Rc0lVZHVTVXdJOHViZzRKeVdISWRibDFWdnNPNlQ1SnI5R3lpSWRoWEx5bTZIT1NReFVjVVNubCs4cENLSXBHODVYci9xN295UmdtaWU1V0Z0SzFCdFNjemM2OUd0MjhubGVMWjVJYXY5ZFVOUk01cEVkTlBYYVo5Y0xVbk1uV1FsNlpESDZKRnRBQjhoU09vb1luMFRhWTBqNHN6ZHI0eEY1RjAvaFJ3dnRuZUsybDl2STVRNjdZb1FKR1VIMnNzTzZ5blhrWmdaZTJoSW9qMHdMeFpSSWdWSklZbTM0d2RTU0dKK1N5Q1JaR3E2OWVlVlQ4M2VYRDFHbWRPSm55Q0lNSFhxdTV0dGNUcklOUFdwYTJITVJvNitCbUpvTkpHVVNxTWhxQ3BMYkFvMlVaRG1uVFcwL0N1ZlY3TEhVV0x3N25wejY5ZDM3OVdSUVNSb3lzRVNZZVJqa1VnaWp1ZGZwRHo0OVhFR2tvb05TVE5Ea0FaSmwyUUFMMUdsU2I5RUNQbFkvbjR4aDg1MDNoeEVBTG5ISnJMSW4rWHZYRVVNV0RIUS8yOXJueFJ5QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdHLytCUUI5ZDhINTlDWklBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiXSwiZXh0ZW5zaW9ucyI6WyJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiJlYzMxYjRjYzJhY2M0YjhlOWMwMWJhZGUwMGNjYmUyNiIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOnRydWUsInVwIjp0cnVlLCJ1diI6dHJ1ZX0sIm1heE1zZ1NpemUiOjEyMDAsInBpblV2QXV0aFByb3RvY29scyI6WzFdLCJ0cmFuc3BvcnRzIjpbInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIxLTA4LTA1IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiS2V5WGVudGljIEZJRE8yIFNlY3AyNTZSMSBGSURPMiBDVEFQMiBBdXRoZW50aWNhdG9yIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyMTA4MDUwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMiIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4zIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIxLTA4LTA1IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjMtMTItMDgifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyJjNTdkMDY0MTY1MzIyNWIxNzNiYzZiNGQ5NTg3OWY4NzkxNTIyMmY5IiwiOTIzODgxZmUyZjIxNGVlNDY1NDg0MzcxYWViNzJlOTdmNWE1OGUwYSIsIjRiNTQ2MTQyMzZjNGM0ZTkzYmViMmQzZGMxYjc1YjYyOTc4ZWU0ODgiLCJjZTY4ZDFiNzVmYjRjZDNkYTA3N2ZkM2Y4MzNjNGQ2ZTIwYmYyODdjIl0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbImM1N2QwNjQxNjUzMjI1YjE3M2JjNmI0ZDk1ODc5Zjg3OTE1MjIyZjkiLCI5MjM4ODFmZTJmMjE0ZWU0NjU0ODQzNzFhZWI3MmU5N2Y1YTU4ZTBhIiwiNGI1NDYxNDIzNmM0YzRlOTNiZWIyZDNkYzFiNzViNjI5NzhlZTQ4OCIsImNlNjhkMWI3NWZiNGNkM2RhMDc3ZmQzZjgzM2M0ZDZlMjBiZjI4N2MiXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkZlaXRpYW4gQmlvUGFzcyBGSURPIFNlY3VyaXR5IEtleSJ9LCJkZXNjcmlwdGlvbiI6IkZlaXRpYW4gQmlvUGFzcyBGSURPIFNlY3VyaXR5IEtleSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50IiwicmVtb3RlX2hhbmRsZSJdLCJpc0tleVJlc3RyaWN0ZWQiOnRydWUsImlzRnJlc2hVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZWQiOnRydWUsIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUJmakNDQVNXZ0F3SUJBZ0lCQVRBS0JnZ3Foa2pPUFFRREFqQVhNUlV3RXdZRFZRUUREQXhHVkNCR1NVUlBJREF5TURBd0lCY05NVFl3TlRBeE1EQXdNREF3V2hnUE1qQTFNREExTURFd01EQXdNREJhTUJjeEZUQVRCZ05WQkFNTURFWlVJRVpKUkU4Z01ESXdNREJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCTkJtclJxVk94enRUSlZOMTl2dGRxY0w3dEtRZW9sMm5uTTIveVlndmtzWm5yNTBTS2JWZ0lFa3pIUVZPdTgwTFZFRTNsVmhlTzFIamdneEFsVDZvNFdqWURCZU1CMEdBMVVkRGdRV0JCUkpGV1F0MWJ2RzNqTTZYZ21WL0ljak50Ty9DekFmQmdOVkhTTUVHREFXZ0JSSkZXUXQxYnZHM2pNNlhnbVYvSWNqTnRPL0N6QU1CZ05WSFJNRUJUQURBUUgvTUE0R0ExVWREd0VCL3dRRUF3SUJCakFLQmdncWhrak9QUVFEQWdOSEFEQkVBaUF3ZlBxZ0lXSVVCK1FCQmFWR3NkSHkwczVSTXhsa3pwU1gvelN5VFptVXBRSWdCMndKNm5aUk04b1gvbkE0M1JoNlNKb3ZNMlh3Q0NILy8rTGlyQkFiQjBNPSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFGQUFBQUFVQ0FNQUFBQXRCa3JsQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUJIWnBWRmgwV0UxTU9tTnZiUzVoWkc5aVpTNTRiWEFBQUFBQUFEdy9lSEJoWTJ0bGRDQmlaV2RwYmowaTc3dS9JaUJwWkQwaVZ6Vk5NRTF3UTJWb2FVaDZjbVZUZWs1VVkzcHJZemxrSWo4K0lEeDRPbmh0Y0cxbGRHRWdlRzFzYm5NNmVEMGlZV1J2WW1VNmJuTTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlrRmtiMkpsSUZoTlVDQkRiM0psSURVdU5pMWpNREUwSURjNUxqRTFOamM1Tnl3Z01qQXhOQzh3T0M4eU1DMHdPVG8xTXpvd01pQWdJQ0FnSUNBZ0lqNGdQSEprWmpwU1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJajRnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJZ2VHMXNibk02ZUcxd1BTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGh0Ykc1ek9uQm9iM1J2YzJodmNEMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzl3YUc5MGIzTm9iM0F2TVM0d0x5SWdlRzFzYm5NNmVHMXdUVTA5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5dGJTOGlJSGh0Ykc1ek9uTjBVbVZtUFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdmMxUjVjR1V2VW1WemIzVnlZMlZTWldZaklpQjRiWEE2UTNKbFlYUnZjbFJ2YjJ3OUlrRmtiMkpsSUZCb2IzUnZjMmh2Y0NCRFF5QXlNREUwSUNoTllXTnBiblJ2YzJncElpQjRiWEE2UTNKbFlYUmxSR0YwWlQwaU1qQXhOaTB4TWkwek1GUXhORG96TXpvd09Dc3dPRG93TUNJZ2VHMXdPazF2WkdsbWVVUmhkR1U5SWpJd01UWXRNVEl0TXpCVU1EYzZNekU2TlRrck1EZzZNREFpSUhodGNEcE5aWFJoWkdGMFlVUmhkR1U5SWpJd01UWXRNVEl0TXpCVU1EYzZNekU2TlRrck1EZzZNREFpSUdSak9tWnZjbTFoZEQwaWFXMWhaMlV2Y0c1bklpQndhRzkwYjNOb2IzQTZTR2x6ZEc5eWVUMGlNakF4TmkweE1pMHpNRlF4TlRvek1Eb3lOeXN3T0Rvd01DWWplRGs3NXBhSDVMdTJJT2FjcXVhZ2grbWltQzB4SU9XM3N1YUprK1c4Z0NZamVFRTdJaUI0YlhCTlRUcEpibk4wWVc1alpVbEVQU0o0YlhBdWFXbGtPakpGTnpGQ1JrWkRRelkzUmpFeFJUWTVOemhFUVRsRFFrSTJORFl6Umprd0lpQjRiWEJOVFRwRWIyTjFiV1Z1ZEVsRVBTSjRiWEF1Wkdsa09qSkZOekZDUmtaRVF6WTNSakV4UlRZNU56aEVRVGxEUWtJMk5EWXpSamt3SWo0Z1BIaHRjRTFOT2tSbGNtbDJaV1JHY205dElITjBVbVZtT21sdWMzUmhibU5sU1VROUluaHRjQzVwYVdRNk1rVTNNVUpHUmtGRE5qZEdNVEZGTmprM09FUkJPVU5DUWpZME5qTkdPVEFpSUhOMFVtVm1PbVJ2WTNWdFpXNTBTVVE5SW5odGNDNWthV1E2TWtVM01VSkdSa0pETmpkR01URkZOamszT0VSQk9VTkNRalkwTmpOR09UQWlMejRnUEM5eVpHWTZSR1Z6WTNKcGNIUnBiMjQrSUR3dmNtUm1PbEpFUmo0Z1BDOTRPbmh0Y0cxbGRHRStJRHcvZUhCaFkydGxkQ0JsYm1ROUluSWlQejQ3N0pYRkFBQUFZRkJNVkVYLy8vOEVWcUlYWmF2RzJPb3FjTEcyek9Pa3d0MEJTSnRxbGNYVjR1K2F1dGxXaGJ6azdQVUFNWTlIY3JLanROYnE4ZmVBbDhhQm9zeno5dnBkanNHR3F0RjNuOHVUc05TWnBjNkpzTlQ1K3YweFlLbnU4UGZmNS9MNDhmZy9mcmljekpnWUFBQURBRWxFUVZSNDJrUlVDWmJESUFqRlhaT1kxVGF0TmMzOWJ6a3NTWWMzcjRNRTRmTUJBYUQ2emw4eS85VE9nZXQ4ZDVqZk43OGJ3TS9kRENScFI1MjF6WGZvakhKMDVJSXloQkFVU1ZBT05kR3pCWXQyZjdLRnJma0phQWtIaDlGWmhjRFhIUmtUS285TUxpaEdhYXZJbW5WM3F5RVgwRXByZ3ovNER3VUQ3a0NIUm5kOFFGTjQzR280VVZtRERnemE0dzI3b2l6ZEEyK2NLK3V1VXBqam8yK3h3Yy80Mlc1MHg1TEdZZURCc1IwSFZJeDV4OGlGNjBDYmxiVEVFa0ZyMjdiTkRCVVZTcTFPS1ZQYkU2MmIzRUg4RnFCZzVPT09FdWMydDhaSmlxTU91R3ArY0tqZzd3VkdjZW96cU40cHhnVlBRa2pGWWdiVkpLRFVoRENqWXJhd1A1cTRFVGdDOWZJTVJIdGl0cFFjQ3ZKT0VMY2JNc1FnbmNpUmtsanB5UWp2RzQ0anFCVUVURmlCaTFQRUl5ZWtPenNXK1R5NWNMSG9zNVIrZE1TMUx0U1N4ZjNnUUhjelIyQ0k0Z01OcFc0SVJBMVFNYTZ0SjQrQzZ1SHVHRThtTkRJeUZxZy9PUC9NTVV1ZVM2SXE4UzkwZEFlQkpTRXkvcUtrSytCTnd6OGNZWTRqYjVKNnU0aVdDSTJCMVo1NkxXNWtFYzRoa2RNcHN2VUM1NTg1U1gwUXViY2dOcXlmZ0RGRWNUdCs0MC8wUzVOeDB3YUN3M09La2NPYkE1SW4wQVlwMDFwamp3Mm42MjZVRGp0SHdhMjhpSHVUS3F0cnYrcmVXNDFOWjZpR2xyN3V1TEpDZmtGdGN0Y0cwNHNnbTFlTlMrWmFEbnBhVEVyR295WDVKSzJpTXo4eHMwbk93V0djUERONDlxYUNkNGJ6Sm96RFptL2FCSytFb3pMdytYaE5CaVl3SGYwc2lPdTFYUGtHL3pLd3ZxWUtjZlN3REVjSC9vVWUwN2VzL1dROHJJeWcyRE9Yajh0amtaZHVEQi9iOGh6RGxsTU1PQ1M1QkVuZDUzNGY4dGkzVVpjNGtNczN4THlhZk1Tc0poZEc4WFBxak5rNXRBZ08yNWZlS0NoblZkRGovSjBGTWtPc1UveE1CdjB3RmhZZUVHZlZIMTNmdURVMHlERkxhNGZjN1JuV0hCZnVURlYydEVtTndhZGM3YWMzVVkyamZCbDdIVDM2ZmUzNGlRTzVtTkNGRkJXMDdLalBncWhPTFUwMXZaOFB1ZVoySkNsRlpOOGprVXM2OXVrYTllUHA2K0VmTDRBRjUrTnl3U2Jpckh0Y0I4TWwvZ2t3QUVqa0s2NEtqSFBlQUFBQUFFbEZUa1N1UW1DQyJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDE4LTExLTAxIiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJGZWl0aWFuIEJpb1Bhc3MgRklETyBVMkYgU2VjdXJpdHkgS2V5IiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVMkYxMDAwMjAxODAyMjgwMDUiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMC4xIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjAuMSJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAxOC0xMS0wMSJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMTgtMTEtMDEifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyJkZmFiYjFmNjY2NTMwM2Q4ZDE5Y2ZkMGZlMWIzNGM0YWUwNTg2NTU4Il0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbImRmYWJiMWY2NjY1MzAzZDhkMTljZmQwZmUxYjM0YzRhZTA1ODY1NTgiXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkZlaXRpYW4gQmlvUGFzcyBGSURPMiBQbHVzIChFbnRlcnByaXNlIFByb2ZpbGUpIn0sImRlc2NyaXB0aW9uIjoiRmVpdGlhbiBCaW9QYXNzIEZJRE8yIFBsdXMgKEVudGVycHJpc2UgUHJvZmlsZSkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoyfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiLCJyZW1vdGVfaGFuZGxlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUIyRENDQVg2Z0F3SUJBZ0lRQlRtazNad2lsRlhqc1p5d0hEbk1nREFLQmdncWhrak9QUVFEQWpCTE1Rc3dDUVlEVlFRR0V3SkRUakVkTUJzR0ExVUVDZ3dVUm1WcGRHbGhiaUJVWldOb2JtOXNiMmRwWlhNeEhUQWJCZ05WQkFNTUZFWmxhWFJwWVc0Z1JrbEVUeUJTYjI5MElFTkJNQ0FYRFRJeU1EWXdPREF3TURBd01Gb1lEekl3TlRJd05qQTNNak0xT1RVNVdqQkxNUXN3Q1FZRFZRUUdFd0pEVGpFZE1Cc0dBMVVFQ2d3VVJtVnBkR2xoYmlCVVpXTm9ibTlzYjJkcFpYTXhIVEFiQmdOVkJBTU1GRVpsYVhScFlXNGdSa2xFVHlCU2IyOTBJRU5CTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFbmZBS2Jqdk1YMUV5MWI2aytXUVFkTlZNdDlKZ0dXeUozUHZNNEJTSzVYcVRmbysrMG9Bai80dG53eUlMMEhGQlI5U3Qra3RqcVNYRGZqaVhBdXJzODZOQ01FQXdIUVlEVlIwT0JCWUVGTkdobUUyQmY4TzVhL1lIWjcxUUV2NlFSZkZVTUE4R0ExVWRFd0VCL3dRRk1BTUJBZjh3RGdZRFZSMFBBUUgvQkFRREFnRUdNQW9HQ0NxR1NNNDlCQU1DQTBnQU1FVUNJQnlSejRPQWxSWjlIejlLVjdnMlFOdEMwQzhKeEgveExKWThGWkVtdEozc0FpRUFzcmVUMCtlTmtOY1VqSTloNU9QQ29INk5tc09rZ3ZFQUJKWnJGMDdBRGtZPSIsIk1JSUIyRENDQVgrZ0F3SUJBZ0lSQU1zOFlYVkJvQk51WFVqcWZDb1g3eTR3Q2dZSUtvWkl6ajBFQXdJd1N6RUxNQWtHQTFVRUJoTUNWVk14SFRBYkJnTlZCQW9NRkVabGFYUnBZVzRnVkdWamFHNXZiRzluYVdWek1SMHdHd1lEVlFRRERCUkdaV2wwYVdGdUlFWkpSRThnUlVFZ1VtOXZkREFnRncweU16QXhNREV3TURBd01EQmFHQTh5TURVeU1USXpNVEl6TlRrMU9Wb3dTekVMTUFrR0ExVUVCaE1DVlZNeEhUQWJCZ05WQkFvTUZFWmxhWFJwWVc0Z1ZHVmphRzV2Ykc5bmFXVnpNUjB3R3dZRFZRUUREQlJHWldsMGFXRnVJRVpKUkU4Z1JVRWdVbTl2ZERCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQkQyTEhIQVFxWWJkUjFXWmx1ZXJ0TTMwcldob3JZYXZXbU1WYTRuZFg5UFp3dVJFcExRNG0xbkVscVFLTW5SRTgvNEMrUnF3aWF2K21wSTRreGQ1ZTV1alFqQkFNQjBHQTFVZERnUVdCQlMzWlpqeUdsaFo5OU4xdkxvVFBYVlVhNFpFWURBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUE0R0ExVWREd0VCL3dRRUF3SUJCakFLQmdncWhrak9QUVFEQWdOSEFEQkVBaUFvRCtSNmtvbElXYU5KejRoejAzRDNnZXMzR2JNQmpBV3BrT1VnOWF5Rmd3SWdiRXc3QVlTeWs2OE92eGdYZXpnbmRUUlRFdVNXVCtmZFJuTGFCTnNhVHcwPSIsIk1JSUIyVENDQVg2Z0F3SUJBZ0lRRlFOS1crN3piZy83ZCtsVHlySVd3REFLQmdncWhrak9QUVFEQWpCTE1Rc3dDUVlEVlFRR0V3SlZVekVkTUJzR0ExVUVDZ3dVUm1WcGRHbGhiaUJVWldOb2JtOXNiMmRwWlhNeEhUQWJCZ05WQkFNTUZFWmxhWFJwWVc0Z1JrbEVUeUJTYjI5MElFTkJNQ0FYRFRJeU1EWXdPREF3TURBd01Gb1lEekl3TlRJd05qQTNNak0xT1RVNVdqQkxNUXN3Q1FZRFZRUUdFd0pWVXpFZE1Cc0dBMVVFQ2d3VVJtVnBkR2xoYmlCVVpXTm9ibTlzYjJkcFpYTXhIVEFiQmdOVkJBTU1GRVpsYVhScFlXNGdSa2xFVHlCU2IyOTBJRU5CTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFc0ZZRUVoaUp1cXFuTWdRalNpaXZCalY3REdDVGY0WEJCSC9CN3V2WnNLeFhTaEYwTDh1RElTV1V2Y0V4aXhSczZnQjNvbGRTcmpveDZMOFQ5NE5PenFOQ01FQXdIUVlEVlIwT0JCWUVGRXU5aHlZUnJSeUp6d1JZdm5EU0NJeHJGaU8zTUE4R0ExVWRFd0VCL3dRRk1BTUJBZjh3RGdZRFZSMFBBUUgvQkFRREFnRUdNQW9HQ0NxR1NNNDlCQU1DQTBrQU1FWUNJUUNCME5GUVNOMHo0bFd6L3ljMzZld3JUQ3p0dEsvcUZ2bGFQT0toK1QxbzZ3SWhBUDBvS0tBK2NpY3NEeTNZM24rVmxQOGVCM1BCek1raHZXLzlJU1hDdytWQiJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFGQUFBQUFVQ0FNQUFBQXRCa3JsQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUJIWnBWRmgwV0UxTU9tTnZiUzVoWkc5aVpTNTRiWEFBQUFBQUFEdy9lSEJoWTJ0bGRDQmlaV2RwYmowaTc3dS9JaUJwWkQwaVZ6Vk5NRTF3UTJWb2FVaDZjbVZUZWs1VVkzcHJZemxrSWo4K0lEeDRPbmh0Y0cxbGRHRWdlRzFzYm5NNmVEMGlZV1J2WW1VNmJuTTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlrRmtiMkpsSUZoTlVDQkRiM0psSURVdU5pMWpNREUwSURjNUxqRTFOamM1Tnl3Z01qQXhOQzh3T0M4eU1DMHdPVG8xTXpvd01pQWdJQ0FnSUNBZ0lqNGdQSEprWmpwU1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJajRnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJZ2VHMXNibk02ZUcxd1BTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGh0Ykc1ek9uQm9iM1J2YzJodmNEMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzl3YUc5MGIzTm9iM0F2TVM0d0x5SWdlRzFzYm5NNmVHMXdUVTA5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5dGJTOGlJSGh0Ykc1ek9uTjBVbVZtUFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdmMxUjVjR1V2VW1WemIzVnlZMlZTWldZaklpQjRiWEE2UTNKbFlYUnZjbFJ2YjJ3OUlrRmtiMkpsSUZCb2IzUnZjMmh2Y0NCRFF5QXlNREUwSUNoTllXTnBiblJ2YzJncElpQjRiWEE2UTNKbFlYUmxSR0YwWlQwaU1qQXhOaTB4TWkwek1GUXhORG96TXpvd09Dc3dPRG93TUNJZ2VHMXdPazF2WkdsbWVVUmhkR1U5SWpJd01UWXRNVEl0TXpCVU1EYzZNekU2TlRrck1EZzZNREFpSUhodGNEcE5aWFJoWkdGMFlVUmhkR1U5SWpJd01UWXRNVEl0TXpCVU1EYzZNekU2TlRrck1EZzZNREFpSUdSak9tWnZjbTFoZEQwaWFXMWhaMlV2Y0c1bklpQndhRzkwYjNOb2IzQTZTR2x6ZEc5eWVUMGlNakF4TmkweE1pMHpNRlF4TlRvek1Eb3lOeXN3T0Rvd01DWWplRGs3NXBhSDVMdTJJT2FjcXVhZ2grbWltQzB4SU9XM3N1YUprK1c4Z0NZamVFRTdJaUI0YlhCTlRUcEpibk4wWVc1alpVbEVQU0o0YlhBdWFXbGtPakpGTnpGQ1JrWkRRelkzUmpFeFJUWTVOemhFUVRsRFFrSTJORFl6Umprd0lpQjRiWEJOVFRwRWIyTjFiV1Z1ZEVsRVBTSjRiWEF1Wkdsa09qSkZOekZDUmtaRVF6WTNSakV4UlRZNU56aEVRVGxEUWtJMk5EWXpSamt3SWo0Z1BIaHRjRTFOT2tSbGNtbDJaV1JHY205dElITjBVbVZtT21sdWMzUmhibU5sU1VROUluaHRjQzVwYVdRNk1rVTNNVUpHUmtGRE5qZEdNVEZGTmprM09FUkJPVU5DUWpZME5qTkdPVEFpSUhOMFVtVm1PbVJ2WTNWdFpXNTBTVVE5SW5odGNDNWthV1E2TWtVM01VSkdSa0pETmpkR01URkZOamszT0VSQk9VTkNRalkwTmpOR09UQWlMejRnUEM5eVpHWTZSR1Z6WTNKcGNIUnBiMjQrSUR3dmNtUm1PbEpFUmo0Z1BDOTRPbmh0Y0cxbGRHRStJRHcvZUhCaFkydGxkQ0JsYm1ROUluSWlQejQ3N0pYRkFBQUFZRkJNVkVYLy8vOEVWcUlYWmF2RzJPb3FjTEcyek9Pa3d0MEJTSnRxbGNYVjR1K2F1dGxXaGJ6azdQVUFNWTlIY3JLanROYnE4ZmVBbDhhQm9zeno5dnBkanNHR3F0RjNuOHVUc05TWnBjNkpzTlQ1K3YweFlLbnU4UGZmNS9MNDhmZy9mcmljekpnWUFBQURBRWxFUVZSNDJrUlVDWmJESUFqRlhaT1kxVGF0TmMzOWJ6a3NTWWMzcjRNRTRmTUJBYUQ2emw4eS85VE9nZXQ4ZDVqZk43OGJ3TS9kRENScFI1MjF6WGZvakhKMDVJSXloQkFVU1ZBT05kR3pCWXQyZjdLRnJma0phQWtIaDlGWmhjRFhIUmtUS285TUxpaEdhYXZJbW5WM3F5RVgwRXByZ3ovNER3VUQ3a0NIUm5kOFFGTjQzR280VVZtRERnemE0dzI3b2l6ZEEyK2NLK3V1VXBqam8yK3h3Yy80Mlc1MHg1TEdZZURCc1IwSFZJeDV4OGlGNjBDYmxiVEVFa0ZyMjdiTkRCVVZTcTFPS1ZQYkU2MmIzRUg4RnFCZzVPT09FdWMydDhaSmlxTU91R3ArY0tqZzd3VkdjZW96cU40cHhnVlBRa2pGWWdiVkpLRFVoRENqWXJhd1A1cTRFVGdDOWZJTVJIdGl0cFFjQ3ZKT0VMY2JNc1FnbmNpUmtsanB5UWp2RzQ0anFCVUVURmlCaTFQRUl5ZWtPenNXK1R5NWNMSG9zNVIrZE1TMUx0U1N4ZjNnUUhjelIyQ0k0Z01OcFc0SVJBMVFNYTZ0SjQrQzZ1SHVHRThtTkRJeUZxZy9PUC9NTVV1ZVM2SXE4UzkwZEFlQkpTRXkvcUtrSytCTnd6OGNZWTRqYjVKNnU0aVdDSTJCMVo1NkxXNWtFYzRoa2RNcHN2VUM1NTg1U1gwUXViY2dOcXlmZ0RGRWNUdCs0MC8wUzVOeDB3YUN3M09La2NPYkE1SW4wQVlwMDFwamp3Mm42MjZVRGp0SHdhMjhpSHVUS3F0cnYrcmVXNDFOWjZpR2xyN3V1TEpDZmtGdGN0Y0cwNHNnbTFlTlMrWmFEbnBhVEVyR295WDVKSzJpTXo4eHMwbk93V0djUERONDlxYUNkNGJ6Sm96RFptL2FCSytFb3pMdytYaE5CaVl3SGYwc2lPdTFYUGtHL3pLd3ZxWUtjZlN3REVjSC9vVWUwN2VzL1dROHJJeWcyRE9Yajh0amtaZHVEQi9iOGh6RGxsTU1PQ1M1QkVuZDUzNGY4dGkzVVpjNGtNczN4THlhZk1Tc0poZEc4WFBxak5rNXRBZ08yNWZlS0NoblZkRGovSjBGTWtPc1UveE1CdjB3RmhZZUVHZlZIMTNmdURVMHlERkxhNGZjN1JuV0hCZnVURlYydEVtTndhZGM3YWMzVVkyamZCbDdIVDM2ZmUzNGlRTzVtTkNGRkJXMDdLalBncWhPTFUwMXZaOFB1ZVoySkNsRlpOOGprVXM2OXVrYTllUHA2K0VmTDRBRjUrTnl3U2Jpckh0Y0I4TWwvZ2t3QUVqa0s2NEtqSFBlQUFBQUFFbEZUa1N1UW1DQyJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTA5LTI2IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiRmVpdGlhbiBCaW9QYXNzIEZJRE8yIFBsdXMgKEVudGVycHJpc2UgUHJvZmlsZSkiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlUyRjEwMDAyMDI0MDkyNjAwNCIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTA5LTI2IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjF9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjQtMTEtMjAifSx7ImFhZ3VpZCI6IjVkNjI5MjE4LWQzYTUtMTFlZC1hZmExLTAyNDJhYzEyMDAwMiIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiNWQ2MjkyMTgtZDNhNS0xMWVkLWFmYTEtMDI0MmFjMTIwMDAyIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlN3aXNzYml0IGlTaGllbGQgS2V5IFBybyJ9LCJkZXNjcmlwdGlvbiI6IlN3aXNzYml0IGlTaGllbGQgS2V5IFBybyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNpVENDQWc2Z0F3SUJBZ0lVT2ttVTM1SWljWG9WUGpmdndwRzdNTjZ0SFBVd0NnWUlLb1pJemowRUF3TXdRekVMTUFrR0ExVUVCaE1DUkVVeEZEQVNCZ05WQkFvTUMxTjNhWE56WW1sMElFRkhNUjR3SEFZRFZRUUREQlZUZDJsemMySnBkQ0JHU1VSUElGSnZiM1FnUTBFd0lCY05NakV4TURBM01Ea3pNRFF5V2hnUE1qQTFNVEV3TURjd09UTXdOREphTUVNeEN6QUpCZ05WQkFZVEFrUkZNUlF3RWdZRFZRUUtEQXRUZDJsemMySnBkQ0JCUnpFZU1Cd0dBMVVFQXd3VlUzZHBjM05pYVhRZ1JrbEVUeUJTYjI5MElFTkJNSFl3RUFZSEtvWkl6ajBDQVFZRks0RUVBQ0lEWWdBRXRnT0M3SUt4aXBNSjdiVlBUVDgzT2U5MHh6SFBDZWJ4eUN0Zy9XcnNUclJhU25ZaWdtSkNCOC9qcUJONE9RRzJkWjVqY05zTDZTd0hvc1lEUkpjK08xems5aTVHRVpXZjNJcjk5MkE2ZHVNc3A1MWxxNGZBZ2EvVXpUTjkvRWJ6bzRIQU1JRzlNQjBHQTFVZERnUVdCQlRmeHpnOEdHellBaWRLTDYzdWhTaXJhWEpJS0RCK0JnTlZIU01FZHpCMWdCVGZ4emc4R0d6WUFpZEtMNjN1aFNpcmFYSklLS0ZIcEVVd1F6RUxNQWtHQTFVRUJoTUNSRVV4RkRBU0JnTlZCQW9NQzFOM2FYTnpZbWwwSUVGSE1SNHdIQVlEVlFRRERCVlRkMmx6YzJKcGRDQkdTVVJQSUZKdmIzUWdRMEdDRkRwSmxOK1NJbkY2RlQ0Mzc4S1J1ekRlclJ6MU1Bd0dBMVVkRXdRRk1BTUJBZjh3RGdZRFZSMFBBUUgvQkFRREFnRUdNQW9HQ0NxR1NNNDlCQU1EQTJrQU1HWUNNUURzdjRLNk5mSnZmdnpkME95Z3dKL0FCaUx0Z3RKV2hYVGVVbGx0ZHFhNFdzT005dHZ4NjM2djVGSXZaUmtLMVhvQ01RQ2RvUFErYTRmREJFaU51ajBXczMzdVVRaEdycHNlUERHZlZYbjRrRXBiVElCZU9kVkF4Ly9Uck1DL1NWYitic2c9Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQU5FQUFBRE1DQUlBQUFCaUVOSDlBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFBN0RBY2R2cUdRQUFDWnZTVVJCVkhoZTdaMEhkQnpWMVlEWERUZWFzU2syRUV3eFlNQ0FBUU9HbjBEb0VDZEFDS1lrUUNDaEJFaUFFRWdnaElRRUhBaWhkeExBWGJMYUZxMTY3NzJ2ZXU5OXAvZVoxWC9mekVwYTFnV0RaNldWOXQzekhSMGRnM1puMy92bXZ2dG01NzJ4ak9IQU1iV0JuY014MVhFZzUxUlZIWFVUTmMxdDlvS0t0K0x6SDQzTXV6bThkSDFFdzZsUm5TdHRneXNjN21OaWlXT2MxREZPRWpQYm9hQ3ZvY2RYMllkT2krcTRPTEwrMXZEU3h5TnozNDdQaXkyb3FHdnRjQk1FMk9MMTV0dGl2ODRKZ3REVzBaRlU1bm8zcmZ3Ulc4bDFZYVZydHBZZi9YWHRuRzF0bG1pM0pVNnlKSTlaVWpHaEJQUTQ5SHZVNk54dHJjZHNyVDE3ZThYMXUwc2V0eFYva0Y2ZVdsN2IyZFVsaXFMWG5nUEd2cDFqR01iVjFCcVdWZktjTmZmRzhOSXp3aHFPRHUrY3Y2ZlBFamxzaVNFc05zYmk0Q3l4dkk2QUNRMzA3bmF3cVBmQmdZamh3eUlHamc3ck9ITjMzUzFoSlgrMjVVZmxsdFczdEhNYzUzVm8vN0VQNXdpQ0tLMXYvaXk5OUtHb292VTd5bGZzYkpvVDFvY2tpNWVSNXZDTGpiWllTZlRHbUZBRCtoMmNpK1dRQ2VDRG5aMGIxbnZjenNaTGRwUTlHbFAwWldaWlpWTXJSVkZlay9ZVC9zNUJoZ1BoUGtncXZDdWlhTTN1K2tYaFBYT2lSaXhXR2drTzJKbHg0YkJ6b1FscHNWTElBVERCVU1KS3pZMGFXUkxlc3phczd0NDlCWitsRlZVMHRCdzQyMzNET1o3bmE1dmJQa3N2dVd0UDRTazdYZlBDK3kxeGVtNnpRMGFsOW5wN1RNZ0RWb0IyOFJKSXNpQzg3N1FkMWZkRkZueVZXZGJZMWdIekFhOVZlOFdrY3pEdmFPdm9oQnJ1b2FqQ004UHJGMFQySTVkaElJY1hoWmZHZ3lsbWI5QlFDOXBCY1M5QThsdXdwL2VjOE5ySFlncWljOHM2dTdvMVRmTzY5YzJZZE01TmtNbGxydWRpY2kvY1Zyb292QnZKQ3pVakpGSnNHK2JBZ0NIZ2lWT3d4SWxMd2pvM2JDOTUwWmFiVVZHM3Y4SnUwamxYUy90N2FlVTNoWlV1Mzk1Z2lSelNwd3NzcnRzd0J3ZUpNaFE0czJmZzJHMTFtOEpMUHNtb2FHanIyT2ZWazBubjdQbmxqMXFMejloVk55KzhEMmtMTlJ6ODlIOXBER1kvd01RQ1RTbkkrV0c5WisrcS9aMjlKS0dvY25CNDJLdVhUMHc2OTFaYzN2VmhKY3ZDTzlCZkdqVWNUbktZZ3dmVmRycDJObWI1N3JhYmR4ZTluNUJYMDlMdTFjc25KcDE3TkNMM3pHM2xoMFgwbzBvT0NidlhpMkl3QndhY0FYUGl4SVhodld1L0x2MWRkRjVLZFpOWEw1K1lkTzdtOE5LanY2NzFWbkl3WS9WN09Rem1ZSEF3NE55Y2lLRmp2cXE1TGJJc3ZMTERxNWRQVERxM1BxSisvczRPL2MvMGJ4cDhYd2lET1Vqcyt2QWE0MTZ3by8zeTZJYlBxd2U4ZXZuRXBIT25SbmVpTCs5dEU5ODA3UFZ5R015M1l0T3JPaGdubzBiUHRuVzk2M0o3OWZLSlNlZFcyZ2IxNnlPY2Zya0ZPNGY1WGhqeXhISVdwN2c2ZHVqTk9zYXJsMDlNT3JmQzRiWWtlOUJWRnI5WHdXQytLMDRCWEZybGRHK3A1NzE2K2NTa2M4ZkVrdWdlS2V3YzV0QnhpdURTQ1hIRTZ3MEh2Q1o4akpOQ3pvR2hmbitQd1h4WERPZmlxZGUrelRrOXoySG5NSWVPTjgrUnJ6WHM0KzRTN0J3bUFHRG5NRk1OZGc0ejFXRG5MTkVoajErREJKclFkYzVvN3FoOUVSbEt3T2VkWXUxbXVYT0dXUHZFVnpLLy94Uk56SmtnaHBnN2U0RlBaM3hNLzNZTEtMUFdPY01lUXlsMFFyc25tVkF0Q3JYN0FpdXh5RVlzdFJOSE9vaGxEbko1TEhXc2t6cmVTYTJNbzFiRlV5ZkdVeWVOYzNMQzdPR1VCUExrQkhKVkhIVk1MTG5FUnM2YnlwdlRacFZ6NDFscVVqajlGemlQNTFxUld3dDF0NDZLSlZjNFNmQnBkUUoxWmpLOUxwVytLSjIrUElPK0tvdStOcHU1SVllOUpZL2RsTS9lVnNEK3JJQzlzNUQ5ZVNGN2w4N21vbG5DM1VYc2ZjWG81Nlk4OXJJTUdoUmNiQ2U5amViWHBJRmc5amhucEM1SVl4R1F6TkR2TUhBc3NwRndIcDhVVDU2WlRLMVBvNi9Nb20vSVpVQ21lNHE1aDh2NEp5cjU1MnFFdjlRS3I5WUxielFLN3pRTEg3U0lIN2RLbjdWSi8ydVh2dTZRdG5WSzI3dWtIVjNTVHAxZHM0WGQzVkpranhUV0xjSG5mYUtTMjVqSkxJdlZuWU1HOUd2VlFEQWJuRE5PMFBHc05pK0dXR0tIVEVhZGxraXZUMk91elVHSjZwRnk5b1VhL3ZVRzRjTldFV1NLNkpHZEEwcnFrSkk3cXBZUWFpV2wxZEphRTZPMXNGbzdwM1Z3V2hlbjlmQmFyNkQxNmZUUExnWkZ6UzE3aGlSUG1Wdjl1Rlc4dllBN1BvNnlST21GaDEvYkJvSVo3TnlFYW5xSkJwWFprWGJ5NUhqcWdsVDYyaHhtY3hIM1pDWC9TcDN3Zm91NHJWTzA5MHNaUTBxeFc2bWwxVllXeVRRaWVTakZ3NnRqc21kczN5c3RReUFHQmMrZWJ2bVhKZHlKNEp4UjdQbzFjaUNZMmM3cHVRMFMyeEVPY25VaURXTUVGQ3QvckJiZWJSSER1MlZJWTJXRTJzUnFQV0NZN0tFVkQ2ZDZSTTBqYTJPcVo4emovV1FoSFpEQ3c3dWtYMkRudmgxdmVrTzVEUXFSdGNrVVZHbVBsTVBRS1c3dmxOS0dsR3BLaFpHUlZzQXRyTmFCb3BQVGRuWks5eFp6TUlIRnpoMFFQYjB0dEtIWi90Vlp6T1BsSEF5Z3puNmxpbFM3ZVkyUVljVDBRQ2JEOGEwQmxlc083TnlCOEE2bWJoaE1WempKOWVrMFRQaTNOQWpXWHJtR1VxRSt3MG50dXdaMjd0dlFuVnRnSTA2TUo2L1BZWjUzOFdIZGNnV2g5Z3Nvc1hrUEZNZDNDZXpjL2pFeVhCU3h4SWF1dE4xUndMN1JLS1FNeVoyOHBtRFpEaUd3Yy90SGQyNnBqVHczaFg2d2xQdXNWU3gycTZPU0J3dDNpSUdkMnhkZ213NWt1SFdwOU1ObDNMWU95VVdwM01GdXc0M2pRSUdkMnhkNmhsdHNKODVKb1VDNDdaMVNBNjNpNnMyc3dNNTlrL0VNZDVpVldKTk0zVi9LYmRXRms3Qnc1Z1YyN3B2b2s0YjVWdUxrQk9wbmhld25iV0l0em5CbUIzYnVtK2pPSFJ0SDNwakx2Tmtrd0tTQnc4S1pIZGk1Y1l4UkZjbzRHM2xST3YwbkY1ODJyTUFzMVhzb09Nd0w3Tnc0dW5BTHJNU3BpYWlNaStpUmU0VDliTEtONDlBQ096ZU9QcW91anlWdnlHWGViaGFyS0ZYR09TNHdnWjBiSjRxWVp5WE9TNlgvVU0wbEQ4ckRFczV4Z1lvZVh0dmRKZDBYMHM3cGxkemNhR0s1azl5VXovNnZYV3hqTlFWL2RSK3dHQlMxaUc0SjNiTVpIN0xPZWI5VUpTNUFTWTdQR0piWktmeDZDOTVKODZEYk9RRjRXd0RHZEZuekF0bDI5dEhNYUZzN3BidUx1SldoNnh4ODVpZ0NqdWEyZlBhek5xbVptYUtySTZMcW9XUVBET0w5Z3RiTm8vVVFyYXdHL2RISWFQVzBXZ3RRYW8xT05hVldrWk5Vemt6Z3lGMzZCMGtjVUxZMENqZm5zY2M2OWZVUWdGK1BCSUpnYzI1dURIRmVDZ1ZKTG5rd3NOZEhRR2RHR1JzUXdTMjFqRkF6aDVYNEFkbmFLKy9wbG5kM3lkczY1YTg2cEMvYXBVL2J4STlieFk5YXhBOWF4UGVieGZlYXhYZDEzdEdCS2M1TUJJNGNQZzU4aXIvV0NmZVZjT3ZUNlNNZG9ibldFRjBpY1I5dUo2L1BacUNiR3hnTlJyUUFCUXpaVUNsbURTdTd1NlYzVzhTWGE0V25xN2hIeXJrSFN6bVl4RzB1NU80czVHNHJZRGNWc0xmbU1iZmtNVGZsTWpmbU1qZmtNTmZuTU5kbEk2N1YrZEhNQkMzanpVV2Y0b3BNNXB3VSt2ZzQ4akRiWHQwUk9JTEZPZjJhM0x3WTlFM1hBeVdjdlU4ZUNVeVNnNG9OWHJtVVVIZDFTUys1aEx1TDJhdXptWFZwOUJsSmFIVTdsRFhIeDZGMS9DdWNGSHprbzRGWThpZ0hDV2tBT01LT2dMTmkxckRVVGk2MG9TOFk1L2gxUjBBSkZ1ZFFNWUhXcFY2VVRyOVVpNzdwQ3NRMU9SQU9LcmIwWWVYZmplSXZpcmtONmZSSjhlUVJEaElHZEVONnhNVG1NVVpON1V2RXJBTStGTFQ4MUF5cEV3U0xjK2pERThjNXFSL25zUiszU3MycytjTXFDRGNrZXRJR2xiL1hDVEJLUWxaRCszUkFjeHUyR2I4WXY0Y09FNS9hcnpzQ1NoQTVGMDJjbmtqL3BveUw2WlVIUlBPem5GdjI1STZvcjlVTDErVXdLMkpKMU9Mb1JQZHBlcjlEd2dTSW9IQU8ranNTaWpueW9qVG1aWmVRTTZKUVpsK1dnNUc2aGxJL2JKRTI1Yk1ueGxGejlYZWN0aE05eEFrZTV4YlpTSmhTd1J5K2xsSkZHQWpOQzlVekJvblQyaXMvWE1hdFRxVG13OXNaSTR2ZllXQ21odWwzYnR5QVpiSGs3UVhzcmk2NW16ZjVMaEpHUVJQVk54dkVIMll4aTIzZTJoSG50bWtqU0p5YkUwMmNHRTg5V01vNSt4WEM3S3NrZllJVzFTUC91b3cvUFpIU2MrcVV6OVF3dmt5L2MzcVNXMkFsejBxbWYxL0ZaNCtvZ3FscnVqeWVzVHBLZmJ0WnZENkhSVStRZ3JlRFNzN3ZHREJUU1pBNHQ4Uk9YcHhPLzZWV2dFSFExRnB1REVyRDNCSGxEOVg4ZWFrMGxJekcyL2tmQTJZcW1YN25JT3RFRTBjNXlLdXltSDgxQ2k3SzVKV3JidG5qNkpmdjEyL1hRWnMxZzNCNFlKMWVnc1M1RlU3eXBsem0vUmFoaVRIVE9VaVpYYnkyclZQYWxNZUMxcFBYUi95T0FUT1ZUTE56cUtKSFAxZnE5eTk5MFNhMmMyYk9XU1Z0ckk1V1AyZ1JyODVpRnFJWkt4WXVDQWdTNTA2T0p6Y1hzWkNRdWdVem5XUFZNU2dRdHpTS2wyYlFhRHQ2N0Z3d0VBVE9vU3NYcXhNb0tMbkN1K1UrVTcvMUloVlB6b2p5Y3Exd1lScU4zZzVmSlFrR2dzUzUweE9waDBxNXFCNTUwRlRuUm1WUDJwRHl4eHIrM0JRS3ZSMTJMaGlZZnVjaWtBZG5KRkdQbEhQV1BubklWT2VHSlUvaW9QeDBGWGQyOHZqVllMOER3RXc5UWVMY21pVHEwWExPWnJaejhHcHhBL0tUbGR5WjJMbmdJWGljZTZ3YzNSNXNybk13VWp2NzVTY3F1RFhZdWVCaDF1YzVjTzVKN0Z4UUVTUnpDS2puakxzMXpaMURESXVlK0FINWQzaHNEU3FDeExuVDlIbHJaSS9KZHdpUFNKNlVRZlJsNjFxWXQyTG5nb1FnY1c1MUF2WExFaTZzVys0VnpIU09rRDFadzhxTEx2NzgxUEhyYzc3dmpwa1dnc1M1aytPcHpVWGN0azZwaXpmemV3aEc4UlM3MVgvV0N4dlNHZnc5UkxBUUpNNmg3MXNMMkMvYXhUWlRkMFFYVlU4dHJiN2JMRjZWeGFCbHcrQWN2cEZwMmdrQzU5RFBGVTYwaDZ2cDk1V29uckZPWHR2YU1YNWZpWEh6SEU1MTAwdVFPSGUwZnYvY0d3RzRmdzVLdXRnKytVSDljWkhlNVY3WXVlbGxtcDBEOU55ejFJYnVFLzVybmZuM0NVdmFXT0dvK3FKTHVDaU5XWUx2RXc0R2dzUzVCVmJ5N0dUcW1XbytaMFFCUzh5TlZsYjdiN3QwUndGN0F0cE5rckJFNEZRM3JVeS9jOUQ5K3Jxdkh5U1FENWR4Q1FPeTZRdXEzYkluWTFoK3ljWEQ3QlV0aVFEbmNGVTNqUVNKYzhEeVdQTE9RamE4UitvVFRWN2ZLbXNlbUVsRTlraVBsSE5uSmRPTDRVMVJ0ak4ydmhuM3o4RDN3REFCWXZxZEE2Q3pJNG1sZHJSUitpZHRZaU9yU3FidUlReXZKV3Jvb3NuL090RGV1ZWNtVS9CZWh1aGU1d3dtek1QeUJaVGdjVzYrbGJ3MGcvNUhnMUJNS0d3QU5uV2xGVThscVg3VklUMVp5VjJkelp5ZVNCM25wR0R1TXQ4NGdDZzk1M2t4VXVDQm1maWZUV0pDL2UvS3hIbGk0TnV3d1VuUU9PZUdrZzZtRVU5Vjh2RUQ4b2pwOHdnOTJ6R0twNUhSNGdia3Q1ckZ4OHI1Vy9QWWk5T1kwNUI4NUpFT1lxRU5QU01BN2Y1bmRKNWYxODRJWm9SMndlTWNOTm1xT09ybmhlelhIVktucWF1L2ZBUG1KME9TVmtHcTlqNzV3eGJwTHk3aHNRcHVjeEhhdy9XSDJjeWxHY3lGYWN3NUtkU2FaR3AxSXRwNTg4UjRhbVVjZFh3Y0NWNGVxN1BDREtCNEJZN1JXYVp6dEFOeGxBN2EwMVBmMWhQdGhtbER1MkV1QVd6RVlodXh5RVlzdEtKblBTNndFcENoNThYczZ5U1p5TVRCYVdGUU9BZm9qUVhOZldVbTgzcURBSU5nNExaTWh4Zm1WTStnNEdsaXRCSzNtaklvdy9RQ3h0ejNXOFF0RGNMTHRjSnoxZnlURmR5dnl6Z28vdTR1OXU0dC9KTjg5c2Q1N0MxNTdNMjVpSnR5MFNiRDM1c2JjNW5yZ1J6bTJoenZIcjlYWnpFL3pHS3V5cVN2ektRM1p0S1haOUpRYVZ5YVRsK1NSbCtVUnE5UG95OUlvODVQcGM1Tm9kWW1VMmNsVVdja1VhY21VajlJb0ZicCs5R0N3V0RxSWp1eTBPdlp4SGlObmRzMzBDNVJjUHFTMEpTL3JlREFBMGJ4dm5WQUE4eUcybkZJUlB2ejE5Rm9BL1hjRVRWMVNISDJ5OUc5VWxpM3RMMEw2YWh2b0M1OTFDcDkyQ3A5MEFKMlN1KzFpSWZDdS9yKzVmOXBFdDlxRXYvZEtMN1pLUDZyVWR6U0tNTDU5czhHNGRVRzRlLzF3aXQxd2w5ckJjakVMN3FFUDdtRUYycjRQMWJ6ejFieHY2K0NVNEovdklML1RUbjNFSndZcGR6ZFJkd2RhTHR0OXBwc1prTTZ5dE0vU0VRV0xyYVIzcTBMZ2txK0lISXVHbDJsZzFIbXAvbG9vV3NucnltQkdtRDNFU0NmcUtIOTFFblpNeXFCaFo1K1Fldmh0UzVlYTljZkY5SENhSkFYb1J4czBLay9OT3BvaEl0QzFGQmF0VTRWcFZVU1NnV2hsQk5LR2FHVUVrcUpXeWwySzRXalNzR29raitxNUkwcTJTTks1ckNTUHFUQWlaRTBLRVB0NjBDbmh3eW5COVFrSDdXQ3RlTHoxZndEcGR5Tk9jeTZWQnBTSUxxNVlVSTd2MmFmRm9MRk9RQzBpMFJseW9aMCt0VTZBVnA1YWxKZFVJWEhnOUQwbjhZdmNESVlEK1VCWlAzRUVBQVZ5Z04waHNCa25GVFFTVElnb05PalNYL1dCUmdaM2kxREtuMjJtcit6a0lVeCt1UjRWQlJPNXJ6cFRYaEI1QndBSlVnMGNVb0Myb2d1dkZ2cU1YVk4vNndQYUN4Wjg0Q0lvR0EzcjlWU1dzYVFzcXRMZ2hQNDNtS1lvZE13ZDBFN3hFL01MWHhiZmlvSk91ZGdKbUdIbVFUOWozb2VCcGZBelNSQ0lYalYweWQ0aWtiVkhaMFNsSU13QVZxVGhIYUw5eWE4NmRJdXVKelRNLzk4OU4wcmRYOEpDMlVLMUZXbWZpVVJpa0hMSGloSlljRDlvRVY4cUpTN01JMyt4cTJFVTI5ZWNEbG5OQUY2dENGNVJRYjlXcjBBRlRSajlsZitvUmxnWGkydFFzVUMwOTRyTXBubHNSUWFadzN6Zkx0Z0NnZ3U1d3dpaVRsUmFJWEVQVVhzMWs2cFBRRFBKd25OZ1BJWUd0UGVwL3k1UnJncWEvd2hHVk9mN1lMUk9iMGhJTlZka0VvL1U4VW5EOGltNzJvZHNnRVQ0VjdCa3pRZ3YrUVMvaStMV2VhWWp0b3VHSjNUVHp0b2k2Tmp5ZXR5bVA4MGlaV2t5dUhaaEVrQjdUZ2dhSEg5OG5NMS9JWjArb2lKMnM2dkZ3SkhNRHBub0xmQzZnVHFubUx1cXc2cGtkYXdkV1lGVE1zNk9jM2FoM1p5T1RlRldtREZlYzVBUC9rV1c4bHpVdWpIS2ppWXcvYUpIbHpabVJXeU50YkthWEF5Lzd5UVBTbWVtZy9hVGRrSUc3ek82U01zTk1UaGRuSkRCdjE4alpBMHFQU0wrTXFKYWNHcmFNSDVsZ2J4Mm16RysrU01xUmxoZzljNUFKelRyeEl2aXlXaDRIMjVUa2dkVW9ZRGNHdGR5TWF3NUVrWVVINWZ5YTlOcGhmRTZOcE5RYW9MYXVjQVBkWEJmR0tGazd3MmgzbTFuczhZa29mTXZYVTloRVB4akRXejJ1ZHQwby96MkJWT2ZSdWhLZEF1MkowRGpJWkFUeFFtcjgybS8xYkhKdzhxZllMSDNHV3dJUnVzNnNrWVZwNnQ0dGVsMGd0dHhpTTBBcnlUMEF4d0R0Q2RteHRESE90RXo5dDh5U1hBVkI5bVhwTEphLzVETWVETWJXUzBUOXFrbitheng4VlJxS2tqc1hQQWVLcURVeEFHMlNzeUdEZ3Z3N3NsRjZYU2dYaHVmNGlGVy9MQTBQRk1GYjgyaGRhMzE4RE9HVUJiNk9aQnRqdktUcTVQb3g0dVpUOXJFNHRHMVNGOERlWFFBb2FMT2twN3IxbThKcHRkWXF6Q05GcmJyd3ZNWXNZNFo2QnJCeWZpWWh0eFpoSjFSeUh6ejNyQjJxdTRLQTNNd3pjRGZNL3dqSTJJbnVoZStkNWlibVU4TmM4UURqczNDYlNGZm12blFpdHhZang1UlNielNCbi9RWXNFb3dOTXdRZ1p6eTIrVDRqYVdJNyt4RkdZU1N3TzlFNUNNODg1d0RnTDBSRGdYbW9uejBxaWI4MWpuNjBXUG0wVDQvcVZja0p0NTdSaEVkMHhpelBmUVFhMFV5MnQvcWRKdkM0bjhOZUhaNlJ6Z09FYzBnNFNIbHAyZW00S2ZXTXU4NXN5RGtiYnJSMVM0b0JTU3FndHJEWWdlQ2pGSTZqb1doUzZySWN0M0U5MDg5ck9MdW0rWXZSVkdHcll3TTBrWnFwekV4am1SYUdseFVjNXlETVNxZi9MWkRZWHNrOVg4YTgxaUorMlNXSGRzck5mVGg5QzY2WktDYVdLVkdvcHRIeXJsVVByQzZHaGV3V3RYL0FNaUo1QjBRUFpjVVJDNndsZ0tnZkRORURxVURxMHZ1YkZGK2I3QWprWTRGUUVyNkkxTlRDNlNScGFaYVBxUzIrbVB1Q0RKdzBxMEc1bko5UG9CaWZzM0g2WlNIaEFORnJnRHVhdGlpUFBTcVkyWkREWDViSjNGSEFQbEhKUFZQRFAxL0N2MUFsYkdvUzNtOFFQVzhVdjJ0SGlQRGl6OS9SSVVEN2IrdVRZZmptaFgwNGFrRk1HMFdLK3pHRWxXeWQzV01rZlVZR0NVVVNoRzFIMGZTa20xQkpDaFJ4Y1JxaFFCbFFTYWhXcHVpZ1ZocllHR2lWbU9CTjZlRzFRMU55eXhxcWVLYnNXeENwamNHRC9iQkEyWk5DQi9jcC94anZueTRSOGVudk5zNks5bmxiRVVpZkhVekRKUFQrTnVqU0R2aXFMdmo2SHVUV1B1YTJBdmF1UXZhOFlHZm5yTXU3UmN2Q1MrMTBsOTB3VjkxdzEvM3cxLzJjWC82S0xmOG5Gdit6aVg2a1YvZ2JVSVY2dG4rUWYzeDNvVkdqcjF4dUVmelVJYnpRS2J6WUtieldKN3pTamhkWWZ0WXFmdDB0ZnRrdmJPNldJSHNuV0R4TWpHZEl6Sk9aZVhvUHNHTkQ4QjFrVzB2L0hiUktVZEl2dDJMbURaQ0xub2QwNjBBWW82RitpMFNVOXlIK0xiY1FSZHJRbkNOVElVUDhkNzBUcDhLUUV0UDNDNmtUcXRFUnFUUklGMlhGdE1uVk9DblZlQ3JVdUZlM1ZjRUVxZFdFcXRUNk51UWhJUjF5c2M4bjNCYkl2Y0drR2Mxa0djM2ttc3pHVGdhazMxQU0vekdaK2xNUGNrTXZjbk12OEpKKzVFODZIRWhiT0JFalBVTnBIOXNnbGJuVkExQUkzSzlKdklkWjJkY3UzRjdETFlCcGhOR1lndEp0Vnp2bWhDK2UxOENBeC9zUkFmeEVvRXlleEl1WWVHcEI5QVJpOGZJRlRZcUdOV0dRbmxqcUl3eDFRSGhETG5TVDB5cW1KMVBrcDlIWFp6RU9sM0w4YVJTaE1teGd0Y0xkTVEvM3E2SmNmS0dGUGpBdmtQZXV6MlRsZ1FpQmZzU0lOak0yTERwS0p2eklWMytQeEhoNmtad04wMlBOajBGMnJ5Mk9SZkpBSVllamYwU1hWMFNvWG1IUUhVeGtvWktIR09DT0o4dDdhQlBnMTZhRXp5NTM3Zmt5WU9sMTQvZE1aMXhGcTAzVXAxTU5sM0s0dXFZVlJBekczVUxTeGdsSGxoUnIwcUNwdzNYc0FmbzF6NkdEbmdvdDl5Z2Zhb2QyUGlTVldZbDBLRGJPYytINFphanZWN05zSTRlWEtTUlhtU1plbE0xRDdZdWRDRzhPL0NIU24valZaekw4YUE3WGF2SVpTWVRaOXRiNE1FVHNYOG9CMmU1QUVxeE9vQjBxNFBkMVNyNm5QNHpPaWdVWTNtTnlZTTc3aUdsS3MzMkVjT3RpNW1ZUmUyeDJsUDZkcVM2TlFUWnI4ekNDSUZrYjd0Rlg4U1I1ekF2UTRkZzZESkloQ2sxbVlWejVaeWNFYzAvVHJKaDJjOW1XN2RHY0JjMkxnN2huR3pzMGtqS291R2kwTjJWekU2by8xTnZuNUxkMjh0cjFUdXFlSVBUbHczL1JqNTJZWStuaTMxRTdlbE10ODBTNjFzS3BzNnV5MVY5REN1dVZmbG5DbkpJdzdCNkw3SGNNaGdwMmJZWUFCa1dpejc2c3ltYmVieENwUzVVMGRYdnNFTGFKSGZyQ1VnNWtLZGc2amc1eHp6NDBoTnFUUi82Z1RDa2NWMnRRckp2MmlGdFVyUDFUR25XbzRGNEdkdytqT3pZa2hMa2lsWDNJSldjTUtZZW8zRWxBZ1J2ZktENWR4cHlWaTV6QUd1blB3ODl3VTZybHFQblZRSGpWMWM3NUo1NUwwWmYzWU9jeUVjMnVUcVdlcStDVDBiRFJUeDFaaGZHdzFuTVAxSEdiQ2c3T1RxZDlYOG9uOThyRFp6a1gyeUwrQ09RU01yZGc1RE1Md0lJWlltMEk5WGNVbm1wM25ZTjY2cDF0K0FGOHJ3VXd5N2h6VWMzK281bFBNcnVkNmVXMVhsM3hmTWZjRDdCekdpKzRjekZ2UFQ2UC83Qkl5eko2M2RuSGF0azVwYzFFZ1Z4eGk1MllZdW5Oelk0aUwwK2xYNm9TOFVjWGNYWUxhV2UyLzdkTHRoZXhLL0gwcnhndHlqcGh2SlRkbU1XODBpZVdreWZlcE56UGFSNjNpcmZuTWNkRGp5TG05RHVEUXdjN05NSFRuRnRuSmEzT1pqMXZGQmthVlRMMmZxWTdXM200U3I4dGxsdVA3NXpBSUVBNDgwRGRZaHVGdlo1ZlV3MnRtS3VjWnF5TFYxeHVFSzdPWXlXZUMrUjNEb1lPZG0wbm96czJKSms1T0lCOHFZK01IWk5MVVlnNzBMWEdyZjNFSkY2Y3hTd08zT3hOMmJpYWhTN0RZUmw2WUNwTld2dEN0S0tZT3JKSytJOWd6VmZ3NXlmUkNZL3NJN0Z4SW8xZHlJQUZVOTV2eTJFOWF4V2JXNVAyVWFXVXNjVkQ1VFJtL09vR2FQejZPK3gvR29ZT2RteGtZQmtTZ2ZURE9UYUdmcnVKZ1lEWDNVUm1RTUlkRVQxU3Z2TG1ZQTYzbkdNTEIrL29keWFHRG5RdGVvTDhOb084aHcrbVBHRDNPU2QxUndQNjNYV3lnTmNIVWdWWDFqTFZ6MnBjZDBpMzU3T1NENTdCem9ZVmhteUZjQlBwbG1RTTlEK2pWZWlGdkJOMnFhZTVLQ0RDNG1sTGZiaGJoTFE2ejZXOGFDT0dBb0hOdTRzekdHRVFUODZLSnhWWmlaVHgxVFRZRFU0ZUVBYmxQTUg5bEsweUJzMGVVbDF6QytXbjBISmhBaElwemhtMlJ2cHZUekFvaTlzTDNQMDM4RHZpb0JpeXdvdjNMVG9vbkwwcWpmMTdFUWljbERzamR2Q2Ficnh4NnFLdTFWMzZrWEw5YkUvb0NuUFB0R2hNSkt1Zm1XZ25JNm92c3hCSTdPYXV3VGJMVXJ1TWdEM2VRVURZZDZTQ1BpaVdYeFpMTDQ4aGo0OGdUNHFrVDQ5RitlR3VTcUhOVHFFdlM2UjlsTS9jVXN5KzRlS2kwQ3R6S0lOcW14TnNwNWtZTG8zM1dKdjIwZ0QwdVR0OThMaFNjZzN4K3BJTTRKWkc2SUkyK0xKTytRdWZ5V2NIR0RNUVZtY3lWT3NZT2h6QlFYbWRzY3BqSGJNcG5iaTlrN3lwaWYxSEMvYXFVZTd5Q2Y3b0s3Zks1cFVINHFGVU03NUV5aDVWR1ZpTUR0dU1oZUZ4R3FIK3ZFeTdQWUE1M0dLT05md2VaUnJBNHAyL0Zla29pV3JiNVJDWDNjaDF2N0lRS3JUQUxlRlVIYmV4YWp6WjJCWlBlYUJUKzNTUzgweXkrM3lwKzNDcCszaVpDR3R2WkpVWDB5TFplT1dGQXlSaFdpa1lWRjRXZU96QWtlVGdWYVJHNFFGZm1CcFJIeXZqVEUrbkRBbmMxMkNBb25OUExPS2hkTGt5ajRmemUxUzFCTVZ2c1JoU09LZ1V6bjBLM1VvUlFpOTNlRGF6TENiV0NSTHRYMTR6dlh0M01hcUJYRjYvQi9HQklSRnUyYzZwSG1aS0hoa0wyaFBmOXVsUGFsTThlSFJ2SUhUWU5nc1U1Zlowd3pOTC8zU1JDa29jNWxLVHZYUStJc3d2alE4RWt3QUQ2MndEU21LWURsazJGYUQ1Qkt4NDRKVjZ0Rnk3Sm9OR3orUU1xSEJCVXprR0pBK1ZMQ3h1QVdSbU8vVWN2V3JzdlFSMEp4YlF4NXZoM2tMa0VsWE0vekdMZWF4SHJhRlUyOVFvN2pnTUVETi9scEFJbDV0Vlp6TkdCdTMvSmw2Qnk3cW9zQnNwcUtISE0zWU1EeC80Q1dubEUwcXg5S01tdFRxQVdRRjlnNTNBRU5GZ1ZrcHo2WnFOd1ZSYTlkT0k1SklCZkI1a0xkaTZVbzVOREt3dTlPMy9wdllDZHd4SEFJR1V0WTBoNW9VYTRKSjA1UEhDN3BPOE5kaTQwUTFEUlhTUXdZN3N4bHpuV1NhTEg4QnNEcTEvWEJBTHNYQWlHb25tYUdHMTdsM1IvQ1hkcUlqVXZadnpaYUg3OUVpQ3djNkVXaWdkdEdoelZJLysyZ2o4dmxkWWZZYWc3NTljcGdRTTdGMUtoalkzMThKNjRmdm01YW41REJzeFY5VnRJRFB3NkpYQmc1MEluSk0zVHlXdU9maG5tRFZkazBnRjgwczJCd2M2RlNJamFXQXVyUnZkS3oxYnpHek9aWmJIajh3YnNISGJPOUlBQ3ppMTVLZ2gxVzZmMFpBVjNTVG85K1IwWHREemcxeDJCQmpzM3UwUFcwSVhmdENIbFAwM2lQY1hzdWxUcUNJZTN3YWZCTmdQczNLd01hRDlHOGNEOHRNU3Q3dXFTLytRU2JzcGxUa21nRnRxbUw3MU5nSjJiZlNHb3lMWml0eHJlSmIxYUw5eFR6RjJjVGg4WFI4NkhwcDRZVW4zYmY0b0pLdWV1em1JK2FFSDdXMmxUY24vczdBZzRQU1VOZlZ0UHlKNWVRYXVuMVp3UlpYZVhCRDM2UUFtM01aTmVGVStpOUFhTkRMYjV0ZnkwRUZUT1haUEZmTmdpTmpFbWI4TXgrMExUOTdPQjBYTlU4dlR3V2lPamxSQnE4cUM4dTF0NnUxbDRyb2JmWE1SZW1jbWNsa2dkNmREdk5aOVl4ZWpYOHROQ1VEbTNNWU41clY2QTA3UlAwTnl5QnhpV1pqVWlZa2huVUdkQVFQVHA5QXJnazZlTDk4QWtvSjNUV2xtdGlVVnB6RVdwNVNSYVpwRStKRHY3NWJCdTZkTTJjVXVqOEV3MWYyOHhlMDAydlRhRlBzNEpwZHY0OWQ1cEgwejlDQXJuQVAyeHBPZWtVTDh1NHo1b0ZhTjY1ZGgraEsxdk5tUHRSY1QweXRHOWNsUVBJcUpiMnRNdFFicmExU1h0NkpTMmRrcGZkVWovYlJjL2F4TS9haEhmYXhGaCt2bDZnL2hLSGY5OERmOVVKZmRRR1hkWEVYdHpIbnRsRm5OZUtnMnpoR1d4cEhmaEZzeE1qZlJtbU9mWDROTklzRGdYVGN5TEllQTRMczlrN2l4aUh5N2pIaTFIZ0lLekdQaVlCcURPcjBxNUIwdTUrMHZZWDVhd2tLN3VMbUx2S21SL1ZzRGVWc0QrSkorOUpZKzlNWWU5TnB1OUtwTzVMSU5abjBhdlRhWmg2RnlWUUVIWEhPNUFGZHRjdlJtOUJLRnFFd1NMY3pIRW5CaGlzWjA0Tm80OEpaRTZJNGs2TXhteEptazJBeC9UNEhRZ2tRS0hUazFFaS9naFhmMGdnVHBKWDlPL01vNkM3am5PU2E3UWwvc2Y1U0FQdDVPTGJHaFlnQmJ6Nm1Xa05DL0JONWo2RVR6T0dVQTdBbkRLaGhUR3AwWkVmd052cnRvbklKYUIzNzhEZTdWcWNCRmN6a0Y3b2JOV1AxLzk5cElKYWZSTU5pSFpCRE5GTWorQ0xjOU50aVBtd1BpMTJ3d2k2SnpEekhxd2M1aXBCanVIbVdxd2M1aXA1cUNkbzdCekdITXduSXVuWG1zUXZYcjVoSTl6c2FRbFpjd1N5L3YvUFFielhRSG5VaURQRWE4ZjJMa1ZEcmNsMllPZHc1Z0FqSlpKbmxYTzBTMzF2RmN2bjVoMGJxVjFBT25wNEN4V3ltSWwvVjhGZ3prWXdCendKNVlEN1ZZN0J0K3NwYjE2K2NTa2M2ZEZkVmlpUmkwMkJnRi81dmRhR016QllLTXNOdHBpcHkyUkkydXRuZS9XakhyMThvbEo1eTdhVXpkL1J6djZNMGgxOEdlK0w0VEJIQ1JnbTRPMVJMc1AyOUcyTWFyK2krcCtyMTQrTWVuY3JlRWx5NzUyellrYXRzUkpGanZqLzFvWXpNSGdZQ3h4NHB5SXdSVmYxOXdSV1JwUjFlSFZ5eWNtbmZ0dFpPN1oyOG9XUnZSYjRpV2tLaTdwTU44VmNBYk1pUk1YaGZlZXQ3WDBtWmk4dE9wbXIxNCtNZW5jTy9GNU40YVZIQlBXZ1pJYy9DVWFYckYybUlNR2hBTm5kSE5XN0c3OWNWalJSNG41cnBaMnIxNCtNZW1jczZEeXQ3YVNzM2JYelEvdjlRcUxaeEtZZzhjUUxvWmNzTHZuM04ydVp4d2x5U1ZWUThNalhyMThZdEs1dXRhT0Q5UExidzByV2JHdHpoSXhhSW1YMFdRQ3B6ck1RVUdpSzd0UWxZWDNINyt0OXJidzRpK3lLcHM3dWlSSjh1cmxFNVBPRVNTWlZsNzdKMnZ1SlR0S2w0UjN3NmlNWGdWZnE4TjhLMkFJZU9JVUxISEM0V0VkRzNlVy9OV2VtMU5WVDlQN3VEZ0hNZW1jcXFvZG5WMlJPYVdQeGhTdURhczlMS0lQWlVzbm1LZGZPc0htWWZiR3FPSDBLOEFXRzdWd1Q4KzZzSnFuYklYMi9QS2VubDdQZnBiTlR6b0hJUWhDUTJ2N2w1bGw5MFlVbkxhamVrRjRIN3B1Z2k2ZFFHR0lhenZNWG9BVjRBWVk0aFFYaHZldTJWNzVZRlRCOXV5eWxvNHVVZHpITjYxR2ZNTTVDSlpsS3hwYVBrMHB1aSt5Y08zdXVxWGgzWE1qaDFIbWhOb09RUEpCemdQL2NOb0xTWXhoMUpndUdFcFlxWGxSdzRlSGRhMExxMzB3c3ZETGpPS2E1alpJWGw2ZjloWCt6a0ZRRkZYWjJQcFZadm1qMFlVYmRwUWV2N054YmxndnVvQUNGU0lZRFcrRGg5cVFCUTJtREJwTWpRSFF4c3piM2IxeVI4UEduYVZQV2d1M1o1ZTdXdG9aaHZHYXRKL1loM01RSE1jMXRMUkg1NWE5YU0vYnRLZjA3TEM2NVdIdGg0WDNXdllNV3FMZDNuZUZJUnlxUFV3SUllZ1pod0VINWtRTXdtQzZmSGZiT2J0cmI5c0RrNFk4cU9HYTJ6c1BuT0dNMkxkekVEQWVkM1YzcDFmV2ZaeFo4WlNqNU9hdzRyVmJTNWQvN1pxN3RRWGRDZ0JIa0R5Rzd2SEVoQTdRNDlEdmtjUHp0N1VjdTlWMTNyYXlXOE9LbjNhVWZKWlprVlZWMzlQVHM4OHJJM3ZIZnAyRDBEU05KTW42MXZiNG9vcjNFd3VlaXM3N2FVVFpaVkVOWjF1N1RuRU1ybks2VDNBU0oraHIwREd6SFFyNkducDh0V053cmJWelkxVDk3UkdsVDhma2Y1aVVuMVJjMmRUZUNmVVkyT0wxNXR2aVFNNFpJY3Z5NE9CZ2RWTnJTblZ6V0dYNzU5VUQ3N3JjYjlZeFcrcjUxNEFHOUNod3pPeW5ub2NlLzNjZDgyN042QmZWL1h1cTJ0TnFtbDNOclVORFE0cWllRjA1dVBoMjUzRGdNRGV3Y3ppbU5zYkcvaCs5UDcrS2ZLTytSZ0FBQUFCSlJVNUVya0pnZ2c9PSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIl0sImV4dGVuc2lvbnMiOlsiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiNWQ2MjkyMThkM2E1MTFlZGFmYTEwMjQyYWMxMjAwMDIiLCJvcHRpb25zIjp7InJrIjp0cnVlLCJjbGllbnRQaW4iOnRydWV9LCJtYXhNc2dTaXplIjoxMjAwLCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxXSwidHJhbnNwb3J0cyI6WyJ1c2IiLCJuZmMiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fV19fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMy0wOS0xMyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IlN3aXNzYml0IGlTaGllbGQgS2V5IFBybyIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjMwOTEzMDAyIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjMtMDktMTMiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MX1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNC0wMi0xMyJ9LHsiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjBhNGVkYzdjZTU4ZjZhYjc1ZDc4ZmQxZGMyNTU4ZWJjNjJjYTBlMTciXSwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiMGE0ZWRjN2NlNThmNmFiNzVkNzhmZDFkYzI1NThlYmM2MmNhMGUxNyJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiWXViaUtleSA1IFNlcmllcyB3aXRoIE5GQyAtIEVuaGFuY2VkIFBJTiAoRW50ZXJwcmlzZSBQcm9maWxlKSJ9LCJkZXNjcmlwdGlvbiI6Ill1YmlLZXkgNSBTZXJpZXMgd2l0aCBORkMgLSBFbmhhbmNlZCBQSU4gKEVudGVycHJpc2UgUHJvZmlsZSkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2LCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjJ9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50IiwicmVtb3RlX2hhbmRsZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRFBqQ0NBaWFnQXdJQkFnSVVYemVpRURKRU9UdDE0RjVuMG82WmYvYkJ3aVV3RFFZSktvWklodmNOQVFFTkJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNWjYvVHhNOHJJVCtFYW9Qdkc4MW9udE1Pby8ybVEyUkJ3SkhTMFFaY3hWYU5YdmwxMkxVaEJaNUxtaUJTY0laZDFSbngxb2Q1ODVoKy9kaEs3aEVtN0pBQUxrS0t0czFmTzUzS0dOTFp1ano1aDN3R25jcjRoeUtGMEc3NGIvVTNLOWhFNW1HTkQ2enFZY2hDUkFIZnJZTVlSREY0WUwwWDRENW5HZHh2cHBBeTZua0VtdFdtTW53TzNpMFRBdWNzcmJFNDg1SHZHTTRyMFZwZ1ZkSnB2Z1FqaVRKQ1RJcStEMzVod3RUOFFESXYrbkd2cGN5aTV3Y0lmQ2t6eUNpbUp1a2hZeTZLb3FOTUtRRWRwTmlTT3ZXeURNVE10MWJ3Q3ZFenB3OTF1K21zVXQ0cmowZWZuTzlzMFpPd2R3TVJEbkg0eGdVbDVaTHdyclBrZkMxLzBDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01COEdBMVVkSXdRWU1CYUFGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFNd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkRRVUFBNElCQVFDM0lXL3NnQjlwWjhhcEpOanh1R29YK0ZrSUxrczB3TU5yZFhML2NvVXZzcmh6c3ZsNm1lUE1yYkdKQnlKMVhucXVCNXNnY1JFTkZ4ZFFGbWEzbWlvOFVwZjFvd00xWnJlWHJKMG1BREcyQnBscWJKbnhpeVlhK1IxMXJlSUZUV2VJaE1OY1pLc0RackZBeVB1RmpDV1NRdkptTldlOW1GUllGZ05oWEpLa1hJYjVIMVhnRURsd2llZFlSTTdWb2xCTmxsZDZwUkZLbFg4dXN0Nk9UTU9lQURsMnhORjBtMUxUaFNkZXVYdkR5QzFnOStJTGZ6M1M2T0lZZ2MzaXJvUmNGRDM1NGc3cktmdTY3cUZBdzlnQzR5aTB4QlRQclk5NXJoNC9IcWFVWUNBL0w4bGRSazZIN1hrMzVEK1dWcG1xMlNoL3hUNUhpRnVoZjR3SmIwYksiLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVIzOG1xMjZTZjJzelZWMkJkRzZXRU43a3VXVXdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFSWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFOWTBXYjlvUG9Sb0tvUXlXUGFKcHoxMXZyV1RnNnpUdG1OajJWb0tSbnl2S0dScXB6YjgzdzVsNllBOTZVWWtZQkRRUDBpbE8yRFBlNndXcVZSNXpEZlJ6ZGNIOGJoK0w3ZEdHdmFlNmhSVFpoa0ZrQ3BYRHM0SGNja25yRGY4RkNsSjdIZTM5SmY0Mi9HMVFtMnp6OVdXbXJQWHRnaUsveDA1R2pzUWZHdURHMXpmNVFUVVVpZThsd3ltSzNUZmRPdk5lZUpBQVBlMnBuN0l0ZlJiK3JWck5XaUR6bFJuMnZObloyd1BvNHdIL1dKNmRoWFpHK3JNV1QrYTZCb2NnMVVmSXc2a2R1bkc0YlRwWnpzdmFjRll5UjBtcGYrRGVPbnBTV0FteXdKV0h2VGxmMllYeEZ5ZVhjVEFDZFFsY01OR0oyVmhaUTQ4eHRQNS9SQlAvOGtDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNoeTQyb2tpcWNUUzFpcWEvSFJXamtCbjRIL01COEdBMVVkSXdRWU1CYUFGT3EzUXBDZURIdGtldHRVZkFPNmZFNmYyS0ZoTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBbitSSElQYnRNRUROZFQxZzhIL1JpdEFrVWRMZ0F0MXRXR1dubGo5a25idjQvNEdsWDdDOXA0NWVmUE85L2FaTDZPVjFYUktCaTZLbXRCVzVLN251WUVuTXgvNUJxQlNiTFQ3cmhkdUM0OVRCZU1iOVBIZFhzVGxTVk5ZZWZyMWRHaWRyNGoweFZCUUxiMXJrbkRBYmRXRHpLZnZuYXlLTzhGcndlN0h4ODQzTUcvckorYzBYcnVVdmJmVlRDSExpSVdoTTdvTkRoTDh4b2I2eFVvOUtMS2NTTCtJdFlzTzMvOVdiOFE5R2pzcUw0RlhzRGNHMVNhWWg3S3BmdU1tT2l4cXpKWk8ybklpY1BZUmcxSTJTdWlVZllPNzB0bWRIY2JsK2tTUW1TWXQ3cnE0dmlJTGcyR3gzajlySVR1V1RqYmFVYVNTUXhnT21NU0h1eXpNQUMiLCJNSUlEU0RDQ0FqQ2dBd0lCQWdJVURxRVJ3KzRSbkdTZ2d4Z1Vld0pGRVBEUlozWXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFESTdYbkgrWnZEd01DUVU4TThaZVY1cXNjdWJsdlZZYWFSdDNZYmF4bjlnb2RMeDVzd0gwbFhyZGdqaDVoN0ZwVmdDZ1lZWDdFNGJsMXZielVMZW1yTVdUOE4zV01HVWU4UUFKYkJlaW9WN1cvRStoVFpQLzBTS0pWYTNld0tCbzZVTGVNbmZRWkRyVk9SQWs4d1RMcTJ2NUxsajV2TWo3SnRPb3RLYTlKN25IUzhrTG16WFhTYWowU3dFUGg1T0FaVVROVjR6czFidm9UQVFRV3JMNC9KOVF1S3Q2V0NGRTVuVU5pUlFjRWJWRjhtbHFLMmJ4Mno2b2tWbHR5RFZMQ3hZYnBVVEVMdlkxdXNSM0RUR1BVb0lDbE9tNGNycHduRFJMVkh2alllUEdCQi8vcEV5enhBL2djU2N4andhSDFaVXc5Ym5TYkh5dXJLcWJUYTFLdmpBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlRxdDBLUW5neDdaSHJiVkh3RHVueE9uOWloWVRBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBcVFhQ1dNeFRHcVZWWDdTazdra0ptVXVlVFNZS3VVNitLQkJTZ3dJUm5sdzlLN0hlMUlweFowaGR3cFBOaWtLam1jeUZnRlB6aEltd0hKZ3h4dVQ5MFB3M3ZZT2RjSkpOa3REZzM1UFhPZnpTbjE1Y0ZBeDFSTzBtUFRtSWI4ZFhpRVdPcHpvWHZkd1hETTQxWmFDRFlNVDd3NElRdE15dkU3eFVCWnEyYmp0QW5xL05EVUE3YmU0SDhIM2lwQysvK05LbFVyY1VoK2o0OEs2N1dJMHUxbTZGZVF1ZUJBN24wNmo4MjVycURxc2FMczlUYjdLQUhBdzhQbXJXYU5QRzJraktlcnhQRWZlY2l2bEZhd3AyUldadnhyVnRuM1RWMlNCeHlDSkNrWHNORDA1ZENFclZIU0pJcytCZHRUVk5ZOUF3dHlQbW55YjB2NG1TVHp2V2R3PT0iLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVRuYmJHSVIyTkh2enFJS0ZBZVF3RzFYQmlzMHdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFRWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPc1hqM2swNEJhbjRUWWR0WktxRC9PUEp4eUR5YVBtQ0JVRlVpYVpJZ1R0ZVpuajNYMjVEaGdwWlpYc0M0RDB5ZEljcmxBNndOVUluT1JML0w5ekJiVEVJTUFWTUdvNmc3VUtBbWIyTUY2QUhibmhZSmQ5ZWlrdXBWTldTaEhOWU5jNEdCZE8xWU42QWZVcXZKaEhiZTNWNFNOTVBtQlJFS0pQVno3VGh3Z21nZ1RlOFdzMkswL3dzcXYyd1NFN3BiQ0JzVVpoSVg1MWJaTTNwcUR3SlBUbVJGRXZ0MC82dEc1ZU84RjNqMTRPWHFmRWhtam4xVnZ4S0RZUU9MWkF4Q3d3Z0MwUDRDZGZXdjN5OFBTUjhJMzU0aE8xWStHek5qdklxWDM4TktMeXd1SVlIRmVyT3hObHhFTUJ2RmhZQnVSdVlBa2tnVWFQcU42VUJoc0lMcnNDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNDb1JIaGl5Tm5iblhSV0lMNlpCWG9CWDlZVE1COEdBMVVkSXdRWU1CYUFGQ0FvVUNFYnBGcGI2RlBMblozRjVQeHNMM29mTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFDUUZhZkpJMS81V2c5Q0VFaW1FMVJQNTRSZ1F3VE5UT09Rc0xBQ1RlK3JJdGxGUXpDOVpEaHJWODI4eVg3anp5K0FBc3AzaXpLN1QxdGgyZGw3bSt0dTBzdzJQYS9vbGMwMm50NlB5SXczNDhnYUh6aEkxKzBLRTQ1cXh2RkRlTDJsTXhiUGZDWXZ5RUVhWXpqaVFFTFU1OTUxcFhHV3lLTWEvNGZMdE8rWktPWGhNdVZlcTRyWERQSTU0VzZKSE9pQWFpS2Rpdys1ZTNjMmt0L2pGSVF0TTZ2TVhnOUxORnpkakVUTnQyMFZYOVFldlJwRlpmdWNNRzl3Q2FRRG9GbFB6cFRNSktoUGV2L2ltSm1aWWhLZnIwbExjZW10cWpJeExBb3FaZE9ZZkhCZzYrdkFjZFBJL2lhdUdwVUF2N1grVUtObUR3aloyQmFINHNMd2hCMm0iLCJNSUlEU0RDQ0FqQ2dBd0lCQWdJVVVjbU1YelJJRk9nR1RLMFRiM2dFdVpZWmtCSXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFEbTU1NWJXWTlXVyt0T1kwcklXSGxkaCthTmFub0NaQ0ZoN0drM1laclFtUFV3MGhrU0c2cVlIUXRQK2ZaeVMzM1ZFcnZnK0JRcW5tdW1nTmhmeEZya3dFWkVMZWlkQmNDOEM0QWc0bnFxaVBXcHpzdkkxN05jeFlsSW5MTkxGY1pZLytnT2lONlpPVGloTzUvdkJaTWJqOXJpYUFjcWxpWW1OR0pQZ1RjTUdhRUF5TXpFTU55Mm5tNkVwK3BqUDVhRjZnaTIxdC9VUUZzdUoxajJSai95bk0vU2RSdCtlY2FsNU9Zb3R4SGtGYkw5dnZ2MkEyT3Y1SVRaQ2x3NGJPUzlucHlwUWltT1o1UUFZeXRtWWFRcFdsL3BNWXo2elNqOFJxa1ZETkVKR3FOZlRLQTJpdkxZd1g2bFN0dE1QYXBnMEo4NGw5WDB2b1ZOL0ZwUzRWQ1ZBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlFnS0ZBaEc2UmFXK2hUeTUyZHhlVDhiQzk2SHpBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBWU16Z0xySkxJcjBPb3ZRbkFaclJJR3VhYmlIU1VLU21iTFJXcFJrV2VBdHNDaERFSHBYY0ovYmdETktZV29IcVE4eFJVakI0Q3llcFlldmMzWWxyRzhvN3pIeHBmVmNhb0w1U2V1Smt6SHhLbjRiVGFTcDkrTXZ3YW1ucDY0a1pNaU5iRkxrbmZQOWtZS29SSGtNV2hlUkoxVXNQMXo0U2Nta0NlSUxmc01zNnZxb3ZxaldDbEZzSnBCY3NsdVlIV0Y3YkJKMW40UndnK0FURW9wWTRJZ0d2Nlp2d2MrQTlyK0FUMmhxcG9Ta1lvQWwrQU5Zd2dzbE9mOXNKZTBWK1RBOVlZL1VsYUJtUFBUZDAvL3I5d3ZjZVBXWmtQaktvQUMvelVOaGZEYmg0TFY4R0hzM2x5WDJYb21ML0xOYzhKWXp5SWFERWhHUXZlb1BoaC90cjFnPT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZkNBWUFBQUNHVnMrTUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFIWVlBQUIyR0FWMmlFNEVBQUFiTlNVUkJWRmhIcFZkN1ROVjFGRC8zZDU5d2VRU0lnUzlBUUFYY0ZMQVFaaTlmcGVWejF0WS9XVFpyNVd4cGM3VzVrbkxhNWpJM1o4NXNyUzJuTTJzanRXd1pTN0lVSDRINHhDbkVReDREQVpGNzRWN3VzODg1djkvbEluQnZWSi9CNFB2OW51LzVudS81bnZNNTU2ZnpBL1F2MEhiL0lyWDNWRktQbzQ1Y25tNGluVUlXWXdMRlJtWlFVdXdqRkcvTjFpUkhoMUVaME5SVlJ1ZHF0MUJkKzJuU0t5Uy9PaHlzMCtsazNlLzNrUTlxdkQ0WlV0YTRWVlNVdVkwZWlweWlUaEFmb2NvT1JWZ0R1dXczcUtSaUFkM3JiY0V0alRqWUlvZjZXYUhzQ216VlBXQ014K2NnaDh0THFXTUthTVdzVWpMcW8yUnRKSVEwb096bWVycFF1NGVzWmdzT05rR3hIN2Qwa2R2VFQxN3M0T01VN1ZJOFpoamdHYU0rQXE5aUVOdThQaWYxdWR6MDdNd3ZLV2Y4R2xWb0NFWTA0UEM1V2RUYVhZRmJSOHZOdkw1KzNLZ2ZiNXhOTXlhOVJhbUppeW5hTWxHVFZ0RmxyNmJhOXUrcHFuRVg0dU11UlJnalNZRWhyTjd1dEZGZTZscWFsN05ma3c1aW1BR0h5blBwYms4Vm1ZMHhzdG5wdGxGQ1ZDWXR6VHVCTjgzUXBNTGpUdGV2ZFB6U1VuSjdlOG1ranhaMzlmWGJLRGZsZFpxYnZVK1RVZ0duQlZGNmZRMmlQSGc0VzE2VVdVd3Z6YmsxNnNNWkUrUG4wcHZ6N0pTZXVBeWVzOGxjcENtYUt1by9wK3FXcjJVY3dJQUhXcnZQMFlFemhYQXRMQWJzc0hocDdpR2FtdnlpalA4cnlxclhVV1g5WG9vd3h5QXVmTkJycDQzUE9CRlhabGtmOE1EUmlxY3B5b3dBd3B1ejJ4K2ZXdnovRHRkZTlzbXN6eWd0Y1I2QzF3YmR6Qmw2T2xxNVdOWVk0b0dhdGhKTXJrVEV4MGpBUlNIQVZzKzVyWWtRTlhiK1FnZlBMc1E2Z1h5SW5zcmVRZm1wbTdSVkZZZkw4Nm4xZmlVT2tZdlNoa1VQeHZidWt6b3k2SzFpaE0xaG8zWHpXNkV2U2ZYQStkcGlXR2FXZCtkb1h6THptR3dLWUZMQ0FzUkFsUEJBaE1sQ0ZYVTd0QlVWUHI4SGdWY0pIV3ErRjAwcGxyK0RNVGRyUDR6dnhZMTFrTk1oeFQrU2VUR2crZDRWNUxRSml0eVVHSk5COFZGWnNqZ1lCWk0vSUkvWENUa2owcXlET3BGMkFWUTE3Q0lqVXAvRG5UMVVrTDVGNWdkaitzUzF3ZzFnRTNnaWdtNjBmQ1h6U25QWGJ5QVBiSVh2K0lEcEUxNlRoYUhJUzlza3lobG1NRTVGM2NmcUFLaHEyQzBFNVBIMWdZYVhhTFBEa1pHMEhESk9uS1dIcDUxSTB6NVNPdXg4ZTFXQXVaemRIUXJUa3A4VG1qWG9JK2xhMHdHWnN6dWJxYk8zaWZRNkEvVzd2VlNZc1YzbVIwSkt3a0tjNFdIaUJrbVI4STNDQ2dJODdvT0w0cXpUNVArUlVKQmVqRU9nQVBLOGhZUHphdE0rZUlUcDJJTzl5VFFtZXJvbVBSeHgxcXhBY3NpbGUvdWJTZUViY1dRR1lFQ2doY0xZMkh5S2pvZ2pIMjVoTXBqcFV2MU91Z2xpNGVoMmVSdzBPMzJiSmpreXVDZ056ZzB2emxZTVNpU3MwdW9vNE1HN2hNT2pDRWFYMXlGRTBuU3ZqQnp1VG5FcEs4Nlo4SW9xRkFJdWJ3OGtnOUFyRWFSRVdTWkkrakg0WGJwNmc5RTlFbkpUM29hUnpETitNVUpCUURIbjU2YThvVW1FQnVzT3hCcy9ONSt0SkViUGtBRkRqOFVHdk9zL0lXdmNTZ2xHQmh2UzcvRlRZZnBXR1lkRFk4ZlBBeFdTQTM1c1RDNHA0K0xtNEFhcUlvUGVRdGZ1Zks2SmgwWmh4bGJzVVhPU21YTmlmRDVaVEFreURvZmJiY2NseG5BOFdOQXF4Q2JSTnlraFh4UXBhRHc2N2ZYVVlic2lHMEtodHYyb2VJdmg4cmhRTVlPY0VBcVhHL2VJK3puZ09jNXl4cjhxODJJQU0xYy9GTEZPcGxxdTVlRlFYck1aekdjVkNqWWJMV0c1STRCVDFldVJybGJ4dE5PdE1pdERERWhMWElJeW5BQXZ1T0VXRTNYM05kQWZ0OTRWZ2FHNDJYSVF0MFpYNlBlQ0UvcVFGZTlySzZIeDdZVTUwS3ZIN2ZXNGZTK3E3S0tCSnhzZ2dCWDVwU0FHaDFqSXJWaDV6UTZ3M1JmYWFoQlhtL2FDYkNaVGpDVUZVVHlXWnFXOXA2Mk1qSlBYVnFPclBnTU80TnY3NEdrZitvd2Z0TlZCRFFuakZKcUhTdzE3cFh2aFdXNUtacWUvUTQ5Ti9VU1RDQVZXb1FYRklIQkhYWGUzRlByVURzdUdEbXRGL2hIS1RIcGVreGhpQU9QSStTSnE2UzZIRjRJOVlXemtCSlRvNDZpVU16V3A4UGlyL1JpZHVMeEtZc1Nrc1Y4dkxsT1F2aEdYMllsUjBPQmhCakMrdS9nRWN2WTBBcEs3WWs0MU54alBTUW5XRkhURjY2VXJqZ2V2QjhDdTVhK2wydllTUlB0dVZEbzczaGhkTVNIblVYN3RUanNWWkd4QWwvV3B0aU9JRVExZ25MMjltWDYvdFIxdG1sa1lqOFc0WCtDU2pXY1VER1kxTnBTL0M3aFNLcWlNTE0vbDJRbVNXWjczRGR6K2dpbzhCQ0VOWVBRNDZxbmt6d1hVYnF2Qmt4alVRc1dmWkZnYnVvM3JBZit3TjdqT085MCt5bng0UGkzTCswbllMMVNjaERVZ0FQNGdQVi83SWQxcSsxSFNobXVHa0lxV1JQZ3l4TUZxUDhIZmpUbmpYd1k1YlFmYkpjdDZPSXpLZ01Ib3RGL0hlMWVnc2F4SFNxRzZ3ZmRtUTV4OE55VEZGcUJjcDJpU293SFIzeWs1KzM2aEY3dlhBQUFBQUVsRlRrU3VRbUNDIn0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDYtMjEiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2LCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ill1YmlLZXkgNSBTZXJpZXMgd2l0aCBORkMgLSBFbmhhbmNlZCBQSU4gKEVudGVycHJpc2UgUHJvZmlsZSkiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlUyRjEwMDAyMDI1MDYyMTAwMiIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTA2LTIxIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3Nn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wNi0xOSJ9LHsiYWFndWlkIjoiYmI4NzhkN2ItY2Y1NC00Nzg0LWIzOTAtMzU3MDMwNDk3MDQzIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiJiYjg3OGQ3Yi1jZjU0LTQ3ODQtYjM5MC0zNTcwMzA0OTcwNDMiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiVHJ1VSBGSURPMiBBdXRoZW50aWNhdG9yIn0sImRlc2NyaXB0aW9uIjoiVHJ1VSBGSURPMiBBdXRoZW50aWNhdG9yIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX3N1cnJvZ2F0ZSJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsic29mdHdhcmUiXSwiY3J5cHRvU3RyZW5ndGgiOjI1NiwiYXR0YWNobWVudEhpbnQiOlsiaW50ZXJuYWwiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFCQUFBQUFRQUNBWUFBQUIvSFN1REFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUYwS1NVUkJWSGdCN04xOWpKN2xmU2Y2QzJ6aUFZOWp4dUFaRDJhaFlDZm5uT2lrb0VRNVN1VklTYzdtbEtwTmxRcm5qelJVY2M1cVNWdXpsVFp3Q2xtcE1RMzBhQk96QmExV0hnbzUydFdNTmpRNjBsaU5EcEZLVHJwdFZwbTIyaW9SSk5MWnM0a2RVbUx3dk5nZWcyY2NEeTltbjk5amhoampsM2w1bnVlK3IvdjZmS1JaMDAxS3NabTVuL3Y2WHIrWHl6N3cwVjkvUFFFQUFBQ05kbmtDQUFBQUdrOEFBQUFBQUFVUUFBQUFBRUFCQkFBQUFBQlFBQUVBQUFBQUZFQUFBQUFBQUFVUUFBQUFBRUFCQkFBQUFBQlFBQUVBQUFBQUZFQUFBQUFBQUFVUUFBQUFBRUFCQkFBQUFBQlFBQUVBQUFBQUZFQUFBQUFBQUFVUUFBQUFBRUFCQkFBQUFBQlFBQUVBQUFBQUZFQUFBQUFBQUFVUUFBQUFBRUFCQkFBQUFBQlFBQUVBQUFBQUZFQUFBQUFBQUFVUUFBQUFBRUFCQkFBQUFBQlFBQUVBQUFBQUZFQUFBQUFBQUFVUUFBQUFBRUFCQkFBQUFBQlFBQUVBQUFBQUZFQUFBQUFBQUFVUUFBQUFBRUFCQkFBQUFBQlFBQUVBQUFBQUZFQUFBQUFBQUFVUUFBQUFBRUFCQkFBQUFBQlFBQUVBQUFBQUZFQUFBQUFBQUFVUUFBQUFBRUFCQkFBQUFBQlFBQUVBQUFBQUZFQUFBQUFBQUFVUUFBQUFBRUFCQkFBQUFBQlFBQUVBQUFBQUZFQUFBQUFBQUFVUUFBQUFBRUFCQkFBQUFBQlFBQUVBQUFBQUZFQUFBQUFBQUFVUUFBQUFBRUFCQkFBQUFBQlFBQUVBQUFBQUZFQUFBQUFBQUFVUUFBQUFBRUFCQkFBQUFBQlFBQUVBQUFBQUZFQUFBQUFBQUFVUUFBQUFBRUFCQkFBQUFBQlFBQUVBQUFBQUZFQUFBQUFBQUFVUUFBQUFBRUFCQkFBQUFBQlFBQUVBQUFBQUZFQUFBQUFBQUFVUUFBQUFBRUFCQkFBQUFBQlFBQUVBQUFBQUZFQUFBQUFBQUFVUUFBQUFBRUFCQkFBQUFBQlFBQUVBQUFBQUZFQUFBQUFBQUFVUUFBQUFBRUFCQkFBQUFBQlFBQUVBQUFBQUZFQUFBQUFBQUFVUUFBQUFBRUFCQkFBQUFBQlFBQUVBQUFBQUZFQUFBQUFBQUFVUUFBQUFBRUFCQkFBQUFBQlFBQUVBQUFBQUZFQUFBQUFBQUFVUUFBQUFBRUFCQkFBQUFBQlFBQUVBQUFBQUZFQUFBQUFBQUFVUUFBQUFBRUFCQkFBQUFBQlFBQUVBQUFBQUZFQUFBQUFBQUFVUUFBQUFBRUFCQkFBQUFBQlFBQUVBQUFBQUZFQUFBQUFBQUFVUUFBQUFBRUFCQkFBQUFBQlFBQUVBQUFBQUZFQUFBQUFBQUFVUUFBQUFBRUFCQkFBQUFBQlFBQUVBQUFBQUZFQUFBQUFBQUFVUUFBQUFBRUFCQkFBQUFBQlFBQUVBQUFBQUZFQUFBQUFBQUFVUUFBQUFBRUFCQkFBQUFBQlFBQUVBQUFBQUZFQUFBQUFBQUFWWW00REtmZWFhSTJsWDZ3c0FvRW5tVGwrZXhtYzNwZjJ0ci9ocm9GcVhmZUNqdi81NkFpcTM1WXBYMmtIQWJlOThNUUVBNU82cEZ6ZW1zV1BYcHNsWHJraEFQUWdBb0dhMnIxdElYN3J1VURzUUFBREl6ZE1ucjBwalI2OU56L3o4cWdUVWl3QUFhaW9xQWFJaVFCQUFBT1FnU3Z4SHBvZlNVeTl0VEVBOW1RRUFOUlVmbnBHYy8yb3JDREFmQUFDb0szMytrQThWQUpBQjh3RUFnRHFLY3YrSHBvYjErVU1tQkFDUWtSM3JUNlRkZzlQYUFnQ0FTaDA0MVpkR1pnYjErVU5tdEFCQVJpYm1ONlNKWnplWUR3QUFWQ0pLL0VlUGJrNzdad2NTa0I4QkFHUm9jVDZBdGdBQW9GZWl6eittKyt2emgzeHBBWURNUlJYQTdzM1RhVWYvaVFRQTBHblI1Ly9vekdBNnNOQ1hnTHdKQUtBaHRBVUFBSjBVZy8zMlRnN3I4NGNHRVFCQXcwUUlzSFBnV09xLy9IUUNBRmd1YS8yZ3VRUUEwRURXQmdJQUsvSFVpeHZUeU15UWd6ODBsQUFBR2l5Q2dEKzkvamx0QVFEQVJVV2Zmd3o0VSs0UHpTWUFnQUtZRHdBQW5FLzArY2ZCUHpZTUFjMW5EU0FVSUQ3VUorYjYwKzBEczJsWEt3Z0FBTXFtengvS3BBSUFDbU0rQUFDVUxTNEZvczgvYnYrQnNnZ0FvRkMzWEhreTNidmxzTFlBQUNpRVBuOUFBQUNGTXg4QUFKb3RTdnhIajI1TysyY0hFbEEyTXdDZ2NERWZJRzRDYnI5Nk51MGNPSllBZ09ZWWJkMzQ2L01IRnFrQUFONWtQZ0FBTkVPVSt6ODBOYXpQSDNnTEZRREFtK0lsWWUva2NIcW05ZEtnTFFBQTh2UG1aN2srZitBOFZBQUFGN1R6NnRsMCs4QXhRUUFBMU56aVdyOFk4Z2R3SVNvQWdBc2FQejZRSnViN3RRVUFRSTB0SHZ6MStRT1hvZ0lBV0pLb0F2akRvY1BwMXF0T0pnQ2dldGI2QWNzbEFBQ1d4ZHBBQUtoVzlQbVBUQSsxcS9RQWxrTUFBS3hJaEFDeE5yRC84dE1KQU9pK3hUNS9hLzJBbFJJQUFDdG1iU0FBOU1aVEwyNU1ZOGV1dGRZUFdCVUJBTEJxRVFUODZmWFBhUXNBZ0E3VDV3OTBrZ0FBNkJqekFRQ2dNNkxFUC9yOG4zcHBZd0xvRkdzQWdZNkpsNVNKdWY1MCs4QnMydFVLQWdDQTVkSG5EM1NUQ2dDZ0s4d0hBSURsaVhML2g2YUc5ZmtEWFNNQUFMcHF4L29UYWZmZ3RMWUFBTGlBQTZmNjBzak1vRDUvb091MEFBQmROVEcvSVUwOHU4RjhBQUE0UjVUNGp4N2RuUGJQRGlTQVhoQUFBRDBSOHdIaVprTmJBQUNrZHA5L1RQZlg1dy8wa2hZQW9PZWlDbUQzNXVtMG8vOUVBb0NTUkovL296T0Q2Y0JDWHdMb05RRUFVQmx0QVFDVUlnYjc3WjBjMXVjUFZFb0FBRlJ1c1MxQUVBQkEwMWpyQjlTSkFBQ29CV3NEQVdpYXAxN2NtRVptaGh6OGdkb1FBQUMxRWtIQWw2NDdsTGF2VzBnQWtLUG84NDhCZjhyOWdib1JBQUMxWkQ0QUFMbUpQdjg0K01mbUc0QTZFZ0FBdFJZaHdLN1dGd0RVbFQ1L0lCY0NBS0QyekFjQW9LNG01dnJiZmY1eCt3OVFkd0lBSUJzeEZ5RG1BMmdMQUtCcSt2eUJIQWtBZ095WUR3QkFWYUxFZi9UbzVyUi9kaUFCNUdadEFzaE1ERmVLRzVkZmJRVUI1Z01BMEN1anJSdC9mZjVBemxRQUFGa3pId0NBYm90eS80ZW1odlg1QTlsVEFRQmtMVjdHOWs0T3AyZGFMMmZhQWdEb3BEYy9ZL1Q1QXcyaEFnQm9GUE1CQUZpdHhiVitNZVFQb0VsVUFBQ05zamdmUUZzQUFDdXhlUERYNXc4MGtRb0FvTEdpQ21EMzV1bTBvLzlFQW9DTHNkWVBLSUVBQUdnOGJRRUFYRWowK1k5TUQ2V0orZjRFMEhRQ0FLQVlFUUxzSERpVytpOC9uUUFvMjJLZnY3VitRRWtFQUVCUnJBMEU0S2tYTjZheFk5ZGE2d2NVUndBQUZDbUNnRCs5L2psdEFRQUYwZWNQbEU0QUFCVE5mQUNBNW9zUy8ranpqMDB4QUNXekJoQW9XcndNVHN6MXA5c0hadE91VmhBQVFIUG84d2Q0S3hVQUFHOHdId0NnT2FMYy82R3BZWDMrQUdjUkFBQ2M0NVlyVDZaN3R4eldGZ0NRb1Rqdzc1MGMxdWNQY0I0Q0FJQUxNQjhBSUI5UjRqOTZkSFBhUHp1UUFEZy9Nd0FBTGlEbUE4UU4wdTFYejZhZEE4Y1NBUFVVZmY0eDNWK2ZQOERGcVFBQVdBTHpBUURxSi9yOEg1MFpUQWNXK2hJQWw2WUNBR0FKM3V3cGJiMXNhZ3NBcUpZK2Y0Q1ZVUUVBc0FJN3I1NU50dzhjRXdRQTlKQzFmZ0Nyb3dJQVlBWEdqdytraWZsK2JRRUFQZkxVaXh2VHlNeVFnei9BS3FnQUFGaWxxQUw0MG5XSDB2WjFDd21Bem9vKy94andwOXdmWVBVRUFBQWRZbTBnUU9kRW4zOGMvR01qQ3dDZElRQUE2TEFJQVhhMXZnQllQbjMrQU4wakFBRG9BbXNEQVpZdnl2MGZtaHB1My80RDBIa0NBSUF1aWlEZ1Q2OS9UbHNBd0VYbzh3Zm9EUUVBUUErWUR3RHdkbEhpUDNwMGM5by9PNUFBNkQ1ckFBRjZJSVpZeGMzV3I3YUNBUE1CQUZLN3p6OXUvZlg1QS9TT0NnQ0FIak1mQUNpWlBuK0E2Z2dBQUNxeVkvMkp0SHR3V2xzQVVJUTQ4TytkSE5ibkQxQWhMUUFBRlptWTM1QW1udDFnUGdEUWFJdHIvYUxjSDRCcUNRQUFLclk0SDBCYkFOQTArdndCNmtVTEFFQ05SQlhBN3MzVGFVZi9pUVNRSzJ2OUFPcEpBQUJRUTlvQ2dCeEZuLy9JOUZDYW1POVBBTlNQQUFDZ3hoYmJBZ1FCUUowdDl2bnZiMzBwOXdlb0x3RUFRTTFaR3dqVTJWTXZia3hqeDY2MTFnOGdBd0lBZ0V4RUVQQ2w2dzZsN2VzV0VrRFY5UGtENUVjQUFKQVo4d0dBS2tXSi8ralJ6V24vN0VBQ0lDOENBSUJNUlFpd3EvVUYwQ3VqclJ0L2ZmNEErUklBQUdUTWZBQ2dGNkxjLzZHcFlYMytBSmtUQUFBMFFNd0ZpUGtBMmdLQVRvb0QvOTdKWVgzK0FLa1pCQUFBRFdJK0FOQUordndCbW1sdEFxQXhubnBwWS91bTd2YXJaOVBPZ1dNSllMbkdaemUxcC92cjh3ZG9IaFVBQUExbFBnQ3dITkhuLytqTVlEcXcwSmNBYUNZVkFBQU45V2J2YnV1bFhsc0FjQ0g2L0FIS29RSUFvQkE3cjU1TnR3OGNFd1FBYlZIaUgrWCsxdm9CbEVNRkFFQWh4bzhQcEluNWZtMEJRSHJxeFkxcFpHYkl3UitnTUNvQUFBb1VWUUIvT0hRNDNYclZ5UVNVSS9yOFk4Q2ZjbitBTWdrQUFBcG1iU0NVSVc3NlI2YUgycHRDQUNpWEFBQ0FkZ2dRYXdQN0x6K2RnT2JRNXcvQTJRUUFBTFJaR3dqTkV1WCtEMDBOdDZmOEEwQVFBQUR3RmhFRS9PbjF6MmtMZ0V3ZE9OV1hSbVlHOWZrRDhEWUNBQURPeTN3QXlFdVUrSThlM1p6Mnp3NGtBRGdmYXdBQk9LOFlGall4MTU5dUg1aE51MXBCQUZCZjBlY2YwLzMxK1FOd01Tb0FBTGdrOHdHZ252VDVBN0FjQWdBQWx1eVdLMCttZTdjYzFoWUFGWXNELzk3SllYMytBQ3lMQUFDQVpUTWZBS3F4dU5Zdnl2MEJZTG5NQUFCZzJXSStRTnc4M243MWJObzVjQ3dCM2FmUEg0RFZVZ0VBd0txWUR3RGRGWDMrY2ZCWDdnL0FhcWtBQUdCVjN1eEZiaDFTdEFWQTU4VFAxc2owVUpxWTcwOEEwQWtxQUFEb3FKMVh6NmJiQjQ0SkFtQ0ZGdnY4OTdlK2xQc0QwRWsrVmFpZEtDTWVjbkNBYkkwZkgwajNITHFoUFNjQVdKNkp1ZjcwdS85NGsxNS95Rmk4eDJxTG82NThzbEE3VWZMNCtJMC9UYnV1T1pLQVBDMjJCZHp4N0xaMFlHRmRBaTR1K3Z6di90a05hYzhMMTdkL2ZvRDhyTC84ZFB2OTlmRWJueld6ZzlwYXMvV21kLzF4Z2hxWmV2V0t0R25OYSttM054MXRwNmZ6cDlla2d3dDlDY2pQWE92bjk4a1hCOUpVNjBDemJkMUM2bDl6T2dHL0VMZjhYejB5bVA3dDlKYjI1eCtRcHgzcjU5SURXdytsSGYxejZhOWZlcWNxT0dyTERBQnFxZi95MTlMWGJqN1krdlhNWVNGS0l2Zk5ETFVQRVVDK1lraWc2aDQ0WS9Ub3RmcjhJWE8zWEhVeTdkcDBwUDFyaUFxZWFJTlR5VU5kcVFDZ2xsNSsvZkwwanN0ZVQ3ZSs4VEM5NFIwdnA1MERzMm5MMmxmU2daZjcybFVCUUg2aUpQSmJyVnVScUFUWXZtNGhRWW1pM0Q4T0NCTnpHMXFmZDVjbElEOVI3dis1YTJmU3Z4eWFmTXZRMjlGam05TS96SzlQVUZjcUFLaTFyOTEwOEcyVHhDTlJqZUZJU3FzZ2J4RUFmT202UTdZRlVJdzNWMmJxRFlhc1JTVmJiTHRackZSZEZEL2pNZnNHNmt3QVFLM2RjdVhKOVBBL2VlNjgvMWw3UC9MTVlQc0dCY2hYelBxSTFnQkJBRTBWSmY2alJ6ZW4vYk1EQ2NoWGxQbmZPM1Q0Z3A5WEVmQzVvS0x1dEFCUWF6RVE2ZFpXQ0hDK0IyMlVFSDkwd3dsdEFaQzVHUEw1dC9NYjJnTURGOXQrb0NuR1p6ZWwrMSs0M3EwL1pDelcrajE0M2ZQdG0vOExEYk45NnNXTmFlell0UW5xVGdVQXRSZUgvMmdGdUpSb0MvakxWdXBxVUNEa0szN2VveHJBL21SeUYzMytqODRNcGdPMjJFQzJvcy8vczIrVSsxOUtsUDRiL0VjT1ZBQlFlM0VyR0QxVzc3bnk1eGY5NzBWWlZxeGVzVFlROGhVLzc5SFdjL0RVdXZRL1hYbksya0N5RXdlQVBhMGIvN2dKUFBiYTJnVGthV2ZyMEI5ci9XNVpRbVZhVlByODlZbDNKc2lCQ2dDeWNPNWF3RXM1OHdLMlZSQUFtVE1mZ0Z4RW4zOGNBcXoxZzd6RmdYLzN0ZE5wZTkrcEpmMzNyZjBqTnlvQXlFS3NCWHlsOVVMMWdmWHpTL3J2eDYzaGIxNTkzSHdBeU56aWZBQnJBNm16NlAzOVY4L2ZrUDdoNUhwci9TQlRaL2Y1YjFyNzZwTC85MFptaHN6NElDc3FBTWpLNHpjK203YXQ0QkFROHdGR2p4ck1Bam1MS29EZG02ZlRqdjRUQ2VvZyt2emo4OFhMUCtRcit2dy9PWERzdkd2OUxzWGFQM0lrQUNBckYxc0xlQ254a0k0WE5ldFpJRy9hQXFoYWxQaVBUQS81UElITXhlZko3c0dwWlIvOEY5MzlzeHNFZ0dSSEFFQjJIcjcrdVNVTlpMbVFBd3ZyMmdPYWJBdUF2QzF1Q3hBRTBDdjYvS0VaNGoxeTE2WWpxM3Fmak5hZnZWUERDWElqQUNBNzhiTC8ySTNQcmppdFhSUVA3dEZqMXdvQ0lHUFdCdElyVWU3L1VPdGwzNkF2eUZlVSs5L1Z1dkh2eEdlR3RYL2t5aEJBc2hOcnd0NXgyZXZwMWxXa3RtRjczMEo3YmVCbGwxMlcvdXVwS3hPUW44VzFnZDk2YVdQN0ptZlQydGNTZE5LQlUzM3BUdzVmMTE3ck4yZWdMR1FwRHY2ZjNuUTAvZEYxejZmM0xIRzYvOFhFWEtuNDdJRWNxUUFnUzh0ZEMzZ3A1Z05BTTVnUFFLZEVpZi9vMGMxcC8reEFBdklWNGZDOVE0Yzc5cmtRNzR5Lys0ODNhUU1pV3lvQXlGS3NCWng5ZFczN0JyOFRZc1ZZL0wyc0RZUzh4ZHJBL2NjM3RmOTZ0VlZDbEN2Ni9POS80WHJEdlNCajI5YWRTbDhjZnFHOTFpL2U4em9sMXY2cEhDVm5LZ0RJMm1vSEFsNkkrUUNRUC9NQldDNTkvcEMvS1BmL2JPdlpIMnY5T3MzYVA1cEFBRURXVnJNVzhGSzBCVUF6YkYrM2tMNTAzU0Z0QVZ4UVBPLzNUZzY3OFlmTTdXd2QraVA0N1ZTTDZMa00vcU1KdEFDUXRhbFhyMmkvMU1jTGZxY3R0Z1hFN2VIQmwvdFVBMENtanIyMnR0MFdFRC9EMjFyUGlrNldncEszNk9IOTgyUFh0TXY5NC9NRXlGTlVnMFpWNkVjM25HZ1BpdTZHcUE1MUtVUVRxQUFnZTUxYUMzZ3AyZ0lnZi9HOHVQM3EyZll0RVdXTFB2K284akxJQy9JMTFIcW0zemQwdUN2dG9HZUw1MFFNL25QN1R4T29BQ0I3blZvTGVDbXhObkRud0d5NkxKMFpOUGJ5NjVjbElDL3h2UGlIayt2YmF3T2pFcUFiMVVQVVcvVDVSN24va3k5ZTdUa09tVnBjNi9mQWRjLzNwTDByS29Xcy9hTXBWQURRQ0xFVzhMRWJmOXF6SGwvekFhQVpyQTBzUnp5M1I2YUgwc1I4ZndMeTFlMCsvM01aL0VmVENBQm9qQjNyVDZRSHRqNmZlaWsrRk80K2RJTzJBTWpjenF0bjJ4T2pCUUhORTZXN1VlNi92L1dsM0IveUZXWCt1ellkNlhxNS83bWlZc2lGRDAwaUFLQlJ1clVXOEZMTUI0RDhXUnZZUEJOei9lMmQzZnAySVYvUjUzL1g1cW4yWU9aZSsyN3JHUkpEUXFGSkJBQTBTamZYQWw1SzlCYnZueDFJbzBldlRVQytJZ2o0dzZIRFhaOHJRdmRFbjMrMGFWbnJCL21LUHY5UERoeHJWMmYxcXR6L1hOYiswVVNHQU5Jb3NjWXBQaVRlYytYUFU2L0ZJTUtvUG9qYncvbFdHQkNEQW9IOFJKZ1hRd0t0RGN4UGxQaC85Y2hnK3JmVFc2ejFnNHp0V0QrWEh0aDZxSDNyMzYyMWZwZGk3UjlOcFFLQXhvbUJnRis3K1dCbGFmR2laMW8zVUYrWkd0WVdBSm1MdG9DZEZkNUFzVFJSZmFYUEgvSldWWi8vdWVMVy81NURON2o5cDVGVUFOQTRMNzkrZVUvV0FsNUtsQkhIMnNBdGExOUpCMTd1YTFjRkFQbUpNdksvT2ZGT2F3TnJLc3I5NDBVOVZuUlo2d2Q1aW5ML3oxMDdrLzdsMEdRdGhySEc3QkF0UkRTVkNnQWE2MnMzSGF6TlJPOUlrUGNmMzVUR1p3Y1NrSzk0cHZ6cDljL1pGbEFEOFZ5TjZkeGUwaUZ2dTY0NVVtbWYvN21zL2FQcFZBRFFXTkdEZjl2R2VrenpqcHZERDZ5Zk54OEFNdGNlOXRrSzg4d0hxTTVpbi8vL2VmZzZmZjZRc1NqemorMU5WZmI1bjAvYy9udFBvOGtFQURSV3ZCamVldVhKV3QzVXhXRWhQdWkwQlVEZTR1VXdCZ1ZHeTVGdEFiMHpQcnVwdlpMTHJUL2tLOWI2UFhqZDgrMmIvN3FGcURINGIreVliVTQwbXhZQUdpME8vOUVLVUZmUkVqRCt4bTBpa0tkNHpzU2d3S2p3b1R1aXovL1JtY0Ywd0swY1pDdjYvRC83UnJsL1hWbjdSd2xVQU5Cb1VhNWIxVnJBcFhqUGxhZmFGUUhhQWlCZjhaeUpBWFN4K1NOS1dyVUZkRTY4aU85cDNmakhqZHl4MTlZbUlFK3hTU1hXK2xVOTNmOWlvc0xvcjArOE0wSFRxUUNnOGVxeUZ2QlN6cnpvYmhVRVFPYWlFaUFxQWd3S1hMbm84NCtYY1d2OUlHOXg0Tjk5N1hUYTNuY3ExWm0xZjVSRUJRQ05GejI2cjdSZUlHTUlYNTNGcmVGdlhuM2NmQURJWElSNGZ6dS93ZHJBRllvZTNILzEvQTNwSDA2dXQ5WVBNblYybi8rbXRhK211clAyajVLb0FLQVlqOS80Ykh0cWR5N0dqbDZiUm84YVJBTTVNeDlnNmFMUFA1NTdYc0loWDlIbi84bUJZN1ZhNjNjcDF2NVJHZ0VBeGJqbHlwUHA0WC95WE1wSmZDakZDL0ZUTDIxTVFMNjBCVnhZbFBpUFRBOTV6a0htNGptM2UzQXFtNFAvb3MvOTR5OXB2NlFvQWdDS0V2dG02enlBNWtJT0xLeHJEOEt5TFFEeXR2UHEyZmJObUNCQW56ODBSYnhYN2RwMEpNdjNxMmc1MmpzMW5LQWtBZ0NLRWkvZGo5MzRiSGJwOUtMNG9CbzlkcTBnQURLbUxlQk11ZjlEclpkdUE3Y2dYOUhudnl2elo1bTFmNVRJRUVDS0V1dTYzbkhaNituV0RGUHFzTDF2b2IwMmNNT2EwL3BrSVZPTGF3Ty85ZExHOW8zWnByV3ZwVkljT05XWC91VHdkZTIxZm5NR25VS1dvcy8vMDV1T3BudTNIRTd2cWZsMC80dUpPVXZ4TEliU3FBQ2dPTG1zQmJ3VTh3R2dHVXFZRHhBbC9xTkhONmY5c3dNSnlGZUVsdmNPSGM3K2VXWHdIeVZUQVVCeFlpM2c3S3RyMnpmcE9Zc1ZZL0Y3Mkw3dVZQci9UbDFwYlNCa0tvWlA3VCsrcWYzWHVWWW5YVXowK2QvL3d2V3FsaUJqY2ZDL3IzWHdqNUwvZVAvSVhhejlNL2lQVXFrQW9GaTVEZ1M4RVBNQklIOU5tZytnengveUYrWCtuMjA5azJKNGFWTkVLOUx2UHZkTENVb2xBS0JZT2E0RnZCUnRBZEFNMjljdHBDOWRkeWpMTXR0NER1MmRISGJqRDVuYjljYkJQL2VXeVhNWi9FZnB0QUJRcktsWHIyaS9YTWVMZGxNc3RnWEU3V0g4L243Mjhyb0U1T2ZZYTJ2YmJRRlIwYk90OVl6S29lUTIrdnovL05nMTZhSEo2OUxQWG5sSEF2SVUxWkZSSlJudkV6RTR1VW1pV3RJbENhVlRBVURSbWpJUThFSzBCVUQrSXFqODFWYW9GN2R4ZFJWOS9sRjlGQ0VBa0tkWTZ4ZDkvazFxanp4YjNQcmZjK2dHdC84VVR3VUFSWXVCZ0RtdkJieVVXQnU0YzJBMlhkYjY2OGxYcnpBb0VESVU2L0tpbkQ3V0JrWWxRSjJxbHFMUFA4cjluM3p4NnRiejlMSUU1R2R4cmQ4RDF6M2Y2RzBrNDhjM1dmc0hTUVVBdEtzQUhydnhwNDMrMEF2bUEwQXo3RmgvSXUwZW5LNzBtZVY1QXMyd2MrQlllL0JvVXlzaEYxbjdCNzhnQUlEVXpJR0FGeElmZ250ZTJHcjlEV1F1Wm4zRWkzc3ZnNEFvOFk5eS8vMnRMK1gra0s4bzg5KzE2VWhqeS8zUEZaVktBa3M0UXdzQXBETURBVzl0aFFCTnJ3SUlVVUw4bTFjZlQxdld2cElPdk55bkxRQXlGU0hlMzg1djZGbGJ3TVJjZjdyL2hldmJKYlRLL1NGUDdUNy9MWWZUbmRmT0ZQSE9FNzdiZW5iOVgwY0dFM0NHQ2dCNFEwbFZBR2VMTXQ3UjFoZVFyM2lSMzcxNU91M29QNUU2TGZyODR6bGhyUi9rSy9yOFB6bHdySkZyL1M3RjJqOTRLeFVBOElhb0FvZ1B4ZmRjK2ZOVWtpai9pMUxpcUFUUUZnQjVpa0dCZjMzaW5SMWRHeGdsL2w5dDNacjkyK2t0N2VjamtLZjRqUCtqNFJjYXVkYnZVcXo5ZzdkVEFRQm5hZnBhd0VzNXNMQXU3WG5oZW1zRElYTXhHMkRuS203Nm9pcEluei9rcmJRKy8zTlord2ZucHdJQXp0TDB0WUNYc21udGErMjFnZVlEUU42aVhQOXZUcnh6MmZNQm90dy9YcGoxK1VPK290ei84ME9UNmE3TjA4WDArWi9QeU15UTFpVTREeFVBY0I1ZnUrbGcwUithSVJMei9jYzNwZkhaZ1FUa0s1NWxmM3I5Y3hkOXBzWFBlMHpKOXJJTStTcTV6LzljMXY3QmhRa0E0RHhLSFFoNFB2WjlRek9jYjIxZ2xQaVBIdDJjOWd2NklHdFI1bi92ME9IaUx5OFc3WG4rK2pReDM1K0F0OU1DQU9kUjBsckFTNGtTNGhnY3BDMEE4aFpEUHFPcUowU2IwL2pzcHZaYVA3ZitrSzl0NjA2bEx3Ni9rSGExd3IxT0RQOXNnaGo4OS9YWmF4SndmaW9BNEFMaThCK3RBTHhWdEFTTXR3NFJCZ1ZDdnFJODJJQS95RmVVKzMrMmRlaVBjbi9leXRvL3VEZ1ZBSEFCYzIvY2RKYzZFUEJDM25QbHFYWkZnTFdCa0M4RC9pQmZzZUhqZ2EySGlwM3Vmekd4d1NTR21BSVhKdjZIaTRpK1dMZGtieGZWRWZkdU9keXVrUEFDQWdEZEY1KzNqOTN3MDdSNzgzVHhRLzdPSjI3OXYyVmVFVnlTQ2dDNGlGZ0wrRW9yQVBqQSt2bkUyMFcvWVF3V014OEFBTHBqcUJXNlAzamQ4KzArLzAxclgwMmNuN1Yvc0RTdU51RVN4bzhQcEdkTytrQzVtTnMydnBpZXVPbmdtU0ZFYmlVQVlOV2l6ejgrVngrLzhWblZkcGNRdC8rMkZjSFNDQUJnQ2FLbmpFdUxGV09QdFY1VW9pb0FBRmlaK0J4OTR1WUQ3YzlWd2ZxbDdYbGhhd0tXUmdBQVN4QWxaUk56OXNrdXhkbnpBWWFzVVFTQUpZdWIvb2V2ZjY3OU9lcmd2elN4OXM5UVlsaTZ0UWxZa3VndGl3OW1IOGhMRTBGQXRBWEVCL1Bvc1d1dERRU0FDNGpBUE1yOVZkQXQzOWd4Vlpxd0hJWUF3aExGV3NCM1hQYTZ0WURMdEwxdklkMjI4YVcwcnZWblp6Z1BBUHhDOVBsL2V0UFI5bzMvZS9wT0paYkgyajlZUGkwQXNBeXhGbkRTVGZheTlWLytXcnVQTWRvQzNHNEFRRW83MXMrMUIvenA4MStaZUI4Yk02TUpsazBBQU1zUVZRQStiRlp1Y1Q1QTlEZWFEd0JBaVJiNy9CL1llcWo5dWNqS2VCK0RsUkVBd0RMRm1obHJBVmNuWG41aVBzQzlRNGNGQVFBVUljcjk3OW84M1Q3OFcrdTNPZ2RPOVZuN0J5c2tBSUFWc0Jhd00yN2IrR0w3UldqbndHd0NnS2FLQVgreDF1LzJnV09KMWJ2L3NMVi9zRklDQUZpQkdHWW5lZTZNS0gvY3ZYbktmQUFBR2lkdSt1UHpUWjkvNThSMklmT1lZT1dzQVlRVkdwa2VURHY2VC9oQTc1REYrUUMzWEhuUzJrQUFzaGJ0YmZjTkhWYnEzMkh0d1gvVy9zR3FxQUNBRllxQmdPT3pteEtkRlcwQk1SOGdxZ0xNQndBZ0o0dDkvdkU1NXZEZmVWRjk2ZllmVmtjQUFLdGdMV0QzeEZ5QW1BK2dMUUNBSE93Y09LYlB2NHVzL1lQT0VBREFLa1FWd043SjRVUjNMTFlGUlAva3RuV25FZ0RVemVKYXY5MnRtMzl0Z2QzajhBK2RZUVlBckZJTUJJeTFnRXI5dWllQ2dNZHYvR2w3OEkvNUFBRFVnVDcvM3ZudVhML2h5OUFoS2dDZ0EvYk5EQ2E2YjNFK1FLeFRBb0FxUko5L2ZBNDlmdU96RHY4OTh1ak1VQUk2UXdBQUhYQndvYzlBd0I2S2RVcldCZ0xRYS9HNUUzMysxdnIxanJWLzBGa0NBT2lRc2FQWHBMblRmcVI2WlhFK3dHT3RHeGpiQWdEb3BzVSsvL2pjY2ZEdkhXdi9vUFBXYkwzcFhYK2NnRlY3K2ZYTDB5dXRBT0FENitjVHZiTnA3V3Z0alFGYjFyNlNEcnpjbCtaUHIwa0EwQWxSN3YvNW9jbjJhcjh0d3VhZUc1a1phczlhQWpySEVFRG9vUEhqQSszMVAxNFNlaS9tQThRTnpiZGUycGhHVFFvR1lCWGk0UC9KMXVkNWZLYTc4YTlHM1A0Yi9BZWRwMTRaT3N4YXdPcEU4R0krQUFDckVXRnlEUGpUNTErdGtXbUQvNkFiVkFCQWgxa0xXTDNGK1FBNytrK2tmVE5EMWdZQ2NFbmIxcDFxbC9yNy9LNWVEUDZibU85UFFPZGQ5b0dQL3ZyckNlaW9PSURHTFRUMUVDOFNvOGV1RlFRQThEWlI3di9aMW0xL2xQdFREM2M4dTgza2YrZ1NRd0NoQytiZUdFUjNxMXVFV3RqZXQ1QjI5TSsxQndUR3lrWUFDRHRiaC80SHRoNXk2MThqTWNkblltNURBcnJEREFEb2t2MnpBOVlDMXNoaVcwQlVaa1JyQUFEbGlnTi9mQjdzM2p5dHo3OUc0dGIvV3diL1FWZXBBSUF1c1Jhd252clhuRTRmM1hEQzJrQ0FBZzIxd3VBSHIzcys3WW9CZjJzYy9Pdkcyai9vUHRlVDBFV3hGakFHQWxJL3NUYndpZGJ0VDd3RURsbmJDTkJvMGVjZnovdDQ3aXYzcnlkci82QTNCQURRWlhiUzExdXNlWHI0K3Vlc0RRUm9xT2p6ZitMbUErM25QZlcxNTRXdENlZytBUUIwV1pTeVRjeFpaVk5uWjg4SFVBMEEwQXh4MHg4QnJ6Ny8rb3R0UFliMFFtK3NUVURYUlU5YnZJaDRBYW0zQ0FLaVBOVGFRSUI4UlpCNzErYXA5dllYOGpCMlRMVWs5SW9LQU9pQjZHc2JuOTJVeU1QWjh3RUF5TU5pbi8vak56N3I4SitSYUpXY0ZMaER6d2dBb0VkaUxhQVB1THhFdjJpMEJaZ1BBRkJ2TzliUHRRLys4ZHhXYlplUGVDOGFNeXNKZWtvQUFEMHlkM3FORDdrTUxjNEhlS3oxWW1rK0FFQzlMUGI1UDdEMVVQdDVUVjY4RjBIdkNRQ2doMks5amJXQWVkcSticUhkRm5EdjBHRkJBRURGb3R6L3JzM1Q3Y08vdFg1NU9uQ3F6OW8vcUlBQUFIck1Xc0M4eFh5QWVPSGNPVENiQU9pOTZQT1B0WDYzRHh4TDVPdit3OWIrUVJVRUFOQmpzUlpRNHAyM0tEUGR2WG5LZkFDQUhvcWIvbmp1NnZQUFgyemJNUmNKcW1FTklGUmdaSG93N2VnLzRRVW1jNHZ6QVc2NThxUzFnUUJkRW0xWDl3MGRWdXJmRU8zQmY5YitRV1ZVQUVBRllpQ2d0WUROc2JnMk1Lb0N6QWNBNkl6RlB2OTR2anI4TjBkVVFicjloK29JQUtBaTFnSTJUOHdGaVBrQTJnSUFWbWZud0RGOS9nMWs3UjlVVHdBQUZZa3FnTDJUdzRsbVdXd0wrSm9iSzRCbGkrZm1ZemY4Tk8xdTNmeHJrMnNlaDMrb25oa0FVS0VZQ0JockFSMFVteWVDZ0tnR2lFRkg1Z01BWEp3Ky8rYUx6ME5Ea0tGNktnQ2dZdnRtQmhQTnRUZ2ZZSmVwMVFCdkUzMys4WHg4L01abkhmNGJ6dUEvcUljMVcyOTYxeDhub0RLenI2MXRId3pmYytYUEU4MFZMN1lmM2ZCU21qKzlKaDFjNkVzQXBZdDVLVisrL21mcEErdm4wenN1ZXozUlhHNy9vVDVVQUVBTmpCMjlKczJkOXVQWWRHZlBCN0F0QUNoVkJLTFJJaFhQUTVWUnpXZnRIOVNMQ2dDb2daZGZ2enk5MGdvQTRoYUU1dXRmYzdxOU1XREwybGZTZ1pmNzJsVUJBRTBYd2VkZGc5UHQxWDViaEtERkdKa1phczg4QXVyQmxTUFV4UGh4YXdGTEUvTUJIci94cCszK1Y0Q21PcnZQMzVyVXNzUjdqZEovcUJjQkFOU0l0WURsNmIvOHRmU1oxb3R4dEFWNE1RYWFKc3I5NCtEL0dZTlFpelF5UFpTQWVyRUdFR3JFV3NCeUxjNEgyTkYvSXUyYkdiSTJFTWhhZkk3dDJuVEU1MW5CWXZEZnhIeC9BdXJsc2c5ODlOZU5YWVVhaVlOZzNBWlR0bmh4R2oxMnJTQUF5RXFVKzMrMmRkdC8rOEN4Uk5udWVIYWIxa2FvSVVNQW9XYm0zaGdJZDZ0Yms2SnQ3MXRJTy9ybnJBMEVzaEY5L245MDNmTnUvVW1qUjY5TkUzTWJFbEEvWmdCQURlMmZIYkFXa0xlc0RUUWZBS2lyT1BESGMwcWZQeUZ1L2ZmUGJrcEFQYWtBZ0JxeUZwQ3p4ZHJBcUFhd05oQ29rMWpyOTJEcnhqOXUvdU01QlNIVy92M1hVMWNtb0o1Y01VSk54VnJBR0FnSWkySnQ0Qk90VzdaNDJSNnlReHVveU9KYXYzZ2VLZmZuYk5iK1FmMEpBS0RHb29jT3poVmx0ZzlmLzV5MkFLRG5kZzRjUzAvY2ZLRDlISUp6M1hQb2hnVFVtd0FBYWl6V0FrN01XYUhEMjUwOUgyRGJ1bE1Kb0p2aXBqK0N4OTJicC9YNWMxNnh2Y2JVZjZpL3RRbW90ZWlsaXhjdkwxeWNUd1FCajkvNFUyc0RnYTZJZHFPN05rKzE1NURBeFl3ZFU3VUlPVkFCQURVWGFmcTRhYnBjd3RuekFRQldhN0hQLy9FYm4zWDQ1NUtpWmRIdFArUkJBQUFaaUxXQVBsaFppdWpMdFRZUVdJMTRmc1RCMzFvL2xpTGVUOGJNTElKc0NBQWdBM09uMTZTUjZjRUVTN0U0SCtDeDFndThiUUhBVWkzMitjZnpZNHRuQjB2azhBOTVNUU1BTWpFeHY2RzlGdERLSlpacSs3cUZkbHVBK1FEQXhVUzUvMTJEVXlxSFdMWURwL3FzL1lQTXFBQ0FqRmdMeUVyRWZJQzQxVE1mQURqYllwOS9yUFZ6K0djbDdqKzhOUUY1V2JQMXBuZjljUUt5TVBYcUZlMSt6UGRjK2ZNRXk5Ry81blM3ZWlSZTh1ZFByMGtIRi9vU1VLNTRIbng1NjgvYUEvN2VjZG5yQ1pZcnFzdmMva04rdEFCQVpzYU9YdE82MFQxdU1CTXJzamdmWUVmL2liUnZaa2hiQUJSbTI3cFQ2YTdOMDlySldKWDI0RDlyL3lCTEFnRElUQXdFakxXQXlybFpqYmoxaXkvekFhQU1VZTcvMmRibnh1MER4eEtzMXZqeFRiWVRRYWJNQUlBTVdRdElweXpPQjlEL0M4MjFzM1hvano1L2gzODZJZDQvNGowRXlKTUFBRElVVlFCN0o0Y1RkTUppVzhEWGJqclliZzBBbWlISy9CKzc0YWRwOStacGJXTjBqTFYva0RjdEFKQ3BaMzUrbGJXQWRGUUVBUTljOTd5MkFNamNVT3RuK2I2aHd6NGY2RGlEL3lCL0tnQWdZL3RtQmhOMFdyUUZQSEhUd2ZhY0NiZUdrSS9GdFg2UDMvaXN3ejlkWWZBZjVNOGFRTWpZN0d0cnJRV2thK0lBOGRFTkwxa2JDQm1JT1I1ZnZ2NW42UVByNTYzMW95dGlBUEZmbjNobkF2S21BZ0F5RjJzQjUwNzdVYVk3enA0UEVHWEZRTDFFVUJlRFBPUG5WTVVPM2RJZS9IZmM0RDlvQWhVQWtMbVhYNzg4dmRJS0FPTFdCN3FsZjgzcHRITmdObTFaKzBvNjhISmZ1eW9BcUU0RWNuY05UcWU3TmsrM2d6cm9wcEdab2Zic0lTQi9oZ0JDQTR5M1V2bmJOaDVQMjlZdEpPaW1tQSt3WThOY2V3WFVxRW5RMEhQUjUvL0pnV1B0bFg1dS9PbUZ1UDAzK0ErYVE5MHdOTVMrNmFFRXZkQi8rV3ZwTTljY2FiY0ZSTjh4MEJzNzFzKzFCL3g5eG9CT2VzamFZV2dXRlFEUUVOWUMwbXVMOHdFaUJQaksxTEMxZ2RBbDhWemZ0ZW1JNXpzOUYydi9sUDVEczF6MmdZLyt1bEd4MEJCeElIdXNkVHZrWm9ncXhJdmk2TEZyQlFIUUlWSHUvOW5XYlgrVSswTVY3bmgyVzdzRkFHZ09Rd0NoUWVaT3IybXZmN3JWTFJFVjJONjNrSGIwejZYTExyc3MvZGRUVnlaZzVYYTFEdjUvZE4zemJ2MnBUTXg1bVpqYmtJQm1NUU1BR2lhR3Mxa0xTRldpQ21YMzVpbnpBV0NGNHNBZlB6LzYvS2xTZSszZjdLWUVOSThLQUdnWWF3R3BnMWdiR05VQTFnYkMwc1JhdndkYk4vNXg4eDgvUDFDbFdQdW5rZ3VheVJCQWFLQllDN2lqLzRUU1VTb1hhd1BqYTN4Mm9QVjl1Y2w4QURpSFBuL3F4dG8vYURaMXd0QlFkclJUSnpzSFp0UEQxeituTFFET3NyTjE2SC9pNWdNTy85VEtQWWR1U0VCekNRQ2dvV0p0andTZk9sbGNHeGo5emFwVEtGbDgvMGNndG52enRENS9haVcydVpqNkQ4Mm1CUUFhYk96b3RlMVdBQytZMUVrRUFYSDRzVGFRMGtTZi8zMURod1ZnMUZJTUVCNDdwbm9RbWs0RkFEUllwUGpqcHZoU1V6RWI0SW1iRHA0WmVpYWtvc0dpenorK3p4Ky84Vm1IZjJvcjNoZmMva1B6Q1FDZzRXSXRvQTkwNml6V25UM1dPaGlaRDBBVHhmZDFIUHl0OWFQTzRqMWh6T3dnS0lJQUFCcHU3dlNhTkRJOW1LRE96cDRQRUdYU2tMdkZQdi80dnQ3aWU1cWFjL2lIY3BnQkFBV1ltTitRbmpsNWxkSlRhaThPU3RFV1lENEF1WXB5LzdzR3AxUzBrSTJuVHhvYURDVlJBUUNGc0JhUW5NUjhnTWR2L0dtN2J4cHlzTmpuSDJ2OUhQN0p5VU5Ud3drb3g1cXRONzNyanhQUWVGT3ZYdEh1UDMzUGxUOVBrSU4zWFBaNnUyb2xEbFB6cDlla2d3dDlDZW9vdmsrL3ZQVm5hVWYvWFB2N0ZuSVIxVlp1LzZFc1dnQ2dJR05IcjJuZHJCNDNpSXFzTE00SGlKV1crMmFHdEFWUUc5dlduVXAzYlo3V1hrV1cyb1AvclAyRDRnZ0FvQ0F4RUREVy9DaXJKa2R4dXhwZjVnTlF0U2ozLzJ6ck9Ycjd3TEVFdVJvL2J1MGZsTWdNQUNoTVRQcjFnVS9PWWo1QVRGZlhaMDBWZHJZTy9kSG43L0JQenVJOUlOWUVBK1VSQUVDQjlrNGErRVBlemw0YkdLMEIwRzFSNWgvZmI3czNUMnVqSW52Vy9rRzV0QUJBZ1o3NStWWFdBdElJRVFROGNOM3oyZ0xvbXFIVzk5aDlRNGM5TDJrTWcvK2diQ29Bb0ZCN3JmMmhRYUl0NEluVzdXek10NGdERzZ6V20ydjlXdDlYRHY4MGljRi9VRFpyQUtGUU1SRFFXa0NhSmc1cU1TalEya0JXSS9yOEg5aDZLSDFnL1h5Q0pvbEJ3SDk5NHAwSktKY0tBQ2hZckFXY08rMHhRTE9jUFI4ZzFyVEJVa1dBRkFNbTlmblRSTzNCZjhjTi9vUFNxUUNBZ3IzOCt1WHBsVllBNEphTEp1cGZjenI5NXRYSDA1YTFyNlFETC9lMXF3TGdmTnA5L3EzUTZNNXJaOW9CRWpUUnlNeFFld1lRVURaWGYxQzQ4ZFp0d01HRmRRbWE2dXo1QUhDMnhUNy94Mjk4dHQwNkFrMFZ0LzhHL3dGQkFBQ2tmZE5EQ1pydU02MkRYclFGM1BiT0Z4UHNXRC9YUHZqSDk0VnlmNXJPK2w5Z2tRQUFlSE10SURUZDRueUF4MW9IUDlzQ3lyVFk1eDlEL3BUN1U0SlkrNmYwSDFna0FBRGFZaTJnZ1lDVVl2dTZoWFpid0wxRGh3VUJoWWh5LzdzMlQ3Y1AvOWI2VVJKci80Q3plZHNIMnFJL01OWURRVWxpUHNDdVRXWURsT0N1d2FsMCs4Q3hCQ1VaUFhwdCsvTWRZSkVBQUhqVC90a0JWUUFBMEFEdHRYK0NmZUFjM3ZTQk44MmRYcE5HREFRRWdPeU50VzcvaGZyQXVUd1ZnTGVJTlVFR0FnSkF2cXo5QXk1RUFBQzhUZlFNQWdCNXV1ZlFEUW5nZkFRQXdOdkV1aUEzQndDUW4xajdaL0FmY0NFQ0FPQzg5QTRDUUY3aWM5dmFQK0Jpdk4wRDUyVXRJQURrSlQ2MzNmNERGeU1BQUM0bzFnSjZrUUNBK292UDZ6RXpmSUJMRUFBQUYzUm1MZUJnQWdEcXplRWZXQW9CQUhCUkUvTWJyQVVFZ0JwNytxVGh2Y0RTQ0FDQVM3SVdFQURxNjZHcDRRU3dGQUlBNEpKaUxhQ0JnQUJRUDliK0Fjc2hBQUNXWk96b05kWUNBa0NOdEFmL1dmc0hMSU8zZVdCSllpQ2dLZ0FBcUkveDQ5YitBY3NqQUFDV0xDWU1lOUVBZ09yRjUzR3M2d1ZZRGdFQXNDeDdKdzBhQW9DcVdmc0hySVFBQUZpV0dBaG9MU0FBVkNjRy8xbjdCNnlFQUFCWXRyM1dEUUZBWlF6K0ExWktBQUFzVy9RZEdnZ0lBTDBYbjcvbThRQXJKUUFBVnNSYVFBRG9yZmJnditNRy93RXI1KzBkV0pGWUN6aDJaSE1DQUhyRE5oNWd0UVFBd0lxTnQyNGhEaTZzU3dCQWQ4WEIzK0EvWUxVRUFNQ3E3SnNlU2dCQWQrMTVZV3NDV0MwQkFMQXExZ0lDUUhmRjJyK0RDMzBKWUxVRUFNQ3F4VnBBQXdFQm9EdXMvUU02eFJzN3NHcldBZ0pBZDR3YS9BZDBrQUFBNklqOXN3T3FBQUNnZytMZ0g1UC9BVHJGMnpyUUViRVdjTVJBUUFEb0dJZC9vTk1FQUVESHhIb2lBd0VCWVBXcy9RTzZRUUFBZE5TbzJ3b0FXTFY3RHQyUUFEcE5BQUIwVkt3RmRHTUJBQ3NYYS84TS9nTzZRUUFBZEZ6MExCb0lDQURMRjUrZjF2NEIzZUlOSGVnNGF3RUJZR1hpODlQdFA5QXRBZ0NnSzJJdG9CY1lBRmc2YS8rQWJoTUFBRjF4WmkzZ1lBSUFsc2JoSCtnMkFRRFFOUlB6RzZ3RkJJQWwrTzVjdnlHNlFOY0pBSUN1c2hZUUFDN3QwWm1oQk5CdEFnQ2dxMkl0b0lHQUFIQmgxdjRCdlNJQUFMcHU3T2cxMWdJQ3dIbTBCLzlaK3dmMGlEZHlvT3RpSUtBcUFBQjR1eGo4NS9ZZjZCVUJBTkFUWG5BQTRLM2ljOUhnUDZDWEJBQkF6K3lkSEU0QXdCa2owd2IvQWIwbEFBQjZKZ1lDV2dzSUFHY0cvMDNNOXllQVhoSUFBRDIxZDBvVkFBQVkvQWRVUVFBQTlGVDBPNDRlOWRJRFFMbEd6Y1VCS2lJQUFIcHUvK3lBdFlBQUZDa08vdDh5K0Erb2lEZHdvT2RpTGVEWWtjMEpBRXBqS3c1UUpRRUFVSW54NHdNR0FnSlFGR3YvZ0tvSkFJREttQVVBUUVuMnZMQTFBVlJKQUFCVXhscEFBRW9SYS84T0x2UWxnQ29KQUlCS3hWcEFBd0VCYURwci80QTY4TllOVkNyNkljZG5OeVVBYUNwci80QzZFQUFBbGJNV0VJQ21pb1AvbUprM1FFMTQ0d1lxRjJzQlI2YUhFZ0EwamNNL1VDY0NBS0FXWWkyU2dZQUFOTW1CVTMzVy9nRzFJZ0FBYXNOYVFBQ2E1UDdEMXY0QjlTSUFBR29qMWdLNktRR2dDV0x0bjhGL1FOMElBSUJhR1prZU5CQVFnS3kxQi85Wit3ZlVrTGRzb0ZaaUlLQzFnQURrTEtyWjNQNERkU1FBQUdvbjFnSjZjUUlnUjliK0FYVW1BQUJxSjZvQTlrNE9Kd0RJamNNL1VHY0NBS0NXWWlDZ3RZQUE1T1M3Yy8yRzJRSzFKZ0FBYW12ZnpHQUNnRnc4T2pPVUFPcE1BQURVMXNHRlBnTUJBY2lDdFg5QURnUUFRSzJOSGIzR1drQUFhczNhUHlBWDNxcUJXb3VCZ0dOSE5pY0FxS3NZL09mMkg4aUJBQUNvdmZIajFnSUNVRS94K1dUd0g1QUxBUUNRQldzQkFhaWprV21ELzRCOENBQ0FMRmdMQ0VEZHhPQy9pZm4rQkpBTEFRQ1FqYjFUcWdBQXFBK0QvNERjQ0FDQWJFU2Y1ZWhSTDFzQVZHL1U0RDhnUXdJQUlDdjdad2VzQlFTZ1VuSHcvNWJCZjBDR3ZFVURXYkVXRUlDcVdmc0g1RW9BQUdRbjFnSWFDQWhBRmF6OUEzSW1BQUN5WkJZQUFGWFk4OExXQkpBckFRQ1FwVmdMT0RGbjlSSUF2Uk5yL3c0dTlDV0FYQWtBZ0d5TnpBd1pDQWhBejFqN0IrVE9tek9RcmVqREhKL2RsQUNnMjZ6OUE1cEFBQUJrTGRZQ2VpRURvSnZpYzJiTTdCbWdBUVFBUU5iYWF3RzlsQUhRUlQ1bmdLWVFBQURaaTNWTTFnSUMwQTBIVHZWWit3YzBoZ0FBYUFSckFRSG9odnNQVy9zSE5JY0FBR2lFV0F2b2hnYUFUb3ExZitiTUFFMGlBQUFhWTJSNjBGcEFBRHFpUGZqUDJqK2dZYndwQTQwUkF3R3RCUVNnRTZLcXpPMC8wRFFDQUtCUnJBVUVZTFdzL1FPYVNnQUFORXBVQWV5ZEhFNEFzRklPLzBCVENRQ0F4b21CZ05ZQ0FyQVMzNTNyTjFRV2FDd0JBTkJJKzJZR0V3QXMxNk16UXdtZ3FRUUFRQ01kWE9nekVCQ0FaYkgyRDJnNkFRRFFXR05IcjdFV0VJQWxzZllQS0lFM1k2Q3hZaURnMkpITkNRQXVKUWIvdWYwSG1rNEFBRFRhK0hGckFRRzR1UGljTVBnUEtJRUFBR2c4YXdFQnVKaVJhWVAvZ0RJSUFJREdzeFlRZ0F1SndYOFQ4LzBKb0FRQ0FLQUllNmRVQVFEd2RnYi9BU1VSQUFCRmlQN08wYU5lOGdENGhWR0QvNERDQ0FDQVl1eWZIYkFXRUlDMk9QaC95K0Evb0REZWhJRmlXQXNJd0NKci80QVNDUUNBb3NSYVFBTUJBY3BtN1I5UUtnRUFVQnl6QUFES3R1ZUZyUW1nUkFJQW9EaXhGbkJpenNvbmdCTEYycitEQzMwSm9FUUNBS0JJSXpOREJnSUNGTWphUDZCazNuNkJJa1gvNS9qc3BnUkFPYXo5QTBvbkFBQ0tGV3NCdlFnQ2xDR2U5Mk5td0FDRkV3QUF4V3F2QmZReUNGQUV6M3NBQVFCUXVGZ0RaUzBnUUxNZE9OVm43UjlBRWdBQVdBc0kwSEQzSDdiMkR5QUlBSURpeFZwQU4wTUF6UlJyLzh4N0FUaERBQURRTWpJOWFDMGdRTU8wQi85Wit3ZndKbSs3QU9uTVFFQnJBUUdhSmFxNzNQNEQvSUlBQU9BTjFnSUNOSWUxZndCdkp3QUFlRU5VQWV5ZEhFNEE1TS9oSCtEdEJBQUFaNG1CZ05ZQ0F1VHR1M1A5aHJzQ25JY0FBT0FjKzJZR0V3RDVlblJtS0FId2RnSUFnSE1jWE9nekVCQWdVOWIrQVZ5WUFBRGdQTWFPWG1NdElFQm1yUDBEdURodnR3RG5FUU1CeDQ1c1RnRGtJd2IvdWYwSHVEQUJBTUFGakIrM0ZoQWdGL0c4TnZnUDRPSUVBQUFYWVMwZ1FCNUdwZzMrQTdnVUFRREFSVmdMQ0ZCL01maHZZcjQvQVhCeEFnQ0FTOWc3cFFvQW9NNE0vZ05ZR2dFQXdDVkVYK25vVVMrWEFIVTBhdkFmd0pJSkFBQ1dZUC9zZ0xXQUFEVVRCLy85czVzU0FFdmpiUlpnQ2F3RkJLaWZXUHNubkFWWU9rOU1nQ1dLdFlBR0FnTFVnN1YvQU1zbkFBQllCck1BQU9yaG5rTTNKQUNXUndBQXNBeXhGbkJpenFvcGdDckYyaitEL3dDV1R3QUFzRXdqTTBONlRnRXFaTzBmd01wNGd3VllwcmgxR2pkMUdxQVMxdjRCckp3QUFHQUZZaTJnRjFDQTNvcm43cGhaTEFBckpnQUFXSUgyV2tBdm9RQTk1YmtMc0RvQ0FJQVZpdlZUMWdJQzlNYUJVMzNXL2dHc2tnQUFZQldzQlFUb2pmc1BiMDBBckk0QUFHQVZZaTJnR3ltQTdyTDJENkF6QkFBQXF6UXlQV2d0SUVDWHRBZi9XZnNIMEJIZVdBRldLUVlDV2dzSTBCM2p4emU1L1Fmb0VBRUFRQWRZQ3dqUWVmRmNqZWNyQUowaEFBRG9nS2dDMkRzNW5BRG9IR3YvQURwTEFBRFFJVEVRMEZwQWdNNkl3WCtHckFKMGxnQUFvSVAyelF3bUFGYlA0RCtBemhNQUFIVFF3WVUrQXdFQlZzbmFQNER1RUFBQWROalkwV3VzQlFSWUlXdi9BTHJIR3lwQWg4VkF3TEVqbXhNQXl4ZUQvOXorQTNTSEFBQ2dDOGFQV3dzSXNGengzRFQ0RDZCN0JBQUFYV0l0SU1EeWpFd1BKUUM2UndBQTBDWFdBZ0lzWFF6K201anZUd0IwandBQW9JdjJUcWtDQUZnS2cvOEF1azhBQU5CRjBjODZldFJMTGNERmpCcjhCOUFUQWdDQUx0cy9PMkF0SU1BRnhNRi8vK3ltQkVEM2VTTUY2REpyQVFFdUxOYitDVWtCZXNQVEZxQUhZaTJnZ1lBQWIyWHRIMEJ2Q1FBQWVzUXNBSUMzdXVmUURRbUEzaEVBQVBSSXJBV2NtTFBpQ2lERTJqK0Qvd0I2U3dBQTBFTWpNME42WFFHU3RYOEFWZkFXQ3RCRGNkczFidG8xVURoci93Q3FJUUFBNkxGWUMrakZGeWhWUFAvR3pFUUJxSVFBQUtESDJtc0J2ZndDaGZMOEE2aU9BQUNnQXJIMnlscEFvRFJQdDU1NzF2NEJWRWNBQUZBUmF3R0IwancwTlp3QXFJNEFBS0Fpc1JiUVRSaFFDbXYvQUtvbkFBQ28wTWowb0xXQVFPTzFCLzlaK3dkUU9XK2RBQldLZ1lEV0FnSk5OMzU4azl0L2dCb1FBQUJVekZwQW9NbmkrUmJQT1FDcUp3QUFxRmhVQWV5ZE5CZ0xhQ1pyL3dEcVF3QUFVQU14RU5CYVFLQnBZdkNmWWFjQTlTRUFBS2lKZlRPRENhQkpEUDREcUJjQkFFQk5IRnpvTXhBUWFJeDRucGx2QWxBdkFnQ0FHaGs3ZW8yMWdFRDIyb1Avamh2OEIxQTMzaklCYWlRR0FvNGQyWndBY2hhRC85eitBOVNQQUFDZ1pzYVBXd3NJNUN1ZVh3Yi9BZFNUQUFDZ2hxd0ZCSExsK1FWUVh3SUFnQnF5RmhESVVhejlpK2NYQVBVa0FBQ29xYjFUYnRHQXZGajdCMUJ2QWdDQW1vbysydEdqWHFhQlBJd2EvQWRRZXdJQWdCcmJQenRnTFNCUWUrMjFmN09iRWdEMTVxMFNvTWFzQlFSeUVHdi9oSlVBOWVkSkRWQnpzUmJRUUVDZ3JxejlBOGlIQUFBZ0EyWUJBSFYxejZFYkVnQjVFQUFBWkNEV2FrM005U2VBT29tMWZ3Yi9BZVJEQUFDUWlaR1pJVDIyUUczRTg4amFQNEM4ZUpNRXlFVGNzbzJic2czVVJEeVAzUDRENUVVQUFKQ1JXQXZvaFJ1b1dqeUh4c3dtQWNpT0FBQWdJKzIxZ0Y2NmdZcDVEZ0hrU1FBQWtKbFl0MlV0SUZDVnAxdlBIMnYvQVBJa0FBRElrTFdBUUZVZW1ocE9BT1JKQUFDUW9WZ0w2QVlPNkRWci93RHlKZ0FBeU5USTlLQzFnRURQdEFmL1dmc0hrRFZ2amdDWmlvR0ExZ0lDdlRKKzNOby9nTndKQUFBeVppMGcwQXZ4bklubkRRQjVFd0FBWkN5cUFQWk9Hc2dGZEplMWZ3RE5JQUFBeUZ3TUJMUVdFT2lXR1B4bjZDaEFNd2dBQUJwZzM4eGdBdWdHZy84QW1rTUFBTkFBQnhmNkRBUUVPaTZlSythTUFEU0hBQUNnSWNhT1htTXRJTkF4N2NGL3h3MytBMmdTYjRvQURSRURBY2VPYkU0QW5SQ0QvOXorQXpTTEFBQ2dRY2FQV3dzSXJGNDhSd3orQTJnZUFRQkF3MWdMQ0t5VzV3aEFNd2tBQUJyR1drQmdOV0x0WHp4SEFHZ2VBUUJBQSsyZEdqWVFFRmdSYS84QW1zdmJJVUFEUmYrdXRZREFjbzBhL0FmUWFBSUFnSWJhUHp1Z0NnQllzdmJhUDhFaFFLTjVNd1JvS0dzQmdlV0l0WDlDUTRCbTg1UUhhTEJZQzJnZ0lIQXAxdjRCbEVFQUFOQncwZE1MY0RIM0hMb2hBZEI4QWdDQWhvdDFYaE56L1FuZ2ZHTHRuOEYvQUdVUUFBQVVZR1JtU0c4djhEYnhYTEQyRDZBYzNnWUJDbUF0SUhBKzhWeHcrdzlRRGdFQVFDRmlMYUFYZldCUlBBL0d6QWdCS0lvQUFLQVFzUlp3Wkhvd0FRU0hmNER5Q0FBQUNqSXh2OEZhUUNBOTNYb09XUHNIVUI0QkFFQmhyQVVFSHBvYVRnQ1VSd0FBVUpoWUMyZ2dJSlRMMmorQWNna0FBQW8wZHZRYWF3R2hRTzNCZjliK0FSVEwyeDlBZ1dJZ29Db0FLTS80Y1d2L0FFb21BQUFvbExXQVVKYjRlWStmZXdES0pRQUFLRlJVQWV5ZE5BZ01TbUh0SHdBQ0FJQ0N4VUJBYXdHaCtXTHduN1YvQUFnQUFBcTNiMll3QWMxbThCOEFRUUFBVUxpREMzMEdBa0tEeGMrM2VSOEFCQUVBQU5ZQ1FrTzFCLzhkTi9nUGdETzg3UUhRSGdnNGRtUnpBcG9sQnYrNS9RZGdrUUFBZ0xieDFpM2h3WVYxQ1dpR09QZ2IvQWZBMlFRQUFMeHAzL1JRQXByQm1rOEF6aVVBQU9CTjFnSkNNOFRhdi9oNUJvQ3pDUUFBZUl1OVU4TUdBa0xtclAwRDRIeTg0UUh3RnRFM2JDMGc1R3ZVNEQ4QUxrQUFBTURiN0o4ZFVBVUFHV3F2L1JQZ0FYQUIzdTRBZUJ0ckFTRlBzZlpQZUFmQWhmaUVBT0M4WWkyZ2dZQ1FEMnYvQUxnVUFRQUFGeFM5eEVBZTdqbDBRd0tBaXhFQUFIQkJzVVpzWXE0L0FmVVdhLzhNL2dQZ1VnUUFBRnpVeU15UW5tS29zZmo1dFBZUGdLWHdSZ2ZBUlZrTENQVVdQNTl1L3dGWUNnRUFBSmNVYXdFZE1LQis0dWR5ekt3T0FKWklBQURBSmNWYXdKSHB3UVRVaThNL0FNc2hBQUJnU1NibU4xZ0xDRFh5ZE92bjBkby9BSlpEQUFEQWtsa0xDUFh4ME5Sd0FvRGxFQUFBc0dTeEZ0QkFRS2lldFg4QXJJUUFBSUJsR1R0NmpiV0FVS0gyNEQ5ci93QllBVzl3QUN4TERBUlVCUURWR1Q5dTdSOEFLeU1BQUdEWnJBV0Vhc1RQWGZ6OEFjQktDQUFBV0xhb0F0ZzdhUUFaOUpxMWZ3Q3NoZ0FBZ0JXSmdZRFdBa0x2eE9BL2EvOEFXQTBCQUFBcnRtOW1NQUc5WWZBZkFLc2xBQUJneFE0dTlCa0lDRDBRUDJmbWJnQ3dXZ0lBQUZiRldrRG9ydmJnditNRy93R3dldDdZQUZpVkdBZzRkbVJ6QXJvakJ2KzUvUWVnRXdRQUFLemFlT3QyOHVEQ3VnUjBWaHo4RGY0RG9GTUVBQUIweEw3cG9RUjBsbldiQUhTU0FBQ0FqckFXRURvcjF2N0Z6eFVBZElvQUFJQ08yVHMxYkNBZ2RJaTFmd0IwbXJjMEFEb20rcFd0QllUVkd6WDRENEF1RUFBQTBGSDdad2RVQWNBcXROZitDZElBNkFKdmFBQjBsTFdBc0RxeDlrK0lCa0EzK0hRQm9PTmlMYUNCZ0xCODF2NEIwRTBDQUFDNklucVlnZVc1NTlBTkNRQzZSUUFBUUZmRStyS0p1ZjRFTEUycy9UUDRENEJ1RWdBQTBEVWpNME42bVdFSjR1ZkUyajhBdXMxYkdRQmRZeTBnTEUzOG5MajlCNkRiQkFBQWRGV3NCWFN3Z1F1TG40OHhNek1BNkFFQkFBQmRGV3NCUjZZSEUzQitEdjhBOUlvQUFJQ3VtNWpmWUMwZ25NZlRyWjhMYS84QTZCVUJBQUE5WVMwZ3ZOMURVOE1KQUhwRkFBQkFUOFJhUUFNQjRSZXMvUU9nMXdRQUFQVE0yTkZyckFXRTlNYmdQMnYvQU9neGIyRUE5RXdNQkZRRkFDbU5IN2YyRDREZUV3QUEwRk14OGR6Qmg1TEY5MytzeHdTQVhoTUFBTkJ6ZXljTlBxTmMxdjRCVUJVQkFBQTlGd01CclFXa1JESDR6OW8vQUtvaUFBQ2dFbnV0UDZOQUJ2OEJVQ1VCQUFDVmlENW9Bd0VwU1h5L20zOEJRSlVFQUFCVXhscEFTdEVlL0hmYzREOEFxdVd0QzRES3hGckFzU09iRXpTZDdSY0ExSUVBQUlCS2piZHVSUTh1ckV2UVZISHdOL2dQZ0RvUUFBQlF1WDNUUXdtYWFzOExXeE1BMUlFQUFJREtXUXRJVThYYXY0TUxmUWtBNmtBQUFFQXR4RnBBQXdGcEdtdi9BS2dUYjFvQTFJSzFnRFROcU1GL0FOU01BQUNBMnRnL082QUtnRWFJZzM5TS9nZUFPdkdXQlVCdHhGckFFUU1CYVFDSGZ3RHFTQUFBUUszRXVqUURBY21adFg4QTFKVUFBSURhR1hWN1NzYnVPWFJEQW9BNkVnQUFVRHV4RnRBTktqbUt0WDhHL3dGUVZ3SUFBR29wZXFnTkJDUW44ZjFxN1I4QWRlYk5Db0Jhc2hhUTNNVDNxOXQvQU9wTUFBQkFiY1ZhUUFjcWNtRHRId0E1RUFBQVVGdG4xZ0lPSnFnN2gzOEFjaUFBQUtEV0p1WTNXQXRJclgxM3J0L1FTZ0N5SUFBQW9QYXNCYVRPSHAwWlNnQ1FBd0VBQUxVWGF3RU5CS1NPclAwRElDY0NBQUN5TUhiMEdtc0JxWlgyNEQ5ci93RElpRGNwQUxJUUF3RlZBVkFuTWZqUDdUOEFPUkVBQUpBTkJ5N3FJcjRQRGY0RElEY0NBQUN5c25keU9FSFZyUDBESUVjQ0FBQ3lFZ01CclFXa1NqSDR6KzAvQURrU0FBQ1FuYjFUcWdDb2pzRi9BT1JLQUFCQWRxTC8ya0JBcWhEZmQrWlFBSkFyQVFBQVdiSVdrRjZMZy8vKzR3TUpBSExselFtQUxNVmF3TEVqbXhQMGlpMFVBT1JPQUFCQXRzWmJ0N0VIRjlZbDZEWnIvd0JvQWdFQUFGbmJOejJVb052MnZMQTFBVUR1QkFBQVpNMWFRTG90MXY0ZFhPaExBSkE3QVFBQTJZdTFnQVlDMGkzVy9nSFFGTjZXQU1pZXRZQjB5NmpCZndBMGlBQUFnRWJZUHp1Z0NvQ09pb04vVFA0SGdLYndwZ1JBSThSYXdCRURBZWtnaDM4QW1rWUFBRUJqeEpvMkF3SHBoQU9uK3F6OUE2QnhCQUFBTk1xb1cxczY0UDdEMXY0QjBEd0NBQUFhSmRZQ3VybGxOV0x0bjhGL0FEU1JBQUNBeG9uZWJRTUJXWW4yNEQ5ci93Qm9LRzlIQURTT3RZQ3NWRlNQdVAwSG9La0VBQUEwVXF3RmRKQmpPYXo5QTZEcEJBQUFOTktadFlDRENaYks0UitBcGhNQUFOQllFL01ickFWa1NiNDcxMjk0SkFDTkp3QUFvTkdzQldRcEhwMFpTZ0RRZEFJQUFCb3QxZ0lhQ01qRldQc0hRQ2tFQUFBMDN0alJhNndGNUx5cy9RT2dKTjZHQUdpOEdBaW9Db0R6aWNGL2J2OEJLSVVBQUlBaU9PaHhydmgrTVBnUGdKSUlBQUFveHQ3SjRRU0xScVlOL2dPZ0xBSUFBSW9SQXdHdEJTVEU0TCtKK2Y0RUFDVVJBQUJRbEwxVHFnQklCdjhCVUNRQkFBQkZpYjV2QXdITE5tb2VCQUNGRWdBQVVCeHJBY3NWQi85dkdmd0hRS0c4L1FCUW5GZ0xPSFprYzZJOHRrRUFVRElCQUFCRkdqOCtrQTR1ckV1VXc5by9BRW9uQUFDZ1dQdXNnU3ZLbmhlMkpnQW8yZG9FQUlXS3RZQmJybmdsMFh6ZmVuRmpPcmpRbHdDZ1pDb0FBQ2lha3ZBeVBOMEtld0NnZEFJQUFBQUFLSUFBQUFBQUFBb2dBQUFBQUlBQ0NBQUFBQUNnQUFJQUFBQUFLSUFBQUFBQUFBb2dBQUFBQUlBQ0NBQUFBQUNnQUFJQUFBQUFLSUFBQUFBQUFBb2dBQUFBQUlBQ0NBQUFBQUNnQUFJQUFBQUFLSUFBQUFBQUFBb2dBQUFBQUlBQ0NBQUFBQUNnQUFJQUFBQUFLSUFBQUFBQUFBb2dBQUFBQUlBQ0NBQUFBQUNnQUFJQUFBQUFLSUFBQUFBQUFBb2dBQUFBQUlBQ0NBQUFBQUNnQUFJQUFBQUFLSUFBQUFBQUFBb2dBQUFBQUlBQ0NBQUFBQUFTTko4QUFBQUFBQW9nQUFBQUFJQUNDQUFBQUFDZ0FBSUFBQUFBS0lBQUFBQUFBQW9nQUFBQUFJQUNDQUFBQUFDZ0FBSUFBQUFBS0lBQUFBQUFBQW9nQUFBQUFJQUNDQUFBQUFDZ0FBSUFBQUFBS0lBQUFBQUFBQW9nQUFBQUFJQUNDQUFBQUFDZ0FBSUFBQUFBS0lBQUFBQUFBQW9nQUFBQUFJQUNyRTBBQUVBdC9kVzcvLzlVaGE5TURxZHZ2YlF4bGVDMmpTK21lNGNPcHlyODB4Lzlqd2w2U1FVQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBV3dCcENlK3kvLzZadUovRDN3bFlmVGswLzlWV0o1SG4zNHk0bVVUc3pOcDdtNXVmWmZINTZhYXYvUGs1Tm5mbjJoOWV2aHFlbEVjMzE0eHdmVDNYZDlMbFhoOSs3K1FqbzhXY2IzMTZkMmZpTDlkdXVyQ3AvNDlEOUxBTlNQQUFDZ2g5NS82M3NUUy9PakF6OXBCd0kvYnYzNi9XZCswQW9HcHRPUER2NGtrYi8rL3Y0MHZHVW8wVjBiK3RmN2N3YmdMUVFBQU5UU3U3ZmYzUDQxUXBOUGZmTE1MV1lFQXQ5NytvZnRRT0Q3clY4RkFnQUFTeWNBQUNBYmNhUDVrUTk5c1AwVkRrOU90UU9CYno3MTdmUzlaMzZZQUFDNE1BRUFBTm1LOHVhUC8xcDhmYXdkQm54MTlJbFdJUEFETXdRQUFNNURBQUJBSTBRWXNPZSt6N2YvK3NtLy9IWXJEUGlhSUFBQTRDeldBQUxRT0ZFUjhJMC8vdzlwejcyZlQ4TkRnd2tBQUFFQUFBMG1DQUFBK0FVQkFBQ05GMEhBbnozeTVmVHgyejZXQUFCS0pRQUFvQWlMTXdJZWZmakxxZ0VBZ0NJSkFBQW95dnR2ZlcrN0d1RERPejZZQUFCS0lnQUFvRGhSRGZEUWcxOU1kKzY2SXdFQWxFSUFBRUN4N3R6MTZmVDUzWjlMQUFBbEVBQUFVTFRmL3VRbjJsc0NBQUNhVGdBQVFQRmlTOERlQjc2WUFBQ2FUQUFBQUMwZitkQUhWUUlBQUkwbUFBQ0FOMFFsZ01HQUFFQlRDUUFBNEN3eEdQQlRPMzhyQVFBMGpRQUFBTTRSSWNEdzBHQUNBR2dTQVFBQW5HTkQvL3IwMElPR0FnSUF6U0lBQUlEemVQZjJtOXVWQUFBQVRTRUFBSUFMaUZrQVdnRUFnS1lRQUFEQUJVUXJ3Sjc3N2s0QUFFMGdBQUNBaTNqL3JlOU43N3ZsdlFrQUlIY0NBQUM0aER0MzNaRUFBSEluQUFDQVMxQUZBQUEwZ1FBQUFKYmdJeC82WUFJQXlObmFCRURQUFBtWDMwNmxtWnVmVHlmbTV0THcwRkI3cUY1OHZXdjd0dmF2T2ZtTjIvNjM5TlhSSjFxL2wva0VBSkFqQVFBOTk3LzhyNytSY3ZCZi90TTNVeFcrT3ZxMTlpR0RabnBnN3lPSk05cEJ3TGFiV3pmcnY1TGVmOHYvM0E0RjZpeitlWC9qdG8rbHI0OS9Jd0VBNUVnQUFFQWw0aWI5KzgvOHNQMFZocmNNcFR0M2Zib1ZCcnkzL2RkMTlPRWR2eUlBQUFDeUpRQUFvQllPVDA2bEI3NXlwa0lpYnRvLzF3b0Q2aFlFeEREQXFBVFFCZ0FBNU1nUVFBQnE1NXRQZlR0OTR0UC9yTjBTVXplMkFRQUF1UklBQUZCYk1ROGpnb0NvRHFpTHFBSUFBTWlSQUFDQVdvdkQvKzk4N2cvU2p3NzhKTlhCKzI3NTVRUUFrQ01CQUFDMUZ6MzN2My8zRjJvUkFyeDcrODNaclRBRUFBZ0NBQUN5RUNIQUgrNzVrMW9NNE50UzB5MEZBQUFYSXdBQUlCdG5OZ1U4bktyMlAyeTdLUUVBNUVZQUFFQld2alB4OStsN1QvOHdWU25hQUFBQWNpTUFBQ0E3VmE4SDNMSmxTd0lBeUkwQUFJRHNmUCtaSDFaYUJYRGQwR0FDQU1pTkFBQ0FMSDFuNHU5U1ZXd0JBQUJ5SkFBQUlFc3hDNkFxdzdZQUFBQVpFZ0FBa0tYWUNCQmZBQUFzalFBQWdHejk2TUN6cVNyYUFBQ0EzQWdBQU1qV2lmbTVWSlYrQVFBQWtCa0JBQURaMGdJQUFMQjBBZ0FBQUFBb2dBQUFnR3laeGc4QXNIUUNBQUN5VldVTHdOemNmQUlBeUlrQUFJQnNWVmtCY0VJQUFBQmtSZ0FBUUxZMnJPOVBBQUFzalFBQWdHeGR0MlV3VmNIMkFRQWdSd0lBQUxLMG9YOTlldGYybTFNVkJBQUFRSTRFQUFCazZYMjN2RGRWNWFYNWt3a0FJRGNDQUFDeTlPRWR2NUtxOHVNREJ4TUFRRzRFQUFCa1ozaG9LSDM4MXo2V3F2S2pBejlKQUFDNUVRQUFrSjBxRC8vQkNrQUFJRWNDQUFDeUVyZi9kKzc2ZEtyUzk1LzVZUUlBeUkwQUFJQ3NWSDc0Zi9vSENRQWdSd0lBQUxKeDU2NDdLaS8vLzlGQi9mOEFRSjRFQUFCazRlTzNmYXp5Mi8vd045Lzkrd1FBa0NNQkFBQzFGNGYvUGZkOVBsVXRodi9wL3djQWNyVTJBVUNOUmRsL0hXNyt3L2NjL2dHQWpBa0FBS2lsbVBZZnQvN3Z2L1c5cVM2KytaZi9id0lBeUpVQUFJQmFXVnp6Vi9Xd3YzTWRucHhLMzVuUS93OEE1RXNBQUVEbE5xeGZuejc4b1Y5SnYzSGJ4MnAxNDM4MjVmOEFRTzRFQUFEMDFQRFFZTnJRMzUvZXZmM205TzV0TjZmM3RRNzg4ZGQxOTlYUnJ5VUFnSndKQUFCNjZCdFAvUHRVcXVFdFF5bFhUejcxN1hSNGNqb0JBT1JNQUFEUVF6a2Zna3ZtOWg4QWFJTExFd0J3UVhINGQvc1BBRFNCQUFBQUxpQW0vMzk5L0JzSkFLQUpCQUFBY0FFUDczczhuWmliVHdBQVRTQUFBSUR6aU5MLzcwejhmUUlBYUFvQkFBQ2NJMHIvdnpyNlJBSUFhQklCQUFDY0pRNy92M2YzRnhKQXlmclhuRTVBOHdnQUFPQU4wZThmaDM5VC80RzZtRHRkemV0Ni8rV3ZwVklNclgwbFZXSHU5Sm9FdlNZQUFJQTNPUHdEZFRQM1dqV0h4UDdMVlFCMDI5eHJqbUwwbnU4NkFHaDU0Q3VQcEI4ZitFa0NvS3dLZ0MxWFZGVUI0Q2hHNzYxTkFGQ3dLUHQvWk4vajZjbW52cDBBNnFhcVErSzJ2bE9wRkZ1cWFnRjRUUXNBdlNjQUFLQllpejMvYnY2QnVwcXY2SkM0NVlwWFV5bldyNm1tMm1IK2RSVUE5Sjd2T2dDS0ZOUCtmK2R6LzhMaEg2aTF5VmV2U0ZXSUZvQlM1Z0JzWDdlUXFqRDU4anNTOUpvQUFJRGlmUC9wSDdRTy8zOWc0QjlRZTFXV2lXOWIxL3cyZ0cwVkhmNURWZUVPWmRNQ0FFQlJIdDczZVByNitEY1MxWm1ibTB0VjZlL3ZiLzIvWlFRL0cvclhweXBFZFEyZE0vbHFkYS9yMi9vVzBqTS92eW8xMlphMUw2ZXFUTDNpS0VidnFRQUFvQWcvT3ZDVGRFZnIxdC9odjNwemMvT3BLdGNORGFaU25Bazd5TjE4aGJ2aXQ3K2orUlVBdDF6MTgxU1Z5VmRVQU5CN1lpY0FHaTBHL1gxOS9DL1NWMGVmU0ZEVnJYZ1Zob2VHVWhWT1ZCandOTkdCVTMycEtqczJ6TFd1cVZPamJhK3d6ZUhnUW5YL2JpbVhBQUNBeHZxYmliOVBqK3g3VEs5L3pid3dWZDIvaitFdDFSeUtTMUpsaTBjVHpWZTRLejRHQWQ1eTVjbkd0Z0cwZjM5WG5VeFZPTEN3TGtFVkJBQUFORTRNK1h1OGRlUC8vV2QrbU9Cc0pRVUE3OTUrYzZyQ1MvUFZIS2lhS3NyRTUxb2hRRlVUK2VPQTNOUUFZRWQvZFdIVmxBR0FWRVFBQUVBalJObnhkeWIrTGozNWw5OTI4Sys1S29mRVZWVVczMnZSNmxCVnU4UGs1R1Npc3lJRXFHcFYzVzN2ZkRHTkhiMDJOVkdWQVVDVnJSMlVUUUFBUU5aaXVGOGMvR080bjk3amZNUy9xeW9PcUZYZGl2ZmF1N2RWOS90OFFjdE54MFd2ZUZVQndKWXJYbWxrRzhCUTYvZTFvLzlFcXNwQkxRQlV4QllBQUxJV0pkME8vL21wcWs4OFFvZmhMYzNmQlBDdUNvTU9hd0E3citwKzhWM1hIRWxOYyt1VjFiYXFQSE95bklHazFJc0FBSUNzeFlIdWkvZmVuY2pManc0OG02cnkvbHZlbTVydS9iZjhjcXFLTUs3enFqNHN4aHlBdURGdmtzOVVHR3BFb0ROMzJqR01hdmpPQXlCN0gvblFCOU9uZHY1V0loOG41cXZydlMyaERlRGQyMjlLVmZueHdaOGtPbXZxbGJXVkh4aDNiV3BPRlVETU5kaFNZYUJ4VVA4L0ZSSUFBTkFJZCs3NmRCb2VhbjVwZDFQRTdJYXFmSGpIcjZRbWkwR0hWVzA3aU50L0ZRQ2ROM2Q2VGVXSHh0czJ2dGllQlpDN3FHVDRUTVV0RFUzZHFrQWVEQUVFS0VEMDVIYXpMemNPRzFXdlY0dFdnRDMzM1oxKy8rNHZKT3F2MGswQXJlL1Y5OTN5M3NadWkvandoejZZcXZMakF3Y1QzWEZnb2EreW5mV0w3dG84blQ3MzNDK2xuTVU4Z3kwVnR6TUlBS2lTQUFDZ0FFOCs5ZTMwMWRFblVyZThhOXZONld0Zi9YZXBhdSsvOWIzdFZvQ3ZqLzlGb3Q1K2RMQzZHUUFodmxlYUdnRDg1bTBmUzFYNWtmTC9ycG1ZNjA4N0I0NmxLbTNyTzVWMmI1NUtJek41cnRPTTB2LzRxbEwwLzhkYVI2aUtGZ0FBVmkxNmZyODYrclZVQjFvQjhoQVZBRldXaWpkMVprU1UvMWU1QWVCN1R6Y3pWS21EZ3pVWkhMZHpZTGJ5US9SS1JPbi83c0hxTjFSTXpHMUlVQ1VCQUFBZEVSVUdWZloxTDRwV2dJY2UvR0tpL2lZcmJBT0k3NVAzTlhBYlFBUmdWVklCMEQweEI2QXVxK04yRDA2bmJldE9wVnpFNGYvaDY1OUwvWmVmVGxXTFNnNm9rZ0FBZ0k3NTBsY2VTWFVRVTk2clBnaHhhZDk3NWdlcFNuZnV1aU0xU2R6K2YvelhxaXYvUHpOclpEclJQUlB6OVRnODlsLytXbnI0bi93c2l4Qmc4ZkJmZGQ5L2lOTC9nd3MyQUZBdEFRQUFIVk92Vm9BNzJyTUpxSy8vZHFENk9RQk5xZ0tvT3ZUNmJ4WFBkU2pCeEluKzJ1eVBYd3dCZHF5dmJxWG5wZFRwOEIrVS8xTUhBZ0FBT3FvdXJRRGgzeno0UisxU2IrcXBEa1A0N3Ivdjg0MzRIcW42OWovODUrLytYYUs3NnJBTzhHd1JBanl3OVZCN3NuN2RSRER4K0kzUDF1YndIL1lmSDBoUU5RRUFBQjFYbDFhQVdQZjJ6ei9UckRMdkp1bjJlc3FsaU8rUlQrMzhSTXJkbmxhUVViV3FXenBLTVhyMDJsUTNuMmtGQUhIVFBsU0R3L2I2eTArMzF4VkdNRkdIbnY5RlQ1Kzh5dlIvYWtFQUFFREgxYWtWNExjLytZbEdEbnRyaXUvVm9Bb2cya1Z5L2g2SmYvNW9aNmlTL3YvZWlSM3lkV2tET05zdFY1MU1UOXgwc0YwTlVFVVFFQWYvK0wvOXhNMEgwdTBWcjBzOG4yKzl0REZCSFFnQUFPaUtPclVDTktYTXU0bnFzall1dmtkeVhCOFpjeTdxTVBEeU94UEsvM3RwZkhaVHFxdkZhb0I3aHc3M0pBZzQrK0FmLzdmcmRPdS9LRzcrbnhJQVVCTUNBQUM2NWcvMy9FbWx1OTRYYVFXb3IvOWNrNE5qZkkvRStzaWNncUxvKzQ4NUYzWHdOOS85KzBUdjdKOGRxR1VWd0tMb3U3OXQ0NHZ0aW9BSUEyNTc1NHNkRFFQaTBCOS8vL2g3MS9uZ3YyaXNobTBibEd0dEFvQXVpYkxnYUFXNCs2N1BwYXBGSzBEY1V0Wmg4QnkvRUFGUlZBRlVYY0llWW4za293OS9PZjMrM1Yrb1JYQjFNWEg0LzdOSC9uVTd1S2hhL0p6N3VlcXRHQVlZVlFCMUhMNTNybWdOaUs5d1pnM2V1blJnb2ErOURpOUNqUGovbTdwQWIzeUVCakZvY01zVnI3YStYazdiM3JHUWJtMzl2ZW93YTJDcDNQNVROd0lBQUxycTYrUGZTQi9lOFN1MU9PREZEZTl2ZmZwL3IvM2hyalFSek5UaCt5TkVDUEFmSC85MzZmYysvNFYwZUtxZVBlMVI5aDgzLzNVNC9JYzZ6SEVvVVZRQjdCdzRWdXViNzNORlpVQjg3ZWl2NytyQVRuUDdUOTFvQVFDZzZ4N1krMGd0RHQxUjN2M0ZlKzlPMU1zM24vcDJyVUtaT0ZqLzJTTmZydVZnd0UvdC9LMzB0YS8rdTlvYy9zT2Z0MEkrZW0reENvRDZjdnRQSFFrQUFPaTZ4VmFBT3ZqSWh6N1lQa1JSSDNINHI5c1F1Y1VRSUNiczEwR1UvRWQ3d3QxMzNabnFKQVo5L3JnbXd6NUxWUGRaQUtWeiswOGRlV0lBMEJQUkNsQ1hpZTh4TlQzSGllOU45dVJmZmp2VlVYeXZmT09KZjU4K2Z0dkhVaFUyckYvZkRpSCtZK3ZXdnk1dEVtZjd1dHYvU2tVVndNaDBmYXBCK0lXblh0em85cDlhRWdBQTBETjFhZ1hZYzU5V2dEcUpJWEoxQ1lqT0ZkVUFlKzc3L0p0QlFCekt1MjN4NFA4WGYvNGYyaUZFSGJjVFJHWFBrMC9WTTdncFNSd3luemw1VmFJK292Ui83SmpiZitwSkFBQkF6OVNwRlNCdVU3VUMxRXZkRDVPTFFVQWN5dmZjKy9uMGtSMGY3R2dZRUZVcG45cjVpWGFwLzEvOVAvOTNiUS8raXh6KzYyUHYxTEJXZ0JxSjB2L0pDMncyZ0tyWkFnQkFUOVZwSzBBY3NMN3ozYit0N2JUMzBzUXd3TTlGZTBhTkJ0eWRUeHpLUC81ckgydC9oZWlEYjM4ZFBOTVBIMVV1RVhhZG1EOS90VXNjOURmMDk3YzNEdlMzL2w3djNuWnorK2VoN3IvdnM3bjlyNWYyamZPUnpXbjM0RlNpV2tyL3FUc0JBQUE5RjYwQXNXcXQ2dHZOeFZhQTJQdE9QVHcrK2tTNnYzWExucE00eU1kWFNlTHdmM2hTY0ZZbjQ4Y0gwcmErVSttMmQ3NllxRVlFTVNNelpqSlFiMnFGQU9pNXVyVUNSQ1VBOWZETjlzSFNMV2FkbmZuNWZTSlJQeVBUZzByUEt4SXRHUGNjdWtFckJyWG5PeFNBU3RScks4QWQ2VjNieXJyQnJiTXZmZVdSUkgwNS9OZFhiQVdJUTZnUW9QZjJIcjdPbnp0WkVBQUFVSm02YkFVSS8rYkJQNnIxd0xXUzFIa2pRT21pOUYvdmY3M0ZJWFRQQzF2ZFJQZlE2TkZyMDhSOGY0SWNlRElBVUprNnRRTEVBTFovL3BrN0V2VlFwM0NJTStMZlIxMStYcm00Z3d0OTZlNmZLVWZ2aFRqOHg5Ui95SVduQWdDVnFsTXJ3RzkvOGhQcGZiZFV2NTJBZW9WRG5CSC9QZ3oreTRjUW9Qc2Mvc21SSndJQWxhdlRiVzlNb05jS1VBOTFDb2RLRjJYLzhlK0R2QWdCdXNmaG4xeDVHZ0JRT2EwQVhNaTlleDYwRmFCaXFqSHlGaUhBNy83alRRYlVkZEMrbVNHSGY3SWxBQUNnRnJRQ2NENVJHZkovZlBGUHpBT29TUHk1Lzk3ZFgxRDZuN2s0L01kMmdJTUw2eElyRjVVVVVWR3hmM1lnUWE0RUFBRFVobFlBenVmSEIzK1NIdDczZUtMMzlQMDNSNFFBbi92SG05cWw2eXpmZ1ZObktpbWUrZmxWQ1hJbUFBQ2dOdXJXQ3ZERmUrOU8xTU0zbi9xMk12UWVpejl2ZmYvTkU2WHJleWVIdFFRc3cvanNwdlM3ei8yU1B6TWFRUUFBUUszVXFSWGdJeC82WVByVXp0OUsxTU5YUjU4UUF2UkkvRG5IbnpmTjlOUkxHOXN0QWZFckZ4WUgvaWo1SDVrWlROQVVBZ0FBYXFkT3JRQjM3dnAwR2g3eThsY1hRb0R1Yy9ndlF4eHVveEpBTmNENVJhdUVrbithU0FBQVFPM1VxUlVnNWdEc3VVOHJRSjBJQWJySDRiODhVUVZ3eDdQYjBzajBrQ0NnNWVtVFY3WC9QS0pWd3ZwRW1zaDNOUUMxVktkV2dQZmYrbDZ0QURVVGgxU0RBVHNyL2p3ZC9zczFmbnlnM1JZUU45OGxCZ0Z4OEk5eS8vZ3pFSVRRWkFJQUFHcExLd0FYRXlIUkhYZitRYnRpaEpWcnIvcjcvQmNNL0tOOThJMmI3emdFbDlBYUVEZjhUNzI0OGMyRHYzSi9TaUFBQUtDMjRtRDN3RmNlVG5XZ0ZhQ2VZa1hnNzkzOXI5S1BEdndrc1h6eDUvWTduL3NYNmZ2UDFLUGFobnFJZy85aWE4Q2U1N2MyYmxoZzNQYkhZTDg3ZnJJOTdaMGFkdkNuS0FJQUFHcnRPeE4vbi83bXUzK2Y2a0FyUUQxRlVQUTduL3NEY3dHVzZldmpmNUYrLys0dnRQNzhwaE5jeU1UOGhuWTFRSVFCOFdzY25uTVUvOXpSM3ZEcDF1OGpidnRqdFo4ZWYwcTBOZ0ZBelQyNDkrSFc0ZnMvdEcvaHEzYjNYWGVtN3ozOWcvYk5NL1VTL2V0UFB2Vlg2YzhlL3RkcGVNdFE0dndpTVBuU1Z4NXg2OCt5UkZYQTVDc2IyOVVBL1plZlRyZGNPWjkyYkpoTDI5YWRTdHZYTGFTNmlYL2VPUFQvb0hXN1B6RzN3V0VmM2lBQUFLRDJva2M1V2dFZWV2Q0xxUTcrellOLzFMNXhyc3Q4QW40aERyZWYrUFEvUzUvYStZbjAyNjB2UWNBdnhQZHIzUHBIcjcvdlhWWWpEdE5SR1JCZllURVEyTmEzMFByMVpPcGY4MXBQUTRFNDdCOVlXSmVtWG5sSGV1YmtsZW1abjY5MzRJY0xFQUFBa0lYRlZvQ1BmT2lEcVdweHFQem5uN2tqUFRKaUNuMWR4U0Uzdm1kaWVPUEhiL3RZS3QzM24vNUIrdExlUjVUNzB4WG5CZ0loUW9HaEsxNU9XOWEra3JhODQ1VTB0UGJWdFA3eTE5S1dLMTVwLytmbi9ucWh2Ky9jYTJ2YWZ4MkgvTVgvK1NjdnIydi91bmpvZDlpSHBSTUFBSkNOT3JVQy9QWW5QOUU2WVA2ZE11b2FPek5FOHBGMmEwQ3BRVUFjL0I5di9mNTluOUpyN2NQNlFsODYyUHBLQ2s2Z05zUmxBR1Jqc1JXZ0x1Ni83L08xQ0NPNHVNVWdJRm9Ebm56cTI0MWZHM2ltMVA4YjdkVitzU0hCNFIrQVJTb0FBTWhLbEhYSElhNE90N2xhQWZLeUdBU0UzMmg5Ly96bWJmODB2ZS9XWDA1TkViZjlmOVA2K2ZobTYrZERqejhBNXlNQUFDQTdqK3g3UEwzL2x2ZldZc0NiVm9BOHhTRTV2dUo3Nk1NN1BwZyswdnJLTVF5SVEvLzNXdDk3VC83bHQ5UGhLZjM5QUZ5Y0FBQXVvS29TVWJjMnplYjdxalBpOXhOcnpLSUV2dzd1L093ZDZkNHZQdWpuTjBQeE14bmw4dkVWWWNEN1dzRlNoQUh2M241ekxUY0l4RDl2Vk1IOHR3TS9TZis1RlR6NW5nTmdPUzc3d0VkLy9mVUVBTUJiUkFEdzdtMDNwZmZmK3N2dFg5KzFmVnRQWno3RVlmOUhyWU4rM094L3IzWFRIMVVtRHZ3QXJJWUFBQUJnaVNJQWVOZTJtOXUvUnBYQWh2NytORHcwK0dZd3NGZzFjTEhxZ1RqRXo4M050Zjg2RHZrdlRFNm51Zm41MXE5VDdmOHNEdjJUVTFNTyt3QjBuQUFBQUFBQUNtQU5JQUFBQUJSQUFBQUFBQUFGRUFBQUFBQkFBUVFBQUFBQVVBQUJBQUFBQUJSQUFBQUFBQUFGRUFBQUFBQkFBUVFBQUFBQVVBQUJBQUFBQUJSQUFBQUFBQUFGRUFBQUFBQkFBUVFBQUFBQVVBQUJBQUFBQUJSQUFBQUFBQUFGRUFBQUFBQkFBUVFBQUFBQVVBQUJBQUFBQUJSQUFBQUFBQUFGRUFBQUFBQkFBUVFBQUFBQVVBQUJBQUFBQUJSQUFBQUFBQUFGRUFBQUFBQkFBUVFBQUFBQVVBQUJBQUFBQUJSQUFBQUFBQUFGRUFBQUFBQkFBUVFBQUFBQVVBQUJBQUFBQUJSQUFBQUFBQUFGRUFBQUFBQkFBUVFBQUFBQVVBQUJBQUFBQUJSQUFBQUFBQUFGRUFBQUFBQkFBUVFBQUFBQVVBQUJBQUFBQUJSQUFBQUFBQUFGRUFBQUFBQkFBUVFBQUFBQVVBQUJBQUFBQUJSQUFBQUFBQUFGRUFBQUFBQkFBUVFBQUFBQVVBQUJBQUFBQUJSQUFBQUFBQUFGRUFBQUFBQkFBUVFBQUFBQVVBQUJBQUFBQUJSQUFBQUFBQUFGRUFBQUFBQkFBUVFBQUFBQVVBQUJBQUFBQUJSQUFBQUFBQUFGRUFBQUFBQkFBUVFBQUFBQVVBQUJBQUFBQUJSQUFBQUFBQUFGRUFBQUFBQkFBUVFBQUFBQVVBQUJBQUFBQUJSQUFBQUFBQUFGRUFBQUFBQkFBUVFBQUFBQVVBQUJBQUFBQUJSQUFBQUFBQUFGRUFBQUFBQkFBUVFBQUFBQVVBQUJBQUFBQUJSQUFBQUFBQUFGRUFBQUFBQkFBUVFBQUFBQVVBQUJBQUFBQUJSQUFBQUFBQUFGRUFBQUFBQkFBUVFBQUFBQVVBQUJBQUFBQUJSQUFBQUFBQUFGRUFBQUFBQkFBUVFBQUFBQVVBQUJBQUFBQUJSQUFBQUFBQUFGRUFBQUFBQkFBUVFBQUFBQVVBQUJBQUQvdlIwN0VBQUFBQUFRNUc4OXlJVVJBQUFEQWdBQUFBQUdCQUFBQUFBTUNBQUFBQUFZRUFBQUFBQXdJQUFBQUFCZ1FBQUFBQURBZ0FBQUFBQ0FBUUVBQUFBQUF3SUFBQUFBQmdRQUFBQUFEQWdBQUFBQUdCQUFBQUFBTUNBQUFBQUFZRUFBQUFBQXdJQUFBQUFBZ0FFQkFBQUFBQU1DQUFBQUFBWUVBQUFBQUF3SUFBQUFBQmdRQUFBQUFEQWdBQUFBQUdCQUFBQUFBTUNBQUFBQUFJQUJBUUFBQUFBREFnQUFBQUFHQkFBQUFBQU1DQUFBQUFBWUVBQUFBQUF3SUFBQUFBQmdJRFBJOHpTRmJibGNBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiRklET18yXzAiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6ImJiODc4ZDdiY2Y1NDQ3ODRiMzkwMzU3MDMwNDk3MDQzIiwib3B0aW9ucyI6eyJwbGF0Ijp0cnVlLCJyayI6dHJ1ZSwidXAiOnRydWUsInV2Ijp0cnVlfSwibWF4TXNnU2l6ZSI6MjA0OCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6MTAwLCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjEyOCwidHJhbnNwb3J0cyI6WyJpbnRlcm5hbCJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XSwiZmlybXdhcmVWZXJzaW9uIjoxfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTA4LTI2In1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wOC0yNiJ9LHsiYWFndWlkIjoiZDQxZjVhNjktYjgxNy00MTQ0LWExM2MtOWViZDZkOTI1NGQ2IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiJkNDFmNWE2OS1iODE3LTQxNDQtYTEzYy05ZWJkNmQ5MjU0ZDYiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiQVRLZXkuQ2FyZCBDVEFQMi4wIn0sImRlc2NyaXB0aW9uIjoiQVRLZXkuQ2FyZCBDVEFQMi4wIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMwMDAwMzksInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJpc0ZyZXNoVXNlclZlcmlmaWNhdGlvblJlcXVpcmVkIjp0cnVlLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlCekRDQ0FYR2dBd0lCQWdJQkFUQUtCZ2dxaGtqT1BRUURBakJpTVFzd0NRWURWUVFHRXdKVFJURVNNQkFHQTFVRUNnd0pRVlJMWlhsRFFUQXdNU0l3SUFZRFZRUUxEQmxCZFhSb1pXNTBhV05oZEc5eUlFRjBkR1Z6ZEdGMGFXOXVNUnN3R1FZRFZRUURFeEpCZFhSb1pXNTBjbVZ1WkNCRFFTQXdNREF3SUJjTk1UWXdNakkyTURneE1UQTJXaGdQTWpBMU1EQXlNalV3T0RFeE1EWmFNR0l4Q3pBSkJnTlZCQVlUQWxORk1SSXdFQVlEVlFRS0RBbEJWRXRsZVVOQk1EQXhJakFnQmdOVkJBc01HVUYxZEdobGJuUnBZMkYwYjNJZ1FYUjBaWE4wWVhScGIyNHhHekFaQmdOVkJBTVRFa0YxZEdobGJuUnlaVzVrSUVOQklEQXdNREJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCQUpjV3FlQ3hnYTlLSmJGTzJUWmRqY2dydFpBZ2ZpOFRYS3UrdjVsY1I1Y2ViNUdKWXh5b0NqaHVlRVNMM2RkbU1Ja3BHeWhzRUV0ZkZVeUJ3c3lGVkNqRmpBVU1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdDZ1lJS29aSXpqMEVBd0lEU1FBd1JnSWhBTDRUYlAwMHNFTmJURVhHb2FnTTZIa2wyWElEcnhnS2JId293LzlHaWJZVEFpRUF1ZEltN0VHcWZ5YThReWdLY2JrUWZxcndlZlluQnZaS0kweHduL2tLV3g0PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFEd0FBQUE4Q0FZQUFBQTYvTmx5QUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUN4RUFBQXNSQVg5a1g1RUFBQVUwU1VSQlZHaEQ3VnBiYzlOR0ZENjJiTVdPTHppMmt3SjJMcEFXU2d0MElFQnZUMzN0ZEtZejdWdC9ZQjg2dzIvZ3BaMDJoWWRPQWsrRmFTQnBJRGVIMkNXK3l6M2ZhcmVSMDlpeW9rczhqcitaTTlhdXRPdjk5TzNaYzdSUzZLZVZ0UTZkSTRUbDc3bkJtUENvWTB4NDFERW1QT29ZS0E3WG1tMHlhTGpEZFpoQ0ZJdHFzdFFidG9SQjl2dWJjNlJId3RRWlVzNmhFRkdqWmRERHA2OXNTZHRPYVNpcmF4cEZ3bUdLYXNOcEdKdk92NFBNd29GOHVET3MwbG93NkJodHAvUmhzMFUvM0w1Q1VaN1N3UFBkQ20yL3E1S0dlWFNHYURQQm1VU2MzcytuUkxuWmF0T1BLMnMwR1kySWNpODRKdnpyeXgzNmM2L0MwK2hzQ2JlTURuMlFTOUhuODlPaVBDaGh4MkVwek1xQzdFbStGS1JoREJpTFV6Z203QllHVDhVMnF3UERjZEFJbERCSXhpSWFwU2Vpd25DTXVpQVJHR0dzb20zRG9HOC9tcVd2UHl3SXd6SHFnb3dDZ1JGdXNwSzNMazdKMGhGUWgzTkJJUkRDVUxERlN0Nis5SC9DcU1PNW9GUU9oREFVL0hnbUkwdEU3eG90cW5LNFU4QTVoSmtnNER0aEtHZXdndmVLT1ZsRHRQSjZuLzdZM0pjbG9xVkNOakNWZlNjTTVhN2wwN0praHFYbnBiSXdSVERFOGZUNmREb1FsWDBsckh4M3lhTHVLcXNiRG9XRnJidzVVdm51NVZ3Z0t2dEtHREYya2RNL1BNMG9yRzY5cFNneU5iYlZOMjlsTFluc0NkZjZIWmQ5SXd5bDZ1MDJQU2ptWlEzUnM2MTlma3czcDdBd1dhZHd2NUFUYmZ4VTJUZkNlSnBaeUNTRmNncFAvaTZSeG1vYnJDSU14MDgyU3ZJc2tjNlpGOXFnclYvd2hUQVVhclFOK216T2ZKSUJYdXlWS2FWSEtNbVdrSWJqMUVTRXoxWGtWVVFQWm5PaXJWOHErMElZQ3MybUo3dTJXeFp6YWZydTVqeDljNlBZWmFpRDd5cE02bEVxY2x1L1ZQYWNNSlJwc2tMV2xka3BsdGlYMFljZktudE9HSXRzZ1JXNkVOTmxqWE5rNHJyb3c0OEYyL0dPeC9LclhYcFJxblF0UmxZZ3JPQzUzQlNuMHhXUzZxemFWMWZlbzhzWEprVjU4K0NRSHYyMVJST1d2aENMZVZqLzlhSDEyRm5CREZqTXB1alRPVE1LK0xiajBRL0lvdUxzdDFlbmtyUXdsUkFaRmtqQ0g0VUp5YXozVjI0R3lQTzRGbTNRRm4yZ0w2ODNDVHdqREgrcjhWMytjbjZhN3MvbXhRbzlsMG1JZW16Rm1JWXJyWXFaZGVvOHJrVWJ0RVVmWC9Bdit2VFNsejBqRFBHeTdIdjVSRXpXRVAyOHR0MXo2cCtFS0UvL1gxN3V5QkxSZERJbSt2VFNsejBoalBFME9FTkNQcXl3L1UrVnl2VldsNTUyZ044ZTFCcmN0aVpyaU81Y3lySy9zc3F5N0JiZUVPWXBsK0w0V1pDTEViQzh2aWZlQmlDRkhCUzRGbTg1SG0vc3locWlJay94SlBmdDFiVDJoRERlNjl6bFoxcUYwbUdkU3RXNjlGbG5RSnRkdEdkVHVNTjlJL3Z5QXE0Sll4WFZ0UkROODZxcThOdjZEb2NhelpHNkNtaUR0c3ZyUnlvdmNOL2kzWkVIS3JzbWpEdVBGVldoTEh5dzNqTitEZ0swM1dJL1JsOEs5enhTMlJWaDNIR29jWlVUQUFVb0U1TkppaHRNY0IrL2IrekprcG1MSTBGeHE3S3JrU0hiK2NTeUU0bk51ZGVWcW9pcGJvR1hkWnZsUTlHbndxMkxHZkdmYm5CcXdsZzF4UzVGTmtsMVRnN3dmTHZNdm91NmZyNXJqY3Y5WWpUNndQbkhGbCsrTVpNUmJ5dmNxT3dxbHdicEdxL1FaaVEyQ1ZoejUrUEFRT004NElnazJtSzFxbnl6ZXMwSTlJODJhWDRRd1RHdXd4Y0pUYzYzc2VFWGVDNE5GWkR2eHZsUFlQM0lBaGd3Q0paclRXSDl5QUxvSCtkeGJZV1RtQVArQmRsK004Z09yZ2lmQmlDQVZSaldqNndDeUtucllXN0lBbzRKWTRwaE9tSHhPRXZER0U3ankrTlBIbzdqT09GaGhhZUxsbHUvQ1FLRGp0R1dNTDV3dzZNZnRsNU84cVZoTUl3TmFTZkdhZ2ZiS1EyY3EwOFBSdzNEdlJMNWdESGhVY2VZOEtoalRIaTBRZlF2M1d4d3Fad0cwMndBQUFBQVNVVk9SSzVDWUlJPSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzFfUFJFIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiJkNDFmNWE2OWI4MTc0MTQ0YTEzYzllYmQ2ZDkyNTRkNiIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwidXYiOnRydWUsImJpb0Vucm9sbCI6dHJ1ZSwidXNlclZlcmlmaWNhdGlvbk1nbXRQcmV2aWV3Ijp0cnVlLCJ1dkJpb0Vucm9sbCI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZX0sIm1heE1zZ1NpemUiOjIwNDgsInBpblV2QXV0aFByb3RvY29scyI6WzFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjIwLCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjEyOCwidHJhbnNwb3J0cyI6WyJibGUiLCJ1c2IiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fV0sImZpcm13YXJlVmVyc2lvbiI6MzAwMDAzOX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDE5LTAyLTI2IiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJBdXRoZW5UcmVuZCBUZWNobm9sb2d5IEluYy4gQVRLZXkuY2FyZCIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMTgwOTI2MDE5IiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjMuNCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4wLjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMTktMDItMjYifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDE5LTAyLTI2In0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiODVjOGQ0NjkwNjQ3NTkxYjVhYzlmNzU2Y2Q4NzVlOTgwNDYxZmZjNCIsImU1NTg3OGFiMGIwYTU4NGU0YzFhZGQ1NjMzZTE5YzI1ZjA4OTlhMmQiLCI0M2MwZjgwOWIxZDc1NjE2YWExNTJjM2NiYTU3ZDczNDY1MDU3ZjIxIiwiMTFjMDkxMGE5NzgyYmEzZDBiZDhmODZiYmE0OWUyODIzNjVjYzA1YyIsImM5MzZiNjhlZWM4NTgyMzBmZTA3NDY0MzU5YzFiNWMwZDdlZmU0N2QiLCJkMGQ4NDRlZGZmMTE3Yzk3OWEwNWZhNjY4YTMyOTZiY2U2OTY1NTk4IiwiZWQ1YmRiOTYwMTFlM2Q0NTdkODU4YWYzOWUzMGFjNTdjNWFjOTVlNiJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyI4NWM4ZDQ2OTA2NDc1OTFiNWFjOWY3NTZjZDg3NWU5ODA0NjFmZmM0IiwiZTU1ODc4YWIwYjBhNTg0ZTRjMWFkZDU2MzNlMTljMjVmMDg5OWEyZCIsIjQzYzBmODA5YjFkNzU2MTZhYTE1MmMzY2JhNTdkNzM0NjUwNTdmMjEiLCIxMWMwOTEwYTk3ODJiYTNkMGJkOGY4NmJiYTQ5ZTI4MjM2NWNjMDVjIiwiYzkzNmI2OGVlYzg1ODIzMGZlMDc0NjQzNTljMWI1YzBkN2VmZTQ3ZCIsImQwZDg0NGVkZmYxMTdjOTc5YTA1ZmE2NjhhMzI5NmJjZTY5NjU1OTgiLCJlZDViZGI5NjAxMWUzZDQ1N2Q4NThhZjM5ZTMwYWM1N2M1YWM5NWU2Il0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJTZWN1cml0eSBLZXkgYnkgWXViaWNvIHdpdGggTkZDIn0sImRlc2NyaXB0aW9uIjoiU2VjdXJpdHkgS2V5IGJ5IFl1YmljbyB3aXRoIE5GQyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyLCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50IiwicmVtb3RlX2hhbmRsZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJREhqQ0NBZ2FnQXdJQkFnSUVHMEJUOXpBTkJna3Foa2lHOXcwQkFRc0ZBREF1TVN3d0tnWURWUVFERXlOWmRXSnBZMjhnVlRKR0lGSnZiM1FnUTBFZ1UyVnlhV0ZzSURRMU56SXdNRFl6TVRBZ0Z3MHhOREE0TURFd01EQXdNREJhR0E4eU1EVXdNRGt3TkRBd01EQXdNRm93TGpFc01Db0dBMVVFQXhNaldYVmlhV052SUZVeVJpQlNiMjkwSUVOQklGTmxjbWxoYkNBME5UY3lNREEyTXpFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUUMvandZdWhCVmxxYWlZV0VNc3JXRmlzZ0orUHRNOTFlU3JwSTRUSzdVNTNtd0NJYXdTREh5OHZVbWs1TjJLQWo5YWJ2VDlOUDVTTVMxaFFpM3VzeG9ZR29uWFFnZk82Wlh5VUE5YStLQWtxZEZuQm5seXVnU2VDT2VwOEVkWkZmc2FSRnRNamt3ejVHY3oyUHk0dklZdkNkTUhQdHdhejBiVnV6bmV1ZUlFejZUblFqRTYzUmR0Mnpid25lYndURzVaeWJlV1N3Ynp5K0JKMzRaSGNVaFBBWTg5eUpRWHVFMEl6TVpGY0VCYlBOUmJXRUNSS2dqcS8vcVQ5bm1ET0ZWbFNSQ3Qyd2lxUFN6bHV3bit2K3N1UUVCc1VqVEdNRWQyNXRLWFhUa05XMjF3SVdieGVTeVVvVFh3THZHUzZ4bHdRU2dOcGsycVhZd2Y4aVhnN1ZXWkFnTUJBQUdqUWpCQU1CMEdBMVVkRGdRV0JCUWdJdnowYk5HSmhqZ3BUb2tzeUtwUDl4djlvREFQQmdOVkhSTUVDREFHQVFIL0FnRUFNQTRHQTFVZER3RUIvd1FFQXdJQkJqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFqdmp1T01EU2ErSlhGQ0x5QktzeWNYdEJWWnNKNFVlM0xiYUVzUFk0TVlOL2hJUTVaTTVwN0VqZmNuTUc0Q3RZa05zZk5IYzBBaEJMZHE0NXJuVDg3cS82TzN2VUV0Tk1hZmJoVTZrdGhYN1krOVhGTjlOcG1ZeHIrZWtWWTV4T3hpOGg5SkRJZ29NUDRWQjF1UzBhdW5MMUlHcXJOb29MOW1tRm5MMmtMVlZlZTYvVlI2QzUrS1NUQ01DV3BwTXVKSVpJSTJ2OW80ZGtvWjhZN1FSalFsTGZZemQzcUd0S2J3N3hhRjFVc0cvNXhVYi9CdHdiMlgyZzRJbnBpQi95dC8zQ3BRWHBpV1gvSzRtQnZVS2lHbjA1WnNxZVkxZ3g0ZzB4TEJxY1U5cHNteVB6SytWc2d3MmplUlE1SmxLRHlxRTBoZWJmQzF0dkZ1MENDckpGY3c9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFmQ0FZQUFBQ0dWcytNQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUhZWUFBQjJHQVYyaUU0RUFBQWJOU1VSQlZGaEhwVmQ3VE5WMUZELzNkNTl3ZVFTSWdTOUFRQVhjRkxBUVppOWZwZVZ6MXRZL1dUWnI1V3hwYzdXNWtuTGE1akkzWjg1c3JTMm5NMnNqdFd3WlM3SVVINEg0eENuRVF4NERBWkY3NFY3dXM4ODV2OS9sSW5CdlZKL0I0UHY5bnUvNW51LzVudk01NTZmekEvUXYwSGIvSXJYM1ZGS1BvNDVjbm00aW5VSVdZd0xGUm1aUVV1d2pGRy9OMWlSSGgxRVowTlJWUnVkcXQxQmQrMm5TS3lTL09oeXMwK2xrM2UvM2tROXF2RDRaVXRhNFZWU1V1WTBlaXB5aVRoQWZvY29PUlZnRHV1dzNxS1JpQWQzcmJjRXRqVGpZSW9mNldhSHNDbXpWUFdDTXgrY2doOHRMcVdNS2FNV3NVakxxbzJSdEpJUTBvT3ptZXJwUXU0ZXNaZ3NPTmtHeEg3ZDBrZHZUVDE3czRPTVU3Vkk4WmhqZ0dhTStBcTlpRU51OFBpZjF1ZHowN013dktXZjhHbFZvQ0VZMDRQQzVXZFRhWFlGYlI4dk52TDUrM0tnZmI1eE5NeWE5UmFtSml5bmFNbEdUVnRGbHI2YmE5dStwcW5FWDR1TXVSUmdqU1lFaHJON3V0RkZlNmxxYWw3TmZrdzVpbUFHSHluUHBiazhWbVkweHN0bnB0bEZDVkNZdHpUdUJOODNRcE1MalR0ZXZkUHpTVW5KN2U4bWtqeFozOWZYYktEZmxkWnFidlUrVFVnR25CVkY2ZlEyaVBIZzRXMTZVV1V3dnpiazE2c01aRStQbjBwdno3SlNldUF5ZXM4bGNwQ21hS3VvL3ArcVdyMlVjd0lBSFdydlAwWUV6aFhBdExBYnNzSGhwN2lHYW12eWlqUDhyeXFyWFVXWDlYb293eHlBdWZOQnJwNDNQT0JGWFpsa2Y4TURSaXFjcHlvd0F3cHV6MngrZld2ei9EdGRlOXNtc3p5Z3RjUjZDMXdiZHpCbDZPbHE1V05ZWTRvR2F0aEpNcmtURXgwakFSU0hBVnMrNXJZa1FOWGIrUWdmUExzUTZnWHlJbnNyZVFmbXBtN1JWRllmTDg2bjFmaVVPa1l2U2hrVVB4dmJ1a3pveTZLMWloTTFobzNYelc2RXZTZlhBK2RwaVdHYVdkK2RvWHpMem1Hd0tZRkxDQXNSQWxQQkFoTWxDRlhVN3RCVVZQcjhIZ1ZjSkhXcStGMDBwbHIrRE1UZHJQNHp2eFkxMWtOTWh4VCtTZVRHZytkNFY1TFFKaXR5VUdKTkI4VkZac2pnWUJaTS9JSS9YQ1RrajBxeURPcEYyQVZRMTdDSWpVcC9EblQxVWtMNUY1Z2RqK3NTMXdnMWdFM2dpZ202MGZDWHpTblBYYnlBUGJJWHYrSURwRTE2VGhhSElTOXNreWhsbU1FNUYzY2ZxQUtocTJDMEU1UEgxZ1lhWGFMUERrWkcwSERKT25LV0hwNTFJMHo1U091eDhlMVdBdVp6ZEhRclRrcDhUbWpYb0krbGEwd0dac3p1YnFiTzNpZlE2QS9XN3ZWU1lzVjNtUjBKS3drS2M0V0hpQmttUjhJM0NDZ0k4N29PTDRxelQ1UCtSVUpCZWpFT2dBUEs4aFlQemF0TStlSVRwMklPOXlUUW1lcm9tUFJ4eDFxeEFjc2lsZS91YlNlRWJjV1FHWUVDZ2hjTFkySHlLam9nakgyNWhNcGpwVXYxT3VnbGk0ZWgyZVJ3ME8zMmJKamt5dUNnTnpnMHZ6bFlNU2lTczB1b280TUc3aE1PakNFYVgxeUZFMG5TdmpCenVUbkVwSzg2WjhJb3FGQUl1Ync4a2c5QXJFYVJFV1NaSStqSDRYYnA2ZzlFOUVuSlQzb2FSekROK01VSkJRREhuNTZhOG9VbUVCdXNPeEJzL041K3RKRWJQa0FGRGo4VUd2T3MvSVd2Y1NnbEdCaHZTNy9GVFlmcFdHWWREWThmUEF4V1NBMzVzVEM0cDQrTG00QWFxSW9QZVF0ZnVmSzZKaDBaaHhsYnNVWE9TbVhOaWZENVpUQWt5RG9mYmJjY2x4bkE4V05BcXhDYlJOeWtoWHhRcGFEdzY3ZlhVWWJzaUcwS2h0djJvZUl2aDhyaFFNWU9jRUFxWEcvZUkrem5nT2M1eXhyOHE4MklBTTFjL0ZMRk9wbHF1NWVGUVhyTVp6R2NWQ2pZYkxXRzVJNEJUMWV1UnJsYnh0Tk90TWl0RERFaExYSUl5bkFBdnVPRVdFM1gzTmRBZnQ5NFZnYUc0MlhJUXQwWlg2UGVDRS9xUUZlOXJLNkh4N1lVNTBLdkg3Zlc0ZlMrcTdLS0JKeHNnZ0JYNXBTQUdoMWpJclZoNXpRNnczUmZhYWhCWG0vYUNiQ1pUakNVRlVUeVdacVc5cDYyTWpKUFhWcU9yUGdNTzROdjc0R2tmK293ZnROVkJEUW5qRkpxSFN3MTdwWHZoV1c1S1pxZS9RNDlOL1VTVENBVldvUVhGSUhCSFhYZTNGUHJVRHN1R0RtdEYvaEhLVEhwZWt4aGlBT1BJK1NKcTZTNkhGNEk5WVd6a0JKVG80NmlVTXpXcDhQaXIvUmlkdUx4S1lzU2tzVjh2TGxPUXZoR1gyWWxSME9CaEJqQyt1L2dFY3ZZMEFwSzdZazQxTnhqUFNRbldGSFRGNjZVcmpnZXZCOEN1NWErbDJ2WVNSUHR1VkRvNzNoaGRNU0huVVg3dFRqc1ZaR3hBbC9XcHRpT0lFUTFnbkwyOW1YNi90UjF0bWxrWWo4VzRYK0NTaldjVURHWTFOcFMvQzdoU0txaU1MTS9sMlFtU1daNzNEZHorZ2lvOEJDRU5ZUFE0NnFua3p3WFVicXZCa3hqVVFzV2ZaRmdidW8zckFmK3dON2pPTzkwK3lueDRQaTNMKzBuWUwxU2NoRFVnQVA0Z1BWLzdJZDFxKzFIU2htdUdrSXFXUlBneXhNRnFQOEhmalRualh3WTViUWZiSmN0Nk9JektnTUhvdEYvSGUxZWdzYXhIU3FHNndmZG1RNXg4TnlURkZxQmNwMmlTb3dIUjN5azUrMzZoRjd2WEFBQUFBRWxGVGtTdVFtQ0MifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMC0wNS0xMiIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiU2VjdXJpdHkgS2V5IGJ5IFl1YmljbyIsImNlcnRpZmljYXRlTnVtYmVyIjoiVTJGMTEwMDIwMTkxMDE3MDEwIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjEuMSIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4zIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIwLTA1LTEyIn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMC0wNS0xMiJ9LHsiYWFndWlkIjoiZTg2YWRkY2QtNzcxMS00N2U1LWI0MmEtYzE4MjU3YjBiZjYxIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiJlODZhZGRjZC03NzExLTQ3ZTUtYjQyYS1jMTgyNTdiMGJmNjEiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiSURDb3JlIDMxMjEgRmlkbyJ9LCJkZXNjcmlwdGlvbiI6IklEQ29yZSAzMTIxIEZpZG8iLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MiwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MTAsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6MCwiYmxvY2tTbG93ZG93biI6MH19LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjowLCJibG9ja1Nsb3dkb3duIjowfX1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRGRUQ0NBbDJnQXdJQkFnSUpBSUNVVHZrZ3RqNUNNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1GRXhDekFKQmdOVkJBWVRBa1pTTVF3d0NnWURWUVFLREFORVNWTXhDekFKQmdOVkJBc01Ba05UTVNjd0pRWURWUVFEREI1SFpXMWhiSFJ2SUUxMWJIUnBRWEJ3SUVaSlJFOGdVM1ZpWTJFZ1EwRXdIaGNOTWpBd056QTNNVFF6TnpFNFdoY05NekF3TnpBMU1UUXpOekU0V2pCUk1Rc3dDUVlEVlFRR0V3SkdVakVNTUFvR0ExVUVDZ3dEUkVsVE1Rc3dDUVlEVlFRTERBSkRVekVuTUNVR0ExVUVBd3dlUjJWdFlXeDBieUJOZFd4MGFVRndjQ0JHU1VSUElGTjFZbU5oSUVOQk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBdkFLT2VxQzUvcDBEMWlzQ1lLUUpsVlVPckI2STdETG9jdW5FL1JtOGR1R1RieXhRaHQzQ2JGVlR2M04yTHAyZmJqeGxJKzNzT1NHazMzRlRZa1RxeGNkSklySjdTc2tCY1VTTnJmS09hUVQvNktRY1A0Q203Vis2NTVUcStUV3h5eFdRaER5Z3QxNXFvUDdNdUs2YlQ5U3dwQ2pwZktoYU1TbXlRYU1vVWNSQWJMcWR6QkNhYzBoekIrWmUrZ3FKbG5XVjlVYVNJMnJGc1Z1SDRaRTBjUk8rTU9wYUxnTS9zMjQ4bkdHSHAyMmV3U1FmYm5QYUJiYjhpcXlBUCtjdTUyR0xzVXBLUkplYkUrUjYrUE1ROUpDZFdlUVpSM0RrZlNpZGt2M21jYjRqcTFpSXRhK01xS2hSbndyZlhoOTExS1dMbllBbDlFTkNoTFgwYzZTajFRSURBUUFCbzFBd1RqQWRCZ05WSFE0RUZnUVVXTHZoUkJVUG44dUxJZjY4K2d2L05aSXdHU0l3SHdZRFZSMGpCQmd3Rm9BVVdMdmhSQlVQbjh1TElmNjgrZ3YvTlpJd0dTSXdEQVlEVlIwVEJBVXdBd0VCL3pBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQUZMckRoYWVnZUtIeFlqSDNFUDN2VUJLaG56TTIwNkFTeGdlWUNPMkVjOXBPbFlKYWVxRkUrc1VhbVVWL3B3akRscU5hU2dGZ3k3VHdlWWt2T21NbjRxU2NzSHF2SjN6R09BaWFmd2FoMXZVSGZDbFhSOCtheE8yaUdPVUYwSktyWjlZWWpiQWE1LzRIQ2x2N2pGUE9kTVdUT1F5bmdvaUhBczNqa3VZanBDTEZsQjRWT2kzZDF3akExcG5UZEJLa0FiN3Q4blR2dysvWGJGdmNRYTczVkg3c2p2b0JxRDNmZE1mUmN1VnE0cVVadFpUNmNHYWdUSEQ2MVR0cWg5b01DWlhjRGJSMVBHWm5OYnF5Y3NXUERJSzBucG1LMy8zbGZWOGMrWnNyeTZlMTcwbWZKTVpwN084bTZDU3o2L1ZMSyt5REpkNzg0MXdwbWVLVGY2SW5aQT09IiwiTUlJQzZUQ0NBZEdnQXdJQkFnSUpBSmJUeXJ1MVgvSVBNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1DTXhJVEFmQmdOVkJBTU1HRWRsYldGc2RHOGdUWFZzZEdsQmNIQWdSa2xFVHlCRFFUQWVGdzB4T0RBMk1USXhORFExTlRCYUZ3MHlPREEyTURreE5EUTFOVEJhTUNNeElUQWZCZ05WQkFNTUdFZGxiV0ZzZEc4Z1RYVnNkR2xCY0hBZ1JrbEVUeUJEUVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTVZqS0hXcGJEN1RTbE14b2NqVGw2bklmN3gzMlBtc1E5ekd1TEdHcUEwVVFab0lxM1hMekw2TFlVdko1QTVnMHV5RkdsbEhFZkdBS3JFYUNROEZWdlBTL1VoMEZ5ZnpXaFJBemlUU2lqak1JSVZqampVdjltOXZGbWNYU2NnSGlnN09kejg4NThWMGtyTkg5OXFHbTN3amdhT2VyVFdtdCtqWENVZm4wMUlrVFB3eEcySGxnRWQ0NWpOTFNWN1Zvb2wrS2U4RTJraTRsRWtUZUh6Ym91bFI1R1VicDNuTWk3RTQ3Vk1RYTNiTndueldCYnNhQlNTUWhMazNtNUhhS2hoeGE2d0pESzQ3TmlNQ2tDa2RJSHVXU1FMVkFmbTg1VUFPTnRFT1B3aTBPdUszcWJlOHlLT0ZHZjBLaEI1TU1lQXltN01WL000VzBhNDlvZ1BEOXBNQ0F3RUFBYU1nTUI0d0RBWURWUjBUQkFVd0F3RUIvekFPQmdOVkhROEJBZjhFQkFNQ0FvUXdEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBSld6NXhMTWs1V05ZYkFiNnlPeEVDQm9aMldlQi9xbDRWSjNPLzMvdE5zeE9ZbnpMZVdvNTQwelFoOXJBbWF4ejdldW1CbHNrTXE0eUdQU05YQjl5Y1dHSGdrY0NlU3pOMnd2OENJekRCczJvQlpqVE5rNjVMQlpEc3NUT0J0TVcvK3VURkhRZmJ1TzNJU0xoSTBEWGZSRWk5TkRNM2pmazExeEhjc2ZoMlJNVitRZE5md1ZhWlpyQ3Erb3VHK0V2a3Y3S3FxK295dTBWRk0vdHo2OFRHbDZ5bGhQRlIxcWg5d3R0cFZqQU9PQ0VRQ0xxUDJkUDI4bHdZQnlDcUhRcVZId2J1anYvTFpqWm5LVzNMWW5kWml4UFBTUkNKc3NERHdKdmgvZjZuVHhnOVpFKy9KY1lyZTVDYUk4bnpWSGFTT0NqTko3RnpVTEc2NEppV092UTUwPSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFRd0FBQUFnQ0FZQUFBRG5sVVpxQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUVuUUFBQkowQWQ1bUgzZ0FBQUFaZEVWWWRGTnZablIzWVhKbEFIQmhhVzUwTG01bGRDQTBMakF1TWpIeElHbVZBQUFLMUVsRVFWUjRYdTFkRFhBY1pSbStOT0FmS29nNldPMFFjcmVYM083MVI0MW9IZFNxcURBT2czK2NZRVhCb2xYUlRFbjIyMHRhS1RjNjRtZ0JxekJpRVVWcEJkcWl3d2hxU2RJUzJ1cFlTZ3ZSdHBUU2NrbGpXekhhZ2pwU1JkcjR2THR2anJ2azI3dmR2ZDFMam43UHpETjN0L2QrNy90K2Y4Lys3OGFLME5EYWFyMnFPZFhab3FXeUg5UjBhMEZjdDY3V2RIR1Rab2pWQ2NQcVNlalcxb1F1SHNPeS9lQlRzRG1NLzU0WlQ5aitMV0dJZzdEZkIvc0JjRFBzZjRYZlA4WDNiMnVHMVpIUXpVOG1VdUtkeVdUSG01cWFjaS9qSEFLQnlpZjBiQnIrTHdhWElQWVBrTWRxZkw4WGRXcGxzMUFBMzEvUWpPdzk4TDhTOWI4QlhJUjIrbkRjNkRvemxzazBzbG5rUU14a1BHWE85RUp0Vm5ZR0Y0c1V5Vm5kOFVUYWVwOGJ3KzZMYWtCajVpemRiTkpTMXJ4RVdueVd4ZzM2RW1QZFdvUFBEZWpmN2VBVEdNc0hhRHpUdUM2aGJqME4vcFhtQXNydWdzMFdMUDhOdUJKalpKbVdFbGNsMDltUEoxSm1XMHRMNSt1aUhCdUdrWHNsalg4N25pNEV6Vm5rOUF2a3NRbjU3RVNkaHJCOEJNdVBqT1dQLy80T0hzUi9lN0Q4WWRUbGZ0UmhGZmdkTEc5SHUxd0FmenI1NWpBT2tpUUtodlZiR0I2QzAvL2krMmlOZVJ4OEZnbnZSZnhmYWluelNrN05FMGlJVVBiZjQzd1dtTlROZDdCcEtFQTdMWmZGQVk5enAzeVpUU01EaVFWaS9VK1NnNVFZQUlmT21HMmV3c1VqQS9yaFc3TDRCZXJtajloMFVvQjJPQitUWlRXNEIvazhPeUcveUNpT29XMUlZSDZIOFhQejlMYmNLemlsUUdocE1admhaeUhHd0czZzQyQms4NVo4bzkwRzhYME5pU3MxSXYyUUdrOEtkV3N6dDRzbklQOFJxUjltRFFYRElkWlNiQm9aMElsM1MyT1haWFlwRjQ4TVUxNHduSzFiZVc0MXBMM0ZFUUNKbFBWV3RERzJmdXlWck5SM3RCVGRTakI4WXJJRm95VnRubzJPQ3pCZ3hETkJCNnBYS01Id3hpRDlnSzNLYzZQY2t2QkdKUmkrTWNtQzBZRDRmZEs0WG9oOVcvWVRDWlJnZUtOdndjaGtHdEcyZTJXK2Frc2xHTDR4bVlKQmF4bHBUSStrTlJRZG1HUjNvVU1KaGpmNkZRdzZjQ3J6VTN0Q01MRFd1UXNkM1IrQXczS25CUTVLeW5qaGpkeE9ubkRpQ0VadUdqcnNZV2xNSnRwaVdVSzNCbVQvRmZFdWRoZzZVUGU2Rmd6MGJSNmZhNk1tblkza2xEd2hhWWpMVVU2ZXMyN3QwZ3p6bTdWZ1V1OTZENmZrSHhDYTYyVVZHQ01xOGcwMmpSUW5pbUJvUnZZaWFUd20ybnRmVzl2Q2s3VzBkWUhzL3dKMTYzazZlTVp1UTBXOUN3Ykc5SzFzT3FXQXZJVTBYNXRpRFp0TmJTakJjR0VFZ3RIV2Rzdko4RTJuQXVVeGlicDVoV005Mm9EZjJ5YjhYMEt4M3JFTkYwb3dvZ0htMGhKcHZqYVZZUGpDaVNBWWliVDFlV2tzSmliQ2svUG01VTVpYzhyeFFwbGRNUlBwN0hsc0hocVVZRVFESlJnaDRzVXVHSFNSRCtwSVYrVEo0eEgxTEc5ZGpDSFRpTWxSNFZpRzJFN0hSYmhBS0ZDQ0VRMlVZSVNJRjd0Z29KMnowamhNdEhPZWpsMndlUUZZL2xHWmZTbkZmRFlQQlVvd29rSENNQmRMODdXcEJNTVhLZ3FHSVM1dlRwdG5oMFhVKzA1Wm5BSkRGQXpENkRnZC9wNld4bUhHRGZGRk5oK0gwUWIwd2FPeU1tT0UrT1VOSS9jU0xsQTE2bDB3MEY2NzQ3cTRwUnBHY2RxYTdrdVI1VXRFSDQ1Z0Rtd0tpL0RaajgvN0lFUzM0ck96ZWFhWXpXbFVoM29SakpvelJNR29PQUVOYTBpMmRUR0dlRXA4VEZKbVBEdll2R3JVdTJDRVFicWhrc09GQnN5bGkyV3hhc1RqNk5kMTJwc1h2NTdUQ1FZbEdDNE1TVEJhVzYwM29vMWRiNnF6cVZ0ZlluTTU2QXBCdzlveG9Wd1JNWWxHTkszOTFWeWlLaWpCaUVZd21sUGRMYkpZdFNUYTdxSGlBK3Urb1FURGhTRUpCdHB2aGRUL0dIV3h2OXpXeFJpMHRQaUV0SHdKeGJWc1hoV1VZRVFqR0hSd0d1T2gwZ1Y1a1RPZU1pL2hoUHhEQ1lZTFF4Q01zMXF0Vmd6dThyZXZweXlQandId3NwVmgvU3VWV2pLZEN3U0dFb3lvQkFPNXA4MzNvcCtlazhXc0ZkRit3YThTVm9MaHdoQUVBMzdXVFBCYlJIVGNBZXhHdkpUTkhmUU1OY2Y2QnMrUDllYm54ZnFlUEpXWDJrQ1p6SGdmRXhqQ0dRSWxHTkVKQnNGK0VKRXVkc3ZpMW9iaVQ1eUtmOVNOWU9qV1pqVHlmYUhSdWQ5QUhvdFlwV0E0TnhxSlkxTGZUTlQ1SzJ3ZWk2MGZNaUFVRDRLakJmYm1qOGI2OHN0ajJ3N2FEMnFoZlUvMHh5NlpyekhTMnF1bHBUTmwrd3lJdWhjTWpCVTY2MVFObTJjdVBvUERSWVRSQmpwYlIyTUFPVjlIWnpPUTk4L3cvZll3aVBIdGZqZTBidjJGay9DUGVoR01PcnNPby9MdDY3bzFYRGdWdWlFL0J3THhqeEt4S09YRzJNNmR0aTM2dzhPUmRuR1A3VGNna0Z1ZEM4YlV2QTZqbGtpa084K1R0ZzJJTVhTWXpmeERDWVlMcXhBTUw3ZXZvNzd0dG5GLy8wbllrdGdoRVlseEhMcWF6SjJ0akVxYnM5aXlTV1huMnY0RFFBbEcvYU9zWUJqV0FUYnpEeVVZTGd3c0dMbHBLTHRWNnBOSkhWWjRZSExmL25mSkJXSUNoMkhkUUVYaTZld2xNcjhsZEo1SFl0djdoUktNK2tjNXdVRDc3R1V6LzFDQzRjS0FndUhwOUdkS1hNWG1FSXg4dTBRY1hQallhKzB5bVV3ajJ1dHhxZThpb280WDJ2WStvUVNqL2xGaGwrU1BiT1lmU2pCY0dFQXc2SG9LN0E2VW5jaW81OEdtcHN0ZWVCMUQ3OUJYNWVJZzRmM0RwM09wR09MTWwva2Z4eDJ4ekZyZmo4VlhnbEgvcUxCTHNvWE4vRU1KaGdzRENFWWlWZjcyZFdicEpkdzkrODZSaXNONDlnN3VoM1ZoRjRQRjZRbUovMUxxMWdJdTRobVZCQU1UOXU3eDcwd0pnL1RZZlU2aExKUmdWRWFGWFpJSDJNdy9sR0M0MEtkZ3pKNXRuZ0tmQjZTK21Qai8wSXdaSFMvbklnNUdSeHNoQmdOU2tTamxZaTVSQVBydVVsbWNZbUp5L1huRzNIRXhLNkRpRmtaRXhCall5Q21VUlNYQlFEdVBvQTVibzJiU3lMNmRVL0lFM2lxVW5nWU5tMmdEMTdOMCtHOFZwK1FmU2pCYzZGTXc0cnBsU2YwVUVURk5OaTlGei9ETVdHLytpRVFrSFBibU44UzJiWnQ0K2JoemowbjVKM2lCZEZzMWwvQUUxTDJ1QmFOV1RPcmlBNXlTSnlEdjc4cjgxSnllcnk2V1FBbUdDMzBJUnRPYzNHbG9wOE5TUDJQVXhWTmwxL1RyOHEyeHZ2eDY4UGtpc2ZnbmZsOGY2eDkwZlFVbDRuNUdHcStZdWpoeTVxenUxM0NSaWxDQzRZMTFLUmowV2tndEYvd21SU1VZTHZRaEdGNG1HQWFMWVBQeTJEZzBQZFl6OUg3c3BzeU45UXhVZkMwaVhmeUZQdG9uaTFsTUdxeGNwQ0tVWUhoajNRa0d4Q0twVysvbWRJSkJDWVlMUFFvR3ZZUWE5dVhmNzFscDY2SktsSHQ4L1FzVVIrMFhUWHVBRWd4dnJBL0JvTGZyMlFmSHIvR3psZW1LS1NNWXVua0hUU3pFbEw0K3NGYUNnZm8rQis3V2pPem4yTFFzbk5jR2lEMVVUdWJQb2RuRjVwR0F6cGdndnV0V0J1cjZIN3RPdXJpVWk1UUZYU1dLTXQvSEJONUVheVhVcit3OU1jRXBqdkdLNHZmSWJ3VmR3OElwbEFXTkJaUzVEdldoTjVYbjRlZG9xZDhvaUZ5eDJ3aytpdS8wSXVpbDlLd1RUc2tUNG1seER0cnpSbTVYalBVbzJwWGU2RzQ5Z2p4dncrZkNoTkdoY2Zod1FDOWphVExFRzl4b0dGZVd2aVkrVXVTbTJRK2NvWGR5Nk5ZaU5Pd3lWUHJIR0JoM0pvenVVQ3NlVDVtWFFmRi9qaGcveE9mWE5kMjhnam8wYUgzcExBbE5OR2R0TDVZaTU1dlFnYmVqNCs2Zy85Z3NNcUFPSDNIYVNmd0ViWGNEdm1lVGh2VXBUZTk2eTRRek03NlFtOVkwWjlGcGRQY202dk5wc0F0OXN0eHBPK3ZYNEViRTIwb1RDY3NHU29ubCtCL2Y2V2EvVmNWNTBhU1B4N3RPRGVFQnhnMTB4eStka29YZ2ZBZ3hGaURlMTlBTzMwTS9yRVFPOXlMbUE0aS9CYiszbCtibmtQSUhONFByVUwrMStGd0IyMnZob3gxaWYxRzgxWHBidkEyNVpqSytyMmx4UjI0YTFkOFJQekVmdXdvV2NzRVdpSk16WWorSTN3K1Z0S3NoSGdIL0FQWlNucWpUemZpOHhoNjd1blV1UGRyQTI4TnhZckgvQXozdEk0ajUrVE9MQUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIl0sImV4dGVuc2lvbnMiOlsiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiZTg2YWRkY2Q3NzExNDdlNWI0MmFjMTgyNTdiMGJmNjEiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjp0cnVlLCJ1cCI6dHJ1ZX0sInBpblV2QXV0aFByb3RvY29scyI6WzFdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIxLTA4LTE2IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiSURDb3JlIDMxMjEgRmlkbyIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjEwODE2MDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjMiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMS0wOC0xNiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI0LTA2LTE4In0seyJhYWd1aWQiOiJiMTEzYTQ1NS1jZmI2LTRjMTctOGNiYS1jZDk1MmZlYjdkNDgiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6ImIxMTNhNDU1LWNmYjYtNGMxNy04Y2JhLWNkOTUyZmViN2Q0OCIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJlVG9rZW4gRklETyBORkMifSwiZGVzY3JpcHRpb24iOiJlVG9rZW4gRklETyBORkMiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6NiwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9LHsibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJpc0tleVJlc3RyaWN0ZWQiOnRydWUsImlzRnJlc2hVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZWQiOnRydWUsIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRGRUQ0NBbDJnQXdJQkFnSUpBSUNVVHZrZ3RqNUNNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1GRXhDekFKQmdOVkJBWVRBa1pTTVF3d0NnWURWUVFLREFORVNWTXhDekFKQmdOVkJBc01Ba05UTVNjd0pRWURWUVFEREI1SFpXMWhiSFJ2SUUxMWJIUnBRWEJ3SUVaSlJFOGdVM1ZpWTJFZ1EwRXdIaGNOTWpBd056QTNNVFF6TnpFNFdoY05NekF3TnpBMU1UUXpOekU0V2pCUk1Rc3dDUVlEVlFRR0V3SkdVakVNTUFvR0ExVUVDZ3dEUkVsVE1Rc3dDUVlEVlFRTERBSkRVekVuTUNVR0ExVUVBd3dlUjJWdFlXeDBieUJOZFd4MGFVRndjQ0JHU1VSUElGTjFZbU5oSUVOQk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBdkFLT2VxQzUvcDBEMWlzQ1lLUUpsVlVPckI2STdETG9jdW5FL1JtOGR1R1RieXhRaHQzQ2JGVlR2M04yTHAyZmJqeGxJKzNzT1NHazMzRlRZa1RxeGNkSklySjdTc2tCY1VTTnJmS09hUVQvNktRY1A0Q203Vis2NTVUcStUV3h5eFdRaER5Z3QxNXFvUDdNdUs2YlQ5U3dwQ2pwZktoYU1TbXlRYU1vVWNSQWJMcWR6QkNhYzBoekIrWmUrZ3FKbG5XVjlVYVNJMnJGc1Z1SDRaRTBjUk8rTU9wYUxnTS9zMjQ4bkdHSHAyMmV3U1FmYm5QYUJiYjhpcXlBUCtjdTUyR0xzVXBLUkplYkUrUjYrUE1ROUpDZFdlUVpSM0RrZlNpZGt2M21jYjRqcTFpSXRhK01xS2hSbndyZlhoOTExS1dMbllBbDlFTkNoTFgwYzZTajFRSURBUUFCbzFBd1RqQWRCZ05WSFE0RUZnUVVXTHZoUkJVUG44dUxJZjY4K2d2L05aSXdHU0l3SHdZRFZSMGpCQmd3Rm9BVVdMdmhSQlVQbjh1TElmNjgrZ3YvTlpJd0dTSXdEQVlEVlIwVEJBVXdBd0VCL3pBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQUZMckRoYWVnZUtIeFlqSDNFUDN2VUJLaG56TTIwNkFTeGdlWUNPMkVjOXBPbFlKYWVxRkUrc1VhbVVWL3B3akRscU5hU2dGZ3k3VHdlWWt2T21NbjRxU2NzSHF2SjN6R09BaWFmd2FoMXZVSGZDbFhSOCtheE8yaUdPVUYwSktyWjlZWWpiQWE1LzRIQ2x2N2pGUE9kTVdUT1F5bmdvaUhBczNqa3VZanBDTEZsQjRWT2kzZDF3akExcG5UZEJLa0FiN3Q4blR2dysvWGJGdmNRYTczVkg3c2p2b0JxRDNmZE1mUmN1VnE0cVVadFpUNmNHYWdUSEQ2MVR0cWg5b01DWlhjRGJSMVBHWm5OYnF5Y3NXUERJSzBucG1LMy8zbGZWOGMrWnNyeTZlMTcwbWZKTVpwN084bTZDU3o2L1ZMSyt5REpkNzg0MXdwbWVLVGY2SW5aQT09IiwiTUlJQzZUQ0NBZEdnQXdJQkFnSUpBSmJUeXJ1MVgvSVBNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1DTXhJVEFmQmdOVkJBTU1HRWRsYldGc2RHOGdUWFZzZEdsQmNIQWdSa2xFVHlCRFFUQWVGdzB4T0RBMk1USXhORFExTlRCYUZ3MHlPREEyTURreE5EUTFOVEJhTUNNeElUQWZCZ05WQkFNTUdFZGxiV0ZzZEc4Z1RYVnNkR2xCY0hBZ1JrbEVUeUJEUVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTVZqS0hXcGJEN1RTbE14b2NqVGw2bklmN3gzMlBtc1E5ekd1TEdHcUEwVVFab0lxM1hMekw2TFlVdko1QTVnMHV5RkdsbEhFZkdBS3JFYUNROEZWdlBTL1VoMEZ5ZnpXaFJBemlUU2lqak1JSVZqampVdjltOXZGbWNYU2NnSGlnN09kejg4NThWMGtyTkg5OXFHbTN3amdhT2VyVFdtdCtqWENVZm4wMUlrVFB3eEcySGxnRWQ0NWpOTFNWN1Zvb2wrS2U4RTJraTRsRWtUZUh6Ym91bFI1R1VicDNuTWk3RTQ3Vk1RYTNiTndueldCYnNhQlNTUWhMazNtNUhhS2hoeGE2d0pESzQ3TmlNQ2tDa2RJSHVXU1FMVkFmbTg1VUFPTnRFT1B3aTBPdUszcWJlOHlLT0ZHZjBLaEI1TU1lQXltN01WL000VzBhNDlvZ1BEOXBNQ0F3RUFBYU1nTUI0d0RBWURWUjBUQkFVd0F3RUIvekFPQmdOVkhROEJBZjhFQkFNQ0FvUXdEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBSld6NXhMTWs1V05ZYkFiNnlPeEVDQm9aMldlQi9xbDRWSjNPLzMvdE5zeE9ZbnpMZVdvNTQwelFoOXJBbWF4ejdldW1CbHNrTXE0eUdQU05YQjl5Y1dHSGdrY0NlU3pOMnd2OENJekRCczJvQlpqVE5rNjVMQlpEc3NUT0J0TVcvK3VURkhRZmJ1TzNJU0xoSTBEWGZSRWk5TkRNM2pmazExeEhjc2ZoMlJNVitRZE5md1ZhWlpyQ3Erb3VHK0V2a3Y3S3FxK295dTBWRk0vdHo2OFRHbDZ5bGhQRlIxcWg5d3R0cFZqQU9PQ0VRQ0xxUDJkUDI4bHdZQnlDcUhRcVZId2J1anYvTFpqWm5LVzNMWW5kWml4UFBTUkNKc3NERHdKdmgvZjZuVHhnOVpFKy9KY1lyZTVDYUk4bnpWSGFTT0NqTko3RnpVTEc2NEppV092UTUwPSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFRd0FBQUFnQ0FZQUFBRG5sVVpxQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUVuUUFBQkowQWQ1bUgzZ0FBQUFaZEVWWWRGTnZablIzWVhKbEFIQmhhVzUwTG01bGRDQTBMakF1TWpIeElHbVZBQUFLMUVsRVFWUjRYdTFkRFhBY1pSbStOT0FmS29nNldPMFFjcmVYM083MVI0MW9IZFNxcURBT2czK2NZRVhCb2xYUlRFbjIyMHRhS1RjNjRtZ0JxekJpRVVWcEJkcWl3d2hxU2RJUzJ1cFlTZ3ZSdHBUU2NrbGpXekhhZ2pwU1JkcjR2THR2anJ2azI3dmR2ZDFMam43UHpETjN0L2QrNy90K2Y4Lys3OGFLME5EYWFyMnFPZFhab3FXeUg5UjBhMEZjdDY3V2RIR1Rab2pWQ2NQcVNlalcxb1F1SHNPeS9lQlRzRG1NLzU0WlQ5aitMV0dJZzdEZkIvc0JjRFBzZjRYZlA4WDNiMnVHMVpIUXpVOG1VdUtkeVdUSG01cWFjaS9qSEFLQnlpZjBiQnIrTHdhWElQWVBrTWRxZkw4WGRXcGxzMUFBMzEvUWpPdzk4TDhTOWI4QlhJUjIrbkRjNkRvemxzazBzbG5rUU14a1BHWE85RUp0Vm5ZR0Y0c1V5Vm5kOFVUYWVwOGJ3KzZMYWtCajVpemRiTkpTMXJ4RVdueVd4ZzM2RW1QZFdvUFBEZWpmN2VBVEdNc0hhRHpUdUM2aGJqME4vcFhtQXNydWdzMFdMUDhOdUJKalpKbVdFbGNsMDltUEoxSm1XMHRMNSt1aUhCdUdrWHNsalg4N25pNEV6Vm5rOUF2a3NRbjU3RVNkaHJCOEJNdVBqT1dQLy80T0hzUi9lN0Q4WWRUbGZ0UmhGZmdkTEc5SHUxd0FmenI1NWpBT2tpUUtodlZiR0I2QzAvL2krMmlOZVJ4OEZnbnZSZnhmYWluelNrN05FMGlJVVBiZjQzd1dtTlROZDdCcEtFQTdMWmZGQVk5enAzeVpUU01EaVFWaS9VK1NnNVFZQUlmT21HMmV3c1VqQS9yaFc3TDRCZXJtajloMFVvQjJPQitUWlRXNEIvazhPeUcveUNpT29XMUlZSDZIOFhQejlMYmNLemlsUUdocE1admhaeUhHd0czZzQyQms4NVo4bzkwRzhYME5pU3MxSXYyUUdrOEtkV3N6dDRzbklQOFJxUjltRFFYRElkWlNiQm9aMElsM1MyT1haWFlwRjQ4TVUxNHduSzFiZVc0MXBMM0ZFUUNKbFBWV3RERzJmdXlWck5SM3RCVGRTakI4WXJJRm95VnRubzJPQ3pCZ3hETkJCNnBYS01Id3hpRDlnSzNLYzZQY2t2QkdKUmkrTWNtQzBZRDRmZEs0WG9oOVcvWVRDWlJnZUtOdndjaGtHdEcyZTJXK2Frc2xHTDR4bVlKQmF4bHBUSStrTlJRZG1HUjNvVU1KaGpmNkZRdzZjQ3J6VTN0Q01MRFd1UXNkM1IrQXczS25CUTVLeW5qaGpkeE9ubkRpQ0VadUdqcnNZV2xNSnRwaVdVSzNCbVQvRmZFdWRoZzZVUGU2Rmd6MGJSNmZhNk1tblkza2xEd2hhWWpMVVU2ZXMyN3QwZ3p6bTdWZ1V1OTZENmZrSHhDYTYyVVZHQ01xOGcwMmpSUW5pbUJvUnZZaWFUd20ybnRmVzl2Q2s3VzBkWUhzL3dKMTYzazZlTVp1UTBXOUN3Ykc5SzFzT3FXQXZJVTBYNXRpRFp0TmJTakJjR0VFZ3RIV2Rzdko4RTJuQXVVeGlicDVoV005Mm9EZjJ5YjhYMEt4M3JFTkYwb3dvZ0htMGhKcHZqYVZZUGpDaVNBWWliVDFlV2tzSmliQ2svUG01VTVpYzhyeFFwbGRNUlBwN0hsc0hocVVZRVFESlJnaDRzVXVHSFNSRCtwSVYrVEo0eEgxTEc5ZGpDSFRpTWxSNFZpRzJFN0hSYmhBS0ZDQ0VRMlVZSVNJRjd0Z29KMnowamhNdEhPZWpsMndlUUZZL2xHWmZTbkZmRFlQQlVvd29rSENNQmRMODdXcEJNTVhLZ3FHSVM1dlRwdG5oMFhVKzA1Wm5BSkRGQXpENkRnZC9wNld4bUhHRGZGRk5oK0gwUWIwd2FPeU1tT0UrT1VOSS9jU0xsQTE2bDB3MEY2NzQ3cTRwUnBHY2RxYTdrdVI1VXRFSDQ1Z0Rtd0tpL0RaajgvN0lFUzM0ck96ZWFhWXpXbFVoM29SakpvelJNR29PQUVOYTBpMmRUR0dlRXA4VEZKbVBEdll2R3JVdTJDRVFicWhrc09GQnN5bGkyV3hhc1RqNk5kMTJwc1h2NTdUQ1FZbEdDNE1TVEJhVzYwM29vMWRiNnF6cVZ0ZlluTTU2QXBCdzlveG9Wd1JNWWxHTkszOTFWeWlLaWpCaUVZd21sUGRMYkpZdFNUYTdxSGlBK3Urb1FURGhTRUpCdHB2aGRUL0dIV3h2OXpXeFJpMHRQaUV0SHdKeGJWc1hoV1VZRVFqR0hSd0d1T2gwZ1Y1a1RPZU1pL2hoUHhEQ1lZTFF4Q01zMXF0Vmd6dThyZXZweXlQandId3NwVmgvU3VWV2pLZEN3U0dFb3lvQkFPNXA4MzNvcCtlazhXc0ZkRit3YThTVm9MaHdoQUVBMzdXVFBCYlJIVGNBZXhHdkpUTkhmUU1OY2Y2QnMrUDllYm54ZnFlUEpXWDJrQ1p6SGdmRXhqQ0dRSWxHTkVKQnNGK0VKRXVkc3ZpMW9iaVQ1eUtmOVNOWU9qV1pqVHlmYUhSdWQ5QUhvdFlwV0E0TnhxSlkxTGZUTlQ1SzJ3ZWk2MGZNaUFVRDRLakJmYm1qOGI2OHN0ajJ3N2FEMnFoZlUvMHh5NlpyekhTMnF1bHBUTmwrd3lJdWhjTWpCVTY2MVFObTJjdVBvUERSWVRSQmpwYlIyTUFPVjlIWnpPUTk4L3cvZll3aVBIdGZqZTBidjJGay9DUGVoR01PcnNPby9MdDY3bzFYRGdWdWlFL0J3THhqeEt4S09YRzJNNmR0aTM2dzhPUmRuR1A3VGNna0Z1ZEM4YlV2QTZqbGtpa084K1R0ZzJJTVhTWXpmeERDWVlMcXhBTUw3ZXZvNzd0dG5GLy8wbllrdGdoRVlseEhMcWF6SjJ0akVxYnM5aXlTV1huMnY0RFFBbEcvYU9zWUJqV0FUYnpEeVVZTGd3c0dMbHBLTHRWNnBOSkhWWjRZSExmL25mSkJXSUNoMkhkUUVYaTZld2xNcjhsZEo1SFl0djdoUktNK2tjNXdVRDc3R1V6LzFDQzRjS0FndUhwOUdkS1hNWG1FSXg4dTBRY1hQallhKzB5bVV3ajJ1dHhxZThpb280WDJ2WStvUVNqL2xGaGwrU1BiT1lmU2pCY0dFQXc2SG9LN0E2VW5jaW81OEdtcHN0ZWVCMUQ3OUJYNWVJZzRmM0RwM09wR09MTWwva2Z4eDJ4ekZyZmo4VlhnbEgvcUxCTHNvWE4vRU1KaGdzRENFWWlWZjcyZFdicEpkdzkrODZSaXNONDlnN3VoM1ZoRjRQRjZRbUovMUxxMWdJdTRobVZCQU1UOXU3eDcwd0pnL1RZZlU2aExKUmdWRWFGWFpJSDJNdy9sR0M0MEtkZ3pKNXRuZ0tmQjZTK21Qai8wSXdaSFMvbklnNUdSeHNoQmdOU2tTamxZaTVSQVBydVVsbWNZbUp5L1huRzNIRXhLNkRpRmtaRXhCall5Q21VUlNYQlFEdVBvQTVibzJiU3lMNmRVL0lFM2lxVW5nWU5tMmdEMTdOMCtHOFZwK1FmU2pCYzZGTXc0cnBsU2YwVUVURk5OaTlGei9ETVdHLytpRVFrSFBibU44UzJiWnQ0K2JoemowbjVKM2lCZEZzMWwvQUUxTDJ1QmFOV1RPcmlBNXlTSnlEdjc4cjgxSnllcnk2V1FBbUdDMzBJUnRPYzNHbG9wOE5TUDJQVXhWTmwxL1RyOHEyeHZ2eDY4UGtpc2ZnbmZsOGY2eDkwZlFVbDRuNUdHcStZdWpoeTVxenUxM0NSaWxDQzRZMTFLUmowV2tndEYvd21SU1VZTHZRaEdGNG1HQWFMWVBQeTJEZzBQZFl6OUg3c3BzeU45UXhVZkMwaVhmeUZQdG9uaTFsTUdxeGNwQ0tVWUhoajNRa0d4Q0twVysvbWRJSkJDWVlMUFFvR3ZZUWE5dVhmNzFscDY2SktsSHQ4L1FzVVIrMFhUWHVBRWd4dnJBL0JvTGZyMlFmSHIvR3psZW1LS1NNWXVua0hUU3pFbEw0K3NGYUNnZm8rQis3V2pPem4yTFFzbk5jR2lEMVVUdWJQb2RuRjVwR0F6cGdndnV0V0J1cjZIN3RPdXJpVWk1UUZYU1dLTXQvSEJONUVheVhVcit3OU1jRXBqdkdLNHZmSWJ3VmR3OElwbEFXTkJaUzVEdldoTjVYbjRlZG9xZDhvaUZ5eDJ3aytpdS8wSXVpbDlLd1RUc2tUNG1seER0cnpSbTVYalBVbzJwWGU2RzQ5Z2p4dncrZkNoTkdoY2Zod1FDOWphVExFRzl4b0dGZVd2aVkrVXVTbTJRK2NvWGR5Nk5ZaU5Pd3lWUHJIR0JoM0pvenVVQ3NlVDVtWFFmRi9qaGcveE9mWE5kMjhnam8wYUgzcExBbE5OR2R0TDVZaTU1dlFnYmVqNCs2Zy85Z3NNcUFPSDNIYVNmd0ViWGNEdm1lVGh2VXBUZTk2eTRRek03NlFtOVkwWjlGcGRQY202dk5wc0F0OXN0eHBPK3ZYNEViRTIwb1RDY3NHU29ubCtCL2Y2V2EvVmNWNTBhU1B4N3RPRGVFQnhnMTB4eStka29YZ2ZBZ3hGaURlMTlBTzMwTS9yRVFPOXlMbUE0aS9CYiszbCtibmtQSUhONFByVUwrMStGd0IyMnZob3gxaWYxRzgxWHBidkEyNVpqSytyMmx4UjI0YTFkOFJQekVmdXdvV2NzRVdpSk16WWorSTN3K1Z0S3NoSGdIL0FQWlNucWpUemZpOHhoNjd1blV1UGRyQTI4TnhZckgvQXozdEk0ajUrVE9MQUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzEiLCJGSURPXzJfMV9QUkUiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwibWluUGluTGVuZ3RoIl0sImFhZ3VpZCI6ImIxMTNhNDU1Y2ZiNjRjMTc4Y2JhY2Q5NTJmZWI3ZDQ4Iiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6dHJ1ZSwidXAiOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJub01jR2FQZXJtaXNzaW9uc1dpdGhDbGllbnRQaW4iOmZhbHNlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6dHJ1ZSwiYWx3YXlzVXYiOmZhbHNlfSwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjo5NiwidHJhbnNwb3J0cyI6WyJuZmMiLCJ1c2IiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fV0sImZvcmNlUElOQ2hhbmdlIjpmYWxzZSwibWluUElOTGVuZ3RoIjo0LCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6NCwiY2VydGlmaWNhdGlvbnMiOnsiRklETyI6M30sInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjoyNTV9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wNy0yOCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjo2LCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6ImVUb2tlbiBGSURPIE5GQyIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjUwNzI4MDAyIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25Qcm9maWxlcyI6WyJjb25zdW1lciJdLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTA3LTI4IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjZ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjYtMDItMTEifSx7ImFhZ3VpZCI6Ijk1NDQyYjJlLWYxNWUtNGRlZi1iMjcwLWVmYjEwNmZhY2I0ZSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiOTU0NDJiMmUtZjE1ZS00ZGVmLWIyNzAtZWZiMTA2ZmFjYjRlIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6ImVXQk0gZUZBMzEwIEZJRE8yIEF1dGhlbnRpY2F0b3IifSwiZGVzY3JpcHRpb24iOiJlV0JNIGVGQTMxMCBGSURPMiBBdXRoZW50aWNhdG9yIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoyNTYsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDcFRDQ0FrcWdBd0lCQWdJQkFUQUtCZ2dxaGtqT1BRUURBakNCcnpFTE1Ba0dBMVVFQmhNQ1MxSXhFVEFQQmdOVkJBZ01DRk5sYjNWc0xWTnBNUk13RVFZRFZRUUhEQXBIWVc1bmJtRnRMVWQxTVJjd0ZRWURWUVFLREE1bFYwSk5JRU52TGl3Z1RIUmtMakVpTUNBR0ExVUVDd3daUVhWMGFHVnVkR2xqWVhSdmNpQkJkSFJsYzNSaGRHbHZiakVjTUJvR0ExVUVBd3dUWlZkQ1RTQkRRU0JEWlhKMGFXWnBZMkYwWlRFZE1Cc0dDU3FHU0liM0RRRUpBUllPYVc1bWIwQmxMWGRpYlM1amIyMHdIaGNOTVRnd056QXlNRFV6TVRNNVdoY05Nak13TnpBeE1EVXpNVE01V2pDQnJ6RUxNQWtHQTFVRUJoTUNTMUl4RVRBUEJnTlZCQWdNQ0ZObGIzVnNMVk5wTVJNd0VRWURWUVFIREFwSFlXNW5ibUZ0TFVkMU1SY3dGUVlEVlFRS0RBNWxWMEpOSUVOdkxpd2dUSFJrTGpFaU1DQUdBMVVFQ3d3WlFYVjBhR1Z1ZEdsallYUnZjaUJCZEhSbGMzUmhkR2x2YmpFY01Cb0dBMVVFQXd3VFpWZENUU0JEUVNCRFpYSjBhV1pwWTJGMFpURWRNQnNHQ1NxR1NJYjNEUUVKQVJZT2FXNW1iMEJsTFhkaWJTNWpiMjB3V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVFJZnFIaXNpMG9PL2V5T3FTYURycjlpdEcySXltQmtIblNER1FJSVltVCt2cUE4QWdPODFtb21jMkxkNVBHcEVONm11RTU0d1BIUWp2Yy95Q2loOHUybzFVd1V6QVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUFNQjBHQTFVZERnUVdCQlMzSi9meGlBdjIyaXJkQnM5OFNPRGhGN2tVL2pBTEJnTlZIUThFQkFNQ0FRWXdFUVlKWUlaSUFZYjRRZ0VCQkFRREFnQUhNQW9HQ0NxR1NNNDlCQU1DQTBrQU1FWUNJUURjNDFMRks0TEpDQlUyVlZLSXo3WjZzeFBoVUVraDhuTFNMSzZJWGRrUDV3SWhBSWVLVk9aY2hhVk81YUY3ZmJkWG9TcmN5eTFZWWVVZVBMb2pjS0k5Zlg4NCIsIk1JSUNnakNDQWlpZ0F3SUJBZ0lCQVRBS0JnZ3Foa2pPUFFRREFqQ0JuVEVMTUFrR0ExVUVCaE1DUzFJeERqQU1CZ05WQkFnTUJWTmxiM1ZzTVJBd0RnWURWUVFIREFkSFlXNW5ibUZ0TVJjd0ZRWURWUVFLREE1bFYwSk5JRU52TGl3Z1RIUmtMakVaTUJjR0ExVUVDd3dRUTJWeWRHbG1hV05oZEdVZ1ZXNXBkREVaTUJjR0ExVUVBd3dRWlZkQ1RTQkRaWEowYVdacFkyRjBaVEVkTUJzR0NTcUdTSWIzRFFFSkFSWU9hVzVtYjBCbExYZGliUzVqYjIwd0lCY05Nak13TnpFeE1ETTBOakUwV2hnUE1qQTNNekEyTWpnd016UTJNVFJhTUlHZE1Rc3dDUVlEVlFRR0V3SkxVakVPTUF3R0ExVUVDQXdGVTJWdmRXd3hFREFPQmdOVkJBY01CMGRoYm1kdVlXMHhGekFWQmdOVkJBb01EbVZYUWswZ1EyOHVMQ0JNZEdRdU1Sa3dGd1lEVlFRTERCQkRaWEowYVdacFkyRjBaU0JWYm1sME1Sa3dGd1lEVlFRRERCQmxWMEpOSUVObGNuUnBabWxqWVhSbE1SMHdHd1lKS29aSWh2Y05BUWtCRmc1cGJtWnZRR1V0ZDJKdExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCQWgrb2VLeUxTZzc5N0k2cEpvT3V2MkswYllqS1lHUWVkSU1aQWdoaVpQNitvRHdDQTd6V2FpWnpZdDNrOGFrUTNxYTRUbmpBOGRDTzl6L0lLS0h5N2FqVlRCVE1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdIUVlEVlIwT0JCWUVGTGNuOS9HSUMvYmFLdDBHejN4STRPRVh1UlQrTUFzR0ExVWREd1FFQXdJQkJqQVJCZ2xnaGtnQmh2aENBUUVFQkFNQ0FBY3dDZ1lJS29aSXpqMEVBd0lEU0FBd1JRSWhBTlZuSmRlLy90QkxxOE1ERGkrU0FkNlVkWUlaU25nNFBNcW15TnJ2Wmo2NEFpQVgweFN6QWhGYUNDcC91aHBWZ25sRitYQmdyd0FJc290WkdUQjZya0IzMUE9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUErZ0FBQUV4Q0FZQUFBRHZEWWdxQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUVuUUFBQkowQWQ1bUgzZ0FBRmljU1VSQlZIaGU3ZDBIZUJYRjJzRHhONzNRQ1RWQTZGSUZGS2tDVXV5QUV1bUtZa0ZVYklDQ0lpS0NVZ1FFN0wwZ2RsUXNLQ3BTcklnZ1NDK2hKblJDSjRIMGIyZnZlRC8wa2hDU25jMmVrLy92dVhtWWQ0NlhrSk56OXN5N00vTk9RSlpGQUFBQUFBQkFnUXJVZndJQUFBQUFnQUpFZ2c0QUFBQUFnQWVRb0FNQUFBQUE0QUVrNkFBQUFBQUFlQUFKT2dBQUFBQUFIa0NDRGdBQUFBQ0FCNUNnQXdBQUFBRGdBU1RvQUFBQUFBQjRBQWs2QUFBQUFBQWVRSUlPQUFBQUFJQUhrS0FEQUFBQUFPQUJKT2dBQUFBQUFIZ0FDVG9BQUFBQUFCNUFnZzRBQUFBQWdBZVFvQU1BQUFBQTRBRWs2QUFBQUFBQWVFQkFsa1czUFNzek5WWFNEeVRLcWExYjVkU2FkWks2ZTQra0h6OW05NG4zLy9tQWNRRWhvUkpjdXBRRVIwVkpXSlZLRXQ2Z3ZvUlhyeVpCcFVwSlFDRDM0UUFBQUFCZjROa0VQU3NqUTA1dDNpS0hQdnBFanYrd1FOTDM3Wk9zMURUOUtJQ3pDWXlNbE5BYTFhVEVOWjJsWkpmT0VscWh2UFdPRDlDUEFnQUFBUEFhenlYb0tqRS9NdmM3U1h4emhweGFzVkwzQXNpUGdOQVFLZHF4dlpTOVk0QVVhZEpZOXdJQUFBRHdFazhsNk1kLysxMzJqSHRLVXRhdDF6MEFuRmE4NjlWU1lkZ1FDYXRTUmZjQUFBQUE4QUpQSk9nWkowN0lub2xUNVBBSEg0dGtadXBlQUtZRWhJZExoVkVqSktwWGR3a0lEdGE5QUFBQUFBcFNnU2ZvcDdac2xSMERCMG5xMXUyNkI0QXJBZ0trMkJXWFNwWEpFeVNvYUZIZENRQUFBS0NnRkdpQ2Z1TFA1UkkvWUpCa0hEbWlld0M0TGJ4UlE2bjI1aXNTRWhXbGV3QUFBQUFVaEFKTDBFOHNYU1k3YnJsRE1wT1NkQStBZ2hKYXE0YlUvT2hkQ1M1ZFd2Y0FBQUFBY0Z1QkhKQ3NsclhIMzNrdnlUbmdFYW1idDhyMmdZTWtnL2NrQUFBQVVHQmNUOURUang2VDdiZmRJUm1IRHVzZUFGNXc4cysvWk9jamowa1doUm9CQUFDQUF1SHFFbmQxeG5uOEF3L0pzUy9tNko1ekZ4Z1pJVUdsU2tsSWplb1NWS0s0N2dVS09ldHRuTDV2djZUdGlKZU1JMGNsS3kxTlAzRHVLazRZSzJYNjlOSVJBQUFBQUxlNG1xQWZYYmpJTGdwM3prZXBCUVpLK1BrTkpLcC9QeW5XdXFVRWx5a2pBVUZCK2tFQWY4dE1UWlhVWGJ2azZMZno1TkRNOXlWOXoxNzlTTzRGbGl3aDUvM3dEVVhqQUFBQUFKZTVscUJuSkNWTDNGWFhTRnJDVHQyVE82RTFxMHZGVVNPa2VOczJkcUlPSUhjeVQ1NlVneDk4TFB1ZmVWNHlqeDNYdmJsVG9sdFhpWms2eWJwQ0JPZ2VBQUFBQUthNWx2RWVtZlAxdVNYblZtSlFvbWVzMUo0elc0cGYwbzdrSERoSGdSRVJVdmJXL2xMTGVnK3BvOVRPeGJGdnY1ZFQ4UWs2QWdBQUFPQUdWN0pldGV4Mi8vTXY2U2dYckdROGF0QkFpWGxxdkFTR2grdE9BSGtSVnFXeWZZUmE1TVV0ZGMvWlpaMUtrZjNQdnFBakFBQUFBRzV3SlVFL3NYaUpwTy9hbzZPekNBaVEwamYzaytpaDk3TzhGbkNJdXRGVjdkVVh6MmttL2NTQ1JaSis1S2lPQUFBQUFKam15aDUwVmJuOTZHZGY2Q2huS29HbytmSDdFaGdXcW52eXlmcnhzdExUSmYzRUNjazRmbHl5VXZOZTNScHdpenF0SUxoWU1YdVp1bDBRMGFHYlZhZTI3NUROVjE0aldTa3B1aWRubFo2WklxV3Y2YUlqQUFBQUFDWVpUOUJWY3J5dWVSdkpQSHhFOStRZ09GaXF6M3BQaWpacHJEdnlMbm5kZWprMmY2RWsvYnBZVXJac2xZekVnL29Sd0hjRXgxU1JpTnExcEdpSGRsS3NZM3NKcTFoUlA1SjMrMTU2VmZaUG1xcWpuQlc5cktOVWYvVkZIUUVBQUFBd3lYaUNucnhtcld6cDJsMUhPU3ZhOFJLcC92ckxlWjR0ekR5VklrZSsvVTRTWDN0VFV0WnQwTDJBbndnTWxLS2Qya3VaVy90THNSYk44L3crU1Q5NlZEWjF2Rkl5RGgzV1Bka0xLbDVjNnY3eHN3U0doZWtlQUFBQUFLWVkzNE9lL05kSzNUcTcwbjE2NVMzcHlNcVM0NHQvbDdqTzNXVFhrT0VrNS9CUG1abHlZdDRDMlg3RExiSnQ0Q0JKeVdPVjllQVNKYVRFdFYxMWxETjFWRnZxemwwNkFnQUFBR0NTOFFUOTVQcmNKY3NCa1JGUzdKSzJPc285VlNGKzk4VEpzdU9tQVpLNmRadnVCZnlZU3RSL1dDaWJ1MTRuaCtkOFk4Zm5xa1NYcTNRcloxbHBhWkxDK3dvQUFBQndoZGtFUFN0TDByWnUxMEhPd2h2VWw4RFFjeXNNcDRxK2JiL2pIam40NnB2MlhuZWdNTWs4ZGx4MkRoNG1lNlkrWTcvWHprVkV6Um9TV0xTb2puS1dzaWVYSnpBQUFBQUF5QmVqQ2JyYTNwNlJuS3lqbkttem1zK0ZTczYzM1RwUWtoYjlwSHVBUWlnalF4SmZlTVZlUlhJdVNYcEFSSVFFbDQzU1VjN1NkNU9nQXdBQUFHNHdPNE9lbVNtWnVUek9LYWhDZWQwNk83WHNObjdZQ0RtNWJJWHVBUW8zdFlya3dGc3pkSFIyNnVpMmdORGNGWDdMMkxkZnR3QUFBQUNZWkh3UHVnbjdYM3RUVG56M2c0NEFLUHNtVFpPa0ZYL3BDQUFBQUlDdk1Yck1tdG9YdnFsTHJLUnVqTk05MllzYU5GQ2lodzNWVWZaT2JvcVRMVjJ1czJmUmN5MHcwTjV2RzF3bVNnS2pTdWxPd0tPc2QyVEd6bDJTY2VLRVpKNUkwcDI1RTFxcmh0VCs4bE1KaklqUVBXZVdsWkVoY1oxakpXWGpKdDJUdlpMZHVrcVZhWk4xQkFBQUFNQVUzMHJRclgvcXR0dnVrQk1MYzdudjNENDN1b09VSFhDemhOZXJLOEhGaXVrSEFJL0x6SlMwdzRmbHhPOS95SUhuWDdJU2FlczlsSnUzYWtDQWxCOHhUTXJkZnF2dU9ETVNkQUFBQU1CN2ZHcUplOUtxMWJsT3prTmlxa2oxajJaSzlWZGZrS0xObTVHY3c3Y0VCa3BJVkpTVTZueVYxSjR6V3lvK09Wb0N3c1AxZ3ptd2t2akVsMStUaktSem0za0hBQUFBVVBCOEowRzNFbzhEcjc2aGc1eUZuOTlBYXM3K1NJcGUxRlQzQUw1TEZYUXJjMzBmKzRaVFVNa1N1amQ3R1ljT3l4RjFQam9BQUFBQW4rSXpDWHI2a2FPUzlNdHZPc3BlY01YeVV1MzFseVdrZEduZEEvaUhJbzNPbDhyUFRiVmU1RUc2SjN0SFB2dEN0d0FBQUFENENwOUowSk5XcnBMTVk4ZDFsSTNBUUtrNGRyU0VsQ3VyT3dEL1Vyek54VkxxaGo0NnlsN3lueXNrNC9nSkhRRUFBQUR3QmI2VG9QLzJ1MjVsTDd4ZUhTblI0UklkQWY2cDdJQmJKU0E0V0VmWnlNaVFwSlVyZFFBQUFBREFGL2hNZ3A2OGJwMXVaYTlFbDZ2dC9icUFQd3VyWEVraVdqWFhVZlpPclY2cld3QUFBQUI4Z1U4azZGa1ptWksyYWJPT3NsZnNzazY2QmZpM1ltM2I2RmIyVXZmdjF5MEFBQUFBdnNCSEV2UjBPMGsvbTdBS0ZYUUw4RytoMWF2cFZ2WXlUM0RVR2dBQUFPQkxmR2FKZTY0RTZEOEJmOGRySFFBQUFQQTcvcFdnQXdBQUFBRGdvMGpRQVFBQUFBRHdBQkowQUFBQUFBQThnQVFkQUFBQUFBQVBJRUVIQUFBQUFNQURTTkFCQUFBQUFQQUFFblFBQUFBQUFEeUFCQjBBQUFBQUFBOGdRUWNBQUFBQXdBTkkwQUVBQUFBQThBQVNkQUFBQUFBQVBJQUVIUUFBQUFBQUR5QkJCd0FBQUFEQUEwalFBUUFBQUFEd0FCSjBBQUFBQUFBOGdBUWRBQUFBQUFBUElFRUhBQUFBQU1BRFNOQUJBQUFBQVBBQUVuUUFBQUFBQUR5QUJCMEFBQUFBQUE4Z1FRY0FBQUFBd0FOSTBBRUFBQUFBOEFBU2RBQUFBQUFBUElBRUhRQUFBQUFBRHlCQkJ3QUFBQURBQTBqUUFRQUFBQUR3QUJKMEFBQUFBQUE4Z0FRZEFBQUFBQUFQSUVFSEFBQUFBTUFEU05BQkFBQUFBUEFBRW5RQUFBQUFBRHlBQkIwQUFBQUFBQThnUVFjQUFBQUF3QU5JMEFFQUFBQUE4QUFTZEFBQUFBQUFQSUFFSFFBQUFBQUFEeUJCQndBQUFBREFBMGpRQVFBQUFBRHdBQkowQUFBQUFBQThnQVFkQUFBQUFBQVBDTWl5NkxianN0TFRaVk9YV0VuZEdLZDdzaGMxYUtCRUR4dXFvMy9LVEUyVkRhM2FTOGFoUTdybnpCcXNYUzZCa1pFNk1pYzFQa0ZPcmQrZ0kvaXowSmdZQ2E5WFIwZmVjV1QrQWtrWU1FaEhaMWFpUjZ6RVRKNmdvMy9LeXNpUXVNNnhrckp4ays3SlhzbHVYYVhLdE1rNkFnQUFBR0FLQ1hvZUhKejV2dXgrYkt5TzRNK2krdmVUNk1jZjFaRjNrS0FEQUFBQS9vY2w3Z0FBQUFBQWVBQUpPZ0FBQUFBQUhrQ0NEZ0FBQUFDQUI1Q2dBd0FBQUFEZ0FTVG9BQUFBQUFCNEFBazZBQUFBQUFBZVFJSU9BQUFBQUlBSGtLQURBQUFBQU9BQkpPZ0FBQUFBQUhnQUNUb0FBQUFBQUI1QWdnNEFBQUFBZ0FlUW9BTUFBQUFBNEFFazZBQUFBQUFBZUFBSk9nQUFBQUFBSGtDQ0RnQUFBQUNBQndSa1dYVGJjVm5wNmJLcFM2eWtib3pUUGRtTEdqUlFvb2NOMWRFL1phYW15b1pXN1NYajBDSGRjMllOMWk2WHdNaElIWmx6Y3ZVYU9mN2p6enJ5dnVRL1Y4anhSVC9weUZubEI5OHJFdVMvOTNraUdwMHZ4ZHExMFpGM0hKbS9RQklHRE5MUm1aWG9FU3N4a3lmbzZKK3lNaklrcm5Pc3BHemNwSHV5VjdKYlY2a3liYktPQUFBQUFKaENnbDRJSkw0NVEvWThjZVpFTGI4YXhxMlJnT0JnSGNFdC9weWdaNldsU1ZhbXNjdFM0Uk1nRWhnU1l2MXBOUUFBLzBPTk04V0ZqNTJBNENBSkNBclNVY0Z6OWZPV3p5SWcxMGpRQ3dFU2RQL2p6d242dHFIRDVOU0tsVHBDZmdXVktDNjFQbjVmQWtORGRROEE0SFJ4M2Z0SStsbkdtRTRvUC93QktYM1ZGVG9xV0JsSlNiTGx4bHNrNC9BUjNXTldaSXRtRWpQK0NRa0laSGN0Y0RZazZJVUFDYnIvOGVjRVBhN2Z6WEp5OFJJZEliOUNhMVNYdXZPKzBSRUE0Ti9XdFd3bjZRY082TWljNkVuanBVejNXQjBWb014TTJUNTBtQno3eXAzUGh1QUs1YVgyN0k4bHBGdzUzUU1nSjl6R0FnQS9GbGFycG00QkFDQ1MrTkVzMTVMemdMQXdxVEoxRXNrNWNBNUkwQUhBajRXV0w2OWJBSURDTG5uZGV0a3o3aWtkbVZkdXlMMVNyRVZ6SFFISURSSjBBUEJqWVkwYTZoWUFvRERMT0g1YzRnYy9LRmtuVCtvZXM0cGRjWm1VdSswV0hRSElMUkowQVBCajRUVnI2QllBb05ES3lwTGRrNTZXMUMxYmRZZFpJWldpcGNyNHNSU0ZBL0tBZHcwQStLdWdJQW1yVUVFSEFJREM2dkEzMzhyaER6N1drVm1Ca1JFUzg4SXpFbHl5cE80QmNDNUkwQUhBVHdXVktpV0J4WXJxQ0FCUUdLWEV4OHV1a2FQdFdYVGpnb0trd3FoSHBNajViSzhDOG9vRUhRRDhWRkRSSWhJWUZxWWpBREFyTXpOVFRwNDhLWWNPSFpLdDI3YkowcVZMSlRVMVZUK0tncEI1S2tWMkRINVFNbzhmMXoxbXFhTlp5L1RzcmlNQWVVR0NEZ0IrS3FSeUpRa0lDdElSQU9TTlNyelQwdElrT1RsWkVoTVRaZlBtemJKNDhXSjU3LzMzWmR6NDhUSjR5QkM1TmpaV2F0ZXRLK2ZWcXlkMXJLOTZEUnBJNjdadDViaExpU0hPUU8wN2YycXluRnE1V25lWUZkNm9vVlFlTzFva0lFRDNBTWdMRW5RQThGT2hWV04wQ3dCeXBoTHdBd2NPeU5xMWEyWDI3Tm55NGtzdnlXT2pSMHUvbTI2U2k5dTFrNmJObXRsSmQ2V1lHS25Yc0tHMDY5QkJicjcxVm5sODdGaDV3ZnB2djVrN1YrTGo0Mlh2M3IxeTVPaFJPNmxId1RxNjZDYzUvUDVIT2pJcnNHaFJpWmsrUlFMRHczVVBnTHdpUVFjQVB4VktnVGdBT1RoMjdKaGNldm5sVXJkK2ZZa3NWa3lpcTFTUkprMmJTcSsrZmVYK0lVTmt3bE5QeVVjZmZ5ekxsaTJUOVJzMnlPNDllMGk4ZlVUcTdqMnljL2dJeVVwUDF6MEdCUVJJOUpPUFMzalZxcm9EUUg2UW9BT0Fud3Evb0pGdUFjRC9VdnZERi8vK3Uyelo2czdSVzNCSHB2VjdqWC9vRWNrNGRGajNHR1FsNTFFRGJwYlNYVHZyRGdENVJZSU9BSDRxdkVvVjNRSUFGQmI3WDMxZGtuLzdYVWRtUlY3VVZDb09IYXdqQUU0Z1FRY0FQeFFRRVNFaFpjcnFDQUJRR0J4ZnNsVDJQL2VTanN3S3JsaEJxajQzVlFKRFEzVVBBQ2VRb0FPQUh3b3VYMDRDUW9KMUJBRHdkK2xIamtqQ3NJZXNodmw5NXdHaElWSjU4Z1FKS2N1TllNQnBKT2dBNElkQ1NwYVVnRUF1OFFCUUdLaGljUEhESDVIMFhYdDBqMWxsN3JwRGlyZHFxU01BVG1MMEJnQitLS1JHTmM2aUJZQkM0c0RiNzhpSitRdDFaRmJSOXUyazRyMkRkQVRBYVNUb0FEd2xwRnhaQ2ExUzJiV3ZrSW9WM1Vsa3JlOFJVaW42alA4R0UxOFI5ZXZyYnd3QThHZEpLMWZKdnFuUDZNaXNFT3Z6SldiS1JHNEFBd1lGWkZsMDIzRnF1YzJtTHJHU3VqRk85MlF2YXRCQWlSNDJWRWYvcEk2TDJOQ3F2V1FjT3FSN3pxekIydVVTR0JtcEkvd3Q4YzBac3VlSkNUcHlWc080TlJJUXpENVh0eDJadjBBU0J1Ujg5N3BFajFpSm1Yem0zM3RXUm9iRWRZNlZsSTJiZEUvMlNuYnJLbFdtVGRhUi96a1ZIeTl4bDNVMmZsWnNZSkVpVW1mQmR4SlNKa3IzQUVEQlNreE1sS28xYXRqSHJabXlkOWN1aVlyeTluVnZYY3Qya243Z2dJN01pWjQwWHNwMGo5V1JNOUtQSFpPNGJqMGxiVWU4N2pFbk1DSkNxbi93amhRNXY2SHVBV0FDTStnQUFBQ0FEOXIxeEhoWGtuTUpESlR5ano1RWNnNjRnQVFkQUFBQThERUhQNTB0UnovN1FrZG1sZWphV2NyMDZxa2pBQ2FSb0FNQUFBQSs1R1RjWnRrelpweU96QXFyYzU1VUdUZUdrMEVBbC9CT2cwOVI5UWkyOXJ0WjFsM1F3dmhYM0xVOUpPTkVrdjdPQUFBQUJTL2p4QW1Kdi84QnlVd3lQMFlKTEZaTVlwNmZadTgvQitBT0VuVDRqcXdzMlRmOWVVbjY5WGZKT0hMVTZGZG04a21wT0hxa0JCVXRvcjg1QUtDd3lNek1sUFQwOUROK1pXUmtXQjlIeHVyckFqbktzbDZidXlkTXlsV1IxM3dMQ3BUb01hTWtva1lOM1ZGNHFmZDhUdGNGOVJqZ0ZLcTRGd0wrVXNYOTJNKy95STViN3hUclNxaDd6Q2w3LzkxU1lmQzlPdkllcXJnN2h5cnV2aThsSlVYV3JsMHJmNjFjS2Z2Mzc1Y0RpWW42RVpHdzBGQXBXYktrbEMxYlZtclhyaTMxNnRiMWZFVnB1Q2NwS1VtMmJ0MHFxMWF2bGoxNzlzaTI3ZHRsNDhhTmN1clVLVGw1OHVRWkI5MFJFUkVTRWhJaXBVcVZrZ2IxNjB1bFNwV2thdFdxZHJ0eTVjb1M3RU1ubTFERi9UOThxWXI3a2UrK2wvaDdocWk3U0xySG5OTDkrMG5sVVk4VXVpUFYwdExTSk40YUd5eGZzVUlTRWhJa0xpNU9ObGxmNnJxUW5KeXMvNnYvcDk3ellXRmhVcng0Y1duWW9JRjlIYWhXclpvMGJ0VEl2ajc0MGpVQjNrQ0NYZ2o0UTRLZXVudVBiTFplU3htSGorZ2VjeUpidDVRYU05LzA5RjRyRW5UbmtLRDdwcU5IajhyY2I3K1ZEejc4VUg3ODZTYzcwY3F0T3VlZEo0OC85cGowNk5GRDk2QXdVTW4ydG0zYlpQSHZ2OHVpSDMrVXYvNzZTMWF1V3FVZmRVWjRlTGcwYjlaTUxyamdBbW5Wc3FXMGJOSENIcUI3RlFuNmYvaEtncDZTc0ZQaXJ1a3VtY2VPNlI1eklpNXNJalZudmkyQjRXRzZ4MytwMTcrNndmdkxMNy9JL0FVTDVQY2xTK1NZUTg5eHBKV1h0RzNUUnRwZmNvbTBzSzRIelM2NnlMNU9BRGtoUVM4RWZEMUJ6MHhKa2EzWDk1ZVR5Ly9TUGVZRWxTMGp0YitlTFNGbHkrb2VieUpCZHc0SmV1NzhiaVUxNjlhdjE1RXpMcklHS28zT1AxOUh1WFBBR2tTLy9PcXJNdVhwcDg4NGs1RmJzejc2U0xwZGU2Mk96dDJzVHo2UjQ4ZVA2OGg1VjE1eGhVUkhSK3ZJR1o5OTlwa2NPWHBVUjg2N3hCcUExdlRZVWxpMUhIM1RwazN5MmV6WjhzbW5uOHI2RFJ2c1ByY0VCUVhaTjRSNjlld3BWMTE1cFRSbzBNQ2VhVE5wMWFwVnN1elBQM1dVc3hNblRzaERJMGJZUzNSTmVYcnlaQ2xhdEtpTzhxNTgrZkxTK2VxcmRlUXNYMGpRczlMU1pITy9tK1hrc3VXNng1emdjbVdsMXV4WkVscWh2Tzd4UCtvMXIyN1FmV2g5RnJ6NzNudHk4T0JCNDF0WEFnSUNwRml4WXRLamUzZnBkLzMxMHJ4NWMrUFhnek5STnlzLy8rSUxPWExFN0tSWDZkS2w4L1U1bTFmcTUzdG41c3d6cm9CeWlyckowcnRYTC9zYWJ3SUplaUhnMHdtNjlmTGM4OHp6a3Zqc0MxWmI5eGtTWUYwa3E3NzltaFJyMlZ6M2VCY0p1bk5JMEhQbi9pRkQ1TVdYWHRLUk0rNjc1eDU1ZXNvVUhlVk1EYVptelpvbFF4OThVQkt0Z1ZSK3FPV0dmLzd4aDlTdlgxLzNuQnYxc2Rtb1NSUFpzSEdqN25IZXQ5OThJNTA2ZHRTUk01bzJhMll2NVRibG5iZmZscjU5K3Vpb1lLa1ZGZDkvLzcxTXNsNWZhaEN1bHF3V05EV1FVMHRmQjl4NnEvMDh4Y1RFMkFOMnAwMmROczFPdXYyTlNtbytzQklwRXp5Zm9GdlhuRjBUSnN2Qk45N1NIZWFvTVYzVjExK1M0bTNiNkI3L29tN3Nmajl2bmp3MWFaS3MrT3N2VjIvWW5VNjk5NnRYcXlhRDc3L2ZUdlJVTXV1bTJ3Y09sTGZmZVVkSFpxaWJFYnNURWx4Zk1hQzJMZFUvLzN5anY5c083ZHZMZDNQbkdybUdLeFNKZzZjZCsyMnhISHpoRmVQSnVmVU9rektEQnZwRWNnNzRpNFNkTzNVclo0Y1BINWJyYjdoQmJyN3R0bnduNTRxYXpWT0pFdnlQV3FyNjN2dnYyemNqZXZYdGE4OGtleUU1VjlSZ2NjZU9IVEpxOUdqN0JzKzFzYkd5ZE5teUFrc1FmRTNyVnExMHEvQlJOWGdPempDYlRQMnR6RjIzKzJWeXJtN3lmdm5sbDlLa2FWUHAyYnUzZlcwb3lQZWV1dEc3ZGRzMnVXL3dZS25Yc0tFOFBYVnF2bGFGbmF0ZXZYcnBsamxxbFptcUQrTzJKVXVXR1AvZDlyRmVRNmFTYzRVRUhaNlZkaUJSZGozd3NQR1pUU1d5V1ZNcGY5ZEFIUUZ3d3hycmcvdHNpN2pVbnVHMjdkdkw3QysrY0d5NVdwa3laZXc3Ky9BZjZuWDA4ODgvUzV0MjdlVG1XMitWTFZ1MzZrZThLZm5rU2J1R2d2cjNYbkhWVmZZV0V1U3NSaUd0Sko2NmI3OGtESC9FeWpETko1TkYybDRzRmU2OVcwZitRMjNQdXJwTEYrbHVKYVhxTThWckRoMDZKQTgvOG9oOVkvR0xMNzg4NitlaUV5NnhyajJxMEtWcGM3LzdUcmZjTTMvaFF0MHlRNjBJdUM0MmY4VWV6NFlFSFo2azlsb2xQUGlRcEZzZlRLYXB2Vll4ejArWGdKQVEzUVBBRGNlT0hyVXJaV2RIVmM3dGVPbWxkbFZ0SjExNHdRVkc3M3pEWFdvZjlkQUhIcERMcnJ6U1hyTHFTOVJOSjFYa1VOMkU2dDZ6cDJ6YzVNTFJXVDVJN2ROVlZmSUxHN1hGTStIaFJ5VGp3UCtmVEdGS2NNVUtFak41b2dRWTJsTmJFTlNLbXNsUFB5MHRXcldTaFlzVzZWN3YycnhsaXoyNzMrK21tK3g2S3lhRmhvWktkOE5KcHJKNDhXTGRjb2U2cHFvaW9DYXBteHZxZEJpVFNORGhQVmxac3UrbFZ5WHBwMTkxaHprcUthODBhWnlFbEMyamV3QzQ1ZGp4NC9ieTlUUFp2WHUzWEc0bFhEdDM3ZEk5emltTUEzMS9wV2JEMm5mc0tNKy8rS0xQTHhYLzhxdXY1S0xteldYc0UwL1lOeDN3LzBLQ2c2VkNoUW82S2p6MnYvRzJPMk9oaUFpcCt2eDB2eG9McVdNVHUxNXpqVHd5Y3FSOVBKcXZVTFBuSDgrYVpjK20vN0YwcWU0MTQ3cnJyak4rczFvdGNUZDVTc1MvcWFNeTFWWWlrMjdzMTArM3pDRkJoK2NjLzMySkpENy9zbzdNaWhwd2l4Uy9wSjJPQUxoSnpaNnJzMmIvVFJYNDZ0V25qNUhrWEZIVnh1SDdsbHFEVjdWRTNPbWowZ3FTU2lTZUdEZE9XbDU4c2F4WXNVTDNvbTdkdW9YdWFLcmpmeXlWQTlPZjA1RkJnWUZTWWZoUUtkS2tzZTd3ZlN0WHJyU3ZEUXQ4WU5ZOE8zdjI3clZ2VXM5ODkxMWpTOTVWWFFkMURKeEp1M2J2TnA0d24yN2V2SG02WlVaRVJJUjl5b3BwSk9qd2xMVDkreVhoL2dmdEplNm1SVFMvU0NvTXZVOUhBQXFDdXR0OU9yVThiY2dERDhpU1AvN1FQYzRLQ3cwdHRIdFovWWs2ci9pS3E2K1cvUzVVM2k0SWFsdEgzMzc5WEoxNThyS2FOV3ZxVnVHUWZ1eTQ3QnoraUNzMWVJcGZlWm1VNlhlOWpueWZXbExkdmxNbmlVOUkwRDIrUzkyc0huam5uVEp0K25RalNYcVJJa1drMnpYWDZNaWNiMTNhaDY2ZW8zay8vS0FqTTlUcEtpVktsTkNST1NUbzhBejFRYVFLb2JpeDF5b29xclRFVEoxay9BeDNBRG43N1YvNzA5VHhOMnJHd0pTeVpjdEtLY043eDJEVyt2WHI3UlVXSnMraDk0TEpUejFsN3hPRlNMT0xMdEl0LzZlT1FVMFlPVXJTRW5KM3lrVitoTmF1S1ZVbWpwT0FRUDlJQjM3ODhVZTVxa3NYdjlvaW9xclBqeGc1VXA1NTlsbmQ0eXhWamR5MHhTNFZ3VHlWa2lKL0dMcTUvN2NCdDkybVcyYVJvTU16OXIvK3BpVDkrSXVPekxIM25VOGVMNkdWb25VUGdJSnkraEwzbzBlUDJrZk9xQUdKS2VYTGw3Y0xUc0UzcVdySHNUMTZ5SUZFOHpkeUM5S2RBd2RLVnl2UndIODBiZHBVdC94ZjRydnZ5L0Z2ek04NEJoYUpsSmpwVXlTb1NCSGQ0OXZVcXF0dTNidmJzODcrUnEwc0cvYlFRL0xlZSsvcEh1ZTBiTmxTaWhjdnJpTXoxTEZuS1ZieWJOcm11RGpadTIrZmpweW56cXB2MTdhdGpzd2lRWWNublBoanFleWZQRjFIWnBVZWNMT1U2TkJlUndBS2twb04vZHNiYjc1cC9BaWNwaGRlU0FWM0g2V1dMNnFDVDF1MmJORTkva2tWTVp3d2ZyeU9vUGFlVjZ0YVZVZitMWG5OV3RrN2VhcU9EQW9Na0lwalJrbGszYnE2dzdkdDM3NWR1dmZvNGZmRkZlKzgrMjdIdDMrcGF1UlhYM1dWanN6WXQzKy83TGUrVFB0bTdsemRNa010YjNmcmlGWVNkQlM0OUVPSEpHSEljSFdMVVBlWUU5bWltVlFjd3I1endDdlVIbUsxVkRreE1WSEdqQjJyZTgxUnhhYmdteFl0V2lSdnpaaWhJLytrOW9TKy9lYWJVclJvVWQyRGtpVktTRlJVbEk3OFYvcXhZN0pqOElPU2RkSnd4ZkdBQUNuZDczcUo2bmF0N3ZCdGFzYThkOSsrZGhMbzcxUVJ5UnY2OWJOWEVqbkpkRlZ5Tlh2KzcrMXNUbE9yREV6dWRWYzM5dSs0L1hZZG1VZUNqZ0psbjNjK2JJU2s3OTZqZTh3SktsVktxa3lmekhubmdJZW81ZXo3OXUyVDk5NS9YNUp6T0JQZEtlcjhVdmdlOVRvWk5YcTBQUWp6VjJvQU9PS2hoNlJKa3lhNkIwcjVDaFhzeXNsK0xTdExkajA1UWRLMi9iTm9wZ25oOWV0SjlFTVAyb202UHhqNzVKT3kzTVVURDRLQ2d1eGlvMnBsaC9wU1c2WkNySEdsV3l1emRzVEh5NTJEQmpsNkxXemVySm1VS1dQMmlMMXZ2LzFXdDh3NGV1eVlyRHR0Ulo3VG9pdFdsR2JXOCtRV0VuUVVxUDF2elpBVEMzN1VrVUhXaFRONi9CZ0pMWVRucUFKZXBxcFVyOSt3UVY1NjJmelJpbW9nVmExYU5SM0JsNmlxN2FZcSszdUZPdkpvNkpBaE9zTGZHamRxcEZ2KzY5Q1hjK1RvWjEvb3lKeWdNbEZTOWFYbkpOQlBqcXo3K2VlZlplcTBhVG95UnhWcnZPTHl5K1dGNTU2VFgzLzZTYlp0MlNKN2QrMnl2L2JzM0NrYjFxNlZiK2JNc1crdzFhOVhULysvelBuSytsNU96aGFycXVRZERCOC8rck4xRGMvSXlOQ1I4OVRKRjA2dkxEaGQrL2J0alI5SmR6b1NkQlNZRTM4c2t3TlRudEdSUVZaeVh2cTIvbEx5eXN0MUJ3QXZlZk90dDJUTDFxMDZNcWRxMWFxdWZzRENHV3J2K2JQUFA2OGo4NnBVcVNJMzMzU1RQRDE1c3N5ekJzRWIxNjJUclhGeHNtLzNidG0wZnIyc1c3MWE1bi8vdlR6M3pETXljc1FJdWFaclY2bFh0NjRFNStOVWtLalNwZVdkR1RQc21UajhVKzNhdFhYTFA1M2F2a04yang1cno2S2JGQkFTTEpVblBDRmhmbElnViswM0h6QndvSTdNVUxQaXZYcjJ0Ti96Yzc3OFVnYmVmcnRkc0ZDZEJxSzJvNmd2dFNjNUppWkdMdTNVU2NhT0dTUExseTJUMlo5K0t1YzNiS2ovRnVlcEZVWDNEeDdzMko1NzlYUGVjTDNaby9aVVljKzllL2ZxeUhuZldkZGtrOXhjM3E2UW9LTkFwQ1VlbElUN0gzRG52UE1MbTBqRkI1bVZBTHhxenRkZjY1WlpsYUtqODVWRW9XQWNQSGhRZnZyNVp4MlpVNzE2ZFhsdjVrdzdJWC90MVZmbHZudnZsZmFYWEdLZm02K1NkbFhCVi8wM0ttRnMxNjZkM0huSEhmTDQ2Tkh5NmF4WnN1TFBQMlZYZkx4OC9PR0g5a0MzU3VYSyttL05uU21USmttTTlUM3d2L3g1VzBwR2NyTEVXMk9oek9QbWk1dEYzWGFMbE9qWVFVZStiOUtVS2JMVllGSFI0bGJpUFhQR0RIbjNuWGZzbTd1NXBaYkFkK25jV1JiLytxdWQwSnV5ZmNjT2VmNkZGM1NVZjVkWTF6cFZNTTZVWk91MS9xZDFuVFJCM2NUOTRndHpLMURVNy84aWw0OTZKRUdINjdJeU0yWFg2TEdTdnRmY1VRaC9VOHU1WXA2ZEtvRWNxd1FVZW01L3dNSVpxMWV2dG8vZ00rbmkxcTNsajhXTDdkbXl2TXhpcTBHNVN1Qmp1M1d6aTd5dFc3TkdmbHE0VUhyMjZISFdJNHh1Nk50WGJyamhCaDNsbjdweHNOTWF2T2ZtYTlXS0ZjYlBXbC8xMTE5bi9ONjUvVkw3WS8yUkdndnRmbXFLbkZxelZ2ZVlVNlJOYTZrNDlINGQrVDYxRDl2SjVQVGYxRXFyRDk5L1gzcjM2bVhQTHVlRjJsTDE3UFRwY3YrOTkrYjU3emlicWRiZjc5UzFVYTBHdUxSalJ4MlpNWC9CQXQxeWxxb1FiL0owajhzdnZkVDExVTBrNkhCZDR0c3pYVG5qVTRLREpIckNFeElhWFZGM0FDak1hdGVxcFZ2d0phWm56MVZpL2NGNzd6azZlNlNLUjdWcTFVcmVmL2RkZTNuc3hQSGo3UlVjL3g2b3E1bjJwNTkrMnRFQnZFb3UxSG4vdWZsU1MzVk5LMmQ5anpOOTc5eCtxWnNmL3Vqb0R3dms4QWNmNjhpYzRITGxKR2J5UkFud28rZHhpdldlVWFkL21ESjYxQ2k1N0xMTGRKUjM2clU3ZnR3NFk2dEFEaDgrTEsrKzlwcU84a2RkZzlRTlNwTisrZlZYM1hMV1h5dFhHaTB5YTdySy9abVFvTU5WU1N0WHliNHA1Z3Q2S0tYNjlwYVNuZnhuT1JlQS9GR3pwUEE5Sml2ektwZGJBL0dLRmMzZHlGVko1Z05EaDlxejZtcmZ1dHF2cXFoSzBHKysvcnE5L3h5RlM4cXVYYkp6eENnUmcwV3psSUN3TUlsNWZxcUVsRE4vSThZdE8zZnVsTGNOSHJmWW9ubHplM3VMVTlRS2xSZWZmMTRpRFoxRThKcDFEVkY3MHAyZ2Jrb1VNVmluWmMzYXRmWk5CYWN0TURRenI2aXRSODJ0MTRUYlNORGhtdlJEaHlYaDNxSG16L2kwaERlb0o5R1BQcXh1Q2VvZUFJV1pXbTRZY3c3N0NPRWRhOWV0MHkwenFydFUyVi9OYk44eGNLQzlySHpVeUpFeWVQQmdlOThuQ3BkTWZieHM1cEVqdXNlY3dLSkZKTXpQVHE2WStlNjc5bm5ncG93WlBkcnhXaVdxYnNXdHQ5eWlJMmR0Mjc1ZEZpNWNxS1A4S1ZxMHFIVHAwa1ZIemxOSHc2bHE3azVTKzg5TkZvanIyclZyZ2F6aUlVR0hLN0xTMHlYaG9VY2tMV0duN2pGSGZTQlZlWDZhQkJyZVZ3ZWdZS2dqWWE2Kzhrb1ovK1NUOXBFM0NkWUE1ZWpodzNMTStqcDY2SkJzMzdKRmZyTUdBV3IvMzExMzNHR2ZLOTNtNG92dEdVdjRuc1RFUk4weUk4MkZZcVduVTNzOUh4czFTcDRZTThiWTNsUjQxLzZYWDVQa0pVdDFaRmJHd1VPeTgvRW43ZjN1L3VEa3laUHluTUc5NTYxYXRwU09odlpoMzNQMzNjYjJNYi9sNElvQ1ZUZkRwQ1ZMbHVpV00vYnMyU01iTjIzU2tiT0NBZ1BsK3I1OWRlUXVFblM0SXZIRGorWEUvRVU2TWljZ09FZ3FUWjRnNFp4MURQaWRxS2dvZWZ5eHgrd3EyMTk4L3JrTWUvQkJlK2xaaFFvVjdPV0RFZGFYbXFXc1ZLbVNOTHZvSXJucnpqdmwyV2Vlc1l0L2ZURjdOc2tRemlodTgyWjdGc1p0dkI0THArQXlVYnJsanVOenY1TkRuMytwSTkvMncvejVjdURBQVIwNTc1YWJiemIydnF4bWpVc2JuWCsranB5bDZuUWtKU1hwS0gvYXRXMXJmNWFhb3Y2dFRsNXZmN2NTZnFlVytQOWI1Y3FWcGVtRkYrcklYU1RvTUM1NXpWclpOMjZTV29laWU4d3BxZmFkWDVIL3doNEF2RU1ObDlTeE5TdVdMWk9Sanp4aUorcm5RZzI0MUJKMytDYlRpZXlDaFF0bG04SGptb0RUUmZYc0xwSE5tdXJJQmRiWWE4K1RFeVROWUdMcmxsbXpadW1XODlRS3E2NEdsM2VyWmRMWHhjYnF5Rm43OXUyVHBVdWRXWlZScWxRcHUycTVLV29mZW1wcXFvN3liOUVpYzVOLzNidDNMN0FpbFNUb01Dcmp4QWxKR0RwY3NnenVGL3BiV1AyNkV2M0ljRFdhMHowQWZKMzZjTHovL3Z0bDFrY2ZHUzNrQmU4eWZjeVdxZ1o5ZGRldWtwQ1FvSHNBY3dLQ2c2WFNFNDlMZ0l2SE5tVWVQU1k3UjQxeFphTEVsSlNVRkpuenpUYzZjbDR6NnpwVHBrd1pIWmx4bWNIRTkrTlBQdEd0L092VnE1ZHVPZStFbFJjc1g3NWNSL21uYnJDYW9HN1k5TC9wSmgyNWp3UWR4bVJsWk1qT2thTWxOYzdjMllSL0N5eFdWR0plbUM2QjRlRzZCNEEvR0hUbm5USnA0a1RIaS9iQWQxUnpvYmlmT2tPM1djdVc4c0dISHpvNnV3T2NTVVR0V2xMMnZydDE1STdqOCtiTFFSOWU2djdyYjc4WlBWcXRrK0V6d0pXNmRldnFsdk5VOFRWVmhNMEo2bGc0VlN2REZMVlZ3UW03ZHU4MnR2KzhacTFhY2w3dDJqcHlId2s2ek1qS2tzVDNQNVJqWDVtNzIvbGZnUUZTY2V4ajdEc0gvRXpucTY2U3laTW1HVi9pREc5cjFLaVJicGwxOE9CQjZYL0xMZEswZVhPWjlja25jdlRvVWYwSTRMeHl0L2FYc0xwMWRPU092ZU1tU3VxZXZUcnlMVjkvL2JWdU9VOTl4blJvMzE1SDVvU0hoOHY1RFJ2cXlGbTdyV1QxMEtGRE9zb2ZkVFJrRzRQSGtxcnowSjNZaHo1MzdsemRjbDczMk5nQ25SZ2dRWWNSeWVzM3lMNkpVOXpaZDk2enU1Uyt0cXVPQVBpRDBxVkx5eXN2djF4Zys3L2dIZXBjWXJkdTBxaEI0NFlORytUNmZ2Mmtib01HY3UvOTk4dXlaY3ZzNWJXQWs5U0t2OHFUeGt1QWk2ZExaQncrSWdtUGpMSlhPUG9TVlFUc3g1OSswcEh6MVBGaTZpZzAwOVIxckdLRkNqcHkxckZqeCt5Q2wwN3AzNysvYmpsdjA2Wk5qcXhVTXJhOFBTeE1icjc1WmgwVkRCSjBPQzdqK0hGSnVHZXdaQ1dmMUQzbWhOYXFJWlZHajJUZk9lQkgxQ0RteWJGajdidjRRSTBhMW5VK09scEg3bEhIdTczOHlpdlNxazBiYWRTa2lUd3diSmhkaU1udFk5bmd2NHJVcnllbCsvZlRrVHVTZnZsTkRzMytRa2UrUVMxdFg3OSt2WTZjcDA3L0tGbXlwSTdNS21Idys2eFpzMGEzOHEvOUpaZEk4ZUxGZGVTc25idDJ5ZmJ0MjNXVU4rcW02ZEpseTNUa3JBYjE2eGZJWjg3cFNORGhyS3dzMmZYNGs1SzZiWWZ1TUVmdE82LzY4dk1TYVBBNENBRHVVL3YwYnV6bjdxQVYzcVVHejdIZHV1bW9ZR3pkdGsyZWZlNDVhZDIycmRTb1ZVdjYzWFNUZkR4cmxsMDlHY2d6TmFNNitGNEpxUnFqTzF5UW1XbFhkVS9aYm42YzVoU1Z6S1VhdkRHbTlocUh1clNTb1Z6WnNycmx2TjhXTDlhdC9GT25wYlJzMFVKSHpwdjc3YmU2bFRmeENRbjVUdkt6MCszYWF3dDg5UjRKT2h4MWNOYW5jblMyQzBWSXJEZE94ZEVqSmJ4bURkMEJ3QitvMmZPSGh3KzM5K29CZjd2bjdyczljMVRlWGlzcC8rampqK1dHRzIrVUt0V3FTWXRXcldUTTJMR3k2TWNmalJheGduK3lsN3BQZU1MVmxZQ1p4MDlJd3FPamZXYXB1eXFBWmxMVkdQZHVrSlFyVjA2M25MZG56eDdkeXIvQXdFQzV5ZUNOOHZ4dVdmamhoeDkweTFtaElTRkdsL2ZuRmdrNkhITnk0eWJaTS9wSlYvYWRsNGk5UmtwZlY3QXpLZ0NjVjdsU0pmdnVOWEM2NnRXclM0L3UzWFhrSFdyUCt2SVZLK1RKOGVQbDhpdXZsRXJXUUw5WG56N3lzWlhBcThHeUU0V1E0UCtLdFdndXBhN3ZyU04zSkM5ZUlnZG12cWNqYjFPbkxKaFVxblJwM2ZKdGNYRnh1dVdNSzY2NHd0aktncFVyVithNXRvZTZybjVqNk1pOXBrMmJHcXNUY0M1STBPR0lqS1FraWIvN2ZuZk9PNjk3bmxSK1lqVDd6Z0UvMUtkM2IzdEpNM0E2dGJKaXpPalJVcXhZTWQzalBXclFlUExrU1puOStlZHl3MDAzU2YyR0RlV0txNjZTeno3N2pKbDFuRldGd2ZkS2tPRnp1UDl0LzlSbjVKUVBMSFZYTjhGTWVudkdES2xlcTVZclgwOVBtNmEvcS9NT0hqb2tweHdjaDVjb1VVTGF0bW1qSTJlcGxVanFtTFM4VU5mVFB3MjlKcTY5NWhyNzg2YWdrYUFqMzdJeU0vK3o3M3pMTnQxalRrQkVoRlI1NW1uT093ZjhrRnBhTnVDMjIzUUUvRlBWcWxYbGlURmpQREY0eW8wVFNVbXljTkVpNlgzOTlWS3ZRUU83eU55T0hUdVlWY2NaaFpRdUxaV2VmRnl0TGRZOTVtVW1KY3ZPaDBkS1ZucTY3dkVlVlpUUnlhWGJaNklTdnAwN2Q3cnlwYXF0bTZMT1FWYzNDWjJpcnJVOWUvVFFrYlBVNzFVVjNjeUx6WnMzeTRFREIzVGtIUFh6M21CZHI3MkFCQjM1ZHZpTHIrVG9wNS9yeUNEcmpWUHhzUkVTY1o3NW96QUF1SzkrL2ZwMkVnWms1NDZCQStYcXE2N1NrZS9ZdDMrL1hXU3VWcDA2MHZlR0cyVEZYMy9wUjREL1Y2SmpleW5XcVlPTzNKRzg5RTg1OFA2SE92SWV0UXo2Rk1jYzVrNVdsdU9uVEppY1VmNXF6aHpkT2pmekRPMC92N2gxYTZuZ2dlWHRDZ2s2OGtYdE85ODlZcFI5VVRDdGVMZXVFdFc3cDQ0QStKdE9uVHB4N2pseUZCd2NMRFBlZWtzdWFOSkU5L2llVHovN3pDNHNweEoxZFI0dzhMY0E2L3BYZWV4b0NTcmx6cEZmZjlzL2FhcWMzT1RzL21XbnFQT3k4N3BYdWJESnlNeDBmSWErVEpreWN2bGxsK25JV1V2KytFTXk4bENvOEx2dnY5Y3RaL1h0MDBlM0NoNEpPdklsL3Q0aGtwV1NxaU56UXV2VXRqNjBIck5uMFFINHArczk5T0VJNzFMN0lyLys2aXRwMHJpeDd2RTlhcG43SjU5K0trMmJON2Nyd0NjbkordEhVTmlGbENzckZSNTlXRWZ1eUR4NVVoSWVmRmd5cldUWWExVENlZlRvVVIyaElQVHAxVXUzbkxWdjcxNTcyZis1T0hqd29QeTVmTG1PbkJNUkVlR3BBclVrNk1pWE5KZk9PNDk1ZHFvRUZTMnFld0Q0bTByUjBWS3ZYajBkQVRrclc3YXN6UHZ1TzduODBrdDFqMjlTQloxVUJmaUwyN2ExOTFVQ1N0UTExMGpSRHUxMDVJNVRhOWZKL2xkZjE1RjNxSnRaMUcwb1dCMDdkcFNRa0JBZE9lZWtkZjA3MSswK2E5YXVkWFNmL2QvYVhIeXgwU1B3emhVSk9qeXYvTU1Qc3U4YzhITk5talF4TWdDQS95cFpzcVI4OXVtbk11VCsrKzB6ZTMyWkduUzJ2ZVFTbWZ2dHQ3b0hoVnBnZ0VTUEdpa0JMcC85ZitERlZ5WFpTdFM5Sk4xSHptcjNaOUhSMFhKeHExWTZjdGJYWDMrdFc3bXphTkVpSXpkc2JqUjQ1bnRla0tERDg5SlU5VTd1bmdKK3JSckY0WkFIWVZZQ00rbXBwMlRXUng5SmxjcVZkYTl2U2p4NFVIcjA2aVh2dmYrKzdrRmhGbDQxUnNvUEcrTHExcjZzbEJUWk9mSXh5WEs0MEZoK3NQM0RHL3IyN2F0Ynpqclg1ZXJ6NTgvWExlZW9iVk9tOXRubkZRazZQTy9ncTIvS3NaOS8wUkVBQVA5MFRkZXVzdXF2dit6WmREWFk4bFdxSU5hQWdRTmwxaWVmNkI0VVptVnU2Q3ZoRGR6ZCtuTnE5VnJaKzhKTE9pcDR4ZGplbUd0cUpWRmtaS1NPbk5XaGZYdjdocWpUMU9xaC9mdjM2eWhuaVltSnN2VFBQM1hrSEhYV2UxUlVsSTY4Z1FRZCtSTFpvcGx1bVpPVm1pWTdIeHdocWJ2Tm5vTUpBUEJkUmEyQnZKcE4vOHNhd1BYdTFjdllRTlcwOVBSMHVmMk9PMlQ1aWhXNkI0VlZZR2lvVkprMFFRTEMzVjNxbnZqNjI1SzBhcldPQ3BhcEk3NzhrWHFtMUVrWEpxZ2pVQnMyYUtBajU2amw2cjh0WHF5am5DMysvWGY3K3VpMC9qZmRwRnZlUVlLT2ZLa3k5U2tKS21QK3JsUEdnVVNKSC95QUp5dU1BZ0M4bzNMbHlqSnp4Z3hadVh5NTNIdlBQUkpWdXJSK3hIY2tKU1ZKLzV0dlpua3Y3Qm84Wlc2L1RVZnV5RkpWM1ljL1lsZDNMMmlxTmduMVNYSW53T0FNdXBxZHY3bC9meDA1NjdmZmZ0T3RuUDMwMDArNjVaenk1Y3JKcFowNjZjZzdTTkNSTHlIV0M3dktNMU1rSU1UTUhidlRuVnk2WFBZOSs0S09BQUE0TXpYclZxMWFOWms2WllwczJyQkIzbnJqRFduVnNxVlB6Y1p0MkxoUkpreWNxQ01VV3RacnR2eWR0MHRvclpxNnd4MnBjWnRsNzRzdjY2amdxSVN6U0pFaU9rSk9WQklkR2hxcUkrZDF2dnBxQ1RQdzk2dVo4ZHdVZnZzMWw0bjh1VkRWMjlYcUs2OGhRVWUrRld2ZFNxS3NEdzgzSkw3OHVoejcxZmszS0FEQVB4VXZYbHo2M1hDRC9MUm9rV3hjdDA0bWpCdG5EOHBNRERTZDl0SXJyOGkrZmZ0MGhNSXFNRHhjS2s5NFVpUW9TUGU0UTQyNVRoZzRjL3BjcUgzUDRTNVhzL2RWNWNxV05acWdxMnJ1alJzMzFwRnpWcTFhWlI4NW1STjcvL215WlRweVR1L2V2WFhMV3dLeURCNHVtSldlTHB1NnhFcnF4ampkazcyb1FRTWxldGhRSGYyVFd0YThvVlY3eVRoMFNQZWNXWU8xeXlYUVIvZWNtWlQ0NWd6Wjg4UUVIVG1yWWR3YUNRZ090bi9YMjI2OVE1SisvbFUvWWs1d3ViSlM2NnZQSk1UNnM3QTZNbitCSkF3WXBLTXpLOUVqVm1JbW4vbjNucFdSSVhHZFl5Vmw0eWJkazcyUzNicEtsV21UZGVSL1RzWEhTOXhsbmUzWHNFbUJSWXBJblFYZlNZZ0xXMEpNdUgvSUVIbnhKWE9GZys2KzZ5NlpQbTJhanJ4TmZXdzJhdExFbnVFMDVkdHZ2cEZPSFR2cXlCbE5teldUVmF2TjdTdDk1KzIzcFcrZlBqcnlOdlU3UEhic21Id3pkNjRzdEJKM3RjUnl5OWF0UnZZMzV0ZXdCeDZROGVQRzZjaFphdEJidFVZTnV6aWRLWHQzN2ZKY0FhWi9XOWV5bmFRZk9LQWpjNklualpjeTNXTjFkTzUyVFhoS0RyNyt0bzdjRVZJMVJzNmJNMXVDQ21oOHJkNlRkUnMwa0IwN2R1Z2U1Nm5WTnUzYXR0V1I3enF2ZG0xNWFQaHdIWm54MHNzdnkzMkRCK3ZJT1F0LytFSGF0R21qby8vMXlhZWZTdDhiYnRDUk05UzU1MXMyYlpMdzhIRGQ0eDBrNklXQUd3bTZrbmJ3b01SZDNVMHk5cHYva0l0czNWSnF2UDJhQkJUU2ZVa2s2TTRoUWM4ZEV2VC9SNEorWnI2VW9QK2JTZ0xVVExWSzJOV1htcWxSbFlVTkRwRnlUYzFhcVpsL0U0TklFdlQvOEpVRVBlUDRjZGw0OWJXUzduTFIzTkw5K2tybHgwZlp5KzBMd2lVZE91UzZrRmhlWEhYbGxmTGw1NS9yQ0RsUjE4VnFOV3RLbXNOSDhZMTQ2Q0VaTzJhTWp2N1hnTnR2bHhrelorcklHWDE2OTdicmxYZ1JTOXpobUJEckE3anlsSW11TE1GS1hyeEU5cjd3c2hvcDZ4NEFBUEpHVlQ2dVZLbVMzRDVnZ016KzlGUFpzSGF0L1B6amozTFhIWGRJMVpnWVk1V1JjMlB2M3IyeWN0VXFIYUV3Q3lwV1RDbzlhU1V4Z2U0TzN3OS9PRXVPLzFsd1M5MmJYWFNSYnBteGVzMGF5Y2pJMEJGeVVyWnNXV25ab29XT25KUFRQblIxQTNIeGtpVTZjazZQN3QxMXkzdEkwT0dvNG0wdmxqSjN1YkFmM1hvVEgzenhWVG4reDFMZEFRQ0FNMVRSb0JiTm04dXp6endqNjYxay9hZUZDMlhRWFhjVlNFWDR6TXhNK2ZycnIzV0V3azZOczBwYzAxbEg3bEFyekhZT2YwUXlrZ3JtVklIYXRXdnJsaGtuVHB5d3Q3emc3RlNoeld1NmR0V1JjOVNLdEpTVUZCMzkwNTQ5ZTJUTGxpMDZja2I1OHVYdGxSTmVSWUlPeDVXL1o1QkVORGQ3dDFQSlNrdVRuZmM5SUdrdUxLa0hBQlJPNm9pblpzMmF5VFBUcHNuV3padmxwUmRla05xMWF1bEgzYkhrano5MEM0V2RPa29yK3VGaEVoVGw3czJpdEIzeHNudmk1QUpadWRqQ3dJenQ2VlJ5dmludTdOdHg4Ui9YWG51dDR5ZGlxSlZDMjdkdjE5RS9xVG9oVHE5dzZOSzVzOUdDZXZsRmdnN0hCWWFGU3N3elV5U29iQm5kWTA2Nmxad25ESHRZc3RKWm1nUUFNRXNkK1RUZ3R0dGs1WW9WOHVUWXNSSVJFYUVmTVV2dGlXY0pMdjRXVXJhc1JJOGU2ZnBTOXlNZmZ5TEhmak8zRnp3NzFhdFZNM3JVbWxxbDhzTVBQK2dJWjZOK0g4MmJOZE9SYytaa3MxTEk2UlZFNmppNjNqMTc2c2liU05CaFJHaUZDbEw1NlluL0xTQm5VdEpQdjhxKzUxL1VFUUFBWnFsWmRWVXQrZk5QUDVVaUxoU25WVVhzZkhVSnJoY3I0L3VEa2xkZUljVXVkYmFRNU5uWVM5MkhqWkQwdzRkMWp6dlVscFA2OWVycHlBeVZISHFoS0tTdk1GRVE5RXlGQUpPU2toemZmMTdSeWxGYXQyNnRJMjhpUVljeHhkdGNMS1h2dUUxSFppV3EvZWkvc3dRUUFPQ2VEaDA2eVBCaHczUmtqcHJoVS90a25hYUszem05VlBYZjJOdHJSa0JRa0ZSNi9GRUpMRkZjOTdnamZkOSsyVFYra3F0TDNZT3NuL1hTVHAxMFpNWmZLMWZLdG0zYmRJU3p1ZUx5eXgwdm5ybDh4WXIvT1E5ZEhYK3BLc2M3cVZ1M2J2YjUrbDVHZ2c1enJBLzlpdmZmSXhFdG5WOEc4Mi8yZnZRSEhuTDlyaTRBbUtBU01pZXBtU0duajhYQmZ3b20zWGJiYmNhWHVxdmYzNzhIcms1UWcxVFRDYnJKSTl3S3U5RHk1YVg4ZzBOMDVKNmpuMzhwUnhmOXFDTjNYSEhGRmJwbGhscnA4WlpIajl6eW9obzFha2pEQmcxMDVBeDExT1d1M2J0MTlCK0xGeTkyZEdXRHV0blR6K0h6MUUwZ1FZZFI2cHp5S3BNblNsQ3BrcnJISEhVdWFNSkRJNDJmWncwQXBoMC9mbHkzblBISnA1L0srZzBiZEFRbmxTNVZ5dDZUNll0TUorZktab2VyTCtPZnl2VHFLUkZOTDlDUlN6SXpaZGRqWXlYOTZGSGRZWjQ2VlVFZDhXWFNqSGZlc1pkVTQrelVQdTRiKy9YVGtUUFVUWkxmZnZ0TlIvOHhaODRjM1hKRzFhcFZwZEg1NSt2SXUwalFZVnhZNVVwU2FlcFQ5bklzMDA3TVd5RDczM2hiUndEZ201eGMwaGNmSHkvM0RSNnNJLzl5OE9CQk9YQ2dZRS95VUFOVnRTZmRORFh6NDdUdzhIQUpOSnlrcTJXck1DY2dPRWdxajM5Q0FpTENkWTg3MUtUSXprZEgyOG02RzlSeTZsNkdDM3VwNDd6R1B2R0VqZ3FlMHl1cG5LYU9LWE82RXZyY2I3L1ZyZi9jcVA3bFh3bDdmbDE3elRXZXJ0NytOeEowdUtMRUplMmsxSzAzNmNpc0ExT215L0hGemhhVUFBQTNyWEFvcVZIN2YvdmRlS01rSmlicUh2K2hrdk91MTE0cnpWcTBzQ3N3RitSZzF2UnVYSldjRnk5dVpxOXg0OGFOZGNzTU5TTkc4UzJ6SW1yVmxITDNEckszRnJycDJMZmZ5NUg1QzNSa25xcThiWHJWeDZ1dnZTWnIxNjNUVWNGUTI1SGVmZmRkdWVubW16MWRaTEZhdFdwU3ZYcDFIVGxERllyNysyZGV0V3FWb3lzYTFNM1VXL3IzMTVHM2thRERIZFlGdGVLUSt5UzhTU1BkWWM1L3FvdytMT21IaitnZUFIQ09HaUNXS2xWS1IyYW9ZN1h5bTlTa3BLVElMYmZlNm5nRlhDOVFNeXZYeHNiYXo1UGFzOWpGU3RUNzMzS0w3UDdYL2tVM3FMM2hwbStBaEFRSFM0a1NKWFRrck1xVkt1bVdHY3YrL05NKzR4aG1sZTEvbzRUVnE2TWpsMlJteWE2Um95WE5wVlVzelpzM04xN04vWVNWRUtxYm1rZGRYTDcvTjNYTlg3bHlwVng2K2VWeXk0QUI4dkdzV2ZMc2M4OTU5Z2FYV2puVTcvcnJkZVFNZGVOMTE2NWRkbHNsNjA3KzdPZlZyaTIxclM5ZlFJSU8xd1JHUkVqTWMxTWwwTkFzd09uU2QrMzV6L25vSGw4ZUJNQTNtUzRLdG5yTkdsbTdkcTJPenQzSmt5ZmxaaXM1LzlMaC9YdGVvS3FaOSs3YlY1Yjg4ZjhuZDZnendqLzg2Q05wZk9HRjh0U2tTVVlxbm1mbnA1OS9ObjVqb0VtVEpzYVcwVmN5bktDcjM4WGpZOGJrZWFETk1XMjVFeGdlTGxVbVBHblgvbkZUeHNGRHN2T3hzU3E3MUQzbXFKVWtRMXpZcnJQR3V2YjI2dFBIOFZvZ09WRko2VzIzM3k0dEw3NzR2OGVOcWZmTXFOR2paZjc4K1hic1JkZkZ4anE2L1ViZDhGUTM5UlNuejZidjBxV0w0NVhuVFNGQmg2dkNLbGVXU2xNbTZNaXNFL01YeVlGMzN0TVJBRGpIMUd6bTZjWlBuSmlucEVZTjlHSzdkN2NMdy9rYk5XRHVlOE1OTWkrYmdkdVJJMGZrMGNjZWt6cjE2OHUwNmRPTnoyeXIvZStEaDVpdm9uM2hoUmZxbHZOYXQycWxXK2JNZk84OWVlT05OODdwOWJ4cDB5WVpQSFNvdEd2Zm5rcnd1UlRab0w1RTNlTE9kc0xUSFo4M1h3NTk4WldPekZJSllhWG9hQjJaczJEaFFtblRycDJzVzc5ZTk1aXhkZHMyR1RaOHVOUnIwRUJtdnZ2dS85eVFVcTk5dFRwbysvYnR1c2RiMUJMM2VuWHI2c2daMzgrYloyL1ArdkhubjNXUE0yNnpua2RmUVlJTzE1VzhySk5FM1RsQVIyYnRuelJWa2xhdDFoRUFPTVBwNDJYT1JDWFlMNzM4Y3E2VEdqWHo4Tjc3Nzh0RnpadkwvQVh1N1F0MWkxcXlQMkRnUVBuMnUrOTBUL1pVa2IzaER6OHNOV3ZYdGd2a0xWMjYxUEZqNXJaWkErYk9YYnZhQTJ5VDFMNUprOFd4YXRXcVpYOFBrOVJ6Zjg5OTk5bUp4dXJWcTgrWWNLdlg3MFlyS1gvbm5YZmt5cXV2bGtZWFhDQXZ2UGlpdlkxQkpTN0loWUFBcVhEL1BSSmF2YXJ1Y0lsMWpkb3o3aWxKZFdFclE3Rml4ZVRSa1NOMVpKWkt6bHUyYm0ydnlqbnM0REcrYW9XVG1oVlhLNEhxTjJ3bzA1OTlWazdtY0l6aS9nTUg1TnJycm5OMVpWQnVxWlU5dlh2MTBwRXpWTjBLZGMxMnNxN0lCZGIxUkIwTjV5dEkwRkVnS2d5K1Q4SWFtTjFIcEdSWkY4R0UreDdnZkhRQWpsTEZjVXhUaWZuUUJ4NlFJVU9IMnJNbmFobjN2NmsrZFhhc0tpalV0Rmt6dWVXMjJ5VHg0RUg5cVA5UXladjYyVDZiUFZ2MzVFNnk5Um1nYm5LMGJkOWU2alpvSUk4OS9yZ3NzeEkrTlR1VGw5VUphc0NvS2oxUGZPb3BhWExoaGJMaXI3LzBJK1pVcmx4WnpyY0c4YWFvR2JDU0pjMGZoWnBoUFhjZmZQaWhORy9WU2lyRnhOaEp1TnFHMGNkS1VscGRmTEZVcmxwVkxyQ2UwOXNHRHJSdk1KMytlbGUvTjdVM0ZXZW5scnBYR2pkV3JRZlhQZTdJT0hSSWRvNGNMVmtaNXJjV1huLzk5VWJmRTZkVHliUmFsVk8zZm4xNWNQaHdXYjU4K1Rrbnl1cTFyRmJ6cU8wd2FsVkluWHIxNUtvdVhlenIyWm11NjJleWJ0MDZ1ZU91dXp4WjJWMGw2RTdlNU51d2NhTjg5dm5uZWJwR1owZFZiemQ5STlKSkFkWVA3OXhQL3krcVdOZW1MckdTdWpGTzkyUXZhdEJBaVI0MlZFZi9sSm1hS2h0YXRiZmYvRGxwc0hhNUJFWkc2Z2gvUzN4emh1eDV3c3l5OG9aeGF5UWdqL3M1VG0zYkxsdTZYaWVaU2NtNng1eWlWMTRtMVo2ZjdzcFJiMjVRVlZNVEJnelMwWm1WNkJFck1aUFAvSHZQc2o0UTRqckhTc3JHVGJvbmV5VzdkWlVxMHlicnlQK2NpbytYdU1zNkd6OC9QN0JJRWFtejREc0pLUk9sZTN6TC9VT0d5SXN2dmFRajU5MXREVHltVDV1bUkrLzdhK1ZLYWQ2eXBhTURpSnlvNDdCcVdJbVVPZ3Y0NzJSS0xlZitmY2tTMmJscmw2dDdKYlB6enR0dlM5OCtmWFRrSERWenJoSTVwNWJzcXlKL1phS2k3SnNzSFR0MGtQUFBQOTh1UEZXNmRHbTdVcnJhVDZtKzFNQlpmYW1aTTFXSTdwZGZmcEh2dnY5ZS9zekRBRDAvSG4za0VSbHRKUWdtWGR1dG0zeHoydkZHWGpUNHZ2dGs4cVJKT25MV3VwYnRKTjJGUW1mUms4WkxtZTZ4T2pMSXVpNGxQRFpHRHIvL2tlNXdpZlhlcXZUVU9JbHk0V2Y4MlhvL3FtSnFCWkd3bGk5ZjNpNDQxckpGQzZsUXNhSjliVmJYanJEUVVFbTNyaGxxbWJxNnFhcUtJOGJGeGNtdml4ZkxnZjM3NWVpeFkvcHZ5THVuSmt5UW9TNXNxemtYNm5mUXVrMGIrOXJvbEwrdndVNVExL3kxcTFiNVRJRTRoUmwwRkpqdzZ0VWsycnFRaXd0M3RFNThPMDhPekppcEl3RElIelU0aTdDU1pyZW9HV1MxM1BLdEdUTmsyalBQMkYrcXZYN0RCazhrNTZhb2dhN2E0KzNrZm5wMVUrVkFZcUs5ZFBxcHlaT2wzMDAzeVlYTm1rbTFtaldsZE5teVVyVkdEWHZaYVl5VndLdTQ1bm5uMmZ1Z0gzbjBVZm54cDU5Y1RjN1ZUWU43NzdsSFIrYjBNWEJqeFdrdnZmS0tiTEtTSGVTQ1d1bysrRjRKS2xkV2Q3akVlbS90blRoWlV2ZnQweDNtWE55NmRZRWRtYVZXTGFrYkJKT2ZmbG9lZVBCQnUrWkhwOHN1a3phWFhDTHRPM2EwYnh5bzdUaHE1bjNHekpteWVmTm1SNUp6WmZUamo5djc0NzFFelV4MzY5Wk5SODV3S2psWExtalN4S2VTYzRVRUhRV3ExRlZYU0ttK3p1NWR5YzcreWRNbGVXM0JubTBKd0Q5RVJrWktodzRkZEFRVFZISisvK0RCOHZxYmIrb2VkNmlWQ2ZFSkNZNE5xUE5qMEoxMzJrbTZhWmQyNmlURml4WFRrVGVwbFJRUFBmeXdhNnRXZkYxSVZKUlVHalBLbFVtUTAyVWNPaXdKd3g4eHZ5ck4rcm1lbmpMRjhRSmxYbmZLZWgvYzFMKy83Tml4US9kNHc1V1hYMjdQVkh2UkRRNGZCZWNHRW5RVUxPc0NHejFxaElTZmI3N2dVdGFwVTVKdzcxREpPTzY5SWhzQWZFL1BIajEwQzA1VFN5WWZIRFpNWG4zOWRkMVQrRFNvWDE4ZWZ1Z2hIWmxWcGt3WnVleXl5M1RrWFY5Lzg0MHMrdkZISGVGc1NsemFTWXBkM2tsSDdrbjZkYkVjbkdYK0ZJa2lSWXJJekJrejdNSnhoY20rL2Z2dFdYc3ZyWjVxMUtpUko0dXdoWWFHU3RldVhYWGtPMGpRVWVBQ3c4SWs1b1ZuSkxCWVVkMWpUdXEyN1pMdzBFaDdEellBNUllYWRWUURSRGhMTFcxOGN0dzRlZkhsbDNWUDRhTUdsYTlhUDMrWTlmbm9Calh6OWNqRER6dDZuckVKYXZaOCtFTVBjZXhhTGdVRUJrcmxzYU1sS01yOEtveC9zSDVQZThaUGtsTTc0bldIT1kwYk41WTNYMy9kZnM4VUpxdlhySkZCOTl6ajZGTHcvRkFyR2t6VUlNbXZwaGRlS05XcXVueXFnUU5JME9FSllWVXFTL1NUajlzejZxWWQvMjZlSFB6d1l4MEJRTjZvUWtHeER1KzdNeTBxS2tvdWFkZE9SOTZqRXJCSmt5Zkx1QWtUQ3UxU1pwVWtQek50bWpSdjNsejN1RU1WeSt2YXBZdU92RXNWYUh4bkpqVmxja3N0ZGEvdzBJUDJ2blEzWlNVbnk4N2hJeVRMaFNKdXFrTDMrQ2VmOU93U2ExTSsvT2dqbWZMMDB6b3FlRjA3ZDdZVGRTL3BmK09OUHZtNklFR0haNVRxMmxsSzlycE9Sd1paSHhaN3gwK1M1SFhyZFFjQTVNMndCeDd3bVprYjllOTg3ZVdYN1Vyd1hxVUdVbDJzUVY2dG1qVjFUK0dpQnJjUER4OHV0OTE2cSs1eGozcnV4ejcrdUd1ejl2bnh4TGh4ZHEwQTVFNVU3TFZTcE8zRk9uSlA4ckxsY3VDdEdUb3lSNzEyVlRIRnh3MmZkdUJGVTZkUDk4d1JoT29tWDZYb2FCMFZ2S0pGaThwVlYxMmxJOTlDZ2c3dnNDNncwU05IU0ZnZDg1VVdzNUpQU3Z4ZDkwbUdIMWMvQm1CZXZYcjE3RHYwdmtBTlh0VmV2SmlZR04zalRXcVE5L3ZpeGZiWnVvVnBSaXc0T0ZoR1BQU1FQRFpxVklIOTNPcjFySTUxOC9yenZudjNiaGsvY2FLT2NGYUJnVkpwOUVnSmlJalFIZTdaLyt5TGtoSnZmcW03dXJrMTR1R0g1WldYWHBMSUF2ZzVDNEphdnIxdy9ueDdaWlFYaElTRXlJMzkrdW1vNEYzVXRLbFVyRmhSUjc2RkJCMmVFbFMwaU1TOCtLd0VGamRmOENNdFBrRjJqaHh0NzVVQ2dMeFFpY3lUVHp3aFZTcFgxajNlby82TkkwZU1rQWNmZU1DTzY1eDNudjJubHhVcld0UXUvdlRCdSs5S3hRb1ZkSy8vVXVmY1B6dDl1bjNlZVVFdkVYMWc2RkRwMEw2OWpyenJSU3NSMjdoeG80NXdOdUhWcWtuNVlVUHN5UkEzWlo0NElmRkRoMHVtQzNVRDFMWHUxbHR1a2RtZmZTWmx5N3A4eEp5TFNwUW9JVStPSFNzL0xWb2s5ZXZWMDczZWNGMXNyR2RxV1Z6ZnQ2L25ielptaHdRZG5oTmVvN3BVZk1KS25GMFlwQnliTTFjU1AvaElSd0J3N3RReFdLKy8rcW9ubDdxcldWazFJM3I2ckd5NWN1WHNQNzFPL1h1N2QrOHVmeTVkS2pmMTYrY1RTNi96b21yVnF2TE5uRGx5KzRBQm5oaE1xbG13OTJiT2xFYm5uNjk3dk1rK2RtM0VpRUpicXlBdnl2VHBMZUVONit2SVBTZi9XaVVIM25wSFIrWjE3TkJCZnYvMVYvdXNkRjlOME01RUpiNlhYWHFwL1BuSEgvTFE4T0dlL014UnEzQzhNR3V0S3Z1cjJnUytpZ1FkbmxTcXk5VlNzcWNMKzlHdEQvWjk0NTZTazNHYmRRY0FuTHVPSFR2SzFDbFRDbnoyODNScW1lY0x6ejRyajQ0YytZOS9WNmxTcFh4cTBLcG13bDUvN1RYNStjY2ZwWFdyVnA1Nmp2TkRKY0szOU84dlMzNzdUZHEyYWFON3ZVRWR1L2JGN05tZVQ5TFZzV3Z6NXMzVEVjNG1NQ3hVcWp3MVhnTGN2dGxsamJVT1BQK1NxMk10dFpYbnU3bHpaZHdUVDloN2tYMlp1bDQzYU5CQXZ2anNNNW56NVpmMlRUMnZVamNOZW5idnJxT0NvNjZwNnJQT1Y1R2d3NVBVMFNEcWZQU3d1dWFYWW1hcS9laUQ3cGVNcEdUZEF3RG5idUR0dDl1VmhMMlFRS29sOTNPKytrcHV2ZlhXLy9uM3FKa0ZWWUhlbDZnQjZnVk5tc2lDSDM2UUw2M0VVU1hxdmt6dGpmemVTaDVlZWZsbHord2YvYmZLMW10SUpUaHFOdEtMMUd0Q25VaFF5Y1BiUzd3bzRyemFVbWFnKzBVSU01T1RKV0hZdzVLWmxxWjd6Rk9yYm9ZOStLRDhzWGl4ZEx2bUdwK2NUYTlicDQ2OC9jWWI5bzI4SzY2NHdpZHVVSHJodURWZnIyRkNnZzdQQ2lwU1JLcE1teXlCTHB3em5McDVpK3g2Ykl4ZDRSMEE4a0lOQnRUKzNiZGVmOTNlUTEwUTFMK2gzL1hYMjh2Q3M1dVZWVE1jQmZYdnl5KzF4Rk1OVWhjdFdDQUw1czJUWGoxNytzeFo5T3Azb3hMejk5OTlWMzc5K1dkcFkvMSt2RDZBVkRQcGFzWk9GYThMOTlBV0ExVWM2NFAzM3BQdnYvMVdHdFIzZjhtMlQ3TmVjK1h2dWxQQ3JFVGRiYWRXcjVWOXo3Mm9JL2ZVcmwxYlpuMzhzZnk0Y0tGY2Nmbmxuai92WDFITDh6OTgvMzFaOGVlZmNyMTFUZmVsTFQ1cW1YdjE2dFYxNUw3aXhZdjd4SkdST1NGQmg2ZEYxSzBqRmNlT3NsNnA1bCtxUnovL1NnN08va0pIQUpBM2FqQzFkTWtTVjg4YlYzdk4yN1Z0S3o4dldpUnZ2dkZHamt2NzFOSnFOWXZ1eTFSaTI5YjZlZFZlNmExeGNmTFV4SWx5NFFVWDJNK0QxNmlDVGoydXUwNStYTERBVHN4Nzl1amhVOHYwMWV0bDdKZ3hzbVR4WXVuVXNXT0JQY2Vxa0o3Ni9wOTk4b245UEhhM25sTi8yZTdnTnJYVXZkSzRNZXJDb1h2Y2svanFHNUs4dm1DT3VXM1ZzcVY4OWNVWHNselh0U2pqc2RVcmF1KzJPbUx4THlzcFY2dUYxR3ZjaTllMHMxSHYxZGh1M1hUa1BuV2Q4UG5QdUN5RDFUV3kwdE5sVTVkWVNkMFlwM3V5RnpWb29FUVBHNnFqZjFLVkh6ZTBhaThaaHc3cG5qTnJzSGE1QkVaRzZnaC9TM3h6aHV4NVlvS09uTlV3Ym8wRUdMNTRaR1ZtU3NLSVIrWG94NS9wSG5NQ3JJRkl6YTgra1lnNmRYU1BOeDJadjBBU0JnelMwWm1WNkJFck1aUFAvSHZQeXNpUXVNNnhrckp4ays3SlhzbHVYZTJWRFA0cTdjQUIyVFZ1b3ZXY21GMDlZUStJSG50VWdsMDRvY0NFR2UrOEkvT3NBWU1wbDNicUpEZjM3NjhqLzVCaHZjKyttak5IeG93ZEsrczNiTEJqcHhXeFB2TlVvdnJJd3c5TDgrYk5jejB6cENwZy8yWWxYRTRhZE9lZDBycDFheDI1VHoyL08rTGo1UXRyQVA2NTliVjIzVG81ZXZTb2Z0UTk2dVpCeVpJbHBkbEZGOW1KZVRkcm9PckxleUZQbDJsOUhxOVlzY0krNG16QndvVnk0c1FKL1lnWmF0YXdSbzBhOXA3Vy9qZmRaQys3TjVHVUo0d2NMZW5IanVuSW5LanIrMGp4VmkxMFZQRDJ2L20ySksxWXFTUDNoSjlYV3lyZWM1YzltMStRMVBWaDd0eTVNbVBtVFBseitYSTVmUGl3ZnNRZDZucXRpb3gydU9RU096RnYyYktsUlBwSkhxTSs4OGFOSDYrai8zVXlPVm0rdHA1N0U1K0w2c2F0V2wzbHkwalFDd0ZmVDlDVkRPdURjL04xdlNWMXl6YmRZMDVZN1ZwUzY4dFBKREE4WFBkNER3azY0RHZTMHRMa2o2Vkw1WlZYWHBHNTMzNHJ4NjJrSnErRGtrQnJRS3RtTkZVeXJnWWduYSsrMms1YXZMNVUybTFxYUhQdzRFRlp2WHExZlB2ZGQvYmdlOGtmZjBpNk5TNVJYMDVTTTF4cW9LMFM4aGJXNytWcTYzZWlpcXVwSk4yZnFiUEl2N0VHMkxNKytjUitiaytlUEdrbjhQbWhYdHRxeFVGcksxRlJTMVRidFd0bkY4VHloU1hKOEcxSGpoeXhyeE9xOE9EaXhZdGw5Wm8xOXJYQ3lRUlNYU3ZVbGh4MXJiajhzc3VrZmZ2MjloN3ppRUp5YnZ2cFBwczlXM3IzN2FzajU2am5kMWQ4dk05c2Zjb09DWG9oNEE4SnVwSzhicjFzN1htRFpDV2JMK1pXc25jUHFUTGhpUUsvdTVzZEVuVEFONTA2ZFVyV1dBTS9sYkQvL3Z2dkVwK1FJSWxXSWhsdkRTaFVnbk02dGYrM2ZMbHlkaEV4VmZTdFdiTm0wckJoUTJuY3FKSGZKMzhtcEZwamlaMDdkOHFhdFd2dFB6ZkZ4Y25XclZ2dGdibWFTVXRLU3JKbjRNOUUvUTZpU3BlMm4zZTF2N0dhbFRUV3ExdFhxc1RFMkwrVHlwVXFGY3BCOXQvVWM3ZldlbDVYcmxvbDY5ZXZ0MmZQMUd5a2VsNjNiTmtpL3g1b1ZvcU90bWNPMVpjNjUvNkNDeTZRbWpWclNpUHJ0UjFUcFFvSk9RcWNXaDJ5YmRzMmV5V091bDZvbTFESGpoMnp2OVExWS9lZVBaSjhodkdvU2d5aksxYTBielNwNjRXNmdhcHUyS21xOHVkYjE0b3ExdXRiM1lncXpOUm5YWXZXcmUxcmhkUDYzWENEdlBYR0d6cnlYU1RvaFlDL0pPaUtPck44enlPamRXUldwV2NtUytscnV1cklXMGpRQWY5eHRvOWhac2ZOeSsxUWlOL0Z1Y25wZWVXNWhLL0t6ZldDMTNmMlhudjlkUmwwenowNmNvNjZzZmZEZDkvWkJUaDlIUWw2SVhCazloZHk0T1hYZGVTc1dsOS9iaVhvTHQ3cHRsNnV1NmM5S3ltYnp2NmF5cS9BWXNXazhwaFJFdVRCMXhRSk9nQUFBSHpKdm4zN3BQRUZGOGpCcytSMGVhRzJDL3kxZkxsZnJNQWhRUWQ4RUFrNkFBQUFmSVZLT1crNTlWWjU3NE1QZEk5ejFJcUYxMTU1eFM0bTZRODRud0lBQUFBQVlNejdWbUp1SWpsWHlwVXJKOWZGeHVySTk1R2dBd0FBQUFDTStQWFhYNDNzTy8vYm5RTUgrdnpaNTZjalFRY0FBQUFBT0c3VjZ0WFNxMCtmTTFhOWQwTEZpaFhsdm52djFaRi9JRUVIQUFBQUFEaHEvb0lGY3ZrVlY4aitBd2Qwai9PR1AvaWdmZnlsUHlGQkJ3QUFBQUE0SWkwdFRaNS80UVc1TmpiV1NNWDJ2OVd0VzFjRzNuNjdqdndIQ1RvQUFBQUFJRjlVcGZiMTY5ZkwxVjI2eUpBSEhwQ1VsQlQ5aVBOVTVmWXBreVpKYUdpbzd2RWZKT2dBQUFBQWdEemJzR0dEM0Rsb2tGellySmtzK3ZGSDNXdE9yeDQ5NUlyTEw5ZVJmeUZCQndBQUFBQ2NrME9IRHNuc3p6K1h6bDI2U0tNTExwQTMzM3BMMHRQVDlhUG1SRmVzS005TW42NGovME9DRGdBQUFBRElVVkpTa3F4YnQwN2VldnR0aWIzdU9xbGVxNVpkb2YzN0gzNndsN2U3SVR3OFhENTQ3ejJKaW9yU1BmNkhCQjBBQUFBQUlKbVptWExxMUNsN2RuekR4bzN5MVp3NU11cXh4K1R5SzYrVVduWHEyRXZZQjk1NXA4ejU1aHRqUjZkbEp6QXdVQjU3OUZGcDNicTE3dkZQSk9nQUFBQUFVTWlkT0hGQ1dyZHBJNDJhTkpFYXRXdkwrWTBieTNVOWVzakVTWk5rNGFKRmtwaVlLQmtaR2ZxL2RsK2ZYcjFrNkpBaE92SmZKT2dBQUFBQVVNZ1ZLVkpFZHU3YUpkdTJiN2VYczN0SjJ6WnQ1T1dYWHBLZ29DRGQ0NzlJMEFFQUFBQ2drRk5IbDdWdTFVcEgzdEgwd2d2bDAxbXpKQ0lpUXZmNE54SjBBQUFBQUlEVU9lODgzZktHaTF1M2xybmZmQ09sU3BYU1BmNlBCQjBBQUFBQUlNMmFOZE90Z3FWbTg2L3Awa1crbmpOSFNwVXNxWHNMQnhKMEFBQUFBSUJVcVZ4WnR3cU9TczZIM0grL2ZQakJCMUlrTWxMM0ZoNGs2QUFBQUFBQWlZbUprV0xGaXVuSWZTVktsSkIzWjh5UXB5Wk9sSkNRRU4xYnVKQ2dBd0FBQUFDa2VQSGlFaDRXcGlQM0JBWUV5R1dYWGlyTGx5NlZYcjE2NmQ3Q2lRUWRBQUFBQUdEUFdydTlEejI2WWtWNTZjVVg1YXN2dnJCbjhBczdFblFBQUFBQWdLMUJnd2E2WlZaa1JJVGNQV2lRckZ5eFFtNjk1WlpDY2NaNWJwQ2dBd0FBQUFCc0Z6WnBvbHRtaEllSHl4MERCOHJLdi82UzZWT25Tc2xDVnFYOWJFalFBUUFBQUFDMk9uWHE2SmF6cXNiRXlOakhINWZOR3pmSzg4OCtLOVdxVnRXUDRIUWs2QUFBQUFBQVczUjB0QlF0VWtSSCtWUEorcnY2WFgrOWZEOTNybXhjdjE1R1BQeXdsQzlmWGorS015RkJCd0FBQUFEWWloWXRLdVh5bUVTci8yK2Q4ODZUTysrNFF4Yk5ueThiMXEyVHQ5NThVenAwNk1BZTgxd2lRUWNBQUFBQTJNTEN3aVNtU2hVZG5WbEFRSUJkNUUzdEgyOS95U1Z5MzczM3l0eXZ2NVlOYTlmYVJkK2VlK1ladWZqaWkrMzk1amczSk9nQUFBQUFnUDlxMmFLRi9XZTVzbVdsY2VQRzByRkRCN2t1TnRaZW9qNXp4Z3laUDIrZXJMZVM4VjN4OFRMdnUrL2s2Y21UNWRKT25lemw2OHlVNXc4Sk9nQUFBQURndjBZOStxaWtuVG9sdXhJU1pObVNKZkxkM0xueTBRY2YyRVhlK3ZUdUxXM2J0TEgzcW9lR2h1ci9CNXhDZ2c0QUFBQUErQzhTNzRKRGdnNEFBQUFBZ0FlUW9BTUFBQUFBNEFFazZBQUFBQUFBZUFBSk9nQUFBQUFBSHVBakNYcUEvYit6eVR4MVNyY0EvNWFaZkZLM2NoREUvVGNBQUFEQWwvakVDRDR3TkVTQ2loWFRVZmFTVnEzUkxjQy9uVnkyWExleUZ4SlZScmNBQUFBQStBS2ZtV0lMdjZDeGJtWHY2TmR6ZFF2d1gxbHBhWExzaC9rNnlsNW81V2pkQWdBQUFPQUxmQ1pCanp5L29XNWw3OFM4QlpKKzZKQ09BUDkwN0pkZkpYM1BQaDFsTDdKRk05MENBQUFBNEF0OEprRXZlbkVyNjErYjgwYjBqS05IWmZkVFQ0dGtadW9ld0w5a0pDZkwzdkdUUkxLeWRNK1pCWlV2SitIVnF1a0lBQUFBZ0Mvd21RUTlyRnBWQ2ExZVhVZlpPL3JwNTVMNHlXYzZBdnhIVm5xNjdCbzVXbEkzYjlVOTJTdmVxWU1FQlByTTJ4c0FBQUNBeFdkRzhJR2hvVktxVjNjZDVTQWpRL2FPZkZ3T3ZQT3VaRmx0d0I5a0pDVkovSU1QeTlFdjV1aWVIRmlKZWFuZVBYUUFBQUFBd0ZmNDFCUmJWTi9lRWxTcXBJNnlwMllhOXo0K1RyYmZmcGVjMnJxTkplL3dXZXExZk95blgyVHp0VDNsbUVyT3o3SzBYWWxzY1pFVXlVWE5CZ0FBQUFEZUVwQmwwVzNIcWVSaVU1ZFlTZDBZcDN1eUZ6Vm9vRVFQRzZxajdPMS81WFhaTjNHS2pzNHVJRGhZSXBvMWxhTHQyMGxFclJvU1ZMYXNmZ1R3cUt4TVNZdmZKU2MzYnBUajMvOGdLWnMyNndmT0xpQTBSR3A4K29GRU5zdzVRVmVyUytJNngwckt4azI2SjNzbHUzV1ZLdE1tNndnQUFBQ0FLVDZYb0dlbXBzbm0ySjZTc202RDdnSHd0MUkzWFMrVnh6eW1vK3lSb0FNQUFBRGU0M05WcEFKRFE2VEsxRWtTV0tTSTdnR2doTld2SzlFamh1c0lBQUFBZ0s4eG02QUhCRmoveS9sb3RQOUtUOWVOczR1b2M1NVVtajVKQWtKQ2RBOVF1QVZYS0MvVlhuOUpBc1BEZGM5WnFIVXp1Vnc4bzdhSkFBQUFBRERQZUlJZUdKbTdtZTdjSEIxMXVwS2RPa3JGOFdQc1BiZEFZUllVVlZxcXZmMmFoRmFzcUh2T0xpc3RWVEtPSDlkUnpvS3JWOVV0QUFBQUFDWVpUZERWT2N6QnVhaTZycHphc1VPM2NzbEsvcU42WENkVlhubEJBb3NYMDUxQTRSSmFwN2JVK09SOWUxWEp1VWcvZEZqUzl4L1FVYzVDS2xUUUxRQUFBQUFtR2QrREhuWitmZDNLV2RxV2JaS3ljNmVPY3E5RSszWlM2OHRQSktKNVU5MEQrRCsxN0x4azMxNVM2N09QSkx4YU5kMmJlOGNYL3k2U2thR2pIQVFFU0ZpVnlqb0FBQUFBWUpMeEJEM2l2TnpQN0IzKytEUGRPamRoVmF0S3pmZmZrZWhKNHlTa2FoWGRDL2lob0NDSmFIYWhWUC80WGFreWJvd0VSVWJxQjNKUFZYQS8vUEVuT3NwWllFUzRoRlUvOXhzQUFBQUFBTTZkMFdQV2xMVEVnN0toUlZ1UnpFemRrNzJReXBYa3ZPL25XRWxCaE80NWQ1a3BLWExzeDUvbDREdnZ5cW5WYXlYeldPNzIyUUtlcGJhS1JKV1d5Tll0cGN5QW15V3lYajBKc0JMMXZFcGF0VnEyZGU5ckg0TjROcUUxcWt1ZEg3NnhaOUlCQUFBQW1HVThRVmMyWGR0RFVsYXQwVkhPeWc2NVZ5cmNkN2VPOGlmOXlCRTV1WEdUSkM5ZklTbWJOa3Y2c1dPU2xacW1Id1c4S3lneVFvS0tGNWZ3Q3hwTGtTYU5KYXhhTmJzdnYxUlN2cVh2VFhKeTJYTGRrN1BTdC9XWFNvK08wQkVBQUFBQWsxeEowUGU5L0pyc2YrcHBIZVVzTURKU3FuL3luajFMQ01CWkI5NTVUL1krL21UdWpsZ0xDcFNhWDM0cWtmVjVMd0lBQUFCdU1MNEhYU25aK2FwY0w4bk5URTZXK0R2dnkxUEJPQURaTzdyd1I5azNibUt1eno4UHExVlRJczZyclNNQUFBQUFwcm1Tb0tzcTBFV3Z2a0pIWjVjV255QmIrOXdvSnpkdjBUMEE4c3hLeUk5OCs3MGszSFh2T1czeGlMcmxKcnRhUEFBQUFBQjN1SktnSytYdXZQMmNCdnZwdS9iSTF0amVjdWp6TDNOVnpBckEvOG80Y1VKMlRaZ2tDZmNNa2F5VVZOMTdkaUhWcWtxcDJHdDFCQUFBQU1BTnJpWG9rZlhxU3ZIWXJqcktuVXlWWEF4OVNMYmNjTE9jV0xxTVJCM0lwY3hUcCtUZ3A3TWw3b3F1Y3VpMXQzSjM1dm5mQWdLazNIMkRKREEwVkhjQUFBQUFjSU1yUmVMK2xuWWdVZUk2ZDVNTTY4OXpaaVVOb1RWclNORjJGMHVSQzVyWTdhQVNKZlNEUUNHWGxTbnArdy9JcVUxeGtyUmtxWno0ZGJGa1dIRmVGTEhlWTlYZmVrMENBbDI3ZndjQUFBREE0bXFDcmh6NVlZRzlGMWJTejJGR0x6dWN6UXo4UHdmZXlvRWxpa3V0T2JNbHJISWwzUU1BQUFEQUxhNG42Q3FKMkRQcGFVbDgrWFhkQWNBTEFzSkNKZWJWRjZWNHV6YTZCd0FBQUlDYjNGL0RHaEFnRlI0Y0lpV3Vvd0FWNEJsQmdWSmg5RWlTY3dBQUFLQUFGY2dtVTNVbWV1VnhZNlRvcFIxMEQ0QUNFeGdvNVI0WUxHWDY5TklkQUFBQUFBcUMrMHZjVDVPVm1pbzdIeHNyUno3NlJQY0FjSk5hMWw1eHpDaUo2dDFUOXdBQUFBQW9LQVdhb051c2I1LzQzZ2V5YjhJVXlVeE8xcDBBVEF1SnFTeVZwMHlVb3MwdTBqMEFBQUFBQ2xMQkoramFxZTNiWmVlREkrVGs4aFZXMHE0N0FUZ3VJRFJVU2x6YlJhSWZlMFNDaWhiVnZRQUFBQUFLbW1jU2RDVXJQVjJPZlArRDdKczhUZEoyeE51ejZ3Q2NFUkFTTEJGTkd0dEwyaVByMXJFNk9LWVFBQUFBOEJKUEplaC95MHhKa2VPL0xwYkVOOTZXazM4c3N4TjNBSGxnSmVHQlJTS2wyR1dkcE15dE4wbGsvZnAyVVRnQUFBQUEzdVBKQlAxMHFmdjN5L0ZGUDBuU2I3L0x5WTJiSkczTE5zbEtTOU9QQXZpM0FDc2hENnRWVXlJYm55OUYyN2FSb3ExYVNGQ1JJdnBSQUFBQUFGN2wrUVQ5SDZ4L3FwcE5UenQ4UkRKT0hKZjBnNGNrS3pOVFB3Z1VYb0hoWVJKVXZJUUVseXdwd1NXS1N3Q3o1QUFBQUlEUDhhMEVIUUFBQUFBQVA4VTBHd0FBQUFBQUhrQ0NEZ0FBQUFDQUI1Q2dBd0FBQUFEZ0FTVG9BQUFBQUFCNEFBazZBQUFBQUFBZVFJSU9BQUFBQUlBSGtLQURBQUFBQU9BQkpPZ0FBQUFBQUhnQUNUb0FBQUFBQUI1QWdnNEFBQUFBZ0FlUW9BTUFBQUFBNEFFazZBQUFBQUFBZUFBSk9nQUFBQUFBSGtDQ0RnQUFBQUNBQjVDZ0F3QUFBQURnQVNUb0FBQUFBQUI0QUFrNkFBQUFBQUFGVHVUL0FFaTRQaHNXRHBDaEFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xX1BSRSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiOTU0NDJiMmVmMTVlNGRlZmIyNzBlZmIxMDZmYWNiNGUiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjp0cnVlLCJ1cCI6dHJ1ZSwidXYiOmZhbHNlLCJ1c2VyVmVyaWZpY2F0aW9uTWdtdFByZXZpZXciOmZhbHNlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWV9LCJtYXhNc2dTaXplIjoyMDQ4LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0Ijo2LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjE5MiwidHJhbnNwb3J0cyI6WyJ1c2IiXX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDE5LTA3LTE4IiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJlV0JNIGVGQTMxMCBGSURPMiBBdXRoZW50aWNhdG9yIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAxOTA3MDkwMDMiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMy40IiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjAuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAxOS0wNy0xOCJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMTktMDctMTgifSx7ImFhZ3VpZCI6ImRkYTlhYTM1LWFhZjEtNGQzYy1iNmRiLTc5MDJmZDdkYmJiZiIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiZGRhOWFhMzUtYWFmMS00ZDNjLWI2ZGItNzkwMmZkN2RiYmJmIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IklERU1JQSBTT0xWTyBGbHkgODAgUjMgRklETyBDYXJkIGMifSwiZGVzY3JpcHRpb24iOiJJREVNSUEgU09MVk8gRmx5IDgwIFIzIEZJRE8gQ2FyZCBjIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjExMDc0NDg4MzEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfSx7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUN4RENDQWlXZ0F3SUJBZ0lHQU9yQUFBQUJNQW9HQ0NxR1NNNDlCQU1FTUlHRU1Rc3dDUVlEVlFRR0V3SkdVakVNTUFvR0ExVUVDQXdEU1VSR01STXdFUVlEVlFRSERBcERiM1Z5WW1WMmIybGxNU013SVFZRFZRUUtEQnBKUkVWTlNVRWdVMlZqZFhKbElGUnlZVzV6WVdOMGFXOXVjekV0TUNzR0ExVUVBd3drU1VSRlRVbEJJRk5sWTNWeVpTQlVjbUZ1YzJGamRHbHZibk1nTFNCU2IyOTBJRU5CTUNBWERUSTFNRGd5T0RJeU1EQXdNRm9ZRHpJd05qVXdPREk1TWpFMU9UVTVXakNCaERFTE1Ba0dBMVVFQmhNQ1JsSXhEREFLQmdOVkJBZ01BMGxFUmpFVE1CRUdBMVVFQnd3S1EyOTFjbUpsZG05cFpURWpNQ0VHQTFVRUNnd2FTVVJGVFVsQklGTmxZM1Z5WlNCVWNtRnVjMkZqZEdsdmJuTXhMVEFyQmdOVkJBTU1KRWxFUlUxSlFTQlRaV04xY21VZ1ZISmhibk5oWTNScGIyNXpJQzBnVW05dmRDQkRRVENCbXpBUUJnY3Foa2pPUFFJQkJnVXJnUVFBSXdPQmhnQUVBQ2U4amRTblZUS3R6a2dzQ0tKRnVpcFdMOXVVaXpzUnI2L2lUQ2UrREtybjAyU25wc1BIWnlvNFdaNThwVXU2NlQ2a3ZmQjhhR0E1aTdlcVVKU2doUXRHQUViZmxkU3pHSWJ0V3ZYUGhBakVSZXlmU24zYnhvRUJSZnB0MXhoMmwxR0pXdGdFcTZZSTlTcWtDSVhXQnAxUjN4NmlhYkU5SFczT1lGUUlEcm1KVXVFMG96d3dPakFkQmdOVkhRNEVGZ1FVeitvZEVSd1ZFS000VmYrc1BVUENwelZleVM0d0N3WURWUjBQQkFRREFnRC9NQXdHQTFVZEV3UUZNQU1CQWY4d0NnWUlLb1pJemowRUF3UURnWXdBTUlHSUFrSUJPL2xlamp0cGZhcjBxbDAzU2hHZk1QT1BEVHhIRVpkVXJQU2l3ZEk4a29Ja3F0WGdCL3FibzhSditPQ0IrMHZlQnNzaTZKUDlySEloZXNmWGVSQzVEY0lDUWdHeWNqb3J1S3cxQzhzNFgzamxkV0tCUitEVWM4VFcwaXhFZ0oxV1NybTZKM3VsU3d3NmNGNTF6ZWZCME9BaHZGL2hBNEo4N256M3h1Y0ZMMUticWpJY25RPT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBRElBQUFBeUNBSUFBQUNSWFIvbUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFGaVVBQUJZbEFVbFNKUEFBQUFvclNVUkJWRmhIelZocGNGUFhHZFh5bm1RdFhpWEwrMElhc01IR093WWJFbEpLZ0VrQ0FhWU0wMHliTW1sTEtBTmhuOG5DWmdncDVBL1VoSTR6aE5EU2FXY0tKR3lGTUtHQk5ISHhnbzF0R2JNYmIvSyt5SllsV2N1VDFITjFoVkJrVzlJUFluTEc0em52M2l2ZDg3N3RmbGQ4aDhQQkc0WEdlMTExbFpyZXptSE9adWZ6WFlOUEV3NGV3d3BqRWtLeVp5WEZKeWxjZ3g3d2xuWDg4SGZIRDEwMzZpMFNLU3NRQ240VVRVNWdXeHRuSHpGYUkxVFM5VHQrdm1SbHJtdkNpU2V5QnJYREsrYVVHSFRXNEZBeEJOSEJDWUROWmgvc055WlBpVGo1M3pVOG5wQU91bVIxdHZjdlNpOVd4UVREdG5SaWdtRTJjVWFqdWJSNUd5TVU0NUhLc3M5TzNpK1RpWVhNeEJscE5DeG1UaGJNbnIreEVaem8rR0R0YVNId1REVUJJakhUMjJVNGZ2Z2FPTjlnTU14Ty9EZ3FOb1QvNDRWM3dMRGJIYnJCa2JLMkR3UVhUNmxsOHFDZmdpWkFJT0RiN2J6SzcrOExwOFFzN0d6VFBYTVBQb0hERWE2U0NqbzF1c0RMQVl5TWZNWWZ6Vi84OTN4MEx3RG9vK09INndNQnhIUnBoZ1JXQ3hlZ0E3RWxrZ1VWVml4bWVIeVN3cHpWTGdBUUFjNUhMQkFLeWFQRHdTZFM3QTVFTVo2eHhEVENCYWdNWDJXeFlCZGVRS0x3cFQyZHVyUGw2eS9YYjc1UXZXRjRjTVJxc1QyWG9yeXMzb1FSaFVxR2ttMFlObS9ac3hDUFg5L2FyTzB6Y0p3OVBqbjhzbm96MWl4OUk4ZWdON3UreXgvNGVCRVg5UWZUaVBXMWxSbWhFUkx3TlV0UGlJTVltR3A2WGp5ZGZYU3ZGM1ppUmNKdnY3cERSOElVVXFHUVgxbmFWUGJOUXp4dUxKcHY0NGc1NmF4ZkNBSlpDRlAxOXhpTGlwZUJOei9zcXloOUpBNWlyVll1TFRNT0kyMlArcTFXRzEvQVoxaEJRMTJIOHhPOHlkT2lZSzBJaGF4bzQzazY4c2QzWDlMclRKVDdnejBnYStIay91MjZBb0dRdUh2NzIyY1VrVEtRRVlNMXR6QVpSRjJsRVlrWUVCaXNvMlVJQkVqUGpvTldKUGpnZ1BHckwrb3g4cHUxaGZpOE94dDh3Y0ZEYlBrQmlYUUx0M1hmSXZEcTBwWTc5UjJzaU1HZ1BEZ29WRUY4V24yOUZlNERRYlFpemgvZTdnYlBtWldNNEFNSkNaZnMzM1lKQk5oNWFNbmd3QWpsdnVIZmliRDg2czB2VWI1bnk3a0lKVEVWeDlsU002THA0TzJiN2V6akF4NW1VOS9RZ0dUT1RJQTVRV0JDSzJmN1Iwa1orSUpsNlFxbEhNNGxTMzNDanhQdE5qdSs5NjNOYzhDdm5Hdm9hdFBSRm9PejJMTm1KamlYOE83V2R3bFoxL2ZBYkRVVnJTQVNHYXRVeWZCeDhPRFFvRS8yWFhYTzgzWVh2NDRrcGR3SC9NZ2FHalJ0K3hOeEg3Qm53NFV3WnlZQ2NDdE53NVlIQTR6b1NaV0IyV3JMaVN4Z2FtWXNOUXhLRjdMaDRJNHI0UGx6SjAxSmk2TCs5UUZmc2xBU1pUTFI0cFZaNENjL3IwVDFwdWNCL001WmJIQVRlRTFGVTVDRUphdWRRSXkzTmcxUW5wbWY0TjVlSmhlZk9GSktlZEhocGYwOXc1U1BCMSt5dEgzR1BVZElVUUFPN2I0Q1gxQk95bmNRRXhvbUJiK2o3b0lsNkRnRnB1NDNkSUZNejR1RFVla2dzaUZVSWQyMS9pejQ1TFNvM01KSk9ERG8xSmdZVnhiU08zbXlZdmI4NThFLytmQWIyQW0rb0ZNMnpwYVNGa041VFhtTE85NHBVR25yYnJTQlpPUW5vT1M2enh3WTljSS9hd2U2U1dEdFA3b2NoY1BIY1RTdXJJRmVmZEdmbDFKKzRzaDFlVERwWlNtczFpZnhqa0tGbktDY0FpclZsVVNXUkNMQ24zdHJHQ3hNS2QyMWdSaE1HUjB5NzdWcGFKVHAxR2lNTFFzV3hsVnBXazRzK0o1M3ppT3Q4S1YwQ3NCc1ZuNGlTUE9EUHBQSml2cE94eW5nMDlzMW5aUm41c0ZnVDZJYkovZjFxdzliR3Z2QjkvMWxHVzRXNHhsc0RGbFlpVnAxNExOZmd2ZjE2RStmcUpKSVJYUUtjUEFjTnFzOTc0VWs4T3JTWnM5NHA0RHhOQzFhV2hxeUN4SVJESFFjd0x1RksyVGJWcDBFUndqK1llc0x1SkRSS1MrTWFTMEhQcStNQ2dicmFOSFN6b1ZPRURoNGZBRjViMUNEM2dJK0d1Z20wTW1BeUVQRlh2YkFDWVoyaXZMNDVBZ2tPK1ZlR09OYklTSkl5dTVZZXdZOFkwWkMvcHhKWm8rc29STFZsYVNVNXhZbW1ZemU4WUZ6S1RvK1JDb25CcTRxYmZaS0NHVDMvcVBFRDhCSFd5K2ljRkR1aGJGakM2NzU5NzlxQjNwSjFudzBLbXZFRXJicWY4MGdhYmx4NkY2ODdJSHNRd21ndkxhaXpmUGlDWWRPU2xFV09yTzd1T2cvckpnMGpYVEtDMlBMSWtHZ2xPMWNSd3dHYnk1WWtrYWRRb0dkYmxXM1U2NktDYkhaZmlBTGUrY1VrTWlEWE8yQTNuTmp2T2Z1ZzYrRG9KUDllMGtaYnFaMGZEVEdsZ1VnZXNxdU5pTFh3RkdYMFk2NnJjS3lBdlZONGtRZ016L09NOWNBcTVsTHp5WG5Va05OdTVBUnV1TVMrWnRiNE1ydXZac3VTbVVpcnhUMnhMaXlxTUhlKy8xcGNMR0VlV1BOVEtQQjRwNUNxcUlOQkUvTjhKYUY1TXFlU2NwSFhVV2J5Tm53QUhpbC9oNDk0Z0hjb0RPZi91c05GQjA2TlNiR2xRV2dIYmgvcDd1bW9nVjh5OTVGdzFvVE5SaGtNWXdBY1FPT3FQZXNpcWdMU2hWSllRQWREdTNEQUt5Wjk4clV5S2dROEIzcnppaWo1TDd2RUw1a0FSR1JzcUwxNXlqZnNITytic2pWOWNMRk5MeFNNMkk4a3hHQmxUM0xkUURjcW1tbjhZNlh3VjM1d3hKeXZHcWF0TmN1M3FYMXhRZjh5R0lZWVVmYjBOZGZOb0N2MmpoSHhBcHBwV0hRVnoxdVlIQjBvbEJSam5NSk5ZWHlqdFpCZWk2TkdDd3IzcG9oZGRhQzk5LytJa0lsY3dmY2VQQWpDOEFkNXNCMlY5Zjd6czZYZFlQRVlIRGkzVnJYYlNJOUt3NzlKK1VXRTVmdFBDNXJ5eldpSUplcFVIWGYzZjhLT0pLZ29hNWR4UG94RmVCZkZ0N1lPR3c1ZGF3S2ZQbWJPYUdoRXRnR2d6M2R3MVl6VVpNek81RVNLQUJTczBpdTFkMW9GWWxKVU90MTV0VmI1NElBU0NEY2hRSzVtUHFYQllTRVNUNSszMld3WFljWGF3ZEltY1ZKY0xPTStIRjZYZ0x0cSt3Mmh6SmFUc3U2dXFvVmRRUVZIMG13ZWh1UjllMmx1MTBkcnA3Ykx3S1NoWklJRVNVSHlDOVBoZk1teDhhRm95Z2diTlhWSkJsVHBrZGpBZXprdkhlNCtyQjd0N29SbDBQYWtVMjdGOUtSQSs5ZENvc2duV01nQ0VnV2dNUHIyTUh2S2YvMDdKdHdEWFp0cUhFVjFkakVNSmdLYWZqaUwxTG9TRStIRHJVa0xqRnN4ZS95OFBqbDM2cTEvY2JBZnhmaS8zcGhTYmRHNzlYS2pRazA1Z3FWUERvMkJOVzF2cm9kRGdMU1NDVHhteC8yR2cxV0pHblN6eFJvR0ZGUkcrLzJRSVFxSmhobkYvS3V2a3FEeC9GT1FFOVl6TFlaTDhielY3MTZ0TDFwS01EM2dKdGdGUkRVU1d3R1dmUVNnWWloVzhLNWtJc3BXa2dobE5ZTzl3Sy93QmxWTUM5Sm9JeVNlWjIxUGdESElhVHdSd3NQL3ROSDk1YllIby91NGc0bmVDM3dDN3kySWtvbW1Kb1Y1ZGxBUG5QZ21FckxqUlhNWDV4cUdEYkRIYTdoWndxYXpuTVhUaEVrSnNkbXpZcEdvTGxtbmltTWV1dXJ2MG9Wc3pJU3RocE54OUs4ejVTUmNoOE4wQVNBM0FCTWxzc042NlJCd1NqRTl2ajQyTDJmTHVocUgwWVN1WlpNT0pDemZUMkc0bFBMb0FreVVCZjR5T3BGUy9MM0hWdWcweG9SY1JNY1o5aHV4R0ExbXl3bEY1Wm5aS1ZBREI5WEw1eFpLRFc0RjJDK3NiR2x1T2lhdXJ3UEYzYmNRdUhUeDA1OXVzNGxyNDEzaDFWUTlteWNyV0JCM1BydDgxV1JrUUtHendqSlQ5UE9YNnA1RGp0blI5UmprZGxpYm55Z3FmeXVxZm1CVmo5a2hyK2RwbnVxOW5NV1BaVEFrSER4ODFPVk0rYytsNUFZdzRwWWROaXNtTUZWaXNmai94L3hxT2NQUmRTdmF3QUFBQUJKUlU1RXJrSmdnZz09IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiZGRhOWFhMzVhYWYxNGQzY2I2ZGI3OTAyZmQ3ZGJiYmYiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjp0cnVlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImFsd2F5c1V2Ijp0cnVlfSwibWF4TXNnU2l6ZSI6MTU1MCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0IjoxNiwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoyMDgsInRyYW5zcG9ydHMiOlsibmZjIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN31dLCJtaW5QSU5MZW5ndGgiOjQsImZpcm13YXJlVmVyc2lvbiI6MTEwNzQ0ODgzMSwiY2VydGlmaWNhdGlvbnMiOnsiRklETyI6MX0sInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjo1OX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTA4LTI3IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjExMDc0NDg4MzEsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiSURFTUlBIFNPTFZPIEZseSA4MCBSMyBGSURPIENhcmQgYyIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjUwODI3MDAyIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDgtMjciLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MTEwNzQ0ODgzMX1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wOS0xMSJ9LHsiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbImZmYTI2Y2YwNzc4ZmQwOTE1YjZmMTU5ZGY4ZDk3YTYxZjEwMzg2MjUiXSwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiZmZhMjZjZjA3NzhmZDA5MTViNmYxNTlkZjhkOTdhNjFmMTAzODYyNSJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiU2VjdXJpdHkgS2V5IE5GQyBieSBZdWJpY28ifSwiZGVzY3JpcHRpb24iOiJTZWN1cml0eSBLZXkgTkZDIGJ5IFl1YmljbyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzYsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6Mn1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiLCJyZW1vdGVfaGFuZGxlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlEU0RDQ0FqQ2dBd0lCQWdJVURxRVJ3KzRSbkdTZ2d4Z1Vld0pGRVBEUlozWXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFESTdYbkgrWnZEd01DUVU4TThaZVY1cXNjdWJsdlZZYWFSdDNZYmF4bjlnb2RMeDVzd0gwbFhyZGdqaDVoN0ZwVmdDZ1lZWDdFNGJsMXZielVMZW1yTVdUOE4zV01HVWU4UUFKYkJlaW9WN1cvRStoVFpQLzBTS0pWYTNld0tCbzZVTGVNbmZRWkRyVk9SQWs4d1RMcTJ2NUxsajV2TWo3SnRPb3RLYTlKN25IUzhrTG16WFhTYWowU3dFUGg1T0FaVVROVjR6czFidm9UQVFRV3JMNC9KOVF1S3Q2V0NGRTVuVU5pUlFjRWJWRjhtbHFLMmJ4Mno2b2tWbHR5RFZMQ3hZYnBVVEVMdlkxdXNSM0RUR1BVb0lDbE9tNGNycHduRFJMVkh2alllUEdCQi8vcEV5enhBL2djU2N4andhSDFaVXc5Ym5TYkh5dXJLcWJUYTFLdmpBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlRxdDBLUW5neDdaSHJiVkh3RHVueE9uOWloWVRBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBcVFhQ1dNeFRHcVZWWDdTazdra0ptVXVlVFNZS3VVNitLQkJTZ3dJUm5sdzlLN0hlMUlweFowaGR3cFBOaWtLam1jeUZnRlB6aEltd0hKZ3h4dVQ5MFB3M3ZZT2RjSkpOa3REZzM1UFhPZnpTbjE1Y0ZBeDFSTzBtUFRtSWI4ZFhpRVdPcHpvWHZkd1hETTQxWmFDRFlNVDd3NElRdE15dkU3eFVCWnEyYmp0QW5xL05EVUE3YmU0SDhIM2lwQysvK05LbFVyY1VoK2o0OEs2N1dJMHUxbTZGZVF1ZUJBN24wNmo4MjVycURxc2FMczlUYjdLQUhBdzhQbXJXYU5QRzJraktlcnhQRWZlY2l2bEZhd3AyUldadnhyVnRuM1RWMlNCeHlDSkNrWHNORDA1ZENFclZIU0pJcytCZHRUVk5ZOUF3dHlQbW55YjB2NG1TVHp2V2R3PT0iLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVRuYmJHSVIyTkh2enFJS0ZBZVF3RzFYQmlzMHdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFRWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPc1hqM2swNEJhbjRUWWR0WktxRC9PUEp4eUR5YVBtQ0JVRlVpYVpJZ1R0ZVpuajNYMjVEaGdwWlpYc0M0RDB5ZEljcmxBNndOVUluT1JML0w5ekJiVEVJTUFWTUdvNmc3VUtBbWIyTUY2QUhibmhZSmQ5ZWlrdXBWTldTaEhOWU5jNEdCZE8xWU42QWZVcXZKaEhiZTNWNFNOTVBtQlJFS0pQVno3VGh3Z21nZ1RlOFdzMkswL3dzcXYyd1NFN3BiQ0JzVVpoSVg1MWJaTTNwcUR3SlBUbVJGRXZ0MC82dEc1ZU84RjNqMTRPWHFmRWhtam4xVnZ4S0RZUU9MWkF4Q3d3Z0MwUDRDZGZXdjN5OFBTUjhJMzU0aE8xWStHek5qdklxWDM4TktMeXd1SVlIRmVyT3hObHhFTUJ2RmhZQnVSdVlBa2tnVWFQcU42VUJoc0lMcnNDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNDb1JIaGl5Tm5iblhSV0lMNlpCWG9CWDlZVE1COEdBMVVkSXdRWU1CYUFGQ0FvVUNFYnBGcGI2RlBMblozRjVQeHNMM29mTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFDUUZhZkpJMS81V2c5Q0VFaW1FMVJQNTRSZ1F3VE5UT09Rc0xBQ1RlK3JJdGxGUXpDOVpEaHJWODI4eVg3anp5K0FBc3AzaXpLN1QxdGgyZGw3bSt0dTBzdzJQYS9vbGMwMm50NlB5SXczNDhnYUh6aEkxKzBLRTQ1cXh2RkRlTDJsTXhiUGZDWXZ5RUVhWXpqaVFFTFU1OTUxcFhHV3lLTWEvNGZMdE8rWktPWGhNdVZlcTRyWERQSTU0VzZKSE9pQWFpS2Rpdys1ZTNjMmt0L2pGSVF0TTZ2TVhnOUxORnpkakVUTnQyMFZYOVFldlJwRlpmdWNNRzl3Q2FRRG9GbFB6cFRNSktoUGV2L2ltSm1aWWhLZnIwbExjZW10cWpJeExBb3FaZE9ZZkhCZzYrdkFjZFBJL2lhdUdwVUF2N1grVUtObUR3aloyQmFINHNMd2hCMm0iLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVIzOG1xMjZTZjJzelZWMkJkRzZXRU43a3VXVXdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFSWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFOWTBXYjlvUG9Sb0tvUXlXUGFKcHoxMXZyV1RnNnpUdG1OajJWb0tSbnl2S0dScXB6YjgzdzVsNllBOTZVWWtZQkRRUDBpbE8yRFBlNndXcVZSNXpEZlJ6ZGNIOGJoK0w3ZEdHdmFlNmhSVFpoa0ZrQ3BYRHM0SGNja25yRGY4RkNsSjdIZTM5SmY0Mi9HMVFtMnp6OVdXbXJQWHRnaUsveDA1R2pzUWZHdURHMXpmNVFUVVVpZThsd3ltSzNUZmRPdk5lZUpBQVBlMnBuN0l0ZlJiK3JWck5XaUR6bFJuMnZObloyd1BvNHdIL1dKNmRoWFpHK3JNV1QrYTZCb2NnMVVmSXc2a2R1bkc0YlRwWnpzdmFjRll5UjBtcGYrRGVPbnBTV0FteXdKV0h2VGxmMllYeEZ5ZVhjVEFDZFFsY01OR0oyVmhaUTQ4eHRQNS9SQlAvOGtDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNoeTQyb2tpcWNUUzFpcWEvSFJXamtCbjRIL01COEdBMVVkSXdRWU1CYUFGT3EzUXBDZURIdGtldHRVZkFPNmZFNmYyS0ZoTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBbitSSElQYnRNRUROZFQxZzhIL1JpdEFrVWRMZ0F0MXRXR1dubGo5a25idjQvNEdsWDdDOXA0NWVmUE85L2FaTDZPVjFYUktCaTZLbXRCVzVLN251WUVuTXgvNUJxQlNiTFQ3cmhkdUM0OVRCZU1iOVBIZFhzVGxTVk5ZZWZyMWRHaWRyNGoweFZCUUxiMXJrbkRBYmRXRHpLZnZuYXlLTzhGcndlN0h4ODQzTUcvckorYzBYcnVVdmJmVlRDSExpSVdoTTdvTkRoTDh4b2I2eFVvOUtMS2NTTCtJdFlzTzMvOVdiOFE5R2pzcUw0RlhzRGNHMVNhWWg3S3BmdU1tT2l4cXpKWk8ybklpY1BZUmcxSTJTdWlVZllPNzB0bWRIY2JsK2tTUW1TWXQ3cnE0dmlJTGcyR3gzajlySVR1V1RqYmFVYVNTUXhnT21NU0h1eXpNQUMiLCJNSUlEU0RDQ0FqQ2dBd0lCQWdJVVVjbU1YelJJRk9nR1RLMFRiM2dFdVpZWmtCSXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFEbTU1NWJXWTlXVyt0T1kwcklXSGxkaCthTmFub0NaQ0ZoN0drM1laclFtUFV3MGhrU0c2cVlIUXRQK2ZaeVMzM1ZFcnZnK0JRcW5tdW1nTmhmeEZya3dFWkVMZWlkQmNDOEM0QWc0bnFxaVBXcHpzdkkxN05jeFlsSW5MTkxGY1pZLytnT2lONlpPVGloTzUvdkJaTWJqOXJpYUFjcWxpWW1OR0pQZ1RjTUdhRUF5TXpFTU55Mm5tNkVwK3BqUDVhRjZnaTIxdC9VUUZzdUoxajJSai95bk0vU2RSdCtlY2FsNU9Zb3R4SGtGYkw5dnZ2MkEyT3Y1SVRaQ2x3NGJPUzlucHlwUWltT1o1UUFZeXRtWWFRcFdsL3BNWXo2elNqOFJxa1ZETkVKR3FOZlRLQTJpdkxZd1g2bFN0dE1QYXBnMEo4NGw5WDB2b1ZOL0ZwUzRWQ1ZBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlFnS0ZBaEc2UmFXK2hUeTUyZHhlVDhiQzk2SHpBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBWU16Z0xySkxJcjBPb3ZRbkFaclJJR3VhYmlIU1VLU21iTFJXcFJrV2VBdHNDaERFSHBYY0ovYmdETktZV29IcVE4eFJVakI0Q3llcFlldmMzWWxyRzhvN3pIeHBmVmNhb0w1U2V1Smt6SHhLbjRiVGFTcDkrTXZ3YW1ucDY0a1pNaU5iRkxrbmZQOWtZS29SSGtNV2hlUkoxVXNQMXo0U2Nta0NlSUxmc01zNnZxb3ZxaldDbEZzSnBCY3NsdVlIV0Y3YkJKMW40UndnK0FURW9wWTRJZ0d2Nlp2d2MrQTlyK0FUMmhxcG9Ta1lvQWwrQU5Zd2dzbE9mOXNKZTBWK1RBOVlZL1VsYUJtUFBUZDAvL3I5d3ZjZVBXWmtQaktvQUMvelVOaGZEYmg0TFY4R0hzM2x5WDJYb21ML0xOYzhKWXp5SWFERWhHUXZlb1BoaC90cjFnPT0iLCJNSUlEUGpDQ0FpYWdBd0lCQWdJVVh6ZWlFREpFT1R0MTRGNW4wbzZaZi9iQndpVXdEUVlKS29aSWh2Y05BUUVOQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU1aNi9UeE04cklUK0Vhb1B2Rzgxb250TU9vLzJtUTJSQndKSFMwUVpjeFZhTlh2bDEyTFVoQlo1TG1pQlNjSVpkMVJueDFvZDU4NWgrL2RoSzdoRW03SkFBTGtLS3RzMWZPNTNLR05MWnVqejVoM3dHbmNyNGh5S0YwRzc0Yi9VM0s5aEU1bUdORDZ6cVljaENSQUhmcllNWVJERjRZTDBYNEQ1bkdkeHZwcEF5Nm5rRW10V21NbndPM2kwVEF1Y3NyYkU0ODVIdkdNNHIwVnBnVmRKcHZnUWppVEpDVElxK0QzNWh3dFQ4UURJdituR3ZwY3lpNXdjSWZDa3p5Q2ltSnVraFl5NktvcU5NS1FFZHBOaVNPdld5RE1UTXQxYndDdkV6cHc5MXUrbXNVdDRyajBlZm5POXMwWk93ZHdNUkRuSDR4Z1VsNVpMd3JyUGtmQzEvMENBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUI4R0ExVWRJd1FZTUJhQUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUU13RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCRFFVQUE0SUJBUUMzSVcvc2dCOXBaOGFwSk5qeHVHb1grRmtJTGtzMHdNTnJkWEwvY29VdnNyaHpzdmw2bWVQTXJiR0pCeUoxWG5xdUI1c2djUkVORnhkUUZtYTNtaW84VXBmMW93TTFacmVYckowbUFERzJCcGxxYkpueGl5WWErUjExcmVJRlRXZUloTU5jWktzRFpyRkF5UHVGakNXU1F2Sm1OV2U5bUZSWUZnTmhYSktrWEliNUgxWGdFRGx3aWVkWVJNN1ZvbEJObGxkNnBSRktsWDh1c3Q2T1RNT2VBRGwyeE5GMG0xTFRoU2RldVh2RHlDMWc5K0lMZnozUzZPSVlnYzNpcm9SY0ZEMzU0ZzdyS2Z1NjdxRkF3OWdDNHlpMHhCVFByWTk1cmg0L0hxYVVZQ0EvTDhsZFJrNkg3WGszNUQrV1ZwbXEyU2gveFQ1SGlGdWhmNHdKYjBiSyJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFmQ0FZQUFBQ0dWcytNQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUhZWUFBQjJHQVYyaUU0RUFBQWJOU1VSQlZGaEhwVmQ3VE5WMUZELzNkNTl3ZVFTSWdTOUFRQVhjRkxBUVppOWZwZVZ6MXRZL1dUWnI1V3hwYzdXNWtuTGE1akkzWjg1c3JTMm5NMnNqdFd3WlM3SVVINEg0eENuRVF4NERBWkY3NFY3dXM4ODV2OS9sSW5CdlZKL0I0UHY5bnUvNW51LzVudk01NTZmekEvUXYwSGIvSXJYM1ZGS1BvNDVjbm00aW5VSVdZd0xGUm1aUVV1d2pGRy9OMWlSSGgxRVowTlJWUnVkcXQxQmQrMm5TS3lTL09oeXMwK2xrM2UvM2tROXF2RDRaVXRhNFZWU1V1WTBlaXB5aVRoQWZvY29PUlZnRHV1dzNxS1JpQWQzcmJjRXRqVGpZSW9mNldhSHNDbXpWUFdDTXgrY2doOHRMcVdNS2FNV3NVakxxbzJSdEpJUTBvT3ptZXJwUXU0ZXNaZ3NPTmtHeEg3ZDBrZHZUVDE3czRPTVU3Vkk4WmhqZ0dhTStBcTlpRU51OFBpZjF1ZHowN013dktXZjhHbFZvQ0VZMDRQQzVXZFRhWFlGYlI4dk52TDUrM0tnZmI1eE5NeWE5UmFtSml5bmFNbEdUVnRGbHI2YmE5dStwcW5FWDR1TXVSUmdqU1lFaHJON3V0RkZlNmxxYWw3TmZrdzVpbUFHSHluUHBiazhWbVkweHN0bnB0bEZDVkNZdHpUdUJOODNRcE1MalR0ZXZkUHpTVW5KN2U4bWtqeFozOWZYYktEZmxkWnFidlUrVFVnR25CVkY2ZlEyaVBIZzRXMTZVV1V3dnpiazE2c01aRStQbjBwdno3SlNldUF5ZXM4bGNwQ21hS3VvL3ArcVdyMlVjd0lBSFdydlAwWUV6aFhBdExBYnNzSGhwN2lHYW12eWlqUDhyeXFyWFVXWDlYb293eHlBdWZOQnJwNDNQT0JGWFpsa2Y4TURSaXFjcHlvd0F3cHV6MngrZld2ei9EdGRlOXNtc3p5Z3RjUjZDMXdiZHpCbDZPbHE1V05ZWTRvR2F0aEpNcmtURXgwakFSU0hBVnMrNXJZa1FOWGIrUWdmUExzUTZnWHlJbnNyZVFmbXBtN1JWRllmTDg2bjFmaVVPa1l2U2hrVVB4dmJ1a3pveTZLMWloTTFobzNYelc2RXZTZlhBK2RwaVdHYVdkK2RvWHpMem1Hd0tZRkxDQXNSQWxQQkFoTWxDRlhVN3RCVVZQcjhIZ1ZjSkhXcStGMDBwbHIrRE1UZHJQNHp2eFkxMWtOTWh4VCtTZVRHZytkNFY1TFFKaXR5VUdKTkI4VkZac2pnWUJaTS9JSS9YQ1RrajBxeURPcEYyQVZRMTdDSWpVcC9EblQxVWtMNUY1Z2RqK3NTMXdnMWdFM2dpZ202MGZDWHpTblBYYnlBUGJJWHYrSURwRTE2VGhhSElTOXNreWhsbU1FNUYzY2ZxQUtocTJDMEU1UEgxZ1lhWGFMUERrWkcwSERKT25LV0hwNTFJMHo1U091eDhlMVdBdVp6ZEhRclRrcDhUbWpYb0krbGEwd0dac3p1YnFiTzNpZlE2QS9XN3ZWU1lzVjNtUjBKS3drS2M0V0hpQmttUjhJM0NDZ0k4N29PTDRxelQ1UCtSVUpCZWpFT2dBUEs4aFlQemF0TStlSVRwMklPOXlUUW1lcm9tUFJ4eDFxeEFjc2lsZS91YlNlRWJjV1FHWUVDZ2hjTFkySHlLam9nakgyNWhNcGpwVXYxT3VnbGk0ZWgyZVJ3ME8zMmJKamt5dUNnTnpnMHZ6bFlNU2lTczB1b280TUc3aE1PakNFYVgxeUZFMG5TdmpCenVUbkVwSzg2WjhJb3FGQUl1Ync4a2c5QXJFYVJFV1NaSStqSDRYYnA2ZzlFOUVuSlQzb2FSekROK01VSkJRREhuNTZhOG9VbUVCdXNPeEJzL041K3RKRWJQa0FGRGo4VUd2T3MvSVd2Y1NnbEdCaHZTNy9GVFlmcFdHWWREWThmUEF4V1NBMzVzVEM0cDQrTG00QWFxSW9QZVF0ZnVmSzZKaDBaaHhsYnNVWE9TbVhOaWZENVpUQWt5RG9mYmJjY2x4bkE4V05BcXhDYlJOeWtoWHhRcGFEdzY3ZlhVWWJzaUcwS2h0djJvZUl2aDhyaFFNWU9jRUFxWEcvZUkrem5nT2M1eXhyOHE4MklBTTFjL0ZMRk9wbHF1NWVGUVhyTVp6R2NWQ2pZYkxXRzVJNEJUMWV1UnJsYnh0Tk90TWl0RERFaExYSUl5bkFBdnVPRVdFM1gzTmRBZnQ5NFZnYUc0MlhJUXQwWlg2UGVDRS9xUUZlOXJLNkh4N1lVNTBLdkg3Zlc0ZlMrcTdLS0JKeHNnZ0JYNXBTQUdoMWpJclZoNXpRNnczUmZhYWhCWG0vYUNiQ1pUakNVRlVUeVdacVc5cDYyTWpKUFhWcU9yUGdNTzROdjc0R2tmK293ZnROVkJEUW5qRkpxSFN3MTdwWHZoV1c1S1pxZS9RNDlOL1VTVENBVldvUVhGSUhCSFhYZTNGUHJVRHN1R0RtdEYvaEhLVEhwZWt4aGlBT1BJK1NKcTZTNkhGNEk5WVd6a0JKVG80NmlVTXpXcDhQaXIvUmlkdUx4S1lzU2tzVjh2TGxPUXZoR1gyWWxSME9CaEJqQyt1L2dFY3ZZMEFwSzdZazQxTnhqUFNRbldGSFRGNjZVcmpnZXZCOEN1NWErbDJ2WVNSUHR1VkRvNzNoaGRNU0huVVg3dFRqc1ZaR3hBbC9XcHRpT0lFUTFnbkwyOW1YNi90UjF0bWxrWWo4VzRYK0NTaldjVURHWTFOcFMvQzdoU0txaU1MTS9sMlFtU1daNzNEZHorZ2lvOEJDRU5ZUFE0NnFua3p3WFVicXZCa3hqVVFzV2ZaRmdidW8zckFmK3dON2pPTzkwK3lueDRQaTNMKzBuWUwxU2NoRFVnQVA0Z1BWLzdJZDFxKzFIU2htdUdrSXFXUlBneXhNRnFQOEhmalRualh3WTViUWZiSmN0Nk9JektnTUhvdEYvSGUxZWdzYXhIU3FHNndmZG1RNXg4TnlURkZxQmNwMmlTb3dIUjN5azUrMzZoRjd2WEFBQUFBRWxGVGtTdVFtQ0MifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMi0yMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzYsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiU2VjdXJpdHkgS2V5IE5GQyBieSBZdWJpY28iLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlUyRjEwMDAyMDI0MTIyMjAwOCIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTEyLTIyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3Nn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wMS0xMCJ9LHsiYWFpZCI6IjAwNkYjMDAwMSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFpZCI6IjAwNkYjMDAwMSIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJIYW5rbyBVQUYgQ2xpZW50L0F1dGhlbnRpY2F0b3IgQ29tYm8gZm9yIEFuZHJvaWQifSwiZGVzY3JpcHRpb24iOiJIYW5rbyBVQUYgQ2xpZW50L0F1dGhlbnRpY2F0b3IgQ29tYm8gZm9yIEFuZHJvaWQiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJ1YWYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X2RlciJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfZGVyIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfc3Vycm9nYXRlIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImhhbmRwcmludF9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoidm9pY2VwcmludF9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZXllcHJpbnRfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhdHRlcm5faW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZhY2VwcmludF9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJzb2Z0d2FyZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJzb2Z0d2FyZSJdLCJhdHRhY2htZW50SGludCI6WyJpbnRlcm5hbCJdLCJ0Y0Rpc3BsYXkiOlsiYW55Il0sInRjRGlzcGxheUNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbiIsImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6W10sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQXd3QUFBRXNDQVlBQUFCdVREUmtBQUFBQm1KTFIwUUFBQUFBQUFENVE3dC9BQUFBQ1hCSVdYTUFBQTdEQUFBT3d3SEhiNmhrQUFBQUIzUkpUVVVINEFVVUVCZ1VTZXdSemdBQUlBQkpSRUZVZU5ydDNYK01IR2VkNS9IUFU5VmQvU05HakFOUkRBdlpOcHZ4eERnM04vSEdTOUE0Q29vMm1Gc2hPWm9qV2kyQ0xBaUQ3eUNjUU1UNWcrVDI3aUNKZEFtcklCR1F3Zy90RVNJamxNTnlwSWdqNUdRUkpSYmNCaG1mTjg3RW5wQVp3QXRHUUdiUUpUUDlzNTc3d3oxSkhIczhNMTFQVlQvVi9YNUpWclNMdTZyNysxUzM2MVBQTDJPdEZRQUFBQUNjVDBBSkFBQUFBQkFZQUFBQUFCQVlBQUFBQUJBWUFBQUFBQkFZQUFBQUFCQVlBQUFBQUJBWUFBQUFBQkFZQUFBQUFCQVlBQUFBQUJBWUFBQUFBQkFZQUFBQUFJREFBQUFBQUlEQUFBQUFBSURBQUFBQUFJREFBQUFBQUlEQUFBQUFBSURBQUFBQUFJREFBQUFBQUlEQUFBQUFBSURBQUFBQUFJREFBQUFBQUFETENwUUFjOGFVRzJXOUpXanI4c0NvWm96ZUVvWWEvL05GK3dIZjMvc3ZJdlB4SU5TN09sYkhiVWZQdEkzK0dMZjBtMjNXbnFabEFRQUFDQXpvd1hGak5oVXJ1anhzYTJzUWFDeW9xRmFXcE9LNWY4LzNHMjhiYUVOZ05CSVlUU3JRWk5TOXFuOVpOV3JGT213N2VrYUJUaFdibXExWlc2ZjFBUUFBQ0F5NFVFQUk5YTRORlkyc3BmVUxaVlh5L0xtTHdaa1FJVW1xU0MrVXpMRzJkTXhJSjBZYmRwb3JBd0FBZ01Bd2xPYU1LYmNpYlpaMFZjRm8rNGFLYXJTMkZJWWFENlZ4NlV3UFJMdXR4em9GVFMrVzlNekV2RjNneWdFQUFDQXdESFJJV0NycW5aSDBsNFdLZGtXVVpQV0x2NkJkQldsWHFYR205NkVUNnlmTnR2NkYrUThBQUFBRWhvRU1DVlZLMHJNdzFIZ1lhandxU3JObE05Y0tkSkNlQndBQUFBSkRMcDJvbU0xQnJIY1h5cnErYXJyekVlQk1FS2hXa2o2ejNQUFFzSHEwMHRLelRKb0dBQUFFQm5ocnpwaHlzNktyaTdGdUxBZXFLYVFtV1FoRGpWZWw4VGpVd2t6SkhHbzJkWWdoU3dBQWdNQUFieXozSmtRVlRaVWt0dHJyazhCb0pBbzFGVlUwdGR6cnNMVnBqMUFaQUFCQVlFQmZURWRtZXpIUWRlVkFrL1FtK0dXNTEyRzJZaGJhYlgydjJOYVRERmNDQUFBRUJtUVdGTXFCUGxndGRKZENoYmNDbzVHb3FMMHFhdTlNeVJ4NHVhb2ZNRWthQUFBUUdPRGNuREhsVmtIWEZrTHRJaWprVXhScUttcG9pdUFBQUFBSURIRHFaTlhzTEpiMWtZalZqZ2dPQUFBQUJBWXNXeDU2VkFwVWs2RWVneHdjaWswZFlJNERBQUFnTUdCTlRsVE01c2pxVXd3OUdwN2dFSmQxL1V6Uk1Ea2FBQUFRR0xDeW94dk55SVlsZmJRY2FKSWVoZUd5UERrNkRyVnJPakw3V1k0VkFBQVFHUENLNVFuTkc0dmF5eDRLUXg0Y0F0V3FnVDcvZk5rY2JqVDBYVGFBQXdBQUJJWWhOMU15V3dzbGZTd0tHSDZFVnhVRFRSWXJtanhaTWc5RlRmMlFZVW9BQU1CblBQTk93ZEdOWnVRWGtmbDRGT3FMQVdFQkt5aUYrcEF0Ni82Wmt0bEtOUUFBZ0svb1lYRHNaTlhzZktQVlI0SUN5NlJpRFluZGFDUUs5Y1ZmUk9heHNLWHYwTnNBQUFBSURBTnFlVkp6aVVuTjZPV0xXTkN1T05TN1prcm1IMGNiZHBxS0FBQUFYekFreVlIcHlHeC9ZMTFmS2dhYXBCcm8rY3Y0YW0vRHgrZU1LVk1SQUFEZ0Ezb1lFcGd6cHR3cDZzUFZnblpSRFRqN1VoYTBLdzQwZHFKaXZqcTJaR2VwQ0FBQTZDZDZHSHAwM0poTnRxUTdDNFFGcFBIRkRGUXJHOTA3VXpRM1VBMEFBRUJneUptVFZiTnpRMFgzc3dJUzBoWVZ0ZmY1c3Zrc1E1UUFBQUNCSVFmbWpDbi9JaklmTDBtZm9ScklTakhRcEMzci91UEdiS0lhQUFDQXdPQ3A0OFpzaWlQZHhoQWs5T1dMYWpTeW9hTDdUMWJOVHFvQkFBQUlESjZaS1ptdDFiTHVERU9OVXczMFUwbjZ6RXpKZkpCS0FBQUFBb01uVGxiTnppalVGd1BEUm16d1F4UnE2b1dTK1FmbU5RQUFBQUtEQjVpdk1IeWFMVDB3WDlLZWh2VGxPTmFjais4eEREVnVTN3FUZVEwQUFJREFBUFRCeEx4ZDJMSm9uOXBjdDdmV3JmYTFZaDMyN3NzYnFGWXRFeG9BQUFDQkFlaXJzU1U3ZTNuZDNqZGYwcDVtUndlOCtnSjNKME5QUjJZN0xRVUFBTkxBVHM5OTBHenBBZGZIaklyYVMyWFROVEZ2RnlUdFAyN01vVkpKZjFjTU5PbkxlNnNXOVBucHlOeTl0V21QMEZJQUFJREFrSE9qTGZ1NDYyUCtzbW9JREJuWlp1MXBTZmVkcUppRGtkV25mTm5BajlBQUFBRFN3SkFrb0VkalMzWjJjOTNlMnBDK0hGc3QrQklhV0hZVkFBQVFHQUNQYkZtMFQvMnByRnZiYlQzbXcvdUpRazBSR2dBQUFJRUI4TWpFdkYzNGk2YjlSck9qLyt4RGJ3T2hBUUFBRUJnQUQ0MDI3TFNwNnhZZmVoc0lEUUFBZ01BQWVLaG1iZjB2bXZZYmkyM2QzZS9laGlqVTFFelIzRUNyQUFBQUFnUGdtYTFOZStSUFpkM2E2ZWhZWDBORFVYdlpwd0VBQUJBWUFBOU56TnVGZHpUc0Z4b2RQZFRQOTlGZGNwWFFBQUFBQ0F5QWo3WTA3TUYrRDFHcUZ2VDVFeFd6bWRZQUFBQUVCc0JEVzV2MnlHSmRkL1J6aUZJazNYN2NtRTIwQmdBQUlEQUFIdHBtN2VtZ3FYdGFzUTczNVF0dk5GSXQ2ODQ1WThxMEJnQUFJREFBSHFwWlc3KzhidTlyZG5TZ1g2RWhqblFib1FFQUFCQVlBSStOTnV6K3hiYnU3c2U1dzFEam5hSStUQ3NBQUFBQ0ErQ3hyVTE3cEYrN1F4Y0syc1VlRFFBQWdNQUFlRzYwWWFjWDY3cWpINkVoS21ydlRNbHNwUlVBQUFDQkFmRFlObXRQOXlzMEZBSjlqcFdUQUFBQWdRSElRV2pveDg3UWdkRklKZElubUFRTkFBQUlESURuSnVidFF0RFVQVm1IaGpEVWVDdlNGQzBBQUFBR05qRE1HVk0rdXRHTTBLVEl1NXExOVg2RWhpalVGUE1aQUFEQXdBYUdUbEVmcnRTMWtTWUZvYUYzaFVDZkkzZ0RBSUNCQ3d6VGtkbGVLR2dYelFsQ1E4SWZCS09SRFV2NktOVUhBQUFERXhpT2JqUWo1VkNmcENreHFLRmhxYW12WjdsNlVqSFFKUHN6QUFDQWdRa01HNWIwMGNDSUlSUVlXUDFZY2pVcWFpOUxyUUlBZ053SGhwTlZzN01ZYUpKbUJLSEJ2VXFrVDFCNUFBQ1EyOEJ3ZEtNWktWcDloQ2JFTUlXR2VrZGZ5K3A4WWFoeGhpWUJBSURjQm9ZM3ZLeWJHSXFFWWJPMWFZODBwQzluZGI1Q1FYL0xxa2tBQUJBWWNtZW1aTGF5S2hLRzFaWkYrMVN6b3dPWi9FQ3dhaElBQUFTR3ZMM2hPV1BLQmFPUDBYUVlacU1OdXorcjVWYUxnU2JaMEEwQUFBSkRiclFLdWpZSVZLUHBNUFJmM3FidXlXb1NkQ0hRNSthTUtWTjFBQUFJREY0N3V0R01SRVh0cGRtQU0zczBMTloxUnlZL0ZFWWpyWUt1cGVvQUFCQVl2TVpZYXVCczI2dzluZFVrNktpb3ZVeUFCZ0NBd09DdEV4V3ptVDBYZ0hOdFdiUlB0ZHQ2TEl0enZlRmwzVVRGQVFBZ01IZ3Bzdm9VelFXY1g5alNkN0tZejFBb2FOZUppdGxNeFFFQUlEQjRaVG95MjVub0RLeXNabTI5S2QyVlNUaXh1cEdLQXdCQVlQQktPZEFIYVNyZ3dzYVc3R3lqbzRmU1BnL0xyQUlBUUdEd3lzbXEyVW52QXZJdXF4dnNxS2tmeHJIbTBqNFBlNkVBQUVCZzhNS2NNZVdpMVVkb0p1U2RNWHJmVE1sOE1PMjlER3JXMXB0R1gwMzloeU5RYlRveTIybFpBQUFJREgzVkt1amF3SWhsSERFUW9sQlRjYVRiMGc0TldRMU5ZcWdnQUFBRWhyNHJoTnBGRTJHUWhLSEdzd2dOV1F4Tm9wY0JBQUFDUTEreE1oSUlEYjJyV1Z0dlczMHI3YzlTTW5vL0xRb0FHRWJHbUl1Tk1aUEdtSnVOTWZjWVl3NGFZK3dxZjc3Ui9idFR4cGdKWTB5RndKQUF3eDB3NktHaFhkSi9UUE1jb3cwNzNZcDFPTzNQd2I0TXp2OEJ1bWNOLytDczltZExYcy92NlEyQlRlblBMVnkveGhwakRxYjBYcllNNG5Yc3czZlVRVzJYLzl5YzA5K0VxZTUxKzBkSlQwbjZ0cVI5a25hdjRSQjd1bi8zKzVKK0xtblJHUFA1YnZEd05qeDRHUmpvWGNBdzZDNVBtbW93YmpUMDNkVEREL3N5WUxDOU9jVmpYMFo1SlVtN2pURnZvd3k1Y28yajR4ektXVkM0cFJzU3ZyL0djTEJXZDNXRHh4UGRNT0pkY0NoNGVpTjFIZDlGclBXR3VGT1cwNmRUU3hzMG45WDdqMEpOelJUTjcwZGI5dkUwanIvTjJ0TXpKWE1nQ2pXVlp2QTVic3gzdDFsN21pc1NBNmlXNHJIZlEzbGZjYU9rK3lsRGJyajROK1VSYSsycG5JU0ZxVzVJU051Tzdua2VNY2JjWnEwOVNXQll3WW1LMlZ3T05NbDNFV3U5SWM3N1o0aUsyanRUTXFkR0czWTZsUnY2cGc3RVpWMmY1b3BqVWFUckplM25pc1FBMnBEeXpRSE91Sm5Ba0EvZDNpQVhUOWNQNU9DelhpenB2K3ZNTUtJczdkYVpucmQvYjYzMW9rN2VEVWtLWXIyYnJ5T0dUU0hRNTQ0YnN5bU5ZOWVzcmJmYitsNnFvU2ZVVk5vclB3RjljazJhQngraytSNUp3NU14Wm9JeTVNTDFqbzdqOVhDa2JqRDZZUi9Dd210OTM1ZTVUbDRGaGpsanlta09uUUI4RlJpTlZDSjlJcTJiN21KYlQ4WldDMmwraG1aRlY5T1NHRUFiVXo3K0paVDRGVHNwUVM0TS9IQ2tibGc0SUQ5NkFiL2l3K1J3cndJRE54d1labUdvOFdhazk2Vng3Q3g2R1lveGs1OHhrTkordW5ncEpYN0Z6WlRBYjhNd0hLazc0ZGlYc0xEczIvM3VnZk1xTUhERGdXRlhDdldodEpZcFRidVhJUWhVWTRsVkROak4wY1Vabk9ZS0t2MktIY1lZNWpENmJSaUdJLzAzK1RtLzZPc1ovU2I1SFJoT1ZNeG1sbElGcE1qcVUya01UYXBaVzIvRmVqVFZIeFRtSUdHd3ZEbURjeEN5ejhZcWlYNGI2T0ZJeHBqMzZzd2VDVjRHYWtuL1llZ0RBemNhUVBlN0VLaldLdWphTkk2OVdOV1BVdzA3VEg3R1lLbGxjSTQ5bFBrc2QrVmw1OXRoTStqRGticlgzWjA1K0g3MFphRUVMd0xEbkRIbFF1Q3Ntd3ZJdmFpb3ZVYzNHdWZMb0U3TTI0Vm1KOTBmNjZXaTNra0xZa0JzeU9Jay9SeG00S250bE1CTGd6NGM2V1BLeDFMSGZYbkk0RVZnV0NycW5XbXVFUS9rMFJ0ZTFrMXBIRGNPOUpNMDN6Y2JMMktBWEpQUmVkNU1xYy9DYjRpZlhQUjhlemtjcWR1NzhKV2N0TU8rZmp4azhDSXdSTkpmOGowRXpsWW9hRmNhazRqSGx1eHNwNk5qS1FhR3lUUjZSNEErMkpqUmVXcVUraXgzMGV2aTNRMzF4WEx6Wk52WDFaSCtYYzZhNVAxREZ4am1qQ2tYQ3RyRjF4RTRWMmpUV1Rtc1lkT2QvRnh0NkVwYUR3TWdxNjcvVFpUNkhDeXpQcGp0NGV0d0pKZEwrajRpYVpla3NkZjh1VXJTcHgyZUkvTTl5L29lR0JqdkRLeXNHR2d5alY2R1NrdlBwdm0rQ3gzbUpDSGZNbjdDVGNBKzEwMlVZT0RhdzlmaFNLNG1jMHZTMzF0cmI3VFcvc2hhZS9JMWY0NWFhKy92aG9lbkhaeG5kL2Q5RDA5Z1lEZ1NzT3JOOTErN1BtYk4ybnFhazUvRFVPTU1TMExPWlRtdllBdmxQc2NlaGlWNUZaNEhlVGpTWHprNnpxZXR0UTllNkM5WWEwOUsrb1JuNzl2L3dNQndKR0FOZ2FHZ1hTbmRmUDg4emZkZGVsbnZvUFdRWTdVTXo3V2JjcDhYdzVJR3F4MThIWTdrWXY3Q0k1Syt0WmEvYUswOUt1bGVCK2U4SnNzaTlUVXd0Q0kyckFIV29ycW85N2crNW1qRFRxZTU4ek85aDhpNURWbWVyRjlycTN2dWs1VEFDd003SEtuTFJlL0pnOWJhcFhVR2pLUXkzV0N1MzBPU3J1SjdDS3l1R0tTeklrSTdUdStKRDcySHlMbHJNajVmbFpLZkkvTngyamdueUE3MGNDU0hRZjNINi96N1J4eTkvOHkrSDMwTkRBWEQ1aXpBbXI2b1JpTXpKYk0xaFVPbk9pd3BwZmNNWkdGanh1ZGpDTi81c1lCQ2Z3MzZjS1NhZzJNOFlxMTljVDB2NlBaR2ZOUEJ1VE9iYTlXM3dIRGNtRTFCd05yVHdEbzQ3NUVyTmpXYjVodTJaMWFFQVBJbzY5MVUzMHJKejJ1S0V2VFZvQTlIY3JHazhULzMrRG9YLy81bTlxQ2hiNEdoV05IbGZBK0J0WXRDOS85dzFxeXR0MklkVHUxN2JyU1Rsa1BlOUdsMW5zdW8vSGt4TEtsLzM0T0tCbnQxSk1uTmtzYlBaZnk2MThyc1FVUGZBa1BZRmtNVmdIVktZNGlQN2VpWjFINWdBdFZZWGhVNWxLU2J2OWZKalBzbys0b1lsdFFmcm9hTkgvTDRNN29ZZXZpN0hsLzNrb056Wi9hZ29kQ3ZGZ3BDdll2dm90L0tSdmYrc21xRzduTTNXM3BndEdVZjkvVHRYU1ZwMnVVQjQ0S2VUL01OZDVkWFBjSTNDamxTUy9EYUI5WGpNcW5HbU1vNlYxb1pGcmQwNjRwc1hlZmdHRDRQUjVMYzlLRDh2c2ZYemVYcFl1aExEOE54WXpZRlJqeDFCTmFiOEZOWUtHQnN5YzZtL0o2dm9PV1FNMG1XVlAxZGd0ZStuZEtmMXc1anpBUmx5RTUzT05KZERnNTFnR3FtS3JPZXliNEVCdVl2QUQxK1lWTWE0cFBtUElaUWZOK1JPejB2cVdxdFRmSmRxbEg2RlRFZktsdkRNQnpKbFQ4TXhmMUhQMDdLL0FXZ2QybnNvSnptUElZdzFQaWNNV1ZhRGpuUzY3am1wN3YvN1hVZXd3Wkt2NktiS1VHbUJuNDRrcXM5R05hN3BDcUJZVDBuRFZocUVlaFZLa044QXFYNm85NG82eTIwSEhLazEzSE5QKzcrOTJTUHI3K0cwcStJWVVuWjNVZ3pIQW45RHd4enhwVFpmd0hvWFJwRGZGNnU2cmVwL3RDMEdaYUUzTndzSlZsU2RhSDczMS8xK1BxTnRNQUYvUTBseUFURGtkRC93TUNUUmlCaFlBZzE3dnFZRS9OMklkVWZHc05EQXVSR2tpVlZsOWRWLzAyUHI5OUQrUy9vcnU3VGI2UnJHRlpIZ3UrQmdTZU5RSExIamRuaytwaHBUbnhtR0NKeUpFbTRYVjVYL1lWZUQ4QW1aYXZhVGduU3czQWsrQk1ZZU5JSUpCWkY3b2N1bU5qSkpqSXJCWVlhRTUrUkUwa21IczkxLzd1WTRCaFZtdUNDcnFNRXVRaGtERWNpTUNTK2NlQkpJNUJVTE9kUElXT2I3aVl5REVkRVRyaVllUHpyQksrOWtpYTRJSVlscGVzcUI4ZGdPQktCd1VsZ3FGRjJJUEUzOXhMWGg3UkZwYnJEckRINk14b09PZEJ6NzUyMTltVDN2MG0rUzIrbENWWjFMU1ZJall2bGF4bU9SR0JJSm8xeDE4QXdNa2FYT2c4TVZ2K2E2cHZ1SkpwTUNtVEYxY1RqZTN0ODNXVTB3YXB1b2dScC9MdGlKaVR0Y0hDb24xSk5Ba01pYVl5N0JwQ1RIeHVqelZRQm50OHdKVmxTOWZVQm9kZVZ4OTVEUzZ3ZTZoSzJGYzdQeFc3YVR5LzN0SUhBMExzVXhsMER3NmdZYU5MMU1VdjFkUGRpQ01XUUpIalBaUy9ZY3oyK2JnZk5zQ1pYVXdMblhBeEhlcEF5RWhoY25PMFNTZzc0cVdadFBkV3ZQL09Ya0lPdlFZTFh2bjRZUnMrcmpobGp0dEFVcTJKWWtrTU9oeU05UlRVSkRBNHVTUGZqcmdIa3g5R05ab1Fxd0dNYkhCNXJMc0ZyZWJpMnVqM3NXZUdVcStGSVJ5a2xnU0V4aGlRQTd1UnhFWUZLblhsTThGcVNKVldmZWQzLy9ZY0V4K0xoMnRwY1R3bWNZVGdTL0FrTURFa0EzQ21VbGJ1MXlPTU9nUUZlYzNaOVdtdGZUUER5SzJpS05abGE1WDlmcEVTcll6Z1N2QXNNQUlZODVGaTlpU3JBWXowdnFickN5akNQOUhnNFZoUmJtOTBYR3BiRTVtRnJ4bkFrK0JNWVRsUU1QNEFBQUMrbHRFeG5yOHRMN3FGRjFveGhTY2t4SEFuK0JBWUFNS0d1cEFyd1ZKSWxWVmZhcE8wWnp3TE1JTHFGRWlRS3ltOFR3NUd3Qm9YTWtrbXNza0lLbnBZL1g3UWZvQW9BMExOYUNzZDhLY0ZyM3l6cHhTRnJnOXNsM2JYTzErd3d4a3d3SEtabkxucG9HSTVFWUhBbzF0c0lEQUNRaVJQR0dLcXdQa21XVlAzcEN2Ly9GeElHbUdIYk1iZlhPUWM3SlhIRDJwc3BCOGRnT05JUVlFZ1NnTXlFUnR1b0FqeDFUUXJIVExKS3o2WWhiSU5qa3A3dTRYVTNjL211WDNjNDBtNEhoMkk0RW9FQkFCeis0Qml4Y1J0OGxXUkoxZlBPVlZoaDVhUzFHc2I1UG92cTdXbjFqdTdTb09melRTN3RGVEVjQ1FRR0FBRFd3YmVWaWJZTWFUdjArclI2cGFWQjU3bTBWOFJ3SlBnWEdGZ2RCUURnSXdjckV2MzZBdi9idlQwZWMvY3d0a1gzYVhVdnc1SytZb3lwY0RXdldVME1SNEtQZ1FFQUFFOGxXVkpWMXRxbEMvelBDd21DekxEMk10emY0K3UyY3ltdjJVME9qc0Z3SkFJREFBQkRvNWJndGF1TmtYOHV3YkdyUTlvZWgzcDgzWFZjeW12bVlnZ2V3NUVJREFDUWpqbGp5bFFCbmtteXBPcHFZK1IvbCtEWTd4aXlkcWhLa3JYMmxLUkhlbmo5WFF4THloVERrUWdNQUpDT1JsbHZvUXJ3ekJVSlhydmFiczYvVDNEc3R3NVpPN3cySUIzbzhSaXZINWEwd09XZENvWWpFUmdBQUJncVNaYjdYVzAzNXo4a09QWmxROXdtai9iNHVvKzg3djkranNzN0ZReEhJakFBQURCVTlpVjQ3UVYzYzdiV3Z0aW45NVZyM2JyMXNvZkNIZ2VyWG1GMVA2Y0VCQVlBU0UyN3JpV3FBRjg0R1BPK2x0MmN2OW5IOTVkbkQvZjR1cXU1c2xOM0ZTVWdNQUJBYXJaWmU1b3F3Q052VC9qNlg2L2g3OHozOGYzbDJjOTZmTjFOWE5hcFk5OExBZ01BQUVQamtpUXZYbVVQaG1YUEpEaEZiVmdicGpzczZmWWVYc3F3cEd5dzd3V0JBUUNRWTJQV1d0UExIL1crTTNGZVhacmd0V3NkYXZSU2duTnNHUEpyK1lrZVgvZCtmZ1pTeDc0WEJBYjNUSnpvQnhNQWdEUWtXVkoxclVPTmt2UXdYRFBrYlhHa3gyTk5PYWc5THV3dWVuSUlETTdGVm5PVUd3RGdtU1JMcW1aeE03cHhtTnVpTytTcmwyRkp1NDB4YitQeVh0RTNIUjJIQ2VZRUJnQUFCbDZTcFV2WDFITnVyVDJaNEJ4N2FDTDlvTWZYWFUvcFZ2Uy8xTnR1MnEvSEJITUNBd0M0MWVub0dGV0FMeHlzOHZLN2RmemRweE84ejZGK1V0N2RVYmlYK2sxeGxWL1FBUWZIWUlJNWdRRUEzSXFOL2g5VmdFZVNMbG42KzNYODNSOG5PRStWcHVwcForSGRHcTQ1SU90MXlORnhtR0ErQkFxWjNTZ1U5RHpsVHM5TTBkeEFGZHhkcTJOTGRwWktBQVB2a29Tdi84TTYvdTZ2RXB6blNra25oN3l0ZnRUajYraGxXSUcxOXBReDVwRnVzRXBpcXNkQUJ3TERBTjA4eHBvTEF2L1h3WTZLMmt0cnVkRnM2UUZKQklaVS9vRmExeEFPSUcyWEpydWU3WXZyK091L1NYQ3F0L0xiWVUvMmVITzdtOHY4Z2c0NHFORnVZOHpickxXbktPZmd5bXhJVXJ1dXBUd1dxQ1A5SzVjSjRDcUJyMnNJQjVDMkpFdXFybmZDYUpLd2ZObVF0TWRxSzBJZDRKSjF6dFd3cEJzcEpZSEJpVzNXbnFiY0FBQ1BKRmxTZGIxRGhKS0U1ZmNNU1h1c3RpTFVJUzVadDdxOUFpNldXTDJaYWhJWUFNQUo1akxCTTBtV1ZGM3ZuSVJmSnpqWERwcnFsWnZiUjZpRWN3ODdPTVlPWTh3RXBTUXdPTkdLZFppU0F3RDZ6Y0dTcXV1YWs5RGRnQ3pKKzkxQ3EwbVN2a1lKblB1Wm8rUHNwSlFFaGx5SU8wTzFJeWFRTzZXNmZrc1Y0SW1rUzZyMk1pY2h5ZENQUzJneXB6ZTNlRFhNdmlnM3c1Sys0aUNJZzhBZ3hUYmRsV2NLVm05eS9rWHE2Qmt1RThDTm1yVjFxZ0JQSkwwQjcyVk93bnlDODExS2t6bTl1Y1haSG5aMG5PMlVrc0NRWExpdU5hc0JEQkNHSk1JelNXL0FlL24zN0tjSnpuY0ZUZWI4NWhhdmV0TFJjYTZqbEFRR0IwOEcwbDJpMUFhNnlQa3hpL2xjRGhid2pZbjFFbFdBUnhMZGdLOXpEd1lYTnROa3ptOXU4ZXIxdkNUcGRnZUh1c3NZY3pFVkpUQWtzbFJPMUIyNytvY3g3bjlRMHc0NXdMQ0lyZWFvQWp5U1pFblZYbGZxU1RMRWRROU41dnptRm1kN3d0RnhycWFVQklaRUp1YnRBaVVIaHZiWGhsMUE0Wk1rUzZxZTdQRjFpMG5lTUU5dVU3bTV4YXVPT0RyT1RaU1N3SkJZbXVPWWk0RW1YUjl6Yk1uT2Nwa0F5VFdiNmZZd0F1dTQ4VTY2a3NzK1k0eGQ3eDhsMjR0Qmt0NU02NTExYy9zMFpYREhZYy9OSHNJdGdjSEJCZG5UVW5Sck5tZE0yZlV4NDVpaEZFQlM3UFlPajd3OXArKzdSdE9kZFhQN0lKVnd6bFhQemZzcEpZRWgyWmM4WFBmdW1PdlNLT3N0cm8vWkVmTVlnRVRmb1k2T1VRVjRKSzk3R215aTZjN3lGQ1Z3SHNRT3kwM1B6UlRWSkRBa3ZCalR2ZmsyUm4vbS9EMnpGd09RTkhRL1R4WGdrYnp1YVhBbFRYZld6ZTFSTVN3cERTNTZiblliWTk1R0tRa01QVXQ5VGtBbmhUR2VUTllFRW1sYlBVY1Y0Skc4N21td2hhWkw1ZVlXWjNQVmMzTWpwU1F3Skx1blQzRjRRaHBMcTc1YzFXKzVWSURleFMzOWhpckFJeU01ZmQrN2FicHpIS1FFYmpuc3VibVphaElZRW1rcnZjQ1F4a3BKRS9OMmdZblBRTytZOEF6UDdNdnJHMmVZeHprM3Q2ZlUrNzRZV0ptTG5wc2R4cGdKanovakgyaG16d05EeDZZNzhmbEV4VGp2WldoYlorc1RBME1semFXVWdSNXV1Q3M1L3dnc3JYcXVBNVRBdVI4NU9zNU9qOE9tazkzYWpURkRNVlN3TDRHaGNaRmVTUGNmQlBjVG54bUREZlQ0bzh5aUFmREwyM1ArL3Q5QkU1N2pVVXJnL0diNnBOejAzSHhsQUVLNnp6THJYU3YwNDlOTnpOdUYyYktaQzRKMDFwUU8yOW9xeDh1dE5TN1NDOVdHdjFmTXNEN0ZUV01JR3R5S0M2eVFCSzlja3ZQMy8xYWE4SnliMnhlTk1kK1V0SWRxT0hWQWJ1Yk5iSmZvYVU3SnlheE9WT2pYSjJ4YkhZbFMyb1FtQ1BVdVNkOXdIWEplS0psallhaHhINitZeSt2MnZtSDhwdnl5YWdnTW5tTzNkSGptMHB5Ly84dG93dk42bU1EZzNDRkh4N25PNDhCd3IvbzNweWxYeXlRSC9UcHhta044QXFPUlZPWXhoTTYrUE1CUVlQNENQSFJGenQvL1Bwcnd2SDVHQ2R4eU9LSDhMbVBNeFFOY3FuN2UrR2MyNUxkdmdhSFMwck5wSHQvRStyZXVqN2xZWWl3MnNCNXh3S1pLOE01STNqOEFZOExQZTNQN29zNDhMWVpicmlhVVgrM3A1K3ZuZloyTDRZVXZEWHhncUZsYlQzTS9ocUp4UHpOL1l0NHVwUG1lZ1VIVFdtTCtBcnd6Q0UvbzMwNHpuaGZMcTdybmFrTDVUWjUrUGhjMzNMMzJXcm9ZWHZoQ1ZvVUsrdGxLblZnL1NlMkRCYW9kM1dpY1AwbHFXRlpqQU5ZaWpqWEgvZ3Z3aVlzbjg5WmFrL1NQcExHRWIrTVNXdk84V1A3Y3NXN1B6VGNkSEdxUHAzdUl1T2hoK0tzZVgvY2VCK2ZPYkMrSnZnYUdabHYva3VieHF3MzM0OG9xTFQwYld5M3dNd0pjR0h1WHdFTkpuOHk3ZW9LZDlCLzVTMm5LODk3Y0xrbTZuVW80OTdDajQxenY0V2Y3dFlOajdGN3Z3NGh1ZU5yaDRKby9OUlNCWVp1MXA5UGNRYmtZNjBiWHg2eFpXMi9IVEg0RzF1RG5sQUNlU2ZwazNza1NoZzQyakxxR3BselJEeWlCYzY0bWxFOTVHakpkUEFqWXZzNi8vMDRINTh4MHprN1E3OFpLOHlsa0VLaDIzSmhOcm8vN2NwVWZKT0JDWXF1RjBZYWRwaEx3VE5Jbjh5NTdsNVBjcEd5a0tWZThBVHdxc2RpQzQ1cTZHcGEwMjlOZGtmKzNpOCsyenIvL1NRZm4vT2xRQlFhbC9CU3lHTGwvRWpNeGJ4ZWFIYmFpQjFaOEVFQXZIUHlVZEVsVmw4dUJKK210WUwrQkMzdVFFampuYWxqU2V6MzhiQzd1US9jWll5Ylc4aGVOTWUrVm13M3hNbDNocWUrQlliUmhwOU9jRTFBTTlQNDBqa3N2QTlDL0J3RkFqNUl1aE9GeUNjTkUvOWg3T29IVUYwOVJBdWVlZEhTY216MzhiSzVHdW54OXRkQmdqSm1VOUppRGN6MXRyVDJaWlpGODZHRkk5V2xrWURReUhabnRybzlMTHdOd2ZneEhnc2VTTHFrNjUvQzlKQTBmVlpyei9MckRrbGhpMVcxTlhVMG8zN0hXSi9GNS9HeVNmbTZNdWNjWU0ybU0yZkthUDVQR21Ic2NodG5NZTlHOENBek5acnJERjRxQnJrdmp1UFF5QU5rK0FBQjY1V2l6czBXSGJ5bnArdWxYMHFvWHhBTTk5NTV3ZEp5LzhmQ3p1YnlmMjljTkJpZGU4K2NwdWQwREp2TmVOQzhDUStxckpRV2FUR1B5ODhTOFhXaTI5QUMvSWNDcjRpQzkvVldBQkJKdmR1WjRDY09rNFdNRFRYcEJQTGh3ejlYUW5idDgyNjA4WjcxU2ozVGY3L0FGQmtscWQ1eU02VnBSRktXei9tK3hyU2ZURER0QXJzSkNyTG14SlR0TEplQWhyelk3Y3pEK21CNkcxY01kdzVMYzF0VGxQaGZiUGZ5SVg4dEpVOXpiajVONkV4aGUzcER1TW1oUnFLazBkbjZ1V1Z0dkduMlZueElnL2VBUEpKQjBTZFY3UGZzODc2RkpCK1lHTUU5Y0RVdmE3ZUZuZXpJSElmTVJhKzNob1E0TUUvTjJvUlVyMVNKY3RKak91TG14SlR2YjZPZ2hma2N3N05JTy9rQUNWM2o0bnBLRWtCMDA2YXArUmduYzZ0NnN1dmlkMzJlTXVkaXp6N1lrNmI5NjNnUjllM0FSK0ZTRlZ1d3N1WjVYV3IxcmNITzFBQUFMcFVsRVFWUU1raFExOVVPR0ptR1l0ZHQ2YkdMZUxsQUplQ3JwYi85UGZmdEFubTZDNWRNTm9Lc054M0EyVnl2MFhPM2hOWE5VN29aZE9ROEwvZXBkOEM0d2JHM2FJMm5mZEtmVnkxQ3p0cjdZMEpmNEhjR3dpZzFybjhOcit6eDhUMGxEeUNVMDY2b2VwZ1RPdWZxdHY4blR6M2VmL0J1YTlMU2svOUxQTnhENDFrcXBUMzVPc1pkaG03V25HOUtYK1MzQjBJV0ZXSFBzdlFCZk9WcVJKWTFkVlpQdXhYQXByYnVxSnltQlc5Mm44QzZHSmUzeGNRUEM3dENrV3h4OVJsZGhZYXI3dmdnTXk0cnQ5TC9jYWZVeVNOS1dSZnNVRzdwaDJMUUNIYVFLOE5qYlBYMWZjd2xmZndWTnU2YWJ2OXVwaEhPdWhpVmQ3K2wxYzByU2xBZWhZVGtzbk9wM1RRcStOVkxOMnZwTXlSeUlRazJsZFk0bzFOU0ppdmxKV3NzL2pqYnMvaGRLNXZJdzFIaFdkWnNwbWh0Y0gvUGxEWHFhTWVsWVRXeTFFTldaWEFpdnVSaTY4K3NVM2xmU3ZSaEdhTm8xZVlJU09QY2pSOGVaVWg5MkxWNXJhRERHVE9uTVVLQTl3eHdXdkF3TTBwa2RsS05HZW9GQmtrS3JHM1ZtbkZvcWdxYnU2VVM2TGF2UUVCVzExL21OWUYzUFN5SXc0SUphc1I3ZFltMmRTc0JqaVlmdXBERWNvSHREa3VRUSt5VGRSdk91NmdnbGNIN3RualRHUEtMa3k2UHVOc1pzY2JBdlNacWg0VC9wek5DMmIyZDQ2dHNsM2RmdllVaG4zZGY2MkVCWkxMRmFERFE1SFpuVU5nNnBXVnNQbXJvbnR0eHdZN0F0VnZWanFnRFBKUjI2aytaS080a21WL3EyTktXbk4zMUxrajVOSlp4ek5mejZ2YjVmUDliYUIzVm1hR1BheTVyZUsybk1XbnUzVDJIQjI4QWdTUjJUL3Bqb2NxaFB6aGxUVGpNMExOWjFCNkVCZzZyWjBRR0dyU0VIa2c3ZG1VL3h2U1Y5c3ZwbW1uZE5XTVhOdlVPT2puTnpUb0xuS1d2dGJaTGVKT252NVc0bHBhZTdnWGJNV251YnI3MHR4bHJyYmVNOFh6YWZMUWFhVFBNY2pZNGUydEt3cVlhVDQ4WnNxcFoxWjJETy9LUDE1NHYyQTY3UDhjdXErWit1ajFtMzJwZldQQStmUDNlenBRZEdXL1p4MzYvbE5OcG52ZldjTDJrUGdRRUFNSXk2cXp5OVU5SVdTWmZwekE3c3EyMnFlSy9PRFBkK1R0SS8rekpIWVRVRm45OWN4K2hnVWVrR2hsS29ENTJvbVArYjVvM3hObXRQSHpmbWptcEp0d2FCYW56Rk1Bam9YUUFBRExQdXpmNHB1WnNFN3EzQTV6YzN0bVJuMDU3TElFbkZXQjlPK3h6YnJEMXRHcnFqMDlFeHZtSVlCQzlYOVFPcUFBREE0QXQ4ZjROWnpHVUlRNDJuc1N6cDY5V3NyYitqWWIvQVpZZThvM2NCQUFBQ2d6ZXk2bVdJaXRwN29tSTJjMGtBcTZOM0FRQUFBb05Yc3VobGtLVEk2bE5wcnBvRURJSkdSdy9SdXdBQUFJSEJLMk5MZHJiWmNiYmU3OHJGQ0ZSclJlbHVHQWZrV1d5MUVEWDFReW9CQUFDQndUdFpEWUdJUWsybHVhRWJrR2Z0dHI1WFkxZG5BQUFJREQ2YW1MY0x6WllleU9KYzVWQ2ZQRzdNSmk0UDRGVnhyRG5YKzFNQUFBQUNnMVBGdHA2TVk4MmxYaFNqa1Vxa1R6Q2ZBWGhWMCtpclZBRUFBQUtEMTJyVzF0dFczOHJpWEdHbzhVNHgvZjBaZ0R4b3hUcnMrNjdmQUFDQXdDQkpHbTNZNlN5V1daV2tRa0c3c3RpZkFmQlpiTFh3VWtYL1JDVUFBQ0F3NUVhV055OVJVWHVaQkkxaDFtN3JleXlqQ2dBQWdTRlhzcHdBTFRFSkdzT3IwOUV4SmpvREFFQmd5S1hSbG4yODA5R3hUSXBrTkZJdDYwNUNBNGJOVWxOZnB3b0FBQkFZdUpsWlkyaGc1U1FNazJaTEQyeXo5alNWQUFDQXdKQmIyNnc5bmVYUXBERFVlQnpwTmtJREJoMURrUUFBd0VBRUJpbmJvVW1FQmd3TGhpSUJBSUNCQ1F6TE56ZXhWV2FydUxCSEF3WVpRNUVBQU1EQUJZWnQxcDV1R2YyUExNOVpLR2pYVE1sOGtFc0lnNlFWNnpCRGtRQUF3TUFGQmtuYXNtaWZhcmYxV0pibmpFSk5FUm93U0M2djIvdW9BZ0FBR01qQUlFbGhTOStKWTgwUkdnQUFBQUFDd3pscTF0WVhHL3BTMXVlTlFrMjlVREwvd0VSb0FBQUFFQmc4dDgzYTA0dHQzWjMxZVZrOUNRQUFBQVNHbk5qYXRFZWFIUjBnTkFBQUFBQUVodk1hYmRqOVdlN1A4TnJRWU11Ni83Z3htN2k4QUFBQVFHRHcrY00xZFUrVyt6TzhjbDZqa1dwWmQ4NlV6Rll1TVFBQUFCQVlQRld6dHI1WTF4MzlDZzFScUM5T1IyWTdseGtBQUFBSURKN2FadTNwZHF4LzdOZjVxd1Y5bm1WWEFRQUFRR0R3MkdqRFR2ZGo1YVJsTExzS0FBQUFBb1BudGpidGtVWkhEL1hyL011VG9VOVV6R1l1T3dBQUFCQVlQTFNsWVEvMlk3blZWNHB0TkZJMnVuZW1hRzdnMGdNQUFBQ0J3VU9qRGJ1L242RkJrcUtpOWo1Zk5wODl1dEdNY0FrQ0FBQ0F3T0JoYUdpMzlWZy8zME14ME9RYjYvb1NTNjhDQUFDQXdPQ2hzS1h2OUdOanQ3T0szMTE2OVJlUitUZ1RvZ0VBQUVCZzhFak4ybnJRMUQzOURnMlNWQ2hvbHkzcmZub2JBQUFBUUdBZ05KeS9JVjdUMjhEY0JnQUFBQkFZUEFzTi9aNEl2YXhRMEs0MzF2VWxWbElDQUFBQWdjR2owT0RENmttdk5JclJTRlRVM3RteVlWSTBBQUFBK3FwQUNWNDEyckQ3WjBwR1VhZ3BMNEpEb0Zva2ZmSDVzam5jTVRvNHRtUm5hYVVNdmhTaGRqMWZObGU2UEdab3RJM0tBZ0FBQXNPZ2hJYWkrWDFVMUY1ZjNsTXgwR1JSbWlRNFpCZlVBcWxHSlFBQUFBZ001dzhOTGZ2NGRHVCtXQzNvOHo2OXIrWGc4RUxKSEd0WVBWcHA2ZG1hdFhWYURBQUFBQVNHakcxdDJpTW5LbVpmSk4wZUdIbTFhbEVZYXJ3cWpjZWhGbVpLNWxEYjZya3FMVGwwMm5VdFVRVUFBSkEySmoxZndOaVNuVjJzNnc0ZmxsMDliK09kV1lwMXlyZWVFS1J2c2EyN3QxbDdta29BQUFBQ1E1OXRzL1owME5ROXJWaUhxUWI2TGJaYWVHbEp0Mnh0MmlOVUF3QUFFQmc4VWJPMmZubmQzdGZvNkNHcWdYN3BkSFRzVDJYZFNzOENBQURJRWlQZjEyRkx3eDZjS1prVGhVQ2Y4MjFlQXdaYnM2TURvdzI3bjBvQUFJQ3MwY093VHFNTk8vMm5zbTcxZFY0REJrdHN0YkRZMXQyRUJRQUFRR0RJa1lsNXUvQ09odjBDUTVTUXBrNUh4eGJydW9QNUNnQUFvSjhZa3BRQVE1U1Fsa1pIRDIxcDJJTlVBZ0FBOUJzOURBbU5OdXkwcWV1V2RsdVBVUTBrRmNlYXExdnRJeXdBQUFCZjBNUGdRSGUzNVcvTWxNeFQ5RGFnVjQyT0hvcWErdUVZdTNjREFBQ1AwTVBnRUwwTjZNVnJleFZxaEFVQUFPQVplaGdjbzdjQjYwR3ZBZ0FBSURBTXFkR0duWjR6NXBaR3BQZVZRbjJJaXVDMU9oMGRXMnJxNjJ6Q0JnQUFDQXhEck52YmNQQzRNVDh0bGZSM3hVQ1RWR1c0eFZZTDlZNit4bEtwQUFDQXdJQlhkSjhpM3pjZG1TZktnVDRZQktwUmxlR3pQUHhvSzhPUEFBQUFnUUhuMDMycWZHU21hRzRvRlBTM3pHOFlEczJPRHJ4YzFROG01dTBDMVFBQUFBUUdyR3EwWlIrZk0rYkpaa0hYRWh3R1Z5dlc0WTdSd2JHR25hVWFBQUNBd0lCMTZjNXZPQk1jSWsxRm9hYW95dnJGVmd1K0JhNVhna0tkb0FBQUFBZ01jQk1jOWgvZGFINXcwVXZhUVkvRCtuU3NqZ2ZHajhua0JBVUFBRUJnUUdxNjQ5c1pxcFJEelk0T3hJRitRbEFBQUFBRUJxUnVlYWlTcE1lbkk3T2RWWlg4RkZzdHRHSTl1bGpWajVuTURBQUFDQXpvaStWVmxVNVV6T1pDUjM5ZEtHZ1hWZWx6VUlnMVY0KzF2OUxTczF0WUhoVUFBQkFZNElPeEpUc3I2UnRITjVxSEwzcEpPd3FoZHRIcmtHRklzRnBveHpyRXNDTUFBRUJnZ05lVzV6bElldnhFeFd3T1lyMjdFT2g2NWpxa294WHJjQ3ZXRTVXV25oMmxOd0VBQUJBWWtDZmRYb2RaU2Z0blNtYXJwS3NJRDhsMU9qcldEblZvc2FSbm1Kc0FBQUJBWUJnSW93MDdMV21hOE5DYlZxekRjYUNuQ1FrQUFBQUVocUVLRDhlTjJSUVY5Ry9DUU84T1E0MVRuVFBpV0hOdHF5T1NmbDVzYXZaeWhoc0JBQUFRR0liUk5tdFBTenF0TS9zN2xGdVJObHRwckNDTkQxT0FpSzBXNG83K1Q2ZWc2ZGFTbnUvV0JRQUFBQVFHTE92dTc3RGMrM0J3enBoeW82eTNCRzFkYmtKZEdScHRlLzBRcGxKZHY4M2paMjNGT2h4YnpYYXNmdFc0U0M4d3pBZ0FBS0IzeGxwTEZTQkplbTJJVUtCTFJodDJ2Ky92K1dUVjdEUXRWUlRvVkxPcGVYb1BBQUFBQ0F3QUFBQUFNaEpRQWdBQUFBQUVCZ0FBQUFBRUJnQUFBQUFFQmdBQUFBQUVCZ0FBQUFBRUJnQUFBQUFFQmdBQUFBQUVCZ0FBQUFBRUJnQUFBQUFFQmdBQUFBQUVCZ0FBQUFBZ01BQUFBQUFnTUFBQUFBQWdNQUFBQUFBZ01BQUFBQUFnTUFBQUFBQWdNQUFBQUFBZ01BQUFBQUFnTUFBQUFBQWdNQUFBQUFBZ01BQUFBQURBc3Y4UGxkcjZOSFIzKzdZQUFBQUFTVVZPUks1Q1lJST0ifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiTk9UX0ZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjAtMTAtMTQifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIwLTEwLTE0In0seyJhYWd1aWQiOiJjZGJkYWVhMi1jNDE1LTUwNzMtNTBmNy1jMDRlOTY4NjQwYjYiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6ImNkYmRhZWEyLWM0MTUtNTA3My01MGY3LWMwNGU5Njg2NDBiNiIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJFeGNlbHNlY3UgZVNlY3UgRklETzIgU2VjdXJpdHkgS2V5In0sImRlc2NyaXB0aW9uIjoiRXhjZWxzZWN1IGVTZWN1IEZJRE8yIFNlY3VyaXR5IEtleSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2ludGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQ1ZqQ0NBZjJnQXdJQkFnSUpBTm9NMzlaWTc1WnBNQW9HQ0NxR1NNNDlCQU1DTUlHR01Rc3dDUVlEVlFRR0V3SkRUakV6TURFR0ExVUVDZ3dxVTJobGJucG9aVzRnUlhoalpXeHpaV04xSUVSaGRHRWdWR1ZqYUc1dmJHOW5lU0JEYnk0Z1RIUmtNUjR3SEFZRFZRUUxEQlZGZUdObGJITmxZM1VnUm1sa2J5QlRaWEoyWlhJeElqQWdCZ05WQkFNTUdVVjRZMlZzYzJWamRTQkdhV1J2SUZKdmIzUWdRMEVnTURFd0lCY05NVGt3TVRJNU1ESXdPRE15V2hnUE1qQTFPVEF4TVRrd01qQTRNekphTUlHR01Rc3dDUVlEVlFRR0V3SkRUakV6TURFR0ExVUVDZ3dxVTJobGJucG9aVzRnUlhoalpXeHpaV04xSUVSaGRHRWdWR1ZqYUc1dmJHOW5lU0JEYnk0Z1RIUmtNUjR3SEFZRFZRUUxEQlZGZUdObGJITmxZM1VnUm1sa2J5QlRaWEoyWlhJeElqQWdCZ05WQkFNTUdVVjRZMlZzYzJWamRTQkdhV1J2SUZKdmIzUWdRMEVnTURFd1dUQVRCZ2NxaGtqT1BRSUJCZ2dxaGtqT1BRTUJCd05DQUFUVityT0ZFMk12Q3hLbkoycUVNbDF4VisxSUJGaFdWekZQZS83QVNqVklFY1Y5cHBLMGkraVQ4Q3FRSmNjeEJwejVkT1RlczZBc2FwQ205YTN5ZUI4RG8xQXdUakFkQmdOVkhRNEVGZ1FVOUlLdnZwYmd4cy82U29pZlhlbkZORHRJN0NNd0h3WURWUjBqQkJnd0ZvQVU5SUt2dnBiZ3hzLzZTb2lmWGVuRk5EdEk3Q013REFZRFZSMFRCQVV3QXdFQi96QUtCZ2dxaGtqT1BRUURBZ05IQURCRUFpQkgwOXJsdUQrUnVqNnR5N2pZaEFyWW16bkVvcFZrLytreGR6ZlJxUXgxSlFJZ1NvTVhrUGM5a2Zsdm13RFJkUXErWE4xYmpIODRkQUY5cmpveU1sRWtONXc9Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUl3QUFBQVlDQVlBQUFBb054VnJBQUFBQ1hCSVdYTUFBQjdDQUFBZXdnRnUwSFUrQUFBRklHbFVXSFJZVFV3NlkyOXRMbUZrYjJKbExuaHRjQUFBQUFBQVBEOTRjR0ZqYTJWMElHSmxaMmx1UFNMdnU3OGlJR2xrUFNKWE5VMHdUWEJEWldocFNIcHlaVk42VGxSamVtdGpPV1FpUHo0Z1BIZzZlRzF3YldWMFlTQjRiV3h1Y3pwNFBTSmhaRzlpWlRwdWN6cHRaWFJoTHlJZ2VEcDRiWEIwYXowaVFXUnZZbVVnV0UxUUlFTnZjbVVnTlM0MkxXTXhORElnTnprdU1UWXdPVEkwTENBeU1ERTNMekEzTHpFekxUQXhPakEyT2pNNUlDQWdJQ0FnSUNBaVBpQThjbVJtT2xKRVJpQjRiV3h1Y3pweVpHWTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5MekU1T1Rrdk1ESXZNakl0Y21SbUxYTjViblJoZUMxdWN5TWlQaUE4Y21SbU9rUmxjMk55YVhCMGFXOXVJSEprWmpwaFltOTFkRDBpSWlCNGJXeHVjenA0YlhBOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOGlJSGh0Ykc1ek9tUmpQU0pvZEhSd09pOHZjSFZ5YkM1dmNtY3ZaR012Wld4bGJXVnVkSE12TVM0eEx5SWdlRzFzYm5NNmNHaHZkRzl6YUc5d1BTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM0JvYjNSdmMyaHZjQzh4TGpBdklpQjRiV3h1Y3pwNGJYQk5UVDBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5NFlYQXZNUzR3TDIxdEx5SWdlRzFzYm5NNmMzUkZkblE5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5elZIbHdaUzlTWlhOdmRYSmpaVVYyWlc1MEl5SWdlRzF3T2tOeVpXRjBiM0pVYjI5c1BTSkJaRzlpWlNCUWFHOTBiM05vYjNBZ1EwTWdLRmRwYm1SdmQzTXBJaUI0YlhBNlEzSmxZWFJsUkdGMFpUMGlNakF4T0Mwd05TMHlNMVF4TkRvME1EbzFOU3N3T0Rvd01DSWdlRzF3T2sxdlpHbG1lVVJoZEdVOUlqSXdNVGt0TURVdE1EVlVNRGs2TXpNNk5EY3JNRGc2TURBaUlIaHRjRHBOWlhSaFpHRjBZVVJoZEdVOUlqSXdNVGt0TURVdE1EVlVNRGs2TXpNNk5EY3JNRGc2TURBaUlHUmpPbVp2Y20xaGREMGlhVzFoWjJVdmNHNW5JaUJ3YUc5MGIzTm9iM0E2UTI5c2IzSk5iMlJsUFNJeklpQndhRzkwYjNOb2IzQTZTVU5EVUhKdlptbHNaVDBpYzFKSFFpQkpSVU0yTVRrMk5pMHlMakVpSUhodGNFMU5Pa2x1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2TWpFNE5XWXlZbVl0T0RWbU9TMWpaalEzTFdGaU9EY3RPVEZqTTJJelpqQmlOemhsSWlCNGJYQk5UVHBFYjJOMWJXVnVkRWxFUFNKaFpHOWlaVHBrYjJOcFpEcHdhRzkwYjNOb2IzQTZaV014WlRnM01qRXROek0zWVMwd05UUmxMV0V6WVRrdE5URmtNVE16TkRabFpUSTVJaUI0YlhCTlRUcFBjbWxuYVc1aGJFUnZZM1Z0Wlc1MFNVUTlJbmh0Y0M1a2FXUTZNakU0TldZeVltWXRPRFZtT1MxalpqUTNMV0ZpT0RjdE9URmpNMkl6WmpCaU56aGxJajRnUEhodGNFMU5Pa2hwYzNSdmNuaytJRHh5WkdZNlUyVnhQaUE4Y21SbU9teHBJSE4wUlhaME9tRmpkR2x2YmowaVkzSmxZWFJsWkNJZ2MzUkZkblE2YVc1emRHRnVZMlZKUkQwaWVHMXdMbWxwWkRveU1UZzFaakppWmkwNE5XWTVMV05tTkRjdFlXSTROeTA1TVdNellqTm1NR0kzT0dVaUlITjBSWFowT25kb1pXNDlJakl3TVRndE1EVXRNak5VTVRRNk5EQTZOVFVyTURnNk1EQWlJSE4wUlhaME9uTnZablIzWVhKbFFXZGxiblE5SWtGa2IySmxJRkJvYjNSdmMyaHZjQ0JEUXlBb1YybHVaRzkzY3lraUx6NGdQQzl5WkdZNlUyVnhQaUE4TDNodGNFMU5Pa2hwYzNSdmNuaytJRHd2Y21SbU9rUmxjMk55YVhCMGFXOXVQaUE4TDNKa1pqcFNSRVkrSUR3dmVEcDRiWEJ0WlhSaFBpQThQM2h3WVdOclpYUWdaVzVrUFNKeUlqOCsvMFZ4UlFBQUdmVkpSRUZVYUFYVndYZmNuM1Y5Ny9IWDUvdjlYdGR2M0RzN0pKQUlBVUxZQlptQ2ltRFZEbGZ0dzIzSHFZdXFQVjBXdGRiV1I2M25WRzJybnJhT3RzaERyUlVmUFIzV1dTM0tWaEFaWVFvRVFrTFduZHp6TjY3cituN2U1MDRpS05XTzg1OCtuMm51aXNTL0ozRzhZWmVaMlpURUltRDg1K1JPTzBaU1VmaUhKUDZGSHlJRVdCakF3ek53Nm9iSTNDeWtDR2FHSk55aExNV3dnbnJvcE5KSUNCTlVjb29pME84Yit4ZkY2UExBcUlNY0dvZDJXK3pZRDlGZzQ5ckFnYjFpMFRKVEhXR0N1bzZVaGVFSmRpOW1WclNOOGNLWXE0MmQrOFNLQ1NPMmdBd2RJQlFRVFB4N1psRFZka2tXYnpUWmNLVEkzZGh2dnJHbHVlTTlkOFVUWDBScitqbW95WUNRT01Tc0JMcEFBakxRUnhwZ3hvK1JBbWxyNG9jSVpoZUdrRjVsQnBMNHJ3aElDWExEZkgrZ0R4ZUZrSGdDQ2VTd2Y3OGhFei9Lak1QRUQ1SWdSWHVSdWYyMHBZQlpRNzJmN1N0R0gzWW1UdnhGTWhjZ0F3bGlBUkxnR1d3R05BZldRcXdtaHNoQmNuNHNHT0ErbDhxQ3h4bVFCVTNEU1pJajhWOFRZRkMwallVRmJlMzFkUDJ5NVpBelR4QVM1TVpBZ1BHanpRQkIxWUR4QTlaWjBLa21jRUhJbWM5M0x2aTNIZkhJa3FaZWpUSWdNRUFPN2w4bnhrOGgzWUxuM1lRMGp1c00xTHlPRU01RTRzZUNnT3ovbFBZY0VJOXhRVHR4eEhnM251a1lJTDVyRWRnT0NDajRmZ1lTc1I1cVJhZWpxMEppdXFwNGdoUU5MdzFWNHNlRkFLOUZNcjVIUUxUalFneWJNY2lOZzdIbjFwV1hmT09oNnNTTDhQa2pNUWRMWUdHYXdkN2ZKWFl2UjBXZkVNQUMxQldFNGxaNkMvOU1tZjZPY3VUcFNJRDRrV1VHMG03RXZlbTJiYzVqaG8xWU94bVBPbk1UcDJhSjdJQ0JpWThKL1Q3UUFrWUFjWkFBUThFb2MwTzJ5TGJSVVVNQ001Q01kaHYyelRsa0kvSmpSR0FSUWhISWpYaU1HY2RLR25lTTBqS0lPeDZwVisvTFp1Y2o3eEFNU1B2bzZ4VjQ5UVhTT016Tnc4Z0VkRm93TXdNalk1RFNYcHJtclJUNkI0eFZpQjlkRWt0dUpOcU90SGMrOEpqK0VEcGQyeFRhakdnQUdlTWdkLzluWUU4STRJSVFRQ3dKZ0lNTFhCQU5tZ3lTa1IySzROejlJRHc2THpZZkxRcmp4NFlaTkRYMGVrNTNMQ0J4U0FwMmpwbGhnaFkxc3paeDAxWE5CWE1FdGhBcVFCVzk1aDAwNlF2RUVhaEp0TXVYVU1RWDBGUlgwMnA5aENMTm93Q2Vyc2Y4UHJCVi9LZkVZY1ovbnpqTStBSHVFQUwvSVRsZ1lNWmhCcTZiRVF2cFNVZEdIbFBWeEJWamRvNnk0UklnRU5zRU82SkJscEVDVkxVVGdoRkxRVFljSXlNS1FaTWhHMVFORktYNDVqMWlZdEpvSlVPVitDRU1HQUVDTUErSS93OENYR0NBTzFqa3Y4MVlJc2dPRW9lSXd5eEFYWW01L2M2cWxZWm5hREpINWN6SmhJQk1tT0FoMy9qbGdYVldRejZSWURBWVhzdEMvUmQwbGtNNUF2STNVSFRmUndCcWZ4NGpvMXVCTDJJUjZnRFpHMElBQk80UUkyRGdEaVlPc1FSeWtJTVpQMGpnR1VMaWNSWUFnUXZNT0VRQ015aGE0Qm5rUElFRUZxQm9RYTdBSFVJRUJEbmZpY2pwcEVseGlJREltczZZblprYmFESllNRHo3M2NnZm1Xa0NSWUxKQ1AwK1dBQUtIbWVBWkVnUUFnVGprTkUycEFnU2h3aklBb3pqZ1o5Qk9rK3d6c0JjN0FPK2d2aWt4S1A4SndTNEdERzRLRVhPRXF6cXRQQUEzekhqQzRLdC9CY0V5NEp4OFdpYk0ySmtLb29hZUFENEN1TGJHQlFseEJFalprR2Y5WFZ0bTRoZ0NJelp2K1hGRHowWU5wNk5MYXhFRG1YbnMweVpFeW9vMHhuSS9vaWNvYWtoUk1CZWczd1RVa24yMVJnbkU4UWhyUTRvZzJjSGJRZjI0cXdpMkhxU0JScUJBRE1lNXc2cGdNNFlESHFRR3pDRGtDQVZNT3lCSEN3QUFnR3hBRGw0Qm9zY1pxQU1DR0lMd2poVVBhRnN3QTZDN21GSm1ubFVIT1FaV2wxV2o0eXlSVUVna0J0bHlUMnRxQU43NTRXNXNXUkNjS3JnRExEamdPVUdDb0dkR0xjQy95cDRoQjlHRU9DWXFYWjRiVzdzUmRGMEZHYUdJQU1wUXNDZVpZRmZNN04zQ1A3YVFId2ZBVG1yUlBaTHJjaXZZR3lXV1ZlQ3RaTWdsNXJLM3BTaVBvYnpoOENBN3lNZ2kxR1pYZXB1cjR6R3BnMnJZbG5YQWplVWhEc1BXZVRQTGZMSDFVRGFmbSttTG95UnR2M0VaTmNtcXl4YU5DQnV2VDZldXdQeE10UnY0K3JSRzl4SU11ZzBNTlFCTE54UGEyUUx1WUZxQU1UbkE4L25vQ0lBeGlFaGd1Y0RMUFkrVGpQNEV1Tmo5K0RXSjRSQU5YTTZkTi9DeUxLeldKd0ZieUJFUUJCTFVJREZtUWR4WFVjcTdzVENnR0gvS1Bweno2QXplaElHTkEya05uamV3ZmJiUHNyWTZ2dG9UejRmYTE2SUJjZ1pXaU9RNjBmWWZ2K0htRmh4QjkzUm44UHp5M0RkanJHZEphbTdNWENRQkVYa0REUEdjZ1VXd1hBR2ZWMWZXMEJ1YXkzeTg3Zzl2OTIyRXcxYklUY3dnU0FGUThKajRINlpYVkZMSHdCbStTNEhBcng0OVRKN1I5a0t4dzhXd1FLUGs2QnNRUUdXemRZWG8vR2pkWk9qTWg4MkRwTWdKanRwOVVUODM5MWtGK2VHb2tqQ0piSU1seEJZcm5Wa3UydHZNdzlIbXZKckJRT1dPRkFFVGxuVkRoOXNXYmlnY2NOTTFCbkVraUFra0xFaEJIdDNHV3dWbWQrOGQ1dnp4ZS9FOU15ejdjeUx6NGZxRVNpVjJWbHMrUHllWW0yUFBrL0ZNc2dIRFBveldJQ3FnbTduQVR5L2dOazlyNkVvbjBkNzlFazBGWWNJQ0FIRUVvRVB2OHFqRDd5VFZjZGR3OFI0UXpXQUxCQmcrV0ZtRnIvS2JITUZVK1h6Q0FteWd3VW8weDcyUGZTWFBIRG4zN0xsS1E5aDFpZEV3R0ZtMXlvNng3eVZzdnRHNmhrd29EUDZOaFptTG1mWnhoWXBYWXpYSUFHQ2FDQzlpMTc5RnpUWFFUcmhRc3BONEl2ZkF1WlprcnBkY1pDZ0UyVm5lelpjSW1LME9ueDFkdGIrTGplNmVOVUsrMkRDanE5ZGhCQzA1QURTaUFYS1ZqU2FSalFpeEdESGdyM1Q0Rm5BcjBwODJ3V2R5RnRiSStHM1RUYmV1QkFRZ0JBTjVQTWpMVDUzeDRPNmV0c0MrODQvd2RaT1lpOXRpTzh5eTdjaTNjaEI0dHhXeXo0UzRjUWlRT2c2dlI1N1RGeVZnanlZWFNSWTFRQU9kR0o4cWFSckpQdG9VM1BRdVNuWUZhUFJObVdEakREWVdkVit2Um5aNEd3ejIyQkFOWlNWbmZpcW80N2xzNVBPVmZQTGJPMktVZHRNWDJBR0JRdzZFOWMwZCsxZHhkcmpOdEZPb0RoQ1ovOTU3SGhnSzBlZkM2RUc1eDRHaTc5T1NoOGdwS2NSL2Rjb3U2ZlFuNGZza0NKUS96M1ViMkJxelU2YVBvd3NPNWJoNEFKY3UvRG1xN1FuQnZTWlovdld0ek4yN0dsMEp6Y3lXQVRaOVZSemI2YmR2b2JONTRxaUJXcWdHb0lpdEVmM3NPZkFteGkzU0xkOUtWVi9GNjN1VnpqNkxJakZPbFJkZ0FVUUVBTU1xM3ZKZGhWcjFrSnVMY01tbjRvcW9MNFpQSU9SR0hDSUdWTkVUaEpnQnRuOXk4TUJyeDhkczdjRmhYZDJvaGcyZm1QTytuU1EzUXkyRDlOa1U5a3BpNDIvb0d5Rmk4cElrQXR2eE1TWW5SK0srQWtMell0RzIzWkJ1d3h2eXoyMTYwYVlRWkZBVVBWNy9xbWlzRDluVkxmMSt2U25lNDRzUU5ZVmplenRwZkhVUm40VHNNNHN2TS9FaVNIQlRGLzloVVg3MDdLdGo0NjAySVhJTjl6VmJKNGFpKy9mY25TNHNCcUl4bFcwWTN6ZHZnVSt1bTNhanpqdEtQNE1iRk10a0duT3M3ODNoUERKRU94UlNSZ2NpWGdieGtzRmxxS3RhS2Y0d3Y1UVY1MTZySjYweWptaDJtOVlFSlRzZm85ZS84aDlCemFld1JIelU0UUNGRnFFOEFhOHVvbWl1SVdtRDU2aExNRGlnN1JISHVTV2E3L0VzUDlSVG5uNnM0Z0dpL1cxeU41SUhPeWtNN0dNaFlVM3M3ajRVc1JxaWxBZ1BrNk92MDY3M3N0UjYyOG5oeHZJMmtoMy9DYm1GMStMdUkzeE5lRGg2VlQ5VnlHT1JQbG1HdjlUSmxidHhJRDU0Vi9TYWo4WGZDZHpleGV4TnRUVldVVGZnQm1ZUVREb0RYZlEwelltV3BBMm5vUDdDZmhnSHlIZmpvbURrampNeFBwQU9BNER6OXdnOFg3VityMlJUbno1WXEwSGRzL2xQeHdwN1RQQm1PTzdna0hsWEh2M3cvNnhpU24vK1ZNMnBiZFhzL1lrajJJNEVLRUtXNTU2VXZIbG1KaW9lbW9yYzBnclFRT1BIaGo2VzJuc2I4cUN4OFVJTVJpNDl0ZFpmMUFVWERCV3BvbUZTcjlsRnM0SkNBdk03WnIxUy92emZIekRlc01NRURSdXQ4NzNtcmNvcC9jRVdCOER6WFJQOTMvcU9pL09Qem45YW12VW5yd3dDNWdlOHRwZkJYeU5KN29iOUR1WW5XallhWjdGWXJaTk1jTksySktDalZkbWRCbkFnQnNmMGhIYjJMTHVkYVFESTFRVnlLQ3o2bVNPbWZvazduK00vRXQ0L1FpdFVlaU9nemNnN1dEWSt6MXlQb21pWEU5amY0aHBCNmIxcEhnNTR5dWZ3WEFBWmhBTlhDK25hbTRsOEI2NjQ5QktCOGdMTU5kN0o1VnVvNHFSRWJ1TXdjSnZZMkVNaTFDTVhvU3FEdGhseEFBZHpkSTBleWs3MzJJNG5PT3V1Mkg5NnROWnRUd3hyQ0FZeEFRTCsyL0NyTS9vYXVoVlQ2WlZkSmh1cnFldEEzUWlPS1FVamU4NnhZd3B3VTdIcjIwbmUwdjJkRzQvNit2dS9pcGdHOTlsZ0ZoaUhOSTR2VWE2SFBkdjdodndpYkZPT0RVQnVSSGpJeHlSSGVvR2drRU1zR3RHMzg3QjMxaDI3R29KRU9EUWJVTzNNdTdkbmxuWkVXWEJWTHNkTzVZNVhoNWVvQ2lLQ0ROeitVUFQrL3pqclpTUXdJQTZ3OXBKWnpEMGF3ZnorZWVTYVN3bWNwWFpOVFZxcDY5WlliOGlCOCtPUjk2ZFV2eGFNRVlsR1dCTFdKS0JBM0o5MjR6VFdPS29YRFNuSzl1WUpBUUVnd1BONk5XN2UydWd6ZG1RUVN3UjRORHViTWI5cjhqRlZxSStBZllab3QrSCtuRDBhU3o1QnNxMzBCdnNndkFObWozZ2ZoUmgrVFNodVJKNUJZaUdBaGdoNkI2S0JBYXNXSDQ2WDcveWMxanJLK3g3QURZKzgrWEUrQWNJd3dSaVNZWjIrVXRJWjFBM014UmhBbWt6bG42ZmJkc2FSSWVpT0pXRERKQkR3NEQyMkxjWTltQjJEa0o2TXJSZ3FuTXpUWDJBYkJ5VWtGalN3dXgwQ1F5ZmptN1BEZU5oMDZEVUYxcDl2WnpHcHVXQVFBWVpNTUFNM0NFQTNUWlFzSFd1MXMvVU1mL1ZVZDF3U2IrR1FRMEdtRUdJUUFwZmYzUi9mdTNLRmR6bEFqTlFnR1lJSjIyQVpwdjQwT2Zod2pNRHp6M2RMdDI1eCtSbzQrcmx0aXdQSVhTNHAxM3lKMVB6UnJzRnFRVjFBd1owUzJNNEJFazdESkZsckJpTnhZdlA1NFZrVml6T2laQnNFZW1uZ0xNRTQ0RDRuaG9vRE03aUlBT0R4V2dVMFRoSkF0d2d3WmZqSlhkc0RTZTJDUGtJVkFNQk1CRFFERGtrZFU3RXV1K2lIcndhZUFtVG96Zmd3R0lGcUlmNEJLVlAweDlDNWpxOHVZNVE4RDNHSWNwUWxOQ2RXTW5ldmN2NDlyYyt5ckxPSWl2WHJtQ3l1SXpLRFJOZ1BLN0pYZUJjek1BZHNQc3h1NDJOUjRINzhaVGhGT29LTUVEZzdHQjBmQ3NSMkx2L0JJNVl0eGtMOEowYnI2TzNQeE1MRGtwa0RwcWswT2tnWXJDanJXTWo5KzNSVGRNTGV2VTRUSzhlZzdJRmJwQU5oQWhCV0FObWNNUnlZNlNBL29MWXZNeTMxemxlMld1NGhDWEdZV1pRTmY3My9ZcEx5NVoybFFGS2pOQUNCZWhWMENtRUFBZGl5WG5kYm5ycDF1bm1qOHBSemw3ZnNuYmR3TTU1djNyZGx2RG95UnNNR2pIWUFUUFQwRXF3Y3NLd0VGRXczQ0NIUUlUVjBleWlXdUFHRVViS0VIN2FBUW5NREFRT0dHQXNDWVlBQTVSOWF5Zlk2UWw3dW1TVTdScm1lSEI3L2FUYkIxUGQ1NUI3RzNETFlMczVyQTAyQVVUVWdBdFNzWkhzTDJiUGdSdG9IQ3h2QUZ0RHNLMFlNSGxjQzA4cnlMMkU2aHFMNHFBUXVyZ21pVVhCc1A4d3ZkWXJxUGJNc243bDFaejZIRmkyNWtKeTNzaGdIa0xnQ1F3UUlDQVZzREI3TGIzZWJsYXRoUkJQWVhiZkNnNnlDRlpBLzVFN0dlNituZEZUWU0yRzB4bHJIME52NWdCWC9lTzlQSHczZEVZNUtDbHcwTEdCY0NvWW9KRk9TK3pjbVQrOVk1ZTJyMTVoZER2RzJuRmpVSUVCQnBoZ1VJdDJhUnk1eXJoOXU1anRpUlBXOFJ5djdIZmRqSUI0VEREREczdjR6bDNEZld1bmpORldvaDJNSmtMdEVJRUE5SVl3VmpLKzZhajRmK2dxbkxaSk4yWEYxd3ptaFJWVURObmFUQU1tNmdYUnpCbXQwcEE3VlEycmxoYzBibVFYTVFuUHJPa05PYzZDaUlZSFdCQ3FCTWtNWTRtRXhZQWxvMTlsOVRtczdXYlQ5ZEEvVnJUdDlCaXRXMVhRc1F5SjY2NVpQSFVIenM5aWd4THhCb3lyZ1FJNEh2UUJ6S1p3UVZtQTVEeTg2eVlxd2ZJV2RPSUZNSElDc2QwRFFUVlloelZYZ0UxQm1BVnp6RWFBSTRFYVl6L1lES2s2RnpwWGNNSFBQa3puS0NDdHA5b2ZlWnlBd0NGeWlBa0NtZXlSMUxxZFhQV1kyUU5tSjVES2hEdFlnUGJZa01YWi80dEZpQ3VBQXo5Qk00UisvMFkybjdPTGRjZEJLamtveVFCak05QTFSQmJVaXl5dW43QzdqbDRMVDFwanpDN0FZQWhtUEVFd2tLQnFJRHNFQzc4STlxYzFqRWVFK0I1MzBXbUZYMTQybXU2cWMvNndBeGx3QVFZSXFneGpIVmE4OHFKd3hVbXJ3bW1QUGx5L2Vxb2REeVN6NVhValltM0ZpcmFXeis0V1FTS1pFVnFnaXNNRVRhT09qR3lvYUhmRmNORkdsQmtMTERFTGcreC9IY3cvVWdRN0tyc2lRZzRxWkhtMjBlNlcyWnh4U0xkcHZKMmQrd3JzOVRsRExBMEdrVVUxZHpRVHU2RGlHSkxOWTN3V3RBME1wUHVCUzhIT0JZRUU4NHQvUXRINk9LdVhRZjlSOFBaVGFZK3NZdmIrQllZek1QS2tmUlRsUG1JOEh4ek1RQWIxNE1zRXU1SlEzSUw3eTRpRDgwaGpzN2hWVE84QjkxdG90MnBTVE1oQUJqU1EvWE1VNVZmQmQ3TTQyRUlJbDdGbTVSeWpKWHppejZDdXR2UGNOMlI2L1VUVGg4WDlINmZWK1J1cUdhQS9UcTUrZ2w0RnFmVU5Mdno1L2FRQ0pBNUtKbG9XN0dRelF4SW1ZK2o2MW9ZanVOYk4yRGNMR0ppQmVKd0JKVEIwUVFyVzNiREMvcUFzd3B1R3RTWE1PY2pFZmhrZG9DUEFYV1BITEV2dm5lOWpjajVpQWVlN2hLaHFlOGJ4YThMN1d1dmlLZmZkblIvKzVqMzYwbk9lVHBoTWlneEFZSlY0YW94V0ZvVEtsVUVHQm5JSTBYN1pqSmNIVkFtYjJEL2pmemJSc3U4b1dkK3p1c2tnaS9ZZys1MmpJZDZKR1dZUWdleUJQWlhPM2RBTkZ3ZlJkVEVtK1R0YXBSOFJ6SjZSM2VoMHdmWTNmR2JmZWJkZGMrekxWbEZySTRPcURXcUR3QUtnQThCYndmOG5LUVZDNjFOVU01OWgxU1MwT3RBZnZaaWk5UUpNc0xodEdja2dObk5RL2pMS2QwQThoNUFYcVB0L0Q5MVBFRk9tR1hZSmNSbGlpVGFqWmdyM2FiSmRoL1JPeEcraFBFV0ljeWk4SDVwM0kxK2ticUEvL0IzV3JvVTdiempBby9mRDFCR3c3YlpQTTZ5T3BDak9vYW4rbGY3c0IybFBRUVI2dTA5Z1pPUmtIREQ3SnRVUXFpR1BTUmFZREdaUEZvY1p3a3lyK3hXL0dRd3JqRUk4cmhXTVpZS1Z3T2RkZk1oZDU4VEMzcmxxTXB4ZnUyZ2FVUVNqY3QwV3NGY1gwaXVhYUpmS1JSYTBJcU5sTjM1ZzZQNnpMbjBPN0NHRG84R2VFWU05blJERzZMblB6dWMzYlp6aW9lWkFYcWJ4c0sxVmhPWERTcGpaQmFYQ1I4ejBCb2M1bHJpelBKcTl2U3p0MGlvVE95MWpVR24yMFdtL3U3M0J0cmZhM0QrWXRaT3pZRFRaYTNwVm1CczI5cnV0a3NyTWtCaFBRYis0dmgxK1R6QmxCbG02eTR5M0oyT0YwQmFMUnIyWVNTVjNQYmpxS1YrYm1WdjNVOFRla1pnRDhkbTQzMDNPRUFPWS9SdVI2Mm0xQ3RBODFYNElVOUJVbXlsYjc4ZktaZVErTEgveVpSVERXNm1iL2VEVGlMZVQycU1NRm9iTTd4NnkraFRJZmpUVy96Z3huWXNERmk2aUdaNkM2ZDlvcFl6eHh6UzZpbVp3QkdPajkxT0gyL0RnWklkVytmc1U2ZTIwT3JEbm9ST3BkU1duUGczV2JOcEh0cmV4c0RCQ3F6WEh5Q1EwRGlIQi9QUkd4aVpYWVBWZWN2TVFNcjVmR2huVitvVjVPeTFFRG5GQTJIR2x3bHVpQWNaaHhpRXU3VFhaZlVMSGhFS1hFM2hhNWF5aWhtaEdBOVJaLytUR2I3am43OGo5RVN4ZUhDd2NEMktZUlRBcmtvWG51UGpKQUgyRHRvS2xnaVV5V1BSTEp6djZoMWdFRnFmWi84aDIvYzBKeDNOcVVaSnlBMlo2aGRBV0kveXJSTGRUOEV6SE5zdWcwektpYVdlS2VnbkdMUU1wRE9hNWNpVFl5YlVMaTJiZE12NUduWFdoWVZlRHVtWjJ0c3hPRzQxSzJhR1czU0RwSlJZMElOaDVZQWdEQndMM3JJcjdGcWs0RFV0Z0JqRyttZXgzSW4wUk04aUNmak5nY0dEQTdDT1FhNUM5aUZpOEQxdFlqOWNnUVdmaUV1cnA5K0xWSDVIQ3ZaZzUrQno5UGl6MGw3R09YNEQ4RmhwYmpzUWhSaUlXNzZZWi9nSXAzb1hVWU0zMXBCTG01MkZRUVh0cVBhM3d2NUMvRkRPWW1ZYlRudjNieFBZT2Vnc2ZZZDJ4TUt3eWcycWVsajJiT2grTDZ5OW90MFJhZlJHNUJ1VnY0SG9ZeFBkTHV3OXczbmhiSFhjd1FJSWlRcEZnV0FsM3NNQVE4WWpnOWliN3JrUVlpWVU5SDdOMUxoRUVqWERROVl0RGYzODBQdE5xQmM5QUkrMEkyWDhwcFhDNXNHTWRJUWx4U0JTTUdsQ1lNV2cwYmRhOHZvVSs3ZG53REowSWV3N29ZMnNhZjlycWtmaHp2VmtubTh6Z3pHRGhUQUVSRVlOUlpkRWZhdXRZbDFlbnhIV0d5QWZjTGR0Znh6RjdWdG0yOC9wOXNTU21aT2U0Y3c0WUJ6bEdQd3QzLzVjUXdwc3d0ZzFySm1JUm5obUNnYUFUS21ZMGRkdm45VHdvT1F2bU9VUmFUUXlYSS84WThGVmNEekIwR002dll6ZzRoYlhIUDVNbVA1TzhXQklUaDVoQk5ROTBmb0d5ZlNHZXZ3aTJDMjlFZC94SXl2WUZEQmVQQmtwQ0FuR1laN0I0Rm1YN004RGxvT3N3N1NhbWtybitNWGo5RkxycGVlREgwVGlZZ1dkb2pYYW82L2NTZURiRDNxMWtiMmlYeCtQMlhGS01pSjhtMkRpeFBBMDE0TnhNdGxtTUowamI5dG5aWnh4bkRPZmtCQlFDdzJHamhjVkswMld5bmdWbHllWXhUSEJjQ3VFQ0M0eldXVm5pM21TNnJ3amNPWmU1dnNxNk9zcjJTZUl4QnBpNGJ1RDV4UUc3TEptOTBNRlNNQ1J3aVNMU202bjFqd3VWM3J1eXhjMHNrVVJyTXREcEdpZE1zWkNDL2FxeXp3cTlNa1VyekkxR0FveGEwRTdhNDVXdTdBLzFKMlBkY0Q4Q0JLcEV1OVNPbk1QTDk4M3o1eE50UFNzUkdHWW9Ba2pnRWdtL1o5OVFIeTRqbDNlRDdSOVVqbUFDT0JXSlE4VGlQbHYrMmZ0MTNCYkU2WVFhQ0RYdWh0a2FpdUxOb05lUXduNUdDcU5ZUHNteUk4YUlSYUx1UTY0YlFpRVFoeGxnRWV4b1RLL2pvSnloMVlHUlNSak1DMUVUQWsra1FFeGJVSDRYaEJrSXM3aEtwcFl2dzJ3RXIxbmltRFdBRVNJTWVtQTJTb3pQUi81OFlvUUV1QUNEWUpjZ0IzT1dPSEFkUWZ4N2FmUHE4TUZxVVovRWFFQUt3Ulo3ZmVZWEt5MGV1ZEt5R3BzYVZrekdTTnRnQk9USXBwdEdNMkFMS1hFQW1IZlJ1S0JnaWZGRUJsbjZsc1Ava091S1lQYVVvZXVvRUd3WXBIdnF4cjllSzl6a01EUytUelNzTURvSkF1ejJyRGNPaC9udktzVm5XTkR4TFFpWXB0MTFpekpmazdUVnpES1BNU0FBQmlIdzRONDV2ZVRoUGY2VFc5YnlsTEpndzZEQ3pOaVpUTmVZK0hxV0hoTEc5RUpOM1lpVTdNQklhYThSZ1NBbEVvdGZxSjkxODEzOTQxZlE3YitTUU1aVkFZWmttTFdSdWhodHlnUWgxQmlMVklzRGpFeElnUE5FRFFnREVwQUlCcmx1eUUyRG1UQ1dpQitnSmdBZGpCSE1FcEtJY1FqMGFPb2haZzRZanpHV3lKQWlVQ0FIVVFNTkIwa1JjRVFiYkJhNGlSL2kvd0gzRDVQTXBkMnQ1UUFBQUFCSlJVNUVya0pnZ2c9PSIsInN1cHBvcnRlZEV4dGVuc2lvbnMiOlt7ImlkIjoiaG1hYy1zZWNyZXQiLCJmYWlsX2lmX3Vua25vd24iOmZhbHNlfV0sImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIkZJRE9fMl8wIl0sImFhZ3VpZCI6ImNkYmRhZWEyLWM0MTUtNTA3My01MGY3LWMwNGU5Njg2NDBiNiJ9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAxOS0wOS0wMyIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiRXhjZWxzZWN1IGVTZWN1IEZJRE8yIFNlY3VyaXR5IEtleSIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMTkwMzI3MDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjMuNiIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4xLjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMTktMDktMDMifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDE5LTA5LTAzIn0seyJhYWd1aWQiOiIzYWE3OGViMS1kZGQ4LTQ2YTgtYTgyMS04ZjhlYzU3YTdiZDUiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjNhYTc4ZWIxLWRkZDgtNDZhOC1hODIxLThmOGVjNTdhN2JkNSIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IDUgQ0NOIFNlcmllcyB3aXRoIE5GQyJ9LCJkZXNjcmlwdGlvbiI6Ill1YmlLZXkgNSBDQ04gU2VyaWVzIHdpdGggTkZDIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NiwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9LHsibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJlZDI1NTE5X2VkZHNhX3NoYTUxMl9yYXciLCJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyIsInNlY3AzODRyMV9lY2RzYV9zaGEzODRfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlEUGpDQ0FpYWdBd0lCQWdJVVh6ZWlFREpFT1R0MTRGNW4wbzZaZi9iQndpVXdEUVlKS29aSWh2Y05BUUVOQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU1aNi9UeE04cklUK0Vhb1B2Rzgxb250TU9vLzJtUTJSQndKSFMwUVpjeFZhTlh2bDEyTFVoQlo1TG1pQlNjSVpkMVJueDFvZDU4NWgrL2RoSzdoRW03SkFBTGtLS3RzMWZPNTNLR05MWnVqejVoM3dHbmNyNGh5S0YwRzc0Yi9VM0s5aEU1bUdORDZ6cVljaENSQUhmcllNWVJERjRZTDBYNEQ1bkdkeHZwcEF5Nm5rRW10V21NbndPM2kwVEF1Y3NyYkU0ODVIdkdNNHIwVnBnVmRKcHZnUWppVEpDVElxK0QzNWh3dFQ4UURJdituR3ZwY3lpNXdjSWZDa3p5Q2ltSnVraFl5NktvcU5NS1FFZHBOaVNPdld5RE1UTXQxYndDdkV6cHc5MXUrbXNVdDRyajBlZm5POXMwWk93ZHdNUkRuSDR4Z1VsNVpMd3JyUGtmQzEvMENBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUI4R0ExVWRJd1FZTUJhQUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUU13RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCRFFVQUE0SUJBUUMzSVcvc2dCOXBaOGFwSk5qeHVHb1grRmtJTGtzMHdNTnJkWEwvY29VdnNyaHpzdmw2bWVQTXJiR0pCeUoxWG5xdUI1c2djUkVORnhkUUZtYTNtaW84VXBmMW93TTFacmVYckowbUFERzJCcGxxYkpueGl5WWErUjExcmVJRlRXZUloTU5jWktzRFpyRkF5UHVGakNXU1F2Sm1OV2U5bUZSWUZnTmhYSktrWEliNUgxWGdFRGx3aWVkWVJNN1ZvbEJObGxkNnBSRktsWDh1c3Q2T1RNT2VBRGwyeE5GMG0xTFRoU2RldVh2RHlDMWc5K0lMZnozUzZPSVlnYzNpcm9SY0ZEMzU0ZzdyS2Z1NjdxRkF3OWdDNHlpMHhCVFByWTk1cmg0L0hxYVVZQ0EvTDhsZFJrNkg3WGszNUQrV1ZwbXEyU2gveFQ1SGlGdWhmNHdKYjBiSyIsIk1JSURTRENDQWpDZ0F3SUJBZ0lVVWNtTVh6UklGT2dHVEswVGIzZ0V1Wllaa0JJd0RRWUpLb1pJaHZjTkFRRUxCUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JCSURFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURtNTU1YldZOVdXK3RPWTBySVdIbGRoK2FOYW5vQ1pDRmg3R2szWVpyUW1QVXcwaGtTRzZxWUhRdFArZlp5UzMzVkVydmcrQlFxbm11bWdOaGZ4RnJrd0VaRUxlaWRCY0M4QzRBZzRucXFpUFdwenN2STE3TmN4WWxJbkxOTEZjWlkvK2dPaU42Wk9UaWhPNS92QlpNYmo5cmlhQWNxbGlZbU5HSlBnVGNNR2FFQXlNekVNTnkybm02RXArcGpQNWFGNmdpMjF0L1VRRnN1SjFqMlJqL3luTS9TZFJ0K2VjYWw1T1lvdHhIa0ZiTDl2dnYyQTJPdjVJVFpDbHc0Yk9TOW5weXBRaW1PWjVRQVl5dG1ZYVFwV2wvcE1ZejZ6U2o4UnFrVkRORUpHcU5mVEtBMml2TFl3WDZsU3R0TVBhcGcwSjg0bDlYMHZvVk4vRnBTNFZDVkFnTUJBQUdqWmpCa01CMEdBMVVkRGdRV0JCUWdLRkFoRzZSYVcraFR5NTJkeGVUOGJDOTZIekFmQmdOVkhTTUVHREFXZ0JUUzd1OWFJbzA2YlZ3amx6M3loZFVtOFNWN2tqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQTRHQTFVZER3RUIvd1FFQXdJQmhqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFZTXpnTHJKTElyME9vdlFuQVpyUklHdWFiaUhTVUtTbWJMUldwUmtXZUF0c0NoREVIcFhjSi9iZ0ROS1lXb0hxUTh4UlVqQjRDeWVwWWV2YzNZbHJHOG83ekh4cGZWY2FvTDVTZXVKa3pIeEtuNGJUYVNwOStNdndhbW5wNjRrWk1pTmJGTGtuZlA5a1lLb1JIa01XaGVSSjFVc1AxejRTY21rQ2VJTGZzTXM2dnFvdnFqV0NsRnNKcEJjc2x1WUhXRjdiQkoxbjRSd2crQVRFb3BZNElnR3Y2WnZ3YytBOXIrQVQyaHFwb1NrWW9BbCtBTll3Z3NsT2Y5c0plMFYrVEE5WVkvVWxhQm1QUFRkMC8vcjl3dmNlUFdaa1BqS29BQy96VU5oZkRiaDRMVjhHSHMzbHlYMlhvbUwvTE5jOEpZenlJYURFaEdRdmVvUGhoL3RyMWc9PSIsIk1JSURTakNDQWpLZ0F3SUJBZ0lVUjM4bXEyNlNmMnN6VlYyQmRHNldFTjdrdVdVd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVJZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU5ZMFdiOW9Qb1JvS29ReVdQYUpwejExdnJXVGc2elR0bU5qMlZvS1JueXZLR1JxcHpiODN3NWw2WUE5NlVZa1lCRFFQMGlsTzJEUGU2d1dxVlI1ekRmUnpkY0g4YmgrTDdkR0d2YWU2aFJUWmhrRmtDcFhEczRIY2NrbnJEZjhGQ2xKN0hlMzlKZjQyL0cxUW0yeno5V1dtclBYdGdpSy94MDVHanNRZkd1REcxemY1UVRVVWllOGx3eW1LM1RmZE92TmVlSkFBUGUycG43SXRmUmIrclZyTldpRHpsUm4ydk5uWjJ3UG80d0gvV0o2ZGhYWkcrck1XVCthNkJvY2cxVWZJdzZrZHVuRzRiVHBaenN2YWNGWXlSMG1wZitEZU9ucFNXQW15d0pXSHZUbGYyWVh4RnllWGNUQUNkUWxjTU5HSjJWaFpRNDh4dFA1L1JCUC84a0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ2h5NDJva2lxY1RTMWlxYS9IUldqa0JuNEgvTUI4R0ExVWRJd1FZTUJhQUZPcTNRcENlREh0a2V0dFVmQU82ZkU2ZjJLRmhNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUFuK1JISVBidE1FRE5kVDFnOEgvUml0QWtVZExnQXQxdFdHV25sajlrbmJ2NC80R2xYN0M5cDQ1ZWZQTzkvYVpMNk9WMVhSS0JpNkttdEJXNUs3bnVZRW5NeC81QnFCU2JMVDdyaGR1QzQ5VEJlTWI5UEhkWHNUbFNWTlllZnIxZEdpZHI0ajB4VkJRTGIxcmtuREFiZFdEektmdm5heUtPOEZyd2U3SHg4NDNNRy9ySitjMFhydVV2YmZWVENITGlJV2hNN29ORGhMOHhvYjZ4VW85S0xLY1NMK0l0WXNPMy85V2I4UTlHanNxTDRGWHNEY0cxU2FZaDdLcGZ1TW1PaXhxekpaTzJuSWljUFlSZzFJMlN1aVVmWU83MHRtZEhjYmwra1NRbVNZdDdycTR2aUlMZzJHeDNqOXJJVHVXVGpiYVVhU1NReGdPbU1TSHV5ek1BQyIsIk1JSURTRENDQWpDZ0F3SUJBZ0lVRHFFUncrNFJuR1NnZ3hnVWV3SkZFUERSWjNZd0RRWUpLb1pJaHZjTkFRRUxCUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURJN1huSCtadkR3TUNRVThNOFplVjVxc2N1Ymx2VllhYVJ0M1liYXhuOWdvZEx4NXN3SDBsWHJkZ2poNWg3RnBWZ0NnWVlYN0U0YmwxdmJ6VUxlbXJNV1Q4TjNXTUdVZThRQUpiQmVpb1Y3Vy9FK2hUWlAvMFNLSlZhM2V3S0JvNlVMZU1uZlFaRHJWT1JBazh3VExxMnY1TGxqNXZNajdKdE9vdEthOUo3bkhTOGtMbXpYWFNhajBTd0VQaDVPQVpVVE5WNHpzMWJ2b1RBUVFXckw0L0o5UXVLdDZXQ0ZFNW5VTmlSUWNFYlZGOG1scUsyYngyejZva1ZsdHlEVkxDeFlicFVURUx2WTF1c1IzRFRHUFVvSUNsT200Y3Jwd25EUkxWSHZqWWVQR0JCLy9wRXl6eEEvZ2NTY3hqd2FIMVpVdzliblNiSHl1cktxYlRhMUt2akFnTUJBQUdqWmpCa01CMEdBMVVkRGdRV0JCVHF0MEtRbmd4N1pIcmJWSHdEdW54T245aWhZVEFmQmdOVkhTTUVHREFXZ0JUUzd1OWFJbzA2YlZ3amx6M3loZFVtOFNWN2tqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQTRHQTFVZER3RUIvd1FFQXdJQmhqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFxUWFDV014VEdxVlZYN1NrN2trSm1VdWVUU1lLdVU2K0tCQlNnd0lSbmx3OUs3SGUxSXB4WjBoZHdwUE5pa0tqbWN5RmdGUHpoSW13SEpneHh1VDkwUHczdllPZGNKSk5rdERnMzVQWE9melNuMTVjRkF4MVJPMG1QVG1JYjhkWGlFV09wem9YdmR3WERNNDFaYUNEWU1UN3c0SVF0TXl2RTd4VUJacTJianRBbnEvTkRVQTdiZTRIOEgzaXBDKy8rTktsVXJjVWgrajQ4SzY3V0kwdTFtNkZlUXVlQkE3bjA2ajgyNXJxRHFzYUxzOVRiN0tBSEF3OFBtcldhTlBHMmtqS2VyeFBFZmVjaXZsRmF3cDJSV1p2eHJWdG4zVFYyU0J4eUNKQ2tYc05EMDVkQ0VyVkhTSklzK0JkdFRWTlk5QXd0eVBtbnliMHY0bVNUenZXZHc9PSIsIk1JSURTakNDQWpLZ0F3SUJBZ0lVVG5iYkdJUjJOSHZ6cUlLRkFlUXdHMVhCaXMwd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JCSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVFZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU9zWGozazA0QmFuNFRZZHRaS3FEL09QSnh5RHlhUG1DQlVGVWlhWklnVHRlWm5qM1gyNURoZ3BaWlhzQzREMHlkSWNybEE2d05VSW5PUkwvTDl6QmJURUlNQVZNR282ZzdVS0FtYjJNRjZBSGJuaFlKZDllaWt1cFZOV1NoSE5ZTmM0R0JkTzFZTjZBZlVxdkpoSGJlM1Y0U05NUG1CUkVLSlBWejdUaHdnbWdnVGU4V3MySzAvd3NxdjJ3U0U3cGJDQnNVWmhJWDUxYlpNM3BxRHdKUFRtUkZFdnQwLzZ0RzVlTzhGM2oxNE9YcWZFaG1qbjFWdnhLRFlRT0xaQXhDd3dnQzBQNENkZld2M3k4UFNSOEkzNTRoTzFZK0d6Tmp2SXFYMzhOS0x5d3VJWUhGZXJPeE5seEVNQnZGaFlCdVJ1WUFra2dVYVBxTjZVQmhzSUxyc0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ0NvUkhoaXlObmJuWFJXSUw2WkJYb0JYOVlUTUI4R0ExVWRJd1FZTUJhQUZDQW9VQ0VicEZwYjZGUExuWjNGNVB4c0wzb2ZNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUNRRmFmSkkxLzVXZzlDRUVpbUUxUlA1NFJnUXdUTlRPT1FzTEFDVGUrckl0bEZRekM5WkRoclY4Mjh5WDdqenkrQUFzcDNpeks3VDF0aDJkbDdtK3R1MHN3MlBhL29sYzAybnQ2UHlJdzM0OGdhSHpoSTErMEtFNDVxeHZGRGVMMmxNeGJQZkNZdnlFRWFZemppUUVMVTU5NTFwWEdXeUtNYS80Zkx0TytaS09YaE11VmVxNHJYRFBJNTRXNkpIT2lBYWlLZGl3KzVlM2Mya3QvakZJUXRNNnZNWGc5TE5GemRqRVROdDIwVlg5UWV2UnBGWmZ1Y01HOXdDYVFEb0ZsUHpwVE1KS2hQZXYvaW1KbVpZaEtmcjBsTGNlbXRxakl4TEFvcVpkT1lmSEJnNit2QWNkUEkvaWF1R3BVQXY3WCtVS05tRHdqWjJCYUg0c0x3aEIybSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFmQ0FZQUFBQ0dWcytNQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUhZWUFBQjJHQVYyaUU0RUFBQWJOU1VSQlZGaEhwVmQ3VE5WMUZELzNkNTl3ZVFTSWdTOUFRQVhjRkxBUVppOWZwZVZ6MXRZL1dUWnI1V3hwYzdXNWtuTGE1akkzWjg1c3JTMm5NMnNqdFd3WlM3SVVINEg0eENuRVF4NERBWkY3NFY3dXM4ODV2OS9sSW5CdlZKL0I0UHY5bnUvNW51LzVudk01NTZmekEvUXYwSGIvSXJYM1ZGS1BvNDVjbm00aW5VSVdZd0xGUm1aUVV1d2pGRy9OMWlSSGgxRVowTlJWUnVkcXQxQmQrMm5TS3lTL09oeXMwK2xrM2UvM2tROXF2RDRaVXRhNFZWU1V1WTBlaXB5aVRoQWZvY29PUlZnRHV1dzNxS1JpQWQzcmJjRXRqVGpZSW9mNldhSHNDbXpWUFdDTXgrY2doOHRMcVdNS2FNV3NVakxxbzJSdEpJUTBvT3ptZXJwUXU0ZXNaZ3NPTmtHeEg3ZDBrZHZUVDE3czRPTVU3Vkk4WmhqZ0dhTStBcTlpRU51OFBpZjF1ZHowN013dktXZjhHbFZvQ0VZMDRQQzVXZFRhWFlGYlI4dk52TDUrM0tnZmI1eE5NeWE5UmFtSml5bmFNbEdUVnRGbHI2YmE5dStwcW5FWDR1TXVSUmdqU1lFaHJON3V0RkZlNmxxYWw3TmZrdzVpbUFHSHluUHBiazhWbVkweHN0bnB0bEZDVkNZdHpUdUJOODNRcE1MalR0ZXZkUHpTVW5KN2U4bWtqeFozOWZYYktEZmxkWnFidlUrVFVnR25CVkY2ZlEyaVBIZzRXMTZVV1V3dnpiazE2c01aRStQbjBwdno3SlNldUF5ZXM4bGNwQ21hS3VvL3ArcVdyMlVjd0lBSFdydlAwWUV6aFhBdExBYnNzSGhwN2lHYW12eWlqUDhyeXFyWFVXWDlYb293eHlBdWZOQnJwNDNQT0JGWFpsa2Y4TURSaXFjcHlvd0F3cHV6MngrZld2ei9EdGRlOXNtc3p5Z3RjUjZDMXdiZHpCbDZPbHE1V05ZWTRvR2F0aEpNcmtURXgwakFSU0hBVnMrNXJZa1FOWGIrUWdmUExzUTZnWHlJbnNyZVFmbXBtN1JWRllmTDg2bjFmaVVPa1l2U2hrVVB4dmJ1a3pveTZLMWloTTFobzNYelc2RXZTZlhBK2RwaVdHYVdkK2RvWHpMem1Hd0tZRkxDQXNSQWxQQkFoTWxDRlhVN3RCVVZQcjhIZ1ZjSkhXcStGMDBwbHIrRE1UZHJQNHp2eFkxMWtOTWh4VCtTZVRHZytkNFY1TFFKaXR5VUdKTkI4VkZac2pnWUJaTS9JSS9YQ1RrajBxeURPcEYyQVZRMTdDSWpVcC9EblQxVWtMNUY1Z2RqK3NTMXdnMWdFM2dpZ202MGZDWHpTblBYYnlBUGJJWHYrSURwRTE2VGhhSElTOXNreWhsbU1FNUYzY2ZxQUtocTJDMEU1UEgxZ1lhWGFMUERrWkcwSERKT25LV0hwNTFJMHo1U091eDhlMVdBdVp6ZEhRclRrcDhUbWpYb0krbGEwd0dac3p1YnFiTzNpZlE2QS9XN3ZWU1lzVjNtUjBKS3drS2M0V0hpQmttUjhJM0NDZ0k4N29PTDRxelQ1UCtSVUpCZWpFT2dBUEs4aFlQemF0TStlSVRwMklPOXlUUW1lcm9tUFJ4eDFxeEFjc2lsZS91YlNlRWJjV1FHWUVDZ2hjTFkySHlLam9nakgyNWhNcGpwVXYxT3VnbGk0ZWgyZVJ3ME8zMmJKamt5dUNnTnpnMHZ6bFlNU2lTczB1b280TUc3aE1PakNFYVgxeUZFMG5TdmpCenVUbkVwSzg2WjhJb3FGQUl1Ync4a2c5QXJFYVJFV1NaSStqSDRYYnA2ZzlFOUVuSlQzb2FSekROK01VSkJRREhuNTZhOG9VbUVCdXNPeEJzL041K3RKRWJQa0FGRGo4VUd2T3MvSVd2Y1NnbEdCaHZTNy9GVFlmcFdHWWREWThmUEF4V1NBMzVzVEM0cDQrTG00QWFxSW9QZVF0ZnVmSzZKaDBaaHhsYnNVWE9TbVhOaWZENVpUQWt5RG9mYmJjY2x4bkE4V05BcXhDYlJOeWtoWHhRcGFEdzY3ZlhVWWJzaUcwS2h0djJvZUl2aDhyaFFNWU9jRUFxWEcvZUkrem5nT2M1eXhyOHE4MklBTTFjL0ZMRk9wbHF1NWVGUVhyTVp6R2NWQ2pZYkxXRzVJNEJUMWV1UnJsYnh0Tk90TWl0RERFaExYSUl5bkFBdnVPRVdFM1gzTmRBZnQ5NFZnYUc0MlhJUXQwWlg2UGVDRS9xUUZlOXJLNkh4N1lVNTBLdkg3Zlc0ZlMrcTdLS0JKeHNnZ0JYNXBTQUdoMWpJclZoNXpRNnczUmZhYWhCWG0vYUNiQ1pUakNVRlVUeVdacVc5cDYyTWpKUFhWcU9yUGdNTzROdjc0R2tmK293ZnROVkJEUW5qRkpxSFN3MTdwWHZoV1c1S1pxZS9RNDlOL1VTVENBVldvUVhGSUhCSFhYZTNGUHJVRHN1R0RtdEYvaEhLVEhwZWt4aGlBT1BJK1NKcTZTNkhGNEk5WVd6a0JKVG80NmlVTXpXcDhQaXIvUmlkdUx4S1lzU2tzVjh2TGxPUXZoR1gyWWxSME9CaEJqQyt1L2dFY3ZZMEFwSzdZazQxTnhqUFNRbldGSFRGNjZVcmpnZXZCOEN1NWErbDJ2WVNSUHR1VkRvNzNoaGRNU0huVVg3dFRqc1ZaR3hBbC9XcHRpT0lFUTFnbkwyOW1YNi90UjF0bWxrWWo4VzRYK0NTaldjVURHWTFOcFMvQzdoU0txaU1MTS9sMlFtU1daNzNEZHorZ2lvOEJDRU5ZUFE0NnFua3p3WFVicXZCa3hqVVFzV2ZaRmdidW8zckFmK3dON2pPTzkwK3lueDRQaTNMKzBuWUwxU2NoRFVnQVA0Z1BWLzdJZDFxKzFIU2htdUdrSXFXUlBneXhNRnFQOEhmalRualh3WTViUWZiSmN0Nk9JektnTUhvdEYvSGUxZWdzYXhIU3FHNndmZG1RNXg4TnlURkZxQmNwMmlTb3dIUjN5azUrMzZoRjd2WEFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xX1BSRSIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsImxhcmdlQmxvYktleSIsImNyZWRCbG9iIiwibWluUGluTGVuZ3RoIl0sImFhZ3VpZCI6IjNhYTc4ZWIxZGRkODQ2YThhODIxOGY4ZWM1N2E3YmQ1Iiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibGFyZ2VCbG9icyI6dHJ1ZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOnRydWUsImFsd2F5c1V2IjpmYWxzZX0sIm1heE1zZ1NpemUiOjE1MzYsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6OCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoxMjgsInRyYW5zcG9ydHMiOlsibmZjIiwidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN30seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTh9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi0zNX1dLCJtYXhTZXJpYWxpemVkTGFyZ2VCbG9iQXJyYXkiOjQwOTYsIm1pblBJTkxlbmd0aCI6NCwiZmlybXdhcmVWZXJzaW9uIjozMjk0NzYsIm1heENyZWRCbG9iTGVuZ3RoIjozMiwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjEsInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjoxMDB9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0xMC0xNiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzYsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWXViaUtleSA1IENDTiBTZXJpZXMgd2l0aCBORkMiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI1MTAxNjAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTEwLTE2IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3Nn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0xMC0yNCJ9LHsiYWFndWlkIjoiYmMyZmU0OTktMGQ4ZS00ZmZlLTk2ZjMtOTRhODI4NDBjZjhjIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiJiYzJmZTQ5OS0wZDhlLTRmZmUtOTZmMy05NGE4Mjg0MGNmOGMiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiT0NUQVRDTyBFelF1YW50IEZJRE8yIEFVVEhFTlRJQ0FUT1IifSwiZGVzY3JpcHRpb24iOiJPQ1RBVENPIEV6UXVhbnQgRklETzIgQVVUSEVOVElDQVRPUiIsImFsdGVybmF0aXZlRGVzY3JpcHRpb25zIjp7ImtvLUtSIjoi7Jil7YOA7L2UIOydtOyngO2AgO2KuCBGSURPMiDsnbjspp3quLAgViAxLjAiLCJlbi1VUyI6Ik9DVEFUQ08gRXpRdWFudCBGSURPMiBBVVRIRU5USUNBVE9SIFYgMS4wIn0sImF1dGhlbnRpY2F0b3JWZXJzaW9uIjo1LCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIiwiYmFzaWNfc3Vycm9nYXRlIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlEdERDQ0FweWdBd0lCQWdJQkFUQU5CZ2txaGtpRzl3MEJBUXNGQURCeU1Rc3dDUVlEVlFRR0V3SkxVakVaTUJjR0ExVUVDZ3dRVDBOVVFWUkRUeUJEVHk0c0lFeFVSREVpTUNBR0ExVUVDd3daUVhWMGFHVnVkR2xqWVhSdmNpQkJkSFJsYzNSaGRHbHZiakVrTUNJR0ExVUVBd3diVDBOVVFWUkRUeUJTYjI5MElFTkJJRU5sY25ScFptbGpZWFJsTUI0WERUSXdNREl4TVRBME1qWXdNMW9YRFRJMk1ESXdPVEEwTWpZd00xb3djakVMTUFrR0ExVUVCaE1DUzFJeEdUQVhCZ05WQkFvTUVFOURWRUZVUTA4Z1EwOHVMQ0JNVkVReElqQWdCZ05WQkFzTUdVRjFkR2hsYm5ScFkyRjBiM0lnUVhSMFpYTjBZWFJwYjI0eEpEQWlCZ05WQkFNTUcwOURWRUZVUTA4Z1VtOXZkQ0JEUVNCRFpYSjBhV1pwWTJGMFpUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQUxaWWErOVlaTEpuNEZXY2tEblkvRVJvQ3VPM1RCdGEwVzNmOFI5U1k1ZDVzQmsyUWl1cGNpSS9sN2Z3UHJIM0ZEa2VWUFhlak1lK2tUMFZvSkplK045RU1XZXIwLzVQWElQOTducnVZY3IwRHhiaFpwZXNRRWVVOEJlSVV1bnBOTm5FSnBveG9KVHdvRG11ODNaS2s0bThnMC9QZnBKd0RobVBDQXFtNzlzRnRQOGc3bEM5cW1zNVRELzZQTnorMmFld0tYVFFBUjFvcGZobldEVXNJWnR1VWZFUmhsR3d4VTdYK2gzb1Eya1NHdzVob2xmS1NiMGczcHdHVGNUVk52ZlVNWEg3Q2FpVHEvSzdUL2pkQUNEKzlhTmp0Y2QzUHlRZXJBOFNhMk4yOHJ2a044WWZLb0RQZzVnQTM3OE9ORFYzQmhyaHRZOFVpRGtCY1RzWEFRRUNBd0VBQWFOVk1GTXdFZ1lEVlIwVEFRSC9CQWd3QmdFQi93SUJBREFkQmdOVkhRNEVGZ1FVT0NtSzMxMEd1M3E5RGZYL2J2ZHBzZjRHSThVd0N3WURWUjBQQkFRREFnSDJNQkVHQ1dDR1NBR0crRUlCQVFRRUF3SUFCekFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBbkRUY1puZUsvaDBRYjhzRnhnRlM4RmE1ZGpRblNKUVVNRlova3pPc1BoMURWRkRGNG5ERy9IbFUrZDdLYU5oYVE3WEx0N3hBamh6RXlUeUhhTUg3NmdIMDhyMzNOZFZaLzRzTWg5R0lMVTZiU21KWU90ZFZpM3pCM3A2OWJuWVpISlZxdkpLWDVsRXNTcG4vb3BLWWx2dG8ybjAvNHM0YXdKaCtxK0JreVZTUFRSTVg2TGZibjZJUnU0Y2JlUzBXMTN0c1E1U2JwQW85TkgyRkFUelZNTUtTR0VkaVFuZll5Z2RXdnVEQ0xVdFFGMXdHbUdTWXNFUEZUVjZQRzFWUDVIUzRmaHJCTmJ1cmkzOE5JVW9jZmtwZm1PSXkraEhaZ2Z2cFp6b3JrMUd2RjNQWlJJdEpuVFR2NVVqcTBxRDhybnI4MXF3dkdsVENKSUJ0RVVtTndRPT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBRWdBQUFCSUNBWUFBQUJWN2JOSEFBQVNWVWxFUVZSNDJ1MmJCMWhVNTlMSE1Xb1NyN2wrVnZhY3M0MW1UZFNyUm9OWUFDa0xpb29GU3hRN2dZaWlpS0pHRGRnVkxIUkVsbDJhcUlCaWplS05YZkZhWW1LTkhTbTdDeHBqOVB0aWpJVzU4NTV6RnBabEYxZEZZL3g0bjJlZXBTeTc1L3gyL2pQenpyeVltZFd1MmxXN2FsZnRxbDIxcTNhOXcydURXbHBmZnQyN1VleUYrS2FyVGg1dXR2VEkxY2FoQndyL1oxN3V6VVp6YzA4MldyQi9ZOE9sZWJQTTF0K3dNMVBtZi96L0F3cEFIVE5sVWZzR3lUZlRXc1NmKzFXMDZoaFlMTm9IMW5PM2c4V01MQkJPVGdkcVFoSXdvK0pCUERRU3hJUFdBdTBWODZTSlgrYWxCa3RQekRaTHZXSCsvc0xKaExyMTAxUlRtcVhkZkNCS09nK1M2Sk1nRFRzTWxvdHlqUUtTOWc4SGlldFNFTnVIZ05CK0lUUVptMXBRTitybmtXYWg4TUY3NXpuMTBvdm5DcktMbm9zenJvSDRGUUNKYmVlQ3FOTk1hT0c0N05sSG9jY2p6VEl2ZmZqK0FGSVdkbTIycmVTaFpIc1J2QzRncHQwME1QL2kyK2NmcmppNzhMM3hwSTgyYW1Ja3VYZEJINUI0OVRIb0ZIVWMrc1lmaHdHeGg2RlBXQzYwRHNvQ3hqdWhXa0NNMVdSbzBpLzZEelA1clc3dkJhQi9aR21PV3Y3N2wzSkFyZEt2UVBEQjIzRHN1aG9LVkNWUXJDNEJsWnA3dkYyc2dVT1hDbURlaGp6bzRxc0VpV3laUVVDMFpETFVYM0phOFY0QWFwaFY4cjBXVVB1dEJmRHZheHJRYUVwZWFEL2RLSWFKc2Z0QjdMU29DaUNHOW9FRzAzYWZaelBqMzMyNTUycDJpdmZlaFJaYlZLQThaeG9jclJIUEdoVjdDRVE5NWxjQjlQRzA3eTc4N1FHVmxKU01QSFdyNUhtcm5ScjRaTE1LemhlVXZCUWdZb2V2cWNGeVJGeGxpVmxPZ2Zvcnp5YityZUVVRlJVMXdCczhTVzR5N2tjTi9ITmpNV3k2V081QlpXaVAwWDVIK3orMFA5Q2VHd0owRWFHMm5KYWxBOGdmR2c5TytOMHNzYURMdTNPM1hSTHFNNjRLTWVXbTdOcENwblFUeUpSZm1yc29mQVd5cE9ubXNxUWdnYXNpa0hKSjhzZXZ4d2hja2dhWXV5VDNtQnAyd1A3bWJSVzVlVkNqUmYrZ0JvZGRoWER5bG1hSFdsMDZSS1ZTdFM0dUxtNkdJSnVXbHBaYXE5VjMzRFNhMGpCOC9uVmRRS25uMVVDUFNLaEk4MjZyb2FYeXlvSy9URjRDMTlTR2xDejVVOHBWTVZiZ0lvK21uTllkcFJ4ak5GU3ZOUStwN2l2K3BMc3VMcU03aHdEZDZWczA4aGo2ak9xeStDSFZkZmxkeWpaY1E5bXRWVk85b2xWTW4valN0b05TeW5wTnpJTHhJWHRoaFNMdlQrZlZ4Nk1FMFQvbG1xKy9ZR2VXbVZuWDBQdmZ2WHYzbjJwMVNhQktVL3JyN2lzYXNGNXlrSTFCak8wOGFPVy9DV0pPM0lZaWpXYlcyeXgxNnpEOUUvN0Jlb1p6VWdMbG5IQ0p0bC83bUxGYkNzS3U4MEhZS1JpRUhXYUFzUDBNWURwOTg1VHV0bGd0NkI2MmxlNFpNWjkyakI1Q3V5UjkzdHdwcFJYeHNCWjlsWlM1VTZLZ1daOFVvZk9VYmUxemoxMitrYm5uSEN5WEgvOWQ2cGFVWWU2VWNJWHFxM3pBK085NEpGNjRmNGRreVg3dkppdU9TU3hDRDM3TVZzZkVsUG1OelpJTFhUdHR2SDVDT0hzWE1JTWlvZVgwYkFqSXVRaW5iM0VTeGRpMjVNMXpDUTM5Z0pFcE9wdkxsREdVOHpvMTQ3QWFQNm1GSVA1aUxvaTd6Z1p4bDJBUWRaa0Z3bTRoWlhTUHNJdVVVL3dpQXNQTUliU2VxVytCa2duaGIraVk5c05vSVpQYkNCd1RBc3hkNVVmb29lbFBSTjRiZ2ZiYmVybkovSDB4RGNKUHA5WmRkMjFmM1hWWDl6UmNmQ1RaSy9OeTdwWkxHc2hYVllwTFpTalIwVytNeTZkZW1SK2F1eVM1Q2x6bHViUno3Q09odzNJUTkvb1d4T2pHWXJ0NWJNMUJJQWw3TEg2Q0huS0ljbDN2VG1UM0t1OTE1ODZkVHhET2ozaFRsd0dndnY1MU5NY1BTTkJuZlliQVB1NkJlUi8wTGpmbFpLWi9Sbk50ZkVFUWcvU0ROcjVlTVlsYmJ3UU83WnJjQlFQcWJzWTE5cW5JYVFXSUhSZHlsV3B2Qk5SckFRdEoxRE1VNkQ0eCtaU0wzSXZjQk41WUhiUVAwT3JpeFRYRXdDcFNxOVZ0TUxCMlJBQ2Q4R2Z0aTRydTJPRDNndXZYcjM5RW5nYzZBUlNmWTRPZTlBUGU3Q2hqRWhjNEo5b0tla1Fjb3o1ZldVYjFTYmlLWHUxTlBCVmowWHc5UUkveC9VYlVPQmlSVE40VXdheWhaUWxQeERKdWp5TnhYZ3dTVXFYMlFVZ09vU3drb1dQWTg5YURVbkozSGJnbzAyZzA0OUZXNDBYdFJydUU5aHVmbnF1clc1NmhsYUNkUnR1RWZ4K0tZRHdSbmgxK25ZbzJWdCtUZERNbFpSKzNrRzYzNERIVmVUbFllaVNmM0o5MzlSZWQxNzczUnVBSW5KVzJLS2NmaGU3UklPbTdFcVR1eTlrOURndkpaUWxDV295UUZvSFFlUTBFaHU4dnl5OVEzY09MK2RNSWdJZjRxVjdEQzgxQnIxaUpOendGell0TDBScEgvTGtUbWdmK2JneCtQeHUvWG9lUFI4bmY4T243SWRwK0loM2ljZnF3Y25QUE5mUUl5RmtrN1loZWJEa1RiTndTSURyajFQT0NRdFZtNHJVMW5wMG9GNlVYSlpQL0p2Ymdkc2RTanpDUXNwQldnTlN0QXBMSVpUVjR6LzhPQ292VUJxRVFieUNCRWVYUzhzd1pJeDVRemNyUHY5OFlnWFJIVVBQd3RVN3hubmdITFE5L0ZvRkFZL0J4RzRsWCtIaG5YdFNoMjNUTDJjOFpnUjlRdHF1ZjRYM0VXemdvUDY1Uk9LU0lvOXprVDhTZWtTRHhYQVBTZ2F0QU9vQ0gxRThMQ1FPMGJDVjBIcFVCbDY4VlZzb1VYSERWVEw1MzcxNmptdTJmUVIwU3QvQzE0eEhNci9oZUJmajkzS0tpWDRUNHUzcms5dzZoQitzSkhPSjNNb3cvTU0wbkFmV3ZwWUFoWW1kVDkvUkdOUUlISzFvL3lsMytXRFFrbXUydFNBYXZCY2tnaE9TNW1vTlU3azByZ0pIRnd1cVUvK2pDS2NRTG5rQUt0amZiYUlRNnBJTG1ZaE83MVZBUldXb3psTUJkYVV0MVd2WW4wM1JDT1NSelYwVldDNGZZVDE0djVzZ1V6Z0szcEVkQ0w5emdEVWRBWHBGY0UzeElSQVVrNGsya0lkVXZIS3dIcHNBUEYvSjVPS1ZaeGNYM1JHKzNJd3NmNEFmU253UEVma0EvaysrN2UyVTJ3T3gyaHNCaElUVkRTRjNEeTlDVElsLzV6UmpuVkFrQ3lxZTlFb0Q1TWc2RUkySVJVZ3lJaDBWVlFFSnYwa0lTZTBRQTJRcmNMbEE5UmUwdkpTNytGKzc4TFJIT09XMDJ4T3VSZHhpUnNaMldUT2NBRVRQM0JkekdQRVZJdzE4dDdyZ29GSlNuSEdqdkJLQkh4WE9RUm5LUVJNTjRiK0loRVc4U2VVU0I4OWRieXdxTFM5YjhsWEIwYXlZKzQ3RWVIYmpxd0JQYUpyZ0NFQnB0TVFOd1Ezd0xpOWVYR3dPUmJZUEFYZkdZOGtaQVl4TTVTS1BYc1Uxd1ppVHhKaTBrM3BzR1I0Qm9RRFJZRFV3dDhGLzJmYk4zcFhHQWNjZ2U0VHdoZ0NhRzVnSnRqYnY0WmhXQW1HWVRVV3BoUUxrbWhiN1V2Z29EV0RJMVZNRk9CcWp4UEtReDZ5c2dsVXRPRjFJVXlRNi9NMjVKcmQrZEtSRjhRQUwzcmRzcXNCdWZDWXdJTTVrNXhxSG1FOHRCRWRrSm5PV0ZqRU5DYzlPOHAzOUNjN3pSTy9TNFpLQW5LY3NoVVZwSUJpVVh4VXFPZGsvRTdLQU1lY2M2a1U1YjlsMTR3dlNPQW9iNUNoaktoNFBVZ29lRVhpVG9HVlZHNmp5VFhwQzBLaWdQSlRCZnBRTDlGUTlwb29LRE5BNGhqVjFmU1hJRUVpczU5Q2FoWnh6eG9qdm03c25XN3dxZzJNeFRsTjI0emZmcGRuT0FFWDdGUWFJUmtvQ0gxSHdDVU8wWGt1dE9NdWtGY1hlK2dCNlNETUt2MDRIeFMwVlFLVUQ3SkNNazNwdkc2WGdUUXFMMUpFZDdyTWZBcHpoWVE0WFk2eTJ2ekxwazMwalpocFV4Rmw4REkvRkRtZm5xUVpvRXRNMHNCSlIwenFUWHBKQWtNeklWUlA0WjdJU1M4VXNEeHBlRHhFbE9VVGt1NlVsT09Dd0dxTDZKR1BpVTJZMGRsSTMveXRZdStiQ3BYcEhQbUZZQjNBUkRDMG5zeTNrVGdZU1NvNlVCeElNZW1OUWM3KzJUZlU0NE9nM0VVemVDYUFxQnRBRzlpVUF5SXJreE9wTFRRaG9lQzFTL1JIeFQ1VW5LWGRIdWJiTWhBUmZmTzUzcXRmWTUweFpybjFaVGdMSHg1eUJaSWlRcEQwbnJUZEtweElQS1RBbG9mY2FIN0gwcUhKME8wbW1iUVJ5d2lZUGt2OEdBNUJRR0phZWI1ZWlCQ1lEN3VIdVVpeUtZdEVuZU5CaXlDYVZrU2NNd0sxMmpiWmVDOExOQVlOcE9BNmJOVklTRVpvT2dyQkdVcFk0M0VVaVcwNGdIL1dGSzNSQStKL0l3M2x3YVdBUm1nWFQ2WnBBUVNNU2JDQ1NEa3FzbXl5RWs0ZEE0b1BzbGtyTCtHbHFBMENtbEdTbEVhN1JIMVQyekFlNFpoMkRSZDV5MmozZ203REtQNjMwaklPR24wM2xJQVJ5a2xqd2tyZVRRbStnMndRVFFUUk1BbGVRcGM4NEM0NWtDbGtIWllEbURRTW9FQ2V0TkZaSmplTWt4UGkrUW5EYkxZU2tnSElvZTVaRUFsRnZTQTNUbmphVEVwOXlVRnE4S0M2WGJ3dHhaSWNPRUVDMXdYbDlNTzZ3RjBSY0wyTjQzR2V1SS9oWEVEd2c0U0VJeUIydUxrRnJ6a0ZqSitiT1E2RTVzRnR0cUNxQzdaM0d6S2UyZkFsYUJXOEJxNWhhRWxJM2VwSVhFU1U2a0x6a3RKRlp5aVVZa3g1VUNvcUdrSEVCWS9STEtLRGY1YndqclBDYUdGTHpBdVFSYWN4ZUZQWHBEUnpMZElDWndsWCtHaGFzZDFsZWViTnZGUlJsUHVjcnpLT2QxdjlCOUlwOEpleThEVWZjRjNJQ2cyMndRZjg0TkNFU2RlVWdkZ3poSW54RkkwemxJNVpMelo3Mko2aGtCWkJabkNxQm5SY1VhR0JpNEE2UVRONEZOY0E0SENiM0pZb1l4eWFWV1NHNmlvcXJrZENHTjVLdnY4ZzB2bW1ja2JsT2lRT2lCWHRZM0ZoaDNmSzRibGcreWRXVzBMTDZNZG8wRHhqVUdHSmNvdGxNcGNsb0pJc2NsSU80ZFVubEEwUDBiSHRLY2lrbEtaOTZiT2dZWmxoenhwclpCV0VrbjNpY1RFbE1BUFNYN2xnMjd6dUdubkFyV3MzSllTTmF6dG9LVnZ1U3F5M0lUWHBEbFJsUlUzMVY3VEZ6N1JOcFAyN0UwM05abGU5LzJQS1NlM0pDQWhjUk9VbmhJV20rcVJuS1U3WEpvNjdWaHA0bWJPNjZQUXJ6STFUOEhKSk15d1diTzlncElyT1N5V01sSmRlT1NWbksrMml4WFdYSlZON3dWMWJkMkx5Y3gwR1BTYmV0S2ROcTZaRWpBUWpJd1NlSEdUZDhZbFp5bzQ0eHl5VEVkZ3NFU2R3MGJkNStMTkJYUWZtMTdZTS9objhGeWNCcFl6dHdHMWdUUzdHMWdvNFVVbEYwT3lXQ1cwNVlDazVRdkxBWFl1R1NreDFTMXJZdVFaQldRMkVtS1k4VWtwUktrS3BLYlZTNDVOaTUxQ0FLNmR3VE1qemtDeGNWcVAxT25sOS9xTnRsWEtQS0FHWm9PVm5OMmdQWGNIUndrUTVKRFNCV1NTeS9QY3ZyVk40RkV2V0REcTl0anF0VFc3Y2UxZFExTGJxRVJ5ZkhEeTI0Nmt1TWgwWFlyb0cvQU5pZ29WRC9EK3U4elUvc25YZm1lTGd1SVRDWjhGdTBEMGFpTllEVjNKMWgvczZPeTVJSTR5VWtEOVVvQmZ6NHUrWkc0VkRYTEdaV2NUbzlKTXJnNnlTMnZJamtKSzduUUNzbjExSmZjbkhMSkNlMFdnKzNZVFhEbS9DMjhUODFac29Nd3RYOVNEOEVjMHZVaTBrdnhucjhIaEtNeXdHb2VnYlNUZzRUZVZCR1hzblhpRXBGY1JxVXNSK3RYMzZiMm1OaTR0TFlxSkdPUzA4WWxCMjFjcXBybGhEMlhRcWVSRytENER6ZjQyWHpKOUpjcXdOVHFVcGsybTJrdHYwQUZBU3YzWThHM0FTeG5vOXdJS0FPU3N5alBjcnprakc1NGs2cG1PZDBOcjY3a2h1cElUaHVYV01tdDFKSGNVaDNKTFVKUWhpWEgySWVEZzA4V25QenBwdmJlOGw5NkZFVW1sQmlMTXZXSGZzV1kyVllxVG9ETmlBeUVrTU41MDF3amtxdXUramJZWTBvMDJtUFNiZXRXS1FVOGpKUUNlcElUOVY2SU5WUTBxNFNMVndxMDkvUVVuY0g3bGZZMjVGQUJtV2taR2hubkhyMENqbjViUURSdU13WnZuYmlrSzdrZ0k1TDdXamZMS1N2MW1HcENjaElEV1U3b0ZBNXRCaVhEMnJTVG9GSnBkRTkycEJ1ZDdac1lzQjM1YVdVVlNFUnl5K1I1ME41N0UwaDhzNnRtdVpsYmRhcHZBMW5PejNDV28wMW82NWFYQXBVa0YxWWhPVGZPbThTdTRXRFJMd0VtaE83bGczR2xlemhWVUZEUTVMV25sZVF3QWI3WUkyTW5NSDY4bUEvQkVZZWdEV1k1aVU4bVdBVVRUNnBHY2xQMXNweXZYcFo3WWZVZHJWTjlWNVdjQkVzQnNUditETUVNbTcwTHZqdDhHVlRxS3NlRkw1V1dsbHJWV0N1Qm5KNUFkN3hmM1ZFVm91dVZXRFAxOE1rR01XWTdDLzlzTENwempHYzVReHRldlI1VGxWSkFaOE9yTHpueGdBamN4OFZBTzY4VW1MTGllemh3NGhwNzJOUEF0WjRpUThVYWIwU1IweFJralB1aWM4aTNVWHJmWVFVZXVPb0FkRWRZVnQ0YlFlcXpHU3luWm9GbFlIVWJYc05aampiUyt4WjZvUTFDRzdBT09veE1nMUh6ZGtQUzFyTnc5VVlSWU5vMmN0WklzK1cxWmZXQ1NTWEZaN2VucGh6YUp2WFR3ZjljZ3pXcEoyRnN5RjdvTmpFVExFYWtnMlQwQmd6d2FKUFFpM3dSa0o5Mkg1ZkdUVklta2E0QVFocVAzdVNOa3ZzU2JaZ2NtQ0Z5ekdSSjBIWjRHbmdHYlllUXVLT3c3ZnVMK2lkSkROa0RjdEkxUC84dC9MY2hQNGdiaXFDdXZPd3BkMkxrWmtnV1ZPU2N4U0IvSEdhc1BvaEJOQmVHejlrTmcyYnVoSUZCTy9EbWQ0Qlg4QzRZczJBUEs1ZVErS01RdCtrMDVDQU1jakNpV0dYeXZ5Q1FFMnE3M3NCaEtkTU9NWkhqSlhnQnQxOEZsQ0VqTVlQSXc0aEVYc2FJaCtmaDlmVjlyVFJlUTdQdkZoajBBdmo0OUx5bVlMMEdtTjNrMkI0NUFQb3VUWGVKOU9xU2d3TGttQW52VldWdkNjb1RsUHNadEFYa1NKL1p1NzVJN1hULy92M0dxUHZlNUFRN1h2Z1IvcVRxa3hvQ1F2NWY0elozOEpNOTlObnVyUVRmTnkxRHRHNWszME1PVnFGbGNPQTBWL25EbDQ5MDVFbGs4cjk4Wi9NOFBuY2Y4VW9FTW9jY0FTWkF5UGxxczlwVnUycFg3YXBkdGF0MjFhN2E5VWJYZndGdlVFRUg0WWFxbEFBQUFBQkpSVTVFcmtKZ2dnPT0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJGSURPXzJfMCJdLCJhYWd1aWQiOiJiYzJmZTQ5OTBkOGU0ZmZlOTZmMzk0YTgyODQwY2Y4YyIsIm9wdGlvbnMiOnsidXYiOnRydWV9LCJmaXJtd2FyZVZlcnNpb24iOjV9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMS0wNi0wOCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJ1cmwiOiJ3d3cub2N0YXRjby5jb20iLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IkV6UXVhbnQgRklETzIgRmluZ2VycHJpbnQiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDIxMDYwODAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4zIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjMifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjEtMDYtMDgiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MX1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMS0wOC0xMCJ9LHsiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbImQ3YzBjOGRjMzUzOTMwOTZlNzE3YWE1YjljZDNhY2M4YzRhZThjZTUiXSwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiZDdjMGM4ZGMzNTM5MzA5NmU3MTdhYTViOWNkM2FjYzhjNGFlOGNlNSJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiWXViaUtleSBCaW8gU2VyaWVzIC0gTXVsdGktcHJvdG9jb2wgRWRpdGlvbiJ9LCJkZXNjcmlwdGlvbiI6Ill1YmlLZXkgQmlvIFNlcmllcyAtIE11bHRpLXByb3RvY29sIEVkaXRpb24iLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc0LCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjJ9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50IiwicmVtb3RlX2hhbmRsZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURNekNDQWh1Z0F3SUJBZ0lVU09FalRmLy95cVJmUFc3UXE4cXRJeUNyQWc4d0RRWUpLb1pJaHZjTkFRRUxCUUF3THpFdE1Dc0dBMVVFQXd3a1dYVmlhV052SUVaSlJFOGdVbTl2ZENCRFFTQlRaWEpwWVd3Z05EVXdNakF6TlRVMk1DQVhEVEkwTURVd01UQXdNREF3TUZvWUR6SXdOakF3TkRNd01EQXdNREF3V2pBdk1TMHdLd1lEVlFRRERDUlpkV0pwWTI4Z1JrbEVUeUJTYjI5MElFTkJJRk5sY21saGJDQTBOVEF5TURNMU5UWXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFDZHZsMjd3Mmd1MWZQWGVFRmJJZHF4MEJhbHZWRFZXclFQSjdIcXZpdUV0WkhseFNMeFNGdGNYcFRvbHZMdm9mOGY0dE1lclFUa1ZHemNtWXptMUVCVDRJSnVNbW9FcWZrRUVoV3BzQURNRnJqWmtxbFpZOUVxeFF6TG9WRUVvbkU1b0d4U2RWQ3hDY0xJYWNrcHlSL0NDWHZqMUJ0L2hUZ0U5aFRsRjRwUnF4TWt4M3BsRjd5OGREWmxSSFdzN3ZibmhtQkNHZUkwWlBFUTZubDJtQ2cycjc0YWRGMnU2SzlyckxmaEJDM1FMRThFUHJncVVzSStoa3VxMnRLNE0yU01PcDh1VVZWa3FVZXUzaDBrcjNXVkkwVzAycGtnck9naUZLTEZOa1NyYlloZGpNQkRqNWl6bXFmYzl4SlJLb0RYNjEycWQ4WkdWSHBUNUFZRlgrMWhBZ01CQUFHalJUQkRNQjBHQTFVZERnUVdCQlRaeVU1RGlRL2EyVUVnRTdxQkswemhJc1JOUmpBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQU1BNEdBMVVkRHdFQi93UUVBd0lCQmpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQVh2bkI0U0x1VUpmWU1TVkdBaHNzTC9TbVdsaTNGU2NjZ3h5ZHZLbEFDY2lkSUlXS1FxYTNxL1FTVUVRekM5RGdFZk1ncjdpQzFCa1RaYklMYm9WNlVaNWtuTnN2akVaV3VNZW9nSjh0Z1pzMWhWdkt3Wml6d0orbUVjbXNqaElyQll1b0wxVDZ5ck9KdktGZzFqditDeTRad0E5QnBrL1YzVU9pcjFWeUs4ZEN0eUh1NnZmb3NvdEFkWXg4RkF1UjI0M2dSVE1WNkp4OEpkaWcySkRJQVFNbHpWZURwU1VIWC9LMkhYUkh4SHdmZ2piZ1VqakJ1LzcycjhPZmVoeWh6SFhJM0s4Q0ZGZGZsTys4bkVPSkszeThGMWl2Z1M1dU4vOFNtY1l3L1NUUVl3aHJ4UHV3ejNuUDhiYU11bTRCQjJublltcEI2MHNYM2JsNWs4UVVTdz09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWZDQVlBQUFDR1ZzK01BQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBSFlZQUFCMkdBVjJpRTRFQUFBYk5TVVJCVkZoSHBWZDdUTlYxRkQvM2Q1OXdlUVNJZ1M5QVFBWGNGTEFRWmk5ZnBlVnoxdFkvV1RacjVXeHBjN1c1a25MYTVqSTNaODVzclMybk0yc2p0V3daUzdJVUg0SDR4Q25FUXg0REFaRjc0Vjd1czg4NXY5L2xJbkJ2VkovQjRQdjludS81bnUvNW52TTU1NmZ6QS9RdjBIYi9JclgzVkZLUG80NWNubTRpblVJV1l3TEZSbVpRVXV3akZHL04xaVJIaDFFWjBOUlZSdWRxdDFCZCsyblNLeVMvT2h5czArbGszZS8za1E5cXZENFpVdGE0VlZTVXVZMGVpcHlpVGhBZm9jb09SVmdEdXV3M3FLUmlBZDNyYmNFdGpUallJb2Y2V2FIc0NtelZQV0NNeCtjZ2g4dExxV01LYU1Xc1VqTHFvMlJ0SklRMG9Pem1lcnBRdTRlc1pnc09Oa0d4SDdkMGtkdlRUMTdzNE9NVTdWSThaaGpnR2FNK0FxOWlFTnU4UGlmMXVkejA3TXd2S1dmOEdsVm9DRVkwNFBDNVdkVGFYWUZiUjh2TnZMNSszS2dmYjV4Tk15YTlSYW1KaXluYU1sR1RWdEZscjZiYTl1K3BxbkVYNHVNdVJSZ2pTWUVock43dXRGRmU2bHFhbDdOZmt3NWltQUdIeW5QcGJrOFZtWTB4c3RucHRsRkNWQ1l0elR1Qk44M1FwTUxqVHRldmRQelNVbko3ZThta2p4WjM5ZlhiS0RmbGRacWJ2VStUVWdHbkJWRjZmUTJpUEhnNFcxNlVXVXd2emJrMTZzTVpFK1BuMHB2ejdKU2V1QXllczhsY3BDbWFLdW8vcCtxV3IyVWN3SUFIV3J2UDBZRXpoWEF0TEFic3NIaHA3aUdhbXZ5aWpQOHJ5cXJYVVdYOVhvb3d4eUF1Zk5CcnA0M1BPQkZYWmxrZjhNRFJpcWNweW93QXdwdXoyeCtmV3Z6L0R0ZGU5c21zenlndGNSNkMxd2JkekJsNk9scTVXTllZNG9HYXRoSk1ya1RFeDBqQVJTSEFWcys1cllrUU5YYitRZ2ZQTHNRNmdYeUluc3JlUWZtcG03UlZGWWZMODZuMWZpVU9rWXZTaGtVUHh2YnVrem95NksxaWhNMWhvM1h6VzZFdlNmWEErZHBpV0dhV2QrZG9Yekx6bUd3S1lGTENBc1JBbFBCQWhNbENGWFU3dEJVVlByOEhnVmNKSFdxK0YwMHBscitETVRkclA0enZ4WTExa05NaHhUK1NlVEdnK2Q0VjVMUUppdHlVR0pOQjhWRlpzamdZQlpNL0lJL1hDVGtqMHF5RE9wRjJBVlExN0NJalVwL0RuVDFVa0w1RjVnZGorc1Mxd2cxZ0UzZ2lnbTYwZkNYelNuUFhieUFQYklYditJRHBFMTZUaGFISVM5c2t5aGxtTUU1RjNjZnFBS2hxMkMwRTVQSDFnWWFYYUxQRGtaRzBIREpPbktXSHA1MUkwejVTT3V4OGUxV0F1WnpkSFFyVGtwOFRtalhvSStsYTB3R1pzenVicWJPM2lmUTZBL1c3dlZTWXNWM21SMEpLd2tLYzRXSGlCa21SOEkzQ0NnSTg3b09MNHF6VDVQK1JVSkJlakVPZ0FQSzhoWVB6YXRNK2VJVHAySU85eVRRbWVyb21QUnh4MXF4QWNzaWxlL3ViU2VFYmNXUUdZRUNnaGNMWTJIeUtqb2dqSDI1aE1wanBVdjFPdWdsaTRlaDJlUncwTzMyYkpqa3l1Q2dOemcwdnpsWU1TaVNzMHVvbzRNRzdoTU9qQ0VhWDF5RkUwblN2akJ6dVRuRXBLODZaOElvcUZBSXVidzhrZzlBckVhUkVXU1pJK2pINFhicDZnOUU5RW5KVDNvYVJ6RE4rTVVKQlFESG41NmE4b1VtRUJ1c094QnMvTjUrdEpFYlBrQUZEajhVR3ZPcy9JV3ZjU2dsR0JodlM3L0ZUWWZwV0dZZERZOGZQQXhXU0EzNXNUQzRwNCtMbTRBYXFJb1BlUXRmdWZLNkpoMFpoeGxic1VYT1NtWE5pZkQ1WlRBa3lEb2ZiYmNjbHhuQThXTkFxeENiUk55a2hYeFFwYUR3NjdmWFVZYnNpRzBLaHR2Mm9lSXZoOHJoUU1ZT2NFQXFYRy9lSSt6bmdPYzV5eHI4cTgySUFNMWMvRkxGT3BscXU1ZUZRWHJNWnpHY1ZDalliTFdHNUk0QlQxZXVScmxieHROT3RNaXREREVoTFhJSXluQUF2dU9FV0UzWDNOZEFmdDk0VmdhRzQyWElRdDBaWDZQZUNFL3FRRmU5cks2SHg3WVU1MEt2SDdmVzRmUytxN0tLQkp4c2dnQlg1cFNBR2gxaklyVmg1elE2dzNSZmFhaEJYbS9hQ2JDWlRqQ1VGVVR5V1pxVzlwNjJNakpQWFZxT3JQZ01PNE52NzRHa2Yrb3dmdE5WQkRRbmpGSnFIU3cxN3BYdmhXVzVLWnFlL1E0OU4vVVNUQ0FWV29RWEZJSEJIWFhlM0ZQclVEc3VHRG10Ri9oSEtUSHBla3hoaUFPUEkrU0pxNlM2SEY0STlZV3prQkpUbzQ2aVVNeldwOFBpci9SaWR1THhLWXNTa3NWOHZMbE9RdmhHWDJZbFIwT0JoQmpDK3UvZ0VjdlkwQXBLN1lrNDFOeGpQU1FuV0ZIVEY2NlVyamdldkI4Q3U1YStsMnZZU1JQdHVWRG83M2hoZE1TSG5VWDd0VGpzVlpHeEFsL1dwdGlPSUVRMWduTDI5bVg2L3RSMXRtbGtZajhXNFgrQ1NqV2NVREdZMU5wUy9DN2hTS3FpTUxNL2wyUW1TV1o3M0RkeitnaW84QkNFTllQUTQ2cW5rendYVWJxdkJreGpVUXNXZlpGZ2J1bzNyQWYrd043ak9POTAreW54NFBpM0wrMG5ZTDFTY2hEVWdBUDRnUFYvN0lkMXErMUhTaG11R2tJcVdSUGd5eE1GcVA4SGZqVG5qWHdZNWJRZmJKY3Q2T0l6S2dNSG90Ri9IZTFlZ3NheEhTcUc2d2ZkbVE1eDhOeVRGRnFCY3AyaVNvd0hSM3lrNSszNmhGN3ZYQUFBQUFFbEZUa1N1UW1DQyJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTAyLTAxIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NCwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZdWJpS2V5IEJpbyBTZXJpZXMgLSBNdWx0aS1wcm90b2NvbCBFZGl0aW9uIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVMkYxMDAwMjAyNTAyMDEwMDgiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0wOC0xMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzQsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWXViaUtleSBCaW8gU2VyaWVzIC0gTXVsdGktcHJvdG9jb2wgRWRpdGlvbiIsImNlcnRpZmljYXRlTnVtYmVyIjoiVTJGMTAwMDIwMjQwODEyMDAwIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMDgtMTIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc0fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTAyLTA2In0seyJhYWd1aWQiOiJlYjNiMTMxZS01OWRjLTUzNmEtZDE3Ni1jYjczMDZkYTEwZjUiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6ImViM2IxMzFlLTU5ZGMtNTM2YS1kMTc2LWNiNzMwNmRhMTBmNSIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJlbGxpcHRpY1NlY3VyZSBNSVJrZXkgVVNCIEF1dGhlbnRpY2F0b3IifSwiZGVzY3JpcHRpb24iOiJlbGxpcHRpY1NlY3VyZSBNSVJrZXkgVVNCIEF1dGhlbnRpY2F0b3IiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MiwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9pbnRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNZVENDQWVlZ0F3SUJBZ0lCQVRBS0JnZ3Foa2pPUFFRREFqQnBNU1F3SWdZRFZRUUREQnRsYkd4cGNIUnBZMU5sWTNWeVpTQkdTVVJQSUZKdmIzUWdRMEV4R3pBWkJnTlZCQXNNRW1Wc2JHbHdkR2xqYzJWamRYSmxMbU52YlRFWE1CVUdBMVVFQ2d3T1pXeHNhWEIwYVdOVFpXTjFjbVV4Q3pBSkJnTlZCQVlUQWxWVE1CNFhEVEU1TURRd05qRXpNekV5TkZvWERUTTBNRFF3TmpFek16RXlORm93YVRFa01DSUdBMVVFQXd3YlpXeHNhWEIwYVdOVFpXTjFjbVVnUmtsRVR5QlNiMjkwSUVOQk1Sc3dHUVlEVlFRTERCSmxiR3hwY0hScFkzTmxZM1Z5WlM1amIyMHhGekFWQmdOVkJBb01EbVZzYkdsd2RHbGpVMlZqZFhKbE1Rc3dDUVlEVlFRR0V3SlZVekIyTUJBR0J5cUdTTTQ5QWdFR0JTdUJCQUFpQTJJQUJJY2lvTGxkTG54dlNwLy9HYUowc3E3aE05MlBRNHpXN0NQbFpsVW0yc3lpcHB3Yi9XWFB3UFJPVGRtUWYyR0RiZzVVQUEySVlwTlpwcFVlcTF2Z25XdkxtdUo3K3UrS1dCSzIzZHoxUzZTWU9QdGs1dkhmR29tcEM3SUtpOE11aktOak1HRXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0hRWURWUjBPQkJZRUZDRlI2dDkraS9mNkQ5bWVvZ09MWXBVbGJxYXpNQjhHQTFVZEl3UVlNQmFBRkNGUjZ0OStpL2Y2RDltZW9nT0xZcFVsYnFhek1Bb0dDQ3FHU000OUJBTUNBMmdBTUdVQ01RRDJLWmR6czY2aDFrQ0VHcW1GVnIwVWUzamFOL0J3ZmZZdVg0S20rWVREaVU3aktFWmR4empBcndGU210aUFJekFDTUVOZUxLRGFBYk9GSXZpcVk1S3QyY1hRa1d6VGdyMTM0VmxBOGhVQlBHRTZLSGc2Z2lKYUhnUFpMU1k2QUZXSDJBPT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBTWdBQUFCWENBWUFBQUJCYUFvSUFBQUFCSE5DU1ZRSUNBZ0lmQWhraUFBQUFBbHdTRmx6QUFBRGZBQUFBM3dCSnFGSklBQUFBQmwwUlZoMFUyOW1kSGRoY21VQWQzZDNMbWx1YTNOallYQmxMbTl5WjV2dVBCb0FBQmVuU1VSQlZIaWM3WjE1WEZ6bDFjZC81N2tYbUd4bWNZbHBHbzJhaENoTDNIMTlQMWJqa2xwM3JVNWdnRkJxcmJSR0lVbHRnTVRXMFZxQnhDYVF1RmVyRGNzTWpNdHJYUnExamFodjFWWjVOVUJpa3NaWWF4V2pNYnNCaHJuUGVmK0FHZTY5TThNTWhHRUE3L2Z6bWM4bjl6emJJVFBuUHR0NXprTVlJdGp0ZWNjcVNtY0tDNTVGb05rQVpnTTRDb3dKQU1hQ01CYU0wWEZXYzZoeUVJeFhORTFaN1BHcyszZThsUmxKVUx3YXpzM05QYkt6VTg2VjRJc0l1QWhkQm1GeGVPeldmRXE2eDdQdXMzZ3JNbEpRQjdPeHZMdzhXMGVINzJvRzUzbzd0VXNCcUhHejBKSEpKRVhWVmdMSWlyY2lJNFZCTVpDTWpJeVRpQkorMGRiUjZTQmd3bUMwK1MzbTRuZ3JNSktJcVlIWXM3TlBVU1JLQUdRQ0hHMXZzUXVnTFdCc1plS1BpZmtBQkw1aFlEODAyc2NLeTFqcVBOd1FFT2VDK1c2ZGFGemNsQm1CeE1SQWNuSnlwbWdhVnJKa0J3QVJJZnNXQmpZSTBBYWZyK01OajhmelZTeDBHcWxrWnVhTWp0OU1jdVF6b0FaaXQ5c1ZWVTI4eGFmeGJ3Q01ENXVSc1owSlZWSVZWWjZxcW84SFVnY0xpNEZrd0F6RW5wMTlpc0tvWXNicFliSklBajJ0Q2E2c3I2bDVDd0FQVk5zV0ZyRmlRQXdrSXlzbmx5US9DR0JNaUdSSm9LZWxwRHZkZFZVZkRrUjdGaGFEeFdFWnlGVlgzVHg2ekpodkhnQnpYdWdjOUxvbStCWlBUZlhtdzJuSHdpSmU5TnRBc3JLeUprcis1Z1VBL3gwaWVUZUlTOXkxTmIrSE5aU3lHTWIweTBDeXM3Ty9LeVZlQm5DS09ZMkJsNlhQdThCYWpSb2NOQldiRmNuRi9tZGk4c1ZUbjVGR254Y0lNekp5WjVHaXZRckdjYVlrSDRqdW5EMXJScG5UNmJUMktpeEdCSDB5RUxzOWQ2cVNvTDBWd2pqMkU4UjFMbGZWaGdIVXpjSWk3a1E5eExMYjdlTVZWWHN4aEhIc1pFbVh1K3VxL20rQWRiT3dpRHRSR1lqZGJoK2xxRWt2QUR6SGxQU0pJSjVYVzFmenp4am9abUVSZHlLNWdRQUFGRFd4RXVEelRPSmRta0tYMXRiV1dzWmhNV0tKT0FkeE9ITG1NN2pPVk9vUUV5NnVxNmw1SjJhYVdWZ01BWG8xa0t5c3JKbVM2VDBBUitqRUdrdGNYbGRYODBwc1ZiT3dpRDloaDFoT3AxTklwaW9ZalFNZ3Vzc3lEb3R2QzJFTlpNdTJiVGNCT01ja2J0QTZPKzZOclVvV0ZrT0hrRU1zaDhOeEZFTnNBWENrVHJ4TDh5V2tlVHhQZmpFNHFsbFl4SitRUFlnRWxjSm9IQUNqeURJT2kyOGJRUWFTbFpWMUlvSHlERUxHdTdObnozeHljRlN5c0JnNkJCbUlsS0lJeGcxRVRRaSsyZkt2c3ZnMllwaUQyTzI1VXhYVjl4RkFTVHF4eSsycXNjTElXSHdyTWZRZ1F0VVdtNHlEQ2JKc2tIV3lzQmd5QklaU2MrZk9WUW5JMFNjeTZBVzN5OVUwK0dwWldBd05BajNJNUtsVGZ3QmdzajZSR0tzR1hTTUxpeUZFb0FjUmtuTFplRHIyazltelo3d3grQ3BaREZkSzB5b1dFK2h5QUdDaVYwcWFDbGJHVzZmRFJRV0FxMis4Y1J5M2RWeGxTQ0ZVV1N0WGtTbExyMWhHM09PT0l4bnZsN1FzcXV1dFRLLzFwVlV1SmZBay96TURIeFUzTC9wOXVQemxxYXRQbGtJc01BaVp2eXBwWHJRNmRQMXI3aURJc1pIMGtFVHR4UGlLbUxlMUhSei9wdk5mUDI2UFZJWWdUZ2I0RWdBZ2x2K0psSDg0b0FMQTZFUGU4MEd3NlJOWVU2cmlvOUx3b2Q1ZXIrelkwdXBrSU1Fdkk4TCtzak1lV1YvY21MK3ZyL1dWejFsek5rc3VaK1BpNG1ZQVlRMEVoR1JpbEppRTJ3Q0VOQkJBM3NhZ1l5THBRdDJEQ1NhQ2JkeitnMldwbFk4bnNuYjNrazFMZGtjcU81SVFBRUFrTHpLS2VWdGQzYnB0OFZCb09MRmpjK3RVNkl5am15UGdiYy92VDMwc2VWa0k4Zkg5cVd1QUdRdENvVmNvTFdWcGE5UGlyY3hnSWdDQUlTN1VDeG4wV256VUdWNEloY0w5ZUpjNHB6OWhDNU1Xa3ZMMGltUUFWNFZJR25QdjdQdVBEQ0dQQjFNQXVYNEk2Uk56UkZaVzFzU2dvN1RFRGZGUlozZ2hwUXhuSUpPVHh1M1A3VXRkekZTRU1MNXhhbUxuVU9oRi9IeEhKR2dyNHEzRVlLRktLVkpCYlBoaUVvUjRQVjRLUllQZGJoK3Jxa21YU3ZCNUFuUXNNNDhDYUNlRWJOUTYxZldEZGcwWmllbmg0dUlSVUZSdnIzOTh2bWUrRnFtYWUrYXNtZ3FKN0hEcG1oVEhBNGhaVUF6QmZKVkdpWDh6eU1oN0RFQTNNT01PQU9iZU1HZEZ5Z1BMbDI1YU9PS2RWMVVpSkp1KzR0M1YxZFd0OFZHbmQvTHk4aWEwZDNRdUJhR1FtVWNUQUFaM084d3d3QVJGMWJSTVIvYXpncmlvdHJaMlJ5ejFJZWJqT2Z5WnpCTjNmTmg2UFlENlNQVWtzTHFZd1luaDBvVUlPNVFiR0VnY0tHbStaWTlKdWdmQWI4dlNLejhDdzJWS1M1Uks1L2NCckl1cFhrTUF3WVJrazJ4TFhEU0pRSFoyZGxwN1IrZjdBRW9pWE9hcEFMaEJNalU1SERtT1dPckVGR0VDVFZqRzZNV0VBSlNkOGNoNFpyNnAxM1k0N0ZBdTVoUTNGYm9CdkcrV00zQkdITlFaZEZSbUpPdS9RUUp2alpzMlljakl5SmtqSmIrSnZ0MmVOSWJCMVJtT0hGdWRxL3FKbUNqR21CNGg3TVdjc3RTMTg5Q0M4RWVVTzlzV0FoVCtMaFVBUUl4N2tBZ1E0ZS9NT0UwdkU0eWorMU5YNmFtcnAwTlRaZ1RxSWVZVGtxYzBoQnVLT3VFVW8rWk1PbE5xOG50RU5KVkJDUVI4SmNIdmVSTnREYzdHL0VPaHlxMU1YM3VDai9ra2Z4dExtd28yVUdEeHVoZjlVbGJOZ0ZDbkE0Q1FyS2xFUEZVL2pKYWdqL3IwRjhjWXU5MCtpUVEveDhIR3NRUE02d0R4UGpOM1FxR1RpSkZoQ2s4a0NQS2hqSXpzbHJxNm1uY0hVaThHVXptdG1SWXBId2t1QmtJYnlKb1phNUlPTWQ4YXViWDRHZ2c0eExFSTZuc000UEwwaW1UV3FBSGdZd00xZzIrZDc1bi8xK0FtbWNwUzEvNllpTzlneVNjUWRiMkpxUHZIS2dEWXZPMzdTOU1yVjNjazJGYVlEVVdDSnhQNFZRQmdCc3JTMXM1RE0vNFNTVWNTd2dYd21RREFndjVIZ0kwL1BORTE5aHd5S0FsSmQ4QzRGOEJndmxmemVVOTJ1MnZ2Y3J1ci8xUlhWL1BudXRycSs5MnU2dStCWVFkd3NDYzdKUkhoQVF6d2xkY3JVeDZjak9ESkt3RGFaSGhrWEhodmVvWDViRDhBNEp0Ui9DTUFVMHppRUZkRmNGd05oQWxuaHhEM2FhZDh4YW1WTTVucE5RQUI0eUJ3UVZIVG9nZk5lWjBwRDR3dFQxdjdEQkUvRHVDRVhxbzlnaGgzMnJ3ZGI5NHpaOVZVZlVKUlU4RTdBQVVXTm9qNVo1RjBMSit6NW15QXp1d3BJeDhVTUwyWkpkSEJvSkp4d3VGd0hBV1d0eGlFelBlNDNiWExQUjZQTjFRWnQ3dm1LVEN1QmREemhpT2NsWkdSUFc4Z2RXTkZteDVDZkVpQ2w1cUZvbXNKMTBDOXZWNGh4dTBtY1NjVGZoR2kzaVBMazh2amNqbG5XZHFhZkRCT05jc1Z5VzlGVzBkcHlxb1pVc05yTUw0TWlvdWFGOTF2emx0dnIxZHN3dWNHK0ZxZGVDK0Fhb0IrQmFDRWdFY0o5R2xQTXArdVN1WDVWZWV1R3FXdmk4R1BCQjRJMTVpTnlBeEwrZk9lSjlyZTFyTDNyeW9BZzE4T1NUN1FXeVdEaTdnQ1FPQjhDZ0ZiVzcvNC9PNWVDZ0FBM082YXYyWTZzcDhBOE5OQVdZRU1oQm5xOUFjcDVmSCtibC9ISjh1YUMxOHFTNnQ0VC84bUFuQnQyWnhWS2NVYmx3UjZsNCsyZlA1RElwcHBLbC9ka1dCN3crWU5kbnZTMUZIVEVMSjNPWHdrNUt6U3RNckFpNUVoRTRucE9FSGllZ2JmRUtKSTYvaWtVUzlIVTNkWlN1VnhFSGdWZ1A3SFdWTGNYQmh5TDJYSDF0WmJBVnpSSTZIZnQwdGxpWFBUUXNPTDJ6blhxZHErbnJnRVFDbTZSbHluZVErb2R3Qlk3cy9USWRWYW0vQ3RSRmZvS2pWQktqY0MrRTJvZGt2VEhwd0lkTTczUHpQa2cwNDRwUXJBWUhWRTFCYkYzejFJOEFXbWtkRWZHaG9hb2hyN0N1SkhKRk9QZ1FCMmh5UGJISGk3MzJ6eE5rOVA5UHB0bHpIbTBEZ2NzM1BLcHdCQUxFcVorR2xkZG9KVWZnSGd4aDRCbVhzS1NjVGx6c2I4UTJXcGxidEFPTXJ3OTNRdDljYm9waTU2MUxoUUl3RHFYa0lQbFJ0WW50K1kzeG1wMW50U2Z6Y05oTmNBVE84cHpNdUxteGFGUElUblBPT1IwZkMyTGZOLzV3UjJGVFVYM2h3eWI0UFRCMkJGV1ZxbFFKZVJBTVMzclQ1MTljckZIeXplQ3dET1RRc1BscVpXVmhPaGV4UkNQNjIzMTk4YmFrR0F1UE1ub01EcWFGdVNsSDhFdWl6UFlCQmRtMjVEQXduNmp2NVpJNDU2b2oxcjFxejNBUVMrUkFiR01YREpRSDA2RXR0bkhCaTdEMTJmL2ZqaW1NK3c4OWpQUmdQQTBwYmJuZ1hRYkZJcHB5eWw4amdBS0UrdnZCakJNY2VlS21wYTFMV0NTQlMwMFJuUHBWNDl6SGl3cUxrd2lsVkJtcXFTK2hxQUUzdEV2THk0YVZIWXVHcTJ6bzZMMGVOSTJka3A1QzhqdGRKKzVKNzcwRE1mR3RmdW8wdU4rdElENk43TlpmQzBqN2QrZm9XcENqQ1lRTHJSQnFQRzc1UXBZSmpRQWl4b3lGeEVUeUREcGFCQ0tpR1g5RUxoZERvbEFSRmR0QWVTTDQ1dWZRc0F1cGNUelcvSkJBZ3NBZ0JtQk0xSkJNbHkzV09RZ1ZDa1BaZllzNWZBdDVXMEZDNk1Ndjg4QUNmMVBOS2R2UmtIQUlCN25HWVplT2VPalVzK2k5U0lzOEhwQStONVhUdm42OU9YYlNyWURFYVBsd0JUa0NOcFdmcWFTd0hNOGo5THdzUCtmNnNBRHFCblpRR0NPZUpaZ2NHQ0lYZVJib2pGUWpzQndOK2pLYnRnd1lKak9uMXlNSTM5QzRYNE1mL0RpYk9uMU8zWTBub25kUC94QUc0dVQ2OThrUm1YbU1xK3VMUnBjV0RGaFVuK20wejdpeFMvbGF3UEdhaXdLYkxlUDNUcEJ6c1RwUzlvUWg0RTB6VC8xMDNBT1dWcGxkRzYxZ2RXRTRrUVBCRW5QQVRnUEFCZzRBY3IwOWVlOE11bTJ6N1d0ZnR6djhzUWdkNHViaTVvOUNjSkVBeVRjZ2xNakZLcG1FTWtOdXFmQll0cm9pM3I4L0YxQmdIakhVRjhaaXcrWU8zMEJGWE0wRjhGTWQ4elg2UGdYbVFNTTU2QmVjbVpZWGl6a3RTdjBBVCsrdW5SL3UxOVJZRG1GamNYRWtLN3hVd2hpZlg5TUE3OTcycXlWeWd2T1ZNZTZQM2xTNFk0MElubytpMUc4d2xNQ3hpWVlLNjJYZTU1Q3VBdnV4K0ZEekl3bkNwTHFUeU93SUZoRjdNMExEdXJ6UFFaZ1UvM0N3VDRKQXdSbUhnOU1lNE1QSVB0V1ZsWjk5WFcxamIyVnM1dXQ0OW44SEs5akFoVmtjb05OQk1TYmRWN3ZPMi9objZTYWc0R0Rtb29iaWt3TDVrR3owSEFBN2JBRUE0MXNYT2h6NXR3QVl5eENTWkFvTW9KNTRWT1JIL0NsSUZuQ053T0JJWTA1OWdVMzUrYzA1KzRQTnpwUkNMYXpSeFlHRGdBb004WHdSTDRZN1BNdWNucExVK3JlSUxSTmJRbHhrMXJacXk1cTJCN1FRZUk4Z0ZXdXBYZTFYNXcvRlA2c2lvUnRvSjd6aUV3eU95YkZUZnFhbXJleVhSa042TEg3MGVSVEUvYmMzSXU4VlJYYnc5VnhtNjNqMVhVQkErQXdDNDNBUWNTRXBSK0g0UHRML21OK1ozbDZSVXJ1eWVLSVNHV1FlTnlTZkpURWJ4NVBXWE5qRFZKQmRzTE9nWmFUeiszTjk2K3F5eTFzZ0FFOC8vVitVbHBFd3JSSE82VVlqQUU1dmJtdmJlTVNwdHdCSU82Zk9JWUZ5YU5PMURubk91OHZuc1Z5Z0N6NGNmOWorTG1Rdk5RdE44b1B2VWhuNnJkamk1ZnZhTy9zY2xyblNuT1owSDhFNTNTajVtTlZ4REQ3SHMxZTZDVUdnZ0lZaW1NUHVYSEt4ci93K0hJWHRSMWxxV0x5eTY3TENrek0vc0dSVTFvQk1pd0tjak1kNjlidCs3cndkSlp6NmhENG5FQTRTYWI3eGExTEhyVkxKU0NRN25yaTNZYnZqdWd5b1dndUtXd0hveW56WElDbGE1TXJVanZTMTFPT09XRXhGRS9Zc0lMUGZYdzFiYXZKejdoaERQb0RVRFNzRTkxZnZscGE3OWp6aE95blRNZTZjMTVGUUJ3KzRlM2ZnSndvSDRpOFRPYm1IZ0RlbnBMcVpCNDFGeE9jTENCVE1ySnlURzdQOFFObDZ0cUF3SDNtY1FUR1ZndG1iN01kR1J0elhSa3Q0eWZNT2xyRUR3QXpUTGtKTHh5eEJGakt3ZFBZeVBkYi95UTRaTUl3YjBIQVBnMjdtOEZFT1Fwb01YYTdiMGJtVUEvUi9Ed0pra2pVZHZYazVMNWpmbWRTV08wK1FBMTZNUTVTYWtUMTVyenRoMjk1MDBBZmwvQUJQYkorME1aa3A3eTlEWC9aZk8yZjFtV1Z2bE1XZHJheTNyTlQrS2huZ2UrQUF4bjRJbndrbUhpM28wUVFyWUFNSXd0TzZXOG9EZWxCaHVYcTZhSWdVZENKS25kQnBFQ1lFeHdNcjJ1ZFhxdmYvVFJSeU51YXNXUzlrVGJ3N3BKb3A4UDI1cjMvU2xVL3U2eGZsQ3ZJd1pwTDJUWit3VmZFV2h4Y0FxbjJJN1lIM0ludWplV3ZMMmtyYjBOMXdEOG5sOUdoRnZLMGlydTB1ZHpOamg5VFBRcm5lZzZXOXJFcDM1Nzh1cWdGM2E5dlY0cFQ2LzhFVE92UjlkM2Z4M0E5NXhpUHlXc3o5Mkp5Y2UreElSUC9DcUFvUGRrQ0RrTUZyVzF0WHNBTXF3V2tUU2VVUjhDY0oycjVtY0UraW1BS0laSzNBR2c5SXZXLzF6aThYamk3bHZtYk13L3BCRmR6S0I1Z1kvVXJ1NXQwc3NoSnVweUVQZENpcG9MYWdBOEc1VEFXRkthdnZhaTRCSzk0OXhlc0Y5TjlGMEdnemNBL2Jvc3RkTGdqMWJTVk9BaXhtTTYwWFdLS3Y1VmxsYjVTbGxhNWFyeTFJb1ZwV21WMVR1MnRIN0tqQ2NCK0k4SzdDUFdjbm83d1RuZk0xOGpwc2RDSkgzVTBiUW5wQnVTQ2dBTTNrRFErZnNURHpVREFRQzRYTldQNWVYbFBkWGU3cjBKaEF5QTVzQVlWYVFGVEM4cUN1NnZxYWtaVW5HWmxqY1Z0Z0JvaWJvQTRkOW1Udy9pd2QwTDBYeHlvYUtLQ3dCTTBva0ZzVnkzS21WVmVsOURBTjNlZVB1dTh0UFd6bU9mL0YvNHZYUUpLMHJUSy9lV05CVUdmcmdUa215MzdPNW85L2E0aUNBUlhSdVA4NWdJSWJxSS93aVMxeXh0WHZ4aEpCMkVWQjZUd3ZkcjZIODNqSWZEdmF5Nnd2NXdVQlNUbWZhY25DR3ptcVhueVNlZjNPdDIxOTduZHRXZXBmbThvOERhY1pwUE9WN3plY2U1WFRWcGJuZDE4VkF6am40aGczc1EwT0NlQzFuKzRlSldJaXdKa1RUVlMwclFoRFlhaXQ2LzdYUEJOQS9BNTkwaUlzYkRaYW1WQVVmQi9NYjh6cEtXd29XeXkybXh0Nlg1L1NEY2gwUmJxbjZqdFRlV2JscjRCUlAwanBadDBxZUVkWjFSQWVEUTZNUTNScmQxdEVPM0k2bHF2QURBSGRFMEdpODhIbzhHSU1TbTJ2QkhndGNLa0dHSXcxcXdJMmxibTdMQmxtUjBSeWRGaG5leGtlTDdMRmgvL3d2WTJ4WTJCbHBSVStFZlMrZXNhWUkwQnZZQWRYblU2cGRyVlovNGJhZXFkYzBWRlE0N0ZGN2FVdkRSaXBRSHp0Q0VMN0RyTFFXQ2xxK1hOUmUrQk9DbDBwUlZNNkFvYzRYRVZCQ1Brb3l2UUdMam1EYTgyZGRsNys1Z2YvclZPUGV5TGJlRzFUWFFXMlU2c3VzQXpOZWxmVEk3ZWVhSlZ2aFJpNUZFZVhyRjFjejBuUCtaSlo5ZHNtbFJXQ2ZZd0Z1QkJjeWhSby9mdkczYmtGck5zckE0YlBUT2lveC85R1ljZ001QWRuNzIyWG9BT3cySmtrS05QeTBzaGlYM3BQNXVHZ01CZDNnU0NEcnVheVpnSUEwTkRUNFFHWHNSd2hVWkdUbHpna3BaV0F4RFZGSnVScGVyQ1FEc2FVdXdlU0tWTVV5OFZJRlZNSjZoSUZMWUZEbmN3bUw0NFp6clZBSDZzZitabUI4TEZ6SklqOEZBcXF1cld4bjRveUVINDRhTWpKelRZV0V4akVuYU5mRXE5SnlMWjFJcC9KVVNPb0w4VmhUaUZkQkhCQUVVSW43WTZlemRKOGJDWWloRFBXNzNJT0RQU3o4by9HZHYrZjBFL2VocmEydDNnT2tQcHRyUDJycDErNDNtdkJZV3c0R1Y2U3ZIa01CZUFubTZQMUZIcHcvcDJKV2JtM3VrdDFQYkFoZ2lhM3l0S3BRMlZBTmJXMWpFQWlXVWNPUEdqVzJwcWVsN1FZWUxYVVpMcGpOUFBqbTVhdlBtelJGam5GcFlqQVRDeml0bXo1NzVPSUMzalZLK1FFbEkrbFhJQWhZV0k1QmU0OVhhYzNKbUtCbzN3bmlPV2lQUWxTNVg5ZnJZcW1aaEVYOTZYWm55VkZkdlp3cTZ1MEpoNHFjZERzZTVNZFRMd21KSUVISU9vbWRUYy9QbWxMVDBLUVRvWTgwbUFIUk5XbHJxOHkwdExidGlxSitGUlZ5SmFtOWpWRkxDSWdCdm1zUkhNWW1YTXpKeVo0VXFZMkV4RW9qNnpneTczVDVlcUlrTmhLQlErTHNKOGtxWHkvVjJ5SUlXRnNPWXFIZkhQUjdQUHVsVHJnUUNoOTc5VEFMRXl4a1oyZDhmV05Vc0xPSlBuMjlkeXNqSW5VVkNld1VJQ2lDZ01YRDN5Y2t6NzdFT1dRMGVlWGw1RTd4ZWJ5QWFwcFJTdXQzdW9FczNMZnBIbi8ycjZ1cldiVk1WT2hlZ0psT1NRc0JkVzdmKzh5OURLYTdXU0tlOTNYZStaSHJQL3dFcGY0dGN5aUphK3VXQVdGMWQzU3BJempXRWxlK0dnUXQ5R20vS3lNb3B0QndjTFlZNy9mNEIxOWJXN3RFMDd6d3dQUjRpZVNJeFYyelp1djMxN096c3RNUFF6OElpcmh6V0c5N2o4YlM1M2RVM0ViQUFwb3Q0dXVEek5Ja1BNak96bjdmT2xGZ01Sd1prQ09SeTFWUVQ1Rm42MEpLR05naFhrdUIzTXpPem4zWTRIT2RoZ0s5a3RyQ0lGUU0yUjNDNVhGdG1KODg2aDRDRjNIVnRiM0JiaEI4eXhKdVpqdXp0bVpsWmQyWmtaQXladTBnc0xFSVJremU1dytHWXpCRGw2QnA2UlRCQzNnYWlEUXplSUpqZmNMbGNPM3ZQYjZFbk16UG5haEEvcHhPMXVWMDFFYThEc0lpT21BNTE3RGs1eVlyR0pRQ3kwUjNGTVFwMkE5aEs0QzNNMkVGRUJ3RTZLRW51ZzBiN1dHRnJqMFdIZ0RnWHpQcTc0eTBER1VBR1pTNWdYN0RnQktWVFd3S2liQXloT3hCSEtGKzZYVFdUSTJlemlJYUkzcndEd2VhbXByMHRMYzEvbmpidHV4V2piS00vUUZjTTRCTUhxLzF2RllUbldwcWJuNG0zR2lPRnVLMG01ZVhsVGVqbzhNMlY0SXNFY0RFRHA4UkxseEhFMTJBdDNlMTJmeDQ1cTBVMERKbmwxZ1VMRmh6VG9Xa3BRbEl5RTVLcDY2N0Vvd0dhQVBCWUFHTVI4aFlwQ3dJT01QQ3lJckI0UkZ6OU1JVDRmeTkveWZiT2hkZkJBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiRklET18yXzAiXSwiYWFndWlkIjoiZWIzYjEzMWUtNTlkYy01MzZhLWQxNzYtY2I3MzA2ZGExMGY1In19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDE5LTEwLTI4IiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAxOTA5MjYwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMy42IiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjAuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAxOS0xMC0wMSJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMTktMTAtMjgifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyJiZDc5ZThkZWFmY2ExN2E0NzJlNGMzN2YyYzdjODYxMjY4ZTQ5ZmQ1IiwiYTcyMDk2NzcyMzI2YjFiMjgyYjI4NmMzZTdkNjQwODliZDdhYWFkOSIsIjAwMjgxMjUwYmEzZmNmMzVkOTUxMmUwNjc3MTM1ZWVjNzdhOGZiN2EiLCI4OGM3YzM0YjBjOWNiYmJkYmJkN2Q0YzBkZTQwNGUxNGE3NGI2YzhhIiwiYWE4Y2U2ZmRjZDcyMmY3MDFlZTA2NTdlMThmYTlmMmE2ODVlODFjZCJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyJiZDc5ZThkZWFmY2ExN2E0NzJlNGMzN2YyYzdjODYxMjY4ZTQ5ZmQ1IiwiYTcyMDk2NzcyMzI2YjFiMjgyYjI4NmMzZTdkNjQwODliZDdhYWFkOSIsIjAwMjgxMjUwYmEzZmNmMzVkOTUxMmUwNjc3MTM1ZWVjNzdhOGZiN2EiLCI4OGM3YzM0YjBjOWNiYmJkYmJkN2Q0YzBkZTQwNGUxNGE3NGI2YzhhIiwiYWE4Y2U2ZmRjZDcyMmY3MDFlZTA2NTdlMThmYTlmMmE2ODVlODFjZCJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiWUs0IFNlcmllcyBLZXkgYnkgWXViaWNvIn0sImRlc2NyaXB0aW9uIjoiWUs0IFNlcmllcyBLZXkgYnkgWXViaWNvIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiLCJyZW1vdGVfaGFuZGxlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJREhqQ0NBZ2FnQXdJQkFnSUVHMEJUOXpBTkJna3Foa2lHOXcwQkFRc0ZBREF1TVN3d0tnWURWUVFERXlOWmRXSnBZMjhnVlRKR0lGSnZiM1FnUTBFZ1UyVnlhV0ZzSURRMU56SXdNRFl6TVRBZ0Z3MHhOREE0TURFd01EQXdNREJhR0E4eU1EVXdNRGt3TkRBd01EQXdNRm93TGpFc01Db0dBMVVFQXhNaldYVmlhV052SUZVeVJpQlNiMjkwSUVOQklGTmxjbWxoYkNBME5UY3lNREEyTXpFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUUMvandZdWhCVmxxYWlZV0VNc3JXRmlzZ0orUHRNOTFlU3JwSTRUSzdVNTNtd0NJYXdTREh5OHZVbWs1TjJLQWo5YWJ2VDlOUDVTTVMxaFFpM3VzeG9ZR29uWFFnZk82Wlh5VUE5YStLQWtxZEZuQm5seXVnU2VDT2VwOEVkWkZmc2FSRnRNamt3ejVHY3oyUHk0dklZdkNkTUhQdHdhejBiVnV6bmV1ZUlFejZUblFqRTYzUmR0Mnpid25lYndURzVaeWJlV1N3Ynp5K0JKMzRaSGNVaFBBWTg5eUpRWHVFMEl6TVpGY0VCYlBOUmJXRUNSS2dqcS8vcVQ5bm1ET0ZWbFNSQ3Qyd2lxUFN6bHV3bit2K3N1UUVCc1VqVEdNRWQyNXRLWFhUa05XMjF3SVdieGVTeVVvVFh3THZHUzZ4bHdRU2dOcGsycVhZd2Y4aVhnN1ZXWkFnTUJBQUdqUWpCQU1CMEdBMVVkRGdRV0JCUWdJdnowYk5HSmhqZ3BUb2tzeUtwUDl4djlvREFQQmdOVkhSTUVDREFHQVFIL0FnRUFNQTRHQTFVZER3RUIvd1FFQXdJQkJqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFqdmp1T01EU2ErSlhGQ0x5QktzeWNYdEJWWnNKNFVlM0xiYUVzUFk0TVlOL2hJUTVaTTVwN0VqZmNuTUc0Q3RZa05zZk5IYzBBaEJMZHE0NXJuVDg3cS82TzN2VUV0Tk1hZmJoVTZrdGhYN1krOVhGTjlOcG1ZeHIrZWtWWTV4T3hpOGg5SkRJZ29NUDRWQjF1UzBhdW5MMUlHcXJOb29MOW1tRm5MMmtMVlZlZTYvVlI2QzUrS1NUQ01DV3BwTXVKSVpJSTJ2OW80ZGtvWjhZN1FSalFsTGZZemQzcUd0S2J3N3hhRjFVc0cvNXhVYi9CdHdiMlgyZzRJbnBpQi95dC8zQ3BRWHBpV1gvSzRtQnZVS2lHbjA1WnNxZVkxZ3g0ZzB4TEJxY1U5cHNteVB6SytWc2d3MmplUlE1SmxLRHlxRTBoZWJmQzF0dkZ1MENDckpGY3c9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFmQ0FZQUFBQ0dWcytNQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUhZWUFBQjJHQVYyaUU0RUFBQWJOU1VSQlZGaEhwVmQ3VE5WMUZELzNkNTl3ZVFTSWdTOUFRQVhjRkxBUVppOWZwZVZ6MXRZL1dUWnI1V3hwYzdXNWtuTGE1akkzWjg1c3JTMm5NMnNqdFd3WlM3SVVINEg0eENuRVF4NERBWkY3NFY3dXM4ODV2OS9sSW5CdlZKL0I0UHY5bnUvNW51LzVudk01NTZmekEvUXYwSGIvSXJYM1ZGS1BvNDVjbm00aW5VSVdZd0xGUm1aUVV1d2pGRy9OMWlSSGgxRVowTlJWUnVkcXQxQmQrMm5TS3lTL09oeXMwK2xrM2UvM2tROXF2RDRaVXRhNFZWU1V1WTBlaXB5aVRoQWZvY29PUlZnRHV1dzNxS1JpQWQzcmJjRXRqVGpZSW9mNldhSHNDbXpWUFdDTXgrY2doOHRMcVdNS2FNV3NVakxxbzJSdEpJUTBvT3ptZXJwUXU0ZXNaZ3NPTmtHeEg3ZDBrZHZUVDE3czRPTVU3Vkk4WmhqZ0dhTStBcTlpRU51OFBpZjF1ZHowN013dktXZjhHbFZvQ0VZMDRQQzVXZFRhWFlGYlI4dk52TDUrM0tnZmI1eE5NeWE5UmFtSml5bmFNbEdUVnRGbHI2YmE5dStwcW5FWDR1TXVSUmdqU1lFaHJON3V0RkZlNmxxYWw3TmZrdzVpbUFHSHluUHBiazhWbVkweHN0bnB0bEZDVkNZdHpUdUJOODNRcE1MalR0ZXZkUHpTVW5KN2U4bWtqeFozOWZYYktEZmxkWnFidlUrVFVnR25CVkY2ZlEyaVBIZzRXMTZVV1V3dnpiazE2c01aRStQbjBwdno3SlNldUF5ZXM4bGNwQ21hS3VvL3ArcVdyMlVjd0lBSFdydlAwWUV6aFhBdExBYnNzSGhwN2lHYW12eWlqUDhyeXFyWFVXWDlYb293eHlBdWZOQnJwNDNQT0JGWFpsa2Y4TURSaXFjcHlvd0F3cHV6MngrZld2ei9EdGRlOXNtc3p5Z3RjUjZDMXdiZHpCbDZPbHE1V05ZWTRvR2F0aEpNcmtURXgwakFSU0hBVnMrNXJZa1FOWGIrUWdmUExzUTZnWHlJbnNyZVFmbXBtN1JWRllmTDg2bjFmaVVPa1l2U2hrVVB4dmJ1a3pveTZLMWloTTFobzNYelc2RXZTZlhBK2RwaVdHYVdkK2RvWHpMem1Hd0tZRkxDQXNSQWxQQkFoTWxDRlhVN3RCVVZQcjhIZ1ZjSkhXcStGMDBwbHIrRE1UZHJQNHp2eFkxMWtOTWh4VCtTZVRHZytkNFY1TFFKaXR5VUdKTkI4VkZac2pnWUJaTS9JSS9YQ1RrajBxeURPcEYyQVZRMTdDSWpVcC9EblQxVWtMNUY1Z2RqK3NTMXdnMWdFM2dpZ202MGZDWHpTblBYYnlBUGJJWHYrSURwRTE2VGhhSElTOXNreWhsbU1FNUYzY2ZxQUtocTJDMEU1UEgxZ1lhWGFMUERrWkcwSERKT25LV0hwNTFJMHo1U091eDhlMVdBdVp6ZEhRclRrcDhUbWpYb0krbGEwd0dac3p1YnFiTzNpZlE2QS9XN3ZWU1lzVjNtUjBKS3drS2M0V0hpQmttUjhJM0NDZ0k4N29PTDRxelQ1UCtSVUpCZWpFT2dBUEs4aFlQemF0TStlSVRwMklPOXlUUW1lcm9tUFJ4eDFxeEFjc2lsZS91YlNlRWJjV1FHWUVDZ2hjTFkySHlLam9nakgyNWhNcGpwVXYxT3VnbGk0ZWgyZVJ3ME8zMmJKamt5dUNnTnpnMHZ6bFlNU2lTczB1b280TUc3aE1PakNFYVgxeUZFMG5TdmpCenVUbkVwSzg2WjhJb3FGQUl1Ync4a2c5QXJFYVJFV1NaSStqSDRYYnA2ZzlFOUVuSlQzb2FSekROK01VSkJRREhuNTZhOG9VbUVCdXNPeEJzL041K3RKRWJQa0FGRGo4VUd2T3MvSVd2Y1NnbEdCaHZTNy9GVFlmcFdHWWREWThmUEF4V1NBMzVzVEM0cDQrTG00QWFxSW9QZVF0ZnVmSzZKaDBaaHhsYnNVWE9TbVhOaWZENVpUQWt5RG9mYmJjY2x4bkE4V05BcXhDYlJOeWtoWHhRcGFEdzY3ZlhVWWJzaUcwS2h0djJvZUl2aDhyaFFNWU9jRUFxWEcvZUkrem5nT2M1eXhyOHE4MklBTTFjL0ZMRk9wbHF1NWVGUVhyTVp6R2NWQ2pZYkxXRzVJNEJUMWV1UnJsYnh0Tk90TWl0RERFaExYSUl5bkFBdnVPRVdFM1gzTmRBZnQ5NFZnYUc0MlhJUXQwWlg2UGVDRS9xUUZlOXJLNkh4N1lVNTBLdkg3Zlc0ZlMrcTdLS0JKeHNnZ0JYNXBTQUdoMWpJclZoNXpRNnczUmZhYWhCWG0vYUNiQ1pUakNVRlVUeVdacVc5cDYyTWpKUFhWcU9yUGdNTzROdjc0R2tmK293ZnROVkJEUW5qRkpxSFN3MTdwWHZoV1c1S1pxZS9RNDlOL1VTVENBVldvUVhGSUhCSFhYZTNGUHJVRHN1R0RtdEYvaEhLVEhwZWt4aGlBT1BJK1NKcTZTNkhGNEk5WVd6a0JKVG80NmlVTXpXcDhQaXIvUmlkdUx4S1lzU2tzVjh2TGxPUXZoR1gyWWxSME9CaEJqQyt1L2dFY3ZZMEFwSzdZazQxTnhqUFNRbldGSFRGNjZVcmpnZXZCOEN1NWErbDJ2WVNSUHR1VkRvNzNoaGRNU0huVVg3dFRqc1ZaR3hBbC9XcHRpT0lFUTFnbkwyOW1YNi90UjF0bWxrWWo4VzRYK0NTaldjVURHWTFOcFMvQzdoU0txaU1MTS9sMlFtU1daNzNEZHorZ2lvOEJDRU5ZUFE0NnFua3p3WFVicXZCa3hqVVFzV2ZaRmdidW8zckFmK3dON2pPTzkwK3lueDRQaTNMKzBuWUwxU2NoRFVnQVA0Z1BWLzdJZDFxKzFIU2htdUdrSXFXUlBneXhNRnFQOEhmalRualh3WTViUWZiSmN0Nk9JektnTUhvdEYvSGUxZWdzYXhIU3FHNndmZG1RNXg4TnlURkZxQmNwMmlTb3dIUjN5azUrMzZoRjd2WEFBQUFBRWxGVGtTdVFtQ0MifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMC0wOS0xNiIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWXViaWtleSA0IiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVMkYxMTAwMjAxNzAzMjQwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMi41In1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMC0wOS0xNiJ9LHsiYWFndWlkIjoiM2ZkNDEwZGMtOGFiNy00Yjg2LWExY2ItYzcxNzQ2MjBiMmRjIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiIzZmQ0MTBkYy04YWI3LTRiODYtYTFjYi1jNzE3NDYyMGIyZGMiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiSURFTUlBIFNPTFZPIEZseSA4MCBSMSBGSURPIENhcmQgRHJhZnQifSwiZGVzY3JpcHRpb24iOiJJREVNSUEgU09MVk8gRmx5IDgwIFIxIEZJRE8gQ2FyZCBEcmFmdCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxNjc3NzIxNiwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9LHsibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMzg0cjFfZWNkc2Ffc2hhMzg0X3JhdyIsInNlY3A1MjFyMV9lY2RzYV9zaGE1MTJfcmF3Iiwic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUMzVENDQWo2Z0F3SUJBZ0lGQVAxTURIc3dDZ1lJS29aSXpqMEVBd1F3Z1pFeEN6QUpCZ05WQkFZVEFsVlRNUXN3Q1FZRFZRUUlEQUpXUVRFUE1BMEdBMVVFQnd3R1VtVnpkRzl1TVMwd0t3WURWUVFLRENSSlJFVk5TVUVnU1dSbGJuUnBkSGtnWVc1a0lGTmxZM1Z5YVhSNUlGVlRRU0JNVEVNeE5UQXpCZ05WQkFNTUxFbEVSVTFKUVNCSlpHVnVkR2wwZVNCaGJtUWdVMlZqZFhKcGRIa2dWVk5CSUV4TVF5QlNiMjkwSUVOQk1DQVhEVEkwTURjeU5EQTBORGN6TWxvWUR6SXdOalF3TnpJME1EUTBOek15V2pDQmtURUxNQWtHQTFVRUJoTUNWVk14Q3pBSkJnTlZCQWdNQWxaQk1ROHdEUVlEVlFRSERBWlNaWE4wYjI0eExUQXJCZ05WQkFvTUpFbEVSVTFKUVNCSlpHVnVkR2wwZVNCaGJtUWdVMlZqZFhKcGRIa2dWVk5CSUV4TVF6RTFNRE1HQTFVRUF3d3NTVVJGVFVsQklFbGtaVzUwYVhSNUlHRnVaQ0JUWldOMWNtbDBlU0JWVTBFZ1RFeERJRkp2YjNRZ1EwRXdnWnN3RUFZSEtvWkl6ajBDQVFZRks0RUVBQ01EZ1lZQUJBQk41NDJmdU9pQmNheTR1aGx3UVFTNUlqcEUvRE40Um5JVTl6TDBIV2ZUQ2RyalBUS3EyMTdRdDFBQ0NnT2FvenNqbHB4TzBZek1uTWt3akwyeHZQeWJVQURIbDhLMFdhbUdHMy9uTXVGOHhFNVBxZ2puY1Vad3JJRWowKzgxUnQrdTIzU0liYWZvZlZVZlA2bkMvMVpMdnUzUzk5MTdOaFRrN0xYMFdLcjRKMlNUeTZNOE1Eb3dEQVlEVlIwVEJBVXdBd0VCL3pBTEJnTlZIUThFQkFNQ0FmWXdIUVlEVlIwT0JCWUVGSkZ1SnNGM2RkcGp2dm45SU1IVW9MVDE3c1IyTUFvR0NDcUdTTTQ5QkFNRUE0R01BRENCaUFKQ0FTSjI1TVVTeHA3T0F6MXRxSWVURUl0emY1d2FnOGV4cjFSYThVaWtrdkZCR2ptYmFwQjAxZ3dESmFYZWQ2blAwZ2VlTmcvRElDdFVpU2dCcmFsSzlKUWpBa0lBcSt1WDAvQ1NqUjBPZ0FEaXIvdEwyQmdYWGdNL0tvMVhTS3h3Zk5IUkowZE9DZUY2dHhJcjh2RFBlY2NabHA1MndkdG1Ub0pobit6aFN2VTJqYk8zYXNRPSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFESUFBQUF5Q0FJQUFBQ1JYUi9tQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUZpVUFBQllsQVVsU0pQQUFBQW9yU1VSQlZGaEh6VmhwY0ZQWEdkWHlubVF0WGlYTCswSWFzTUhHT3dZYkVsSktnRWtDQWFZTTAweWJNbWxMS0FOaG44bkNaZ2dwNUEvVWhJNHpoTkRTYVdjS0pHeUZNS0dCTkhIeGdvMXRHYk1iYi9LK3lKWWxXY3VUMUhOMWhWQmtXOUlQWW5MRzR6bnYzaXZkODc3dGZsZDhoOFBCRzRYR2UxMTFsWnJlem1IT1p1ZnpYWU5QRXc0ZXd3cGpFa0t5WnlYRkp5bGNneDd3bG5YODhIZkhEMTAzNmkwU0tTc1FDbjRVVFU1Z1d4dG5IekZhSTFUUzlUdCt2bVJscm12Q2lTZXlCclhESythVUdIVFc0RkF4Qk5IQkNZRE5aaC9zTnlaUGlUajUzelU4bnBBT3VtUjF0dmN2U2k5V3hRVER0blJpZ21FMmNVYWp1YlI1R3lNVTQ1SEtzczlPM2krVGlZWE14QmxwTkN4bVRoYk1ucit4RVp6bytHRHRhU0h3VERVQklqSFQyMlU0ZnZnYU9OOWdNTXhPL0RncU5vVC80NFYzd0xEYkhickJrYksyRHdRWFQ2bGw4cUNmZ2laQUlPRGI3YnpLNys4THA4UXM3R3pUUFhNUFBvSERFYTZTQ2pvMXVzRExBWXlNZk1ZZnpWLzg5M3gwTHdEb28rT0g2d01CeEhScGhnUldDeGVnQTdFbGtnVVZWaXhtZUh5U3dwelZMZ0FRQWM1SExCQUt5YVBEd1NkUzdBNUVNWjZ4eERUQ0JhZ01YMld4WUJkZVFLTHdwVDJkdXJQbDZ5L1hiNzVRdldGNGNNUnFzVDJYb3J5czNvUVJoVXFHa20wWU5tL1pzeENQWDkvYXJPMHpjSnc5UGpuOHNub3oxaXg5SThlZ043dSt5eC80ZUJFWDlRZlRpUFcxbFJtaEVSTHdOVXRQaUlNWW1HcDZYanlkZlhTdkYzWmlSY0p2djdwRFI4SVVVcUdRWDFuYVZQYk5Renh1TEpwdjQ0ZzU2YXhmQ0FKWkNGUDE5eGlMaXBlQk56L3NxeWg5SkE1aXJWWXVMVE1PSTIyUCtxMVdHMS9BWjFoQlExMkg4eE84eWRPaVlLMEloYXhvNDNrNjhzZDNYOUxyVEpUN2d6MGdhK0hrL3UyNkFvR1F1SHY3MjJjVWtUS1FFWU0xdHpBWlJGMmxFWWtZRUJpc28yVUlCRWpQam9OV0pQamdnUEdyTCtveDhwdTFoZmk4T3h0OHdjRkRiUGtCaVhRTHQzWGZJdkRxMHBZNzlSMnNpTUdnUERnb1ZFRjhXbjI5RmU0RFFiUWl6aC9lN2diUG1aV000QU1KQ1pmczMzWUpCTmg1YU1uZ3dBamx2dUhmaWJEODZzMHZVYjVueTdrSUpURVZ4OWxTTTZMcDRPMmI3ZXpqQXg1bVU5L1FnR1RPVElBNVFXQkNLMmY3UjBrWitJSmw2UXFsSE00bFMzM0NqeFB0Tmp1Kzk2M05jOEN2bkd2b2F0UFJGb096MkxObUpqaVg4TzdXZHdsWjEvZkFiRFVWclNBU0dhdFV5ZkJ4OE9EUW9FLzJYWFhPODNZWHY0NGtwZHdIL01nYUdqUnQreE54SDdCbnc0VXdaeVlDY0N0Tnc1WUhBNHpvU1pXQjJXckxpU3hnYW1Zc05ReEtGN0xoNEk0cjRQbHpKMDFKaTZMKzlRRmZzbEFTWlRMUjRwVlo0Q2MvcjBUMXB1Y0IvTTVaYkhBVGVFMUZVNUNFSmF1ZFFJeTNOZzFRbnBtZjRONWVKaGVmT0ZKS2VkSGhwZjA5dzVTUEIxK3l0SDNHUFVkSVVRQU83YjRDWDFCT3luY1FFeG9tQmIrajdvSWw2RGdGcHU0M2RJRk16NHVEVWVrZ3NpRlVJZDIxL2l6NDVMU28zTUpKT0REbzFKZ1lWeGJTTzNteVl2Yjg1OEUvK2ZBYjJBbStvRk0yenBhU0ZrTjVUWG1MTzk0cFVHbnJiclNCWk9Rbm9PUzZ6eHdZOWNJL2F3ZTZTV0R0UDdvY2hjUEhjVFN1cklGZWZkR2ZsMUorNHNoMWVURHBaU21zMWlmeGprS0ZuS0NjQWlyVmxVU1dSQ0xDbjN0ckdDeE1LZDIxZ1JoTUdSMHk3N1ZwYUpUcDFHaU1MUXNXeGxWcFdrNHMrSjUzemlPdDhLVjBDc0JzVm40aVNQT0RQcFBKaXZwT3h5bmcwOXMxblpSbjVzRmdUNkliSi9mMXF3OWJHdnZCOS8xbEdXNFc0eGxzREZsWWlWcDE0TE5mZ3ZmMTZFK2ZxSkpJUlhRS2NQQWNOcXM5NzRVazhPclNaczk0cDREeE5DMWFXaHF5Q3hJUkRIUWN3THVGSzJUYlZwMEVSd2orWWVzTHVKRFJLUytNYVMwSFBxK01DZ2JyYU5IU3pvVk9FRGg0ZkFGNWIxQ0QzZ0krR3VnbTBNbUF5RVBGWHZiQUNZWjJpdkw0NUFna08rVmVHT05iSVNKSXl1NVlld1k4WTBaQy9weEpabytzb1JMVmxhU1U1eFltbVl6ZThZRnpLVG8rUkNvbkJxNHFiZlpLQ0dUMy9xUEVEOEJIV3kraWNGRHVoYkZqQzY3NTk3OXFCM3BKMW53MEttdkVFcmJxZjgwZ2FibHg2RjY4N0lIc1F3bWd2TGFpemZQaUNZZE9TbEVXT3JPN3VPZy9ySmcwalhUS0MyUExJa0dnbE8xY1J3d0dieTVZa2thZFFvR2RibFczVTY2S0NiSFpmaUFMZStjVWtNaURYTzJBM25OanZPZnVnNitEb0pQOWUwa1picVowZkRUR2xnVWdlc3F1TmlMWHdGR1gwWTY2cmNLeUF2Vk40a1FnTXovT005Y0FxNWxMenlYblVrTk51NUFSdXVNUytadGI0TXJ1dlpzdVNtVWlyeFQyeExpeXFNSGUrLzFwY0xHRWVXUE5US1BCNHA1Q3FxSU5CRS9OOEphRjVNcWVTY3BIWFVXYnlObndBSGlsL2g0OTRnSGNvRE9mL3VzTkZCMDZOU2JHbFFXZ0hiaC9wN3Vtb2dWOHk5NUZ3MW9UTlJoa01Zd0FjUU9PcVBlc2lxZ0xTaFZKWVFBZER1M0RBS3laOThyVXlLZ1E4QjNyemlpajVMN3ZFTDVrQVJHUnNxTDE1eWpmc0hPK2JzalY5Y0xGTkx4U00ySThreEdCbFQzTGRRRGNxbW1uOFk2WHdWMzV3eEp5dkdxYXROY3UzcVgxeFFmOHlHSVlZVWZiME5kZk5vQ3YyamhIeEFwcHBXSFFWejF1WUhCMG9sQlJqbk1KTllYeWp0WkJlaTZOR0N3cjNwb2hkZGFDOTkvK0lrSWxjd2ZjZVBBakM4QWQ1c0IyVjlmN3pzNlhkWVBFWUhEaTNWclhiU0k5S3c3OUorVVdFNWZ0UEM1cnl6V2lJSmVwVUhYZjNmOEtPSktnb2E1ZHhQb3hGZUJmRnQ3WU9HdzVkYXdLZlBtYk9hR2hFdGdHZ3ozZHcxWXpVWk16TzVFU0tBQlNzMGl1MWQxb0ZZbEpVT3QxNXRWYjU0SUFTQ0RjaFFLNW1QcVhCWVNFU1Q1KzMyV3dYWWNYYXdkSW1jVkpjTE9NK0hGNlhnTHRxK3cyaHpKYVRzdTZ1cW9WZFFRVkgwbXdlaHVSOWUybHUxMGRycDdiTHdLU2haSUlFU1VIeUM5UGhmTW14OGFGb3lnZ2JOWFZKQmxUcGtkakFlemt2SGU0K3JCN3Q3b1JsMFBha1UyN0Y5S1JBKzlkQ29zZ25XTWdDRWdXZ01QcjJNSHZLZi8wN0p0d0RYWnRxSEVWMWRqRU1KZ0thZmppTDFMb1NFK0hEclVrTGpGc3hlL3k4UGpsMzZxMS9jYkFmeGZpLzNwaFNiZEc3OVhLalFrMDVncVZQRG8yQk5XMXZyb2REZ0xTU0NUeG14LzJHZzFXSkduU3p4Um9HRkZSRysvMlFJUXFKaGhuRi9LdXZrcUR4L0ZPUUU5WXpMWVpMOGJ6VjcxNnRMMXBLTUQzZ0p0Z0ZSRFVTV3dHV2ZRU2dZaWhXOEs1a0lzcFdrZ2hsTllPOXdLL3dCbFZNQzlKb0l5U2VaMjFQZ0RISWFUd1J3c1AvdE5IOTViWUhvL3U0ZzRuZUMzd0M3eTJJa29tbUpvVjVkbEFQblBnbUVyTGpSWE1YNXhxR0RiREhhN2had3Fhem5NWFRoRWtKc2RtellwR29MbG1uaW1NZXV1cnYwb1ZzeklTdGhwTng5Szh6NVNSY2g4TjBBU0EzQUJNbHNzTjY2UkJ3U2pFOXZqNDJMMmZMdWhxSDBZU3VaWk1PSkN6ZlQyRzRsUExvQWt5VUJmNHlPcEZTL0wzSFZ1ZzB4b1JjUk1jWjlodXhHQTFteXdsRjVablpLVkFEQjlYTDV4WktEVzRGMkMrc2JHbHVPaWF1cndQRjNiY1F1SFR4MDU5dXM0bHI0MTNoMVZROW15Y3JXQkIzUHJ0ODFXUmtRS0d6d2pKVDlQT1g2cDVEanRuUjlSamtkbGlibnlncWZ5dXFmbUJWajlraHIrZHBudXE5bk1XUFpUQWtIRHg4MU9WTStjK2w1QVl3NHBZZE5pc21NRlZpc2ZqL3gveHFPY1BSZFN2YXdBQUFBQkpSVTVFcmtKZ2dnPT0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiIzZmQ0MTBkYzhhYjc0Yjg2YTFjYmM3MTc0NjIwYjJkYyIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOnRydWUsInVwIjp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwiZXAiOnRydWUsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImFsd2F5c1V2Ijp0cnVlfSwibWF4TXNnU2l6ZSI6MTI1MCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0IjoxNiwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoyMDgsInRyYW5zcG9ydHMiOlsibmZjIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN30seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTM1fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotMzZ9XSwibWluUElOTGVuZ3RoIjo0LCJmaXJtd2FyZVZlcnNpb24iOjE2Nzc3MjE2LCJyZW1haW5pbmdEaXNjb3ZlcmFibGVDcmVkZW50aWFscyI6NTF9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiTk9UX0ZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDQtMjIifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTA0LTIyIn0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiMGE0MjZlZTE3YWZkMTY1MzNiMWNkZmE5NWRlMWU5MjBhNmFlZGYzYSJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyIwYTQyNmVlMTdhZmQxNjUzM2IxY2RmYTk1ZGUxZTkyMGE2YWVkZjNhIl0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJWaXZvS2V5IEFwZXggVTJGIn0sImRlc2NyaXB0aW9uIjoiVml2b0tleSBBcGV4IFUyRiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNOekNDQWIyZ0F3SUJBZ0lVYzhjUkVzWThrK3R1L0FsNWFmWUVZUjBuQzVjd0NnWUlLb1pJemowRUF3SXdhVEVMTUFrR0ExVUVCaE1DVlZNeEVEQU9CZ05WQkFvTUIxWnBkbTlMWlhreElqQWdCZ05WQkFzTUdVRjFkR2hsYm5ScFkyRjBiM0lnUVhSMFpYTjBZWFJwYjI0eEpEQWlCZ05WQkFNTUcxWnBkbTlMWlhrZ1FYUjBaWE4wWVhScGIyNGdVbTl2ZENCRFFUQWVGdzB5TWpBNE1UQXhOelF3TURsYUZ3MHpNakE0TURreE56UXdNRGxhTUdreEN6QUpCZ05WQkFZVEFsVlRNUkF3RGdZRFZRUUtEQWRXYVhadlMyVjVNU0l3SUFZRFZRUUxEQmxCZFhSb1pXNTBhV05oZEc5eUlFRjBkR1Z6ZEdGMGFXOXVNU1F3SWdZRFZRUUREQnRXYVhadlMyVjVJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdRMEV3ZGpBUUJnY3Foa2pPUFFJQkJnVXJnUVFBSWdOaUFBVGtqMDRvNWc1cWQ5SmIvb200YkQ0bHhXd2NscFNrUm1Gcy9sSk5XUklrVytrb3Q2Ni93Ukh1MlN1LzFCVEplZ1NFalBOMlUwVityMnFKK3hWY3VYam96dlNLcHRzMmFpMzF0QnV0bnFZWG92Mlg0Vk0wRzE0R0ZJaUhEam1xVXF1akpqQWtNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnRUdNQW9HQ0NxR1NNNDlCQU1DQTJnQU1HVUNNRTFUb25xRVp5czdTd1RNUGNxaTN2N2lKM2hrbHpua1ozenpWd1BJdDI2MFFPZHVUZXlaWi9oMndEVkR0dGZYbUFJeEFKVFVHeS9PdlNHZXR4Vytna0NyeC9RQlNQa0kwYlRVRVhua3c5bDMzVGlHb3c2VUxaKzUwUSs5Ni9jR2hLYmtwUT09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWdDQVlBQUFCemVucjBBQUFNT25wVVdIUlNZWGNnY0hKdlptbHNaU0IwZVhCbElHVjRhV1lBQUhqYXBaaHJjaU01RG9ULzh4UjdCQklrK0RnT254Rjdnem4rZnFESzZyYmJIVE85WTltcVVsV0pCSkdKUk5KdS8vWGY0LzdEVDVTUVhOSlNjOHZaODVOYWF0STVxZjcxMCs5NzhPbSszeDk1YnZINTAzWDN2aUZjaWh6ajYyUE56L01mMThON2dOZWhjNlkvRFZUbmMyTjh2dEhTTTM3OU10QXpjN1NJN0h3OUE3Vm5vQ2l2RytFWm9MK1c1WE9yNWVjbGpQMDZybytWMU5lZnM3ZFVQNGY5eStkQzlwWXlUeFRaTVVUUGU0eFBBTkgreE1YT1NlWGRibnQ3NXp4R3ZkYy9CaU1oMytYcC9kT0k2RmlvNmR1SFBxSHlQZ3ZmWDNkZjBVcnlQQksvSkRtL2o5OWVkMEcvM0lqdmVlVG5tVk45enVUejlYajhlRVgwSmZ2MmQ4NnE1NjZaVmZTVVNYVitGdlhPbXAzd0hJTWttN282UXN1KzhLY01VZTZyOGFxd2VrS0Y1U2N6RHM1YkVKQTRJWVVWZWpoaDMrTU1reENUYkNlRkU1RXA4VjZzc1VpVEdRMi9aSzl3cE1RV0Y4aEtuQmYyRk9VZFM3alROai9kbmEweTh3bzhLb0hCZ3ZIaVQxL3VUNzl3anBWQ0NMNitjMFZjSXBac3dqRGs3SjNIUUNTY0o2bDZFL3p4K3ZwanVFWVFWTXV5bFVnanNlTTF4TkR3UXduaUJUcnlvSEo4MVdBbzZ4bUFGREcxRWt5SUlBQnFJV3JJd1JlUkVnS0pyQURVQ1YxaWtnRUNRVlVXUVVxS01ZTk5GWnVhcjVSd0h4VVZManV1STJZZ29USEhBall0ZHNCS1NlRlBTUlVPZFkyYVZEVnIwYXBOZTQ0NVpjMDVsMnlpMkVzc3lSVXR1WlJTU3l1OXhwcXExbHhMcmJYVjNxUkZSRk5iYnFYVjFscnZ6TmtadWZQdHpnTzlEeGx4cEtGdTVGRkdIVzMwQ1gxbW1qcnpMTFBPTnZ1U0ZSZjZzZklxcTY2MitnNGJLdTIwZGVkZGR0MXQ5d1BWVG5RbkhUMzVsRk5QTy8yTjJnUHJMNjgvUUMwOHFNbEZ5aDRzYjlTNFdzckhFTUhrUkEwekFCT1hBb2dYZ3dCQ2kySG1hMGhKRERuRHpEY3huUk9DVk1Oc0JVTU1CTk1Pb2lkOFlPZmtoYWdoOTY5d2N5Vjl3azMrWCtTY1FmZUh5UDJLMjNlb0xXdEQ4eUwycWtKTHF1bWc1NWt1dFZ1amt3WXFxOFNseERwYjNyUFFzdFBzMjFNTWUyU3ljaFlCclRKS0lwQTk0aDZ6NTBaYWlQV3dNZ0krTGV5NmxJc3phK0JPMTd4ZHoza1BQVDBzb2FiNnJDeS8wOExDbktPcGJ2SmhXUUNTSXJHdjBRZkxCTUFvdlczbTliMXN0RmhkSFR3OUFLWlZCRk9Wazd5clRyNCtoRnl1MHhLNXlKR0psKytrWitSTW9TS2dsYVdVM0hRVW5kc3QxYjV6Q2FPdFRJaE0yb0d4c3NLanhYNWgwZW16c0J5V1N4WWpnKzgrMTRvTXdHZ3JqWk5pZHhNYys0SVNJOFRzbjJ6Nm5wV3BZeWF4aStsVVE5OVRSaUkvYVk0U0o4dXRxL1N5b0wwdWFzTTFLTGdoSENUUUdMZU4wOGwzc2hFYjMvSXNNZmVSK2hnc0xMZWxoMXoxdG9BOHp0TkhrUUdqcHV0OW5yWjVBaFFET013bjVhdUhkT2Fjd2tKbkJacDJMQmw4TWNkUVo5N1pMNlBnc0t2d3pYVWRQZEFFRzhnMTZMRThsVEpnMlN4Ykl2UktQTXRJRkl1V2xIS1kxQVBwWndvTmpKU0poRnJJanZxd1R3TlFOa2hUbmN0dkVwNDZURTZaRFBXdHdpUEQ1N3BybXF2ZlJNSVMzMmN5UWt5cXBibzBxZXQrVW9Qb2VnRmVqVDVJRHFPVlExbG9OdHBkN1JrYmsyamhhZHE3dEx3eWRjTVhTcHNMcVYwRVF0RVVnVU02UnliVnRRTkE2ank1YWJPN2hWdHFUUmJsclJOUjhZVVVndEdrMU1iY01yTGJvMG8zTGk4Z3BUNHBaM1JqZ3o4aVpha0czVUZaUlE1S25La01LNUNvOEw2UFFFNHFBaXpkNVVCaUlua2hWNXd1VWxxTW1Nd1ZSMVY2elFKenYxWU5NcHBuS2NHNENtdG5BVjhsbjJGUmxmQkkxbEY3aU1DVU1seTNBbGdYQ3pIU1FmSXkvSXJVSzhSdXhCSVNwZG9DblZLcjBZLzN0QnhLSHl2bmFCbzZkWkkyUUpJRWtmT29uWWxUckdzdVJIaUVreEx5eE5CYUtJYkNVeEV5bUZiTzZRcUNYNk51VXNodlNaUGFSQXZtVWdHVzN1YlFOTUNMbktVd0Q0WEUwR2dQUGp5WVltUVkzTURHd1hCa2IwSjI2RDFRY2M1cVM0WW9VckZSSmQ4Ti9LNEpCbFZLa0lDcFZ1U1VGbUlCbXBoTGM0bzBRM2c0ZVZLZ2dCc3JBblBFNEhnbzBZaVN4ZExSNTRBWFdZVDZZNzFxZWVxMGoyQVpSQzdjVGFVbUdDdU5pYWcvNHkwcjZLYWEyUXFXTC9kQVFWTnBDQUJDajdqNU9PZXlFbnhwYng3VUdqV2QyNTJhMlNpeHNWYzJ0RG9wcmErVTVqakk5cmExR3Jxb1BCeEg0Y0FpMGlOWXQ3Z0J6Mkp0ZlE4ckg5cVEwU292TDhhdVF4WVdlblc4VlZDMWlvRmZxWkx6VGFtZHRqYmZ6OUJ0dUVCeklaUmwwblVRWjFvZzd6dVp6TkJ4V095ZTFJSmhnTlpBQzRETjVwUFF5Z1dyU2FhbGc0MGZYWlV1YVBWczZtTnlKbGNYTi9LeDZhcTBMZlRHVW5nWTlhV2hMSlFVV2grQWFnc2l6SVNNUUpjeTRzb0pKQlBFaUsxRHJyYmpGYTVqTEZzZWhwREtma1dJMzlrQzl4akg5azFvYUYwdXNseG9UdzhvRlJnN3RXYitnQzZBcFNidWhrRHlkdWpqaGRhaXRXRXR0cEVVL0pOMUV0U0RkYnVzUHQ0dWlFS0JCRzJ0NXBQSWNhR1VXQitsd1ZlaXQvUUlhN3M1cUQrNkJGcWFrU1NLTnBZTTdKbjA2cHJLQW5OZldTWmlXT2svdGhLaVowd2tkZUY2SUJEZHFGdkI2QlpUTTE4UHV3WTNVQXAwSHdSWXFiYzRRWW1sRU1HcDlhQTBwa3hrS3VpZ3JjeTlQUS9EYWlDZ25aSTdYTTJNMlJFV3NvSis0czNLc0V5UkZkTkdOQnR4VHhFMVIxZm5JTU5VRVNqWklwR0xUUTEyNjZjTWlVZDJONi9XUUxsOVpKQTJ4QjFCRFh2cXpZVGVOcGVzT1FBalR3RVB0Q1B2U0NIa1J0QnNuK3ZFb21BYVJHU1pETUhPRVV4Y3k5VkFPd1NzZXpWaGZDVXNYd0t3czhkZWt5WWs2TUEyQjFkV1NMZGhZSGZxd3VwQUVSeEhNWGRDVHFuQlNBN045K3lEbUp1Tk1McldyU2F5akcvdGF0TDdCMXlqRTdBazloWFlDV0JCbzd6UlA2cWF4R0pkc2lDTGdRaklPNEZTSkxSUjlwbW9xblh4R0oxUzZTSERaQ3lGWnRRRjNiWGtZUm1vQ1hxVDhoZ1ZpQ1lFcEJ0WTVxME04eFNBbEVhclJ4WUtpWkFsZnJjNUVoYVI0U3JsS3pKS3R6QUgyWWs0UFpFYkg1ZUJzMkdaUnpmQnNINlVyUWtYUjdPN0xHMXNsWjRrRXNRa3RPNFhUTzVwVC9KWTBMVms0bkFUaEZPQUhGWi9RbHVlZkN5NEVWYVRNSUY0eVIySzdLQXlDeXkybktQOG1BOE44eHJKaWJSakJmQ3dWaE5qV29QTUdXR3phbkhtZ2dUWXJBcXhzYlkxc3hPYU5DcUptaFFhWmVpUmR3YnYwN3dCeXB2dnpnRFlVQm9NSlhyczBEdUF4MGVaZjZkQUtMU0tOMWl6SWtqZGhIaFp3NFF1TmRHNVhoUFJ5dVpISXA0akRkTGtZTHdJUmdQRklRQXU3YXFGT3JJaFRqZmRhMTNnd2FVVWxHQkYyMmVjakV5U1lxcXVxOE5uZWF5SW1xNVBETXZHdGw5WlJURU9UcXhTUDNoSmJMeDlBbU84Q2JZdFZUN1hleGRkQ0oySVR1TWU5eUdYdEJyUWQ5M05kaDgwZC9ZOW0rMkRXQTliMkx5SUVhTVRsM0tkV2xzM0I5d2ZZYmhvaWpsZlV1SHByaExlR3ZRNUNlK2p1YXVHbUtLdjF1LzdsZWZvR20yMlNManVwMksrMEN0S25LMGNYUlJPc2hzNjVrN3hZS0g1clpUQU5KR2xWK2RpR2hDQytZSWxsRWl4TW9BdWtxYzVieXZNSTNSd1JJRXUwdGJ3a2JSZ01BZTdBVHdWSTlFSWtFdjZJTmxjV081Vkc1dWF6SVZGN2FvSkZpMk9JcVFabTdYRmpTMDR5WTZ4RDA5QlVNdkJ0aUNWTHlRemZjbTJjL24yZDNkRnZOdS9DWDl6dEgyQkdWbkVHaWRhRFNlZkFaZ0d1c0h4WE1NL3M4TzhVTFRFT2Fad1pLTm9XMDRDcVBjaDdENCtEaU9DOHVFa094dkNLbytsaFBsMjhMSG1IcHdsR1VrcUxiMk9rUVQwU3VzRUVrcHozWVA5QndTeTJLNUxMek9SUDNvVVNYNU1LZUlQSDJFZm5LS2dycG5JckloU0dPWkkyVUtSS2NRVTIyRWUyYStzYk53SUxDSk8rK1hjL2ZDdm9yVTI5OUh1dmovUzZUZTdyREd2YjBQOEJlcEJaTklFUU5XRWE3dEJ6cWtIaXdXYkI1UVFGemZBQnBGUDdEM3BPSGdUcW1uYWhvdzJSUkZPYW8vdnl0WHUyZS9SWVp6WXZFKy9TVFd3N3IzdGdJME1rSTljN3BmMVk2Tk5BKzIzQi9TN21jM0IyZytWeEo2eHJzNHVtMFpwdmpoaXU5Z2RDenNTbzhyMUx1WHZGdjNqNkQ1ZmlPR0pkV3h6VUV0dzhvRStIZGswZWd6aTNUQmtzWHhRSzVFcWcrbHdzb2xESDBzSjEwNloyTmx4UWhQQU5KYmdoMjZucE1kaFlYcTlib1MyTFY1dFoxdU42K2JYMkIwSlFEWWFRWG5NYlBtbyt2alBsMlZIOS9NRis0ZUhyUS9WUFpUR3dWbEJNWFlHZEJMY0pKdjRReVFnd2hvcHhOZTJqYmd4dmZESXF0d2M2NjMyUk1rMmY4bEFkb2I5ajRKZGhMZEYyZGNvMENXMi9WMzFyb1NtcGVIdXlpWlNHMm5WVDIvejgyOXIrSGRIOS9WQ3M2NXI2N01TeDJZdStJT2NwNC9sMFNHZ2xscG5udXo2TVpkb2svanF0cmtzMjlGWUY4V2VUTHBoSVVJR01QY050YlUrcytUZmlhOGQzYzhYeWpsbjJmL3Yvd2RPT1pIMThWYVdBUUFBQVlWcFEwTlFTVU5ESUhCeWIyWnBiR1VBQUhpY2ZaRTlTTU5BSE1WZlc2V2xWRVRzSU1VaFFuV3lJQ3JpS0ZVc2dvWFNWbWpWd2VUU0wyalNrS1M0T0FxdUJRYy9GcXNPTHM2Nk9yZ0tndUFIaUtPVGs2S0xsUGkvcE5BaXhvUGpmcnk3OTdoN0IzaWJWYVlZUFJPQW9wcDZPaEVYY3ZsVndmK0tBSUlZd0FnaUlqTzBaR1l4QzlmeGRROFBYKzlpUE12OTNKK2pUeTRZRFBBSXhITk0wMDNpRGVLWlRWUGp2RThjWm1WUkpqNG5IdGZwZ3NTUFhKY2NmdU5jc3RuTE04TjZOajFQSENZV1NsMHNkVEVyNndyeE5IRlVWbFRLOStZY2xqbHZjVmFxZGRhK0ozOWhxS0N1WkxoT2N4Z0pMQ0dKRkFSSXFLT0NLa3pFYUZWSk1aQ20vYmlMUDJMN1UrU1N5RlVCSThjQ2FsQWcybjd3UC9qZHJWR2NtblNTUW5HZzk4V3lQa1lCL3k3UWFsalc5N0ZsdFU0QTN6TndwWGI4dFNZdyswbDZvNk5GajREK2JlRGl1cU5KZThEbERqRDBwSW02YUVzK210NWlFWGcvbzIvS0E0TzNRSERONmEyOWo5TUhJRXRkTGQ4QUI0ZkFXSW15MTEzZUhlanU3ZDh6N2Y1K0FIb21jcXA3SGppQkFBQU5HR2xVV0hSWVRVdzZZMjl0TG1Ga2IySmxMbmh0Y0FBQUFBQUFQRDk0Y0dGamEyVjBJR0psWjJsdVBTTHZ1NzhpSUdsa1BTSlhOVTB3VFhCRFpXaHBTSHB5WlZONlRsUmplbXRqT1dRaVB6NEtQSGc2ZUcxd2JXVjBZU0I0Yld4dWN6cDRQU0poWkc5aVpUcHVjenB0WlhSaEx5SWdlRHA0YlhCMGF6MGlXRTFRSUVOdmNtVWdOQzQwTGpBdFJYaHBkaklpUGdvZ1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNEtJQ0E4Y21SbU9rUmxjMk55YVhCMGFXOXVJSEprWmpwaFltOTFkRDBpSWdvZ0lDQWdlRzFzYm5NNmVHMXdUVTA5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5dGJTOGlDaUFnSUNCNGJXeHVjenB6ZEVWMmREMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzk0WVhBdk1TNHdMM05VZVhCbEwxSmxjMjkxY21ObFJYWmxiblFqSWdvZ0lDQWdlRzFzYm5NNlpHTTlJbWgwZEhBNkx5OXdkWEpzTG05eVp5OWtZeTlsYkdWdFpXNTBjeTh4TGpFdklnb2dJQ0FnZUcxc2JuTTZSMGxOVUQwaWFIUjBjRG92TDNkM2R5NW5hVzF3TG05eVp5OTRiWEF2SWdvZ0lDQWdlRzFzYm5NNmRHbG1aajBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5MGFXWm1MekV1TUM4aUNpQWdJQ0I0Yld4dWN6cDRiWEE5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM4aUNpQWdJSGh0Y0UxTk9rUnZZM1Z0Wlc1MFNVUTlJbWRwYlhBNlpHOWphV1E2WjJsdGNEbzJPV0V4WW1Nd05TMDBNMkprTFRSaE1qUXRPVFEzTUMwMU5HTTRZVEkzWXpjeFltTWlDaUFnSUhodGNFMU5Pa2x1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2TURKbVpHSmxabVl0TVRKbE9TMDBNems0TFRoa01EUXRNRFUwTXpFeFlXWmxZakUySWdvZ0lDQjRiWEJOVFRwUGNtbG5hVzVoYkVSdlkzVnRaVzUwU1VROUluaHRjQzVrYVdRNlpHTmpOamt5WXpjdFlqSmlOUzAwTldGbExXRm1PR1F0WmpBeVpXVXdZVEk1WkRVMUlnb2dJQ0JrWXpwR2IzSnRZWFE5SW1sdFlXZGxMM0J1WnlJS0lDQWdSMGxOVURwQlVFazlJakl1TUNJS0lDQWdSMGxOVURwUWJHRjBabTl5YlQwaVYybHVaRzkzY3lJS0lDQWdSMGxOVURwVWFXMWxVM1JoYlhBOUlqRTJOakF4TlRJNU1ERXdNelUzT0RBaUNpQWdJRWRKVFZBNlZtVnljMmx2YmowaU1pNHhNQzR6TUNJS0lDQWdkR2xtWmpwUGNtbGxiblJoZEdsdmJqMGlNU0lLSUNBZ2VHMXdPa055WldGMGIzSlViMjlzUFNKSFNVMVFJREl1TVRBaVBnb2dJQ0E4ZUcxd1RVMDZTR2x6ZEc5eWVUNEtJQ0FnSUR4eVpHWTZVMlZ4UGdvZ0lDQWdJRHh5WkdZNmJHa0tJQ0FnSUNBZ2MzUkZkblE2WVdOMGFXOXVQU0p6WVhabFpDSUtJQ0FnSUNBZ2MzUkZkblE2WTJoaGJtZGxaRDBpTHlJS0lDQWdJQ0FnYzNSRmRuUTZhVzV6ZEdGdVkyVkpSRDBpZUcxd0xtbHBaRHBoWWpsallUUmtOQzB4TURRM0xUUmpaR1F0T0RBeU5pMDBPVEkxWWpZNU9ETmpZbU1pQ2lBZ0lDQWdJSE4wUlhaME9uTnZablIzWVhKbFFXZGxiblE5SWtkcGJYQWdNaTR4TUNBb1YybHVaRzkzY3lraUNpQWdJQ0FnSUhOMFJYWjBPbmRvWlc0OUlqSXdNakl0TURndE1UQlVNVEE2TXpVNk1ERWlMejRLSUNBZ0lEd3ZjbVJtT2xObGNUNEtJQ0FnUEM5NGJYQk5UVHBJYVhOMGIzSjVQZ29nSUR3dmNtUm1Pa1JsYzJOeWFYQjBhVzl1UGdvZ1BDOXlaR1k2VWtSR1BnbzhMM2c2ZUcxd2JXVjBZVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBbzhQM2h3WVdOclpYUWdaVzVrUFNKM0lqOCs2SE10TndBQUFBWmlTMGRFQVA4QUFBQkJNdndOOVFBQUFBbHdTRmx6QUFBTEV3QUFDeE1CQUpxY0dBQUFBQWQwU1UxRkIrWUlDaEVqQVBCSlI3d0FBQWtEU1VSQlZGakRyWlo3YkZQM0ZjYy85MkhIZHB6NEZjZHhERW5JQzVLUThBeVFVSkpRQ3BRV05saGJ0STJxYTlWdTA5Uk9rL2JmMUQvMlI2ZjlXMDFiSjIzYTFrbnRpbWdSN1doWFNpbWxrSklHU0VsREFpSGs2UkRIZVRoeDdOajRmZS8rSUppWUFLMm1mZis2dXVmYzMvbWVjNzduM0orZ3Fxb0tvS3FRVWhTU0tZVlVTaUdSU3VJTDNNTHJEK0gxaDVnT1J2Q0hJZ1RDTVc3RkVpaUtTbG1CbWNmV2xqSTg0ZWZTb0JlZFJzWnMxSkZ2eXFheTBFYVowNHFJZ2lpS2lKS0lMSXJJa29RZ2tJWndoMEFrbHFCM2RJcXJOMzI0cHdKNC9TRVNLUVVBZGNGWlhYalFheVhXbCtSVFUrSmdZTXhINjQxeGtndStraWhRbG05aWE5VnlncEVZWjNwRzBXczFsTmh6V2VteVVWdGFnRkduVFJPUUFWSXBoWEEwUnZCV2xCNzNGTDVRRkhFeFRVQWppVlE0VEFpQ1NJWFRqRG5Yd01Yck4ra2M5YVY5dExKSS9Zb0Nxb3J0ZUtZRG5MazJSaXlaQWpYS1hEaUN3NlFuR291amt5VmtXYnBMd0I4SWNySG5CdlYxVmVUb3MzaS92WS9KWUNSOWNFcFJhYWt1cEtsMkJZSWdNTzRMY09MeUlHN2ZQQnBacE1KaFJpTkxsQmVZeURVYTZCbWE0T0x3MU8wU0E3a0dMUWMyVjFCVG5NL0FpSnVDUEJ2TG5RNEFSSUJJTk1hZmo1M20weTg3S01vMzhXeExMVTV6ZHBxQW9xb1UyMDA0clRrNExVYXVqZm00T1JNQ0FlcFhPRGk0cllZZk42L0diczZodFh1RTlxSEpkT3VzUmgzUHRkUlFXK0tnOCtwMTNqdDFqdUI4S0xNRkF1QU4zdUx3cVhiOHdSQUg5elR4NG1OcitOZlpIa2FtZzBpaXdKZTlZMlJwdGNTU1NhNjZweEVFVUJYSU54bklNMldUcFpINDZycUhFZDk4dW4wdWk1RkRUVFVVV0xJNTNkN0IrYTZyK09mREdTS1UwMm9FUXJFNHg5dTZtSjIveFU5L3NKTVhkcXpodmZPOVhQUE1NRFFkWk9LTEt5aEFKSkZLQys3Q3dBVDVaaU95TE5IZU40WUtpSUpBdWNQRTA0OVVZekZvT2Y1NUt4M1grNGtua3R3anJVVUVGZ3p4WklxelhYMkVJMUYrOGN4dURtNnI1c1NsZmpxR0pna3ZCTTZTSlFyTkJuSjFHbUpKaFdQdGZjeEg0eVFWRlZrVXFDdks0NG1ObGVnMWNQVFVHYTcwRDZlbjVIYXE5eElRQkF4YVRYck9Vb3JLeFQ0M2lYYys0cVVETzNtOHZvSWN2Wlp6dldPSW9rQlRaU0dXckJSbW5jaXRwRUlnWWFKOWNKcVpVSlF0NVU2MnJ5bEZUVVk1ZHFxTjdxRlIxRHZ6QzJnMU1xSW9aaElRSlJGYnJoSGZYRERkUDFWVjZSandrSGp2RTU3YjIwSlQzUXB5OUZsRTRnbjBrU24rOHRkL2NPVHdNVFkxYnVCWHI3ek1velhyQ0VWVGJLb3FJakEzeTRuV2RucmRZd2lMYXE2cUtqa0dIYklzWnk2aVNDekdGeGV2OFBjUHp6SVZDR1hzZ0pTaXNzcVZ4NDhlMzhhYXFuS1NpUVN2L1BKbHZtaHRRNnVSU2FaUzVGbXRIRDF5bUVMWE10eGpIazU4ZVlIaDhTbEVNYlBjT3EyV0hadlcwbHkvRHFOQmYzY01GVVVsUDgvSzgzdWJxVjd1eUJDS0pBcjBqZnY0Mndlbk9YZXBDelVaeCtzWlI2dTVuWVVzU2ZobVp3a0ZBL1QwOVhQc2RDc2ozcVhCemNac2RqZHVwTEtraUVVZElkMk1BYmVIU2Q4c0IzZHZwYjZpQ0kwazNYVVNCTWI5ODd4MW9wV0oyU0JWMWRWSWkreXJLc294VzJ5Y3ZuaVpLWDhnbyt5Q0lPQzBtWG15dVFGWmt1anBIMFJGemRTQVRxdkZaVFB6bXcvTzhQMkdPZzdzYU1DY2M0WCttMTVVUmVIbWJJaWtvcUNxQW4yajQ3ejB3dk1JcUlSRElSQUVEdXpmejh4OG1FUWltUTVxTXVqUmFtUnNwbHkyYlZ6RGlHZUNNeDNmc08rUlRSajF1a3dDa2lSaXM1cXc1eG81M3RiRjVHeVFRMDlzUXhKRkVza2toejgrUi8vNE5QdWIxdUUwYWpuZjloWDc5dTVGRWtVVVJlR214NFBkYnFlaHJvcld6cXZvczdUczJiYVpQSXNaUlZFNTI5SEo1ZDRCOUxvc3JCYnowaWtBTU9YbVVGdGN3T211SUYvZmNGTmU1T1RuVCswaW5raXlaZlU0cTh1V1k5T3F2UGE3MTdqVTFVMldWb3ZWWWlZY0RqTVhERkZXdkl6ZnZ2b3EyemV1WVdKbWxxclNFb3dHUFdjN3ZxRzdmNWlVb3BCdk1XRzNXakswa2FhU1o4NWxjMjBGNW13OWlxclNPemhLZC84SXZVT2pUQVpDV0EwYVBqeitiNjcyM1NCYmw0VXNDZ1RtNWtnbUV1UVlkRXhPKzNqem4yOGlxMGxFU2FMZmZSTzNkNUlCOXhqSmxJSkdsbGxadkF5SHpYci9UYWpWeUR5eWZqVXBSZVdkaytmcGNYdDU0OGpIcUlwS1kxMGxrMTRQSFoyZEdYc3NRMnpBd1BBSW5aMlhXYnVwZ2ZkUHQyTFE2WmlZOWFPUkpSN2R1SmF0Nit2UzA3T0VBSUF1UzB1Unk4SHorN2J6N3FmbjZmUDRpQ1JTUE5WU2p5OHlneXpMRkMxenBRTUtnckF3VW1xYVVDb2VKOTlpeGpzemgwYVdNR1ViMk5XNGtjSjhPOFpzQS9jaWc0QldJek16TzhlNHo4K0wrM2R3OUxNMnVvYTl4Qk1KMW0rczV3K3Z2NTdlNVJxTmhORmdJQnFMRTB2RUVSYmVHd3dHNG9rVUdsbkdsV2RoWjJNOWdYQ1lDZDhNSzB1V0x5R1F2cExkd2JRL3dCL2ZQazZXWGsvTGhtcGFPM3U1TWpDNkVGaE5aOTFZczRJZlBybWRTMTA5bk8vdVJVeFg0L2JLTGJCWjJGSlh6YkJuQXZlNGw1L3MzNFBkWW41NEJRRHNGaFBOOWJYODZkMlR6SWZDUExabERYWnpEcjdaT1h5QkVGMURIcUxKRktGd2hKU2lFbzNGbWZZSGtFU1JJa2NlK1JZekJvT2VGUzRuVndlRzZld2JaUC8yUnZMTUp1NEgrWDR2TjlldG9yMjdqMU5mWHljY2pmSHNFMDJVRlRVUUNJVjU0L0JIWEI3MExQbkdscHZEMHp0YnlMT2E4Zm5uK095ckRyb0dScWd1S1dKOTljb013ZDUzREJmRGFOQnhjTmRXSEpaY0xnNk00ZmZQWVRQblVPcHlZRFBuM3Zld2JJT09va0lINWh3amlVU0Nid1pHTU9yMTdHellnTkZnNEVHUUgyUW9jUlh3MHI0bWZ2L1dmemg1b1pzc3ZaNVFKTWExb1RHVVROa0FNRFU3eCtjWExsT1luMGRiWnpjQ3NMdGhQU1V1NTVJZjAzY2lvSkZsTnRXdTR1RDJTWTZlL1JyM2tVOUlLaXJ6MFRnc2pVODBudUJrV3dkYVdlSldMTTZXbWtyV1ZWV2l5OUx5TU1nUE01cHlzdmxlY3oxZW41L1c3a0hVKzJTK0dMRkVnbmd5U2ZreUo4MzE2N0E5UUhqZnFvSEZLSFRZT2JTbmlRM2x5MEFRSHVvckFDNjdsZDJOOVJTN25Id1hmQ3NCQWFnb1djWnplMXVvS3k2NHg2cXl1Qi81VmpON214cW9LaXRCZ1A4UGdUc1hrcHFLRW43MjFDNVdsemlYTUZSVktMQmFlR1puTXpVVnBROGN1Zitad08ycm1VaFZXUkcvUHJTWCtsWEZkek5Vb2JTd2dFTlA3bUJsYVRHUytKMlB2UDhxL2pZb3FzclVqSjhMUGYxc3FhM0VQVDZCS3o4UHB6M3ZvZVAySVB3WCt1aXFqb2NEZFBnQUFBQUFTVVZPUks1Q1lJST0ifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiTk9UX0ZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjItMDgtMTQifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIyLTA4LTE0In0seyJhYWd1aWQiOiJhNmM1ZjVkOC0yYWQwLTQ4YjYtODI1Ny1lNTAyYzg5NzA5MzEiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6ImE2YzVmNWQ4LTJhZDAtNDhiNi04MjU3LWU1MDJjODk3MDkzMSIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJlVG9rZW4gRklETyBORkMgRW50ZXJwcmlzZSJ9LCJkZXNjcmlwdGlvbiI6ImVUb2tlbiBGSURPIE5GQyBFbnRlcnByaXNlIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjYsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfSx7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwiaXNLZXlSZXN0cmljdGVkIjp0cnVlLCJpc0ZyZXNoVXNlclZlcmlmaWNhdGlvblJlcXVpcmVkIjp0cnVlLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUM2VENDQWRHZ0F3SUJBZ0lKQUpiVHlydTFYL0lQTUEwR0NTcUdTSWIzRFFFQkN3VUFNQ014SVRBZkJnTlZCQU1NR0VkbGJXRnNkRzhnVFhWc2RHbEJjSEFnUmtsRVR5QkRRVEFlRncweE9EQTJNVEl4TkRRMU5UQmFGdzB5T0RBMk1Ea3hORFExTlRCYU1DTXhJVEFmQmdOVkJBTU1HRWRsYldGc2RHOGdUWFZzZEdsQmNIQWdSa2xFVHlCRFFUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU1WaktIV3BiRDdUU2xNeG9jalRsNm5JZjd4MzJQbXNROXpHdUxHR3FBMFVRWm9JcTNYTHpMNkxZVXZKNUE1ZzB1eUZHbGxIRWZHQUtyRWFDUThGVnZQUy9VaDBGeWZ6V2hSQXppVFNpampNSUlWampqVXY5bTl2Rm1jWFNjZ0hpZzdPZHo4ODU4VjBrck5IOTlxR20zd2pnYU9lclRXbXQralhDVWZuMDFJa1RQd3hHMkhsZ0VkNDVqTkxTVjdWb29sK0tlOEUya2k0bEVrVGVIemJvdWxSNUdVYnAzbk1pN0U0N1ZNUWEzYk53bnpXQmJzYUJTU1FoTGszbTVIYUtoaHhhNndKREs0N05pTUNrQ2tkSUh1V1NRTFZBZm04NVVBT050RU9Qd2kwT3VLM3FiZTh5S09GR2YwS2hCNU1NZUF5bTdNVi9NNFcwYTQ5b2dQRDlwTUNBd0VBQWFNZ01CNHdEQVlEVlIwVEJBVXdBd0VCL3pBT0JnTlZIUThCQWY4RUJBTUNBb1F3RFFZSktvWklodmNOQVFFTEJRQURnZ0VCQUpXejV4TE1rNVdOWWJBYjZ5T3hFQ0JvWjJXZUIvcWw0VkozTy8zL3ROc3hPWW56TGVXbzU0MHpRaDlyQW1heHo3ZXVtQmxza01xNHlHUFNOWEI5eWNXR0hna2NDZVN6TjJ3djhDSXpEQnMyb0JaalROazY1TEJaRHNzVE9CdE1XLyt1VEZIUWZidU8zSVNMaEkwRFhmUkVpOU5ETTNqZmsxMXhIY3NmaDJSTVYrUWROZndWYVpackNxK291RytFdmt2N0txcStveXUwVkZNL3R6NjhUR2w2eWxoUEZSMXFoOXd0dHBWakFPT0NFUUNMcVAyZFAyOGx3WUJ5Q3FIUXFWSHdidWp2L0xaalpuS1czTFluZFppeFBQU1JDSnNzRER3SnZoL2Y2blR4ZzlaRSsvSmNZcmU1Q2FJOG56VkhhU09Dak5KN0Z6VUxHNjRKaVdPdlE1MD0iLCJNSUlEZFRDQ0FsMmdBd0lCQWdJSkFJQ1VUdmtndGo1Q01BMEdDU3FHU0liM0RRRUJDd1VBTUZFeEN6QUpCZ05WQkFZVEFrWlNNUXd3Q2dZRFZRUUtEQU5FU1ZNeEN6QUpCZ05WQkFzTUFrTlRNU2N3SlFZRFZRUUREQjVIWlcxaGJIUnZJRTExYkhScFFYQndJRVpKUkU4Z1UzVmlZMkVnUTBFd0hoY05NakF3TnpBM01UUXpOekU0V2hjTk16QXdOekExTVRRek56RTRXakJSTVFzd0NRWURWUVFHRXdKR1VqRU1NQW9HQTFVRUNnd0RSRWxUTVFzd0NRWURWUVFMREFKRFV6RW5NQ1VHQTFVRUF3d2VSMlZ0WVd4MGJ5Qk5kV3gwYVVGd2NDQkdTVVJQSUZOMVltTmhJRU5CTUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUF2QUtPZXFDNS9wMEQxaXNDWUtRSmxWVU9yQjZJN0RMb2N1bkUvUm04ZHVHVGJ5eFFodDNDYkZWVHYzTjJMcDJmYmp4bEkrM3NPU0drMzNGVFlrVHF4Y2RKSXJKN1Nza0JjVVNOcmZLT2FRVC82S1FjUDRDbTdWKzY1NVRxK1RXeHl4V1FoRHlndDE1cW9QN011SzZiVDlTd3BDanBmS2hhTVNteVFhTW9VY1JBYkxxZHpCQ2FjMGh6QitaZStncUpsbldWOVVhU0kyckZzVnVINFpFMGNSTytNT3BhTGdNL3MyNDhuR0dIcDIyZXdTUWZiblBhQmJiOGlxeUFQK2N1NTJHTHNVcEtSSmViRStSNitQTVE5SkNkV2VRWlIzRGtmU2lka3YzbWNiNGpxMWlJdGErTXFLaFJud3JmWGg5MTFLV0xuWUFsOUVOQ2hMWDBjNlNqMVFJREFRQUJvMUF3VGpBZEJnTlZIUTRFRmdRVVdMdmhSQlVQbjh1TElmNjgrZ3YvTlpJd0dTSXdId1lEVlIwakJCZ3dGb0FVV0x2aFJCVVBuOHVMSWY2OCtndi9OWkl3R1NJd0RBWURWUjBUQkFVd0F3RUIvekFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBRkxyRGhhZWdlS0h4WWpIM0VQM3ZVQktobnpNMjA2QVN4Z2VZQ08yRWM5cE9sWUphZXFGRStzVWFtVVYvcHdqRGxxTmFTZ0ZneTdUd2VZa3ZPbU1uNHFTY3NIcXZKM3pHT0FpYWZ3YWgxdlVIZkNsWFI4K2F4TzJpR09VRjBKS3JaOVlZamJBYTUvNEhDbHY3akZQT2RNV1RPUXluZ29pSEFzM2prdVlqcENMRmxCNFZPaTNkMXdqQTFwblRkQktrQWI3dDhuVHZ3Ky9YYkZ2Y1FhNzNWSDdzanZvQnFEM2ZkTWZSY3VWcTRxVVp0WlQ2Y0dhZ1RIRDYxVHRxaDlvTUNaWGNEYlIxUEdabk5icXljc1dQRElLMG5wbUszLzNsZlY4Yytac3J5NmUxNzBtZkpNWnA3TzhtNkNTejYvVkxLK3lESmQ3ODQxd3BtZUtUZjZJblpBPT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBUXdBQUFBZ0NBWUFBQURubFVacUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFFblFBQUJKMEFkNW1IM2dBQUFBWmRFVllkRk52Wm5SM1lYSmxBSEJoYVc1MExtNWxkQ0EwTGpBdU1qSHhJR21WQUFBSzFFbEVRVlI0WHUxZERYQWNaUm0rTk9BZktvZzZXTzBRY3JlWDNPNzFSNDFvSGRTcXFEQU9nMytjWUVYQm9sWFJURW4yMjB0YUtUYzY0bWdCcXpCaUVVVnBCZHFpd3docVNkSVMydXBZU2d2UnRwVFNja2xqV3pIYWdqcFNSZHI0dkx0dmpydmsyN3ZkdmQxTGpuN1B6RE4zdC9kKzcvdCtmOC8rNzhhSzBORGFhcjJxT2RYWm9xV3lIOVIwYTBGY3Q2N1dkSEdUWm9qVkNjUHFTZWpXMW9RdUhzT3kvZUJUc0RtTS81NFpUOWorTFdHSWc3RGZCL3NCY0RQc2Y0WGZQOFgzYjJ1RzFaSFF6VThtVXVLZHlXVEhtNXFhY2kvakhBS0J5aWYwYkJyK0x3YVhJUFlQa01kcWZMOFhkV3BsczFBQTMxL1FqT3c5OEw4UzliOEJYSVIyK25EYzZEb3psc2swc2xua1FNeGtQR1hPOUVKdFZuWUdGNHNVeVZuZDhVVGFlcDhidys2TGFrQmo1aXpkYk5KUzFyeEVXbnlXeGczNkVtUGRXb1BQRGVqZjdlQVRHTXNIYUR6VHVDNmhiajBOL3BYbUFzcnVnczBXTFA4TnVCSmpaSm1XRWxjbDA5bVBKMUptVzB0TDUrdWlIQnVHa1hzbGpYODduaTRFelZuazlBdmtzUW41N0VTZGhyQjhCTXVQak9XUC8vNE9Ic1IvZTdEOFlkVGxmdFJoRmZnZExHOUh1MXdBZnpyNTVqQU9raVFLaHZWYkdCNkMwLy9pKzJpTmVSeDhGZ252UmZ4ZmFpbnpTazdORTBpSVVQYmY0M3dXbU5UTmQ3QnBLRUE3TFpmRkFZOXpwM3laVFNNRGlRVmkvVStTZzVRWUFJZk9tRzJld3NVakEvcmhXN0w0QmVybWo5aDBVb0IyT0IrVFpUVzRCL2s4T3lHL3lDaU9vVzFJWUg2SDhYUHo5TGJjS3ppbFFHaHBNWnZoWnlIR3dHM2c0MkJrODVaOG85MEc4WDBOaVNzMUl2MlFHazhLZFdzenQ0c25JUDhScVI5bURRWERJZFpTYkJvWjBJbDNTMk9YWlhZcEY0OE1VMTR3bksxYmVXNDFwTDNGRVFDSmxQVld0REcyZnV5VnJOUjN0QlRkU2pCOFlySUZveVZ0bm8yT0N6Qmd4RE5CQjZwWEtNSHd4aUQ5Z0szS2M2UGNrdkJHSlJpK01jbUMwWUQ0ZmRLNFhvaDlXL1lUQ1pSZ2VLTnZ3Y2hrR3RHMmUyVytha3NsR0w0eG1ZSkJheGxwVEkra05SUWRtR1Izb1VNSmhqZjZGUXc2Y0NyelUzdENNTERXdVFzZDNSK0F3M0tuQlE1S3luamhqZHhPbm5EaUNFWnVHanJzWVdsTUp0cGlXVUszQm1UL0ZmRXVkaGc2VVBlNkZnejBiUjZmYTZNbW5ZM2tsRHdoYVlqTFVVNmVzMjd0MGd6em03VmdVdTk2RDZma0h4Q2E2MlVWR0NNcThnMDJqUlFuaW1Cb1J2WWlhVHdtMm50Zlc5dkNrN1cwZFlIcy93SjE2M2s2ZU1adVEwVzlDd2JHOUsxc09xV0F2SVUwWDV0aURadE5iU2pCY0dFRWd0SFdkc3ZKOEUybkF1VXhpYnA1aFdNOTJvRGYyeWI4WDBLeDNyRU5GMG93b2dIbTBoSnB2amFWWVBqQ2lTQVlpYlQxZVdrc0ppYkNrL1BtNVU1aWM4cnhRcGxkTVJQcDdIbHNIaHFVWUVRREpSZ2g0c1V1R0hTUkQrcElWK1RKNHhIMUxHOWRqQ0hUaU1sUjRWaUcyRTdIUmJoQUtGQ0NFUTJVWUlTSUY3dGdvSjJ6MGpoTXRIT2VqbDJ3ZVFGWS9sR1pmU25GZkRZUEJVb3dva0hDTUJkTDg3V3BCTU1YS2dxR0lTNXZUcHRuaDBYVSswNVpuQUpERkF6RDZEZ2QvcDZXeG1IR0RmRkZOaCtIMFFiMHdhT3lNbU9FK09VTkkvY1NMbEExNmwwdzBGNjc0N3E0cFJwR2NkcWE3a3VSNVV0RUg0NWdEbXdLaS9EWmo4LzdJRVMzNHJPemVhYVl6V2xVaDNvUmpKb3pSTUdvT0FFTmEwaTJkVEdHZUVwOFRGSm1QRHZZdkdyVXUyQ0VRYnFoa3NPRkJzeWxpMld4YXNUajZOZDEycHNYdjU3VENRWWxHQzRNU1RCYVc2MDNvbzFkYjZxenFWdGZZbk01NkFwQnc5b3hvVndSTVlsR05LMzkxVnlpS2lqQmlFWXdtbFBkTGJKWXRTVGE3cUhpQSt1K29RVERoU0VKQnRwdmhkVC9HSFd4djl6V3hSaTB0UGlFdEh3SnhiVnNYaFdVWUVRakdIUndHdU9oMGdWNWtUT2VNaS9oaFB4RENZWUxReENNczFxdFZnenU4cmV2cHl5UGp3SHdzcFZoL1N1VldqS2RDd1NHRW95b0JBTzVwODMzb3ArZWs4V3NGZEYrd2E4U1ZvTGh3aEFFQTM3V1RQQmJSSFRjQWV4R3ZKVE5IZlFNTmNmNkJzK1A5ZWJueGZxZVBKV1gya0NaekhnZkV4akNHUUlsR05FSkJzRitFSkV1ZHN2aTFvYmlUNXlLZjlTTllPaldaalR5ZmFIUnVkOUFIb3RZcFdBNE54cUpZMUxmVE5UNUsyd2VpNjBmTWlBVUQ0S2pCZmJtajhiNjhzdGoydzdhRDJxaGZVLzB4eTZacnpIUzJxdWxwVE5sK3d5SXVoY01qQlU2NjFRTm0yY3VQb1BEUllUUkJqcGJSMk1BT1Y5SFp6T1E5OC93L2ZZd2lQSHRmamUwYnYyRmsvQ1BlaEdNT3JzT28vTHQ2N28xWERnVnVpRS9Cd0x4anhLeEtPWEcyTTZkdGkzNnc4T1JkbkdQN1RjZ2tGdWRDOGJVdkE2amxraWtPOCtUdGcySU1YU1l6ZnhEQ1lZTHF4QU1MN2V2bzc3dHRuRi8vMG5Za3RnaEVZbHhITHFhekoydGpFcWJzOWl5U1dYbjJ2NERRQWxHL2FPc1lCaldBVGJ6RHlVWUxnd3NHTGxwS0x0VjZwTkpIVlo0WUhMZi9uZkpCV0lDaDJIZFFFWGk2ZXdsTXI4bGRKNUhZdHY3aFJLTStrYzV3VUQ3N0dVei8xQ0M0Y0tBZ3VIcDlHZEtYTVhtRUl4OHUwUWNYUGpZYSsweW1Vd2oydXR4cWU4aW9vNFgydlkrb1FTai9sRmhsK1NQYk9ZZlNqQmNHRUF3NkhvSzdBNlVuY2lvNThHbXBzdGVlQjFENzlCWDVlSWc0ZjNEcDNPcEdPTE1sL2tmeHgyeHpGcmZqOFZYZ2xIL3FMQkxzb1hOL0VNSmhnc0RDRVlpVmY3MmRXYnBKZHc5Kzg2UmlzTjQ5Zzd1aDNWaEY0UEY2UW1KLzFMcTFnSXU0aG1WQkFNVDl1N3g3MHdKZy9UWWZVNmhMSlJnVkVhRlhaSUgyTXcvbEdDNDBLZGd6SjV0bmdLZkI2UyttUGovMEl3WkhTL25JZzVHUnhzaEJnTlNrU2psWWk1UkFQcnVVbG1jWW1KeS9YbkczSEV4SzZEaUZrWkV4QmpZeUNtVVJTWEJRRHVQb0E1Ym8yYlN5TDZkVS9JRTNpcVVuZ1lObTJnRDE3TjArRzhWcCtRZlNqQmM2Rk13NHJwbFNmMFVFVEZOTmk5RnovRE1XRy8raUVRa0hQYm1OOFMyYlp0NCtiaHpqMG41SjNpQmRGczFsL0FFMUwydUJhTldUT3JpQTV5U0p5RHY3OHI4MUp5ZXJ5NldRQW1HQzMwSVJ0T2MzR2xvcDhOU1AyUFV4Vk5sMS9UcjhxMnh2dng2OFBraXNmZ25mbDhmNng5MGZRVWw0bjVHR3ErWXVqaHk1cXp1MTNDUmlsQ0M0WTExS1JqMFdrZ3RGL3dtUlNVWUx2UWhHRjRtR0FhTFlQUHkyRGcwUGRZejlIN3Nwc3lOOVF4VWZDMGlYZnlGUHRvbmkxbE1HcXhjcENLVVlIaGozUWtHeENLcFcrL21kSUpCQ1lZTFBRb0d2WVFhOXVYZjcxbHA2NkpLbEh0OC9Rc1VSKzBYVFh1QUVneHZyQS9Cb0xmcjJRZkhyL0d6bGVtS0tTTVl1bmtIVFN6RWxMNCtzRmFDZ2ZvK0IrN1dqT3puMkxRc25OY0dpRDFVVHViUG9kbkY1cEdBenBnZ3Z1dFdCdXI2SDd0T3VyaVVpNVFGWFNXS010L0hCTjVFYXlYVXIrdzlNY0VwanZHSzR2Zklid1ZkdzhJcGxBV05CWlM1RHZXaE41WG40ZWRvcWQ4b2lGeXgyd2sraXUvMEl1aWw5S3dUVHNrVDRtbHhEdHJ6Um01WGpQVW8ycFhlNkc0OWdqeHZ3K2ZDaE5HaGNmaHdRQzlqYVRMRUc5eG9HRmVXdmlZK1V1U20yUStjb1hkeTZOWWlOT3d5VlBySEdCaDNKb3p1VUNzZVQ1bVhRZkYvamhnL3hPZlhOZDI4Z2pvMGFIM3BMQWxOTkdkdEw1WWk1NXZRZ2JlajQrNmcvOWdzTXFBT0gzSGFTZndFYlhjRHZtZVRodlVwVGU5Nnk0UXpNNzZRbTlZMFo5RnBkUGNtNnZOcHNBdDlzdHhwTyt2WDRFYkUyMG9UQ2NzR1NvbmwrQi9mNldhL1ZjVjUwYVNQeDd0T0RlRUJ4ZzEweHkrZGtvWGdmQWd4RmlEZTE5QU8zME0vckVRTzl5TG1BNGkvQmIrM2wrYm5rUElITjRQclVMKzErRndCMjJ2aG94MWlmMUc4MVhwYnZBMjVaaksrcjJseFIyNGExZDhSUHpFZnV3b1djc0VXaUpNellqK0kzdytWdEtzaEhnSC9BUFpTbnFqVHpmaTh4aDY3dW5VdVBkckEyOE54WXJIL0F6M3RJNGo1K1RPTEFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xIiwiRklET18yXzFfUFJFIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsIm1pblBpbkxlbmd0aCJdLCJhYWd1aWQiOiJhNmM1ZjVkODJhZDA0OGI2ODI1N2U1MDJjODk3MDkzMSIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOnRydWUsInVwIjp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibm9NY0dhUGVybWlzc2lvbnNXaXRoQ2xpZW50UGluIjpmYWxzZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOnRydWUsImFsd2F5c1V2IjpmYWxzZX0sInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxJZExlbmd0aCI6OTYsInRyYW5zcG9ydHMiOlsibmZjIiwidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN31dLCJmb3JjZVBJTkNoYW5nZSI6ZmFsc2UsIm1pblBJTkxlbmd0aCI6NCwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjQsInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjoyNTV9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiTk9UX0ZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjYtMDEtMTUifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI2LTAxLTE1In0seyJhYWd1aWQiOiJlNDAwZWY4Yy03MTFkLTQ2OTItYWY0Ni03ZjJjZjdkYTIzYWQiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6ImU0MDBlZjhjLTcxMWQtNDY5Mi1hZjQ2LTdmMmNmN2RhMjNhZCIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJTd2lzc2JpdCBpU2hpZWxkIEtleSAyIEVudGVycHJpc2UifSwiZGVzY3JpcHRpb24iOiJTd2lzc2JpdCBpU2hpZWxkIEtleSAyIEVudGVycHJpc2UiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9LHsibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQ2lUQ0NBZzZnQXdJQkFnSVVPa21VMzVJaWNYb1ZQamZ2d3BHN01ONnRIUFV3Q2dZSUtvWkl6ajBFQXdNd1F6RUxNQWtHQTFVRUJoTUNSRVV4RkRBU0JnTlZCQW9NQzFOM2FYTnpZbWwwSUVGSE1SNHdIQVlEVlFRRERCVlRkMmx6YzJKcGRDQkdTVVJQSUZKdmIzUWdRMEV3SUJjTk1qRXhNREEzTURrek1EUXlXaGdQTWpBMU1URXdNRGN3T1RNd05ESmFNRU14Q3pBSkJnTlZCQVlUQWtSRk1SUXdFZ1lEVlFRS0RBdFRkMmx6YzJKcGRDQkJSekVlTUJ3R0ExVUVBd3dWVTNkcGMzTmlhWFFnUmtsRVR5QlNiMjkwSUVOQk1IWXdFQVlIS29aSXpqMENBUVlGSzRFRUFDSURZZ0FFdGdPQzdJS3hpcE1KN2JWUFRUODNPZTkweHpIUENlYnh5Q3RnL1dyc1RyUmFTbllpZ21KQ0I4L2pxQk40T1FHMmRaNWpjTnNMNlN3SG9zWURSSmMrTzF6azlpNUdFWldmM0lyOTkyQTZkdU1zcDUxbHE0ZkFnYS9VelROOS9FYnpvNEhBTUlHOU1CMEdBMVVkRGdRV0JCVGZ4emc4R0d6WUFpZEtMNjN1aFNpcmFYSklLREIrQmdOVkhTTUVkekIxZ0JUZnh6ZzhHR3pZQWlkS0w2M3VoU2lyYVhKSUtLRkhwRVV3UXpFTE1Ba0dBMVVFQmhNQ1JFVXhGREFTQmdOVkJBb01DMU4zYVhOelltbDBJRUZITVI0d0hBWURWUVFEREJWVGQybHpjMkpwZENCR1NVUlBJRkp2YjNRZ1EwR0NGRHBKbE4rU0luRjZGVDQzNzhLUnV6RGVyUnoxTUF3R0ExVWRFd1FGTUFNQkFmOHdEZ1lEVlIwUEFRSC9CQVFEQWdFR01Bb0dDQ3FHU000OUJBTURBMmtBTUdZQ01RRHN2NEs2TmZKdmZ2emQwT3lnd0ovQUJpTHRndEpXaFhUZVVsbHRkcWE0V3NPTTl0dng2MzZ2NUZJdlpSa0sxWG9DTVFDZG9QUSthNGZEQkVpTnVqMFdzMzN1VVFoR3Jwc2VQREdmVlhuNGtFcGJUSUJlT2RWQXgvL1RyTUMvU1ZiK2JzZz0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBTkVBQUFETUNBSUFBQUJpRU5IOUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFEc01BQUE3REFjZHZxR1FBQUNadlNVUkJWSGhlN1owSGRCelYxWURYRFRlYXNTazJFRXd4WU1DQUFRT0duMERvRUNkQUNLWWtRQ0NoQkVpQUVFZ2doSVFFSEFpaGR4TEFYYkxhRnExNjc3MnZldTk5cC9lWjFYL2Z6RXBhMWdXRFo2V1Y5dDN6SFIwZGczWm4zL3ZtdnZ0bTU3MnhqT0hBTWJXQm5jTXgxWEVnNTFSVkhYVVROYzF0OW9LS3QrTHpINDNNdXptOGRIMUV3NmxSblN0dGd5c2M3bU5paVdPYzFERk9FalBib2FDdm9jZFgyWWRPaStxNE9MTCsxdkRTeHlOejM0N1BpeTJvcUd2dGNCTUUyT0wxNXR0aXY4NEpndERXMFpGVTVubzNyZndSVzhsMVlhVnJ0cFlmL1hYdG5HMXRsbWkzSlU2eUpJOVpVakdoQlBRNDlIdlU2Tnh0cmNkc3JUMTdlOFgxdTBzZXR4Vi9rRjZlV2w3YjJkVWxpcUxYbmdQR3ZwMWpHTWJWMUJxV1ZmS2NOZmZHOE5JendocU9EdStjdjZmUEVqbHNpU0VzTnNiaTRDeXh2STZBQ1EzMDduYXdxUGZCZ1lqaHd5SUdqZzdyT0hOMzNTMWhKWCsyNVVmbGx0VzN0SE1jNTNWby83RVA1d2lDS0sxdi9peTk5S0dvb3ZVN3lsZnNiSm9UMW9ja2k1ZVI1dkNMamJaWVNmVEdtRkFEK2gyY2krV1FDZUNEblowYjFudmN6c1pMZHBROUdsUDBaV1paWlZNclJWRmVrL1lUL3M1QmhnUGhQa2dxdkN1aWFNM3Ura1hoUFhPaVJpeFdHZ2tPMkpseDRiQnpvUWxwc1ZMSUFUREJVTUpLelkwYVdSTGVzemFzN3Q0OUJaK2xGVlUwdEJ3NDIzM0RPWjduYTV2YlBrc3Z1V3RQNFNrN1hmUEMreTF4ZW02elEwYWw5bnA3VE1nRFZvQjI4UkpJc2lDODc3UWQxZmRGRm55VldkYlkxZ0h6QWE5VmU4V2tjekR2YU92b2hCcnVvYWpDTThQckYwVDJJNWRoSUljWGhaZkdneWxtYjlCUUM5cEJjUzlBOGx1d3AvZWM4TnJIWWdxaWM4czZ1N28xVGZPNjljMllkTTVOa01sbHJ1ZGljaS9jVnJvb3ZCdkpDelVqSkZKc0crYkFnQ0hnaVZPd3hJbEx3am8zYkM5NTBaYWJVVkczdjhKdTBqbFhTL3Q3YWVVM2haVXUzOTVnaVJ6U3B3c3NydHN3QndlSk1oUTRzMmZnMkcxMW04SkxQc21vYUdqcjJPZlZrMG5uN1BubGoxcUx6OWhWTnkrOEQya0xOUno4OUg5cERHWS93TVFDVFNuSStXRzlaKytxL1oyOUpLR29jbkI0Mkt1WFQwdzY5MVpjM3ZWaEpjdkNPOUJmR2pVY1RuS1lnd2ZWZHJwMk5tYjU3cmFiZHhlOW41QlgwOUx1MWNzbkpwMTdOQ0wzekczbGgwWDBvMG9PQ2J2WGkySXdCd2FjQVhQaXhJWGh2V3UvTHYxZGRGNUtkWk5YTDUrWWRPN204TktqdjY3MVZuSXdZL1Y3T1F6bVlIQXc0TnljaUtGanZxcTVMYklzdkxMRHE1ZFBURHEzUHFKKy9zNE8vYy8wYnhwOFh3aURPVWpzK3ZBYTQxNndvLzN5NkliUHF3ZThldm5FcEhPblJuZWlMKzl0RTk4MDdQVnlHTXkzWXRPck9oZ25vMGJQdG5XOTYzSjc5ZktKU2VkVzJnYjE2eU9jZnJrRk80ZjVYaGp5eEhJV3A3ZzZkdWpOT3NhcmwwOU1PcmZDNGJZa2U5QlZGcjlYd1dDK0swNEJYRnJsZEcrcDU3MTYrY1NrYzhmRWt1Z2VLZXdjNXRCeGl1RFNDWEhFNncwSHZDWjhqSk5Dem9HaGZuK1B3WHhYRE9maXFkZSt6VGs5ejJIbk1JZU9OOCtScnpYczQrNFM3QndtQUdEbk1GTU5kZzR6MVdEbkxORWhqMStEQkpyUWRjNW83cWg5RVJsS3dPZWRZdTFtdVhPR1dQdkVWeksvL3hSTnpKa2docGc3ZTRGUFozeE0vM1lMS0xQV09jTWVReWwwUXJzbm1WQXRDclg3QWl1eHlFWXN0Uk5IT29obERuSjVMSFdza3pyZVNhMk1vMWJGVXlmR1V5ZU5jM0xDN09HVUJQTGtCSEpWSEhWTUxMbkVSczZieXB2VFpwVno0MWxxVWpqOUZ6aVA1MXFSV3d0MXQ0NktKVmM0U2ZCcGRRSjFaaks5THBXK0tKMitQSU8rS291K05wdTVJWWU5SlkvZGxNL2VWc0QrcklDOXM1RDllU0Y3bDg3bW9sbkMzVVhzZmNYbzU2WTg5cklNR2hSY2JDZTlqZWJYcElGZzlqaG5wQzVJWXhHUXpORHZNSEFzc3BGd0hwOFVUNTZaVEsxUG82L01vbS9JWlVDbWU0cTVoOHY0SnlyNTUycUV2OVFLcjlZTGJ6UUs3elFMSDdTSUg3ZEtuN1ZKLzJ1WHZ1NlF0blZLMjd1a0hWM1NUcDFkczRYZDNWSmtqeFRXTGNIbmZhS1MyNWpKTEl2Vm5ZTUc5R3ZWUURBYm5ETk8wUEdzTmkrR1dHS0hURWFkbGtpdlQyT3V6VUdKNnBGeTlvVWEvdlVHNGNOV0VXU0s2SkdkQTBycWtKSTdxcFlRYWlXbDFkSmFFNk8xc0ZvN3AzVndXaGVuOWZCYXI2RDE2ZlRQTGdaRnpTMTdoaVJQbVZ2OXVGVzh2WUE3UG82eVJPbUZoMS9iQm9JWjdOeUVhbnFKQnBYWmtYYnk1SGpxZ2xUNjJoeG1jeEgzWkNYL1NwM3dmb3U0clZPMDkwc1pRMHF4VzZtbDFWWVd5VFFpZVNqRnc2dGpzbWRzM3lzdFF5QUdCYytlYnZtWEpkeUo0SnhSN1BvMWNpQ1kyYzdwdVEwUzJ4RU9jblVpRFdNRUZDdC9yQmJlYlJIRHUyVklZMldFMnNScVBXQ1k3S0VWRDZkNlJNMGphMk9xWjh6ai9XUWhIWkRDdzd1a1gyRG52aDF2ZWtPNURRcVJ0Y2tVVkdtUGxNUFFLVzd2bE5LR2xHcEtoWkdSVnNBdHJOYUJvcFBUZG5aSzl4WnpNSUhGemgwUVBiMHR0S0haL3RWWnpPUGxIQXlnem42bGlsUzdlWTJRWWNUMFFDYkQ4YTBCbGVzTzdOeUI4QTZtYmhoTVZ6ako5ZWswVFBpM05BaldYcm1HVXFFK3cwbnR1d1oyN3R2UW5WdGdJMDZNSjYvUFlaNTM4V0hkY2dXaDlnc29zWGtQRk1kM0NlemMvakV5WEJTeHhJYXV0TjFSd0w3UktLUU15WjI4cG1EWkRpR3djL3RIZDI2cGpUdzNoWDZ3bFB1c1ZTeDJxNk9TQnd0M2lJR2QyeGRnbXc1a3VIV3A5TU5sM0xZT3lVV3AzTUZ1dzQzalFJR2QyeGQ2aGx0c0o4NUpvVUM0N1oxU0E2M2k2czJzd001OWsvRU1kNWlWV0pOTTNWL0tiZFdGazdCdzVnVjI3cHZvazRiNVZ1TGtCT3BuaGV3bmJXSXR6bkJtQjNidW0rak9IUnRIM3BqTHZOa2t3S1NCdzhLWkhkaTVjWXhSRmNvNEczbFJPdjBuRjU4MnJNQXMxWHNvT013TDdOdzR1bkFMck1TcGlhaU1pK2lSZTRUOWJMS040OUFDT3plT1Bxb3VqeVZ2eUdYZWJoYXJLRlhHT1M0d2daMGJKNHFZWnlYT1M2WC9VTTBsRDhyREVzNXhnWW9lWHR2ZEpkMFgwczdwbGR6Y2FHSzVrOXlVei82dlhXeGpOUVYvZFIrd0dCUzFpRzRKM2JNWkg3TE9lYjlVSlM1QVNZN1BHSmJaS2Z4NkM5NUo4NkRiT1FGNFd3REdkRm56QXRsMjl0SE1hRnM3cGJ1THVKV2g2eHg4NWlnQ2p1YTJmUGF6TnFtWm1hS3JJNkxxb1dRUERPTDlndGJOby9VUXJhd0cvZEhJYVBXMFdndFFhbzFPTmFWV2taTlV6a3pneUYzNkIwa2NVTFkwQ2pmbnNjYzY5ZlVRZ0YrUEJJSmdjMjV1REhGZUNnVkpMbmt3c05kSFFHZEdHUnNRd1MyMWpGQXpoNVg0QWRuYUsrL3BsbmQzeWRzNjVhODZwQy9hcFUvYnhJOWJ4WTlheEE5YXhQZWJ4ZmVheFhkMTN0R0JLYzVNQkk0Y1BnNThpci9XQ2ZlVmNPdlQ2U01kb2JuV0VGMGljUjl1SjYvUFpxQ2JHeGdOUnJRQUJRelpVQ2xtRFN1N3U2VjNXOFNYYTRXbnE3aEh5cmtIU3ptWXhHMHU1TzRzNUc0cllEY1ZzTGZtTWJma01UZmxNamZtTWpma01OZm5NTmRsSTY3VitkSE1CQzNqelVXZjRvcE01cHdVK3ZnNDhqRGJYdDBST0lMRk9mMmEzTHdZOUUzWEF5V2N2VThlQ1V5U2c0b05Ycm1VVUhkMVNTKzVoTHVMMmF1em1YVnA5QmxKYUhVN2xEWEh4NkYxL0N1Y0ZIemtvNEZZOGlnSENXa0FPTUtPZ0xOaTFyRFVUaTYwb1M4WTUvaDFSMEFKRnVkUU1ZSFdwVjZVVHI5VWk3N3BDc1ExT1JBT0tyYjBZZVhmamVJdmlya042ZlJKOGVRUkRoSUdkRU42eE1UbU1VWk43VXZFckFNK0ZMVDgxQXlwRXdTTGMrakRFOGM1cVIvbnNSKzNTczJzK2NNcUNEY2tldElHbGIvWENUQktRbFpEKzNSQWN4dTJHYjhZdjRjT0U1L2FyenNDU2hBNUYwMmNua2ovcG95TDZaVUhSUE96bkZ2MjVJNm9yOVVMMStVd0sySkoxT0xvUlBkcGVyOUR3Z1NJb0hBTytqc1Npam55b2pUbVpaZVFNNkpRWmwrV2c1RzZobEkvYkpFMjViTW54bEZ6OVhlY3RoTTl4QWtlNXhiWlNKaFN3UnkrbGxKRkdBak5DOVV6Qm9uVDJpcy9YTWF0VHFUbXc5c1pJNHZmWVdDbWh1bDNidHlBWmJIazdRWHNyaTY1bXpmNUxoSkdRUlBWTnh2RUgyWXhpMjNlMmhIbnRta2pTSnliRTAyY0dFODlXTW81K3hYQzdLc2tmWUlXMVNQL3Vvdy9QWkhTYytxVXo5UXd2a3kvYzNxU1cyQWx6MHFtZjEvRlo0K29ncWxydWp5ZXNUcEtmYnRadkQ2SFJVK1FncmVEU3M3dkdEQlRTWkE0dDhST1hweE8vNlZXZ0VIUTFGcHVERXJEM0JIbEQ5WDhlYWswbEl6RzIva2ZBMllxbVg3bklPdEVFMGM1eUt1eW1IODFDaTdLNUpXcmJ0bmo2SmZ2MTIvWFFaczFnM0I0WUoxZWdzUzVGVTd5cGx6bS9SYWhpVEhUT1VpWlhieTJyVlBhbE1lQzFwUFhSL3lPQVRPVlRMTnpxS0pIUDFmcTl5OTkwU2EyYzJiT1dTVnRySTVXUDJnUnI4NWlGcUlaS3hZdUNBZ1M1MDZPSnpjWHNaQ1F1Z1V6bldQVk1TZ1F0elNLbDJiUWFEdDY3Rnd3RUFUT29Tc1hxeE1vS0xuQ3UrVStVNy8xSWhWUHpvanljcTF3WVJxTjNnNWZKUWtHZ3NTNTB4T3BoMHE1cUI1NTBGVG5SbVZQMnBEeXh4ciszQlFLdlIxMkxoaVlmdWNpa0FkbkpGR1BsSFBXUG5uSVZPZUdKVS9pb1B4MEZYZDI4dmpWWUw4RHdFdzlRZUxjbWlUcTBYTE9aclp6OEdweEEvS1RsZHlaMkxuZ0lYaWNlNndjM1I1c3JuTXdVanY3NVNjcXVEWFl1ZUJoMXVjNWNPNUo3RnhRRVNSekNLam5qTHMxeloxRERJdWUrQUg1ZDNoc0RTcUN4TG5UOUhsclpJL0pkd2lQU0o2VVFmUmw2MXFZdDJMbmdvUWdjVzUxQXZYTEVpNnNXKzRWekhTT2tEMVp3OHFMTHY3ODFQSHJjNzd2anBrV2dzUzVrK09welVYY3RrNnBpemZ6ZXdoRzhSUzcxWC9XQ3h2U0dmdzlSTEFRSk02aDcxc0wyQy9heFRaVGQwUVhWVTh0cmI3YkxGNlZ4YUJsdytBY3ZwRnAyZ2tDNTlEUEZVNjBoNnZwOTVXb25yRk9YdHZhTVg1ZmlYSHpIRTUxMDB1UU9IZTBmdi9jR3dHNGZ3NUt1dGcrK1VIOWNaSGU1VjdZdWVsbG1wMEQ5Tnl6MUlidUUvNXJuZm4zQ1V2YVdPR28rcUpMdUNpTldZTHZFdzRHZ3NTNUJWYnk3R1RxbVdvK1owUUJTOHlOVmxiN2I3dDBSd0Y3QXRwTmtyQkU0RlEzclV5L2M5RDkrcnF2SHlTUUQ1ZHhDUU95NlF1cTNiSW5ZMWgreWNYRDdCVXRpUURuY0ZVM2pRU0pjOER5V1BMT1FqYThSK29UVFY3Zkttc2VtRWxFOWtpUGxITm5KZE9MNFUxUnRqTjJ2aG4zejhEM3dEQUJZdnFkQTZDekk0bWxkclJSK2lkdFlpT3JTcWJ1SVF5dkpXcm9vc24vT3REZXVlY21VL0JlaHVoZTV3d216TVB5QlpUZ2NXNitsYncwZy81SGcxQk1LR3dBTm5XbEZVOGxxWDdWSVQxWnlWMmR6WnllU0IzbnBHRHVNdDg0Z0NnOTUza3hVdUNCbWZpZlRXSkMvZS9LeEhsaTROdXd3VW5RT09lR2tnNm1FVTlWOHZFRDhvanA4d2c5MnpHS3A1SFI0Z2JrdDVyRng4cjVXL1BZaTlPWTA1Qjg1SkVPWXFFTlBTTUE3ZjVuZEo1ZjE4NElab1Iyd2VNY05ObXFPT3JuaGV6WEhWS25xYXUvZkFQbUowT1NWa0dxOWo3NXd4YnBMeTdoc1FwdWN4SGF3L1dIMmN5bEdjeUZhY3c1S2RTYVpHcDFJdHA1ODhSNGFtVWNkWHdjQ1Y0ZXE3UENES0I0Qlk3UldhWnp0QU54bEE3YTAxUGYxaFB0aG1sRHUyRXVBV3pFWWh1eHlFWXN0S0puUFM2d0VwQ2g1OFhzNnlTWnlNVEJhV0ZRT0Fmb2pRWE5mV1VtODNxREFJTmc0TFpNaHhmbVZNK2c0R2xpdEJLM21qSW93L1FDeHR6M1c4UXREY0xMdGNKejFmeVRGZHl2eXpnby91NHU5dTR0L0pOODlzZDU3QzE1N00yNWlKdHkwU2JEMzVzYmM1bnJnUnptMmh6dkhyOVhaekUvekdLdXlxU3Z6S1EzWnRLWFo5SlFhVnlhVGwrU1JsK1VScTlQb3k5SW84NVBwYzVOb2RZbVUyY2xVV2NrVWFjbVVqOUlvRmJwKzlHQ3dXRHFJanV5ME92WnhIaU5uZHMzMEM1UmNQcVMwSlMvcmVEQUEwYnh2blZBQTh5RzJuRklSUHZ6MTlGb0EvWGNFVFYxU0hIMnk5RzlVbGkzdEwwTDZhaHZvQzU5MUNwOTJDcDkwQUoyU3UrMWlJZkN1L3IrNWY5cEV0OXFFdi9kS0w3WktQNnJVZHpTS01MNTlzOEc0ZFVHNGUvMXdpdDF3bDlyQmNqRUw3cUVQN21FRjJyNFAxYnp6MWJ4djYrQ1U0Si92SUwvVFRuM0VKd1lwZHpkUmR3ZGFMdHQ5cHBzWmtNNnl0TS9TRVFXTHJhUjNxMExna3ErSUhJdUdsMmxnMUhtcC9sb29Xc25yeW1CR21EM0VTQ2ZxS0g5MUVuWk15cUJoWjUrUWV2aHRTNWVhOWNmRjlIQ2FKQVhvUnhzMEtrL05PcG9oSXRDMUZCYXRVNFZwVlVTU2dXaGxCTktHYUdVRWtxSld5bDJLNFdqU3NHb2tqK3E1STBxMlNOSzVyQ1NQcVRBaVpFMEtFUHQ2MENuaHd5bkI5UWtIN1dDdGVMejFmd0RwZHlOT2N5NlZCcFNJTHE1WVVJN3YyYWZGb0xGT1FDMGkwUmx5b1owK3RVNkFWcDVhbEpkVUlYSGc5RDBuOFl2Y0RJWUQrVUJaUDNFRUFBVnlnTjBoc0JrbkZUUVNUSWdvTk9qU1gvV0JSZ1ozaTFES24yMm1yK3prSVV4K3VSNFZCUk81cnpwVFhoQjVCd0FKVWcwY1VvQzJvZ3V2RnZxTVhWTi82d1BhQ3haODRDSW9HQTNyOVZTV3NhUXNxdExnaFA0M21LWW9kTXdkMEU3eEUvTUxYeGJmaW9KT3VkZ0ptR0htUVQ5ajNvZUJwZkF6U1JDSVhqVjB5ZDRpa2JWSFowU2xJTXdBVnFUaEhhTDl5YTg2ZEl1dUp6VE0vOTg5TjByZFg4SkMyVUsxRldtZmlVUmlrSExIaWhKWWNEOW9FVjhxSlM3TUkzK3hxMkVVMjllY0Rsbk5BRjZ0Q0Y1UlFiOVdyMEFGVFJqOWxmK29SbGdYaTJ0UXNVQzA5NHJNcG5sc1JRYVp3M3pmTHRnQ2dndTV3d2lpVGxSYUlYRVBVWHMxazZwUFFEUEp3bk5nUElZR3RQZXAveTVScmdxYS93aEdWT2Y3WUxST2IwaElOVmRrRW8vVThVbkQ4aW03Mm9kc2dFVDRWN0JrelFnditRUy9pK0xXZWFZanRvdUdKM1RUenRvaTZOanlldHltUDgwaVpXa3l1SFpoRWtCN1RnZ2FISDk4bk0xL0laMCtvaUoyczZ2RndKSE1EcG5vTGZDNmdUcW5tTHVxdzZwa2Rhd2RXWUZUTXM2T2MzYWgzWnlPVGVGV21ERmVjNUFQL2tXVzhselV1akhLamlZdy9hSkhselptUld5TnRiS2FYQXkvN3lRUFNtZW1nL2FUZGtJRzd6TzZTTXNOTVRoZG5KREJ2MThqWkEwcVBTTCtNcUphY0dyYU1INWxnYngybXpHKytTTXFSbGhnOWM1QUp6VHJ4SXZpeVdoNEgyNVRrZ2RVb1lEY0d0ZHlNYXc1RWtZVUg1ZnlhOU5waGZFNk5wTlFhb0xhdWNBUGRYQmZHS0ZrN3cyaDNtMW5zOFlrb2ZNdlhVOWhFUHhqRFd6MnVkdDBvL3oyQlZPZlJ1aEtkQXUySjBEaklaQVR4UW1yODJtLzFiSEp3OHFmWUxIM0dXd0lSdXM2c2tZVnA2dDR0ZWwwZ3R0eGlNMEFyeVQwQXh3RHRDZG14dERIT3RFejl0OHlTWEFWQjltWHBMSmEvNURNZURNYldTMFQ5cWtuK2F6eDhWUnFLa2pzWFBBZUtxRFV4QUcyU3N5R0Rndnc3c2xGNlhTZ1hodWY0aUZXL0xBMFBGTUZiODJoZGEzMThET0dVQmI2T1pCdGp2S1RxNVBveDR1WlQ5ckU0dEcxU0Y4RGVYUUFvYUxPa3A3cjFtOEpwdGRZcXpDTkZyYnJ3dk1Zc1k0WjZCckJ5ZmlZaHR4WmhKMVJ5SHp6M3JCMnF1NEtBM013emNEZk0vd2pJMkludWhlK2Q1aWJtVThOYzhRRGpzM0NiU0ZmbXZuUWl0eFlqeDVSU2J6U0JuL1FZc0Vvd05Nd1FnWnp5MitUNGphV0k3K3hGR1lTU3dPOUU1Q004ODV3RGdMMFJEZ1htb256MHFpYjgxam42MFdQbTBUNC9xVmNrSnQ1N1JoRWQweGl6UGZRUWEwVXkydC9xZEp2QzRuOE5lSFo2UnpnT0VjMGc0U0hscDJlbTRLZldNdTg1c3lEa2JiclIxUzRvQlNTcWd0ckRZZ2VDakZJNmpvV2hTNnJJY3QzRTkwODlyT0x1bStZdlJWR0dyWXdNMGtacXB6RXhqbVJhR2x4VWM1eURNU3FmL0xaRFlYc2s5WDhhODFpSisyU1dIZHNyTmZUaDlDNjZaS0NhV0tWR29wdEh5cmxVUHJDNkdoZXdXdFgvQU1pSjVCMFFQWmNVUkM2d2xnS2dmRE5FRHFVRHEwdnViRkYrYjdBamtZNEZRRXI2STFOVEM2U1JwYVphUHFTMittUHVDREp3MHEwRzVuSjlQb0JpZnMzSDZaU0hoQU5GcmdEdWF0aWlQUFNxWTJaRERYNWJKM0ZIQVBsSEpQVlBEUDEvQ3YxQWxiR29TM204UVBXOFV2MnRIaVBEaXo5L1JJVUQ3Yit1VFlmam1oWDA0YWtGTUcwV0srekdFbFd5ZDNXTWtmVVlHQ1VVU2hHMUgwZlNrbTFCSkNoUnhjUnFoUUJsUVNhaFdwdWlnVmhyWUdHaVZtT0JONmVHMVExTnl5eHFxZUtic1d4Q3BqY0dEL2JCQTJaTkNCL2NwL3hqdm55NFI4ZW52TnM2SzlubGJFVWlmSFV6REpQVCtOdWpTRHZpcUx2ajZIdVRXUHVhMkF2YXVRdmE4WUdmbnJNdTdSY3ZDUysxMGw5MHdWOTF3MS8zdzEvMmNYLzZLTGY4bkZ2K3ppWDZrVi9nYlVJVjZ0bitRZjN4M29WR2pyMXh1RWZ6VUlielFLYnpZS2J6V0o3elNqaGRZZnRZcWZ0MHRmdGt2Yk82V0lIc25XRHhNakdkSXpKT1plWG9Qc0dORDhCMWtXMHYvSGJSS1VkSXZ0MkxtRFpDTG5vZDA2MEFZbzZGK2kwU1U5eUgrTGJjUVJkclFuQ05USVVQOGQ3MFRwOEtRRXRQM0M2a1RxdEVScVRSSUYyWEZ0TW5WT0NuVmVDclV1RmUzVmNFRXFkV0VxdFQ2TnVRaElSMXlzYzhuM0JiSXZjR2tHYzFrR2Mza21zekdUZ2FrMzFBTS96R1orbE1QY2tNdmNuTXY4SkorNUU4NkhFaGJPQkVqUFVOcEg5c2dsYm5WQTFBSTNLOUp2SWRaMmRjdTNGN0RMWUJwaE5HWWd0SnRWenZtaEMrZTE4Q0F4L3NSQWZ4RW9FeWV4SXVZZUdwQjlBUmk4ZklGVFlxR05XR1FubGpxSXd4MVFIaERMblNUMHlxbUoxUGtwOUhYWnpFT2wzTDhhUlNoTW14Z3RjTGRNUS8zcTZKY2ZLR0ZQakF2a1BldXoyVGxnUWlCZnNTSU5qTTJMRHBLSnZ6SVYzK1B4SGg2a1p3TjAyUE5qMEYycnkyT1JmSkFJWWVqZjBTWFYwU29YbUhRSFV4a29aS0hHT0NPSjh0N2FCUGcxNmFFenk1Mzdma3lZT2wxNC9kTVoxeEZxMDNVcDFNTmwzSzR1cVlWUkF6RzNVTFN4Z2xIbGhScjBxQ3B3M1hzQWZvMXo2R0RuZ290OXlnZmFvZDJQaVNWV1lsMEtEYk9jK0g0WmFqdlY3TnNJNGVYS1NSWG1TWmVsTTFEN1l1ZENHOE8vQ0hTbi9qVlp6TDhhQTdYYXZJWlNZVFo5dGI0TUVUc1g4b0IyZTVBRXF4T29CMHE0UGQxU3I2blA0ek9pZ1VZM21OeVlNNzdpR2xLczMyRWNPdGk1bVlSZTJ4MmxQNmRxUzZOUVRacjh6Q0NJRmtiN3RGWDhTUjV6QXZRNGRnNkRKSWhDazFtWVZ6NVp5Y0VjMC9UckpoMmM5bVc3ZEdjQmMyTGc3aG5HenMwa2pLb3VHaTBOMlZ6RTZvLzFOdm41TGQyOHRyMVR1cWVJUFRsdzMvUmo1MllZK25pMzFFN2VsTXQ4MFM2MXNLcHM2dXkxVjlEQ3V1VmZsbkNuSkl3N0I2TDdIY01oZ3AyYllZQUJrV2l6NzZzeW1iZWJ4Q3BTNVUwZFh2c0VMYUpIZnJDVWc1a0tkZzZqZzV4eno0MGhOcVRSLzZnVENrY1YydFFySnYyaUZ0VXJQMVRHbldvNEY0R2R3K2pPellraExraWxYM0lKV2NNS1llbzNFbEFnUnZmS0Q1ZHhweVZpNXpBR3VuUHc4OXdVNnJscVBuVlFIalYxYzc1SjU1TDBaZjNZT2N5RWMydVRxV2VxK0NUMGJEUlR4MVpoZkd3MW5NUDFIR2JDZzdPVHFkOVg4b245OHJEWnprWDJ5TCtDT1FTTXJkZzVETUx3SUlaWW0wSTlYY1VubXAzbllONjZwMXQrQUY4cndVd3k3aHpVYzMrbzVsUE1ydWQ2ZVcxWGwzeGZNZmNEN0J6R2krNGN6RnZQVDZQLzdCSXl6SjYzZG5IYXRrNXBjMUVnVnh4aTUyWVl1bk56WTRpTDArbFg2b1M4VWNYY1hZTGFXZTIvN2RMdGhleEsvSDByeGd0eWpwaHZKVGRtTVc4MGllV2t5ZmVwTnpQYVI2M2lyZm5NY2REanlMbTlEdURRd2M3Tk1IVG5GdG5KYTNPWmoxdkZCa2FWVEwyZnFZN1czbTRTcjh0bGx1UDc1ekFJRUE0ODBEZFlodUZ2WjVmVXcydG1LdWNacXlMVjF4dUVLN09ZeVdlQytSM0RvWU9kbTBub3pzMkpKazVPSUI4cVkrTUhaTkxVWWc3MExYR3JmM0VKRjZjeFN3TzNPeE4yYmlhaFM3RFlSbDZZQ3BOV3Z0Q3RLS1lPckpLK0k5Z3pWZnc1eWZSQ1kvc0k3RnhJbzFkeUlBRlU5NXZ5MkU5YXhXYlc1UDJVYVdVc2NWRDVUUm0vT29HYVB6Nk8reC9Hb1lPZG14a1lCa1NnZlRET1RhR2ZydUpnWURYM1VSbVFNSWRFVDFTdnZMbVlBNjNuR01MQisvb2R5YUdEblF0ZW9MOE5vTzhodyttUEdEM09TZDFSd1A2M1hXeWdOY0hVZ1ZYMWpMVnoycGNkMGkzNTdPU0Q1N0J6b1lWaG15RmNCUHBsbVFNOUQralZlaUZ2Qk4ycWFlNUtDREM0bWxMZmJoYmhMUTZ6Nlc4YUNPR0FvSE51NHN6R0dFUVQ4NktKeFZaaVpUeDFUVFlEVTRlRUFibFBNSDlsSzB5QnMwZVVsMXpDK1duMEhKaEFoSXB6aG0yUnZwdlR6QW9pOXNMM1AwMzhEdmlvQml5d292M0xUb29uTDBxamYxN0VRaWNsRHNqZHZDYWJyeHg2cUt1MVYzNmtYTDliRS9vQ25QUHRHaE1KS3VmbVdnbkk2b3ZzeEJJN09hdXdUYkxVcnVNZ0QzZVFVRFlkNlNDUGlpV1h4WkxMNDhoajQ4Z1Q0cWtUNDlGK2VHdVNxSE5UcUV2UzZSOWxNL2NVc3krNGVLaTBDdHpLSU5xbXhOc3A1a1lMbzMzV0p2MjBnRDB1VHQ5OExoU2NnM3grcElNNEpaRzZJSTIrTEpPK1F1ZnlXY0hHRE1RVm1jeVZPc1lPaHpCUVhtZHNjcGpIYk1wbmJpOWs3eXBpZjFIQy9hcVVlN3lDZjdvSzdmSzVwVUg0cUZVTTc1RXloNVZHVmlNRHR1TWhlRnhHcUgrdkV5N1BZQTUzR0tPTmZ3ZVpSckE0cDIvRmVrb2lXcmI1UkNYM2NoMXY3SVFLclRBTGVGVUhiZXhhanpaMkJaUGVhQlQrM1NTODB5eSszeXArM0NwKzNpWkNHdHZaSlVYMHlMWmVPV0ZBeVJoV2lrWVZGNFdlT3pBa2VUZ1ZhUkc0UUZmbUJwUkh5dmpURStuREFuYzEyQ0Fvbk5QTE9LaGRMa3lqNGZ6ZTFTMUJNVnZzUmhTT0tnVXpuMEszVW9SUWk5M2VEYXpMQ2JXQ1JMdFgxNHp2WHQzTWFxQlhGNi9CL0dCSVJGdTJjNnBIbVpLSGhrTDJoUGY5dWxQYWxNOGVIUnZJSFRZTmdzVTVmWjB3ek5MLzNTUkNrb2M1bEtUdlhRK0lzd3ZqUThFa3dBRDYyd0RTbUtZRGxrMkZhRDVCS3g0NEpWNnRGeTdKb05HeitRTXFIQkJVemtHSkErVkxDeHVBV1JtTy9VY3ZXcnN2UVIwSnhiUXg1dmgza0xrRWxYTS96R0xlYXhIcmFGVTI5UW83amdNRUROL2xwQUlsNXRWWnpOR0J1My9KbDZCeTdxb3NCc3BxS0hITTNZTUR4LzRDV25sRTBxeDlLTW10VHFBV1FGOWc1M0FFTkZnVmtwejZacU53VlJhOWRPSTVKSUJmQjVrTGRpNlVvNU5ES3d1OU8zL3B2WUNkd3hIQUlHVXRZMGg1b1VhNEpKMDVQSEM3cE84TmRpNDBRMURSWFNRd1k3c3hsem5XU2FMSDhCc0RxMS9YQkFMc1hBaUdvbm1hR0cxN2wzUi9DWGRxSWpVdlp2elphSDc5RWlDd2M2RVdpZ2R0R2h6VkkvKzJnajh2bGRZZllhZzc1OWNwZ1FNN0YxS2hqWTMxOEo2NGZ2bTVhbjVEQnN4VjlWdElEUHc2SlhCZzUwSW5KTTNUeVd1T2Zobm1EVmRrMGdGODBzMkJ3YzZGU0lqYVdBdXJSdmRLejFiekd6T1paYkhqOHdic0hIYk85SUFDemkxNUtnaDFXNmYwWkFWM1NUbzkrUjBYdER6ZzF4MkJCanMzdTBQVzBJWGZ0Q0hsUDAzaVBjWHN1bFRxQ0llM3dhZkJOZ1BzM0t3TWFEOUc4Y0Q4dE1TdDd1cVMvK1FTYnNwbFRrbWdGdHFtTDcxTmdKMmJmU0dveUxaaXR4cmVKYjFhTDl4VHpGMmNUaDhYUjg2SHBwNFlVbjNiZjRvSkt1ZXV6bUkrYUVIN1cybFRjbi9zN0FnNFBTVU5mVnRQeUo1ZVFhdW4xWndSWlhlWEJEMzZRQW0zTVpOZUZVK2k5QWFORExiNXRmeTBFRlRPWFpQRmZOZ2lOakVtYjhNeCswTFQ5N09CMFhOVTh2VHdXaU9qbFJCcThxQzh1MXQ2dTFsNHJvYmZYTVJlbWNtY2xrZ2Q2ZER2Tlo5WXhlalg4dE5DVURtM01ZTjVyVjZBMDdSUDBOeXlCeGlXWmpVaVlraG5VR2RBUVBUcDlBcmdrNmVMOThBa29KM1RXbG10aVVWcHpFV3A1U1JhWnBFK0pEdjc1YkJ1NmRNMmNVdWo4RXcxZjI4eGUwMDJ2VGFGUHM0SnBkdjQ5ZDVwSDB6OUNBcm5BUDJ4cE9la1VMOHU0ejVvRmFONjVkaCtoSzF2Tm1QdFJjVDB5dEc5Y2xRUElxSmIydE10UWJyYTFTWHQ2SlMyZGtwZmRVai9iUmMvYXhNL2FoSGZheEZoK3ZsNmcvaEtIZjk4RGY5VUpmZFFHWGRYRVh0ekhudGxGbk5lS2cyemhHV3hwSGZoRnN4TWpmUm1tT2ZYNE5OSXNEZ1hUY3lMSWVBNExzOWs3aXhpSHk3akhpMUhnSUt6R1BpWUJxRE9yMHE1QjB1NSswdllYNWF3a0s3dUxtTHZLbVIvVnNEZVZzRCtKSis5SlkrOU1ZZTlOcHU5S3BPNUxJTlpuMGF2VGFaaDZGeVZRRUhYSE81QUZkdGN2Um05QktGcUV3U0xjekhFbkJoaXNaMDRObzQ4SlpFNkk0azZNeG14Sm1rMkF4L1Q0SFFna1FLSFRrMUVpL2doWGYwZ2dUcEpYOU8vTW82Qzdqbk9TYTdRbC9zZjVTQVB0NU9MYkdoWWdCYno2bVdrTkMvQk41ajZFVHpPR1VBN0FuREtoaFRHcDBaRWZ3TnZydG9uSUphQjM3OERlN1ZxY0JGY3prRjdvYk5XUDEvOTlwSUphZlJNTmlIWkJETkZNaitDTGM5TnRpUG13UGkxMnd3aTZKekR6SHF3YzVpcEJqdUhtV3F3YzVpcDVxQ2RvN0J6R0hNd25JdW5YbXNRdlhyNWhJOXpzYVFsWmN3U3kvdi9QUWJ6WFFIblVpRFBFYThmMkxrVkRyY2wyWU9kdzVnQWpKWkpubFhPMFMzMXZGY3ZuNWgwYnFWMUFPbnA0Q3hXeW1JbC9WOEZnemtZd0J6d0o1WUQ3Vlk3QnQrc3BiMTYrY1NrYzZkRmRWaWlSaTAyQmdGLzV2ZGFHTXpCWUtNc050cGlweTJSSTJ1dG5lL1dqSHIxOG9sSjV5N2FVemQvUnp2Nk0waDE4R2UrTDRUQkhDUmdtNE8xUkxzUDI5RzJNYXIraStwK3IxNCtNZW5jcmVFbHk3NTJ6WWthdHNSSkZqdmovMW9Zek1IZ1lDeHg0cHlJd1JWZjE5d1JXUnBSMWVIVnl5Y21uZnR0Wk83WjI4b1dSdlJiNGlXa0tpN3BNTjhWY0FiTWlSTVhoZmVldDdYMG1aaTh0T3BtcjE0K01lbmNPL0Y1TjRhVkhCUFdnWkljL0NVYVhyRjJtSU1HaEFObmRITlc3Rzc5Y1ZqUlI0bjVycFoycjE0K01lbWNzNkR5dDdhU3MzYlh6US92OVFxTFp4S1lnOGNRTG9aY3NMdm4zTjJ1Wnh3bHlTVlZROE1qWHIxOFl0SzV1dGFPRDlQTGJ3MHJXYkd0emhJeGFJbVgwV1FDcHpyTVFVR2lLN3RRbFlYM0g3K3Q5cmJ3NGkreUtwczd1aVJKOHVybEU1UE9FU1NaVmw3N0oydnVKVHRLbDRSM3c2aU1YZ1ZmcThOOEsyQUllT0lVTEhIQzRXRWRHM2VXL05XZW0xTlZUOVA3dURnSE1lbWNxcW9kblYyUk9hV1B4aFN1RGFzOUxLSVBaVXNubUtkZk9zSG1ZZmJHcU9IMEs4QVdHN1Z3VDgrNnNKcW5iSVgyL1BLZW5sN1BmcGJOVHpvSElRaENRMnY3bDVsbDkwWVVuTGFqZWtGNEg3cHVnaTZkUUdHSWF6dk1Yb0FWNEFZWTRoUVhodmV1MlY3NVlGVEI5dXl5bG80dVVkekhONjFHZk1NNUNKWmxLeHBhUGswcHVpK3ljTzN1dXFYaDNYTWpoMUhtaE5vT1FQSkJ6Z1AvY05vTFNZeGgxSmd1R0VwWXFYbFJ3NGVIZGEwTHEzMHdzdkRMak9LYTVqWklYbDZmOWhYK3prRlFGRlhaMlBwVlp2bWowWVViZHBRZXY3TnhibGd2dW9BQ0ZTSVlEVytEaDlxUUJRMm1EQnBNalFIUXhzemIzYjF5UjhQR25hVlBXZ3UzWjVlN1d0b1podkdhdEovWWgzTVFITWMxdExSSDU1YTlhTS9idEtmMDdMQzY1V0h0aDRYM1d2WU1XcUxkM25lRklSeXFQVXdJSWVnWmh3RUg1a1FNd21DNmZIZmJPYnRyYjlzRGs0WThxT0dhMnpzUG5PR00yTGR6RURBZWQzVjNwMWZXZlp4WjhaU2o1T2F3NHJWYlM1ZC83WnE3dFFYZENnQkhrRHlHN3ZIRWhBN1E0OUR2a2NQenQ3VWN1OVYxM3JheVc4T0tuM2FVZkpaWmtWVlYzOVBUczg4ckkzdkhmcDJEMERTTkpNbjYxdmI0b29yM0V3dWVpczc3YVVUWlpWRU5aMXU3VG5FTXJuSzZUM0FTSitocjBER3pIUXI2R25wOHRXTndyYlZ6WTFUOTdSR2xUOGZrZjVpVW4xUmMyZFRlQ2ZVWTJPTDE1dHZpUU00Wkljdnk0T0JnZFZOclNuVnpXR1g3NTlVRDc3cmNiOVl4VytyNTE0QUc5Q2h3ek95bm5vY2UvM2NkODI3TjZCZlYvWHVxMnROcW1sM05yVU5EUTRxaWVGMDV1UGgyNTNEZ01EZXdjemltTnNiRy9oKzlQNytLZktPK1JnQUFBQUJKUlU1RXJrSmdnZz09IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiY3JlZEJsb2IiLCJtaW5QaW5MZW5ndGgiLCJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiJlNDAwZWY4YzcxMWQ0NjkyYWY0NjdmMmNmN2RhMjNhZCIsIm9wdGlvbnMiOnsicmsiOnRydWUsImNsaWVudFBpbiI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImVwIjpmYWxzZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjp0cnVlLCJhbHdheXNVdiI6ZmFsc2V9LCJtYXhNc2dTaXplIjo4OTYsInBpblV2QXV0aFByb3RvY29scyI6WzEsMl0sInRyYW5zcG9ydHMiOlsidXNiIiwibmZjIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN31dLCJmb3JjZVBJTkNoYW5nZSI6ZmFsc2UsIm1pblBJTkxlbmd0aCI6NCwiZmlybXdhcmVWZXJzaW9uIjoxLCJtYXhDcmVkQmxvYkxlbmd0aCI6MzIsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjo4LCJ1dk1vZGFsaXR5IjoyMDQ5LCJyZW1haW5pbmdEaXNjb3ZlcmFibGVDcmVkZW50aWFscyI6MzAwfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDItMjciLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJTd2lzc2JpdCBpU2hpZWxkIEtleSAyIEVudGVycHJpc2UiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI1MDIyNzAwNCIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTAyLTI3IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjF9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDMtMjUifSx7ImFhZ3VpZCI6Ijg3YzEzMTc3LTg1ZDYtNDBhYy04YzYxLWZlN2FiM2RlOWRmYiIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiODdjMTMxNzctODVkNi00MGFjLThjNjEtZmU3YWIzZGU5ZGZiIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkhJRCBDcmVzY2VuZG8gS2V5IFYzIn0sImRlc2NyaXB0aW9uIjoiSElEIENyZXNjZW5kbyBLZXkgVjMiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MjYyNjU2LCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX0seyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUMrakNDQXFHZ0F3SUJBZ0lVZGhFZzVZL1gyS1o1dm93VCt2ZjFsWmRKZ2Jjd0NnWUlLb1pJemowRUF3SXdhekVMTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFvTUNraEpSQ0JIYkc5aVlXd3hJakFnQmdOVkJBc01HVUYxZEdobGJuUnBZMkYwYjNJZ1FYUjBaWE4wWVhScGIyNHhJekFoQmdOVkJBTU1Ha1pKUkU4Z1FYUjBaWE4wWVhScGIyNGdVbTl2ZENCRFFTQXlNQjRYRFRJME1UQXpNREU0TVRVME4xb1hEVFE1TVRBek1ERTRNVFUwTjFvd1pqRUxNQWtHQTFVRUJoTUNWVk14RXpBUkJnTlZCQW9NQ2toSlJDQkhiRzlpWVd3eElqQWdCZ05WQkFzTUdVRjFkR2hsYm5ScFkyRjBiM0lnUVhSMFpYTjBZWFJwYjI0eEhqQWNCZ05WQkFNTUZVWkpSRThnUVhSMFpYTjBZWFJwYjI0Z1EwRWdPREJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCT3ZGMmVJam1nL3ZkZzJTTTdoVlp6TGpPTUllVm9tWVZkclJhVm9ncHVUTEM3S093SHV1Qm1YNG1TN2orUDZZZVBXb1U3c3lJV1JVOEZ3QWFBUE55NnFqZ2dFbU1JSUJJakFPQmdOVkhROEJBZjhFQkFNQ0FZWXdFZ1lEVlIwVEFRSC9CQWd3QmdFQi93SUJBREFmQmdOVkhTTUVHREFXZ0JTNzZEcGw5M3ZCMmg1RkRMdnlNTXZVQnlqM2l6QWRCZ05WSFE0RUZnUVVmdVREaHVrQVU3SnBucHc0cWNaY3ZPWE1NU293UkFZRFZSMGZCRDB3T3pBNW9EZWdOWVl6YUhSMGNEb3ZMMk55YkM1b2VXUnlZVzUwYVdRdVkyOXRMMFpKUkU5QmRIUmxjM1JoZEdsdmJsSnZiM1JEUVRJdVkzSnNNSFlHQ0NzR0FRVUZCd0VCQkdvd2FEQS9CZ2dyQmdFRkJRY3dBb1l6YUhSMGNEb3ZMMk55YkM1b2VXUnlZVzUwYVdRdVkyOXRMMFpKUkU5QmRIUmxjM1JoZEdsdmJsSnZiM1JEUVRJdWNEZGpNQ1VHQ0NzR0FRVUZCekFCaGhsb2RIUndPaTh2YjJOemNDNW9lV1J5WVc1MGFXUXVZMjl0TUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUYzTlk4OTgvNnphT0FwWm90a3g4TThMOS85Yjk4MWE2aVltd2l0cXpnR0VBaUJNdmpUNXpqYU0rVWVmcFByRy9mbHhVeGpXeUxWaFJkYVdvWXhVcnVyaVJnPT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBVk1BQUFDc0NBWUFBQURHK0U4TUFBQUFJR05JVWswQUFIb2xBQUNBZ3dBQStmOEFBSURwQUFCMU1BQUE2bUFBQURxWUFBQVhiNUpmeFVZQUFBQUpjRWhaY3dBQUQyQUFBQTlnQVhwNFJZMEFBQXlnU1VSQlZIaGU3WjEvYkpUbEhjQnZqaGpOY0M0TytkWGVYVnRVVE16aVA3b1lYWlk1MUlrS2QxZk5uRkhqNW9oQm1BN2oyTVJzWm9sbXhoaE5Kb3J0MjRLZ3NpRnNpbTdUQWRNWVJGUUVGVGNWeHcvcndBRUZSQ2hRK3V1ZVBjLzFxUVAzVE5zKzMzdmV1K3ZuazN6UzQyZ2ZudmU5dDU4Kzc3M1hJd0VBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFVRXBrRzYvWFBwbklSUjhnSWg1dDQxcjljWWF0QmZ3UDlRM242eDIwVFp0UDFEY3BSTVRQTmRlVTE0dXVWdDJNcTIxRkJreHRNam1yTHBWcTBSODMxMVpYMzJydkxtTUtQMjMwanFtUDNEc05FZkh6ekVXN0V4Zk9HV21MOG9Xa2s4a2YxcVhTUFhYVnFhWEpVYVBPcUttcU9yTXVtZnByYlRMVm5VcWxMcmVmVmtaTW1QMTEvWk9sdzdsekVCRUhvam1yelVaVGJWMytMM1ZqeDA0d0lSMDlldlRKNDFLcEtkb2JqQ05Iamh3MWR1elk1TGgwamRLcjFMUHRwNWNCSnFTc1JoRlIwdDZnenJTVmNYR01EcW1xU1NZeit2WXdFODZhcXRTMXRkWHA2ODN0dWpGalVqVmprNVAxS3JXOTk5UExnVnpVNWR3WmlJZyttcUJlT3FmT2x1WW8wdW4wY1RxbVhmYVB3OHdLMWQ1TzZGUDh0MnJUNlZ2MHpTK2JzUGJlVytya29vK2NPd0VSVWNKY2RNRFc1aWlxcTZ1UEg1ZXE2VnQxRmxhbU9xSTc2MUkxMjA5SjEvUkY5a3ZsRWRQNmhtODdOeDRSVWRKc3d6MjJPcDlpWXFwWG81MzJqMlpsbWovcHBKTytxajkycDhlTU9kM2VmMHg1eERUWHRNKzU0WWlJa3VhaURsdWRJK2s5aFU4bmp0TzNDekUxZDQ0WU1XS012bjNRM0I0K2V2akorbmJmS3JXRTRYV2tpQmpLeTV2UHN1WDVsTHBVYW1adE1yM2YzSzZ0VHI1VHVGTlRsMHcrV3BOSzNhei9ycU8yT2ozTjNsMmlUSTZtT2pjWUViRVk1cHFldGZVNWlycnExRE8xeWRTQmNWV3BHK3hkaWJxcTVBeXpPdFgzTDdSM2xURDEwWExuQmlNaUZzTmNVK0hVM1VWeVZQSU1IZFdWcDlYV3FWTnJhdlA2OXZLcUVWV24ycjh1Y2Vxai9jNE5Sa1FzaHJtb2pGNHZPaENJS1NLRzFIMFJxZ0lncG9nWVVtS0tpQ2dnTVVWRUZKQ1lJaUlLU0V3UkVRVWtwb2lJQWhKVFJFUUJpU2tpb29ERUZCRlJRR0tLaUNnZ01VVkVGSkNZSWlJS1NFd1JFUVVrcG9pSUFoSlRRUzk3V0NVdWVFQWxMcHdkVnZOdjVpTDNuQWJyOXg1MC8xdkY5aUt0YXo0RE1hN0h3RHorcnZuMHg2eCsvT0tZZHpFMDIzR1JQbjdNTVhTcDNpZVRHOTNiWEdrU1V6bHZudnV5aW92anJwem5uTk9nMUFmL3VzMjc3TWhoMmZuSm9kNXZRTmU4K3FQK0pvNkxhZEVxOTV6NjRkZXVYV0JIcVF3NnUzdFVXM3VuMnJ4am4xcTlZYWRhc25xenVxbjVaWFh5TlF0VTR1S0hWQ0pUZ1lFbHBuS2FiNmE0cUpTWWZyVG5RTm5HOUlhSFgzTFBxUitlcUNNelZOaXovN0JhOGRaV2RlVjl6NnZFQkwyS3JaU3dFbE01aWFrL3hIUm8wZG5WbzU1ZDk2RWFmK01pdjZkSlNrRmlLaWN4OVllWURsM2VidG1qenB1MTFPL3hqMU5pS2ljeDlZZVl3aHRiZHFsVHB1cVZxcmtvNTloWEpTc3hsWk9ZK2tOTXd6UHJzVFhxenNWdnFMdVd2S0V5ZHk5VHVYdVdxMTh1ZkwxdzM3MUwxNnNWNjdjVkxpYUZwQ2VmVjQrKytFK1Z1R0MyYzMrVnBNUlVUbUxxRHpFTlQyTENiL1Vxc0ZFbE1nMy9uWk81S0ZTNFR6dEpQeDZYemxGVlV4YXFLWE5XcW8vYkR0dXZMRDY3MjlyVk4zNjZ4SVRxcVAxVmtoSlRPWW1wUDhRMFBJWFhoanJtNUZSSDdaakpEZXFPMzYrMVgxMTh1bnQ2MUMyUHJOYkg1Ukd4TDBXSnFaekUxQjlpR3A0QnhiUlBIYlpKZHkrekk0UmgvZ3Z2RjFiSXp2bVVnc1JVVG1McUR6RU56NkJpYXN3MHFoL3IwLzZRUFBucUIzN0hSekVscG5JU1UzK0lhWGdHSFZOak5sSi8vM0NQSFNrTVQ3L1dVcHBCSmFaeUVsTi9pR2w0dkdLcUhmK1R4WGFrY1B6eEZiMUNMYlhuVUltcG5NVFVIMklhSHQrWW1xaTl0MjJ2SFMwY1AxdndxbnMrY1VsTTVTU20vaERUOEhqSE5CZXA4MjUvMm80V2pudytyOFpQWCt5ZVV4d1NVem1KcVQvRU5EemVNZFYrNWFwSDdHaGgyWGV3UTJUK0loSlRPWW1wUDhRMFBDSXhtbVJPOVQreEk0YmxtVFV0aGRXeGMxNGhKYVp5RWxOL2lHbDRSR0thamRRdDgxNnhJNFpuK0ZXQ3gvOWdKYVp5RWxOL2lHbDRwRTZUejV5eHhJNFludmMvMnR2NzY2K09lUVdUbU1wSlRQMGhwdUdSaXVubzZ4KzNJOGJEaU9zZWRjNHJtTVJVVG1McUR6RU5qMVJNaDEzUmJFZU1CM1BNeHZyY0tUR1ZrNWo2UTB6REl4VlRjeEdxcTd2YmpocWVydTRldVcwWmpNUlVUbUxxRHpFTmoxaUE5SEd6ZGxPckhUVWVicDBmNHd2NWlhbWN4TlFmWWhvZXNaaG1HdFhDbFJ2dHFQR3diYmMrZnVKNmgzNWlLaWN4OVllWWhrY3NwanBpdHoyMnhvNGFEKzBkWFNveE1hYTM2U09tY2hKVGY0aHBlQ1JqR3VkclRmdUk3YW8rTVpVenpwaCs1MWQvVXVmT2VsckViLzc4S2JVaGhqZXVNQkRUOElqRk5LYmYwZjhzdHoyK3hqMi9Za3RNNVl3enBwVUNNUTJQV0V5MTU5eTIxSTRhSDZ2ZTNlNmNXOUVscG5JU1UzK0lhWGdxTGFaYjQ3b0lSVXpsSktiK0VOUHdWRnBNdCs4OTJQdS9xanJtVjFTSnFaekUxQjlpR3A1S2krbXVmZTBxbG5maEo2WnlFbE4vaUdsNEtpMm1oZmM0dmN6akdCcXN4RlJPWXVvUE1RMVB4WjNtZjh4cHZpekV0Q3docHVHcHRKanUySHVJbUlwQ1RNc1NZaHFlU292cEJ6djNtN0E1NTFkVWlhbWNjY2JVdk1IRTYwS3UyYmhUSFdqdnNpT0hoWmlHcDlKaXVtVDFadWZjaWk0eGxUUE9tQjVyZmhLYko5MGx2UGdoOWZyR2VONzloNWlHUnl5bUpmSWJVUFgzTEhmUHI5Z1NVem5qakNtL20yOGxwZ05HTEtZbDhydjVzWnppRzRtcG5NVFVIMklhSHNtWVRvLzV1c0grUTUyOVoxZXUrUlZiWWlvbk1mV0htSVpITEthWlJyWG9wVTEyMUhoWTM3S2JsYWs0eEhUd0V0TkJRVXdiMVlyMTIreW84WEQyektYdXVZV1FtTXBKVFAwaHB1RVJpK25rQnRYNnlTRTdhbmphMnZVcC9pVXh2VEcwa1pqS1NVejlJYWJoa1h6T05FNmVXTFhKUGE5UUVsTTVpYWsveERROFVqRTk4WnI1ZHNUdzlQVGs0M25idlNNbHBuSVNVMytJYVhpa1lucnE5Q2ZzaU9INXk3cC9tWmc1NXhWTVlpb25NZldIbUlaSEpLWTZaSmZjK1p3ZE1TeUhPN3YxTVJQamM2VjlFbE01aWFrL3hEUThJakhOTktvbHE3ZllFY015clhHVmUwNmhKYVp5RWxOL2lHbDRSR0lhMDhXblRkdjN4ZmNpL2M5S1RPVWtwdjRRMC9CSXhIVDh0RVYydEhDMGQralRlMzJzdXVZVGk4UlVUbUxxRHpFTmozZE05U24rM09jMzJOSENZSzdlbnpYelNmZDg0cEtZeWtsTS9TR200ZkdONmZBZnpMTWpoV1BHdkplZGM0bFZZaW9uTWZXSG1JYkhLNmFURzlUY3Y0VmRsZDYrY0kwSmwzcytjVXBNNVNTbS9oRFQ4QXc2cHRsSW5YL0huKzBvWWJpcGVWVTgveVZKZnlTbWNoSlRmNGhwZUFZVjAweURPdmYyWit3SXhhZTdKNjkrTlB2RjBseVI5a2xNNVNTbS9oRFQ4UFE3cGlaaytyVGVIR3YzUHJYZWZuWHhPZGplcWNaTlhlU2VVeWxKVE9Va3B2NFEwL0Frdm5WLzc3c3RmZGFKRDZsaFZ6U3JFNitlcjA2L2FiSEszTDFjL1NId0MvT1h2Ym0xTUEvWFBpczVpYW1jeE5RZllncUdnNGM3MVZYM1AxOVlDYnYyVjBsS1RPVWtwdjRRMDZGTlIxZTNlbmpadXlyeDNRZWMrNm1rSmFaeUVsTi9pT25RcEwyelN6V3QyTkI3U2wvS0Y1aytUMklxSnpIMWg1Z09IZkw1dkhxN1pZK2FNbWVsU2x5Z1Y2TGxHdEUraWFtY3hOUWZZbHJaZk54MldLMTZiNGU2MGJ6VFU3WlJKU1o1UE5hbEpqR1ZjOUp2bHFubGIyNHRYSUVNNmNwMy9xMk8vZjVjNTV3R1phWlJQZmpzUDV6L1ZySDkzY3FOK2h2TTQ2TER4RG5xcFhlM084Y3VwaXZlMnFZdXVlczU5NXo2NFFsWHoxZTc5N2VybHRhMml2RE5MYnZWMmsydGhYM3o2eWZXcW9sM1BxZE9NRC93TDlhbjhmcUh0V3NmbEwzRUZMRUVOS2U0NXVWSVpsVmU3cHJ0TUZmaHkrbEt2SVRFRkJGUlFHS0tpQ2dnTVVWRUZKQ1lJaUlLU0V3UkVRVWtwb2lJQWhKVFJFUUJpU2tpb29ERUZCRlJRR0tLaUNnZ01VVkVGSkNZSWlJS1NFd1JFUVVrcG9pSUFoSlRSRVFCS3phbXVhalZ1Y0dJaU1YeG9LMVBoWkZ0YUhKc0xDSmljY3hGdTJ4OUtvd3Jtc2M3TnhnUnNSaG1vbC9ZK2xRZzVqa00xMFlqSWtxYWkvSzJPaFZLcnVrRjU0WWpJa3FhaTNiWTZsUXd1YWpidWZHSWlCTG10T2ZjZDd3dFRnV1RpNlk3ZHdBaW9vUzVhSm10elJDZ1Buck51Uk1RRVgzTVJxMjJNa09JYk9ORzU4NUFSQnlNdWFZS2ZTbFVmOGhGaS9RT3lPdVZxbnZuSUNKK2tlYktmWDNUV2x1VklVdzJPazJ2VWx1SktpSU8yRnkwTjVGdHVzN1dCQXFZcU5aSDYvVEhmVHFzblluNlpyMnpFQkdQMEt4Q3MxR2Jic1NXUktaaGdxMEhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQnBrVWo4QjRBb20rTWJUKzNKQUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzEiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6Ijg3YzEzMTc3ODVkNjQwYWM4YzYxZmU3YWIzZGU5ZGZiIiwib3B0aW9ucyI6eyJyayI6dHJ1ZSwiY2xpZW50UGluIjp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjp0cnVlLCJhbHdheXNVdiI6ZmFsc2V9LCJtYXhNc2dTaXplIjo1MTAsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6MSwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjo5NCwidHJhbnNwb3J0cyI6WyJuZmMiLCJ1c2IiXSwiZm9yY2VQSU5DaGFuZ2UiOmZhbHNlLCJtaW5QSU5MZW5ndGgiOjQsImZpcm13YXJlVmVyc2lvbiI6MjYyNjU2LCJyZW1haW5pbmdEaXNjb3ZlcmFibGVDcmVkZW50aWFscyI6MzB9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNi0wMS0xNCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyNjI2NTYsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiSElEIENyZXNjZW5kbyBLZXkgVjMiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI2MDExNDAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUHJvZmlsZXMiOlsiY29uc3VtZXIiXSwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNi0wMS0xNCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyNjI2NTZ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjYtMDItMTMifSx7ImFhZ3VpZCI6IjFjMDg2NTI4LTU4ZDUtZjIxMS04MjNjLTM1Njc4NmUzNjE0MCIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiMWMwODY1MjgtNThkNS1mMjExLTgyM2MtMzU2Nzg2ZTM2MTQwIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkF0b3MgQ2FyZE9TIEZJRE8yIn0sImRlc2NyaXB0aW9uIjoiQXRvcyBDYXJkT1MgRklETzIiLCJhbHRlcm5hdGl2ZURlc2NyaXB0aW9ucyI6eyJkZS1ERSI6IkF0b3MgQ2FyZE9TIEZJRE8yIn0sImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQm5UQ0NBVU9nQXdJQkFnSUpBS0lGbnRFT1ExdFhNQW9HQ0NxR1NNNDlCQU1DTUZReEN6QUpCZ05WQkFZVEFrZEZNUTB3Q3dZRFZRUUtEQVJCZEc5ek1TSXdJQVlEVlFRTERCbEJkWFJvWlc1MGFXTmhkRzl5SUVGMGRHVnpkR0YwYVc5dU1SSXdFQVlEVlFRRERBbEJkRzl6SUhKdmIzUXdIaGNOTWpJd016QTRNVEV5TURJNVdoY05NemN3TXpBME1URXlNREk1V2pCVU1Rc3dDUVlEVlFRR0V3SkhSVEVOTUFzR0ExVUVDZ3dFUVhSdmN6RWlNQ0FHQTFVRUN3d1pRWFYwYUdWdWRHbGpZWFJ2Y2lCQmRIUmxjM1JoZEdsdmJqRVNNQkFHQTFVRUF3d0pRWFJ2Y3lCeWIyOTBNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVqMjhVREVjU3FHUlVUMVBNRGFzbWoyR2Q2QnNUVFMwTTFPMlc5ZE0wWUVZOWhyRGdEL0Fzd1JWY1JieG55dDN4ZENQMEtoSWllZ05JUndVY1ZFSnZlekFLQmdncWhrak9QUVFEQWdOSUFEQkZBaUVBNjFtQ0NvQ25EeENrVkJYRG1oam1HMDFpYmRSV1Y2M2o1U2NTakJGbklrY0NJRUFkMVd3YjFpVXlLQmZqcHhrL1IvdDBPc3B0UE9JRjg3dVNoeTNsWHZiSCIsIk1JSUJzakNDQVZpZ0F3SUJBZ0lKQUtJRm50RU9RMXRYTUFvR0NDcUdTTTQ5QkFNQ01GUXhDekFKQmdOVkJBWVRBa2RGTVEwd0N3WURWUVFLREFSQmRHOXpNU0l3SUFZRFZRUUxEQmxCZFhSb1pXNTBhV05oZEc5eUlFRjBkR1Z6ZEdGMGFXOXVNUkl3RUFZRFZRUUREQWxCZEc5eklISnZiM1F3SGhjTk1qQXdPVEE1TURZeE5EVTRXaGNOTXpBd09UQTNNRFl4TkRVNFdqQlVNUXN3Q1FZRFZRUUdFd0pIUlRFTk1Bc0dBMVVFQ2d3RVFYUnZjekVpTUNBR0ExVUVDd3daUVhWMGFHVnVkR2xqWVhSdmNpQkJkSFJsYzNSaGRHbHZiakVTTUJBR0ExVUVBd3dKUVhSdmN5QnliMjkwTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFcEtSMGY2VmRxMFBZWHhIN0pWTWtHeE5vTTRYb0hGdVErZTdxZiswNFA0SjJHR1M5dlhGTFZRWjVjb0ZuUlBmQ2ZsRENMa3phZk0zUUVkY1lDVm95UEtNVE1CRXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QUtCZ2dxaGtqT1BRUURBZ05JQURCRkFpRUF6WHBvdzMvNHlPWE5iQUxvZE12NUtJb3JubjV3UlJJMzZZUXB2M1diaDAwQ0lFeTE0U3k3THJsZ0pTWlRHME1kNXdqUWJ5b1ZUZlUvMm9aeXA5RW5wbERMIl0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQktjQUFBTktDQVlBQUFCZi9TMnZBQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBVEVsSlJFRlVlTnJzM2QxNUU4bTJNT0RhNTluM3h6dUNyWWxnVEFTSUNJQUxYeU1TTUJBQkpnS0RFN0M0OWdXZUNCQVJZQ0lZVFFUakU4SDNxVnl0OFErUzBWKzNxcXZlOTNrRXpQNFpyT3JxN3FyVmE2ME9BUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRFlrMzhaQWdBQUFMamorR0l3KzNWdzV6OTUrTTl6L3p2N0hLNzRiNTNPUG44dCtlOG1ELzc1S3B3ZFhUc1ExRUp3Q2dBQWdEcmNCcDNtbjd2QnBmbC9scHNZcExxNjgrY2Z6WituelNlRXM2T0pnMHVmQ1U1UndnM21xMEZnZ1Q5bU4rbVBocUg2NjhObzl1dXJ5a2ZoM2V4Y3VESVpBS2pvL2o4SUtjZ1VnMDcvYlg2Zi8yZWxtOTc1eEN5dGVXRHIybnFBblAzYkVGQ0FvU0ZnZ2JqNEVKeGk0Qm9SRGt3REFJcDFmQkh2ODNlRFVMWGY5d2RoV1JEdStDTCtPZzlXVFVNS1hrMmJqekpDOWtwd0NpajN4bng4Y2VnSkVRQkFJZUxhTGdXZ2ZnOHBDSFZvVU5aMkVKWUY4STR2SGdhdTBwK3RwK21BNEJSUXNsZmh0ajRmQUlBK1NjR280ZXp6dFBsZE5uQzdGZ2V1VXNiVlBHajFJd2hhMFFMQkthQmtveEQ3N1FBQWtML1VLMm80K3p3UGdsRzVtV2V0dmJoenZPS3ZkNE5XazVDQ1ZsUER4Ym9FcDRDU0hjeHVtaTltTjhoTFF3RUFrS0hVTTJvZWpGS20xejkzZzFidm0yTTZMdy84Rm03N1djbXk0bEdDVTBEcDRtSkhjQW9BSUJmeDRXRmFvOFhmWlVlVloxNGVPTHh6ek9Pdms1Q0NWcWswVU1DS093U25nTkxGUmM5cnd3QUFzRWNDVWl3UFdNVU1xNnVRQWxaVHcxUW53U21nZExHMGJ6UzcwWTBOQlFCQWgxSVBxVGNoQmFRR0JvUUZodUYrd0NxV0JFN0N2SWZWMmRIRUVOVkJjQXFvUVh4S056WU1BQUF0Tzc2SVdWRXhHQldEVW5wSXNhNzUvRWs5ckc2YnJrL0NQTU5LZGxXUkJLZUFHcnk0V1NpZEhWMGJDZ0NBRnFRc3FmZEIyUjY3TjIrNi9yYVphOU9RZ2xXZlpWYVZRM0FLcUVWY0tJME5Bd0RBRHFXMzdjV2cxTkJnMEpIQjdET2FmZjRLS1VoRkFRU25nRnJFMVBLeFlRQUEySUhZMHpNRnBRWUdBOWpXL3hnQ29CS0hUYm81QUFDYmlrR3A0NHMvWjM4NkR3SlQ3TmVWSVNpSHpDbWdKckcwNzZOaEFBQllrMHdwOHFPZmJFRUVwNENhdkFxQ1V3QUFxeE9VQWpxZ3JBK29TU3p0ODBwakFJQmZpWTNPankrK0J1VjdRQWRrVGdHMWlkbFQ2dE1CQUJaSlBUcFBRMnFIQU5BSm1WTkFiU3kwQUFBV09iNDRtZjM2M1hvSjZKcmdGRkNid1UyYU9nQUFTU3JoaTIvZ2k3MmxEZ3dJUFRFMUJPVlExZ2ZVS0piMlRRd0RBRkMxNDRzWWlJb0JxYmNHZzk0NU81b2FoSExJbkFKcUpGVWRBS2hieWlTUEpYd0NVOERlQ1U0Qk5UcVlMY2dFcUFDQU9oMWZ4SWJuOFUxOEE0TUI1RUJaSDFDcjU3UFBwV0VBQUtxUjNzVDNaZlk1TkJoQVRtUk9BYlVhTlgwV0FBREtsN0xHWXhtZndCU1FIY0Vwb0daSyt3Q0E4cVV5dnBneDVjRWNwYmcyQkdWUjFnZlVMSmIyalEwREFGQ2tsQ1VlZzFKRGcwRmhyZ3hCV1dST0FUVjcwZlJlQUFBb3kvRkZMTitMWlh4RGd3SGtUbkFLcUozU1BnQ2dMTWNYdytCdGZFQ1BDRTRCdFh0bENBQ0FZaHhmakVJS1RPa3ZCZlNHNEJSUXUwT2xmUUJBRVZKZzZ0eEFBSDBqT0FVUXdzZ1FBQUM5SmpBRjlKamdGSURTUGdDZ3p3U21xTTgzUTFBV3dTbUEyQ3cwdmRFR0FLQmZCS2FBQWdoT0FTU3lwd0NBZmhHWUFnb2hPQVdRakF3QkFOQWJBbE5BUVFTbkFKS0QyU0x2aFdFQUFMS1gxaXdDVTBBeEJLY0FiajAzQkFCQTFsS2ZUSUVwb0NpQ1V3QzNaRTRCQVBrNnZqaVkvZm8xeEl4dnFOdkVFSlJGY0FyZzFrSFR2d0VBSUVjQ1UwQ1IvbTBJNkwyem8zL3QvV2M0dnZnU1pOMlVJcGIyalEwREFKQ1Y0NHZUMmErSEJnSW9rY3dwMkg2aEVKOWVDVXlWNDBWelRBRUFjbGx2am1hL3ZqVVFRS2tFcDJCN0FsT09LUUJBTzQ0dkJyTmZUdzBFVURKbGZiQTliM2dyejV1Z3RBK2dwczMvY0t2Ly85blJ4Q0RTb3RnK1FsWTNVRFRCS2RodU1Uc0lzbXhLZEhoemJNK09wb1lDb0lqN2Rkell4OHlUd1QvWCtWMXU5bzh2N3Y3VDlleHoxZnc1M2tmK3V2T2ZYYy91TFZjT0NHdk1yWk9nenhRczRscGFHTUVwMkk3QVZObkg5cU5oQUNqQys5bG4xTkhmRllOZXc2WC9iUXBrVFp2UHQzLytMUHVLbitmS1lUTjNnWWZPanE0TlFsa0VwMkE3cnd4QjBjZFdjQXFnL3h2OCtMQWh0MGJTZytZenZQTnp4bCtuSVdVRGZMdjVYY0NxZHVlR0FLaUY0QlJzdnRpTmkwcHAxdVU2dkhsaXFmd0NvTS8zNm9PZWJmQUh6ZWRGOC9QSFgrTjlhQkpTd0dvaVc2Q2F1ZnZXT2hPb2llQVViTzZOSVNqZXE2Q2VIYURQWW1DcTc0MmtENXRQeXY0NnZwZ0hxLzZRV1ZXb0ZGUlZ6Z2RVUlhBS05xZmZWQjNIK0oxaEFPamxCdjlGb2ZmcTIyQlZ5cXk2RERGUWxiS3FwZzU4RVdMemZtL25BNm9pT0FXYkxYampvbkJnSUlvM3VIbTl1Q2ZUQUx1OGg2YUc0V2RIbHkzL0hiWDA2N2tOd3FXc3FzOGhCcXdFcXZwNmZneERkODM3MloxRmE4VllndnZqa2YvUC80YmxwWnNEZTQxSHViNFZTSEFLTnFNUmVsM0hlbUlZQUxiYWNNZGdVUXlnUEc5Ky94QlN4azliU2lqbjI4UThxK3IwVHFCcXJFOVZyeWpueTh0OERmanR3VDlQT3cwQXB3ZmpCM2ZPOC9qbi83M3o1OXI2azAxTnpmSUlUc0ZtUm9hZ0duRVQ5ZG93QUd5MG9ZclgwRmZoZm5sZGZBdmRTWXQvNXpBb3ZaOXZZT2VCcWhnSS9OeHF0aHE3bXJ0REE3RVhrNUFDSGo5QzZqZDZsVlZROS80TGVpWkw1cy9CbmZNKy92bnBuVDlEOXY1bENHQ2poZllYQTFHVmwxVXY2STh2UnFHL3FlVlBMZlREZVBiNXkybThkTUYvWWhCMmZzMkkxNHY0MHBEUmtrM1JzOWJLcGRQbTdIdFFEclBNZFhOTitLVHNMOHR6NTZ0N1ZpZmkzSS9CbnZrYk1LOEtuMWZ4ZW5qWVhKZExtVi94dUQwemxjc2ljd3JXOTl3UVZIbk1hMzdhL01waXVkZEdodUJSSjRaZ1p4dWdGeXRzZmk1Yjd1TVgzMmczY0RDV09takdLRFpUajhmaGc3NksyWncvUS9mYVZzVjEzTGRRWXorMjlIMm5UV21nT1VhMkJLZGdmVW9GYXR6Y0gxKzgwN01ENEtjTjlVRklBZEFZbEJxczhQOTQxK0xQRXY5Ky9YcFdON3o1SEYvRWpXc01VbzBOeVY2WnU3c1YxMnpwVFpiS1dhRVhCS2RndllWdlhJQ3IyNjVUREVwYXVBT2srK0VnUEY2NnQ4aTQ1WXlGY3dkbUk0T2JzVHUrT0EyeDNDK0VqeDdHZEg0K0RZT01sbDJaQjZTczJjcm1HbFVnd1NsWWo1Syt1bys5aFE1USt5WjZFRktHeDJpRC8vY0htL3VzSFRUSDlzMXNQQVdwdXVVdDBOdUo4L1JUYUQ4QVRqNStHSUx5Q0U3QjZndmYrV3V3cWRPTG0wMlpSUTlRNXoxd0VEWVBTb1VnYTZwUEJLbTZYMStPRE1SRzRqVkZTU29VUW5BS1ZpY3d4WXViUlRwQVBSdm5RZGd1S0RYWFp0WlUvTmtHRHRiT0NWSjE0NjBoV05zMENFcEJjZjdIRU1ESzNoaUM2a203QitvUXN6bU9MMDVtZi9vemJCK1ltclNXTlpXeVRrNGRzRmJOZzFSL05uTUNhNHQ5aWNIUkdKVDZUV0FLeWlNNEJhc3RmZ2V6WHc4TlJQVU9tN2tBVVBJOUwyWnl4S0RVcnQ0ZTlxbkZuemIrckY1VTBvMFVwRHErK0xQSlZtUDdjMjBZWlAydEtqWTZqMEdwRTBNQlpWTFdCNnVwcmFSdkhQUS9XQ2FPaTRVUlVPcEcrWHpIbStWcGE2OXhUMWxUc3BxN053anA3WDR4NHlkbXNVd015Y1prVGYxYXpKWjYzZHAxQk1pR3pDbXdlUGg1STlGbWJ4QnpBU0F2TVNQMCtPTEw3RTlmdys2ek9HUk5sV3Q0TTJlT0w4NmJRQ0hyMDgvMGNaT1FzcVVFcGxnME55aU00QlQ4ZXRFZXkvbHFLdW03YkhxRHVPZ3ZObWptQkVBSjk3aVQyYS9mVzl3a2oxdjZ1V1ZONVdNVVVqOHFqYjNYbThQeG5CUFVXeTQyNEgrbUNUL1VRMWtmL0ZwdG1UTHpwOXlmUTNvcXl1STVjV1VZZ0I1dmpPUDFQVFlTYnpQWWZ0bml4bExXVkY1U1kvcmppK2NobFdCTkRja3ZQVGNFUzczVzhCenFJM01LZnEybWxPdXJPd3RLS2RUTGpRd0IwRXZwTFh3eEtCVkwrTnJPQXYzYzJuZVFOWldyWWZCV3YzWEdpcDhKVEVHbEJLZmc4UVZ3WExnUEt2ckd0eHVKOUxSYmdHcXhneVlkSDZCUDk3UzRHWTRsZkYyVVgxMjMyQ2RHMWxUKzRsdjl2aXVEdDc1Y2s4QVVWRXh3Q2g1WDI1UFpoeHVKejZiQVV0THhnVDV0aGs5Q093M1BsMmx6Z3lscnFoOWlBT2E3WGxRTERRM0JUOTRKVEVIZEJLZmdjVFZseDF6KzFDTWlQZlhXaU5MY0FQb3FabWpFREphWXlkS3R0a3I2UmtIV1ZOL0VYbFJmYjk0S3lkeFRRM0RQZUxibS9HZ1lXSVBlcndVU25JTGxDK0RhM3FMeXg1TC9YR25mWWdmTkpna2cxL3RZdkVaMTBWdnFvZWxzbzluV3h1RzlBOXRMdzVDeXFEell1UjBQa25pdGVHY1lXSXUzT0JaSmNBcVdxNjFzYTFrUTZnOVR3UndCZWlRMVBUK2YvU2wrOXZHUTViS2w3eFUzOUFNSHVMZmlYUHpTTk9TditmdzhETEwvN25vdDBBQkVnbE93YkdGZjF4dlpsci91TzVYMlRVMktoVjQwY3dVZ3A0M3YxejNmdzlycVY2alhWQm5lTnMzU0I1VitmMDNpYjMxc01jc1M2Qm5CS1Zpc3RyVHpYMjBrbFBhWkswRHU5bGZHZDFjN0pYMHBrT0Y2VzQ1NXMvUmhoZC85ZDRmL1Jud28rc0V3QUhPQ1U3QllUZVZhcTd6dTIxdjdsdk1rSDlpL1ZDcTFyeksrdXlhdXRhd296dFd2RmI3TlQrWlU4a2s1SDNDWDRCVDh2TUNQaTZXNjN0TDNLK2twK05Ua1dMTEk5QVlpWUovM3JPT0xMeUdXU3VXaHJUNkZJd2U3V0tjM1BkTHFLWk1mT3VRM3ZKMlBUZG1URkVwd0NpeUFWOTFJZkRJMWxsSnFBblF2QmNhL1puVU4rblVtN2liZnM3YTM1OWE2OXZwYWZJREt3Nnk1c2F3cHRqQTFCR1VTbklLZnZhcnE0cjc2UmtMZktYTUd5R2VUbTNyMjVGVWkxTlo5d2pXMkR2TStWQ1dYdlEwYzVodmVCQTM4UkhBSzdpLzJCNkd1WGdDcmJ5VE9qcWF6WDcxUlpkbUN1dXpGTkpEWHZXb1VVc1pVYmxrbTMxcjRycldWMnRkdUVGSUdWYW4zMUtGREhOckpzQVI2VDNBSzd2T1d2dDMrNzJ2aXlUN1F2aFNZeXFIeCtTSnRiRGhIRG5wMTR0eiszc3gxeWpNeEJNQWlnbE53WDAxdkE5cmtkZDlqVTJRcFQvYUJkcVczbXAxbmZFK1p0dkR2RmZpdjEzbUJBYXFuRG1zTEdaWkFFUVNuNEhiUkgxUElCeFY5NC9VYm5LZm1sVkt4Rnh2TTV0RFFNQUF0M2FOaVVPbzA0NTl3MHNKM2p2ZGtKZE4xaXdHcUU4TlFsS2toWUV1YTZSZEtjQXB1MWZaMGR0TWdreWFXNWhEUXBSU1lHbVgrVTdaeGI1Q1JTdlMrT1FkS01IQTRCYWZZMmc5RFVDYkJLYWh6RVh5MVJmbEZER3A1WW1FT0FWM29SMkFxbXJUdzd4VHdaMjVVU0lCcTRGQUNMQ1k0QldueFA2eHN3YkI1WTNPbGZZODVtTTBsQVNwZ1YvZW12Z1NtcnBwN3d5Ni9lN3duSytuanJsRkJHVlQxT2p1YUdBUmdFY0VwU0dwN09qdmU4dit2dEcrNTU0WUEyRnAvQWxOUkc1dE5nWDRXRWFBQ0tKVGdGTlMzQ0w3YytnbjMyWkhTdnNjWHpnZUdBZGhZdndKVFVSdjlQd1Q2ZWV3K2U5N0Q4M3JvMElYNUM0Z0FmaUk0QmFrTXE2Wmd3cTZ5bnBUMkxlZUpQN0RwUGFsdmdhbG9zdU14aVBka0cza2VNL0lXdjk3eUFJOXRlVUJlS01FcDhKYStUWDB5ZFpieXhCOVkzL0hGMjlDL3dOUjBpeGRzTERNMEdWaEJmSXZmeUREMGp1RFUvand0NUh0Y09aUmxFcHlpOW8xQXZFSFdsT1V5M2xuVDJyT2pxK0Ixd011OGFKcjVBcXg2UDRxYjdOTWUvdVNURnY2ZEF2eXM2bHlBcW5lVTlRRUxDVTVSdTlyS3IzYmR5RnhwbjdrRmJDdVZsL2UxeVhNYi9hYUdKZ1ZyT05mUHFWZWVHZ0pnRWNFcGFsZlQwOW5ycHBINUxpbnRXKzZWSVFCK0tUVUg3dlBieDY1MlBCNkQyYThERTRNMWZkRm91emVHaGdCWVJIQ0ttamNFY2ZGYjExdjZkaTMxR1ZIM3ZkaWgwajVnaGZ2UTE5RG5IaXhuUnhNYlZ6SndjSE11ZVZ0dVg2NTlJNE1BUENRNFJjMXFLN3Y2M0xOL2J3a3N2b0JsbTdPNGlmNFMrdDBjZU5MQ3YxUEpENXNTb09vUGZlV0Fud2hPVWJPYXlxNm1MVHpkbnROM3lod0QxaGRMK2ZwZWh0Ukc1dXpRMUdBTDhadzZOUXpaOCtJWU50ZmVub1k5RTV5aVR1bUdXRk52Z3ZZQ1NLbTB6MDFpc1lFZUdNQ0NlOUJKS0NONzk4ZU94MlVROUp0aWU2UG1IQ052N3cwQmNKZmdGUFV1WE9yeXVlZi8vajZUUFFYY1NtL21LMlZUdHV2TUtjRjhkdVY5YzY3bFpPcXdQRmlMZTRDM2oydjJaSTNQdFNHalMvODJCQWdZVkhBak9qdHF1Mmw1ek13Nk42MFdpb3ZqZDRZQktPRE5mUGZ0L3Q2aTN4UzdkRDQ3NTY2YURPOGN6cGZwN09keFZPNkxKWmpQREVObmM3Q2I5ZWp4eFhDRC8xZnNGU2RZV1RuQktXcmRIQXdxK3NidFp6V2RIVjNQeGpVR3FGNllZRDhaM0R5OVBUdlNtd3ZxdnZjY2hCU1lLcVZaY3hzUFBXeE0yS1gwMG9IamkyYzM2eFJ5Tkp3ZG43ZXo0L1BSVUJSazg1NVExc3FWVTlaSGpXb3JzK3JxUXYrSHFiV1V0OUlBTVVPZ3BPQ0xadWowZ1FicGZiZzJLdThEZ3VBVWRScFY5RjI3UzJjL094b0h0ZW5MeUNpRG1oMWZqQXE4OS95MTR6R3FjWE42NWI3WjBib3ZuWU01bURvY0MzMXBza3VCaWdsT1Vkc0dJUVlKYXJyNWZlcjQ3NU9PdTloQlJndGpvTnY3emlDVW1ia3gyZkcvcjhiZzFPdHdkdlNmMmU4dlo1OXhFS2hxMDJsekx1N2IxS0ZZS0I2YnJ3SlVVRGZCS1dwVFczbFYxOEVpcFgzbUhuRGZsMURtUTVGZGI3SUhsYzJMNlQ4TjVXTlB3ck9qMTdNLy9SWml3R3IzZ1QvbS9hZkkyYUZqQkhYN2x5R2dLc2NYZjRkNk1xZmlZdmZsSHNiNHp3bzNHYXY2ajZhc25jL0hreEJmS1Y2M1oxczBKOFg4Vyt6czZGODdIcXV2b2E2ZVUrTW1JTFZzUE9KOTlFMUk1YUN5U1hibncyemNUMXdUTWo4MzRsdU9yWmVnT2pLbnFHbVRVTnNDYjE5WlRFcjdsdE43Q3VxNTV4d1d2QW1kdFBEdkhGUTJRNzQ5K3QvR2ZwSHB0ZSsvM1d6VWxZUHR5bnZOdDdNWDErdEsvS0JDZ2xQVXBLYXlxdmkwYVY5Qm9zK20ybEt2REFGVUlHMnFTaTVQbWJidzd4eFVOa3NtSy8ydll2YkkyZEhIMldkZThqZDFnbTN0Zkk5Lzk1WGhYMGtNSUFwUVFXVUVwNmhwbzFCVDFzcmwzdEtoVXc4TmkrZkZocGswWkFYYUZUT21TajdYdmFsdk85T04zcVFiMzRwN0c2UlM4clM1dzZhOGJoOGN0M1dPVXdoL3luU0RlZ2hPVVl2YXlxbjIzWmhjOXBTNUNIVktHNm0zaFgvTFhXZC8xSllkc2QzNHhTQlZLdmY3RUFRN05yV2Y4ajc5L3phNU5uejN4bU9vZytBVXRhaXBuT3I2NXMwLyt6VTI1Y3hGcU5SNUJkOXgxd0dSWVdWejVOdlcvNFpVN25jeSs5T1RvTmRqMzg3VnFhSGY0RmdkWDN4UjVnZGxFNXlpZkttTXFxYUY3LzRYcWFsY1FWK0Z4UTZscUVPeDk1dVRrRXBSeWliN1kxdFhPendXMCtiTnZNK0NvTWNtOStPVFBmeTlqdE5tWXVaNXpLSWFHZ29vaytBVXRkek1hdklwazU5RGFkOXlzcWVnTk9sQnlCc0RzWkdubFgzZjNUKzhTUUhEbUVYMTBYUmF5NXM5OUlMOFp0ZzNGbzlWYkpSK0tvc0t5aU00aFVCQVdhWk5RL0ljakUyOXBmU2RndktjaGpwNkowMGM2cTN2MCszMGlVcWxmdTlDeXFMU2kybzFCODI1MnlXWjVkdUxmZjFrVVVGaEJLY29XM29hVmxNSlZUNTlKOUxpV3grTXhRWksrNkNvZTAzY0lBazZiNjZtNitHMGcvdnZKS1NHNmU3QnEzblJjWkJEY0dwWGE2bVVSZlhGbTVDaERJSlRsSzYyRW90UG1mMDhmNWlDNWlaVTRMeWk3OXBHU2RLQjhkdXhsRVVWZTFHOWMzcG1kZzZudnB4VFE3NHo4MTVVSjRZQytrMXdpaHB1V0xXNGFoWThPZkhVMXR5RXNoMWZ4UEtTZ1lGZ1JkMlcyNTBkeFI1VVQ0SXl2MThaTk9keVZ5YUdmS2RpZ1B2OTdCaitPZnVNREFmMGsrQVVKVzhZRGl2Yk1PVFhnRHlWOW8xTnhpVUxxZU1MQVNybzkzMG1iWWpxTXQzeEdBNHJHNy91UzdwU0w4cmZnbkt5WDNuZllaTnRUZEhiRWRmOTU3UGorRlUvS3VnZndTbEtWbHZaVks1WlNrcjdsbnR1Q0tEWFlxWkZiVytNbWpyc1BaUWVGc1ZHNldPRHNkUkJjMDUzWVdLNFd6VU1xUitWSUJYMGlPQVVKYXNwSzJXU1lVbmZmRUVjZzJiS0NSWWJlUlV5OUZScXdQdmVRTERtUFhHeXg3ODc5cUY2SFFTb0h2TytrK2JhK2s1MVpSZ0VxYUEzQktjb2RkTVFBMU0xYmZvL1ovN3o2VDIxbk5JKzZPc210a2E3RDY0TVRLWE9qMkVNVUdtVXZ2OXoyOXFvTzhNZ1NBWFpFNXlpVkxXVlMrVyt3UGxrU3BxclVJeVVXVEV5RURzeHFPaTdUclA1U1ZLajlOZW0zMEtqVHJLbnREM1loMkZJUVNxTjB5RkRnbE9VdUdtSUdWTTFaYU5jTnIwazhwV2FzVTVOem9WZUtPMkQzbEhPeHlieXVnK2VIWTJEQU5YK3p2R1VoYWp0d1g0TVFtcWNIb05VSjlaaGtBZkJLY3JjN05kVjB0ZVhKMi9TMTVjYkdRTG9pYnF6cGlZbVFHRUVxSmJmbDd2Sm5ySTIycTk0akdNZ01nYXB6anM2NXNBU2dsT1VxS1l5cWV0bVlka0huMDNOcFY0WkF1Z05XVk9VUllCcW4rZTZ0Z2Q1aUErMVJ5RUZxYjRxK1lQOUVKeWlMRFdXOVBWbjhSdEwrNjVNMG9VT1BhMkRYdHhqQmtHbUl5VktBYW9QQnVLZTlyT250RDNJMFREY0wvbXpQb09PQ0U1Um10cmVmTmEzWnBxeXB4NWJCQU81a3pYRk52SitRSE4yZERMN2Rld3czZk9tZzc5RDlsU2VCdUcyNU8rTGJDcG9uK0FVRmhIOUZVdjYrdGFyUUcrRjVaVDJRYzdxeTh4ZGZOOWhHLytYL1U5NGRoVEwreVlPMVQ5R0hUVExIaHZtN01WcmY4eW0rbnYyT1oxOURnMEo3SjdnRkNWdEhBWWhsa2ZWbzMrTG1iT2pxVVh2VWdPTEhjamEyMURYeXpZVytXRWFWT0ZsVUlZL2Q5Q2MrMjJ1amE2REFGWGY1c1AzMlpvdGZ0NTYweC9zanVBVUphbnRpZlpuUDNkeFpFOUJ2dDRZQXFxUWdpVXhnMHFtWEhmM1pxVjkvUk1mS0o3T1BuOHIrNFBkRUp6Q3hxR2ZwazBUelQ1UzJyZmNDME1BR1VxYkRrL0hxVWRhWTNpRFh6Sm9QZkNReG50aXFIdTlmcHVYL2NYZnJlZGdBNEpUbExKeE9BeXBjV0V0K3B0OWxKN0lDbEF0WHdCYjBFQitaRTBsVTBPd2xhYzl1MS9IZTdVMytDVmRaRThaNi82TER6RkdzODhYZ1NwWW4rQVVGZzM5Tk83NXovK0hLYnZVYzBNQUdVa1BQL1NEaXc4VnpvN0docUV5NlExK0V3TVJoazF2MHpiSGVtS3NpL0l3VUhVcVVBV1BFNXlpRkRWZDdLK2F4dUo5WHV6R0RZNWVGdVl5OUlHc3FYUzlWdUpWTC8ybmt2Y2QvQjJ5cDhvMGI2UXVvd29lSVRoRi94MWZESU9Tdmo1UzJyZHNBYU9wSnVSeWY0a2JDaHVJK1BhMlZKSk5qZElETWNISkxxNEZLWHZLK3FqMGRaN1NQMWhJY0lvUzFGYlNWOHFpUlduZmNrcjdJSi9OYU8yTjBEODJHMloyc3ludHA5Ui82ckw2NDlmTnc2TjNUcFdxcmdseFRnbFVRUkNjb3B6TlF5MHVlMS9TZDMraE96VjlsOHpwbExFQjdOZXJ5cjkvdkVhM1hXWlVVMFpXMzN1WEtlL3I0dUZSV3VjcDc2dVBRQlhWRTV5aTM5SkZ1NlpOZkduWlJsTFhsN01nZ2YzZVh3WWhOa0d1MjdzT3l2bXVUTGFlU0hPaDlxeWVGNjAzUms4K0JnL3dhaVpRUlpVRXAraTcyc3FmU2d2bWZEYUZsM3BsQ0dDdlJwVi8vOHNtdzVWZDZpYXcwWjcwUXBOSjVVZXhpOTVUWGtMQW5FQVYxUkNjb3M4THZJUEtOZytYeFRXa1BUdUtUOHluSnZOQ3c5NXZZcURmYWc0UXk1QnBUd25YOWRxREp0MWNHMUt2dDQ5T0dlNjRHNmo2Yy9ZNW5YME9EUXVsRUp5aXoycDdhdkRaOXpMSGdRNmt4ZjZnNGhINDFHRi93MmxsWTl2L2VaWG1SczFCazhNT0h4NTlDQjdpc2Z4YThuYjIrZDRFcWs0ODFLVHZCS2ZvczVwSytxNExMcThZbThwTEtlMEQ1MTdYNGthNHU4QkRLUy81V0c5RFdZSVBvZTdtNkM4Nk9qL2lHTDkwU1dhRjY4cjcyU2NHcWI3ZXZGWFNpM1hvSWNFcCtpbGRjT3Q2UzErcDBzWkVROXpGRHFWclE4RWJ6eng5S0s2RVBDKy9GM0x2am5Qa1U4WEg4VldIWXgzWFNNcHNXZFZ3OWptZmZmU25vbmNFcCtpclVXWGY5N1B2WndFTWRLRHVrcjVwMC9DNmF6VTlvQ2dubStIczZDVFVXM0oyMkdrSjFkbFJ6R2IwZ2dJMjJTOTlVZlpIWHdoT1ljUGVqODNDcFBEdk9EYWxsL0xFQzdvMXJQaTdmOWpUMzN0dGZwa3o3cysvRkJ2Unl6Um5FNE53Vy9iMzVhYnNEeklrT0VYL3BLaC9UYVZPNVQ4cFMrVUJuZ2d1VzFBbzdZTXUxWnF0dUsrc3FmUjMxN1dPS2VlYW51Yk10Tkp6NXVrZTFrb3hRS1hzbG0zRW9PcTViQ3B5SkRoRkg0MHErNzYxbEx6OVlXb3Y5Y1lRUUNkQmcxaHlWV3N3ZUo4Wk1IOVZOdGFINWs0aG0veXVtMDZuL2xQUFhLelpnVUc0bjAwMU5DVHNtK0FVZlZSYlNWOHRLZHd5cHg1YkFBUE90WGJ2TmVPOS92MTErYjJvYjVQbVRxM1pQTU05akhkY0Y3NTJ1V2JIOTc2dlRUYlZXMi82WTE4RXAraVgraHJWMXZNbW5KU3VQamJKRnpyd3RoWG94Tk5Ldi9lK00xK21sWTEzaWRsNXRiNjViei9YakJRUUZLQmkxK0llNnpTa2JLcFRKWDkwVFhDS3ZxbXRGMGh0MlVSSys1WjdiZ2lnZGNNS3YzTU9QZit1ekxQZSsxanBOV04vRDQ0RXFHaFB6Sng2RzFLUTZsekpIMTBSbk1JaUlGOVhzNFhIdEtxamUzWjBHVFQ2WEdZa3pScGFWRjltN3R5NHlWemQ1N1gvdXJwcmYybWJ2WHF6bndkN3pTNFJvS0tMOVdjcStmc3FTRVhiQktmbzAwTHVSV1ViaDgrVkhtbTlwNVpUMmdmdHFYWFJuVXM1bHV3cGM4bXgzSVFBRmQzTjgzbGZxcEhob0EyQ1UvUkpiV1ZOWXhzbEtqOEhvRXMxOXB1YVpKU2hXMXR3cXJ6cmVXclVmVlhoZWZRMGc3R1BhMFlCS3Jvd21IM09CYWxvZytBVWZWSlQxc2psM3NzczlydTRuWnJ1Uzg0QnBYM1Fsc01LdjNOT0dicC9WVGZmeXJ5ZTE1ajFuY2UxUTRDS2JnMkNJQlU3SmpoRlA2U1N2cG8yNWJVM0JsZmF0NXdGQU96K0hqTUk5ZldieXFFUitsMDFadHlVK05CdFhPRnh6Q2ZRbUFKVVQ0TCtuWFFuM2p2blFTcnRKOWlLNEJSOTRTMTlkZmxzeWpzWG9OUE5aWDN5eXRBOU81cFVlQXpLS3lWTmM2ckdOY3hoUnNjZ0JucWZoVG9EdnV6UFlQYjVvbkU2MnhDY0luL3BhVlJOa2ZoeHRTVjk5eGRXRmxYTEZzRDdmRE1RQ0JLVUlzY00zZHF1K3kvTXJXTGt0Um0vRFZESlJHY2Y1MElNVUgyeFhtVmRnbE5ZdkZuVTVVcjIxSElqUXdBN1ZWdm0xUFZzODVyanByVzI0TlJCb1dVd05RWkVmcy91SjRvUE9zK09YczcrOU1FbG5qM3QzMktwMzRsK3FheEtjSW8rcUttTUtkY05nOFd0Y3dKS05xenMrMDR5L2JsK1ZEajNTbnhyMzNYR2M2d3RoeGtmajVQWnJ5K0RQbFRzeC91UWdsUWpROEd2Q0U2UnQ1UU9XdE9tUVVEbWRqRTFEVXI3bGhuTXpvMUR3d0E3dWMvVWVDN2xtcUU3cWZCWWxQb1cxdHF5d0FkWkg4ZjA0UE5KcGVjWSt4ZlBqZk9tSDVYMUswc0pUcEgvb3EwdW54eHk0N0VpMlZPd3EwMWxmZko4RUpMNjVOUzRhVlBhVjRhOE45M3hvZC9aVWV4RHBjeVBmUm5PUHQ5dlN2MWdBY0VwYk1Eek1hMTBZVzV4dXhtdjY0VWFOcFM3ZDVYNVN6Y20xam9GU05uUFU5ZVNMSTlOREF3OENiTFQyWi8zNGZqaXV5d3FIaEtjSWwrcHBLK21pNVpBek04THFHdmpzdFNnMEVhNjBMWGZLL3Urazh4L3ZtOFZ6c0Zob1crMW1sUjJIUC9iby9WVkRGTEhBSlVzS3ZZbDd2RmtVWEdQNEJRNWUxUFo5L1YydXNXOHZYQzU1NFlBdGphbzdQdm1mazJkV1BNVW83WkFZLzhlcU1xaVl2OWtVZkVQd1NseVZsTld5SldTdnFVTHAzSHdoaG5uQ05oUTd1NStrL2MxZjFMcFBCd1YyQmk5dG1QWnoydkovU3dxNnkzMmRlNTg5VVkvQktmSVU0cWVEeXI2eHJLbUhxZTBiN0VETjNMWTZsNHpxT3diNTk1dnF1WnJmbm1OMGV2ck8zWFE4K04xRWxJV2xUVVgrenAvNGh2OXpndDlneWtyRUp3aVY3VzlpY3hDNEhGSys1WlQyZ2ViRzFUMmZTYzkrVG0vVlRvZjN4ZjRuZXJLQ2orK0dQYjY1MDl2OUhzNSsxTjhxOS9VTFlJOUdJV1VSYVhNcjBLQ1UrUjhZYXJGVmZOMGtlV0xwUmk4azJxKzJBdFBtR0JqdFMxK2YvVGs1NnoxZ2MyZ3dHellINEUrcnJzbXM4OXZzeis5dHY1aVQvZm1yNzBQOXJJMndTbnlrOTVBVnRObSs1T0R2cEt4SVZoSzd5bllURzJCM1dsUE5zYlRVRy9XUm1uWlU1UEtqbDlabStuVTl6TUdxZlNqWWgvM1ozMm9LaU00Ulk1cUsxTlMwcmNhZmJtV2UyVUlZQ08vVi9WdCs5VnNYUFpVR2FZdU03Mi9ibHczL2FoaWtHcHNRT2hZNmtORkZRU255RkZOV1NDWFBXbE9tOFBpNk1vaWQ2bGhoWTJkWVJkcXlwenFXKytmbW5zTmxwTTlWVi9iZ25JRDNpbElGY3Y4QktubzJraUFxZzZDVStRbFBTMnNhYk9nMGZkNlpFOHRwN1FQMWxmVC9hWmZEMEpTbGxldEQyOUt5NTZhdUtZVUpEVk5GNlNpYXpGQTlVV2YxYklKVHBHYm1rcjY0cUpiU2Q5NkxJS1dVOW9INjZ1cElYb2YzNEJYOHozeXRLQk4yTFNpNDFiUHhsbVFpdTdGQjdGZkJhaktKVGhGUHRLRlJra2ZqeStFYW5zdDlUcWJiSy9kQlpicjQvMm01dXppdUNaNlc4aDMrYXVxZTNHTmE3UGJJTlhIb0hFNjdaOWpBbFNGRXB3aUo3V1ZKU25wMjR6U3Z1VmtUOEdxNnV2VDFyL0EvdG5SWmVVYjNmZUZ6Tk9wQzA0RlVwRHFYYmg5dTUvalRsdGlnRW9QcWdJSlRwR1ROeFY5MSt0bTBjMzZqTnR5K2s3QjZnYUdvQmZHbFgvL0VqWmdVOU80SXZPMys1MGR4U0JWektpUzhVNDdhMTVOMG9zak9FVWUwcFBCbWxLaHh3NzZ4b3VldU1nVm9GcTIyVmJhQnl5K2RrNTYrcFBYbmkwYjM4YnF3VU8vMXJSRGcvRFBkV2M4K3p5Wi9lbVp0Uzh0aUUzU1R3MURPUVNueUVWdEN5K2xhZHRSRXJuY0cwTUFGTFM1alZrWDA4cEg0YnpYL1ZYNkd4aGxsM1BndGk5VkxQblRsNHBkZVZ2WTIwMnJKamhGTG1ycWxUTnRGdHRzVHViVWNwNnd3Mm8wVSsyUFQrYXEvaW9VSVBXbGlpVi8vd21wNUc5aVVOaUJjNVVEWlJDY1l2L1N4YVNtQzRyQXl2YUxtL2pFYld3Z2xteGlsSURBS21xNjcvUjlBK2krbWZxcnVMWlQwbG91bHZ6RmNqOXYrV01Ydk1HdkFJSlQ1S0MyTjR4OWNzaDNRbW5mY3M4TkFWRFFKbllhQktpaTh4Ni92Vy9xOExIMC9JNXYrYnZOcG5LdXM0a1ltUHBpR1BwTmNJb2MxUFFrOEtwWlpMUDlZcWIyVjR3L1p1VHBFVkFZdlJyN1hkNW43Y01xYTd1WVRmVXlwR3lxZCtZTmE0b3ZrRGd4RFAwbE9NVitwWksrZ2NVMUcvSjBiVG5sSDBCSm05WkxHOVYvTmwvZVRwWDdNV0xiOHoxbVUzMmNmV0tRS3I3dGJ4dzhrR1ExNy9XZjZpL0JLZmF0dGplTENhYnNsbURmY2tyN2dOSW9pMC9lNmo5Rk5lSkxoT0tiL2xMWjMwdHJhVmJnQlJJOUpUakZ2dFcwdUpvbzZkdjVnbVVTUEVsZmZtNHA3UVBLTWc2eUoyNDNYN0lEcUcvZGQ5bVUvWG5iSDQ4NVZON1hUNEpUN0U5NjZsZlQ1bG1XVHpzOFFWdHVaQWlBZ2phbTE2NzUvMGo5cHp5RW9OWnJ3ZjIzL2NYK1ZGY0doanZlOS9nRkV0VVNuR0tmYWlzN3NxQnVoNkRmY3E4TUFWQ1lENGJnSHpGejZxdGhvR3EzL2FsaWJ5cUJLdTVTM3Rjei96WUU3RVY2MGplcTdGdi9QZnZlamozZGJsemlVeVBscEVCSkc5SGppM0dRR1hyM09uOSswNU1IWEIvaWV1Zmp6U2RsemNRcWpWY2hCWEtwVDN5QnhMQnBBMElQeUp4aVh6VHloRzdZd0FHbDBSajk0WFUrQnFqSWhheWRITWlvSXZGMjB4NFJuR0pmdkVrTXVxRzBEeWh0MHhrM21CTURjYzhvOHdiQU5mWEcwclEvdjJ2R29rQ1ZhMGdkWW5icHlERDBnK0FVM1VzbGZUS25vQnNEYjNRQ0NxVDMxTS9lWjd3SmN4OGlEN2VCcXRoTWZmN1dQMzFoUzc4MjBndUNVK3pEeUJCQXAyUlB3YyttRlgzWDhnSURxWWZJeERUK3lia3NBVmo1T2pKLzY5L0xrQUpWOGZkeGtQMVdta0h6bG5neUp6aUZqVEtVencwWmZqYXQ2THVXV2xJbGUycXg4OHhML0NBL0tWQjFlZk55Z2JPanU0R3FxY0Vwd2h0RGtEL0JLYnFWM3B3aHRSdTY1WWtSVU9KbWNoS1U0eXp6UHBzbTZVckw2ZWYxWlI2b2lqMnFZcStxK0JiQXFZSHByYUZyVWY0RXAraWFEVExzaDVjUVFNM0tYWlMvYzNDWHl1VXRmZ2RWamJyWDFwZDRUSzltbjNjQ1ZiMG5leXB6Z2xPNEtFQWRCSWJodnRwNmlwUVpJSWpOalZQcERZdkZBTlgzNW1VMDVoNXNmODI1RzZqU282cHZhK0g5WGd2NUJjRXB1cE9lMmc0TUJPeHBjNkJKTHR6ZllOU2w1UHZ2QjV2RFI4WDExOWM5WnM4cHBhSFUrOGpESGxYS2pITmZDM3RZbXpYQkticWtFVHJzbDlJK3FOZWc0QTNpZFBicko0ZjRVZk1BMVQ0Mlp2K3RhSnlucGxxbFVxQnEvdGEvV0c1OFpWQ3NoVm1QNEJSZEVxbUdmWitEMHBtaDFvM2s3NFYvUHoxZ2ZpMWUvNy9NN2dPbkhmKzlBOWNVcXBIZSt2ZHg5b205cWViOXFXUjI1clVXSGhpR1BBbE8wWTMwcE02RkFISzRLUU0xYmlUTERrekhEYUhtNkt0NjIvU2g2bXBkcHF5UE90MzJwNHJaVks5bm40bEJ5Y0xRRU9SSmNJcXVTS0dFUENpdkJZdnhVamVDbHpaL0s0c0JveGlnZXR2cTM1S3lkV3ZLMlAxbWFySGsralNlZlo2RmxFMDFEcktwN0V2NWllQVVYWkd0QWJsc1VLVXpRNTBieWYwMXhPN1NhOU42WlRGb2REcWJGMTlidkMvSW1vSzdValpWdkU3RnQvM0ZiTStwUWJFdkpSR2Nvb3ZGOEl2Z05jTGdwZ3pzMjZDQ2pWL2M2SDF3cU5jeURPMWxVUTByRzB0TnNGbjFXalh2VFJXRFZLL05uYjNzVDhtTTRCUmRVRVlFemtuSTBhU3k3MXRIRnN2WjBVbVFqYkN1ZVJaVkRGSU5kL2p2L2IyeWNWU3F4U2JYckhIVFFQMVpVSnJjbGFlR0lEK0NVN1FyOVJvUW1ZYmNOcWgxbFBjQTlTN0dsZmR0ZW44SUlaYjVuZStvMUsrMmU0M3NGelozZGpScCtsSUpVblZ6clNNemdsTzBUV0FLOGlSN0N1SkdvQzdEeW83dFI1TjhZNlBaNTg5d2ZISGFQR2hjWC9yL0RTcTdwc2ljWWpmWHI5c2dsWUNuKzJFMUJLZG9tN2NoUUo0RWppR3Bhek5aVjlaazdEMDFOY1czRXZ0UXhTRFZ5UWFaVkxWdC9pYW1DenVWZ2xTeDNPKzFhMWtyOThPaFFjaUw0QlJ0bnZBREcyREkxa0JwSDl5bzdhbDBQWXZ4bE1XaXZHOTdNUVBxZlVoQnFuWEsvV3JyNlRJMVZXanBXamFlL1JxRFZESGdManR2ZDZ5RE15TTRSWnNFcGlCdmJ3d0JWQmVjcWl0Z29MeHYxMFloQmFtK3J2QzJxOXJXZ1grWkhyUjRMYnR1WHZZUWcxUVRBN0lUdnh1Q3ZBaE8wU1k5YlNCdkFzaFEzNGF5dnZQKzdPaGQwTGRsMTRheno1ZHdmREh2UzNVL0F5RmxWdzBxR3hNQkE3cTRuazJiZmxRdmd5eXFiUTBNUVY0RXAyaEhXcFJJbFlTOEhhenc1QnRLVjEvUW9zN3ovcldOWEd1YnU5aVg2dnRzWHNYUDJ5WlFWZU1jbTVvT2RPYnM2RExJb3RyVzBCRGtSWENLdG93TUFmU0NseFpRK3dLL3hvWDkwd3FQY3d4Q3ZqUGhXeFdEVXFjaEJxclM3elc1dnNsb2dXNnZhL01zcWc4R1kwUHJ2K2lCRmdsTzBSWWxmZEFQbzQxZkV3N2xxQzE3cXM2TXlkUlVlR3k2NHhwQ1lkZTJrOW12TVVnbE8zUjlBME9RRDhFcGRpK2xjenZSd1VZVmJDeHpYWXpYKzdaTy9hZG93emREd0Y2bExPQVlvSm9hakRYdmgyUkRjSW8yeUpxQ2ZsSGFSKzErdUZkWHM0R0xtUVg2VDdGckFwN2tjSDJMOC9DSitiaVdnU0hJaCtBVWJSZ1pBdWlWRjByN3FOeWt5dk8rN2czY2E5TWUxeEFLdkw3RndIdk1vQktnV3MzL0dvSjhDRTZ4VytrTlFEYTUwRDhqUTBERmkva2FGL0dEcXQvV21kNTBwWWt3dXpCdEFnS1F5L1Z0SHFDYUdveGY4bmI1akFoT3NXdktnNkNmbE9OU3U0bDdkblVidUpQWnI1ZW1QcTRkRkhoOWl3R3FsMEVKTXowaU9NV3VhYXdNL1hUb2RicFVyc2FHeHQ3V21jcjdsTC9nMmtGNWxEQ3ZRc1ZQUmdTbjJKM2ppNUVUSEhxK1VZVjZUWnozVlc3ZTV1VXZzZ3R3N2FERWExek1EdjFvSUpaUzFwY1J3U2wyU1VrZjlKdlNQbXBld05lNndYemoyQXRRc2JIWWIycHFHTWpjQjljMytrQndpdDFJWlFGSytxRGZZb05rVDVDbzJhVFM4OTc5TzVXL3ZIUUs0SnBCZ2RlM0dKaDZaeURJbmVBVXUySmhDMldRUFVYTi9xajBlOHVlU2h1NFNkQ2ZCZGNNeXJ5K2pZTzM5NUU1d1Nsc2FJRzdCSnFwMmFUUzd6ME14eGREaC8rZkRad0FGYTRabE9pRElTQm5nbE5zTDczaHk2SVd5cURFaDNxbDBxNXBwZDllOXRUdFBCamJ4TEdDU1ZNdUJYMFJtNk9iczJSTGNJcGRzSkdGc25pNUFiVXYzdXU4bDZlSFRVUm5SeWV6WDhjR2drY282YU52MTdYcml1OXh5OGtjem9iZ0ZMdWdwQTlLMjZSQ3ZiNVYvTjNQSGY1N0c3bFkzamMyRUN4aGs0OTdIT3lRNEJUYlNXLzI4bll2S012QjdOd2VHUWFxZEhaVWM5bUQzbE0vendjQktoYTVtczJOcVdHZ2h5YUdnRndKVHJFdFdWTlFKcVY5MUt6bWpJajNEdjhEQWxUWTRGUE85V3dhdkxYdjRaZzRuek1oT01XMmxQOUFxZWYyOGNXQllhQlNOZmVTR1hvcHdzTE5pd0FWZDMwMkJQVFkxQkNRSThFcE5wZEsrZ1lHQW9wbGcwcWQ2aTd0aTA0RnB4Zk9peGlnZW0wZ3FuZlZ2TmtUK2tyZktiSWtPTVUydkhZYXlxWnNsNXJWWE5vM21IM2VtZ0lMbkIyTmd3QlY3V1JOQWJSQWNJcHR5S3FBc2cyOVdyNlE0OGdtYW45Ti9Idm4veEszQWFwcmcxRWxiK21qNzZhR2dCd0pUckdaMUk5Q3lqK1VUeENhT3FYU3Z0b1g4T2Ntd3RMNU1aNzkraXdJVU5WbTRpMTlGTUFjSmt1Q1UyekttN3lnRGtyN3FGbnRHUkl4ZTFKNTN6S3A3MUFNVU9rL1ZBOGxmVkNXaVNISWgrQVU2MHROVW1WVFFCME9tNWNmMEYrL0c0S05mVElFeXZzZUpVQlZrNWdscDZRUG9DWC9OZ1Jzb0xhU3Z0ZE4rajRsUzlrQnB3WmlvVmMyWHIybUJIdFRzWHpuK0dJUzZ1N2JGZWRQTE85N1prSXNuU2N4YVBGa05sZmlPSTBNU0xFdW0yTU5RQXRrVHJHSm1rcjZyZ1dtcXVFNEx5ZFRzdDlrdm0xSEdVOHE3enN4REw5d2RoU2JwSHVUWDdsa1VrSjV2aG1DZkFoT3NaNzZTdnFrYjllenFaQ3V2OXhBYVYrdnlaemE3dG93RHBwZVI3RzhiMmdZVnBvdlQ4eVo0bHcxSlp4UUFtczZzaVE0eGJwcXk2RDR3eUYzdkxueHByY2JDb0tnd3Raa1RDUmZtb2RVUENZRk1YNExHdTI2QmtDZS9tc0lyQk56SkRoRkxSdlVUVnczcnhLbkhvNzNjaTk2ZXg0VGVVcTZuYkVodUJFRFUxOE53d3BpTnU3WlVlelQ5Y0ZnRkxFZWRBMmdKRU5EWUoyWUk4RXBWcGZlMWxQVEJzZENwTWJOaE9PK2ZGTjZmS0gzVkg5NVk5OTIxNGFwYThNL0RwdkczNncyZDA1Q2FpWnZBOVJmc3FZb2FUOTNFRHl3dW51Tm5oaUVmQWhPc1k3YU5xYWE0TlpKYWQ5eXp3MUJidzBOZ1h2Q0RvMW1HNXlSWVZocjh4UEwvR1RuOWs4TUtuNDBETmpQRlh0K2t4SEJLZFpSVTBuZlZPUExhamNSbDI1V2oyNUk5WnZwcDBHVC9jcm0xNFpKMEVQb3JuUFpsR3ZObjFnYTluTDJwM2Z1TWIxeTJXUlZReWxlR1lKLzJPdGxSbkNLMWFRM2RkVzBzZkdFdlBiRktNdjBiVE02ZGNqK01UUUVXOU0vNkw1emIvSmMwOWxSek1LSmIvT2JHQXpuUEhTOG54dGFDOXdqT0pVWndTbFdWVnVVZmV5UVYwMS9pZVg2VmRxWGVnWFJ4Mk9YNTN5YUJBSFB1MUtEZEFHcTlhOUxxVm02TEtyYzE0THVJWlRsdlNHNDU0Y2h5SXZnRkt1cUtYWC95bUtrK28zRGxRM29JOWNDcFgyT1hkMWtVdHduUUxYNXZXYWVSU1ZiMTdrTzdaSTF0WGpQUjFZRXAxajFZamFvNkJzcjZTUFlMRHhxMUxPZmQrcVEvVU9Qb0cybFY4cWJVL2NKVUcwK242Wk5MNnFYNWxWVzlwczFGZGZleHhkLzNyeDR3RU1GdHA5UGNRNTV5K3JQMTEvQnFjd0lUckdLMmtyNkJDV0lCQ25MdVNiWThOVjdQVytMaklxZkNWQnR0MG1LYTQ4bjVwWnovTTYxZWhCU1FDRUdxZlIzWXh1bm9hNUVnMVZNREVGK0JLZFlSVTFQMmkrVjlORnNGT0xURkU5VUZqdjA1cmZlR2pwMk83aytqSU9nNXlJQ1ZOdk5xL2hHdjVQWm4zNnpjZHFyZldkTnhXdjA2TUY1RmYvNSsreS9pNSszc3FsWVl6Nk5Rdjh5M3J2d3pSRGtSM0NLWDEzUVhqUTN4VnI4NGFCemgreXA1ZnEwMExFQXVlK05JZGlKMTRaZ0lRR3FiZDAyVEkrZnFRSHAzTDZ6cGg1cldoM1BxNWdGODNlVFRhVlVtMS90NDVUekxUWXhCUGtSbk9KWGFudTdrNUkreklmVktBL3JMejFNZGhOQW1GamNMalVQVUkwTXhaWno3T3dvWmxIRlFPalVnSFRpUTJaWlU0OWZ5MFA0TXZ2L3hFRFZxWUF3RCtaU25BOENVNC9mdzhtTTRCU1BYZFFPUWwxcG9KYzNLZlZ3ZStPYTJud3VOZWpSUXRneC9EbHc4Tll3N09RZUtjajMrRHc3dnlsQll0dDcwYmdKVXNXTUh1dVU5c1N4L2Jqbm4rSDlGdGYwNzAwVDliZkt0NnUvUHcxRGZFRGdIclY4ejBlV0JLZDRURzJwd2txNE1DL1cwNWZzS1p1NW43MlJQYlhWd3YrZ1dmakxWUGkxMDZiOHlIemIxbTAvS2tHcWRuelk2MFBLOU1CbnRPVy9aUkJTMmQrZmQvcFREUnphcXU1UG95QXc5U3ZhUFdSS2NJckgxRlRTZDkyOEtRY2VNaStXNjBjQTI2dUNGNUU5dGZuQ1gyQnFmV216WkpPOGkrdlo5WU1nMWRTZzdFVHM4N1h2cktuVEhmLzc1djJwQktycXVUL0Y0NjJVejlxK3QvNWxDRmh5Y1J2YzNNenFFVlBtTmJkbDJmbndKZFNYU2JpcWw3MEk3TWFGdVdEQ0lyOTVRK25hOThZdjV0TEdZbGJLYXcrRGRqNHZSeUdWZ3cwTXhzYWU3YlVIelcwWlZoZmlBNXZQd1J1cTNadnFkRFdiOTA4TVE1NWtUckZNYlJ0eGIrbkQvTmhNWHpJc0xjQVg4NFIxOWNWL1hQUUxjbTduSUtRR3pzcjhkdW0ySjFWOHU5L0VnS3p0TW9QbXlPODcvTHNlWmxScHB0N3ZlOU5iOTZhMWFOZVJNY0VwbHFucFRWeFRUM0g1NWNKZmY0OWwraExJL3VGUUxUVFVzSHFseFgrYzUzcDQ3TTRvcE9iTlEwT3gwM3ZWSktTSEtlNVhxNHRqOVc3UDE1Zmh6YlY0UDJKQVk5NU0vZThtY1B4QzhMZ1g5Nlg0WXBwNFh6cDFiMXFMUFYvR0JLZFlmTEdySy9ydUlvVjVzcm1EbnJ3dVh0K3A1ZDU3YXY3b1BURnUzTDVZL085Y1hHdDhiYkkyaksyTjZyNTh5cUMwTFpjTTF2bGJ1dVAxN3UrYitaVDZWTGsvNUhXdUh6UzlwV0w3bGFFQldYTXRxSlExYS84MkJDd3dxdXo3U3U5a0ZYOVVlRzZzS3BiMmpiTmZrUERZaGlRK0xYKzIxemRWNWJnQlNKdEcvZWJhOWZabWpJOHYzc2xpM25pdW5vVDRCazVCcVUwMnFpZDdQblp4WFRISWRIeUdZUjc4T0w2SUcvcEpTRzg1bTlqZzcrMmU5TmE1dnBWUGhpQnZHcUt6Nk9MM1o2aW5xZWEwNmRNQXpvM3QvQ2Y3d0liajl5dXg3OHBMd3hEbS9hVmlZRXJHUUxmaTV2ZTFqZS9LODNUWXpGUFh0YzA4MmV2YlhGT3c0WHRQajk5VnVCK3M4bUNqM1hraUtMVzlPRWQvTTFmekpuT0tSUXZ5bWhZNXNxWlliL09lRmdqOExHYVhqSHV3bUxhSmUrd1l4bjRqdGIrNU5KWHhuWm9PZXpFTXFVbHp2Slo4RUtSNmRLMTJHcFQwYk9QRFhnTlR5ZHNlMzVNT3cyMi9xamduNThHcUgwRm0xYTdPODNoK3h4N0FJNE94b3pXOHdGVDJCS2Q0NkZWbDMzZnNrTE9HejBGdzZyRnJSKzduVTN6Q3EwVHJjYVBaZ3ZqSGJBSDNzY0tOUU53a250dndaeklQVTdBMGxtQjh0S0c0TjBmZjI2eHVMWWR5dnBnQjg2YWdNWjBIcStiZmJ4clNBNkZ2elhoUFRMdVZ6L0VYemR3WUdKQ2RVdExYQThyNmVIaFJyS25zSmQ0c256am9PRWQyNXJlc241YW1iSVB2RHROSzNsVVZvTkt6SjJjeE1EVU9lVFN1M3RmOEhBWVpGTHYwWk85WlV6Rkx0YjdqT1FrcFlQV2pXWVByQlpubVFseFR2bWpPY2FYa2JjMjlzNk5uaGlGL2dsUGN2VGpHQytNWG15LzQ1U2IydllIbzZUa1ZYNVV0QUxHcWNmRWxmbW5UZjJwRDBLTTVHVE5ZYThuQ1NPdXlHRFFkT3ZRNzh5R0RyS2xCU0c5YUl3V3NwbUVlc0VwQnErdEt6dTJuemJudC90TysyTXR3YkJqeUp6akYzUXRsYlU5eC9xTlVBSXZLbmNvL0cvSDRJZ2JnbGZhdDdySloxRjBYZUI2Zm1nczl2dGFrRW8zTFF1ZG1YSXZGTElxQlExM2dQZXI0NG1zUWNIek1kWmdIcWtMNHEvbDkydHZNeVhST3h3RFUwK1ozeDc1YlhuN1ZJNEpUM0wxNDFwUlI0SzFVYkhPdWZBK2VkQzN6Sk90VS9mVGE3bk9IYWUxQXdPc2lTakQwN0NuUmVQYjVZelkvTDNzOEwrUGFLd1pLbndjQjA3WmNOL2VuNlo2UDlYRDI2MWVIWTZ2N1VUeVczeDc4OC80enJ0SjVQTys5OWQ4N2Y1YXR2Vit5cG5wRVEzVG1GOVFYbFYwOC8zRFEyY0xuSURpMXpLdG1zWmlyaVVPMHR0U3I2L2hpLytVd205L2pCa0ZRcWxTamtCcjV4NDNwWmJOcHpUK2pLczNKWVJDUTZzcTdUREp2UEJ6Wi9uNFV3cUxzbytPTCtPdjFuVFZJL1BPUE8vK0xhZk41NkhyaHc1Y1VTSHhvRUc0ekd2L2IvUG5BbWpCYlU0R3BmcEU1eGZ3Q1hGdXBpNUkrdGpsZjRrTGtid094ZENId1crYkhUK2JiNXE2YVRkNmtKK2RxM0Z4b0pGM3ZYSTBQb2lZaG42eUtPQi8xbWVsZUh2M3pqaS9pMjM1UEhRN29qS3lwbmhHY29zYU5kdmxOZnVuaXZORzdhTG5jUy90c0VIWnhIVTJOaGFlWjN0Tkd3YXU0dVcvZXcyYmVlTG05SGpZcEt5cCtoclBQN3lFRm9zekYvUjMzWjVrRUoyTy9TaVZlME5XNTc2M3N2YU9zajFEaEJsdEpIN3VhUjRKVGk4V2dRTTRCNEZqNkl6aTFuVkZJcFZUamtNUGIwL1RzNGRmbS9WL3V6cHY0NitTZmpVd0kvM2Zuejc4S1pneUM4cDdjeFdQNE1wTk0rZE1nTUFWZGVtY0kra2ZtRkxXOU5TVFdsZi9IUVdkSG0yR2xmWDA5ejVUMjdkbzAzTDQ5YmRyUk1aeS85U2lXU1FsSUFRKzl6S0pSZnJwV2ZYYzRvRE9UMmJuL3pERDBqOHdwRyt4QnFPdVZwcGNPT2pzUm44U21ySkdSd2ZqSndjMUxGdkorZTVhbTlyc1Y3eVduTjUvamk2dVFzbEZpZHVGdWV2M2N2Z1VwM3E5K2IzNlhoUUFzOHlHamU1Qk1YZWlXOWkwOUpUaEZiVStiUHp2azdGRGNmSThNdzBLeHZDcm40TlRZaHFFMTgvS3B0emYvZEh3eERTbXo2dUdydnhlNVd4YjErNTEvRm9nQ1ZyKys1L0ptMGVPTHVFWVlPaVRRbVR6N1liSVNaWDIxcTZ1MEpmKzNpTkhIYytodkcrZWw4bjRyNXZGRmZLWDN5R0VDS0VZZURkRFRQVVlUZExEWFl3My9Zd2lxM2xRUFFsMWxMVXI2TUsrNmxYdG1wa3hLZ0hMRWdOU3pqQjZLdkE4Q1U5QWw1WHc5SnpoVnR6ZVZmVjhiVWRyd3lSQXM5VHpybnk2OVlXN3FNQUgwWGw2QnFkUUUvYTNEQXAzNXVQYzNCN00xd2FtNjFkUnZLcVo1WGpuazdGeWFWMU1Ec2VRYWs4b2FjdmJCWVFMb3ZaZVpyZlAwTklUdVhGblBsVUZ3cWxicGljNmdvbThzdTRVMktlMWJidFNEWTNmdE1BSDAxdXVzTWlZMFFZZDlYQU9zNVFxZ0lYcE9qaS9pamV5cmdlaTF5ZXppK013d1pIZHUvVCtENEx4N1pINmNoTlFiQklEK2JVckhHYTAzTkVHSGJyMmJYUU0rR29ZeXlKd0NvSFp4VWVPSkcwQy9mTWdxTUpWb2dnN2R1UlNZS292Z0ZBQjFTNm5nU244QittTTh1M2FmWlBVVHBRb0lUZENoRzdIUGxMZnpGVVp3Q2dCa1R3SDBSUXhNNWJncDFRUWR1aEhYYS9wTUZVaHdDZ0RTQXNlYlhnRHlsbWRnS3ZVdVBIUjRvQk12dllXOVRJSlRBQkNsdmdWVEF3R1FwVndEVTRQWnIyOGNIdWhFWG0vblpLY0Vwd0RnN3FJSGdOemtXc29YblFkTjBLRUxIek44Q1FJN0pEZ0ZBSFBwYWR5bGdTQWpzWFRodCtaM3FOR0hiQU5UeHhjdlpyOE9IU0pvWFF4UXZ6TU1aUk9jQW9ENzR1SkhrMDF5TUcvNk9wMzkvdXhtY1E1MWVaM2RXL25tamk5aXR0UzVRd1N0eXpsemtoMFNuQUtBdTFJZ1FITjA5aTBHcHA3OTAvUTFOdTFQaS9PeG9hRVNyek12NFZIT0IrMFRtS3FJNEJRQVBKU2FvMDhNQkh1MCtHMUVhWkgrMGZCUXNIbGdkcHp0VDNoOE1aejkrc0toZ2xZSlRGVkdjQW9BRm5zZGxQZXhyN24zMk51SVV0OE5DM1pLTkE5TVRiTDlDWlh6UVJjRXBpb2tPQVVBaXdNQVV3RUE5bUMxVXFiMHYza1dCRkFwUjJyK3Z5aGpNQy92WjUrQnd3V3RFWmlxbE9BVUFDd1BBTVEzOXltaG9pdnI5ZGhKMlNYUGdqZjVVY0ptTkdWTTVSMXNUZVY4YngwdWFNMUhnYWw2Q1U0QndPTUJnSGMyLzNSZ3MrYlBLY3NrQnFnbWhwQ2UrbkN6R2MwL01LV2NEOXEvRDc0ekRQVVNuQUtBWDFNK1JWdXV3N1p2SlV0djhvdHpWSllmZlp2N3NmSC9TVTkrWHVWODBONjE0Rm5tYitla0E0SlRBTERLNWwrQWl0d1g1T21KODB2emxCNklHWDlQbXRMcC9CMWZESUp5UG1qcldwRDNTeERvak9BVUFLeTI4WThMS0gwUTJKVnBzeUMvMnZFOHZRejZVSkczY1RQM3B6MjYvc2VmOWJmbVp3ZDI0N0tWK3lDOUpUZ0ZBT3R0L0FXbzJOWThhK1NxcFhrNjcwT2x6SStjek12NDh1OHZ0Zmk4bWphTm1tT1FhdUp3d2xaaXI3bVh2YndXMEJyQktRQlliNE15RGdKVWJDN09uL2JmU3BiNlVDbnpJeGY5S3VONy9OeWFOajNldklnQTFqZHQ3b0VuaG9LSEJLY0FZUDNOeVRnSVVMRys3dDlLbG9JQk1qM1k5N3gvMHFzeXZ0WE9yWWtnRmF3bDNvK2U2Qy9GTW9KVEFMRFp4bVFjQktoWXpiengrY21lNXVyOGJYN3ZnaXdxdWpQUGxqb3ArbHNLVXNFcTk4Q1h5dmo0RmNFcEFOaDhVeklPQWxTc3RrR2ZaREJmUDk3OExEYlF0RytlTFZWUG8rUDdRYXF4S1FBM0pxR1VrbDVhSnpnRkFOdHRTT0ltSkFhb1BBMWsyUVo5bXRGOG5jcWlva1YxWkVzOWZvNU43alJPSDVzU1ZHcWVMZldzdUpKZVdpTTRCUURiYjBiaUJ1U1p6VDZOYWNpOTRldHRGcFduMmV4cUkxcGZ0dFRqNTlqZHQvdDljSCtnSWg5djVyMXNLZFlrT0FVQXU5bUlYRFdiZlJ1enVvMURYeHErcHMxemZKdGZES3hPSFRvMk5HOXlmR0lvbHA1bkp5RUZxVjQ3MXlqWUpLUUhNKy8wbG1JVC96WUVBTEREVGNqeFJkem9uODQrSXdOU2xiamhmTmZMSjhVcGtQYmJiTzdHRGZTYjJlZkE0V1RGT2YvYW03ZFdQcy9pWm4xODh6bStHRGJuMmdzRFF5SFhnZzlORmpsc1RPWVVBT3g2QTVKS09mU2hxa2Nxa2V0N0NVUEs3bmdTOU1uaGNmRzZGZ094dndsTWJYeXVUWnFzeFhuSjM5U2cwTk5yd1lmbS91ZSt3ZFprVGdGQU81dVArSFE4bHZpZHp6NkhCcVJJVjgwbWZWTFF2STJiNU5lenVmdDU5dnY3Mldmb01ITkgzSWgrVkxLejAvUHQ1T1p6ZkJHenFGNEYyVlRrTDU3L24xd0wyRFhCS1FCb2IrT1IrbENsY3FuM0JxU29oZm1IcHFsNHFYTjNFbUwva0ZSK0ZNdFVCVmpyTm03bS9OUlF0SGJPeGN6THk5azVOd2dwUUJYTC9nWUdoc3p1ZllKU3RFWndDZ0RhMzNURXArSng0eUdMcXY4K05wdjA2MHJtN2lTa0FPc29wQUNyelhKZHhrRlFxdXR6YnRwY1p6N096cnQ0djVqM3B0SUxqbjBSbEtJVGdsTUEwTTJHWTU1RjliYlo1TnRvMktUM2FmNk9RMnJrUEFxQ1ZPWTdYZDQzVWcvRFZQYjNQQWhVMFoxNC9uKzZ1UjRJU3RHQmZ4bUNqS1RVK2E4R290ZGlnOHRuaGlHN2Mrdi9HUVRuWFdaek1tNHN2Tkd2TC9NcnZaSE1KdjNuTll1ZVZPVVpCMEdwUHB4L0FsVzBmZC83ck1rNVhaTTVCUUJkUzA4ZzQ1UHcrRVR5MUFZLzIwMzZaMjhqV3pxSEorRzJKMVZzNGp3eUtMMmxaS2QvNTEvcVR5V2ppdDFlQnk1dnJnVXBZdzg2SjNNcUp6S25TaUJ6S3M5elMrYVU4NjRQMTM5WktIa1lCNWtqbTh6aFFVaTljVVkyeUwxeDFXeEV4NGFpcUwzRVBGQTFNQ0NzdElhS0QySmlZRXB3bWowVG5NcnZoaUk0WlpQTTdzOHR3U25uWFovdUE0SlUzWnRuam93RnBYWXlqMGNoWlZPWngza2FCMW1CTlp5SGc1Q0NWTStkaXp3d0RTa2c1WjVIVnBUMUFVQXVia3VsNHFZaUJxbEdCcVZWTWtmYW1jZmprSnFueDNrc215cW51UzQ3b3FiemNCcm1iLzJMVXZuZjA1QUNWZDRhVzU5cFNHVjduNVh0a1N1WlV6bVJPVlVDbVZONW5sc3lwNXgzZloyN0I4M0dQbTd3Qnc3MVRzU04rZGdDdmZPNXJDL08vamFqbjJSSHNPRGVjamRZNWY1U3BxdHcyOXpjL1k3c0NVN2xkYU9JTndmQktadGtkbjl1Q1U0NTcwcTVSN3l5dWQvWWVQYjVvMmtrekg3bjhpamNsaHFaeTdzMURiSWpXUCtjUEdqT1I1bFYvWFlkVWpEcVcwaFprbE5EUXA4SVR1VjFZNGczZ2xNRDBXdFhzeHZCTzhPUTNia2w2T3U4SzIxT3kwSlpmWkgrUjFESzFJZTVIRGZFQXdPeTRUWHdkcDRMU0xHcmMzUFluSmUvaHhTc2NuN21LZDdudm9YMG9HNWlPT2d6d1NrQXNMa3Z4VFNrckpGdk1xUjZPWmZqQnZodXFSR0wzUTI4VG1SSDBOSDVHUitFSEFZQnEzMmJCTUVvQ2lVNEJRQmxiZTZIZHpiM3BXZFZLV0VvZXo0UEg4em5XbDAvMkpES2ppSzM4elRlZS83Yi9INFlaUFR1U2p6dnA4MjVmK1hjcDNTQ1V3QlE3cVpodmxGNGVtZlQwR2RYemNkQ3ZlNU44SHcrRHdyOXB1WTVwWnl2ZytZVE02M21mYTM0MlRUY0JxR216bnRxSlRnRkFQVnVHSjdlK1hPT0MvVzRPUDl4ODJmbEMvdzhsK2RsUm4zTjJuaTRJVFhQcWVrK0ZNMS9ud2V2Y3J3ZjdmcDhqNSsvbXZ2YnRYTWViZ2xPQVFEekxLdURPNXY3L3cyM21WWUhZWGRaVjlmTm9ueis1eC9ObnlmTlF0M1RZcmFkeTNmbjhlR0R1VHpzOENlNU85ZS8zWm5ud1lZVWZua2VENWZjZjU3ZStmTXU3MDJidW5zdXgvUDkveDc4NTFkZXlBR3JFWndDQURiWk9LeWFvVExWQzRvTTUrL0RUZTAybTl6SnZYOFNlSUtjenUzSERNTDlUSzFmbmJzZW9BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUE4UC9aZzBNQ0FBQUFBRUgvWDd2Q0JnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBREFLQUVHQUN0WXVIdzdmV2xKQUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIkZJRE9fMl8wIl0sImV4dGVuc2lvbnMiOlsiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiMWMwODY1Mjg1OGQ1ZjIxMTgyM2MzNTY3ODZlMzYxNDAiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjp0cnVlLCJ1cCI6ZmFsc2V9LCJtYXhNc2dTaXplIjoxMjgwLCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxXSwiZmlybXdhcmVWZXJzaW9uIjoxfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjEtMDYtMjIiLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IkNhcmRPUyBGSURPMiIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjEwNjIyMDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjMiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMyJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMS0wNi0yMiJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjEtMTEtMjQifSx7ImFhZ3VpZCI6Ijc3MDEwYmQ3LTIxMmEtNGZjOS1iMjM2LWQyY2E1ZTlkNDA4NCIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiNzcwMTBiZDctMjEyYS00ZmM5LWIyMzYtZDJjYTVlOWQ0MDg0IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkZlaXRpYW4gQmlvUGFzcyBGSURPMiBBdXRoZW50aWNhdG9yIn0sImRlc2NyaXB0aW9uIjoiRmVpdGlhbiBCaW9QYXNzIEZJRE8yIEF1dGhlbnRpY2F0b3IiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUIyRENDQVg2Z0F3SUJBZ0lRR0JVclFiZERybTIwRlpuRHNYMkNCVEFLQmdncWhrak9QUVFEQWpCTE1Rc3dDUVlEVlFRR0V3SlZVekVkTUJzR0ExVUVDZ3dVUm1WcGRHbGhiaUJVWldOb2JtOXNiMmRwWlhNeEhUQWJCZ05WQkFNTUZFWmxhWFJwWVc0Z1JrbEVUeUJTYjI5MElFTkJNQ0FYRFRFNE1EUXdNVEF3TURBd01Gb1lEekl3TkRnd016TXhNak0xT1RVNVdqQkxNUXN3Q1FZRFZRUUdFd0pWVXpFZE1Cc0dBMVVFQ2d3VVJtVnBkR2xoYmlCVVpXTm9ibTlzYjJkcFpYTXhIVEFiQmdOVkJBTU1GRVpsYVhScFlXNGdSa2xFVHlCU2IyOTBJRU5CTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFc0ZZRUVoaUp1cXFuTWdRalNpaXZCalY3REdDVGY0WEJCSC9CN3V2WnNLeFhTaEYwTDh1RElTV1V2Y0V4aXhSczZnQjNvbGRTcmpveDZMOFQ5NE5PenFOQ01FQXdIUVlEVlIwT0JCWUVGRXU5aHlZUnJSeUp6d1JZdm5EU0NJeHJGaU8zTUE4R0ExVWRFd0VCL3dRRk1BTUJBZjh3RGdZRFZSMFBBUUgvQkFRREFnRUdNQW9HQ0NxR1NNNDlCQU1DQTBnQU1FVUNJREhTYjJtYk5EQVVOWHZwUFUwb1dLZU55ZTBmUTJsOUQwMUFSMitzTFpkaEFpRUFvM3d6Njg0SUZNVnNDQ1JtdUpxeEg2RlFSRVNOcWV6dW8xRStLa0d4V3VNPSIsIk1JSUJmakNDQVNXZ0F3SUJBZ0lCQVRBS0JnZ3Foa2pPUFFRREFqQVhNUlV3RXdZRFZRUUREQXhHVkNCR1NVUlBJREF5TURBd0lCY05NVFl3TlRBeE1EQXdNREF3V2hnUE1qQTFNREExTURFd01EQXdNREJhTUJjeEZUQVRCZ05WQkFNTURFWlVJRVpKUkU4Z01ESXdNREJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCTkJtclJxVk94enRUSlZOMTl2dGRxY0w3dEtRZW9sMm5uTTIveVlndmtzWm5yNTBTS2JWZ0lFa3pIUVZPdTgwTFZFRTNsVmhlTzFIamdneEFsVDZvNFdqWURCZU1CMEdBMVVkRGdRV0JCUkpGV1F0MWJ2RzNqTTZYZ21WL0ljak50Ty9DekFmQmdOVkhTTUVHREFXZ0JSSkZXUXQxYnZHM2pNNlhnbVYvSWNqTnRPL0N6QU1CZ05WSFJNRUJUQURBUUgvTUE0R0ExVWREd0VCL3dRRUF3SUJCakFLQmdncWhrak9QUVFEQWdOSEFEQkVBaUF3ZlBxZ0lXSVVCK1FCQmFWR3NkSHkwczVSTXhsa3pwU1gvelN5VFptVXBRSWdCMndKNm5aUk04b1gvbkE0M1JoNlNKb3ZNMlh3Q0NILy8rTGlyQkFiQjBNPSIsIk1JSUIyRENDQVg2Z0F3SUJBZ0lRRlo5N3dzMkpHUEVvYTVOSStwOHoxakFLQmdncWhrak9QUVFEQWpCTE1Rc3dDUVlEVlFRR0V3SkRUakVkTUJzR0ExVUVDZ3dVUm1WcGRHbGhiaUJVWldOb2JtOXNiMmRwWlhNeEhUQWJCZ05WQkFNTUZFWmxhWFJwWVc0Z1JrbEVUeUJTYjI5MElFTkJNQ0FYRFRFNE1EUXdNVEF3TURBd01Gb1lEekl3TkRnd016TXhNak0xT1RVNVdqQkxNUXN3Q1FZRFZRUUdFd0pEVGpFZE1Cc0dBMVVFQ2d3VVJtVnBkR2xoYmlCVVpXTm9ibTlzYjJkcFpYTXhIVEFiQmdOVkJBTU1GRVpsYVhScFlXNGdSa2xFVHlCU2IyOTBJRU5CTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFbmZBS2Jqdk1YMUV5MWI2aytXUVFkTlZNdDlKZ0dXeUozUHZNNEJTSzVYcVRmbysrMG9Bai80dG53eUlMMEhGQlI5U3Qra3RqcVNYRGZqaVhBdXJzODZOQ01FQXdIUVlEVlIwT0JCWUVGTkdobUUyQmY4TzVhL1lIWjcxUUV2NlFSZkZVTUE4R0ExVWRFd0VCL3dRRk1BTUJBZjh3RGdZRFZSMFBBUUgvQkFRREFnRUdNQW9HQ0NxR1NNNDlCQU1DQTBnQU1FVUNJUUMzc1QxbEJqR2VGK3hLVHB6VjFLWVUyY2thaFRkNG1MSnl6WU9oYUh2NGlnSWdEMkpZa2Z5SDVRNEJwbzhycm9PMEl0N29ZakYya2d5L2VTWjNVOUdsYXF3PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFGQUFBQUFVQ0FNQUFBQXRCa3JsQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUJIWnBWRmgwV0UxTU9tTnZiUzVoWkc5aVpTNTRiWEFBQUFBQUFEdy9lSEJoWTJ0bGRDQmlaV2RwYmowaTc3dS9JaUJwWkQwaVZ6Vk5NRTF3UTJWb2FVaDZjbVZUZWs1VVkzcHJZemxrSWo4K0lEeDRPbmh0Y0cxbGRHRWdlRzFzYm5NNmVEMGlZV1J2WW1VNmJuTTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlrRmtiMkpsSUZoTlVDQkRiM0psSURVdU5pMWpNREUwSURjNUxqRTFOamM1Tnl3Z01qQXhOQzh3T0M4eU1DMHdPVG8xTXpvd01pQWdJQ0FnSUNBZ0lqNGdQSEprWmpwU1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJajRnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJZ2VHMXNibk02ZUcxd1BTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGh0Ykc1ek9uQm9iM1J2YzJodmNEMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzl3YUc5MGIzTm9iM0F2TVM0d0x5SWdlRzFzYm5NNmVHMXdUVTA5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5dGJTOGlJSGh0Ykc1ek9uTjBVbVZtUFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdmMxUjVjR1V2VW1WemIzVnlZMlZTWldZaklpQjRiWEE2UTNKbFlYUnZjbFJ2YjJ3OUlrRmtiMkpsSUZCb2IzUnZjMmh2Y0NCRFF5QXlNREUwSUNoTllXTnBiblJ2YzJncElpQjRiWEE2UTNKbFlYUmxSR0YwWlQwaU1qQXhOaTB4TWkwek1GUXhORG96TXpvd09Dc3dPRG93TUNJZ2VHMXdPazF2WkdsbWVVUmhkR1U5SWpJd01UWXRNVEl0TXpCVU1EYzZNekU2TlRrck1EZzZNREFpSUhodGNEcE5aWFJoWkdGMFlVUmhkR1U5SWpJd01UWXRNVEl0TXpCVU1EYzZNekU2TlRrck1EZzZNREFpSUdSak9tWnZjbTFoZEQwaWFXMWhaMlV2Y0c1bklpQndhRzkwYjNOb2IzQTZTR2x6ZEc5eWVUMGlNakF4TmkweE1pMHpNRlF4TlRvek1Eb3lOeXN3T0Rvd01DWWplRGs3NXBhSDVMdTJJT2FjcXVhZ2grbWltQzB4SU9XM3N1YUprK1c4Z0NZamVFRTdJaUI0YlhCTlRUcEpibk4wWVc1alpVbEVQU0o0YlhBdWFXbGtPakpGTnpGQ1JrWkRRelkzUmpFeFJUWTVOemhFUVRsRFFrSTJORFl6Umprd0lpQjRiWEJOVFRwRWIyTjFiV1Z1ZEVsRVBTSjRiWEF1Wkdsa09qSkZOekZDUmtaRVF6WTNSakV4UlRZNU56aEVRVGxEUWtJMk5EWXpSamt3SWo0Z1BIaHRjRTFOT2tSbGNtbDJaV1JHY205dElITjBVbVZtT21sdWMzUmhibU5sU1VROUluaHRjQzVwYVdRNk1rVTNNVUpHUmtGRE5qZEdNVEZGTmprM09FUkJPVU5DUWpZME5qTkdPVEFpSUhOMFVtVm1PbVJ2WTNWdFpXNTBTVVE5SW5odGNDNWthV1E2TWtVM01VSkdSa0pETmpkR01URkZOamszT0VSQk9VTkNRalkwTmpOR09UQWlMejRnUEM5eVpHWTZSR1Z6WTNKcGNIUnBiMjQrSUR3dmNtUm1PbEpFUmo0Z1BDOTRPbmh0Y0cxbGRHRStJRHcvZUhCaFkydGxkQ0JsYm1ROUluSWlQejQ3N0pYRkFBQUFZRkJNVkVYLy8vOEVWcUlYWmF2RzJPb3FjTEcyek9Pa3d0MEJTSnRxbGNYVjR1K2F1dGxXaGJ6azdQVUFNWTlIY3JLanROYnE4ZmVBbDhhQm9zeno5dnBkanNHR3F0RjNuOHVUc05TWnBjNkpzTlQ1K3YweFlLbnU4UGZmNS9MNDhmZy9mcmljekpnWUFBQURBRWxFUVZSNDJrUlVDWmJESUFqRlhaT1kxVGF0TmMzOWJ6a3NTWWMzcjRNRTRmTUJBYUQ2emw4eS85VE9nZXQ4ZDVqZk43OGJ3TS9kRENScFI1MjF6WGZvakhKMDVJSXloQkFVU1ZBT05kR3pCWXQyZjdLRnJma0phQWtIaDlGWmhjRFhIUmtUS285TUxpaEdhYXZJbW5WM3F5RVgwRXByZ3ovNER3VUQ3a0NIUm5kOFFGTjQzR280VVZtRERnemE0dzI3b2l6ZEEyK2NLK3V1VXBqam8yK3h3Yy80Mlc1MHg1TEdZZURCc1IwSFZJeDV4OGlGNjBDYmxiVEVFa0ZyMjdiTkRCVVZTcTFPS1ZQYkU2MmIzRUg4RnFCZzVPT09FdWMydDhaSmlxTU91R3ArY0tqZzd3VkdjZW96cU40cHhnVlBRa2pGWWdiVkpLRFVoRENqWXJhd1A1cTRFVGdDOWZJTVJIdGl0cFFjQ3ZKT0VMY2JNc1FnbmNpUmtsanB5UWp2RzQ0anFCVUVURmlCaTFQRUl5ZWtPenNXK1R5NWNMSG9zNVIrZE1TMUx0U1N4ZjNnUUhjelIyQ0k0Z01OcFc0SVJBMVFNYTZ0SjQrQzZ1SHVHRThtTkRJeUZxZy9PUC9NTVV1ZVM2SXE4UzkwZEFlQkpTRXkvcUtrSytCTnd6OGNZWTRqYjVKNnU0aVdDSTJCMVo1NkxXNWtFYzRoa2RNcHN2VUM1NTg1U1gwUXViY2dOcXlmZ0RGRWNUdCs0MC8wUzVOeDB3YUN3M09La2NPYkE1SW4wQVlwMDFwamp3Mm42MjZVRGp0SHdhMjhpSHVUS3F0cnYrcmVXNDFOWjZpR2xyN3V1TEpDZmtGdGN0Y0cwNHNnbTFlTlMrWmFEbnBhVEVyR295WDVKSzJpTXo4eHMwbk93V0djUERONDlxYUNkNGJ6Sm96RFptL2FCSytFb3pMdytYaE5CaVl3SGYwc2lPdTFYUGtHL3pLd3ZxWUtjZlN3REVjSC9vVWUwN2VzL1dROHJJeWcyRE9Yajh0amtaZHVEQi9iOGh6RGxsTU1PQ1M1QkVuZDUzNGY4dGkzVVpjNGtNczN4THlhZk1Tc0poZEc4WFBxak5rNXRBZ08yNWZlS0NoblZkRGovSjBGTWtPc1UveE1CdjB3RmhZZUVHZlZIMTNmdURVMHlERkxhNGZjN1JuV0hCZnVURlYydEVtTndhZGM3YWMzVVkyamZCbDdIVDM2ZmUzNGlRTzVtTkNGRkJXMDdLalBncWhPTFUwMXZaOFB1ZVoySkNsRlpOOGprVXM2OXVrYTllUHA2K0VmTDRBRjUrTnl3U2Jpckh0Y0I4TWwvZ2t3QUVqa0s2NEtqSFBlQUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzFfUFJFIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiI3NzAxMGJkNzIxMmE0ZmM5YjIzNmQyY2E1ZTlkNDA4NCIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwidXYiOmZhbHNlLCJ1c2VyVmVyaWZpY2F0aW9uTWdtdFByZXZpZXciOmZhbHNlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWV9LCJtYXhNc2dTaXplIjoyMDQ4LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0IjoxMCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjo5NiwidHJhbnNwb3J0cyI6WyJ1c2IiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fV19fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAxOC0xMC0yNiIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiRmVpdGlhbiBCaW9QYXNzIEZJRE8yIGF1dGhlbnRpY2F0b3IiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDE4MDkyOTAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4zLjQiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDE4LTEwLTI2In1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAxOC0xMC0yNiJ9LHsiYWFndWlkIjoiZDk0YTI5ZDktNTJkZC00MjQ3LTljMmQtOGI4MThiNjEwMzg5IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiJkOTRhMjlkOS01MmRkLTQyNDctOWMyZC04YjgxOGI2MTAzODkiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiVmVyaU1hcmsgR3VhcmQgRmluZ2VycHJpbnQgS2V5In0sImRlc2NyaXB0aW9uIjoiVmVyaU1hcmsgR3VhcmQgRmluZ2VycHJpbnQgS2V5IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJpc0tleVJlc3RyaWN0ZWQiOnRydWUsImlzRnJlc2hVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZWQiOnRydWUsIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjExMiwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNmRENDQWlPZ0F3SUJBZ0lKQVA0ZlNSUXBScDNxTUFvR0NDcUdTTTQ5QkFNQ01JR1pNUXN3Q1FZRFZRUUdFd0pWVXpFTE1Ba0dBMVVFQ0F3Q1EwRXhFVEFQQmdOVkJBY01DRk5oYmlCS2IzTmxNUmd3RmdZRFZRUUtEQTlUZVc1aGNIUnBZM01zSUVsdVl5NHhEREFLQmdOVkJBc01BMUJEUkRFVk1CTUdBMVVFQXd3TVUzbHVZWEIwYVdOeklFTkJNU3N3S1FZSktvWklodmNOQVFrQkZoeGpaWEowTFdGMWRHaHZjbWwwZVVCemVXNWhjSFJwWTNNdVkyOXRNQ0FYRFRJd01EWXdPREl6TlRBd09Wb1lEekl3TlRFd05qQTRNak0xTURBNVdqQ0JtVEVMTUFrR0ExVUVCaE1DVlZNeEN6QUpCZ05WQkFnTUFrTkJNUkV3RHdZRFZRUUhEQWhUWVc0Z1NtOXpaVEVZTUJZR0ExVUVDZ3dQVTNsdVlYQjBhV056TENCSmJtTXVNUXd3Q2dZRFZRUUxEQU5RUTBReEZUQVRCZ05WQkFNTURGTjVibUZ3ZEdsamN5QkRRVEVyTUNrR0NTcUdTSWIzRFFFSkFSWWNZMlZ5ZEMxaGRYUm9iM0pwZEhsQWMzbHVZWEIwYVdOekxtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCTFBRbTUwRGdCOTgwcmRJSXA2SFlObytuZlFlVWhQc200czc4TlJPZUxNT2hldUtuOFp4UFhESEQrU0txQkhBblhOYnRvUThnNGNoK3FpUytzV3ZKdU9qVURCT01CMEdBMVVkRGdRV0JCUkRuV28yNEMyUHBFU3pWYkpQejFaRlRlYlNKekFmQmdOVkhTTUVHREFXZ0JSRG5XbzI0QzJQcEVTelZiSlB6MVpGVGViU0p6QU1CZ05WSFJNRUJUQURBUUgvTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUVTa2s3Nmt0Rm5EQkR5U2ViSkh0dzNUY0pJWFRmTm81Tmc0QWo4OEJJN1JBaUJ0RWI1b3h1aThTenNVWjZ3Y1FRam41YUI1bmQyYU5KQmhaSytpRkhIR3hnPT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBNGtBQUFERENBWUFBQUF2QlZUQ0FBQUFDWEJJV1hNQUFDNGpBQUF1SXdGNHBUOTJBQUFnQUVsRVFWUjRuTzNkVFhJYk9iYUc0ZVNObXF0NkJWS3RRT29WbUY2QlZWTk9KSy9BcklqTHNlVXhCNVpYWUdsd09TMTVCU1d0b0tRVmxMU0N0bGJBRzNCL2FhZVpKTVdmYzVBQThuMGlGTjBtWFJaL01nRWM0T0JnVVAzdi8vMWFWZFZKWmU5K1BoMTlkZmgzb3hwTVprZFZWUjE1Lzg3NWRIVGJlaEFBQUFBQUl2dEZBZUpmRHIvMmRWVlZXUWMrQ2hEdnE2bzZhRDFwNnpyM3p3b0FBQUJBR2Y2SDczRzV3V1FXVmxodklnU0lEL1BwNkx6MUtBQUFBQUIwZ0NCeHRjdXFxbzVYUG12anVhcXFZYWZ2RWdBQUFBQWFDQktYR0V4bTQ2cXF6dHJQbVBvV0lKYXdieE1BQUFCQU9YN2h1L3paWURJTEszc2ZXMC9ZRzgrbm8vdk8zaWdBK0JUbktxSm9HVkFLYloreExGRElQUTcwQUVGaWd3WkxONjBuN0gyWVQwZFgzYnhMQVBoSjJCUDkzdkFqeWI1b0dWQVk2d0tGM09OQUQ1QnVLaEVMMVh5WlQwY1hyVWNCQUFBQUlBRUVpVC9FS0ZUem9GbDdBQUFBQUVnU1FXTGNRalduNVBFREFJQ0lxS0lPWUd1OUR4SUhrOWxKcEVJMW9aTHBZK3RSQUFBQUFFaElyNE5FN1VPTXNmbjZMWlZNQVFBQUFPU2c3eXVKdHhFSzFWeFR5UlFBQUFCQUxub2JKQTRtczZzSWhXcnU1dE1SaFdvQUFBQUFaS09YUWVKZ01qdVBVS2ptS1JTcWFUMEtBQUFBQUFuclhaQ29RaldmVzAvWW9wSXBBQUFBZ0N6MUtraU1XS2ptbkVJMUFBQUFBSExVdDVYRUdJVnEvcGhQUnpldFJ3RUFBQUFnQTcwSkVpTVZxZ21WVEM5Ymp3SUFBQUJBSm5vUkpFWXFWUE5RVmRXNDlTZ0FBQUFBWktUNElERmlvWm9oaFdvQUFBQUE1SzdvSURGU29Sb0NSQUFBQUFERktIMGxNVWFobWpHVlRBRUFBQUNVNHBkU3Y4bEloV28remFlanE5YWpBSkNQeDZxcTdneGZMVmtWQUFCa3JzZ2dNVktobWkvejZZaENOUUN5cG9rdUpyc0FBTUIzeGFXYlJpcFVFeXFabnJjZUJRQUFBSURNRlJVa1JpeFVjMHFoR2dBQUFBQWxLbTBsOFNaQ29ab1FJRDYySGdVQUFBQ0FBaFFUSkE0bXM4dXFxbDYxbnJEMWRqNGRlYTlVQWdBQUFFQm5pZ2dTVmFqbVhlc0pXOWRVTWdVQUFBQlF1dXlEUkJXcXVXdzlZZXR1UGgxUnFBWUFBQUJBOGJJT0VsV294bnNmNGxQWWg5aDZGQUFBQUFBS2xQdEtZZ2dRRDF1UDJxR1NLUUFBQUlCZXlmWXcvVWlGYXM3bjA5Rjk2MUdnUTRQSjdLaXFxcU1OWHNFOUV4eUFyOEZrTnR6Z0YzeWxMOEUybENrVnR0UFUvMXU3M2FHQTNqWi9QL1F0WjYxSGYzYSs0WFcvay9sMGRPSDFiNlBmR0Q5dEo4c2dNVktobWovbTA5Rk42OUdlV25kalVmSFZUbU5nVUE4TzZvNzRaSmUwNnNGa1Z2L2Z1ekJRRFExZi9jTlJMaTlyZkIrYmVPUXpMWXYydkIvcEdxamJ3SEJOSEcvN1JodjNZdGpDOEtqNzhGSDNJbTNvRGhidXoxWDM2cU4rcXBRSGZ1cGpUOVhtRDE5bzc3ZTZYblI5YmZUZktQaDdLVWg4NmZsOVpSOGtMZ1RScXdMcWUvWExqS09NNkhNL2FyVGJ2K3IvYjUxMXVEQitxblFQMVcxMmtwTis2ck9HQytQSGF0ZitabEQ5Ny8rRmYrU3YxalA3ZSsxeDBlc0R1SDJoQWQzWGRkOEsxVFE2MitZTnR1Mk45ZHhvOU83MVBURWJzMGJqaGg3cTgvZE1uMTcwck8vb1JyUFR2UXh3R2hNZ2k1M0xQbTBNUVhsbTFBWTI3MFh2VEpWRkQvWDl5SUN4VGZmcHNER0p0dXYzODl6c245VDJkZEpINlpvNzE4K21FdzhmUEZmYU5NajJHQk51YkQ0ZERicjgvZHRRSDc3NHMyL2YwZXczeUVCWW9URitxai8vclNmdjlsQ1BuK28ydTdQK1hlM0lXTzNJSm1QSThOckRhUTJYTDczdXJJSkVmUkQzemdQcDBGRVAreERZRENhejVxeWw1ODMxMUxpUmVyMDZxMnU0L3R4UG5TYzd0dldnU3NFM0pWLy9qY0ZtL1JNck1IOXFkQ3JKQk9XRHlTd01PTiszbnRpZHl3U2hCdzB5emlPMGdkdDYxdVROVlo4RFJ2VlJweEh1MHp0OTNsRUdlNDFCM1hpSFBvQWdzVU1kOU9HTW54b2l0Z25iZWxEZ0ZUVmdIRXhtWTYyOE42L0Q1OFpFUXoyV0c2NVkrRm5ibnVRV0pONDZ6KzZHRC9hbzhBRnlmWU4xRmFEMGN2Q2pGT253bWI5cFBabWUranU2S0dYMWE4Y1plMjhQalh1aHkxbklYZ1dKbWlRWTYzNU1hWkN4eXBQdXhWNmMwOXY0ZnM0NzZxTythSWJkNVJwZU1hamJ4dHBCbmNIckkwaGNRbU9uODQ3NzhMNk9uN29ldDI3cjJ2czcwcGptY2lIMSsxcHQxOHJWNThiRWFMTjlYYms0bGsyUXFFSTFudnNRbi9VaHJmeHdjN1hEVW5Rc1JROStFaGpzV0xqT09WalVnT2M4d2g2YWZkV3prRmZMR21wUGZRa1NOVkV6VG16RmNCdWx0NWREQlUreDAzeFhNZjI4MVE5ZkdRUVpCSW1SSkR4MnFuclFIcVQ4Mlc4cVpDaU1yZU1LZlRhM2piN3NZZHRDbTB2YW95ZWQ1dkRUdjVGRmtLak8vWFByQ1Z0dlM3dlo5a3hwaWFtb3hrNmQ3RGlUVmNOTnVRNU1yQ1U0NE54VTlGWGNrb1BFUWdZYWk3WWVFS1JNTTlzeHFwWHY2a21mOTg3WHRON2psZEVFQlVHaXM0ekdUbFdCNDZjajlkMnBUK3h1NDVPK0k1TUo0SVdzeXIxcXFDaXo0YVArMkZwUlRENUlqRlNvNXROOE9ocTNIczJZQm40NU5IQk5ENXAxeVRLTklvUEJ6cjZTSDV5cWc3a3E1RHVJc29wYmFwQ1lhUnU0amF3bWJoWnBJSDRSb1ZLNWxTOXEvN1lhNkRtTVlRZ1NIV1hjYnV3OW1kR2xRb1BEcHZyYzliMituNFdzeXU4QjRyb1RDR1JsRWNtRmhiaTcrWFQwdlNwcTBvZnBxeE81Y2I1WnY1UVVJSVlHZmpDWlBXclFsMXNqRjJaWi85Sk5rSTF3blE0bXN4Q1kvRjF3Z0ZqcCsvbGJEVXB5TkNOMlg5QjNFRHJMZjhLMXBiWVFHd2o3VnpKdUE3ZnhmakNaM2VkNGJTZ1F1YzhvUUt5VUdmSzR6Zm1Ba2NZd01KRDUyS2xTcGtRWVA5M2sxQ1pvL0JTQ3czOEtEaEFyWFZOLzZiM3VSQk5PZFp2NVpXRUY4VnlUTzZ0Ky9qT1l6T2E2UG41cXc3UUsvVUYvZktXeDFEZEpCNGxxWEwwcm1SWngxSVZ1dEV0ZEhMbW5WYjNUNEdmWm1WZEowYzMwV0hqanR1aXpndUlrNk5xL1ZjcEVpWU94c3pYbmJFSENUS3F1Z3o4TFNpMTl5YkVDbCtUYnlwb0dTYm4yVTlzTzlMekhNTmhUWVdPbnFqR1pjZHA2SmpGNmpmZkdtU3lwZTcvSHhHKzlnUEs4Uit6eVJtM1lULys5c2hNZTlNZUwrdlVsR3lUcXB2V3VaTHAxNmtpS0d1a3NPYzNLdmlRTWZtNjNtYldOcVRFZ0xUVXdlY2xaQ29HaXJ2MlNWZzlYNGF5c05RcGNSZDdHZ2RyS3BBTkZEY1p2Q2hrUXZuK3AvVk1nMmNmck1SdU4vcU9rc1ZPbE51SFBsQ1p6bXhwdFFaOG05SnJPMUdadkhDanFXcTNiay9FTHNVdElHUjNVUDFWVi9hdXFxdDlWU0tlMkxHT3ZYa0U4VUNYWk5JTkVSYmplTjIycmlrK09OQk56bTNIRnZuVU9sczE0ZEszbkE5S21UZ1BGeHVSSThaME1CL0V2eDJUTmQwa0hpbzFxZkNVVjgxclovdWw3Nk5QcVNIWTByaWk5L3poTExTVmRFLytQaGJVRnV6amVNbENzeDhIUDJ4WXBDZ0dsenRnODFRSlpjTEFrN2ZTMnNacjQ3ZmNsRnlRMmluOTRlbHZDR1ROcTVQN3N3ZURvY3dxQlltUDJxKzhEMHFhekx2YVFSaXBvbFlxN1BGNW1YSTFVcGI1UDF0VHFRSEZkOFlMb2xwUnJMOG1xUURHcmZmVjlvejdyYzAvNmozRGZKYkY5cDVIV3kvanB2NDYzYUN2cWdPNm05Y3lHdFByNDB1SlkzWjU5NjFlVENoSWI1M1o0WGtEWEpaUUtqblFzU0VvNkRSUWJRVW5mWjcrV2VSZnp1K2xoTVFoU1RSY29sYThQRTJUYk90aG5FR0d0OEFDeGR0WXM5S0RaZVNZdUVxV2d2clQwMHBjY2RwbHAwS2diMExmUGZSTm5HKzV4cnR2UWZSZTRYbHE1L0Q3ZUNHMVphaXVKVnVjSXJmS3d6M2tpcWVoaGdGajczTVZtYkhYNnBROTA5blVaY1FXamI4VWdTRFZ0MENDUFZMN1ZqaE9xRU8zZHA2ZmlZMk1BbnUyeEpLVlQyOUduSW5OTm5hU2s5Nmh1d0Q3ZXI2dS9zWkNTdXZONFFMRkQzUjQvTDh1b1hIenNsOWEvMGhGRjBwNnJORThsVkFqc2NZQllDMVdoaHJIMmsvSjViK3hBQTBMWGU2eW54U0JZU2V6UHFwU1ZzTHAvczJ3UUVJc0MxVDVsWHR5d2lwaXVuZ2VJdFRwUWpES0c2dG0ya0gyRnNlM0ppb0kwemNCKzJmT0xqcGFzVHA0MkE4UU54Mm9uU1FTSldoM3luQm11RDdITXVwS3BPcUF1QTVibkpRUFdrOGdOd0lFNjQxVTNreGxkbDZrSGlBOUxHbzNZMzBrdG5LOXo3cFhPclpYS0xzODBYWGI5VjByZmNBdGNTdGcvYlNUMUFISFo5ZUY2YmJ6ZzZvWERsZDJvN1l5Wld2YWs2K05SMzBIZEpwN29PeGhHYUJjUGwzei9TRUJDQVdMZFgzYzVrUkJsREtYK092VUFNYVh4MDZIR055OWxJbXhTNk9ad1RVeDF0MDA4MUhtUXFKa0c3ejJDNTdsWE10WG5GSE92eVpOK1gvamM3bC82L1BUNlR0UVpuMGJvaksvcUVyMk9VcWtVK0tEdjRWR043dGROcnVmR2QzS3E3eVZHdzNlcEZReVB6dWNpWXVQOXNIRDliNVRpb2MvOFNKLzdpY0huL3RCNnBMOVNDQkRyUUxBT1NCNTFmYXk5M3JVSzJyd1hZN3lYd3pDYnJQT3ZvbW5VRnZEMnBLSVBOMnZ1ejU4bVdCUzhuam9HREt5WUpFWXJLckVEeEhyODlLMmRXTlZmUng0M05SM3F0WG1PY1k0U3VSK2U2bjU4eC9GVHpPL20yOUU2UzlxemJlT1h4UW5MWnVEN1N0Zm1KaXVKOTUwR2laRUsxWHhRNmRkc1JmcWNLbDFZNGZkY0xybEkxOUpOZDE4UERpSjB4bS9DNzhqOXUxMmgyY0hjN2hwd05iOFRYVU9uQ3JRODkvTWRiRGdidGhYTlNucDM5SnNNT3RkcWZPYmZyMHU5OXVHT3dUcjdFYnYzcFhFdjdqVFpxSHY0dGc1YU5BQVpSN2lteHlIdE0zSVd6YVZ6WC9Xc2M4SzJEa1RWWDl3b2NPZ2llRUJFMmk2eWFrWEYydGJqcHhYanBuR2tsY1pqdFExZFp1ZDRlRmIvZTJNMWZxcCtYRXZuRWI2Ymk4V0Q4c043R0V4bTlSODN5UTRKRTVjL0JZRWFoOXhvZ25KbDF0ZmludFd1VnhLOU43VmZ4NTVGZFhMaC9EbUZ3ZkhGc2d0bVZ3dWRzZGZlbEJEOEhPV2VSaXgxQjNQbHNlcXR6K2hLbjluWWVWWE9ZMkRxZVIrYlgvOU5HakJjN1RpQlF2cGFOKzcwZmJtc2l1c2VQMWY3ZU9VNDhEalFnQ05LSVJ0dGlmQU12SzQzT0VqNlJib256NVdHZU5YVEE3MkxGdWs0dFVwOTk2V0N3MzJ2eTV2RzN0WVkrKy9EM3VYYkFpYmI2OER3eW10N2hzWUhWd29XUFNmQ3pwUUJzampSOEtBNFlMaExwa2I0OXpUMitFY1BuYTc0ZDRhTi8rYTJzeUF4UXFHYWg0NzNMNWxRWStHMXQrTlpEWnZiQUZ3WCtxbmVoM1ZuZktDR05PZnYyVFZBV1dZK0hWM3F2TWNicDhtSGd6VU4wTllhcTZBZVB1bnpqemJSMEJnSWpQVyt4bXUrQi9ZanhuV3Q2eUhLQ3E1K3oxRFh3c2ZXWDdBeGpuaHVuK2Rremx2cmRqSU1naHBiWGxJc3N0Tk1HN3RkK04rTmFSVmgwOHJ1bTZ4VVhHZVE1UkFqKzhxbC8xQ2dNOVNnM3Z0OTVEelpYbWYvWE1WNi9hRU5hb3lmdklMNDhaSnhiYjBuZitleGtBTEZPdGhjMWQ3VjdjUzM4NWs3Q1JJakZhb1pGckxDNUJVODNHbXZacXpCa0Zkbi9FNnJWcm1sNVVVUERwdlVXSGdlN1hGaGVPMTY3UWN3SDNSdVkyRjFkNmhPWWZIZUlOMDBqcWpCNFNKTjNIeDFLcFIxR0NNMTM3R3laOTJmdTZ5cTZ6NDhUYVM0aVVtcTNCSkh4bU11dHhVYkM2cXM2NTE5ZGU3OUdZUjd0bEdQd3V2OTFKWEpveDh2dG9kbnRkZWRIUFdqKzNMbzJHYWNMd2tTNi9NOUQxYWxpbTVvWlp1aU5yeSt6cjc5KzlIUFNZeFVxS2FJQUZHcnJSNXBNSjlDdm5Mc0FWSDRUdWJUMGFrR1pKWnlTeWtPczQ4blhRWW9WYU9oY3lxT2NtaDRIcE5INTlWcGdMZ29ERFowYi96V3VEK2VNNXo4eUUwWTdMME81K2QyL1ZucmVuemJlc0pHalBPQnZkcmgweGlGNTNTR3NuWGZ0S2tudFVtLzZscjBLdjVsSXZFQTBUUDdxdElFKzBtc3o2RE9ObkMrTnQ5MGNRYjFqc0llOGFPdUFzUW14emJqUUdtdDM2a052Tk9mTHhiT1RyUlN0K0gxWkZYY0lERlNBWmEzdVZjeXJYNThWaDVwbEcrNzNxanNjR09kUlR6SWZSL1BHcER1dmFmR1NpTlFmSGI0NTYwR3B0Wm5MMzVLS1VCc0NnTUMzUit2STZZSTl0VjF6TUhlSm5SZGZuRDRwOTg0RFNxK2NWeEZmQnZ6KzlHOUY3dWljR2lQamxKdGt6TGsyVzVlYTRJOWF2K3RDWGJ2U1l4THp6YkNRQmlqL0I0bVV4T2JRQms3dFJuTGd2WTZpRHUwdU02YkIvaHJ5MFBkaG45UG9ZNjlrdWhkcUNiWndkOE9QRGJHSnJONm9nYnZTK3VKM2VXd21qaE1jUVpXallISFNzT3lSbTRyQ3Y0dDc0UG5ISzRWclN5V1VIUXJWViswWXBQY2FvMis5N3ZXRS91em5teHA4bWcvcmp2cXIwNmRKczJXNlh6U3RpUWE2SHFOTWE4MWJ1bU1jNkI0bUhoOWgvTVVDK3c0anA5YTI3STBmdnlrUDU3cGVxK2ZDNEhkUUQ4cjIzcE5jdFIvcjY2MmZkN1lFMy9YWEtXTkZpUkdLRlR6cFpURzFxbmNmMUxwZFhLdU5Cc0xwNG5QZ2xVcHIzQ3I4YlVlbUI0YXJQQmFuK01VK3pnQXBDbjFiQk9QdnN3bG5VenRyblYvOWRUVmdGWHBmVEVtYVA1ZzlkQ09ya092NzYzekFMR20xK0V4aVZTcE1ubXE0NmlVMDYvdlBUSkFscVVBSzg2cFZ5NC9LcmJhNTNlY04vYkNQeTMyRTFHQ3hBaUZhaDRpN2JtSXhicHo3R3BHZHEyNllNQzZ2N09GZzhLdWdTNTRkTEFyWjdRMlpCMGtsbml1SmdxalFZZjFpb0hYU3FKSDhCbTE0dkFpemFSN0RjU3J4ZGw2bUJnN2JXVzZTeVZBYkRnMW5HQnZPaWpoVklDT1hEcGtJS3dhL3pSclNZUUQrRysyblpBUGt3RXE4RlFIaU0vYS8vMVR1K3NlSkVZb1ZQT3NaZWdpVmdjMGkyUFpJRDBrMk1COXA4SFFwOVlUdXlGSTNJTlNENndIUnA0cGJsc3JZYjh5ZXNNNmlEaDBXaVd3RGhLZkVwblU5RnhOSkpYY2tHTU5oOWJLU2dxTUo5Z1hwYnlhbUt4R3RYSkxTOGRQalZvUzlYZ3RaR25laDZEdnBXQXhQSy9WeDhkR2dhY0g3Yzl2alk5Y2o4Q0lWS2dtU3VXemlLekwvZWNRT0Yzb2RlNzd2by9EcEFTQndGNnNEL1plTlJPMnFhV041STVpRjZRQWRoYmFzY2FaVmxaT0hNN2V0SjRJU2lLQTByRk5kdzRGZVI1U3JnNmFLYTlWeE5iS1NpclVQbnh3eU5LcnM3Slk2ZDdlcFhGbDNaVnRUK01Zam92RzlmOU94OEk5YVV0RmN5eDhwUFovc1Q5WmU5YW45MHFpZDZHYXFKWFBJckdjRGZ1UVE4QmtQQU9UMDFrL0tiSk94L1M4LzdmRjdDaHlFMlZtZWxlcWptYzVPRTlsRmJIbThWcEllYmZuc1lxWS9QaEpSYTQ4MGs1Sk9kMkI5ak9iVGthL3RES29hK0JFd1Y2ZDducW8xY1gzaloremhmRlkyTTd3MjB2VjlqMkR4R1VIUTF0S2NwL2RQcFNhYXpXb2ZzNXNKc2pxdFJJazdrR05oV1hWMmNyd3ZNUjllWnc1Q25peW5nUmRPK0RZUWRGN2hqWEdzTjVueENxaUlSWGVzRjVGZk1xb3VyUkh0dGpoc3FJcDJJaDFHL1ppbTYyanMwS3c5NnVPei9xZ2NkemR3azk0L1BlcXF2NjE2ZG5BbnVtbW5nRmkwdnZzOW1ENW5yS3E0aGd1VnFQVW5wQnllc1FoNUh1NU43NS9rMW5CQ3gxZmltVzBnV1dVVXZac09BaTJEaEt0VTAxVG5QaTljYWplQ2pzZVk4RnN4cGVPYWRHbnJIcnY1Tlk0QlhpNHpjU1NzaXZOSnFKaW41Tm9wZFFaRHN2M2xXTSt1VldEbEZTeGxBeFp6M1Nuc3BKWXNkS01ERm1tdkZrSGlaYi8zbE9pNlgycy9DVktxWGpXd2RGZGh0dVlQRlk5enloZ3M3M1N0c0RsR2lRV1Z4bE1qWjFWT3R4MXB0VmVDUkxUWUQxUTI2ZWpzVjRSUHRNK0tpQVhsb01PNjVScnl6M0hxUTZ1Q0JMVDVYTDhTdXVSeERsVkpxK1lWTjJaNVQ3UlRpZlpjdzBTdzBDdnRJMjFsamRqbHAyYVVrUXQ5bitrdEhLVm5jUW1HRHpTaG0rWUlVVkdra3lkMy9aY3JnMGtXU1JFL1pMbG9JKzJ4NDUxV21pT3E0ZzFqK0NXSUhFM2xtMTJwKzFGcmtGaThMR3dGUUhMOTVKekhybkZRQ0dsaXBxNXNweVYzT2ZhOWhnNGh2MWR0d2tWMUFIV1NYVi9kUytDUkxIOERtaDNER2lTd3JxdnovYllCd1czMXBWT3liclpUVEUxTVR5RFJLc0QwdGNwYVVYQTZtWjh5RFRWdEdZeWkwZEtZVEc4R3R0akJZck1sS0pYRW00YlV3NFNTVGxOajNYYi9WUkFVVFBySVBlQXNkUk9DQkkzY0JNaFVEd29vZkhXakpoVjlUcXFldjRYczdVRlVDRUw2eEwwdFhEUC9UbVl6RzdwQ0pHd1ZDZjlUTytaekNjM0VWOGZLdXR1eXlQSXBXL3NNZGQwMDNCdWgvWEJra3VFSXc5eXY3a3RBNXJrRDg5L2dWWFFiNTBLaGU1NHorNkc2bmgvRVN3aVJha2Y2TjBUbHBPdnRERTJDQklYZUJ6bXp2WGF1ZUlMMTV3NnJnVFV6blNnYXE1WTliTEhaMXFPV0NsQWRiQVl6dXdjT3hUbUFMQ2M5MlR5dnNqUVNZajJrMXNlb1A5UTBObksxc0V1WTZsdVdWN25XL004VFA4YkhaSWVBcmcvVzAvYStqeVl6TzR6blhXMXZBblBNMThOc2RwalNnVzVRb1I5SW9QSjdNbWhmUDhxNGZkOFZIR3NPM1c2dHdVTklvRFVrR3FLYlZnSExpWHRPYlYrTDJGZjRoSDlYeis1QjRuVmowRmUySi80cnZXa3JWdGR6TGwxT0pZQnpXSEV3WFRLcUhCYWxoQ292ZS9nSGIycUQyc2VUR1lQZWgwM2RKaUFLU2Ixc0EzcklESDNnalhmaFlXU3dXVDJiTHdDZGNKcWVqOUZPd0lqMHY3RVhBdlp2R285QXFEcE1rTGEra3VPdGNMNGoxSlNMemxHQXpDUitxUWU5M2xhVEwrUGpNOUdYTVg2L1hEOTkxVHNjeEpqN0U4c29aQU5ETENuckJ6S0R2QTRMSGhYaDhxTStIc3dtWDBOYlE3SGFhQm4rcFFpYXJuU1NXcnQvaXlEbHRUM3crN0NldHNWWTZtZWlob2tLa1VyUm9HWmJBclpzQkxoaW9hdElQUHA2Tkw0a0g4cklZUGhUTWRwRURDaUwwd0hvb2xQNmxrR2lWU3IzWjlsS21XSjM0ZjFTaUpqcVo2S3ZaSlk2YkRTR0FmdGY4NGtBR012QnJDNTh3VFNUdGRwQm96endXUjJrM25sWlNDV2xBZWlUT1ltd3FFd1g0bDc3YXpmRTlkL1QwVVBFdVVpMGhKL0tHUkRFQVlVSW1JMmdwVTNtckNxVnhqcGJGRUs2NEZveWxXNUxlOWJDb0NrcGJUOWlKVkRZYlZPajJGQWR6b0pFclcvS01hS1FLNkZiQUNzb0d5RXQ4dWZUVmE5d3ZnM2gvYWpCQTREMFNRblVCek81Q05JM0ErcGo1c3BjYThsSXV0cUpiSFNlWWJqMWhQMlVpOWt3MkFSMk5KOE9ycktNRkNzMVlmMkV5d2lkNVlEMFZUdkJldlh4WjdFL1pnR2lRVldOcTJaRmtpaXIrcW56b0xFNnNkQTc3cjFoTDFzQ3RrQTJFem1nV0sxRUN3eU80NGNXYTZLSFNSYThNbHljUHlVNFRuT3lCUFhHZmJXYVpBb01jNVByRElxWkFOZ1F3b1VmMCs4bU0xTFh1bnN4WlNPK0FBMlliMHFsbFNRcUpvR2IxcFA3STVWUk1UQ3RZYTlkUjRrUnR5ZldGSElCaWlQOWlnT0M5aUQ4WDR3bWQyenFvaU1XS2ZxblNiV1IxdG5JRkVqSVMzczJ3UFdTR0VsTWViK3hMRDUvS2IxS0lDc2hUWmtQaDJGVElFUG1iK1Y0ekFEVE5ZRGN1Q3duK3Nnc2VyRjF1TVNnc1Mwa0pJSnJKRkVrRmpGM1ovNGFqQ1pYYlllN1E2ZEJtQmtQaDJGbE0xL0ozcm8vcVlPVkFXVmZkVEl3UmZqMXpoT1lUVlI5OTloNjRuZFBXbENIQUN5a0V5UUtMSDJKNzVqQUFhVVNhdUtRKzFWZk1yNFRYNm1uVUlHckxOekRpTmxGcTJrSU5WNmp6QlpUQUN5a2xTUUdIbC80aVVwWFVDNXdsN0YrWFIwcEFxb3VhNHNFaWdpZFI3Qno3amp2YmtYeHF1SVFjcEhjZlhWcTc1L0FNQTZ2Nng1cmhOaEZXQXdtWVZaeE0vT3YvL2Ivc1FRS0haY2t0cjZkOStSd3ZvZGh4YWpUbVcvMHFUUVdCVVVMUS9IOWhZbXRPNUpWVU9LUXY4NW1NeStHRmNCcmVzSFJKL0kxWGx3NzFwUDdJZFVVOFJHQVRUc0xia2dzZEtnVGczMVdldEpXNGZxaURvN0pGUkJjZXZ4UGR4cVh4YUFoWHN0WkNvb2xleFVQNVlEV3krcFRHZ0JxMXc1M0V2SGc4bnNhajRkUlZ0SlY5dmdzVEthVWgwRTlBTkJJdmFXMnA3RXBsajdFMU1vWkpQekdXOUFWa0tnRlNhaTV0TlJDQkwvcFhSVTYrSWIxZzRaYUNKVk9vYkdZLy92V2F4MGF3V0l0dzVaQnMra21wb3luU2pUZ2dSZXhrcDREeVViSkViZW45aDFJUnR1UHFBRG1RV01ad3hva0RDdkRCYjNmYm1OQVBHNDllVCtMc2tBTU1WNGFUT20reTI1aHZzcDVaWEVtT2NuVmgwWHNySGNPNWZTUWNSQU5qSUpHRmxOUkpLMDk5ZXJtbkFJRkYxVzQ5VHZld1dJejl5enlTdHU0aTJGSTJSUWhxU0R4Q3J1K1luMXZwOHViaTdMSUpHS3JjQ2VFZzRZd3o2dDA5YWpRQm84OThPSGxmUjd5OGxjRmNuekNoQXJWaEh0emFjajY4SjhKWTZack45VHp1Y09Zdy9KQjRrU2EzL2lZVWRuR1ZrMmVteFdCZ3l0Q0JoanRFZXJkSHFHSExDS0puVTlCNVFobVBzN3JDcnVjMFJHU05zT0FXZFZWUjhkS3gwL1VVUXVDd1NKd0FwWkJJbVI5eWQyVWNqR01zZitrRlFEd0VjallBeWQ4RzlWVlgzcW9QRFVxNDdQa0FQV2lkRlhoOHJuL3d3bXM1RDljN3BKbnhmdW1iQnlPSmpNUXViT1g0NnJoelhPTi9Wak9SRnhXR0I3YWgwa2NxeGFUeVY1Qk1ZeUVjOVByRlRJNWw2em91NTB6dFNEWWFjMTdHaEZGT2lOK1hUMHFGVzlzUXByZUJ6QXZjb3BlNTJRb25CZkRDYXpDNjNTZVh0VEg3MmhQdlJ4WWRMMVZ3MllUeUtmamZySklTMFNQOXdiRjJZWkZsYUIxbnFmSldkTzkxUXU2YWJmUk55ZldIVlF5TVp5TlpFS2lFQkVXbDA4VWlwcWpKVkZWaW1RclBsMGRObkJIdDVqQll6dkd6L3ZGRXpFREJBZjV0TVJLZUcrcklPV1l2WjVhMVhVZXJLU0lMR25zZ29TSmRiK3hOaUZiQ3hYL2loc0FYUkFFMWxIU2tQMWRFeGFPUkozM3ZIZTNTNDhNMGtiaGZVcWJVbmZtZmw3WVZXOHY3SUxFaHY3RTJPSVdjakc4aVlzTWNjZXlJTDJMWWJKck4rZFZ4VXBUb0JrcWE4ZWRyQm50eXZmQWtTcW1mclQ4V2lXRGpvK0s5dVM5U0pCM3laNjBKRGpTbUxkUVB6UmVzTEhLKzJ2OEg1UFg0MXZSdEpkZ0E3TnA2TWI1MEV5UVNLUzFxTkFzUTRRT2VnOUh1c3F1dGxuWUNtNzVFM3JpZjJ3aXRoaldRYUpWZnc5RCs4am5VMW11WEdhUFV0QXh6Um85TG9YU1RkRjhuUVBEQXRla1NCQTdJWjFsdGViQWpLd1BNYXBCSWs5bG0yUUtHSHc5ZFI2MU1kVmhFSTJsbzFlU2VrVFFMYTBvdWd4b2NWS0lySlFjS0JJZ05nZGo2MUF1V2RnZWJ4K2dzUWV5enBJVkNwTHJCU0JBd1dLYnJQM0txbHYyWWx5a0MrUUJvL09tNVZFNU9haW9OVFQwRmNmRVNCMlErTWw2MFdDODF3TGdnMG1zNkhEMlo5MzdMSHR0OXhYRW1QdlR6eU9jSmFPNWRsbmg2d21BdDF6bUFBQ3NxQkQ3RU8vK1orcXF2Nk1mQnlGbDNBTzRna0Q2TTVacnlZZVpMeWE2REhXNDd6dG5zcytTS3ppNzA5ODQxekk1c1o0cHZXU1V2bEFFdWh3MFJ1aDN4bE1acUZ2L3FlcXFyTkMzbmRZdVhyTk9ZakpzSnhVcjQxejI1dW8xK3R4ajlGbjlWd1JRYUxFM0ovb1ZzaEdNNU9tZXhOSk93V1N3S29EZWtINzkrOTFtSDBKd3NUdGgvbDBkTVNaY2QrLzM4NDVaV2djT0FXZm5qeGU3NTArWC9SWU1VRmk1UDJKbFhNaEcrdWc3cDN5MVFGMGg3MUxLSjc2eFZ1ZE01eTdiOEdoOWg3bVBObHEzZmFrdE5MbUVTQzl5V1hNcE5kcGZleEZGV0ZyRlRKUTBrcGk3UDJKYm9Wc05IdHozWHBpUDY1RmR3Qzh5SHJRMGZzVkRhU2xFU0RtdnUvd1NXT0piOEZoN25zUEhWNS9NcFdWNTlQUmxWTXhwRnpHVEI1QjhqT3BwcWhLQ3hLcitQc1RQUXZaV1ArN2g5ejBRS2R5UDRNTFdFbjdvbklPRUVOZytLbXFxbjhycmZTeXNNSTBsdHR4VWp0NDNpTlFPa3c5N1ZUMU1hd3JtZ1pYRkdWQ1ZXS1FLREgzSjdvVXN0RytCK3RnOTVXcXpBR0l6M3BneFVvaVVuSmpIQ0NHdldadnE2cjZYY0hiWGV0djdQL3ZYMnZGc0E0TXh3VWZhVTNnZGJnQUFBLzRTVVJCVkdHNXYrdzRzZUl1bDA2cmlXZXBWb2pYcXYzNzFoTTJjdHVUQ1NlL2xQakJoaGtRRlpiNXUvV2tqMURJNWw2SFpsc2FPK1NhaDBZdmZFWWNqUUZFb29HRzlRb0xleHlSQk9NVmpUREJlNzVRSU9aNzM2b1V3RHJkY1ZrSzk1Rit2aTY1UjhLLytiV25aeHVHOS82cTllanV6bE1waXFjeDM2VlQwUFI1TUprOXBsU3dTUGVBVjJiWU5RVnJVQ3N5U0t5MFAzRXdtWVVad28rdEozMkUvUFdoWmVjVGJ0VEJaSGJ0VU5xWVFCR0lSQjI2OVdEcWlYUWdwRURYdDlXUkVDRkFYSHYrb0o2ckIreXNwbS91MWppSVNpWklsRXRkaHg3cHpqZlc0N3M5M1RnV2hxSWFQcjRyTmQzMG04ajdFNzBLMll3ZDB5aElQUVg4WFRoMDZBeU9rUXJMZ1huMlJXSVNaaDNnSEthVWlxbnJ4aXZBQ2RmM2JRcEhmMmpjWnJraTNNUXFJbjVTZEpBb01mY25taGV5Y1c3NFFxQjRuOXZCc2JWVXptcENYR0Zna3NzMXEwR1V4MWx4RktGQ0txeFdFWjlWcVJJT05KYXczdGQ1bVZJRlVDME1XSitiV09zOFVGU0E2SEZvZnFYRkNLdDdHWVVvUGtqczRQeEU4MEkyYXZpc0cvZGFDR3p2dFljekN5SHRZekNaaFpXVXZ3a1UrMFVEa3M5VlZmMFRyb0ZVaXdwVVB3TEV6NjBuOXZmc3NQOFoySnI2RGF0VlJQYlkrck51Tnc0U1BFL1BzMCtvQThXby9VN285NXdEeElwVmZDelRoNVhFMk9jblZpcGtzMnhEL1Q3T25kSk9LelY4Znc0bXM1dVVWMmkwZ2hSU0lmNXFwRnN3ODlVdnpjbU1WM1ZSZ1RBeGs5SzFPNWpNeGs0QllrWGxPU1FraXdQSDhaMUhRUGRHN1YwU05ONzc0UGhhRHRUdlJGbEZiUnd0NHhrZ1BtZ3hBdmhKTDRMRUt2Nyt4RW9ibmMwR3Jjb1Q5NTY5ZXFOVnhZdFVVa2pDWjZqWDgxV0Q3c1c5WGRtc2dNTEVzdS83VUFVWi90RkVSMmVyaTdwZWI1MExacEdTaDFTUXlaRVJyUlI1aklNK0pyWS84Y0l4N2JUMlR1TWx0NGtTZmFiM1RtY2gxcDRqakMyUnFkNEVpUkp6ZitLQkFrV3pZRXNwWnRldEoyd2RhTUQ5cUpteTZLc3pTcTA0MTJEN0g3MmVWU2xOQnptbHltSjN1cGRlT2hMbWpXWjVRMG4wcTFqWGhxN1pDM1hvWGtVRktnb0xJREdXL1lQbmZZTWZ2RmFNUHF2TlRXV1A0cWxqOWxVdFRGRCtaWjJGMWRoUzgzbk4yTWZLUlUrUGhNRUdlaFVrZHJBLzhkaTZRZGF4RmQ0elpKVWFwbmZOdlYrZWpYL1lXeGhTVnRRdy9rZU40NmFEQm9MRWZ0am1lejVRZXM2ZnpZRFIraHBXWjM2bGEzYmRaSVlGQ2dzZ05hWlZlMVBlWTF3S25mZm5WZVBnVEt0cm5YK1BrYkt2YW04YW1TdzdqMGZVUjkwdWJLbnhkRTJhS2RZcDlwekVWVG80UC9GTUIrMWIzb2hEclZoNG5aT3o2RlZqLzllRDh1UER6K08yTTFDTmc1RHJBNCtIK3ZNK2cydUN4SDdZOVh1dUE4WnZlem9hMS9DOXJ1R05qNU5RYXRHSmZpeUxkbXlDd2dJb1hkaGFjTU4xN3U1Q2dZaUhRNDBWTGxRb0o3U3ZYME03MitqL2E2RTkvVDRtbUU5SHBwbExJZnNxOG5qdmpmWm9QamZlKy8ycWNaSldIK3UrWkJoeFRGZHBzWUZKUjZ6VnV5Q3gwdjVFemZiRVNtLzVxRURSNUd5ejBJSHE5ZDlHSHFSV1doMDlyc3Y2aDBQNWxjTDdVZ3Jja1dNRCtDM2xsSXFQNWRvdzFYUlR4ODA5SHJxR24xK29ycmp2Uk1hKzdwanhSWUtlak52MVExV1BIQklvK2xIQWR1YzhCanJVT0tFNVZsZ3JCRTNXNmZRYTc1MDRGMzVadERneFdTMzBNVjMzSitHMW5IS1A0U1Y5MjVQWUZDTmZ2Y202a00yOVpwNWl2b2RWRGh1cmphdCt2R2ZJV0Uwc20vZjNlN0RpdXExL3V1N1FTY05EaWp6Mnh4NXJUL3c0cFRQNENwUmltK0pTQkViYmRMenJPYnprSUtIK1pNamVkbXlpdDBGaUIvc1RQUXJacEJRb2RvMGdzV3g5L243cDBKR3FkYXZ2K3poUWl1Q2o5aE9mcDN3OFU0N1VwbmdlRmJFTHQzWStrVUN4YTNXQVNLRWFiS1NYNmFZMXBWeDhVTUdKR09wQ05tWXplTnBqT2V3bzlUUWxJZVgwaE1hdlBNYXBwcmw1eXpXTmhOM1c2WVJPRnRQMjZwUzk4UE5WSzVuTkNaUjdVdWcyRjQ2SzBOWVZ6eU1XdHVGNjdtWUlGSlg2R1RQMU5CVUVpTmhhcjRQRTZrY2pPWXk0UDlHOGtFMGpVTHhLcUxIdndqa2JzWXZVMTFYRUVDQnlKaUpTWnJMUGZndk5sTDJsTnRuNzlvTEYvY2wxUUhwZkYyQlovNTluWjZoQU80Vko1Z1B0UjNYN2pCVW8xc2RMOU1XVDlpQVNJR0lyZmQ2VDJCUjdmK0pINndOWUc2bW5YcVd0YzBES2FabjZ0aDh2dEVXL0V5QWlkVnExS3kyRmIzRi84anRsRy8ycE0vSG1ZYUpYYWJCakZVWEpscjdEbExhdHVLNG1Wdjk5ejZGdGZkMlRyVHFoaWlsWlZ0Z0pRV0kzK3hNcjYwSTJsZDdIZkRvS0RleW4xcFA5Y0poN2g0MmY2UjVadVdwUW9DZWxCRkdwRjdubzQyVEdzVklXdzc3SnZ3ZVRXYjEzTXN1SlNnVVFxV1RoUlBrTXRWcDVVdmpFK3FmNWRIUkNDaloyUlpBb2FqQmlidUkyTDJSVG0wOUhZODJTUGJXZUxCOVZJTXZTcDlYaE8yWjhrUnZudzlsemNhaWc4Yy9CWlBaVkFXTldFNVphWFh1YndPcmFjYXlxdHFGNGp5YldVeXZnczY4Nkc0WHROOWdMUVdKRDJKOFl1Yk9yQzltWWE4eVM5V2xWOFU0SDJLSWNmUmlBaGc3OWp6QllZY1lYbVRxbnl2WjNkYkdkc01KNG05UHFvZ0xGRkZKUDNWTk9telQyKzYyUXZpYWtmeCtSalFJTEJJbHRzZmNuaGtJMkxyTTlTait0VnhWTEhtaUhSdkcxQnRtbEZSWG90YkNxcHBuZTE0V1dMLytpMVVNT3lrZTJkSnpDQmQ5Z3l5dXRMajVhMXlId29reUdFKzFsNjByMHdMcXhxdmg3cGxsWWR4b0huVFBaQ0NzRWlRczYycDlvWHNpbUtRUk9hdnplRnBTQytxd1VrZC9VS0JJY0Zrelg4TGxtZS84bzREcXVPL1JUemtCRUNUVFIwZmR6NkZZNVZOR2IyeHpPZTFUQWROSmhHbVpuQVhWWWdadFBSMGNaalplZVZBbWJTWEtZSTBoY29vUDlpWlhYL3NTbWtFclNhUHh5WFZuOG9sejdYME9LQ0FQc2Z0SGc1VkxYOGIrVlRwMVR3UGlGVlc4VWJOenhDbFRxd3NyaXZWZjJrTFVPMHpBUHV3Nm1NeGd2M1drc2RFUWxiSGdoU0Z5aGcvMkpCN0hPbkZMak4yd01zbFBmUy9KRkRmVy90UEpDcmozcVZOUnhJMkQ4a09nQTlVbXJuNy9wK2lVNFJKRWF4eW4wdlpETk9nZktIcnFOVmFCbEg0MDB6TmZxaTJOSllpOW5ZN3owV3dLVGtrOTZEYjlwb3BHeEVGejEvakQ5RjV4R1BtUTJWUFc2VWxxZHUwYlo2N0UyMXcvMW5nOGp2ZDlWN2hRdzN6S2d4aVowTFllZkN3Mjhodm81NmVnSWpTKzZobTlZN1VhZjFJSGlZREs3MUJtRFdDNjBTNDg2UEQ3NWlzYnFpK3QwMlZNVkt6cHUvY1g5UERUNi9xUUNJTFhqOVhqcHBERmU4dTVmN2hwOUNaV3ZFZFV2R2xpOWR2aWwyVi9Nb2JOVFk1RDhIb0o5cVVHK1VRTjRwTUYxUGNnK2NRaVVuM1dOZk5YL2hwL0h4QnJCcTFpcnV3a0tuYUhWTEhmVVRmUWFwTjQwSzkzcVBxN3Y1YUgrMTJJeTVFa1RTZlUxZko5aFIyNTluWHU5Zjh0K0tyZkEzZks5UjdrK3d5ci9ZREs3VVVHYlBwMTF1bzBEQlY1WkJJclZqMkFwVEFCY05pYms2dmIxVi8wc0JvOVBTKzY1dXY5L1ZOK2ZUVi9ibUpUOFZuQk1OU1hxL3VWa3gvNmxIaE05TnZxU25NY2YxckZGVHYxcU1XUEh3WHcrYnowSUxMTlFYR2VUamVYM2l3RUNLNE5JaVNaRTZrbWdveGNtaEpyWDdpTXJoTUJtbEtseUZURXJKMGUva3o1WUZnWFJMNTJYZVU4MVVxU0tJQkVBQUxoUWtaWUxBc1FYaFpXa2JGWVVBWlNQSUJFQUFKaFM1c25sa3RSRHJQYXNjMVBKVWdEUU9ZSkVBQUJnUWlsMkZ4U3QyZG1EVmhSSlFRVFFLWTdBQUFBQWUxT0JxRnNDeEwwY0s4Z0dnRTZ4a2dnQUFQYmlYSnptSVZLVjVKU3FzTDZtMEJ1QUxuRk9JZ0FBMk5sZ01ndG41bjAyL2dTZnRLZnhLbmJxWmFQcWNmTjRoOWpuQjE5dVVCa1RBTnl3a2dnQUFIYmlFQ0NHNFBCaVBoMWR0Wjdwa1BNaDhxdThUZTF6QU5BZkJJa0FBR0JyeGdIaXM0TER5OVl6aVZIQUdQWU5uam0vc3FmNWRMVHU3RllBY0VPUUNBQUF0cUlpTlg4YmZXcGh6K0ZwYmtjL1JBb1dPV1FmUUNlb2Jnb0FBRGFtWXk2c2lxcGM2OGlIN000R0RLOTVQaDJGMWRUWFdnbjFjTjd0dXdUUVY2d2tBZ0NBalEwbXM3Q3k5Y2JnRTd0V2tKVzlSdURzc1YveFg1eWJDQ0EyVmhJQkFNQkd0QS9SSWtDOEt5VkFyUDY3cXZoVjFWQWZXay91N3pUMit3RUFna1FBQVBBaXJaWlpGSlo1TGpId2FRU0sxcW1uQklrQW9pTklCQUFBbXhnYkhaWS9MalY5VXUvTGVvVjAySG9FQUp5eEp4RUFBS3lsVmNSSGd5Q3hGOGM2RENhenNEL3hWZXVKM2YyV1kzRWZBUGxpSlJFQUFMekVhaFV4K1hNUWpWZ2Znczk1aVFDaUlrZ0VBQUF2c1VxaHRBNmVVbVY5dHVGSjZ4RUFjRVNRQ0FBQVZocE1acUZ3eXVHcTU3ZncwSmVqSFBRK0xTdWQvdHA2QkFBY0VTUUNBSUIxckFxbjNMY2VLUnRuR3dMSUZrRWlBQUJZeCtvSUJncXZBRUFtQ0JJQkFNQlNxbXBxa1dvS0FNZ0lRU0lBQUZqRnNtQkszOUpOQVNCYkJJa0FBR0FWeTRQYysxYWhrNHFrQUxKRmtBZ0FBR0JvTUprZEdaMHJDUUNkSUVnRUFBQ3JXQjdpM3FlVk5jc1YySXBVWFFDeEVTUUNBSUJWQ0JKM1kxVVJ0c1p4R2dDaUlrZ0VBQUF4SENvTnMyaXFDUHZHOGozT3A2UGIxb01BNElnZ0VRQUFyR0tkNW5qZWVxUThZK04zOU5CNkJBQ2NFU1FDQUlCVnJOTWN4MXBwSzVMZW0zV1F5SDVFQU5FUkpBSUFnRldzZzhRRGh5QXFKVmNPVlUxdldvOEFnRE9DUkFBQXNJckhLdGI3d1dSV1hCR2J3V1IyYXIwWFVkaVBDQ0M2d1h3KzUxTUhBQUJMRFNZemo0SENVNmgyT3ArT2lxamFxYUQzMW1FVjhjdDhPckt1bEFvQUwySWxFUUFBckhPMzVybGRIWWFncW9UOWlZNEJZcVgwVlFDSWppQVJBQUNzNDdVbjdsaUJZcmFwcDg0QjR0TjhPbUkvSW9CT0VDUUNBSUIxUEZlejZrQXh1NVRLd1dRV0N2RDg3UlFnQmhldFJ3QWdFdllrQWdDQXRRYVRXUWdVejliOUhRTWhyZlY4UGgwOXB2eHREQ2F6SXdYT3IxcFAyZ21yaUVleDN4c0ExRmhKQkFBQUw0bXhxaFdDcm45Q1FEcVl6SWF0WnpzV2drTUZ5Lzg0QjRnVnE0Z0F1c1pLSWdBQWVGR2sxY1NtQjYzWTNYUzV1cWlBOVR6aWU3K2JUMGZKQmNrQStvVWdFUUFBdkVocGx2ZU9lL0RXZVZDQm1HOC9ua2RucU9McVVEK25xc1FheTNQNHZmUHB5T044U2dEWUdFRWlBQURZaUlxMWZFemcwM3BXd0JwK3ZqWU9uSC9jZE5WUndXQmRXVFVFaEVmNjgzSHJMOGZ6eDN3NnV1enc5d1BBTndTSkFBQmdZNFBKN0RiQ25ydyt1cDVQUitkOS94QUFwSUhDTlFBQVlCc2hCZk9KVDh4VVNLY2RGL1IrQUdTT0lCRUFBR3hNK3dGUGxmS0ovVDFvSDZMYlBrc0EyQlpCSWdBQTJJb0txd3dKRlBkR2dBZ2dTUVNKQUFCZ2F3U0tleU5BQkpBc2drUUFBTENUUnFESUhzWHRmQ0ZBQkpBeXFwc0NBSUM5NkRpSkc2cWVidVREZkRxNnlPQjFBdWd4Z2tRQUFHQmlNSm1GNE9jOW4rWlNZYlgxZkQ0ZDNTNTdFZ0JTUXJvcEFBQXdvUld5ZjJ1L0hYNzRGQTdxSjBBRWtBdFdFZ0VBZ0xuQlpCYk8vUXRCNDBHUFA5MjdjUDZoOW00Q1FEWUlFZ0VBZ0F2dFZSenJwMC9CWWdnT0wxZzVCSkFyZ2tRQUFPQ3FSOEVpd1NHQUloQWtBZ0NBS0JRc25pcFlQQzdrVXcvblJGNVZWWFU1bjQ0ZVc4OENRSVlJRWdFQVFIU0R5ZXhJd1dJSUdnOHord2FlZGVUSHpYdzZ1bWs5Q3dDWkkwZ0VBQUNkR2t4bUp6cVUvelRoc3haREt1bXRBa01LMFFBb0drRWlBQUJJeW1BeUN3SGpTZU1uZG1wcUNBaEQ2bWdJQnUvWll3aWdid2dTQVFCQThyVGErS3RXSENzRmtMODIvdjhtQlhHZUZQelY2dUR2c1E0SzU5UFIxOVovQlFCOVVsWFYvd1BoV0szdE1QVnRHUUFBQUFCSlJVNUVya0pnZ2c9PSIsInN1cHBvcnRlZEV4dGVuc2lvbnMiOlt7ImlkIjoiaG1hYy1zZWNyZXQiLCJmYWlsX2lmX3Vua25vd24iOmZhbHNlfSx7ImlkIjoiY3JlZFByb3RlY3QiLCJmYWlsX2lmX3Vua25vd24iOmZhbHNlfV0sImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzFfUFJFIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiJkOTRhMjlkOTUyZGQ0MjQ3OWMyZDhiODE4YjYxMDM4OSIsIm9wdGlvbnMiOnsicmsiOnRydWUsImNsaWVudFBpbiI6dHJ1ZSwidXAiOnRydWUsInV2Ijp0cnVlLCJ1c2VyVmVyaWZpY2F0aW9uTWdtdFByZXZpZXciOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZX0sIm1heE1zZ1NpemUiOjc2MDksInBpblV2QXV0aFByb3RvY29scyI6WzFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjIwLCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjI1Nn19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIyLTAxLTA2IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiVmVyaU1hcmvihKIgR3VhcmQgRmluZ2VycHJpbnQgS2V5IiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyMjAxMDYwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjQifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjItMDEtMDYiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MX1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMy0xMS0xNSJ9LHsiYWFndWlkIjoiN2I5NjQ1N2QtZTNjZC00MzJiLTljZWItYzlmZGQ3ZWY3NDMyIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI3Yjk2NDU3ZC1lM2NkLTQzMmItOWNlYi1jOWZkZDdlZjc0MzIiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiWXViaUtleSA1IEZJUFMgU2VyaWVzIHdpdGggTGlnaHRuaW5nIn0sImRlc2NyaXB0aW9uIjoiWXViaUtleSA1IEZJUFMgU2VyaWVzIHdpdGggTGlnaHRuaW5nIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NiwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9LHsibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyIsImVkMjU1MTlfZWRkc2Ffc2hhNTEyX3JhdyIsInNlY3AzODRyMV9lY2RzYV9zaGEzODRfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo4LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo4LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRFNEQ0NBakNnQXdJQkFnSVVVY21NWHpSSUZPZ0dUSzBUYjNnRXVaWVprQkl3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRRG01NTViV1k5V1crdE9ZMHJJV0hsZGgrYU5hbm9DWkNGaDdHazNZWnJRbVBVdzBoa1NHNnFZSFF0UCtmWnlTMzNWRXJ2ZytCUXFubXVtZ05oZnhGcmt3RVpFTGVpZEJjQzhDNEFnNG5xcWlQV3B6c3ZJMTdOY3hZbEluTE5MRmNaWS8rZ09pTjZaT1RpaE81L3ZCWk1iajlyaWFBY3FsaVltTkdKUGdUY01HYUVBeU16RU1OeTJubTZFcCtwalA1YUY2Z2kyMXQvVVFGc3VKMWoyUmoveW5NL1NkUnQrZWNhbDVPWW90eEhrRmJMOXZ2djJBMk92NUlUWkNsdzRiT1M5bnB5cFFpbU9aNVFBWXl0bVlhUXBXbC9wTVl6NnpTajhScWtWRE5FSkdxTmZUS0EyaXZMWXdYNmxTdHRNUGFwZzBKODRsOVgwdm9WTi9GcFM0VkNWQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJRZ0tGQWhHNlJhVytoVHk1MmR4ZVQ4YkM5Nkh6QWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQVlNemdMckpMSXIwT292UW5BWnJSSUd1YWJpSFNVS1NtYkxSV3BSa1dlQXRzQ2hERUhwWGNKL2JnRE5LWVdvSHFROHhSVWpCNEN5ZXBZZXZjM1lsckc4bzd6SHhwZlZjYW9MNVNldUprekh4S240YlRhU3A5K012d2FtbnA2NGtaTWlOYkZMa25mUDlrWUtvUkhrTVdoZVJKMVVzUDF6NFNjbWtDZUlMZnNNczZ2cW92cWpXQ2xGc0pwQmNzbHVZSFdGN2JCSjFuNFJ3ZytBVEVvcFk0SWdHdjZadndjK0E5citBVDJocXBvU2tZb0FsK0FOWXdnc2xPZjlzSmUwVitUQTlZWS9VbGFCbVBQVGQwLy9yOXd2Y2VQV1prUGpLb0FDL3pVTmhmRGJoNExWOEdIczNseVgyWG9tTC9MTmM4Sll6eUlhREVoR1F2ZW9QaGgvdHIxZz09IiwiTUlJRFNqQ0NBaktnQXdJQkFnSVVUbmJiR0lSMk5IdnpxSUtGQWVRd0cxWEJpczB3RFFZSktvWklodmNOQVFFTEJRQXdMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3SUJjTk1qUXhNakF4TURBd01EQXdXaGdQT1RrNU9URXlNekV5TXpVNU5UbGFNQ1l4SkRBaUJnTlZCQU1NRzFsMVltbGpieUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRUVnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBT3NYajNrMDRCYW40VFlkdFpLcUQvT1BKeHlEeWFQbUNCVUZVaWFaSWdUdGVabmozWDI1RGhncFpaWHNDNEQweWRJY3JsQTZ3TlVJbk9STC9MOXpCYlRFSU1BVk1HbzZnN1VLQW1iMk1GNkFIYm5oWUpkOWVpa3VwVk5XU2hITllOYzRHQmRPMVlONkFmVXF2SmhIYmUzVjRTTk1QbUJSRUtKUFZ6N1Rod2dtZ2dUZThXczJLMC93c3F2MndTRTdwYkNCc1VaaElYNTFiWk0zcHFEd0pQVG1SRkV2dDAvNnRHNWVPOEYzajE0T1hxZkVobWpuMVZ2eEtEWVFPTFpBeEN3d2dDMFA0Q2RmV3YzeThQU1I4STM1NGhPMVkrR3pOanZJcVgzOE5LTHl3dUlZSEZlck94Tmx4RU1CdkZoWUJ1UnVZQWtrZ1VhUHFONlVCaHNJTHJzQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZDQ29SSGhpeU5uYm5YUldJTDZaQlhvQlg5WVRNQjhHQTFVZEl3UVlNQmFBRkNBb1VDRWJwRnBiNkZQTG5aM0Y1UHhzTDNvZk1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQ1FGYWZKSTEvNVdnOUNFRWltRTFSUDU0UmdRd1ROVE9PUXNMQUNUZStySXRsRlF6QzlaRGhyVjgyOHlYN2p6eStBQXNwM2l6SzdUMXRoMmRsN20rdHUwc3cyUGEvb2xjMDJudDZQeUl3MzQ4Z2FIemhJMSswS0U0NXF4dkZEZUwybE14YlBmQ1l2eUVFYVl6amlRRUxVNTk1MXBYR1d5S01hLzRmTHRPK1pLT1hoTXVWZXE0clhEUEk1NFc2SkhPaUFhaUtkaXcrNWUzYzJrdC9qRklRdE02dk1YZzlMTkZ6ZGpFVE50MjBWWDlRZXZScEZaZnVjTUc5d0NhUURvRmxQenBUTUpLaFBldi9pbUptWlloS2ZyMGxMY2VtdHFqSXhMQW9xWmRPWWZIQmc2K3ZBY2RQSS9pYXVHcFVBdjdYK1VLTm1Ed2paMkJhSDRzTHdoQjJtIiwiTUlJRFNqQ0NBaktnQXdJQkFnSVVSMzhtcTI2U2Yyc3pWVjJCZEc2V0VON2t1V1V3RFFZSktvWklodmNOQVFFTEJRQXdMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3SUJjTk1qUXhNakF4TURBd01EQXdXaGdQT1RrNU9URXlNekV5TXpVNU5UbGFNQ1l4SkRBaUJnTlZCQU1NRzFsMVltbGpieUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRUlnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTlkwV2I5b1BvUm9Lb1F5V1BhSnB6MTF2cldUZzZ6VHRtTmoyVm9LUm55dktHUnFwemI4M3c1bDZZQTk2VVlrWUJEUVAwaWxPMkRQZTZ3V3FWUjV6RGZSemRjSDhiaCtMN2RHR3ZhZTZoUlRaaGtGa0NwWERzNEhjY2tuckRmOEZDbEo3SGUzOUpmNDIvRzFRbTJ6ejlXV21yUFh0Z2lLL3gwNUdqc1FmR3VERzF6ZjVRVFVVaWU4bHd5bUszVGZkT3ZOZWVKQUFQZTJwbjdJdGZSYityVnJOV2lEemxSbjJ2Tm5aMndQbzR3SC9XSjZkaFhaRytyTVdUK2E2Qm9jZzFVZkl3NmtkdW5HNGJUcFp6c3ZhY0ZZeVIwbXBmK0RlT25wU1dBbXl3SldIdlRsZjJZWHhGeWVYY1RBQ2RRbGNNTkdKMlZoWlE0OHh0UDUvUkJQLzhrQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZDaHk0Mm9raXFjVFMxaXFhL0hSV2prQm40SC9NQjhHQTFVZEl3UVlNQmFBRk9xM1FwQ2VESHRrZXR0VWZBTzZmRTZmMktGaE1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQW4rUkhJUGJ0TUVETmRUMWc4SC9SaXRBa1VkTGdBdDF0V0dXbmxqOWtuYnY0LzRHbFg3QzlwNDVlZlBPOS9hWkw2T1YxWFJLQmk2S210Qlc1SzdudVlFbk14LzVCcUJTYkxUN3JoZHVDNDlUQmVNYjlQSGRYc1RsU1ZOWWVmcjFkR2lkcjRqMHhWQlFMYjFya25EQWJkV0R6S2Z2bmF5S084RnJ3ZTdIeDg0M01HL3JKK2MwWHJ1VXZiZlZUQ0hMaUlXaE03b05EaEw4eG9iNnhVbzlLTEtjU0wrSXRZc08zLzlXYjhROUdqc3FMNEZYc0RjRzFTYVloN0twZnVNbU9peHF6SlpPMm5JaWNQWVJnMUkyU3VpVWZZTzcwdG1kSGNibCtrU1FtU1l0N3JxNHZpSUxnMkd4M2o5cklUdVdUamJhVWFTU1F4Z09tTVNIdXl6TUFDIiwiTUlJRFBqQ0NBaWFnQXdJQkFnSVVYemVpRURKRU9UdDE0RjVuMG82WmYvYkJ3aVV3RFFZSktvWklodmNOQVFFTkJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNWjYvVHhNOHJJVCtFYW9Qdkc4MW9udE1Pby8ybVEyUkJ3SkhTMFFaY3hWYU5YdmwxMkxVaEJaNUxtaUJTY0laZDFSbngxb2Q1ODVoKy9kaEs3aEVtN0pBQUxrS0t0czFmTzUzS0dOTFp1ano1aDN3R25jcjRoeUtGMEc3NGIvVTNLOWhFNW1HTkQ2enFZY2hDUkFIZnJZTVlSREY0WUwwWDRENW5HZHh2cHBBeTZua0VtdFdtTW53TzNpMFRBdWNzcmJFNDg1SHZHTTRyMFZwZ1ZkSnB2Z1FqaVRKQ1RJcStEMzVod3RUOFFESXYrbkd2cGN5aTV3Y0lmQ2t6eUNpbUp1a2hZeTZLb3FOTUtRRWRwTmlTT3ZXeURNVE10MWJ3Q3ZFenB3OTF1K21zVXQ0cmowZWZuTzlzMFpPd2R3TVJEbkg0eGdVbDVaTHdyclBrZkMxLzBDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01COEdBMVVkSXdRWU1CYUFGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFNd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkRRVUFBNElCQVFDM0lXL3NnQjlwWjhhcEpOanh1R29YK0ZrSUxrczB3TU5yZFhML2NvVXZzcmh6c3ZsNm1lUE1yYkdKQnlKMVhucXVCNXNnY1JFTkZ4ZFFGbWEzbWlvOFVwZjFvd00xWnJlWHJKMG1BREcyQnBscWJKbnhpeVlhK1IxMXJlSUZUV2VJaE1OY1pLc0RackZBeVB1RmpDV1NRdkptTldlOW1GUllGZ05oWEpLa1hJYjVIMVhnRURsd2llZFlSTTdWb2xCTmxsZDZwUkZLbFg4dXN0Nk9UTU9lQURsMnhORjBtMUxUaFNkZXVYdkR5QzFnOStJTGZ6M1M2T0lZZ2MzaXJvUmNGRDM1NGc3cktmdTY3cUZBdzlnQzR5aTB4QlRQclk5NXJoNC9IcWFVWUNBL0w4bGRSazZIN1hrMzVEK1dWcG1xMlNoL3hUNUhpRnVoZjR3SmIwYksiLCJNSUlEU0RDQ0FqQ2dBd0lCQWdJVURxRVJ3KzRSbkdTZ2d4Z1Vld0pGRVBEUlozWXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFESTdYbkgrWnZEd01DUVU4TThaZVY1cXNjdWJsdlZZYWFSdDNZYmF4bjlnb2RMeDVzd0gwbFhyZGdqaDVoN0ZwVmdDZ1lZWDdFNGJsMXZielVMZW1yTVdUOE4zV01HVWU4UUFKYkJlaW9WN1cvRStoVFpQLzBTS0pWYTNld0tCbzZVTGVNbmZRWkRyVk9SQWs4d1RMcTJ2NUxsajV2TWo3SnRPb3RLYTlKN25IUzhrTG16WFhTYWowU3dFUGg1T0FaVVROVjR6czFidm9UQVFRV3JMNC9KOVF1S3Q2V0NGRTVuVU5pUlFjRWJWRjhtbHFLMmJ4Mno2b2tWbHR5RFZMQ3hZYnBVVEVMdlkxdXNSM0RUR1BVb0lDbE9tNGNycHduRFJMVkh2alllUEdCQi8vcEV5enhBL2djU2N4andhSDFaVXc5Ym5TYkh5dXJLcWJUYTFLdmpBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlRxdDBLUW5neDdaSHJiVkh3RHVueE9uOWloWVRBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBcVFhQ1dNeFRHcVZWWDdTazdra0ptVXVlVFNZS3VVNitLQkJTZ3dJUm5sdzlLN0hlMUlweFowaGR3cFBOaWtLam1jeUZnRlB6aEltd0hKZ3h4dVQ5MFB3M3ZZT2RjSkpOa3REZzM1UFhPZnpTbjE1Y0ZBeDFSTzBtUFRtSWI4ZFhpRVdPcHpvWHZkd1hETTQxWmFDRFlNVDd3NElRdE15dkU3eFVCWnEyYmp0QW5xL05EVUE3YmU0SDhIM2lwQysvK05LbFVyY1VoK2o0OEs2N1dJMHUxbTZGZVF1ZUJBN24wNmo4MjVycURxc2FMczlUYjdLQUhBdzhQbXJXYU5QRzJraktlcnhQRWZlY2l2bEZhd3AyUldadnhyVnRuM1RWMlNCeHlDSkNrWHNORDA1ZENFclZIU0pJcytCZHRUVk5ZOUF3dHlQbW55YjB2NG1TVHp2V2R3PT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZkNBWUFBQUNHVnMrTUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFIWVlBQUIyR0FWMmlFNEVBQUFiTlNVUkJWRmhIcFZkN1ROVjFGRC8zZDU5d2VRU0lnUzlBUUFYY0ZMQVFaaTlmcGVWejF0WS9XVFpyNVd4cGM3VzVrbkxhNWpJM1o4NXNyUzJuTTJzanRXd1pTN0lVSDRINHhDbkVReDREQVpGNzRWN3VzODg1djkvbEluQnZWSi9CNFB2OW51LzVudS81bnZNNTU2ZnpBL1F2MEhiL0lyWDNWRktQbzQ1Y25tNGluVUlXWXdMRlJtWlFVdXdqRkcvTjFpUkhoMUVaME5SVlJ1ZHF0MUJkKzJuU0t5Uy9PaHlzMCtsazNlLzNrUTlxdkQ0WlV0YTRWVlNVdVkwZWlweWlUaEFmb2NvT1JWZ0R1dXczcUtSaUFkM3JiY0V0alRqWUlvZjZXYUhzQ216VlBXQ014K2NnaDh0THFXTUthTVdzVWpMcW8yUnRKSVEwb096bWVycFF1NGVzWmdzT05rR3hIN2Qwa2R2VFQxN3M0T01VN1ZJOFpoamdHYU0rQXE5aUVOdThQaWYxdWR6MDdNd3ZLV2Y4R2xWb0NFWTA0UEM1V2RUYVhZRmJSOHZOdkw1KzNLZ2ZiNXhOTXlhOVJhbUppeW5hTWxHVFZ0RmxyNmJhOXUrcHFuRVg0dU11UlJnalNZRWhyTjd1dEZGZTZscWFsN05ma3c1aW1BR0h5blBwYms4Vm1ZMHhzdG5wdGxGQ1ZDWXR6VHVCTjgzUXBNTGpUdGV2ZFB6U1VuSjdlOG1ranhaMzlmWGJLRGZsZFpxYnZVK1RVZ0duQlZGNmZRMmlQSGc0VzE2VVdVd3Z6YmsxNnNNWkUrUG4wcHZ6N0pTZXVBeWVzOGxjcENtYUt1by9wK3FXcjJVY3dJQUhXcnZQMFlFemhYQXRMQWJzc0hocDdpR2FtdnlpalA4cnlxclhVV1g5WG9vd3h5QXVmTkJycDQzUE9CRlhabGtmOE1EUmlxY3B5b3dBd3B1ejJ4K2ZXdnovRHRkZTlzbXN6eWd0Y1I2QzF3YmR6Qmw2T2xxNVdOWVk0b0dhdGhKTXJrVEV4MGpBUlNIQVZzKzVyWWtRTlhiK1FnZlBMc1E2Z1h5SW5zcmVRZm1wbTdSVkZZZkw4Nm4xZmlVT2tZdlNoa1VQeHZidWt6b3k2SzFpaE0xaG8zWHpXNkV2U2ZYQStkcGlXR2FXZCtkb1h6THptR3dLWUZMQ0FzUkFsUEJBaE1sQ0ZYVTd0QlVWUHI4SGdWY0pIV3ErRjAwcGxyK0RNVGRyUDR6dnhZMTFrTk1oeFQrU2VUR2crZDRWNUxRSml0eVVHSk5COFZGWnNqZ1lCWk0vSUkvWENUa2owcXlET3BGMkFWUTE3Q0lqVXAvRG5UMVVrTDVGNWdkaitzUzF3ZzFnRTNnaWdtNjBmQ1h6U25QWGJ5QVBiSVh2K0lEcEUxNlRoYUhJUzlza3lobG1NRTVGM2NmcUFLaHEyQzBFNVBIMWdZYVhhTFBEa1pHMEhESk9uS1dIcDUxSTB6NVNPdXg4ZTFXQXVaemRIUXJUa3A4VG1qWG9JK2xhMHdHWnN6dWJxYk8zaWZRNkEvVzd2VlNZc1YzbVIwSkt3a0tjNFdIaUJrbVI4STNDQ2dJODdvT0w0cXpUNVArUlVKQmVqRU9nQVBLOGhZUHphdE0rZUlUcDJJTzl5VFFtZXJvbVBSeHgxcXhBY3NpbGUvdWJTZUViY1dRR1lFQ2doY0xZMkh5S2pvZ2pIMjVoTXBqcFV2MU91Z2xpNGVoMmVSdzBPMzJiSmpreXVDZ056ZzB2emxZTVNpU3MwdW9vNE1HN2hNT2pDRWFYMXlGRTBuU3ZqQnp1VG5FcEs4Nlo4SW9xRkFJdWJ3OGtnOUFyRWFSRVdTWkkrakg0WGJwNmc5RTlFbkpUM29hUnpETitNVUpCUURIbjU2YThvVW1FQnVzT3hCcy9ONSt0SkViUGtBRkRqOFVHdk9zL0lXdmNTZ2xHQmh2UzcvRlRZZnBXR1lkRFk4ZlBBeFdTQTM1c1RDNHA0K0xtNEFhcUlvUGVRdGZ1Zks2SmgwWmh4bGJzVVhPU21YTmlmRDVaVEFreURvZmJiY2NseG5BOFdOQXF4Q2JSTnlraFh4UXBhRHc2N2ZYVVlic2lHMEtodHYyb2VJdmg4cmhRTVlPY0VBcVhHL2VJK3puZ09jNXl4cjhxODJJQU0xYy9GTEZPcGxxdTVlRlFYck1aekdjVkNqWWJMV0c1STRCVDFldVJybGJ4dE5PdE1pdERERWhMWElJeW5BQXZ1T0VXRTNYM05kQWZ0OTRWZ2FHNDJYSVF0MFpYNlBlQ0UvcVFGZTlySzZIeDdZVTUwS3ZIN2ZXNGZTK3E3S0tCSnhzZ2dCWDVwU0FHaDFqSXJWaDV6UTZ3M1JmYWFoQlhtL2FDYkNaVGpDVUZVVHlXWnFXOXA2Mk1qSlBYVnFPclBnTU80TnY3NEdrZitvd2Z0TlZCRFFuakZKcUhTdzE3cFh2aFdXNUtacWUvUTQ5Ti9VU1RDQVZXb1FYRklIQkhYWGUzRlByVURzdUdEbXRGL2hIS1RIcGVreGhpQU9QSStTSnE2UzZIRjRJOVlXemtCSlRvNDZpVU16V3A4UGlyL1JpZHVMeEtZc1Nrc1Y4dkxsT1F2aEdYMllsUjBPQmhCakMrdS9nRWN2WTBBcEs3WWs0MU54alBTUW5XRkhURjY2VXJqZ2V2QjhDdTVhK2wydllTUlB0dVZEbzczaGhkTVNIblVYN3RUanNWWkd4QWwvV3B0aU9JRVExZ25MMjltWDYvdFIxdG1sa1lqOFc0WCtDU2pXY1VER1kxTnBTL0M3aFNLcWlNTE0vbDJRbVNXWjczRGR6K2dpbzhCQ0VOWVBRNDZxbmt6d1hVYnF2Qmt4alVRc1dmWkZnYnVvM3JBZit3TjdqT085MCt5bng0UGkzTCswbllMMVNjaERVZ0FQNGdQVi83SWQxcSsxSFNobXVHa0lxV1JQZ3l4TUZxUDhIZmpUbmpYd1k1YlFmYkpjdDZPSXpLZ01Ib3RGL0hlMWVnc2F4SFNxRzZ3ZmRtUTV4OE55VEZGcUJjcDJpU293SFIzeWs1KzM2aEY3dlhBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiRklET18yXzAiLCJGSURPXzJfMV9QUkUiLCJGSURPXzJfMSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJsYXJnZUJsb2JLZXkiLCJjcmVkQmxvYiIsIm1pblBpbkxlbmd0aCJdLCJhYWd1aWQiOiI3Yjk2NDU3ZGUzY2Q0MzJiOWNlYmM5ZmRkN2VmNzQzMiIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImxhcmdlQmxvYnMiOnRydWUsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjpmYWxzZSwiYWx3YXlzVXYiOnRydWV9LCJtYXhNc2dTaXplIjoxNTM2LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjgsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4LCJ0cmFuc3BvcnRzIjpbInVzYiIsImxpZ2h0bmluZyJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi04fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotMzV9XSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5Ijo0MDk2LCJtaW5QSU5MZW5ndGgiOjgsImZpcm13YXJlVmVyc2lvbiI6MzI5NDc2LCJtYXhDcmVkQmxvYkxlbmd0aCI6MzIsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjoxLCJjZXJ0aWZpY2F0aW9ucyI6eyJGSVBTLUNNVlAtMyI6MiwiRklQUy1DTVZQLTMtUEhZIjozfSwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjEwMH19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTEyLTIxIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZdWJpS2V5IDUgRklQUyBTZXJpZXMgd2l0aCBMaWdodG5pbmciLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI0MTIyMTAwNSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTEyLTIxIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3Nn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wMS0xMCJ9LHsiYWFpZCI6IjAwMjQjMjMyMiIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFpZCI6IjAwMjQjMjMyMiIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJHK0RGYWNlS2V5Y2hhaW5pT1MifSwiZGVzY3JpcHRpb24iOiJHK0QgRmFjZUtleWNoYWluaU9TIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoidWFmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6Mn0seyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfZGVyIl0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZhY2VwcmludF9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsic29mdHdhcmUiXSwiYXR0YWNobWVudEhpbnQiOlsiaW50ZXJuYWwiXSwidGNEaXNwbGF5IjpbImFueSIsInByaXZpbGVnZWRfc29mdHdhcmUiXSwidGNEaXNwbGF5Q29udGVudFR5cGUiOiJpbWFnZS9wbmciLCJ0Y0Rpc3BsYXlQTkdDaGFyYWN0ZXJpc3RpY3MiOlt7IndpZHRoIjo1NDAsImhlaWdodCI6OTYwLCJiaXREZXB0aCI6MTYsImNvbG9yVHlwZSI6MiwiY29tcHJlc3Npb24iOjAsImZpbHRlciI6MCwiaW50ZXJsYWNlIjowfV0sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlCbURDQ0FUMENCR1FkUFIwd0NnWUlLb1pJemowRUF3SXdWakVMTUFrR0ExVUVCaE1DU1U0eEN6QUpCZ05WQkFnTUFrMUlNUTB3Q3dZRFZRUUhEQVJRVlU1Rk1Rc3dDUVlEVlFRS0RBSkhSREVMTUFrR0ExVUVDd3dDUkZNeEVUQVBCZ05WQkFNTUNFRlZWRWhTVDA5VU1CNFhEVEl6TURNeU5EQTJNRE13T1ZvWERUUXpNRE15TkRBMk1ETXdPVm93VmpFTE1Ba0dBMVVFQmhNQ1NVNHhDekFKQmdOVkJBZ01BazFJTVEwd0N3WURWUVFIREFSUVZVNUZNUXN3Q1FZRFZRUUtEQUpIUkRFTE1Ba0dBMVVFQ3d3Q1JGTXhFVEFQQmdOVkJBTU1DRUZWVkVoU1QwOVVNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVTSXBJL2RLWUNEWWh6d0Qyd1NmWUFPYi9uTmFpUGNXRjIxdnhaay9UZ0QwT0p0Y0QrT1BtNjRud1pkRldTRVlTVzdpT3FucG1KeWRlOG1nci90bkFpekFLQmdncWhrak9QUVFEQWdOSkFEQkdBaUVBM2J2aGF6UUZQd215WGx4Sy94Q1hmaDdnMVgxRW9iTEMzTCsyR09SeHA3Z0NJUUNmTkVUWC9tMkJlYlJMWEk0TE1QMUVRR1BYRkRmN09rNzRVN3hiaU00VmtBPT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCwvOWovNEFBUVNrWkpSZ0FCQVFBQUFRQUJBQUQvMndCREFBTUNBZ01DQWdNREF3TUVBd01FQlFnRkJRUUVCUW9IQndZSURBb01EQXNLQ3dzTkRoSVFEUTRSRGdzTEVCWVFFUk1VRlJVVkRBOFhHQllVR0JJVUZSVC8yd0JEQVFNRUJBVUVCUWtGQlFrVURRc05GQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJUL3dnQVJDQURJQU1nREFTSUFBaEVCQXhFQi84UUFIQUFCQUFNQUF3RUJBQUFBQUFBQUFBQUFBQWNJQ1FRRkJnSUQvOFFBR3dFQkFBSURBUUVBQUFBQUFBQUFBQUFBQUFFREFnVUdCQWYvMmdBTUF3RUFBaEFERUFBQUFheWo2RjV3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVnZDNlRFQ1eExKMzZ4Rm9jNWw4bEdQU1hLc3pORE0wOU5WZE4rOFA4WmRMS0JIcGllK3ZoVHVvZk5YTkF2bStNeVVtUm4xZFFaZ0FITTRjdzFMaWNQMVZMZVF1alR6SjJkSk0zMzVwaGFhVWplYWJLVVJ2ZFY3U1oxZFRTNlN1Rmt3US9iSHI3NjV0MkYxbWRrODdOUHFFK1NZeUhSMWdBTEIxOGx2eVRlalBYUXFtdWdzZ1lkVlZwMXlhSGZYTFczdlVRazJwYUlxZDVNcllxSVBmamRMTm1UWXkyK0NUb3hzYjZJdHRTdTZsQTlCWkhBNnFvQUJ5T09OSFAycFBlbmpycy84QXhtbmNZYkxDaWE2ejB4U21hWnQ5SFJNbFVSdmRGK3F6b1l1czNsZEtWMXU2aWFtM3Q3UHJ0Sm4wR2VudS9BOURXR3h4QUFBZXY4Z3hYS2svT1pxYzlKbWJLbHBNelpHa3pOa2FUTTJScE53TTZFcmgxajh3Mk9JZXlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQLzhRQUtCQUFBUU1EQXdRQkJRRUFBQUFBQUFBQUJRQUVCZ0lEQnhVWElBRVFFellSRWhZd05IQTEvOW9BQ0FFQkFBRUZBdjZiR0lTUmxOWWJGZ1VaUzNGTW1sUGd0S1cyYmZTTHJFMVBTdVcrQzB2QmFYZ3RMd1dsNExTY2lHTHlrMWlnT1Jwa3NRSXhlOStHQVFtcVVQRzdlMDBzUG43WWEzZTVkQnRxOTV4YU9aWUhGQXl4SjdjcEJreGhIaTI4NHRiemkxdk9MVEhMUUozVzFkMkgxaDZ5c0VXczVoMXlLRU9iUnJjZk9nWWl5QkZTV1F0NHlLUFNGN0kzdkRFbnR5eWY3dHdqY29mUmg0Q05ONUFNbEFLM0l3bHkzVlp1Y3NWTU9qMlhMTFJtcDlJKzFHSmoxZE8waDViU0hsQW9DVmpwOVRYSGhZOUpkcER5MmtQSnppdzQwYmRzT21hbTVkWkhZZEI4dzVZWStOZVU0K3JwTHV6YjlibWUvd0FQdGpYNnZ2VlpmK1B1dmxpNGgwWVM5WmRDVk16M2FuSnNqb3AzUGtpM1BraXg1TlRCNlJLZFRvMkZsRzU4a1c1OGtWL0pFaGRXTzJIQWxWNGdzaGtPaEtYOHJGK3RyZmpSeTFJd3g0RzJrUXlTUlIvRjNYREVudHl5Zjd0d2lzTmZTbHlJRk53ZytZU0dpTkE2cXV0ZFhPRVRHN0UzN0IrM0tOTDdlMDZ0UGNYeDk1WHRDQ1cwSUpiUWdrQmdBdU9QMGF4MEpQRXRvUVMyaEJMYUVFbU9NNCt4cnRXcUxGc29WYWhtVXhsbDZXRXZ3eDZVa0l6ZkM1ZUdQS1c4cURPcWRkR3JYUnExMGF0ZEdyWFJxMTBhdGRHclhScTEwYW5NdEN0S1RlWUI3V2s5Skg4a2MvMDMvOFFBSFJFQUFnSUNBd0VBQUFBQUFBQUFBQUFBQUFFUkVnSVFJQ0V4VVAvYUFBZ0JBd0VCUHdINnl4azZSS0Y3cVVTaDR6eWZTMURFbVpFUFdMTXVDOU10V1JZYmdzaHVSZW1YbkZPU3BWaXhZMUpWbFdKUU56eXNXTEZpeFlibjdILy94QUF1RVFBQkF3RUZCZ1VGQVFBQUFBQUFBQUFDQUFFREJBVVJGU0ZTRWhRZ01VRlJFeUl5WVlFUUpGQng4RFAvMmdBSUFRSUJBVDhCL0xWbGQ0UGtqNXI3aXB6emRSMGxReHM3aXFyL0FBUDlLT001WDJRelc1MU9sYnJVam5zdW9LK1dGN2p6WlJtTWdzWTh1Q1UvQ2pjK3lwWXQ2bXVMOXVoRmhhNFZ2VUd0bFUxTUpRa3pFck9rR09WM043c2x2Y0d0a0VvUytoNzFhRk14ZzhyYzJWbFN2ZThYendWWTdVQnN5c3MyR1oyZnI5TUxtN3QvZkNrczZXTVhOM2JKUVFGVUZzQXNMbTd0L2ZDb2FZNlpuWStxcXpZSUNkMVpZM3pYKzNEVlU1VXNtMFBMb29iVUc2NlZsaWNIdXA3UWhraUlHNnFobkNua2NqN0xFNFBkUGFrSFM5Vk5VZFdWM1RzcUttM2VQemMzNFNGamJaSkhaY1JaaTl5d2tkYXdrZGF3a2Rhd2tkYXdrTlNocElvUFMyZjVqLy9FQUVNUUFBRURBZ0FIQ3dvRUJRVUFBQUFBQUFFQ0F3UUFFUkFTRXlFeFFaTUZJQ0lqTXpWUllaR2gwUlF3TWpSU1luR0J3ZUZDYzdHeVUzQ1NzL0JVY25TQ3d2L2FBQWdCQVFBR1B3TCtadDJFWktNRHdwRG5vL0xwb0Y5czdvUGUwOTZQOU5XWWlNTWpvUTJCWEpwN0szV0lRa0h5VnpWN3VBQWdFWkJlbjVWeWFleXVUVDJWeWFleXVUVDJWeWFleXJQd283dzk5b0dsS2loVzU3M1MzblIvU2ZwVnBUZU15bzhCOXZPaFhtaTlJdW5jNWs4TWo4WjlrVWhsbHRMVFNCWktFaXdGRitVK2lPMFB4dUt0UlMwSkVyM20yN0R2SXIxS1oySjhhbXcyNGtwSzMyVk5ncXhiQzQrT0Fma0wrbUI2QTlGa09PTld1cEdMYk9MOVBYWHFVenNUNDE2bE03RStOZXBUT3hQalFTNFg0blc2M203cjBsNk84aDlwV2hiYXJpbkk4bHBMekxnc3BDcTRGM0lMMmRsdzZ2ZFBYNWhtT3lNWjExWVFrZFpxUEJZOUZwTmlmYU9zMDVNZjRYNFcyOWExZEZHUk1keHZaUVBSUU9nRGVqOGhmMHdUL2czL0FHMDcwUFJYT0xQS01xOUZZL3pYVE0yTWVBdlNrNlVuV0RVaUV1Mk1vWGJWN0s5UnBUYXhpclNiRUhVZCswdFF1STdhbmZwOWNIa1FQRXcwZ1c5NDV6OU1JVUJIc2MvSzFvamJXdEViYTBKY3NNNUhKcVR3RjNPQ1ZOaWhuSU9ZbUxqdVdPWklGYUkyMXJSRzJ0T3Z1Q1BpTnBLMVdjMURDL3VjbzhWSVJqcEh2ajdmcGduQklzbDBoNGZNWisrKy9tOVBrMy9vWU4xY2JUbHpoYS8yanpHNlAvSGMvYWNPNXVMMHIvWXJBbTMrbVJmdE8vanBVYkprSVV6OVIzZ1lFYm9KVHhNdE9jKytNMzZXd2hJbml3emNpMzRWemdOZzM0VnpnTmczNFVJczJYbG1Na3BXTGswcHovSVlKY1NITXlVZEdKaXB5U0RwUURyRmM0RFlOK0ZjNERZTitGT011VGdwdHhKU29aRkdnL0xESjNVV25pbVU1SkI2VkhUM2ZyZzNRV2szUTJySkQvcUxIdnZ2MjNtbFlqamFncEtocUlxUE5hdGRZc3RQc3IxaW5ZVWtjQmVoUTBvVnFJb3R5bTd0RThXK24wRi81MGIwZmtMK21DZjhHLzdhZDZBeWd0UlFlTWtxSEJIdzZUVE1PS25GWmFGdXM5WnArVVNNc1JpTXA2VjZ2R2lwUnVvNXlUNWc0MTNJTHZMTkQ5dzY2Ymt4WFV2TUxGMHFUU21ubTB1dHEwb1dMZzBWQ0txT1QvQmNJN3EweXRyOXEweXRyOXEweXRyOXE4c2lGL0s0cFR4aTdqOU1EczZTWDhzNWErSXV3ekMzUjFWcGxiWDdWcGxiWDdWcGxiWDdVRmVSbVFvZngxbFhkb3BLRzBKYlFuTUVwRmdLY2xUSFF5eWpXZGZVS3l5cnR4bTh6TFhzanArUG1zZUU5WkI5TmxlZEN2bFFUUGJYQWQxbTJPanV6MWR2ZFNJZW92QUd1Y0l1MlRYT0VYYkpybkNMdGsxemhGMnlhNXdpN1pOYzRSZHNtdWNJdTJUWE9FWGJKcm5DTHRrMWQzZFNJT29PaFI3QlJUdWN5dWE3cVd2Z0k4YXkwNTdIdDZMWXpJUjhCL003LzhRQUtCQUJBQUVCQlFnREFRRUFBQUFBQUFBQUFSRUFJVEZCVVdFUWNZR1JvY0h3OFNBdzBiRncvOW9BQ0FFQkFBRS9JZjhBVFlqbzRhRFRNME9NVVk2M3ZFdEJaRythQkZ1RCtoWHE5RzVFQ0hOc3U1YUJOUFY2OVhyMWV2VjY5WHBjNVlmMnltWk8wUloxVCtpZ1o0VGdoT0RvL1VUQnU2Ti9OL1hBMzBhNDBTT1FWZXFyQWQyL1NvTUhndXJPbXhHRWhucENBdVczNFVTTHFobGhNU1BnUm8wYnB0c3QzTzZYYWFvYmlWQ0VKTWllWTBERTAzaG0wSFU0eDg5ZHFYSkJSbUVTRGJpdXF5MWJwaXdNTHVIOVhBR2wzT1c3Y3N2NjQvWlJ3VnNvU3VPTStZcWZ1ZVFmTkZDcUp2d3ZVNkxUKzI3K0JoUG5aa0gzT3c5WjhOaFplaGFZbkpIRGJBNW9QQlhuUHl2T2ZsRTJERzh4RmthYkhtUkdJR3NqTWE4NStWNXo4cS9VUEZnbHcwMnBOa1pmSjN6NU5uSHZJQ2ZtRkIzVzYzN2JEYVBNNVlkSTIrV3krdFFGYkp0TjF0c1diY3g2Zm5QQXBYTk9vTGpzVEJEQnVCRWNRdWUwb1lJR0Z0b1VKMnJCTE1pTFFkaG5BcFlNbGFqZXUxQ2hpRmdYa0lTekx0U2dKZGtyRzdZd3dnNFowSHpOQXZSaUpIblNoQ0MyNjcvUkdzY3VYWWMwZnBqVGxMTWRodndkVnYyVWNJTkJyQ2NUK0E0eFZqMWxONWptSzIxYXRFV01kQmUwS2Z3MlFsWDZISU9oZURMUmRic2tuRHFLeC9IU2lKOUJadFJxMHk4eFBOSWNDdlNxZWxVOUtvYlFOaElHK3lHekRkZjdBRUdnVjZWVDBxbnBWTU5JRWp1Y1NnREZEZ1pBVVNXcmJ4WUJpdVZMUWxudkVhc2VCaDlTK1laNWg1dFNHc0RkRkx4c09YR2pVNS9CRm12UHU5ZWZkNjgrNzE1OTNyejd2WG4zZXZQdTllZmQ2OCs3MHlpbjY0TFdCdVFSMXR0Ym9OOVNVNlZHV0J2di93Qk8vOW9BREFNQkFBSUFBd0FBQUJENzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc2b01qZzR4dlAzNzc2bXB6eXl2emVwcjc3NzNqNVQvejVlL3o3NzY0cHY4QXZxLzZJRysrKyt2Yy93RC9BUDhBdGY4QXZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnYveEFBZUVRRUFBZ0VGQVFFQUFBQUFBQUFBQUFBQkFCRXhFQ0FoVVdGQlVQL2FBQWdCQXdFQlB4RDliTWRCcXpNRVVNejJsbjJCaEVScDJCYlVXQ1puaExCeEFweFBLSW1aUTFEOTJjUkR4ckFXb0F0MGl3aHNib0RUSHJwQVJqQ2pXaG01dEdvTXpMOVMvVXYxTDlTL1VYTDlqLy9FQUNnUkFRQUJBUVVJQXdFQkFBQUFBQUFBQUFFQUVTRkJZWEhoSURGUmdaR2hzZEhCOFBGUUVQL2FBQWdCQWdFQlB4RCtzYjMxOXVOWURvN3RQUkZVMEU4NXp2a29kVnZtTjdlNCtLdEpVKzN3N3pKK0dLelZiR0dSWXRWcVcvVEZnWXFCZFAzSUM5VWFGWVhRVkZ1WlAxSVVvMGNJWE5OOWlZNVFEbXlsSGgrT213M0JIaTJYQVN6T3g4ZjR1MTdqRkhrRmJGOVIrZ0lWdDVGdzhaKzR3cGcxRzZ2eUV2QkJPYlpFVWJoZVRZUVNqTngycXE0WVpuZVVWZGVKZnl1bjFHc3JRMUNGbXNxRlVVV1pucWZVYXdCVUxrZTRNSlM0TGJmbGpaeWNPQnk4N0wwS2pjeHFxd2J6dmIzbUs2YXpGZE5aaXVtc3hYVFdGUzE5Q1czbkcxMDVmMlAveEFBbUVBRUFBUU1EQkFNQUF3RUFBQUFBQUFBQkVRQWhNUkJCWVNCUmNZRXd3ZkJ3a2FIUi85b0FDQUVCQUFFL0VQNU52Y1U0WmtpNStBdEtRMEhyQlo3cWVlSnZtaml0QU5lZ3I5TjlVekdNQWpzc2FTR2t4QjZOZnB2cXYwMzFYNmI2cjlOOVYrbStxUE1VSnIvU2l4OCtub2c0b3FtQlBia3NER05zYktTRS9FUzB4VEhBMkZrU3VnRUlRU1dYaGNBc0ZXVmZUUjJDdDFGaEs3RlRKdEFwZUhTREN6SjNmdWhNRVRBdkhRME9MbTlsbzFnREprZWhnd1lORCt4RStXRGxBNzBicDU3b2NJa201a3B0M2Z0ckNNSUlSQkVRYVAwS1V3WFdXdWtPSWt2RDRIRmR3ZFBnbEwxakF1SlYrWStDWUxCVS9pd09BVjJ4WmdNaERBTVlQajFCdElnWWx2QktXL3lORkpCRzJwc20xREE5Z29xd2gyR09BWVQwa0paR25pa0p3MUIySndaQnZSaWJlaEFnN2lKMWx0aWtraUw4Z2prYU1CRlEvd0JuZndjKzdyZFBhWXNKSi92WFBObGdkOEJoYTdSOXNSSjNWSkhLeEd1ZVpGYjFkREVac0syckx6MFpDaW8ya203OGVoQ1Q0RVN0Kyt2S3FKTjd2K2s2QkxKVGRPSFdmaDl2eDNzYlJXZTQ5YU5PRVFoK2R1c2FOUzBFSS9RT1JveUlTbDNuMmhYZDR1b0dIeXFBUUd1VEphRkd6YTdZWkxhWTBtV2Z0ZHcwbDExekJiV1RKdjFEc3NuQ2twSkVkU0lDSmFXUzQ0ZkhReXIrR1RFbnRNOTllTTVkRERjZ0gxUXhFUzVLQ2IydUp6dUZNcVNEUzhTbkNMd2lsbFRBYkNyc283UE5oeVF2eHRGQktCUWhuc0xlRzNKQzlaejhJVjNkQkxLZTdZQ0NwckxSYXZGbTkza1RLVWdYTWtKbFYzVlorQis2c1RGWURZRmJXRGRGQWJBcE1HNG1RYktCRVJCSzRGbnVpRWllU21BRmRLOEo0UUhRelpzek5WeXkvQmNzYjZFbW1DUEo4Sk1pK1o2R2JOblBNMCt4Y3oyRkRVS0JkZ0FBNEtrYUNmT3dDOGFBU3RYcVk2U3Q0Yk1Zb3hBU0IrSjlnd1RGNWlJV21BdE1TVkRZb0tKM0N1ZG1KM1pvRWVKZ2J5WWV6NHYvQVA4QS93RC9BUDhBL3dEL0FQZ2dSTDZ4UWVpb2IwUlYvQmI4anNvQTNiRW1Nall3SlVxQ1ZqK1R2Ly9aIn0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTA0LTE2In1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wNC0xNiJ9LHsiYWFndWlkIjoiNzk5MTc5OGEtYTdmMy00ODdmLTk4YzAtM2ZhZjdhNDU4YTA0IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI3OTkxNzk4YS1hN2YzLTQ4N2YtOThjMC0zZmFmN2E0NThhMDQiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiSElEIENyZXNjZW5kbyBLZXkgVjMifSwiZGVzY3JpcHRpb24iOiJISUQgQ3Jlc2NlbmRvIEtleSBWMyIsImFsdGVybmF0aXZlRGVzY3JpcHRpb25zIjp7ImVuLVVTIjoiSElEIENyZXNjZW5kbyBLZXkgVjMifSwiYXV0aGVudGljYXRvclZlcnNpb24iOjI2MjE0NCwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9LHsibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDK2pDQ0FxR2dBd0lCQWdJVWRoRWc1WS9YMktaNXZvd1QrdmYxbFpkSmdiY3dDZ1lJS29aSXpqMEVBd0l3YXpFTE1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBb01Da2hKUkNCSGJHOWlZV3d4SWpBZ0JnTlZCQXNNR1VGMWRHaGxiblJwWTJGMGIzSWdRWFIwWlhOMFlYUnBiMjR4SXpBaEJnTlZCQU1NR2taSlJFOGdRWFIwWlhOMFlYUnBiMjRnVW05dmRDQkRRU0F5TUI0WERUSTBNVEF6TURFNE1UVTBOMW9YRFRRNU1UQXpNREU0TVRVME4xb3daakVMTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFvTUNraEpSQ0JIYkc5aVlXd3hJakFnQmdOVkJBc01HVUYxZEdobGJuUnBZMkYwYjNJZ1FYUjBaWE4wWVhScGIyNHhIakFjQmdOVkJBTU1GVVpKUkU4Z1FYUjBaWE4wWVhScGIyNGdRMEVnT0RCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQk92RjJlSWptZy92ZGcyU003aFZaekxqT01JZVZvbVlWZHJSYVZvZ3B1VExDN0tPd0h1dUJtWDRtUzdqK1A2WWVQV29VN3N5SVdSVThGd0FhQVBOeTZxamdnRW1NSUlCSWpBT0JnTlZIUThCQWY4RUJBTUNBWVl3RWdZRFZSMFRBUUgvQkFnd0JnRUIvd0lCQURBZkJnTlZIU01FR0RBV2dCUzc2RHBsOTN2QjJoNUZETHZ5TU12VUJ5ajNpekFkQmdOVkhRNEVGZ1FVZnVURGh1a0FVN0pwbnB3NHFjWmN2T1hNTVNvd1JBWURWUjBmQkQwd096QTVvRGVnTllZemFIUjBjRG92TDJOeWJDNW9lV1J5WVc1MGFXUXVZMjl0TDBaSlJFOUJkSFJsYzNSaGRHbHZibEp2YjNSRFFUSXVZM0pzTUhZR0NDc0dBUVVGQndFQkJHb3dhREEvQmdnckJnRUZCUWN3QW9ZemFIUjBjRG92TDJOeWJDNW9lV1J5WVc1MGFXUXVZMjl0TDBaSlJFOUJkSFJsYzNSaGRHbHZibEp2YjNSRFFUSXVjRGRqTUNVR0NDc0dBUVVGQnpBQmhobG9kSFJ3T2k4dmIyTnpjQzVvZVdSeVlXNTBhV1F1WTI5dE1Bb0dDQ3FHU000OUJBTUNBMGNBTUVRQ0lGM05ZODk4LzZ6YU9BcFpvdGt4OE04TDkvOWI5ODFhNmlZbXdpdHF6Z0dFQWlCTXZqVDV6amFNK1VlZnBQckcvZmx4VXhqV3lMVmhSZGFXb1l4VXJ1cmlSZz09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQVZNQUFBQ3NDQVlBQUFERytFOE1BQUFBSUdOSVVrMEFBSG9sQUFDQWd3QUErZjhBQUlEcEFBQjFNQUFBNm1BQUFEcVlBQUFYYjVKZnhVWUFBQUFKY0VoWmN3QUFEMkFBQUE5Z0FYcDRSWTBBQUF5Z1NVUkJWSGhlN1oxL2JKVGxIY0J2amhqTmNDNE8rZFhlWFZ0VVRNemlQN29ZWFpZNTFJa0tkMWZObkZIajVvaEJtQTdqMk1Sc1pvbG14aGhOSm9ydDI0S2dzaUZzaW03VEFkTVlSRlFFRlRjVnh3L3J3QUVGUkNoUSt1dWVQYy8xcVFQM1ROcyszM3ZldSt2bmszelM0MmdmbnZlOXQ1OCs3NzNYSXdFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBVUVwa0c2L1hQcG5JUlI4Z0loNXQ0MXI5Y1lhdEJmd1A5UTNuNngyMFRadFAxRGNwUk1UUE5kZVUxNHV1VnQyTXEyMUZCa3h0TWptckxwVnEwUjgzMTFaWDMycnZMbU1LUDIzMGpxbVAzRHNORWZIenpFVzdFeGZPR1dtTDhvV2trOGtmMXFYU1BYWFZxYVhKVWFQT3FLbXFPck11bWZwcmJUTFZuVXFsTHJlZlZrWk1tUDExL1pPbHc3bHpFQkVIb2ptcnpVWlRiVjMrTDNWangwNHdJUjA5ZXZUSjQxS3BLZG9iakNOSGpodzFkdXpZNUxoMGpkS3IxTFB0cDVjQkpxU3NSaEZSMHQ2Z3pyU1ZjWEdNRHFtcVNTWXordll3RTg2YXF0UzF0ZFhwNjgzdHVqRmpValZqazVQMUtyVzk5OVBMZ1Z6VTVkd1ppSWcrbXFCZU9xZk9sdVlvMHVuMGNUcW1YZmFQdzh3SzFkNU82RlA4dDJyVDZWdjB6Uytic1BiZVcrcmtvbytjT3dFUlVjSmNkTURXNWlpcXE2dVBINWVxNlZ0MUZsYW1PcUk3NjFJMTIwOUoxL1JGOWt2bEVkUDZobTg3Tng0UlVkSnN3ejIyT3A5aVlxcFhvNTMyajJabG1qL3BwSk8rcWo5MnA4ZU1PZDNlZjB4NXhEVFh0TSs1NFlpSWt1YWlEbHVkSStrOWhVOG5qdE8zQ3pFMWQ0NFlNV0tNdm4zUTNCNCtldmpKK25iZktyV0U0WFdraUJqS3k1dlBzdVg1bExwVWFtWnRNcjNmM0s2dFRyNVR1Rk5UbDB3K1dwTkszYXovcnFPMk9qM04zbDJpVEk2bU9qY1lFYkVZNXBxZXRmVTVpcnJxMURPMXlkU0JjVldwRyt4ZGlicXE1QXl6T3RYM0w3UjNsVEQxMFhMbkJpTWlGc05jVStIVTNVVnlWUElNSGRXVnA5WFdxVk5yYXZQNjl2S3FFVlduMnI4dWNlcWovYzROUmtRc2hybW9qRjR2T2hDSUtTS0cxSDBScWdJZ3BvZ1lVbUtLaUNnZ01VVkVGSkNZSWlJS1NFd1JFUVVrcG9pSUFoSlRSRVFCaVNraW9vREVGQkZSUUdLS2lDZ2dNVVZFRkpDWUlpSUtTRXdSRVFVa3BvaUlBaEpUUVM5N1dDVXVlRUFsTHB3ZFZ2TnY1aUwzbkFicjl4NTAvMXZGOWlLdGF6NERNYTdId0R6K3J2bjB4NngrL09LWWR6RTAyM0dSUG43TU1YU3AzaWVURzkzYlhHa1NVemx2bnZ1eWlvdmpycHpubk5PZzFBZi91czI3N01oaDJmbkpvZDV2UU5lOCtxUCtKbzZMYWRFcTk1ejY0ZGV1WFdCSHFRdzZ1M3RVVzN1bjJyeGpuMXE5WWFkYXNucXp1cW41WlhYeU5RdFU0dUtIVkNKVGdZRWxwbkthYjZhNHFKU1lmclRuUU5uRzlJYUhYM0xQcVIrZXFDTXpWTml6LzdCYThkWldkZVY5ejZ2RUJMMktyWlN3RWxNNWlhay94SFJvMGRuVm81NWQ5NkVhZitNaXY2ZEpTa0ZpS2ljeDlZZVlEbDNlYnRtanpwdTExTy94ajFOaUtpY3g5WWVZd2h0YmRxbFRwdXFWcXJrbzU5aFhKU3N4bFpPWStrTk13elByc1RYcXpzVnZxTHVXdktFeWR5OVR1WHVXcTE4dWZMMXczNzFMMTZzVjY3Y1ZMaWFGcENlZlY0KysrRStWdUdDMmMzK1ZwTVJVVG1McUR6RU5UMkxDYi9VcXNGRWxNZzMvblpPNUtGUzRUenRKUHg2WHpsRlZVeGFxS1hOV3FvL2JEdHV2TEQ2NzI5clZOMzY2eElUcXFQMVZraEpUT1ltcFA4UTBQSVhYaGpybTVGUkg3WmpKRGVxTzM2KzFYMTE4dW50NjFDMlByTmJINVJHeEwwV0pxWnpFMUI5aUdwNEJ4YlJQSGJaSmR5K3pJNFJoL2d2dkYxYkl6dm1VZ3NSVVRtTHFEekVOejZCaWFzdzBxaC9yMC82UVBQbnFCMzdIUnpFbHBuSVNVMytJYVhnR0hWTmpObEovLzNDUEhTa01UNy9XVXBwQkphWnlFbE4vaUdsNHZHS3FIZitUeFhha2NQenhGYjFDTGJYblVJbXBuTVRVSDJJYUh0K1ltcWk5dDIydkhTMGNQMXZ3cW5zK2NVbE01U1NtL2hEVDhIakhOQmVwODI1LzJvNFdqbncrcjhaUFgreWVVeHdTVXptSnFUL0VORHplTWRWKzVhcEg3R2hoMlhld1EyVCtJaEpUT1ltcFA4UTBQQ0l4bW1STzlUK3hJNGJsbVRVdGhkV3hjMTRoSmFaeUVsTi9pR2w0UkdLYWpkUXQ4MTZ4STRabitGV0N4LzlnSmFaeUVsTi9pR2w0cEU2VHo1eXh4STRZbnZjLzJ0djc2NitPZVFXVG1NcEpUUDBocHVHUml1bm82eCszSThiRGlPc2VkYzRybU1SVVRtTHFEekVOajFSTWgxM1JiRWVNQjNQTXh2cmNLVEdWazVqNlEwekRJeFZUY3hHcXE3dmJqaHFlcnU0ZXVXMFpqTVJVVG1McUR6RU5qMWlBOUhHemRsT3JIVFVlYnAwZjR3djVpYW1jeE5RZllob2VzWmhtR3RYQ2xSdnRxUEd3YmJjK2Z1SjZoMzVpS2ljeDlZZVloa2NzcGpwaXR6MjJ4bzRhRCswZFhTb3hNYWEzNlNPbWNoSlRmNGhwZUNSakd1ZHJUZnVJN2FvK01aVXp6cGgrNTFkL1V1Zk9lbHJFYi83OEtiVWhoamV1TUJEVDhJakZOS2JmMGY4c3R6Mit4ajIvWWt0TTVZd3pwcFVDTVEyUFdFeTE1OXkyMUk0YUg2dmUzZTZjVzlFbHBuSVNVMytJYVhncUxhWmI0N29JUlV6bEpLYitFTlB3VkZwTXQrODkyUHUvcWpybVYxU0pxWnpFMUI5aUdwNUtpK211ZmUwcWxuZmhKNlp5RWxOL2lHbDRLaTJtaGZjNHZjempHQnFzeEZST1l1b1BNUTFQeFozbWY4eHB2aXpFdEN3aHB1R3B0Smp1Mkh1SW1JcENUTXNTWWhxZVNvdnBCenYzbTdBNTUxZFVpYW1jY2NiVXZNSEU2MEt1MmJoVEhXanZzaU9IaFppR3A5Sml1bVQxWnVmY2lpNHhsVFBPbUI1cmZoS2JKOTBsdlBnaDlmckdlTjc5aDVpR1J5eW1KZkliVVBYM0xIZlByOWdTVXpuampDbS9tMjhscGdOR0xLWWw4cnY1c1p6aUc0bXBuTVRVSDJJYUhzbVlUby81dXNIK1E1MjlaMWV1K1JWYllpb25NZldIbUlaSExLYVpSclhvcFUxMjFIaFkzN0tibGFrNHhIVHdFdE5CUVV3YjFZcjEyK3lvOFhEMnpLWHV1WVdRbU1wSlRQMGhwdUVSaStua0J0WDZ5U0U3YW5qYTJ2VXAvaVV4dlRHMGtaaktTVXo5SWFiaGtYek9ORTZlV0xYSlBhOVFFbE01aWFrL3hEUThVakU5OFpyNWRzVHc5UFRrNDNuYnZTTWxwbklTVTMrSWFYaWtZbnJxOUNmc2lPSDV5N3AvbVpnNTV4Vk1ZaW9uTWZXSG1JWkhKS1k2WkpmYytad2RNU3lITzd2MU1SUGpjNlY5RWxNNWlhay94RFE4SWpITk5Lb2xxN2ZZRWNNeXJYR1ZlMDZoSmFaeUVsTi9pR2w0UkdJYTA4V25UZHYzeGZjaS9jOUtUT1VrcHY0UTAvQkl4SFQ4dEVWMnRIQzBkK2pUZTMyc3V1WVRpOFJVVG1McUR6RU5qM2RNOVNuKzNPYzMyTkhDWUs3ZW56WHpTZmQ4NHBLWXlrbE0vU0dtNGZHTjZmQWZ6TE1qaFdQR3ZKZWRjNGxWWWlvbk1mV0htSWJISzZhVEc5VGN2NFZkbGQ2K2NJMEpsM3MrY1VwTTVTU20vaERUOEF3NnB0bEluWC9Ibiswb1liaXBlVlU4L3lWSmZ5U21jaEpUZjRocGVBWVYwMHlET3ZmMlord0l4YWU3SjY5K05QdkYwbHlSOWtsTTVTU20vaERUOFBRN3BpWmsrclRlSEd2M1ByWGVmblh4T2RqZXFjWk5YZVNlVXlsSlRPVWtwdjRRMC9Ba3ZuVi83N3N0ZmRhSkQ2bGhWelNyRTYrZXIwNi9hYkhLM0wxYy9TSHdDL09YdmJtMU1BL1hQaXM1aWFtY3hOUWZZZ3FHZzRjNzFWWDNQMTlZQ2J2MlYwbEtUT1VrcHY0UTA2Rk5SMWUzZW5qWnV5cngzUWVjKzZta0phWnlFbE4vaU9uUXBMMnpTeld0Mk5CN1NsL0tGNWsrVDJJcUp6SDFoNWdPSGZMNXZIcTdaWSthTW1lbFNseWdWNkxsR3RFK2lhbWN4TlFmWWxyWmZOeDJXSzE2YjRlNjBielRVN1pSSlNaNVBOYWxKakdWYzlKdmxxbmxiMjR0WElFTTZjcDMvcTJPL2Y1YzU1d0daYVpSUGZqc1A1ei9Wckg5M2NxTitodk00NkxEeERucXBYZTNPOGN1cGl2ZTJxWXV1ZXM1OTV6NjRRbFh6MWU3OTdlcmx0YTJpdkROTGJ2VjJrMnRoWDN6NnlmV3FvbDNQcWRPTUQvd0w5YW44ZnFIdFdzZmxMM0VGTEVFTktlNDV1VklabFZlN3BydE1GZmh5K2xLdklURUZCRlJRR0tLaUNnZ01VVkVGSkNZSWlJS1NFd1JFUVVrcG9pSUFoSlRSRVFCaVNraW9vREVGQkZSUUdLS2lDZ2dNVVZFRkpDWUlpSUtTRXdSRVFVa3BvaUlBaEpUUkVRQkt6YW11YWpWdWNHSWlNWHhvSzFQaFpGdGFISnNMQ0ppY2N4RnUyeDlLb3dybXNjN054Z1JzUmhtb2wvWStsUWc1amtNMTBZaklrcWFpL0syT2hWS3J1a0Y1NFlqSWtxYWkzYlk2bFF3dWFqYnVmR0lpQkxtdE9mY2Q3d3RUZ1dUaTZZN2R3QWlvb1M1YUptdHpSQ2dQbnJOdVJNUUVYM01ScTIyTWtPSWJPTkc1ODVBUkJ5TXVhWUtmU2xVZjhoRmkvUU95T3VWcW52bklDSitrZWJLZlgzVFdsdVZJVXcyT2sydlVsdUpLaUlPMkZ5ME41RnR1czdXQkFxWXFOWkg2L1RIZlRxc25ZbjZacjJ6RUJHUDBLeENzMUdiYnNTV1JLWmhncTBIQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUJwa1VqOEI0QW9tK01iVCszSkFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiI3OTkxNzk4YWE3ZjM0ODdmOThjMDNmYWY3YTQ1OGEwNCIsIm9wdGlvbnMiOnsicmsiOnRydWUsImNsaWVudFBpbiI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6dHJ1ZSwiYWx3YXlzVXYiOmZhbHNlfSwibWF4TXNnU2l6ZSI6NTEwLCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjEsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6OTQsInRyYW5zcG9ydHMiOlsibmZjIiwidXNiIl0sImZvcmNlUElOQ2hhbmdlIjpmYWxzZSwibWluUElOTGVuZ3RoIjo0LCJmaXJtd2FyZVZlcnNpb24iOjI2MjE0NCwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjMwfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDEtMTMiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MjYyMTQ0LCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IkhJRCBDcmVzY2VuZG8gS2V5IFYzIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNTAxMTMwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wMS0xMyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyNjIxNDR9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDEtMjMifSx7ImFhZ3VpZCI6IjgzM2I3MjFhLWZmNWYtNGQwMC1iYjJlLWJkZGEzZWMwMWUyOSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiODMzYjcyMWEtZmY1Zi00ZDAwLWJiMmUtYmRkYTNlYzAxZTI5IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkZlaXRpYW4gZVBhc3MgRklETzIgQXV0aGVudGljYXRvciJ9LCJkZXNjcmlwdGlvbiI6IkZlaXRpYW4gZVBhc3MgRklETzIgQXV0aGVudGljYXRvciIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlCMkRDQ0FYNmdBd0lCQWdJUUdCVXJRYmREcm0yMEZabkRzWDJDQlRBS0JnZ3Foa2pPUFFRREFqQkxNUXN3Q1FZRFZRUUdFd0pWVXpFZE1Cc0dBMVVFQ2d3VVJtVnBkR2xoYmlCVVpXTm9ibTlzYjJkcFpYTXhIVEFiQmdOVkJBTU1GRVpsYVhScFlXNGdSa2xFVHlCU2IyOTBJRU5CTUNBWERURTRNRFF3TVRBd01EQXdNRm9ZRHpJd05EZ3dNek14TWpNMU9UVTVXakJMTVFzd0NRWURWUVFHRXdKVlV6RWRNQnNHQTFVRUNnd1VSbVZwZEdsaGJpQlVaV05vYm05c2IyZHBaWE14SFRBYkJnTlZCQU1NRkVabGFYUnBZVzRnUmtsRVR5QlNiMjkwSUVOQk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRXNGWUVFaGlKdXFxbk1nUWpTaWl2QmpWN0RHQ1RmNFhCQkgvQjd1dlpzS3hYU2hGMEw4dURJU1dVdmNFeGl4UnM2Z0Izb2xkU3Jqb3g2TDhUOTROT3pxTkNNRUF3SFFZRFZSME9CQllFRkV1OWh5WVJyUnlKendSWXZuRFNDSXhyRmlPM01BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0RnWURWUjBQQVFIL0JBUURBZ0VHTUFvR0NDcUdTTTQ5QkFNQ0EwZ0FNRVVDSURIU2IybWJOREFVTlh2cFBVMG9XS2VOeWUwZlEybDlEMDFBUjIrc0xaZGhBaUVBbzN3ejY4NElGTVZzQ0NSbXVKcXhINkZRUkVTTnFlenVvMUUrS2tHeFd1TT0iLCJNSUlCMkRDQ0FYNmdBd0lCQWdJUUZaOTd3czJKR1BFb2E1TkkrcDh6MWpBS0JnZ3Foa2pPUFFRREFqQkxNUXN3Q1FZRFZRUUdFd0pEVGpFZE1Cc0dBMVVFQ2d3VVJtVnBkR2xoYmlCVVpXTm9ibTlzYjJkcFpYTXhIVEFiQmdOVkJBTU1GRVpsYVhScFlXNGdSa2xFVHlCU2IyOTBJRU5CTUNBWERURTRNRFF3TVRBd01EQXdNRm9ZRHpJd05EZ3dNek14TWpNMU9UVTVXakJMTVFzd0NRWURWUVFHRXdKRFRqRWRNQnNHQTFVRUNnd1VSbVZwZEdsaGJpQlVaV05vYm05c2IyZHBaWE14SFRBYkJnTlZCQU1NRkVabGFYUnBZVzRnUmtsRVR5QlNiMjkwSUVOQk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRW5mQUtianZNWDFFeTFiNmsrV1FRZE5WTXQ5SmdHV3lKM1B2TTRCU0s1WHFUZm8rKzBvQWovNHRud3lJTDBIRkJSOVN0K2t0anFTWERmamlYQXVyczg2TkNNRUF3SFFZRFZSME9CQllFRk5HaG1FMkJmOE81YS9ZSFo3MVFFdjZRUmZGVU1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0RnWURWUjBQQVFIL0JBUURBZ0VHTUFvR0NDcUdTTTQ5QkFNQ0EwZ0FNRVVDSVFDM3NUMWxCakdlRit4S1RwelYxS1lVMmNrYWhUZDRtTEp5ellPaGFIdjRpZ0lnRDJKWWtmeUg1UTRCcG84cnJvTzBJdDdvWWpGMmtneS9lU1ozVTlHbGFxdz0iLCJNSUlCZmpDQ0FTV2dBd0lCQWdJQkFUQUtCZ2dxaGtqT1BRUURBakFYTVJVd0V3WURWUVFEREF4R1ZDQkdTVVJQSURBeU1EQXdJQmNOTVRZd05UQXhNREF3TURBd1doZ1BNakExTURBMU1ERXdNREF3TURCYU1CY3hGVEFUQmdOVkJBTU1ERVpVSUVaSlJFOGdNREl3TURCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQk5CbXJScVZPeHp0VEpWTjE5dnRkcWNMN3RLUWVvbDJubk0yL3lZZ3Zrc1pucjUwU0tiVmdJRWt6SFFWT3U4MExWRUUzbFZoZU8xSGpnZ3hBbFQ2bzRXallEQmVNQjBHQTFVZERnUVdCQlJKRldRdDFidkczak02WGdtVi9JY2pOdE8vQ3pBZkJnTlZIU01FR0RBV2dCUkpGV1F0MWJ2RzNqTTZYZ21WL0ljak50Ty9DekFNQmdOVkhSTUVCVEFEQVFIL01BNEdBMVVkRHdFQi93UUVBd0lCQmpBS0JnZ3Foa2pPUFFRREFnTkhBREJFQWlBd2ZQcWdJV0lVQitRQkJhVkdzZEh5MHM1Uk14bGt6cFNYL3pTeVRabVVwUUlnQjJ3SjZuWlJNOG9YL25BNDNSaDZTSm92TTJYd0NDSC8vK0xpckJBYkIwTT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBRkFBQUFBVUNBTUFBQUF0QmtybEFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFCSFpwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFBRHcvZUhCaFkydGxkQ0JpWldkcGJqMGk3N3UvSWlCcFpEMGlWelZOTUUxd1EyVm9hVWg2Y21WVGVrNVVZM3ByWXpsa0lqOCtJRHg0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJa0ZrYjJKbElGaE5VQ0JEYjNKbElEVXVOaTFqTURFMElEYzVMakUxTmpjNU55d2dNakF4TkM4d09DOHlNQzB3T1RvMU16b3dNaUFnSUNBZ0lDQWdJajRnUEhKa1pqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWo0Z1BISmtaanBFWlhOamNtbHdkR2x2YmlCeVpHWTZZV0p2ZFhROUlpSWdlRzFzYm5NNmVHMXdQU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2SWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhodGJHNXpPbkJvYjNSdmMyaHZjRDBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5d2FHOTBiM05vYjNBdk1TNHdMeUlnZUcxc2JuTTZlRzF3VFUwOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXRiUzhpSUhodGJHNXpPbk4wVW1WbVBTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZjMVI1Y0dVdlVtVnpiM1Z5WTJWU1pXWWpJaUI0YlhBNlEzSmxZWFJ2Y2xSdmIydzlJa0ZrYjJKbElGQm9iM1J2YzJodmNDQkRReUF5TURFMElDaE5ZV05wYm5SdmMyZ3BJaUI0YlhBNlEzSmxZWFJsUkdGMFpUMGlNakF4TmkweE1pMHpNRlF4TkRvek16b3dPQ3N3T0Rvd01DSWdlRzF3T2sxdlpHbG1lVVJoZEdVOUlqSXdNVFl0TVRJdE16QlVNRGM2TXpFNk5Ua3JNRGc2TURBaUlIaHRjRHBOWlhSaFpHRjBZVVJoZEdVOUlqSXdNVFl0TVRJdE16QlVNRGM2TXpFNk5Ua3JNRGc2TURBaUlHUmpPbVp2Y20xaGREMGlhVzFoWjJVdmNHNW5JaUJ3YUc5MGIzTm9iM0E2U0dsemRHOXllVDBpTWpBeE5pMHhNaTB6TUZReE5Ub3pNRG95Tnlzd09Eb3dNQ1lqZURrNzVwYUg1THUySU9hY3F1YWdoK21pbUMweElPVzNzdWFKaytXOGdDWWplRUU3SWlCNGJYQk5UVHBKYm5OMFlXNWpaVWxFUFNKNGJYQXVhV2xrT2pKRk56RkNSa1pEUXpZM1JqRXhSVFk1TnpoRVFUbERRa0kyTkRZelJqa3dJaUI0YlhCTlRUcEViMk4xYldWdWRFbEVQU0o0YlhBdVpHbGtPakpGTnpGQ1JrWkVRelkzUmpFeFJUWTVOemhFUVRsRFFrSTJORFl6Umprd0lqNGdQSGh0Y0UxTk9rUmxjbWwyWldSR2NtOXRJSE4wVW1WbU9tbHVjM1JoYm1ObFNVUTlJbmh0Y0M1cGFXUTZNa1UzTVVKR1JrRkROamRHTVRGRk5qazNPRVJCT1VOQ1FqWTBOak5HT1RBaUlITjBVbVZtT21SdlkzVnRaVzUwU1VROUluaHRjQzVrYVdRNk1rVTNNVUpHUmtKRE5qZEdNVEZGTmprM09FUkJPVU5DUWpZME5qTkdPVEFpTHo0Z1BDOXlaR1k2UkdWelkzSnBjSFJwYjI0K0lEd3ZjbVJtT2xKRVJqNGdQQzk0T25odGNHMWxkR0UrSUR3L2VIQmhZMnRsZENCbGJtUTlJbklpUHo0NzdKWEZBQUFBWUZCTVZFWC8vLzhFVnFJWFphdkcyT29xY0xHMnpPT2t3dDBCU0p0cWxjWFY0dSthdXRsV2hiems3UFVBTVk5SGNyS2p0TmJxOGZlQWw4YUJvc3p6OXZwZGpzR0dxdEYzbjh1VHNOU1pwYzZKc05UNSt2MHhZS251OFBmZjUvTDQ4ZmcvZnJpY3pKZ1lBQUFEQUVsRVFWUjQya1JVQ1piRElBakZYWk9ZMVRhdE5jMzliemtzU1ljM3I0TUU0Zk1CQWFENnpsOHkvOVRPZ2V0OGQ1amZONzhid00vZERDUnBSNTIxelhmb2pISjA1SUl5aEJBVVNWQU9OZEd6Qll0MmY3S0ZyZmtKYUFrSGg5RlpoY0RYSFJrVEtvOU1MaWhHYWF2SW1uVjNxeUVYMEVwcmd6LzREd1VEN2tDSFJuZDhRRk40M0dvNFVWbUREZ3phNHcyN29pemRBMitjSyt1dVVwampvMit4d2MvNDJXNTB4NUxHWWVEQnNSMEhWSXg1eDhpRjYwQ2JsYlRFRWtGcjI3Yk5EQlVWU3ExT0tWUGJFNjJiM0VIOEZxQmc1T09PRXVjMnQ4WkppcU1PdUdwK2NLamc3d1ZHY2VvenFONHB4Z1ZQUWtqRllnYlZKS0RVaERDallyYXdQNXE0RVRnQzlmSU1SSHRpdHBRY0N2Sk9FTGNiTXNRZ25jaVJrbGpweVFqdkc0NGpxQlVFVEZpQmkxUEVJeWVrT3pzVytUeTVjTEhvczVSK2RNUzFMdFNTeGYzZ1FIY3pSMkNJNGdNTnBXNElSQTFRTWE2dEo0K0M2dUh1R0U4bU5ESXlGcWcvT1AvTU1VdWVTNklxOFM5MGRBZUJKU0V5L3FLa0srQk53ejhjWVk0amI1SjZ1NGlXQ0kyQjFaNTZMVzVrRWM0aGtkTXBzdlVDNTU4NVNYMFF1YmNnTnF5ZmdERkVjVHQrNDAvMFM1Tngwd2FDdzNPS2tjT2JBNUluMEFZcDAxcGpqdzJuNjI2VURqdEh3YTI4aUh1VEtxdHJ2K3JlVzQxTlo2aUdscjd1dUxKQ2ZrRnRjdGNHMDRzZ20xZU5TK1phRG5wYVRFckdveVg1SksyaU16OHhzMG5Pd1dHY1BETjQ5cWFDZDRiekpvekRabS9hQksrRW96THcrWGhOQmlZd0hmMHNpT3UxWFBrRy96S3d2cVlLY2ZTd0RFY0gvb1VlMDdlcy9XUThySXlnMkRPWGo4dGprWmR1REIvYjhoekRsbE1NT0NTNUJFbmQ1MzRmOHRpM1VaYzRrTXMzeEx5YWZNU3NKaGRHOFhQcWpOazV0QWdPMjVmZUtDaG5WZERqL0owRk1rT3NVL3hNQnYwd0ZoWWVFR2ZWSDEzZnVEVTB5REZMYTRmYzdSbldIQmZ1VEZWMnRFbU53YWRjN2FjM1VZMmpmQmw3SFQzNmZlMzRpUU81bU5DRkZCVzA3S2pQZ3FoT0xVMDF2WjhQdWVaMkpDbEZaTjhqa1VzNjl1a2E5ZVBwNitFZkw0QUY1K055d1NiaXJIdGNCOE1sL2drd0FFamtLNjRLakhQZUFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xX1BSRSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiODMzYjcyMWFmZjVmNGQwMGJiMmViZGRhM2VjMDFlMjkiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZX0sIm1heE1zZ1NpemUiOjIwNDgsInBpblV2QXV0aFByb3RvY29scyI6WzFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjEwLCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjk2LCJ0cmFuc3BvcnRzIjpbInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDE5LTA1LTI3IiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJGZWl0aWFuIGVQYXNzIEZJRE8yIFVTQiBvbmx5IiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAxOTAzMTEwMDMiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMy42IiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjAuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAxOS0wNS0yNyIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4zLjYifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDE5LTA1LTI3In0seyJhYWd1aWQiOiJjODk2NzRlMy1hNzY1LTRiMDctODg4YS03YzA4NmZiZGYwNGIiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6ImM4OTY3NGUzLWE3NjUtNGIwNy04ODhhLTdjMDg2ZmJkZjA0YiIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJTdGFyU2lnbiBGSURPIENhcmQifSwiZGVzY3JpcHRpb24iOiJTdGFyU2lnbiBGSURPIENhcmQiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsic29mdHdhcmUiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQnRqQ0NBVnVnQXdJQkFnSUJBVEFLQmdncWhrak9QUVFEQWpCS01Rc3dDUVlEVlFRR0V3SkVSVEVoTUI4R0ExVUVDZ3dZUnl0RUlFMXZZbWxzWlNCVFpXTjFjbWwwZVNCSGJXSklNUmd3RmdZRFZRUUREQTlHU1VSUElGSnZiM1FnUTBFZ01ERXdIaGNOTWpBeE1URXlNREF3TURBd1doY05OREF4TVRFeU1EQXdNREF3V2pCS01Rc3dDUVlEVlFRR0V3SkVSVEVoTUI4R0ExVUVDZ3dZUnl0RUlFMXZZbWxzWlNCVFpXTjFjbWwwZVNCSGJXSklNUmd3RmdZRFZRUUREQTlHU1VSUElGSnZiM1FnUTBFZ01ERXdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUXc2Y3krem5NeVE2cHRkNEpqcXZtYTRlOFJlK1pwcGI5MEdxS3ZzUkJuRjhXbU01eVpXSU9LalFnai84KzNqOWF2VytTeUFhLzFNYXl3UUQ2QjBnOWFvekl3TURBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUIwR0ExVWREZ1FXQkJTc2VwV3V1eG1EMG84ajFZMjc4YkxUR0NaTnZqQUtCZ2dxaGtqT1BRUURBZ05KQURCR0FpRUF1MzNTcDBFN0JFZEhvekVHQUNsTnNhMHlQQjZzRURvUTdXNGtpeTBEWjE0Q0lRQ0pMRFRKREFuV3hvMzF6enZyV3VJTnRCcXkwNDQrR2dGUDYrd2xxRzY2Tnc9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFGQUFBQUJRQ0FJQUFBQUJjMlg2QUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUFCM1JKVFVVSDR3SVVEQzBGb09VSElBQUFDY2RKUkVGVWVOcnRtMnRRVk5jZHdQLy9jKzgrV0phQ1BCWTFDZ3NDb3BETWFENzRBTVVraW1PbldtM3lJWjFwcTlpcG83WlduYVpOTTAxc203YlVxS2hrTE5aSGZNeTBINHF0VnUxVU15TTAwYzRvZHN4TXdWQ05HbE9Gd1FCcldKNTdYK2ZmRCtmdWd3VldOc0dtTlBjTUg5Ykx1V2ZQNy8vK240TklSUEJGR2d5K1lNTUN0b0F0WUF2WUFyYUFMV0FMMkFLMmdDMWdDOWdDdG9BdFlBdVlBTWJxQklpSUh0TnhrbGlXUWg5aWZndkcrTFg0RlNJQ1FDQVE2T3pvYUd0NzBOSGUzdGZmandDQUdDRVdIUHdCRE1QSUw4aWZOV3NXaHFjQkFDaXFldnJVS1lZTUJqOFB2aHRlWWZEbklYTUJpSGpTbDVJbVprN3laSG84SG85c2s4V2VFVEVHc0J4YmVJaDQ2OWF0L1RVMTlSZnFlbnA2WU1RdFJBOVYwMVpYVk15ZVBUdEtncXFpdlBTRGwreXkvTmtWaXdDRUtOU1NscGIybFJYTHY3TnUzYVJKaytJMjZaREczN3QyYmZVM3Z2bmNvbWRPL0tHMnQ2ZEhZb3doQ3ZrUkl1Q0lBMFlRc25qTUlxYUpwekdXR25GOVJBcitreUUrOVBrTzdQOXQ2Yno1Mzl1NDhjUGJkMkJrVDJUUm5rQ0VBSnp6ZmZ2MnJWengxYjlmdXVSME9CeDJPeUthVGtpRWlDeTJxb2xpbUJaaDBGa0F4SFlSQU9KeGJ4UzdGVDlCT2JvU0VvRG83WFBubm4zbTJaTW5UK0lJeml4SGlWK01pdFZyL2xaZjczQTRJbDhiR0JqUU5FMlNaVm1TNEZIQlRGRlZYZGVHOTBJS3kxZFZWZmdVY1pGSUtFRFhkY013bkU2bncrRUFJc1lZQU1nUzI3cDV5OVdHcTl2ZjJQNElIeVlpVlZVcnZyWDYwc1dMVHFlVGlBQlIxYlJFbHl0bjJyU1MrZlBuekoyVGxaT1Q1SGFiSGpTeW1va293WlVRT3pyMEJ3YmV1WGd4S1NrSlJ4c1pRaElqUUFRaXY5OS81OWJ0eTVjdlg3bHk1YU83ZHpWTnMwa1NZOHlPZVB6b1VRU28zUDdyYUVPajRPQ2NFOUcyMTdibFptWG5lWE9tWlh2enZEbFRKazMrN29hTkxTMHR1cTdUV0l6dTd1NnNLVlBGNGhNelBGMWRYV095cktacGQyN2QvdHJLVlZtVG44ano1b2lmbktsWng0OGVJeUllTVJNaVh6dDcrb3duTFYzUVRzdjJ6aWdvUEhQNmRKUkV4aGo0azAvR0JEaTB0ME1IRG1aUG1ScENtRHI1aWV0TjF5Tm5odk53WUdCZ1VkbWloNTJkNG9rc3k2ZlBuaWtvTEJTR2pXTlVKUFQwOUJUUExMSkpFaUwyOXZYZCtPQm1ja3JLWjZ3NnhPNDRrVWdoRjk5OWQrM3FOY0pyaUtpZ3NQRE1YODdLd1VRWWp0Si9xajNSMXRvcWFCVlZQWFRrU0VGaG9YZ054N28yRWt1T3ljS2hSVmp3MDhLeXNwOXMyOVkvTUNCazBkemNmTzNhdFpCMFRHQkZVU29ySzIwMm0zajYvQXN2bEM0b0hiOEZjOFhhaXJuejVqRkVrV1YvOXRxMjZEeGNWMWZYM2ROdDJyYWlmbi96WnM3NU9LVVZMcnAxNjlhZS9uNUVsQ1dwcWFtcHVibDVFUEE3ZGZVT3V3TVFGVTFidm5KRlRtNk95R21QWTRRTStUSDFFbUw1QldVTDgvUHpSREN6eTNMZGhRc0FnSUFtVlVORGczQUJTWkkyck4vdy85RUpidDZ5UmRkMVJKUmt1ZUhLRlNGakJnQStuNitscFVYSUppMHRMUzgvNy9HSi83OWsxVVFBTUcvdVBKZkxKWjc4NjhZTllWMHlBSHh3ODJZZ0VFaElTRUFBVDZiSDRYREVGVUlOYnZpNy9JK2NMOHJNdnI1K0lITW1NdXp5ZC9QUlNKWUFFTnh1dHdpcm93emQ2WjZNbE5RSnZ2WU9BbmpZNld0LzhMRm5ZcVlNQUhjL3ZDdENsS0hydVRtNWtpVEZKYzdXbHRheXNqS253NG5Sam9SbUdSaU1GZ2JuakRHYmJLN3ZjaVlzS3k4bkFtUVllb3NIKzRxUXI0dHFJYUFveDMvL3V3V2xjZVFPU1pMUzB6TTZQKzdneERWTnUzZi92Z2w4Ly81OXhoZ0JxSnJtOVhyanRoL090WUFpSXhNNUlJYWRCZnRCTTVJaW9xYXFvOUV1STFCVmxZejRFZ2RqTEhOaTV2dU5qWklzYzRQN09qdk41cUd2cnk4a1M3dmRIbi9VWmFLL1F5SWVqc0RSTVJrWWlxS05VVWpyd0JIUmxBQU5qcktET2xoQ1FBS01lMlBvY3JrSXdDQUNJSEdBSVllL2hBZ0FqUGpUTCtkYzUxdzNEQllPZFFqQlV3RGlGTGtEemcyVVpRS3plK2VhaG94eHpzMG1GMkJvT2pTSUFFRGpCbysvajFRVXhXeTVFWVZNWlFCd3U5MmlqN2JKTnArdkk5NUZFOTJKNVV1WDJ1MTJJR0lqaHk0Q0lNNkJxTDYrWGxDcG12cmM0aVVNTVhiT0Y4SlFORFV0UFMzZVdOM2IyOGNReFZGa1NuS0tDVHhsNmhUaGZreGlyYTF0anp3SGl4b1pHUm5Iamg4YmJmUFEyL05rVWJFZG1LallkKzJ1U2s1SndWR2JhRnpBaG1HMHQ3Y0RZd2pBR0V0TFR6ZUI4L01MRUJHSm1DVGR2M2ZQTUF4Wmx1UENqbU5tNUdrbEFVTmtZOStibU9vMWROM2YxWVdJUU9Td083dzVYck8wbkRHak1OSGxFaWRhN2UzdHZiMjlZOVhLZkk1VkJ5SzJ0TFkrZlBoUXhDWlBwaWMxTlJVSUdBRzRrNUt5dlY1QjJPWDN2eGRzcHNicENLbnE3ZlBuRlVVUi9FWEZ4ZUdZRHdBbEMwczU1NGdvQSt6WXNYTzhWOUhpMEdkL1RZM0Raa01BVmRQbWxjd1hIc1hFNWNPU0pVdkZBU0tUcFBlYm1pNWR2RFRlbVUrZityUGYzODBZNDBUY01KNWJ2RGhZRFFBZ1lrbkovR3l2MXpBTUFMRGI3YnVycXNhN1ZkZlUxTmhsbVlpNFlaU1hsM3V6czRWdGh4UGdMeXNyRFNJUk5xODJOUHppOWRlandzQjRDVmVjYVAzNjliZHUzbVNNRVpIa2NMenk2cXZoZTQvUTdOSUZwVVZGUlFiblJKVG9jcjExNkszcXZYcy9YUUw4SEdrQjRPZmJmbnIrcitlY1RpZm5YTlAxUldWbHVkTnloN2xxa1dWNVYxV1ZhR2c0NXpaWjJ2NnJ5bGQrK0tPdXJxN3hZc2FkSFIzcjFuNzc4SUVEdG1ERGw1eWNYTFY3ZDJRbE4raHVhV2JSekQxdlZxdWFLcGpkYm5kdGJXM0puTG1IRHg0TUtNcFliVXNjaHB0Zk9rYTI0L2Y3cTNic1hEQy9wSzZ1TGlFeFVmU1ltcTRmUG5va09TVTUwaVhENTlJVXZMRFp0V1BuM2oxN0VsMHVrYWlJS0JBSUpLZE1lT3FwSjR1TGl6TXlNMU1ucE1vMmFkak81aEhkSVpDaUtEOSsrV1dKTVVRTUtNck9YYnNjVG1mOFhrTkVvR3VheitkNzhPQkJZMVBqOWFicmZiMjlyb1FFOHhBUFVWWFZIVHQzdnZqMUZ6bm5rUnFPdmhBWDJEWDdmdlBHOXUxMm15M1k0bkNSc1hSZDU0YkJpWUJ6Q04xM1VxaFNwS0haUDNROXp3Q0ljeVpKZHJ2ZERKaU1CUUlCMFNmekljSUxYVGpSU0UwU29zU1l4RmlJSjZRekRsRDladlh5RlNzaW53OFBIQnIvdUhwMTA2Wk4vNzc3a1RzeFVmUm9adEViWERXc0VoeG1SMGdZRlV0dzBGOE1ERkhaS0JTTUZObDdpVjJZQ0tMWkpNNTcrbnBuUC8zMDN1cnE2ZE9uRDN0M09UeXdXRUxYOWVvOTFYODhVZHZXMW9ZQWtpU1pmNU1RVml3Tjd2RWo4SWJBNGVnT2IyT2t3RUZtVHdBWXZ0TTJkRjJTNWFsWldSVnIxNjZ1V0JOVGFpTURRL0FDdGZHZmpTZHFhK3ZxTHZoOFBsM1Z6TXZ4Q0NNWlp0OXhwaFFjZW13ZG96R0ltR3l6MlNaUG5yeHMyWmRYUGI4cXY2REFack9GZGo1c1hNRFlSVVdVVlhSMmR2cTcvSUZBQUlDRzM5bG9GZnFvaTRNWVIremhuV0dDMDVtYWxwb1N1bzRiVERrc00xci9NODBDdG9BdFlBdllBcmFBTFdBTDJBSzJnQzFnQzlnQ3RvQXRZQXZZQXJhQUxlRC9xZkVmYm1NY1ZDcDhiRzhBQUFBQVNVVk9SSzVDWUlJPSIsInN1cHBvcnRlZEV4dGVuc2lvbnMiOlt7ImlkIjoiaG1hYy1zZWNyZXQiLCJmYWlsX2lmX3Vua25vd24iOmZhbHNlfV0sImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIl0sImV4dGVuc2lvbnMiOlsiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiYzg5Njc0ZTNhNzY1NGIwNzg4OGE3YzA4NmZiZGYwNGIiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjp0cnVlLCJ1cCI6dHJ1ZX0sImZpcm13YXJlVmVyc2lvbiI6MX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMS0xMi0xMyJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjEtMTItMTMifV19.UYFGiE4cvYW6wLLfORFJ7cMm-1xPJJf18koaq5IbPKA0C_KCAoU_8_RVbiRVMfMCcYJI9hcsQSxyzvsqPo0764hubvnPDGPA_lZRmH3GNdzu7O2ddGpdeAzxXzKEVdTQVTViV47Mc7XgZO6YEoTiU4SBUTdI5jnWA1D98xkmIt8VooNQHmzslzpg4CdL_dImC4unEC0xE-ihAhuD9ehaY_z9sJwQJREdGBfA6JDqvRgekqX_xGs4QKTft14li9d5Ezz7Xj72YMtwbA4W6ilVDpa4Unhtj-UGkVyxadpGmNP5XjEvc_oiOQVlIbhbw9wFj6nTP7N_88sYOPCfVoL2tg \ No newline at end of file +eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsIng1YyI6WyJNSUlIRnpDQ0JmK2dBd0lCQWdJTVY5ZWtlaG9QU0FZa3JhV1NNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1HSXhDekFKQmdOVkJBWVRBa0pGTVJrd0Z3WURWUVFLRXhCSGJHOWlZV3hUYVdkdUlHNTJMWE5oTVRnd05nWURWUVFERXk5SGJHOWlZV3hUYVdkdUlFVjRkR1Z1WkdWa0lGWmhiR2xrWVhScGIyNGdRMEVnTFNCVFNFRXlOVFlnTFNCSE16QWVGdzB5TlRBM01qVXlNRFF3TXpkYUZ3MHlOakE0TWpZeU1EUXdNelphTUlIU01SMHdHd1lEVlFRUERCUlFjbWwyWVhSbElFOXlaMkZ1YVhwaGRHbHZiakVRTUE0R0ExVUVCUk1ITXpRMU5ESTROREVUTUJFR0N5c0dBUVFCZ2pjOEFnRURFd0pWVXpFYk1Ca0dDeXNHQVFRQmdqYzhBZ0VDRXdwRFlXeHBabTl5Ym1saE1Rc3dDUVlEVlFRR0V3SlZVekVQTUEwR0ExVUVDQk1HVDNKbFoyOXVNUkl3RUFZRFZRUUhFd2xDWldGMlpYSjBiMjR4SERBYUJnTlZCQW9URTBaSlJFOGdRVXhNU1VGT1EwVXNJRWxPUXk0eEhUQWJCZ05WQkFNVEZHMWtjeTVtYVdSdllXeHNhV0Z1WTJVdWIzSm5NSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQTZBc2tvUTBiRnA5M0pRUWRwMWI4bkZDbUI2N2RUTlVwdHdrS3RuSGowWTE4RFdvcEg4Q0tPUk0xTGpBSHlqTVRQb09HWGI1L3J0MXdEZk9LYjBjaHFTRzlsbHJCenAvTjBCdUxMMFpGeVpFQVl0NHRoOFkwT29jM0ZRdFhaOTlUNkhOVytmbVhhTGJZeHhuR25zeEF4alZRbUh3Q1pCbngrV1BLZ2k2QnFhWWNZMDVNOHV6V2tnU3AxbkU0akQrSlE5SE4wSFNGaHpIZTNMVzR2MHRoMkp6MU9RbU1od2lhMFNEL1Y2WVhJcWtYa3FtbUZlbmhDZlNHKy9MaUxnV3htZUl3QXBKNW9lMTBEdm1pSlllYWFGa2diRWMvYjcvNlBNYWE0WC8wYVpaMUo3QzBFSHZuNWxVSGI4aGZCYnpHaHNCS09wUVcxdU9oaUsreUk5b0tRUUlEQVFBQm80SURXakNDQTFZd0RnWURWUjBQQVFIL0JBUURBZ1dnTUF3R0ExVWRFd0VCL3dRQ01BQXdnWllHQ0NzR0FRVUZCd0VCQklHSk1JR0dNRWNHQ0NzR0FRVUZCekFDaGp0b2RIUndPaTh2YzJWamRYSmxMbWRzYjJKaGJITnBaMjR1WTI5dEwyTmhZMlZ5ZEM5bmMyVjRkR1Z1WkhaaGJITm9ZVEpuTTNJekxtTnlkREE3QmdnckJnRUZCUWN3QVlZdmFIUjBjRG92TDI5amMzQXlMbWRzYjJKaGJITnBaMjR1WTI5dEwyZHpaWGgwWlc1a2RtRnNjMmhoTW1jemNqTXdWUVlEVlIwZ0JFNHdUREJCQmdrckJnRUVBYUF5QVFFd05EQXlCZ2dyQmdFRkJRY0NBUlltYUhSMGNITTZMeTkzZDNjdVoyeHZZbUZzYzJsbmJpNWpiMjB2Y21Wd2IzTnBkRzl5ZVM4d0J3WUZaNEVNQVFFd1JRWURWUjBmQkQ0d1BEQTZvRGlnTm9ZMGFIUjBjRG92TDJOeWJDNW5iRzlpWVd4emFXZHVMbU52YlM5bmN5OW5jMlY0ZEdWdVpIWmhiSE5vWVRKbk0zSXpMbU55YkRBZkJnTlZIUkVFR0RBV2doUnRaSE11Wm1sa2IyRnNiR2xoYm1ObExtOXlaekFkQmdOVkhTVUVGakFVQmdnckJnRUZCUWNEQVFZSUt3WUJCUVVIQXdJd0h3WURWUjBqQkJnd0ZvQVUzYlBuYmFndTZNVk9iczkwNW5VOGxCWE82QjB3SFFZRFZSME9CQllFRk1hTjRYMWI5QUh1V0RQSksxQVlkZzJNUUdoeE1JSUJmUVlLS3dZQkJBSFdlUUlFQWdTQ0FXMEVnZ0ZwQVdjQWR3Q3NxekJ3Yk92c2hESDBFOUwwa1Y4UkhrSWtRN0h5cG94UFBDczdweDRDd3dBQUFaaERVUXMxQUFBRUF3QklNRVlDSVFDN1lFc2lqTmJzSldpbHh6K2p1dStWa2VZWmtYczlCQ0pkZjVNZ2RuOWJnZ0loQU5USVdGV1p2MFVIbENJcFljK1hzLzlFV3d0R2U2UUFlY1UyaVR5R3Uwc2NBSFVBeXpqM0ZZbDhoS0ZFWDF2QjNmdkpidkthV2MxSENta0ZoYkRMRk1NVVdPY0FBQUdZUTFFS2JnQUFCQU1BUmpCRUFpQkM4TkhlZVFOY082QlVheVBjWVRGT1RkTmFxcjNONHZiYktIdTdrUEd4L0FJZ0x4RGl0Q1ZscjRVaWRYOHRnNmVkRVRyNWdLTEFnaW1IUXpWS09PdzhTZnNBZFFEQ01YNVhSUm1qUmU1L09ONnlrRUhyeDhJaFdpSy9mOVcxclhhYTJRNVN6UUFBQVpoRFVRcndBQUFFQXdCR01FUUNJRE9Jd3JhNG1NRCswR3Z0V0U4U1hHZDlHclRTb3JidUVLVkdreHIrUE5Tb0FpQmdOOWVCMTJqWGhWclhJNEROeHdDQVpJWThMLzc5VUNmQmFHcmRJdkpzNXpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQXB1NVdHQTRBSWNzSlpFZkE2OTg1bW9SNHg5V1ZSNTNraGl3OENVOExWNS9qd2h0bXhkTW5xRnRGMWw4eXZBR1RXTGpOZGgzWWt2emFCTTVQRzFXQ0xDTUFGMFRHdlFvNDhiNDNaYnBYcmt2VFREYzJZRXRBbVVFdnZhU3lCL1B3eUVBdnBTb25ha2t0ZzBtVUtYb3pPUGxXaHNqNnBOTHBOeVJaZFZHRUljeHpsbzVwSlg2QzV1UEpZM1FtQVhkUkZBRWU4YzN1YTZlNEpTU3NTTVNwZjUzQUROcDJMenZMc3FURTBudXdEWlc0ZXA0N1A4MXFncTlPN3gxMXV1MnNCYU80Z1I3QnZ1bXBTSmY0VmlMNTl1dWhvc2ExVkxpOVgrZU9qZEF1dkYySXVCVlN5SlBBNUk0TWNlY2dCOEZWMkJnRzFIbkFzeDc4bWluenlvQm55QT09IiwiTUlJRVlUQ0NBMG1nQXdJQkFnSU9TS1FDM1NlU0RhSUlOSjNSbVhzd0RRWUpLb1pJaHZjTkFRRUxCUUF3VERFZ01CNEdBMVVFQ3hNWFIyeHZZbUZzVTJsbmJpQlNiMjkwSUVOQklDMGdVak14RXpBUkJnTlZCQW9UQ2tkc2IySmhiRk5wWjI0eEV6QVJCZ05WQkFNVENrZHNiMkpoYkZOcFoyNHdIaGNOTVRZd09USXhNREF3TURBd1doY05Nall3T1RJeE1EQXdNREF3V2pCaU1Rc3dDUVlEVlFRR0V3SkNSVEVaTUJjR0ExVUVDaE1RUjJ4dlltRnNVMmxuYmlCdWRpMXpZVEU0TURZR0ExVUVBeE12UjJ4dlltRnNVMmxuYmlCRmVIUmxibVJsWkNCV1lXeHBaR0YwYVc5dUlFTkJJQzBnVTBoQk1qVTJJQzBnUnpNd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUUNyYXdOblZOWGNFZnZGb2hQQmpCa24zQkIwNG1HRFBmcU8yNCtsRCtTcHZrWS9BcjVFcEFrY0pqT2ZSMGlCRlloV044MEh6cFhZeTJ0SUE3bWJYcEt1MkpwbVlkVTF4Y29RcFFLMHVqRS93ZSt2RUR5anlqbXRmNzZMTHFiT2Z1cTN4WmJTcVVxQVkrTU92QTY3bm5wZGF3dmtIZ0pCRlZQbnh1aTQ1WEg0QndUd2J0RHVjeCtNbzdFSzRtUzBUaStQMU56QVJ4Rk5DVUZNOFd4YzMyd3hYS2ZmNldVNFRicVV4L1VKbTQ4NXR0a0ZxdTBPeDR3VFVVYm4wdXV6Szd5VjNZOTg2RXRHemhLQnJhTUgzNk1la1NZbEU0NzNHcUhldFJpOXFiTkc1cE0rK1NhK1dqUjlFMWUwWXdzMTZDR3FzbVZLd0FxZzR1YzQzZUJURlVoVkFnTUJBQUdqZ2dFcE1JSUJKVEFPQmdOVkhROEJBZjhFQkFNQ0FRWXdFZ1lEVlIwVEFRSC9CQWd3QmdFQi93SUJBREFkQmdOVkhRNEVGZ1FVM2JQbmJhZ3U2TVZPYnM5MDVuVThsQlhPNkIwd0h3WURWUjBqQkJnd0ZvQVVqL0JMZjZndVJTU3VUVkQ2WTVxTDN1TGRHN3d3UGdZSUt3WUJCUVVIQVFFRU1qQXdNQzRHQ0NzR0FRVUZCekFCaGlKb2RIUndPaTh2YjJOemNESXVaMnh2WW1Gc2MybG5iaTVqYjIwdmNtOXZkSEl6TURZR0ExVWRId1F2TUMwd0s2QXBvQ2VHSldoMGRIQTZMeTlqY213dVoyeHZZbUZzYzJsbmJpNWpiMjB2Y205dmRDMXlNeTVqY213d1J3WURWUjBnQkVBd1BqQThCZ1JWSFNBQU1EUXdNZ1lJS3dZQkJRVUhBZ0VXSm1oMGRIQnpPaTh2ZDNkM0xtZHNiMkpoYkhOcFoyNHVZMjl0TDNKbGNHOXphWFJ2Y25rdk1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQlZhSnpsMEovaTB6VVYzOGlNWElRK1EveWh0K0paWjVEVzFvdEdMNU9ZVjBMWjZaRTZ4aCtXdXZXSko0aHJEYmhmbzZraFVFYUZ0UlVudXJxenV0dlZ5V2dXOG1zbm9QMGd0TVpPMTFjd1BVTVV1VVY4aUd5SU91SUIwZmxvNkcrWGJWNzRTWnVSNXY1UkFncWdHWHVjWVVQWld2djlBZnpNTVFoUlFrci9NTy9XUjJYU2RpQnJYSG9ETDJ4azREbWpBNEs2aVBJKzErcU1oeXJrVU0vMlpFZEE4bGRxd2w4blFEa0tTN3ZxNnNVWjVMUFZkZnB4SlpadTVKQmo0eTdGTkZUVlcxT01sQ1V2d3Q1SDhhRmdCTUxGaWs5eHFLNkpGSHBZeFltZjR0MnNMTHhOMExsQ3RoSkVhYnZwMTBabE90ZnU4aEw1Z0NYY3hud0d4elNiIl19.eyJsZWdhbEhlYWRlciI6IlJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgQkxPQiBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLyIsIm5vIjoyNTQsIm5leHRVcGRhdGUiOiIyMDI2LTA2LTAxIiwiZW50cmllcyI6W3siYWFndWlkIjoiZmNiMWJjYjQtZjM3MC0wNzhjLTY5OTMtYmMyNGQwYWUzZmJlIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiJmY2IxYmNiNC1mMzcwLTA3OGMtNjk5My1iYzI0ZDBhZTNmYmUiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiTGVkZ2VyIE5hbm8gWCBGSURPMiBBdXRoZW50aWNhdG9yIn0sImRlc2NyaXB0aW9uIjoiTGVkZ2VyIE5hbm8gWCBGSURPMiBBdXRoZW50aWNhdG9yIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEwNjA1LCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NmsxX2VjZHNhX3NoYTI1Nl9yYXciLCJlZDI1NTE5X2VkZHNhX3NoYTUxMl9yYXciLCJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfaW50ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MTAsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6MywiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2ludGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjMsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6WyJhbnkiLCJoYXJkd2FyZSJdLCJ0Y0Rpc3BsYXlDb250ZW50VHlwZSI6InRleHQvcGxhaW4iLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQmdUQ0NBU2NDRkZNMVFDRFhnMTIyRjljdldGVm1xZUdYM3RRV01Bb0dDQ3FHU000OUJBTUNNRU14Q3pBSkJnTlZCQVlUQWtaU01ROHdEUVlEVlFRS0RBWk1aV1JuWlhJeEl6QWhCZ05WQkFNTUdreGxaR2RsY2lCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVOQk1CNFhEVEkwTURVek1ERTBNVGswTUZvWERUTTBNRFV5T0RFME1UazBNRm93UXpFTE1Ba0dBMVVFQmhNQ1JsSXhEekFOQmdOVkJBb01Ca3hsWkdkbGNqRWpNQ0VHQTFVRUF3d2FUR1ZrWjJWeUlFWkpSRThnUVhSMFpYTjBZWFJwYjI0Z1EwRXdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBVEs3blh5SDRwZ04zVE13Q1dTb01EUmU0RVY4SmwzWHp1aGljWi8yZ3ZoK3p6M1dtVzBPWi9FY1JZRUE4RjI2Y2VldU1jZDIxV1FSUktXcGpXRCtKV2lNQW9HQ0NxR1NNNDlCQU1DQTBnQU1FVUNJUUQ4SiswL2I4UGVZakZSUVlrVVJjcWhheDI3b2x3MWpZL3Bic2toQnVScDRBSWdPQUhiNm4rN2ZOZmZ5b3hwZUNxM1ZaN0Ixak4zd3FtUE5mbmFlQWpkb1hzPSIsIk1JSUJnVENDQVNjQ0ZCbG8wczVRWUZkWGJmdXNSZFFlb0xYNlFlbmxNQW9HQ0NxR1NNNDlCQU1DTUVNeEN6QUpCZ05WQkFZVEFrWlNNUTh3RFFZRFZRUUtEQVpNWldSblpYSXhJekFoQmdOVkJBTU1Ha3hsWkdkbGNpQkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFTkJNQjRYRFRJek1ESXlNekV3TXpNd09Gb1hEVE16TURJeU1ERXdNek13T0Zvd1F6RUxNQWtHQTFVRUJoTUNSbEl4RHpBTkJnTlZCQW9NQmt4bFpHZGxjakVqTUNFR0ExVUVBd3dhVEdWa1oyVnlJRVpKUkU4Z1FYUjBaWE4wWVhScGIyNGdRMEV3V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVRLN25YeUg0cGdOM1RNd0NXU29NRFJlNEVWOEpsM1h6dWhpY1ovMmd2aCt6ejNXbVcwT1ovRWNSWUVBOEYyNmNlZXVNY2QyMVdRUlJLV3BqV0QrSldpTUFvR0NDcUdTTTQ5QkFNQ0EwZ0FNRVVDSVFDd2NzSHVMOFpGTDNGTnlVL0RPUW4zYm14MDhsbm4wTzVSa3RMYk9ub1BIUUlnT0VpNkltQVoxODFxOFJKaUwwaGJ3N1pxdXVuaVJxNmZqV2pHb0J1MU1vbz0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBU1lBQUFFQUNBWUFBQUFlTWR2eEFBQUFBWE5TUjBJQXJzNGM2UUFBQUlSbFdFbG1UVTBBS2dBQUFBZ0FCUUVTQUFNQUFBQUJBQUVBQUFFYUFBVUFBQUFCQUFBQVNnRWJBQVVBQUFBQkFBQUFVZ0VvQUFNQUFBQUJBQUlBQUlkcEFBUUFBQUFCQUFBQVdnQUFBQUFBQUFFc0FBQUFBUUFBQVN3QUFBQUJBQU9nQVFBREFBQUFBUUFCQUFDZ0FnQUVBQUFBQVFBQUFTYWdBd0FFQUFBQUFRQUFBUUFBQUFBQWU2U0Nrd0FBQUFsd1NGbHpBQUF1SXdBQUxpTUJlS1UvZGdBQUFWbHBWRmgwV0UxTU9tTnZiUzVoWkc5aVpTNTRiWEFBQUFBQUFEeDRPbmh0Y0cxbGRHRWdlRzFzYm5NNmVEMGlZV1J2WW1VNmJuTTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlsaE5VQ0JEYjNKbElEWXVNQzR3SWo0S0lDQWdQSEprWmpwU1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJajRLSUNBZ0lDQWdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlLSUNBZ0lDQWdJQ0FnSUNBZ2VHMXNibk02ZEdsbVpqMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzkwYVdabUx6RXVNQzhpUGdvZ0lDQWdJQ0FnSUNBOGRHbG1aanBQY21sbGJuUmhkR2x2Ymo0eFBDOTBhV1ptT2s5eWFXVnVkR0YwYVc5dVBnb2dJQ0FnSUNBOEwzSmtaanBFWlhOamNtbHdkR2x2Ymo0S0lDQWdQQzl5WkdZNlVrUkdQZ284TDNnNmVHMXdiV1YwWVQ0S0dWN2hCd0FBRDY1SlJFRlVlQUh0M0x1T0pHY1ZCL0JkOW1JSE5oTGlJaE9RT0VhQ0NEa2lJQ05HNGczOENqd0pDUWxDQkFTSUJONkNoQWdKSkVSaUpBdlpBb3l4ZkZudmhlL3M5SkZxZTN0bXVrOS9wNmQ2NTFmU04xVmRWZWRVemE5cS9sMjk5c3lkTzNmdXZEL0dzekdlYk9heGJLelg0TkhtK3Z4cXpHTjZjREh6ZFNGd2Y3UDg4ekdQZXpuTjNOZnJ2YS9qMmp6ZFhLOVB2eklXVEFRSUVGaVZnR0JhMWVWd01nUUloSUJnY2g4UUlMQTZBY0cwdWt2aWhBZ1FFRXp1QVFJRVZpY2dtRlozU1p3UUFRS0N5VDFBZ01EcUJBVFQ2aTZKRXlKQVFEQzVCd2dRV0oyQVlGcmRKWEZDQkFnSUp2Y0FBUUtyRXhCTXE3c2tUb2dBQWNIa0hyZ3RBdkZMb3FZekVSQk1aM0toRnFkNWQ3T2M4OFVtaTVjSWhCV3ZTM0RXdURyL1BNUXg1K2FkNkJpOXcydlRPK2VIZDdnOUZXbVVmMDdqOW56bk4vK2RIdlZHRU1YeDk1aStQVVpjdkgyZm9QS0NSLzFQeC9qakdHK09FWC9UNmFnVEd2V21xd1hDL3Q0WS94a2pybDE0NS9VWWk2WWhrQ1p2amVWdmpQRjRzMjdNVEUwQ2NRL0dnODdIWTN4L2pOK1BFVk9zM3pjVGN0L1Baand4L1dVYytMMDRBOVBKQmZJSDhPUUhYdmtCOHdiLzV6alBHS2JUQ2p3ODluQXpndW1OelVuRXljUVRrNmxmSUFJcG5uQmptSFlMUkRqRko0QVlzV3pxRjRpL3B2cjVHSmtKNVNQT0NLWU1vNWpuY3ZtRUZCS1lLQ0M4SjJMdTBTby9zc1ZINTZPbWZmOU42YWlES0NaQTRGWUpaRUNWdjJuQlZLWlRTSUJBbDRCZzZwTFZsd0NCc29CZ0t0TXBKRUNnUzBBd2RjbnFTNEJBV1VBd2xla1VFaURRSlNDWXVtVDFKVUNnTENDWXluUUtDUkRvRWhCTVhiTDZFaUJRRmhCTVpUcUZCQWgwQ1FpbUxsbDlDUkFvQ3dpbU1wMUNBZ1M2QkFSVGw2eStCQWlVQlFSVG1VNGhBUUpkQW9LcFMxWmZBZ1RLQW9LcFRLZVFBSUV1QWNIVUphc3ZBUUpsQWNGVXBsTklnRUNYZ0dEcWt0V1hBSUd5Z0dBcTB5a2tRS0JMUURCMXllcExnRUJaUURDVjZSUVNJTkFsSUppNlpQVWxRS0FzSUpqS2RBb0pFT2dTRUV4ZHN2b1NJRkFXRUV4bE9vVUVDSFFKQ0tZdVdYMEpFQ2dMQ0tZeW5VSUNCTG9FQkZPWHJMNEVDSlFGQkZPWlRpRUJBbDBDZ3FsTFZsOENCTW9DZ3FsTXA1QUFnUzRCd2RRbHF5OEJBbVVCd1ZTbVUwaUFRSmVBWU9xUzFaY0FnYktBWUNyVEtTUkFvRXRBTUhYSjZrdUFRRmxBTUpYcEZCSWcwQ1VnbUxwazlTVkFvQ3dnbU1wMENna1E2QklRVEYyeStoSWdVQllRVEdVNmhRUUlkQWtJcGk1WmZRa1FLQXNJcGpLZFFnSUV1Z1FFVTVlc3ZnUUlsQVVFVTVsT0lRRUNYUUtDcVV0V1h3SUV5Z0tDcVV5bmtBQ0JMZ0hCMUNXckx3RUNaUUhCVktaVFNJQkFsOEQ5MGZqTFRmTkhZMzV2akdlYjEzZDNMQy9YeFc0UEYvdkVhOVBwQk9KYVBCZ2pyOWNoUjg3cm1OZitrRnI3RXJoT0lPN0p2TGZ5L3N4N0xtcVh5OHZYc2UvelRJb3YzNHd0WTNyOVluYncxL2poTUoxV0lDOXN2Sm1ZQ0t4RklPN0xtQ0pYanNtRnIwYURYNDhSNFJRMytiNGY3VElGNCtBZmpCRlRycnQ0NVd1WFFJYlN0OFlCZmp6RzQ4V0JjbHVzeXB0a2VWMXllMXozLzQ3eGh6R2VqbUVpTUVNZzc2Vi9qMmEvM1RTTSt5L3Z4ZXVPRWZ0R0JuMXgzWTc3YnQvM3dQdjJzOS9sQXZGeE82WWZqUkVYc2pvK0hMWHhVVHdtMSsvQ3dkZmpCYWJjUy9IT0dRbDFUTE5JeWZqaE1KMVdJSitVNHJOOFhMOTlyMkZjcjNqUy9XZ00xMjBnbUtZSzVEMlZiNkNWNXM4aW1QSWR0OUlnYXZKRXF2WHFqaE9JRzJEZlVGcnV0Ky9IOXVQT1R2VnRGY2lQZGFYdlA0T3BWS3hvVlFMTDBMbnF4SEsvbkYrMXIyMEVxZ0pIUGJCNDE2eXlxeU5Bb0UxQU1MWFJha3lBUUZWQU1GWGwxQkVnMENZZ21OcG9OU1pBb0NvZ21LcHk2Z2dRYUJNUVRHMjBHaE1nVUJVUVRGVTVkUVFJdEFrSXBqWmFqUWtRcUFvSXBxcWNPZ0lFMmdRRVV4dXR4Z1FJVkFVRVUxVk9IUUVDYlFLQ3FZMVdZd0lFcWdLQ3FTcW5qZ0NCTmdIQjFFYXJNUUVDVlFIQlZKVlRSNEJBbTRCZ2FxUFZtQUNCcW9CZ3FzcXBJMENnVFVBd3RkRnFUSUJBVlVBd1ZlWFVFU0RRSmlDWTJtZzFKa0NnS2lDWXFuTHFDQkJvRXhCTWJiUWFFeUJRRlJCTVZUbDFCQWkwQ1FpbU5scU5DUkNvQ2dpbXFwdzZBZ1RhQkFSVEc2M0dCQWhVQlFSVFZVNGRBUUp0QW9LcGpWWmpBZ1NxQW9LcEtxZU9BSUUyQWNIVVJxc3hBUUpWQWNGVWxWTkhnRUNiZ0dCcW85V1lBSUdxZ0dDcXlxa2pRS0JOUURDMTBXcE1nRUJWUURCVjVkUVJJTkFtSUpqYWFEVW1RS0FxSUppcWN1b0lFR2dURUV4dHRCb1RJRkFWRUV4Vk9YVUVDTFFKQ0tZMldvMEpFS2dLQ0thcW5Eb0NCTm9FQkZNYnJjWUVDRlFGQkZOVlRoMEJBbTBDZ3FtTlZtTUNCS29DZ3FrcXA0NEFnVFlCd2RSR3F6RUJBbFVCd1ZTVlUwZUFRSnVBWUdxajFaZ0FnYXFBWUtyS3FTTkFvRTFBTUxYUmFreUFRRlZBTUZYbDFCRWcwQ1lnbU5wb05TWkFvQ29nbUtweTZnZ1FhQk1RVEcyMEdoTWdVQlVRVEZVNWRRUUl0QWtJcGpaYWpRa1FxQW9JcHFxY09nSUUyZ1FFVXh1dHhnUUlWQVVFVTFWT0hRRUNiUUtDcVkxV1l3SUVxZ0tDcVNxbmpnQ0JOZ0hCMUVhck1RRUNWUUhCVkpWVFI0QkFtNEJnYXFQVm1BQ0Jxb0JncXNxcEkwQ2dUVUF3dGRGcVRJQkFWVUF3VmVYVUVTRFFKaUNZMm1nMUprQ2dLaUNZcW5McUNCQm9FeEJNYmJRYUV5QlFGUkJNVlRsMUJBaTBDUWltTmxxTkNSQ29DZ2ltcXB3NkFnVGFCQVJURzYzR0JBaFVCUVJUVlU0ZEFRSnRBb0twalZaakFnU3FBb0twS3FlT0FJRTJBY0hVUnFzeEFRSlZBY0ZVbFZOSGdFQ2JnR0JxbzlXWUFJR3FnR0NxeXFralFLQk5RREMxMFdwTWdFQlZRREJWNWRRUklOQW1JSmphYURVbVFLQXFJSmlxY3VvSUVHZ1RFRXh0dEJvVElGQVZFRXhWT1hVRUNMUUpDS1kyV28wSkVLZ0tDS2FxbkRvQ0JOb0U3cmQxMXZnY0JPTDZQeG5qM2hqUHp1R0VEenpIcDJQL0dLWXpFeEJNWjNiQkpweHVCbEFFMG1lYmZxL3lEKy9kOFQzbTl6eUJUNHRUQ0FpbVV5aXY2eGp4Z3hyVG0yUDhaSXd2eDRpUDlLL1NEMjk4TDYrTjhhY3gvajZHY0JvSUpnS2RBdkd4SzZZZmpoRS9nUEhrRTA4OHNienZPSFQvZmZ1dWJiK2ZEWk9ZSGx6TWZEMFhBVTlNNTNLbDVwNW5QalZsUU9YckNKYVlkcjJPYmNzbmoxek9mWjhYN3ZpeTdKazljcmZjRnErWGZYSy8zTDdjbHJVNVgrNlR5NC9IeG5oaStpSjNNajh2QWNGMFh0ZHI5dG5HRC96eWgzNjVITWRhdnM3bG5HOXZqOWU3cHF2MlgyNWIxdWI2bkMrM2JTOHY5OG5sL0svTitYcTd4dXVWQ3dpbWxWK2c1dE43Vlg5d1g5WHZxL2wyV0UvN2ZHZFp6eGs1RXdMSENlVEh1ZU82cUw1UkFjRjBvL3dPM2lEZ2Fha0I5ZFF0QmRPcHhSMnZXOEFUVTdmd0Nmb0xwaE1nTzhSSkJUd3huWlM3NTJDQ3FjZFZWd0lFamhBUVRFZmdLVjJsZ0k5eXE3d3NoNTJVWURyTXk5N3JGL0JSYnYzWDZOb3pqUCtQNmRnTDZSM3FXdWJXSGZpL3lCc2VURjQwdVlsWFIrV0tKNmFidUdROXg4d2Z4cHpuVVM3N1FkM2VML2VQK1hMYmNqbTM1YnJMNXRrcnR4LzZlbGtYeTh2WDJTdm55KzI1WDg1ekgvTXpFNGduSmhmeHpDN2E1blR6bDNsem50L0Y5anZWOXV2TDlzdjFNVi9XTEpjdjI1Yjc1RHg3VlY4djY1YkwyWGM1WDI3UDVZZWJIZnp5N2xMcXRNdEg1VXBjeU4rTjhkWVlqOGFJSjZoREdrYXd2VHZHWHplMThVdWhwbDZCdUdaeGpiNDJ4Zy9HaUw4dUVGUCtVRjY4dXQxZjR6Nk1YK0w5OHhqdmpaRm1ZOUhVS0JCdmtuRS92ajNHTHpmSE9TUlBZdC9vOFhuVWZqeEdyS2lPZDZMSm1MYmZ1Uy9XK3RvaElJVDJWMlcxdjlXeGUrWVQ2dmRHbzJxZVBLK0xKNTZQeG9nL0dwWlBUR1B4MmltS1k0b1RpVDh4WVRxdFFQakhENXczZzZ2ZDQ4bkpVL3pWUmpPM1ppN0VVMU0reWVlNmZZNFQrMFltZlJKZllzUVU4MzMvTVh4NU1POUl6L2xPL2lXdWdUZUZrN003NEI0Q3l6Zk51RS8zellqYzkvNitRYlRIdWRpRkFBRUNjd1FFMHh4SFhRZ1FtQ2dnbUNaaWFrV0F3QndCd1RUSFVSY0NCQ1lLQ0thSm1Gb1JJREJIUURETmNkU0ZBSUdKQW9KcElxWldCQWpNRVJCTWN4eDFJVUJnb29CZ21vaXBGUUVDY3dRRTB4eEhYUWdRbUNnZ21DWmlha1dBd0J3QndUVEhVUmNDQkNZS0NLYUptRm9SSURCSFFERE5jZFNGQUlHSkFvSnBJcVpXQkFqTUVSQk1jeHgxSVVCZ29vQmdtb2lwRlFFQ2N3UUUweHhIWFFnUW1DZ2dtQ1ppYWtXQXdCd0J3VFRIVVJjQ0JDWUtDS2FKbUZvUklEQkhRREROY2RTRkFJR0pBb0pwSXFaV0JBak1FUkJNY3h4MUlVQmdvb0JnbW9pcEZRRUNjd1FFMHh4SFhRZ1FtQ2dnbUNaaWFrV0F3QndCd1RUSFVSY0NCQ1lLQ0thSm1Gb1JJREJIUURETmNkU0ZBSUdKQW9KcElxWldCQWpNRVJCTWN4eDFJVUJnb29CZ21vaXBGUUVDY3dRRTB4eEhYUWdRbUNnZ21DWmlha1dBd0J3QndUVEhVUmNDQkNZS0NLYUptRm9SSURCSFFERE5jZFNGQUlHSkFvSnBJcVpXQkFqTUVSQk1jeHgxSVVCZ29vQmdtb2lwRlFFQ2N3UUUweHhIWFFnUW1DZ2dtQ1ppYWtXQXdCd0J3VFRIVVJjQ0JDWUtDS2FKbUZvUklEQkhRREROY2RTRkFJR0pBb0pwSXFaV0JBak1FUkJNY3h4MUlVQmdvb0JnbW9pcEZRRUNjd1FFMHh4SFhRZ1FtQ2h3ZjBLdkRMZDdFM3Bwc2IvQXM3SHIwLzEzdjVWN3hyMTU5MVorNXpmelRVZWVQQjdqNkN5WUVVeWZiQXdlM1l6RnJUNXEvTkJGUUpsZUZnZ2J3ZjJ5UytlYUo1dm1IeDk3a0JuQjlNNDRpWWRqdkRGR25KaDNxSUhRT0VVUVBSamovVEgrTm9ad0dnaGJVNXE4UGRaL1o0d3Z4M0JmYmlGTmZobjNaZVRKLzhiNDdvemVjWU5IMHdpVm1Cdm5ZZkNiY2ExaWlwQXl2U2lRYjdpL0dLdmR6K2RqRUUrNGNiMCt6UXY0NG1VOTdGVmUrTU9xN0YwUmlIZjllUGVQSjlRdktnMXVXVTMrODBMTVo5enJ0NHl2L08zR2ZYclVFK3FNaTVVbmtQUHQ3eWFDSzdmbGNzeGppdlc1N3ZtS0hWOTJiYzkxeXo3TDB0d2U2NWJMK1hxNWJ5eHZuOS8yOW5pZHg0cmw3Zk5lSGlPWHQrZmJQZUoxVE10alg2elp2UzczemYxem5qWG1Md3VrVWN5WHkzbHRvaUtXWThydHkyMFhXMTc4dXR3Lzk4MzVjcy90ZGZrNjUxZnRtOXRpMzV6aS9QTDF2dWVhdFljY00ydHluclU1ei9VeDM3VnV1YjI4UENPWTR1QUp0ZXRFbHR0eU9lZlgxVjYyUGV0enZuM2M1ZnJsOG1YOXNuNTczMXkvcTI2NTc2N2xYSmZ6WFQydTZuL2Qvc3RheTljTFhIWWRsdXYzTVYvdW44czVYNTdGOXJwOG5mT3I5czF0Mi90ZTl6cnJ0dWZiZGJGOTE3cnR1dVYrdS9iZnRXNVhqNFBYNVgvcVA3aFFBUUVDQkxvRUJGT1hyTDRFQ0pRRkJGT1pUaUVCQWwwQ2dxbExWbDhDQk1vQ2dxbE1wNUFBZ1M0QndkUWxxeThCQW1VQndWU21VMGlBUUplQVlPcVMxWmNBZ2JLQVlDclQzVmhoMi8vVWRtUGZrUU1UMkJLSS8vTTcvelJFenJkMjhYSmxBdkhMMW5IZDR0Y0JURmNMcEZIYzIrN3ZxNjNXc0RXdVYvd3RwNmR4ZzcrK09hTlp2NTZ5YVdmV0pQRGFwbS84SXEvcGFvSDh5d3RwZHZYZXRxNUY0UFVJbzM5c3p1YnpNZmZSYmkyWDV2THppTDhRK1BVeFB0enNrazhGbDFmY3ZpMXA4cS94cmNkOS9jRVljYS83R0R3UVZqemxFOU9uL3dlYmEwVjVVNldKcWdBQUFBQkpSVTVFcmtKZ2dnPT0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCJdLCJleHRlbnNpb25zIjpbImhtYWMtc2VjcmV0IiwidHhBdXRoU2ltcGxlIl0sImFhZ3VpZCI6ImZjYjFiY2I0ZjM3MDA3OGM2OTkzYmMyNGQwYWUzZmJlIiwib3B0aW9ucyI6eyJyayI6dHJ1ZSwiY2xpZW50UGluIjp0cnVlLCJ1cCI6dHJ1ZSwidXYiOnRydWV9LCJtYXhNc2dTaXplIjoxMDI0LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxXX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMy0wOS0xOCJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjMtMDktMTgifSx7ImFhZ3VpZCI6IjZlOGQxZWFlLThkNDAtNGMyNS1iY2Y4LTQ2MzM5NTlhZmM3MSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiNmU4ZDFlYWUtOGQ0MC00YzI1LWJjZjgtNDYzMzk1OWFmYzcxIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlZlcmlkaXVtIGlPUyBTREsifSwiZGVzY3JpcHRpb24iOiJWZXJpZGl1bSBpT1MgU0RLIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIiwiYmFEZXNjIjp7InNlbGZBdHRlc3RlZEZSUiI6MC4wLCJzZWxmQXR0ZXN0ZWRGQVIiOjJFLTA2LCJpQVBBUlRocmVzaG9sZCI6MC4wLCJtYXhUZW1wbGF0ZXMiOjUsIm1heFJldHJpZXMiOjUsImJsb2NrU2xvd2Rvd24iOjB9fV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwidGVlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbInRlZSJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVsZXNzIiwiYmx1ZXRvb3RoIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDR0RDQ0FiNmdBd0lCQWdJVUx1TEp5bHZKcUs4SkV6emVhV1RZb2NIYWV1TXdDZ1lJS29aSXpqMEVBd0l3ZkRFTE1Ba0dBMVVFQmhNQ1ZWTXhFVEFQQmdOVkJBZ01DRTVsZHlCWmIzSnJNUkV3RHdZRFZRUUhEQWhPWlhjZ1dXOXlhekVWTUJNR0ExVUVDZ3dNVm1WeWFXUnBkVzBnVEZSRU1STXdFUVlEVlFRTERBcFdaWEpwWkdsMWJVbEVNUnN3R1FZRFZRUUREQkpXWlhKcFpHbDFiVWxFSUZKUFQxUWdRMEV3SUJjTk1qRXdPREV5TVRJd05qTTFXaGdQTWpBMU1UQXpNRGd4TWpBMk16VmFNSUdITVFzd0NRWURWUVFHRXdKVlV6RVJNQThHQTFVRUNBd0lUbVYzSUZsdmNtc3hFVEFQQmdOVkJBY01DRTVsZHlCWmIzSnJNUlV3RXdZRFZRUUtEQXhXWlhKcFpHbDFiU0JNVkVReEV6QVJCZ05WQkFzTUNsWmxjbWxrYVhWdFNVUXhKakFrQmdOVkJBTU1IVlpsY21sa2FYVnRTVVFnUVhSMFpYTjBZWFJwYjI0Z1NYTnpkV1Z5TUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFRlY3Q1QxWTUwWVV0RHM1bkNmdnBZMzhMN0lLd0hoaDFFQ0V0ekZHZ0pxTXJXYzlPQ3hFUnVyYmpsdzFlbnljY3I0WURQbkR2K3l2czZjSThZUlozU3FNUU1BNHdEQVlEVlIwVEJBVXdBd0VCL3pBS0JnZ3Foa2pPUFFRREFnTklBREJGQWlFQWlKdjN3SFVxeXVKMGNBdDkyOW1xQWFQekZoamhuYXlzcWpOdHhLcFV6QmNDSUVRWFI3czg2TzZCbkJIMzBJV3VXTHh1dC90c2hpYVQ2RXUwTmtoNkhkNjEiXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZ0NBWUFBQUVFZlVwaUFBQUFCR2RCVFVFQUFMR1BDL3hoQlFBQUFDQmpTRkpOQUFCNkpnQUFnSVFBQVBvQUFBQ0E2QUFBZFRBQUFPcGdBQUE2bUFBQUYzQ2N1bEU4QUFBQWVHVllTV1pOVFFBcUFBQUFDQUFGQVJJQUF3QUFBQUVBQVFBQUFSb0FCUUFBQUFFQUFBQktBUnNBQlFBQUFBRUFBQUJTQVNnQUF3QUFBQUVBQWdBQWgya0FCQUFBQUFFQUFBQmFBQUFBQUFBQUFFZ0FBQUFCQUFBQVNBQUFBQUVBQXFBQ0FBUUFBQUFCQUFBQUlLQURBQVFBQUFBQkFBQUFJQUFBQUFBUWRJZENBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBQ1ptbFVXSFJZVFV3NlkyOXRMbUZrYjJKbExuaHRjQUFBQUFBQVBIZzZlRzF3YldWMFlTQjRiV3h1Y3pwNFBTSmhaRzlpWlRwdWN6cHRaWFJoTHlJZ2VEcDRiWEIwYXowaVdFMVFJRU52Y21VZ05pNHdMakFpUGdvZ0lDQThjbVJtT2xKRVJpQjRiV3h1Y3pweVpHWTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5MekU1T1Rrdk1ESXZNakl0Y21SbUxYTjViblJoZUMxdWN5TWlQZ29nSUNBZ0lDQThjbVJtT2tSbGMyTnlhWEIwYVc5dUlISmtaanBoWW05MWREMGlJZ29nSUNBZ0lDQWdJQ0FnSUNCNGJXeHVjenAwYVdabVBTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM1JwWm1Zdk1TNHdMeUlLSUNBZ0lDQWdJQ0FnSUNBZ2VHMXNibk02WlhocFpqMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzlsZUdsbUx6RXVNQzhpUGdvZ0lDQWdJQ0FnSUNBOGRHbG1aanBQY21sbGJuUmhkR2x2Ymo0eFBDOTBhV1ptT2s5eWFXVnVkR0YwYVc5dVBnb2dJQ0FnSUNBZ0lDQThkR2xtWmpwU1pYTnZiSFYwYVc5dVZXNXBkRDR5UEM5MGFXWm1PbEpsYzI5c2RYUnBiMjVWYm1sMFBnb2dJQ0FnSUNBZ0lDQThaWGhwWmpwUWFYaGxiRmxFYVcxbGJuTnBiMjQrT1RZOEwyVjRhV1k2VUdsNFpXeFpSR2x0Wlc1emFXOXVQZ29nSUNBZ0lDQWdJQ0E4WlhocFpqcFFhWGhsYkZoRWFXMWxibk5wYjI0K09UWThMMlY0YVdZNlVHbDRaV3hZUkdsdFpXNXphVzl1UGdvZ0lDQWdJQ0FnSUNBOFpYaHBaanBEYjJ4dmNsTndZV05sUGpFOEwyVjRhV1k2UTI5c2IzSlRjR0ZqWlQ0S0lDQWdJQ0FnUEM5eVpHWTZSR1Z6WTNKcGNIUnBiMjQrQ2lBZ0lEd3ZjbVJtT2xKRVJqNEtQQzk0T25odGNHMWxkR0UrQ3JPdGxsRUFBQWJPU1VSQlZGZ0p0UmRyYkpOVjlONzdmVis3N2duYlNGeWM0T2ptZzJpTURqRktvc0FZQkh5QlkyRDhZV0tNemhCK09GOXMrMk14eWpBaUd2OU5Rd3d4TVhFUEVnenZEWXJBRWpRYm9BTXh0TjBZUTUzUXRkMnJhL3M5cnVmYzlpdnQxcTZRd0czUzc5NTdudmVjYzg4NWw1RFpobjE3bTBhWEgra2FJSno4ZVBXc3Z3bVI1YUF2SFBFT0JKdVkxVVpjNzc5QWt6aFV2dDJpeEhkS2Q3WGFyQ0VhcE1zUGQvSnJselJpVEUwUXltaWpmUFhjS0NlY1UwOVRiUnc3aVUvaW9uekhYZzVxZExxY3E2c3JZZ0JhdnFQakNEZU1haE5SSm9US1ZaMWRmTEEzUUxnQjNBMERZRnoxTkcyMElCSnpybDVaTnRqai94S0JsTEYrVCtTaVpBSk5Mck4rMDJwYXNhUDlDeTVaUGdBZGtrZGxTNDh5TnZsZnhBZ0ZDWlU0WVN0UG5PS1ZMUzJLaVJZWUdRZ2pVQXhRbUs0NDNLa1RTV0pYenZrZW9Cci9Dd0FNZ1ZTU2lYdnJlc280NTJUb25HOE1nSmROSUtGVWRaZXBRcnc4MEJQZ2trVHprUW9BbkZIalJWZEQ3UUd4TnYvc3pSMGN2QnN4MTRuZnRNZE1SSm8rWCtad3lrTTUvb2RrVzBHZlVIZzZRc3AxYmF1RSsrWE43ZGVHRk84VVVmVStIVUtFVlhVZWR3b0NoeU10TXpqQ3BvcW5iQm9jQTJ6Qzd5V1V4TzBQQVlkQmE4eVg4L0tZT2pyK09NbFdMcEJmQ0RuaFdLN1ptOXN4OWxRUUVQZURFSVovbkdnUW9HNFI5WlR6K1J6c1R5VkdBbGVELzQ1NXRSS3VhM0hjK0lRU25kbHlKUjRPM2xjNlZUaU1RbVFDM3VTVVR2WC81cytTRmNaQVlrbWN3SnhRa0VmcFBrL0RodlhtbGpzMlljNDFxOHFHem80T3l6SUZUanpSS3hyTHlpYWV4ZzFzem9EUG1raHNNc0h2VFFLSFE2NndQRkpKc25QUDhGRHdFM2ZES3g4bkl0NlZ1WDE3KzdxMHJrc3JNZVp1OE5BZmxKS0cyMklncnBYRFlWVHMvSm1EOFI4RVg4bzNiWkJXWkF3QWt1MjJSNTlqU3RaeEl4d0VyeE1EaU0rejJsWXVRalFUZlhuMlkzdUliaHdYbHhtY2FucU0rUXFQUGJQTTZZeUhaaEtqVmpQK084YTVwbTVLZ3NVV2pERGxKSXNZemRPQmVONHlsMVpjOGRVaENIODlHencrTTV5QmlJbEk1TWE3SzQ1MlljWUF1MFNEYWN4ZnRGbFNjb1l4S1FQeGRHTWJFTkt3WjNuTEJNaVFPTXVxbkNjeFpEbms1UE1RNFR1NWxqS0hxSlJKekZXL2xwYUc4L3RvVlplVEc1b0dnaUVGU2l3MGVINGlpMmdxM3FRVWR1R1FCbGszaFBlenFCYnFHOVVBSWtJTjZyNkJYLzFaUk5mUVJUT0lxV0xGNi9wbWpCaFE0SUloSXBVbDR2T00zWmowYWZNWU9qVDVRaUdPdU1Jc0VzblBMZlNHY0NOeHlGZk9YTmRoWXg0ZUljVlFLYUhqcnZvMVJRUlRXbHNkNGlZTkprbmtDV29GTDhWVWlrUFI4SlR1ZGpkdEtCSjdiUnRuRU9NK0s1a3MraE10Q21VWGpZTEc0OHlXUTJUR24vVFlqUzJJbEhuRXptMXYzbnNGeXlvU1lPck9UQmgxeGEzZzNSRWM3Q042djYxVHk3ODVhQ1dUVTYyUXNSODJBL0dPQ0VqSkpIWWZFVGEyb0xnVzhsQ1FoTlVRK09jbGlMN1J1NllBbmhhRmxybXN4U0RVV2ZIMUlXNVEvUWR3c1lXckVRTTZBaEd5V0VWdVBhY2h4MWxHb3QvOUM0czJZenhJQ2htR3VyblVDTVp5QWljb09jNkZMZTN1enNWVjJwUVdSMDB6d1FQRXpQeVBaYVFjNnNUdm1NR2d4dTNraG01RTgwbnFUSVljbVRVWWRxMDRlb3hMcXY2cUthSTJ3Vy9tM3ZTdmFXSk1YblkzM1k1bHdtRHNFcHh1VVRRRGNyd0ZxVjBNTklJZnRsUFFWNHIwWUJqOCsxWGRaM2pWMGE3OS9ybHpoVlVxZTNxU2N6QVdORWMwZndYdUwxNEN2aDJxMkhVQW1QRjZJeExtY0dMa20vbjZRVnZDSUxkaFI4SHdCTkMvWW1wazZ2ZzRwSGRlVFpTc0FEVHF3VGtqZ1plRnBnUUV3eWdmV2FMWXJSMjdoVkRLVDBQODNCUHRONFdKTThXUzBFNnk1WUpJdXQ4SWVBdmNqVFdMVTJscjBVUENLQXBuckszNjFHa1NHQno5eWR2ZnRwVGxrVko5eWxEalRXNm0wNktwb1Znd2E0N0MxYkFQMHUzcmwrdlhIQ1pveVl1TGhNSXpGUUNETWtVaVdrUVBldDNqa1VuZlNKRWswMXFtRUs1UFRZSWQwZ2RVMUZyaVg0TzZJek9MbFVJdC9zNzEzdG90YUdsczRRVVVXZ3NUVnlnZ0tnRzRBMzdxeEkxUTRFWi9NQWZja2cvOU5nSGhpSXZ0WGFhQkdGQjZjbVJvT3dZNGxWK0RKMVdQdUNIYnRpRVQzbHUzR0Z2VnBDRXpDWXJobEQ1KzNUV3VoaWEwUXRuQ3NLNmg2Y0RGU2JqcEZpbzhLUlIwTEFUaE5pZ3NueUppL0pac1RGMkZUR2JNZFhya3c3OHZqRmwwUXk2RXA0bUtqeW9RbnltZzBJUllhUEVCMWlzeGFhSDdvM1YwVHIvM2N6T3hZYzQzaGN6MlpmTksvUHM4alRWWldTb3JoT0xhaVV4QkF4UVE5MU1DQTVVcThBcWtWS2N5ZXdjS05YVTMxRHhkTXBrM2hEaENLQWJlYlF6V1d4ZlZ0TThlSEhOdHJYa2VtUkxaOGdaWVZCZkNPQmV0a1ZDTTBZTTJiYUlRK2hKTFFZRjNEOGdSbHNLWHdtM0l6SXhxdmkwWGZOWlJBZytrL2ZoSUVsUUphVGN6bDF2RCtCOWNNQTdneXF2dVRRQUFBQUJKUlU1RXJrSmdnZz09IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiRklET18yXzAiXSwiZXh0ZW5zaW9ucyI6W10sImFhZ3VpZCI6IjZlOGQxZWFlOGQ0MDRjMjViY2Y4NDYzMzk1OWFmYzcxIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJ1diI6dHJ1ZX0sIm1heE1zZ1NpemUiOjEyMDAsInBpblV2QXV0aFByb3RvY29scyI6WzFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjE2LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjEyOCwidHJhbnNwb3J0cyI6WyJibGUiLCJ3aXJlbGVzcyJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XSwiZmlybXdhcmVWZXJzaW9uIjoxfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTA3LTE0IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjF9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDctMjgifSx7ImFhZ3VpZCI6ImU4YjdmNGEyLWMzZDUtZTZmNy04OTBhLWIxYzJkM2U0ZjU2NyIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiZThiN2Y0YTItYzNkNS1lNmY3LTg5MGEtYjFjMmQzZTRmNTY3IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlNoZXJsb2NrZWQgUGFzc2tleSBQcm92aWRlciAoaU9TKSJ9LCJkZXNjcmlwdGlvbiI6IlNoZXJsb2NrZWQgUGFzc2tleSBQcm92aWRlciAoaU9TKSAtIFN0YXNod29yZCBJbmMuIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX3N1cnJvZ2F0ZSJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJzb2Z0d2FyZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJzb2Z0d2FyZSJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJpbnRlcm5hbCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOltdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFFQUFBQUJBQ0FJQUFBQWxDK2FKQUFBT2JVbEVRVlI0MnUyYWEzQmRWM1hIZjJ2dmMrNVR1cElzVzdMbGwrellzYkdKYldJN3I0WVFRbHhlZ1hwaUF0Tk8yNW0yekVEcGxNNlFLZVZSUWg4d01DMmwwNkVRS0cybmRLYlRoclNFRmtKbzg0TFlJU2FKN2RqRWlXM1ppaCt5WlVuV1cxZjMzblBPM3FzZnpwVmpFMHF1WlFXYUdjNGNmYmhIKyt6elgzdTkvbXZ0TGR1L2svQnF2Z0wwVlkwZnc2djhldFZyNEpVVVFCQUF0UDczQ2drdzk3QXhnb0pYbkFLSVlBV2gvdkQvcndaRUVLZzVhZzRqNUFQeUZpRHlUTWNrbnNDUUQ1QTVGV1BPTkdDRlNrTGlXZEhDbGs1WjN5NkxpaFJERWFnbURGYjB5Q2hQRCtqekkrcVVZb2pxM0N5ZGJQL1A1UEp0Um9TSmlGV3R2T2RLYzEyWDVPeFBIcW53N0RtOTk0anU3dGRDaUpVNVVNWGxtcEFJQ3VXSU8xYkxiNjQzNTZHUDF6Z3pwYU0xdk5LY1lWRlJPZ29JWERWZnJwb3YzejJ1WDludkkwL0dYSzRNbDIxQ1NqWGhnNjh6YjErWmhod09EdXY5dmZxaklSMnRFVHRBclpIbWtGVnQvSEszdVdtSkNMeWxXNVkxbXovOWdaOU95TmpMa2tHMjN4ZlBQZ3NLa3hFZmVKM1p2c3A0SlhKODlZQi80QVdmZUhJQmdhbUhVY0FwMVFTbmJPNlVEMTV0dXBvRWVHNVlQL3FZRThGY1JwZzFsK08xa3hIYmxrdUt2aHp6OFozdXZoNmZEeWhsQ0FSVi9Nd3RVQXhweWJCdlFPOTgxUFdNS3JDdVhkNjMwWlFqakZ3T2xWQm1jWXNTTzlwenZIZURUWUYrWnJmYlA2anpjM2lQOCtoTFhrbWZsekpNMVBqa0xqYzRqU3B2VzJrMmQwbzV3c0Rza0poWkcwODU1dTByVFZzT0ViNXh4TzgrbzIwNVl2OHlMeWFlUXNDNWFiNjQxNlVXOXA2MWhzdEkxYlBVZ1BNMGg5eXlYQlJHcXZ6SFlkOGM0bHhEN3lhZVVvYmRwM1h2V1FVMmRNaXFWcWttQ0xQVHdLeTBWazFZM1NhTG1rUmc1eWsvUEUxb0xqYWI4eW5pd2l4dzhYLy91OWVyWW9Xck82V1dZR2ExbE1Ic01sZmk2RzZSRk53ekF4cWs2Q0VOS1lCWC9BeGxTTm1SWEVDSHZDZHJPRFNzaVJJSXE5ckV5aXlOYUpZbWhOYlJwRXZySEVGS2hCTEdhNHpYcURrc0ZBSUtBYUVoOFV6VkdLOHlIWU5paE5Bd1d1R0JZMTZndStVbENueEZOYUFRR0hwSFZVQ1YyOWVZWndiYzhEVFpnR1V0c242K3JHbW5xMWxhcytRQ0FXS25reEZueXh3YjFZTkRlblJVeDZ2a0E3S1dMejd0OS9icm02OHcrWURZSVRLTFJQYjFlSFlNb3BydzJWdnNoZzRCVGsvcXZyTzZyRVZlMHk2aGZSbmhUNHpwWXlmMW9SZDgveFROV2FvSkdUdDdYalJiQVNCeUxDank2WnR0Vi9PUHIxc2xabkJhUnlxVVkxVEpCN1RtNkNoS0tmdmltUEVhLzNYRTMzZkkxeHo1Z01UUFp2a0IyWDVQUE90VVVFMW96ZkdlZFdaTGx6Um5KWFk4ZjA1M252UTlJenBTb1pyZ0ZRVWpaQ3d0V1ZhMHlwWXV1WDZKV1ZDb1QzSjhUTC93bEQ4d29DM1pldlh6TXhGQTYrV2lFU0pISmFFMVN6RkQ3Qml1NEpXc0pUQllVK2NJYWFxT1BaSERlZG9MM05KdGRxd3o3Zmw2YXZ2YnA5ejlSN1NVdzJ0OThrdGdOR3ZmZGRjc1dKQlhZa2VpWkN5RmdOaFJqb2s4dVlDc3hRaFdpQnpsbUdwTTdGQWxOT1FEY2dHMWhHZk82czZUdmkzSGlqWUJybDlpSXNlZWZpMWNPcnUzYTNmY2RhbldQMWtqRzdDd2lVTEFSSTFLVERiQXBLUlNVVVdFeVlqMlBKc1d5cHAyNlNoS1lHUXFZcUtHVjdJQitZRHBpRWVQYXlWbXkyTHh5cFl1R2F2cWdRSHlZVDJsdkZMMVFDMWh4enJ6dHRXeW9DaGVPVEdtOXh6MHUwOXBNWU9ma2JBUzgrNTE1bzcxcGlWWGZ5dHluSm5VUFdmMDRWN3RHZEZDU01hU3NkenpySitzNlowM1dLLzgzbFo3Y3N3ZEhOSkNlQWtSNlJJMFlJVHBpQTljWTM1dGcybkpTV0FJTFF1S2NuTzM2Wi9TUTBOa0xRSlRFWGVzTSsvZGJISVhMSTQxdE9aazNRTFpkb1Zwei9QY29KWWpRa01oNU1CWnFnbGJGNHNSMW5mSVE4ZlUrVXZnbUhidDdYYzFpSDRxNXJvbDhyNnRObVgvMyszeFp5ZFoyaUpHMkxqUVBOTHJxd25lTTcvQXgyNnkxbENPK2FkOS9sdUgvWUVCQnFjMEg5S1NFMnRZTTErdVhTclBEakJRSm1QSmgrenQxeVVsVnJSSktTdkE3bFBhdUNGZGlnOG9mM2lqblpjWDRGUGZjLy8ySTMzMEJjMkhYTlVwR1V2dmlQYWN3eXVidStTV2xVYUVmOTdudjdiUG55dHphRWgvMktlUDlPcnhVZTF1azFKV1duTHkrbTZ6cjE4SHB1cE9mMkJBMzdqQzVBT3VtQ2VQbi9BVE5XeGpzY2cwU0QvTEVWdTY1TXI1SXNLdUUvckVTVjNVUkZQSWszMmFCc3A1ZVVrOU9EY1RTYzVNYUM2Z09VTnJqclljS0k4YzB6KzQzKzA4cmtBcHkxMXZ0SzFaYWdsWnk3a3k5ejdyUmNpSHZHVzFxY1FZbWJ1Q0p1VThiN3JDcE5YdE41L3pHWXYzUkk0YmxrbktMSWJLS2hBSWZlUDE4VHZXbTg0aTB6SGpWY2FyR0tFbFIrTDQxUGZxTW5RVStkMXJiRFZHUFUwaER4L3pRMlVVYmxwaFdyTWtybEVONkUrL1JUVnl1cUNvR3hZS2NHUklEdy81ZktDVldKZVV1RzJOQVFhbWRPOXBuN09hdFhwbzBPODdveUtzNzVTN2Z5WDQzRnZ0eDk1Z2Jsd21sVWlqUkVPak9hdWYzNVdjR2xkVmJsb2hyMXRFT2RLTTFkRnAzWFhjQ3l4c1l1MENxckVhOUdYaG1VWjRXNVN3YXA2a01mSEpQbDlMQ0F5Vm1GdXZrSHdJY08rUC9NZzBhVlZnRFgvOWVOSTdVcmVUTmZQbERTdk1KMjZ4SDczWkdpRjJaQ3psaUg5ODJxWGs1N2ExSnEyaFE4T1RmZldTOUtwT2svaUdNckpwaFBjbmpsWHQ5ZG1lSDlUUWtEanlBZGN1TlFyRDA3cnpCVjhNOFI1Vk1vYVJNaDkrSVBuN3A5eVRwL1RJT1UxSnp1dTd6WjAzMmlqQmVab3lQTlduUjRjVjJMVElkQmFKRXJLVzQ2TTZXbEZnVmJ1a2ZZMjU4QUZGWUhGSmdLbUlzeE1hR3FLRWhVMnlwRVVFOXZmcnlQbVNFcnduWTBrYzkrejNuM3d3K2RDM2t6dS9uZlNOcXlvM2RwdnJsMG01UmlCVVkzNTR5Z1BOV1ZiT2sxU3JFeFg2SndFNm1zaUhlRDhYR2xBbE1MVG1CSmlzNlZSRVlFZzhIVVhTVkhYMG5MNVk2V3FkdlJsb3lWSUl5VmtPOU92bmQ3ckVvM0R6U3BQS2FZV2o1K3FoZmtsSm5DTTFzT0d5QWswWktRUTRSUzYvcUUvUnBGaHJNVW1DS043VGxLa2IxVVMxSG5aK3JHeDN2dDRMYXN2VE02UW54MVJnVWJOa0xjNWhZYXhTbDdxVUUxVkVVYVVTQTRTRzBLRCtKZDJBV2ZlRjlIeEFuZm10RnlScExxYkFBdDVmMEcvVEY0ZGRsRi8xSmUwZy9iOCtmRGxPckRoSE5RYklCNFFXVll3d1VhM1AzWmFmTWRZWnAzZWVyS1ZjUXhXQjRUS3Y3WlJscmFKd2VseXJNVmJ3bnBaY3ZRcWJxR3E2L0VZb1psTHlwMUhTVUx2T05KTEZuR2RrV2xOZGx6SWtqdEF3T0tuVE1XbkVPUDhsSTVScnJKd25mM0ZiY0VPM3BMQitxVnMrZEpOTjJ5cVBIUFZXUUVrY1Y4eEV0dE5qbW9vVUd0b0xxYk14SFRYVTlHMmdnaEJVNlJ0VElCL1NWWkxUNDlxVVpYQ1NrNk82cGtNMmRKbjVSVmVPc0liRTBacm5qMisxN1VXNWExdHdabHdWRnJmVWdUNTR4RDkxVW9zWm5DY2JjTzB5QTB6VjZCM1dURURzYU0yeHFDVEEyVWtxTVUyWmwrZlZEVGl4SnhCNmh1b3p2WGFoSkE0clZHT2VPTzRGV25Kc3U5Sk1WZXV0SWVmWWZhSnU2bDB0Y2g3OUE4LzdMenptY2dFR3BtcHNYaXlyRndpdy80dy9PMEhXVW90Wk9aTXVlNGE4Y3cwMUcxKytvRkVsRzNCc1dJZkwybDZVYTVhWmY5bmpZMGNoNU9Fai9sMGJiVEhESFJ2dHJsN3RuOUJpaHNqeE40KzVSNC82bTFhYVpXMEM5STNwcmhmOHZ0T2FEd2lFMkpFTCtPMXJiVnIrZnZ1Z040SkE0cmx1ZWQwWUQ1elI4NG5sY2sxSUlUU01UTEczVDdldGtlNTJ1V3FSN0RtbHBSd0RFM3g5bi91ZDYyeFRsbys4eVg3a1cwbTVSakZMYURqWXIvdjdYTm9qaWgyQnBTbWNhUUxFZkd5YjdaNG53SzVldi9lVU51ZW94WFFVdVdHRlVUZzFxa2NHTlJjMG1NZ2FpYUZLWUhqb3NFOTllc2RHcTRyM05HZjV4bjcvVEo4Q3F4ZklaMjRMT3B0bHRFenNhTTdRVnFDWW9aaWhyVUJ6QnErTVZ3Z01IOTltYjE1bGdITmx2WHVYeTg0WTFWdGZZMXJ6Q0R6UzQ2Y2FyZ2ZzMm5kOG9oRUJNcGErTVY3YlpSYVdaRkZKVG83cTRRR0tHYnhuOTNHL2VhbHBLMGg3VVc1WmJieHlha3hIcDZuR1JBbTFoR3BFSlNaanVYR2wrYU5iN1lhdXV1L2U5UjEzZW94Q1NDV21xOFNIM2hpRWxva2FYL2krUytOdlkzMmhyMGFORjhUckZzcm50Z2ZBOExSKzhOK1R5U3E1c0I0dVBueHJjUFhTK2tmUFRlbSswOW96cUNQVDZwV1d2S3hzbDQyTEpYVUo0UFM0ZnZaL1hNK1FObWR4U2puaTA3Y0ZXNVlKOEE5UHVIL2Q0MXZ6T045UWcwaTIvMTNVWURLMmh2RUt2LzhHKzg2ckRQQk1uMzc4VzBsZ3lWaXFDYXJzMkdSMmJMS2wzRStiSkhZOGVNaC83VWszVWFVcGc4SkltZmZmYU45OXRRR09ET3FkOXlYQnBXd2IyYlczZmFMeDBSbkwzbE82ZGJtWlY1U0ZKVmsrVHg0N3FzNlREMEhZYzFJZjcvVVRWUW9aS1dZa3NCZnRMSjBlMCsvMTZOMDczZjBIUFZBSWNaNnhhWDdqR3ZQclc2MVhxakYvY3I4YnI5QmcvSm5Sd0ZlaXhnVXdRaTFoZnBQODFlMjJ2U2pBM3BQNkZ3OGxJOU9VY2hpaEVsT055WWNzTE1taUVxVzhHR0dxcGdPVDlJL3JSSldNcFpBQktFY0E3NzNCM3I3SnBOdVlmL1pBOG5pdmxuSTRmd2tha08xZnZnUUJVa01xUjNUUGt6OS9wNTFmRk9Ec2hINTVwM3VpVjQyaEVOYkpkdVNJM2N3T2pSQVlza0c5Wkt2RVZCT3U3SkQzdjk1dVdDenBkczVmUHVnZU91UmI4cGVHZmpZQ3BGUytITEdvUlQ3NlpydTZvKzVvangvejM5enZuK3ZYS0NHMGhPbEd0OVRQcGpoUDdJZ2NWbGplTG05YmI5NnkzbVFEZ1BFS24zc3cyWDFjWjRFZWtPMTMxMmF6eTIzcUxkSGZ1dDYrWThPTHhuNndYNTk4d1QvWHIvMFRXcTVwN09xREN4bFowTVNWbldicmN0bTB0QTRkZVBxRS85TDMzZWt4YmM3TkJ2M3NCVUF4QnVjcFIyeGVKcis2MVc1Y2NsSHNHSy9vV0lWS2hFSXVvSlNuTlMvMmdpRW5SL1RlUGU3aHc5NEl1YURSb1BtVEJQalNyQVM0NEhCV2VsWmcwMUp6NjJ2TXBpWFNWdnhwUUtZam51LzNqeDcyUCtqMVUxV2FjaStwY242V3gyMFVuRklJVWRoendqOTEzQzlvWW5XbnViSkRsc3lUZVFYSlorcGJsMk1WUFRPbXh3YjE4SUNlR1ZmbktXUW96ZFpzTHRiQUYydk14WlZXakxHamx1QThSZ2d0MWlEZ2xOamhQU0prQXpKQmZTTjVqbzZjemRGRUthREFFR1lRcVo4b3F6Y2dERmxiUHhxVnNzQTV2T2I0MUdMOUpKeSsvTU81RStBWEIxOS92dGN2ems3L3ZLLy9CV1dEYlFCZVFxTnBBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiRklET18yXzAiXSwiZXh0ZW5zaW9ucyI6W10sImFhZ3VpZCI6ImU4YjdmNGEyYzNkNWU2Zjc4OTBhYjFjMmQzZTRmNTY3Iiwib3B0aW9ucyI6eyJwbGF0Ijp0cnVlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsInV2IjpmYWxzZX0sIm1heE1zZ1NpemUiOjEyMDAsInBpblV2QXV0aFByb3RvY29scyI6W10sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6MTYsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4LCJ0cmFuc3BvcnRzIjpbImludGVybmFsIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN31dfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTEyLTEwIn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0xMi0xMCJ9LHsiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbImE2YjFhZTA4MjNhN2U2YTdiMGUwYTUzZjJiNmE3ZGI5ODg0OGE2MWYiXSwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiYTZiMWFlMDgyM2E3ZTZhN2IwZTBhNTNmMmI2YTdkYjk4ODQ4YTYxZiJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiWXViaUtleSA1IFNlcmllcyJ9LCJkZXNjcmlwdGlvbiI6Ill1YmlLZXkgNSBTZXJpZXMiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2LCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjJ9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50IiwicmVtb3RlX2hhbmRsZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURTRENDQWpDZ0F3SUJBZ0lVRHFFUncrNFJuR1NnZ3hnVWV3SkZFUERSWjNZd0RRWUpLb1pJaHZjTkFRRUxCUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURJN1huSCtadkR3TUNRVThNOFplVjVxc2N1Ymx2VllhYVJ0M1liYXhuOWdvZEx4NXN3SDBsWHJkZ2poNWg3RnBWZ0NnWVlYN0U0YmwxdmJ6VUxlbXJNV1Q4TjNXTUdVZThRQUpiQmVpb1Y3Vy9FK2hUWlAvMFNLSlZhM2V3S0JvNlVMZU1uZlFaRHJWT1JBazh3VExxMnY1TGxqNXZNajdKdE9vdEthOUo3bkhTOGtMbXpYWFNhajBTd0VQaDVPQVpVVE5WNHpzMWJ2b1RBUVFXckw0L0o5UXVLdDZXQ0ZFNW5VTmlSUWNFYlZGOG1scUsyYngyejZva1ZsdHlEVkxDeFlicFVURUx2WTF1c1IzRFRHUFVvSUNsT200Y3Jwd25EUkxWSHZqWWVQR0JCLy9wRXl6eEEvZ2NTY3hqd2FIMVpVdzliblNiSHl1cktxYlRhMUt2akFnTUJBQUdqWmpCa01CMEdBMVVkRGdRV0JCVHF0MEtRbmd4N1pIcmJWSHdEdW54T245aWhZVEFmQmdOVkhTTUVHREFXZ0JUUzd1OWFJbzA2YlZ3amx6M3loZFVtOFNWN2tqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQTRHQTFVZER3RUIvd1FFQXdJQmhqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFxUWFDV014VEdxVlZYN1NrN2trSm1VdWVUU1lLdVU2K0tCQlNnd0lSbmx3OUs3SGUxSXB4WjBoZHdwUE5pa0tqbWN5RmdGUHpoSW13SEpneHh1VDkwUHczdllPZGNKSk5rdERnMzVQWE9melNuMTVjRkF4MVJPMG1QVG1JYjhkWGlFV09wem9YdmR3WERNNDFaYUNEWU1UN3c0SVF0TXl2RTd4VUJacTJianRBbnEvTkRVQTdiZTRIOEgzaXBDKy8rTktsVXJjVWgrajQ4SzY3V0kwdTFtNkZlUXVlQkE3bjA2ajgyNXJxRHFzYUxzOVRiN0tBSEF3OFBtcldhTlBHMmtqS2VyeFBFZmVjaXZsRmF3cDJSV1p2eHJWdG4zVFYyU0J4eUNKQ2tYc05EMDVkQ0VyVkhTSklzK0JkdFRWTlk5QXd0eVBtbnliMHY0bVNUenZXZHc9PSIsIk1JSURTRENDQWpDZ0F3SUJBZ0lVVWNtTVh6UklGT2dHVEswVGIzZ0V1Wllaa0JJd0RRWUpLb1pJaHZjTkFRRUxCUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JCSURFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURtNTU1YldZOVdXK3RPWTBySVdIbGRoK2FOYW5vQ1pDRmg3R2szWVpyUW1QVXcwaGtTRzZxWUhRdFArZlp5UzMzVkVydmcrQlFxbm11bWdOaGZ4RnJrd0VaRUxlaWRCY0M4QzRBZzRucXFpUFdwenN2STE3TmN4WWxJbkxOTEZjWlkvK2dPaU42Wk9UaWhPNS92QlpNYmo5cmlhQWNxbGlZbU5HSlBnVGNNR2FFQXlNekVNTnkybm02RXArcGpQNWFGNmdpMjF0L1VRRnN1SjFqMlJqL3luTS9TZFJ0K2VjYWw1T1lvdHhIa0ZiTDl2dnYyQTJPdjVJVFpDbHc0Yk9TOW5weXBRaW1PWjVRQVl5dG1ZYVFwV2wvcE1ZejZ6U2o4UnFrVkRORUpHcU5mVEtBMml2TFl3WDZsU3R0TVBhcGcwSjg0bDlYMHZvVk4vRnBTNFZDVkFnTUJBQUdqWmpCa01CMEdBMVVkRGdRV0JCUWdLRkFoRzZSYVcraFR5NTJkeGVUOGJDOTZIekFmQmdOVkhTTUVHREFXZ0JUUzd1OWFJbzA2YlZ3amx6M3loZFVtOFNWN2tqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQTRHQTFVZER3RUIvd1FFQXdJQmhqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFZTXpnTHJKTElyME9vdlFuQVpyUklHdWFiaUhTVUtTbWJMUldwUmtXZUF0c0NoREVIcFhjSi9iZ0ROS1lXb0hxUTh4UlVqQjRDeWVwWWV2YzNZbHJHOG83ekh4cGZWY2FvTDVTZXVKa3pIeEtuNGJUYVNwOStNdndhbW5wNjRrWk1pTmJGTGtuZlA5a1lLb1JIa01XaGVSSjFVc1AxejRTY21rQ2VJTGZzTXM2dnFvdnFqV0NsRnNKcEJjc2x1WUhXRjdiQkoxbjRSd2crQVRFb3BZNElnR3Y2WnZ3YytBOXIrQVQyaHFwb1NrWW9BbCtBTll3Z3NsT2Y5c0plMFYrVEE5WVkvVWxhQm1QUFRkMC8vcjl3dmNlUFdaa1BqS29BQy96VU5oZkRiaDRMVjhHSHMzbHlYMlhvbUwvTE5jOEpZenlJYURFaEdRdmVvUGhoL3RyMWc9PSIsIk1JSURTakNDQWpLZ0F3SUJBZ0lVUjM4bXEyNlNmMnN6VlYyQmRHNldFTjdrdVdVd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVJZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU5ZMFdiOW9Qb1JvS29ReVdQYUpwejExdnJXVGc2elR0bU5qMlZvS1JueXZLR1JxcHpiODN3NWw2WUE5NlVZa1lCRFFQMGlsTzJEUGU2d1dxVlI1ekRmUnpkY0g4YmgrTDdkR0d2YWU2aFJUWmhrRmtDcFhEczRIY2NrbnJEZjhGQ2xKN0hlMzlKZjQyL0cxUW0yeno5V1dtclBYdGdpSy94MDVHanNRZkd1REcxemY1UVRVVWllOGx3eW1LM1RmZE92TmVlSkFBUGUycG43SXRmUmIrclZyTldpRHpsUm4ydk5uWjJ3UG80d0gvV0o2ZGhYWkcrck1XVCthNkJvY2cxVWZJdzZrZHVuRzRiVHBaenN2YWNGWXlSMG1wZitEZU9ucFNXQW15d0pXSHZUbGYyWVh4RnllWGNUQUNkUWxjTU5HSjJWaFpRNDh4dFA1L1JCUC84a0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ2h5NDJva2lxY1RTMWlxYS9IUldqa0JuNEgvTUI4R0ExVWRJd1FZTUJhQUZPcTNRcENlREh0a2V0dFVmQU82ZkU2ZjJLRmhNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUFuK1JISVBidE1FRE5kVDFnOEgvUml0QWtVZExnQXQxdFdHV25sajlrbmJ2NC80R2xYN0M5cDQ1ZWZQTzkvYVpMNk9WMVhSS0JpNkttdEJXNUs3bnVZRW5NeC81QnFCU2JMVDdyaGR1QzQ5VEJlTWI5UEhkWHNUbFNWTlllZnIxZEdpZHI0ajB4VkJRTGIxcmtuREFiZFdEektmdm5heUtPOEZyd2U3SHg4NDNNRy9ySitjMFhydVV2YmZWVENITGlJV2hNN29ORGhMOHhvYjZ4VW85S0xLY1NMK0l0WXNPMy85V2I4UTlHanNxTDRGWHNEY0cxU2FZaDdLcGZ1TW1PaXhxekpaTzJuSWljUFlSZzFJMlN1aVVmWU83MHRtZEhjYmwra1NRbVNZdDdycTR2aUlMZzJHeDNqOXJJVHVXVGpiYVVhU1NReGdPbU1TSHV5ek1BQyIsIk1JSURSekNDQWpHZ0F3SUJBZ0lVZXg5blQ5dndaTlhTNDgzTGRpWUdmdzJTalNvd0N3WUpLb1pJaHZjTkFRRUxNQzR4TERBcUJnTlZCQU1NSTFsMVltbGpieUJCZEhSbGMzUmhkR2x2YmlCSmJuUmxjbTFsWkdsaGRHVWdRaUF4TUNBWERUSTFNRGd3TVRBd01EQXdNRm9ZRHprNU9Ua3hNak14TWpNMU9UVTVXakFuTVNVd0l3WURWUVFEREJ4WmRXSnBZMjhnUmtsRVR5QkJkSFJsYzNSaGRHbHZiaUJDTWlBeE1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBdTFNZXZueTlkeU85WlVDMzlTb01oTGNSL0RYcnRGL2NpTTEydGNpeTJFWEFaNk1rcml2VnRDZkVWTTlYNklTVEVuQlA2dVNZWW92NnBwdjZPNkpoMk5IbVltNHcrSm5TNFZuQ1BVN21IQU1mVkkyTUdUVE1WT2V3MHhVc0c3c0lTSWtJRFVCbXVrOFlLOWM1emljOSt2RlFHTElrc2RYTzVpVkZJZ05HNTNjR1hENFpMWm9BUGl1MFBFb3p4QXFZSWFJNGd4S2hPQTNTOC9XOG1JV3N1Nm9meWo0R3ZrRkc2WjdreUYzMTA3UDdtd0ZITHJJM0VOYVBXTU9GY1RhR2EwZHcrL3ZWUndqUmNFWkJWc3V1VC84N2NrU3MwYTVwa3QzdlpCbGFZZVQ4cHpTcmVWN21vd2NJTTkwTDJpYUFUbFAwbnhtYUU2bk95VGJvakZWbDJ3SURBUUFCbzJZd1pEQWRCZ05WSFE0RUZnUVVTWEVoM3NhM2J0RHVybTRNTS9DN1MxbFJ1dVl3SHdZRFZSMGpCQmd3Rm9BVTZyZENrSjRNZTJSNjIxUjhBN3A4VHAvWW9XRXdFZ1lEVlIwVEFRSC9CQWd3QmdFQi93SUJBREFPQmdOVkhROEJBZjhFQkFNQ0FZWXdDd1lKS29aSWh2Y05BUUVMQTRJQkFRQjVHYzNoYWZ0cDdoS3NFWnNvK2kvWjVuUnVxZG16RzJXQ2xVb1JVcWJhUHlnbG5KRGpLUi9rZmdPbDZpYmJGL3p0aG0zS21YUTdIY0RJUDJ4TWRHN1UyTDJpbWJKUUhxUGYvaDJIcW9qYjRyWmd1ZSs2VzRrdFNSNWVsUjlMMXJZcUUvU0dZTTRpRUtvVlFTdjdSVDFyeEllV2lLc3cvVnh4aS9RT25zeDNGN3g4MENDWWdCNEUzeVF4OFZUVzQ0MGhURXdUQTFlTUhPaXgzMnRQdHl5SElhOFBWVklmVnBIUUpCYU1WdnY1MDhVRWp3a2JVMnJuamZ6b1NUTlM5QTVqVVE4bUJTdmU5NXJqQjBkbzk4RVUrRHhkQnFYMitINmk1d2xJQ0ZnemhkemNzbmU5aEdLVDZselRYNGNJZEpzclkyK3hsZUswRkZReTZsR0VWTEVlIiwiTUlJRFBqQ0NBaWFnQXdJQkFnSVVYemVpRURKRU9UdDE0RjVuMG82WmYvYkJ3aVV3RFFZSktvWklodmNOQVFFTkJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNWjYvVHhNOHJJVCtFYW9Qdkc4MW9udE1Pby8ybVEyUkJ3SkhTMFFaY3hWYU5YdmwxMkxVaEJaNUxtaUJTY0laZDFSbngxb2Q1ODVoKy9kaEs3aEVtN0pBQUxrS0t0czFmTzUzS0dOTFp1ano1aDN3R25jcjRoeUtGMEc3NGIvVTNLOWhFNW1HTkQ2enFZY2hDUkFIZnJZTVlSREY0WUwwWDRENW5HZHh2cHBBeTZua0VtdFdtTW53TzNpMFRBdWNzcmJFNDg1SHZHTTRyMFZwZ1ZkSnB2Z1FqaVRKQ1RJcStEMzVod3RUOFFESXYrbkd2cGN5aTV3Y0lmQ2t6eUNpbUp1a2hZeTZLb3FOTUtRRWRwTmlTT3ZXeURNVE10MWJ3Q3ZFenB3OTF1K21zVXQ0cmowZWZuTzlzMFpPd2R3TVJEbkg0eGdVbDVaTHdyclBrZkMxLzBDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01COEdBMVVkSXdRWU1CYUFGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFNd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkRRVUFBNElCQVFDM0lXL3NnQjlwWjhhcEpOanh1R29YK0ZrSUxrczB3TU5yZFhML2NvVXZzcmh6c3ZsNm1lUE1yYkdKQnlKMVhucXVCNXNnY1JFTkZ4ZFFGbWEzbWlvOFVwZjFvd00xWnJlWHJKMG1BREcyQnBscWJKbnhpeVlhK1IxMXJlSUZUV2VJaE1OY1pLc0RackZBeVB1RmpDV1NRdkptTldlOW1GUllGZ05oWEpLa1hJYjVIMVhnRURsd2llZFlSTTdWb2xCTmxsZDZwUkZLbFg4dXN0Nk9UTU9lQURsMnhORjBtMUxUaFNkZXVYdkR5QzFnOStJTGZ6M1M2T0lZZ2MzaXJvUmNGRDM1NGc3cktmdTY3cUZBdzlnQzR5aTB4QlRQclk5NXJoNC9IcWFVWUNBL0w4bGRSazZIN1hrMzVEK1dWcG1xMlNoL3hUNUhpRnVoZjR3SmIwYksiLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVRuYmJHSVIyTkh2enFJS0ZBZVF3RzFYQmlzMHdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFRWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPc1hqM2swNEJhbjRUWWR0WktxRC9PUEp4eUR5YVBtQ0JVRlVpYVpJZ1R0ZVpuajNYMjVEaGdwWlpYc0M0RDB5ZEljcmxBNndOVUluT1JML0w5ekJiVEVJTUFWTUdvNmc3VUtBbWIyTUY2QUhibmhZSmQ5ZWlrdXBWTldTaEhOWU5jNEdCZE8xWU42QWZVcXZKaEhiZTNWNFNOTVBtQlJFS0pQVno3VGh3Z21nZ1RlOFdzMkswL3dzcXYyd1NFN3BiQ0JzVVpoSVg1MWJaTTNwcUR3SlBUbVJGRXZ0MC82dEc1ZU84RjNqMTRPWHFmRWhtam4xVnZ4S0RZUU9MWkF4Q3d3Z0MwUDRDZGZXdjN5OFBTUjhJMzU0aE8xWStHek5qdklxWDM4TktMeXd1SVlIRmVyT3hObHhFTUJ2RmhZQnVSdVlBa2tnVWFQcU42VUJoc0lMcnNDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNDb1JIaGl5Tm5iblhSV0lMNlpCWG9CWDlZVE1COEdBMVVkSXdRWU1CYUFGQ0FvVUNFYnBGcGI2RlBMblozRjVQeHNMM29mTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFDUUZhZkpJMS81V2c5Q0VFaW1FMVJQNTRSZ1F3VE5UT09Rc0xBQ1RlK3JJdGxGUXpDOVpEaHJWODI4eVg3anp5K0FBc3AzaXpLN1QxdGgyZGw3bSt0dTBzdzJQYS9vbGMwMm50NlB5SXczNDhnYUh6aEkxKzBLRTQ1cXh2RkRlTDJsTXhiUGZDWXZ5RUVhWXpqaVFFTFU1OTUxcFhHV3lLTWEvNGZMdE8rWktPWGhNdVZlcTRyWERQSTU0VzZKSE9pQWFpS2Rpdys1ZTNjMmt0L2pGSVF0TTZ2TVhnOUxORnpkakVUTnQyMFZYOVFldlJwRlpmdWNNRzl3Q2FRRG9GbFB6cFRNSktoUGV2L2ltSm1aWWhLZnIwbExjZW10cWpJeExBb3FaZE9ZZkhCZzYrdkFjZFBJL2lhdUdwVUF2N1grVUtObUR3aloyQmFINHNMd2hCMm0iXSwiaWNvbiI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsImljb25EYXJrIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwicHJvdmlkZXJMb2dvTGlnaHQiOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJwcm92aWRlckxvZ29EYXJrIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09In0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMTItMjIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2LCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ill1YmlLZXkgNSBTZXJpZXMiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlUyRjEwMDAyMDI0MTIyMjAwNSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTEyLTIyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3Nn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wMi0wNiJ9LHsiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjE0MzRkMmYyNzdmZTQ3OWMzNWRkZjZhYTRkMDhhMDdjYmNlOTlkZDciXSwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiMTQzNGQyZjI3N2ZlNDc5YzM1ZGRmNmFhNGQwOGEwN2NiY2U5OWRkNyJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiTkVPV0FWRSBXaW5rZW8gRklETzIifSwiZGVzY3JpcHRpb24iOiJORU9XQVZFIFdpbmtlbyBGSURPMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyLCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRU9EQ0NBOTJnQXdJQkFnSURBSW5CTUFvR0NDcUdTTTQ5QkFNQ01Ic3hDekFKQmdOVkJBWVRBa1pTTVJNd0VRWURWUVFLRXdwRFpYSjBSWFZ5YjNCbE1SY3dGUVlEVlFRTEV3NHdNREF5SURRek5ESXdNakU0TURFa01DSUdBMVVFQXhNYlEyVnlkRVYxY205d1pTQkZiR3hwY0hScFl5QlNiMjkwSUVOQk1SZ3dGZ1lEVlFSaEV3OU9WRkpHVWkwME16UXlNREl4T0RBd0hoY05NVGd3TWpJeU1qTXdNREF3V2hjTk1qZ3dNVEl4TWpNd01EQXdXakIwTVFzd0NRWURWUVFHRXdKR1VqRVRNQkVHQTFVRUNoTUtRMlZ5ZEVWMWNtOXdaVEVYTUJVR0ExVUVDeE1PTURBd01pQTBNelF5TURJeE9EQXhIVEFiQmdOVkJBTVRGRU5sY25SRmRYSnZjR1VnU1dSbFkzbHpJRU5CTVJnd0ZnWURWUVJoRXc5T1ZGSkdVaTAwTXpReU1ESXhPREF3V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVNMVkwrMVNUSnZhRVJPNVdDUitqR2NBeEx2bVBCRGlaWTFOZ0ZGSWhwWDZPQVpBcFFZbXQ2eFNoNzRTd00rbWpnbnNTRWNjNEEyVWYxMzlGZ1o0cnBZbzRJQ1ZUQ0NBbEV3RXdZRFZSMGpCQXd3Q29BSVRaMDF0R3VCUExvd1NnWUlLd1lCQlFVSEFRRUVQakE4TURvR0NDc0dBUVVGQnpBQ2hpNW9kSFJ3T2k4dmQzZDNMbU5sY25SbGRYSnZjR1V1Wm5JdmNtVm1aWEpsYm1ObEwyVmpYM0p2YjNRdVkzSjBNRk1HQTFVZElBUk1NRW93U0FZSktvRjZBV2twQVFFQU1Ec3dPUVlJS3dZQkJRVUhBZ0VXTFdoMGRIQnpPaTh2ZDNkM0xtTmxjblJsZFhKdmNHVXVabkl2WTJoaGFXNWxMV1JsTFdOdmJtWnBZVzVqWlRDQ0FXQUdBMVVkSHdTQ0FWY3dnZ0ZUTUQrZ1BhQTdoamxvZEhSd09pOHZkM2QzTG1ObGNuUmxkWEp2Y0dVdVpuSXZjbVZtWlhKbGJtTmxMMk5sY25SbGRYSnZjR1ZmWldOZmNtOXZkQzVqY213d2dZYWdnWU9nZ1lDR2ZteGtZWEE2THk5c1kzSXhMbU5sY25SbGRYSnZjR1V1Wm5JdlkyNDlRMlZ5ZEVWMWNtOXdaU1V5TUVWc2JHbHdkR2xqSlRJd1VtOXZkQ1V5TUVOQkxHOTFQVEF3TURJbE1qQTBNelF5TURJeE9EQXNiejFEWlhKMFJYVnliM0JsTEdNOVJsSS9ZMlZ5ZEdsbWFXTmhkR1ZTWlhadlkyRjBhVzl1VEdsemREQ0JocUNCZzZDQmdJWitiR1JoY0RvdkwyeGpjakl1WTJWeWRHVjFjbTl3WlM1bWNpOWpiajFEWlhKMFJYVnliM0JsSlRJd1JXeHNhWEIwYVdNbE1qQlNiMjkwSlRJd1EwRXNiM1U5TURBd01pVXlNRFF6TkRJd01qRTRNQ3h2UFVObGNuUkZkWEp2Y0dVc1l6MUdVajlqWlhKMGFXWnBZMkYwWlZKbGRtOWpZWFJwYjI1TWFYTjBNQkVHQTFVZERnUUtCQWhEYVFiaFRGdGpjakFPQmdOVkhROEJBZjhFQkFNQ0FRWXdFZ1lEVlIwVEFRSC9CQWd3QmdFQi93SUJBREFLQmdncWhrak9QUVFEQWdOSkFEQkdBaUVBb0VlcEhNQzVYOWpCS2FHcGhjS2ppZGhpTitabno3djNTM2hjMzEvQXVuc0NJUURLcW9nSzJTWk9YWmN2dkhDQjZVUVNhQTBuTG40UlV3eTFndURpdmJaYndnPT0iLCJNSUlDSFRDQ0FjS2dBd0lCQWdJQ2RkVXdDZ1lJS29aSXpqMEVBd0l3ZXpFTE1Ba0dBMVVFQmhNQ1JsSXhFekFSQmdOVkJBb1RDa05sY25SRmRYSnZjR1V4RnpBVkJnTlZCQXNURGpBd01ESWdORE0wTWpBeU1UZ3dNU1F3SWdZRFZRUURFeHREWlhKMFJYVnliM0JsSUVWc2JHbHdkR2xqSUZKdmIzUWdRMEV4R0RBV0JnTlZCR0VURDA1VVVrWlNMVFF6TkRJd01qRTRNREFlRncweE9EQXhNakl5TXpBd01EQmFGdzB5T0RBeE1qSXlNekF3TURCYU1Ic3hDekFKQmdOVkJBWVRBa1pTTVJNd0VRWURWUVFLRXdwRFpYSjBSWFZ5YjNCbE1SY3dGUVlEVlFRTEV3NHdNREF5SURRek5ESXdNakU0TURFa01DSUdBMVVFQXhNYlEyVnlkRVYxY205d1pTQkZiR3hwY0hScFl5QlNiMjkwSUVOQk1SZ3dGZ1lEVlFSaEV3OU9WRkpHVWkwME16UXlNREl4T0RBd1dUQVRCZ2NxaGtqT1BRSUJCZ2dxaGtqT1BRTUJCd05DQUFUejJqTmFLT0svTUtkVzJmbWUxdHE2R1JFdVB1dUtXOUhnV1lnTVJyanZaVVRPcUxBTkozTWQ1SHF2MUVOMXpNZDRsV3R5ZnpSbGE3cnY1QVJCb09vVG96WXdOREFQQmdOVkhSTUJBZjhFQlRBREFRSC9NQkVHQTFVZERnUUtCQWhOblRXMGE0RTh1akFPQmdOVkhROEJBZjhFQkFNQ0FRWXdDZ1lJS29aSXpqMEVBd0lEU1FBd1JnSWhBTXJoYjhTbWZOTGVMTmdhQVZtUTZBT01pTE5MVkhYMGtGVU84MENuVDM4RUFpRUF6TkFndjRkSCtIRGhaU2daV0ppYVB1L25mWlRldUd5NE15ZFBNcTV1cnM0PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFnQ0FJQUFBRDhHTzJqQUFBQ3FVbEVRVlJJeDJQOC8vOC9BeTBCRXdPTndhZ0ZwRmx3OGNLRmlySXlSM3Q3UzFPejBLRGdCZlBtLy96NWszaXp2bjM5bHArVGEydGx0V1RSSW9Ub2Z4aFl0WEtsbHBxNnNyd0NBaWtvUklWSHZIMzc5ajl4NE5TcFUwQXRRSTFXNWhad1FhZ1B6cDg3VjExWmlYQXZJeGo5WnpoNTRrUk5aUldSUHZqOTZ4Y0RPTTB6TVRLaUI5Rzh1WFAvL2ZzSE5GUkFTTEMrc1hIbTdObHVidTRRbTNidDNMbHU3VnBpTEdDRW1jdUlhY0daVTZmQjRjV1FYMUFRR3gvbjdPSXlhZW9VYlYwZGlJdmFtbHVlUFh0R1VTVC8rZzMySFNPRGhvWUdSSVNGaGFXcHBZV1ZsUlVvK09Iamg2YjZCb29zZ0h2cXo1OC9jRGw5ZmYzTTdDd0llOCtlM2F0WHJxUWdtZUlva0RLenMvWDE5RUd5L3hrNk96b2ZQM3BFV1ViRHNBWVlSQzN0YlJ3Y0hFRDJoL2Z2NjJwcUNSZU9qQ1RtWkUwdHJaeThYQWo3OEtGRHk1WXVKZDUwVkFzWWNlcEtUVTgzTmpXQnFPbnU3SHh3L3dFK08vN2pzZ0MzMTVtWm1SdWJtOW5aMllGcXZueiswbEJmaHpPZy9xTzdsUW0vQitFQW1Id0xpb29nQ280Y09yeGswV0lpUFVFZ2twRkJVbkt5bVprNWhOM1QxWFgzemgxaVlvS0pjRFRCQTRxRnVibXRsWXViQzhqKyt2VnJUVlUxcUhRaHpRZU1CSHlockt4Y1dGd01VWG42MUtuNWMrZFN2OEpKU0V5MHRyR0dzQ2YwOTkrNmRRc3V4Y0xDQ3JIN1A1SXJTWWdEZUtGUzM5VEV4OHNIWkgvLzlyMnVHaEZRTjY1ZmgyVlBOb3FxVENVbHBlS3lVbWd4ZlBwTVNXRVJNQU11WDdhc3Y3Y1hJcWlscllYd0ZyeGVnL3FPdUdaU2RFek0zdDE3RGgwNkNQVDBwazBiTjIzY0NJOUZZS1pKejhoRTk4SGZmMzhoRERZMmRpTDkwZEhkcGF1cml4YXdyQ3lzcmUzdHVucTZpTFRYME5BQVRvSXNUeDQvdG5kd2lJeU9BdFlFeEZqQXpjM3Q0K3NMSkw5OS9Rb3NFMFZGUmUzczdSdGJtb0dWRlVxY2pUWWRoNzhGQUloQkxsTmQ3anUxQUFBQUFFbEZUa1N1UW1DQyJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMS0wOS0yMSJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjEtMDktMjEifSx7ImFhZ3VpZCI6IjllYjdlYWJjLTlkYjUtNDlhMS1iNmMzLTU1NWE4MDIwOTNmNCIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiOWViN2VhYmMtOWRiNS00OWExLWI2YzMtNTU1YTgwMjA5M2Y0IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ill1YmlLZXkgNSBTZXJpZXMgd2l0aCBORkMgOTNmNCJ9LCJkZXNjcmlwdGlvbiI6Ill1YmlLZXkgNSBTZXJpZXMgd2l0aCBORkMgS1ZaUjU3IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NiwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9LHsibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMzg0cjFfZWNkc2Ffc2hhMzg0X3JhdyIsInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3IiwiZWQyNTUxOV9lZGRzYV9zaGE1MTJfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlEUGpDQ0FpYWdBd0lCQWdJVVh6ZWlFREpFT1R0MTRGNW4wbzZaZi9iQndpVXdEUVlKS29aSWh2Y05BUUVOQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU1aNi9UeE04cklUK0Vhb1B2Rzgxb250TU9vLzJtUTJSQndKSFMwUVpjeFZhTlh2bDEyTFVoQlo1TG1pQlNjSVpkMVJueDFvZDU4NWgrL2RoSzdoRW03SkFBTGtLS3RzMWZPNTNLR05MWnVqejVoM3dHbmNyNGh5S0YwRzc0Yi9VM0s5aEU1bUdORDZ6cVljaENSQUhmcllNWVJERjRZTDBYNEQ1bkdkeHZwcEF5Nm5rRW10V21NbndPM2kwVEF1Y3NyYkU0ODVIdkdNNHIwVnBnVmRKcHZnUWppVEpDVElxK0QzNWh3dFQ4UURJdituR3ZwY3lpNXdjSWZDa3p5Q2ltSnVraFl5NktvcU5NS1FFZHBOaVNPdld5RE1UTXQxYndDdkV6cHc5MXUrbXNVdDRyajBlZm5POXMwWk93ZHdNUkRuSDR4Z1VsNVpMd3JyUGtmQzEvMENBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUI4R0ExVWRJd1FZTUJhQUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUU13RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCRFFVQUE0SUJBUUMzSVcvc2dCOXBaOGFwSk5qeHVHb1grRmtJTGtzMHdNTnJkWEwvY29VdnNyaHpzdmw2bWVQTXJiR0pCeUoxWG5xdUI1c2djUkVORnhkUUZtYTNtaW84VXBmMW93TTFacmVYckowbUFERzJCcGxxYkpueGl5WWErUjExcmVJRlRXZUloTU5jWktzRFpyRkF5UHVGakNXU1F2Sm1OV2U5bUZSWUZnTmhYSktrWEliNUgxWGdFRGx3aWVkWVJNN1ZvbEJObGxkNnBSRktsWDh1c3Q2T1RNT2VBRGwyeE5GMG0xTFRoU2RldVh2RHlDMWc5K0lMZnozUzZPSVlnYzNpcm9SY0ZEMzU0ZzdyS2Z1NjdxRkF3OWdDNHlpMHhCVFByWTk1cmg0L0hxYVVZQ0EvTDhsZFJrNkg3WGszNUQrV1ZwbXEyU2gveFQ1SGlGdWhmNHdKYjBiSyIsIk1JSURSekNDQWpHZ0F3SUJBZ0lVZXg5blQ5dndaTlhTNDgzTGRpWUdmdzJTalNvd0N3WUpLb1pJaHZjTkFRRUxNQzR4TERBcUJnTlZCQU1NSTFsMVltbGpieUJCZEhSbGMzUmhkR2x2YmlCSmJuUmxjbTFsWkdsaGRHVWdRaUF4TUNBWERUSTFNRGd3TVRBd01EQXdNRm9ZRHprNU9Ua3hNak14TWpNMU9UVTVXakFuTVNVd0l3WURWUVFEREJ4WmRXSnBZMjhnUmtsRVR5QkJkSFJsYzNSaGRHbHZiaUJDTWlBeE1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBdTFNZXZueTlkeU85WlVDMzlTb01oTGNSL0RYcnRGL2NpTTEydGNpeTJFWEFaNk1rcml2VnRDZkVWTTlYNklTVEVuQlA2dVNZWW92NnBwdjZPNkpoMk5IbVltNHcrSm5TNFZuQ1BVN21IQU1mVkkyTUdUVE1WT2V3MHhVc0c3c0lTSWtJRFVCbXVrOFlLOWM1emljOSt2RlFHTElrc2RYTzVpVkZJZ05HNTNjR1hENFpMWm9BUGl1MFBFb3p4QXFZSWFJNGd4S2hPQTNTOC9XOG1JV3N1Nm9meWo0R3ZrRkc2WjdreUYzMTA3UDdtd0ZITHJJM0VOYVBXTU9GY1RhR2EwZHcrL3ZWUndqUmNFWkJWc3V1VC84N2NrU3MwYTVwa3QzdlpCbGFZZVQ4cHpTcmVWN21vd2NJTTkwTDJpYUFUbFAwbnhtYUU2bk95VGJvakZWbDJ3SURBUUFCbzJZd1pEQWRCZ05WSFE0RUZnUVVTWEVoM3NhM2J0RHVybTRNTS9DN1MxbFJ1dVl3SHdZRFZSMGpCQmd3Rm9BVTZyZENrSjRNZTJSNjIxUjhBN3A4VHAvWW9XRXdFZ1lEVlIwVEFRSC9CQWd3QmdFQi93SUJBREFPQmdOVkhROEJBZjhFQkFNQ0FZWXdDd1lKS29aSWh2Y05BUUVMQTRJQkFRQjVHYzNoYWZ0cDdoS3NFWnNvK2kvWjVuUnVxZG16RzJXQ2xVb1JVcWJhUHlnbG5KRGpLUi9rZmdPbDZpYmJGL3p0aG0zS21YUTdIY0RJUDJ4TWRHN1UyTDJpbWJKUUhxUGYvaDJIcW9qYjRyWmd1ZSs2VzRrdFNSNWVsUjlMMXJZcUUvU0dZTTRpRUtvVlFTdjdSVDFyeEllV2lLc3cvVnh4aS9RT25zeDNGN3g4MENDWWdCNEUzeVF4OFZUVzQ0MGhURXdUQTFlTUhPaXgzMnRQdHl5SElhOFBWVklmVnBIUUpCYU1WdnY1MDhVRWp3a2JVMnJuamZ6b1NUTlM5QTVqVVE4bUJTdmU5NXJqQjBkbzk4RVUrRHhkQnFYMitINmk1d2xJQ0ZnemhkemNzbmU5aEdLVDZselRYNGNJZEpzclkyK3hsZUswRkZReTZsR0VWTEVlIiwiTUlJRFNEQ0NBakNnQXdJQkFnSVVVY21NWHpSSUZPZ0dUSzBUYjNnRXVaWVprQkl3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRRG01NTViV1k5V1crdE9ZMHJJV0hsZGgrYU5hbm9DWkNGaDdHazNZWnJRbVBVdzBoa1NHNnFZSFF0UCtmWnlTMzNWRXJ2ZytCUXFubXVtZ05oZnhGcmt3RVpFTGVpZEJjQzhDNEFnNG5xcWlQV3B6c3ZJMTdOY3hZbEluTE5MRmNaWS8rZ09pTjZaT1RpaE81L3ZCWk1iajlyaWFBY3FsaVltTkdKUGdUY01HYUVBeU16RU1OeTJubTZFcCtwalA1YUY2Z2kyMXQvVVFGc3VKMWoyUmoveW5NL1NkUnQrZWNhbDVPWW90eEhrRmJMOXZ2djJBMk92NUlUWkNsdzRiT1M5bnB5cFFpbU9aNVFBWXl0bVlhUXBXbC9wTVl6NnpTajhScWtWRE5FSkdxTmZUS0EyaXZMWXdYNmxTdHRNUGFwZzBKODRsOVgwdm9WTi9GcFM0VkNWQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJRZ0tGQWhHNlJhVytoVHk1MmR4ZVQ4YkM5Nkh6QWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQVlNemdMckpMSXIwT292UW5BWnJSSUd1YWJpSFNVS1NtYkxSV3BSa1dlQXRzQ2hERUhwWGNKL2JnRE5LWVdvSHFROHhSVWpCNEN5ZXBZZXZjM1lsckc4bzd6SHhwZlZjYW9MNVNldUprekh4S240YlRhU3A5K012d2FtbnA2NGtaTWlOYkZMa25mUDlrWUtvUkhrTVdoZVJKMVVzUDF6NFNjbWtDZUlMZnNNczZ2cW92cWpXQ2xGc0pwQmNzbHVZSFdGN2JCSjFuNFJ3ZytBVEVvcFk0SWdHdjZadndjK0E5citBVDJocXBvU2tZb0FsK0FOWXdnc2xPZjlzSmUwVitUQTlZWS9VbGFCbVBQVGQwLy9yOXd2Y2VQV1prUGpLb0FDL3pVTmhmRGJoNExWOEdIczNseVgyWG9tTC9MTmM4Sll6eUlhREVoR1F2ZW9QaGgvdHIxZz09IiwiTUlJRFNqQ0NBaktnQXdJQkFnSVVUbmJiR0lSMk5IdnpxSUtGQWVRd0cxWEJpczB3RFFZSktvWklodmNOQVFFTEJRQXdMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3SUJjTk1qUXhNakF4TURBd01EQXdXaGdQT1RrNU9URXlNekV5TXpVNU5UbGFNQ1l4SkRBaUJnTlZCQU1NRzFsMVltbGpieUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRUVnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBT3NYajNrMDRCYW40VFlkdFpLcUQvT1BKeHlEeWFQbUNCVUZVaWFaSWdUdGVabmozWDI1RGhncFpaWHNDNEQweWRJY3JsQTZ3TlVJbk9STC9MOXpCYlRFSU1BVk1HbzZnN1VLQW1iMk1GNkFIYm5oWUpkOWVpa3VwVk5XU2hITllOYzRHQmRPMVlONkFmVXF2SmhIYmUzVjRTTk1QbUJSRUtKUFZ6N1Rod2dtZ2dUZThXczJLMC93c3F2MndTRTdwYkNCc1VaaElYNTFiWk0zcHFEd0pQVG1SRkV2dDAvNnRHNWVPOEYzajE0T1hxZkVobWpuMVZ2eEtEWVFPTFpBeEN3d2dDMFA0Q2RmV3YzeThQU1I4STM1NGhPMVkrR3pOanZJcVgzOE5LTHl3dUlZSEZlck94Tmx4RU1CdkZoWUJ1UnVZQWtrZ1VhUHFONlVCaHNJTHJzQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZDQ29SSGhpeU5uYm5YUldJTDZaQlhvQlg5WVRNQjhHQTFVZEl3UVlNQmFBRkNBb1VDRWJwRnBiNkZQTG5aM0Y1UHhzTDNvZk1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQ1FGYWZKSTEvNVdnOUNFRWltRTFSUDU0UmdRd1ROVE9PUXNMQUNUZStySXRsRlF6QzlaRGhyVjgyOHlYN2p6eStBQXNwM2l6SzdUMXRoMmRsN20rdHUwc3cyUGEvb2xjMDJudDZQeUl3MzQ4Z2FIemhJMSswS0U0NXF4dkZEZUwybE14YlBmQ1l2eUVFYVl6amlRRUxVNTk1MXBYR1d5S01hLzRmTHRPK1pLT1hoTXVWZXE0clhEUEk1NFc2SkhPaUFhaUtkaXcrNWUzYzJrdC9qRklRdE02dk1YZzlMTkZ6ZGpFVE50MjBWWDlRZXZScEZaZnVjTUc5d0NhUURvRmxQenBUTUpLaFBldi9pbUptWlloS2ZyMGxMY2VtdHFqSXhMQW9xWmRPWWZIQmc2K3ZBY2RQSS9pYXVHcFVBdjdYK1VLTm1Ed2paMkJhSDRzTHdoQjJtIiwiTUlJRFNEQ0NBakNnQXdJQkFnSVVEcUVSdys0Um5HU2dneGdVZXdKRkVQRFJaM1l3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRREk3WG5IK1p2RHdNQ1FVOE04WmVWNXFzY3VibHZWWWFhUnQzWWJheG45Z29kTHg1c3dIMGxYcmRnamg1aDdGcFZnQ2dZWVg3RTRibDF2YnpVTGVtck1XVDhOM1dNR1VlOFFBSmJCZWlvVjdXL0UraFRaUC8wU0tKVmEzZXdLQm82VUxlTW5mUVpEclZPUkFrOHdUTHEydjVMbGo1dk1qN0p0T290S2E5SjduSFM4a0xtelhYU2FqMFN3RVBoNU9BWlVUTlY0enMxYnZvVEFRUVdyTDQvSjlRdUt0NldDRkU1blVOaVJRY0ViVkY4bWxxSzJieDJ6Nm9rVmx0eURWTEN4WWJwVVRFTHZZMXVzUjNEVEdQVW9JQ2xPbTRjcnB3bkRSTFZIdmpZZVBHQkIvL3BFeXp4QS9nY1NjeGp3YUgxWlV3OWJuU2JIeXVyS3FiVGExS3ZqQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJUcXQwS1FuZ3g3WkhyYlZId0R1bnhPbjlpaFlUQWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQXFRYUNXTXhUR3FWVlg3U2s3a2tKbVV1ZVRTWUt1VTYrS0JCU2d3SVJubHc5SzdIZTFJcHhaMGhkd3BQTmlrS2ptY3lGZ0ZQemhJbXdISmd4eHVUOTBQdzN2WU9kY0pKTmt0RGczNVBYT2Z6U24xNWNGQXgxUk8wbVBUbUliOGRYaUVXT3B6b1h2ZHdYRE00MVphQ0RZTVQ3dzRJUXRNeXZFN3hVQlpxMmJqdEFucS9ORFVBN2JlNEg4SDNpcEMrLytOS2xVcmNVaCtqNDhLNjdXSTB1MW02RmVRdWVCQTduMDZqODI1cnFEcXNhTHM5VGI3S0FIQXc4UG1yV2FOUEcya2pLZXJ4UEVmZWNpdmxGYXdwMlJXWnZ4clZ0bjNUVjJTQnh5Q0pDa1hzTkQwNWRDRXJWSFNKSXMrQmR0VFZOWTlBd3R5UG1ueWIwdjRtU1R6dldkdz09IiwiTUlJRFNqQ0NBaktnQXdJQkFnSVVSMzhtcTI2U2Yyc3pWVjJCZEc2V0VON2t1V1V3RFFZSktvWklodmNOQVFFTEJRQXdMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3SUJjTk1qUXhNakF4TURBd01EQXdXaGdQT1RrNU9URXlNekV5TXpVNU5UbGFNQ1l4SkRBaUJnTlZCQU1NRzFsMVltbGpieUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRUlnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTlkwV2I5b1BvUm9Lb1F5V1BhSnB6MTF2cldUZzZ6VHRtTmoyVm9LUm55dktHUnFwemI4M3c1bDZZQTk2VVlrWUJEUVAwaWxPMkRQZTZ3V3FWUjV6RGZSemRjSDhiaCtMN2RHR3ZhZTZoUlRaaGtGa0NwWERzNEhjY2tuckRmOEZDbEo3SGUzOUpmNDIvRzFRbTJ6ejlXV21yUFh0Z2lLL3gwNUdqc1FmR3VERzF6ZjVRVFVVaWU4bHd5bUszVGZkT3ZOZWVKQUFQZTJwbjdJdGZSYityVnJOV2lEemxSbjJ2Tm5aMndQbzR3SC9XSjZkaFhaRytyTVdUK2E2Qm9jZzFVZkl3NmtkdW5HNGJUcFp6c3ZhY0ZZeVIwbXBmK0RlT25wU1dBbXl3SldIdlRsZjJZWHhGeWVYY1RBQ2RRbGNNTkdKMlZoWlE0OHh0UDUvUkJQLzhrQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZDaHk0Mm9raXFjVFMxaXFhL0hSV2prQm40SC9NQjhHQTFVZEl3UVlNQmFBRk9xM1FwQ2VESHRrZXR0VWZBTzZmRTZmMktGaE1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQW4rUkhJUGJ0TUVETmRUMWc4SC9SaXRBa1VkTGdBdDF0V0dXbmxqOWtuYnY0LzRHbFg3QzlwNDVlZlBPOS9hWkw2T1YxWFJLQmk2S210Qlc1SzdudVlFbk14LzVCcUJTYkxUN3JoZHVDNDlUQmVNYjlQSGRYc1RsU1ZOWWVmcjFkR2lkcjRqMHhWQlFMYjFya25EQWJkV0R6S2Z2bmF5S084RnJ3ZTdIeDg0M01HL3JKK2MwWHJ1VXZiZlZUQ0hMaUlXaE03b05EaEw4eG9iNnhVbzlLTEtjU0wrSXRZc08zLzlXYjhROUdqc3FMNEZYc0RjRzFTYVloN0twZnVNbU9peHF6SlpPMm5JaWNQWVJnMUkyU3VpVWZZTzcwdG1kSGNibCtrU1FtU1l0N3JxNHZpSUxnMkd4M2o5cklUdVdUamJhVWFTU1F4Z09tTVNIdXl6TUFDIl0sImljb24iOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJpY29uRGFyayI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsInByb3ZpZGVyTG9nb0xpZ2h0IjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwicHJvdmlkZXJMb2dvRGFyayI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzFfUFJFIiwiRklET18yXzEiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwibGFyZ2VCbG9iS2V5IiwiY3JlZEJsb2IiLCJtaW5QaW5MZW5ndGgiXSwiYWFndWlkIjoiOWViN2VhYmM5ZGI1NDlhMWI2YzM1NTVhODAyMDkzZjQiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJsYXJnZUJsb2JzIjp0cnVlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6dHJ1ZSwiYWx3YXlzVXYiOmZhbHNlfSwibWF4TXNnU2l6ZSI6MTUzNiwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0Ijo4LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjEyOCwidHJhbnNwb3J0cyI6WyJuZmMiLCJ1c2IiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotOH0seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTM1fV0sIm1heFNlcmlhbGl6ZWRMYXJnZUJsb2JBcnJheSI6NDA5NiwibWluUElOTGVuZ3RoIjo0LCJmaXJtd2FyZVZlcnNpb24iOjMyOTQ3NiwibWF4Q3JlZEJsb2JMZW5ndGgiOjMyLCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6MSwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjEwMH19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTA2LTIxIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZdWJpS2V5IDUgU2VyaWVzIHdpdGggTkZDIEtWWlI1NyIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjUwNjIxMDAzIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDYtMjEiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTA2LTE5In0seyJhYWd1aWQiOiI0ZDQxMTkwYy03YmViLTRhODQtODAxOC1hZGYyNjVhNjM1MmQiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjRkNDExOTBjLTdiZWItNGE4NC04MDE4LWFkZjI2NWE2MzUyZCIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJUaGFsZXMgSURQcmltZSBGSURPIEJpbyJ9LCJkZXNjcmlwdGlvbiI6IlRoYWxlcyBJRFByaW1lIEZJRE8gQmlvIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfSx7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjAsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MTAsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6MCwiYmxvY2tTbG93ZG93biI6MH19LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRGRUQ0NBbDJnQXdJQkFnSUpBSUNVVHZrZ3RqNUNNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1GRXhDekFKQmdOVkJBWVRBa1pTTVF3d0NnWURWUVFLREFORVNWTXhDekFKQmdOVkJBc01Ba05UTVNjd0pRWURWUVFEREI1SFpXMWhiSFJ2SUUxMWJIUnBRWEJ3SUVaSlJFOGdVM1ZpWTJFZ1EwRXdIaGNOTWpBd056QTNNVFF6TnpFNFdoY05NekF3TnpBMU1UUXpOekU0V2pCUk1Rc3dDUVlEVlFRR0V3SkdVakVNTUFvR0ExVUVDZ3dEUkVsVE1Rc3dDUVlEVlFRTERBSkRVekVuTUNVR0ExVUVBd3dlUjJWdFlXeDBieUJOZFd4MGFVRndjQ0JHU1VSUElGTjFZbU5oSUVOQk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBdkFLT2VxQzUvcDBEMWlzQ1lLUUpsVlVPckI2STdETG9jdW5FL1JtOGR1R1RieXhRaHQzQ2JGVlR2M04yTHAyZmJqeGxJKzNzT1NHazMzRlRZa1RxeGNkSklySjdTc2tCY1VTTnJmS09hUVQvNktRY1A0Q203Vis2NTVUcStUV3h5eFdRaER5Z3QxNXFvUDdNdUs2YlQ5U3dwQ2pwZktoYU1TbXlRYU1vVWNSQWJMcWR6QkNhYzBoekIrWmUrZ3FKbG5XVjlVYVNJMnJGc1Z1SDRaRTBjUk8rTU9wYUxnTS9zMjQ4bkdHSHAyMmV3U1FmYm5QYUJiYjhpcXlBUCtjdTUyR0xzVXBLUkplYkUrUjYrUE1ROUpDZFdlUVpSM0RrZlNpZGt2M21jYjRqcTFpSXRhK01xS2hSbndyZlhoOTExS1dMbllBbDlFTkNoTFgwYzZTajFRSURBUUFCbzFBd1RqQWRCZ05WSFE0RUZnUVVXTHZoUkJVUG44dUxJZjY4K2d2L05aSXdHU0l3SHdZRFZSMGpCQmd3Rm9BVVdMdmhSQlVQbjh1TElmNjgrZ3YvTlpJd0dTSXdEQVlEVlIwVEJBVXdBd0VCL3pBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQUZMckRoYWVnZUtIeFlqSDNFUDN2VUJLaG56TTIwNkFTeGdlWUNPMkVjOXBPbFlKYWVxRkUrc1VhbVVWL3B3akRscU5hU2dGZ3k3VHdlWWt2T21NbjRxU2NzSHF2SjN6R09BaWFmd2FoMXZVSGZDbFhSOCtheE8yaUdPVUYwSktyWjlZWWpiQWE1LzRIQ2x2N2pGUE9kTVdUT1F5bmdvaUhBczNqa3VZanBDTEZsQjRWT2kzZDF3akExcG5UZEJLa0FiN3Q4blR2dysvWGJGdmNRYTczVkg3c2p2b0JxRDNmZE1mUmN1VnE0cVVadFpUNmNHYWdUSEQ2MVR0cWg5b01DWlhjRGJSMVBHWm5OYnF5Y3NXUERJSzBucG1LMy8zbGZWOGMrWnNyeTZlMTcwbWZKTVpwN084bTZDU3o2L1ZMSyt5REpkNzg0MXdwbWVLVGY2SW5aQT09IiwiTUlJQzZUQ0NBZEdnQXdJQkFnSUpBSmJUeXJ1MVgvSVBNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1DTXhJVEFmQmdOVkJBTU1HRWRsYldGc2RHOGdUWFZzZEdsQmNIQWdSa2xFVHlCRFFUQWVGdzB4T0RBMk1USXhORFExTlRCYUZ3MHlPREEyTURreE5EUTFOVEJhTUNNeElUQWZCZ05WQkFNTUdFZGxiV0ZzZEc4Z1RYVnNkR2xCY0hBZ1JrbEVUeUJEUVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTVZqS0hXcGJEN1RTbE14b2NqVGw2bklmN3gzMlBtc1E5ekd1TEdHcUEwVVFab0lxM1hMekw2TFlVdko1QTVnMHV5RkdsbEhFZkdBS3JFYUNROEZWdlBTL1VoMEZ5ZnpXaFJBemlUU2lqak1JSVZqampVdjltOXZGbWNYU2NnSGlnN09kejg4NThWMGtyTkg5OXFHbTN3amdhT2VyVFdtdCtqWENVZm4wMUlrVFB3eEcySGxnRWQ0NWpOTFNWN1Zvb2wrS2U4RTJraTRsRWtUZUh6Ym91bFI1R1VicDNuTWk3RTQ3Vk1RYTNiTndueldCYnNhQlNTUWhMazNtNUhhS2hoeGE2d0pESzQ3TmlNQ2tDa2RJSHVXU1FMVkFmbTg1VUFPTnRFT1B3aTBPdUszcWJlOHlLT0ZHZjBLaEI1TU1lQXltN01WL000VzBhNDlvZ1BEOXBNQ0F3RUFBYU1nTUI0d0RBWURWUjBUQkFVd0F3RUIvekFPQmdOVkhROEJBZjhFQkFNQ0FvUXdEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBSld6NXhMTWs1V05ZYkFiNnlPeEVDQm9aMldlQi9xbDRWSjNPLzMvdE5zeE9ZbnpMZVdvNTQwelFoOXJBbWF4ejdldW1CbHNrTXE0eUdQU05YQjl5Y1dHSGdrY0NlU3pOMnd2OENJekRCczJvQlpqVE5rNjVMQlpEc3NUT0J0TVcvK3VURkhRZmJ1TzNJU0xoSTBEWGZSRWk5TkRNM2pmazExeEhjc2ZoMlJNVitRZE5md1ZhWlpyQ3Erb3VHK0V2a3Y3S3FxK295dTBWRk0vdHo2OFRHbDZ5bGhQRlIxcWg5d3R0cFZqQU9PQ0VRQ0xxUDJkUDI4bHdZQnlDcUhRcVZId2J1anYvTFpqWm5LVzNMWW5kWml4UFBTUkNKc3NERHdKdmgvZjZuVHhnOVpFKy9KY1lyZTVDYUk4bnpWSGFTT0NqTko3RnpVTEc2NEppV092UTUwPSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFRd0FBQUFnQ0FZQUFBRG5sVVpxQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUVuUUFBQkowQWQ1bUgzZ0FBQUFaZEVWWWRGTnZablIzWVhKbEFIQmhhVzUwTG01bGRDQTBMakF1TWpIeElHbVZBQUFLMUVsRVFWUjRYdTFkRFhBY1pSbStOT0FmS29nNldPMFFjcmVYM083MVI0MW9IZFNxcURBT2czK2NZRVhCb2xYUlRFbjIyMHRhS1RjNjRtZ0JxekJpRVVWcEJkcWl3d2hxU2RJUzJ1cFlTZ3ZSdHBUU2NrbGpXekhhZ2pwU1JkcjR2THR2anJ2azI3dmR2ZDFMam43UHpETjN0L2QrNy90K2Y4Lys3OGFLME5EYWFyMnFPZFhab3FXeUg5UjBhMEZjdDY3V2RIR1Rab2pWQ2NQcVNlalcxb1F1SHNPeS9lQlRzRG1NLzU0WlQ5aitMV0dJZzdEZkIvc0JjRFBzZjRYZlA4WDNiMnVHMVpIUXpVOG1VdUtkeVdUSG01cWFjaS9qSEFLQnlpZjBiQnIrTHdhWElQWVBrTWRxZkw4WGRXcGxzMUFBMzEvUWpPdzk4TDhTOWI4QlhJUjIrbkRjNkRvemxzazBzbG5rUU14a1BHWE85RUp0Vm5ZR0Y0c1V5Vm5kOFVUYWVwOGJ3KzZMYWtCajVpemRiTkpTMXJ4RVdueVd4ZzM2RW1QZFdvUFBEZWpmN2VBVEdNc0hhRHpUdUM2aGJqME4vcFhtQXNydWdzMFdMUDhOdUJKalpKbVdFbGNsMDltUEoxSm1XMHRMNSt1aUhCdUdrWHNsalg4N25pNEV6Vm5rOUF2a3NRbjU3RVNkaHJCOEJNdVBqT1dQLy80T0hzUi9lN0Q4WWRUbGZ0UmhGZmdkTEc5SHUxd0FmenI1NWpBT2tpUUtodlZiR0I2QzAvL2krMmlOZVJ4OEZnbnZSZnhmYWluelNrN05FMGlJVVBiZjQzd1dtTlROZDdCcEtFQTdMWmZGQVk5enAzeVpUU01EaVFWaS9VK1NnNVFZQUlmT21HMmV3c1VqQS9yaFc3TDRCZXJtajloMFVvQjJPQitUWlRXNEIvazhPeUcveUNpT29XMUlZSDZIOFhQejlMYmNLemlsUUdocE1admhaeUhHd0czZzQyQms4NVo4bzkwRzhYME5pU3MxSXYyUUdrOEtkV3N6dDRzbklQOFJxUjltRFFYRElkWlNiQm9aMElsM1MyT1haWFlwRjQ4TVUxNHduSzFiZVc0MXBMM0ZFUUNKbFBWV3RERzJmdXlWck5SM3RCVGRTakI4WXJJRm95VnRubzJPQ3pCZ3hETkJCNnBYS01Id3hpRDlnSzNLYzZQY2t2QkdKUmkrTWNtQzBZRDRmZEs0WG9oOVcvWVRDWlJnZUtOdndjaGtHdEcyZTJXK2Frc2xHTDR4bVlKQmF4bHBUSStrTlJRZG1HUjNvVU1KaGpmNkZRdzZjQ3J6VTN0Q01MRFd1UXNkM1IrQXczS25CUTVLeW5qaGpkeE9ubkRpQ0VadUdqcnNZV2xNSnRwaVdVSzNCbVQvRmZFdWRoZzZVUGU2Rmd6MGJSNmZhNk1tblkza2xEd2hhWWpMVVU2ZXMyN3QwZ3p6bTdWZ1V1OTZENmZrSHhDYTYyVVZHQ01xOGcwMmpSUW5pbUJvUnZZaWFUd20ybnRmVzl2Q2s3VzBkWUhzL3dKMTYzazZlTVp1UTBXOUN3Ykc5SzFzT3FXQXZJVTBYNXRpRFp0TmJTakJjR0VFZ3RIV2Rzdko4RTJuQXVVeGlicDVoV005Mm9EZjJ5YjhYMEt4M3JFTkYwb3dvZ0htMGhKcHZqYVZZUGpDaVNBWWliVDFlV2tzSmliQ2svUG01VTVpYzhyeFFwbGRNUlBwN0hsc0hocVVZRVFESlJnaDRzVXVHSFNSRCtwSVYrVEo0eEgxTEc5ZGpDSFRpTWxSNFZpRzJFN0hSYmhBS0ZDQ0VRMlVZSVNJRjd0Z29KMnowamhNdEhPZWpsMndlUUZZL2xHWmZTbkZmRFlQQlVvd29rSENNQmRMODdXcEJNTVhLZ3FHSVM1dlRwdG5oMFhVKzA1Wm5BSkRGQXpENkRnZC9wNld4bUhHRGZGRk5oK0gwUWIwd2FPeU1tT0UrT1VOSS9jU0xsQTE2bDB3MEY2NzQ3cTRwUnBHY2RxYTdrdVI1VXRFSDQ1Z0Rtd0tpL0RaajgvN0lFUzM0ck96ZWFhWXpXbFVoM29SakpvelJNR29PQUVOYTBpMmRUR0dlRXA4VEZKbVBEdll2R3JVdTJDRVFicWhrc09GQnN5bGkyV3hhc1RqNk5kMTJwc1h2NTdUQ1FZbEdDNE1TVEJhVzYwM29vMWRiNnF6cVZ0ZlluTTU2QXBCdzlveG9Wd1JNWWxHTkszOTFWeWlLaWpCaUVZd21sUGRMYkpZdFNUYTdxSGlBK3Urb1FURGhTRUpCdHB2aGRUL0dIV3h2OXpXeFJpMHRQaUV0SHdKeGJWc1hoV1VZRVFqR0hSd0d1T2gwZ1Y1a1RPZU1pL2hoUHhEQ1lZTFF4Q01zMXF0Vmd6dThyZXZweXlQandId3NwVmgvU3VWV2pLZEN3U0dFb3lvQkFPNXA4MzNvcCtlazhXc0ZkRit3YThTVm9MaHdoQUVBMzdXVFBCYlJIVGNBZXhHdkpUTkhmUU1OY2Y2QnMrUDllYm54ZnFlUEpXWDJrQ1p6SGdmRXhqQ0dRSWxHTkVKQnNGK0VKRXVkc3ZpMW9iaVQ1eUtmOVNOWU9qV1pqVHlmYUhSdWQ5QUhvdFlwV0E0TnhxSlkxTGZUTlQ1SzJ3ZWk2MGZNaUFVRDRLakJmYm1qOGI2OHN0ajJ3N2FEMnFoZlUvMHh5NlpyekhTMnF1bHBUTmwrd3lJdWhjTWpCVTY2MVFObTJjdVBvUERSWVRSQmpwYlIyTUFPVjlIWnpPUTk4L3cvZll3aVBIdGZqZTBidjJGay9DUGVoR01PcnNPby9MdDY3bzFYRGdWdWlFL0J3THhqeEt4S09YRzJNNmR0aTM2dzhPUmRuR1A3VGNna0Z1ZEM4YlV2QTZqbGtpa084K1R0ZzJJTVhTWXpmeERDWVlMcXhBTUw3ZXZvNzd0dG5GLy8wbllrdGdoRVlseEhMcWF6SjJ0akVxYnM5aXlTV1huMnY0RFFBbEcvYU9zWUJqV0FUYnpEeVVZTGd3c0dMbHBLTHRWNnBOSkhWWjRZSExmL25mSkJXSUNoMkhkUUVYaTZld2xNcjhsZEo1SFl0djdoUktNK2tjNXdVRDc3R1V6LzFDQzRjS0FndUhwOUdkS1hNWG1FSXg4dTBRY1hQallhKzB5bVV3ajJ1dHhxZThpb280WDJ2WStvUVNqL2xGaGwrU1BiT1lmU2pCY0dFQXc2SG9LN0E2VW5jaW81OEdtcHN0ZWVCMUQ3OUJYNWVJZzRmM0RwM09wR09MTWwva2Z4eDJ4ekZyZmo4VlhnbEgvcUxCTHNvWE4vRU1KaGdzRENFWWlWZjcyZFdicEpkdzkrODZSaXNONDlnN3VoM1ZoRjRQRjZRbUovMUxxMWdJdTRobVZCQU1UOXU3eDcwd0pnL1RZZlU2aExKUmdWRWFGWFpJSDJNdy9sR0M0MEtkZ3pKNXRuZ0tmQjZTK21Qai8wSXdaSFMvbklnNUdSeHNoQmdOU2tTamxZaTVSQVBydVVsbWNZbUp5L1huRzNIRXhLNkRpRmtaRXhCall5Q21VUlNYQlFEdVBvQTVibzJiU3lMNmRVL0lFM2lxVW5nWU5tMmdEMTdOMCtHOFZwK1FmU2pCYzZGTXc0cnBsU2YwVUVURk5OaTlGei9ETVdHLytpRVFrSFBibU44UzJiWnQ0K2JoemowbjVKM2lCZEZzMWwvQUUxTDJ1QmFOV1RPcmlBNXlTSnlEdjc4cjgxSnllcnk2V1FBbUdDMzBJUnRPYzNHbG9wOE5TUDJQVXhWTmwxL1RyOHEyeHZ2eDY4UGtpc2ZnbmZsOGY2eDkwZlFVbDRuNUdHcStZdWpoeTVxenUxM0NSaWxDQzRZMTFLUmowV2tndEYvd21SU1VZTHZRaEdGNG1HQWFMWVBQeTJEZzBQZFl6OUg3c3BzeU45UXhVZkMwaVhmeUZQdG9uaTFsTUdxeGNwQ0tVWUhoajNRa0d4Q0twVysvbWRJSkJDWVlMUFFvR3ZZUWE5dVhmNzFscDY2SktsSHQ4L1FzVVIrMFhUWHVBRWd4dnJBL0JvTGZyMlFmSHIvR3psZW1LS1NNWXVua0hUU3pFbEw0K3NGYUNnZm8rQis3V2pPem4yTFFzbk5jR2lEMVVUdWJQb2RuRjVwR0F6cGdndnV0V0J1cjZIN3RPdXJpVWk1UUZYU1dLTXQvSEJONUVheVhVcit3OU1jRXBqdkdLNHZmSWJ3VmR3OElwbEFXTkJaUzVEdldoTjVYbjRlZG9xZDhvaUZ5eDJ3aytpdS8wSXVpbDlLd1RUc2tUNG1seER0cnpSbTVYalBVbzJwWGU2RzQ5Z2p4dncrZkNoTkdoY2Zod1FDOWphVExFRzl4b0dGZVd2aVkrVXVTbTJRK2NvWGR5Nk5ZaU5Pd3lWUHJIR0JoM0pvenVVQ3NlVDVtWFFmRi9qaGcveE9mWE5kMjhnam8wYUgzcExBbE5OR2R0TDVZaTU1dlFnYmVqNCs2Zy85Z3NNcUFPSDNIYVNmd0ViWGNEdm1lVGh2VXBUZTk2eTRRek03NlFtOVkwWjlGcGRQY202dk5wc0F0OXN0eHBPK3ZYNEViRTIwb1RDY3NHU29ubCtCL2Y2V2EvVmNWNTBhU1B4N3RPRGVFQnhnMTB4eStka29YZ2ZBZ3hGaURlMTlBTzMwTS9yRVFPOXlMbUE0aS9CYiszbCtibmtQSUhONFByVUwrMStGd0IyMnZob3gxaWYxRzgxWHBidkEyNVpqSytyMmx4UjI0YTFkOFJQekVmdXdvV2NzRVdpSk16WWorSTN3K1Z0S3NoSGdIL0FQWlNucWpUemZpOHhoNjd1blV1UGRyQTI4TnhZckgvQXozdEk0ajUrVE9MQUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzEiLCJGSURPXzJfMV9QUkUiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6IjRkNDExOTBjN2JlYjRhODQ4MDE4YWRmMjY1YTYzNTJkIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJ1diI6ZmFsc2UsInBpblV2QXV0aFRva2VuIjp0cnVlLCJub01jR2FQZXJtaXNzaW9uc1dpdGhDbGllbnRQaW4iOmZhbHNlLCJiaW9FbnJvbGwiOmZhbHNlLCJ1c2VyVmVyaWZpY2F0aW9uTWdtdFByZXZpZXciOnRydWUsInV2QmlvRW5yb2xsIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjp0cnVlfSwicGluVXZBdXRoUHJvdG9jb2xzIjpbMSwyXSwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjo5NiwidHJhbnNwb3J0cyI6WyJuZmMiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fV0sInByZWZlcnJlZFBsYXRmb3JtVXZBdHRlbXB0cyI6MywidXZNb2RhbGl0eSI6MiwiY2VydGlmaWNhdGlvbnMiOnt9LCJyZW1haW5pbmdEaXNjb3ZlcmFibGVDcmVkZW50aWFscyI6MzJ9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0wOC0wNiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IlRoYWxlcyBJRFByaW1lIEZJRE8gQmlvIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNDA4MDYwMDIiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMy0xMi0yOCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IlRoYWxlcyBJRFByaW1lIEZJRE8gQmlvIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyMzEyMjgwMDIiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMy0xMi0yOCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTA3LTI4In0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiZjRiNjRhNjhjMzM0ZTkwMWI4ZTIzYzZlNjZlNjg2NmMzMTkzMWY1ZCIsImQ1ZGI0ZGQ0OGZlNDZhZmQ4YWY4ZjFmN2NmYmRlZTYxNjQwYmJiY2MiLCIzOWQxMWNiMWQ2ZGE4ZjY0NmY1ODRlZWExODQxMzNhMDNkODVhMmNjIiwiNTU0NjRkNWJlYTg0ZTcwNzMwNzRiMjFkMTIwNDkzNDM1OGM3ZGI0ZCJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyJmNGI2NGE2OGMzMzRlOTAxYjhlMjNjNmU2NmU2ODY2YzMxOTMxZjVkIiwiZDVkYjRkZDQ4ZmU0NmFmZDhhZjhmMWY3Y2ZiZGVlNjE2NDBiYmJjYyIsIjM5ZDExY2IxZDZkYThmNjQ2ZjU4NGVlYTE4NDEzM2EwM2Q4NWEyY2MiLCI1NTQ2NGQ1YmVhODRlNzA3MzA3NGIyMWQxMjA0OTM0MzU4YzdkYjRkIl0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJGZWl0aWFuIGVQYXNzIEZJRE8tTkZDIFNlY3VyaXR5IEtleSJ9LCJkZXNjcmlwdGlvbiI6IkZlaXRpYW4gZVBhc3MgRklETy1ORkMgU2VjdXJpdHkgS2V5IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiLCJyZW1vdGVfaGFuZGxlIl0sImlzS2V5UmVzdHJpY3RlZCI6dHJ1ZSwiaXNGcmVzaFVzZXJWZXJpZmljYXRpb25SZXF1aXJlZCI6dHJ1ZSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQmZqQ0NBU1dnQXdJQkFnSUJBVEFLQmdncWhrak9QUVFEQWpBWE1SVXdFd1lEVlFRRERBeEdWQ0JHU1VSUElEQXlNREF3SUJjTk1UWXdOVEF4TURBd01EQXdXaGdQTWpBMU1EQTFNREV3TURBd01EQmFNQmN4RlRBVEJnTlZCQU1NREVaVUlFWkpSRThnTURJd01EQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJOQm1yUnFWT3h6dFRKVk4xOXZ0ZHFjTDd0S1Flb2wybm5NMi95WWd2a3NabnI1MFNLYlZnSUVrekhRVk91ODBMVkVFM2xWaGVPMUhqZ2d4QWxUNm80V2pZREJlTUIwR0ExVWREZ1FXQkJSSkZXUXQxYnZHM2pNNlhnbVYvSWNqTnRPL0N6QWZCZ05WSFNNRUdEQVdnQlJKRldRdDFidkczak02WGdtVi9JY2pOdE8vQ3pBTUJnTlZIUk1FQlRBREFRSC9NQTRHQTFVZER3RUIvd1FFQXdJQkJqQUtCZ2dxaGtqT1BRUURBZ05IQURCRUFpQXdmUHFnSVdJVUIrUUJCYVZHc2RIeTBzNVJNeGxrenBTWC96U3lUWm1VcFFJZ0Iyd0o2blpSTThvWC9uQTQzUmg2U0pvdk0yWHdDQ0gvLytMaXJCQWJCME09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUZBQUFBQVVDQU1BQUFBdEJrcmxBQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQkhacFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR3L2VIQmhZMnRsZENCaVpXZHBiajBpNzd1L0lpQnBaRDBpVnpWTk1FMXdRMlZvYVVoNmNtVlRlazVVWTNwcll6bGtJajgrSUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWtGa2IySmxJRmhOVUNCRGIzSmxJRFV1Tmkxak1ERTBJRGM1TGpFMU5qYzVOeXdnTWpBeE5DOHdPQzh5TUMwd09UbzFNem93TWlBZ0lDQWdJQ0FnSWo0Z1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNGdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlnZUcxc2JuTTZlRzF3UFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIaHRiRzV6T25Cb2IzUnZjMmh2Y0QwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOXdhRzkwYjNOb2IzQXZNUzR3THlJZ2VHMXNibk02ZUcxd1RVMDlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl0YlM4aUlIaHRiRzV6T25OMFVtVm1QU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2YzFSNWNHVXZVbVZ6YjNWeVkyVlNaV1lqSWlCNGJYQTZRM0psWVhSdmNsUnZiMnc5SWtGa2IySmxJRkJvYjNSdmMyaHZjQ0JEUXlBeU1ERTBJQ2hOWVdOcGJuUnZjMmdwSWlCNGJYQTZRM0psWVhSbFJHRjBaVDBpTWpBeE5pMHhNaTB6TUZReE5Eb3pNem93T0Nzd09Eb3dNQ0lnZUcxd09rMXZaR2xtZVVSaGRHVTlJakl3TVRZdE1USXRNekJVTURjNk16RTZOVGtyTURnNk1EQWlJSGh0Y0RwTlpYUmhaR0YwWVVSaGRHVTlJakl3TVRZdE1USXRNekJVTURjNk16RTZOVGtyTURnNk1EQWlJR1JqT21admNtMWhkRDBpYVcxaFoyVXZjRzVuSWlCd2FHOTBiM05vYjNBNlNHbHpkRzl5ZVQwaU1qQXhOaTB4TWkwek1GUXhOVG96TURveU55c3dPRG93TUNZamVEazc1cGFINUx1MklPYWNxdWFnaCttaW1DMHhJT1czc3VhSmsrVzhnQ1lqZUVFN0lpQjRiWEJOVFRwSmJuTjBZVzVqWlVsRVBTSjRiWEF1YVdsa09qSkZOekZDUmtaRFF6WTNSakV4UlRZNU56aEVRVGxEUWtJMk5EWXpSamt3SWlCNGJYQk5UVHBFYjJOMWJXVnVkRWxFUFNKNGJYQXVaR2xrT2pKRk56RkNSa1pFUXpZM1JqRXhSVFk1TnpoRVFUbERRa0kyTkRZelJqa3dJajRnUEhodGNFMU5Pa1JsY21sMlpXUkdjbTl0SUhOMFVtVm1PbWx1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2TWtVM01VSkdSa0ZETmpkR01URkZOamszT0VSQk9VTkNRalkwTmpOR09UQWlJSE4wVW1WbU9tUnZZM1Z0Wlc1MFNVUTlJbmh0Y0M1a2FXUTZNa1UzTVVKR1JrSkROamRHTVRGRk5qazNPRVJCT1VOQ1FqWTBOak5HT1RBaUx6NGdQQzl5WkdZNlJHVnpZM0pwY0hScGIyNCtJRHd2Y21SbU9sSkVSajRnUEM5NE9uaHRjRzFsZEdFK0lEdy9lSEJoWTJ0bGRDQmxibVE5SW5JaVB6NDc3SlhGQUFBQVlGQk1WRVgvLy84RVZxSVhaYXZHMk9vcWNMRzJ6T09rd3QwQlNKdHFsY1hWNHUrYXV0bFdoYnprN1BVQU1ZOUhjcktqdE5icThmZUFsOGFCb3N6ejl2cGRqc0dHcXRGM244dVRzTlNacGM2SnNOVDUrdjB4WUtudThQZmY1L0w0OGZnL2ZyaWN6SmdZQUFBREFFbEVRVlI0MmtSVUNaYkRJQWpGWFpPWTFUYXROYzM5Ynprc1NZYzNyNE1FNGZNQkFhRDZ6bDh5LzlUT2dldDhkNWpmTjc4YndNL2REQ1JwUjUyMXpYZm9qSEowNUlJeWhCQVVTVkFPTmRHekJZdDJmN0tGcmZrSmFBa0hoOUZaaGNEWEhSa1RLbzlNTGloR2FhdkltblYzcXlFWDBFcHJnei80RHdVRDdrQ0hSbmQ4UUZONDNHbzRVVm1ERGd6YTR3MjdvaXpkQTIrY0srdXVVcGpqbzIreHdjLzQyVzUweDVMR1llREJzUjBIVkl4NXg4aUY2MENibGJURUVrRnIyN2JOREJVVlNxMU9LVlBiRTYyYjNFSDhGcUJnNU9PT0V1YzJ0OFpKaXFNT3VHcCtjS2pnN3dWR2Nlb3pxTjRweGdWUFFrakZZZ2JWSktEVWhEQ2pZcmF3UDVxNEVUZ0M5ZklNUkh0aXRwUWNDdkpPRUxjYk1zUWduY2lSa2xqcHlRanZHNDRqcUJVRVRGaUJpMVBFSXlla096c1crVHk1Y0xIb3M1UitkTVMxTHRTU3hmM2dRSGN6UjJDSTRnTU5wVzRJUkExUU1hNnRKNCtDNnVIdUdFOG1OREl5RnFnL09QL01NVXVlUzZJcThTOTBkQWVCSlNFeS9xS2tLK0JOd3o4Y1lZNGpiNUo2dTRpV0NJMkIxWjU2TFc1a0VjNGhrZE1wc3ZVQzU1ODVTWDBRdWJjZ05xeWZnREZFY1R0KzQwLzBTNU54MHdhQ3czT0trY09iQTVJbjBBWXAwMXBqancybjYyNlVEanRId2EyOGlIdVRLcXRydityZVc0MU5aNmlHbHI3dXVMSkNma0Z0Y3RjRzA0c2dtMWVOUytaYURucGFURXJHb3lYNUpLMmlNejh4czBuT3dXR2NQRE40OXFhQ2Q0YnpKb3pEWm0vYUJLK0Vvekx3K1hoTkJpWXdIZjBzaU91MVhQa0cvekt3dnFZS2NmU3dERWNIL29VZTA3ZXMvV1E4ckl5ZzJET1hqOHRqa1pkdURCL2I4aHpEbGxNTU9DUzVCRW5kNTM0Zjh0aTNVWmM0a01zM3hMeWFmTVNzSmhkRzhYUHFqTms1dEFnTzI1ZmVLQ2huVmREai9KMEZNa09zVS94TUJ2MHdGaFllRUdmVkgxM2Z1RFUweURGTGE0ZmM3Um5XSEJmdVRGVjJ0RW1Od2FkYzdhYzNVWTJqZkJsN0hUMzZmZTM0aVFPNW1OQ0ZGQlcwN0tqUGdxaE9MVTAxdlo4UHVlWjJKQ2xGWk44amtVczY5dWthOWVQcDYrRWZMNEFGNStOeXdTYmlySHRjQjhNbC9na3dBRWprSzY0S2pIUGVBQUFBQUVsRlRrU3VRbUNDIn0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjAtMTEtMTkiLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IkZlaXRpYW4gZVBhc3MgRklETy1ORkMgU2VjdXJpdHkgS2V5IiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVMkYxMDAwMjAxNTEyMjEwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMC4xIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjAuMSJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAxOC0xMS0wOCIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiRmVpdGlhbiBlUGFzcyBGSURPLU5GQyBTZWN1cml0eSBLZXkiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlUyRjEwMDAyMDE1MTIyMTAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4wLjEiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMC4xIn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMC0xMS0xOSJ9LHsiYWFndWlkIjoiMjc3MmNlOTMtZWI0Yi00MDkwLThiNzMtMzMwZjQ4NDc3ZDczIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiIyNzcyY2U5My1lYjRiLTQwOTAtOGI3My0zMzBmNDg0NzdkNzMiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiU2VjdXJpdHkgS2V5IE5GQyBieSBZdWJpY28gLSBFbnRlcnByaXNlIEVkaXRpb24gUHJldmlldyJ9LCJkZXNjcmlwdGlvbiI6IlNlY3VyaXR5IEtleSBORkMgYnkgWXViaWNvIC0gRW50ZXJwcmlzZSBFZGl0aW9uIFByZXZpZXciLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDcyLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH0seyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AzODRyMV9lY2RzYV9zaGEzODRfcmF3Iiwic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciLCJlZDI1NTE5X2VkZHNhX3NoYTUxMl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjYsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjYsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlES2pDQ0FoS2dBd0lCQWdJVWVmK1Z2SGtjVFFuRUQrK3dKTS9JeHpTVUxrMHdEUVlKS29aSWh2Y05BUUVMQlFBd0pqRWtNQ0lHQTFVRUF3d2JXWFZpYVdOdklESXdNak1nUmtsRVR5QlFjbVYyYVdWM0lFTkJNQjRYRFRJek1Ea3lOVEV4TXpJME1Wb1hEVEkwTVRJek1URXhNekkwTVZvd0pqRWtNQ0lHQTFVRUF3d2JXWFZpYVdOdklESXdNak1nUmtsRVR5QlFjbVYyYVdWM0lFTkJNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQW91Rk1UT0thRTBZdGV4T29pc1N4cCtFYmk1SUE0ZXNFU2N4MTZselFkcVY2L2VaODJLdEplTlhFdU5rQlZaRHBjMzJnU3R1eExCSDhtZ3NvSEJGYWkyRGtqZkJuNXFid1IvYzUrc25sd1p2amdWQTBoekt3OUN3QWVBd1JENWtyV3Q4OC9DVnlDa01jZ0xTR3dacy9yajdGL0xzM0ViZzdNcUxiYlFKOUNvemJiTGRKVVlJSGNQcFNaUHRvTXJaYjRHdm5pNmlWUzlVdkNLZ3BxYzZMR1Jtb1lHRzRaUjNsR0ovWFFaZnUrR2VKVzY3aWltTWoveW9YT3d4dWN4aXZaSEZrNmNRU2d3dXdpb2VObTR3dms4M0xoU3VXY3RmMmtBeVFjWjdrVW5wTmVlK2Q0TWdybUdVNFhNRkxpVGd1dGFCK2U5VjhkNUpUa1VPSGlMenRrUUlEQVFBQm8xQXdUakFkQmdOVkhRNEVGZ1FVTTVTQjViSHJWK2pwSU9NZEpsN3U3YmNuVFk4d0h3WURWUjBqQkJnd0ZvQVVNNVNCNWJIclYranBJT01kSmw3dTdiY25UWTh3REFZRFZSMFRCQVV3QXdFQi96QU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFDb3dSM0tUTGZpZEp5UUZOcUVGZlVyZlo5YWE5ZWdwT1F0TlJKZExTdEo2eHUyV2ZMd3ZHNG9qR0psQktObmZhNURJY3lRWWYvOHFKNGVsaUFWZU5YdVltZU1tZ05nWlp5dVk2RzF5V0NEMlYzc0Q2WjR1ajNTYmFET0hqM2dIdnN6Z1FocmhUMWgvcHVIUWtuNitoWUtBcDc3a003SWM2QVovUkZianBtTExrMkQwc0UxbHpULzAyaStCaDdNOHNtYWlEWjkrK0pHenhlU3VuOFcxSGxlWlVtMnFLR21SYTRYUGRyeVQ3eDZLR1VHblU0YTNicFVtVmVZOXJRL3NmTWQ1WlRvbyszdW5GV0R6b1ZWMnZOdTgrK1ZMQzl6bzQwRmFLUUxyOVZBSkRKNHlMRU5SN0tybVY4TDBjQ1hLSkdaV0FXdEc1UkdUbUhJaGQrbkI0MWc9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFmQ0FZQUFBQ0dWcytNQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUhZWUFBQjJHQVYyaUU0RUFBQWJOU1VSQlZGaEhwVmQ3VE5WMUZELzNkNTl3ZVFTSWdTOUFRQVhjRkxBUVppOWZwZVZ6MXRZL1dUWnI1V3hwYzdXNWtuTGE1akkzWjg1c3JTMm5NMnNqdFd3WlM3SVVINEg0eENuRVF4NERBWkY3NFY3dXM4ODV2OS9sSW5CdlZKL0I0UHY5bnUvNW51LzVudk01NTZmekEvUXYwSGIvSXJYM1ZGS1BvNDVjbm00aW5VSVdZd0xGUm1aUVV1d2pGRy9OMWlSSGgxRVowTlJWUnVkcXQxQmQrMm5TS3lTL09oeXMwK2xrM2UvM2tROXF2RDRaVXRhNFZWU1V1WTBlaXB5aVRoQWZvY29PUlZnRHV1dzNxS1JpQWQzcmJjRXRqVGpZSW9mNldhSHNDbXpWUFdDTXgrY2doOHRMcVdNS2FNV3NVakxxbzJSdEpJUTBvT3ptZXJwUXU0ZXNaZ3NPTmtHeEg3ZDBrZHZUVDE3czRPTVU3Vkk4WmhqZ0dhTStBcTlpRU51OFBpZjF1ZHowN013dktXZjhHbFZvQ0VZMDRQQzVXZFRhWFlGYlI4dk52TDUrM0tnZmI1eE5NeWE5UmFtSml5bmFNbEdUVnRGbHI2YmE5dStwcW5FWDR1TXVSUmdqU1lFaHJON3V0RkZlNmxxYWw3TmZrdzVpbUFHSHluUHBiazhWbVkweHN0bnB0bEZDVkNZdHpUdUJOODNRcE1MalR0ZXZkUHpTVW5KN2U4bWtqeFozOWZYYktEZmxkWnFidlUrVFVnR25CVkY2ZlEyaVBIZzRXMTZVV1V3dnpiazE2c01aRStQbjBwdno3SlNldUF5ZXM4bGNwQ21hS3VvL3ArcVdyMlVjd0lBSFdydlAwWUV6aFhBdExBYnNzSGhwN2lHYW12eWlqUDhyeXFyWFVXWDlYb293eHlBdWZOQnJwNDNQT0JGWFpsa2Y4TURSaXFjcHlvd0F3cHV6MngrZld2ei9EdGRlOXNtc3p5Z3RjUjZDMXdiZHpCbDZPbHE1V05ZWTRvR2F0aEpNcmtURXgwakFSU0hBVnMrNXJZa1FOWGIrUWdmUExzUTZnWHlJbnNyZVFmbXBtN1JWRllmTDg2bjFmaVVPa1l2U2hrVVB4dmJ1a3pveTZLMWloTTFobzNYelc2RXZTZlhBK2RwaVdHYVdkK2RvWHpMem1Hd0tZRkxDQXNSQWxQQkFoTWxDRlhVN3RCVVZQcjhIZ1ZjSkhXcStGMDBwbHIrRE1UZHJQNHp2eFkxMWtOTWh4VCtTZVRHZytkNFY1TFFKaXR5VUdKTkI4VkZac2pnWUJaTS9JSS9YQ1RrajBxeURPcEYyQVZRMTdDSWpVcC9EblQxVWtMNUY1Z2RqK3NTMXdnMWdFM2dpZ202MGZDWHpTblBYYnlBUGJJWHYrSURwRTE2VGhhSElTOXNreWhsbU1FNUYzY2ZxQUtocTJDMEU1UEgxZ1lhWGFMUERrWkcwSERKT25LV0hwNTFJMHo1U091eDhlMVdBdVp6ZEhRclRrcDhUbWpYb0krbGEwd0dac3p1YnFiTzNpZlE2QS9XN3ZWU1lzVjNtUjBKS3drS2M0V0hpQmttUjhJM0NDZ0k4N29PTDRxelQ1UCtSVUpCZWpFT2dBUEs4aFlQemF0TStlSVRwMklPOXlUUW1lcm9tUFJ4eDFxeEFjc2lsZS91YlNlRWJjV1FHWUVDZ2hjTFkySHlLam9nakgyNWhNcGpwVXYxT3VnbGk0ZWgyZVJ3ME8zMmJKamt5dUNnTnpnMHZ6bFlNU2lTczB1b280TUc3aE1PakNFYVgxeUZFMG5TdmpCenVUbkVwSzg2WjhJb3FGQUl1Ync4a2c5QXJFYVJFV1NaSStqSDRYYnA2ZzlFOUVuSlQzb2FSekROK01VSkJRREhuNTZhOG9VbUVCdXNPeEJzL041K3RKRWJQa0FGRGo4VUd2T3MvSVd2Y1NnbEdCaHZTNy9GVFlmcFdHWWREWThmUEF4V1NBMzVzVEM0cDQrTG00QWFxSW9QZVF0ZnVmSzZKaDBaaHhsYnNVWE9TbVhOaWZENVpUQWt5RG9mYmJjY2x4bkE4V05BcXhDYlJOeWtoWHhRcGFEdzY3ZlhVWWJzaUcwS2h0djJvZUl2aDhyaFFNWU9jRUFxWEcvZUkrem5nT2M1eXhyOHE4MklBTTFjL0ZMRk9wbHF1NWVGUVhyTVp6R2NWQ2pZYkxXRzVJNEJUMWV1UnJsYnh0Tk90TWl0RERFaExYSUl5bkFBdnVPRVdFM1gzTmRBZnQ5NFZnYUc0MlhJUXQwWlg2UGVDRS9xUUZlOXJLNkh4N1lVNTBLdkg3Zlc0ZlMrcTdLS0JKeHNnZ0JYNXBTQUdoMWpJclZoNXpRNnczUmZhYWhCWG0vYUNiQ1pUakNVRlVUeVdacVc5cDYyTWpKUFhWcU9yUGdNTzROdjc0R2tmK293ZnROVkJEUW5qRkpxSFN3MTdwWHZoV1c1S1pxZS9RNDlOL1VTVENBVldvUVhGSUhCSFhYZTNGUHJVRHN1R0RtdEYvaEhLVEhwZWt4aGlBT1BJK1NKcTZTNkhGNEk5WVd6a0JKVG80NmlVTXpXcDhQaXIvUmlkdUx4S1lzU2tzVjh2TGxPUXZoR1gyWWxSME9CaEJqQyt1L2dFY3ZZMEFwSzdZazQxTnhqUFNRbldGSFRGNjZVcmpnZXZCOEN1NWErbDJ2WVNSUHR1VkRvNzNoaGRNU0huVVg3dFRqc1ZaR3hBbC9XcHRpT0lFUTFnbkwyOW1YNi90UjF0bWxrWWo4VzRYK0NTaldjVURHWTFOcFMvQzdoU0txaU1MTS9sMlFtU1daNzNEZHorZ2lvOEJDRU5ZUFE0NnFua3p3WFVicXZCa3hqVVFzV2ZaRmdidW8zckFmK3dON2pPTzkwK3lueDRQaTNMKzBuWUwxU2NoRFVnQVA0Z1BWLzdJZDFxKzFIU2htdUdrSXFXUlBneXhNRnFQOEhmalRualh3WTViUWZiSmN0Nk9JektnTUhvdEYvSGUxZWdzYXhIU3FHNndmZG1RNXg4TnlURkZxQmNwMmlTb3dIUjN5azUrMzZoRjd2WEFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xX1BSRSIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsImxhcmdlQmxvYktleSIsImNyZWRCbG9iIiwibWluUGluTGVuZ3RoIl0sImFhZ3VpZCI6IjI3NzJjZTkzZWI0YjQwOTA4YjczMzMwZjQ4NDc3ZDczIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibGFyZ2VCbG9icyI6dHJ1ZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOnRydWUsImFsd2F5c1V2IjpmYWxzZX0sIm1heE1zZ1NpemUiOjEyODAsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6OCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoxMjgsInRyYW5zcG9ydHMiOlsibmZjIiwidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN30seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTh9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi0zNX1dLCJtYXhTZXJpYWxpemVkTGFyZ2VCbG9iQXJyYXkiOjQwOTYsIm1pblBJTkxlbmd0aCI6NiwiZmlybXdhcmVWZXJzaW9uIjozMjk0NzIsIm1heENyZWRCbG9iTGVuZ3RoIjozMiwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjEsInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjoxMDB9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiTk9UX0ZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMDQtMDcifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI0LTA0LTA3In0seyJhYWd1aWQiOiI2ZGFlNDNiZS1hZjljLTQxN2ItOGI5Zi0xYjYxMTE2OGVjNjAiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjZkYWU0M2JlLWFmOWMtNDE3Yi04YjlmLTFiNjExMTY4ZWM2MCIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJEYXBwbGUgQXV0aGVudGljYXRvciBmcm9tIERhcHBsZSBTZWN1cml0eSBJbmMuIn0sImRlc2NyaXB0aW9uIjoiRGFwcGxlIEF1dGhlbnRpY2F0b3IgZnJvbSBEYXBwbGUgU2VjdXJpdHkgSW5jLiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX0seyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfc3Vycm9nYXRlIiwiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsic29mdHdhcmUiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiaW50ZXJuYWwiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUM5VENDQXB1Z0F3SUJBZ0lVWDFRWktQenVYbHdxVURQWEtJbXJwYjlVK2ljd0NnWUlLb1pJemowRUF3SXdmekVMTUFrR0ExVUVCaE1DVlZNeEVUQVBCZ05WQkFnTUNFTnZiRzl5WVdSdk1STXdFUVlEVlFRSERBcERaVzUwWlc1dWFXRnNNUjB3R3dZRFZRUUtEQlJFWVhCd2JHVWdVMlZqZFhKcGRIa2dTVzVqTGpFUU1BNEdBMVVFQ3d3SFVtOXZkQ0JEUVRFWE1CVUdBMVVFQXd3T1JHRndjR3hsSUZKdmIzUWdRMEV3SGhjTk1qUXdOakkzTWpJME1UQXlXaGNOTXpRd05qSTFNakkwTVRBeVdqQi9NUXN3Q1FZRFZRUUdFd0pWVXpFUk1BOEdBMVVFQ0F3SVEyOXNiM0poWkc4eEV6QVJCZ05WQkFjTUNrTmxiblJsYm01cFlXd3hIVEFiQmdOVkJBb01GRVJoY0hCc1pTQlRaV04xY21sMGVTQkpibU11TVJBd0RnWURWUVFMREFkU2IyOTBJRU5CTVJjd0ZRWURWUVFEREE1RVlYQndiR1VnVW05dmRDQkRRVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCREpiMktJUVFFbzhkUWllTkIvRFpPT0pITSswNWowVnZiMUVZeFdYN0d1V29sTjJKMVo1YUMwaHdHYndNK3M5MXZMbVJDYnNtaytHRjVkOWtMY3hLa1NqZ2ZRd2dmRXdIUVlEVlIwT0JCWUVGSjhiUnVGNnpJWFlvenlLb2tBZmVSSUV0VWNUTUlHK0JnTlZIU01FZ2JZd2diT0FGSjhiUnVGNnpJWFlvenlLb2tBZmVSSUV0VWNUb1lHRXBJR0JNSDh4Q3pBSkJnTlZCQVlUQWxWVE1SRXdEd1lEVlFRSURBaERiMnh2Y21Ga2J6RVRNQkVHQTFVRUJ3d0tRMlZ1ZEdWdWJtbGhiREVkTUJzR0ExVUVDZ3dVUkdGd2NHeGxJRk5sWTNWeWFYUjVJRWx1WXk0eEVEQU9CZ05WQkFzTUIxSnZiM1FnUTBFeEZ6QVZCZ05WQkFNTURrUmhjSEJzWlNCU2IyOTBJRU5CZ2hSZlZCa28vTzVlWENwUU05Y29pYXVsdjFUNkp6QVBCZ05WSFJNQkFmOEVCVEFEQVFIL01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lEN2xuOVpnTDl1dk1wMC9sS3RLK3IyUjlpcDNPbXlBZ1BmYm1QZFNybFZHQWlFQTN5RTZaa2c0NW9ZRzdOK2dSdU41OTlWM3ZHRzNXejlKVkJmbVJSS2tQVXM9Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUdBQUFBQnVDQVlBQUFEWWtoWklBQUFBQ1hCSVdYTUFBQXNTQUFBTEVnSFMzWDc4QUFBZ0FFbEVRVlI0bk5TOWVYaGI1Wm53L2JObFNaWmtMYllzNzdMbFRkNGRKODVtSnlIT1FqWVNJQUVDbEM2VUZrcVpLVzNmZEtFdGJhRXdUTjhaYUtjYjdaU1dGbHIyaHFVSkVMS1JoTVRPNGlUZUYzbTNaSG1SSld1WExkbk85NGVrRTV2UVR0OU8yNW52dmk1ZmNhUnpudk9jKzM3dWZYSE1sU3RYK0Y4R2hzaFAzWi80M2drMC9abi8vLzhLNHY2bk43QUE3dmE2Zk45TFVDdjBmKzBDRG9lckdaaEtTbEtmQkU0UUpvenpiN1Mvdnd2RS9DL2dBSTNIN1R1cVZDbXFGMzU0cnI2Rk9GRWN4cEljbENvRkgvNXVWVzNsWDdTNHp4dXdCMmRDSHlScVZXOEJiL0svakNELzB3VFFPQnl1bHFRa3RSNWcveXRIZU8vZGVnNi9XeTljc0dWN0xiLzg3WGNCNkd6dlo5K0RUOUxSMWdmQWR4Ni9uM3Z1M1EzQWlHV0MxMTQrakVxdG9Ld3NuOUx5L0dzSUIyRXVTVXBTL3hiNExmOExpUEUvU1FBQitaM3QvVHo2OE04NVc5OENnRmFocEVpWFR2MmdDWURXbnRkUnFoUlVHbS9CN2ZJS0M1U1c1L1BPc2FmcGJPL245dDFmWGZUZHJ0SnErbUtkbEpiblUxTmJ5WmJ0dGRjUXhPRnduVWhLVXYrSU1HZjhqOEQvbEE3UU9PM3VqaVN0T3YzSW9RYjJQZmdrYnBjWHJVS0ozZWZCN3ZOUTcvTlFhekN5Wm1NMVNwV0MvYThjV1lSZ2dIcy9mVE1Bdi83bEc3aGRYcW95RERSWkJ3RTQwSEVSZ0k2MlB2N3c4bUVnVExBSDc5dkxrclZscEdmcVNFcFMxd0YxUG0vQXJraVFmWVV3Vi94RElmWWYvVURDeUcvVGFGWHBBTzF0ZlFKaVA3ZDZzM0NSVnFHa0lqMmJXKys0SG9EM0ZvZ2x2VVlMd0xhYnJ3TVFSRllVK2JVR28zRE5RdWhvNitOZnZ2TkxkcTc3UFBmZC9TajF4eThCb0VpUWFZSGZoRUt6ZnVDUnY5MnIvdGZ3aithQXNOalJxak9qSDl4MTEzWWtyVjdzRGlmT2dFKzQwTzd6OEZMSFdiNng1S3RZTFJOY1BOVXFmTGQzU1EydGNnZXloUGlQNUF3QXM5UCtrUnVJZm43NDNYb21tcTFNaWdMYzg3bmQzUG14N2NnVThUTGd1ejV2NEovL1VSenhqK1FBamRQdWJrdEtVdXYzdjNLRU8zWi9sU09IR3RDbGE5bnhoYTE0Z3RNYzdXbGRkTU90dDRkUC84SDlKOURLRTlBcWxPZzFXcDQ2ZVpEYjd0Z0N3R3NSOFFKaHp0aFJzbFRRSFI4Rm13ckwyVlJZRG9RNXhtSWU1M3NQLzRKVlMrL2laejk0Q2JqS0VXNkhwNTJ3VC9KM2czK1VFdFk0YmE0ZWpVNmR2UCtWSSt4NzhFa0FWT29FM243bkorZ0xNbmp5NFY5Uk1hWGg4YU92SXhOTHFEVVkrZUt6LzBSaWlwcTF5ei9KNXJSaW1rYUdhTElPa3FWUDVYVGo4NHhZSmxoVC9ZbEZEM3A0OHg2ZWF6eDVEUWZzS3EwbVNaNUF3NUFKazIzMEl6ZXBWU2dwTFRSdzh6MWJ1U1ZDZkFDUDIvZC9sU3JGUTM5am5BRC9HQTdRT0J5dUZvMU9uWHo4UUlPQWZBQzN5OHNQSG42V2dHK2F6MzN0VGs2NCs1Z25qS3laTkFtSktXcU9IR3JBWWg3bnR4ZE9Dakwrem85dEIrQ2RsOTYvNW1HUEgzMzlJOFhQZ1k2THZOYmNnTjNuK1VqOUFHR3g5MEZUSy8vNTJBdmM5N0h2TW1hZEJFQ3BVbnc5NEo4MjhYZmdocjgzQVRUT0NWZGZVcEphLys0YnA3am5zNDhzK3ZLdVpXdFpMYy9tMzcvL1c1UXFCWjk4NkRabVJmTW84NVBZZXZ0NllMR0lpY0xlTzhQaTUvVlhqL3pKQjJzVlNrSFVSTUVmQ2tKTVRQamZEOEZDb3N4ZnVjTGhZMmQ1NEpidjhPd3pid0FnazhjWEJvT2hUdURtditURi8xTDRleElnZlBKVDFFbjdYemxDNzB2TmFCVktBS295RE9nMVdqd3pBVFF5T2MvKzhnMk9IR3FncEN5UGN4MHZjL2UvM2tYZDlTdnd1SDBNTmc0SUN6NVF1NFVmUFBBNWRPbGFXczUwMERsczVvSGFMUi81OEszR0pTZ2s4ZGQ4YnZkNWhEMUVRUzZXWUVoTUFjQ29TMGN1bGdCd3FiK1A3ejM4Qys3WS9WVUMzbWtrRW5FODhJYmI1ZjIvZndzRXdkK1BBQnFYemRXYmxLVFduemg0bG0vdit6RlBuVHlJM2VlaExyK1V6OWRlajlscDU0L3RGM244Nk9zQTdIdndTVHh1MzZKRnp0YTNMRUpVL2FBSlNYa1NBRDk5NWpVQVJMR3hmUGY2V3dYaVJxRjFiQWhmY1Bvak4yZjNlV2l5RGdvYzRnOEYrV0NnRTRCa2haS1cwV0VnekVWeXNZU3o5UzJzV25ZWHZWMURBS2pVQ1Y4TCtLZGYrdThnS0FwL0R3Sm9IQTVYaTFxbjFqWWRhMlg0dFhiMlZ0VUlYL1pPanZINDBkZTVwWElWSDF1MlZwRFg2aGdweDk0N3UyaWhzZjV4emd5WjJMZCtKMXFGa243ZkpEdHZxV04weENiWS9obXFSTkpWR3VIVTZqVmFqTHAwK2liSE9kYlRKcXdWL1Q0S3RRWWp4M3JhQkc2TVF2Y0NCWjJicENORG5jUm5WMjNnNW9KbG5IcjhQUTd1UHdHQVRCNS9oOGZsdXdSby9qdkkrbHY3QVJxbnpkV1R0TURhK2ZESnpFNU1wbjdReEYzTDFxS0tsd3VmcjhzdHdYU3VCMjdiSkh5MmFkbFNubzk3ZzBCRVprZk4wZ04vdUtwOHYvSE90UWZ4bzZ5Y3Frd0RNckZFSUVxM2JaUmFnMUV3V1IrbzNjTFQ5WWZESVpDSW1CcHcyQUJvSFRYVGF4OUhLMCtBcG5wQ2dTQzdQNzRGcFZxeE5PQ2JicFFwNHBmelY4YVYvcFljSUZnN0M1Ri8rNUx3NlYrVlhZQmVveFZPMkRQbmp2UFV5WVBDelkyV1BqWmtsU3hhOEVxV2pKN0pNWjZ1UDR6ZDV4RnMvNzdUUFl1dTI3ZCtKMTlhdDROYWd4R3owODZlaXBYc0tnMEhWLzlwelJaV1pSZFFQMmlpTnNkSVlYS2FjSjgvZUZVWmozdGQ2RFhhUlQ1RU5DeXlORE9YdXZ4UzdINHZKdHNvWDk3M0ZFOTg0eGNBeUJUeCtYN2Y5QVgrU2s3NFd4RkE0NXgwZFVXZHJIMFBQb2xlbzJWbnlUTGhnZzBGWlh5dVpqT2ZXNzJadTFlc0YxNHVDbmEvbDFIUDRrT1VtWlhDclJHa2I2eFpSa2xaSGhmT3RtRWVIaE91MFd1MHBDU29hQmd5Q2FmYU5lM0hxRXRuVTJFNTU0YjdhSTNJOU1lT3ZrN1BaUGplcUI2SXdvbStqa1g3K2M5Yjd4VisvMFhERWZhM25GdjB2Ykl2eExOUHZBeUFYQkZmTUQ1bWYvNnZRWnpva1VjZStXdnVXd2dhaDhQVmtxaFZad3pXOS9IMUwvMEE5M1FBb3k2RFFsMGFQejN6SGsvdCtnU3ZORFVnaVl2amVHODdsMFlHQkxrYkE0VG01d2lFZ2hRdHpXZjFocVVBakhXT2txQlRVck5tQ1gyOVp2N3RzUWVSYVJYODhOOS94M3VuendzUHowblUwVHc2ek9XUkFRS2hJUDVRa1BZeEN3MURKbWJuNXhpZXNuMmsyUm1GV29PUmZldDNFaDhuWmxWMklZMldmZ0NrY1dKMkZDOUZHaGZINEpUdFdzVEZ4bEFXcThNeU1VbEJkUjRKQ2ZJaW55K1FMcEdJRDE1ejhaK0IveTRCaEpEeStmY3UwZkNyMCt3cXJhWnJ3a3EvZlp6T0NTdEZ1Z3dBK3V6ak5GbUhtTDh5ajFJYXoxZnFkakU5TzB0d2JoYTczOHU2M0JLKzl0M1BJTmNxMkxQMWk5VHZQNHZGNldCdDNUSjIzVnlIVEJzT0pkOTM5Nk9DZUpGTHBQelRtcTBrU09LNVlPNURxMUN5dTN3RmwwYkNwcXQ3T2tCb2Z1NGpONzV2L1U0YWhzTGlwbUhJUkpmTnlrVnpuM0Q5aE5kTjA4Z2dpWElGWnFkZEVHKzFCaU4zTFZ2SDRKU05RbDA2My9yTmI5bXdiQ2s2Z3c2SlJMd2NHT0wvSVVYNjN4RkJBdklQN2ovQjJ6OCt4T25CTGw1dGJxRFdZS1RHWUF5TEdiK0h6b2tSVExaUjVHSUpXcmtTUjhESDhaNDJ6Z3gwWVlsWVFlYnBLWktOS1ZqN3graHE3K2Vtc2hYRVhYRFMyM3pWRHpnWHlSZDAyNndFUWtITVRqdGZldXM1bnE0UE8ydUI0QXlONW42MENpVkdYZnBIYnJyV1lBUmd3REhCdnZVN0JjL1k3dk1zNHBSaVhRYkdsUERoMlZCUVJybzZFUWpyamU4ZmY1UDZRUk90bzJiVzVCYXo0L1l2TWRnV0ZuUEI2ZEF6UU5WZmlzUy9sZ01FNU85LzVRaVBmZjNubUNaSDZSd2ZZWForRHBsWXd1emNIRmthTFcxalp1SGtwQ2sxN0NxcjVtREhSZHJITGNRQVdSb3R0WVlpMml4RDVHcFQrZkhUTDlNellHSFU3U1JCS3NWMHJwY2xXeXVSU2lWb2s5UjB2OVBPSFV0clVVaWtORm1IRm0wcU5EL0htTWZKcDFmVXNhMjRpanh0S2hmTWZkZHN2anhOajBJU1QyVkdOcDBUVml3dUIzcU5OcHlQOEljanF6VUdJNU0rRCtlSGU5bFJ2SlIwcFlZemc5MkU1dWVRUzZUc0txM0c0cHpFRzV6QjZwN2k5YmZlNTlQMzNJUlVMbzMxdW4zYkpGTEpqLzVlQkZpRS9IMFBQa2tnRkJSTXhSWDZmRzZyWEUxMllqTFRzeUZCQVVabDgwTGJQRFEvQnpFeFlmWjIyYW1UNXRMVk8wUy9ZNEl4ajVNbTZ4QUR0Z25HZThiWmVHTXRZa2tjNlc0cDcxNW81S1hMWjRDcnNYK2pMcDN5TkQwbTJ5aTdLMVl5RmZCeDN0ekhzSE55MGVaVEV0U3N6eStsWjNJVXNTaU9FZmNVeTdQeXVHVHBYeVN5eGp3dW5BRS9nVkNRNi9KS2VQYkNDZVFTS1hhZmgxWFpCUXc1N1Z5MDlGT1Ntc24yNGlwTzkzYlNlS0dEVysvWWdrUXEwYmdtM1pwNHVmUzl2elVCTkZPVDdvNGtyVHF6NDBRSC8vbllDK2cxV3ZRYUxScVpuSlhaQmFobGNzNE1kREYzWlo2VUJMVWdaNk1FMGlxVUpDdVV1S2NENkRWYUh0MTZHNzg2ZHh5ejAwNnpkWWpxckZ5Nko2emthbE1JaElLNHB3TzBkUGRCVEF5cmF5dVpUNWJ3NWt0SDJGSlVpVXdzUVNXVjBUSm1wbjNNZ3NrMkdqbVpkcHBIQnprNzFIUE5Demo4WG5ydDQ1aHNvNGhGSXU1YnZZbDhiU3E5OW5GR1hBNXFJNkl6SlVGTlRtSXlWUmtHSnYwZUhxamRnbHdpb2NrNnhPQ1VEV2xjSE83cEFNdXljakVrNmpqWjMwbkE0VWNkTDZkOHVaRjR1WFExOEJZd2RzMG0va29DYUtZYzd0WkVyU3B6L3l0SCtEOFBQb25kNzBVYUowWWprM04ycUJlVGJSVDNkSUIrK3pnWHpQMDBESm1RaXlYY3ZiS09GZnA4TGxyNmtZc2xKRWhsT1B4ZThwSlNhVFQzQzQ2VGV6cEFyY0ZJcmNISXp0SnFHaU9uRXNKaGlabzFTeWhkVWtCc1RDeGRsL29vVEU3akNpd1NNeWJiS0VXNkRFcFRzN2hnN3VPTDYzYXdOcmVJaG9oSDNXd2Q1T1BMMXFHS2w5Rm83bVBjNnlKVGxVVGJ1RVZBYWxGS0JxbEtOU2Y2T29UMXpnLzNjZFRVSW5ESXRxSXFaQklKYVVvTkovcmFtYnR5QmJ2UGc4WWVTKzJPRlVqa0Vod09WNDFNRnYrTFA0ZlV2MVFKYTZiczdvN0VKRlhXa2JkT3MrL0JKN2w5U1ExMm53ZFJUQ3czbFMwWExqUTc3Znpyamp0Wm0xc01nRXdpcFRJOUIyTnlPcHNMSzZqS05IRFB5ZzBBWEpkZnd1Nks1WXU4NWE0Skt3NmZkMUZNUDZwUUgvenNFL2c4Zm5aL2RodkZ5L0o1dXY0d0x6ZGRtNm8wTyszNFF6TUFUQVY4aUdMRHIvblV5WVA0UTBFbS9SN2tZaW4rVUpENlFSUHY5N1V6NnA0aVRha0pLK05na0lxMGJHSGRBeDBYMGNqaytFTkI5cTNmeWRjMjNFakRrSW1PTVF0TjFpR3FzL0pabjFlQ1hDd2hYaXltNC9lTkFDUWxxWmNBZC84NXhQNGxIS0J4Mmx3OWljbnExS1pqcmZ6ODBkL2hDd1h4aDJiQ0tjUVlrSWtsZ2tLVWl5VWt5aE1ZZFUrUmtxQm1lM0VWa3o0M2MxZm1TVk5wT0RmVXc5bWhIcFR4Y202dFhNWHcxQ1FPdjVmWksvTThVTHVGdktRVVN0T3ltUEM2NlJ3ZlFhL1I4dERHbXpEWlJ0bVlXMHFpUzBUbWFnTkZxd3VKNy9MVE16NUtJQlJFcjlIeThPWTlIT3k0eExxOFl0NXN2VUJvZm81bTZ4Qm5CcnVCc0w3STE2WnlkcmdYczhzdStDQkZLUmxZWFE2bXB2MjRwd05rYVpMWTMzS09uYVhMQk82VXhvbVp1ektQeVRaS2VWbzI1NGQ3Y2M4RXVILzFackkwV2w2NGZJYlVCRFVwQ1dyR1JtekVwU3JJeWszRDd3bHNFRXZGMy85ckNhQnhUcnE3TkRwMVNzTzdqZHoyaVljWWR0cFpucFhQN1B3ODN1QU1ZeDRuQ2RKNEhsaXpsYU05cmFoa2NuSVNrMGxKVUdQenVqblFjWkV4ajVOenc3MFlkZW0walZ1d09PMTRwZ080cGdOc0xxeWdjMklFdVZoS2FINldGeStkcHRIU0w4anZOS1dHM3NsUk5ESUZzL1B6bkczcndEN25aM1Z0SlRGcDhUei91NE5oODFhaERJczhpWlM3VjlRUkx4YlRObVplOURKMm40Y1JsNE84cEZUSzAvU29aWExNVGp0VEFaK2diN1FLSmRXWmViU1BXMWlhWWVCVEs5WnpZOWx5Wm1abjZiT1BzN0dnSE9lMGo5MFZLMm15RHBHVHBPUGNjQzlmV0x1Vm1kbForaDNqYU9JVnREWDNjUDNlNnhCTHhmSDhHZC9nenhGQThIRGZmZU1VSi8vemZjd3VCNEZRa0NVWk9aem9heWNRQ3FKVktKbjB1bW15RHFLT2wzUFB5ZzJNZWFab3RnN1JQbTRCWUhmNVNwcXRnM1RiUnJtbFlxVWdzNGVuSmtsV3FEalcwNHJaWldkellRWGROaXNKVWhuRktSbXN6UzFpeEJWZWEzREtoc2syeW9CamdwUEhHOWw5ODBiS3Fnb2hKb1lVbDRSUFZLL2p1Y2FURVQxU3hBVnozeldac1c5dnVZWHI4a3A0cyswQ2FwbGNpUHNFUWtGQnRoZnBNcGp3dWZET1ROTmtIV0xVN1dScHBvSEM1RFM4d1dsS1U3UG9pU2p3Um5NZlBaTmpqSHVjck0wcndUVWRvTms2eEFjRFhXelVseENqRnFNdnlNRHY5bThXUzhYLyt2OUNnRVdtNXN2Ly9nYitVSkFCK3dTaCtibEYwY2JicTJyd0JHY29Uc25BUFIwZ05pYUc5bkhMb211YXJVT0U1dWVJQVhLMUtjek1oZ1I3KzdPck50SXhidUgrbXV2NXdhbTNxYzdLWTJmcE1sNjRkSnJnM0t3UXU0bUNYcU1sTHltVjM3OStpTnZ1Mk1MNkRjdjV6UnZ2OEl2MzNoV3VPZGJUSmlELzI1djNNRHMvaDkzbklSQUtrcDJvNDJoUEsyYW5uYjFMYWdqTnp3bDdBYmgzOVVaVThYS0NzMkdmWXNMcjVvSzVqOW41ZWM0TW1tZzA5NUdtMHZCcWN3UFg1WmN3NW5GaDkzdnB0NDl6eE5UQzk3YnVwU3hOenp0ZGx3bU8rYW03cFJheFZDemhUM0RCUnhIZ0dqdC9SOGxTUmx3T2RsZXN4T0t5QzVaSkdHSm9HUjNDN3ZkaWNkcnBuQmpoMjlmZndxSHVadUdLcWd3RG9mazUzTk1CRElrNk5oV1dNZVp4UVV3TVExT1R6TXlHU0ZZb3VUd3l5TEJ6a2xQOTRlVElyckpxYnE1WVNldVltVUFvU0ZXR2dmSTBQY3V5Y25tdjVUSjl2V1oyM1Z6SDFoMXJlT0g1dDZuSktrQWpVekMySUtnMzRKaWdLc09BemVlbWRjeE0yN2laLzdqcFU1aHNvNXpxNytTSkhYZGlzb1gxeUlyc2ZOckhMSGhtQXZoblE5VGxsOUkrYmlFUUN1SU5UalBtY1NLWFNDbFAxVFBtZGJFK3J4VDNkQUNSU01RM050N0U2cHhDTG84TU1CWHc4MEYvSjBYcU5QSnpNMG5NMXVLZThxeVF5cVEvK0s4SW9ISGEzVzJKV25YV3d1cUZ6bkVMYVNvTmEzT0xPTkIrVVdEWHFnd0RSbDI2c01rb3FPTGxqSGxkSkN1VXJNOHI1ZmFxR3FSeFlsWmxGM0NrcDVYM3VwdXgrNzNFQUhjdVhjUGxrVUZPOUhVSTkvL0w5anZZYkt3Z1haWEk2WUV1WW9saHpPTmtoVDZmUHNjRWZmWnhKcnd1U2lVcHBDWW5ZcWpJWVZsMUNTY09uaVZUbllUSk5zcW13bklHSEJPNHB3TzBqZzd6eFhYYlVjZkxLVXJKSUNWQnpYdW1GcElVU21abWc5eFd1WnJRL0R3eXNZUmJLbGNoRTB2eFRQdkpTZFFKNG5KUHhVcnNmaTlqSGlmdDR4YmtFaW1uK2pzUmkwUnNLaXhIcjlHaWtFajU1Ym5qRERnbUlqckZUMDFTSHZwMWVVaGxVaFZ3RWhqOFV3VFFlRjIrSmxXaVVuLzZuUXZjZi8valFKamw3WDR2WnFlZDNLUVVKdjBlN1A1d0dXR0NOSjVsbWJrMERKbllWVnJOL0pVckVhU1hzTnBnUkNPVDAyTWI0NUpsZ0V4MUVxdXlDN2c4TW9CQ0l1WGVWWnRvSDdkd3hOUkNlWnFlR29NUmRYelkxQXVFZ3Z6cTNIRU9tMXJvbVJ4RExCS3hyYWlLTjlyT00rRjFrYUZLNU5HdHR5RVdpWGp3Uno5ajY0NDFWRlVYNDVoeTgvSzd4d2pOejdHOXVJcitDQ0lBZEFrcVZQRXlOUEZ5WG0xdXdPSzBvNHFYc3p3cmp5YnJFQW1TZUxZWFYvSGowKy95VHVkbEJxZHNBdkpyRFVic2ZpOFBydDFPMTRTVm1KZ1lJS3d2dGhpWFlKNXlVSkthd2REVUpEZVVMR1hNNDhRZkNqTG1jWEtpdFpXOXV6Y2pVOHVZbW5DbXlCVHhMMzRrQVh5ZXdJOFNWUEpOamg0YnozNzNSZGJubGRBK1p1YXJHMjZpMDJiRmtLaWphWFFJaVVpRTNlK2wxbUJFcDFCaDkzdXBTTTltZTNFVjcvZTJNK0NZb05IY1IyVjZEc2Q3MnhDTDRxakt6T0hWcGdiY013RUdwbXdzMStkUmxKTE8zUHc4dlpOam1KMTIyc2NzK0VOQjdENFBBNDRKSU93MXh3QkZLUm1MUk5xWXgwbFpxcDRYTDU5R0hTL25qKytjNHJZN3RyQm1VelZ0OVYzMERvOXd3ZHduZU53UDFHN0JHZkJSbFpsTGFHNk9iRTB5Rjh4OWVLWUR0SStaY1UwSFNGSWswRGx1NWR6d1ZlKzUxbURFSHdyeW1aVWJlS1dwSG1KaXVDNnZtTTJGRlJRbXB6SHVkZEpuSDZkQWwwcHdicGIyTVF1ejgvTnNMQ2huU1VZTzNwa0F2WlBqSkVybExGOWZTVnljS0VjVUozcDhJUUdpaFZrR1lNRGo5dkgxai84ckhwdVhxWUNQdUpoWVNsSXp1R2daSUZtaHBEb3JqL0ZJakVhdjBWS1dxc2NaOFBHSGxuQXU5OE54OTcxTGFraFdLTWxKVEdiQzU2RjVaSkNOaGVWQ2dsNnJVS0tWSjJDeWpXTFVwV054MmxtWlhZQXo0S2ZKT29oZW84VWZDbEtWa1lQWmFWK2syS05PMTQxbHkvblptZmVFTW5hclpZTGRXeDVrZTE3bEltVWNoVjJsMVhUYnJNSmEwVnl4VVplQnlXWmQ5QTVhaFpKQWNJYTlWVFVvSkZMKzJINlJJbDNZUzM3aDBtbmhlNWxFQ2lDODAvKzU3Z2FTSTg1bG83bWZJOFB0bkdoNkxycnNiaFpVWTRzZWVlUVJuQTczcy9FeWFja0x6NzlONDdFV3RoWlZDcWU1YmN3c2lLRHp3NzFvWkFyVzU1ZndWbHNqcHdlN2FSNE5XemhSdmJBdXI0VGhxWEFBckNRMWsrY2FUM0cwcHhXVGJaUUVpWlFwdncrVHpTcEVGWlBsU2dwMTZTUkk0eGwxVHhFdkZwT1RxQlBDR29GUU1LeElNdzBDWndETXpzMEpJV24zZEFEbnFKUENQRDJWSzRySkw5RHoxaHNucnNrTmF4Vkt4Q0lSb3BoWVFWRkg5NTZtMUdEM2V4YmxEN1R5Qks3TEx5RkRsVWdnR0dKTmJqaG9PSC9sQ3NzeWN4bnpPQW1FZ3F6T0tlVFd5dFdjSCs3bHdiWGJ1VFRTanljWTRQeHdMOW1KT3Q1cHUwaFpSUUg1QlhwY1V4NUp2RXo2NmlJQ2lHSmpmeWVLRTRtKzliV2YwTm8zd0tuK1RzSEdqd0ZVTWptN1NxdHBIN2RRbkpKSmFXb1cvdG1RZ09pRlVKdGpwTjgrVGxtYW5wblpFTkk0TVRFeE1ZSVRGSWdVUndWQ1FUNVpmUjB4TWJBaHZ3eGx2SXlocVVrVWtuakJDbG9JSDY5ZUs0U3dWVEk1YTNPTDZSZ2ZRU3lLWTJtbUlYd3lYUkxVeGNrc1dWR01hV1NFeXhlN0ZxMXhlMVVOYTNPTGVlSFNhVlpsRi9EUXhwdXcrZHlVcEdiU01HVGkwVzE3QmFJQ2ZQRzY3UmgxR1dTb0VqazkyTVZ6amFjWWNFeGdzbzN5c1dWclNWT3FzYmdjM0ZpMkhLMDhnWFY1Slh3dzBFbDhuSVJSdDVQT2lSRlNsUnAybFMzajdFZ2ZXN2JYSW9xTkxSREZpUjViU0lBcVVaem9BWS9ieC9lKy9RdXFNZ3lvNG1YWS9WNzBHaTN1NlVENFp5YjhiNXBTemNIT3l3eFAyVDR5MjJSSTBsR1ZhZURTeUFCWGdBZlhiY2VRcUVPdjBkSStidUdoalRkVG5wYkZKY3NBZHl5dHBXVjBtTmJSWVU3MWR6TG1jUzR5SVJkQ3YzMmNXeXBXc2ExNENlOTBYaGI4QTdsRWlsNmo1WUtsbjlPOW5Sdy9mWkU5dDJ4aTg3YlZGSG5Wdk4xNEFiMUd5OGVYcmVOUWR6UGpIaWRtcDUzcDJSQ2o3aW5tcjh3ek1EV0pKbDZPVWhwUHcxQ1BvTGpieDh5bzR4VTgxM2lTM0tRVUVxVHg1R3ZUU0pJbmNLaTdHVWZBeDY3U2FwNDVlNHpaK1hsbTVrSzgzWEdKL09RMFNsSXlPZFRkVEZWbURuS3hsSGVhTG5MUGZic1J4WWxFTElpU2loNTU1SkhWd0IwdGwwMDBIMnVsZmR6Qzdvb1Z4TWFLYUIwZEZwRHNuZzV3NzZwTjZCSlVERTlOTG5KZW9pQVhTMWlmWDBxR0twRkdTejh4d010TjlUUU1tUVN2MkRzenpVWExBUG5KcVR4ejdqZ1RYaGZiaXF2NG9MOUxXRU1sa3hNRHBLazB1S2NEL01kTm44THU5L0pxY3dNcENXb2VYTGVkZ3gzaDJ2Nm9pSXJtSk9aOXN3eFlSdG15dlpha2toUmVmdWtRUG44QVNWd2N1Z1FWMjRxck9OYlRKcHgwcTNzS3ozU0FMY1lsMU9XWEVnZ0Z1WGYxSmdLaEdaWmtHSGp4OG1sMmxsUlRrcHFKMHg4Z1daR0FYQ0pGcTBqZzQ4dldraWhYMEQwNVJxWXFrZWNiVHhHYW42TXNMWXVwZ0kvT2lSR1c2L1BKVkNjaG5ZdGwyWFdWeU5ReWdISENUWVNJSG5ua2tUdUFPckZ2bmxSekRCM2pGaXd1Qi8zMjhXdE8rSFg1SmVnMXljVEhTWmlaQzExRGhNM0dDdFlZaXFnZjZzWWZuT0doalRmUmJCMFNZdjk1U2FuTXpNM1NOVEdDMldsSHI5SHk3ZXR2NGZuR1U4ek96U0VXaVFRek5EUS9oMWdVUnlBVTVGQjNzeUQvM1RNQjJzY3MxM0NLVVpjT01URlVaZVR3OXFrR2xwVWFLVmxXUUVGaE5xL3ZQOGJnbEEzM1RBQzVXQ0ljaG9YM2RrVFNwbzNtUGdxVDB4bWVta1FqVTlBK2JzSHFtV0tOd2NqdkwzMUFrM1ZJU1A1cjVVcW1BajZzYmdlRFV6WnVyNnJsdXJ3UzRzVVNwa01oeHJ3dVZ1a0xhQmtkWm5CcWtzcXlBdElMMDVpYWRPbGs4dmlub3dTb0ErcDYrczE4NWQrZlprL0ZTdksxcWRRUFhhMlBpVG8xQ29rVXVVVEN1ZUVlQ3JScGdwSjdvSFlMYVVvTnVVa3BxR1VLeWxLek9ON2J4Z1Z6SCtNZUo1OWNmaDJyY3dyNVE4czVDcEpUQlJrckZzV3hKQ09iaXlPRHhNVEVvSkxLRU1mRmtheFFVcDZtRjh6QWhZU2VuWnZEUHhzbWtsR1hMbnhuOTNzRmJnQTRkdUlDZFJ0WHNLcTJFb3RsZ282MlBnS2g0RWNpZjkvNm5iemEzTUNZeDRsS0ppYzJKaVljenlrc0p4Q2FZZEJoNC8zZWRrTHpjK0dFVW9JSzc4dzBoMDB0ZkhwRkhSM2pGckxVV2c1MU4rT2FEdUNibVVZVkx5TmZtMFpSU2dhcWVEbnhZakVEVGh2cnRxMGdWaFNyam91WW93SUJob1pHZWY1M0IzRUdmRlJuNVNHTkU1T3Axbko3VlEzdmRqY1RDQVZSeDh2WlVsVEpGV0o0dGJsQmVJbW83TDVzSGVSVWZ5ZWRFeVAwVEk1aDkzc0p6YytScVU1Q0hTL243RkFQL2xDUTdjVlZLS1JTRElrNlZtY1g4a0ZFL3VkcHcxSEthQ0RON3ZjeTduR1NwdEl3T3pjbldDekpDaVY1U2FuWHhIRVd3c3hNRVArd20vWGJWN0o1OHlyYXozVXhhRmtjVi9yUFcrL2x0ZVlHWnVmbjBXdTBnaWlMRW5IVVBjVm1ZeVZKY2dWOTluRWc3SHdsU0tXczFCY2dsMGdZYzdzb1NFN2pncm1QR09ETDErMGdUYVZCcjlGeXNxK0Q1ZnA4WnVmbkdIRFlTQkJKV2Jkbk5YRnhvamdpZXVDYTBzVFZPWVhrSkNiVE5tYW1ORFdMN01Sa0FzRndjcVBKT29qWjZVQVRLU25jdDM1bk9Eb1pzVnEwOGdRQ29TQks2ZFdxWktNdW5lTTliY1RIU2FqS01MQ3BzRnhJd0xTT0RuT3NwMVZJYTA3NlBBTG5oYXVVcFppZGRxb2lOcjgvV2tIaHRQL0pGcVFveU1VU2ZGWVh2L3JSYTN6aG01L2dhMC9jeDhCZGo2S0ppUmZzL2MvOTRSa2duSENKVmtzc0JMUFR6bEZUQzVucUpPR3pUWVhsaUdKanlVMUtJVk9keU9OSDMwQ3JVUExWdWwxNFoyYjQzY1ZUNUNUcUNNeUdjRTc3c2JxbkdKcXk4VWJiZVphNzh2QjRmQ2lWQ2dqN1hrMENCNHlZeC9uREswZm9uUndqT0RkTHc2Q0pFMzBkdk52VnRFZ1hYTEwwYzlIU1QyaCtqb1loRTlJNE1YR3hzZXl1V0NsVVFFU1JzemEzaVB0cnJtZDJmcDdLOUd6cWgweGNzUFJ6dktlVmx0RmhGQklwRnBkRDhJSURvU0NCNEl6QU5Yc3FWM0tpcjBPdzlhT2cxMmdwVDlOajFLV1RydElJOTBJNFBuWHZxbzJZSmtlNVBESkl3N2tXeWlvS1dGVmJTV2E2anZiNkxtNG9YVVpLZ2tvUVc5RTE3VDRQdDFTdXdoVkp6QURjV0ZiTkJ3UGQxQnFNRERnbU1DUWxNemMvVDdOMWlFUGR6YmluQTVTbjZWbVZYVUJ3YmhhSDMwZTZLcEZNVlNKcW1aeWZubmtQcFRRZXM5UE9OemZ0SnJNeUsxcmoxQTJjaUwzNlVzbkl4Ukw4b1NEVGtYRHgza2hkWnpQV21kSUFBQ0FBU1VSQlZLM0JpRndzSVV1ZHhNcnNBdlpXMWZLdFRlRUdhYTBpZ2V6RVpINXkraEJWR1FZMkYxYnc3ZXYzQURBME5jbnBnVzRPZEZ6RUY1eEJKcFpnOTNuSTBtaFpucFZIUlhxMlFLeG8yVjgwN1RmaW5tSi95emtnekdrZmh2cEJFOGQ2MnFnZk5DMHFHVFM3N0R6N29SYWxmUTgreVlobGd1dHZXa3ZHYWdQdmRUZmo4SHNGem82dUp4TkxpSWxaM09CM3JLZU5MY1lLOWk2cGlRVGM0am5SMThFZjJ4dXB5VEh5MUkyZjRQYXFHdnJ0RTB6NlBFakZZczRQOTVLaFNtSjFkdUdpZXRPM095L2hHQTZ2UFc2ZDNBWUxjc0x6VithRmg4ckZVdVJpQ1huYUZIYVZWcE9sMWlLVFNKRkxwUFJPam5HZ3ZaSG5MNTVhdEVtQXpva1JCcVpzaE9ibVdKdGJqTjNud1Jud3NtLzlUb0p6czBLVm5OM3ZwV1Bjd3JuaFhnQ0IwSHExbGxxRGtmWXhDM2FmUjZqVC8zbjk0aTZaRFFWbFFQaTBmN2o2MnU3emtMT2czUHp1RmVzcFQ4emdxL2YvR3dEZmZleCs0bExEeVppeU5EMTNyNmk3V3FJZUU0TjNaZ2FqTHAzbCtxc0hKRW1lZ0M4NHc4T2I5NkNLbHduaXFzazZTT3ZvTUY4NThIdWVPbm1RME53czF4ZFdvSkVwYUxJT3NyLzEzQ0ppeHNXS2FHZ0pSMzFqNDBRSnNFQUpkL1lPOHRacnh4R0xSTFNQVzloYXZJU3lORDNkTml0L2JMOUlJR0tON0NxcnhoY0s4dFc2WFZ5MkR1SHdld1YyTFU3SllIMWVDWVhKNll5NDdMU05XZkNGZ3F6VTUvUHNoUk0wV1FjanlMNkNOemlEVnA2QTNlOFZMSk5vRkxFd09ZMmhCWTVlMVBxSTVuQ2JJL25uYUNqZ3c3RHdwWnVzUStILysrZVlzRSt4YWV0cWxpMHZZZkRzQUMzbVFRcVNVK20yV2JIN1BNek96VEhtZFdGeDJrbEpVSk1nRGRjQkRVOU44bmJuSmNyUzlPUnBVM212dTRVRWFUeDJ2NWR0UlZXMGpnMEwrN2dDVEhoZHZONTZYbERtY3JHRW5DUWR4U2taTkZoNnVQV09MU2dVc2hUZzBVVktlRlZPSVMzV0lmeWhJTTNXSVJxR2VwQ0xKVUlIdWw2anBYM013aGZXYktYUk1vQXhPUTJkUW9VLzFNYTNOKy9oNmZyRGpIdGN5TVFTL3RnZTdsUWZjZHA1TE5JRkl4ZExxTXpJd2FoTDUvR2pyd3ZCcTRWakNldytENnA0MlRWQnNkeWtGR0lJZTZkL3J0ZzJDcHNLeTJrWU5BblhtcDEyZnZIejE2aGVYY2IxMjJxNCtiTmJ1Zkt6V1Y2NlhML29QbjhvS05TQjZqVUd0aGRYVWFoTEp6UTN4MjhhVDJKTVRxTWprbXZlV3J3RVVXeU1JQUliemYxMGpGbUVkbHF0WEVsMllqSys0RFI3bDlUd1d2Tlo5SVhKaTU0bmNFQndhcG9VYzlqMGlpcTlhS0o2ek9QRXFFdm5vWTAzOFY1M000ZTZtNmxNejJiUVllUE1RQmV6YzNOQURQTlg1cG03TXMrN1hVM0VBTi9kZWl2Tm8xZFB4MTNWYThuWHB2S0g1ck1rU09NaEpvWmRwY3Rvc2c2eFVsOUFmK1RFZkxqa01GbWh4QmVjWnNMbkZzelJoWEJqV1RnWDRWaGdrcXJqNVpoZDExcEt2WmY2MkhialdsYXNxY0RVT2NURjFpNnFNZ3lMSER1ejAwNTVtcDRKcnd0bklNQTduWmZESm1wd2hneFZFdDIyVVVMemMxU201ekEzUDQ4cVhzYTR4OGxYTnV6aXh0SnFxakp6QVVpUWhzTWtEVU1tVWhKVU9LZjlyRTQwVUhHelVEcjZuRUNBSys0UXYvck5tOHpPenpQaGRSR2FuK1A3TjN5TURIVVN6ZFp3eXJFNXdzNkJTTEloUzZNbFJhbW1ORFdMQXgwWEdYRTVtSjJmWTJsVkVZbkphakxqMUxTUFcvQkVSSlEvRk1RWjhBc3B4a0J3aHVuWldXNG9YY2I2L0ZKaWlNRmtHMFd2MGJLNXNJSUpuMXM0Qk5FRGthdE51Y2IyTnp2dGxLUm1FaWNTNGZDSFowYlkvUjdjMHdIQmlZekNwTXZONmROTjNQV3BHMWhXVzg0ZjMzZ2YwOGdJZTVmVUNLS3cxbUNrMnpiS29NT0dlOXFQVENKbHpPTWtockNJaWRhUXRvOWJ1R0R1WTAvRlN0VHhjcHF0UTJTb0U0bUxqZVdWcGdZc0xnZW4ranR4VHdjWWNUbVk4THJZV3JTRWdodEtvOXQ1UzFEQ0F3NGJCem91TGtvTnlzVVNoaU8xOGN2MWVZdmFQczFPTzlWWmVXd3NLQk1HWXdEc3FWakZEMzc1RUQvNTFiZElWMmxJVjZvQjJGSlVpY2syU3E0MmhZOHRYU05VSTR0aVloR0xSTHpjVk0reFNLZDhWQUZyNVFuWG5PQ0ZSV0JSOEllQ25PanJJQ0hTRlJuMlY4S252K3NqMnBVNjJ2cjQ1WTllUmFHVThjeHpqd0FJVmQzbDZkbXN6QzdnaHBLbFZLVHJxZGJuYzBkVkxSQXVNalBaUnRsY1dDR3NWWjZlVFhaaU1wNlpBTE1SODlUc3RIUDM4dlhDTlhYNXBhelE1N011cjFob1NveUNRSURadVZuaHd4cURrUzFGbFhSTldLbEl6NllxdzhDcTdFTHNQaTl5c1VUb1B2bis4VGQ1OVBBZkZpMW96TXBFbGlSbjNoWGtkSDhYSFdNVzlxM2ZTYlFoLzQzVzgvaURNOXdZUVdTVGRaQi9mLzhBNy9lMkMvTGFId3JTT3prbTFIcEdMUjJ0UXNrUlU2dncrNGVkcDRVZEwxRzR2ckQ4bWdZOWdOWTNtMmhwN0tLa0xJL3ZQSDQvQUxsSjRWYlYvUzNuR0hVN3lkWWswekZ1NFkvdDRVcTNuU1hMZUdMSEhVSTUvQ2VYWDhjWDFtekZGZkNUcHRSUWF6QlNuWlhIMFo0MlVpTUhUeHRKWkJsMTZhd3hGUFBaVlJ2cGJPKy9sZ0RSaThNdk1rUy9mUUpkZ2dwWHdJL2Q3K0ZuWjk3alFNZEZzalJhaW5RWnBDazFmUHY2UGF6TExXRzVQdnlBTzZwcXNZakQ0cUhoVEROSGU4UG1xY2syaXNQdjVXc2JicVE0SlpPVGZSMVlYWTVGOXYwRHRWdlFhN1Q4NjQ0N3lWeGdSaTdrTHJ2UGc4bG1CU0JlTE1IbWRWK0QyQSsvUzMxRUVVY1Q1OUVpcmdNZEYvbjR4NzZGeCszam5udDNzMlY3TGUxakZ2b2pZZTRqcGhiZTdyeU0zZWNKZStNWkJoeCtMOCtlUHlFUTFEc3pUZnVZaGUrODl5bzJueHYzdEo4TVZTSnlzWVNmbkQ0a0tHZXRRc24zajcrRjNlY21YaXhkT0Z4RUl4QkFJMWV3dTN3RkVIWjhTbEl5T1dJS20xdG1wNTNsK2p6cThrc3gyVVk1MEhHUkZ5NmQ1ckVqcjZPUnlkbFRzUXFUYlpTWjJSQkxWb1liN1Z5V0thb3ljdGhXWE1XQmpvdE1lRjFrcVpOSVZpVFFheDluM090YWhMQURIUmV4K3p3MFc0ZTRwV0lsRVBaT2wrdnpoUmZadTZRR2Z5UUlOK0swQzhueEQwTzRFU1FzdnFKMmU5UWNsVW1rQWdMZExpLzNmdW9SQUg3NGs2OHlLUW9nazBqUnlPVFhjRTJUZFpBREhSZVptUTN4K1VoeitPdXQ1L254NlhlUml5V1liS04wUmc3SGRDaElaVWEyMEF2M3pVZ241L2VQdjhXajc3MjZjTmtxd1F5ZENZVjQ4ZEpwSUZ6RUdnak9DTVdyQU92elNpblVwZE5uSDJlTHNaTGwrbnk4d1dsTzluVnd5VExBMnR3aUt0S3pTYzlMRFNNdlJrV1RkWWh2Ykx3NVhPMFFuR0Y2TmtSNVdqYjMxeWdvVHNuZ2FFOHJXb1dTcW93Y0dnWk43SzJxRWZLNDhvalh2TkRrakFZQURVbmhsT1dmR3JyaER3V0Y3NklkTXdYYVZBTEJHZXcrRDFXRjVaaWRkb3k2ZEJTMmVYNzVvMWU1NzR0N2VmNkZmK0cyN1Y4bUpVR05VWmZCL3BaemdwaUw0c0VmQ3ZMeitzTkN3YkI5Z1VkZG0yTVU0a3RxbVlLMWhtTDJMbG5Od1k1TGFCVktaR0lKUmJvTU1oYkVsZ1FDUkdQY0VBbXFpU1ZDOEd0WGFUVk4xa0dhUm9hdyt6d2NOclZRcU10ZzFPMFFFaU1Bem9DZlc3UHZBR0QvOFErb3l5K2xZOHpDeXV3QzV1Ym5lYlB0QXZXRDNXU3FrNGlOaVJHUVZKQ2NobmRtbXJZeEM2a0phc3hPTzdzclZxSlRxUGpkcFErdVFmRGg3aFloZ1BmblJ0TlVaUmp3aDJhRTlxaE5oUlVjNkxnb1BEZEt4TUNMUVphc0tHWlZiU1ZmZitqVFBQSzlYd2k0eUZKck9UTmtJbE9qWlNSeU1DRGM2RkdYWDBwY3JJaUxsbjZhcklPOHQ2QnlvOUhjeDBwOVBvWklzYkZlblV4b2ZoYXowNDQwVGl4Y2QwMTV1bGFoeE9LMGh4TU9FVGthM2ZTeDNsYjhrVXpTUTIrL3dLRERKalRNNlRWYWpGbFpxSFNxOE1URFdCR2JDeXVZbVF2Uk1XN0I0ZmR5dENkOGY3VDNGNkFxM1lEVDcyTXE0S1BSM0lja0xud21YcmgwbW43SCtKOUVydGxwcDM3UXRLakwvY085WVUzV1FRSFpacWRkMENkUkN5a2FncWdmTkhIdjNZL2ljZnZZZTk4TnJLeTVhdVc4MnR6QVBjdlhVNmhOUlM2V2hNUGtQZytuQjdxd3VPeWM2R3ZuUU1kRnpFNDdoaVRkb3RESTAvV0grZlg1OTJrMDl6UHB2eHF2R3JCZmZhOUZudkNtd25KMmxWWXZLdWRZR0NUNzhMVWJDc3FJalluRjdMUlRWMURLaXRWaE0zVmkwSVkrVVN1a0NYOXkrcEJ3MzhLVGE3S05Zb25JNWVoem9yMitXcm1TSzFlZ1FKc3FmTGM4SzQvcHVWbVdaK1Z5b09NU2dlQU1lbzMybXIzK0pWQ3R6Nk16RW9XRnNENzR6WGRmNHNFZmZwYWYvUHBickZuK1Nkd3VMLyswWmd0WFlKRjVIdTJxLysyRmswQllRcFNrWmhJSUJTbE55ZUs4dVpmNmlFamRWRkRPNDBkZlo5empaQ3JnRTVSOEJKcXU0WUMzT3k4TDFjciswQXh5c1FTNVdNTG5hemJ6bVpVYjJMZCtKMW5xSkZibzgvbnRoWlBNWDVtUFhDZkZyUXdIOUU2ZWErS0ZTNmY1ellYM09kVFZSRldHZ1IvZDlDbmtZZ2tmVzdhV1BSV3JJckxmQUN5ZTQ1Q2gwdUFQQm1teURoSVRBMWIzRkJBdWQ5bFJzcFM0bUZqaHhXVVM2U0lSRkExclFEaWY4RkdtcWtDQXJEeXlGbkRQcnRKcWZ2SGFXeno3ekJzb1ZRcWVpWXpLbkFyNDZWaVFSWk9MSmNTSlJPd3N2ZHFFSHM1K3BUTGljaENjbXlWTEhWNzNzbVdBay8yZEVldHRGSlUwSG44b2lFb3QrRGZPUlJ4ZzkzbXB6QWgzaGdTQ00xeVJLVmlUVzB4aGNoby9iemk2NkFVT2RUWFRaQjNrMVdZSmdWQ1FLMXdCWGJoQWFXNDhRRjErS2QyMlVmeWhJUG5KcWJobnBya3V2NVRPY1F0dk8yd0Vnak9ZWFhadUxsL0p6RnhJNEFxcjIwbVJMaDJ6SzhoUlU2dHdRc2M5VGw1dXFoYzg1V2dWM2VMOWUxRHI4d0dFOXRlUDBoSDcxdS9rNS9XSEJZdW9LdE5BdDgxS1ZhYUI3ejM4QzY3ZnNJcFZ0WlY4NmF1ZllQOHo3d2hpTFpvenlGSW5DZXZMeFJMZWFEMlB5VGE2cUZWcVYyazFCem91MGpNNWhsd3NFY1kweU1VU1NzcnloT3NXY1lEWlpXZU5vWWlkcGRWQ2txTTJ4eWlZaU5HZklsMDZaV2xaL012Mk81aU1JTUdRcUdOWlZiZ3RTZTJOSlRnN1MvL2ttREE0eWVxZXdqM3Q1OHhBTjY2QUQzOG95TTFseTVtTFZFMkxZa1ZVWlJqWVZyUkVrTE0xQzA1dklCUWtKVUVGaE1YaHdsaitRcmw3TWlJcS9BdU1pb1d3cTdSYW1GR2hsU2NJbHA3Sk5pb1E2ODQ3SHNMajl2R2xyM3ljalhVckNJU0MzRks1aW9jMzc2SEdZR1IveXprT2RZVXJ6Wi9ZY1NmZjNMUWJoVVFxRUNvY0prOFE5aVdUU0tuSkNlZFU3bDB3R1hJUkFjSW1VamhLZVRDaXJOYmtGcE1XeVRoRjRhR05ON0UwTTVlVUJEV3ErSERCbHRscDU2ZG5EcEdhbThKSXh3aXZOalZ3b09NaXk3SnkrZWMxVzVuMGVvaU5pV0h2a2hycUNzcDRlUE1lakxwME5ESUZwNGRNSERHMTBERnVvVElqRzcxR1M3NDJiTXBHeDhsRUVUcm1jYkV1dDRRaVhmcWlQUzEwNlA2clNPbXhubFlxMHNOY3Z0Q01yVFVZQllSWnpPTkNaZmpYbjdxZnRpa3IzYlpSM3U2OHhJVFhoU2hXeEJNNzdnU2diY3lNTWw1R3BqcUpmZXQzaG1ka2xDNmpLc1BBMGdVaTl0WG1CdlFhTGErM25sdTRuVUZCQklsaVk2OWhWL2UwbjRjUHZiS0kxUnZOL1F3Nkp0QXFsQ2lsOGNUSGlTbElUdU03ZDRlSDU4Mk8rNmtyS0tOMWRCajNkSUQ1K1huT1dYcFpsbW5nUzIrRjZ5TURvU0MzVjlYd1Zsc2oyNHlWNUNlbjhjMTNYcUpoME1UMGJHalJIcUxoaFhDcFJ4QlJiQXdYaHdjWEllNmJIeHBabzFVb3Fja3A1R0RISlFxVDA5aFRzWXIvKy81YjdDcXRwbjdJeE5MTVhLenVxV3VJdFZEaEgzNjNudC85K285ODRqTTM4dVlmbm1MajlaK2pMWklnQXFpUDlKMjkwWFpCOEordXl5dWhMRTB2dE9aV1pSakN2bzVjaWRscHAybGtrUHR2dTJrUkFRUU84TTVNQzVtcEtNek96L1B0elh1dXhyY1ZTdW9IdSttMWoxT1puc1AzanV6bjdIQVB5ekp6Y1NuREllTHV2bUY2YktQRXg0bVpuZzN4MjhhVHlNVVMwbFdKUWpCUHI5R1NJSWxuSGhpY3N0RStac2FvUzJkNk5pUllOUjhlcktjUVM3QzRISWhpWXhlSnBxZ0Z0REJBQnBBVThZU3Z5eXZCN0FxWFVFWkY2Zk9OSjRVUkJkK09jR1BUeUNBcENlcEZhN3o2a3dONFJsemtWUnE0NTc3ZEFzRUJmbmpqSjNsaXh4MkNzK2dQQlhucTVFRk9SWExZSnRzb1Q1ME05NjlwWkhLMENpVmJpNnBZbHBXNzZCbUxkRUNVY25LeGhFZTIzaVlVSzhuaXhPZzFXbXB5Q2xtWlhRREFNK2VPb1ZVb09kYlR4cXZORGFpeXd1TnlFcjF4MU9XWGNiMnhNaHhJa3l1NVlPN2plRTg3Y25GWVNjZkZ4akxwOTlBMk9velphU2MwTjBlR0tsR3c3WTI2ZEI3ZXZJZi91T2xUd3Q2aTR1SllUeHRMTTNQNWF0Mk5BSUk0VTBwbHdyVmhKSWRUcGhjdEF6Z0RmajY1L0RvK0RQRnhZcDV1T0lMRmFTYy9PWTJkcGN2WVcxVWpwRHExOGdSKzh2WHdWTWZ2UEhZL3BlWDVOSTBNWXRTbE0rRjFreUNSb2Rkb2VXTEhuVUk0SWxySEpJdFlkbHFGRW05d2hrQndoamZhenRNY0V3Nk5UNDVQZGNHQ2hNeTB3ODlQbjNrTnJVSkpTb0thbnNsUmVpZkh1R0R1d3owVHdPeTA4MER0Rm5vbXh4aHdUUERFamp0cEdESUp5WmJQZi9sT0VwUFZQUFA0aTN6UTM4blN6TEFYS29tTDQreFFEMTBUSXdSQ1FmS1NVam5RY2ZGcUJzenZwU3hOVDA2aWpySzBMS0VXeUJ5cHpzdFBUbVUyb3FpallFaE1vVzNjak5rWmJuRTEyVWF4ZXFZK01qMDU1bkV5UFJ2Q014MXVNWXJXdTBKNGF1T0p2ZzVTVkJxbVEwRStHT2pDWkJ1bEpzZUl3KytsUEYzUFc1ZlBJM0hQVTcyeGtycE5LM2pweFVNa2lLVDBPeVk0M3R2R0xSV3JpSXNWc2FWb0NhTWVKeE5lbDVDK2hYQkpwOVU5eFlyc2ZEWVVsTE5oNjBveWl6THd1SDM5Q1VyNXJ3UU9pS1lIQVdKallvUVRWWlZob05aZzVJa2RkL0oyNTJXYVJnWlpycy9uM2E2bVJib2hyMGpQZ01sTWNVb214U21aZlAvNFcvenN6R0dDczdQQy9YdVgxR0QzaDU4VFBkMmJDeXZ3QnFkNXV2NHdGeTM5ZkdiVlJ2eWhJSTNtdnNnUUplOGlrUVB3NHVYVGRFMk04RUR0bG5BMVE2UStQM3Jpdm56ZERSUXNuSXdWQ2xLVm1jTi8zUFFwN2wyMVVSakdaM0U1TU9yU1daWmhJRm1oRXF5dkZ5K2ZwbmR5ak9jYlQySDNlZWkvME1lRnc1Zkp6RXJocVI5L0JaTnRsTllJOXlZcmxJeDVuRHh6OWloMSthWFhGQWxFOXlRWFMzbTc4eEl4dW5ET0lqVWorVjM0a0NlOGIvMU92dm5PUzRMakVNMk4ra01TdnZuT1MzeGowODBVcDJRczhtd0J3ZnljSFErZ2tFaXBIekt4dTJJRlphbDZXaUliL1huOVlmeWhJRi9mY0NOelY2N3d6WGRlNHQ5MjNpVmt1dDdwdkl3aE1VWEluajI0Ymp0YWVRTHRZeFplYmJwYWhSZTFyKzArajhCRmVyVVdhVnhjMkg5dzJpbU9qSm41NGFtM2hldVA5TFJoc28yU21xQVJpUEpHYTNqd1UvUmQ0V28yTEtvalZ1anp1V0R1Wi9qeDUzazRVODMxMjJyWTk4V1A4OVNQZm85ZW84WHFudUxjY0M4OWsyTTRMcDloWFc0UlN6SU1QSHYrZlVFLzdZcFlSVWQ3V2lrdUZYUkFFM3hJQjN6WW1qQTc3ZUdaT2hGMmFob1o1SHlrbEdSdGJoR2JDeXZDdW1GNVdBR2ViV3pqMStmZUowT2x3VHNUcmdPNm9XUXB1eUoreGVhQ2NzNE9tbEJLWldnVlNpNVpCa2lVSlFoUnp2ckJib0p6czhqRkV0N3B2TXhVd0NlTUhOQnJ0T3hkVWtQWHhJaGdiMGN0cENicklEbEpPcUVvN0hOL2VJWWZubm9idUpwUEdJbm9semZhem45a3lDSkt6SVYxUm5hZmg5eWtjRnZ0bWU2TzhHUVk3elJmK09ZbktDM1B4NmhMajB3SkNPOWpXOUVTdGhjdlpYL3IrVVdWR2FjSHVubnN5SDYyTEs5ZStEY01tbUNCRG9oV3hpMEU5M1E0elZhV21rWDd1SVhleVRGR1hBN2tZZ203eXBaVFl5Z0tXeVhibDVOWGxzT3ZuOTdQeWFZV2JxMWNUZjFnTjQyV2ZxN0xLOEh1ODBaNnRBeWtxUko1cjd1Smx0Rmgyc2JNM0ZLNWtvcjBiSXk2ZE1RaUVjNkFuOW41T1hvbngyaXhEcEdtMGpEZ21HQjJibzY1Sy9Oc05sYlNNemxHVEV3TUQ5UnV3VFE1S3RTdGpubGMzTGQ2TTBwcHZKRGdYd2g2alZhb3VJNld1WlNsNlZtaHp4ZmFwS0o5RWJOemMvaERRUnFHVElMT3NFMU00WFA1cWJ0K0pYV2JWdkJ2VDcvQWllNnI0M2VzN2ltYXJJTjBqbzhBOE5TTllkTjg3NUlhcmdDYXdtUTIzVkREekV4d0ppNU85Qlg0TTJNcm8yVVZTekp5aEpUY3J0SnFhZ3hHUnQxVEtLWHhQTmQ0Z3JXR1l2S0t3bjkzWjlJVWp2SjEyNng4YmNPTlRQbDlmUG10NTVCSnBPRll2Ti9EdzV2M2NLS3ZYWGpPeit1UE1IZGxEcXZiaWQzbndhaEx4eEVaWSsrUEtPMmF6VWIrMk41SVRxS09RWWNOcThzaDVHY1hubUM1V0VLR0twRk1kYUtRYThoVUpUTGluaEl5VzFucUpQWlVybUtyc1pKWG14dG9HRFFKMVJOMnZ4ZWpMcDBWK253ME1qbEhUSzFzS0NqakQ4MW5CU2x3OU0zVDNIN0RSa3JXbC9EVWo3OGlKSFRnNnBSRkNJdXlvNlpXZkRQVGROdXNuQm5zNXAvdXZBc0E1NVNuTVRVdGJHWXZJc0RDT1pwUmRvNnlsMTZqSlU0azRwdnZ2Q1RFWWlyUzlDVEs1R1FXaEVWQ1Fra3lESnBvR0RTaDF5U1RrcUFpU1o3QTBzeGNsbVhsTWpSbEV4SVdVV2l5RHJLalpDbWlHSkdnZXhiQzYyM24rWHJkaldScHRGUmw1dkRzaFpOOCtib2JlS1c1WVZHNmN0LzZuVHgxOGlBVFhwY2cwZ0xCR1RZV2hJdHBvK0VIaTh0Qm9LK0RyY1pLVkZLWllNTkhSeUF2eWNqaDhhT3Y0dzhGa1lzbHpNeUdXSnFaaTFna3d1S3lzelF6RCtzQkU2SVVHZGR2cStIdVQ5MkkwYWJnWU1TeTIxVmF6YzdTWmZ6MHpDRUJsMmNpLzliVUxnRWdOVTBySk5JRkhhQkxVQW0yS3lEa1RoZEN1UDRuVEp6YUhDUFppY21rcVJLeG5nM1g4WHozOGM5VFdwNlBQeFRrdHhkT2tLRktaRlZPSVZXWk9ad2Y3cVZuUVpMOWdkb3Q3Q2haeXFiQ2NtNHFXNDQvRkM0Si9PeXFqWXVlYWZkNStOcmJMNUNTb09KWVR4c2pUanZ4RWduVm1Zc2RtaWd4bmpwNWtNL1hia0dyVU9LUGxMRjhlTnhCTlBWWm5uNzFMMlkxV1FjNVBkQWxJRDhRbklsazVxUk0ranhoVTlPNGhQZDcyL2pNNzU3bW5SOGZJaFFJOHExSDc2TjFkbHh3SGk5WkIzbnl4QUZhUnhjUENzblNweTRNd3AySS9pTG9nSmlZR0w3KytNK0FjQ2czV2FIa3RpV3JCU3FLUlhFQ054UWtweEViRThQeG5qWWFMZjI4MjNDTzFXdVdrSnVmeVYyZnVnR1ZKb0hMRjd2dytnT2NIZTdsVUZjektRa3FKcnh1ZHBZczQreHdEMktSaUxsSWQzb01NWFJQV05sV1hFVnNUQXhwU2cxM1ZOV2lpcGRmYlNlVlNQSE9USk9pRExkSVJYMFRBYWwrcnpBdEswK2JLblR2dDQrWkZ6VnMxK1dYa3FwVTgyYmJoVVhOZ0E5djNzTkZ5d0FtMnlnUDFHNUJIU25CdjJEcHh6M3REMHVEMFNHaGdPdHNaeGRwTWpWVjY4cklMTXJnOXkrL1M2WWlrVSt2cU1QaDl5NnFSUUxZc21NTlc3YlhFcHdKellqaVJQOGMvVHlXaURiV3BLaFpIZm5iWENiYktLbEtEVStlT0hoMUpyUDZhbWhnaTdGU3FEWUE2T20zc0tYdWMzemxpMC9oOC9pNTU5N2RuR2w4bnJVN1ZtS1AvREVlZ0p6RVpNNE45MUtrUzZkaDBFUlZob0hqUFcyODBsVFB2dlU3c1RqdFBGMS9tUG9oRTYrM1hlQkF4MFVoSkZFL2FDSW5VY2MvcjltRzJXbG5hYWFCNzIzZHU2aFdxWDdJaEZhaDVPbjZ3OFNMSlR5NTZ4TnNMVnF5eU9ySlRrem1ucFVicnVId1p1dVFZSEdOdVoxY2I2d0lPMVErRDNldnFHTlRZUVYybjJmUmZaSTJMd09OQTVTVTVmSGR4KzZueVRySVV5Y1AwckFncGxhUW5JWmNMT0cyM2VFb2FNQS8vZlpDd29nZWVlU1JMcGZUZTNkOHZFUlRWbEhBd01sd3AzaDBOSTFLSmhjcTRUWVZsalB1Y1ZKak1OSXdaT0l6cTZLVHIwb1JpK0pRdUVIUlBjT3d4MEhSMG55V3JpdG4rdzFyWVNxSTErYmxWSDhubjZ2WnpPOHZmb0JNSW1WUHhVcHlrMUtZdjNLRnNqUTlrcmc0UHVqdm9raVh3ZTZLRlJSb1U3bTlxcGEzT3k4SkI2TmhxQ2M4cjJITVRIQnVsdDdKTWR6VEFYYVZWck9wc0p3MGxRYVRiWlJWMlFXSVltTTUydE9LSThJZHFuZzVyYVBEREU3WktFdlRzNm13SE5Qa0tOL1pjaXZQbkQyS3crOGxWNXVDTStEbmxhWjZRZkhLSlJJc1RnZGpIaWQzVmErbE5pZjgva2RNTFl5MG1xbmV1RVJvaGJwNHVaTTBsVWF3dHVyeVMzRVQ1T0h2aDJ1UDRtWFNid0pkQ3dsQWZMemtPWWZEZFZkMlRycGFucHlBWkdpYTVwRkJZYUp0RlBLMEtWaWNkbUVJUnBJOGdaYlJZUklrVXFabmc5eFNzWW9PNnpCSGo1NWpyczBKS2ZFVVYrYXpmRXNWNGpRNTU4KzMwV3NkUlMyVFJheVpLVHpCZ05DVUxSSEZjY0hjaDFna0lsMlpTTU5RRDQyV1BveTZkS295YzVuMGU0UlFkSGFpRHJsWUlwU3dtMnlqM0xHMGxoY3VuVVl1a2ZMcEZSdElsQ3Q0OGRKcGpMcDBiaWhaeW15a3l2cFlUNXNRZThyV0pIUGx5cFZGdzE3Tkxqc3FtWnhWMlFYY1hMNkNWZGtGbUYzaDl6YTdITUorQWZvbnhqbGIzOEpkbjdxQkRYVXI2TDM0LzFWMzVYRk5uZW42UWNoT1FrellTUkRLcGdIQ0xvSllOMXh2dFVWYmw2S3QybCt0TS8zZFZrZnQ3ZUowNnZUT3pLOWoyMmxuYlBYV3RyWTY0M2JIc1c3VlcxeXc0d1VkQlZGUk5FTFlJUVlTa2hPeWtFQzRmNXljanlRc2drdnRmZjdqWk9Iay9aYnpmdS83dk05Ymd6SVZYZW82VDVHQjh1WmE1Qy9JdytScG1iRGJIVFpmWDErUG5pdU1Wb1NOeCtQdTFPdU5oY3IwaElCT1RnL0svMWxKL2dtekp6NmRtSWtqTjh2SWRaYXZML1JtRTI2M3RXSm1naEttTGh2K2N2NGtKc2VNUTdRZ0VMZUtiK0dEM2Z1UWs1ZUsxUFN4V0xXNkFIdzJCdzEzbWxIYnBrVmlxQXhaOGhpa1IwU2oyOW1ESFJmUEVDT1VOYW1oN2FUbzU4MG9YK1JGeGVOYWF3TVNRMlY0T1hzNnNpTmo2WG9FdDcwMjBTWFVwekVaY1YzVGdDdk5kZEJaT3FHemRPSk05UTFVYWhySk0yVlJTZzU2NEtRVDdIVzNRZG1zaUpZR1kvT3NSU2gxcVhXTkM0NEEyOWNQdThwK0pEdUMxV0hIS3puNW1CbWZRdkxFYmRvT3pJNVdJaVFsSEhGSlVUanlYVEc2dXV4SWo0akd2TVJNVEY4OURVSEJvMkV5V1E1enVSd1BZcEM3V29xTngrUHU3TkJUaFNrWkNRRUJ3U0tpMFgrcHNRWnF2UlluYmxWZy9lU25FT2dLVDlmcTI4aGdxTnBhMGRYalFKUWtDQlV0OWJqY3BFWk9WQUtPWExpQXJWdjNRZXpMUTJxT0FnbHBNUmlmbndaZlJ5OW1qRTdBdmlzbE9IQzFGQ29YNHhnQVBubjZSU0xPMFdqUW9hR2pIVXZUSnFMYjZVU1Z0aGxoSWpGMmwvMklheTE5ZGN4TWpsblYza3JJdk5QamtsR3IxNUwzMEJtcDZYUTFKSWVITWFPRHNMK2loRlJsVnJUVUkxSWNpRnFYYnFuV1RHRjhaQ3h1M0cwaURISDQrQ0I2ZERDNmVod2tCY2xuc1JGb1lzRXU4VVY2dGdMam8rTlErbU1GYnJlMVl1TEVWRXhkbkVkdlAxeE9JYnhrTEwzMWdtdzhIbWVuUVVlOW1KNmxFTW9qUXozNk9rNlBTOExWMWdZNGU1M1FtQXdrTHdvQTJXTmlzVEpyS3JhVkZJR3lXVEhldFFjWDE5eEVibFE4RkwyQjhPSDZJamcyQkVLUkFKUHlNOUVoZGVLMnVnSFBSS1lTajBRdWx1TEExVkw4ZnU1U0Q1SFgwdm83cU5WcjBlTjB3dXF3NDBKOXRRZE4zZXAxYXFWWHFCOTBGaE5FUEQ3U0lxSmc3S0xydVhUbVRwVFdxM0JPZlpPc09NYWpZa1JqR2YxUVBwdER2Q2ltcHF5OHVaWm9WVE0xelNWMUtwdzZkUkh6QzZZaUlUTVc0STdDV0dVTWtxY2xRaVlQUWFmSlVzUG1zTjZHRndaU3pMSnhWSmYwc2dBQURTVkpSRUZVK1p5djlIcGpZVWFXSXNCOUVHcjFXbWc3amJBNDdGaVZOUVYrdnI2NDY2cXRUUWtiZ3oxWHpoTURQSjJZaVVwTkl6M2J1SHlFQ3NWUTllaVErMlNmckhLRUxCanpGazZGVStpTGkyVTNRRkZtdkpLVGo5dHRyVGgyczR6dzltbmFSemhxZExSeGxxWk5oTHFqalFUdW1CWGdIWTdXbUF4RUZJVFA0dUFKYVRDcEJ4NU0xTnU5MksvZGJBTFZaU1VUalFsT0FuUlU0RmxsTnM1VTk1M3FmWjNBblFvMW5sNlNqN1NNY1ppUXE0Uk1UcWRYMlJ6V2VneFRzZ3hndGlPM2xTQnU2VVd0WGdzUmp3K2QyWVJ6NmlyVTZyWElpb3lCMVdISGlxekorSnNyTlFjQVRVWWRWbzZmNG1JRHRJQTF5Zyt2dlAwOGhCSi9IRHRZak5iakt1dzVXb1I0UlRUR3BzVml5Zk96d2VkeDhkbis3ekJoVEJ4YXFRN3cyR3pTTktIU1ZWTUFBTXN5SnVGT1d5dWhyTWpGVWhTbTU5RmVtMHZud3R1b0dwTUJ0WG90WWdORFlYUFkrdzJBKzdZSDBGc3ExV1VsM3lVWFM2RXhHY0ZuYzVBZmw0eUtsanFrUjBTajNVS2hwN2NYVm9jZFM5TW5ZazVrTWk0M3FaR1UyUmRDTjNkYWRXdzI2L21CREQyVWFxS041N1lTS0xZREY0b3JTRjBYQTZhYTV0ak5jaEtsdERyc0NCV0tjYTdtSmlwYTY5RmswR0Yyd1NUTVdEZ0pGMHV1WWRVTDc2S3VyaFVYeW0rZzludzFWSm9XVE1oV1lzS1RLWGh1NlN6d3JENjRyYW9uczlhN0p2all6WElZckdaa1JkS243Z1hKNDNHMnBoS3ZUcHlGbmw0bjhZd1l1RzluZjVpN0ZGS0JFTGUwelNoSUhrOUVTTnlOUHhDV3BVL0M1Y1lhVUxZK3I2MWFwMEdRdndpQkFqcm4yMlRVbzhOcXhsOFAvdzllL1ZXZnZkbHMxcXU0RDlsS2VoQjQzSjBHSGJVOFBVc2hDZ3dkamNOSGl2dk5Ia1pBZTBwTUlueDg2R0tQNlhISlNBZ09SeUJmQ0kzZGhLM2ZiQUtIdzhhU2dvMmdLRE1Sd0pQN1M3RHI4RW40VnB2aFpBTmowMkl4Tmk4QlR6NlpnYW9iMWJoeWgxYStZdm42NFplNU0wa1phYWhJak5meTVrQm5NZUhBMVZKb095bGNiYWxIbFN2ejVvN1RkeW94VDVIaFl1THBjVjNUQUtsQWlNTDB2QUYxSndCNlMzdDkwaHpVZDdTRHNsbHh5YTIzQUFQbTJXRngySkVRRkk1YXZaWm9iS3pkU0h1YkZvdXRqY1h5S3h6TXdNTnRaY2gwUUkyb09sZUZPWXZXa2hmNExEWXk1REhRVUIxWWtUVUZhdjFkZkhYeExLUUNJVlpsVFVXUjZocW1GRTdDMmczTGNIVFBhZno3dWo4U3BhblVpQ2hVTk5kNXNCTW01Q3F4YnVOeTBqSDc2eDJId0MyajhNMzVzOFNGVEEyUEFwL05IcEtZRyt1U2pIRVAyREZZbEpLRDh1WmFWTHRpUkhLeEZQTVVHV2gzSldFSWI4aDFuOHo5L2FWZ0pVcnFWRVM1UFQ0b3pFTmZDS0Fub3pPY2kzMkh0akNYcHNJdDl1T040WXAzMjdoOHp0ZDZ2YkV3Y3B6TTQ4SHNjUGJBYk85Q2sxRVBXWUFFaWhBWmlsVFhZWFhZTVdaMElHejhYdnh4MjBaWU9tMDQ5K2ZUc0Zoc1NBeVZFVlZGNW9ISXVIaDMxSTM0Ky80aWNHMCtkRXVUWENXaW5veERpMTRQY3dNdGRjbmtpRDNsTXozeGg3bExVZEZTaHpsalUvdjFFS0M2ckJCekJlU2dTZG1zVU91MVNJdUlRcWVMc1RjalBoa3FyYWVFV1kzdUxscU1lbkt5MWxsTThPZHcwZFBySkt2TzJOdUZYZnQvRDVGSUFMUFp1cDNOWm4wMmxHRkgyc3hUYkdpbnFzU0JvdENEKzR0dzhPTWptQjZYaFBlTDZMb25iOG9nbjhYR2laT2ZZMHlTSExmK2ZoWC9Pbm9admo2ajhPM2xjOFN6c0Rqc2VIUGFNemhlVlFhRDFRSXBYNGlLbGpwSUJVSTQvSHF4YW5VQjFtNVlCZ0RRdExUankvZjM0TXQvSEIvNDd0eEFrNHl2UXhFcUE5ZVBoZk8xdHdkOUw2Tlh4eGliejJJak55b0JKWFczNzBuMDRyUFlIdVJpcHMyNnhXSnI0L081OGJoSGU2dVJ0akF4aUFORjR3eGFvMjdoNGhsWTgrNHkzTmIyeGUrbGZLRUgwVFovYWpiR0pNblJxcjZMMTk3N0U5UzZ1emhlVlE1Vld5c1NRK1VrbVY3V3BJYkJTa2NjU1hMRWJBSmw3TVFuVzNZakwvTUZGSjBzUldoNElEWnRldzM3RDIwaDd0MWdPSHF6REJhSEhlTWpZeEVrQ0JqeXZReWRoSUhGWVNkVWVuZDQ5NlprM3NzWWYwS3VrdlM0NS9PNWl6Q00zbUwzMDBIRHhoVnd2K2pRVTRWalUySUN1dmpBOThmcGVNdml0Rnh3ZkZtazNIUGZvUzNnK1hQeDhxck44REgxb05OdWc0UXZkSjJhdTBsMHNkMGxscGNYUFJiVDQ1TFJRdW14Sm1jR0dnejBBNUNpekRqNlhUSFUxK29ScHhnRFpWb0NWcTB1UUdwRUZIcTBWdkJIc1FlVk9ydlVXSU5iMnVZaGZ4QWphVFpRdXhPQVhpRVN2ai9ZZm42RHFyU0lBdnp4M1lsUHdlR3dZYUxNSDNBNDdDK0hZOHo3N1NGajQvRTRPL1Y2WTJGS3h0Z0FlV1Fvc3J2RDBHQm9KOVR4VmFzTE1IdGVIb3FMTG1IcnAzdWhNUmxnZHRqUmFLVHJqTk1pb3NEMVk2RzcxMGwwblRWVUJ4S0N3bkJkMHdpYnc5RlB0Y3VpTTJQcjlnT2dLRE95czVNUW14R0RLYy9rWUpTdEJ6N3Q5bjR4K01FUUh4U0c5VlBtRWRlVXNsblJZaktnWjRBaWNJRFdMUlY0VWVHOXNXdmY3L0JFckJ5ZEpvdGFLQkxNSDY0aEg3U2hNOUdaL3VId2VieTE3aFBvekNZc3pzN0RiL2U5QVE2Zmc3ek1GekJSOGdTSjB6Tmc1QThBRU00bVF3V1pwOGpBRDZwcjRMSFlKQlBHUUJZZ2diWGJBWWRmTDladVhFYVd2S3FxRHUrKy9Sa3V1RG90alJUTTFqblVuczhrN1JuR09KT3JXUHZibFZpNGVBYnNYUTQ3bThOS2dKYzg4VkI0R0IyMXlTQTAzMnpHZjM5L0ZpOHVmd3FqUThUNDdPTzk0RitoSTVISm9YSjhjNm1ZL01CTStSUG83bkZDWnpFaElTaDh3QWVlTWl3U3pWUUhFWGNGNkNaQlJwdUYvQzJUaCtCUFc5OGcxVGxGSjB1eGVkTTJORFY2bGpmUjFNcDRENld2ZXlFMVBBcU5ScDFIdWFtN1c4cG5zZkhTbW9WWXYya0Y4NUdWR0dFZitvZlYwcHp1THlNUnlkd3Z2anJySGN5UFRjT09pNmR4dVZHTitLQXdKQVNGazlrek1TckJvd1dKTjl6TGo0YTZKaFVJa1RzdERXKys5eklpWk1Fd1VXWjg5Y1VoZlAzRklmZWFYRnBpd01VQTlPWUdNYk43SkdWT3p5NlppUTgvWFE4QU1KdXQyd1VDM2krRy9XRVhIbVpQZWJJU21BdS9tUHdmcUc3WDRFNjdodkQ4VjJSTkpqUjFxVUNJM0RIeFpQdFprRHdlYXAwV1VvRS9LbHJxK3hrak55cWVsQzhOaHJVYmwrT2wxUVVRaWdSb2J0TGk4NC8zNE5DQjAzMFZvSzUwNGxDR3Z0ZDJGQjhVaGdXTDg3SG0xN1I3ck5jYml5V1NnS2xER1djd1BNeHVxZ2FKSkVEWm9hT0lYeG9jSGtnWUNSVXRkYWhvcVVPbHB0SERWWFd2YW93TkRFVkZTeDFPMzZuc1Z5ak5SQ2VITWo0QWZMSmxOL0ludklTU0U1Y1JJUXZHN3o1ZWk5MEhQeUQ1YnAzWkJDbmZmMEFPSndPWldOcVBiK3Arbjh2WExTREd0MWhzS29ra29HRElteG9DRDNNRk1DQXI0ZHJsVzVqL2I2OERBSjVTcEtQSlFIZXNZMlk4NEZrMTZZNkJ0Z25tdXZzKzdBM21nYzVuc1NHVWlmR2I5OWVRc01iQi9VWFkvT3Z0WUhYN0RQa2RBNEU1R1A3bS9UVlk2T3ByN0pyNUJialBYc0xBbyttb2JaQklBcFNHTnFwZG1Ua1dXejkvQ3dBZHdkUlpUSVJZQzhCVnZDQ2dZenNzTnRHYUE0QUVWMjkzcGc3WkhlNnoweHZNOXpjYWRMaFpXWVBGQlJ1eDRmV1AwTnlreGNMRk0vQy9sM2RoK1MrZkdkVDRVb0VRVTJJVS9hN25LUk94LzlBV1lueWJyV3V2YTl1NWIrTURqMllGTUJBYjI0elZBVUVCMHVKakYyQThvc1piMysvMStPRU00ZmFqYzhmNktXY05odFR3cUg0eTgvY0NuOFdHVUNUQTBsVlBlVHdmTm0vYTVwSHhBK2dCa1BBRUhtU3VtWE55OGRHZk54QmliVWNIOWZibzBhSUJtL0tNRkk5eUFBQzZBVnpsYUtrbzR0YTVXeml6N1RTMnVxanQwK09TY2RwMTNGK1Vrb1BTZXRVOXRVQ0J2bEpScHBKL09GNkxlNThDbVR3RTZ6WXVKelA1WXNrMXJIL3R3MzV1SzBDZmJ0M1BHbmE3dzhabXM1YkNUZi8vUWZFd0dqb1BCUnVQei9uYTBFNnRsQ2tpL0NOa0lUaCsvSitrZ0pwaHIwVkxnekV0SmduMm5tNlM1V0pZYm95QU53UDNocHVNbHVlOTRGR3hRcG54dzRrU1hDaWg5VVJUTTJpMmhranNqNW83amFBb00rS0R3cEF4V1lrZDM3Nkh5Vk5wWFNNVFpTN2o4N21UQVZ4NG1BWjYxQ3VBZ1VkbnB1THRaL3ZGNldraHFIQ1Bndy9nU1JpK0Y0WWo0T0dORlMvT3gvcE5LOXg1Ky8xZ29zd2ZDRVdDTjRmOXBTUEFUelVBZ05zZ2xKKzZpZy9mK1pKVW9yaGpKQWEvWDNqL2p3bTVTdmNFQ29HSk1wY0pSWUpuTVlMUXdranhLTHlnd1dDUVNBS1VlcjJ4TVQwL0JRdC9OWi9FZnVhT1N5TisvNk0yUGtBTGdqQ1F5VVB3M0pLWkhxOWJMTFkyQUFWQ2tTQVRqOUQ0d0UrN0FoaDRiRWVxdlJVSUVvanduNmYrUVN0YmVhVW9HVENhUmNONVVBOEhNK2ZrNHJrbE16RmpkbDl0dExuVHFoUDQ4elpnaFBHY0I4SGpHQUNBN3RCNld4d1VFTXdjanBpWXpWQ0Q4S0NZa0t2RXpMbTVtRFZuSWlKa3dlUzZLM3YxQm41Q3d6TjRYQU1BdUsyRXFodHFiSGxuQjg2VWxtT2hNaHV0Vk1kRDJZb1VTVEZRSk1WZzFweGNUTWhWOW52UUdneW1nMkt4Y0N1R1NKby9hanpPQVFDOEFuZ0g5eGRCZGJFYS8vVzNQamViOGZ0VEk2SUdIUlJGVWd4RUlnRVVTVEdRUllZZ01aRTIvRUNlalN0ODhDMW9YLzZCVHJFUEE0OTdBQUJBYktMTXA0UWlnVWZNb2VxR0dwU3hFMzYrZm5EMk91RjBPajArTkppQnZhSFhHeHRIalJyMUw3RlkrRmZRTS8yeEc5MGRQNGNCWUxEQzNHbjlVT0RQazk3N3JRTkRyemRlZGRpN0cwSkNwZVdnalYyQm41bkJ2ZkZ6R2dBR3FhRGJlNlFPOHJvQm5qUS83Ny8vWCtIL0FBS29wWjZSVDNGWkFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJGSURPXzJfMCJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0Il0sImFhZ3VpZCI6IjZkYWU0M2JlYWY5YzQxN2I4YjlmMWI2MTExNjhlYzYwIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJ1diI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOnRydWV9LCJ0cmFuc3BvcnRzIjpbInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XSwiZmlybXdhcmVWZXJzaW9uIjoxfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTA2LTA1In1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNC0wNi0wNSJ9LHsiYWFndWlkIjoiNTYyNmJlZDQtZTc1Ni00MzBiLWE3ZmYtY2E3OGM4YjEyNzM4IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI1NjI2YmVkNC1lNzU2LTQzMGItYTdmZi1jYTc4YzhiMTI3MzgiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiVkFMTUlETyBQUk8gRklETyJ9LCJkZXNjcmlwdGlvbiI6IlZBTE1JRE8gUFJPIEZJRE8iLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9LHsibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwiLCJiYURlc2MiOnsic2VsZkF0dGVzdGVkRlJSIjowLjAsInNlbGZBdHRlc3RlZEZBUiI6MC4wLCJpQVBBUlRocmVzaG9sZCI6MC4wLCJtYXhUZW1wbGF0ZXMiOjEyLCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlbGVzcyIsImJsdWV0b290aCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQ0tEQ0NBYytnQXdJQkFnSVVBVTMxVytIemUyNTlYcEd0ZmhxanMyU0FLRFl3Q2dZSUtvWkl6ajBFQXdJd2FqRUxNQWtHQTFVRUJoTUNSbEl4RURBT0JnTlZCQW9NQjFaQlRFMUpSRTh4THpBdEJnTlZCQXNNSmxCeWIyWnBaRzhnUVhWMGFHVnVkR2xqWVhSdmNpQkJkSFJsYzNSaGRHbHZiaUJTYjI5ME1SZ3dGZ1lEVlFRRERBOTNkM2N1ZG1Gc2JXbGtieTVqYjIwd0hoY05Nak13TmpJeU1USXhOVEF6V2hjTk1qZ3hNakV5TVRJeE5UQXpXakJxTVFzd0NRWURWUVFHRXdKR1VqRVFNQTRHQTFVRUNnd0hWa0ZNVFVsRVR6RXZNQzBHQTFVRUN3d21VSEp2Wm1sa2J5QkJkWFJvWlc1MGFXTmhkRzl5SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1F4R0RBV0JnTlZCQU1NRDNkM2R5NTJZV3h0YVdSdkxtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCSzdXMHgvVDBlSmVhNmVtQzFSRlNrN3hicldSVXdEZUNPQjRVbkRNcWlZRE9iSW1SNEdldDFxNXJYWmFpckQzUXVvVzUxSGdQZlI5cWh3ZTFXRWtIMmFqVXpCUk1CMEdBMVVkRGdRV0JCUStIMUd5eXNCckVpY2FzMk9MVzVoaU9RTVNFekFmQmdOVkhTTUVHREFXZ0JRK0gxR3l5c0JyRWljYXMyT0xXNWhpT1FNU0V6QVBCZ05WSFJNQkFmOEVCVEFEQVFIL01Bb0dDQ3FHU000OUJBTUNBMGNBTUVRQ0lHR0l3UEhKcWxXV3FPdkZMb2NmMVBkNldLYmR2QkllbjJJdmVkNUE2MUF3QWlCQ2oycGUvNWNYcVFiUmoxdHFwUWRrbWlpaWNwdjhDT3NvYW51WWUybXlEZz09IiwiTUlJQ0h6Q0NBY1NnQXdJQkFnSVVQVFFhVEc2ZU93VVUvTVd2bitUSklITTNiSG93Q2dZSUtvWkl6ajBFQXdJd2FqRUxNQWtHQTFVRUJoTUNSbEl4RURBT0JnTlZCQW9NQjFaQlRFMUpSRTh4THpBdEJnTlZCQXNNSmxCeWIyWnBaRzhnUVhWMGFHVnVkR2xqWVhSdmNpQkJkSFJsYzNSaGRHbHZiaUJTYjI5ME1SZ3dGZ1lEVlFRRERBOTNkM2N1ZG1Gc2JXbGtieTVqYjIwd0hoY05Nak13TmpJeU1USXhOVEF6V2hjTk1qZ3hNakV5TVRJeE5UQXpXakJsTVFzd0NRWURWUVFHRXdKR1VqRVFNQTRHQTFVRUNnd0hWa0ZNVFVsRVR6RXFNQ2dHQTFVRUN3d2hVSEp2Wm1sa2J5QkJkWFJvWlc1MGFXTmhkRzl5SUVGMGRHVnpkR0YwYVc5dU1SZ3dGZ1lEVlFRRERBOTNkM2N1ZG1Gc2JXbGtieTVqYjIwd1dUQVRCZ2NxaGtqT1BRSUJCZ2dxaGtqT1BRTUJCd05DQUFRbU5tbG9Td0xURFNjSmE0RHdWN3MydFgwQjhWV1VZcVoraDZmZ1hYejI0YVBNaXJmR1dWMnBCamVwUnplM0RZL2VpRk16bmJldUhJWkREWFkybGpzdm8wMHdTekFKQmdOVkhSTUVBakFBTUIwR0ExVWREZ1FXQkJUZU1BYzNhVGdZenVXSittTGFwcnhFRkxYWFBEQWZCZ05WSFNNRUdEQVdnQlErSDFHeXlzQnJFaWNhczJPTFc1aGlPUU1TRXpBS0JnZ3Foa2pPUFFRREFnTkpBREJHQWlFQS9hSGN1em0rRUhqeWJMaDFEWWxmQlpxenc3TXlTSjc1aWpvS1RSSFNPekFDSVFENm5vVmxXVUxEOXhoYU5TL3pVbkpYSGM5MEZqSmdhYStOWkF3OVdSUWNYZz09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUxRQUFBQzBDQVlBQUFBOXpRWXlBQUFBQ1hCSVdYTUFBQTdEQUFBT3d3SEhiNmhrQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUIzZDNjdWFXNXJjMk5oY0dVdWIzSm5tKzQ4R2dBQUVVcEpSRUZVZUp6dG5jbHpGRmVleDcrWldXdW1GaEFnd095SVZTQzBtR2szM1Y2dzNWNlFnWm1KNklpNWRFUjNkTjk3VG5QcDZJbm8yeHhtSm1ibTFuL0EzRG9tb3MxaTR3MDg3UVdIc1JhTWhOZ3NKQ09RaFZna1VHWXRXWlU1aDBKam1WWXBTOUszS2pOZnZzOEZiSVcrV2FpK2V2WGU3LzBXNWR2ZkgzUWhrUWlDNnZjTGtFaVlTRU5MaEVJYVdpSVUwdEFTb1pDR2xnaUZOTFJFS0tTaEpVSWhEUzBSQ21sb2lWQklRMHVFUWhwYUloVFMwQktoa0lhV0NJVTB0RVFvcEtFbFFpRU5MUkVLYVdpSlVFaERTNFJDR2xvaUZMRmFQRVRSNG5qbW4wNUROVlpTOUFyM1JqSCtYeituYUVubXAvblhmMFJ5MjdNVUxjZWF4cDEvN1laYnlGUDBGcUltSzdSYnRHRmVQRVBUaTYzZWdzVEdmVFE5eVErSnJWaVA1TlpPbXA3WmY3b21aZ1pxdU9Vd2U5K202aG1kUjZsNmt1OHh1bzRCQ3M4YVp0OHBtcFlYTlRPMFBmRU44cmVIYUhyNmdUZWh4Sk0wUGNrVEZBVjZSemROTG45N0NQWjMxMmw2WHRUMFVHajJucUJwcWFrNnBQZThTTk9UbEVodWZSYXhsUnRvZXN6M3ZCSnFhbWpyNnpOdzdSeE56K2c4UnRPU2xEQzZlRnM1dDVDSGRlbDltbDRsMU5UUVRuWUdtYUdQYVhxcEhjOUJhMXhMMDRzNlNrS0gzdm95VFM5eitSeWN6Q09hWGlYVVBBNXQ5cDdraVNrcWpQWWpQTDJJbzdlOUJpV2gwL1NvNzNXRjFOelEyZUVMS0V5TjAvU016bU9Bb3REMG9nd3pjbFI4ZEJmWm14ZG9lcFZTKzV0QzE0SFZkNW9tRjF1OUdZbU4rMmw2VVNYV3RBbkp6ZTAwUGJQbkJPQTROTDFLOGVYcTIrdzlBYmk4ZjZ6UkpRK0h5OFhvT3NyN3BITmRtUDI4UldzeCtHTG93dFE0c2pkN2FIcDYyK3RRNGltYVh1UlFWQmpFMkhOdXBBZUZCMk0wdmNYZ1czSVM4OENnSmcyazl4Nm02VVdOMVBhL2dkYTRqcWJueDJGd0Z0OE1uYmw4Rms3Mk1VMlBHVCtOR3N5Zm5aTXpZUTJlcGVrdEZ0OE03ZG81V0pjK29PbXhWNW1vb0ticXFKOXVtVXNmd0xXek5MM0Y0bXMrTkQwbVRkd0hSZ1gyK1dPbXhsZmRUK09yb2ZOakE3QW5idEQwakU3aVNUMGlNR1BQaFh1anlJOE4wUFNXZ3U4Vks4endUbXdWTjVZcU91d1kva3pQMjREcjd3d3EvdzNkOXc3Y1lvR21aM1MrUmRNU0hhUHJPTzhUelNuQ3V2Z3VSMnNaK0c1b3gzeUE3TFZQYVhwNjIrdlVmQVJoVWJsNU1KbHJuNlA0K0I1TmI2bjRibWlBZXpnc1pZd2RwdW1KU21ySElXZ056VFE5czgvZncrQXNnVEIwNXRwbjFOOXVYWlpuZWNJOEREcldOTEpYUDZQcExZZEFHSnE5LzBwdE8waXR1aEFOTmQxQXJmWXgrMDdCTGRvMHZlVVFERU9EZkVKV0ZPZ2RNays2SFBxQk42REVFalE5dnhLUjVpTXdobWJITUdXZWRIbVlwV3Y1MjVkcldnVHJSV0FNRFhBUGg3R1Z6eUM1cFlPbUp3cng1dTFJYk5oTDAvTXpFV2srQW1WbzY5TDcxRHdBV1VUNzF6Qnp4LzBvZ3ZVaVVJWXVaV3A5Uk5QVDkvOU14cVRub21yUW1iSG55MmRyWGdUclJhQU1EYkJqMG1ubysxNmg2WVdkOUs2ZlFxdGJSZE1MMm5ZRENLQ2hjeU85MUdvSDJUTHNlNWhic0ZJUjdGYzBQUmFCTXpSY0Z5YXhpRGE1dFF1eHBvMDB2YkNpNm8xSTdmb0pUYyt2SWxndmdtZG9QQ21pWmYyd0ZFWG1TUU13T3JwNXNXY2ZpMkM5Q0tTaGk0L3VJanY4SlUxUDd6eEs3YVlaUm93TzN0WXJlL01yMzRwZ3ZRanN1MHlOU2E5WWorVFdMcHBlMkVpczM0MzQrbDAwdlNBZUJtY0pyS0V6bDgvQnNhWm9lbEV1b21VbWF6azVFNW5MNTJoNmJBSnJhTGRvVTR0bzlkWlhvQ1NqRjVOV3REaU1BMi9ROU5pWFgyd0NhMmlnR2pIcG45SDB3a0pxOS9PMDJUWkFzTGNiUU1BTm5iOHpCSHY4R2swdml0c09adXk1Y0c4VStWdVhhSHJWSU5DR0JnQ3pqN2NpSkRkM0lOYTBpYVlYZExTNkpxUjJIcUxwemZSdzUrUlVnK0FiK3VLN3ZBbEtpZ0tqTXpveGFiMmpHNHBHbXR3WGtDSllMd0p2YU1lYVJ1YnFKelE5bytzNG9BYituMDNCYU9mOThyTEw1S3BGS041WjVrRkVhMmhHYXR0Qm1sNVFTV3hvUlh6ZFRwcGUwQStEczRUQzBObnI1MUdjbnFEcFJTRmhpWm4zWENTM21xZ21vVEEwWEFjbWNmK1dibjBGYXFxZXBoYzBGQzBPZmY5ck5EMnJuOXNNcUpxRXc5Q1k3ZnJQS2FKVjRrbWs5NzlLMFFvaTZkYkRVUFZHbXA3Wi93NU5xOXFFeHRDRis3ZVErN2FmcGlmeXRvTmFCRHMyR0tnaVdDOUNZMmlBZXpCSmJtNUhmTTFXbWw1UTBPclhJTlh5SEUwdkxJZkJXVUpsYUd2Z1E3ZzVpNmFuRThOYVFjSG9mSXNXbGd4aUVhd1hvVEswbTgvQUd2eVFwbWQwSGhVdUpxMTM4THF2WmdhNVkwTnFRZWplVFc1TWVnMVMyMzlFMC9PYnhLWTI2amFxMW9QbkdZVE8wTG5SZnRpVEl6UTlrUTZIek5nemUvUmVyUWlkb1FIQUl0YXpwVnRmRmlJbXJjU1QwUGZ6MG1PdHZsUFU0YWkxSXBTR05udFBBazZSb3FYRUV0RGJlSmNRZmtIOXhYVGRVTVdlNXhKS1F4ZG43aU56L1R4TlQ0UnRCelAySE9RaVdDOUNhV2lBbXlkZE9reHRvK25WR25iQ1ZkaGl6M01KcmFHelZ6NkJZejZrNmVraEhqWmtkQjJqaFIrZDdFeWdpMkM5Q0syaDNhSU44K0labXA3UjBSM09tTFNpVUNkL0JiMEkxb3NRdm9QZlkvYnlTb0pLVjhZL3B1blZDblpaV1ppM0cwRElEVzFQZklQOG5TR2FIak9PV3l1b3NlY0FUSUpkTHFFMk5NQmRVZEo3WDZLbVhWYWJVbXNHWGhyc1RNK2ZhVnArRVhwRFd4ZmZoV3ZuS0Zyc3hQaHFvKzk3bGRjOHh5bkM2ZzkrRWF3WG9UZTBrNTFCWnVoam1sNll0aDNNK0hubTZxY296dHluNmZsRjZBME5jTGNkaVEydGlLL2RRZE9yRnFVR2xKMDBQV1pjMzArRU1IUjIrQUlLVStNMHZURDBremE2anRGYUJKZUtZSU14Q1hhNUNHRm91QTRzWXRkL3ZlTXRYb09XYXFBbzBJbS9kRlpmZUlwZ3ZSREQwSmd0b3VWa2gybDFUVWp0Q0c1TW1qMzZPYWpkK0plQ01JWXVUSTBqTjlKTDAyUDJWR2JEZkczNXNRSFlFemRvZW40ampLRUJja3g2ejR0UTlSVTBQUlpLUW9mZWVwaW1GL2Fid2FjUnl0RFc0RWUwR2poRmkwTnZlNTJpeFVSdmU0MDJUTlMxYzlTbThrRkFLRU96MzZBZzlwT214cDR2bnd0ZEVhd1hRaGthSU1la245bExiWGk0WEdLck5pRzV1WjJtRjhZaVdDK0VNelQ3a0dNUTJ3SXNGNlB6S0tBb0ZLMndGc0Y2SVp5aEFXNFlTdTg0RW95WXRLSlNMM3pNM3BPaExJTDFRa3hERXk4S05LTUpxWjI4a2NKTEpkWHlJMmlONnpoaXJnc3JwRVd3WGdocGFJZDhsY3NzUUYzNmF5QlBnbjE0bTZZWEpJUTBOTUJOdG1HUFJsc3NhcW9PNmIwdjBmUkVQQXpPSXF5aE0xYy9wYzBFVWJRWWRYamxZdEhiM29BU1QxRzBTa1d3SDFPMGdvaXdoaTVOYlNJVzBUNzd0elN0UlQrYkdBKzNMcjBYNmlKWUw4UTFOTGdsUmZHMU82Z0Q0Q3NsdG5vekVodjMwL1JFdStwK0dxRU56WjU4YW5UVS91YXdyb3YzeVdEZkhVWitiSkNtRjBTRU5qVEFYWkdNam00b3NRUk56eE5WaGQ1eGhDWW4rdW9NUk1EUXpNWXBxdDZJMUs3YXhhUlRPdzVCcTEvREVRdkpKTmpsSXJ5aG5ad0phL0FzVGErVzJ3NXVFZXduUWhUQmVpRzhvUUZ5bnZUdTU2SFZyYUxwbFVOTk55Qzk1MFdhWGhTMkcwQkVESjBiNmVHMWgxVTE2TzF2Y3JRV1FEL3dKbTIvWHB4NWdPejF6eWxhUVNjU2hvYnJ3aVFXMGRiaUtwd2FlKzQvTFV3UnJCZlJNRFNlWFBjNm5PeXkrTm9XSko3WlE5RXFyNytYcGlkS3o0MUtpSXloaTQvdUlqdjhKVTJ2bWwzL3FaTmdiMTJDZmZjbVRTL29STWJRQVBkZ3BMY2ZxVTVNbXJ4SGo4cGhjSlpJR1RvejlERWNhNXFpcGFZYmtOcjlQRVZyTHN3b2ltdm5ZQTN3QnBXR2dVZ1ptajNxdHhyYkRtNFJiUGdtd1M2WFNCa2FJTWVrZC80RVd2MXFtbDdwSnZLbk5MMm9iVGVBQ0JvNmYyY0k5bmZYT1dMay9hN1IwUTFGaTFPMFJDMkM5U0p5aGdhNFlTeWo4emhSaXhmZEVMVUkxb3RvR3JyL0hiaUZQRVVyM3J3TmlRMnR5OVpKck4vTjZ3RWljQkdzRjVFMHRHTk5JM1AxRTVvZW8rcy9zd0ZqZHZpQ3NFV3dYa1RTMEFBNUpuM2dUU2p4NUpLL1g5SGkxSnJGS0I0R1o0bXNvYk0zenFNNFBVSFJVbE4xU085K1ljbmZuOXJ6QXEycW5EMXpKbXhFMXRCd0hKakVoUGZsSE9pWXNXZnI2ek5DRjhGNkVWMURZN2JydjB2UlN1MzhNYlNHNWtWL1gybGF3Q0hLYXdDaXZkMEFJbTdvd3YxYnlIMTdrU09tcUREYUYxLy9wM2QwMDNybjJYZUhrYjk5bWFJVlZpSnRhSUJjUk50MWZOSGRRWm5kVFVYdWlGUXBrVGUwTmZBQjNKeEYwVnBzRDQzRXhuMjhtWWpreGpwaEpmS0dkdk1aV0lPOGpEU2pzL0lWbDVxSWRDVWFSYkJlUk43UUFEa21YV0VmT2lXV29NNXdNZnZrZGdPUWhnWUE1RWI3WVUrT1VMUXE3UlNhM3ZzUzFIUUQ1Wm1sSXRqekZLMndJdzM5Qkl2WTliK1NiUWN6RVNsS1JiQmVTRU0vd2V3N1RTdWlUYlU4QjYxeGJkbXZhdzFya0dwNWp2SXNJRnBGc0Y1SVF6K2grSGdTMlJ1a2oyMlBlU2hHeDF1QXl2blJSNjBJMWd0cDZEbFFZOUtkeDhyR3BIVmk3SGxHeHA1L2dEVDBIREpYL2dMSGZFalJpcTNhaE9TbXRyLzYvOG5OQnhCZnM1WHlETmZPSVRQd0VVVkxGS1NoNStBV2JaaGZ2MGZUbSsvZ1J6ME1Fa2RCaTRJMDlGT1lQVy9UdE5KdHIvMGdKcTNFazBqdmY1V21IL1ZFcFBtUWhuNEtlK0lHOG5lR0tGcHEwa0M2OWZELy8zZTY5V1dvcVhxS2RtRnFITG1SWG9xV1NFaER6d1A5Y0RqUDM1ZExLZlUxZWtXd1hraER6NE4xOFYyNGRvNmlsZHArRUZyak9tZ056VWh0TzBqUmhPdkFJblpURllrQURMRU9IazUyQnBrci84dkp0VkRVSnplSENpMzJuQjIrZ01MVU9FVkxOS1NoeTJEMm5LQWxENVd5NmppVk1ZQThEQzZFTkhRWlpsZkIySXIxeTlhS05XMGt2S0lTVVMrQzlVTHVvY3ZoT3RTRUpSYWxJbGpPL2w1RXBLRVhJSWp0dEdTWjFjTElMY2NDRkI3ZVFXNmtGMGxXZEdLWjJCUGZJSCtiRXlPZmowZTJpZ2U1K2ZOUDZ1TXVWaVhuLytWK21GY3duVjk0YlV4cUxtS0tDejBHeEZVWGlTb3RwZExRSHBpOUp3Tmo2R3F2emw5TWF2anY0Zms3UUwyeTNzYXZXdWJmNnJ4L0o0N1RZNHViWmhCWGdkVkpCK3ZTRG5iVUYzRmdaUkZiNnBiL2FTaTNIQjRFSmwvQ0tjSWk1cG40amUwQTR4a1ZmUTlpK05Ob0V2L2NyK04zdlRvK240ekJXVVpBU0JyYWc2Q01kY2hjK1l2d1JiQmpsb28vWGszaFh3YlN1SmRkWER1SVdhU2hLeUFJY2Q4b0hRYXZUbXY0dzBVZG82YTI2TytWaHE0QXY2dENpak1Qa0wzeGhXL1A5NE5IdG9KL0cwemhmcGxEYWpua29iQkN6TDZUV1BIR2IzMTV0dFYzS3JSRnNNYzM1WEZrZ3cwQXlCVUJxNmpnYmxiRjlVY2F6ay9HeWtaVkFHQTZyK0EvaDlMNFEzc0dtbExaeGxxdTBCWGlaMlcxMlhmS2wrY3lpS3VBRVhOaHhGdzBKVjFzMUIxME5SWHdEMXR6K1BlREpuN1prbHN3aERjNm8rTGNkNVd2dTlMUUZWS2NlWURzdGM5cS90ejhyVXV3SjhVc2d0VVU0TlgxTm43WFppR2hsbCtCVDl4S0lGOWhSRThhZWhINDBTNGdDa1d3MitzZC9HSjcrWmszVTNrRkExT1ZyZExTMElzZ2MvWFRtb2JPb2xRRSs4SmFHODJwOHN2d3dNUEtJaDdTMEl2QktjTHE1M1g5OThJYS9EQVlsem8xUUZPQWc2dUtaYjkrWlZvYXVpck05UHk1WnM4S1F2eTdsdXhvS0gvb2ZwaXZMSHduRGIxSUN2ZEdrUjhicVA1em5pUkdSWW5HZVBtRG9WVlFVS3dnY2ljTnZRUnFzWEtXVWxkNVZTNWhJQlVydndxN0FHekhlNVdXaGw0QzF0ZnZWWGZTbE91RU92YThWQjR2TU54WFUwb3BxRjVJUXk4QkoyZkNHanhiTmYzc04xK2lPUDFkMWZTRHlrTFgzSFZ4RjVYc29xV2hsMGcxdHgxUk93ek9jdVZSK1ZoemMwcGVmVmVWM0VnUENnL0c2THF6TFJTaWhsVlEwSE8vZkdodTM0ckswZzVrY3RKU2NWMk0vOGZmKy8wcWhPRlBvd2xZaGZLYmluMHJ5c2VvNXlKWGFJbnZuTG1Ud0VmajhiSmYzMUxuWUZkRFpZYVdLN1RFTjI1Ykt2NW5OSUd2N2k5c3c1OXZ5VmQwSUFTa29TVlY1cmFsNHN0N0pac1ZYY0FzS0pqSXFMaitXTVBOeDZwblA2bERhMnkwcjZ3OGJWY2FXbEpWdnBpTTRZdkpwZGxzVzUyRDMreGNJRGc5RDlMUWtrQ3l1N0dJZjl5YlhUQlBlajZrb1NXQlFsT0FveHZ6K0x2TmRzVmxWM09SaHBZRUFpUG00dENhQXJvMzVMRzZ3a3VVK1pDR2xsU2RoT29pcmdKNnJQUm5RblZSRnk5MVRscWZkdEZTWDBSTHZiT2tGZmxwbEc5L2Z6QmFLVjBTb1pFWEt4S2hrSWFXQ0lVMHRFUW9wS0VsUWlFTkxSRUthV2lKVUVoRFM0UkNHbG9pRk5MUUVxR1FocFlJeGY4QmZTd1hkNVBWU1ZZQUFBQUFTVVZPUks1Q1lJST0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJGSURPXzJfMCIsIkZJRE9fMl8xX1BSRSIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiI1NjI2YmVkNGU3NTY0MzBiYTdmZmNhNzhjOGIxMjczOCIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwidXYiOmZhbHNlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwiYmlvRW5yb2xsIjpmYWxzZSwidXZCaW9FbnJvbGwiOnRydWUsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImFsd2F5c1V2Ijp0cnVlfSwibWF4TXNnU2l6ZSI6MTIwMCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0IjoyMCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoxMjgsInRyYW5zcG9ydHMiOlsiYmxlIl19fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMy0wOC0yMyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IlZBTE1JRE8gUFJPIEZJRE8iLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDIzMDgyMzAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIzLTA4LTIzIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjF9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjQtMDItMTQifSx7ImFhZ3VpZCI6IjI2MGUzMDIxLTQ4MmQtNDQyZC04MzhjLTdlZGZiZTE1M2I3ZSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiMjYwZTMwMjEtNDgyZC00NDJkLTgzOGMtN2VkZmJlMTUzYjdlIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkZlaXRpYW4gZVBhc3MgRklETzItTkZDIFBsdXMgQXV0aGVudGljYXRvciJ9LCJkZXNjcmlwdGlvbiI6IkZlaXRpYW4gZVBhc3MgRklETzItTkZDIFBsdXMgQXV0aGVudGljYXRvciIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQjJEQ0NBWDZnQXdJQkFnSVFGWjk3d3MySkdQRW9hNU5JK3A4ejFqQUtCZ2dxaGtqT1BRUURBakJMTVFzd0NRWURWUVFHRXdKRFRqRWRNQnNHQTFVRUNnd1VSbVZwZEdsaGJpQlVaV05vYm05c2IyZHBaWE14SFRBYkJnTlZCQU1NRkVabGFYUnBZVzRnUmtsRVR5QlNiMjkwSUVOQk1DQVhEVEU0TURRd01UQXdNREF3TUZvWUR6SXdORGd3TXpNeE1qTTFPVFU1V2pCTE1Rc3dDUVlEVlFRR0V3SkRUakVkTUJzR0ExVUVDZ3dVUm1WcGRHbGhiaUJVWldOb2JtOXNiMmRwWlhNeEhUQWJCZ05WQkFNTUZFWmxhWFJwWVc0Z1JrbEVUeUJTYjI5MElFTkJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVuZkFLYmp2TVgxRXkxYjZrK1dRUWROVk10OUpnR1d5SjNQdk00QlNLNVhxVGZvKyswb0FqLzR0bnd5SUwwSEZCUjlTdCtrdGpxU1hEZmppWEF1cnM4Nk5DTUVBd0hRWURWUjBPQkJZRUZOR2htRTJCZjhPNWEvWUhaNzFRRXY2UVJmRlVNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdEZ1lEVlIwUEFRSC9CQVFEQWdFR01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lRQzNzVDFsQmpHZUYreEtUcHpWMUtZVTJja2FoVGQ0bUxKeXpZT2hhSHY0aWdJZ0QySllrZnlINVE0QnBvOHJyb08wSXQ3b1lqRjJrZ3kvZVNaM1U5R2xhcXc9IiwiTUlJQjJEQ0NBWDZnQXdJQkFnSVFHQlVyUWJkRHJtMjBGWm5Ec1gyQ0JUQUtCZ2dxaGtqT1BRUURBakJMTVFzd0NRWURWUVFHRXdKVlV6RWRNQnNHQTFVRUNnd1VSbVZwZEdsaGJpQlVaV05vYm05c2IyZHBaWE14SFRBYkJnTlZCQU1NRkVabGFYUnBZVzRnUmtsRVR5QlNiMjkwSUVOQk1DQVhEVEU0TURRd01UQXdNREF3TUZvWUR6SXdORGd3TXpNeE1qTTFPVFU1V2pCTE1Rc3dDUVlEVlFRR0V3SlZVekVkTUJzR0ExVUVDZ3dVUm1WcGRHbGhiaUJVWldOb2JtOXNiMmRwWlhNeEhUQWJCZ05WQkFNTUZFWmxhWFJwWVc0Z1JrbEVUeUJTYjI5MElFTkJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVzRllFRWhpSnVxcW5NZ1FqU2lpdkJqVjdER0NUZjRYQkJIL0I3dXZac0t4WFNoRjBMOHVESVNXVXZjRXhpeFJzNmdCM29sZFNyam94Nkw4VDk0Tk96cU5DTUVBd0hRWURWUjBPQkJZRUZFdTloeVlSclJ5Snp3Ull2bkRTQ0l4ckZpTzNNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdEZ1lEVlIwUEFRSC9CQVFEQWdFR01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lESFNiMm1iTkRBVU5YdnBQVTBvV0tlTnllMGZRMmw5RDAxQVIyK3NMWmRoQWlFQW8zd3o2ODRJRk1Wc0NDUm11SnF4SDZGUVJFU05xZXp1bzFFK0trR3hXdU09IiwiTUlJQmZqQ0NBU1dnQXdJQkFnSUJBVEFLQmdncWhrak9QUVFEQWpBWE1SVXdFd1lEVlFRRERBeEdWQ0JHU1VSUElEQXlNREF3SUJjTk1UWXdOVEF4TURBd01EQXdXaGdQTWpBMU1EQTFNREV3TURBd01EQmFNQmN4RlRBVEJnTlZCQU1NREVaVUlFWkpSRThnTURJd01EQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJOQm1yUnFWT3h6dFRKVk4xOXZ0ZHFjTDd0S1Flb2wybm5NMi95WWd2a3NabnI1MFNLYlZnSUVrekhRVk91ODBMVkVFM2xWaGVPMUhqZ2d4QWxUNm80V2pZREJlTUIwR0ExVWREZ1FXQkJSSkZXUXQxYnZHM2pNNlhnbVYvSWNqTnRPL0N6QWZCZ05WSFNNRUdEQVdnQlJKRldRdDFidkczak02WGdtVi9JY2pOdE8vQ3pBTUJnTlZIUk1FQlRBREFRSC9NQTRHQTFVZER3RUIvd1FFQXdJQkJqQUtCZ2dxaGtqT1BRUURBZ05IQURCRUFpQXdmUHFnSVdJVUIrUUJCYVZHc2RIeTBzNVJNeGxrenBTWC96U3lUWm1VcFFJZ0Iyd0o2blpSTThvWC9uQTQzUmg2U0pvdk0yWHdDQ0gvLytMaXJCQWJCME09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUZBQUFBQVVDQU1BQUFBdEJrcmxBQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQkhacFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR3L2VIQmhZMnRsZENCaVpXZHBiajBpNzd1L0lpQnBaRDBpVnpWTk1FMXdRMlZvYVVoNmNtVlRlazVVWTNwcll6bGtJajgrSUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWtGa2IySmxJRmhOVUNCRGIzSmxJRFV1Tmkxak1ERTBJRGM1TGpFMU5qYzVOeXdnTWpBeE5DOHdPQzh5TUMwd09UbzFNem93TWlBZ0lDQWdJQ0FnSWo0Z1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNGdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlnZUcxc2JuTTZlRzF3UFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIaHRiRzV6T25Cb2IzUnZjMmh2Y0QwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOXdhRzkwYjNOb2IzQXZNUzR3THlJZ2VHMXNibk02ZUcxd1RVMDlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl0YlM4aUlIaHRiRzV6T25OMFVtVm1QU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2YzFSNWNHVXZVbVZ6YjNWeVkyVlNaV1lqSWlCNGJYQTZRM0psWVhSdmNsUnZiMnc5SWtGa2IySmxJRkJvYjNSdmMyaHZjQ0JEUXlBeU1ERTBJQ2hOWVdOcGJuUnZjMmdwSWlCNGJYQTZRM0psWVhSbFJHRjBaVDBpTWpBeE5pMHhNaTB6TUZReE5Eb3pNem93T0Nzd09Eb3dNQ0lnZUcxd09rMXZaR2xtZVVSaGRHVTlJakl3TVRZdE1USXRNekJVTURjNk16RTZOVGtyTURnNk1EQWlJSGh0Y0RwTlpYUmhaR0YwWVVSaGRHVTlJakl3TVRZdE1USXRNekJVTURjNk16RTZOVGtyTURnNk1EQWlJR1JqT21admNtMWhkRDBpYVcxaFoyVXZjRzVuSWlCd2FHOTBiM05vYjNBNlNHbHpkRzl5ZVQwaU1qQXhOaTB4TWkwek1GUXhOVG96TURveU55c3dPRG93TUNZamVEazc1cGFINUx1MklPYWNxdWFnaCttaW1DMHhJT1czc3VhSmsrVzhnQ1lqZUVFN0lpQjRiWEJOVFRwSmJuTjBZVzVqWlVsRVBTSjRiWEF1YVdsa09qSkZOekZDUmtaRFF6WTNSakV4UlRZNU56aEVRVGxEUWtJMk5EWXpSamt3SWlCNGJYQk5UVHBFYjJOMWJXVnVkRWxFUFNKNGJYQXVaR2xrT2pKRk56RkNSa1pFUXpZM1JqRXhSVFk1TnpoRVFUbERRa0kyTkRZelJqa3dJajRnUEhodGNFMU5Pa1JsY21sMlpXUkdjbTl0SUhOMFVtVm1PbWx1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2TWtVM01VSkdSa0ZETmpkR01URkZOamszT0VSQk9VTkNRalkwTmpOR09UQWlJSE4wVW1WbU9tUnZZM1Z0Wlc1MFNVUTlJbmh0Y0M1a2FXUTZNa1UzTVVKR1JrSkROamRHTVRGRk5qazNPRVJCT1VOQ1FqWTBOak5HT1RBaUx6NGdQQzl5WkdZNlJHVnpZM0pwY0hScGIyNCtJRHd2Y21SbU9sSkVSajRnUEM5NE9uaHRjRzFsZEdFK0lEdy9lSEJoWTJ0bGRDQmxibVE5SW5JaVB6NDc3SlhGQUFBQVlGQk1WRVgvLy84RVZxSVhaYXZHMk9vcWNMRzJ6T09rd3QwQlNKdHFsY1hWNHUrYXV0bFdoYnprN1BVQU1ZOUhjcktqdE5icThmZUFsOGFCb3N6ejl2cGRqc0dHcXRGM244dVRzTlNacGM2SnNOVDUrdjB4WUtudThQZmY1L0w0OGZnL2ZyaWN6SmdZQUFBREFFbEVRVlI0MmtSVUNaYkRJQWpGWFpPWTFUYXROYzM5Ynprc1NZYzNyNE1FNGZNQkFhRDZ6bDh5LzlUT2dldDhkNWpmTjc4YndNL2REQ1JwUjUyMXpYZm9qSEowNUlJeWhCQVVTVkFPTmRHekJZdDJmN0tGcmZrSmFBa0hoOUZaaGNEWEhSa1RLbzlNTGloR2FhdkltblYzcXlFWDBFcHJnei80RHdVRDdrQ0hSbmQ4UUZONDNHbzRVVm1ERGd6YTR3MjdvaXpkQTIrY0srdXVVcGpqbzIreHdjLzQyVzUweDVMR1llREJzUjBIVkl4NXg4aUY2MENibGJURUVrRnIyN2JOREJVVlNxMU9LVlBiRTYyYjNFSDhGcUJnNU9PT0V1YzJ0OFpKaXFNT3VHcCtjS2pnN3dWR2Nlb3pxTjRweGdWUFFrakZZZ2JWSktEVWhEQ2pZcmF3UDVxNEVUZ0M5ZklNUkh0aXRwUWNDdkpPRUxjYk1zUWduY2lSa2xqcHlRanZHNDRqcUJVRVRGaUJpMVBFSXlla096c1crVHk1Y0xIb3M1UitkTVMxTHRTU3hmM2dRSGN6UjJDSTRnTU5wVzRJUkExUU1hNnRKNCtDNnVIdUdFOG1OREl5RnFnL09QL01NVXVlUzZJcThTOTBkQWVCSlNFeS9xS2tLK0JOd3o4Y1lZNGpiNUo2dTRpV0NJMkIxWjU2TFc1a0VjNGhrZE1wc3ZVQzU1ODVTWDBRdWJjZ05xeWZnREZFY1R0KzQwLzBTNU54MHdhQ3czT0trY09iQTVJbjBBWXAwMXBqancybjYyNlVEanRId2EyOGlIdVRLcXRydityZVc0MU5aNmlHbHI3dXVMSkNma0Z0Y3RjRzA0c2dtMWVOUytaYURucGFURXJHb3lYNUpLMmlNejh4czBuT3dXR2NQRE40OXFhQ2Q0YnpKb3pEWm0vYUJLK0Vvekx3K1hoTkJpWXdIZjBzaU91MVhQa0cvekt3dnFZS2NmU3dERWNIL29VZTA3ZXMvV1E4ckl5ZzJET1hqOHRqa1pkdURCL2I4aHpEbGxNTU9DUzVCRW5kNTM0Zjh0aTNVWmM0a01zM3hMeWFmTVNzSmhkRzhYUHFqTms1dEFnTzI1ZmVLQ2huVmREai9KMEZNa09zVS94TUJ2MHdGaFllRUdmVkgxM2Z1RFUweURGTGE0ZmM3Um5XSEJmdVRGVjJ0RW1Od2FkYzdhYzNVWTJqZkJsN0hUMzZmZTM0aVFPNW1OQ0ZGQlcwN0tqUGdxaE9MVTAxdlo4UHVlWjJKQ2xGWk44amtVczY5dWthOWVQcDYrRWZMNEFGNStOeXdTYmlySHRjQjhNbC9na3dBRWprSzY0S2pIUGVBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMV9QUkUiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6IjI2MGUzMDIxNDgyZDQ0MmQ4MzhjN2VkZmJlMTUzYjdlIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWV9LCJtYXhNc2dTaXplIjoxMDI0LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0Ijo2LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjk2LCJ0cmFuc3BvcnRzIjpbIm5mYyIsInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0wNy0xOSJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjQtMDctMTkifSx7ImFhZ3VpZCI6Ijk1ZTRkNThjLTA1NmUtNGE2NS04NjZkLWY1YTY5NjU5ZTg4MCIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiOTVlNGQ1OGMtMDU2ZS00YTY1LTg2NmQtZjVhNjk2NTllODgwIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlRydVUgV2luZG93cyBBdXRoZW50aWNhdG9yIn0sImRlc2NyaXB0aW9uIjoiVHJ1VSBXaW5kb3dzIEF1dGhlbnRpY2F0b3IiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbInNvZnR3YXJlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbInNvZnR3YXJlIl0sImNyeXB0b1N0cmVuZ3RoIjoyNTYsImF0dGFjaG1lbnRIaW50IjpbImludGVybmFsIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDZURDQ0FoMmdBd0lCQWdJVWVoZFZqSkpKRXlLM0NBRVNIVTM1VEdZKzdpWXdDZ1lJS29aSXpqMEVBd0l3Z1k4eEN6QUpCZ05WQkFZVEFsVlRNUkV3RHdZRFZRUUlEQWhEYjJ4dmNtRmtiekVQTUEwR0ExVUVCd3dHUkdWdWRtVnlNUk13RVFZRFZRUUtEQXBVY25WVkxDQkpibU11TVJnd0ZnWURWUVFMREE5RmJuUmxjbkJ5YVhObElFRjFkR2d4RURBT0JnTlZCQU1NQjNSeWRYVXVZV2t4R3pBWkJna3Foa2lHOXcwQkNRRVdER2x1Wm05QWRISjFkUzVoYVRBZ0Z3MHlNekV4TURJeE16VTNOREJhR0E4eU1EVXpNVEF5TlRFek5UYzBNRm93Z1k4eEN6QUpCZ05WQkFZVEFsVlRNUkV3RHdZRFZRUUlEQWhEYjJ4dmNtRmtiekVQTUEwR0ExVUVCd3dHUkdWdWRtVnlNUk13RVFZRFZRUUtEQXBVY25WVkxDQkpibU11TVJnd0ZnWURWUVFMREE5RmJuUmxjbkJ5YVhObElFRjFkR2d4RURBT0JnTlZCQU1NQjNSeWRYVXVZV2t4R3pBWkJna3Foa2lHOXcwQkNRRVdER2x1Wm05QWRISjFkUzVoYVRCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQkJydnRhbmx4WHJKa1MyUVYvQ0hkenVicENtL3E4TzB5NnMwRzVFQzNFeUMvZkF2VTh5STQ3K1h2WnFPdnJpUEsrb2NSU0x4Q2EvcGZNbVhDdmhRYW8yalV6QlJNQjBHQTFVZERnUVdCQlQ2VCtSYnVwT1lQdzhiMll4d00vQ3ErV2Joa1RBZkJnTlZIU01FR0RBV2dCVDZUK1JidXBPWVB3OGIyWXh3TS9DcStXYmhrVEFQQmdOVkhSTUJBZjhFQlRBREFRSC9NQW9HQ0NxR1NNNDlCQU1DQTBrQU1FWUNJUUNoeXQyVVdDaStCWk9yMU5qWHBnRzZzeDhLbEVka0RMWFpZNng2dnJrT2FBSWhBSjBVZkVQNFY2TS9hcWhYYjhGYndYSzBtZUFjYThJVmRESm5vU01wQkd3SSIsIk1JSUNTekNDQWZLZ0F3SUJBZ0lVVzNYSzh5eXdiQVdsaWdsaXhJRjYzZHZxWXk4d0NnWUlLb1pJemowRUF3SXdmREVMTUFrR0ExVUVCaE1DVlZNeEVUQVBCZ05WQkFnTUNFTnZiRzl5WVdSdk1ROHdEUVlEVlFRSERBWkVaVzUyWlhJeEV6QVJCZ05WQkFvTUNsUnlkVlVzSUVsdVl5NHhJakFnQmdOVkJBc01HVUYxZEdobGJuUnBZMkYwYjNJZ1FYUjBaWE4wWVhScGIyNHhFREFPQmdOVkJBTU1CM1J5ZFhVdVlXa3dJQmNOTWpNeE1UQXpNakF6TmpVeFdoZ1BNakExTXpFd01qWXlNRE0yTlRGYU1Id3hDekFKQmdOVkJBWVRBbFZUTVJFd0R3WURWUVFJREFoRGIyeHZjbUZrYnpFUE1BMEdBMVVFQnd3R1JHVnVkbVZ5TVJNd0VRWURWUVFLREFwVWNuVlZMQ0JKYm1NdU1TSXdJQVlEVlFRTERCbEJkWFJvWlc1MGFXTmhkRzl5SUVGMGRHVnpkR0YwYVc5dU1SQXdEZ1lEVlFRRERBZDBjblYxTG1GcE1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRU5BdmJ0Y2NNcjdqL1NSV21xSUVaVFJXTkp5ajZtc1lyNWxHZUFnZFNHeUM5TzAzNTZSSWVjdWFWaU9xejBEeGdTMWYvNUtQYlpwMXQweUQyZlZSWDk2TlFNRTR3SFFZRFZSME9CQllFRkE1dEwxMGc4OHQycVhsUGxoSVNJMmRJemxhVk1COEdBMVVkSXdRWU1CYUFGQTV0TDEwZzg4dDJxWGxQbGhJU0kyZEl6bGFWTUF3R0ExVWRFd0VCL3dRQ01BQXdDZ1lJS29aSXpqMEVBd0lEUndBd1JBSWdYZnV2anNwKzR2NWlHT3FuZ1VnT2cxaG1iZ0ZQRk1nSWp5V3hDS3F3L2Q4Q0lGaW1MTlhMREl3QStvSWJQMXlPZnFFOHhrNnE3LzRMV09WWWtSQUxvQkMyIl0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQkFBQUFBUUFDQVlBQUFCL0hTdURBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFGMEtTVVJCVkhnQjdOMTlqSjdsZlNmNkMyemlBWTlqeHVBWkQyYWhZQ2Zubk9pa29FUTVTdVZJU2M3bWxLcE5sUXJuanpSVWNjNXFTVnV6bFRad0NsbXBNUTMwYUJPekJhMVdIZ281MnRXTU5qUTYwbGlORHBGS1RycHRWcG0yMmlvUkpOTFpzNGtkVW1Md3ZOZ2VnMmNjRHk5bW45OWpoaGpqbDNsNW51ZStyL3Y2ZktSWjAwMUtzWm01bi92NlhyK1h5ejd3MFY5L1BRRUFBQUNOZG5rQ0FBQUFHazhBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVlltNERLZmVhYUkybFg2d3NBb0VubVRsK2V4bWMzcGYydHIvaHJvRnFYZmVDanYvNTZBaXEzNVlwWDJrSEFiZTk4TVFFQTVPNnBGemVtc1dQWHBzbFhya2hBUFFnQW9HYTJyMXRJWDdydVVEc1FBQURJemRNbnIwcGpSNjlOei96OHFnVFVpd0FBYWlvcUFhSWlRQkFBQU9RZ1N2eEhwb2ZTVXk5dFRFQTltUUVBTlJVZm5wR2MvMm9yQ0RBZkFBQ29LMzMra0E4VkFKQUI4d0VBZ0RxS2N2K0hwb2IxK1VNbUJBQ1FrUjNyVDZUZGc5UGFBZ0NBU2gwNDFaZEdaZ2IxK1VObXRBQkFSaWJtTjZTSlp6ZVlEd0FBVkNKSy9FZVBiazc3WndjU2tCOEJBR1JvY1Q2QXRnQUFvRmVpenorbSsrdnpoM3hwQVlETVJSWEE3czNUYVVmL2lRUUEwR25SNS8vb3pHQTZzTkNYZ0x3SkFLQWh0QVVBQUowVWcvMzJUZzdyODRjR0VRQkF3MFFJc0hQZ1dPcS8vSFFDQUZndWEvMmd1UVFBMEVEV0JnSUFLL0hVaXh2VHlNeVFnejgwbEFBQUdpeUNnRCs5L2psdEFRREFSVVdmZnd6NFUrNFB6U1lBZ0FLWUR3QUFuRS8wK2NmQlB6WU1BYzFuRFNBVUlEN1VKK2I2MCswRHMybFhLd2dBQU1xbXp4L0twQUlBQ21NK0FBQ1VMUzRGb3M4L2J2K0JzZ2dBb0ZDM1hIa3kzYnZsc0xZQUFDaUVQbjlBQUFDRk14OEFBSm90U3Z4SGoyNU8rMmNIRWxBMk13Q2djREVmSUc0Q2JyOTZOdTBjT0pZQWdPWVliZDM0Ni9NSEZxa0FBTjVrUGdBQU5FT1UrejgwTmF6UEgzZ0xGUURBbStJbFllL2tjSHFtOWRLZ0xRQUE4dlBtWjdrK2YrQThWQUFBRjdUejZ0bDArOEF4UVFBQTFOemlXcjhZOGdkd0lTb0FnQXNhUHo2UUp1Yjd0UVVBUUkwdEh2ejErUU9Yb2dJQVdKS29BdmpEb2NQcDFxdE9KZ0NnZXRiNkFjc2xBQUNXeGRwQUFLaFc5UG1QVEErMXEvUUFsa01BQUt4SWhBQ3hOckQvOHRNSkFPaSt4VDUvYS8yQWxSSUFBQ3RtYlNBQTlNWlRMMjVNWThldXRkWVBXQlVCQUxCcUVRVDg2ZlhQYVFzQWdBN1Q1dzkwa2dBQTZCanpBUUNnTTZMRVAvcjhuM3BwWXdMb0ZHc0FnWTZKbDVTSnVmNTArOEJzMnRVS0FnQ0E1ZEhuRDNTVENnQ2dLOHdIQUlEbGlYTC9oNmFHOWZrRFhTTUFBTHBxeC9vVGFmZmd0TFlBQUxpQUE2ZjYwc2pNb0Q1L29PdTBBQUJkTlRHL0lVMDh1OEY4QUFBNFI1VDRqeDdkblBiUERpU0FYaEFBQUQwUjh3SGlaa05iQUFDa2RwOS9UUGZYNXcvMGtoWUFvT2VpQ21EMzV1bTBvLzlFQW9DU1JKLy9vek9ENmNCQ1h3TG9OUUVBVUJsdEFRQ1VJZ2I3N1owYzF1Y1BWRW9BQUZSdXNTMUFFQUJBMDFqckI5U0pBQUNvQldzREFXaWFwMTdjbUVabWhoejhnZG9RQUFDMUVrSEFsNjQ3bExhdlcwZ0FrS1BvODQ4QmY4cjlnYm9SQUFDMVpENEFBTG1KUHY4NCtNZm1HNEE2RWdBQXRSWWh3SzdXRndEVWxUNS9JQmNDQUtEMnpBY0FvSzRtNXZyYmZmNXgrdzlRZHdJQUlCc3hGeURtQTJnTEFLQnErdnlCSEFrQWdPeVlEd0JBVmFMRWYvVG81clIvZGlBQjVHWnRBc2hNREZlS0c1ZGZiUVVCNWdNQTBDdWpyUnQvZmY1QXpsUUFBRmt6SHdDQWJvdHkvNGVtaHZYNUE5bFRBUUJrTFY3RzlrNE9wMmRhTDJmYUFnRG9wRGMvWS9UNUF3MmhBZ0JvRlBNQkFGaXR4YlYrTWVRUG9FbFVBQUNOc2pnZlFGc0FBQ3V4ZVBEWDV3ODBrUW9Bb0xHaUNtRDM1dW0wby85RUFvQ0xzZFlQS0lFQUFHZzhiUUVBWEVqMCtZOU1ENldKK2Y0RTBIUUNBS0FZRVFMc0hEaVcraTgvblFBbzIyS2Z2N1YrUUVrRUFFQlJyQTBFNEtrWE42YXhZOWRhNndjVVJ3QUFGQ21DZ0QrOS9qbHRBUUFGMGVjUGxFNEFBQlROZkFDQTVvc1MvK2p6ajAweEFDV3pCaEFvV3J3TVRzejFwOXNIWnRPdVZoQUFRSFBvOHdkNEt4VUFBRzh3SHdDZ09hTGMvNkdwWVgzK0FHY1JBQUNjNDVZclQ2Wjd0eHpXRmdDUW9Uanc3NTBjMXVjUGNCNENBSUFMTUI4QUlCOVI0ajk2ZEhQYVB6dVFBRGcvTXdBQUxpRG1BOFFOMHUxWHo2YWRBOGNTQVBVVWZmNHgzVitmUDhERnFRQUFXQUx6QVFEcUovcjhINTBaVEFjVytoSUFsNllDQUdBSjN1d3BiYjFzYWdzQXFKWStmNENWVVFFQXNBSTdyNTVOdHc4Y0V3UUE5SkMxZmdDcm93SUFZQVhHancra2lmbCtiUUVBUGZMVWl4dlR5TXlRZ3ovQUtxZ0FBRmlscUFMNDBuV0gwdloxQ3dtQXpvbysveGp3cDl3ZllQVUVBQUFkWW0wZ1FPZEVuMzhjL0dNakN3Q2RJUUFBNkxBSUFYYTF2Z0JZUG4zK0FOMGpBQURvQW1zREFaWXZ5djBmbWhwdTMvNEQwSGtDQUlBdWlpRGdUNjkvVGxzQXdFWG84d2ZvRFFFQVFBK1lEd0R3ZGxIaVAzcDBjOW8vTzVBQTZENXJBQUY2SUlaWXhjM1dyN2FDQVBNQkFGSzd6ejl1L2ZYNUEvU09DZ0NBSGpNZkFDaVpQbitBNmdnQUFDcXlZLzJKdEh0d1dsc0FVSVE0OE8rZEhOYm5EMUFoTFFBQUZabVkzNUFtbnQxZ1BnRFFhSXRyL2FMY0g0QnFDUUFBS3JZNEgwQmJBTkEwK3Z3QjZrVUxBRUNOUkJYQTdzM1RhVWYvaVFTUUsydjlBT3BKQUFCUVE5b0NnQnhGbi8vSTlGQ2FtTzlQQU5TUEFBQ2d4aGJiQWdRQlFKMHQ5dm52YjMwcDl3ZW9Md0VBUU0xWkd3alUyVk12Ymt4ang2NjExZzhnQXdJQWdFeEVFUENsNnc2bDdlc1dFa0RWOVBrRDVFY0FBSkFaOHdHQUtrV0ovK2pSelduLzdFQUNJQzhDQUlCTVJRaXdxL1VGMEN1anJSdC9mZjRBK1JJQUFHVE1mQUNnRjZMYy82R3BZWDMrQUprVEFBQTBRTXdGaVBrQTJnS0FUb29ELzk3SllYMytBS2taQkFBQURXSStBTkFKK3Z3Qm1tbHRBcUF4bm5wcFkvdW03dmFyWjlQT2dXTUpZTG5HWnplMXAvdnI4d2RvSGhVQUFBMWxQZ0N3SE5Ibi8rak1ZRHF3MEpjQWFDWVZBQUFOOVdidmJ1dWxYbHNBY0NINi9BSEtvUUlBb0JBN3I1NU50dzhjRXdRQWJWSGlIK1grMXZvQmxFTUZBRUFoeG84UHBJbjVmbTBCUUhycXhZMXBaR2JJd1IrZ01Db0FBQW9VVlFCL09IUTQzWHJWeVFTVUkvcjhZOENmY24rQU1na0FBQXBtYlNDVUlXNzZSNmFIMnB0Q0FDaVhBQUNBZGdnUWF3UDdMeitkZ09iUTV3L0EyUVFBQUxSWkd3ak5FdVgrRDAwTnQ2ZjhBMEFRQUFEd0ZoRUUvT24xejJrTGdFd2RPTldYUm1ZRzlma0Q4RFlDQUFET3kzd0F5RXVVK0k4ZTNaejJ6dzRrQURnZmF3QUJPSzhZRmpZeDE1OXVINWhOdTFwQkFGQmYwZWNmMC8zMStRTndNU29BQUxnazh3R2dudlQ1QTdBY0FnQUFsdXlXSzArbWU3Y2MxaFlBRllzRC85N0pZWDMrQUN5TEFBQ0FaVE1mQUtxeHVOWXZ5djBCWUxuTUFBQmcyV0krUU53ODNuNzFiTm81Y0N3QjNhZlBINERWVWdFQXdLcVlEd0RkRlgzK2NmQlg3Zy9BYXFrQUFHQlYzdXhGYmgxU3RBVkE1OFRQMXNqMFVKcVk3MDhBMEFrcUFBRG9xSjFYejZiYkI0NEpBbUNGRnZ2ODk3ZStsUHNEMEVrK1ZhaWRLQ01lY25DQWJJMGZIMGozSExxaFBTY0FXSjZKdWY3MHUvOTRrMTUveUZpOHgycUxvNjU4c2xBN1VmTDQrSTAvVGJ1dU9aS0FQQzIyQmR6eDdMWjBZR0ZkQWk0dSt2enYvdGtOYWM4TDE3ZC9mb0Q4ckwvOGRQdjk5ZkVibnpXemc5cGFzL1dtZC8xeGdocVpldldLdEduTmErbTNOeDF0cDZmenA5ZWtnd3Q5Q2NqUFhPdm45OGtYQjlKVTYwQ3piZDFDNmw5ek9nRy9FTGY4WHoweW1QN3Q5SmIyNXgrUXB4M3I1OUlEV3crbEhmMXo2YTlmZXFjcU9HckxEQUJxcWYveTE5TFhiajdZK3ZYTVlTRktJdmZORExVUEVVQytZa2lnNmg0NFkvVG90ZnI4SVhPM1hIVXk3ZHAwcFAxcmlBcWVhSU5UeVVOZHFRQ2dsbDUrL2ZMMGpzdGVUN2UrOFRDOTRSMHZwNTBEczJuTDJsZlNnWmY3MmxVQlFINmlKUEpiclZ1UnFBVFl2bTRoUVltaTNEOE9DQk56RzFxZmQ1Y2xJRDlSN3YrNWEyZlN2eHlhZk12UTI5RmptOU0veks5UFVGY3FBS2kxcjkxMDhHMlR4Q05SamVGSVNxc2dieEVBZk9tNlE3WUZVSXczVjJicURZYXNSU1ZiYkx0WnJGUmRGRC9qTWZzRzZrd0FRSzNkY3VYSjlQQS9lZTY4LzFsN1AvTE1ZUHNHQmNoWHpQcUkxZ0JCQUUwVkpmNmpSemVuL2JNRENjaFhsUG5mTzNUNGdwOVhFZkM1b0tMdXRBQlFhekVRNmRaV0NIQytCMjJVRUg5MHd3bHRBWkM1R1BMNXQvTWIyZ01ERjl0K29DbkdaemVsKzErNDNxMC9aQ3pXK2oxNDNmUHRtLzhMRGJOOTZzV05hZXpZdFFucVRnVUF0UmVILzJnRnVKUm9DL2pMVnVwcVVDRGtLMzdlb3hyQS9tUnlGMzMrajg0TXBnTzIyRUMyb3MvL3MyK1UrMTlLbFA0Yi9FY09WQUJRZTNFckdEMVc3N255NXhmOTcwVlpWcXhlc1RZUThoVS83OUhXYy9EVXV2US9YWG5LMmtDeUV3ZUFQYTBiLzdnSlBQYmEyZ1RrYVdmcjBCOXIvVzVaUW1WYVZQcjg5WWwzSnNpQkNnQ3ljTzVhd0VzNTh3SzJWUkFBbVRNZmdGeEVuMzhjQXF6MWc3ekZnWC8zdGROcGU5K3BKZjMzcmYwak55b0F5RUtzQlh5bDlVTDFnZlh6Uy9ydng2M2hiMTU5M0h3QXlOemlmQUJyQTZtejZQMzlWOC9ma1A3aDVIcHIvU0JUWi9mNWIxcjc2cEwvOTBabWhzejRJQ3NxQU1qSzR6YyttN2F0NEJBUTh3RkdqeHJNQWptTEtvRGRtNmZUanY0VENlb2crdnpqODhYTFArUXIrdncvT1hEc3ZHdjlMc1hhUDNJa0FDQXJGMXNMZUNueGtJNFhOZXRaSUcvYUFxaGFsUGlQVEEvNVBJSE14ZWZKN3NHcFpSLzhGOTM5c3hzRWdHUkhBRUIySHI3K3VTVU5aTG1RQXd2cjJnT2FiQXVBdkMxdUN4QUUwQ3Y2L0tFWjRqMXkxNllqcTNxZmpOYWZ2VlBEQ1hJakFDQTc4YkwvMkkzUHJqaXRYUlFQN3RGajF3b0NJR1BXQnRJclVlNy9VT3RsMzZBdnlGZVUrOS9WdXZIdnhHZUd0WC9reWhCQXNoTnJ3dDV4MmV2cDFsV2t0bUY3MzBKN2JlQmxsMTJXL3V1cEt4T1FuOFcxZ2Q5NmFXUDdKbWZUMnRjU2ROS0JVMzNwVHc1ZjExN3JOMmVnTEdRcER2NmYzblEwL2RGMXo2ZjNMSEc2LzhYRVhLbjQ3SUVjcVFBZ1M4dGRDM2dwNWdOQU01Z1BRS2RFaWYvbzBjMXAvK3hBQXZJVjRmQzlRNGM3OXJrUTc0eS8rNDgzYVFNaVd5b0F5RktzQlp4OWRXMzdCcjhUWXNWWS9MMnNEWVM4eGRyQS9jYzN0Zjk2dFZWQ2xDdjYvTzkvNFhyRHZTQmoyOWFkU2w4Y2ZxRzkxaS9lOHpvbDF2NnBIQ1ZuS2dESTJtb0hBbDZJK1FDUVAvTUJXQzU5L3BDL0tQZi9iT3ZaSDJ2OU9zM2FQNXBBQUVEV1ZyTVc4RkswQlVBemJGKzNrTDUwM1NGdEFWeFFQTy8zVGc2NzhZZk03V3dkK2lQNDdWU0w2TGtNL3FNSnRBQ1F0YWxYcjJpLzFNY0xmcWN0dGdYRTdlSEJsL3RVQTBDbWpyMjJ0dDBXRUQvRDIxclBpazZXZ3BLMzZPSDk4MlBYdE12OTQvTUV5Rk5VZzBaVjZFYzNuR2dQaXU2R3FBNTFLVVFUcUFBZ2U1MWFDM2dwMmdJZ2YvRzh1UDNxMmZZdEVXV0xQditvOGpMSUMvSTExSHFtM3pkMHVDdnRvR2VMNTBRTS9uUDdUeE9vQUNCN25Wb0xlQ214Tm5EbndHeTZMSjBaTlBieTY1Y2xJQy94dlBpSGsrdmJhd09qRXFBYjFVUFVXL1Q1UjduL2t5OWU3VGtPbVZwYzYvZkFkYy8zcEwwcktvV3MvYU1wVkFEUUNMRVc4TEViZjlxekhsL3pBYUFackEwc1J6eTNSNmFIMHNSOGZ3THkxZTArLzNNWi9FZlRDQUJvakIzclQ2UUh0ajZmZWlrK0ZPNCtkSU8yQU1qY3pxdG4yeE9qQlFITkU2VzdVZTYvdi9XbDNCL3lGV1grdXpZZDZYcTUvN21pWXNpRkQwMGlBS0JSdXJVVzhGTE1CNEQ4V1J2WVBCTnovZTJkM2ZwMklWL1I1My9YNXFuMllPWmUrMjdyR1JKRFFxRkpCQUEwU2pmWEFsNUs5QmJ2bngxSW8wZXZUVUMrSWdqNHc2SERYWjhyUXZkRW4zKzBhVm5yQi9tS1B2OVBEaHhyVjJmMXF0ei9YTmIrMFVTR0FOSW9zY1lwUGlUZWMrWFBVNi9GSU1Lb1BvamJ3L2xXR0JDREFvSDhSSmdYUXdLdERjeFBsUGgvOWNoZytyZlRXNnoxZzR6dFdEK1hIdGg2cUgzcjM2MjFmcGRpN1I5TnBRS0F4b21CZ0YrNytXQmxhZkdpWjFvM1VGK1pHdFlXQUptTHRvQ2RGZDVBc1RSUmZhWFBIL0pXVlovL3VlTFcvNTVETjdqOXA1RlVBTkE0TDc5K2VVL1dBbDVLbEJISDJzQXRhMTlKQjE3dWExY0ZBUG1KTXZLL09mRk9hd05yS3NyOTQwVTlWblJaNndkNWluTC96MTA3ay83bDBHUXRockhHN0JBdFJEU1ZDZ0FhNjJzM0hhek5STzlJa1BjZjM1VEdad2NTa0s5NHB2enA5Yy9aRmxBRDhWeU42ZHhlMGlGdnU2NDVVbW1mLzdtcy9hUHBWQURRV05HRGY5dkdla3p6anB2REQ2eWZOeDhBTXRjZTl0a0s4OHdIcU01aW4vLy9lZmc2ZmY2UXNTanpqKzFOVmZiNW4wL2MvbnRQbzhrRUFEUld2QmplZXVYSld0M1V4V0VoUHVpMEJVRGU0dVV3QmdWR3k1RnRBYjB6UHJ1cHZaTExyVC9rSzliNlBYamQ4KzJiLzdxRnFESDRiK3lZYlU0MG14WUFHaTBPLzlFS1VGZlJFakQreG0waWtLZDR6c1Nnd0tqd29UdWl6Ly9SbWNGMHdLMGNaQ3Y2L0QvN1JybC9YVm43UndsVUFOQm9VYTViMVZyQXBYalBsYWZhRlFIYUFpQmY4WnlKQVhTeCtTTktXclVGZEU2OGlPOXAzZmpIamR5eDE5WW1JRSt4U1NYVytsVTkzZjlpb3NMb3IwKzhNMEhUcVFDZzhlcXlGdkJTenJ6b2JoVUVRT2FpRWlBcUFnd0tYTG5vODQrWGNXdjlJRzl4NE45OTdYVGEzbmNxMVptMWY1UkVCUUNORnoyNnI3UmVJR01JWDUzRnJlRnZYbjNjZkFESVhJUjRmenUvd2RyQUZZb2UzSC8xL0EzcEgwNnV0OVlQTW5WMm4vK210YSttdXJQMmo1S29BS0FZajkvNGJIdHFkeTdHamw2YlJvOGFSQU01TXg5ZzZhTFBQNTU3WHNJaFg5SG4vOG1CWTdWYTYzY3AxdjVSR2dFQXhiamx5cFBwNFgveVhNcEpmQ2pGQy9GVEwyMU1RTDYwQlZ4WWxQaVBUQTk1emtIbTRqbTNlM0FxbTRQL29zLzk0eTlwdjZRb0FnQ0tFdnRtNnp5QTVrSU9MS3hyRDhLeUxRRHl0dlBxMmZiTm1DQkFuejgwUmJ4WDdkcDBKTXYzcTJnNTJqczFuS0FrQWdDS0VpL2RqOTM0YkhicDlLTDRvQm85ZHEwZ0FES21MZUJNdWY5RHJaZHVBN2NnWDlIbnZ5dnpaNW0xZjVUSUVFQ0tFdXU2M25IWjYrbldERlBxc0wxdm9iMDJjTU9hMC9wa0lWT0xhd08vOWRMRzlvM1pwcld2cFZJY09OV1gvdVR3ZGUyMWZuTUduVUtXb3MvLzA1dU9wbnUzSEU3dnFmbDAvNHVKT1V2eExJYlNxQUNnT0xtc0Jid1U4d0dnR1VxWUR4QWwvcU5ITjZmOXN3TUp5RmVFbHZjT0hjNytlV1h3SHlWVEFVQnhZaTNnN0t0cjJ6ZnBPWXNWWS9GNzJMN3VWUHIvVGwxcGJTQmtLb1pQN1QrK3FmM1h1VlluWFV6MCtkLy93dldxbGlCamNmQy9yM1h3ajVML2VQL0lYYXo5TS9pUFVxa0FvRmk1RGdTOEVQTUJJSDlObWcrZ3p4L3lGK1grbjIwOWsySjRhVk5FSzlMdlB2ZExDVW9sQUtCWU9hNEZ2QlJ0QWRBTTI5Y3RwQzlkZHlqTE10dDREdTJkSEhiakQ1bmI5Y2JCUC9lV3lYTVovRWZwdEFCUXJLbFhyMmkvWE1lTGRsTXN0Z1hFN1dIOC9uNzI4cm9FNU9mWWEydmJiUUZSMGJPdDlZektvZVEyK3Z6Ly9OZzE2YUhKNjlMUFhubEhBdklVMVpGUkpSbnZFekU0dVVtaVd0SWxDYVZUQVVEUm1qSVE4RUswQlVEK0lxajgxVmFvRjdkeGRSVjkvbEY5RkNFQWtLZFk2eGQ5L2sxcWp6eGIzUHJmYytnR3QvOFVUd1VBUll1QmdEbXZCYnlVV0J1NGMyQTJYZGI2NjhsWHJ6QW9FRElVNi9LaW5EN1dCa1lsUUoycWxxTFBQOHI5bjN6eDZ0Yno5TElFNUdkeHJkOEQxejNmNkcwazQ4YzNXZnNIU1FVQXRLc0FIcnZ4cDQzKzBBdm1BMEF6N0ZoL0l1MGVuSzcwbWVWNUFzMndjK0JZZS9Cb1V5c2hGMW43Qjc4Z0FJRFV6SUdBRnhJZmdudGUyR3I5RFdRdVpuM0VpM3N2ZzRBbzhZOXkvLzJ0TCtYK2tLOG84OSsxNlVoankvM1BGWlZLQWtzNFF3c0FwRE1EQVc5dGhRQk5yd0lJVVVMOG0xY2ZUMXZXdnBJT3ZOeW5MUUF5RlNIZTM4NXY2Rmxid01SY2Y3ci9oZXZiSmJUSy9TRlA3VDcvTFlmVG5kZk9GUEhPRTc3YmVuYjlYMGNHRTNDR0NnQjRRMGxWQUdlTE10N1IxaGVRcjNpUjM3MTVPdTNvUDVFNkxmcjg0emxoclIva0svcjhQemx3ckpGci9TN0Yyajk0S3hVQThJYW9Bb2dQeGZkYytmTlVraWovaTFMaXFBVFFGZ0I1aWtHQmYzM2luUjFkR3hnbC9sOXQzWnI5MitrdDdlY2prS2Y0alArajRSY2F1ZGJ2VXF6OWc3ZFRBUUJuYWZwYXdFczVzTEF1N1huaGVtc0RJWE14RzJEbkttNzZvaXBJbnova3JiUSsvM05aK3dmbnB3SUF6dEwwdFlDWHNtbnRhKzIxZ2VZRFFONmlYUDl2VHJ4ejJmTUJvdHcvWHBqMStVTytvdHovODBPVDZhN04wOFgwK1ovUHlNeVExaVU0RHhVQWNCNWZ1K2xnMFIrYUlSTHovY2MzcGZIWmdRVGtLNTVsZjNyOWN4ZDlwc1hQZTB6SjlySU0rU3E1ei85YzF2N0JoUWtBNER4S0hRaDRQdlo5UXpPY2IyMWdsUGlQSHQyYzlndjZJR3RSNW4vdjBPSGlMeThXN1huKytqUXgzNStBdDlNQ0FPZFIwbHJBUzRrUzRoZ2NwQzBBOGhaRFBxT3FKMFNiMC9qc3B2WmFQN2Yra0s5dDYwNmxMdzYva0hhMXdyMU9EUDlzZ2hqODkvWFpheEp3ZmlvQTRBTGk4Qit0QUx4VnRBU010dzRSQmdWQ3ZxSTgySUEveUZlVSszKzJkZWlQY24vZXl0by91RGdWQUhBQmMyL2NkSmM2RVBCQzNuUGxxWFpGZ0xXQmtDOEQvaUJmc2VIamdhMkhpcDN1ZnpHeHdTU0dtQUlYSnY2SGk0aStXTGRrYnhmVkVmZHVPZHl1a1BBQ0FnRGRGNSszajkzdzA3Ujc4M1R4US83T0oyNzl2MlZlRVZ5U0NnQzRpRmdMK0VvckFQakErdm5FMjBXL1lRd1dNeDhBQUxwanFCVzZQM2pkOCswKy8wMXJYMDJjbjdWL3NEU3VOdUVTeG84UHBHZE8ra0M1bU5zMnZwaWV1T25nbVNGRWJpVUFZTldpeno4K1Z4Ky84Vm5WZHBjUXQvKzJGY0hTQ0FCZ0NhS25qRXVMRldPUHRWNVVvaW9BQUZpWitCeDk0dVlEN2M5VndmcWw3WGxoYXdLV1JnQUFTeEFsWlJOejlza3V4ZG56QVlhc1VRU0FKWXViL29ldmY2NzlPZXJndnpTeDlzOVFZbGk2dFFsWWt1Z3RpdzltSDhoTEUwRkF0QVhFQi9Qb3NXdXREUVNBQzRqQVBNcjlWZEF0MzlneFZacXdISVlBd2hMRldzQjNYUGE2dFlETHRMMXZJZDIyOGFXMHJ2Vm5aemdQQVB4QzlQbC9ldFBSOW8zL2UvcE9KWmJIMmo5WVBpMEFzQXl4Rm5EU1RmYXk5Vi8rV3J1UE1kb0MzRzRBUUVvNzFzKzFCL3pwODErWmVCOGJNNk1KbGswQUFNc1FWUUErYkZadWNUNUE5RGVhRHdCQWlSYjcvQi9ZZXFqOXVjaktlQitEbFJFQXdETEZtaGxyQVZjblhuNWlQc0M5UTRjRkFRQVVJY3I5NzlvODNUNzhXK3UzT2dkTzlWbjdCeXNrQUlBVnNCYXdNMjdiK0dMN1JXam53R3dDZ0thS0FYK3gxdS8yZ1dPSjFidi9zTFYvc0ZJQ0FGaUJHR1luZWU2TUtIL2N2WG5LZkFBQUdpZHUrdVB6VFo5LzU4UjJJZk9ZWU9Xc0FZUVZHcGtlVER2NlQvaEE3NURGK1FDM1hIblMya0FBc2hidGJmY05IVmJxMzJIdHdYL1cvc0dxcUFDQUZZcUJnT096bXhLZEZXMEJNUjhncWdMTUJ3QWdKNHQ5L3ZFNTV2RGZlVkY5NmZZZlZrY0FBS3RnTFdEM3hGeUFtQStnTFFDQUhPd2NPS2JQdjR1cy9ZUE9FQURBS2tRVndON0o0VVIzTExZRlJQL2t0blduRWdEVXplSmF2OTJ0bTM5dGdkM2o4QStkWVFZQXJGSU1CSXkxZ0VyOXVpZUNnTWR2L0dsNzhJLzVBQURVZ1Q3LzN2bnVYTC9oeTlBaEtnQ2dBL2JORENhNmIzRStRS3hUQW9BcVJKOS9mQTQ5ZnVPekR2ODk4dWpNVUFJNlF3QUFIWEJ3b2M5QXdCNktkVXJXQmdMUWEvRzVFMzMrMXZyMWpyVi8wRmtDQU9pUXNhUFhwTG5UZnFSNlpYRSt3R090R3hqYkFnRG9wc1UrLy9qY2NmRHZIV3Yvb1BQV2JMM3BYWCtjZ0ZWNytmWEwweXV0QU9BRDYrY1R2Yk5wN1d2dGpRRmIxcjZTRHJ6Y2wrWlByMGtBMEFsUjd2LzVvY24yYXI4dHd1YWVHNWtaYXM5YUFqckhFRURvb1BIakErMzFQMTRTZWkvbUE4UU56YmRlMnBoR1RRb0dZQlhpNFAvSjF1ZDVmS2E3OGE5RzNQNGIvQWVkcDE0Wk9zeGF3T3BFOEdJK0FBQ3JFV0Z5RFBqVDUxK3RrV21ELzZBYlZBQkFoMWtMV0wzRitRQTcraytrZlRORDFnWUNjRW5iMXAxcWwvcjcvSzVlRFA2Ym1POVBRT2RkOW9HUC92cnJDZWlvT0lER0xUVDFFQzhTbzhldUZRUUE4RFpSN3YvWjFtMS9sUHRURDNjOHU4M2tmK2dTUXdDaEMrYmVHRVIzcTF1RVd0amV0NUIyOU0rMUJ3VEd5a1lBQ0R0YmgvNEh0aDV5NjE4ak1jZG5ZbTVEQXJyRERBRG9rdjJ6QTlZQzFzaGlXMEJVWmtSckFBRGxpZ04vZkI3czNqeXR6NzlHNHRiL1d3Yi9RVmVwQUlBdXNSYXdudnJYbkU0ZjNYREMya0NBQWcyMXd1QUhyM3MrN1lvQmYyc2MvT3ZHMmovb1B0ZVQwRVd4RmpBR0FsSS9zVGJ3aWRidFQ3d0VEbG5iQ05CbzBlY2Z6L3Q0N2l2M3J5ZHIvNkEzQkFEUVpYYlMxMXVzZVhyNCt1ZXNEUVJvcU9qemYrTG1BKzNuUGZXMTU0V3RDZWcrQVFCMFdaU3lUY3haWlZOblo4OEhVQTBBMEF4eDB4OEJyejcvK290dFBZYjBRbStzVFVEWFJVOWJ2SWg0QWFtM0NBS2lQTlRhUUlCOFJaQjcxK2FwOXZZWDhqQjJUTFVrOUlvS0FPaUI2R3NibjkyVXlNUFo4d0VBeU1OaW4vL2pOejdyOEorUmFKV2NGTGhEendnQW9FZGlMYUFQdUx4RXYyaTBCWmdQQUZCdk85YlB0US8rOGR4V2JaZVBlQzhhTXlzSmVrb0FBRDB5ZDNxTkQ3a01MYzRIZUt6MVltaytBRUM5TFBiNVA3RDFVUHQ1VFY2OEYwSHZDUUNnaDJLOWpiV0FlZHErYnFIZEZuRHYwR0ZCQUVERm90ei9yczNUN2NPL3RYNTVPbkNxejlvL3FJQUFBSHJNV3NDOHhYeUFlT0hjT1RDYkFPaTk2UE9QdFg2M0R4eEw1T3YrdzliK1FSVUVBTkJqc1JaUTRwMjNLRFBkdlhuS2ZBQ0FIb3FiL25qdTZ2UFBYMnpiTVJjSnFtRU5JRlJnWkhvdzdlZy80UVVtYzR2ekFXNjU4cVMxZ1FCZEVtMVg5dzBkVnVyZkVPM0JmOWIrUVdWVUFFQUZZaUNndFlETnNiZzJNS29DekFjQTZJekZQdjk0dmpyOE4wZFVRYnI5aCtvSUFLQWkxZ0kyVDh3RmlQa0EyZ0lBVm1mbndERjkvZzFrN1I5VVR3QUFGWWtxZ0wyVHc0bG1XV3dMK0pvYks0QmxpK2ZtWXpmOE5PMXUzZnhyazJzZWgzK29uaGtBVUtFWUNCaHJBUjBVbXllQ2dLZ0dpRUZINWdNQVhKdysvK2FMejBORGtLRjZLZ0NnWXZ0bUJoUE50VGdmWUplcDFRQnZFMzMrOFh4OC9NWm5IZjRienVBL3FJYzFXMjk2MXg4bm9ES3pyNjF0SHd6ZmMrWFBFODBWTDdZZjNmQlNtais5SmgxYzZFc0FwWXQ1S1YrKy9tZnBBK3ZuMHpzdWV6M1JYRzcvb1Q1VUFFQU5qQjI5SnMyZDl1UFlkR2ZQQjdBdEFDaFZCS0xSSWhYUFE1VlJ6V2Z0SDlTTENnQ29nWmRmdnp5OTBnb0E0aGFFNXV0ZmM3cTlNV0RMMmxmU2daZjcybFVCQUUwWHdlZGRnOVB0MVg1YmhLREZHSmtaYXM4OEF1ckJsU1BVeFBoeGF3RkxFL01CSHIveHArMytWNENtT3J2UDM1clVzc1I3amRKL3FCY0JBTlNJdFlEbDZiLzh0ZlNaMW90eHRBVjRNUWFhSnNyOTQrRC9HWU5RaXpReVBaU0FlckVHRUdyRVdzQnlMYzRIMk5GL0l1MmJHYkkyRU1oYWZJN3QyblRFNTFuQll2RGZ4SHgvQXVybHNnOTg5TmVOWFlVYWlZTmczQVpUdG5oeEdqMTJyU0FBeUVxVSszKzJkZHQvKzhDeFJObnVlSGFiMWthb0lVTUFvV2JtM2hnSWQ2dGJrNkp0NzF0SU8vcm5yQTBFc2hGOS9uOTAzZk51L1VtalI2OU5FM01iRWxBL1pnQkFEZTJmSGJBV2tMZXNEVFFmQUtpck9QREhjMHFmUHlGdS9mZlBia3BBUGFrQWdCcXlGcEN6eGRyQXFBYXdOaENvazFqcjkyRHJ4ajl1L3VNNUJTSFcvdjNYVTFjbW9KNWNNVUpOeFZyQUdBZ0lpMkp0NEJPdFc3WjQyUjZ5UXh1b3lPSmF2M2dlS2ZmbmJOYitRZjBKQUtER29vY096aFZsdGc5Zi81eTJBS0RuZGc0Y1MwL2NmS0Q5SElKejNYUG9oZ1RVbXdBQWFpeldBazdNV2FIRDI1MDlIMkRidWxNSm9KdmlwaitDeDkyYnAvWDVjMTZ4dmNiVWY2aS90UW1vdGVpbGl4Y3ZMMXljVHdRQmo5LzRVMnNEZ2E2SWRxTzdOaysxNTVEQXhZd2RVN1VJT1ZBQkFEVVhhZnE0YWJwY3d0bnpBUUJXYTdIUC8vRWJuM1g0NTVLaVpkSHRQK1JCQUFBWmlMV0FQbGhaaXVqTHRUWVFXSTE0ZnNUQjMxby9saUxlVDhiTUxJSnNDQUFnQTNPbjE2U1I2Y0VFUzdFNEgrQ3gxZ3U4YlFIQVVpMzIrY2Z6WTR0bkIwdms4QTk1TVFNQU1qRXh2Nkc5RnRES0paWnErN3FGZGx1QStRREF4VVM1LzEyRFV5cUhXTFlEcC9xcy9ZUE1xQUNBakZnTHlFckVmSUM0MVRNZkFEamJZcDkvclBWeitHY2w3ais4TlFGNVdiUDFwbmY5Y1FLeU1QWHFGZTErelBkYytmTUV5OUcvNW5TN2VpUmU4dWRQcjBrSEYvb1NVSzU0SG54NTY4L2FBLzdlY2RuckNaWXJxc3ZjL2tOK3RBQkFac2FPWHRPNjBUMXVNQk1yc2pnZllFZi9pYlJ2WmtoYkFCUm0yN3BUNmE3TjA5ckpXSlgyNEQ5ci95QkxBZ0RJVEF3RWpMV0F5cmxaamJqMWl5L3pBYUFNVWU3LzJkYm54dTBEeHhLczF2anhUYllUUWFiTUFJQU1XUXRJcHl6T0I5RC9DODIxczNYb2p6NS9oMzg2SWQ0LzRqMEV5Sk1BQURJVVZRQjdKNGNUZE1KaVc4RFhianJZYmcwQW1pSEsvQis3NGFkcDkrWnBiV04wakxWL2tEY3RBSkNwWjM1K2xiV0FkRlFFQVE5Yzk3eTJBTWpjVU90bitiNmh3ejRmNkRpRC95Qi9LZ0FnWS90bUJoTjBXclFGUEhIVHdmYWNDYmVHa0kvRnRYNlAzL2lzd3o5ZFlmQWY1TThhUU1qWTdHdHJyUVdrYStJQThkRU5MMWtiQ0JtSU9SNWZ2djVuNlFQcjU2MzFveXRpQVBGZm4zaG5BdkttQWdBeUYyc0I1MDc3VWFZN3pwNFBFR1hGUUwxRVVCZURQT1BuVk1VTzNkSWUvSGZjNEQ5b0FoVUFrTG1YWDc4OHZkSUtBT0xXQjdxbGY4M3B0SE5nTm0xWiswbzY4SEpmdXlvQXFFNEVjbmNOVHFlN05rKzNnenJvcHBHWm9mYnNJU0IvaGdCQ0E0eTNVdm5iTmg1UDI5WXRKT2ltbUErd1k4TmNld1hVcUVuUTBIUFI1Ly9KZ1dQdGxYNXUvT21GdVAwMytBK2FROTB3Tk1TKzZhRUV2ZEIvK1d2cE05Y2NhYmNGUk44eDBCczcxcysxQi94OXhvQk9lc2phWVdnV0ZRRFFFTllDMG11TDh3RWlCUGpLMUxDMWdkQWw4VnpmdGVtSTV6czlGMnYvbFA1RHMxejJnWS8rdWxHeDBCQnhJSHVzZFR2a1pvZ3F4SXZpNkxGckJRSFFJVkh1LzluV2JYK1UrME1WN25oMlc3c0ZBR2dPUXdDaFFlWk9yMm12ZjdyVkxSRVYyTjYza0hiMHo2WExMcnNzL2RkVFZ5Wmc1WGExRHY1L2ROM3pidjJwVE14NW1aamJrSUJtTVFNQUdpYUdzMWtMU0ZXaUNtWDM1aW56QVdDRjRzQWZQei82L0tsU2UrM2Y3S1lFTkk4S0FHZ1lhd0dwZzFnYkdOVUExZ2JDMHNSYXZ3ZGJOLzV4OHg4L1AxQ2xXUHVua2d1YXlSQkFhS0JZQzdpai80VFNVU29YYXdQamEzeDJvUFY5dWNsOEFEaUhQbi9xeHRvL2FEWjF3dEJRZHJSVEp6c0hadFBEMXorbkxRRE9zck4xNkgvaTVnTU8vOVRLUFlkdVNFQnpDUUNnb1dKdGp3U2ZPbGxjR3hqOXphcFRLRmw4LzBjZ3Rudnp0RDUvYWlXMnVaajZEODJtQlFBYWJPem90ZTFXQUMrWTFFa0VBWEg0c1RhUTBrU2YvMzFEaHdWZzFGSU1FQjQ3cG5vUW1rNEZBRFJZcFBqanB2aFNVekViNEltYkRwNFplaWFrb3NHaXp6Kyt6eCsvOFZtSGYyb3IzaGZjL2tQekNRQ2c0V0l0b0E5MDZpelduVDNXT2hpWkQwQVR4ZmQxSFB5dDlhUE80ajFoek93Z0tJSUFBQnB1N3ZTYU5ESTltS0RPenA0UEVHWFNrTHZGUHYvNHZ0N2llNXFhYy9pSGNwZ0JBQVdZbU4rUW5qbDVsZEpUYWk4T1N0RVdZRDRBdVlweS83c0dwMVMwa0kyblR4b2FEQ1ZSQVFDRnNCYVFuTVI4Z01kdi9HbTdieHB5c05qbkgydjlIUDdKeVVOVHd3a294NXF0Tjczcmp4UFFlRk92WHRIdVAzM1BsVDlQa0lOM1hQWjZ1Mm9sRGxQenA5ZWtnd3Q5Q2Vvb3ZrKy92UFZuYVVmL1hQdjdGbklSMVZadS82RXNXZ0NnSUdOSHIybmRyQjQzaUlxc0xNNEhpSldXKzJhR3RBVlFHOXZXblVwM2JaN1dYa1dXMm9QL3JQMkQ0Z2dBb0NBeEVERFcvQ2lySmtkeHV4cGY1Z05RdFNqMy8yenJPWHI3d0xFRXVSby9idTBmbE1nTUFDaE1UUHIxZ1UvT1lqNUFURmZYWjAwVmRyWU8vZEhuNy9CUHp1STlJTllFQStVUkFFQ0I5azRhK0VQZXpsNGJHSzBCMEcxUjVoL2ZiN3MzVDJ1akludlcva0c1dEFCQWdaNzUrVlhXQXRJSUVRUThjTjN6MmdMb21xSFc5OWg5UTRjOUwya01nLytnYkNvQW9GQjdyZjJoUWFJdDRJblc3V3pNdDRnREc2eldtMnY5V3Q5WER2ODBpY0YvVURackFLRlFNUkRRV2tDYUpnNXFNU2pRMmtCV0kvcjhIOWg2S0gxZy9YeUNKb2xCd0g5OTRwMEpLSmNLQUNoWXJBV2NPKzB4UUxPY1BSOGcxclRCVWtXQUZBTW05Zm5UUk8zQmY4Y04vb1BTcVFDQWdyMzgrdVhwbFZZQTRKYUxKdXBmY3pyOTV0WEgwNWExcjZRREwvZTFxd0xnZk5wOS9xM1E2TTVyWjlvQkVqVFJ5TXhRZXdZUVVEWlhmMUM0OGRadHdNR0ZkUW1hNnV6NUFIQzJ4VDcveDI5OHR0MDZBazBWdC84Ry93RkJBQUNrZmRORENacnVNNjJEWHJRRjNQYk9GeFBzV0QvWFB2akg5NFZ5ZjVyTytsOWdrUUFBZUhNdElEVGQ0bnlBeDFvSFA5c0N5clRZNXg5RC9wVDdVNEpZKzZmMEgxZ2tBQURhWWkyZ2dZQ1VZdnU2aFhaYndMMURod1VCaFloeS83czJUN2NQLzliNlVSSnIvNEN6ZWRzSDJxSS9NTllEUVVsaVBzQ3VUV1lEbE9DdXdhbDArOEN4QkNVWlBYcHQrL01kWUpFQUFIalQvdGtCVlFBQTBBRHR0WCtDZmVBYzN2U0JOODJkWHBOR0RBUUVnT3lOdFc3L2hmckF1VHdWZ0xlSU5VRUdBZ0pBdnF6OUF5NUVBQUM4VGZRTUFnQjV1dWZRRFFuZ2ZBUUF3TnZFdWlBM0J3Q1FuMWo3Wi9BZmNDRUNBT0M4OUE0Q1FGN2ljOXZhUCtCaXZOMEQ1MlV0SUFEa0pUNjMzZjRERnlNQUFDNG8xZ0o2a1FDQStvdlA2ekV6ZklCTEVBQUFGM1JtTGVCZ0FnRHF6ZUVmV0FvQkFIQlJFL01ickFVRWdCcDcrcVRodmNEU0NBQ0FTN0lXRUFEcTY2R3A0UVN3RkFJQTRKSmlMYUNCZ0FCUVA5YitBY3NoQUFDV1pPem9OZFlDQWtDTnRBZi9XZnNITElPM2VXQkpZaUNnS2dBQXFJL3g0OWIrQWNzakFBQ1dMQ1lNZTlFQWdPckY1M0dzNndWWURnRUFzQ3g3SncwYUFvQ3FXZnNIcklRQUFGaVdHQWhvTFNBQVZDY0cvMW43QjZ5RUFBQll0cjNXRFFGQVpReitBMVpLQUFBc1cvUWRHZ2dJQUwwWG43L204UUFySlFBQVZzUmFRQURvcmZiZ3YrTUcvd0VyNSswZFdKRllDemgyWkhNQ0FIckROaDVndFFRQXdJcU50MjRoRGk2c1N3QkFkOFhCMytBL1lMVUVBTUNxN0pzZVNnQkFkKzE1WVdzQ1dDMEJBTEFxMWdJQ1FIZkYycitEQzMwSllMVUVBTUNxeFZwQUF3RUJvRHVzL1FNNnhSczdzR3JXQWdKQWQ0d2EvQWQwa0FBQTZJajlzd09xQUFDZ2crTGdINVAvQVRyRjJ6clFFYkVXY01SQVFBRG9HSWQvb05NRUFFREh4SG9pQXdFQllQV3MvUU82UVFBQWROU28yd29BV0xWN0R0MlFBRHBOQUFCMFZLd0ZkR01CQUNzWGEvOE0vZ082UVFBQWRGejBMQm9JQ0FETEY1K2YxdjRCM2VJTkhlZzRhd0VCWUdYaTg5UHRQOUF0QWdDZ0sySXRvQmNZQUZnNmEvK0FiaE1BQUYxeFppM2dZQUlBbHNiaEgrZzJBUURRTlJQekc2d0ZCSUFsK081Y3Z5RzZRTmNKQUlDdXNoWVFBQzd0MFptaEJOQnRBZ0NncTJJdG9JR0FBSEJoMXY0QnZTSUFBTHB1N09nMTFnSUN3SG0wQi85Wit3ZjBpRGR5b090aUlLQXFBQUI0dXhqODUvWWY2QlVCQU5BVFhuQUE0SzNpYzlIZ1A2Q1hCQUJBeit5ZEhFNEF3QmtqMHdiL0FiMGxBQUI2SmdZQ1dnc0lBR2NHLzAzTTl5ZUFYaElBQUQyMWQwb1ZBQUFZL0FkVVFRQUE5RlQwTzQ0ZTlkSURRTGxHemNVQktpSUFBSHB1Lyt5QXRZQUFGQ2tPL3Q4eStBK29pRGR3b09kaUxlRFlrYzBKQUVwakt3NVFKUUVBVUlueDR3TUdBZ0pRRkd2L2dLb0pBSURLbUFVQVFFbjJ2TEExQVZSSkFBQlV4bHBBQUVvUmEvOE9MdlFsZ0NvSkFJQkt4VnBBQXdFQmFEcHIvNEE2OE5ZTlZDcjZJY2RuTnlVQWFDcHIvNEM2RUFBQWxiTVdFSUNtaW9QL21KazNRRTE0NHdZcUYyc0JSNmFIRWdBMGpjTS9VQ2NDQUtBV1lpMlNnWUFBTk1tQlUzM1cvZ0cxSWdBQWFzTmFRQUNhNVA3RDF2NEI5U0lBQUdvajFnSzZLUUdnQ1dMdG44Ri9RTjBJQUlCYUdaa2VOQkFRZ0t5MUIvOVord2ZVa0xkc29GWmlJS0MxZ0FEa0xLclozUDREZFNRQUFHb24xZ0o2Y1FJZ1I5YitBWFVtQUFCcUo2b0E5azRPSndESWpjTS9VR2NDQUtDV1lpQ2d0WUFBNU9TN2MvMkcyUUsxSmdBQWFtdmZ6R0FDZ0Z3OE9qT1VBT3BNQUFEVTFzR0ZQZ01CQWNpQ3RYOUFEZ1FBUUsyTkhiM0dXa0FBYXMzYVB5QVgzcXFCV291QmdHTkhOaWNBcUtzWS9PZjJIOGlCQUFDb3ZmSGoxZ0lDVUUveCtXVHdINUFMQVFDUUJXc0JBYWlqa1dtRC80QjhDQUNBTEZnTENFRGR4T0MvaWZuK0JKQUxBUUNRamIxVHFnQUFxQStELzREY0NBQ0FiRVNmNWVoUkwxc0FWRy9VNEQ4Z1F3SUFJQ3Y3Wndlc0JRU2dVbkh3LzViQmYwQ0d2RVVEV2JFV0VJQ3FXZnNINUVvQUFHUW4xZ0lhQ0FoQUZhejlBM0ltQUFDeVpCWUFBRlhZODhMV0JKQXJBUUNRcFZnTE9ERm45UklBdlJOci93NHU5Q1dBWEFrQWdHeU56QXdaQ0FoQXoxajdCK1RPbXpPUXJlakRISi9kbEFDZzI2ejlBNXBBQUFCa0xkWUNlaUVEb0p2aWMyYk03Qm1nQVFRQVFOYmFhd0c5bEFIUVJUNW5nS1lRQUFEWmkzVk0xZ0lDMEEwSFR2Vlord2MwaGdBQWFBUnJBUUhvaHZzUFcvc0hOSWNBQUdpRVdBdm9oZ2FBVG9xMWYrYk1BRTBpQUFBYVkyUjYwRnBBQURxaVBmalAyaitnWWJ3cEE0MFJBd0d0QlFTZ0U2S3F6TzAvMERRQ0FLQlJyQVVFWUxXcy9RT2FTZ0FBTkVwVUFleWRIRTRBc0ZJTy8wQlRDUUNBeG9tQmdOWUNBckFTMzUzck4xUVdhQ3dCQU5CSSsyWUdFd0FzMTZNelF3bWdxUVFBUUNNZFhPZ3pFQkNBWmJIMkQyZzZBUURRV0dOSHI3RVdFSUFsc2ZZUEtJRTNZNkN4WWlEZzJKSE5DUUF1SlFiL3VmMEhtazRBQURUYStIRnJBUUc0dVBpY01QZ1BLSUVBQUdnOGF3RUJ1SmlSYVlQL2dESUlBSURHc3hZUWdBdUp3WDhUOC8wSm9BUUNBS0FJZTZkVUFRRHdkZ2IvQVNVUkFBQkZpUDdPMGFOZThnRDRoVkdELzREQ0NBQ0FZdXlmSGJBV0VJQzJPUGgveStBL29ERGVoSUZpV0FzSXdDSnIvNEFTQ1FDQW9zUmFRQU1CQWNwbTdSOVFLZ0VBVUJ5ekFBREt0dWVGclFtZ1JBSUFvRGl4Rm5CaXpzb25nQkxGMnIrREMzMEpvRVFDQUtCSUl6TkRCZ0lDRk1qYVA2QmszbjZCSWtYLzUvanNwZ1JBT2F6OUEwb25BQUNLRldzQnZRZ0NsQ0dlOTJObXdBQ0ZFd0FBeFdxdkJmUXlDRkFFejNzQUFRQlF1RmdEWlMwZ1FMTWRPTlZuN1I5QUVnQUFXQXNJMEhEM0g3YjJEeUFJQUlEaXhWcEFOME1BelJSci84eDdBVGhEQUFEUU1qSTlhQzBnUU1PMEIvOVord2Z3Sm0rN0FPbk1RRUJyQVFHYUphcTczUDREL0lJQUFPQU4xZ0lDTkllMWZ3QnZKd0FBZUVOVUFleWRIRTRBNU0vaEgrRHRCQUFBWjRtQmdOWUNBdVR0dTNQOWhyc0NuSWNBQU9BYysyWUdFd0Q1ZW5SbUtBSHdkZ0lBZ0hNY1hPZ3pFQkFnVTliK0FWeVlBQURnUE1hT1htTXRJRUJtclAwRHVEaHZ0d0RuRVFNQng0NXNUZ0RrSXdiL3VmMEh1REFCQU1BRmpCKzNGaEFnRi9HOE52Z1A0T0lFQUFBWFlTMGdRQjVHcGczK0E3Z1VBUURBUlZnTENGQi9NZmh2WXI0L0FYQnhBZ0NBUzlnN3BRb0FvTTRNL2dOWUdnRUF3Q1ZFWCtub1VTK1hBSFUwYXZBZndKSUpBQUNXWVAvc2dMV0FBRFVUQi8vOXM1c1NBRXZqYlJaZ0Nhd0ZCS2lmV1Bzbm5BVllPazlNZ0NXS3RZQUdBZ0xVZzdWL0FNc25BQUJZQnJNQUFPcmhua00zSkFDV1J3QUFzQXl4Rm5CaXpxb3BnQ3JGMmorRC93Q1dUd0FBc0V3ak0wTjZUZ0VxWk8wZndNcDRnd1ZZcHJoMUdqZDFHcUFTMXY0QnJKd0FBR0FGWWkyZ0YxQ0Ezb3JuN3BoWkxBQXJKZ0FBV0lIMldrQXZvUUE5NWJrTHNEb0NBSUFWaXZWVDFnSUM5TWFCVTMzVy9nR3NrZ0FBWUJXc0JRVG9qZnNQYjAwQXJJNEFBR0FWWWkyZ0d5bUE3ckwyRDZBekJBQUFxelF5UFdndElFQ1h0QWYvV2ZzSDBCSGVXQUZXS1FZQ1dnc0kwQjNqeHplNS9RZm9FQUVBUUFkWUN3alFlZkZjamVjckFKMGhBQURvZ0tnQzJEczVuQURvSEd2L0FEcExBQURRSVRFUTBGcEFnTTZJd1grR3JBSjBsZ0FBb0lQMnpRd21BRmJQNEQrQXpoTUFBSFRRd1lVK0F3RUJWc25hUDREdUVBQUFkTmpZMFd1c0JRUllJV3YvQUxySEd5cEFoOFZBd0xFam14TUF5eGVELzl6K0EzU0hBQUNnQzhhUFd3c0lzRnp4M0RUNEQ2QjdCQUFBWFdJdElNRHlqRXdQSlFDNlJ3QUEwQ1hXQWdJc1hReittNWp2VHdCMGp3QUFvSXYyVHFrQ0FGZ0tnLzhBdWs4QUFOQkYwYzg2ZXRSTExjREZqQnI4QjlBVEFnQ0FMdHMvTzJBdElNQUZ4TUYvLyt5bUJFRDNlU01GNkRKckFRRXVMTmIrQ1VrQmVzUFRGcUFIWWkyZ2dZQUFiMlh0SDBCdkNRQUFlc1FzQUlDM3V1ZlFEUW1BM2hFQUFQUklyQVdjbUxQaUNpREUyaitEL3dCNlN3QUEwRU1qTTBONlhRR1N0WDhBVmZBV0N0QkRjZHMxYnRvMVVEaHIvd0NxSVFBQTZMRllDK2pGRnloVlBQL0d6RVFCcUlRQUFLREgybXNCdmZ3Q2hmTDhBNmlPQUFDZ0FySDJ5bHBBb0RSUHQ1NTcxdjRCVkVjQUFGQVJhd0dCMGp3ME5ad0FxSTRBQUtBaXNSYlFUUmhRQ212L0FLb25BQUNvME1qMG9MV0FRT08xQi85Wit3ZFFPVytkQUJXS2dZRFdBZ0pOTjM1OGs5dC9nQm9RQUFCVXpGcEFvTW5pK1JiUE9RQ3FKd0FBcUZoVUFleWROQmdMYUNaci93RHFRd0FBVUFNeEVOQmFRS0JwWXZDZllhY0E5U0VBQUtpSmZUT0RDYUJKRFA0RHFCY0JBRUJOSEZ6b014QVFhSXg0bnBsdkFsQXZBZ0NBR2hrN2VvMjFnRUQyMm9QL2podjhCMUEzM2pJQmFpUUdBbzRkMlp3QWNoYUQvOXorQTlTUEFBQ2dac2FQV3dzSTVDdWVYd2IvQWRTVEFBQ2docXdGQkhMbCtRVlFYd0lBZ0JxeUZoRElVYXo5aStjWEFQVWtBQUNvcWIxVGJ0R0F2Rmo3QjFCdkFnQ0Ftb28rMnRHalhxYUJQSXdhL0FkUWV3SUFnQnJiUHp0Z0xTQlFlKzIxZjdPYkVnRDE1cTBTb01hc0JRUnlFR3YvaEpVQTllZEpEVkJ6c1JiUVFFQ2dycXo5QThpSEFBQWdBMllCQUhWMXo2RWJFZ0I1RUFBQVpDRFdhazNNOVNlQU9vbTFmd2IvQWVSREFBQ1FpWkdaSVQyMlFHM0U4OGphUDRDOGVKTUV5RVRjc28yYnNnM1VSRHlQM1A0RDVFVUFBSkNSV0F2b2hSdW9XanlIeHN3bUFjaU9BQUFnSSsyMWdGNjZnWXA1RGdIa1NRQUFrSmxZdDJVdElGQ1ZwMXZQSDJ2L0FQSWtBQURJa0xXQVFGVWVtaHBPQU9SSkFBQ1FvVmdMNkFZTzZEVnIvd0R5SmdBQXlOVEk5S0MxZ0VEUHRBZi9XZnNIa0RWdmpnQ1ppb0dBMWdJQ3ZUSiszTm8vZ053SkFBQXlaaTBnMEF2eG5Jbm5EUUI1RXdBQVpDeXFBUFpPR3NnRmRKZTFmd0ROSUFBQXlGd01CTFFXRU9pV0dQeG42Q2hBTXdnQUFCcGczOHhnQXVnR2cvOEFta01BQU5BQUJ4ZjZEQVFFT2k2ZUsrYU1BRFNIQUFDZ0ljYU9YbU10SU5BeDdjRi94dzMrQTJnU2I0b0FEUkVEQWNlT2JFNEFuUkNELzl6K0F6U0xBQUNnUWNhUFd3c0lyRjQ4Und6K0EyZ2VBUUJBdzFnTENLeVc1d2hBTXdrQUFCckdXa0JnTldMdFh6eEhBR2dlQVFCQUErMmRHallRRUZnUmEvOEFtc3ZiSVVBRFJmK3V0WURBY28wYS9BZlFhQUlBZ0liYVB6dWdDZ0JZc3ZiYVA4RWhRS041TXdSb0tHc0JnZVdJdFg5Q1E0Qm04NVFIYUxCWUMyZ2dJSEFwMXY0QmxFRUFBTkJ3MGRNTGNESDNITG9oQWRCOEFnQ0Fob3QxWGhOei9RbmdmR0x0bjhGL0FHVVFBQUFVWUdSbVNHOHY4RGJ4WExEMkQ2QWMzZ1lCQ21BdElIQSs4Vnh3K3c5UURnRUFRQ0ZpTGFBWGZXQlJQQS9HekFnQktJb0FBS0FRc1Jad1pIb3dBUVNIZjREeUNBQUFDakl4djhGYVFDQTkzWG9PV1BzSFVCNEJBRUJockFVRUhwb2FUZ0NVUndBQVVKaFlDMmdnSUpUTDJqK0FjZ2tBQUFvMGR2UWFhd0doUU8zQmY5YitBUlRMMng5QWdXSWdvQ29BS00vNGNXdi9BRW9tQUFBb2xMV0FVSmI0ZVkrZmV3REtKUUFBS0ZSVUFleWROQWdNU21IdEh3QUNBSUNDeFVCQWF3R2grV0x3bjdWL0FBZ0FBQXEzYjJZd0FjMW04QjhBUVFBQVVMaURDMzBHQWtLRHhjKzNlUjhBQkFFQUFOWUNRa08xQi84ZE4vZ1BnRE84N1FIUUhnZzRkbVJ6QXBvbEJ2KzUvUWRna1FBQWdMYngxaTNod1lWMUNXaUdPUGdiL0FmQTJRUUFBTHhwMy9SUUFwckJtazhBemlVQUFPQk4xZ0pDTThUYXYvaDVCb0N6Q1FBQWVJdTlVOE1HQWtMbXJQMEQ0SHk4NFFId0Z0RTNiQzBnNUd2VTREOEFMa0FBQU1EYjdKOGRVQVVBR1dxdi9SUGdBWEFCM3U0QWVCdHJBU0ZQc2ZaUGVBZkFoZmlFQU9DOFlpMmdnWUNRRDJ2L0FMZ1VBUUFBRnhTOXhFQWU3amwwUXdLQWl4RUFBSEJCc1Vac1lxNC9BZlVXYS84TS9nUGdVZ1FBQUZ6VXlNeVFubUtvc2ZqNXRQWVBnS1h3UmdmQVJWa0xDUFVXUDU5dS93RllDZ0VBQUpjVWF3RWRNS0IrNHVkeXpLd09BSlpJQUFEQUpjVmF3Skhwd1FUVWk4TS9BTXNoQUFCZ1NTYm1OMWdMQ0RYeWRPdm4wZG8vQUpaREFBREFrbGtMQ1BYeDBOUndBb0RsRUFBQXNHU3hGdEJBUUtpZXRYOEFySVFBQUlCbEdUdDZqYldBVUtIMjREOXIvd0JZQVc5d0FDeExEQVJVQlFEVkdUOXU3UjhBS3lNQUFHRFpyQVdFYXNUUFhmejhBY0JLQ0FBQVdMYW9BdGc3YVFBWjlKcTFmd0NzaGdBQWdCV0pnWURXQWtMdnhPQS9hLzhBV0EwQkFBQXJ0bTltTUFHOVlmQWZBS3NsQUFCZ3hRNHU5QmtJQ0QwUVAyZm1iZ0N3V2dJQUFGYkZXa0RvcnZiZ3YrTUcvd0d3ZXQ3WUFGaVZHQWc0ZG1SekFyb2pCdis1L1FlZ0V3UUFBS3phZU90Mjh1REN1Z1IwVmh6OERmNERvRk1FQUFCMHhMN3BvUVIwbG5XYkFIU1NBQUNBanJBV0VEb3IxdjdGenhVQWRJb0FBSUNPMlRzMWJDQWdkSWkxZndCMG1yYzBBRG9tK3BXdEJZVFZHelg0RDRBdUVBQUEwRkg3WndkVUFjQXF0TmYrQ2RJQTZBSnZhQUIwbExXQXNEcXg5aytJQmtBMytIUUJvT05pTGFDQmdMQjgxdjRCMEUwQ0FBQzZJbnFZZ2VXNTU5QU5DUUM2UlFBQVFGZkUrcktKdWY0RUxFMnMvVFA0RDRCdUVnQUEwRFVqTTBONm1XRUo0dWZFMmo4QXVzMWJHUUJkWXkwZ0xFMzhuTGo5QjZEYkJBQUFkRldzQlhTd2dRdUxuNDh4TXpNQTZBRUJBQUJkRldzQlI2WUhFM0IrRHY4QTlJb0FBSUN1bTVqZllDMGduTWZUclo4TGEvOEE2QlVCQUFBOVlTMGd2TjFEVThNSkFIcEZBQUJBVDhSYVFBTUI0UmVzL1FPZzF3UUFBUFRNMk5GcnJBV0U5TWJnUDJ2L0FPZ3hiMkVBOUV3TUJGUUZBQ21OSDdmMkQ0RGVFd0FBMEZNeDhkekJoNUxGOTMrc3h3U0FYaE1BQU5CemV5Y05QcU5jMXY0QlVCVUJBQUE5RndNQnJRV2tSREg0ejlvL0FLb2lBQUNnRW51dFA2TkFCdjhCVUNVQkFBQ1ZpRDVvQXdFcFNYeS9tMzhCUUpVRUFBQlV4bHBBU3RFZS9IZmM0RDhBcXVXdEM0REt4RnJBc1NPYkV6U2Q3UmNBMUlFQUFJQktqYmR1UlE4dXJFdlFWSEh3Ti9nUGdEb1FBQUJRdVgzVFF3bWFhczhMV3hNQTFJRUFBSURLV1F0SVU4WGF2NE1MZlFrQTZrQUFBRUF0eEZwQUF3RnBHbXYvQUtnVGIxb0ExSUsxZ0RUTnFNRi9BTlNNQUFDQTJ0Zy9PNkFLZ0VhSWczOU0vZ2VBT3ZHV0JVQnR4RnJBRVFNQmFRQ0hmd0RxU0FBQVFLM0V1alFEQWNtWnRYOEExSlVBQUlEYUdYVjdTc2J1T1hSREFvQTZFZ0FBVUR1eEZ0QU5Lam1LdFg4Ry93RlFWd0lBQUdvcGVxZ05CQ1FuOGYxcTdSOEFkZWJOQ29CYXNoYVEzTVQzcTl0L0FPcE1BQUJBYmNWYVFBY3FjbUR0SHdBNUVBQUFVRnRuMWdJT0pxZzdoMzhBY2lBQUFLRFdKdVkzV0F0SXJYMTNydC9RU2dDeUlBQUFvUGFzQmFUT0hwMFpTZ0NRQXdFQUFMVVhhd0VOQktTT3JQMERJQ2NDQUFDeU1IYjBHbXNCcVpYMjREOXIvd0RJaURjcEFMSVFBd0ZWQVZBbk1malA3VDhBT1JFQUFKQU5CeTdxSXI0UERmNERJRGNDQUFDeXNuZHlPRUhWclAwRElFY0NBQUN5RWdNQnJRV2tTakg0eiswL0FEa1NBQUNRbmIxVHFnQ29qc0YvQU9SS0FBQkFkcUwvMmtCQXFoRGZkK1pRQUpBckFRQUFXYklXa0Y2TGcvLys0d01KQUhMbHpRbUFMTVZhd0xFam14UDBpaTBVQU9ST0FBQkF0c1pidDdFSEY5WWw2RFpyL3dCb0FnRUFBRm5iTnoyVW9OdjJ2TEExQVVEdUJBQUFaTTFhUUxvdDF2NGRYT2hMQUpBN0FRQUEyWXUxZ0FZQzBpM1cvZ0hRRk42V0FNaWV0WUIweTZqQmZ3QTBpQUFBZ0ViWVB6dWdDb0NPaW9OL1RQNEhnS2J3cGdSQUk4UmF3QkVEQWVrZ2gzOEFta1lBQUVCanhKbzJBd0hwaEFPbitxejlBNkJ4QkFBQU5NcW9XMXM2NFA3RDF2NEIwRHdDQUFBYUpkWUN1cmxsTldMdG44Ri9BRFNSQUFDQXhvbmViUU1CV1luMjREOXIvd0JvS0c5SEFEU090WUNzVkZTUHVQMEhvS2tFQUFBMFVxd0ZkSkJqT2F6OUE2RHBCQUFBTk5LWnRZQ0RDWmJLNFIrQXBoTUFBTkJZRS9NYnJBVmtTYjQ3MTI5NEpBQ05Kd0FBb05Hc0JXUXBIcDBaU2dEUWRBSUFBQm90MWdJYUNNakZXUHNIUUNrRUFBQTAzdGpSYTZ3RjVMeXMvUU9nSk42R0FHaThHQWlvQ29EemljRi9idjhCS0lVQUFJQWlPT2h4cnZoK01QZ1BnSklJQUFBb3h0N0o0UVNMUnFZTi9nT2dMQUlBQUlvUkF3R3RCU1RFNEwrSitmNEVBQ1VSQUFCUWxMMVRxZ0JJQnY4QlVDUUJBQUJGaWI1dkF3SExObW9lQkFDRkVnQUFVQnhyQWNzVkIvOXZHZndIUUtHOC9RQlFuRmdMT0haa2M2STh0a0VBVURJQkFBQkZHajgra0E0dXJFdVV3OW8vQUVvbkFBQ2dXUHVzZ1N2S25oZTJKZ0FvMmRvRUFJV0t0WUJicm5nbDBYemZlbkZqT3JqUWx3Q2daQ29BQUNpYWt2QXlQTjBLZXdDZ2RBSUFBQUFBS0lBQUFBQUFBQW9nQUFBQUFJQUNDQUFBQUFDZ0FBSUFBQUFBS0lBQUFBQUFBQW9nQUFBQUFJQUNDQUFBQUFDZ0FBSUFBQUFBS0lBQUFBQUFBQW9nQUFBQUFJQUNDQUFBQUFDZ0FBSUFBQUFBS0lBQUFBQUFBQW9nQUFBQUFJQUNDQUFBQUFDZ0FBSUFBQUFBS0lBQUFBQUFBQW9nQUFBQUFJQUNDQUFBQUFDZ0FBSUFBQUFBS0lBQUFBQUFBQW9nQUFBQUFJQUNDQUFBQUFDZ0FBSUFBQUFBS0lBQUFBQUFBQW9nQUFBQUFJQUNDQUFBQUFBU05KOEFBQUFBQUFvZ0FBQUFBSUFDQ0FBQUFBQ2dBQUlBQUFBQUtJQUFBQUFBQUFvZ0FBQUFBSUFDQ0FBQUFBQ2dBQUlBQUFBQUtJQUFBQUFBQUFvZ0FBQUFBSUFDQ0FBQUFBQ2dBQUlBQUFBQUtJQUFBQUFBQUFvZ0FBQUFBSUFDQ0FBQUFBQ2dBQUlBQUFBQUtJQUFBQUFBQUFvZ0FBQUFBSUFDckUwQUFFQXQvZFc3Ly85VWhhOU1EcWR2dmJReGxlQzJqUyttZTRjT3B5cjgweC85andsNlNRVUFBQUFBRkVBQUFBQUFBQVVRQUFBQUFFQUJCQUFBQUFCUUFBRUFBQUFBRkVBQUFBQUFBQVd3QnBDZSt5Ly82WnVKL0Qzd2xZZlRrMC85VldKNUhuMzR5NG1VVHN6TnA3bTV1ZlpmSDU2YWF2L1BrNU5uZm4yaDlldmhxZWxFYzMxNHh3ZlQzWGQ5TGxYaDkrNytRam84V2NiMzE2ZDJmaUw5ZHV1ckNwLzQ5RDlMQU5TUEFBQ2doOTUvNjNzVFMvT2pBejlwQndJL2J2MzYvV2QrMEFvR3B0T1BEdjRra2IvKy92NDB2R1VvMFYwYit0Zjdjd2JnTFFRQUFOVFN1N2ZmM1A0MVFwTlBmZkxNTFdZRUF0OTcrb2Z0UU9EN3JWOEZBZ0FBU3ljQUFDQWJjYVA1a1E5OXNQMFZEazlPdFFPQmJ6NzE3ZlM5WjM2WUFBQzRNQUVBQU5tSzh1YVAvMXA4ZmF3ZEJueDE5SWxXSVBBRE13UUFBTTVEQUFCQUkwUVlzT2UrejdmLytzbS8vSFlyRFBpYUlBQUE0Q3pXQUFMUU9GRVI4STAvL3c5cHo3MmZUOE5EZ3drQUFBRUFBQTBtQ0FBQStBVUJBQUNORjBIQW56M3k1ZlR4Mno2V0FBQktKUUFBb0FpTE13SWVmZmpMcWdFQWdDSUpBQUFveXZ0dmZXKzdHdURET3o2WUFBQktJZ0FBb0RoUkRmRFFnMTlNZCs2Nkl3RUFsRUlBQUVDeDd0ejE2ZlQ1M1o5TEFBQWxFQUFBVUxUZi91UW4ybHNDQUFDYVRnQUFRUEZpUzhEZUI3NllBQUNhVEFBQUFDMGYrZEFIVlFJQUFJMG1BQUNBTjBRbGdNR0FBRUJUQ1FBQTRDd3hHUEJUTzM4ckFRQTBqUUFBQU00UkljRHcwR0FDQUdnU0FRQUFuR05ELy9yMDBJT0dBZ0lBelNJQUFJRHplUGYybTl1VkFBQUFUU0VBQUlBTGlGa0FXZ0VBZ0tZUUFBREFCVVFyd0o3NzdrNEFBRTBnQUFDQWkzai9yZTlONzd2bHZRa0FJSGNDQUFDNGhEdDMzWkVBQUhJbkFBQ0FTMUFGQUFBMGdRQUFBSmJnSXgvNllBSUF5Tm5hQkVEUFBQbVgzMDZsbVp1ZlR5Zm01dEx3MEZCN3FGNTh2V3Y3dHZhdk9mbU4yLzYzOU5YUkoxcS9sL2tFQUpBakFRQTk5Ny84cjcrUmN2QmYvdE0zVXhXK092cTE5aUdEWm5wZzd5T0pNOXBCd0xhYld6ZnJ2NUxlZjh2LzNBNEY2aXorZVgvanRvK2xyNDkvSXdFQTVFZ0FBRUFsNGliOSs4LzhzUDBWaHJjTXBUdDNmYm9WQnJ5My9kZDE5T0VkdnlJQUFBQ3lKUUFBb0JZT1QwNmxCNzV5cGtJaWJ0by8xd29ENmhZRXhEREFxQVRRQmdBQTVNZ1FRQUJxNTV0UGZUdDk0dFAvck4wU1V6ZTJBUUFBdVJJQUFGQmJNUThqZ29Db0RxaUxxQUlBQU1pUkFBQ0FXb3ZELys5ODdnL1Nqdzc4Sk5YQisyNzU1UVFBa0NNQkFBQzFGejMzdjMvM0Yyb1JBcng3KzgzWnJUQUVBQWdDQUFDeUVDSEFIKzc1azFvTTROdFMweTBGQUFBWEl3QUFJQnRuTmdVOG5LcjJQMnk3S1FFQTVFWUFBRUJXdmpQeDkrbDdULzh3VlNuYUFBQUFjaU1BQUNBN1ZhOEgzTEpsU3dJQXlJMEFBSURzZlArWkgxWmFCWERkMEdBQ0FNaU5BQUNBTEgxbjR1OVNWV3dCQUFCeUpBQUFJRXN4QzZBcXc3WUFBQUFaRWdBQWtLWFlDQkJmQUFBc2pRQUFnR3o5Nk1DenFTcmFBQUNBM0FnQUFNaldpZm01VkpWK0FRQUFrQmtCQUFEWjBnSUFBTEIwQWdBQUFBQW9nQUFBZ0d5WnhnOEFzSFFDQUFDeVZXVUx3TnpjZkFJQXlJa0FBSUJzVlZrQmNFSUFBQUJrUmdBQVFMWTJyTzlQQUFBc2pRQUFnR3hkdDJVd1ZjSDJBUUFnUndJQUFMSzBvWDk5ZXRmMm0xTVZCQUFBUUk0RUFBQms2WDIzdkRkVjVhWDVrd2tBSURjQ0FBQ3k5T0VkdjVLcTh1TURCeE1BUUc0RUFBQmtaM2hvS0gzODF6NldxdktqQXo5SkFBQzVFUUFBa0owcUQvL0JDa0FBSUVjQ0FBQ3lFcmYvZCs3NmRLclM5NS81WVFJQXlJMEFBSUNzVkg3NGYvb0hDUUFnUndJQUFMSng1NjQ3S2kvLy85RkIvZjhBUUo0RUFBQms0ZU8zZmF6eTIvL3dOOS85K3dRQWtDTUJBQUMxRjRmL1BmZDlQbFV0aHYvcC93Y0FjclUyQVVDTlJkbC9IVzcrdy9jYy9nR0FqQWtBQUtpbG1QWWZ0Lzd2di9XOXFTNisrWmYvYndJQXlKVUFBSUJhV1Z6elYvV3d2M01kbnB4SzM1blEvdzhBNUVzQUFFRGxOcXhmbno3OG9WOUp2M0hieDJwMTQzODI1ZjhBUU80RUFBRDAxUERRWU5yUTM1L2V2ZjNtOU81dE42ZjN0UTc4OGRkMTk5WFJyeVVBZ0p3SkFBQjY2QnRQL1B0VXF1RXRReWxYVHo3MTdYUjRjam9CQU9STUFBRFFRemtmZ2t2bTloOEFhSUxMRXdCd1FYSDRkL3NQQURTQkFBQUFMaUFtLzM5OS9Cc0pBS0FKQkFBQWNBRVA3M3M4blppYlR3QUFUU0FBQUlEemlOTC83MHo4ZlFJQWFBb0JBQUNjSTByL3Z6cjZSQUlBYUJJQkFBQ2NKUTcvdjNmM0Z4SkF5ZnJYbkU1QTh3Z0FBT0FOMGU4ZmgzOVQvNEc2bUR0ZHpldDYvK1d2cFZJTXJYMGxWV0h1OUpvRXZTWUFBSUEzT1B3RGRUUDNXaldIeFA3TFZRQjAyOXhyam1MMG51ODZBR2g1NEN1UHBCOGYrRWtDb0t3S2dDMVhWRlVCNENoRzc2MU5BRkN3S1B0L1pOL2o2Y21udnAwQTZxYXFRK0sydmxPcEZGdXFhZ0Y0VFFzQXZTY0FBS0JZaXozL2J2NkJ1cHF2NkpDNDVZcFhVeW5XcjZtbTJtSCtkUlVBOUo3dk9nQ0tGTlArZitkei84TGhINmkxeVZldlNGV0lGb0JTNWdCc1g3ZVFxakQ1OGpzUzlKb0FBSURpZlAvcEg3UU8vMzlnNEI5UWUxV1dpVzliMS93MmdHMFZIZjVEVmVFT1pkTUNBRUJSSHQ3M2VQcjYrRGNTMVptYm0wdFY2ZS92Yi8yL1pRUS9HL3JYcHlwRWRRMmRNL2xxZGEvcjIvb1cwak0vdnlvMTJaYTFMNmVxVEwzaUtFYnZxUUFBb0FnL092Q1RkRWZyMXQvaHYzcHpjL09wS3RjTkRhWlNuQWs3eU4xOGhidml0NytqK1JVQXQxejE4MVNWeVZkVUFOQjdZaWNBR2kwRy9YMTkvQy9TVjBlZlNGRFZyWGdWaG9lR1VoVk9WQmp3Tk5HQlUzMnBLanMyekxXdXFWT2piYSt3emVIZ1FuWC9iaW1YQUFDQXh2cWJpYjlQait4N1RLOS96Ynd3VmQyL2orRXQxUnlLUzFKbGkwY1R6VmU0S3o0R0FkNXk1Y25HdGdHMGYzOVhuVXhWT0xDd0xrRVZCQUFBTkU0TStYdThkZVAvL1dkK21PQnNKUVVBNzk1K2M2ckNTL1BWSEtpYUtzckU1MW9oUUZVVCtlT0EzTlFBWUVkL2RXSFZsQUdBVkVRQUFFQWpSTm54ZHliK0xqMzVsOTkyOEsrNUtvZkVWVlVXMzJ2UjZsQlZ1OFBrNUdTaXN5SUVxR3BWM1czdmZER05IYjAyTlZHVkFVQ1ZyUjJVVFFBQVFOWml1RjhjL0dPNG45N2pmTVMvcXlvT3FGWGRpdmZhdTdkVjkvdDhRY3ROeDBXdmVGVUJ3SllyWG1sa0c4QlE2L2Uxby85RXFzcEJMUUJVeEJZQUFMSVdKZDBPLy9tcHFrODhRb2ZoTGMzZkJQQ3VDb01PYXdBN3IrcCs4VjNYSEVsTmMrdVYxYmFxUEhPeW5JR2sxSXNBQUlDc3hZSHVpL2ZlbmNqTGp3NDhtNnJ5L2x2ZW01cnUvYmY4Y3FxS01LN3pxajRzeGh5QXVERnZrczlVR0dwRW9ETjMyakdNYXZqT0F5QjdIL25RQjlPbmR2NVdJaDhuNXF2cnZTMmhEZURkMjI5S1Zmbnh3WjhrT212cWxiV1ZIeGgzYldwT0ZVRE1OZGhTWWFCeFVQOC9GUklBQU5BSWQrNzZkQm9lYW41cGQxUEU3SWFxZkhqSHI2UW1pMEdIVlcwN2lOdC9GUUNkTjNkNlRlV0h4dHMydnRpZUJaQzdxR1Q0VE1VdERVM2Rxa0FlREFFRUtFRDA1SGF6THpjT0cxV3ZWNHRXZ0QzMzNaMSsvKzR2Sk9xdjBrMEFyZS9WOTkzeTNzWnVpL2p3aHo2WXF2TGpBd2NUM1hGZ29hK3luZldMN3RvOG5UNzMzQytsbk1VOGd5MFZ0ek1JQUtpU0FBQ2dBRTgrOWUzMDFkRW5VcmU4YTl2TjZXdGYvWGVwYXUrLzliM3RWb0N2ai85Rm90NStkTEM2R1FBaHZsZWFHZ0Q4NW0wZlMxWDVrZkwvcnBtWTYwODdCNDZsS20zck81VjJiNTVLSXpONXJ0T00wdi80cWxMMC84ZGFSNmlLRmdBQVZpMTZmcjg2K3JWVUIxb0I4aEFWQUZXV2lqZDFaa1NVLzFlNUFlQjdUemN6VkttRGd6VVpITGR6WUxieVEvUktST24vN3NIcU4xUk16RzFJVUNVQkFBQWRFUlVHVmZaMUw0cFdnSWNlL0dLaS9pWXJiQU9JNzVQM05YQWJRQVJnVlZJQjBEMHhCNkF1cStOMkQwNm5iZXRPcFZ6RTRmL2g2NTlML1plZlRsV0xTZzZva2dBQWdJNzUwbGNlU1hVUVU5NnJQZ2h4YWQ5NzVnZXBTbmZ1dWlNMVNkeitmL3pYcWl2L1B6TnJaRHJSUFJQejlUZzg5bC8rV25yNG4vd3NpeEJnOGZCZmRkOS9pTkwvZ3dzMkFGQXRBUUFBSFZPdlZvQTcyck1KcUsvL2RxRDZPUUJOcWdLb092VDZieFhQZFNqQnhJbisydXlQWHd3QmRxeXZicVhucGRUcDhCK1UvMU1IQWdBQU9xb3VyUURoM3p6NFIrMVNiK3FwRGtQNDdyL3Y4NDM0SHFuNjlqLzg1Ky8rWGFLNzZyQU84R3dSQWp5dzlWQjdzbjdkUkREeCtJM1AxdWJ3SC9ZZkgwaFFOUUVBQUIxWGwxYUFXUGYyenovVHJETHZKdW4yZXNxbGlPK1JUKzM4Uk1yZG5sYVFVYldxV3pwS01YcjAybFEzbjJrRkFISFRQbFNEdy9iNnkwKzMxeFZHTUZHSG52OUZUNSs4eXZSL2FrRUFBRURIMWFrVjRMYy8rWWxHRG50cml1L1ZvQW9nMmtWeS9oNkpmLzVvWjZpUy92L2VpUjN5ZFdrRE9Oc3RWNTFNVDl4MHNGME5VRVVRRUFmLytMLzl4TTBIMHUwVnIwczhuMis5dERGQkhRZ0FBT2lLT3JVQ05LWE11NG5xc2pZdXZrZHlYQjhaY3k3cU1QRHlPeFBLLzN0cGZIWlRxcXZGYW9CN2h3NzNKQWc0KytBZi83ZnJkT3UvS0c3K254SUFVQk1DQUFDNjVnLzMvRW1sdTk0WGFRV29yLzljazROamZJL0Urc2ljZ3FMbys0ODVGM1h3TjkvOSswVHY3SjhkcUdVVndLTG91Nzl0NDR2dGlvQUlBMjU3NTRzZERRUGkwQjkvLy9oNzEvbmd2MmlzaG0wYmxHdHRBb0F1aWJMZ2FBVzQrNjdQcGFwRkswRGNVdFpoOEJ5L0VBRlJWQUZVWGNJZVluM2tvdzkvT2YzKzNWK29SWEIxTVhINC83TkgvblU3dUtoYS9Kejd1ZXF0R0FZWVZRQjFITDUzcm1nTmlLOXdaZzNldW5SZ29hKzlEaTlDalBqL203cEFiM3lFQmpGb2NNc1ZyN2ErWGs3YjNyR1FibTM5dmVvd2EyQ3AzUDVUTndJQUFMcnE2K1BmU0IvZThTdTFPT0RGRGU5dmZmcC9yLzNocmpRUnpOVGgreU5FQ1BBZkgvOTM2ZmMrLzRWMGVLcWVQZTFSOWg4My8zVTQvSWM2ekhFb1VWUUI3Qnc0VnV1YjczTkZaVUI4N2VpdjcrckFUblA3VDkxb0FRQ2c2eDdZKzBndER0MVIzdjNGZSs5TzFNczNuL3AyclVLWk9Gai8yU05mcnVWZ3dFL3QvSzMwdGEvK3U5b2Mvc09mdDBJK2VtK3hDb0Q2Y3Z0UEhRa0FBT2k2eFZhQU92akloejdZUGtSUkgzSDRyOXNRdWNVUUlDYnMxMEdVL0VkN3d0MTMzWm5xSkFaOS9yZ213ejVMVlBkWkFLVnorMDhkZVdJQTBCUFJDbENYaWU4eE5UM0hpZTlOOXVSZmZqdlZVWHl2Zk9PSmY1OCtmdHZIVWhVMnJGL2ZEaUgrWSt2V3Z5NXRFbWY3dXR2L1NrVVZ3TWgwZmFwQitJV25YdHpvOXA5YUVnQUEwRE4xYWdYWWM1OVdnRHFKSVhKMUNZak9GZFVBZSs3Ny9KdEJRQnpLdTIzeDRQOFhmLzRmMmlGRUhiY1RSR1hQazAvVk03Z3BTUnd5bnpsNVZhSStvdlIvN0pqYmYrcEpBQUJBejlTcEZTQnVVN1VDMUV2ZEQ1T0xRVUFjeXZmYysvbjBrUjBmN0dnWUVGVXBuOXI1aVhhcC8xLzlQLzkzYlEvK2l4eis2MlB2MUxCV2dCcUowdi9KQzJ3MmdLclpBZ0JBVDlWcEswQWNzTDd6M2IrdDdiVDMwc1F3d005RmUwYU5CdHlkVHh6S1AvNXJIMnQvaGVpRGIzOGRQTk1QSDFVdUVYYWRtRDkvdFVzYzlEZjA5N2MzRHZTMy9sN3Yzblp6KytlaDdyL3ZzN245cjVmMmpmT1J6V24zNEZTaVdrci9xVHNCQUFBOUY2MEFzV3F0NnR2TnhWYUEyUHRPUFR3KytrUzZ2M1hMbnBNNHlNZFhTZUx3ZjNoU2NGWW40OGNIMHJhK1UrbTJkNzZZcUVZRU1TTXpaakpRYjJxRkFPaTV1clVDUkNVQTlmRE45c0hTTFdhZG5mbjVmU0pSUHlQVGcwclBLeEl0R1BjY3VrRXJCclhuT3hTQVN0UnJLOEFkNlYzYnlyckJyYk12ZmVXUlJIMDUvTmRYYkFXSVE2Z1FvUGYySHI3T256dFpFQUFBVUptNmJBVUkvK2JCUDZyMXdMV1MxSGtqUU9taTlGL3ZmNzNGSVhUUEMxdmRSUGZRNk5GcjA4UjhmNEljZURJQVVKazZ0UUxFQUxaLy9wazdFdlZRcDNDSU0rTGZSMTErWHJtNGd3dDk2ZTZmS1VmdmhUajh4OVIveUlXbkFnQ1ZxbE1yd0c5LzhoUHBmYmRVdjUyQWVvVkRuQkgvUGd6K3k0Y1FvUHNjL3NtUkp3SUFsYXZUYlc5TW9OY0tVQTkxQ29kS0YyWC84ZStEdkFnQnVzZmhuMXg1R2dCUU9hMEFYTWk5ZXg2MEZhQmlxakh5RmlIQTcvN2pUUWJVZGRDK21TR0hmN0lsQUFDZ0ZyUUNjRDVSR2ZKL2ZQRlB6QU9vU1B5NS85N2RYMUQ2bjdrNC9NZDJnSU1MNnhJckY1VVVVVkd4ZjNZZ1FhNEVBQURVaGxZQXp1ZkhCMytTSHQ3M2VLTDM5UDAzUjRRQW4vdkhtOXFsNnl6ZmdWTm5LaW1lK2ZsVkNYSW1BQUNnTnVyV0N2REZlKzlPMU1NM24vcTJNdlFlaXo5dmZmL05FNlhyZXllSHRRUXN3L2pzcHZTN3ovMlNQek1hUVFBQVFLM1VxUlhnSXgvNllQclV6dDlLMU1OWFI1OFFBdlJJL0RuSG56Zk45TlJMRzlzdEFmRXJGeFlIL2lqNUg1a1pUTkFVQWdBQWFxZE9yUUIzN3ZwMEdoN3k4bGNYUW9EdWMvZ3ZReHh1b3hKQU5jRDVSYXVFa24rYVNBQUFRTzNVcVJVZzVnRHN1VThyUUowSUFickg0Yjg4VVFWd3g3UGIwc2owa0NDZzVlbVRWN1gvUEtKVnd2cEVtc2gzTlFDMVZLZFdnUGZmK2w2dEFEVVRoMVNEQVRzci9qd2Qvc3MxZm55ZzNSWVFOOThsQmdGeDhJOXkvL2d6RUlUUVpBSUFBR3BMS3dBWEV5SFJIWGYrUWJ0aWhKVnJyL3I3L0JjTS9LTjk4STJiN3pnRWw5QWFFRGY4VDcyNDhjMkR2M0ovU2lBQUFLQzI0bUQzd0ZjZVRuV2dGYUNlWWtYZzc5MzlyOUtQRHZ3a3NYeng1L1k3bi9zWDZmdlAxS1BhaG5xSWcvOWlhOENlNTdjMmJsaGczUGJIWUw4N2ZySTk3WjBhZHZDbktBSUFBR3J0T3hOL24vN211MytmNmtBclFEMUZVUFE3bi9zRGN3R1c2ZXZqZjVGKy8rNHZ0UDc4cGhOY3lNVDhoblkxUUlRQjhXc2Nubk1VLzl6UjN2RHAxdThqYnZ0anRaOGVmMHEwTmdGQXpUMjQ5K0hXNGZzL3RHL2hxM2IzWFhlbTd6MzlnL2JOTS9VUy9ldFBQdlZYNmM4ZS90ZHBlTXRRNHZ3aU1QblNWeDV4NjgreVJGWEE1Q3NiMjlVQS9aZWZUcmRjT1o5MmJKaEwyOWFkU3R2WExhUzZpWC9lT1BUL29IVzdQekczd1dFZjNpQUFBS0Qyb2tjNVdnRWVldkNMcVE3K3pZTi8xTDV4cnN0OEFuNGhEcmVmK1BRL1M1L2ErWW4wMjYwdlFjQXZ4UGRyM1BwSHI3L3ZYVllqRHROUkdSQmZZVEVRMk5hMzBQcjFaT3BmODFwUFE0RTQ3QjlZV0plbVhubEhldWJrbGVtWm42OTM0SWNMRUFBQWtJWEZWb0NQZk9pRHFXcHhxUHpubjdralBUSmlDbjFkeFNFM3ZtZGllT1BIYi90WUt0MzNuLzVCK3RMZVI1VDcweFhuQmdJaFFvR2hLMTVPVzlhK2tyYTg0NVUwdFBiVnRQN3kxOUtXSzE1cC8rZm4vbnFodisvY2EydmFmeDJIL01YLytTY3ZyMnYvdW5qb2Q5aUhwUk1BQUpDTk9yVUMvUFluUDlFNllQNmRNdW9hT3pORThwRjJhMENwUVVBYy9COXYvZjU5bjlKcjdjUDZRbDg2MlBwS0NrNmdOc1JsQUdSanNSV2dMdTYvNy9PMUNDTzR1TVVnSUZvRG5uenEyNDFmRzNpbTFQOGI3ZFYrc1NIQjRSK0FSU29BQU1oS2xIWEhJYTRPdDdsYUFmS3lHQVNFMzJoOS8vem1iZjgwdmUvV1gwNU5FYmY5ZjlQNitmaG02K2REano4QTV5TUFBQ0E3ait4N1BMMy9sdmZXWXNDYlZvQTh4U0U1dnVKNzZNTTdQcGcrMHZyS01ReUlRLy8zV3Q5N1QvN2x0OVBoS2YzOUFGeWNBQUF1b0tvU1ViYzJ6ZWI3cWpQaTl4TnJ6S0lFdnc3dS9Pd2Q2ZDR2UHVqbk4wUHhNeG5sOHZFVlljRDdXc0ZTaEFIdjNuNXpMVGNJeEQ5dlZNSDh0d00vU2YrNUZUejVuZ05nT1M3N3dFZC8vZlVFQU1CYlJBRHc3bTAzcGZmZitzdnRYOSsxZlZ0UFp6N0VZZjlIcllOKzNPeC9yM1hUSDFVbUR2d0FySVlBQUFCZ2lTSUFlTmUybTl1L1JwWEFodjcrTkR3MCtHWXdzRmcxY0xIcWdUakV6ODNOdGY4NkR2a3ZURTZudWZuNTFxOVQ3ZjhzRHYyVFUxTU8rd0IwbkFBQUFBQUFDbUFOSUFBQUFCUkFBQUFBQUFBRkVBQUFBQUJBQVFRQUFBQUFVQUFCQUFBQUFCUkFBQUFBQUFBRkVBQUFBQUJBQVFRQUFBQUFVQUFCQUFBQUFCUkFBQUFBQUFBRkVBQUFBQUJBQVFRQUFBQUFVQUFCQUFBQUFCUkFBQUFBQUFBRkVBQUFBQUJBQVFRQUFBQUFVQUFCQUFBQUFCUkFBQUFBQUFBRkVBQUFBQUJBQVFRQUFBQUFVQUFCQUFBQUFCUkFBQUFBQUFBRkVBQUFBQUJBQVFRQUFBQUFVQUFCQUFBQUFCUkFBQUFBQUFBRkVBQUFBQUJBQVFRQUFBQUFVQUFCQUFBQUFCUkFBQUFBQUFBRkVBQUFBQUJBQVFRQUFBQUFVQUFCQUFBQUFCUkFBQUFBQUFBRkVBQUFBQUJBQVFRQUFBQUFVQUFCQUFBQUFCUkFBQUFBQUFBRkVBQUFBQUJBQVFRQUFBQUFVQUFCQUFBQUFCUkFBQUFBQUFBRkVBQUFBQUJBQVFRQUFBQUFVQUFCQUFBQUFCUkFBQUFBQUFBRkVBQUFBQUJBQVFRQUFBQUFVQUFCQUFBQUFCUkFBQUFBQUFBRkVBQUFBQUJBQVFRQUFBQUFVQUFCQUFBQUFCUkFBQUFBQUFBRkVBQUFBQUJBQVFRQUFBQUFVQUFCQUFBQUFCUkFBQUFBQUFBRkVBQUFBQUJBQVFRQUFBQUFVQUFCQUFBQUFCUkFBQUFBQUFBRkVBQUFBQUJBQVFRQUFBQUFVQUFCQUFBQUFCUkFBQUFBQUFBRkVBQUFBQUJBQVFRQUFBQUFVQUFCQUFBQUFCUkFBQUFBQUFBRkVBQUFBQUJBQVFRQUFBQUFVQUFCQUFBQUFCUkFBQUFBQUFBRkVBQUFBQUJBQVFRQUFBQUFVQUFCQUFBQUFCUkFBQUFBQUFBRkVBQUFBQUJBQVFRQUFBQUFVQUFCQUFBQUFCUkFBQUFBQUFBRkVBQUFBQUJBQVFRQUFBQUFVQUFCQUFEL3ZSMDdFQUFBQUFBUTVHODl5SVVSQUFBREFnQUFBQUFHQkFBQUFBQU1DQUFBQUFBWUVBQUFBQUF3SUFBQUFBQmdRQUFBQUFEQWdBQUFBQUNBQVFFQUFBQUFBd0lBQUFBQUJnUUFBQUFBREFnQUFBQUFHQkFBQUFBQU1DQUFBQUFBWUVBQUFBQUF3SUFBQUFBQWdBRUJBQUFBQUFNQ0FBQUFBQVlFQUFBQUFBd0lBQUFBQUJnUUFBQUFBREFnQUFBQUFHQkFBQUFBQU1DQUFBQUFBSUFCQVFBQUFBQURBZ0FBQUFBR0JBQUFBQUFNQ0FBQUFBQVlFQUFBQUFBd0lBQUFBQUJnSURQSTh6U0ZiYmxjQUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIkZJRE9fMl8wIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiI5NWU0ZDU4YzA1NmU0YTY1ODY2ZGY1YTY5NjU5ZTg4MCIsIm9wdGlvbnMiOnsicGxhdCI6dHJ1ZSwicmsiOnRydWUsInVwIjp0cnVlLCJ1diI6dHJ1ZX0sIm1heE1zZ1NpemUiOjIwNDgsInBpblV2QXV0aFByb3RvY29scyI6WzFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjEwMCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoxMjgsInRyYW5zcG9ydHMiOlsiaW50ZXJuYWwiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fV0sImZpcm13YXJlVmVyc2lvbiI6MX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMy0xMS0wMSJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjMtMTEtMDEifSx7ImFhZ3VpZCI6IjkwNjM2ZTFmLWVmODItNDNiZi1iZGNmLTUyNTVmMTM5ZDEyZiIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiOTA2MzZlMWYtZWY4Mi00M2JmLWJkY2YtNTI1NWYxMzlkMTJmIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ill1YmlLZXkgQmlvIFNlcmllcyAtIE11bHRpLXByb3RvY29sIEVkaXRpb24ifSwiZGVzY3JpcHRpb24iOiJZdWJpS2V5IEJpbyBTZXJpZXMgLSBNdWx0aS1wcm90b2NvbCBFZGl0aW9uIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NCwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9LHsibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMzg0cjFfZWNkc2Ffc2hhMzg0X3JhdyIsImVkMjU1MTlfZWRkc2Ffc2hhNTEyX3JhdyIsInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCIsImJhRGVzYyI6eyJzZWxmQXR0ZXN0ZWRGUlIiOjAuMCwic2VsZkF0dGVzdGVkRkFSIjowLjAsImlBUEFSVGhyZXNob2xkIjowLjAsIm1heFRlbXBsYXRlcyI6NSwibWF4UmV0cmllcyI6NSwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjYsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NiwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCIsImJhRGVzYyI6eyJzZWxmQXR0ZXN0ZWRGUlIiOjAuMCwic2VsZkF0dGVzdGVkRkFSIjowLjAsImlBUEFSVGhyZXNob2xkIjowLjAsIm1heFRlbXBsYXRlcyI6NSwibWF4UmV0cmllcyI6NSwiYmxvY2tTbG93ZG93biI6MH19XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURNekNDQWh1Z0F3SUJBZ0lVU09FalRmLy95cVJmUFc3UXE4cXRJeUNyQWc4d0RRWUpLb1pJaHZjTkFRRUxCUUF3THpFdE1Dc0dBMVVFQXd3a1dYVmlhV052SUVaSlJFOGdVbTl2ZENCRFFTQlRaWEpwWVd3Z05EVXdNakF6TlRVMk1DQVhEVEkwTURVd01UQXdNREF3TUZvWUR6SXdOakF3TkRNd01EQXdNREF3V2pBdk1TMHdLd1lEVlFRRERDUlpkV0pwWTI4Z1JrbEVUeUJTYjI5MElFTkJJRk5sY21saGJDQTBOVEF5TURNMU5UWXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFDZHZsMjd3Mmd1MWZQWGVFRmJJZHF4MEJhbHZWRFZXclFQSjdIcXZpdUV0WkhseFNMeFNGdGNYcFRvbHZMdm9mOGY0dE1lclFUa1ZHemNtWXptMUVCVDRJSnVNbW9FcWZrRUVoV3BzQURNRnJqWmtxbFpZOUVxeFF6TG9WRUVvbkU1b0d4U2RWQ3hDY0xJYWNrcHlSL0NDWHZqMUJ0L2hUZ0U5aFRsRjRwUnF4TWt4M3BsRjd5OGREWmxSSFdzN3ZibmhtQkNHZUkwWlBFUTZubDJtQ2cycjc0YWRGMnU2SzlyckxmaEJDM1FMRThFUHJncVVzSStoa3VxMnRLNE0yU01PcDh1VVZWa3FVZXUzaDBrcjNXVkkwVzAycGtnck9naUZLTEZOa1NyYlloZGpNQkRqNWl6bXFmYzl4SlJLb0RYNjEycWQ4WkdWSHBUNUFZRlgrMWhBZ01CQUFHalJUQkRNQjBHQTFVZERnUVdCQlRaeVU1RGlRL2EyVUVnRTdxQkswemhJc1JOUmpBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQU1BNEdBMVVkRHdFQi93UUVBd0lCQmpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQVh2bkI0U0x1VUpmWU1TVkdBaHNzTC9TbVdsaTNGU2NjZ3h5ZHZLbEFDY2lkSUlXS1FxYTNxL1FTVUVRekM5RGdFZk1ncjdpQzFCa1RaYklMYm9WNlVaNWtuTnN2akVaV3VNZW9nSjh0Z1pzMWhWdkt3Wml6d0orbUVjbXNqaElyQll1b0wxVDZ5ck9KdktGZzFqditDeTRad0E5QnBrL1YzVU9pcjFWeUs4ZEN0eUh1NnZmb3NvdEFkWXg4RkF1UjI0M2dSVE1WNkp4OEpkaWcySkRJQVFNbHpWZURwU1VIWC9LMkhYUkh4SHdmZ2piZ1VqakJ1LzcycjhPZmVoeWh6SFhJM0s4Q0ZGZGZsTys4bkVPSkszeThGMWl2Z1M1dU4vOFNtY1l3L1NUUVl3aHJ4UHV3ejNuUDhiYU11bTRCQjJublltcEI2MHNYM2JsNWs4UVVTdz09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWZDQVlBQUFDR1ZzK01BQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBSFlZQUFCMkdBVjJpRTRFQUFBYk5TVVJCVkZoSHBWZDdUTlYxRkQvM2Q1OXdlUVNJZ1M5QVFBWGNGTEFRWmk5ZnBlVnoxdFkvV1RacjVXeHBjN1c1a25MYTVqSTNaODVzclMybk0yc2p0V3daUzdJVUg0SDR4Q25FUXg0REFaRjc0Vjd1czg4NXY5L2xJbkJ2VkovQjRQdjludS81bnUvNW52TTU1NmZ6QS9RdjBIYi9JclgzVkZLUG80NWNubTRpblVJV1l3TEZSbVpRVXV3akZHL04xaVJIaDFFWjBOUlZSdWRxdDFCZCsyblNLeVMvT2h5czArbGszZS8za1E5cXZENFpVdGE0VlZTVXVZMGVpcHlpVGhBZm9jb09SVmdEdXV3M3FLUmlBZDNyYmNFdGpUallJb2Y2V2FIc0NtelZQV0NNeCtjZ2g4dExxV01LYU1Xc1VqTHFvMlJ0SklRMG9Pem1lcnBRdTRlc1pnc09Oa0d4SDdkMGtkdlRUMTdzNE9NVTdWSThaaGpnR2FNK0FxOWlFTnU4UGlmMXVkejA3TXd2S1dmOEdsVm9DRVkwNFBDNVdkVGFYWUZiUjh2TnZMNSszS2dmYjV4Tk15YTlSYW1KaXluYU1sR1RWdEZscjZiYTl1K3BxbkVYNHVNdVJSZ2pTWUVock43dXRGRmU2bHFhbDdOZmt3NWltQUdIeW5QcGJrOFZtWTB4c3RucHRsRkNWQ1l0elR1Qk44M1FwTUxqVHRldmRQelNVbko3ZThta2p4WjM5ZlhiS0RmbGRacWJ2VStUVWdHbkJWRjZmUTJpUEhnNFcxNlVXVXd2emJrMTZzTVpFK1BuMHB2ejdKU2V1QXllczhsY3BDbWFLdW8vcCtxV3IyVWN3SUFIV3J2UDBZRXpoWEF0TEFic3NIaHA3aUdhbXZ5aWpQOHJ5cXJYVVdYOVhvb3d4eUF1Zk5CcnA0M1BPQkZYWmxrZjhNRFJpcWNweW93QXdwdXoyeCtmV3Z6L0R0ZGU5c21zenlndGNSNkMxd2JkekJsNk9scTVXTllZNG9HYXRoSk1ya1RFeDBqQVJTSEFWcys1cllrUU5YYitRZ2ZQTHNRNmdYeUluc3JlUWZtcG03UlZGWWZMODZuMWZpVU9rWXZTaGtVUHh2YnVrem95NksxaWhNMWhvM1h6VzZFdlNmWEErZHBpV0dhV2QrZG9Yekx6bUd3S1lGTENBc1JBbFBCQWhNbENGWFU3dEJVVlByOEhnVmNKSFdxK0YwMHBscitETVRkclA0enZ4WTExa05NaHhUK1NlVEdnK2Q0VjVMUUppdHlVR0pOQjhWRlpzamdZQlpNL0lJL1hDVGtqMHF5RE9wRjJBVlExN0NJalVwL0RuVDFVa0w1RjVnZGorc1Mxd2cxZ0UzZ2lnbTYwZkNYelNuUFhieUFQYklYditJRHBFMTZUaGFISVM5c2t5aGxtTUU1RjNjZnFBS2hxMkMwRTVQSDFnWWFYYUxQRGtaRzBIREpPbktXSHA1MUkwejVTT3V4OGUxV0F1WnpkSFFyVGtwOFRtalhvSStsYTB3R1pzenVicWJPM2lmUTZBL1c3dlZTWXNWM21SMEpLd2tLYzRXSGlCa21SOEkzQ0NnSTg3b09MNHF6VDVQK1JVSkJlakVPZ0FQSzhoWVB6YXRNK2VJVHAySU85eVRRbWVyb21QUnh4MXF4QWNzaWxlL3ViU2VFYmNXUUdZRUNnaGNMWTJIeUtqb2dqSDI1aE1wanBVdjFPdWdsaTRlaDJlUncwTzMyYkpqa3l1Q2dOemcwdnpsWU1TaVNzMHVvbzRNRzdoTU9qQ0VhWDF5RkUwblN2akJ6dVRuRXBLODZaOElvcUZBSXVidzhrZzlBckVhUkVXU1pJK2pINFhicDZnOUU5RW5KVDNvYVJ6RE4rTVVKQlFESG41NmE4b1VtRUJ1c094QnMvTjUrdEpFYlBrQUZEajhVR3ZPcy9JV3ZjU2dsR0JodlM3L0ZUWWZwV0dZZERZOGZQQXhXU0EzNXNUQzRwNCtMbTRBYXFJb1BlUXRmdWZLNkpoMFpoeGxic1VYT1NtWE5pZkQ1WlRBa3lEb2ZiYmNjbHhuQThXTkFxeENiUk55a2hYeFFwYUR3NjdmWFVZYnNpRzBLaHR2Mm9lSXZoOHJoUU1ZT2NFQXFYRy9lSSt6bmdPYzV5eHI4cTgySUFNMWMvRkxGT3BscXU1ZUZRWHJNWnpHY1ZDalliTFdHNUk0QlQxZXVScmxieHROT3RNaXREREVoTFhJSXluQUF2dU9FV0UzWDNOZEFmdDk0VmdhRzQyWElRdDBaWDZQZUNFL3FRRmU5cks2SHg3WVU1MEt2SDdmVzRmUytxN0tLQkp4c2dnQlg1cFNBR2gxaklyVmg1elE2dzNSZmFhaEJYbS9hQ2JDWlRqQ1VGVVR5V1pxVzlwNjJNakpQWFZxT3JQZ01PNE52NzRHa2Yrb3dmdE5WQkRRbmpGSnFIU3cxN3BYdmhXVzVLWnFlL1E0OU4vVVNUQ0FWV29RWEZJSEJIWFhlM0ZQclVEc3VHRG10Ri9oSEtUSHBla3hoaUFPUEkrU0pxNlM2SEY0STlZV3prQkpUbzQ2aVVNeldwOFBpci9SaWR1THhLWXNTa3NWOHZMbE9RdmhHWDJZbFIwT0JoQmpDK3UvZ0VjdlkwQXBLN1lrNDFOeGpQU1FuV0ZIVEY2NlVyamdldkI4Q3U1YStsMnZZU1JQdHVWRG83M2hoZE1TSG5VWDd0VGpzVlpHeEFsL1dwdGlPSUVRMWduTDI5bVg2L3RSMXRtbGtZajhXNFgrQ1NqV2NVREdZMU5wUy9DN2hTS3FpTUxNL2wyUW1TV1o3M0RkeitnaW84QkNFTllQUTQ2cW5rendYVWJxdkJreGpVUXNXZlpGZ2J1bzNyQWYrd043ak9POTAreW54NFBpM0wrMG5ZTDFTY2hEVWdBUDRnUFYvN0lkMXErMUhTaG11R2tJcVdSUGd5eE1GcVA4SGZqVG5qWHdZNWJRZmJKY3Q2T0l6S2dNSG90Ri9IZTFlZ3NheEhTcUc2d2ZkbVE1eDhOeVRGRnFCY3AyaVNvd0hSM3lrNSszNmhGN3ZYQUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIkZJRE9fMl8wIiwiRklET18yXzFfUFJFIiwiRklET18yXzEiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwibGFyZ2VCbG9iS2V5IiwiY3JlZEJsb2IiLCJtaW5QaW5MZW5ndGgiXSwiYWFndWlkIjoiOTA2MzZlMWZlZjgyNDNiZmJkY2Y1MjU1ZjEzOWQxMmYiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsInV2IjpmYWxzZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImxhcmdlQmxvYnMiOnRydWUsImJpb0Vucm9sbCI6ZmFsc2UsInVzZXJWZXJpZmljYXRpb25NZ210UHJldmlldyI6ZmFsc2UsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjpmYWxzZSwiYWx3YXlzVXYiOnRydWV9LCJtYXhNc2dTaXplIjoxMjgwLCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjgsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4LCJ0cmFuc3BvcnRzIjpbInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi04fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotMzV9XSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5Ijo0MDk2LCJtaW5QSU5MZW5ndGgiOjYsImZpcm13YXJlVmVyc2lvbiI6MzI5NDc0LCJtYXhDcmVkQmxvYkxlbmd0aCI6MzIsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjoxLCJwcmVmZXJyZWRQbGF0Zm9ybVV2QXR0ZW1wdHMiOjMsInV2TW9kYWxpdHkiOjIsInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjoxMDB9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wMi0wMSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzQsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWXViaUtleSBCaW8gU2VyaWVzIC0gTXVsdGktcHJvdG9jb2wgRWRpdGlvbiIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjUwMjAxMDA4IiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMDgtMTIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc0LCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ill1YmlLZXkgQmlvIFNlcmllcyAtIE11bHRpLXByb3RvY29sIEVkaXRpb24iLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI0MDgxMjAwMiIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTA4LTEyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NH1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wMi0wNiJ9LHsiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjUxZmZhYjJlMzBhODdjY2ZkYTRjY2ExM2Y1YzBhMjNhNzBiOTA3NzMiXSwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiNTFmZmFiMmUzMGE4N2NjZmRhNGNjYTEzZjVjMGEyM2E3MGI5MDc3MyJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiQXJjdWx1cyBGSURPIDIuMSBLZXkgQ2FyZCJ9LCJkZXNjcmlwdGlvbiI6IkFyY3VsdXMgRklETyAyLjEgS2V5IENhcmQiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MTAsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6Mn0seyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo2LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo2LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQzVEQ0NBb3FnQXdJQkFnSUpBSjFtZ1grVEtpSDdNQW9HQ0NxR1NNNDlCQU1DTUlHQU1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQXdLVG1WM0lFcGxjbk5sZVRFUk1BOEdBMVVFQnd3SVUyOXRaWEp6WlhReEZEQVNCZ05WQkFvTUMwTnZiWEJ2VTJWamRYSmxNUkF3RGdZRFZRUUxEQWRCY21OMWJIVnpNU0V3SHdZRFZRUUREQmhEYjIxd2IxTmxZM1Z5WlMxR1NVUlBMVU5CTFZKdmIzUXdJQmNOTWpNd01URXpNVGMxTlRNd1doZ1BNakExTXpBeE1EVXhOelUxTXpCYU1JR0FNUXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0F3S1RtVjNJRXBsY25ObGVURVJNQThHQTFVRUJ3d0lVMjl0WlhKelpYUXhGREFTQmdOVkJBb01DME52YlhCdlUyVmpkWEpsTVJBd0RnWURWUVFMREFkQmNtTjFiSFZ6TVNFd0h3WURWUVFEREJoRGIyMXdiMU5sWTNWeVpTMUdTVVJQTFVOQkxWSnZiM1F3V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVIzTmxzbHBFcFgvQmlaOVJwV0UrcXJtMklSTUxpM2Jrc2RhSFNwQTgrb3pVYUZhdlQ0TDBwUFNMQmhuVFJGMTVDYVRISk1jRVVHdWdyL3hvR1RkTE5wbzRIb01JSGxNQjBHQTFVZERnUVdCQlI0ejc4c1RtYWl3SEJ3MGZ6VjY2VzZmbC85V0RDQnRRWURWUjBqQklHdE1JR3FnQlI0ejc4c1RtYWl3SEJ3MGZ6VjY2VzZmbC85V0tHQmhxU0JnekNCZ0RFTE1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBZ01DazVsZHlCS1pYSnpaWGt4RVRBUEJnTlZCQWNNQ0ZOdmJXVnljMlYwTVJRd0VnWURWUVFLREF0RGIyMXdiMU5sWTNWeVpURVFNQTRHQTFVRUN3d0hRWEpqZFd4MWN6RWhNQjhHQTFVRUF3d1lRMjl0Y0c5VFpXTjFjbVV0UmtsRVR5MURRUzFTYjI5MGdna0FuV2FCZjVNcUlmc3dEQVlEVlIwVEJBVXdBd0VCL3pBS0JnZ3Foa2pPUFFRREFnTklBREJGQWlCcGVLRk52ekZ2bit6WThjUWRtRkdydGwwMUp4eWxsYXZscXh1dGMyeHRSZ0loQU8wMWVGc1V2VERka1RlSG05ZUF2d0xQNXZYTklyVTNNT3hqd2FJbHRhT1kiXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZ0NBWUFBQUJ6ZW5yMEFBQUFBWE5TUjBJQXJzNGM2UUFBQVhKSlJFRlVXRWZGbHR0cXhDQVFobjlEWVZ0VFNzbXA3Lzk2U1RhRlVoZDZFNWN4YTlsa2xlaVkybHp0Z283Zi9ITVVBRFFPL0lRUTBEcmNwRWdGaUgxdzYyc3lnRFhJQlRrTXdBVVNBblVNUUlLVmhLdUx6eTRESVo3L0twYWFoQ3NDaGp1TUsrczhQbFZ2K1BuOGd0QzhlbVlEMEVVSUFkblVVTVBJN2lUQkFMNkRaZHZrQWZBMWtIOERJS0N5cXdCZDVGYWdnT3dxazNUMnk1SUQ1ckZDNEVtV09MMDhyeUtTRDRCa2I1dUhqTThPb0FYeWhlQysvRnpla3h4cUhIbGR5TlBLdlUzbHRXc2ZsZzNxKzkvOThMZU55QTRYcndJNU9xR3ArMXNDV2lCYXZlaTNUY0tZS1JnOERiY3RtTUpBa3BkMWJjclM1RUF1QmF3SzlLQlY0ekpOa1BXNzZZaVlOZFQ1N0Y4VUhKa1NOSXhjbGFDR0NjQzhnSWdacXFmL3R5L0lhaFFuVGQ1bDNiNVBSS3RFMWhDUWMvS2pCdWIwK1B0V3V0MmF0bE13TlFIakFEWnhsZDB5RXk0OWZ4dUtBM0Rva3JxTUpBUHN4aXJnUUVUQkJGaGpIT0VCOEc0NThhSk1jWHI5bmloWEtSR3dBWkQ3bHNjQUFBQUFTVVZPUks1Q1lJST0ifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMi0xMS0xNSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxMCwidXJsIjoiaHR0cHM6Ly93d3cuZ2V0YXJjdWx1cy5jb20vIiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJBcmN1bHVzIEZJRE8yL1UyRiBDYXJkIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVMkYxMDAwMjAyMjExMTUwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMi0xMS0xNSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxMH1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMy0wMi0yMiJ9LHsiYWFndWlkIjoiOWM4MzUzNDYtNzk2Yi00YzI3LTg4OTgtZDYwMzJmNTE1Y2M1IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI5YzgzNTM0Ni03OTZiLTRjMjctODg5OC1kNjAzMmY1MTVjYzUiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiQ3J5cHRub3ggRklETzIifSwiZGVzY3JpcHRpb24iOiJDcnlwdG5veCBGSURPMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNXVENDQWJxZ0F3SUJBZ0lHQUlGRFVYUXBNQW9HQ0NxR1NNNDlCQU1FTUU4eEN6QUpCZ05WQkFZVEFrTklNUTh3RFFZRFZRUUlFd1pIUlU1RlZrRXhGREFTQmdOVkJBb1RDME5TV1ZCVVRrOVlJRk5CTVJrd0Z3WURWUVFERXhCRFVsbFFWRTVQV0NCU1QwOVVJRU5CTUI0WERUSXdNRFl4TkRBd01EQXdNRm9YRFRRNU1USXpNREl6TlRrMU9Wb3dUekVMTUFrR0ExVUVCaE1DUTBneER6QU5CZ05WQkFnVEJrZEZUa1ZXUVRFVU1CSUdBMVVFQ2hNTFExSlpVRlJPVDFnZ1UwRXhHVEFYQmdOVkJBTVRFRU5TV1ZCVVRrOVlJRkpQVDFRZ1EwRXdnWnN3RUFZSEtvWkl6ajBDQVFZRks0RUVBQ01EZ1lZQUJBRUp0bXJNWWM0OG5QU3AwUlJtRXdUMlU1YXEwRDFiM1VSTHBtSlAyNzdJbUVYS0VialZRQThQM1V5VGRaaW5FTFRRNWc2RStsbk4zR2hVV2lmMi9WbVNiUURudTlmK2VieUlaZkJhYm9zS0szU1FWdjRLbXVQOXBiMGY3UDJ2TVBBVUZKTlp2S2VIMURQdGFaa0Z5Yk1LWnNnOENKRXM3QTlLVzNSSS84UURwTjFuSjZNL01EMHdEQVlEVlIwVEJBVXdBd0VCL3pBZEJnTlZIUTRFRmdRVVVuZkxPRERha3UxbzhDU3V3V2ZXeWxqNE92QXdEZ1lEVlIwUEFRSC9CQVFEQWdFR01Bb0dDQ3FHU000OUJBTUVBNEdNQURDQmlBSkNBS2Q4RGVOaGJQZXlmaDdVRDNNOWxQcDVhNzdNMUxtQzJNMm83elJpSGxlUHQrWGNyL0kveEdLMTI0Z0V1SGpiT2Z5YW5yZTYzRU1UdVZXOHRzNWtSOTA2QWtJQmdTSWhKb0VOa01WRmJlTVJVRG5EdGJ2K2dLaStodHFPUkd5c2lkNXNnMlZ2Q1g5UWZuVXFCS3RaVlVCZVFWUGszRTVHVUVhbUxrNGpsamR2bERHU1hwVT0iLCJNSUlDUVRDQ0FhS2dBd0lCQWdJR0FJRkRVWFFyTUFvR0NDcUdTTTQ5QkFNRE1FOHhDekFKQmdOVkJBWVRBa05JTVE4d0RRWURWUVFJRXdaSFJVNUZWa0V4RkRBU0JnTlZCQW9UQzBOU1dWQlVUazlZSUZOQk1Sa3dGd1lEVlFRREV4QkRVbGxRVkU1UFdDQlNUMDlVSUVOQk1CNFhEVEl3TURZeE5EQXdNREF3TUZvWERUUTVNVEl5T1RJek5UazFPVm93VnpFTE1Ba0dBMVVFQmhNQ1EwZ3hEekFOQmdOVkJBZ1RCa2RGVGtWV1FURVVNQklHQTFVRUNoTUxRMUpaVUZST1QxZ2dVMEV4SVRBZkJnTlZCQU1UR0VOU1dWQlVUazlZSUVsT1ZFVlNUVVZFU1VGVVJTQkRRVEIyTUJBR0J5cUdTTTQ5QWdFR0JTdUJCQUFpQTJJQUJHaGNpa3VSWWdOa2FrMHBPOFhnUFd3RzlSWlhMUWVxUUV2S0hmQ24zN2dhUjVVOXJocDRXOEpUYmZVOXQ4Q0ZnRDBEeE5YRUpFOUtHTm5MQXRMNzA4aENIZW82UzVvZXpuR0RGbjlKODBiTzdiZFNEWUhTNWJ6a0VLUExOdWFtV0tORk1FTXdFZ1lEVlIwVEFRSC9CQWd3QmdFQi93SUJBREFkQmdOVkhRNEVGZ1FVZHJFdFV5V2FNdHBWQVE3SkdxUXAzanpOU2hjd0RnWURWUjBQQVFIL0JBUURBZ0VHTUFvR0NDcUdTTTQ5QkFNREE0R01BRENCaUFKQ0FiV2EveGNLeDdLQ2NvVXNwOFNWWm5XU3hEOG45MVRxQ0pLYWpzN2tKQnoyRHp2Wlp0UHhLc01ZMzhsSC84TVlUQzN3bFJ3ZFpjNXM2MUVobGJkbk9ndUJBa0lCRm1KTHNPUHlNUVdVeG1XbDJ6dUFTN2N0cVUwM1U3NEMzVVVIU0tESDNXU0pIK3kzaS9Yc0NzL0ZNK0RrLzNGak9nUVR4aW9hcUljM2hyd2hQbG1vck5vPSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFFQUFBQUJBQ0FNQUFBQ2R0NEhzQUFBQmhXbERRMUJKUTBNZ1VISnZabWxzWlFBQUtNK1ZrVDFJdzFBVWhVOWJ4U0lWTzRpSU9HU29MbHFRS2lJNFdZVWlWQ20xUWhXWC9OUzIwS1FoYVhGeEZGd0xEcUtMZjR1amt5NE9EcTVPZ2lLSWs0Tzc2S0lsbnBlSUxkSU9Qa2p1bDhPOUorK2RCL2pQUzZwdWQ0d0R1bEd4MG9tNGxGMWRrN3BlRUVJUTNSakZqS3phNW13cWxVVGI5WEVQbjZoM1VlR0YvNjBlTFdlcmdFOGlMNm1tVlNHYjVLbk5paW40ak55bkZtU05mRVVlczdoQjhxdlFGWSsvQk9kZDlvY0ZXNW4wSERsQ0R1ZWJXR2xpdFdEcDVFbHlSTk1OK3Z1ekhtdUN0OGd4dlZSVmYvWXBUaGpLR1N2TFF1Y3poQVFXc0lnVUpDaW9vb2dTS29peUdsU1NiczFCaHNVdkcybDJ4NWx4YTc5QjF5OUZGNFV1UmFpY21VY1pPdWVGRDhTZC9NM2EzcGlJZVU0aE9uYytPODdiTU5DMUM5UnJqdk41N0RqMUV5RHdCRndiamZueUVURDlUcjNXMENLSFFPODJjSEhUMEpROTRISUhHSGcwWlV2K3ZTMysyOHVOS3lCZXB3OUFobGtsYjRIOUEyQWtUNi8xTnVjTU51ZldwcWZmN1dtWkgvQU5oY3QwU093aDVwQUFBQUxCVUV4VVJmLy8vL3Y3Ky9IeDhlenM3T3ZyNiszdDdmVDA5UDcrL3R6YzNKMmRuV2xwYVQ0K1BpTWpJeFlXRmhBUUVBOFBEeEVSRVJvYUdpc3JLMDVPVG54OGZMVzF0ZDNkM1lHQmdRQUFBQWdJQ0VsSlNhS2lvdkR3OE5UVTFGbFpXUW9LQ2djSEJ4NGVIa05EUTE1ZVhtMXRiWEJ3Y0dwcWFqczdPeGNYRndVRkJSa1pHZW5wNld0cmEySmlZcXlzck9MaTR2ejgvTm5aMlo2ZW5sSlNVZzBORFJNVEU0dUxpL2IyOXJTMHRCMGRIUUlDQWpZMk5xYW1wdlB6OCsvdjc5UFQwODNOemRiVzF1WGw1Zkx5OHVycTZwR1JrU1FrSkRFeE1jek16UDM5L1hwNmVpY25KNjZ1cnFlbnAyTmpZeTR1TGdFQkFRTURBN2k0dVBuNStaT1RreFFVRkF3TURKYVdsbGRYVjNsNWVmWDE5Y3ZMeTE5Zlh3c0xDeGdZR09UazVPYm01bFJVVkhGeGNmcjYrazFOVGJxNnVoOGZINE9EZzRpSWlIOS9mMmRuWno4L1B4SVNFb21KaWZmMzk0K1BqNVNVbEZoWVdDa3BLZHJhMmpJeU1vNk9qdmo0K0w2K3ZtaG9hRFEwTkxHeHNYMTlmYmEydG9XRmhSVVZGWkNRa01yS3loc2JHOXZiMnprNU9ZYUdobE5UVXpBd01DRWhJU1VsSlRvNk9tVmxaYUdob2VmbjUram82R0JnWUhKeWNod2NITUhCd2NmSHgxQlFVSUtDZ2xwYVd0L2YzelUxTlZWVlZRUUVCRnhjWE83dTd0RFEwRE16TStIaDRhQ2dvRXBLU3J1N3U1S1NrdGZYMThURXhNYkd4dDdlM2tSRVJGWldWcXVycXdrSkNaZVhsM2g0ZUtpb3FEdzhQTEt5c28yTmpTQWdJRnRiVzcrL3YwaElTSmlZbU03T3puVjFkWXlNakorZm41cWFta0pDUWxGUlVieTh2R0ZoWVFZR0JuTnpjOC9QejRTRWhOSFIwYjI5dlptWm1ibTV1ZExTMGlZbUppMHRMUTRPRHVEZzREYzNON0N3c01EQXdHWm1aaWdvS0VaR1Jzbkp5VGc0T0pXVmxVeE1US1NrcEtPam95b3FLb2VIaCtQajQ2bXBxZFhWMVVkSFI4akl5SnVibTExZFhiT3pzM1IwZEc5dmIyNXVicmUzdDBWRlJVdExTeUlpSXFXbHBVQkFRQ3JBM05ZQUFBQUpjRWhaY3dBQUxpSUFBQzRpQWFyaTNaSUFBQVVoU1VSQlZGaEg3WmZyWDVSRkZNZlBJdkJZNHNwbHRkOGFBUm9vaXhjV3hOUUhVV1FOZVNUZFoxMURBbGNsdkx1U04xYk5CQVdGTk5ITXZKQzNzaVF2WGRBU0w1a21waW1XMlVWTHk3U3N6UDZLenJNTStxSFBzd3Y3cHQ3NGZUWHptelB6bkRrek8rY3NQZVEvd0JEVUlUZ2tWQks5d0pBNlB2Sm9wN0RPeGk3aEVaRlJwcTVCUW00djNSNkxSQ3ZNM1IrUEZtTnRJejBSRTZ0Tml1dlI4OG40aEY0eHZSTXRXamZKMUVjWXRFRnczemcyVCt6WFA3bGw4OWFVMUFGcHJBMThhcEJRL0NBTkhnTEk2VU16dUcwZGxqdzhjMFNXVFZ0bzVOUFp2TVNvSEsrUkg1VFI3Rzd1TXdhaVlXUEcyc05WbnVUb25KNHd6a2tVT3Y1WklHK0NNUFJCUmo1di9ia0NrZ29udW5qdWZkUkpwc2xFVTRwVXFNOFhDMXM5QmszbHpVK1RxRnUrRmpiSDlLaUVHVE5uelo3VFJYUEVQYmVFREM5WW9NNFR4am9VendjV0xDVERQSTZZdXFoMG9aREpzM2dKZTQrbHc0bGVOSGJ5Zlp6U01oVzVreWs2bngxTmY4bnJxZUlwY1hyUEluaDVHWkJXYnFVVklWcFhuNjRXckt5Z2taVWNxbEtlcnVTc1dsMVZQZVRsTld0ZldjZWpOZXRscUJ1VVpsTmRPcndLODBhSzdnMVU4MkdWcE5vZFd2aTh4QmE5SmxHQkhkaGtGY1o2OUFWZUo5ck1ZZGhDbExsVm0yZ2VOWFZiOThoYWJsbmVXTGNXV0xSZDJPcXh3NHlkSHBvQWhPMGlhYmNaY0cwZTEzenhndnEveVlmQ3Qzc0lyK3liR01odlVUYzM4dGovUFJiSW05NFdBNHp5emxMMkltK3Y2T3BTWjhHN1Z0cm5QZWI5dFRod3NQVXI0SG5QWVhsZnRQVXhRUjFNaFJaODRLUVVOOHdmQ3ZrK3lwaDZ2dytMSnhlSERIUVkrSWlVanlFZkVYTDdhVkJ4bEdyeVVDblJZQm1yL1IyM1BzZTBieDhIVHBEeUNjd1ZRZzJBazNDSGNBaGpreWxGeG5vaEJrSVlGa25XUTZpUzJCZjFVeUVHZ0MwUDh5bkxoVk5FVXhGdUUyb0ExSjNHWjNSR1JTTXBZZGdxeEVBNDY4QU0raHc0UjBGbE9DbkVRTWlVTVpQT0E4ZHB1eHN4UWd5RUx4ejhTMXdNSENGYkdhS0VHQWdjZ3dUYW9mSXEwZ1ZFQ2pFUStCU0thSW9MRTRtSzRNb1NhaUJrNDZLa1ZNTXVhUzlDcWhBRG9RaE5mV2crWWkvUjVEaDg2ZS9oOGtFcE1FNzdMWndqYVJ2d2xWQURZTGdEdmFoUEd0SWx5b2xEOVVnaHQ1L2lpMGp5U0llaFhpYjZHb2ppNVBodnJEdEVRNStad0JqS3FVVnZKMjIvQXB6eUNQMCtLZCtZdnhWTlhXcGMrSzZZOHFGK3p3KzBHN2hhSXdhYUNXMXM0bGU5UVBSMGlZZTZYM3VWMDlqVGpRT0JIdGNlYk1QNXd3VXRUV0NXNk91UzdFWjJOS1dxeU43RlB5NmVvUDVZUHlLVU02YnRiR01ZcDJmajZIQWNXQ0dNZGJrT3hFdFNQOEIrZy9QY2JDMnhPU0l1cGtkT2tyWFcraTAwRDFycThZMXpKK1NmcUlSTGhPbmFoeHIyUFNneGpLZCtac1Y2czQxTm5FbUQ4UmZLdU1wNS9CaG5aK25HcmR0VmlVMFJTOGRlMDhxenVnTHE2SWFyc05sV245ME9KSjZsa3I3czg4NWZXMS9uRHJPYWZpTzZwZnJmaEdKU2tYaVpsS0dKWEtqWlN5dGFxcUhRdmZGY29aZ3p5Y0RlY1FiM2pmVU9KK1VUQ21VdE9jMDdyODBkY0hSdS9mTGZiNjdVNHBCMDBFTUdFNDgzQ0dOZHJDWXVRN1lsRTFYY2lkQm10ZUN3ajdlUnRMZVNqN09uLzZ3am5lRFlsOVh6K2R2KzJMREc2SkJsdVRicFptTWg3eWJsTnJ2VlZONnlMNTgwVlBFWFYxN24yOFNFMUtWYzBtcFdLcjRjdzBXR3ZLbk9LL3NudE5ISVM3aitMTSswTlY5bVovRDVvMWY0WHFsVlhkdjUwdHhJMEpiZzY3QmdUdFRKdTJ2KzBpTEtKM3V2VGU4ZkVMeW44b0IzbGtBdHU3MVk1NG53aDNUcFh2emYwN25XUXQ2RnU4dW10Zi9mUmlzVTY2QU1qOVZ2YWZPUS94bWlmd0RrblU2NVBxdkRZZ0FBQUFCSlJVNUVya0pnZ2c9PSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIkZJRE9fMl8wIiwiVTJGX1YyIl0sImV4dGVuc2lvbnMiOlsiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiOWM4MzUzNDY3OTZiNGMyNzg4OThkNjAzMmY1MTVjYzUiLCJvcHRpb25zIjp7InJrIjp0cnVlLCJjbGllbnRQaW4iOnRydWUsInVwIjp0cnVlfSwibWF4TXNnU2l6ZSI6NjI5LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0IjoxNiwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjo0OCwidHJhbnNwb3J0cyI6WyJuZmMiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fV19fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMS0wMS0wMiIsInVybCI6Ind3dy5jcnlwdG5veC5jaCIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjAwODAzMDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjMuNyIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4zLjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjEtMDEtMDIifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIxLTAxLTAyIn0seyJhYWlkIjoiNGU0ZSM0MDA1IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWlkIjoiNGU0ZSM0MDA1IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlRvdWNoIElELCBGYWNlIElELCBvciBQYXNzY29kZSJ9LCJkZXNjcmlwdGlvbiI6IlRvdWNoIElELCBGYWNlIElELCBvciBQYXNzY29kZSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyNTYsInByb3RvY29sRmFtaWx5IjoidWFmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH0seyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInJzYV9lbXNhX3BrY3MxX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbInJzYV8yMDQ4X3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX3N1cnJvZ2F0ZSJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9pbnRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo1LCJibG9ja1Nsb3dkb3duIjo2MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwiLCJiYURlc2MiOnsic2VsZkF0dGVzdGVkRlJSIjowLjAsInNlbGZBdHRlc3RlZEZBUiI6MC4wLCJpQVBBUlRocmVzaG9sZCI6MC4wLCJtYXhUZW1wbGF0ZXMiOjAsIm1heFJldHJpZXMiOjUsImJsb2NrU2xvd2Rvd24iOjB9fV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwidGVlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbInRlZSJdLCJhdHRhY2htZW50SGludCI6WyJpbnRlcm5hbCJdLCJ0Y0Rpc3BsYXkiOlsiYW55Il0sInRjRGlzcGxheUNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbiIsImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6W10sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUVnQUFBQklDQVlBQUFCVjdiTkhBQUFBQVhOU1IwSUFyczRjNlFBQUFCeHBSRTlVQUFBQUFnQUFBQUFBQUFBa0FBQUFLQUFBQUNRQUFBQWtBQUFGSmJ1SjJFa0FBQVR4U1VSQlZIZ0I3Sll4YmlOSEVFVUZKMTRZQzVqSkFnc25Ic09PSFBFQUMyaHlCK0lOTktFek1uU211Y0JpZVFQeUJtTGduTHlCZUFQU0oxamVnSDZmNmhxVXk5UGFYZzBKTytBQVg5MWRWVjM5LzUvbVFEZkg0L0htaXJ3SFYzTytjRUd1QmwwTnl2OThTajR0MXh0MHZVSFhHM1RSWDhHZzVqY0RuNTkvckw0REg4QU1iQnhXekZ2d0czZy84SmhoR2tzK1ZMbWExeEpIOUFUSWhHTWhaRjd6MnZOeS9Fdml3OXo5U3NhSXJNRyswSlErODdSMzhwWEhEdE5ZNG1LdXBwUW9va1pnSG94WnMvNEVwdUQyQlNpdk90V2JhYnA5bzlMemMveEw0c1BjTFdDSWtBcHN3V2Nnb2JkOTI0aXJybllZeHpweU12b09MTUJmNEY4MWNZL1dKVWJrYW9adDdtUGpZaElBL2dSM0xuekRXbWJNd0Fyc2dkMk12bEg1RFdoQlp3aHptZlU3K05YMzdwdm54SmZFTDJZUXhOK0REMGFZdVFUSmxDM29NNkkwZG1EL0hGU3U5enViOTQwbFJ1UnFMbUlRNUw4MW9oSUM5UFlsck5TRTBqcmRyRnBuTVg1alo4WXhKNzRrZmhHRGpDQ2taeUJuekk3Y0FrekJMYWhzbjQwcHJtK092bDFQSUdmY2l0d1B0aStPSlVia2FpNWlFR1RIWU5zajZETXhpZTIrSlZITVMydjI2VFpPZ2N5Tlp1bEY5UGJOaVMrSm45MGdTT28vWTVIMUFtVE1BeGg1QTdRR05aaUJGc3pCQnF6U1dyRUpxUHcrelluZGd4MDRCdndVYTB1TXlOV2MxU0NJeXB4SStKRllaYVNaajBBRFpFU3NmV205cDM0SmF1dWxrYlZ1bEY2QTdkMzR2T1k1OFNYeFlac2RFd2krZFNSRlZxUWJWeUl4TFRnQUUvUGFjZTk3TTYvQWsrdGIrM05Mak1qVm5OT2dwU01vYzdydmdlWmc2L0xSbURVNTRjSGhNY1hVNjVpQmpPck1ZUDRwMVczK1Z3WkI2dnRFVEVJa3lKdlRzSTYzUmpVTDBQdGZ0UmVudWZxQktYZ0NmV2JOaVorK2I0dzZUelcxOWNuZGpwTDRXVzRRWkdhSlZKODVVWkNNK2NmSDJvUm9sRENEajl1Y25NeGFnOWgzUzh5YnRMUTlKVWJrYXM1bGtNaUpjR09rTkU4eEV5THphc3RyWkQxS2RTdkdQYkJhUHg2SUs2OStuYkhNYTdBRHNYYWNlbmYxT2ZFbDhjRUdRWENjU0Q2YWVOWWk1NG5IbTFXUlg0WWFYNStieXl6dHE1SUpJK2FMMEVjMVp0SXZxaXN4SWxjemJET0hRMllHOUcydzZ6MW03Z1ZHYzFRdkViN21OZk5XNHZYUTZ5SDAyN1B1Ymx0T2ZFbjhIQWJOalF5anpQSGlvemw2KzlFTTFTekFIVGk5K1dmWkorRlZpaXV2dXJoM1E4eGVUQlB5Ryt0VFlrU3VackJCUmtKRXdUYVE3QVFUbHhndlVJTHZRZmVtbWN2Z0dXZ1RhdXV2a1pqcW8xRTYwMHhhTVBkbnROcVhFMThTSDdaWnA2Y0hZdEdjeHVXV2dmaWppVklOOHduWWh4b3ZWUHVyVkR0aXJ2MCs3MDFhaDl6YkVpTnlOV2N4Q0VMUmdGWmk5SkNiQmNLTDU4enozNTY5WG5pY3oyMHYrNmFoNzBZNVlqTFEzN0ltSjc0a1BzZ2dpTHdCSytDRmRBWVFiMEx1aWJYOUhDUmtHL0xxbzVwMWdoZHFaMmlQOVlqOVR3YVM5L0ZOaVJHNW1xRUdmWVNNRWRmb3pSbUgzSmZNVVg1c044UkdZdmRnRjNwNWt4WWhkK3BCYkozaS82bEJHMGN1bW5Od09kMkVUanh6Q1R3NitMMFY4U1ZRN3puUWVnU2lFVnRub3N5MWZxYzQ2N0hGY3JlakpENzBCa21FaUQwNHNpSjJNSEtNMFJ5Sk56RWF2VGx0eUZsZG8vNnFEZmw1aW5kbXBMelZyN1V1TVNKWE05U2dQeUJRaWFRZTVnM3c1a2hnYzBvKzU1ZXNUYlJHYjA3TSticXVqL2FFSHJYNkUvUDc5eWxXcXpZbnZpUSt5Q0NSc0FjaTgwQmNOMmZpOGw1QU5LY05lL1dUZVFDN0VCK3JIN0crbjFRVmFrOW5xN2JFaUZ6TjN3QUFBUC8vWDlMbFB3QUFCUE5KUkVGVTdWcTdqaU5WRkJ3a0pCQ3N0QjBRRWV5MklHU0R6cGFNRHNuV01jbDJTTENTSFJCc052NEF4RGdpUW5ML3dYUkFQaTN4QVRiOGdQMEgyMzh3VkxWUG1kb3J6NE54MEczSlY2bzU5OVk1NS9wVXpaMVphVFVYdDdlM0YwL0ZCZGEzTC9NQ1dBTzNoZy9rbWVmQ2ZtWTUxcTJBTEhMVlBia3NhblgzbG4xQWtmUlVjVmR0ZkJQYzdLbjYyUGRrYzlpTVlkN1pRQkpCOFRtSDQ4TGVoMDdOb2RETzd0Z2J0K3ZlZndOb3VPNWZITGgzRzF4cVhJNitmRWlEV2h1Y0FxNkEvbVVjRVBHUU9UU0JnaVlBN3lYbVFCVlJCakhtQWVjbThaazBXZnlNM0pBR05USE1CckhrTUZ6WVowQWJPUTNMd1h2ekVQbWQ3cEo4R2IycXZ5L1dVVnZiSFUxd00rTmFja01hOUI3RFhISUlMWnhMSUJYdjVsUUg4cFgxOHlYZFo0NXllWHlXem93WlVDVDl6NFkwNkRNVHhvR2JaRGdPdlFUMGNtaU9DNklaRTkzQmlEUHZtUUtYd0JXd0FieEgrMFhVZTc2L0srbDVQWmhCSnFqR1VPbXJvWkFwYTdpd1o0M0VNZEtjWXBlOS95dnFTbUFGZVArV1hlRDhYcG5tWERtWVFSanV5MlJvQ2FDWVhqeGlEcXlUdW8vTVFXNENVRlJyNEd1c2dFejJZYjhFOUJuNE43ZzNpRFhpMXNITmpDc0dNeWlHMmRnd0ZQNldQQmYySExTelBJWFF2RjQwWWdsc0FRbThLeTZzWnhuMXEvaU0zUHVENDcyNkt4dmFJQTYvQWR3WUR0amFrQnIyaWdLNGtHT2YrTWZFTmVyN1Y3bTc0Yit2eVQxOVRYQzlpVU1iOUZ5allxaTdqT0hMbWxoZG5ZanFEUWFYc3dZeEE5NEFTOERONjVqVFBZcmcrQ3BWVjVJUGJzSDlvQWJGTUQ5aElINkhOYVRISmZpOUtPeFRjL2F2aW5lbEMvVWxRSU4xWjN1Z3ByVjh5VHpPNUFydXgyQlFiUU5LeUEyNGtnTnlZYzlYd2FHVlo2ejY1QzVmNGR4RURlUEVjZ1hPYnRLK2p6WFJvM3Rud2ZXUit6RVlWR0pJRFhpTmZjbkJ0SENlQUozVjdNMEJsd0dwY2JxcllaNzNJUElPOFZ2ZEhUbnZud2RYTW5JTmJoQ0h3UEMvQURuM1dqaVhnQTlQZ1h3SkZXc1FhYzRha1BCRHNXWXRGK3B1ck5aZm1IOUdGYlhQR0xsR1lkQnVsRjVFQVJFTFlHdGlKSHdGcm1BdFltb09qWnNDZVVUMU1KYlJVMkV2ZmtHT0MxeHJmTm1UOW1VMEJtSElmMnhRQ1dIc3hXdG1uR25pMm1xWjc0MnptcG5sRy9JNDU4YTFWcnMxdmhTdk9DYURTaHVVeG13QXZvcE13MkkvQVRwQUJ1N05BY2QrcjJXdXI3Tis5WFVIT09ZK0Y2ODRHb000RUFiOERiZ0NDZzBZUE1XM2dBUXl1amwxNUZ5NDErZHh6NzdmN2hYM043bDBqY29nSHc2Q0M0QS9LdXNRTHlHTUt5Qm5QU0pyUE5lL0luQnVVSVl6b2JvMmV1Zkd2U0tYcnRFWmhJRmZBVnNiWEtJWStXcW1Fb0Y5bGRUTm1RUG5abndJYm1LMVRYRHI0Qlk4SDFxak00aERZdWhVK0FiY0pkQy9qcWlaaFRnYVJ5d2xFUHU1NWVxb3I0MWpieDduYS9VZGlxTTBLQVQ5REFIOGZmVEdCOGM1QXhwQXhxVG1GRW11ako3T2VKb3pCL2lqdWpmZFAwZjcwUnFrQVJVcEpFUzUwTlFjMW13Qm1kZS9EcHdYeGpYWXMrNVBSdDEvVnh5OVFSRHhBdmdkNkFBSlY1eEtHSElVdmJhYVRYQ0ZjZXpqaS9wUmZRL0YwUnRFQVJDVUF6ZUFqT0UrbHpqc2FVSm5lZjR5SjVjQmErTi94ZjRMOVQwbW5vUkJFZ0p4cjRIdmRXYkVlUWJJT0VZM3A0MGN1ZWszTDE1KzRyMlAyWitVUVM0SWdyOEMvZ2dEWk5BR1o3MmN2N0MvQnQ0Q3o3MzMvK3hQMWlDSmhIaitHUDBBZkFkOEd2aGErV1BqWUFZZDg4R24wbnZVLzVXY2lzaGo1andiOU1DZi81d05PaHYwOUQ4UTQ0L20rUVdkWDlCeEwraGZVd1RZeVJDYXJaOEFBQUFBU1VWT1JLNUNZSUk9In0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDE4LTA1LTE5In1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAxOC0wNS0xOSJ9LHsiYWFndWlkIjoiYzNmNDc4MDItZGU3My00ZGZjLWJhMjItNjcxZmUzMzA0ZjkwIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiJjM2Y0NzgwMi1kZTczLTRkZmMtYmEyMi02NzFmZTMzMDRmOTAiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiZVRva2VuIEZ1c2lvbiBTMiBORkMgUElWIn0sImRlc2NyaXB0aW9uIjoiZVRva2VuIEZ1c2lvbiBORkMgUElWIEVudGVycHJpc2UiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6NSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9LHsibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJpc0tleVJlc3RyaWN0ZWQiOnRydWUsImlzRnJlc2hVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZWQiOnRydWUsIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQzZUQ0NBZEdnQXdJQkFnSUpBSmJUeXJ1MVgvSVBNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1DTXhJVEFmQmdOVkJBTU1HRWRsYldGc2RHOGdUWFZzZEdsQmNIQWdSa2xFVHlCRFFUQWVGdzB4T0RBMk1USXhORFExTlRCYUZ3MHlPREEyTURreE5EUTFOVEJhTUNNeElUQWZCZ05WQkFNTUdFZGxiV0ZzZEc4Z1RYVnNkR2xCY0hBZ1JrbEVUeUJEUVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTVZqS0hXcGJEN1RTbE14b2NqVGw2bklmN3gzMlBtc1E5ekd1TEdHcUEwVVFab0lxM1hMekw2TFlVdko1QTVnMHV5RkdsbEhFZkdBS3JFYUNROEZWdlBTL1VoMEZ5ZnpXaFJBemlUU2lqak1JSVZqampVdjltOXZGbWNYU2NnSGlnN09kejg4NThWMGtyTkg5OXFHbTN3amdhT2VyVFdtdCtqWENVZm4wMUlrVFB3eEcySGxnRWQ0NWpOTFNWN1Zvb2wrS2U4RTJraTRsRWtUZUh6Ym91bFI1R1VicDNuTWk3RTQ3Vk1RYTNiTndueldCYnNhQlNTUWhMazNtNUhhS2hoeGE2d0pESzQ3TmlNQ2tDa2RJSHVXU1FMVkFmbTg1VUFPTnRFT1B3aTBPdUszcWJlOHlLT0ZHZjBLaEI1TU1lQXltN01WL000VzBhNDlvZ1BEOXBNQ0F3RUFBYU1nTUI0d0RBWURWUjBUQkFVd0F3RUIvekFPQmdOVkhROEJBZjhFQkFNQ0FvUXdEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBSld6NXhMTWs1V05ZYkFiNnlPeEVDQm9aMldlQi9xbDRWSjNPLzMvdE5zeE9ZbnpMZVdvNTQwelFoOXJBbWF4ejdldW1CbHNrTXE0eUdQU05YQjl5Y1dHSGdrY0NlU3pOMnd2OENJekRCczJvQlpqVE5rNjVMQlpEc3NUT0J0TVcvK3VURkhRZmJ1TzNJU0xoSTBEWGZSRWk5TkRNM2pmazExeEhjc2ZoMlJNVitRZE5md1ZhWlpyQ3Erb3VHK0V2a3Y3S3FxK295dTBWRk0vdHo2OFRHbDZ5bGhQRlIxcWg5d3R0cFZqQU9PQ0VRQ0xxUDJkUDI4bHdZQnlDcUhRcVZId2J1anYvTFpqWm5LVzNMWW5kWml4UFBTUkNKc3NERHdKdmgvZjZuVHhnOVpFKy9KY1lyZTVDYUk4bnpWSGFTT0NqTko3RnpVTEc2NEppV092UTUwPSIsIk1JSURkVENDQWwyZ0F3SUJBZ0lKQUlDVVR2a2d0ajVDTUEwR0NTcUdTSWIzRFFFQkN3VUFNRkV4Q3pBSkJnTlZCQVlUQWtaU01Rd3dDZ1lEVlFRS0RBTkVTVk14Q3pBSkJnTlZCQXNNQWtOVE1TY3dKUVlEVlFRRERCNUhaVzFoYkhSdklFMTFiSFJwUVhCd0lFWkpSRThnVTNWaVkyRWdRMEV3SGhjTk1qQXdOekEzTVRRek56RTRXaGNOTXpBd056QTFNVFF6TnpFNFdqQlJNUXN3Q1FZRFZRUUdFd0pHVWpFTU1Bb0dBMVVFQ2d3RFJFbFRNUXN3Q1FZRFZRUUxEQUpEVXpFbk1DVUdBMVVFQXd3ZVIyVnRZV3gwYnlCTmRXeDBhVUZ3Y0NCR1NVUlBJRk4xWW1OaElFTkJNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXZBS09lcUM1L3AwRDFpc0NZS1FKbFZVT3JCNkk3RExvY3VuRS9SbThkdUdUYnl4UWh0M0NiRlZUdjNOMkxwMmZianhsSSszc09TR2szM0ZUWWtUcXhjZEpJcko3U3NrQmNVU05yZktPYVFULzZLUWNQNENtN1YrNjU1VHErVFd4eXhXUWhEeWd0MTVxb1A3TXVLNmJUOVN3cENqcGZLaGFNU215UWFNb1VjUkFiTHFkekJDYWMwaHpCK1plK2dxSmxuV1Y5VWFTSTJyRnNWdUg0WkUwY1JPK01PcGFMZ00vczI0OG5HR0hwMjJld1NRZmJuUGFCYmI4aXF5QVArY3U1MkdMc1VwS1JKZWJFK1I2K1BNUTlKQ2RXZVFaUjNEa2ZTaWRrdjNtY2I0anExaUl0YStNcUtoUm53cmZYaDkxMUtXTG5ZQWw5RU5DaExYMGM2U2oxUUlEQVFBQm8xQXdUakFkQmdOVkhRNEVGZ1FVV0x2aFJCVVBuOHVMSWY2OCtndi9OWkl3R1NJd0h3WURWUjBqQkJnd0ZvQVVXTHZoUkJVUG44dUxJZjY4K2d2L05aSXdHU0l3REFZRFZSMFRCQVV3QXdFQi96QU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFGTHJEaGFlZ2VLSHhZakgzRVAzdlVCS2huek0yMDZBU3hnZVlDTzJFYzlwT2xZSmFlcUZFK3NVYW1VVi9wd2pEbHFOYVNnRmd5N1R3ZVlrdk9tTW40cVNjc0hxdkozekdPQWlhZndhaDF2VUhmQ2xYUjgrYXhPMmlHT1VGMEpLclo5WVlqYkFhNS80SENsdjdqRlBPZE1XVE9ReW5nb2lIQXMzamt1WWpwQ0xGbEI0Vk9pM2Qxd2pBMXBuVGRCS2tBYjd0OG5UdncrL1hiRnZjUWE3M1ZIN3Nqdm9CcUQzZmRNZlJjdVZxNHFVWnRaVDZjR2FnVEhENjFUdHFoOW9NQ1pYY0RiUjFQR1puTmJxeWNzV1BESUswbnBtSzMvM2xmVjhjK1pzcnk2ZTE3MG1mSk1acDdPOG02Q1N6Ni9WTEsreURKZDc4NDF3cG1lS1RmNkluWkE9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFRd0FBQUFnQ0FZQUFBRG5sVVpxQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUVuUUFBQkowQWQ1bUgzZ0FBQUFaZEVWWWRGTnZablIzWVhKbEFIQmhhVzUwTG01bGRDQTBMakF1TWpIeElHbVZBQUFLMUVsRVFWUjRYdTFkRFhBY1pSbStOT0FmS29nNldPMFFjcmVYM083MVI0MW9IZFNxcURBT2czK2NZRVhCb2xYUlRFbjIyMHRhS1RjNjRtZ0JxekJpRVVWcEJkcWl3d2hxU2RJUzJ1cFlTZ3ZSdHBUU2NrbGpXekhhZ2pwU1JkcjR2THR2anJ2azI3dmR2ZDFMam43UHpETjN0L2QrNy90K2Y4Lys3OGFLME5EYWFyMnFPZFhab3FXeUg5UjBhMEZjdDY3V2RIR1Rab2pWQ2NQcVNlalcxb1F1SHNPeS9lQlRzRG1NLzU0WlQ5aitMV0dJZzdEZkIvc0JjRFBzZjRYZlA4WDNiMnVHMVpIUXpVOG1VdUtkeVdUSG01cWFjaS9qSEFLQnlpZjBiQnIrTHdhWElQWVBrTWRxZkw4WGRXcGxzMUFBMzEvUWpPdzk4TDhTOWI4QlhJUjIrbkRjNkRvemxzazBzbG5rUU14a1BHWE85RUp0Vm5ZR0Y0c1V5Vm5kOFVUYWVwOGJ3KzZMYWtCajVpemRiTkpTMXJ4RVdueVd4ZzM2RW1QZFdvUFBEZWpmN2VBVEdNc0hhRHpUdUM2aGJqME4vcFhtQXNydWdzMFdMUDhOdUJKalpKbVdFbGNsMDltUEoxSm1XMHRMNSt1aUhCdUdrWHNsalg4N25pNEV6Vm5rOUF2a3NRbjU3RVNkaHJCOEJNdVBqT1dQLy80T0hzUi9lN0Q4WWRUbGZ0UmhGZmdkTEc5SHUxd0FmenI1NWpBT2tpUUtodlZiR0I2QzAvL2krMmlOZVJ4OEZnbnZSZnhmYWluelNrN05FMGlJVVBiZjQzd1dtTlROZDdCcEtFQTdMWmZGQVk5enAzeVpUU01EaVFWaS9VK1NnNVFZQUlmT21HMmV3c1VqQS9yaFc3TDRCZXJtajloMFVvQjJPQitUWlRXNEIvazhPeUcveUNpT29XMUlZSDZIOFhQejlMYmNLemlsUUdocE1admhaeUhHd0czZzQyQms4NVo4bzkwRzhYME5pU3MxSXYyUUdrOEtkV3N6dDRzbklQOFJxUjltRFFYRElkWlNiQm9aMElsM1MyT1haWFlwRjQ4TVUxNHduSzFiZVc0MXBMM0ZFUUNKbFBWV3RERzJmdXlWck5SM3RCVGRTakI4WXJJRm95VnRubzJPQ3pCZ3hETkJCNnBYS01Id3hpRDlnSzNLYzZQY2t2QkdKUmkrTWNtQzBZRDRmZEs0WG9oOVcvWVRDWlJnZUtOdndjaGtHdEcyZTJXK2Frc2xHTDR4bVlKQmF4bHBUSStrTlJRZG1HUjNvVU1KaGpmNkZRdzZjQ3J6VTN0Q01MRFd1UXNkM1IrQXczS25CUTVLeW5qaGpkeE9ubkRpQ0VadUdqcnNZV2xNSnRwaVdVSzNCbVQvRmZFdWRoZzZVUGU2Rmd6MGJSNmZhNk1tblkza2xEd2hhWWpMVVU2ZXMyN3QwZ3p6bTdWZ1V1OTZENmZrSHhDYTYyVVZHQ01xOGcwMmpSUW5pbUJvUnZZaWFUd20ybnRmVzl2Q2s3VzBkWUhzL3dKMTYzazZlTVp1UTBXOUN3Ykc5SzFzT3FXQXZJVTBYNXRpRFp0TmJTakJjR0VFZ3RIV2Rzdko4RTJuQXVVeGlicDVoV005Mm9EZjJ5YjhYMEt4M3JFTkYwb3dvZ0htMGhKcHZqYVZZUGpDaVNBWWliVDFlV2tzSmliQ2svUG01VTVpYzhyeFFwbGRNUlBwN0hsc0hocVVZRVFESlJnaDRzVXVHSFNSRCtwSVYrVEo0eEgxTEc5ZGpDSFRpTWxSNFZpRzJFN0hSYmhBS0ZDQ0VRMlVZSVNJRjd0Z29KMnowamhNdEhPZWpsMndlUUZZL2xHWmZTbkZmRFlQQlVvd29rSENNQmRMODdXcEJNTVhLZ3FHSVM1dlRwdG5oMFhVKzA1Wm5BSkRGQXpENkRnZC9wNld4bUhHRGZGRk5oK0gwUWIwd2FPeU1tT0UrT1VOSS9jU0xsQTE2bDB3MEY2NzQ3cTRwUnBHY2RxYTdrdVI1VXRFSDQ1Z0Rtd0tpL0RaajgvN0lFUzM0ck96ZWFhWXpXbFVoM29SakpvelJNR29PQUVOYTBpMmRUR0dlRXA4VEZKbVBEdll2R3JVdTJDRVFicWhrc09GQnN5bGkyV3hhc1RqNk5kMTJwc1h2NTdUQ1FZbEdDNE1TVEJhVzYwM29vMWRiNnF6cVZ0ZlluTTU2QXBCdzlveG9Wd1JNWWxHTkszOTFWeWlLaWpCaUVZd21sUGRMYkpZdFNUYTdxSGlBK3Urb1FURGhTRUpCdHB2aGRUL0dIV3h2OXpXeFJpMHRQaUV0SHdKeGJWc1hoV1VZRVFqR0hSd0d1T2gwZ1Y1a1RPZU1pL2hoUHhEQ1lZTFF4Q01zMXF0Vmd6dThyZXZweXlQandId3NwVmgvU3VWV2pLZEN3U0dFb3lvQkFPNXA4MzNvcCtlazhXc0ZkRit3YThTVm9MaHdoQUVBMzdXVFBCYlJIVGNBZXhHdkpUTkhmUU1OY2Y2QnMrUDllYm54ZnFlUEpXWDJrQ1p6SGdmRXhqQ0dRSWxHTkVKQnNGK0VKRXVkc3ZpMW9iaVQ1eUtmOVNOWU9qV1pqVHlmYUhSdWQ5QUhvdFlwV0E0TnhxSlkxTGZUTlQ1SzJ3ZWk2MGZNaUFVRDRLakJmYm1qOGI2OHN0ajJ3N2FEMnFoZlUvMHh5NlpyekhTMnF1bHBUTmwrd3lJdWhjTWpCVTY2MVFObTJjdVBvUERSWVRSQmpwYlIyTUFPVjlIWnpPUTk4L3cvZll3aVBIdGZqZTBidjJGay9DUGVoR01PcnNPby9MdDY3bzFYRGdWdWlFL0J3THhqeEt4S09YRzJNNmR0aTM2dzhPUmRuR1A3VGNna0Z1ZEM4YlV2QTZqbGtpa084K1R0ZzJJTVhTWXpmeERDWVlMcXhBTUw3ZXZvNzd0dG5GLy8wbllrdGdoRVlseEhMcWF6SjJ0akVxYnM5aXlTV1huMnY0RFFBbEcvYU9zWUJqV0FUYnpEeVVZTGd3c0dMbHBLTHRWNnBOSkhWWjRZSExmL25mSkJXSUNoMkhkUUVYaTZld2xNcjhsZEo1SFl0djdoUktNK2tjNXdVRDc3R1V6LzFDQzRjS0FndUhwOUdkS1hNWG1FSXg4dTBRY1hQallhKzB5bVV3ajJ1dHhxZThpb280WDJ2WStvUVNqL2xGaGwrU1BiT1lmU2pCY0dFQXc2SG9LN0E2VW5jaW81OEdtcHN0ZWVCMUQ3OUJYNWVJZzRmM0RwM09wR09MTWwva2Z4eDJ4ekZyZmo4VlhnbEgvcUxCTHNvWE4vRU1KaGdzRENFWWlWZjcyZFdicEpkdzkrODZSaXNONDlnN3VoM1ZoRjRQRjZRbUovMUxxMWdJdTRobVZCQU1UOXU3eDcwd0pnL1RZZlU2aExKUmdWRWFGWFpJSDJNdy9sR0M0MEtkZ3pKNXRuZ0tmQjZTK21Qai8wSXdaSFMvbklnNUdSeHNoQmdOU2tTamxZaTVSQVBydVVsbWNZbUp5L1huRzNIRXhLNkRpRmtaRXhCall5Q21VUlNYQlFEdVBvQTVibzJiU3lMNmRVL0lFM2lxVW5nWU5tMmdEMTdOMCtHOFZwK1FmU2pCYzZGTXc0cnBsU2YwVUVURk5OaTlGei9ETVdHLytpRVFrSFBibU44UzJiWnQ0K2JoemowbjVKM2lCZEZzMWwvQUUxTDJ1QmFOV1RPcmlBNXlTSnlEdjc4cjgxSnllcnk2V1FBbUdDMzBJUnRPYzNHbG9wOE5TUDJQVXhWTmwxL1RyOHEyeHZ2eDY4UGtpc2ZnbmZsOGY2eDkwZlFVbDRuNUdHcStZdWpoeTVxenUxM0NSaWxDQzRZMTFLUmowV2tndEYvd21SU1VZTHZRaEdGNG1HQWFMWVBQeTJEZzBQZFl6OUg3c3BzeU45UXhVZkMwaVhmeUZQdG9uaTFsTUdxeGNwQ0tVWUhoajNRa0d4Q0twVysvbWRJSkJDWVlMUFFvR3ZZUWE5dVhmNzFscDY2SktsSHQ4L1FzVVIrMFhUWHVBRWd4dnJBL0JvTGZyMlFmSHIvR3psZW1LS1NNWXVua0hUU3pFbEw0K3NGYUNnZm8rQis3V2pPem4yTFFzbk5jR2lEMVVUdWJQb2RuRjVwR0F6cGdndnV0V0J1cjZIN3RPdXJpVWk1UUZYU1dLTXQvSEJONUVheVhVcit3OU1jRXBqdkdLNHZmSWJ3VmR3OElwbEFXTkJaUzVEdldoTjVYbjRlZG9xZDhvaUZ5eDJ3aytpdS8wSXVpbDlLd1RUc2tUNG1seER0cnpSbTVYalBVbzJwWGU2RzQ5Z2p4dncrZkNoTkdoY2Zod1FDOWphVExFRzl4b0dGZVd2aVkrVXVTbTJRK2NvWGR5Nk5ZaU5Pd3lWUHJIR0JoM0pvenVVQ3NlVDVtWFFmRi9qaGcveE9mWE5kMjhnam8wYUgzcExBbE5OR2R0TDVZaTU1dlFnYmVqNCs2Zy85Z3NNcUFPSDNIYVNmd0ViWGNEdm1lVGh2VXBUZTk2eTRRek03NlFtOVkwWjlGcGRQY202dk5wc0F0OXN0eHBPK3ZYNEViRTIwb1RDY3NHU29ubCtCL2Y2V2EvVmNWNTBhU1B4N3RPRGVFQnhnMTB4eStka29YZ2ZBZ3hGaURlMTlBTzMwTS9yRVFPOXlMbUE0aS9CYiszbCtibmtQSUhONFByVUwrMStGd0IyMnZob3gxaWYxRzgxWHBidkEyNVpqSytyMmx4UjI0YTFkOFJQekVmdXdvV2NzRVdpSk16WWorSTN3K1Z0S3NoSGdIL0FQWlNucWpUemZpOHhoNjd1blV1UGRyQTI4TnhZckgvQXozdEk0ajUrVE9MQUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzEiLCJGSURPXzJfMV9QUkUiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwibWluUGluTGVuZ3RoIl0sImFhZ3VpZCI6ImMzZjQ3ODAyZGU3MzRkZmNiYTIyNjcxZmUzMzA0ZjkwIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6dHJ1ZSwidXAiOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJub01jR2FQZXJtaXNzaW9uc1dpdGhDbGllbnRQaW4iOmZhbHNlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6dHJ1ZSwiYWx3YXlzVXYiOmZhbHNlfSwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjo5NiwidHJhbnNwb3J0cyI6WyJuZmMiLCJ1c2IiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fV0sImZvcmNlUElOQ2hhbmdlIjpmYWxzZSwibWluUElOTGVuZ3RoIjo0LCJmaXJtd2FyZVZlcnNpb24iOjUsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjo0LCJyZW1haW5pbmdEaXNjb3ZlcmFibGVDcmVkZW50aWFscyI6MTAwfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTA2LTEyIn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNC0wNi0xMiJ9LHsiYWFndWlkIjoiMGQ5YjJlNTYtNTY2Yi1jMzkzLTI5NDAtZjgyMWI3ZjE1ZDZkIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiIwZDliMmU1Ni01NjZiLWMzOTMtMjk0MC1mODIxYjdmMTVkNmQiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiRXhjZWxzZWN1IGVTZWN1IEZJRE8yIFBybyBTZWN1cml0eSBLZXkifSwiZGVzY3JpcHRpb24iOiJFeGNlbHNlY3UgZVNlY3UgRklETzIgUHJvIFNlY3VyaXR5IEtleSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyNTYsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfSx7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciLCJlZDI1NTE5X2VkZHNhX3NoYTUxMl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiLCJibHVldG9vdGgiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNTRENDQWUyZ0F3SUJBZ0lKQU05UnpZdTRFSUlsTUFvR0NDcUdTTTQ5QkFNQ01IOHhDekFKQmdOVkJBWVRBa05PTVN3d0tnWURWUVFLRENORmVHTmxiSE5sWTNVZ1JHRjBZU0JVWldOb2JtOXNiMmQ1SUVOdkxpd2dUSFJrTGpFZU1Cd0dBMVVFQ3d3VlJYaGpaV3h6WldOMUlFWnBaRzhnVTJWeWRtVnlNU0l3SUFZRFZRUUREQmxGZUdObGJITmxZM1VnUm1sa2J5QlNiMjkwSUVOQklEQXlNQ0FYRFRFNU1UQXlNekE1TlRBME0xb1lEekl3TlRreE1ERXpNRGsxTURReldqQi9NUXN3Q1FZRFZRUUdFd0pEVGpFc01Db0dBMVVFQ2d3alJYaGpaV3h6WldOMUlFUmhkR0VnVkdWamFHNXZiRzluZVNCRGJ5NHNJRXgwWkM0eEhqQWNCZ05WQkFzTUZVVjRZMlZzYzJWamRTQkdhV1J2SUZObGNuWmxjakVpTUNBR0ExVUVBd3daUlhoalpXeHpaV04xSUVacFpHOGdVbTl2ZENCRFFTQXdNakJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCSGxxMmpVUU1hbEhqL0JSZVFlZkdpejRFdllKeUZMV1B6NFJmaEpHS3FxbCs4bjk2aFQxbTVnWG9Udm9McmpTVTdYMGNCZW9Uc2doeWgyMit5cnM0K1NqVURCT01CMEdBMVVkRGdRV0JCUSs4U0dXMkJYYnFiMmRjQU9pV0pPVStHQ3NQakFmQmdOVkhTTUVHREFXZ0JRKzhTR1cyQlhicWIyZGNBT2lXSk9VK0dDc1BqQU1CZ05WSFJNRUJUQURBUUgvTUFvR0NDcUdTTTQ5QkFNQ0Ewa0FNRVlDSVFEcTh4SVcwWks1eXozRUF6bXV4ODhMQ1RZTzE1N2ZUZnlPaU96QzJBRHlhd0loQU8xUFdZbGVGZ0gvM211RDhjQkFNcjExZkVLZEYvQWFDMTZmdHhhZXpOWEgiXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSXdBQUFBWUNBWUFBQUFvTnhWckFBQUFDWEJJV1hNQUFCN0NBQUFld2dGdTBIVStBQUFGSUdsVVdIUllUVXc2WTI5dExtRmtiMkpsTG5odGNBQUFBQUFBUEQ5NGNHRmphMlYwSUdKbFoybHVQU0x2dTc4aUlHbGtQU0pYTlUwd1RYQkRaV2hwU0hweVpWTjZUbFJqZW10ak9XUWlQejRnUEhnNmVHMXdiV1YwWVNCNGJXeHVjenA0UFNKaFpHOWlaVHB1Y3pwdFpYUmhMeUlnZURwNGJYQjBhejBpUVdSdlltVWdXRTFRSUVOdmNtVWdOUzQyTFdNeE5ESWdOemt1TVRZd09USTBMQ0F5TURFM0x6QTNMekV6TFRBeE9qQTJPak01SUNBZ0lDQWdJQ0FpUGlBOGNtUm1PbEpFUmlCNGJXeHVjenB5WkdZOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6RTVPVGt2TURJdk1qSXRjbVJtTFhONWJuUmhlQzF1Y3lNaVBpQThjbVJtT2tSbGMyTnlhWEIwYVc5dUlISmtaanBoWW05MWREMGlJaUI0Yld4dWN6cDRiWEE5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM4aUlIaHRiRzV6T21SalBTSm9kSFJ3T2k4dmNIVnliQzV2Y21jdlpHTXZaV3hsYldWdWRITXZNUzR4THlJZ2VHMXNibk02Y0dodmRHOXphRzl3UFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzQm9iM1J2YzJodmNDOHhMakF2SWlCNGJXeHVjenA0YlhCTlRUMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzk0WVhBdk1TNHdMMjF0THlJZ2VHMXNibk02YzNSRmRuUTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl6Vkhsd1pTOVNaWE52ZFhKalpVVjJaVzUwSXlJZ2VHMXdPa055WldGMGIzSlViMjlzUFNKQlpHOWlaU0JRYUc5MGIzTm9iM0FnUTBNZ0tGZHBibVJ2ZDNNcElpQjRiWEE2UTNKbFlYUmxSR0YwWlQwaU1qQXhPQzB3TlMweU0xUXhORG8wTURvMU5Tc3dPRG93TUNJZ2VHMXdPazF2WkdsbWVVUmhkR1U5SWpJd01Ua3RNRFV0TURWVU1EazZNek02TkRjck1EZzZNREFpSUhodGNEcE5aWFJoWkdGMFlVUmhkR1U5SWpJd01Ua3RNRFV0TURWVU1EazZNek02TkRjck1EZzZNREFpSUdSak9tWnZjbTFoZEQwaWFXMWhaMlV2Y0c1bklpQndhRzkwYjNOb2IzQTZRMjlzYjNKTmIyUmxQU0l6SWlCd2FHOTBiM05vYjNBNlNVTkRVSEp2Wm1sc1pUMGljMUpIUWlCSlJVTTJNVGsyTmkweUxqRWlJSGh0Y0UxTk9rbHVjM1JoYm1ObFNVUTlJbmh0Y0M1cGFXUTZNakU0TldZeVltWXRPRFZtT1MxalpqUTNMV0ZpT0RjdE9URmpNMkl6WmpCaU56aGxJaUI0YlhCTlRUcEViMk4xYldWdWRFbEVQU0poWkc5aVpUcGtiMk5wWkRwd2FHOTBiM05vYjNBNlpXTXhaVGczTWpFdE56TTNZUzB3TlRSbExXRXpZVGt0TlRGa01UTXpORFpsWlRJNUlpQjRiWEJOVFRwUGNtbG5hVzVoYkVSdlkzVnRaVzUwU1VROUluaHRjQzVrYVdRNk1qRTROV1l5WW1ZdE9EVm1PUzFqWmpRM0xXRmlPRGN0T1RGak0ySXpaakJpTnpobElqNGdQSGh0Y0UxTk9raHBjM1J2Y25rK0lEeHlaR1k2VTJWeFBpQThjbVJtT214cElITjBSWFowT21GamRHbHZiajBpWTNKbFlYUmxaQ0lnYzNSRmRuUTZhVzV6ZEdGdVkyVkpSRDBpZUcxd0xtbHBaRG95TVRnMVpqSmlaaTA0TldZNUxXTm1ORGN0WVdJNE55MDVNV016WWpObU1HSTNPR1VpSUhOMFJYWjBPbmRvWlc0OUlqSXdNVGd0TURVdE1qTlVNVFE2TkRBNk5UVXJNRGc2TURBaUlITjBSWFowT25OdlpuUjNZWEpsUVdkbGJuUTlJa0ZrYjJKbElGQm9iM1J2YzJodmNDQkRReUFvVjJsdVpHOTNjeWtpTHo0Z1BDOXlaR1k2VTJWeFBpQThMM2h0Y0UxTk9raHBjM1J2Y25rK0lEd3ZjbVJtT2tSbGMyTnlhWEIwYVc5dVBpQThMM0prWmpwU1JFWStJRHd2ZURwNGJYQnRaWFJoUGlBOFAzaHdZV05yWlhRZ1pXNWtQU0p5SWo4Ky8wVnhSUUFBR2ZWSlJFRlVhQVhWd1hmY24zVjk3L0hYNS92OVh0ZHYzRHM3SkpBSUFVTFlCWm1DaW1EVkRsZnR3MjNIcVl1cVBWMFd0ZGJXUjYzblZHMnJucmFPdHNoRHJSVWZQUjNXV1MzS1ZoQVpZUW9FUWtMV25kenpONjdyK243ZTUwNGlLTldPODU4K24ybnVpc1MvSjNHOFlaZVoyWlRFSW1EODUrUk9PMFpTVWZpSEpQNkZIeUlFV0JqQXd6Tnc2b2JJM0N5a0NHYUdKTnloTE1Xd2ducm9wTkpJQ0JOVWNvb2kwTzhiK3hmRjZQTEFxSU1jR29kMlcrellEOUZnNDlyQWdiMWkwVEpUSFdHQ3VvNlVoZUVKZGk5bVZyU044Y0tZcTQyZCs4U0tDU08yZ0F3ZElCUVFUUHg3WmxEVmRra1dielRaY0tUSTNkaHZ2ckdsdWVNOWQ4VVRYMFJyK2ptb3lZQ1FPTVNzQkxwQUFqTFFSeHBneG8rUkFtbHI0b2NJWmhlR2tGNWxCcEw0cndoSUNYTERmSCtnRHhlRmtIZ0NDZVN3Zjc4aEV6L0tqTVBFRDVJZ1JYdVJ1ZjIwcFlCWlE3MmY3U3RHSDNZbVR2eEZNaGNnQXdsaUFSTGdHV3dHTkFmV1Fxd21oc2hCY240c0dPQStsOHFDeHhtUUJVM0RTWklqOFY4VFlGQzBqWVVGYmUzMWRQMnk1WkF6VHhBUzVNWkFnUEdqelFCQjFZRHhBOVpaMEtrbWNFSEltYzkzTHZpM0hmSElrcVplalRJZ01FQU83bDhueGs4aDNZTG4zWVEwanVzTTFMeU9FTTVFNHNlQ2dPei9sUFljRUk5eFFUdHh4SGczbnVrWUlMNXJFZGdPQ0NqNGZnWVNzUjVxUmFlanEwSml1cXA0Z2hRTkx3MVY0c2VGQUs5Rk1yNUhRTFRqUWd5Yk1jaU5nN0huMXBXWGZPT2g2c1NMOFBrak1RZExZR0dhd2Q3ZkpYWXZSMFdmRU1BQzFCV0U0bFo2Qy85TW1mNk9jdVRwU0lENGtXVUcwbTdFdmVtMmJjNWpobzFZT3htUE9uTVRwMmFKN0lDQmlZOEovVDdRQWtZQWNaQUFROEVvYzBPMnlMYlJVVU1DTTVDTWRodjJ6VGxrSS9KalJHQVJRaEhJalhpTUdjZEtHbmVNMGpLSU94NnBWKy9MWnVjajd4QU1TUHZvNnhWNDlRWFNPTXpOdzhnRWRGb3dNd01qWTVEU1hwcm1yUlQ2QjR4VmlCOWRFa3R1Sk5xT3RIYys4SmorRURwZDJ4VGFqR2dBR2VNZ2QvOW5ZRThJNElJUVFDd0pnSU1MWEJBTm1neVNrUjJLNE56OUlEdzZMellmTFFyang0WVpORFgwZWs1M0xDQnhTQXAyanBsaGdoWTFzelp4MDFYTkJYTUV0aEFxUUJXOTVoMDA2UXZFRWFoSnRNdVhVTVFYMEZSWDAycDloQ0xOb3dDZXJzZjhQckJWL0tmRVljWi9uempNK0FIdUVBTC9JVGxnWU1aaEJxNmJFUXZwU1VkR0hsUFZ4QlZqZG82eTRSSWdFTnNFTzZKQmxwRUNWTFVUZ2hGTFFUWWNJeU1LUVpNaEcxUU5GS1g0NWoxaVl0Sm9KVU9WK0NFTUdBRUNNQStJL3c4Q1hHQ0FPMWprdjgxWUlzZ09Fb2VJd3l4QVhZbTUvYzZxbFlabmFESkg1Y3pKaElCTW1PQWgzL2psZ1hWV1F6NlJZREFZWHN0Qy9SZDBsa001QXZJM1VIVGZSd0JxZng0am8xdUJMMklSNmdEWkcwSUFCTzRRSTJEZ0RpWU9zUVJ5a0lNWlAwamdHVUxpY1JZQWdRdk1PRVFDTXloYTRCbmtQSUVFRnFCb1FhN0FIVUlFQkRuZmljanBwRWx4aUlESW1zNlluWmtiYURKWU1EejczY2dmbVdrQ1JZTEpDUDArV0FBS0htZUFaRWdRQWdUamtORTJwQWdTaHdqSUFvempnWjlCT2srd3pzQmM3QU8rZ3Zpa3hLUDhKd1M0R0RHNEtFWE9FcXpxdFBBQTN6SGpDNEt0L0JjRXk0Sng4V2liTTJKa0tvb2FlQUQ0Q3VMYkdCUWx4QkVqWmtHZjlYVnRtNGhnQ0l6WnYrWEZEejBZTnA2TkxheEVEbVhuczB5WkV5b28weG5JL29pY29ha2hSTUJlZzN3VFVrbjIxUmduRThRaHJRNG9nMmNIYlFmMjRxd2kySHFTQlJxQkFETWU1dzZwZ000WURIcVFHekNEa0NBVk1PeUJIQ3dBQWdHeEFEbDRCb3NjWnFBTUNHSUx3amhVUGFGc3dBNkM3bUZKbW5sVUhPUVpXbDFXajR5eVJVRWdrQnRseVQydHFBTjc1NFc1c1dSQ2NLcmdETERqZ09VR0NvR2RHTGNDL3lwNGhCOUdFT0NZcVhaNGJXN3NSZEYwRkdhR0lBTXBRc0NlWllGZk03TjNDUDdhUUh3ZkFUbXJSUFpMcmNpdllHeVdXVmVDdFpNZ2w1ckszcFNpUG9iemg4Q0E3eU1naTFHWlhlcHVyNHpHcGcycllsblhBamVVaERzUFdlVFBMZkxIMVVEYWZtK21Mb3lSdHYzRVpOY21xeXhhTkNCdXZUNmV1d1B4TXRSdjQrclJHOXhJTXVnME1OUUJMTnhQYTJRTHVZRnFBTVRuQTgvbm9DSUF4aUVoZ3VjRExQWStUalA0RXVOajkrRFdKNFJBTlhNNmROL0N5TEt6V0p3RmJ5QkVRQkJMVUlERm1RZHhYVWNxN3NUQ2dHSC9LUHB6ejZBemVoSUdOQTJrTm5qZXdmYmJQc3JZNnZ0b1R6NGZhMTZJQmNnWldpT1E2MGZZZnYrSG1GaHhCOTNSbjhQenkzRGRqckdkSmFtN01YQ1FCRVhrRERQR2NnVVd3WEFHZlYxZlcwQnVheTN5ODdnOXY5MjJFdzFiSVRjd2dTQUZROEpqNEg2WlhWRkxId0JtK1M0SEFyeDQ5VEo3UjlrS3h3OFd3UUtQazZCc1FRR1d6ZFlYby9HamRaT2pNaDgyRHBNZ0pqdHA5VVQ4Mzkxa0YrZUdva2pDSmJJTWx4QllyblZrdTJ0dk13OUhtdkpyQlFPV09GQUVUbG5WRGg5c1diaWdjY05NMUJuRWtpQWtrTEVoQkh0M0dXd1ZtZCs4ZDV2enhlL0U5TXl6N2N5THo0ZnFFU2lWMlZscytQeWVZbTJQUGsvRk1zZ0hEUG96V0lDcWdtN25BVHkvZ05rOXI2RW9uMGQ3OUVrMEZZY0lDQUhFRW9FUHY4cWpEN3lUVmNkZHc4UjRReldBTEJCZytXRm1Gci9LYkhNRlUrWHpDQW15Z3dVbzB4NzJQZlNYUEhEbjM3TGxLUTloMWlkRXdHRm0xeW82eDd5VnN2dEc2aGt3b0RQNk5oWm1MbWZaeGhZcFhZelhJQUdDYUNDOWkxNzlGelRYUVRyaFFzcE40SXZmQXVaWmtycGRjWkNnRTJWbmV6WmNJbUswT254MWR0YitMamU2ZU5VSysyRENqcTlkaEJDMDVBRFNpQVhLVmpTYVJqUWl4R0RIZ3IzVDRGbkFyMHA4MndXZHlGdGJJK0czVFRiZXVCQVFnQkFONVBNakxUNTN4NE82ZXRzQys4NC93ZFpPWWk5dGlPOHl5N2NpM2NoQjR0eFd5ejRTNGNRaVFPZzZ2UjU3VEZ5VmdqeVlYU1JZMVFBT2RHSjhxYVJySlB0b1UzUFF1U25ZRmFQUk5tV0RqRERZV2RWK3ZSblo0R3d6MjJCQU5aU1ZuZmlxbzQ3bHM1UE9WZlBMYk8yS1VkdE1YMkFHQlF3NkU5YzBkKzFkeGRyak50Rk9vRGhDWi85NTdIaGdLMGVmQzZFRzV4NEdpNzlPU2g4Z3BLY1IvZGNvdTZmUW40ZnNrQ0pRL3ozVWIyQnF6VTZhUG93c081Ymg0QUpjdS9EbXE3UW5CdlNaWi92V3R6TjI3R2wwSnpjeVdBVFo5VlJ6YjZiZHZvYk41NHFpQldxZ0dvSWl0RWYzc09mQW14aTNTTGQ5S1ZWL0Y2M3VWemo2TElqRk9sUmRnQVVRRUFNTXEzdkpkaFZyMWtKdUxjTW1uNG9xb0w0WlBJT1JHSENJR1ZORVRoSmdCdG45eThNQnJ4OGRzN2NGaFhkMm9oZzJmbVBPK25TUTNReTJEOU5rVTlrcGk0Mi9vR3lGaThwSWtBdHZ4TVNZblIrSytBa0x6WXRHMjNaQnV3eHZ5ejIxNjBhWVFaRkFVUFY3L3FtaXNEOW5WTGYxK3ZTbmU0NHNRTllWamV6dHBmSFVSbjRUc000c3ZNL0VpU0hCVEYvOWhVWDcwN0t0ajQ2MDJJWElOOXpWYko0YWkrL2ZjblM0c0JxSXhsVzBZM3pkdmdVK3VtM2Fqemp0S1A0TWJGTXRrR25Pczc4M2hQREpFT3hSU1JnY2lYZ2J4a3NGbHFLdGFLZjR3djVRVjUxNnJKNjB5am1oMm05WUVKVHNmbzllLzhoOUJ6YWV3Ukh6VTRRQ0ZGcUU4QWE4dW9taXVJV21ENTZoTE1EaWc3UkhIdVNXYTcvRXNQOVJUbm42czRnR2kvVzF5TjVJSE95a003R01oWVUzczdqNFVzUnFpbEFnUGs2T3YwNjczc3RSNjI4bmh4dkkya2gzL0NibUYxK0x1STN4TmVEaDZWVDlWeUdPUlBsbUd2OVRKbGJ0eElENTRWL1NhajhYZkNkemV4ZXhOdFRWV1VUZmdCbVlRVERvRFhmUTB6WW1XcEEybm9QN0NmaGdIeUhmam9tRGtqak14UHBBT0E0RHo5d2c4WDdWK3IyUlRuejVZcTBIZHMvbFB4d3A3VFBCbU9PN2drSGxYSHYzdy82eGlTbi8rVk0ycGJkWHMvWWtqMkk0RUtFS1c1NTZVdkhsbUppb2Vtb3JjMGdyUVFPUEhoajZXMm5zYjhxQ3g4VUlNUmk0OXRkWmYxQVVYREJXcG9tRlNyOWxGczRKQ0F2TTdacjFTL3Z6Zkh6RGVzTU1FRFJ1dDg3M21yY29wL2NFV0I4RHpYUlA5My9xT2kvT1B6bjlhbXZVbnJ3d0M1Z2U4dHBmQlh5Tko3b2I5RHVZbldqWWFaN0ZZclpOTWNOSzJKS0NqVmRtZEJuQWdCc2YwaEhiMkxMdWRhUURJMVFWeUtDejZtU09tZm9rN24rTS9FdDQvUWl0VWVpT2d6Y2c3V0RZK3oxeVBvbWlYRTlqZjRocEI2YjFwSGc1NHl1ZndYQUFaaEFOWEMrbmFtNGw4QjY2NDlCS0I4Z0xNTmQ3SjVWdW80cVJFYnVNd2NKdlkyRU1pMUNNWG9TcUR0aGx4QUFkemRJMGV5azczMkk0bk9PdXUySDk2dE5adFR3eHJDQVl4QVFMKzIvQ3JNL29hdWhWVDZaVmRKaHVycWV0QTNRaU9LUVVqZTg2eFl3cHdVN0hyMjBuZTB2MmRHNC82K3Z1L2lwZ0c5OWxnRmhpSE5JNHZVYTZIUGR2N2h2d2liRk9PRFVCdVJIakl4eVJIZW9HZ2tFTXNHdEczODdCMzFoMjdHb0pFT0RRYlVPM011N2RubG5aRVdYQlZMc2RPNVk1WGg1ZW9DaUtDRE56K1VQVCsvempyWlNRd0lBNnc5cEpaekQwYXdmeitlZVNhU3dtY3BYWk5UVnFwNjlaWWI4aUI4K09SOTZkVXZ4YU1FWWxHV0JMV0pLQkEzSjkyNHpUV09Lb1hEU25LOXVZSkFRRWd3UE42Tlc3ZTJ1Z3pkbVFRU3dSNE5EdWJNYjlyOGpGVnFJK0FmWVpvdCtIK25EMGFTejVCc3EzMEJ2c2d2QU5tajNnZmhSaCtUU2h1Uko1QllpR0FoZ2g2QjZLQkFhc1dINDZYNy95YzFqcksreDdBRFkrOCtYRStBY0l3d1JpU1laMitVdElaMUEzTXhSaEFta3psbjZmYmRzYVJJZWlPSldEREpCRHc0RDIyTGNZOW1CMkRrSjZNclJncW5NelRYMkFiQnlVa0ZqU3d1eDBDUXlmam03UERlTmgwNkRVRjFwOXZaekdwdVdBUUFZWk1NQU0zQ0VBM1RaUXNIV3Uxcy9VTWYvVlVkMXdTYitHUVEwR21FR0lRQXBmZjNSL2Z1M0tGZHpsQWpOUWdHWUlKMjJBWnB2NDBPZmh3ak1EenozZEx0MjV4K1JvNCtybHRpd1BJWFM0cDEzeUoxUHpScnNGcVFWMUF3WjBTMk00QkVrN0RKRmxyQmlOeFl2UDU0VmtWaXpPaVpCc0VlbW5nTE1FNDRENG5ob29ETTdpSUFPRHhXZ1UwVGhKQXR3Z3daZmpKWGRzRFNlMkNQa0lWQU1CTUJEUUREa2tkVTdFdXUraUhyd2FlQW1Ub3pmZ3dHSUZxSWY0QktWUDB4OUM1anE4dVk1UThEM0dJY3BRbE5DZFdNbmV2Y3Y0OXJjK3lyTE9JaXZYcm1DeXVJektEUk5nUEs3SlhlQmN6TUFkc1BzeHU0Mk5SNEg3OFpUaEZPb0tNRURnN0dCMGZDc1IyTHYvQkk1WXR4a0w4SjBicjZPM1B4TUxEa3BrRHBxazBPa2dZckNqcldNajkrM1JUZE1MZXZVNFRLOGVnN0lGYnBBTmhBaEJXQU5tY01SeVk2U0Evb0xZdk15MzF6bGUyV3U0aENYR1lXWlFOZjczL1lwTHk1WjJsUUZLak5BQ0JlaFYwQ21FQUFkaXlYbmRibnJwMXVubWo4cFJ6bDdmc25iZHdNNTV2M3JkbHZEb3lSc01HakhZQVRQVDBFcXdjc0t3RUZFdzNDQ0hRSVRWMGV5aVd1QUdFVWJLRUg3YUFRbk1EQVFPR0dBc0NZWUFBNVI5YXlmWTZRbDd1bVNVN1JybWVIQjcvYVRiQjFQZDU1QjdHM0RMWUxzNXJBMDJBVVRVZ0F0U3NaSHNMMmJQZ1J0b0hDeHZBRnREc0swWU1IbGNDMDhyeUwyRTZocUw0cUFRdXJnbWlVWEJzUDh3dmRZcnFQYk1zbjdsMVp6NkhGaTI1a0p5M3NoZ0hrTGdDUXdRSUNBVnNEQjdMYjNlYmxhdGhSQlBZWGJmQ2c2eUNGWkEvNUU3R2U2K25kRlRZTTJHMHhsckgwTnY1Z0JYL2VPOVBIdzNkRVk1S0NsdzBMR0JjQ29Zb0pGT1MremNtVCs5WTVlMnIxNWhkRHZHMm5GalVJRUJCcGhnVUl0MmFSeTV5cmg5dTVqdGlSUFc4Unl2N0hmZGpJQjRURERERzN2NHpsM0RmV3Vuak5GV29oMk1Ka0x0RUlFQTlJWXdWaksrNmFqNGYrZ3FuTFpKTjJYRjF3em1oUlZVRE5uYVRBTW02Z1hSekJtdDBwQTdWUTJybGhjMGJtUVhNUW5Qck9rTk9jNkNpSVlIV0JDcUJNa01ZNG1FeFlBbG8xOWw5VG1zN1diVDlkQS9WclR0OUJpdFcxWFFzUXlKNjY1WlBIVUh6czlpZ3hMeEJveXJnUUk0SHZRQnpLWndRVm1BNUR5ODZ5WXF3ZklXZE9JRk1ISUNzZDBEUVRWWWh6VlhnRTFCbUFWenpFYUFJNEVhWXovWURLazZGenBYY01IUFBrem5LQ0N0cDlvZmVaeUF3Q0Z5aUFrQ21leVIxTHFkWFBXWTJRTm1KNURLaER0WWdQYllrTVhaLzR0RmlDdUFBejlCTTRSKy8wWTJuN09MZGNkQktqa295UUJqTTlBMVJCYlVpeXl1bjdDN2psNExUMXBqekM3QVlBaG1QRUV3a0tCcUlEc0VDNzhJOXFjMWpFZUUrQjUzMFdtRlgxNDJtdTZxYy82d0F4bHdBUVlJcWd4akhWYTg4cUp3eFVtcndtbVBQbHkvZXFvZER5U3o1WFVqWW0zRmlyYVd6KzRXUVNLWkVWcWdpc01FVGFPT2pHeW9hSGZGY05GR2xCa0xMREVMZyt4L0hjdy9VZ1E3S3JzaVFnNHFaSG0yMGU2VzJaeHhTTGRwdkoyZCt3cnM5VGxETEEwR2tVVTFkelFUdTZEaUdKTE5ZM3dXdEEwTXBQdUJTOEhPQllFRTg0dC9RdEg2T0t1WFFmOVI4UFpUYVkrc1l2YitCWVl6TVBLa2ZSVGxQbUk4SHh6TVFBYjE0TXNFdTVKUTNJTDd5NGlEODBoanM3aFZUTzhCOTF0b3QycFNUTWhBQmpTUS9YTVU1VmZCZDdNNDJFSUlsN0ZtNVJ5akpYeml6NkN1dHZQY04yUjYvVVRUaDhYOUg2ZlYrUnVxR2FBL1RxNStnbDRGcWZVTkx2ejUvYVFDSkE1S0psb1c3R1F6UXhJbVkrajYxb1lqdU5iTjJEY0xHSmlCZUp3QkpUQjBRUXJXM2JEQy9xQXN3cHVHdFNYTU9jakVmaGtkb0NQQVhXUEhMRXZ2bmU5amNqNWlBZWU3aEtocWU4YnhhOEw3V3V2aUtmZmRuUi8rNWozNjBuT2VUcGhNaWd4QVlKVjRhb3hXRm9US2xVRUdCbklJMFg3WmpKY0hWQW1iMkQvamZ6YlJzdThvV2QrenVza2dpL1lnKzUyaklkNkpHV1lRZ2V5QlBaWE8zZEFORndmUmRURW0rVHRhcFI4UnpKNlIzZWgwd2ZZM2ZHYmZlYmRkYyt6TFZsRnJJNE9xRFdxRHdBS2dBOEJid2Y4bktRVkM2MU5VTTU5aDFTUzBPdEFmdlppaTlRSk1zTGh0R2NrZ05uTlEvakxLZDBBOGg1QVhxUHQvRDkxUEVGT21HWFlKY1JsaWlUYWpaZ3IzYWJKZGgvUk94RytoUEVXSWN5aThINXAzSTEra2JxQS8vQjNXcm9VN2J6akFvL2ZEMUJHdzdiWlBNNnlPcENqT29hbitsZjdzQjJsUFFRUjZ1MDlnWk9Sa0hERDdKdFVRcWlHUFNSYVlER1pQRm9jWndreXIreFcvR1F3cmpFSThyaFdNWllLVndPZGRmTWhkNThUQzNybHFNcHhmdTJnYVVRU2pjdDBXc0ZjWDBpdWFhSmZLUlJhMElxTmxOMzVnNlA2ekxuME83Q0dEbzhHZUVZTTluUkRHNkxuUHp1YzNiWnppb2VaQVhxYnhzSzFWaE9YRFNwalpCYVhDUjh6MEJvYzVscml6UEpxOXZTenQwaW9UT3kxalVHbjIwV20vdTczQnRyZmEzRCtZdFpPellEVFphM3BWbUJzMjlydXRrc3JNa0JoUFFiKzR2aDErVHpCbEJsbTZ5NHkzSjJPRjBCYUxScjJZU1NWM1BianFLVitibVZ2M1U4VGVrWmdEOGRtNDMwM09FQU9ZL1J1UjYybTFDdEE4MVg0SVU5QlVteWxiNzhmS1plUStMSC95WlJURFc2bWIvZURUaUxlVDJxTU1Gb2JNN3g2eStoVElmalRXL3pneG5Zc0RGaTZpR1o2QzZkOW9wWXp4eHpTNmltWndCR09qOTFPSDIvRGdaSWRXK2ZzVTZlMjBPckRub1JPcGRTV25QZzNXYk5wSHRyZXhzREJDcXpYSHlDUTBEaUhCL1BSR3hpWlhZUFZlY3ZNUU1yNWZHaG5WK29WNU95MUVEbkZBMkhHbHdsdWlBY1poeGlFdTdUWFpmVUxIaEVLWEUzaGE1YXlpaG1oR0E5UlovK1RHYjdqbjc4ajlFU3hlSEN3Y0QyS1lSVEFya29YbnVQakpBSDJEdG9LbGdpVXlXUFJMSnp2NmgxZ0VGcWZaLzhoMi9jMEp4M05xVVpKeUEyWjZoZEFXSS95clJMZFQ4RXpITnN1ZzB6S2lhV2VLZWduR0xRTXBET2E1Y2lUWXliVUxpMmJkTXY1R25YV2hZVmVEdW1aMnRzeE9HNDFLMmFHVzNTRHBKUlkwSU5oNVlBZ0RCd0wzcklyN0ZxazREVXRnQmpHK21leDNJbjBSTThpQ2ZqTmdjR0RBN0NPUWE1QzlpRmk4RDF0WWo5Y2dRV2ZpRXVycDkrTFZINUhDdlpnNStCejlQaXowbDdHT1g0RDhGaHBianNRaFJpSVc3NllaL2dJcDNvWFVZTTMxcEJMbTUyRlFRWHRxUGEzd3Y1Qy9GRE9ZbVliVG52M2J4UFlPZWdzZllkMnhNS3d5ZzJxZWxqMmJPaCtMNnk5b3QwUmFmUkc1QnVWdjRIb1l4UGRMdXc5dzNuaGJIWGN3UUlJaVFwRmdXQWwzc01BUThZamc5aWI3cmtRWWlZVTlIN04xTGhFRWpYRFE5WXREZjM4MFB0TnFCYzlBSSswSTJYOHBwWEM1c0dNZElRbHhTQlNNR2xDWU1XZzBiZGE4dm9VKzdkbndESjBJZXc3b1kyc2FmOXJxa2ZoenZWa25tOHpnekdEaFRBRVJFWU5SWmRFZmF1dFlsMWVueEhXR3lBZmNMZHRmeHpGN1Z0bTI4L3A5c1NTbVpPZTRjdzRZQnpsR1B3dDMvNWNRd3Bzd3RnMXJKbUlSbmhtQ2dhQVRLbVkwZGR2bjlUd29PUXZtT1VSYVRReVhJLzhZOEZWY0R6QjBHTTZ2WXpnNGhiWEhQNU1tUDVPOFdCSVRoNWhCTlE5MGZvR3lmU0dldndpMkMyOUVkL3hJeXZZRkRCZVBCa3BDQW5HWVo3QjRGbVg3TThEbG9Pc3c3U2Fta3JuK01YajlGTHJwZWVESDBUaVlnV2RvalhhbzYvY1NlRGJEM3Exa2IyaVh4K1AyWEZLTWlKOG0yRGl4UEEwMTROeE10bG1NSjBqYjl0blpaeHhuRE9ma0JCUUN3MkdqaGNWSzAyV3luZ1ZseWVZeFRIQmNDdUVDQzR6V1dWbmkzbVM2cndqY09aZTV2c3E2T3NyMlNlSXhCcGk0YnVENXhRRzdMSm05ME1GU01DUndpU0xTbTZuMWp3dVYzcnV5eGMwc2tVUnJNdERwR2lkTXNaQ0MvYXF5endxOU1rVXJ6STFHQW94YTBFN2E0NVd1N0EvMUoyUGRjRDhDQktwRXU5U09uTVBMOTgzejV4TnRQU3NSR0dZb0FramdFZ20vWjk5UUh5NGpsM2VEN1I5VWptQUNPQldKUThUaVBsdisyZnQxM0JiRTZZUWFDRFh1aHRrYWl1TE5vTmVRd241R0NxTllQc215SThhSVJhTHVRNjRiUWlFUWh4bGdFZXhvVEsvam9KeWgxWUdSU1JqTUMxRVRBaytrUUV4YlVINFhoQmtJczdoS3BwWXZ3MndFcjFuaW1EV0FFU0lNZW1BMlNvelBSLzU4WW9RRXVBQ0RZSmNnQjNPV09IQWRRZng3YWZQcThNRnFVWi9FYUVBS3dSWjdmZVlYS3kwZXVkS3lHcHNhVmt6R1NOdGdCT1RJcHB0R00yQUxLWEVBbUhmUnVLQmdpZkZFQmxuNmxzUC9rT3VLWVBhVW9ldW9FR3dZcEh2cXhyOWVLOXprTURTK1R6U3NNRG9KQXV6MnJEY09oL252S3NWbldORHhMUWlZcHQxMWl6SmZrN1RWekRLUE1TQUFCaUh3NE40NXZlVGhQZjZUVzlieWxMSmd3NkRDek5pWlROZVkrSHFXSGhMRzlFSk4zWWlVN01CSWFhOFJnU0FsRW90ZnFKOTE4MTM5NDFmUTdiK1NRTVpWQVlaa21MV1J1aGh0eWdRaDFCaUxWSXNEakV4SWdQTkVEUWdERXBBSUJybHV5RTJEbVRDV2lCK2dKZ0FkakJITUVwS0ljUWowYU9vaFpnNFlqekdXeUpBaVVDQUhVUU1OQjBrUmNFUWJiQmE0aVIvaS93SDNENVBNcGQydDVRQUFBQUJKUlU1RXJrSmdnZz09IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMV9QUkUiLCJGSURPXzJfMSJdLCJleHRlbnNpb25zIjpbImNyZWRCbG9iIiwiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsImxhcmdlQmxvYktleSIsIm1pblBpbkxlbmd0aCJdLCJhYWd1aWQiOiIwZDliMmU1NjU2NmJjMzkzMjk0MGY4MjFiN2YxNWQ2ZCIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImxhcmdlQmxvYnMiOnRydWUsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjp0cnVlLCJhbHdheXNVdiI6ZmFsc2V9LCJtYXhNc2dTaXplIjoyMDQ4LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjgsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6OTYsInRyYW5zcG9ydHMiOlsidXNiIiwibmZjIiwiYmxlIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN30seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTh9XSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5IjoyMDQ4LCJmb3JjZVBJTkNoYW5nZSI6ZmFsc2UsIm1pblBJTkxlbmd0aCI6NCwiZmlybXdhcmVWZXJzaW9uIjoyNTYsIm1heENyZWRCbG9iTGVuZ3RoIjozMiwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjYsImNlcnRpZmljYXRpb25zIjp7IkZJRE8iOjF9LCJyZW1haW5pbmdEaXNjb3ZlcmFibGVDcmVkZW50aWFscyI6NTB9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAxOS0xMi0xMCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyNTYsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiRXhjZWxzZWN1IGVTZWN1IEZJRE8yIFBybyBTZWN1cml0eSBLZXkiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDE5MTIxMDAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4xLjEiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMyJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAxOS0xMi0xMCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyNTZ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjMtMTItMDgifSx7ImFhZ3VpZCI6IjJiZmY4OWYyLTMyM2EtNDhmYy1iN2M4LTlmZjdmZTg3YzA3ZSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiMmJmZjg5ZjItMzIzYS00OGZjLWI3YzgtOWZmN2ZlODdjMDdlIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkZlaXRpYW4gQmlvUGFzcyBGSURPMiBQcm8gKEVudGVycHJpc2UgUHJvZmlsZSkifSwiZGVzY3JpcHRpb24iOiJGZWl0aWFuIEJpb1Bhc3MgRklETzIgUHJvIChFbnRlcnByaXNlIFByb2ZpbGUpIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfSx7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlCMlRDQ0FYNmdBd0lCQWdJUUZRTktXKzd6YmcvN2QrbFR5cklXd0RBS0JnZ3Foa2pPUFFRREFqQkxNUXN3Q1FZRFZRUUdFd0pWVXpFZE1Cc0dBMVVFQ2d3VVJtVnBkR2xoYmlCVVpXTm9ibTlzYjJkcFpYTXhIVEFiQmdOVkJBTU1GRVpsYVhScFlXNGdSa2xFVHlCU2IyOTBJRU5CTUNBWERUSXlNRFl3T0RBd01EQXdNRm9ZRHpJd05USXdOakEzTWpNMU9UVTVXakJMTVFzd0NRWURWUVFHRXdKVlV6RWRNQnNHQTFVRUNnd1VSbVZwZEdsaGJpQlVaV05vYm05c2IyZHBaWE14SFRBYkJnTlZCQU1NRkVabGFYUnBZVzRnUmtsRVR5QlNiMjkwSUVOQk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRXNGWUVFaGlKdXFxbk1nUWpTaWl2QmpWN0RHQ1RmNFhCQkgvQjd1dlpzS3hYU2hGMEw4dURJU1dVdmNFeGl4UnM2Z0Izb2xkU3Jqb3g2TDhUOTROT3pxTkNNRUF3SFFZRFZSME9CQllFRkV1OWh5WVJyUnlKendSWXZuRFNDSXhyRmlPM01BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0RnWURWUjBQQVFIL0JBUURBZ0VHTUFvR0NDcUdTTTQ5QkFNQ0Ewa0FNRVlDSVFDQjBORlFTTjB6NGxXei95YzM2ZXdyVEN6dHRLL3FGdmxhUE9LaCtUMW82d0loQVAwb0tLQStjaWNzRHkzWTNuK1ZsUDhlQjNQQnpNa2h2Vy85SVNYQ3crVkIiLCJNSUlCMkRDQ0FYK2dBd0lCQWdJUkFNczhZWFZCb0JOdVhVanFmQ29YN3k0d0NnWUlLb1pJemowRUF3SXdTekVMTUFrR0ExVUVCaE1DVlZNeEhUQWJCZ05WQkFvTUZFWmxhWFJwWVc0Z1ZHVmphRzV2Ykc5bmFXVnpNUjB3R3dZRFZRUUREQlJHWldsMGFXRnVJRVpKUkU4Z1JVRWdVbTl2ZERBZ0Z3MHlNekF4TURFd01EQXdNREJhR0E4eU1EVXlNVEl6TVRJek5UazFPVm93U3pFTE1Ba0dBMVVFQmhNQ1ZWTXhIVEFiQmdOVkJBb01GRVpsYVhScFlXNGdWR1ZqYUc1dmJHOW5hV1Z6TVIwd0d3WURWUVFEREJSR1pXbDBhV0Z1SUVaSlJFOGdSVUVnVW05dmREQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJEMkxISEFRcVliZFIxV1psdWVydE0zMHJXaG9yWWF2V21NVmE0bmRYOVBad3VSRXBMUTRtMW5FbHFRS01uUkU4LzRDK1Jxd2lhdittcEk0a3hkNWU1dWpRakJBTUIwR0ExVWREZ1FXQkJTM1paanlHbGhaOTlOMXZMb1RQWFZVYTRaRVlEQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01BNEdBMVVkRHdFQi93UUVBd0lCQmpBS0JnZ3Foa2pPUFFRREFnTkhBREJFQWlBb0QrUjZrb2xJV2FOSno0aHowM0QzZ2VzM0diTUJqQVdwa09VZzlheUZnd0lnYkV3N0FZU3lrNjhPdnhnWGV6Z25kVFJURXVTV1QrZmRSbkxhQk5zYVR3MD0iLCJNSUlCMkRDQ0FYNmdBd0lCQWdJUUJUbWszWndpbEZYanNaeXdIRG5NZ0RBS0JnZ3Foa2pPUFFRREFqQkxNUXN3Q1FZRFZRUUdFd0pEVGpFZE1Cc0dBMVVFQ2d3VVJtVnBkR2xoYmlCVVpXTm9ibTlzYjJkcFpYTXhIVEFiQmdOVkJBTU1GRVpsYVhScFlXNGdSa2xFVHlCU2IyOTBJRU5CTUNBWERUSXlNRFl3T0RBd01EQXdNRm9ZRHpJd05USXdOakEzTWpNMU9UVTVXakJMTVFzd0NRWURWUVFHRXdKRFRqRWRNQnNHQTFVRUNnd1VSbVZwZEdsaGJpQlVaV05vYm05c2IyZHBaWE14SFRBYkJnTlZCQU1NRkVabGFYUnBZVzRnUmtsRVR5QlNiMjkwSUVOQk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRW5mQUtianZNWDFFeTFiNmsrV1FRZE5WTXQ5SmdHV3lKM1B2TTRCU0s1WHFUZm8rKzBvQWovNHRud3lJTDBIRkJSOVN0K2t0anFTWERmamlYQXVyczg2TkNNRUF3SFFZRFZSME9CQllFRk5HaG1FMkJmOE81YS9ZSFo3MVFFdjZRUmZGVU1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0RnWURWUjBQQVFIL0JBUURBZ0VHTUFvR0NDcUdTTTQ5QkFNQ0EwZ0FNRVVDSUJ5Uno0T0FsUlo5SHo5S1Y3ZzJRTnRDMEM4SnhIL3hMSlk4RlpFbXRKM3NBaUVBc3JlVDArZU5rTmNVakk5aDVPUENvSDZObXNPa2d2RUFCSlpyRjA3QURrWT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBRkFBQUFBVUNBTUFBQUF0QmtybEFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFCSFpwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFBRHcvZUhCaFkydGxkQ0JpWldkcGJqMGk3N3UvSWlCcFpEMGlWelZOTUUxd1EyVm9hVWg2Y21WVGVrNVVZM3ByWXpsa0lqOCtJRHg0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJa0ZrYjJKbElGaE5VQ0JEYjNKbElEVXVOaTFqTURFMElEYzVMakUxTmpjNU55d2dNakF4TkM4d09DOHlNQzB3T1RvMU16b3dNaUFnSUNBZ0lDQWdJajRnUEhKa1pqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWo0Z1BISmtaanBFWlhOamNtbHdkR2x2YmlCeVpHWTZZV0p2ZFhROUlpSWdlRzFzYm5NNmVHMXdQU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2SWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhodGJHNXpPbkJvYjNSdmMyaHZjRDBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5d2FHOTBiM05vYjNBdk1TNHdMeUlnZUcxc2JuTTZlRzF3VFUwOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXRiUzhpSUhodGJHNXpPbk4wVW1WbVBTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZjMVI1Y0dVdlVtVnpiM1Z5WTJWU1pXWWpJaUI0YlhBNlEzSmxZWFJ2Y2xSdmIydzlJa0ZrYjJKbElGQm9iM1J2YzJodmNDQkRReUF5TURFMElDaE5ZV05wYm5SdmMyZ3BJaUI0YlhBNlEzSmxZWFJsUkdGMFpUMGlNakF4TmkweE1pMHpNRlF4TkRvek16b3dPQ3N3T0Rvd01DSWdlRzF3T2sxdlpHbG1lVVJoZEdVOUlqSXdNVFl0TVRJdE16QlVNRGM2TXpFNk5Ua3JNRGc2TURBaUlIaHRjRHBOWlhSaFpHRjBZVVJoZEdVOUlqSXdNVFl0TVRJdE16QlVNRGM2TXpFNk5Ua3JNRGc2TURBaUlHUmpPbVp2Y20xaGREMGlhVzFoWjJVdmNHNW5JaUJ3YUc5MGIzTm9iM0E2U0dsemRHOXllVDBpTWpBeE5pMHhNaTB6TUZReE5Ub3pNRG95Tnlzd09Eb3dNQ1lqZURrNzVwYUg1THUySU9hY3F1YWdoK21pbUMweElPVzNzdWFKaytXOGdDWWplRUU3SWlCNGJYQk5UVHBKYm5OMFlXNWpaVWxFUFNKNGJYQXVhV2xrT2pKRk56RkNSa1pEUXpZM1JqRXhSVFk1TnpoRVFUbERRa0kyTkRZelJqa3dJaUI0YlhCTlRUcEViMk4xYldWdWRFbEVQU0o0YlhBdVpHbGtPakpGTnpGQ1JrWkVRelkzUmpFeFJUWTVOemhFUVRsRFFrSTJORFl6Umprd0lqNGdQSGh0Y0UxTk9rUmxjbWwyWldSR2NtOXRJSE4wVW1WbU9tbHVjM1JoYm1ObFNVUTlJbmh0Y0M1cGFXUTZNa1UzTVVKR1JrRkROamRHTVRGRk5qazNPRVJCT1VOQ1FqWTBOak5HT1RBaUlITjBVbVZtT21SdlkzVnRaVzUwU1VROUluaHRjQzVrYVdRNk1rVTNNVUpHUmtKRE5qZEdNVEZGTmprM09FUkJPVU5DUWpZME5qTkdPVEFpTHo0Z1BDOXlaR1k2UkdWelkzSnBjSFJwYjI0K0lEd3ZjbVJtT2xKRVJqNGdQQzk0T25odGNHMWxkR0UrSUR3L2VIQmhZMnRsZENCbGJtUTlJbklpUHo0NzdKWEZBQUFBWUZCTVZFWC8vLzhFVnFJWFphdkcyT29xY0xHMnpPT2t3dDBCU0p0cWxjWFY0dSthdXRsV2hiems3UFVBTVk5SGNyS2p0TmJxOGZlQWw4YUJvc3p6OXZwZGpzR0dxdEYzbjh1VHNOU1pwYzZKc05UNSt2MHhZS251OFBmZjUvTDQ4ZmcvZnJpY3pKZ1lBQUFEQUVsRVFWUjQya1JVQ1piRElBakZYWk9ZMVRhdE5jMzliemtzU1ljM3I0TUU0Zk1CQWFENnpsOHkvOVRPZ2V0OGQ1amZONzhid00vZERDUnBSNTIxelhmb2pISjA1SUl5aEJBVVNWQU9OZEd6Qll0MmY3S0ZyZmtKYUFrSGg5RlpoY0RYSFJrVEtvOU1MaWhHYWF2SW1uVjNxeUVYMEVwcmd6LzREd1VEN2tDSFJuZDhRRk40M0dvNFVWbUREZ3phNHcyN29pemRBMitjSyt1dVVwampvMit4d2MvNDJXNTB4NUxHWWVEQnNSMEhWSXg1eDhpRjYwQ2JsYlRFRWtGcjI3Yk5EQlVWU3ExT0tWUGJFNjJiM0VIOEZxQmc1T09PRXVjMnQ4WkppcU1PdUdwK2NLamc3d1ZHY2VvenFONHB4Z1ZQUWtqRllnYlZKS0RVaERDallyYXdQNXE0RVRnQzlmSU1SSHRpdHBRY0N2Sk9FTGNiTXNRZ25jaVJrbGpweVFqdkc0NGpxQlVFVEZpQmkxUEVJeWVrT3pzVytUeTVjTEhvczVSK2RNUzFMdFNTeGYzZ1FIY3pSMkNJNGdNTnBXNElSQTFRTWE2dEo0K0M2dUh1R0U4bU5ESXlGcWcvT1AvTU1VdWVTNklxOFM5MGRBZUJKU0V5L3FLa0srQk53ejhjWVk0amI1SjZ1NGlXQ0kyQjFaNTZMVzVrRWM0aGtkTXBzdlVDNTU4NVNYMFF1YmNnTnF5ZmdERkVjVHQrNDAvMFM1Tngwd2FDdzNPS2tjT2JBNUluMEFZcDAxcGpqdzJuNjI2VURqdEh3YTI4aUh1VEtxdHJ2K3JlVzQxTlo2aUdscjd1dUxKQ2ZrRnRjdGNHMDRzZ20xZU5TK1phRG5wYVRFckdveVg1SksyaU16OHhzMG5Pd1dHY1BETjQ5cWFDZDRiekpvekRabS9hQksrRW96THcrWGhOQmlZd0hmMHNpT3UxWFBrRy96S3d2cVlLY2ZTd0RFY0gvb1VlMDdlcy9XUThySXlnMkRPWGo4dGprWmR1REIvYjhoekRsbE1NT0NTNUJFbmQ1MzRmOHRpM1VaYzRrTXMzeEx5YWZNU3NKaGRHOFhQcWpOazV0QWdPMjVmZUtDaG5WZERqL0owRk1rT3NVL3hNQnYwd0ZoWWVFR2ZWSDEzZnVEVTB5REZMYTRmYzdSbldIQmZ1VEZWMnRFbU53YWRjN2FjM1VZMmpmQmw3SFQzNmZlMzRpUU81bU5DRkZCVzA3S2pQZ3FoT0xVMDF2WjhQdWVaMkpDbEZaTjhqa1VzNjl1a2E5ZVBwNitFZkw0QUY1K055d1NiaXJIdGNCOE1sL2drd0FFamtLNjRLakhQZUFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xIiwiRklET18yXzFfUFJFIl0sImV4dGVuc2lvbnMiOlsiY3JlZEJsb2IiLCJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwibGFyZ2VCbG9iS2V5IiwibWluUGluTGVuZ3RoIl0sImFhZ3VpZCI6IjJiZmY4OWYyMzIzYTQ4ZmNiN2M4OWZmN2ZlODdjMDdlIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJ1diI6ZmFsc2UsInBpblV2QXV0aFRva2VuIjp0cnVlLCJub01jR2FQZXJtaXNzaW9uc1dpdGhDbGllbnRQaW4iOmZhbHNlLCJsYXJnZUJsb2JzIjp0cnVlLCJlcCI6ZmFsc2UsImJpb0Vucm9sbCI6ZmFsc2UsInVzZXJWZXJpZmljYXRpb25NZ210UHJldmlldyI6ZmFsc2UsInV2QmlvRW5yb2xsIjp0cnVlLCJhdXRobnJDZmciOnRydWUsInV2QWNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjp0cnVlLCJhbHdheXNVdiI6ZmFsc2V9LCJtYXhNc2dTaXplIjoxNDAwLCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjYsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6OTYsInRyYW5zcG9ydHMiOlsidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN31dLCJtYXhTZXJpYWxpemVkTGFyZ2VCbG9iQXJyYXkiOjEwMjQsIm1pblBJTkxlbmd0aCI6NCwibWF4Q3JlZEJsb2JMZW5ndGgiOjMyLCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6MywicHJlZmVycmVkUGxhdGZvcm1VdkF0dGVtcHRzIjo1LCJ1dk1vZGFsaXR5IjoyLCJyZW1haW5pbmdEaXNjb3ZlcmFibGVDcmVkZW50aWFscyI6MTI4fX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMDktMjYiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJCaW9QYXNzIEZJRE8yIFBybyAoRW50ZXJwcmlzZSBQcm9maWxlKSIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjQwOTI2MDAyIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMDktMjYiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MX1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNC0xMS0yMCJ9LHsiYWFndWlkIjoiYzVlZjU1ZmYtYWQ5YS00YjlmLWI1ODAtYWRlYmFmZTAyNmQwIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiJjNWVmNTVmZi1hZDlhLTRiOWYtYjU4MC1hZGViYWZlMDI2ZDAiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiWXViaUtleSA1IFNlcmllcyB3aXRoIExpZ2h0bmluZyJ9LCJkZXNjcmlwdGlvbiI6Ill1YmlLZXkgNSBTZXJpZXMgd2l0aCBMaWdodG5pbmciLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI4NzA2LCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsiZWQyNTUxOV9lZGRzYV9zaGE1MTJfcmF3Iiwic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfaW50ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlESGpDQ0FnYWdBd0lCQWdJRUcwQlQ5ekFOQmdrcWhraUc5dzBCQVFzRkFEQXVNU3d3S2dZRFZRUURFeU5aZFdKcFkyOGdWVEpHSUZKdmIzUWdRMEVnVTJWeWFXRnNJRFExTnpJd01EWXpNVEFnRncweE5EQTRNREV3TURBd01EQmFHQTh5TURVd01Ea3dOREF3TURBd01Gb3dMakVzTUNvR0ExVUVBeE1qV1hWaWFXTnZJRlV5UmlCU2IyOTBJRU5CSUZObGNtbGhiQ0EwTlRjeU1EQTJNekV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRQy9qd1l1aEJWbHFhaVlXRU1zcldGaXNnSitQdE05MWVTcnBJNFRLN1U1M213Q0lhd1NESHk4dlVtazVOMktBajlhYnZUOU5QNVNNUzFoUWkzdXN4b1lHb25YUWdmTzZaWHlVQTlhK0tBa3FkRm5Cbmx5dWdTZUNPZXA4RWRaRmZzYVJGdE1qa3d6NUdjejJQeTR2SVl2Q2RNSFB0d2F6MGJWdXpuZXVlSUV6NlRuUWpFNjNSZHQyemJ3bmVid1RHNVp5YmVXU3dienkrQkozNFpIY1VoUEFZODl5SlFYdUUwSXpNWkZjRUJiUE5SYldFQ1JLZ2pxLy9xVDlubURPRlZsU1JDdDJ3aXFQU3psdXduK3Yrc3VRRUJzVWpUR01FZDI1dEtYWFRrTlcyMXdJV2J4ZVN5VW9UWHdMdkdTNnhsd1FTZ05wazJxWFl3ZjhpWGc3VldaQWdNQkFBR2pRakJBTUIwR0ExVWREZ1FXQkJRZ0l2ejBiTkdKaGpncFRva3N5S3BQOXh2OW9EQVBCZ05WSFJNRUNEQUdBUUgvQWdFQU1BNEdBMVVkRHdFQi93UUVBd0lCQmpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQWp2anVPTURTYStKWEZDTHlCS3N5Y1h0QlZac0o0VWUzTGJhRXNQWTRNWU4vaElRNVpNNXA3RWpmY25NRzRDdFlrTnNmTkhjMEFoQkxkcTQ1cm5UODdxLzZPM3ZVRXROTWFmYmhVNmt0aFg3WSs5WEZOOU5wbVl4citla1ZZNXhPeGk4aDlKRElnb01QNFZCMXVTMGF1bkwxSUdxck5vb0w5bW1Gbkwya0xWVmVlNi9WUjZDNStLU1RDTUNXcHBNdUpJWklJMnY5bzRka29aOFk3UVJqUWxMZll6ZDNxR3RLYnc3eGFGMVVzRy81eFViL0J0d2IyWDJnNElucGlCL3l0LzNDcFFYcGlXWC9LNG1CdlVLaUduMDVac3FlWTFneDRnMHhMQnFjVTlwc215UHpLK1ZzZ3cyamVSUTVKbEtEeXFFMGhlYmZDMXR2RnUwQ0NySkZjdz09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWZDQVlBQUFDR1ZzK01BQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBSFlZQUFCMkdBVjJpRTRFQUFBYk5TVVJCVkZoSHBWZDdUTlYxRkQvM2Q1OXdlUVNJZ1M5QVFBWGNGTEFRWmk5ZnBlVnoxdFkvV1RacjVXeHBjN1c1a25MYTVqSTNaODVzclMybk0yc2p0V3daUzdJVUg0SDR4Q25FUXg0REFaRjc0Vjd1czg4NXY5L2xJbkJ2VkovQjRQdjludS81bnUvNW52TTU1NmZ6QS9RdjBIYi9JclgzVkZLUG80NWNubTRpblVJV1l3TEZSbVpRVXV3akZHL04xaVJIaDFFWjBOUlZSdWRxdDFCZCsyblNLeVMvT2h5czArbGszZS8za1E5cXZENFpVdGE0VlZTVXVZMGVpcHlpVGhBZm9jb09SVmdEdXV3M3FLUmlBZDNyYmNFdGpUallJb2Y2V2FIc0NtelZQV0NNeCtjZ2g4dExxV01LYU1Xc1VqTHFvMlJ0SklRMG9Pem1lcnBRdTRlc1pnc09Oa0d4SDdkMGtkdlRUMTdzNE9NVTdWSThaaGpnR2FNK0FxOWlFTnU4UGlmMXVkejA3TXd2S1dmOEdsVm9DRVkwNFBDNVdkVGFYWUZiUjh2TnZMNSszS2dmYjV4Tk15YTlSYW1KaXluYU1sR1RWdEZscjZiYTl1K3BxbkVYNHVNdVJSZ2pTWUVock43dXRGRmU2bHFhbDdOZmt3NWltQUdIeW5QcGJrOFZtWTB4c3RucHRsRkNWQ1l0elR1Qk44M1FwTUxqVHRldmRQelNVbko3ZThta2p4WjM5ZlhiS0RmbGRacWJ2VStUVWdHbkJWRjZmUTJpUEhnNFcxNlVXVXd2emJrMTZzTVpFK1BuMHB2ejdKU2V1QXllczhsY3BDbWFLdW8vcCtxV3IyVWN3SUFIV3J2UDBZRXpoWEF0TEFic3NIaHA3aUdhbXZ5aWpQOHJ5cXJYVVdYOVhvb3d4eUF1Zk5CcnA0M1BPQkZYWmxrZjhNRFJpcWNweW93QXdwdXoyeCtmV3Z6L0R0ZGU5c21zenlndGNSNkMxd2JkekJsNk9scTVXTllZNG9HYXRoSk1ya1RFeDBqQVJTSEFWcys1cllrUU5YYitRZ2ZQTHNRNmdYeUluc3JlUWZtcG03UlZGWWZMODZuMWZpVU9rWXZTaGtVUHh2YnVrem95NksxaWhNMWhvM1h6VzZFdlNmWEErZHBpV0dhV2QrZG9Yekx6bUd3S1lGTENBc1JBbFBCQWhNbENGWFU3dEJVVlByOEhnVmNKSFdxK0YwMHBscitETVRkclA0enZ4WTExa05NaHhUK1NlVEdnK2Q0VjVMUUppdHlVR0pOQjhWRlpzamdZQlpNL0lJL1hDVGtqMHF5RE9wRjJBVlExN0NJalVwL0RuVDFVa0w1RjVnZGorc1Mxd2cxZ0UzZ2lnbTYwZkNYelNuUFhieUFQYklYditJRHBFMTZUaGFISVM5c2t5aGxtTUU1RjNjZnFBS2hxMkMwRTVQSDFnWWFYYUxQRGtaRzBIREpPbktXSHA1MUkwejVTT3V4OGUxV0F1WnpkSFFyVGtwOFRtalhvSStsYTB3R1pzenVicWJPM2lmUTZBL1c3dlZTWXNWM21SMEpLd2tLYzRXSGlCa21SOEkzQ0NnSTg3b09MNHF6VDVQK1JVSkJlakVPZ0FQSzhoWVB6YXRNK2VJVHAySU85eVRRbWVyb21QUnh4MXF4QWNzaWxlL3ViU2VFYmNXUUdZRUNnaGNMWTJIeUtqb2dqSDI1aE1wanBVdjFPdWdsaTRlaDJlUncwTzMyYkpqa3l1Q2dOemcwdnpsWU1TaVNzMHVvbzRNRzdoTU9qQ0VhWDF5RkUwblN2akJ6dVRuRXBLODZaOElvcUZBSXVidzhrZzlBckVhUkVXU1pJK2pINFhicDZnOUU5RW5KVDNvYVJ6RE4rTVVKQlFESG41NmE4b1VtRUJ1c094QnMvTjUrdEpFYlBrQUZEajhVR3ZPcy9JV3ZjU2dsR0JodlM3L0ZUWWZwV0dZZERZOGZQQXhXU0EzNXNUQzRwNCtMbTRBYXFJb1BlUXRmdWZLNkpoMFpoeGxic1VYT1NtWE5pZkQ1WlRBa3lEb2ZiYmNjbHhuQThXTkFxeENiUk55a2hYeFFwYUR3NjdmWFVZYnNpRzBLaHR2Mm9lSXZoOHJoUU1ZT2NFQXFYRy9lSSt6bmdPYzV5eHI4cTgySUFNMWMvRkxGT3BscXU1ZUZRWHJNWnpHY1ZDalliTFdHNUk0QlQxZXVScmxieHROT3RNaXREREVoTFhJSXluQUF2dU9FV0UzWDNOZEFmdDk0VmdhRzQyWElRdDBaWDZQZUNFL3FRRmU5cks2SHg3WVU1MEt2SDdmVzRmUytxN0tLQkp4c2dnQlg1cFNBR2gxaklyVmg1elE2dzNSZmFhaEJYbS9hQ2JDWlRqQ1VGVVR5V1pxVzlwNjJNakpQWFZxT3JQZ01PNE52NzRHa2Yrb3dmdE5WQkRRbmpGSnFIU3cxN3BYdmhXVzVLWnFlL1E0OU4vVVNUQ0FWV29RWEZJSEJIWFhlM0ZQclVEc3VHRG10Ri9oSEtUSHBla3hoaUFPUEkrU0pxNlM2SEY0STlZV3prQkpUbzQ2aVVNeldwOFBpci9SaWR1THhLWXNTa3NWOHZMbE9RdmhHWDJZbFIwT0JoQmpDK3UvZ0VjdlkwQXBLN1lrNDFOeGpQU1FuV0ZIVEY2NlVyamdldkI4Q3U1YStsMnZZU1JQdHVWRG83M2hoZE1TSG5VWDd0VGpzVlpHeEFsL1dwdGlPSUVRMWduTDI5bVg2L3RSMXRtbGtZajhXNFgrQ1NqV2NVREdZMU5wUy9DN2hTS3FpTUxNL2wyUW1TV1o3M0RkeitnaW84QkNFTllQUTQ2cW5rendYVWJxdkJreGpVUXNXZlpGZ2J1bzNyQWYrd043ak9POTAreW54NFBpM0wrMG5ZTDFTY2hEVWdBUDRnUFYvN0lkMXErMUhTaG11R2tJcVdSUGd5eE1GcVA4SGZqVG5qWHdZNWJRZmJKY3Q2T0l6S2dNSG90Ri9IZTFlZ3NheEhTcUc2d2ZkbVE1eDhOeVRGRnFCY3AyaVNvd0hSM3lrNSszNmhGN3ZYQUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzFfUFJFIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiJjNWVmNTVmZmFkOWE0YjlmYjU4MGFkZWJhZmUwMjZkMCIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOnRydWUsInVwIjp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWV9LCJtYXhNc2dTaXplIjoxMjAwLCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjgsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4LCJ0cmFuc3BvcnRzIjpbInVzYiIsImxpZ2h0bmluZyJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi04fV0sIm1pblBJTkxlbmd0aCI6NCwiZmlybXdhcmVWZXJzaW9uIjozMjg3MDZ9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMC0wNS0xMiIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWXViaUtleSA1Q2kiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDE5MTAxNzAwMyIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4xLjEiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMyJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMC0wNS0xMiJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjAtMDUtMTIifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyJhMmVkOGMzZTNlMWM5NWRmOWQ4OGM1ZjljY2U0YzQ4YmZkMmFjZWVhIiwiNDljYzA0Y2UzMDFiNmQ3NmQ3NzFmZDkwZjk0OGU2YzViNjMwMDJiOCJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyJhMmVkOGMzZTNlMWM5NWRmOWQ4OGM1ZjljY2U0YzQ4YmZkMmFjZWVhIiwiNDljYzA0Y2UzMDFiNmQ3NmQ3NzFmZDkwZjk0OGU2YzViNjMwMDJiOCJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiRmVpdGlhbiBlUGFzcyBGSURPLU5GQyAoRW50ZXJwcmlzZSBQcm9maWxlKSAoQ1RBUDIuMSwgQ1RBUDIuMCwgIn0sImRlc2NyaXB0aW9uIjoiRmVpdGlhbiBlUGFzcyBGSURPLU5GQyAoRW50ZXJwcmlzZSBQcm9maWxlKSAoQ1RBUDIuMSwgQ1RBUDIuMCwgVTJGKSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjJ9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50IiwicmVtb3RlX2hhbmRsZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQjJEQ0NBWCtnQXdJQkFnSVJBTXM4WVhWQm9CTnVYVWpxZkNvWDd5NHdDZ1lJS29aSXpqMEVBd0l3U3pFTE1Ba0dBMVVFQmhNQ1ZWTXhIVEFiQmdOVkJBb01GRVpsYVhScFlXNGdWR1ZqYUc1dmJHOW5hV1Z6TVIwd0d3WURWUVFEREJSR1pXbDBhV0Z1SUVaSlJFOGdSVUVnVW05dmREQWdGdzB5TXpBeE1ERXdNREF3TURCYUdBOHlNRFV5TVRJek1USXpOVGsxT1Zvd1N6RUxNQWtHQTFVRUJoTUNWVk14SFRBYkJnTlZCQW9NRkVabGFYUnBZVzRnVkdWamFHNXZiRzluYVdWek1SMHdHd1lEVlFRRERCUkdaV2wwYVdGdUlFWkpSRThnUlVFZ1VtOXZkREJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCRDJMSEhBUXFZYmRSMVdabHVlcnRNMzByV2hvcllhdldtTVZhNG5kWDlQWnd1UkVwTFE0bTFuRWxxUUtNblJFOC80QytScXdpYXYrbXBJNGt4ZDVlNXVqUWpCQU1CMEdBMVVkRGdRV0JCUzNaWmp5R2xoWjk5TjF2TG9UUFhWVWE0WkVZREFQQmdOVkhSTUJBZjhFQlRBREFRSC9NQTRHQTFVZER3RUIvd1FFQXdJQkJqQUtCZ2dxaGtqT1BRUURBZ05IQURCRUFpQW9EK1I2a29sSVdhTkp6NGh6MDNEM2dlczNHYk1CakFXcGtPVWc5YXlGZ3dJZ2JFdzdBWVN5azY4T3Z4Z1hlemduZFRSVEV1U1dUK2ZkUm5MYUJOc2FUdzA9IiwiTUlJQ1dUQ0NBYnVnQXdJQkFnSVFLYTd1NXUxM3ZZbU82QTYrazJjaGhUQUtCZ2dxaGtqT1BRUURBekJMTVFzd0NRWURWUVFHRXdKVlV6RWRNQnNHQTFVRUNnd1VSbVZwZEdsaGJpQlVaV05vYm05c2IyZHBaWE14SFRBYkJnTlZCQU1NRkVaRlNWUkpRVTRnUmtsRVR5QkZRU0JTYjI5ME1DQVhEVEkxTURFd01UQXdNREF3TUZvWUR6SXhNREF4TWpNeE1qTTFPVFU1V2pCSE1Rc3dDUVlEVlFRR0V3SlZVekVkTUJzR0ExVUVDZ3dVUm1WcGRHbGhiaUJVWldOb2JtOXNiMmRwWlhNeEdUQVhCZ05WQkFNTUVFWkZTVlJKUVU0Z1JVRWdRMEVnTURJd2RqQVFCZ2NxaGtqT1BRSUJCZ1VyZ1FRQUlnTmlBQVMvZFk5V1VpVmhvUjZBN3FHZWNqSGVTdXU5SHdqSGRFdC9pT0djUFBkU3lobHdhakRWRjY4dDl3TU44LzV2bElhZUtPMHJSbkZRbm1HbW11VW91ZXJQMm9QSndLK1R1TGZ3REFhcnFiSUhqV1JzRnVPeWI5ejVmY2tmTWZ6MlFFaWpaakJrTUIwR0ExVWREZ1FXQkJTZFI1QkY3SnlnSk9BRi9LQitMbHlCTVFVQklqQWZCZ05WSFNNRUdEQVdnQlRnUlc4eWZqUGRWb1dXdWUrSzNCcytYdmFVQkRBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQU1BNEdBMVVkRHdFQi93UUVBd0lCQmpBS0JnZ3Foa2pPUFFRREF3T0Jpd0F3Z1ljQ1FnSEJ0d1pEaGFNTlh5d3piNGh2UXg3TE5hUVc2S3h4RE8zNVgwL0JvL09yMEdoR3VvS2lLR24rMnBQZTRMdVNLREg1dzZuNjhFazgzR3E1NHVINkh1QjU5Z0pCVjZNdTJvWmZObVRHMEk4ejRucjBPbEduak8zWUY0NlRpRlVueDBYRGJPcWlzb0NyN1R0RlZsSVhobWluUHc1VDQ0OXlxaGZwdUVCcFJxVm5kdzU5Q1VzPSIsIk1JSUNYekNDQWNHZ0F3SUJBZ0lRWXovV3F1UEd3amh4OWtaR3c4QXp0VEFLQmdncWhrak9QUVFEQkRCTE1Rc3dDUVlEVlFRR0V3SlZVekVkTUJzR0ExVUVDZ3dVUm1WcGRHbGhiaUJVWldOb2JtOXNiMmRwWlhNeEhUQWJCZ05WQkFNTUZFWkZTVlJKUVU0Z1JrbEVUeUJGUVNCU2IyOTBNQ0FYRFRJMU1ERXdNVEF3TURBd01Gb1lEekl4TWpReE1qTXhNak0xT1RVNVdqQkxNUXN3Q1FZRFZRUUdFd0pWVXpFZE1Cc0dBMVVFQ2d3VVJtVnBkR2xoYmlCVVpXTm9ibTlzYjJkcFpYTXhIVEFiQmdOVkJBTU1GRVpGU1ZSSlFVNGdSa2xFVHlCRlFTQlNiMjkwTUlHYk1CQUdCeXFHU000OUFnRUdCU3VCQkFBakE0R0dBQVFBd20vSGJOK2ljbkdsbFBrK2pFNldhQzRQUGdFd1RpRnR2MUhNTlZJUG00TE4ySTQ4MTM1VC9lMDhlT3ltMUN5dzdvTHVBQ3pqOWhwSFo3MS8rUlNHcHpJQm9yZWJ0Rk9TNGgrTXhNcEV5S1IxU1piMWU4Z0FUMUtPbW1yb2R3RWhoUFJpQ2dhNjl5b25acks3eExnWE9qYTZ0K3FHY0lHcE9aS3BhUHpHZFRkU1QxV2pRakJBTUIwR0ExVWREZ1FXQkJUZ1JXOHlmalBkVm9XV3VlK0szQnMrWHZhVUJEQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01BNEdBMVVkRHdFQi93UUVBd0lCQmpBS0JnZ3Foa2pPUFFRREJBT0Jpd0F3Z1ljQ1FnRWt1YzIrRW53SDJwQ3doRE9YelpKUi9XNkNsUTRyTnhxS3pONS9UTk1haEtPVWdtQUQxL1dlYmpkMXlYakhiZ3Z0b2RmTm1mbVdObk12UTlkMTNvU29qUUpCRTBCRThiRlRnV2JLZFUxS2tqV0hQRnZseEt5ZERnZnRMUjVMcmhUZUZWSWZxS0dTZnF6OHVnZ3FFeWRQYXk4dVdNNWVHeTdHN1JReWU1cnlUSjZXeElBPSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFGQUFBQUFVQ0FNQUFBQXRCa3JsQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUJIWnBWRmgwV0UxTU9tTnZiUzVoWkc5aVpTNTRiWEFBQUFBQUFEdy9lSEJoWTJ0bGRDQmlaV2RwYmowaTc3dS9JaUJwWkQwaVZ6Vk5NRTF3UTJWb2FVaDZjbVZUZWs1VVkzcHJZemxrSWo4K0lEeDRPbmh0Y0cxbGRHRWdlRzFzYm5NNmVEMGlZV1J2WW1VNmJuTTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlrRmtiMkpsSUZoTlVDQkRiM0psSURVdU5pMWpNREUwSURjNUxqRTFOamM1Tnl3Z01qQXhOQzh3T0M4eU1DMHdPVG8xTXpvd01pQWdJQ0FnSUNBZ0lqNGdQSEprWmpwU1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJajRnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJZ2VHMXNibk02ZUcxd1BTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGh0Ykc1ek9uQm9iM1J2YzJodmNEMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzl3YUc5MGIzTm9iM0F2TVM0d0x5SWdlRzFzYm5NNmVHMXdUVTA5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5dGJTOGlJSGh0Ykc1ek9uTjBVbVZtUFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdmMxUjVjR1V2VW1WemIzVnlZMlZTWldZaklpQjRiWEE2UTNKbFlYUnZjbFJ2YjJ3OUlrRmtiMkpsSUZCb2IzUnZjMmh2Y0NCRFF5QXlNREUwSUNoTllXTnBiblJ2YzJncElpQjRiWEE2UTNKbFlYUmxSR0YwWlQwaU1qQXhOaTB4TWkwek1GUXhORG96TXpvd09Dc3dPRG93TUNJZ2VHMXdPazF2WkdsbWVVUmhkR1U5SWpJd01UWXRNVEl0TXpCVU1EYzZNekU2TlRrck1EZzZNREFpSUhodGNEcE5aWFJoWkdGMFlVUmhkR1U5SWpJd01UWXRNVEl0TXpCVU1EYzZNekU2TlRrck1EZzZNREFpSUdSak9tWnZjbTFoZEQwaWFXMWhaMlV2Y0c1bklpQndhRzkwYjNOb2IzQTZTR2x6ZEc5eWVUMGlNakF4TmkweE1pMHpNRlF4TlRvek1Eb3lOeXN3T0Rvd01DWWplRGs3NXBhSDVMdTJJT2FjcXVhZ2grbWltQzB4SU9XM3N1YUprK1c4Z0NZamVFRTdJaUI0YlhCTlRUcEpibk4wWVc1alpVbEVQU0o0YlhBdWFXbGtPakpGTnpGQ1JrWkRRelkzUmpFeFJUWTVOemhFUVRsRFFrSTJORFl6Umprd0lpQjRiWEJOVFRwRWIyTjFiV1Z1ZEVsRVBTSjRiWEF1Wkdsa09qSkZOekZDUmtaRVF6WTNSakV4UlRZNU56aEVRVGxEUWtJMk5EWXpSamt3SWo0Z1BIaHRjRTFOT2tSbGNtbDJaV1JHY205dElITjBVbVZtT21sdWMzUmhibU5sU1VROUluaHRjQzVwYVdRNk1rVTNNVUpHUmtGRE5qZEdNVEZGTmprM09FUkJPVU5DUWpZME5qTkdPVEFpSUhOMFVtVm1PbVJ2WTNWdFpXNTBTVVE5SW5odGNDNWthV1E2TWtVM01VSkdSa0pETmpkR01URkZOamszT0VSQk9VTkNRalkwTmpOR09UQWlMejRnUEM5eVpHWTZSR1Z6WTNKcGNIUnBiMjQrSUR3dmNtUm1PbEpFUmo0Z1BDOTRPbmh0Y0cxbGRHRStJRHcvZUhCaFkydGxkQ0JsYm1ROUluSWlQejQ3N0pYRkFBQUFZRkJNVkVYLy8vOEVWcUlYWmF2RzJPb3FjTEcyek9Pa3d0MEJTSnRxbGNYVjR1K2F1dGxXaGJ6azdQVUFNWTlIY3JLanROYnE4ZmVBbDhhQm9zeno5dnBkanNHR3F0RjNuOHVUc05TWnBjNkpzTlQ1K3YweFlLbnU4UGZmNS9MNDhmZy9mcmljekpnWUFBQURBRWxFUVZSNDJrUlVDWmJESUFqRlhaT1kxVGF0TmMzOWJ6a3NTWWMzcjRNRTRmTUJBYUQ2emw4eS85VE9nZXQ4ZDVqZk43OGJ3TS9kRENScFI1MjF6WGZvakhKMDVJSXloQkFVU1ZBT05kR3pCWXQyZjdLRnJma0phQWtIaDlGWmhjRFhIUmtUS285TUxpaEdhYXZJbW5WM3F5RVgwRXByZ3ovNER3VUQ3a0NIUm5kOFFGTjQzR280VVZtRERnemE0dzI3b2l6ZEEyK2NLK3V1VXBqam8yK3h3Yy80Mlc1MHg1TEdZZURCc1IwSFZJeDV4OGlGNjBDYmxiVEVFa0ZyMjdiTkRCVVZTcTFPS1ZQYkU2MmIzRUg4RnFCZzVPT09FdWMydDhaSmlxTU91R3ArY0tqZzd3VkdjZW96cU40cHhnVlBRa2pGWWdiVkpLRFVoRENqWXJhd1A1cTRFVGdDOWZJTVJIdGl0cFFjQ3ZKT0VMY2JNc1FnbmNpUmtsanB5UWp2RzQ0anFCVUVURmlCaTFQRUl5ZWtPenNXK1R5NWNMSG9zNVIrZE1TMUx0U1N4ZjNnUUhjelIyQ0k0Z01OcFc0SVJBMVFNYTZ0SjQrQzZ1SHVHRThtTkRJeUZxZy9PUC9NTVV1ZVM2SXE4UzkwZEFlQkpTRXkvcUtrSytCTnd6OGNZWTRqYjVKNnU0aVdDSTJCMVo1NkxXNWtFYzRoa2RNcHN2VUM1NTg1U1gwUXViY2dOcXlmZ0RGRWNUdCs0MC8wUzVOeDB3YUN3M09La2NPYkE1SW4wQVlwMDFwamp3Mm42MjZVRGp0SHdhMjhpSHVUS3F0cnYrcmVXNDFOWjZpR2xyN3V1TEpDZmtGdGN0Y0cwNHNnbTFlTlMrWmFEbnBhVEVyR295WDVKSzJpTXo4eHMwbk93V0djUERONDlxYUNkNGJ6Sm96RFptL2FCSytFb3pMdytYaE5CaVl3SGYwc2lPdTFYUGtHL3pLd3ZxWUtjZlN3REVjSC9vVWUwN2VzL1dROHJJeWcyRE9Yajh0amtaZHVEQi9iOGh6RGxsTU1PQ1M1QkVuZDUzNGY4dGkzVVpjNGtNczN4THlhZk1Tc0poZEc4WFBxak5rNXRBZ08yNWZlS0NoblZkRGovSjBGTWtPc1UveE1CdjB3RmhZZUVHZlZIMTNmdURVMHlERkxhNGZjN1JuV0hCZnVURlYydEVtTndhZGM3YWMzVVkyamZCbDdIVDM2ZmUzNGlRTzVtTkNGRkJXMDdLalBncWhPTFUwMXZaOFB1ZVoySkNsRlpOOGprVXM2OXVrYTllUHA2K0VmTDRBRjUrTnl3U2Jpckh0Y0I4TWwvZ2t3QUVqa0s2NEtqSFBlQUFBQUFFbEZUa1N1UW1DQyJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTAzLTAzIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiZVBhc3MgRklETy1ORkMgU2VyaWVzIChFbnRlcnByaXNlIFByb2ZpbGUpIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVMkYxMDAwMjAyNTAzMDMwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wMy0wMyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTA0LTA4In0seyJhYWd1aWQiOiIyMTk0YjQyOC05Mzk3LTQwNDYtOGYzOS0wMDdhMTYwNWE0ODIiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjIxOTRiNDI4LTkzOTctNDA0Ni04ZjM5LTAwN2ExNjA1YTQ4MiIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJJRFByaW1lIDkzMSBGaWRvIn0sImRlc2NyaXB0aW9uIjoiSURQcmltZSA5MzEgRmlkbyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjAsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjowLCJibG9ja1Nsb3dkb3duIjowfX0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDNlRDQ0FkR2dBd0lCQWdJSkFKYlR5cnUxWC9JUE1BMEdDU3FHU0liM0RRRUJDd1VBTUNNeElUQWZCZ05WQkFNTUdFZGxiV0ZzZEc4Z1RYVnNkR2xCY0hBZ1JrbEVUeUJEUVRBZUZ3MHhPREEyTVRJeE5EUTFOVEJhRncweU9EQTJNRGt4TkRRMU5UQmFNQ014SVRBZkJnTlZCQU1NR0VkbGJXRnNkRzhnVFhWc2RHbEJjSEFnUmtsRVR5QkRRVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNVmpLSFdwYkQ3VFNsTXhvY2pUbDZuSWY3eDMyUG1zUTl6R3VMR0dxQTBVUVpvSXEzWEx6TDZMWVV2SjVBNWcwdXlGR2xsSEVmR0FLckVhQ1E4RlZ2UFMvVWgwRnlmeldoUkF6aVRTaWpqTUlJVmpqalV2OW05dkZtY1hTY2dIaWc3T2R6ODg1OFYwa3JOSDk5cUdtM3dqZ2FPZXJUV210K2pYQ1VmbjAxSWtUUHd4RzJIbGdFZDQ1ak5MU1Y3Vm9vbCtLZThFMmtpNGxFa1RlSHpib3VsUjVHVWJwM25NaTdFNDdWTVFhM2JOd256V0Jic2FCU1NRaExrM201SGFLaGh4YTZ3SkRLNDdOaU1Da0NrZElIdVdTUUxWQWZtODVVQU9OdEVPUHdpME91SzNxYmU4eUtPRkdmMEtoQjVNTWVBeW03TVYvTTRXMGE0OW9nUEQ5cE1DQXdFQUFhTWdNQjR3REFZRFZSMFRCQVV3QXdFQi96QU9CZ05WSFE4QkFmOEVCQU1DQW9Rd0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFKV3o1eExNazVXTlliQWI2eU94RUNCb1oyV2VCL3FsNFZKM08vMy90TnN4T1luekxlV281NDB6UWg5ckFtYXh6N2V1bUJsc2tNcTR5R1BTTlhCOXljV0dIZ2tjQ2VTek4yd3Y4Q0l6REJzMm9CWmpUTms2NUxCWkRzc1RPQnRNVy8rdVRGSFFmYnVPM0lTTGhJMERYZlJFaTlORE0zamZrMTF4SGNzZmgyUk1WK1FkTmZ3VmFaWnJDcStvdUcrRXZrdjdLcXErb3l1MFZGTS90ejY4VEdsNnlsaFBGUjFxaDl3dHRwVmpBT09DRVFDTHFQMmRQMjhsd1lCeUNxSFFxVkh3YnVqdi9MWmpabktXM0xZbmRaaXhQUFNSQ0pzc0REd0p2aC9mNm5UeGc5WkUrL0pjWXJlNUNhSThuelZIYVNPQ2pOSjdGelVMRzY0SmlXT3ZRNTA9IiwiTUlJRGRUQ0NBbDJnQXdJQkFnSUpBSUNVVHZrZ3RqNUNNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1GRXhDekFKQmdOVkJBWVRBa1pTTVF3d0NnWURWUVFLREFORVNWTXhDekFKQmdOVkJBc01Ba05UTVNjd0pRWURWUVFEREI1SFpXMWhiSFJ2SUUxMWJIUnBRWEJ3SUVaSlJFOGdVM1ZpWTJFZ1EwRXdIaGNOTWpBd056QTNNVFF6TnpFNFdoY05NekF3TnpBMU1UUXpOekU0V2pCUk1Rc3dDUVlEVlFRR0V3SkdVakVNTUFvR0ExVUVDZ3dEUkVsVE1Rc3dDUVlEVlFRTERBSkRVekVuTUNVR0ExVUVBd3dlUjJWdFlXeDBieUJOZFd4MGFVRndjQ0JHU1VSUElGTjFZbU5oSUVOQk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBdkFLT2VxQzUvcDBEMWlzQ1lLUUpsVlVPckI2STdETG9jdW5FL1JtOGR1R1RieXhRaHQzQ2JGVlR2M04yTHAyZmJqeGxJKzNzT1NHazMzRlRZa1RxeGNkSklySjdTc2tCY1VTTnJmS09hUVQvNktRY1A0Q203Vis2NTVUcStUV3h5eFdRaER5Z3QxNXFvUDdNdUs2YlQ5U3dwQ2pwZktoYU1TbXlRYU1vVWNSQWJMcWR6QkNhYzBoekIrWmUrZ3FKbG5XVjlVYVNJMnJGc1Z1SDRaRTBjUk8rTU9wYUxnTS9zMjQ4bkdHSHAyMmV3U1FmYm5QYUJiYjhpcXlBUCtjdTUyR0xzVXBLUkplYkUrUjYrUE1ROUpDZFdlUVpSM0RrZlNpZGt2M21jYjRqcTFpSXRhK01xS2hSbndyZlhoOTExS1dMbllBbDlFTkNoTFgwYzZTajFRSURBUUFCbzFBd1RqQWRCZ05WSFE0RUZnUVVXTHZoUkJVUG44dUxJZjY4K2d2L05aSXdHU0l3SHdZRFZSMGpCQmd3Rm9BVVdMdmhSQlVQbjh1TElmNjgrZ3YvTlpJd0dTSXdEQVlEVlIwVEJBVXdBd0VCL3pBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQUZMckRoYWVnZUtIeFlqSDNFUDN2VUJLaG56TTIwNkFTeGdlWUNPMkVjOXBPbFlKYWVxRkUrc1VhbVVWL3B3akRscU5hU2dGZ3k3VHdlWWt2T21NbjRxU2NzSHF2SjN6R09BaWFmd2FoMXZVSGZDbFhSOCtheE8yaUdPVUYwSktyWjlZWWpiQWE1LzRIQ2x2N2pGUE9kTVdUT1F5bmdvaUhBczNqa3VZanBDTEZsQjRWT2kzZDF3akExcG5UZEJLa0FiN3Q4blR2dysvWGJGdmNRYTczVkg3c2p2b0JxRDNmZE1mUmN1VnE0cVVadFpUNmNHYWdUSEQ2MVR0cWg5b01DWlhjRGJSMVBHWm5OYnF5Y3NXUERJSzBucG1LMy8zbGZWOGMrWnNyeTZlMTcwbWZKTVpwN084bTZDU3o2L1ZMSyt5REpkNzg0MXdwbWVLVGY2SW5aQT09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQVF3QUFBQWdDQVlBQUFEbmxVWnFBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRW5RQUFCSjBBZDVtSDNnQUFBQVpkRVZZZEZOdlpuUjNZWEpsQUhCaGFXNTBMbTVsZENBMExqQXVNakh4SUdtVkFBQUsxRWxFUVZSNFh1MWREWEFjWlJtK05PQWZLb2c2V08wUWNyZVgzTzcxUjQxb0hkU3FxREFPZzMrY1lFWEJvbFhSVEVuMjIwdGFLVGM2NG1nQnF6QmlFVVZwQmRxaXd3aHFTZElTMnVwWVNndlJ0cFRTY2tsald6SGFnanBTUmRyNHZMdHZqcnZrMjd2ZHZkMUxqbjdQekROM3QvZCs3L3QrZjgvKzc4YUswTkRhYXIycU9kWFpvcVd5SDlSMGEwRmN0NjdXZEhHVFpvalZDY1BxU2VqVzFvUXVIc095L2VCVHNEbU0vNTRaVDlqK0xXR0lnN0RmQi9zQmNEUHNmNFhmUDhYM2IydUcxWkhRelU4bVV1S2R5V1RIbTVxYWNpL2pIQUtCeWlmMGJCcitMd2FYSVBZUGtNZHFmTDhYZFdwbHMxQUEzMS9Rak93OThMOFM5YjhCWElSMituRGM2RG96bHNrMHNsbmtRTXhrUEdYTzlFSnRWbllHRjRzVXlWbmQ4VVRhZXA4YncrNkxha0JqNWl6ZGJOSlMxcnhFV255V3hnMzZFbVBkV29QUERlamY3ZUFUR01zSGFEelR1QzZoYmowTi9wWG1Bc3J1Z3MwV0xQOE51QkpqWkptV0VsY2wwOW1QSjFKbVcwdEw1K3VpSEJ1R2tYc2xqWDg3bmk0RXpWbms5QXZrc1FuNTdFU2RockI4Qk11UGpPV1AvLzRPSHNSL2U3RDhZZFRsZnRSaEZmZ2RMRzlIdTF3QWZ6cjU1akFPa2lRS2h2VmJHQjZDMC8vaSsyaU5lUng4RmdudlJmeGZhaW56U2s3TkUwaUlVUGJmNDN3V21OVE5kN0JwS0VBN0xaZkZBWTl6cDN5WlRTTURpUVZpL1UrU2c1UVlBSWZPbUcyZXdzVWpBL3JoVzdMNEJlcm1qOWgwVW9CMk9CK1RaVFc0Qi9rOE95Ry95Q2lPb1cxSVlINkg4WFB6OUxiY0t6aWxRR2hwTVp2aFp5SEd3RzNnNDJCazg1WjhvOTBHOFgwTmlTczFJdjJRR2s4S2RXc3p0NHNuSVA4UnFSOW1EUVhESWRaU2JCb1owSWwzUzJPWFpYWXBGNDhNVTE0d25LMWJlVzQxcEwzRkVRQ0psUFZXdERHMmZ1eVZyTlIzdEJUZFNqQjhZcklGb3lWdG5vMk9DekJneEROQkI2cFhLTUh3eGlEOWdLM0tjNlBja3ZCR0pSaStNY21DMFlENGZkSzRYb2g5Vy9ZVENaUmdlS052d2Noa0d0RzJlMlcrYWtzbEdMNHhtWUpCYXhscFRJK2tOUlFkbUdSM29VTUpoamY2RlF3NmNDcnpVM3RDTUxEV3VRc2QzUitBdzNLbkJRNUt5bmpoamR4T25uRGlDRVp1R2pyc1lXbE1KdHBpV1VLM0JtVC9GZkV1ZGhnNlVQZTZGZ3owYlI2ZmE2TW1uWTNrbER3aGFZakxVVTZlczI3dDBnenptN1ZnVXU5NkQ2ZmtIeENhNjJVVkdDTXE4ZzAyalJRbmltQm9SdllpYVR3bTJudGZXOXZDazdXMGRZSHMvd0oxNjNrNmVNWnVRMFc5Q3diRzlLMXNPcVdBdklVMFg1dGlEWnROYlNqQmNHRUVndEhXZHN2SjhFMm5BdVV4aWJwNWhXTTkyb0RmMnliOFgwS3gzckVORjBvd29nSG0waEpwdmphVllQakNpU0FZaWJUMWVXa3NKaWJDay9QbTVVNWljOHJ4UXBsZE1SUHA3SGxzSGhxVVlFUURKUmdoNHNVdUdIU1JEK3BJVitUSjR4SDFMRzlkakNIVGlNbFI0VmlHMkU3SFJiaEFLRkNDRVEyVVlJU0lGN3Rnb0oyejBqaE10SE9lamwyd2VRRlkvbEdaZlNuRmZEWVBCVW93b2tIQ01CZEw4N1dwQk1NWEtncUdJUzV2VHB0bmgwWFUrMDVabkFKREZBekQ2RGdkL3A2V3htSEdEZkZGTmgrSDBRYjB3YU95TW1PRStPVU5JL2NTTGxBMTZsMHcwRjY3NDdxNHBScEdjZHFhN2t1UjVVdEVINDVnRG13S2kvRFpqOC83SUVTMzRyT3plYWFZeldsVWgzb1JqSm96Uk1Hb09BRU5hMGkyZFRHR2VFcDhURkptUER2WXZHclV1MkNFUWJxaGtzT0ZCc3lsaTJXeGFzVGo2TmQxMnBzWHY1N1RDUVlsR0M0TVNUQmFXNjAzb28xZGI2cXpxVnRmWW5NNTZBcEJ3OW94b1Z3Uk1ZbEdOSzM5MVZ5aUtpakJpRVl3bWxQZExiSll0U1RhN3FIaUErdStvUVREaFNFSkJ0cHZoZFQvR0hXeHY5eld4UmkwdFBpRXRId0p4YlZzWGhXVVlFUWpHSFJ3R3VPaDBnVjVrVE9lTWkvaGhQeERDWVlMUXhDTXMxcXRWZ3p1OHJldnB5eVBqd0h3c3BWaC9TdVZXaktkQ3dTR0VveW9CQU81cDgzM29wK2VrOFdzRmRGK3dhOFNWb0xod2hBRUEzN1dUUEJiUkhUY0FleEd2SlROSGZRTU5jZjZCcytQOWVibnhmcWVQSldYMmtDWnpIZ2ZFeGpDR1FJbEdORUpCc0YrRUpFdWRzdmkxb2JpVDV5S2Y5U05ZT2pXWmpUeWZhSFJ1ZDlBSG90WXBXQTROeHFKWTFMZlROVDVLMndlaTYwZk1pQVVENEtqQmZibWo4YjY4c3RqMnc3YUQycWhmVS8weHk2WnJ6SFMycXVscFRObCt3eUl1aGNNakJVNjYxUU5tMmN1UG9QRFJZVFJCanBiUjJNQU9WOUhaek9ROTgvdy9mWXdpUEh0ZmplMGJ2MkZrL0NQZWhHTU9yc09vL0x0NjdvMVhEZ1Z1aUUvQndMeGp4S3hLT1hHMk02ZHRpMzZ3OE9SZG5HUDdUY2drRnVkQzhiVXZBNmpsa2lrTzgrVHRnMklNWFNZemZ4RENZWUxxeEFNTDdldm83N3R0bkYvLzBuWWt0Z2hFWWx4SExxYXpKMnRqRXFiczlpeVNXWG4ydjREUUFsRy9hT3NZQmpXQVRiekR5VVlMZ3dzR0xscEtMdFY2cE5KSFZaNFlITGYvbmZKQldJQ2gySGRRRVhpNmV3bE1yOGxkSjVIWXR2N2hSS00ra2M1d1VENzdHVXovMUNDNGNLQWd1SHA5R2RLWE1YbUVJeDh1MFFjWFBqWWErMHltVXdqMnV0eHFlOGlvbzRYMnZZK29RU2ovbEZobCtTUGJPWWZTakJjR0VBdzZIb0s3QTZVbmNpbzU4R21wc3RlZUIxRDc5Qlg1ZUlnNGYzRHAzT3BHT0xNbC9rZnh4Mnh6RnJmajhWWGdsSC9xTEJMc29YTi9FTUpoZ3NEQ0VZaVZmNzJkV2JwSmR3OSs4NlJpc040OWc3dWgzVmhGNFBGNlFtSi8xTHExZ0l1NGhtVkJBTVQ5dTd4NzB3SmcvVFlmVTZoTEpSZ1ZFYUZYWklIMk13L2xHQzQwS2Rneko1dG5nS2ZCNlMrbVBqLzBJd1pIUy9uSWc1R1J4c2hCZ05Ta1NqbFlpNVJBUHJ1VWxtY1ltSnkvWG5HM0hFeEs2RGlGa1pFeEJqWXlDbVVSU1hCUUR1UG9BNWJvMmJTeUw2ZFUvSUUzaXFVbmdZTm0yZ0QxN04wK0c4VnArUWZTakJjNkZNdzRycGxTZjBVRVRGTk5pOUZ6L0RNV0cvK2lFUWtIUGJtTjhTMmJadDQrYmh6ajBuNUozaUJkRnMxbC9BRTFMMnVCYU5XVE9yaUE1eVNKeUR2NzhyODFKeWVyeTZXUUFtR0MzMElSdE9jM0dsb3A4TlNQMlBVeFZObDEvVHI4cTJ4dnZ4NjhQa2lzZmduZmw4ZjZ4OTBmUVVsNG41R0dxK1l1amh5NXF6dTEzQ1JpbENDNFkxMUtSajBXa2d0Ri93bVJTVVlMdlFoR0Y0bUdBYUxZUFB5MkRnMFBkWXo5SDdzcHN5TjlReFVmQzBpWGZ5RlB0b25pMWxNR3F4Y3BDS1VZSGhqM1FrR3hDS3BXKy9tZElKQkNZWUxQUW9HdllRYTl1WGY3MWxwNjZKS2xIdDgvUXNVUiswWFRYdUFFZ3h2ckEvQm9MZnIyUWZIci9HemxlbUtLU01ZdW5rSFRTekVsTDQrc0ZhQ2dmbytCKzdXak96bjJMUXNuTmNHaUQxVVR1YlBvZG5GNXBHQXpwZ2d2dXRXQnVyNkg3dE91cmlVaTVRRlhTV0tNdC9IQk41RWF5WFVyK3c5TWNFcGp2R0s0dmZJYndWZHc4SXBsQVdOQlpTNUR2V2hONVhuNGVkb3FkOG9pRnl4MndrK2l1LzBJdWlsOUt3VFRza1Q0bWx4RHRyelJtNVhqUFVvMnBYZTZHNDlnanh2dytmQ2hOR2hjZmh3UUM5amFUTEVHOXhvR0ZlV3ZpWStVdVNtMlErY29YZHk2TllpTk93eVZQckhHQmgzSm96dVVDc2VUNW1YUWZGL2poZy94T2ZYTmQyOGdqbzBhSDNwTEFsTk5HZHRMNVlpNTV2UWdiZWo0KzZnLzlnc01xQU9IM0hhU2Z3RWJYY0R2bWVUaHZVcFRlOTZ5NFF6TTc2UW05WTBaOUZwZFBjbTZ2TnBzQXQ5c3R4cE8rdlg0RWJFMjBvVENjc0dTb25sK0IvZjZXYS9WY1Y1MGFTUHg3dE9EZUVCeGcxMHh5K2Rrb1hnZkFneEZpRGUxOUFPMzBNL3JFUU85eUxtQTRpL0JiKzNsK2Jua1BJSE40UHJVTCsxK0Z3QjIydmhveDFpZjFHODFYcGJ2QTI1WmpLK3IybHhSMjRhMWQ4UlB6RWZ1d29XY3NFV2lKTXpZaitJM3crVnRLc2hIZ0gvQVBaU25xalR6Zmk4eGg2N3VuVXVQZHJBMjhOeFlySC9BejN0STRqNStUT0xBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiXSwiZXh0ZW5zaW9ucyI6WyJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiIyMTk0YjQyODkzOTc0MDQ2OGYzOTAwN2ExNjA1YTQ4MiIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOnRydWUsInVwIjp0cnVlfSwicGluVXZBdXRoUHJvdG9jb2xzIjpbMV0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN31dfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjItMDEtMDYiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJJRFByaW1lIDkzMSBGaWRvIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyMjAxMDYwMDIiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMi0wMS0wNiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI0LTA2LTE4In0seyJhYWd1aWQiOiIzOWE1NjQ3ZS0xODUzLTQ0NmMtYTFmNi1hNzliYWU5ZjViYzciLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjM5YTU2NDdlLTE4NTMtNDQ2Yy1hMWY2LWE3OWJhZTlmNWJjNyIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJJRG1lbG9uIEtleSJ9LCJkZXNjcmlwdGlvbiI6IklEbWVsb24gS2V5IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoidm9pY2VwcmludF9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZhY2VwcmludF9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImxvY2F0aW9uX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZXllcHJpbnRfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXR0ZXJuX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiaGFuZHByaW50X2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUJ5ekNDQVhHZ0F3SUJBZ0lKQU5tTU5LNmpWcHV1TUFvR0NDcUdTTTQ5QkFNQ01FRXhKREFpQmdOVkJBb01HMVpoYm1OdmMzbHpJRVJoZEdFZ1UyVmpkWEpwZEhrZ1NXNWpMakVaTUJjR0ExVUVBd3dRVm1GdVkyOXplWE1nVW05dmRDQkRRVEFnRncweU1qRXlNVFF4T0RReE1EbGFHQTh5TURjeU1USXdNVEU0TkRFd09Wb3dRVEVrTUNJR0ExVUVDZ3diVm1GdVkyOXplWE1nUkdGMFlTQlRaV04xY21sMGVTQkpibU11TVJrd0Z3WURWUVFEREJCV1lXNWpiM041Y3lCU2IyOTBJRU5CTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFYWxZZ0VvcG5LU2NBbStkOWYxWHBHQjN6YmtaQ0QzaFpFS3V4VGNscEJZbGo0eXBOUmcwZ01TYTdnZUJnZDZuY2s1MFlhVmhkeTc1dUljMndiV1g4dDZOUU1FNHdIUVlEVlIwT0JCWUVGT3h5ZjBjRHM4WWwrVm5XU1oxdVlKQUtrRmVWTUI4R0ExVWRJd1FZTUJhQUZPeHlmMGNEczhZbCtWbldTWjF1WUpBS2tGZVZNQXdHQTFVZEV3UUZNQU1CQWY4d0NnWUlLb1pJemowRUF3SURTQUF3UlFJaEFPMlh1aVJEWHh5L1VrV2hzdVpRWU5VWGVPajA4QWVUV0FEQXFYdmNBMzBoQWlCaTJjZEdkNjFQTndIRFRZalhQZW5QY0Q4UzByRlREbmNOV2ZzM0UvV0RYQT09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQWZRQUFBSDBDQVlBQUFETDF0K0tBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFCUDZTVVJCVkhnQjdkM2RibHpYZFFmd2RTakpMcG8yb05NRy9ValIwRVZTOUs3cUUwUUM4b2xldExuTFhhMFhxSzBuaVB3RWNaNGdNbEFFdmJRdmlsNEZvVitncFlNVU5md2hqMng5bUtFc01Zb2xTNXc1NS9Sc3lwUEtNa25Oa0ROejlqbm45d05zVVFSOVlVdm1YMnZ2dGRhT0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRmlXSWlBamQzNzBvNDIxMDZkZktPcjRWaDNGUmtTOUVTeEFNWHIwWTczYi9FKy8rK2pEZWhURjJtNWQxN3RWRkZlamFuNitWdTNHTTgrTW5ydDhlVGVBVGhIb1pPSE8yYi9iaUQvNjBzK0t2L2liYzhVenp3WXRLNHJkRlBqTkg2eWEwQzlHZGZOWE5hbmVqRDg0dlNYc0lVOENuZGFsTUsrait1VzBHaS9XL3pTS3IvNVZDUFpNTldGZjFQVlc4OEZXV2RWdlJGR05udnY1ejdjQ2FKVkFwM1czei83dCt3Y2RyUXYyRG5rODVNdjZkWlU4cko1QXAxVjN6bjdqWEhOWC9zdWp2a2F3ZDlaV0VjVm1DdmpuL3YzZk5nTllLb0ZPcSs2Yy9lYlA2b2dYWnZsYXdkNXR6VGViellpMXkrV1p0VGVhNm4wVXdFSUpkRnAxKyt3My83djU0ZXc4LzR4Zzc0V3RLTll1VjZmWFhoZnVzQmdDblZZMWdYNm4rV0U5amtHdzk0UEtIUlpEb05PcUp0RHJPQ0hCM2crVHlTVGVmK2ZLNVozYmQxLzl3ZWl0elFEbUl0QnAxU0lDZlVxd2QxTUs4bzl1ZkJUYk43ZWpuSlNmZmJiWUxLSysvTzNSMjY4R01CT0JUcXRPY3VSK0dNSGVIU25JcjM5NC9iRWcvNEt0T3VvTDN4MjlZODRkbmtLZzA2ckRadEFYUWJEbjYrNXY3OGFWZDY3RTNzTzltYjQrVmV1bll2enkrZEZvRk1DQkJEcXRXbWFnVHduMmZLUWd2LzdCOWZqZDNkL0YvT3JkTXVxWHZ6OTY5NVVBdmtDZzA2cFZCUHFVWUcvUHlZTDg4NXB2V3FOVHNYZGV0UTZmSjlCcDFTb0RmVXF3cjg3REJ3L2pnOUVIY2Vmak83Rm9WY1RMM3h1OWZTbUFmUUtkVnJVUjZMLzN4OC9GMnAvOGVSUmYrbkt3V0tselBWWGtxWE45dWVyTjB6RytvRm9IZ1U3TFdnMzBxU2JRMTc3Nk5jRytBQWVQb0MxWE9vSWZSM1hoQjZOM053TUdUS0RUcWl3Q2ZVcXdIMXNiUWY0a1IvQU1uVUNuVlZrRitwUmduOHZPOXM3K1BYbGJRZjY0ejhiYkxqWkg4SjV1WlhBRU9xM0tNdENuQlB1UjVwMGxYeFZkOEF5VlFLZFZXUWY2VkFyMnIveFpGRi8rU3JEWUViUmxFZW9Na1VDblZaMEk5S2t6ejBiUlZPeHJ6MzAxaHFnTFFmNTU5VzRkY2Q3YVdJWkNvTk9xVGdYNjFNQ0NQYzJTcDMzcnQzNXpLN3FuM3EyaXV2QzkwWHV2QmZTY1FLZFZuUXowcVo0SCsrcG15WmV2aVBLRmI0L2U4M0lidlNiUWFWV25BMzJxWjhHZXd3amFNZ2gxK2s2ZzA2cGVCUHBVeDRPOXIwSCt1RWxVNXkyZ29hOEVPcTNxVmFCUGRURFkweXg1dWlmUGJRUnQ4ZXJkMHpIK0I5M3Y5SkZBcDFXOURQU3BEZ1I3Nmx5Lyt2N1YrUFRlcHpFVVJ0cm9xOU1CTE1mNFlkUTNya1M1Y3oyN1lPL2VDTnJpMUJFYmt6anpzK2JEOHdFOW9rS25WYjJ1MEorVVFjVSs1Q0Qvb3ZxVjc0emV1UmpRRXdLZFZnMHEwS2RhQ1BadXo1SXZUeFhsRDgybzB4Y0NuVllOTXRDblZoRHNRK2hjUHhsTmN2U0hPM1JveXhMdjJBWDVySXAxOStuMGhRcWRWZzI2UW4vU2dpcjJheDljRStSektxTzYrUDNSdTY4RWRKaEFwMVVDL1FESERQYmh6Skl2ZzZOM3VzK1JPK1JtenFONG5ldUw0T2lkN2xPaDB5b1YrZ3crcTlpTEwzMDVpbWVlL2YybkJmbmlPWHFueXdRNnJSTG9jMGpCM2xUckQ1Nzk0N2g2VlpBdngvN1IrL1BOMGZ0dVFNZXNCZEFONlNqK045ZGk4ODFmQ2ZPbDJUOTYvM0ZBQndsMDZKRDNIcFN4VTVaeHY2NkNaU2xlK3MrTmI1d0w2QmlCRGgzeXEzdVQvUiszUzUzc3kzUTZDbFU2blNQUW9TT3VQaXgzNzFYMS9zY1A2anB1VjVOZ1dZcHpxblM2UnFCRFI3ejlhYm4rK005dmxaT29vZzZXUTVWTzF3aDA2SUM3WlRYYUhuLyszcnhzd255blZLVXZqeXFkYmhIbzBBRy92bGR1SFBUNWRPeitzRmFsTDRzcW5TNFI2SkM1VDhvNnJqdzhmQy83Unhya2xraVZUbmNJZE1qY3RMUDlNR21FN1Y1VldvU3lKS3AwdWtLZ1E4YjJxL085NnFsaGZiTWNyMnVRV3haVk90MGcwQ0ZqTi9lYXlydXUxNS8yZGVNd3hyWk1xblM2UUtCRHhuNTl2M3hxbUUvZExzc1lhNUJia3VMY0x6YzJadjYxZ0RZSWRNaFVXdk02WFNReml6VEc5cHRxN0M1OVNTYnh6SXNCR1JQb2tLbW5OY01kNUc1VnJ0dnp2aXoxU3dFWkUraVFvY2ZYdk01cnB4d0h5MUNzYTQ0alp3SWRNdlRrbXRkNXBBcGRnOXh5YUk0alp3SWRNbk43VXNXVGExN25aYy83MHB6VkhFZXVCRHBrNXEzN1paeFVhcEJyUWwyRDNNSVY2K000OHk4QkdSTG9rSkduclhtZHg4ZlZaTjBZMitJVkVmOGNrQ0dCRGhrNVRtZjdVVzdZODc0TWp0M0pra0NIVEN5eU9wOUtEWExHMkJhdFdDL2ptWDhLeUl4QWgweDh1TGZZTUorNk1kbXYwdDJuTDFBVjlibUF6QWgweU1RaW11RU9rdmE4MzZyR2pvZ1h5RDA2T1JMb2tJRjUxN3pPSysxNU44YTJTTVg2ZjJ4ODgyeEFSZ1E2WkdEUnpYQlBTbU5zMjZVOTc0dDBKdUpiQVJrUjZOQ3laVmZuVTd2MnZDOVljUzRnSXdJZFduYmx3WEx1emc5aXovdmlGQnJqeUl4QWh4WXRZczNyUEZLRjNsVHF3U0lVNjc5NC92bXZCMlJDb0VPTGx0WFpmcFQwWnJvR3VjV282elBuQWpJaDBLRWx5MWdrTTR1eXJ0ZTl4cllZZGRRNjNjbUdRSWVXTEx1ei9TaHBqTTJlOTVPck5jYVJFWUVPTFdpck9wOUtZMnoydko5Y1lhODdHUkhvMElKVmRyWWZ4cDczeGJnZlp6WUNNaURRb1FYdlpSRG9TVk9sV3paelFzOUc4ZmNCR1JEb3NHS3JXaVF6aTdFR3VSUFRHRWN1QkRxc1dKdk5jQWU1VlU3c2VUOFpnVTRXQkRxc1VFN1YrVlJxa05zcFZla25JTkRKZ2tDSEZjcWhHZTRnNmRqOVFWMjVUeitXWWwybk96a1E2TEFpMjN1clhmTTZyKzNTbStuSHBkT2RIQWgwV0pGY090c1BrMGJZN2xXbEt2MFlkTHFUQTRFT0s5RDJJcGxaM1d5cWRBMXk4MnYraTIwRXRFeWd3d3JrMXRsK21IRVRUY2JZNWxkSHZSSFFNb0VPUzlhVjZuektudmZqS0hTNjB6cUJEa3VXYTJmN1lkSVlXM3BpTlppSGhrSmFKOUJoeVhKdmhqdkkzYXBjdCtkOWRvVTdkRElnMEdHSmNsd2tNNnVkY2h6TTdoZlBQLy8xZ0JZSmRGaWlyalRESFNSVjZCcmtabGZXcHpZQ1dpVFFZVW02WEoxUDJmTSt1N1ZZMndob2tVQ0hKZWxhTTl4QlVvTmNFK29hNUdiUS9NRkhZeHl0RXVpd0JMbXZlWjNIeDlWazNSamIweFZSQ0hSYUpkQmhDYnJZMlg2VUcrVmVjRFRMWldpYlFJY0Y2OW9pbVZta0JqbGpiSkEzZ1E0TDF1WE85cVBjbU94WDZlN1REMkVXbmJZSmRGaWdQbGJuVTJuUCs2M0tFNnVRSzRFT0M5U0h6dmFqcEQzdnh0Z09Wa2V4RWRBaWdRNEwxTGRtdUNlbE1iYnQwcDUzeUpGQWh3WHB3eUtaV2V6YTh3NVpFdWl3SUgxdGhqdUlQZTlmcENtT3RnbDBXSUNoVk9kVHFVSnZLdlVBOGlIUVlRSDYzZ3gza1BSbXVnWTV5SWRBaHhQcTA1clhlWlIxdmU0MU5zaUhRSWNUNm50bisxSFNHSnM5NzVBSGdRNG4wT2RGTXJOSVkyejJ2RU1lQkRxY3dKQTYydzlqenp2a1FhRERNUTI5T245Y1U2VmJOZ010RStod1RHOTlxanFmR211UWc5WUpkRGltRHg4NlpuN2NyWEppenp1MFNLRERNUXh0a2N3c1VvUGNUam5rS3IxMjdVQ3JCRG9jZzJhNGc2Vmo5d2QxTmNoZ3E2TVE2TFJLb01PY1ZPZEgyeTY5bVE1dEVPZ3dKODF3UjBzamJQZXFjb2pWcWdxZFZnbDBtRU5hODNwbm9qcC9tcHRObFQ2MEJybkNIVG90RStnd2h5R3ZlWjNIdUFselkyeXdXZ0lkWm1TUnpIeUd0dWU5K1RjZEJiUklvTU9NZExiUEo0MnhwU2RXQTFnSmdRNHpVSjBmejkycVhCL0tudmNpaWxGQWl3UTZ6RUJuKy9IdGxPTVlnbHBUSEMwVDZEQURhMTZQTDFYb1EyaVFLMkp0Rk5BaWdRNVBZWkhNeVExaHozc2RnNXk5SnlNQ0haNUNNOXpKcFFhNUp0UjdIWGpqS0g0YjBDS0JEa2RRblMvT3g5Vmt2YzlqYkg4WTQxRkFpd1E2SEVGMXZsZzN5cjNvcDNyMy9Hamt5SjFXQ1hRNFJGcnpxanBmck5RZzE4Y3h0dHJJR2hrUTZIQ0kveldxdGhRM0p2dFZlcStxV1h2Y3lZRkFod09rUlRMWDlveXFMVVBhODM2cjZ0MFRxMXNCTFJQb2NBQjM1OHVWOXJ6M2FZek5IbmR5SU5EaENkYThMbDhhWTlzdSs3UG4zVklaY2lEUTRRbXE4OVhZN2RHZTk3Mm9yZ2EwVEtERFkvYnFwbkljdXp0ZmxiN3NlZi9IMFR2dTBHbWRRSWZIcEozdFJ0VldKMVhvVGFVZVhWWnJpQ01UQWgwZTQ3aDk5ZEtiNlIxdmtCc0ZaRUNndzJlc2VXMUhXZGZyWFg2TnJWQ2hrd21CRHA5Um5iY25qYkYxZDg5N0lkREpna0NIc09hMWJXbU1yYXQ3M25XNGt3dUJEbzFmM1ZlZHQ2MmJlOTdyWFIzdTVFS2dNM2hwa1l4UnRUdzBWWHJYbHMwSWM3SWgwQms4ZCtmNUdIZXZRVTZna3cyQnpxQlo4NXFmVytXa1EzdmUxellETWlIUUdUVFZlWDVTZzl4TzJZMWZsOVB4OEkyQVRBaDBCc3ZkZWI3U3NmdUR1c3I2UGoxdGlEcy9HbmtIbld3SWRBWXJoYmxSdFh4dGw3bS9tVjY3UHljckFwM0JjdHlldHpUQ2RxOHFzNjJBaTFoN0xTQWpBcDFCc3VhMUcyNDJWWHF1RFhLVGVQaG1RRVlFT29Pa091K0djUlBtT1k2eHBmdnpINHhHbzRDTUNIUUd4NXJYYnNseHozc1I5V1pBWmdRNmcyUE5hN2VrTWJiMHhHcGtwSTdhL1RuWkVlZ01pbEcxYnJwYmxldjU3SG12ZDc4N2V0ZjhPZGtSNkF5S3UvUHUyaW5Ia1lNNmlzMkFEQWwwQnNPYTEyNUxGWG9PRFhMTk4wM0g3V1JKb0RNWXF2UHV5MkhQKzZuWWV6MGdRd0tkUVhCMzNnK3BRYTRKOWRZYTVKby9TcnhtM1N1NUV1Z01nald2L2ZGeE5WbHZhNHpOY1RzNUUrZ01ndVAyZnJsUjdzWHExYnVPMjhtWlFLZjNySG50bjlRZ3Qrb3hOc2Z0NUU2ZzAzdXE4MzY2TWRtdjBsY1lzUFhsZ0l3SmRIck5tdGYrU252ZWIxV3JlV0sxK1IwMHNreUczQWwwZXMyYTEzNUxlOTVYTWNaV1JGd095SnhBcDdlTXF2VmZHbVBiTHBlLzUzMFNlNjhHWkU2ZzAxdnV6b2RoZDhsNzN1dm03dHhUcVhTQlFLZVhySGtkbHVYdWVkY01SemNJZEhwSmRUNHNxVUp2S3ZWWU5NMXdkSWxBcDNmY25ROVRlak45MFExeXpUZklTd0VkSWREcEhXdGVoNm1zNi9WRnZzYVdxdk52ajk3V0RFZG5DSFI2eDNIN2NLVXh0a1h0ZVZlZDB6VUNuVjZ4NW5YWTBoamJJdmE4cTg3cElvRk9yNmpPV2NTZWQ5VTVYU1RRNlkwUEg2ck9lYVNwMG8rOWJFWjFUbGNKZEhyanJVL05uZlBJK0FRTmNxcHp1a3FnMHd0RzFYalNyWEl5OTU1MzFUbGRKdERwQlhmblBDazF5TzJVOC8yK1VKM1RaUUtkenJQbWxjT2tZL2NIZFRYamZYcTlxVHFueXdRNm5hYzY1eWpiNVd4dnBrOWlmQ0dnd3dRNm5aYXE4MnQ3N3M0NVhCcGh1MWVWVDZuU3ExZThxRWJYQ1hRNkxUWEM3ZFZHMVRqYXphWktQNnhCTGpYQ1RXTHkwNENPRStoMG11TjJaakZ1WXZ1d01iYlVDS2M2cHc4RU9wMWx6U3Z6T0dqUGV4MzFaWTF3OUlWQXA3TlU1OHdqamJHbEoxYW5QMDlIN1UzRXZ4elFFd0tkVHJMbWxlTzRXNVhyMHozdmRaUVhIYlhUSndLZFRyTG1sZVBhS2NmTjM2dEwzeHU5OTFwQWp3aDBPc2VhVjA3aVhsV052ak42MTFFN3ZTUFE2UngzNXh4WFhjZW9xc2JuQTNwSW9OTXAxcnh5RWxVOXVYanhvNDlHQVQwazBPa1UxVG5IVmRmMXBZczNiN28zcDdjRU9wMmhPdWU0cWlwZWVmSEdOZmZtOU5ycGdJNzRjRStZTTcrbU10OTY2ZWExaXdFOXAwS25NOTY2TDlDWno2TW11TWtQQXdaQW9OTUoxcnd5cjJsSHV5WTRoa0tnMHdtYTRaaUhNR2VJQkRyWlU1MHpEMkhPVUFsMHNuZmxnYnR6WmlQTUdUS0JUdFp1VHlwclhwbUpNR2ZvQkRwWjA5bk9MTkpvbWpCbjZBUTYyYkpJaGxsVWRWeXU3bjhpekJrOGkyWElsczUybmlhdGMzM0pCampZSjlESmt1cWNvOVFSdTFVMXVXQTNPL3cvZ1U2V3JIbmxNSS91eXljL2RNUU9ueWZReVpKbU9BNlNIbG14bHgwT0p0QnBXYjMrNUdjc2t1RkphU1N0cU9vWFh2cm8yaHNCSEVpZzA3WXZCTHBtT0I2WEd0K3ErNS84OU9MdTdtNEFoeExvWkVWMXpsUWQ5V1pWVGk2NEs0ZlpDSFN5WXMwcktjaUxNaTY5NkhnZDVpTFF5Y2IybmpXdlE1YnV5YU9vTHIxNC9mcXJBY3hOb05PeVl0UjhLOTlJSDcybk9oK2tWSkUzZjcvODRnMUJEaWNoMEdsWnZkL29aSkhNOERoYWg4VVM2TFNxaU5pcUk4N3FiQitHdE9HdE9WdC9SZGM2TEo1QXAyMWJxdk4rU3lGZVZIRzVDZkxYVk9Pd1BFVkFpKzZjM1ZqL3IwK0s5Ly9uMDhsNjBCdk5jZnBXVVJXYktjVC9WWWpEU2doMFd2ZVRyMzN0cFZPeDlwT2dzNllCWHRmVlZ2WGczdXVPMDJIMUJEcForT2xmL3ZXUGk2SytGR1J0L3c0ODZsRVJ4VlpkTkNFK2lhM3l3U2R2Q25Cb24wQW5HMDJsZnZaVXZmWmlFeFJubThBNEc2ekVvMGExZUJUSVJZeUs0ck9mVjdGYm42cEhNYWwzcTFObjNveDd1eVBCRFFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkQ5SC9FRGptS2lsSmJhZ0FBQUFCSlJVNUVya0pnZ2c9PSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIkZJRE9fMl8wIl0sImV4dGVuc2lvbnMiOlsiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiMzlhNTY0N2UxODUzNDQ2Y2ExZjZhNzliYWU5ZjViYzciLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwidXAiOnRydWUsInV2Ijp0cnVlfSwibWF4TXNnU2l6ZSI6MjA0OH19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDE5LTAyLTEzIiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJWYW5jb3N5cyBBbmRyb2lkIEF1dGhlbnRpY2F0b3IiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDE5MDEwOTAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4wLjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMC4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDE5LTAyLTEzIn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAxOS0wMi0xMyJ9LHsiYWFndWlkIjoiNjY0ZDlmNjctODRhMi00MTJhLTlmZjctYjRmN2Q4ZWU2ZDA1IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI2NjRkOWY2Ny04NGEyLTQxMmEtOWZmNy1iNGY3ZDhlZTZkMDUiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiT3BlblNLIGF1dGhlbnRpY2F0b3IifSwiZGVzY3JpcHRpb24iOiJPcGVuU0sgYXV0aGVudGljYXRvciIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyIsImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19zdXJyb2dhdGUiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlCR0RDQndBSUpBTThBM2VoZHBpRnVNQW9HQ0NxR1NNNDlCQU1DTUJReEVqQVFCZ05WQkFNTUNVOXdaVzVUU3lCRFFUQWdGdzB5TURBNU1UUXhNakV5TkRCYUdBOHlNRGd3TURreE5ERXlNVEkwTUZvd0ZERVNNQkFHQTFVRUF3d0pUM0JsYmxOTElFTkJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVzLzU0WC9JOHlkbVpnRlZFSjR5S25sQTR1SUpyYW1BUWNjM2RvMnhEelJHY3hEVHp0dEliZGs0WFgycno2YVpFVGVYdDdFOCs3SE1MSTRraHVKcFVYakFLQmdncWhrak9QUVFEQWdOSEFEQkVBaUFoblRMWGl0NEdKTkhxaDhoMURITmI5MFY1T1c1dlJtT2w2bHZFL2NQejlRSWdiM2QzaHVFM1loMHlRL0hRdUlvNmRITStGLzR0ZWF6aEpaRjE1Z1lMd0NjPSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFFQUFBQUJBQ0FZQUFBQ3FhWEhlQUFBQUFYTlNSMElBcnM0YzZRQUFBRVJsV0VsbVRVMEFLZ0FBQUFnQUFZZHBBQVFBQUFBQkFBQUFHZ0FBQUFBQUE2QUJBQU1BQUFBQkFBRUFBS0FDQUFRQUFBQUJBQUFBUUtBREFBUUFBQUFCQUFBQVFBQUFBQUJHVVVLd0FBQUlRMGxFUVZSNEFlMWFDVlNVVlJUK2tHVllCQlFGQll6WUZKRk5MZFBRVmtzejg1UW5zelJOYmFQTnpESTBPYUlIMjdWVVVuT3B6QXFYTUpOSXN6S1RVRVFXUlhCbkV4UmlVWUVVQkFUczNsZnpKdzNMRFAvTU1PZk1QSS9NKys5Ny8vL3V2ZSsrKzk3OTdqTzdUZ1ZHWExvWXNleENkSk1DVEJaZzVCb3dMUUVqTndDWUxNQmtBVWF1QWRNU01ISURnRVZuS3FDOC9BS09aaDJEbzZNREFnTUd3TWJhV3UvczZGVUJUVTFOeU1uTlE4YlJUUHFmaGVJL1N5U0J6YzNONGRldkx3YUdCR0ZnY0JCY1hKeWxObDFXekhRZERWYlgxQ0RyMkhFY0pZRXo2YmU2dWtZdGVWeGRld3RGc0VMNit2cWdTeGZkdUN1ZEthQ2dzQkNidDI3RG1leGM4TXpMS2JhMnRnZ09Da0RZc3pOZ1ptWW01MU1xNytwR3JUUk1jWEVKVHAzT2xpMDhjMXhEVnBSOEtCVzZnQzUwcGdBVlZSc29RV2NLY0hkM3c0amh0Nk43OTI0R0t2by9iR2wxRitDMWZ1NzhlV0grVGRlYmNPZUlVRXlmT2hrSGsxT3dKWFk3T2NCcWcxT0cxaFJ3SUNrWjM4ZkY0OExGUzgyRWRITHFqa21QVDhEaWhSRjRiOG5INEwzZmtJcnNKY0NPNmN1dllyRCtpNDBxd3JPZ2x5NVZZTlduNjVHVWZBamhiN3dHS3lzclE1SmZmamk4YS9ldjJQZkgvbmFGMnJZOWptYS9IQStQRzl0dVgzMTJrTFVFcmx5NWdyajRIOVhtTjNiN0RpeDRLeHozM24ySDJ1K2N6czVCOU1vMXNMUzAxTWxoU0pZQzBnNW5vTDcrV2pOaCtOQXlkc3hvTW5WTC9FVFdjYW1pUW1yUHp5OUFaV1VWMkMrb1cvaFk3S1REblVTV0R5Z29LRlNSWS9wVGswa0JvM0QveUh2d3lvdlBxN1NYbHBXcjBOb2kvUFo3Z3ZBdERnNE9iWFhyY0pzc0JkVFYxNnNNN083bUp0RmFEbWhVRTFIRnhYL1NxZkdNOUo2eWtweVNpbTgyYlJXUEhqZjFVWksxK2l0TEFUMWFNT1drZzRja0JoTVNWWjJqdTV1cjFNNDd5TzVmOWlBeTZsMThzSFE1OXRKc0swdmlnWU5ZdTM2RGRQejE4dkpVTm1uMVY1WVA0QmcrZnVmdVpnejUrbmhMenpZMk5sS2RLd0VEK3FPSmhON3h3MDRoMlBFVEowVjRyT3owVmN3V25EaDFXZ1E4cVdtSGxXVHhIQkljS0QxcnN5SkxBUnkvZTN0NUlpLy9yT0RKeDlzTGd3WUdTL3pkZXNzZ3hHeitGbzJOaldML2YyTGlCUHhJQ3R1emQ1L1U1LytWdFBRai95ZkIzNjhmdWprNnF0QzFRWkMxQkppQlo1K2VCdHQvWi9xeFJ4OXB4cE9EdlQyRzN6NFVGaFlXQ0h0dUJpNWZ2Z3gyYXBxV1VhTkdhdnFLMnYyMWdnY1VGSjRUaDZGcFV5YXBESHpoNGtYVTF0YUs3Vy9sNm5Xb3JhdFQ2ZE1Xd2ZObUR5eGE4RlpiWFdTMWFVVUI3WEdRa1ptRjVkR3IyK3VtMHM3Z3g4S0l1ZkQwdkZtbFRWc0UyVXRBSFVhQ0F3TUkxdnJQT2FyekR2Y1pOM2FNVG9Ybk1mU2lBTWJ6WG5qK0dYVHJwcjRqR3p3b0JPTWZmb2g1MUduUml3SllnaDVPVHBqMzV1dHFlZk9nd0FHRS96MnRkZnl2SlUzcXhRZmNPSEFaSFlVL1diMldnSk9pRzhsU2ZYam9NTXg0YWdydEhPWVNUWmNWdlN1QWhhbS9kZzJidDhUaTk0UkVTVFliRzJ0TWZYSVNRb2ZkSnRIMFVla1VCU2dGWStnODlyczR1TG4xeHJnSHg4RGV2cXV5U1crL25hb0F2VW5aeGtCNmM0SnQ4TkNwVFNZRmRLcjZEV0R3RGx0QVEwTWpqaDAvaWZRakdXQnNVRmZsZkZFUk9EVE95enNyRFZGUlVZbnNuRnpwdVo2QW1STW5UM1VJY3U5UU9Nd0J6b2NmclNEQnEyRkhHR0JsVlJWZUNudUdRdUVRaVNsdFZEWnMvQWFIVXRMZzRYR1RTTGowOC9YRnJKa3ZJalg5TUlHeHU3QnF4VktCS3pBa241dVhUM0hEUEkySDdaQUNObTJPRlpjWm9pTG53NW91TlREYXUvN3pqVmkyOUgxY3JiMktTcG9oT3pzN25LVnRqcG5tQ3hES3d0Z0J6eUJqQ1YyNzJsR0lmQVdsWldYbzVlS0NNems1NkVPUVdxOWVMaWdpbUN3aDhRRG16NTJEZm4xOVVGcGFocmtSQzhucVRpZy9KWDdqNG5jaU0rczRJdWJOYVRaT3MwNXRQR2lzQUFZMytGYkgxTW1QQytINTI2UHZING1kdTM2bVZIaTJTSVRFMENISHhia25lSm44UlJqQTRrVVI0aWo4K1lhdnhaTHAyY05Kb01WUmtSSEl6YzhYMEZjZnlpVTJOVjBud1lzby9KMHZoT0ZMRXltcGFYQjNkeFZLV2ZkcE5DeUlWa0xLNEpLU2xpNHM0ZFdYdzlCUnpGQmpIOEQ1UFZiQ2pZRU5BeDhjOEZSVi9TVVk0ejhMNW9mam5hZ0ZRcEI5ZE9Mam1VODhrSVJJb2tkUm1zeTFkMi84c21ldjZOL1EwSURYWDN1RjZDeTRvMWpQL0UxR2xZOWtaT0xWMmVHSVhyVUdaV1FweW9zU2RZUXJmRWFtNzBob2NmLytmdEs0bWxZMFZvQkM4Yzg5bnRyYS80QU5Gb0FUb3dwcmhSaWZFU0NGUWdHZVFSOHZUekx4Y2hRU2FNTHgvU2NFaWtSRUxoWW1Ya2FaSWpQNng0VUY1c0xvRWpzMUxneXZMWGwvTWViTW5vbEdzcWEzMzEwaWxnKzM4WmgzM1RFQzErbGZ6TC9JTWRNMUxSb3ZBWVhDU3BnYno4eXdvVVBFZU1wMTZldnRUZXZ4V0RNZUtpZ1J3aWJQQ3VIWm16WHpCVmhaV2duR3JTamJjL0tVS2h6T0gyQkluQk1yYkVuK05NUGVYbDRJZTNtV0JLSnlBdWJKU1JQRnpaR1BscTlFQ0YybEdYTEw0R1pqcS9PZ3NRTDRveE1uak1leTZGVlk5NWs1bkoxN0NKQ1QvWUR5TGdEZjZOaEVmb0FESE42ZXd0K1lKWUFOUHVzenpzK01KbEhLL0I1S2tYVXhhOWtJL2YzOHNHWHJkMWk2TEJwQmdRRzA3ZVVKNi9EMjlrVDY0UXdwVk9hMmtmZmVKUkswUEFGS0h0UVJudnVZTDZLaWJtZGxQMDU0OE9VbDlzeDhCdUFzMEFPajd4UE5uQzNLcFQyYkVXRU9lUjk4WUpUWUhpMXBXUXk1ZFRCS1NrcHhsdm9NOFBjandIU1lnTWw1eWZBZElDNDFOVmZoUlJBWU83WFEwS0dFSjlhSkpjUk9kZHFVeVhEdXljNjFBVGEyTmdqdzd5L2VZZFNZY1VjdWJqZmtIUVNoblQ5YUQ0WVMvdGlQN1R2aXNlTGpEOW9aMmpDYVc3WS9HYnpaa3pQejhOQk5Ha3NHVzYyK3FuVUxhSFVrQTIzUXVnVVlxSnl0c21WU1FLdXFNWklHa3dVWXlVUzNLcWJKQWxwVmpaRTBtQ3pBU0NhNlZUSC9Cbm95LzBLRjd3K09BQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiRklET18yXzAiLCJVMkZfVjIiXSwiZXh0ZW5zaW9ucyI6WyJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiI2NjRkOWY2Nzg0YTI0MTJhOWZmN2I0ZjdkOGVlNmQwNSIsIm9wdGlvbnMiOnsicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlfSwibWF4TXNnU2l6ZSI6MTAyNCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMV19fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMS0wMi0wOSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ik9wZW5TSyBhdXRoZW50aWNhdG9yIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyMTAyMDkwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMiIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4zIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIxLTAyLTA5IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjF9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjQtMDItMDgifSx7ImFhZ3VpZCI6IjM3ODlkYTkxLWY5NDMtNDZiYy05NWMzLTUwZWEyMDEyZjAzYSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiMzc4OWRhOTEtZjk0My00NmJjLTk1YzMtNTBlYTIwMTJmMDNhIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ik5FT1dBVkUgV2lua2VvIEZJRE8yIn0sImRlc2NyaXB0aW9uIjoiTkVPV0FWRSBXaW5rZW8gRklETzIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MywicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNIVENDQWNLZ0F3SUJBZ0lDZGRVd0NnWUlLb1pJemowRUF3SXdlekVMTUFrR0ExVUVCaE1DUmxJeEV6QVJCZ05WQkFvVENrTmxjblJGZFhKdmNHVXhGekFWQmdOVkJBc1REakF3TURJZ05ETTBNakF5TVRnd01TUXdJZ1lEVlFRREV4dERaWEowUlhWeWIzQmxJRVZzYkdsd2RHbGpJRkp2YjNRZ1EwRXhHREFXQmdOVkJHRVREMDVVVWtaU0xUUXpOREl3TWpFNE1EQWVGdzB4T0RBeE1qSXlNekF3TURCYUZ3MHlPREF4TWpJeU16QXdNREJhTUhzeEN6QUpCZ05WQkFZVEFrWlNNUk13RVFZRFZRUUtFd3BEWlhKMFJYVnliM0JsTVJjd0ZRWURWUVFMRXc0d01EQXlJRFF6TkRJd01qRTRNREVrTUNJR0ExVUVBeE1iUTJWeWRFVjFjbTl3WlNCRmJHeHBjSFJwWXlCU2IyOTBJRU5CTVJnd0ZnWURWUVJoRXc5T1ZGSkdVaTAwTXpReU1ESXhPREF3V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVR6MmpOYUtPSy9NS2RXMmZtZTF0cTZHUkV1UHV1S1c5SGdXWWdNUnJqdlpVVE9xTEFOSjNNZDVIcXYxRU4xek1kNGxXdHlmelJsYTdydjVBUkJvT29Ub3pZd05EQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01CRUdBMVVkRGdRS0JBaE5uVFcwYTRFOHVqQU9CZ05WSFE4QkFmOEVCQU1DQVFZd0NnWUlLb1pJemowRUF3SURTUUF3UmdJaEFNcmhiOFNtZk5MZUxOZ2FBVm1RNkFPTWlMTkxWSFgwa0ZVTzgwQ25UMzhFQWlFQXpOQWd2NGRIK0hEaFpTZ1pXSmlhUHUvbmZaVGV1R3k0TXlkUE1xNXVyczQ9IiwiTUlJRU9EQ0NBOTJnQXdJQkFnSURBSW5CTUFvR0NDcUdTTTQ5QkFNQ01Ic3hDekFKQmdOVkJBWVRBa1pTTVJNd0VRWURWUVFLRXdwRFpYSjBSWFZ5YjNCbE1SY3dGUVlEVlFRTEV3NHdNREF5SURRek5ESXdNakU0TURFa01DSUdBMVVFQXhNYlEyVnlkRVYxY205d1pTQkZiR3hwY0hScFl5QlNiMjkwSUVOQk1SZ3dGZ1lEVlFSaEV3OU9WRkpHVWkwME16UXlNREl4T0RBd0hoY05NVGd3TWpJeU1qTXdNREF3V2hjTk1qZ3dNVEl4TWpNd01EQXdXakIwTVFzd0NRWURWUVFHRXdKR1VqRVRNQkVHQTFVRUNoTUtRMlZ5ZEVWMWNtOXdaVEVYTUJVR0ExVUVDeE1PTURBd01pQTBNelF5TURJeE9EQXhIVEFiQmdOVkJBTVRGRU5sY25SRmRYSnZjR1VnU1dSbFkzbHpJRU5CTVJnd0ZnWURWUVJoRXc5T1ZGSkdVaTAwTXpReU1ESXhPREF3V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVNMVkwrMVNUSnZhRVJPNVdDUitqR2NBeEx2bVBCRGlaWTFOZ0ZGSWhwWDZPQVpBcFFZbXQ2eFNoNzRTd00rbWpnbnNTRWNjNEEyVWYxMzlGZ1o0cnBZbzRJQ1ZUQ0NBbEV3RXdZRFZSMGpCQXd3Q29BSVRaMDF0R3VCUExvd1NnWUlLd1lCQlFVSEFRRUVQakE4TURvR0NDc0dBUVVGQnpBQ2hpNW9kSFJ3T2k4dmQzZDNMbU5sY25SbGRYSnZjR1V1Wm5JdmNtVm1aWEpsYm1ObEwyVmpYM0p2YjNRdVkzSjBNRk1HQTFVZElBUk1NRW93U0FZSktvRjZBV2twQVFFQU1Ec3dPUVlJS3dZQkJRVUhBZ0VXTFdoMGRIQnpPaTh2ZDNkM0xtTmxjblJsZFhKdmNHVXVabkl2WTJoaGFXNWxMV1JsTFdOdmJtWnBZVzVqWlRDQ0FXQUdBMVVkSHdTQ0FWY3dnZ0ZUTUQrZ1BhQTdoamxvZEhSd09pOHZkM2QzTG1ObGNuUmxkWEp2Y0dVdVpuSXZjbVZtWlhKbGJtTmxMMk5sY25SbGRYSnZjR1ZmWldOZmNtOXZkQzVqY213d2dZYWdnWU9nZ1lDR2ZteGtZWEE2THk5c1kzSXhMbU5sY25SbGRYSnZjR1V1Wm5JdlkyNDlRMlZ5ZEVWMWNtOXdaU1V5TUVWc2JHbHdkR2xqSlRJd1VtOXZkQ1V5TUVOQkxHOTFQVEF3TURJbE1qQTBNelF5TURJeE9EQXNiejFEWlhKMFJYVnliM0JsTEdNOVJsSS9ZMlZ5ZEdsbWFXTmhkR1ZTWlhadlkyRjBhVzl1VEdsemREQ0JocUNCZzZDQmdJWitiR1JoY0RvdkwyeGpjakl1WTJWeWRHVjFjbTl3WlM1bWNpOWpiajFEWlhKMFJYVnliM0JsSlRJd1JXeHNhWEIwYVdNbE1qQlNiMjkwSlRJd1EwRXNiM1U5TURBd01pVXlNRFF6TkRJd01qRTRNQ3h2UFVObGNuUkZkWEp2Y0dVc1l6MUdVajlqWlhKMGFXWnBZMkYwWlZKbGRtOWpZWFJwYjI1TWFYTjBNQkVHQTFVZERnUUtCQWhEYVFiaFRGdGpjakFPQmdOVkhROEJBZjhFQkFNQ0FRWXdFZ1lEVlIwVEFRSC9CQWd3QmdFQi93SUJBREFLQmdncWhrak9QUVFEQWdOSkFEQkdBaUVBb0VlcEhNQzVYOWpCS2FHcGhjS2ppZGhpTitabno3djNTM2hjMzEvQXVuc0NJUURLcW9nSzJTWk9YWmN2dkhDQjZVUVNhQTBuTG40UlV3eTFndURpdmJaYndnPT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZ0NBSUFBQUQ4R08yakFBQUNxVWxFUVZSSXgyUDgvLzgvQXkwQkV3T053YWdGcEZsdzhjS0Zpckl5UjN0N1MxT3owS0RnQmZQbS8vejVrM2l6dm4zOWxwK1RhMnRsdFdUUklvVG9meGhZdFhLbGxwcTZzcndDQWlrb1JJVkh2SDM3OWo5eDROU3BVMEF0UUkxVzVoWndRYWdQenA4N1YxMVppWEF2SXhqOVp6aDU0a1JOWlJXUlB2ajk2eGNET00wek1US2lCOUc4dVhQLy9mc0hORlJBU0xDK3NYSG03Tmx1YnU0UW0zYnQzTGx1N1ZwaUxHQ0VtY3VJYWNHWlU2ZkI0Y1dRWDFBUUd4L243T0l5YWVvVWJWMGRpSXZhbWx1ZVBYdEdVU1QvK2czMkhTT0Rob1lHUklTRmhhV3BwWVdWbFJVbytPSGpoNmI2Qm9vc2dIdnF6NTgvY0RsOWZmM003Q3dJZTgrZTNhdFhycVFnbWVJb2tES3pzL1gxOUVHeS94azZPem9mUDNwRVdVYkRzQVlZUkMzdGJSd2NIRUQyaC9mdjYycHFDUmVPakNUbVpFMHRyWnk4WEFqNzhLRkR5NVl1SmQ1MFZBc1ljZXBLVFU4M05qV0JxT251N0h4dy93RStPLzdqc2dDMzE1bVptUnVibTluWjJZRnF2bnorMGxCZmh6T2cvcU83bFFtL0IrRUFtSHdMaW9vZ0NvNGNPcnhrMFdJaVBVRWdrcEZCVW5LeW1aazVoTjNUMVhYM3poMWlZb0tKY0RUQkE0cUZ1Ym10bFl1YkM4aisrdlZyVFZVMXFIUWh6UWVNQkh5aHJLeGNXRndNVVhuNjFLbjVjK2RTdjhKSlNFeTB0ckdHc0NmMDk5KzZkUXN1eGNMQ0NySDdQNUlyU1lnRGVLRlMzOVRFeDhzSFpILy85cjJ1R2hGUU42NWZoMlZQTm9xcVRDVWxwZUt5VW1neGZQcE1TV0VSTUFNdVg3YXN2N2NYSXFpbHJZWHdGcnhlZy9xT3VHWlNkRXpNM3QxN0RoMDZDUFQwcGswYk4yM2NDSTlGWUtaSno4aEU5OEhmZjM4aEREWTJkaUw5MGRIZHBhdXJpeGF3ckN5c3JlM3R1bnE2aUxUWDBOQUFUb0lzVHg0L3RuZHdpSXlPQXRZRXhGakF6YzN0NCtzTEpMOTkvUW9zRTBWRlJlM3M3UnRibW9HVkZVcWNqVFlkaDc4RkFJaEJMbE5kN2p1MUFBQUFBRWxGVGtTdVFtQ0MiLCJzdXBwb3J0ZWRFeHRlbnNpb25zIjpbeyJpZCI6ImhtYWMtc2VjcmV0IiwiZmFpbF9pZl91bmtub3duIjpmYWxzZX1dLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCJdLCJleHRlbnNpb25zIjpbImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6IjM3ODlkYTkxZjk0MzQ2YmM5NWMzNTBlYTIwMTJmMDNhIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6dHJ1ZSwidXAiOnRydWV9LCJtYXhNc2dTaXplIjoyMDQ4LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxXSwidHJhbnNwb3J0cyI6WyJ1c2IiXSwiZmlybXdhcmVWZXJzaW9uIjoyfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIxLTA5LTIxIn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMS0wOS0yMSJ9LHsiYWFndWlkIjoiZmEyYjk5ZGMtOWUzOS00MjU3LThmOTItNGEzMGQyM2M0MTE4IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiJmYTJiOTlkYy05ZTM5LTQyNTctOGY5Mi00YTMwZDIzYzQxMTgiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiWXViaUtleSA1IFNlcmllcyB3aXRoIE5GQyJ9LCJkZXNjcmlwdGlvbiI6Ill1YmlLZXkgNSBTZXJpZXMgd2l0aCBORkMiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6NTAxMDAsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJlZDI1NTE5X2VkZHNhX3NoYTUxMl9yYXciLCJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJREhqQ0NBZ2FnQXdJQkFnSUVHMEJUOXpBTkJna3Foa2lHOXcwQkFRc0ZBREF1TVN3d0tnWURWUVFERXlOWmRXSnBZMjhnVlRKR0lGSnZiM1FnUTBFZ1UyVnlhV0ZzSURRMU56SXdNRFl6TVRBZ0Z3MHhOREE0TURFd01EQXdNREJhR0E4eU1EVXdNRGt3TkRBd01EQXdNRm93TGpFc01Db0dBMVVFQXhNaldYVmlhV052SUZVeVJpQlNiMjkwSUVOQklGTmxjbWxoYkNBME5UY3lNREEyTXpFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUUMvandZdWhCVmxxYWlZV0VNc3JXRmlzZ0orUHRNOTFlU3JwSTRUSzdVNTNtd0NJYXdTREh5OHZVbWs1TjJLQWo5YWJ2VDlOUDVTTVMxaFFpM3VzeG9ZR29uWFFnZk82Wlh5VUE5YStLQWtxZEZuQm5seXVnU2VDT2VwOEVkWkZmc2FSRnRNamt3ejVHY3oyUHk0dklZdkNkTUhQdHdhejBiVnV6bmV1ZUlFejZUblFqRTYzUmR0Mnpid25lYndURzVaeWJlV1N3Ynp5K0JKMzRaSGNVaFBBWTg5eUpRWHVFMEl6TVpGY0VCYlBOUmJXRUNSS2dqcS8vcVQ5bm1ET0ZWbFNSQ3Qyd2lxUFN6bHV3bit2K3N1UUVCc1VqVEdNRWQyNXRLWFhUa05XMjF3SVdieGVTeVVvVFh3THZHUzZ4bHdRU2dOcGsycVhZd2Y4aVhnN1ZXWkFnTUJBQUdqUWpCQU1CMEdBMVVkRGdRV0JCUWdJdnowYk5HSmhqZ3BUb2tzeUtwUDl4djlvREFQQmdOVkhSTUVDREFHQVFIL0FnRUFNQTRHQTFVZER3RUIvd1FFQXdJQkJqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFqdmp1T01EU2ErSlhGQ0x5QktzeWNYdEJWWnNKNFVlM0xiYUVzUFk0TVlOL2hJUTVaTTVwN0VqZmNuTUc0Q3RZa05zZk5IYzBBaEJMZHE0NXJuVDg3cS82TzN2VUV0Tk1hZmJoVTZrdGhYN1krOVhGTjlOcG1ZeHIrZWtWWTV4T3hpOGg5SkRJZ29NUDRWQjF1UzBhdW5MMUlHcXJOb29MOW1tRm5MMmtMVlZlZTYvVlI2QzUrS1NUQ01DV3BwTXVKSVpJSTJ2OW80ZGtvWjhZN1FSalFsTGZZemQzcUd0S2J3N3hhRjFVc0cvNXhVYi9CdHdiMlgyZzRJbnBpQi95dC8zQ3BRWHBpV1gvSzRtQnZVS2lHbjA1WnNxZVkxZ3g0ZzB4TEJxY1U5cHNteVB6SytWc2d3MmplUlE1SmxLRHlxRTBoZWJmQzF0dkZ1MENDckpGY3c9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFmQ0FZQUFBQ0dWcytNQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUhZWUFBQjJHQVYyaUU0RUFBQWJOU1VSQlZGaEhwVmQ3VE5WMUZELzNkNTl3ZVFTSWdTOUFRQVhjRkxBUVppOWZwZVZ6MXRZL1dUWnI1V3hwYzdXNWtuTGE1akkzWjg1c3JTMm5NMnNqdFd3WlM3SVVINEg0eENuRVF4NERBWkY3NFY3dXM4ODV2OS9sSW5CdlZKL0I0UHY5bnUvNW51LzVudk01NTZmekEvUXYwSGIvSXJYM1ZGS1BvNDVjbm00aW5VSVdZd0xGUm1aUVV1d2pGRy9OMWlSSGgxRVowTlJWUnVkcXQxQmQrMm5TS3lTL09oeXMwK2xrM2UvM2tROXF2RDRaVXRhNFZWU1V1WTBlaXB5aVRoQWZvY29PUlZnRHV1dzNxS1JpQWQzcmJjRXRqVGpZSW9mNldhSHNDbXpWUFdDTXgrY2doOHRMcVdNS2FNV3NVakxxbzJSdEpJUTBvT3ptZXJwUXU0ZXNaZ3NPTmtHeEg3ZDBrZHZUVDE3czRPTVU3Vkk4WmhqZ0dhTStBcTlpRU51OFBpZjF1ZHowN013dktXZjhHbFZvQ0VZMDRQQzVXZFRhWFlGYlI4dk52TDUrM0tnZmI1eE5NeWE5UmFtSml5bmFNbEdUVnRGbHI2YmE5dStwcW5FWDR1TXVSUmdqU1lFaHJON3V0RkZlNmxxYWw3TmZrdzVpbUFHSHluUHBiazhWbVkweHN0bnB0bEZDVkNZdHpUdUJOODNRcE1MalR0ZXZkUHpTVW5KN2U4bWtqeFozOWZYYktEZmxkWnFidlUrVFVnR25CVkY2ZlEyaVBIZzRXMTZVV1V3dnpiazE2c01aRStQbjBwdno3SlNldUF5ZXM4bGNwQ21hS3VvL3ArcVdyMlVjd0lBSFdydlAwWUV6aFhBdExBYnNzSGhwN2lHYW12eWlqUDhyeXFyWFVXWDlYb293eHlBdWZOQnJwNDNQT0JGWFpsa2Y4TURSaXFjcHlvd0F3cHV6MngrZld2ei9EdGRlOXNtc3p5Z3RjUjZDMXdiZHpCbDZPbHE1V05ZWTRvR2F0aEpNcmtURXgwakFSU0hBVnMrNXJZa1FOWGIrUWdmUExzUTZnWHlJbnNyZVFmbXBtN1JWRllmTDg2bjFmaVVPa1l2U2hrVVB4dmJ1a3pveTZLMWloTTFobzNYelc2RXZTZlhBK2RwaVdHYVdkK2RvWHpMem1Hd0tZRkxDQXNSQWxQQkFoTWxDRlhVN3RCVVZQcjhIZ1ZjSkhXcStGMDBwbHIrRE1UZHJQNHp2eFkxMWtOTWh4VCtTZVRHZytkNFY1TFFKaXR5VUdKTkI4VkZac2pnWUJaTS9JSS9YQ1RrajBxeURPcEYyQVZRMTdDSWpVcC9EblQxVWtMNUY1Z2RqK3NTMXdnMWdFM2dpZ202MGZDWHpTblBYYnlBUGJJWHYrSURwRTE2VGhhSElTOXNreWhsbU1FNUYzY2ZxQUtocTJDMEU1UEgxZ1lhWGFMUERrWkcwSERKT25LV0hwNTFJMHo1U091eDhlMVdBdVp6ZEhRclRrcDhUbWpYb0krbGEwd0dac3p1YnFiTzNpZlE2QS9XN3ZWU1lzVjNtUjBKS3drS2M0V0hpQmttUjhJM0NDZ0k4N29PTDRxelQ1UCtSVUpCZWpFT2dBUEs4aFlQemF0TStlSVRwMklPOXlUUW1lcm9tUFJ4eDFxeEFjc2lsZS91YlNlRWJjV1FHWUVDZ2hjTFkySHlLam9nakgyNWhNcGpwVXYxT3VnbGk0ZWgyZVJ3ME8zMmJKamt5dUNnTnpnMHZ6bFlNU2lTczB1b280TUc3aE1PakNFYVgxeUZFMG5TdmpCenVUbkVwSzg2WjhJb3FGQUl1Ync4a2c5QXJFYVJFV1NaSStqSDRYYnA2ZzlFOUVuSlQzb2FSekROK01VSkJRREhuNTZhOG9VbUVCdXNPeEJzL041K3RKRWJQa0FGRGo4VUd2T3MvSVd2Y1NnbEdCaHZTNy9GVFlmcFdHWWREWThmUEF4V1NBMzVzVEM0cDQrTG00QWFxSW9QZVF0ZnVmSzZKaDBaaHhsYnNVWE9TbVhOaWZENVpUQWt5RG9mYmJjY2x4bkE4V05BcXhDYlJOeWtoWHhRcGFEdzY3ZlhVWWJzaUcwS2h0djJvZUl2aDhyaFFNWU9jRUFxWEcvZUkrem5nT2M1eXhyOHE4MklBTTFjL0ZMRk9wbHF1NWVGUVhyTVp6R2NWQ2pZYkxXRzVJNEJUMWV1UnJsYnh0Tk90TWl0RERFaExYSUl5bkFBdnVPRVdFM1gzTmRBZnQ5NFZnYUc0MlhJUXQwWlg2UGVDRS9xUUZlOXJLNkh4N1lVNTBLdkg3Zlc0ZlMrcTdLS0JKeHNnZ0JYNXBTQUdoMWpJclZoNXpRNnczUmZhYWhCWG0vYUNiQ1pUakNVRlVUeVdacVc5cDYyTWpKUFhWcU9yUGdNTzROdjc0R2tmK293ZnROVkJEUW5qRkpxSFN3MTdwWHZoV1c1S1pxZS9RNDlOL1VTVENBVldvUVhGSUhCSFhYZTNGUHJVRHN1R0RtdEYvaEhLVEhwZWt4aGlBT1BJK1NKcTZTNkhGNEk5WVd6a0JKVG80NmlVTXpXcDhQaXIvUmlkdUx4S1lzU2tzVjh2TGxPUXZoR1gyWWxSME9CaEJqQyt1L2dFY3ZZMEFwSzdZazQxTnhqUFNRbldGSFRGNjZVcmpnZXZCOEN1NWErbDJ2WVNSUHR1VkRvNzNoaGRNU0huVVg3dFRqc1ZaR3hBbC9XcHRpT0lFUTFnbkwyOW1YNi90UjF0bWxrWWo4VzRYK0NTaldjVURHWTFOcFMvQzdoU0txaU1MTS9sMlFtU1daNzNEZHorZ2lvOEJDRU5ZUFE0NnFua3p3WFVicXZCa3hqVVFzV2ZaRmdidW8zckFmK3dON2pPTzkwK3lueDRQaTNMKzBuWUwxU2NoRFVnQVA0Z1BWLzdJZDFxKzFIU2htdUdrSXFXUlBneXhNRnFQOEhmalRualh3WTViUWZiSmN0Nk9JektnTUhvdEYvSGUxZWdzYXhIU3FHNndmZG1RNXg4TnlURkZxQmNwMmlTb3dIUjN5azUrMzZoRjd2WEFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCJdLCJleHRlbnNpb25zIjpbImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6ImZhMmI5OWRjOWUzOTQyNTc4ZjkyNGEzMGQyM2M0MTE4Iiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6dHJ1ZSwidXAiOnRydWV9LCJtYXhNc2dTaXplIjoxMjAwLCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxXX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIwLTA1LTEyIiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZdWJpS2V5IFNlcmllcyA1IHdpdGggTkZDIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAxODA5MTgwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMS4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjIifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjAtMDUtMTIifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIwLTA1LTEyIn0seyJhYWd1aWQiOiIzNDFlNGRhOS0zYzJlLTgxMDMtNWE5Zi1hYWQ4ODcxMzUyMDAiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjM0MWU0ZGE5LTNjMmUtODEwMy01YTlmLWFhZDg4NzEzNTIwMCIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJMZWRnZXIgTmFubyBTIEZJRE8yIEF1dGhlbnRpY2F0b3IifSwiZGVzY3JpcHRpb24iOiJMZWRnZXIgTmFubyBTIEZJRE8yIEF1dGhlbnRpY2F0b3IiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MTA2MDUsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2azFfZWNkc2Ffc2hhMjU2X3JhdyIsInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3IiwiZWQyNTUxOV9lZGRzYV9zaGE1MTJfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9pbnRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjozLCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfaW50ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MTAsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6MywiYmxvY2tTbG93ZG93biI6MH19XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbImFueSIsImhhcmR3YXJlIl0sInRjRGlzcGxheUNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbiIsImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlCZ1RDQ0FTY0NGRk0xUUNEWGcxMjJGOWN2V0ZWbXFlR1gzdFFXTUFvR0NDcUdTTTQ5QkFNQ01FTXhDekFKQmdOVkJBWVRBa1pTTVE4d0RRWURWUVFLREFaTVpXUm5aWEl4SXpBaEJnTlZCQU1NR2t4bFpHZGxjaUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRU5CTUI0WERUSTBNRFV6TURFME1UazBNRm9YRFRNME1EVXlPREUwTVRrME1Gb3dRekVMTUFrR0ExVUVCaE1DUmxJeER6QU5CZ05WQkFvTUJreGxaR2RsY2pFak1DRUdBMVVFQXd3YVRHVmtaMlZ5SUVaSlJFOGdRWFIwWlhOMFlYUnBiMjRnUTBFd1dUQVRCZ2NxaGtqT1BRSUJCZ2dxaGtqT1BRTUJCd05DQUFUSzduWHlINHBnTjNUTXdDV1NvTURSZTRFVjhKbDNYenVoaWNaLzJndmgrenozV21XME9aL0VjUllFQThGMjZjZWV1TWNkMjFXUVJSS1dwaldEK0pXaU1Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lRRDhKKzAvYjhQZVlqRlJRWWtVUmNxaGF4MjdvbHcxalkvcGJza2hCdVJwNEFJZ09BSGI2bis3Zk5mZnlveHBlQ3EzVlo3QjFqTjN3cW1QTmZuYWVBamRvWHM9IiwiTUlJQmdUQ0NBU2NDRkJsbzBzNVFZRmRYYmZ1c1JkUWVvTFg2UWVubE1Bb0dDQ3FHU000OUJBTUNNRU14Q3pBSkJnTlZCQVlUQWtaU01ROHdEUVlEVlFRS0RBWk1aV1JuWlhJeEl6QWhCZ05WQkFNTUdreGxaR2RsY2lCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVOQk1CNFhEVEl6TURJeU16RXdNek13T0ZvWERUTXpNREl5TURFd016TXdPRm93UXpFTE1Ba0dBMVVFQmhNQ1JsSXhEekFOQmdOVkJBb01Ca3hsWkdkbGNqRWpNQ0VHQTFVRUF3d2FUR1ZrWjJWeUlFWkpSRThnUVhSMFpYTjBZWFJwYjI0Z1EwRXdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBVEs3blh5SDRwZ04zVE13Q1dTb01EUmU0RVY4SmwzWHp1aGljWi8yZ3ZoK3p6M1dtVzBPWi9FY1JZRUE4RjI2Y2VldU1jZDIxV1FSUktXcGpXRCtKV2lNQW9HQ0NxR1NNNDlCQU1DQTBnQU1FVUNJUUN3Y3NIdUw4WkZMM0ZOeVUvRE9RbjNibXgwOGxubjBPNVJrdExiT25vUEhRSWdPRWk2SW1BWjE4MXE4UkppTDBoYnc3WnF1dW5pUnE2ZmpXakdvQnUxTW9vPSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFTWUFBQUVBQ0FZQUFBQWVNZHZ4QUFBQUFYTlNSMElBcnM0YzZRQUFBSVJsV0VsbVRVMEFLZ0FBQUFnQUJRRVNBQU1BQUFBQkFBRUFBQUVhQUFVQUFBQUJBQUFBU2dFYkFBVUFBQUFCQUFBQVVnRW9BQU1BQUFBQkFBSUFBSWRwQUFRQUFBQUJBQUFBV2dBQUFBQUFBQUVzQUFBQUFRQUFBU3dBQUFBQkFBT2dBUUFEQUFBQUFRQUJBQUNnQWdBRUFBQUFBUUFBQVNhZ0F3QUVBQUFBQVFBQUFRQUFBQUFBZTZTQ2t3QUFBQWx3U0ZsekFBQXVJd0FBTGlNQmVLVS9kZ0FBQVZscFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWxoTlVDQkRiM0psSURZdU1DNHdJajRLSUNBZ1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNEtJQ0FnSUNBZ1BISmtaanBFWlhOamNtbHdkR2x2YmlCeVpHWTZZV0p2ZFhROUlpSUtJQ0FnSUNBZ0lDQWdJQ0FnZUcxc2JuTTZkR2xtWmowaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOTBhV1ptTHpFdU1DOGlQZ29nSUNBZ0lDQWdJQ0E4ZEdsbVpqcFBjbWxsYm5SaGRHbHZiajR4UEM5MGFXWm1Pazl5YVdWdWRHRjBhVzl1UGdvZ0lDQWdJQ0E4TDNKa1pqcEVaWE5qY21sd2RHbHZiajRLSUNBZ1BDOXlaR1k2VWtSR1BnbzhMM2c2ZUcxd2JXVjBZVDRLR1Y3aEJ3QUFENjVKUkVGVWVBSHQzTHVPSkdjVkIvQmQ5bUlITmhMaUloT1FPRWFDQ0RraUlDTkc0ZzM4Q2p3SkNRbENCQVNJQk42Q2hBZ0pKRVJpSkF2WkFveXhmRm52aGUvczlKRnFlM3RtdWs5L3A2ZDY1MWZTTjFWZFZlZFV6YTlxL2wyOTlzeWRPM2Z1dkQvR3N6R2ViT2F4Ykt6WDROSG0rdnhxekdONmNESHpkU0Z3ZjdQODh6R1Blem5OM05mcnZhL2oyanpkWEs5UHZ6SVdUQVFJRUZpVmdHQmExZVZ3TWdRSWhJQmdjaDhRSUxBNkFjRzB1a3ZpaEFnUUVFenVBUUlFVmljZ21GWjNTWndRQVFLQ3lUMUFnTURxQkFUVDZpNkpFeUpBUURDNUJ3Z1FXSjJBWUZyZEpYRkNCQWdJSnZjQUFRS3JFeEJNcTdza1RvZ0FBY0hrSHJndEF2RkxvcVl6RVJCTVozS2hGcWQ1ZDdPYzg4VW1pNWNJaEJXdlMzRFd1RHIvUE1ReDUrYWQ2Qmk5dzJ2VE8rZUhkN2c5RldtVWYwN2o5bnpuTi8rZEh2VkdFTVh4OTVpK1BVWmN2SDJmb1BLQ1IvMVB4L2pqR0crT0VYL1Q2YWdUR3ZXbXF3WEMvdDRZL3hranJsMTQ1L1VZaTZZaGtDWnZqZVZ2alBGNHMyN01URTBDY1EvR2c4N0hZM3gvak4rUEVWT3MzemNUY3QvUFpqd3gvV1VjK0wwNEE5UEpCZklIOE9RSFh2a0I4d2IvNXpqUEdLYlRDanc4OW5Bemd1bU56VW5FeWNRVGs2bGZJQUlwbm5Cam1IWUxSRGpGSjRBWXNXenFGNGkvcHZyNUdKa0o1U1BPQ0tZTW81am5jdm1FRkJLWUtDQzhKMkx1MFNvL3NzVkg1Nk9tZmY5TjZhaURLQ1pBNEZZSlpFQ1Z2Mm5CVktaVFNJQkFsNEJnNnBMVmx3Q0Jzb0JnS3RNcEpFQ2dTMEF3ZGNucVM0QkFXVUF3bGVrVUVpRFFKU0NZdW1UMUpVQ2dMQ0NZeW5RS0NSRG9FaEJNWGJMNkVpQlFGaEJNWlRxRkJBaDBDUWltTGxsOUNSQW9Dd2ltTXAxQ0FnUzZCQVJUbDZ5K0JBaVVCUVJUbVU0aEFRSmRBb0twUzFaZkFnVEtBb0twVEtlUUFJRXVBY0hVSmFzdkFRSmxBY0ZVcGxOSWdFQ1hnR0Rxa3RXWEFJR3lnR0FxMHlra1FLQkxRREIxeWVwTGdFQlpRRENWNlJRU0lOQWxJSmk2WlBVbFFLQXNJSmpLZEFvSkVPZ1NFRXhkc3ZvU0lGQVdFRXhsT29VRUNIUUpDS1l1V1gwSkVDZ0xDS1l5blVJQ0JMb0VCRk9Yckw0RUNKUUZCRk9aVGlFQkFsMENncWxMVmw4Q0JNb0NncWxNcDVBQWdTNEJ3ZFFscXk4QkFtVUJ3VlNtVTBpQVFKZUFZT3FTMVpjQWdiS0FZQ3JUS1NSQW9FdEFNSFhKNmt1QVFGbEFNSlhwRkJJZzBDVWdtTHBrOVNWQW9Dd2dtTXAwQ2drUTZCSVFURjJ5K2hJZ1VCWVFUR1U2aFFRSWRBa0lwaTVaZlFrUUtBc0lwaktkUWdJRXVnUUVVNWVzdmdRSWxBVUVVNWxPSVFFQ1hRS0NxVXRXWHdJRXlnS0NxVXlua0FDQkxnSEIxQ1dyTHdFQ1pRSEJWS1pUU0lCQWw4RDkwZmpMVGZOSFkzNXZqR2ViMTNkM0xDL1h4VzRQRi92RWE5UHBCT0phUEJnanI5Y2hSODdybU5mK2tGcjdFcmhPSU83SnZMZnkvc3g3TG1xWHk4dlhzZS96VElvdjM0d3RZM3I5WW5idzEvamhNSjFXSUM5c3ZKbVlDS3hGSU83TG1DSlhqc21GcjBhRFg0OFI0UlEzK2I0ZjdUSUY0K0FmakJGVHJydDQ1V3VYUUliU3Q4WUJmanpHNDhXQmNsdXN5cHRrZVYxeWUxejMvNDd4aHpHZWptRWlNRU1nNzZWL2oyYS8zVFNNK3kvdnhldU9FZnRHQm4xeDNZNzdidC8zd1B2MnM5L2xBdkZ4TzZZZmpSRVhzam8rSExYeFVUd20xKy9Dd2RmakJhYmNTL0hPR1FsMVRMTkl5ZmpoTUoxV0lKK1U0ck44WEw5OXIyRmNyM2pTL1dnTTEyMGdtS1lLNUQyVmI2Q1Y1czhpbVBJZHQ5SWdhdkpFcXZYcWpoT0lHMkRmVUZydXQrL0g5dVBPVHZWdEZjaVBkYVh2UDRPcFZLeG9WUUxMMExucXhISy9uRisxcjIwRXFnSkhQYkI0MTZ5eXF5TkFvRTFBTUxYUmFreUFRRlZBTUZYbDFCRWcwQ1lnbU5wb05TWkFvQ29nbUtweTZnZ1FhQk1RVEcyMEdoTWdVQlVRVEZVNWRRUUl0QWtJcGpaYWpRa1FxQW9JcHFxY09nSUUyZ1FFVXh1dHhnUUlWQVVFVTFWT0hRRUNiUUtDcVkxV1l3SUVxZ0tDcVNxbmpnQ0JOZ0hCMUVhck1RRUNWUUhCVkpWVFI0QkFtNEJnYXFQVm1BQ0Jxb0JncXNxcEkwQ2dUVUF3dGRGcVRJQkFWVUF3VmVYVUVTRFFKaUNZMm1nMUprQ2dLaUNZcW5McUNCQm9FeEJNYmJRYUV5QlFGUkJNVlRsMUJBaTBDUWltTmxxTkNSQ29DZ2ltcXB3NkFnVGFCQVJURzYzR0JBaFVCUVJUVlU0ZEFRSnRBb0twalZaakFnU3FBb0twS3FlT0FJRTJBY0hVUnFzeEFRSlZBY0ZVbFZOSGdFQ2JnR0JxbzlXWUFJR3FnR0NxeXFralFLQk5RREMxMFdwTWdFQlZRREJWNWRRUklOQW1JSmphYURVbVFLQXFJSmlxY3VvSUVHZ1RFRXh0dEJvVElGQVZFRXhWT1hVRUNMUUpDS1kyV28wSkVLZ0tDS2FxbkRvQ0JOb0VCRk1icmNZRUNGUUZCRk5WVGgwQkFtMENncW1OVm1NQ0JLb0NncWtxcDQ0QWdUWUJ3ZFJHcXpFQkFsVUJ3VlNWVTBlQVFKdUFZR3FqMVpnQWdhcUFZS3JLcVNOQW9FMUFNTFhSYWt5QVFGVkFNRlhsMUJFZzBDWWdtTnBvTlNaQW9Db2dtS3B5NmdnUWFCTVFURzIwR2hNZ1VCVVFURlU1ZFFRSXRBa0lwalphalFrUXFBb0lwcXFjT2dJRTJnUUVVeHV0eGdRSVZBVUVVMVZPSFFFQ2JRS0NxWTFXWXdJRXFnS0NxU3FuamdDQk5nSEIxRWFyTVFFQ1ZRSEJWSlZUUjRCQW00QmdhcVBWbUFDQnFvQmdxc3FwSTBDZ1RVQXd0ZEZxVElCQVZVQXdWZVhVRVNEUUppQ1kybWcxSmtDZ0tpQ1lxbkxxQ0JCb0V4Qk1iYlFhRXlCUUZSQk1WVGwxQkFpMENRaW1ObHFOQ1JDb0NnaW1xcHc2QWdUYUJBUlRHNjNHQkFoVUJRUlRWVTRkQVFKdEFvS3BqVlpqQWdTcUFvS3BLcWVPQUlFMkFjSFVScXN4QVFKVkFjRlVsVk5IZ0VDYmdHQnFvOVdZQUlHcWdHQ3F5cWtqUUtCTlFEQzEwV3BNZ0VCVlFEQlY1ZFFSSU5BbUlKamFhRFVtUUtBcUlKaXFjdW9JRUdnVEVFeHR0Qm9USUZBVkVFeFZPWFVFQ0xRSkNLWTJXbzBKRUtnS0NLYXFuRG9DQk5vRTdyZDExdmdjQk9MNlB4bmozaGpQenVHRUR6ekhwMlAvR0tZekV4Qk1aM2JCSnB4dUJsQUUwbWViZnEveUQrL2Q4VDNtOXp5QlQ0dFRDQWltVXlpdjZ4anhneHJUbTJQOFpJd3Z4NGlQOUsvU0QyOThMNitOOGFjeC9qNkdjQm9JSmdLZEF2R3hLNllmamhFL2dQSGtFMDg4c2J6dk9IVC9mZnV1YmIrZkRaT1lIbHpNZkQwWEFVOU01M0tsNXA1blBqVmxRT1hyQ0phWWRyMk9iY3NuajF6T2ZaOFg3dml5N0prOWNyZmNGcStYZlhLLzNMN2NsclU1WCs2VHk0L0h4bmhpK2lKM01qOHZBY0YwWHRkcjl0bkdEL3p5aDM2NUhNZGF2czdsbkc5dmo5ZTdwcXYyWDI1YjF1YjZuQyszYlM4djk4bmwvSy9OK1hxN3h1dVZDd2ltbFYrZzV0TjdWWDl3WDlYdnEvbDJXRS83ZkdkWnp4azVFd0xIQ2VUSHVlTzZxTDVSQWNGMG8vd08zaURnYWFrQjlkUXRCZE9weFIydlc4QVRVN2Z3Q2ZvTHBoTWdPOFJKQlR3eG5aUzc1MkNDcWNkVlZ3SUVqaEFRVEVmZ0tWMmxnSTl5cTd3c2g1MlVZRHJNeTk3ckYvQlJidjNYNk5vempQK1A2ZGdMNlIzcVd1YldIZmkveUJzZVRGNDB1WWxYUitXS0o2YWJ1R1E5eDh3Znhwem5VUzc3UWQzZUwvZVArWExiY2ptMzVickw1dGtydHgvNmVsa1h5OHZYMlN2bnkrMjVYODV6SC9NekU0Z25KaGZ4ekM3YTVuVHpsM2x6bnQvRjlqdlY5dXZMOXN2MU1WL1dMSmN2MjViNzVEeDdWVjh2NjViTDJYYzVYMjdQNVllYkhmenk3bExxdE10SDVVcGN5TitOOGRZWWo4YUlKNmhER2thd3ZUdkdYemUxOFV1aHBsNkJ1R1p4amI0MnhnL0dpTDh1RUZQK1VGNjh1dDFmNHo2TVgrTDk4eGp2alpGbVk5SFVLQkJ2a25FL3ZqM0dMemZIT1NSUFl0L284WG5VZmp4R3JLaU9kNkxKbUxiZnVTL1crdG9oSUlUMlYyVzF2OVd4ZStZVDZ2ZEdvMnFlUEsrTEo1NlB4b2cvR3BaUFRHUHgyaW1LWTRvVGlUOHhZVHF0UVBqSEQ1dzNnNnZkNDhuSlUvelZSak8zWmk3RVUxTSt5ZWU2Zlk0VCswWW1mUkpmWXNRVTgzMy9NWHg1TU85SXovbE8vaVd1Z1RlRms3TTc0QjRDeXpmTnVFLzN6WWpjOS82K1FiVEh1ZGlGQUFFQ2N3UUUweHhIWFFnUW1DZ2dtQ1ppYWtXQXdCd0J3VFRIVVJjQ0JDWUtDS2FKbUZvUklEQkhRREROY2RTRkFJR0pBb0pwSXFaV0JBak1FUkJNY3h4MUlVQmdvb0JnbW9pcEZRRUNjd1FFMHh4SFhRZ1FtQ2dnbUNaaWFrV0F3QndCd1RUSFVSY0NCQ1lLQ0thSm1Gb1JJREJIUURETmNkU0ZBSUdKQW9KcElxWldCQWpNRVJCTWN4eDFJVUJnb29CZ21vaXBGUUVDY3dRRTB4eEhYUWdRbUNnZ21DWmlha1dBd0J3QndUVEhVUmNDQkNZS0NLYUptRm9SSURCSFFERE5jZFNGQUlHSkFvSnBJcVpXQkFqTUVSQk1jeHgxSVVCZ29vQmdtb2lwRlFFQ2N3UUUweHhIWFFnUW1DZ2dtQ1ppYWtXQXdCd0J3VFRIVVJjQ0JDWUtDS2FKbUZvUklEQkhRREROY2RTRkFJR0pBb0pwSXFaV0JBak1FUkJNY3h4MUlVQmdvb0JnbW9pcEZRRUNjd1FFMHh4SFhRZ1FtQ2dnbUNaaWFrV0F3QndCd1RUSFVSY0NCQ1lLQ0thSm1Gb1JJREJIUURETmNkU0ZBSUdKQW9KcElxWldCQWpNRVJCTWN4eDFJVUJnb29CZ21vaXBGUUVDY3dRRTB4eEhYUWdRbUNnZ21DWmlha1dBd0J3QndUVEhVUmNDQkNZS0NLYUptRm9SSURCSFFERE5jZFNGQUlHSkFvSnBJcVpXQkFqTUVSQk1jeHgxSVVCZ29vQmdtb2lwRlFFQ2N3UUUweHhIWFFnUW1DaHdmMEt2RExkN0UzcHBzYi9BczdIcjAvMTN2NVY3eHIxNTkxWis1emZ6VFVlZVBCN2o2Q3lZRVV5ZmJBd2UzWXpGclQ1cS9OQkZRSmxlRmdnYndmMnlTK2VhSjV2bUh4OTdrQm5COU00NGlZZGp2REZHbkpoM3FJSFFPRVVRUFJqai9USCtOb1p3R2doYlU1cThQZFovWjR3dngzQmZiaUZOZmhuM1plVEovOGI0N296ZWNZTkgwd2lWbUJ2bllmQ2JjYTFpaXBBeXZTaVFiN2kvR0t2ZHorZGpFRSs0Y2IwK3pRdjQ0bVU5N0ZWZStNT3E3RjBSaUhmOWVQZVBKOVF2S2cxdVdVMys4MExNWjl6cnQ0eXYvTzNHZlhyVUUrcU1pNVVua1BQdDd5YUNLN2ZsY3N4aml2VzU3dm1LSFY5MmJjOTF5ejdMMHR3ZTY1YkwrWHE1Ynl4dm45LzI5bmlkeDRybDdmTmVIaU9YdCtmYlBlSjFUTXRqWDZ6WnZTNzN6ZjF6bmpYbUx3dWtVY3lYeTNsdG9pS1dZOHJ0eTIwWFcxNzh1dHcvOTgzNWNzL3RkZms2NTFmdG05dGkzNXppL1BMMXZ1ZWF0WWNjTTJ0eW5yVTV6L1V4MzdWdXViMjhQQ09ZNHVBSnRldEVsdHR5T2VmWDFWNjJQZXR6dm4zYzVmcmw4bVg5c241NzMxeS9xMjY1NzY3bFhKZnpYVDJ1Nm4vZC9zdGF5OWNMWEhZZGx1djNNVi91bjhzNVg1N0Y5cnA4bmZPcjlzMXQyL3RlOXpycnR1ZmJkYkY5MTdydHV1Vit1L2JmdFc1WGo0UFg1WC9xUDdoUUFRRUNCTG9FQkZPWHJMNEVDSlFGQkZPWlRpRUJBbDBDZ3FsTFZsOENCTW9DZ3FsTXA1QUFnUzRCd2RRbHF5OEJBbVVCd1ZTbVUwaUFRSmVBWU9xUzFaY0FnYktBWUNyVDNWaGgyLy9VZG1QZmtRTVQyQktJLy9NNy96UkV6cmQyOFhKbEF2SEwxbkhkNHRjQlRGY0xwRkhjMis3dnE2M1dzRFd1Vi93dHA2ZHhnNysrT2FOWnY1NnlhV2ZXSlBEYXBtLzhJcS9wYW9IOHl3dHBkdlhldHE1RjRQVUlvMzlzenViek1mZlJiaTJYNXZMemlMOFErUFV4UHR6c2trOEZsMWZjdmkxcDhxL3hyY2Q5L2NFWWNhLzdHRHdRVmp6bEU5T24vd2ViYTBWNVU2V0pxZ0FBQUFCSlJVNUVya0pnZ2c9PSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIl0sImV4dGVuc2lvbnMiOlsiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiMzQxZTRkYTkzYzJlODEwMzVhOWZhYWQ4ODcxMzUyMDAiLCJvcHRpb25zIjp7InJrIjp0cnVlLCJjbGllbnRQaW4iOnRydWUsInVwIjp0cnVlLCJ1diI6dHJ1ZX0sIm1heE1zZ1NpemUiOjEwMjQsInBpblV2QXV0aFByb3RvY29scyI6WzFdfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTAxLTA0In1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNC0wMS0wNCJ9LHsiYWFndWlkIjoiNjk3MDBmNzktZDFmYi00NzJlLWJkOWItYTNhM2I5YTllZGEwIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI2OTcwMGY3OS1kMWZiLTQ3MmUtYmQ5Yi1hM2EzYjlhOWVkYTAiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiUG9uZSBCaW9tZXRyaWNzIE9GRlBBRCBBdXRoZW50aWNhdG9yIn0sImRlc2NyaXB0aW9uIjoiUG9uZSBCaW9tZXRyaWNzIE9GRlBBRCBBdXRoZW50aWNhdG9yIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfSx7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciLCJyc2Fzc2FfcHNzX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiLCJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJzb2Z0d2FyZSJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJibHVldG9vdGgiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUJ3RENDQVdlZ0F3SUJBZ0lVSUYyQWl3dWhRT1R1YnhWeWczWDEzNGlXblFvd0NnWUlLb1pJemowRUF3SXdOakVZTUJZR0ExVUVBd3dQVUc5dVpTQkNhVzl0WlhSeWFXTnpNUXN3Q1FZRFZRUUdFd0pPVHpFTk1Bc0dBMVVFQnd3RVQzTnNiekFlRncweU16QXpNalV4TmpFNE1UVmFGdzB6TXpBek1qSXhOakU0TVRWYU1EWXhHREFXQmdOVkJBTU1EMUJ2Ym1VZ1FtbHZiV1YwY21samN6RUxNQWtHQTFVRUJoTUNUazh4RFRBTEJnTlZCQWNNQkU5emJHOHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUVNLbU9UMzlPNnhBSG5GWHhVWEZvdHd1cmhvWkFxeTE4V3E3UUoyRkVVaCt5WWN4blpNcTQyTEZYbWRVSDJCUG9rN3haSURUcVV5alp3UExGODhTd0ZvMU13VVRBZEJnTlZIUTRFRmdRVVZuZExvc2pSK3B3S3NkMXJjQVo5NDFKcldOMHdId1lEVlIwakJCZ3dGb0FVVm5kTG9zalIrcHdLc2QxcmNBWjk0MUpyV04wd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBS0JnZ3Foa2pPUFFRREFnTkhBREJFQWlCRVlZZzVOblNCNEF3czFFeWVsa21Rano2TmRGNVpSeGhBTVZwb29hcnQrd0lnV1Y1VWV5TjNYa2pOdTc5TGQrdDBMMno5eE1YSnQ3TlJZaEVQbUxna2Z3dz0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBYU1BQUFHakNBWUFBQUNCbFhyMEFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFIVG1sVVdIUllUVXc2WTI5dExtRmtiMkpsTG5odGNBQUFBQUFBUEQ5NGNHRmphMlYwSUdKbFoybHVQU0x2dTc4aUlHbGtQU0pYTlUwd1RYQkRaV2hwU0hweVpWTjZUbFJqZW10ak9XUWlQejRnUEhnNmVHMXdiV1YwWVNCNGJXeHVjenA0UFNKaFpHOWlaVHB1Y3pwdFpYUmhMeUlnZURwNGJYQjBhejBpUVdSdlltVWdXRTFRSUVOdmNtVWdPUzR3TFdNd01EQWdOemt1TVRjeFl6STNabUZpTENBeU1ESXlMekE0THpFMkxUSXlPak0xT2pReElDQWdJQ0FnSUNBaVBpQThjbVJtT2xKRVJpQjRiV3h1Y3pweVpHWTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5MekU1T1Rrdk1ESXZNakl0Y21SbUxYTjViblJoZUMxdWN5TWlQaUE4Y21SbU9rUmxjMk55YVhCMGFXOXVJSEprWmpwaFltOTFkRDBpSWlCNGJXeHVjenA0YlhCTlRUMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzk0WVhBdk1TNHdMMjF0THlJZ2VHMXNibk02YzNSU1pXWTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl6Vkhsd1pTOVNaWE52ZFhKalpWSmxaaU1pSUhodGJHNXpPbk4wUlhaMFBTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZjMVI1Y0dVdlVtVnpiM1Z5WTJWRmRtVnVkQ01pSUhodGJHNXpPbmh0Y0QwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOTRZWEF2TVM0d0x5SWdlRzFzYm5NNlpHTTlJbWgwZEhBNkx5OXdkWEpzTG05eVp5OWtZeTlsYkdWdFpXNTBjeTh4TGpFdklpQjRiV3h1Y3pwd2FHOTBiM05vYjNBOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZjR2h2ZEc5emFHOXdMekV1TUM4aUlIaHRjRTFOT2s5eWFXZHBibUZzUkc5amRXMWxiblJKUkQwaWVHMXdMbVJwWkRvM1lXWTNNakF5TlMweVpESmhMVFpqTkdFdE9XWXlaQzB4TWpGaU1qRmpPRFV3T0RjaUlIaHRjRTFOT2tSdlkzVnRaVzUwU1VROUltRmtiMkpsT21SdlkybGtPbkJvYjNSdmMyaHZjRG8yTWpaaE5EQTFaUzFpWVRsa0xUZzFOREF0WVRjeFlpMWtOR1ZqT1dNM01UVXhORElpSUhodGNFMU5Pa2x1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2WmpJME5ESTVNRGN0WkRWaVpTMDBNV1ZrTFdJMVltRXRaamxsT1dNM1l6a3lZalV6SWlCNGJYQTZRM0psWVhSdmNsUnZiMnc5SWtGa2IySmxJRkJvYjNSdmMyaHZjQ0JEUXlBeU1ERTBJQ2hYYVc1a2IzZHpLU0lnZUcxd09rTnlaV0YwWlVSaGRHVTlJakl3TWpJdE1UQXRNRFpVTVRNNk1UZzZOVGdyTURJNk1EQWlJSGh0Y0RwTmIyUnBabmxFWVhSbFBTSXlNREl5TFRFeUxURTBWREV4T2pNeE9qSXhLekF4T2pBd0lpQjRiWEE2VFdWMFlXUmhkR0ZFWVhSbFBTSXlNREl5TFRFeUxURTBWREV4T2pNeE9qSXhLekF4T2pBd0lpQmtZenBtYjNKdFlYUTlJbWx0WVdkbEwzQnVaeUlnY0dodmRHOXphRzl3T2tOdmJHOXlUVzlrWlQwaU15SStJRHg0YlhCTlRUcEVaWEpwZG1Wa1JuSnZiU0J6ZEZKbFpqcHBibk4wWVc1alpVbEVQU0o0YlhBdWFXbGtPalkyWkRobFptTmhMVE16TnpJdE5qWTBNeTFpTWpoaExUVTNZMlF6T0dKa056QmhNaUlnYzNSU1pXWTZaRzlqZFcxbGJuUkpSRDBpWVdSdlltVTZaRzlqYVdRNmNHaHZkRzl6YUc5d09qa3pNbVpqTm1FNExXWXdNamN0TVRGbE5DMWlPVGMwTFdRNU1tTmlaR1U1Wm1ObE5pSXZQaUE4ZUcxd1RVMDZTR2x6ZEc5eWVUNGdQSEprWmpwVFpYRStJRHh5WkdZNmJHa2djM1JGZG5RNllXTjBhVzl1UFNKellYWmxaQ0lnYzNSRmRuUTZhVzV6ZEdGdVkyVkpSRDBpZUcxd0xtbHBaRG95WW1Zd056WXpOQzAxTVRrM0xUUmxZall0WW1ZM1l5MW1PR1ptT1Raa1lXSmtNbVFpSUhOMFJYWjBPbmRvWlc0OUlqSXdNakl0TVRFdE1ETlVNVEU2TlRjNk16TXJNREU2TURBaUlITjBSWFowT25OdlpuUjNZWEpsUVdkbGJuUTlJa0ZrYjJKbElGQm9iM1J2YzJodmNDQXlOQzR3SUNoTllXTnBiblJ2YzJncElpQnpkRVYyZERwamFHRnVaMlZrUFNJdklpOCtJRHh5WkdZNmJHa2djM1JGZG5RNllXTjBhVzl1UFNKellYWmxaQ0lnYzNSRmRuUTZhVzV6ZEdGdVkyVkpSRDBpZUcxd0xtbHBaRHBtTWpRME1qa3dOeTFrTldKbExUUXhaV1F0WWpWaVlTMW1PV1U1WXpkak9USmlOVE1pSUhOMFJYWjBPbmRvWlc0OUlqSXdNakl0TVRJdE1UUlVNVEU2TXpFNk1qRXJNREU2TURBaUlITjBSWFowT25OdlpuUjNZWEpsUVdkbGJuUTlJa0ZrYjJKbElGQm9iM1J2YzJodmNDQXlOQzR3SUNoTllXTnBiblJ2YzJncElpQnpkRVYyZERwamFHRnVaMlZrUFNJdklpOCtJRHd2Y21SbU9sTmxjVDRnUEM5NGJYQk5UVHBJYVhOMGIzSjVQaUE4Y0dodmRHOXphRzl3T2tSdlkzVnRaVzUwUVc1alpYTjBiM0p6UGlBOGNtUm1Pa0poWno0Z1BISmtaanBzYVQ1NGJYQXVaR2xrT2pjNU1EWTRNekEwTnpOQ09ERXhSVVJDUlRNMU9FTXlORU5FUkRreVF6RTFQQzl5WkdZNmJHaytJRHd2Y21SbU9rSmhaejRnUEM5d2FHOTBiM05vYjNBNlJHOWpkVzFsYm5SQmJtTmxjM1J2Y25NK0lEd3ZjbVJtT2tSbGMyTnlhWEIwYVc5dVBpQThMM0prWmpwU1JFWStJRHd2ZURwNGJYQnRaWFJoUGlBOFAzaHdZV05yWlhRZ1pXNWtQU0p5SWo4Kzhic0UyZ0FBSmM5SlJFRlVlSnp0M1htWVpHVmg3L0Z2ZGZmc0t6UERJRHNJU2hJVTkyZ0FSVkZBcHhSYzRuS3BtRTFOWXRURXVHYTlSbk85aVV0UUU2L0dOUnBUZU4waUxqV2lJSnBnM0FJb0lPaU5qQ3lEd3pZRE16MTdMMVgzajdkTGlwbzZwNnVxNjlSYnArcjdlWjUrZXFiN0xHL05kSjlmdlh1aFZxc2hhZmdWTHQ1Y3FQOXg3bk1Ob0hiaHBsb2J4eFhxeHpkZk51V1dqY2VQTmYzOUYzK3UzMy91dnIrNFQzTzVOTndLaHBHVWpZYUhPdEQyUXovcHVNWnIxVG9Na0xUQWFEeW44ZmhXbitIK1VLazFuVmROT0s1VldXb041N1VNcUtidkhSSmM5ZGRzWUEwUHcwanFrZWJ3YVhWSTAyZG8vUUJ1REora0IzcnpOUnVQYVQ2M0hoYU5BVEhXY0h5MTRiemEzUGVxSEJwaWpmY2VBMlliem11K1ozWHU4M2pUdGVyM3FEWWMzMXhycXF1ZlYyM3h2VjhFdDZFMEhBd2pxUXZ6QkU5ejZMUUtoOGFIOERqMzF6YWFqMHU2VG5PQTFCLzZqVFdYeHVDQkJ3WlE0L2ViWDB0emNOVFBxVitudVZhVWRKM21vSjFwdUVhOTdOVzVqOFpnYkM1TC9XdXpKTE5wTCtjTUk2bE5iZFI4R2grMDljL05EK1Q2Y1duOU1mVUhmL012WjNNZlRPTTFtOE9wVlMwczdYdjEwQm5uZ1dXcWw2WGE5UGZtUUMxd2YwMnBNWnhtZ1FrZUdEYk50YWQ2TGFzZXN2Vy9ONnVYY2JiaDd5M1ZMdHpVcWphbEFXWVlTVzFvQ3FKV29kVDhqci94YTQzbkZGcjh1VEdZYWkzT3EvTEFrS0RoK0ZaOU9QVjcxd09xOFhxelBEQU1tOHZUcXNaVXY4Y0VEMnc2YTFXdWNWcUhVcXNhVHoyQUdzT3BzZm11WGw2YXZsNXRjVjRyaC9TdGFYQVpSbEtLRnJXaDVyK1BKWHh1ZnRqWHY5NzQ4RzRPZ2Vaelc5VTY2c2JuUGpkZXE5VUFnY2FRcURaOGJqeDJ2T0djOGFiN05JWlg0MGRqRGFhNXY0bW1lelhYbXVybjEydE5NM1BuVERXOHB1YkFtV242ZXVQM201czNIL0RaUU1xSGlkZ0ZrQVpWUW0ybytXdU50WXd4RG4xd1EvZzlhL3hhNDBPNk1haWErMldhbTh6cTZnLzZ4bnZVdjE2dkVVMXdhQ0EwMTZLYSs0QWFBNDZHNDhjYXJsVy96MFREc2ZWN05ZZFIvVFUxMWx3YWF6LzFtdEg0M0hrVGMzOCsyUEQ5NXVzMGhsTzE2V3VOeHg0eUVrK0R6WnFSMUNTaGI2aFY4MXRTRU5VL2ovUEEwS2gvTkw0Sm5HaTZWcXRhVFdNWTFJT2wzaHpXcXYrbXNWbXU4Yzl3LzhPL1ZjQXRicnAvL2RqNmRhYm5qbWw4NkRjSDFDeXdhTzVyMHczSHRXcG1xOWQyNmwrci8zMTY3cHlEVGNmWGowazZyekdVbW10SDlpRU51TGJEcUZDWXIrOTJCSlFySzRIRGdRM0FlbUFac0didXV5dXhwamtza3NLbytYT3JnQnJuMElDcWY3MzV2RllmTlE2OVpuUGZUS3NtdWNiUmRJMWxialh5cmJtNXIzbU9VTks5NnRkb3JKbTErbDQ5RkJ0cmFvMkRJQnFEb3NvRGF6ajFBUXIxejYyKzN1cWN4dENpNGZwcGcwQjZaUmJZUGZmblNXQS9zR1B1NDI1S3hkMUpKNDZLZG5MR01HcFdyaXdDZmdVNERYZzRjREp3QXZCZzdnOGVTV3JYYnVCbndDM0FGdUI2NEZyZ1JrckZneW5uRFEzRHFCM2x5aEhBbVhNZlp3Q1B3aHFPcE96TkF0Y0Ivd2w4QzdpU1VuRmIzQ0psd3pCcXBWd1pBMzROZUFhd2lSQStralFJcmdlK012ZHhKYVZpMmtUZjNEQ002c3FWQW5BNjhDTGdlY0NSY1Fza1NmTzZCL2czNEZQQXYxTXE1bllRaG1GVXJqd0krRjNncGNDSmtVc2pTZDI2SGZnSThCRkt4YTJ4QzlPcDBRMmpjdVVNNERYQUJkdy9pa21TOHE0R2JBWXVvbFM4SW5aaDJqVmFZUlNhNGk0QTNrRG9FNUtrWVhZTjhBN2cwNFBlaERjNllWU3VQQnQ0RS9ESXVBV1JwTDc3TWZBVzRGT1VpZ081aXNId2gxRzVjanB3RWZENDJFV1I1dEU4R1RQcGMrTmswMVpMRU5IaWF3UDR5NmtJZmdpOGpsTHg2N0VMMG14NHc2aGNPUTU0RzJGMG5DVHBmbDhnaE5KTnNRdFNOM3hoVks2TUE2OEcvb2F3Rkk4azZWQlR3RnVCdjZWVW5KN3Y0S3dOVnhpVks0OGdERzE4VE55Q1NGSnUzQUM4aEZMeGV6RUxNUnhoRkZaTWVBT2hOdVF5UFpMVW1Tcnd0OEJmVXlyT3pIZHdGdklmUnVYS01jQW5nQ2YzLythU05GUytCNVFvRmJmMCs4YnQ1RXp6WGllRG8xeDVHbUYweUpQakZrU1Noc0xqZ1dzb1Z5NklYWkJXQnE5bUZDYXZ2cEhRK1RhNFlTbEorZlZXNEUzOVdvZzFmODEwNWNvUzRPUEFDN08vbVNTTnRBcndRa3JGdlZuZktGOWhWSzZzSjR5UFB5UGJHMG1TNXZ3QUtGSXEzcEhsVGZJVFJtR2d3aFhBUTdLN2lTU3BoYTNBMlZsT2tzM0hBSVp5NVdUZ3V4aEVraFREc2NCM0tGY2VIck1RY2NNb3ZQZ3JnYU9qbGtPU1J0c0c0SnVVSzlIVytZelhUQmRxUk44Q2p1anRoU1ZKWGRvSlBJbFM4ZnBlWG5Sd20rbktsV09CYjJJUVNkSWdXUXRjUWJueTBIN2Z1UDloVks1c0lBeFdzR2xPa2daUGVFYVhLMzE5UnZjM2pNcVZwWVRoMnlmMzliNlNwRTRjRFZRb1YxYjE2NGI5QzZPd3NzSy9BS2YzN1o2U3BHNDlBdmpNM05ZOW1ldG56ZWd2Z09mMzhYNlNwSVU1ajdDUmFlYjZNNXF1WERrUDJFenNvZVNTcEc2OGdGTHhNOTJlUEJnck1JUXR3bjhJSE5iZEJTUkprZTBGSGt1cCtKTnVUbzQvdER1ME5aWXhpQ1FwejFZQW41eGJ6RG9UV1RlYi9SbHdac2Iza0NSbDc1R0VyU2N5a1YwelhibnlXTUthYzMwWmlTRko2b3V6S1JXLzBja0o4ZnFNeXBVSjRDckMwRUJKMHZDNENUaU5VbkYvdXlmRTdETjZQUWFSSkEyams0Ry83dlZGZTE4ektsY2VETndJWk5iUkpVbUthaFo0TktYaWRlMGNIS3RtOUU0TUlra2FadVBBdTN0NXdkNkdVYm55Rk9BNVBiMm1KR2tRUFlWeXBXZlArOTQxMDRXMTU2NGhEUCtUSkEyL0xjQXZVU3JPcEIzVTcyYTZGMklRU2RJb09RbDRhUzh1MUp1YVVia3lCdndJK09WZUZFcVNsQnRiZ1pNcEZhZVNEdWhuemVnRkdFU1NOSXFPQlg1M29SZnBWUmk5c1VmWGtTVGx6K3ZuV3NpNnR2QXdLbGVlaG4xRmtqVEtIZ3c4ZHlFWDZFWE42TFU5dUlZa0tkOFdsQVVMRzhCUXJweElHTnEzZ0ozM0pFbEQ0cEdVaXRjMmY3RWZBeGgrRjROSWtoUjBQY3k3KzVwUjJEaHZLM0JrdHplWEpBMlZYY0NSelN0NloxMHpPZ2VEU0pKMHZ6WEFCZDJjdUpBd2V2NEN6cFVrRGFldXNxRzdacnB5WlJGd0YzQllOemVWSkEydEE4RGhsSXA3NmwvSXNwbnVLUmhFa3FSRExRVTJkWHBTdDJIVThZMGtTU09qYjJIMGpDN1BreVFOdjZmUGJTdlV0czdES0d3ci90Q096NU1rallvamdFZDFja0kzTmFPenVqaEhralJhT3NxS2JzTG85QzdPa1NTTmxvNnlvcHN3T3JPTGN5UkpvNldqck9oc25sRzVzZ2JZMlVXaEpFbWo1M2hLeGR1eW1HZjA4TzdLSTBrYVFhZTFlMkNuWWRUMmhTVkpJODh3a2lSRmwxa1luZHpoOFpLazBkVjJablFhUmlkMmVMd2thWFMxblJudGo2YTdlUE00WVRYV2lTNExKVWthUFd0cUYyNmFuTytnVG1wR0Q4SWdraVIxNXRoMkR1b2tqRFoyV1JCSjB1aHFLenM2Q2FNTlhSWkVralM2MnNxT1RzSm9mWmNGa1NTTnJyYXlvNU13V3Q1bFFTUkpvNnV0N09na2pGWjNXUkJKMHVocUt6dTYzZWxWa3FTZTZTU01WbVpXQ2tuU3NHb3JPem9KSStjWVNaSTYxVloyMkV3blNZck9NSklrUldjWVNaS2lNNHdrU2RFWlJwS2s2QXdqU1ZKMGhwRWtLVHJEU0pJVW5XRWtTWXJPTUpJa1JXY1lTWktpTTR3a1NkRVpScEtrNkF3alNWSjBocEVrS1RyRFNKSVVuV0VrU1lyT01KSWtSV2NZU1pLaU00d2tTZEVaUnBLazZBd2pTVkowaHBFa0tUckRTSklVbldFa1NZck9NSklrUldjWVNaS2lNNHdrU2RFWlJwS2s2QXdqU1ZKMGhwRWtLVHJEU0pJVW5XRWtTWXJPTUpJa1JXY1lTWktpTTR3a1NkRVpScEtrNkF3alNWSjBocEVrS1RyRFNKSVVuV0VrU1lyT01KSWtSV2NZU1pLaU00d2tTZEVaUnBLazZBd2pTVkowaHBFa0tUckRTSklVbldFa1NZck9NSklrUldjWVNaS2lNNHdrU2RFWlJwS2s2QXdqU1ZKMGhwRWtLVHJEU0pJVW5XRWtTWXJPTUpJa1JXY1lTWkt5MUZiT0dFYVNwQ3dWMmpuSU1KSWtaY21ha1NRcEh3d2pTVkowaHBFa0tVdTFkZzR5akNSSjBSbEdrcVFzT1lCQmtoVGRlRHNIR1VhU3BDeE5GQzdlUE85Y0k4TklrcFFsYTBhU3BId3dqQ1JKV2FxMmM1QmhKRW5LMG16dHdrM3p6alV5akNSSldacHA1eUREU0pLVUpadnBKRW41WUJoSmtyTGtma2FTcE9nTUkwbFNQaGhHa3FRc09ZQkJraFNkWVNSSmlzN045U1JKMFZremtpVGxnMkVrU1lyT01KSWtSV2NZU1pLaU00d2tTZEVaUnBLazZBd2pTVkowaHBFa0tUckRTSklVbldFa1NZck9NSklrUldjWVNaS2lNNHdrU2RFWlJwS2s2QXdqU1ZKMGhwRWtLYnFKMkFVWUJLdkc0WEhMNEtRbGNQeGlPR0lSTEM3QXNrTDQvbVFWcG11d2RRcHVtWUlmSFlBYkRzQnNXL3NYU3NxN1ZlTncrbkxZWFEzYmxoNm93bFFOWm1xd2QyN3J1UHIzOXM4OUw5U1prUTJqQnkyQzU2eUJaNjZHVTVkMVhrWGNVNFh2N0lYUDc0TExKdUhnQVA3d2ZmeDRlT2lTT1BmZVBRdm5idW50TmYvdUtEaHJaVyt2MllubjNneDNUUGZ1ZWk5WkR5OWQzN3ZyUVhnSTNqTUQvMzBRcnRrSFYreUJIVE85dlVjdnZPVklPR2RWOHZmM1ZPRVpXOExEZmhBY3R3ZytkRnhuNTh6VVFqQkJlRU1Mc0hvc0JOYU9XYmgzQm02ZGdtc1B3QS8yd1hYNzI5d1NkVWlOWEJpZHVoUmV2UkhPWFFXRkJWeG41Vmo0WlRwblZmakYrY1M5OElIdGNPOXN6NHE2WUVkTXdOR0w0dHg3ZHdZTndCc2l2aDZBOFI1ZmIvVjROcS9uaE1Yd3VPVlFPaXc4M0w2eEd6NjRJN3g1R2dSTHgrQUZhMkg1UEQ4alo2NkFiKzdwUzVFeU1WRUlOU3E0LzNQZDZuRTRjVEU4WmprOGQrNXJkOC9BMXlhaGZGOW9lUmsxSTlObmRQUWkrT0N4OEpXVDRMd0ZCbEd6bFdQdzhnM3c3WWZDcXc0UFA0VFNJQmdEbnJvS1BuVUNmT3k0dUdGZWQvYksrWU1JNE5scnNpL0xJTms0QWIreExqeWovdThKOEdzcllwZW92MFlpakg1ckhWeCtNang5ZGJiM1dUNEdyOThZZnBnZXZpemJlMG1kT25zVmZHM3V6VmhNRjdRWk11ZXVEbjIzbytqMEZlRU54UHVQaGFNRzRBMUVQd3gxR0MwYmczODhCdjdtU0ZqUngxZDZ5aEw0L0ludy9MWDl1NmZVamxYajhJSGo0TVhyNHR4LzVWZ0l4WGFQZlZyazRJeXR1QnErZWxMMmI2UUh3ZENHMGZvSitMY1QyMzhYMW1pbUZ0cHZiNTRLSStqdW5PNjhZM0Z4QWY3K2FQaXpJM3JiSkNndDFCamhEZHFtQ0ErNGMxZkRrZzUrSVo0NUFnL2grYXdaRDEwTXcvNHNHY29CRE9zblFwdnJLVzJPSk50ZmhjdDJ3My9zZ2F2M2h4RXV6YU40RmhYQzBPOWZYUTVQWGhrKzJ1a2Jldm1HMEdIN3BqczZmaG1adWZFQXZQbk9iTy9SejFGUTIyZmdGYmRuZjU5NytqZ3E3Yk03NFRNN096dG5XUUdPV3d5UFhSNXFIeXRUM21xT0VkNHMzWEFnL0x6M1M2ZHZEczlaSFZvMTlnNzRNTE9yOXJVM2VHbGZOYnllZGVOdzhwSVFOTzE2K1lZd0tPbTEyNFp6V3NuUWhkSFNNZmpvY2UwRjBiWnBlTjkyK0xlZFlVUmNtdWthL09SQStQaVhlOFBJcmhldmc1ZXVPM1NrVExQZldSY2VtUDk0VDlzdkkxT1RzNE16c3FvWER0YUc2L1VBYkozdS9qVjk3Tjd3d0h2eE92aWp3NU5EYWNVWXZQVkkrSTFidXk5bko5YU93eE03N0pSZlVnaE5kVi9ZbFUyWmV1VWRkM2YzLzNYQ1luaktTdGkwQmg2L2ZQN2puN3NXN3BxQnY3MnI4M3NOdXFGcXBpc0E3endLSGpYUDRJR3BXdmpQZk9KUFE3RE1GMFN0YkorQmQ5ME5aLzQwdkl1ZHorczN3dmtqTmpwSThleXR3ajl0aDNOdVNoOG0vS1NWY0VhZlJtMXRXdDI2TmVHMnFmU1dnMkVlVlhmTEZQenp2ZkQ4bStIcFcyRHo1UHpudkh4RENMQmhNMVJoOUpMMTh6L3d0eHdNLytudjM5NmJXZEwzemNKcmZnNi90elZVd2ROY2REUThKTklrVkkybW4wL0RoYmVrVDlidDljVGJKRW0vbTVWSitQSmtjci9zazFaMjFweVZWemNlZ0QvWUNpKzZCVzZmWjNMMVJVZUhtdVl3R1pvd2VzZ1MrTk1qMG8vNTlsNjQ0R2E0NldEdjczL3BKRHp2NXZSMjQ4VUYrSWRqUXYrVDFDLzN6Y0tmcDlROHpscVovWVB0aUFsNFFrSU43S3VUb1QvdXV3bk5YSXNLOEl3Ukdzanc3YjFoOVluTGR5Y2ZzMzRDL255ZTUxM2VERVVZRllCM0hwMCtKK0U3ZStGM2JndjlKVm01NFVCNEY1clc3SGZxVW5qbGh1ektJTFh5OWQzd2cvMnR2emRSZ0NkbTNPeXphWFhyaDgyMjZmdkxsZFl2TkdwTjNMdG00V1ZiNFhNN2s0OTUwV0h3c0tWOUsxTG1oaUtNTGxpVDNrOTArM1JvUnR2Zmh4RTVOeDZBVjI1TlArWVBOb1MxOGFSK1NodWRkMXJHRDdWbnIyMzk5Y3BrV0tzTjRDdVR5YU13VDE4UmFnT2paTFlHcjlzR1YrOUxQdWFOUTFRN3luMFlUUlRTLzBObWEvRHlyZUdkUnI5Y3NTZjBTU1ZaTmdhdjI5aS84a2dRcGk0a09XWnhkdmM5ZWxIeW04VkxHenJzZDg3Q3Z5ZVVjUXg0MWdnMTFkWE4xdUNQZjU2OEVQTlpLK0cwSVZudEpmZGg5S3pWNmV0dGZYZ0hYSnZRUEpHbGkrNE9rMmFUUEhkTmFFZVgrdVcycWJEMVFTdnJNK3d6U3BwYmRQZk1vZS82djVqU1ZQZXNFV3VxcTd0dEt2M043WXNQNjE5WnNwVDdNRW9iQ1hUUERGd1VhVzdQd1JxOE9hWFRlS0lRYjBrV2phNFlxOG9uaGNqbUZpUG92clk3dVJidzJPV0RzZEJyREIvWUhtcU9yWnkvSm4yQ2MxN2sraVg4MHRMMEJVbmZ0NzAvL1VSSnJ0aVQzR2tNOE90cmgzdDVEdzJlZmk4OGV0S1NNR2lubFZaemF2Wld3LzVnclJRSWE3V05vcjNWTUNleWxXVWRyUGMzeUhJZFJtbnJWdTJlaFl2djYxOVprdnhUU3ZYNnFKUzJkS25YRmhWZ1hVTFRjRmFyeTV5ZjhEdTZZd2IrSzZGai9zc3BFeitUQmtLTWdrK21QTStHWVVIWlhJZlJlU2xoOU5sZGNXdEZkWmZ0VGwvVExPMDFTTDMwbU9YSnYvQlpOZDhsRGNtK2RIZnkrbXFYNzA2ZUh2R3dwV0VKblZIMDgrbmtBTzkwbWFWQmxOc3dXanVldnY3Y2x3ZGtMYXVaV2hpeW11UlgyMWlQU3VxRnMxUG1FdDJjd1VUd1U1ZUdacnBXMG40L3AycGhJbXlTYmxiaUh4WkpvdzNYVDhBeE9lOVB5MjBZUFRybEliNXpGcTZKTUlJdXlXVXBNNmxQV3phNkc0aXBmMWFNd1F0VFJsMWRsY0h2UzFLdGFOY3NmQzlsN2d3NEFUYko5MVArM2ZJK3hEdTNZZlRMS2JXaWEvWU4xaExyVis5TGJwTmZWSUFUUjdUWlFmM3pKeHZoc0lUaDIvdXFZUW1hWGlxUTBrU1hNcm0xN2x0N2s1c09IN0lrREY0YVJUOUpXZlEyNzgyWHVRMmo0MUwrNGE5TitRK0xZVThWZnBiU0RKTGxoRVBwYWF2U3AwQmNzaXQ1L2xHM0hyVXNlUmgycFkyVnFlZHIzazRhR0RIc2RzNG1UK0RQKy9ia3VaMTJtZFkrMnMvTnd0cDE2MVJ5KzNtLzUwNDhlamw4NTZHOXYrNkhkOEJIZHZUK3V2TjUwRVEycjZjeUNmOHI0MDBJc3pSUmdGZHNDTFdpcEhlZE03WDBFWi9kU3VyWDJUMGJhajN0dUdRbmxCS2FGczlmQTIrL3U2dWk1ZDU5czYxWE1kK1kyNmQ1a052aXIweVpNWDduUE11dngvRHpsREwxZXhYdnhZVnNBbkIxcENYdHh6TjZQZXR5dWtULytvbXdNc2xMMXNQeDg5UzZQN1FqN0tuVFMyTkFNU0dNTHR2ZC9pN0EvN1V2ck5MUTZpRjczR0o0NURMNDRRRDFEZmRMMGxZMVl6bnZlODV0R0MxSitZZlBjbVh1YmlYTktnZFluZHZHVW1YbC9OWEprMFZiT1ZpRjVXTWhmRTVhMHQ1azZoOGRnTC9Qb0hieGhCWEo3OUxUNWhBMXF4SUdNcndzb1lueFdXdEdNNHlTNUgwVmh0eUdVZHEvK3dDTlhmaUZxYlJDNWZ3ZGpYcnZwQ1hKemJxOWNQczB2T1MyZVg0dXU1UzAvTStlYXZwaXJhMThLU1dNemw4RGI3MHplVk8rWVpVMCtqYm5XWlRmOHFmOUFDNGJ3RmUxTkNWd2RnOWdUVTdENjdyOVladnJ0TjFmdXpWUlNGNFo1UnU3T3crL0grNFBDNFcyY3NSRVdLOXUxR1R4Qm1JUURPQmp1ejFwL3lGSlExaGpTdHVMcFJmYm4wdnptYTJGOVJxZmQzTjZIK1pDUEhGRjhoYmg3WXlpYXlWdEplL25yTzN1bW5rMm52REdOcTBySUE5eTIweTNQV1dKblVFY0twMDIrcS9mQXk3Kyt5Qzg0NjdlWC9lbVNLTVlkOHpBbjI3ci9YV3plbUQzV3hYWXZDdXNZSDlUQmlzdE5Fb2FSYmV2R2hZTzdzWVhKK0dWaDdmKzN0Tlh3VjhXQm10ZVlkYldKRlFoMHBZZHk0UGNodEhXbEFkRjJqSkJNWXdCcDZSMFJ0L2E1NGZldlRQdzFaUlZJZkxtUUcyNFhrOHYxQWk3RGw4NkNaL2QyWjlnWFZLQWN4T2E2TDY1cC91NVREODVBUC92WU92ZjYvVVRvVGIyelM2RExtOG1DckFoNGFsOXQyRVVSOXBjb3NjTVdEdnlTVXVTUjdyTTFnWnpYcFRpZXYvMkVMTHRPbEFOVGRjN1owUHcvR2gvOG1LaldYbnFxdVNmODZ2M0xXenR0Ry92VFg2VCtjdzFveE5HSnl3T2dkVEtUek91OVdZdHQySDB3NVExbWs1WkVqbzM3eHFRZHdwbnBTeFFlY09Cd1ZoZFhJUGwvMndmekNrS2FkSjJZdjJyQjRXUExHeGFEWCsrYlhnNzlodWxiVGx6dzRDdFBOT3AzQTVndVA1QStnL2ZPUU8wWEVqYU5oRkpTOEpMZWJKaUxONmVPaXZINE1rcGIvaUd5ZWtKVzBYc3FXYmZINWkxM0liUmRBMitrN0tzeUl2VzlxMG9xVTVZREk5UGFUYTgzTDRPRFlGelY2VlBSTS9hS0d3cnNiaVFIUGhYN21sL1pZdEJsZHN3Z3ZTaG9xY3RDOHVGeFBiaWRjbmYyejREMzdWbXBDRVFlMXVIcDY0S3RiTmhkdmFxNUdIencvQ21OdGYvZlpkT3BzL1JlZTNHL3BXbGxZMFQ4SnNwWWZUNVhhTTFKRlhEYWUxNGVyOW9QeXdmQzRFMHpKSldvdGhiVFYvaFBDODZDYU9CVzdSbTUyeDRvQ2M1YTJWeUcycy92R1pqY3RQRmJBMCtHbUdGYTZuWG5yNDZlWVJYUDhXdW5XWHBDU3ZnY1FuTi9WL1kxZitSazFub1pEVGRBUHk0SGVyRE8rQUZhNU8vLzNkSHdUazM5WDkyOHVPV3c0VXBPMnQrYVhKNEpsVnF0S1gxMS96MmJYQkZENXVRbG83QkQwOEpOYUZtVDFrSnE4YUhiM210TWVCTkNTTVJhOFRadGlVTHVhNFpRWmdRbDlaM2RNSmkrT3NqKzFjZUNPMjY3emttK2Z0VE5YakhpTzdGb3VHeWZnSitMYUgxWWRkczV3dWp6dWRBRmI2ZUVHNkxDdkNNSVd5cSsvME55U3U0ZjM1bi91Y1gxZVc2ejZqdWY5K1ZQc3k3ZEJpOE1LV1cwa3VMQ3ZDUHg2UlA4UHZ3RHRqcVJGY05nZk5YSno5RU5yZXh2WGczMHBybTArWTY1ZEZqbHNQckUvcStEMVRERWsvRG9wTXdHdGl1OXExVDhONTUvbFBlZGhROEorTWYxRVVGK01DeDZYTWViam9JNzdKV3BDR1I5dkJQVytCMElmNWpUM0lmeVprcjBoY2x6cE16VjhBbmowL3VqN3ZvbnVRVnpmTm9LTUlJNEwzYjRacVVqYmJHZ0hjZEE3K1hNQ0psb1RaTXdNVW5wRS84bTY3QksyL1AvK3E2RW9UZGRaTzJjTWh5MnNKVURTb0pRVGRlZ0djTTBJVDNib3dCcnpvY1BuRjg2Q05yNVFmN1F3dkxNQm1LWmpvSXpRRi9mSHNZWVpka0RQakxCOEUvSFp1ODJHQTN6bHNGWHprcGZYSXJ3QnUzaGNVcnBXR1FWaXY2OG1TMjB4YlMrb216YmdISjBxT1h3UmNlSEpybWtyYUsyREVEdjc4MS81TmNtK1YrQUVPalc2ZmdwYmZOLzUrMGFUVjg0K1RRTVpqMHpxTWRweTZGangwSEh6b3VySVdYNWwxM2g5V1RwV0dSTnBRNnF5YTZ1aXYzaG9keUs0OWRQdi92NHlCWlhBaHpwQzQrQVM1NU1Ed2laYkwrZ1dvSW9uNXZPOU1QbmZ5WERlQ1dkWWY2L2o1NDFlMWhFRUhhM0ljMTQvQVhSOERMTjhEbmRzSWx1K0NHL2ZOdllieCtBczVlR1FaRS9HcWJxNFAvNjczdzdpSHFhSlJPWEF3UFN4amh0VzA2ck5LZHBka2FYTG83REU1cVZpQU1OLy9nQURWakxTbUVrTmxiRFR0Ukh6NEJKeThKSzhXY3NTSjV0Zk5HazdOaHEvanZEK21xTFoyRVVXNmE5Q3FUc09jMitPQ3g4MjlCdm00OHpHeCsyWHE0ZHpac2MzelR3ZkRPWTE4MXZHczViQnlPWHd5L3NqVHNTOVJKRmZHak8rRE5kdzU0aDV2VW9iUmEwWmQyOWVmbi9mTTdXNGNSaEcwbCtobEdiejhxQkUyU3hZVVFQdDM2OFFINHc5dGh5NUFNNDI1bEtNTUk0Ti8zd0hOdWh2Y2RDdzl1YytmWGRlT2gxbk4yRDVZMm1hN0JYOTBCRjkrMzhHdEpneVp0b3VzWCs3UTB6Vlg3d29aeUcxczh4UjY1TEx5QjdOZGVZY2RudEx0MERmajR2ZkRXTzRkLzROTlE5UmsxdS9FQUZMZkFwM2YyOTc1YkRzTHpiamFJTkp4K2FXbnl1L3hicHVENmxGR3R2VlFsTElXVEpPOXpqcTdlQjgvOEdmelBPNFkvaUtDek1Ncmw2a2Q3cS9DNm44TnpiODUrODZtRHRkQTNkTjZXME53bkRhTm5SeHk0MEN4cGlEZmtkMXVKSy9iQWhiZUVscDErQmZzZ3lOR1lrNFc1YWg5czJoSkdyZnpoaHVUNUVkM1lXNFYvdVRlMFVTZU44SkdHeFROVDV2SDBPNHl1MlI4bWZoN1hvcG5zbENYdzBDWHczd1BlejdLM0N0ZnVoNjlPd2xkM2h3RWdvMmhrd2doQysrdmx1OFBIU1V2Q2ZJVHpWb2NmMms0ZHFJWkpmWi9mR1g2QTlnMWd2Zkd1R1ZqVDRnZjducHdHNXZhWjFvdkwzcEhUWDk3SjJlVEZjcXNEMml4enlwSXcvNlZWdVcrZGl2UGcvL1JPK0I4SkF4bk9XTm1iTXQwNUV3WWlMY1NxTVNnVW9GYUQ3Yk53enpUOGJDbzA2dy9nNDZQdkNyVmFlei8xaFlzM3Z4TjRiYmJGaWVPdzhWQlRPbmxKNklqY01ESDNnelAzL1ZuQ29vOTNUSWRmdU92MnczVUhobS9TbVNSbDREMjFDemU5ZXI2RDJxb1pGUzdlWEFCU2x2N010L3RtNGJMZDRVT1MxSC90RG1BWTZqQ1NKTVhWU1JqbGFwNlJKQ2svaG1iVmJrbFNmclViUmpWQ1A3NGtTVDFuR0VtU29tc3JqR29YYnFwaE01MGtLU05EdlRhZEpDa2YyZ3FqdVhsR3VkalBTSktVUHc3dGxpUkZaeGhKa3FKem5wRWtLVHFIZGt1U29qT01KRW5ST2M5SWtoUmRKME83bldja1NjcEVKNlBwUm1wWFdFbFMvemkwVzVJVW5jc0JTWktpNjJRMFhUWExna2lTUmxjbllUU2RaVUVrU2FPcms2SGRocEVrcVZOdGRmRjAwbWRrR0VtU090WHpNTExQU0pMVXFaNkhrU1JKbVhCb3R5UXBPbXRHa3FUbzNNOUlrcFNsdHNZYk9JQkJrcFNsdGlveWhwRWtLVHFiNlNSSjBUbUFRWklVbldFa1NZck9NSklrUldjWVNaS2lNNHdrU2RFWlJwS2s2QXdqU1ZKMGhwRWtLVHJEU0pJVW5XRWtTWXJPTUpJa1JXY1lTWktpTTR3a1NkRVpScEtrNkF3alNWSjBocEVrS1RyRFNKSVVuV0VrU1lyT01KSWtSV2NZU1pLaU00d2tTZEVaUnBLazZBd2pTVkowaHBFa0tUckRTSklVbldFa1NZck9NSklrUldjWVNaS2lNNHdrU2RFWlJwS2s2QXdqU1ZKMGhwRWtLVHJEU0pJVW5XRWtTWXJPTUpJa1JXY1lTWktpTTR3a1NkRVpScEtrNkF3alNWSjBocEVrS1RyRFNKSVVuV0VrU1lyT01KSWtSV2NZU1pLaU00d2tTZEVaUnBLazZBd2pTVkowaHBFa0tUckRTSklVbldFa1NZck9NSklrUldjWVNaS2lNNHdrU2RFWlJwS2s2QXdqU1ZKMGhwRWtLVHJEU0pJVW5XRWtTWXJPTUpJa1JXY1lTWktpTTR3a1NkRVpScEtrNkF3alNWSjBocEVrS1RyRFNKSVVuV0VrU1lyT01KSWtSV2NZU1pLaU00d2tTZEVaUnBLazZEb0pvMXBtcFpBa0RhdTJzcU9UTU5yVlpVRWtTYU9ycmV5d21VNlNGRjBuWWJRM3MxSklrb1pWVzluUlNSanQ2N0lna3FUUjFWWjJkQkpHTzdvc2lDUnBkTFdWSFlhUkpDbExQUStqZTdvc2lDUnBkTFdWSFoyRTBUYWNheVJKNnN6dDdSelVmaGlWaWxPRVFKSWtxUjE3S1JXM3QzTmdwL09NZnRaRllTUkpvNm50ekRDTUpFbFp5U3lNcnUvd2VFblM2R283TXpvTm8rczZQRjZTTkxyYXpnekRTSktVbFl6Q3FGUzhDOWphYVdra1NTTm5GL0RUZGcvdVp0WHUvK3ppSEVuU2FQa09wV0sxM1lPN0NhTnZkWEdPSkdtMGRKUVZocEVrS1F1Wmg5RjF3QjFkbkNkSkdnMjdnVzkzY2tMbllWUXExb0JMT3o1UGtqUXFMcWRVbk83a2hHNjNIZC9jNVhtU3BPSFhjVVowRzBhWEFnZTZQRmVTTkx5cXdCYzdQYW03TUNvVjkyRHRTSkowcUc5U0t0N2Q2VW5kMW93QVByT0FjeVZKdzZtcmJGaElHSDJKTUdKQ2tpU0FLZUN6M1p6WWZSaVZpbnVCZiszNmZFblNzUGxjdTV2cE5WdEl6UWpnSXdzOFg1STBQTHJPaElXRlVhbDROWERWZ3E0aFNSb0dQd1d1NlBia2hkYU1BTjdWZzJ0SWt2THQzWE9MSW5TbEYySDBhZUMySGx4SGtwUlBPNEIvWHNnRkZoNUdwZUlNOEo0RlgwZVNsRmZ2bzFUY3Y1QUw5S0ptQlBCKzRNNGVYVXVTbEIrN2dJc1dlcEhlaEZGSXhMZjE1RnFTcER4NU42WGl6b1ZlcEZjMUk0QVA0SmJra2pSS2R0Q2pRV3k5QzZOUU8vckxubDFQa2pUbzNrS3B1S3NYRitwbHpRamdFOEQzZTN4TlNkTGcrVEh3dmw1ZHJMZGhGTWFZLzNGUHJ5bEpHa1IvTWplYXVpZDZYVE9DVXZHN3dBZmJQTHJyQ1ZLU3BHZytUYW40MVY1ZXNQZGhGTHdCMk5iR2NRWENSa3lTcEh5NEYvaWpYbDgwbXpBS0hWcXY2S0FNQnBJazVjTnJLUlh2NnZWRnM2b1pRYWw0Q2ZDeERzcGhJRW5TWUx1RVV2RmpXVnc0dXpBS1hnVnNhZlBZTWV4RGtxUkJ0UTE0YVZZWHp6YU1Tc1U5d0c4QTAyMmVVY05Ba3FSQlV3VittMUp4UjFZM3lMcG1WQjlkOTVvMmo2NDMxeGxJa2pRNDNrU3BlRm1XTjhnK2pBQkt4ZmNTSnNTMll4eVl4VUNTcEVId1JlQ3RXZCtrUDJFVS9ENXdkWnZIVG1BWVNWSnNQd1orY3lHYjVyV3JmMkVVMXE1N0puQnJtMmM0b0VHUzRya0wyTlNydGVmbTA4K2FFWlNLZHdLYkNQdGZ0S09RWVdra1NhMkZ5a09wZUV1L2J0amZNQUlvRlc4a0JOS0NkZ1dVSkdWaUduZzJwZUpWL2J4cC84TUlvRlQ4TnFISmJpcksvU1ZKclZTQlg2ZFUvRnEvYnh3bmpBQkt4U3VBNTlQK0hLUTYrNUVrcWZlcWhNRUtYNHh4ODBLdDF0Nnp2VkRJcVB1bVhIa3E4Q1ZnV1RZM2tDVE5ZeHA0UHFYaUY3SzRlRHM1RTY5bVZGY3FmaDA0RjVqczRteHJTWkswTVB1QloyVVZSTzJLSDBZQXBlSzNnRE9CclIyZTZXZzdTZXJlM2NDVGU3MDNVVGNHSTR3QVNzWHJnU2NBUCtqeUN0YVNKS2w5UHdHZVFLbjQvZGdGZ1VFS0k0QlNjUnZ3Sk9EVFhaeGRyeVc1RllVa3Bhc0FwMU1xM2h5N0lIWHhCekFrS1ZkZUE3eWRzRlpkTjZibnpoMnN3SldrZUdyQW00RzM5R09KbjEvY3RJMmNHZHd3QWloWG5nU1VnV01XY0pVcFFpQk45S1JNa3BSUGR3Ty9SYWw0YWI5dm5JL1JkR2xLeGY4QUhnNThhZ0ZYV1V3SW9sazZuOU1rU2NQZ3k4RERZZ1JSdXdhN1p0U29YQ2tCN3dZMjlPQnFOUnlKSjJsdzllb1p0UXQ0UGZEaGZqYkxOY3QvTTEyemN1Vnc0RjFBS1haUkpLbkhldjBtK1JMZ0ZYTUR3NklhdmpDcUsxZWVScWdsblJxNUpKSTBhRzRDWGtPcCtLWFlCYW5MZjU5UmtsTHhjdUNSd0N1QnpQWmtsNlFjMlFXOEFUaDFrSUtvWGZtc0dUVXFWOVlBZndLOEdsZ1R0ekNTMUhkN2dmY0M3NkJVSE1nMzU4UGJUTmRLdWJJV2VDM3doOEM2dUlXUnBNeE5BaDhFM2thcHVEMTJZZEtNVmhqVmxTc3JnTjhtMUpaT2lsc1lTZXE1MjRCL0FENUVxZGpOQXROOU41cGhWRmV1akFGUEExNEdYQUFzaWxzZ1NlcmFMR0VKbnc4RG15a1ZaeU9YcHlPakhVYU55cFdOd0F1QkZ3Qm40QndqU2Zud1BlQXp3Q2NIWVloMnR3eWpWc3FWbzRCZkI1NE9QQmszOVpNME9BNENWd0pmQVQ1SHFYaHI1UEwwaEdFMG4zSmxLV0dWOExNSSt5azlEc05KVXY4Y0JLNG1CTkNWd0Rjb0ZmZkZMVkx2R1VhZEtsY1dBUThESGdHY1JsZ1g3MlRnV0xwZlBWeVNxc0R0d0JiZ091QjY0RnJnZWtyRmd6RUwxZytHVWErVUt4T0VsY09QQlRZQzZ3bHI1QzBIVnM0ZHRRYjdvcVJSdFhQdTgxNWdIN0NkTUNIL0hzSU8xbHNwRlVkMm9lYWVocEVrU1ZuSjUzSkFrcVNoWWhoSmtxSXpqQ1JKMFJsR2txVG9EQ05KVW5TR2tTUXBPc05Ja2hTZFlTUkppczR3a2lSRjkvOEJSenNDMGlhZ3hCMEFBQUFBU1VWT1JLNUNZSUk9IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiRklET18yXzAiLCJGSURPXzJfMSJdLCJleHRlbnNpb25zIjpbImhtYWMtc2VjcmV0IiwiY3JlZFByb3RlY3QiXSwiYWFndWlkIjoiNjk3MDBmNzlkMWZiNDcyZWJkOWJhM2EzYjlhOWVkYTAiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjp0cnVlLCJ1cCI6dHJ1ZSwidXYiOmZhbHNlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwiYXV0aG5yQ2ZnIjp0cnVlLCJ1dkFjZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOnRydWUsImFsd2F5c1V2IjpmYWxzZX0sIm1heE1zZ1NpemUiOjEwMjQsInBpblV2QXV0aFByb3RvY29scyI6WzEsMl0sInRyYW5zcG9ydHMiOlsiYmxlIiwibmZjIiwidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN30seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTM3fV0sImZvcmNlUElOQ2hhbmdlIjp0cnVlLCJtaW5QSU5MZW5ndGgiOjQsImZpcm13YXJlVmVyc2lvbiI6MiwicHJlZmVycmVkUGxhdGZvcm1VdkF0dGVtcHRzIjo4LCJ1dk1vZGFsaXR5IjoyMDUxfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjMtMDUtMDMiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwidXJsIjoiaHR0cHM6Ly9wb25lYmlvbWV0cmljcy5jb20vIiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJQb25lIEJpb21ldHJpY3MgT0ZGUEFEIEF1dGhlbnRpY2F0b3IiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDIzMDUwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMy0wNS0wMyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIzLTA3LTEwIn0seyJhYWd1aWQiOiI4ZGEwZTRkYy0xNjRiLTQ1NGUtOTcyZS04OGYzNjJiMjNkNTkiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjhkYTBlNGRjLTE2NGItNDU0ZS05NzJlLTg4ZjM2MmIyM2Q1OSIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJDYXJkT1MgRklETzIgVG9rZW4ifSwiZGVzY3JpcHRpb24iOiJDYXJkT1MgRklETzIgVG9rZW4iLCJhbHRlcm5hdGl2ZURlc2NyaXB0aW9ucyI6eyJkZS1ERSI6IkNhcmRPUyBGSURPMiBUb2tlbiJ9LCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9LHsibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlCbXpDQ0FVR2dBd0lCQWdJSkFLSUZudEVPUTF0WE1Bb0dDQ3FHU000OUJBTUNNRk14Q3pBSkJnTlZCQVlUQWtSRk1ROHdEUVlEVlFRS0RBWkRZWEprVDFNeElqQWdCZ05WQkFzTUdVRjFkR2hsYm5ScFkyRjBiM0lnUVhSMFpYTjBZWFJwYjI0eER6QU5CZ05WQkFNTUJrTmhjbVJQVXpBZUZ3MHlOREEyTURRd09UUXdOVGRhRncwek9UQTJNREV3T1RRd05UZGFNRk14Q3pBSkJnTlZCQVlUQWtSRk1ROHdEUVlEVlFRS0RBWkRZWEprVDFNeElqQWdCZ05WQkFzTUdVRjFkR2hsYm5ScFkyRjBiM0lnUVhSMFpYTjBZWFJwYjI0eER6QU5CZ05WQkFNTUJrTmhjbVJQVXpCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQk9zNSs2M1g1bWlSbkRWcW5FSVVLZDQrS3pKK0FUTi9WeFdpQmdObUFPT0VvMUFNVm54QkFJZjQvYWhqNUN5cHVEaUxGQWNDU3ZMQUxUNExtSVFpdlg4d0NnWUlLb1pJemowRUF3SURTQUF3UlFJZ0hNVDV5bUlJNTVVcmgrSjVoMHZLMEdwOExWbHJUN0JSVjdQaklvZTNEMTRDSVFEZkNYZ01BR05wR2ZvNzVXT1dxS3E4dldJeUxtMHUvY1VsdXZkckw3Y1pTdz09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsLzlqLzRBQVFTa1pKUmdBQkFRRUFZQUJnQUFELzRRQWlSWGhwWmdBQVRVMEFLZ0FBQUFnQUFRRVNBQU1BQUFBQkFBRUFBQUFBQUFELzJ3QkRBQUlCQVFJQkFRSUNBZ0lDQWdJQ0F3VURBd01EQXdZRUJBTUZCd1lIQndjR0J3Y0lDUXNKQ0FnS0NBY0hDZzBLQ2dzTURBd01Cd2tPRHcwTURnc01EQXovMndCREFRSUNBZ01EQXdZREF3WU1DQWNJREF3TURBd01EQXdNREF3TURBd01EQXdNREF3TURBd01EQXdNREF3TURBd01EQXdNREF3TURBd01EQXdNREF3TURBei93QUFSQ0FBeUFESURBU0lBQWhFQkF4RUIvOFFBSHdBQUFRVUJBUUVCQVFFQUFBQUFBQUFBQUFFQ0F3UUZCZ2NJQ1FvTC84UUF0UkFBQWdFREF3SUVBd1VGQkFRQUFBRjlBUUlEQUFRUkJSSWhNVUVHRTFGaEJ5SnhGREtCa2FFSUkwS3h3UlZTMGZBa00ySnlnZ2tLRmhjWUdSb2xKaWNvS1NvME5UWTNPRGs2UTBSRlJrZElTVXBUVkZWV1YxaFpXbU5rWldabmFHbHFjM1IxZG5kNGVYcURoSVdHaDRpSmlwS1RsSldXbDVpWm1xS2pwS1dtcDZpcHFyS3p0TFcydDdpNXVzTER4TVhHeDhqSnl0TFQxTlhXMTlqWjJ1SGk0K1RsNXVmbzZlcng4dlAwOWZiMytQbjYvOFFBSHdFQUF3RUJBUUVCQVFFQkFRQUFBQUFBQUFFQ0F3UUZCZ2NJQ1FvTC84UUF0UkVBQWdFQ0JBUURCQWNGQkFRQUFRSjNBQUVDQXhFRUJTRXhCaEpCVVFkaGNSTWlNb0VJRkVLUm9iSEJDU016VXZBVlluTFJDaFlrTk9FbDhSY1lHUm9tSnlncEtqVTJOemc1T2tORVJVWkhTRWxLVTFSVlZsZFlXVnBqWkdWbVoyaHBhbk4wZFhaM2VIbDZnb09FaFlhSGlJbUtrcE9VbFphWG1KbWFvcU9rcGFhbnFLbXFzck8wdGJhM3VMbTZ3c1BFeGNiSHlNbkswdFBVMWRiWDJObmE0dVBrNWVibjZPbnE4dlAwOWZiMytQbjYvOW9BREFNQkFBSVJBeEVBUHdEOS9LS0srVi8ycGREdVBqYisyUDRHK0d1b2F4ck9tK0ZielJaOVZ1b05OdVRidGRUQXpCZDU1QkE4bE1aQnhsc1lMWnJnekhIUEMwbE9NZVp0cUtWN1hjbWtydm90ZGQvUTlqSk1xV1B4RHBUbnlSakdVNVN0ZTBZUmNuWmFYZWxrcnJYZG8rcUtLL092WE5QL0FHYi9BQS9yMS9wdHhxdnhaYTQwMjZsdEp2TGtMS0pJM0tOZzdlbVFmd3FyNS83Tk9mOEFrS2ZGMy92by93RHhOZk9QaXV6czFULzhHLzhBMmg5eEh3NjVrcFIrc1dldis3UHIvd0J4VDlIcUsvT0R3cGMvRHRmMmcvaGdQaGZlK1ByaThieEpiRFVScWpQdCt6NzF6akFIR04yN1BHM09lSy9SK3ZZeWZOL3I4WnZsUzVXbGRTNWs3cFBSMlhlejBQbCtKK0czbEVxU2NwUDJrVzdUaHlTVnBPT3NlYVc5cnAzMVFVVVVWN1I4dUZmTEg3VW1zWFh3Vi9iRzhEZkV1KzBYV3RUOEsyZWl6NlhkemFaYkc0ZTFsSm0yN3h3RkI4NWNFa1p3Mk1rWVAxUFh6LzhBdEtmSEh4MWEvSEh3djhNL2g3L1lkanJtdldFdXAzR3Bhc2p5UXdSSjVtRlZWejh4OHA4a3EzVlJnWkxMNHVmS0gxWk9UYWFsRnhzcnZtNWx5cTJsN3ZUZGVxUHFPRDNWK3Z1TUlxVVhDb3A4MHVWS0RnK2Q4eVRhc3RVN1BXMmoyUE8vZ3IrMkw4Sy9nUHAvaUMyMGZUUGlkY1IrSXRhdU5kdVRlYVhHN1J6ektpdXFiV1hDQVJyZ0hKNjhudDJuL0R6dndGLzBCUEhuL2dvSC93QWNxam9lbS90RitKNDdsdE4rSkh3cTFCYk9kcldkcldFekNDWmNibzMyd25hNHlNcWVSa2NjMW9mOElIKzA5LzBQSHc1LzhBbi9BUGpGZURoOFJtTk9tb1VWTGxXMXFVYmYrblQ2L0Y0TEpLOVoxY1E0T2IzYnhFci9BRC8yYzB2QTMvQlJMd0w0NzhiNlQ0ZmdzZkZsbGU2NWNpMHRYdmROOHFKcEQwQk84bms0R1FEalBPQmtqM3l2bDF2MmFmako4UVBpMzRIMXp4MzRxOEc2aHAvZzdVLzdRU093Z2tqbWI3cFpRUEtVSE94UnlSams4OUQ5UlY3MlRWc1pValA2MnRuN3JjVkZ0V1Y5RktYVzYzUGtPSnNMbGRDZEpaWkpPOFc1cFNjMHBjelN0SndoZThiTjZhTmhSUlJYdEh5NFY4di9BQmIxdXo4Ti93REJUSDRlM21vM1Z2WVdqK0ZwNGxudUpCRkdYemQvTHViQXp5T1BjZW9yNmdyaS9pNThBL0IveDQwdTNzL0YyZzJldFJXYnM5dTBoZU9XQXRnTnNrUmxkUTIxY2dFQTdWem5BcnpjMXdsVEVVb3FsYm1qS01sZTlueXRPenRlMSs5bjZIdThQWmxRd2VKbExFcDhrNFRnK1d6YVU0dU4wbTBtMWU5bTFmdWo1cjhHL0MvNGsvQ0xVdkUwZmcvNHEvQzNUZEs4UTY3ZDYyWWJpVlpwQTh4QUdTeUhHRVNNWUJ4a0gxcmMrMi9IVC9vc3Z3ai9BTytZL3dENDFYY2Y4TzJ2Z29mK1pKWC9BTUd0OS84QUhxWC9BSWRzL0JYL0FLRW1QL3dhWDMveDZ2bmFlUzQrbkhscHBKZGxXcUpmK2tIMjliaWpKcXN2YVZwT1V0THQ0U2cyN0sycmRiVTh2dWZqVjhYUGhsOFd2aC9wK3VlUFBBdmluVFBGV3VRNlpjUWFUYnhzOGFPNkt4WmdxbGVHNElQVWR4a1Y5aDE0NzRPL1lMK0Uvd0FQL0ZWaHJXaytFWWJYVTlMbVc1dFpXdjd1WHk1Rk9WYmE4cFVrSEJHUWNFQTlRSzlpcjJzbndtS29LZjFtVjd0V1hOS2RsWlgxa2s5WHJzZktjVVpsbDJMbFNlWHd0eXhhay9ad3A4ejVtMTdzSlNXaXNyM3V3b29vcjJqNVlLS0tLQUNpaWlnQW9vb29BS0tLS0FQLzJRPT0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJGSURPXzJfMCIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsiaG1hYy1zZWNyZXQiLCJjcmVkUHJvdGVjdCJdLCJhYWd1aWQiOiI4ZGEwZTRkYzE2NGI0NTRlOTcyZTg4ZjM2MmIyM2Q1OSIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJub01jR2FQZXJtaXNzaW9uc1dpdGhDbGllbnRQaW4iOmZhbHNlLCJjcmVkTWdtdCI6dHJ1ZX0sIm1heE1zZ1NpemUiOjEwMjQsInBpblV2QXV0aFByb3RvY29scyI6WzEsMl0sInRyYW5zcG9ydHMiOlsidXNiIiwibmZjIl19fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMC0wMSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IkNhcmRPUyBGSURPMiBUb2tlbiIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjQxMDAxMDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMTAtMDEiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MX1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wMi0xOCJ9LHsiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbImJmN2JjYWEwZDBjNjE4N2E4YzZhYmJkZDE2YTE1NjQwZTdjN2JkZTIiLCIzMDEyYjY2MDkyYTE2ZDNkNzY4NzI0MTYzNGIyMGEzYmRlMjYzNGU4IiwiNzUzMzAwZDY1ZGNjNzNhMzlhN2RiMzFlZjMwOGRiOWZhMGI1NjZhZSIsIjk4NTUyYWVhNDU2MzcwZTIyZTE5MDFlMzE4MTczNTkxNDJiOTI4ODgiLCJiNzUzYTBlNDYwZmIyZGM3YzdjNDg3ZTM1ZjI0Y2Y2M2IwNjUzNDdjIiwiYjZkNDRhNGI4ZDRiMDQwNzg3Mjk2OWIxZjZiMjI2MzAyMWJlNjI3ZSIsIjZkNDkxZjIyM2FmNzNjZGY4MTc4NGE2YzA4OTBmOGExZDUyN2ExMmMiXSwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiYmY3YmNhYTBkMGM2MTg3YThjNmFiYmRkMTZhMTU2NDBlN2M3YmRlMiIsIjMwMTJiNjYwOTJhMTZkM2Q3Njg3MjQxNjM0YjIwYTNiZGUyNjM0ZTgiLCI3NTMzMDBkNjVkY2M3M2EzOWE3ZGIzMWVmMzA4ZGI5ZmEwYjU2NmFlIiwiOTg1NTJhZWE0NTYzNzBlMjJlMTkwMWUzMTgxNzM1OTE0MmI5Mjg4OCIsImI3NTNhMGU0NjBmYjJkYzdjN2M0ODdlMzVmMjRjZjYzYjA2NTM0N2MiLCJiNmQ0NGE0YjhkNGIwNDA3ODcyOTY5YjFmNmIyMjYzMDIxYmU2MjdlIiwiNmQ0OTFmMjIzYWY3M2NkZjgxNzg0YTZjMDg5MGY4YTFkNTI3YTEyYyJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiWXViaUtleSA1IFNlcmllcyB3aXRoIExpZ2h0bmluZyJ9LCJkZXNjcmlwdGlvbiI6Ill1YmlLZXkgNSBTZXJpZXMgd2l0aCBMaWdodG5pbmciLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MiwicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCIsInJlbW90ZV9oYW5kbGUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlESGpDQ0FnYWdBd0lCQWdJRUcwQlQ5ekFOQmdrcWhraUc5dzBCQVFzRkFEQXVNU3d3S2dZRFZRUURFeU5aZFdKcFkyOGdWVEpHSUZKdmIzUWdRMEVnVTJWeWFXRnNJRFExTnpJd01EWXpNVEFnRncweE5EQTRNREV3TURBd01EQmFHQTh5TURVd01Ea3dOREF3TURBd01Gb3dMakVzTUNvR0ExVUVBeE1qV1hWaWFXTnZJRlV5UmlCU2IyOTBJRU5CSUZObGNtbGhiQ0EwTlRjeU1EQTJNekV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRQy9qd1l1aEJWbHFhaVlXRU1zcldGaXNnSitQdE05MWVTcnBJNFRLN1U1M213Q0lhd1NESHk4dlVtazVOMktBajlhYnZUOU5QNVNNUzFoUWkzdXN4b1lHb25YUWdmTzZaWHlVQTlhK0tBa3FkRm5Cbmx5dWdTZUNPZXA4RWRaRmZzYVJGdE1qa3d6NUdjejJQeTR2SVl2Q2RNSFB0d2F6MGJWdXpuZXVlSUV6NlRuUWpFNjNSZHQyemJ3bmVid1RHNVp5YmVXU3dienkrQkozNFpIY1VoUEFZODl5SlFYdUUwSXpNWkZjRUJiUE5SYldFQ1JLZ2pxLy9xVDlubURPRlZsU1JDdDJ3aXFQU3psdXduK3Yrc3VRRUJzVWpUR01FZDI1dEtYWFRrTlcyMXdJV2J4ZVN5VW9UWHdMdkdTNnhsd1FTZ05wazJxWFl3ZjhpWGc3VldaQWdNQkFBR2pRakJBTUIwR0ExVWREZ1FXQkJRZ0l2ejBiTkdKaGpncFRva3N5S3BQOXh2OW9EQVBCZ05WSFJNRUNEQUdBUUgvQWdFQU1BNEdBMVVkRHdFQi93UUVBd0lCQmpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQWp2anVPTURTYStKWEZDTHlCS3N5Y1h0QlZac0o0VWUzTGJhRXNQWTRNWU4vaElRNVpNNXA3RWpmY25NRzRDdFlrTnNmTkhjMEFoQkxkcTQ1cm5UODdxLzZPM3ZVRXROTWFmYmhVNmt0aFg3WSs5WEZOOU5wbVl4citla1ZZNXhPeGk4aDlKRElnb01QNFZCMXVTMGF1bkwxSUdxck5vb0w5bW1Gbkwya0xWVmVlNi9WUjZDNStLU1RDTUNXcHBNdUpJWklJMnY5bzRka29aOFk3UVJqUWxMZll6ZDNxR3RLYnc3eGFGMVVzRy81eFViL0J0d2IyWDJnNElucGlCL3l0LzNDcFFYcGlXWC9LNG1CdlVLaUduMDVac3FlWTFneDRnMHhMQnFjVTlwc215UHpLK1ZzZ3cyamVSUTVKbEtEeXFFMGhlYmZDMXR2RnUwQ0NySkZjdz09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWZDQVlBQUFDR1ZzK01BQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBSFlZQUFCMkdBVjJpRTRFQUFBYk5TVVJCVkZoSHBWZDdUTlYxRkQvM2Q1OXdlUVNJZ1M5QVFBWGNGTEFRWmk5ZnBlVnoxdFkvV1RacjVXeHBjN1c1a25MYTVqSTNaODVzclMybk0yc2p0V3daUzdJVUg0SDR4Q25FUXg0REFaRjc0Vjd1czg4NXY5L2xJbkJ2VkovQjRQdjludS81bnUvNW52TTU1NmZ6QS9RdjBIYi9JclgzVkZLUG80NWNubTRpblVJV1l3TEZSbVpRVXV3akZHL04xaVJIaDFFWjBOUlZSdWRxdDFCZCsyblNLeVMvT2h5czArbGszZS8za1E5cXZENFpVdGE0VlZTVXVZMGVpcHlpVGhBZm9jb09SVmdEdXV3M3FLUmlBZDNyYmNFdGpUallJb2Y2V2FIc0NtelZQV0NNeCtjZ2g4dExxV01LYU1Xc1VqTHFvMlJ0SklRMG9Pem1lcnBRdTRlc1pnc09Oa0d4SDdkMGtkdlRUMTdzNE9NVTdWSThaaGpnR2FNK0FxOWlFTnU4UGlmMXVkejA3TXd2S1dmOEdsVm9DRVkwNFBDNVdkVGFYWUZiUjh2TnZMNSszS2dmYjV4Tk15YTlSYW1KaXluYU1sR1RWdEZscjZiYTl1K3BxbkVYNHVNdVJSZ2pTWUVock43dXRGRmU2bHFhbDdOZmt3NWltQUdIeW5QcGJrOFZtWTB4c3RucHRsRkNWQ1l0elR1Qk44M1FwTUxqVHRldmRQelNVbko3ZThta2p4WjM5ZlhiS0RmbGRacWJ2VStUVWdHbkJWRjZmUTJpUEhnNFcxNlVXVXd2emJrMTZzTVpFK1BuMHB2ejdKU2V1QXllczhsY3BDbWFLdW8vcCtxV3IyVWN3SUFIV3J2UDBZRXpoWEF0TEFic3NIaHA3aUdhbXZ5aWpQOHJ5cXJYVVdYOVhvb3d4eUF1Zk5CcnA0M1BPQkZYWmxrZjhNRFJpcWNweW93QXdwdXoyeCtmV3Z6L0R0ZGU5c21zenlndGNSNkMxd2JkekJsNk9scTVXTllZNG9HYXRoSk1ya1RFeDBqQVJTSEFWcys1cllrUU5YYitRZ2ZQTHNRNmdYeUluc3JlUWZtcG03UlZGWWZMODZuMWZpVU9rWXZTaGtVUHh2YnVrem95NksxaWhNMWhvM1h6VzZFdlNmWEErZHBpV0dhV2QrZG9Yekx6bUd3S1lGTENBc1JBbFBCQWhNbENGWFU3dEJVVlByOEhnVmNKSFdxK0YwMHBscitETVRkclA0enZ4WTExa05NaHhUK1NlVEdnK2Q0VjVMUUppdHlVR0pOQjhWRlpzamdZQlpNL0lJL1hDVGtqMHF5RE9wRjJBVlExN0NJalVwL0RuVDFVa0w1RjVnZGorc1Mxd2cxZ0UzZ2lnbTYwZkNYelNuUFhieUFQYklYditJRHBFMTZUaGFISVM5c2t5aGxtTUU1RjNjZnFBS2hxMkMwRTVQSDFnWWFYYUxQRGtaRzBIREpPbktXSHA1MUkwejVTT3V4OGUxV0F1WnpkSFFyVGtwOFRtalhvSStsYTB3R1pzenVicWJPM2lmUTZBL1c3dlZTWXNWM21SMEpLd2tLYzRXSGlCa21SOEkzQ0NnSTg3b09MNHF6VDVQK1JVSkJlakVPZ0FQSzhoWVB6YXRNK2VJVHAySU85eVRRbWVyb21QUnh4MXF4QWNzaWxlL3ViU2VFYmNXUUdZRUNnaGNMWTJIeUtqb2dqSDI1aE1wanBVdjFPdWdsaTRlaDJlUncwTzMyYkpqa3l1Q2dOemcwdnpsWU1TaVNzMHVvbzRNRzdoTU9qQ0VhWDF5RkUwblN2akJ6dVRuRXBLODZaOElvcUZBSXVidzhrZzlBckVhUkVXU1pJK2pINFhicDZnOUU5RW5KVDNvYVJ6RE4rTVVKQlFESG41NmE4b1VtRUJ1c094QnMvTjUrdEpFYlBrQUZEajhVR3ZPcy9JV3ZjU2dsR0JodlM3L0ZUWWZwV0dZZERZOGZQQXhXU0EzNXNUQzRwNCtMbTRBYXFJb1BlUXRmdWZLNkpoMFpoeGxic1VYT1NtWE5pZkQ1WlRBa3lEb2ZiYmNjbHhuQThXTkFxeENiUk55a2hYeFFwYUR3NjdmWFVZYnNpRzBLaHR2Mm9lSXZoOHJoUU1ZT2NFQXFYRy9lSSt6bmdPYzV5eHI4cTgySUFNMWMvRkxGT3BscXU1ZUZRWHJNWnpHY1ZDalliTFdHNUk0QlQxZXVScmxieHROT3RNaXREREVoTFhJSXluQUF2dU9FV0UzWDNOZEFmdDk0VmdhRzQyWElRdDBaWDZQZUNFL3FRRmU5cks2SHg3WVU1MEt2SDdmVzRmUytxN0tLQkp4c2dnQlg1cFNBR2gxaklyVmg1elE2dzNSZmFhaEJYbS9hQ2JDWlRqQ1VGVVR5V1pxVzlwNjJNakpQWFZxT3JQZ01PNE52NzRHa2Yrb3dmdE5WQkRRbmpGSnFIU3cxN3BYdmhXVzVLWnFlL1E0OU4vVVNUQ0FWV29RWEZJSEJIWFhlM0ZQclVEc3VHRG10Ri9oSEtUSHBla3hoaUFPUEkrU0pxNlM2SEY0STlZV3prQkpUbzQ2aVVNeldwOFBpci9SaWR1THhLWXNTa3NWOHZMbE9RdmhHWDJZbFIwT0JoQmpDK3UvZ0VjdlkwQXBLN1lrNDFOeGpQU1FuV0ZIVEY2NlVyamdldkI4Q3U1YStsMnZZU1JQdHVWRG83M2hoZE1TSG5VWDd0VGpzVlpHeEFsL1dwdGlPSUVRMWduTDI5bVg2L3RSMXRtbGtZajhXNFgrQ1NqV2NVREdZMU5wUy9DN2hTS3FpTUxNL2wyUW1TV1o3M0RkeitnaW84QkNFTllQUTQ2cW5rendYVWJxdkJreGpVUXNXZlpGZ2J1bzNyQWYrd043ak9POTAreW54NFBpM0wrMG5ZTDFTY2hEVWdBUDRnUFYvN0lkMXErMUhTaG11R2tJcVdSUGd5eE1GcVA4SGZqVG5qWHdZNWJRZmJKY3Q2T0l6S2dNSG90Ri9IZTFlZ3NheEhTcUc2d2ZkbVE1eDhOeVRGRnFCY3AyaVNvd0hSM3lrNSszNmhGN3ZYQUFBQUFFbEZUa1N1UW1DQyJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIwLTA1LTEyIiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZdWJpS2V5IDVDaSIsImNlcnRpZmljYXRlTnVtYmVyIjoiVTJGMTEwMDIwMTkxMDE3MDA3IiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjEuMSIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4zIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIwLTA1LTEyIn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMC0wNS0xMiJ9LHsiYWFndWlkIjoiODliMTkwMjgtMjU2Yi00MDI1LTg4NzItMjU1MzU4ZDk1MGU0IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI4OWIxOTAyOC0yNTZiLTQwMjUtODg3Mi0yNTUzNThkOTUwZTQiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiU2VudHJ5IEVudGVycHJpc2VzIENUQVAyIEF1dGhlbnRpY2F0b3IifSwiZGVzY3JpcHRpb24iOiJTZW50cnkgRW50ZXJwcmlzZXMgQ1RBUDIgQXV0aGVudGljYXRvciIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJ2b2ljZXByaW50X2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwiYmx1ZXRvb3RoIl0sInRjRGlzcGxheSI6WyJhbnkiLCJoYXJkd2FyZSJdLCJ0Y0Rpc3BsYXlDb250ZW50VHlwZSI6InRleHQvcGxhaW4iLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRjlEQ0NBOXdDQ1FEU2JQZVB2N3pHcWpBTkJna3Foa2lHOXcwQkFRc0ZBRENCdXpFVU1CSUdBMVVFQXd3TFUwVk9WRkpaSUZKUFQxUXhMVEFyQmdrcWhraUc5dzBCQ1FFV0htMWlaVzV1WlhSMFFITmxiblJ5ZVdWdWRHVnljSEpwYzJWekxtTnZiVEVmTUIwR0ExVUVDZ3dXVTJWdWRISjVJRVZ1ZEdWeWNISnBjMlZ6SUU5U1J6RWlNQ0FHQTFVRUN3d1pRWFYwYUdWdWRHbGpZWFJ2Y2lCQmRIUmxjM1JoZEdsdmJqRUxNQWtHQTFVRUJoTUNWVk14Q3pBSkJnTlZCQWdNQWxCQk1SVXdFd1lEVlFRSERBeFhaWE4wSUVOb1pYTjBaWEl3SGhjTk1qSXdNekUyTVRjMU1ETXhXaGNOTkRrd09EQXhNVGMxTURNeFdqQ0J1ekVVTUJJR0ExVUVBd3dMVTBWT1ZGSlpJRkpQVDFReExUQXJCZ2txaGtpRzl3MEJDUUVXSG0xaVpXNXVaWFIwUUhObGJuUnllV1Z1ZEdWeWNISnBjMlZ6TG1OdmJURWZNQjBHQTFVRUNnd1dVMlZ1ZEhKNUlFVnVkR1Z5Y0hKcGMyVnpJRTlTUnpFaU1DQUdBMVVFQ3d3WlFYVjBhR1Z1ZEdsallYUnZjaUJCZEhSbGMzUmhkR2x2YmpFTE1Ba0dBMVVFQmhNQ1ZWTXhDekFKQmdOVkJBZ01BbEJCTVJVd0V3WURWUVFIREF4WFpYTjBJRU5vWlhOMFpYSXdnZ0lpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElDRHdBd2dnSUtBb0lDQVFDbFk1cHR0QTJSQjY4bUZJNDlSL3JsU0VYTzVVTXVHTmNqdWhiMXRWWW9POFZMZm5qb1hTM0VNK0poWDd5MFdselVUODIvQmRRTmlrbWE1aDZyalQ1NmduN3ZaN3dZdjRkWEt2WXV3a2RWbithbk5CY2FFUll4eUJFRldXZ3FMWjdxVm5YSWFZS3Z6cEtyNXBJUlNGYVFhSzN6dXptMHFDNWpUTEVpdHNjNU5pTWhtZTdqT1VIckRmTDNUck9kdEp6V1IwZHFqRlFrdDI4TnBzODNxeXV2emJBb05CYXJZM2FIekgzZWhmOGRnN2tmRnNIdm1hdklwU201bmoyV0pFaTNLKzc2cmhqaEhMQW5Ubm50TytwODYxbFhVQjlaRDJ4R3FzUW1zbHBLTVJIVkx3dkJWaElySlM5dEpZTFM5ZmRhdDVpQUloa0NGVlROcXRBSkVBYytRdFpxeWxKWXZjditWckQzbFlNSUk0am4wM2dQUHpkazh0MWpQTGR3MEg0azdrQXBMZTNYM01JMUlPeGRtczJNbU5ydk5iRThxeGZnUXkzTXZIbVRtVlV3Zmc3aTdmek9JOHJHSHN4bGRuNVpFRmRyZ0crb3hpOTRxTExaY1ZwOG52dzNZQklucFV2UEpROFFWVWVWVnB3UWtqaFkvZTgxWGNpZDJ3Z2hBcGdtNWhCSjhUZlluOGRnRDAxdmJOM2pYTVRObkwrdXJPNlFHM2JUR2dHRzc0Qmc3NlRnSm5PVGRZRllZUWJpOXlxYUlGMlA1R2dHVSswUlowMVFVMjVqblRFRk5RcW5VRjB0WkUySkhBTm4rdHJrbkU3TDFHeUU5cXVwbE1rYW00aHRtU3VUMXNqUThoQWtidWcwOGRCYitmUWY4RlA4aW9rRGIrT2EraDNib1FJREFRQUJNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUNBUUNOeHpJZTFUNFdYaG4wRmxzYlpnU2UvdUVkNUh0UlA0V2FWc3VFMGUzMFdyVVZOelVhaFR5ajlUVVRKVUNTN2Y0bXBORHduTm1kdG9NZVlKbitHMS9sMEtCaUpXQzIwc2NoMHB5cWVWaGFkbzJPOFc0V09jL2lXR3JkRm5mMWpwdXd5U2xtMUg2aTRkKy9mSjJXMGxLM0NhUDBZRjN4U0dVclNSSmc5YVpIb2hwTjc5U1lGc21qMzR4OFcrQ2tGbVRZUW82YTZSTlMrcWpUQ2FEWFBIY3c0RUcwWWZqaGRVUk1pNlI3a3J2eGR1bWJQUnVCUnNvTjg2ZFhLcFl1dUtEY1MvU1pReGNhOXdFM0VneFJsQ3dGZFByYzJlZ3RyNUNiblRabUhnQnA0OXhhMGxpbGMyRUhRWXltR0xrMlNYbXZzS1RMeHJ1L2xnVno4TXZ5eGpNZHZhVUtWRmFrSWpETi9sVkFXWlRaM21FNERNKzJvTEJHVUI3ZnFXSUU5RVY1UkNLN284SDE5K1FoVTh2c1AxNDJaK0tBK3BFRkhFdVdaMm9VN3hqNVFTSzFQeW9TWDNOeHcxSkIvbE8rQ1BJWnJkZENMQ3BnV2ZYNFpUNDYzeHRuWjFDaUd5TUNVT2kzS09pR05zMlNTQmpTWUlPZHBpdm9PRkdBM2FVTW9tSEdaYXBwZ290UktlZW1LSGZkTHJUQkZXSHZRcUJ5ZU1XMWtObkVxRDUzRnJTMSthL3BuZWNKaExlb1duT3NvNG9vU3RrTGhBbGV1UVYrajJYQm14Sm5wWjIxdzM0N2hVTWR5UDlmOFhjRmU2Zjl5MlZrSHpSQ2VpWTdIdGV1UTkzWXhXODhjNEVpclhqaEYrV2VkMmRuNDEwbTVYZGZCTVBmYTY2OFJhdStxZz09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUVBQUFBQkFDQVlBQUFDcWFYSGVBQUFBQVhOU1IwSUFyczRjNlFBQUFNWmxXRWxtVFUwQUtnQUFBQWdBQmdFU0FBTUFBQUFCQUFFQUFBRWFBQVVBQUFBQkFBQUFWZ0ViQUFVQUFBQUJBQUFBWGdFb0FBTUFBQUFCQUFJQUFBRXhBQUlBQUFBVkFBQUFab2RwQUFRQUFBQUJBQUFBZkFBQUFBQUFBQUJJQUFBQUFRQUFBRWdBQUFBQlVHbDRaV3h0WVhSdmNpQlFjbThnTWk0ekxqWUFBQUFFa0FRQUFnQUFBQlFBQUFDeW9BRUFBd0FBQUFFQUFRQUFvQUlBQkFBQUFBRUFBQUJBb0FNQUJBQUFBQUVBQUFCQUFBQUFBREl3TWpJNk1ETTZNVGdnTVRRNk1EVTZNRFlBYzBmanlBQUFBQWx3U0ZsekFBQUxFd0FBQ3hNQkFKcWNHQUFBQTdCcFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWxoTlVDQkRiM0psSURZdU1DNHdJajRLSUNBZ1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNEtJQ0FnSUNBZ1BISmtaanBFWlhOamNtbHdkR2x2YmlCeVpHWTZZV0p2ZFhROUlpSUtJQ0FnSUNBZ0lDQWdJQ0FnZUcxc2JuTTZkR2xtWmowaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOTBhV1ptTHpFdU1DOGlDaUFnSUNBZ0lDQWdJQ0FnSUhodGJHNXpPbVY0YVdZOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZaWGhwWmk4eExqQXZJZ29nSUNBZ0lDQWdJQ0FnSUNCNGJXeHVjenA0YlhBOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOGlQZ29nSUNBZ0lDQWdJQ0E4ZEdsbVpqcFpVbVZ6YjJ4MWRHbHZiajQzTWpBd01EQXZNVEF3TURBOEwzUnBabVk2V1ZKbGMyOXNkWFJwYjI0K0NpQWdJQ0FnSUNBZ0lEeDBhV1ptT2xoU1pYTnZiSFYwYVc5dVBqY3lNREF3TUM4eE1EQXdNRHd2ZEdsbVpqcFlVbVZ6YjJ4MWRHbHZiajRLSUNBZ0lDQWdJQ0FnUEhScFptWTZVbVZ6YjJ4MWRHbHZibFZ1YVhRK01qd3ZkR2xtWmpwU1pYTnZiSFYwYVc5dVZXNXBkRDRLSUNBZ0lDQWdJQ0FnUEhScFptWTZUM0pwWlc1MFlYUnBiMjQrTVR3dmRHbG1aanBQY21sbGJuUmhkR2x2Ymo0S0lDQWdJQ0FnSUNBZ1BHVjRhV1k2VUdsNFpXeFpSR2x0Wlc1emFXOXVQalkwUEM5bGVHbG1PbEJwZUdWc1dVUnBiV1Z1YzJsdmJqNEtJQ0FnSUNBZ0lDQWdQR1Y0YVdZNlVHbDRaV3hZUkdsdFpXNXphVzl1UGpZMFBDOWxlR2xtT2xCcGVHVnNXRVJwYldWdWMybHZiajRLSUNBZ0lDQWdJQ0FnUEhodGNEcE5aWFJoWkdGMFlVUmhkR1UrTWpBeU1pMHdNeTB4T0ZReE5Eb3hNVG96TVMwd05Ub3dNRHd2ZUcxd09rMWxkR0ZrWVhSaFJHRjBaVDRLSUNBZ0lDQWdJQ0FnUEhodGNEcERjbVZoZEdWRVlYUmxQakl3TWpJdE1ETXRNVGhVTVRRNk1EVTZNRFl0TURVNk1EQThMM2h0Y0RwRGNtVmhkR1ZFWVhSbFBnb2dJQ0FnSUNBZ0lDQThlRzF3T2tOeVpXRjBiM0pVYjI5c1BsQnBlR1ZzYldGMGIzSWdVSEp2SURJdU15NDJQQzk0YlhBNlEzSmxZWFJ2Y2xSdmIydytDaUFnSUNBZ0lEd3ZjbVJtT2tSbGMyTnlhWEIwYVc5dVBnb2dJQ0E4TDNKa1pqcFNSRVkrQ2p3dmVEcDRiWEJ0WlhSaFBncUtZN1ZsQUFBRTdVbEVRVlI0QWUyVmIwamRWUmpIejNOK1YrL1ZYWjJWQTFQWkRHU1J3Z3BEeUZlalA4eWdJTWhGRkdVNTJJS1ZTTFRWTEdpWGlqWnF6U0ZXUTJLUU5OWjYwWXVOeGRpWWp2N1FRSHRSVTdZWmFkWnlvR1pjTjY5NnI3L3o5SDJ1OTl6ZDNiUzkxcDBmbkh2TzcvbDNudWR6bnZPN1NybkhFWEFFSEFGSHdCRndCQndCUjhBUmNBUWNBVWZBRVhBRUhBRkh3QkZ3QkJ3QlI4QVJjQVFjQVVkQXFValBjT2dyWm04bHM5Q0xGY2RLRVVjaW12eHIvUmZPOUhkSGVnWktGck5iQ1RMS0xpTFdWbG1uUFhNRzhseU1SeitvL3JvU1RYQUFocWVORjM0cTh1QmRzOWsreS9rOURZQS9yYWlJSjd3anJQaDJyZmg1WmgxajRpTW96bzhHMWpRZVhQL1pGa1dxSWUvaXQ3V3g4ZkhKU0NRU1g4NkYyOXpUVjJBMm9YODB4SjFlaWRsR3BkemxsWmszZ3MxREc0aHBiK0g4UlBmYjN6ZnZJRlk1bWdQMTRUdEsybXdBT3pPSVpZMGszQ3haMmtiOG9DUFIyeGpac3FWOHJjOWllaHNMdXYrTmJlM1NtNXZiL0pyQW5hYVZ0RHJHU2ovbk5RdzNFaWtPdHZ6MlpXZ3lWS3AyOS9qaWhLaTRBcnJjQnNCR1ZiN3Z6eGpJczhhZmtnUmsxN0xrU2JzNTVtcGpUR3RLZDBLS1NjVjhRbVR5dnBRdjVCUFFsNlY4YjlqWE4yWWF1clVZUjZHUDJUeGx4bjR0NHBNcHM1dXFZQjRONGVQMzhZZWhZeFc1bTRmNnBIaHJTSkdCT0JGS1IvMG9mZ1puVjJSMUNQcXFJZ3JCb0hLV3FFS0dKbHFIY1ovNHdDNEg4MDlXbDlLdnhRZm1FblN5djNSRkRSSWJ4VndNeWlMTHdXQ0pFeU1xOTRucVJHYUlIcFozakx1UmhIU1l5QjVQeWNybmlXb2d5emRLYlVlc09heURtTmRobG01YnhVU2JzRXdlcE1qa1NRT0FNbkRDYS9rOEhxS3pTYzBpUDZRb0NqdnNyUXFzV210OVZ0YTV6QmRDeklNeVVNd2d3T3pGcHBLa2JGNXJkVEw3ekIyQU1pODZQUEdwYVBRZWtEb1B2eEV5WnVPQ0dCVVNqUmNRallIRzN5SkRZWlB5ampGdWJRSktGUWNUaVZJWmdMb21LVGVHWTFxL2hwZzlpRGs4Yjh3UG1NY0E5SDQycHRINnlneC8rN0EvRmk0cnhMWkwvdTk3Vnk1dkpQYVBzcUtyMWd0SkhrYS85Z1pCM3NxUWFBUFdiMkxzRkJscytrSGlSVm5MZzZPWldsZ3QvSTZPanNhcWlvbzJJZEZkU1BMOVROM04xaWpzc0JkWUtBTnJNZmZudFA1RVFHSDlFT0JYUTM0ZVNleENEdnNEZ1lBRm53eWQ3Z0EwdkIvU2FBODJ1cjI5WFZvbmVYcGloUzkrNEtPT3p0WlFkR1FFNHUvaUZIb3k2WTJmZWViTk9jd0QyS1RYRGh6NVcxQUpwQmlDd0lmdmhhN1A2bUYvU1JLek1XUUdKTTd4dkQwNG9TMlo4cHV0QWF6VzA1cGtJRWlYMk9jcE5aSGhkMW5XUURPTVBXNG9YdVRwRGtDaS8rVDZQZzZYS09HRm50blgwZm55dnZhREwvQmMvZ2dGWjg0WlZuOW9yZXB4OHpxREppNzNON2taMnFVUGQzU3JCTXQ0ZUhaNittUTRITWEzanRlakk1NkdEazF5L1lsR282UDVxMWNmMTc0L1VsVlZsVTdNODd4dVhOSW1BWExkV2szZzZqV2h4Zit5TWhRNWlYMmI4UDY3bGVFMFg0R3NCKy9sR0wrbTVETUNGWEY3clYzbW5ENWwvcUt5c0syNEszRFZLeGhHTXp4V2NQRmNHYzdsRUFyNHhxZEVpNmR5OThPeEhySm5kelJ2UFlrNU04SE1tTXRxblFaZ3MzN3Y5TThQR08yZHduVzZ3dk5UZGFzRysxL0hZZXpFeVI4YS9FVnQ3K3g4S1dGdFY4TDhId0MycUhlNkI3YWhkZmJnOWh6WS9jaUdkNjM4bHBvangvdnlJejJjL2s3Y1VzVzdZaDBCUjhBUmNBUWNBVWZBRVhBRUhBRkh3QkZ3QkJ3QlI4QVJjQVFjQVVmQUVYQUVIQUZIWU1VUitCZXBGdEdpTDhMWW1nQUFBQUJKUlU1RXJrSmdnZz09IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiXSwiZXh0ZW5zaW9ucyI6WyJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiI4OWIxOTAyODI1NmI0MDI1ODg3MjI1NTM1OGQ5NTBlNCIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOnRydWUsInVwIjp0cnVlfSwibWF4TXNnU2l6ZSI6MTIwMCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMV19fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiTk9UX0ZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjItMTEtMDgifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIyLTExLTA4In0seyJhYWd1aWQiOiI0ZTc2OGYyYy01ZmFiLTQ4YjMtYjMwMC0yMjBlYjQ4Nzc1MmIiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjRlNzY4ZjJjLTVmYWItNDhiMy1iMzAwLTIyMGViNDg3NzUyYiIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJIaWRlZXogS2V5IDQgRklETzIgU0RLIn0sImRlc2NyaXB0aW9uIjoiSGlkZWV6IEtleSA0IEZJRE8yIFNESyIsImFsdGVybmF0aXZlRGVzY3JpcHRpb25zIjp7InVrLVVBIjoiRklETzIgS2V5IFNESyAtINCy0ZbQtCBIaWRlZXoifSwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIiwiYmx1ZXRvb3RoIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDWkRDQ0FndWdBd0lCQWdJVUl5bGJTRUFFMTV6U0V2d0YwcjhHd1VkLzVvRXdDZ1lJS29aSXpqMEVBd0l3Z1ljeEZ6QVZCZ05WQkFNTURraHBaR1ZsZWlCU2IyOTBJRU5CTVI4d0hRWUpLb1pJaHZjTkFRa0JGaEJzWldkaGJFQm9hV1JsWlhvdVkyOXRNUm93R0FZRFZRUUtEQkZJYVdSbFpYb2dSM0p2ZFhBZ1NXNWpMakVpTUNBR0ExVUVDd3daUVhWMGFHVnVkR2xqWVhSdmNpQkJkSFJsYzNSaGRHbHZiakVMTUFrR0ExVUVCaE1DVlZNd0hoY05NakV3T0RFMk1UY3lNekU0V2hjTk5Ea3dNVEF4TVRjeU16RTRXakNCaHpFWE1CVUdBMVVFQXd3T1NHbGtaV1Y2SUZKdmIzUWdRMEV4SHpBZEJna3Foa2lHOXcwQkNRRVdFR3hsWjJGc1FHaHBaR1ZsZWk1amIyMHhHakFZQmdOVkJBb01FVWhwWkdWbGVpQkhjbTkxY0NCSmJtTXVNU0l3SUFZRFZRUUxEQmxCZFhSb1pXNTBhV05oZEc5eUlFRjBkR1Z6ZEdGMGFXOXVNUXN3Q1FZRFZRUUdFd0pWVXpCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQkFxbG1BTUF6NGg1SXdmVlp3U2I0akFpNW90ODVGRTBidXVDS3M0bWZ1ZDIxcXNvNXJwdUtINDNzS3Fick5GUVN0eDVSU0M5Ym1CcWRTMmx5Y2wzNWxhalV6QlJNQjBHQTFVZERnUVdCQlJXSWlSVldheVpCbkg1QmxUblFEaUd5UTZPTFRBZkJnTlZIU01FR0RBV2dCUldJaVJWV2F5WkJuSDVCbFRuUURpR3lRNk9MVEFQQmdOVkhSTUJBZjhFQlRBREFRSC9NQW9HQ0NxR1NNNDlCQU1DQTBjQU1FUUNJRVpYaDc2WEZoTHhKSVQ4RnNJb1FIVHdmSENFOHNVc0t5UHJjTHYvM3RvTUFpQitwalk5Ykk2bktUNnFGdXFnUm4rYlhCQWRNZWcvMnZYOHdHNGFCdG9NQUE9PSIsIk1JSUNNakNDQWRtZ0F3SUJBZ0lCQWpBS0JnZ3Foa2pPUFFRREFqQ0JoekVYTUJVR0ExVUVBd3dPU0dsa1pXVjZJRkp2YjNRZ1EwRXhIekFkQmdrcWhraUc5dzBCQ1FFV0VHeGxaMkZzUUdocFpHVmxlaTVqYjIweEdqQVlCZ05WQkFvTUVVaHBaR1ZsZWlCSGNtOTFjQ0JKYm1NdU1TSXdJQVlEVlFRTERCbEJkWFJvWlc1MGFXTmhkRzl5SUVGMGRHVnpkR0YwYVc5dU1Rc3dDUVlEVlFRR0V3SlZVekFlRncweU1UQTRNVFl4TnpJME1EVmFGdzAwT1RBeE1ERXhOekkwTURWYU1JR01NUnd3R2dZRFZRUUREQk5JYVdSbFpYb2dSa2xFVHlCU2IyOTBJRU5CTVI4d0hRWUpLb1pJaHZjTkFRa0JGaEJzWldkaGJFQm9hV1JsWlhvdVkyOXRNUm93R0FZRFZRUUtEQkZJYVdSbFpYb2dSM0p2ZFhBZ1NXNWpMakVpTUNBR0ExVUVDd3daUVhWMGFHVnVkR2xqWVhSdmNpQkJkSFJsYzNSaGRHbHZiakVMTUFrR0ExVUVCaE1DVlZNd1dUQVRCZ2NxaGtqT1BRSUJCZ2dxaGtqT1BRTUJCd05DQUFTMEFjVC9oUkZVYmxGY0lwNmJoNFAyWlNxMWFqaVVhZ2hlYzl1ZFNGR0lvVVo0MFkzSUVQbHRrMlR4YndNL1JwV21DRnJac0FkZnl4MjFydllkcEw4Um95OHdMVEFNQmdOVkhSTUVCVEFEQVFIL01CMEdBMVVkRGdRV0JCVGxaOER2M3FBS2VLYzFDMk9pTnZIekdxZzFKVEFLQmdncWhrak9QUVFEQWdOSEFEQkVBaUFIcHRzeCs2R3F2Nm5iYStiVDlmVzduOHhzZkg4UmhJSzhWWUZQS0VzQlpBSWdRaE9TRHhrRGtjeTluYlBUNHgwRW1ERDlVc0w1MDF0a1NzY2ZXYTBhTGJ3PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFJQUFBQUNBQ0FZQUFBRzBPVkZkQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUF5UnBWRmgwV0UxTU9tTnZiUzVoWkc5aVpTNTRiWEFBQUFBQUFEdy9lSEJoWTJ0bGRDQmlaV2RwYmowaTc3dS9JaUJwWkQwaVZ6Vk5NRTF3UTJWb2FVaDZjbVZUZWs1VVkzcHJZemxrSWo4K0lEeDRPbmh0Y0cxbGRHRWdlRzFzYm5NNmVEMGlZV1J2WW1VNmJuTTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlrRmtiMkpsSUZoTlVDQkRiM0psSURVdU15MWpNREV4SURZMkxqRTBOVFkyTVN3Z01qQXhNaTh3TWk4d05pMHhORG8xTmpveU55QWdJQ0FnSUNBZ0lqNGdQSEprWmpwU1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJajRnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJZ2VHMXNibk02ZUcxd1BTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZJaUI0Yld4dWN6cDRiWEJOVFQwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOTRZWEF2TVM0d0wyMXRMeUlnZUcxc2JuTTZjM1JTWldZOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXpWSGx3WlM5U1pYTnZkWEpqWlZKbFppTWlJSGh0Y0RwRGNtVmhkRzl5Vkc5dmJEMGlRV1J2WW1VZ1VHaHZkRzl6YUc5d0lFTlROaUFvVFdGamFXNTBiM05vS1NJZ2VHMXdUVTA2U1c1emRHRnVZMlZKUkQwaWVHMXdMbWxwWkRveE1qRkRPVUkyT1RWQk1ERXhNVVUxUWtSQlJFUXdRa0pGTVVaRlJqaEdSQ0lnZUcxd1RVMDZSRzlqZFcxbGJuUkpSRDBpZUcxd0xtUnBaRG94TWpGRE9VSTJRVFZCTURFeE1VVTFRa1JCUkVRd1FrSkZNVVpGUmpoR1JDSStJRHg0YlhCTlRUcEVaWEpwZG1Wa1JuSnZiU0J6ZEZKbFpqcHBibk4wWVc1alpVbEVQU0o0YlhBdWFXbGtPakV5TVVNNVFqWTNOVUV3TVRFeFJUVkNSRUZFUkRCQ1FrVXhSa1ZHT0VaRUlpQnpkRkpsWmpwa2IyTjFiV1Z1ZEVsRVBTSjRiWEF1Wkdsa09qRXlNVU01UWpZNE5VRXdNVEV4UlRWQ1JFRkVSREJDUWtVeFJrVkdPRVpFSWk4K0lEd3ZjbVJtT2tSbGMyTnlhWEIwYVc5dVBpQThMM0prWmpwU1JFWStJRHd2ZURwNGJYQnRaWFJoUGlBOFAzaHdZV05yWlhRZ1pXNWtQU0p5SWo4K3ZyNVhJZ0FBRS85SlJFRlVlTnBpRERsNmdRRVA0QUxpQkNDZWhrc0JFdzd4LzFDc0RkVzhEMGtNQmJCZzBRZ0NBa0Q4RVVuY0NVby9SbExEaUc0QWlnUU9JSXVrOWk4UU02TzdBSjltZEhYL2tjUGdQd21hVVF4aEl0Rm1kSEFGWkFBM0VKOGhFQnYvY2NqcmdBeUlCMkpqTWwwQURvTnBEQlFBRmlJQ2lxQUxZR0FkaVpiL1IzWUJJNTZBd3V0QzlMeHdnQVRiUGRIREFPWUtKU0MraDBkekFCQzdBUEZlYklISWlKWXZDQVlzUUFBeEVpZ1B3b0g0Q3hCdkpTVWEveE53RVNPK0FnVTVTek9pYWNMcVBTWTB6VllFRWcrR0lTeGtaR2RHcEF3R1R3ZnBaSlFGY0JmOEo3TThBT241eDBRZ3RjR3dFN0ZKR1JmWVMycTlBQUw5QkxMMVRQUkNGUjBVWVVrUHlDQU5pRTh3VVZDZ2dvQWxzaGZxU0MxTWtMMEFja1VqT1dtQkNWdHRRNFR0akxoaUFTU3hCeTBOSUdNdDlEQURDQ0JDNVFFNitBekVQR2hpMzZEdENHU3dISWlqaUsxWEdJaE16ZitobGpPaVlXNDBmaWNRUjZMcFN5YTNnWU1jNW94RUpya0tMT3JuNEtxaW1mQllERE9BaVlFeWdPNXdrUG1xdUFwVUVCQ2xNSE1SNDVCYlFMd2R1VUIrRGNUbmdkaUlnZllBdVZaZ2hZV0FDQkIzazlHMFFNYVR5WERNTDVBRFFxR2NaZVFVUlVnZ2g1em1EUk0wSHc4WVlFSnJkRlNSRUkvbUJGSTdTWVg1UWlqZFNvTGpUNUZZUHNDQUNiWXFPWUZBL0ZJVG5JYlM1dGhxbzFRYU93SzVrRHVGclNTY1EyUUxsMVFnQnpXdkh6MjZXQWdVRnRKQS9BU0wvQjFvdGowRzdkTktRaHY4b0toa0phSTRKcnFUOUJSTkl5akUvZ0N4Q3A0bXpGbTBoSVlYQUFRUXFlMEJsQVlWMUtMdlFMd2ZpTy9Tb3B1SURIeUFlRE1KNWN0L1loVVNBaWVnaG0zR0VhL1k0dmNmVWhPTW9oRDRqeVZOeUJEYjl3R0NxNFE2M0xoQ29BR0w1WXg0TENlVTR2K1Q0b0FsUUZ4UFpobVA3cEFMaEJ5QjdnQXpJSTRtWXdRSkZ6REUwZXJDNllDVFZMU2NBVWYzRjI4bm05cVc0eHFnbUlvdkRkRENjblN6czlBZDhKOE9scU03b2g1YmRVd3Z3QWZONm1BSGFBOUFVL0F6Y2tsNGdJTFVUV25hWVdLQzlna290WnpjQmt3Zk9mMis1MVNJZ2pKWURZdnNBQzRpTlV2Z2tmTWkwb3dtbUozSURwaEhwT1lsZU9TMkVXa0dPNngyUlhaQU9KR2FZNm1ZRytZelFkdHdsQlNyRE5ER0tUbTVZQm9MdEYzM253cU9JQmJzdzFjYmZxRkRJZVNJendIY2RDd041WkFkZ0J5Y0xUUzBGRG1xSDZPSHdDY29YVTJueWdnakN2aXhOUmhvNVB2UHVOSUFSb09CeGkwanZDMmlEelRxbGhQVkwyQ0VSa2taaFJZekEvRkdmT1VHQzRHZ0FybThFNHZjR2lEZXhBQVpjQVIxeDAyaFJiazVqb0tIa2R5dUdhN0JpaEFvcHJpMFpDSWg0WUJ3RHhGcXJVbnBUUUVFRUNYakE4UUNEU0F1aFBhNFNDbHBRWlBqb05IWFJiUjBIQk9WemR2T2dEbUVmSjBCTXNXRjd2a1NwSmppQmVLWGFQS2dTbm9oQS9hWkg2UEJFZ0FGYUE3endLSHVJOVNUeU9NcHZXaU5BQWswK1ZsNDdEMkxaT2N2ZWdlQUhwTGwvVGpVdkVQempBQVpMWjEwTkROVzRGREhpdVNlQjdRTWdNVlFTeTRTNFdCaEdtVFhTQ1R6RlhDb2tXZkF2M2lHckFDb2d4b1lnNjFGVFdTU3BUWjRpR1N2SDU3YW4yQkFrRHBFQ1FPOGRHcThFd00yTStDZlhQZ1BUYjF4cEtTQVloeUd3VUo5c0hnZWwvdXdkV1QvRTVzQ2RqTkFWaXFoQjlSL2hxRURjS1dJLzRSYTQrdlJQRy9CUVA1Q3M4R2FJbkNPRUFjeVFOYXBnY0JNcU1hVERNTURZRnM2Z1JFQTY1QVVaekFNVHdEeTIyd291eHM1QUpDNzRFcDBjSWdudExHRTNJcGNRYWRBU0VWcWlzTURBSGtJZ0piREFURFBnc1l3QmRIa3dwSGs5OUFwTUR4QUFXQ0pwUXFrTmdnanNTQjFwbEhCcTQvZUlXTmlJR0Z1blFLd2t0d1lvckk3ME1jVE5FRUI4QjJMd3NCQlVtamRvcko1THRoYWd2dXdLRnhGbzRZSnFXTUw5NmpvQmxNc1ludVljRmdDYWlGeTBpQVFEcENnMW92SzloL0ZJdGFOYmQwV0RMeWxRWkoyUk92anUwRjdjMG9NNUMxQ0k2WHd3N2FZNlFyNnlqbGtBRW9Cd1RUTzQ3dWh2Ym43TkxibkFvN0lRR2tKWXVzWXJSa0dyYjlYV01RdXc3SWpjZ0NBdGx4WmtUQW1NQlFBcUhNbmlrVmNEMWR2OERnRDl0bUZvUmdJVTVFNmR6aHJKR3dESXFkd0ZFUkRLUkRtWW1uU2I4TG1MMEp6VTlkQXJTVjhBd3FERU93Q1lsZGkyeUdFQmtXMWNBd29NQTFTeno5Rzgzd2RvUWdqZFc0T3VjRFVIV1NlQjBXTURKckhtd2xwWWlIUkVsZ2dnUHJ1bDdESWY0UG10UTBNa0swQjFCdzhCUTNQK1VJTE5pMXFOYm1wTVRrNmc0SDBmWVhVQktCMVQyUlBqMUVqTDJlZ05XTnJhT2haVUl0UkdNMCtpdVlHV1dqZ3lGWUc3SnRSV0tCdGYyZG9RMFFCcWNQRkRDM0Fia0hiSXFDUy9EWTlrZzlBQVBLdUxTU0xJQW9mTmFSQUpCSVNJN3NRV2tTUUpVWkptZDN3SmF4ZUlvZ3NFSXd1aEQwSTBvTkcwVU5sUlE5WlVZRVFCUktJa1JIZHlDTHlJU3FRSWdzaXFNZ0tvWWNTcEZEcjlKL2gzNll6dTdQN3o2eTdmeC84b0xPek8zTytuY3VaTTJmT2h1RWZJS09ZZmdXMFFFSGhQeEVCV0ptaE1Dc3pMb1F5YW1tTUtQTnhEdzZlbDM3L2poaTJDVmdaQTJUZ0cyMkhwSUh6dkl2d3FsTnNPVVRhRzNyR2QrbytrU1pnTVZVV3ovaHM5TWlMNTBEUVhVNmNobTN3eUkvNWJ0THpPNk5Hd0h5cVdJOUdYckdUaXdyTE4wZDZDNld2MEhqR09pcnZYaFFJR0ZFWUcyUTBnL3RldmtBMzVTc2tiZE1ObFVSRTNWZ1FzRWR6WWJTTjhoencrZndQTkVEbmFLeEN6NmF5VWcweUMrQ1VsZStSWnplWThYZ2RwSmVFVStaSGpiVUF1dVM5c3RrQ1JqMkV2MGh2M0xTN2J6ODkxMnVqcEE5b3o4OEdBVzdON0FkVnNNYXlUbkdUeW5ua2t1Y29yVStNRXVBbS9GWklIc1FJQytnT084M2xPdW9RcmFiR0FPMjRQV05nL01nZ3ZTT0x1YjZERktsanFiU0FVUmRWTlNxbXNYRzBlT0xRNG1XNGNTUGdpaUw5S1NUYzVLS0VLbERIdCtrTlFrQUo4UDd3NlAxZkN0SEVmbEJIdEJueVM4QXpKZzFENXF5SGFBUHJ1RlpoTmRxdVM4QkZKcTBMTk9NRlJRRFhxVXZJT0tOTGdPd1QvQUFTeHNnNEFRZEZibnU5dzRzQTJWbmkzZS9mY29nbmJqQ0syUVl2QXVUbDZIU0lON0E3TjBwcGJTb0Nqa1JJeVRFSlBIWjJXdEpjV1FJYTBsQjRnWjIwamhCWUl4T1E2N2lZQmVrSlhFa0tVL3M1bVFCeE9oRlBmWXhBK3FKWUh0c0VBY0k1dWd6K0g4emtab0VGSVJYZUFYODdTbU9NdlpVaHRnQ3hXdnhEUUc2SXJMZVJ3UEo4alBFODdvSjlMNVJsanI4M2lhVmtWVWpDbzZOaXVhYjl3ZFlzNUhRTUx4UXRJSXltVjYwcHZKY2RJbFhJRG1EWm1VeS9MN1pROE5VQTk2eTJVSTk1MHY5ek1pRVpubDJnd25DaFFlMkZyU0cwekdsSXdFU1A5WUFKQlNRSWlrSWdZRUltby9pc01seElIa1FEWEZ5OERCR3gwWWw4d3dVSDljQVlObHdQenFieDUxc0lBNWFaZnhyd1B0T0hzYmw0VWYxSXdBdm13Z3pEaGZjRXVNZjA2VFhPc05PSEJIQWZzcWcxWEhpNXovd0hReG9YQnBDQTI4eUZPZ3VGNmU1RW84N1FaTGpzUXRVRkpJQTdIenpaQWdIRDhHL1FUeG5vUG1mRDlON0lwTjN4ZWl0SXdoY0xsUkdhSjU0VHdyQ09RNHBXYUJMY2VITEt1UnptQnNJV3k1VkM5N2RySVFpdlFxZVRBSzZKYklIMFFMM2JSVUZBbCtKNmZob1FjTUp0blpFcE5Va1oxMk11Zkk0aWZSZEhBTGVwV0JwekFyaFFvME5jRjBDOFZEemtlSXdKV09abEZQSGFHa1BzamFud1p4WHB2VzRFZEN0dWFvNGhBWncyTzFjMUN6Z3hoVW5ibndadi94UFh6VGtDK2hYS3lhR1l2LzBDTnoxQUJ1ZWJ2eThtd25QT1hadTlGQ0VPMlV4YWV3d0lrSjI3TVB6ZjVTQUUvSVRraDVFRU5rWmNlTTY1cTBSSEZWWUI0d2ZJbjZWNkhWSGh4elBDR2dscmk5R0ZuWjVqUlpic0JhbmlxMS9oZFFsQTFFakw0ODhSRTM0aHRRQmZ3dnNoQUlFdU5Pc2MvK01XZHpXTTdVbnlJbXFoVHh6amxxK05WYitWZHdZaHdDMXV0TitocVV2czgrTWcxT1ExOEFUQUpMSlBJT2svSE9YaGVDUzhXeTRvWmk1WEJEMDRpU1E4aElUZnZqemk0azkyWE1iemdXaDlmazdhMkh0SE44S2RxVHhTVkdaQndreUd6L0Rqb29keFFnTHRiNlJ5Y25RcEpEN1BNYWlSRi9OVmdQbU4xNVBnWWZFeDNRV0FlYlBZR2hhRjNQZTdxTno2VkI5a2FnQjdUQlhDcHZqT291RGlNNmZHZkpkTmorQUQxSGV4a3BXZ2prS3RDL0dCQWZIcDRjT21HYlY1ZXZ5K05Cdk1wa1hXRXBxK3BrSnlCeGk3MGxzaURJL0UzZ0x6dThNc2ZnblEzcm1HV2xGRmNYeDU2RkprSklTYW1NWk5MNW1pZmJDSW91Z3E5cEtFeXBJd0E4MnVsTjBNTkFzcSt4SmhvV0NaNWFPWFZwYmFBN09Ya2Q2TW9xTDhFSlJtRDVNa1A1UWEyQVBMTXN6ZlBXdDNodE9abVQyUE0yZm0zUDJIZzlkelp2Yk0zbXZON0wzV1h1dS9Hc0VmVUcrUXprTUNaWnQrQnF1UG82OStUdEJGVTR0VVlpTktPcjMrb1M5MU5IbXYraENnOGY1T1B6c3NYL3FGd1RFRnZHZFlONGgxbnFCUFZGb1IvY3pVSmxxb0xjSjVLRWFYcmdrM1MwSktrNnhSeXZuOXRhb3h2dCt6K0Qyb2d6MGpnZkFQU1hsdnFMOHVzcGZvZDNIQTJoVUgzSnZhaHJsUDNpRHp4YTVpcDFNQUJRdUhUejJEeUx3NFY1S0htV0VxVHBRSzhSQlRBSHRqKzlTSmNKdCtaMzZubE1XWENhL0ppdkF1TlhwTWY5NlRuSVhqTjFvQm1KTmY5Z3pRbGhRRzZDOTl1ay8xQ0JUaTZQVVIybGlyRnFrNW43L1RvQmx1cjFKd2VGejc5RFFGWURYOGhWUnlKSktTMXZLcW5TWGxOQ2VFZGF3KzNUK2tlTSs4RGE3MUtBUlA5NlB5Ly9qU3FNRExlRURIWXFzRTB5RVVXZ0Z3VXIydUhZWGhZMlNDdHRpMG0rNFJ4c2txakN6VHZQYXIwclY0RkdKWndqYlBWb3ZqaUw1dGVqV0RBbHl2SFRva3RVTlBiSUNMOTE2MVdIcXBTYmN5WjJzWEZPSVdqMUt5Ly81K2d2WW1TYVdRL1ZWRlZBREQ2dlJjelBOeFRvelN3ZVR0Y1g5V2pwR1VzRVBuZTZNUVNRSkxUR3Job2lJb2dDbEVGeWZHZXFQYTRRd1lVYlRibXNqZmNwOUhHZUpXTHBxdFk3czZqd3F3VFB3TDhRVUIxK2RncWRTUitFV2FIeXVrZHExTlcwelJzVjZZQndXWXFqZHpjNHp6R0FCODVYdWs1OEpVbXlWZjROc1k1ekwyMXpSQ0FTQTJKYUI2VllSeldPRU8wZzQvS3c1ZTRQQTZYY2ZtcVlqbkVnbTNYV0s2OWVNb0FGNHpDT1JPc3p5K1MyMzBWaWt6NkRvRW8wTVZJVXFtNEFpMWxxYlhXd0ZJZVZ4c2Vld0c3Y2hGMHR4VUxQWENNb2xlWTR1M3g2WjZLQUJQTDVzdzUxb2NhK2lpcjNReVRBVWJ4WTVDMTRBSGp2S2QvZEpTZ0hhZG84S3F6YjBqZG5UWkR2RmdLSVJ0d29Fb1g0cUwvS3lrQ25DNWhKY0UvRnlWNDFJbm8weGdBdUpzUElTRVlvNk5xd0JqeEQ5L0ZQd3E1WTBkcWduODZlU1NPVjVWUmVnTU9RNU8wTkZSRllDay9hQnlEY3p2YkdOKzQrVFFjQ3hWUlhnZzRCaDJHdHRzRllBZHJ0ZDhHaklGeXphNGNjOGQ3bGJaclBXUjh4dTJDb0FwVVIxcTlaWllWcXB6YURnbXE2eTJWbjAvVEdwUXNWVXJBQXNMTDBrR1FSVURkREhvVUN5UXJYR0tsT01uRENBTXZUaElBYXJuRVNKaGZuSmpXVmhRZzZoNlYzVys5ejllLzNHSHZpYThZRnVXT1ByZm0yaFFXT1BnT2gycTlqSWJLamhPZHFuQ0gyNml2aEpNVzgyWFN1UVJZWGl2VkN0QUxYT0NzR2tDSWo4cDhDQkFqdnU0Q2p3S2lGdGtsL09qQXZlZG9KcGE5TkNkUmdITUZFQzZrbDlTYXhIclNKRGtZYUp2dTJJSTN3emVoMUlKNXk0aXQvNzVQdCtQVlZQL1B3VUk4dUpkVUxCTzg3U1R2cFZtL0gyN1RnMExDellXNDBMNjFLMEFKQ29HK1l6NTdiaUNkQmpUWjBZZDI1OHI0YTd4dktDZnp2ZEJWa0ovRklCRXl1RUJCdzRNYVNndldKZlJmYlpMOUtDTlJvQ2QyNkM2ZDhoOG1DbFoyamVrc2ZFNTd5eXYreXhaaktiRlhGZGtpVEFhZk9RK29LU1dRTmdDWjBMT096c3E0K3VWYXBqTWVVT1k4NjQ3TUxXa3dnL2JGajVUOHMwZituTURydmwzanNjRHF0Q3dVaWpkK1lrSUhoS0VBeGFOWHAzakRyUFJrV1YwTWJ1Z20zSThIamJUSVJGZUIxRUEvUDAyeERhVGN0eGhzb1ptWm5pOWpoeVBSWXZsdzBxVTEyNFVnSWllenl4T2FNdjVXb0Mzd0dVWlhJZFNHQi9rZUJ5bWlBODdiQlhZSStpdUg4S3JvTXV5OFp0eXZ2QXhjWFB2MXFIdDlkcjJ4emtmZzA3TDR3ZzJQVnp5RE53K2k1TW1TUHBWdHVxQmNTcXNoMU5veStUMVRTeEF2eWRaK2tLWThqZUxaL1hQYnQ5YXk0dmNJOFhCYktuazRlRVhoNUZqZDhpOFNPN2VPWkpPWm0vV3NDMDg5SUphQWVLbGljTWp1TU95QVFweHJoT0hQQUU2M3dVV3g1R2tneFByZTZteS8ySHVlTXp5WXJ4YWozZGpuaHUwSHYwOGFIbnNBaVA4YWdVQXNGclpWTTBpVE94cE4rNjV3V3F4Uy9KaGlwdm4vYUw2cE4vRXZvSWdwRW16M05nM0hJdkZmOSsvbHYvaW55QUZNUGEwYlpXVVI2UjJrUkdIYkhDRGxMTzFiVEN2bG5sY0NqaDRUUVRiZTVpVFJlWVlFMkVhWHVIM1VBZk5HOWVwY0cwQUUrZEFKNVBNUUxEdUZzdGpJWm55WlhBSld6amdXclVwbzloYmxhQ1BrMDNkUVpDdWJYMXUrQVlEOXdWc1ZvNTQvNTZ3dEF6WUpUdlJ5YWl1NXA2dDhCK1MyZ1hVSXlzQWdQYk54c2RNR0RtZXRwT2NyRkxIR1dyRzJaUUdtbmIwTThlbTBTZ1VNZVNWRVdRUVJxc08xeDhaS1lPY3pGSURLZmcyWGxwbzl1QWJmc2EyNGFnY1FWQ1pFU0VjeHZJRllUTnhCaU9jN0JLRHNIeWJzaTRyOU9HTFJKSWRseVp1cW1wbEdIM3JkalZYSE9JQkhvYXcyQU9jZDBNbEpnTnBFcUpJQWtrSUtMMGo1RGpNbGNsT2xwRkI3RVZZallPWnV1amVGZmNpYVZERlVsV1RiZE9nalNTMkgrOTBNclVHTVFqTEEzNWZwR08rUE9tRjBpU0x2bFZ2YXFuUDc5UjhXK0prRzRvbnBVeVBIeVQ0MjlPNldEM280anYxSnVmNEtNbDZKMk5mUUwxem84OTBrS3JnRGJLb0cwanU0VVlKenFUWm93dkdiZnJoNzYrbHpFVFdETUF2TWx5dElqNGo5ZCtCSVF2b1M5U2tyaHV5TGh4SmpaeFZrcXdjQ3BtL082VmNyMituTG9CMnEvbXpSK3BQT1krekM0cDc2RmZnU3laYWVvaitQVVJONExpZzRCV1UreTlsSlpCR1ZnNUZHZUREN2VtUlJiemx5R2grc1JFWGIyVFpPSnhKdmZWdHdIYnkyejFJNk5Ed3RXcmYrelJLK0kxV0FDL1lSQm92bFVoYzVzdm5SU05YQ3c2Y1pTdDFMV1Q2ZDRVRVJ5ZjNPQVdveGxjNkY1WThnM2FobE4yZGUzTXM3TDA2clozbnVXK2NaZE4xdlpJN05FUDFjTGFoaVltREVHRzByckQ3MTFIQVdDa3drY0JCQklIVWowVWV2RjVIampURFc5WWhMdjRGTUZiQjdvLy9KSVVBQUFBQVNVVk9SSzVDWUlJIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiXSwiZXh0ZW5zaW9ucyI6WyJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiI0ZTc2OGYyYzVmYWI0OGIzYjMwMDIyMGViNDg3NzUyYiIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOnRydWUsInVwIjp0cnVlfSwibWF4TXNnU2l6ZSI6MjA0OCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMV0sImZpcm13YXJlVmVyc2lvbiI6MX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIxLTA0LTA5IiwidXJsIjoid3d3LmhpZGVlei5jb20iLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IkZJRE8yIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyMTA0MDkwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMyIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4zIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIxLTA0LTA5In1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMi0wOC0wMiJ9LHsiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjExOTUwNGY1MjBiYjc2OWJkZGQ4NTYyMmU3MWU3OTM3YTRiZjRiYTAiXSwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiMTE5NTA0ZjUyMGJiNzY5YmRkZDg1NjIyZTcxZTc5MzdhNGJmNGJhMCJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiWXViaUtleSA1IFNlcmllcyB3aXRoIExpZ2h0bmluZyJ9LCJkZXNjcmlwdGlvbiI6Ill1YmlLZXkgNSBTZXJpZXMgd2l0aCBMaWdodG5pbmciLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2LCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjJ9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50IiwicmVtb3RlX2hhbmRsZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURQakNDQWlhZ0F3SUJBZ0lVWHplaUVESkVPVHQxNEY1bjBvNlpmL2JCd2lVd0RRWUpLb1pJaHZjTkFRRU5CUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTVo2L1R4TThySVQrRWFvUHZHODFvbnRNT28vMm1RMlJCd0pIUzBRWmN4VmFOWHZsMTJMVWhCWjVMbWlCU2NJWmQxUm54MW9kNTg1aCsvZGhLN2hFbTdKQUFMa0tLdHMxZk81M0tHTkxadWp6NWgzd0duY3I0aHlLRjBHNzRiL1UzSzloRTVtR05ENnpxWWNoQ1JBSGZyWU1ZUkRGNFlMMFg0RDVuR2R4dnBwQXk2bmtFbXRXbU1ud08zaTBUQXVjc3JiRTQ4NUh2R000cjBWcGdWZEpwdmdRamlUSkNUSXErRDM1aHd0VDhRREl2K25HdnBjeWk1d2NJZkNrenlDaW1KdWtoWXk2S29xTk1LUUVkcE5pU092V3lETVRNdDFid0N2RXpwdzkxdSttc1V0NHJqMGVmbk85czBaT3dkd01SRG5INHhnVWw1Wkx3cnJQa2ZDMS8wQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQjhHQTFVZEl3UVlNQmFBRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRTXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJEUVVBQTRJQkFRQzNJVy9zZ0I5cFo4YXBKTmp4dUdvWCtGa0lMa3Mwd01OcmRYTC9jb1V2c3JoenN2bDZtZVBNcmJHSkJ5SjFYbnF1QjVzZ2NSRU5GeGRRRm1hM21pbzhVcGYxb3dNMVpyZVhySjBtQURHMkJwbHFiSm54aXlZYStSMTFyZUlGVFdlSWhNTmNaS3NEWnJGQXlQdUZqQ1dTUXZKbU5XZTltRlJZRmdOaFhKS2tYSWI1SDFYZ0VEbHdpZWRZUk03Vm9sQk5sbGQ2cFJGS2xYOHVzdDZPVE1PZUFEbDJ4TkYwbTFMVGhTZGV1WHZEeUMxZzkrSUxmejNTNk9JWWdjM2lyb1JjRkQzNTRnN3JLZnU2N3FGQXc5Z0M0eWkweEJUUHJZOTVyaDQvSHFhVVlDQS9MOGxkUms2SDdYazM1RCtXVnBtcTJTaC94VDVIaUZ1aGY0d0piMGJLIiwiTUlJRFNqQ0NBaktnQXdJQkFnSVVSMzhtcTI2U2Yyc3pWVjJCZEc2V0VON2t1V1V3RFFZSktvWklodmNOQVFFTEJRQXdMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3SUJjTk1qUXhNakF4TURBd01EQXdXaGdQT1RrNU9URXlNekV5TXpVNU5UbGFNQ1l4SkRBaUJnTlZCQU1NRzFsMVltbGpieUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRUlnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTlkwV2I5b1BvUm9Lb1F5V1BhSnB6MTF2cldUZzZ6VHRtTmoyVm9LUm55dktHUnFwemI4M3c1bDZZQTk2VVlrWUJEUVAwaWxPMkRQZTZ3V3FWUjV6RGZSemRjSDhiaCtMN2RHR3ZhZTZoUlRaaGtGa0NwWERzNEhjY2tuckRmOEZDbEo3SGUzOUpmNDIvRzFRbTJ6ejlXV21yUFh0Z2lLL3gwNUdqc1FmR3VERzF6ZjVRVFVVaWU4bHd5bUszVGZkT3ZOZWVKQUFQZTJwbjdJdGZSYityVnJOV2lEemxSbjJ2Tm5aMndQbzR3SC9XSjZkaFhaRytyTVdUK2E2Qm9jZzFVZkl3NmtkdW5HNGJUcFp6c3ZhY0ZZeVIwbXBmK0RlT25wU1dBbXl3SldIdlRsZjJZWHhGeWVYY1RBQ2RRbGNNTkdKMlZoWlE0OHh0UDUvUkJQLzhrQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZDaHk0Mm9raXFjVFMxaXFhL0hSV2prQm40SC9NQjhHQTFVZEl3UVlNQmFBRk9xM1FwQ2VESHRrZXR0VWZBTzZmRTZmMktGaE1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQW4rUkhJUGJ0TUVETmRUMWc4SC9SaXRBa1VkTGdBdDF0V0dXbmxqOWtuYnY0LzRHbFg3QzlwNDVlZlBPOS9hWkw2T1YxWFJLQmk2S210Qlc1SzdudVlFbk14LzVCcUJTYkxUN3JoZHVDNDlUQmVNYjlQSGRYc1RsU1ZOWWVmcjFkR2lkcjRqMHhWQlFMYjFya25EQWJkV0R6S2Z2bmF5S084RnJ3ZTdIeDg0M01HL3JKK2MwWHJ1VXZiZlZUQ0hMaUlXaE03b05EaEw4eG9iNnhVbzlLTEtjU0wrSXRZc08zLzlXYjhROUdqc3FMNEZYc0RjRzFTYVloN0twZnVNbU9peHF6SlpPMm5JaWNQWVJnMUkyU3VpVWZZTzcwdG1kSGNibCtrU1FtU1l0N3JxNHZpSUxnMkd4M2o5cklUdVdUamJhVWFTU1F4Z09tTVNIdXl6TUFDIiwiTUlJRFNEQ0NBakNnQXdJQkFnSVVVY21NWHpSSUZPZ0dUSzBUYjNnRXVaWVprQkl3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRRG01NTViV1k5V1crdE9ZMHJJV0hsZGgrYU5hbm9DWkNGaDdHazNZWnJRbVBVdzBoa1NHNnFZSFF0UCtmWnlTMzNWRXJ2ZytCUXFubXVtZ05oZnhGcmt3RVpFTGVpZEJjQzhDNEFnNG5xcWlQV3B6c3ZJMTdOY3hZbEluTE5MRmNaWS8rZ09pTjZaT1RpaE81L3ZCWk1iajlyaWFBY3FsaVltTkdKUGdUY01HYUVBeU16RU1OeTJubTZFcCtwalA1YUY2Z2kyMXQvVVFGc3VKMWoyUmoveW5NL1NkUnQrZWNhbDVPWW90eEhrRmJMOXZ2djJBMk92NUlUWkNsdzRiT1M5bnB5cFFpbU9aNVFBWXl0bVlhUXBXbC9wTVl6NnpTajhScWtWRE5FSkdxTmZUS0EyaXZMWXdYNmxTdHRNUGFwZzBKODRsOVgwdm9WTi9GcFM0VkNWQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJRZ0tGQWhHNlJhVytoVHk1MmR4ZVQ4YkM5Nkh6QWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQVlNemdMckpMSXIwT292UW5BWnJSSUd1YWJpSFNVS1NtYkxSV3BSa1dlQXRzQ2hERUhwWGNKL2JnRE5LWVdvSHFROHhSVWpCNEN5ZXBZZXZjM1lsckc4bzd6SHhwZlZjYW9MNVNldUprekh4S240YlRhU3A5K012d2FtbnA2NGtaTWlOYkZMa25mUDlrWUtvUkhrTVdoZVJKMVVzUDF6NFNjbWtDZUlMZnNNczZ2cW92cWpXQ2xGc0pwQmNzbHVZSFdGN2JCSjFuNFJ3ZytBVEVvcFk0SWdHdjZadndjK0E5citBVDJocXBvU2tZb0FsK0FOWXdnc2xPZjlzSmUwVitUQTlZWS9VbGFCbVBQVGQwLy9yOXd2Y2VQV1prUGpLb0FDL3pVTmhmRGJoNExWOEdIczNseVgyWG9tTC9MTmM4Sll6eUlhREVoR1F2ZW9QaGgvdHIxZz09IiwiTUlJRFJ6Q0NBakdnQXdJQkFnSVVleDluVDl2d1pOWFM0ODNMZGlZR2Z3MlNqU293Q3dZSktvWklodmNOQVFFTE1DNHhMREFxQmdOVkJBTU1JMWwxWW1samJ5QkJkSFJsYzNSaGRHbHZiaUJKYm5SbGNtMWxaR2xoZEdVZ1FpQXhNQ0FYRFRJMU1EZ3dNVEF3TURBd01Gb1lEems1T1RreE1qTXhNak0xT1RVNVdqQW5NU1V3SXdZRFZRUUREQnhaZFdKcFkyOGdSa2xFVHlCQmRIUmxjM1JoZEdsdmJpQkNNaUF4TUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUF1MU1ldm55OWR5TzlaVUMzOVNvTWhMY1IvRFhydEYvY2lNMTJ0Y2l5MkVYQVo2TWtyaXZWdENmRVZNOVg2SVNURW5CUDZ1U1lZb3Y2cHB2Nk82SmgyTkhtWW00dytKblM0Vm5DUFU3bUhBTWZWSTJNR1RUTVZPZXcweFVzRzdzSVNJa0lEVUJtdWs4WUs5YzV6aWM5K3ZGUUdMSWtzZFhPNWlWRklnTkc1M2NHWEQ0Wkxab0FQaXUwUEVvenhBcVlJYUk0Z3hLaE9BM1M4L1c4bUlXc3U2b2Z5ajRHdmtGRzZaN2t5RjMxMDdQN213RkhMckkzRU5hUFdNT0ZjVGFHYTBkdysvdlZSd2pSY0VaQlZzdXVULzg3Y2tTczBhNXBrdDN2WkJsYVllVDhwelNyZVY3bW93Y0lNOTBMMmlhQVRsUDBueG1hRTZuT3lUYm9qRlZsMndJREFRQUJvMll3WkRBZEJnTlZIUTRFRmdRVVNYRWgzc2EzYnREdXJtNE1NL0M3UzFsUnV1WXdId1lEVlIwakJCZ3dGb0FVNnJkQ2tKNE1lMlI2MjFSOEE3cDhUcC9Zb1dFd0VnWURWUjBUQVFIL0JBZ3dCZ0VCL3dJQkFEQU9CZ05WSFE4QkFmOEVCQU1DQVlZd0N3WUpLb1pJaHZjTkFRRUxBNElCQVFCNUdjM2hhZnRwN2hLc0Vac28raS9aNW5SdXFkbXpHMldDbFVvUlVxYmFQeWdsbkpEaktSL2tmZ09sNmliYkYvenRobTNLbVhRN0hjRElQMnhNZEc3VTJMMmltYkpRSHFQZi9oMkhxb2piNHJaZ3VlKzZXNGt0U1I1ZWxSOUwxcllxRS9TR1lNNGlFS29WUVN2N1JUMXJ4SWVXaUtzdy9WeHhpL1FPbnN4M0Y3eDgwQ0NZZ0I0RTN5UXg4VlRXNDQwaFRFd1RBMWVNSE9peDMydFB0eXlISWE4UFZWSWZWcEhRSkJhTVZ2djUwOFVFandrYlUycm5qZnpvU1ROUzlBNWpVUThtQlN2ZTk1cmpCMGRvOThFVStEeGRCcVgyK0g2aTV3bElDRmd6aGR6Y3NuZTloR0tUNmx6VFg0Y0lkSnNyWTIreGxlSzBGRlF5NmxHRVZMRWUiLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVRuYmJHSVIyTkh2enFJS0ZBZVF3RzFYQmlzMHdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFRWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPc1hqM2swNEJhbjRUWWR0WktxRC9PUEp4eUR5YVBtQ0JVRlVpYVpJZ1R0ZVpuajNYMjVEaGdwWlpYc0M0RDB5ZEljcmxBNndOVUluT1JML0w5ekJiVEVJTUFWTUdvNmc3VUtBbWIyTUY2QUhibmhZSmQ5ZWlrdXBWTldTaEhOWU5jNEdCZE8xWU42QWZVcXZKaEhiZTNWNFNOTVBtQlJFS0pQVno3VGh3Z21nZ1RlOFdzMkswL3dzcXYyd1NFN3BiQ0JzVVpoSVg1MWJaTTNwcUR3SlBUbVJGRXZ0MC82dEc1ZU84RjNqMTRPWHFmRWhtam4xVnZ4S0RZUU9MWkF4Q3d3Z0MwUDRDZGZXdjN5OFBTUjhJMzU0aE8xWStHek5qdklxWDM4TktMeXd1SVlIRmVyT3hObHhFTUJ2RmhZQnVSdVlBa2tnVWFQcU42VUJoc0lMcnNDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNDb1JIaGl5Tm5iblhSV0lMNlpCWG9CWDlZVE1COEdBMVVkSXdRWU1CYUFGQ0FvVUNFYnBGcGI2RlBMblozRjVQeHNMM29mTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFDUUZhZkpJMS81V2c5Q0VFaW1FMVJQNTRSZ1F3VE5UT09Rc0xBQ1RlK3JJdGxGUXpDOVpEaHJWODI4eVg3anp5K0FBc3AzaXpLN1QxdGgyZGw3bSt0dTBzdzJQYS9vbGMwMm50NlB5SXczNDhnYUh6aEkxKzBLRTQ1cXh2RkRlTDJsTXhiUGZDWXZ5RUVhWXpqaVFFTFU1OTUxcFhHV3lLTWEvNGZMdE8rWktPWGhNdVZlcTRyWERQSTU0VzZKSE9pQWFpS2Rpdys1ZTNjMmt0L2pGSVF0TTZ2TVhnOUxORnpkakVUTnQyMFZYOVFldlJwRlpmdWNNRzl3Q2FRRG9GbFB6cFRNSktoUGV2L2ltSm1aWWhLZnIwbExjZW10cWpJeExBb3FaZE9ZZkhCZzYrdkFjZFBJL2lhdUdwVUF2N1grVUtObUR3aloyQmFINHNMd2hCMm0iLCJNSUlEU0RDQ0FqQ2dBd0lCQWdJVURxRVJ3KzRSbkdTZ2d4Z1Vld0pGRVBEUlozWXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFESTdYbkgrWnZEd01DUVU4TThaZVY1cXNjdWJsdlZZYWFSdDNZYmF4bjlnb2RMeDVzd0gwbFhyZGdqaDVoN0ZwVmdDZ1lZWDdFNGJsMXZielVMZW1yTVdUOE4zV01HVWU4UUFKYkJlaW9WN1cvRStoVFpQLzBTS0pWYTNld0tCbzZVTGVNbmZRWkRyVk9SQWs4d1RMcTJ2NUxsajV2TWo3SnRPb3RLYTlKN25IUzhrTG16WFhTYWowU3dFUGg1T0FaVVROVjR6czFidm9UQVFRV3JMNC9KOVF1S3Q2V0NGRTVuVU5pUlFjRWJWRjhtbHFLMmJ4Mno2b2tWbHR5RFZMQ3hZYnBVVEVMdlkxdXNSM0RUR1BVb0lDbE9tNGNycHduRFJMVkh2alllUEdCQi8vcEV5enhBL2djU2N4andhSDFaVXc5Ym5TYkh5dXJLcWJUYTFLdmpBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlRxdDBLUW5neDdaSHJiVkh3RHVueE9uOWloWVRBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBcVFhQ1dNeFRHcVZWWDdTazdra0ptVXVlVFNZS3VVNitLQkJTZ3dJUm5sdzlLN0hlMUlweFowaGR3cFBOaWtLam1jeUZnRlB6aEltd0hKZ3h4dVQ5MFB3M3ZZT2RjSkpOa3REZzM1UFhPZnpTbjE1Y0ZBeDFSTzBtUFRtSWI4ZFhpRVdPcHpvWHZkd1hETTQxWmFDRFlNVDd3NElRdE15dkU3eFVCWnEyYmp0QW5xL05EVUE3YmU0SDhIM2lwQysvK05LbFVyY1VoK2o0OEs2N1dJMHUxbTZGZVF1ZUJBN24wNmo4MjVycURxc2FMczlUYjdLQUhBdzhQbXJXYU5QRzJraktlcnhQRWZlY2l2bEZhd3AyUldadnhyVnRuM1RWMlNCeHlDSkNrWHNORDA1ZENFclZIU0pJcytCZHRUVk5ZOUF3dHlQbW55YjB2NG1TVHp2V2R3PT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsImljb25EYXJrIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwicHJvdmlkZXJMb2dvTGlnaHQiOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJwcm92aWRlckxvZ29EYXJrIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09In0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMTItMjIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2LCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ill1YmlLZXkgNSBTZXJpZXMgd2l0aCBMaWdodG5pbmciLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlUyRjEwMDAyMDI0MTIyMjAwNyIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTEyLTIyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3Nn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wMi0wNiJ9LHsiYWFndWlkIjoiNDdhYjJmYjQtNjZhYy00MTg0LTlhZTEtODZiZTgxNDAxMmQ1IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI0N2FiMmZiNC02NmFjLTQxODQtOWFlMS04NmJlODE0MDEyZDUiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiU2VjdXJpdHkgS2V5IE5GQyBieSBZdWJpY28gLSBFbnRlcnByaXNlIEVkaXRpb24ifSwiZGVzY3JpcHRpb24iOiJTZWN1cml0eSBLZXkgTkZDIGJ5IFl1YmljbyAtIEVudGVycHJpc2UgRWRpdGlvbiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzMsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfSx7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDM4NHIxX2VjZHNhX3NoYTM4NF9yYXciLCJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyIsImVkMjU1MTlfZWRkc2Ffc2hhNTEyX3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NiwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NiwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURIakNDQWdhZ0F3SUJBZ0lFRzBCVDl6QU5CZ2txaGtpRzl3MEJBUXNGQURBdU1Td3dLZ1lEVlFRREV5TlpkV0pwWTI4Z1ZUSkdJRkp2YjNRZ1EwRWdVMlZ5YVdGc0lEUTFOekl3TURZek1UQWdGdzB4TkRBNE1ERXdNREF3TURCYUdBOHlNRFV3TURrd05EQXdNREF3TUZvd0xqRXNNQ29HQTFVRUF4TWpXWFZpYVdOdklGVXlSaUJTYjI5MElFTkJJRk5sY21saGJDQTBOVGN5TURBMk16RXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFDL2p3WXVoQlZscWFpWVdFTXNyV0Zpc2dKK1B0TTkxZVNycEk0VEs3VTUzbXdDSWF3U0RIeTh2VW1rNU4yS0FqOWFidlQ5TlA1U01TMWhRaTN1c3hvWUdvblhRZ2ZPNlpYeVVBOWErS0FrcWRGbkJubHl1Z1NlQ09lcDhFZFpGZnNhUkZ0TWprd3o1R2N6MlB5NHZJWXZDZE1IUHR3YXowYlZ1em5ldWVJRXo2VG5RakU2M1JkdDJ6YnduZWJ3VEc1WnliZVdTd2J6eStCSjM0WkhjVWhQQVk4OXlKUVh1RTBJek1aRmNFQmJQTlJiV0VDUktnanEvL3FUOW5tRE9GVmxTUkN0MndpcVBTemx1d24rditzdVFFQnNValRHTUVkMjV0S1hYVGtOVzIxd0lXYnhlU3lVb1RYd0x2R1M2eGx3UVNnTnBrMnFYWXdmOGlYZzdWV1pBZ01CQUFHalFqQkFNQjBHQTFVZERnUVdCQlFnSXZ6MGJOR0poamdwVG9rc3lLcFA5eHY5b0RBUEJnTlZIUk1FQ0RBR0FRSC9BZ0VBTUE0R0ExVWREd0VCL3dRRUF3SUJCakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBanZqdU9NRFNhK0pYRkNMeUJLc3ljWHRCVlpzSjRVZTNMYmFFc1BZNE1ZTi9oSVE1Wk01cDdFamZjbk1HNEN0WWtOc2ZOSGMwQWhCTGRxNDVyblQ4N3EvNk8zdlVFdE5NYWZiaFU2a3RoWDdZKzlYRk45TnBtWXhyK2VrVlk1eE94aThoOUpESWdvTVA0VkIxdVMwYXVuTDFJR3FyTm9vTDltbUZuTDJrTFZWZWU2L1ZSNkM1K0tTVENNQ1dwcE11SklaSUkydjlvNGRrb1o4WTdRUmpRbExmWXpkM3FHdEtidzd4YUYxVXNHLzV4VWIvQnR3YjJYMmc0SW5waUIveXQvM0NwUVhwaVdYL0s0bUJ2VUtpR24wNVpzcWVZMWd4NGcweExCcWNVOXBzbXlQeksrVnNndzJqZVJRNUpsS0R5cUUwaGViZkMxdHZGdTBDQ3JKRmN3PT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZkNBWUFBQUNHVnMrTUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFIWVlBQUIyR0FWMmlFNEVBQUFiTlNVUkJWRmhIcFZkN1ROVjFGRC8zZDU5d2VRU0lnUzlBUUFYY0ZMQVFaaTlmcGVWejF0WS9XVFpyNVd4cGM3VzVrbkxhNWpJM1o4NXNyUzJuTTJzanRXd1pTN0lVSDRINHhDbkVReDREQVpGNzRWN3VzODg1djkvbEluQnZWSi9CNFB2OW51LzVudS81bnZNNTU2ZnpBL1F2MEhiL0lyWDNWRktQbzQ1Y25tNGluVUlXWXdMRlJtWlFVdXdqRkcvTjFpUkhoMUVaME5SVlJ1ZHF0MUJkKzJuU0t5Uy9PaHlzMCtsazNlLzNrUTlxdkQ0WlV0YTRWVlNVdVkwZWlweWlUaEFmb2NvT1JWZ0R1dXczcUtSaUFkM3JiY0V0alRqWUlvZjZXYUhzQ216VlBXQ014K2NnaDh0THFXTUthTVdzVWpMcW8yUnRKSVEwb096bWVycFF1NGVzWmdzT05rR3hIN2Qwa2R2VFQxN3M0T01VN1ZJOFpoamdHYU0rQXE5aUVOdThQaWYxdWR6MDdNd3ZLV2Y4R2xWb0NFWTA0UEM1V2RUYVhZRmJSOHZOdkw1KzNLZ2ZiNXhOTXlhOVJhbUppeW5hTWxHVFZ0RmxyNmJhOXUrcHFuRVg0dU11UlJnalNZRWhyTjd1dEZGZTZscWFsN05ma3c1aW1BR0h5blBwYms4Vm1ZMHhzdG5wdGxGQ1ZDWXR6VHVCTjgzUXBNTGpUdGV2ZFB6U1VuSjdlOG1ranhaMzlmWGJLRGZsZFpxYnZVK1RVZ0duQlZGNmZRMmlQSGc0VzE2VVdVd3Z6YmsxNnNNWkUrUG4wcHZ6N0pTZXVBeWVzOGxjcENtYUt1by9wK3FXcjJVY3dJQUhXcnZQMFlFemhYQXRMQWJzc0hocDdpR2FtdnlpalA4cnlxclhVV1g5WG9vd3h5QXVmTkJycDQzUE9CRlhabGtmOE1EUmlxY3B5b3dBd3B1ejJ4K2ZXdnovRHRkZTlzbXN6eWd0Y1I2QzF3YmR6Qmw2T2xxNVdOWVk0b0dhdGhKTXJrVEV4MGpBUlNIQVZzKzVyWWtRTlhiK1FnZlBMc1E2Z1h5SW5zcmVRZm1wbTdSVkZZZkw4Nm4xZmlVT2tZdlNoa1VQeHZidWt6b3k2SzFpaE0xaG8zWHpXNkV2U2ZYQStkcGlXR2FXZCtkb1h6THptR3dLWUZMQ0FzUkFsUEJBaE1sQ0ZYVTd0QlVWUHI4SGdWY0pIV3ErRjAwcGxyK0RNVGRyUDR6dnhZMTFrTk1oeFQrU2VUR2crZDRWNUxRSml0eVVHSk5COFZGWnNqZ1lCWk0vSUkvWENUa2owcXlET3BGMkFWUTE3Q0lqVXAvRG5UMVVrTDVGNWdkaitzUzF3ZzFnRTNnaWdtNjBmQ1h6U25QWGJ5QVBiSVh2K0lEcEUxNlRoYUhJUzlza3lobG1NRTVGM2NmcUFLaHEyQzBFNVBIMWdZYVhhTFBEa1pHMEhESk9uS1dIcDUxSTB6NVNPdXg4ZTFXQXVaemRIUXJUa3A4VG1qWG9JK2xhMHdHWnN6dWJxYk8zaWZRNkEvVzd2VlNZc1YzbVIwSkt3a0tjNFdIaUJrbVI4STNDQ2dJODdvT0w0cXpUNVArUlVKQmVqRU9nQVBLOGhZUHphdE0rZUlUcDJJTzl5VFFtZXJvbVBSeHgxcXhBY3NpbGUvdWJTZUViY1dRR1lFQ2doY0xZMkh5S2pvZ2pIMjVoTXBqcFV2MU91Z2xpNGVoMmVSdzBPMzJiSmpreXVDZ056ZzB2emxZTVNpU3MwdW9vNE1HN2hNT2pDRWFYMXlGRTBuU3ZqQnp1VG5FcEs4Nlo4SW9xRkFJdWJ3OGtnOUFyRWFSRVdTWkkrakg0WGJwNmc5RTlFbkpUM29hUnpETitNVUpCUURIbjU2YThvVW1FQnVzT3hCcy9ONSt0SkViUGtBRkRqOFVHdk9zL0lXdmNTZ2xHQmh2UzcvRlRZZnBXR1lkRFk4ZlBBeFdTQTM1c1RDNHA0K0xtNEFhcUlvUGVRdGZ1Zks2SmgwWmh4bGJzVVhPU21YTmlmRDVaVEFreURvZmJiY2NseG5BOFdOQXF4Q2JSTnlraFh4UXBhRHc2N2ZYVVlic2lHMEtodHYyb2VJdmg4cmhRTVlPY0VBcVhHL2VJK3puZ09jNXl4cjhxODJJQU0xYy9GTEZPcGxxdTVlRlFYck1aekdjVkNqWWJMV0c1STRCVDFldVJybGJ4dE5PdE1pdERERWhMWElJeW5BQXZ1T0VXRTNYM05kQWZ0OTRWZ2FHNDJYSVF0MFpYNlBlQ0UvcVFGZTlySzZIeDdZVTUwS3ZIN2ZXNGZTK3E3S0tCSnhzZ2dCWDVwU0FHaDFqSXJWaDV6UTZ3M1JmYWFoQlhtL2FDYkNaVGpDVUZVVHlXWnFXOXA2Mk1qSlBYVnFPclBnTU80TnY3NEdrZitvd2Z0TlZCRFFuakZKcUhTdzE3cFh2aFdXNUtacWUvUTQ5Ti9VU1RDQVZXb1FYRklIQkhYWGUzRlByVURzdUdEbXRGL2hIS1RIcGVreGhpQU9QSStTSnE2UzZIRjRJOVlXemtCSlRvNDZpVU16V3A4UGlyL1JpZHVMeEtZc1Nrc1Y4dkxsT1F2aEdYMllsUjBPQmhCakMrdS9nRWN2WTBBcEs3WWs0MU54alBTUW5XRkhURjY2VXJqZ2V2QjhDdTVhK2wydllTUlB0dVZEbzczaGhkTVNIblVYN3RUanNWWkd4QWwvV3B0aU9JRVExZ25MMjltWDYvdFIxdG1sa1lqOFc0WCtDU2pXY1VER1kxTnBTL0M3aFNLcWlNTE0vbDJRbVNXWjczRGR6K2dpbzhCQ0VOWVBRNDZxbmt6d1hVYnF2Qmt4alVRc1dmWkZnYnVvM3JBZit3TjdqT085MCt5bng0UGkzTCswbllMMVNjaERVZ0FQNGdQVi83SWQxcSsxSFNobXVHa0lxV1JQZ3l4TUZxUDhIZmpUbmpYd1k1YlFmYkpjdDZPSXpLZ01Ib3RGL0hlMWVnc2F4SFNxRzZ3ZmRtUTV4OE55VEZGcUJjcDJpU293SFIzeWs1KzM2aEY3dlhBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMV9QUkUiLCJGSURPXzJfMSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJsYXJnZUJsb2JLZXkiLCJjcmVkQmxvYiIsIm1pblBpbkxlbmd0aCJdLCJhYWd1aWQiOiI0N2FiMmZiNDY2YWM0MTg0OWFlMTg2YmU4MTQwMTJkNSIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImxhcmdlQmxvYnMiOnRydWUsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjp0cnVlLCJhbHdheXNVdiI6ZmFsc2V9LCJtYXhNc2dTaXplIjoxMjgwLCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjgsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4LCJ0cmFuc3BvcnRzIjpbIm5mYyIsInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi04fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotMzV9XSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5Ijo0MDk2LCJtaW5QSU5MZW5ndGgiOjYsImZpcm13YXJlVmVyc2lvbiI6MzI5NDczLCJtYXhDcmVkQmxvYkxlbmd0aCI6MzIsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjoxLCJyZW1haW5pbmdEaXNjb3ZlcmFibGVDcmVkZW50aWFscyI6MTAwfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMTAtMTIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDczLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IlNlY3VyaXR5IEtleSBORkMgYnkgWXViaWNvIC0gRW50ZXJwcmlzZSBFZGl0aW9uIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNDEwMTIwMDUiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0wNi0wNCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzMsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiU2VjdXJpdHkgS2V5IE5GQyBieSBZdWJpY28gLSBFbnRlcnByaXNlIEVkaXRpb24iLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI0MDYwNDAwMiIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTA2LTA0IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3M31dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNC0xMS0xMiJ9LHsiYWFndWlkIjoiOTMxMzI3ZGQtYzg5Yi00MDZjLWE4MWUtZWQ3MDU4ZWYzNmM2IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI5MzEzMjdkZC1jODliLTQwNmMtYTgxZS1lZDcwNThlZjM2YzYiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiU3dpc3NiaXQgaVNoaWVsZCBLZXkgRklETzIifSwiZGVzY3JpcHRpb24iOiJTd2lzc2JpdCBpU2hpZWxkIEtleSBGSURPMiIsImFsdGVybmF0aXZlRGVzY3JpcHRpb25zIjp7ImRlLURFIjoiU3dpc3NiaXQgaVNoaWVsZCBLZXkgRklETzIifSwiYXV0aGVudGljYXRvclZlcnNpb24iOjUsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MTAsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6MCwiYmxvY2tTbG93ZG93biI6MH19XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNpVENDQWc2Z0F3SUJBZ0lVT2ttVTM1SWljWG9WUGpmdndwRzdNTjZ0SFBVd0NnWUlLb1pJemowRUF3TXdRekVMTUFrR0ExVUVCaE1DUkVVeEZEQVNCZ05WQkFvTUMxTjNhWE56WW1sMElFRkhNUjR3SEFZRFZRUUREQlZUZDJsemMySnBkQ0JHU1VSUElGSnZiM1FnUTBFd0lCY05NakV4TURBM01Ea3pNRFF5V2hnUE1qQTFNVEV3TURjd09UTXdOREphTUVNeEN6QUpCZ05WQkFZVEFrUkZNUlF3RWdZRFZRUUtEQXRUZDJsemMySnBkQ0JCUnpFZU1Cd0dBMVVFQXd3VlUzZHBjM05pYVhRZ1JrbEVUeUJTYjI5MElFTkJNSFl3RUFZSEtvWkl6ajBDQVFZRks0RUVBQ0lEWWdBRXRnT0M3SUt4aXBNSjdiVlBUVDgzT2U5MHh6SFBDZWJ4eUN0Zy9XcnNUclJhU25ZaWdtSkNCOC9qcUJONE9RRzJkWjVqY05zTDZTd0hvc1lEUkpjK08xems5aTVHRVpXZjNJcjk5MkE2ZHVNc3A1MWxxNGZBZ2EvVXpUTjkvRWJ6bzRIQU1JRzlNQjBHQTFVZERnUVdCQlRmeHpnOEdHellBaWRLTDYzdWhTaXJhWEpJS0RCK0JnTlZIU01FZHpCMWdCVGZ4emc4R0d6WUFpZEtMNjN1aFNpcmFYSklLS0ZIcEVVd1F6RUxNQWtHQTFVRUJoTUNSRVV4RkRBU0JnTlZCQW9NQzFOM2FYTnpZbWwwSUVGSE1SNHdIQVlEVlFRRERCVlRkMmx6YzJKcGRDQkdTVVJQSUZKdmIzUWdRMEdDRkRwSmxOK1NJbkY2RlQ0Mzc4S1J1ekRlclJ6MU1Bd0dBMVVkRXdRRk1BTUJBZjh3RGdZRFZSMFBBUUgvQkFRREFnRUdNQW9HQ0NxR1NNNDlCQU1EQTJrQU1HWUNNUURzdjRLNk5mSnZmdnpkME95Z3dKL0FCaUx0Z3RKV2hYVGVVbGx0ZHFhNFdzT005dHZ4NjM2djVGSXZaUmtLMVhvQ01RQ2RvUFErYTRmREJFaU51ajBXczMzdVVRaEdycHNlUERHZlZYbjRrRXBiVElCZU9kVkF4Ly9Uck1DL1NWYitic2c9Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQU5FQUFBRE1DQUlBQUFCaUVOSDlBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFBN0RBY2R2cUdRQUFDWnZTVVJCVkhoZTdaMEhkQnpWMVlEWERUZWFzU2syRUV3eFlNQ0FBUU9HbjBEb0VDZEFDS1lrUUNDaEJFaUFFRWdnaElRRUhBaWhkeExBWGJMYUZxMTY3NzJ2ZXU5OXAvZVoxWC9mekVwYTFnV0RaNldWOXQzekhSMGRnM1puMy92bXZ2dG01NzJ4ak9IQU1iV0JuY014MVhFZzUxUlZIWFVUTmMxdDlvS0t0K0x6SDQzTXV6bThkSDFFdzZsUm5TdHRneXNjN21OaWlXT2MxREZPRWpQYm9hQ3ZvY2RYMllkT2krcTRPTEwrMXZEU3h5TnozNDdQaXkyb3FHdnRjQk1FMk9MMTV0dGl2ODRKZ3REVzBaRlU1bm8zcmZ3Ulc4bDFZYVZydHBZZi9YWHRuRzF0bG1pM0pVNnlKSTlaVWpHaEJQUTQ5SHZVNk54dHJjZHNyVDE3ZThYMXUwc2V0eFYva0Y2ZVdsN2IyZFVsaXFMWG5nUEd2cDFqR01iVjFCcVdWZktjTmZmRzhOSXp3aHFPRHUrY3Y2ZlBFamxzaVNFc05zYmk0Q3l4dkk2QUNRMzA3bmF3cVBmQmdZamh3eUlHamc3ck9ITjMzUzFoSlgrMjVVZmxsdFczdEhNYzUzVm8vN0VQNXdpQ0tLMXYvaXk5OUtHb292VTd5bGZzYkpvVDFvY2tpNWVSNXZDTGpiWllTZlRHbUZBRCtoMmNpK1dRQ2VDRG5aMGIxbnZjenNaTGRwUTlHbFAwWldaWlpWTXJSVkZlay9ZVC9zNUJoZ1BoUGtncXZDdWlhTTN1K2tYaFBYT2lSaXhXR2drTzJKbHg0YkJ6b1FscHNWTElBVERCVU1KS3pZMGFXUkxlc3phczd0NDlCWitsRlZVMHRCdzQyMzNET1o3bmE1dmJQa3N2dVd0UDRTazdYZlBDK3kxeGVtNnpRMGFsOW5wN1RNZ0RWb0IyOFJKSXNpQzg3N1FkMWZkRkZueVZXZGJZMWdIekFhOVZlOFdrY3pEdmFPdm9oQnJ1b2FqQ004UHJGMFQySTVkaElJY1hoWmZHZ3lsbWI5QlFDOXBCY1M5QThsdXdwL2VjOE5ySFlncWljOHM2dTdvMVRmTzY5YzJZZE01TmtNbGxydWRpY2kvY1Zyb292QnZKQ3pVakpGSnNHK2JBZ0NIZ2lWT3d4SWxMd2pvM2JDOTUwWmFiVVZHM3Y4SnUwamxYUy90N2FlVTNoWlV1Mzk1Z2lSelNwd3NzcnRzd0J3ZUpNaFE0czJmZzJHMTFtOEpMUHNtb2FHanIyT2ZWazBubjdQbmxqMXFMejloVk55KzhEMmtMTlJ6ODlIOXBER1kvd01RQ1RTbkkrV0c5WisrcS9aMjlKS0dvY25CNDJLdVhUMHc2OTFaYzN2VmhKY3ZDTzlCZkdqVWNUbktZZ3dmVmRycDJObWI1N3JhYmR4ZTluNUJYMDlMdTFjc25KcDE3TkNMM3pHM2xoMFgwbzBvT0NidlhpMkl3QndhY0FYUGl4SVhodld1L0x2MWRkRjVLZFpOWEw1K1lkTzdtOE5LanY2NzFWbkl3WS9WN09Rem1ZSEF3NE55Y2lLRmp2cXE1TGJJc3ZMTERxNWRQVERxM1BxSisvczRPL2MvMGJ4cDhYd2lET1Vqcyt2QWE0MTZ3by8zeTZJYlBxd2U4ZXZuRXBIT25SbmVpTCs5dEU5ODA3UFZ5R015M1l0T3JPaGdubzBiUHRuVzk2M0o3OWZLSlNlZFcyZ2IxNnlPY2Zya0ZPNGY1WGhqeXhISVdwN2c2ZHVqTk9zYXJsMDlNT3JmQzRiWWtlOUJWRnI5WHdXQytLMDRCWEZybGRHK3A1NzE2K2NTa2M4ZkVrdWdlS2V3YzV0QnhpdURTQ1hIRTZ3MEh2Q1o4akpOQ3pvR2hmbitQd1h4WERPZmlxZGUrelRrOXoySG5NSWVPTjgrUnJ6WHM0KzRTN0J3bUFHRG5NRk1OZGc0ejFXRG5MTkVoajErREJKclFkYzVvN3FoOUVSbEt3T2VkWXUxbXVYT0dXUHZFVnpLLy94Uk56SmtnaHBnN2U0RlBaM3hNLzNZTEtMUFdPY01lUXlsMFFyc25tVkF0Q3JYN0FpdXh5RVlzdFJOSE9vaGxEbko1TEhXc2t6cmVTYTJNbzFiRlV5ZkdVeWVOYzNMQzdPR1VCUExrQkhKVkhIVk1MTG5FUnM2YnlwdlRacFZ6NDFscVVqajlGemlQNTFxUld3dDF0NDZLSlZjNFNmQnBkUUoxWmpLOUxwVytLSjIrUElPK0tvdStOcHU1SVllOUpZL2RsTS9lVnNEK3JJQzlzNUQ5ZVNGN2w4N21vbG5DM1VYc2ZjWG81Nlk4OXJJTUdoUmNiQ2U5amViWHBJRmc5amhucEM1SVl4R1F6TkR2TUhBc3NwRndIcDhVVDU2WlRLMVBvNi9Nb20vSVpVQ21lNHE1aDh2NEp5cjU1MnFFdjlRS3I5WUxielFLN3pRTEg3U0lIN2RLbjdWSi8ydVh2dTZRdG5WSzI3dWtIVjNTVHAxZHM0WGQzVkpranhUV0xjSG5mYUtTMjVqSkxJdlZuWU1HOUd2VlFEQWJuRE5PMFBHc05pK0dXR0tIVEVhZGxraXZUMk91elVHSjZwRnk5b1VhL3ZVRzRjTldFV1NLNkpHZEEwcnFrSkk3cXBZUWFpV2wxZEphRTZPMXNGbzdwM1Z3V2hlbjlmQmFyNkQxNmZUUExnWkZ6UzE3aGlSUG1Wdjl1Rlc4dllBN1BvNnlST21GaDEvYkJvSVo3TnlFYW5xSkJwWFprWGJ5NUhqcWdsVDYyaHhtY3hIM1pDWC9TcDN3Zm91NHJWTzA5MHNaUTBxeFc2bWwxVllXeVRRaWVTakZ3NnRqc21kczN5c3RReUFHQmMrZWJ2bVhKZHlKNEp4UjdQbzFjaUNZMmM3cHVRMFMyeEVPY25VaURXTUVGQ3QvckJiZWJSSER1MlZJWTJXRTJzUnFQV0NZN0tFVkQ2ZDZSTTBqYTJPcVo4emovV1FoSFpEQ3c3dWtYMkRudmgxdmVrTzVEUXFSdGNrVVZHbVBsTVBRS1c3dmxOS0dsR3BLaFpHUlZzQXRyTmFCb3BQVGRuWks5eFp6TUlIRnpoMFFQYjB0dEtIWi90Vlp6T1BsSEF5Z3puNmxpbFM3ZVkyUVljVDBRQ2JEOGEwQmxlc083TnlCOEE2bWJoaE1WempKOWVrMFRQaTNOQWpXWHJtR1VxRSt3MG50dXdaMjd0dlFuVnRnSTA2TUo2L1BZWjUzOFdIZGNnV2g5Z3Nvc1hrUEZNZDNDZXpjL2pFeVhCU3h4SWF1dE4xUndMN1JLS1FNeVoyOHBtRFpEaUd3Yy90SGQyNnBqVHczaFg2d2xQdXNWU3gycTZPU0J3dDNpSUdkMnhkZ213NWt1SFdwOU1ObDNMWU95VVdwM01GdXc0M2pRSUdkMnhkNmhsdHNKODVKb1VDNDdaMVNBNjNpNnMyc3dNNTlrL0VNZDVpVldKTk0zVi9LYmRXRms3Qnc1Z1YyN3B2b2s0YjVWdUxrQk9wbmhld25iV0l0em5CbUIzYnVtK2pPSFJ0SDNwakx2Tmtrd0tTQnc4S1pIZGk1Y1l4UkZjbzRHM2xST3YwbkY1ODJyTUFzMVhzb09Nd0w3Tnc0dW5BTHJNU3BpYWlNaStpUmU0VDliTEtONDlBQ096ZU9QcW91anlWdnlHWGViaGFyS0ZYR09TNHdnWjBiSjRxWVp5WE9TNlgvVU0wbEQ4ckRFczV4Z1lvZVh0dmRKZDBYMHM3cGxkemNhR0s1azl5VXovNnZYV3hqTlFWL2RSK3dHQlMxaUc0SjNiTVpIN0xPZWI5VUpTNUFTWTdQR0piWktmeDZDOTVKODZEYk9RRjRXd0RHZEZuekF0bDI5dEhNYUZzN3BidUx1SldoNnh4ODVpZ0NqdWEyZlBhek5xbVptYUtySTZMcW9XUVBET0w5Z3RiTm8vVVFyYXdHL2RISWFQVzBXZ3RRYW8xT05hVldrWk5Vemt6Z3lGMzZCMGtjVUxZMENqZm5zY2M2OWZVUWdGK1BCSUpnYzI1dURIRmVDZ1ZKTG5rd3NOZEhRR2RHR1JzUXdTMjFqRkF6aDVYNEFkbmFLKy9wbG5kM3lkczY1YTg2cEMvYXBVL2J4STlieFk5YXhBOWF4UGVieGZlYXhYZDEzdEdCS2M1TUJJNGNQZzU4aXIvV0NmZVZjT3ZUNlNNZG9ibldFRjBpY1I5dUo2L1BacUNiR3hnTlJyUUFCUXpaVUNsbURTdTd1NlYzVzhTWGE0V25xN2hIeXJrSFN6bVl4RzB1NU80czVHNHJZRGNWc0xmbU1iZmtNVGZsTWpmbU1qZmtNTmZuTU5kbEk2N1YrZEhNQkMzanpVV2Y0b3BNNXB3VSt2ZzQ4akRiWHQwUk9JTEZPZjJhM0x3WTlFM1hBeVdjdlU4ZUNVeVNnNG9OWHJtVVVIZDFTUys1aEx1TDJhdXptWFZwOUJsSmFIVTdsRFhIeDZGMS9DdWNGSHprbzRGWThpZ0hDV2tBT01LT2dMTmkxckRVVGk2MG9TOFk1L2gxUjBBSkZ1ZFFNWUhXcFY2VVRyOVVpNzdwQ3NRMU9SQU9LcmIwWWVYZmplSXZpcmtONmZSSjhlUVJEaElHZEVONnhNVG1NVVpON1V2RXJBTStGTFQ4MUF5cEV3U0xjK2pERThjNXFSL25zUiszU3MycytjTXFDRGNrZXRJR2xiL1hDVEJLUWxaRCszUkFjeHUyR2I4WXY0Y09FNS9hcnpzQ1NoQTVGMDJjbmtqL3BveUw2WlVIUlBPem5GdjI1STZvcjlVTDErVXdLMkpKMU9Mb1JQZHBlcjlEd2dTSW9IQU8ranNTaWpueW9qVG1aWmVRTTZKUVpsK1dnNUc2aGxJL2JKRTI1Yk1ueGxGejlYZWN0aE05eEFrZTV4YlpTSmhTd1J5K2xsSkZHQWpOQzlVekJvblQyaXMvWE1hdFRxVG13OXNaSTR2ZllXQ21odWwzYnR5QVpiSGs3UVhzcmk2NW16ZjVMaEpHUVJQVk54dkVIMll4aTIzZTJoSG50bWtqU0p5YkUwMmNHRTg5V01vNSt4WEM3S3NrZllJVzFTUC91b3cvUFpIU2MrcVV6OVF3dmt5L2MzcVNXMkFsejBxbWYxL0ZaNCtvZ3FscnVqeWVzVHBLZmJ0WnZENkhSVStRZ3JlRFNzN3ZHREJUU1pBNHQ4Uk9YcHhPLzZWV2dFSFExRnB1REVyRDNCSGxEOVg4ZWFrMGxJekcyL2tmQTJZcW1YN25JT3RFRTBjNXlLdXltSDgxQ2k3SzVKV3JidG5qNkpmdjEyL1hRWnMxZzNCNFlKMWVnc1M1RlU3eXBsem0vUmFoaVRIVE9VaVpYYnkyclZQYWxNZUMxcFBYUi95T0FUT1ZUTE56cUtKSFAxZnE5eTk5MFNhMmMyYk9XU1Z0ckk1V1AyZ1JyODVpRnFJWkt4WXVDQWdTNTA2T0p6Y1hzWkNRdWdVem5XUFZNU2dRdHpTS2wyYlFhRHQ2N0Z3d0VBVE9vU3NYcXhNb0tMbkN1K1UrVTcvMUloVlB6b2p5Y3Exd1lScU4zZzVmSlFrR2dzUzUweE9waDBxNXFCNTUwRlRuUm1WUDJwRHl4eHIrM0JRS3ZSMTJMaGlZZnVjaWtBZG5KRkdQbEhQV1BubklWT2VHSlUvaW9QeDBGWGQyOHZqVllMOER3RXc5UWVMY21pVHEwWExPWnJaejhHcHhBL0tUbGR5WjJMbmdJWGljZTZ3YzNSNXNybk13VWp2NzVTY3F1RFhZdWVCaDF1YzVjTzVKN0Z4UUVTUnpDS2puakxzMXpaMURESXVlK0FINWQzaHNEU3FDeExuVDlIbHJaSS9KZHdpUFNKNlVRZlJsNjFxWXQyTG5nb1FnY1c1MUF2WExFaTZzVys0VnpIU09rRDFadzhxTEx2NzgxUEhyYzc3dmpwa1dnc1M1aytPcHpVWGN0azZwaXpmemV3aEc4UlM3MVgvV0N4dlNHZnc5UkxBUUpNNmg3MXNMMkMvYXhUWlRkMFFYVlU4dHJiN2JMRjZWeGFCbHcrQWN2cEZwMmdrQzU5RFBGVTYwaDZ2cDk1V29uckZPWHR2YU1YNWZpWEh6SEU1MTAwdVFPSGUwZnYvY0d3RzRmdzVLdXRnKytVSDljWkhlNVY3WXVlbGxtcDBEOU55ejFJYnVFLzVybmZuM0NVdmFXT0dvK3FKTHVDaU5XWUx2RXc0R2dzUzVCVmJ5N0dUcW1XbytaMFFCUzh5TlZsYjdiN3QwUndGN0F0cE5rckJFNEZRM3JVeS9jOUQ5K3Jxdkh5U1FENWR4Q1FPeTZRdXEzYkluWTFoK3ljWEQ3QlV0aVFEbmNGVTNqUVNKYzhEeVdQTE9RamE4UitvVFRWN2ZLbXNlbUVsRTlraVBsSE5uSmRPTDRVMVJ0ak4ydmhuM3o4RDN3REFCWXZxZEE2Q3pJNG1sZHJSUitpZHRZaU9yU3FidUlReXZKV3Jvb3NuL090RGV1ZWNtVS9CZWh1aGU1d3dtek1QeUJaVGdjVzYrbGJ3MGcvNUhnMUJNS0d3QU5uV2xGVThscVg3VklUMVp5VjJkelp5ZVNCM25wR0R1TXQ4NGdDZzk1M2t4VXVDQm1maWZUV0pDL2UvS3hIbGk0TnV3d1VuUU9PZUdrZzZtRVU5Vjh2RUQ4b2pwOHdnOTJ6R0twNUhSNGdia3Q1ckZ4OHI1Vy9QWWk5T1kwNUI4NUpFT1lxRU5QU01BN2Y1bmRKNWYxODRJWm9SMndlTWNOTm1xT09ybmhlelhIVktucWF1L2ZBUG1KME9TVmtHcTlqNzV3eGJwTHk3aHNRcHVjeEhhdy9XSDJjeWxHY3lGYWN3NUtkU2FaR3AxSXRwNTg4UjRhbVVjZFh3Y0NWNGVxN1BDREtCNEJZN1JXYVp6dEFOeGxBN2EwMVBmMWhQdGhtbER1MkV1QVd6RVlodXh5RVlzdEtKblBTNndFcENoNThYczZ5U1p5TVRCYVdGUU9BZm9qUVhOZldVbTgzcURBSU5nNExaTWh4Zm1WTStnNEdsaXRCSzNtaklvdy9RQ3h0ejNXOFF0RGNMTHRjSnoxZnlURmR5dnl6Z28vdTR1OXU0dC9KTjg5c2Q1N0MxNTdNMjVpSnR5MFNiRDM1c2JjNW5yZ1J6bTJoenZIcjlYWnpFL3pHS3V5cVN2ektRM1p0S1haOUpRYVZ5YVRsK1NSbCtVUnE5UG95OUlvODVQcGM1Tm9kWW1VMmNsVVdja1VhY21VajlJb0ZicCs5R0N3V0RxSWp1eTBPdlp4SGlObmRzMzBDNVJjUHFTMEpTL3JlREFBMGJ4dm5WQUE4eUcybkZJUlB2ejE5Rm9BL1hjRVRWMVNISDJ5OUc5VWxpM3RMMEw2YWh2b0M1OTFDcDkyQ3A5MEFKMlN1KzFpSWZDdS9yKzVmOXBFdDlxRXYvZEtMN1pLUDZyVWR6U0tNTDU5czhHNGRVRzRlLzF3aXQxd2w5ckJjakVMN3FFUDdtRUYycjRQMWJ6ejFieHY2K0NVNEovdklML1RUbjNFSndZcGR6ZFJkd2RhTHR0OXBwc1prTTZ5dE0vU0VRV0xyYVIzcTBMZ2txK0lISXVHbDJsZzFIbXAvbG9vV3NucnltQkdtRDNFU0NmcUtIOTFFblpNeXFCaFo1K1Fldmh0UzVlYTljZkY5SENhSkFYb1J4czBLay9OT3BvaEl0QzFGQmF0VTRWcFZVU1NnV2hsQk5LR2FHVUVrcUpXeWwySzRXalNzR29raitxNUkwcTJTTks1ckNTUHFUQWlaRTBLRVB0NjBDbmh3eW5COVFrSDdXQ3RlTHoxZndEcGR5Tk9jeTZWQnBTSUxxNVlVSTd2MmFmRm9MRk9RQzBpMFJseW9aMCt0VTZBVnA1YWxKZFVJWEhnOUQwbjhZdmNESVlEK1VCWlAzRUVBQVZ5Z04waHNCa25GVFFTVElnb05PalNYL1dCUmdaM2kxREtuMjJtcit6a0lVeCt1UjRWQlJPNXJ6cFRYaEI1QndBSlVnMGNVb0Myb2d1dkZ2cU1YVk4vNndQYUN4Wjg0Q0lvR0EzcjlWU1dzYVFzcXRMZ2hQNDNtS1lvZE13ZDBFN3hFL01MWHhiZmlvSk91ZGdKbUdIbVFUOWozb2VCcGZBelNSQ0lYalYweWQ0aWtiVkhaMFNsSU13QVZxVGhIYUw5eWE4NmRJdXVKelRNLzk4OU4wcmRYOEpDMlVLMUZXbWZpVVJpa0hMSGloSlljRDlvRVY4cUpTN01JMyt4cTJFVTI5ZWNEbG5OQUY2dENGNVJRYjlXcjBBRlRSajlsZitvUmxnWGkydFFzVUMwOTRyTXBubHNSUWFadzN6Zkx0Z0NnZ3U1d3dpaVRsUmFJWEVQVVhzMWs2cFBRRFBKd25OZ1BJWUd0UGVwL3k1UnJncWEvd2hHVk9mN1lMUk9iMGhJTlZka0VvL1U4VW5EOGltNzJvZHNnRVQ0VjdCa3pRZ3YrUVMvaStMV2VhWWp0b3VHSjNUVHp0b2k2Tmp5ZXR5bVA4MGlaV2t5dUhaaEVrQjdUZ2dhSEg5OG5NMS9JWjArb2lKMnM2dkZ3SkhNRHBub0xmQzZnVHFubUx1cXc2cGtkYXdkV1lGVE1zNk9jM2FoM1p5T1RlRldtREZlYzVBUC9rV1c4bHpVdWpIS2ppWXcvYUpIbHpabVJXeU50YkthWEF5Lzd5UVBTbWVtZy9hVGRrSUc3ek82U01zTk1UaGRuSkRCdjE4alpBMHFQU0wrTXFKYWNHcmFNSDVsZ2J4Mm16RysrU01xUmxoZzljNUFKelRyeEl2aXlXaDRIMjVUa2dkVW9ZRGNHdGR5TWF3NUVrWVVINWZ5YTlOcGhmRTZOcE5RYW9MYXVjQVBkWEJmR0tGazd3MmgzbTFuczhZa29mTXZYVTloRVB4akRXejJ1ZHQwby96MkJWT2ZSdWhLZEF1MkowRGpJWkFUeFFtcjgybS8xYkhKdzhxZllMSDNHV3dJUnVzNnNrWVZwNnQ0dGVsMGd0dHhpTTBBcnlUMEF4d0R0Q2RteHRESE90RXo5dDh5U1hBVkI5bVhwTEphLzVETWVETWJXUzBUOXFrbitheng4VlJxS2tqc1hQQWVLcURVeEFHMlNzeUdEZ3Z3N3NsRjZYU2dYaHVmNGlGVy9MQTBQRk1GYjgyaGRhMzE4RE9HVUJiNk9aQnRqdktUcTVQb3g0dVpUOXJFNHRHMVNGOERlWFFBb2FMT2twN3IxbThKcHRkWXF6Q05GcmJyd3ZNWXNZNFo2QnJCeWZpWWh0eFpoSjFSeUh6ejNyQjJxdTRLQTNNd3pjRGZNL3dqSTJJbnVoZStkNWlibVU4TmM4UURqczNDYlNGZm12blFpdHhZang1UlNielNCbi9RWXNFb3dOTXdRZ1p6eTIrVDRqYVdJNyt4RkdZU1N3TzlFNUNNODg1d0RnTDBSRGdYbW9uejBxaWI4MWpuNjBXUG0wVDQvcVZja0p0NTdSaEVkMHhpelBmUVFhMFV5MnQvcWRKdkM0bjhOZUhaNlJ6Z09FYzBnNFNIbHAyZW00S2ZXTXU4NXN5RGtiYnJSMVM0b0JTU3FndHJEWWdlQ2pGSTZqb1doUzZySWN0M0U5MDg5ck9MdW0rWXZSVkdHcll3TTBrWnFwekV4am1SYUdseFVjNXlETVNxZi9MWkRZWHNrOVg4YTgxaUorMlNXSGRzck5mVGg5QzY2WktDYVdLVkdvcHRIeXJsVVByQzZHaGV3V3RYL0FNaUo1QjBRUFpjVVJDNndsZ0tnZkRORURxVURxMHZ1YkZGK2I3QWprWTRGUUVyNkkxTlRDNlNScGFaYVBxUzIrbVB1Q0RKdzBxMEc1bko5UG9CaWZzM0g2WlNIaEFORnJnRHVhdGlpUFBTcVkyWkREWDViSjNGSEFQbEhKUFZQRFAxL0N2MUFsYkdvUzNtOFFQVzhVdjJ0SGlQRGl6OS9SSVVEN2IrdVRZZmptaFgwNGFrRk1HMFdLK3pHRWxXeWQzV01rZlVZR0NVVVNoRzFIMGZTa20xQkpDaFJ4Y1JxaFFCbFFTYWhXcHVpZ1ZocllHR2lWbU9CTjZlRzFRMU55eXhxcWVLYnNXeENwamNHRC9iQkEyWk5DQi9jcC94anZueTRSOGVudk5zNks5bmxiRVVpZkhVekRKUFQrTnVqU0R2aXFMdmo2SHVUV1B1YTJBdmF1UXZhOFlHZm5yTXU3UmN2Q1MrMTBsOTB3VjkxdzEvM3cxLzJjWC82S0xmOG5Gdit6aVg2a1YvZ2JVSVY2dG4rUWYzeDNvVkdqcjF4dUVmelVJYnpRS2J6WUtieldKN3pTamhkWWZ0WXFmdDB0ZnRrdmJPNldJSHNuV0R4TWpHZEl6Sk9aZVhvUHNHTkQ4QjFrVzB2L0hiUktVZEl2dDJMbURaQ0xub2QwNjBBWW82RitpMFNVOXlIK0xiY1FSZHJRbkNOVElVUDhkNzBUcDhLUUV0UDNDNmtUcXRFUnFUUklGMlhGdE1uVk9DblZlQ3JVdUZlM1ZjRUVxZFdFcXRUNk51UWhJUjF5c2M4bjNCYkl2Y0drR2Mxa0djM2ttc3pHVGdhazMxQU0vekdaK2xNUGNrTXZjbk12OEpKKzVFODZIRWhiT0JFalBVTnBIOXNnbGJuVkExQUkzSzlKdklkWjJkY3UzRjdETFlCcGhOR1lndEp0Vnp2bWhDK2UxOENBeC9zUkFmeEVvRXlleEl1WWVHcEI5QVJpOGZJRlRZcUdOV0dRbmxqcUl3eDFRSGhETG5TVDB5cW1KMVBrcDlIWFp6RU9sM0w4YVJTaE1teGd0Y0xkTVEvM3E2SmNmS0dGUGpBdmtQZXV6MlRsZ1FpQmZzU0lOak0yTERwS0p2eklWMytQeEhoNmtad04wMlBOajBGMnJ5Mk9SZkpBSVllamYwU1hWMFNvWG1IUUhVeGtvWktIR09DT0o4dDdhQlBnMTZhRXp5NTM3Zmt5WU9sMTQvZE1aMXhGcTAzVXAxTU5sM0s0dXFZVlJBekczVUxTeGdsSGxoUnIwcUNwdzNYc0FmbzF6NkdEbmdvdDl5Z2Zhb2QyUGlTVldZbDBLRGJPYytINFphanZWN05zSTRlWEtTUlhtU1plbE0xRDdZdWRDRzhPL0NIU24valZaekw4YUE3WGF2SVpTWVRaOXRiNE1FVHNYOG9CMmU1QUVxeE9vQjBxNFBkMVNyNm5QNHpPaWdVWTNtTnlZTTc3aUdsS3MzMkVjT3RpNW1ZUmUyeDJsUDZkcVM2TlFUWnI4ekNDSUZrYjd0Rlg4U1I1ekF2UTRkZzZESkloQ2sxbVlWejVaeWNFYzAvVHJKaDJjOW1XN2RHY0JjMkxnN2huR3pzMGtqS291R2kwTjJWekU2by8xTnZuNUxkMjh0cjFUdXFlSVBUbHczL1JqNTJZWStuaTMxRTdlbE10ODBTNjFzS3BzNnV5MVY5REN1dVZmbG5DbkpJdzdCNkw3SGNNaGdwMmJZWUFCa1dpejc2c3ltYmVieENwUzVVMGRYdnNFTGFKSGZyQ1VnNWtLZGc2amc1eHp6NDBoTnFUUi82Z1RDa2NWMnRRckp2MmlGdFVyUDFUR25XbzRGNEdkdytqT3pZa2hMa2lsWDNJSldjTUtZZW8zRWxBZ1J2ZktENWR4cHlWaTV6QUd1blB3ODl3VTZybHFQblZRSGpWMWM3NUo1NUwwWmYzWU9jeUVjMnVUcVdlcStDVDBiRFJUeDFaaGZHdzFuTVAxSEdiQ2c3T1RxZDlYOG9uOThyRFp6a1gyeUwrQ09RU01yZGc1RE1Md0lJWlltMEk5WGNVbm1wM25ZTjY2cDF0K0FGOHJ3VXd5N2h6VWMzK281bFBNcnVkNmVXMVhsM3hmTWZjRDdCekdpKzRjekZ2UFQ2UC83Qkl5eko2M2RuSGF0azVwYzFFZ1Z4eGk1MllZdW5Oelk0aUwwK2xYNm9TOFVjWGNYWUxhV2UyLzdkTHRoZXhLL0gwcnhndHlqcGh2SlRkbU1XODBpZVdreWZlcE56UGFSNjNpcmZuTWNkRGp5TG05RHVEUXdjN05NSFRuRnRuSmEzT1pqMXZGQmthVlRMMmZxWTdXM200U3I4dGxsdVA3NXpBSUVBNDgwRGRZaHVGdlo1ZlV3MnRtS3VjWnF5TFYxeHVFSzdPWXlXZUMrUjNEb1lPZG0wbm96czJKSms1T0lCOHFZK01IWk5MVVlnNzBMWEdyZjNFSkY2Y3hTd08zT3hOMmJpYWhTN0RZUmw2WUNwTld2dEN0S0tZT3JKSytJOWd6VmZ3NXlmUkNZL3NJN0Z4SW8xZHlJQUZVOTV2eTJFOWF4V2JXNVAyVWFXVXNjVkQ1VFJtL09vR2FQejZPK3gvR29ZT2RteGtZQmtTZ2ZURE9UYUdmcnVKZ1lEWDNVUm1RTUlkRVQxU3Z2TG1ZQTYzbkdNTEIrL29keWFHRG5RdGVvTDhOb084aHcrbVBHRDNPU2QxUndQNjNYV3lnTmNIVWdWWDFqTFZ6MnBjZDBpMzU3T1NENTdCem9ZVmhteUZjQlBwbG1RTTlEK2pWZWlGdkJOMnFhZTVLQ0RDNG1sTGZiaGJoTFE2ejZXOGFDT0dBb0hOdTRzekdHRVFUODZLSnhWWmlaVHgxVFRZRFU0ZUVBYmxQTUg5bEsweUJzMGVVbDF6QytXbjBISmhBaElwemhtMlJ2cHZUekFvaTlzTDNQMDM4RHZpb0JpeXdvdjNMVG9vbkwwcWpmMTdFUWljbERzamR2Q2Ficnh4NnFLdTFWMzZrWEw5YkUvb0NuUFB0R2hNSkt1Zm1XZ25JNm92c3hCSTdPYXV3VGJMVXJ1TWdEM2VRVURZZDZTQ1BpaVdYeFpMTDQ4aGo0OGdUNHFrVDQ5RitlR3VTcUhOVHFFdlM2UjlsTS9jVXN5KzRlS2kwQ3R6S0lOcW14TnNwNWtZTG8zM1dKdjIwZ0QwdVR0OThMaFNjZzN4K3BJTTRKWkc2SUkyK0xKTytRdWZ5V2NIR0RNUVZtY3lWT3NZT2h6QlFYbWRzY3BqSGJNcG5iaTlrN3lwaWYxSEMvYXFVZTd5Q2Y3b0s3Zks1cFVINHFGVU03NUV5aDVWR1ZpTUR0dU1oZUZ4R3FIK3ZFeTdQWUE1M0dLT05md2VaUnJBNHAyL0Zla29pV3JiNVJDWDNjaDF2N0lRS3JUQUxlRlVIYmV4YWp6WjJCWlBlYUJUKzNTUzgweXkrM3lwKzNDcCszaVpDR3R2WkpVWDB5TFplT1dGQXlSaFdpa1lWRjRXZU96QWtlVGdWYVJHNFFGZm1CcFJIeXZqVEUrbkRBbmMxMkNBb25OUExPS2hkTGt5ajRmemUxUzFCTVZ2c1JoU09LZ1V6bjBLM1VvUlFpOTNlRGF6TENiV0NSTHRYMTR6dlh0M01hcUJYRjYvQi9HQklSRnUyYzZwSG1aS0hoa0wyaFBmOXVsUGFsTThlSFJ2SUhUWU5nc1U1Zlowd3pOTC8zU1JDa29jNWxLVHZYUStJc3d2alE4RWt3QUQ2MndEU21LWURsazJGYUQ1Qkt4NDRKVjZ0Rnk3Sm9OR3orUU1xSEJCVXprR0pBK1ZMQ3h1QVdSbU8vVWN2V3JzdlFSMEp4YlF4NXZoM2tMa0VsWE0vekdMZWF4SHJhRlUyOVFvN2pnTUVETi9scEFJbDV0Vlp6TkdCdTMvSmw2Qnk3cW9zQnNwcUtISE0zWU1EeC80Q1dubEUwcXg5S01tdFRxQVdRRjlnNTNBRU5GZ1ZrcHo2WnFOd1ZSYTlkT0k1SklCZkI1a0xkaTZVbzVOREt3dTlPMy9wdllDZHd4SEFJR1V0WTBoNW9VYTRKSjA1UEhDN3BPOE5kaTQwUTFEUlhTUXdZN3N4bHpuV1NhTEg4QnNEcTEvWEJBTHNYQWlHb25tYUdHMTdsM1IvQ1hkcUlqVXZadnpaYUg3OUVpQ3djNkVXaWdkdEdoelZJLysyZ2o4dmxkWWZZYWc3NTljcGdRTTdGMUtoalkzMThKNjRmdm01YW41REJzeFY5VnRJRFB3NkpYQmc1MEluSk0zVHlXdU9maG5tRFZkazBnRjgwczJCd2M2RlNJamFXQXVyUnZkS3oxYnpHek9aWmJIajh3YnNISGJPOUlBQ3ppMTVLZ2gxVzZmMFpBVjNTVG85K1IwWHREemcxeDJCQmpzM3UwUFcwSVhmdENIbFAwM2lQY1hzdWxUcUNJZTN3YWZCTmdQczNLd01hRDlHOGNEOHRNU3Q3dXFTLytRU2JzcGxUa21nRnRxbUw3MU5nSjJiZlNHb3lMWml0eHJlSmIxYUw5eFR6RjJjVGg4WFI4NkhwcDRZVW4zYmY0b0pLdWV1em1JK2FFSDdXMmxUY24vczdBZzRQU1VOZlZ0UHlKNWVRYXVuMVp3UlpYZVhCRDM2UUFtM01aTmVGVStpOUFhTkRMYjV0ZnkwRUZUT1haUEZmTmdpTmpFbWI4TXgrMExUOTdPQjBYTlU4dlR3V2lPamxSQnE4cUM4dTF0NnUxbDRyb2JmWE1SZW1jbWNsa2dkNmREdk5aOVl4ZWpYOHROQ1VEbTNNWU41clY2QTA3UlAwTnl5QnhpV1pqVWlZa2huVUdkQVFQVHA5QXJnazZlTDk4QWtvSjNUV2xtdGlVVnB6RVdwNVNSYVpwRStKRHY3NWJCdTZkTTJjVXVqOEV3MWYyOHhlMDAydlRhRlBzNEpwZHY0OWQ1cEgwejlDQXJuQVAyeHBPZWtVTDh1NHo1b0ZhTjY1ZGgraEsxdk5tUHRSY1QweXRHOWNsUVBJcUpiMnRNdFFicmExU1h0NkpTMmRrcGZkVWovYlJjL2F4TS9haEhmYXhGaCt2bDZnL2hLSGY5OERmOVVKZmRRR1hkWEVYdHpIbnRsRm5OZUtnMnpoR1d4cEhmaEZzeE1qZlJtbU9mWDROTklzRGdYVGN5TEllQTRMczlrN2l4aUh5N2pIaTFIZ0lLekdQaVlCcURPcjBxNUIwdTUrMHZZWDVhd2tLN3VMbUx2S21SL1ZzRGVWc0QrSkorOUpZKzlNWWU5TnB1OUtwTzVMSU5abjBhdlRhWmg2RnlWUUVIWEhPNUFGZHRjdlJtOUJLRnFFd1NMY3pIRW5CaGlzWjA0Tm80OEpaRTZJNGs2TXhteEptazJBeC9UNEhRZ2tRS0hUazFFaS9naFhmMGdnVHBKWDlPL01vNkM3am5PU2E3UWwvc2Y1U0FQdDVPTGJHaFlnQmJ6Nm1Xa05DL0JONWo2RVR6T0dVQTdBbkRLaGhUR3AwWkVmd052cnRvbklKYUIzNzhEZTdWcWNCRmN6a0Y3b2JOV1AxLzk5cElKYWZSTU5pSFpCRE5GTWorQ0xjOU50aVBtd1BpMTJ3d2k2SnpEekhxd2M1aXBCanVIbVdxd2M1aXA1cUNkbzdCekdITXduSXVuWG1zUXZYcjVoSTl6c2FRbFpjd1N5L3YvUFFielhRSG5VaURQRWE4ZjJMa1ZEcmNsMllPZHc1Z0FqSlpKbmxYTzBTMzF2RmN2bjVoMGJxVjFBT25wNEN4V3ltSWwvVjhGZ3prWXdCendKNVlEN1ZZN0J0K3NwYjE2K2NTa2M2ZEZkVmlpUmkwMkJnRi81dmRhR016QllLTXNOdHBpcHkyUkkydXRuZS9XakhyMThvbEo1eTdhVXpkL1J6djZNMGgxOEdlK0w0VEJIQ1JnbTRPMVJMc1AyOUcyTWFyK2krcCtyMTQrTWVuY3JlRWx5NzUyellrYXRzUkpGanZqLzFvWXpNSGdZQ3h4NHB5SXdSVmYxOXdSV1JwUjFlSFZ5eWNtbmZ0dFpPN1oyOG9XUnZSYjRpV2tLaTdwTU44VmNBYk1pUk1YaGZlZXQ3WDBtWmk4dE9wbXIxNCtNZW5jTy9GNU40YVZIQlBXZ1pJYy9DVWFYckYybUlNR2hBTm5kSE5XN0c3OWNWalJSNG41cnBaMnIxNCtNZW1jczZEeXQ3YVNzM2JYelEvdjlRcUxaeEtZZzhjUUxvWmNzTHZuM04ydVp4d2x5U1ZWUThNalhyMThZdEs1dXRhT0Q5UExidzByV2JHdHpoSXhhSW1YMFdRQ3B6ck1RVUdpSzd0UWxZWDNINyt0OXJidzRpK3lLcHM3dWlSSjh1cmxFNVBPRVNTWlZsNzdKMnZ1SlR0S2w0UjN3NmlNWGdWZnE4TjhLMkFJZU9JVUxISEM0V0VkRzNlVy9OV2VtMU5WVDlQN3VEZ0hNZW1jcXFvZG5WMlJPYVdQeGhTdURhczlMS0lQWlVzbm1LZGZPc0htWWZiR3FPSDBLOEFXRzdWd1Q4KzZzSnFuYklYMi9QS2VubDdQZnBiTlR6b0hJUWhDUTJ2N2w1bGw5MFlVbkxhamVrRjRIN3B1Z2k2ZFFHR0lhenZNWG9BVjRBWVk0aFFYaHZldTJWNzVZRlRCOXV5eWxvNHVVZHpITjYxR2ZNTTVDSlpsS3hwYVBrMHB1aSt5Y08zdXVxWGgzWE1qaDFIbWhOb09RUEpCemdQL2NOb0xTWXhoMUpndUdFcFlxWGxSdzRlSGRhMExxMzB3c3ZETGpPS2E1alpJWGw2ZjloWCt6a0ZRRkZYWjJQcFZadm1qMFlVYmRwUWV2N054YmxndnVvQUNGU0lZRFcrRGg5cVFCUTJtREJwTWpRSFF4c3piM2IxeVI4UEduYVZQV2d1M1o1ZTdXdG9aaHZHYXRKL1loM01RSE1jMXRMUkg1NWE5YU0vYnRLZjA3TEM2NVdIdGg0WDNXdllNV3FMZDNuZUZJUnlxUFV3SUllZ1pod0VINWtRTXdtQzZmSGZiT2J0cmI5c0RrNFk4cU9HYTJ6c1BuT0dNMkxkekVEQWVkM1YzcDFmV2ZaeFo4WlNqNU9hdzRyVmJTNWQvN1pxN3RRWGRDZ0JIa0R5Rzd2SEVoQTdRNDlEdmtjUHp0N1VjdTlWMTNyYXlXOE9LbjNhVWZKWlprVlZWMzlQVHM4OHJJM3ZIZnAyRDBEU05KTW42MXZiNG9vcjNFd3VlaXM3N2FVVFpaVkVOWjF1N1RuRU1ybks2VDNBU0oraHIwREd6SFFyNkducDh0V053cmJWelkxVDk3UkdsVDhma2Y1aVVuMVJjMmRUZUNmVVkyT0wxNXR2aVFNNFpJY3Z5NE9CZ2RWTnJTblZ6V0dYNzU5VUQ3N3JjYjlZeFcrcjUxNEFHOUNod3pPeW5ub2NlLzNjZDgyN042QmZWL1h1cTJ0TnFtbDNOclVORFE0cWllRjA1dVBoMjUzRGdNRGV3Y3ppbU5zYkcvaCs5UDcrS2ZLTytSZ0FBQUFCSlJVNUVya0pnZ2c9PSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiI5MzEzMjdkZGM4OWI0MDZjYTgxZWVkNzA1OGVmMzZjNiIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOnRydWUsInVwIjp0cnVlLCJ1diI6dHJ1ZX0sIm1heE1zZ1NpemUiOjEyMDAsInBpblV2QXV0aFByb3RvY29scyI6WzFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjE2LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjEyOCwidHJhbnNwb3J0cyI6WyJ1c2IiLCJuZmMiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotMjU3fV0sImZpcm13YXJlVmVyc2lvbiI6NX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIzLTA5LTEzIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjUsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiU3dpc3NiaXQgaVNoaWVsZCBLZXkgRklETzIiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDIzMDkxMzAwMiIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTAxLTE2IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjUsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiU3dpc3NiaXQgaVNoaWVsZCBLZXkgRklETzIiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDIzMDkxMzAwMiIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTAxLTE2IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjV9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjQtMDEtMTYifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyIwMTk4NTYzYzllZTg4MWJkMTk5YjQxMWI3YjM4YjYxYmI1NjBhNjQxIl0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjAxOTg1NjNjOWVlODgxYmQxOTliNDExYjdiMzhiNjFiYjU2MGE2NDEiXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlNlY3VyaXR5IEtleSBORkMgYnkgWXViaWNvIC0gRW50ZXJwcmlzZSBFZGl0aW9uIn0sImRlc2NyaXB0aW9uIjoiU2VjdXJpdHkgS2V5IE5GQyBieSBZdWJpY28gLSBFbnRlcnByaXNlIEVkaXRpb24iLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI4NzA3LCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50IiwicmVtb3RlX2hhbmRsZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJREhqQ0NBZ2FnQXdJQkFnSUVHMEJUOXpBTkJna3Foa2lHOXcwQkFRc0ZBREF1TVN3d0tnWURWUVFERXlOWmRXSnBZMjhnVlRKR0lGSnZiM1FnUTBFZ1UyVnlhV0ZzSURRMU56SXdNRFl6TVRBZ0Z3MHhOREE0TURFd01EQXdNREJhR0E4eU1EVXdNRGt3TkRBd01EQXdNRm93TGpFc01Db0dBMVVFQXhNaldYVmlhV052SUZVeVJpQlNiMjkwSUVOQklGTmxjbWxoYkNBME5UY3lNREEyTXpFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUUMvandZdWhCVmxxYWlZV0VNc3JXRmlzZ0orUHRNOTFlU3JwSTRUSzdVNTNtd0NJYXdTREh5OHZVbWs1TjJLQWo5YWJ2VDlOUDVTTVMxaFFpM3VzeG9ZR29uWFFnZk82Wlh5VUE5YStLQWtxZEZuQm5seXVnU2VDT2VwOEVkWkZmc2FSRnRNamt3ejVHY3oyUHk0dklZdkNkTUhQdHdhejBiVnV6bmV1ZUlFejZUblFqRTYzUmR0Mnpid25lYndURzVaeWJlV1N3Ynp5K0JKMzRaSGNVaFBBWTg5eUpRWHVFMEl6TVpGY0VCYlBOUmJXRUNSS2dqcS8vcVQ5bm1ET0ZWbFNSQ3Qyd2lxUFN6bHV3bit2K3N1UUVCc1VqVEdNRWQyNXRLWFhUa05XMjF3SVdieGVTeVVvVFh3THZHUzZ4bHdRU2dOcGsycVhZd2Y4aVhnN1ZXWkFnTUJBQUdqUWpCQU1CMEdBMVVkRGdRV0JCUWdJdnowYk5HSmhqZ3BUb2tzeUtwUDl4djlvREFQQmdOVkhSTUVDREFHQVFIL0FnRUFNQTRHQTFVZER3RUIvd1FFQXdJQkJqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFqdmp1T01EU2ErSlhGQ0x5QktzeWNYdEJWWnNKNFVlM0xiYUVzUFk0TVlOL2hJUTVaTTVwN0VqZmNuTUc0Q3RZa05zZk5IYzBBaEJMZHE0NXJuVDg3cS82TzN2VUV0Tk1hZmJoVTZrdGhYN1krOVhGTjlOcG1ZeHIrZWtWWTV4T3hpOGg5SkRJZ29NUDRWQjF1UzBhdW5MMUlHcXJOb29MOW1tRm5MMmtMVlZlZTYvVlI2QzUrS1NUQ01DV3BwTXVKSVpJSTJ2OW80ZGtvWjhZN1FSalFsTGZZemQzcUd0S2J3N3hhRjFVc0cvNXhVYi9CdHdiMlgyZzRJbnBpQi95dC8zQ3BRWHBpV1gvSzRtQnZVS2lHbjA1WnNxZVkxZ3g0ZzB4TEJxY1U5cHNteVB6SytWc2d3MmplUlE1SmxLRHlxRTBoZWJmQzF0dkZ1MENDckpGY3c9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFmQ0FZQUFBQ0dWcytNQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUhZWUFBQjJHQVYyaUU0RUFBQWJOU1VSQlZGaEhwVmQ3VE5WMUZELzNkNTl3ZVFTSWdTOUFRQVhjRkxBUVppOWZwZVZ6MXRZL1dUWnI1V3hwYzdXNWtuTGE1akkzWjg1c3JTMm5NMnNqdFd3WlM3SVVINEg0eENuRVF4NERBWkY3NFY3dXM4ODV2OS9sSW5CdlZKL0I0UHY5bnUvNW51LzVudk01NTZmekEvUXYwSGIvSXJYM1ZGS1BvNDVjbm00aW5VSVdZd0xGUm1aUVV1d2pGRy9OMWlSSGgxRVowTlJWUnVkcXQxQmQrMm5TS3lTL09oeXMwK2xrM2UvM2tROXF2RDRaVXRhNFZWU1V1WTBlaXB5aVRoQWZvY29PUlZnRHV1dzNxS1JpQWQzcmJjRXRqVGpZSW9mNldhSHNDbXpWUFdDTXgrY2doOHRMcVdNS2FNV3NVakxxbzJSdEpJUTBvT3ptZXJwUXU0ZXNaZ3NPTmtHeEg3ZDBrZHZUVDE3czRPTVU3Vkk4WmhqZ0dhTStBcTlpRU51OFBpZjF1ZHowN013dktXZjhHbFZvQ0VZMDRQQzVXZFRhWFlGYlI4dk52TDUrM0tnZmI1eE5NeWE5UmFtSml5bmFNbEdUVnRGbHI2YmE5dStwcW5FWDR1TXVSUmdqU1lFaHJON3V0RkZlNmxxYWw3TmZrdzVpbUFHSHluUHBiazhWbVkweHN0bnB0bEZDVkNZdHpUdUJOODNRcE1MalR0ZXZkUHpTVW5KN2U4bWtqeFozOWZYYktEZmxkWnFidlUrVFVnR25CVkY2ZlEyaVBIZzRXMTZVV1V3dnpiazE2c01aRStQbjBwdno3SlNldUF5ZXM4bGNwQ21hS3VvL3ArcVdyMlVjd0lBSFdydlAwWUV6aFhBdExBYnNzSGhwN2lHYW12eWlqUDhyeXFyWFVXWDlYb293eHlBdWZOQnJwNDNQT0JGWFpsa2Y4TURSaXFjcHlvd0F3cHV6MngrZld2ei9EdGRlOXNtc3p5Z3RjUjZDMXdiZHpCbDZPbHE1V05ZWTRvR2F0aEpNcmtURXgwakFSU0hBVnMrNXJZa1FOWGIrUWdmUExzUTZnWHlJbnNyZVFmbXBtN1JWRllmTDg2bjFmaVVPa1l2U2hrVVB4dmJ1a3pveTZLMWloTTFobzNYelc2RXZTZlhBK2RwaVdHYVdkK2RvWHpMem1Hd0tZRkxDQXNSQWxQQkFoTWxDRlhVN3RCVVZQcjhIZ1ZjSkhXcStGMDBwbHIrRE1UZHJQNHp2eFkxMWtOTWh4VCtTZVRHZytkNFY1TFFKaXR5VUdKTkI4VkZac2pnWUJaTS9JSS9YQ1RrajBxeURPcEYyQVZRMTdDSWpVcC9EblQxVWtMNUY1Z2RqK3NTMXdnMWdFM2dpZ202MGZDWHpTblBYYnlBUGJJWHYrSURwRTE2VGhhSElTOXNreWhsbU1FNUYzY2ZxQUtocTJDMEU1UEgxZ1lhWGFMUERrWkcwSERKT25LV0hwNTFJMHo1U091eDhlMVdBdVp6ZEhRclRrcDhUbWpYb0krbGEwd0dac3p1YnFiTzNpZlE2QS9XN3ZWU1lzVjNtUjBKS3drS2M0V0hpQmttUjhJM0NDZ0k4N29PTDRxelQ1UCtSVUpCZWpFT2dBUEs4aFlQemF0TStlSVRwMklPOXlUUW1lcm9tUFJ4eDFxeEFjc2lsZS91YlNlRWJjV1FHWUVDZ2hjTFkySHlLam9nakgyNWhNcGpwVXYxT3VnbGk0ZWgyZVJ3ME8zMmJKamt5dUNnTnpnMHZ6bFlNU2lTczB1b280TUc3aE1PakNFYVgxeUZFMG5TdmpCenVUbkVwSzg2WjhJb3FGQUl1Ync4a2c5QXJFYVJFV1NaSStqSDRYYnA2ZzlFOUVuSlQzb2FSekROK01VSkJRREhuNTZhOG9VbUVCdXNPeEJzL041K3RKRWJQa0FGRGo4VUd2T3MvSVd2Y1NnbEdCaHZTNy9GVFlmcFdHWWREWThmUEF4V1NBMzVzVEM0cDQrTG00QWFxSW9QZVF0ZnVmSzZKaDBaaHhsYnNVWE9TbVhOaWZENVpUQWt5RG9mYmJjY2x4bkE4V05BcXhDYlJOeWtoWHhRcGFEdzY3ZlhVWWJzaUcwS2h0djJvZUl2aDhyaFFNWU9jRUFxWEcvZUkrem5nT2M1eXhyOHE4MklBTTFjL0ZMRk9wbHF1NWVGUVhyTVp6R2NWQ2pZYkxXRzVJNEJUMWV1UnJsYnh0Tk90TWl0RERFaExYSUl5bkFBdnVPRVdFM1gzTmRBZnQ5NFZnYUc0MlhJUXQwWlg2UGVDRS9xUUZlOXJLNkh4N1lVNTBLdkg3Zlc0ZlMrcTdLS0JKeHNnZ0JYNXBTQUdoMWpJclZoNXpRNnczUmZhYWhCWG0vYUNiQ1pUakNVRlVUeVdacVc5cDYyTWpKUFhWcU9yUGdNTzROdjc0R2tmK293ZnROVkJEUW5qRkpxSFN3MTdwWHZoV1c1S1pxZS9RNDlOL1VTVENBVldvUVhGSUhCSFhYZTNGUHJVRHN1R0RtdEYvaEhLVEhwZWt4aGlBT1BJK1NKcTZTNkhGNEk5WVd6a0JKVG80NmlVTXpXcDhQaXIvUmlkdUx4S1lzU2tzVjh2TGxPUXZoR1gyWWxSME9CaEJqQyt1L2dFY3ZZMEFwSzdZazQxTnhqUFNRbldGSFRGNjZVcmpnZXZCOEN1NWErbDJ2WVNSUHR1VkRvNzNoaGRNU0huVVg3dFRqc1ZaR3hBbC9XcHRpT0lFUTFnbkwyOW1YNi90UjF0bWxrWWo4VzRYK0NTaldjVURHWTFOcFMvQzdoU0txaU1MTS9sMlFtU1daNzNEZHorZ2lvOEJDRU5ZUFE0NnFua3p3WFVicXZCa3hqVVFzV2ZaRmdidW8zckFmK3dON2pPTzkwK3lueDRQaTNMKzBuWUwxU2NoRFVnQVA0Z1BWLzdJZDFxKzFIU2htdUdrSXFXUlBneXhNRnFQOEhmalRualh3WTViUWZiSmN0Nk9JektnTUhvdEYvSGUxZWdzYXhIU3FHNndmZG1RNXg4TnlURkZxQmNwMmlTb3dIUjN5azUrMzZoRjd2WEFBQUFBRWxGVGtTdVFtQ0MifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMy0wMi0wMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjg3MDcsInVybCI6Imh0dHBzOi8vd3d3Lnl1Ymljby5jb20vIiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJTZWN1cml0eSBLZXkgTkZDIGJ5IFl1YmljbyAtIEVudGVycHJpc2UgRWRpdGlvbiIsImNlcnRpZmljYXRlTnVtYmVyIjoiVTJGMTAwMDIwMjMwMjAyMDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4zIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIzLTAyLTAyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyODcwN31dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMy0wMi0wOCJ9LHsiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjA0NmE3ZTIzMmMwMzE4OWRiYzJiOWI2YTc2NTcwMmI1MjY2NWJlMjEiLCJjMTBiYzRjNmY2MTRiNjMzNzFkOTI5NTk2ZWRlZGRlM2U0NTg0MDRkIiwiN2E4ZmUzN2E0MmJiZjJhNWIzZTY1NzRkNmYwNGJkYmM1NWU1OTA0NyIsIjc2ZTQ3YjQ3ZTMyODE0YWFhNmE4N2MyODBjZmNiZDUyNzg4MWE0MDQiLCI2Y2Q5OWQ4YjBhYmZhNmE0Mzc4MTM4YTE0NzVmN2U0NmRmMjE3YTI1Il0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjA0NmE3ZTIzMmMwMzE4OWRiYzJiOWI2YTc2NTcwMmI1MjY2NWJlMjEiLCJjMTBiYzRjNmY2MTRiNjMzNzFkOTI5NTk2ZWRlZGRlM2U0NTg0MDRkIiwiN2E4ZmUzN2E0MmJiZjJhNWIzZTY1NzRkNmYwNGJkYmM1NWU1OTA0NyIsIjc2ZTQ3YjQ3ZTMyODE0YWFhNmE4N2MyODBjZmNiZDUyNzg4MWE0MDQiLCI2Y2Q5OWQ4YjBhYmZhNmE0Mzc4MTM4YTE0NzVmN2U0NmRmMjE3YTI1Il0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJGZWl0aWFuIGVQYXNzIEZJRE8gU2VjdXJpdHkgS2V5In0sImRlc2NyaXB0aW9uIjoiRmVpdGlhbiBlUGFzcyBGSURPIFNlY3VyaXR5IEtleSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50IiwicmVtb3RlX2hhbmRsZSJdLCJpc0tleVJlc3RyaWN0ZWQiOnRydWUsImlzRnJlc2hVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZWQiOnRydWUsIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQmZqQ0NBU1dnQXdJQkFnSUJBVEFLQmdncWhrak9QUVFEQWpBWE1SVXdFd1lEVlFRRERBeEdWQ0JHU1VSUElEQXlNREF3SUJjTk1UWXdOVEF4TURBd01EQXdXaGdQTWpBMU1EQTFNREV3TURBd01EQmFNQmN4RlRBVEJnTlZCQU1NREVaVUlFWkpSRThnTURJd01EQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJOQm1yUnFWT3h6dFRKVk4xOXZ0ZHFjTDd0S1Flb2wybm5NMi95WWd2a3NabnI1MFNLYlZnSUVrekhRVk91ODBMVkVFM2xWaGVPMUhqZ2d4QWxUNm80V2pZREJlTUIwR0ExVWREZ1FXQkJSSkZXUXQxYnZHM2pNNlhnbVYvSWNqTnRPL0N6QWZCZ05WSFNNRUdEQVdnQlJKRldRdDFidkczak02WGdtVi9JY2pOdE8vQ3pBTUJnTlZIUk1FQlRBREFRSC9NQTRHQTFVZER3RUIvd1FFQXdJQkJqQUtCZ2dxaGtqT1BRUURBZ05IQURCRUFpQXdmUHFnSVdJVUIrUUJCYVZHc2RIeTBzNVJNeGxrenBTWC96U3lUWm1VcFFJZ0Iyd0o2blpSTThvWC9uQTQzUmg2U0pvdk0yWHdDQ0gvLytMaXJCQWJCME09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUZBQUFBQVVDQU1BQUFBdEJrcmxBQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQkhacFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR3L2VIQmhZMnRsZENCaVpXZHBiajBpNzd1L0lpQnBaRDBpVnpWTk1FMXdRMlZvYVVoNmNtVlRlazVVWTNwcll6bGtJajgrSUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWtGa2IySmxJRmhOVUNCRGIzSmxJRFV1Tmkxak1ERTBJRGM1TGpFMU5qYzVOeXdnTWpBeE5DOHdPQzh5TUMwd09UbzFNem93TWlBZ0lDQWdJQ0FnSWo0Z1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNGdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlnZUcxc2JuTTZlRzF3UFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIaHRiRzV6T25Cb2IzUnZjMmh2Y0QwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOXdhRzkwYjNOb2IzQXZNUzR3THlJZ2VHMXNibk02ZUcxd1RVMDlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl0YlM4aUlIaHRiRzV6T25OMFVtVm1QU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2YzFSNWNHVXZVbVZ6YjNWeVkyVlNaV1lqSWlCNGJYQTZRM0psWVhSdmNsUnZiMnc5SWtGa2IySmxJRkJvYjNSdmMyaHZjQ0JEUXlBeU1ERTBJQ2hOWVdOcGJuUnZjMmdwSWlCNGJYQTZRM0psWVhSbFJHRjBaVDBpTWpBeE5pMHhNaTB6TUZReE5Eb3pNem93T0Nzd09Eb3dNQ0lnZUcxd09rMXZaR2xtZVVSaGRHVTlJakl3TVRZdE1USXRNekJVTURjNk16RTZOVGtyTURnNk1EQWlJSGh0Y0RwTlpYUmhaR0YwWVVSaGRHVTlJakl3TVRZdE1USXRNekJVTURjNk16RTZOVGtyTURnNk1EQWlJR1JqT21admNtMWhkRDBpYVcxaFoyVXZjRzVuSWlCd2FHOTBiM05vYjNBNlNHbHpkRzl5ZVQwaU1qQXhOaTB4TWkwek1GUXhOVG96TURveU55c3dPRG93TUNZamVEazc1cGFINUx1MklPYWNxdWFnaCttaW1DMHhJT1czc3VhSmsrVzhnQ1lqZUVFN0lpQjRiWEJOVFRwSmJuTjBZVzVqWlVsRVBTSjRiWEF1YVdsa09qSkZOekZDUmtaRFF6WTNSakV4UlRZNU56aEVRVGxEUWtJMk5EWXpSamt3SWlCNGJYQk5UVHBFYjJOMWJXVnVkRWxFUFNKNGJYQXVaR2xrT2pKRk56RkNSa1pFUXpZM1JqRXhSVFk1TnpoRVFUbERRa0kyTkRZelJqa3dJajRnUEhodGNFMU5Pa1JsY21sMlpXUkdjbTl0SUhOMFVtVm1PbWx1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2TWtVM01VSkdSa0ZETmpkR01URkZOamszT0VSQk9VTkNRalkwTmpOR09UQWlJSE4wVW1WbU9tUnZZM1Z0Wlc1MFNVUTlJbmh0Y0M1a2FXUTZNa1UzTVVKR1JrSkROamRHTVRGRk5qazNPRVJCT1VOQ1FqWTBOak5HT1RBaUx6NGdQQzl5WkdZNlJHVnpZM0pwY0hScGIyNCtJRHd2Y21SbU9sSkVSajRnUEM5NE9uaHRjRzFsZEdFK0lEdy9lSEJoWTJ0bGRDQmxibVE5SW5JaVB6NDc3SlhGQUFBQVlGQk1WRVgvLy84RVZxSVhaYXZHMk9vcWNMRzJ6T09rd3QwQlNKdHFsY1hWNHUrYXV0bFdoYnprN1BVQU1ZOUhjcktqdE5icThmZUFsOGFCb3N6ejl2cGRqc0dHcXRGM244dVRzTlNacGM2SnNOVDUrdjB4WUtudThQZmY1L0w0OGZnL2ZyaWN6SmdZQUFBREFFbEVRVlI0MmtSVUNaYkRJQWpGWFpPWTFUYXROYzM5Ynprc1NZYzNyNE1FNGZNQkFhRDZ6bDh5LzlUT2dldDhkNWpmTjc4YndNL2REQ1JwUjUyMXpYZm9qSEowNUlJeWhCQVVTVkFPTmRHekJZdDJmN0tGcmZrSmFBa0hoOUZaaGNEWEhSa1RLbzlNTGloR2FhdkltblYzcXlFWDBFcHJnei80RHdVRDdrQ0hSbmQ4UUZONDNHbzRVVm1ERGd6YTR3MjdvaXpkQTIrY0srdXVVcGpqbzIreHdjLzQyVzUweDVMR1llREJzUjBIVkl4NXg4aUY2MENibGJURUVrRnIyN2JOREJVVlNxMU9LVlBiRTYyYjNFSDhGcUJnNU9PT0V1YzJ0OFpKaXFNT3VHcCtjS2pnN3dWR2Nlb3pxTjRweGdWUFFrakZZZ2JWSktEVWhEQ2pZcmF3UDVxNEVUZ0M5ZklNUkh0aXRwUWNDdkpPRUxjYk1zUWduY2lSa2xqcHlRanZHNDRqcUJVRVRGaUJpMVBFSXlla096c1crVHk1Y0xIb3M1UitkTVMxTHRTU3hmM2dRSGN6UjJDSTRnTU5wVzRJUkExUU1hNnRKNCtDNnVIdUdFOG1OREl5RnFnL09QL01NVXVlUzZJcThTOTBkQWVCSlNFeS9xS2tLK0JOd3o4Y1lZNGpiNUo2dTRpV0NJMkIxWjU2TFc1a0VjNGhrZE1wc3ZVQzU1ODVTWDBRdWJjZ05xeWZnREZFY1R0KzQwLzBTNU54MHdhQ3czT0trY09iQTVJbjBBWXAwMXBqancybjYyNlVEanRId2EyOGlIdVRLcXRydityZVc0MU5aNmlHbHI3dXVMSkNma0Z0Y3RjRzA0c2dtMWVOUytaYURucGFURXJHb3lYNUpLMmlNejh4czBuT3dXR2NQRE40OXFhQ2Q0YnpKb3pEWm0vYUJLK0Vvekx3K1hoTkJpWXdIZjBzaU91MVhQa0cvekt3dnFZS2NmU3dERWNIL29VZTA3ZXMvV1E4ckl5ZzJET1hqOHRqa1pkdURCL2I4aHpEbGxNTU9DUzVCRW5kNTM0Zjh0aTNVWmM0a01zM3hMeWFmTVNzSmhkRzhYUHFqTms1dEFnTzI1ZmVLQ2huVmREai9KMEZNa09zVS94TUJ2MHdGaFllRUdmVkgxM2Z1RFUweURGTGE0ZmM3Um5XSEJmdVRGVjJ0RW1Od2FkYzdhYzNVWTJqZkJsN0hUMzZmZTM0aVFPNW1OQ0ZGQlcwN0tqUGdxaE9MVTAxdlo4UHVlWjJKQ2xGWk44amtVczY5dWthOWVQcDYrRWZMNEFGNStOeXdTYmlySHRjQjhNbC9na3dBRWprSzY0S2pIUGVBQUFBQUVsRlRrU3VRbUNDIn0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMTgtMTEtMDEiLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6ImVQYXNzIEZJRE8gU2VjdXJpdHkgS2V5IiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVMkYxMDAwMjAxODAyMjgwMDciLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMC4xIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjEuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAxOC0xMS0wMSJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMTgtMTEtMDEifSx7ImFhZ3VpZCI6ImY4ZDVjNGU5LWU1MzktNGMwNi04NjYyLWVjMmE0MTU1YTU1NSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiZjhkNWM0ZTktZTUzOS00YzA2LTg2NjItZWMyYTQxNTVhNTU1IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlN0YXJTaWduIEtleSBGb2IifSwiZGVzY3JpcHRpb24iOiJTdGFyU2lnbiBLZXkgRm9iIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwiLCJiYURlc2MiOnsic2VsZkF0dGVzdGVkRlJSIjowLjAsInNlbGZBdHRlc3RlZEZBUiI6MkUtMDYsImlBUEFSVGhyZXNob2xkIjowLjAsIm1heFRlbXBsYXRlcyI6MjAsIm1heFJldHJpZXMiOjUwLCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJzb2Z0d2FyZSJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiLCJibHVldG9vdGgiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUJ0akNDQVZ1Z0F3SUJBZ0lCQVRBS0JnZ3Foa2pPUFFRREFqQktNUXN3Q1FZRFZRUUdFd0pFUlRFaE1COEdBMVVFQ2d3WVJ5dEVJRTF2WW1sc1pTQlRaV04xY21sMGVTQkhiV0pJTVJnd0ZnWURWUVFEREE5R1NVUlBJRkp2YjNRZ1EwRWdNREV3SGhjTk1qQXhNVEV5TURBd01EQXdXaGNOTkRBeE1URXlNREF3TURBd1dqQktNUXN3Q1FZRFZRUUdFd0pFUlRFaE1COEdBMVVFQ2d3WVJ5dEVJRTF2WW1sc1pTQlRaV04xY21sMGVTQkhiV0pJTVJnd0ZnWURWUVFEREE5R1NVUlBJRkp2YjNRZ1EwRWdNREV3V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVF3NmN5K3puTXlRNnB0ZDRKanF2bWE0ZThSZStacHBiOTBHcUt2c1JCbkY4V21NNXlaV0lPS2pRZ2ovOCszajlhdlcrU3lBYS8xTWF5d1FENkIwZzlhb3pJd01EQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01CMEdBMVVkRGdRV0JCU3NlcFd1dXhtRDBvOGoxWTI3OGJMVEdDWk52akFLQmdncWhrak9QUVFEQWdOSkFEQkdBaUVBdTMzU3AwRTdCRWRIb3pFR0FDbE5zYTB5UEI2c0VEb1E3VzRraXkwRFoxNENJUUNKTERUSkRBbld4bzMxenp2cld1SU50QnF5MDQ0K0dnRlA2K3dscUc2Nk53PT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBRkFBQUFCUUNBSUFBQUFCYzJYNkFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFBQjNSSlRVVUg0d0lVREMwRm9PVUhJQUFBQ2NkSlJFRlVlTnJ0bTJ0UVZOY2R3UC8vYys4K1dKYUNQQlkxQ2dzQ29wRE1hRDc0QU1Va2ltT25XbTN5SVoxcHE5aXBvN1pXbmFaTk0wMXNtN2JVcUtoa0xOWkhmTXkwSDRxdFZ1MVVNeU0wMGM0b2RzeE13VkNOR2xPRndRQnJXSjU3WCtmZkQrZnVnd1ZXTnNHbU5QY01IOWJMdVdmUDcvLytuNE5JUlBCRkdneStZTU1DdG9BdFlBdllBcmFBTFdBTDJBSzJnQzFnQzlnQ3RvQXRZQXVZQU1icUJJaUlIdE54a2xpV1FoOWlmZ3ZHK0xYNEZTSUNRQ0FRNk96b2FHdDcwTkhlM3RmZmp3Q0FHQ0VXSFB3QkRNUElMOGlmTldzV2hxY0JBQ2lxZXZyVUtZWU1CajhQdmh0ZVlmRG5JWE1CaUhqU2w1SW1aazd5WkhvOEhvOXNrOFdlRVRFR3NCeGJlSWg0NjlhdC9UVTE5UmZxZW5wNllNUXRSQTlWMDFaWFZNeWVQVHRLZ3FxaXZQU0RsK3l5L05rVml3Q0VLTlNTbHBiMmxSWEx2N051M2FSSmsrSTI2WkRHMzd0MmJmVTN2dm5jb21kTy9LRzJ0NmRIWW93aEN2a1JJdUNJQTBZUXNuak1JcWFKcHpHV0duRjlSQXIra3lFKzlQa083UDl0NmJ6NTM5dTQ4Y1BiZDJCa1QyVFJua0NFQUp6emZmdjJyVnp4MWI5ZnV1UjBPQngyT3lLYVRraUVpQ3kycW9saW1CWmgwRmtBeEhZUkFPSnhieFM3RlQ5Qk9ib1NFb0RvN1hQbm5uM20yWk1uVCtJSXppeEhpVitNaXRWci9sWmY3M0E0SWw4YkdCalFORTJTWlZtUzRGSEJURkZWWGRlRzkwSUt5MWRWVmZnVWNaRklLRURYZGNNd25FNm53K0VBSXNZWUFNZ1MyN3A1eTlXR3E5dmYyUDRJSHlZaVZWVXJ2clg2MHNXTFRxZVRpQUJSMWJSRWx5dG4yclNTK2ZQbnpKMlRsWk9UNUhhYkhqU3ltb2tvd1pVUU96cjBCd2JldVhneEtTa0pSeHNaUWhJalFBUWl2OTkvNTlidHk1Y3ZYN2x5NWFPN2R6Vk5zMGtTWTh5T2VQem9VUVNvM1A3cmFFT2o0T0NjRTlHMjE3YmxabVhuZVhPbVpYdnp2RGxUSmszKzdvYU5MUzB0dXE3VFdJenU3dTZzS1ZQRjRoTXpQRjFkWFdPeXJLWnBkMjdkL3RyS1ZWbVRuOGp6NW9pZm5LbFp4NDhlSXlJZU1STWlYenQ3K293bkxWM1FUc3Yyemlnb1BIUDZkSlJFeGhqNGswL0dCRGkwdDBNSERtWlBtUnBDbURyNWlldE4xeU5uaHZOd1lHQmdVZG1paDUyZDRva3N5NmZQbmlrb0xCU0dqV05VSlBUMDlCVFBMTEpKRWlMMjl2WGQrT0JtY2tyS1o2dzZ4TzQ0a1VnaEY5OTlkKzNxTmNKcmlLaWdzUERNWDg3S3dVUVlqdEovcWozUjF0b3FhQlZWUFhUa1NFRmhvWGdOeDdvMkVrdU95Y0toUlZqdzA4S3lzcDlzMjlZL01DQmswZHpjZk8zYXRaQjBUR0JGVVNvcksyMDJtM2o2L0FzdmxDNG9IYjhGYzhYYWlybno1akZFa1dWLzl0cTI2RHhjVjFmWDNkTnQycmFpZm4velpzNzVPS1VWTHJwMTY5YWUvbjVFbENXcHFhbXB1Ymw1RVBBN2RmVU91d01RRlUxYnZuSkZUbTZPeUdtUFk0UU0rVEgxRW1MNUJXVUw4L1B6UkRDenkzTGRoUXNBZ0lBbVZVTkRnM0FCU1pJMnJOL3cvOUVKYnQ2eVJkZDFSSlJrdWVIS0ZTRmpCZ0ErbjYrbHBVWElKaTB0TFM4LzcvR0ovNzlrMVVRQU1HL3VQSmZMSlo3ODY4WU5ZVjB5QUh4dzgyWWdFRWhJU0VBQVQ2Ykg0WERFRlVJTmJ2aTcvSStjTDhyTXZyNStJSE1tTXV6eWQvUFJTSllBRU54dXR3aXJvd3pkNlo2TWxOUUp2dllPQW5qWTZXdC84TEZuWXFZTUFIYy92Q3RDbEtIcnVUbTVraVRGSmM3V2x0YXlzaktudzRuUmpvUm1HUmlNRmdibmpER2JiSzd2Y2lZc0t5OG5BbVFZZW9zSCs0cVFyNHRxSWFBb3gzLy91d1dsY2VRT1NaTFMwek02UCs3Z3hEVk51M2YvdmdsOC8vNTl4aGdCcUpybTlYcmp0aC9PdFlBaUl4TTVJSWFkQmZ0Qk01SWlvcWFxbzlFdUkxQlZsWXo0RWdkakxITmk1dnVOalpJc2M0UDdPanZONXFHdnJ5OGtTN3ZkSG4vVVphSy9ReUllanNEUk1Sa1lpcUtOVVVqcndCSFJsQUFOanJLRE9saENRQUtNZTJQb2Nya0l3Q0FDSUhHQUlZZS9oQWdBalBqVEwrZGM1MXczREJZT2RRakJVd0RpRkxrRHpnMlVaUUt6ZStlYWhveHh6czBtRjJCb09qU0lBRURqQm8rL2oxUVV4V3k1RVlWTVpRQnd1OTJpajdiSk5wK3ZJOTVGRTkySjVVdVgydTEySUdJamh5NENJTTZCcUw2K1hsQ3BtdnJjNGlVTU1YYk9GOEpRTkRVdFBTM2VXTjNiMjhjUXhWRmtTbktLQ1R4bDZoVGhma3hpcmExdGp6d0hpeG9aR1JuSGpoOGJiZlBRMi9Oa1ViRWRtS2pZZCsydVNrNUp3VkdiYUZ6QWhtRzB0N2NEWXdqQUdFdExUemVCOC9NTEVCR0ptQ1RkdjNmUE1BeFpsdVBDam1ObTVHa2xBVU5rWTkrYm1PbzFkTjNmMVlXSVFPU3dPN3c1WHJPMG5ER2pNTkhsRWlkYTdlM3R2YjI5WTlYS2ZJNVZCeUsydExZK2ZQaFF4Q1pQcGljMU5SVUlHQUc0azVLeXZWNUIyT1gzdnhkc3BzYnBDS25xN2ZQbkZVVVIvRVhGeGVHWUR3QWxDMHM1NTRnb0ErellzWE84VjlIaTBHZC9UWTNEWmtNQVZkUG1sY3dYSHNYRTVjT1NKVXZGQVNLVHBQZWJtaTVkdkRUZW1VK2YrclBmMzgwWTQwVGNNSjVidkRoWURRQWdZa25KL0d5djF6QU1BTERiN2J1cnFzYTdWZGZVMU5obG1ZaTRZWlNYbDN1enM0VnRoeFBnTHlzckRTSVJOcTgyTlB6aTlkZWp3c0I0Q1ZlY2FQMzY5YmR1M21TTUVaSGtjTHp5NnF2aGU0L1E3TklGcFVWRlJRYm5SSlRvY3IxMTZLM3F2WHMvWFFMOEhHa0I0T2ZiZm5yK3IrZWNUaWZuWE5QMVJXVmx1ZE55aDdscWtXVjVWMVdWYUdnNDV6WloydjZyeWxkKytLT3VycTd4WXNhZEhSM3Ixbjc3OElFRHRtRERsNXljWExWN2QyUWxOK2h1YVdiUnpEMXZWcXVhS3BqZGJuZHRiVzNKbkxtSER4NE1LTXBZYlVzY2hwdGZPa2EyNC9mN3EzYnNYREMvcEs2dUxpRXhVZlNZbXE0ZlBub2tPU1U1MGlYRDU5SVV2TERadFdQbjNqMTdFbDB1a2FpSUtCQUlKS2RNZU9xcEo0dUxpek15TTFNbnBNbzJhZGpPNWhIZElaQ2lLRDkrK1dXSk1VUU1LTXJPWGJzY1RtZjhYa05Fb0d1YXorZDc4T0JCWTFQajlhYnJmYjI5cm9RRTh4QVBVVlhWSFR0M3Z2ajFGem5ua1JxT3ZoQVgyRFg3ZnZQRzl1MTJteTNZNG5DUnNYUmQ1NGJCaVlCekNOMTNVcWhTcEtIWlAzUTl6d0NJY3laSmRydmRESmlNQlFJQjBTZnpJY0lMWFRqUlNFMFNvc1NZeEZpSUo2UXpEbEQ5WnZYeUZTc2ludzhQSEJyL3VIcDEwNlpOLzc3N2tUc3hVZlJvWnRFYlhEV3NFaHhtUjBnWUZVdHcwRjhNREZIWktCU01GTmw3aVYyWUNLTFpKTTU3K25wblAvMzAzdXJxNmRPbkQzdDNPVHl3V0VMWDllbzkxWDg4VWR2VzFvWUFraVNaZjVNUVZpd043dkVqOEliQTRlZ09iMk9rd0VGbVR3QVl2dE0yZEYyUzVhbFpXUlZyMTY2dVdCTlRhaU1EUS9BQ3RmR2ZqU2RxYSt2cUx2aDhQbDNWek12eENDTVpadDl4cGhRY2Vtd2RvekdJbUd5ejJTWlBucnhzMlpkWFBiOHF2NkRBWnJPRmRqNXNYTURZUlVXVVZYUjJkdnE3L0lGQUFJQ0czOWxvRmZxb2k0TVlSK3pobldHQzA1bWFscG9TdW80YlREa3NNMXIvTTgwQ3RvQXRZQXZZQXJhQUxXQUwyQUsyZ0MxZ0M5Z0N0b0F0WUF2WUFyYUFMZUQvcWZFZmJtTWNWQ3A4Ykc4QUFBQUFTVVZPUks1Q1lJST0iLCJzdXBwb3J0ZWRFeHRlbnNpb25zIjpbeyJpZCI6ImhtYWMtc2VjcmV0IiwiZmFpbF9pZl91bmtub3duIjpmYWxzZX1dLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCJdLCJleHRlbnNpb25zIjpbImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6ImY4ZDVjNGU5ZTUzOTRjMDY4NjYyZWMyYTQxNTVhNTU1Iiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsInVwIjp0cnVlLCJ1diI6dHJ1ZX0sImZpcm13YXJlVmVyc2lvbiI6MX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMS0xMi0xMCJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjEtMTItMTAifSx7ImFhZ3VpZCI6ImI3ZDNmNjhlLTg4YTYtNDcxZS05ZWNmLTJkZjI2ZDA0MWVkZSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiYjdkM2Y2OGUtODhhNi00NzFlLTllY2YtMmRmMjZkMDQxZWRlIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlNlY3VyaXR5IEtleSBORkMgYnkgWXViaWNvIn0sImRlc2NyaXB0aW9uIjoiU2VjdXJpdHkgS2V5IE5GQyBieSBZdWJpY28iLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2LCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX0seyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbImVkMjU1MTlfZWRkc2Ffc2hhNTEyX3JhdyIsInNlY3AzODRyMV9lY2RzYV9zaGEzODRfcmF3Iiwic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURTRENDQWpDZ0F3SUJBZ0lVVWNtTVh6UklGT2dHVEswVGIzZ0V1Wllaa0JJd0RRWUpLb1pJaHZjTkFRRUxCUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JCSURFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURtNTU1YldZOVdXK3RPWTBySVdIbGRoK2FOYW5vQ1pDRmg3R2szWVpyUW1QVXcwaGtTRzZxWUhRdFArZlp5UzMzVkVydmcrQlFxbm11bWdOaGZ4RnJrd0VaRUxlaWRCY0M4QzRBZzRucXFpUFdwenN2STE3TmN4WWxJbkxOTEZjWlkvK2dPaU42Wk9UaWhPNS92QlpNYmo5cmlhQWNxbGlZbU5HSlBnVGNNR2FFQXlNekVNTnkybm02RXArcGpQNWFGNmdpMjF0L1VRRnN1SjFqMlJqL3luTS9TZFJ0K2VjYWw1T1lvdHhIa0ZiTDl2dnYyQTJPdjVJVFpDbHc0Yk9TOW5weXBRaW1PWjVRQVl5dG1ZYVFwV2wvcE1ZejZ6U2o4UnFrVkRORUpHcU5mVEtBMml2TFl3WDZsU3R0TVBhcGcwSjg0bDlYMHZvVk4vRnBTNFZDVkFnTUJBQUdqWmpCa01CMEdBMVVkRGdRV0JCUWdLRkFoRzZSYVcraFR5NTJkeGVUOGJDOTZIekFmQmdOVkhTTUVHREFXZ0JUUzd1OWFJbzA2YlZ3amx6M3loZFVtOFNWN2tqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQTRHQTFVZER3RUIvd1FFQXdJQmhqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFZTXpnTHJKTElyME9vdlFuQVpyUklHdWFiaUhTVUtTbWJMUldwUmtXZUF0c0NoREVIcFhjSi9iZ0ROS1lXb0hxUTh4UlVqQjRDeWVwWWV2YzNZbHJHOG83ekh4cGZWY2FvTDVTZXVKa3pIeEtuNGJUYVNwOStNdndhbW5wNjRrWk1pTmJGTGtuZlA5a1lLb1JIa01XaGVSSjFVc1AxejRTY21rQ2VJTGZzTXM2dnFvdnFqV0NsRnNKcEJjc2x1WUhXRjdiQkoxbjRSd2crQVRFb3BZNElnR3Y2WnZ3YytBOXIrQVQyaHFwb1NrWW9BbCtBTll3Z3NsT2Y5c0plMFYrVEE5WVkvVWxhQm1QUFRkMC8vcjl3dmNlUFdaa1BqS29BQy96VU5oZkRiaDRMVjhHSHMzbHlYMlhvbUwvTE5jOEpZenlJYURFaEdRdmVvUGhoL3RyMWc9PSIsIk1JSURTRENDQWpDZ0F3SUJBZ0lVRHFFUncrNFJuR1NnZ3hnVWV3SkZFUERSWjNZd0RRWUpLb1pJaHZjTkFRRUxCUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURJN1huSCtadkR3TUNRVThNOFplVjVxc2N1Ymx2VllhYVJ0M1liYXhuOWdvZEx4NXN3SDBsWHJkZ2poNWg3RnBWZ0NnWVlYN0U0YmwxdmJ6VUxlbXJNV1Q4TjNXTUdVZThRQUpiQmVpb1Y3Vy9FK2hUWlAvMFNLSlZhM2V3S0JvNlVMZU1uZlFaRHJWT1JBazh3VExxMnY1TGxqNXZNajdKdE9vdEthOUo3bkhTOGtMbXpYWFNhajBTd0VQaDVPQVpVVE5WNHpzMWJ2b1RBUVFXckw0L0o5UXVLdDZXQ0ZFNW5VTmlSUWNFYlZGOG1scUsyYngyejZva1ZsdHlEVkxDeFlicFVURUx2WTF1c1IzRFRHUFVvSUNsT200Y3Jwd25EUkxWSHZqWWVQR0JCLy9wRXl6eEEvZ2NTY3hqd2FIMVpVdzliblNiSHl1cktxYlRhMUt2akFnTUJBQUdqWmpCa01CMEdBMVVkRGdRV0JCVHF0MEtRbmd4N1pIcmJWSHdEdW54T245aWhZVEFmQmdOVkhTTUVHREFXZ0JUUzd1OWFJbzA2YlZ3amx6M3loZFVtOFNWN2tqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQTRHQTFVZER3RUIvd1FFQXdJQmhqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFxUWFDV014VEdxVlZYN1NrN2trSm1VdWVUU1lLdVU2K0tCQlNnd0lSbmx3OUs3SGUxSXB4WjBoZHdwUE5pa0tqbWN5RmdGUHpoSW13SEpneHh1VDkwUHczdllPZGNKSk5rdERnMzVQWE9melNuMTVjRkF4MVJPMG1QVG1JYjhkWGlFV09wem9YdmR3WERNNDFaYUNEWU1UN3c0SVF0TXl2RTd4VUJacTJianRBbnEvTkRVQTdiZTRIOEgzaXBDKy8rTktsVXJjVWgrajQ4SzY3V0kwdTFtNkZlUXVlQkE3bjA2ajgyNXJxRHFzYUxzOVRiN0tBSEF3OFBtcldhTlBHMmtqS2VyeFBFZmVjaXZsRmF3cDJSV1p2eHJWdG4zVFYyU0J4eUNKQ2tYc05EMDVkQ0VyVkhTSklzK0JkdFRWTlk5QXd0eVBtbnliMHY0bVNUenZXZHc9PSIsIk1JSURTakNDQWpLZ0F3SUJBZ0lVVG5iYkdJUjJOSHZ6cUlLRkFlUXdHMVhCaXMwd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JCSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVFZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU9zWGozazA0QmFuNFRZZHRaS3FEL09QSnh5RHlhUG1DQlVGVWlhWklnVHRlWm5qM1gyNURoZ3BaWlhzQzREMHlkSWNybEE2d05VSW5PUkwvTDl6QmJURUlNQVZNR282ZzdVS0FtYjJNRjZBSGJuaFlKZDllaWt1cFZOV1NoSE5ZTmM0R0JkTzFZTjZBZlVxdkpoSGJlM1Y0U05NUG1CUkVLSlBWejdUaHdnbWdnVGU4V3MySzAvd3NxdjJ3U0U3cGJDQnNVWmhJWDUxYlpNM3BxRHdKUFRtUkZFdnQwLzZ0RzVlTzhGM2oxNE9YcWZFaG1qbjFWdnhLRFlRT0xaQXhDd3dnQzBQNENkZld2M3k4UFNSOEkzNTRoTzFZK0d6Tmp2SXFYMzhOS0x5d3VJWUhGZXJPeE5seEVNQnZGaFlCdVJ1WUFra2dVYVBxTjZVQmhzSUxyc0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ0NvUkhoaXlObmJuWFJXSUw2WkJYb0JYOVlUTUI4R0ExVWRJd1FZTUJhQUZDQW9VQ0VicEZwYjZGUExuWjNGNVB4c0wzb2ZNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUNRRmFmSkkxLzVXZzlDRUVpbUUxUlA1NFJnUXdUTlRPT1FzTEFDVGUrckl0bEZRekM5WkRoclY4Mjh5WDdqenkrQUFzcDNpeks3VDF0aDJkbDdtK3R1MHN3MlBhL29sYzAybnQ2UHlJdzM0OGdhSHpoSTErMEtFNDVxeHZGRGVMMmxNeGJQZkNZdnlFRWFZemppUUVMVTU5NTFwWEdXeUtNYS80Zkx0TytaS09YaE11VmVxNHJYRFBJNTRXNkpIT2lBYWlLZGl3KzVlM2Mya3QvakZJUXRNNnZNWGc5TE5GemRqRVROdDIwVlg5UWV2UnBGWmZ1Y01HOXdDYVFEb0ZsUHpwVE1KS2hQZXYvaW1KbVpZaEtmcjBsTGNlbXRxakl4TEFvcVpkT1lmSEJnNit2QWNkUEkvaWF1R3BVQXY3WCtVS05tRHdqWjJCYUg0c0x3aEIybSIsIk1JSURTakNDQWpLZ0F3SUJBZ0lVUjM4bXEyNlNmMnN6VlYyQmRHNldFTjdrdVdVd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVJZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU5ZMFdiOW9Qb1JvS29ReVdQYUpwejExdnJXVGc2elR0bU5qMlZvS1JueXZLR1JxcHpiODN3NWw2WUE5NlVZa1lCRFFQMGlsTzJEUGU2d1dxVlI1ekRmUnpkY0g4YmgrTDdkR0d2YWU2aFJUWmhrRmtDcFhEczRIY2NrbnJEZjhGQ2xKN0hlMzlKZjQyL0cxUW0yeno5V1dtclBYdGdpSy94MDVHanNRZkd1REcxemY1UVRVVWllOGx3eW1LM1RmZE92TmVlSkFBUGUycG43SXRmUmIrclZyTldpRHpsUm4ydk5uWjJ3UG80d0gvV0o2ZGhYWkcrck1XVCthNkJvY2cxVWZJdzZrZHVuRzRiVHBaenN2YWNGWXlSMG1wZitEZU9ucFNXQW15d0pXSHZUbGYyWVh4RnllWGNUQUNkUWxjTU5HSjJWaFpRNDh4dFA1L1JCUC84a0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ2h5NDJva2lxY1RTMWlxYS9IUldqa0JuNEgvTUI4R0ExVWRJd1FZTUJhQUZPcTNRcENlREh0a2V0dFVmQU82ZkU2ZjJLRmhNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUFuK1JISVBidE1FRE5kVDFnOEgvUml0QWtVZExnQXQxdFdHV25sajlrbmJ2NC80R2xYN0M5cDQ1ZWZQTzkvYVpMNk9WMVhSS0JpNkttdEJXNUs3bnVZRW5NeC81QnFCU2JMVDdyaGR1QzQ5VEJlTWI5UEhkWHNUbFNWTlllZnIxZEdpZHI0ajB4VkJRTGIxcmtuREFiZFdEektmdm5heUtPOEZyd2U3SHg4NDNNRy9ySitjMFhydVV2YmZWVENITGlJV2hNN29ORGhMOHhvYjZ4VW85S0xLY1NMK0l0WXNPMy85V2I4UTlHanNxTDRGWHNEY0cxU2FZaDdLcGZ1TW1PaXhxekpaTzJuSWljUFlSZzFJMlN1aVVmWU83MHRtZEhjYmwra1NRbVNZdDdycTR2aUlMZzJHeDNqOXJJVHVXVGpiYVVhU1NReGdPbU1TSHV5ek1BQyIsIk1JSURQakNDQWlhZ0F3SUJBZ0lVWHplaUVESkVPVHQxNEY1bjBvNlpmL2JCd2lVd0RRWUpLb1pJaHZjTkFRRU5CUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTVo2L1R4TThySVQrRWFvUHZHODFvbnRNT28vMm1RMlJCd0pIUzBRWmN4VmFOWHZsMTJMVWhCWjVMbWlCU2NJWmQxUm54MW9kNTg1aCsvZGhLN2hFbTdKQUFMa0tLdHMxZk81M0tHTkxadWp6NWgzd0duY3I0aHlLRjBHNzRiL1UzSzloRTVtR05ENnpxWWNoQ1JBSGZyWU1ZUkRGNFlMMFg0RDVuR2R4dnBwQXk2bmtFbXRXbU1ud08zaTBUQXVjc3JiRTQ4NUh2R000cjBWcGdWZEpwdmdRamlUSkNUSXErRDM1aHd0VDhRREl2K25HdnBjeWk1d2NJZkNrenlDaW1KdWtoWXk2S29xTk1LUUVkcE5pU092V3lETVRNdDFid0N2RXpwdzkxdSttc1V0NHJqMGVmbk85czBaT3dkd01SRG5INHhnVWw1Wkx3cnJQa2ZDMS8wQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQjhHQTFVZEl3UVlNQmFBRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRTXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJEUVVBQTRJQkFRQzNJVy9zZ0I5cFo4YXBKTmp4dUdvWCtGa0lMa3Mwd01OcmRYTC9jb1V2c3JoenN2bDZtZVBNcmJHSkJ5SjFYbnF1QjVzZ2NSRU5GeGRRRm1hM21pbzhVcGYxb3dNMVpyZVhySjBtQURHMkJwbHFiSm54aXlZYStSMTFyZUlGVFdlSWhNTmNaS3NEWnJGQXlQdUZqQ1dTUXZKbU5XZTltRlJZRmdOaFhKS2tYSWI1SDFYZ0VEbHdpZWRZUk03Vm9sQk5sbGQ2cFJGS2xYOHVzdDZPVE1PZUFEbDJ4TkYwbTFMVGhTZGV1WHZEeUMxZzkrSUxmejNTNk9JWWdjM2lyb1JjRkQzNTRnN3JLZnU2N3FGQXc5Z0M0eWkweEJUUHJZOTVyaDQvSHFhVVlDQS9MOGxkUms2SDdYazM1RCtXVnBtcTJTaC94VDVIaUZ1aGY0d0piMGJLIiwiTUlJRFJ6Q0NBakdnQXdJQkFnSVVleDluVDl2d1pOWFM0ODNMZGlZR2Z3MlNqU293Q3dZSktvWklodmNOQVFFTE1DNHhMREFxQmdOVkJBTU1JMWwxWW1samJ5QkJkSFJsYzNSaGRHbHZiaUJKYm5SbGNtMWxaR2xoZEdVZ1FpQXhNQ0FYRFRJMU1EZ3dNVEF3TURBd01Gb1lEems1T1RreE1qTXhNak0xT1RVNVdqQW5NU1V3SXdZRFZRUUREQnhaZFdKcFkyOGdSa2xFVHlCQmRIUmxjM1JoZEdsdmJpQkNNaUF4TUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUF1MU1ldm55OWR5TzlaVUMzOVNvTWhMY1IvRFhydEYvY2lNMTJ0Y2l5MkVYQVo2TWtyaXZWdENmRVZNOVg2SVNURW5CUDZ1U1lZb3Y2cHB2Nk82SmgyTkhtWW00dytKblM0Vm5DUFU3bUhBTWZWSTJNR1RUTVZPZXcweFVzRzdzSVNJa0lEVUJtdWs4WUs5YzV6aWM5K3ZGUUdMSWtzZFhPNWlWRklnTkc1M2NHWEQ0Wkxab0FQaXUwUEVvenhBcVlJYUk0Z3hLaE9BM1M4L1c4bUlXc3U2b2Z5ajRHdmtGRzZaN2t5RjMxMDdQN213RkhMckkzRU5hUFdNT0ZjVGFHYTBkdysvdlZSd2pSY0VaQlZzdXVULzg3Y2tTczBhNXBrdDN2WkJsYVllVDhwelNyZVY3bW93Y0lNOTBMMmlhQVRsUDBueG1hRTZuT3lUYm9qRlZsMndJREFRQUJvMll3WkRBZEJnTlZIUTRFRmdRVVNYRWgzc2EzYnREdXJtNE1NL0M3UzFsUnV1WXdId1lEVlIwakJCZ3dGb0FVNnJkQ2tKNE1lMlI2MjFSOEE3cDhUcC9Zb1dFd0VnWURWUjBUQVFIL0JBZ3dCZ0VCL3dJQkFEQU9CZ05WSFE4QkFmOEVCQU1DQVlZd0N3WUpLb1pJaHZjTkFRRUxBNElCQVFCNUdjM2hhZnRwN2hLc0Vac28raS9aNW5SdXFkbXpHMldDbFVvUlVxYmFQeWdsbkpEaktSL2tmZ09sNmliYkYvenRobTNLbVhRN0hjRElQMnhNZEc3VTJMMmltYkpRSHFQZi9oMkhxb2piNHJaZ3VlKzZXNGt0U1I1ZWxSOUwxcllxRS9TR1lNNGlFS29WUVN2N1JUMXJ4SWVXaUtzdy9WeHhpL1FPbnN4M0Y3eDgwQ0NZZ0I0RTN5UXg4VlRXNDQwaFRFd1RBMWVNSE9peDMydFB0eXlISWE4UFZWSWZWcEhRSkJhTVZ2djUwOFVFandrYlUycm5qZnpvU1ROUzlBNWpVUThtQlN2ZTk1cmpCMGRvOThFVStEeGRCcVgyK0g2aTV3bElDRmd6aGR6Y3NuZTloR0tUNmx6VFg0Y0lkSnNyWTIreGxlSzBGRlF5NmxHRVZMRWUiXSwiaWNvbiI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsImljb25EYXJrIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwicHJvdmlkZXJMb2dvTGlnaHQiOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJwcm92aWRlckxvZ29EYXJrIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMV9QUkUiLCJGSURPXzJfMSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJsYXJnZUJsb2JLZXkiLCJjcmVkQmxvYiIsIm1pblBpbkxlbmd0aCJdLCJhYWd1aWQiOiJiN2QzZjY4ZTg4YTY0NzFlOWVjZjJkZjI2ZDA0MWVkZSIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImxhcmdlQmxvYnMiOnRydWUsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjp0cnVlLCJhbHdheXNVdiI6ZmFsc2V9LCJtYXhNc2dTaXplIjoxNTM2LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjgsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4LCJ0cmFuc3BvcnRzIjpbIm5mYyIsInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi04fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotMzV9XSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5Ijo0MDk2LCJtaW5QSU5MZW5ndGgiOjQsImZpcm13YXJlVmVyc2lvbiI6MzI5NDc2LCJtYXhDcmVkQmxvYkxlbmd0aCI6MzIsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjoxLCJyZW1haW5pbmdEaXNjb3ZlcmFibGVDcmVkZW50aWFscyI6MTAwfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMTItMjIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2LCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IlNlY3VyaXR5IEtleSBORkMgYnkgWXViaWNvIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNDEyMjIwMDgiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMi0yMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzZ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDEtMTAifSx7ImFhZ3VpZCI6IjhkMWIxZmNiLTNjNzYtNDlhOS05MTI5LTU1MTViMzQ2YWEwMiIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiOGQxYjFmY2ItM2M3Ni00OWE5LTkxMjktNTUxNWIzNDZhYTAyIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IklERU1JQSBJRC1PTkUgQ2FyZCJ9LCJkZXNjcmlwdGlvbiI6IklERU1JQSBJRC1PTkUgQ2FyZCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjo4MiwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9LHsibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDVXpDQ0FmbWdBd0lCQWdJSkFMMWYvdnUyWFd1Uk1Bb0dDQ3FHU000OUJBTUNNSUdFTVFzd0NRWURWUVFHRXdKVlV6RVJNQThHQTFVRUNBd0lWbWx5WjJsdWFXRXhEekFOQmdOVkJBY01CbEpsYzNSdmJqRVBNQTBHQTFVRUNnd0dTVVJGVFVsQk1TSXdJQVlEVlFRTERCbEJkWFJvWlc1MGFXTmhkRzl5SUVGMGRHVnpkR0YwYVc5dU1Sd3dHZ1lEVlFRRERCTkpSRVZOU1VFZ1JrbEVUeUJTYjI5MElFTkJNQ0FYRFRJek1Ea3hOREExTXpnd00xb1lEekl3TlRNd09UQTJNRFV6T0RBeldqQ0JoREVMTUFrR0ExVUVCaE1DVlZNeEVUQVBCZ05WQkFnTUNGWnBjbWRwYm1saE1ROHdEUVlEVlFRSERBWlNaWE4wYjI0eER6QU5CZ05WQkFvTUJrbEVSVTFKUVRFaU1DQUdBMVVFQ3d3WlFYVjBhR1Z1ZEdsallYUnZjaUJCZEhSbGMzUmhkR2x2YmpFY01Cb0dBMVVFQXd3VFNVUkZUVWxCSUVaSlJFOGdVbTl2ZENCRFFUQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJIYlQrUnBrQW85RWNMK09lbENqOGhpaG5mRlVLRE9wTnNzZHJId3NlK3F1RllWMEhMOWp3UVhPMzU1bWtJNGRocDNUc25iTUowQUo5anI2bzdCb0NFbWpVREJPTUIwR0ExVWREZ1FXQkJRbnM2YWh4cy8vZ3BiYTdYRFpCTnNnREcwbEVEQWZCZ05WSFNNRUdEQVdnQlFuczZhaHhzLy9ncGJhN1hEWkJOc2dERzBsRURBTUJnTlZIUk1FQlRBREFRSC9NQW9HQ0NxR1NNNDlCQU1DQTBnQU1FVUNJUURiVk1RcVd6bnpiMGVFWVdRYVFJbjBkbFlEb1dRQWJVSTQ2Yjlqc0MxdUZnSWdkK3hFMHJ1ZlcvN25qS2MxcWtzaTNVaE1vamNGWkMrM2NMVFJoV2dLeGpVPSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFnQ0FJQUFBRDhHTzJqQUFBQUNYQklXWE1BQUM0akFBQXVJd0Y0cFQ5MkFBQUtUMmxEUTFCUWFHOTBiM05vYjNBZ1NVTkRJSEJ5YjJacGJHVUFBSGphblZOblZGUHBGajMzM3ZSQ1M0aUFsRXR2VWhVSUlGSkNpNEFVa1NZcUlRa1FTb2dob2RrVlVjRVJSVVVFRzhpZ2lBT09qb0NNRlZFc0RJb0syQWZrSWFLT2c2T0lpc3I3NFh1amE5YTg5K2JOL3JYWFB1ZXM4NTJ6endmQUNBeVdTRE5STllBTXFVSWVFZUNEeDhURzRlUXVRSUVLSkhBQUVBaXpaQ0Z6L1NNQkFQaCtQRHdySXNBSHZnQUJlTk1MQ0FEQVRadkFNQnlIL3cvcVFwbGNBWUNFQWNCMGtUaExDSUFVQUVCNmprS21BRUJHQVlDZG1DWlRBS0FFQUdETFkyTGpBRkF0QUdBbmYrYlRBSUNkK0psN0FRQmJsQ0VWQWFDUkFDQVRaWWhFQUdnN0FLelBWb3BGQUZnd0FCUm1TOFE1QU5ndEFEQkpWMlpJQUxDM0FNRE9FQXV5QUFnTUFEQlJpSVVwQUFSN0FHRElJeU40QUlTWkFCUkc4bGM4OFN1dUVPY3FBQUI0bWJJOHVTUTVSWUZiQ0MxeEIxZFhMaDRvemtrWEt4UTJZUUpobWtBdXdubVpHVEtCTkEvZzg4d0FBS0NSRlJIZ2cvUDllTTRPcnM3T05vNjJEbDh0NnI4Ry95SmlZdVArNWMrcmNFQUFBT0YwZnRIK0xDK3pHb0E3Qm9CdC9xSWw3Z1JvWGd1Z2RmZUxacklQUUxVQW9PbmFWL053K0g0OFBFV2hrTG5aMmVYazVOaEt4RUpiWWNwWGZmNW53bC9BVi8xcytYNDgvUGYxNEw3aUpJRXlYWUZIQlBqZ3dzejBUS1VjejVJSmhHTGM1bzlIL0xjTC8vd2QweUxFU1dLNVdDb1U0MUVTY1k1RW1venpNcVVpaVVLU0tjVWwwdjlrNHQ4cyt3TSszelVBc0dvK0FYdVJMYWhkWXdQMlN5Y1FXSFRBNHZjQUFQSzdiOEhVS0FnRGdHaUQ0YzkzLys4Ly9VZWdKUUNBWmttU2NRQUFYa1FrTGxUS3N6L0hDQUFBUktDQktyQkJHL1RCR0N6QUJoekJCZHpCQy94Z05vUkNKTVRDUWhCQ0NtU0FISEpnS2F5Q1FpaUd6YkFkS21BdjFFQWROTUJSYUlhVGNBNHV3bFc0RGoxd0QvcGhDSjdCS0x5QkNRUkJ5QWdUWVNIYWlBRmlpbGdqamdnWG1ZWDRJY0ZJQkJLTEpDREppQlJSSWt1Uk5VZ3hVb3BVSUZWSUhmSTljZ0k1aDF4R3VwRTd5QUF5Z3Z5R3ZFY3hsSUd5VVQzVURMVkR1YWczR29SR29ndlFaSFF4bW84V29KdlFjclFhUFl3Mm9lZlFxMmdQMm84K1E4Y3d3T2dZQnpQRWJEQXV4c05Dc1Rnc0NaTmp5N0VpckF5cnhocXdWcXdEdTRuMVk4K3hkd1FTZ1VYQUNUWUVkMElnWVI1QlNGaE1XRTdZU0tnZ0hDUTBFZG9KTndrRGhGSENKeUtUcUV1MEpyb1IrY1FZWWpJeGgxaElMQ1BXRW84VEx4QjdpRVBFTnlRU2lVTXlKN21RQWtteHBGVFNFdEpHMG01U0kra3NxWnMwU0Jvams4bmFaR3V5QnptVUxDQXJ5SVhrbmVURDVEUGtHK1FoOGxzS25XSkFjYVQ0VStJb1VzcHFTaG5sRU9VMDVRWmxtREpCVmFPYVV0Mm9vVlFSTlk5YVFxMmh0bEt2VVllb0V6UjFtam5OZ3haSlM2V3RvcFhUR21nWGFQZHByK2gwdWhIZGxSNU9sOUJYMHN2cFIraVg2QVAwZHd3TmhoV0R4NGhuS0JtYkdBY1laeGwzR0srWVRLWVowNHNaeDFRd056SHJtT2VaRDVsdlZWZ3F0aXA4RlpIS0NwVktsU2FWR3lvdlZLbXFwcXJlcWd0VjgxWExWSStwWGxOOXJrWlZNMVBqcVFuVWxxdFZxcDFRNjFNYlUyZXBPNmlIcW1lb2IxUS9wSDVaL1lrR1djTk13MDlEcEZHZ3NWL2p2TVlnQzJNWnMzZ3NJV3NOcTRaMWdUWEVKckhOMlh4MktydVkvUjI3aXoycXFhRTVRek5LTTFlelV2T1VaajhINDVoeCtKeDBUZ25uS0tlWDgzNkszaFR2S2VJcEc2WTBUTGt4WlZ4cnFwYVhsbGlyU0t0UnEwZnJ2VGF1N2FlZHByMUZ1MW43Z1E1Qngwb25YQ2RIWjQvT0JaM25VOWxUM2FjS3B4Wk5QVHIxcmk2cWE2VWJvYnRFZDc5dXArNllucjVlZ0o1TWI2ZmVlYjNuK2h4OUwvMVUvVzM2cC9WSERGZ0dzd3drQnRzTXpoZzh4VFZ4Ynp3ZEw4ZmI4VkZEWGNOQVE2VmhsV0dYNFlTUnVkRThvOVZHalVZUGpHbkdYT01rNDIzR2JjYWpKZ1ltSVNaTFRlcE43cHBTVGJtbUthWTdURHRNeDgzTXphTE4xcGsxbXoweDF6TG5tK2ViMTV2ZnQyQmFlRm9zdHFpMnVHVkpzdVJhcGxudXRyeHVoVm81V2FWWVZWcGRzMGF0bmEwbDFydXR1NmNScDdsT2swNnJudFpudzdEeHRzbTJxYmNac09YWUJ0dXV0bTIyZldGblloZG50OFd1dys2VHZaTjl1bjJOL1QwSERZZlpEcXNkV2gxK2M3UnlGRHBXT3Q2YXpwenVQMzNGOUpicEwyZFl6eERQMkRQanRoUExLY1JwblZPYjAwZG5GMmU1YzRQemlJdUpTNExMTHBjK0xwc2J4dDNJdmVSS2RQVnhYZUY2MHZXZG03T2J3dTJvMjYvdU51NXA3b2Zjbjh3MG55bWVXVE56ME1QSVErQlI1ZEUvQzUrVk1HdmZySDVQUTArQlo3WG5JeTlqTDVGWHJkZXd0NlYzcXZkaDd4Yys5ajV5bitNKzR6dzMzakxlV1YvTU44QzN5TGZMVDhOdm5sK0YzME4vSS85ay8zci8wUUNuZ0NVQlp3T0pnVUdCV3dMNytIcDhJYitPUHpyYlpmYXkyZTFCaktDNVFSVkJqNEt0Z3VYQnJTRm95T3lRclNIMzU1ak9rYzVwRG9WUWZ1alcwQWRoNW1HTHczNE1KNFdIaFZlR1A0NXdpRmdhMFRHWE5YZlIzRU56MzBUNlJKWkUzcHRuTVU4NXJ5MUtOU28rcWk1cVBObzN1alM2UDhZdVpsbk0xVmlkV0Vsc1N4dzVMaXF1Tm01c3Z0Lzg3Zk9INHAzaUMrTjdGNWd2eUYxd2VhSE93dlNGcHhhcExoSXNPcFpBVEloT09KVHdRUkFxcUJhTUpmSVRkeVdPQ25uQ0hjSm5JaS9STnRHSTJFTmNLaDVPOGtncVRYcVM3Skc4Tlhra3hUT2xMT1c1aENlcGtMeE1EVXpkbXpxZUZwcDJJRzB5UFRxOU1ZT1NrWkJ4UXFvaFRaTzJaK3BuNW1aMnk2eGxoYkwreFc2THR5OGVsUWZKYTdPUXJBVlpMUXEyUXFib1ZGb28xeW9Ic21kbFYyYS96WW5LT1phcm5pdk43Y3l6eXR1UU41enZuLy90RXNJUzRaSzJwWVpMVnkwZFdPYTlyR281c2p4eGVkc0s0eFVGSzRaV0Jxdzh1SXEyS20zVlQ2dnRWNWV1ZnIwbWVrMXJnVjdCeW9MQnRRRnI2d3RWQ3VXRmZldmMxKzFkVDFndldkKzFZZnFHblJzK0ZZbUtyaFRiRjVjVmY5Z28zSGpsRzRkdnlyK1ozSlMwcWF2RXVXVFBadEptNmViZUxaNWJEcGFxbCthWERtNE4yZHEwRGQ5V3RPMzE5a1hiTDVmTktOdTdnN1pEdWFPL1BMaThaYWZKenMwN1AxU2tWUFJVK2xRMjd0TGR0V0hYK0c3UjdodDd2UFkwN05YYlc3ejMvVDdKdnR0VkFWVk4xV2JWWmZ0Sis3UDNQNjZKcXVuNGx2dHRYYTFPYlhIdHh3UFNBLzBISXc2MjE3blUxUjNTUFZSU2o5WXI2MGNPeHgrKy9wM3ZkeTBOTmcxVmpaekc0aU53UkhuazZmY0ozL2NlRFRyYWRveDdyT0VIMHg5MkhXY2RMMnBDbXZLYVJwdFRtdnRiWWx1NlQ4dyswZGJxM25yOFI5c2ZENXcwUEZsNVN2TlV5V25hNllMVGsyZnl6NHlkbFoxOWZpNzUzR0Rib3JaNzUyUE8zMm9QYisrNkVIVGgwa1gvaStjN3ZEdk9YUEs0ZFBLeTIrVVRWN2hYbXE4NlgyM3FkT284L3BQVFQ4ZTduTHVhcnJsY2E3bnVlcjIxZTJiMzZSdWVOODdkOUwxNThSYi8xdFdlT1QzZHZmTjZiL2ZGOS9YZkZ0MStjaWY5enN1NzJYY243cTI4VDd4ZjlFRHRRZGxEM1lmVlAxdiszTmp2M0g5cXdIZWc4OUhjUi9jR2hZUFAvcEgxanc5REJZK1pqOHVHRFlicm5qZytPVG5pUDNMOTZmeW5RODlrenlhZUYvNmkvc3V1RnhZdmZ2alY2OWZPMFpqUm9aZnlsNU8vYlh5bC9lckE2eG12MjhiQ3hoNit5WGd6TVY3MFZ2dnR3WGZjZHgzdm85OFBUK1I4SUg4by8yajVzZlZUMEtmN2t4bVRrLzhFQTVqei9HTXpMZHNBQUFBZ1kwaFNUUUFBZWlVQUFJQ0RBQUQ1L3dBQWdPa0FBSFV3QUFEcVlBQUFPcGdBQUJkdmtsL0ZSZ0FBQXRoSlJFRlVlTnJzbHQ5TGsxRVl4Ny92TnRlMHZYT2s3eVM3cXlXQll2bmpJa3RHVTB2REN3a3RWNEtYcHYzd0IvNEJCaUlhL1FDMXdqa1ZVeE5zVXV1dXpkMWs2aUJMQ3hJRnpjRFhPVFp3WThyMnNyMXJwNHVYWnVvZ2dyeUpmUzhlZUw2YzUzdzQ1K0U1SElvUWdvT1VDQWVzR0NBR2lBRUF5WDZMWmRuMTlYV0dZZFJxOVQ4Z2tOMXFhMjBWRGxWWmNaVVFZcHVaS1MwdEhUY2E5eXd6Nkh1cnE2cy96czZTUDJrWHdHSTJBempLcUhRNjNmdDNrNFNRcG9ZR0FNV0ZSWHZLTG1vTEFBd09EUHdkb0xkSEQyQmthT2gzODQzSjVISzU5cFRWMWR3RThHcDhmUCtPUzR0TDVyZm1INkdRa083MG9MdXpjMmp3dVNvcDJkQnJPQ3luazVLTzlQWDNaMlprTUNrcHF5dmZHSVlCY0wrOXcycWRLQ29xQ2dRQ0FIaWVGMm9mUDN4a01yMVcwSXJhdWxwdFFZSFA3d05GN2UyQk5sOERJTzM0Q1FBTmQrdTd1N29BU0VBQnFLdXBKWVJVNmE0RG9HWHhxYW9VcFp3V0E5YUpDVUpJNFFVdGdGUHFrd25TUXdENjlQcm9WeFFNQnR2YjJpaUtldERSd2ZOOEtCVGlPTzdaazZjQStub05MTXNDeU1vOHpmbjlITWZsbk1rQ3NMUzRPRDAxRFVCMzlSb2h4T2wweWhNUzRpaVIzVzZQYkxzekIzRnhjYlJDUVFoUkpDWktKQkt4V0N5VHllUnlHb0JVS3YweS94bUFUbGNwaTQrWHlXUWFqUWFBeitlYm1wd0VVRjVSRGtDbFVoVnFDM2dTbnArYml6NEhuTjhQd08vM1I1eEFnTXZOems1bWtrV1VDTURxNm5mQmR6ZzJCREN0VUFCd09sMi9mSWRBaWc0SUJvT1JLSWpuZVFWTmIzbTNpaStYaUVIcCt3enBHZWx1dC91bDBRZ2dFQWlVWFNtN2RlZjJ2WmFXdExTMGhZV3ZIK1krNVovTnk4bk5qZjVVU0NTU1NJdzQ0WERZNGRoUUtwWER3OE5paXFwdmJCd2RlVkYxb3dvQXU3YVdtbnJNMEtQZjN0NitWRkxjMU54OFB1L2M2TmlZU0NTS1Bza2V0MmQ1ZWRuajhVUWNyOWRyWDdlNzNadEN5ckpyVnFzMUhBNFRRcFpYVnJ4ZXIrQzdOOTBXaThWbXMrMGZDeXIycTRnQllvRC9BUEJ6QUk2Vk5xR1FQVXFuQUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzEiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwiY3JlZEJsb2IiLCJtaW5QaW5MZW5ndGgiXSwiYWFndWlkIjoiOGQxYjFmY2IzYzc2NDlhOTkxMjk1NTE1YjM0NmFhMDIiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJlcCI6ZmFsc2UsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6dHJ1ZSwiYWx3YXlzVXYiOmZhbHNlfSwibWF4TXNnU2l6ZSI6MTAyNCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMSwyXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0IjoxMCwidHJhbnNwb3J0cyI6WyJuZmMiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fV0sImZvcmNlUElOQ2hhbmdlIjpmYWxzZSwibWluUElOTGVuZ3RoIjo0LCJtYXhDcmVkQmxvYkxlbmd0aCI6MzIsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjoxfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjMtMTAtMTkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6ODIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiSURFTUlBIElELU9ORSBDYXJkIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyMzEwMTkwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMy0xMC0xOSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjo4Mn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMy0xMi0wOCJ9LHsiYWFndWlkIjoiMzBiNTAzNWUtZDI5Ny00ZmY3LTAyMGItYWRkYzk2YmE2YTk4IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiIzMGI1MDM1ZS1kMjk3LTRmZjctMDIwYi1hZGRjOTZiYTZhOTgiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiT25lU3BhbiBESUdJUEFTUyBGWDcifSwiZGVzY3JpcHRpb24iOiJPbmVTcGFuIERJR0lQQVNTIEZYNyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH0seyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwiaXNGcmVzaFVzZXJWZXJpZmljYXRpb25SZXF1aXJlZCI6dHJ1ZSwibWF0Y2hlclByb3RlY3Rpb24iOlsic29mdHdhcmUiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQ0ZEQ0NBYnFnQXdJQkFnSUVlS1dseVRBS0JnZ3Foa2pPUFFRREFqQm9NUXN3Q1FZRFZRUUdFd0pWVXpFUU1BNEdBMVVFQ2hNSFQyNWxVM0JoYmpFaU1DQUdBMVVFQ3hNWlFYVjBhR1Z1ZEdsallYUnZjaUJCZEhSbGMzUmhkR2x2YmpFak1DRUdBMVVFQXhNYVQyNWxVM0JoYmlCRVNVZEpVRUZUVXlCR1dEY2dURElnUTBFd0lCY05NalF4TWpFNE1UVXpNekE1V2hnUE1qQTFOREV5TVRreE5UTXpNRGxhTUdneEN6QUpCZ05WQkFZVEFsVlRNUkF3RGdZRFZRUUtFd2RQYm1WVGNHRnVNU0l3SUFZRFZRUUxFeGxCZFhSb1pXNTBhV05oZEc5eUlFRjBkR1Z6ZEdGMGFXOXVNU013SVFZRFZRUURFeHBQYm1WVGNHRnVJRVJKUjBsUVFWTlRJRVpZTnlCTU1pQkRRVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCQTRKUFN5ZmNvelJUUms4cXJidGFPazkrQzVjUjFMcm1MR3BDZmlpMjBRVnZJcGN1a3BDSVhPbnhqQUllYXB3WHpHRlNRMmhKc3p4REIyZVdGamNSaVNqVURCT01CMEdBMVVkRGdRV0JCUUM1NkhjNGIzZVU1VEZKbW9kdEdGVEw2akpXekFmQmdOVkhTTUVHREFXZ0JRQzU2SGM0YjNlVTVURkptb2R0R0ZUTDZqSld6QU1CZ05WSFJNRUJUQURBUUgvTUFvR0NDcUdTTTQ5QkFNQ0EwZ0FNRVVDSVFDOFdNOVhMT0RRUkQ4UWY1NFYrQ2cybldreG4wTzVTYXhGaUI0bzd5TGpLUUlnV3ZXQitwZVdUUnJRZU02eDFqTjArYVR2MU5HKzhxWG5sOVdVZXkzQk9UMD0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBUUFBQUFCN0NBWUFBQUNiNEY3UUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFMaU1BQUM0akFYaWxQM1lBQUcxblNVUkJWSGhlN2IwSmxHWlhkUjU2L3JuR3J1cDVubWZOc2tCQ2FBS01CQWFCSlB3aWJHTHpESDdFOFV0aU8zNngzMHJJaXAvamVLM1lXWGFlczU3anJDU2Uxb29YTnJKQklBa0pNQWlFUUFnaE5IZXJ1OVh6WE5WZDFVUE4vL1MrNzl2bjNPRWZxcXBicllGMmZWWDdQL081WjlyNzdIUHV1ZmU2T2N4aER2OXdrZkhtSE9Zd2h3dkVxbFdyT3Z2NitoYlJQbDZ2aTVjNk01azZUYUNZeStVMnVYeGVEdjNtY2k0SEkxTW8xR3RUbFN1eStTeDloYXpDNE1aL3RWcmRuczB3dTZ4RFpwbHNObHZQS21yRzFXcTFqUWdwMFVYdXpTQk9aY3YyWEhiWml1M3dPZURxOWZQMVd2M0UxUGpZNGNIOUozN240SmYrOG96aXRzR2NBSmpEMndwMzNIRkgvc2lSSSt0S3BaS2JuSncwVHd6M0V2N0FDSGt3d0paOFBsOEhNdVNxZkM0UHhzblZhYTlOMWJabGNqbmpGUUR4K1VPZWN0VmFiUjA0cWROQ3dGUmdWTGdSbGtWWVpVWEdaZnFkbUxlZUFSaUZuRmV2MTJwTGNLMWw5SU9KS1BCWE9EUEpJcHRNMGJ2OGZ6RFRDRktCWUJpeWFnOEV0ZzFtQ1lQRm8zcjE5YTZ3YnFObDZtbnk3QmszOE9xdWY3djNDMy8xdXo1YVN6U1djdzQvdnNpQWVUakJOR0Z3Y0pBOHNNbGNNWXJGb3N5cXEyNEdFeFhDRE1VZjJzaG81WEo1TFppb1cweEZmdElQZmtHWXFaWmhTbHBBdDRMSkhHWW40OHdId3l6M2JnQnpGUm5ER0ttN1dnVkRCa2Fpd2JTTWt5VVRaZ3JtSHpPYmdYWU8vR0FHeE82TFpTeEwxenFVak44T3pVRXQ0alo0bWJOTm50NjdUV2hMWkcrNnhaVTJiVVVpbnpQTTh2Q1FPLzdDYzBjcVBZWE5CLy95THljVTBBTEoxcDFEQzl4d3d3MEZ3UFM0QnB3N2QyNDl3b3lMOUZzMEE4TzNXcTZ1Z20wZTFFQXhVMkNxVEQ1VHIxYXFuRlVXa1ltTW9RSmpvZk9xOWI1cXZib3lteUhqV1BmUUN0WkFrbm9mWnNDVlNhWXdCaVByMURzd3k2MmxUZjR5eUVBY1MySWs4WFlxTGFqdFFFT0FIMDc2VFNFS0l4TGhLZjhBODB6N0oxeE5ZUjRweitsbnhJRFkyaVoyMjB4aXpDSktHaGVjNFBVaTdyK0EzSzN2Y1IxYnI0QU5oVkY1Nm03cTlDbDMvSWMvZ0h4Mkg5djN4Yi82SW4xYm9UbTNPUWhyMTY3dFdMQm8wUi8wZEhmOURKaG12akVSUTZ6SlBDUDU5Z3RoZ0I4UVpzU2pJejFUWUVDbjNJRGNMUWE2OTJnS2dkTjhtdjBEMGlIZTFUNTZhOHdZZjhZY0RETkdZd09HU05hWXM4ejVNa0lZUkFScm4zUzNSK245SDNURmpkQUFJa0FBREE2NDQwOS96OVhxdFVmMmZ1RnpkL3VBSnN6dUN2OEFjZlhWVjM5bTBlTEYvMzFxcWl5VlNwQmg5cmFEczAxQSsvaHRRMUtZWGF3R1RKdm9BcnQrMXRGL2pJYlVSVFhxMnc4OVAvZHBsKzFmNEYwQTZqVTVlTktkL040VHJseXZUWTVQblY5dy9PR0h4M3hvQ3RRZjU5QUNQYjA5MTJDZDZpb1ZySkFyTlNPNHE5VzZxTmFPYXEycDNvN1FXV25pR3JtWlhFUW9uS2lWWHdORlFKd211a0MweXIrUmhPWUExQ0J4NWVBT2ZrbDM4THUwMUJKUmVkOXN0Q3BoZ3FoS1hpQmxlK2E1VEM0UHdoSXpFSmVYREt1N1VtZWg1d1BJdkNYbUJFQWJZTzNlUmVZWGc3WHFxRGVNWmtJaW5yZHlPVEk5TVk1UmxId0dTcWFKcVZYZUNXcnpoNVNnZ09BT2ZrbDM4THUwYUx5Q0NEOUphaDBKMUJhdElqZFE0MFZFcmFOR2RCSEk1TUg4WVBoTWxveHZoQjlkenVPRDNtekNuQUJvZ3l4dkFYRktidXlnUUFHdHdscFEwemdRZ1QxZUQvay81RFJybXUxZnE3U1hNMXJWVmkzUnF0MUZDSitKRW5rRkpQMWllcDEvblAzRjhOd3RCbkZqR0FYUVhSbHFWZlU1QVhEaDhCcHMxTWlOZjJ4Y05mRHMva0pYcDJrT0Y0OVc3WG1wYVRxMGl0K2VMbjRjSk9KSnFyUWd6dmhrZW1rQm51QWZYOCt0Mm5Udnh6ZlMwb2c1QWRBRzFXcjFNbWtiRFlBRXdxQm9waURVT0tnaUFmZTJJSnZkMHRRcTNwdEphcVlHdnplQ3duVkFjVStsL25nN3ViRnRGSlAvWnMzV3N1NDIySnJBNE1zU216YXRmVmR2YjkvSGNvVzg3bi9YcXZYdGZrRXZxR0VnLzJoQTFkOVFxOWM2UW5PZ1BldlpiR0ZaTGxjcXpXNnpxRVV6ZXE4V0lXOGlrbGVmVFVYZTJ0SmVlcndaOVhucjI2ei8xejlyR2tBQzQ4ZU91S0VuditrbXkxT3VXcXU3bW5QL2M5K0RmLzBaSHh6aGN1dHhZYzJhTmUrYnY3RHZheEI4T2J1RjV3ZC8yZ0JnUy9tWm14SzBxNnNIYnE2dExyU0pMc3NtYllNZjk3cStUY3Zmb2xqVGxiVC8xLzl0a3dBWU93b0I4TjF2dUttcEtWZXAxVGlzWDl6NzROOWM2NE1qWEpaTGdPNmV6by9rczduYzFPU2tHb0QzOGtXUWhuU1hJeXE3Y3Rtb0lxcnF0bCs1VXVFQkNxOGw4T2RDYURhNDJIVFQ0VUx5YkJYM1ltZ21JQTRiY1JZVXE3eHZKaVdMMENyOEVsSTJUZG5wQ1BFYnFXV2VudkJqYmQyaWI0SUw4K0MydGZmODcvM3lUT0N5RkFEWlhIWnp1VXdtNW4zMkJFRVBncEVteERmaWZxbTM0NGYzN3RQcnF0ZEpYS2VCZFB5M1ZhZEhZYm1McEpBK1NhM2lrVnJGZlNNSTljTGdiRXUrN3Jtb0RRSzF5dXVOcHNZeVhHSnFxSHNyUnI1NEFwTTNrQ0Yyd0NobXMrT2I1VWdnaW5vNTRacHJybnk0V3ExL3VBYlY1MkxSMDlQcmlzVXVDSk84U1lWTEFuWUlET2JYMFBKdHZPY3doeGh0eG1IdnIvMGJESnoweUJrOWVnaExnTWVoMVVMVHJWYTVCMEQ4RXBZQi85MnNoc3R5dkYxNzNkVVBsYWNxZDl2Ni8rTFEzZDNqT2p0N1hhRlFra2J3K25GSk1ybTgwZEJFYjdzV202RkFiMVY1ZTM3bE4vSHJXZGtibzBjT3U5UGZlOXpWSWdHZ1U2Zi9aZStYUHYrckZzTndtUXFBcTc0OE5WWDV5T3Zwa2E2dWJqZHYzbnpYMGRHdDVVQXozcmp1VGd1Y1Mzd2RuOTBsTDMxRGhxODcveFpTOTVLWE9ZblhtZmtiV3JhQU5oZnAvR2UvM3NUSkVnQlBmU3NXQUdqUGVpYno5OUFBN3ZSUmhNdFRBRnpyQlVDRVdWWVQwUmd6QjdXL1dDeTVoUXVYUUFqMGEyUFEwTDZicDlNMkxHam1JVElieHAvbU1zS00xL0pCTTJRVG95SGlyTkkxRkhMR05ETkVtTlUxTHdJWE12aGJsbUdtenJnQU5PVWtqOW5sWC9nbi95SjVneHRVeHhMZ3NCdUNBS2hYeXE3TTUxbFFWc1E1c1BmQno2KzNlSVlMYVlNZkcyemJ2dVhMOC9zWGZHVHAwdVZ1Y25LaWlTbFMvUVk3bWlaeU1Jd3Z5amh4OG9SYnMzcTlXN1JvaVp1WWlOK25FQmc5bVdmci9KTmhoT1VkQVk2ME0rR0MxVnorTnhrUmFCSTJEZkZUU0hpMUNQV2VjVWo3T0RIU1RyaGFKbXFQYWFNcnNIMk1LS1RaOG9ZalhiVG02ODRVM2dweG10bkZid1JUNVQ3OXkrRGtOQ3VQUUFCUUEzRFZoQUNvdTdPbFVuM0pqZ2NlbVBMUkxrOEJzRzdEMm9jNlN4MTN6K3ZyczkxOGVxS0IrTmUreGdxTndOZFJMVnE4MU0zdlg2aGJoMkgzbk8zTW5WZmJPUTUrVEVtL3NDc2IvTkJCYW5qcjNFYmgwZHFNNHhFaFRJQVJoY2dldVJJQmFiVDJuajVkMmd1dVZuRVNaU1RrYXZBTGFCZG0vdEZQaEthWUxlS2s0ZHM2OFR0dGRHREdMQk9CYmFyVkFOOGJUWEdiRTBjK3M0Z2JvSkEyd1psZitBd0haU3FZR3NEcDczODdMUURnbjZ2bUZ1OSsrSE9uTEZab3Vjc002emFzZnFpajJIbDNYMTgvQkFEdjV4dURHay9PcnNwalkyUHUzUGtSUyt0YlZ2ZHc0ZVlmOHpYbVp2Njh4V2Y1Y3JEb2FvZ25JWkdEa1BEaEVoamVQNTh2eEhIZ3oxdUVmSnVkeGFXSnE4RFU5ZUFYM0RuRTVRVkNQTDV4S0p0QmVydW95cUFTd3NxbFRDdW9PdjRuYVkrdDZjRXNsN2NUUGpUbGwwU1Q5eXc0cUdXTWxwNVd4eG1CdEphOFZTWnBQN21hb3ZuVXJaSzNoSSt2M3hhWWRUNkdLSHF6cFFuMVQzNEt2K2wyR2VGSndLY2hBQ29WN1FGVU1VNlpRN1pTWDdYbmtiODlhckZtM1pvL1hsaTNEZ0tnSXhZQTVBWlZOSml6cVBiQXdJQ3JJaW4zQWpnSUNnVXdMSmlZVE04OHlZQmtNRElvaFlBRUFnbHB4Y2dnK29sNEFNSDc4OXJWR2g4elprd0lnSnpsdzdSVDVVbTlJMEI1TVNmR1FWRlo2b2dKY1QwS0F6dW9CSC9HWi82TW10QkFDS1pqT1ZqbWZEN3ZoWTJWZ1NiakZvc2RybGdvd3E0VDA4aXJFdFdOd2tzdGhuZ0U0NVZLSFNnZlNvUHJxUXp3cHhBeWdXWjFabnNRNFZwRXJER1lxVi8vazdTbmZ1MC9zcHN0dG51WGQ1dG5IQlRaNHBEWUM5Ymdqa0lUNFFrL3d1ZVY4bzBNV0x5ZDhDV0tJV2ZzMTJSTEdYRm9DcmgreXhEdjMvMUx2eEwxVWNEbzhhTVFBTitCQmxCeEZTOEEyQ3ZWZXVhT0ExLysvQk1XSy9UT05PQTc4Y3Jsc3IzM3JnV1dnazU2TS9FemUweTU5ZVBWOFJKVTdxYXlsTEJnNGRzaEoyczFoWld5MlhxWmxqSit3WkNOTUsrQ08zUm8vMy9HZ0x5dHIzKytHSXZWdFBiQmovMUhEU3B2SWJZUlI0OGRsUURvN09qeVBqNnRvbVZjRGdNK2w4MjdLbFFzTW1GSXJ2ZktodHlqUVdocERiUmtYQW1NVnlwMWdVbHlpbDlGUjQyUGo3ano1NGZkeE1TNG1Kd1hDOGtZaHd6THQrRFNYMi9EOVV4TlpxV2JHa0VZRkV4SDRVTFVVQkV5SllzVGhJUUVHUWFHdEJqODVjbnNZT0J5QlcxTHZ3UXhNOGJsdGJpYnpIRG1FUWtoZVNGL0xyZmdadndDMm9ldlMyVHoxK3E4anNYTjY5MmpxSE5JQXd2ZEVOaTZmZ1hYWjc0VVFoUmFRWXN4d1lKRUtDdUZFUDE1Z2pNSUcrWkJQK1pCdnhxRUxFMFRkQlJ1aWZxa0VOeWhwUU1RMTl0aXk0V2lPZUdGNWRrK1VqSmszaS8vWC9oTmwzL3N4SEUzOUlNZ0FDcGFBbkNZVnQwc0JjRFAvZHduLy8zcFV3TS9uOHRsZW91bDRrSzBIUC9WaVh3empyM05oaDQrZ2Jlby8vRmpEWStDTnRRaGZVRkc5bGFBMW1SMHJxblpzZXg4RG1hYkhSczdNYzZBTmc3d1BhL3RjV1BqNDY2ZkdnRGlXb3lFRUpnRllnSEFOMGtuMG9DbnlKWVVBR1M2S3RaWGlhSGlLK0RkeVhMYXhUMnlMUVJBRlFMZ2ZDUUFPSUFGWkpITW45ZG0rK2J5T1RHWUJqMkZBUEtobG1LemJsU0NGbUFPYlpBTWdOMldLNllaV0p0YkJQYUp0QkQyaGIrU3hUVnRRd0pIL21CdUxWbUNsZ1EvaERNa2xMTUtGWlZwakZudGV1eHZDa1RXTXpDK2pUdHJFMTFWNVRGb2ZDVGlzcGhxSitSSGdhTTJSdjVNeHo2anRzTDJMMEM3WTEyUVZQa244MnlQbWVQTUtodkJJa2JSWjUwdWpkNS95dHVBeWM2REFEZ0pBUkJwQUJjaEFQN1BmL0VyRDU4WkhQcHdaMmZSZFhYYTY5UkRRMFZvbXpxTitEYWFRUU1ZRFQ4ZFVsbTNkNlFRUXA1NitpazNORHpzK3FFQmNOQlprY2s0WnM0R1I0OGVRY1BWTk5zb1RTSVpHWTREaXdPSmcwNGRGOExSMEVtblJrTm9zOGhPRGFDemhRQ2dCakRrQlFCbk5zUm5ab29SOHZRQ0FPMG5BY0FQVDlDTmZEaGphb1pYSEVtcUNKRTFsR1U2TkVVSkhtYnlONHJTRlBkQ3dKSUdXeHNnUVBzZEtIZkVXUFNqMEFNenMyVWlEUXhHem1zOW1xVEE5QUZzTHpJNDI1bW40NmFtSmlIZ0dRY0NIT25aejMxOUM2U0p3RU5wd3VXbVIvdFlVWGxuaEVYVTc2elRHSEpMbHJtdWozMEM5VSszSUpjQXc4ODg2UVVBbGdDb0kydlZLQUNzdFZxZ0E0T3p1NnNiWmljYXBVUEVSdUthT0tMQzdLaXJzeXRGbkZXNW5weU9PTGdqeXBOS25vSzdtZktleUtER01rU3d4ZVpzWUxFeFFKRlh2TFkyeGdvRGtwUUNralRsempqMERLTWhHaFZOTVM4S3lnVjVVbU9ncEs5Z1JyV0I3UVVUa0NybFJWMldpVWhlS0lHQ0Q2c1RLUFpNMExSZ1BoYXg3Ujh5NXA2SlpyRmFvS3FXS3J6Rnl3ZSt5anpzd29lN1lFN0FqMVN1VEZsN2VKb0V3L05oTUtibE8vTktuZDJ1cTd2WHpadTMwQzFZdU5SMXdEMDBQT2dPSGQ0TElYd2U4V3dad3JacjZPVUdoQmlOaEY4WVRhU1FSdEFYNDRsL2lOU2VRajdlanJGWnV1Tk90WkgybnlMQ1pISnF3RFFtZFF6UnVrT21FUUFkOWE3T0h0ZlQwK05LV0FkM3pKcTZYU2NhTXlLNms1VHdZMXcydk15TG9CS3BST3BLa2RSVzFEV3FicklOQkZxUzFBTHdaa056aHoxTlpINGo5aHM3UWd2L0JxVGFYVkJFVCtsQStoalMrYVJkQ2NRSkVNa1loZXRtQ2dGcURtWWE4ekNUcGx6cGtmYThDSVJNWXJLL3RHL2FjYWxnbWNWWHZCaFlvU2dRdVBsS2syT3hkOTU4TEI5SHNRUTg1RTZjUENyaHdmWTJ4cHNsSVdld2FPb3YrREpDVS94QWNhdzJsTXd0NHdwWFgrK3k4eGVpR3FpTEJEN051cHVDQUR1L2Y3ZXJRVWhTQ0dRUkJ2MEpxWnJiaW5tMXhPLzhoOTkvYVBUczJOMnJWeTF6aXhicDgyY2V1SFFxVlpzc0VLbHQ1aWsweDByN3dEVnRSczJCZi9vWGYrTDI3TjNsNXZjdk1DWkFIQ3Z6dEJsNVdCd3VBZGhzWFJnVUFaWVRDTXl2YjdsQjVhNWhnSVJyTUVJMElHR2tydFp3YVM0QnFHVmxzdHprcW1PZ05ld0JvTk9ZcjhtV2VKaXpWYW1SVU1qWkhrQllTdFZ0MXg0VlpSaUpkeDBpUWVWakdSb0tFeEM4MndRYnB1dFhoc1Fsalg5YklFU0YyVFpPQ3pDSnRUZlNjWXo1d2RpeVZCZVNjUU8wUndFaGV2NzhHUzBOdUo4VXJqczk0amh0WXpjRW1ITTJlY2ZJUUJ2dnVQOFhZTnBuQWdPb0FRejg2UHR1N05BK2pCMk1ZSTRoNU0yaVk2UldhcTZ3Y2QvRER4enkwZHMzMFIvL3lmOTRhUGprK2J2dnVlOHV0LzJLYmQ2M0ZWNUhLNzl1dEdnMGVQM2laejd0dnZ2ZEo5MzgrUXN1ZmhQdzZGRmtsWkhHRWlNZWNCSUFXSVBXb0pKR0E2T3Vwalk3QVd0MHRZYkxTZ0JBWThwa0xsNEFjS25FY2hnUVYwc1YzdXBqMlV3STZHNENMNTY2ZmtOaFBHWVJCV0FKWkZ3RW1oTTEra3lYTGR2QU5CMWJvM1BmUTR4NmdRV2FmVXdUQktPajUzU3R4WXVYWXFscGR5WGFJZEg3MHprYVhFQ1R4L1FvM0hDVHkxOS9rM2ZGR05QM0FCNTNtV3JabUIvdFJlNG5IMEFjL09tZVJ4NzhQM3hVb2UwU0lEeWpQVEl5cmgzbjlwUjlDNmxGZVFxWUJWR3I1RXg4Y1FnNWNMaUFFck5OQ3NuOHdhMmVQYncvZnp4UlNKQWltTjFVcy9aZ2FJalJlUFVvSmZLbHNBaGsxMEZzYjVXL1h4TEVGTUppUWhRank3STFNV3k2Y0ZBY0tSRExZdVVSelFqVzFCUGJQQWd4SU1vL0FsdWNhL1hFbisrclpnb2FVVE8xQzJON2RIWE5rekRsc21Ca3hBNkg0VitFeTZVUXZFVDRpY25LRUR6azFoK2NUWEZub0k0T2w3dnlPcVJLZzdkcWgzZStxSTAvTXI4MWxobW94OG5xWklIM0MxTkFkcTN4aDMvNFJ3L3RmSG5uM1IvNzZYdmM3WGZjSWo4TkhMUEl6cDZRQ2RMVFJvM0VRZWZqa0poWWRnd3hjek9QZ0xnb2FoWTVyWUZZYS8zUjlLMFEzR2EzdUFHLyt1dS82cjcvL2UrNytRdXdCR0FQK3ZpRTBzd0N1ZzFZcmJ2dW5ubHloL1FCa1FZUWxnQWhtTlh5cHY5cFNBbWdERHlBMDFucTFzQmlySlFHTUdsM0FVS2J4Zm40T2tSTEFONVR6MXM4eE5FU0FIODA3ZllYQnJFU3dMZXpDMUVRRDlxRjkvUUV2MVp0QXE4bVh4OHZLb2QrV3lBS2FJN1I2Qk5IVFlaWWZTTjRwMFlPNmhCMi9hWGhjSm1qME1hY1p3RWtpZEtHNUEyWGpvdkZ1eEJWTnpweVZnK0ljVWt3ZTNEOGUrczBVSlFvWHZzRStSdmU1ZkxYM2VoZE1jNGQyT3RPUC9jMDF2eTIrY2ZabjJQRGVEUHppVDFmZWZCelBtcUVxSHFOK0RlZi9YY1BQZlAwVTNmL3pQMzN1cXV1dWxJWnpZNXdVVEkrN0MyRmdzZ1Bia2h1T3o5dko5UzR3U2FUblpweVcwZEw1Y3ZGYnFVRGFhZWVmNnBOeHYzVzcvdy83dG5uZnVRV1lBbGcxNG5EK0IvREhDa3ZEd3FBQ2xaTVBiMTljamZHbEFDQUNzNDZnZ3N0Q05aVXQrbmFDRUw1WEtYczZsUCtHUXdVcGxpQUFNQVNJSnZscmF6cEJRRERxU2xFak5jZ0FPU0hQSFVhajIwRHU3V2hXc1ZsMFE3NUs2K1J2WHJvZ0t0UFRxZ01tdkYwMjh6bmkzclUrU20wNFNHVk4xVWJ4dmZ4Q05veTNUMHVFeGlCMThLMWZXRU5MRC9TQ2FoZjlkZ1JzeXRieTF0NTZ0L2lXWDhaV1F3UE9EUnhlRHRoTTdhbGJSVHNGaStLNkhPUG9mWkNtWG5iTU85dkhSTEpNUnNENlRYR0VJNStPVFUwNEJiT1greDZlL25leURaSUpFL21sQVpDN0gvMndCS2s5UEZQT2F3ZnZZZWhPam5samo3K3FLdU5uWGNabE5FMGdKcS8vMTkvOUxXdmZKbmZCN1MxVXdKeHpSc1FHb0VITXJpVE9IdkNSVkVBa3UxSUp5a1JCOVFjM2tCVytJU2JKc29GaWt5V0UyRVVLdEhPdDVvVWRtOGo1QzFMa3ZERDlCRkZYb2JHVVpNQ0J0Q21MUzYzYW8zTExsc1JVVTYwM015bHkxMTI4UktYWGJrYXRFYXBsTFV1WU9Vem1Mc2RyQmp0QzJNTVlJSXhYaGNiVTBoWTlKb0txMEhjQlUyQWdtaHEwdFVuSmx4OVpOUmhXblBRYlYzOXpMQno0Mk91dU8wS0xLZDRPNVdiaWtqRHZIa0hoTUpHak1aOGNhMVZhMTE5Zk56Vno1NkIwRGpqM1BDd2hFZDlhTmpWaGs0Ym5UN2xxZ01uMVVlNVpTdVJuTUl5V1JmVU85SGc3QWZyYitzVDgwVjgvTXZGSHlzQ3d2MjQ0RjBQVFNxd2V6L2VDdE5Fby93dFRIMXN1UUE4SHAxMUhjV2M2KzRzaXJwS0JkY0pkNm1RZFNXRUZUMlZzS3pzS0lMeFFEUVhMMWpvVHAwKzZjYkdKMVMybG4rKy9WbFhieGpoeW9IMHEvQkFjcWJpTkZKdTdjWW01aWZPSGR6cmF1T2pYSVVxSHV1SEppUi9qTmNybVYrQ1J4UHpFMjBGUU5pRUlzTnliUkVSR3p1aTBBRnRTTXllcE1ZNDdmT1FGaUVUYmwrV01DaENaNHNVbmd6ekhVeURkam05WDJTMmd4S2xyVzJTNUZhc2REVXdUQlZxVjNXL0o5Z3JCMTREd1lTN2NuQ2ZxeDQraUR4czJHVVhMYmJFUURwYjY3SlpZWnFvR0VJYVFJSXZPL1VHMTkzcktpZU91Zkx4bzI1cXo2dXVNblFLZE5wVmhrKzc2bG5VQVF4TXFwdzc2NnJuWUQ4MTZMSkxsbHA2bHAzdHlJeGhoTDUzRUd4S056VG9xaVBuWEUwRUlUSTY2bW9RS0xUVFgyRmpJN3AyWnY1OE5Kd3RXVUkvQnRJMVdHVHZIekVzU1NFRzJma0RDdUdwU1NJeFh2U24vQk41SXB5cVBDeW9FazhxOGhDVkVkMCtZNW5VdXV3MEtvVWcyOWZjUFJDaWl5QUVUcDQ4NWlZaFRDUEdiVWZKUDNpWVlFaUdCL0syS0tDWmNsdXZqR0lINHNuTDBTTUhOZXV6akN5LzZreTd5L3oyM3E5OTZUQXNMZEZlQTZENEFKSXp1c2pQM2thTkRONUE3SXlMb25TSDJveHZIUmpjMGV4UG90dFhPcFNiYmdQOGdpMVlaZ1Fha3J1OVZPMGpzTEU5b0hwbk1LdldCZ2U4Unl2WXhiSjhIcUZjZHRXRCsxMW0wUktwY01saXBJc1VycEc0VmdKdGl4OUZqK3NxT3lxY1diallWVTRQdXFsZE8xeDU5MDZVaFM5TFJTamJLa2srUHFsQ1psMndTUFZNZ296UGNGZUVkc0E3TEJBcVVYb1JKeGxmbUtRL1M0VzBGU3cvY212V0tvd01HY1h4L1pja3l5WVJabG42bnhpS3kvQm9ySGhTQ2taZ01LOWxjZlZITzRKNENUSzBvdEV6S3JxbHAvWmtkMVBBSmd3bUEwb3J5cmplN203WDI5UHJUa0FJY0x3R3hvNUltWmtKWjRvWTVFUHNUd0hlUDBubUZWRVcxOHdzWHdWYkdsTVE0aFVJYm9IMThIVkVzUTY1MnVUL2F3R3RNWTBHd0l3Z0FOQnhqWXdkYXdNeGsxNHNwWVFFR1J6WGxTay9NajdKKy92QllIRmdaeGhOdVgzSHM3TTk0TzB0MFErYnh2OEZuOWJJY2QyOEdvTzFCWEpRNmJtZTFUcHJPa0IxemkxZjZTcVF6bFJKbVNhM052VkNsZ1JDaWRqVkY0ZFFtcEFUZEhhWHdVeGVQWEZjYlVSUE05bG1qQURRalB6TkpKWDN2K2F5YTlZcENwY0E5TlBNRDVOMXFoMDlES3N4RnYzNHB6N0FId2MxVGZtTGxJMnJuVDlIanVPMmVwek9wNlZwTU5QUytUQzU3U2Y5Uno4TEMrT0E5dGpmL0F5V0l2S1RQeG5YNHRtWVl4MHRQdmVXOU1BVnl3dVFTVzFweFVtUnI0K3Z1SGs5WFR3dzU0YXc3QWxNR2hGK1lqSW1GNk1qdERHY0h2Uk4vNlhqa0xMcm1sN3FLNHdjT1JUUC9nQ3J3R1BoLyt5bmY2YnY5My9sWHovejRLTlBmdTIvL2RuZi9EYUNtRzBLYlFVQW1ZbmdaN0ZqMWQ4WU05WUdHb1ZESXN4VFV4cFB3Yjh0aFU3aG9JSmRFbDZkWkV4dXpFL1R4NEhiT3BLbWlnN0FIbXlSSlJCK0ZOZmlwd2pCVmF4ZE5kTTFyTGN5a1ByVUR1cm5NSmdid1lRUndDaExsN2tLdFFTMGpYeWdZcU9BTGp1dnJ5SHU2MEZEbnlieXphN2I0Q3I3WG9PZmVjYXQ0ZEhrOUI3TWNnenJTYlJ0Wmw2L1JoOEZHTnZaZFhXN091cGZPNHU2ZURCVjZDT3R2ZW1ELzhDVXZMNU1nSnVRK2ZXYmxNcmEzc0lKcHFQTnZJSTlqa05EVUFESlVxaGNJUXhndk9qYVFLcUY0R1Y1V3hoL1VXcWxvVCtabE16RCsvMTZyZ0NKQXdOeWpPc2JFakF0WHNIMXordDFJNlBuM1JRMHE0akpQWmxiV1VSbHNDQWY1bjBWTHYvZ2lId2pVdngxelovMzQybS84ZU9IRVVNVkVMRWU5Nzd2Zys3Mm0rN29XNzE2MDlVclY2MjdzMURzK0hmLy9GOStOblVHZ0dnckFOZ296Q3ljTFc5UytjbDRUZVExZ3dRRndkQVl0M1Y2U3VEWWJRUEsrN0ZpZ2NucEZ3bUJoTCszVzdmeWwzVXdteUdZamFCL29HQ3RZN0FleEl5OXdYdlJFeXJnaWxWWTEwY0hxWnJoczNEY2tWKzR5TlZPeGNzRUJsV1BIbkxaRmFzNXhYaWZRRVRTM2d5Tml3WTAreUU5L2pQOHNoSGJZK1E4bkhHZXRNdWxhUEZmQ3Q1WlByRFg1VmF2azFQOUFVc1dXaEgzT2l5RGtOYUlmYUpsZ3VJeW5GR3NYeGhYZzNSeTB0WE9ZTWJFRW9PcEZFZUdYT1lRckdaTUw1SUxpQ3crbmM5YkxpWHhkZytWTUJIRjRQTVVVWGh3TDRBemZnNk1UK0lUZzl6NHRHNGlpZm41Y2cwUTI0SjNvd3FGdk91R050UFYyZUZPRDUrMjY0UEV6R1lGR2ZQU00ra3Z5TnVIZTk5Zzgwa2kwbmhhc3B4UlVoZy9OZWhxNDJPcUE3VUF0dlVhaks5UGZQUisxOWUvd1BYUFgrajY1aTl5aTVlc2NJVlM4UTkrL2JPL2c4RVhvNzBHUUFhRGFjeFBoZ2REa3hFREpaaDc1aG1kd2dCbWtsckdDNFNPOGFZR0ZUdktNN3ZDNlBhVlRkbDltTFVZZTEwMWdSOU50ZEVzd0VoSWc3L2F4TGlyWXliTW9pR0pMTThWd0szYmFETWdEOEZSZ1JyZGhLa3BWOE9hUE5kaUxSZkEwZ2RxRDZzTXkya1dLM2RBYnQxNlZ6bDhJUGJ4bGloUFdEZzRJOFJKWVdXYmdkQy9sV09IblZ1eVRQMmR3V0NxUWQydFRhSU9ET2MxWmRJd2V5UUVOSDU4UHI1ZnJPOHdYcmdVV29uNmU1VTZoZ29WcGNNUGJDRWtHWkcrSWNTN0dEZkV4NCtsOTNiK1JlR0tZV0hlVGdia3JWT0c4MkVqVG44aGpMQXhhVm9jNDFJejBOMFcyRG5VK3FIUmpZK1B1Z20wQzh1cFAxYUZSZmJGTml2OUxVQ0c5eWZNMjhManZ6aE9oaHZJak5TQU1Vd29GS3drbHArdC92RVAzK2Y2KzNwZFoxZkpxTFBrdXJ1NzNaTEZ5M29yRTVQL3QwOHF0QlVBYWdNYWdTbko2SUhwZzU5dkdCTUdKZ2phQ3dNS2tBWWhraUlPRUxOemtJalpOWmhRTWZwelFJVXdIMThkeW5UZVZBUFFyazV2aFBrZ3RFVllNMExlMWVOSE1XT3YxSVpZZHRseXpPQnROMVNWYjdhdjMyVVhMMU01S1N3YXdUalVDakxvRU1lWFlKaTN5cHdFKzlydTUyZGNxVlRTc2ViKytYeE5lUWZTK0ZRaFRTS3R5b0NsQjY4Um5Uc2dvaVRKUVJRbkRLMGlrMVlOeHF5ckRaMXltZjc1V2s2UWFka2Vha08xYzJodmtpVXp1eDg4aExLTjQ0c29XS2hkcmVLdFVVVVFFQktpS3g3N0dCYVhRZHZuZVgzVUt5REVNd3NOTXJDaXc4N3JvSjFEbUk1b1d4Z3RzUnQxaE1XZW1VQzdoRGFuWFZGWkJveFozZzc4aVhlNGpsdHZkMTB3QzUzb04vUUw4K040ejBOcjRDUHoyZ3RnTnNxS2VmQ1g3V2grOHZLR3duMUFJc2dRUEVKQzBqSUl6TWpmaU11dFNXaFRBZ3JEVnUrQjVuZlhiYmRnelBDRk9rWmN4UlpMQmF6ZWVsRHU3S2YvNVcvOWdjMW9RSEtiTzRXYjNuWHpKd1pPbnRpeWZ0MGFxQTlRWlhHQnFBTTlBNmI4SWdZMS8wQnhlSUw0QjlNUWFtUlFSNWpOLzlIcWJkNDBTZWxUQlJOUWp2ajU3dmVlZE1lUEh3ZC9vZWJzWkI4eHpqc0o3NWMyM0huZXZrSWRTd1cwSUR0NTB4WXcxYUR1bld0ekRXcGlGbFJubmhnTUdaN0xoNVRPYjd2Q1phbjZENTZVK2gzbkdJTSsyZktVSzNGVFozaFlmaHhvZXNSMWFnTEN0T3dXTHBqdjNuSERPOTBkdDcvSHZmTWRON29ycnJqS1hRbTY5dHJyM2RYWFhBdHB2bFQxNGFPckJPMjYxdzgxTnJkbW5hc2VQQUJmc0FVdVp0VnVMZ2NEMUpZTVE3dlYvVkZtTWo3ZmRrU1QvcGxWcTNXWUtJT0JqdEd1T3hzNWFBTzhFNURwbXc4QnNVQmFrbWpoWXJzU3RDZHI3OURQVmtaakhJeU44WEVKbEd4UHI2VkRYc29UQWpUVFQ0TFFJU0cvd29aTkxyOW9DWllOMEVCT1E3RHhqVkRvVjRKalNSY0VzZXpoYWdxbEgvVjNJQXczalQzV0UyVXBGTURZeGJ3clVyaFRHOEVZWnBVWnhuaGhNc3NzWCtseWl4Y3JUaDVNVkZpNHhPVlFsc3dpTEdOUTdocmJvN2ZQbllObTA5c3pMOW80Tk1UMWI0M1poV2V2dmNFNWZ5Z3RvSXF4ZUc3UERsaWd0YkJOVWRZUHZlY24zWjIzM0tnYldFazZQVGpzVHA0NDZVWkh6aGN5MWNrZDMvdk80eTh3ajdZYUFLcHVKaHRCYW51cm1iL0ZySys0c1R1ZEprMFdsdFlLa3ZzRlVkcUVYNUtTZVNmdEVScmFWb09sQ2ZRRGNZUUVBd1IyQWw4YkEvQkFDMmV0TERvZ0IyWVFyY0RnQldrUVk4MlZYYnBjZ3hhang3S05icUVoZ3hhb2o0MkpXY2xRWVhEU3dsZVMzM0g3ZTkxOTk5MFBwcjlTNzJTSVlSSDVFTkQ2OVJ2YysrLzhnUHZvUis5ekN6a1FGY2JDb3Y0OEM5NEJ3VVVmZUNsL2J3WWhiR0Ztai80U2RqR3Jad1FKZC96VnVBWStjdGhWamg3UitRWnU2UEhXWHVYUWZsY21IUVR0ZTAwYVNNYS80b3Q1eExEckNtUVNDS3dLOHp0eXlGV1BISEUxTUJBMUxKTFplUjBzWXlEa2xKTGxwc1V6djlvNmxUOUJJUVo0NzFCWFJRdFJtUTM4VFl0a0dHZDlGTWNUSXdTTlUrTUp4RGk4SlVqVnZ3YTF1N3p6SlRmMXlvdHVhc2RMcnJwN2g4c2NPYUM3Qm53VGxSVlRCV1ZtZ29vUk8rTnc3eGNIMFM5SjVsWHR0aVBwVmdtak1zWVF4NlVWMlhLODg1WjMwOVVFWnNVNjhJVW5VK1hLZTczM05Fc0FYNERBVkNJdkJHSm1NeUZBZThvdnNzK0NsSjc1QmdIRDVVUWdlNXVKWHVxQXdkZU91REVqZTluc1ZKbGpXQ2VyZVZRbDJxeXhTR2tFWDFCb1p3R3p3YjQ5Y01NOHNNK0loM3d3NEZPMGE2ZXI3dDBqeHFoaVlMY0RyMEJ0b1hiMmpEOXlhNTdkUFQzdW94KzUxMjNlc2szWFpybWxSVm1NeUV4aXlkS2w3a01mK29oYnZkcE9HaExhdk9SR0l4T0FRcDJaSVhlNCsvcjZzQzYwdHp3cGpFRnlBYkJZdFcybWxsYUgyWndIbTJyYy80RG13ajBRenNMODZJU0lkaEMvUWtNMzYwNGh5UUczQURQbHVuWHIzZkxsS3lEYzRuN2hyZFFLaEVpZEp4SkpmQ0VxbGl6S1AwRjgvMk5sejZ2R2FMd3pRNkZNb0pCazZsQldRNmlGMVpVVWxvYjhvNy9TOEljdUgwY3UybjI2U0pzRjZmWWFoVEFQUjNIdmc4THA5S0RHS1ZYd0RDWktsb2dQb2hWQmZCbUo4dkh3bC9Dd2NxZ3M5UFArY2JEM3B6VkpmSFVaNzhaRTlUU1V6NTlWK1JpTHYremJtN1p2ZEwyWWV4cXBzNFRKaG5Fd01hRmUwVWFnK2JiQWpUZmU5SW5CZ1pOYlZxOWU2Ull2VGl3QjJEQXdZL1hlM0xNakZEWGhEcEF0ZGpaQWlhSTRac2JYRDNzQkVpYSs0M2EvdHR1OWhwbUk5MmpWYVBxM3hndWRQeE5HTU92VXFsZ0NLQThBQTV1SGZ5Q1ZkSXlXQTVFcW9RWVkva3o5eEIvVWZqRTJ5dVF2NlVFSFM0K1lmSnZTbWcwdXkvdTNma0JUVlgzZmUzL1M5YzZiQjBISXA3bVloV3JySVErVlgzVUFoVWQrMmZGcklBRDQvTUlrbHloZ21uQkduOHhMY0EvaEZxeGhid1ZwR1hIMU5XN0w1cTFxczZGaGFEZ3dsVC9Ld2VjVE5OTnhRNHpMR2VUQnV4ZGtWSjRRckovRndPUHNqbnpaRHlxYS9XQUdSWG9JNGI3RlM5d0g3bmlQdS9HZE43dU5HemU3TFZ1M2FlbkNoNVJPUUtQS1lBbFRQWEpRWlNQWWx0YWVmandsOHVPMWFwanRxbGp2Y2krQSt4SUlzbllnV0c3ZjJON0hsMG5ORlBtRk9EU1lsczhDY0FuQU5ieU5ZMDVBWHZYSHhNUnlaQ0hBc3RDNDZseFNuVGltT3hnc0k4ZWJTc242TTB2a1I3OXhDTEY1SENlRUJRRm1hWERHYnRyc3Z6WEEvTm50MTNoSGpKSEQwTGpRZDd4ZHkzSXZ3ekxsNSsrOTEzRzdFa1BYVlFLaGEwK2NISFpIb0dWTlFVQ05qWjJmZXZwN1Qvd3g4MmlyQVNBL0ZZZ1pjK2FQWm14U28wcmVwQVdrS2VXdlJvN0pHanRvQUkyelAyZDJhZ0IyOE1LSUh6cUlaM3RwQUp3bDZBK1Q2MmptR3hBR2treTZPYmpha3RVNUprc1RQSGo3TDd0bVBhd1lRUXJ5TWZBamswQW1ZY0MxQXplL3FOb3lsY1d0dTZ1dXVrYXp1VEVpdkRSeU0yN3cxSUQ3em5lKzVmNzI3ejd2UHYvQVg3dEhIMzNZSGVadFNCWFdFMEN0NTZhYmJtWkNKTWNnNXFrN0xGSEFWZG92dU9lZWo3bFZtSlZmZWVWbDk4UVRqK3Q5Q2VOZzdOdHV2Y085Rit2R0lGU1lYcWZkV0RJSUdLNjdlWkJJWVJCczJjNHVQVS9BbVBUelNRVExnbjRaZHlzWXZnZkM3TysvOFRYMzE1LzdYKzdCTC82ZDIvWHFxKzc2NjMvQzlWNTFyYXRRbzJMUnJmZ3B5TXY3aDdabWVhZ1IxTTZkbGZiRVMxSUVoZXVGYTBlUU8xamtZMW1HS0dnM2pqMk9MWTRabWh5Yjh1T0hOT2hHTkQ3ZlVlZkpTUHl4WFUzRDVST2dOdGxJWVBqeHordWJCbXZDMUs1b1kwVFhqaXpCOEI3MjN4NThid1NNVUhRQitaZlBuMU9wbUpwLzYxWXNjMTJZMGp2QjFSMmdvamM3NFFjUmlpVE5WMm1yQVdBd2ZlTFU0TUNXVmF1V3U4V0xGbHBsa1VFejA4eVdXT2EwWHdvTTUwOWtOMU8rRFdsb3Fpd1VUcjRUckdPc0kzYnMyT0gyNzk4Zno5NUExSGl3cEJxeXdSVXd3cGtjL1poNktTZzlZTWxBVmRkQkdjeE1NY09DbW9DQUJuOCttSlBwZ3ZwOTZwVGpHMzA0YUhoYjZmYmIzNFA2Vk56VTFJUUVINnU2Wjg4dTk3V3ZQK1pPRHB4MDQxaGI4bXRGNTlIcGUxL2I0MFpHUjl6NjlSdXhqRFptNVdEdjcxL2dUcHc0WVJ1REtGZUdMeTd0N1hNZnVPMDJWNExXOGRCREQ3cTlXS0tjaGlvOU9EamdkdTkrMWZYMjlyck5tN1pBNHhtQnNCbUV5cjdJYmRxdzFaMDVjOFp0dkFaYXdySmxibWwvbnhzZEhkV0xOTW1BK1kxYlhBWXo0Ylp0MjdWUHNYYnRPdTFWRFBOQklCUzh1N3ZYM2Z5dWQ3dmRKMCs0SGNlUHVhblRRMGgvSG9Mcm9EcytOdTZHb1VGUWpYNFBCTThwbEdYWjB1WHVscHR2ZFZkZWVZMmJCNkV4UERTazkvY1IzTy9nQnVpTjc3eEpHc1NxK2ZPaGhTeDNROGlMNnUrS2xTdmRkZEJvQnRHZTFHNm9jV3pkc2wwTWZKcWFScUw5a3dLQ05qb0wxQUlLMUhqZzRMaENIN1B0cVkwVXVLK0RmTkNnaW12anpoZ3BqRUhGMXhpMS9DZW55bXBybmlYZ3NCQWlTN0NtUFJLdUJHTGYrcEpsTHJlT2g2ZDh1ZW1INjU3YnN4UExNWDVMd25qelBlOThoN3ZqaHVzVmoyQU9JVDQxZ01OSGp1azlpdWlMVXpOcUFOMDlmT2NlUHdKaFROV0syczM0YlFtTkY3dXQ4VWpNUitjTUlEbDFPeEdOSG9nenZMU0J4R3dmaUlNa21QeDhWekNaRjJFZG85K28wMExIeFc1MmFDUEJYemtFc0pmb2c3U0RKKzJoSG5Sd1FDbzJXMXRJNTJCdU1QdTZqYTRDZFpKcGVCM215MWV1MWVzVlBRYk11dEwvRkdaK3p0U3NzK1dFakpVM2YrcHU5NjVYTVp1L1JBKzV3OVhXOEt5OWQ5Vk9Ibk9yMTYvWE92eTU1MzhFQnVVZEJ5dWdCalRNNzMzL3Uycm5UWnMyd3k4clpyejk5anZjaHovOEVYZkRsbTF1VVdlbnUrYWE2OXhQZit3ZnVmbmM1RVFiNTBiT3VYdCsrdU9ZSk42dHNqTEhkOTM4YnZjaHBPR3loSUtDTCtGY0EyWmVpZXRuSWZDNFZPR20zK2w4d1ZXUEhaYmdvdUQ1cVE5KzJOMkJwY0lvdjhRRTRYTFZsVmU3ajN6a1h0Zko5eGNBNzN2Zit5Vk1xSzBjUXJ2eGhiTHYyYkRlcmR0MkJhNWRjMzN6K3R6MjdWZWlmUGVEOFRyY2dRUDd0Yi94M3ZlKzMyMVl2MEZNU2RKajR5eXBtcHh0YjlvdDM1YkxYZnRTc2FqMU1RVU9EL1owOXZTNlRqN0ZPWERDbGlZb2kxcFpGdGlRam5sNHAzNTR5N1lUUE1PNjA4c0NhU0dZT3VIaHJWR3dRSTlBNWlUbFVodkJCako5SFdQRnUvUy9hWFhxakkvdmFRUDdPNERaQnJRVkFKbHNUcm5HRE50TXBnS0IwQkdOWVVtS1orcWtYOXBOU2kwQnBQcUQ2UlBNVHpVL1V2VlRRc0NZbjIrRzFTemxCWURhQlkyWkluYWN5ak1kQlJXdUJWQlhxZGVOWi9wRGRMVmFBZ24vSE5icFRBdEo1ejNwelJtejB3NlNqR09kaTdvejdzNVhkMGd0VGVVRkpEdlZCRUF5UmwwenVuend3L3JPaDhRbkF3d09Ec1p0b0xoRTNmSERwNXdwK1JVbGU1eVlyem5EN0lKQi8va0gvODQ5K0tVdnVHOTg4K3ZhWjlpOGVhdWE1UVlzSmViMzlia0hIL29pbGlmZkZqMzZsWWZkeWhVcnNaUzVXblg0N25lL28yWEpYVmdLZlBMam53QlQzK2V1d1N5Znc3WFFpU29meHczdmVuQnA4NTBubjNEZmZ1SmI3dEhISGtFZDVtbXB3TXBTcS9qNjMzL1ZQZjZ0YjdnZi92QUg3dUdISDhRTU51S3V3SkpKeDVKOVRaNS8vbG4zMkZjZmNUOTQ1dnZ1a2E4OEpMK3RXN2ZMSk9PejFsSDlFOFRKaDIxSzVzMXoxa2M5dFIreGJMbXJIRC9pRzV5TjZTZUd5S1NmNWMzNEZIdzhHcXd6QlNBckdIOFFWMzhlNWhWWlk4QmwvMDJVYWJqOVoxQ0lMeC9xQjNNUk5MVjJvSUlUZ1VrOTJncUFRcUdnMGNlS0pwbDBaa0w4bEVEdzZSdjlJamRuZmlPdHBXU1NNUE56TFVaQlFPYjNncUNzdFQrWjN4aGZ6QS9HanpRQmtKZ0lpRHZLekdUbnpVUUNHbzIyaUpnVlREM1VRbUNtVVZ5bVlZaE13bjVsQk9LdU81WVRmSVE0QkFkMFlVMnQ5Z2psdzkrNXBtY05rbnNMWmhzZEdWRWJLanQvN1RCemhwS0VOSFJGS3JDQ2FMZlprZGZVQU03WmR3WFlUaFF1RlFna3h1S2V3d1JVVFg1c2xWaUptWEVJUzRZVkVBamJ3R1JrTkc0eWN1MjhBbUhNZDkvZXZlNXpXUHQvNjF2ZmRLOGQzTzhXTEYzbWJvV3EvaUZvQ3JZNUM2QWNlL2UrQnJVVTZqN0xCT0w1RFM0L0ZtSXBrZ1ZEL1JDYXkzblVrNXJCdTk5OUs1WU43MGRaTVZOakxPUWhoTVZzdU42eFk4ZVVKZk9nSmtGVmx5OU1rUmZieHJlcnFpN1F6N1FBRXNjWlBUaDJ5bWlUV25lM3EzS3pFWDVSMzdDdC9YaTIvSEJsUGpBRW9aSER0ZkxjTEVUNzJjYXVoVWZYU3poaWE3QlpXY3l2R1hYMFRUT3M3d2hMbDNGcmxqY2ZGWjRKYlFVQTFweDVaaHd6YllMWUlKSGJNemlvMWF3dXY0YjRIR0RCVHRPV0FIU0Q0Uk5hUUtRQmlQbkI5RUVMNE95ZjBnUk1DQVJpbmdTN1FNM0x6cnBBQ3JCT2J5YmU5ODZzV2VmcWZMS3RwMGR2eDVFSkpva09zWGppd1JZK0FGTkZHaUZ3cFlkdEdzRVNYMVl6bzlEZ3I3USt2WFlrTk5ob01RT0ZOd0k0UHJpWHdiQkZQTTNvL2N4aWRsNW5JWllJRkt4VWsxazNwdWZaQjE2WWY2SHZ3b0RqbmtVWEJ2cTZWV3UwRDhIYmZHdkJqRWVPSEJZREU0ekxsNXZ1MnIzVGZSc2F4Tis4K0lKN2VkOCt0eFRyMlJXK0xBTGlXWkd0ekhVd2RBV1g2VUE3RmlCZ2J2dm9mVnArckZ5enhwMUgzUDBRakJQVUlNVDRNSGhBaU1YQ0QvLzh2K1VYOHNZZkgrTGkza1YrNDJaUjRZcXJYV0g3VlhxK1BydGx1OHRTdTRGL0RYWEpRbXZSTFVxazFiakVXQXlNYjdlbE9WNmg4aVBQMHRYWHVSTHlLbTY3RXJUZEZmaUNHSlROYWdQUTRoMW1EUjdlRS9CVnZ5Q3dydFptckszaDJFRDgzRW5zbTd4U005b0tBS2d5RXFrUmcrTmlZU0NrcUZFWXpPQ09tYitaQXVOVENMQ2hJN2NZUHdpQkpPT0hXZCtFUUNDbVVVT3o1aWgzWUdvak1QQXNpQU9ZWlJxZkdJdG9naVptUmRySHdGaDhmM3laak1vMVdrKzN2U0tMQjJBNHc1RjRCcE5IZHp1NmtDZXVyYlZoS0JkYjEzQ090dzJGMkhQRjhnU1RDTWt1TmF6RzJqY0ZKT2RhT1VZR2ErSURibnhzM0YyemZidnJ3ZklndmdRdEdYY05CekJVOWQyN2Q4bUg3Y2srWXppS0xJUzJFNHVoWGJqSk9JWCsrT2FPVjl4alVObEpYNFg2L2N3elAzQ3Z2UHdpTkpwdTk0NTMzdWczS0hFVnpLYVZ5WEUzQUMyQ003YSt2aVBVVWM4VlloaEZCSHBXclhJTHNSdzVmMnJRZFowNDZyWXZYdXhlMmZHUyt4cXU4ZkpUVDdwRHp6M2ppbVJzMUxQODZzdlNXT0NVUEtBc2xKQUtGQUM3N3J6d2NKRS9zOEYzSTVSMzczRGxYVHZjMUt1dnVNbWRyN2h4SHV6WnM5TlY5dTdSMjV3NDVqbVd4UEFjaHhxbjFoWUVOUkIzWUsrcklTOGVCaW9qRHg1eDVtMUZOU2FJL1IzK3pOTWpoQ2U4RENGZVRGVytzWW5WYVNUMVV3eVdyeFVZTlkzNG9tMEZBTlpFZXQ2VHpCQVlsTE5ERUFpeW8vUnhXS09BUUpVVGFWdTVZN3MxY0RCajhvd1B1d2tBa0wvOUYyYisxaHBBZWdsd01jVEJ5M3dtTWRBQ2NVYVRPWTdCaHpYaXVaZWZkeE04Q1hmOHFLc2VQK2FxSjlvUXo4K2ZPNk5qclNxWC93M2RNRERJejZ2U0IxM2xQVGR2MmVxVzhLMDhSTElIZlhnQmd1Zm1xeFAzaHVWZjF5eXNuRkVIOGtBWmJmaURBL3RkRjVqdTdnOS8xRjBKVlhvNVZNWFZxOWU2MjI2N3cvM0U5VGRvMXQ2QndhcytSVnRiRytDeS9ycWFXVW44QiszQThtQUJtUFRXRlN0Y1A3U2Izbmw5dXMvLzBYdnZjK3ZXYjlBRzhuWFgzZUR1dmVkamJoTm0xVldZYVRmV0t1NzYxU3ZWWHdONmtZck56bHc2Zk9DdUQrb1c1VnJNdmo5MTIzdDB1dTNaSHowandjOHhRUTJGYmJFTWJmNlRQM21YSzVhQ2RvUXhOSUMyUTZHQ3VzL3lpV0MzRDU1aU1sdTJRcmN3ZFR3WmZhcWRmVkFHWXhDbFlFYVdCbEpFZGVXQko0N1h6aDR6TlhiTnRMZ1pWOFNTSm9mOHNoaHZwb1h4cTgvOHZxR3hGR0xyTHdWTHJucDdxNGU1UXJzSENzajU4V3hnelZoWWtNcnJ2WURoYzNZc25FZ2tGMWhtSHcySWJXMEZnQW1YUnFZR1JVeWNaUDdtc0ptWVgrNlUzL1JDSUdnQjFBQ2l6VUJwQS9ITUgrOEJCRWtZR3ZYQ0NUOVdMcHBKNGlEZ21wMkRFNUlac2ZXbkprZDRPL0JZYTVibjl3dThlNUNPeC9VK2IvWEYvblppNzY0N1B5ajFXa2owOUNJSWtvOTg5RjdYeTl1UkNmQTJJVzhkSnNIQnZ4ZXorMWUvK3FqYTgxWXcvVDBmL1pqNzBBZnZkaHZXYmNUcytySTIzdFNmZGF4LzBYNnNQejhuelVkUWVVMldpbXRxNXM4cUhqeDEybjBicy84eU1NSEhQLzZQM1NjKzhVbjM3bHR1ZDN0MjczYjc5dS9WTGNhdmZlMVJWWWUzK243cTJ1dmNMZSs4eVUxQ2EvcjZDOC9yMXAvVnRTN05ZeFFNOThFUGZBaUM0S2ZFVUYvNytxTzZWY2xiajQ4Ly9nMDBkNC83OElmdWNiZmQraDYzSC9rLysrd3o3cHpmaHprelBPUUdRUlBvYzdhT1dnaUZQSGJzcUR0eDRyakxjR09PaDVrZ2lMa1JSdEpoSjg4UVJuYjJJUTh5QnM2NE1xN0RKWjdhUldPU21xRkV0TjB0d0RJbWd6eWxjYUFlR3M5b1g2b2hHajhCVmsyMW03ZkducDcwYXdFcEtBMklyMm9MSlkyQTYrck9pcndzN0hURE94cUlrRUxGbE1XYkhnM09HTC81cnovNyt5OCs5K3h2Yk5tMHptM2J1c1dLaWRJd1kyTVEvclBpYVR1ZGNzbmU2SVpOSHVhTzBhb1lzVjlVZU8vbjI1ei9kSm1EOEg1UGZmLzc3dmtYWDNUZEdEaW16cmFBVDlJT1o5SG9vNlBjQk1PQUNBVmdtV0hOWWMxWGdlckltWVMzU3ZtWk03MDhBb0dLR2Yra2tKazN6K1d3WnVXeDJvSyttZGlqWFdOK0ZEUmJLcmdQdlA4dU93SElINmIzWlR4emRoZ0RmVmh0MW8xbHh0S2xTLzJ1TXplZytGMStYcXNPeHZpaGUvbWxGMkdIRzM1NXFPS0ZUVnRkQlNxdTVaVnhDNjc3Q2RlTEpjd1Vaa1RPeEJ6WU9lbk9XUXgwdnRUQzZUNytGTDlZaEVGTzlaZ01vQXh3ZlY2TDYrY2E2Z0IxU3h1WUxNYzVucHowTXhYdkpQQnkvS2g3TjlmYWgvZERlNW9VbGRadWNEVys5UmhhenlkLy9sUHUxVmQzdXU4KzlSMlg0eWZqTm0xekV6dGVWRGtDT0x1eXJpeTd2WUxkK2hNalNNekttanRvUS9tTnJPZkxtb3lpc2NVMjJJQjEvY0NKZU9NV1lCM0RqRmdzWk4zQ2VkMTY0U2YzbXBpU3libWhXVnV3R0hYSXVxbWpmT0VHaFllZDJTaHQzT0p5RUlqMklCZUVKU2NLRUxYVHNjbUtmWkNHd2tEd1pXbUJVTXcwNktsYVJjaHR1OHJsYm4yL2R4bFl6eE5QZnROVmhnYjFVcEFLM0ovNTZYdmRiM3p5SHl2YzkxZzB3NyswWTc5NzRzbW5NYTZIM2VsVEF4Ti8rQjkvcXh0dFVBdmh6V0JESXdmTmdnMWs2bit3Yytab0NJdUlqQjdiRlM2M3phUXhoVGhHYk5Da0ZxRFRnT0Z1QUxXQXhDbkFzRG1vcFlBMEFuOFNVSTJMSDVxdENEK3BQL1JHa3VBRmNQYVRKUUtQc0dxRHpIZHcxSW5KYU9ra0Vlb2NoQmhFZWlOUUE0WjcrOXdQZnZSRDd5SjhKaGdML01yeHVuVWIzUG9ORzhYOGhNcHBOanJjZ2RPbjNZc3Z2dUQ5R1FJR1diSGFianZDeVVGUHl4Qm0vQ053SDhXU2hXMFY1c0Z3L29EMUdhTUtQRDZtSngrNWlaa0UzM0pjSDBFOW9Da3dLV2Zwc3p6WTQ1bWZqTVhyTTFlZVJCekQ5WWVIaG5XUWlkZm5PcHhQOXVWS0hjYkFaRVJRQWV0cGJwSmFPZkdqS2xnOURMR3ArdmtnUlpsQ24yT0p4WGN1MGgzSVlRTGdwbUtOQjZOUzRQS0RFZEJHdkNEK1EvMlprTXlyc1RoNFF2WFYreUV0bWN0QjY4cnpmWkRRVU1LbXRkNldwSEZheHRJUkFrSjNPU3ovSkVLNUFxVkJEK3U1WURkQzJhUXhwY0hsQ3N0QndXMk5sbkU3OXZwTlpzQlNtc2xRZzlsUXo5d0REendnUjFzQklBbUMxS2I2QnVZTXpHcG1VaERJM1JBM3hmeXd4OHdQTTVHT2xOejlaMk9hMnc0QkJZcnZDQVF5cGsvZEZhZ2s3Z0tnL0Rhb1d4RWpCREpMOUVjM21zY0dvNFVJbUluMEVNL0pFNVlPaUJ2WDRMMHR6K2dpSHJEeXlibHdSSmR1aGZhQnlhQmV2L1RjRDkzVFAzZ3FNWHQ0aEN3U1dVV0EzNnU3ZHJwdlB2bUV5L2lOSzVaZmR5VlFPTDZkTndrK3lFTUJsb2R3NE96S3MvbjIrbThFZ2tMN0VId2lqdy90WkRDb0ZVeU5nd0lRd29PZzhOQW1IRWVSYjRpb3JhQVpjWmU4ZmdhTXFZMDZUOGk3QnRVOHYzcWRHeG9hd294MHh1VW9FTkYzZFdnbVVSMTllU0xBbjNtcmFJb2pEN25aMzN5cWtNSVo2Z2dEbFRhM2RwMGRPZllldkg2Y0tkM1VMdmpVSjRReSt4Wjl3dnk0d3grdVU5MjdDMXJVRnFWbG5DSTBHRzRpa3ZsSmJLc3d2bGtPbm1Fb1QwM2FKUnFneTgrQVZsRzRmMlFGU3FQWWE2OXJzN2JGMHV3RXhxVkhxQ2xKVlVGNjlZMnlpZk5xcndHZ1VvUm1lRlFzTUh2YURHRnNNTE1iNDVQTWJtNGZuMjdhNVRhN3BXbDJONUxVTEM4Y2d1Uk5hZ2xKWWo0R1ZiMkpVbjhxSzN5VFVXalF6NncrRUFOcTFXb3hCUXBnallzQlpJTXFqU2dkUVVlVU9RREJWUnMrclYxbStaRUorWnF0STV5cDY1akZuM2RmK3RJWDNGRStIaHZxa2V6TkJIaTQ1NnRmL1lyN3poUGZjdVdUeHlGSSt1MWprU2hURmd6RzJaL0ZTeGFSZHM1c1BNL1BaOWp0UG5xeXhLRk5RQ3pyeVdNcUgrdkovUVM5NGd4Q09Lb1Q0L24wU3FQK3J1dWRCR1V3bjBJVmJNc0htbnBZQ3ZWKytOdmYxT1pqYnVVYVZ6MStXR09FWXlQa2E0YmxsK25zMUhvK3Jvck40aHBMaW90OER4L1VZU3NtNUVOTFBHN005bVlZSVVOcFpCR1IrVkZrN2ZTVHl0UTBZZktyVUJxdkk5Q0dvR0h3UVRDK3I2QUdlM25FM2dGSVRaUVRrV2tCTlN3SHUxd1BoQjdISU12WEVtMjhwd01mcnFwT0pPL3VHQW9Vbk9pL01BNVBuRHJ0em8yT3V6SXVQMWwyN3Z4NDNaMDZWM1BIaDZ0dWVJUmZDall0QjJYZWQvLzk5MnVXYVhYQ1FIalhMYmZlT1hqaStDMzkvYjF1d1lMNVNtakVOb3hOV3ZUbi9kaW9VVGorRkI3aUtzenNGc2I0OHJWdy9RZTdZalM3YWM1QXgwK2NkS2RPbmJKSEgrRVd2TkVhRnBpTXdzMHdManVDSnhtR3J3U3JIajFxYnBCT2oyRlE2b3M4NklDa01Halp6ejZjNzg0dmdrSHo2TGdDdElISm80ZmNPSVFDQnhOQmRmazFQdEg0Mmg1M0ZqUG9LR2FlYzVpMXoyTEc1TWJXd1lNSDNGTlBmZGU5QkpYL3ZEOHd4S3d6b3lPdWdQV3BISHk4VnB0SHVGNnFmWXpKcWxEYkMrczM2a01lRmNhdDJ5QldlK0dmZFpHZ0hSdlI2Nmo0bUMrMUh6NEdyU2JGandsbkNtUUtjSnNOK1JFVWxvSEhWTXRZT3l0UE5hSy9Qb3JHNjlmQVJObFZhMlRubzhBMTFJMFFNOUhQLzdFdWhhM2JkUTgvdXh3YURwY25ZOUFVQk1Xd3VqTmZhRGM1UHEwSWJTSy9ZcVdyN3Q5bjBRQUVDNVpDRnRVeHAzclczQlQ2ZWdxY1U2N3dZU0FLQXpBSy9Da0lLbWpqd2pYWFl5MjJ3RTNzZUFVemZNVUVRSWdMb3ZaWjdPeHlpN0ZrQ0gxaVZ3MVhOcVJkTThGaTh4TmYyZldib05YMXloMEI0MmZrNEY1SWRQWWR5Z25CdFdYOWRmQ2U1ODZNVk4zSVdOVk5UTmE1VmVPR3NFUWNnRERudUo0WUd6djU5UGVlK0svTW9xMEF1UGxtQ0lDVHgyL3A2K3ZSMjJuVWJPeEEybEltRGRyNWp6LzYwVE5ocHo4dHdkNFl2OWtPa3AxK1pvL0loeGsxaEhuaW0wOU9RUm9Xd0poMHB4RzdVeUVOMGNpTTNGdFFldlFEM3dqa2VHS3RXSlI2blNWaFZpajA5MEVTOTJOdDJPdjRrSkJVYjNRRU12QTVOVUNqRlEzUE0rZFhYeS8xZHhLejl6Zy8xcEZLazlFZGpkT25CdDFSekxxSGNlMjlQL3FoTzNMa2tEdUpKY2dVbGd5Y3ZhaGVoMUdsdC9oUzlRWVQ4TDBFS0x4dkV6SW9pQ2FJbWh0R05wZ1Uwd1JmZmM3ekFmUG5RNFZlSWliWHN3NExGenEzQUVRVGRjNHVYMkhQNlBOY0ErcXJOL2Z3cy9FUWloa1MzK2FEK0h4bHVDc1dsRWF2UTljMXJYRlJFcnMrQnl6enlrTUZoeENxZ3FrZDJwSnZHTXJxYlVEKzdVSjBMMWprTWt1V0lTWHlZZHVoM1dvRGR0Z29RTlgzL2NlM0ZSZXZ2bzVUdXIyZWJTSHI0K3VGOHZGdFRTVGVHY2lodnJWQ3lVME9ud0ZqY1BZUFJHYmlHUUJ1OEtITUM1ZWdIWmE2U2libktzVk9WKzJaNTJwOWZCTVFpR2JmUWplVkw3ckZIU1U5ajhBVG1tbXdoTDZUQUEyQjJPblI2R0Z1L2VJbnUzU0Z5N0FjQ1hESndsZUMxN0hzUmFPcWZlZERxOXZHWllyWGhqbW1TS2NIQjl3cGFIN2pFT2pqNDJOLy80T252dk1GNXRGZUFMejczWGNPbkRoeFM5KzhIb3dEKzhZZSsxRW1JM2hUbmF0L0N6ZC9zMXZIeDNiKzZUOXB0eGdOZHYybTdaYUpwWjJCVGc2Z3NoUUFCYjV0aDZtWlZ3SXBSeEp4WEx1MVNBR0FodTZmRDlWeUxkYXpRNXBkNUFsaTUyUmg1c2w0R05SU2pjSDh1ZlViTUVnSG1ycFVvQ2Q2bnh0aHBVVjhyVmZXVFowLzQ4WWduYm1uRWNIM1BBMCs4VVZtME1ZYktHZ2I0YnVJR2syK25tUkNhaXQxM211blgyTWhmTDRFUCt0VjQ1ZDl1S0hGbDF4QTBQQmpKMVVRZCttcklMcTVlYW5aSDlvSDErL1VMUGhVSUk4MTgzTmlTYUpncExxdXo0SWhQOVpBbWxGVURyYWJMeXVadnJzYnk2cWplc2NBTnhmMTloOW9CeUp1M2tFNDhGTnJWa2VNYzc2cWpTZmUyUDdLTnNwWTRNczd5T2c4ZThFWG8yaXpMaERLVlBkRWV4VmFZbVlaTklYekk2N0tqVVNxL05hMWFlSlZ1UGVCOFRENXlzdXVnalpnMmtCbHRGTjNyWUxaZjdHT01jZEwwRVkwbEpYbFQza0ZoOVZLcnVBRndaZjFUd1FHc084blVZOEsya29DQUlVOWNYckF2ZWNuYnJiYjV0d1RFMDI1SWZUekVNTE84VHhLTnY5SFR6MzUrSFBNZ3d2QWxxQmFKQk9abW9ySG1ZT21WLzJDUDAxSmRUS2Z4WW5XL2Q2dWRDUnZqL0tSR2V4SU00MWQxMHZZNC9UTlpwTHBBNlVkU2NRQnlXQ2ZCY1dzUFJqQ1cybkZrdDRMR0lqZnZLdEN0ZUl0cGhyVVBqSUd2NU5YTzNuU1prd2tUK1lweUFQWEFsTnp0dUw2VWdOYVNJMEdnZVZnZmZqYUxLck01bWQxRFBtR2V4VjFyUC9yV1BaVWR1OTB1UTFoc0NTdW5zamVyRWhIclFQdFpxQnZDREZJVFY2NzNsVmVldDdlQ3dnL3BSRkJZSW1DRzFyVHpwZmQxRFBmZDJXMmx6THc1QkZaVVU3ZURhbnNmdFVPU0dHTnErOE0wZ3cwQ2NLeWhyZGN1VVNvUWxQaTI0SENPQXY5SEFGbHphOVo1eXF2dktUYnJSbG9JWTFJcDhBTWYraUFoTHU1WWtxQ1dzM1VDOCs2cWVlZjFkdVdrekZWRnN5MDgrZjM2d1FrR1M4SVBURjNvdTZHWmsvR1MvcEdvWWxvVmFyNlJNS1A2SUMycHdOTUpHUjBDa0w0NlplZTFiY0tSa2JQUVJzNTUwWkFQTVhLQ1daaWNueDhRVS92d3o3NU5KdUFnS3BJaGhKekJkTWFQbUorejZnUnM3ZXdLeDNKMjZOOFpBYTdNWGJLcnJ6TkxqTnBqK0tGZkJJbTRzUVY4SlJDSEpDS2tuQ29BNkZlNTZoK1VxcWpZWkd4MU1vMEVGblhJeEVvQTJhK3JMNkRGeXRZSVZUSTVhWGFsbmU4NUNxdjdiSmJhL0MyMGhDd3FaNnhXWnVZMEJ0eCtLV2Z1TTBSSC8raFRianh4bGVSYStjZmc5SnVOemFNbUFnYXBnMS9GanRKWkhveUlSbTB4bGQ5clZrcmY2Z2ZpQkFvSk9BUGtOd0Y5MTZFUmJNL2ZWM0lheE84TXhCZXZSNmd1Tm93UVAwZ2JDdXZ2T2lxRUJaYU9xaWRySzMwNjh2QmRwUldNb20yT25wSWR6QXNvMGJDVHlEVWl4OUV6Zk9RRnZNZzhhNkZweHlmN2FCMngyVUs0MEp3ODZ0UnR2Rkc5cW03RlN1V3V5VkxscmpCazBHUUIvamEra3VsMGVCQkorUFpUeXFZMWh5WXR6ck0yNEVNajZsenlYSTdlczZKaW1XRzl5UGZmZHdORHcrQ1Rvbk9nTWJRaDN6YUZHUG1mMzcyczc5bVIwK0I2VFVBRGl3d1ZCT3pjUUQ2UVVlVC9oR3pwK3lNYStFV3Y5SHU4MmhqcDVtMHkwemFJelA0MHd3RHc4d1lZZEJZU0tDMEl3bDRjSE9QNmlSMzJBRytySkl6ZTZvM0UrbFFISjlYVFMvTkRETkxRQWptbDRLcko0L3B5R3NWS2h5LzNaK0YycTdPOTNFRU9nTUJ2UDJvRjQvNlk2OEU0ektkWmxITW9GbW9mQnpJdFlQN1hYSGpac2lhSXVSUTNpaWIxMjAvRWcvWDhDUVoxNUV5NlFZcG5qOWd4S2ZidUZtWk9YNE1ZWG1YR1lVNmp2enlYQkloRGZNVEtYLzdWSGtyNGxPR2dlVEdHcHFVZ1lwUHQ4TVNvQWp0aHZzaWRqc3VCK1lMNVNNaEhVMldEL2Jnci94UlZ2bDNkT2dGSGc1TEZ2cGxSc0hVcFU1WGdHQlJuZjFtclI3WlJUaE5IaDh1bFlxdU1IVEtkYTVhNVVxZEhYQVhYQ2ZXOHAxOEowQlhwK3Zac3MwVnNIYm0rd0wwT2ZZVFIxMG50Q3VseTdNY1djMytmQnN3VmUzV3NBNzBQQnU2RTRodEVScThJaWNUOGc1VUEvS290NWFTYUFzS0pBcXdReGhieis5NmhRZCszT25UM0E4YmdCWncxcDA1TzNTdXM2ZnZQL3FrUXRzOWdKdmVkZk9kcHdZR2J1bnA3WElMTVp1SmJmVHZoeWVaVDRhNXhkU3kwalM3WXFUc2ROSm1mZ3BUaXFSZGtXSy9wSjJtckdaUG1zRWZ2MjVnY05DZGhzcW90N0tFTVAxNnBCeEp4QUY4d0tpR1dVcXZ3K0twTDNZQVQ2aGhrSEtkcVZrUjRLRG1acVBOQ1BJQ1lNRXNLTzFCc3pIU2VYRE5xOE0xWUtvOG1Ja2ROam1NOVNpV0dlV0JFeWhCc25CUmhtWmpYVkF1dnFZS1lsMkRqL2V4ZVo4K3YzNmpjeEE2bkpqRjFNZ1h1YnNPUHAyR05hSVluc3lIOHZNVUl1TndoZ3VNTHliekRFV0dZWnpDS2pBL2xqY1phQjhLUTd3TWhFeHA4emFYUWZ2S2o0d1ltRkVtQ2VxOVo0NlFMcm8rMnFvSUJxcGpNR2VyUER0dmp5SG5DeDB1UDMraGN6cXhaK3BzTkNNam5IbUZCdVl2VlY2ZGhFU1k3R3VnbWxPWW90MU5RQ0NQc1JIZDZjZ01ENWtmUDNHdU1KYUZaeUQ0Mlc4SWdVTE9GZEMySFN0V3VnSm1TWjRnNVNuTjdyVWJIUlpWcmdnL1BlZlBrdUVuNzJxdXlOZTNuUjEySzFldGRFdVdMbkVuam1ONXdtV1FsUTdVaUlRL0RGYkZmTHhmQXl6TVF4YjhzRzVicjVKWEJHYUVzazFnN1BCdUFNY0lSOUNSd1pOdUdjYnBHTWJmS05yMDNMbGh6SzJWWC83RDMvMTMzN0dFaHJZYUFHZFdNZ1FaU0xPMm4ySEZkTkhzNjhPOUdXWi9oU2xOZ3oza29mZytEN2xqZTVRKzhrdllhWUxzbXUzTkFEWkVJQ0hsQ0loanhUWjBNdFNxQWdaSXVKVW1JSUFDUVJ0eUdIenlRcGw1NnlyY0RqT3lIZGdwSHBlRnlxeGRiOVlUQXllN2NwVU9BL0hGbitYS3BCc2JIM0hqNTRhMWowQTF0QjFZSnBuK3lVRWVLdzRESkx0OGxSMU9ncURoZ0lvR0Zjck85OWp6OUpveEk0OFBsOFNFZ1NsanBrMFFaMGRvSlFWcUZWaitNSzBZaWtJT3Ftajk5Q21YWDdISy9DbUFGSWFyU2dXRlhZZHJlTGlJYmpLeHBkZTErSUpMQ0lnTVZHbkdSd1Nsd1hUbDhnempKcDVQSnlpOXhZdGFRZTdZVlAwd08vT0ZuUmJGTmdqMVZ1Rno1N1EwVUFDalUraVJFQUZGUXBrZ0tDR3NDbGd2Rnp1S3JxTy9IeG9BQkVEZll0ZXpmTDBybmhtRk50RGorRVpqQ2d3SkFnanNBbFQrSXZxQTM1Nm9sS3RRcjhlaklxVXRqVWo0ZVN0cUsyc0lhVTdsdzZHSmhJa25pUTUrcDRDYnJ4U0diR3RjKyt6WW1IdHkxeXNENTg4Ti9jWHcyY0hmcmt5Vi8ra2YvZDUvK0F1ZkpFSjdEZUNtZDkwNVNBMmd1OU10Q0JvQVFVYVV5WC85eUlTM0dGQ3VLQ3oyTjNld2gzeThIOTEwbWNXSHlkSVEzMkRYYVcveS9YQkRROE9heVlKZk0zd2EvU2JnUFRoZ29UZGg4dWRybmdGMUtJRUkzT2xmdk5pWWtmN3k0ajNqNU1uRnFxdEFjNmhEamVSWmJUYzFvWjEwSFJzZDR0dDVlSys1ekZzeStoaElHWGxsTUZ0ckRZdTBjY0VTd3lGWW9ZcnJVVlRNYkxuT1R1MlMxL2g5ZUpRbFNib05Dc0dTM2JoRk8vdGtTcXJRTERJZi9DRXNybWRnVDJUWXdnYWs0WDE4MWtGbFFaaVlCMWJPaU55UVJEbFVLTlFsSUprUGl4dVlWOWRBNHNMbTdhNjZmdy9Da0tueTVXRWNEdHFzTmdHejNCc0FneEVxQzY0WnltZXdNY0hNcFYxUVkxbS9TZDhuMEZOK1BscUl6MlBBMUk1NGg0SzNTUm5PRUdTcnR3SVhJS3hLMEFMSTNHNFMyczBWVjduaW9pVmc4R1Y2ZFZrZEFwcUNtODhoVUpBekhTY2l6djc4U3ROUzlDa1BiVVVYQm1nVFJUK05TUGlGeUI2cDJBcXpkZ3lvb2I3NnRtUUNiTmZxMUpTcm9Fd29wUHFEVFRzOE1kNzV5c0RwWC96cW4vM1h2MzdxeWNlZnRkaHB0TlVBQWpqenRwNzUvWXhMTStrT2RzN2ttczFEV3RvWlJudWNqL2x4MW13SWErVkhFMlRYYVcrMkI1dkZLTmlFMkR0Q1VHdGJRUU1VTXdLWEFyeWVua0xFak1hbjVmaEtNbnNzbWVhRUc5djNtcXV0WGV1eVYxN2xzakNyeDQrZ25Ld0hENU9BOGN1VEVoWWNZTHh2em9NMGFUUVVET0I3QmZpTlB1NUg2R09kVUtkWmR6OWlvdGhLaWJMd0ZsOWgzVWFYN1o0SFA3WlJrdm5qNGNVdzVkUFZwWUZuTHo2MU9HSG1ORlVmREltdzRnM3Zjc1ViYjliSFVSaGQvdVFRcGJFc2lHQnFRNUVxdm5iS0tXU1pwMmtLdUxCOWh4RmhlWjVIWUY1SzU2OVBnbCtVbVFEaHNYQ1JCRklXUXRhV01xWnRLTDZQd3hPQ2ViNHJVV210YkRtU3NsT3RWWllpbURuZjIrdHlDM25Pb1JPQnZPVUxMYUplVWR4U0FjczlKS1RXc0FDei93cVVrOHdmRjhueU56TEl4YkxBRXZzU2FWY2lFNE9Qbi9SVmxOMys3a29EdXFpUlFXdmp4MmJZVHRKd0lEbXoyZHIvaCtDR3pHTzAxUURlZWVPTmQ1NGFITGlGNzZ2alNVQjFrQStMN1BoUjg5SHRQV2phWVBSMmIvSkg4V1JWSk5sRFBMUE96cy95YjI5eS9UODhkQWFxTHQvMzdoTUJzUTFJT1pMd2VZSFlrR09hNWVqd1BlTEIyVXBIZzhHSUROT0dOZUx6bFZEZ0VwZ2d6TUFPblpKZnZkcmx1Y21IQWNTanV2ckVHUDRvUEhqWUJJVlVPZlh3RFc5ZjhkZ3JYeXpTMlcxMnBoVjFRNFdHNnM4RFI3aU1qdWh5aHNiNmo4TmRET0JuUzg2YVBBbEpsWjR6WUc3SmNwZm5qbkZseW1XNmtSZVhCcjN6WEpacU4rL0hnK1NteVJtR1Q4Q0JHVU5yY0VCSkNEQi81Rm00NGxxMWp3aGw0dTFBZmVhTDZXbjZnMUU1TWhUelJadzhseW9IOWttUXF6bVpseHBWclEwMzJnekNMYjk1cStMbndKRFV0TGcwMG9FZW5uRWdRZjJtV3M5TnY4TDhoZEFvWGxPNUlzWm41cjdrY3BmTGVsTlBEbmxRdUJTWExIVWxyTnM3bGkyREhlb3pabnNlbm1KNGpnZTlrQVp6ajE3RXdhVVozV1Q2VW9ITEdLamN2ZjFRL2J2MUdIZDRia09YSkVWSU9RQzQ3YitKSWdRSFRMUEdvY3FmSm9VbnZ4S01ma3VDNWVZdFNMNHFISU1LMVk4bXd0WDlXNjhjT0xQcmxXZThPNFcyQXVER20yNkNBQmk4cGJ1ckEwdUFmdCtjQUFkcVpJVk4veHpBM2gzc0ZpQS9rU1dJN0JiWCt5Vk5XVnVFUlY1bW1jNmtBQmdhSHBaNkdQeUZoRFdOT0NEWU5JZ3dxRklDSU5WZGRhbmVIT1RadnZqMVh6bFFPT0NpM1gweXdidytNS0lOZGg0bXFmcUhpY0orQisycUtmNzV6b0Q2K2JOMjRFaU1rcmdtQmpncUpPS0RPZm4rQlJqY1lGSnFKSWhHWnJjWmxZekFiUXJiSUN0Q3E4aVdNS05SOHpoNVZPdDREaVNIdE54VTVGbFJNa2tHU3hJTk1Bb09NaU52ZmZGYXZMU21TeXNHTGJ5Tnh6SlFLREJOOWRoUk82akU1WTd5QlVIWVpLSFpaS0Z4WkNwVnRRMWY0RUVkaFdVVmMvb2NqWG5CWUNncjc1RHdDenoxNFZPdWpyN2tQb1FPRmtHVHFad2FVUHZ4b0JMWDR0SkkyTjdVQXBDZUNIMnVMc1FQaFZJV0FwV2ZMWE5ub0RtZHhkTHB6Q21YZzhsbFZKWG5Pbmh3aS9zdy9BQXB5bEtlbUhTanUzZnJ6QVBMbTg5eURMSnRJSVM1dEVMZjhlVXdCdGJDMThXc0hwSEZBKzRXNGNGTEx2ekV2b2JnYjBCcFJpQ1V0alM4RFFvb2RQZTZTZFNIZXg5YzdrUTg0ZHd0QzdkdithdWhWMThOWjVRanRCVUE3N2pweGp0UER3emV3dHNoQ3haNGFjT3h4NStFM2E1QjArd0s1ei9kOG1md2RIYkN1Mm1MTFczRFpqS2xBUXhEQThEZ1VDN20zWUMwWjhvRmh3WW5Cb0lFUUxvSEJEN1J4OE1wUE1WR0xZQm42a242Y2d6WDhWalQ2MUFRaU9mOWN6d2VDMGFZZW5XbnpmVFVGRkRlcEFESXpvYzZDeWJVaGg3dlBHQkprVG9Zd3pQd0lKcmNMT09PUEQ5UXFnd1FuenY1WkNLQ2c1L2ZIUkJoWnF1Zk9lc3FSdys2ekxsaFU1Zko4R0pXWEFPenJvUUFCUU1HRCs4YTVOZHRzdjBJQ2dya3oyelZKc2hYMmdEL3NBeml1cGt6TUhmdmxSNzU2TFFpODZHYjF5SVR3YzFiaUR6UHpvMnNhRmNkcHUzTXc5MEZZUXFoWmw5Z05xMUQ0YndvK3dRL3RuemlXaDdyZDlRdFI0MWgzUVlJQ3BTVit5dCtERmhaa1NmU0Z6WnUxcWxBQ2lvTytEelVmb2hpbnpjL21ZR2NrWXpmQ09BbTVSUmY4WVhWOFJUNnZzSmxDVitVd2lWZGxWb1Y3OXhrc2VyZzh3aThCa21YQk5RcTlrZFAraXN3aWdCNGQrU2REdU5mMGkrT1l2NzY1Zk1aWENwQ3k3SXdBOGNDaGZJVUQ2UkJDOGh3bndjVkExOTAxT3E1MWNPN1hubkFSNDFnbzZVVnVKZUF2M2dkYm8wdk95aGEyNnREZkJ6NmFWYnpZVDZOcmQ4YjdUYjRaWWIwWG1xbDEvd01wems5aFpjeWNEMmRnbzJIQk9oaG5zRVdSVWs1a2tpME1pQjFIQ28wWjZXQVZCNEpjSTNLd1RmMTlGT1l0UVl4eTRJWmt0a2hQbXFLVERIWW9aN3k1UlhUUVVuUnlWd3E2TGdybUNVSDFkcENlUEc0QU56WUt2SHNld1h0Y25DL0JKVE50R1FzcnVkSnZEdEFKalE3bDAxTXg3ZmQ1S0UyUndNWlA3cDFobXVUQ2ZKUXo4c3YvRWduQkRsejh0dDRJVDMzVDVqTzhpV2pJd09za1hnSHhVN29sZFFHRE5NU2hmV0JzTTZ2WFlmMStnRXdtTzIvTUU4cmJ5aXptYUZJZEZONGFJM1BqVDQybzBKSUJ0MktQUXZoQklFWG5RTmcrVGowMmZhZW1Da2ZrYTZlT09xbW9IRk1vTDM0VEFLUDA0NURFRk4wZFBGaG5HcE5HOE5XRGlPeVVkSXRQNWxXZC9OTHhFbitlVC84c0JBc2NvUkdmN1A2T00vOWdBNmpFQS9FZzBGRkxJdDRMb0tmTkdQN1VOaWllLyszamZmY2Y2L1NKdUJ6YThhbmZ2RXp2Ly9xanBkK2d6dWtDeGIwMmJBaVU4cGdxL0dmUDYzOHpKU2ZKZU52azJuL3dRMTdiR0ZRazF1eFpXbE9relJIUmtaMUY0QXZacUJRWVB3azBpNmd5UU1OZzRaanErbDBWMmgwQXZubnRtelRFVkxPNU96RUFOblVFWEl5RTZ5VnIzSjF6Q2c4TkpMSGVqNi9lWXVyN25pWk5ZQkNZQStmVU5qcGdSZk1ZRHAzRUNGeFhZQXVVaGFNNGpDb3M2UG50Y3pKTDEyQjZRdE14Q1BJWUNqRzRxelowOXZuZXE2LzBWVmUyKzBxVUdtcmxVbkVONmFrTUE2RFQyMkhmekpqZ2Jmb3dJQ1F1eTZEbWJWODhwaXJuSUdxTGNGQURRTnBWcTl6Wlo2Qkh6cWw2aktNcGpMaFA1aWRnbHRhRGoxUUhuVVBOMHE0TElKZ3FiOW1SM3JEMnQwdGhFREQwb09mWCtQMXMxQzUyUVhoaVV6cjM3cWJnc2JDN3ovd2dud0Zldmk2RWgvVzRuc1plUXJTTnFiUjcyaWI0cGJ0dU5adVpxQzJ5MFBvZGVUWmE0akRIUEhEdXBaNnVsM250aXZjNUl2UHVja3lOQW1FNloyRVlHNitmN0VIekYrZThuZUVBbGd1YjIyRVJxd0NFekZVQjBNWTBRcVB2TTFYVFprQys4bGJBVm5oVVgvZmgxMW03VWI1SmNHM1BaM1o4WUtyUWpEejdVc1ZhRjk2M0xsV081SXAxcS9hOThBRDBiM3Q1bXQ1M1ArelAvdWZkcjc4MHIvaXQrclo2QkZRaWJnYUhzazZCRnNpVWlwRmMzQXpmRU5OR3llZ0tXdXMxekJRK1NSZmlXZjNKUUFNcWZ5bXpaeURseHQ1MlNZQndDZmgrTVJhQlRPRTk0a2FNWFNNQUlObjZMa015S0lqaWhDa21pRlhZclpHaDFTaERWQnIwUk9IR1RBdjFOU3BuWHgxbHk5dlZMNDRQOXI0dEY4T2pNa3ZFYk9lT1RJK3lwcmZ1dDBPQWtHZ0VCUUEvZHV2Y1VYa3JZZDZPQUN3SnM5VEFJQUo5QjU4eHVOMk9CaFR6TTlUZmptbzlZRGVxd2lHekt4YmoyWExTNXBGZEZjRTE2OHRXKzdHWG5sSlRBYitSVFFURE5JQTJYZjFyT3BtVFVFM1RRNWllK0ZHRnVWM1dMOXppY0U0Mm5NQW8wNisvS0s0VWUvYXAvYVE0YTFTRXdBVWtyUklGZWZ5QmE1T2FHSjhyVG12bmVWOStpMVh1UElyTDBqNHNDelVDakwrK1F5V2kvS0l0LzQ2aTV3VlRmT2tBR2JZdkhmZTVLb1FTdVh6SSs3c0dEOHVVM2VsanBMdS8zZVVTbGlaWWJua1lhSmtlcWk0Vm5FenZUdjQrQWkwMkcva2JvYTFJK0hIbW5mWE9SYnYremswYUZxUlowN245dTF4WXdkZTA0TkNGWDF1emkrUDZwbFA3SHZvZ2M5WlRJeFJielpoNjdZcjdqcDlhdkRkSExqbnpwMTNmREtPZzRLUFIvS3J1ZVFyRmxvbVM2VHlXeWRUdmRKUlRraHltblpjbEF6QSs2MDBNZENnaXZFK2RWRExkRUlOQTFCVXNJWXZGanJFeE1WaWg2aFU2a1JuZEpyWjBRVjdsMllCMmp2NVRqa1FIOGpndW8rMzRUaGdteHEyZlRzRGlVQ09iSkR0QWZnV1I3NmNhU3A3TUtORWNWc0xBTzdlYzFPUWFycFVWUXhvbHN0aC9WdllzRWxQNEdtSmd6Ymx5VDQrR01TWGpEYkQ1dzZETnU2UVYvbkNTcVpMcU5oY3gvUFlibDN2cVVOY0ROcXVOV0MwWTdpK0dJOTloWld0THd1NlVZT2N3Z1BzNy91RHFqbUdoTm9NdlFoR3pxQmZxRkxtSjhCMDZNZjg1bTF1WXM4dVYrWCtCT09oVURxZWkydFEyTklydERtRmtGMVhnd1F3Zjc3aHByUU5taEdmbVVBY01tcUZUd1JDUzBHTE1FdmtpN1NLYkV5amZLa2hjU0RESkt6dUZzaTlpaW9kV0JkejN5WGYxNjh6Ky94K1E0VXpPWmRlQ0laWWh4Q2dJSUFEMStCNDVWa0FmZ1JrL094NU56TEp2UW9lRWU1MFhieURnemdxUDh4QTBvSm1JRVQwZHRuNDQ5T2EyNko0LzZUYm96R3ZkQnpZK2NjK2dBQjBpNWZCTHczZXFUbS9iemMwZ0FuVFpOUTNGSXp1MVRON2RuN1RSMVBPTGZHUFB2Nnp2emMwZVBvM3g4Yk91VFZyMW9NWjdmaW9DSTNHd2N6T1M2NXRXRGdaeXRic1NkUCs1WWdnZDlyTEk2UkxJdmFJYk0wV3QrUFZGMFVzTTlWQndjWmVHOFNCd2FhMTA5TGw3c1N1VjNYZm11QU9OVjlJa1Z6N2grdnlWelpmNkR6VVNhMjd4OGZBWERrSU1OTUEyRTU4b0NpellKR2JvbXBPUWJsaGk1dkNqQm9HdGhBVkNmbFpsdllRQ2dZNG56TmdIMmpkemZVejdJeFQyclFOU3dPYjhmaFJqVzdNWkNYTWNMd21EeWR4OWd6cmFqRUZya2NoeWZSOGpyMVk3RlJjWTFxSWRmaXovZmpoQzBmVnZIZWVxMlRxYm5UZkxoMWU0bWppcFUxejRMS0JBNnlPdlBsb3JXa0Fhbi9VeFZjQjROakp1SzZWNit4cHdNSGpMck5pbFJ0Ny9vZk1EdW5ZMWhCSkVDck1nQzhxb1Z0bGdyMkNaUXpYNVlRMkFWRi9ydWtGMkV2WFhPK21YdmlSNjdqdUhXNXExdzdkeXFNMlFIQzg4dGh2YnlmWHhtQjZhRDU4RVFqcldrZEZ1SHpxQk9QYmUvMjlJRXFVUEliM1N3V2w0N0c4M3ViL3Zkdjd5eTJyZHlmak42Q1JSMlJsNHhLb2MvM3UrNTFyK0h4WUJjdlRZOTk0V0p2SGZJMmUzbXVna014LzJmL0lGMzVWVm1BYURXRHJYVmpMM2NKSENwY3VYYVpPVTdIUk1Pd1VkaFFIRlUrelZhcFRVS1ZJV0o5aHVhQkRNT1VKSFlTaHljRXlPVFhlZ2liY0JFeCtGSk0wbWFJeCtMV2dxUlorU2grNzdjMm5wekM0SWUrYjJ6T0JPREFWRFE1N1QxN0dUVUlJa0tIWTBMbmxLN1JHYllhSnRkQXh2RitORWFiNy9lWmxncE5nZWJSM3NHZ0oxTE1SM2RQbE0vZVUxS215S2tQOEtGT3phemVieDRzUlVZS0VRcGo1d3E3bzQrT3V3TWRWT2ROM2RMckNtYk5pRWpJNHRRMHlQWWVCTm1vUmg4U0J4L0xwNEZQV25tbmdSY09Nd1RqY1BTK3MzeXlOWm5MUFRsZEdHMWZSMzFwbkl6OXFjaFFDMVBpeVdISndxY0d4b1hBSkFOTUNBaVB5V3Z5MEZ3OEc4ZVRmK012UFM4Vm1mTnZFcGJyT29XbUNpODNBdmxROWtCYzNEZmt3RHZkNDJBNjJNUWt0RXZsV0IwN29MVC9aODJmMVhBQ3Z6U1VLMVhnS08xVGRRZXk1TW9wQ0ZtYy9VK01rNDFQYnpPa09BWnVVRXhCSnpadHdKeWo2b3lhQ3Y0WXcvY3V1REdYUzdZTWlPMzlvRGZZa0plUEVibm5RNWZodEEya0FEVTlUVXVNNXoxZXlRUmdiei9vQWwza2FHc0JqM3RGZUFLemZ1SEZMdFZ6NUVQbStwNWNmWVRUR0YvTy9sZVFIYnBvNG04WEVUMUdmUHMxN3hLMEVRT3d4VFJBR0JoZ0JnM1JrWUVEUDFtczNuNGRZRW12QkdPd0svZ0s0SmgvTFpWd09mbVdKQURHVGxrNjI2VmZCK2plTEdac3FOaCt6UllBWUlDb3ZMSm9WUFBFa0cxL0NVWVg2TEgva3JBSEF3Y0FvU0t2NzdWQUplVFMydkd1bjY4Q0FMNEk1bVo1N09kd01zdXlZbmpNaTFGOHdMdS81RS9hS2Nkc2d0RmR6TVYvOFFOWGtZWnpKRTBmZDVPbVRhbVBHVVYwUWo4dTFFZ1FPM1ZYZStnTVQ4Y2s1blVOQStmaFFWaEVNR0x2UlJqbk12cWRPdU1sakIxMGUvY3FuOE1pb2VjelF2UFZjTE1HZUIzUERUV2JYM1FXNEM5Q2srSVZnTXIvZHVhQjJaWG16SVpnL245elR3Z1o5eVBnTTEzS1Q3Y0d5SXEyK0JveTBCZmd4RHphamtlOUxPc3htRkVmd1RtdDd0bGRMTzFMQnduL1lmUnA1S1VUK0NrLzZlWHVTdkc4aVhuRERERTR1OWZnZ0ZjTTkxYURabkllbXhxWFJSUW1BdGV0V1g0MDExejJVNXZONnU5QzB4dndSYVlCY1BKR1pXL2szRWEvVFJKeGRqRkxNRDZsSGs5L0Q0MEVnN1loSEZZOHNDWnRIa3djbmNEQUN6SkhoSVcxU1pibEx6Uy84WUlBckFDMUtSZ3BNYWlZYW1vMlBtVmp2cmhPVHNMekdMTForaFIwbXoyN3I5V0dJcXpjTjBZK3pIMVcxaG54SjNOM1cyM0xvRDZqdlVjWXc2S3hRdVBiWWlCNEN5a0tqNEw0Sm1UemM0bU5heGl6cWtkY09NQTNEcU54d0Q0RHFQbzhuODVueE11VVk1QisxTkdncEdXaDZwNDY0MnZuVHVBcTBBY1Fud3hhTFlDQXViWkIvRlZwZ3JjYmQrWnBuVmc0dEh2aXgxMlJUSUxDY1pGUUpBekFlWiswU0JGQVI0ZHp2NFQ0RVRjN0l1dFdZNXo0UW1kZklIdXVsUHhpYyt4RU1ZMXd4c1draGpHK1BRRU5qZ0gvVU5welpZWS9iQ2w2d3lvOS9NTGxFWUFNRnY4Z3VONTNoejdRdVVoVE9mZ2gvM203L2RDdXg3UDVmYVFodlJHNExEYWFSd2tKOFV1Ulc3aElBZFFxQUJEaSt6dS9kRFFzMUs0d2g3NDgwS1FGZ3ViYkFMYmZmL3VtQjQ4ZitsTTg0ODFOTVVmbmluR0QxRGhuZWxiUVRzS1RqR1JyOTVMWi91ZEtHdHhESk9FbTdOeGhYcWlLY0hCQmt3Z0FmSzBhVFJ3eFRGK3Z1Sk5UejByVTN1TXJSd3pwNk8vblNjNjdPZHdNMlFIMFNMQUcrUE93dzJ4QXpiN3VmanNHTW1hd0Qya1htMEFFTVlxcmVaRklMRDJ0N01xME5acXJvMUdpNGNXZnJmdzQwQ2hmZENrUjVKYlI4T0dIYWtlMEIyTFY5V1pBUHpYQmVnNHhGeHVOYWtiQzh3TUNJUTFBZFYzdFFtQ0VmcG1XWmZJMVZUcXJTRExjSXRxUWdHTmRiZkh2clI5ZTFQaythQ29qQ2FOS05IeVEzUVdlbUxYMWl2K0R2R1NKcDh2TElna3RVVzVwd2Y0SnJZcjRsRjBJWTRiYVhaV2tzcjFCdUVrRVAvaWZjTXN4TS9nWS9LemNOSzc4NWZaMW1kTWZaR0JKWGlQeDlhZkJUditWOXJvWWxXaEpUbUFTUGYrTVJiUTV6WXFraVg3dFM1dGNPUFBLRlA3SllpZXdhY2MyZGQzYVA3dHZ6ZnE3bmkxMmxldXZIWW1KVUt0eUR0VTRQS0pXUVRodnh4VE1qSTlBZHAwVkovMVEzTXgwZGFnVzdJVFU5SmlZbWZCMjRndzB4RDJTenRmc21wOHEvUjdYUGJoOGwwT0JzRFRBUkdRNk1NWXFacHRRM3oyV3ducy8xOXRzRExjY09peUZpQmpXRzVxRGg1Y3p0TjdFZ2ZXazNOUlB4bVRkTUlqQ29kWU1WTEI3Y1hJZDdoaU5Ed3hMY3h1QldiVjZmY1pVbmV3RGxJdk5wVjUrektOeWFXWXVkc05PZndzTEMrRVdqa0xmK1dBVFpnd21iL3VXamE1a3BZOVpnZE5XUWVTb3RUVnFTWnV5dlA1cEJlQ3ZNZHpQcXFxRVBrMzdtUzdlWmtUdEE4V0lrWGJ4R3VUTGhwaVpIb2VtTTJmNVZlVUpDMVFRQWs0Y1UzZ3pYTjRmL2I0NWpGYko2RUhFOVcvdVpLVi8rTkNFdVIzUVZiOEU0ZWZkN1hYMURXZ0JNREoxMko1LzRHcGFzazlFdFFJd1VWOHZVZi9uZ3d3LytOeDh0enV0eXd0cTFxMzhCczl1ZmMrQ0h4bTdUcmcySUl6SHRzbVdybzVrbURFYTZ5V1RNbHh0VTdHek9JRkx0UWN5QkE4TFVmN29zVDhiWGJqUGQ3QXk1YlFZT2Naa2Y3NTlyM1kyZVllZFlmcnlNZnFPQlFETnBEK1hTWnA2WTNvU083UFFYbWR0TTNnM2dTdG5LMW9qSXAwVVlvWHFZSllKWlcvbkRvWCtydDJ4MFIzWnp4M2FqQUY5TklGM25BTlhCckJFVXFnRDh4RkVqV0hnNndCaVpoNDFNVzZEQU5hRUo0YzV4NEdQcFYybDlldGd0clJ6bTdjdWZybU93SzZUQkx4ay9Sa01SN1RvSlAxb3JOOS9oSEY4SEg0QXNSbzRkY2FkKzhDUUNZd0hneGVrL09mRElnLy9Eckttc0xoOUlBTlFnQUxER0ZETk5pM1I0Y0hHemlMdmkvQllmVDZPSk9mMDZQZHphNG84M1prYXJqcHdKVFZGbWxVcG9MaEo5bUhxbXdzNzJDbThzM2g2bE1GQlk4bndKendYdzFWKzhXMkFsUkgrb29JMTJRNXE1a3d4dllTbC85a3Z3UXhaeExvUzVHcklIYkR5VWI3clZaWGdMT0lHeisvYTQ0UmVmaFFZd2dURmJzeVVBSTllemR4ejR5aGVlc0ZpTjE3bE1zSGJENmwrb1RGYitYRDFpN1gzQjZPSUdIZEpxMWxaSHRjTUZOdUUwMFdmUDNnMEl5V1paVncyMmxyam9Fcnc1U0JXdXVhUnZSdG5aY3J5RE1BL0x3YjU1ODExUE41YUgwcVFvQUl5c0pEWnVVa3dlaUxsRWJtcU53YTJZaUovR1RQV2FldWZOenZHN0ZRbndKT0R3aXovVUhrQ0ZTMDNtall5Z3gxeTk3NUV2dnV5anZTbHQ5cVpqOCtZTnZ6QXlNdnJuVkhlMW1YVWg4QzFDRFlDZHl1ZjFyUk5uaVVTTHZoNTJTZzZFdHZta3ZPbG9LT2NGRlB0dGcxazNXVEppdTRyT09yTUlzMG1SN0p0U3NkTXRXYnpDTFZ1NlZ1OFJESnVSTWNQSHk3eWthUnV3d1MvMlYxM0FxYzAxTWg5RlNZRE84ZXV1ZGZVTkc4ekQ0K3krM2U2TU5BQUtBQ3d4RVJGWG1DclVlaGEvOXRoZlJZOEZYM2dML1JpQUF1RDh5TWlmMit1dkdxczR1eXJ6NUo3ZVhRZVpTVUZpU0xkK3lwVjArRXZRU0tkb2dTaENIRk8yR1JNU3paSGl0T213ZHY3VElZNlpTRFA3NUcyUkxzYkZac2gwb1lWbjE2ZnhsZHBjODJLTEFuQVBadW1TTlc3RHV1MnVGOXFCYnYxNnhyYTlIalBGK0RTVGRzLzhKZ1I4aGdta3ZCSU9XWkZnL0xwcklBRDR2WUlZRkFEREwvMElMRDhCQWNEMVAyTm5qaDc0eW9OOGREVEM3RnJ1eHd3Yk5xMzkxT2o1c1QvVHdSYnZkNkhnL2UxOGpzOGw4QmtFZnU3NVVxTzVaSkhQbTlvcnllR1Z2SEJxMktYUU5FaVJMS1JzTllBdkRJM2xlZDBadG9WeWpuOVNzTms0Um5DYkVZZUZXVHYycnJ2bHk5YTVWU3MyNms0TGw1REc2SGJISnpCK0xCUkNPTjBoMzBTRHB0QktGOHk0OFd1dmNyVVdBdUFNQlVEUUFPQ0gzTDkyOEN0ZitvREZNRnlnZnZ6amdYbjl2ZGVYeTVWN3dxMnhaclQwVElFNyszb2V3QzhqVEVKZkl2Si9mc1I0TS9adm1lWlNrMTM0YlFqMmpTZisrM1gxbTBkMjE0Y3plcHJzcmttNGd4SlRQanFIb1Z1c21IVEdKMGJkNE9samFHY2VmT3JRSnJKOWNaZ25MRDNUaTlEcjZBanJDMXliMStCeGFtL3FJU3ZtbitWazVCK204d2VoN08zT1BBaFZkSk9MNTd0NmYvcFpnTW1oVTI1aThMampSMXB0ZEtrdHYzeG16NnRmVlFTUHkxSUE5TStidDc1YXFYeWNIZGthb1VuYUV6czN2R0dIQTZBbEUxMHdJZWVrbTMvbW1mWi9RNm1oREVsaTNWdjV6NHFteWZmMTBrV1ZTMGt1Z2xybEZSTmlORk1MZjg3dTU4NFB1WW5KVWRjM2I1RVlPQll3U2ROSVFvWitNa040Yk5mMkhleVNpa0l3blJ1YjErbnEvSWhyQXVPbkJ0d2tYeVB1TndCOTlEODVzMmZYaTdKNXhMbGNSbGk3ZHVXN0pxZktUL0V6enBUTzAxWlNqZG9NdmdpbFVPd3dxUnZ0QWN3V2w2aFpHN0taWGE2WDZOb1hERnozb3NyN1ptT2FVdm1nOWpHYVE5b01INEY4UitIUTBkSHR0bTk5UjNReU5SWW90Q3VxSWNvcm1XbXJDOERQTXBmMTVNckZycm9sZlJEb3pKNmQ3dHpPRjEyTjc1N2d0VkRRYWk1LzFlR0gvaTcxV3VGV3VmL1lZK1hLbFp2cnJyTDcvTGxSeW1Mdk94MGdaYjB0WUY1ZnIrc29kVXZGbzBvMk83Um96Z3RvNFV2WEdXOWd0ODZROVlWZitRMHM2OFVpVVNTenpxS01pQkxIamNlYzhXbmRkWGYxdXV1dmZUZUVRTUg4UGVjSFRZRHBUQnRJYWdZSnV5N1FZRmNPenUzc3pyclIxV3RnaTBmN1dRcUFYUys1cWdRQVBES1prYTd1NHNJZER6eVFPc2NlOHJqY2tGdXhjdGtERXhNVDkrbVZVdE9nZFFQd2RWbzlldmxJRnVzdnFtZHZPbFN3aSt1ZXQwK25YbUJKM29DQ3p6N0xpeXZyOUtrWTZwa1NETi9SMGVuV3JMVE51c0NvcWZSZzZpU00wUlAyQ0xTSEhKd2JYcmZPWmErNjFyc0FCSjNaL1lvYjJiTkRqMW5iQTlhWnZ6LzQ2SmZ1dEFneDBsZTh6TEJpellxN1hhMTJneHgrSnpTQ2Q1aGh2NUMzL1psY2JqbDNaRHM3TzVlN2V2WjJ2Y20yb1dPU3VOQUdUSFo4M0lWdkxKckxPTXRTWDBEbDBnUDA3UVpmdGxrVWNmYTFTTVJzYlkwUXpjc3crRlFrbHdLelEzcUV5QlZsRmVlWnVmSWExMy83KzgzdGNlYlZWOXpvM3AydVVxbllIWUJzNXQ4ZmZPUkx2MldoTVdaZjMzOWcyTFp0MjRmSEp5WWVsc28yalFDWUhwWXVtVHJkcGEwd2M0eExnL1oxdXJEYVhrVGJYRVNTTkJvellKdkZmclBKUHAxaUdpalNMUE9PQXMwU3g0MVZjNnIrZkIranZiejEwcUMwL1dxMzZBTWY5UzdEbVowdnU5SDl1eVFBOUlpNnE5OTY2TkdIdnV1REk3d0Z1dTJQQjJxMUtiNTVReDBYYjlwY0tIR1RKMDF1UnNJVm00aUZ1TlNFbnpZVWxYOVdmNmpYak5Ud2w3ekdSVkJqbTVsLzB0MU1kdGpHekVaN0l5WFQ2ZjU4Z3ByakpzcFdDK1RqYWdmZTR1Qkh4TG1FcjB3TDdrdEZ5VElhMmFQWkNDWEdhOTJsSDVrMWpjdnlOdUNsd0lJRml3cmxTdmxYZFF1bW9iRXZsRktEcEpGU2Y0amVrdDZZdjFaWFNoSEtOM3RxU0o1Q1krRHJvOFkvK2FNTUxkdFhqTnJnUnlhTjNDRThLVXc4S1Y5bTdlMEU3RVJ5ZGs5UkZBQzd2QkpwRWNaZ3pzcHlYclJtbVFZL2FkYTVZWXV1RldoODRJUXJueDFTM1hDaHJ4LzY4aGYvMGtkUDRkS1U0RExFNXMyYk4weE1UdXl0Vm1wYXR4bDhjN1ZvdGJUWGpCSGVWTHl4bDU0bTkwdDFZYzgveWsvMmlLVTAyTTBybUluUWhGL0NOL1p2UUZSY01LYlpZZEpDdC95OG1mV21BaFVya2RnZ3Z5UkNGS1RoZHcxNEtJalBtMXdLbExac2R3dVNTd0JVN3N3ckw3aXhJL3QwQjZDV3lmenpRNDkrK1k5OWFBb05wWnhEd0twVnF4Wmc4aDhjSFIxdlhpWWxSMCtiRmt3T2lsWURSQWo1TUl6MllCSkswaW9SNGYwVnB3SFJvRXhBam5hNXdkY0hwTU5iK2NkK1JNTHFFWWZIWWJGZkV1YVZETENLNnhjL1lsSHZvTUZadUpuWmFlSlBqbWFrTGhzNW1xODhhNURwWmZpRE93bXkxN1BGdWNhWGEvQ0RtOXJHK1BpNFhzZ3lhL2hyTnlQakN1czJ1QVVmdXMrN0FiVEhtWmVmYzJQSERtSUJscWxsQ203Ri9vY2VhdmxDbnRaNXprRllzM2JWRXhNVFU3ZngyR1lLZnNTMUdYY0FRdXkvTlJJanRuMGVzMGU3Z2RFYWwrS0tNUzV0YnMyd1dpVHFBbXVLRmJ3MThtc1JMbmZTZnhwNzVQSmVBaXFaN0RGMUg0VVBDVmJ5dUwyRmlVZDNlWXlYd29BQmpHOFptVFhPZTJLYzcyemtjZDVpaUFMRFd3TGdiUElMU0lUeEUvRjlkMzFFZGdHRk92TUtCY0FoVjg5a3YzWGdzWWZlNjBPYTBDYjNPUkJidDI3dEhaOGMvNlY2dFhvOVZvZ3RnYzVlaFZic2thTmV6eGh2MjNDeFg0K1V3L1ZodGxoQmk4MWdDT1Q3bXVUbVR4eFpReXc0TTY0WTRnV2t3aHVnZkZzaDRSMWIyOFJ0Uk11MEFkUGtNY3ZzWjRQR3JFS0R6SHdKSDZOTnhPQWROYkM0bUVac2FyYjNKaG5kUkFEVWJLajBmTUNIWUJpWGpUcUZHakY5elB5MFlYbXAyNEZkWFRaMG1oQ3VxZDlXOENITWI4VnExL3YrRDVrYjRDYmdtWmVlYytNbmo2QXcrZnYzUC9ibHBvK0NCclRQZnc1dk8yemF0R2tWQnBjMkpDYndoLzgyL1JkL3d3N1JGMmN5dVVWVm5ZZXEycUdRU3FVcFhjTnhxVXdoWDlpS0VaMEpnbyt2Q1crQ3ZHTFJtTXZsVnRZemJoNjlBalBWNnJWcHh4aVlvUWdtNGNQc2lHZDVwUld1MXR5YXlXUTNJSzBXMFh4dW8xS3BqSUFCRHljdWxnVUQ2aTBaeUYrWklFNXkwN3NFZjkyUU4wRkpRVXhYQStBWGV5Y2N2QkR0WWxUenBCWkFodWNEUDNMcllTRm9CanhONmpVRHBtT0tNWDB3cHFDWGlyU0dqemdERkdYRkt0Znp2cCtTbStBYnBya0VHQjg4dGorZnJXOS83YkhIRXQvMlMyTVdsNWpESEM0L1FKak9BN1FJSHhnWTBENFBtSFZ4cVZSYWlQVjVsbDhnS2hRNjFycXM2OFJzblMzbWl1dXI5V29KUXFZN2w4M2VWcTNXL05RZGk0Y0F5WVdVSmRPZHlXWTZPZk5UN2VkZENIN2ZrQytQbmQrL0NNRnBOcHdkVXlaaXJWanBldC83UWUrQUFLMVUzTmtkTDdqeXlMbFB2L2Jsdi8xejc5MFNzN3ZXSE9Zd2g0dkdOZGRjMHoweE1kRkorM2htdkZnOVgvMFV0SVIvbGMvbCt2c2hBS2cxdE1jMFlTRm9HUVhBWGQ0QnhXeXE3TTd2M3VGY2VlTG5kejd3Vi8vTGU3ZkUzRUdnT2N6aERjYUxMNzQ0dW52MzdsT2t3N3NPSHdOK0Y3eDdGeFFFTEZ1cVVCVGl2MmFOSXZpMUlPMGRHZW53VDlXb1ZpbnJJU0RvTktEcE1TY0E1akNIdHdBblRweDRCcXo3bi9VSk5wMGVCSUdSOWZwdUhVNktTU2NTUlJhbm1jajR6TWVveHU4cytvKzh6SVE1QVRDSE9ieEZ5R1V5bitkcjVpTkdEb0tnZ2VJM0NDVUZReEFXaURNNVlaL0Y4NlFQZ2lLdWJmbE9qemtCTUljNXZFVll1blRwTG5EK3NCZzdVTVRnTWFWbS8wZ3d3QzhRdnl4ZGdTRGhnejhnZmhjUUFja2JORzB4SndEbU1JZTNDTTgrK3l3L3BmeHNyT0lIcGs0d2VqVFRKNFZCQTFGdzhKdUgxQUFnQUdwVEU3WTNNS2NCekdFT2IyL1VxdFdCZUxZM2htOWs3aVNsdElXSXNPNG40NHZLcmpvNWFRS2dVcC94THQrY0FKakRITjVDMURPWjQvRnNEMlp1UXlZUWdvQklFejgzcjNWL0dWb0F6QnFXQUl5dno4M1BnRGtCTUljNXZJWEkxT3ZIMHJNOW1EcEpnY2xGcllTQ0hidmt6ajlmQUVybUQwc0E2QVgrS3UweEp3RG1NSWUzRkxXenNlcFBpaGxiSktHUXBFYWg0TDhxelVlTStRSlEzaEhnR1FBS2hsbGdUZ0RNWVE1dklhaWxrOUViWi9mQTNHbmhRR29sRktEdVQ0Njc2c1M0cTR5UCtUTUIzQVNjR1hNQ1lBNXplQXZCdS9XdEdEb2M2dEhCSHJoYlVoQVdpRk1aR3hWVklRQWMwOEVmbHBidkFFaGlUZ0RNWVE1dkpjRElrYm9mVVl0WlAwa1FHeUx2cm1IbXI0NmJCbENibXZRQ0FPbHE3ckMvU2x2TUNZQTV6T0V0UkxsY1BqRTFWZGJUZ2FSeXVlTEtGWmllK1A3QUN0YjRnWGgwbUx2N3BLQUpTT1d2bG5VbndDR092Z2RZZHk4Y2ZPZTF1L3hsMm1KT0FNeGhEbThod01ERCtOV21uV2J6T2hrN3Btb05URS9HOTFRQm8wZDJMeUJvZDU3NVNiVmEvWkRMMVQ3bGZ2dTNaOXdKblBHZ3dCem1NSWMzRGt1WEx1M09GckozRnJLRkZpOEk1QXhQTTc2Zkgyd1psK25QdXN4eWx3VUxJMDUrODNhWHlXWEdhNW5zamtMT2ZlTzF4eDQ3NTZQT1lRNXptTU1jNWpDSE9jeGhEbk9Zd3h6bU1JZC84SER1L3djLy9FZjkxM2JEbGdBQUFBQkpSVTVFcmtKZ2dnPT0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xX1BSRSIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsidXZtIiwiY3JlZEJsb2IiLCJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwibGFyZ2VCbG9iS2V5IiwibWluUGluTGVuZ3RoIl0sImFhZ3VpZCI6IjMwYjUwMzVlZDI5NzRmZjcwMjBiYWRkYzk2YmE2YTk4Iiwib3B0aW9ucyI6eyJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJsYXJnZUJsb2JzIjp0cnVlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwiYWx3YXlzVXYiOmZhbHNlfSwibWF4TXNnU2l6ZSI6NzYwOSwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0Ijo4LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjMyMiwidHJhbnNwb3J0cyI6WyJ1c2IiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fV0sIm1heFNlcmlhbGl6ZWRMYXJnZUJsb2JBcnJheSI6MjAwOCwibWluUElOTGVuZ3RoIjo0LCJtYXhDcmVkQmxvYkxlbmd0aCI6NjQsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjoxNSwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjEzOX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTA5LTAyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiT25lU3BhbiBESUdJUEFTUyBGWDciLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI1MDkwMjAwMiIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTA5LTAyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjF9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMTAtMjEifSx7ImFhZ3VpZCI6IjQ1NGU1MzQ2LTQ5NDQtNGZmZC02YzkzLThlOTI2NzE5M2U5YSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiNDU0ZTUzNDYtNDk0NC00ZmZkLTZjOTMtOGU5MjY3MTkzZTlhIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkVuc3VyaXR5IFRoaW5DIn0sImRlc2NyaXB0aW9uIjoiRW5zdXJpdHkgVGhpbkMiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MiwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCIsImJhRGVzYyI6eyJzZWxmQXR0ZXN0ZWRGUlIiOjAuMCwic2VsZkF0dGVzdGVkRkFSIjowLjAsImlBUEFSVGhyZXNob2xkIjowLjAsIm1heFRlbXBsYXRlcyI6MCwibWF4UmV0cmllcyI6NSwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfaW50ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MTAsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlEQ1RDQ0FmR2dBd0lCQWdJSkFMS0tqMHNLVFhEbE1BMEdDU3FHU0liM0RRRUJDd1VBTUNFeEh6QWRCZ05WQkFNTUZrVnVjM1Z5YVhSNUlGUm9hVzVESUZKdmIzUWdRMEV3SUJjTk1UZ3dOekl6TVRNek56SXhXaGdQTWpBMk9EQTNNVEF4TXpNM01qRmFNQ0V4SHpBZEJnTlZCQU1NRmtWdWMzVnlhWFI1SUZSb2FXNURJRkp2YjNRZ1EwRXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFERWlaaDR0SWNBVVBmVWtDbVhiTndXRElGdld4eEdQaEpxLy9GczN1UEJBNEpRVVhpQUhXVW9mMG1OeGZVMzl5ZkszOS8yeVhnT0o1UW9aR3pwUUVHU3c1U25veTArNjFvZUkrMElYa0FhTXZmVnZ0bU5vTzJPSk81K0FEdGxEdTZyZ0p1VjZJcExMUjVTS1hPVTF6T1BIWXJBUHNZeHYzVUxnMjZXNjN6TVRxcENOQ2c0cHp3WlJ5WGpjTHJVZUN6RjRYY2YrcC9HNDJaZEd6QmVaYzR6K3ljY09NeEJ4NHdzR2NQZzFIRnl6WGwzSm10eWc3elVERXFiamVIOE5zeTkra1QzMW1WWG9jaWdCM2hHN3djdGlJbjZBNWxQR01QSm9JODRSWmRyQjNlczlRbEhaV1NudmRKR2VhTG5PNVhxNG1JaHVmYlk0czFVcS9wdkdzQVBBZ01CQUFHalFqQkFNQjBHQTFVZERnUVdCQlNPRW4rVkZoSS9aR1VUU1VlaEV5T2x4eEZ4THpBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQU1Bc0dBMVVkRHdRRUF3SUJCakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBcmFEbzh1bXJlalhOWVE2QlJCbjRYc0RlaERsaWozTEFOTTdKN3RpbWFOTWZveGFkd3lTMW52QThlN2NPN09BdzNpZWxZak82b2lTcHpVc3U2ZUgybG9aMExLMGZrb2lhWlpuSEtiLzQ2bzZvOTk0N2k4dHVBT3lvVnJHUHc5YzI5Vm9JUWtFM1FqLzBQSlptVTBZdWJpbFJVTng2bGRLMjVhMG8vcThsazdCTDMyTmpXZFR6S0RKUGdkS21yd2wxbTNLMmVHbXYyWklnQVA0cFdVbWcwREY0WFMvSmFua0ZpYlJaaHM2S2cwVjAyRTlQY2JHeVhJbytoeFU5UXNqamdJUHRGaUY4K1Z2UWJQVFZlTTFaYzBDeFBtMVh4MjJraTNJZVBwYURpZ3pTMEtmeGs1Um5GdHFZL1pPeVZ0YW0vb0FQOXRxL01UakVRdTFmbHJwcFJRPT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSG9BQUFDb0NBWUFBQUF2ci9yQUFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFHN3RKUkVGVWVOcnNYUW1VWEZXWi91OTlyMTVWZFZXdjZlN3NoQ3dRb2l4QlJBeURJakNpRE1Jb2pxT0R4OE9NbzZPZU1hZ3pPdU5ST1JKQW5VRWNaMFpJNElBT3lMNEdTQXlNSERpREpDb2dvRUNUclJPU2tLMlRUaS9WVmQyMXZQZnUvUDlia3U3S2U2OXJlYlYxdnd2M1ZMcnExYTE3Ny9mLzMvMy8vMjVzNDZaTlVJVTBrekgyT0w0MlljNUJrQ2lGTWU4RklTNnZScC9JVldxVWduazU1a2lBNzRUVWpabFY0NGQ0bFJva01HY0RYSTlMbVdyOUVBLzZlbnFrQU9nQTZDQk5wU1RYU1Qxby9OYW5ZUC9xVmg4ckFkQUEyOUhGK0RpK0pxWWd3NmpBMkRKOGZRaHp4M1FIK2doMnhtYkRNaGRpS3JKbXlzbzFCYm9lTkVpeTh0UkxqTm5LVkhPRjRuWFlNVk1KNU1EcW50SmcxMkViZU5CUjA2UHVQT2l3NlZGbnVlNDd6czBTTDZSVGk3WGlDd1hLcWR3NkYweTVZYlNrRk5kcmZPZVhJekNUbGRzQTdETjlRcUQ1WU5EZmZnRFVJRU9NM0JDMTlDdVFNcFhjdHltbjBWTXpXaFlBSGFUcFNOM3Uya3djVEJNaHMrRDQ5VlloekhkalRwYjRxMVRtSjYxeXg4K28wVEtvVnpEL0xnQzZlb2xpNHpkZ2ZwZkw1MCtWQWZRcG1HOTIrV3cxNXQrRHVUUXFvTzVxNkRybUVZL1AxVExLVG50OGxtelEvZ3JHNk1BWUMxSUFkSkFDb0t1WlloVnFsNWVCR20xWTk0cTF0bGc5dzBBWHRKckhpdDBLOUN4RzZ0cjJlTU1DVkhjQXFwd3RMbU9ZdHpnWWRGVHV2bnAzUjFrOERrS1NnQ09HYkZ3a1VFNnZ2czF3U2xPNkJsRWxCRTJ5REpxbWc0aEdnWC9tMHdEWkxIWmJqYlpMdWM5ZWFmanUzMXR1bG5Ed3NWT2V4WHIvNm10WTROa081WEtzUzhiTnRXSzFESzl5bFBkSUJGZ29CTG5IMWdMck93VER1UXpvdW42MFhuTDZ6cnNNdFJoUWM5QVJhNEk0QXF5cUtnZ0VYSC94UllCTExnRit3WWZNRHMvVjFmNjRzUXFWcXplRUcwVjRJRVlRRGdNY1BBaTUvL3d2QTJqMVQ2OERUNDNCMEdBL3FNaks3Q2gxdDdRWWYwaGFEbGhUa3lFWnFOTFlYR3h2Ynkrd08yNkgzTDMzZ3ZUZDd3SS9hUW5xU3FxNmt3TmVjOUxUT1NrS2l2b1lpSjA3UWIxbE5ZamVIU0JDQ0R4SGttdHJCYTduRUZQMXFFWnp6dzVHN1RZNmVYQVExR3RYZ2RpK0hhQ3pjMXJQQXRXY3RnbVBXTXlnYSsxbk40Tys4bXNBQnc0QXhHT21rbkpldElWNURIQ2loNUVSZ0J0L0RHelpNaEIvZXhWQWMzUDFxTndQcmFZT1FDUEZZQ3Nxai83Mm9mNnMydXlHSUlzSEhnVHg2cXVndi9rRzhCa2RKdnRPMGorOFlDa2k3UjQ0QXZETU04Qis5Q09ETmd3QnFIZGFwYzRob1NTamNzOGU0RmQvRGRoZGR3RU1EWmthUUxrUmhnWVNUTFNvNGY3N0FmN25Ub0MzM2pJMXU4QzY4NklvQXdkN2FHMEYyTG9WMlBVM21PTjFwSXA3MjhtR0tLYStKSnlZMmNhTndGYXZCcjd5YW1NWWdsK2pzSDd4SHdEV1BnNndiUnRBVjZjcjVUbVdTOHlBL1VER1Q5V0VoTnFPdGhLNzUxNFQ4R0w2b3VUQUF2NFFRN0Q1RFJiWTFPQktheVVhSDJ6dFdsT3d5Tm9rWU53eUFkSFdCdXczTHdDNzhVWmdOL3dBMkVzdm0wSktuOUgzeVIyNS9YWmdOLzBFMkU5K0NwQkltSjNuVmE2dFZZY1BHMldTdFZzVlFVZk5aZmZkRCt6ZSs4emZMMkc0S0cyYWtxU1lmbkRMTnVEWFh3LzZOZGVZMmtQMDZQZVlSY0RnRU1GV3J3RjQraWxncUkzaWlrOEFuSHV1T1h3NFBUOHdBSnllUjM4U0JnY0FXbHFPMVh0OGFtODNLZnpKSjRIaG1BZW5ud1k2MlI5cGw0TUlVS0E1R2tBR0M3enpEc0N1WFNCV1hZdU0wR1hXeGUrMmsyQ2h5OHZ1UmJxKzV4NlRxa3ZWbFEyejVocHEzWS91VlJ0S2RDZEthQllORm9xUU1ldzBCZ0pVWFlCZ0hFTGNqS0NaLzF1TlFvMFdTNWVDdU9aN0p2ak9EWjZIUmtzUHZyWTQxQUZWRGM0RnA2bEZJeENBQXJSbURiQjE2MDNMRW4xOFF5TWx5VnNRU2Voc3pTOGtrV0ZHOVo2TW5XeGhwdWVvcmJObWdiZ1d3WjdaRFRBNjZ0VDJHVllVYjdaRGFlOWdYWmVBMDdFZlZBNzFKMm94UThvK3lqYllOcDBDV3B5QmhuNXlma1JUVnpWOFRJSytnWDYwT3d0eHI0cWhjWlJ3VGxTV1RKcituVitKTkpsQTNyQUJhYmZGYkNpVmJ6WFlOZHQrSmkraWVRUWNDWVpYdWJhZFlqOUh0STJ1RFNPZysvcE1Wdk54VEtieG1OMTNuMmxNOHZLZ0toOW8yNi9ic2dYNGRkZWJVbDZ1a1VMYVNrYlViYmNCckZ0WGxIVlo5VVNhdG44L2dyM0tHTHNOVDhRSDY1cmQvNEJoZkJubCs5QjJmMmF2YkxCSnM4a2FUNmRMZDFzSVpES1Via1dRbjF4blNuTzloeUtwN1dpWXNlK2padmYzSHdzMGxlZ25BeHBlQnNqMGI1L0dmWCtuS2FsaVc3ZVptazNXZUxIU2JRZG5rSzdoVjc4eWphaEdpTUxaTkc2RGZSQnB2Q2xhbXNEWWRFM2pNL2NQSHYvbm84bGdJdGVMTk51bThVSkJKazFlY3l1d0o5Zlh2eVk3SmRKa292RlZTT045UmRDNFpYaVpMdFM5WlZuWDFRUGFkcjJJeGxkZFo0Sk5ocEVibGRtek1PUkczR3FOeWMzeHhweklzTFdTRExUdmYvL1ltTzNWZHZxY2hKckc1REpkcU9vQ2JUZUFqQWlLb0JHVmpZem9CcFhSK0p1ZlNRZ1VSWWRiVmpjV1hVOFdrU093djNjTmhZMEYvcTA3dGowYzF0RWZGL0NMWHh3TGhuRGVRRUNQZDczZWVBUFk4OC9McUxXNk1hR1Fuem5uU0ZjU2UvaVJZNEdOcVpEQ0VaUEdOLzVXUmxDNVM5dDE5dHh6RXJ2emx5YUxWVkRBQ3cyWW9GL081OGtNenBJNHAwWHo4OEU4cVhmeXM4RTBMTGk1ZVFGMGRWMEF1aTVQWEtCaFJGNlM4UGF1cDdDUlNRSjl5Z0JOemRTMUxBcjdmR3o3aGZpR2NoeUZNNTVGZWw4UHllUVFDb05Vb0dLT0lEYTdkQ0Y2TktHL2lzRDA0Yi9GWkFHVHlVS2dLSmJzWWtYaTM4RXZuTU9naEMwS1ZIK0tJdzhNdU9vOVV2ZW5nRSt4QmFuTWFqdE43OUpFaW5OUzBGaTlBcVRpRG1VaThDVEtpRHVDdkE0VjZOODBJVjRTSGhzWFpOZXlPRitCMnZ2ZldOK3p4Z3RwU1ltTUxWbUdhWmtxM0hiTzJHVmNraTVEck5ibGRQMWJpUFRXZ3Nab1pBRDhEcjlHbHFSTjQwRU9VbjBueE93eVJaSmVWMEtodjJhVGFUVHlQR2VjM1lTOC8vV2c2eHJOMkRmNFZnbkowb01xZ3k1azlsdG9GYWh0OWh3RkdybWVLYks4Q2tuNzY4Rml2TWIyN2tLU2ZITmJ2UGxRWW5UMFlWcmZMV3lybXo3bFllWENsbmpUczRoNFFYWkdXV04ya0VxMjd3cnBkMnNLT1ozTVp0NmRWZFdkOUplY2xTVUlNOWJjR28zZXdZUzd2OFNPYWY1RzlBQ2Z4TDkzTWZPcWdHQkphSFVTTFFGc1FwMWNobDc1SnhITVU5MUFGL2dmV3VhUnFDemZrVlBWUDBkYTEyVXkxV1ZGK1N2TzJVTE5oYkpKL1ZWZGYxa1YrcGU1cHY4SnJVZ3RRTGRHcmpuRk56VDloNEx4OHhHWDIyWE9GempoSmd5cldyb2dwaWdyaEtwdDRsR0pLNG9zZlZ1NGdZdzVwMmwzajJyYStWbDAwQkZ6TGVqeW1wTjRWdFcwWjRhejJiTVJsOTl5bDRnYWFYYUlTLzhxU2J5WlJ5UytDS243WkNmS0pxZDhUTk9lN1VzbXY0Z1czQmdMV0xwKzNDbGlXU0VPNzBzay9sTFZ0VDdYOWVVY3pnZkd6K0U2NCtjNXhWaXRLRmc2bGN1dVJKN1BJTFdiTy9TQ1BxNGZvNHp3NEx3L29XbGZjc2VGdFFpSlhjaERrblN1N2tEYkpDRnBUVjJmVW5OYmtld2hsY3RCSXBPQkhGbm9RVi9YRk9Tc3BrTUdNeE1NV3NNUjBGVjlBMnIxZGpldGxobGZnRXJLRnJzNVpLcW1QOEdCNitHUUFwcE9reHM2SkZRTlJyTEJYV1cxTk1neW1rQzdDY2RmTXJnUUZ4bi9GRHJjSjl6akh6U2I1SHh5Z0RBM1VtOXB5bHNoWWl3dERmcTdKcHBNMW5WS1U2MkxLZGdFVnpnajlDMXhKb0h1QXJic0htRVIwQ1JKdVNhWG1SVVJCRXlxbmdpczFwRHNGaVJKZTJpMDl6U2xLRURLQXJDclozeEozZ3NUbUpoRVNNcXVSQUIyOWNibmt0MHhQeVV1U0pYVDVyTDk3bnFyVUpDTzlhZWZmY3JyVWZxQzVIL2lsWkRFSU5WZkgvSkdxV2hBMTNVSWRBRDJOS0R1QU96NjdDdmU2QTBJUUs0VG9BT3dhek1tNTZlcXJxcm5Ra0RJUHRDdGdpa3JTUVZIa2FoT0NtMUI4cW9UblJ2Q09XUzVjWUlMaExYQ0Z0bGtySG9vdE95V1ZueFp2eUdzT2xZelZRMW9HUnRLamR2UzJRbVNycGRVaG01MEZwaHJsZDEyb3VMbnkvcVBHQUNtamIxajdpbVd5OEZnSkFLYk8yZGcvZHhGUTBPQU90SnBXRGcwWkxTaGgwN3JNeFpoTUZkVjVWamVzdjUrbzkwNzJ0dGhPQndHaVdiKzZDUXRUWWVUQndZbXJWL0RBYzJ0RFdCUExWa01QVjFkUnVPTFRUUXprOGxtakExa1lVVUJ0NWthNnNqZTlzT3dhSEFJenV6cmd6RlpOclJWaktOTHFnL1Y0VGZ6NThPZTFoYlkydEVCaXNmTWo4b1pkSTJPd3RKRC9aQ1dKWGlsdTV0V2RyanVDYVE2a0RDL2cyV0hFTlNlcms0WWpFYU11V05oQ2NHbHZUdmdES3hmdWtwYmxTcitLNUxWZ1k4dlBkbm8wT1pzdHFUZ1BBSExqWjJDU0xXY2c5ZVVIQW5UMjIxdDhPcnNXWERSMjdzTWtHeDZWakgzSUt1OGpKLzFXNmZ2dFV4eVBocDlrZ3dwc0duZVhPUEErZ2pXZzQzYkJlR1cvakI3dHRGV292cFlOamVCSVRhZzBGUEJ5dzhnMkNHNTRoTkRjcVhwbWpyWEJqbEs1NEJYUVhycGQyaE03WXZGNFA1VDN3MXpScEp3L3U3ZGtFRnRmR3JSSWtPTHFMTVZhNndWa3hoRndoTFlxTFdkdU5BVVVWVlg0U2RCMmJCNHNiR3p3bWFlaGdTYTZKR09CWDhDUWQ1bWdWeFZpMWFZUzIwb0hZekg0SmVubldxOFIrQlMzWGlOdHgzWlJpQU5aeVJrWjFoZ3MwWUNtaHBCbmJyMmxLV3d2WXFhN0ZXZlNKVUZyUmpXSXhxbi9qblRHck1yMFZlOEVoVW5xWHdjUVNaTmp0UVk1SHBQdG1INE5JTDkyc3laRUNuOURIR3ZVMjY2ZmRWbzIzMTR2RVowM2NoZ2M0dkdLUzB2amNicGN0UnZ3Y1Q3UUpnbEFIK1UvYXdzV1JhMkprY0RUUzZKRFEyd3NSK1g5eDFHc0lzSXFqRFlnVis4cWFMVUxWbDB2ZGF5cmdPNkxvUEdNVCt4NEFSNHNiMFZtbnhrUk5rUGtNa0hYUnZRdFcvREg0Vk1INkJiQVZCYjNqODhEQ2tmSW1pOFhBazAvZVNURE91NktRRFpIOWNRelBqNFkzTm53MHNkN2RDa2xiK0JsWmNqZVZRaDAwK2VFWXpKRlFDYit2aFJCUHZsOWphSUlkamxhSFZKMUcxSHZNYlRkUUJ5WldpYzR1T1B6cDFEWnhqQU9RT0RNT3Bnb0ZIZjA5Z2VKaHpjTnRxVkltazBnN04rOGVLandaQWdWZFpBQzJNbUdxZk9YM0Zrd0xwaGRkd0ZvMEtIdzdFbTJEUnpudXVFa1Z6S0R3OUVJckNsY3diRUEwMnVudXVGL2I1K1pqZjB0cmVERkZZbVROTVNKZ2w4YjI5cnErc1VjRkZBQzR1Mk55eGVGTGhRTmFCeE1zbTJ0TFZBTkJJOWJuS0Z3STU3YkdjdUNtZ0NlYnMxaVI0c0Q2b0JqUU5OZWVybWxLdlRwSXpIVkd0UlZqZk5xNzR5YXlha1FpRmowaUpJalNVa0JTWHlrZjgwY3lic3huRWdFaGhnVXhObzR2OVVTSWFkYmEzR2hIMUEyMU1VYURJRURzWmk4TWZ1Ym9ob3dURmpEV20xRitOV2hTaFFjdXl0VnN6WFdRNmRWa0ZCcElWZC84NFk2K1htZ3J4RmFJaDhEOThiem5zdWpwbG1iemFYK0Z1WFliNFVjLzZGbDNRMTM3OWdUdVc5ZnlibXIyRWV6TGVYckg3Wm4vZjhITXlyWU9JMG9sT2lkanlFYlh5bXlQclQvVXZYZzNHWVB1VEcxWWV1Ry9xL2NpWTFxSUNycXlTUUQySHV0WTVYT2hIejM3azg5NFFiMFBUZFNkWjdmUVR6bDF3K3U5WUI2Tk14WCtYeS9CME9RTS9DL0lWQ0doc0toYjRRRG9kUHcvcStPWDRCb25Ic0kwMXdPTGVGQVA1bmx5STd5NW5VSUMzV3F3VDArT3RmY3dVKzV3aTJSMHA0Zk9iVXpqR1A1NTNxV0pBRmE5eGxndlZzYlcxOVRKYmw1cEdSRWFDY1NDU00zTi9mRDVsTXhxa3RoUHlvUzdIRDArNytBN3VEUkIyN2h4YllKMFVpa1ovdjM3Ly9iL0J2VGJOc0l4VTlubmc4RHFqeFJiV2hISTNtQUZVN1JEQTAzUVNTUUVRd1B6Vm56cHd2VHpDcVpCbjI3ZHNIdVZ4dU1vWXF6Umh6b2U3ZEh0Um0wMVU3alJFZWRObm5VUTl1R1VQcFNtaTJxUE9nRDIxQmFtdHJ1M2wwZFBSbHBPMlhDR1M3M3NYZUhGVXcwTVpaMFJNbGlBQTZGYnhQb0tMM1YyQjJzeURKU2x3RDN1dm5xVVdwU29CU0p6U09lT3A5Q056c2ZPR2pmeFBZbloyZGorQm55L0daQVRMRzZQMTBPZzFOMWs0VDM2aGJSZW1aUDVLRWMvWWZnTkZqUjBZS3kxVVlzVjZkTWxtcXZSNUY5MXJQSkQweWFiMm1GN1pmcXh6Tno5VEladURaYlBhZlVHdFhPbEV4dFJzMWVYNUhSd2U1WERMOVRVRFRXRjJNVnZOQ3Rabjg2Qk9IaDZFRkxUNjl1RzJ2RVkvUHdqNzMyM3Vzb2FJYjg4d0NjeGQyTUwyZVhDdVZWaFNsSHpYMFZyU21mK01FSG9HTEx0ZEZhSWwvMHpEcGNYeEd3VEJ5b2VOMHdTSkJXenpmaGFiOTNHU3k2bnQ3dGNMM1BQMEg1Z0ZyV0RsWVlENWt2VjVaSzZNTFFXd2o0anh5NU1pbnFmNXVtbzFXK0E5UUtENUlBQjgrZkJnR0JnWUt2T213Q0tEcHAyblc2b043M29FWTdZaXMwbzJ3V3BFYjJ4b3hVUnZSNkNMUURnNFBEMS9ocHFYNEhFZlhhaDBDUG9zQUpyOGFueStJd29zeTNZaXlPOGZHREszV0E1QjkxV29DaThCRCtuNGVxZms3YnVEaCt5MWRYVjBQUnFQUkVIM1BEckQ0N2tjVDJCZnQyZzNaQ3U3OG0wNGdqd2VickdnQ2JYQnc4TWRvb0sxekc2L1J2LzdnN05tenIyMXVibVoyRUtVaVFOTm05aFY3OXhuamRxVWFMYWJad2dZclFHSm9Ob0twSXRpZngvY091WTNYS0JUZlFhQS9PalkyTnNGVjlDMWdZbThhLy9DdVhUQ3FLUEJtZDVleHpMUk9Vai9tdlNVR2drNEVjK2FvcGlrV2l4bEdGakphLzlEUTBPWG9WdjFleTVzYXRwVUF4L1hIY0p4ZWlwL3ZRZG9YSlIvTTdxWFZCSGJldEdVOXBKWFkyRWVoaEZPZFVDTm9pbk5sUFJobVpHRFJlSjFLcFY1RTdWM1ozZDM5czF6ZWRscHJiSTZnY2ZZUVd1dC8xdExTb2lJamNLLzd5MHFqR3FqTEE5a1BZdU9wUjdJbDVJRjZvVyt5d08zQXlONjllOWNrazhsSG5Od29hOXJ5SERUTXZvMUNFY1cyRC9zMlJ0ZDVpaFl5WHJuRkxlcWhBUlRQUnVER3g3TTExTmd2b3FidmNCdXZrZTZ2UTgyK0NaOVJwd3ZRK2pncWJsaWZPaFFLR1JZNHZTSWxBMXJnT0Z3UFhlRmxWT096VjJHYjUwNFhvUFBIM1laMXN5S1JDTmp4ZldvSDB2ZnJDUGpuaTUyMW1oWkFOeXJZZHFSTVVaVHhnUklLcHR5RllOOVJDdGpUNHZiQlJnU2JhSnNNTThxazNaWVZyaU9GZndNRjRhMWl3YTQxMFBXRVFGMEpQVkU0R1dYamhaVCtqV0FuKy92N1AyNTVDZ1czcmF6RzZlUE8yQ3l4QXlVdkxYVEprcDhCb0FLL3k0dXB1OHZ6dkpqbmJhQ2QraVdkVG04ZkdSbjVYQkZhSFNxNVkyajJxb25DYitrMFpLMFRpVndBMjRvdXd3d0h0OXM0WWpPZlZvbWlLR0RRMjl0NzNCUWNqVjBkSFIwYkZ5NWNPRU5WVmVIUVdRblh3MkFuQ2FsaVBhN0IvRU9YOE1DUXd6RHdLSmJaQ2Njdm8yTDQvckREODIrQXVhUXEvM2tLY293VVUyY3FFOGZyaDVEU2Y0MTl4Q1pwRzFVZ1V6TFFGT2UrY044KzZHbHZnOEd3QWlHUFU1Q0xEVVpReFNrU2xMK3FoSUMyZk1WS0JEZkd3SHNKYjM0aTZqeFNqSTFWNVBPRjJCMURWUm1YY2tnZDV4M3NRNUdzakFIbGxJTlVBd09FOEQxbGFBaGl3YWI0cVEwMEdXTjBoc25GNyt5RkpPMlpEdnF6YmxQWk96V0l2dWVNanNMSmFFRHRpY2VOR2EwZ1ZkRU5Jd3dLdUVPa2JLRHBSUHR1dEw2WEpCTHdka3RMQUxUUElHYnovR2o2bTJNTzBTMEUrRXBibWkvWnR0MVlET0sxT3RlWCs2TkhrTFpYb0ZIVzA5NE9COUgzVXdLd2ZVa2Fncms0blRGT1REYjdtdEVFaDNHZmg1VEp3Qm1vWE5UdnpEcmN6eXYrNU9zbXV6T09ISUdCT1hNQ2hIeFFIanJHK2YzNzk4T0hEeHlZcUtuMnZ3LzNHL3VkYUhQRnNVTnFmRHFzWnJLeCtyMkhEdGZqcXBPR28rdFJDK1NMZHUrR01SeC8wOWkzUnpORnhpamp2MVcvZDJvVUk0a2YyNzNIMkxZVFdPQ2xnWnltWVhEZmZuT2xMWmQ4VXhwZmdkWXR3K3lFWk5MUThDQVYzMy9uN3QwTEYrN1pZOXl0b2ZzWUlQSjFqTllzb0UvSHNmckpCUXVnT1RES2lrNHJrTEpWNjJyRUl0TTgvTkpGY1B4R1E5cHl1ZG4zRXc5U0tJbkwrNC9BWnJUQWQ4ZGpFTkdERWJ1UUlZLzY3ZEtkTzQyVEFVc0UrbnpNZDdwODlyVHYvRXErSFowd3VHUjRPRERNaW9oRnpFQW1uSWREWGhsa1BlcngyVUJGQmxLYTJUcnZ3RUdJNXJTU04rUDVMU0IxdWp6WlNPUktuWXJEM2J4RXhXd2J2U0tsTXN1L3V4Z05DN1hJaWxORGhVVmRmcHhuUWVVWjF4UFNIbVBNOXQ5MW84MVlIOXEwZUdiZklmUldLbmQyVU1WS0p1MGg2N3MxbTRWVVU1TkI1MklTd1NBbW1KVk13WXFSRVRnUHg2cW44YjJkQ0FwVk1sS3NvSkd2aVpveUs1V0NoVVBEY0lGeE42VU1HeFl0aEVOWW44UFJxSEd0Y0swaHB6dXBUOEQydG1VeUZiMmZzbUlsazJ0QUI3ZC9kdHMyZUdEWk1raUV3MGN2L2N4UFNVV0JtU2dVWnlOOW5ZMCtKQUVnRVBRUHF4bzhKbkg0STViMU1wMjlWZUJ2MDB4YU53TDh2djBINE93REI0eHpyQWxrK3YwcjM5b011MXBib2FkemhuSGtKWFYwSWNkZUVndGtyTnRxQ2ozMDFyZ3kyTEpaOHUvQ3RLTmZaNkVtWC96MnJzYTloSlJTQmp0eHhsZ2FQck41QzRKOWlnR29sTmRnR3NNdlJXR1lteGlCK1ltRXNkaytNMjRKMFdkUnN6K0FyOXZ4dVorRGVUaTVjUiswQy8yU1EvZXgzaDB3RjdYa0JMczhxeE9GSlFTelVham9tSTVsUndaZ2Uzc2IvRzdPSE9NNkE3Znpyb251RitEejU5SjByQktDcHhjdE1uL2ZvdzRoQlBlVFc3WWFJTCt3NEFRNEVJOVB1QWFCK21ZNWd2d1hPM1pVSmVaUVVhQ1paWmkxcDlQd3VUZDdYQThNYmNYUHFlTVNLQWo1WFVkcmh1aFFrZzhnRUhUSWlFQnc1S0UvZUJwV3JSbnozQm1uOHV4aGdqSUp3aXhyZkp6c1dtRUNMRzdORU0xRG9aek15S1NKQnFvSGFYTDM2T2h4WU5MM2FjRUcxVU92Z3MxUThaTURtYVVSVVk5ckFIS1dCak8zOGRiS0JuV1R5ellKMWRxZE9sbjMyVlRjbkoxODVheXdxUmhUck1DTFF1MnpYaFFFTk96aWltcFZpaUJXL29oSWE0V29IMUo3RkY0Zk5VQllIVjZzL1ZGc2JFRjQ5VThWTkpwWEJlZ2dlZmRQRlVMRmxRVTZpSFhYalVMd0FPVHBvZGs4QUxuT1VvWDZqZ2NnVHc4YTV3SEkwNFBHZWIxV0xFaithamF2dHdvRjZmZ1loQitwL0lCSm9NbFYwZXBDTmhpS1VvRm00QnhHdENmeEJZSWNyUGFzRHRoSEYwNjRBeTVZS1VBYk8rdFZWUjVWdFFsbGEzU0lHYjdSNWpCaEVLUktnazFUcFFMR2NxcGp2OHVjaDV0Q0lkQmRxSjZBZHIxaVFCVmlTVUxOdmNLNWRmZUVMaUFpU2FBRVMzbHJnVE1xR0llb0pFQ2xCWmRpSWxtajhpM3hPdm1BNjdxK3czSFdpRFNYODh1RnFqRjlMQU5hTmdkYzRoQ1haV2hHeVFuTXJ4b2lqb0JsVlJWeU9TdXJtb3dNZktYSE9DNXgxTm9YblVaaU1yR2lvZEFWM1ZMb3hKaW1ReHgvb0QwY01iUlpENnpzbWliQ2s4NGdFNG9NdW93TUswa2ZDa25TdTl4d1FXWGV6eE82OW9JYkVhTldSeUt4eUUzcDVsZ29Hby9SVlRXQkp0ZEpvdUdVcGo5MXpwb1ZKWFNyeHlFOW8xa2hudU5Oakc5VGhiN2JVUkx3eTdJa1hZR0cxMDlSaUVJQnlQWEY0Q0ZnOFNaSmZvaHh2dGpqdVkxY2lOOXlwbWxwVk8yYjNQaWR3RzZWNVg4TVM5TDZNQllvSURDMjY4RGJvcjN3NzQxSzBxWW81eDhGcnpPNkVWdlF0U0gyN0lrTENicTJxQkxaZ2wrZjZSV0pJUnNBZ2Y5ZmZPWmhIQ2kyTTEzUEJkMWVMUTFHM3dxTmJvVG5kT3o3S3hIcDh6eXBuZHhqVFhzdG04dTlEeEZWNWFUUXlXMGEwdFRjVjV2RDRZZTlUSFQ4UkVITnZ3d29HN2FjRkNCUUxRTnNuQ0ZXU0VLL1doOGVIZjBjM2M4aDAzRVlXam9OZWlZRGlaSEVvOWxNNW1mQldWNk5MeERHVFR1cDVGY3kyV3hQR3Qyd0ZGMXZxTk1TVmxvRm1jMEtiV0NBYmhTL08raXV4dmE5TkUxYk5UaVN2SjI4Skc3ZGZ5SlBqRzlxT2FIclgwRDY3a2RMN2h0ZTE4Z0dxZjQwbWJCU1ZmV3JpTjhhYzQ4RG0yaVlUZkRFR1VPM1Mzd1R1ZjB5SFdCZlFPUU5RTlZnekVHOGhocDhkazVWYnhFTzkzbTd4VXAwdEs3WDR4ZVhJdUJmd1MvMkJZRFhKOGlJMCt1STB5ZXltcllDLy8wSE54dHJzbW5LbEtycnQrTHJQU2dpNzBHcCtBaHEvRWxZV0lmaHJ3ZXBGaWxEUXlzcVh3LysrK21jcnZlZzc1Tm1SNitlYzA3L0w4QUExeVEyMzUxV1lOMEFBQUFBU1VWT1JLNUNZSUk9IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiXSwiZXh0ZW5zaW9ucyI6WyJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiI0NTRlNTM0NjQ5NDQ0ZmZkNmM5MzhlOTI2NzE5M2U5YSIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwidXYiOmZhbHNlfSwibWF4TXNnU2l6ZSI6MTIwMCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMV19fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAxOS0wNi0wNSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IkVuc3VyaXR5IFRoaW5DIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAxOTA2MDUwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMTktMDYtMTAiLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IkVuc3VyaXR5IFRoaW5DIEZJRE8yIEJpb21ldHJpYyBTZWN1cml0eSBLZXkiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDE5MDYwNTAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4zLjYiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMC4wIn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNC0wNi0xOCJ9LHsiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjJlODYyOTNjYmQwN2RiMjRjMjcwYmU1NTRkOTEzNTYzZDYwNmZkNDciXSwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiMmU4NjI5M2NiZDA3ZGIyNGMyNzBiZTU1NGQ5MTM1NjNkNjA2ZmQ0NyJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiQUNTIEZJRE8gQXV0aGVudGljYXRvciJ9LCJkZXNjcmlwdGlvbiI6IkFDUyBGSURPIEF1dGhlbnRpY2F0b3IiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MTAwMDAsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH0seyJtYWpvciI6MSwibWlub3IiOjJ9LHsibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNRVENDQWVlZ0F3SUJBZ0lVRi8wd1RQUDZGRXF4cHNpYkppTEZ0RGo0cWh3d0NnWUlLb1pJemowRUF3SXdkVEVMTUFrR0ExVUVCaE1DU0VzeEVqQVFCZ05WQkFnTUNVaHZibWNnUzI5dVp6RVNNQkFHQTFVRUJ3d0pTRzl1WnlCTGIyNW5NU013SVFZRFZRUUtEQnBCWkhaaGJtTmxaQ0JEWVhKa0lGTjVjM1JsYlhNZ1RIUmtMakVaTUJjR0ExVUVBd3dRUVVOVElFWkpSRThnVW05dmRDQkRRVEFnRncweU1qQTFNekF3T1RJek16VmFHQTh5TURVeU1EVXlNakE1TWpNek5Wb3dkVEVMTUFrR0ExVUVCaE1DU0VzeEVqQVFCZ05WQkFnTUNVaHZibWNnUzI5dVp6RVNNQkFHQTFVRUJ3d0pTRzl1WnlCTGIyNW5NU013SVFZRFZRUUtEQnBCWkhaaGJtTmxaQ0JEWVhKa0lGTjVjM1JsYlhNZ1RIUmtMakVaTUJjR0ExVUVBd3dRUVVOVElFWkpSRThnVW05dmRDQkRRVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCQndZZ0tWd2pDVjYrbHY3Z25wRkVSelUydU5EOGdkRWtQQ05jcy92RkRzMnNLNDJKdXhuaEZuSWdNQjJEeVUwSXJYSUxqZi8yWFQwWVNUZDFzUGlUU2FqVXpCUk1CMEdBMVVkRGdRV0JCVG5RYXJwZFN0NHNpZDdWamZOSUxJSHJiMlBvREFmQmdOVkhTTUVHREFXZ0JUblFhcnBkU3Q0c2lkN1ZqZk5JTElIcmIyUG9EQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lRRGNvWEozcnpOTUEvZlpraDA4UG9Gck14NDNHWU1oWk1mTFB3LzNNZkpwR0FJZ2VjdEt3bUpZTTlKOFNYOHgvYVFWNGlHdktXb0JmcjFYUFRBTVhPaFZFWUU9Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQURBQUFBQXdDQVlBQUFCWEF2bUhBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNRQUFBN0VBWlVyRGhzQUFBaWNTVVJCVkdoRDFaalBpNVZWR01mOUM5b2I2REpvSVFpMWlEQndJNVFnRVVFbHRCSjBZU0FHRXVSQ0ZCTXhJa2xDYXlGSVFpYUtCWlVvbFk3UU5KTTYzbkdhY2E2ajQwdzAwNHpCTUJPNkxFN244OXo3UGZPODV6M3Z0ZHE1K0hMdWZYK2M4L2srNXpuUE9mZXUrUHV2djhMakxEUFFHaDRPN2ZIeDBHb05wODlWdGEyZG5KeXNhWHA2S21sdWJqNjEwdno4WEZoWVdDaHFjV25SdExTNEZCNCtmQmdlUEh4ZzRyTVhqTDZWRGg0ODJEWFFCVTlHWWp2ZWJpYzF3UXU0QkErNFBzL096amJDbXdGbjRyOG9HUkIwSjlvZEpmaDJIWDRxZ2lJUDd3VTgwS1hvZTNDRGZ3UjRIbldKbWVwcG9LTjJEWDU2cXB3eXRBRFB6M1VpM3dzZTZQOEw3bFV4a0NzSFIzblVCYzFucVFUdTRiMkpFdFMva1FKUU54RFRoYlFwd1FOSDYrSFZDcHJ2dE14Q0RrK2VMeTVWb1h1WktNMkFuaThhYU1wM2c0NXBZMjBHajRCVnZ1ZlI5OUdXUEVoSnZWTEg5ME13c2hub0hYa0JlM2d2RDU3RE0xZ3ZhTlFMSEZYaEYyMk1aQ0NIUm9CNkFWbUN6OU5Gc3RMWU5WQ0N5YStWcE9jRVRuOStqRVlET1RpTDk5K0NsOUlHNVhDS2VLL0lWL3JvOXV2SEtocFFtUVN5R0hHWDU3TS8vQkJtUHZzczNOdTFLOXpidkRuY1diZXVwcnN2dkpBMDhlSkxZV2IzN3ZEN29VTmg0Y0tGOE9mTVRCRzZCTy9CcFpvQmJWQytYR3B4b3RscjE4TDAvdjBHTXZyRUUyRjB4WW93K3VTVEJqcjY4c3RoZFB2MnBGLzJ2eGR1ZmZ4eDVSb2FmKzY1TVBiMDA1MTNvOXFyVjV2NSs2ZE9tU0VQTGZDU0FRcEh4UURSVlZ1SmVFeVZYOCtlVGRDMGQvYnNDYTFQUDdValNIOS92N1dxWkQ0SURESTNUd3BPbStpUDY5cmxoejcvUEF6djNkc3hId09Cb2VrMzN3ejN2LzIyWXFBRVQxc3g0Tk9HQnhEZ3Q1OS9QdHg5NC9Vdzhja3hneHc4Y3NRaU9mTHNNNVk2OTYvMGRRYUxVZk1wNE1VWVhLZk43NUhYakFVRGhxNisrcW9GNnRhcVZXRW16cUNnbGJxMEJJVjNrZ0dCMHdyZThqb0s2TlkzMzRTYm16Wlp4N2ZYckFsM1B2Z2dUQXhkdDNzTVRLZWErZzVVM1lTWERPbTcza1ZBRHJkYVlYanJWaHVQbEpzZkdyTHJZaE5uTXBCSEgwQmV1dlhkZCtIV0s2L1kxSkxuWXlkT2RFK3VMWHVlVGoySTVBRVZkVjN6OTJoejBhYzBFdE56WlAxNk13SVQxeGdYa1lxVkdaQXd3SU8yNkNJNEVTRGZCd1lIREp6N3lrOEdGQWl0cE84ZU5yL3Z4WGhOK1E3VHpaZ0pzSXdkT0pCbUFCVU5MSTZOcFFVNy91Njd0a2hKRmJzWEIxR05KMjJtMzNrbmxVaEtvOG9pZmQ2UHBsVmFLWjFMc1Y4QnMwaC9qUUhTUGNiTXdlbGZZbXlxbWkzeWp6Nnk3MlJMeFFBUDhxS1Z1RmdSYnA0K0hRWmoxTWx4cmlmNEtFQlpDM1RveFRVQVMvY0lDQXNlVTdWN1VVb1J3VnNiS3lCc0FyYXNpUDJ3UnRpdktnWjRvYjFsaXowdzFOZG51YzUxSDNYZ2lUQ1IxOEEzTm00TXd3Nks2cVRQcmJWck8vZGluM2F0V3lyVFBSYXFyc1ZuVkJDOFpDQ1ppTThQdnZXV1Bac01BTThtUlVmdGt5Y3Q4bHdUdkRlQkFhYWZ0VUZFV0JkMFp1YTdjR2prcWFmUy9zQzBtekVIYThVZ2lwbkdDQ0pkYytDOHRUMG9tdWZkaWdHbWx0eFhKOHZnbmRPa0ZxRDAyOHh2ZHZ4bVVaVlNDbURnRjd0NVQ1OFVBOTJuNWpNdTRoN1BhcTE1Q1o2cVE2QW12emhsNzhOWk1VQjBXT1UycUl1NG9wNkxSY211bWRJalV6TFFQVXFqaFFqaG4yZTlFYlRmdi9xcUNDN3hIWGhhTW9SM0wxMjZsQm1JRjRrUUQvbDBVZDduOEUzZ0V0T01BZnEyV2NSQS9Nd0IwSzhGaVVVc2VPVEJVL1NqT0JIdy92bno1NWNOQUV3bjE0OGVzNVF3eUliSTg3eEZub0V4d1RxSXhtMm5ka0NhQWFCekFjYVI1T2RZcGxrcjZrc3BwR2o3Vm1KalphektER0NBbW56ajdiYzdHMVVEdkVUZFoxQXFEUDltY0ZEajJGRXhFTUZrNEkrNDRFZ1RpVE1XMXltRjdPNTZoN3dtMmtBekEvVHI0WlUrbUw5OHVXL1pBR2xpcFRGT0RTK1hEUENjUGsrODlscG4wUGo4NUpVcnRoR2x0SENwUllVQnZyUXZrRElZU0gxRkVWVWY4YW1wWlFPY3ZSaGpmTU1HUzU5S0ZRS1lTc0xnYk51UG1nRitqSGdZTDlLaWFYM29wTmwwRHdNR25rVWVlQlk4cy9yOXVYUDJITE5iTVFBWTJ6K2RUWjg1VXdIMjBaZjRKWmFpSGpXeWNxWEJFNWtKTnNLNGlIVVBhQUJKRVdZbHYwY3FBc1c3SGh4WjJzUnhNQ0I0bmlOMWF3YlE1TFp0MWpHYmp3Y3VpZlZDSkFDelRyc0FXcWg4NTU2a1V5elA4QjBZcVFZZlUxTW5ZVXViYVB6aXhZc0d6cGlWR2NqQnlFOWVwRWFUMy9sOWhHbUpJcUFLazZ2cFNLQ1dkYUJmYkRrNGxZd0ZDL3hQOGFjczBBU0JkamkyeFJsQVhLTmUyM0VoVGpFTHZQSjcxWWthWDRPT2NFQXpRNUxnVTVYaHp3T25lL3YycGZFd0lIRFNpN0xKYndObVRTWXFCank0TjBKazJaMHQxMlBIOXVPYjM2c040Qkx3dElMMkVhZjFhY0laaUJTWjJMblQ5aE5McWFOSDdaREl1QnlqbFc0R0gxTU5lTnJHRk1wRkJHOGUvckR6NjZpNzhERERiMWFPeUI2ZVp5MXQzRkZZQWpwdjBkVXZ6MWtCRURUQ1dOL1hYMXZKeEFEUUV2QTFBNzJNS0YwWWxLbThmdWg5R3l6dG9sRnNoS3daL1pZbUpkaXd2RGhKRW1sRTFPMkUybjJmdmtpWC91UEhEVnJnZ09hUkx4b29RYXROY291VnlLbGpIUXVJbXVWckJKUElhLzlkNHRtck8zYUVIdzhmdGx3SG1DckREaXZBbE8veEI0eXVTUno1SDVsQ1RmQmVXcXd5cENnUnZaTElaU0RSd09DZ2llY1ZERnBKc0Y2QTYzTXlBS0RhR25oVUwzQmE1VGpTUWtWNXJudlozL2tPMWd1NFBGMlE0QWxFWlFZRW5rZWVLdFJVNC9OS2cvSXFreDhKSlAwelY0SHVibEFHM2dNZVlZQzJaa0RnZ3MraFU0WHBpdStvWk1BYkViUmFEOTZCWDk2Y2VzRXI4dnBjTWZBb2VFbXdBdmMxWHZLblNLODYrSExPRzNnQjN2NlA2Z0tyeFFUWGl3YnlEVXFwb3FqTGdJZEhBS3JOMVRQZkl6U1JMMVdhRXJ4YUZuL05nQWYzS20xS09UemZjM0NVNTd1aVRpdlFrcG9pVHl0VkRKVEFnYlBJWndZRUQyQVR1SUNiQkpUYVhMM2d1VmN6a0lNcmJaQUh6K0h6MWdzNHRRYXF5RWNnKy9jNVN4c3RUcjlJMVE0TURDWm9yMFlEQXM5ekhsV2kzM094bHZNZUtMVWwrZWlUNTUyMm1qcFNNc0NIeDFNSHd6OGNlSHk3RWhSejVRQUFBQUJKUlU1RXJrSmdnZz09In0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjItMTItMTUiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MTAwMDAsInVybCI6Imh0dHBzOi8vd3d3LmFjcy5jb20uaGsvIiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJBQ1MgRklETyBBdXRoZW50aWNhdG9yIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVMkYxMDAwMjAyMjEyMTQwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMi0xMi0xNSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxMDAwMH1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMy0xMC0xMCJ9LHsiYWFndWlkIjoiZTFhOTYxODMtNTAxNi00ZjI0LWI1NWItZTNhZTIzNjE0Y2M2IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiJlMWE5NjE4My01MDE2LTRmMjQtYjU1Yi1lM2FlMjM2MTRjYzYiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiQVRLZXkuUHJvIENUQVAyLjAifSwiZGVzY3JpcHRpb24iOiJBVEtleS5Qcm8gQ1RBUDIuMCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxMDAxMywicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbImVkMjU1MTlfZWRkc2Ffc2hhNTEyX3JhdyIsInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSJdLCJpc0ZyZXNoVXNlclZlcmlmaWNhdGlvblJlcXVpcmVkIjp0cnVlLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlCekRDQ0FYR2dBd0lCQWdJQkFUQUtCZ2dxaGtqT1BRUURBakJpTVFzd0NRWURWUVFHRXdKVFJURVNNQkFHQTFVRUNnd0pRVlJMWlhsRFFUQXdNU0l3SUFZRFZRUUxEQmxCZFhSb1pXNTBhV05oZEc5eUlFRjBkR1Z6ZEdGMGFXOXVNUnN3R1FZRFZRUURFeEpCZFhSb1pXNTBjbVZ1WkNCRFFTQXdNREF3SUJjTk1UWXdNakkyTURneE1UQTJXaGdQTWpBMU1EQXlNalV3T0RFeE1EWmFNR0l4Q3pBSkJnTlZCQVlUQWxORk1SSXdFQVlEVlFRS0RBbEJWRXRsZVVOQk1EQXhJakFnQmdOVkJBc01HVUYxZEdobGJuUnBZMkYwYjNJZ1FYUjBaWE4wWVhScGIyNHhHekFaQmdOVkJBTVRFa0YxZEdobGJuUnlaVzVrSUVOQklEQXdNREJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCQUpjV3FlQ3hnYTlLSmJGTzJUWmRqY2dydFpBZ2ZpOFRYS3UrdjVsY1I1Y2ViNUdKWXh5b0NqaHVlRVNMM2RkbU1Ja3BHeWhzRUV0ZkZVeUJ3c3lGVkNqRmpBVU1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdDZ1lJS29aSXpqMEVBd0lEU1FBd1JnSWhBTDRUYlAwMHNFTmJURVhHb2FnTTZIa2wyWElEcnhnS2JId293LzlHaWJZVEFpRUF1ZEltN0VHcWZ5YThReWdLY2JrUWZxcndlZlluQnZaS0kweHduL2tLV3g0PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFKWUFBQUE5Q0FJQUFBREF1QWVZQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUVuUUFBQkowQWQ1bUgzZ0FBQkd1U1VSQlZIaGU3WndKZkJQVjlzY3pTL1kwM1JjbzNYY0tCVndSQkhraVQ1OExxeHZDRTNBdG9JSUNCUVRaMmdJdFVpZ3RWR2loS1BvWEFSK3l5UExoQVJaWjFFZFZvUG9RcEtXMEJWcTZaYzlrbHZ4UE1yZlFsaVpObDdRUFAvbCtMblRtbkR1VHlmenV2ZWZjbTBrd3M5a3NjSEV2ZzZPL0x1NVpVQy84ejRCbk5MOFdZWVNJdDNZN0hHc0llSDVNL000c3RPL0NOa2pDc3dQSGFuLzVIUmYvcjBqSTZneis0NS90L2ZrYXRPL0NObWdneFhod0hMYk1OR00yMGQxVGFFYUFXeTREd3pHNEV2N2FYTmdIOWNMQ1I4WkJMOFRFSWpQSHlXTENjWUxvK2pRSHBEUFR0TzdpRlV4SWNucUQzOHZQOXQ2V2dYd3ViTk5VUXBGUVFET0RxODhTY2hudjdtS295bHVuQXU0bmxaNHVDUjJuZVVZS2lySmFQZHJwY2ppZEFXMjVjSmdXSnhWZFBZUTJvaHRmK2w3Rk5TKzg1K2xNQ1ZtRGtUT1pPQlBGMFRTSGJDNmNUcWRKcVAvdmxlOWswYWY4SGpycCsrQkpaVCttcGg0NVhEaVpUcFB3WXVJQ0FoZWJXVmJBbVZtam9XU3hhMWJlUlhTT2hQcmlzdG9UeDNHRkRDTUlqTUFKaGR2MVRkdHBqUmE1WFRpVHpwSHc4clNGQk9tQllSaXJOM0lVSXlBd0FVMlhMczVFYmhmT3BCTWtOSlRkcUQ1OGhKQktZRUxwTi80NTVjTjl6UlJOS09UbEc3NWc5SzU1bnRQcEJBa3ZUVjlNa0FvQkptQllUVlRXb3JEVU9iU3hEb1pUampKZVMzWjkxT0IwT2lRaHpNTU4xNnVxOXgzQ1pWSk9iL0FaTVVLb2RQTVlmTDhpS3A2amFGSXVMMSsvamFOTXFMWUw1OUFoQ1RHQjRNck1GSUlRd3piTnFHSnlWL0QyeURVTEdHTTlkRVRJYUVyVE4vSkdGMDZpUXhKU2xiZXFkdTYzZEVHRDBYdklNR2xJSUcvM2VlWnZzc2dZbU9BTFpmS3lOZmtjemZCMkY4NmdReEplU1VyRGNFSUFpU2l0anRtWWlxeFdJbGZPWlF4cWdaQmc2MnJMMW15MjJsenJuMDZoL1JKUzFiVlZuKzhsNUZMT1NIa01IQ1NQaTBRT0s3N2pucEtGUnBwTkRDNVRsR1ZzWnMyY2RkeDEwZm0wWDhLU2hSbG1NMnZwZ2liMTdTalltTEMwSk1hZ3dVakNWSG1yWXQxbnlPcWlzMm1uaEhTOTZtYitMa0l1TXpPTWNzQURzcWhRcXFvYVF1UHRZcnBWNi9YNEk5S2dZQUhMRVZKWithcGMxekRxSk5vcFljbVNkV1lURFRrblJwTEc0cktUbnYxL0NCN3lROGpRMitWTTBPQXpJWTh5S3EyQXdIRWhhYWlvdUw3cFMzU3dpMDZsUFJJeVd2M04zTzNXaHpNc3oweVpJYzZSSkNZU05pOEVBU2tNVklCYXBGUitiY1VuNkhnWG5VcnpaMmVnYnoxU2VrTGs3OHU3VytUU2UwdXZaWDFDa201b0g0SGhNZ25JQlZzZ0ttZWdtcVdnTkZQWE95Y3pNUEVWdE44U2h1TFNNeEZEN241MkpqZHZTMEhCQ1lsWXJLZW9wWXNXUmtVMVNaMmFrWnlTK3VlZnhVSlNDTmRTcjZwLzhJRUg1aWJOcnFtcGZTdHh1cWU3dTlGa0hEanc0WGVtVGQyOVorK09yM2JJNVFvN21iS0pOdlZMU0pnMWEyWnhjZkdzT2ZPOFBiMDRNMGVRUk83R0hGVERObnE5NGQwWk0rRk80QmhlVzErL01TZmIxOWZlWFcwM0pQcnJNR2FXNWVyVVBWNTZ3ZHJKR29DK0ppS3J2dHd2RUFsQlFGd3M5aDMzcE9XSndrWjNoelBSaGordW9KMDJjdUhDaGYzZkhwREw1VnFkYnVaNzd5QnJTeVRObmI4cGI3TmNKb2NyVXFuVThmRnh1M1pzQnp0RkdmZnMzUnZnNzYvVDZpUmlDVmordkh4bDcvNERuaDRlWnRzYUdnMUd5Z1J0VVJBZUhuNmhxRWlqMXBBa1dhOVNqUms5K3VsL1BNblhzY1hXclovdTNQbTFtOUxOYUtEdUc5RGZTZm9CYlpZUWxJdmR0aHJ0Tk9WRy9nNVM1RzVtV0RMUUl5NS9GYkoyQmlLeFdDcVhRV0VGSE1SV1pMMkx1ZlBtNStibisvajZnbjV3by9zUFNQait1Mk84QzdxQ1ZHbzVBMmMydzluQUloVEM2RzZ4MkpFUXczR1J4S0kza0phYU11WHRSSDhQZDV3a2w2ZWx0U29odENSUEgyK1JVS2pSYUZOU2xpQ3JFMmhiTEtRcDA5WGw2MHRYYkxpYW5GWCt5ZDNwU2NPOVlGbTBZUVdzcGF0eXI2Wm1sOEt4R1Z0czNyQ09NVy8rd28xNStkNWUzdGIrcDRxTGlyNnRYNHZvOUxxYXlsdFZsbEp0cDZqclZYejljYytQVmNqa0xNZUt4YUxmZnYrOXNMQ1F0N2ZJOXE5MmxKVlhDSVZDaXFMNkQrajM4RU1QSVljVGFKdUVGUm41bHhZc3Z2TGhxb3VMNXBFeVMxdDJCQWlQZEZYTkh3cy91ckpnMWFWWmMyN3RPWUljbmNlQ2hSL2xiTXIxOGJIcXAxWkhob2VmS0RpS2ZEYVk5ZjdNMnBxYlpTV1h5bTJYcWh1bFgyemJpZzZBVjVrM1IxV25ncGRRU0dYSktTdVJ0U1hXWmE5WEtPVHd4dXZxVlI4bXpVRlc1OUFHQ1NFS2xtZmtTV1FCaEVUcUh2NWd3S3Rqa2NNQndsTGVsN2dGRVFvM2tjanZxdldqNEU3c2kvTVhmSlNWczlIWDF3ZHVybHF0am91T1BuMnlBUGxzSTVGSVBEMDlsZTd1ZG9xSGg0ZENvVUFIQ0FUVHAwL0RNWXpqT0pGRWV1ck1xZUxpRXVSb3lzRkRoeS8rY1Zrb0V0RTBIUjBSOGRSVHJReTVIYVFORXBabmZXYXFyaElJQ2Nhb0RrdHRVOHN5RTJKeDBNd3ByRmFOU1VUYWMrZHFEcDNvck5XMkpVdVRjelp1OHJQR1A3VmFBOGxxd2ZGL0kxK0xZQjFxUFcrKzhacEdxOE54VENnVXA2Vi9qS3hOV2JzMlN5YVh3ZlZBUEo3MXdReGtkUm9PUzhpWnl6N09KYVFLczRtUkJvY0Z2UHdNc2p1RVJhK2cyYThUQ3FXQTR3aVJ2TE1lamxxeU5HVnQ5bm9mSDB2LzAyZzA4Ykd4SiszR1B3dG02OVcwbDZTa09TYWpFV1ppa0J2dFAzQ2d0cllHT1JvNGZlYUhzNy8rQXZNZmhtRUMvUU5lR2Y4eWNqZ05SeVVzei92U1dGR09DVW5hb0E1YjBwNldKVlFxQTZlK3dtbzFtRVNzK3Ftdzl2Z1o1R2d2eTlQU0llVDRlRnZpSDZUNzBWRlJSNDRjUkQ3YmdINGRrZEREWFRsMnpDaVk4K0U0VGpQc3Vxd055TkhBMnJXWm9COC9KQ1Ftdm9Xc3pzUWhDU0cvTEZ1NTBkSUZhVVlhR05Sanl2UEkwVWFDa3Q3R1lTb05IVkVvNHlOaU84QUp5elV2WDVtK0tuMjFsN2NYVEVtaC8vV09pejEyNUpDZCtjWnRZQlRsQjlLcXFxcGZ6NTB2K3UxM08rWDgrYUtTcTgwRDNzTDU4M1JhTFhSRVNGaTIvZCtYRVBDUVF5QW9LdnI5dSs5UFNxVlNsbVhkUFpTdlRabU1ITTdFSVFtcnRuNnRMeW1CNFo4MWFFSStuSWFzYlVmczQ5Vnp5Z3NzeEJLcHVQNzcwL1duTFhsNW15SVRaQk5LTjdmczlUbnBxek84ZlgxQVB4TkZ4Y2ZGSFQ2NEh5YmRxSkpqNU9adEdURGdnVUZEaHcwYVlyUGNQM0RRalBkbm93TWFDSThJZjJ6b0VDTkY0UVNoVXFuek5tOUJEb0VnTXlzTGpQeW8vdXFFQ2ZJdStZS1lRODIyZEhtT1VDSTNNNHc0b0dmUHQrMnRrTFZLMFB4RUhDYkxISWVUMHBKRmE1SFZZV1JTYWNyeXRPUVZLNzJ0NDZmQWJHWW9VKzdHSEppQm9ScXQwakNNS3VRS0gzOS9mejgvK0dlckJQajdRVmFLRG1qRWdnL25xVlVxekN5UUsyU2I4cENFcGRldUhUaHdTQzZUUWNvcWtZaW5kY2tvQ3JRdVllWDIvZnJMbHdVaUVhdlhCczE1Z3gvSDJnZTBCa2xQZi8rSlkxaXRIcGRKNm82ZVVKMHRjand5V1RURDhDUEhqcmtwRk5BZGVRdEdFbk9TNXZNVkhLS2gxeHVOaHJxNk9sVjlmWDFkbloyaTE3WHdRUFBERHoyWTBMY1BSWnVFcExDOHZHTDNOOStBRWNZR21tVWdSbXAxdXJHalIvbjUrZkdWblUzcnk5dy85bjNLK09jMURPS01URHF3N0NScFhaMXFrV05ZQ0tuMGdIZ3A3dVUvOEpMTnpOQlFXdkZqOUhCY0pPU01sT2NUZy9zZHpFY08yOHZjczVQbWZmSGw5c1pUTkpQSlJKdG95TjFCeHBycTZwUmxTNlpQVFVTK2xyaDU0MlpVWE4rQUh2NTZyVzdVcUpFYnNqTlBuanAxN1BoM01EdEVOVnFDcHBuSWlQQ1hYbndCN1RkaXo3NzlyMDUrM2MvUDEyZzB4c1hFN052enI5ajRCTXRYekRGTXI5T2RQSEVzSWp3Q1ZYVXlyY1NQNi9tNzZvdE9rUUl2UnFDT21aOXNSei9BTEdBdDM5Tm5vRFJaWUd1R05DVFE3OFduYjM3K0wwSXF1M1hvc09iOFJiZUVXT1J6REsxVzJ5YytmdGpRSVptWjJVb3ZEMDh2cjJVcHkwY01IeDRkSFlWcTJPWjI2SDEwOEdBb2FLZnRqSHJ1MmVCZWdScWRYaXdXWHk0dUhqOXhFczB3a01qQXRUMDU0Z2s3K2pFTXUvMnJyd0lDQW1CSTBXZzFKcG9PQ3czcGw5QlBKSEk0RmpURjNxZ0k3eGI2WlV4S1dsVDZndGpsSzNyT2ZCMDViQ0QwOGhYNit3Z0RmRWxmTDJTeVFjamlHZUxBUUtHL3I4U3ZWMW5HblhUQUVlQWVCUWYxMnYvTjF4Q1ErdDNYejZEWHd3QWhFZ3Fudk41RnNlYzI3NzR6WGFXMnJMY1JPRmI0ODgrZ0h3eHBETTNNblBFdXF0RVNKR241SFlPUlk1NS9kdlNZYytmT1V4UTFhc3dMVWJHOVlVaEFOZG9LbkE0NE8zRHNkK0xZQXJlKzhEOTFzNG8zUWxqbU54eWhXVlhIajRSWHVWMVpmK1hxVVVGUWdUTGhPQm4xMjhUM2tkVnNualZuYmtDdmtNalkrS0N3eUVHUFBnWnZtN2VYbHBVRkJvZUZSY1pFeE1aNysvVlk4TkZpM240M042N2ZVTGo3d0JsNjlBcWRPdjA5Wk8wWTBJRkN3NlBDb21JalkzdEh4TVREeVFORHdrZU5HWWZjZG9tSzY2UDA4cjEwNlJKc256eDFXcXJ3Q0krTU5SZ3Npd1p0eFY0dnRLUVBEdE9zYXB1U0ZBY3J3K1ZDL0Z1WG1TRVNvZC9IQ2U3Vkt6VjVhWDI5Q253ZW5wN1oyUnQrK3M5WjN0VUZDRW55dFNtVE5Db05iRnV6WXpObzhNRk14OWM5TU1wbytUQXlOamJHVGVFR2cycDVSVG52cUt5cWd2OXJxbXNxeXBFRktEejc4N0xrMUcyZmZ3RjVBREpaYVVuQzIrR2k2Mm4xcFRFemhqVzU1a212L25QRThML3BORnBvQ1I1ZW5oUCtPUWs1Yk5HeE5kSm12UGZ1T3hLWkdNWVIySVk3Mjdkdm42RkRoL0F1KzZCcnNMWmV2VjVuTkJrSmdvUVpUbGIyK2xEbzFQSDlQdjFzRy94TkdQQVFUREdoRG5UdUYxK1o4TkxMTDM3NjJSZGVQZ0dOVzJvTEVscCt0cWU3YU8ybDRaM0R5SXQyR3NqZnNsa21rOUUwRGJORGxVclRTbERzMkJwcE05emQzVU5EUWxuV0Vnb2dTTTk4ZHpweXRBWmNBOGpIVDJjWExsaXNycTJiTkhHQ201c2J4TmVRNEY2RVVMaDk1Njdubm50dTBLQ0h3VGhuM29kN3Y5bTdPajB0SmlwcVM5NG5RckY0NU9nN0h4TTFsOUFNTjlGdTJ1bFVNTXNJMmVZN0xKTkpjelprcTFRcXVJL3U3c29kdTNidFAyQnpzZFJ5NzlCbUozRDA2UEZ6NXkrQUV0Q0FJc01qUm84YWlSd09JSmZMWjgrYkh4MGJmL0hTNWQyN3YxNjVFajBPYjJtT0ZKVzFadlZuK1huNzl1eG1hUHJiQXdlVTNsNDlBM3VDTnpnNDJNZmJTNlhXbkRtREZwbWJUaXBna0NMSUg4TWZFOXpWMHJzQ0dPTGc5ZDJVL0ROVWJlTHZJNFpQR1AvU2psMjdRVUxJMXllLzlzYTFrc3N5YVF2clc1WitiTjFZdHk0N2RXVTYxTGZ1dFl5Uk1qNCtiTmpXTFhsby95NVdwS2Q3S0pWbWdhVUxMbDIwRUZrZFE2ZlZaYS9KQ0FrTlFmc05RRU9FOXc5aGxkL1Y2UTBVUllNRkpxQzhCYVl4a0FSVERSR3hTUyswSkJZNHhwbG9qbUc3b2RDczVRRitqR2hmTjhsZWx4a1k0QS9KS2c1ekRMRjQ3TGhXUHVWaE9ZNkdHUURMMmluZ3BwcytSTktZd3NLZmYvenByRWdxZ1hvOS9RTmVuVGdST1ZyaTBPSERHemJjK1pJWE5GTm9TVHA5QzcvU3hMZmcyMGtlTkxJZThMNU1wcXRYci9JV1BhakxzdjBUK3ZPN1NFS1lqMXVVbzB5VzM3SmoyTzRyY0JrbXVBeU9zVndHZjIwQXd6Q1FMSmdnaXdldjdSK0h5OStTQjAwYldpdmtpc2NMQ3JMWDMzbFVFSnEyQ1E2Mm5NTUVaN05ZT0RQckFIeXEwaUlyMGxZcGxXNXdwN1Y2M2VUSmsrd3NQVUlmaFNZMWZYcGlRY0VKWk5Hb29ZbFVWbGJ5dTQzUjZYUW1GaHJYbmErRExWdThpTUR3ek14czJENTkrb2VTUHkvUFRacnQ0ZW5PZTlFQzI0V3hpYnFpeXpDUjU2Mk9BMi9BNWgxdHpXc0h6a0Q1akJ3ZXRRWU5UYW5MVjM2emQ1OVVLb0hoWmZPbWpRa0pmWGo3M2F4YXZXYm5ycThsVWdtOHI1cWEydStQSGZYMnNhd3pWRlpWUHY3RVA3eTl2WXdHdzk5SGpFaEpYckpseTlic25FOFVibmNXN2U0Ryt2U2dSeDVaODNFNjJtOUVjWEhKZlE4TzlQSDFBWTJodzV3dlBDdFh5Skd2SmQ2YjhVSFJiNy90Mjd0YnI5TysrZWEwRzdjcWhZUVFKN0RSSTBkKzhQNmRlY2pTWmNrSERoM0dDY0xUM1gzYTFNUm5uM21hdC8veXk2L0xWNnlrR0FZWFlPTmZmckh4bXA5RlFoQ3hvZGYrMVlEN0MrTXEydWxVM25ocjZyY0hEeW9VQ3JWYS9jWnJrMU9UbHlGSGwyT1YwTnBkMm9mOVl6dHk1djlsYnQycWpvMVBnR2tvRE5BbWlpcjg2VXlYZlM1eE41WVcycEc3YlAvWXY2Uit3S3FNTmFTUXhERU04aEVZNjdwUlB3REZRaGVPWXpBYXd5T2laZFpQdmlEMU9IM2llSGg0T08vcUZwd1NKLzdhd0lRU2tra0lzYURsc0tGRHVsYy93TlVMMjB5djBBaVJTQVFTcXVwVlJ3N3Q2OTkvQUhKMEU2NWUyRGJTVjYydUtDMnJxNjIvWG5HalQ1LzRidGNQY1BYQ3RuSHUzSG1hb2FFTE1nd2JGaHJpdksrY09ZNUx3bnNlMTBCNmp5TVEvRC9leExnOFIvNHNRQUFBQUFCSlJVNUVya0pnZ2c9PSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzFfUFJFIl0sImV4dGVuc2lvbnMiOlsiY3JlZEJsb2IiLCJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6ImUxYTk2MTgzNTAxNjRmMjRiNTViZTNhZTIzNjE0Y2M2Iiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJ1diI6dHJ1ZSwiYmlvRW5yb2xsIjp0cnVlLCJ1c2VyVmVyaWZpY2F0aW9uTWdtdFByZXZpZXciOnRydWUsInV2QmlvRW5yb2xsIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlfSwibWF4TXNnU2l6ZSI6MjA0OCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6MjAsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4LCJ0cmFuc3BvcnRzIjpbInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi04fV0sImZpcm13YXJlVmVyc2lvbiI6MTAwMTN9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAxOS0xMC0wOSIsInVybCI6Imh0dHBzOi8vYXV0aGVudHJlbmQuY29tL2F0a2V5LXByby8iLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IkZJRE8yIEF1dGhlbnRpY2F0b3IiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDE5MTAwODAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4xLjEiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMyJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAxOS0xMC0wOSJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMTktMTAtMDkifSx7ImFhZ3VpZCI6IjlmZjRjYzY1LTYxNTQtNGZmZi1iYTA5LTllMmFmNzg4MmFkMiIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiOWZmNGNjNjUtNjE1NC00ZmZmLWJhMDktOWUyYWY3ODgyYWQyIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlNlY3VyaXR5IEtleSBORkMgYnkgWXViaWNvIC0gRW50ZXJwcmlzZSBFZGl0aW9uIn0sImRlc2NyaXB0aW9uIjoiU2VjdXJpdHkgS2V5IE5GQyBieSBZdWJpY28gLSBFbnRlcnByaXNlIEVkaXRpb24gKEVudGVycHJpc2UgUHJvZmlsZSkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDczLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH0seyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbImVkMjU1MTlfZWRkc2Ffc2hhNTEyX3JhdyIsInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Iiwic2VjcDM4NHIxX2VjZHNhX3NoYTM4NF9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo2LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjYsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlETXpDQ0FodWdBd0lCQWdJVVNPRWpUZi8veXFSZlBXN1FxOHF0SXlDckFnOHdEUVlKS29aSWh2Y05BUUVMQlFBd0x6RXRNQ3NHQTFVRUF3d2tXWFZpYVdOdklFWkpSRThnVW05dmRDQkRRU0JUWlhKcFlXd2dORFV3TWpBek5UVTJNQ0FYRFRJME1EVXdNVEF3TURBd01Gb1lEekl3TmpBd05ETXdNREF3TURBd1dqQXZNUzB3S3dZRFZRUUREQ1JaZFdKcFkyOGdSa2xFVHlCU2IyOTBJRU5CSUZObGNtbGhiQ0EwTlRBeU1ETTFOVFl3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRQ2R2bDI3dzJndTFmUFhlRUZiSWRxeDBCYWx2VkRWV3JRUEo3SHF2aXVFdFpIbHhTTHhTRnRjWHBUb2x2THZvZjhmNHRNZXJRVGtWR3pjbVl6bTFFQlQ0SUp1TW1vRXFma0VFaFdwc0FETUZyalprcWxaWTlFcXhRekxvVkVFb25FNW9HeFNkVkN4Q2NMSWFja3B5Ui9DQ1h2ajFCdC9oVGdFOWhUbEY0cFJxeE1reDNwbEY3eThkRFpsUkhXczd2Ym5obUJDR2VJMFpQRVE2bmwybUNnMnI3NGFkRjJ1Nks5cnJMZmhCQzNRTEU4RVByZ3FVc0kraGt1cTJ0SzRNMlNNT3A4dVVWVmtxVWV1M2gwa3IzV1ZJMFcwMnBrZ3JPZ2lGS0xGTmtTcmJZaGRqTUJEajVpem1xZmM5eEpSS29EWDYxMnFkOFpHVkhwVDVBWUZYKzFoQWdNQkFBR2pSVEJETUIwR0ExVWREZ1FXQkJUWnlVNURpUS9hMlVFZ0U3cUJLMHpoSXNSTlJqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUFNQTRHQTFVZER3RUIvd1FFQXdJQkJqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFYdm5CNFNMdVVKZllNU1ZHQWhzc0wvU21XbGkzRlNjY2d4eWR2S2xBQ2NpZElJV0tRcWEzcS9RU1VFUXpDOURnRWZNZ3I3aUMxQmtUWmJJTGJvVjZVWjVrbk5zdmpFWld1TWVvZ0o4dGdaczFoVnZLd1ppendKK21FY21zamhJckJZdW9MMVQ2eXJPSnZLRmcxanYrQ3k0WndBOUJway9WM1VPaXIxVnlLOGRDdHlIdTZ2Zm9zb3RBZFl4OEZBdVIyNDNnUlRNVjZKeDhKZGlnMkpESUFRTWx6VmVEcFNVSFgvSzJIWFJIeEh3ZmdqYmdVampCdS83MnI4T2ZlaHloekhYSTNLOENGRmRmbE8rOG5FT0pLM3k4RjFpdmdTNXVOLzhTbWNZdy9TVFFZd2hyeFB1d3ozblA4YmFNdW00QkIybm5ZbXBCNjBzWDNibDVrOFFVU3c9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFmQ0FZQUFBQ0dWcytNQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUhZWUFBQjJHQVYyaUU0RUFBQWJOU1VSQlZGaEhwVmQ3VE5WMUZELzNkNTl3ZVFTSWdTOUFRQVhjRkxBUVppOWZwZVZ6MXRZL1dUWnI1V3hwYzdXNWtuTGE1akkzWjg1c3JTMm5NMnNqdFd3WlM3SVVINEg0eENuRVF4NERBWkY3NFY3dXM4ODV2OS9sSW5CdlZKL0I0UHY5bnUvNW51LzVudk01NTZmekEvUXYwSGIvSXJYM1ZGS1BvNDVjbm00aW5VSVdZd0xGUm1aUVV1d2pGRy9OMWlSSGgxRVowTlJWUnVkcXQxQmQrMm5TS3lTL09oeXMwK2xrM2UvM2tROXF2RDRaVXRhNFZWU1V1WTBlaXB5aVRoQWZvY29PUlZnRHV1dzNxS1JpQWQzcmJjRXRqVGpZSW9mNldhSHNDbXpWUFdDTXgrY2doOHRMcVdNS2FNV3NVakxxbzJSdEpJUTBvT3ptZXJwUXU0ZXNaZ3NPTmtHeEg3ZDBrZHZUVDE3czRPTVU3Vkk4WmhqZ0dhTStBcTlpRU51OFBpZjF1ZHowN013dktXZjhHbFZvQ0VZMDRQQzVXZFRhWFlGYlI4dk52TDUrM0tnZmI1eE5NeWE5UmFtSml5bmFNbEdUVnRGbHI2YmE5dStwcW5FWDR1TXVSUmdqU1lFaHJON3V0RkZlNmxxYWw3TmZrdzVpbUFHSHluUHBiazhWbVkweHN0bnB0bEZDVkNZdHpUdUJOODNRcE1MalR0ZXZkUHpTVW5KN2U4bWtqeFozOWZYYktEZmxkWnFidlUrVFVnR25CVkY2ZlEyaVBIZzRXMTZVV1V3dnpiazE2c01aRStQbjBwdno3SlNldUF5ZXM4bGNwQ21hS3VvL3ArcVdyMlVjd0lBSFdydlAwWUV6aFhBdExBYnNzSGhwN2lHYW12eWlqUDhyeXFyWFVXWDlYb293eHlBdWZOQnJwNDNQT0JGWFpsa2Y4TURSaXFjcHlvd0F3cHV6MngrZld2ei9EdGRlOXNtc3p5Z3RjUjZDMXdiZHpCbDZPbHE1V05ZWTRvR2F0aEpNcmtURXgwakFSU0hBVnMrNXJZa1FOWGIrUWdmUExzUTZnWHlJbnNyZVFmbXBtN1JWRllmTDg2bjFmaVVPa1l2U2hrVVB4dmJ1a3pveTZLMWloTTFobzNYelc2RXZTZlhBK2RwaVdHYVdkK2RvWHpMem1Hd0tZRkxDQXNSQWxQQkFoTWxDRlhVN3RCVVZQcjhIZ1ZjSkhXcStGMDBwbHIrRE1UZHJQNHp2eFkxMWtOTWh4VCtTZVRHZytkNFY1TFFKaXR5VUdKTkI4VkZac2pnWUJaTS9JSS9YQ1RrajBxeURPcEYyQVZRMTdDSWpVcC9EblQxVWtMNUY1Z2RqK3NTMXdnMWdFM2dpZ202MGZDWHpTblBYYnlBUGJJWHYrSURwRTE2VGhhSElTOXNreWhsbU1FNUYzY2ZxQUtocTJDMEU1UEgxZ1lhWGFMUERrWkcwSERKT25LV0hwNTFJMHo1U091eDhlMVdBdVp6ZEhRclRrcDhUbWpYb0krbGEwd0dac3p1YnFiTzNpZlE2QS9XN3ZWU1lzVjNtUjBKS3drS2M0V0hpQmttUjhJM0NDZ0k4N29PTDRxelQ1UCtSVUpCZWpFT2dBUEs4aFlQemF0TStlSVRwMklPOXlUUW1lcm9tUFJ4eDFxeEFjc2lsZS91YlNlRWJjV1FHWUVDZ2hjTFkySHlLam9nakgyNWhNcGpwVXYxT3VnbGk0ZWgyZVJ3ME8zMmJKamt5dUNnTnpnMHZ6bFlNU2lTczB1b280TUc3aE1PakNFYVgxeUZFMG5TdmpCenVUbkVwSzg2WjhJb3FGQUl1Ync4a2c5QXJFYVJFV1NaSStqSDRYYnA2ZzlFOUVuSlQzb2FSekROK01VSkJRREhuNTZhOG9VbUVCdXNPeEJzL041K3RKRWJQa0FGRGo4VUd2T3MvSVd2Y1NnbEdCaHZTNy9GVFlmcFdHWWREWThmUEF4V1NBMzVzVEM0cDQrTG00QWFxSW9QZVF0ZnVmSzZKaDBaaHhsYnNVWE9TbVhOaWZENVpUQWt5RG9mYmJjY2x4bkE4V05BcXhDYlJOeWtoWHhRcGFEdzY3ZlhVWWJzaUcwS2h0djJvZUl2aDhyaFFNWU9jRUFxWEcvZUkrem5nT2M1eXhyOHE4MklBTTFjL0ZMRk9wbHF1NWVGUVhyTVp6R2NWQ2pZYkxXRzVJNEJUMWV1UnJsYnh0Tk90TWl0RERFaExYSUl5bkFBdnVPRVdFM1gzTmRBZnQ5NFZnYUc0MlhJUXQwWlg2UGVDRS9xUUZlOXJLNkh4N1lVNTBLdkg3Zlc0ZlMrcTdLS0JKeHNnZ0JYNXBTQUdoMWpJclZoNXpRNnczUmZhYWhCWG0vYUNiQ1pUakNVRlVUeVdacVc5cDYyTWpKUFhWcU9yUGdNTzROdjc0R2tmK293ZnROVkJEUW5qRkpxSFN3MTdwWHZoV1c1S1pxZS9RNDlOL1VTVENBVldvUVhGSUhCSFhYZTNGUHJVRHN1R0RtdEYvaEhLVEhwZWt4aGlBT1BJK1NKcTZTNkhGNEk5WVd6a0JKVG80NmlVTXpXcDhQaXIvUmlkdUx4S1lzU2tzVjh2TGxPUXZoR1gyWWxSME9CaEJqQyt1L2dFY3ZZMEFwSzdZazQxTnhqUFNRbldGSFRGNjZVcmpnZXZCOEN1NWErbDJ2WVNSUHR1VkRvNzNoaGRNU0huVVg3dFRqc1ZaR3hBbC9XcHRpT0lFUTFnbkwyOW1YNi90UjF0bWxrWWo4VzRYK0NTaldjVURHWTFOcFMvQzdoU0txaU1MTS9sMlFtU1daNzNEZHorZ2lvOEJDRU5ZUFE0NnFua3p3WFVicXZCa3hqVVFzV2ZaRmdidW8zckFmK3dON2pPTzkwK3lueDRQaTNMKzBuWUwxU2NoRFVnQVA0Z1BWLzdJZDFxKzFIU2htdUdrSXFXUlBneXhNRnFQOEhmalRualh3WTViUWZiSmN0Nk9JektnTUhvdEYvSGUxZWdzYXhIU3FHNndmZG1RNXg4TnlURkZxQmNwMmlTb3dIUjN5azUrMzZoRjd2WEFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xX1BSRSIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsImxhcmdlQmxvYktleSIsImNyZWRCbG9iIiwibWluUGluTGVuZ3RoIl0sImFhZ3VpZCI6IjlmZjRjYzY1NjE1NDRmZmZiYTA5OWUyYWY3ODgyYWQyIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibGFyZ2VCbG9icyI6dHJ1ZSwiZXAiOmZhbHNlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6dHJ1ZSwiYWx3YXlzVXYiOmZhbHNlfSwibWF4TXNnU2l6ZSI6MTI4MCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0Ijo4LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjEyOCwidHJhbnNwb3J0cyI6WyJuZmMiLCJ1c2IiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotOH0seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTM1fV0sIm1heFNlcmlhbGl6ZWRMYXJnZUJsb2JBcnJheSI6NDA5NiwibWluUElOTGVuZ3RoIjo2LCJmaXJtd2FyZVZlcnNpb24iOjMyOTQ3MywibWF4Q3JlZEJsb2JMZW5ndGgiOjMyLCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6MSwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjEwMH19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTEwLTEyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3MywiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJTZWN1cml0eSBLZXkgTkZDIGJ5IFl1YmljbyAtIEVudGVycHJpc2UgRWRpdGlvbiAoRW50ZXJwcmlzZSBQcm9maWxlKSIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjQxMDEyMDA2IiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMTAtMTIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDczfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI0LTExLTEyIn0seyJhYWd1aWQiOiI0NTk5MDYyZS02OTI2LTRmZTctOTU2Ni05ZThmYjFhZWRhYTAiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjQ1OTkwNjJlLTY5MjYtNGZlNy05NTY2LTllOGZiMWFlZGFhMCIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IDUgU2VyaWVzIChFbnRlcnByaXNlIFByb2ZpbGUpIn0sImRlc2NyaXB0aW9uIjoiWXViaUtleSA1IFNlcmllcyAoRW50ZXJwcmlzZSBQcm9maWxlKSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzYsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfSx7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciLCJzZWNwMzg0cjFfZWNkc2Ffc2hhMzg0X3JhdyIsImVkMjU1MTlfZWRkc2Ffc2hhNTEyX3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURTakNDQWpLZ0F3SUJBZ0lVVG5iYkdJUjJOSHZ6cUlLRkFlUXdHMVhCaXMwd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JCSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVFZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU9zWGozazA0QmFuNFRZZHRaS3FEL09QSnh5RHlhUG1DQlVGVWlhWklnVHRlWm5qM1gyNURoZ3BaWlhzQzREMHlkSWNybEE2d05VSW5PUkwvTDl6QmJURUlNQVZNR282ZzdVS0FtYjJNRjZBSGJuaFlKZDllaWt1cFZOV1NoSE5ZTmM0R0JkTzFZTjZBZlVxdkpoSGJlM1Y0U05NUG1CUkVLSlBWejdUaHdnbWdnVGU4V3MySzAvd3NxdjJ3U0U3cGJDQnNVWmhJWDUxYlpNM3BxRHdKUFRtUkZFdnQwLzZ0RzVlTzhGM2oxNE9YcWZFaG1qbjFWdnhLRFlRT0xaQXhDd3dnQzBQNENkZld2M3k4UFNSOEkzNTRoTzFZK0d6Tmp2SXFYMzhOS0x5d3VJWUhGZXJPeE5seEVNQnZGaFlCdVJ1WUFra2dVYVBxTjZVQmhzSUxyc0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ0NvUkhoaXlObmJuWFJXSUw2WkJYb0JYOVlUTUI4R0ExVWRJd1FZTUJhQUZDQW9VQ0VicEZwYjZGUExuWjNGNVB4c0wzb2ZNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUNRRmFmSkkxLzVXZzlDRUVpbUUxUlA1NFJnUXdUTlRPT1FzTEFDVGUrckl0bEZRekM5WkRoclY4Mjh5WDdqenkrQUFzcDNpeks3VDF0aDJkbDdtK3R1MHN3MlBhL29sYzAybnQ2UHlJdzM0OGdhSHpoSTErMEtFNDVxeHZGRGVMMmxNeGJQZkNZdnlFRWFZemppUUVMVTU5NTFwWEdXeUtNYS80Zkx0TytaS09YaE11VmVxNHJYRFBJNTRXNkpIT2lBYWlLZGl3KzVlM2Mya3QvakZJUXRNNnZNWGc5TE5GemRqRVROdDIwVlg5UWV2UnBGWmZ1Y01HOXdDYVFEb0ZsUHpwVE1KS2hQZXYvaW1KbVpZaEtmcjBsTGNlbXRxakl4TEFvcVpkT1lmSEJnNit2QWNkUEkvaWF1R3BVQXY3WCtVS05tRHdqWjJCYUg0c0x3aEIybSIsIk1JSURTRENDQWpDZ0F3SUJBZ0lVRHFFUncrNFJuR1NnZ3hnVWV3SkZFUERSWjNZd0RRWUpLb1pJaHZjTkFRRUxCUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURJN1huSCtadkR3TUNRVThNOFplVjVxc2N1Ymx2VllhYVJ0M1liYXhuOWdvZEx4NXN3SDBsWHJkZ2poNWg3RnBWZ0NnWVlYN0U0YmwxdmJ6VUxlbXJNV1Q4TjNXTUdVZThRQUpiQmVpb1Y3Vy9FK2hUWlAvMFNLSlZhM2V3S0JvNlVMZU1uZlFaRHJWT1JBazh3VExxMnY1TGxqNXZNajdKdE9vdEthOUo3bkhTOGtMbXpYWFNhajBTd0VQaDVPQVpVVE5WNHpzMWJ2b1RBUVFXckw0L0o5UXVLdDZXQ0ZFNW5VTmlSUWNFYlZGOG1scUsyYngyejZva1ZsdHlEVkxDeFlicFVURUx2WTF1c1IzRFRHUFVvSUNsT200Y3Jwd25EUkxWSHZqWWVQR0JCLy9wRXl6eEEvZ2NTY3hqd2FIMVpVdzliblNiSHl1cktxYlRhMUt2akFnTUJBQUdqWmpCa01CMEdBMVVkRGdRV0JCVHF0MEtRbmd4N1pIcmJWSHdEdW54T245aWhZVEFmQmdOVkhTTUVHREFXZ0JUUzd1OWFJbzA2YlZ3amx6M3loZFVtOFNWN2tqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQTRHQTFVZER3RUIvd1FFQXdJQmhqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFxUWFDV014VEdxVlZYN1NrN2trSm1VdWVUU1lLdVU2K0tCQlNnd0lSbmx3OUs3SGUxSXB4WjBoZHdwUE5pa0tqbWN5RmdGUHpoSW13SEpneHh1VDkwUHczdllPZGNKSk5rdERnMzVQWE9melNuMTVjRkF4MVJPMG1QVG1JYjhkWGlFV09wem9YdmR3WERNNDFaYUNEWU1UN3c0SVF0TXl2RTd4VUJacTJianRBbnEvTkRVQTdiZTRIOEgzaXBDKy8rTktsVXJjVWgrajQ4SzY3V0kwdTFtNkZlUXVlQkE3bjA2ajgyNXJxRHFzYUxzOVRiN0tBSEF3OFBtcldhTlBHMmtqS2VyeFBFZmVjaXZsRmF3cDJSV1p2eHJWdG4zVFYyU0J4eUNKQ2tYc05EMDVkQ0VyVkhTSklzK0JkdFRWTlk5QXd0eVBtbnliMHY0bVNUenZXZHc9PSIsIk1JSURTakNDQWpLZ0F3SUJBZ0lVUjM4bXEyNlNmMnN6VlYyQmRHNldFTjdrdVdVd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVJZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU5ZMFdiOW9Qb1JvS29ReVdQYUpwejExdnJXVGc2elR0bU5qMlZvS1JueXZLR1JxcHpiODN3NWw2WUE5NlVZa1lCRFFQMGlsTzJEUGU2d1dxVlI1ekRmUnpkY0g4YmgrTDdkR0d2YWU2aFJUWmhrRmtDcFhEczRIY2NrbnJEZjhGQ2xKN0hlMzlKZjQyL0cxUW0yeno5V1dtclBYdGdpSy94MDVHanNRZkd1REcxemY1UVRVVWllOGx3eW1LM1RmZE92TmVlSkFBUGUycG43SXRmUmIrclZyTldpRHpsUm4ydk5uWjJ3UG80d0gvV0o2ZGhYWkcrck1XVCthNkJvY2cxVWZJdzZrZHVuRzRiVHBaenN2YWNGWXlSMG1wZitEZU9ucFNXQW15d0pXSHZUbGYyWVh4RnllWGNUQUNkUWxjTU5HSjJWaFpRNDh4dFA1L1JCUC84a0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ2h5NDJva2lxY1RTMWlxYS9IUldqa0JuNEgvTUI4R0ExVWRJd1FZTUJhQUZPcTNRcENlREh0a2V0dFVmQU82ZkU2ZjJLRmhNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUFuK1JISVBidE1FRE5kVDFnOEgvUml0QWtVZExnQXQxdFdHV25sajlrbmJ2NC80R2xYN0M5cDQ1ZWZQTzkvYVpMNk9WMVhSS0JpNkttdEJXNUs3bnVZRW5NeC81QnFCU2JMVDdyaGR1QzQ5VEJlTWI5UEhkWHNUbFNWTlllZnIxZEdpZHI0ajB4VkJRTGIxcmtuREFiZFdEektmdm5heUtPOEZyd2U3SHg4NDNNRy9ySitjMFhydVV2YmZWVENITGlJV2hNN29ORGhMOHhvYjZ4VW85S0xLY1NMK0l0WXNPMy85V2I4UTlHanNxTDRGWHNEY0cxU2FZaDdLcGZ1TW1PaXhxekpaTzJuSWljUFlSZzFJMlN1aVVmWU83MHRtZEhjYmwra1NRbVNZdDdycTR2aUlMZzJHeDNqOXJJVHVXVGpiYVVhU1NReGdPbU1TSHV5ek1BQyIsIk1JSURSekNDQWpHZ0F3SUJBZ0lVZXg5blQ5dndaTlhTNDgzTGRpWUdmdzJTalNvd0N3WUpLb1pJaHZjTkFRRUxNQzR4TERBcUJnTlZCQU1NSTFsMVltbGpieUJCZEhSbGMzUmhkR2x2YmlCSmJuUmxjbTFsWkdsaGRHVWdRaUF4TUNBWERUSTFNRGd3TVRBd01EQXdNRm9ZRHprNU9Ua3hNak14TWpNMU9UVTVXakFuTVNVd0l3WURWUVFEREJ4WmRXSnBZMjhnUmtsRVR5QkJkSFJsYzNSaGRHbHZiaUJDTWlBeE1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBdTFNZXZueTlkeU85WlVDMzlTb01oTGNSL0RYcnRGL2NpTTEydGNpeTJFWEFaNk1rcml2VnRDZkVWTTlYNklTVEVuQlA2dVNZWW92NnBwdjZPNkpoMk5IbVltNHcrSm5TNFZuQ1BVN21IQU1mVkkyTUdUVE1WT2V3MHhVc0c3c0lTSWtJRFVCbXVrOFlLOWM1emljOSt2RlFHTElrc2RYTzVpVkZJZ05HNTNjR1hENFpMWm9BUGl1MFBFb3p4QXFZSWFJNGd4S2hPQTNTOC9XOG1JV3N1Nm9meWo0R3ZrRkc2WjdreUYzMTA3UDdtd0ZITHJJM0VOYVBXTU9GY1RhR2EwZHcrL3ZWUndqUmNFWkJWc3V1VC84N2NrU3MwYTVwa3QzdlpCbGFZZVQ4cHpTcmVWN21vd2NJTTkwTDJpYUFUbFAwbnhtYUU2bk95VGJvakZWbDJ3SURBUUFCbzJZd1pEQWRCZ05WSFE0RUZnUVVTWEVoM3NhM2J0RHVybTRNTS9DN1MxbFJ1dVl3SHdZRFZSMGpCQmd3Rm9BVTZyZENrSjRNZTJSNjIxUjhBN3A4VHAvWW9XRXdFZ1lEVlIwVEFRSC9CQWd3QmdFQi93SUJBREFPQmdOVkhROEJBZjhFQkFNQ0FZWXdDd1lKS29aSWh2Y05BUUVMQTRJQkFRQjVHYzNoYWZ0cDdoS3NFWnNvK2kvWjVuUnVxZG16RzJXQ2xVb1JVcWJhUHlnbG5KRGpLUi9rZmdPbDZpYmJGL3p0aG0zS21YUTdIY0RJUDJ4TWRHN1UyTDJpbWJKUUhxUGYvaDJIcW9qYjRyWmd1ZSs2VzRrdFNSNWVsUjlMMXJZcUUvU0dZTTRpRUtvVlFTdjdSVDFyeEllV2lLc3cvVnh4aS9RT25zeDNGN3g4MENDWWdCNEUzeVF4OFZUVzQ0MGhURXdUQTFlTUhPaXgzMnRQdHl5SElhOFBWVklmVnBIUUpCYU1WdnY1MDhVRWp3a2JVMnJuamZ6b1NUTlM5QTVqVVE4bUJTdmU5NXJqQjBkbzk4RVUrRHhkQnFYMitINmk1d2xJQ0ZnemhkemNzbmU5aEdLVDZselRYNGNJZEpzclkyK3hsZUswRkZReTZsR0VWTEVlIiwiTUlJRFNEQ0NBakNnQXdJQkFnSVVVY21NWHpSSUZPZ0dUSzBUYjNnRXVaWVprQkl3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRRG01NTViV1k5V1crdE9ZMHJJV0hsZGgrYU5hbm9DWkNGaDdHazNZWnJRbVBVdzBoa1NHNnFZSFF0UCtmWnlTMzNWRXJ2ZytCUXFubXVtZ05oZnhGcmt3RVpFTGVpZEJjQzhDNEFnNG5xcWlQV3B6c3ZJMTdOY3hZbEluTE5MRmNaWS8rZ09pTjZaT1RpaE81L3ZCWk1iajlyaWFBY3FsaVltTkdKUGdUY01HYUVBeU16RU1OeTJubTZFcCtwalA1YUY2Z2kyMXQvVVFGc3VKMWoyUmoveW5NL1NkUnQrZWNhbDVPWW90eEhrRmJMOXZ2djJBMk92NUlUWkNsdzRiT1M5bnB5cFFpbU9aNVFBWXl0bVlhUXBXbC9wTVl6NnpTajhScWtWRE5FSkdxTmZUS0EyaXZMWXdYNmxTdHRNUGFwZzBKODRsOVgwdm9WTi9GcFM0VkNWQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJRZ0tGQWhHNlJhVytoVHk1MmR4ZVQ4YkM5Nkh6QWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQVlNemdMckpMSXIwT292UW5BWnJSSUd1YWJpSFNVS1NtYkxSV3BSa1dlQXRzQ2hERUhwWGNKL2JnRE5LWVdvSHFROHhSVWpCNEN5ZXBZZXZjM1lsckc4bzd6SHhwZlZjYW9MNVNldUprekh4S240YlRhU3A5K012d2FtbnA2NGtaTWlOYkZMa25mUDlrWUtvUkhrTVdoZVJKMVVzUDF6NFNjbWtDZUlMZnNNczZ2cW92cWpXQ2xGc0pwQmNzbHVZSFdGN2JCSjFuNFJ3ZytBVEVvcFk0SWdHdjZadndjK0E5citBVDJocXBvU2tZb0FsK0FOWXdnc2xPZjlzSmUwVitUQTlZWS9VbGFCbVBQVGQwLy9yOXd2Y2VQV1prUGpLb0FDL3pVTmhmRGJoNExWOEdIczNseVgyWG9tTC9MTmM4Sll6eUlhREVoR1F2ZW9QaGgvdHIxZz09IiwiTUlJRFBqQ0NBaWFnQXdJQkFnSVVYemVpRURKRU9UdDE0RjVuMG82WmYvYkJ3aVV3RFFZSktvWklodmNOQVFFTkJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNWjYvVHhNOHJJVCtFYW9Qdkc4MW9udE1Pby8ybVEyUkJ3SkhTMFFaY3hWYU5YdmwxMkxVaEJaNUxtaUJTY0laZDFSbngxb2Q1ODVoKy9kaEs3aEVtN0pBQUxrS0t0czFmTzUzS0dOTFp1ano1aDN3R25jcjRoeUtGMEc3NGIvVTNLOWhFNW1HTkQ2enFZY2hDUkFIZnJZTVlSREY0WUwwWDRENW5HZHh2cHBBeTZua0VtdFdtTW53TzNpMFRBdWNzcmJFNDg1SHZHTTRyMFZwZ1ZkSnB2Z1FqaVRKQ1RJcStEMzVod3RUOFFESXYrbkd2cGN5aTV3Y0lmQ2t6eUNpbUp1a2hZeTZLb3FOTUtRRWRwTmlTT3ZXeURNVE10MWJ3Q3ZFenB3OTF1K21zVXQ0cmowZWZuTzlzMFpPd2R3TVJEbkg0eGdVbDVaTHdyclBrZkMxLzBDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01COEdBMVVkSXdRWU1CYUFGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFNd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkRRVUFBNElCQVFDM0lXL3NnQjlwWjhhcEpOanh1R29YK0ZrSUxrczB3TU5yZFhML2NvVXZzcmh6c3ZsNm1lUE1yYkdKQnlKMVhucXVCNXNnY1JFTkZ4ZFFGbWEzbWlvOFVwZjFvd00xWnJlWHJKMG1BREcyQnBscWJKbnhpeVlhK1IxMXJlSUZUV2VJaE1OY1pLc0RackZBeVB1RmpDV1NRdkptTldlOW1GUllGZ05oWEpLa1hJYjVIMVhnRURsd2llZFlSTTdWb2xCTmxsZDZwUkZLbFg4dXN0Nk9UTU9lQURsMnhORjBtMUxUaFNkZXVYdkR5QzFnOStJTGZ6M1M2T0lZZ2MzaXJvUmNGRDM1NGc3cktmdTY3cUZBdzlnQzR5aTB4QlRQclk5NXJoNC9IcWFVWUNBL0w4bGRSazZIN1hrMzVEK1dWcG1xMlNoL3hUNUhpRnVoZjR3SmIwYksiXSwiaWNvbiI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsImljb25EYXJrIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwicHJvdmlkZXJMb2dvTGlnaHQiOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJwcm92aWRlckxvZ29EYXJrIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMV9QUkUiLCJGSURPXzJfMSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJsYXJnZUJsb2JLZXkiLCJjcmVkQmxvYiIsIm1pblBpbkxlbmd0aCJdLCJhYWd1aWQiOiI0NTk5MDYyZTY5MjY0ZmU3OTU2NjllOGZiMWFlZGFhMCIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImxhcmdlQmxvYnMiOnRydWUsImVwIjpmYWxzZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOnRydWUsImFsd2F5c1V2IjpmYWxzZX0sIm1heE1zZ1NpemUiOjE1MzYsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6OCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoxMjgsInRyYW5zcG9ydHMiOlsidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN30seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTh9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi0zNX1dLCJtYXhTZXJpYWxpemVkTGFyZ2VCbG9iQXJyYXkiOjQwOTYsIm1pblBJTkxlbmd0aCI6NCwiZmlybXdhcmVWZXJzaW9uIjozMjk0NzYsIm1heENyZWRCbG9iTGVuZ3RoIjozMiwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjEsInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjoxMDB9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMi0yMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzYsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWXViaUtleSA1IFNlcmllcyAoRW50ZXJwcmlzZSBQcm9maWxlKSIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjQxMjIyMDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMTItMjIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTAxLTEwIn0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiMzI1MjZmNzNkZmNhMTJkYTljMWQ4N2Q2ZTBhZGI2NGU4NDNmNzNkYSJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyIzMjUyNmY3M2RmY2ExMmRhOWMxZDg3ZDZlMGFkYjY0ZTg0M2Y3M2RhIl0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJUcnVzdEtleSBHMzIwIFUyRiBBdXRoZW50aWNhdG9yIn0sImRlc2NyaXB0aW9uIjoiVHJ1c3RLZXkgRzMyMCBVMkYgQXV0aGVudGljYXRvciIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwicmVtb3RlX2hhbmRsZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoyNTYsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDcFRDQ0FrcWdBd0lCQWdJQkFUQUtCZ2dxaGtqT1BRUURBakNCcnpFTE1Ba0dBMVVFQmhNQ1MxSXhFVEFQQmdOVkJBZ01DRk5sYjNWc0xWTnBNUk13RVFZRFZRUUhEQXBIWVc1bmJtRnRMVWQxTVJjd0ZRWURWUVFLREE1bFYwSk5JRU52TGl3Z1RIUmtMakVpTUNBR0ExVUVDd3daUVhWMGFHVnVkR2xqWVhSdmNpQkJkSFJsYzNSaGRHbHZiakVjTUJvR0ExVUVBd3dUWlZkQ1RTQkRRU0JEWlhKMGFXWnBZMkYwWlRFZE1Cc0dDU3FHU0liM0RRRUpBUllPYVc1bWIwQmxMWGRpYlM1amIyMHdIaGNOTVRnd056QXlNRFV6TVRNNVdoY05Nak13TnpBeE1EVXpNVE01V2pDQnJ6RUxNQWtHQTFVRUJoTUNTMUl4RVRBUEJnTlZCQWdNQ0ZObGIzVnNMVk5wTVJNd0VRWURWUVFIREFwSFlXNW5ibUZ0TFVkMU1SY3dGUVlEVlFRS0RBNWxWMEpOSUVOdkxpd2dUSFJrTGpFaU1DQUdBMVVFQ3d3WlFYVjBhR1Z1ZEdsallYUnZjaUJCZEhSbGMzUmhkR2x2YmpFY01Cb0dBMVVFQXd3VFpWZENUU0JEUVNCRFpYSjBhV1pwWTJGMFpURWRNQnNHQ1NxR1NJYjNEUUVKQVJZT2FXNW1iMEJsTFhkaWJTNWpiMjB3V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVFJZnFIaXNpMG9PL2V5T3FTYURycjlpdEcySXltQmtIblNER1FJSVltVCt2cUE4QWdPODFtb21jMkxkNVBHcEVONm11RTU0d1BIUWp2Yy95Q2loOHUybzFVd1V6QVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUFNQjBHQTFVZERnUVdCQlMzSi9meGlBdjIyaXJkQnM5OFNPRGhGN2tVL2pBTEJnTlZIUThFQkFNQ0FRWXdFUVlKWUlaSUFZYjRRZ0VCQkFRREFnQUhNQW9HQ0NxR1NNNDlCQU1DQTBrQU1FWUNJUURjNDFMRks0TEpDQlUyVlZLSXo3WjZzeFBoVUVraDhuTFNMSzZJWGRrUDV3SWhBSWVLVk9aY2hhVk81YUY3ZmJkWG9TcmN5eTFZWWVVZVBMb2pjS0k5Zlg4NCIsIk1JSUNnakNDQWlpZ0F3SUJBZ0lCQVRBS0JnZ3Foa2pPUFFRREFqQ0JuVEVMTUFrR0ExVUVCaE1DUzFJeERqQU1CZ05WQkFnTUJWTmxiM1ZzTVJBd0RnWURWUVFIREFkSFlXNW5ibUZ0TVJjd0ZRWURWUVFLREE1bFYwSk5JRU52TGl3Z1RIUmtMakVaTUJjR0ExVUVDd3dRUTJWeWRHbG1hV05oZEdVZ1ZXNXBkREVaTUJjR0ExVUVBd3dRWlZkQ1RTQkRaWEowYVdacFkyRjBaVEVkTUJzR0NTcUdTSWIzRFFFSkFSWU9hVzVtYjBCbExYZGliUzVqYjIwd0lCY05Nak13TnpFeE1ETTBOakUwV2hnUE1qQTNNekEyTWpnd016UTJNVFJhTUlHZE1Rc3dDUVlEVlFRR0V3SkxVakVPTUF3R0ExVUVDQXdGVTJWdmRXd3hFREFPQmdOVkJBY01CMGRoYm1kdVlXMHhGekFWQmdOVkJBb01EbVZYUWswZ1EyOHVMQ0JNZEdRdU1Sa3dGd1lEVlFRTERCQkRaWEowYVdacFkyRjBaU0JWYm1sME1Sa3dGd1lEVlFRRERCQmxWMEpOSUVObGNuUnBabWxqWVhSbE1SMHdHd1lKS29aSWh2Y05BUWtCRmc1cGJtWnZRR1V0ZDJKdExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCQWgrb2VLeUxTZzc5N0k2cEpvT3V2MkswYllqS1lHUWVkSU1aQWdoaVpQNitvRHdDQTd6V2FpWnpZdDNrOGFrUTNxYTRUbmpBOGRDTzl6L0lLS0h5N2FqVlRCVE1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdIUVlEVlIwT0JCWUVGTGNuOS9HSUMvYmFLdDBHejN4STRPRVh1UlQrTUFzR0ExVWREd1FFQXdJQkJqQVJCZ2xnaGtnQmh2aENBUUVFQkFNQ0FBY3dDZ1lJS29aSXpqMEVBd0lEU0FBd1JRSWhBTlZuSmRlLy90QkxxOE1ERGkrU0FkNlVkWUlaU25nNFBNcW15TnJ2Wmo2NEFpQVgweFN6QWhGYUNDcC91aHBWZ25sRitYQmdyd0FJc290WkdUQjZya0IzMUE9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFHWUFBQUE3Q0FZQUFBQ0p6LzlMQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUF5WnBWRmgwV0UxTU9tTnZiUzVoWkc5aVpTNTRiWEFBQUFBQUFEdy9lSEJoWTJ0bGRDQmlaV2RwYmowaTc3dS9JaUJwWkQwaVZ6Vk5NRTF3UTJWb2FVaDZjbVZUZWs1VVkzcHJZemxrSWo4K0lEeDRPbmh0Y0cxbGRHRWdlRzFzYm5NNmVEMGlZV1J2WW1VNmJuTTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlrRmtiMkpsSUZoTlVDQkRiM0psSURVdU5pMWpNVEV4SURjNUxqRTFPRE15TlN3Z01qQXhOUzh3T1M4eE1DMHdNVG94TURveU1DQWdJQ0FnSUNBZ0lqNGdQSEprWmpwU1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJajRnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJZ2VHMXNibk02ZUcxd1BTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZJaUI0Yld4dWN6cDRiWEJOVFQwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOTRZWEF2TVM0d0wyMXRMeUlnZUcxc2JuTTZjM1JTWldZOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXpWSGx3WlM5U1pYTnZkWEpqWlZKbFppTWlJSGh0Y0RwRGNtVmhkRzl5Vkc5dmJEMGlRV1J2WW1VZ1VHaHZkRzl6YUc5d0lFTkRJREl3TVRVZ0tGZHBibVJ2ZDNNcElpQjRiWEJOVFRwSmJuTjBZVzVqWlVsRVBTSjRiWEF1YVdsa09qWTFORFkzUkVaR05UQXdRakV4UlRZNVJqRXpSalZCUmpoR1FqZ3pPRE15SWlCNGJYQk5UVHBFYjJOMWJXVnVkRWxFUFNKNGJYQXVaR2xrT2pZMU5EWTNSVEF3TlRBd1FqRXhSVFk1UmpFelJqVkJSamhHUWpnek9ETXlJajRnUEhodGNFMU5Pa1JsY21sMlpXUkdjbTl0SUhOMFVtVm1PbWx1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2TmpVME5qZEVSa1ExTURCQ01URkZOamxHTVROR05VRkdPRVpDT0RNNE16SWlJSE4wVW1WbU9tUnZZM1Z0Wlc1MFNVUTlJbmh0Y0M1a2FXUTZOalUwTmpkRVJrVTFNREJDTVRGRk5qbEdNVE5HTlVGR09FWkNPRE00TXpJaUx6NGdQQzl5WkdZNlJHVnpZM0pwY0hScGIyNCtJRHd2Y21SbU9sSkVSajRnUEM5NE9uaHRjRzFsZEdFK0lEdy9lSEJoWTJ0bGRDQmxibVE5SW5JaVB6NlhxQVNYQUFBUWMwbEVRVlI0MnV4Y0IxaFV4eFllbGtWNkVRVVJCU25DTGtRVGplMDlFeEVGTlM4R0U5VFBSSTFHQVJzb2Rvb1JOQUlXRURVV0ZMR2lhTlFrMXNSZ3dRcWFLSWpScDlLTFloREJLS0VxTE84Y21NMGJMaGQyRjB0VWRyN3ZmSFB2N055NWM4OC9aMDZabVZVbHIwR3lORE8zYTYydmZ4aW8rSEh4azF0RW1ZaktQd3hJSzhqOGdMNEd3dXMvZ01SWmQzT0xXem93cXY4Z0tQK0M3Q2VnVWRnUGZYMTlVbGxacVF2WE9pQTF4NVVTOCtvQjBZRXNCR2dHdnQvYzNMeHllL1RPSEYwOVBjMS85KzVqVmwxVkpZSHlmNEhVWEduSndBaGVNU2ovZ1F4MWlMZXFxcXJLM1BuejBuOCtFU3M1c0crL2JXcEtpcG4zekpucHRFK1JVRmNvVDV1RHZzdlVBUW9IZWw4cE1Zb0RZZ1RaR3FBeGVHLy9qbjNKOXVqb3dyVFVWSXNGdm40a056ZVhnT1FRQUtsc3NKT1QydjI4KzJwUWJTNUl6U29ab0NEUWtVQm1RRWxBdlU5K1lWV3RCRVkrVU1aQnRocW9qYnE2T2xrU0hIeG4wSkRCblpjR2h3aS8zNysvWHQxcFhsN2tFeGVYbEtFZmZTU0MyMUlnT3dEbkxnOGc5WUJtMG13QVpvMXlLbXNhRUF1Z1dMaU1SbEQ2ZnZCQjRkVnIxKzVyYVd1SkJ3OTBhZ0FLcHMyUmtVU29KaFM1REJ0MkgyNjFnZGJ4Z0lKQTMrWUJCVk1RL041UktUSDhnS2hTeFI2TXpOWFIwU0ZyTjJ5NEpSYUw3QU8rWGtoT256clY1UE05ZS9VaTBURzdDM3AyZjkrNHJCU0ZocmlDMUJ3Q2hsdkE5U2FnSVRLNmNCQ2tacmhTWXVxRDBoV3lTM1RxMG5iNTlOTzgzNUlTQy9QdTNiVWY1T1FrRXhSTVY2OWNJWWNQSGpJT0MxLzUzOXFSSTFCZDU3enIxZ0pxTkhCQnlRSWFCdlE3VStZS0lBNVRTa3dkSUJyVVNVUm5VV2hrWkZTMWRjZjJkRTB0TGJIZmZCK1NlUFdxUXUyaFQzUHE3SmxxVC8vZ2dzTGVYMWFvNmhwYWNxcFVVeDBUQ05KUkJrRDBodXZMelBlZ1hyS0gzMHBhck1RQUtQMGdTd1phcUtLaUluVHo4TWcrbnhCZkVYYzZUdnp4NENFS2c0THB3Mzc5U1BLRGl2U0tJYk5NZUVDNWpuNE9NSDBlZ29JRmtQOEdXUVJUQjYyMEpTMVNZZ0FRUGNoQ2dhYlUzbHRabFlPam1QZW9xS2l6TDBnSm1NSUt0Mm5TdmozeFhSaFFGSy9ib3liNVFYbGJ6cytWUU44QWhRRVFWVHhHQWZZbkJadGhwQXJONTZRV0F3eUE4aWtkb2FhcVFpSHg4ZlZOR3pOMmpIbDQyRXIxNkowN2lVUWlVYXdUS2lwa3pOaXhraDZqdmRLM3BEeTFmVnBkdzYxeURtZ1NNRGxOaGwrRDRaMTlyTW9DNmdQUFNkN3FxUXdBTVFFNkFKZUhFSlQzdW5Vci91M3FsUnhia2EzTmtFR0QxSGRzMzY0d0tGYldWaVJpNSs3OGgvMDl5eUp1VlhKQmVVSWxjb0FzVU9pVWhqWTRHMmZyQ2VUNTFrb01nSUgxSmdLRkF4bG9hbXFTcGN1WDMrbm4wTThtYU1rU1ZiQ2lGSDR4U3RyVWFkT3FqQWFOeTltVFdtWXRxV2xvOWdKTkIyYmZWNlJkYWxhakJhZEppLzRDRWl2YXptc3ZNUUJLWjhoT0EyMUZVQndIT0Q2OGNpMHBYMUlqRVE5eWNtNFdLTjI2ZHllUmUzL0l1VzczZWZYdWxBYWc1QU9OUUYra09jeUVaN0loVzh3VVljUjY3VnNqTVRTSU9JZCtwS2FCZ1VITitvMFJkenBaV05oOTdlZFB6cDg3cC9ETHRMUzBpUGVjMlJXVlBWd0xqcWFYbVBOVWlRTHlBZVkrZnA2UEFxbFJvN0d6TGt5eEM3Ujc3STBHQmtEQlNPMFdvTzU0UDNMVXFIdEJJY0ZhZTJKaURNTkR3MGhaV1puQ0wrcnY2RWkrblBOMXhxWnNEWXNubGRYY2RTRFVINU9CY1dkZjFJY0JPSDBodThoOFl5NzFiVXJmT0dBQUVDM0lGZ0hOUlRYUTN0VDAyZGJ0MnpJRkFvRUlUZURyeWNrS3Y2QzFvU0daNzcrZ09LV2pRMW44dlRJVEhrY3hETTFnWUZqRmkvNDRBR2VUMUp5bktSejluemNLR0FCbElHU2JnYXpSZkozcTZaazVZNlozdTRqMTY3VTNSbXdrMVZWVkNqZnVPbnc0Y1pvNE96VXl2Y2EydktxQnRaWUk1QUdNU241Wkh3ZkFHRUIyQjZnZE14QjZ3RHV2di9iQUFDQ3RxYldGVmhleHNiRXAzYkVyK2tGZVhwNlZuNDhQeWN6SVZMalJEaDA2RUw5RjN4U2VWdXNpdUZsWVljajV1UndvQUVNcXIyTHRCTURCS0hRTVUvUXJVTi9YM2JkQllOQzB0RVB6TlNBd01OVjF4SERMMEdYTDFXSjI3MWJjeEJNSXlQZ0pFeVQyd3lkbmJFdXB0S2xxYUFOakZITUtNQ1h6Vlg0a2dJTktmeWhUTkEzNnNPbDFCOFlOVFdFOVBUMlNtSHl0Mkd1YXA5NkoyRmlGR3hLSnhXUnV3RGQ1KzByTkRIS2VQTlhtL1B5SVdualJ3SkFhb2t4eUFZTjZCcTBoQnpkMzk1eWhMaTZkUnJxNmtwb2ErZmpYcWxVcjRqbDkrbE90L3FQekRxU1ZXdkk4OWgyUU53RHlVTWx1QlpVL2JyaURMQm1VZnF2ekNmRVptelpFV01zN2xhMWN2YXJtaUVhZnF2c2x6OVE0UDJIb2ZTb0E4ck9TemMzMC9MUHU1dUpTN1FxVUV2Y0pFOXZQOC9XcGF0dTJyVndOYkkyS1VuR3gwc3JpRkNkUm4wRUp5Z3NJeVN4RlJ5ODFKVVhybDUrUFp3WXNYaVJYQTdkdjNTWkY1dzVZZDlCVksyZUtjU1hUWE1uZUYrZGdPbU80Q1hlemdDR1E3emwxbW9rOG9SY01hbTQvZUN4cjRRMVZkbEVMdlc2SGw2WHNyY3c3NGNqeEluVmJhOUgwSFpHWm0zT0dVOGVGMUczbzBLZmZpbjJaQWZWMmMrclpRbllDeUlBV2VVR2RHQ2pIVlZGY2RPTWFNNFZBOTBqZGNrUVUxTDNIMHovOGZvd3phdEFpREpkMGc3b0ZuSHBvRk0wQzBtT0tnK3NGTVdGS1EzTTJwckt5a2t6MzhsSmRFaEpNTkRRMFpES3B2THljUklhR1dINWlyWnZMRkg4STVQNFNCMVUya0JGbE92cGkvWGpxb0pmZmlUSmNuK2FEZWVwTnB2V3dEb2FMZnFMbEdKSXlwZVVzV1dPVUNTZ1FKdzFnYmhjT3M4V1FmVUFkVytrejdhVWhMcVlldm1zMkJaOXR2eU5mZEJrUi9QTnMzQm1qZ2djUDdualBtaWtYbDg3RXhaRk9lUWx0ZEZzSldBa0pCUi9DdUJuU0lBS0tBc29HZWdaVUNaUU90QWJJa0pGSU52WGt0UEVPU2l4UDh6MDQ5VkRpeHJOcUUwYjFZeWpYcE5Jb1RSc3BzQ0pxYVVxVERnV1dUUU01RHJVMHZjdXBoNXRMcE51dDJJMzArZzJBQWFsQlVmT3A5Y0ltVDdHWjZPNWViQ3NTeWNYUVpVRkIyck82YUtTd29US2dWUXFDZ2xKMkU4TTFkQlFMS1lOd2xPSW8yWXYxZ0hrWnBHNkpnSmZoMkgzbStnUnpMWVozNkRMM24xSEprNFpzcEJzR0RUanRQWVozUGdGS3BmRTlObWswQWN6WkpvQ1pSSE9NRTU1azIydHNQUWJYWGk0V0ZSV3ByZ3dOZTdSMCtiTGE1VjlacWFDZ2dKeUtYaS91MWs2emlDa2VDMUxqTENjb2cybThEc0ZBUzg4UnFBMDFUS1RKa2FQSHBNa1VubTlIMjlIaFNFRW8xUzlTZzRlZFVqeVk2eCtCOGRtTkFjTmM5MmF1Sld6SUI5NHRZUHFJRFArRkR4aW9od0hkVCtndFRwMlZyTnJtQlFha0JqOENvN0xQdG0zWlltRmkwajV6OUpneGNvMzQzZEc3aUl0R3JrUW9xQWZrSmdCSFF3WW9tblJBU1BzMEdwaDBEZ2lqQm44d1ZlODFBZ3o3NFYrUnVnVXlUS2ozNGpodDlLTHZ0SUtNSFRUaHpEVVhtSkZRZnc5UUVwM1dDRzN6Qyt3bnB3OXQ2RFZLUGh0K3NvZm4xWmcrU2pmTzcrRVlHSHFOcm1BQ09CaERDMFhmeG0zQ2hIYnovWHpsOG0ydy92TEZnVWJ1NytpeDIyUndHbG9vNDlIUnpIeWJnMG9ZUHNJTkNEZFhmTXNaL1kwQkk2YjVWS1lzR2hoWFE1bkUxVWR1akdVYUQvVitiUUtZWHJTUFVtbkQvUWc3Z000M01ZMGxBR1V3OTBJNmxhb3drdnFJTVRaa1RtVi9tMjNZTVBnMjJySEhmOGxReExjcFBMZmZ5bFNubm0vakExSmozOFJqN0M1TDFDM3hWSUpHVVNuQ0l4cWpnSG1SVEQxY01tQVh2bXpobzlFNmsxcEpDTWdXZW4yTk0zTFJJcHJZaUxUd0FSTktsVHllN2NtajFwTS8wTy9RbG5VandGd0FTcVdtTWp0NCtsSlRHbE1NZkZNbEJWcWF0Sm9FQnFTbVFqcjZGZ1VFaUp5Y25QTDdPVGpJQmM3YU5XdUUweXdxV09XTUlyd1J3R2xNV1lrNDh6bHU0dnNSS0lpYXBpTDRnQVBzQTNDUHl2b1NVNFFtNlFUbS9palV5YUhYaVN5QWxJR205QjVCUDh6cFQydk9QZW9mOUZrV1VsZEFtdERxOUtOVG81Q3hCSEZReE5FKzNtQUhCZnBjekgwVVUxLzJWTWJ4YmZaUTMwWVFCTDROT3FEeStEYWJ3MElzUDdiV1pZOVJPSEJHS1p1ZU1kY3A4RUY5Z05CcERBUTZEOVRZK2drN25hSHlkMlh1MXpQWGlSd3JpbDNaWE1QVFBsZGkvbVN1Y1pNSXUzSm93MHlSVXQyV1JQV2pWTExadWlQcDlSV29Jd1dOVmY3cTh1NHJROS9tTWZnMnhtQjUzWjR4MDF0dTM4WXlMOEZRcDc1dkUwYlB0elNZQVpuclBqRDZGZ0NwTThaQk82QnhRSjJiQUtZUE05TFJiRC9GU0ZjbWg3a3V6QnkvZzZjL3ZNQlFpeStFVWR5WXBDZXRuUnN4MFpNNVU3WVpSMXE0L282MlhNQ0ExRHlBekpmNk5yYnVreVlWMjlqWXlPM2J6S3p2MnhqeXpPZUVLbmhXYXZEamk0RVJHVUQzcWM4U1RRMEpObDJtL29kMHVwU21EVlRwazBha1J1bzhib0o2cFhJQWt3ajl5S1ZBc3ZzRzB1aDB5elhsVHpVQ2pOU0NLdVU0cW16U1ZXUW5KcUtiOExkdnMySzVYQStoYnhNSHZzMjdSaHFQbU9KeElEVk9ISDJSU08zNlRBN3pyS2p1d0ZURXNYSUlaZXBsem12eFhUdDV1aFBQNDV1c2E2VHJYR0RNS0treEVva09iM2Zvd3g4MGd2QWhNL29UbUdkdlVIK0hUZnZndWIrWWUxYjVDeFRhdTJ4cFpvNWhEbHkzRVY2OGxKQ3hidTFhNisvMjdKVWRLUVhuZE1lKy9RWEw3aG9iTTh2Tk9OTGU1ZTZPb2Faa1Y2b2tOYWxTZkV6OWtadndNVTk1ZkNCa29nV3JBN2pCUWtZNTJ6TytVaDdVZTlpSVg5V1JHZDNjbEEvUDVmTTgwNVhHMmtyaDl6UnVtSW44ZjNkbzdaaUNPc1hNNzIyWUtlNlp3cHZLQVJ6MHd2MXRSYUxTZmQ4ZlVIZDJIQ0FFS1pMNW5KMjlIWm13YWs5YTFJMG43QndZQk1BRUtvUDhEVk56enNmZ2ZKcUp2czNKMk5pTWdFWHkremFQenUyM0JOK0dsUkJmbU5Mc2xERHd6RExOZVFpa0JtTmFzYmdrY0RYNVd2N1VTWk5OTGw2NElQTTVYTGZaOXVPeHJJQ2I5ZFp0MEhOMlZHN1NlSDZKUVNzTlRjRzlGUlVWWk9iMEdZTGdwU0dLK1RaV3V2Zms5RzJVRXRNTXFVRm5EbmM1R254LzhPRHR5NWNTN01CYWsrdloxZXZXbGU2VXZLZFY4bFNpd2xoUjR1ZlpTUU5UWW44YU5tbkhIUStvRTZIdFF5MENHQW9PaG1zMnRtM2J0dnJDcFlTeVlSOFAxVTFMazNtK2lCZ2JHNU1WZTQrbGhDU1ZzV0dZWGNDODhjMEFSSitKWTNIVFdWSzNXVDN0VFpPWTV6MGNpMnNubHdvTEMxVlhoNGNYQmk5YktyZHZrM3hzcjZpckROOUdEbEErbzE0M0Z4VDBDWEFSYXVDYkNNcHpBd082UmtKalRsVlJrWnN0emN6TU1rZDk4WG5UTHhRSXlFUTNOK0l4eWFPaS9kMUxlWnlmSTREWjZuSUFZZ0wwQTZrN2RXYktEVGJTYVhITG0yeFF2S2h6L2hnRzhCV0p4U1Y3OSsvVGNCNHdVUGlJeDdmQkplb1ZZYUdrZGV2VzZWK05HOTh4Snp0Ym82UG51bHNhbGwzWjVRQThrckc0RVVDd3YyNDBwS1BQK1JuRE5uZzA4R0NMdGNwNEVwNnB6MHE1YzBmbjFNbVQ2UXNEQXVyOWlOdG9aOCtkU3c0Zk8vclgwY05IY2dZNDlPK01vR0JZNDg4ek1mNVUrVXVUUHdBZzRnRkZldVJ3Q3c4b09LWGF2eTJndkRDSm9WTHpFV1RIcGI3TlpIY1BrNFQ0K05yL2hsa1d1b0tVbFphbWVFeDBzMzc0OENHR1JUQmtqbElXZ21zK3dQVGFqZTBjcFkzNm9RWitxM2Zra1BOYVhJVENZK2JubGVaeTArQmd0UFJ6SjJmbmdvQkZnY1lKOFFuRWRjVHdRcCs1ODU0ZVBYSkVxZ3R3QWN3REFMbkJtYUtRdWV3Q0ZQbzIxNm1FY1A4a0RvRkYyM3pKeXppSjlqWUNZMEo5RzMzUU5hbmxaZVhWM3RPbjI1V1UxUDZsQzBhQjhmOW0xZ01vMVR4VEZlb1pESTlMbzdlNEhJdUdBUGU4SnY2cGdqc0E4cnZTd1d5R2I4TXB4Z00zVXdDUUhCbldWakFGank4aFVLaTh2bjFiL3NYdlZRT0RCZ1d1UmVCcUlwcG1zd0dRWFhMNkpXZ1E0RzRXN21JWWJvYkRrMmhaeXBETTg0R0RlNnR3L2RrZlFGRW96RUkzQjU1a1FqVnpBSkNkeWxqWmE1QUFuQmlxVy9Ba1dnRnBnZWwvQWd3QW5iWXFROHJndE04QUFBQUFTVVZPUks1Q1lJST0ifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMC0xMi0yMSIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiVHJ1c3RLZXkgU29sdXRpb25zIFQzMjAgVTJGIEF1dGhlbnRpY2F0b3IiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlUyRjExMDAyMDIwMDgxNDAwNCIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4zLjciLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMC4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIwLTEyLTIxIn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMC0xMi0yMSJ9LHsiYWFndWlkIjoiOWQzZGY2YmEtMjgyZi0xMWVkLWEyNjEtMDI0MmFjMTIwMDAyIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI5ZDNkZjZiYS0yODJmLTExZWQtYTI2MS0wMjQyYWMxMjAwMDIiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiQXJjdWx1cyBGSURPMi9VMkYgS2V5IENhcmQifSwiZGVzY3JpcHRpb24iOiJBcmN1bHVzIEZJRE8yL1UyRiBLZXkgQ2FyZCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxMDAsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfSx7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NiwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo2LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQytqQ0NBcUNnQXdJQkFnSVVUWEp5MjhscFFWbGhJcDdFVEJpK1U0YmNhRDh3Q2dZSUtvWkl6ajBFQXdJd2dZQXhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJREFwT1pYY2dTbVZ5YzJWNU1SRXdEd1lEVlFRSERBaFRiMjFsY25ObGRERVVNQklHQTFVRUNnd0xRMjl0Y0c5VFpXTjFjbVV4RURBT0JnTlZCQXNNQjBGeVkzVnNkWE14SVRBZkJnTlZCQU1NR0VOdmJYQnZVMlZqZFhKbExVWkpSRTh0UTBFdFVtOXZkREFnRncweU16QTBNVGd4TlRRMU5UQmFHQTh5TURVek1EUXhNREUxTkRVMU1Gb3dnWUF4Q3pBSkJnTlZCQVlUQWxWVE1STXdFUVlEVlFRSURBcE9aWGNnU21WeWMyVjVNUkV3RHdZRFZRUUhEQWhUYjIxbGNuTmxkREVVTUJJR0ExVUVDZ3dMUTI5dGNHOVRaV04xY21VeEVEQU9CZ05WQkFzTUIwRnlZM1ZzZFhNeElUQWZCZ05WQkFNTUdFTnZiWEJ2VTJWamRYSmxMVVpKUkU4dFEwRXRVbTl2ZERCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQkNnRzdyNlZBL2grQnluVW55RFpNRDBWWmtZVzZSR25waDB3MjVnUURXTW9xQWFpVWFGRzVNQ2xraGFrSUJwTEYrNnhKQmhPMWdzKzdDMWsvanVWdXYyamdmTXdnZkF3SFFZRFZSME9CQllFRkp6MWdGdFRUQk5mZmZES3ZkanBVRXlwNzB6dE1JSEFCZ05WSFNNRWdiZ3dnYldBRkp6MWdGdFRUQk5mZmZES3ZkanBVRXlwNzB6dG9ZR0dwSUdETUlHQU1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQXdLVG1WM0lFcGxjbk5sZVRFUk1BOEdBMVVFQnd3SVUyOXRaWEp6WlhReEZEQVNCZ05WQkFvTUMwTnZiWEJ2VTJWamRYSmxNUkF3RGdZRFZRUUxEQWRCY21OMWJIVnpNU0V3SHdZRFZRUUREQmhEYjIxd2IxTmxZM1Z5WlMxR1NVUlBMVU5CTFZKdmIzU0NGRTF5Y3R2SmFVRlpZU0tleEV3WXZsT0czR2cvTUF3R0ExVWRFd1FGTUFNQkFmOHdDZ1lJS29aSXpqMEVBd0lEU0FBd1JRSWdjZ1hHTURQMnJmaDRFVFk5RUpMd3VYbzFTOVVpcXRFbVBocTkvZGlTMG5BQ0lRRG95TFpvc3g4clJBRjF2cFJYY3NWUUREU0hvRXMvUGJtRjNFci9tSjB4Nnc9PSIsIk1JSUM1RENDQW9xZ0F3SUJBZ0lKQUoxbWdYK1RLaUg3TUFvR0NDcUdTTTQ5QkFNQ01JR0FNUXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0F3S1RtVjNJRXBsY25ObGVURVJNQThHQTFVRUJ3d0lVMjl0WlhKelpYUXhGREFTQmdOVkJBb01DME52YlhCdlUyVmpkWEpsTVJBd0RnWURWUVFMREFkQmNtTjFiSFZ6TVNFd0h3WURWUVFEREJoRGIyMXdiMU5sWTNWeVpTMUdTVVJQTFVOQkxWSnZiM1F3SUJjTk1qTXdNVEV6TVRjMU5UTXdXaGdQTWpBMU16QXhNRFV4TnpVMU16QmFNSUdBTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNBd0tUbVYzSUVwbGNuTmxlVEVSTUE4R0ExVUVCd3dJVTI5dFpYSnpaWFF4RkRBU0JnTlZCQW9NQzBOdmJYQnZVMlZqZFhKbE1SQXdEZ1lEVlFRTERBZEJjbU4xYkhWek1TRXdId1lEVlFRRERCaERiMjF3YjFObFkzVnlaUzFHU1VSUExVTkJMVkp2YjNRd1dUQVRCZ2NxaGtqT1BRSUJCZ2dxaGtqT1BRTUJCd05DQUFSM05sc2xwRXBYL0JpWjlScFdFK3FybTJJUk1MaTNia3NkYUhTcEE4K296VWFGYXZUNEwwcFBTTEJoblRSRjE1Q2FUSEpNY0VVR3Vnci94b0dUZExOcG80SG9NSUhsTUIwR0ExVWREZ1FXQkJSNHo3OHNUbWFpd0hCdzBmelY2Nlc2ZmwvOVdEQ0J0UVlEVlIwakJJR3RNSUdxZ0JSNHo3OHNUbWFpd0hCdzBmelY2Nlc2ZmwvOVdLR0JocVNCZ3pDQmdERUxNQWtHQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdNQ2s1bGR5QktaWEp6WlhreEVUQVBCZ05WQkFjTUNGTnZiV1Z5YzJWME1SUXdFZ1lEVlFRS0RBdERiMjF3YjFObFkzVnlaVEVRTUE0R0ExVUVDd3dIUVhKamRXeDFjekVoTUI4R0ExVUVBd3dZUTI5dGNHOVRaV04xY21VdFJrbEVUeTFEUVMxU2IyOTBnZ2tBbldhQmY1TXFJZnN3REFZRFZSMFRCQVV3QXdFQi96QUtCZ2dxaGtqT1BRUURBZ05JQURCRkFpQnBlS0ZOdnpGdm4relk4Y1FkbUZHcnRsMDFKeHlsbGF2bHF4dXRjMnh0UmdJaEFPMDFlRnNVdlREZGtUZUhtOWVBdndMUDV2WE5JclUzTU94andhSWx0YU9ZIl0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQStnQUFBUG9DQVlBQUFCTm85VGtBQUFBQkdkQlRVRUFBTEdQQy94aEJRQUFBQ0JqU0ZKTkFBQjZKZ0FBZ0lRQUFQb0FBQUNBNkFBQWRUQUFBT3BnQUFBNm1BQUFGM0NjdWxFOEFBQUFoR1ZZU1daTlRRQXFBQUFBQ0FBRkFSSUFBd0FBQUFFQUFRQUFBUm9BQlFBQUFBRUFBQUJLQVJzQUJRQUFBQUVBQUFCU0FTZ0FBd0FBQUFFQUFnQUFoMmtBQkFBQUFBRUFBQUJhQUFBQUFBQUFBRWdBQUFBQkFBQUFTQUFBQUFFQUE2QUJBQU1BQUFBQkFBRUFBS0FDQUFRQUFBQUJBQUFENktBREFBUUFBQUFCQUFBRDZBQUFBQURyRWVLa0FBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFDekdsVVdIUllUVXc2WTI5dExtRmtiMkpsTG5odGNBQUFBQUFBUEhnNmVHMXdiV1YwWVNCNGJXeHVjenA0UFNKaFpHOWlaVHB1Y3pwdFpYUmhMeUlnZURwNGJYQjBhejBpV0UxUUlFTnZjbVVnTmk0d0xqQWlQZ29nSUNBOGNtUm1PbEpFUmlCNGJXeHVjenB5WkdZOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6RTVPVGt2TURJdk1qSXRjbVJtTFhONWJuUmhlQzF1Y3lNaVBnb2dJQ0FnSUNBOGNtUm1Pa1JsYzJOeWFYQjBhVzl1SUhKa1pqcGhZbTkxZEQwaUlnb2dJQ0FnSUNBZ0lDQWdJQ0I0Yld4dWN6cDBhV1ptUFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzUnBabVl2TVM0d0x5SUtJQ0FnSUNBZ0lDQWdJQ0FnZUcxc2JuTTZaWGhwWmowaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOWxlR2xtTHpFdU1DOGlQZ29nSUNBZ0lDQWdJQ0E4ZEdsbVpqcFpVbVZ6YjJ4MWRHbHZiajQzTWp3dmRHbG1aanBaVW1WemIyeDFkR2x2Ymo0S0lDQWdJQ0FnSUNBZ1BIUnBabVk2VW1WemIyeDFkR2x2YmxWdWFYUStNand2ZEdsbVpqcFNaWE52YkhWMGFXOXVWVzVwZEQ0S0lDQWdJQ0FnSUNBZ1BIUnBabVk2V0ZKbGMyOXNkWFJwYjI0K056SThMM1JwWm1ZNldGSmxjMjlzZFhScGIyNCtDaUFnSUNBZ0lDQWdJRHgwYVdabU9rOXlhV1Z1ZEdGMGFXOXVQakU4TDNScFptWTZUM0pwWlc1MFlYUnBiMjQrQ2lBZ0lDQWdJQ0FnSUR4bGVHbG1PbEJwZUdWc1dFUnBiV1Z1YzJsdmJqNHpNREF3UEM5bGVHbG1PbEJwZUdWc1dFUnBiV1Z1YzJsdmJqNEtJQ0FnSUNBZ0lDQWdQR1Y0YVdZNlEyOXNiM0pUY0dGalpUNHhQQzlsZUdsbU9rTnZiRzl5VTNCaFkyVStDaUFnSUNBZ0lDQWdJRHhsZUdsbU9sQnBlR1ZzV1VScGJXVnVjMmx2Ymo0ek1EQXdQQzlsZUdsbU9sQnBlR1ZzV1VScGJXVnVjMmx2Ymo0S0lDQWdJQ0FnUEM5eVpHWTZSR1Z6WTNKcGNIUnBiMjQrQ2lBZ0lEd3ZjbVJtT2xKRVJqNEtQQzk0T25odGNHMWxkR0UrQ2w5RUszOEFBRUFBU1VSQlZIZ0I3TjEvakdWWlFoLzJlKzZyN3BucDM5VmRQVDFkVmQwenV3d0x3OWlFMFB4WTJ5UnVTSVJETExCajVNZ0VRZ3c0L2lHd0hBS0pJNXdmc21YRmltVWxWbUpIU3BSRVRraWtTTEVpNWE5RWltTkdPSkVjZG9kZGtOZHIwQUpEZGp6czdBNHNDN3N6MDEzMTdzazU1NzdxcWY1ZFZlL1gvZkY1VUYydjNydjMzSE0rcDdhcXZuUE9QYWVxUEFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0F3SW9Fd29xdTR6SUVDQkFnUUlCQXZ3WHkzd3oxckFreGZXNzYzUnkxSjBDQUFBRUNCQWdRSUVDQUFBRUMvUlB3SC9UNzEyZHFUSUFBQVFJOUZQQUx0NGVkcHNvRUNCQWdRR0NGQW5uVXZIbit4bzJ2bWpiTlg2cENlQ2I5OGZETDc3ejU1bDllWVIxY2lnQUJBZ1FJakVKZ1l4U3QxRWdDQkFnUUlFRGdwQUlsb08rSDZZZnJ5ZVNIUWdoVjA4UlBwY0lFOUpPS09vOEFBUUlFQ0R4R1FFQi9ESXlYQ1JBZ1FJQUFnUThFNmpqWmlyR3A4czNuSWRTLy9jRTduaEVnUUlBQUFRS0xFamhZN0dWUjVTbUhBQUVDQkFnUUdLQkFVelhYOCtoNVN1ZXBkZEYvNEI5Z0gyc1NBUUlFQ0t4ZlFFQmZmeCtvQVFFQ0JBZ1E2THhBSGNMRk5weDN2cW9xU0lBQUFRSUVlaXNnb1BlMjYxU2NBQUVDQkFpc1RpRE5icjlZeFR6QjNZTUFBUUlFQ0JCWWxvQ0F2aXhaNVJJZ1FJQUFnV0VJbFAzT1E0alhodEVjclNCQWdBQUJBdDBWRU5DNzJ6ZHFSb0FBQVFJRXVpQlFoczNUNFBrTFhhaU1PaEFnUUlBQWdTRUxDT2hEN2wxdEkwQ0FBQUVDOHd2a2dKNXVRUS9ueXdydTg1ZW5CQUlFQ0JBZ1FPQXhBZ0w2WTJDOFRJQUFBUUlFQ0ZSNXlmWnFkM2YzbVJqak9mZWcrNDRnUUlBQUFRTExGUkRRbCt1cmRBSUVDQkFnMEdlQkV0RHZiR3lrRmR5clMzMXVpTG9USUVDQUFJRStDQWpvZmVnbGRTUkFnQUFCQW1zVWFPS2R6U3FXZ0c0Wjl6WDJnMHNUSUVDQXdQQUZCUFRoOTdFV0VpQkFnQUNCa3dxVUVmU3EyVGlYOWtBL25hYTRseFhkVDFxWTh3Z1FJRUNBQUlFbkN3am9UL2J4TGdFQ0JBZ1FHTE5BRzlEcjVueDZFbUlJQXZxWXZ4dTBuUUFCQWdTV0xpQ2dMNTNZQlFnUUlFQ0FRTDhGUW5OdkQzUlQzUHZkbFdwUGdBQUJBaDBYRU5BNzNrR3FSNEFBQVFJRTFpM1FWT0Y2bXVLZWwzUVgwTmZkR2E1UGdBQUJBb01XRU5BSDNiMGFSNEFBQVFJRTVoZEltNkJmbkw4VUpSQWdRSUFBQVFKUEV4RFFueWJrZlFJRUNCQWdNSEtCdERTY2dEN3k3d0hOSjBDQUFJSFZDQWpvcTNGMkZRSUVDQkFnMERlQnZFQmNXUlF1aEh2M29QZXREZXBMZ0FBQkFnUjZKU0NnOTZxN1ZKWUFBUUlFQ0t4VW9BVDBHS3NYMGhacks3MndpeEVnUUlBQWdURUtDT2hqN0hWdEprQ0FBQUVDUnhlWWhCRE81OE5UUkcrM1hUdjZ1WTRrUUlBQUFRSUVqaUVnb0I4RHk2RUVDQkFnUUdCRUFpV003Kzd1bm80eG5oMVJ1eldWQUFFQ0JBaXNUVUJBWHh1OUN4TWdRSUFBZ2U0THZEK1pYRXBickYyYXpYQTNndDc5TGxOREFnUUlFT2l4Z0lEZTQ4NVRkUUlFQ0JBZ3NFU0JFc2FiZUdjejNYK2VWbkdQNXJjdkVWdlJCQWdRSUVBZ0N3am92ZzhJRUNCQWdBQ0J4d3FFWnVOY2V2T1pja0NNUnRBZksrVU5BZ1FJRUNBd3Y0Q0FQcitoRWdnUUlFQ0F3R0FGWWwxZlRJdkU1YjhYckJFMzJGN1dNQUlFQ0JEb2lvQ0EzcFdlVUE4Q0JBZ1FJTkF0Z1RKYUhwcm0ycXhhOWxuclZ2K29EUUVDQkFnTVVFQkFIMkNuYWhJQkFnUUlFRmlVUUF6eFdsb2tMbytmTitrbWRGUGNGd1dySEFJRUNCQWc4QWdCQWYwUktGNGlRSUFBQVFJRVdvRzZxdE1DY2ZsaEFMMTE4QzhCQWdRSUVGaWVnSUMrUEZzbEV5QkFnQUNCM2d1a0VmUkx2VytFQmhBZ1FJQUFnWjRJQ09nOTZTalZKRUNBQUFFQ0t4Wm84dlZDVEZQY3k4UHM5dGJCdndRSUVDQkFZSGtDQXZyeWJKVk1nQUFCQWdUNkxGRG10RGN4dnBEMlFVOUozZjNuZmU1TWRTZEFnQUNCZmdnSTZQM29KN1VrUUlBQUFRS3JGc2dCZlZLSFNkNEgzWU1BQVFJRUNCQllnWUNBdmdKa2x5QkFnQUFCQWowVEtQUFp0N2UzbjBtajUrZG55OE9aNDk2elRsUmRBZ1FJRU9pZmdJRGV2ejVUWXdJRUNCQWdzR3lCRXNidlRpYVhZaFV2bGludWVaSzdCd0VDQkFnUUlMQlVBUUY5cWJ3S0owQ0FBQUVDL1JWb1FzZ3J1TSsyV2V0dk85U2NBQUVDQkFqMFJVQkE3MHRQcVNjQkFnUUlFRmlkUUJrdEQwMXpyZ3JoOU95eVJ0Qlg1KzlLQkFnUUlEQlNBUUY5cEIydjJRUUlFQ0JBNEFrQ2JSaXZtd3ZwU1g1ZXRseDd3dkhlSWtDQUFBRUNCQllnSUtBdkFGRVJCQWdRSUVCZ2lBS2hxV2Q3b0ZlemRlS0cyRXB0SWtDQUFBRUMzUkVRMEx2VEYycENnQUFCQWdRNkpkQ0V0QWQ2U0FQb2FhVzRUbFZNWlFnUUlFQ0F3RUFGQlBTQmRxeG1FU0JBZ0FDQmVRWHFxcDR0RUNlZnoydnBmQUlFQ0JBZ2NCUUJBZjBvU280aFFJQUFBUUxqRWlpSlBNYVlWM0gzSUVDQUFBRUNCRllrSUtDdkNOcGxDQkFnUUlCQVR3VHlvbkFsb0ljUVovZWc1NWM4Q0JBZ1FJQUFnV1VMQ09qTEZsWStBUUlFQ0JEb24wQlp0YjJKNlI3MGFIcDcvN3BQalFrUUlFQ2dyd0lDZWw5N1RyMEpFQ0JBZ01CU0JmNzRwQTZUcytVU29XeTF0dFNyS1p3QUFRSUVDQkNvS2dIZGR3RUJBZ1FJRUNCd1dLRE1aNzkyN1dlZmpiRTViL3o4TUkzbkJBZ1FJRUJndVFJQytuSjlsVTZBQUFFQ0JIb3BNRDE5K21JYU43ODRtK0x1SnZSZTlxSktFeUJBZ0VEZkJBVDB2dldZK2hJZ1FJQUFnZVVLbERBK3JhckxhYWs0cTdndjExcnBCQWdRSUVEZ1BnRUIvVDRPWHhBZ1FJQUFBUUpab0o3RXMxVUlwMmNhUnRCOVd4QWdRSUFBZ1JVSUNPZ3JRSFlKQWdRSUVDRFFONEU0RFJkVEtzL0IzRzNvZmVzODlTVkFnQUNCM2dvSTZMM3RPaFVuUUlBQUFRSkxFU2lqNWFGcFhwaVZYclpjVzhxVkZFcUFBQUVDQkFqY0p5Q2czOGZoQ3dJRUNCQWdRQ0FMaEJDdnBYL3krSGtlUVMraG5Rd0JBZ1FJRUNDd1hBRUJmYm0rU2lkQWdBQUJBcjBVaUdGeW9hMjRHZTY5N0VDVkprQ0FBSUZlQ2dqb3ZldzJsU1pBZ0FBQkFzc1dpRlp3WHpheDhna1FJRUNBd0FNQ0F2b0RJTDRrUUlBQUFRSWpGMmp2T1kveDRCNzBrWE5vUGdFQ0JBZ1FXSjJBZ0w0NmExY2lRSUFBQVFKOUVDaHoybU1WcmxYUjdlZDk2REIxSkVDQUFJSGhDQWpvdytsTExTRkFnQUFCQW9zUXlLbDhVdGZWdVZKWXNFRGNJbENWUVlBQUFRSUVqaUlnb0I5RnlURUVDQkFnUUdBY0FtVzE5bXZYcmoyYjFtNC9OMXNlemdydTQraDdyU1JBZ0FDQkRnZ0k2QjNvQkZVZ1FJQUFBUUlkRVNoaGZQL1VxVXRwZXZ0bU84WGRDSHBIK2tZMUNCQWdRR0FFQWdMNkNEcFpFd2tRSUVDQXdCRUZTa0J2UXRoTUs4WE50bGs3NHBrT0kwQ0FBQUVDQk9ZV0VORG5KbFFBQVFJRUNCQVlsa0FkNDlrUXd1bFpxMHh4SDFiM2FnMEJBZ1FJZEZoQVFPOXc1NmdhQVFJRUNCQllzVUFKNDdHdUw4eFNlYnZsMm9vcjRYSUVDQkFnUUdDc0FnTDZXSHRldXdrUUlFQ0F3R01Fd25SNmZmYldiSjI0eHh6b1pRSUVDQkFnUUdDaEFnTDZRamtWUm9BQUFRSUUraThRUXJ4V2hUU0dIc3RHNlAxdmtCWVFJRUNBQUlHZUNBam9QZWtvMVNSQWdBQUJBcXNTaUdGaWdiaFZZYnNPQVFJRUNCQTRKQ0NnSDhMd2xBQUJBZ1FJakZ4Z05xVTliYkhtUVlBQUFRSUVDS3hjUUVCZk9ia0xFaUJBZ0FDQlRncmtkZUhhZ0I3VEZQZnliTFpVWENlcnExSUVDQkFnUUdCNEFnTDY4UHBVaXdnUUlFQ0F3RWtGeXFydHNRclhEckw2U1F0eUhnRUNCQWdRSUhCOEFRSDkrR2JPSUVDQUFBRUNReGFZMUNHY0xRME1sU0gwSWZlMHRoRWdRSUJBNXdRRTlNNTFpUW9SSUVDQUFJRzFDSlF3ZnZYcTFlZlM2dTNuN0srMmxqNXdVUUlFQ0JBWXVZQ0FQdkp2QU0wblFJQUFBUUtIQmFhblRxVUY0dUxsRk5MenkwYlFEK040VG9BQUFRSUVsaXdnb0M4WldQRUVDQkFnUUtBbkFpV014N3ErbEtLNWJkWjYwbW1xU1lBQUFRTERFaERRaDlXZldrT0FBQUVDQk9ZU0NCdnhiQlhDcVZraFJ0RG4wblF5QVFJRUNCQTRub0NBZmp3dlJ4TWdRSUFBZ2FFS3RHRjhXbDlNVC9KenQ2RVB0YWUxaXdBQkFnUTZLeUNnZDdaclZJd0FBUUlFQ0t4ZUlEVE45ZGxWODVaclJ0Qlgzd1d1U0lBQUFRSWpGaERRUjl6NW1rNkFBQUVDQkI0U0NPSDVOTVU5alorM3E4UTk5TDRYQ0JBZ1FJQUFnYVVKQ09oTG8xVXdBUUlFQ0JEb29VQUlGb2pyWWJlcE1nRUNCQWdNUTBCQUgwWS9hZ1VCQWdRSUVGaVFRSk8yV2ZNZ1FJQUFBUUlFMWlHd3NZNkx1aVlCQWdRSUVDRFFPWUY4ejNtYTJoNE83a0h2WEFWVmlBQUJBZ1FJREYzQUNQclFlMWo3Q0JBZ1FJREEwUVRLcXUwaHhxdnRBdTdXaHpzYW02TUlFQ0JBZ01EaUJBVDB4VmtxaVFBQkFnUUk5RmtnQi9SSk5Rbm5TaU9DRmR6NzNKbnFUb0FBQVFMOUZCRFErOWx2YWsyQUFBRUNCQllwVUliTHIxNjkrbHpWVk9kbkc2QWJRbCtrc0xJSUVDQkFnTUFSQkFUMEl5QTVoQUFCQWdRSURGeWdoUEhwcVZPYnNZcVgwaFpydWJrQytzQTdYZk1JRUNCQW9Ic0NBbnIzK2tTTkNCQWdRSURBcWdWS0dJOTFmU25sY3R1c3JWcmY5UWdRSUVDQXdFeEFRUGV0UUlBQUFRSUVDQlNCOUVmQm1UUnVmaXA5a1lmUWphRDd2aUJBZ0FBQkFpc1dFTkJYRE81eUJBZ1FJRUNnZ3dMdENIb0lsMmFwZkhZYmVnZHJxa29FQ0JBZ1FHREFBZ0w2Z0R0WDB3Z1FJRUNBd0hFRVF0TWM3SUV1b0I4SHpyRUVDQkFnUUdCQkFnTDZnaUFWUTRBQUFRSUVlaThRd3ZOVlNHUG9zVjBscnZmdDBRQUNCQWdRSU5BekFRRzlaeDJtdWdRSUVDQkFZR2tDd1FKeFM3TlZNQUVDQkFnUU9JS0FnSDRFSkljUUlFQ0FBSUdCQzh5bXREZWJBMituNWhFZ1FJQUFnVTRMYkhTNmRpcEhnQUFCQWdRSUxGc2dyd3ZYbEl2RWtPNUJ0NEQ3c3NHVlQ0QUFBUUlFSGlkZ0JQMXhNbDRuUUlBQUFRTGpFU2dqNkNIR3ErTnBzcFlTSUVDQUFJSHVDUWpvM2VzVE5TSkFnQUFCQXVzUTJLZ200V3k1Y0xBSCtqbzZ3RFVKRUNCQWdJQ0E3bnVBQUFFQ0JBaU1XNkJzZmI2MXRmVmNtdWgrM3Y1cTQvNW0wSG9DQkFnUVdLK0FnTDVlZjFjblFJQUFBUUtkRU5nL2RlcHlyT0ptMm1JdDE2ZUU5azVVVENVSUVDQkFnTUNJQkFUMEVYVzJwaElnUUlBQWdVY0lsREFlSnBPTGFRLzBDNDk0MzBzRUNCQWdRSURBaWdRRTlCVkJ1d3dCQWdRSUVPaXlRSmpFZlAvNXFWa2RqYUIzdWJQVWpRQUJBZ1FHS3lDZ0Q3WnJOWXdBQVFJRUNCeEpvSVR4eVRSY21xVnl0NkVmaWMxQkJBZ1FJRUJnOFFJQyt1Sk5sVWlBQUFFQ0JIb25NQTFOMmdPOVBQS2U2RWJRWnhnK0VTQkFnQUNCVlFvSTZLdlVkaTBDQkFnUUlOQlJnUkRycStrZTlDb3RFbWNFdmFOOXBGb0VDQkFnTUh3QkFYMzRmYXlGQkFnUUlFRGc2UUlXaUh1NmtTTUlFQ0JBZ01DU0JRVDBKUU1ybmdBQkFnUUlkRnhnTm1MZVhPNTRQVldQQUFFQ0JBZ01YbUJqOEMzVVFBSUVDQkFnUU9CSkFtMUFqekhkZzI1Mis1T2d2RWVBQUFFQ0JKWXRZQVI5MmNMS0owQ0FBQUVDM1JZb3FUeUVzTlZXTTkrSTdrR0FBQUVDQkFpc1EwQkFYNGU2YXhJZ1FJQUFnZTRJNUlBK1NRdkU1WDNRcmQ5ZUVQeERnQUFCQWdUV0l5Q2dyOGZkVlFrUUlFQ0FRQmNFeW1qNTF0YldtVFM3L2NKc2dyc1I5QzcwakRvUUlFQ0F3Q2dGQlBSUmRydEdFeUJBZ0FDQklsREMrUFQwNmMyMHU5cG0ybUl0dnlpZysrWWdRSUFBQVFKckVoRFExd1R2c2dRSUVDQkFvQU1DYlJpdjYwdXBMdWM3VUI5VklFQ0FBQUVDb3hZUTBFZmQvUnBQZ0FBQkFnVFNrUGxHUEpQdVFjODd1K1FoZENQb3Zpa0lFQ0JBZ01DYUJBVDBOY0c3TEFFQ0JBZ1E2SUJBQ2VPVC9iQTVTK1d6MjlBN1VETlZJRUNBQUFFQ0l4UVEwRWZZNlpwTWdBQUJBZ1FPQzB4RGsvWkFUNDlvSS9URExwNFRJRUNBQUlGVkN3am9xeFozUFFJRUNCQWcwREdCRU92bjB4VDNWS3QybGJpT1ZVOTFDQkFnUUlEQWFBUUU5TkYwdFlZU0lFQ0FBSUhIQ0lSZ2diakgwSGlaQUFFQ0JBaXNVa0JBWDZXMmF4RWdRSUFBZ1c0SnpQWlZheTUzcTFwcVE0QUFBUUlFeGlrZ29JK3ozN1dhQUFFQ0JBamtPZTFOWmtoN29GOXZaN2ZQbG9walE0QUFBUUlFQ0t4RlFFQmZDN3VMRWlCQWdBQ0JUZ2kwSStnaGJKWGF5T2VkNkJTVklFQ0FBSUh4Q2dqbzQrMTdMU2RBZ0FBQkFsVjF1OXBJQzhTZG5WR0k2TDRuQ0JBZ1FJREFHZ1VFOURYaXV6UUJBZ1FJRUZpalFBbmptNy93NGJOcGM3VUxOa0JmWTArNE5BRUNCQWdRbUFrSTZMNFZDQkFnUUlEQWlBV2FDMSs1bk81QjM1enRzR1lFZmNUZkM1cE9nQUFCQXVzWEVORFgzd2RxUUlBQUFRSUUxaUZRd3Zneit4c1gwaFQzYyt1b2dHc1NJRUNBQUFFQzl3c0k2UGQ3K0lvQUFRSUVDSXhMWUdNajMzOSthdFpvSStqajZuMnRKVUNBQUlHT0NRam9IZXNRMVNGQWdBQUJBaXNTS0dHODJkL2ZuS1Z5dDZHdkNONWxDQkFnUUlEQTR3UUU5TWZKZUowQUFRSUVDSXhBb0FuaCtxeVplVTkwSStnajZITk5KRUNBQUlIdUNnam8zZTBiTlNOQWdBQUJBa3NYQ0hXOG11NUJyOUlpY1ViUWw2N3RBZ1FJRUNCQTRNa0NBdnFUZmJ4TGdBQUJBZ1NHTFJEcjg4TnVvTllSSUVDQUFJSCtDQWpvL2Vrck5TVkFnQUFCQW9zVUtDUG1JY1lyaXl4VVdRUUlFQ0JBZ01ESkJRVDBrOXM1a3dBQkFnUUk5Rm1nQlBRWTR2WFpIdWg5Ym91NkV5QkFnQUNCUVFnSTZJUG9SbzBnUUlBQUFRTEhGbWp2T1kvVlZudG12aEhkZ3dBQkFnUUlFRmluZ0lDK1RuM1hKa0NBQUFFQzZ4T0kxZTFxSTRSd3BsUkJQRjlmVDdneUFRSUVDQkNZQ1Fqb3ZoVUlFQ0JBZ01ENEJFb2N2L3lMTCtkd2ZtRzJmTHVJUHI3dkF5MG1RSUFBZ1k0SkNPZ2Q2eERWSVVDQUFBRUNLeEFvWWJ5NThPWExhWGUxemRrOTZBTDZDdUJkZ2dBQkFnUUlQRWxBUUgrU2p2Y0lFQ0JBZ01Bd0JVb1lEL3NiRjFMenpnMnppVnBGZ0FBQkFnVDZKeUNnOTYvUDFKZ0FBUUlFQ0N4RTROUmtjcTRLWVNNVmxtZTVHMEZmaUtwQ0NCQWdRSURBeVFVRTlKUGJPWk1BQVFJRUNQUlZvSjNpdnIrL09VdmxzOXZRKzlvYzlTWkFnQUFCQXNNUUVOQ0gwWTlhUVlBQUFRSUVqaTNRaEhDOW5CVExDUHF4ejNjQ0FRSUVDQkFnc0ZnQkFYMnhua29qUUlBQUFRSzlFUWgxdkpxbXVLZjZSaVBvdmVrMUZTVkFnQUNCSVFzSTZFUHVYVzBqUUlBQUFRSlBFbWhDWGlUT2d3QUJBZ1FJRU9pSWdJRGVrWTVRRFFJRUNCQWdzRUtCTW1LZXhzNHZyL0NhTGtXQUFBRUNCQWc4UlVCQWZ3cVF0d2tRSUVDQXdNQUU4cHoySnJjcGhuaTluZDArV3lwdVlBM1ZIQUlFQ0JBZzBEY0JBYjF2UGFhK0JBZ1FJRUJnZm9IMm52TllYU2xGQlZ1c3pVK3FCQUlFQ0JBZ01MK0FnRDYvb1JJSUVDQkFnRUQvQkc3ZE9oVkNPTmUvaXFzeEFRSUVDQkFZcm9DQVB0eSsxVElDQkFnUUlQQW9nVEtmL2VJWHZwREQrWG5MdHorS3lHc0VDQkFnUUdBOUFodnJ1YXlyRWlCQWdBQUJBbXNTT0xqaGZEUEd1RG1ydzhGcmE2cVN5eElnUUlBQUFRSlp3QWk2N3dNQ0JBZ1FJREJDZ2RQMU5HK3hab3I3Q1B0ZWt3a1FJRUNndXdJQ2VuZjdSczBJRUNCQWdNRFNCRUl6T1Z1RmNEQ1R6Z2o2MHFRVlRJQUFBUUlFamk0Z29CL2R5cEVFQ0JBZ1FHQUlBaVdNTjlYKzVWa3FkeHY2RUhwVkd3Z1FJRUJnRUFJQytpQzZVU01JRUNCQWdNQXhCWnI2K3V5TXZDZTZFZlJqOGptY0FBRUNCQWdzUTBCQVg0YXFNZ2tRSUVDQVFNY0ZZb2hiYVlwN1ZhV1Y0anBlVmRValFJQUFBUUtqRVJEUVI5UFZHa3FBQUFFQ0JBNEpoSEQrMEZlZUVpQkFnQUFCQWgwUUVOQTcwQW1xUUlBQUFRSUVWaWhRUnN4RFUyMnQ4Sm91UllBQUFRSUVDQnhCUUVBL0FwSkRDQkFnUUlEQWdBUktRRytxZUQxTmJ4OVFzelNGQUFFQ0JBajBYMEJBNzM4ZmFnRUJBZ1FJRURpT1FGNFVMcTBLRjY2MEorVWIwVDBJRUNCQWdBQ0JMZ2dJNkYzb0JYVWdRSUFBQVFLckVUZ0k0eHNwbHA4cGx6eDRaVFhYZHhVQ0JBZ1FJRURnQ1FJQytoTnd2RVdBQUFFQ0JJWW9jT21sbDg3RktsNllUWEFYMFlmWXlkcEVnQUFCQXIwVUVOQjcyVzBxVFlBQUFRSUVUaVJRd25pTTcyMVdNYVNQZHIyNEU1WGtKQUlFQ0JBZ1FHRGhBZ0w2d2trVlNJQUFBUUlFT2l0UUF2cnBzSEV4YllCK3JyTzFWREVDQkFnUUlEQlNBUUY5cEIydjJRUUlFQ0F3WG9FUU44NVVJVXlTUUI1Q044Vjl2TjhLV2s2QUFBRUNIUk1RMER2V0lhcERnQUFCQWdTV0tGRENlQlAzcnN4U3VYM1dsb2l0YUFJRUNCQWdjRndCQWYyNFlvNG5RSUFBQVFKOUYyanE2NlVKc1NwYnJ2VzlPZXBQZ0FBQkFnU0dJaUNnRDZVbnRZTUFBUUlFQ0J4UklJYTRsYWE0cDZNTm9CK1J6R0VFQ0JBZ1FHQWxBZ0w2U3BoZGhBQUJBZ1FJZEVlZ0R1RjhkMnFqSmdRSUVDQkFnTUNCZ0lCK0lPRXpBUUlFQ0JBWXZrQVpNbzlOdFRYOHBtb2hBUUlFQ0JEb240Q0EzcjgrVTJNQ0JBZ1FJSEFTZ1R5bnZkeHozbFR4ZXJzSCtteXB1Sk9VNWh3Q0JBZ1FJRUJnNFFJQytzSkpGVWlBQUFFQ0JEb3JVTFpWQzFXNFVtcVlublMycGlwR2dBQUJBZ1JHS0NDZ2o3RFROWmtBQVFJRVJpeHc2OVpHV2gvdXpJZ0ZOSjBBQVFJRUNIUldRRUR2Yk5lb0dBRUNCQWdRV0toQUdTMi84UGJiNTJPTUY2M2Z2bEJiaFJFZ1FJQUFnWVVJQ09nTFlWUUlBUUlFQ0JEb3ZFQUo2TStHc0ptMlY5dHM3MEUzeGIzenZhYUNCQWdRSURBcUFRRjlWTjJ0c1FRSUVDQXdkb0ZZMXhlcUtwamlQdlp2Qk8wblFJQUFnVTRLQ09pZDdCYVZJa0NBQUFFQ3l4RUlNWjZwUXRpWWxXNlJ1T1V3SzVVQUFRSUVDSnhJUUVBL0VadVRDQkFnUUlCQTd3UktHSi9HdURWTDVXWEx0ZDYxUW9VSkVDQkFnTUNBQlFUMEFYZXVwaEVnUUlBQWdRY0ZRdE5jbjcxV3RseDc4SDFmRXlCQWdBQUJBdXNURU5EWForL0tCQWdRSUVCZzVRTHBIdlFyYVlwN1dpY3VXc2g5NWZvdVNJQUFBUUlFbml3Z29EL1p4N3NFQ0JBZ1FHQlFBbldJNXdmVklJMGhRSUFBQVFJREVoRFFCOVNabWtLQUFBRUNCSjRnVUViTW02YTYrb1JqdkVXQUFBRUNCQWlzVWVCZ0ZkYzFWc0dsQ1JBZ1FJQUFnUlVJbElBZXFuaTltajFid1RWZGdnQUJBZ1FJRURpR2dCSDBZMkE1bEFBQkFnUUk5Rmlnck5vZXEzQzV0Q0ZVdGxqcmNXZXFPZ0VDQkFnTVUwQkFIMmEvYWhVQkFnUUlFRGdzTUF2anR6ZFNMRDl6K0EzUENSQWdRSUFBZ2U0SUNPamQ2UXMxSVVDQUFBRUNTeFc0ZVBOWHo2ZlYyeS9PMW04M2dyNVViWVVUSUVDQUFJSGpDd2pveHpkekJnRUNCQWdRNkp2QVFSamZUUGVmYjZZOTFuTDlEMTdyVzF2VWx3QUJBZ1FJREZaQVFCOXMxMm9ZQVFJRUNCQzRKMURDK09tNnZtQ0srejBUVHdnUUlFQ0FRT2NFQlBUT2RZa0tFU0JBZ0FDQjVRaUVwamxiaFRCSnBlY2hkQ1BveTJGV0tnRUNCQWdRT0xHQWdINWlPaWNTSUVDQUFJSGVDSlF3UG8zN1c3TlVYdWE0OTZiMktrcUFBQUVDQkVZaUlLQ1BwS00xa3dBQkFnUUloQ1pjTHdxeEtsdXVFU0ZBZ0FBQkFnUzZKU0NnZDZzLzFJWUFBUUlFQ0N4TklOYjFsVFRGUFpWdkFIMXB5QW9tUUlBQUFRSnpDQWpvYytBNWxRQUJBZ1FJOUVtZ0R2RjhuK3FycmdRSUVDQkFZR3dDQXZyWWVseDdDUkFnUUdDTUFtWEl2R21xcXdiUHg5ajkya3lBQUFFQ2ZSSFk2RXRGMVpNQUFRSUVDQkE0a1VDZTAxN3VPUTlWYk85QnQ0RDdpU0NkUklBQUFRSUVsaTFnQkgzWndzb25RSUFBQVFMckZ5amJxc1VRTHBlcUJBbDkvVjJpQmdRSUVDQkE0R0VCQWYxaEU2OFFJRUNBQUlFaENaU2QxVjU5OWRWVHFWRm5odFF3YlNGQWdBQUJBa01URU5DSDFxUGFRNEFBQVFJRUhpSHcvMzN4aXhlcUdDOWF2LzBST0Y0aVFJQUFBUUlkRVJEUU85SVJxa0dBQUFFQ0JKWWtVRWJRbjYzclMybUJ1TTBVMHZObHltdEx1cDVpQ1JBZ1FJQUFnUk1LQ09nbmhITWFBUUlFQ0JEb2swQ2NUQzZrV0c2S2U1ODZUVjBKRUNCQVlIUUNBdnJvdWx5RENSQWdRR0NNQXFGcHpsWWhUR1p0TjRJK3htOENiU1pBZ0FDQnpnc0k2SjN2SWhVa1FJQUFBUUp6Q1pRdzNzUzROVXZsWmN1MXVVcDBNZ0VDQkFnUUlMQVVBUUY5S2F3S0pVQ0FBQUVDSFJOb210a2U2T2xPZFBlZ2Q2eHpWSWNBQVFJRUNMUUNBcnJ2QkFJRUNCQWdNQUtCZWpLNW5LYTRWMm1ST0F1NWo2Qy9OWkVBQVFJRStpa2dvUGV6MzlTYUFBRUNCQWdjU3lDR2VQNVlKemlZQUFFQ0JBZ1FXTG1BZ0w1eWNoY2tRSUFBQVFJckZTZ2o1bW5nL1BtVlh0WEZDQkFnUUlBQWdXTUxiQno3RENjUUlFQ0FBQUVDZlJKb3A3VEhtTzVCZC90NW56cE9YUWtRSUVCZ2ZBSkcwTWZYNTFwTWdBQUJBdU1TYUZkdEQvVm1hWFpJdTZGN0VDQkFnQUFCQXAwVUVOQTcyUzBxUllBQUFRSUVGaUxRaHZGYnQwNmwwczRzcEVTRkVDQkFnQUFCQWtzVE1NVjlhYlFLSmtDQUFBRUMzUkE0LzduUFhVamo1aGRqRzllTm9IZWpXOVNDQUFFQ0JBZzhKR0FFL1NFU0x4QWdRSUFBZ2NFSWxERCtiQWliNmZiei9KRWZBdnBndWxkRENCQWdRR0JvQWdMNjBIcFVld2dRSUVDQXdBY0NiUmlmTk9kVExEZkYvUU1YendnUUlFQ0FRQ2NGQlBST2RvdEtFU0JBZ0FDQkJRckVqYk5WQ1BsM3ZtWGNGOGlxS0FJRUNCQWdzR2dCQVgzUm9zb2pRSUFBQVFMZEVTZ2o2RTNUWEozTmEyOG51WGVuZm1wQ2dBQUJBZ1FJSEJJUTBBOWhlRXFBQUFFQ0JBWXBFSnEwQjNwNnhLcmRjbTJRamRRb0FnUUlFQ0RRZndFQnZmOTlxQVVFQ0JBZ1FPQ0pBckdhWEVsVDNOTXhCdENmQ09WTkFnUUlFQ0N3WmdFQmZjMGQ0UElFQ0JBZ1FHRFpBbldJNTVaOURlVVRJRUNBQUFFQzh3c0k2UE1iS29FQUFRSUVDSFJWb0V4cGp6RSszMVp3ZGlkNlYydXJYZ1FJRUNCQVlPUUNBdnJJdndFMG53QUJBZ1FHSy9EQm5QYW0ycW1pNmUyRDdXa05JMENBQUlIQkNBam9nK2xLRFNGQWdBQUJBZzhKdE51cTFlRmllU2VrM2RBOUNCQWdRSUFBZ2M0S0NPaWQ3Um9WSTBDQUFBRUNjd20wWWZ6bGwwK25VczdPVlpLVENSQWdRSUFBZ1pVSUNPZ3JZWFlSQWdRSUVDQ3dIb0Z6WC83eWhUUzkvZUpzZ3JzUjlQVjBnNnNTSUVDQUFJRWpDUWpvUjJKeUVBRUNCQWdRNkoxQUNlUFBUaWFicWVhWDNJUGV1LzVUWVFJRUNCQVlvWUNBUHNKTzEyUUNCQWdRR0pIQVpISSt0ZmE1RWJWWVV3a1FJRUNBUUc4RkJQVGVkcDJLRXlCQWdBQ0Jwd3VFR005V0lVeG1SNXJpL25ReVJ4QWdRSUFBZ2JVSkNPaHJvM2RoQWdRSUVDQ3dWSUVTeHFjeFhwMmw4ckluK2xLdnFIQUNCQWdRSUVCZ0xnRUJmUzQrSnhNZ1FJQUFnVzRMaEtxNVhtb1lxeHpRamFCM3U3dlVqZ0FCQWdSR0xpQ2dqL3diUVBNSkVDQkFZTmdDYVhiN1pwcmluaG81VzhkOTJNM1ZPZ0lFQ0JBZzBHc0JBYjNYM2FmeUJBZ1FJRURnYVFMeHd0T084RDRCQWdRSUVDRFFEUUVCdlJ2OW9CWUVDQkFnUUdEUkFtWElQRmJ4K1VVWHJEd0NCQWdRSUVCZ09RSUMrbkpjbFVxQUFBRUNCTll0MEM0SzExVFgyejNRM1g2KzdnNXhmUUlFQ0JBZzhEUUJBZjFwUXQ0blFJQUFBUUw5Rkdodk9xL0R4Vkw5WUlHNGZuYWpXaE1nUUlEQW1BUUU5REgxdHJZU0lFQ0F3RmdFMnVIeVYxODluUnA4ZGl5TjFrNENCQWdRSU5CM0FRRzk3ejJvL2dRSUVDQkE0REVDNTcvNHhRdHBldnVsMkk2bG0rUCtHQ2N2RXlCQWdBQ0JyZ2dJNkYzcENmVWdRSUFBQVFLTEV5aGgvTm02M2t4RlhwcHRzU2FnTDg1WFNRUUlFQ0JBWUNrQ0F2cFNXQlZLZ0FBQkFnVFdKcENEZVBuOUhrTzUvL3k1V1UwRTlMVjFpUXNUSUVDQUFJR2pDUWpvUjNOeUZBRUNCQWdRNktMQVFSaWZWTGR2YjZRS1RtYVZuT2JQTWNaSkZVTCtYZDlPY3ArOTZSTUJBZ1FJRUNEUVRZSDh5OXlEQUFFQ0JBZ1E2TDdBUVJnL0dBblBvVHNIOFRaOHYvYmF2UlpzYjIrZitkMFFuZ3NoL29FcUxkNmVEc2pISEp4Mzd6aFBDQkFnUUlBQWdXNEpDT2pkNmcrMUlVQ0FBQUVDQndKdElMK2RndlZySldEbk1GNUd4ZzhPU0o5UFhYcnBoWjJOdmNtSFlsMTliVHJocTFNT2YrVk9WZTJjanZGR1doenV3aXkvbXpGM0NNMVRBZ1FJRUNEUVZRRUJ2YXM5bzE0RUNCQWdNRGFCSEtKektNOGZCNlBqMHhUT0R4NlRhemR2dmppdDlsK05NWHg5RmNNL213TjUzSThmam5VNEYwSStMVDFTS2o4b29IM0J2d1FJRUNCQWdFQmZCQVQwdnZTVWVoSWdRSURBRUFWeUtEKzRSL3krMGZGcjE2NmRiWjZkZkNTRjhXOUptZnRiVTJUL2h2M1lmRldvNmd0dEdHOW50cGNvbjI0MmowM1RudDhHOVp6UkQzOE0wVTZiQ0JBZ1FJREE0QVFFOU1GMXFRWVJJRUNBUUljRmNtZytHQ2x2MHZPRGorcmxsMTkrNWt2dnZmZEtVOWUvUDFUTlB6K040WnZpTkw0VTZuclNadTZZRjMzTGVieXBtaWFmbHlKNGVhY3RMd1MvMHd1S2Z3Z1FJRUNBUUg4Ri9ETHZiOStwT1FFQ0JBajBSeUN2cnA3RCtYNzZ1RGRTdm5YanhuWUszUjlOaTdsOTV4ZnZ2UDhIMGhGZm15SjMrdDFjcHlDZW9uaisvK2swbjNNUXh0dFJjV0c4a1BpSEFBRUNCQWdNVFVCQUgxcVBhZzhCQWdRSWRFSGc4RWg1RHVUM1F2bVZGMTk4cFpwTy80VjB3SGVsZWVrcG5JZkxWZG9KTGJTajR5bVFOeW1RcDJUZWJvOFcwbWUvcTd2UW8rcEFnQUFCQWdSV0lPQ1gvZ3FRWFlJQUFRSUVSaU9RZzNrZUxiOHZsRisrZWZQVnVtbis1VFJDL3QxeHV2L05hZHI2czNreHR6SkNIdU0wVFZsUEs3dVY2ZW9wa09jUjlGeU1Cd0VDQkFnUUlEQTJBUUY5YkQydXZRUUlFQ0N3YUlIRG8rVjVPbnFaa241MWQvZmxHT0wzcEsvL1dCb3AvK2FxRHFkTEtFOHZ0TlBXMDJtaGhQbEpDdWVMcnBQeUNCQWdRSUFBZ1I0S0NPZzk3RFJWSmtDQUFJRk9DT1JVblVmTGN5QXZVOWd2M3J5NXVkRTBmemhVOFU4MFZieWRacW1mYlVmSzB4M2xUWnE2Zm0rVTNMVDFUdlNnU2hBZ1FJQUFnWTRKQ09nZDZ4RFZJVUNBQUlIT0N4eGU4SzJNbGwvZTJmbG91bzM4QjlOVTllOUpnK0U3WllwNnZxZThMUEEyR3lsM0wzbm5PMVlGQ1JBZ1FJREF1Z1VFOUhYM2dPc1RJRUNBUUY4RTh1L012TDFaR1MyL3NMdDcrWFJWZlc5YTNlMEhVeGIvdHJ5bVc1cktua2JLeS92cG52SzBGTHRRM3BlK1ZVOENCQWdRSU5BSkFRRzlFOTJnRWdRSUVDRFFVWUdEYWV3NWxMZWo1WG5CdHpqOW9SVEt2eS9kVjc2ZEYzckxxNzJWMGZLYzB0djd5anZhSE5VaVFJQUFBUUlFdWl3Z29IZTVkOVNOQUFFQ0JOWWxFS3JiNmY3eTEwb29MOEg4eXM3T2Q2UVI4VDhYbXVhN3E3cCs1bDRvVHk4YUxWOVhON2t1QVFJRUNCQVlsb0NBUHF6KzFCb0NCQWdRbUUrZ1RxZm5qLzFaT0ErWGQzZi9XSHJoejhkUS9jRzh4bHRhN0MxTmRJOTc2Wmk4K3JyZm8vTjVPNXNBQVFJRUNCQTRKT0FQaTBNWW5oSWdRSURBYUFVK0NPWXBmbCs3ZHUxc2MrclVuMmhDOWVmU0hQZGJSU1hkWUo3Q2VaTkNlVDcyMUdpbE5Kd0FBUUlFQ0JCWW1vQ0F2alJhQlJNZ1FJQkFEd1R1QytiYjI5dGJkK3I2UjlJTjUvOW11ci84cTBKZWliMnMvSllXaHd2VnhpeWM5NkJacWtpQUFBRUNCQWowVVVCQTcyT3ZxVE1CQWdRSXpDdHdYekRmZXZIRjY3SFovOUU3VmZqaE5JMzllZ3JsYWEzMjZjRys1WG5oTjc4djV4VjNQZ0VDQkFnUUlQQlVBWDl3UEpYSUFRUUlFQ0F3SUlHNnVwM3VNVzhYZjJ0bXdmekg0blQvejRTNnZwSW1zYWQ3ekVzd3QwWGFnRHBkVXdnUUlFQ0FRRjhFQlBTKzlKUjZFaUJBZ01COEFyZlRLSGdPNXE5VlRkbkRQTVovS3dYekgwM0IvSEs3ZjNsajRiZjVoSjFOZ0FBQkFnUUl6Q2tnb004SjZIUUNCQWdRNkx4QS9sMDN6ZUg4cFpkZWV2YkwwNzBmVFJQWWZ5SnRsWGE5U211K3BZWGYybUJ1NGJmT2Q2UUtFaUJBZ0FDQm9Rc0k2RVB2WWUwalFJREFlQVh5ZmVacEVmYXlsM2wxWlhmM0IzNTNmKy9mVHlQbVgxT0NlWnh0bFNhWWovYzdSTXNKRUNCQWdFREhCUElmTHg0RUNCQWdRR0JJQXFHNmRTdHZnNVkyTEsrbVc3dTdmM0RyeHU3UHBzWGZmanA5ZkUzTWk3KzE3K1ZqL0I1TUNCNEVDQkFnUUlCQU53U01vSGVqSDlTQ0FBRUNCQllqa0grdjdWZXZ2NzUzZVh2N1JwaUV2NUttcy8vSlBJeWVwcktuVmRuei93Vy8reFpqclJRQ0JBZ1FJRUJnd1FMK1NGa3dxT0lJRUNCQVlDMENlU1E4ZitUUjhXcHJaK2ZIWXgzK296UmlmakVGODd4cjJqUkZjNy96TW80SEFRSUVDQkFnMEZrQmY2eDB0bXRVakFBQkFnU09LSkIvbDVWcDY1ZDNkbjVmQ05YZlRBdkFmY3VoKzh3M2hQTWpTanFNQUFFQ0JBZ1FXS3VBZ0w1V2ZoY25RSUFBZ1RrRTdvMmFiMjl2bjdsVGgvODRsZlVYMHFoNVZlNHpEeUcvbis4ejl5QkFnQUFCQWdRSTlFSkFRTzlGTjZra0FRSUVDRHdnY0cvVS9Nck43WC94VGhQK2RscWQvU05sT25zVDAzUjI5NWsvNE9WTEFnUUlFQ0JBb0FjQ2VYVEJnd0FCQWdRSTlFWGdZSVgyL2QzZDNlZlMxbW4vZVJYci96T05tdWR3bnZjenp4dXIrWS9QZmVsTjlTUkFnQUFCQWdUdUUvQkh6SDBjdmlCQWdBQ0JEZ3RNVXQybWVZWDJxemUzdisyOUdQL3JOSXY5bFJUTTB5cHdhVXUxWURwN2gvdE8xUWdRSUVDQUFJRWpDQmhCUHdLU1F3Z1FJRUJnelFMdHZ1YlRYSXZMTjNiK2c2YXAvMEhhTCsyVmxNM3pxSG5lUE0xL2NGNXpGN2s4QVFJRUNCQWdNTCtBUDJqbU4xUUNBUUlFQ0N4UElHOWhQcm0zcjNrZC9rNGFOZitPR0p1MHIzbTFuOWFEc3dqYzh1eVZUSUFBQVFJRUNLeFl3QWo2aXNGZGpnQUJBZ1NPTEpDbnRPZkgvdGFON2U4SmRmaUZkSy81ZDVRVjJxc3FHalZ2Y2Z4TGdBQUJBZ1FJREVkQVFCOU9YMm9KQVFJRWhpU1FaM2psS2UzeHlvMmR2MXBWOWYrV25tL0dHUGRtSzdUbmtYVVBBZ1FJRUNCQWdNQ2dCRXh4SDFSM2Fnd0JBZ1FHSVBEcXE2ZXJUMzNxN3NXYk56ZFBOYzMvbEFMNWQrWHQwMUxMbXZSaFN2c0F1bGdUQ0JBZ1FJQUFnVWNMQ09pUGR2RXFBUUlFQ0t4ZW9MM2ZQSVh6U3pzNzM3QVJtLysxcXNPSDhrSnc2WTM4KytwZ3l2dnFhK2FLQkFnUUlFQ0FBSUVWQ0pqaXZnSmtseUJBZ0FDQnB3cmszMGY1WS8veTd1NzNib1R3RDlQekQrVzl6Vk00ejZQbXByUW5CQThDQkFnUUlFQmcyQUlDK3JEN1Yrc0lFQ0RRQjRFOE1wNm5yMCt2N096OFZCMnF2eHVyK0V3SzUvdnBOVlBhKzlDRDZraUFBQUVDQkFnc1JNQVU5NFV3S29RQUFRSUVUaWlRZncvbElGNXQ3ZTcrVjJsSys1K2UzVytlVm1rUGZrZWRFTlZwQkFnUUlFQ0FRRDhGL1BIVHozNVRhd0lFQ1BSZjRIYTZyL3kxRk01ZmV1blpyZjM5Zkw5NVhneHVMelVzLzI0eXc2di9QYXdGQkFnUUlFQ0F3REVGL0FGMFREQ0hFeUJBZ01BQ0JHN2RPcFhEK2M3T3pwVXIrL3YvOTZGdzduN3pCZkFxZ2dBQkFnUUlFT2luZ0lEZXozNVRhd0lFQ1BSWElJZnoxMS9mMjl6ZXZua25WUDlQQ05XdHRGTDczZFFnOTV2M3QxZlZuQUFCQWdRSUVGaUFnQ251QzBCVUJBRUNCQWdjVVNEdmNmNzY2M2UzdHJlL0prN3FuMGxuWFk4eDVwWGFUeCt4QkljUklFQ0FBQUVDQkFZcllBUjlzRjJyWVFRSUVPaVlRQjQ1VDN1Y2IxMi9maXROYWY4SEtaU1hjSjVxYWVTOFkxMmxPZ1FJRUNCQWdNQjZCSXlncjhmZFZRa1FJREF1Z2RtMDlpdTd1OSthdGxEN21iUkMrM05WM2tZdEJPRjhYTjhKV2t1QUFBRUNCQWc4UWNBSStoTnd2RVdBQUFFQ0N4QTRGTTZyR1A5K1ZhVnducWExMjBadEFiYUtJRUNBQUFFQ0JBWWxJS0FQcWpzMWhnQUJBaDBUbUlYelN6czcvMHhWcFhBZXdwbjBPZTk3YnVTOFkxMmxPZ1FJRUNCQWdNRDZCVXh4WDM4ZnFBRUJBZ1NHS1RBTDUyVkJ1RHI4SDZtUlo4ckl1WEErelA3V0tnSUVDQkFnUUdCdUFTUG9jeE1xZ0FBQkFnUWVJYkNSdDFKTDk1enZ4RHI4dmJRZzNBdmxublBoL0JGVVhpSkFnQUFCQWdRSXRBSUN1dThFQWdRSUVGaTBRSjZkdFgveDVzM05OSjM5NzRVUWRodjNuQy9hV0hrRUNCQWdRSURBQUFVRTlBRjJxaVlSSUVCZ2pRS1RkTzF5ai9sR00vM2ZVemovMnRrKzUrNDVYMk9udURRQkFnUUlFQ0RRRHdFQnZSLzlwSllFQ0JEb2cwRCtuVExORmIxeVkvZC9DWFg5clduay9HNzZVampQS0I0RUNCQWdRSUFBZ2FjSUNPaFBBZkkyQVFJRUNCeFpJTjFxbnNMNTd1NS9rVWJPLzBoc21yMzB3dWtqbisxQUFnUUlFQ0JBZ01ESUJRVDBrWDhEYUQ0QkFnUVdJbkM3eXZlZFQ3ZHU3UHhFcU1PUHhlblVWbW9MZ1ZVSUFRSUVDQkFnTUNZQkFYMU12YTJ0QkFnUVdJYkFxNitlcmw2cjlyZHVibjkzVllXL2tVYk9ZOXJ2M08rWFpWZ3Jrd0FCQWdRSUVCaTBnSDNRQjkyOUdrZUFBSUdsQzJ4VW4vclUzU3ZYcjc4U20vQS9wMVhiOHdXYjlKRVhpL01nUUlBQUFRSUVDQkE0aG9BUmptTmdPWlFBQVFJRTdoTW9LN1pmdTNidGJMVXgrYnZwdnZNelZZeDVhcnR3ZmgrVEx3Z1FJRUNBQUFFQ1J4TVEwSS9tNUNnQ0JBZ1FlRmlnREpmdm45cjQ3MU00LzdxeVluc0labVk5N09RVkFnUUlFQ0JBZ01DUkJBVDBJekU1aUFBQkFnVHVFN2gxSzIrZDFxUVYyLys5dEozYTkxcXgvVDRkWHhBZ1FJQUFBUUlFVGlRZ29KK0l6VWtFQ0JBWXNVQU81NisvdnJlMXMvUHRWYWorV2dybkdjTzA5aEYvUzJnNkFRSUVDQkFnc0JnQkFYMHhqa29oUUlEQVdBUW1PWnlmMzltNUVrUDQ2Vm1qcCttejN5ZGorUTdRVGdJRUNCQWdRR0JwQXY2Z1docXRnZ2tRSURBNGdaQmFWSWJMVDlmaHYwMzduZS9FR1BmU2EwYlBCOWZWR2tTQUFBRUNCQWlzUTBCQVg0ZTZheElnUUtDUEFyZHU1UVhnNHBVYk8zOHBMUXIzUitKMHVwOFNlNzRYM1lNQUFRSUVDQkFnUUdBQkFnTDZBaEFWUVlBQWdjRUx6TzQ3djN6anhoK3FxdkJYMDMzbnNRckJ5UG5nTzE0RENSQWdRSUFBZ1ZVS0NPaXIxSFl0QWdRSTlGT2czSGVlVm16ZnFXUHpQODZha0tlNjV5bnZIZ1FJRUNCQWdBQUJBZ3NTRU5BWEJLa1lBZ1FJREZRZ2gvQzhDRng2eFA4aGpacHZWZTQ3YnpuOFM0QUFBUUlFQ0JCWXNJQ0F2bUJReFJFZ1FHQlFBcmVxZk45NXRiVzcrNWZUZnVmZk1Wc1V6bjNuZytwa2pTRkFnQUFCQWdTNklsRCs4T3BLWmRTREFBRUNCRG9rY0NzdEFQZDZWZlk3ajZINkQ2dDgzM25WQnZZTzFWSlZDQkFnUUlBQUFRS0RFVENDUHBpdTFCQUNCQWdzVktETzRYenp3eCsrR092cXY1dVY3TDd6aFJJcmpBQUJBZ1FJRUNCd3Y0Q0FmcitIcndnUUlFQ2dGU2dMd05WMzcveXRFT3FYN0hmdTI0SUFBUUlFQ0JBZ3NId0JBWDM1eHE1QWdBQ0JmZ25rTGRYU3duQlhkbmIrOVZDSEg0alRacHJTdWx1aSt0V0xha3VBQUFFQ0JBajBVRUJBNzJHbnFUSUJBZ1NXS0pDbXRyKytsN2RVUzV1by9XY3gzM1lleW5acXRsUmJJcnFpQ1JBZ1FJQUFBUUpaUUVEM2ZVQ0FBQUVDQndJZmhQQVEvOHUwYXZ1VjlNWmUrdkM3NGtESVp3SUVDQkFnUUlEQUVnWDgwYlZFWEVVVElFQ2dWd0szYnVWcDdFMmEydjZENmI3ejc4bFQyOVBYdGxUclZTZXFMQUVDQkFnUUlOQm5BUUc5ejcybjdnUUlFRmljUUpuYXZuWGp4bmFhMFA2ZnhpWXQyTjVPYlYvY0ZaUkVnQUFCQWdRSUVDRHdSQUVCL1lrODNpUkFnTUJvQk5ycDdUSCtkVlBiUjlQbkdrcUFBQUVDQkFoMFRFQkE3MWlIcUE0QkFnUldMbkNyVEdPZmJ0M1kvcDQwYXY3OWFmUTg3M2R1MWZhVmQ0UUxFaUJBZ0FBQkFtTVhFTkRIL2gyZy9RUUlqRjBnVks5WGU5dmIyMmRpREg4anJkbWVIL25UQnd2R2xaZjhRNEFBQVFJRUNCQWdzR3dCQVgzWndzb25RSUJBdHdVbXVYcDNKdUduMHRUMnI2NWl6S3UybDllNlhXMjFJMENBQUFFQ0JBZ01UMEJBSDE2ZmFoRUJBZ1NPS3BDRCtQN2xtemRmVFFQbS8wNVpHRTQ0UDZxZDR3Z1FJRUNBQUFFQ0N4Y1EwQmRPcWtBQ0JBajBScURNYUsvajlLK2xCZHRQcDlIei9WUnp2eGQ2MDMwcVNvQUFBUUlFQ0F4TndCOWlRK3RSN1NGQWdNRFJCTm85ejIvYytLTnA5UHk3WTB4N25vZGdZYmlqMlRtS0FBRUNCQWdRSUxBVUFRRjlLYXdLSlVDQVFLY0Y4Z0p3YWJUODFxazBhdjVYT2wxVGxTTkFnQUFCQWdRSWpFaEFRQjlSWjJzcUFRSUVpc0N0VzJXa2ZPdm01MzQwMU9IM3BudlA4OVIyQzhQNTlpQkFnQUFCQWdRSXJGbkFkTVkxZDRETEV5QkFZTVVDZGZYNjYzdm50N2UzMHJacWY3R0thY3Z6RVB6SDJoVjNnc3NSSUVDQUFBRUNCQjRsNEkreVI2bDRqUUFCQXNNVktELzNUOWYxVDRRUVhrak56TnVxK1YwdzNQN1dNZ0lFQ0JBZ1FLQkhBdjRvNjFGbnFTb0JBZ1RtRkNqYnFsMjdlZlBEVlJWL3pMWnFjMm82blFBQkFnUUlFQ0N3WUFFQmZjR2dpaU5BZ0VDSEJmTGljTlcwYWY1aXFPdHo2YW5SOHc1M2xxb1JJRUNBQUFFQzR4TVEwTWZYNTFwTWdNQTRCY3JvK1pVWHI3OFNRL1VuWjZQbjFpRVo1L2VDVmhNZ1FJQUFBUUlkRlJEUU85b3hxa1dBQUlGbENJVHBKTjk3ZmpwdHI1WlhiaThqNnN1NGpqSUpFQ0JBZ0FBQkFnU09MMkQwNVBobXppQkFnRURmQlBMbytYUnpkL2ZyWXhYL2phcUpWbTd2V3crcUx3RUNCQWdRSURBS0FTUG9vK2htalNSQVlPUUNaYVE4cGZRZlMvZWViOHhHei8zOEgvazNoZVlUSUVDQUFBRUMzUlB3QjFyMytrU05DQkFnc0VpQmUvZWVwd250UDFqdVBROGh2K1pCZ0FBQkFnUUlFQ0RRTVFFQnZXTWRvam9FQ0JCWXNFQjduM2t6K2RFcWhHZmNlNzVnWGNVUklFQ0FBQUVDQkJZb0lLQXZFRk5SQkFnUTZKaEFHVDIvZFAzNmk2bGVQekFiUGZkenYyT2RwRG9FQ0JBZ1FJQUFnUU1CZjZnZFNQaE1nQUNCNFFtVTBmT05qZnBIMHNydEY5MTdQcndPMWlJQ0JBZ1FJRUJnV0FJQytyRDZVMnNJRUNCd0lKREQrZjdGbXpjM1l3dy9ISzNjZnVEaU13RUNCQWdRSUVDZ3N3SUNlbWU3UnNVSUVDQXdoOER0cWl3RXR4SDN2eS9VWWFlS1RkNzMzTS84T1VpZFNvQUFBUUlFQ0JCWXRvQS8xcFl0ckh3Q0JBaXNYaUJVcjFVbGtJY3EvRWlhMnA3M1BXOFhpMXQ5WFZ5UkFBRUNCQWdRSUVEZ2lBSUMraEdoSEVhQUFJRWVDWlRSODZ1N3UvOVNTdWJmR0dOc1V0Mzl2TzlSQjZvcUFRSUVDQkFnTUU0QmY3Q05zOSsxbWdDQllRdWtJZk9xU3FuOFQ2V1I4eXFOb09lQWJnUjkySDJ1ZFFRSUVDQkFnTUFBQkFUMEFYU2lKaEFnUU9DUVFCNDluMTdaM3Y3YTlQbTdabHVybFJIMVE4ZDRTb0FBQVFJRUNCQWcwRUVCQWIyRG5hSktCQWdRbUVPZ0hTbWZoTzlQaThNOU85dGF6ZWo1SEtCT0pVQ0FBQUVDQkFpc1NrQkFYNVcwNnhBZ1FHRDVBdmxuK3Y3Mjl2YVpLbGIvYXJyMzNPSnd5emQzQlFJRUNCQWdRSURBd2dRRTlJVlJLb2dBQVFKckZ5Zy8wKzlNSnQrWkZtMy95T3plY3ovbjE5NHRLa0NBQUFFQ0JBZ1FPSnFBUDl5TzV1UW9BZ1FJOUVHZ0xBNFhxdWI3TEE3WGgrNVNSd0lFQ0JBZ1FJREEvUUliOTMvcEt3SUVDQkRvcVVEK0Q2N1R6ZTN0bTdFS2Y2aHEwc0x0SVZnY3JxZWRxZG9FQ0JBZ1FJREFPQVdNb0krejM3V2FBSUdoQ2R4dTl6bXZKNVB2VHRQYkwxb2NibWdkckQwRUNCQWdRSURBR0FTTW9JK2hsN1dSQUlHaEM0VHF0V3EvTkRMR1A5NDJObStBN2tHQUFBRUNCQWdRSU5BbkFTUG9mZW90ZFNWQWdNQ2pCY3JQOHMwYk4zNVBGYXJmMTY3ZW5wNTVFQ0JBZ0FBQkFnUUk5RXBBUU85VmQ2a3NBUUlFSGlsUXduZ2Rtank5L2ZSc2VydWY3NCtrOGlJQkFnUUlFQ0JBb0xzQy9vRHJidCtvR1FFQ0JJNHEwRTV2YjhJZlRlSGMzdWRIVlhNY0FRSUVDQkFnUUtCakFnSjZ4enBFZFFnUUlIQk1nYkpTKzlXZG5XK29xbmlyVEcrdjJnWGpqbG1Pd3drUUlFQ0FBQUVDQk5Zc0lLQ3Z1UU5jbmdBQkFuTUtsT250VFFqZkdlcDZZdlgyT1RXZFRvQUFBUUlFQ0JCWW80Q0F2a1o4bHlaQWdNQ2NBam1jbCtudGFXTDdIeTdUMjYwTk55ZXAwd2tRSUVDQUFBRUM2eE1RME5kbjc4b0VDQkNZVjZEOERMKzZ1L3ZWb1lyZk9GdTkzYy8xZVZXZFQ0QUFBUUlFQ0JCWWs0QS81TllFNzdJRUNCQllnRUNaM3A1R3o3ODloUHBjRmF0cEt0UFA5UVhBS29JQUFRSUVDQkFnc0E0QmY4aXRROTAxQ1JBZ3NCaUJsTTNUMG5CVi9NNzhiL29vWHkrbWFLVVFJRUNBQUFFQ0JBaXNXa0JBWDdXNDZ4RWdRR0F4QW5uMGZIcng1czNOdEsvYVIwczBUOFBvaXlsYUtRUUlFQ0JBZ0FBQkF1c1E4TWZjT3RSZGt3QUJBdk1MbE8zVkpqRitTd2pWVGhvOWIxS1JmcWJQNzZvRUFnUUlFQ0JBZ01EYUJQd3h0elo2RnlaQWdNRDhBaUZPYjFjcG9hZlo3VG1nZXhBZ1FJQUFBUUlFQ1BSWVFFRHZjZWVwT2dFQ294VzR0NzF2UkNsb0FBQkFBRWxFUVZSYUNPSGJ5cTNuNmNsb05UU2NBQUVDQkFnUUlEQVFBUUY5SUIycEdRUUlqRXFnL095K2RQMzZpN0VLdjdkc3I1WnVSQitWZ01ZU0lFQ0FBQUVDQkFZb0lLQVBzRk0xaVFDQndRdVVNRjVQSnQrVW5seE1yYzNUMndYMHdYZTdCaElnUUlBQUFRSkRGeERRaDk3RDJrZUF3R0FGNmhCLy82SDd6d1gwd2ZhMGhoRWdRSUFBQVFKakVSRFF4OUxUMmttQXdKQUVwcmt4YVd1MWo3WmJuN3YvZkVpZHF5MEVDQkFnUUlEQWVBVUU5UEgydlpZVElOQlBnZnh6TzE3ZTJkbE5zOXBmS2ZlZkI5dXI5Yk1yMVpvQUFRSUVDQkFnY0wrQWdINi9oNjhJRUNEUWRZSDI1M1pkdjVyR3pUZFRaZDEvM3ZVZVV6OENCQWdRSUVDQXdCRUZCUFFqUWptTUFBRUNYUkpJTjV4Lzg2SDd6N3RVTlhVaFFJQUFBUUlFQ0JBNG9jREdDYzl6R2dFQ0JBaXNYaUF2QkpkSHpQTU42TjlZUGx1OHZXWHdMd0VDQkFnUUlFQmdBQUpHMEFmUWlacEFnTUJvQkVwQXYzYnQydG1VMEwrdXREcEk2S1BwZlEwbFFJQUFBUUlFQmk4Z29BKytpeldRQUlFQkNaU3QxUGFmbTl4SUM4UzlXQmFJcy8vNWdMcFhVd2dRSUVDQUFJR3hDd2pvWS84TzBINENCUG9rVUFKNjNDOEx4RDJiS202QnVENzFucm9TSUVDQUFBRUNCSjRpSUtBL0JjamJCQWdRNkpwQUNQRnJEeTBRVjBKNzErcW9QZ1FJRUNCQWdBQUJBc2NYRU5DUGIrWU1BZ1FJckVzZzVndW5SUDcxYVpHNGRkWEJkUWtRSUVDQUFBRUNCSllrSUtBdkNWYXhCQWdRV0lMQU5KV1o4bm40Y0NrN3BKM1FQUWdRSUVDQUFBRUNCQVlqWUp1MXdYU2xoaEFnMEZHQmd4Q2RQeDg4ejhQZjdYWnBSNjkwL2crcXpaWGQzZTIwT055SFpxZjVqNnhIOTNNa0FRSUVDQkFnUUtEekFnSjY1N3RJQlFrUTZMbkF3VnowZzg4SHpjbGgvY0hYRHQ1NzFPY1M3c05rY2kxTzl6ZG5CeHdFL2tjZDd6VUNCQWdRSUVDQUFJR2VDUWpvUGVzdzFTVkFvQmNDWmJUNytlZWZ2elk5ZGVxL1NlUG01MEtzUGhkRDJFdTF2NUJTOWQ5ODU4MDNYMHZQSitralQxcy95cU1ONDlQcEsybG1lNTFHMGZONStYd1BBZ1FJRUNCQWdBQ0JnUWdJNkFQcFNNMGdRS0I3QXMxeno5WFZkUC9iUTEyZnpZdTY1WVNkbmxmTnRObE5UNzhwZmN6dUtUL0NTUHJ0MjFYMTJtdFZyS3Zka0V0cW1sUmdtOWxUT1I0RUNCQWdRSUFBQVFJREVIRC80Z0E2VVJNSUVPaW13SFF5ZVRkRjZMZGkwNlI4SHUra3ovdk5kSG9uallEZjJ0cmQvZjVaclk4MkN2N2FhKzEwK0tiNlNEZGJxMVlFQ0JBZ1FJQUFBUUx6Q2dqbzh3bzZud0FCQW84Uk9QMlZyK3luVk4zTVJybzMwdWM4YXlsOTVLd2Rmekw5azhQNWZ2cDQybEI0ZnY5Z0t2eUgyaTNXbm5aS09zT0RBQUVDQkFnUUlFQ2dWd0lDZXErNlMyVUpFT2lKUUJudGZ2dnR0OTlMb2Z4M0g0alNrenlTWHRYMU4xemUzZjJoV1h1ZU5vcGVpbmpwcFplZVRWSCtham1uekhQdmlZWnFFaUJBZ0FBQkFnUUlIRWxBUUQ4U2s0TUlFQ0J3SW9HOGxkckJ5UGNIQmVUOXkvTTk2YUg2OGVybGw1OUpieHhsRkwzNm5idDNyNmJ6OGpacnVhd0hjdjhIeFh0R2dBQUJBZ1FJRUNEUVR3RUJ2Wi85cHRZRUNQUkVJSVh3cnp5aXFta1VQZTZublA1MVYrNjgreU96OTU4MGlsN0NlSnhNTHFaVWYrNFI1WG1KQUFFQ0JBZ1FJRUJnQUFJQytnQTZVUk1JRU9pa1FCdXFZOGlqNlBtMjh6THNmYSttYVlwNkhna1BWZjJUMTY1ZE81dGVmK29vZXQwMDExSXBwMHRwUnREdlVYcENnQUFCQWdRSUVCaUtnSUErbEo3VURnSUV1aWJRVGtGdm12Y2VVN0ZKMmlwdFA0MklmMmp2MUtrL05Udm1jYVBvYmRpdjQ0dHBSRDQvY3Vodm41VXYvVU9BQUFFQ0JBZ1FJREFFQVFGOUNMMm9EUVFJZEZjZ3hEd3kvdWhIbXVQZWpxTEhuN3g0OCtabU9pZ2YrOWlmeTNVMTJjdzNydWM5Mng1ZG9GY0pFQ0JBZ0FBQkFnVDZMUERZUHdUNzNDaDFKMENBd0pvRmNvQXVJOXpwbjNmYXA0L00xR1VVUGRUMTdzWjArbWRMblcrVnJkY2VXZjJVeTlzVjNCLzVyaGNKRUNCQWdBQUJBZ1Q2TGlDZzk3MEgxWjhBZ1c0TGhQRHdLdTZIYXh4Q25iWmRTeGsrL1BuejI5dGIxZXZWWG5yN3daL05iYm9QOGZvRGQ3SWZMc2x6QWdRSUVDQkFnQUNCbmdzOCtFZGd6NXVqK2dRSUVPaU1RQmxCVDhuNm5hZmNMWjUvRHUrRk9sdy9IY0pmbU5YK3daL05KYUNuK2ZEUDU5WG1QQWdRSUVDQUFBRUNCSVlwOE9BZmdjTnNwVllSSUVCZ1RRSWhQbVVFdmExWDJuYXR5YmVYLzltckw3MzBRbnJwd1h2Ulp5UG85Wm4yOEpMOTE5UWlseVZBZ0FBQkFnUUlFRmlXZ0lDK0xGbmxFaUF3Ym9IYnQ5djJoL0NsSTBEa244VjdWVjF2VGZmM2YySjIvTUhQNTV6R2MwQ3YwMDV0N1I3b2FZdTIyVEUrRVNCQWdBQUJBZ1FJREVqZzRBL0FBVFZKVXdnUUlOQWRnYlJRZTdzUCt0T3J0REViUmYvVG05dmJOOVBoOTQyaWIyMXRuVTJqOFJkbUU5d0Y5S2Q3T29JQUFRSUVDQkFnMERzQkFiMTNYYWJDQkFqMFF1QzExMG8xcDAzemJ0b1dMVDEvYXFiT0IreWxRSDloTWdrL1hrNXVGNHNySjlaMWZTYVZjcTR0YS9hdVR3UUlFQ0JBZ0FBQkFvTVNFTkFIMVowYVE0QkE1d1JDOCtSVjNPK3ZjTGtYUGVYNVA3TzFzL09SOU5aK05kdDJiVzlqNDVtcWFtYjNvRDg5N2Q5ZnJLOElFQ0JBZ0FBQkFnVDZJQ0NnOTZHWDFKRUFnZDRLaEZoL3NWUStQTFIxMnFQYWxIOG1weFhkNitkaVhiV2o2TysvV2tiUU4rbzZCZlJ3NmxFbmVZMEFBUUlFQ0JBZ1FHQVlBZ0w2TVBwUkt3Z1E2S2hBMmhydDdqR3JWdTVGcjJMNDRjczNiNzVhZmVwVDVmeDRxcW5UOVBlbnpwTS81clVjVG9BQUFRSUVDQkFnMENFQkFiMURuYUVxQkFnTVNxQ3M1NVpHdzM4bmxudlFqend0dmIwWHZRNm5RNXordXdjaTlWNzlUQ3B3Y3ZDMXp3UUlFQ0JBZ0FBQkFzTVRFTkNIMTZkYVJJQkFod1JTcUg0dlZTZUg5ZU9NZnM5RzBhdC9iZXZHalcvS3pkbWZOSG1CdUlNcDdzY3BLNS91UVlBQUFRSUVDQkFnMEFNQkFiMEhuYVNLQkFqMFZ5Q3RFUGQrRlVMZU1pMC95cWg2Ky9TSi80WVV4dmZUNlB0R0duMy9xZmJJa004OTZ2bFBMTnliQkFnUUlFQ0FBQUVDM1JRUTBMdlpMMnBGZ0VEL0JVcVlucHhxN3FiaDd1T3M1TjYyUElROGloN1R1UHUvY3ZtRkY3NnVpcFBmU1VFL2o1d0w2ZjMvM3RBQ0FnUUlFQ0JBZ01BakJRVDBSN0o0a1FBQkFvc1JtT3hQOXRNbytQRURlcjU4T2k5bjhyQ3g4Vk1wckIvOHZEYTlmVEZkb3hRQ0JBZ1FJRUNBUU9jRU5qcFhJeFVpUUlEQWdBVDI5dmZUdG1sNUJQMEV1VHFFc2k5Nk92TjdKNkgrUkt6aTd5U2FDK2tqajZLZm9NQUJ3V29LQVFJRUNCQWdRR0NBQWdjak1nTnNtaVlSSUVCZy9RSWIrL3QzMDVacGVhRzQvRGp1OVBRY3d2TWE4TS9HMlB4NGVuYndIMVdGODhMcEh3SUVDQkFnUUlEQXNBUUU5R0gxcDlZUUlOQWRnUkxHOTg3dHZaK21xYjg3eDRCM0NlbXBXVHZwNDB4M21xY21CQWdRSUVDQUFBRUNpeFlRMEJjdHFqd0NCQWdjRWpqOWxkUDdhV3I2M1RrbnBCK0U5RU1sZTBxQUFBRUNCQWdRSURBMEFRRjlhRDJxUFFRSWRFV2dqS0MvL2ZiYjc2YlYxNzg4bTVOKzNDbnVoOXRpV3Z0aERjOEpFQ0JBZ0FBQkFnTVVFTkFIMkttYVJJQkFwd1J5S0QvWUI3MVRGVk1aQWdRSUVDQkFnQUNCYmdrSTZOM3FEN1VoUUdCWUFtWFVPKzJVOXBYU3JEVFhmVmpOMHhvQ0JBZ1FJRUNBQUlGRkNnam9pOVJVRmdFQ0JPNFhLQUU5eHREYy83S3ZDQkFnUUlBQUFRSUVDRHdzSUtBL2JPSVZBZ1FJTEZhZ2FXYmJyQmxBWHl5czBnZ1FJRUNBQUFFQ3d4SVEwSWZWbjFwRGdFQVhCVUowRDNvWCswV2RDQkFnUUlBQUFRSWRFeERRTzlZaHFrT0F3S0FFMm52UXErbzM1OWdIZlZBZ0drT0FBQUVDQkFnUUlQQjRBUUg5OFRiZUlVQ0F3R0lFUWpDQ3ZoaEpwUkFnUUlBQUFRSUVCaTBnb0ErNmV6V09BSUUxQzdTTHhGWFZPMVY1dHViYXVEd0JBZ1FJRUNCQWdFQ25CUVQwVG5lUHloRWdNQVNCRU1OMENPM1FCZ0lFQ0JBZ1FJQUFnZVVLQ09qTDlWVTZBUUlFMHUzbjRVc1lDQkFnUUlBQUFRSUVDRHhOUUVCL21wRDNDUkFnTUtkQUNQWkJuNVBRNlFRSUVDQkFnQUNCVVFnSTZLUG9abzBrUUdDZEF0T21lYmVLZVEvMDRFNzBkWGFFYXhNZ1FJQUFBUUlFT2k0Z29IZThnMVNQQUlFQkNJU212UWRkUEI5QVoyb0NBUUlFQ0JBZ1FHQjVBZ0w2OG15VlRJQUFnU0lRWXYzYk00b2MwZk5RdWdjQkFnUUlFQ0JBZ0FDQmh3UUU5SWRJdkVDQUFJSEZDb1FZNzg1aXVUSDB4ZElxalFBQkFnUUlFQ0F3S0FFQmZWRGRxVEVFQ0hSTW9JeVdoN3IrVW13VHVvRGVzUTVTSFFJRUNCQWdRSUJBbHdRRTlDNzFocm9RSURCSWdhYXEzazhOUzU4OENCQWdRSUFBQVFJRUNEeGVRRUIvdkkxM0NCQWdzQkNCalJqZlR3dTQ3ODhLY3cvNlFsUVZRb0FBQVFJRUNCQVlub0NBUHJ3KzFTSUNCRG9tTUQxMTZtNmEyOTZ1NU42eHVxa09BUUlFQ0JBZ1FJQkFkd1FFOU83MGhab1FJREJRZ1hwL2Z6L0dLS0FQdEg4MWl3QUJBZ1FJRUNDd0tBRUJmVkdTeWlGQWdNRERBbVU2Kzk1MHVwZmVFdEFmOXZFS0FRSUVDQkFnUUlEQUlRRUIvUkNHcHdRSUVGaUd3TWJlM3QycUN1K2xqMlVVcjB3Q0JBZ1FJRUNBQUlHQkNBam9BK2xJelNCQW9Mc0NlMmZQdnAraStidXpmRzZSdU81Mmxab1JJRUNBQUFFQ0JOWXFJS0N2bGQvRkNSQVlnOEF6NzcyM2wvWkJUNlBvSGdRSUVDQkFnQUFCQWdRZUx5Q2dQOTdHT3dRSUVKaFhvSXlXdi8zMjIrK2xiZGErWW9MN3ZKek9KMENBQUFFQ0JBZ01XMEJBSDNiL2FoMEJBdDBRYUZJMUR2WkI3MGFOMUlJQUFRSUVDQkFnUUtCekFnSjY1N3BFaFFnUUdLSkFDTlZYaHRndWJTSkFnQUFCQWdRSUVGaWNnSUMrT0VzbEVTQkE0RkVDWldaN2JLcDJjYmgwTS9xakR2SWFBUUlFQ0JBZ1FJQUFBUUhkOXdBQkFnU1dLOURlZWg3anU4dTlqTklKRUNCQWdBQUJBZ1Q2TGlDZzk3MEgxWjhBZ1g0SWhPZ2U5SDcwbEZvU0lFQ0FBQUVDQk5ZbUlLQ3ZqZDZGQ1JBWWdVQ2V6bDVHME5NLzc3UlB6WEFmUWI5cklnRUNCQWdRSUVEZ1JBSUMrb25ZbkVTQUFJRmpDb1F3UGVZWkRpZEFnQUFCQWdRSUVCaVpnSUErc2c3WFhBSUVWaTdRTGhLWFI5RGJ1OUZYWGdFWEpFQ0FBQUVDQkFnUTZJZUFnTjZQZmxKTEFnUjZMaENpRWZTZWQ2SHFFeUJBZ0FBQkFnU1dMaUNnTDUzWUJRZ1FHTFhBN2R0dDgwUDQwcWdkTko0QUFRSUVDQkFnUU9DcEFnTDZVNGtjUUlBQWdma0ZRZ2pOL0tVb2dRQUJBZ1FJRUNCQVlNZ0NBdnFRZTFmYkNCQll2OEJycjVVNlRKdm0zU3JlVzlSOS9mVlNBd0lFQ0JBZ1FJQUFnYzRKQ09pZDZ4SVZJa0Jna0FLaHNZcjdJRHRXb3dnUUlFQ0FBQUVDaXhNUTBCZG5xU1FDQkFnOFZpREUrb3ZselZENXVmdFlKVzhRSUVDQUFBRUNCTVl0NEEvRmNmZS8xaE1nc0NLQkVPUGVpaTdsTWdRSUVDQkFnQUFCQWowVkVOQjcybkdxVFlCQWJ3VHlqZWRWbUV4K081WjcwTzJHM3B1ZVUxRUNCQWdRSUVDQXdJb0ZCUFFWZzdzY0FRTGpGR2hpdkpOYWJwVzRjWGEvVmhNZ1FJQUFBUUlFamlRZ29CK0p5VUVFQ0JDWVQyQ2pxdDZyUXRpZmxWSkcxZWNyMGRrRUNCQWdRSUFBQVFKREV4RFFoOWFqMmtPQVFOY0VTaGlmbm1ydWhxcXlrbnZYZWtkOUNCQWdRSUFBQVFJZEVoRFFPOVFacWtLQXdIQUZKdnVUL1hRUHVvQSszQzdXTWdJRUNCQWdRSURBM0FJQyt0eUVDaUJBZ01EVEJmYjI5L01xN2dkVDNKOStnaU1JRUNCQWdBQUJBZ1JHSnlDZ2o2N0xOWmdBZ1hVSWJPenYzMDFMeEwwL3U3WjcwTmZSQ2E1SmdBQUJBZ1FJRU9pNGdJRGU4UTVTUFFJRWVpOVF3dmpldWIzM1F3anZwZzNYZXQ4Z0RTQkFnQUFCQWdRSUVGaU9nSUMrSEZlbEVpQkE0RDZCNTk1L2JpOVc4YTU4ZmgrTEx3Z1FJRUNBQUFFQ0JBNEpDT2lITUR3bFFJREFFZ1RLQ1BwYmI3MlZ0MW43OG16ODNCVDNKVUFya2dBQkFnUUlFQ0RRZHdFQnZlODlxUDRFQ1BSRklJZHlpOFQxcGJmVWt3QUJBZ1FJRUNDd0JnRUJmUTNvTGttQXdPZ0V5c0I1Q05WWFNzdlRYUGZSQ1dnd0FRSUVDQkFnUUlEQVV3VUU5S2NTT1lBQUFRSnpDNVNBSG1ObzVpNUpBUVFJRUNCQWdBQUJBb01WRU5BSDI3VWFSb0JBNXdTYVpyYk5tZ0gwenZXTkNoRWdRSUFBQVFJRU9pQWdvSGVnRTFTQkFJSEJDN1JydzRXOEQvcHNtYmpCTjFrRENSQWdRSUFBQVFJRWppc2dvQjlYelBFRUNCQTR2c0JCUVArRWZINThQR2NRSUVDQUFBRUNCTVlpSUtDUHBhZTFrd0NCdFF2RUVEOFdZNXJlSHNJa1ZjWTg5N1gzaUFvUUlFQ0FBQUVDQkxvbElLQjNxei9VaGdDQllRcTBpOE5OdzZlckdIOHJOVEdQcUF2b3creHJyU0pBZ0FBQkFnUUluRmhBUUQ4eG5STUpFQ0J3WklFU3huL3JuLzdUTjlNWi95U2svZGJTUTBBL01wOERDUkFnUUlBQUFRTGpFQkRReDlIUFdrbUF3SG9GY2hqUDA5clRJL3g4bXVLZTRubWU2KzVCZ0FBQkFnUUlFQ0JBNEFNQkFmMERDODhJRUNDd1BJSGJzK1hoNnZqeEZNN1RkZHBoOU9WZFVNa0VDQkFnUUlBQUFRSjlFeERRKzlaajZrdUFRRDhGWG11bnREZE4rUGtVei9kU1hMZFFYRDk3VXEwSkVDQkFnQUFCQWtzVEVOQ1hScXRnQWdRSTNDZFFGb283VzFXZlNTUG92em9iUUc4WGo3dnZNRjhRSUVDQUFBRUNCQWlNVlVCQUgydlBhemNCQXFzV0tQZWh2L25tbSsrbDZlMy9LT1FaNys1RFgzVWZ1QjRCQWdRSUVDQkFvTk1DQW5xbnUwZmxDQkFZbUVCWnZqMjE2V096TzlJSDFqek5JVUNBQUFFQ0JBZ1FtRWRBUUo5SHo3a0VDQkE0bmtDN2NudGFLSzRNbm9mZ1B2VGorVG1hQUFFQ0JBZ1FJREJvQVFGOTBOMnJjUVFJZEV5Z0JQUVE2MCtIR045SmRjc2o2bTFvNzFoRlZZY0FBUUlFQ0JBZ1FHRDFBZ0w2NnMxZGtRQ0I4UXFVTVA3T1p6LzdWb3JtdnhUYW5kWUU5UEYrUDJnNUFRSUVDQkFnUU9BK0FRSDlQZzVmRUNCQVlLa0NPWXpuYWUxcGZianc4YktTdTRYaWxncXVjQUlFQ0JBZ1FJQkFud1EyK2xSWmRTVkFnTUFBQk5xRjR1cjRlanU1dlIxR0gwQzdOSUVBQVFJRUNCQWdRR0JPQVNQb2N3STZuUUFCQXNjVUtGUGFteVo4TWozWlMxUGRMUlIzVEVDSEV5QkFnQUFCQWdTR0tpQ2dEN1ZudFlzQWdhNEtOTGxpWjZ2cU0ybWUrNitXYWU0V2l1dHFYNmtYQVFJRUNCQWdRR0NsQWdMNlNybGRqQUFCQW1WaSsrVE5OOTk4THkzaS9vOUNYc2c5eGhMYTJSQWdRSUFBQVFJRUNJeGJRRUFmZC85clBRRUM2eEZvNzBPdnFvK1ZqZGJXVXdkWEpVQ0FBQUVDQkFnUTZKaUFnTjZ4RGxFZEFnUkdJZEJ1clJiang4c2k3aUc0RDMwVTNhNlJCQWdRSUVDQUFJRW5Dd2pvVC9ieExnRUNCSlloVUFKNnFPdFBoeGpmU1JmSUkrcHRhRi9HMVpSSmdBQUJBZ1FJRUNEUUN3RUJ2UmZkcEpJRUNBeE1vSVR4ZHo3NzJiZFNOUCtsME82MEpxQVBySk0xaHdBQkFnUUlFQ0J3WEFFQi9iaGlqaWRBZ01EOEFqbU01Mm50YVgyNDhIcFp5YjNNZForL1lDVVFJRUNBQUFFQ0JBajBWMEJBNzIvZnFUa0JBdjBXS0F2RnBYOStMcVgwMUpKMkdMM2ZUVko3QWdRSUVDQkFnQUNCZVFRRTlIbjBuRXVBQUlHVEM1UXA3VTFkZnpJOTJVdFQzUzBVZDNKTFp4SWdRSUFBQVFJRUJpRWdvQStpR3pXQ0FJRWVDcFM5enkvVTlhK2tFZlJmbWQySGJqLzBIbmFrS2hNZ1FJQUFBUUlFRmlVZ29DOUtVamtFQ0JBNG5rQzVELzJOTjk1NFAwMXUvOFd5a0x2NzBJOG42R2dDQkFnUUlFQ0F3TUFFQlBTQmRham1FQ0RRSzRGeUgzb1Z3OGZMUm11OXFycktFaUJBZ0FBQkFnUUlMRnBnWTlFRktvOEFBUUlFaml4UTdrTlBBK2V2bDEzUVF6aTRENzBON2tjdXhvRUVDQkFnUUlBQUFRSkRFRENDUG9SZTFBWUNCUG9xVUFKNmZlclVQdzR4Zmo0MUlnZno4bHBmRzZUZUJBZ1FJRUNBQUFFQ0p4Y1EwRTl1NTB3Q0JBak1LMURDK0JmZWVPTnpLWnIvOG15aE9BRjlYbFhuRXlCQWdBQUJBZ1I2S2lDZzk3VGpWSnNBZ1VFSTVEQSt1OVdvVHZlaHB3RjBDOFVOb21NMWdnQUJBZ1FJRUNCd0VnSDNvSjlFelRrRUNCQll0RUNNSHk5RnpvYlJGMTI4OGdnUUlFQ0FBQUVDQkxvdllBUzkrMzJraGdRSURGdWdUR2x2NnZxVDZjbGVhdXJCUW5IRGJyWFdFU0JBZ0FBQkFnUUlQQ1Fnb0Q5RTRnVUNCQWlzVktESlY3dFExNytTcHJmL3ltd0F2YnkyMGxxNEdBRUNCQWdRSUVDQXdOb0ZCUFMxZDRFS0VDQXdjb0U4Z2o1NTQ0MDMzayszb1A5aVdjamRmZWdqLzViUWZBSUVDQkFnUUdDc0FnTDZXSHRldXdrUTZKSkEyZmM4eHZCNjJXaXRTelZURndJRUNCQWdRSUFBZ1pVSkNPZ3JvM1loQWdRSVBGYWczSWVlcHJoL3ZBeWVoK0ErOU1kU2VZTUFBUUlFQ0JBZ01Gd0JBWDI0ZmF0bEJBajBSNkFFOUxDeDhla1E0K2RUdGZPSWVodmErOU1HTlNWQWdBQUJBZ1FJRUpoVFFFQ2ZFOURwQkFnUVdJQkFDZVB2L1Bxdi8wYUs1cjg4V3loT1FGOEFyQ0lJRUNCQWdBQUJBbjBTRU5ENzFGdnFTb0RBVUFWeUdOOW9HMWQvdkVxcnhhWHA3Z0w2VUh0YnV3Z1FJRUNBQUFFQ2p4R1kvVUg0bUhlOVRJQUFBUUtyRllqeFkrMEZjMHIzSUVDQUFBRUNCQWdRR0pPQUVmUXg5YmEyRWlEUVpZRXlZaDRuMDAra0ozZlRWSGNMeFhXNXQ5U05BQUVDQkFnUUlMQUVBUUY5Q2FpS0pFQ0F3QWtFbW56TytmRE1yNlg1N2I4eXV3Kzl2SGFDc3B4Q2dBQUJBZ1FJRUNEUVF3RUJ2WWVkcHNvRUNBeFNJSStnVDk1NDQ0MzNRMVA5UW1taCs5QUgyZEVhUllBQUFRSUVDQkI0bklDQS9qZ1pyeE1nUUdEMUF1MTk1M1gxc2JKUTNPcXY3NG9FQ0JBZ1FJQUFBUUpyRkJEUTE0anYwZ1FJRUhoQW9OeUhYalhWSjhyZ2VRaDVJYy8ydFFjTzlDVUJBZ1FJRUNCQWdNRHdCQVQwNGZXcEZoRWcwRitCRXNicjAzdi9PRFhoYzdObUNPajk3VTgxSjBDQUFBRUNCQWdjUzBCQVB4YVhnd2tRSUxCVWdSTEdQLzlybjM4N3pYWC9wZGxDY1FMNlVza1ZUb0FBQVFJRUNCRG9qb0NBM3AyK1VCTUNCQWprTUo2bnRhZEhmTDNjaDI2aHVKYkR2d1FJRUNCQWdBQ0JFUWdJNkNQb1pFMGtRS0NQQXZGalZVeDVmVGFNM3NjV3FETUJBZ1FJRUNCQWdNRHhCQVQwNDNrNW1nQUJBc3NXS0ZQYVl4M3pWbXQzMHNja2Zaam12bXgxNVJNZ1FJQUFBUUlFT2lBZ29IZWdFMVNCQUFFQ2h3U2EvUHg4ZU9iWFloVi9kVGFBWGw0N2RJeW5CQWdRSUVDQUFBRUNBeFFRMEFmWXFacEVnRUN2QmZKbytlU05OOTU0UDhUd3lkSVM5NkgzdWtOVm5nQUJBZ1FJRUNCd1ZBRUIvYWhTamlOQWdNRHFCTklpN3VrUlpndkZyZTY2cmtTQUFBRUNCQWdRSUxCR0FRRjlqZmd1VFlBQWdjY0l0UGVjeC9CNkdUd1BJYS9zN2o3MHgyQjVtUUFCQWdRSUVDQXdGQUVCZlNnOXFSMEVDQXhKb0lUeCt0VGRUNmRZL3JsWnd3VDBJZld3dGhBZ1FJQUFBUUlFSGlFZ29EOEN4VXNFQ0JCWXMwQUo0NS8vdGMrL25lYTYvOUpzb1RnQmZjMmQ0dklFQ0JBZ1FJQUFnV1VMQ09qTEZsWStBUUlFamkrUXczaWUxcDd2US8vNXRCZDZtdUNlTjBYM0lFQ0FBQUVDQkFnUUdMS0FnRDdrM3RVMkFnUUdJQkIvTG9YekZOUnpTdmNnUUlBQUFRSUVDQkFZc29DQVB1VGUxVFlDQlBvc1VQWStqOVBxa3ltZzMwa05tYVFQbytoOTdsRjFKMENBQUFFQ0JBZzhSVUJBZndxUXR3a1FJTEFtZ1JMR2YvUE1tVitMSVh4bU5vQmVRdnVhNnVPeUJBZ1FJRUNBQUFFQ1N4WVEwSmNNckhnQ0JBaWNVQ0FIOUVuMW1jL2NTZVBtditBKzlCTXFPbzBBQVFJRUNCQWcwQ01CQWIxSG5hV3FCQWlNVHFEY2R4N3IrTEdPdHp5bWFmajc1YU9xcHFtdWVhVGZkUHlPZDVycUVTQkFnQUFCQXQwVGFGY0o3bDY5MUlnQUFRSUVaaUczYnNJblVnTE9DOFhsbjlrNStIWm53YmdROWxJd1B4VW1rL2IzU1ZyUTd0NkM4N0hhdjFmZFVPWC9JSnpyM1oyNnA4cDRFQ0JBZ0FBQkFnUzZKR0FFdlV1OW9TNEVDQkM0WDZDTVFrLzI5ajZkWXUxdnpMSnROKzVEVCtFNzN4Y2ZZdlYvcFhwOWF4V2JmenMyOGFkVElQLzU5UFVYYzEzRHBON0l3VDNVNlQ4c2hIQVEwUE4vYTJoSDIwdUFMeVB1UnQzdjczZGZFU0JBZ0FBQkFpTVZNSUkrMG83WGJBSUVlaUZRQXZyYmI3LzkrU3U3dS84azVlSHIzZGtOUFkvbzEzbTAvTGQrODgwM2Z5NXA1by84bUZ6ZTN0NmVUQ1lmYW1MemFoWERLeW5GdjVKQytZMzAzczBVMUo4cmdUMGZPV3RNYWVRSERadCtNQVNmQnR0VHprOUhIdjdJWjNvUUlFQ0FBQUVDQkFZcElLQVBzbHMxaWdDQmdRams3SnAvVHFmUjZqUXlIZXB2cjVvbWxnWGpPdExBbEp5L2txdHk3ZHExcytrL0pMeWZuazUvNjYyM1Bwcys1NCtmVFIvbGtUTDdtYjI2M2s2ajdDbW94NC9FdW40eGhmWVUzcXZyS1pCdnB4eStGVVAxWENwdlV0V3p5VjBIQWI1TjhBZEZQUmpnOCtzNXdPZkg0YzhIejl0My9FdUF3THdDQjdOZ2NqbDUxb3NIQVFJRUNDeEJRRUJmQXFvaUNSQWdzR2lCTkhyK2MrWGU3dGwrYTRzdS83amxwYTNmVXA1T2oxQjlLWDlLNFR3SDlWQzkrdXJwL0hYMXFVOGRUTVhQOFRxKzlkWmI3NmJQbjVsOS9FejZmTytSd3Z2VzNTcGVDWFg5UWpycDVWVHVDeW0wZnppVnRwdWVYMGxyenUya0dmS1hVbDUvTmprY0N2QzVpSkxlMjM4L0dJWFBieHdLOHZuTC9FaWwzVDhpUDN1eHZPa2ZBZ1FlRnNpaFBIL2svNkVKNVEvN2VJVUFBUUlMRnloL1h5MjhWQVVTSUVDQXdLSUU4aC9IemRiMjl0ZWtrZVZQcGh1NG4wMWY1eitXMS8zenUwbi9yYUJPLzlIZ0g2WXA3UC9KZEQ5KzRyZC80emQrL1lGR1QyYjFQQWpyK2UxUTNVNGZyK1duWmJYM3crK1ZGeC80cDA2ajgxdlRqWTFMNmNETGFVWDdseVlodkpDeStKVVU0aitVWmhOY1MwVmVTaVJiU1dVcmZmMU0rbndxQmZuMDhpR2lRK0c5ZmRvRyszUlVmcEx2aTAvRkg3eDI3N3cyenJjVnV2ZGlMcmw5cWZ4NytQbWhsd2Y3ZEpyNlBmZnIvL3ZPWjkvODZHQmJPYzZHNWUvbHd4ODVrQi84ajZMTWtwbWVPdlhONllYZlU5KzU4M2UrOElVdmZIbDIvTDFqeHNtbTFRUUlFRmlzd05qK3NGaXNudElJRUNDd2ZJSDhjenErL1BMTHozenh6dnMvbjc3NHVoU0s4eC9PT1NTdCs1RUcwdHNVbkVMdmI2ZHF2cDcrdlArWjJGUi8vMHdJbjN6enpUZmZlNkNDZWRaVy9tTStoL0w4K2VCM1VQNTgrSG42c3J4L2NHeisra21QK3VMTm14ZlRmN25ZakUxemJocmoxWFR3VGowSm02bUF5K20yZ08ybUN0ZnJFQzZrVWkrbU5INDV2YitaQXZ5cEZQSlB6NXFRYWpDclFyNXF1WHorZk9qWm9aQS9lN2xKaDZXanl3bmwyUGFmV1RrZmpOYm5sdy9hOStEejlwVCsvQ3VnOTZldmpsclR3LzhoN2I3L1lQYjhqUnRmTmEyYWZ5NFY5TzNwMi95ajZYOHJIOG4vVzcvYk5GLzkvN2QzSi9DVlhQV1o5NnZxWHFsWGRiczMyN1NranVPUWtOQXNob1lrTE1adFkyQXltVGV6SklGNUU4Z3lNSGw1bVF6RGZNSm1JRFB2TzJFTlRuZ0pXWmhoR1RMSlFCSW1rMlNTTVBQaXJZME5HQnQ1QVJwc01FMjNkSy9zZGt2cVJYUzN1NlZiWjU3L3FWdlNsYXh1YTdsTExiK3kxYnE2UzlVNTMxUFN2VStkVTZlbXg4Y25kTDgvZ0xqY0RmRThCQkJBQUlFbkYyajl3UERreitZWkNDQ0FBQUs5RUxBUDBBMU5GUGRmTmNIYUw3aEdZMVpoTWl1bktLVmhXeDNiZWt2UmwwS3lHWDFIa2ZSTG1pVHU1bXBsNW90SGp4ejkzaUs0TkJSWXVrM1hzZWdwY3ovYWU5WDgxLzc5UVhEZ2dEMll2bTV4UXJiSGxsNzI3ZXNiZVBUUkxWRzF1cVhpM0FaTkpMOHRpcVBMdFBLZFFTVWMwTUdGN2FGclhLb1Y3dEtRK3dHRmtVMEs0QmJzMVVzZmJGWWQrM1NBWkoxVjFPZjVOTlRiMXVaS01YY2p1Y3YvT0g5ZnMyQjJ4OFVEdmoyeHRROC9lYUU1dEM1UDluUHJjOXR4bTREZURzWGVyV1ArOXlqNW5kS2xFT2VYTFVORDI3V0RQMGV4MndMNVMvWElNL1Y3b044QjdkNTJnRXBmK25jaWlOMXptM05ORU5EbitiaUZBQUlJdEVWZzhSdDdXMWJLU2hCQUFBRUUyaXJnSjRyYnVXZndUZXF3K2xER0FycFYxTUxtL0RCeERZSDI4ZFhDYS9LQi9wUWV2VTgvM2FibkhRalBuUnRwRG8rMTE2Wkxlc0Jod2JEYTlNR0xmRS9meCt4N2V0dWUzbm83S1Y5YXpvdXNiS21IYklLNzJkblpnWFByMTIvU1VZWDFvWHJwZFdSZ1J5Vm9iTmNRZ3EwNkxYNmpSc2h2MVd1M2g3R0czb2R1cXliMFc2K05ibEw5QjNUL1puME5LR3YzNjhUOXF1N1RFUHlXNHJYZXRnSllFRnBpbWJ0MzZjZm42K2lmdVBTVDVsZmIzUDdDQXdCcG9kTHY4MDlQYnRuOUJQVEZLdm40T1QwZ1pnZTE3R3R1MmI1bno5Nm8wWGl4aFhMdE5TL1VzYWRodjMvcWh5U1UyN25uK2tIelR1aEZmZm82b2JrcW4zMThmSHhVdHdub2M1TGNRQUFCQk5vamtINGdhcy9hV0FzQ0NDQ0FRQ2NFZk9RS1hYUnZiTGtyNlQyMyt5NFVwRHBSaG91dDA4cGhVVThmMXBNaTZZTjlyS0hsR2xudTArY1dmYnRHdDYveEgvalhyenVrMFFCZkRDSjNTeFNIWHpwV3EzMUhyMi90eVV2RGhOVXg3U1cvMFBhOWpSNU12MS9vZWVuOXFWbFM1dVRlNUw3OSs5T2VlVnZYM0ZkemdqdWI1RzdGeTlEUTBJYVR6bTFVcitUR0tBclhOWUp3dlpBMkNtYWJmTFpZbU5lcC9CdTA0ZzJoYzV1ZDAvbjBvWHJzWXczQmo4TDFLbGkvQ3JKUjBjaHViMVprc2prSXJFZXpLbE9iQThBbTVhc0kzL3lUZXRpLy9yTHorcDR1Y3pwek45Skg1cjdicnVYWDRHL00zYjN3UnJML2FXREV3cEMzOEVuODFHTUJ2d2VvREJhZWJiSGZMVHZ3NVpmTmwxKythME8xK253WHVwZHFmN3RhUTE2ZUhWU2laSEpIMisyMVUya1VqSjd2OTZsSSs0UitILzJ1dFNEWXArdmpPd0lJSUlCQWV3V1NOL1AycnBPMUlZQUFBZ2kwVjhBK2FNZWFMTzNTMmY2KyszWGJMazFtSDViVEQrRHQzVnA3MTJheHozclgvU2QvZmVhdjZNc1dINEZWRFp2OS9RRTllcXZ1dTZYUjMzL2Y4VU9IL016d0xjVklEeWF2dEhlOVpSVXJ2dG42L3BqZVRyL2J5bHB2cHl1M3V0cVMxRG41bnR5ejFuODFPLzRscDA5dlhIZjJiUCs1S05yUVY2bjB4OVZxUmIzNW0rSkdvMTlERnJacGgxaW5udnp0VWFDejcvVWN4YXlxaFgyRnNMN1F4VHZVQldxOTk1cElUOUUvQ2plcVNEb21FT2k3VTY5bzJLOWh5OWJUYnpXejBRQzJiOWxCQUxPM3lOWnZyMVBOWnJWdVc4OERtaVR1S2ozR2tnMEIyeCt0emV6N3d0OFRuZGF4NjlGSDkycFd4NnZWNGkvVFU1Nm5KejNGOHJmYTBSclh2aWNIeVB3djV0eDZGdGNzL1p0REQvcGlHWDVHQUFFRTJpaGdmOGhaRUVBQUFRU3lMV0IvcTMzNFU4K3pncXlHb3NhYUtNNzNiR1c3NEJjb25jNjkxZ0dHSkF6TW43dWVCSVZSOWM1K0tYTGhMZXBodm1OaWZQeWhSZXRZU2UvNm9wZjI1TWYwZmZaQzM0TmcvLzZrWU1sNTlXbTR0L3RhYnlmUDZjeS9kbm04UGpzQW9OSExRVFN6YWJQYUoreXJWdnRtbzZnL2pHYmlvS0hlL1lhQ3VWMWVyOUc0WEZjVU9EVlJxOTNlbWVLdzFtVUkyUDVrWHhiS2JUK1o2eUhYN1dEbjhQQnVqYlo1Z1o1d2pYN2NyNmZzMVlFVk84Q2kvKzBmKzJYelBldjJldnV5ZFQzWlFrQi9NaUVlUndBQkJOb2dzSncveUczWURLdEFBQUVFRUZpamdQVmt6dTRjSHJ4Unc1ZC9JNFBub2ErbWVoWVNsdTVkdHdmaTJJYVZmMTA5djE5UU1MeFpKei9mYzNKMDlQaWlEZldpZDMxUkVUcnk0MUx2eitsOTZmZldEUzkxWCt2alptM0xoYjRuai9KdmxnV3NqZE13M1hwS1NCQmNjY1g2SFkzR014VzhyOU9UOXF1Wm42ZmZHYnZzb0c2MjlwTHJaMzhxaWcva3RyNlZMQVQwbFdqeFhBUVFRR0NWQXVrSG0xVytuSmNoZ0FBQ0NIUlRRSiszNzA0NnYreVRkeVlXKzlCdWl3V0hsUzVXaCthWjA4M3FxR2Rkd1Z6clZQMUNuWHNkaGo5aFh3b1pid2xqVjk4eE5QaGwzWDlySEVSM0hCOGIrNlplM3hwVXJBejJaU0hVeXBXR1VkM00zYkpVMlplNnIxMFZhOTJmV20rbjYyKzl6MjViV1JiMDJxWlA1SHZiQk16Wjl1ZFc3em56clQ5dzJRLzJ4Ulg5YmtUWHU5bVpGK3Q1VDFNdmVUT1E2eWNicFpKY2tqSDV2V2pmbFI4YUtsQW45MFVWbmdVQkJCQW9yNEQ5MFdkQkFBRUVFTWkrZ0gzSWpuZnUzdjAwblVGOG56NGQyOFJpOWlHNWwzL0hiV1puWFZmTmYxYWZVVm5zb0c4N3k1TmVoc3kybzhtcWRPWjA4N2lFWXZ4NWJlbHI2aHU4dmVMQ1d5dXpzL2M4K3Vpang3VDkxaVU5Q0wzd25OeldaM0FiZ1d3SjJPK1BuY1poUyt2QnAyRFhybDJiZy9Ycm45dHdicjkrNmE3Ujc0T2RTNjZKQnZWdiszckpreTB2OGE5K3kyZTBKWnZGZmFZeDIvaVJFNDgrZWxpM3JheHpCdzEwbXdVQkJCQkFZSTBDOWtiQWdnQUNDQ0NRZlFIN2UrMkNmVUhmanFORDkrb3orVFBVazI0ZmpOTVA4OTJ1Z1Q4NG9FSTlvQTAvUmVja1grcXZmMjZUVGRsRWNPME42bW5ka25QWExaSG8vSHNmMXROd0VyaWptbHI4TGozeFpuV2RmK0Y0clhheDNuVXJlOXJ6bjY2Yjd3ajBRc0IrcnhmM2tzK1ZZOWZRMEEvSG9YdVI5dTNydGF1L1FEdnVsWDYvVHdPNWhXTWJVcE1jdVVyWE0vZjZOdDN3Mi9DVEE5cnZXK3orWi9ENDQ2K2FtSmlZMXZxVHYwdHQyaENyUVFBQkJCRG96QWNvWEJGQUFBRUVPaVBnZTZzMFVkeWZxQy81MVQwOUQxMUJQS3hVTkp0MzhGdm5HbzNmV3hkRjcxZHY5aS9iaC9pV29KNzJZSGRDSXhuQ25vUVRQNFRYT3RrdEx1aXVHWDBkVklyL2duTExMWlh6NSs4NmV2VG9ZNHNLa1I1RXNQVVExaGZoOEdOSEJTelVwZ2ZXRnZTU2I5MnpaMXQxZG5hZkRqL3QxKy9XZFhyZXMvUTdaWmZWOHpuYy8rTVB6R2tWcXorWDNGYTNuTVVmRUV1RHVYNm5SbFNtOTA3V2F2KzkrV0xDK1hJVWVRNENDQ0N3UWdINzQ4cUNBQUlJSUpBUEFRdThzd3JvLzFvQi9mZDZHZEJ0dUtzbWhkYmx2WVAzVEk2TnZjdjR0ZzBQUDZNU3hPL1VmZi9jT3ZUMGdkNkdxR3UyZGg5R092MStrL2F1VzNDeHk0UHB1NzZTbnNiSGRPdHUzWDliRU1hM1R3eHMvM3B3OE9ENWxpYjNBVjgvVzg4NnZlc3RNTnhzaTREdCs3YVAyZmZGQjRTaTdYdjIvRmprR2xmcnNXdTF1NzVRKys1UXk3NXJlNlJHeXVnUmZ3VEtyMGRQN2VpUy9DNkZVVlYvWjdUbCtGdmEybTlQanRVLzFiSlZxNHY5cnJBZ2dBQUNDTFJad1A3QXNpQ0FBQUlJNUVQQTk2RHZHaDYrV3BkUStrTHo4N0Y5U083KzMzS0ZCbjE0cnlpRTN6SlpxNzljWlVqRGJhQURDSnJZemIxVGllTC84Si9pTGFnbmo2ZTlocDNXVHJhbndxV2hScjJBZnB2cTNkZmw2VUlMSExlcnhMZnErMWZVSTFoZlZDQXJweFY5Y1poYTlEUitST0NDQXEwSGZSYWNvMzNaWlpkZEd2ZjFQYytGN25ydG9GZnJZdlRQMUNraTYyeE50c3RhSXZaZmx0THR2MlJmN01idnVFMzNicjhmQ3VhNklsc2NIOUdtYnh5b1ZqOSsrUERoeDVzMXRZT0VWaC9DZVJPRWJ3Z2dnRUM3QmJyeEI3L2RaV1o5Q0NDQVFGa0Y3RU4vUExCNzk4NytLSHBBSDkxMyt3L1U4OE5sdSt2aUFnMXp0eUh0N3E4VmN2K3AzL2pldmYxcDcvU09QYnV2RCtMd0J2VUlYbWVQTmEvZGJqZTdGZFJ0VzdZMEE0OXVXZmhZMkxzK3BReDB0OUxHYlhyc3RnM09mYU5XcTUzMXIwcitzZmRKSzI5NkFNSkNPd3NDaXdYc2Q5UDJGZnRhZUdCSHZ4TzdqaC9mRzBmUjFZRkN1ZllrdXpMQnBaYS85ZnVyL3kyVTI0UncrdDY5WHZMVzhsdDVMWFQzK1FOWkxqN3F3dUREcm4vREgwdzkvUEFwLzBUTmZSR01CRFlSSkFzQ0NDQ0FRSWNGN0kyRUJRRUVFRUFnSHdMcDMyeTNZM2p3SmdYTDYvWGgzajVZZHp2d3ptczF6MFZmSXFUYnViVSt6TzRZSHY0blNpSHZVQjU1dnIxUVBYTTJrVnphd3ppL3J1N2NzcUJ0Z2QxNjE4MXpickk1bGNzZWUwaXVkMmlFd3MxNnpwZW54c2ZIRmhYTHJPMTFDMFBZb2lmeFl5a0UwbjNZOXBzRnZlUTdoNGQzYXg5NmdVYVNYS2ZjZmJVZWY3ckNyLzg5MVg1bU9NMWg1SDRmdFAzSjF0WHRaV0dQdVhNSzQrRWY5TTNNZkdqdWlnajc5aW1ZajFqZGZLRzdYVUMyaHdBQ0NKUlJJUDJ3VjhhNlUyY0VFRUFnandMcGVlZ2YwQkR6dC9ieVBQUVVUK2trT1IrOXRTZDkvcUNCZmJDM0FCUHNIQnI2QmZYTUthaUhlMzJ2WVcrRCtuenhrNE1jMW51NXFIYzlPS0dpanlpTzMrWWE3cmIxUVhELytQajRtZlNGK3U0RHZyNWIvZXlMRUNPRUFpK3R2ZVFXV3YxK2JmWGR2WHYzeHNmRDhGbmF0MStpdmVLbE9yanpQTjNlcm4xS3owcDd5WFdGQTF0NmQzREtiMTcvTEF6bWNhemg2K0VuNGpqKzdlUGo0NlBOSnpHVVBkWGlPd0lJSU5CbEFRSjZsOEhaSEFJSUlMQkdBUi9RdHc4Ty9sd1VoWi90ZVE5NnN6SktLa3VGZEFzMEZscDltZjFUN1RKeGorMytsNXFBK3MwS0tqK29ubmZkN1RweERYVy91UlgrazRUc3BYdlhiVlVQS1h4OVNaZTh1clZSbmIzenhHRi9IZWpXVGRDNzNxcFJqTnUyRDl1WDdSc0xlc2t2dWZ6eUs2cDlmUy9RN25LOUhuNlJIbjlhTWtTOEdjanQrZlA3a3Eyajk1KzViQ2k5djBSaHBGUGY5Y3NYQm44U3pNYnZuM3prRVp1WHdSYjdYYlhmV1E0Mm1RWUxBZ2dnMEFPQjNyOVo5S0RTYkJJQkJCRElzWUFQdmY3NnlJRzdYL1hZcUM4TER6My9lNjVDTkVONi9LZWFPTzQxVFdOZlhsKysvUnFLZjhET3RRMkNYYnQyYlk3WHJYdURTdjF2MU5PNHV6bnMxNEs2aFZ4N1RSWVdKUzBMWmFyWkUzclhuYTRCSGQ2cmliNXVxUVRSN1kzVHArK2ZtcHBLenRkTlNtN3RZWFd4dHJFdkFvOFFNcjVZbTdWK0pUM2V6VUp2Mzc1OVMyWFRwcXNhemwyckhYUy9kbzU5Mm5jSE10cEwza3FkN01jNktxYnlScll6YW8vOHk3QVN2M2ZpeVBpOXpTY1N6RnZGdUkwQUFnajBVS0RuSCtoNldIYzJqUUFDQ09SUndQNXV1MEFUVCswNGVYSkVJMmlma1pWZWRGOHVYUVpPdlloOTZwejdwQ2FPZTIwVE9BM3A5bU1ZdEFSMURRM2VlVDRNMytqQzBDNGRkNGtQNmpxdlhhRW43WTF1cnFMbjM1S1FiVDJpbHNoOEw2U2FRamQ5UjJRWUhOSkRYMVRMM0ZLSm9qc2ZHeHY3N3FJU20wSHFRRmhmaE5Qakg5Tjk3UWs5eDNZZ3JCSEdMdzVkZUozQzdRdlYrRmZxdTM0RG03M2s4NWRBczk5TGExLzducVZGdmZncWxLNjRZSVZTcVcrS2craTNqbytOM2RFc3BMOWZ0eGVNRG1nK3hqY0VFRUFBZ1I0SVpPMk5wQWNFYkJJQkJCREluWUI5cUc3b2NtWi9vZy9lcjg3Q2VlZ0xCT2NuanJ0UVNMZW5oOEcrZlZWTlFPVm5odGFRL1NIbG5qZnIvbDlUd04rUTRhQ2VWalhwbGZUcEo2ejZ6TzZEbTJXMzJNNVRmeUIwd2MzNmZsdGozYnA3ang4NmRESjlZZk83OVZoYTZHLzlXdlFVZnV5QWdIM3VTY08wclg1QkwvbldQWHUyVllMWjV5bVE3MWZMWEtmSGRWNTV0TkZlNFkvTjJQRVpPNEJrZCtnZ1RYTmR0cDZzTFg1NHZYNlhiRC9UNHI2b09yMzNXSzMydWVUbnVZTUpCUE1tQ044UVFBQ0JyQWpZbXhRTEFnZ2dnRUMrQk94RDk2d0MraHNWMEQrY3VZQ3VOS0FRMHdncmxXb1F1MDlNMUdxdmEvS21QY2l0MnBHQ2VpVU42bjdvZnVodTBCcCtTZUdpb3FEdTE2VUEzQXdhclMvTnpHMEwyY25NOEl0NzE1TkFkMFRaL2NzNmQvMFd1WHhob2w3LzlxS1NtNHQ5MlhvSVRJdHcydkJqR3NqdCsrSmU4bkQ3bmoxUGoxemphalhWUy9YNFQ2Z0poeGYxa2l1UXEybjhuWFBCdGczRjZzZ3FrdG5oRmN5dHVKcjQ3ZjVLRkx6djJHajlMNXBiUy9lMUJRY21PbElTVm9vQUFnZ2dzQ29CQXZxcTJIZ1JBZ2dnMEZNQjM0TythOC91RjhkeGVFZXpKQmJ1c3ZRM2ZTVWgzYXF3SURoY01qaDRWVFVLYmxCb2VxVUZEZlZlS25nb1hHVzcxN0xaRkNxcGxWV2xWcWlyV0xDek92Z2xqcytxb1I1UVV4M1FzUDdiWnVKNFpMcGVuMHhmMlB4dUJ5T3NQVnUvRmoyRkh5OGlZTmoyWmZ1VUxRdkM2R1UvZE5tbGpjZXJQNjVIcjFNRHZVU1BQMVB0MDI5UGJQYVNKd2VGMUhCYWk2MGpTNzlYVnN5bEZqdncwRkNSKzJ4ZjAya1hEMnYvZXQvVTJOaW5kTDg5Wm9zL3NKZmM1RjhFRUVBQWdhd0s1T0ZOSjZ0MmxBc0JCQkRvbFlDRmhuano1WmZ2V2xldDNxLzRzRnZKd25wZUxiaG5hVmxwU0xleVd4M3N2Y21IcWt2MzdINVJIRWZ2MUQwL1pROHFRS1U5ekZtcnF4VnZxY1ZDZHJOM1hiZWVPTmxjVGZmZVpjUGg0MHJsenFuUlVadE5PdzFVdWpsMzRNTFdrOWJkN21kWktKQUdjdnR1VHVhVkxKcXZZZGVKRTA5dlZJTDljcjVPamZCOFBlbHl5OTkyREtVWnlyVy82V2VMNUltNWZjL0RZdlcwMzVVK2pUaFJNSS9ycXRLTjY1MzdUeTJYQkxSZ3Z0QWtEeldqakFnZ2dFQkpCZkx5QmxUUzVxSGFDQ0NBd0pJQzZkOXV0Mk40OENabGl1dlZZMmFYVDdJUDRsbGJWaFBTclE1cEFQZWhkUHZ3N3BkSHpnZDE2L0cwSUdJVHlabEQrank3T3crTFBKYnVYVmRRUEs4S2ZGMVBPRkRSY1BqSDQvaWU2Zkh4aVVXVlN0dllRcnlGcy9rZ3V1aUpCZi9SMnQ2KzdHQ1ZHU3c0ZUxGOTkrN2hJSXArWE5jU3UwNXpsMStqRlA2amRzcUVudWNuOWJOL202K3gxOXRYK2p1bG03bFlGZ1J6aldVL0ZvZkJSK0pLMzBkT0hENTh3dGRndi80ZUhDQ1k1NkkxS1NRQ0NDRFFJcEMzTjZTV29uTVRBUVFRS0xXQUJUVTdELzBET2cvOXJSazhENzIxY2VaQytrVm1kMjk5ZnV0dHE2ZUZLZnNLdGc4Ti9hejZDZFdqSGo3SGZtNEc5VFJrMlYxNVdpeGsyZEI5ZmRmL2kzdlhnMkJjOTM5VjU2NXI1dTNnQzhkcnRXLzQ1OC9YME43RExYUW02MG0reno5YXZGdHBJTGZ2QzRhdEIxZGNzWDc3ek14Vk9tYXpYMUg3V2dYeTUrbjI5Z3Ywa3FlQlBJK2ZnZnp2a3Q5WGtoN3oweHFtLzRkUnBmS2hpU05ISHZGTm5nVHp1ZCtaNHUwRzFBZ0JCQkFvdGtBZTM1eUszU0xVRGdFRUVGaWVnQS9vbXYzODU2SW8vR3h6NkhlV2U1UFhFdEpOeE5jM3BkbXhaL0NYRlV2ZnBobTJmNnc1UkRscjExQlBpN3FTNzJuUXRuQmxNOFBiNGw5dkJ5SjBTNzNyNFIxaEdOOFNWZGQ5NWJIdmZlL29vcFdia1MzMmVsdVhmZVY1c2NxbllkcnFzcUNYL0pMTEw3K2kydGYzQWcxSWVKbHEra0k5L2pRYjVqMDNiRDF4c05la0IzRHkvSmxuWVRCM1R2dTcrMFExckh6dzZPam9JZFV4Q09neDl3ejhnd0FDQ09SZElNOXZWbm0zcC93SUlJREFXZ1FzZE1TYTlmeXA2b0xWcEdQQlJuMVppTW55My9XNWtMNk0yZDFWbFNjc1ZqYzdDT0Y3VDY5UXIrbjA3T3kvVkxYZnJHQzJSeUhXd2xrV3I2SCtoSW9zNDQ0a1lDZkQ0Wi9ZdSs3Y1kxckgzUzRNYm8waWQvdkV6cWQ4UFowSnY3bnUxTXJXa3diMlpXeTI1MDlKeTIwRldkQkx2bjM3OWkyVlRadXVhamgzclhiKzYxVDNxL1RrTFMyOTVFbUl0VitCK2NuZGJIMzVYcHdjTkRtaURrWnB4TDQxWmZocEYwWHYxWHdGQjVzVld6REtKTitWcGZRSUlJQUFBdmwvNDZJTkVVQUFnWElLMk45dkMxL1ZuVU9ESXdvcHo4cEJMN3ExbEpWNVZvRzZMNGdiSDV1b2pmK2FmcmE2MkplbGorVXRTVytoRDNEYnJyeHlhM1R1M0J2VTJmeHZkZDd4TGgvVWc2QUlQZXF0Rm1uUU5pTWRwRkJhczk1MS9hLzY2cjdRSnBjN29LOWJ0Qi9jTTFXdjEzUzdkYkVERzZteHJjdStzckJZbWV4Z2szMjNNaTNvSmQ4NU9QZ2pjZVJlckd0NFg2dG52RmhQdThMWE81M2N6WjV2UXlpVVh2VmEreXJLb29NTituMlFpdXBiYVRiVzMraSs5MDdXYW5jM0swa3dMMHByVXc4RUVFQ2dSY0RlRUZrUVFBQUJCUElwWUtHcnNXTm84TDhvOEw0bTQrZWh0d3JQOWFUcm5QVGZWdUI0bXg2MGNMWFM0QmpxR3VyVnRPZjRzc3N1dTNTMnYvOU5TcXkvTG8rQmxxQnVRYVpJNzNlSjA0VjcxeWMxY2VBOWV0SnRDbmUzVHF4YjkvWGc0WWZQdFRTQVdkaStZK3V4d0cvZnU3bWsyN2R0THVnbDN6STB0TDB2aXA4YnhORkw5ZGkxS3RvejFKYWI3SW5OVXhtSzJVdHVGWnhmL0VFS0MrWjJsK3A5aTFyb2ZaUDEraTNOcC9qN2RYdkJ3WXptWTN4REFBRUVFTWk1UUpFK3NPUzhLU2crQWdnZ3NHSUJDNTZ6TzRhSC81VTZVMzgvUndIZEttbzloSTJ3RWxVVjBqK2drUDUyM1pmMmdDNi9KOTNXWk9GN3Z3TG5nU1RzWGZLVXAveEFwUnE5VlpPci9RdjFNNjh2Mk5EM3BNWUwvMDJEZHJOM1hmT1crOTUxdXg1MmJJODlwTUIraDNxaWIzS3o3aXZIeDhkSEY3N2NoM1g3UEpDdXA5MkIzZHJWMW05ZlZzYlc5cTFzR3hyYVd3bmRDOVVQZnIyZThnSVZmYmU2alMyWk5rTzVCZEZDOXBLTFlzSGlSd1BvZ0lUOVhsdU52eEpHOFhzbVJzZi90dm1zMUpGZ3ZvQ05IeEJBQUlGaUNkaWJKUXNDQ0NDQVFENEZyQ2V0c1czMzdoZHBvcmc3bTFXd2NKV1h2KzBXMG1PRjlJcEMrdnNWMG05UTJTMkVXQjFXRXhMdHRmYmxlMlczNzluejlOQTEzcVkxL1pKQ1R4SldkVkJBT2o0QTZYbEZYQks3Qy9hdUI4ZURVRFBEQjhIdE9wMzUxbzFoZUgrdFZqdTdDTUo4YkQwV3BGZlREcmE2dEMzczlRc0M1ZVdYWDc1cnRsTDVDWjFEZnIyQ3VJYXRCOC9TQVlVK2UxR3psOXl1RzY5dEs2WGJmOG4rbkpkOTJxcXgwaVdwcjRLNUhWalI3OEkzTkJIZ2V5Zkd4ai9UWEZGcWFZNnJiWStWbG9ubkk0QUFBZ2owU0tESWIzZzlJbVd6Q0NDQVFOY0U3SU43UExCNzk4NytLTHhmZVdaUXdjWSt4S2REWUx0V2tEVnM2RUloM1ZiWjJ0TzZrazJrZ2NZSDlaMTc5dXh6Y2VNRytmeXN2ZWtwQk5xbHplejhYbk1xK3Z0Z0dyVE4wdXJiMnJ1dUg0UHZLQU4vUVRhM1ZLTG9ycU5Iam56UDdteFpVcU4wUFJjS2lHWnVsdlpsMjVwdnU2YytkZDNPbVRON1l4ZStKSXFENjdXQzV5dUlYbXI1VzQxaDdXR3hVMjJsNzhVN2wxd1VGMXpNeUg1Zisrd0FraVpPL0s0T250dzRNVmIvV1BOK2U2RWRMUEg3c2YzQWdnQUNDQ0JRZklHaWZ6QXBmZ3RTUXdRUUtMTkEramZjN1JnZS9MeUMxc3ZVKzJZelB1ZXRoL2hDSWQzQ29IMnRka25EWlJMVWg0YXVjYUY3bDV5dXR4VXFHS1k5dS9hOE1peUo1M3p2dW1ZR3QxN3FabEFPZ2xQU3ZrOUd0MVRDeW0zQjJiUDNIenQyN1B1TFlOSjl5K3hzLzdOZ2J1dE5MWFZUMTZzZkhCelN0NS9VRTY3VklZRnJoUDJqQ3FIZXVUazNRTkpyYk51Zlg0Kzl0QXlMZWRrKzZZTzVmbWNmRWNLSHduUG4vcWpGMjV6TmRDMzd2MTdPZ2dBQ0NDQ1FOd0Y3WTJSQkFBRUVFTWl2Z0gyUW45MHh0UHQ5WVZSNWU4N09RMjlWdjFCSXQrZk05OGEydm1MNXR5MFlXdER4NjlHbDZmNmgwdUU3bFEzdDJ0azI5TjB1eldidmgyVUo2bGJ0ZEdrTnloYllyUmZiaGxuYnQwUHEzUDZpd3JYMXJ0LzUyTmpZZDlNWExmNitlL2Z1alkvclNnSjZ0UVh5L1hxTjlaSnZtd3YvdnBkY0I0OXNLVmN2ZVN2Vm9tQWVIOWZSa2Q4NzU5eEhwdXYxU2Y5RXJtWGU2c1Z0QkJCQW9KUUNCUFJTTmp1VlJnQ0JBZ240Z0w1OWFPaG5vekQ0YjgxZTRid0d6UXVGZEFzMjdlaEpOQ3NMNlVsUUg5NzlLdWZDRzNScHRtZjdZZFpKVUUrSHh4ZG9GMWxXVlJMamx0NTFCV2xiSks5bWNXNWFOeC9RazI0UDQrQ1crT3paa1hqZHVtM1ZTdVZGNm5GL21WckhEbmI4aUIrcW5UemZOcHBlQXMwK2E2UkQ0TzMrTWk1MjJiOW1qM21zYy83RC82U2ZQNmg1RitvZVk5KytQbDJOd0hyTTEzb3d5cStPZnhCQUFBRUU4aXRBUU05djIxRnlCQkJBd0FRcytNU1hEZy8vVU1QRkQraTJYWkxLd2xaZS83NWZLS1NyU20wTEwvNmdocTFRUzBVOTZyK2lidVMzS1Z6K3NQVWNxL3ZZZXRUTEd0UVRsZVRmcFh2WGs5N3dJekxhcWdCL2lYOXFHc3JkWEMrNUhTVEs2ejdZYXJDVzIzWmtRNU1TaGhYdFc2R04xRkNQK1I4TDVmM0hhcldIbXl0ZWNOQm9MUnZqdFFnZ2dBQUN4UkRJYXk5TE1mU3BCUUlJSU5BbWdkT25UbjEvMDVZdFA2L0FkSmxXYWIxd0ZqRHp1Q2pENkwvWTJlenVMOWt3c0dYOTJWT25ibFpGMmhuMnpNZldaK0dvY2ViVXFmdTJiTmo0U1JlR3gzVHZNOE5LNVJJRkszdmNlajNMM1BPcmx2QUhLc3pDRHB5b1J6eE83Q3lZTzdkZTdaVGVseHdVc210M3o3OUdMeXZwWXBQZWVUMDc3OTdHSWJnL3IraHFBc2ZxOVk5cGY1dVNpdTE3dG5DZWVlTEF2d2dnZ0FBQ1RRRUNPcnNDQWdnZ2tIOEIrMXMrdTJIckZsMURPbnAyRUN0RUpTRXByelc3VUVodjkwR0hKR3p1Qy9wT2YrZjA0MmVtcCs5YXQzM0hKNk5HL0xnUzZUUFU2emxBVVBlN2tBVjBhNU9vSlh5Ym5kMmIzbGZtQXhtZXd2K1RYTWJQaFZGWXRWeXVVd1ArWGdjMmZtV3lWdi8vVGs5UEg5VnpDT2J6V3R4Q0FBRUVFRmhDZ0lDK0JBcDNJWUFBQWprVHNML2w4Y2F0bHd5cXErNGZLbFRtUGFBYmZ6T2t4dzNyU2Q4NHNDVlV6K050dXIvOTcxdVBORWNjN0F1cWozL3J4Qmx0NS9hTjI3Yi9hWkJNOHY0c0JmVU5QcWpiOE8xOEgvZ3cxM1l0U1dodjE5cnl2eDZOSkFnc21OdEVlNUZ1Mys2aStOZW14c2JmZlhaNnVxYnEyWDVyQnpIb01jOS9XMU1EQkJCQW9LTUM3ZitnMDlIaXNuSUVFRUFBZ1NVRS9CRGtEWnMzOStteDF6WkRaSjdQUTArcmFJT0UwK0h1MTI3WVBIQmVZZWNMZXJBVDcxMHVTSUo2R0dnbTdUTVBuRHgxNXRUMDU3ZGNzdTNQZFc3L2VoWGoyUXJxZlFycTZYbkZCTlMwbGNyOTNTYkNpN1Z2VkMyWTY1ZHVST0g4MXpYNTI5dlBucHcrSkJvTDViYS9Fc3pMdlo5UWV3UVFRR0RaQXAzNGtMUHNqZk5FQkJCQUFJRzJDUGlBWGgwWU9GdUp3bDlVcU4yaXRkb1FaQXNIZVYrc0o5MW1FbmZxU2IrK3d5RTlzVG84WjFjNWZmTGs1TmxUMDMrM2Z1dld2NHFjMjZZblBGTmhMSEZOaGpNWHdUanYrMGd2eW04VDZEVjBCWUNxN1E4NmF2TXQ3VFZ2MFZEMmY2VTVFeDVVZ1d5dnRlSHM5bnVZbkE2Z0d5d0lJSUFBQWdnOG1RQUIvY21FZUJ3QkJCREloMEI0Zm5yNnpNYXRXLzZCRXUwUHFSZFB3OXdMRWRCTjM4Sk9kME82VFlvMmY1Q2o4dmlwVTQ5cTZQdGY2alNDejJuQ3I4dDFFT1JwemFITXlhV3hrc01JU1RsOVlmbW5vQUlXdHUxNjdsVk5KcWlETSs2d2RzOTNUYTViLzMrZFBYSmtwRmxuZ25rVGdtOElJSUFBQWlzWElLQ3YzSXhYSUlBQUFsa1U4S0ZnNDVhQnA2dEg3OFYrdHUxaW5TL3QrOUhuZXRLM2Fyajd5WTROZDI5dDN6U28yL3RscE43Um1vYStmMmJqd01BZCtubVB6am0rc2huVTdZQ0lQWmNlOVZhOTR0eTJ0azJDZVJSVk5QdmJZenJaNGQxdS9ZYlhUaDArZkdjd05kVUlkR3BFY0hqdXdFNXhhazVORUVBQUFRUzZLa0JBN3lvM0cwTUFBUVE2Sm1EQk1ONndaZXNsU3JLdlZFeHdCZXBCVDlIbWU5TERMZzEzVDdlYzlLaGJNUXBmZkFBQU44OUpSRUZVU0xQM3pWRG53aC9TMFBjLzNyaDE4MzBhZkgrbGd2cHdFdFQ5UkhJRTlYbTN2TjlLZzdsZHk5emEvcVIyaGQ5ZEY3dlhQRmF2Zi83czFOUzVZTisrdnVDUlI1ekNPVVBaODk3YWxCOEJCQkRJZ0FBQlBRT05RQkVRUUFDQk5nbTRnYTFiejhmT2FhSzRZSjNXYWVHaWFNT3VGL2FrZDNiaXVLV2F4VXh0c1JFTGdYclRIMVN2K3NjM2J0MzZiVDN3TklXNHkzVzNadkgyUWQyZVVqUi9xMU01bHFRTmZUQlhqL2s1OVpoL1ZGY3dmTTFVZmZ5dnBuVTZTYlBIUEZBNHQ5TWNXQkJBQUFFRUVHaUxBQjhjMnNMSVNoQkFBSUhNQ0ZSMkRnM2VvM09rbjZONTFTdzRGUFZBckFWbFhkWktFM1ExNG5kTTF1dnZhOWJWZWpIVEVLMmJIVjhzcU52UVoxdXFPNGNIWDZkTS9oYjVYK2xpWDhRWjNXOXR3TkIzRThyK1ltTlBHanFzWXBkTHMrdVkyMGlVUHc0YTdnT1Q0K00yK1pzdC9uUVNmYWZIM0hQd0R3SUlJSUJBT3dXSytzR3RuVWFzQ3dFRUVNaUxnUDFOYjJ6WXV1VUZPdjM4cWtEZGZRcUtSUTJHdmU1SlQvY0pDMm4rMG13YTRqeXJIdld2RG16WThBbFhxUnpYL1RiaisxYjFwbHRaTGFoYlczQmdYQWlaWEp3T3ROaUYvWFF0Yy8ycjYvdTV6NFlWOTB1VG8rTWYxU2tORXlxekJYTnJQeTZabHNrR3BGQUlJSUJBTVFRSTZNVm9SMnFCQUFJSW1JRDlUWTgxMC9oVGxDNStXajJCUlR3UHZiV2xrN0RielV1d3RXNjk5WFp5L3JHVnAzcjY5T2x6bXZIOVM3cnMzYWVxR2hxdHNHZlhVTjlFVUc4Rnk5UnRYY3ZjUm1PRWRpM3pVRGR2aW9Mb1Z5Zkdhcjl6NXVUMEl5cXAvVjdad1JXQ2VhYWFqY0lnZ0FBQ3hSUWdvQmV6WGFrVkFnaVVVOEFDb3Rzd01LQ2VQdmM2OWZWWnFMQngxa21RTGFhSnIvUGM3TzREVzg3cG5QQTdWTlYwR0hLM2EyMDk2cEVtRHF1ZWYraWg3NStabnI1dHcrYk5uOVlCRXl2blZRcnE2M3hRVDg1dkx1cm9obTZicjNaN2FUQzM0ZXhxQzNkbjZNTFhUOVRxLzE0SFdFYTFVb0w1YW1WNUhRSUlJSURBcWdXSy9LRnQxU2k4RUFFRUVNaXBnQVcrZUdCd2NFZC9HTnlubnR0aGhjRWluNGZlMmt6ejU2Uzd4cTlQam8zL2dSNjBrTjdMWGs5ckQvdnk1Nmp2R2hyNllSWHliZXFoL1JVRjlZcUxkWks2dFUrb0lkWEZQb2lpNm1WcVVURFh1ZVZSWkQzbXVobmZxNU1RUGpBMVd2K0xaaW50czVHMVNUcTNRS1lLVDJFUVFBQUJCSW90UUVBdmR2dFNPd1FRS0pkQStqZmQ3UmdhK2wvS0hxL1FSR1YyWHEwRjFUSXMvbnp3NWpEbE4weU8xZjlJbGJhNjl6cG9wUUU4Q2VxRGcxZTVLTGhCRWZHVlNVQjBzY1k1MkhYVXk5Sk92ZG9YNVN6ck5Kakg4Y05SR0wzdjJOallwMVNnWkM2QkpKajM4cUJPcjJ6WUxnSUlJSUJBUmdUc3lENExBZ2dnZ0VBeEJLd1gyY0tnK21QZFY5VXpxeHQyVjJrV2UwOXJUcndkL3FGbVZIKzlmclpRYk1FM1BYaWhtMTFmTFBCWk9heHRLc2ZxOWZzbnh1cXZxa1R1eFNydDM5dndhanYvV1kvWjgreUxwYjBDRnI3OUpIMWhwVktWK1pnR0w3eHBvTnIzVElYelQrcXhPTmp2OXhIN1piRjJLdFV2amVyTGdnQUNDQ0NRSVlIa2cxeUdDa1JSRUVBQUFRVFdKR0FoTmQ2NFpldFdKZEpYNmJhRmpUSWRqTFVnYmlFM1V2RDlSeHUzRGh6VnpPcDM2MmNMd0JiVWVybFlXOWlYdmZkR3AwOU9IMUhaUHIxKzY5WXZhMmF5SDFCNWY5REN1cDVobC9rcVc3dDFvbDNtVGlHd1V3cDB6YlFKM2ZHK3VIL2RyeHcvY3VUMkV5ZE96QWI3Z3I3Z0VWa2Y3dm0rMFluNnMwNEVFRUFBZ1J3SzlMSkhJWWRjRkJrQkJCREl2SUFQNkpmdDJYUGxiTng0UUtYZHJDOExlMlg3ZTI5aDNFSzZWZi8vVm8vMVIzVWo3YVUyanl3czZVRURmK0JBcHlYOE00MThlS2ZtazN1dUwyQWM2L1FFWHdFT3BxK3N0ZEpnWGxVd0QzU3UvN1F1Wi9EUlNyWDZ1OGNPSDM2MHVhcXM3UXNycXlIUFJnQUJCQkFvckVEWlByQVZ0aUdwR0FJSUlMQklvTEp6YU5DR3VWK2xNZC9XbzF6R2tPZnJ2VVJJOStlQ0wvTHExWS8yUG14dFkyWDF1WHpIbnNGZlVuL3VEUXFYUDJwem1lbDY5aGJVN2NCTG1VWkNxTHFyV0pMWjhaTmc3cHlHdGJ1UFY4UEtqVWRIUncvNXRWbVArWWkzN3ZWb2lsVlVqcGNnZ0FBQ0NKUkJvSXdmMk1yUXJ0UVJBUVRLTGVBRDM0YXRXMzVTdWU0cUJUeE5RT1lEWHRsVS9HZ0NWVm9aL1FuRDNiUFNpMjV0a29aRjM2Tis5dVQwQTJlSDkzeHN3K09QUDZZZTlhZUhVV1c3enB1MklHL25VZHQzRHE0TG9XVlJqN2svTFNEUU9lWVZtNFZBUDMvR1JkRXZUbzNWUG5YNjVNbmplcTdaQmhyT1BuY2d4UC9NUHdnZ2dBQUNDR1JNZ0lDZXNRYWhPQWdnZ0VBYkJPeHZlN3h4NjViZENxWS9yYkJpTTRTWHRmZlZ3cXlGc2l5ZWs3NjRxUzJvVzNtcndiRmpNN3FlKzkwYkxyM3NQd2N6czZkMDM3UFZvejdRRXRTdFBRbnF6VW4xTk1sZXhRN0R5T1J2ZEN6cU5aTzEydStmUFhueW1MZE1uQWptd21CQkFBRUVFTWkrQUFFOSsyMUVDUkZBQUlHVkNsaFFjUnNHdHFqWDBMMVdNYzcrMWx1UGNWa0RYVjU2MHROMlRvTDZ2bjE5Wnc4ZVBLdWdmdWZXalpzKzFZakNHWVZRQytvYkNlbzY2S0orY2d2bU5qeENuZWEzYUtLOTEwM1c2dTgvYytyVXVDQnRuN2QySjVpbmV4WGZFVUFBQVFSeUlWRFdEMnU1YUJ3S2lRQUNDS3hTd0FmU2djSEJIZjFoZUw5aStaQUNuUVdWc2grVTlRWkpSK3VDaWVPeWRFNzY0aWFQTk5ONFJlZE4yL0QyWU52dTNYczBGT0J0Nml2K0Y3cWU5M3BOZ0taREwzYXRlMytadHNXdkxlTFBhVEQzUTlZVnpMOFNSdTQ5RTZQamY5dXNiTHFQVzF1eklJQUFBZ2dna0R1QjlJMHNkd1dud0FnZ2dBQUNGeFVJejA5UG45bTBaY3ZMRmVhZVd2Smg3aW5Vd3A3MExWdnE2bTM5YXFDZTZ1Q1JSOUx6d05Qblp1VzcwM25UVmpZcmUrWHg2ZW5qWjZlblA3ZGg4OEJmNnNETGdPNTdWdk84NjFodGJKZG5zd1B2UlR6NGJnYitRSVJHRUVRNnkvenJZUmkvYWJJMi9xWXpKNmUvM2F5emhYWjZ6SVhBZ2dBQ0NDQ1FYd0VDZW43YmpwSWpnQUFDRnhPd3NCSnYyRHJ3WXpvbjl5VjJyU24xc2xySUsvdGk0ZFZDWENTUG45bThkZk9EWng3ODl0ZWExOFBPYWtpM05yTlRGS3g4OXI1ZFVVaC83T3lwNmIvZWRNbm12M2R4c0ZOMWVicEdCbGo3cGhPbUZhV3RyZDVwTUs4b21CL1NnUFliSnNmcXI5YzE1TCtteDJ5eGZUMzE4WGZ3RHdJSUlJQUFBbmtWS01vYmVGNzlLVGNDQ0NEUVdRRVhqbWdJdFBwVS9RUmFuZDFXZnRadUlWZERwVzMydk9qUGR1MFpmS1VmUW02WDRNcitZZ2NYYkVpK0Qrb1RvNCtNNkx6cm45WFJocGNvbWQ5a0lWMy9WWDF2ZW5JZ0l2czFXcnFFZGpEQ3oxcXZIdk0rdFZWZEI1bmV2RDZPbnpreFd2K1BlbXcyMk4rY21UM3hzSURPZ2dBQ0NDQ0FRTzRGaWpnTUx2ZU5RZ1VRUUFDQk5nallBZGg0NjU0OVYxYmp4Z082dlZsZkZtTDR1eStFNW1KaFY3Ti8yeFR2d2F1T2pkYi93dmVrTjgvM1RwK1U4ZS9wU0RpclM3QnRhT2lub3NDOVMwSDloZmF6Qms1WTc3TzFlZm84dXp2TGkrMmpkZ0NpVDhIY3luOWNvL1kvZk02NTM1K3UxeWQ5d1pOcm1kdHpDT1VlaEg4UVFBQUJCSW9rd0FlMUlyVW1kVUVBQVFTZUtCRHRHQjY4UnlIbnVacFFLd21rVDN4T21lOXBoblJkaHk1MGVRM3AxbjRMenIvZVByejdWWkVMMzZhSjVKNWpsd1VQa3FCdUIyMnlPbkp1Y1RBL284TUs2aW1QYnB3WUc3TloyUU0vVjhESUNNSGNZL0FQQWdnZ2dFQlJCZkp5Ukwyby90UUxBUVFRNktTQS9ZMjM2NkgvcEVZK1AwY2hqZlBRbjZodGdkVkNlcVNFK1BPYkw5bnlyVE1QVG44OUIrZWtMNjZKRFFtM2crNytmR3lkbi80Tm5hUDk4ZlVEVzBiVkQvMWpta2h1bDM4OG1mSGRYcHVkQS9SSm1TcnFNYS9ZalBTNlhOb25OV1QvMVJPMSttYzBpZDkwY3hLL1FCUDUrVkVDVm5nV0JCQkFBQUVFaWlwQVFDOXF5MUl2QkJCQUlCbldIRzhhMkhLNXVvZi9rUVlFTzhXeXJQYWc5cks5V2tKNnFKQStrTmVRYm9iSlJIZDJmdmJob0tGcnFOKzNmY3ZXajU5M3diRXdjTTlRVUw5RUlkakN1VCsvVzk5N0ZkVFR5ZXdDSDh5dElMSDdzemdNWHoxVnEzMWN3WHhLZDluQmhqU1lNNXpkWS9BUEFnZ2dnRURSQlhyMXhseDBWK3FIQUFJSVpFSEFEc0kyZGd3Ti9iaE8xNzFMdCsxdnZnVWQvdllMWVltbE9kdzkxK2VrdDFZcjFFaUFhbm9OOVV1dXVPS1NhSGIyalFycWIxUW8zdUd2b1o0RWRRdkMzZHduekZsbnhpZFhGZEFRL0wvVEtQejNUdFhyWDI0VzNvOEMwRzE2ekpzZ2ZFTUFBUVFRS0k5QU45K1F5Nk5LVFJGQUFJRnNDRmpQc0UwVXQwMFR4ZDJ2U0xSSHZhZEpDTTFHK2JKWWltWkl6LzA1NmEyMlliQmZrOFFkOEpPdkJaZis0S1dYemM3MC80YUMrdXNWMUFlYVFiMWJCMjZjSlhNcm5JTDVBWjFZOEo3SjBmR2JtNFZOUi9VUnpGdGJqOXNJSUlBQUFxVVNJS0NYcXJtcExBSUlsRXdnL1J2dmRnNE5mVTU5cEQvbFlxZFp2WnREaDB1R3NZTHFOa042UzA5Nk10emFKaWpMOHhJcHFFZHBVTDlNTS93M1hPT3Q2cjMrVlZXcVgxK2REdW5wK3U5VEIvcHZUZFpxZjlYRXRBTko5cFYzMzJaMStJWUFBZ2dnZ01EcUJld05rUVVCQkJCQW9KZ0NGb2lTWHNrb3VFYzk2UHJSN21KNUVnRi9hb0JSeFM3OGMzK2RkQXVQKy9ibDRUcnBGNnRhM0F6bjl0NWZQVG82ZW1oaXJQNTZuUXorRmQrcDdUbzZwRHdKNTJFWVY0UHdsNXZoM0p4dE9MdWROMDg0RndJTEFnZ2dnQUFDQkhUMkFRUVFRS0FFQXBvWDdGNk5LYll6Zi9tN3Y3ejJib1owcDVBZS9MbGRYendZR1prSjl1NjFudWE4TDJrZzlwT3c2Uko4M1J0UzdqU2d2bEx4MnhXaUhURWltT2Q5YjZMOENDQ0FBQUp0RmVDRFdsczVXUmtDQ0NDUU9RRS9xM2MxaXI2bWMzNm5WVHI3dTA4Myt2S2FhYTRuWFpjcSt4ODdCd2V2RFE0ZVBGK0FudlMwOW1rd1QwK0ZTTy92eFBmNWJZUzZrRnF5cE44N3NUM1dpUUFDQ0NDQVFDNEZDT2k1YkRZS2pRQUNDQ3hid0FmMG8wZU9ITkVJOSs4MDUrZnk5eTE3RGVWK29xN043WHQ1cTdvNDJlZDlTTGVlOVB3UGQyOXQxVzRFNVc1c283Vk8zRVlBQVFRUVFDQ1hBZ1QwWERZYmhVWUFBUVJXSkdBOXdiR0d1ZHRNN243NjdCVzl1dXhQdGtuMTVrUDZUUVVONldWdlplcVBBQUlJSUlCQUpnUUk2SmxvQmdxQkFBSUlkRlRBRHkvV3lPSjdrcTBrbDducTZCYUx0dkw1a0Y0cGNFOTZKMXR0Zm9oN0o3ZkN1aEZBQUFFRUVNaTVBQUU5NXcxSThSRkFBSUZsQ1BqaHhUWlJuS2JvaWpVMWwvV29NK1I0R1hBTG5qSWYwbTI0T3ozcEMzQ2U5QWYydHljbDRna0lJSUFBQWdna2t3WGhnQUFDQ0NCUWJBRWZqbWFDNEdGVnM1WmNiczFmMnFyWXRlNUU3ZVpET2ozcEsvT2xCMzFsWGp3YkFRUVFRS0NrQXZTZ2w3VGhxVFlDQ0pSS3dBSjZlS3BXbTlJbHRRNzZwS1NMWDVkS29KMlZuUS9wUlprNHJodmhtZjJ0bmZzZzYwSUFBUVFRS0t3QUFiMndUVXZGRUVBQWdUa0JDMGMyckYweDNYMDE2VUVuTDNtUDFmNVRySkRlaloyaEd3Y0JWdHVhdkE0QkJCQkFBSUhNQ0JEUU05TVVGQVFCQkJEb3ZJQTZ6a2NDcHp3V2h2ejlYeXYzd3BET09la1g5K3pHUVlDTGw0QkhFVUFBQVFRUXlJRUFIOUJ5MEVnVUVRRUVFR2lEZ0wvMmVUWHErNXB6N3Z0YW4vMzlKelN0RlhZK3BDZm5wQThON1Evc091bDc5L2F2ZGRWZGZIMDNlcmU3c1kwdWtyRXBCQkJBQUFFRU9pTkFRTytNSzJ0RkFBRUVzaWJnQS9yUkkwY09xL2Y4d1RDNTBwcS9MMnNGelYxNTBwQWVobFdOVVBpZk80WXZmMzV3OE9ENUhJWDBiaHlvNmNZMmNyZnJVR0FFRUVBQUFRUVdDeERRRjR2d013SUlJRkJjQVg5NXRkQUY5L3Z6ME5XVlh0eXFkcmxtUHFTN0dibXVEMXpsMXAzRFQzbGV6a0o2cDhIb1FlKzBNT3RIQUFFRUVDaUVBQUc5RU0xSUpSQkFBSUZsQ2FRaDZaN2syVWszK3JKZXlaT1dJOUFYeFBHc1F2cG01NklEaFBRRlpCd01Xc0RCRHdnZ2dBQUNDQ3d0UUVCZjJvVjdFVUFBZ1NJS0pDRXBETzkxY1J3SG9aL1puV0h1N1d4cERYUFhKSHpXazc2SmtMNEFOajA0dE9CT2ZrQUFBUVFRUUFDQmhRSUU5SVVlL0lRQUFnZ1VXY0FIOU5sSzVXR0Y4MUUvekoySjRqclIzbWxQZWw1Q2VqZkNNejNvbmRqVFdDY0NDQ0NBUU9FRUNPaUZhMUlxaEFBQ0NGeFF3RUpTZU9MdzRSTTZELzJnVDJXYTFleUN6K2FCMVF2a3F5ZTlHL3RBTnc0Q3JMNjllQ1VDQ0NDQUFBSVpFU0NnWjZRaEtBWUNDQ0RRQlFFTFlqWlJuSmJ3bnFRSHZSdlpMTmxpQ2YvTlcwOTZKNXVJSGEyVHVxd2JBUVFRUUtBd0FnVDB3alFsRlVFQUFRUldJQkRGOStwY2FlWDBrUGVCRmJDdCtLbjU2a2xmY2ZWVzhBSjYwRmVBeFZNUlFBQUJCTW9yd0FlejhyWTlOVWNBZ1hJSytFbmhacVA0NjRybnAwUmc3d1AwYm5aMlgxaTZKMzNmdnI3T2JqWlRhMmNmeTFSelVCZ0VFRUFBZ2F3S0VOQ3oyaktVQ3dFRUVPaU1nQS9vSnc0L2VrU3IvM2FZWEdtTm1kdzdZejIvMXFWNjBrZEdab0x5aEhSNjBPZjNCbTRoZ0FBQ0NDQndRUUVDK2dWcGVBQUJCQkFvcklDZGgrNDBVZHg5L2p4MFoyUGRXYm9nc0tBbmZkdlEwTE9DOG9SMDlyRXU3R0JzQWdFRUVFQWcvd0lFOVB5M0lUVkFBQUVFVmlxUTltWitOWGxoMG8yKzBwWHcvRlVJTkh2U05YSmhVeFM0bTNiczN2MmpKUW5wNlQ2M0NqUmVnZ0FDQ0NDQVFIa0VDT2psYVd0cWlnQUNDS1FDU1c5bUdON3I0ampXTmRGOWozcjZJTjg3THRBbjkxbUY5RXZES0x3OUF5RzlHK0daSHZTTzcxWnNBQUVFRUVDZ0NBSUU5Q0swSW5WQUFBRUVWaWJndzlKc3BmS3d3dmxvY3JtMWdQUFFWMmE0dG1lckp6MTJia2IybDRhVjhFQ1BRM28zd25NM0RnS3NyVTE0TlFJSUlJQUFBaGtRSUtCbm9CRW9BZ0lJSU5CbEFRdGs0WW5EaDAvb1BQU0RQams1Wm5MdmNodm8yRWpRcDlQL1o5UVVsMldrSjcyVEJOMDRDTkRKOHJOdUJCQkFBQUVFdWlKQVFPOEtNeHRCQUFFRU1pVmdZY21HdFdzSjcwbDYwTWxQaVVmWC8rM0xVRTk2Snl0UEQzb25kVmszQWdnZ2dFQmhCQWpvaFdsS0tvSUFBZ2lzUWlCeUk0Rk40aDZHdkIrc2dxOGRMeWxKVHpwSGdOcXhzN0FPQkJCQUFJSENDL0NCclBCTlRBVVJRQUNCSlFYOE9lZXpVZU1iU2s2bjlBeDdQeUJFTFVuVmxUdVg3a21mRytuUWxUSjBjaVAwb0hkU2wzVWpnQUFDQ0JSR2dJQmVtS2FrSWdnZ2dNQ0tCSHhBUDNINDBjT0s1UTlxUm5GN01SUEZyWWl3dlU5ZTBKT3VpZU8yRFE4L1ExdG82S3NJNzlVYy9HbnY3c0xhRUVBQUFRUUtLbENFTi8yQ05nM1ZRZ0FCQkRvdTRNOURkNkc3ejUrSHJobkxPcjVGTnZCa0FqWngzRG1kY1hDWnJwUCsrdWFUTy8xZTNZM2U3VzVzNDhsc2VSd0JCQkJBQUlITUMzVDZUVC96QUJRUUFRUVFLTEZBRXBwYytOWEVJT2xHTDdGSE5xcnVYTVdPbElSQnFCbmV1N0owNDhCTU43YlJGU3cyZ2dBQ0NDQ0FRQ2NGQ09pZDFHWGRDQ0NBUUxZRmZHaUtLdkc5TG80YlNvVFdvODR3OTJ5M1dWNUxSdzk2WGx1T2NpT0FBQUlJZEZXQWdONVZiamFHQUFJSVpFckFCL1JHWmYxMzFWdDdKTG5jR2hQRlphV0ZOTlM5U0tHV0h2U3M3RmlVQXdFRUVFQWcwd0lFOUV3M0Q0VkRBQUVFT2lwZ29TazhmdWpRU1JlNGIvbzBxQnNkM1NJclJ3QUJCQkJBQUFFRUVMaWdBQUg5Z2pROGdBQUNDQlJld01LNG55aE9aNS9mbmZTZ2s4OEwzK3BVRUFFRUVFQUFBUVF5SzBCQXoyelRVREFFRUVDZ2V3S2hDMGNDbThSZDA0ZDNiNnRzS1NNQzNSeEtIMnJvUHZ0WVJocWVZaUNBQUFJSVpFK0FOOG5zdFFrbFFnQUJCTG9wNENlRm0yazBEaXFlbjlTRzdYMkJidlJ1dGtEdnR0WDhEQkRXYmZTRXpuanYrQVNCWVJqT0JyT3ozMjlXbWYyc2QyM1BsaEZBQUFFRU1pcEFRTTlvdzFBc0JCQkFvRXNDUHBTZGVPU1JJNHJsRHlsQTJXWTdIdFM2VkRjMnN4eUJLUDdQTm5wQ0xkL2Z3YlkvSDBiKzJNOWZUOVRyMzlaMjdBZjJzK1cwRDg5QkFBRUVFQ2lWQUFHOVZNMU5aUkZBQUlFbEJmeDU2QzUwOS9uejBEVUdlY2xuY1dmUkJCcXFVR1Z5ZFB6bXdNVnZiWjdkWUczZjF1Q3NGVm80WDZkTCtkMVZPVC83MnFJaFVoOEVFRUFBQVFUYUtVQkFiNmNtNjBJQUFRVHlLZUM3elNNN0Q5MHZTVGQ2UHF0Q3FWY29ZQ0U5bXFpTmYxQUIraDBhUWVFUDF1aStkb1gwbVNnTSs3WHVBeHVDOExxalI0K2UxcnB0RysxYXYxYkZnZ0FDQ0NDQVFIRUVxc1dwQ2pWQkFBRUVFRmlsUU5KalhvbEhYQ05zYUt4ekdxQTRpTHRLMEp5OXpOcS9NbG12djIvSDRHQVFSdUY3TllqQ0FyUjlyWG9mc0o3ekpKeTdtN1h1VnpUWFo1ODdadlhGZ2dBQ0NDQ0FBQUpMQ0t6NmpYZUpkWEVYQWdnZ2dFQStCWHhBYjFUV2Z6Y013dEhrY210TUZKZlBwbHhWcWEzOUxZejdrTzVpWnozcDZlZUQxZlowTjN2T0NlZXJhaEZlaEFBQ0NDQlFXb0gwRGJpMEFGUWNBUVFRUU1DSDhmRDRvVU1uWGVBTyt2SHV1b0ZMcVFUYUZ0SzFvdk1LK0gwSyt2U2NsMm9Yb3JJSUlJQUFBdTBRSUtDM1E1RjFJSUFBQXZrV3NIRG16ejFXeCtuZFNRODYrVHpmVGJxcTByY2pwTTlFVWFSenpnbm5xMm9CWG9RQUFnZ2dVSG9CQW5ycGR3RUFFRUFBZ1htQjBMa1JQNG43L0JEbitRZTVWUWFCVllkMHZYQkdzN1Ziei9sZmNjNTVHWFlWNm9nQUFnZ2cwQWtCQW5vblZGa25BZ2dna0Q4QmY2N3hUS054VUVVL3BTOTdmNkFiUFgvdDJJNFNyenlrT3plcm52TytvQkgvMldTdDlzOVVDSDlPdTc0eklWdzdXb1IxSUlBQUFnaVVSb0NBWHBxbXBxSUlJSURBUlFWOFFEL3h5Q05IRk11L3FYT0lMWjZ2ZG9Ld2kyNklCM01oOEdRaDNSNzNYL3BuSnF4VXFrSHNQak5Sci8rZnpkclpLUk4yQ1RjV0JCQkFBQUVFRUZpQkFBRjlCVmc4RlFFRUVDaTRnRDhQUFFqZHZjM3owQzJBc1pSWHdOcmY5NFRiSmRoYVpuZHZIVjBSKzU1ekMrZTEyaTgwcVFqbjVkMW5xRGtDQ0NDQXdCb0ZDT2hyQk9UbENDQ0FRSUVFbWhPNFJ5T0JzMnhtM2Vnc0pSZFlLcVNMeEYrR1RRTXR3b3FDKzZjSjV5WGZTNmcrQWdnZ2dFRGJCS3B0V3hNclFnQUJCQkRJdTREdk1hODBHdmZGVVRnYmhJRzlSMWdQS2dkejg5NnlheXQvR3RKRDYwbmZQamg0SUlpaWdUQjJEWnRRVVBjZGFLNmVudk8xT2ZOcUJCQkFBQUVFL0ljdkdCQkFBQUVFRURBQkg5RGQrZk1QaCt2WEhYWmgrRlQxcFB2NzRDbTlRTG9mUkZQMStwZVgwTENET0p4enZnUU1keUdBQUFJSUlMQVNBWHBGVnFMRmN4RkFBSUZpQzFnSUN5Y21KcVpkcUluaXJLNHVDZTNGcmphMVc0R0FQeWRkejdmUkZkWmpidDl0VjJGQ1FTR3dJSUFBQWdnZ3NGWUJBdnBhQlhrOUFnZ2dVQndCQytnV3VteTV1emxSWFBJVC95SXdMMkE5NVhiNXRQUjcycnMrL3d4dUlZQUFBZ2dnZ01DcUJBam9xMkxqUlFnZ2dFQ3hCVndRZmRWUEZCZjZ5Y0NLWFZscWh3QUNDQ0NBQUFJSVpFU0FnSjZSaHFBWUNDQ0FRRVlFa3FIS2pjWTNkZmI1Q1pYSjNpZm9JYzFJNDFBTUJCQkFBQUVFRUNpMkFBRzkyTzFMN1JCQUFJR1ZDdmlBUGpVK1BxWVhQcVRMYUZrODUvemlsU3J5ZkFRUVFBQUJCQkJBWUJVQ0JQUlZvUEVTQkJCQW9PQUN5WG5vb1J0cG5vZE9EM3JCRzV6cUlZQUFBZ2dnZ0VBMkJBam8yV2dIU29FQUFnaGtTY0JQNEI0RjBZZy9EejFKNlZrcUgyVkJBQUVFRUVBQUFRUUtLVUJBTDJTelVpa0VFRUJnVFFKSmozbWpjWjh1Z3o2cmkyaFpqenJEM05kRXlvc1JRQUFCQkJCQUFJRW5GeUNnUDdrUnowQUFBUVRLSnVBRCtyb29lbEFWZjlpZmg4NUVjV1hiQjZndkFnZ2dnQUFDQ1BSQWdJRGVBM1EyaVFBQ0NHUmN3SHJMcTdWYTdheDZ6LytySCtHdXJ2U01sNW5pSVlBQUFnZ2dnQUFDdVJjZ29PZStDYWtBQWdnZzBCRUJQNlE5YnJqL29teCtTaUc5cXEwUTBqdEN6VW9SUUFBQkJCQkFBSUZFZ0lET25vQUFBZ2dnc0pTQTcwVS9QajQrR3JyZ0w4TEl2MTNNTHZWRTdrTUFBUVFRUUFBQkJCQm9qd0FCdlQyT3JBVUJCQkFvb2tEU1l4NDFQdXJpdUtFSzl1bUxYdlFpdGpSMVFnQUJCQkJBQUlGTUNCRFFNOUVNRkFJQkJCRElwSUQxb2tjVG80K01CRUg0TjM2eU9PY3NxTE1nZ0FBQ0NDQ0FBQUlJZEVDQWdONEJWRmFKQUFJSUZFVEFlc3Y5KzRRdWpQNFIzM1VlaHJ4dkZLUnhxUVlDQ0NDQUFBSUlaRStBRDFyWmF4TktoQUFDQ0dSSndNNDdqeVpxdFFNYTNYNlRldEdqd0s2TnpvSUFBZ2dnZ0FBQ0NDRFFkZ0VDZXR0SldTRUNDQ0JRT0FIL1h1RkM5MEZmc3pDczZEdm5vaGV1bWFrUUFnZ2dnQUFDQ1BSYWdJRGU2eFpnK3dnZ2dFRDJCZXk4ODNCcWRQd21wZkxQcXhjOVZEem5YUFRzdHhzbFJBQUJCQkJBQUlHY0NSRFFjOVpnRkJjQkJCRG9nWUQxbGx1dmVlREMrRWEvL1RBNU45M2Y1aDhFRUVBQUFRUVFRQUNCdGdnUTBOdkN5RW9RUUFDQndndjRjOUd0RjEzbm9IK09jOUVMMzk1VUVBRUVFRUFBQVFSNklFQkE3d0U2bTBRQUFRUnlLdURmTTJJWHZOdFpuM29ZVnZVdjU2TG50REVwTmdJSUlJQUFBZ2hrVDRDQW5yMDJvVVFJSUlCQVZnV3NGNzB5VmE5L1daZGQrMHdZNlMyRTY2Sm50YTBvRndJSUlJQUFBZ2prVUlDQW5zTkdvOGdJSUlCQXJ3WGlLSHEzd3ZrNWV0RjczUkpzSHdFRUVFQUFBUVNLSkVCQUwxSnJVaGNFRUVDZzh3STJlM3QxYW5UMG0rbysvMFBmaXg0RVhCZTk4KzVzQVFFRUVFQUFBUVJLSUVCQUwwRWpVMFVFRUVDZ3pRS3hyYTl5ZnZiOUxvNGYwOG5vZmZyUjM5Zm03YkE2QkJCQUFBRUVFRUNnVkFJRTlGSTFONVZGQUFFRTJpSmdZYng2OU9oUkMrZnZDU09ka2U0Y0FiMHR0S3dFQVFRUVFBQUJCTW9zUUVBdmMrdFRkd1FRUUdEMUFqYlVQWmlzMVQ2aWJINnZocnBYTlorN3YyLzFxK1NWQ0NDQUFBSUlJSUJBdVFVSTZPVnVmMnFQQUFJSXJGYkFMcS9tTDdQbWd1Z2QvbHByWWFDdWRDNjd0bHBRWG9jQUFnZ2dnQUFDQ0JEUTJRY1FRQUFCQkZZcmtGeDJiV3pzL3crZHYreWF2YWN3WWR4cU5Ya2RBZ2dnZ0FBQ0NKUmVnSUJlK2wwQUFBUVFRR0JOQXI3enZCSEhiM2ZPbmRDYW1EQnVUWnk4R0FFRUVFQUFBUVRLTEVCQUwzUHJVM2NFRUVCZzdRSnhzRzlmMy9IeDhkRXdjUC9CWDNhTkNlUFdyc29hRUVBQUFRUVFRS0NVQWdUMFVqWTdsVVlBQVFUYUtEQXk0b2UxVDR6VlA2VExydDJWVEJqbkdPcmVSbUpXaFFBQ0NDQ0FBQUxsRUNDZ2w2T2RxU1VDQ0NEUVNZRjB3amhkYlMzNHR4cnFycXV2aFg0Q3VVNXVsSFVqZ0FBQ0NDQ0FBQUpGRXlDZ0Y2MUZxUThDQ0NEUUd3SHJNYTlPMWV0M2hXRjRveC9xem9SeHZXa0p0b29BQWdnZ2dBQUN1UlVnb09lMjZTZzRBZ2dna0RtQjJFcTAzZ1gvVHFlaGYwdEJ2VThYWFdPb2UrYWFpUUloZ0FBQ0NDQ0FRRllGQ09oWmJSbktoUUFDQ09SUHdBSjZ0VmFyblExQzkwWmYvREN3OXhrLzAzditxa09KRVVBQUFRUVFRQUNCN2dvUTBMdnJ6ZFlRUUFDQm9ndjRvZTZUbytNM3U4RDlvWWE2Mi9zTXZlaEZiM1hxaHdBQ0NDQ0FBQUp0RVNDZ3Q0V1JsU0NBQUFJSXRBajRvZTdyR3U0dG10WDlRWWE2dDhod0V3RUVFRUFBQVFRUXVJZ0FBZjBpT0R5RUFBSUlJTEFxQVQvVWZYeDgvRXpvZ2pmNDhlMWhVTkdhR09xK0trNWVoQUFDQ0NDQUFBSmxFU0NnbDZXbHFTY0NDQ0RRWFFFLzFIMmlYci9OaGNFSE5kUTkxT1laNnQ3ZE5tQnJDQ0NBQUFJSUlKQXpBUUo2emhxTTRpS0FBQUk1RXZCRDNhZEdhKzhJWEh4dk10VGRFZEp6MUlBVUZRRUVFRUFBQVFTNkswQkE3NjQzVzBNQUFRVEtKT0NIdXF2Q3MySGtYdWVjYXdSaFdOWFBESFV2MDE1QVhSRkFBQUVFRUVCZzJRSUU5R1ZUOFVRRUVFQUFnVlVJekFiNzl2VWRPekorWHhnR2I5VlFkOFZ6QlhVV0JCQkFBQUVFRUVBQWdTY0lFTkNmUU1JZENDQ0FBQUp0RlJnWnNXSHQ0Y1JZL1hlRE9QNWNXS2xVMVlVKzA5WnRzRElFRUVBQUFRUVFRS0FBQWdUMEFqUWlWVUFBQVFReUxtQkQydjM3VFZqdGU2MUMrbU5oRVBicFBuclNNOTV3RkE4QkJCQkFBQUVFdWl0QVFPK3VOMXREQUFFRXlpclE4RVBkRHg5K1ZHZWd2MWJEM1cyeGZ6a2YzVlB3RHdJSUlJQUFBZ2dnME96UkFBSUJCQkJBQUlHT0M0eU0yTEQycWk2OTluZk9CZS9YK2VoMmtKaFozVHNPendZUVFBQUJCQkJBSUM4QzlLRG5wYVVvSndJSUlGQU1BVCtzZmJKV3U4SEY3blovNlRYT1J5OUd5MUlMQkJCQUFBRUVFRml6QUFGOXpZU3NBQUVFRUVCZ0JRSTJwTjB1dGFaTG84ZXYwYVhYSmpYU25mUFJWd0RJVXhGQUFBRUVFRUNndUFJRTlPSzJMVFZEQUFFRXNpcmdMNzAyTlQ0K3B1dWoveXJubzJlMW1TZ1hBZ2dnZ0FBQ0NIUmJnSURlYlhHMmh3QUNDQ0FRQkhZK3VxNlBQakU2L3JjdWNPLzI1Nk56ZlhUMkRBUVFRQUFCQkJBb3VRQUJ2ZVE3QU5WSEFBRUVlaWFRWEI4OW1CeXIvMllRTi81WDgvcm81M3RXSGphTUFBSUlJSUFBQWdqMFdJQ0EzdU1HWVBNSUlJQkFpUVhzZlBTSzFmK2NDMSt0YzlMSE5HbGN2MzVrWm5kRFlVRUFBUVFRUUFDQjBna1EwRXZYNUZRWUFRUVF5SlNBdno3NmRMMXVrOFg5Zk9DY2hYT2JSQzdPVkNrcERBSUlJSUFBQWdnZzBBVUJBbm9Ya05rRUFnZ2dnTUJGQkpybm8rdlNhMThKZy9BTk9oOWRVN3pyUHhZRUVFQUFBUVFRUUtCa0FnVDBralU0MVVVQUFRUXlLV0FoWFQzbkU3WGF4M1I5OU44TEsxRkZDZDN1WTBFQUFRUVFRQUFCQkVvalFFQXZUVk5UVVFRUVFDRHpBbjVZdTNyUy80M09SNzh0aWlLN1Bqb2hQZlBOUmdFUlFBQUJCQkJBb0YwQ0JQUjJTYkllQkJCQUFJRzFDbGhBOTVQR3pRVGh6emtYSDlha2NYMGE3TTZrY1d1VjVmVUlJSUFBQWdnZ2tBc0JBbm91bW9sQ0lvQUFBcVVSOEpQR25hclZwcUk0K0tlYU5PNWNFUHBKNHhxbEVhQ2lDQ0NBQUFJSUlGQmFBUUo2YVp1ZWlpT0FBQUlaRldoT0duZXNYci9mQmVFdnFCZmRDbXJ2VjB3Y2w5RW1vMWdJSUlBQUFnZ2cwQjRCQW5wN0hGa0xBZ2dnZ0VBN0JlWm5kdi92bWpUdVhaclpQVlE4cHhlOW5jYXNDd0VFRUVBQUFRUXlKMEJBejF5VFVDQUVFRUFBQVM4d01tTG5ua2VUOWZwN0ZOSS9xWm5kcStwQ1A0OE9BZ2dnZ0FBQ0NDQlFWQUVDZWxGYmxub2hnQUFDK1JlWUc5S3VtZDFmRzhUeDdaclp2Vi9WWW1iMy9MY3ROVUFBQVFRUVFBQ0JKUVFJNkV1Z2NCY0NDQ0NBUUdZRTVtWjJiL1N2KzhlNi9OcTMvY3p1aFBUTU5CQUZRUUFCQkJCQUFJSDJDUkRRMjJmSm1oQkFBQUVFT2lQUUNQWUgxZU9IRHAwTVkvY3p6Z1duQXJ2OFdzQTU2WjNoWnEwSUlJQUFBZ2dnMENzQkFucXY1Tmt1QWdnZ2dNRHlCUTdvV3VqNzl2Vk5qSTgvcERuZGYwYVhYMHQ3MXBrNGJ2bUtQQk1CQkJCQUFBRUVNaTVBUU05NEExRThCQkJBQUlHbVFITm05NGxhN2ZZd2pGN041ZGZZTXhCQUFBRUVFRUNnYUFJRTlLSzFLUFZCQUFFRWlpeGdJVDBJcWhOalk1OVJKL3JibXBkZnM5NzB1UW5saWx4OTZvWUFBZ2dnZ0FBQ3hSWWdvQmU3ZmFrZEFnZ2dVRVFCRzlaZW1heU4vM2JnNHQvVjVkY3ErdGt1eWNhQ0FBSUlJSUFBQWdqa1dvQ0FudXZtby9BSUlJQkFLUVdzdDl4NnpjT0pzZnB2NkJycG4xWlBlaC9YU0MvbHZrQ2xFVUFBQVFRUUtKUUFBYjFRelVsbEVFQUFnZElJV0VqMzcyRzZSdm92NnZKcnQ5bzEwZ25wcFdsL0tvb0FBZ2dnZ0VBaEJRam9oV3hXS29VQUFnaVVRc0FQZGJlYURsVDdmdG81TnhLRlliOSt0UFBVV1JCQUFBRUVFRUFBZ2R3SkVOQnoxMlFVR0FFRUVFQ2dSY0JDZXZYdzRjT1ByMnZFLzBEWFNQK09abmUzYTZRVDBsdVF1SWtBQWdnZ2dBQUMrUkFnb09lam5TZ2xBZ2dnZ01DRkJXeUN1T3I0K1BqRWJLWHlDdldrSHdzc3BEdkh4SEVYTnVNUkJCQkFBQUVFRU1pZ0FBRTlnNDFDa1JCQUFBRUVWaXd3Ryt6YjEzZnl5Skh2UlM1NHVjTDVtU0NNcXJyNEdpRjl4WlM4QUFFRUVFQUFBUVI2SlVCQTc1VTgyMFVBQVFRUWFLK0FYU05kSWYxWXZYNS9ITHVYNjlMb3MwRVlWTFVSR3diUGdnQUNDQ0NBQUFJSVpGNkFnSjc1SnFLQUNDQ0FBQUxMRnJDUXZuZHYvL0h4OFMrNk1QcHB2YzVtZTdmcnBCUFNsNDNJRXhGQUFBRUVFRUNnVndJRTlGN0pzMTBFRUVBQWdjNElIRHg0M25yU3A4YkdQdStpNEZVNkg5MjJZeUhkcnAzT2dnQUNDQ0NBQUFJSVpGYUFnSjdacHFGZ0NDQ0FBQUtyRm1nT2Q1OGFyWDlXbmVpL3FwbmRiVlgybmtkSVh6VXFMMFFBQVFRUVFBQ0JUZ3NRMERzdHpQb1JRQUFCQkhvallDRmRzN3RQanRVL3BjdXZ2YkVaMHEwc2hQVGV0QWhiUlFBQkJCQkFBSUVuRVNDZ1B3a1FEeU9BQUFJSTVGckFYeWQ5c2xiN1NCeTRONGRSbEw3dkVkSnozYXdVSGdFRUVFQUFnV0lLcEI5VWlsazdhb1VBQWdnZ1VIWUJteVRPUW5wbGFxeitPN0dMLzEwenBOdjk5c1dDQUFJSUlJQUFBZ2hrUm9DQW5wbW1vQ0FJSUlBQUFoMFNzQ0J1UGVZVzBuOHJqaHYvWGlFOW5UU09rTjRoZEZhTEFBSUlJSUFBQWlzWElLQ3YzSXhYSUlBQUFnamtUeUFONmRGVWJmdy9LS1QvUHo2a08yZTk2NFQwL0xVbkpVWUFBUVFRUUtDUUFnVDBRallybFVJQUFRUVFXRUxBZ3JoOVZSVFMvOS9BdVJ2RFNxV3FlNngzblpDK0JCaDNJWUFBQWdnZ2dFQjNCUWpvM2ZWbWF3Z2dnQUFDdlJXd0lHNkJQSndZcTcwbENla2E3azVQZW05YmhhMGpnQUFDQ0NDQWdCY2dvTE1qSUlBQUFnaVVUY0JDdWwwWXZSblM0OTlKZXRJZFBlbGwyeE9vTHdJSUlJQUFBaGtUSUtCbnJFRW9EZ0lJSUlCQVZ3UjhMN3EycEpCZWYzTnp1THQ2MGhudTNoVjlOb0lBQWdnZ2dBQUNTd29RMEpkazRVNEVFRUFBZ1JJSXRJVDAybHRjN040ZlZ2enM3dGJEempucEpkZ0JxQ0lDQ0NDQUFBSlpFeUNnWjYxRktBOENDQ0NBUURjRjVrTDZaSzEyUTh0MTB1MSsrMkpCQUFFRUVFQUFBUVM2SmtCQTd4bzFHMElBQVFRUXlLaEFHc1FYWHlmZGlwcytsdEdpVXl3RUVFQUFBUVFRS0pJQUFiMUlyVWxkRUVBQUFRUldLNURPN3U2dmsrNWMvSnVoTHBUZVhCa2hmYldxdkE0QkJCQkFBQUVFVmlTUWZ2aFkwWXQ0TWdJSUlJQUFBZ1VVU004OXIweU8xZDhkTy9lbVVDbGQ5YlF2UW5vQkc1d3FJWUFBQWdnZ2tEVUJBbnJXV29UeUlJQUFBZ2owVWlEdFNhOU0xV29mZGk3NDF3cnBWaDU3djJ6MHNtQnNHd0VFRUVBQUFRU0tMMEJBTDM0YlUwTUVFRUFBZ1pVSnBDRzlxb25qZmw4aC9UVkJFdElyV2cwaGZXV1dQQnNCQkJCQUFBRUVWaUJBUUY4QkZrOUZBQUVFRUNpTmdJVjBDK01XMHYvVWhlN25kZHVHdWR1MTBtZjFuUVVCQkJCQUFBRUVFR2k3QUFHOTdhU3NFQUVFRUVDZ0lBSVcwbWVEdlh2N3AwYnIvODJGMFUvNW44T3dHamhIU0M5SUkxTU5CQkJBQUFFRXNpUkFRTTlTYTFBV0JCQkFBSUhzQ1J3OGVEN1l0Njl2YW16czh5NTIxd1NCT3h0RVVWVUZuY2xlWVNrUkFnZ2dnQUFDQ09SWmdJQ2U1OWFqN0FnZ2dBQUMzUkVZR1pueFBlbmo0MStLWFBCQzU5eWtKby9yMDhZSjZkMXBBYmFDQUFJSUlJQkFLUVFJNktWb1ppcUpBQUlJSUxCbWdXWlArckY2L2Y1cUdQMkUxbmZJUXJyR3daOWY4N3BaQVFJSUlJQUFBZ2dnSUFFQ09yc0JBZ2dnZ0FBQ3l4Vm85cVEvTmpiMjNVci96QXQwTHZyOVVSVDFFOUtYQzhqekVFQUFBUVFRUU9CaUFnVDBpK253R0FJSUlJQUFBb3NGbWozcFI3OTc5TEgrMkwwb2JzUjNXa2pYMHhqdXZ0aUtueEZBQUFFRUVFQmdSUUlFOUJWeDhXUUVFRUFBQVFRa1lEM3Btamh1Zkh6OHpGUzlmbzFyeFA4ampLSys1dXp1TnZzN0N3SUlJSUFBQWdnZ3NHSUJBdnFLeVhnQkFnZ2dnQUFDRXJDUWJ0ZEYxL1hSSit2MWZ4eTc0RCtHbFlyTjdtN1hTN2N2RmdRUVFBQUJCQkJBWUVVQ0JQUVZjZkZrQkJCQUFBRUVGZ2cwOUpPRjlFQ1hZWHU5Yy9HNzFaTnVQNGY2SXFRYkRBc0NDQ0NBQUFJSUxGdUFnTDVzS3A2SUFBSUlJSURBa2dJVzB1MzlOSm9jcS85bUhMczNhWFozQytoUjRJTFpKVi9CblFnZ2dBQUNDQ0NBd0JJQ0JQUWxVTGdMQVFRUVFBQ0JGUXBZYjdtZGUxNlpxdFUrck9IdVA2ZmJqU0FLcTgzejBsZTRPcDZPQUFJSUlJQUFBbVVVSUtDWHNkV3BNd0lJSUlCQUp3UXNvRGRzOGppRjlMK01JM2VOSXZ0SkRYbXZjaG0yVG5DelRnUVFRQUFCQklvblFFQXZYcHRTSXdRUVFBQ0JYZ28wcjVWK2ZIVDhpNkZ6UCs1YzhGMHV3OWJMQm1IYkNDQ0FBQUlJNUVlQWdKNmZ0cUtrQ0NDQUFBSjVFV2hlSzMyaVh2OTJvMXA5bm92akwvbkxzQ1hYU3VjeWJIbHBSOHFKQUFJSUlJQkFsd1VJNkYwR1ozTUlJSUFBQWlVUmFGNHIvY1Rod3ljbWEvV3JBeGQvdGhuU3VReGJTWFlCcW9rQUFnZ2dnTUJLQlFqb0t4WGorUWdnZ0FBQ0NDeFhJTGxXdXI4MitzUlkvWlV1ZGg5b1hvYk4zbjl0OW5jV0JCQkFBQUVFRUVCZ1RvQ0FQa2ZCRFFRUVFBQUJCRG9pWUpkYTg5ZEduNnpWM3E1cnBiOGg4RmRoMDMzT2NSbTJqcEN6VWdRUVFBQUJCUElwUUVEUFo3dFJhZ1FRUUFDQmZBbWt2ZVVWWFN2OWoxd1F2a0xGUDNPeEdkNTFLWFhPVmM5WEcxTmFCQkJBQUFFRTFpeEFRRjh6SVN0QUFBRUVFRUJnV1FMSlpkajI3dTJmR2h2N3ZJc2F6M2ZPZmNkbWVOY0RNNHZYb01lczE1MEZBUVFRUUFBQkJFb2tRRUF2VVdOVFZRUVFRQUNCREFnMFozaWZHbjMwbStHbWMvczB3L3N0Q3VsOXVtYTY5YkxQYVBqN3JCOEJId1hqR1NndFJVQUFBUVFRUUFDQkxncUVYZHdXbTBJQUFRUVFRQUNCVkdEZnZyNGdtVVF1MkRFOCtBZGhFTDdCSHRMUTlpQjI3cDY0Ny9UTGpoODZmdEx1MGhmRDNRMkhCUUVFRUVBQWdZSUxFTkFMM3NCVUR3RUVFRUFnMHdJMmpOMmZuNzU5ZVBnVm1qVHVlcjB4ajFWblpqNXg5T2pSMDNyTVJyclpaZGxZRUVBQUFRUVFRQUFCQkJCQUFBRUVFRUNnd3dJV3dwYzY1V3lwK3pwY0ZGYVBBQUlJSUlBQUFyMFVvQWU5bC9wc0d3RUVFRUFBZ1hrQnUxNTZ1bGl2T3NQYVV3MitJNEFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NMUlg0SDhEN2R1VFMvRDQrdjBBQUFBQVNVVk9SSzVDWUlJPSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzEiXSwiZXh0ZW5zaW9ucyI6WyJobWFjLXNlY3JldCIsImNyZWRQcm90ZWN0IiwiY3JlZEJsb2IiLCJtaW5QaW5MZW5ndGgiXSwiYWFndWlkIjoiOWQzZGY2YmEyODJmMTFlZGEyNjEwMjQyYWMxMjAwMDIiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJlcCI6ZmFsc2UsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZX0sIm1heE1zZ1NpemUiOjEwMjQsInBpblV2QXV0aFByb3RvY29scyI6WzEsMl0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6MTAsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4LCJ0cmFuc3BvcnRzIjpbIm5mYyJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XSwiZm9yY2VQSU5DaGFuZ2UiOmZhbHNlLCJtaW5QSU5MZW5ndGgiOjQsIm1heENyZWRCbG9iTGVuZ3RoIjozMiwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjF9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMi0xMS0wNyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxMCwidXJsIjoiaHR0cHM6Ly93d3cuZ2V0YXJjdWx1cy5jb20vIiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJBcmN1bHVzIEZJRE8yL1UyRiBDYXJkIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyMjExMDcwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMi0xMS0wNyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxMH1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMy0wMi0yMiJ9LHsiYWFndWlkIjoiZmJlZmRmNjgtZmU4Ni0wMTA2LTIxM2UtNGQ1ZmEyNGNiZTJlIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiJmYmVmZGY2OC1mZTg2LTAxMDYtMjEzZS00ZDVmYTI0Y2JlMmUiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiRXhjZWxzZWN1IGVTZWN1IEZJRE8yIE5GQyBTZWN1cml0eSBLZXkifSwiZGVzY3JpcHRpb24iOiJFeGNlbHNlY3UgZVNlY3UgRklETzIgTkZDIFNlY3VyaXR5IEtleSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2ludGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDU0RDQ0FlMmdBd0lCQWdJSkFNOVJ6WXU0RUlJbE1Bb0dDQ3FHU000OUJBTUNNSDh4Q3pBSkJnTlZCQVlUQWtOT01Td3dLZ1lEVlFRS0RDTkZlR05sYkhObFkzVWdSR0YwWVNCVVpXTm9ibTlzYjJkNUlFTnZMaXdnVEhSa0xqRWVNQndHQTFVRUN3d1ZSWGhqWld4elpXTjFJRVpwWkc4Z1UyVnlkbVZ5TVNJd0lBWURWUVFEREJsRmVHTmxiSE5sWTNVZ1JtbGtieUJTYjI5MElFTkJJREF5TUNBWERURTVNVEF5TXpBNU5UQTBNMW9ZRHpJd05Ua3hNREV6TURrMU1EUXpXakIvTVFzd0NRWURWUVFHRXdKRFRqRXNNQ29HQTFVRUNnd2pSWGhqWld4elpXTjFJRVJoZEdFZ1ZHVmphRzV2Ykc5bmVTQkRieTRzSUV4MFpDNHhIakFjQmdOVkJBc01GVVY0WTJWc2MyVmpkU0JHYVdSdklGTmxjblpsY2pFaU1DQUdBMVVFQXd3WlJYaGpaV3h6WldOMUlFWnBaRzhnVW05dmRDQkRRU0F3TWpCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQkhscTJqVVFNYWxIai9CUmVRZWZHaXo0RXZZSnlGTFdQejRSZmhKR0txcWwrOG45NmhUMW01Z1hvVHZvTHJqU1U3WDBjQmVvVHNnaHloMjIreXJzNCtTalVEQk9NQjBHQTFVZERnUVdCQlErOFNHVzJCWGJxYjJkY0FPaVdKT1UrR0NzUGpBZkJnTlZIU01FR0RBV2dCUSs4U0dXMkJYYnFiMmRjQU9pV0pPVStHQ3NQakFNQmdOVkhSTUVCVEFEQVFIL01Bb0dDQ3FHU000OUJBTUNBMGtBTUVZQ0lRRHE4eElXMFpLNXl6M0VBem11eDg4TENUWU8xNTdmVGZ5T2lPekMyQUR5YXdJaEFPMVBXWWxlRmdILzNtdUQ4Y0JBTXIxMWZFS2RGL0FhQzE2ZnR4YWV6TlhIIl0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUl3QUFBQVlDQVlBQUFBb054VnJBQUFBQ1hCSVdYTUFBQjdDQUFBZXdnRnUwSFUrQUFBRklHbFVXSFJZVFV3NlkyOXRMbUZrYjJKbExuaHRjQUFBQUFBQVBEOTRjR0ZqYTJWMElHSmxaMmx1UFNMdnU3OGlJR2xrUFNKWE5VMHdUWEJEWldocFNIcHlaVk42VGxSamVtdGpPV1FpUHo0Z1BIZzZlRzF3YldWMFlTQjRiV3h1Y3pwNFBTSmhaRzlpWlRwdWN6cHRaWFJoTHlJZ2VEcDRiWEIwYXowaVFXUnZZbVVnV0UxUUlFTnZjbVVnTlM0MkxXTXhORElnTnprdU1UWXdPVEkwTENBeU1ERTNMekEzTHpFekxUQXhPakEyT2pNNUlDQWdJQ0FnSUNBaVBpQThjbVJtT2xKRVJpQjRiV3h1Y3pweVpHWTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5MekU1T1Rrdk1ESXZNakl0Y21SbUxYTjViblJoZUMxdWN5TWlQaUE4Y21SbU9rUmxjMk55YVhCMGFXOXVJSEprWmpwaFltOTFkRDBpSWlCNGJXeHVjenA0YlhBOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOGlJSGh0Ykc1ek9tUmpQU0pvZEhSd09pOHZjSFZ5YkM1dmNtY3ZaR012Wld4bGJXVnVkSE12TVM0eEx5SWdlRzFzYm5NNmNHaHZkRzl6YUc5d1BTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM0JvYjNSdmMyaHZjQzh4TGpBdklpQjRiV3h1Y3pwNGJYQk5UVDBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5NFlYQXZNUzR3TDIxdEx5SWdlRzFzYm5NNmMzUkZkblE5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5elZIbHdaUzlTWlhOdmRYSmpaVVYyWlc1MEl5SWdlRzF3T2tOeVpXRjBiM0pVYjI5c1BTSkJaRzlpWlNCUWFHOTBiM05vYjNBZ1EwTWdLRmRwYm1SdmQzTXBJaUI0YlhBNlEzSmxZWFJsUkdGMFpUMGlNakF4T0Mwd05TMHlNMVF4TkRvME1EbzFOU3N3T0Rvd01DSWdlRzF3T2sxdlpHbG1lVVJoZEdVOUlqSXdNVGt0TURVdE1EVlVNRGs2TXpNNk5EY3JNRGc2TURBaUlIaHRjRHBOWlhSaFpHRjBZVVJoZEdVOUlqSXdNVGt0TURVdE1EVlVNRGs2TXpNNk5EY3JNRGc2TURBaUlHUmpPbVp2Y20xaGREMGlhVzFoWjJVdmNHNW5JaUJ3YUc5MGIzTm9iM0E2UTI5c2IzSk5iMlJsUFNJeklpQndhRzkwYjNOb2IzQTZTVU5EVUhKdlptbHNaVDBpYzFKSFFpQkpSVU0yTVRrMk5pMHlMakVpSUhodGNFMU5Pa2x1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2TWpFNE5XWXlZbVl0T0RWbU9TMWpaalEzTFdGaU9EY3RPVEZqTTJJelpqQmlOemhsSWlCNGJYQk5UVHBFYjJOMWJXVnVkRWxFUFNKaFpHOWlaVHBrYjJOcFpEcHdhRzkwYjNOb2IzQTZaV014WlRnM01qRXROek0zWVMwd05UUmxMV0V6WVRrdE5URmtNVE16TkRabFpUSTVJaUI0YlhCTlRUcFBjbWxuYVc1aGJFUnZZM1Z0Wlc1MFNVUTlJbmh0Y0M1a2FXUTZNakU0TldZeVltWXRPRFZtT1MxalpqUTNMV0ZpT0RjdE9URmpNMkl6WmpCaU56aGxJajRnUEhodGNFMU5Pa2hwYzNSdmNuaytJRHh5WkdZNlUyVnhQaUE4Y21SbU9teHBJSE4wUlhaME9tRmpkR2x2YmowaVkzSmxZWFJsWkNJZ2MzUkZkblE2YVc1emRHRnVZMlZKUkQwaWVHMXdMbWxwWkRveU1UZzFaakppWmkwNE5XWTVMV05tTkRjdFlXSTROeTA1TVdNellqTm1NR0kzT0dVaUlITjBSWFowT25kb1pXNDlJakl3TVRndE1EVXRNak5VTVRRNk5EQTZOVFVyTURnNk1EQWlJSE4wUlhaME9uTnZablIzWVhKbFFXZGxiblE5SWtGa2IySmxJRkJvYjNSdmMyaHZjQ0JEUXlBb1YybHVaRzkzY3lraUx6NGdQQzl5WkdZNlUyVnhQaUE4TDNodGNFMU5Pa2hwYzNSdmNuaytJRHd2Y21SbU9rUmxjMk55YVhCMGFXOXVQaUE4TDNKa1pqcFNSRVkrSUR3dmVEcDRiWEJ0WlhSaFBpQThQM2h3WVdOclpYUWdaVzVrUFNKeUlqOCsvMFZ4UlFBQUdmVkpSRUZVYUFYVndYZmNuM1Y5Ny9IWDUvdjlYdGR2M0RzN0pKQUlBVUxZQlptQ2ltRFZEbGZ0dzIzSHFZdXFQVjBXdGRiV1I2M25WRzJybnJhT3RzaERyUlVmUFIzV1dTM0tWaEFaWVFvRVFrTFduZHp6TjY3cituN2U1MDRpS05XTzg1OCtuMm51aXNTL0ozRzhZWmVaMlpURUltRDg1K1JPTzBaU1VmaUhKUDZGSHlJRVdCakF3ek53Nm9iSTNDeWtDR2FHSk55aExNV3dnbnJvcE5KSUNCTlVjb29pME84Yit4ZkY2UExBcUlNY0dvZDJXK3pZRDlGZzQ5ckFnYjFpMFRKVEhXR0N1bzZVaGVFSmRpOW1WclNOOGNLWXE0MmQrOFNLQ1NPMmdBd2RJQlFRVFB4N1psRFZka2tXYnpUWmNLVEkzZGh2dnJHbHVlTTlkOFVUWDBScitqbW95WUNRT01Tc0JMcEFBakxRUnhwZ3hvK1JBbWxyNG9jSVpoZUdrRjVsQnBMNHJ3aElDWExEZkgrZ0R4ZUZrSGdDQ2VTd2Y3OGhFei9Lak1QRUQ1SWdSWHVSdWYyMHBZQlpRNzJmN1N0R0gzWW1UdnhGTWhjZ0F3bGlBUkxnR1d3R05BZldRcXdtaHNoQmNuNHNHT0ErbDhxQ3h4bVFCVTNEU1pJajhWOFRZRkMwallVRmJlMzFkUDJ5NVpBelR4QVM1TVpBZ1BHanpRQkIxWUR4QTlaWjBLa21jRUhJbWM5M0x2aTNIZkhJa3FaZWpUSWdNRUFPN2w4bnhrOGgzWUxuM1lRMGp1c00xTHlPRU01RTRzZUNnT3ovbFBZY0VJOXhRVHR4eEhnM251a1lJTDVyRWRnT0NDajRmZ1lTc1I1cVJhZWpxMEppdXFwNGdoUU5MdzFWNHNlRkFLOUZNcjVIUUxUalFneWJNY2lOZzdIbjFwV1hmT09oNnNTTDhQa2pNUWRMWUdHYXdkN2ZKWFl2UjBXZkVNQUMxQldFNGxaNkMvOU1tZjZPY3VUcFNJRDRrV1VHMG03RXZlbTJiYzVqaG8xWU94bVBPbk1UcDJhSjdJQ0JpWThKL1Q3UUFrWUFjWkFBUThFb2MwTzJ5TGJSVVVNQ001Q01kaHYyelRsa0kvSmpSR0FSUWhISWpYaU1HY2RLR25lTTBqS0lPeDZwVisvTFp1Y2o3eEFNU1B2bzZ4VjQ5UVhTT016Tnc4Z0VkRm93TXdNalk1RFNYcHJtclJUNkI0eFZpQjlkRWt0dUpOcU90SGMrOEpqK0VEcGQyeFRhakdnQUdlTWdkLzluWUU4STRJSVFRQ3dKZ0lNTFhCQU5tZ3lTa1IySzROejlJRHc2THpZZkxRcmp4NFlaTkRYMGVrNTNMQ0J4U0FwMmpwbGhnaFkxc3paeDAxWE5CWE1FdGhBcVFCVzk1aDAwNlF2RUVhaEp0TXVYVU1RWDBGUlgwMnA5aENMTm93Q2Vyc2Y4UHJCVi9LZkVZY1ovbnpqTStBSHVFQUwvSVRsZ1lNWmhCcTZiRVF2cFNVZEdIbFBWeEJWamRvNnk0UklnRU5zRU82SkJscEVDVkxVVGdoRkxRVFljSXlNS1FaTWhHMVFORktYNDVqMWlZdEpvSlVPVitDRU1HQUVDTUErSS93OENYR0NBTzFqa3Y4MVlJc2dPRW9lSXd5eEFYWW01L2M2cWxZWm5hREpINWN6SmhJQk1tT0FoMy9qbGdYVldRejZSWURBWVhzdEMvUmQwbGtNNUF2STNVSFRmUndCcWZ4NGpvMXVCTDJJUjZnRFpHMElBQk80UUkyRGdEaVlPc1FSeWtJTVpQMGpnR1VMaWNSWUFnUXZNT0VRQ015aGE0Qm5rUElFRUZxQm9RYTdBSFVJRUJEbmZpY2pwcEVseGlJREltczZZblprYmFESllNRHo3M2NnZm1Xa0NSWUxKQ1AwK1dBQUtIbWVBWkVnUUFnVGprTkUycEFnU2h3aklBb3pqZ1o5Qk9rK3d6c0JjN0FPK2d2aWt4S1A4SndTNEdERzRLRVhPRXF6cXRQQUEzekhqQzRLdC9CY0V5NEp4OFdpYk0ySmtLb29hZUFENEN1TGJHQlFseEJFalprR2Y5WFZ0bTRoZ0NJelp2K1hGRHowWU5wNk5MYXhFRG1YbnMweVpFeW9vMHhuSS9vaWNvYWtoUk1CZWczd1RVa24yMVJnbkU4UWhyUTRvZzJjSGJRZjI0cXdpMkhxU0JScUJBRE1lNXc2cGdNNFlESHFRR3pDRGtDQVZNT3lCSEN3QUFnR3hBRGw0Qm9zY1pxQU1DR0lMd2poVVBhRnN3QTZDN21GSm1ubFVIT1FaV2wxV2o0eXlSVUVna0J0bHlUMnRxQU43NTRXNXNXUkNjS3JnRExEamdPVUdDb0dkR0xjQy95cDRoQjlHRU9DWXFYWjRiVzdzUmRGMEZHYUdJQU1wUXNDZVpZRmZNN04zQ1A3YVFId2ZBVG1yUlBaTHJjaXZZR3lXV1ZlQ3RaTWdsNXJLM3BTaVBvYnpoOENBN3lNZ2kxR1pYZXB1cjR6R3BnMnJZbG5YQWplVWhEc1BXZVRQTGZMSDFVRGFmbSttTG95UnR2M0VaTmNtcXl4YU5DQnV2VDZldXdQeE10UnY0K3JSRzl4SU11ZzBNTlFCTE54UGEyUUx1WUZxQU1UbkE4L25vQ0lBeGlFaGd1Y0RMUFkrVGpQNEV1Tmo5K0RXSjRSQU5YTTZkTi9DeUxLeldKd0ZieUJFUUJCTFVJREZtUWR4WFVjcTdzVENnR0gvS1Bweno2QXplaElHTkEya05uamV3ZmJiUHNyWTZ2dG9UejRmYTE2SUJjZ1pXaU9RNjBmWWZ2K0htRmh4QjkzUm44UHp5M0RkanJHZEphbTdNWENRQkVYa0REUEdjZ1VXd1hBR2ZWMWZXMEJ1YXkzeTg3Zzl2OTIyRXcxYklUY3dnU0FGUThKajRINlpYVkZMSHdCbStTNEhBcng0OVRKN1I5a0t4dzhXd1FLUGs2QnNRUUdXemRZWG8vR2pkWk9qTWg4MkRwTWdKanRwOVVUODM5MWtGK2VHb2tqQ0piSU1seEJZcm5Wa3UydHZNdzlIbXZKckJRT1dPRkFFVGxuVkRoOXNXYmlnY2NOTTFCbkVraUFra0xFaEJIdDNHV3dWbWQrOGQ1dnp4ZS9FOU15ejdjeUx6NGZxRVNpVjJWbHMrUHllWW0yUFBrL0ZNc2dIRFBveldJQ3FnbTduQVR5L2dOazlyNkVvbjBkNzlFazBGWWNJQ0FIRUVvRVB2OHFqRDd5VFZjZGR3OFI0UXpXQUxCQmcrV0ZtRnIvS2JITUZVK1h6Q0FteWd3VW8weDcyUGZTWFBIRG4zN0xsS1E5aDFpZEV3R0ZtMXlvNng3eVZzdnRHNmhrd29EUDZOaFptTG1mWnhoWXBYWXpYSUFHQ2FDQzlpMTc5RnpUWFFUcmhRc3BONEl2ZkF1WlprcnBkY1pDZ0UyVm5lelpjSW1LME9ueDFkdGIrTGplNmVOVUsrMkRDanE5ZGhCQzA1QURTaUFYS1ZqU2FSalFpeEdESGdyM1Q0Rm5BcjBwODJ3V2R5RnRiSStHM1RUYmV1QkFRZ0JBTjVQTWpMVDUzeDRPNmV0c0MrODQvd2RaT1lpOXRpTzh5eTdjaTNjaEI0dHhXeXo0UzRjUWlRT2c2dlI1N1RGeVZnanlZWFNSWTFRQU9kR0o4cWFSckpQdG9VM1BRdVNuWUZhUFJObVdEakREWVdkVit2Um5aNEd3ejIyQkFOWlNWbmZpcW80N2xzNVBPVmZQTGJPMktVZHRNWDJBR0JRdzZFOWMwZCsxZHhkcmpOdEZPb0RoQ1ovOTU3SGhnSzBlZkM2RUc1eDRHaTc5T1NoOGdwS2NSL2Rjb3U2ZlFuNGZza0NKUS96M1ViMkJxelU2YVBvd3NPNWJoNEFKY3UvRG1xN1FuQnZTWlovdld0ek4yN0dsMEp6Y3lXQVRaOVZSemI2YmR2b2JONTRxaUJXcWdHb0lpdEVmM3NPZkFteGkzU0xkOUtWVi9GNjN1VnpqNkxJakZPbFJkZ0FVUUVBTU1xM3ZKZGhWcjFrSnVMY01tbjRvcW9MNFpQSU9SR0hDSUdWTkVUaEpnQnRuOXk4TUJyeDhkczdjRmhYZDJvaGcyZm1QTytuU1EzUXkyRDlOa1U5a3BpNDIvb0d5Rmk4cElrQXR2eE1TWW5SK0srQWtMell0RzIzWkJ1d3h2eXoyMTYwYVlRWkZBVVBWNy9xbWlzRDluVkxmMSt2U25lNDRzUU5ZVmplenRwZkhVUm40VHNNNHN2TS9FaVNIQlRGLzloVVg3MDdLdGo0NjAySVhJTjl6VmJKNGFpKy9mY25TNHNCcUl4bFcwWTN6ZHZnVSt1bTNhanpqdEtQNE1iRk10a0duT3M3ODNoUERKRU94UlNSZ2NpWGdieGtzRmxxS3RhS2Y0d3Y1UVY1MTZySjYweWptaDJtOVlFSlRzZm85ZS84aDlCemFld1JIelU0UUNGRnFFOEFhOHVvbWl1SVdtRDU2aExNRGlnN1JISHVTV2E3L0VzUDlSVG5uNnM0Z0dpL1cxeU41SUhPeWtNN0dNaFlVM3M3ajRVc1JxaWxBZ1BrNk92MDY3M3N0UjYyOG5oeHZJMmtoMy9DYm1GMStMdUkzeE5lRGg2VlQ5VnlHT1JQbG1HdjlUSmxidHhJRDU0Vi9TYWo4WGZDZHpleGV4TnRUVldVVGZnQm1ZUVREb0RYZlEwelltV3BBMm5vUDdDZmhnSHlIZmpvbURrampNeFBwQU9BNER6OXdnOFg3VityMlJUbno1WXEwSGRzL2xQeHdwN1RQQm1PTzdna0hsWEh2M3cvNnhpU24vK1ZNMnBiZFhzL1lrajJJNEVLRUtXNTU2VXZIbG1KaW9lbW9yYzBnclFRT1BIaGo2VzJuc2I4cUN4OFVJTVJpNDl0ZFpmMUFVWERCV3BvbUZTcjlsRnM0SkNBdk03WnIxUy92emZIekRlc01NRURSdXQ4NzNtcmNvcC9jRVdCOER6WFJQOTMvcU9pL09Qem45YW12VW5yd3dDNWdlOHRwZkJYeU5KN29iOUR1WW5XallhWjdGWXJaTk1jTksySktDalZkbWRCbkFnQnNmMGhIYjJMTHVkYVFESTFRVnlLQ3o2bVNPbWZvazduK00vRXQ0L1FpdFVlaU9nemNnN1dEWSt6MXlQb21pWEU5amY0aHBCNmIxcEhnNTR5dWZ3WEFBWmhBTlhDK25hbTRsOEI2NjQ5QktCOGdMTU5kN0o1VnVvNHFSRWJ1TXdjSnZZMkVNaTFDTVhvU3FEdGhseEFBZHpkSTBleWs3MzJJNG5PT3V1Mkg5NnROWnRUd3hyQ0FZeEFRTCsyL0NyTS9vYXVoVlQ2WlZkSmh1cnFldEEzUWlPS1FVamU4NnhZd3B3VTdIcjIwbmUwdjJkRzQvNit2dS9pcGdHOTlsZ0ZoaUhOSTR2VWE2SFBkdjdodndpYkZPT0RVQnVSSGpJeHlSSGVvR2drRU1zR3RHMzg3QjMxaDI3R29KRU9EUWJVTzNNdTdkbmxuWkVXWEJWTHNkTzVZNVhoNWVvQ2lLQ0ROeitVUFQrL3pqclpTUXdJQTZ3OXBKWnpEMGF3ZnorZWVTYVN3bWNwWFpOVFZxcDY5WlliOGlCOCtPUjk2ZFV2eGFNRVlsR1dCTFdKS0JBM0o5MjR6VFdPS29YRFNuSzl1WUpBUUVnd1BONk5XN2UydWd6ZG1RUVN3UjRORHViTWI5cjhqRlZxSStBZllab3QrSCtuRDBhU3o1QnNxMzBCdnNndkFObWozZ2ZoUmgrVFNodVJKNUJZaUdBaGdoNkI2S0JBYXNXSDQ2WDcveWMxanJLK3g3QURZKzgrWEUrQWNJd3dSaVNZWjIrVXRJWjFBM014UmhBbWt6bG42ZmJkc2FSSWVpT0pXRERKQkR3NEQyMkxjWTltQjJEa0o2TXJSZ3FuTXpUWDJBYkJ5VWtGalN3dXgwQ1F5ZmptN1BEZU5oMDZEVUYxcDl2WnpHcHVXQVFBWVpNTUFNM0NFQTNUWlFzSFd1MXMvVU1mL1ZVZDF3U2IrR1FRMEdtRUdJUUFwZmYzUi9mdTNLRmR6bEFqTlFnR1lJSjIyQVpwdjQwT2Zod2pNRHp6M2RMdDI1eCtSbzQrcmx0aXdQSVhTNHAxM3lKMVB6UnJzRnFRVjFBd1owUzJNNEJFazdESkZsckJpTnhZdlA1NFZrVml6T2laQnNFZW1uZ0xNRTQ0RDRuaG9vRE03aUlBT0R4V2dVMFRoSkF0d2d3WmZqSlhkc0RTZTJDUGtJVkFNQk1CRFFERGtrZFU3RXV1K2lIcndhZUFtVG96Zmd3R0lGcUlmNEJLVlAweDlDNWpxOHVZNVE4RDNHSWNwUWxOQ2RXTW5ldmN2NDlyYyt5ckxPSWl2WHJtQ3l1SXpLRFJOZ1BLN0pYZUJjek1BZHNQc3h1NDJOUjRINzhaVGhGT29LTUVEZzdHQjBmQ3NSMkx2L0JJNVl0eGtMOEowYnI2TzNQeE1MRGtwa0RwcWswT2tnWXJDanJXTWo5KzNSVGRNTGV2VTRUSzhlZzdJRmJwQU5oQWhCV0FObWNNUnlZNlNBL29MWXZNeTMxemxlMld1NGhDWEdZV1pRTmY3My9ZcEx5NVoybFFGS2pOQUNCZWhWMENtRUFBZGl5WG5kYm5ycDF1bm1qOHBSemw3ZnNuYmR3TTU1djNyZGx2RG95UnNNR2pIWUFUUFQwRXF3Y3NLd0VGRXczQ0NIUUlUVjBleWlXdUFHRVViS0VIN2FBUW5NREFRT0dHQXNDWVlBQTVSOWF5Zlk2UWw3dW1TVTdScm1lSEI3L2FUYkIxUGQ1NUI3RzNETFlMczVyQTAyQVVUVWdBdFNzWkhzTDJiUGdSdG9IQ3h2QUZ0RHNLMFlNSGxjQzA4cnlMMkU2aHFMNHFBUXVyZ21pVVhCc1A4d3ZkWXJxUGJNc243bDFaejZIRmkyNWtKeTNzaGdIa0xnQ1F3UUlDQVZzREI3TGIzZWJsYXRoUkJQWVhiZkNnNnlDRlpBLzVFN0dlNituZEZUWU0yRzB4bHJIME52NWdCWC9lTzlQSHczZEVZNUtDbHcwTEdCY0NvWW9KRk9TK3pjbVQrOVk1ZTJyMTVoZER2RzJuRmpVSUVCQnBoZ1VJdDJhUnk1eXJoOXU1anRpUlBXOFJ5djdIZmRqSUI0VEREREczdjR6bDNEZld1bmpORldvaDJNSmtMdEVJRUE5SVl3VmpLKzZhajRmK2dxbkxaSk4yWEYxd3ptaFJWVURObmFUQU1tNmdYUnpCbXQwcEE3VlEycmxoYzBibVFYTVFuUHJPa05PYzZDaUlZSFdCQ3FCTWtNWTRtRXhZQWxvMTlsOVRtczdXYlQ5ZEEvVnJUdDlCaXRXMVhRc1F5SjY2NVpQSFVIenM5aWd4THhCb3lyZ1FJNEh2UUJ6S1p3UVZtQTVEeTg2eVlxd2ZJV2RPSUZNSElDc2QwRFFUVlloelZYZ0UxQm1BVnp6RWFBSTRFYVl6L1lES2s2RnpwWGNNSFBQa3puS0NDdHA5b2ZlWnlBd0NGeWlBa0NtZXlSMUxxZFhQV1kyUU5tSjVES2hEdFlnUGJZa01YWi80dEZpQ3VBQXo5Qk00UisvMFkybjdPTGRjZEJLamtveVFCak05QTFSQmJVaXl5dW43QzdqbDRMVDFwanpDN0FZQWhtUEVFd2tLQnFJRHNFQzc4STlxYzFqRWVFK0I1MzBXbUZYMTQybXU2cWMvNndBeGx3QVFZSXFneGpIVmE4OHFKd3hVbXJ3bW1QUGx5L2Vxb2REeVN6NVhValltM0ZpcmFXeis0V1FTS1pFVnFnaXNNRVRhT09qR3lvYUhmRmNORkdsQmtMTERFTGcreC9IY3cvVWdRN0tyc2lRZzRxWkhtMjBlNlcyWnh4U0xkcHZKMmQrd3JzOVRsRExBMEdrVVUxZHpRVHU2RGlHSkxOWTN3V3RBME1wUHVCUzhIT0JZRUU4NHQvUXRINk9LdVhRZjlSOFBaVGFZK3NZdmIrQllZek1QS2tmUlRsUG1JOEh4ek1RQWIxNE1zRXU1SlEzSUw3eTRpRDgwaGpzN2hWVE84QjkxdG90MnBTVE1oQUJqU1EvWE1VNVZmQmQ3TTQyRUlJbDdGbTVSeWpKWHppejZDdXR2UGNOMlI2L1VUVGg4WDlINmZWK1J1cUdhQS9UcTUrZ2w0RnFmVU5Mdno1L2FRQ0pBNUtKbG9XN0dRelF4SW1ZK2o2MW9ZanVOYk4yRGNMR0ppQmVKd0JKVEIwUVFyVzNiREMvcUFzd3B1R3RTWE1PY2pFZmhrZG9DUEFYV1BITEV2dm5lOWpjajVpQWVlN2hLaHFlOGJ4YThMN1d1dmlLZmZkblIvKzVqMzYwbk9lVHBoTWlneEFZSlY0YW94V0ZvVEtsVUVHQm5JSTBYN1pqSmNIVkFtYjJEL2pmemJSc3U4b1dkK3p1c2tnaS9ZZys1MmpJZDZKR1dZUWdleUJQWlhPM2RBTkZ3ZlJkVEVtK1R0YXBSOFJ6SjZSM2VoMHdmWTNmR2JmZWJkZGMrekxWbEZySTRPcURXcUR3QUtnQThCYndmOG5LUVZDNjFOVU01OWgxU1MwT3RBZnZaaWk5UUpNc0xodEdja2dObk5RL2pMS2QwQThoNUFYcVB0L0Q5MVBFRk9tR1hZSmNSbGlpVGFqWmdyM2FiSmRoL1JPeEcraFBFV0ljeWk4SDVwM0kxK2ticUEvL0IzV3JvVTdiempBby9mRDFCR3c3YlpQTTZ5T3BDak9vYW4rbGY3c0IybFBRUVI2dTA5Z1pPUmtIREQ3SnRVUXFpR1BTUmFZREdaUEZvY1p3a3lyK3hXL0dRd3JqRUk4cmhXTVpZS1Z3T2RkZk1oZDU4VEMzcmxxTXB4ZnUyZ2FVUVNqY3QwV3NGY1gwaXVhYUpmS1JSYTBJcU5sTjM1ZzZQNnpMbjBPN0NHRG84R2VFWU05blJERzZMblB6dWMzYlp6aW9lWkFYcWJ4c0sxVmhPWERTcGpaQmFYQ1I4ejBCb2M1bHJpelBKcTl2U3p0MGlvVE95MWpVR24yMFdtL3U3M0J0cmZhM0QrWXRaT3pZRFRaYTNwVm1CczI5cnV0a3NyTWtCaFBRYis0dmgxK1R6QmxCbG02eTR5M0oyT0YwQmFMUnIyWVNTVjNQYmpxS1YrYm1WdjNVOFRla1pnRDhkbTQzMDNPRUFPWS9SdVI2Mm0xQ3RBODFYNElVOUJVbXlsYjc4ZktaZVErTEgveVpSVERXNm1iL2VEVGlMZVQycU1NRm9iTTd4NnkraFRJZmpUVy96Z3huWXNERmk2aUdaNkM2ZDlvcFl6eHh6UzZpbVp3QkdPajkxT0gyL0RnWklkVytmc1U2ZTIwT3JEbm9ST3BkU1duUGczV2JOcEh0cmV4c0RCQ3F6WEh5Q1EwRGlIQi9QUkd4aVpYWVBWZWN2TVFNcjVmR2huVitvVjVPeTFFRG5GQTJIR2x3bHVpQWNaaHhpRXU3VFhaZlVMSGhFS1hFM2hhNWF5aWhtaEdBOVJaLytUR2I3am43OGo5RVN4ZUhDd2NEMktZUlRBcmtvWG51UGpKQUgyRHRvS2xnaVV5V1BSTEp6djZoMWdFRnFmWi84aDIvYzBKeDNOcVVaSnlBMlo2aGRBV0kveXJSTGRUOEV6SE5zdWcwektpYVdlS2VnbkdMUU1wRE9hNWNpVFl5YlVMaTJiZE12NUduWFdoWVZlRHVtWjJ0c3hPRzQxSzJhR1czU0RwSlJZMElOaDVZQWdEQndMM3JJcjdGcWs0RFV0Z0JqRyttZXgzSW4wUk04aUNmak5nY0dEQTdDT1FhNUM5aUZpOEQxdFlqOWNnUVdmaUV1cnA5K0xWSDVIQ3ZaZzUrQno5UGl6MGw3R09YNEQ4RmhwYmpzUWhSaUlXNzZZWi9nSXAzb1hVWU0zMXBCTG01MkZRUVh0cVBhM3d2NUMvRkRPWW1ZYlRudjNieFBZT2Vnc2ZZZDJ4TUt3eWcycWVsajJiT2grTDZ5OW90MFJhZlJHNUJ1VnY0SG9ZeFBkTHV3OXczbmhiSFhjd1FJSWlRcEZnV0FsM3NNQVE4WWpnOWliN3JrUVlpWVU5SDdOMUxoRUVqWERROVl0RGYzODBQdE5xQmM5QUkrMEkyWDhwcFhDNXNHTWRJUWx4U0JTTUdsQ1lNV2cwYmRhOHZvVSs3ZG53REowSWV3N29ZMnNhZjlycWtmaHp2VmtubTh6Z3pHRGhUQUVSRVlOUlpkRWZhdXRZbDFlbnhIV0d5QWZjTGR0Znh6RjdWdG0yOC9wOXNTU21aT2U0Y3c0WUJ6bEdQd3QzLzVjUXdwc3d0ZzFySm1JUm5obUNnYUFUS21ZMGRkdm45VHdvT1F2bU9VUmFUUXlYSS84WThGVmNEekIwR002dll6ZzRoYlhIUDVNbVA1TzhXQklUaDVoQk5ROTBmb0d5ZlNHZXZ3aTJDMjlFZC94SXl2WUZEQmVQQmtwQ0FuR1laN0I0Rm1YN004RGxvT3N3N1NhbWtybitNWGo5RkxycGVlREgwVGlZZ1dkb2pYYW82L2NTZURiRDNxMWtiMmlYeCtQMlhGS01pSjhtMkRpeFBBMDE0TnhNdGxtTUowamI5dG5aWnh4bkRPZmtCQlFDdzJHamhjVkswMld5bmdWbHllWXhUSEJjQ3VFQ0M0eldXVm5pM21TNnJ3amNPWmU1dnNxNk9zcjJTZUl4QnBpNGJ1RDV4UUc3TEptOTBNRlNNQ1J3aVNMU202bjFqd3VWM3J1eXhjMHNrVVJyTXREcEdpZE1zWkNDL2FxeXp3cTlNa1VyekkxR0FveGEwRTdhNDVXdTdBLzFKMlBkY0Q4Q0JLcEV1OVNPbk1QTDk4M3o1eE50UFNzUkdHWW9Ba2pnRWdtL1o5OVFIeTRqbDNlRDdSOVVqbUFDT0JXSlE4VGlQbHYrMmZ0MTNCYkU2WVFhQ0RYdWh0a2FpdUxOb05lUXduNUdDcU5ZUHNteUk4YUlSYUx1UTY0YlFpRVFoeGxnRWV4b1RLL2pvSnloMVlHUlNSak1DMUVUQWsra1FFeGJVSDRYaEJrSXM3aEtwcFl2dzJ3RXIxbmltRFdBRVNJTWVtQTJTb3pQUi81OFlvUUV1QUNEWUpjZ0IzT1dPSEFkUWZ4N2FmUHE4TUZxVVovRWFFQUt3Ulo3ZmVZWEt5MGV1ZEt5R3BzYVZrekdTTnRnQk9USXBwdEdNMkFMS1hFQW1IZlJ1S0JnaWZGRUJsbjZsc1Ava091S1lQYVVvZXVvRUd3WXBIdnF4cjllSzl6a01EUytUelNzTURvSkF1ejJyRGNPaC9udktzVm5XTkR4TFFpWXB0MTFpekpmazdUVnpES1BNU0FBQmlIdzRONDV2ZVRoUGY2VFc5YnlsTEpndzZEQ3pOaVpUTmVZK0hxV0hoTEc5RUpOM1lpVTdNQklhYThSZ1NBbEVvdGZxSjkxODEzOTQxZlE3YitTUU1aVkFZWmttTFdSdWhodHlnUWgxQmlMVklzRGpFeElnUE5FRFFnREVwQUlCcmx1eUUyRG1UQ1dpQitnSmdBZGpCSE1FcEtJY1FqMGFPb2haZzRZanpHV3lKQWlVQ0FIVVFNTkIwa1JjRVFiYkJhNGlSL2kvd0gzRDVQTXBkMnQ1UUFBQUFCSlJVNUVya0pnZ2c9PSIsInN1cHBvcnRlZEV4dGVuc2lvbnMiOlt7ImlkIjoiaG1hYy1zZWNyZXQiLCJmYWlsX2lmX3Vua25vd24iOmZhbHNlfV0sImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIkZJRE9fMl8wIl0sImFhZ3VpZCI6ImZiZWZkZjY4LWZlODYtMDEwNi0yMTNlLTRkNWZhMjRjYmUyZSJ9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMC0wNy0zMCIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiZVNlY3UgRklETzLCriBORkMiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDE5MTAyMjAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4xLjEiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMyJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMC0wNy0zMCJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjAtMDctMzAifSx7ImFhZ3VpZCI6IjYyZTU0ZTk4LWMyMDktNGRmMy1iNjkyLWRlNzFiYjZhODUyOCIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiNjJlNTRlOTgtYzIwOS00ZGYzLWI2OTItZGU3MWJiNmE4NTI4IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ill1YmlLZXkgNSBGSVBTIFNlcmllcyB3aXRoIE5GQyBQcmV2aWV3In0sImRlc2NyaXB0aW9uIjoiWXViaUtleSA1IEZJUFMgU2VyaWVzIHdpdGggTkZDIFByZXZpZXciLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDcyLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX0seyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AzODRyMV9lY2RzYV9zaGEzODRfcmF3IiwiZWQyNTUxOV9lZGRzYV9zaGE1MTJfcmF3Iiwic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjgsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjgsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlES2pDQ0FoS2dBd0lCQWdJVWVmK1Z2SGtjVFFuRUQrK3dKTS9JeHpTVUxrMHdEUVlKS29aSWh2Y05BUUVMQlFBd0pqRWtNQ0lHQTFVRUF3d2JXWFZpYVdOdklESXdNak1nUmtsRVR5QlFjbVYyYVdWM0lFTkJNQjRYRFRJek1Ea3lOVEV4TXpJME1Wb1hEVEkwTVRJek1URXhNekkwTVZvd0pqRWtNQ0lHQTFVRUF3d2JXWFZpYVdOdklESXdNak1nUmtsRVR5QlFjbVYyYVdWM0lFTkJNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQW91Rk1UT0thRTBZdGV4T29pc1N4cCtFYmk1SUE0ZXNFU2N4MTZselFkcVY2L2VaODJLdEplTlhFdU5rQlZaRHBjMzJnU3R1eExCSDhtZ3NvSEJGYWkyRGtqZkJuNXFid1IvYzUrc25sd1p2amdWQTBoekt3OUN3QWVBd1JENWtyV3Q4OC9DVnlDa01jZ0xTR3dacy9yajdGL0xzM0ViZzdNcUxiYlFKOUNvemJiTGRKVVlJSGNQcFNaUHRvTXJaYjRHdm5pNmlWUzlVdkNLZ3BxYzZMR1Jtb1lHRzRaUjNsR0ovWFFaZnUrR2VKVzY3aWltTWoveW9YT3d4dWN4aXZaSEZrNmNRU2d3dXdpb2VObTR3dms4M0xoU3VXY3RmMmtBeVFjWjdrVW5wTmVlK2Q0TWdybUdVNFhNRkxpVGd1dGFCK2U5VjhkNUpUa1VPSGlMenRrUUlEQVFBQm8xQXdUakFkQmdOVkhRNEVGZ1FVTTVTQjViSHJWK2pwSU9NZEpsN3U3YmNuVFk4d0h3WURWUjBqQkJnd0ZvQVVNNVNCNWJIclYranBJT01kSmw3dTdiY25UWTh3REFZRFZSMFRCQVV3QXdFQi96QU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFDb3dSM0tUTGZpZEp5UUZOcUVGZlVyZlo5YWE5ZWdwT1F0TlJKZExTdEo2eHUyV2ZMd3ZHNG9qR0psQktObmZhNURJY3lRWWYvOHFKNGVsaUFWZU5YdVltZU1tZ05nWlp5dVk2RzF5V0NEMlYzc0Q2WjR1ajNTYmFET0hqM2dIdnN6Z1FocmhUMWgvcHVIUWtuNitoWUtBcDc3a003SWM2QVovUkZianBtTExrMkQwc0UxbHpULzAyaStCaDdNOHNtYWlEWjkrK0pHenhlU3VuOFcxSGxlWlVtMnFLR21SYTRYUGRyeVQ3eDZLR1VHblU0YTNicFVtVmVZOXJRL3NmTWQ1WlRvbyszdW5GV0R6b1ZWMnZOdTgrK1ZMQzl6bzQwRmFLUUxyOVZBSkRKNHlMRU5SN0tybVY4TDBjQ1hLSkdaV0FXdEc1UkdUbUhJaGQrbkI0MWc9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFmQ0FZQUFBQ0dWcytNQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUhZWUFBQjJHQVYyaUU0RUFBQWJOU1VSQlZGaEhwVmQ3VE5WMUZELzNkNTl3ZVFTSWdTOUFRQVhjRkxBUVppOWZwZVZ6MXRZL1dUWnI1V3hwYzdXNWtuTGE1akkzWjg1c3JTMm5NMnNqdFd3WlM3SVVINEg0eENuRVF4NERBWkY3NFY3dXM4ODV2OS9sSW5CdlZKL0I0UHY5bnUvNW51LzVudk01NTZmekEvUXYwSGIvSXJYM1ZGS1BvNDVjbm00aW5VSVdZd0xGUm1aUVV1d2pGRy9OMWlSSGgxRVowTlJWUnVkcXQxQmQrMm5TS3lTL09oeXMwK2xrM2UvM2tROXF2RDRaVXRhNFZWU1V1WTBlaXB5aVRoQWZvY29PUlZnRHV1dzNxS1JpQWQzcmJjRXRqVGpZSW9mNldhSHNDbXpWUFdDTXgrY2doOHRMcVdNS2FNV3NVakxxbzJSdEpJUTBvT3ptZXJwUXU0ZXNaZ3NPTmtHeEg3ZDBrZHZUVDE3czRPTVU3Vkk4WmhqZ0dhTStBcTlpRU51OFBpZjF1ZHowN013dktXZjhHbFZvQ0VZMDRQQzVXZFRhWFlGYlI4dk52TDUrM0tnZmI1eE5NeWE5UmFtSml5bmFNbEdUVnRGbHI2YmE5dStwcW5FWDR1TXVSUmdqU1lFaHJON3V0RkZlNmxxYWw3TmZrdzVpbUFHSHluUHBiazhWbVkweHN0bnB0bEZDVkNZdHpUdUJOODNRcE1MalR0ZXZkUHpTVW5KN2U4bWtqeFozOWZYYktEZmxkWnFidlUrVFVnR25CVkY2ZlEyaVBIZzRXMTZVV1V3dnpiazE2c01aRStQbjBwdno3SlNldUF5ZXM4bGNwQ21hS3VvL3ArcVdyMlVjd0lBSFdydlAwWUV6aFhBdExBYnNzSGhwN2lHYW12eWlqUDhyeXFyWFVXWDlYb293eHlBdWZOQnJwNDNQT0JGWFpsa2Y4TURSaXFjcHlvd0F3cHV6MngrZld2ei9EdGRlOXNtc3p5Z3RjUjZDMXdiZHpCbDZPbHE1V05ZWTRvR2F0aEpNcmtURXgwakFSU0hBVnMrNXJZa1FOWGIrUWdmUExzUTZnWHlJbnNyZVFmbXBtN1JWRllmTDg2bjFmaVVPa1l2U2hrVVB4dmJ1a3pveTZLMWloTTFobzNYelc2RXZTZlhBK2RwaVdHYVdkK2RvWHpMem1Hd0tZRkxDQXNSQWxQQkFoTWxDRlhVN3RCVVZQcjhIZ1ZjSkhXcStGMDBwbHIrRE1UZHJQNHp2eFkxMWtOTWh4VCtTZVRHZytkNFY1TFFKaXR5VUdKTkI4VkZac2pnWUJaTS9JSS9YQ1RrajBxeURPcEYyQVZRMTdDSWpVcC9EblQxVWtMNUY1Z2RqK3NTMXdnMWdFM2dpZ202MGZDWHpTblBYYnlBUGJJWHYrSURwRTE2VGhhSElTOXNreWhsbU1FNUYzY2ZxQUtocTJDMEU1UEgxZ1lhWGFMUERrWkcwSERKT25LV0hwNTFJMHo1U091eDhlMVdBdVp6ZEhRclRrcDhUbWpYb0krbGEwd0dac3p1YnFiTzNpZlE2QS9XN3ZWU1lzVjNtUjBKS3drS2M0V0hpQmttUjhJM0NDZ0k4N29PTDRxelQ1UCtSVUpCZWpFT2dBUEs4aFlQemF0TStlSVRwMklPOXlUUW1lcm9tUFJ4eDFxeEFjc2lsZS91YlNlRWJjV1FHWUVDZ2hjTFkySHlLam9nakgyNWhNcGpwVXYxT3VnbGk0ZWgyZVJ3ME8zMmJKamt5dUNnTnpnMHZ6bFlNU2lTczB1b280TUc3aE1PakNFYVgxeUZFMG5TdmpCenVUbkVwSzg2WjhJb3FGQUl1Ync4a2c5QXJFYVJFV1NaSStqSDRYYnA2ZzlFOUVuSlQzb2FSekROK01VSkJRREhuNTZhOG9VbUVCdXNPeEJzL041K3RKRWJQa0FGRGo4VUd2T3MvSVd2Y1NnbEdCaHZTNy9GVFlmcFdHWWREWThmUEF4V1NBMzVzVEM0cDQrTG00QWFxSW9QZVF0ZnVmSzZKaDBaaHhsYnNVWE9TbVhOaWZENVpUQWt5RG9mYmJjY2x4bkE4V05BcXhDYlJOeWtoWHhRcGFEdzY3ZlhVWWJzaUcwS2h0djJvZUl2aDhyaFFNWU9jRUFxWEcvZUkrem5nT2M1eXhyOHE4MklBTTFjL0ZMRk9wbHF1NWVGUVhyTVp6R2NWQ2pZYkxXRzVJNEJUMWV1UnJsYnh0Tk90TWl0RERFaExYSUl5bkFBdnVPRVdFM1gzTmRBZnQ5NFZnYUc0MlhJUXQwWlg2UGVDRS9xUUZlOXJLNkh4N1lVNTBLdkg3Zlc0ZlMrcTdLS0JKeHNnZ0JYNXBTQUdoMWpJclZoNXpRNnczUmZhYWhCWG0vYUNiQ1pUakNVRlVUeVdacVc5cDYyTWpKUFhWcU9yUGdNTzROdjc0R2tmK293ZnROVkJEUW5qRkpxSFN3MTdwWHZoV1c1S1pxZS9RNDlOL1VTVENBVldvUVhGSUhCSFhYZTNGUHJVRHN1R0RtdEYvaEhLVEhwZWt4aGlBT1BJK1NKcTZTNkhGNEk5WVd6a0JKVG80NmlVTXpXcDhQaXIvUmlkdUx4S1lzU2tzVjh2TGxPUXZoR1gyWWxSME9CaEJqQyt1L2dFY3ZZMEFwSzdZazQxTnhqUFNRbldGSFRGNjZVcmpnZXZCOEN1NWErbDJ2WVNSUHR1VkRvNzNoaGRNU0huVVg3dFRqc1ZaR3hBbC9XcHRpT0lFUTFnbkwyOW1YNi90UjF0bWxrWWo4VzRYK0NTaldjVURHWTFOcFMvQzdoU0txaU1MTS9sMlFtU1daNzNEZHorZ2lvOEJDRU5ZUFE0NnFua3p3WFVicXZCa3hqVVFzV2ZaRmdidW8zckFmK3dON2pPTzkwK3lueDRQaTNMKzBuWUwxU2NoRFVnQVA0Z1BWLzdJZDFxKzFIU2htdUdrSXFXUlBneXhNRnFQOEhmalRualh3WTViUWZiSmN0Nk9JektnTUhvdEYvSGUxZWdzYXhIU3FHNndmZG1RNXg4TnlURkZxQmNwMmlTb3dIUjN5azUrMzZoRjd2WEFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJGSURPXzJfMCIsIkZJRE9fMl8xX1BSRSIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsImxhcmdlQmxvYktleSIsImNyZWRCbG9iIiwibWluUGluTGVuZ3RoIl0sImFhZ3VpZCI6IjYyZTU0ZTk4YzIwOTRkZjNiNjkyZGU3MWJiNmE4NTI4Iiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibGFyZ2VCbG9icyI6dHJ1ZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOmZhbHNlLCJhbHdheXNVdiI6dHJ1ZX0sIm1heE1zZ1NpemUiOjEyODAsInBpblV2QXV0aFByb3RvY29scyI6WzJdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjgsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4LCJ0cmFuc3BvcnRzIjpbIm5mYyIsInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi04fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotMzV9XSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5Ijo0MDk2LCJtaW5QSU5MZW5ndGgiOjgsImZpcm13YXJlVmVyc2lvbiI6MzI5NDcyLCJtYXhDcmVkQmxvYkxlbmd0aCI6MzIsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjoxLCJjZXJ0aWZpY2F0aW9ucyI6eyJGSVBTLUNNVlAtMiI6MiwiRklQUy1DTVZQLTItUEhZIjozfSwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjEwMH19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0wNC0wNyJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjQtMDQtMDcifSx7ImFhZ3VpZCI6ImFiMzJmMGM2LTIyMzktYWZiYi1jNDcwLWQyZWY0ZTI1NGRiNyIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiYWIzMmYwYzYtMjIzOS1hZmJiLWM0NzAtZDJlZjRlMjU0ZGI3IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlRPS0VOMiBGSURPMiBTZWN1cml0eSBLZXkifSwiZGVzY3JpcHRpb24iOiJUT0tFTjIgRklETzIgU2VjdXJpdHkgS2V5IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2ludGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQ0xEQ0NBZElDQ1FDdjF2bHFLZVc1ZWpBS0JnZ3Foa2pPUFFRREFqQ0JuREVMTUFrR0ExVUVCaE1DUTBneER6QU5CZ05WQkFnTUJrZGxibVYyWVRFUU1BNEdBMVVFQnd3SFZtVnljMjlwZURFUE1BMEdBMVVFQ2d3R1ZFOUxSVTR5TVNJd0lBWURWUVFMREJsQmRYUm9aVzUwYVdOaGRHOXlJRUYwZEdWemRHRjBhVzl1TVJNd0VRWURWUVFEREFwMGIydGxiakl1WTI5dE1TQXdIZ1lKS29aSWh2Y05BUWtCRmhGdlptWnBZMlZBZEc5clpXNHlMbU52YlRBZ0Z3MHhPVEExTVRRd05qVTBNakZhR0E4eU1EY3lNRFV5TURBMk5UUXlNVm93Z1p3eEN6QUpCZ05WQkFZVEFrTklNUTh3RFFZRFZRUUlEQVpIWlc1bGRtRXhFREFPQmdOVkJBY01CMVpsY25OdmFYZ3hEekFOQmdOVkJBb01CbFJQUzBWT01qRWlNQ0FHQTFVRUN3d1pRWFYwYUdWdWRHbGpZWFJ2Y2lCQmRIUmxjM1JoZEdsdmJqRVRNQkVHQTFVRUF3d0tkRzlyWlc0eUxtTnZiVEVnTUI0R0NTcUdTSWIzRFFFSkFSWVJiMlptYVdObFFIUnZhMlZ1TWk1amIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBVGpiU1pkNjEvN0hhb3h5b3hsM3loNnRqazN0TDZBU0NDdW0vMm5kcTg2RFFMdCtEVTZNVjZmNC8rK3VwQVBiVFpVNmpXbnZJTG92dG5zUmdDV3dVWVJNQW9HQ0NxR1NNNDlCQU1DQTBnQU1FVUNJRWlOZk5wQUxaSUg4bjFWeVhwRnlMSXpEZVpFWk9DUmlLaDQ0dW5pYUJaUEFpRUFvZGFuT2xQVUVDakdIRWYrRTRkVEtreUNscExpNEpkRUprVkhRcElYRUpBPSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFnQ0FZQUFBQnplbnIwQUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUtUMmxEUTFCUWFHOTBiM05vYjNBZ1NVTkRJSEJ5YjJacGJHVUFBSGphblZOblZGUHBGajMzM3ZSQ1M0aUFsRXR2VWhVSUlGSkNpNEFVa1NZcUlRa1FTb2dob2RrVlVjRVJSVVVFRzhpZ2lBT09qb0NNRlZFc0RJb0syQWZrSWFLT2c2T0lpc3I3NFh1amE5YTg5K2JOL3JYWFB1ZXM4NTJ6endmQUNBeVdTRE5STllBTXFVSWVFZUNEeDhURzRlUXVRSUVLSkhBQUVBaXpaQ0Z6L1NNQkFQaCtQRHdySXNBSHZnQUJlTk1MQ0FEQVRadkFNQnlIL3cvcVFwbGNBWUNFQWNCMGtUaExDSUFVQUVCNmprS21BRUJHQVlDZG1DWlRBS0FFQUdETFkyTGpBRkF0QUdBbmYrYlRBSUNkK0psN0FRQmJsQ0VWQWFDUkFDQVRaWWhFQUdnN0FLelBWb3BGQUZnd0FCUm1TOFE1QU5ndEFEQkpWMlpJQUxDM0FNRE9FQXV5QUFnTUFEQlJpSVVwQUFSN0FHRElJeU40QUlTWkFCUkc4bGM4OFN1dUVPY3FBQUI0bWJJOHVTUTVSWUZiQ0MxeEIxZFhMaDRvemtrWEt4UTJZUUpobWtBdXdubVpHVEtCTkEvZzg4d0FBS0NSRlJIZ2cvUDllTTRPcnM3T05vNjJEbDh0NnI4Ry95SmlZdVArNWMrcmNFQUFBT0YwZnRIK0xDK3pHb0E3Qm9CdC9xSWw3Z1JvWGd1Z2RmZUxacklQUUxVQW9PbmFWL053K0g0OFBFV2hrTG5aMmVYazVOaEt4RUpiWWNwWGZmNW53bC9BVi8xcytYNDgvUGYxNEw3aUpJRXlYWUZIQlBqZ3dzejBUS1VjejVJSmhHTGM1bzlIL0xjTC8vd2QweUxFU1dLNVdDb1U0MUVTY1k1RW1venpNcVVpaVVLU0tjVWwwdjlrNHQ4cyt3TSszelVBc0dvK0FYdVJMYWhkWXdQMlN5Y1FXSFRBNHZjQUFQSzdiOEhVS0FnRGdHaUQ0YzkzLys4Ly9VZWdKUUNBWmttU2NRQUFYa1FrTGxUS3N6L0hDQUFBUktDQktyQkJHL1RCR0N6QUJoekJCZHpCQy94Z05vUkNKTVRDUWhCQ0NtU0FISEpnS2F5Q1FpaUd6YkFkS21BdjFFQWROTUJSYUlhVGNBNHV3bFc0RGoxd0QvcGhDSjdCS0x5QkNRUkJ5QWdUWVNIYWlBRmlpbGdqamdnWG1ZWDRJY0ZJQkJLTEpDREppQlJSSWt1Uk5VZ3hVb3BVSUZWSUhmSTljZ0k1aDF4R3VwRTd5QUF5Z3Z5R3ZFY3hsSUd5VVQzVURMVkR1YWczR29SR29ndlFaSFF4bW84V29KdlFjclFhUFl3Mm9lZlFxMmdQMm84K1E4Y3d3T2dZQnpQRWJEQXV4c05Dc1Rnc0NaTmp5N0VpckF5cnhocXdWcXdEdTRuMVk4K3hkd1FTZ1VYQUNUWUVkMElnWVI1QlNGaE1XRTdZU0tnZ0hDUTBFZG9KTndrRGhGSENKeUtUcUV1MEpyb1IrY1FZWWpJeGgxaElMQ1BXRW84VEx4QjdpRVBFTnlRU2lVTXlKN21RQWtteHBGVFNFdEpHMG01U0kra3NxWnMwU0Jvams4bmFaR3V5QnptVUxDQXJ5SVhrbmVURDVEUGtHK1FoOGxzS25XSkFjYVQ0VStJb1VzcHFTaG5sRU9VMDVRWmxtREpCVmFPYVV0Mm9vVlFSTlk5YVFxMmh0bEt2VVllb0V6UjFtam5OZ3haSlM2V3RvcFhUR21nWGFQZHByK2gwdWhIZGxSNU9sOUJYMHN2cFIraVg2QVAwZHd3TmhoV0R4NGhuS0JtYkdBY1laeGwzR0srWVRLWVowNHNaeDFRd056SHJtT2VaRDVsdlZWZ3F0aXA4RlpIS0NwVktsU2FWR3lvdlZLbXFwcXJlcWd0VjgxWExWSStwWGxOOXJrWlZNMVBqcVFuVWxxdFZxcDFRNjFNYlUyZXBPNmlIcW1lb2IxUS9wSDVaL1lrR1djTk13MDlEcEZHZ3NWL2p2TVlnQzJNWnMzZ3NJV3NOcTRaMWdUWEVKckhOMlh4MktydVkvUjI3aXoycXFhRTVRek5LTTFlelV2T1VaajhINDVoeCtKeDBUZ25uS0tlWDgzNkszaFR2S2VJcEc2WTBUTGt4WlZ4cnFwYVhsbGlyU0t0UnEwZnJ2VGF1N2FlZHByMUZ1MW43Z1E1Qngwb25YQ2RIWjQvT0JaM25VOWxUM2FjS3B4Wk5QVHIxcmk2cWE2VWJvYnRFZDc5dXArNllucjVlZ0o1TWI2ZmVlYjNuK2h4OUwvMVUvVzM2cC9WSERGZ0dzd3drQnRzTXpoZzh4VFZ4Ynp3ZEw4ZmI4VkZEWGNOQVE2VmhsV0dYNFlTUnVkRThvOVZHalVZUGpHbkdYT01rNDIzR2JjYWpKZ1ltSVNaTFRlcE43cHBTVGJtbUthWTdURHRNeDgzTXphTE4xcGsxbXoweDF6TG5tK2ViMTV2ZnQyQmFlRm9zdHFpMnVHVkpzdVJhcGxudXRyeHVoVm81V2FWWVZWcGRzMGF0bmEwbDFydXR1NmNScDdsT2swNnJudFpudzdEeHRzbTJxYmNac09YWUJ0dXV0bTIyZldGblloZG50OFd1dys2VHZaTjl1bjJOL1QwSERZZlpEcXNkV2gxK2M3UnlGRHBXT3Q2YXpwenVQMzNGOUpicEwyZFl6eERQMkRQanRoUExLY1JwblZPYjAwZG5GMmU1YzRQemlJdUpTNExMTHBjK0xwc2J4dDNJdmVSS2RQVnhYZUY2MHZXZG03T2J3dTJvMjYvdU51NXA3b2Zjbjh3MG55bWVXVE56ME1QSVErQlI1ZEUvQzUrVk1HdmZySDVQUTArQlo3WG5JeTlqTDVGWHJkZXd0NlYzcXZkaDd4Yys5ajV5bitNKzR6dzMzakxlV1YvTU44QzN5TGZMVDhOdm5sK0YzME4vSS85ay8zci8wUUNuZ0NVQlp3T0pnVUdCV3dMNytIcDhJYitPUHpyYlpmYXkyZTFCaktDNVFSVkJqNEt0Z3VYQnJTRm95T3lRclNIMzU1ak9rYzVwRG9WUWZ1alcwQWRoNW1HTHczNE1KNFdIaFZlR1A0NXdpRmdhMFRHWE5YZlIzRU56MzBUNlJKWkUzcHRuTVU4NXJ5MUtOU28rcWk1cVBObzN1alM2UDhZdVpsbk0xVmlkV0Vsc1N4dzVMaXF1Tm01c3Z0Lzg3Zk9INHAzaUMrTjdGNWd2eUYxd2VhSE93dlNGcHhhcExoSXNPcFpBVEloT09KVHdRUkFxcUJhTUpmSVRkeVdPQ25uQ0hjSm5JaS9STnRHSTJFTmNLaDVPOGtncVRYcVM3Skc4Tlhra3hUT2xMT1c1aENlcGtMeE1EVXpkbXpxZUZwcDJJRzB5UFRxOU1ZT1NrWkJ4UXFvaFRaTzJaK3BuNW1aMnk2eGxoYkwreFc2THR5OGVsUWZKYTdPUXJBVlpMUXEyUXFib1ZGb28xeW9Ic21kbFYyYS96WW5LT1phcm5pdk43Y3l6eXR1UU41enZuLy90RXNJUzRaSzJwWVpMVnkwZFdPYTlyR281c2p4eGVkc0s0eFVGSzRaV0Jxdzh1SXEyS20zVlQ2dnRWNWV1ZnIwbWVrMXJnVjdCeW9MQnRRRnI2d3RWQ3VXRmZldmMxKzFkVDFndldkKzFZZnFHblJzK0ZZbUtyaFRiRjVjVmY5Z28zSGpsRzRkdnlyK1ozSlMwcWF2RXVXVFBadEptNmViZUxaNWJEcGFxbCthWERtNE4yZHEwRGQ5V3RPMzE5a1hiTDVmTktOdTdnN1pEdWFPL1BMaThaYWZKenMwN1AxU2tWUFJVK2xRMjd0TGR0V0hYK0c3UjdodDd2UFkwN05YYlc3ejMvVDdKdnR0VkFWVk4xV2JWWmZ0Sis3UDNQNjZKcXVuNGx2dHRYYTFPYlhIdHh3UFNBLzBISXc2MjE3blUxUjNTUFZSU2o5WXI2MGNPeHgrKy9wM3ZkeTBOTmcxVmpaekc0aU53UkhuazZmY0ozL2NlRFRyYWRveDdyT0VIMHg5MkhXY2RMMnBDbXZLYVJwdFRtdnRiWWx1NlQ4dyswZGJxM25yOFI5c2ZENXcwUEZsNVN2TlV5V25hNllMVGsyZnl6NHlkbFoxOWZpNzUzR0Rib3JaNzUyUE8zMm9QYisrNkVIVGgwa1gvaStjN3ZEdk9YUEs0ZFBLeTIrVVRWN2hYbXE4NlgyM3FkT284L3BQVFQ4ZTduTHVhcnJsY2E3bnVlcjIxZTJiMzZSdWVOODdkOUwxNThSYi8xdFdlT1QzZHZmTjZiL2ZGOS9YZkZ0MStjaWY5enN1NzJYY243cTI4VDd4ZjlFRHRRZGxEM1lmVlAxdiszTmp2M0g5cXdIZWc4OUhjUi9jR2hZUFAvcEgxanc5REJZK1pqOHVHRFlicm5qZytPVG5pUDNMOTZmeW5RODlrenlhZUYvNmkvc3V1RnhZdmZ2alY2OWZPMFpqUm9aZnlsNU8vYlh5bC9lckE2eG12MjhiQ3hoNit5WGd6TVY3MFZ2dnR3WGZjZHgzdm85OFBUK1I4SUg4by8yajVzZlZUMEtmN2t4bVRrLzhFQTVqei9HTXpMZHNBQUFBZ1kwaFNUUUFBZWlVQUFJQ0RBQUQ1L3dBQWdPa0FBSFV3QUFEcVlBQUFPcGdBQUJkdmtsL0ZSZ0FBQStkSlJFRlVlTnJFbDA5b1hGVVV4bi8zdnZmbWp6T2RtWmNtY1Nha21VeUdxb1FvbEJRWE1WMkovN0R1bExZR0ZIRlJOMEowSVFoU1VBcDIyWTB1dEJaTHNhSllNR2hBVFYxSU54SnIxWkttTnFVWU01a1lrMmttTXpHWm1mZnZ1aGhKdFVMbWpRN05XYjUzM3prZjN6bmZkOTRWMDVsK2dNZUJWNEY3dVQxeENUZ0dqSXZwVFA5RHdGZHNUendzZ2VOc1h4eVhRSFliQVdSMXdBYUN2ajhSQXBUQ1c5L0FMWmZCZFJHQkFGb2lqZ2dHUWFsbUFOZzY0UG11cmV1NHhTSjJZWmxBdXBmb252c1F3U0J1Y1pYcTVTdTQrWG1NN2wySVVBaGMxMDlLVDIrbXVMMzRPekljb3V2WVVjeG5SekNTeWMzMzFhbkxGTjUrbDVWM1RpSVRjWFRUUlBrQUlhWXovU1VnMXVpZ1d5d1M2RTJUL1hvY3JhME5nSTN2dnNlYW5TUFkxMHQ0Y0E4QXhROCtJdmZjWWJRMkV4bUpOR3BKMlQ4RG1vNXlYYXo1QmZTTkNybkRMN0wyNVRtVVcwVnFJU0xEUS9TY1BvRTVjZ0NuVUNBLytqTEJ2dDJ0WTBEb09zN0tDZ2lKbm9oVCsyVVdveXVGQ0Jnb3k2R2F1MHBrWUMrN0o4OGp3eUZtOXU2ak5uTU52WDNubGd4SXZ3d294MEZMSkpBQkE3ZFVKdENiUnVnNmVBcWhhNFN6QTZ4UFhhRDQvbWtBWXZzZncxMWJiWmhYTnFWYXowTUVnOGhvQkx4YnhLTVVHaUhXdjUwRUlOaVhCdHdXQTVBU1pWa28yd1lwLytVUENoc3RHcTFqclZxK1V1ck5HSkN5TEZUTlFqa08wdk1RNFhDZENTbFJHeHNvUEJJSG53U2c4c09QQ0FJdEJBRFl1VGw2VHIwSG1rWis5QldrbEFqRFFGa1dYcVZLNnNnYlJQWTlnTE44ZzlMWk1mVE96aGExUUVyc1hJN0kwQkRtTTA5ampod2djdjhnVHVGR25lNVNtVUFtVGZMMTF3RElQZjhDenZJeVdteEhpeGh3WEpSdGt6eDZCSUMxTHliNDQ1dnpteExURWdtc3VYbFdUcDdDbXAyai9Obm5CUHF5TFhKQ0liRHplU0xEUTJUUGpRT0ttY0ZocWxQVEdMdTY2ek1nQkhnS1oya0o1WGtZcWVUbTBtb1FQcHhRS2J6YU91YWhBd0NVUGhsai9lSWtvY3pkTjZXb0ZFalFPdG9SUXR4ODFnb1ZlSlVLZ1ZRUHNmMlBBckI2OWxNRUJnamc3elVVQ05tY3FuME5vVnNxRSt5L0IvM09UcFJsVS9ucEVucmJ6bWIzL244SG9DcFZndGxNZmVWZStSbG5jUWtaRHJYc2w2Z3hBRnlNN3E2NkQ4d3Y0SzZ0MVhkQWk4SkhKZzh0WWRiYlVTaFFjOHJ3cTN2TEFQd3p0RFlUdmIwRFpWdXRBU0R2Q0FNUWZlUkI3anJ6TVhKSGRHdHRqWTJ6OHVFWmpNNVVLd0FvTU9ySGpHU1N4S0duR3Z2V2NvR2xFMjloa1ByL1JxUnFOWXgwRDNwSHUrKytPcjh0WXVjWDZuL0pQb3hveTBHVWtTaTFxOWVvWExqb0c0QVdqNk9aSnNxeEc0cEFiOVFHNWRobzhSaGFQTmJVZFBzb0RtQkk0UG8yM295dVMrQ2xiUVF3cWdNVHdCTi9YYzhIYmxQaEtlQk5ZT0xQQVFESXNYcWJzcVpLR3dBQUFBQkpSVTVFcmtKZ2dnPT0iLCJzdXBwb3J0ZWRFeHRlbnNpb25zIjpbeyJpZCI6ImhtYWMtc2VjcmV0IiwiZmFpbF9pZl91bmtub3duIjpmYWxzZX1dLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xX1BSRSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiYWIzMmYwYzYyMjM5YWZiYmM0NzBkMmVmNGUyNTRkYjciLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZX0sIm1heE1zZ1NpemUiOjIwNDgsInBpblV2QXV0aFByb3RvY29scyI6WzFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjgsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6OTYsInRyYW5zcG9ydHMiOlsidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN31dfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMTktMTItMDMiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MiwidXJsIjoiaHR0cHM6Ly93d3cudG9rZW4yLmNvbSIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiVE9LRU4yIEZJRE8yIFNlY3VyaXR5IEtleSIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMTkxMjAzMDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjAuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDE5LTEyLTE4IiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJUT0tFTjIgVDJGMi1BTFUiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDE5MTIwMzAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4wLjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMC4wIn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMy0wMy0wMSJ9LHsiYWFndWlkIjoiY2U2YmY5N2YtOWY2OS00YmE3LTkwMzItOTdhZGM2Y2E1Y2YxIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiJjZTZiZjk3Zi05ZjY5LTRiYTctOTAzMi05N2FkYzZjYTVjZjEiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiWXViaUtleSA1IEZJUFMgU2VyaWVzIHdpdGggTkZDIn0sImRlc2NyaXB0aW9uIjoiWXViaUtleSA1IEZJUFMgU2VyaWVzIHdpdGggTkZDIChSQyBQcmV2aWV3KSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzYsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfSx7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDM4NHIxX2VjZHNhX3NoYTM4NF9yYXciLCJlZDI1NTE5X2VkZHNhX3NoYTUxMl9yYXciLCJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6OCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjgsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRE16Q0NBaHVnQXdJQkFnSVVTT0VqVGYvL3lxUmZQVzdRcThxdEl5Q3JBZzh3RFFZSktvWklodmNOQVFFTEJRQXdMekV0TUNzR0ExVUVBd3drV1hWaWFXTnZJRVpKUkU4Z1VtOXZkQ0JEUVNCVFpYSnBZV3dnTkRVd01qQXpOVFUyTUNBWERUSTBNRFV3TVRBd01EQXdNRm9ZRHpJd05qQXdORE13TURBd01EQXdXakF2TVMwd0t3WURWUVFERENSWmRXSnBZMjhnUmtsRVR5QlNiMjkwSUVOQklGTmxjbWxoYkNBME5UQXlNRE0xTlRZd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUUNkdmwyN3cyZ3UxZlBYZUVGYklkcXgwQmFsdlZEVldyUVBKN0hxdml1RXRaSGx4U0x4U0Z0Y1hwVG9sdkx2b2Y4ZjR0TWVyUVRrVkd6Y21Zem0xRUJUNElKdU1tb0VxZmtFRWhXcHNBRE1Gcmpaa3FsWlk5RXF4UXpMb1ZFRW9uRTVvR3hTZFZDeENjTElhY2tweVIvQ0NYdmoxQnQvaFRnRTloVGxGNHBScXhNa3gzcGxGN3k4ZERabFJIV3M3dmJuaG1CQ0dlSTBaUEVRNm5sMm1DZzJyNzRhZEYydTZLOXJyTGZoQkMzUUxFOEVQcmdxVXNJK2hrdXEydEs0TTJTTU9wOHVVVlZrcVVldTNoMGtyM1dWSTBXMDJwa2dyT2dpRktMRk5rU3JiWWhkak1CRGo1aXptcWZjOXhKUktvRFg2MTJxZDhaR1ZIcFQ1QVlGWCsxaEFnTUJBQUdqUlRCRE1CMEdBMVVkRGdRV0JCVFp5VTVEaVEvYTJVRWdFN3FCSzB6aElzUk5SakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VBTUE0R0ExVWREd0VCL3dRRUF3SUJCakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBWHZuQjRTTHVVSmZZTVNWR0Foc3NML1NtV2xpM0ZTY2NneHlkdktsQUNjaWRJSVdLUXFhM3EvUVNVRVF6QzlEZ0VmTWdyN2lDMUJrVFpiSUxib1Y2VVo1a25Oc3ZqRVpXdU1lb2dKOHRnWnMxaFZ2S3daaXp3SittRWNtc2poSXJCWXVvTDFUNnlyT0p2S0ZnMWp2K0N5NFp3QTlCcGsvVjNVT2lyMVZ5SzhkQ3R5SHU2dmZvc290QWRZeDhGQXVSMjQzZ1JUTVY2Sng4SmRpZzJKRElBUU1selZlRHBTVUhYL0sySFhSSHhId2ZnamJnVWpqQnUvNzJyOE9mZWh5aHpIWEkzSzhDRkZkZmxPKzhuRU9KSzN5OEYxaXZnUzV1Ti84U21jWXcvU1RRWXdocnhQdXd6M25QOGJhTXVtNEJCMm5uWW1wQjYwc1gzYmw1azhRVVN3PT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZkNBWUFBQUNHVnMrTUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFIWVlBQUIyR0FWMmlFNEVBQUFiTlNVUkJWRmhIcFZkN1ROVjFGRC8zZDU5d2VRU0lnUzlBUUFYY0ZMQVFaaTlmcGVWejF0WS9XVFpyNVd4cGM3VzVrbkxhNWpJM1o4NXNyUzJuTTJzanRXd1pTN0lVSDRINHhDbkVReDREQVpGNzRWN3VzODg1djkvbEluQnZWSi9CNFB2OW51LzVudS81bnZNNTU2ZnpBL1F2MEhiL0lyWDNWRktQbzQ1Y25tNGluVUlXWXdMRlJtWlFVdXdqRkcvTjFpUkhoMUVaME5SVlJ1ZHF0MUJkKzJuU0t5Uy9PaHlzMCtsazNlLzNrUTlxdkQ0WlV0YTRWVlNVdVkwZWlweWlUaEFmb2NvT1JWZ0R1dXczcUtSaUFkM3JiY0V0alRqWUlvZjZXYUhzQ216VlBXQ014K2NnaDh0THFXTUthTVdzVWpMcW8yUnRKSVEwb096bWVycFF1NGVzWmdzT05rR3hIN2Qwa2R2VFQxN3M0T01VN1ZJOFpoamdHYU0rQXE5aUVOdThQaWYxdWR6MDdNd3ZLV2Y4R2xWb0NFWTA0UEM1V2RUYVhZRmJSOHZOdkw1KzNLZ2ZiNXhOTXlhOVJhbUppeW5hTWxHVFZ0RmxyNmJhOXUrcHFuRVg0dU11UlJnalNZRWhyTjd1dEZGZTZscWFsN05ma3c1aW1BR0h5blBwYms4Vm1ZMHhzdG5wdGxGQ1ZDWXR6VHVCTjgzUXBNTGpUdGV2ZFB6U1VuSjdlOG1ranhaMzlmWGJLRGZsZFpxYnZVK1RVZ0duQlZGNmZRMmlQSGc0VzE2VVdVd3Z6YmsxNnNNWkUrUG4wcHZ6N0pTZXVBeWVzOGxjcENtYUt1by9wK3FXcjJVY3dJQUhXcnZQMFlFemhYQXRMQWJzc0hocDdpR2FtdnlpalA4cnlxclhVV1g5WG9vd3h5QXVmTkJycDQzUE9CRlhabGtmOE1EUmlxY3B5b3dBd3B1ejJ4K2ZXdnovRHRkZTlzbXN6eWd0Y1I2QzF3YmR6Qmw2T2xxNVdOWVk0b0dhdGhKTXJrVEV4MGpBUlNIQVZzKzVyWWtRTlhiK1FnZlBMc1E2Z1h5SW5zcmVRZm1wbTdSVkZZZkw4Nm4xZmlVT2tZdlNoa1VQeHZidWt6b3k2SzFpaE0xaG8zWHpXNkV2U2ZYQStkcGlXR2FXZCtkb1h6THptR3dLWUZMQ0FzUkFsUEJBaE1sQ0ZYVTd0QlVWUHI4SGdWY0pIV3ErRjAwcGxyK0RNVGRyUDR6dnhZMTFrTk1oeFQrU2VUR2crZDRWNUxRSml0eVVHSk5COFZGWnNqZ1lCWk0vSUkvWENUa2owcXlET3BGMkFWUTE3Q0lqVXAvRG5UMVVrTDVGNWdkaitzUzF3ZzFnRTNnaWdtNjBmQ1h6U25QWGJ5QVBiSVh2K0lEcEUxNlRoYUhJUzlza3lobG1NRTVGM2NmcUFLaHEyQzBFNVBIMWdZYVhhTFBEa1pHMEhESk9uS1dIcDUxSTB6NVNPdXg4ZTFXQXVaemRIUXJUa3A4VG1qWG9JK2xhMHdHWnN6dWJxYk8zaWZRNkEvVzd2VlNZc1YzbVIwSkt3a0tjNFdIaUJrbVI4STNDQ2dJODdvT0w0cXpUNVArUlVKQmVqRU9nQVBLOGhZUHphdE0rZUlUcDJJTzl5VFFtZXJvbVBSeHgxcXhBY3NpbGUvdWJTZUViY1dRR1lFQ2doY0xZMkh5S2pvZ2pIMjVoTXBqcFV2MU91Z2xpNGVoMmVSdzBPMzJiSmpreXVDZ056ZzB2emxZTVNpU3MwdW9vNE1HN2hNT2pDRWFYMXlGRTBuU3ZqQnp1VG5FcEs4Nlo4SW9xRkFJdWJ3OGtnOUFyRWFSRVdTWkkrakg0WGJwNmc5RTlFbkpUM29hUnpETitNVUpCUURIbjU2YThvVW1FQnVzT3hCcy9ONSt0SkViUGtBRkRqOFVHdk9zL0lXdmNTZ2xHQmh2UzcvRlRZZnBXR1lkRFk4ZlBBeFdTQTM1c1RDNHA0K0xtNEFhcUlvUGVRdGZ1Zks2SmgwWmh4bGJzVVhPU21YTmlmRDVaVEFreURvZmJiY2NseG5BOFdOQXF4Q2JSTnlraFh4UXBhRHc2N2ZYVVlic2lHMEtodHYyb2VJdmg4cmhRTVlPY0VBcVhHL2VJK3puZ09jNXl4cjhxODJJQU0xYy9GTEZPcGxxdTVlRlFYck1aekdjVkNqWWJMV0c1STRCVDFldVJybGJ4dE5PdE1pdERERWhMWElJeW5BQXZ1T0VXRTNYM05kQWZ0OTRWZ2FHNDJYSVF0MFpYNlBlQ0UvcVFGZTlySzZIeDdZVTUwS3ZIN2ZXNGZTK3E3S0tCSnhzZ2dCWDVwU0FHaDFqSXJWaDV6UTZ3M1JmYWFoQlhtL2FDYkNaVGpDVUZVVHlXWnFXOXA2Mk1qSlBYVnFPclBnTU80TnY3NEdrZitvd2Z0TlZCRFFuakZKcUhTdzE3cFh2aFdXNUtacWUvUTQ5Ti9VU1RDQVZXb1FYRklIQkhYWGUzRlByVURzdUdEbXRGL2hIS1RIcGVreGhpQU9QSStTSnE2UzZIRjRJOVlXemtCSlRvNDZpVU16V3A4UGlyL1JpZHVMeEtZc1Nrc1Y4dkxsT1F2aEdYMllsUjBPQmhCakMrdS9nRWN2WTBBcEs3WWs0MU54alBTUW5XRkhURjY2VXJqZ2V2QjhDdTVhK2wydllTUlB0dVZEbzczaGhkTVNIblVYN3RUanNWWkd4QWwvV3B0aU9JRVExZ25MMjltWDYvdFIxdG1sa1lqOFc0WCtDU2pXY1VER1kxTnBTL0M3aFNLcWlNTE0vbDJRbVNXWjczRGR6K2dpbzhCQ0VOWVBRNDZxbmt6d1hVYnF2Qmt4alVRc1dmWkZnYnVvM3JBZit3TjdqT085MCt5bng0UGkzTCswbllMMVNjaERVZ0FQNGdQVi83SWQxcSsxSFNobXVHa0lxV1JQZ3l4TUZxUDhIZmpUbmpYd1k1YlFmYkpjdDZPSXpLZ01Ib3RGL0hlMWVnc2F4SFNxRzZ3ZmRtUTV4OE55VEZGcUJjcDJpU293SFIzeWs1KzM2aEY3dlhBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiRklET18yXzAiLCJGSURPXzJfMV9QUkUiLCJGSURPXzJfMSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJsYXJnZUJsb2JLZXkiLCJjcmVkQmxvYiIsIm1pblBpbkxlbmd0aCJdLCJhYWd1aWQiOiJjZTZiZjk3ZjlmNjk0YmE3OTAzMjk3YWRjNmNhNWNmMSIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImxhcmdlQmxvYnMiOnRydWUsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjpmYWxzZSwiYWx3YXlzVXYiOnRydWV9LCJtYXhNc2dTaXplIjoxNTM2LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjgsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4LCJ0cmFuc3BvcnRzIjpbIm5mYyIsInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi04fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotMzV9XSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5Ijo0MDk2LCJtaW5QSU5MZW5ndGgiOjgsImZpcm13YXJlVmVyc2lvbiI6MzI5NDc1LCJtYXhDcmVkQmxvYkxlbmd0aCI6MzIsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjoxLCJjZXJ0aWZpY2F0aW9ucyI6eyJGSVBTLUNNVlAtMyI6MiwiRklQUy1DTVZQLTMtUEhZIjozfSwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjEwMH19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMC0xNSJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjQtMTAtMTUifSx7ImFhZ3VpZCI6ImFkMDhjNzhhLTRlNDEtNDliOS04NmEyLWFjMTViMDY4OTllMiIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiYWQwOGM3OGEtNGU0MS00OWI5LTg2YTItYWMxNWIwNjg5OWUyIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ill1YmlLZXkgQmlvIFNlcmllcyAifSwiZGVzY3JpcHRpb24iOiJZdWJpS2V5IEJpbyBTZXJpZXMgLSBGSURPIEVkaXRpb24gKEVudGVycHJpc2UgUHJvZmlsZSkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2LCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX0seyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Iiwic2VjcDM4NHIxX2VjZHNhX3NoYTM4NF9yYXciLCJlZDI1NTE5X2VkZHNhX3NoYTUxMl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwiLCJiYURlc2MiOnsic2VsZkF0dGVzdGVkRlJSIjowLjAsInNlbGZBdHRlc3RlZEZBUiI6MC4wLCJpQVBBUlRocmVzaG9sZCI6MC4wLCJtYXhUZW1wbGF0ZXMiOjUsIm1heFJldHJpZXMiOjUsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwiLCJiYURlc2MiOnsic2VsZkF0dGVzdGVkRlJSIjowLjAsInNlbGZBdHRlc3RlZEZBUiI6MC4wLCJpQVBBUlRocmVzaG9sZCI6MC4wLCJtYXhUZW1wbGF0ZXMiOjUsIm1heFJldHJpZXMiOjUsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRFNEQ0NBakNnQXdJQkFnSVVVY21NWHpSSUZPZ0dUSzBUYjNnRXVaWVprQkl3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRRG01NTViV1k5V1crdE9ZMHJJV0hsZGgrYU5hbm9DWkNGaDdHazNZWnJRbVBVdzBoa1NHNnFZSFF0UCtmWnlTMzNWRXJ2ZytCUXFubXVtZ05oZnhGcmt3RVpFTGVpZEJjQzhDNEFnNG5xcWlQV3B6c3ZJMTdOY3hZbEluTE5MRmNaWS8rZ09pTjZaT1RpaE81L3ZCWk1iajlyaWFBY3FsaVltTkdKUGdUY01HYUVBeU16RU1OeTJubTZFcCtwalA1YUY2Z2kyMXQvVVFGc3VKMWoyUmoveW5NL1NkUnQrZWNhbDVPWW90eEhrRmJMOXZ2djJBMk92NUlUWkNsdzRiT1M5bnB5cFFpbU9aNVFBWXl0bVlhUXBXbC9wTVl6NnpTajhScWtWRE5FSkdxTmZUS0EyaXZMWXdYNmxTdHRNUGFwZzBKODRsOVgwdm9WTi9GcFM0VkNWQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJRZ0tGQWhHNlJhVytoVHk1MmR4ZVQ4YkM5Nkh6QWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQVlNemdMckpMSXIwT292UW5BWnJSSUd1YWJpSFNVS1NtYkxSV3BSa1dlQXRzQ2hERUhwWGNKL2JnRE5LWVdvSHFROHhSVWpCNEN5ZXBZZXZjM1lsckc4bzd6SHhwZlZjYW9MNVNldUprekh4S240YlRhU3A5K012d2FtbnA2NGtaTWlOYkZMa25mUDlrWUtvUkhrTVdoZVJKMVVzUDF6NFNjbWtDZUlMZnNNczZ2cW92cWpXQ2xGc0pwQmNzbHVZSFdGN2JCSjFuNFJ3ZytBVEVvcFk0SWdHdjZadndjK0E5citBVDJocXBvU2tZb0FsK0FOWXdnc2xPZjlzSmUwVitUQTlZWS9VbGFCbVBQVGQwLy9yOXd2Y2VQV1prUGpLb0FDL3pVTmhmRGJoNExWOEdIczNseVgyWG9tTC9MTmM4Sll6eUlhREVoR1F2ZW9QaGgvdHIxZz09IiwiTUlJRFNqQ0NBaktnQXdJQkFnSVVSMzhtcTI2U2Yyc3pWVjJCZEc2V0VON2t1V1V3RFFZSktvWklodmNOQVFFTEJRQXdMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3SUJjTk1qUXhNakF4TURBd01EQXdXaGdQT1RrNU9URXlNekV5TXpVNU5UbGFNQ1l4SkRBaUJnTlZCQU1NRzFsMVltbGpieUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRUlnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTlkwV2I5b1BvUm9Lb1F5V1BhSnB6MTF2cldUZzZ6VHRtTmoyVm9LUm55dktHUnFwemI4M3c1bDZZQTk2VVlrWUJEUVAwaWxPMkRQZTZ3V3FWUjV6RGZSemRjSDhiaCtMN2RHR3ZhZTZoUlRaaGtGa0NwWERzNEhjY2tuckRmOEZDbEo3SGUzOUpmNDIvRzFRbTJ6ejlXV21yUFh0Z2lLL3gwNUdqc1FmR3VERzF6ZjVRVFVVaWU4bHd5bUszVGZkT3ZOZWVKQUFQZTJwbjdJdGZSYityVnJOV2lEemxSbjJ2Tm5aMndQbzR3SC9XSjZkaFhaRytyTVdUK2E2Qm9jZzFVZkl3NmtkdW5HNGJUcFp6c3ZhY0ZZeVIwbXBmK0RlT25wU1dBbXl3SldIdlRsZjJZWHhGeWVYY1RBQ2RRbGNNTkdKMlZoWlE0OHh0UDUvUkJQLzhrQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZDaHk0Mm9raXFjVFMxaXFhL0hSV2prQm40SC9NQjhHQTFVZEl3UVlNQmFBRk9xM1FwQ2VESHRrZXR0VWZBTzZmRTZmMktGaE1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQW4rUkhJUGJ0TUVETmRUMWc4SC9SaXRBa1VkTGdBdDF0V0dXbmxqOWtuYnY0LzRHbFg3QzlwNDVlZlBPOS9hWkw2T1YxWFJLQmk2S210Qlc1SzdudVlFbk14LzVCcUJTYkxUN3JoZHVDNDlUQmVNYjlQSGRYc1RsU1ZOWWVmcjFkR2lkcjRqMHhWQlFMYjFya25EQWJkV0R6S2Z2bmF5S084RnJ3ZTdIeDg0M01HL3JKK2MwWHJ1VXZiZlZUQ0hMaUlXaE03b05EaEw4eG9iNnhVbzlLTEtjU0wrSXRZc08zLzlXYjhROUdqc3FMNEZYc0RjRzFTYVloN0twZnVNbU9peHF6SlpPMm5JaWNQWVJnMUkyU3VpVWZZTzcwdG1kSGNibCtrU1FtU1l0N3JxNHZpSUxnMkd4M2o5cklUdVdUamJhVWFTU1F4Z09tTVNIdXl6TUFDIiwiTUlJRFNEQ0NBakNnQXdJQkFnSVVEcUVSdys0Um5HU2dneGdVZXdKRkVQRFJaM1l3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRREk3WG5IK1p2RHdNQ1FVOE04WmVWNXFzY3VibHZWWWFhUnQzWWJheG45Z29kTHg1c3dIMGxYcmRnamg1aDdGcFZnQ2dZWVg3RTRibDF2YnpVTGVtck1XVDhOM1dNR1VlOFFBSmJCZWlvVjdXL0UraFRaUC8wU0tKVmEzZXdLQm82VUxlTW5mUVpEclZPUkFrOHdUTHEydjVMbGo1dk1qN0p0T290S2E5SjduSFM4a0xtelhYU2FqMFN3RVBoNU9BWlVUTlY0enMxYnZvVEFRUVdyTDQvSjlRdUt0NldDRkU1blVOaVJRY0ViVkY4bWxxSzJieDJ6Nm9rVmx0eURWTEN4WWJwVVRFTHZZMXVzUjNEVEdQVW9JQ2xPbTRjcnB3bkRSTFZIdmpZZVBHQkIvL3BFeXp4QS9nY1NjeGp3YUgxWlV3OWJuU2JIeXVyS3FiVGExS3ZqQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJUcXQwS1FuZ3g3WkhyYlZId0R1bnhPbjlpaFlUQWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQXFRYUNXTXhUR3FWVlg3U2s3a2tKbVV1ZVRTWUt1VTYrS0JCU2d3SVJubHc5SzdIZTFJcHhaMGhkd3BQTmlrS2ptY3lGZ0ZQemhJbXdISmd4eHVUOTBQdzN2WU9kY0pKTmt0RGczNVBYT2Z6U24xNWNGQXgxUk8wbVBUbUliOGRYaUVXT3B6b1h2ZHdYRE00MVphQ0RZTVQ3dzRJUXRNeXZFN3hVQlpxMmJqdEFucS9ORFVBN2JlNEg4SDNpcEMrLytOS2xVcmNVaCtqNDhLNjdXSTB1MW02RmVRdWVCQTduMDZqODI1cnFEcXNhTHM5VGI3S0FIQXc4UG1yV2FOUEcya2pLZXJ4UEVmZWNpdmxGYXdwMlJXWnZ4clZ0bjNUVjJTQnh5Q0pDa1hzTkQwNWRDRXJWSFNKSXMrQmR0VFZOWTlBd3R5UG1ueWIwdjRtU1R6dldkdz09IiwiTUlJRFJ6Q0NBakdnQXdJQkFnSVVleDluVDl2d1pOWFM0ODNMZGlZR2Z3MlNqU293Q3dZSktvWklodmNOQVFFTE1DNHhMREFxQmdOVkJBTU1JMWwxWW1samJ5QkJkSFJsYzNSaGRHbHZiaUJKYm5SbGNtMWxaR2xoZEdVZ1FpQXhNQ0FYRFRJMU1EZ3dNVEF3TURBd01Gb1lEems1T1RreE1qTXhNak0xT1RVNVdqQW5NU1V3SXdZRFZRUUREQnhaZFdKcFkyOGdSa2xFVHlCQmRIUmxjM1JoZEdsdmJpQkNNaUF4TUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUF1MU1ldm55OWR5TzlaVUMzOVNvTWhMY1IvRFhydEYvY2lNMTJ0Y2l5MkVYQVo2TWtyaXZWdENmRVZNOVg2SVNURW5CUDZ1U1lZb3Y2cHB2Nk82SmgyTkhtWW00dytKblM0Vm5DUFU3bUhBTWZWSTJNR1RUTVZPZXcweFVzRzdzSVNJa0lEVUJtdWs4WUs5YzV6aWM5K3ZGUUdMSWtzZFhPNWlWRklnTkc1M2NHWEQ0Wkxab0FQaXUwUEVvenhBcVlJYUk0Z3hLaE9BM1M4L1c4bUlXc3U2b2Z5ajRHdmtGRzZaN2t5RjMxMDdQN213RkhMckkzRU5hUFdNT0ZjVGFHYTBkdysvdlZSd2pSY0VaQlZzdXVULzg3Y2tTczBhNXBrdDN2WkJsYVllVDhwelNyZVY3bW93Y0lNOTBMMmlhQVRsUDBueG1hRTZuT3lUYm9qRlZsMndJREFRQUJvMll3WkRBZEJnTlZIUTRFRmdRVVNYRWgzc2EzYnREdXJtNE1NL0M3UzFsUnV1WXdId1lEVlIwakJCZ3dGb0FVNnJkQ2tKNE1lMlI2MjFSOEE3cDhUcC9Zb1dFd0VnWURWUjBUQVFIL0JBZ3dCZ0VCL3dJQkFEQU9CZ05WSFE4QkFmOEVCQU1DQVlZd0N3WUpLb1pJaHZjTkFRRUxBNElCQVFCNUdjM2hhZnRwN2hLc0Vac28raS9aNW5SdXFkbXpHMldDbFVvUlVxYmFQeWdsbkpEaktSL2tmZ09sNmliYkYvenRobTNLbVhRN0hjRElQMnhNZEc3VTJMMmltYkpRSHFQZi9oMkhxb2piNHJaZ3VlKzZXNGt0U1I1ZWxSOUwxcllxRS9TR1lNNGlFS29WUVN2N1JUMXJ4SWVXaUtzdy9WeHhpL1FPbnN4M0Y3eDgwQ0NZZ0I0RTN5UXg4VlRXNDQwaFRFd1RBMWVNSE9peDMydFB0eXlISWE4UFZWSWZWcEhRSkJhTVZ2djUwOFVFandrYlUycm5qZnpvU1ROUzlBNWpVUThtQlN2ZTk1cmpCMGRvOThFVStEeGRCcVgyK0g2aTV3bElDRmd6aGR6Y3NuZTloR0tUNmx6VFg0Y0lkSnNyWTIreGxlSzBGRlF5NmxHRVZMRWUiLCJNSUlEUGpDQ0FpYWdBd0lCQWdJVVh6ZWlFREpFT1R0MTRGNW4wbzZaZi9iQndpVXdEUVlKS29aSWh2Y05BUUVOQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU1aNi9UeE04cklUK0Vhb1B2Rzgxb250TU9vLzJtUTJSQndKSFMwUVpjeFZhTlh2bDEyTFVoQlo1TG1pQlNjSVpkMVJueDFvZDU4NWgrL2RoSzdoRW03SkFBTGtLS3RzMWZPNTNLR05MWnVqejVoM3dHbmNyNGh5S0YwRzc0Yi9VM0s5aEU1bUdORDZ6cVljaENSQUhmcllNWVJERjRZTDBYNEQ1bkdkeHZwcEF5Nm5rRW10V21NbndPM2kwVEF1Y3NyYkU0ODVIdkdNNHIwVnBnVmRKcHZnUWppVEpDVElxK0QzNWh3dFQ4UURJdituR3ZwY3lpNXdjSWZDa3p5Q2ltSnVraFl5NktvcU5NS1FFZHBOaVNPdld5RE1UTXQxYndDdkV6cHc5MXUrbXNVdDRyajBlZm5POXMwWk93ZHdNUkRuSDR4Z1VsNVpMd3JyUGtmQzEvMENBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUI4R0ExVWRJd1FZTUJhQUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUU13RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCRFFVQUE0SUJBUUMzSVcvc2dCOXBaOGFwSk5qeHVHb1grRmtJTGtzMHdNTnJkWEwvY29VdnNyaHpzdmw2bWVQTXJiR0pCeUoxWG5xdUI1c2djUkVORnhkUUZtYTNtaW84VXBmMW93TTFacmVYckowbUFERzJCcGxxYkpueGl5WWErUjExcmVJRlRXZUloTU5jWktzRFpyRkF5UHVGakNXU1F2Sm1OV2U5bUZSWUZnTmhYSktrWEliNUgxWGdFRGx3aWVkWVJNN1ZvbEJObGxkNnBSRktsWDh1c3Q2T1RNT2VBRGwyeE5GMG0xTFRoU2RldVh2RHlDMWc5K0lMZnozUzZPSVlnYzNpcm9SY0ZEMzU0ZzdyS2Z1NjdxRkF3OWdDNHlpMHhCVFByWTk1cmg0L0hxYVVZQ0EvTDhsZFJrNkg3WGszNUQrV1ZwbXEyU2gveFQ1SGlGdWhmNHdKYjBiSyIsIk1JSURTakNDQWpLZ0F3SUJBZ0lVVG5iYkdJUjJOSHZ6cUlLRkFlUXdHMVhCaXMwd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JCSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVFZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU9zWGozazA0QmFuNFRZZHRaS3FEL09QSnh5RHlhUG1DQlVGVWlhWklnVHRlWm5qM1gyNURoZ3BaWlhzQzREMHlkSWNybEE2d05VSW5PUkwvTDl6QmJURUlNQVZNR282ZzdVS0FtYjJNRjZBSGJuaFlKZDllaWt1cFZOV1NoSE5ZTmM0R0JkTzFZTjZBZlVxdkpoSGJlM1Y0U05NUG1CUkVLSlBWejdUaHdnbWdnVGU4V3MySzAvd3NxdjJ3U0U3cGJDQnNVWmhJWDUxYlpNM3BxRHdKUFRtUkZFdnQwLzZ0RzVlTzhGM2oxNE9YcWZFaG1qbjFWdnhLRFlRT0xaQXhDd3dnQzBQNENkZld2M3k4UFNSOEkzNTRoTzFZK0d6Tmp2SXFYMzhOS0x5d3VJWUhGZXJPeE5seEVNQnZGaFlCdVJ1WUFra2dVYVBxTjZVQmhzSUxyc0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ0NvUkhoaXlObmJuWFJXSUw2WkJYb0JYOVlUTUI4R0ExVWRJd1FZTUJhQUZDQW9VQ0VicEZwYjZGUExuWjNGNVB4c0wzb2ZNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUNRRmFmSkkxLzVXZzlDRUVpbUUxUlA1NFJnUXdUTlRPT1FzTEFDVGUrckl0bEZRekM5WkRoclY4Mjh5WDdqenkrQUFzcDNpeks3VDF0aDJkbDdtK3R1MHN3MlBhL29sYzAybnQ2UHlJdzM0OGdhSHpoSTErMEtFNDVxeHZGRGVMMmxNeGJQZkNZdnlFRWFZemppUUVMVTU5NTFwWEdXeUtNYS80Zkx0TytaS09YaE11VmVxNHJYRFBJNTRXNkpIT2lBYWlLZGl3KzVlM2Mya3QvakZJUXRNNnZNWGc5TE5GemRqRVROdDIwVlg5UWV2UnBGWmZ1Y01HOXdDYVFEb0ZsUHpwVE1KS2hQZXYvaW1KbVpZaEtmcjBsTGNlbXRxakl4TEFvcVpkT1lmSEJnNit2QWNkUEkvaWF1R3BVQXY3WCtVS05tRHdqWjJCYUg0c0x3aEIybSJdLCJpY29uIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwiaWNvbkRhcmsiOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJwcm92aWRlckxvZ29MaWdodCI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsInByb3ZpZGVyTG9nb0RhcmsiOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJGSURPXzJfMCIsIkZJRE9fMl8xX1BSRSIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsImxhcmdlQmxvYktleSIsImNyZWRCbG9iIiwibWluUGluTGVuZ3RoIl0sImFhZ3VpZCI6ImFkMDhjNzhhNGU0MTQ5Yjk4NmEyYWMxNWIwNjg5OWUyIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJ1diI6ZmFsc2UsInBpblV2QXV0aFRva2VuIjp0cnVlLCJsYXJnZUJsb2JzIjp0cnVlLCJlcCI6ZmFsc2UsImJpb0Vucm9sbCI6ZmFsc2UsInVzZXJWZXJpZmljYXRpb25NZ210UHJldmlldyI6ZmFsc2UsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjpmYWxzZSwiYWx3YXlzVXYiOnRydWV9LCJtYXhNc2dTaXplIjoxNTM2LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjgsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4LCJ0cmFuc3BvcnRzIjpbInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi04fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotMzV9XSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5Ijo0MDk2LCJtaW5QSU5MZW5ndGgiOjQsImZpcm13YXJlVmVyc2lvbiI6MzI5NDc2LCJtYXhDcmVkQmxvYkxlbmd0aCI6MzIsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjoxLCJwcmVmZXJyZWRQbGF0Zm9ybVV2QXR0ZW1wdHMiOjMsInV2TW9kYWxpdHkiOjIsInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjoxMDB9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wMi0wMSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzYsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWXViaUtleSBCaW8gU2VyaWVzIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNTAyMDEwMDIiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wMi0wMSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzZ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDItMDYifSx7ImFhZ3VpZCI6IjkzMGIwYzAzLWVmNDYtNGFjNC05MzVjLTUzOGRjY2QxZmNkYiIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiOTMwYjBjMDMtZWY0Ni00YWM0LTkzNWMtNTM4ZGNjZDFmY2RiIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkNoaXB3b24gQ2xpZmUgS2V5In0sImRlc2NyaXB0aW9uIjoiQ2hpcHdvbiBDbGlmZSBLZXkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MTA1LCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH0seyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9pbnRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlCempDQ0FYV2dBd0lCQWdJVUVWMnVZMFYwMWpxYlhQRWpNZll6Q2UrNVZCd3dDZ1lJS29aSXpqMEVBd0l3SURFZU1Cd0dBMVVFQXd3VlEyaHBjSGR2YmlCR1NVUlBNaUJEUVNBd01EQXhNQ0FYRFRJek1ETXdOekF6TVRnd05Gb1lEekl3TnpNd01qSXlNRE14T0RBMFdqQWdNUjR3SEFZRFZRUUREQlZEYUdsd2QyOXVJRVpKUkU4eUlFTkJJREF3TURFd1dUQVRCZ2NxaGtqT1BRSUJCZ2dxaGtqT1BRTUJCd05DQUFTY0kxVGpVTE9VT0xPU3ZKSThpWDdqbGovc2ExZ2lPZEJFcTIwVzZ3a1huenhRSjZLZzFOdW9oc2UraUlTNDBxTUN5eTNBcGFaeHdOUisvMjhWR21Qd280R0tNSUdITUIwR0ExVWREZ1FXQkJRejg5SlFYVHhieWpTbFMzNW1zUEg3YXlpR2V6QkZCZ05WSFNNRVBqQThvU1NrSWpBZ01SNHdIQVlEVlFRRERCVkRhR2x3ZDI5dUlFWkpSRTh5SUVOQklEQXdNREdDRkJGZHJtTkZkTlk2bTF6eEl6SDJNd252dVZRY01BOEdBMVVkRXdRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0VHTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUR3aDhTQXNJdFFLYUt0YTFrdDJidjJwcnZGNVV0V0FrVFYwZWc4a0xmTEtBaUFnZXg5eHBLR0NMUGVpKzhUdUVreHlLUUM5RjY3dDk2SFZ2UVBFK3VVZkJRPT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBVEFBQUFDd0NBSUFBQUFIWHFYSUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFEc01BQUE3REFjZHZxR1FBQUJEdVNVUkJWSGhlN1ozN2J4M2xFWVlUMzJNbnRwTmdURzQ0Y2V6Y25OaEpiTWNYSElKRWdhb3FSZEFpVlJVQ1N0VVdrSG9CVVZWVklZQ1VxcUdrdi9TSGxsWkl0RktMb1ArayszRysxOXZOYTUvanZjenN6cDR6ang2aEpHZDMzdG5kR1U3aU9QYUJiY2R4ek9BTDZUaUc4SVYwSEVQNFFqcU9JWHdoSGNjUXZwQ09Zd2hmU01jeGhDK2s0eGpDRjlKeERPRUw2VGlHOElWMEhFUDRRanFPSVh3aEhjY1F2cENPWXdoZlNNY3hoQytrNHhpaVJ4ZnkydnpSSDMxbjl0M1hGajU2Ky9wN3J5OThlK3NVWG5DY1d1bm1oWnc1TWZiZlB6OVYwZy9lWEVJNXg5R24yeFl5dk4zUlJzbTZ0amlGSk1kUm9Fc1drdGFtR3BIdE9ISTBleUZwUStyeTZ0d2tHbktjY2pSeUlTZVBETkZLR0JIOU9VNVJHcmFRTHo5M2xuYkFvT2pWY2ZMVG1JVjhkdk1remIxeDBiZmo1S0VaQzBtejNpQnhBWTZURGVzTFNmUGRSTC82OUE0dXhuSDJ3KzVDRGczMjBXUTNXbHlWNDNURTZFTFNOSGVIL2xicDdJdkZoYVE1N2pKeGtZNnpGN1lXOHEvdnI5UDRkcVc0V3NmWmhhR0ZwS250Ym4vMXloVmN0dU9rc0xLUU5LKzk0UDFmTCtQaUhXY0hFd3RKazlwVDRoWTRUb3Y2RjVJR05LTTRPU2QvKzJDRDZsZ1F6VGxPN1F0Sm85bkJSNCtONEJ3NUtLSkcwWkRUODlTNWtEU1VlNHBESDJaeDRjcVRteHZGUkltSG9kQmFSQ3VWc0hUeDJNdlBuWDM5aGJrSDc2MVNHNTJkT1RHR0VqMEdUZEdOeFd0NFFacmFGcEtlTkltRFV0emVXS2ViVWw2VVRrRnRWQ3lhRUlVaXBIenRoVGtFZEMvSGp4MmxnZGxUSEMxRVBRdEpUemN0anRoaGZXV1pybDlEaE8xQUxWWG1iMzhpLy8vZDZlT0hLRVhRYzZjT0k2YTdtQmdmcHduWlY1eFptaG9Xa2g1cUlsN2VnUzY0R3BIZGd0cXJSbVNMUWhIaUlxWmJvSkhJSlVxVW9PcUZwR2NaeFdzNzBFVldML3BvUWExV0lJTGxXRnVjb2doeGtkUjhhQklLaUVKRnFYUWg2U2xHOFZvTHVyWjZSVTh0cUdkdGtTb0gxZGNRU1UyR0JxQ3dLRmVJT2hjU3Y5cUNMc21JbHkvTW83L3Q3ZmQvdmtUOXE0cFVJZjcxaHkycXJ5SENtZ2s5K3BLaWFINnFXOGgyRDI5dCtTWmRqS0F6Wjg0Z3BqMGJ0MWJwTEJMSHRhQ3JVQldSUWxCeEpSSFdOT2lKaTRqU09hbG9JZHM5TnJvR0tWRzlLRlF0aUJkYTBMWG9pVHdocUxpZXlHc085S3lsUlBXY1ZMR1FFNGNIOTN4Z2RBSGxSVjFSa3VMcnF5djRKZC9KamlLc09TU1BXRndFNUtHS2hkejl0TXA4cXMxdU4yK3R4cktxeEN6OHBKazdTWlgxUkY0VFNLWklRMlRrUVgwaGR6OG5hcnFNVyt0cnNXWmxoRkQ4cUpsdk9GUmN5ZjYrZzhnelQzcWNORVJNWnFwYnlQaFRhcmVNc1dEMXJGeS9qaDgxY0NlcHNwN0lNdzhObGJpSXlZenVRdExqb1Y0TEc2dFo0TlQwYUhLTmVqNjdlUko1RWxCeEpSRm1tM016ajlOb2lZdWt6Q2d1NVBOUG5Vay9HMnEwc0xHYUhaSVJWQlZoRWxCbFBaRm5HQm90RFpHVUdjV0ZURCtWcTVjdlVhTUZuSnM5RjZ0Wkl4bEJWUkVtQVZWV0VtR0dvUUhURUVtWjBWcklmM3k0bVg0cTFHVUJZeDJiL1BRSEY1SXAxQk5oRWxCbFBaRm5GWm94RGNmR1JoR1dEYTJGVEQ4UGFyR0FzWTVsa2hGVUZXRVNVR1VsRVdZVkdqTU5oNGVIRVpZTmxZWDg3TzQzWDdvbS9wajZLMkNzWTUvMElDcUpKQW1vc3A3SU13bE5tb1pJeW96S1FvYkg4TWZXMXppazVnb1lDemFDOUJUcWlUQUpxTEtTQ0RNSkRadUdTTXFNL0VMR1Q1U0xQNmJtOGhxTE5JajBJQ3FKSkFtb3NwN0lzMGY0QXg2Tm5MaEl5b3o4UWlZUGdEckxhMzkvZjZ6VElBYjZENllIVWNQcDQ0Y1FKZ0VWVnhKaEpxR3BFeGN4bWRGYVNHcXJnTEZhNDBnUG9wSklrb0FxNjRrOGU5RFVpWXVZekFndlpITHJxYTI4eGlJTkpUMklHZzRQU2Y3ZWdZb3JpVEI3cUg2eURqTHlvTEtRMUZaZVk2bm1raDVFSlpFa0FWWFdFM24yb1BFVEZBRjVrRnpJZ3dkUmpkcks1ZURnWUN6U2FHZ1d4VjI5K2dpU0pLRGlTaUxNSkRTRUlxSjBUaVFYTXQ1MGFpdXZzVlRUZVdialpIb1dOVVNTQkZSWlQrVFpnNGF3dkZPUEhFZnBuQWovbGpWQW5lVVNKYm9DbWtWeFQwejVoMXNsb1ZFc0tZcm1SM2docWEyOG9rcTNRT01vTG1Ja29NcDZJczhrTkkyRlJibENHRnBJbE9naWFCYkY5USszaWtNeldVQVVLb3JrUXZiMTlWRnp1VVNWN29MR1VWekVTRUNWOVVTZVZXZ3NzenM1TVk0U0paQmNTT292bHlqUmRkQXNpb3NZSWFpNGtnaXpEYzNudnVLMDB2aENxa1BqS0M1aUpLREtlaUxQUERTbHU5MWN1NFZEaGZDRlZJZG1VVnpFQ0VIRmxVUllvM2o4OU9uMTFaVWJpOWRFZm12YURyR0ZwQVhMSlVwMEx6U080aUpHQXFxc0ovS2NoL0dGckFLYVJYRVJJd1FWVnhKaHpzUDRRbFlFamFPNGlKR0FLdXVKUENlRkwyUkYwQ3lLaXhnaHFMaVNDSE5TeUN6azB0VUYyckhzSHAyY1JKVnVoOFpSWE1SSVFKWDFSSjZ6Zzh4QzBvN2xFaVY2QUpwRmNSRWpCQlZYRW1IT0RyNlFsVUxqS0M1aUpLREtlaUxQYWVFTFdTazBpK0lpUmdncXJpVENuQmEra0ZWRDR5Z3VZaVNneWtwKy9lQU84aHhmeU9xaGNSUVhNUkxjKzhVTktxNGs4aHhmeUZxZ2NSUVhNUkpRWlNVLy8vZ0o1UFU4dnBBMThNVzlMWnBJV1JFandYZnZuS2JpU2lLdjUvR0ZyQWNhUjNFUkl3RlZWbkorUnZFenRodUVMMlE5ZlBYcEhacElXUkVqd2RzL3ZFVEZsVVJlYitNTFdSczBqdUlpUmdLcXJPVG95QUR5ZWhoZnlOcWdjUlFYTVJKODh1NHlGVmNTZVQyTUwyU2QwRGlLaXhnSnFMS1NDSk9EaGszUTZha3BaSWppQzFrbk5JN2lJa1lDN1k4TUp5S3ZORFJtNGlKR212b1g4c3FsaTZqU2s5QTRpb3NZQ2FpeWtnZ3J3ZHpzT1pveERSRW1UZjBMR1VTVm5vVEdVVnpFU0tEOWtlRkU1QlZpWUdDQXBrdERoQ2tnczVBQjZqaVhLTkdyMERpS2k1alNoQ2RGbFpWRVhpSFNjNlVud2hUd2hhd2ZHa2R4RVZPTzgyZlBoaWRGbGZWRWFrN1NRNlVud25Ud2hUUUJqYU80aUNsQjhyQ29zcEpJemNQNjZrclNwS3JJMDhIRVFnWlJwVmVoY1JRWE1VVkpQeW1xckNleU01TnVVaytFcVNHMmtNdExpOVI2TGxHbFYrbnZQMGpqS091WG56eUpwRUxRdzZMaVNpSTdHOVNobnNoVFEyd2hBOVI2TGxHaWg2RnhGQmN4K2FFbkZhVEtlcUtEL2RoYVg2TU9sZXp2NjBPa0dsWVc4Z25wNzVIUU9MNy9yUmthUjFuLy9tR1IvK3ZSWTBxazRrcWlpZjJnM3ZSRW5pWldGaktJS2owTWphTzRpTWtEUGFORXFxd24rbWdQTmFibnphVkZSR29pdVpBQnVvWmNva1FQRS82a1IrTW82OTIzbHBDVURYcEFKQlZYRXEyMElmNWxURFVpVWhteGhiei96bkw0TDExRFhtT3BYb2JHVVZ6RVpJT2VEa21WOVVRM2UwRXRxWXBJWllUZklVdCtHaUdxOURBMGkrSys4ZEk4a3ZhREhzMmVVbkVsMGRBdXFCbFZFYW1QNUVLR2UzZmd3QUc2a3J5aVZnK1Rua1VORWRNUmVpanRwTXA2b3EySG9XWlVSYVErOGd0NWUyT2RMaWFYcU5YRHBBZFJ3eXdmYnFXSDBrRXFyaVRhU2tGdHFJcklTaEJleU04LzN2UTN5ZktrWjFGRHhMU0JIa2RucWJLZWFLN0Yrc295dGFFcVVpdEIrTStRNGNhRmhTei9GN1VvMTZ1a0IxSER1MisyL1hEcnpKblQ5Q3oybFlvcmlmNWFVQU9xam8yT0lyVVM1QmN5NkcrUzVVa0dVVW5FN0lJZVJCYXBzcDVvc1h0L3Z4clFXc2lSNFdHNnNMeWlZcStTVEtHU2I3eTR4NGRiNlJGa2w0b3JpUzViVUFOS2JsYitDV1RDQ3htSTk2NzhtMlFRRlh1VlpCQ1ZSRXdLdXYvWnBjcDZvdEdxRmhKaEZhSzFrSU1EZmI2VEpVbW1VTWxuTms0aXFRWGQrYnhTY1NYUmF3dHFRRU1rVllqOFFnYml2UXNMT1Q4N1MxZVkxMGVuSGtIUjN1UDI4blF5aUVvaUtXU1YrOHVxSUZYV0V4M3JMeVJpcWtWeElZTTk5U2I1NnZmT0p4Y2V2YlB5R0Y0ckNoVVU5L0xzUkF5aWUxNU1LcTVrYkRoQ0RjaUtqR3BSV2NoQXZIYzNMeC92a1oxTXhtVlBjVkIrcUk2R1NKSVlicXFzSnpyV1hFZ0VWSTd1UWdiRFFvcnM1SkhEaDFIYUhqTW5EeWZYMjBFY25STXFJdTdra2FFWVJEZThtRlJjeWRodzRORElDRFVnSlFJcVIyc2hBOG50azlySklFb2JJN25TTE9LY3pORHBHaUxKM3lSM1JPazZxR0loZzJFaFQ1NTRqQzY3bUtodWh2UmxaaGNuWjRQT0ZiZS8vMkFNb2x0ZFRDcXVaR3c0Y09YaVJXcWd2Q2hkQjRvTEdVamZRYWszeWVEd0VINlhWVHZwQzh3clNtU0FUdFFRU2Y0bXVibHhZZTQ4NnRhQjdrSUdrdHYzejN0Ymdqc1pSRURsSkovY21GeGFZV09kTE5DSjRpSkdZcmczYjYxU2NTWFJzZlJDb21oTlZMZVF3ZmpaQXJKZjBCWXhWWkVrcHErcmpMSGF2dEJaR2lLcE9XK1NYOXpiUXNlaU80bUtOYUcra0lIMFRSd2EvR1luKy92NzZTNlVGRWxxakk2T3BvUFNWMVRlV0xNekMrY242U3h4a1NReDNPdkwxNm00a3VoWWJpRlJyajZxV01oQStpWmV2M1FzL2lMZGkvSU9EUTdHeWxLTWpXRVBvL0VYMDljaVphemNHVHBGUXlRMTUwMFM3YmFnQm9xSld2VlIwVUlHMHZmeHl6L2hDMm5UN1pCeW9jVDNuTHc0UDBmVmdyYzMxdU9yNmF1UU5kYnZBQjJ2SVpJa25zdnR0YXRVWEVsMExORXpDdFZLZFFzNU10eXZkeXV6T0Q4N096MDFOVEUrZnZ6WTBTc1hMOUNySFVTWCtpdUJtUGJROFJvaVNlS2hVR1VsUjBjRzBISHBubEdsVnFwYnlBRGR5aUJlcUdvbjgzcGo4VnBzNzhGN0s5UzVrakd1SFhTd2hraVNlQ0pIeGdhcHVKTG91RnpQS0ZFM2xTNWtnRzVsRks4WlcwdjBWTWthSk43NzVVMmt0b0dPMXhCSjVSNUgvTjRRVkZuSjJHMkUyc2d1enErYnFoY3lRSGN6aXRkYTBKMnFYdlJSN1NwRzF4ZW5rTjBHT2w1REpFbTg0Y3pQakZOeEpXTmNnTnJJS0U0MlFBMExHYUM3bVlpWFc5QXRxOERIcGg5Rjl2YjIwK3NucUxjS3pQSUZHc1BHMGxrYUlremlEWWNxSzRtd0Z0UkpGbkdtQWVwWnlBRGQwTFE0b2tWZlh4L2RPM0ducHg1NlU3cjcxaEwxVTVub1lEL29MQTJSSlBHRzg4ekdTU3F1SlBMeTl6eC9maFpuR3FDMmhRelFEU1Z4VUFxNmoyVmNYTGlDb2ltb2dTcjlUNTV2cUVybktva3dpVGNjcXF3a3dscFFQNTNGT1Rhb2N5RURyenpQLzhxZWZPZlZQVFluY0dsK25tNXJCeTlmNlBRTkxTaXhlajk2K3pwYXlReFYwQkJKK1JjU3A2VjQ0NlY1S3E0azhud2hTMEszdFowNHVqUmpod2FvY28yT0h5N3kyVVZVUkVtRVNjdzNWVllTWWR2Ym80Y09VVmZ0eEFsbU1MR1FBYnF6V1J3ZTZzZko3VGsxUGZxWDM2M1JpWFpFbDRXZ1Vob2lLYzlDVG95UDQ1eUgrZjNQRnFtNGtzakwzRE9PTm9PVmhRelFuZTE2Y2RsRm9XcEtJa3hpdnFteWtnamIzbDY0ZklsNjJ5ME90WVNoaFl6US9lMVdjYlhsb0pvYUlpbmJRcTZ0ZlBOTmV6dEF4WlZFV0lhZWNad2x6QzFrZ081dmwzbjc1alN1c3pSVVdVbUVTY3czVlZZU1lmczFqSU9NWVhFaEkzU1h1ME5jbXh4VVgwTWtDYjNoVUhFbEVkYXhaeHhoRExzTEdmanEwenQwbzV2ckV6ZisvMmxBc2xDUWhrZ1NtbThxcmlHUzJqYzhNWDRFUnhqRDlFSkc2RjQzVVZ5SkRwU2xJWkthczVCQmhMWHBHYS9ab3dFTEdhSGIzUlRSdlRJVXFpR1NoT2FiaW11SXBMMGEzbHBmdzJ2MmFNeENSdWltV3hZZFZ3V2xpNHNZdVRjY3FxOGhrbmIxakY4MVNjTVdNa0wzM1pyb3NuS29EWEVSSXpmZlZGOWN4UGhDVnNQeHlXRjZBUFg2OVlNNzZLd21KZzdyL2d0OXhJak9OMFdJaTVoVXovaTVWUnE4a0dub01WUXNtckFCOVNZck1xVG5tMUlFUllBdlpGM1E4OUR6L2p2N2ZGWktqVkNyZ2lKZ2UvdjgyYk95ODAxQmdpS2d0WlA0a1dHNmJTSFQwSU1wNzcvdjUvaFhpL1dpOXhVUEVOQ2E3NzYrUHZ4RUNNb1NFYVY5SVEzeTJkMGNYNXZ3TnorK2l0TWF5OVRSRWJxbzhxTDA5alo5cFFWQkJnZjZLTFNrcU5zRWVtc2hlNXdYbjM2Y0puVmZYMzlocnRpLzJIU0s0UXZwT0lid2hYUWNRL2hDT280aGZDRWR4eEMra0k1akNGOUl4ekdFTDZUakdNSVgwbkVNNFF2cE9JYndoWFFjUS9oQ09vNGhmQ0VkeHhDK2tJNWpDRjlJeHpHRUw2VGpHTUlYMG5FTTRRdnBPSWJ3aFhRY1EvaENPbzRoZkNFZHh4QytrSTVqQ0Y5SXh6R0VMNlRqR01JWDBuRU00UXZwT0lid2hYUWNRL2hDT280aGZDRWR4eEMra0k1akNGOUl4ekdFTDZUam1HRjcrMytxWU1KWnBneDV0Z0FBQUFCSlJVNUVya0pnZ2c9PSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiI5MzBiMGMwM2VmNDY0YWM0OTM1YzUzOGRjY2QxZmNkYiIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOnRydWUsInVwIjp0cnVlfSwibWF4TXNnU2l6ZSI6MTIwMCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6MjAsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4LCJ0cmFuc3BvcnRzIjpbInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XSwiZmlybXdhcmVWZXJzaW9uIjoxMDV9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMy0wNi0xMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxMDUsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiQ2hpcHdvbiBDbGlmZSBLZXkiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDIzMDYxMjAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIzLTA2LTEyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEwNX1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wNy0yMyJ9LHsiYWFndWlkIjoiNzc4N2E0ODItMTNlOC00Nzg0LThhMDYtYzdlZDQ5YTdhYWY0IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI3Nzg3YTQ4Mi0xM2U4LTQ3ODQtOGEwNi1jN2VkNDlhN2FhZjQiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiU3dpc3NiaXQgaVNoaWVsZCBLZXkgMiJ9LCJkZXNjcmlwdGlvbiI6IlN3aXNzYml0IGlTaGllbGQgS2V5IDIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9LHsibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQ2lUQ0NBZzZnQXdJQkFnSVVPa21VMzVJaWNYb1ZQamZ2d3BHN01ONnRIUFV3Q2dZSUtvWkl6ajBFQXdNd1F6RUxNQWtHQTFVRUJoTUNSRVV4RkRBU0JnTlZCQW9NQzFOM2FYTnpZbWwwSUVGSE1SNHdIQVlEVlFRRERCVlRkMmx6YzJKcGRDQkdTVVJQSUZKdmIzUWdRMEV3SUJjTk1qRXhNREEzTURrek1EUXlXaGdQTWpBMU1URXdNRGN3T1RNd05ESmFNRU14Q3pBSkJnTlZCQVlUQWtSRk1SUXdFZ1lEVlFRS0RBdFRkMmx6YzJKcGRDQkJSekVlTUJ3R0ExVUVBd3dWVTNkcGMzTmlhWFFnUmtsRVR5QlNiMjkwSUVOQk1IWXdFQVlIS29aSXpqMENBUVlGSzRFRUFDSURZZ0FFdGdPQzdJS3hpcE1KN2JWUFRUODNPZTkweHpIUENlYnh5Q3RnL1dyc1RyUmFTbllpZ21KQ0I4L2pxQk40T1FHMmRaNWpjTnNMNlN3SG9zWURSSmMrTzF6azlpNUdFWldmM0lyOTkyQTZkdU1zcDUxbHE0ZkFnYS9VelROOS9FYnpvNEhBTUlHOU1CMEdBMVVkRGdRV0JCVGZ4emc4R0d6WUFpZEtMNjN1aFNpcmFYSklLREIrQmdOVkhTTUVkekIxZ0JUZnh6ZzhHR3pZQWlkS0w2M3VoU2lyYVhKSUtLRkhwRVV3UXpFTE1Ba0dBMVVFQmhNQ1JFVXhGREFTQmdOVkJBb01DMU4zYVhOelltbDBJRUZITVI0d0hBWURWUVFEREJWVGQybHpjMkpwZENCR1NVUlBJRkp2YjNRZ1EwR0NGRHBKbE4rU0luRjZGVDQzNzhLUnV6RGVyUnoxTUF3R0ExVWRFd1FGTUFNQkFmOHdEZ1lEVlIwUEFRSC9CQVFEQWdFR01Bb0dDQ3FHU000OUJBTURBMmtBTUdZQ01RRHN2NEs2TmZKdmZ2emQwT3lnd0ovQUJpTHRndEpXaFhUZVVsbHRkcWE0V3NPTTl0dng2MzZ2NUZJdlpSa0sxWG9DTVFDZG9QUSthNGZEQkVpTnVqMFdzMzN1VVFoR3Jwc2VQREdmVlhuNGtFcGJUSUJlT2RWQXgvL1RyTUMvU1ZiK2JzZz0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBTkVBQUFETUNBSUFBQUJpRU5IOUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFEc01BQUE3REFjZHZxR1FBQUNadlNVUkJWSGhlN1owSGRCelYxWURYRFRlYXNTazJFRXd4WU1DQUFRT0duMERvRUNkQUNLWWtRQ0NoQkVpQUVFZ2doSVFFSEFpaGR4TEFYYkxhRnExNjc3MnZldTk5cC9lWjFYL2Z6RXBhMWdXRFo2V1Y5dDN6SFIwZGczWm4zL3ZtdnZ0bTU3MnhqT0hBTWJXQm5jTXgxWEVnNTFSVkhYVVROYzF0OW9LS3QrTHpINDNNdXptOGRIMUV3NmxSblN0dGd5c2M3bU5paVdPYzFERk9FalBib2FDdm9jZFgyWWRPaStxNE9MTCsxdkRTeHlOejM0N1BpeTJvcUd2dGNCTUUyT0wxNXR0aXY4NEpndERXMFpGVTVubzNyZndSVzhsMVlhVnJ0cFlmL1hYdG5HMXRsbWkzSlU2eUpJOVpVakdoQlBRNDlIdlU2Tnh0cmNkc3JUMTdlOFgxdTBzZXR4Vi9rRjZlV2w3YjJkVWxpcUxYbmdQR3ZwMWpHTWJWMUJxV1ZmS2NOZmZHOE5JendocU9EdStjdjZmUEVqbHNpU0VzTnNiaTRDeXh2STZBQ1EzMDduYXdxUGZCZ1lqaHd5SUdqZzdyT0hOMzNTMWhKWCsyNVVmbGx0VzN0SE1jNTNWby83RVA1d2lDS0sxdi9peTk5S0dvb3ZVN3lsZnNiSm9UMW9ja2k1ZVI1dkNMamJaWVNmVEdtRkFEK2gyY2krV1FDZUNEblowYjFudmN6c1pMZHBROUdsUDBaV1paWlZNclJWRmVrL1lUL3M1QmhnUGhQa2dxdkN1aWFNM3Ura1hoUFhPaVJpeFdHZ2tPMkpseDRiQnpvUWxwc1ZMSUFUREJVTUpLelkwYVdSTGVzemFzN3Q0OUJaK2xGVlUwdEJ3NDIzM0RPWjduYTV2YlBrc3Z1V3RQNFNrN1hmUEMreTF4ZW02elEwYWw5bnA3VE1nRFZvQjI4UkpJc2lDODc3UWQxZmRGRm55VldkYlkxZ0h6QWE5VmU4V2tjekR2YU92b2hCcnVvYWpDTThQckYwVDJJNWRoSUljWGhaZkdneWxtYjlCUUM5cEJjUzlBOGx1d3AvZWM4TnJIWWdxaWM4czZ1N28xVGZPNjljMllkTTVOa01sbHJ1ZGljaS9jVnJvb3ZCdkpDelVqSkZKc0crYkFnQ0hnaVZPd3hJbEx3am8zYkM5NTBaYWJVVkczdjhKdTBqbFhTL3Q3YWVVM2haVXUzOTVnaVJ6U3B3c3NydHN3QndlSk1oUTRzMmZnMkcxMW04SkxQc21vYUdqcjJPZlZrMG5uN1BubGoxcUx6OWhWTnkrOEQya0xOUno4OUg5cERHWS93TVFDVFNuSStXRzlaKytxL1oyOUpLR29jbkI0Mkt1WFQwdzY5MVpjM3ZWaEpjdkNPOUJmR2pVY1RuS1lnd2ZWZHJwMk5tYjU3cmFiZHhlOW41QlgwOUx1MWNzbkpwMTdOQ0wzekczbGgwWDBvMG9PQ2J2WGkySXdCd2FjQVhQaXhJWGh2V3UvTHYxZGRGNUtkWk5YTDUrWWRPN204TktqdjY3MVZuSXdZL1Y3T1F6bVlIQXc0TnljaUtGanZxcTVMYklzdkxMRHE1ZFBURHEzUHFKKy9zNE8vYy8wYnhwOFh3aURPVWpzK3ZBYTQxNndvLzN5NkliUHF3ZThldm5FcEhPblJuZWlMKzl0RTk4MDdQVnlHTXkzWXRPck9oZ25vMGJQdG5XOTYzSjc5ZktKU2VkVzJnYjE2eU9jZnJrRk80ZjVYaGp5eEhJV3A3ZzZkdWpOT3NhcmwwOU1PcmZDNGJZa2U5QlZGcjlYd1dDK0swNEJYRnJsZEcrcDU3MTYrY1NrYzhmRWt1Z2VLZXdjNXRCeGl1RFNDWEhFNncwSHZDWjhqSk5Dem9HaGZuK1B3WHhYRE9maXFkZSt6VGs5ejJIbk1JZU9OOCtScnpYczQrNFM3QndtQUdEbk1GTU5kZzR6MVdEbkxORWhqMStEQkpyUWRjNW83cWg5RVJsS3dPZWRZdTFtdVhPR1dQdkVWeksvL3hSTnpKa2docGc3ZTRGUFozeE0vM1lMS0xQV09jTWVReWwwUXJzbm1WQXRDclg3QWl1eHlFWXN0Uk5IT29obERuSjVMSFdza3pyZVNhMk1vMWJGVXlmR1V5ZU5jM0xDN09HVUJQTGtCSEpWSEhWTUxMbkVSczZieXB2VFpwVno0MWxxVWpqOUZ6aVA1MXFSV3d0MXQ0NktKVmM0U2ZCcGRRSjFaaks5THBXK0tKMitQSU8rS291K05wdTVJWWU5SlkvZGxNL2VWc0QrcklDOXM1RDllU0Y3bDg3bW9sbkMzVVhzZmNYbzU2WTg5cklNR2hSY2JDZTlqZWJYcElGZzlqaG5wQzVJWXhHUXpORHZNSEFzc3BGd0hwOFVUNTZaVEsxUG82L01vbS9JWlVDbWU0cTVoOHY0SnlyNTUycUV2OVFLcjlZTGJ6UUs3elFMSDdTSUg3ZEtuN1ZKLzJ1WHZ1NlF0blZLMjd1a0hWM1NUcDFkczRYZDNWSmtqeFRXTGNIbmZhS1MyNWpKTEl2Vm5ZTUc5R3ZWUURBYm5ETk8wUEdzTmkrR1dHS0hURWFkbGtpdlQyT3V6VUdKNnBGeTlvVWEvdlVHNGNOV0VXU0s2SkdkQTBycWtKSTdxcFlRYWlXbDFkSmFFNk8xc0ZvN3AzVndXaGVuOWZCYXI2RDE2ZlRQTGdaRnpTMTdoaVJQbVZ2OXVGVzh2WUE3UG82eVJPbUZoMS9iQm9JWjdOeUVhbnFKQnBYWmtYYnk1SGpxZ2xUNjJoeG1jeEgzWkNYL1NwM3dmb3U0clZPMDkwc1pRMHF4VzZtbDFWWVd5VFFpZVNqRnc2dGpzbWRzM3lzdFF5QUdCYytlYnZtWEpkeUo0SnhSN1BvMWNpQ1kyYzdwdVEwUzJ4RU9jblVpRFdNRUZDdC9yQmJlYlJIRHUyVklZMldFMnNScVBXQ1k3S0VWRDZkNlJNMGphMk9xWjh6ai9XUWhIWkRDdzd1a1gyRG52aDF2ZWtPNURRcVJ0Y2tVVkdtUGxNUFFLVzd2bE5LR2xHcEtoWkdSVnNBdHJOYUJvcFBUZG5aSzl4WnpNSUhGemgwUVBiMHR0S0haL3RWWnpPUGxIQXlnem42bGlsUzdlWTJRWWNUMFFDYkQ4YTBCbGVzTzdOeUI4QTZtYmhoTVZ6ako5ZWswVFBpM05BaldYcm1HVXFFK3cwbnR1d1oyN3R2UW5WdGdJMDZNSjYvUFlaNTM4V0hkY2dXaDlnc29zWGtQRk1kM0NlemMvakV5WEJTeHhJYXV0TjFSd0w3UktLUU15WjI4cG1EWkRpR3djL3RIZDI2cGpUdzNoWDZ3bFB1c1ZTeDJxNk9TQnd0M2lJR2QyeGRnbXc1a3VIV3A5TU5sM0xZT3lVV3AzTUZ1dzQzalFJR2QyeGQ2aGx0c0o4NUpvVUM0N1oxU0E2M2k2czJzd001OWsvRU1kNWlWV0pOTTNWL0tiZFdGazdCdzVnVjI3cHZvazRiNVZ1TGtCT3BuaGV3bmJXSXR6bkJtQjNidW0rak9IUnRIM3BqTHZOa2t3S1NCdzhLWkhkaTVjWXhSRmNvNEczbFJPdjBuRjU4MnJNQXMxWHNvT013TDdOdzR1bkFMck1TcGlhaU1pK2lSZTRUOWJMS040OUFDT3plT1Bxb3VqeVZ2eUdYZWJoYXJLRlhHT1M0d2daMGJKNHFZWnlYT1M2WC9VTTBsRDhyREVzNXhnWW9lWHR2ZEpkMFgwczdwbGR6Y2FHSzVrOXlVei82dlhXeGpOUVYvZFIrd0dCUzFpRzRKM2JNWkg3TE9lYjlVSlM1QVNZN1BHSmJaS2Z4NkM5NUo4NkRiT1FGNFd3REdkRm56QXRsMjl0SE1hRnM3cGJ1THVKV2g2eHg4NWlnQ2p1YTJmUGF6TnFtWm1hS3JJNkxxb1dRUERPTDlndGJOby9VUXJhd0cvZEhJYVBXMFdndFFhbzFPTmFWV2taTlV6a3pneUYzNkIwa2NVTFkwQ2pmbnNjYzY5ZlVRZ0YrUEJJSmdjMjV1REhGZUNnVkpMbmt3c05kSFFHZEdHUnNRd1MyMWpGQXpoNVg0QWRuYUsrL3BsbmQzeWRzNjVhODZwQy9hcFUvYnhJOWJ4WTlheEE5YXhQZWJ4ZmVheFhkMTN0R0JLYzVNQkk0Y1BnNThpci9XQ2ZlVmNPdlQ2U01kb2JuV0VGMGljUjl1SjYvUFpxQ2JHeGdOUnJRQUJRelpVQ2xtRFN1N3U2VjNXOFNYYTRXbnE3aEh5cmtIU3ptWXhHMHU1TzRzNUc0cllEY1ZzTGZtTWJma01UZmxNamZtTWpma01OZm5NTmRsSTY3VitkSE1CQzNqelVXZjRvcE01cHdVK3ZnNDhqRGJYdDBST0lMRk9mMmEzTHdZOUUzWEF5V2N2VThlQ1V5U2c0b05Ycm1VVUhkMVNTKzVoTHVMMmF1em1YVnA5QmxKYUhVN2xEWEh4NkYxL0N1Y0ZIemtvNEZZOGlnSENXa0FPTUtPZ0xOaTFyRFVUaTYwb1M4WTUvaDFSMEFKRnVkUU1ZSFdwVjZVVHI5VWk3N3BDc1ExT1JBT0tyYjBZZVhmamVJdmlya042ZlJKOGVRUkRoSUdkRU42eE1UbU1VWk43VXZFckFNK0ZMVDgxQXlwRXdTTGMrakRFOGM1cVIvbnNSKzNTczJzK2NNcUNEY2tldElHbGIvWENUQktRbFpEKzNSQWN4dTJHYjhZdjRjT0U1L2FyenNDU2hBNUYwMmNua2ovcG95TDZaVUhSUE96bkZ2MjVJNm9yOVVMMStVd0sySkoxT0xvUlBkcGVyOUR3Z1NJb0hBTytqc1Npam55b2pUbVpaZVFNNkpRWmwrV2c1RzZobEkvYkpFMjViTW54bEZ6OVhlY3RoTTl4QWtlNXhiWlNKaFN3UnkrbGxKRkdBak5DOVV6Qm9uVDJpcy9YTWF0VHFUbXc5c1pJNHZmWVdDbWh1bDNidHlBWmJIazdRWHNyaTY1bXpmNUxoSkdRUlBWTnh2RUgyWXhpMjNlMmhIbnRta2pTSnliRTAyY0dFODlXTW81K3hYQzdLc2tmWUlXMVNQL3Vvdy9QWkhTYytxVXo5UXd2a3kvYzNxU1cyQWx6MHFtZjEvRlo0K29ncWxydWp5ZXNUcEtmYnRadkQ2SFJVK1FncmVEU3M3dkdEQlRTWkE0dDhST1hweE8vNlZXZ0VIUTFGcHVERXJEM0JIbEQ5WDhlYWswbEl6RzIva2ZBMllxbVg3bklPdEVFMGM1eUt1eW1IODFDaTdLNUpXcmJ0bmo2SmZ2MTIvWFFaczFnM0I0WUoxZWdzUzVGVTd5cGx6bS9SYWhpVEhUT1VpWlhieTJyVlBhbE1lQzFwUFhSL3lPQVRPVlRMTnpxS0pIUDFmcTl5OTkwU2EyYzJiT1dTVnRySTVXUDJnUnI4NWlGcUlaS3hZdUNBZ1M1MDZPSnpjWHNaQ1F1Z1V6bldQVk1TZ1F0elNLbDJiUWFEdDY3Rnd3RUFUT29Tc1hxeE1vS0xuQ3UrVStVNy8xSWhWUHpvanljcTF3WVJxTjNnNWZKUWtHZ3NTNTB4T3BoMHE1cUI1NTBGVG5SbVZQMnBEeXh4ciszQlFLdlIxMkxoaVlmdWNpa0FkbkpGR1BsSFBXUG5uSVZPZUdKVS9pb1B4MEZYZDI4dmpWWUw4RHdFdzlRZUxjbWlUcTBYTE9aclp6OEdweEEvS1RsZHlaMkxuZ0lYaWNlNndjM1I1c3JuTXdVanY3NVNjcXVEWFl1ZUJoMXVjNWNPNUo3RnhRRVNSekNLam5qTHMxeloxRERJdWUrQUg1ZDNoc0RTcUN4TG5UOUhsclpJL0pkd2lQU0o2VVFmUmw2MXFZdDJMbmdvUWdjVzUxQXZYTEVpNnNXKzRWekhTT2tEMVp3OHFMTHY3ODFQSHJjNzd2anBrV2dzUzVrK09welVYY3RrNnBpemZ6ZXdoRzhSUzcxWC9XQ3h2U0dmdzlSTEFRSk02aDcxc0wyQy9heFRaVGQwUVhWVTh0cmI3YkxGNlZ4YUJsdytBY3ZwRnAyZ2tDNTlEUEZVNjBoNnZwOTVXb25yRk9YdHZhTVg1ZmlYSHpIRTUxMDB1UU9IZTBmdi9jR3dHNGZ3NUt1dGcrK1VIOWNaSGU1VjdZdWVsbG1wMEQ5Tnl6MUlidUUvNXJuZm4zQ1V2YVdPR28rcUpMdUNpTldZTHZFdzRHZ3NTNUJWYnk3R1RxbVdvK1owUUJTOHlOVmxiN2I3dDBSd0Y3QXRwTmtyQkU0RlEzclV5L2M5RDkrcnF2SHlTUUQ1ZHhDUU95NlF1cTNiSW5ZMWgreWNYRDdCVXRpUURuY0ZVM2pRU0pjOER5V1BMT1FqYThSK29UVFY3Zkttc2VtRWxFOWtpUGxITm5KZE9MNFUxUnRqTjJ2aG4zejhEM3dEQUJZdnFkQTZDekk0bWxkclJSK2lkdFlpT3JTcWJ1SVF5dkpXcm9vc24vT3REZXVlY21VL0JlaHVoZTV3d216TVB5QlpUZ2NXNitsYncwZy81SGcxQk1LR3dBTm5XbEZVOGxxWDdWSVQxWnlWMmR6WnllU0IzbnBHRHVNdDg0Z0NnOTUza3hVdUNCbWZpZlRXSkMvZS9LeEhsaTROdXd3VW5RT09lR2tnNm1FVTlWOHZFRDhvanA4d2c5MnpHS3A1SFI0Z2JrdDVyRng4cjVXL1BZaTlPWTA1Qjg1SkVPWXFFTlBTTUE3ZjVuZEo1ZjE4NElab1Iyd2VNY05ObXFPT3JuaGV6WEhWS25xYXUvZkFQbUowT1NWa0dxOWo3NXd4YnBMeTdoc1FwdWN4SGF3L1dIMmN5bEdjeUZhY3c1S2RTYVpHcDFJdHA1ODhSNGFtVWNkWHdjQ1Y0ZXE3UENES0I0Qlk3UldhWnp0QU54bEE3YTAxUGYxaFB0aG1sRHUyRXVBV3pFWWh1eHlFWXN0S0puUFM2d0VwQ2g1OFhzNnlTWnlNVEJhV0ZRT0Fmb2pRWE5mV1VtODNxREFJTmc0TFpNaHhmbVZNK2c0R2xpdEJLM21qSW93L1FDeHR6M1c4UXREY0xMdGNKejFmeVRGZHl2eXpnby91NHU5dTR0L0pOODlzZDU3QzE1N00yNWlKdHkwU2JEMzVzYmM1bnJnUnptMmh6dkhyOVhaekUvekdLdXlxU3Z6S1EzWnRLWFo5SlFhVnlhVGwrU1JsK1VScTlQb3k5SW84NVBwYzVOb2RZbVUyY2xVV2NrVWFjbVVqOUlvRmJwKzlHQ3dXRHFJanV5ME92WnhIaU5uZHMzMEM1UmNQcVMwSlMvcmVEQUEwYnh2blZBQTh5RzJuRklSUHZ6MTlGb0EvWGNFVFYxU0hIMnk5RzlVbGkzdEwwTDZhaHZvQzU5MUNwOTJDcDkwQUoyU3UrMWlJZkN1L3IrNWY5cEV0OXFFdi9kS0w3WktQNnJVZHpTS01MNTlzOEc0ZFVHNGUvMXdpdDF3bDlyQmNqRUw3cUVQN21FRjJyNFAxYnp6MWJ4djYrQ1U0Si92SUwvVFRuM0VKd1lwZHpkUmR3ZGFMdHQ5cHBzWmtNNnl0TS9TRVFXTHJhUjNxMExna3ErSUhJdUdsMmxnMUhtcC9sb29Xc25yeW1CR21EM0VTQ2ZxS0g5MUVuWk15cUJoWjUrUWV2aHRTNWVhOWNmRjlIQ2FKQVhvUnhzMEtrL05PcG9oSXRDMUZCYXRVNFZwVlVTU2dXaGxCTktHYUdVRWtxSld5bDJLNFdqU3NHb2tqK3E1STBxMlNOSzVyQ1NQcVRBaVpFMEtFUHQ2MENuaHd5bkI5UWtIN1dDdGVMejFmd0RwZHlOT2N5NlZCcFNJTHE1WVVJN3YyYWZGb0xGT1FDMGkwUmx5b1owK3RVNkFWcDVhbEpkVUlYSGc5RDBuOFl2Y0RJWUQrVUJaUDNFRUFBVnlnTjBoc0JrbkZUUVNUSWdvTk9qU1gvV0JSZ1ozaTFES24yMm1yK3prSVV4K3VSNFZCUk81cnpwVFhoQjVCd0FKVWcwY1VvQzJvZ3V2RnZxTVhWTi82d1BhQ3haODRDSW9HQTNyOVZTV3NhUXNxdExnaFA0M21LWW9kTXdkMEU3eEUvTUxYeGJmaW9KT3VkZ0ptR0htUVQ5ajNvZUJwZkF6U1JDSVhqVjB5ZDRpa2JWSFowU2xJTXdBVnFUaEhhTDl5YTg2ZEl1dUp6VE0vOTg5TjByZFg4SkMyVUsxRldtZmlVUmlrSExIaWhKWWNEOW9FVjhxSlM3TUkzK3hxMkVVMjllY0Rsbk5BRjZ0Q0Y1UlFiOVdyMEFGVFJqOWxmK29SbGdYaTJ0UXNVQzA5NHJNcG5sc1JRYVp3M3pmTHRnQ2dndTV3d2lpVGxSYUlYRVBVWHMxazZwUFFEUEp3bk5nUElZR3RQZXAveTVScmdxYS93aEdWT2Y3WUxST2IwaElOVmRrRW8vVThVbkQ4aW03Mm9kc2dFVDRWN0JrelFnditRUy9pK0xXZWFZanRvdUdKM1RUenRvaTZOanlldHltUDgwaVpXa3l1SFpoRWtCN1RnZ2FISDk4bk0xL0laMCtvaUoyczZ2RndKSE1EcG5vTGZDNmdUcW5tTHVxdzZwa2Rhd2RXWUZUTXM2T2MzYWgzWnlPVGVGV21ERmVjNUFQL2tXVzhselV1akhLamlZdy9hSkhselptUld5TnRiS2FYQXkvN3lRUFNtZW1nL2FUZGtJRzd6TzZTTXNOTVRoZG5KREJ2MThqWkEwcVBTTCtNcUphY0dyYU1INWxnYngybXpHKytTTXFSbGhnOWM1QUp6VHJ4SXZpeVdoNEgyNVRrZ2RVb1lEY0d0ZHlNYXc1RWtZVUg1ZnlhOU5waGZFNk5wTlFhb0xhdWNBUGRYQmZHS0ZrN3cyaDNtMW5zOFlrb2ZNdlhVOWhFUHhqRFd6MnVkdDBvL3oyQlZPZlJ1aEtkQXUySjBEaklaQVR4UW1yODJtLzFiSEp3OHFmWUxIM0dXd0lSdXM2c2tZVnA2dDR0ZWwwZ3R0eGlNMEFyeVQwQXh3RHRDZG14dERIT3RFejl0OHlTWEFWQjltWHBMSmEvNURNZURNYldTMFQ5cWtuK2F6eDhWUnFLa2pzWFBBZUtxRFV4QUcyU3N5R0Rndnc3c2xGNlhTZ1hodWY0aUZXL0xBMFBGTUZiODJoZGEzMThET0dVQmI2T1pCdGp2S1RxNVBveDR1WlQ5ckU0dEcxU0Y4RGVYUUFvYUxPa3A3cjFtOEpwdGRZcXpDTkZyYnJ3dk1Zc1k0WjZCckJ5ZmlZaHR4WmhKMVJ5SHp6M3JCMnF1NEtBM013emNEZk0vd2pJMkludWhlK2Q1aWJtVThOYzhRRGpzM0NiU0ZmbXZuUWl0eFlqeDVSU2J6U0JuL1FZc0Vvd05Nd1FnWnp5MitUNGphV0k3K3hGR1lTU3dPOUU1Q004ODV3RGdMMFJEZ1htb256MHFpYjgxam42MFdQbTBUNC9xVmNrSnQ1N1JoRWQweGl6UGZRUWEwVXkydC9xZEp2QzRuOE5lSFo2UnpnT0VjMGc0U0hscDJlbTRLZldNdTg1c3lEa2JiclIxUzRvQlNTcWd0ckRZZ2VDakZJNmpvV2hTNnJJY3QzRTkwODlyT0x1bStZdlJWR0dyWXdNMGtacXB6RXhqbVJhR2x4VWM1eURNU3FmL0xaRFlYc2s5WDhhODFpSisyU1dIZHNyTmZUaDlDNjZaS0NhV0tWR29wdEh5cmxVUHJDNkdoZXdXdFgvQU1pSjVCMFFQWmNVUkM2d2xnS2dmRE5FRHFVRHEwdnViRkYrYjdBamtZNEZRRXI2STFOVEM2U1JwYVphUHFTMittUHVDREp3MHEwRzVuSjlQb0JpZnMzSDZaU0hoQU5GcmdEdWF0aWlQUFNxWTJaRERYNWJKM0ZIQVBsSEpQVlBEUDEvQ3YxQWxiR29TM204UVBXOFV2MnRIaVBEaXo5L1JJVUQ3Yit1VFlmam1oWDA0YWtGTUcwV0srekdFbFd5ZDNXTWtmVVlHQ1VVU2hHMUgwZlNrbTFCSkNoUnhjUnFoUUJsUVNhaFdwdWlnVmhyWUdHaVZtT0JONmVHMVExTnl5eHFxZUtic1d4Q3BqY0dEL2JCQTJaTkNCL2NwL3hqdm55NFI4ZW52TnM2SzlubGJFVWlmSFV6REpQVCtOdWpTRHZpcUx2ajZIdVRXUHVhMkF2YXVRdmE4WUdmbnJNdTdSY3ZDUysxMGw5MHdWOTF3MS8zdzEvMmNYLzZLTGY4bkZ2K3ppWDZrVi9nYlVJVjZ0bitRZjN4M29WR2pyMXh1RWZ6VUlielFLYnpZS2J6V0o3elNqaGRZZnRZcWZ0MHRmdGt2Yk82V0lIc25XRHhNakdkSXpKT1plWG9Qc0dORDhCMWtXMHYvSGJSS1VkSXZ0MkxtRFpDTG5vZDA2MEFZbzZGK2kwU1U5eUgrTGJjUVJkclFuQ05USVVQOGQ3MFRwOEtRRXRQM0M2a1RxdEVScVRSSUYyWEZ0TW5WT0NuVmVDclV1RmUzVmNFRXFkV0VxdFQ2TnVRaElSMXlzYzhuM0JiSXZjR2tHYzFrR2Mza21zekdUZ2FrMzFBTS96R1orbE1QY2tNdmNuTXY4SkorNUU4NkhFaGJPQkVqUFVOcEg5c2dsYm5WQTFBSTNLOUp2SWRaMmRjdTNGN0RMWUJwaE5HWWd0SnRWenZtaEMrZTE4Q0F4L3NSQWZ4RW9FeWV4SXVZZUdwQjlBUmk4ZklGVFlxR05XR1FubGpxSXd4MVFIaERMblNUMHlxbUoxUGtwOUhYWnpFT2wzTDhhUlNoTW14Z3RjTGRNUS8zcTZKY2ZLR0ZQakF2a1BldXoyVGxnUWlCZnNTSU5qTTJMRHBLSnZ6SVYzK1B4SGg2a1p3TjAyUE5qMEYycnkyT1JmSkFJWWVqZjBTWFYwU29YbUhRSFV4a29aS0hHT0NPSjh0N2FCUGcxNmFFenk1Mzdma3lZT2wxNC9kTVoxeEZxMDNVcDFNTmwzSzR1cVlWUkF6RzNVTFN4Z2xIbGhScjBxQ3B3M1hzQWZvMXo2R0RuZ290OXlnZmFvZDJQaVNWV1lsMEtEYk9jK0g0WmFqdlY3TnNJNGVYS1NSWG1TWmVsTTFEN1l1ZENHOE8vQ0hTbi9qVlp6TDhhQTdYYXZJWlNZVFo5dGI0TUVUc1g4b0IyZTVBRXF4T29CMHE0UGQxU3I2blA0ek9pZ1VZM21OeVlNNzdpR2xLczMyRWNPdGk1bVlSZTJ4MmxQNmRxUzZOUVRacjh6Q0NJRmtiN3RGWDhTUjV6QXZRNGRnNkRKSWhDazFtWVZ6NVp5Y0VjMC9UckpoMmM5bVc3ZEdjQmMyTGc3aG5HenMwa2pLb3VHaTBOMlZ6RTZvLzFOdm41TGQyOHRyMVR1cWVJUFRsdzMvUmo1MllZK25pMzFFN2VsTXQ4MFM2MXNLcHM2dXkxVjlEQ3V1VmZsbkNuSkl3N0I2TDdIY01oZ3AyYllZQUJrV2l6NzZzeW1iZWJ4Q3BTNVUwZFh2c0VMYUpIZnJDVWc1a0tkZzZqZzV4eno0MGhOcVRSLzZnVENrY1YydFFySnYyaUZ0VXJQMVRHbldvNEY0R2R3K2pPellraExraWxYM0lKV2NNS1llbzNFbEFnUnZmS0Q1ZHhweVZpNXpBR3VuUHc4OXdVNnJscVBuVlFIalYxYzc1SjU1TDBaZjNZT2N5RWMydVRxV2VxK0NUMGJEUlR4MVpoZkd3MW5NUDFIR2JDZzdPVHFkOVg4b245OHJEWnprWDJ5TCtDT1FTTXJkZzVETUx3SUlaWW0wSTlYY1VubXAzbllONjZwMXQrQUY4cndVd3k3aHpVYzMrbzVsUE1ydWQ2ZVcxWGwzeGZNZmNEN0J6R2krNGN6RnZQVDZQLzdCSXl6SjYzZG5IYXRrNXBjMUVnVnh4aTUyWVl1bk56WTRpTDArbFg2b1M4VWNYY1hZTGFXZTIvN2RMdGhleEsvSDByeGd0eWpwaHZKVGRtTVc4MGllV2t5ZmVwTnpQYVI2M2lyZm5NY2REanlMbTlEdURRd2M3Tk1IVG5GdG5KYTNPWmoxdkZCa2FWVEwyZnFZN1czbTRTcjh0bGx1UDc1ekFJRUE0ODBEZFlodUZ2WjVmVXcydG1LdWNacXlMVjF4dUVLN09ZeVdlQytSM0RvWU9kbTBub3pzMkpKazVPSUI4cVkrTUhaTkxVWWc3MExYR3JmM0VKRjZjeFN3TzNPeE4yYmlhaFM3RFlSbDZZQ3BOV3Z0Q3RLS1lPckpLK0k5Z3pWZnc1eWZSQ1kvc0k3RnhJbzFkeUlBRlU5NXZ5MkU5YXhXYlc1UDJVYVdVc2NWRDVUUm0vT29HYVB6Nk8reC9Hb1lPZG14a1lCa1NnZlRET1RhR2ZydUpnWURYM1VSbVFNSWRFVDFTdnZMbVlBNjNuR01MQisvb2R5YUdEblF0ZW9MOE5vTzhodyttUEdEM09TZDFSd1A2M1hXeWdOY0hVZ1ZYMWpMVnoycGNkMGkzNTdPU0Q1N0J6b1lWaG15RmNCUHBsbVFNOUQralZlaUZ2Qk4ycWFlNUtDREM0bWxMZmJoYmhMUTZ6Nlc4YUNPR0FvSE51NHN6R0dFUVQ4NktKeFZaaVpUeDFUVFlEVTRlRUFibFBNSDlsSzB5QnMwZVVsMXpDK1duMEhKaEFoSXB6aG0yUnZwdlR6QW9pOXNMM1AwMzhEdmlvQml5d292M0xUb29uTDBxamYxN0VRaWNsRHNqZHZDYWJyeHg2cUt1MVYzNmtYTDliRS9vQ25QUHRHaE1KS3VmbVdnbkk2b3ZzeEJJN09hdXdUYkxVcnVNZ0QzZVFVRFlkNlNDUGlpV1h4WkxMNDhoajQ4Z1Q0cWtUNDlGK2VHdVNxSE5UcUV2UzZSOWxNL2NVc3krNGVLaTBDdHpLSU5xbXhOc3A1a1lMbzMzV0p2MjBnRDB1VHQ5OExoU2NnM3grcElNNEpaRzZJSTIrTEpPK1F1ZnlXY0hHRE1RVm1jeVZPc1lPaHpCUVhtZHNjcGpIYk1wbmJpOWs3eXBpZjFIQy9hcVVlN3lDZjdvSzdmSzVwVUg0cUZVTTc1RXloNVZHVmlNRHR1TWhlRnhHcUgrdkV5N1BZQTUzR0tPTmZ3ZVpSckE0cDIvRmVrb2lXcmI1UkNYM2NoMXY3SVFLclRBTGVGVUhiZXhhanpaMkJaUGVhQlQrM1NTODB5eSszeXArM0NwKzNpWkNHdHZaSlVYMHlMWmVPV0ZBeVJoV2lrWVZGNFdlT3pBa2VUZ1ZhUkc0UUZmbUJwUkh5dmpURStuREFuYzEyQ0Fvbk5QTE9LaGRMa3lqNGZ6ZTFTMUJNVnZzUmhTT0tnVXpuMEszVW9SUWk5M2VEYXpMQ2JXQ1JMdFgxNHp2WHQzTWFxQlhGNi9CL0dCSVJGdTJjNnBIbVpLSGhrTDJoUGY5dWxQYWxNOGVIUnZJSFRZTmdzVTVmWjB3ek5MLzNTUkNrb2M1bEtUdlhRK0lzd3ZqUThFa3dBRDYyd0RTbUtZRGxrMkZhRDVCS3g0NEpWNnRGeTdKb05HeitRTXFIQkJVemtHSkErVkxDeHVBV1JtTy9VY3ZXcnN2UVIwSnhiUXg1dmgza0xrRWxYTS96R0xlYXhIcmFGVTI5UW83amdNRUROL2xwQUlsNXRWWnpOR0J1My9KbDZCeTdxb3NCc3BxS0hITTNZTUR4LzRDV25sRTBxeDlLTW10VHFBV1FGOWc1M0FFTkZnVmtwejZacU53VlJhOWRPSTVKSUJmQjVrTGRpNlVvNU5ES3d1OU8zL3B2WUNkd3hIQUlHVXRZMGg1b1VhNEpKMDVQSEM3cE84TmRpNDBRMURSWFNRd1k3c3hsem5XU2FMSDhCc0RxMS9YQkFMc1hBaUdvbm1hR0cxN2wzUi9DWGRxSWpVdlp2elphSDc5RWlDd2M2RVdpZ2R0R2h6VkkvKzJnajh2bGRZZllhZzc1OWNwZ1FNN0YxS2hqWTMxOEo2NGZ2bTVhbjVEQnN4VjlWdElEUHc2SlhCZzUwSW5KTTNUeVd1T2Zobm1EVmRrMGdGODBzMkJ3YzZGU0lqYVdBdXJSdmRLejFiekd6T1paYkhqOHdic0hIYk85SUFDemkxNUtnaDFXNmYwWkFWM1NUbzkrUjBYdER6ZzF4MkJCanMzdTBQVzBJWGZ0Q0hsUDAzaVBjWHN1bFRxQ0llM3dhZkJOZ1BzM0t3TWFEOUc4Y0Q4dE1TdDd1cVMvK1FTYnNwbFRrbWdGdHFtTDcxTmdKMmJmU0dveUxaaXR4cmVKYjFhTDl4VHpGMmNUaDhYUjg2SHBwNFlVbjNiZjRvSkt1ZXV6bUkrYUVIN1cybFRjbi9zN0FnNFBTVU5mVnRQeUo1ZVFhdW4xWndSWlhlWEJEMzZRQW0zTVpOZUZVK2k5QWFORExiNXRmeTBFRlRPWFpQRmZOZ2lOakVtYjhNeCswTFQ5N09CMFhOVTh2VHdXaU9qbFJCcThxQzh1MXQ2dTFsNHJvYmZYTVJlbWNtY2xrZ2Q2ZER2Tlo5WXhlalg4dE5DVURtM01ZTjVyVjZBMDdSUDBOeXlCeGlXWmpVaVlraG5VR2RBUVBUcDlBcmdrNmVMOThBa29KM1RXbG10aVVWcHpFV3A1U1JhWnBFK0pEdjc1YkJ1NmRNMmNVdWo4RXcxZjI4eGUwMDJ2VGFGUHM0SnBkdjQ5ZDVwSDB6OUNBcm5BUDJ4cE9la1VMOHU0ejVvRmFONjVkaCtoSzF2Tm1QdFJjVDB5dEc5Y2xRUElxSmIydE10UWJyYTFTWHQ2SlMyZGtwZmRVai9iUmMvYXhNL2FoSGZheEZoK3ZsNmcvaEtIZjk4RGY5VUpmZFFHWGRYRVh0ekhudGxGbk5lS2cyemhHV3hwSGZoRnN4TWpmUm1tT2ZYNE5OSXNEZ1hUY3lMSWVBNExzOWs3aXhpSHk3akhpMUhnSUt6R1BpWUJxRE9yMHE1QjB1NSswdllYNWF3a0s3dUxtTHZLbVIvVnNEZVZzRCtKSis5SlkrOU1ZZTlOcHU5S3BPNUxJTlpuMGF2VGFaaDZGeVZRRUhYSE81QUZkdGN2Um05QktGcUV3U0xjekhFbkJoaXNaMDRObzQ4SlpFNkk0azZNeG14Sm1rMkF4L1Q0SFFna1FLSFRrMUVpL2doWGYwZ2dUcEpYOU8vTW82Qzdqbk9TYTdRbC9zZjVTQVB0NU9MYkdoWWdCYno2bVdrTkMvQk41ajZFVHpPR1VBN0FuREtoaFRHcDBaRWZ3TnZydG9uSUphQjM3OERlN1ZxY0JGY3prRjdvYk5XUDEvOTlwSUphZlJNTmlIWkJETkZNaitDTGM5TnRpUG13UGkxMnd3aTZKekR6SHF3YzVpcEJqdUhtV3F3YzVpcDVxQ2RvN0J6R0hNd25JdW5YbXNRdlhyNWhJOXpzYVFsWmN3U3kvdi9QUWJ6WFFIblVpRFBFYThmMkxrVkRyY2wyWU9kdzVnQWpKWkpubFhPMFMzMXZGY3ZuNWgwYnFWMUFPbnA0Q3hXeW1JbC9WOEZnemtZd0J6d0o1WUQ3Vlk3QnQrc3BiMTYrY1NrYzZkRmRWaWlSaTAyQmdGLzV2ZGFHTXpCWUtNc050cGlweTJSSTJ1dG5lL1dqSHIxOG9sSjV5N2FVemQvUnp2Nk0waDE4R2UrTDRUQkhDUmdtNE8xUkxzUDI5RzJNYXIraStwK3IxNCtNZW5jcmVFbHk3NTJ6WWthdHNSSkZqdmovMW9Zek1IZ1lDeHg0cHlJd1JWZjE5d1JXUnBSMWVIVnl5Y21uZnR0Wk83WjI4b1dSdlJiNGlXa0tpN3BNTjhWY0FiTWlSTVhoZmVldDdYMG1aaTh0T3BtcjE0K01lbmNPL0Y1TjRhVkhCUFdnWkljL0NVYVhyRjJtSU1HaEFObmRITlc3Rzc5Y1ZqUlI0bjVycFoycjE0K01lbWNzNkR5dDdhU3MzYlh6US92OVFxTFp4S1lnOGNRTG9aY3NMdm4zTjJ1Wnh3bHlTVlZROE1qWHIxOFl0SzV1dGFPRDlQTGJ3MHJXYkd0emhJeGFJbVgwV1FDcHpyTVFVR2lLN3RRbFlYM0g3K3Q5cmJ3NGkreUtwczd1aVJKOHVybEU1UE9FU1NaVmw3N0oydnVKVHRLbDRSM3c2aU1YZ1ZmcThOOEsyQUllT0lVTEhIQzRXRWRHM2VXL05XZW0xTlZUOVA3dURnSE1lbWNxcW9kblYyUk9hV1B4aFN1RGFzOUxLSVBaVXNubUtkZk9zSG1ZZmJHcU9IMEs4QVdHN1Z3VDgrNnNKcW5iSVgyL1BLZW5sN1BmcGJOVHpvSElRaENRMnY3bDVsbDkwWVVuTGFqZWtGNEg3cHVnaTZkUUdHSWF6dk1Yb0FWNEFZWTRoUVhodmV1MlY3NVlGVEI5dXl5bG80dVVkekhONjFHZk1NNUNKWmxLeHBhUGswcHVpK3ljTzN1dXFYaDNYTWpoMUhtaE5vT1FQSkJ6Z1AvY05vTFNZeGgxSmd1R0VwWXFYbFJ3NGVIZGEwTHEzMHdzdkRMak9LYTVqWklYbDZmOWhYK3prRlFGRlhaMlBwVlp2bWowWVViZHBRZXY3TnhibGd2dW9BQ0ZTSVlEVytEaDlxUUJRMm1EQnBNalFIUXhzemIzYjF5UjhQR25hVlBXZ3UzWjVlN1d0b1podkdhdEovWWgzTVFITWMxdExSSDU1YTlhTS9idEtmMDdMQzY1V0h0aDRYM1d2WU1XcUxkM25lRklSeXFQVXdJSWVnWmh3RUg1a1FNd21DNmZIZmJPYnRyYjlzRGs0WThxT0dhMnpzUG5PR00yTGR6RURBZWQzVjNwMWZXZlp4WjhaU2o1T2F3NHJWYlM1ZC83WnE3dFFYZENnQkhrRHlHN3ZIRWhBN1E0OUR2a2NQenQ3VWN1OVYxM3JheVc4T0tuM2FVZkpaWmtWVlYzOVBUczg4ckkzdkhmcDJEMERTTkpNbjYxdmI0b29yM0V3dWVpczc3YVVUWlpWRU5aMXU3VG5FTXJuSzZUM0FTSitocjBER3pIUXI2R25wOHRXTndyYlZ6WTFUOTdSR2xUOGZrZjVpVW4xUmMyZFRlQ2ZVWTJPTDE1dHZpUU00Wkljdnk0T0JnZFZOclNuVnpXR1g3NTlVRDc3cmNiOVl4VytyNTE0QUc5Q2h3ek95bm5vY2UvM2NkODI3TjZCZlYvWHVxMnROcW1sM05yVU5EUTRxaWVGMDV1UGgyNTNEZ01EZXdjemltTnNiRy9oKzlQNytLZktPK1JnQUFBQUJKUlU1RXJrSmdnZz09IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiY3JlZEJsb2IiLCJtaW5QaW5MZW5ndGgiLCJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiI3Nzg3YTQ4MjEzZTg0Nzg0OGEwNmM3ZWQ0OWE3YWFmNCIsIm9wdGlvbnMiOnsicmsiOnRydWUsImNsaWVudFBpbiI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6dHJ1ZSwiYWx3YXlzVXYiOmZhbHNlfSwibWF4TXNnU2l6ZSI6ODk2LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxLDJdLCJ0cmFuc3BvcnRzIjpbInVzYiIsIm5mYyJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XSwiZm9yY2VQSU5DaGFuZ2UiOmZhbHNlLCJtaW5QSU5MZW5ndGgiOjQsImZpcm13YXJlVmVyc2lvbiI6MSwibWF4Q3JlZEJsb2JMZW5ndGgiOjMyLCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6OCwidXZNb2RhbGl0eSI6MjA0OSwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjMwMH19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI2LTAzLTIwIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiU3dpc3NiaXQgaVNoaWVsZCBLZXkgMiAiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI2MDMyMDAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUHJvZmlsZXMiOlsiY29uc3VtZXIiXSwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wMi0yNyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IlN3aXNzYml0IGlTaGllbGQgS2V5IDIiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI1MDIyNzAwMyIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTAyLTI3IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjF9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjYtMDMtMjAifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyIxMzczODNhNjA0ZjAzYTNiNmZmYzk4YmQzYWI4MDlmMDczMjZiMDkwIl0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjEzNzM4M2E2MDRmMDNhM2I2ZmZjOThiZDNhYjgwOWYwNzMyNmIwOTAiXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ill1YmlLZXkgQmlvIEZJRE8gRWRpdGlvbiAoRW50ZXJwcmlzZSBQcm9maWxlKSJ9LCJkZXNjcmlwdGlvbiI6Ill1YmlLZXkgQmlvIEZJRE8gRWRpdGlvbiAoRW50ZXJwcmlzZSBQcm9maWxlKSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk3MjgsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6Mn1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiLCJyZW1vdGVfaGFuZGxlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlEU2pDQ0FqS2dBd0lCQWdJVVRuYmJHSVIyTkh2enFJS0ZBZVF3RzFYQmlzMHdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFRWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPc1hqM2swNEJhbjRUWWR0WktxRC9PUEp4eUR5YVBtQ0JVRlVpYVpJZ1R0ZVpuajNYMjVEaGdwWlpYc0M0RDB5ZEljcmxBNndOVUluT1JML0w5ekJiVEVJTUFWTUdvNmc3VUtBbWIyTUY2QUhibmhZSmQ5ZWlrdXBWTldTaEhOWU5jNEdCZE8xWU42QWZVcXZKaEhiZTNWNFNOTVBtQlJFS0pQVno3VGh3Z21nZ1RlOFdzMkswL3dzcXYyd1NFN3BiQ0JzVVpoSVg1MWJaTTNwcUR3SlBUbVJGRXZ0MC82dEc1ZU84RjNqMTRPWHFmRWhtam4xVnZ4S0RZUU9MWkF4Q3d3Z0MwUDRDZGZXdjN5OFBTUjhJMzU0aE8xWStHek5qdklxWDM4TktMeXd1SVlIRmVyT3hObHhFTUJ2RmhZQnVSdVlBa2tnVWFQcU42VUJoc0lMcnNDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNDb1JIaGl5Tm5iblhSV0lMNlpCWG9CWDlZVE1COEdBMVVkSXdRWU1CYUFGQ0FvVUNFYnBGcGI2RlBMblozRjVQeHNMM29mTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFDUUZhZkpJMS81V2c5Q0VFaW1FMVJQNTRSZ1F3VE5UT09Rc0xBQ1RlK3JJdGxGUXpDOVpEaHJWODI4eVg3anp5K0FBc3AzaXpLN1QxdGgyZGw3bSt0dTBzdzJQYS9vbGMwMm50NlB5SXczNDhnYUh6aEkxKzBLRTQ1cXh2RkRlTDJsTXhiUGZDWXZ5RUVhWXpqaVFFTFU1OTUxcFhHV3lLTWEvNGZMdE8rWktPWGhNdVZlcTRyWERQSTU0VzZKSE9pQWFpS2Rpdys1ZTNjMmt0L2pGSVF0TTZ2TVhnOUxORnpkakVUTnQyMFZYOVFldlJwRlpmdWNNRzl3Q2FRRG9GbFB6cFRNSktoUGV2L2ltSm1aWWhLZnIwbExjZW10cWpJeExBb3FaZE9ZZkhCZzYrdkFjZFBJL2lhdUdwVUF2N1grVUtObUR3aloyQmFINHNMd2hCMm0iLCJNSUlEUnpDQ0FqR2dBd0lCQWdJVWV4OW5UOXZ3Wk5YUzQ4M0xkaVlHZncyU2pTb3dDd1lKS29aSWh2Y05BUUVMTUM0eExEQXFCZ05WQkFNTUkxbDFZbWxqYnlCQmRIUmxjM1JoZEdsdmJpQkpiblJsY20xbFpHbGhkR1VnUWlBeE1DQVhEVEkxTURnd01UQXdNREF3TUZvWUR6azVPVGt4TWpNeE1qTTFPVFU1V2pBbk1TVXdJd1lEVlFRRERCeFpkV0pwWTI4Z1JrbEVUeUJCZEhSbGMzUmhkR2x2YmlCQ01pQXhNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXUxTWV2bnk5ZHlPOVpVQzM5U29NaExjUi9EWHJ0Ri9jaU0xMnRjaXkyRVhBWjZNa3JpdlZ0Q2ZFVk05WDZJU1RFbkJQNnVTWVlvdjZwcHY2TzZKaDJOSG1ZbTR3K0puUzRWbkNQVTdtSEFNZlZJMk1HVFRNVk9ldzB4VXNHN3NJU0lrSURVQm11azhZSzljNXppYzkrdkZRR0xJa3NkWE81aVZGSWdORzUzY0dYRDRaTFpvQVBpdTBQRW96eEFxWUlhSTRneEtoT0EzUzgvVzhtSVdzdTZvZnlqNEd2a0ZHNlo3a3lGMzEwN1A3bXdGSExySTNFTmFQV01PRmNUYUdhMGR3Ky92VlJ3alJjRVpCVnN1dVQvODdja1NzMGE1cGt0M3ZaQmxhWWVUOHB6U3JlVjdtb3djSU05MEwyaWFBVGxQMG54bWFFNm5PeVRib2pGVmwyd0lEQVFBQm8yWXdaREFkQmdOVkhRNEVGZ1FVU1hFaDNzYTNidER1cm00TU0vQzdTMWxSdXVZd0h3WURWUjBqQkJnd0ZvQVU2cmRDa0o0TWUyUjYyMVI4QTdwOFRwL1lvV0V3RWdZRFZSMFRBUUgvQkFnd0JnRUIvd0lCQURBT0JnTlZIUThCQWY4RUJBTUNBWVl3Q3dZSktvWklodmNOQVFFTEE0SUJBUUI1R2MzaGFmdHA3aEtzRVpzbytpL1o1blJ1cWRtekcyV0NsVW9SVXFiYVB5Z2xuSkRqS1Iva2ZnT2w2aWJiRi96dGhtM0ttWFE3SGNESVAyeE1kRzdVMkwyaW1iSlFIcVBmL2gySHFvamI0clpndWUrNlc0a3RTUjVlbFI5TDFyWXFFL1NHWU00aUVLb1ZRU3Y3UlQxcnhJZVdpS3N3L1Z4eGkvUU9uc3gzRjd4ODBDQ1lnQjRFM3lReDhWVFc0NDBoVEV3VEExZU1IT2l4MzJ0UHR5eUhJYThQVlZJZlZwSFFKQmFNVnZ2NTA4VUVqd2tiVTJybmpmem9TVE5TOUE1alVROG1CU3ZlOTVyakIwZG85OEVVK0R4ZEJxWDIrSDZpNXdsSUNGZ3poZHpjc25lOWhHS1Q2bHpUWDRjSWRKc3JZMit4bGVLMEZGUXk2bEdFVkxFZSIsIk1JSURTRENDQWpDZ0F3SUJBZ0lVRHFFUncrNFJuR1NnZ3hnVWV3SkZFUERSWjNZd0RRWUpLb1pJaHZjTkFRRUxCUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURJN1huSCtadkR3TUNRVThNOFplVjVxc2N1Ymx2VllhYVJ0M1liYXhuOWdvZEx4NXN3SDBsWHJkZ2poNWg3RnBWZ0NnWVlYN0U0YmwxdmJ6VUxlbXJNV1Q4TjNXTUdVZThRQUpiQmVpb1Y3Vy9FK2hUWlAvMFNLSlZhM2V3S0JvNlVMZU1uZlFaRHJWT1JBazh3VExxMnY1TGxqNXZNajdKdE9vdEthOUo3bkhTOGtMbXpYWFNhajBTd0VQaDVPQVpVVE5WNHpzMWJ2b1RBUVFXckw0L0o5UXVLdDZXQ0ZFNW5VTmlSUWNFYlZGOG1scUsyYngyejZva1ZsdHlEVkxDeFlicFVURUx2WTF1c1IzRFRHUFVvSUNsT200Y3Jwd25EUkxWSHZqWWVQR0JCLy9wRXl6eEEvZ2NTY3hqd2FIMVpVdzliblNiSHl1cktxYlRhMUt2akFnTUJBQUdqWmpCa01CMEdBMVVkRGdRV0JCVHF0MEtRbmd4N1pIcmJWSHdEdW54T245aWhZVEFmQmdOVkhTTUVHREFXZ0JUUzd1OWFJbzA2YlZ3amx6M3loZFVtOFNWN2tqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQTRHQTFVZER3RUIvd1FFQXdJQmhqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFxUWFDV014VEdxVlZYN1NrN2trSm1VdWVUU1lLdVU2K0tCQlNnd0lSbmx3OUs3SGUxSXB4WjBoZHdwUE5pa0tqbWN5RmdGUHpoSW13SEpneHh1VDkwUHczdllPZGNKSk5rdERnMzVQWE9melNuMTVjRkF4MVJPMG1QVG1JYjhkWGlFV09wem9YdmR3WERNNDFaYUNEWU1UN3c0SVF0TXl2RTd4VUJacTJianRBbnEvTkRVQTdiZTRIOEgzaXBDKy8rTktsVXJjVWgrajQ4SzY3V0kwdTFtNkZlUXVlQkE3bjA2ajgyNXJxRHFzYUxzOVRiN0tBSEF3OFBtcldhTlBHMmtqS2VyeFBFZmVjaXZsRmF3cDJSV1p2eHJWdG4zVFYyU0J4eUNKQ2tYc05EMDVkQ0VyVkhTSklzK0JkdFRWTlk5QXd0eVBtbnliMHY0bVNUenZXZHc9PSIsIk1JSURQakNDQWlhZ0F3SUJBZ0lVWHplaUVESkVPVHQxNEY1bjBvNlpmL2JCd2lVd0RRWUpLb1pJaHZjTkFRRU5CUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTVo2L1R4TThySVQrRWFvUHZHODFvbnRNT28vMm1RMlJCd0pIUzBRWmN4VmFOWHZsMTJMVWhCWjVMbWlCU2NJWmQxUm54MW9kNTg1aCsvZGhLN2hFbTdKQUFMa0tLdHMxZk81M0tHTkxadWp6NWgzd0duY3I0aHlLRjBHNzRiL1UzSzloRTVtR05ENnpxWWNoQ1JBSGZyWU1ZUkRGNFlMMFg0RDVuR2R4dnBwQXk2bmtFbXRXbU1ud08zaTBUQXVjc3JiRTQ4NUh2R000cjBWcGdWZEpwdmdRamlUSkNUSXErRDM1aHd0VDhRREl2K25HdnBjeWk1d2NJZkNrenlDaW1KdWtoWXk2S29xTk1LUUVkcE5pU092V3lETVRNdDFid0N2RXpwdzkxdSttc1V0NHJqMGVmbk85czBaT3dkd01SRG5INHhnVWw1Wkx3cnJQa2ZDMS8wQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQjhHQTFVZEl3UVlNQmFBRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRTXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJEUVVBQTRJQkFRQzNJVy9zZ0I5cFo4YXBKTmp4dUdvWCtGa0lMa3Mwd01OcmRYTC9jb1V2c3JoenN2bDZtZVBNcmJHSkJ5SjFYbnF1QjVzZ2NSRU5GeGRRRm1hM21pbzhVcGYxb3dNMVpyZVhySjBtQURHMkJwbHFiSm54aXlZYStSMTFyZUlGVFdlSWhNTmNaS3NEWnJGQXlQdUZqQ1dTUXZKbU5XZTltRlJZRmdOaFhKS2tYSWI1SDFYZ0VEbHdpZWRZUk03Vm9sQk5sbGQ2cFJGS2xYOHVzdDZPVE1PZUFEbDJ4TkYwbTFMVGhTZGV1WHZEeUMxZzkrSUxmejNTNk9JWWdjM2lyb1JjRkQzNTRnN3JLZnU2N3FGQXc5Z0M0eWkweEJUUHJZOTVyaDQvSHFhVVlDQS9MOGxkUms2SDdYazM1RCtXVnBtcTJTaC94VDVIaUZ1aGY0d0piMGJLIiwiTUlJRFNqQ0NBaktnQXdJQkFnSVVSMzhtcTI2U2Yyc3pWVjJCZEc2V0VON2t1V1V3RFFZSktvWklodmNOQVFFTEJRQXdMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3SUJjTk1qUXhNakF4TURBd01EQXdXaGdQT1RrNU9URXlNekV5TXpVNU5UbGFNQ1l4SkRBaUJnTlZCQU1NRzFsMVltbGpieUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRUlnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTlkwV2I5b1BvUm9Lb1F5V1BhSnB6MTF2cldUZzZ6VHRtTmoyVm9LUm55dktHUnFwemI4M3c1bDZZQTk2VVlrWUJEUVAwaWxPMkRQZTZ3V3FWUjV6RGZSemRjSDhiaCtMN2RHR3ZhZTZoUlRaaGtGa0NwWERzNEhjY2tuckRmOEZDbEo3SGUzOUpmNDIvRzFRbTJ6ejlXV21yUFh0Z2lLL3gwNUdqc1FmR3VERzF6ZjVRVFVVaWU4bHd5bUszVGZkT3ZOZWVKQUFQZTJwbjdJdGZSYityVnJOV2lEemxSbjJ2Tm5aMndQbzR3SC9XSjZkaFhaRytyTVdUK2E2Qm9jZzFVZkl3NmtkdW5HNGJUcFp6c3ZhY0ZZeVIwbXBmK0RlT25wU1dBbXl3SldIdlRsZjJZWHhGeWVYY1RBQ2RRbGNNTkdKMlZoWlE0OHh0UDUvUkJQLzhrQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZDaHk0Mm9raXFjVFMxaXFhL0hSV2prQm40SC9NQjhHQTFVZEl3UVlNQmFBRk9xM1FwQ2VESHRrZXR0VWZBTzZmRTZmMktGaE1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQW4rUkhJUGJ0TUVETmRUMWc4SC9SaXRBa1VkTGdBdDF0V0dXbmxqOWtuYnY0LzRHbFg3QzlwNDVlZlBPOS9hWkw2T1YxWFJLQmk2S210Qlc1SzdudVlFbk14LzVCcUJTYkxUN3JoZHVDNDlUQmVNYjlQSGRYc1RsU1ZOWWVmcjFkR2lkcjRqMHhWQlFMYjFya25EQWJkV0R6S2Z2bmF5S084RnJ3ZTdIeDg0M01HL3JKK2MwWHJ1VXZiZlZUQ0hMaUlXaE03b05EaEw4eG9iNnhVbzlLTEtjU0wrSXRZc08zLzlXYjhROUdqc3FMNEZYc0RjRzFTYVloN0twZnVNbU9peHF6SlpPMm5JaWNQWVJnMUkyU3VpVWZZTzcwdG1kSGNibCtrU1FtU1l0N3JxNHZpSUxnMkd4M2o5cklUdVdUamJhVWFTU1F4Z09tTVNIdXl6TUFDIiwiTUlJRFNEQ0NBakNnQXdJQkFnSVVVY21NWHpSSUZPZ0dUSzBUYjNnRXVaWVprQkl3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRRG01NTViV1k5V1crdE9ZMHJJV0hsZGgrYU5hbm9DWkNGaDdHazNZWnJRbVBVdzBoa1NHNnFZSFF0UCtmWnlTMzNWRXJ2ZytCUXFubXVtZ05oZnhGcmt3RVpFTGVpZEJjQzhDNEFnNG5xcWlQV3B6c3ZJMTdOY3hZbEluTE5MRmNaWS8rZ09pTjZaT1RpaE81L3ZCWk1iajlyaWFBY3FsaVltTkdKUGdUY01HYUVBeU16RU1OeTJubTZFcCtwalA1YUY2Z2kyMXQvVVFGc3VKMWoyUmoveW5NL1NkUnQrZWNhbDVPWW90eEhrRmJMOXZ2djJBMk92NUlUWkNsdzRiT1M5bnB5cFFpbU9aNVFBWXl0bVlhUXBXbC9wTVl6NnpTajhScWtWRE5FSkdxTmZUS0EyaXZMWXdYNmxTdHRNUGFwZzBKODRsOVgwdm9WTi9GcFM0VkNWQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJRZ0tGQWhHNlJhVytoVHk1MmR4ZVQ4YkM5Nkh6QWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQVlNemdMckpMSXIwT292UW5BWnJSSUd1YWJpSFNVS1NtYkxSV3BSa1dlQXRzQ2hERUhwWGNKL2JnRE5LWVdvSHFROHhSVWpCNEN5ZXBZZXZjM1lsckc4bzd6SHhwZlZjYW9MNVNldUprekh4S240YlRhU3A5K012d2FtbnA2NGtaTWlOYkZMa25mUDlrWUtvUkhrTVdoZVJKMVVzUDF6NFNjbWtDZUlMZnNNczZ2cW92cWpXQ2xGc0pwQmNzbHVZSFdGN2JCSjFuNFJ3ZytBVEVvcFk0SWdHdjZadndjK0E5citBVDJocXBvU2tZb0FsK0FOWXdnc2xPZjlzSmUwVitUQTlZWS9VbGFCbVBQVGQwLy9yOXd2Y2VQV1prUGpLb0FDL3pVTmhmRGJoNExWOEdIczNseVgyWG9tTC9MTmM4Sll6eUlhREVoR1F2ZW9QaGgvdHIxZz09Il0sImljb24iOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJpY29uRGFyayI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsInByb3ZpZGVyTG9nb0xpZ2h0IjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwicHJvdmlkZXJMb2dvRGFyayI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI2LTA0LTI1IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTcyOCwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZdWJpS2V5IEJpbyBGSURPIEVkaXRpb24gKEVudGVycHJpc2UgUHJvZmlsZSkiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlUyRjEwMDAyMDI2MDQyNTAwMiIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUHJvZmlsZXMiOlsiZW50ZXJwcmlzZSJdLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI2LTA0LTI1IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTcyOH1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNi0wNS0wMSJ9LHsiYWFndWlkIjoiNzJjNmI3MmQtODUxMi00YzY2LTgzNTktOWQzZDEwZDkyMjJmIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI3MmM2YjcyZC04NTEyLTRjNjYtODM1OS05ZDNkMTBkOTIyMmYiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiU2VjdXJpdHkgS2V5IE5GQyBieSBZdWJpY28gLSBFbnRlcnByaXNlIEVkaXRpb24gKEVudGVycHJpc2UgUHJvIn0sImRlc2NyaXB0aW9uIjoiU2VjdXJpdHkgS2V5IE5GQyBieSBZdWJpY28gLSBFbnRlcnByaXNlIEVkaXRpb24gKEVudGVycHJpc2UgUHJvZmlsZSkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2LCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX0seyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbImVkMjU1MTlfZWRkc2Ffc2hhNTEyX3JhdyIsInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Iiwic2VjcDM4NHIxX2VjZHNhX3NoYTM4NF9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjYsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NiwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURTakNDQWpLZ0F3SUJBZ0lVUjM4bXEyNlNmMnN6VlYyQmRHNldFTjdrdVdVd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVJZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU5ZMFdiOW9Qb1JvS29ReVdQYUpwejExdnJXVGc2elR0bU5qMlZvS1JueXZLR1JxcHpiODN3NWw2WUE5NlVZa1lCRFFQMGlsTzJEUGU2d1dxVlI1ekRmUnpkY0g4YmgrTDdkR0d2YWU2aFJUWmhrRmtDcFhEczRIY2NrbnJEZjhGQ2xKN0hlMzlKZjQyL0cxUW0yeno5V1dtclBYdGdpSy94MDVHanNRZkd1REcxemY1UVRVVWllOGx3eW1LM1RmZE92TmVlSkFBUGUycG43SXRmUmIrclZyTldpRHpsUm4ydk5uWjJ3UG80d0gvV0o2ZGhYWkcrck1XVCthNkJvY2cxVWZJdzZrZHVuRzRiVHBaenN2YWNGWXlSMG1wZitEZU9ucFNXQW15d0pXSHZUbGYyWVh4RnllWGNUQUNkUWxjTU5HSjJWaFpRNDh4dFA1L1JCUC84a0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ2h5NDJva2lxY1RTMWlxYS9IUldqa0JuNEgvTUI4R0ExVWRJd1FZTUJhQUZPcTNRcENlREh0a2V0dFVmQU82ZkU2ZjJLRmhNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUFuK1JISVBidE1FRE5kVDFnOEgvUml0QWtVZExnQXQxdFdHV25sajlrbmJ2NC80R2xYN0M5cDQ1ZWZQTzkvYVpMNk9WMVhSS0JpNkttdEJXNUs3bnVZRW5NeC81QnFCU2JMVDdyaGR1QzQ5VEJlTWI5UEhkWHNUbFNWTlllZnIxZEdpZHI0ajB4VkJRTGIxcmtuREFiZFdEektmdm5heUtPOEZyd2U3SHg4NDNNRy9ySitjMFhydVV2YmZWVENITGlJV2hNN29ORGhMOHhvYjZ4VW85S0xLY1NMK0l0WXNPMy85V2I4UTlHanNxTDRGWHNEY0cxU2FZaDdLcGZ1TW1PaXhxekpaTzJuSWljUFlSZzFJMlN1aVVmWU83MHRtZEhjYmwra1NRbVNZdDdycTR2aUlMZzJHeDNqOXJJVHVXVGpiYVVhU1NReGdPbU1TSHV5ek1BQyIsIk1JSURSekNDQWpHZ0F3SUJBZ0lVZXg5blQ5dndaTlhTNDgzTGRpWUdmdzJTalNvd0N3WUpLb1pJaHZjTkFRRUxNQzR4TERBcUJnTlZCQU1NSTFsMVltbGpieUJCZEhSbGMzUmhkR2x2YmlCSmJuUmxjbTFsWkdsaGRHVWdRaUF4TUNBWERUSTFNRGd3TVRBd01EQXdNRm9ZRHprNU9Ua3hNak14TWpNMU9UVTVXakFuTVNVd0l3WURWUVFEREJ4WmRXSnBZMjhnUmtsRVR5QkJkSFJsYzNSaGRHbHZiaUJDTWlBeE1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBdTFNZXZueTlkeU85WlVDMzlTb01oTGNSL0RYcnRGL2NpTTEydGNpeTJFWEFaNk1rcml2VnRDZkVWTTlYNklTVEVuQlA2dVNZWW92NnBwdjZPNkpoMk5IbVltNHcrSm5TNFZuQ1BVN21IQU1mVkkyTUdUVE1WT2V3MHhVc0c3c0lTSWtJRFVCbXVrOFlLOWM1emljOSt2RlFHTElrc2RYTzVpVkZJZ05HNTNjR1hENFpMWm9BUGl1MFBFb3p4QXFZSWFJNGd4S2hPQTNTOC9XOG1JV3N1Nm9meWo0R3ZrRkc2WjdreUYzMTA3UDdtd0ZITHJJM0VOYVBXTU9GY1RhR2EwZHcrL3ZWUndqUmNFWkJWc3V1VC84N2NrU3MwYTVwa3QzdlpCbGFZZVQ4cHpTcmVWN21vd2NJTTkwTDJpYUFUbFAwbnhtYUU2bk95VGJvakZWbDJ3SURBUUFCbzJZd1pEQWRCZ05WSFE0RUZnUVVTWEVoM3NhM2J0RHVybTRNTS9DN1MxbFJ1dVl3SHdZRFZSMGpCQmd3Rm9BVTZyZENrSjRNZTJSNjIxUjhBN3A4VHAvWW9XRXdFZ1lEVlIwVEFRSC9CQWd3QmdFQi93SUJBREFPQmdOVkhROEJBZjhFQkFNQ0FZWXdDd1lKS29aSWh2Y05BUUVMQTRJQkFRQjVHYzNoYWZ0cDdoS3NFWnNvK2kvWjVuUnVxZG16RzJXQ2xVb1JVcWJhUHlnbG5KRGpLUi9rZmdPbDZpYmJGL3p0aG0zS21YUTdIY0RJUDJ4TWRHN1UyTDJpbWJKUUhxUGYvaDJIcW9qYjRyWmd1ZSs2VzRrdFNSNWVsUjlMMXJZcUUvU0dZTTRpRUtvVlFTdjdSVDFyeEllV2lLc3cvVnh4aS9RT25zeDNGN3g4MENDWWdCNEUzeVF4OFZUVzQ0MGhURXdUQTFlTUhPaXgzMnRQdHl5SElhOFBWVklmVnBIUUpCYU1WdnY1MDhVRWp3a2JVMnJuamZ6b1NUTlM5QTVqVVE4bUJTdmU5NXJqQjBkbzk4RVUrRHhkQnFYMitINmk1d2xJQ0ZnemhkemNzbmU5aEdLVDZselRYNGNJZEpzclkyK3hsZUswRkZReTZsR0VWTEVlIiwiTUlJRFNEQ0NBakNnQXdJQkFnSVVVY21NWHpSSUZPZ0dUSzBUYjNnRXVaWVprQkl3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRRG01NTViV1k5V1crdE9ZMHJJV0hsZGgrYU5hbm9DWkNGaDdHazNZWnJRbVBVdzBoa1NHNnFZSFF0UCtmWnlTMzNWRXJ2ZytCUXFubXVtZ05oZnhGcmt3RVpFTGVpZEJjQzhDNEFnNG5xcWlQV3B6c3ZJMTdOY3hZbEluTE5MRmNaWS8rZ09pTjZaT1RpaE81L3ZCWk1iajlyaWFBY3FsaVltTkdKUGdUY01HYUVBeU16RU1OeTJubTZFcCtwalA1YUY2Z2kyMXQvVVFGc3VKMWoyUmoveW5NL1NkUnQrZWNhbDVPWW90eEhrRmJMOXZ2djJBMk92NUlUWkNsdzRiT1M5bnB5cFFpbU9aNVFBWXl0bVlhUXBXbC9wTVl6NnpTajhScWtWRE5FSkdxTmZUS0EyaXZMWXdYNmxTdHRNUGFwZzBKODRsOVgwdm9WTi9GcFM0VkNWQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJRZ0tGQWhHNlJhVytoVHk1MmR4ZVQ4YkM5Nkh6QWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQVlNemdMckpMSXIwT292UW5BWnJSSUd1YWJpSFNVS1NtYkxSV3BSa1dlQXRzQ2hERUhwWGNKL2JnRE5LWVdvSHFROHhSVWpCNEN5ZXBZZXZjM1lsckc4bzd6SHhwZlZjYW9MNVNldUprekh4S240YlRhU3A5K012d2FtbnA2NGtaTWlOYkZMa25mUDlrWUtvUkhrTVdoZVJKMVVzUDF6NFNjbWtDZUlMZnNNczZ2cW92cWpXQ2xGc0pwQmNzbHVZSFdGN2JCSjFuNFJ3ZytBVEVvcFk0SWdHdjZadndjK0E5citBVDJocXBvU2tZb0FsK0FOWXdnc2xPZjlzSmUwVitUQTlZWS9VbGFCbVBQVGQwLy9yOXd2Y2VQV1prUGpLb0FDL3pVTmhmRGJoNExWOEdIczNseVgyWG9tTC9MTmM4Sll6eUlhREVoR1F2ZW9QaGgvdHIxZz09IiwiTUlJRFNEQ0NBakNnQXdJQkFnSVVEcUVSdys0Um5HU2dneGdVZXdKRkVQRFJaM1l3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRREk3WG5IK1p2RHdNQ1FVOE04WmVWNXFzY3VibHZWWWFhUnQzWWJheG45Z29kTHg1c3dIMGxYcmRnamg1aDdGcFZnQ2dZWVg3RTRibDF2YnpVTGVtck1XVDhOM1dNR1VlOFFBSmJCZWlvVjdXL0UraFRaUC8wU0tKVmEzZXdLQm82VUxlTW5mUVpEclZPUkFrOHdUTHEydjVMbGo1dk1qN0p0T290S2E5SjduSFM4a0xtelhYU2FqMFN3RVBoNU9BWlVUTlY0enMxYnZvVEFRUVdyTDQvSjlRdUt0NldDRkU1blVOaVJRY0ViVkY4bWxxSzJieDJ6Nm9rVmx0eURWTEN4WWJwVVRFTHZZMXVzUjNEVEdQVW9JQ2xPbTRjcnB3bkRSTFZIdmpZZVBHQkIvL3BFeXp4QS9nY1NjeGp3YUgxWlV3OWJuU2JIeXVyS3FiVGExS3ZqQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJUcXQwS1FuZ3g3WkhyYlZId0R1bnhPbjlpaFlUQWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQXFRYUNXTXhUR3FWVlg3U2s3a2tKbVV1ZVRTWUt1VTYrS0JCU2d3SVJubHc5SzdIZTFJcHhaMGhkd3BQTmlrS2ptY3lGZ0ZQemhJbXdISmd4eHVUOTBQdzN2WU9kY0pKTmt0RGczNVBYT2Z6U24xNWNGQXgxUk8wbVBUbUliOGRYaUVXT3B6b1h2ZHdYRE00MVphQ0RZTVQ3dzRJUXRNeXZFN3hVQlpxMmJqdEFucS9ORFVBN2JlNEg4SDNpcEMrLytOS2xVcmNVaCtqNDhLNjdXSTB1MW02RmVRdWVCQTduMDZqODI1cnFEcXNhTHM5VGI3S0FIQXc4UG1yV2FOUEcya2pLZXJ4UEVmZWNpdmxGYXdwMlJXWnZ4clZ0bjNUVjJTQnh5Q0pDa1hzTkQwNWRDRXJWSFNKSXMrQmR0VFZOWTlBd3R5UG1ueWIwdjRtU1R6dldkdz09IiwiTUlJRFNqQ0NBaktnQXdJQkFnSVVUbmJiR0lSMk5IdnpxSUtGQWVRd0cxWEJpczB3RFFZSktvWklodmNOQVFFTEJRQXdMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3SUJjTk1qUXhNakF4TURBd01EQXdXaGdQT1RrNU9URXlNekV5TXpVNU5UbGFNQ1l4SkRBaUJnTlZCQU1NRzFsMVltbGpieUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRUVnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBT3NYajNrMDRCYW40VFlkdFpLcUQvT1BKeHlEeWFQbUNCVUZVaWFaSWdUdGVabmozWDI1RGhncFpaWHNDNEQweWRJY3JsQTZ3TlVJbk9STC9MOXpCYlRFSU1BVk1HbzZnN1VLQW1iMk1GNkFIYm5oWUpkOWVpa3VwVk5XU2hITllOYzRHQmRPMVlONkFmVXF2SmhIYmUzVjRTTk1QbUJSRUtKUFZ6N1Rod2dtZ2dUZThXczJLMC93c3F2MndTRTdwYkNCc1VaaElYNTFiWk0zcHFEd0pQVG1SRkV2dDAvNnRHNWVPOEYzajE0T1hxZkVobWpuMVZ2eEtEWVFPTFpBeEN3d2dDMFA0Q2RmV3YzeThQU1I4STM1NGhPMVkrR3pOanZJcVgzOE5LTHl3dUlZSEZlck94Tmx4RU1CdkZoWUJ1UnVZQWtrZ1VhUHFONlVCaHNJTHJzQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZDQ29SSGhpeU5uYm5YUldJTDZaQlhvQlg5WVRNQjhHQTFVZEl3UVlNQmFBRkNBb1VDRWJwRnBiNkZQTG5aM0Y1UHhzTDNvZk1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQ1FGYWZKSTEvNVdnOUNFRWltRTFSUDU0UmdRd1ROVE9PUXNMQUNUZStySXRsRlF6QzlaRGhyVjgyOHlYN2p6eStBQXNwM2l6SzdUMXRoMmRsN20rdHUwc3cyUGEvb2xjMDJudDZQeUl3MzQ4Z2FIemhJMSswS0U0NXF4dkZEZUwybE14YlBmQ1l2eUVFYVl6amlRRUxVNTk1MXBYR1d5S01hLzRmTHRPK1pLT1hoTXVWZXE0clhEUEk1NFc2SkhPaUFhaUtkaXcrNWUzYzJrdC9qRklRdE02dk1YZzlMTkZ6ZGpFVE50MjBWWDlRZXZScEZaZnVjTUc5d0NhUURvRmxQenBUTUpLaFBldi9pbUptWlloS2ZyMGxMY2VtdHFqSXhMQW9xWmRPWWZIQmc2K3ZBY2RQSS9pYXVHcFVBdjdYK1VLTm1Ed2paMkJhSDRzTHdoQjJtIiwiTUlJRFBqQ0NBaWFnQXdJQkFnSVVYemVpRURKRU9UdDE0RjVuMG82WmYvYkJ3aVV3RFFZSktvWklodmNOQVFFTkJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNWjYvVHhNOHJJVCtFYW9Qdkc4MW9udE1Pby8ybVEyUkJ3SkhTMFFaY3hWYU5YdmwxMkxVaEJaNUxtaUJTY0laZDFSbngxb2Q1ODVoKy9kaEs3aEVtN0pBQUxrS0t0czFmTzUzS0dOTFp1ano1aDN3R25jcjRoeUtGMEc3NGIvVTNLOWhFNW1HTkQ2enFZY2hDUkFIZnJZTVlSREY0WUwwWDRENW5HZHh2cHBBeTZua0VtdFdtTW53TzNpMFRBdWNzcmJFNDg1SHZHTTRyMFZwZ1ZkSnB2Z1FqaVRKQ1RJcStEMzVod3RUOFFESXYrbkd2cGN5aTV3Y0lmQ2t6eUNpbUp1a2hZeTZLb3FOTUtRRWRwTmlTT3ZXeURNVE10MWJ3Q3ZFenB3OTF1K21zVXQ0cmowZWZuTzlzMFpPd2R3TVJEbkg0eGdVbDVaTHdyclBrZkMxLzBDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01COEdBMVVkSXdRWU1CYUFGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFNd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkRRVUFBNElCQVFDM0lXL3NnQjlwWjhhcEpOanh1R29YK0ZrSUxrczB3TU5yZFhML2NvVXZzcmh6c3ZsNm1lUE1yYkdKQnlKMVhucXVCNXNnY1JFTkZ4ZFFGbWEzbWlvOFVwZjFvd00xWnJlWHJKMG1BREcyQnBscWJKbnhpeVlhK1IxMXJlSUZUV2VJaE1OY1pLc0RackZBeVB1RmpDV1NRdkptTldlOW1GUllGZ05oWEpLa1hJYjVIMVhnRURsd2llZFlSTTdWb2xCTmxsZDZwUkZLbFg4dXN0Nk9UTU9lQURsMnhORjBtMUxUaFNkZXVYdkR5QzFnOStJTGZ6M1M2T0lZZ2MzaXJvUmNGRDM1NGc3cktmdTY3cUZBdzlnQzR5aTB4QlRQclk5NXJoNC9IcWFVWUNBL0w4bGRSazZIN1hrMzVEK1dWcG1xMlNoL3hUNUhpRnVoZjR3SmIwYksiXSwiaWNvbiI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsImljb25EYXJrIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwicHJvdmlkZXJMb2dvTGlnaHQiOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJwcm92aWRlckxvZ29EYXJrIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMV9QUkUiLCJGSURPXzJfMSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJsYXJnZUJsb2JLZXkiLCJjcmVkQmxvYiIsIm1pblBpbkxlbmd0aCJdLCJhYWd1aWQiOiI3MmM2YjcyZDg1MTI0YzY2ODM1OTlkM2QxMGQ5MjIyZiIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImxhcmdlQmxvYnMiOnRydWUsImVwIjpmYWxzZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOnRydWUsImFsd2F5c1V2IjpmYWxzZX0sIm1heE1zZ1NpemUiOjE1MzYsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6OCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoxMjgsInRyYW5zcG9ydHMiOlsibmZjIiwidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN30seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTh9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi0zNX1dLCJtYXhTZXJpYWxpemVkTGFyZ2VCbG9iQXJyYXkiOjQwOTYsIm1pblBJTkxlbmd0aCI6NiwiZmlybXdhcmVWZXJzaW9uIjozMjk0NzYsIm1heENyZWRCbG9iTGVuZ3RoIjozMiwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjEsInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjoxMDB9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMi0yMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzYsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiU2VjdXJpdHkgS2V5IE5GQyBieSBZdWJpY28gLSBFbnRlcnByaXNlIEVkaXRpb24gKEVudGVycHJpc2UgUHJvZmlsZSkiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI0MTIyMjAwNCIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTEyLTIyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3Nn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wMS0xMCJ9LHsiYWFpZCI6IjAwMjQjMTU2MiIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFpZCI6IjAwMjQjMTU2MiIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJHK0RVc2VyQ2hvaWNlS2V5c3RvcmVBbmRyb2lkIn0sImRlc2NyaXB0aW9uIjoiRytEIFVzZXJDaG9pY2VLZXlzdG9yZUFuZHJvaWQiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJ1YWYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoyfSx7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9kZXIiXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX2RlciJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsic29mdHdhcmUiXSwiYXR0YWNobWVudEhpbnQiOlsiaW50ZXJuYWwiXSwidGNEaXNwbGF5IjpbImFueSIsInByaXZpbGVnZWRfc29mdHdhcmUiXSwidGNEaXNwbGF5Q29udGVudFR5cGUiOiJpbWFnZS9wbmciLCJ0Y0Rpc3BsYXlQTkdDaGFyYWN0ZXJpc3RpY3MiOlt7IndpZHRoIjo1NDAsImhlaWdodCI6OTYwLCJiaXREZXB0aCI6MTYsImNvbG9yVHlwZSI6MiwiY29tcHJlc3Npb24iOjAsImZpbHRlciI6MCwiaW50ZXJsYWNlIjowfV0sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlCbURDQ0FUMENCR1FkUFIwd0NnWUlLb1pJemowRUF3SXdWakVMTUFrR0ExVUVCaE1DU1U0eEN6QUpCZ05WQkFnTUFrMUlNUTB3Q3dZRFZRUUhEQVJRVlU1Rk1Rc3dDUVlEVlFRS0RBSkhSREVMTUFrR0ExVUVDd3dDUkZNeEVUQVBCZ05WQkFNTUNFRlZWRWhTVDA5VU1CNFhEVEl6TURNeU5EQTJNRE13T1ZvWERUUXpNRE15TkRBMk1ETXdPVm93VmpFTE1Ba0dBMVVFQmhNQ1NVNHhDekFKQmdOVkJBZ01BazFJTVEwd0N3WURWUVFIREFSUVZVNUZNUXN3Q1FZRFZRUUtEQUpIUkRFTE1Ba0dBMVVFQ3d3Q1JGTXhFVEFQQmdOVkJBTU1DRUZWVkVoU1QwOVVNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVTSXBJL2RLWUNEWWh6d0Qyd1NmWUFPYi9uTmFpUGNXRjIxdnhaay9UZ0QwT0p0Y0QrT1BtNjRud1pkRldTRVlTVzdpT3FucG1KeWRlOG1nci90bkFpekFLQmdncWhrak9QUVFEQWdOSkFEQkdBaUVBM2J2aGF6UUZQd215WGx4Sy94Q1hmaDdnMVgxRW9iTEMzTCsyR09SeHA3Z0NJUUNmTkVUWC9tMkJlYlJMWEk0TE1QMUVRR1BYRkRmN09rNzRVN3hiaU00VmtBPT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCwvOWovNEFBUVNrWkpSZ0FCQVFBQUFRQUJBQUQvMndCREFBTUNBZ01DQWdNREF3TUVBd01FQlFnRkJRUUVCUW9IQndZSURBb01EQXNLQ3dzTkRoSVFEUTRSRGdzTEVCWVFFUk1VRlJVVkRBOFhHQllVR0JJVUZSVC8yd0JEQVFNRUJBVUVCUWtGQlFrVURRc05GQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJUL3dnQVJDQURJQU1nREFTSUFBaEVCQXhFQi84UUFIQUFCQUFNQUF3RUJBQUFBQUFBQUFBQUFBQWNJQ1FRRkJnSUQvOFFBR3dFQkFBSURBUUVBQUFBQUFBQUFBQUFBQUFFREFnVUdCQWYvMmdBTUF3RUFBaEFERUFBQUFheWo2RjV3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVnZDNlRFQ1eExKMzZ4Rm9jNWw4bEdQU1hLc3pORE0wOU5WZE4rOFA4WmRMS0JIcGllK3ZoVHVvZk5YTkF2bStNeVVtUm4xZFFaZ0FITTRjdzFMaWNQMVZMZVF1alR6SjJkSk0zMzVwaGFhVWplYWJLVVJ2ZFY3U1oxZFRTNlN1Rmt3US9iSHI3NjV0MkYxbWRrODdOUHFFK1NZeUhSMWdBTEIxOGx2eVRlalBYUXFtdWdzZ1lkVlZwMXlhSGZYTFczdlVRazJwYUlxZDVNcllxSVBmamRMTm1UWXkyK0NUb3hzYjZJdHRTdTZsQTlCWkhBNnFvQUJ5T09OSFAycFBlbmpycy84QXhtbmNZYkxDaWE2ejB4U21hWnQ5SFJNbFVSdmRGK3F6b1l1czNsZEtWMXU2aWFtM3Q3UHJ0Sm4wR2VudS9BOURXR3h4QUFBZXY4Z3hYS2svT1pxYzlKbWJLbHBNelpHa3pOa2FUTTJScE53TTZFcmgxajh3Mk9JZXlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQLzhRQUtCQUFBUU1EQXdRQkJRRUFBQUFBQUFBQUJRQUVCZ0lEQnhVWElBRVFFellSRWhZd05IQTEvOW9BQ0FFQkFBRUZBdjZiR0lTUmxOWWJGZ1VaUzNGTW1sUGd0S1cyYmZTTHJFMVBTdVcrQzB2QmFYZ3RMd1dsNExTY2lHTHlrMWlnT1Jwa3NRSXhlOStHQVFtcVVQRzdlMDBzUG43WWEzZTVkQnRxOTV4YU9aWUhGQXl4SjdjcEJreGhIaTI4NHRiemkxdk9MVEhMUUozVzFkMkgxaDZ5c0VXczVoMXlLRU9iUnJjZk9nWWl5QkZTV1F0NHlLUFNGN0kzdkRFbnR5eWY3dHdqY29mUmg0Q05ONUFNbEFLM0l3bHkzVlp1Y3NWTU9qMlhMTFJtcDlJKzFHSmoxZE8waDViU0hsQW9DVmpwOVRYSGhZOUpkcER5MmtQSnppdzQwYmRzT21hbTVkWkhZZEI4dzVZWStOZVU0K3JwTHV6YjlibWUvd0FQdGpYNnZ2VlpmK1B1dmxpNGgwWVM5WmRDVk16M2FuSnNqb3AzUGtpM1BraXg1TlRCNlJLZFRvMkZsRzU4a1c1OGtWL0pFaGRXTzJIQWxWNGdzaGtPaEtYOHJGK3RyZmpSeTFJd3g0RzJrUXlTUlIvRjNYREVudHl5Zjd0d2lzTmZTbHlJRk53ZytZU0dpTkE2cXV0ZFhPRVRHN0UzN0IrM0tOTDdlMDZ0UGNYeDk1WHRDQ1cwSUpiUWdrQmdBdU9QMGF4MEpQRXRvUVMyaEJMYUVFbU9NNCt4cnRXcUxGc29WYWhtVXhsbDZXRXZ3eDZVa0l6ZkM1ZUdQS1c4cURPcWRkR3JYUnExMGF0ZEdyWFJxMTBhdGRHclhScTEwYW5NdEN0S1RlWUI3V2s5Skg4a2MvMDMvOFFBSFJFQUFnSUNBd0VBQUFBQUFBQUFBQUFBQUFFUkVnSVFJQ0V4VVAvYUFBZ0JBd0VCUHdINnl4azZSS0Y3cVVTaDR6eWZTMURFbVpFUFdMTXVDOU10V1JZYmdzaHVSZW1YbkZPU3BWaXhZMUpWbFdKUU56eXNXTEZpeFlibjdILy94QUF1RVFBQkF3RUZCZ1VGQVFBQUFBQUFBQUFDQUFFREJBVVJGU0ZTRWhRZ01VRlJFeUl5WVlFUUpGQng4RFAvMmdBSUFRSUJBVDhCL0xWbGQ0UGtqNXI3aXB6emRSMGxReHM3aXFyL0FBUDlLT001WDJRelc1MU9sYnJVam5zdW9LK1dGN2p6WlJtTWdzWTh1Q1UvQ2pjK3lwWXQ2bXVMOXVoRmhhNFZ2VUd0bFUxTUpRa3pFck9rR09WM043c2x2Y0d0a0VvUytoNzFhRk14ZzhyYzJWbFN2ZThYendWWTdVQnN5c3MyR1oyZnI5TUxtN3QvZkNrczZXTVhOM2JKUVFGVUZzQXNMbTd0L2ZDb2FZNlpuWStxcXpZSUNkMVpZM3pYKzNEVlU1VXNtMFBMb29iVUc2NlZsaWNIdXA3UWhraUlHNnFobkNua2NqN0xFNFBkUGFrSFM5Vk5VZFdWM1RzcUttM2VQemMzNFNGamJaSkhaY1JaaTl5d2tkYXdrZGF3a2Rhd2tkYXdrTlNocElvUFMyZjVqLy9FQUVNUUFBRURBZ0FIQ3dvRUJRVUFBQUFBQUFFQ0F3UUFFUkFTRXlFeFFaTUZJQ0lqTXpWUllaR2gwUlF3TWpSU1luR0J3ZUZDYzdHeVUzQ1NzL0JVY25TQ3d2L2FBQWdCQVFBR1B3TCtadDJFWktNRHdwRG5vL0xwb0Y5czdvUGUwOTZQOU5XWWlNTWpvUTJCWEpwN0szV0lRa0h5VnpWN3VBQWdFWkJlbjVWeWFleXVUVDJWeWFleXVUVDJWeWFleXJQd283dzk5b0dsS2loVzU3M1MzblIvU2ZwVnBUZU15bzhCOXZPaFhtaTlJdW5jNWs4TWo4WjlrVWhsbHRMVFNCWktFaXdGRitVK2lPMFB4dUt0UlMwSkVyM20yN0R2SXIxS1oySjhhbXcyNGtwSzMyVk5ncXhiQzQrT0Fma0wrbUI2QTlGa09PTld1cEdMYk9MOVBYWHFVenNUNDE2bE03RStOZXBUT3hQalFTNFg0blc2M203cjBsNk84aDlwV2hiYXJpbkk4bHBMekxnc3BDcTRGM0lMMmRsdzZ2ZFBYNWhtT3lNWjExWVFrZFpxUEJZOUZwTmlmYU9zMDVNZjRYNFcyOWExZEZHUk1keHZaUVBSUU9nRGVqOGhmMHdUL2czL0FHMDcwUFJYT0xQS01xOUZZL3pYVE0yTWVBdlNrNlVuV0RVaUV1Mk1vWGJWN0s5UnBUYXhpclNiRUhVZCswdFF1STdhbmZwOWNIa1FQRXcwZ1c5NDV6OU1JVUJIc2MvSzFvamJXdEViYTBKY3NNNUhKcVR3RjNPQ1ZOaWhuSU9ZbUxqdVdPWklGYUkyMXJSRzJ0T3Z1Q1BpTnBLMVdjMURDL3VjbzhWSVJqcEh2ajdmcGduQklzbDBoNGZNWisrKy9tOVBrMy9vWU4xY2JUbHpoYS8yanpHNlAvSGMvYWNPNXVMMHIvWXJBbTMrbVJmdE8vanBVYkprSVV6OVIzZ1lFYm9KVHhNdE9jKytNMzZXd2hJbml3emNpMzRWemdOZzM0VnpnTmczNFVJczJYbG1Na3BXTGswcHovSVlKY1NITXlVZEdKaXB5U0RwUURyRmM0RFlOK0ZjNERZTitGT011VGdwdHhKU29aRkdnL0xESjNVV25pbVU1SkI2VkhUM2ZyZzNRV2szUTJySkQvcUxIdnZ2MjNtbFlqamFncEtocUlxUE5hdGRZc3RQc3IxaW5ZVWtjQmVoUTBvVnFJb3R5bTd0RThXK24wRi81MGIwZmtMK21DZjhHLzdhZDZBeWd0UlFlTWtxSEJIdzZUVE1PS25GWmFGdXM5WnArVVNNc1JpTXA2VjZ2R2lwUnVvNXlUNWc0MTNJTHZMTkQ5dzY2Ymt4WFV2TUxGMHFUU21ubTB1dHEwb1dMZzBWQ0txT1QvQmNJN3EweXRyOXEweXRyOXEweXRyOXE4c2lGL0s0cFR4aTdqOU1EczZTWDhzNWErSXV3ekMzUjFWcGxiWDdWcGxiWDdWcGxiWDdVRmVSbVFvZngxbFhkb3BLRzBKYlFuTUVwRmdLY2xUSFF5eWpXZGZVS3l5cnR4bTh6TFhzanArUG1zZUU5WkI5TmxlZEN2bFFUUGJYQWQxbTJPanV6MWR2ZFNJZW92QUd1Y0l1MlRYT0VYYkpybkNMdGsxemhGMnlhNXdpN1pOYzRSZHNtdWNJdTJUWE9FWGJKcm5DTHRrMWQzZFNJT29PaFI3QlJUdWN5dWE3cVd2Z0k4YXkwNTdIdDZMWXpJUjhCL003LzhRQUtCQUJBQUVCQlFnREFRRUFBQUFBQUFBQUFSRUFJVEZCVVdFUWNZR1JvY0h3OFNBdzBiRncvOW9BQ0FFQkFBRS9JZjhBVFlqbzRhRFRNME9NVVk2M3ZFdEJaRythQkZ1RCtoWHE5RzVFQ0hOc3U1YUJOUFY2OVhyMWV2VjY5WHBjNVlmMnltWk8wUloxVCtpZ1o0VGdoT0RvL1VUQnU2Ti9OL1hBMzBhNDBTT1FWZXFyQWQyL1NvTUhndXJPbXhHRWhucENBdVczNFVTTHFobGhNU1BnUm8wYnB0c3QzTzZYYWFvYmlWQ0VKTWllWTBERTAzaG0wSFU0eDg5ZHFYSkJSbUVTRGJpdXF5MWJwaXdNTHVIOVhBR2wzT1c3Y3N2NjQvWlJ3VnNvU3VPTStZcWZ1ZVFmTkZDcUp2d3ZVNkxUKzI3K0JoUG5aa0gzT3c5WjhOaFplaGFZbkpIRGJBNW9QQlhuUHl2T2ZsRTJERzh4RmthYkhtUkdJR3NqTWE4NStWNXo4cS9VUEZnbHcwMnBOa1pmSjN6NU5uSHZJQ2ZtRkIzVzYzN2JEYVBNNVlkSTIrV3krdFFGYkp0TjF0c1diY3g2Zm5QQXBYTk9vTGpzVEJEQnVCRWNRdWUwb1lJR0Z0b1VKMnJCTE1pTFFkaG5BcFlNbGFqZXUxQ2hpRmdYa0lTekx0U2dKZGtyRzdZd3dnNFowSHpOQXZSaUpIblNoQ0MyNjcvUkdzY3VYWWMwZnBqVGxMTWRodndkVnYyVWNJTkJyQ2NUK0E0eFZqMWxONWptSzIxYXRFV01kQmUwS2Z3MlFsWDZISU9oZURMUmRic2tuRHFLeC9IU2lKOUJadFJxMHk4eFBOSWNDdlNxZWxVOUtvYlFOaElHK3lHekRkZjdBRUdnVjZWVDBxbnBWTU5JRWp1Y1NnREZEZ1pBVVNXcmJ4WUJpdVZMUWxudkVhc2VCaDlTK1laNWg1dFNHc0RkRkx4c09YR2pVNS9CRm12UHU5ZWZkNjgrNzE1OTNyejd2WG4zZXZQdTllZmQ2OCs3MHlpbjY0TFdCdVFSMXR0Ym9OOVNVNlZHV0J2di93Qk8vOW9BREFNQkFBSUFBd0FBQUJENzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc2b01qZzR4dlAzNzc2bXB6eXl2emVwcjc3NzNqNVQvejVlL3o3NzY0cHY4QXZxLzZJRysrKyt2Yy93RC9BUDhBdGY4QXZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnYveEFBZUVRRUFBZ0VGQVFFQUFBQUFBQUFBQUFBQkFCRXhFQ0FoVVdGQlVQL2FBQWdCQXdFQlB4RDliTWRCcXpNRVVNejJsbjJCaEVScDJCYlVXQ1puaExCeEFweFBLSW1aUTFEOTJjUkR4ckFXb0F0MGl3aHNib0RUSHJwQVJqQ2pXaG01dEdvTXpMOVMvVXYxTDlTL1VYTDlqLy9FQUNnUkFRQUJBUVVJQXdFQkFBQUFBQUFBQUFFQUVTRkJZWEhoSURGUmdaR2hzZEhCOFBGUUVQL2FBQWdCQWdFQlB4RCtzYjMxOXVOWURvN3RQUkZVMEU4NXp2a29kVnZtTjdlNCtLdEpVKzN3N3pKK0dLelZiR0dSWXRWcVcvVEZnWXFCZFAzSUM5VWFGWVhRVkZ1WlAxSVVvMGNJWE5OOWlZNVFEbXlsSGgrT213M0JIaTJYQVN6T3g4ZjR1MTdqRkhrRmJGOVIrZ0lWdDVGdzhaKzR3cGcxRzZ2eUV2QkJPYlpFVWJoZVRZUVNqTngycXE0WVpuZVVWZGVKZnl1bjFHc3JRMUNGbXNxRlVVV1pucWZVYXdCVUxrZTRNSlM0TGJmbGpaeWNPQnk4N0wwS2pjeHFxd2J6dmIzbUs2YXpGZE5aaXVtc3hYVFdGUzE5Q1czbkcxMDVmMlAveEFBbUVBRUFBUU1EQkFNQUF3RUFBQUFBQUFBQkVRQWhNUkJCWVNCUmNZRXd3ZkJ3a2FIUi85b0FDQUVCQUFFL0VQNU52Y1U0WmtpNStBdEtRMEhyQlo3cWVlSnZtaml0QU5lZ3I5TjlVekdNQWpzc2FTR2t4QjZOZnB2cXYwMzFYNmI2cjlOOVYrbStxUE1VSnIvU2l4OCtub2c0b3FtQlBia3NER05zYktTRS9FUzB4VEhBMkZrU3VnRUlRU1dYaGNBc0ZXVmZUUjJDdDFGaEs3RlRKdEFwZUhTREN6SjNmdWhNRVRBdkhRME9MbTlsbzFnREprZWhnd1lORCt4RStXRGxBNzBicDU3b2NJa201a3B0M2Z0ckNNSUlSQkVRYVAwS1V3WFdXdWtPSWt2RDRIRmR3ZFBnbEwxakF1SlYrWStDWUxCVS9pd09BVjJ4WmdNaERBTVlQajFCdElnWWx2QktXL3lORkpCRzJwc20xREE5Z29xd2gyR09BWVQwa0paR25pa0p3MUIySndaQnZSaWJlaEFnN2lKMWx0aWtraUw4Z2prYU1CRlEvd0JuZndjKzdyZFBhWXNKSi92WFBObGdkOEJoYTdSOXNSSjNWSkhLeEd1ZVpGYjFkREVac0syckx6MFpDaW8ya203OGVoQ1Q0RVN0Kyt2S3FKTjd2K2s2QkxKVGRPSFdmaDl2eDNzYlJXZTQ5YU5PRVFoK2R1c2FOUzBFSS9RT1JveUlTbDNuMmhYZDR1b0dIeXFBUUd1VEphRkd6YTdZWkxhWTBtV2Z0ZHcwbDExekJiV1RKdjFEc3NuQ2twSkVkU0lDSmFXUzQ0ZkhReXIrR1RFbnRNOTllTTVkRERjZ0gxUXhFUzVLQ2IydUp6dUZNcVNEUzhTbkNMd2lsbFRBYkNyc283UE5oeVF2eHRGQktCUWhuc0xlRzNKQzlaejhJVjNkQkxLZTdZQ0NwckxSYXZGbTkza1RLVWdYTWtKbFYzVlorQis2c1RGWURZRmJXRGRGQWJBcE1HNG1RYktCRVJCSzRGbnVpRWllU21BRmRLOEo0UUhRelpzek5WeXkvQmNzYjZFbW1DUEo4Sk1pK1o2R2JOblBNMCt4Y3oyRkRVS0JkZ0FBNEtrYUNmT3dDOGFBU3RYcVk2U3Q0Yk1Zb3hBU0IrSjlnd1RGNWlJV21BdE1TVkRZb0tKM0N1ZG1KM1pvRWVKZ2J5WWV6NHYvQVA4QS93RC9BUDhBL3dEL0FQZ2dSTDZ4UWVpb2IwUlYvQmI4anNvQTNiRW1Nall3SlVxQ1ZqK1R2Ly9aIn0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTA0LTE2In1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wNC0xNiJ9LHsiYWFndWlkIjoiOTllZDZjMjktNDU3My00ODQ3LTgxNmQtNzhhZDhmMWM3NWVmIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI5OWVkNmMyOS00NTczLTQ4NDctODE2ZC03OGFkOGYxYzc1ZWYiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiVmVyb2NhcmQgRklETzIgQXV0aGVudGljYXRvciJ9LCJkZXNjcmlwdGlvbiI6IlZlcm9DYXJkIEZJRE8yIEF1dGhlbnRpY2F0b3IiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MiwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9LHsibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJ3aXJlbGVzcyIsImJsdWV0b290aCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQ0FqQ0NBYWlnQXdJQkFnSVVWZVl1Wk5rWUJsdkRrQ1g1Z2FUVGYvajBZRE13Q2dZSUtvWkl6ajBFQXdJd1RURWFNQmdHQTFVRUF3d1JWbVZ5YjBkMVlYSmtJRVpKUkU4Z1EwRXhDekFKQmdOVkJBWVRBa0ZWTVNJd0lBWURWUVFLREJsV1pYSnZSM1ZoY21RZ1UzbHpkR1Z0Y3lCUWRIa2dURlJFTUI0WERUSXlNREV4T1RBeU1qVTFNRm9YRFRNeU1ERXhOekF5TWpVMU1Gb3dUVEVhTUJnR0ExVUVBd3dSVm1WeWIwZDFZWEprSUVaSlJFOGdRMEV4Q3pBSkJnTlZCQVlUQWtGVk1TSXdJQVlEVlFRS0RCbFdaWEp2UjNWaGNtUWdVM2x6ZEdWdGN5QlFkSGtnVEZSRU1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRVFkY0J3UVpST3lzMUc0UUxLcjUyblR3MFpjQ1J4VlR4QXRSMVUybWFtV29kSis4NnFvN2JiS09wNzFTak96RkNJaUoydk5FUXYxTEhGMnhLTzdEeEphTm1NR1F3SFFZRFZSME9CQllFRkNoVS9yM3ZrK3hpYUdsWTRRS0FTelJ1SHFTdU1COEdBMVVkSXdRWU1CYUFGQ2hVL3IzdmsreGlhR2xZNFFLQVN6UnVIcVN1TUE0R0ExVWREd0VCL3dRRUF3SUI1akFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VBTUFvR0NDcUdTTTQ5QkFNQ0EwZ0FNRVVDSVFDdmh2SG5scjF5bmxQNWY3UTIxYk9xUmkzSmRUZTdhc0sxU1poNXEzWU1YUUlnRWJidXF4V1BZcCt0eHZiOVJraTJQRWhmc3N0bDZ2WjBIV0VWcU1URTlYYz0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSFlBQUFDQkNBWUFBQUFWTUU2d0FBQUFCR2RCVFVFQUFPRDhZVkF0bGdBQUF1MXBRME5RU1VORElGQnliMlpwYkdVQUFEakxZMkJnbnVEbzR1VEtKTURBVUZCVVV1UWU1QmdaRVJtbHdINmVnWTJCbVFFTUVwT0xDeHdEQW54QTdMejh2RlFHVk1ESXdQRHRHb2hrWUxpc0N6S0xnVFRBbWd5MEdFZ2ZBR0tqbE5UaVpDRDlCWWpUeTBzS2dPS01NVUMyU0ZJMm1GMEFZbWVIQkRrRDJTME1ERXc4SmFrVklMME16dmtGbFVXWjZSa2xDb2FXbHBZS2ppbjVTYWtLd1pYRkphbTV4UXFlZWNuNVJRWDVSWWtscVNsQXRWQTdRSURYSmI5RXdUMHhNMC9CeUVDVmdjb0FGSTRRRmlKOEVHSUlrRnhhVkFZUFNnWUdBUVlGQmdNR0I0WUFoa1NHZW9ZRkRFY1ozakNLTTdvd2xqS3VZTHpISk1ZVXhEU0I2UUt6TUhNazgwTG1OeXlXTEIwc3QxajFXRnRaNzdGWnNrMWorOFllenI2YlE0bWppK01MWnlMbkJTNUhyaTNjbXR3TGVLUjRwdklLOFU3aUUrYWJ4aS9EdjFoQVIyQ0hvS3ZnRmFGVW9SL0N2U0lxSW50RncwVy9pRTBTTnhLL0lsRWhLU2Q1VENwZldscjZoRXlackxyc0xiaytlUmY1UHdwYkZRdVY5SlRlS3E5VktWQTFVZjJwZGxDOVN5TlVVMG56ZzlZQjdVazZxYnBXZW9KNnIvU1BHQ3d3ckRXS01iWTFrVGRsTm4xcGRzRjhwOFVTeXdsV2RkYTVObkcyZ1hhdTl0WU94bzQ2VG1yT1NpNEtydkp1Q3U3S0h1cWV1bDRtM2pZKzdyN0JmZ24rK1FIMWdST0RsZ2J2Q3JrWStqS2NLVUl1MGlvcUlyb2labWJzbnJnSENXeUp1a2xoeVEwcGExSnZwbk5rV0dSbVpzM052cGpMbm1lZlgxR3dxZkJkc1haSlZ1bXFzamNWK3BVbFZidHFHR3U5NnFiV1AyelVhNnBwUHRzcTExYllmclJUdXF1byszU3ZhbDlqLzkySk5wTm1ULzQ3Tlg3YTRSa2FNL3RuZlorVE1QZjBmUE1GU3hlSkxHNWQ4bTFaNXZKN0swTlduVjdqc25iZmVzc04yemFaYk42eTFXVGI5aDFXTy9mdmR0MXpkbC9ZL2djSGN3NzlQTkorVFB6NGlwUFdwODZkU1Q3NzYveWtpOXFYamw1SnZQcnYrcHliTnJmdTNxbS9wM3oveE1POHgySlA5ai9MZkNIeTh1RHIvTGZ5N3k1OGFQcGsrdm5WMXdYZnczOEsvRHIxcC9XZjQvLy9BQTBBRHpUdnpjM01BQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBS3ZtbFVXSFJZVFV3NlkyOXRMbUZrYjJKbExuaHRjQUFBQUFBQVBEOTRjR0ZqYTJWMElHSmxaMmx1UFNMdnU3OGlJR2xrUFNKWE5VMHdUWEJEWldocFNIcHlaVk42VGxSamVtdGpPV1FpUHo0TkNqeDRPbmh0Y0cxbGRHRWdlRzFzYm5NNmVEMGlZV1J2WW1VNmJuTTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlrRmtiMkpsSUZoTlVDQkRiM0psSURVdU5pMWpNVE00SURjNUxqRTFPVGd5TkN3Z01qQXhOaTh3T1M4eE5DMHdNVG93T1Rvd01TQWdJQ0FnSUNBZ0lqNE5DaUFnUEhKa1pqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWo0TkNpQWdJQ0E4Y21SbU9rUmxjMk55YVhCMGFXOXVJSEprWmpwaFltOTFkRDBpSWlCNGJXeHVjenA0YlhCTlRUMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzk0WVhBdk1TNHdMMjF0THlJZ2VHMXNibk02YzNSU1pXWTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl6Vkhsd1pTOVNaWE52ZFhKalpWSmxaaU1pSUhodGJHNXpPbk4wUlhaMFBTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZjMVI1Y0dVdlVtVnpiM1Z5WTJWRmRtVnVkQ01pSUhodGJHNXpPbmh0Y0QwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOTRZWEF2TVM0d0x5SWdlRzFzYm5NNlpHTTlJbWgwZEhBNkx5OXdkWEpzTG05eVp5OWtZeTlsYkdWdFpXNTBjeTh4TGpFdklpQjRiV3h1Y3pwd2FHOTBiM05vYjNBOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZjR2h2ZEc5emFHOXdMekV1TUM4aUlIaHRiRzV6T25ScFptWTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZEdsbVppOHhMakF2SWlCNGJXeHVjenBsZUdsbVBTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMMlY0YVdZdk1TNHdMeUkrRFFvZ0lDQWdJQ0E4ZUcxd1RVMDZUM0pwWjJsdVlXeEViMk4xYldWdWRFbEVQblYxYVdRNk5VUXlNRGc1TWpRNU0wSkdSRUl4TVRreE5FRTROVGt3UkRNeE5UQTRRemc4TDNodGNFMU5Pazl5YVdkcGJtRnNSRzlqZFcxbGJuUkpSRDROQ2lBZ0lDQWdJRHg0YlhCTlRUcEViMk4xYldWdWRFbEVQbmh0Y0M1a2FXUTZNekJETWtNeVJETkNRVFk0TVRGRk9EazNNRVpHUkVJM1JEWTBNREExTkVROEwzaHRjRTFOT2tSdlkzVnRaVzUwU1VRK0RRb2dJQ0FnSUNBOGVHMXdUVTA2U1c1emRHRnVZMlZKUkQ1NGJYQXVhV2xrT21NeVptTTRNVE0wTFRVMk9EY3ROR0ppWXkxaE1ERTFMVEk1TkRVeE9UTmlOamt6T1R3dmVHMXdUVTA2U1c1emRHRnVZMlZKUkQ0TkNpQWdJQ0FnSUR4NGJYQk5UVHBFWlhKcGRtVmtSbkp2YlNCeVpHWTZjR0Z5YzJWVWVYQmxQU0pTWlhOdmRYSmpaU0krRFFvZ0lDQWdJQ0FnSUR4emRGSmxaanBwYm5OMFlXNWpaVWxFUG5WMWFXUTZPV1EyT1RZeVptSXRNVGt6WWkweE16UmtMVGs1T0RFdE1EQXhaRFF4T1dWaE9UbGlQQzl6ZEZKbFpqcHBibk4wWVc1alpVbEVQZzBLSUNBZ0lDQWdJQ0E4YzNSU1pXWTZaRzlqZFcxbGJuUkpSRDU0YlhBdVpHbGtPbUUyWW1Vek5XUXdMVEpsTnpRdE5EQm1aUzFpT1RkakxXSXhZVGhqWWpSbE9EVTBNand2YzNSU1pXWTZaRzlqZFcxbGJuUkpSRDROQ2lBZ0lDQWdJRHd2ZUcxd1RVMDZSR1Z5YVhabFpFWnliMjArRFFvZ0lDQWdJQ0E4ZUcxd1RVMDZTR2x6ZEc5eWVUNE5DaUFnSUNBZ0lDQWdQSEprWmpwVFpYRStEUW9nSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhU0J5WkdZNmNHRnljMlZVZVhCbFBTSlNaWE52ZFhKalpTSStEUW9nSUNBZ0lDQWdJQ0FnSUNBOGMzUkZkblE2WVdOMGFXOXVQbk5oZG1Wa1BDOXpkRVYyZERwaFkzUnBiMjQrRFFvZ0lDQWdJQ0FnSUNBZ0lDQThjM1JGZG5RNmFXNXpkR0Z1WTJWSlJENTRiWEF1YVdsa09tTXlabU00TVRNMExUVTJPRGN0TkdKaVl5MWhNREUxTFRJNU5EVXhPVE5pTmprek9Ud3ZjM1JGZG5RNmFXNXpkR0Z1WTJWSlJENE5DaUFnSUNBZ0lDQWdJQ0FnSUR4emRFVjJkRHAzYUdWdVBqSXdNVGd0TURrdE1qZFVNakU2TVRBNk1Ua3JNVEE2TURBOEwzTjBSWFowT25kb1pXNCtEUW9nSUNBZ0lDQWdJQ0FnSUNBOGMzUkZkblE2YzI5bWRIZGhjbVZCWjJWdWRENUJaRzlpWlNCUWFHOTBiM05vYjNBZ1EwTWdNakF4TnlBb1RXRmphVzUwYjNOb0tUd3ZjM1JGZG5RNmMyOW1kSGRoY21WQloyVnVkRDROQ2lBZ0lDQWdJQ0FnSUNBZ0lEeHpkRVYyZERwamFHRnVaMlZrUGk4OEwzTjBSWFowT21Ob1lXNW5aV1ErRFFvZ0lDQWdJQ0FnSUNBZ1BDOXlaR1k2YkdrK0RRb2dJQ0FnSUNBZ0lEd3ZjbVJtT2xObGNUNE5DaUFnSUNBZ0lEd3ZlRzF3VFUwNlNHbHpkRzl5ZVQ0TkNpQWdJQ0FnSUR4NGJYQTZRM0psWVhSdmNsUnZiMncrUVdSdlltVWdVR2h2ZEc5emFHOXdJRU5ESURJd01UY2dLRTFoWTJsdWRHOXphQ2s4TDNodGNEcERjbVZoZEc5eVZHOXZiRDROQ2lBZ0lDQWdJRHg0YlhBNlEzSmxZWFJsUkdGMFpUNHlNREU0TFRBNUxUSTNWREl4T2pBd09qVXdLekV3T2pBd1BDOTRiWEE2UTNKbFlYUmxSR0YwWlQ0TkNpQWdJQ0FnSUR4NGJYQTZUVzlrYVdaNVJHRjBaVDR5TURFNExUQTVMVEkzVkRJeE9qRXdPakU1S3pFd09qQXdQQzk0YlhBNlRXOWthV1o1UkdGMFpUNE5DaUFnSUNBZ0lEeDRiWEE2VFdWMFlXUmhkR0ZFWVhSbFBqSXdNVGd0TURrdE1qZFVNakU2TVRBNk1Ua3JNVEE2TURBOEwzaHRjRHBOWlhSaFpHRjBZVVJoZEdVK0RRb2dJQ0FnSUNBOFpHTTZkR2wwYkdVK0RRb2dJQ0FnSUNBZ0lEeHlaR1k2UVd4MFBnMEtJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHa2dlRzFzT214aGJtYzlJbmd0WkdWbVlYVnNkQ0krVTAxTU1EQXhJRlpsY205SGRXRnlaQ0JUYUdsbGJHUWdVa2RDUEM5eVpHWTZiR2srRFFvZ0lDQWdJQ0FnSUR3dmNtUm1Pa0ZzZEQ0TkNpQWdJQ0FnSUR3dlpHTTZkR2wwYkdVK0RRb2dJQ0FnSUNBOFpHTTZabTl5YldGMFBtbHRZV2RsTDNCdVp6d3ZaR002Wm05eWJXRjBQZzBLSUNBZ0lDQWdQSEJvYjNSdmMyaHZjRHBEYjJ4dmNrMXZaR1UrTVR3dmNHaHZkRzl6YUc5d09rTnZiRzl5VFc5a1pUNE5DaUFnSUNBZ0lEeHdhRzkwYjNOb2IzQTZTVU5EVUhKdlptbHNaVDVFYjNRZ1IyRnBiaUF5TUNVOEwzQm9iM1J2YzJodmNEcEpRME5RY205bWFXeGxQZzBLSUNBZ0lDQWdQSFJwWm1ZNlQzSnBaVzUwWVhScGIyNCtNVHd2ZEdsbVpqcFBjbWxsYm5SaGRHbHZiajROQ2lBZ0lDQWdJRHgwYVdabU9saFNaWE52YkhWMGFXOXVQamN5TURBd01DOHhNREF3TUR3dmRHbG1aanBZVW1WemIyeDFkR2x2Ymo0TkNpQWdJQ0FnSUR4MGFXWm1PbGxTWlhOdmJIVjBhVzl1UGpjeU1EQXdNQzh4TURBd01Ed3ZkR2xtWmpwWlVtVnpiMngxZEdsdmJqNE5DaUFnSUNBZ0lEeDBhV1ptT2xKbGMyOXNkWFJwYjI1VmJtbDBQakk4TDNScFptWTZVbVZ6YjJ4MWRHbHZibFZ1YVhRK0RRb2dJQ0FnSUNBOFpYaHBaanBEYjJ4dmNsTndZV05sUGpZMU5UTTFQQzlsZUdsbU9rTnZiRzl5VTNCaFkyVStEUW9nSUNBZ0lDQThaWGhwWmpwUWFYaGxiRmhFYVcxbGJuTnBiMjQrTVRFNE1Ud3ZaWGhwWmpwUWFYaGxiRmhFYVcxbGJuTnBiMjQrRFFvZ0lDQWdJQ0E4WlhocFpqcFFhWGhsYkZsRWFXMWxibk5wYjI0K01USTVORHd2WlhocFpqcFFhWGhsYkZsRWFXMWxibk5wYjI0K0RRb2dJQ0FnUEM5eVpHWTZSR1Z6WTNKcGNIUnBiMjQrRFFvZ0lEd3ZjbVJtT2xKRVJqNE5Dand2ZURwNGJYQnRaWFJoUGcwS1BEOTRjR0ZqYTJWMElHVnVaRDBpY2lJL1BnUEJRV2NBQUJpN1NVUkJWSGhlN1YwSmRCVFZ0dTNNSStuTTgwd1NNdENRRVVqTVN3SUpJU1RNQ0FsRUEyaVlEUkJRV0FnSXdZaXNGZFQza1A4Vm1RbGdITjVuK1phSWduNFFCREVJZkFIOWZFUlFaSG95S0tNaElmRDM2WFRLcFBzbTZhcXU2cTZFN0xYMnFsTzN1NnB1M1hPSGMwN2R1cVhvaU5peVpZdE5YRnhjdXJlMzkxSTNON2REb2FHaG16VS9LWnlkblRlNnVManM5L1gxWFpLVWxKUzZaODhlRzgxUG5aQWI5dS9mYjU2UmtSRWZIQnc4RDRyYmFXOXZmdy9KanhvSkJXK2oveEZzYkd4STVuNnpzN083QmVWL0VoQVFNRHN2THk5MjRjS0ZadlMvVHBnQTFkWFZac09IRHcrRElxZTR1N3QvNE9qb2VCWEpuTEswMlpwaXRZbHovZHZEdzZNS3JYeGlmbjUreU9IRGg1SGNDY2t3ZmZwMG4vRHc4TEdlbnA3cmxVcmx6MlptWmt6RnNNaEhzVTFwYm03K0NEM0FXYlRvMWQyNmRjc2ZOMjZjTzlJN1lRakt5c3FVS3BWcU1KVHlkeWNucCs4c0xDd2VJcG1wZ0xZb1ZMSGF0TEt5ZXVqcTZ2b2RXblJGUWtKQzN2ejU4eDJRM29uV1VGRlJZZDJyVjY5MEx5K3ZKU2k4Z3lqRSswaG1GakJmaXFWWWJlSmM5OUdpdjhUNHZDUStQajZscXFyS0d1bVBONkJJODl6YzNBUWZINS9aR0NjL2d4RnpHOG5NQWpTVVVpbFdteGlmYjZOU2Z1em41emRyd0lBQlBhQm9jNlIzYkp3K2Zkb3NKeWNuTkN3c2JBcHV2cXBMbHk2dEdqeGkwbGlLMVNidThRckc1MjB3eElySkVMdDE2MWJIc0xqSGp4L3ZGUmtaT1JaajBscDBXVCtUTVlKa285TlVpbTFLdW5mWUNqOWlxSG1uYTlldVQ1YVdsbm9pdlgzZ3hSZGZkSUxCa3dmTDlUVW84cmlscGFWZ2cwZE15a0d4MmtUWlBIQnhjVGtHUlZmRXhzWU9uRGx6cGozUzVZSE5temRUaENjVlkwb1pSWE5RYUxWSVp0NklLU2xIeFdyVDF0YTJCbVg0SmZLNk1EMDlQWFh1M0xtV1NEY09kdTdjYVpHZG5SM3I3KzgvQjJQSFRvcmFJSm1aVVRteFBTaFdtL2IyOW45Z0NOc0JpM3RXMzc1OVl6Nzc3RFB4RERHS3Vvd1pNeVlzTURDd0dKYnJlekFHZmtNeU15TnlabnRVYkZOU01FYXBWRjVCaTY2TWlJZ29IakZpUk5EMTY5ZnhFdytNR3pmT016dzh2QUNGc1JhS1BHTXFnMGRNdG5mRmF0UEN3b0lpWW1mUW90K0NjVHBxd29RSmJralhSVkZSVVJSYVpBWGNrT000NkFHU21DZHNyK3hvaXRXbWxaWFZBeWo2aUsrdmI4VlRUejBWZ2pTRnV0L096YzA5ZzZaZWMvUG16Y2o2K25vTFN1dEUrMEZkWFozRnZYdjNWTEI1YmtDWDV6WEpmeUVwS2VrSlIwZkhzeENaTmFPOXNxTzNXUGpIL3dkTHVoZmt2eEFWRmJWbDh1VEp6cHBkeGJScDA1Um8wcFY4bnA3SW5SMVZzZERSUXhpMmF4WXRXdFFGKzJyUUV5aU11LzlVd0VDNmlGWjZMakV4TVZYem0rTGt5Wk1LK0tlRmFOcS9ZNWQ1MHZiRWpxaFl1RU5YVlNyVk1NZ2NldlhxMVIrNnZPamc0UENMQXMzNEVOTEkwcXJ0MnJWcitkYXRXN2tuRk1PSER3K0d2L29sUk9iSjJ3czdtbUk5UFQxM0RSczJ6QmV5R3ErODhvb05XdTZLeGtnZmxIdEFBZC9vUTlwcEpCVDVUVTVPVGpoa05aWXRXMllPOTJjQkxDOVpScFgwWVVkUnJMVzFkVTEwZFBTY2xTdFhjZzhUVWxOVG8yRVJINFBJL1ErRzhIc0srRUovYjVwSXRMVzF2WTJ4OXhuSUhIQ0NYbWpkcHlFMisyOTdZRWRRTEpSMW9sKy9mckdRMWJoeDQ0WTVkUFFjZFBVbmRwdjlGMjdyYXdvWVNzOXIvMEFrNDhuSHgrZkR2THc4Rit5clVWSlM0aGdVRkxTdXZRVXQyck5pVWRiMUtQTTNaOHlZWVl0OU5jYU9IZXZ0NWVXMUF5THpHUHhXcXNDNFdzRDZzWkZvcFJkaFdHVkNWdVBXclZ1Szd0MjdEOGZnZlEyN3pHUGtRb3JRb0tiL0dCWVdOaFg3YWdRRUJNekFQZjNVSGlvbmpLRExLUHRjeUJ4Njl1eVppL1IvUTJRZVF3d09EaDVGbHRRVHJCK2JFb055ZlVoSXlJcUZDeGR5aHRXQUFRTjhVVE0raDhnOHhsU2toOXZ1N3U3Ym9NemkwYU5IQjU4L3IrdXZYN3g0a1dZNWRzVTlUWUpOVVFWalEzWXhjUFNrT3dvS0NyaG50c3VYTDNkQXBWeWx6OXd2ZURUSmlxbFRwd2F4Zm1RUmcvVFJqSXlNYU1ocWJOdTJ6YnhidDI1ejBMMkpOaitKTCtHUy9RRkZmb3lDbUpHYm05dGp6Wm8xdkdjcHJGdTN6andyS3lzV05mMEZHSk9mb0VYY1JUTHplbElUQnRJZGxPblVBd2NPY1BlUm5wNGVoM3o5QUpGNWpEWm56Wm9WcExoOCtiSUZ1bFhtSDFqRWhlL0NBWjVXVjFmSFBVYkt6TXlNUS9kMkVpTHpHREdKU3FSK2J1bnY3LzlTY25MeUV6dDI3QkI5QWxsbFphWDZPVE91c1JTVjJXalBtWEZmUjZIRUtNaHFIRGx5aEJyTzgyUU5ZNWQ1akRaUktSL0JzTEpRM0x0M2o0SVVGMWgvYW8wd3JENGVNMmFNRjJRMXlzdkw3ZEZWdkVtRFBYYVp4d2doelRUQU9IbTBjYVlCdWlSSHBCc1ZjK2JNY1lSZG9aNFpnc0kvUWROUWtjek1yeEJxaHJxS1ZhdFdjYStiakJ3NTBoODkwUzZJekdOYUloclloUWNQNkRrT2dKMnZLWkV2MGRLdkpDUWtOQnZjYWI0dGFzMFZpTXhqMmlJWk5XVHd3Sko5Qi83ektCU3FCOUpsaGFLaUlrK2F5NFh4K1Iwb210ZmtkVzFpZkw4QVY3SS9aQTVKU1VsUHdvMFJOTzZqN0VpWERVRG1Qc0NHK2NlMlNJTzVuNS9meWtXTEZ0bGhYNDJubjM3YUd5MjZSWE5jbTJUd29KQzJ3VUovRmdaUDBDKy8vSUxrOW9HREJ3OHFCZzBhRkJJYUdqb1pMWnBlTjlGYklTaWpEd29MQzEwaHF6RnQyalFIdURickRiSFk0Y09TTGh1QUp2OEdOc3cvNmt0VWpoK2FPdEQ3OXUwemk0Nk9ubzd4cWRrTFVrVGMvQjM4LzEvb2ZtWVBIRGhROWZiYmIzZVlGNkZlZlBGRk15ZzZBY2JjYkZSV2VrSHNEcEtiM1Q4TXZqc3hNVEVUbXI0WDFLZFBueVRxcVNBMit5OWZvbktSTGh1QVRNekJodmxIUGlUck9DSWlZdmFWSzFjNHd3ckdRRFFxempkUTVGNFlJNHZobDZWODhjVVhWcHFmT3p6V3JsMXJCYVdsbzhBWFE5RUhzZjBxSnljblRQT3pZc09HRGVhbzRQTmhJTlZobDFtdWZFanowYkJ0QUxyQWZHeVlmeFJDRHcrUFhTTkdqT0NDMVBmdmt6ZlVDVUp0TFJuWURVRExEaVpGUTJTV294Q2lZWkV1RzZCUGtJSXYwZDFjalkrUEh3RzVFMXFBaTZsUXFWUmowRTNmeEM2ei9JUXlKU1dGZE5rQVBrRUtQaVFqSUMwdExSbHlKNXJnQ1VDcWlReWxwYVdreXdhY1BYdVdWNUNDRDlITmo4RzJFMDJBTVpYS2hGbGVocENDRTVjdVhWTFBXVk1iT1REVjY5RzZLRWdoT203ZnZzMk50WjFvUUUxTmpiOUdGQldrUXhqQ0ZDQnFVQ3hCS3NVK2VQQkFrcHZnZzVLU0VwY2VQWHFNaFBzMUJNT09reWJaWkVDWkJHaEVVY0hVb1NGQml0Ym83T3hNTXpTTWloVXJWdGdrSlNYMTlmSHhLY2YxRDhHVjRPWktRNjdGdlI3dzgvTmJDdU11OWYzMzN6ZjZxakc0L245aG8xTldockpaY0tJUllnUXBXRVRCVm1NckthQklldmMyTmlnbzZIbjRpcCt5Z2dJdEVmKzloWHZmQWY5djVwQWhRMVRidDIrWFBGaWlWQ3FwVEpqNU1ZVE5naE9ORUN0SW9VMG5KNmRMMklvS2V0Z1BQemtnUER6OFdTaHlxNk9qNDJVa002L1BoMlNwVW41eHpzMndPNG9tVHB3b1NaZlpwVXNYS2hObUhneGhzK0JFSThRT1VqVFN4c2FtN3RpeFl3WjNkeWhrWlV4TXpIQlV3UDlFalQ5RnN5T1FMQ2twRG81cmZlL2w1ZldQdUxpNG9TKzg4SUxCNC9PQkF3ZFFKRGFpUkptMDJTdzQwUWlNU1NuWU1BOHdoTlFLeG84Zi81ZHZwU2MrK3Vnakt4Um1HbXBoT2Nha3IrVXdTeElLcVlXaTk2RnlMVWxOVGYzYnBrMmJPT05UWDR3Wk15WklLaDgyQmNDMk9XQXRCbUxEUE1CUWFpSmJ2REJ0MmpSL3FRcEFERnBhV2o1YXZIaXhFakl2d0dBVFBjclh5TkxTVXRKaGMzejc3YmZtTUNRa1dWb2dNREJ3RkxhODhOWmJiMW5iMnRxYWJNcE5XM1J3Y0xoNTZ0UXAzb1lXeG01Smhqems1K0hKa3lmWlBRaU1rRit4WVI1b0NOWFRJUVZBcXZ5SVFSaFpOQWVKTjZReVVtR1FVVmx4YUtaaE9Mak5maFFMUW9NVTZPNUV0NmpGQWd5cml4cVJGK3JxNnFTS09yV3FXRW1pVC9YMTlZSnVCbU9zSlBrUkE4aWJvRVp3Ly81OVNVS3NxR2pOeXFxWll0RkNKQ25JUjQ4ZUNmSUhwYXBvWWtDN0lIbEFFdDlZVzNmTkZBdVhRcXFDMUxYVzlBQ01KOWwyeFFhVWxhQ3lhQXZXMXRZdEt4WldzU1NLcmEydDlUcHo1Z3p2NlREYW1aVVQ3T3pzZUhmRng0OGZ0Nkt5ME95S0N1U25aY1c2dXJwS1VwQTFOVFdXRlJVVjNwcGR2UUVUWHJhS0RRNE9wakFtTDd6Kyt1dmVHR01sV1pqTDNkMjlaY1VtSmlaS1VwQVlZeFVuVHB6Z2JVQkZSMGZ6TGp4akFPTXJ6WUxnWFZZLy9QQ0RQNVdGRkVoT1RtNVpzZG5aMlJjMFFRclJjZW5TSmQ3V1lIaDQrQVViRy9sOWl3RjV1anQ0OEdCYXhvRVhidHk0SVltclE4R0puSnljMWl1YW82TWp2WjZtNHdBYlNtOXY3NW5ZOGdLOXFnREhtNVlnWTU3VFZIUnljcUw1djd6aDUrZEhnUnJtT1EwaHlram5sY0ptTFpZZ2xlOG94REdIQ1U4YlNZSW1oa0JvSUVmQzRJU096blFVYTRCLzFpcUVCaW1nWE5tTnMwTExTS3JnaEY2S2xTcEk4ZkRoUTBHS2xXUDBDV1VrS0p3b3RBemFBa3RuT29xVktrZ0JCUWx5ektYcVFRd0JDbEpRVnl5MEROb0N5OS9YVWF5Mm95c1dNTDc0WEwxNmxiY1BCeXRkZHRFbklXVjAvdng1U3lvRHphNm9ZQVdXZEJUcjZ1b3FpYkZTVTFOalZWNWV6anZxSWxWRk13UnVibTY4ODdSczJUSXZLZ1BOcnFod2QzZlgwWm1PWW52MTZpVkpRV0o4b1hkSmVSc1AyaEVWVXdPR0NyM2N6VHRQeDQ4Zmx5dzRrWktTb3BNZkhjVjZlWGxKRnFTNGZ2MDZiK09oWDc5K2x5alNJeGRnUEx1WG1abDVRN09yTjY1ZHV5YUo0VVM2OHZiMjFxK2lPVGc0U0JLazhQSHhLY0dXRjZxcnErbTlJc2srdHNTWFNxWHlITGE4RVJBUVFBRWE1amtOb1NhZ3BBT2RGa3NRNm9DM0JTRU9Pb2FHZXJSWTJmaXlRdDJ2ZS9mdVNlWERNblhGVkt3TWd4U3lzWXlGbG8zUWUyOExMZVhIcUlydENFRUt1U20ycFlBU1U3RlNQZUFXcWxnYkd4czVkY1dDbHJTQlJTeUpZbHZTRlZPeFV2bU9OUGZwenovL1pGNnpOZUE0MmF3UDFLVkxGOTZWN1BmZmZ6ZW5lOWZzaWdwV2NJTEFMR1NwWmxMQWdMQXFLeXZqSGFSd2MzT3JSbVdqWllWTUN1VGhHaXo3N3pTN2VvUHVHUlZhcXVDRS9vcU5qNCtYeENxbUlNWGV2WHQ1VzRmZmYvOTlkV3BxYW9LTGk4dFJUWkxSNGVIaHNXZm8wS0h4Ky9mdlA2TkowaHRIang3MXAzdVhBcjE3OTliZktzYVlkaEcxVS8zS3U5Z1E2cWp2M3IzNzFKUXBVNUtEZ29KV3dJQ1JKRzhzME10Z0VSRVJDeW9ySy90WFZWVUpxdkMvL2ZhYkpPTXJ1dUY2MHBWbVZ6ODQwSmNnTkU2d21QVHo4NXVPclVGQUxSMkEvTkVOTWE4aEZqR2UvcGlTa3RJYnNrRUlEQXlrd0F6ekdvYlEwZEdSdisyQm16cUFEZk9FaGhCZDJxdllHb3pDd2tJUGIyL3ZmMEZrWHNjUXd2SjlGQkFRVUZsY1hNeDl6OFlRd0VhZ2UyWmV5eEE2T1RtUmp2akIyZG41UFd5WUp6U0VNTXdxc1JVRnUzYnRNb3VLaXFMMUduVStlQ0NVR0lKdWR1L2VmU3hrMFlDeXBIdG1YczhRd3VZZ0hmRURhdGxyMkRCUGFBaVZTdVVlYkVWRldscGFERzd5T0VUbU5mVWxLdDNCN096c1VNaWlBaTJMN3BsNVRVT0kzbzkweEEvbzVpU1pVWWVicEUrOGlJNmxTNWZhd2JCYXFUR3NtTmR1aVphV2xnK0NnNE5mWHIxNnRTUXVDWTNWMkRDdmJRZzFzeDc1SVRRMGxGNVdacDVRS0dtYUpGeXBOTWlTUWFWU0RZUmgxZXBYTHBxU25vNzA2ZE9uTDJUSkFBT012cndoK29JaXRGQTN0dnlRbUpqWUJ4dm1DZm1TakJIVXJxcG5ubm1HKzRhUGxCZzVjaVI5bCtaVGlNejhFQ2xQUGo0K0grYm41M01MUVV1SjBhTkhleUJQMittNjJCV0Z5Y25KcENOK2dFWG9odzN6aEh4SXhraGNYTng0eUJ3d0pqNEJxL1A1VFpzMlNmYUIrYSsrK29vK2xGQUt3MHJuUXdtMnRyWjNZWFJOUEhic21HUnJPcFdYbDF0MTdkcDFJVnBydkNhSjNvWXdpNHlNbkVUWHgyNnpQQWxoU1VrSjZZZ2Zac3lZWVFhbEdMUnNEWXlSci9yMzc4OFpJOHVYTDdlRXMxOEdwMTk5WG5kMzkzMzB2ZkdHWDZWQlJrWkdIQzNwQTFHZEoxaW9Sek16TTdrdlpVaUIzTnpjcnJpTytqc0wxdGJXOXpHc1BiOTI3Vm91R0pTVmxSVUo0L1FJUkoweTA1ZjI5dloxOCtiTkUxWXhoUVlwb0xnSElTRWhMMVZXVm5JdGtoUU1SZXI0eHNqZzlaNDllemI3WEtiWVFPOWpoeDdpTFJoSWIxUlVWSENmRXBNQ3NDSEdva1grQWJIWmZhSWIzb05LekUwL0xTc3JzMGFlbHNGd0UvVFZFMEhCaVViQTJPRzkralZheDAvb2ZyajFoczZkTzZkQTkvTVVXdjh0N0RLUGdTVkxLOHVzbWp0M3JxU0ZMaVhvRXk3Ky92NnRmdmNQbGZoR2JHenNhTWdjWU10a2FKVEVQS1lsd3JzZzNRZ0RsRlNGRGZQRTJxUWJ3bzF0bkRoeEloZXRtVDU5dWl1TXB2ZjBOUmpRZFI5SG5ZaUUzSzZRbnA0ZWk3TFM2MHRXS0F2NjZzbUc1NTU3amx2bHJhaW95SVZQT1JIaHQ1TnVoQUhqd0Fwc21DZHVTblE5MTN2MDZOR3NKc0tGeUVDTDUxMFROWWJOczVCbGo5T25UNXZCUUtQSWw5NWZzbW9rV3R3WmxCRm4xZGJWMVpsaFNCcVBjK2wwNHl4NmVIaVFib1RCMjl0N0ZqYk1FemVTSG1jTkdUS0VHenMyYk5oZ2c3SHNWWFN2Z2cwdnFybFVnd3NMQzNtdmZHWXNJRzl1R0RjTldwNldqTWl3c0xERlc3ZHU1V3lSQVFNR2hLSTF0amtFb254SU44SUFBK2hKYkpnblJxWnFNSGJPcjY2dTVqS0ZMaWtDbVJKdHlWWjBiK2Q2QTVCbEJiU3NWUFJHOUFpUG1XKytKS01TeG1VSVpEVldyVnBsQ1ZkcFNhUDN3Q0lxQk9sR0dGb0tVcUFiK1Y4NHg1eC90blBuVHZxbTdHUVlTS0oveFJFM1Ywc1Y2S1dYWGpMNVI1YysvL3h6SzdndWk4bnF4eTR6djBKSmxuUk1UTXpUZCs5U0VUWUFQWFVLS3ZkWmlEci9iOXFOOHdhc1ZPcGl1Wk9SOVFvVC9lMUpreWJaMCsrRVljT0d1Zm42K240a1prU0ZSUXdMdTNFdDNndVVpSVZCZ3diNVk5ajVFaUl6ZjJLUXloQmwrUzRNVUM1Q1YxcGFxa1RhUnUzeW5UcDFxdkI1eXJSc0szeFp0WjhGay93YXVxQWhEYjgwSUM0dXJqL1NSWStCdGtTNEM1ZVRrcElHUWpZcVZDclZFSlNEMFpaTUlLTVQza0VHWkE3b0VVZWpSNlJYUzlUQmlmbno1eHZXZzZIYi9kWFQwM1BucUZHanVGY0FYMzc1WmR1Z29LQTM0RnhMc2xwcWE2U25OekRPS2hZc1dDRDVaOVJtekpoQmhxQmVYMWtXbS9URUNlUHNxd0IzbjBPSERnM0VlTHdIamVsblRaSndwS1dsNWJ6NzdydGM3Y2pNekZTSjhlelRVQ0lQaC9MeThyaHZ4SWtOdEpodThLdi9CeUx6K3NZaUdhTXdTc01ocS9ITk45OVl3TkFhcWRrMUhFdVhMcVYxbDJiUzIyYllaV2JDMkNTREl6NCsvaW5Jb2dMZDNqUHdKL1grWUlUVXhIM2V3VEE0K2RTcFU5Z1ZFU05IanZSQ2Qvd0pST2FGVFVreUt2ejkvZGZEeUhEQXZrRVlOMjZjVTJCZ1lKWFVocUJRK3ZqNGJNZVFxTmRqUnIxbTVhTmZyMFdmLzVjZExpUFF5OFFYTGx5WXNHN2R1bS9wVy9HYVpONkE5NUMwZmZ2MlkrZlBuOCtuYzhvTnFHejAzdERka0pBUXpYZTZSY0pQUC8ya2lJcUttb1F1U2paZHNUWXhUUHpaclZ1MzUrQUw2bTB4N3QyN2x5YkV6Y094SnYrWVJFdEVWM3dibHZtNHExZXZZbGNpWkdkbnErQTBuNERJeklRY2lHRmplMUZSa1J2a1ZsRlFVRUJEVEtzekxVeE5HRTlIK3ZidHl4bFBrbUxPbkRtMkZLaG83UkdWcVFtWDROZlUxTlFXNXpJbEppWm13eTgwbWcvT2x4UU1ndTN3K3NhTkc0My9LQk9GTXdyZGhPeldPbXdrN0FJS3NwZDkrdW1uWER4Ny9mcjExdkRCbDV2Q0I5ZVg5dmIyVjJOalkvTWdtdzd3SllNOFBEelUwMERrU2hnY0s3RlZBNzdwZjJERC9KOGM2T2JtOWtWaFlhRWs3L3J3eG9JRkN5d2lJaUxvVVozb3dYRXg2TzN0dlExYk5XRDhrY3o4bnlsSkR4YkN3OE1YN2QrL1h6NUw1RFFpS1NtcG4wUERxdURNekp1S2NsY3NoUWovQmtDV0w0WVBIKzRPUjFwV3dRdzVLOWJMeSt2RDR1SmlvOHh0TmhqejVzMmpDV3lsTlBVU3U4d2JNaWJscUZpS0I4VEV4RXc5ZlBnd2R0c1pldmZ1SGUvczdFeHZnRE52emxpVW0yS1ZTdVhKakl3TUZlVDJpd2tUSnRDMHpFcFR4bC9sb2xqNC9RL2hhcTJaT1hNbU4xR2hYYU8rdnA2ZW1EeHRaMmRua3FYejVLQlkzRHM5aWRMOWNHOUhRR3BxYXBpaHJ6WUlvYWtWaTNzK21KV1ZGUXk1NDJMWnNtVTJBUUVCcnhrejhtTXF4YUxycmFOWkVMaG55VjQra3gxNjl1eEo3NHorQnBGWktHTFNGSXFGYjNvNUlTRWhDL0xqaDRLQ0FwcjU5emxFWnVHSVJXTXJGbjc4enNHREIzdEFmbnl4ZHUxYWkvRHc4QVd0VFk0MmxNWlNMTTVkaTN1WnZXL2ZQcjBtTUR3V29KQWF1aTlhNUpsWmFJYlFHSW9sZngxK2V5TGtUbWhqMHFSSnJsREMrMkw3dkZJcWx2THE1K2RYT1d2V0xObStaeVFMckZtelJoRVRFelBGMnRwYXROZEZwRklzZk5NN2taR1JSZWZQTTFkdjd3UUxOSC9aeWNsSmxQbkxVaWpXeGNYbGFFWkdSZ1RrVHZERi9Qbno3WU9DZ3Q1QmQyZVF6eXVtWXVtdGdNREF3RGZnbTdiYnQrOWxBL2lEM0hzclFpaVdZbW5LU21KaVlyUDNsenBoSUFZT0hCaU03bTgvUkdhaHQwWXhGQXQvKzcvejgvTWxXU1g4c2NlV0xWdXNRa0pDeXZsT3dURkVzWmFXbHJXaG9hRUxWNjllTGI4cEt4ME44QmV6SEhpc1Z5eFVzVFJsQmRkS2hkd0pZNkdnb01EVHk4dnJZNGhNcFRTbEVNWDYrUGo4czdpNHVNMUo1NTJRQUY5Ly9iVjVWRlRVSENzcnExWlhiZUdqV0hxYk1EbzZldXFoUTRkTXZqVENZNCswdExSRXBWTFo0dEt4K2lxV3BxejA3OSsvSitST3lBVzBjSml2cis5bVZqaXlMY1hTcXlyd1RkY3NXYkxFNEZjeE95RUJkdS9lVGM5NXgwRjVON0dybDJKdGJXMS83OTY5KzZqYnQybldUaWRramF5c3JBaFhWMWY2UmsrcmlvVmZmR0RZc0dHaUx4WGZDUWxSVWxKQ2F6TDlnMEtBMm9xbGFUbndoMS9kdW5XcjVBdVVkRUlpeE1mSDU2bFVxamMxdXdxNE1TdmdtL2JYN0haUUtCVC9ENzdtcFQ0V1FSeVhBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiRklET18yXzAiLCJGSURPXzJfMSJdLCJleHRlbnNpb25zIjpbImhtYWMtc2VjcmV0IiwiY3JlZFByb3RlY3QiXSwiYWFndWlkIjoiOTllZDZjMjk0NTczNDg0NzgxNmQ3OGFkOGYxYzc1ZWYiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOmZhbHNlLCJ1diI6ZmFsc2UsInBpblV2QXV0aFRva2VuIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjp0cnVlLCJhbHdheXNVdiI6ZmFsc2V9LCJtYXhNc2dTaXplIjoxMjUwLCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxLDJdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjgsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTYsInRyYW5zcG9ydHMiOlsiYmxlIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN31dfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjItMDQtMjEiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJWZXJvQ2FyZCBGSURPMiBBdXRoZW50aWNhdG9yIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyMjA0MTkwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMi0wNC0yMSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI0LTExLTIwIn0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiZmNiODZlMDE5MDg2ZDQwMDhmNjQ3Njk4MTk0YTFmNjM2NDRmNTIxZCJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyJmY2I4NmUwMTkwODZkNDAwOGY2NDc2OTgxOTRhMWY2MzY0NGY1MjFkIl0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IEJpbyBGSURPIEVkaXRpb24ifSwiZGVzY3JpcHRpb24iOiJZdWJpS2V5IEJpbyBTZXJpZXMgLSBGSURPIEVkaXRpb24iLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc0LCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjJ9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50IiwicmVtb3RlX2hhbmRsZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURNekNDQWh1Z0F3SUJBZ0lVU09FalRmLy95cVJmUFc3UXE4cXRJeUNyQWc4d0RRWUpLb1pJaHZjTkFRRUxCUUF3THpFdE1Dc0dBMVVFQXd3a1dYVmlhV052SUVaSlJFOGdVbTl2ZENCRFFTQlRaWEpwWVd3Z05EVXdNakF6TlRVMk1DQVhEVEkwTURVd01UQXdNREF3TUZvWUR6SXdOakF3TkRNd01EQXdNREF3V2pBdk1TMHdLd1lEVlFRRERDUlpkV0pwWTI4Z1JrbEVUeUJTYjI5MElFTkJJRk5sY21saGJDQTBOVEF5TURNMU5UWXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFDZHZsMjd3Mmd1MWZQWGVFRmJJZHF4MEJhbHZWRFZXclFQSjdIcXZpdUV0WkhseFNMeFNGdGNYcFRvbHZMdm9mOGY0dE1lclFUa1ZHemNtWXptMUVCVDRJSnVNbW9FcWZrRUVoV3BzQURNRnJqWmtxbFpZOUVxeFF6TG9WRUVvbkU1b0d4U2RWQ3hDY0xJYWNrcHlSL0NDWHZqMUJ0L2hUZ0U5aFRsRjRwUnF4TWt4M3BsRjd5OGREWmxSSFdzN3ZibmhtQkNHZUkwWlBFUTZubDJtQ2cycjc0YWRGMnU2SzlyckxmaEJDM1FMRThFUHJncVVzSStoa3VxMnRLNE0yU01PcDh1VVZWa3FVZXUzaDBrcjNXVkkwVzAycGtnck9naUZLTEZOa1NyYlloZGpNQkRqNWl6bXFmYzl4SlJLb0RYNjEycWQ4WkdWSHBUNUFZRlgrMWhBZ01CQUFHalJUQkRNQjBHQTFVZERnUVdCQlRaeVU1RGlRL2EyVUVnRTdxQkswemhJc1JOUmpBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQU1BNEdBMVVkRHdFQi93UUVBd0lCQmpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQVh2bkI0U0x1VUpmWU1TVkdBaHNzTC9TbVdsaTNGU2NjZ3h5ZHZLbEFDY2lkSUlXS1FxYTNxL1FTVUVRekM5RGdFZk1ncjdpQzFCa1RaYklMYm9WNlVaNWtuTnN2akVaV3VNZW9nSjh0Z1pzMWhWdkt3Wml6d0orbUVjbXNqaElyQll1b0wxVDZ5ck9KdktGZzFqditDeTRad0E5QnBrL1YzVU9pcjFWeUs4ZEN0eUh1NnZmb3NvdEFkWXg4RkF1UjI0M2dSVE1WNkp4OEpkaWcySkRJQVFNbHpWZURwU1VIWC9LMkhYUkh4SHdmZ2piZ1VqakJ1LzcycjhPZmVoeWh6SFhJM0s4Q0ZGZGZsTys4bkVPSkszeThGMWl2Z1M1dU4vOFNtY1l3L1NUUVl3aHJ4UHV3ejNuUDhiYU11bTRCQjJublltcEI2MHNYM2JsNWs4UVVTdz09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWZDQVlBQUFDR1ZzK01BQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBSFlZQUFCMkdBVjJpRTRFQUFBYk5TVVJCVkZoSHBWZDdUTlYxRkQvM2Q1OXdlUVNJZ1M5QVFBWGNGTEFRWmk5ZnBlVnoxdFkvV1RacjVXeHBjN1c1a25MYTVqSTNaODVzclMybk0yc2p0V3daUzdJVUg0SDR4Q25FUXg0REFaRjc0Vjd1czg4NXY5L2xJbkJ2VkovQjRQdjludS81bnUvNW52TTU1NmZ6QS9RdjBIYi9JclgzVkZLUG80NWNubTRpblVJV1l3TEZSbVpRVXV3akZHL04xaVJIaDFFWjBOUlZSdWRxdDFCZCsyblNLeVMvT2h5czArbGszZS8za1E5cXZENFpVdGE0VlZTVXVZMGVpcHlpVGhBZm9jb09SVmdEdXV3M3FLUmlBZDNyYmNFdGpUallJb2Y2V2FIc0NtelZQV0NNeCtjZ2g4dExxV01LYU1Xc1VqTHFvMlJ0SklRMG9Pem1lcnBRdTRlc1pnc09Oa0d4SDdkMGtkdlRUMTdzNE9NVTdWSThaaGpnR2FNK0FxOWlFTnU4UGlmMXVkejA3TXd2S1dmOEdsVm9DRVkwNFBDNVdkVGFYWUZiUjh2TnZMNSszS2dmYjV4Tk15YTlSYW1KaXluYU1sR1RWdEZscjZiYTl1K3BxbkVYNHVNdVJSZ2pTWUVock43dXRGRmU2bHFhbDdOZmt3NWltQUdIeW5QcGJrOFZtWTB4c3RucHRsRkNWQ1l0elR1Qk44M1FwTUxqVHRldmRQelNVbko3ZThta2p4WjM5ZlhiS0RmbGRacWJ2VStUVWdHbkJWRjZmUTJpUEhnNFcxNlVXVXd2emJrMTZzTVpFK1BuMHB2ejdKU2V1QXllczhsY3BDbWFLdW8vcCtxV3IyVWN3SUFIV3J2UDBZRXpoWEF0TEFic3NIaHA3aUdhbXZ5aWpQOHJ5cXJYVVdYOVhvb3d4eUF1Zk5CcnA0M1BPQkZYWmxrZjhNRFJpcWNweW93QXdwdXoyeCtmV3Z6L0R0ZGU5c21zenlndGNSNkMxd2JkekJsNk9scTVXTllZNG9HYXRoSk1ya1RFeDBqQVJTSEFWcys1cllrUU5YYitRZ2ZQTHNRNmdYeUluc3JlUWZtcG03UlZGWWZMODZuMWZpVU9rWXZTaGtVUHh2YnVrem95NksxaWhNMWhvM1h6VzZFdlNmWEErZHBpV0dhV2QrZG9Yekx6bUd3S1lGTENBc1JBbFBCQWhNbENGWFU3dEJVVlByOEhnVmNKSFdxK0YwMHBscitETVRkclA0enZ4WTExa05NaHhUK1NlVEdnK2Q0VjVMUUppdHlVR0pOQjhWRlpzamdZQlpNL0lJL1hDVGtqMHF5RE9wRjJBVlExN0NJalVwL0RuVDFVa0w1RjVnZGorc1Mxd2cxZ0UzZ2lnbTYwZkNYelNuUFhieUFQYklYditJRHBFMTZUaGFISVM5c2t5aGxtTUU1RjNjZnFBS2hxMkMwRTVQSDFnWWFYYUxQRGtaRzBIREpPbktXSHA1MUkwejVTT3V4OGUxV0F1WnpkSFFyVGtwOFRtalhvSStsYTB3R1pzenVicWJPM2lmUTZBL1c3dlZTWXNWM21SMEpLd2tLYzRXSGlCa21SOEkzQ0NnSTg3b09MNHF6VDVQK1JVSkJlakVPZ0FQSzhoWVB6YXRNK2VJVHAySU85eVRRbWVyb21QUnh4MXF4QWNzaWxlL3ViU2VFYmNXUUdZRUNnaGNMWTJIeUtqb2dqSDI1aE1wanBVdjFPdWdsaTRlaDJlUncwTzMyYkpqa3l1Q2dOemcwdnpsWU1TaVNzMHVvbzRNRzdoTU9qQ0VhWDF5RkUwblN2akJ6dVRuRXBLODZaOElvcUZBSXVidzhrZzlBckVhUkVXU1pJK2pINFhicDZnOUU5RW5KVDNvYVJ6RE4rTVVKQlFESG41NmE4b1VtRUJ1c094QnMvTjUrdEpFYlBrQUZEajhVR3ZPcy9JV3ZjU2dsR0JodlM3L0ZUWWZwV0dZZERZOGZQQXhXU0EzNXNUQzRwNCtMbTRBYXFJb1BlUXRmdWZLNkpoMFpoeGxic1VYT1NtWE5pZkQ1WlRBa3lEb2ZiYmNjbHhuQThXTkFxeENiUk55a2hYeFFwYUR3NjdmWFVZYnNpRzBLaHR2Mm9lSXZoOHJoUU1ZT2NFQXFYRy9lSSt6bmdPYzV5eHI4cTgySUFNMWMvRkxGT3BscXU1ZUZRWHJNWnpHY1ZDalliTFdHNUk0QlQxZXVScmxieHROT3RNaXREREVoTFhJSXluQUF2dU9FV0UzWDNOZEFmdDk0VmdhRzQyWElRdDBaWDZQZUNFL3FRRmU5cks2SHg3WVU1MEt2SDdmVzRmUytxN0tLQkp4c2dnQlg1cFNBR2gxaklyVmg1elE2dzNSZmFhaEJYbS9hQ2JDWlRqQ1VGVVR5V1pxVzlwNjJNakpQWFZxT3JQZ01PNE52NzRHa2Yrb3dmdE5WQkRRbmpGSnFIU3cxN3BYdmhXVzVLWnFlL1E0OU4vVVNUQ0FWV29RWEZJSEJIWFhlM0ZQclVEc3VHRG10Ri9oSEtUSHBla3hoaUFPUEkrU0pxNlM2SEY0STlZV3prQkpUbzQ2aVVNeldwOFBpci9SaWR1THhLWXNTa3NWOHZMbE9RdmhHWDJZbFIwT0JoQmpDK3UvZ0VjdlkwQXBLN1lrNDFOeGpQU1FuV0ZIVEY2NlVyamdldkI4Q3U1YStsMnZZU1JQdHVWRG83M2hoZE1TSG5VWDd0VGpzVlpHeEFsL1dwdGlPSUVRMWduTDI5bVg2L3RSMXRtbGtZajhXNFgrQ1NqV2NVREdZMU5wUy9DN2hTS3FpTUxNL2wyUW1TV1o3M0RkeitnaW84QkNFTllQUTQ2cW5rendYVWJxdkJreGpVUXNXZlpGZ2J1bzNyQWYrd043ak9POTAreW54NFBpM0wrMG5ZTDFTY2hEVWdBUDRnUFYvN0lkMXErMUhTaG11R2tJcVdSUGd5eE1GcVA4SGZqVG5qWHdZNWJRZmJKY3Q2T0l6S2dNSG90Ri9IZTFlZ3NheEhTcUc2d2ZkbVE1eDhOeVRGRnFCY3AyaVNvd0hSM3lrNSszNmhGN3ZYQUFBQUFFbEZUa1N1UW1DQyJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTAyLTAxIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NCwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZdWJpS2V5IEJpbyBGSURPIEVkaXRpb24iLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlUyRjEwMDAyMDI1MDIwMTAwOSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTA4LTEyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NCwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZdWJpS2V5IEJpbyBGSURPIEVkaXRpb24iLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlUyRjEwMDAyMDI0MDgxMjAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTA4LTEyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NH1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wMi0wNyJ9LHsiYWFndWlkIjoiOTczNDQ2Y2EtZTIxYy05YTliLTk5ZjUtOWI5ODVhNjdhZjBmIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI5NzM0NDZjYS1lMjFjLTlhOWItOTlmNS05Yjk4NWE2N2FmMGYiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiQUNTIEZJRE8gQXV0aGVudGljYXRvciBDYXJkIn0sImRlc2NyaXB0aW9uIjoiQUNTIEZJRE8gQXV0aGVudGljYXRvciBDYXJkIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEwMDAwLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH0seyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MTAsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQ1FUQ0NBZWVnQXdJQkFnSVVGLzB3VFBQNkZFcXhwc2liSmlMRnREajRxaHd3Q2dZSUtvWkl6ajBFQXdJd2RURUxNQWtHQTFVRUJoTUNTRXN4RWpBUUJnTlZCQWdNQ1VodmJtY2dTMjl1WnpFU01CQUdBMVVFQnd3SlNHOXVaeUJMYjI1bk1TTXdJUVlEVlFRS0RCcEJaSFpoYm1ObFpDQkRZWEprSUZONWMzUmxiWE1nVEhSa0xqRVpNQmNHQTFVRUF3d1FRVU5USUVaSlJFOGdVbTl2ZENCRFFUQWdGdzB5TWpBMU16QXdPVEl6TXpWYUdBOHlNRFV5TURVeU1qQTVNak16TlZvd2RURUxNQWtHQTFVRUJoTUNTRXN4RWpBUUJnTlZCQWdNQ1VodmJtY2dTMjl1WnpFU01CQUdBMVVFQnd3SlNHOXVaeUJMYjI1bk1TTXdJUVlEVlFRS0RCcEJaSFpoYm1ObFpDQkRZWEprSUZONWMzUmxiWE1nVEhSa0xqRVpNQmNHQTFVRUF3d1FRVU5USUVaSlJFOGdVbTl2ZENCRFFUQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJCd1lnS1Z3akNWNitsdjdnbnBGRVJ6VTJ1TkQ4Z2RFa1BDTmNzL3ZGRHMyc0s0Mkp1eG5oRm5JZ01CMkR5VTBJclhJTGpmLzJYVDBZU1RkMXNQaVRTYWpVekJSTUIwR0ExVWREZ1FXQkJUblFhcnBkU3Q0c2lkN1ZqZk5JTElIcmIyUG9EQWZCZ05WSFNNRUdEQVdnQlRuUWFycGRTdDRzaWQ3VmpmTklMSUhyYjJQb0RBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUFvR0NDcUdTTTQ5QkFNQ0EwZ0FNRVVDSVFEY29YSjNyek5NQS9mWmtoMDhQb0ZyTXg0M0dZTWhaTWZMUHcvM01mSnBHQUlnZWN0S3dtSllNOUo4U1g4eC9hUVY0aUd2S1dvQmZyMVhQVEFNWE9oVkVZRT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBREFBQUFBd0NBWUFBQUJYQXZtSEFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFEc1FBQUE3RUFaVXJEaHNBQUFpY1NVUkJWR2hEMVpqUGk1VlZHTWY5QzlvYjZESm9JUWkxaURCd0k1UWdFVUVsdEJKMFlTQUdFdVJDRkJNeElrbENheUZJUWlhS0JaVW9sWTdRTkpNNjNuR2FjYTZqNDB3MDA0ekJNQk82TEU3bjg5ejdQZk84NXozdnRkcTUrSEx1ZlgrYzgvays1em5QT2ZldStQdXZ2OExqTERQUUdoNE83Zkh4MEdvTnA4OVZ0YTJkbkp5c2FYcDZLbWx1Ymo2MTB2ejhYRmhZV0NocWNXblJ0TFM0RkI0K2ZCZ2VQSHhnNHJNWGpMNlZEaDQ4MkRYUUJVOUdZanZlYmljMXdRdTRCQSs0UHMvT3pqYkNtd0ZuNHI4b0dSQjBKOW9kSmZoMkhYNHFnaUlQN3dVODBLWG9lM0NEZndSNEhuV0ptZXBwb0tOMkRYNTZxcHd5dEFEUHozVWkzd3NlNlA4TDdsVXhrQ3NIUjNuVUJjMW5xUVR1NGIySkV0Uy9rUUpRTnhEVGhiUXB3UU5INitIVkNwcnZ0TXhDRGsrZUx5NVZvWHVaS00yQW5pOGFhTXAzZzQ1cFkyMEdqNEJWdnVmUjk5R1dQRWhKdlZMSDkwTXdzaG5vSFhrQmUzZ3ZENTdETTFndmFOUUxIRlhoRjIyTVpDQ0hSb0I2QVZtQ3o5TkZzdExZTlZDQ3lhK1ZwT2NFVG45K2pFWURPVGlMOTkrQ2w5SUc1WENLZUsvSVYvcm85dXZIS2hwUW1RU3lHSEdYNTdNLy9CQm1QdnNzM051MUs5emJ2RG5jV2JldXByc3Z2SkEwOGVKTFlXYjM3dkQ3b1VOaDRjS0Y4T2ZNVEJHNkJPL0JwWm9CYlZDK1hHcHhvdGxyMThMMC92MEdNdnJFRTJGMHhZb3crdVNUQmpyNjhzdGhkUHYycEYvMnZ4ZHVmZnh4NVJvYWYrNjVNUGIwMDUxM285cXJWNXY1KzZkT21TRVBMZkNTQVFwSHhRRFJWVnVKZUV5Vlg4K2VUZEMwZC9ic0NhMVBQN1VqU0g5L3Y3V3FaRDRJRERJM1R3cE9tK2lQNjlybGh6Ny9QQXp2M2RzeEh3T0JvZWszM3d6M3YvMjJZcUFFVDFzeDROT0dCeERndDU5L1B0eDk0L1V3OGNreGd4dzhjc1FpT2ZMc001WTY5Ni8wZFFhTFVmTXA0TVVZWEtmTjc1SFhqQVVEaHE2Kytxb0Y2dGFxVldFbXpxQ2dsYnEwQklWM2tnR0Iwd3JlOGpvSzZOWTMzNFNibXpaWng3ZlhyQWwzUHZnZ1RBeGR0M3NNVEtlYStnNVUzWVNYRE9tNzNrVkFEcmRhWVhqclZodVBsSnNmR3JMclloTm5NcEJISDBCZXV2WGRkK0hXSzYvWTFKTG5ZeWRPZEUrdUxYdWVUajJJNUFFVmRWM3o5Mmh6MGFjMEV0TnpaUDE2TXdJVDF4Z1hrWXFWR1pBd3dJTzI2Q0k0RVNEZkJ3WUhESno3eWs4R0ZBaXRwTzhlTnIvdnhYaE4rUTdUelpnSnNJd2RPSkJtQUJVTkxJNk5wUVU3L3U2N3RraEpGYnNYQjFHTkoyMm0zM2tubFVoS284b2lmZDZQcGxWYUtaMUxzVjhCczBoL2pRSFNQY2JNd2VsZllteXFtaTN5ano2eTcyUkx4UUFQOHFLVnVGZ1JicDQrSFFaajFNbHhyaWY0S0VCWkMzVG94VFVBUy9jSUNBc2VVN1Y3VVVvUndWc2JLeUJzQXJhc2lQMndSdGl2S2daNG9iMWxpejB3MU5kbnVjNTFIM1hnaVRDUjE4QTNObTRNd3c2SzZxVFByYlZyTy9kaW4zYXRXeXJUUFJhcXJzVm5WQkM4WkNDWmlNOFB2dldXUFpzTUFNOG1SVWZ0a3ljdDhsd1R2RGVCQWFhZnRVRkVXQmQwWnVhN2NHamtxYWZTL3NDMG16RUhhOFVnaXBuR0NDSmRjK0M4dFQwb211ZmRpZ0dtbHR4WEo4dmduZE9rRnFEMDI4eHZkdnhtVVpWU0NtRGdGN3Q1VDU4VUE5Mm41ak11NGg3UGFxMTVDWjZxUTZBbXZ6aGw3OE5aTVVCMFdPVTJxSXU0b3A2TFJjbXVtZElqVXpMUVBVcWpoUWpobjJlOUViVGZ2L3FxQ0M3eEhYaGFNb1IzTDEyNmxCbUlGNGtRRC9sMFVkN244RTNnRXRPTUFmcTJXY1JBL013QjBLOEZpVVVzZU9UQlUvU2pPQkh3L3ZuejU1Y05BRXduMTQ4ZXM1UXd5SWJJODd4Rm5vRXh3VHFJeG0ybmRrQ2FBYUJ6QWNhUjVPZFlwbGtyNmtzcHBHajdWbUpqWmF6S0RHQ0FtbnpqN2JjN0cxVUR2RVRkWjFBcURQOW1jRkRqMkZFeEVNRms0SSs0NEVnVGlUTVcxeW1GN081Nmg3d20ya0F6QS9UcjRaVSttTDk4dVcvWkFHbGlwVEZPRFMrWERQQ2NQays4OWxwbjBQajg1SlVydGhHbHRIQ3BSWVVCdnJRdmtESVlTSDFGRVZVZjhhbXBaUU9jdlJoamZNTUdTNTlLRlFLWVNzTGdiTnVQbWdGK2pIZ1lMOUtpYVgzb3BObDBEd01HbmtVZWVCWThzL3I5dVhQMkhMTmJNUUFZMnorZFRaODVVd0gyMFpmNEpaYWlIald5Y3FYQkU1a0pOc0s0aUhVUGFBQkpFV1lsdjBjcUFzVzdIaHhaMnNSeE1DQjRuaU4xYXdiUTVMWnQxakdiandjdWlmVkNKQUN6VHJzQVdxaDg1NTZrVXl6UDhCMFlxUVlmVTFNbllVdWJhUHppeFlzR3pwaVZHY2pCeUU5ZXBFYVQzL2w5aEdtSklxQUtrNnZwU0tDV2RhQmZiRGs0bFl3RkMveFA4YWNzMEFTQmRqaTJ4UmxBWEtOZTIzRWhUakVMdlBKNzFZa2FYNE9PY0VBelE1TGdVNVhoendPbmUvdjJwZkV3SUhEU2k3TEpid05tVFNZcUJqeTROMEprMlowdDEyUEg5dU9iMzZzTjRCTHd0SUwyRWFmMWFjSVppQlNaMkxuVDloTkxxYU5IN1pESXVCeWpsVzRHSDFNTmVOckdGTXBGQkc4ZS9yRHo2Nmk3OERERGIxYU95QjZlWnkxdDNGRllBanB2MGRVdnoxa0JFRFRDV04vWFgxdkp4QURRRXZBMUE3Mk1LRjBZbEttOGZ1aDlHeXp0b2xGc2hLd1ovWlltSmRpd3ZEaEpFbWxFMU8yRTJuMmZ2a2lYL3VQSERWcmdnT2FSTHhvb1FhdE5jb3VWeUtsakhRdUltdVZyQkpQSWEvOWQ0dG1yTzNhRUh3OGZ0bHdIbUNyRERpdkFsTy94QjR5dVNSejVINWxDVGZCZVdxd3lwQ2dSdlpMSVpTRFJ3T0NnaWVjVkRGcEpzRjZBNjNNeUFLRGFHbmhVTDNCYTVUalNRa1Y1cm52WjMva08xZ3U0UEYyUTRBbEVaUVlFbmtlZUt0UlU0L05LZy9JcWt4OEpKUDB6VjRIdWJsQUczZ01lWVlDMlprRGdncytoVTRYcGl1K29aTUFiRWJSYUQ5NkJYOTZjZXNFcjh2cGNNZkFvZUVtd0F2YzFYdktuU0s4NitITE9HM2dCM3Y2UDZnS3J4UVRYaXdieURVcXBvcWpMZ0lkSEFLck4xVFBmSXpTUkwxV2FFcnhhRm4vTmdBZjNLbTFLT1R6ZmMzQ1U1N3VpVGl2UWtwb2lUeXRWREpUQWdiUElad1lFRDJBVHVJQ2JCSlRhWEwzZ3VWY3prSU1yYlpBSHorSHoxZ3M0dFFhcXlFY2crL2M1U3hzdFRyOUkxUTRNRENab3IwWURBczl6SGxXaTMzT3hsdk1lS0xVbCtlaVQ1NTIybWpwU01zQ0h4MU1Id3o4Y2VIeTdFaFJ6NVFBQUFBQkpSVTVFcmtKZ2dnPT0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xIiwiRklET18yXzFfUFJFIl0sImV4dGVuc2lvbnMiOlsiY3JlZEJsb2IiLCJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwibWluUGluTGVuZ3RoIl0sImFhZ3VpZCI6Ijk3MzQ0NmNhZTIxYzlhOWI5OWY1OWI5ODVhNjdhZjBmIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwiZXAiOmZhbHNlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6dHJ1ZX0sIm1heE1zZ1NpemUiOjIwNDgsInBpblV2QXV0aFByb3RvY29scyI6WzEsMl0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6NiwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoxMDQsInRyYW5zcG9ydHMiOlsibmZjIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN31dLCJmb3JjZVBJTkNoYW5nZSI6ZmFsc2UsIm1pblBJTkxlbmd0aCI6NCwiZmlybXdhcmVWZXJzaW9uIjoxMDAwMCwibWF4Q3JlZEJsb2JMZW5ndGgiOjY0LCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6M319LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIzLTA3LTIwIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEwMDAwLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IkFDUyBGSURPIEF1dGhlbnRpY2F0b3IgQ2FyZCIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjMwNzIwMDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjMtMDctMjAiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MTAwMDB9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjMtMTAtMDMifSx7ImFhaWQiOiIwMDI0IzIzNjAiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhaWQiOiIwMDI0IzIzNjAiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiRytEbU9UUEtleWNoYWluaU9TIn0sImRlc2NyaXB0aW9uIjoiRytEIG1PVFBLZXljaGFpbmlPUyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6InVhZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9LHsibWFqb3IiOjEsIm1pbm9yIjoyfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X2RlciJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJzb2Z0d2FyZSJdLCJhdHRhY2htZW50SGludCI6WyJpbnRlcm5hbCJdLCJ0Y0Rpc3BsYXkiOlsiYW55Il0sInRjRGlzcGxheUNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbiIsImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlCbURDQ0FUMENCR1FkUFIwd0NnWUlLb1pJemowRUF3SXdWakVMTUFrR0ExVUVCaE1DU1U0eEN6QUpCZ05WQkFnTUFrMUlNUTB3Q3dZRFZRUUhEQVJRVlU1Rk1Rc3dDUVlEVlFRS0RBSkhSREVMTUFrR0ExVUVDd3dDUkZNeEVUQVBCZ05WQkFNTUNFRlZWRWhTVDA5VU1CNFhEVEl6TURNeU5EQTJNRE13T1ZvWERUUXpNRE15TkRBMk1ETXdPVm93VmpFTE1Ba0dBMVVFQmhNQ1NVNHhDekFKQmdOVkJBZ01BazFJTVEwd0N3WURWUVFIREFSUVZVNUZNUXN3Q1FZRFZRUUtEQUpIUkRFTE1Ba0dBMVVFQ3d3Q1JGTXhFVEFQQmdOVkJBTU1DRUZWVkVoU1QwOVVNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVTSXBJL2RLWUNEWWh6d0Qyd1NmWUFPYi9uTmFpUGNXRjIxdnhaay9UZ0QwT0p0Y0QrT1BtNjRud1pkRldTRVlTVzdpT3FucG1KeWRlOG1nci90bkFpekFLQmdncWhrak9QUVFEQWdOSkFEQkdBaUVBM2J2aGF6UUZQd215WGx4Sy94Q1hmaDdnMVgxRW9iTEMzTCsyR09SeHA3Z0NJUUNmTkVUWC9tMkJlYlJMWEk0TE1QMUVRR1BYRkRmN09rNzRVN3hiaU00VmtBPT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCwvOWovNEFBUVNrWkpSZ0FCQVFBQUFRQUJBQUQvMndCREFBTUNBZ01DQWdNREF3TUVBd01FQlFnRkJRUUVCUW9IQndZSURBb01EQXNLQ3dzTkRoSVFEUTRSRGdzTEVCWVFFUk1VRlJVVkRBOFhHQllVR0JJVUZSVC8yd0JEQVFNRUJBVUVCUWtGQlFrVURRc05GQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJUL3dnQVJDQURJQU1nREFTSUFBaEVCQXhFQi84UUFIQUFCQUFNQUF3RUJBQUFBQUFBQUFBQUFBQWNJQ1FRRkJnSUQvOFFBR3dFQkFBSURBUUVBQUFBQUFBQUFBQUFBQUFFREFnVUdCQWYvMmdBTUF3RUFBaEFERUFBQUFheWo2RjV3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVnZDNlRFQ1eExKMzZ4Rm9jNWw4bEdQU1hLc3pORE0wOU5WZE4rOFA4WmRMS0JIcGllK3ZoVHVvZk5YTkF2bStNeVVtUm4xZFFaZ0FITTRjdzFMaWNQMVZMZVF1alR6SjJkSk0zMzVwaGFhVWplYWJLVVJ2ZFY3U1oxZFRTNlN1Rmt3US9iSHI3NjV0MkYxbWRrODdOUHFFK1NZeUhSMWdBTEIxOGx2eVRlalBYUXFtdWdzZ1lkVlZwMXlhSGZYTFczdlVRazJwYUlxZDVNcllxSVBmamRMTm1UWXkyK0NUb3hzYjZJdHRTdTZsQTlCWkhBNnFvQUJ5T09OSFAycFBlbmpycy84QXhtbmNZYkxDaWE2ejB4U21hWnQ5SFJNbFVSdmRGK3F6b1l1czNsZEtWMXU2aWFtM3Q3UHJ0Sm4wR2VudS9BOURXR3h4QUFBZXY4Z3hYS2svT1pxYzlKbWJLbHBNelpHa3pOa2FUTTJScE53TTZFcmgxajh3Mk9JZXlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQLzhRQUtCQUFBUU1EQXdRQkJRRUFBQUFBQUFBQUJRQUVCZ0lEQnhVWElBRVFFellSRWhZd05IQTEvOW9BQ0FFQkFBRUZBdjZiR0lTUmxOWWJGZ1VaUzNGTW1sUGd0S1cyYmZTTHJFMVBTdVcrQzB2QmFYZ3RMd1dsNExTY2lHTHlrMWlnT1Jwa3NRSXhlOStHQVFtcVVQRzdlMDBzUG43WWEzZTVkQnRxOTV4YU9aWUhGQXl4SjdjcEJreGhIaTI4NHRiemkxdk9MVEhMUUozVzFkMkgxaDZ5c0VXczVoMXlLRU9iUnJjZk9nWWl5QkZTV1F0NHlLUFNGN0kzdkRFbnR5eWY3dHdqY29mUmg0Q05ONUFNbEFLM0l3bHkzVlp1Y3NWTU9qMlhMTFJtcDlJKzFHSmoxZE8waDViU0hsQW9DVmpwOVRYSGhZOUpkcER5MmtQSnppdzQwYmRzT21hbTVkWkhZZEI4dzVZWStOZVU0K3JwTHV6YjlibWUvd0FQdGpYNnZ2VlpmK1B1dmxpNGgwWVM5WmRDVk16M2FuSnNqb3AzUGtpM1BraXg1TlRCNlJLZFRvMkZsRzU4a1c1OGtWL0pFaGRXTzJIQWxWNGdzaGtPaEtYOHJGK3RyZmpSeTFJd3g0RzJrUXlTUlIvRjNYREVudHl5Zjd0d2lzTmZTbHlJRk53ZytZU0dpTkE2cXV0ZFhPRVRHN0UzN0IrM0tOTDdlMDZ0UGNYeDk1WHRDQ1cwSUpiUWdrQmdBdU9QMGF4MEpQRXRvUVMyaEJMYUVFbU9NNCt4cnRXcUxGc29WYWhtVXhsbDZXRXZ3eDZVa0l6ZkM1ZUdQS1c4cURPcWRkR3JYUnExMGF0ZEdyWFJxMTBhdGRHclhScTEwYW5NdEN0S1RlWUI3V2s5Skg4a2MvMDMvOFFBSFJFQUFnSUNBd0VBQUFBQUFBQUFBQUFBQUFFUkVnSVFJQ0V4VVAvYUFBZ0JBd0VCUHdINnl4azZSS0Y3cVVTaDR6eWZTMURFbVpFUFdMTXVDOU10V1JZYmdzaHVSZW1YbkZPU3BWaXhZMUpWbFdKUU56eXNXTEZpeFlibjdILy94QUF1RVFBQkF3RUZCZ1VGQVFBQUFBQUFBQUFDQUFFREJBVVJGU0ZTRWhRZ01VRlJFeUl5WVlFUUpGQng4RFAvMmdBSUFRSUJBVDhCL0xWbGQ0UGtqNXI3aXB6emRSMGxReHM3aXFyL0FBUDlLT001WDJRelc1MU9sYnJVam5zdW9LK1dGN2p6WlJtTWdzWTh1Q1UvQ2pjK3lwWXQ2bXVMOXVoRmhhNFZ2VUd0bFUxTUpRa3pFck9rR09WM043c2x2Y0d0a0VvUytoNzFhRk14ZzhyYzJWbFN2ZThYendWWTdVQnN5c3MyR1oyZnI5TUxtN3QvZkNrczZXTVhOM2JKUVFGVUZzQXNMbTd0L2ZDb2FZNlpuWStxcXpZSUNkMVpZM3pYKzNEVlU1VXNtMFBMb29iVUc2NlZsaWNIdXA3UWhraUlHNnFobkNua2NqN0xFNFBkUGFrSFM5Vk5VZFdWM1RzcUttM2VQemMzNFNGamJaSkhaY1JaaTl5d2tkYXdrZGF3a2Rhd2tkYXdrTlNocElvUFMyZjVqLy9FQUVNUUFBRURBZ0FIQ3dvRUJRVUFBQUFBQUFFQ0F3UUFFUkFTRXlFeFFaTUZJQ0lqTXpWUllaR2gwUlF3TWpSU1luR0J3ZUZDYzdHeVUzQ1NzL0JVY25TQ3d2L2FBQWdCQVFBR1B3TCtadDJFWktNRHdwRG5vL0xwb0Y5czdvUGUwOTZQOU5XWWlNTWpvUTJCWEpwN0szV0lRa0h5VnpWN3VBQWdFWkJlbjVWeWFleXVUVDJWeWFleXVUVDJWeWFleXJQd283dzk5b0dsS2loVzU3M1MzblIvU2ZwVnBUZU15bzhCOXZPaFhtaTlJdW5jNWs4TWo4WjlrVWhsbHRMVFNCWktFaXdGRitVK2lPMFB4dUt0UlMwSkVyM20yN0R2SXIxS1oySjhhbXcyNGtwSzMyVk5ncXhiQzQrT0Fma0wrbUI2QTlGa09PTld1cEdMYk9MOVBYWHFVenNUNDE2bE03RStOZXBUT3hQalFTNFg0blc2M203cjBsNk84aDlwV2hiYXJpbkk4bHBMekxnc3BDcTRGM0lMMmRsdzZ2ZFBYNWhtT3lNWjExWVFrZFpxUEJZOUZwTmlmYU9zMDVNZjRYNFcyOWExZEZHUk1keHZaUVBSUU9nRGVqOGhmMHdUL2czL0FHMDcwUFJYT0xQS01xOUZZL3pYVE0yTWVBdlNrNlVuV0RVaUV1Mk1vWGJWN0s5UnBUYXhpclNiRUhVZCswdFF1STdhbmZwOWNIa1FQRXcwZ1c5NDV6OU1JVUJIc2MvSzFvamJXdEViYTBKY3NNNUhKcVR3RjNPQ1ZOaWhuSU9ZbUxqdVdPWklGYUkyMXJSRzJ0T3Z1Q1BpTnBLMVdjMURDL3VjbzhWSVJqcEh2ajdmcGduQklzbDBoNGZNWisrKy9tOVBrMy9vWU4xY2JUbHpoYS8yanpHNlAvSGMvYWNPNXVMMHIvWXJBbTMrbVJmdE8vanBVYkprSVV6OVIzZ1lFYm9KVHhNdE9jKytNMzZXd2hJbml3emNpMzRWemdOZzM0VnpnTmczNFVJczJYbG1Na3BXTGswcHovSVlKY1NITXlVZEdKaXB5U0RwUURyRmM0RFlOK0ZjNERZTitGT011VGdwdHhKU29aRkdnL0xESjNVV25pbVU1SkI2VkhUM2ZyZzNRV2szUTJySkQvcUxIdnZ2MjNtbFlqamFncEtocUlxUE5hdGRZc3RQc3IxaW5ZVWtjQmVoUTBvVnFJb3R5bTd0RThXK24wRi81MGIwZmtMK21DZjhHLzdhZDZBeWd0UlFlTWtxSEJIdzZUVE1PS25GWmFGdXM5WnArVVNNc1JpTXA2VjZ2R2lwUnVvNXlUNWc0MTNJTHZMTkQ5dzY2Ymt4WFV2TUxGMHFUU21ubTB1dHEwb1dMZzBWQ0txT1QvQmNJN3EweXRyOXEweXRyOXEweXRyOXE4c2lGL0s0cFR4aTdqOU1EczZTWDhzNWErSXV3ekMzUjFWcGxiWDdWcGxiWDdWcGxiWDdVRmVSbVFvZngxbFhkb3BLRzBKYlFuTUVwRmdLY2xUSFF5eWpXZGZVS3l5cnR4bTh6TFhzanArUG1zZUU5WkI5TmxlZEN2bFFUUGJYQWQxbTJPanV6MWR2ZFNJZW92QUd1Y0l1MlRYT0VYYkpybkNMdGsxemhGMnlhNXdpN1pOYzRSZHNtdWNJdTJUWE9FWGJKcm5DTHRrMWQzZFNJT29PaFI3QlJUdWN5dWE3cVd2Z0k4YXkwNTdIdDZMWXpJUjhCL003LzhRQUtCQUJBQUVCQlFnREFRRUFBQUFBQUFBQUFSRUFJVEZCVVdFUWNZR1JvY0h3OFNBdzBiRncvOW9BQ0FFQkFBRS9JZjhBVFlqbzRhRFRNME9NVVk2M3ZFdEJaRythQkZ1RCtoWHE5RzVFQ0hOc3U1YUJOUFY2OVhyMWV2VjY5WHBjNVlmMnltWk8wUloxVCtpZ1o0VGdoT0RvL1VUQnU2Ti9OL1hBMzBhNDBTT1FWZXFyQWQyL1NvTUhndXJPbXhHRWhucENBdVczNFVTTHFobGhNU1BnUm8wYnB0c3QzTzZYYWFvYmlWQ0VKTWllWTBERTAzaG0wSFU0eDg5ZHFYSkJSbUVTRGJpdXF5MWJwaXdNTHVIOVhBR2wzT1c3Y3N2NjQvWlJ3VnNvU3VPTStZcWZ1ZVFmTkZDcUp2d3ZVNkxUKzI3K0JoUG5aa0gzT3c5WjhOaFplaGFZbkpIRGJBNW9QQlhuUHl2T2ZsRTJERzh4RmthYkhtUkdJR3NqTWE4NStWNXo4cS9VUEZnbHcwMnBOa1pmSjN6NU5uSHZJQ2ZtRkIzVzYzN2JEYVBNNVlkSTIrV3krdFFGYkp0TjF0c1diY3g2Zm5QQXBYTk9vTGpzVEJEQnVCRWNRdWUwb1lJR0Z0b1VKMnJCTE1pTFFkaG5BcFlNbGFqZXUxQ2hpRmdYa0lTekx0U2dKZGtyRzdZd3dnNFowSHpOQXZSaUpIblNoQ0MyNjcvUkdzY3VYWWMwZnBqVGxMTWRodndkVnYyVWNJTkJyQ2NUK0E0eFZqMWxONWptSzIxYXRFV01kQmUwS2Z3MlFsWDZISU9oZURMUmRic2tuRHFLeC9IU2lKOUJadFJxMHk4eFBOSWNDdlNxZWxVOUtvYlFOaElHK3lHekRkZjdBRUdnVjZWVDBxbnBWTU5JRWp1Y1NnREZEZ1pBVVNXcmJ4WUJpdVZMUWxudkVhc2VCaDlTK1laNWg1dFNHc0RkRkx4c09YR2pVNS9CRm12UHU5ZWZkNjgrNzE1OTNyejd2WG4zZXZQdTllZmQ2OCs3MHlpbjY0TFdCdVFSMXR0Ym9OOVNVNlZHV0J2di93Qk8vOW9BREFNQkFBSUFBd0FBQUJENzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc2b01qZzR4dlAzNzc2bXB6eXl2emVwcjc3NzNqNVQvejVlL3o3NzY0cHY4QXZxLzZJRysrKyt2Yy93RC9BUDhBdGY4QXZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnYveEFBZUVRRUFBZ0VGQVFFQUFBQUFBQUFBQUFBQkFCRXhFQ0FoVVdGQlVQL2FBQWdCQXdFQlB4RDliTWRCcXpNRVVNejJsbjJCaEVScDJCYlVXQ1puaExCeEFweFBLSW1aUTFEOTJjUkR4ckFXb0F0MGl3aHNib0RUSHJwQVJqQ2pXaG01dEdvTXpMOVMvVXYxTDlTL1VYTDlqLy9FQUNnUkFRQUJBUVVJQXdFQkFBQUFBQUFBQUFFQUVTRkJZWEhoSURGUmdaR2hzZEhCOFBGUUVQL2FBQWdCQWdFQlB4RCtzYjMxOXVOWURvN3RQUkZVMEU4NXp2a29kVnZtTjdlNCtLdEpVKzN3N3pKK0dLelZiR0dSWXRWcVcvVEZnWXFCZFAzSUM5VWFGWVhRVkZ1WlAxSVVvMGNJWE5OOWlZNVFEbXlsSGgrT213M0JIaTJYQVN6T3g4ZjR1MTdqRkhrRmJGOVIrZ0lWdDVGdzhaKzR3cGcxRzZ2eUV2QkJPYlpFVWJoZVRZUVNqTngycXE0WVpuZVVWZGVKZnl1bjFHc3JRMUNGbXNxRlVVV1pucWZVYXdCVUxrZTRNSlM0TGJmbGpaeWNPQnk4N0wwS2pjeHFxd2J6dmIzbUs2YXpGZE5aaXVtc3hYVFdGUzE5Q1czbkcxMDVmMlAveEFBbUVBRUFBUU1EQkFNQUF3RUFBQUFBQUFBQkVRQWhNUkJCWVNCUmNZRXd3ZkJ3a2FIUi85b0FDQUVCQUFFL0VQNU52Y1U0WmtpNStBdEtRMEhyQlo3cWVlSnZtaml0QU5lZ3I5TjlVekdNQWpzc2FTR2t4QjZOZnB2cXYwMzFYNmI2cjlOOVYrbStxUE1VSnIvU2l4OCtub2c0b3FtQlBia3NER05zYktTRS9FUzB4VEhBMkZrU3VnRUlRU1dYaGNBc0ZXVmZUUjJDdDFGaEs3RlRKdEFwZUhTREN6SjNmdWhNRVRBdkhRME9MbTlsbzFnREprZWhnd1lORCt4RStXRGxBNzBicDU3b2NJa201a3B0M2Z0ckNNSUlSQkVRYVAwS1V3WFdXdWtPSWt2RDRIRmR3ZFBnbEwxakF1SlYrWStDWUxCVS9pd09BVjJ4WmdNaERBTVlQajFCdElnWWx2QktXL3lORkpCRzJwc20xREE5Z29xd2gyR09BWVQwa0paR25pa0p3MUIySndaQnZSaWJlaEFnN2lKMWx0aWtraUw4Z2prYU1CRlEvd0JuZndjKzdyZFBhWXNKSi92WFBObGdkOEJoYTdSOXNSSjNWSkhLeEd1ZVpGYjFkREVac0syckx6MFpDaW8ya203OGVoQ1Q0RVN0Kyt2S3FKTjd2K2s2QkxKVGRPSFdmaDl2eDNzYlJXZTQ5YU5PRVFoK2R1c2FOUzBFSS9RT1JveUlTbDNuMmhYZDR1b0dIeXFBUUd1VEphRkd6YTdZWkxhWTBtV2Z0ZHcwbDExekJiV1RKdjFEc3NuQ2twSkVkU0lDSmFXUzQ0ZkhReXIrR1RFbnRNOTllTTVkRERjZ0gxUXhFUzVLQ2IydUp6dUZNcVNEUzhTbkNMd2lsbFRBYkNyc283UE5oeVF2eHRGQktCUWhuc0xlRzNKQzlaejhJVjNkQkxLZTdZQ0NwckxSYXZGbTkza1RLVWdYTWtKbFYzVlorQis2c1RGWURZRmJXRGRGQWJBcE1HNG1RYktCRVJCSzRGbnVpRWllU21BRmRLOEo0UUhRelpzek5WeXkvQmNzYjZFbW1DUEo4Sk1pK1o2R2JOblBNMCt4Y3oyRkRVS0JkZ0FBNEtrYUNmT3dDOGFBU3RYcVk2U3Q0Yk1Zb3hBU0IrSjlnd1RGNWlJV21BdE1TVkRZb0tKM0N1ZG1KM1pvRWVKZ2J5WWV6NHYvQVA4QS93RC9BUDhBL3dEL0FQZ2dSTDZ4UWVpb2IwUlYvQmI4anNvQTNiRW1Nall3SlVxQ1ZqK1R2Ly9aIn0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTA0LTE2In1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wNC0xNiJ9LHsiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbImRjZjU5YjExYzRlM2M2ODY1OTljYjcyNzFlMzc2MjU0NWE4NjE2Y2QiXSwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiZGNmNTliMTFjNGUzYzY4NjU5OWNiNzI3MWUzNzYyNTQ1YTg2MTZjZCJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiU2VjdXJpdHkgS2V5IE5GQyBieSBZdWJpY28gLSBFbnRlcnByaXNlIEVkaXRpb24ifSwiZGVzY3JpcHRpb24iOiJTZWN1cml0eSBLZXkgTkZDIGJ5IFl1YmljbyAtIEVudGVycHJpc2UgRWRpdGlvbiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzYsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6Mn1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiLCJyZW1vdGVfaGFuZGxlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlEU0RDQ0FqQ2dBd0lCQWdJVVVjbU1YelJJRk9nR1RLMFRiM2dFdVpZWmtCSXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFEbTU1NWJXWTlXVyt0T1kwcklXSGxkaCthTmFub0NaQ0ZoN0drM1laclFtUFV3MGhrU0c2cVlIUXRQK2ZaeVMzM1ZFcnZnK0JRcW5tdW1nTmhmeEZya3dFWkVMZWlkQmNDOEM0QWc0bnFxaVBXcHpzdkkxN05jeFlsSW5MTkxGY1pZLytnT2lONlpPVGloTzUvdkJaTWJqOXJpYUFjcWxpWW1OR0pQZ1RjTUdhRUF5TXpFTU55Mm5tNkVwK3BqUDVhRjZnaTIxdC9VUUZzdUoxajJSai95bk0vU2RSdCtlY2FsNU9Zb3R4SGtGYkw5dnZ2MkEyT3Y1SVRaQ2x3NGJPUzlucHlwUWltT1o1UUFZeXRtWWFRcFdsL3BNWXo2elNqOFJxa1ZETkVKR3FOZlRLQTJpdkxZd1g2bFN0dE1QYXBnMEo4NGw5WDB2b1ZOL0ZwUzRWQ1ZBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlFnS0ZBaEc2UmFXK2hUeTUyZHhlVDhiQzk2SHpBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBWU16Z0xySkxJcjBPb3ZRbkFaclJJR3VhYmlIU1VLU21iTFJXcFJrV2VBdHNDaERFSHBYY0ovYmdETktZV29IcVE4eFJVakI0Q3llcFlldmMzWWxyRzhvN3pIeHBmVmNhb0w1U2V1Smt6SHhLbjRiVGFTcDkrTXZ3YW1ucDY0a1pNaU5iRkxrbmZQOWtZS29SSGtNV2hlUkoxVXNQMXo0U2Nta0NlSUxmc01zNnZxb3ZxaldDbEZzSnBCY3NsdVlIV0Y3YkJKMW40UndnK0FURW9wWTRJZ0d2Nlp2d2MrQTlyK0FUMmhxcG9Ta1lvQWwrQU5Zd2dzbE9mOXNKZTBWK1RBOVlZL1VsYUJtUFBUZDAvL3I5d3ZjZVBXWmtQaktvQUMvelVOaGZEYmg0TFY4R0hzM2x5WDJYb21ML0xOYzhKWXp5SWFERWhHUXZlb1BoaC90cjFnPT0iLCJNSUlEU0RDQ0FqQ2dBd0lCQWdJVURxRVJ3KzRSbkdTZ2d4Z1Vld0pGRVBEUlozWXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFESTdYbkgrWnZEd01DUVU4TThaZVY1cXNjdWJsdlZZYWFSdDNZYmF4bjlnb2RMeDVzd0gwbFhyZGdqaDVoN0ZwVmdDZ1lZWDdFNGJsMXZielVMZW1yTVdUOE4zV01HVWU4UUFKYkJlaW9WN1cvRStoVFpQLzBTS0pWYTNld0tCbzZVTGVNbmZRWkRyVk9SQWs4d1RMcTJ2NUxsajV2TWo3SnRPb3RLYTlKN25IUzhrTG16WFhTYWowU3dFUGg1T0FaVVROVjR6czFidm9UQVFRV3JMNC9KOVF1S3Q2V0NGRTVuVU5pUlFjRWJWRjhtbHFLMmJ4Mno2b2tWbHR5RFZMQ3hZYnBVVEVMdlkxdXNSM0RUR1BVb0lDbE9tNGNycHduRFJMVkh2alllUEdCQi8vcEV5enhBL2djU2N4andhSDFaVXc5Ym5TYkh5dXJLcWJUYTFLdmpBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlRxdDBLUW5neDdaSHJiVkh3RHVueE9uOWloWVRBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBcVFhQ1dNeFRHcVZWWDdTazdra0ptVXVlVFNZS3VVNitLQkJTZ3dJUm5sdzlLN0hlMUlweFowaGR3cFBOaWtLam1jeUZnRlB6aEltd0hKZ3h4dVQ5MFB3M3ZZT2RjSkpOa3REZzM1UFhPZnpTbjE1Y0ZBeDFSTzBtUFRtSWI4ZFhpRVdPcHpvWHZkd1hETTQxWmFDRFlNVDd3NElRdE15dkU3eFVCWnEyYmp0QW5xL05EVUE3YmU0SDhIM2lwQysvK05LbFVyY1VoK2o0OEs2N1dJMHUxbTZGZVF1ZUJBN24wNmo4MjVycURxc2FMczlUYjdLQUhBdzhQbXJXYU5QRzJraktlcnhQRWZlY2l2bEZhd3AyUldadnhyVnRuM1RWMlNCeHlDSkNrWHNORDA1ZENFclZIU0pJcytCZHRUVk5ZOUF3dHlQbW55YjB2NG1TVHp2V2R3PT0iLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVIzOG1xMjZTZjJzelZWMkJkRzZXRU43a3VXVXdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFSWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFOWTBXYjlvUG9Sb0tvUXlXUGFKcHoxMXZyV1RnNnpUdG1OajJWb0tSbnl2S0dScXB6YjgzdzVsNllBOTZVWWtZQkRRUDBpbE8yRFBlNndXcVZSNXpEZlJ6ZGNIOGJoK0w3ZEdHdmFlNmhSVFpoa0ZrQ3BYRHM0SGNja25yRGY4RkNsSjdIZTM5SmY0Mi9HMVFtMnp6OVdXbXJQWHRnaUsveDA1R2pzUWZHdURHMXpmNVFUVVVpZThsd3ltSzNUZmRPdk5lZUpBQVBlMnBuN0l0ZlJiK3JWck5XaUR6bFJuMnZObloyd1BvNHdIL1dKNmRoWFpHK3JNV1QrYTZCb2NnMVVmSXc2a2R1bkc0YlRwWnpzdmFjRll5UjBtcGYrRGVPbnBTV0FteXdKV0h2VGxmMllYeEZ5ZVhjVEFDZFFsY01OR0oyVmhaUTQ4eHRQNS9SQlAvOGtDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNoeTQyb2tpcWNUUzFpcWEvSFJXamtCbjRIL01COEdBMVVkSXdRWU1CYUFGT3EzUXBDZURIdGtldHRVZkFPNmZFNmYyS0ZoTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBbitSSElQYnRNRUROZFQxZzhIL1JpdEFrVWRMZ0F0MXRXR1dubGo5a25idjQvNEdsWDdDOXA0NWVmUE85L2FaTDZPVjFYUktCaTZLbXRCVzVLN251WUVuTXgvNUJxQlNiTFQ3cmhkdUM0OVRCZU1iOVBIZFhzVGxTVk5ZZWZyMWRHaWRyNGoweFZCUUxiMXJrbkRBYmRXRHpLZnZuYXlLTzhGcndlN0h4ODQzTUcvckorYzBYcnVVdmJmVlRDSExpSVdoTTdvTkRoTDh4b2I2eFVvOUtMS2NTTCtJdFlzTzMvOVdiOFE5R2pzcUw0RlhzRGNHMVNhWWg3S3BmdU1tT2l4cXpKWk8ybklpY1BZUmcxSTJTdWlVZllPNzB0bWRIY2JsK2tTUW1TWXQ3cnE0dmlJTGcyR3gzajlySVR1V1RqYmFVYVNTUXhnT21NU0h1eXpNQUMiLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVRuYmJHSVIyTkh2enFJS0ZBZVF3RzFYQmlzMHdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFRWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPc1hqM2swNEJhbjRUWWR0WktxRC9PUEp4eUR5YVBtQ0JVRlVpYVpJZ1R0ZVpuajNYMjVEaGdwWlpYc0M0RDB5ZEljcmxBNndOVUluT1JML0w5ekJiVEVJTUFWTUdvNmc3VUtBbWIyTUY2QUhibmhZSmQ5ZWlrdXBWTldTaEhOWU5jNEdCZE8xWU42QWZVcXZKaEhiZTNWNFNOTVBtQlJFS0pQVno3VGh3Z21nZ1RlOFdzMkswL3dzcXYyd1NFN3BiQ0JzVVpoSVg1MWJaTTNwcUR3SlBUbVJGRXZ0MC82dEc1ZU84RjNqMTRPWHFmRWhtam4xVnZ4S0RZUU9MWkF4Q3d3Z0MwUDRDZGZXdjN5OFBTUjhJMzU0aE8xWStHek5qdklxWDM4TktMeXd1SVlIRmVyT3hObHhFTUJ2RmhZQnVSdVlBa2tnVWFQcU42VUJoc0lMcnNDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNDb1JIaGl5Tm5iblhSV0lMNlpCWG9CWDlZVE1COEdBMVVkSXdRWU1CYUFGQ0FvVUNFYnBGcGI2RlBMblozRjVQeHNMM29mTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFDUUZhZkpJMS81V2c5Q0VFaW1FMVJQNTRSZ1F3VE5UT09Rc0xBQ1RlK3JJdGxGUXpDOVpEaHJWODI4eVg3anp5K0FBc3AzaXpLN1QxdGgyZGw3bSt0dTBzdzJQYS9vbGMwMm50NlB5SXczNDhnYUh6aEkxKzBLRTQ1cXh2RkRlTDJsTXhiUGZDWXZ5RUVhWXpqaVFFTFU1OTUxcFhHV3lLTWEvNGZMdE8rWktPWGhNdVZlcTRyWERQSTU0VzZKSE9pQWFpS2Rpdys1ZTNjMmt0L2pGSVF0TTZ2TVhnOUxORnpkakVUTnQyMFZYOVFldlJwRlpmdWNNRzl3Q2FRRG9GbFB6cFRNSktoUGV2L2ltSm1aWWhLZnIwbExjZW10cWpJeExBb3FaZE9ZZkhCZzYrdkFjZFBJL2lhdUdwVUF2N1grVUtObUR3aloyQmFINHNMd2hCMm0iLCJNSUlEUnpDQ0FqR2dBd0lCQWdJVWV4OW5UOXZ3Wk5YUzQ4M0xkaVlHZncyU2pTb3dDd1lKS29aSWh2Y05BUUVMTUM0eExEQXFCZ05WQkFNTUkxbDFZbWxqYnlCQmRIUmxjM1JoZEdsdmJpQkpiblJsY20xbFpHbGhkR1VnUWlBeE1DQVhEVEkxTURnd01UQXdNREF3TUZvWUR6azVPVGt4TWpNeE1qTTFPVFU1V2pBbk1TVXdJd1lEVlFRRERCeFpkV0pwWTI4Z1JrbEVUeUJCZEhSbGMzUmhkR2x2YmlCQ01pQXhNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXUxTWV2bnk5ZHlPOVpVQzM5U29NaExjUi9EWHJ0Ri9jaU0xMnRjaXkyRVhBWjZNa3JpdlZ0Q2ZFVk05WDZJU1RFbkJQNnVTWVlvdjZwcHY2TzZKaDJOSG1ZbTR3K0puUzRWbkNQVTdtSEFNZlZJMk1HVFRNVk9ldzB4VXNHN3NJU0lrSURVQm11azhZSzljNXppYzkrdkZRR0xJa3NkWE81aVZGSWdORzUzY0dYRDRaTFpvQVBpdTBQRW96eEFxWUlhSTRneEtoT0EzUzgvVzhtSVdzdTZvZnlqNEd2a0ZHNlo3a3lGMzEwN1A3bXdGSExySTNFTmFQV01PRmNUYUdhMGR3Ky92VlJ3alJjRVpCVnN1dVQvODdja1NzMGE1cGt0M3ZaQmxhWWVUOHB6U3JlVjdtb3djSU05MEwyaWFBVGxQMG54bWFFNm5PeVRib2pGVmwyd0lEQVFBQm8yWXdaREFkQmdOVkhRNEVGZ1FVU1hFaDNzYTNidER1cm00TU0vQzdTMWxSdXVZd0h3WURWUjBqQkJnd0ZvQVU2cmRDa0o0TWUyUjYyMVI4QTdwOFRwL1lvV0V3RWdZRFZSMFRBUUgvQkFnd0JnRUIvd0lCQURBT0JnTlZIUThCQWY4RUJBTUNBWVl3Q3dZSktvWklodmNOQVFFTEE0SUJBUUI1R2MzaGFmdHA3aEtzRVpzbytpL1o1blJ1cWRtekcyV0NsVW9SVXFiYVB5Z2xuSkRqS1Iva2ZnT2w2aWJiRi96dGhtM0ttWFE3SGNESVAyeE1kRzdVMkwyaW1iSlFIcVBmL2gySHFvamI0clpndWUrNlc0a3RTUjVlbFI5TDFyWXFFL1NHWU00aUVLb1ZRU3Y3UlQxcnhJZVdpS3N3L1Z4eGkvUU9uc3gzRjd4ODBDQ1lnQjRFM3lReDhWVFc0NDBoVEV3VEExZU1IT2l4MzJ0UHR5eUhJYThQVlZJZlZwSFFKQmFNVnZ2NTA4VUVqd2tiVTJybmpmem9TVE5TOUE1alVROG1CU3ZlOTVyakIwZG85OEVVK0R4ZEJxWDIrSDZpNXdsSUNGZ3poZHpjc25lOWhHS1Q2bHpUWDRjSWRKc3JZMit4bGVLMEZGUXk2bEdFVkxFZSIsIk1JSURQakNDQWlhZ0F3SUJBZ0lVWHplaUVESkVPVHQxNEY1bjBvNlpmL2JCd2lVd0RRWUpLb1pJaHZjTkFRRU5CUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTVo2L1R4TThySVQrRWFvUHZHODFvbnRNT28vMm1RMlJCd0pIUzBRWmN4VmFOWHZsMTJMVWhCWjVMbWlCU2NJWmQxUm54MW9kNTg1aCsvZGhLN2hFbTdKQUFMa0tLdHMxZk81M0tHTkxadWp6NWgzd0duY3I0aHlLRjBHNzRiL1UzSzloRTVtR05ENnpxWWNoQ1JBSGZyWU1ZUkRGNFlMMFg0RDVuR2R4dnBwQXk2bmtFbXRXbU1ud08zaTBUQXVjc3JiRTQ4NUh2R000cjBWcGdWZEpwdmdRamlUSkNUSXErRDM1aHd0VDhRREl2K25HdnBjeWk1d2NJZkNrenlDaW1KdWtoWXk2S29xTk1LUUVkcE5pU092V3lETVRNdDFid0N2RXpwdzkxdSttc1V0NHJqMGVmbk85czBaT3dkd01SRG5INHhnVWw1Wkx3cnJQa2ZDMS8wQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQjhHQTFVZEl3UVlNQmFBRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRTXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJEUVVBQTRJQkFRQzNJVy9zZ0I5cFo4YXBKTmp4dUdvWCtGa0lMa3Mwd01OcmRYTC9jb1V2c3JoenN2bDZtZVBNcmJHSkJ5SjFYbnF1QjVzZ2NSRU5GeGRRRm1hM21pbzhVcGYxb3dNMVpyZVhySjBtQURHMkJwbHFiSm54aXlZYStSMTFyZUlGVFdlSWhNTmNaS3NEWnJGQXlQdUZqQ1dTUXZKbU5XZTltRlJZRmdOaFhKS2tYSWI1SDFYZ0VEbHdpZWRZUk03Vm9sQk5sbGQ2cFJGS2xYOHVzdDZPVE1PZUFEbDJ4TkYwbTFMVGhTZGV1WHZEeUMxZzkrSUxmejNTNk9JWWdjM2lyb1JjRkQzNTRnN3JLZnU2N3FGQXc5Z0M0eWkweEJUUHJZOTVyaDQvSHFhVVlDQS9MOGxkUms2SDdYazM1RCtXVnBtcTJTaC94VDVIaUZ1aGY0d0piMGJLIl0sImljb24iOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJpY29uRGFyayI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsInByb3ZpZGVyTG9nb0xpZ2h0IjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwicHJvdmlkZXJMb2dvRGFyayI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTEyLTIyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJTZWN1cml0eSBLZXkgTkZDIGJ5IFl1YmljbyAtIEVudGVycHJpc2UgRWRpdGlvbiIsImNlcnRpZmljYXRlTnVtYmVyIjoiVTJGMTAwMDIwMjQxMjIyMDA5IiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMTItMjIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTAxLTEwIn0seyJhYWd1aWQiOiI3NDgyMGIwNS1hNmM5LTQwZjktOGZiMC05Zjg2YWNhOTM5OTgiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6Ijc0ODIwYjA1LWE2YzktNDBmOS04ZmIwLTlmODZhY2E5Mzk5OCIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJTYWZlTmV0IGVUb2tlbiBGdXNpb24ifSwiZGVzY3JpcHRpb24iOiJTYWZlTmV0IGVUb2tlbiBGdXNpb24iLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MiwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjowLCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjowLCJibG9ja1Nsb3dkb3duIjowfX1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRGRUQ0NBbDJnQXdJQkFnSUpBSUNVVHZrZ3RqNUNNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1GRXhDekFKQmdOVkJBWVRBa1pTTVF3d0NnWURWUVFLREFORVNWTXhDekFKQmdOVkJBc01Ba05UTVNjd0pRWURWUVFEREI1SFpXMWhiSFJ2SUUxMWJIUnBRWEJ3SUVaSlJFOGdVM1ZpWTJFZ1EwRXdIaGNOTWpBd056QTNNVFF6TnpFNFdoY05NekF3TnpBMU1UUXpOekU0V2pCUk1Rc3dDUVlEVlFRR0V3SkdVakVNTUFvR0ExVUVDZ3dEUkVsVE1Rc3dDUVlEVlFRTERBSkRVekVuTUNVR0ExVUVBd3dlUjJWdFlXeDBieUJOZFd4MGFVRndjQ0JHU1VSUElGTjFZbU5oSUVOQk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBdkFLT2VxQzUvcDBEMWlzQ1lLUUpsVlVPckI2STdETG9jdW5FL1JtOGR1R1RieXhRaHQzQ2JGVlR2M04yTHAyZmJqeGxJKzNzT1NHazMzRlRZa1RxeGNkSklySjdTc2tCY1VTTnJmS09hUVQvNktRY1A0Q203Vis2NTVUcStUV3h5eFdRaER5Z3QxNXFvUDdNdUs2YlQ5U3dwQ2pwZktoYU1TbXlRYU1vVWNSQWJMcWR6QkNhYzBoekIrWmUrZ3FKbG5XVjlVYVNJMnJGc1Z1SDRaRTBjUk8rTU9wYUxnTS9zMjQ4bkdHSHAyMmV3U1FmYm5QYUJiYjhpcXlBUCtjdTUyR0xzVXBLUkplYkUrUjYrUE1ROUpDZFdlUVpSM0RrZlNpZGt2M21jYjRqcTFpSXRhK01xS2hSbndyZlhoOTExS1dMbllBbDlFTkNoTFgwYzZTajFRSURBUUFCbzFBd1RqQWRCZ05WSFE0RUZnUVVXTHZoUkJVUG44dUxJZjY4K2d2L05aSXdHU0l3SHdZRFZSMGpCQmd3Rm9BVVdMdmhSQlVQbjh1TElmNjgrZ3YvTlpJd0dTSXdEQVlEVlIwVEJBVXdBd0VCL3pBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQUZMckRoYWVnZUtIeFlqSDNFUDN2VUJLaG56TTIwNkFTeGdlWUNPMkVjOXBPbFlKYWVxRkUrc1VhbVVWL3B3akRscU5hU2dGZ3k3VHdlWWt2T21NbjRxU2NzSHF2SjN6R09BaWFmd2FoMXZVSGZDbFhSOCtheE8yaUdPVUYwSktyWjlZWWpiQWE1LzRIQ2x2N2pGUE9kTVdUT1F5bmdvaUhBczNqa3VZanBDTEZsQjRWT2kzZDF3akExcG5UZEJLa0FiN3Q4blR2dysvWGJGdmNRYTczVkg3c2p2b0JxRDNmZE1mUmN1VnE0cVVadFpUNmNHYWdUSEQ2MVR0cWg5b01DWlhjRGJSMVBHWm5OYnF5Y3NXUERJSzBucG1LMy8zbGZWOGMrWnNyeTZlMTcwbWZKTVpwN084bTZDU3o2L1ZMSyt5REpkNzg0MXdwbWVLVGY2SW5aQT09IiwiTUlJQzZUQ0NBZEdnQXdJQkFnSUpBSmJUeXJ1MVgvSVBNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1DTXhJVEFmQmdOVkJBTU1HRWRsYldGc2RHOGdUWFZzZEdsQmNIQWdSa2xFVHlCRFFUQWVGdzB4T0RBMk1USXhORFExTlRCYUZ3MHlPREEyTURreE5EUTFOVEJhTUNNeElUQWZCZ05WQkFNTUdFZGxiV0ZzZEc4Z1RYVnNkR2xCY0hBZ1JrbEVUeUJEUVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTVZqS0hXcGJEN1RTbE14b2NqVGw2bklmN3gzMlBtc1E5ekd1TEdHcUEwVVFab0lxM1hMekw2TFlVdko1QTVnMHV5RkdsbEhFZkdBS3JFYUNROEZWdlBTL1VoMEZ5ZnpXaFJBemlUU2lqak1JSVZqampVdjltOXZGbWNYU2NnSGlnN09kejg4NThWMGtyTkg5OXFHbTN3amdhT2VyVFdtdCtqWENVZm4wMUlrVFB3eEcySGxnRWQ0NWpOTFNWN1Zvb2wrS2U4RTJraTRsRWtUZUh6Ym91bFI1R1VicDNuTWk3RTQ3Vk1RYTNiTndueldCYnNhQlNTUWhMazNtNUhhS2hoeGE2d0pESzQ3TmlNQ2tDa2RJSHVXU1FMVkFmbTg1VUFPTnRFT1B3aTBPdUszcWJlOHlLT0ZHZjBLaEI1TU1lQXltN01WL000VzBhNDlvZ1BEOXBNQ0F3RUFBYU1nTUI0d0RBWURWUjBUQkFVd0F3RUIvekFPQmdOVkhROEJBZjhFQkFNQ0FvUXdEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBSld6NXhMTWs1V05ZYkFiNnlPeEVDQm9aMldlQi9xbDRWSjNPLzMvdE5zeE9ZbnpMZVdvNTQwelFoOXJBbWF4ejdldW1CbHNrTXE0eUdQU05YQjl5Y1dHSGdrY0NlU3pOMnd2OENJekRCczJvQlpqVE5rNjVMQlpEc3NUT0J0TVcvK3VURkhRZmJ1TzNJU0xoSTBEWGZSRWk5TkRNM2pmazExeEhjc2ZoMlJNVitRZE5md1ZhWlpyQ3Erb3VHK0V2a3Y3S3FxK295dTBWRk0vdHo2OFRHbDZ5bGhQRlIxcWg5d3R0cFZqQU9PQ0VRQ0xxUDJkUDI4bHdZQnlDcUhRcVZId2J1anYvTFpqWm5LVzNMWW5kWml4UFBTUkNKc3NERHdKdmgvZjZuVHhnOVpFKy9KY1lyZTVDYUk4bnpWSGFTT0NqTko3RnpVTEc2NEppV092UTUwPSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFRd0FBQUFnQ0FZQUFBRG5sVVpxQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUVuUUFBQkowQWQ1bUgzZ0FBQUFaZEVWWWRGTnZablIzWVhKbEFIQmhhVzUwTG01bGRDQTBMakF1TWpIeElHbVZBQUFLMUVsRVFWUjRYdTFkRFhBY1pSbStOT0FmS29nNldPMFFjcmVYM083MVI0MW9IZFNxcURBT2czK2NZRVhCb2xYUlRFbjIyMHRhS1RjNjRtZ0JxekJpRVVWcEJkcWl3d2hxU2RJUzJ1cFlTZ3ZSdHBUU2NrbGpXekhhZ2pwU1JkcjR2THR2anJ2azI3dmR2ZDFMam43UHpETjN0L2QrNy90K2Y4Lys3OGFLME5EYWFyMnFPZFhab3FXeUg5UjBhMEZjdDY3V2RIR1Rab2pWQ2NQcVNlalcxb1F1SHNPeS9lQlRzRG1NLzU0WlQ5aitMV0dJZzdEZkIvc0JjRFBzZjRYZlA4WDNiMnVHMVpIUXpVOG1VdUtkeVdUSG01cWFjaS9qSEFLQnlpZjBiQnIrTHdhWElQWVBrTWRxZkw4WGRXcGxzMUFBMzEvUWpPdzk4TDhTOWI4QlhJUjIrbkRjNkRvemxzazBzbG5rUU14a1BHWE85RUp0Vm5ZR0Y0c1V5Vm5kOFVUYWVwOGJ3KzZMYWtCajVpemRiTkpTMXJ4RVdueVd4ZzM2RW1QZFdvUFBEZWpmN2VBVEdNc0hhRHpUdUM2aGJqME4vcFhtQXNydWdzMFdMUDhOdUJKalpKbVdFbGNsMDltUEoxSm1XMHRMNSt1aUhCdUdrWHNsalg4N25pNEV6Vm5rOUF2a3NRbjU3RVNkaHJCOEJNdVBqT1dQLy80T0hzUi9lN0Q4WWRUbGZ0UmhGZmdkTEc5SHUxd0FmenI1NWpBT2tpUUtodlZiR0I2QzAvL2krMmlOZVJ4OEZnbnZSZnhmYWluelNrN05FMGlJVVBiZjQzd1dtTlROZDdCcEtFQTdMWmZGQVk5enAzeVpUU01EaVFWaS9VK1NnNVFZQUlmT21HMmV3c1VqQS9yaFc3TDRCZXJtajloMFVvQjJPQitUWlRXNEIvazhPeUcveUNpT29XMUlZSDZIOFhQejlMYmNLemlsUUdocE1admhaeUhHd0czZzQyQms4NVo4bzkwRzhYME5pU3MxSXYyUUdrOEtkV3N6dDRzbklQOFJxUjltRFFYRElkWlNiQm9aMElsM1MyT1haWFlwRjQ4TVUxNHduSzFiZVc0MXBMM0ZFUUNKbFBWV3RERzJmdXlWck5SM3RCVGRTakI4WXJJRm95VnRubzJPQ3pCZ3hETkJCNnBYS01Id3hpRDlnSzNLYzZQY2t2QkdKUmkrTWNtQzBZRDRmZEs0WG9oOVcvWVRDWlJnZUtOdndjaGtHdEcyZTJXK2Frc2xHTDR4bVlKQmF4bHBUSStrTlJRZG1HUjNvVU1KaGpmNkZRdzZjQ3J6VTN0Q01MRFd1UXNkM1IrQXczS25CUTVLeW5qaGpkeE9ubkRpQ0VadUdqcnNZV2xNSnRwaVdVSzNCbVQvRmZFdWRoZzZVUGU2Rmd6MGJSNmZhNk1tblkza2xEd2hhWWpMVVU2ZXMyN3QwZ3p6bTdWZ1V1OTZENmZrSHhDYTYyVVZHQ01xOGcwMmpSUW5pbUJvUnZZaWFUd20ybnRmVzl2Q2s3VzBkWUhzL3dKMTYzazZlTVp1UTBXOUN3Ykc5SzFzT3FXQXZJVTBYNXRpRFp0TmJTakJjR0VFZ3RIV2Rzdko4RTJuQXVVeGlicDVoV005Mm9EZjJ5YjhYMEt4M3JFTkYwb3dvZ0htMGhKcHZqYVZZUGpDaVNBWWliVDFlV2tzSmliQ2svUG01VTVpYzhyeFFwbGRNUlBwN0hsc0hocVVZRVFESlJnaDRzVXVHSFNSRCtwSVYrVEo0eEgxTEc5ZGpDSFRpTWxSNFZpRzJFN0hSYmhBS0ZDQ0VRMlVZSVNJRjd0Z29KMnowamhNdEhPZWpsMndlUUZZL2xHWmZTbkZmRFlQQlVvd29rSENNQmRMODdXcEJNTVhLZ3FHSVM1dlRwdG5oMFhVKzA1Wm5BSkRGQXpENkRnZC9wNld4bUhHRGZGRk5oK0gwUWIwd2FPeU1tT0UrT1VOSS9jU0xsQTE2bDB3MEY2NzQ3cTRwUnBHY2RxYTdrdVI1VXRFSDQ1Z0Rtd0tpL0RaajgvN0lFUzM0ck96ZWFhWXpXbFVoM29SakpvelJNR29PQUVOYTBpMmRUR0dlRXA4VEZKbVBEdll2R3JVdTJDRVFicWhrc09GQnN5bGkyV3hhc1RqNk5kMTJwc1h2NTdUQ1FZbEdDNE1TVEJhVzYwM29vMWRiNnF6cVZ0ZlluTTU2QXBCdzlveG9Wd1JNWWxHTkszOTFWeWlLaWpCaUVZd21sUGRMYkpZdFNUYTdxSGlBK3Urb1FURGhTRUpCdHB2aGRUL0dIV3h2OXpXeFJpMHRQaUV0SHdKeGJWc1hoV1VZRVFqR0hSd0d1T2gwZ1Y1a1RPZU1pL2hoUHhEQ1lZTFF4Q01zMXF0Vmd6dThyZXZweXlQandId3NwVmgvU3VWV2pLZEN3U0dFb3lvQkFPNXA4MzNvcCtlazhXc0ZkRit3YThTVm9MaHdoQUVBMzdXVFBCYlJIVGNBZXhHdkpUTkhmUU1OY2Y2QnMrUDllYm54ZnFlUEpXWDJrQ1p6SGdmRXhqQ0dRSWxHTkVKQnNGK0VKRXVkc3ZpMW9iaVQ1eUtmOVNOWU9qV1pqVHlmYUhSdWQ5QUhvdFlwV0E0TnhxSlkxTGZUTlQ1SzJ3ZWk2MGZNaUFVRDRLakJmYm1qOGI2OHN0ajJ3N2FEMnFoZlUvMHh5NlpyekhTMnF1bHBUTmwrd3lJdWhjTWpCVTY2MVFObTJjdVBvUERSWVRSQmpwYlIyTUFPVjlIWnpPUTk4L3cvZll3aVBIdGZqZTBidjJGay9DUGVoR01PcnNPby9MdDY3bzFYRGdWdWlFL0J3THhqeEt4S09YRzJNNmR0aTM2dzhPUmRuR1A3VGNna0Z1ZEM4YlV2QTZqbGtpa084K1R0ZzJJTVhTWXpmeERDWVlMcXhBTUw3ZXZvNzd0dG5GLy8wbllrdGdoRVlseEhMcWF6SjJ0akVxYnM5aXlTV1huMnY0RFFBbEcvYU9zWUJqV0FUYnpEeVVZTGd3c0dMbHBLTHRWNnBOSkhWWjRZSExmL25mSkJXSUNoMkhkUUVYaTZld2xNcjhsZEo1SFl0djdoUktNK2tjNXdVRDc3R1V6LzFDQzRjS0FndUhwOUdkS1hNWG1FSXg4dTBRY1hQallhKzB5bVV3ajJ1dHhxZThpb280WDJ2WStvUVNqL2xGaGwrU1BiT1lmU2pCY0dFQXc2SG9LN0E2VW5jaW81OEdtcHN0ZWVCMUQ3OUJYNWVJZzRmM0RwM09wR09MTWwva2Z4eDJ4ekZyZmo4VlhnbEgvcUxCTHNvWE4vRU1KaGdzRENFWWlWZjcyZFdicEpkdzkrODZSaXNONDlnN3VoM1ZoRjRQRjZRbUovMUxxMWdJdTRobVZCQU1UOXU3eDcwd0pnL1RZZlU2aExKUmdWRWFGWFpJSDJNdy9sR0M0MEtkZ3pKNXRuZ0tmQjZTK21Qai8wSXdaSFMvbklnNUdSeHNoQmdOU2tTamxZaTVSQVBydVVsbWNZbUp5L1huRzNIRXhLNkRpRmtaRXhCall5Q21VUlNYQlFEdVBvQTVibzJiU3lMNmRVL0lFM2lxVW5nWU5tMmdEMTdOMCtHOFZwK1FmU2pCYzZGTXc0cnBsU2YwVUVURk5OaTlGei9ETVdHLytpRVFrSFBibU44UzJiWnQ0K2JoemowbjVKM2lCZEZzMWwvQUUxTDJ1QmFOV1RPcmlBNXlTSnlEdjc4cjgxSnllcnk2V1FBbUdDMzBJUnRPYzNHbG9wOE5TUDJQVXhWTmwxL1RyOHEyeHZ2eDY4UGtpc2ZnbmZsOGY2eDkwZlFVbDRuNUdHcStZdWpoeTVxenUxM0NSaWxDQzRZMTFLUmowV2tndEYvd21SU1VZTHZRaEdGNG1HQWFMWVBQeTJEZzBQZFl6OUg3c3BzeU45UXhVZkMwaVhmeUZQdG9uaTFsTUdxeGNwQ0tVWUhoajNRa0d4Q0twVysvbWRJSkJDWVlMUFFvR3ZZUWE5dVhmNzFscDY2SktsSHQ4L1FzVVIrMFhUWHVBRWd4dnJBL0JvTGZyMlFmSHIvR3psZW1LS1NNWXVua0hUU3pFbEw0K3NGYUNnZm8rQis3V2pPem4yTFFzbk5jR2lEMVVUdWJQb2RuRjVwR0F6cGdndnV0V0J1cjZIN3RPdXJpVWk1UUZYU1dLTXQvSEJONUVheVhVcit3OU1jRXBqdkdLNHZmSWJ3VmR3OElwbEFXTkJaUzVEdldoTjVYbjRlZG9xZDhvaUZ5eDJ3aytpdS8wSXVpbDlLd1RUc2tUNG1seER0cnpSbTVYalBVbzJwWGU2RzQ5Z2p4dncrZkNoTkdoY2Zod1FDOWphVExFRzl4b0dGZVd2aVkrVXVTbTJRK2NvWGR5Nk5ZaU5Pd3lWUHJIR0JoM0pvenVVQ3NlVDVtWFFmRi9qaGcveE9mWE5kMjhnam8wYUgzcExBbE5OR2R0TDVZaTU1dlFnYmVqNCs2Zy85Z3NNcUFPSDNIYVNmd0ViWGNEdm1lVGh2VXBUZTk2eTRRek03NlFtOVkwWjlGcGRQY202dk5wc0F0OXN0eHBPK3ZYNEViRTIwb1RDY3NHU29ubCtCL2Y2V2EvVmNWNTBhU1B4N3RPRGVFQnhnMTB4eStka29YZ2ZBZ3hGaURlMTlBTzMwTS9yRVFPOXlMbUE0aS9CYiszbCtibmtQSUhONFByVUwrMStGd0IyMnZob3gxaWYxRzgxWHBidkEyNVpqSytyMmx4UjI0YTFkOFJQekVmdXdvV2NzRVdpSk16WWorSTN3K1Z0S3NoSGdIL0FQWlNucWpUemZpOHhoNjd1blV1UGRyQTI4TnhZckgvQXozdEk0ajUrVE9MQUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIl0sImV4dGVuc2lvbnMiOlsiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiNzQ4MjBiMDVhNmM5NDBmOThmYjA5Zjg2YWNhOTM5OTgiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjp0cnVlLCJ1cCI6dHJ1ZX0sInBpblV2QXV0aFByb3RvY29scyI6WzFdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIyLTA4LTE2IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiU2FmZU5ldCBlVG9rZW4gRnVzaW9uIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyMjA4MjIwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMi0wOC0xNiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI0LTA2LTE4In0seyJhYWd1aWQiOiIxMTA1ZTRlZC1hZjFkLTAyZmYtZmZmZi1mZmZmZmZmZmZmZmYiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjExMDVlNGVkLWFmMWQtMDJmZi1mZmZmLWZmZmZmZmZmZmZmZiIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJFZ29tZXQgRklETzIgQXV0aGVudGljYXRvciBmb3IgQW5kcm9pZCJ9LCJkZXNjcmlwdGlvbiI6IkVnb21ldCBGSURPMiBBdXRoZW50aWNhdG9yIGZvciBBbmRyb2lkIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJzb2Z0d2FyZSJdLCJpc0tleVJlc3RyaWN0ZWQiOnRydWUsImlzRnJlc2hVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZWQiOnRydWUsIm1hdGNoZXJQcm90ZWN0aW9uIjpbInNvZnR3YXJlIl0sImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWxlc3MiXSwidGNEaXNwbGF5IjpbImFueSJdLCJ0Y0Rpc3BsYXlDb250ZW50VHlwZSI6InRleHQvcGxhaW4iLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQ216Q0NBa0dnQXdJQkFnSUpBS0JFd1NkME9GWE1NQW9HQ0NxR1NNNDlCQU1DTUlHaE1Rc3dDUVlEVlFRR0V3SkpWREVPTUF3R0ExVUVDQXdGU1ZSQlRGa3hEVEFMQmdOVkJBY01CRkpQVFVVeEZEQVNCZ05WQkFvTUMwMXZkbVZ1WkdFZ1UxQkJNU1l3SkFZRFZRUUREQjFOVDFaRlRrUkJJRVpKUkU4Z1VtOXZkQ0JEWlhKMGFXWnBZMkYwWlRFbk1DVUdDU3FHU0liM0RRRUpBUllZY0dsbGRISnZMbVJwZEhSaFFHMXZkbVZ1WkdFdVkyOXRNUXd3Q2dZRFZRUUxEQU5TSmtRd0hoY05NakF3TVRFMk1EazFOakl5V2hjTk5EQXdNVEV4TURrMU5qSXlXakNCb1RFTE1Ba0dBMVVFQmhNQ1NWUXhEakFNQmdOVkJBZ01CVWxVUVV4Wk1RMHdDd1lEVlFRSERBUlNUMDFGTVJRd0VnWURWUVFLREF0TmIzWmxibVJoSUZOUVFURW1NQ1FHQTFVRUF3d2RUVTlXUlU1RVFTQkdTVVJQSUZKdmIzUWdRMlZ5ZEdsbWFXTmhkR1V4SnpBbEJna3Foa2lHOXcwQkNRRVdHSEJwWlhSeWJ5NWthWFIwWVVCdGIzWmxibVJoTG1OdmJURU1NQW9HQTFVRUN3d0RVaVpFTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFQ1dlcDhXYkF2T0ozbFRCemk4N2YvQ29ZNVgwSFQwM0liMk8xWllqM2ZmTkJqZ1RxV3NPYjZNSVI0dzdLbTVrVlhENThkR3loOTV5d0lERFJMUWdjNEtOZ01GNHdIUVlEVlIwT0JCWUVGT1lOUHhKVW1NOHZxZXFNNHBkMFNmdTNNOU5OTUI4R0ExVWRJd1FZTUJhQUZPWU5QeEpVbU04dnFlcU00cGQwU2Z1M005Tk5NQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdDd1lEVlIwUEJBUURBZ0VHTUFvR0NDcUdTTTQ5QkFNQ0EwZ0FNRVVDSUFscWdOZnh6QVBtSUQ0c1F3b09hdDROQ2RMZmdaZlQralNLbVh2WXZEVHVBaUVBKytsU2NBZ0VBRDFNZWMxUWhvZ2U0eWFzcDBGMmZNWWNOeXhvSzlyb0dVWT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBTWdBQUFESUNBSUFBQUFpT2puSkFBQUFCR2RCVFVFQUFMR1BDL3hoQlFBQUFDQmpTRkpOQUFCNkpnQUFnSVFBQVBvQUFBQ0E2QUFBZFRBQUFPcGdBQUE2bUFBQUYzQ2N1bEU4QUFBQUJtSkxSMFFBL3dEL0FQK2d2YWVUQUFBQUIzUkpUVVVINGdNQkRTSTNmNU45NEFBQUdlRkpSRUZVZUY3dDNYMXdWTlhkQi9Cenp0MmJmY2x1U0VnSUVwSk5FQ1hRSUFSQ1VMUSsrRmFuaXBTcXJiYVdjYlJUSEtzejlvKyt6ZlNmcDUzcDAzL2FweDFtMm1mR2d2V2xxSFdxZGlyRmw2S1dDaUtRaEpBSVFoQklza2t3NzIrYjNidTc5NTd6ZS83WVpOMkU3TjZYdldlemE4OW5uTTQwbkp2czd2M3V1ZWVlZTE0d0FDQkJzQnZSS3lBSVZvaGdDVnlJWUFsY2lHQUpYSWhnQ1Z5SVlBbGNpR0FKWEloZ0NWeUlZQWxjaUdBSlhJaGdDVnlJWUFsY2lHQUpYSWhnQ1Z5SVlBbGNpR0FKWEloZ0NWeUlZQWxjaUdBSlhJaGdDVnlJWUFsY2lHQUpYSWhnQ1Z5SVlBbGNpR0FKWEloZ0NWeDhJWUlsVmduSVBRNjlBam1QMHRpaFE2QnA4c2FOcEt3TVlheDNnSkFOZVI4c05qb2FPWENBOWZmSERoNTBiTnhZY01NTjBvb1ZJbDRMTHUrRHBiVzNzOEZCeEJqdDZhRzl2ZXJSbzg0ZE81eTMzb29jZWYvVzhscCt0N0VnSEk2ZE9JRlVGV0dNQ0VFWXM2R2h5RXN2UmQ5NkMxUlY3MmlCby93T0ZyMTRrVjY0TU92Q1J3Z29TdVRWVjZPdnZRYVJTT3BEQmI3eU9WaU1xUzB0TURVMXQwV0ZNVVNqa1FNSEluLzVDd1NES1E0VytNcmpZTEhCUWJXdGJmNTJPc1pJVmFQLy9LZXlieDhiRzV1bmdNQlpIZ2RMalRmYlU5MEFZb3dBWWg5OG9QenBUMnhvYVA0eUFqZjVHaXdJaGRRVEo1Q202UlZFYW5OemVPOWUydHVyVjFDd1U3NEdTN3R3Z1Y2NlpMQy9TanQxU3RtemgxNjZwRmRRc0UxK0JvdFN0YWtKUWlHRHdVS0VhT2ZPaFo5K1dqdDdWcStvWUkrOERCWWJHTkRhMjQybUtvNFEydDBkL3VNZjFaTW45WW9LTnNqTFlLbW5UckhoWVhQQlFnaGh6QzVmVnA1OVZ2M29veS9hYzJ0S1lYSVNwcWIweW1WUC9qMzNnS2twdGFrSlVZcUkrVzhGSVd4d01QemNjKzVvdE9EbW01RWs2UjJRMnpTTmRuVnBGeS9Tems3YTNTMnZYKzk2NEFFckh3c0grUmNzcmFPRGRuV1pycTRTQ0lHSkNlWFBmNGFwS2VkWHY1cS9qeFRaMEZEMDdiZGpSNDVBTUlnMERRRmdsd3NpRWV6eDZCMmFEZm4yc1dxYTJ0UUU0WEJHMzB1TUlSU0t2UG9xS0lweiszYnNjdWtka0dNMFRXMXRqZno5Ny9UaVJRU0FNRWFTaEFCWWZ6OGJHNU5Fc0N5Zy9mM2FtVFBXcTZzRWpDRVNpYnp4QmtTanJudnZ4WVdGZWdma0N0YmZIMzNycmRpUkl6QTFGWC91UHYwUEdFTW94QUlCYWZueXRMOGdTL0lzV0Zwckt4c1pzU0ZZYU9heHo5dHZReWprL3ZhM2NWR1IzZ0VMVFZWalRVM1IvZnRwWnlkQzZNbzZHNkpSMnQwdGI5a3l6N0ZabDAvQmdzbEo2ODMyZVdHTU5DMzJ3UWVnS082ZE8wbFptZDRCQzRiMTkwY1BISWg5K0NHRVFtbmVQZzBFSUJMSmhZdDdQZ1ZMTzNlT2RuZmJVMTBsWUl3WVU0OGRRNnJxL3M1M1NFV0YzZ0ZacDFkUmZRNWoydGNId2FBSWxobWFwalkzUXlSaVczV1ZER08xcFFYQ1lmY2pqMGpWMVhxbHM4ZGdSWlVBazVQMDhtV3laSWxlUWU3MFgydU9vSDE5MnVuVE5sZFh5VERXenA0TlAvMjAxdEdoVnpRclZEVjI5R2hvOSs3b3dZTkc3NEl4QmtWaGdZQmV1V3d3OEhKemc5cmF5c2JHT0FZTElZUXh2WGhSMmJ0WFBYVktyeWhmckw5ZmVlRUZaZS9lNlFmdHh0ODFZN1M3RytYQXNPejhDQlliSDFlYm1oQmplZ1V6UmdnTkJKUm5ubEdibXhmbXNZK0ZpaW9aeHJTcmk0VkNldVc0eTQ4MkZqMTdsdlgybXZqaVpvSVFOalFVM3J2WEhRb1YzSHl6NlZPYkFiTXRxbmxnek1iSDJjQUFLUzdXSzhwWEhnUUxZckZZVXhPdlp2dThNSWJ4Y1dYZlBsQVU1eDEzWk9HeEQwU2o2dkhqMFRmZnBGMWRDS1c5OVVzUFkxQVVHZ2c0YW12MWl2TEYvU1BMSE92cm8yZlBacW02U3NBWWdzSElLNjlBSk9LODZ5N3NkT29kWUIzdDY0dnUzNjhlT3dhS1lqMVNDYXBLQXdIRW1BMi9LZ041RUN6MTVFazJQcDd0WUtIcGIzL2s5ZGNoSEhiZGV5OTJ1L1VPTUEyaVVmWFlzZWorL2RNanAyMkpBc1lzRUlCd0dIdTlla1U1eXZWZ3NiRXh0Ymw1d2I1L0dLTllMUHJXV3hBT3V4OThFUHQ4ZWdlWVlITkZsWUF4SFJoZ0l5T1NDRllhMnVuVHRMZlgrdWNldjdQTHBMYkRHS2xxN1AzM1VUVHErdGEzU0dtcDNnSDZ1RlJVQ1JoREtFUjdleGUycHplbmd3V3htTnJjakdJeGl4ODlnRlJaQ1lxUzZYUHIrRXl5STBkQVVkd1BQMHpLeS9VT1NJZFhSWlVzRnFOZFhlaW1tL1RLY1pUVHdXS0JnSGJ1bk1WTUFHQ24wM252dmRqdFZwNS9uZzBNV1B3OVNkVG1aZ2lIM1k4K0tsVlY2WldkQjkrS2FqWWFDSUNpOEdnWEdwVFR3VktibTJGaXdtSWdBTWp5NVk2Nk9sSmNqSjFPNWZubmFYZDNwdWNTWSszTUdXWFBIdGZPblk1VnEvUkt6NUtOaWlvQlkzYjVNa3hPTG1Dd09ML0RETERoWWZYa1NldmQzNFRJbXpiRit3a2RkWFh1WGJzY3RiVTI5TjBUb25WMFJQYnRnL0Z4dmFMVElCcU4vZnZmNGQvOUxuYm9VTlo2NHlBWVhOZzV1dGw0azlab1o4N1F5NWN0bmdZQVVsSWlOelFrZnVDNDlscjNybDJPZGV2U0hHU0MyNDBLQ3ZRS0lZUVE3ZXBTOXU1Vm5uMlc5dlNZZStxWENZd2hFcUVMK2pUYTBtbmpEeUlSdGFuSitzTlVBTWZhdFhNRzZVcFZWWjdISHBNM2JVcDFrRkd5WExCNXMrNmNCVkNVNkx2dmhuYnZqaDArbkxXSzZuTUF0THNiWWpHOWNyemthQnVMZG5kckhSMFd2OThBMk9XU04yMjY4bEVNV2JMRS9kM3Y0c0xDMk9IRGlGSXJ2NTh4YWZseTNacVBkblZGOSsrUE5UV2hhRFRia1lyRG1QWDJRaWlFamRXc3RsdUk5NndMUUcxcGdXRFF5b2xIQ0FFUXY5K3hldlc4LzBoS1N0dzdkenJ2dkJQSnNwVUdITWFPK0NxNnFVRTRyTHo4Y3V6SUVlc2RKWE5ZZUowSXNiRXg5dGxuZXFWNHNlTnQyNDBORDJzWk45dlRUSTdBWHEvcndRZGQ5OXlEWFM1emZ3VUErM3h5UTBQNnhHTlpKbDd2OU1Tc0RBRWdoTERiYlRxZ00wK2o5Y3J4WXZMbFpvWFczazc3KzAxL2xIRUFwS3hNM3JneGZTbnNjcm51dTgvMWpXL2d3a0lUMlFKdzFOYnE5MmpMc2xSVFkvSDFKMk1NTzUwRlgvNnk2NkdIc050dDRuWEdhUnJ0NmtLVTZwWGpJdWZhV0tBbzA4MTJheWNHd0ZGWEp4bVpFeUhMenJ2dXdsNnY4dkxMTUQ1dTZNL0pzdHpZYUdTcUFxbXN4RzQzS0lyRlNnc0FJU1Q1L2M1dDIrUXRXMUFrRW52bkhXcDJhUWFNYVU4UGhNUDJQdUkwS09lQ1JidTZ0RG5yMVJvSGdEMGV1YkhSNktJTWtsU3dkU3QyT3BXWFhtS0RnenJaWWt6eSt4MXIxNllyTTBOYXZoejdmS0FvZWdYbnd4ajJlT1RycjNkdTN4Ni9zUVZDaU45UEF3R2o3eXNPWXpZOHpJYUhKUkVzQktBMk5VRXdhS2ordUJLQVZGMXRyazhjWTNuTEZ1UnlSVjU4a2ZiMHBQdTdHTXNiTnhwOENJMTlQbEpSWWZvNVVyeWl1dnBxNS9idDhxWk5pUnM2TE11UzM2K2EvVXppVDZON2VxUVZLL1NLMmkrM2dzVUdCOVZUcDh5ZGpHU1NKRGMwV0tqNTVRMGJzTnV0UFBkY3l1VkdBUENpUmNrOXJ1bGh0MXVxcXRKYVcvVUtKbUVNZTcwRk45N28zTGFOWEhYVm5IK1UvUDc0bWgvbVBweFliS0hhN3lhL0JKeXBwMDZaL3BZbkFKQ3lNb2Rlc3owVngrclZudTkvMzdGbXpmeHRaQURINnRYRTc1L25uMUtRYW1vTTlzNVBWMVRYWHV0NS9ISDN3dzlmbVNvMGMyMjk4dWM2TUthZG5SQU82NVd6WHc0RkM4Smh0YVhGeUhxMTh3TndyRnNuelhkV0RKS3FxejI3ZHNrTkRmTmt5K21VTjI4MjFka29WVllhdXVWa0RCY1ZPZSsrdS9BSFA1QWJHNUVzejFzS0Z4V1I1Y3YxZjlzY0dMUFBQb09KQ2IxeTlzdWhZTkdMRituRmk1YXJLMXhZYUtMWm5nS3BxSEEvK3FoODQ0M3hNVmpUUDJWTXFxeDAxTldsUFhRdVVsb3FsWmVuaXdJQXd0aXhabzNuaVNmY0R6MlVmdm95ZHJzbHY5OTBzQkNLTjdQMFN0a3ZaNExGbU5yY1BNODJFd1lCU0RVMWptdXUwU3VuajVTVmVSNTVwQ0MrelZQOFJCSWlOelNZblZDRjNXNVNXWmt5Q296aDRtTFhqaDJlcDU2UzYrdU5mQitrNm1wa29LZGpGb3doR2wyUVpsYXVOTjVaZjMrbXpmYkdScnVXdWNKRlJlNmRPM0ZoWWZUdHQxRTBTaFl2MXUxeG5ZY2tTWDcvNStsTUFFQ0VPTmF0YyszWTRmalNsNHpmLzBwK1AvWjR3T3k4RWdBYUNFQTB5bldpMFpWeUpWaHFXeHNiR2pMM2tTVUFrS1ZMNWZwNnZYSW1ZTGZiZGYvOTJPT0ovdTF2MHVyVnhOSnFacExmajkzdVdjdUdNMGJLeWdydXVNTjUyMjE0MGFLMFI4OUZTa3FrcFVzMXMrc01ZRXg3ZTJGcTZqOHhXQkFLWmJUd0ZZQmNYMCtXTHRVclp3NTJPbDNidHBHaUlsSmFhcXJabmtDV0xjT0xGa0Y4d2pzQWNqamsrbnJuMTcvdVdMWEtYRGdRUWdoaGo0ZjQvY2o4VXZVd1BzNHVYemJZQTJlWG5BaVdkdUdDOWZWcUFiRFhLemMwV0F4bGVySmNjTnR0bHNlZDRzSkNxYW9xdmpnQVdiclUrWld2Rk54eWk1VmVnemhDSkw4ZnliSzUxNU9ZRzMzZGRYcEY3WlFEd1dKc2Vwc0phOGtBa0ZhdWxGYXUxQ3VYQVdzdkRDRmNVQ0JWVmFrdExmTEdqYTRkT3pKL2tkUFhWck8zT0pUUzdtNmthVmxZS3lBaGUzOHBGWHI1c3VsdEpwSTVIUEttVGJyak9SZUtvNjdPVTFJaWI5bGl5eXNrUzVlUzRtSnFkcVFheGpRK056cUw2NnhhL0M3YVNHdHR0YkxOUkJ3QXVlb3FlNXZ0OW5Lc1hsMXcrKzIycEFvaFJBb0xwZXBxMDcxWkdMUFIwU3p2cmJmQXdZSmdVRzFwc1Q1bUNFQmV2ejRYVmtaTXlkb1hKaFZaSm42LzZVdHovR2wwZkIyYmJESDVFdTJtblQ5dmZiM2ErSGpPeGthTGgrY25xYWJHeXFBL1ZhVTlQYWFQeXNDQ3RyRXkzR1lDd0hITk5WSk5qVjQ1UTBaSFI4OTFuQU1HeGNYRnBhV2xSVVZGSHB1dVgvYVNLaXB3VVpIcGtWNFkwKzV1VUJTN0xzcTZGakpZdEs5UCsvaGo2L1dOd3lFM050bzEyYmVqbytOWHYvcFZKQktSWmRuajhWUlhWMitvMzNEVFRUZGRmZlhWZW9kbUZmYjVwT1hMV1grL3VjOE40eXh2aUxLUXdWSmJXOW5vcUxrUEtDSCtZRmh2R3BaeGxGSkZVUlJGUVFpTlQ0ejM5ZlVkUDM3OHdKc0h2dm1OYjk1enp6M083SFpicDRGZExzbnZWMXRhOUFyT2x2VU5VU3hkZyt3QWs1TnFTNHU1dnI1a0dEczJiTEIzTHdtTWNmeC9DU2FTSkNHRXVydTcvL0IvZjNqMXRWZVo1ZGZKQWFtcVF1YURIdDhRUmErVWJSWXNXTnE1Y3l3UXNGaGRHWnVHWlFvQVVFb1pZNURVd2lXRUtJcnl5aXV2bkRYL0lHV09XQ3cyTmo0Mk5EVFUwOU1UREFiMWlxY2oxZFFRSXlPOXJoRGZFRVd2bEQwVzZGS29xaGx0TTJGd0dwWVpmci8vL3Z2dVA5ZHg3dXpaczRxaTRKbklFa0tHaG9iZWYvLzlOV3ZXRUV1dmRtQmc0UERodzIzdGJUMkJub25KQ1lmRDhjTWYvdkNHNjIvUU95NGxVbHhNbGk0MTNZckk3b1lvQ3hNczJ0dWIwVFlUaHFkaEdWZGRYZjNrazA5T1RVMGRQSGp3NlQ4K0hRd0djZExMYTJ0dkN3YURpMHlPUjBBSUhmM282RFBQUE5QUjBhRnBXdndYZWp3ZVRiVTZTaFloTkRQb1QvdmtFNzJDYzJWelF4UXJYOEhNcVMwdDFyZVppSytlWUd3YWxpa1lZNS9QOTdXdmZXM3JmMjFOdmlCaWpBY0dCa1pIUjlNY082OVBQLzEwOSs3ZFo4NmNBUUJKa3VJVkhnQ0ErYXZZTElSSTFkV3BCakdubE4wTlVSWWdXR3g4WEQxNU1wTm11L0ZwV0JZNEhJNE5HellVekI0bkU0MUdoMGVHVXgweUx3QjQ5OTEzQTRHQU5ETTZGQUJLaWt2V3JsMjd1SFJ4K21OMUViOGZlenltbTFsWjNCQmxBUzZGOU94WjF0ZG5zYm95T1EzTEdwL1BKOHV5cXFxSnF5RmpMQnFKcGo5cWptQXcySHJxOCtsZkFMQjI3ZG9udnYvRXlwVXJNKzk2bGNyTFNXa3BuWncwOXpIT2JJaGlkcGkxQmRtdXNTQVdpNTA0WVhwK1hJTDVhVmdMWldKaVltQmdJQjVOQUhDNVhBODg4RUI5ZmIzUDU1TU1qSEJQRHhjV1Nta0cxS2N5c3lHS1hqa2JaRHRZTEJEUVB2bkVZcW9RUWdVRnlWT0VjOWxVYUVwTnV1aDR2ZDdhVmZadFErSndTRFUxUnFaZ3pKTEZKV2l5SFN5MXBjWDZlclh4M25ZT3pYWXVadGNtRXBGY3R0N0d4Z2Y5bWE2MEVodWljSmJWWUxHeE1iVzExZlJua1JCZnI3YWtSSzljTGdKazlWMm5RQ29xckF6Y205a1FSYTljcHJJYUxPMzBhZHJYWjdsVGxCUVhXNW1HOVFVVmZ4cHQrbHM2c3lHS1hybE1XVHJIbGtBME9yM05oRFVBMHBvMTFxWmhtZVZ3T0xDMWkzVnE5djlDcDFPeWNCTXpzeUdLWHJsTVpTOVl0S3RMczd3N0hBQjJ1UW9hRzdQVGJDOHFLcEpuZHo4eXhsU3ozVCt6MzZpbWFXRzdMMENTMzI5bHRtQjhReFRPc2hXcytIcTFadnRkRWdCSVphVzBabzFlT1h2RSs3RVMveGRqSEkxRysvcjYwaHh5SmFyUjVCNzJjRGpjMmRXWnByd0Z4TzgzdE83SUZlSWJvdWlWeWtpV2dzVkdSclFNbSsyTmpWbm8xb3NyTGk1ZXRteFpjaXdZWThkUEhKOHdzMnhMLzBCL1pHWW9BY1pZMHpURjduTkpTa3BJUllYcFQzVm1ReFM5Y2huSlVyQzBNMmZvWjU5WmI3YVhsTWdiTnVpVnM0M1g2MTIvYm4zeVR3Z2g3ZTN0TC96NWhhR2hJU1BYUkVWUlB2end3MGdra3VnZzlYcTkvaXJ6VGFLMHBwZWdNUzhMRzZKWU90TW1RU1NpSGo5dS9SSFZmTnRNY0lVeHZ2WFdXeXVXVlNTUDcxTlY5YTkvL2V1UGZ2eWozLy8rOTFPcDE1a05Cb1BIamgzYnZYdjNvVU9IRWsrZEVVSzNiTDNsR2pzV3c1a0Y0K201MGFaa1pVT1ViQVNMZG5acTU4OWJibDJsMm1hQ3E5cmEydTk5NzN0bFpXV0pDeUxHbUZMYTBkSHhyMFAvU3RNTVAvUEptVi8renkvZjJQOUdORHI5YkxHd3NIRDdQZHNmZWVRUkh1T2JKV3RQby9sdmlNSS9XSW4xYXEwR1M2cXVUclhOQkQ4WTQ3dnV1dXZIUC9weFpXWGxuREdsaEpBMGZRZWFPdDJXU2d4MDNycDE2NU5QUHJtRXp5Z29zbVFKV2J6WWRMQm1Oa1RSSzJjZDkyQ3g0V0d0clUydlZHcnhoYThzZERGbmJHaG82RVRUaWJHeHNlUWZ4a09XcGhzZEFJQjlQdUlLQUk0ZVBmcm1XMjlxbHBmQVRBdDdQTlpXK3VPOUlRcjNZR250N1hSZ3dIcXp2YlRVa2NWbWU0S2lLSHYyN25uOTlkZERvVkR5NEJsQ2lOdnRKampsMnlrcks5dlV1R254NHNXSmJJMk5qZTNidCsvamp6OU9kVWhHSEE2cHVqb0huMGJ6YmJqWXM4MUVCdXZWV25iOCtQSDMzbnNQSmZXWUE4REtsU3Z2dnZ2dTJ0cmFOR09VVjYxYTlmUC8vdm5wMDZkLys3dmZkbmQzeHkrZEl5TWpIeDc5c0w2KzN2YitkNVJZZ2lZY050ZlkwRFFhQ0NCS1RZZlNHRXZuMnpCNjRZTDI2YWZtM25CQ1lwdUo3RGJiRVVLcXFuN3d3UWZKZFJVQVZDNnYvT2xQZnZyUXR4OXEyTmdncDc0Umt5VEo0L0ZzM3J6NXpqdnZUSjU4Y2Y3OCtSQ2ZOZzJwcU1BV2V2aG1scURSSzJjUnoyRFpzbDV0clgxam1BeWJuSnc4MTNFdXVYWmhqTjE0MDQzWG1WbTdiSFh0YXJmYm5iZ2dEZzRPSnU0VDdZVzlYb3VEL29hRzJMQzU4ZGJHY1F3V0d4eFVNMW40S3Q1czkzcjF5dGx2ZEd4MFltSWlPVmhPcC9QYWE2OU5jOGlWaW91TEV3UG5NY2FSU0lReXE0dnFwRFg5Tk5yczV6eXpJWXBlT1lzNEJrdHRiMmVEZzZiZmNGeDhkN2dGV3ZocWNuSXkrU1lPQUdSWkx2S1p1elBGWk80Yng4alNSMkhBOU5Ob3M1VVd6dzFSZUFVTFFpSDF4SWtNdDVtd2ZiMWFnOExoTUwxaXlTN1Q3VzZUWnprVFVsV1ZsYVhJTWFaZFhaeWFXYnlDcFYyNFFDOWRzbHhkMmJMTmhHWDhxaFpPOEtKRlpOa3kwelVXeHF5L245T0dLSHlDUmVuMGVyVldneVd0V0dITE5oTzVnMnRZc2NkalpRbkorTk5vUHMwc0xzR2lBd09acmxlN2ViT1Z1ajJIVVVhak1TNTNoWEdTMzI5MHM3RUVuaHVpY0FtVzF0YVcwWHExNWVYeStsbWpWdktSeCtOeEpQWEFUVTFObmU4NG42WjhocXcvalE0RWdFTS9pUDNCZ3FtcDZXMG1ySW12VjF0ZXJsY3UxeFVYRnljR1IyQ01GVVY1L1crdlg3cDBTZE8wVE5kdW1BOVpzb1FzV1dJNldETWJvdWlWTTgzK1lHa2RIYlN6MDNKMXhYR2JDY1BtWGJmRDdGMmh6K2VycTZ0TC9CNUNTR3RyNjg5KzlyUGYvTzl2TGw2Nm1QNVlDeXcvallhSkNkYmZyMWZLTkx2UFgySzlXcE9uWVZvV3Rwa3dvSCtnUHhxTkppZko0WEQ0VEc1VlFnaTUvZmJieTh2TGswY0xkZ2U2MzNubm5jOHVjeGhXRU45c3pPeDlOTVlRRHZPWVcyRnpzR2gvdjNibWpNVlVJWVJrdWVENjY3TzJzdSs4UmtaSGpodytNcWNmeStQeGxKbGZsbkw5dXZXUFBmYllraVZMa3RjS1REK2NLeE1XbTFtSkRWRnNaZmo1TG1Oc2NGQm5hQmdoc1k4K1lpTWpGb01GZ0wxZTdQUFJ6czVaYzhBbGlTeGJabVdla3hteFdHeDRlTGl6cy9NZi8vakh5ZGFUeWMrUEdXTit2OS9DcW1zWTQyMTNiNnVzckR6NHo0T24yazZOalkzRllqR1h5NVg1b2lEekloVVZuMjgyWmh5ZkRWR01CZ3RVTmZMYWEycHJxMDdySnhJeC9ZMUp3QmltcHNKNzlzektKUUQyK1FxZmVzcXU5ZHhUYVd0cisvVnZmajB5TWhJT2grY3NDU2xKMHViR3pZV1d1ajh3eHZYcjY2OWJlOTM0K1BqSXlNakk2QWdBMVBKNXNrNjhYc252TjcxRVZIeERsT0ZoYVVHQ2hRQWdISWJKU1oxZ21YcExWNklVNWl6OEdvK3A1WHRNd3lMUnlNandpQkpSNXFTS1VycG16WnF0VzdlbU90QUlTWkpLUzB0TDdWMHNEZ0NtcGlCNWlnckdaUEhpMUFla2dER0V3N0dqUngwVEUra1dDd0VnSlNYU2loVUc3NnNNQndzaGhQSDBmMXhkK2Z0NS8wV0VFRUlZNFRtUGpRR0FNVlpWVmJWcjE2N2xXWndqWkJERVlzcUxMMnB0YlorZmFZeEJVUXllK0Zrb2piN3pUdXk5OTlKZGJSaHpORFI0SG4vY1lKdkVUTEMrMEFBQll5eHhCMWRRVUZCU1V0S3dzZUcrKys1Ym01c0xKd0ZBTU1oR1J1WW15ZHIzVU5NZy9mdzh4bEFzWnJ5ZEk0STF6ZWYxYmFqZklFbVN5KzFhV3I2MHVxWjZkZTFxdjk5ZllQWTVTVGJaZXcxSi8zdE0vaUVSckdsMWRYVy8rTVV2SkVtU0pDbW53NVFuUkxDbXliS2NaaVM3WUpiNWhwNGdHQ0NDSlhBaGdpVndJWUlsY0NHQ0pYQWhnaVZ3SVlJbGNDR0NKWEFoZ2lWd0lZSWxjQ0dDSlhCaDVsa2hZMW5ZTldvdWdBWDRvL2tDWVBxL0xERDVod3dIUzVLaytEbytGc2FSWlFJQXU5M1k3ZFlyOTU4SFkreng0S0tpTEowUnhyREhZM3prRERZK2VSSlVOUXREaE9lQk1aYmxMSDE4ZWNUSTlCWmI0Y0pDVWw1dThFU1lDSllnR0djb2ZZSmdsZ2lXd0lVSWxzQ0ZDSmJBaFFpV3dJVUlsc0NGQ0piQWhRaVd3SVVJbHNDRkNKYkFoUWlXd0lVSWxzQ0ZDSmJBaFFpV3dJVUlsc0NGQ0piQWhRaVd3SVVJbHNDRkNKYkFoUWlXd0lVSWxzQ0ZDSmJBaFFpV3dJVUlsc0NGQ0piQWhRaVd3SVVJbHNDRkNKYkFoUWlXd0lVSWxzQ0ZDSmJBaFFpV3dJVUlsc0NGQ0piQWhRaVd3SVVJbHNDRkNKYkFoUWlXd0lVSWxzQ0ZDSmJBaFNQeTJtdDZaUVRCTkVma2xWZjB5Z2lDYVE0a1NYcGxCTUUwMGNZU3VCREJFcmdRd1JLNEVNRVN1QkRCRXJnUXdSSzRFTUVTdUJEQkVyZ1F3Uks0RU1FU3VQaC81U1NoVG4yV3hsOEFBQUFsZEVWWWRHUmhkR1U2WTNKbFlYUmxBREl3TVRndE1ETXRNREZVTVRNNk16UTZOVFVyTURBNk1EQmtFQVQzQUFBQUpYUkZXSFJrWVhSbE9tMXZaR2xtZVFBeU1ERTRMVEF6TFRBeFZERXpPak0wT2pVMUt6QXdPakF3RlUyOFN3QUFBQUJKUlU1RXJrSmdnZz09Iiwic3VwcG9ydGVkRXh0ZW5zaW9ucyI6W3siaWQiOiJsb2MiLCJmYWlsX2lmX3Vua25vd24iOmZhbHNlfSx7ImlkIjoidHhBdXRoU2ltcGxlIiwiZmFpbF9pZl91bmtub3duIjpmYWxzZX0seyJpZCI6ImhtYWMtc2VjcmV0IiwiZmFpbF9pZl91bmtub3duIjpmYWxzZX1dLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJGSURPXzJfMCJdLCJleHRlbnNpb25zIjpbImhtYWMtc2VjcmV0IiwidHhBdXRoU2ltcGxlIiwibG9jIl0sImFhZ3VpZCI6IjExMDVlNGVkYWYxZDAyZmZmZmZmZmZmZmZmZmZmZmZmIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsInVwIjp0cnVlLCJ1diI6dHJ1ZX19fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMC0wNi0wOSIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjAwNTEyMDAxIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIwLTA2LTA5In1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMC0wNi0wOSJ9LHsiYWFndWlkIjoiMDg5ODcwNTgtY2FkYy00YjgxLWI2ZTEtMzBkZTUwZGNiZTk2IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiIwODk4NzA1OC1jYWRjLTRiODEtYjZlMS0zMGRlNTBkY2JlOTYiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiV2luZG93cyBIZWxsbyBIYXJkd2FyZSBBdXRoZW50aWNhdG9yIn0sImRlc2NyaXB0aW9uIjoiV2luZG93cyBIZWxsbyBIYXJkd2FyZSBBdXRoZW50aWNhdG9yIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjE5MDQyLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsicnNhc3NhX3BrY3N2MTVfc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX3N1cnJvZ2F0ZSIsImF0dGNhIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZhY2VwcmludF9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZXllcHJpbnRfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiXSwiaXNLZXlSZXN0cmljdGVkIjpmYWxzZSwibWF0Y2hlclByb3RlY3Rpb24iOlsic29mdHdhcmUiXSwiYXR0YWNobWVudEhpbnQiOlsiaW50ZXJuYWwiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUY5VENDQTkyZ0F3SUJBZ0lRWGJZd1RneS9KNzlKdU1ocFVCNWR5ekFOQmdrcWhraUc5dzBCQVFzRkFEQ0JqREVMTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENsZGhjMmhwYm1kMGIyNHhFREFPQmdOVkJBY1RCMUpsWkcxdmJtUXhIakFjQmdOVkJBb1RGVTFwWTNKdmMyOW1kQ0JEYjNKd2IzSmhkR2x2YmpFMk1EUUdBMVVFQXhNdFRXbGpjbTl6YjJaMElGUlFUU0JTYjI5MElFTmxjblJwWm1sallYUmxJRUYxZEdodmNtbDBlU0F5TURFME1CNFhEVEUwTVRJeE1ESXhNekV4T1ZvWERUTTVNVEl4TURJeE16a3lPRm93Z1l3eEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BYWVhOb2FXNW5kRzl1TVJBd0RnWURWUVFIRXdkU1pXUnRiMjVrTVI0d0hBWURWUVFLRXhWTmFXTnliM052Wm5RZ1EyOXljRzl5WVhScGIyNHhOakEwQmdOVkJBTVRMVTFwWTNKdmMyOW1kQ0JVVUUwZ1VtOXZkQ0JEWlhKMGFXWnBZMkYwWlNCQmRYUm9iM0pwZEhrZ01qQXhORENDQWlJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dJUEFEQ0NBZ29DZ2dJQkFKK24rYm5LdC9KSElSQy9vSS94Z2tnc1lkUHpQMGdwdmR1REEyR2JSdHRoK0w0V1V5b1pLR0J3N3V6NWJqalA4QXFsNFlFeHlqUjNFWlE0THFuWkNoTXBvQ29mYmVEUjRNakNFMVRHd1dnaEdwUzBtTTNHdFdEOVhpTUU0ckUySzBWVzNwZE4wQ0x6a1lidlpiczJ3UVRGZkU2MnlOUWlEanlIRldBWjRCUUg0ZVdhOHdyRE1VeElBbmVVQ3BVNnpDd00rbDZRaDRvaFgwNjNCSHpYbFRTVGMxZkRzaVBhS3VNTWpXaks5dnA1VUhGUGErZE1BV3I2T2xqUVpQRklnM2FaNGNVZnpTOXkrbjc3SHMxTlhQQm42RTREYjY3OXo0RFRoSVh5b0tlWlR2MWFhV09XbC9leHNETEd0Mm1UTVR5eWtWVjh1RDFlUmpZcmlGcG1vUkR3SktBRU1PZmFVUmFyenA3aGthOVRPRWxHeUQyZ09WNEZzY3IyTXhBWUN5d0xtT0x6QTRWRFNZTHVLQWhQU3A3eWF3RVQzMEF2WTFIUmZNd0J4ZXRTcVdQMit5WlJOWUpsSHBvcjVRVHVSRGd6UitaZWorYVd4NnJXTll4NDNrTHRob3plVkozUUNzRDVpRUkvT1psbVduNVdZZjdPOExCLzFBN3Njcll2NDRGRDhjazNaK2h4WHBra2xBc2pKTXNIWmE5bUJxaCtWUjFBaWNYNHVaRzhtMTZ4NjVaVTJ1VXBCYTNybjhDVE5tdzE3WkhPaXVTV0p0UzkrUHJaVkE4bGpnZjRRZ0ExZzZOUE9FaUxHMmZuOEdtK3I1QWsrOXRxdjcyS0RkMkZQQko3WHg0c3RZai9Xak5QdEVVaFc0cmNMSzNrdExmY3k2ZWE3Um9jdzV5NUFnTUJBQUdqVVRCUE1Bc0dBMVVkRHdRRUF3SUJoakFQQmdOVkhSTUJBZjhFQlRBREFRSC9NQjBHQTFVZERnUVdCQlI2akFyT0wwaGlGK0tVMGE1VndWTHNjWFNrVmpBUUJna3JCZ0VFQVlJM0ZRRUVBd0lCQURBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQWdFQVc0aW9vMStKOVZXQzBVbnRTQlhjWFJtMWVQVFZhbXRzeFZ5L0dwUDRFbUpkM1ViNTNKek5CZllkZ2ZVTDUxQ3BwUzNaWTZCb2FnQitEcW9BMkdiU0wrN3NGR0hCbDVrYTZGTmVscndzSDZWVnc0eFYvOGtsSWptcU95ZmF0UFlzejBzVWRaZXYrcmVlaUdwS1ZvWHJLNkJEblVVMjcvbWdQdGVtNVlLV3ZIQi9zb29mVXJMS3paVjNXZkdkeDl6QnI4VjB4VzZ2TzNDS2Fxa3FVOXk2RXNRdzM0bjdlSkNiRVZWUThWZEZkOWlWMXBtWHdhQkFmQndrdmlQVEtFUDlDbSt6YkZJT0xyM1YzQ0w5aEpqK2drVFV1WFdsSko2d1ZYRUc1aTRySWJMQVY1OVVyVzRMb25QK3NlcXZXTUpZVUZ4dS9uaUYwUjNmU0dNK05VMTFEdEJWa2hSWnQxdTBrRmhacWpEejFkV3lmVC9ON0hrZTNXc0RxVUZzQmkrOFNFdzkwcld4MmFVa0x2S284M29VNE14NG5hKzJJM2w5RjJhMlZOR2s0SzdsM2EwMGc1MW1pUGlxMERhMGpxdzMwUGFMbHVUTVRHWTUrUm5aVmg1MEpENm5rK0VhM3dSa1U4YWlZRm5wSXhmS0JaNzJ3aG1ZWWEvZWdqOUlLZXFwUjB2dUxlYmJVMGZKQmY4ODBLMWpXRDNaNVNGeUpYbzA1N012ME9QdzVtdHR5dEU1ODVaSXk1SnNhUlhsc09vV0dSWEUza1VUL01LUjFVb0FnUjU0YzhCc2grOURxMndxSUs5bVJuMTV6dkJEZXlIRzYrY3p1ckxvcHppT1VlV29reFpOMXN5ckVkS2xoRm9QWWF2bTZ0K1B6SWNwZHhad0hBK1YzakxKUGZJPSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFFZ0FBQUJJQ0FZQUFBQlY3Yk5IQUFBQ2tVbEVRVlI0MnV5YWkzR0RNQXlHUXllZ0d6QUNuYUNNa0JIb0Joa2huU0FqMEEyU0RhQVQwRTZRYkVBM2NPWFc2WEVwQnRuSW1Ndjl1dE9sbHhqRi9xS0hMVGRSU20wZ2Rua0FBZ0FDSUFBQ0lBQUNJQUFDSUFnQUFSQUFBUkFBQVJBQUFSQkVBRkNTSklOS2twTHVTVHRTWmJRejc2VzI1emhLa3BGV1BidGF6NlE3NXZQdW9sdXVQbXF4bFpLMnlpNzZzOVJ6bmpscE4ySzdDckZXYVVBSE5TMEhUMEF0dzNZcERTanhiZG9QdWF6aUczdWs1NzljdklkZVdzYlFEN0w3TkFZb1dwS21MeThjaHVlTzVyZUI3S0tLclFuUUpkRFluOUFKWkhjNVFCVDdlbklOWTJoanhycUl0c3ZKV1NkeEZ4S3VZbE9sV0ptRTZ6UFBjc0p1TjdXRmlGN21lNURPQXdzNE95WnlHNlRPc3IvS1F6aURhSm0vbWN5MlYxVjArVDBKZVh4cXFscldDOW1HR3kzTzZ3d0ZhSTBTZFIrRU1nOUFFQUFDSUFCeXFWaVpiKy9wcmdGZE42cWIzMDZqM2xUV3MwQko3NlFqdzBrdE8rM2FkNjBQUWhNcmZNOVl3cUs3bFVQZTRqKy9PUjQwY0RhcUplSit4bzgwSnNXaWgxV1RCQWNiOHlzS3JiK1Rmb3dRS3kzdjU1d2JCa2s0OUZKYlF1c3FyNHNuYWRMOWhFdFhDM25PMUcxSEc2VWZ4SWo1b0RuSmxIUE9WVkFlcldHbXZZUXh3YzcwaGlUaDdCaWR5My8zWkZFNmlzeGY4ZXBOaFVDbDRuNWZ0WXFXS3pNUDNJSXF1YUZucXVYTzBzWjF5bi9SV3E2OVN1SzZHZFBYT1JmU3o0SFBuazFiTlhPMCtVWnplNUhxS0lvZE5Zd25IVlZjT1Vpdk5jU3R4ajRDR0ZZaFdBV2dYZ211RjRKemRNaG42d0RVbTFEcG1GeVZZN0l2UXFlVFJkb2QydjJGOGxObi9nY3BXK3JVc09pOW1BbUZ3bFNvM1B3OUpRM3ArOGJoZ25BTWtQTTYxM0J4T0JRcWMyRkVCNFNtUFFTQUFBaUFBQWlBQUFpQUFBaUFJQUFFUUFBRVFBQUVRUGNvM3dJTUFET1hnRmhPVGdodUFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJGSURPXzJfMCJdLCJhYWd1aWQiOiIwODk4NzA1OGNhZGM0YjgxYjZlMTMwZGU1MGRjYmU5NiIsIm9wdGlvbnMiOnsicGxhdCI6dHJ1ZSwicmsiOnRydWUsInVwIjp0cnVlfSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0IjoxMDAsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MzIsInRyYW5zcG9ydHMiOlsiaW50ZXJuYWwiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi0yNTd9XSwibWluUElOTGVuZ3RoIjo0LCJmaXJtd2FyZVZlcnNpb24iOjE5MDQyfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjAtMDgtMDUiLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IldpbmRvd3MgSGVsbG8gSGFyZHdhcmUgQXV0aGVudGljYXRvciIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMTkwNDE4MDAyIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjMuNiIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4xLjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjAtMDgtMDUifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIwLTA4LTA1In0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiNzg2YzE1MzA0MjVhZGQ5Y2Y0YzFkZGQ0OTBkNzEzM2U5ZmY4MzNhZiJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyI3ODZjMTUzMDQyNWFkZDljZjRjMWRkZDQ5MGQ3MTMzZTlmZjgzM2FmIl0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJIeXBlckZJRE8gUHJvIE5GQyhDVEFQMi4xLCBDVEFQMi4wLCBVMkYpIn0sImRlc2NyaXB0aW9uIjoiSHlwZXJGSURPIFBybyBORkMoQ1RBUDIuMSwgQ1RBUDIuMCwgVTJGKSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjJ9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50IiwicmVtb3RlX2hhbmRsZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQ1JEQ0NBYVdnQXdJQkFnSVFjdEVPVDJXWGVDa0Rkei9zWTdVcFZqQUtCZ2dxaGtqT1BRUURCREE5TVFzd0NRWURWUVFHRXdKRFFURVNNQkFHQTFVRUNnd0pTRmxRUlZKVFJVTlZNUm93R0FZRFZRUUREQkZJZVhCbGNuTmxZM1VnVW05dmRDQkRRVEFnRncweU5UQXhNREV3TURBd01EQmFHQTh5TVRJME1USXpNVEl6TlRrMU9Wb3dQVEVMTUFrR0ExVUVCaE1DUTBFeEVqQVFCZ05WQkFvTUNVaFpVRVZTVTBWRFZURWFNQmdHQTFVRUF3d1JTSGx3WlhKelpXTjFJRkp2YjNRZ1EwRXdnWnN3RUFZSEtvWkl6ajBDQVFZRks0RUVBQ01EZ1lZQUJBRkZyUGI4S0RMQXc0SHNZTFU1Y3dldm9QUzBKNlFhbzhIYngybzExK3JZdnN4QXdyVjNQL08yTXRrdUE0YkRrbVlTQTBZTDVBK0oyWW80di9kMS9RUDJVUUYxZHFQRmttVTI3VlpoQzRQWENkY1grRk1kdXViLzQvTEV3VmFPTXdQVFVBZzk4U1J3Y0JqU3p1TVdCbHhlMkcwV1FGbmROMnRuMlkyc1p1Ylg3eVFJSDZOQ01FQXdIUVlEVlIwT0JCWUVGT0poYWZPVlpxNjl0ekJOYTUyVFQ2QmNzTjFhTUE4R0ExVWRFd0VCL3dRRk1BTUJBZjh3RGdZRFZSMFBBUUgvQkFRREFnRUdNQW9HQ0NxR1NNNDlCQU1FQTRHTUFEQ0JpQUpDQWNxNFd2VnFPbE1wYlU0ZTc2U3llY1pVckt5T1NHb1RxdEhKbHJHVzU1QWxIelgwWVZobVZOdFlqQ3ErL0lUYmRqS2ZiLzRSSysxS25xbmxTS3ZaYXI3dkFrSUJRanpjYVZpb0EwbzBWb3lveWFOa0JoMDhTSjJ2L3BoaFp1MTk2VWhSZnFLNlBwOS8xWTR1RFNhVGdoT1F2MEhEazFrdUpPUnN3Q2VsbU1mSVFUYzFFUUU9IiwiTUlJQ1FEQ0NBYUdnQXdJQkFnSVFBY2I1WmNBeU9KbDF4Lzg5Z1lrbWV6QUtCZ2dxaGtqT1BRUURBekE5TVFzd0NRWURWUVFHRXdKRFFURVNNQkFHQTFVRUNnd0pTRmxRUlZKVFJVTlZNUm93R0FZRFZRUUREQkZJZVhCbGNuTmxZM1VnVW05dmRDQkRRVEFnRncweU5UQXhNREV3TURBd01EQmFHQTh5TVRBd01USXpNVEl6TlRrMU9Wb3dPekVMTUFrR0ExVUVCaE1DUTBFeEVqQVFCZ05WQkFvTUNVaFpVRVZTVTBWRFZURVlNQllHQTFVRUF3d1BTSGx3WlhKelpXTjFJRU5CSURBeU1IWXdFQVlIS29aSXpqMENBUVlGSzRFRUFDSURZZ0FFenJWbWUyVzFwMWFxNG8vRUxiRjJzK0phVDZ0UTJab01HMFBjSDc5d2RKd09yUWVBMkVQQ2V3dStlbVNzZ2ZiVVlVSXJMMFdoR0NQN1J6ZnNWaGZCUWxkN0xaZVVoVFBpTzEyenVQOGs5UXF2TGNjbmJqeW0xenpSM0ludlhFTVlvMll3WkRBZEJnTlZIUTRFRmdRVWxpVjBacWkzYWpreEREZThwenM3T0RMRFdqSXdId1lEVlIwakJCZ3dGb0FVNG1GcDg1Vm1ycjIzTUUxcm5aTlBvRnl3M1Zvd0VnWURWUjBUQVFIL0JBZ3dCZ0VCL3dJQkFEQU9CZ05WSFE4QkFmOEVCQU1DQVFZd0NnWUlLb1pJemowRUF3TURnWXdBTUlHSUFrSUEwQVFKSHUvSHhKNHdWREI3dnUxenN1R2RPRVlpQzd0SjUyc3p5bTFHeFhSbk8rRFl0eWE5eWd3ckVaKzhMbzBDWW04endBVitCTTJuaGdYb3YxT0libVlDUWdFcDc2Q0Z3NDh2YWRtemNWbnA0bTFmYkxBcEhUdXVPL3pETVBUS1dhejBndWRyYUYwZWFlZEZ2THg3Q3BYK0gvZ1ZKQUpXalVGVU5VTWdxa2RVbDBNb2tBPT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFERGNBQUFIb0NBWUFBQUdRMmRWWkFBQUFDWEJJV1hNQUFDNGpBQUF1SXdGNHBUOTJBQUFnQUVsRVFWUjRuT3pkMzNYVXZOYkFZZmtzN2tNcUFDcHdVZ0doQXVEYUZ5RVZBQldRVkVDb0lNbUZyNEVLSUJXQUt3QXFDS25BWjRsM0R6Z1R6NHovU1BLVzlIdlc0anZmQzhtTXh2YllrcmEwZDlHMnJmR2xxSnVqdGlxL2Vuc0RBSUFYLy9QNFlIRCsxTEd2NmVOMUFRQjNlWGs0K0hvdytIeDlBTUEvemg4T3ZoOE0zYjhyNnViQTlYc0JBSXg1NFBJWWhIb3dkSHdyNnFacHE1S0hCQUFNVU5UTkcyUE0rODVQUHV1TERUc0xTRys0aWZlKzZZalh0TC83ZE1qUHRsVlpUSDBmQUVoWlVUZm54cGpYWSs2alRoNE9SZDM4TnNiczlmelQ1SWREVVRjUGpURTNZMzZIQndRQTNOWHB1RisxVmZscTArSHAvTnh0VzVVUFowOHJ5YngvMzROaHJsRVBCbWxMeXdNQ0FQNGpuZXhCSGVmVno2d2VFaTVpRHQ5Y240YzVzUXNlRUFEdzE1MU85cWFwK3ZWN3ByMlB6bHF0dEVBQU90aHJBRUFLaG5TV3UvZk0xYzlQZmpob2ZURDRlQzBBU0kxOUNHeDdjRXg2T0doL01QaDhUUURJd2VpSFEydzNjUjRRQUhEZnJuUkVvd0xTc2ZidWZRV3BoN1I5NnZ2dWV1MDc2NUVISHNPNXgyREsrM2c0dnlkdFZWNE8vZUZRbllPK1krdmp2VjFkeHpQYWR0MVc1WkhIMXg5bHl2R1kwN1p0N3pmbU96dFVVVGN2akRFZlhiL3VtdDR0QjRNZkRrWGRuSTU5eDExN0hJcTZHZndsbjh2dXhiQnJkME85WDBqMjRoaHl3Yzk1U0NwNU1GZ1hSZDFjckw5WExvYXVXZTh6WmxQcEZrLzdncGZhdWJvV1Y2L1RzN3BuNXdOem9qZStEbTNudnZIRmZvVDFmeDh6cmZSdTdCc1ArTEhqTWE5cGpEbWNjVEh1RlhVejZzc0UzV1JZbkd0SytPTXhOeno1MmJrUGh1Z1VkZk9UcWVYZDFoS2IydEhLc0lmRDJJTTdkdW5VUUhiWDN2ZWhyNy9CeGNUZlUyL29NWm55UlFrMWJUWFIwOVhGbktPaEk4YU1qODBqQlUxWjFOcEk3Nmk3U21uMS82OTlkLzlNWSsxOE9DaDVNSmoxS1NIZjB5TVk3ZGVDaDJ6cm5HenF0bDNUWE85NVc5LzF2RXQzMm16cncwSFJnNkgzZFhsQTNPVmo5REJpMVBCNDZHdjZ3RTBRWFZ3UC8zUWZFSnVtMW91NitiNGVUOWtZa0o1d2NKL3QrZ0dYRDRidXYwK2RLa2swb1BscmdhSDBrOER2aHdGeW5XNWI1UlBDUDUzNzVOOEZIVDErZFR0NXZRK0hDVUcrWnNES0pPY1BodTdQVFh4QWZHcXJNcWt2a0QyNXJsWXVqUmcxL0J6VHhqV2JPaFV2aHFRWVRrRGY1Mzg0ZHFwc3cva2M4eHJYeHBoUkt4SVYxNGNmbmJUVEdITm1qRWw2Y2NQWXp2Q21rY09vVlEyN2l1MzRmREIwZjM3Qyt6d2YrZk94c0QzNUh5SGFPbmYwdGVVRzgzVzFqRStHd3Q0V0V5dzVndHp5K1gwdkNWNFp2U1RXbGFWSDdpVG8zTzVlek1GMW5DSEVnMkhPNzZVNE56bTBKeDlMSUhQb3ByY3BlM0ZpNFBNbXR0U0RZV2s4R0hhNzgzRHc4R0FZdmNuTlFVOTB5Z1BpZk01N2FoVGk0Zy81QlJ2NFhxUDI0aUE5cVhZUWxqQTVLNnVuVFc3N3UzN0FVOHFLSE9hMmUvVWRUMVo2SUdJN093aU1Hb2I1KzNBWWVVTzQ5ZEFXTy9mNWU5c1BqTm5oUFBZQ2tGS25TZkU4SGNFWExBRjBCTERKcEpHRGp4eEZBK2MrZmU1dzlsSHFOQXByVytlSDNDeDhkQTdnM3FDTmliTCtmYzZLTXlUb2YyWms3OEZIanpIMDVybWNlRHBmV3RlUkw3bExXNTJSR3hNZnJWSTRzMDhBeGxFTjZWbDhQUmc2UGd5TktkajlIVVBTRVkraFpOaCt1MnRrTktLZGgyNmFOTTdBOW0xZFVyMkpyeFRPRWJzcDZzYjc1NXY3M2FEejU5ZllhYVVUbDYwSjhHQ3c3ekVtNVcyU1dTdGQ5dlJYeVE5REdob1AyaFd6aXRXU0hZek9hSUxZUkdaR2pSekdGRmtaOEZyZUh3eTR3L2I0djgwNUpFc1ZURXFadzgvL3VlOHZwMllQNkxPcGxnSFM5RCtQUlNvMlV2eGdPRnZnUFlOWW9zZVBvT2QzWXhvWTF6ZHpHVWtrT1VyRFAzWmFLZWpESWZTRFljeEYzRlpsMGh0bzV0d2t0UGNXNmMxdTUrSDQ3T1UrNmt2ZC84YmNFRU1Fa0R4Y2NOa3VVVVVleGlTbzVDSHFoOGNraEl2RlFTZnZrSjVnWnpEYjlWQ1ZuczE5VTI0T2pCcjBtbm8rWFQwbytJNmxhL1JTMW9sMUVHNTNCYk9MdWpsdzJjdVgxeHRqWitxT2lhYkdNY2dUdElPcmgwS2tEeGNuMlZRN2hXQU81aTVZbVByZTBPbUJtYkNpWWV3RFl1QlNTdGNYNXFqWDg3VU1jbW9jbzZnYmJ3K0hNZWRiMlJmNHc4aWx5Y254ZFQ1a3djTHFRZkdiNlZqM2JGTEFtT0tha3pmQjJWVk9RK2JabG9nelRIZzlYNk9HMkwzMDNmN2NlNC9keisrcVNKT0ROajAwL3lxcTdTeWNrM0JWUmRmZWpTMm90S1MvTVljSkovZkxyaCtJNU1HUTdPYXBiWWFjbTdZcVB5M2F5TXlNcUFFZTVMekk5NElTc0ptYUZaQ2VlMk4zblMrSi9FdklSTEFLaGpOTHdDN2g3YTczSklnK3pKMkhROGhLYWhvZURFd25RWnNSb3dkdWNEM2FxbFJkdUd0c2JOZHZhN2E3TjNJSThZQlE4bURJY2pvSlVWRFRhU25xWnVQTzY1Z3RuSzlxWjdZQ0RRdEdOZ1drYlVyR2Nzd0xEUTFLS1hvd01KMkVQeHpjS001Y3JrS3huWlpWVnRSdGZBYUNKYTNPenJpaXVKNzRIck52MEhNK2YvZjlYUnpIRWFzQXk4N1BQVnN0N0pFU3AycVdzUGMrSE5xcVBKaHk0blpkckR3WWtDam5xMUNHM21pMmZlZEM5WTVkcDdtZmEwcXlRZGYxODBmNE1xUWpzSVNOQWVtcEgzN1RRYmExRXNhKzFvNEh3NlRjL1R3WUVKSGVUS3VBQ1hBdjI3cGF5ZFVEUXRaTGo4MFJzcXVvek9oTmN6d1lFSk50bVZhN0ZnNWNxc3hrdk5SM1BhVjd6TTZsckhNZUVFWGRyTGIzNzl4SXMrWjJXNHJwaVYrR1JTcVlBWE9NV0wyMHlKTFQxRE1aVHhIaUFSSGlQUWJ0YzVqUmtJdUpjUWJuTld5cFo0REVQUXI5OFNKSnlIaTc0SHRIOTlwZGd6ZkJoV3FRcDRMNFRDY2hXdHIyUHNTVSt0dDJORk9hWWdyNVdjYm1WcHBkYW5JYkhnekp1VTYxTG5kb1UxYmdyT1Z0R3JNMHRjK1RDSGRMLytVdysreXpNYlVieHViTzJ2VWFJUlZ0TzY2OUVrZTRjTjNHTVFjZzBveWlBQkNOMGJtVnBDN0RsY3NQeUlnQkFIU1psSGhQaW93NGVVRHdZQUFBZlNablpaVUh4TTdTbnp0ZXc4ZE5mR2RXUmdEQWRyTlNkc3NVMDlUOUExNlNpMm5QeWdnQU1aajFjREN5ZjJEQ0NPREtSMFpVcHBNQXdJM1pENGVWa1RXbFp4ZEduL1ArQUlEdG5EMGN6UERTa3dTZ0FVQTVwdzhIcytOR3pZTUJBT0xnL09GZ050eXdlVEFBUUR5OFBCek0ybzJiQndNQXhHVjArb3dsMmRxcnRrb2QxeGdBK09WdDVPQTZRNlRrZENvWExtd0NBRm53OG5Ed2RBUC9tK3lQQndRQStPWDg0ZURqeHQzM21qd2dBTUNmc2ZVY3RncjFZT2orRzRGcEFCaE9Tc3F1S2dkZXQxVjUxUGZMemdMU2ZUZnh1VGR1NmpZQXdIeFQ3cVZPSGc2YjNuak9UWHRPMVNzQXdOMTc2YTU3NVByUHpZNDVoSjVLQ3RrT0FJalowQWREOTJkV3Z6TXI1cURsd2REOVhVWVFBUERQcmpyVzZ4dVdWejh6ZWVUZzZjRXdPNDAzSXdnQUdINHYzTEFhOU5Pa2g0T0xtM2pQYTlxSStaNmoxK0lCQVFER3ZPdzdCbmFFc0dPVzVmbm9oME5STndldWJ1SnJ2cmg4TVI0UUFITFhWdVduQ1lmZzJreWNWdnJtK25qN3VwSHpnQUNBKyt5OWNjdjk4YXNaRzVEV0ZvQWUrdnErZ3RTNzJqNzFmWWNjazExQkpwZnRtZm9lUHM3dG1NK3d0dG5IbTAxdDh2RDVuN1ZWK1hYdWl4UjE4OUFZY3pQeDEvZUhsUGdOMFRHYmNqM2I1SjAyUjl2RXQvelFWdVdiRGE4NzZqczdsSy9YdGRmU2FyYW01L2YvZk1iQkk0Y1lId3loM3dmK3JYbzhjdVBmeGZ1RFlSTlAxOXlYSFQyK25XMlMzNTM2WUxCdTVyVEJKWWxUN2xUVXpXbW56Vk1mRE5ackxaOTlxRTN4NFc0bm8rZnovQWtiREhvNFREa1lRemRjVEhqTjI3Ry9OL1g5WWpHMDV6RG5wakxrNXdJdkkzNlU4ME5mYmxLRGFySGJHMFN1eDBvKzl6c0ZUVm5LeHZqd3JxcWRPeDhPeWg0TTluL3RrUGhrN085UGZWL29sdms1dlpBcG9vMms1K2hqQVlsNnVYL2ZOMVhrWE4vWHNEWVYvTGRlenRhSFExRTNvK2MzZlQ0WU92OTk2WE0rUDBhK1JnOHg1TGZLL0Nhd2E0cUlCMFBtUmg0THUrRG9seGt3cmZSMHpHRWQ4R0FZdlQ5aTE5Qm43T3RKTzNxRFNwanNqRU8zbkUzZnE0eW5rZ1pOdCtXZ214SmpWNGJyVHFxTngyYmJhaVhYaWUrbTdJOFltZzlrd3BmZ3ZUSG1mT1R2cURmMFdBeGR3VFZpMUhDNjlMR3gxMWRibGQrWGJzZENzaHdkYkhFeCtUY1ROUFFCc1g1UDZIMDRlTXFJT25aL3hOc3g3ejlsdWlUUlBFeG5JUU53RG83aHN3MS9QM1pUcEwyK1lqdWZtejY3SGRrK1Y5SVd0VndzNnhWMjA5ZmdEbzdEOXcxcTdIZjEzc1BCeDROaFlweGhWTStlQjhSL2JDKytxSnVkRDRkZG56M1VsTVNXTDVyWC9SS2Q5MS9zL0cvNTdOMWxoblBXNVE5cHd5S2ZmNm05UnlIYWtJbzdNWWV4QVdpUEQ0WkpKNDJUL1o5UXh5RzE5OUdvcmNxREljMHE2dVp4ZGdkbkJ1NFZ1NjBIcE1jRW9EL3Yrb0dRRDRhT3dkTlJKdk5WRFpzK095czkxT2xObnJibU10dWpNeElQaG1IK1Bod21UQ2U5Y04wWUZ5ZHQ3SFNVOFpSbGRtbSt2d0I4d2NJWm1EeHQxTXBDWUpkSktidDkzQmdjcjU0WjI3NXNWM3VzSDFOR0RRRE02dUd3ZEJESFIreGliRHRUWEJ2dHEzZlBxQ0Vkc2VVS2NxQ0ovaE1FTXJ1RzlGeStndHJpZXNUUFpyczJlblY4Qng3bksvOHRRdGZBQkhPek5pSjJFaG9tL2FBWUd1Q0hNUStLdWhrY3lITGRZL1Q4WUxDdmY3VGt4YTdoaXpaeGsrQzIxMHRxaERYMzJBUWFSZTNjOCtGeUkyTG5tRno1T3Q4K2pqc3J0dHl5STRmamhkNzdjTmNQcEJnb1hzak8zcjdIdlBHenNhSnNHZ2ZuNnppeTBRU2pBb2RHRmZ0eHFObVY2cUNvbXhlT0FzVkJkd3hyWkh0L1JkMHMxUW5ZaWh1L2Q3Y3V2a2NoUmhNTzhIQndhSkdZdzhCNXY0K08zaTdyQjhQSzNGNms5aUEwUWZKK2t1TGVwV05XdE9VaCtNUEJkNXdCeU0ydTc1VDgrNUNOZElQeEhVMWYwSWRENkFjREYvQmRxYVlsWWRTd205MUlKOGRwWjZ4dktJWGZyeWdUNG1rMTZ1SGdPemkyNU1YR0RTWk91Wiszc1ovZnh2bzYxYjhtbGR4VkxOZVU3VjQ4R0x2VTBTNFhhNnR5U0hIM3Y1WjRNQ2pwMVV4ZGUrNHRUakwyZkN1KytmNWFGU1daSTlhSGk2TlVNMy9qRVhQcWkwOXBpNmZOdExaVzl0YWZzV1ZWN2MrNWZ1OFVUVm10OUdOTTN2eElIZ3hlY3RsUFhYcytKT1YySUdNMkVYcVgreWpCQk5yMW52aDByQjFkc0I5aWdEOFBod21qaDBHOWhWaEdETEVXNzVocTZQbTJtd2hEdE1YM2UyaTFka00rbWxEZ3lJdHU1YkFFRC9zakJXMXdhVlFXNmpFbUI2UmRYRGdlSGd5ajExL1RHNFVHUXpzb0lXL1lmRGVXTmJBRDU2M2M4ZCtIdzVRTFljNkZLaFd1UmhuUVJtckhJbHBEdjRPc3dsTnBaM3d4dHZPMlBuTDRNUFlGcG54Z1d3eCtRdW5EZmRmdG9HY0VoVkpiUWFTT2o1dTB5OXhXV3R4NU9MUlYrV1pLdXlZYzdHOGpmNzdadHNLQUJ3TlNNWFJITTZPSGVaWTZma1BmVjhQNXZiZGFhV29XejZGQjZvazM4bzNwTm5nd1lBNFhYMElmMllxSHRNdldmUGUxYUVDU1hub3JndVhydUkrNWYzVis3cTNQdWZzdDczdmRQWC9hSHZpOVMxbDlQU0JjMzhnbkhzeVRDYjhEYUxTeE5HZ09Jd3U3d3N2UlNzUDNSZDI4SC9NTEcrNUx2MGF1aG5xNmNOYmRyYmF0VnRvNng3K0p5NkwxSGg0TTlqVXB4QTcxSWdwT3p5b3k1TWtpSFVBWG16STEyZmh3bUxPTDBFVmRZazhQQnFhVEVJMFlybGVOZ2RnY09vQWhybzJ0K3h6bU5HQms2VWxuN3h2eU5RRU5saG85YVA1T0xkVzJsTzR6T3pmQnVYaEFqTEhyL1FoQUl5ZGFwNWNpR2RVaytZQUk5YmtHN1pBTzFSaEdERUN2S2JVWWZNMjczOGIwblpLMkJzOFJKdS83eFBWcmhqejJneFB2dVM1VTMvZjZIbDUyVWxBZDBNVFdZdGlWYmRTc3JSYVVlZmZMenI5OTNiYTZhUmVsRDRSQldSWmNMaGNkY3h3a2UvWGNQRlZuUzhWMWlyWWQxMlpQRDRpVG9VR2tFZTkvNjZGRUlnQmtZWFRpUFU5VFA4NVhGL0JnQUlEcEptVmxkZm1BSU00QUFQcE1UdG50cUJJVkR3WUFVR2p5dzhITXZCSHpZQUFBdldZOUhNekVHeklQQmdEUWJmYkR3WXhmM3NXREFRQ1VjL0p3TUFOdjBPeGxBSUE0T0hzNG1CMDNmMDhQaHBNNUNRSUJBUDJjUGh6TXY0ZkExZHBmSDNvNC9vTTN6Z0VBeGhtOVEzb00yYzNjYkt2a052RTFEOXVxSExSMUhnQXc0VjdyOCtIZ2l6d2duam1xQXVWRlVUZjI0VlVhQXVZQUFBQkl3T0NrckJyRVVCYTNxQnViMHVsbTdlLyt0SnNCQkFBQUFHSVZ4Y0FoaGdHREdkRE96ci92c3dBWEFBQUFNVkU5Y0VobHdORGpSc3A2WGJWVitTcEVHd0VBQUlBNVZPNXhHTmdSWDN5UFExRTNObXF3NStLMVdNWUVBQUNBT1lxNmVXT01lVC9qSmJhdWlsRTFjQmc1YzcvWXdLR29HeHNsdVBEeDJnd2dBQUFBTU5TVy92T1R0aXAvN25xWkxZT05lOW52VkF3Y2lycXhlVldQUi83YUlnT0hVTXVuR0VBQUFBQmdrL1UrcWF1K1kwK2luNWR0Vlg0eUdnWU9NenJpUVFjT1MrMjNZQUFCQUFDQXJtNi8xRmRmc2FnYk8xaDRMdi81Si9xdzJPYm9oRGMrZTNsL0JoQUFBQUNRV21GL2JPb2ZGblZqSjllZkRqMVlmYS9UVnVXTHpxcWdQN1hKbkplTzNzVjJoQ09weC9CSlV6dGpPVzRBQUFEd3FwejQ0cy9rejl2MWY5alV4K3htLzdRL0V5emlNSEVmUTNCOUJkeVV0WThJQkFBQVFPYkc5Z1U3Uy96dC81NVBtWkFPTW5CZ1daSjdEQ0FBQUFBdzFJeCs3cGt4NXAzeFBYQmd3T0FmQXdoZ3VLSnVqb3d4Ui9JTDluOGZ6Z2o1cmx6Ym1adFZ4Z25vMUhQdUh4dGpIams0OTZkTDF4U2FvNmdibTJyeGhSeVR3ZXVoeFdlNTlxUDkvTGtxNnVaMDRqazNjdDNiYy82VmM1K09vZjFJTDFtVlhCWkcyMkoyVnFWQTdRd3FsZ0dFaThGYTZNL3FzODArQnE5TFhBc2VQc2RKVzVXWFBlL3ozVUdIUDdTenRpcFBYYjFuYW51ZUJqKzA0dnpjdmRleGIwWGQyQUhCeCtDZmRydGZiVlUrbnZLTGlWM3pYakpEYWwxdVBlVDdMWVA3THlIZXk0V3htNDlkdHJmelhkaDRIZlcxejc1WDMvZG9WeHU2ditNMDRoRHFncDE3VWNnTXl6ZDNMZHBvUC9RWFdFN3V2WUlkMEUyK3pEOGR6SUIycjRYZmJWVStEUFhCUFR6VXQxV3ZqRzNRWUwwcjZ1WmQ1NyszVnVkRVVpNkt1dmxiTk5SajZrVGJJZitoL01BOXN2Y0tvdVR1UkpKd2huUHVoeDFvamQzblVLd1hmQnR4Zm40NXk2b2tGNjdYVHJMOVVBNEdEVzJBUWNPVnRQVjNwODFYbnQrenE1UXNUTUU2alpoUFp1SHVaVHFZWVU4R0k5NjVmbkN0dmorSlgxWTM4ajM5UHVCbmtaQlZscnlpYmw2NStGU2RySHZhQncxd3BITU5rVzB4UTkyKzhKVG5mRnVWNSt2OWFibWU3aTI1WGFzWDhYaDJ4Q0hFUmV0aWxMcDB4V2RKWi9VcWNCalJka3pZL3hBUisyV1dER1N1cmhFN3UzZlpUYWZtbW85Qmc2KzJLbFV5RzVldFA1R0lxZWRlZXhaQXVCZnBNazM0Y1dMdkladWllRzFWSHUxNjF6RkxsRlkvTzNuZ0VHSzVUd29EaHA2Zis3MEtLNFZxR3h1bzQ3SzZSaHhlSDhkMlJzTGwrdm9WQmczdU1IakkxNVJ6TDlHS2l3RS9pa1FRWFVDWDdKdTZYRjBYcnZwNjY4dVkxbDl6MHNBaHdNVTdlKzF2cUxvUmMwN1E2bmRERGlEb21NUmoweWFtaWQ3SjRNSFpCazFKTHVBTTF5YmYwWnhOT1BjTUdqTENvQUdiclBjbEhWNHJuMjNsNlBXL0hEVndDSERoWHJsWVVoSG9DM2JZVnFXVHRja2hCeEJFSCtMaWVQQndJWU9IMlprOFpFMmxzNHhrWEkvL01IaklsMTJHTWlTeEJaM0l2SEMrTVVUZmMyUEVKUHBidTFSNnlQc01HamlFV0VjWjBiSWtieG1MUWc4ZzZKekV3ZkhnNFV0Uk4wL2FxcHk4YVZwU3ZEbkwvclRrZFJqVGNraGZjcjBQT0FqbiszZ3VMckYyZlhKNjFCakZkcjE3VEhLUzFYblAxV3AvcmN1UHYzUGc0UHVobU9JK0JsZnY0L3R6eWV2ZmhrelppV2tjRHg1K0ZIVXphVG1nekY3TXpsc3RrcmoyT3Q5WEp6bTk1YlVlenhuY3diOGw5cXU1eHVSUkZKd09Uam5ubUd0ck9sYlBOOE45QnpNK3YwTmxkVnJpeXlidnVlLzViZllJZzhiQjhUVTQrbUhrZU4vUWg5UUdySkxCNHBlamx5TkZhMFJjZmplbG9pL2cyaUdEQnJqUU8zQ3dlVng5ZGlaZDVHaVg5bm10K3J6VWdHR3REYitsRGJjKzM0ZkJReHhjWGd0anpybDBabHdOR3V4U3FUZU9Ya3NWaDZIL3BDcmE1OERocytMZGdKOUJCaHcrbDMrNTJwTUozQnM0eUlYNjNNZVIwZEFSSCtpbG95VlUzMTE5OGUzc3JPOWp4K0FoRGpKVGYrYWlzVVBPdWFSOWROS1prWHNBUzNBQUJZcTZ1WmN4QmVsaEx3TmN1ak53OEIxbGlPRE0zVXJINWw3bHZESHNaaVk1bHM0M3VzbHgvT0Q2ZFZjWVBNUkJhakk4Y2RIWWJlZThxSnNqVjJrZkNaTUQ2bnlVYXJHek02MEJ5TVBmemRGOVphWmRpYUhENEtxTmdmWmMyR1VlYjN5OUZ4bVg0aUF6OTA0MlRmZWRjN3RCMTJaaGNuRXd1SjZBd2E0SC9PQ2g0d0tzVDN2dUk0UFRNMEkxSjlGcFlLV2JWY25iOGlUTlJ6dW1BY002eDVsMm9rTjA1RCt1cm9QdTRFRlNBUDV3MVQ0WHJ4TURxVy9oUXJDSHZVU1Znbk5SVDBRVGgvZWpuYWtUN1hyMW9tNThmL3IzUmQyOFgvL0wyTC9QUzEzdnhwamZTK3d6a09nMDRNeWZnWU92RHBqbUcwek1BNFl1WDRNSG9nNXg4VEI0Y0pJQ01NTkJnNVA2Rm9FZjlrNmlTbVBaam04cTE0ZkxlL0RRUFVCTFRSeHRlRTluQlZFRFdPUjZOeU92K1FVSE9NQldveXBIajZINGdYRG00cUhzT0RYbFhOY09jK3NqVWk0SER5Nk9RQTZEQnBlREJjUkZROFJUVWRUNVcwOEU1S1N0eXN0bG1wTUVCZzVReWR2QVFTTkhtWks4VjlHZXdNZWdZY2c2V3lpanBTTVJ5NkJCNDNJM0luMWhwSEx1RlM5WnZTanFwcHRZWVZMUlNRQzYvQytIY0ppck5MQnljOVkyYVBCQ2lsa2h6bk8zWk1mek14M2ZXVndWa0VOOEptZkxpeVRWK1kxa2NHSnZHaEN4clpXajU5Q1EzczNsZ0VIcnpZNmJNUG9zMUlsNDFsWWxlZUduKzBDKzlXdzljMUVVY2ZYTWsrKy8ycWl4UEZPcDU0STdVa3VZa0tvSDlrUjV5czVnMDd0ZHRsVzVNME9FQjA1Q290bzc1UjdiZCtMcGRSR1FMR0VJc2hlSEtNTThITDk4K1RyM2ZWSGpvbTVzZXRYWFNnNzJJNUp3YlBXVkt1THFaYm0zZEJWeGVPdnA5WThEZDc2dlpiWmwxcURCZHJZMER4cUt1dm50dVZnZkc5b1NJUVAzWno0L0RRLyt5YzRpcXFZUHQ1NHRjZTV0VktNYmxkQncvZG5uMlpMdkg5amc1V2pNdmtPclA1dWpiWkdYdm56TnJvU1lWVWdsdmVvdXZ0c1hVeWNtZEZ0alhSWW1EeUF2R3lqcDlBNm45Vmh4RHYyTHNaNVJ3T2pFWG9EMytDdTM2NzJvbTFOcU9jQ2x2MW1WZkdkbWtOZStiYXZ5b2N2WFpjRGdEaDJJdExuK2pxZHd2WERONTJ2VHVYZDhyM1grekF0RjlsemMyWGZoSzZ1Z0hhUzQyT09CWG5hNVUxWURoOGlXd0VXWHdmTE81dWdBQjNyUFpZNzQxRGMrbS8vYTk0bEJBMXh4ZFo2NVhwQXF4OWUyczJlZUJuWVpzS2NsVGxyMlhRQ0RGSFhqWktBYll3YkxlMW1WNUdadzV2Tk5OWFRXUTdWaDZzM1Z6dXhJKzU2N2I5VWRaM1FDQWVBZnVTZCtkblZJVXMxK3g3TWpEamxtc0hMVnNkL0MyL0orN1hyVHNkcjFjQ0Z1Q0VzTUlPekZGR3JBTUdQUUVLUmVoTFNSdFk4QXNNYW1GbmI1SEpUbjNRSEhHVU01dlA1c0Jxc29VajA3L014ZTkrMzZldTBZYkszakVHbzJJZFFBUXQ3RDl5anhaTTZBSWRBRjJUQlRCQUM3T2I1WGZzdTkwNEhGL01qdDJwTSsxWGZYcitudzVieXU3dkhsd2E3WGxRMlZYalpFclZ1ZEVOZWQybEJmbHBrUmhpQVlNQURBT0s0VEM2UlF2NkNvRzdzMis0dUNwcVJ1MzJYL3EzTWRmMUM4SWYzS1lmMmhzdk9aSjlYNGtxVmVqeHkxNTY5WVYzenNIRGdZMlJEbEs1MWpIMWNEQ0FZTS96QmdBTkJIeXl4a0RDbExpN3F4bGRFL3VuaTlxWU9Ib201c2JaWUxGMjFRNUVtb3BpaWFkWDgycEZhRDdYOTVLdEw3dXFpYm9KdlNoMTd2dHY1UVVUYytDcGZlZURxV1U3elUwcEN4dGk1VldoZTZXTXpVcFR1K0M2U3RURDBlTm5RVzhPWjF5NkFCQU9acnEvS1RoMzBQTDBiK1dtcURCbnRjczl1OE8wYU96L0RVUDdPOWx5aG94aVNqQmc0cmNrS3ZRalZ5NkFEQ3pzVEl6M2t0S09OZzQzUHB2bFgzU1R1anpDRU9BRm81N3RSOHpIbmZBeE5id3pCNFNFZnNuMnZTd01GSUtHbUp5cjN5NTE1bldHNjh2bWRpcm1ZTUdJSkVRY3dDa1NFQXlJM2NZMjlkZmV3Y0J3ODhwOGFSNDZWbXJVMElpVjBqSDFMNFBJUDJPR3l6T2dpQmIzcXJkV3FmQTlRNStHUE95YmFEaGtCbDlXMjJKTkw5QVVBQU5xTHJNbmxJQ3B1bWgyREFNTjNxR1ovVFFETmtraDVmVXJybVp3OGNWaFlhUUhnZk5EZzYyZDRIRGR5SUFTQTgxOGxENUhYZXRsVjVudGpwUEtOdWtEdWRQbGZVSGVxaFZ0OHpFOWVnS2NYdnNidUJ3MG9LSTBNVFVVZWNBUU1BTE05eHl0YjNSZDI4Nzd1L2R6cU1vU0xaVTltYVJwZUsyNWVFYm9mYS9IZGRPTXY4NVpMTHZzcjZheWthU0Z5M1ZYbWtvQjFlRlczcjczaEhtamJ1aWVzTUQ1NHVhczA1bUFlUlBPQ1RERWxqUjVzMzQzUG8raHhUeVNSTjlNc1R4NTZMbVovN1o2Z3NQdHF1VDZrZWJKL0x0bDFQSjc3TXRUSG0wMUl6cVhPT3FSWkwzM3VLdXJHUm54Y09FclhZYStHcjlraVNYRE9uTTY1NUk4WGFMc2tBNW5uZzhQZE42dWJTWVRFUFg3enREM0E5Y0NES0FBQUFnTkNDREJ4V3RBNGdmSGZFWFEwY0dEQUFBQUJnS1VFSERpdGFCaENoT3VJT0JnNlR5cVFEQUFBQXJpd3ljRmhaYWcvRUV2VW5KdjdxcjdZcUh6dHVEZ0FBQUREYW9nT0hsWUJabUY0dVVlWjd5c0NCWlVrQUFBRFFSTVhBb2N0VEJxSmJXNmpIdytzT011WXpNV0FBQUFDQVJzN3JPTXpsdXBBYzlSZ0FBQUNBK2RRTkhGYm1EaUFpNm9nZnRsWDVYVUU3QUFBQWdJM1VEaHhXeGxiSmpHakFRRlZOQUFBQVJPTi9zVFRVN2xHUVFjSGhoaC81RU1tZ3dRNFlDZ1lOQUFBQWlJbTZ6ZEZqckpZeGFSOHcySGF5aHdFQUFBQXhpM3JnQUFBQUFDQ01hSllxcmRpaWNaNVN0anBsMnhoRE93RUFBSUFob2hvNEZIVnp1VVNsNmJHNkF3WVpRQnhvYnpNQUFBQ3dUVFFEaDZKdWJNclNZd1ZOMldwRGxPR2JESG9BQUFDQUtFVXhjSkJVcktXQ3BteTFZMm5Tc1h3T0FBQUFJRHJxQnc0U2FkaFp2MkZwUmQzOEhOQ0VQZlk5QUFBQUlFYXFCdzR5YUlnaDBuQnVqSGswNHVjWlBBQUFBQ0FxYWdjT3NpY2doa0dEM2ZqOGVzTHZNWGdBQUFCQU5CNW9iS2hOdVJyRFJtanhiZW92VWhnT0FBQUFQaFIxODlnWVl5ZmluMjU0K2JPMktrL0h2TFc2QW5BeWc3K3pNNjZodyswcWFzRGdBUUFBQUhQTjdKczJiVlZ1TFNHZ2F1QlExTTFEWTh6TmtKOWR1clB0ZXFrUmd3Y0FBQUJNNGJoZmV0dFc1Y08rZjlBMmNCamNtQ1U3Mmg3M0oreTNWVW5LVmdBQUFPeTBaYVhPVlZ1VnJ3YSt4dSsrREtaOWZXMDFBNGV4bmZHbEJnNEJOalVmdGxYNTNmTjdBQUFBSUdKRjNSd1pZNzUwUDhHYy9uSGZJR1Q5OVZSa1ZZb2x3MUNnZG42VHplRUFBQURBSnQxQnc5WGNTWFU3Y2IzK0d1dDkzOFVIRGhFTkdrSkdBUzRrSFMwQUFBQnd4MXIvZWZDeXBDRjZCZzkvKzhDTERod2lHalNjTGxCVDRwakJBd0FBQUxaeE9XaFlXUnM4L08wREw3YkhZZTZnSWRRZWg2SHBZVDNhbVJvTEFBQUFlZWoyb1RmMWgwZjBzNi9icWp6YThCcDJRSEloLzNuU1Z1WGxJaEdIb202K0x2RytFeTA1YUxES3dNdWtBQlRJYVQ0QUFDQUFTVVJCVkFBQWtJZW5td1laZHFEUStjOC9BNGpnQXdlWndkOVV3VTRWUlV1cEdEd0FBQUNnNjBub283RkV4R0hwR2Z4QkZPNi9ZUEFBQUFDUXNlNysxN1lxZjQ0NEVzODZmNXIxZjl5eUd1aFo5ejhlaER6MHBGMmQ3Yy9nZ1QwUEFBQUFXVHFlOHFIYnF1d09EQTVrTXJxYitLZDNOWkQ5dmFMK044NElGbkZnME9BTWtRY0FBQURNOFduczc5b3NvMEVHRGd3YW5DdEoxUW9BQUlDSjNrejR0U1B2UzVVbzhPYU5yZlBnSlhjdkFBQUEwakdnUC81aHlJZjFHbkdJcFROZTFNMmJCUXE4dVhBc09YWUJBQUNBU2RxcUhCU0I4Qlp4a0E2dCtzNTRVVGVQalRIdkZUUmxxZ3ZaTU0yK0IyQ0xvbTVXQlc2TzVJOXhrQnE2a1hXaW4vZ082dVhwM0Y4YlkreG13L08yS245SGZHeGV5SktGc2NkajlmbS9ybTI2aEhMeWZYZzFjWlB0clRIRzN1c3UxM0w4STI2SFExdnZyWEswN3lWS3JpcEhSN1N2WVpmOVdCNWVzajlqVWxhQWp0dTJLaDg2YmRnV3Z0dnMrRG84WEtvVFc5U052UWIzWEwzZWxvcVlieUlZOEh1dCtwN1F2V3ZVL2R6UmQ5RzNqWlZZbDJJM05ScGozZ1YrKzdkdFZaNjdlQ0hYOTVhbHVlckRiTE5XOVRja083ZzRHdnNjY25SUGU5bFc1ZWhOdjFPNGFPK1U2MkJJMWVqMW54Tm5mZmVBSVczb3ZOYVpsNGdEbTZFWGNXTS9VaVJ0ZGZIUUQvMEFpYW5OM3hhOEZrSjl4aGlpaE9YUUczenViS2UycmNyVGdZZEIrNkRCckZkaVhlcmNLM2pHdlMvcVp2MjcrbVJrN3ZtVlpBWU5QdldrMkZ5Q1BWZmZPaWs4UHd4ZEJ1UEFteW5aZ3BaaW96K2hJblp5anoxZHZ5L1krZzBqSmpvK09kL2pFT2hHZGE5d3hWaUpEUnIrU1BFellScVpuUXZLdy9YM2JNRFBSTU1lSDc2amVRcDk3cFZmYXovNEhyalhPZWNhbDRpL1Z0Q0dsRnpQL0N5LzF2NTc2ekxGb203K3JwU3dVU1NuQTRkQU40UGJ1ZUgvVURldEpXYVp1Q0hIeWNPMUV2M3NYS3JycGhsQTVFdk92YmRCUGRkV2Z1ejFGTU01MzFLVkdDUE5YUWJaVnVYam52T3o3UnE2NmY2SHM0RkR3RUhEckhYdG9RY05EQjR3d3BYTGcxWFV6WlRsQUZQZnkrazFsOE95SHI2bjJkcnpjZTY1bnZJajU1d2xYQm1iK3IzdmU4WVdkVE5vVXQ3SndDRlFNYkxvQmcyYi9qc0VIaUx4OFZDVDQxRU94eTFtZkUvejVmTGNjeDNsaDNNT0Q3NnR2MlIzbVpJeDVyTnhNWENRZEthK042dTVHRFFFeVRLemFaREE0QUVET1YzWEh5SThUTFJoSHI2bitYSng3cmwrOHNNNWg4MGV0VG9JbTVZLzJtZHA5OCt1ZjkvdzdMM3AvTHhOM2V3azR2REQ5eGwwTUdnSVVsTmlWNGRub2NFRGVaWWo0bUZkLzl4YzlRaUFqa0MrNWd6dXVXN3l3em1IK2ErdjBNMGN0YmNXR1hCaTA0Qmsxc0FoeEFVOHQ3TXRCek5FSHVQOUlUKzB3T0RoMk1jRkJYOWNYeU0rQjQ5RUc0RFpKZzN1WlVJTUdXSFFnRFhkZnVlTnk3NmVyTkw1dTMrbSsyeWVQSENJWWRBZ2JnYjkxRHduWTRxdkxkQTVDbkVNb0ZjTWVlK05neFJ6VWFOVGtLK0o1MzZKd2w1WXlOQ05xOGlIOUR0dk94LzR4a1hXdHA2MHZuY214aWNOSEdJWk5JU3FLVEdsN0xwOHZ0c0JQK29FblpLNGVJZzZEQzJ1TmVZMVhVY2JWRlhhQlFCRjdtMWNCV1FwZjdjdnVUY2xMYlBkcjd6aDk1NnNUNHlQcmh3ZFlwTnhSSU9HV1RVbDdBa1BXZVhSSGhPV2dtVExscGwzUG5od0tLbGliMVBaRkxwOU9iYVJ2cUp1M3JSVmVUN2tneklSbEJkYlhUajNZNEROcEMvNWVIM1A4ZHo3eEtiKzRxaUlnNFRLdkhaeUl4bzB6TjYwTGE5eDRLSVM5bEJGM1VSVGlqMTNIcUlPenRaRXV5NWlsV3F4dHdsSW9adXY5N2tmQUd6MGhVT0RiZHFxL0NsOWhqTUhCMnAvVy85ajdGSWxyNkd5eUFZTnpqcDFnUWNQendPOUQ5eHd1ZTdmNVpwb1owV0hpSUlCUVBLQ3BNVFBYVnVWcDUzVXFrTWorZGRyYVZtM1Rnd09YcXJrdTBPZTY2Q2g4NW9Ib1pZdHNXUXBIbmJkditOQ1VRZHRWYzY2Z1llc1NPM1oyT1ZSUi9MSGE0cGJGK2NvTnZaaEY3akpVODc5aTFETFNoZGtaeXU5UnYrSUx2NHhlSDlqd1B2dEIyT01seFVKblBObHlIRjMzdGNiTkhDSVpOQ3dhSUUzUjYvTjRBRjluamtNVlg5emNDTnh0cHhteVd0d3dzUHMzczlMcWx2WFdhdGNuS05CY3IwSFREejNkd1kzMHFGenVyVE1KakhZTlloeXZkNDl0MnNnd3MvcmEvbmkvcGhza01ES3pxVktBVWE3ZytvZmJLT2x3SnVqOXpnSWxXMnBxSnNYSWQ0SDg3aWVyWm1UNnpsRUplcVl0Rlg1aWdGNG51d21kZy9uL3QyQW4zRTJjT0RhemRLekljdFJnRTIyRGh5a2crRnpzOTdaM0lzM1ZJRzNrRGRZRjV1dUIvb1k2SDB3aytQcmIwNWREMmZMZEZMcXROQUJ5OWNDNTk1VjFxMFRSNjhEVHlSVGpqTXlZR0R5QjdQc2lqajRMQngyNjJoZGE0amlab2NCM3VPT1VBOGowdnBoS01jVnFGTXM5a1pITEYrL0FuNXlKNTNKS2ZXSEVOd1BoMi80Z2RNSEZ6WU9IQUxzYTVnOXF4Nm8wM3UxMUViRmdJTUhLbEpHd09YMU1QRzc0Mnd0ZjRyRjN1aUk1WXZhRzlDdXJjbzNuQ1M0MER0dzhOMlJqS3pBbTdQYzkxTUVHanhRa1JKYk9hNDh6Y3c4QUlURFBSZk9iSW80ZU90SXhyUVdPT0JlZzYxQ0hMT0VVbXdtYmNHb3c1Qk5tNE13TXcvTXdocDFqTUk5Rnk3ZEd6aTRyZ2k3NWlxV3MrZXFnK1lxTWhKZzhFREYybmdFM1IvZ3N1SjBCcHVJVTl5N2dRUzUvRjREeUVkZnhNRlpSZGgxU3kvN0dVcmJvS0hENitZbU5rckh3ZVgrZ0lIbjNIdldzb1F3R3d6ZlhGMWpmSzhWbTVNMmV3MlRHWERxenNEQlo4Y3hscGxHeFlNR05qZWhLOGlhVlpmRnBraFpDc3puTXAwbWswV3FPWG5lcDVpSUFzdmFXUURPa1pjeG5HZk5nNFlWMzUwdkNuekZ3ZVdhMVIzWHE2dUsxUUFVWXZDZ0ZoT0ZVT252d01GelovZVQ5dE1mdzZCaHhmUGd3Vm1CTC9nVllCRHBMTVZrUnRFR1p2Y1FIZnZja2ora2xkWEQyN0p4WUE3dkVZZElPZ3o3TGw3RTg4Wnl3SnNOQTE1WHhZZENGc2RhR2dOdnhPekhhaERCV1FUUTU4L0FJZk1DWUNkdFZjN3U4TXNTbjJBekJENEhaRHcwNHVIck9uQzRNWS9pV0VDRU9sR0lSUXFnQXREcGdiVEtTOTJHQ0tJTmpZdTE0cExXYm9tWnhqT1grZlZqd3dESExYczhPOS9aRzBjdlR1RWh4Vnh1ZmgvTDVTYmZERDBMdVArbzdOeHJUMkt2Q2JEVU5jLzFqbFE4eVBsTXRsVTVPOUlpTTdPTHBMVnJxL0swcUp0c0J3NzRqKzNzYXgxRTVWUjR5SEYxN1ZBVzIveGUxRTB5ZTE5Q0Y5QzBuVkI3L0Jad1VkVE5oWWw3MzlJaTEzeEsxenZ5NW0zZ29QMEw0ckI5cm1abXAvcEY4VGJZNkptZEdaeDdJR1NmanFzbGQwNzJEa1dFUVh5K3Nyc0hkeVlyYnR1cWRMYTBFWUJ1Lzh1eGVtUk1HWlIyWWYwNGpLUG9tWEMyVDhmRjNxRllPTDRYNUxTWlBHbzI0dXo0M0o4Ti9VRkZrM043bmYwUU1VYmRBSXp3SUxmcWtTa05Hb0ExSjFxK3p6bUU1SXU2ZVdHTStlamhwWE5PVmhHRm9tNXNqdjMzcnR0cWw1OUdmbWplclpiUHNpd0hTSk92cFVwdk5SNHRCZzFJbWQxUHNGcC9qTjBVN3dzaHJiTm5xZHpETmU5dldyV0xBUVNRRmk5MUhOcXFQTmQybEJnMElCT0w3eXVnb3dBRTlVVHo0YVl1QkpBVzd3WGdORWg1ME9BeTN6N2lwMkMybXZYNTh3eGU0NDdrSEU3NVFHMVYvb3doN1RHREJ5QU5YZ1lPUytZRzd6SHBacnhPY1ZYb3BiTTZRWmtsWi96WnJEOVBBbXZjTVZGYmxaTUxyVW5hWS9WWnpDVDZ3R1FYRURGZkVZZkZjb092dVpwek0xNHA2dVl5WkZWb0lGTE1sczlEdENaZlYzTS91WTAyUnJKTThJYkJBeEN2bEpjcTJkelNzMVBORm5Wak01d2N1Mm1TV3g2aklIUUFJN2RFQjRMWjhubUkxdVRMeGJOcXhYNzNJeGhBRUNrSElxMG83bTNnVU5UTm9odWtYUlNra1ZtUmIyNWE1SVdYS0FnZHdHU0VuTUhPcmRpYlUyd296NWV2Yzk4WlFOeHFQTGpzZVlBblR6bXdmdjFQS3M3NjhIcXBENVZRVmVpTnVPbGlsNUF6MktRUW5lVlp4RzNIUE40SDNIWVNMWklvQklBSS9NOWh4ZGw3aXJyNUdmb1E1SkIyVlFwUEFVTjRYM1pHaDJTV0p6R0dxakdmZE9hRERyZzdBd2duU1VQbVlnSU1pSS92UFE2UFFoNlJqR28xK0toVyt3ZWR3TFN3N0V3djZjUUZuMXhSNURyWEQ3NzBmZFltRGVrTUlqNHMyUllBY1ZsVmpyNzF0VjdlZHNKRDNDUnpHVFF3UTNOSHlFM2M3d0srbDJ2N3ZwYmRNZEFjVDlNeDQveUZwZkY0dDFYNXhoaGovNndTYmdUTklHZ1RrTGpJZmpnVTF6d3d6NStCZzEwRDZiTkRXdFROZDU5TG9oZzBPQlBWV3V1UXMrbEYzVVE3Y0xETElZcmF5MVltbFpzdWxmb2dIVFRrNTBUcUxLalhUU29TOEhsb0U1RFFtVWRVY2s0cC9HREF6N2hRMm9Qc2FUMm5rODFsRVF3YXZIYzZXR3VkTGp1NGRuMk51OGhjbGlpYnplb1YzNmZzUlQxWVhFM0lTVXB5emRrRmdTVmtPeEgwZCtEZ28yT3g1c2JEck1LSmk4R0lqWWk0YVk1WDd6Mi9QcGxkTUViMHRUNVlzcEN2VGVkZW5nV2xvd1B6T29YT2hTd2pXZzBpZm9iZXU1aXhYeGtlNit1STBxbkd2SHg1bHFBRjRCd1BUQm9YNFYrcE4rSHFRZUZGaUdnSXM2UHBjOWxSWnRNMVV1UjZTVzFxZTlKc2ltY0czTUZFc2J6TnNVOUpmWnBFM1JrNGhMZ2h1THFSdXJqQlN3aDJzWG9UUXdRYU5QQWd3QmpaWnNOQitsemZENHU2U2E0aXVCeWprQVVtcytOcWNxYW9tMmdtQmR1cWRGSTRPTVRTN3B6MVJSeTgzd3drYzRNR0lkWnRUbDRDRkdpMmlnMnVBT0RQanhTUGJjZ0NrNWdseDByS3ZwZDJaKzNld0NIUXpXQ3ZxSnRGdzNDQk91VlhVNWNBaFFweHM4RVZBTzd5RUhWSU5ZMzJsWUkyQUVIbEh0SFl0TWZCZXhsOFk4eHhVVGRIQWQ3bm5sQXorVzFWdnByeWl3RUhEU3hSQW9CK1R6Z3UyMDE5eGlHc29tNDRUMjY1aW1oRW1XU2tkK0FRc0F6K2w5QzVjTFhQNUFlY21mS1MyQjhBVXVDNnFqZkZPN0dnaTl3T2ZnemZ0MWlUakd6TXFoUndOdm9tMU9CQisweCt5TDBmUGd2eUFVQUtQQ3haSW1zTUZsSFVEWm53SEdBQ1lFYzYxcENEQjk5dkVNR2c0WHVvVXY4c1VRS0F3Vnd1SjNpZTBtR1hkT2J3eCtXeThWanFEamo3dnJudTkwVlM4OHU3SVhVY2dpeHA4ZG14ajJEUWNCbXFsZ1NEQmdBWXp2Vnlnc1JtTEZXbk00K2Q2MlhqOXRyVG5oNVk2L2ZOY1hISXFPMGNPSVJjMHVMamhocHFoRGhqMEdBM0xSMjdiMUd2azBEdkF3REo4TEJrYVpIRUlDNnhaQ05hUDNJN2R6SmdtalFJczB2cDVYaTVIalJFbTVIc3daQWZzamZOVUJlYXZNKytpNUcyZE1xOWp4Qm5EQm9PQW01YXVuVlJhUnRBT3JSMElDS0poRFlPbnlkZjdPRjM5RnJCeURyNVdKYTg5Rkp5elorTWVCNjd2TzcrV2pzT240MHg1MVBUeDBkaWIrMHpuL1ZGTjJSUWYrcTcva1hNR2NrR0RSeE00TUdEYkppZU5YaVFEZGNoT3VXSE0zNDNSQUc2UDZqWEFFQXIyeUhWbm1IRVJ0OWRQZ1B0YTAwWk1ESFRud1RiTnhrMGNIQjkzVzFnOTk0OEwycXZLOVBmanFnTS9kSVk4OUZuWSt3QXVLaWJxQWZCU3hteXg2SHJROEIyM3NpTS9PVGZkOWlXVGV5SWRkSlNxSkEzZi9ZMUFNQjgzRXVCeVY0TS9jVzJLbFBQUHZaTFFSc21HelZ3YUtzeWRMVzhiMU1LbHdUcWxEZFRaOGdZTkFBQWlCN3dqQnJvV1JTdHhDQnRWYXJlb0w3TDJJakRFbC95QzhrNk5FakFERXFUb2lFTUdnQWdYaDQyU3BQaUVWc2x2dmVnRi8wWHZVWVBITXd5Si9TNHFKdWRWVHdqU0xzYWNuYnBaY0QzQW9DY1BISDRXWE5POFJodFpwa0Z1THptc0pBVUJrU1RCZzVtbVEvL2FGdkhPNEpCUThqMGU3OHlXQ01JQUl0b3EzTG5STllZdVM1WmlqbXpUR2l1cjdrWUVIWFFhZkxBd1N4MFV2dHVzTm9IRGVLTDA4WnNFZnY2T1FEUXpzT1NwY0diUjFOQXAzQzhUSTlaeUtROFhxVnkvbVlOSEVUd1RUdmRnY0xVb2g1anpUbmg3R3NBZ0NTZE9meFF2dE5QYXNJU3BZbHllOFl2a0pUSGk1VE8yK3lCZzJ6YUNYNFRrRXFBZHRQMG51LzNpdVdFTTJnQWdIQmMxNTdJWk1sU3d4S2wyZllqYi84b0NmUnRranBmTGlJT3EzV0t0eTVlYTZUakFPOFJ4UWxuMEFBQTRYbFlzcFJ5c2M2WFV6TVM0aDliSERmRHlFT1VuOWUyZTA0eFk0MmNEQnhNdXBXSlR5STU0WE9xVndNQTVuRlowQ2xFOGRMZ3BBTkYwZzZITWgwOFJKTXhNdFh6NDJ6Z1lOSTdTTmR0VlE2dUg3R2d6MU9yVndNQTVuT2RrR0pJK3ZHSTdCTVI5MGNHWkRFY1h5ZkwwK3pnTTRMUCt5VGxhOTdwd01Ha00zaTRiYXN5WlByVXlkcXF6Q29UQndCbzVQalo5MmpUUDhqN3VOeVU3Y1dxUTV2YU1nMnR0QThnWEtlVDdYemV6eTVmZDQ3T05aOTA2dHdIUGw3VUhyaVlOM25Gc3V3cTRrSGFiWWhON1k3RjJHWmZzcXRpQ3U5U1djSnk1V3J2WFZFM1h6ZE5ZTW1tN0hzYnM0dTZzWC8zenNYN1QzREZwdWZsZGZzRlJkM1k3OVh6aFJwMUhXSUN0anQ1dXNUMW4yTTByV2hiZi8zN0dBY1BQaTRDSDhjaGhZdDFSbEc4bjB1TjZHZTArYnVXbWJlaWJ1em14RW1EWThtaXBzS2Nvb3FhUHNjY2dRdExlakhsWE1SdzdqVzJVZHIwYXViZ3h1YlZ2MXhpaVd4Uk4zWkpXT3gxaW40dnVieFlyZ0hid1g3cTRPV3U1RnBRZXorVlpBTnZaZzRvcm8weDUrelIrWS9YZ1lPSmJQRGdxelB1K2hpd1hoUUFBQUNoT2QvanNJNGFDRzR4YUFBQUFNQVN2QThjVEFTZDNZZzY0OUdrSVFNQUFFQmFnZ3djak9MT2VVU0Rob2IxZFFBQUFGaEtzSUdEMGRsSmo2WndHdFUyQVFBQXNLU2dBd2VqYS9Cd0ZVdmhOUFkxQUFBQVlHbkJCdzVHUjBmNE5wWjgwd3dhQUFBQW9NRWlBd2V6Y0llWUFtOEFBQURBT0lzTkhNeENIV1BTcmdJQUFBRGpMVHB3TUlFN3lCRjF4dmNWdEFFQUFBRDRhL0dCZ3duVW9ZOW8wSERTVnVWdkJlMEFBQUFBL2xJeGNEQ2VPL2FSMVdxNFZOQU9BQUFBNEE0MUF3ZnpyNE4vNitFMVkzQkxyUVlBQUFCb3BXcmdZUDVsUEdvY3ZWdzBld1ZpeWZRRUFBQ0FQS2tiT0poL1ZaSlBacjVNTkhzRnlLQUVBQUFBN1ZRT0hNeC9uV203MXY5dzRxOUhzMWVBUVFNQUFBQmlVTFJ0cTc2WlJkMk1hcVMyenZpbTlqTm9BQUFBUUN6VVJoeTZ4blN3S2ZBR0FBQUF1QmZGd01FTTdHZ3phQUFBQUFEOGlHYmdZSFowdUJrMEFBQUFBUDVFTlhBd0d6cmVEQm9BQUFBQXY2SWJPSmgvSGZER01HZ0FBQUFBZ29naXExSUtpcnA1Ykl6NVlZeDUxbGJsMTl5UHh4eEYzZGo2SEh0U2JadkNlUUFBQUFBQUFBQ2d3QU5PZ2w5RjNkZzZkTWNwZjhaUWVvN2xYcWRFeG40c2hjSUJBQUFBQUFBQUlFVUVIRHdwNnVhN01hWk04c01GVnRUTmdUSG0yNDUzdlNucVA3dmxUOXFxdkV6dEdBQUFBQUFBQUFDQWRxUlVjbXhBb0lHVVNpTjBkakNNMWJSVmVhRDk4d0VBQUFBQUFBQkFLdGpoNEVpbnJnQWNjSEE4eTFXd2dzSjdBQUFBQUFBQUFPQWZBWWVaU0oza1ZsRTNkdmZIVTVjdlNwMEhBQUFBQUFBQUFQQ1BnTU5FUGliR2MxYlV6U3RqeklYblEwQ2RCd0FBQUFBQUFBRHdoQm9PSXhWMVl5ZXFqMmU4QkRVY09vcTZlV2dEQVF1OS9YVmJsVWNMdlRjQUFBQUFBQUFBSklVZERnTVZkZlBDR1BNeGlzWkdZa1pCYUZlZVNodHUyNnA4bU5PeEJ3QUFBQUFBQUtCYlVUZHZqREdubm1zSFg5bjNhS3Z5cDRzWFk0ZkREaDVXNEdlL3c2R29HM3Z4UGxMUWxIc29NQTBBQUFBQUFBQWdOSVVwL0o5TUNVSVFjTmpDMHdyOGJBTU9SZDJjRzJOZUsyaktFQlNZQmdBQUFBQUFBT0ROelBubmEyT01uV2YrYm96NU00KzVtbmVXUmZRSDhuTTJwZnhqK2QrcGk4RFAycW84SGZLREJCeDZlRTcxazEzQW9hZ2JlM0YvVTlDVUtRN2JxdndlWDdNQkFBQUFBQUFBYUZQVXpTdGp6TVdBWm4xdXEvSkZpT2FQYU5QTzFQUUVIRHFLdXJFVHk2WG50OGtxNEtDZ1RvTXJKMjFWWHFieFVRQUFBQUFBQUFDRU5DQjF2NW82c3dNeTFUUnRWUjcwL1FNQmgzRVJIQmV5Q0RnVWRmUGJjekdUcFJCNEFBQUFBQUFBQUREWWp2b01xdWNidHkwbzc2dUhtM1hBd1VOQjZDR1NEamdVZGZQSkdQTmNRVk44dTJxcjhsWGFIeEVBQUFBQUFBREFIRnNXWnY5cXEvSnhEQWQzVzhyODlhQkR0Z0dIQlZQOUpCbHdLT3JHNWhQN3FLQXBvVjIzVlhtVTEwY0dBQUFBQUFBQXNNdVdGUDZqNW9pTHVqbVNvczlHL3ZmaGhOSUFuNDB4NTNQbXBqZk5xWGVERHRrRkhCU2sra2txNExEUUxoR05OdVl0QXdBQUFBQUFBSkNYTGJzQ3hnWWJ0cVZqbW11L3JjcmZZMTVqVjlEaGY1NGFxazVSTjIva1lLUllWMkFSY2p3Sk52eW50TWREb3BZQUFBQUFBQUFBOHRZWGJQaXNiREg2VFZFM1A4ZjhRbC9kQnZOdkYwYjZBUWU3QWw4bXh0OHJhRTRTN0tUNmdpbXB0Q1B3QUFBQUFBQUFBR1JzTmZtK3JxM0tGd3FQeXFPaWJzYldxdjNjODNkZjdQOTU0S1pOT2pFcDdwYmRKVUxnWnJCU3JqOVNMUUVBQUFBQUFBQjUrZFR6YWE5OUhZRk51dzVXQnN5VFh4aGpMa2U4MzR0TnI1bGt3R0ZMTVE1TU81NjJXdm9QanQwa0JCNEFBQUFBQUFDQXZOeEw2OTlXWmUrdWgwRE9qREh2ZkwrVjNkbVJWTUJCdG41Y0tHaEtNdGdsNGd5QkJ3QUFBQUFBQUFDcHVPNHBadjBxbVlBREUrTnVGWFh6bXdMYlhxd0NEMWR0Vlk3TmpRWUFBQUFBQUFBQWcwam1tc3Vld01DNjJ3bEg5R3ZQNno2T1B1REF4TGhiUmQzWUMvQTRwYytrMUhGUk4vWTRuN1JWT1RnL0dnQUFBQUFBQUFCME9WaU0vOWpSQVgwYWJjQ0JpWEczcEhMNmw1UStVeVF1aXJxeGFjQmV0bFhaVjB3R0FBQUFBQUFBQUh6WmI2dnl0NlBYdm80dTRFQUJZN2VLdW5sb2pMbEo2VE5GNm1OUk43YmxUOXFxL0puN3dmQ2xxSnUrclY0aC9XcXIwbFhFV0sxWWozTlJONmNoQ2lpTjlNc1ljK0R3d1I4ZHBmV1pidHVxZk9qamhXVUJnTlg5WC90ZXBZLzNpNEI5T05xQS9HVXF6OGVpYnV6bmVLU2dLZmpuV1Z1Vlg1YzZIdks5dDkvekExbFo5bGorLzF4M2NkdGN3Si9hcWp4WDBKYW9GWFZqcjZNWE5wZHlaUGVkWDNMdi94cmJvaXp1OFNvbFBjYVdPWjFYOGwxZmNndzIxN1drWnZtNjhEUFpIc2VQUzcyL1NEWUZ0NUxGNDJRYStlZXNyY3JUbWEvUld3UzdhTnQ0U2g4a1VxZGgwUUZORjNVdjlHcXJzc2o5R0xpbTZYcFArZnpHZkp5MTN4Tnp1eS9Fc0pOeHpEa3A2c1pPbkwzMjI2SnNSVE1vbysrbG1vc0IxeDJrZnZYSytmbUtrUVRsejduTy92Z2d3ZW52U3pXQWU3eHFhdVpoeGhxUmV6MG5Ocy84RzllVHhoS2svYWJrT0Y2M1ZkazdrUnNyQlFzVHV3NURQQy82bmd0VHgvVkRqdC9xdFljZWF4ZHpEQnVlZlNkUjdIQW82dVo3eGl2N25PTjQ2cmY2d2hKNEFJSjZwam0xbk53WFhHNXpWRXNtNTVNSk5naUNEZjZzNmlKMVpiR2pET294Q2V6UHU2SnUxbmNsSnJzaTFKQlNlQWo3bkgwdHU4YnZZRXlGV0NqZDJhdlJYaWM5dGRXMFZYbmdvSjFlZGpCRHBjWE90YzJzNEh2UmhBMVdEVW1kNzJ1T3dRWURWUWNjbEVVWDUzSjFBNXlNaDFkODVNdnZMWFVIZ0gvc3FxZWlidmFWcDVtN3NXMU1PZWdncWExVVQ4NHpjUkdGUjJ1cmJUNjBWZmttOTRNQ0pHNDkrQmgxalRRQ0RPN1k1d0hQYm1pa0pIMVBDc29RazdqQUJHK05NZS9YZnMwdW1QQityY3F1cm1MQTdqczd4L0IyU2lwTEdidjNVaHR3U0dnNzR1S1R4UW5XYWJpVGd6R0RyYXQ3OGhtVFhyVUZhQ0FUK1VNZXlrdXk5L01rQjgxSzYyaDBzV28rWG5iVjZ5cVFSZDVXSUE4Zk82dmRvOGpoWHRTTkRaQThWOUFVQUo0VWRmT21ad0lTOHlXVmZnaHBzSlA0UmQzYys3N2IrMENvV2xVMjRENWdmdU85dEduc1dMZHY3RzZETE9aL0kxL0lPMXRrS1pFSlpCdG9LQlFFRzlxRWdnMG5ja3p2REJiazd3b3BMSmt5dTJxcmxaMC9BRHpTdmdvdXhVQ3I3TUxUSEd6NFRMQWhHUmZ5UEYwc3p6ZUE0SDdJOTE1bElXcHBXMHV3QVVoWDUzdE9zQUhJeTl1ZVR4djBQaUR6R3g5Mi9OajZEdkd0TnYzc0twQ2lKdUJnSnhxa3NZOFVOR2NPTFlHRzN3bE5TRFZ5VExldVJyUXBxK1JMMVBkbFRzazNDcElCL2hGMENDZUNsSCsyT09rTEJlMkFXNlVNL3FOTnVRSmd0TmZ5dlZleEVyWXpBUWtnVVh6UGdieHQyc2t3NGI2d2E3SFVyMjMvYU5QTHloekg3YmFmcy9QSnV4cXk1V2YyVi8rUGlwUktxZHg4TlV4T3BaYnJjOG94bFMvemVXSTFRTzZSN3czcFBRQ1BCbTQvWEV3S09ZbGwwa2R6c09HWjVMOUV1cDZUM3h2SXpoZWJibW1wNzczc3RGQmRyd2pBUEFRWkFLeHNtbGVRdnh0VWMwcnEwYzJ1U1RkM2dmeVdlOXV6YnEzSlJRTU9FaEhaVzdJTkxpZ0pOQ1ExdWU3aW1MWlYrVjF5c2FkV3c2SnJ0ZVdKZk5TQUo5STUrS2wxQjE3TUU2VVNiUGlpb0NtYkpGMmdHM2ZKODNSU3dUUUFjWkx2ZmRCN1BaT1FRTm9vQkEyZ3o1YkZqQitYWEFReGxLU2pMVGY4K0wxYVdZdWtWT3FrVDRvNjJOQ3BIYkFvT1phcEJCc09YUjlUTzREUWNxNDh1bUR3QXZnak80aythejNFTVg3L2k3cDVyRG5ZSU04TmdnMzVlUys3UlFIazR5WlVpaVg2NjBEYVpGRXR3UVlBdldSZThxcnYzMWJwMXlSb3FVWW5MVnh2c0tHdjFxNVpJdUFnamRTY09tRW5UWUdHaERxdFYzSmN2Ulp3N0p5N3JUbkxZa1VSVE1BZnllRi9wdlVReC9ROGtHREREd1ZONlVWcW5ld2RheTBzQzhDYkwvSnM4b1pnQTVDMkZCYlZBdkN2cmNwWE8rWWxQM2FDRDhGVCs2NDJDUXlZYzk2NllEeFlTcVZFMGllcFNLMndZeHRMYkJhcFFiREtXYVk1VGNvTXBkd1U3bTFwQWpCUFc1V244dEJYdVRJL2h2UktrdWFPWUFPMHM0VmxMMzB2aEFDZ2luMDJlWGtHc0hNS1NCc0JSUUJqZGVZbGJmMkc1eHQrL2VtRyswdGpqTEcvOTJuS2VFVjJVYnphOHI0YkRSMHZldzg0RkhWemFveDU1L3Q5UER2VU1PQzBVYWJZZDRkMGFaalVXUVU3RWd2aXJQeUlJUThjRUJ0YlFMaW9tMzJ0dFdFMEJ4MjAxOVRoZm9rMTMzeE5QZ0xReWVNejlKaFREcVNKWUFPQU9TU1R3aDhqNXRCTCtmUE96dnQ1Wm5kaVBCNjdBTjlid0NHUlFyMHFDdkVtV1BSWVhSSE90aXB0MGUwa0F3L1NBYkxWNG9OdnhRSlNKZmV3VFVXZkZxYzQ2S0QxV1hhN1dtRUNkTmtkVFcxVkJzbnREa0FIdStxdnJjcFByaHF6UkRvRUFHR1F6aGlBU3phamdqSG1kUFdTTWg5OE9XVW53a1EydVBES1JUL0lTOEFoZ2ZSSjExb0dsNGxGeTlWUGVpY2NlUGpDYmdmQVBmdWRJdWd3ak9Mbm1acG5QbFI2eW1uSkJwTkdXUG5vZUhjVDk1SGxIZVorQUdDY3B4b3U2dVlnd1N3SjBhSS9qeFRKUXNmQlJhVGx2blJ2SWQwU2M3Rk9BdzZTQXlybWl2eHFWamdtVXZOaXhSYUVmcVdqS2NPa0duaVFDVDhWS2NLQVZCQjBHTmFPcGR1d3dabXNJc25LVXRlRXJOQ3h4L3QxVE1mYkZwQnVxL0tOZ3FhNHByWUlmbUNUY3QvR1pzSHYvWUY4NzBPdHpIUENGcERPcUJiYUwyUE1FYlhma3NNOS9qK1hIcS90YjU1ZTE3ZlA5cjdNbkFDUUhrM2ZhMmNCaDloWDRtdFpCU29GeFZMSjhSbDlpb3BFQXcvZmlycFpwRmcza0NxQ0R0dmZmNm4zM3VHbHk1UVoyRTFXNkx5UlAzOFZkV01uQWg0cFBvU3YxOXVjZ2h5RGJRaFBCcjUzVnVaRmtpN1dQaDhPNXI2STFPRFRLTG9GWVJpSGU3eGZFUldDSjIwb2dFWE1EamdVZFdNSFlPOGpQbjFhQ2tJZlJCd2h2eWUxMUQyZHdFTXFPMDhlYVM0c0M4UklnZzRxN3hHMlhVc01OaFFIRzU2d2tsT1BWUUJjSnVZdWNqOGVRT3BXZFpDTTdrVTlydHFrYm9FUFhJR2xod0FBSUFCSlJFRlUvWC9BQ2UyTFJOWFZ6UVNRbC8vTitiUXlrUkJyc0tHeG5TMGx3WVkyb1dERGZzcWRXRHRobDlMbnM5ZWVwRUlENElCTTZsOHJQSlo3RWd3SlJtdXdRWjc5QkJzVWFxdnlVdXN6bG1jbDRJZGQxSlA0QkxpcW5PSUVHNEQ1YktwRnhZZHhYL3E2QkJzQUxHcFN3TUd1eG84NWhaTGNnR2R2a1oxTEpudFRLUXA5a3RPRFRUNXJLaDMyajVMT0FvQURVckJNWTk3Y3ZWRGZkYzNCQmdYTndBNUt6MU9LTlJ3QVRmYTFuWTJpYmloQUNxQ1B5bHBVQkJvQWFESTY0Q0RiWG1OZGpmOVNTZkhNN3drRkdsWTdSV0xKWWVpVVhFK0hDWHlVUndsZGs4RGlKRy91UzRWbjRwRTh4NzBoMkFCSHRIMS9uaXBvQTVBc21TVFR0a09RZ0FPQU8yeEJlWTFIaEg0dUFHMUdCUnhrRWlIR3dybTNNaW0rZUhISWlJL2hQVnAyaWl6TnB1V1NCN3pHTkNxakVIUUEzSkZuemhPRmg3UXM2dWFyanhjbTJBQlhLT2dONUVkMkNHcmlvajFlbnJjQUZxTnVvU1g5WEFBYURRNDRSRHdSZVVoVmZyZTBwUlBTY20zYVFWSUtEM3RKOWNWM0JuREExZ3BRZWw5NFd0U04wd0dUMG43Q0xZTXdBTUJFN0d3Q3NFN2JmVUhqam1vQTJCMXdzRnZHWWcwMmFDa0tuWkJEWllHRzN4cXZ6VVRTTE4xbzNTNEt4RWpwcFBleHE2Q0QwbjdDTlFzT29oZjl6a0VBMlZPMXc0SGR6RUJhMkJFS1FLdXRBWWVpYmw0WlkzNUVlUFpVMUdwSXlGdE53UnM3UVNhZDVUMEZ6ZW5WU2JOMHE3QjVRLzBnNkFDNG96am9jRHJuQlpST1hsd3BUTTJCOFVoRkFpQnFiVldxdTQreG14bVlSbUVoK1JNRmJRQ0FYZzgyL1lNRUd5NWlPMndFR3B4cU5OVm9LT3JtSUxhQzVYWjFyWFRvYnhRMFp3b2JjT1E3QlRoaW4xRUtKK2pmRlhXektuUTlpdEpndzBsYmxlcnk2d0lBb0lqZHpXeGtCenNaQVlCaFppM1NjWTMrTGdETmVuYzRTT1EydG1BRGVab2QwbFlRV2lhMW9nbzJyTFJWK1R2bWE1T3QxNEJiU25jL3ZaT0ZCb01wdlRjOFlmQ1ZGSGFwQUlCZjMyVEhRK3U2dGhPUUlPcTZBTUJBbTFJcWZZbnNBRjZScDlrTmpRV2hVNW53bHVQNlZrRlRSaVBvQUxnbHp5eHQrZWt2aGdZZGxONFQ5bTJSYmdYdGdEc003QUVzeWRWeitpeVNzM2pjQ1Q2cy9wQWZIdERwaXZNQ1FMTjdBWWNJSnhadDZvUlJxekxSUzF0QjZPOHBUbkszVlhsdUo4VVVOR1cwb203ZVJOWmtRRFdwTWZCQldSc3ZkdVduMVZxczMrNG1VOUFVQUVBNm5OUmZtSkt5VUpIblBVR0kzd3B6MlFPNVlVY1NBTlh1QkJ5S3VvbHRaZUF6VWlmTWRxVzBJSFNwb0RsZVJKeGk2YjJDTmdCSmFhdnlqY0tDYjEra1pzNDlkcEpoMmFiZFJ6ckZOQlYxODBMWkI5TzJJd2xJVGxFMzJnb3N1MnhQNC9DMWxyWW5mWVgxUU1SNVFwOFJVRTFqUVhvQTZQcGJORm9LMno2SzZPaTg1Q1k3eTYybU5GUXhGb1NlUzJueDJLM3NMZ2ZacFlGNXg1RVVWZmpMQnM1bGt1V0hvcU5pY3pvLzZhWW9rbUREM3JMTnVvdGdROUkrS3Z0d01hOVE3cFh4czhpT0lVZ1RvNHlNUlZXbFVYTTUxclMxOFRMNHpyMHU2dWIxMnQvOXN2VjRTSGtZWHNiM2VBcWhBNEFDM1IwT054R2RrQThNRkthVEhRMmFnZzNSRm9TZUs4TEpNblk1QUI3SVFGeGJ1clVmTWdHMDJnRkpzQUZCS0UzYnhTS1hkR2dMWm1WUG5qVXhqVVduZWhsbnMyZDVKUDJKOWQwUXBHcUZMMTdtRlVnakJnRGpQSWp4ZUVrS0NveTNyeW5ITmF1OC8zcWliR1V6Z0FYSS9WbmJ6cWVib201K0tkc0IrYXV0eXNjSzJnSEhiUDJtbEZNcUFyaFA0KzQ1NFR3RmtsMHdWOVNOTGZSNjdQcTFJL1MrcUp2MWhVeWZqVEd2cU1rRUFFRDgvZ1FjRk9iTDNJZ1ZqWk9jYUtwMXdZVENYWFpsYzFHbmxOWVZ3QndLMDYxcENqYll1a092RkxRRGpoUjFZMU1WdlZOK1BNOFV0QUZJaG93OVZhVlA2dUdsam94OWhoVjE4emlDejcrRTU3TFFvZnZXdDhhWUExSXlRUUYyT0FEQUNLc2REckYwZUNqWU44N250aXJWRkYyTVpGSmhLV2NjR3dBck1kWjRDZUF0TldUaTBVazljQ1Ivb3AxY2E2c3l1Zm9OZ0EveXZiZnBrUTRTK041N20rQnVxL0pJVWdxUnFuUzNQVW5KMVAxQkZoOEFBS0JjYkNtVjZGZ01RMEhvK0xCaUFzQWRFblRRbW1vaXRHZmswSGVIWU5ZbzdHNUFFdmplajNMbyt3MGtnSDdPZVpua3VLaWJibG9xVmJ2NUFRREEzYUxSNnJHVmNqY0tRa2NybGhWZ254VzBBY2lHM005L1pYN0c5d2syWUNuc2JnQ3lZK3NFZlEvMW9TVmRjSTdGcEYyNjZCU2paaWNrQUFBS1BLRGFmaklvQ0IycG9tNWlXcEZESng0SXpCWklsdnRFZGtVbXFkdUVKWEg5QWZteHo5elFIOW9XazdaREFuYUZPL0c2cUp2WDhrS3F4c2NBQU9Ua2Z6R2xjb21wdUhWQUo3S3JRVVZueWhhRUp0Z3duQlNOaTJZU2tWWEd3RElrVi9IYm5BNC9rNzFZRXRjZmtKK2x2L2QyWjRXTTZ3b3Bsb3g1Ym1UWGc1cmQvd0FBNU1JR0hHS2FRSHhLaCtHdlJqcWtLbGJIRjNYelNnSU5wWUxtUkVHdTVSOFJOVG4zdEM3QW9pVGY4N01jemdLVHZWZ1MxeCtRSDIzZmU1dFNzUk44SUtYcFBEY3NpQU1BZExHWTFyOEg5aUFYZFJOVG0yL3NYSzJDZGl4R1U0ZFlWdWpITkdtdVFvekhiWWt0NWdEdWttZjJ2andMazhSa0w1YkU5UWRrNTVmMlBtNWJsUys2LzUxcm1zVzVKT2p3VWxKWUFjQTl5dVpIVTF4c2ZhQ2dEUWdrcXFMUks3bXVVT2lzY2xGQnpnUEJocEdLdW5rVDRYRmpXemVnaEUyaGwraWs2QzhtZTdHZ1E2NC9JQzh5dG9wdVFZMU5zN2dhRjNiR2h5Y0ttaGFEajZScHhrUmNOd2d0eGV3aGV3cmFnRUJXQVllWHNSM3d6SUlPcWdiQlJkMzhabHZxTkVYZC9EVEd2SSt0M1haYnQ0Sm1BT2hJYkhMMG1sMVVXTWloVE5oOTV3UUEyZGhQTGNCbzArejJCQ0hzanNockJjM1Q1cW5zRWdFQUFKNDhNUDkxVUQ1RmxsYnBENW4wZnRKVzVVOEZ6ZkhoUTF1VmI3UTB4aGFFcGtiRGRCRUhhVmd4QlNobEp4UVNDQUNmdFZWNXFxQWR5TWN0Z1hRZ08rcFRKN2xtZDBRYVk0N1dYOWJXM2pQR1hFVC9BZWM1THVybUUrbVZNRlNFcWNnQllGRVBWbThlOGFURmo2SnVQcS9udG95Y0xRaXRKcmNabmRKNWlycXhoVjVmUjlyOFgxb0trd1BvRjNuUTRSa0Z1eEJJZHBPTnVNZk9GSjNUcjhuS2xVMC9sUHRCV0NmZmdUdmZnNkp1YkJEV1RyNC9WZEhJTUQ3bVhoc3lNZGR5anllSUJBQUtQRmhyd3FFeDVsdUVKK2E1bld4SllXdXNzdFJKRDFNdVRCcEM3Q3VQbVp6eEkrVTg0YVJiVzRZRUhleHV2MGNSTlR2bEhZcFlIanRuZHFCbUJSSkVRZUNKY3QwTlllczV0RlY1NzNPbmdIdDgyb3E2T1dMUkRnRE43Z1FjYlA3YW9tN09qREh2WWp4ck10RjFFdW5LcFgzcDZLbkFwT0U4S2FTZm9wTUt4TVVHQ0cxNkFCdUUxOTV3N2k5dzVMT3NabVRBRGVUalRMNzNhc1pOS2N0Z04wUk9PenFRbGpjVXNrNWZTb0VsKzFrVU5BTUJyZTl3c0oySzA2SnU3S3JtNDBoUHhFVlJOeGNSVFdZY2FpcFVhQXRDVXpsK3VxSnVEaUxkSlhRSGs0RkFuR3g2d2FKdVRqVXZIT0QrQXJFcVpHcjdIYllmWkhlNy9DUjRBR0NIZCt4ZVdsWnF1eUZZS1k1SXFWOWdGTEZiUlhOaXAzMzMyMGhwZW5iL1V0Q0c1TjBMT0pqL09oR3ZKRFZEbERzZHpMOFYrcHJ6ZHFwcVd5eXJZalZMWlZjSWs0RkEzR1RoZ0IwNGY5SDJRYmkvNk1CNUFQSXo1WHV2dFc4cjdTSjlrakliZGtQRWtPN1IxdHRUVXo4UnFsMnpLeVlMNTRybVFsTzYzalI5RnVwNUJmQy9UVzhoSzBkT0l2OTh4N1pES3RzK3RiaTFIWDR0d1FhN0VrVTY3UVFiSnJJZDZVU0NEUTJUVUVBYVpLWGV2cVlQdy8wRkFPSWk5KzFicFkzK0tKUFpVTXltZTVTeHIrWnJLZW8wdUFoSzFlNHEyVlVFOTlqeGxEN09jUUFiQXc3bTN5cUZKd2w4emhzdEU4SnRWYW9JZnRnZ2pCeVRaSXVBK1diVGxzZ3hqS2xJNnlhMjlna3JlNENFS010dmZUM2dad0FBeXNqWTVhM1M4L0tJdW5QeHNOY1NpdzhRTTRXcHQ1akw4VURiZVU0aHVLN3RNNUJHTDR5dEFRZnozNG40bVVySFFIWTdxS21Yc0JUcG1OOGs4bkhlaHI0K2JaMEdPWWJScGh6cmtsVkhiQ2tEQUFEQVBXMVZubXZiTmRlbGNFYzd0aURvQUxoVDFNMExEbWZ5VWxqZ21zSm53RWc3QXc0ckNYVU1TdW1VWnJmOXpCYUVUbWdWVUNNVDVlZWgzckN6S3lUNm90RGlsZzQvQUFBQWRyRzc1cFQzRysyTzlqY0syb0Zobm5HY0VDbHR1M1kvS21oRGlocE5ueW5tZVR5RmJWZDFibE0yT09CZy9nVWRQaVJ5UEM0azhKQjhHcG1pYmk3bFM2NmwwdjRzRW1nSWV0NFMyeFZpcE5BZUs4RUFBQUF3bUl3SHRRN1czMVBYSVE2a3MwREUxTzBvSUxXY0Yrb0MyRVhkZkZMUWpGSHNYS1RDWnJFNElaQlJBUWZ6WCtmZ2plWXR0Uk44UzNVYmJsRTNSL0x3T1ZiUW5OazZCY2VDa1dzanFRZTRITWZvSGxZQUFBQlluaXo4MGJwQ25ib09BTHhSVmlQdEwrNTdiaWtOaWo2UEtlZ2d3UVoxYzVFRXZNTVpIWEF3Y1d5cG5VSk5ZZW01T3FsL3ZzVDlTZjQ2WENEUThEUEJoL1lKS1pRQUFBQXdseDJ3YSs1WFV0ZEJ0Nkp1SHVkK0RCQzFNNDJONTc3bjNDK0ZiWG9ld3p5VjRvWFBHczlwc2lZRkhGYWtrL2t5cFlNVCs0cjJ4RkwvWE1scS9HQ0Z2b3U2K1NySE1LbWlOaFNHQmdBQWdHc1IxSFU0VmRBTzNQZURZNEpZdFZXcCtiNlN6RUxhcGJWVnFUWXdLdk9XNnVaM091bmNWZEo4VGxQMFlPNW5rdFFzUldvM3RkWG5pV1ZGdUMwSW5VcU5CaWxtSERReUw0T1JkeUhmTTVBbmJWV1N5eFlBQUFCZTJQR1NwSGw0cnZBSXY3UEZwS2xkcG9Pc3ZrNnBMaDd5ZGFVNWRYVm5mdTV6VzVYcTZrN0FpZU9pYmxiWDRHTHpQdHpYc2Nuc2dNT0tkRFJmMldMTUtSMXQ3WUVIclhuUnBsb2dkWkxOUWZzdDVIc0djdDFXNVZHQ253c0FBQURLMkFrdFNaT2pjZVg2bmgzVGtWcDBHUW1QdDVDeHRpcGZkU1o3TlZ0UHdYTnJpK2FTL1dDdy9VZ20wMzhVZGRQOTd3OVNmOWU1b203T2pUR3ZGL21VODZSVWl6Z0t6Z0lPNXIrYnJyMXBxZDVDTTFYbk0rMXJLQlNVWU1jdDZIRk5PUXJMWUFvQUFPeEN5b1Y3VlBUeFl5YXJLOVh1ZkpkMmhSNXpKTFU0TEZFcTgvSFB4VDMrTGs5ajVNTUk1MlJzVm95TG9tNlNXaWpzSzB1R2ZWNFVkZk1yd3BUYnI0dTZpVEVvNE1zdituamh6YXJoc0luY3pBL2pPeHlEM0VpK3RJTWwzcnhURURxVllNTkxxUzhRc3VPZlVwMkxyaWNFR3dBQUFDYnhzaEl3UjlJZnZWWDYwWVBWZFZCY05CTWR5dlB4dzVHaWJwenYvcGRhazllY0l4WHNUcmF2UGhwQzN2LzRjUTZYNFNYZ1lPVG1LNTNOWnNDUHgraWJCQjZDcGExSnRDRDBwMUJ2YU90Y0pMclNZM1VzcWRVQUFBQ0F4Y2xLVTYwcng5OUovVHZnS3ZzamdGbElZNXlOSjdrZmdJaHg3aGJpTGVDdzBsYmxRZUtycnI5STRPSGMxeHNVZGZNem9ZbnlXNWtjZnhYcURXMmhPRGwrcVJUVi9pdjBzUVFBQUFDR2tKWGpXbk1tNzVGeUJveWo0QUpaQnRJbml6dmY1bjRjSW5UR3d0emxlQTg0ck1oTitFVG5ZWERpdFFRZXZydDZRWnZ6VXpyQ3NlV0w2eVdUNDg3ejZtMGp4Kzk5eVBjTVpKK09EUUFBQURTemFWTTE5MWxsL0VhcWhRd3hsb0pMWEUvcGE2dnluRjFSVWJraVpkNnlnZ1VjakJTVlRqek5rbFZLeDNYeU5sMWJIeUt4bkovQko4ZHQ0Q2Z4OUVsc0F3Y0FBRUFVWkN6d1MybGJmL2pjclE1OW1CeUdEOHJyMThBQjJSV1Y4a0xxVkx4bEI5dnlnZ1ljVmpKSXMyUlcyM1RIVG5vblZoRDZaSW5KY1RtR1pjajNESUgwU1FBQUFJaVZGRzE4cWJUNXI2bnJrQWVDRGZCSk1qcG92Yy9CQWJ1UVduRzZRUHkzNEpsRkJBbzhXTElKOW1GZjFNM0RoQW9oOStvRUhRNXRNZTBkUDVPQ3hnYVZGampPZGhEekk2SGp1TExQamdZQUFBREVycTNLVDdiYnJuVHM4MmZCR0JQU3lYb3AxeC9nbGZMN0hCeVErWmxDQXRYSjFRcU4xRzNvRk83WWJ0R0FnN243UlgyVGFLNzlybTlGL1NlYjFJZTJLdTNuTlZMeklablYrRXQxMEJNTk52eTlUZ0FBQUlCVXlNSXpsWk54MHE0bkZKcE14aUtMNFlEVjNBaUJoM1N0SnJnNXg4dGlvWUJPaTZSVTZtTzN2R1JRMzJIbGRTZmRVaExCQmtuM3MrU1hQS1ZndzYwY1Q0SU5BQUFBU0pLTUhUNHIvV3kycmdPcjRlTzJxbjFIc0FHTFVqQlhBcy9rL0pKbUtiemc5V0l4M09JN0hOYXRPZ1JFQ0tPeE1VMFV4dU5tQ1FBQWdGeTBWZm1pcUpzRHBUWHNucE5pS1Q2Y0wyalYyZkZnODh1LzVrU2xaWlc5eGZ4M2p1ME91VWU1SHhOUGZrbE5LQ2luTHVDd3d2WXo5VWozNDlhSkZCOENBQUFBc2lHTGwxU25XR0lTV3pVbW54QVZtVWRacGRnK05jYTg0d3c2b1dZaGJQZWVSUERCQ2VvelJFaHR3R0VsbDhMU0VTRUhwbHZjT0FFQUFKQTlHZmVwTE1BcHdaQlJPN3ZsOHlSVnIwK0o2N1lxajNJL0NFaERXNVUyNEhDNitqQkYzZGhGaU1lYzN2RzBMb2hkQ3o0OGxzQUloYVozbzVaUzVOUUhITXpkd3RKYXQ5dG1nWlU5Ym5FOEFTQXJ0d3d1QUdBN3V4Q25xSnNYeHBpUENnL1Z0Nkp1em1TQ2NKQnRDN1dLdXJHVDVxK1lYTnlLWGVESVNsdVZyK1MrOEZkUk4zWWkvVDFYd2oyL2pERkhNVTFLUzF2dkxEaVZJTVNuaklQVHRvN3ZLMUsxcHllS2dNTktaN3V0N1p4OTBkR3FMT3hMMEFkdVBHdXI4aXZITXJoOUpUdWxUaFMwd1NjdHgvbWxnalpvMEdqb3ZMSVM4UTg3NmZSRFFUdXdyRU1XejZoME8yWVNlWVF6SmFreUdnVnRHS3l0eWs4eTVudXM4TDU1N3VxRlpEendkWDF5Y1J0WmdIY2t6NVNqeU5OMDJJTGhsM0srVTJINytSY0pmWjVVTkRHUHY5dXFQTjkyNzVHQWhBM1VQZzNiTW04YW1ZRC9tc084aVFRaFVnNU8yM3Y5T1hOZytTbmFOdDRTQ1VYZHZPS0I3bFUwQmFFanFmVkJPaW9BQUFBQUFBQUF5WW82NExCQ29SM25ybVFyWHpTMEJ4eElud1FBQUFBQUFBQWdkVWtFSEZZb3NETmJ0QVdNRlFjY1NFY0ZBQUFBQUFBQUlBdEpCUnhXQ0R5TUYvc0tmSVVCaCtoMmlRQUFBQUFBQUFEQUhFa0dIRllJUEF5U3hBcDhSUUdIYUhlSkFBQUFBQUFBQU1BY1NRY2NWZ2c4OURwcHEvSlNZYnNtMFJCd29FNERBQUFBQUFBQWdKeGxFWEJZS2VyR3ByaTUwTkdheFRSdFZSNms5cUVXRGpnY3RsWDVmY0gzQndBQUFBQUFBSURGWlJWd1dNazA4SkIwcXArRkFnNmYyNnA4c2NEN0FnQUFBQUFBQUlBNldRWWNWb3E2c1N2OXYrbG9qVDg1cFBvSkhYQWdmUklBQUFBQUFBQUEzSlYxd0dFbDRjQkROcWwrUWdVY0NEUUFBQUFBQUFBQVFEOENEaDFGM2RpVVF6ZHFHalRkMjdZcXoyTnQvQlFCQWc3VWFRQUFBQUFBQUFDQUxRZzRiTEJ3RWVLcGtpd0lQWVRIODNYVlZ1VXJUNjhOQUFBQUFBQUFBTWw0d0tuc3QwcWRVOVROYjJQTW5zSW0za0dxSCtleURkNEFBQUFBQUFBQXdCVHNjQmlvcUJ1YlRxZlUxaTRDRGY5eHVjT0JZd29BQUFBQUFBQUE0eEZ3R0ttb20wdGp6TEdDcGxCVG9NTkZ3SUZBQXdBQUFBQUFBQUJNUjhCaG9xSnVqb3d4WHhaNGEyb0s5SmdaY05odnEvSzN0OFlCQUFBQUFBQUFRQVlJT014VTFNMURZOHhOZ0xlNmJhdnlZWUQzaWRMRWdBTzdSQUFBQUFBQUFBREFFUUlPRHJtc0k5QkZxcC9kUmg3N2s3WXFMNWRxS3dBQUFBQUFBQUNrNkFGbjFaMVZZTUJoZ1dsUy9iaEZvQUVBQUFBQUFBQUFQR0dIZzBkRjNkaGFDeGNUM29HSjhaRjI3SERnZUFJQUFBQUFBQUNBWndRY0FoaFI1K0Z6VzVVdm92L0FDOWdRY0NEUUFBQUFBQUFBQUFDQkVIQUlyS2dibXlKcGIrMWRLUWc5MDFyQWdWUlVBQUFBQUFBQUFCQVlBWWVGRkhYenhoanpub0xRYnRoQURrRWJBQUFBQUFBQUFGZ09BWWVBYkpDaHJjcnpiRDZ3SjBYZEhCaGpmcktMQVFBQUFBQUFBQUIwK0IvbklZeWlicjdiM1F3NWZGYWZwQmJHTjFzUG82aWJvM1EvS1FBQUFBQUFBQURFZzJCREFGS3ZvVXorZzRiUkxicjlwYWdiZG9vQUFBQUFBQUFBd01JSU5uZ21CWXpYQzBOamdyVmkwQ3V2WmRjSUFBQUFBQUFBQUdBaDFHendSTkw5M0t5L09rV2hwOWtRYU9pNnBVZzBBQUFBQUFBQUFDeURuUTBlYkFvMFlCcEpRN1hMM29DQUJBQUFBQUFBQUFEQUE0SU5qaEZvY0V0U0pBMU9RMlVERG5JT0FBQUFBQUFBQUFDQkVHeHdxS2lieHdRYTNDbnE1bkppWWUwYk9SY0FBQUFBQUFBQWdBQUlOamhTMU0yQk1lWkhFaDlHZ2FKdVhobGpqbWUwNUVkUk55K1NPU0FBQUFBQUFBQUFvQmpCQmdka0ZmMjM2RCtJRWhLNHVYRFFtbzlGM1p3bWNWQUFBQUFBQUFBQVFER0NEVE5KZlFCMk5EZ2l4OU5sNE9hZHBHTUNBQUFBQUFBQUFIaENzR0VHaWtGNzRlTjRIa3VoYVFBQUFBQUFBQUNBQndRYkppTFE0RjVSTjYzSGx5K0x1dm05MUdjREFBQUFBQUFBZ0pRUmJKaU9RSU5EbmdNTkszdUIzZ2NBQUFBQUFBQUFza0t3WVFJbXJOMEt2ZU9BOHdjQUFBQUFBQUFBYmhGc0dJbUphcmVrbHNMZUF1L2JTaW9zQUFBQUFBQUFBTUJNRHppQXd4Rm9jS3VvbTB0YlMySEJKdHdVZGZPa3JjcWZDN1lCQUFBQUFBQUFBSFlxNnViSUdMUDY4M1RFRWZ0bGpMR0x2cjhhWXo3NW1nOHQycGI1OHlGY0JScmFxaXk4TnpZQ1JkMjhNc1pjS0ducFlWdVYzeFcwQXdBQUFBQUFBQURzL09salk4eTVNZWE1eDZOaGd4Q25iVlZldW5neGdnMERTRTBCSjZsK0NEYjhPWjRIeHBodkNwclNkZUxxU3dVQUFBQUFBQUFBWTBuYWQ3c28rdEZDQjIvV0hDbkJoaDJrcG9DelZEKzVCeHZrQzNPam9DbDkzclpWZWE2dldRQUFBQUFBQUFCU0plbVJ2aWo2ZUZkdFZiNGErMHNFRzdad0hXZ3dCQnRpcUhzeDZZc0VBQUFBQUFBQUFHTW9YNWh0bmJWVmVUcjBod2syYkNERmk0OWR2MjdPd1lhSUNteGZ0MVY1cEtBZEFBQUFBQUFBQUJKVTFJM05zUEo2NGlkckpOM1NUeW42YkgxdnE5S1dBMWp0bExCc01PTmdRa0hwTzRiT2FSTnM2T0d6ZUhHdXdZYUlBZzByVFZ1VkJ6cWFBZ0FBQUFBQUFDQVZJMnNFM3hwajNyaXNOeXMxZFU5SEZwOCtiS3Z5KzliWEpkaHdsKy9peFRrR0cxd1cyQTdzdHEzS2h4RzJHd0FBQUFBQUFJQkNJeFpsdjJ5cjhwUHZUeUNwbkQ0TjNQbXdOZUJBc0tHanFKdkh4cGdmUHQ4anQyQ0RqN29YZ1JGd0FBQUFBQUFBQUREYndFRERrN1lxZnk1eHRJdTYrVG9nNkxBeDRQQS9QODJLajBSd3ZBWWFjaU4xTDJJT05GaDdzak1EQUFBQUFBQUFBQ1lwNm1aWEFPR3RYYWkrVktEQi9MZFEzdFoyMk4veFl4dXpBaEZzK0VkejFlL29TTjBMNXdXMkY3SVhZYzBKQUFBQUFBQUFBQW9VZGZQR0dQTm9TMHYyMjZvODE5QldXMlJhc3ZNMG0zNW0wMXdwd1lZNGl4ZXJKblV2dkJUWVhoTFhDUUFBQUFBQUFJQUozbS82RmRuTm9DNnpTbHVWZG83M2F0Ty9TMWFiTzdJUE5wQWl4eTFKUitXdHdQYlNDRGdBQUFBQUFBQUFHR3JiL0xQMityNXRWZHJzTmRjYi92bGVWcHVzZ3cxU3ZIaFBRVk5Ta253NktnSU9BQUFBQUFBQUFIYVJoZG1iNXA5MzFVWlFRZW80M1BhMVpiME9SYmJCaHFKdVBpVlF2RmlWbkNiaENUZ0FBQUFBQUFBQTJHRlRzZWN6amFtVE5tbXI4dUdHZjdwVGgrTEJZaTFja0JUa2VKN2paL2NseDhsMytjejdNZDBZQUFBQUFBQUFBQVRUdTZ1aHJjclRvUTJRK3JoMnN2OUkvbGhQUjM0QVcrejUwNWozN1hGbWpIblgwNzVMU2Jka2lyYk5hNDVZVHM1aU5RVzA1K0dhUXZLTzVaeU9pb0FEQUFBQUFBQUFnTCtLdWprM3hyenVPU0xQMnFyOE92UkllVnJrUGFvTnU5cXltdlBPS28xUzZzV0xsMERkaXo5dTVOb0NBQUFBQUFBQUFMTWgwR0NtVFBKNzhFWG1kY2Q2Mi9melJkMDhOaG5XYkVpK2VIRklkb3NNZFMvK0l1QUFBQUFBQUFBQVlKdmV5ZnFGbEZMWGVMQzJLczgzL095ZnY4OG0yRUJCWDdlS3VyRjV1STVUK2t3T0VIQUFBQUFBQUFBQU1pZHpwL2RzbWF4ZnlwUzZ4cjk2L3U3UDYyUVJiQ0RRNEpiVXZiaEk2VE01Uk1BQkFBQUFBQUFBeU51YldENzloSFJLR3o5YjhzR0dvbTUrS21oR01xaDdNUWdCQndBQUFBQUFBQ0JmZmFublB5ZzlHcVBTNUxkVjJadDZ5ZFp0ZU9Dc1NRcEpUWUZIS1gvR0JWRDNZaGdiY05odnEvSjNESTBGQUFBQUFBQUE0TldwcHhkL3R1SHZqNHd4N3dLZTBsZkpCaHVvS2VBZTZhaEdJK0FBQUFBQUFBQUF3UGlhSTJ5cjh1dUdmN0ovZnlwRm9LZlVadGltNmRrUmNaUmtHaVZxQ3JoSG9HRXlVaW9CQUFBQUFBQUFtU2pxNWtqVEoyMnI4c1d1bjVuUTVyNVVTaytUQ3paUVU4QzlvbTVZbVQ4UEFRY0FBQUFBQUFBZ0Q2cUNEWjcwN3FaSWNXY0ROUVVja21ya2U4bDhvT1VRY0FBQUFBQUFBQURTMXpjSDJLVDBxVGVsYmtvcTJFQ3FIN2Vrd1Bhb2F1VFlpb0FEQUFBQUFBQUFrTGFEbmsvM000ZHpua3l3Z1ZRL2JsRmcyeHQyM2dBQUFBQUFBQURwNmx0cy9IMnBUenR3OGJPVHVmVWtnZzJrK25HTEF0dCtzUU1IQUFBQUFBQUFTSmFhVERHeW9Iem40dWUyS3AwRVF4NjRlSkVsRlhWelNxb2ZkeWl3SFlZTk9MUlZXZVR3V1FFQUFBQUFBSURNOWRZNGNFSFR3dWFvZHpiSUN2eDNDcHFTRXRMOEJNSU9Cd0FBQUFBQUFBQ3BpRGJZd0FwODk1ajhEbzlqRGdBQUFBQUFBR0JCaDY3ZU91YWREYXpBZDRoSjcrVnc3QUVBQUFBQUFJQ2tIU2o5Y0xldTZqV1lXR3MyTURuclZsRTNUcXFOWXpwN0R0cXFIRklaSGdDQWpXVG41Nm9UKzFqK1dBL1hPcmRQRlJ6RmEyUE1UL256dGExS2J6bE1nWlJKYXRsVlAvS284MUc3ZjI4VWZPOXZqVEhmTy9tSytkNHZxS2liSTdsZVZzOEgzOWZIdGZ3djV4OElSTDducS83ZzZ2c2VxdWJwdmUrOE1lYTN5d2xOSUVJYTUvMSt0Vlg1ZU1EUERWYTBiVnp6OWpJeHZxZWdLWk5vS3dwYzFNMTNDbXlyY1V2QXdaK2lidXpOODhmQ3pYalpWdVduaGR2Z1Zjekh1YWdiTytINXlFK1RKanRycS9KVVdadUNLdXJtcTVLSjhTNHY1MFcrUDQ4N0U0U3JTVU50bnora3o4YVk4MVFtcEdUUS8wVkJVL0RQZFZ1VlIwc2REN2ttVE9mN252djMzZ1lrTG8weG41aUlucStvbTFmR21GY1JYay9YTWpFWlZVQ2lxSnNYeHBpUENwcUNmejYzVmZraTVlTWh6NUVYOGwyUGRhN3NWcjd6bitUK3Y5aUNXQ1Zqd3YwbGo0RXZzaWhxNlN3MXppZldOOWt3anAwOGp2U3c4UDZYN1hlMlZmbHp6b3YwdFN1cVlFTlJOL2JHODF4QlV5YlRGR3dvNnNaMjVJOFZOQVgvTkcxVmF0MVdGVFZGTzZLUzdEaXN4SHFjbFFleXN3eEV5a3BkdGJXWnhqN1BwWFA5S2ZQQWdTdFh4cGczTWQ1TDJaMnJscGY3ckV3QW5iT3d4NG5zZysrN3lFVDNtd3llTS9ZWmNLa3RDS0ZrRWczOUZnMHF1eVFMVTA0em04ZTVsdS84cGU4MzByVElTZHRDWlJjVTlZT0R6THR0dUo0bTM0OEdITCt6VHRCdTU5eUdxMnVzcjEzUnBGR1NWUmxSQnhvMGtlTkpvRUdmMGdhQjJxcDhsZnVCY0VrbUxiVTRsWUZnY2pxck16VjRJOGQ2S00zQmhqMjdDeTNEUUtUYVFNTkVURUM0WS9zdngwWGRHRmtKOXlxR1hXUFM5NEpPdnU3LzdHSng1MTFSTisvazFScjUzbWVkaWtNbXQ4OHpITk4xbndFcndTWWp0MGl5ZjUrSXFBTndSZDNZYSt1OWdxWXN4WjYvcDBYZFhIVGUvN004QjF3dlBHRlJVQjVDTFFMcEN6WjR1OFk2aXpJZURnbnNGSFZ6T25jaGgvUkY3b21pUUxSTUZGNE0rRkZ3UEZOd0xMdE80STZtVmVIc1hBbGpiT0JEKy9icVVsWXlaWUY3SUVhd2s4UWZiWWZhYm50WC9qM0o1anRNbkxvNEFBQWdBRWxFUVZRTWRRSDQxTmhKZ20veXZjOHUxWko5UnNva3dnMkx4LzZ5a3pjWGNrMnMvcHdIYmdQZmVUaGpGeWlzcnVYTUF3MmIySVhJTjNLTVNFVU5yWmJzbzV3TitKbDNBMzVtbDk1NUZQWEJCcmx4cExhNmNURWN6Mmdjc3dJU0NDZVMxWkZMMThJSVNmdmt5VXNGYmNCOU5yL3VEeGw0OGd3Rjh2QzBNN21jYkVEUExoYnJURHdTWUJqbXRSd3owbThoR25ZM3MzelBXUnc2SEx1SG9kS1M2ZjZHN2xpUWROSno5QVViYm1QWTJaRFNqV05mUVJ1NEVjZmpRbG42SHlCMVQ3Ui92aHhXN3NRd0taQjZvZmRFWEJCMEFMTHpJN1dnZzkwaEl4T1BMQmFiN2gxakttaG0rL2Qyd2srKzY5VDRtY0RCaENtUW9pRnowSHN6ZCtQMmxUdjRwRHJZa0ZnUnZjV0x3aVoyUEg4cGFFTUkzOWdXQ0lUUlZ1VlB5Zit1MmM4TUxnY1gyemw5VWgrVXdoMFhiTEVIc21PRERsRS9MMlh5c2FYdWh6T2hVeW9CZzhpOTZrWng3YmhZY1B3UWpWQ0xvV1FPK3ZPQUgzWGQxN2hVRzJ5dzI4Y1VOTU9WSndRYW5MS1Y0KzJLcGF1RVB0TTI3RVlCQW1tclV2dUU1RjdLazZZUjdHcTRsYUFVNG5ORExSQWdLNDhrMEtpOUp0TTlVb2VDL3I5YkZIMkZLcmJQSzNNMGp6Z3pRSGFDalhuYnFoelVEeXJxWnZUTy9VM3pFalo5bE1wZ2d3d0dVOWsrZHJqMHhFUmlXOHJzUk0rZmJiQnRWZHBvNE1ueVRmSXZzV0FSb04yMTh2YWxGSXhmcDNwWFF3VEJLR3gzelBNVXlNN0hXQmF4ZFhZek1ERU9KRXptWjdUdjVBWGd4b2VlVndrZFpEd2M4RFBQSnl4cTNMaHJVRjJ3UVZhZnBGTDA2bkRwb3FQU3VVNW1TOW42UkU5YmxaY0R2empSWTRJRUNLT3R5ams1QzBOSWNnVlVCTG4xdFFlaE1CQnBsWURzbE5yNzBUSUdaamNEa0xCVm9YZFMvZ0JaNmQzRkVMSytsTXhMRDBsRlA3WWYwamQzL3ljdHRhcGdnd3o4UGlwb2lnc2FBZzBwN1JDeFg1Qml3OTkvVjFKODJ6c0tId0hCbkdrKzFMSG5vdDdnUW1XclJBUkJLSXh6UThBQnlJdldnRU5STitjSmpZRUI5SkJGTlJSNkJ6S3pKYVYrMFBsaVNVVy9VMUUzYndiKzNLYlgrL1A3Mm5ZMnBMS2FRME9nNFZWQ08wUTJCaG82Ly81NzE4OGtZaSt4ZWlhQVNtMVZhcThka05UdWhnaDJOZlJ0ZjBYOENEZ0FtZEVXY0pERllhOFZOQVdBSi9JOVY3Mm9Cb0JYZmJzS2x0amg5SExBejd3ZitGcTk4NUtTZlVaUHNDR2hGREVhQWcwSGlUM01CdTlheUNUZ1VNb0tLQUIrRFhrWUwwWUtTS1pDKzY2R1FTczhFQ1hTbGdDWjBUTHVURzF4R0lEN0pOREE5eHpJVys4TytkRFpDdHFxL0RRa2c4T3VGRSt5V0tzdldISzcrbjhlVEcya1N3bWxodEVRYUhpWTJQYTh3eTNiam5yWmdJTmNVeW5uUW54dHE4WGJLdThLMmdJa3lUNk1pN3JSL05HU0tDQloxSTMyOUVRbkN0b0FqK3pFWXlhTEZRQUl1MU80cmNxRHBZNUhnb3ZEQUt3cDZ1YVVRQU9BdGlwL2JwaFhlR1RuY0lmT2Vib1lyMGdHaDdsWkhEWXQxdm83cmw5OFo0T2RNRTFrVXZoazZVQ0RTR21GM3N1cHgxUUtTZDhPK05HWWZTSDlBK0RkRTgySE9KSGREVjhVdEdHajFWWlFwSTBVaFVCMnlvVlQrSkc3SFVpWUJCVGZjWTRCaUUwTDJLS2F3NVVnYXEvdS9PMml3UWJwNEQxZnNnMk9uR2lZakVnb0ZaVjFKbHQ4SnBPQWcrcGx5UTZRL2dId3lLNUNVQjY0akhwM1F3UzdHbFFIbStCVUtSTURBUEt4eU02Q2hIYjFBOWlNZ0NLQXY3Yk5HY2V5NkVrV08yOEtvajdyL3NkaXdZYUV0bzRTYUhEdnM2dmlyTEk5K3JPeXorZFVZdWNlVUVjQ2wycEpMdGhZYWQ3VmNDdkJKdVNEaVFFZ002RW4vaVhJbm5LcVZ5QjdqTThCYlBCc3c5K1gyc2YwRW1qWXVOaDVQY1g3a2pzYlVoalFhUWswcExRNnBtbXIvN04zYjFkU0cydkRnS1c5ZkE5RUFFUWdpQUNJQUh6ZEYwQUU0QWlBQ0l3amdMblF0U0VDUXdTZ0NEeEVBQk9COWlwY1k0L3hIUHFnVnI5VmVwNjE1dmYrOXI4OVV5MTF0NlI2VDkyaktYOWgvbjFIVS83T2FHUkl3ZDU5REh5SWkrd0ZXMEJWdzZXRHNhaFQ0Y0U3WUhQWHJocUVPTEhRclFPQjNlUTI0UUQva1Rma0wrcWE4RGpxOThkVmdZYW1hVzc4K0Y4Y0pOaFFTYVQzVlpCQXc0ZUtzbU5POWpXb2JWeDFUeW9mOG5uTkJnbnN6N2pxUW0rTUYvcjVqN3poTXF3N3FJdnFHT1FJeS9QbkhLLzR3RE1pZ0QzTEczSTF0QWtIOXVTS3Jna1BveVVTdC8zdy9JcEF3eS9uUFRmUEhteW9KQVA3YUtvMlA3dG8rK0YxNmYyNno5cDNxNUljSEtvNTRQQzRnRXhoS05sdmdkZGUxQWJwekZta0c5dFg0SnN5Q043RDhzeDBEMTFEQzJIZ1l1WXBBdXY0VHlYQUdTbVJlSXlRb0pEMzczKzk1SCtTRXZSZW4vZi9NV3V3SVErOUtEMEwveWhueVI5VWZ1TTlPL1E2cGpLdXVuYW12NU0yRU83TzhxSU80NCtjVVFGTWJGeDF6eU1mMDdZZkRoNEUzOEFzV2FSYnFycnRIbXRSM1FETHM5ZHFPd1Bvb1c2Uy9vQjE1VXFBcS9ZbDMrU2d3NlJ0NXRmUjlzTng3a2gwMmY3OXBaMXBaZ3MyNU5LTGJxNi90eWNmZ3dRYWFobXUvZDFjZ1lZemYrOXo1UUVIR1JXd1A1R3JvMTRFV01PVkNxaHEwT1lDN1U2QXFYMXdSS0ZxNXJFQWE5dGdYL0wzSEhSNHQ4L242TFJubi85T0NqTGN2T0ovUGx6Vm1XYVdZRVBlSEwrczlLSUVRNFNlM1RscnZZYmgycWN1S3gvYW05b0REZ1pHdzM1RW1OVnptUnpZais1ejRQWFYzR3FQeldoM0FndVRaK0h0U3kwejlvQWZTRkFBdHBIM0pkZmRFMDN6WVA0OERRaWt0cS9iVmxTbFBmclVGZUcwZ2lFSEdOYmRzLzl0blpiRFAyMnpzRTFVc2prK0JPcmZYRlBXK3QxRER1Qk1IK3kySDI1VVdnbndmV0MwREYzWWk5dUIyd0NsbTRSeit5WkdrTzhKd202NFJBOG1BYkJYZTVtRmQ0Z1dDTUNzSkNnQVc4bDdvbTFPZU5qa1B1UnhudHM2NTRHL3NlNGU3aHlWRGFWdjVGN2FoMnBPT2RwVWk2YzVpbmRRK1lOeWtPcUtHVHpXSHhhbU42NjY0M1J0aUhwb2cyZFhIUWRZdzBWcWJxL0hGdHArQ0J1NEEvWmpUeTBLU3BxcEJHd2dlbnRRb0F5NWswN1V2Y2xYcWYzOUpzbmlldzAyMUxBNWZsVWZxcmxVMWhibktGTDJhT1VCaDVwYWJrRWtrUjhzUW1aWEJhOXFPSWtRQUNlY1owNEpMTTQrZ295bHp5MEVMdWIrRVpoRTJwdk1NMjNUL3VTWEFFZjFseHhrMkRocFltL0JocllmaXYvU25YdHc4VVZTSDYySytud09FVnY3MUJ4d3FLd2lCa0xJM3htejFpeHVZdHYralhzV3VhcEJWaG9BVGU2SlRIMCtPcWZzaVhrc3dLUnkwT0ZXM3BPZWU2YmdVUTR3cEordEV6RDJFbXhJZ3laS3orQUlGR2o0c01ZazhGS0VhVWwxbnNvRER2c2NlQWVMRlBuN3JHbWFQd0tzNFVkUkg4YStISEorRUxFRkRkd0JoZERTTkF3em1aaWNkb3ZBdnFXdU1HYzIvOU0rOVM4VEI5Q1BtcVo1Y09adlRKSWNQdm1BNkh4RDlXTHEzenVuUUlHRzEvc2FWSFlJVVZwU1hTWnRPRlU2TlBwZStteHFFd0tUTzhyRG1jSkptNlRqcWdzUmFNd1ZlaUdsckpHb2F5T0VsRUFqNEFBTGtnWTZqNnZ1M1VTdjJIRG93enVKMU1LWHFtaTNHTWZSMGc4QXk1Q3JEUzRNZEY2UUtIV2M1MDdPWnZKZ1F3VTk0a05rdHVjQm45VmN2S0lFY05aUmNjQWhmVGFMT1E5UWdoVDViL3NoWkxBaFZ6ZEUrY3hIcmRCYjZvUEpnejMrN3Z0bi9ubW5ndllDMVNSOWNLbTVTOVRuZHJUbnpPNnpuL3NhUGpQUG02YVpLdGhRV3JEeVMzN3RuNE8zUDF6SDdKc3JoSFhYcWJsU3lwVCtrRC8zUlgxdW9pUlhRUVJSUGcrVEJoc3E2QTEvTjBJcmhWd2RFbkxBNXpaS0NqU2Nxalhna0FhTmwxQmhBb1Y1R25nbzg2MURQMmdIcjJvSU4wTm9EbnUrQ2Izd2Q2ZHM0VndwWUZqcTRYMjg3Rnd0eVBGQ01wNlBEL2k1ZjVJejhFb0tQRTRaTUNraCtQTExMbjJaQ2Vtb2dtRFJGRDVQV0tYMEw3bDFlS2w4NW9HOW1pellVTUZBNktjUldzeTAvWEM5Z3VxUXM0cWRnVkJwd09GYXVqSGFacG84Y0w2MFVkWDJROVFBOFo4QnFodWlWalg4RW1BTmk1SWYrTDgvOU9jUzM0aXpSWmJpZzNzQjVwQ0RPZDhET2pud1VFMUNWUVYrM3RkR0xBZjNWcmIzM3BYV092eXBkbUxBWENZWkVOMzJ3L1BDczlTT0FuM3gxclN4SGFKU1pCZVZEbzEra1lOYXdIVENsbWVuNm9ZRC91MndEN295dWc0cmJZTGt5c2Q5dG5TYWhDSFJNSTNUSVlkTjA3eHlTQThyRDRFVWFJRDZQYzJmZDRFR1lEWTdCeHZ5cHVXdkJaK3lJVW9iaFFyYVVKMFZvbEprQ2puZ1VGdWZ4OXJtVWNCQjVlKzdrNkJuNFpEZnhWSGJSNFRmNEY2S00wR0h5QXg0aFFubHFwclF5VHk1clcyVlNteHhDNUVVOHYxd0lzZ0FITW9VbFEwbGIxcW1MK0FRRjRyVVN6L0FNcWJ5VzIwWHRieVJXRlhBb2UwSDJVd3dyWU5WRUZ6aDJpR3FtWUpYTldndEVFend6Uy9CQnBoWVN1Ynh1VCtJbnl0OVhUQ242RzBJMzV2VENCelNUc0dHMHVjMFJQa0N6c2V4cEtGcGwwa1h0dWR4bDdlOUhIQ282UWI5b1haS01KMWNCZlVsNkNFOXhKREFxRlVOdGJYR3EwYmdqY2VvYzBlZ0JsR1RlYXBzbjZaMUVremlZZUREbVBaakpFa0FCN1Yxc0tIdGgwY2x6Mm1JOGtDYnM4dExubmR4MWxEN2hTM2ZvRDhOc0pTcGFLY0VFeHBYbmVxR3Y2NXRVYXZidnBRK1MyZ0JETzZHQmNuSlBCRUQ5VkVENXJ0NFgrN1NnVFdjQ0RRQUVleFMyZkI3d1djd1JBWk4ydzh2ZzBmRk54R21KZFcrNVJaUlI3Vzhuc0NiZ2xDcXFOOFBjMVlqUHA3eGI2MHRjRENJek9CdVdCN2Z6YlB4L1FvVjB6b0ppR0tyWUVQaGc0eGZSUmhjbkN0RFhoeDZIVk5aMm9VdER4VWZBaXhsQ28rMVU0THA1TytIaUdacEJSTTRnRmxOa0hnQmZsdjZBWUFGT25IUzk4dThJdGhkMnc5UjcvTWZCRmdEd0hjYkJ4dHlObjZwVXB1Zmc2Ky83WWM3aFZlRy9Fdnc0VzU3a3lzNW92Wm4zNVIyU2pDdGtPM1cybjZZWTNaRDFLcUdxQStIL0tEVzJVL0FwWHhIQXlVSStWMGxtQWhFc2sxbFE3SForQkhhL09RTThrK0hYc2VFRmoxb3M2YXk3OEJaR2xDYzNHNHRvcjFXTndST1NIZ1ZZQTBBWE1EZ1lxQVFFZWU1cUdvQVF0a28yRkJ5KzZSQTJmYzFaWkRmTUdpenFzcU9Od0hXQURVSmVlUGY5c00rTTU5Q0ppUkVxR3BrWTZFcUI5dCt1QjlnR1FBQS82S3FBWWhtN1dCRDJ3OGxsN1NIR0FoZG1ic0NEZitvSmVDdzUwMUlXSlRBTi81N3ljZ0tYTlVnMjZ0TVVhdURnUDB4dDJHUHpHaURLcGx6QllTelNXWERyNFdldnFNSUE2RXI4elRTTWMwek1DSzRIV1FkdTRoWUZnb2xDOWxxYmsrQnhhaFZEWUtvWlhMZVlIbTBVdG92RlZwUUdYT3VnSWpXQ2piTU5GQnlIMDRNaEp6Y1VhUmU1SG5Pd0tNQVMwa1grdU9vUTJFMzBmYURpaFdZU0s0QWl6aElmdExBWXVDWkw0dWVLMVN5Z0VFaW0zU3dmeExFOXN1bUpPeWc3WWNRK3c0QTBWMFpiTWpsbG5zZEtMa3Y0NnBUS2pxdElWTHdKbGMwaEpvemtBTXhId01zWlJmWGxGbkRkS0lPa20vN1ljckFjY1NaTDErMCt3TW9pbUREZnFsZ2h0MUVDemE4RDdBR2dQOVlwN0toMUlIRzVqUk1LMVdKUkdsWGxEYkowdWJkcHdCTCtZOXgxZDJ2b09kc1RZUE1JWUtqZ0dmaDhSUy9KR3BWUTlRZ0R3QVhFbXpZTThQdVlTZlJQait2QTZ3QjREOHVEVFlVZkRQeTBaeUdhVVdxRXNsWjkzOEdXTXFGYXFpcXlRRWRZQUpSVy9wTlZOMFFzYXFoOUFvemdNVlJqVGFMUHhid0dtRmZRblg4TUpjTWlPcXF5b1lpYjBaeVpqblRIYzgyMkxFc0pldSs5Rjdob1FNNlVLQmZBaTU1cCtxR3FMMXIzUWNBd1BuYWZwQ1VCd0RzellYQmhzRERIcTlpR09TRW9nVWEybjRZQXl4akxUazc2MVVCUzcyUTJRMHduWEhWaFN4MWJ2dmg1UTcvK3U4VExtVXFSWC92QWxDVkx3RmZURGZ4M0NZQWdMOWRWdGtRc1MzQ1ZkNHJ2NTFVcU1CTjJ3L0ZuZHR4MWIwc2ZINkR6Q2VZMW9PQXgvUEZOdjlTMUZhTCtYc1hBQ0tJZWkvOVdJVURGTTF3YUNDc2M0TU5VZHNpWEdWY2RVV3VPNmk3a1FJM09kQndMY0JTTmxiNC9JWlFmU21oZEZGN3EyNVp6Uml4MVdMRVlBNEF5eFY1UXo5Vk9JeHRQOXdKc0JaZ00rOGNMeUNxaXlvYklyWkZ1TXJ0Mk1zcnl0TklBN1p6MWsyUmdZWXo3b1paeVlhVVdjUGtJcmI3MjZpYU1YQlZnMEY1QUVSU3dvYmdweHgwdUJWZ0xjQjZCQnVBc1A0VGJDajBKbU1ZVjkxeGdIWFU0R2hjZFdFMmwvTkdkeGRnS1R2SndadVBoUzUvcHdHeXdML2xxckZ3UFp3M3JHNklXTlZnWmhQN0pKQUZleFkxa0wyTFNBbGNhL2d6QngxQ3pwaUNRNHIyL2FSOU9CRFplWlVOeGZWdUhGZWQwczlwZkJ4WFhaakI0SG5qcTVxTjduSFZGZnNBSmRNSnBqV3V1b2lmcWJXcUc0SitIM3p4MEFWUVBQZWJNVHpMUVlleDFQYktzQWUrbndEV2RGNndvYlIyTmE4Q3JLRUdYeUp0aHVmZW9TVU9LYjlLcWUyVWxHbkM5TUlOZGxzemErdlBHWmF5a2FEQkczWlFZNFl6Y0NVSlpQSDhub01PbnlVZnNYRGUvd0JyK2xld29lMkg1NlVkdUhIVnZReXdqTktkUk5xb2Fmc2hEVlQrRkdBcGs4dWwxT0hhcDZ5aCtGWldFTTI0NmlKbUMxN2FIaW5vUmtPcExlcTRYTFIyQmRvb3dmN1Zta1ZmdzNXcU85Tm15VHczbGtpd0FXQk5QMVkyL0ZyWWdYc1FZQTNGRzFmZDlXQ3Y0V3VBTmV4TnFSbTRPUWdFVEN0Y2RkNFZHZVhoV2kyVzNLS09TMm5kQWN0enM5SlhYTnNNaE1kbjJpeUZhY0VMZXliWUFMQ204OW9vRlVPVzJlN0dWZGRHV2srNmFRMndqRGtjRmJobVZVUXdzYURWZWVkV04rU0FZN1JXaTFvcDFrdEZIVkNGY2RYVjNJNzBUUTQ2SE9jMnVBREF3djEwK3ZJTGJLR2txbUYzTnlJdFprR0JodlRROGFUdGg5S0dYejlybXFhNFZtc0IzVnZTZTUyMVBMaXFmZEhjVXJ1a2NkVWQvL0JuZi95L0QwNHJSZGphcmFYTnhaQ2tGSnRCeE1WTFZTbWYybjVJcitOOTBGYVJTM0lubjR2Rm1PRTcvbDZnWTZtRktCRGFUMmNXVjFRTEpROE1PN3M5cnJwdlVSYlQ5a09ZdGN3b1plUytXTXlyQmM2VnJtY0JId2pURU9pL0s5K0NWalZJT3FoVTJ3KzF0UnlKNkhIK1dZelQ3OWxvVmIzOHJmWTVBRWNMK3N3OVBKTlk4MHBpd0VHVTFoNTdaL2s3L2lSZ2kyaUF4U20xamRMVEFHc28yZDF6TWxZUHB1Mkh6d0Uzc2ZiT2pUZHdScWhLcythL3c2QWpWalZJT3FqWHM2VWZBUFpIai9td29qMExUSjA1dk5UcTRCZTV6ZEkzMVN2TTROb1A5NisxY2c4TWhQWTkyRkRhRi9LNDZtclBmTm1ucCtPcUN6UGdzKzJIZHd2dnkxemk3QVpnWXJuUzdFdXc0M3IyV2hGdEUraDJnRFd3QjBHckdwYlZpNkoraG53R0U3VENlZExOdkVnVjVRZVM3aU4rejRHSHo3bGlFdlpCUUJuZ3dFNHJHMHJLdFBEQXQ3MmpTSUdhdktId01NQlNEaWJOYmlocHZVdnI3d3h6R2xkZHRBMndsQjEyUFExOURMQ1dzMDRpVmVjeG5iejVGTEdxb2ViaHJuQlF1ZElrWW9YelBqNzNyL2J3TzB1VUVzMis1c0NESkVJQXFNeHBzS0drY25XYm5kc1pJbTFzNXdjTGJSSUEvaTNhd0xmalBQUXhETDE0NjVRRERWK0R2amp0Q21BUDJuNjQwelRObTRqSGRoK1Y0RnFvbnV0eERqcU1XcHpCMnR5WEFLRVZON05CQ2VwV1VoYm9uU2lMaWZ4Z2NTQy9MUEpWQS84eHJycG9BZlhhZTJnVFFLNmFpeHBvTUI4RTlpQlhPSDlhNExGMUhidllteHgwT0Y1STMzMEFxRkpwd1FZdGxMWVFLUXMwWnk0dThjSGlRdU9xaTlpZkdqZ2NiUll1RURBWXd3NXltNjZVUlBLSDR3akxrSUtMYVVONXFSWE9ybU5yU1JXVmYrYkFnK2NrQUNqTVQ0V3R0NlRaRWlHTXE2NE50cVN3bVlzQUVhUTJDMjAvdkhBeS9rTVFwZ0k1NmVDbFZvcXdIRGxMdmFSWmJlLzMvUHVQVXZ1Z1BmK05XanhyK3lGZEw3NDBUWE5IbHdNQWlPK25rZ2ErS21QZlRMUkFRODVpQXVCcUQyUjcvNXRlMTJYSjk1ZDM4cy85YUxNL052QmJNU3VGQThvQmhWdjU4NTUrN2hWOFB2YWFUWi9tNkxYOUlOaXdtWnQ1cUhUNmwyNlBxKzY0b0xVRHdLTDhaT0J5dFc1RWVtRUNEZFdZZkZnZThGOHB1SjRmcVBuTHo0N0RkRnlUTnlMSVJRMWVxSmhiMzB3SmJyZFRxNkFaL2s2Ti9zejNTRGRVT2dCQVBQOFRiS2pTM1VnM1hya2ZNeFZ3UXcrenV1MXcvMlZjZGU4aXJJUGxjZDBEOWlGbjVoODV1RHY1NmprVEFPTDVYK0VscnZ6WDAzSFZoY2srYi9zaHJlVmFnS1dFbGZ0WEEveEwzb2c0Y1ZRRVhUaVlMdzQ5TE01c3JkTlNPeVhYK1oxZE0waWFwZEZlSElqdWZ3V2RvWThCMWhEZDBianEza1paWTlzUGFTMWRnS1ZFWi9BNWNLNXgxUzA5R0htaUx6TUg5TWpCaDJVWlY5MnM5K1d1ODVONXBrVWdBTVJRVXJDQnl3MDVPeWFFdGgvU2pickJaK3ZSUXhlNHpHS0Q3VFpoT0tSSWxhSkF2Y1pWMXpxOTA4aFZEbUdlaVFGZ2lVb0tObWozZExFdjQ2cTdFMlV4YlQra09TQy9CbGdLUVBIR1ZiZlUyVW9xR2prazd6OVlucWVIZXNVNTRLQ2wwalRldFAxZzFoTUFISWpLaHZLbEZoTzNvcnlLdGg5UzBPT1BBRXNwZ3N3YllFMnZsbmFnRmh4a0lRRHZQMWllUTdlanpkVjhBcDNUZUpobkJ3SUFNeE5zS0Z5a0ZoTjUwUEduQUVzcHladUMxbm9VWUEyd1NPT3FlN213MXozYmdFNDRoOEhRc0R3aDduTnpvUE5CZ0tYVW9CTndvRWE1a3dSQVdFVUZHOXArTUtqdmpJRDlQYjhHV0VNeGNuQ21KR0dHajhOQy9ieVVsejMzZ0U3NDRmMFhwbUlVbUVlazJYZmpxdnVRbi9NRVBuY240QUFBTXl1dHNzRm01ejl1UkZsSWs0ZHhCVmhHYVk1TFdtOTY4QW13REZpc2NkVXRwZi93d1hwbWd4WW1zRWdoV3hYbXdPZnRBRXNwWFFvNFNHSUFnSm1VRm15NEZtQU5FZHdkVjkyM0tJc1JhTmhjcm1yd2ZnWTJWZjJtdzZGN1pyTnNaalhBOGtSdVZUaXV1dU5jNWFDMTBtNStMYkNxSEFDS1ZOek1ocllmbHI0SjhXQmNkV0ZLUWR0K0NCUDBLRXhSVlExQURHblRvV21hazRwUGh3eE9EdW11b3crTEU2cGEvQ0puV2l2ZHJ2dytZSiswL0FXQUdmeXZ3S0d2andPczRWQitpZFRLSnZlL2xKMi9vVHpRcWJUakZySzhISlpvWEhXMVp1YWQ1R0FLSE1MN1NNa2N3Q3graVZRdHZvNWM2WEE5Qng1S2U0NC91TFlmWGkvOEVBREEzdjJ2eERrSWJUK0VMWFhkbzZOeDFZVzVPY29WSmwyQXBaVG9qOUxXSExtOEhCYXF4cjd5aHZKeUtDblE5Y2pSaDBVWklqMWJiU01OdGM1QmgxU2RNWlQzQ2c3aTJRSmZNL1hSRWd3STdYK0ZEbjE5RVdBTmMwbzN3MCtpTEtidGh5Y0xyekRaV3RzUFN4bndDdXhSaFgzbGg5S3lTNmxIeGRWQ3dQblNOZWRPTGNjbVhUL1Q2OG1CaDd2YUxGMnU3WWNTOXovZ3JHcSt2NEE2RlRlejRkU0NiaEpPSXQwTXQvMlExdkltd0ZLS2s0ZVNQU3h3NlRLbElLWnEycHZWdE9sRFVVN3k1aHl3SEZVRkduNlUyc0dkYWJQME5OYnF3cmkzOUFNQXhKZjMzcXFSMjRsSDhjVkhZTDlPZ3cwbHRtTll4RTFDcEd5N3ZGbitLY0JTU2xYcVVES3RKU0NnaXRxYjZUbk5JUXdxR21CeGpwWVUzQjVYM2RzVWRNaUJoOThDTENtTWhiWmxwaDd1WC9ZbjB0Nm84N3cvNWdUdTJXbXdJVXlMbmsyMC9UQ1dzOXJOQmN5MkszV3ovT0JLYnA5a1lDdUVWbnpXWXFRMmdTekdMNnBwWUhIdUx2bDZNNjY2NTJmbU85UTQ5MmxUUzJ2THZDUkw2SURoSGdZSTdYdXdvZVROeER3L29EclJBZzIxQjNiMktaZS9sZGcrcVpGeERMR2xyTVhDVDVFV0Q4enBKR2Y1RmowVWx0MVVWQlhHZXI3a3ovMW54K3Z2K1E3M3pYZWdWb1hPSklYejFEYWpyN2JYd3lYT3ptd29OY09oeHZrQk53S3M0VzhDRFRzcnR2V1VqR01vd3UxU1QxTUZ3UkxLOFVEYnBNVjdiMGJINHR3ZVY5MnRwUitFaXl4OXZrUGJEKzVCNnJMdjcvaEkrMlhtanV5UFlOVXlPTTk3OXRPWlgvK28xRFk1YlQ5OHErZ0JNcFg0Zmd1d2p1L1NzUTJ3akdJVmZ2eGtPdTFIR2taVTY4Tk5lcUIvSEdBZGk1S3FFOXQrU0ovWGE0Vzk3cnNCMWtEOW5ncHFuZXVWREg4cWRsc2IwTTNrNzhudjM1VnRQNlRxcjJjRkxYOWJqMHR0SjcyR0J6TDhvWGdxR3lqVzM4R0d0TUhkOWtPcHIrTmEydy9QS3lpTGZ4cXB4TGZ0aCtNQ042L0N5Tmt5SlI4L3ZTRDM0N2pXRFo2MkgrNExOaHhHQ3JnWFZvVjJvcVVGZTVTQ3V2ZHROc0tpcEt6bVIwNzU3dEo4aDZacG5yZjlrSkw1M3NtaWh1OCsreXdzUXFSazBkcjJZeUs5SHM4SWUvYS9IMzU5eWVXVHYrWWJvbElkUmNxOGEvc2haVUxjRExDVUl1VTVEVVZ2dXRxa2dlS1UxQTVSV3d1bWxnSU1QK2ZlN0xkY3cyQVIzcWYycy9sekw5QXdzU1hNZDhqUGJMQU9IUitXSVZJeVZHMkp2NUZlaitlRVBUdmJSdWw3K1dUYkR5WFBRRWh0b0Vyc3hUcEU2bzJmTS9KRjdYZFQ3SnlHN0VHSVZRQnJTeHNDaFZRM2ZJblVMcEJpcFUydjExb0J3YUtrb0dLcVpuL250TThyVnlOK1QreHIrK0ZKUlhNVG4xZmNTb2xwcWNnRldOT1BsUTNKcTVJUFh0c1BwVjBFVWl1Sk1Ca1YrZVpSRzVRZDFEQlFXNDlQS05adjBSZHVXQ2RiU0ZVN3Y1ekpZRzd6VUZPQkJsaVdtd0lOaDVjU0ZFKy9pMHU0NzdpQzUxN1dKVkZtQWV5RExJUHp2SC8vQ1RaVThPRFdwZmtOQWRheGxraURyWE1aYVMxWktnZFJ5VUJ0VlExUXFOeG5PYklqN3kyeWovbm5WZjU1a0llNnR1ZjhwRFllcjFYRUFBVW1sbFV0M1hma29NT05WSzIvOU9OQnZhSnRUcmI5SUhrSENPdW5DeFoyVkhpVVA4MXZlQnY5b1RUZm1JV1E1MTJVM3Zybm9QTERUL0Y5OVVSNW9YaFBvd2FPSTdVTVhMSkk5eC9BTEY1dG1sQVd1RkkzSlphWnl4Sk1mdTcrWHExZldac2xpT3ArMHpSaFpuNENuSFZlRzZWYU5nTytCbGpEaFFJKzZJYytYdEcxL1pBZTRMb0tYc3J0QUdzQWRwRGFHd1E5ZnI4RVdBTUE2NG5jV3ZmUEFHdmdBcWR0bG5MeUE3QWZFbmdXb08ySFJ6Vzh5bHBlQitzN045aVFGVDI3b1ltZGtYTWp3QnIrVnNPTWdVUEs3YWRlVlBCU1RtU0pRVFhDQlE1VEc1d0F5d0JnRGRGYjY2WXE5Z0RMNEJKbmdnN3ZIU2VZM0QySGRCRnFDU29KamkzTWhjR0dXb2J1QmV6cmVUZFNleWVCaHQzVTFINHEwdndRWURjQkE0ZG13UUNVSjFTQzFBOE05aTNFdU9wU1J1dmRxS3R0KytGK2dHVUFuT2RoSlVlbGx0ZkJtaTZyYkdncTJSem9JbVcraktzdVRQQ2prbUhHaDFaTCt5bERXNEc5TVFzR29EdzVRZXBqMUlWTG1pcEhmZ2FPR3J3U2JBQ0FDVjBhYktob2MrQnhIbFJGVnNzdzQwT3E2UUhIMEZZQUFINDBycnJRRzdHZThjcVJnMWZtT0ZDeUlkTGFWZVhzVGRnZ081TndmbWR3VldWREU3eDhkaE52Y20vOXhjdVZIalVNTS83dUVDMi9Lc3VrTWhRYUFJQ0xoRzJCazU3eEFxeUJOYVU1RGdHUGxRMWIxaFV0R2JlSzF1Y0JoV3JGWHZwdzVZRHJqOVpxdjBwWEJodWlsODl1NkZQdXNiOVliVCs4cktuSGFSNDZOcXZLMms4TmhrSURBSENSM0FMblM5UUQxUGFEZTlteW1PTkVxZDRGVzdjaDBmc1JMYWowT3NBYWRoRnQvZHI3em1DZHlvYnc1Yk1icXFYSC9zWnlSUEZGWWN1KzBJRUNEVlcxbnhwWG5Xb2ZBQUF1TmE2Nlc0R1AwRTBWN09Vd3g0bFNlZTh1UnJUemZEUEFHbllSYmYwK3h6TllLOWlRVlpPQnNNUmhZdmtHL1BjQVM1bks3TzI5Y3FDaG12WlQyaWNCQUxDQnlQMzJQd1ZZQThDc2NvdHNKcFM3dTRUUzlrUGtnUCtGSXE0NzR2bXQwZHJCaGh6RkRWcyt1NmtsQlJ4eTY2aWFic0R2enYwRlVkdWNpNlpwM211ZkJBREF1bksvL1pPb0I2enRoMmd0VGdEMnJab1cyVnlxMUd4OFZRUUx0VWxsUS9UeTJmdnREa2NBQUNBQVNVUkJWSTFWMW52L01qVzFqbnFhKzhiT3ByWTVGODFmbitXaWh3d0JBREMvY2RWRm5uLzNjT256K1FwU3kweElPRGh0NUJhaDFGWktwYmVBWWtzYkJSdXltZ1k2WGF0OW9GaGxGUnkvNVl5cTJiVDk4S1NtT1JmTmdXWmRBQUJRamQ4Q3Y1REZ6dWNEWmhFeFVLYU4zQUtVMWpJcjZIckRWbWZXWnVOZ1EyM3RsUEpBc1ZrejVlZFNXYUFodGYxNVB1Y2Z6QmtDYitiOG16T0kzR3NYQUlEZzVyNG4zMVRiRDZIWEJ4VHRkY1RGdC8xd1A4QXlhaEl4cUY1YXQ0Mkk2elhqWkNiYlZEWlUxMDRwOWVLdkxlQlFXWXVvWWU2MlB6blFVRnVHd0RCM1pRZ0FBRlc2RWZoRi9ScGdEVnhPMnhlS05LNjZxTE5oL2dpd2hwcUVQTStsZEdZSnZMOXF0dE5NdGdvMlpIY0xlNjFYNldxWjVKOC8yTmNDTEdVS0orT3FtL1ZtdE1LQjJ0L05mUndCQUtqVHVPcStSZTY3djZEWmZLV3E1VmtWd3FpOVJmaWNja2VYaUc1R3IyTEppYnRkZ0tYOFIrRHpXcDJ0Z3cxNVNHOXRnNTBlbHg1d3lPc1ArY0hleHR4RDZIS2dvYnBlcitZMEFBQXdwWEhWUmQ3d3VLYXRDTEF3TjJ0Sm9PVlNmK1I5cTZqTUVHR255b2JvTjVqYktqYmdrSWNabDliSDdVSUgyaUN2Y2FoY1RVUGRBUUNJSTNLMXU3WWlBUWtDVVlHandDK2grQVJhMWhKeTM2cXl1YkhzWUtkZ1ExTnZ4blJ4WDlBVkRqT2V2UTlzcFYrTVIwckZBQURZaDF6dC9pWHF3VzM3d1gxd1BJSkFsTzVsOFBVL3JtMG02WUZFSEJMOXQ3Ui9sZmNCSTZ6bGVnSDdhYUhQWjIxMkRqWmtUeXM4TnNVRUhOcCt1RlZacWRLTjNBZDJOcFVHR3RLOGl5Y0IxZ0VBUUtYR1ZYY3I4Q3U3Rjd6ZHhLSUUzUUFWa0dJajQ2b3JZVFpDbHplakkzOC9SL2U2Z0RWK2F2dmhvRU9QODc1cENSMUNTamlmMVpnazJEQ3V1dlRtR2lvOFB1RUREdm5tK2M4QVM1bktYWUdHYWN3OTd3SUFnTVg2SmZBTHI3Rk5hbkh5ME82SXN3VUZHNmpabittekoraXd1VUtDU3NuREhGaWF0ZUltdFhIUGUybEZ0SEl2Nkh4V1lhcktoblRpUXBUdjdFSDBnRU5OTjg5UGN5bjJiUEpOYjNVTWhBWUFZQzdqcWd1ZE1UajNKZ3ovT3Zadjg0YlV0YUNIUmJzWnRoRTV3UHFqYXpub01PYlBvNlRFT3IzSTUvaDRYN054VXR1bS9Qdkh5dHE0TTdHZnB2eDFhWU96MGl6eEZIQzRGVzBnZG1YSCtpaFh5TXdtQnhxaTN2VHVJdktnUGdEZzhOSUQ2UXZuNFMrU05LWVIvRm53UlFGOTFvdVhOekVmTlUyVFdybmVLK0gxekYxVlA1TS8ycjdHeGhOYk9kbEh4WDhLc0xiOThPczhMMkZTai9QKzF1bnYvSmlyZTlMUDUwby9EN3Q0bGE4ZkpibjV3M2ZBU2RNMGIvTTVQbDRud1RkWHdxU2YrL243L0daaHgrQkhyMkl0cDM2VEJodXluNXVtK2IzQ0k1ZjZmWDZPVXNGUldVYitNUGRzZ2R3dnRNWkF3K3pWSVFBQUpVc2I1QUlPazBrREdKOUZYRmg2ZnBxenpXamVlTmZDQ1E3cldzckVEajViNXBEdTVaL3ZHK29GQjZudTdtTWZaRngxTHl0SXpyaVdyOHZmcjgxTERFU204eGhnR1lzeVdSdWxVK09xUzhOSjNsZDZFTHNJUTYwcXk4Zy9tVHVBazl0aVJld1h1cXYzYzFlSEFBREFxWEhWUFE5OE1LN3RxN1hFQlFRYUlJWjlaV1dYMUVxcGRwK1dmZ0Fna3NtRERjMWZONW1QY3FsT2pRNGFjS2d0STMvdUljYTVYMnNSQTJ3MmRKSS9kd0FBY0VnM0FoLzlQd0tzZ1RocVRaSmtCdEZuMVRDWkk0ZXlhTTdmQWV3bDJOQWNZQk41WnQwaDJoalZscEUvZDdsNm1wWmZZTCs5dFZUK2VRTUFvQkM1NS9mSHFLdHQrK0hEREg4ajFLdy9MaFM1RW9jeTFKcGtTelozeTIrbTVmd2R4dDZDRFZua3JKWmRYWnN6NEpBM3lxdkp5RDlBb09GT3JkUHk5UmdHQUNDU2NkVkYzbXkvbCtjcHNIRGpxanRlK2pGZ1p5Rm1lZ0pFc3RkZ1E4NXErYm5pTTU0Q0R1TysvMGlGRytXSENFTFYyc092NW9BZUFBRGxlaEI0NWVZcElDT2RuUWxZTFViTis1bzFlN3IwQTNBbys2NXNPQjBZWFhXUHJIMEdISExXVFUwYjVYZHpFR28yY3dTRUR1VHAzTWNTQUFEV01hNjYxSzdvUzlTRDFmYURmdXZMWnQ0ZFU3R2hXYm04cjBsaHhsWDMxams3akwwSEc1cC9lbVJWblRtd3h3M3Rtckp1MHViNHJNTzFEekZiWXlaSHZqZ0JBSWhzWEhXM0FpL3ZXWUExY0NBNUdBWTc4MXkrR0srV2ZnQUs0M3dkMEN6QmhtWWhBMnhUd0dISy9wK1ZaZVRQdmptZWg3OWRtL052enVURWtCc0FBQXJ4UzlSbFZweVl4T1dxN3J6QVFVUnVHOGNFeGxYMzBuRXNoL04xV0xNRkc1cmxETEw5bW1jczdLU3lRTU13OStaNDJ3K3BMUGJlbkg5ekxrc0kzQUVBVUlkeDFVVnVWM1F0UHpld0lCSzNtSnBLbWNXUUxWOEc1K25BWmcwMlpFc1lhUHVwN1lmNzIvN0xsV1hZZkJsWDNjN0JseTM4Zm9DL3VYY0xDZGdCQUZDUjRQZXdWVDQzY0NGVkRlekxFdmE2RmsyMmZCbWNwOE9iUGRpUUI5cmVEWGdzcHZaSDJ3OGJaMHkwL2ZDNW90WS9KNGZvMDFyeFFHZzNMd0FBbE9xM3FPdk96MkFzZ0tvRzlpWHZkYjEzZ0t1blpWWnN6azhBaDZoc2FQS1E0Q1dVdGJ4cCsySHRPUVZ0UDZRSjk5MStselNmUTdUN3ljZXdSZy95elFzQUFCUm5YSFhQQTYrNWEvc2g4akJycHJHRXBFY09hRngxMnJKVkxyZk0rckwwNHhEVWlaWm1NUndrMk5EOFU5YnlNZGp4MklmSDYyVEt0UDJRZXBrK0xQSVZudU1RcGRKNU9IYzF4L0NNSTErWUFBQlU0SGJnbC9CbmdEV3dQME5PZW9SOTA1R2djb2ZvNE1IVnpEZU40MkRCaHVhdk4wS2FhM0FTN0pqc1EzZlpISWJjYnVsWjBhL3czdzUxY2YxNm9MKzdUN01QMXdZQWdIMFlWOTF4NUlTelRhclNLY3VCNWdpeVFMa2pnVll1OVlzY1BGOGlsV3VCSERUWTBDd3I4blR0dkZrQ2JUK2ttNTQzaDFuU1h0dzlSTHVmWFFaeVIrYW1HQUNBbXVTRXM2Z2VlN1BWSi9pQWNpcVVPeE1ZUmw2eEhEei9aZW5ISVloWEt0ZGlPWGl3b1ZuWXhmOXN3Q0czL2ZsMDJCVk42c0VCUCtCL0hPanY3bzJiWWdBQUtoVTI2L2U4QkRHS3BxVU5CNUU3RkJnWVhiRngxYjFlU0h2NHlJYmNwcDlBUWdRYm1nVUdISEtnb2FhMlA3K1lLekFwTjhVQUFGUXBQemVFYmFlYjI5eFN2aHVIcUxxSFUzbGd0SUJEeFhLMTNyRDA0M0FnZzI0Z01ZVUpObVJMMm1DdEtkQndsQ082QjlIMlEyMVJ6SU8wb2dJQWdMa0ViNmRiVTV2YlJVckpqSjZwaUNBSEhMUlVxbGplOEJad21KZEFRMkNoZ2czNVpzQlFqN0pFR0dCYzA3d0d2ZVlBQUZpS3NQMnUyMzQ0RHJBTU5uZWlIUzNSNUQwVFE2TXJsamUrZjF2NmNaakprVUJEYk5FcUc1cTgwZXBMdUF3blB1Q1QwbXNPQUlERk9HUjE5QnB1dHYzZ1dhY3NyNEpYekxCZ3FYMmNRRmpkeGxYM1hBTDEzdDBOa1BETUZjSUZHNXAvZW5nK0RiQVVMdUZHYmxJQ053QUFMRTd3emJkUEFkYkFlbTVJM0tJRStUdlBISWRLcFFUcWZJN0R6aVVxMUVsdWo2Y1RTQUZDQmh1YXZ6NmdiL1cxaTB0RWZsb0NOd0FBTEZqWTFoTnRQN3piOU4vSnlYUE00MmZ6R1NoTm51T3dwSm1saTVQM2VINWUrbkdZeUZON1ptVUpHMnhvL3VsckorQVFqRUREdEJ4UEFBQ1dMTGVlaU9waDJ3ODJPZUo1bFlNTUd3ZURJSUlVSU10N0FkcnVWQ3A5UCtWemJGOXpPMGY1ZS81dGlZdGZzdERCaHVhZmdJT3A3bkdJdmsvcmRrMHZCZ0FBdGhUNXZ2anJGditPNTZiOWVKbzNuN1JNb2dwbjJ1N1lHOWhlNklCTjJ0Y1VkTmpJYVpEQmJJWkNoUTgyTlA5TWRSZHdPTHk3eWxNbmxXNlVqeXQ2UFFBQXNKVjhYL3d4NnRGcisyR2o2b3N6V2NzUElyK3VRcnpQRzA4eVhLbFcrZzQ4ZlorYjZiQ1JwNlgwOFQ4VGROQmU2WHhQQlJucThGTXByeUlGSE5wK1NCdmQxd0lzWjRtSytRSXZ4SkViNWNVU3NKdUg3eXNBS015NDZ1NjMvVEFHWGZXdlRkTzgzdlJmeXZNYjdwLzk3OXArdU5VMHpaUDgzOStiZEpYMVNKdXRUd3BLZG5PUHoyVHlUSWZUNzRyVUtxeHpkUC9qdCtBdCtDNlUyNzk5YjZlZEE5bS94bHpwTElvOWoxeXNtR0JEa3dlc0NEZ2NoSTN4YVgwUnFaMVhlc2hyK3pERlVkWDJsUTEybkExbS9DdUwwZ1lHUC9yaWlCeE0rdjUvc2REWHZrUTJIcmVVc2hvREJ4d21rYXM0em0wRDFQWkRlazVJRzQwUHkzdGxPMG5YcDVjRlAzZStXK0E1WTgveWQ4V2QwNytTTjZaZkxuQlA3Q1FIZTEvWDFtMWpYSFd2VHdQWmJUL2N5Zis1NW1lNGovbTczdk42eGRweExPOCtydmFiejJDRzNNWXFyTFlmUHBUMFpXd2c5R0cwL2ZBNVFrWkk3ZWUvN1lkMFEzenowT3Z3T2Z0TGtPdWxiSlcvemtXVVpJa0hidTRQUjlKTVdIZjNVY0ViNVptbDFHdGkydzlwMC9seGdLV2NPdmh6VWRzUDkzTTFST2tWRVNtd2tNN3YyNXJheXRxbkNPdEdyZTJnODNmQ2syRGZsYnY2bUw4YkZwL3cydmJEOVh4K0h4WDZuVC9rUUd4MVFTSXVWMlN3b1hFaG44dEpxaWFKdnNpU2dnMDJRQTh2MzVETmJtbWJlNDV6TEFjNkg4Zm0wdnhYemxpYS9kcnFzeEhMb2I0aitiZTVQaGV1aWRNNDRPZm1jMG1iSlBrNDNjby85L00xWis2RW01UGMwaks5QnorNEQrWVFsbnp2azlzdjNjay9VWUtUcDdOclB1VHZoMi91VDdkM0p2aDgrbXh4aUhNODVFck9SWDdYYzdGaWd3Mk5nTVBlbGJJeFhsQ3dvZHFNQ2dBQUFBQmcyZjVYOHF1WEpiNC9qdTNrN2dvMEFBQUFBQUMxS2pyWTBOZ1Uzd3ZIZEhKUDk5RUhHQUFBQUFBZ2l1S0REWTNOOGFuZHFPdmxITng3ZzQwQUFBQUFnTnBWRVd4b0JCeW1vdFhQdE5LQTdVYzF2U0FBQUFBQWdQTlVFMnhvQkJ4MnBkWFB4TVpWZDcycUZ3UUFBQUFBY0lHcWdnMk5nTU8yWG1uMU15M3ZRd0FBQUFCZ1Nhb0xOalEyZWplVlpncThMR3ZKNFpsN0FRQUFBQUFzU3BYQmhrYkFZVjJEbVFLVE0vY0NBQUFBQUZpY2FvTU5qWUREVmRMdzRqdXhsMWdjY3k4QUFBQUFnRVdxT3RqUUNEaGN5UERpeVIyWmV3RUFBQUFBTEZYMXdZWkd3T0UvSEkvSnBYWlVUeXA3VFFBQUFBQUFhMXRFc0tHeHdmNDN4MkY2MmxFQkFBQUFBRXUzbUdCRFk2TTl1UkZnRFZYeG5nSUFBQUFBV0Zpd29WbjI1dkRkY2RWOUM3Q09hZ2cwQUFBQUFBRDhaWEhCaG1hWm04UlB4MVgzT2NBNmFxSktCQUFBQUFBZ1cyU3dvZmtuNEhBU1lDbjdkalN1dXJkMXY4VFpxUklCQUFBQUFEaGpzY0dHNXErQXcvWEtBdzdEdU9xZUJGaEhUVlNKQUFBQUFBRDhZTkhCaHFidWdNUEp1T3J1QkZoSFRWU0pBQUFBQUFDY1kvSEJodWFmZ01NUVlDbVR5YStKNmFnU0FRQUFBQUM0Z0dCRGxxc0FxZ2c0TEhBQTlyNnBFZ0VBQUFBQXVJUmd3eGw1US9rb3pJSzJJTkF3UFZVaUFBQUFBQUNYRTJ6NFFXNlZVMnJBNFVhQU5WUkY4QVlBQUFBQTRHcUNEZWZJQVllbjRSWjJ1YnZqcXZzV2VZR2xFV2dBQUFBQUFGaVBZTU1GeGxYM3RxQ0F3OU54MVgwT3NJNmFxQklCQUFBQUFGaVRZTU1sY3NEaGJ0Z0YvdVVvcjVQcHFCSUJBQUFBQU5pQVlNTVZjc1ZBMUN6M2o3bmxFOU5SSlFJQUFBQUFzQ0hCaGpYa0xQZG9BWWN2NDZxN0gyQWROWG1sU2dRQUFBQUFZSE9DRFd0S0FZZEFBNE5QeGxWM0s4QTZhcExhVWIxYytrRUFBQUFBQU5pR1lNT0dJZ1FjeGxWMy9kQnJxTXlnSFJVQUFBQUF3UFlFRzdhUUF3NG5CL3piVENjRkd1NDRuZ0FBQUFBQTJ4TnMyRkt1THZneTg1K05PcWk2VkNjQ0RRQUFBQUFBdXhOczJFR2VtekRNOU9kdTUwSFZUT05FT3lvQUFBQUFnR2tJTnV3b1o4WWY3Zm5QUEJoWDNmSGVYOHlDQ0RRQUFBQUFBRXhIc0dFQ2ViancwejM5K3FmanF2c3c2d3VxbkxrWEFBQUFBQURURW15WXlManEzalpOYzNmaVgzdVVmeS9UblNlQkJnQUFBQUNBaVFrMlRHaGNkWjhuSE9JODVJb0pKaUxRQUFBQUFBQ3dINElORTB0RG5DZlkxRDdKc3lDWWlFQURBQUFBQU1EK0NEYnN5UzZiMjRZWFQwdWdBUUFBQUFCZ3Z3UWI5aWh2Y24vWjVDL1lHSitXNHdrQUFBQUFzSCtDRFhzMnJycGJUZE84WCtldjJCaWZsdU1KQUFBQUFEQVB3WVlaakt2dVVkTTB2MXp4bDZZYUxNMWZNeThFR2dBQUFBQUFaaUxZTUpOeDFiMXVtdWJ1QlgvdGJob3NYZDJMUG96QnpBc0FBQUFBZ0hrSk5zeG9YSFdmejZsZ2VKci9lM1ozTks2Nk80NGpBQUFBQU1DOGZuSzg1NVVyR05xMkg4YThPZjUyU2E5L2ozNGVWOTI3YWw4ZEFBQUFBRUJnN1RpT3pnOVZhZnNodFZGS1FaeUhUZE04R0ZmZEIyZVlRMnI3SVZYY3BQZmh0YVpwdmpSTjgwaEZFd0FBQUFBQUFBQUFBQUQ4UXljbHF2RkRBamtjWEM2MFNlL0o3c3hhYmpaTjg2bnRoeWFQYmRGTkRRQUFBQUFBQUFBQUFJREZNN21CNHJYOThLUnBtamNYdkE2VEd6aUl0aDlTMGNMak5mLzJVZE0wei9NWWVRQUFBQUFBQUFBQUFBQllITVVORkd2TjVISEZEY3pxaW1LYnE2UnhEay9HVmZmWldRTUFBQUFBQUFBQUFBQmdTWDV5dGlsSjJ3L1htNlpKeFFxZEUwY2tiVC9jYVpybTA0NUxTdS9yVDIwL25PUkpEbStkWkFBQUFBQUFBQUFBQUFDV3dPUUdpckJEVVlQSkRleFZmbThlTjAxemJVOS81MmhjZFUrY1JRQUFBQUFBQUFBQUFBQnFwcmlCMENhWTFLQzRnYjFwKytIempGTkVocVpwN28rcjdwc3pDZ0FBQUFBQUFBQUFBRUJ0Zm5KR2lhanRoenU1cUdGZjNmQmhhMjAvdkcyYTV2SE1SekFWVVh4dCsrRWtGemw4ZGdZQkFBQUFBQUFBQUFBQXFJWGlCa0pSMUVCa2JUODhhWnJtellHWG1ENGJuOW8rRFhKb25vNnI3bTNvZ3dZQUFBQUFBQUFBQUFBQWEyakhjWFNjT0xpMkg2N25vb1p1NHJVOEdGZmRCMmVZWFJSUWRITTBycm9uQWRZQkFBQUFBQUFBQUFBQUFGdFIzTUJCN2JHbzRaVGlCclkydy90emFtbWN3LzF4MVgxejFnRUFBQUFBQUFBQUFBQW95VS9PRm9kUVlOSTRDOVAydzl1bWFSNFg5cXJUNStscjJ3OG51Y2poYzRBMUFRQUFBQUFBQUFBQUFNQ1ZGRGN3SzBVTlJOZjJ3NU9tYWQ0VWZxS3VOVTN6S1JjNVBCOVgzZHNBYXdJQUFBQUFBQUFBQUFDQUMvM1BvV0V1dVJQK1Y0VU5STlQydzUyMkg3NVZVTmh3VmlweWVOUDJ3OWoydzhzNHl3SUFBQUFBQUFBQUFBQ0FmMnZIY1hSSTJLdGMxUEQ0UUVmNXdianFQampEWENSUEUvbmNOTTNOaFJ5a28zSFZQUW13RGdBQUFBQUFBQUFBQUFENG0rSUc5cWJ0aHljQnV1QXJidUJDYlQrazk4YTloUjZob1dtYSsrT3EreFpnTFFBQUFBQUFBQUFBQUFEVmEvdmhWdE0wdDg1NW5hbFo5NTBmL3J1TGNxQ1B4MVYzWE9PeFV0ekE1SUlVTlp4UzNNQi90UDN3dW1tYVo0N01keWU1eU9GemdMVUFBQUFBQUFBQUFBQUFoTmYydzUxY2pIRDZFN0haZHNvUi9Yem01MFAwb2dqRkRVd21mMGhUSWNHMVFFZFZjUU4vQzFaNEUwMjZnRDN5ZVFFQUFBQUFBQUFBQUFENE96YzY1WjQrYXBybVpxV0haR2lhNW0zVE5POGlGRDRvYm1CblFZc2FUaWx1SVBwN05LS240NnA3dS9TREFBQUFBQUFBQUFBQUFDeER6alY5M2pUTlk2ZjhlOFBzZDAzVHZKeTc0RUZ4QTF0cisrRjZUaGp2QWg5RnhRMExWc2g3TkxLamNkVTlXZnBCQUFBQUFBQUFBQUFBQU9yUzlzT3RQTEhnbmxPN2xxTTVpaDBVTjdDVnRoL2VGbEtacExoaG9RcDZqNVpBa1FNQUFBQUFBQUFBQUFCUXRMWWY3dWVDaHB2TzVFNkdwbW1lakt2dTg5Uy9XSEVERzJuNzRYWFROTThLT21xS0d4YW03WWVVaFA5bTZjZGhUOUxGNlA2NDZyNVYrZW9BQUFBQUFBQUFBQUNBcXVRSkRlK2FwdW4yL0xxK05FM3pPZitrM09YamZVODUrRkhiRDNlYXBrbXZOLzN6ZnY3bnRUMy8yWTlOMHp5YUtyZFVjUU5yS1RoaFhISERRdVF2NUE4emZBbnpWNUhEbzdrdnVnQUFBQUFBQUFBQUFBRHJ5TG5QcnlmT0svMlNDeVhlN21OcXdSemFmbmlVY2tEeno1VEg1aVEzME43cHVDaHU0RklWSkl3cmJxaGMydy9YYzVXYkVVSHptK1JDQkFBQUFBQUFBQUFBQURDRmlSdTZIelZOODdMMlp0QnRQNlFwRCttNFBaN2cxKzJVVzZxNGdYUGxoUEVQTTR4ZzJUZkZEUlZyK3lGVnZ6MWMrbkVJUUpFREFBQUFBQUFBQUFBQWNEQVROWFQvMkRUTjg2WG5RK1ppaDdjN05oNVB1YVczeGxYM2JhTy9yYmlCSDFXV01LNjRvVUp0UDd4c211YkYwbzlEVUUvSFZmZDI2UWNCQUFBQUFBQUFBQUFBbU1lT3VjOURtbHF3OUlLR2krUkNoM2M3RkkzOE5xNjY1MnYvUGNVTm5LbzBZVnh4UTBYYWZualVOTTN2U3o4T2hWRGtBQUFBQUFBQUFBQUFBT3hOMncrM21xYjV2R1hpL1VaSjkwdlg5c1AxcG1sZU4wM3plSXREc2ZZVUI4VU4xSjR3cnJpaEFoT05DdUl3WFB3QkFBQUFBQUFBQUFDQVNiWDk4S1JwbWpkYi9FN05tM2ZVOXNQYkxZc2Nyc3pyVnR5d1lBdEpHRmZjVUxCYzVaWE9YN2YwWTFHQm8zSFZQVm42UVFBQUFBQUFBQUFBQUFCMjAvYkR5NlpwWG16NFM5NlBxKzZSUXorTkhYSjhMeTB1VWR5d1FBdExHRmZjVUtnZHFycUlUWkVEQUFBQUFBQUFBQUFBc0pVdEN4dnVqcXZ1c3lNK3ZTMG5hRnhZNEtDNFlXRVdtREN1dUtFd080d0pvaXlLSEFBQUFBQUFBQUFBQUlDMWJaRmorbVZjZGJjaUhlSGNwUDdPQkwvcTg3anF2azN3ZTNiVzlrTTZ4cWw0NU5vR3YrdmNIRy9GRFF1eDRJUnh4UTJGYVB2aFRwNG9zc2tYRytVYm1xYTVIK1VDQ3dBQUFBQUFBQUFBQU1TVDgwdy9iYkN3aitPcXU3K1BGN0xsOUlpNW5EUk44NjVwbXJkejUxQzMvWERjTk0zTkRmNlZHei9tanlwdXFKeUVjY1VOMGVVS3RIU091cVVmaTRWVDVBQUFBQUFBQUFBQUFBQ2NhOFBFK2IwVk5qUi9yU1hsdmQ0cjZFd2ROVTN6Zkk0Y3pRM1AwekN1dW45TnNmamZmcGJGb2FXRThiWWZQdWNLSlozd0NhbnRoMVFaOWxWaEEvazk4RFY5YitXQ0Z3QUFBQUFBQUFBQUFJQ1ViL3A2ZzRUNUwvc3NiQ2pVNHhsek5PL2s2UkhyNk5wK2VITDJmNmU0b1VKdFA3eVZNRTVrYVJ4UDJ3OXBiTXhESjRvZktISUFBQUFBQUFBQUFBQUF2bXY3NFZiVE5NODJPQm9LR3k1Mm1xUDVaTnRmY0pVOEhlTFJCdi9LNjdQL2grS0dpcVEzV2s0WWY3ejBZMEZNYlQ4OHl1L1JGMDRSVjFEa0FBQUFBQUFBQUFBQUFMemM0QWo4TXE2NjQ4VWZzYXU5MlhPQnc0ZW1hWDViODM5K0xUVk5QLzAvMm5FYzk3VXVadEwyUXhyZmtkNEUxeHp6LzNpUVB5QWNrUGNvRXhoU05XV3U2QU1BQUFBQUFBQUFBQUFXSURmVlhzY3dycm83Y3h5UnRoOVNUdXk5Q283KzdYMFdnMnh3N2s3R1ZmZTlFYmJKRFFWTDNjeFRWL09tYVQ1SkdpY2k3MUVtWkpJREFBQUFBQUFBQUFBQUxFamJEODgzZUxXYlRIaGdubVAyYXMzL1hacmVjRC85aDUvMnV4NzJwZTJIdDAzVFBIYUFpY3A3bEQwNUxYSXd5UUVBQUFBQUFBQUFBQURxOW1qTlYvZGxYSFh2U2pvUzQ2cHJ0L24zMm42NDFUVE42NlpwSGs2d2pKVG4rMlNDMzNPdWNkVzliUHZoeFpyLzg3U09EeVkzRktidGgwZDVSSWVrY1VKcSsrR0o5eWd6TU1rQkFBQUFBQUFBQUFBQTZuWnZ6VmYzZGludmczSFZIWStyTGhWOTNKN2k5NTFPVE5pajkydis2dTk1eDRvYkNwR3FiTnArU0IzS2YxLzZzU0NtdGgvdTVQZm9HNmVJR1NseUFBQUFBQUFBQUFBQWdNcHNtSFQvWVdublB4VTVORTN6VzRDbFhHWHR3cE4wem44NjJESlpXOXNQSHphb1BJSlo1WVR5RHpuSkhBN2x0TWhoYUpybS9yanF2amtUQUFBQUFBQUFBQUFBVUt5MWl4dkdWYmU0NG9hc2hGekpUYzdOTFpNYkFtdjc0WG5iRDZQQ0JxSnEreUZWVTMxVjJFQWdKamtBQUFBQUFBQUFBQUJBK2RZdGJ2am9YTWVWbTFWL1dYT0J0MHh1Q0tqdGh6dTVTdVhhMG84Rk1hWENtNlpwZm5WNkNPeTB5T0g5dU9vZU9WRUFBQUFBQUFBQUFBQlFwYVZPYldnMm1XNXhZTWROMDl4YzUvVW9iZ2drZHhuL29BcytVYlg5a0w0RS8zQ0NLTWpEUEFIbmFGeDFUNXc0QUFBQUFBQUFBQUFBS01JOXArbGliVCs4bmVJWWphdHVqdUtRRCt1dVZYRkRFUGtOOW5qcHg0R1kybjY0MVRUTlo5TkVLTmpqdGg4ZUszSUFBQUFBQUFBQUFBQ0FxaHlYK0dMYWZ0aWtxR0JmaFI0ZjkvUjd0NmE0NGNEYWZraEp0bThXZlJBSXl6UVJLcVRJQVFBQUFBQUFBQUFBQU9wUlpIRkRrTWtVcndPczRWLytGMmd0aTVJNjRiZjk4RTFoQTFIbGFTSmZGVFpRcVZUa01PWUNNd0FBQUFBQUFBQUFBSUFsU1UyaTN3Vjd2ZmNVTnh4QUhpUHlaOU0wMXhiMzRna3ZKWHVucE8rVS9PMXNzUUJ2RkRrQUFBQUFBQUFBQUFBQUM1SUtHeUxtVFg3OEtjQWlGcVB0aCtkTjAveTY5T05BVEcwLzNHbWE1b09pR3hZcUZUbWs4VXIzeDFYMzJac0FBQUJZbWpSbHRHbWFXMnUrN090TjA5d0pkSWpTZE5Uem51VStqNnZ1MndIV0F3QWh0ZjF3ZjROMWJYSnZNSWZQK1pwLzFqZjd1YkFmRjN4ZnpQa2NjTkU5ZnVNK0h3RFdkOGt6d0NiUEJsTzU3UHFlSEkrcjd0anBCV0JMOTNQK0sxYzdpWjRucWJoaEJwTEdpYXp0aCt2NS9kazVVU3hjK283KzFQWkQrSXMzckdQRDVMU2FDR3BYeVB0NWZ2a1o1dnFCWDM5VUF1ajh4NFpKWWt1eXVPdHlmc2IrTWRubngrL1U4LzQzNlRwM2M0WWxMazdiRDl1KzVJLzVueC9PQkY0RldBdXo0UHRJdUlydnN4MmM4OTJ5enZVL3VSZjJSUlZzaDJ2OWwvUlpPT2ZITXgvRk9iT1BjL3BzZXZyUGFyOTNkdmpzbnpyOURtak9KTCtjRmxHNVRoNll2VW00a1B1VXl1Vjk1dXRubmlkTy83bVlmSjRKcnZHbnpsN3IvNzdHNXgveDVDc3MvRnJzdTdaZ0Y4Um9scUxtNzdaQmJ1dGtmbXVhNXVVQnYrZldqcW0zNHpqdWR5a0xKbWs4aEFmanFsT05kWUcySDk0MlRmTTQ1T0xnOElaYzVPQ2hoV0xrNFBwbkJaVi9lenF1dXJkQjFzS0d2Si8vWSsvdjU3WWZYalpOODJLZmY2TkNhWFA4a1Uzd1pjbWIrdThrb20vc3QzSFZQWi83ai82UWZIajJQLys0d1MzWmtGMmQ1SHVYRDZmLzlEeDVHRGtSNEk4bHZuYlkwcy9qcW50WDhzSDdvZEQwN0g4K200eXhxSVFnOW1iSTEvblRhNzFuUWZZbVAzdmV6OTlsZDN5SGhYTnk1dnZnV0RIMDd0cCtlSkltclpmK09tQW1tdlVWNGt5UzdkbHJ1bjNsY253OFV4RHhvZlpydlQyMS8vZzRyanFOclFyUjlzTm56MHovVXZ4KzMxbHRQM3hZTTQ0MysrZDJnN1VkUXRySGVoTHBubkdENC9XYjRvWTlrVFFlaHVLR2M3VDlrQkpLZmcyM01JaEprUVBGYVB2QmpkMS8vVEt1dXRmUkZzWFZ2Si9QdGRjQ0I4ZDhKeW1ZZEVjQXUyNDVFSFdzNkdwNzQ2cHI5L1c3TlppZ0VFTituNzZ6WDdVZk9RbndVNDJ2RGZhc2lIMTBTWThVNENSZjYwK3Y5NTRSdVZCT0hqdjlVV3hkdnk5bkVpTS81NDdBdmlNeTEzalkybTNmSlllVjl5VFR0ZnhSL3FmQ2hlWDYrRU1oZEhHZlRYSENjeDJrYVJPYmFmc2g1WU04YzlqK2JaOHh1Ymx0MEtSeEdGZmRySk03cGlodStQRmNUWnpiTy9zeHVjd0cxNXBYUHgxbWlmVnEreUhkc1A2KzlPTkFUS3BzWVNzcE9lcHIydzlINDZwNzRoQVMxUTlkQ3ZsSHVqZFQzRkFZNytjTHBmZnpQcWMzSENuUTNscEtkdit6N1FlYm5KWEszZi8vWFBweDJOSDdQZi8rZHdvYktFQ1hmNTc5TUdML0pMK0gzOVhVVGVsQUhpM3lWY1B1N3Vka3k3RHljNktrUjZKTHo0WVA4OCt2UDF6dnYrUTlLa1VQQzVJVEhoL2xuNGRMUHg0TGR6UC8vSjMwOHNOM3hGa2ZGMWdFSWY0RzI3bVZDNmZZczd3Ly9DaC9YOW1ENUR6M0xybk9uKzc5dll4NlhSZWJ2VkNZaEdBdTVUeWRJMzJ1SzJxeXRHNUQ0aTQ5aDVmZXdEZzFjRzM3NGQxRXNlbDBUTDVGbUZQbFZnQUFJQUJKUkVGVWFOUzQ0YlhtZytLR2llVE5xYytxY0lsSWgxR1l4T08ySHg3dnUyczJBRnppK2o0UFRpcml5eHYwdWdWdTcxbmVNQkdRcllqQ2hrbDhHVmZkdmhPT2ZYZFJzbXU1d1BEeEQ0SFBWQlQwMnBRSEFLakN6ZHgxNzJ6Uncwa3VlSGlyNEtGOCtkbnhTZjRSTDJZWGx5Vkhwc0tINStPcSsrd0lBK3hIVHJ4N29oa1VFL3B4N3kvOVAvZExUNzRGbU5FbXp6LzdiaGc1aTd4UDFMYjk4SG1Dd3NyVFJvMC9IN2pCMXRyRkRTa3U5ci85cm1VWjJuNUlINGF2TnFyQ0dUYjhZcXRTL29MN3FyQUJKdk1talVqS0kzSUJvQ3JqcXJ1Zkp6aXd2Y2Q1TkNZVk9OUElnTzE5SEZmZExjY1B0cEs2Ky82Um4wSFR6N0ZuVVFDb1NvcmJ2TWdCNXRQci9kdWNKRTl3S2ZHeDdZY1BwK2N1RjhXL0VDOW16MUxSdzZmOHZqT3hHR0JIYWY4MzdlZm5QWmZUYS9vZkNodllzNVNrK2xVc0NXQTl1UUhVeVpyLzg2cGlLT09xUzVOSmZwdm8xLzErNE9mSWRjOU5LdXB2RkRmc0lBVVQ4NDJ0bTlwWVVsSERqZlRCWG5LVmE5NEFINDNFZzcxSlJRN2YybjR3M2d5QXF1U3BBNitjMVoyOHNDbGRQaFB3Sm5HVWk2YUFhZHc4VTNBLzVtUTZ6NlFBVUpmSFB4UTd2TXpQSmh4WXV1LzZvWmpoRHhQa09MQm51UWtqQUJ0bysrRjVqdk9QdVZHbzRrUU9KY1dTOWozeEdLQVc2ejc3M0t1dGFjUzQ2cDQzVGZQelJML3VXVzZXUHFzOEdXdmQrNjN2MDh3Vk4yd2h2Zm5Ualc0S0poYTMrTG9wYWxCMEUxMUs3R2wxUTY3S3Rkd2g1N01BRXdBMUdWZGRTc3oveFVuZGlRS0hnaWxzbU1TclhDd0Y3TS9acnEzZkJFTUJvRW92Y2xmWGRMMS9aeDk2WGo4a1AzNVN6RUJBbmdFQXJwQnp2TTRXS1A1cTM1ZEE3S0VEck9mZEJzZXB1aGo5dU9yUzY3K3h3UVNMeTNSNXIyUE9JcEJOenNuMzZSS0tHemFVYm5qeldGRTN1bkdrRCt4ZFJRM2ZPOFlvdW9ucHRQRG0rME5KK21jdWNuaTY5QU5Ua2RPeGdUcmtBRkNOY2RXOW5yQUR3RktsQW9mblN6OElwVkhZTUlsWHVVZ0ttTSsxUEZJNEJlcVBUWFFBZ0NvOVBGUG84Tm9wM28vY1JPeWI1RWNLNGYwSmNJNmNQL001WDgvL1ZLQklZSXFYQWRZd3Jyb1BPUWR6SFk5cmpKR2szT2h4MWFYcnhzY0pmdDIxUERsMDd3WHorVytzZXkvMi9qUUhYSEhEbXM1MHczZkRHOGRwVWNQMWNkWE5QaW9saXBSNGswZkZmTEtCRmM2bGhUZmpxbnViaXh3ZVRGUlZ4K0U5em9FbDFmVUFWQ0YzQUhqZ2JPN2tWL2NHeGZuczJXb25UeFUyd01IZFBEUFJRUkUrQU5UcDJabnBUWW9hZC9SREF1UWJ6NFFBVUo2Y08vUHV6TVNsem1rRWdLcHNFbitzTmpZeXJycjdxZEhjUkwvdTl4a2FhR3h5THY0K3g0b2JycUFiZmtpS0dySWNvUDdxb1N5a3ArdStSMU5sWWE2cXU3dEJoU0d4dmNtQkpVRWxBSXFYdXlEY2RpWjM4a2FCUXhsU3QvT2NGTXgySHFRaWJzY09Ramt0d3YrY0o5TUFBSFc1ZHFhbzBYUG5oczQwdDVNQUNRQ0ZTdDJBYzE3WDF6enBDZ0NvVUc3TXVHNXVaVmZ6MU12Y2FHNnFKcFdwZ2NhSGlYN1h2NlRDMHcwYVNCeWR6YlZWM0hBQjNmQkRVdFNRbmRsc2ZSeGlRWnlWdm1UYmJSSjYwdnM2VFhsb211YkdST09ET0x3VVZEcVdRQUpBNmNaVmQ1enZVVXliMnA0Q2grQVVOdXpzZGk2R0FtSkt5WHBmRlRrQVFOWGVtTnkwbm5TTXpreHBBQUFLZE9aNi9ydThMZ0JZakUzaTdjOXFqcy9udU94VU9SejM4blRReWVKSGJUKzgzTER3OVBuWi8wTnh3em55UWRVTlB3NUZEVm1lSkdLek5hYVB1YWhoNXd2aXVPcStwZkZCNmZlbFlvbEtqOWVTM013SkpBSktBQlF0MzZPa2g5a3Z6dVRXVXFMSi9VTFhYaldGRFR0SnordzNjaEVVRUo4aUJ3Q28zMk9USE02WHVqWnFIZ1lBWlR0VDFPQjZEZ0FMay9PSFgyM3dxcXR1UUhnbWgyT0tITk5yT1g1MFo5ZGZsSFB3WDJ6d3J6eE5yK1hzZi9IVHJvdW9TVDRwSDFUMGhwRVNKTzR2dmFDaHlaTkVtcVk1OXQ0TUtTWDMzZm54eTNVcXVWamlTYjdJS21vcFd3b29QYzRYWTRVT0FCUnJYSFczOGxqQ2U4N2lWdjVvKytHQkR2ZHhLR3pZeVpmMG5WRHcrbUhKVG9zY2ZodFgzWFB2QkFDb1Vncmd2eFpyKy83Yzl5aDNkUVlBQ3BXYkNTcG9BSUNGRzFmZHk5eFFjTjE4aGJRL2tocXJ2OTdEa1V2N0RXa3QyeFFFZk00L096dVRZM285citWVy90bEVpcGwvMkxXaDNSYUZEVWZuNVZJcWJ2Z25jZnlEU1EyaC9EeXV1bmRMUHdqTlgrL1B6OTZiSWMxYWZKTy93Tjhxd3FxQ2dCSUF4VXRUcHRwK2VMZmhHRUgrb2NBaGlGeW9vN0JoTzJsNm5Va2tVTDdUc2N4M1RHQUJnQ3FsV01LbnRoK09wcGc4WFJveFlBQW9uMGFRQU1DUGNyN0NKZzNzZmswRkVlT3FlelRsd2N3TnNkL2xuNFBMNnpsWURzSVd1YzRmTDlxdit0OTB5eXBUVGpEOWFsTXJqTlRSdkZYWThLOVJldDZiOGFUMzZmVkRKS2FudjVsSENkMXRtbVlvNEZoeHZ0T0EwdWNjWEFHQTR1UUgvOStjdWEzOWtUdEtjQ0Fta096a3ZjSUdxRXA2UnYwemQ5TUJBT3FVSmd0L2EvdGhNWlBYOHJRR01XQUFLRlM2YjBuM0x3b2JBSUR6NU9ueVh6WTRPQS96M3NnMlV4YTRSTXA3MkNMWCtkSkdlb3N0Ympoek1KOEZXQTcvRkRYOFo3ekkwcVNxOC96ZU5FNHZucU1vNzlOYzVKQXV0RGNVT1JRdFhkQy9TaUFCb0ZUanFudmVOTTBySjNCcmZ5d3BzU1FTaFEwN09acTZxd2tReG92Y1ZRY0FxTk5wUWVQejJzOXZhaURXTk0zdkFaWUNBR3doTjZyOU05Ky9BQUNjYTRzQ2g5T0d4QWViYmxDVDFOUTV4NVgrMlBCbFhWclkwQ3l4dUdHSGc4bCtLR3JJVWtXWXF2T3dVdkhBallnam05TW9vVlRra0Q1SEtja293SkxZemd1Vm9RQ1VhbHgxcVVqdnFSTzR0VDhWT014TFljTk9Ya1Y4TGdJbTFlWG5VMU1HQWFCZXYrYmsveXJsT0xBR1lnQlFvSnpUOVUyaldnQmdYYm5BNGYyR0IreGVha0JlOC83SVBwM0p3OTltWXVhcnF3b2JtcVVWTitRM292R2pNU2hxeU01ODBEK3BPZy9ucEdtYTI3bDQ0RnYweGFZa28xems4RnVBNWJDNTA4cFFYVElCS0U2K3IzL2d6RzFOZ2NOTThyNkF3b2J0UE0zRlRFRDlydVVwZzY1TkFGQ3Z4elYyS1d6NzRWZ2NHQURLMVBiRG81elRKVzhHQU5oSW5qci84eFpIN1hFdWN2Z3NKbksxM01EOWVJYzgvTHZyeHBzWFVkeVFib0RURzFDWGpoQ09GRFg4UThGTmFBL0dWWGQ5WEhYSHBTMThYSFhQYzVHRERzcGw2dkpOVS9XandRR295N2pxVWxMRWJhZDFhMy9xa3IxZitmbkx2c0IySG5pT2gwVlNmQWNBZGJ0WFU0RkREcTdmRExBVUFHQkRiVCs4YnBybWQ4Y05BTmpXdU9yZTVaekpZWXRmMGVXWVNNclpleTF1LzQ4VUoycjc0VjNPd2YrMDVkN0wrNXczdm5iVDU2cUxHM0pIL0dNM3dDR2NGalU4V2ZxQmFQNTZiejVSY0JQVzZWU1I0amYwVS9MUm1TS0hrd0JMWWpOcE5QZzNpU1FBbENRWGh0NXc3N0cxWXhzbCs2R3dZU2UzYTNnK0FyYW13QUVBNm5ZdlB5OFZMUmRwS0d3QWdBTGw2L2d6NXc0QW1NSzQ2dTZrQ1FFNzVDdzh5OU90VTZIRGg3WWY3aS90eE9UODV1T2M0L3huMHpRUHQveFY2UnpjeUpNMU52TFRkQzhuRm9rTFlSd3BhUGhIR3N2U05NMEhZL1JDcXZhOW1qdXN2dlgrSzlLMW5FanlmcHVMUEFBY3dyanF2alZOYzEzSHhLMWN5d1VPdC9KeFpBTDJCN2FXTnB1OEY0SGtzMnNUQUZUdGNXcTBrNlpDbC9naTh6UGZ2UUJMQVFBMkpJNEFBT3hEbmhCd2ZZSjh5YlRmOEVmYi96ME00a3ZUTkduaTFMdmMrTEY0dWNGVnlwdDlQbUZlYVlvejM5OWtVc09QcWl0dVNCVWpUZE84Q2JDVXBSdnltMVBRTTA4UlNZRmdEMlVoTGVhOU91RkZtL2s5ekpXUUQzVE5CYUFVNDZxN2xUc3VTVERZakFLSENTbHMyRnJhbUx2alBRaGsxL0krd2gwSEJBQ3E5YXp0aDgrNVdWSXgybjU0NUprUEFNcWtzQUVBMkxjeitaSXBnZjlkMHpUZGpuOHkzYnY4bW43T0ZEdzBPUWYxdytsUHRCaHJ6bCsrbjM4ZTdmRWViTEpjM0dxS0cvTEJQNWFzZTNDS0duNGdvU3VzbmF2RFNuWG1vbjA5WDFCM3ZXZ3puMVFKNm5zV2dHS01xKzYrKytHdFhNdkYwYmNLWEhzWWJUKzhsT1N5bFNHUGF3VTRxMnY3NFhXcEhaMEJnTFc4U2Mvd2hYVWVMS29ZQXdENGk4SUdBR0JPZWEvamUveXo3WWNVNTNnNWNhNTVsMytlNWI5eDBmL3VTODV6YjNMZTVxbmpNLy85VmRMcnVIN21mM1EvLy9QT2dmTG5VeDd1azNIVnZadnlsMVpSM0tBVFl3aUxUUlMvU0FyNG5uNVpFYzdUMHJvUDdVTk9qcitqeUtFNDZUeDliZnZCK3hpQUl1UUNCODlzbTd1WkFqeHBBa1pwQzQ4Z0Z6YThXUHB4Mk1MSDlKa3RidFhBWEZKSDU3ZjIvd0NnYXU5S21kYVU0M0NhM2dGQVlYSkRKSVVOQU1CQmpLc3U3U2VrbjMwVk9sem01cG43b0pJYlJLWWlqZWRURnpTYzliOTkvZUk1dFAzd3BPMkhVWkxNUWFXaWhydmpxcnN1c1BtWE0rOUxoUTN4dkJwWFhTc2gvTjlTa1VQdXpIb2pUMStoREttTDFuRXVUZ0dBME1aVjl5VGRpemxMRzd1Wk8xaXhBWVVOV3p0UzJBQ3NZVzhiMVFCQUNGME83SWVXOThYRjRRQ2dNTGtSa2tuUEFFQUlxZEFoNXo2M1RkUGNUdkhTbkJQTnY1M2tmSThiT2YvMjFqNExHNXBTSnplMC9aQTZWMzdXamVQZ2RBMC9vKzJITzduN3ZmZGxQTy9IVmZkbzZRZmhLaVk1Rk9sbW51S1FDbmRlTHYxZ0FCQmJ1bGJsUlAwM1R0VkdUSERZZ01LR3JibWZCTmFWcmt2UGMyY2pBS0JPdjU1Mk1Bek04d3Y4NVl2akFKUWlOUXJWdkJZQWlHcGNkU21YNGNuWjViWDk4Q2ovZHc4WGRPSk9jcU9yTk1uN3c2RVdVVnh4UTY3aWRiTjdXTDhJWVA1REluaG9hUXJCL1p5MHo1b1VPUlRwUmU2bWRjdjdIWURJVW5GMExuRDR3NG5hU0Vvay9hQ3IvdVZ5Y0V4aHcrWTBMZ0EyVlVMQ0l3Q3dnN1lmVXVmQ3lCTWNURzJBdnh3czBRUmdFN21KcmNaSEFFQlI4blNDLzB3b2FQc2h4ZTFUNGNPZGdxZFNmY3pQbEI4T1djUndrV0tLRzNJRnpPOEJsckprUitPcWU3TDBnM0NXWXB1d1RuSlJ3K2VsSDRoZEtISW96alZUSEFBb1FYb3didnNoalhUODB3bmJ5RDBGRGhmTGhRMkNZNXQ3RUhHekNvZ3ZUY3J4N0FrQVZYdVdyL2ZobXVua21ESFFORi9FN29HQzJJT0U4OWxmQXloUWpxOWVlbitUaXp0djVRS0k2L2svMzhyLzMzZHlydDhVVXE3c2FaN3M4WTgvZVNKRmNjSVhOK1NrMm5UZ2J3Wll6bExwZnY4RGlUT2g2VG82TVVVT3hYbVJ2NlB1K040R0lLcjBBTjMydzQzOFlEM1ZRL3NTS0hBNGgrZXpyZDFWRUE3czRMbmdLMVRqeERRVzRBSlJyL2VLRzFpeUwwM1RwRGpvYXpFZ1dMeVBwVFF0U1JPaDVIekJ2NlRyK1V1NVRRQjF5MFVGeDRvOHR4TzZ1Q0hmNEJvcmVqaTYzLytnN1ljNytjdEdBbFk4Sm92c21TS0hvdHpNVXh3VSt3QVFWcnEzeU4wS0ZMTnZKaFU0dkhYdit4ZUZEVnM1eVlXd1JYYnBZRFBqcW10clBXUjVqeVk5bjk3UEhXNXVlVTZkMWJYMEhleVpFNHFXa2ltZTU5SHFsS3ZhS2E1NUgvck9tYTUyOXlmdWFzZlZGRGNzUTJweTl5N0hmVDVMbUFjSTcyTytqeThpanlmdjM4ajdPcHpUVHM0ZlRyczRtK1FMQUpRZ1pIR0RCUElRZmhiVStJY0pJcUVONDZxN3MvU0RNQ2RGRGtWNTAvYkRjNThSQUtMSzl4VzMybjc0N0o1aUk0L2JmbWlXWHVEUTlzTWpoUTBiUzhHc1c1SlZxTUdaSVA2RkFkbGNSUGNvSitiWjA1bmVrOXcxbHZpcVRYNEc2cFh2V2E5TXZNclBCYWMvNG9yVFNzV01qeUxGQy9QOW5mTzh2WSs1UzdDa1JpakRBNTlYS21EZllCNUhxVmhSbmhjQVVJdHd4UTJwQTJWSzFBaXdsS1g2YlZ4MXo1ZCtFTTVxK3lGdEdOeUxzeUl5U1RrSHBzaWhHRjNiRDZNTlVBQWlTNFY0N3JzM3R1Z0NoN1lmVXRmVzN3TXNwU1JmeGxWM2Era0hnV1hKRTBwZTU1L3Zja0pjK3I4ZmVqdnNMRTBUdW1VU0RBQ0hsQk80L3BYRWxTZTh2VlRjT0lrblB4N2ZBL05NczduMzZUeUtwd0V3dDN4UEpvZGdlbDl5c2FMQ0VRQ2dXbUdLRy9LMGhrOEJsckpVdXQvL29PMkgxOGJqaFpTS0d1NlhNbVp4Q1g0b2NqRGhKSzQvMm40NFducUhad0RpR2xmZGZjWHVHMXRrZ1VNdWJQZ2p3RkpLOGpGOXhwWitFS0Q1cCtBaGRYWStuZFQ1MnJWbko2Zkpvd0FRUms3MCtwN3NsZU9QNyt4YmJ5MWFRYWpubXZWcGFBZkFvZGt2bU01dnVhQkJzU0lBc0FqL2kvQWkyMzU0cDdEaFlGS2krRzJGRGY5SUkzWnpsM09GRGZFOEhWZmRkWVVOTWFVSDZkd0o5bTcrYmlHZWxBRDVMU2Z3QUVBNE9Vbi9sVE96a1hSOVgweVFTR0hEVm80VU5zRDU4bk5zNm1MYnBqMEhoMmtydmw4QUNDM0ZFOUsrZGI3ZUh6bGJtOHZQWVpRamRYTytvYkFCZ0VOcSsrRzU0dEtkRFRtZnEwM1hkWVVOQU1DU0hMUzRJWFZMeVVua3hzQWZ4bW1pdU5IeC83d2YwOFBBN3dHV3c3OGQ1UWMyWS9VS2tJTkYxeFU1aEhXdGFacXZxWkJyNlFjQ2dKakdWZmRTZ3VuR1hpeWh3RUZodzFaZW1kd0Y2MGw3RGpucFVaSGRadTZWdEZnQWxpM2ZHOS9JaVdLc1QzRkRPVDdtWWg3Smp3QWNtaUs3N1ozbXg5eVJ6d1VBTE5YQmlodmFmbmhyV3NQQlNCUS9JM1V3Yi92aGMzNC9YZ3V6TUpvY1lMZ2hHYWRNWjRvY0pDZkc5SHVlbkFRQTRlUm5sUWZPekVhcUxuQm8rK0dXd29hTi9aS0xoWUFONU0vTmJjWDY2OVBOR1lDUzVNbE5keFEwYmlUU3RkNTl4OFZPVE8wRElJSzJINTZZMnJBVitURUFBTm5zeFEwcElTRjN4My9zSk16dWl4dmhmOHRGTmwrYnB1a2lyWXZ2Q1FSM2N5VzY3aktGMC8weXRJZnBtcHlLdkpaK0lBQ0laMXgxSC9Ja0tOYjNJZ2VPcXBJTEcvNzBQdGpJeitPcWUxM1FlaUdVMUJVdkYrdC9jV2JXSW9rT2dPS1lHcmdSazVySzRCa1FnQ2prSkczdWdmd1lBSUIvekZyYzBQYkQ4NXlRb0R2Ky9KNGFRL3FQbFBEVDlzT295Q2FrOU5CMlBYWDlYL3FCcUUwS0Z1VWloNk9sSDR0ZzBqWDVxMDZiQUVTVTd3bDF6OTdNbTVvS0hCUTJiQ1U5VTVuUUJkTzQ0eHEwbGpzRnJCRUEvaU5QRFZUZ3NBYjd4MFh3SEFqQXdiWDljRWRoNUVaT205UitLR2pOQUFCN04xdHhROXNQS1NubFY2ZDBkdTlUTW5IZW9GMjg5Q0NWSjRlOFdmcXhDT2lYL0Y3MTBGYTVQRDNtUmg2clNCeC90UDN3MHZrQUlKclVQYnRwbWx1U1N6ZFNSWUdEd29hdDNQWk1CZFBKVFVJazhsM05ORUFBaXBYalp4cnlYTzFXOUFVdW5hWmhBQVJoYXNQNlBtcFNDd0J3dnIwWE4rUms4dFFodjNNT1pwVVNmKzZPcSs3UmdsN3poZHArdUo0TGJENlpIQkxPVVM1cU1DNTNRZElEZWhxcm1MNm5KQ3FHOHFMdEI4bHdBSVNUN3gydTV5NUdyS2ZvQW9mMEROYzBqY1NNOVoza0RsL0hwU3dZU3BHVHhINXp3aTZsSXlNQXBYdnVERjVKY1FNQXNJNW5qdEphVXA2TWhob0FBQmZZYTNGRDdnRDl5Y0dmM2F1VStLTkR4MS9hZmtoaldMOHFzQWxueU1rM0t2Y1hMSDFQNVVSRm83L2p1SmNtM09TRVFnQUlKWFV4U3QyTW5KVzFwUUtINGdJaytUN2tXR0g2MnI3a1BRQWR2bUIvVExrRGdJcmxlK2xYenZHbEpOOEJBSmNxY1MvNlFEN0trd0VBdU56ZWlodHk1K2NYanYrc3Z1UmtjUUhYTEU4TmVSaGlNWnc2blNweVIvSU5wOUxvN3pUQncvanZNRklpNGRlMkgzVGpBaUNjM00zSVBjUDYvaWdwcUtTd1lXTWZjOUVQc0VkNS8rSzlZM3d4Q1F3QVZPQ3Rrd2dBc0JNSisxYzdNYkVCQU9CcWt4YzNwRVNFMVBIWk9QTFpQVTBKRFpMRkNlNnBxU0pjSm5jb3VKRW5lM0I0ZjBwUUFTQ2lmTStncStiNmlpaHdVTml3c2ZjQ1lUQXJDWThBVUxGeDFSMmJGSGlwS0pOK1B3UllRMGoyOGdFSTRKR1RjQ1hYYXdDQU5VeGEzSkEzVGI1S1JKalZrS2MxQ0xBUzJXK3BLNy8zNmZuYWZuamQ5b09KSzFrcTBrcVRQZEtFanhBTElpVkQ2cklCUURoNVl0MHZ6c3phMGpYOVR2QTFLbXhZWDNyR0VpeUVHWTJyN3AzamZTbFRaQUNvZ2NUNWkzVlJGOGJmSkVzQ2NEQTVYOHplN3VWKzB3Z1VBR0E5a3hVM3RQM3dQQ1ZMT082elNsM3c3NWpXUUdBZmMxSERjeWZwdjFMQ2VOc1BZOU0wejZLdExZTDBZSi9lUCtraGYrbkhJb0EzQ25BQWlHaGNkYSticHZuWnlWbmJwN1lmUWlhZnR2MmdzR0Y5cnp4andjRjhjZWd2cExnQmdCb29icUJrTC9KRVJBQTRCRVYyVjdDbkN3Q3d2a21LRzlwK1NOM1lmM1hjWi9QRnRBYUNPNTBvNGdIMkhLbGpidHNQcVNqcFRiakZCWlFmOG05SUlqbTRGQmg1dmZCakFFQkF1WlAyQStkbWJYOUdLM0RJaFEwM0F5eWxCRS96MUJMZ01JNGRkd0NBZzlMdzdYS21qUUZ3S0hKRExtY0tOUURBQm5ZdWJtajdJWFV4ZWV5Z3p5WjFhTHhsV2dOQm5UUk5jOWRFa2ZPbGpqbHRQNlF4ZzU5MHBkMU1laitsNzc2VXpGWFN1aXYwTEJjMEFrQW80NnBMejZXM25aVzFoU2x3VU5pd2tRZWFITURCS1c0QWdJcmxaMHRpKyt6OFhPcGVqdDBEd096WElFZjhZdjl2Ny82dW84YXlQUUFmOWVwM1RBU1lDR1Fpd0VRQS9hd0htd2phSFFFbWdqWVJZRC9vdVNFQzdBaXdJbWdUQVRnQ3pUcmR1M29NbFArVVhYK09wTzlieSt2ZU8zZG1XblZVcWxJZDdkL2VNWVVhQUlBN2VsQzRJVFpIM0tDdVJ5NGFmNnBESXdYTEhVUzMrcWEyc1R4SEZJUi9UU25WeFIzY2dPUmlycjZwcTVnT3dtYnNDVGdBVUtLK3FTOWkydE9sRTNRbjV6bDh1OGtERUd4WXlGT0ZWbEFFNFFZQWdNMXlQM2E3SEhENFZ0clVSZ0RHcTJvN1V4dHU5cTdrZ3dNQUtORzl3dzFSaENEWXNCNGZvMmpjaGgwbE9zbkY1anFJemxlMTNXSFZkcjBKTjh1VnA0UGt6clZqZWswRGt3TU93bllBRkNlbVBlV0MvUy9PenEzeUpMR0xUUVVjb2xtQ1lNUHRjbGpuc2YwQUFBQ0EveG9iY0x0SE1iWFJzenNBMWtHNDRXYStqd0VBRm5TdmNJUHVpbXYxVzkvVXJ5YjBlaG1PTG9wczlwMnpuMVZ0dHgraGhqZWxIZHRZNU02MU1jWGhiT3Byc1NGdkJCd0FLRlhmMU52dUVlNWtJd0VIVXlEdkxJZDB0bk5vWnlESEN3QUFzQTUrNzk5ZGJsVFU1OS9obTU3ZUNNQ29tUlowdmE1djZ2TlNEdzRBb0ZRTGh4c0VHOVptMXAzeHcwUmVMOE14ZTIvdUtMTDVXZFYyTzNuY2IwcnBmV25ITmxaOVUrK2E0ckF4T2VBZzRBUkFrZUllNGFPemM2dTFCaHdFRys0c1AvUVNiQUFBQVBqWnFUVlpXUDRkL2pVL3Y2cmE3bUJneHc1QStZUWJycWZtQ3dEZ0hoWUtOMFFSZ21ERDZwMzFUYjJsaUlFQ1BmUGVuQzhYZzFWdGx4UDNuNk5BakRXNk1zV2hzKzVyOXo2SGVpYjJtZ0VZaUppQzk4NzV1bFcrZjExNTl5akJoanZMZXdMdXI2Qk11dDBDQUd5ZWNNUDk1ZC8vZjhZMGgveDNYTFdkZ2xRQUhzcWU3L1hjdHdBQTNNT2R3dzE1YzhNTjZWcThqUTZqVUpMWHVYRGN1THo1NHZQeGEwcXBMdkg0cGlTS3dONU9mUjAyd0VockFJclZOL1dCKzRNN2VSS1RHbGZDbnNLZG5kZ1RnS0lKSGwzUG5oRUFnMWUxblh2eEFjak5qcWErQmt1MGwxTDYrMHJZNFVQVmRxOUc4K29BV0RsTjhHN212Z1VBNEg1K3ZjdC9xbXE3dzlqY1lMVmV1TEdsTUxtd1p0OUptUzlHOS81WjRyRk5XZC9VaDFFOGQyNkt4dG84aXBHYUh2NEJVS1M0UDhpRisrK2RvUnY5RTNEb20zcXBYUnZqM3N5ZXd1MXlzNFBEMGc4U0prNm8rM3FtZkFMQXVKVTJOZmxNZ0g0bFh1YS9xdjN1ZE9mLzR5Zy9BekRaSFlBNTdKVmM3NnpVQXdNQUtOMnRreHVxdHN1RnpXK2N5Wlc2VENrOUZXeWdJSG1qOHJGZ3czeTVhMDN1WUNQWVVLNitxWE5SM2xhQkQxekc3SGtFZmdDZ1NIMVQ1d0w3Rjg3T3JYTEFZV25kdHdVYjd1eTFZQU1NZ29tTkFEQnVtcmRjcjdTaTlxTUNqbUVxNm1nVzhmWEtoSWR2VmRzZDZkWU5nUHVuRzZrQkF3QzRweHZERFZYYmJldHN1WEpmVWtyYnVSQjM1SytUWWNoQm0yZDlVKy9vdnZLenZFbWJOMnhUU24rVmRtek1sOS9MdVFPdTVWbWJQK1BlQVFDS0ZJSHlwODdPcmVxcTdSNzg0RVd3NGM1ZVJQZ0dLRmpWZGg3VzMwRFRGZ0JHd3ZmOVFQUk4vV0hxYTdCaGVacno3eW1sejFjQ0QvbnZRelJPQkFDRUd3QUE3dTNYVy82RGJyUldxNHZDV3lqQmJ6YUQ1NnZhYmlzK0QzVm9IS0RjQVRlNkR3dWxyTWV4aDRBQWxDd0h5NnUyZTV4U3VvaUg4Y3lYcHpLZDlrMTlyKzkxd1lZN3krSHlwVTNLQUZaS2tSWUFqRmc4QjNqdUhGK3J4R2ZHdWJIUm13S09nLzk3bWYrcXRydmFQUEZMUERjNDF1d1BZSlE4RndZQVlPbXVuZHlRUjBtbWxKNVk4cFU1RTJ5Z0VHLzdwcTRFRythTG9xeXZnZzNERnUvdloxTmZoelhKaFpDdkp2RktBUmlzUEtXc2IrcXRlTURPOVo3Zlo0SkQxWGFIZ2cyM3lsUHpuZ28yd0RCRXNhUFB0ZXVkbFhwZ0FMQ0FBNHQxb3hLTDBvOEtPQVp1OXlSQ0tILy9NT1hoMkxNRUFNYk1sRXNBZ1B1Yk83bWhhcnVkR0NYSmFwemR0L3NsTE5GSjM5UzZEbDRqeHVhK3Y5ZC9tQ0xsd3JHcTdaNm1sTTUxYVY2NVhOQW9NRVVwY21GdTcyd0E4L1JOdlIwVG5nUlpyNWMvUjQvdit0c2hnZzA2Wjk0c0J4dTJjOGltNUlNRXZuTm9PVzZrQXk4QVkrQjN6TTJLKzc3UHY2bXF0bnZubWZaZzVmRHdYdFYyVjQrL3V6TGx3VzltZ0dFdytXbytqWlVBQUI1Z2JyZ2hOZzFZRGNFR05pMXZETzdhRkp5dmFydDhmWDRxOGRoNHVEenl1R3E3N1hnUUkrQ3dPblcrbG5TakFHQUk4a1M5bUU3Z0ljejEvaWsydUMzZ0lOaHdKMTl5cUdZQXh3a0VUV0R1UkxpaGZHK3F0dk1kUFEwZmN5RExkQ2hZVEV4dzVnYWw3dlgyVFgwUXphcnM5NDlEYmo3eFovNjdFbnE0akdaS1I3N2ZtS0JQUHdTQUdLZlo1MXkrai9mN2VqeWNTd0NBQi9qbHgvOW9qSC9VdFhJMXZnZzJzRUg1Ui9HelhMd2wyUEN6WFBCZXRkMDN3WWJ4aS9mL2Rsd1RySTdKTUFBTVJ2eE9PM0hHYnJSM1U4R1BZTU9kbkFrMndMQlViYmVWVWhMYXZwMDFnbks4VENsOXp2dWM4UmtHM0NJSzQvZXMwNDNPQ2o2MjdLQ0FZMkIxSHNVMW1yL2YraXQvcC9uNjlYMEhqTURzYys3dmFNTERPS2pKQVFCNGdKL0NEYm5yZ1FWZGlWeEV1elBDMThVd3ZPNmJla3RIazUvbFRjK3E3Zks2L0syenozUkV3TUZuOG1xOUd2T0xBMkI4WWlyQlc2ZjJSbk1ERGxFTUpOaHdzeFBORG1CWW9raksxTDg3TUxVUGl2UklzUy9jTG43THZMZFV0eXI2dTc1djZtTU5DeWJwZVZ5L1g2OEVIdkwwN3FPWTRBMHdSTS96ZFB5aEhQZVFqblVEMU9ZQUFEekFkK0dHbU5yd3hJS3VoRzc1YkVJdW9LbGlZNWNmUkdIV1Y5TnFwaW5HZXI2WStqcXMwS09xN1FSSUFCaVV2cW56OUlIWHp0cU45bUpLd3o4VUE5M0oyd2pQQUFNUkQrZS9DamJjU2VtZG5BRmdycXJ0UHZndGMyZkZCeG5qTjllWEFnNkZ6Y3AxRHI5SDkvT3JVeDQrUkIwRXdCQUlEQUFBTUhtLy9yQUFPdm1zeHVzb29vVjE2ZnFtVmxSOERRVll6T1R1a2xYYi9aRlMrdE9pcklSeDBBQU1UZzRHNTA1L0thVlB6dDYxM2xSdGw2S2p1ZnZxbS8zUk43VUptVEFRTWEzaFZCT0VoV2lvQWNDZ1JJalI3NzBGREdoSzAyNU02WVlmdmN4L3NaY3hrOE13K2ZmNkI4L3hBVmdCelc4QkFCN2d2M0JEZEZkK2JqR1g3cU91K2F6UkYxTkNyaGVmYzZjNkwzSlZMamFMd0l2aUZRRGdIeEdBZktvbzRrWnZDajYyVXZ6V04vV0hxUzhDRElGUXcvM1o5d1JnS0RROXVyZVBRem5RWEtCZXRkMEw0Ulh1NkVrMHZ2cnpTdWpoTW9jZGNvQjNRS0VlQU1wMDdyd0FBTnpmMWNrTlJqRUZhaytZQUFBZ0FFbEVRVlN1eHY0WVh4VEZ5WnR0dTMxVCs0RTBSeFFwWEFnMWNJUDhXZjNaQWdFQU0xRVU4ZGg5SlBmMFFpRUVsQzMyQ25LbjFqMm42dDRHVSt3SXdEVEZsSWJqS0dMbWZnWTFpUzZhRlFnNGNGK1A0dmZCM2c5VEhzNGk4Q0RZQy9DOVhlc0JBTUFxWEEwM0tNSmZ2cmM2NkxNR3IyMm16YWZ6SW5lVmcwRlYyNTJaWUFRQVhKVi96MVZ0dHkzZ3dJS2U1bkNNUllPeVJISGp2akREVWcycTJCR0FjWXZuQWJtUjI0Rm5Ba3Z6WllpaDdRZzRQTlBRaUNYS3o0NmVWMjEzZGZyTHh3ZzhtTmdJQUFBQVMvWlB1S0ZxdXgxZFM1YXZiK3JEc2IwbWluTFNON1ZRMGpXcXRqdFdzTUNDem9VYkFJQWZSV0I5cTJxN0M3K2J1VVdlcUxldHlRRnNSb1FYY2lCdEp6b0hLbXBjcmM2RUdnRFdLY0lMcysvNW5manpHMjIxQmh0a2pJWkdwakd5U2kvejM1VUpENWR4elJ6WkZ3QUFBSUNIbVUxdWVHVWRsKzdkeUY0UDVjaTdaTHMyeHVhcjJpNEhQdDdmNXovTDVMbW1BSUJyOVUyOVhiWGRxVEFrMThnZFRiY3REcVdKejYwaDJWRjhOaGlhdWdDVVlUOENma094SllBNEhIMVREM3BLMDVWbUJYN0xzdzc1ZDh5Yi9IY2w4SENTNzV0TmR3UUFBSURGek1JTk85WnQ2WXlnWk5seXg0OGRHMkR6eFFTYVUwVVFQTUNRSGdJT2dpNmVBSXhOMzlTN0pvUXh4MWwrYjFnWUNxV0lpMVhJVXh2c2ZRS1U0WW5wQmF6SUgyTloyUGd0cnpFV201RDNqL1lpN0dDeUF3QUFBTnpSTC9GdjI3Smd5Nldna3lWNzBUZjFsbUREei9JbzZxcnQ4cnA4Rm16Z2dRVDlBSUJiOVUyZEN5TGVXaW5DUjhFR1lJTDJuWFFBR0xVdlE1L2E4S08rcVhPamdzY3hIUjAyWVRiWjRXdlZkbjJlS0JLTjJ3QVlKMEUyQUlBSG1JVWJkSEZiTGh0akxNdnJ2cWtyWVpuNXFyWTd6NXVBT2xQeFVERzZYVGhtdWM3RzlHSUE0S3ErcVEvenZicEZtYngzZlZPL212b2lBSk9UUC92T25YWUFHTFZSQmhsenQveStxWE14K2JQb29nK2JsT3N6UGtmUTRTS2VVd0V3RXZaT0FBQWU1cGVxN2JhdDRkSko0UEpRSnhGcU9MYVNQNnZhN2podjlxV1U2dEtPamNFNmRPcVdUaWdMZ0ZHTGUvVVh6dkprdmUyYittRHFpd0JNemhlZmZRQXdldS9HM25BckZ4dm1hZW1hRmxDUTNNVHRVd1FkemsxMEFBQUFZT3J5NUFiaGh1VXpDWVA3eWxNL0h2ZE5iYnovSEZYYjdVZW9ZYSs0ZzJPd3FyWjc1WE43SllRYkFCaTlLUGg0NWt4UHp1dVkzZ0V3TmJySkFzQzRkVk1LTXVhbUJiblJtSkFEaGFtdlRIUTRjbklBQUFDWW9sK2M5ZFV3RVlNRjVmRzN6L0k0M0R3VzErSjlMM2NvcWRvdXI4djdrbzZMMFRBaFpRWEczdDBMQUdaaXZQVFR1S2RuL0Y2WXNBZE0xRzk5VTE4NCtRQXdXcGRURFRKZUNUbms1Z1ZmQ2pna21Qbjl5alNITGFzQ0FBREFWQWczckk3Tys5eFY3dnE1RlVWUlhKRTM2dktHWGU1UWtsSjZaRzFZdHFydFRyMjNWdUpzaEs4SkFLNFZ4WjdiQWc2ajkxU0FFNWlvdkhmMXdja0hnRkdiZlBPdC9KeXViK3J0Q0RxOExlQ1FZQ1pQYy9ncTVBQXdIRlhibVg0SkFQQUF2eGdudmpKdlJ2cTZXSjUzZVlOVTE4LzVvdWo4YTJ6WXdTcmVZL25hZTI1bFYwTFJId0NUazR0QWNtaFpsOGRSeXFHVnh6cVdBeFAxMnQ0VkFJemVVNzkzdnRjMzlXR0VIQjZubEQ2V2RHeE1tcEFEQUFBQWs1REREVGFyVmlRS1orRkhIeVBVY0dCbGZsYTEzVkVlc2Fyb25GV3EydTR3cGJSbmtWZm1hS1N2Q3dCdWxiczhtbUkwS2w5aTB0NmtPNWdDa3lYWUFBRGpkaW5ZY0xOb1pQRHFTdERCUkFkS01BczV1RmNIQUFCZ2xJUWJWbXV2YXJ2OU1iOUFGdEpGdDg5WGx1MW4rVnFKVU1QdnBSMGI0eExCQnROMVZ1ZWo0ajhBcHE1djZqd2g4V1RxNnpBQ1hZUlZBS2JvbVdBREFJemFMTWp0T2ZFZFJkRGhNQnFZNWJEREM4ME4yTEJjaTlCWGJiZnJSQUFBRDlFMzlha0ZoSEZ4WFROMHYzZ1RyOXo3cXUxMlJ2NGF1ZGxsUEJEZVVmRDdzM3g5VkcyWDErVjlhY2ZHK0FnMnJJV3BEUUR3NzRiUnZvNk9nM2FXZjhOTmZSR0FTZm9TelRuT25YNEFHSzEzZ3R3UGw1K3g1K1lHUDRRZFBnNzlkVEZJbjZxMisrRFVBUUFBTUJhL3h1dklYU1dlTzZzcjg3bHFPMk5kcDhuNC9tdFViYmVWVWpxTjBhbXdqdmRjdmhiM3JQUktuUWxOQXNELzVZNk9FZVQ5MDdJTXlrbUVVd0NtNW0zKzduTFdBV0RVbmdreHJrYnNqZiszUHg3UHdmSTA5d1BQd2xpRGw3RUh0YTNaSGdEQTBxaW5IUWJuQ1Vab0ZtNDRkWkd2M0huVmRqWVRwa014ekEyaWU4akxZZytRMGFuYTd0ekRnN1ZRQkFNQVAraWIrcWhxdXh4MC84dmFESUxDWG1DS3VwVFNybjFMQUJnMXo2M1dMTzZ0anVQdlAxWGI1Y0REdnVka3JNQ2psTkpYVFJlQk5jcTFabThzT0FBQXl6WUxOeHk1NFZ5NXZKbHdVYlhkanMyRVVldjZwdDZaK2lKY3AycTdRNTgxckZOMFJycUl6MkJXNjZPcERRQXdYOS9VSDZxMmU1RlMrbVNKaW1ieUhqQTFseEZxMEwwWkFNWkxpTEV3ZVk4Z3BmVGg2bEhsQm5rUmVNaC9UNmErUmp6WTMza2Z5ak1iZ0kzYXZUclJDUUNBeGZ3VGJzZ2JXbFhidlVzcC9XNzlWdXBSYkNib2xqQStsOFo4WHE5cXU3d1orNzdVNDJPY292dVJEc25ybytzWEFOd2dQMURPdndYemIwTHJWQ1FQL1lHcEVlZ0NnSEVUYWhpUWVHNTgrT04wNUhqT2tmLzJwcjVHTE95VGdBTUFBQUJEOWN1VjR6NTBGdGNtQnh4MkovSmF4eTZIR3A3MVRiMWxnL2huZVZKSjFYYmZCQnRZdDZydGpnUWIxdW9QbjRFQWNMc29WbmdjdnlNb3gxTVArNEdKbU8xalZZSU5BREJhT2RUd09FOFp0MmM3ZkhuS1E5L1UrM0gvOXM5Zi9nMmI5K1JUU2wrbXZqN2M2bE5NQlFFQXVJc3pxL1F6Tlo1bGMzNnU1WHBtOEg2ZHZZQ1kzcEEzUXY1MFd0Y2lieWE4N1p0YXFHUzRkTGk3UnRWMld6RmlyeTd5QUJtdGVPOWR4S1FjMXVPc2Irb2phdzBBZHhQRkpWdFYyK1Y3bGllV2JhTk00QU9tNGlTbGRPRHpEZ0JHelRPcmlZakdDVWZ4OXg5VEhyaEdmbDRyNEFERE1wamY3akd0dUlBaktaSmlXd0NBQjdnNnVTRkZjYUk3ei9WNVU3V2Q3cEREYzZMRDNmV3F0c3ZyOGxXd2dYV3IydTRnM251Q0RldjFha292RmdDV3BXL3FiVjB6Tmtxd0FSaTc3c3FVaG4yZmR6QkpINXgyR0wxM01hWEJNeXRNZWVBNlQrTFpMVEFjcmxtQXN1dzRIMFVUSm9PUituWE95OHBGaW44NzRXdnp2R3E3YjRvcUJpRS9GTjUxbnVhTHduS1RYOWlJcXUzT0JXbzI0b1hQUkFDNHY3NnBkNnUyeTBWbkx5M2pXbjJKY0FuQTJPVFEzSDUwOHdXbXl6NDJqRmNPYVIrWkNzOWRtZkpBMk12N1R6a0FZMEdnYVBrMy9hc0Izc2RmYWo0NGwySm9oc2crd254YkpSNFUzTUl6QWdidnAzQkQzdVNvMnU1MVN1bTkwN3MyK1ViL2ExNTNuVldLZEJrUGc4Nm52aER6eEFib1grVWRHVlBnL2JkUmYrUlJveE4rL1FDd0ZIMVR2NnJhTGhjWi9HNUYxK0lzaDBvbThEcUJhY2dkZUEvdEozSUhieFhDQWd6V1NYemZLMHhnYWFMSVBmL3R6LzQ3cTdiYmpzQkRibWIyeEdxUHpySEN2RUY2NFZrY0E1RHJhSjQ3VVQ4UitHQ0l6alhqbXNzenBiSTVQL1BaUTJEdzVrMXV5QnNheDFYYjdlcldzSGJ2cTdiYlYyaFJsTjkwc1ppdmFydWNORC8xbzR4TnFOcHVLOTUvcGpWc3hrbmYxRWNsSGhqTW9ZaDFnT0szeUtlcHJ3UFQwVGYxUVV6MGUrTzByMVMraDluZjREOGY0S0UrUnJkbXhTMEFNRTVmb2dENXlQUVYxczJVaDlGN2xLZndlN1lEc0Q3NVdaYzlIQUNBKzVrYmJrai9ibURzUjRjR0NkdjFlbDYxWFo5U2VtWlN3RWI5WVhOblBrWGxiRm9PZ1prdXRGRm5pZ0lCWVBseU4rV3E3UzdjNTZ5TWp0WEFrRnhHSjkxakQ4RUJZTFEreHZmOUIwRUdTbWJLdzZnYy9oaGVBVmlDVTNWbDF6SXhoNkU1MVlSckxwOXhaWE4rNXZOY2djRzdOdHlRL3QyczJJM2lDcHNTNi9lNWFqdGRKZGZQbXQrZ2FydGpuVm5ZbEFqV1hKZ1dzbEU2NEFQQUNzVVV4UXVUUzVidWRWN2JrYjBtWUJ6T29sRHNWSk1UQUJpbExnb0tQZ2dzTWlhbVBBeFdudDZ3YjQ4RVlHMTJZdDhIR0RpVFdNcVV6OHZVMXdERzdNWndROWhSVExveGU3RUp0T3NCNThwMXNjNjY0OHloVXo2YkpsaFRCTUVHQUZpRHZEbGF0ZDNUbE5MZjFuc3BYdGh3QmpZZ1QxNDRqMkxHaXdndlhEZ1JBREI2K1I1ZzI3TW1wc3FVaDBISTUwYTRBVmdtbmQ2djU5azZneExQcDV5MCtYWjB3aS9TenRRWDREcWVqVElHdDRZYjhnWmNiRHA4ZGNZMzRwRXBEaXQxS1R4eXZVZzQ2aHJMeG5nUEZrT3dBUURXS0JmQVZtMzNXS09CQnhOc0FCNHFQODM3RnAvSEYvRy81ejJrYi9hU0FJQTU4dSszcjFYYitTMEN3WlNINGp6UHRSL0MxOEFTK1R5NTN2TlNEd3hZbUNMNk1qa3ZNR0ozbWR3d0N6am9ITGxaZVlwRDN0eDU1dUhwMHJ3MmRuTytDRFNkSzZSaVU2cTIyNHJVYyswa2JKeGdBd0Jzd0pWR0ErYzZHOTdMVXcvcTRSOHZKclFNRjY1N0FDYm9aTVVkdUhkMTRyMlhUMVhidmUyYituQ0F4dzVyY2NPVWg0UDQxenlqWEoyOHZqNmZnS1dJUmowVzh4cTVtYVBRS3dOekpwZ3psNXFaTWprdjg1MlZlRkN3cUR1Rkc5TC9iMGlmS25qZXVEekZvZXViV3ZMcy90NzFUWDB3MUlOZkpRWGxsS0JxdTJPZGVvcnhzVy9xVjFOZkJBRFlsQnh3U0NsdFYyMTM3aDc5enZKMHZ1MVlPNWc4RDA4QllQUXVWdng5ZjFxMVhTNCsvdXl0dExBM1VjeW0yQUx1S01MS0IvSDNqNnJ0Wm9YNEdqOHNqODhsWU5rVVExOXZOMnB3Z0dGN1VyWGRqb2JVNWNqbncyK0VhM2xHeWlqOHNzaUxpQTJGN1NnV1lIUHFxdTM2Mk16aDduTDM4VXF3WWI0b0tQK3FhSXBOeVo5cCtiTk5zS0VZN3dRYkFLQU1FVzdYWmVOMlgvcW0zaEpzQUFDQTVZbmlqY2Y1ZnR1eUx1eDUxWGJmb3JFVWNBOTVDbi9mMU52eGpMZEtLZjJoVnVIQkZDQUR5NmJZOTNxZXR6TTB3ampYY3oyWHhmbTRudTlsUm1HaGNFTzYwam5TSm1ZUjNzZW1xQ2tPTjhzejhCN3Jqak9mZ25JMkxYK0c1Yyt5L0pubVpCVGp0U0FZQUpRbGZzK2NPQzNYeW1IMjdVS1BEUUFBQmkwL0c0ejdiYjlKRnBlbjRYL05VeHlHZHVCUW9yNnBqNkt4UVE0NnZCWjB1QitmU2NDU1hWalFhOVUrY3hrWTRZYnJLYVl2aS9OeFBkY3hvN0J3dUNGOXY0blplUnRzWE40VS9WeTFuUStsK1o3bUxxYzZkLzRzQ3NwN0JlVnNTdTVXVmJYZGVZdzBmK1JFRk9ORjdvUTA5VVVBZ0JMMVRXMTYzM3hud3V3QUFMQjY4WnZrTjB0OUw1K3F0anNjNEhGRHNXS3F3MVpNbDFHM0FMQTVPa1RmVEFFdVF5S3NkRDFocFVMRWVhaW52ZzQzY0IwekN2Y0tOOHprb3ZHVTBrZHZoU0xrMGJaOTdzSS85WVc0cW05cUg5WS9pSUx5YjFGUURwdDZIK2JpK2E5dU5vdHlHVk51aE9VQUFBQUFnTG42cHY2UUcwdnBsbjR2YnpRcmcrV0x4b3k1YnVHWno2WTdVNWdITEkzbnk3ZjZ2ZkRqZy8rb3M3dVZ1c3d5T0E4M2NCMHpGZzhLTjZSL0w0YWNNSDNySFZHTTk3bHdQWGZsbi9wQzhMMHJYZksvNnBKZm5MelIrbUVLTHpRSHNHSml5RjRCaDhQL25jVVlaMU51QUFBQUFJQWI1UWZsMFMxZHAvVEZQWS9uZUZ0RE8zQW9YZC9VNS9IWmRPWmtBYXlkejk0Ym1PREZ3TGllcjdmbnQ5eG14ZnFyT2J1ZTY1ZlJlSEM0SWYyN1VYQm9ERzFSY3VINjUxekk3Z3VWcEV0KzZWNUhVZm1vUnpYbXdGV0VHdDRYY0RoODc0KytxWFhvQVFBQUFBQVdFcDNTMzFtMWhlWG5lRitydHJNdkN5c1F6enhPck8yTmZQNEF5Mlo2dzgzZWxIeHc4QVBYODgyT1NqNjRDYkQrTjNQOU1ocExDVGNrWTJoTFZjZm02UEhVRjJLcWRNa3Yya25mMUZYZjFLTytQaVBVa0tjQmZDN2djUGpaczc2cDNmZ0RBQUFBQVBmU04vVkJTdW1GMWJ1WFQ3cjR3bXIwVGIyZlV2cGllUUhXNW9PbHZwbmFMUVpFY2ZUTjh2U0duWklQY0t5cXR0dFdBM2tyMXkranNiUndRektHdG1UNVM3VzNRVG9kVndyS2Rja3ZUeGVoaHYweHY4ZzhOU1pQajRsUXc2TUNEb252bmNYN2NOUVRRd0FBQUFDQTFldWJPajg4ZjZ3QjJyMjhxZHBPOFFHc2htZmpBR3NTejUyRnltNm1JSnBCaU45MzNFeFlhVE1FNlc3aCttVk1saHB1bURHR3RsaHZJdVF3NnFMcUtZdUM4Z3NGNVVYS0QzVWV4K2ZqcUVYSGdhOHhQWWJ5L0JFam1RRUFBQUFBbHFKdjZtL1JBTzNNaWk3c2VXNVlsWi94RE95NG9XaGpuNTRPVUNCRnA3ZFRkTXBRK0YxM3MxcVQ2ZldxMnU1QUhkcXRYTGVNeWtyQ0Rja1kydEs5ajAxU2llQVJpUzc1dWFEOHlkVFhvakE1MVBBc1A5VEpEM2ZHL0VKenFDRUhxSXdBSzlZc1lITTA5WVVBQUFBQUFGWWpHcXU4dGJ3THl3MnJ2bFp0OTJwZ3h3MmwwMFVjWUgyRUcyNzN5TlF1QnNMMWZMdmNaRnBqMFRXSWRmNXo5Qy8wNFZ5M2pNckt3ZzNwK3pHME5nM0tremRKUHdzNUROK1ZnbkxweFBLOGpsREQrWmhmWko0R0k5UlF2SGRUQ05nQUFBQUFBSnZYTjNYdVlQbk1xYmlYdjZxMjA2QUdsdWZDV2dLc1I5U0lYVnJ1VytXcFhhWUxVVHJ2MGJ2NVZMWGQ5aEFPZEtoaWZUOU5mUjN1eUhYTHFLdzAzSkQrUDRZMmY4aTg4OVlwMGl6a2NHN2M3YkFvS0MvYVNkL1UxZGpIM1Y1NUQ3NHY0SENZYnpZNTVNRDZBQUFBQUFEckVrMS9ORUM3bjk5aldqY0F3TkFJYWQ3Tlh0VjJPbXhUckdpY2VlWU0zY25mQWc2ckVldjY5eGhmMndxY2FYakwyS3c4M0RBVGhaVXZ2SU9LVmNlNFd5R0h3dVZKRzNuaWhvTHlJblg1WVUzZjFQdGpmcEhlZzROeE1vWEpJUUFBQUFCQW1hNDBRUHZvRkMyc2p1bnJpbVFBZ0NGUnNIOTNMd1ZhS1p6citlNXl3R0YzS0FjN0JMR2VnZzEzNTNwbGROWVdia2d4Z2l4M000OENZTXIwWDhqQitTbExEcDNFZWZrY0V6Y294Nnc3L3M2WVU1QlhRZzNlZzJXYnZSOUhIYklCQUFBQUFJYWhiK3BYS2FYWFR0ZkNIa1dSekt1QkhUZVU1TG16QWJBKzBYaFB0L2U3eTRIV1B0ZGlET1dBbVpSanAzc2huNnEyT3h6UThSWXIxdkhUMU5kaEVYMVRtNXpFNkt3MTNEQ1RDNEJUU245NE94VnRkZ1B0UnFVQVZkdWQ1dEJKaEU4b3kyOWo3NDR2V0RNbzcweHJBQUFBQUFCSzB6ZDFmdDcwTkpxenNKaS9xclpUcUFBTEVnd0MyQmozTFl2N1hMV2RydHNVSlpxN21zSzNtRGN4Z1c5clNBZGRpcWhQdThqck9QVzFXSkRybEZIYVNMZ2gvVDh0OU5nbVp2SDJoQncySjY5N1huOWRSWXIwUjU1RTB6ZjFhSDlnWGdrMUNOYVVMMytYUHUyYittRHFDd0VBQUFBQWxLbHY2b3Zjbk1XRTkzdjUzZFIxV0pqaVdvQU5pQnFLTDlaK1lTL1ZaMUVnOTFPTHkwMWp2d29zTFNZKyszSjkycE1oSFhjaFhLZU0wc2JDRFNrU2ZyR0orYzdicTNoQ0RtdFV0ZDEraEJyMkp2T2loK01rUWcyanZqRzRjdE1vMUZDK1AySmF3OFhVRndJQUFBQUFLRjlNZVBkc2NIRjFkQUhkSHRxQnc3ckZWSHlGVVFDYmMyanQ3MDE5RnNYb20vcFVPUDNlWm9HbGM1TWM1b3VtdThkcUpCK2tpK3NVUm1lajRZYVo2RFQ5ekJTSFFYQVR2VUpWMisza2plbVUwdnZSdnNqaHlqZnJqL3VtM2gvemkzVFRPQ2l6OTZRRUxnQUFBQUF3S1BGczhJV3p0ckRjQmZUdnF1MWVEZXk0WVMxeStDZWV0WnFLZnpNRlVNQks5VTE5YkhyRGc4M3FzNzY1OTJQRDFLUThUQjJUSFBLMVBPcWFzN3ZLbjJseHovNVZmZHFEdVQ0WnJWOUxlV0Y5VStkUnFsdFJOTzlEcTN6NUpub3Z1dGo3NG4yZ1NHaWU2cEpmcEJ5NjJvM1BxTkdLRzJpaG11RjROdmIzSkFBQUFBQXdicm03WU5WMmoxTktGMUcwejkzOVZiV2RaM1FRWXFMSkI4OWFBWXFTdzZ4L09TVVA5aWp1L1diL1BXOXpNV3ZmMU4rRys1SVlraHhXcXRydTBGU3NCOHZYOHZ1cTdkNUhMZHJSbEs3bHF1ME9ZcXFQMy83TDh5WENoREJLeFlRYlp2SW1YTlYyUjFIbzdjT3NmRUlPRDFTMVhkNW9lem5vRnpGZXI4ZCtFeURVTURnK2F3RUFBQUNBMFloQ2p0ejg3RlNuOVlYbFozUzVPZFAyd0k0YmxpSUNEVWVlczk2THlRM0F5dlZOL2FGcXV6UDNlRXYzSnY5ZENUdDhUQ2tkNS9VZXowdWtRSWRxaTVicTBaeHIrU1N1NWNIZnAxVnR0NU5TMm84LzliK3JjempXRndhcHhIQkRNc1ZocUlRY0ZoU3AxamVET3VqcEdQMzdPRzRraGNpR280c0pJcm92QUFBQUFJdmFqYjFJbU1sZDhrLzdwcjZ3SXBTaWIrcGR6MDN1NVVuVmRuMUs2YWxybWpHTDUxcXY0czkwaGdjYVE5SGNST1RHb0x0VFh3UytrNy9yUHd6c21YR3V1L2k3Z09NWXN4enllM21sUUhxbWk1cVFYSU4zSHJWNGNDOHh2ZUhBZmRoSzdVWDk1WS8vakxPNGxrL2pXaTdpT3lEdVVmSTkrbTc4cVQ5YnI4N1VCc2F1eUhERFRFeHhPSXdiTFIrQXd6QUxPU2pFdllaTytVVTd5dzlReHZ3Q3E3YmJpczlVNCtLRzQ0Vk5aZ0FBQU9BQm51dVV5VHp4d1B4dDM5VENMeFFodnhkamdzTW5aMlJoZjFkdE4vcHAxT24vM2ZwemdmdDJGTk13RHU1VjF1ZmpWRjdvQ0dnRXlqenY0ejcrdHlGMDZzL2h5NnJ0M3FXVWZpL2djS2FtdmxxSVBxZGcraVpuVTErOEZicUltcDNqQWRiVTVYcTN6d1VjeDlUTTl2WCthUVN3d0xYOEpkNXZkN1VsdkRJb21vOHpla1dIRzFMYzZNWVVCOTFhaGlWLzJYMnQyazdJSWVpVVg3UjhRN2N6NXZkcGhCcE8zWWdPeXJ1K3FRK212Z2dBQUFBQXJOU2JxdTB1ZEh1akZMblJTOVYyanpYcHVaZGM3UGlxYitwWEF6ejJXMVZ0ZCs0WkJ5ekZrV1dFVWZpcmFydG5RK2pHbjU5NVI0ZHYzK1BESVhTNE9zOGp2UFpuMVhhWE9iQTdsRnFsL0hsVHRkMko4TjFnUFBHYmVyUk9UT05oQ240WnltdU16a0dQb3dpWjRaaUZITTZqdUhweTh1dU9EZGZQZ2czRnlUOFU4Zy8rd2Z4WXVJK3E3ZktEeWE4MkN3WWpoOEllQ3pZQUFBQUFzQ2JiRnBxUzVQMzZ2Ryt2dS9pOXZNeUJwYkU5a3hOc2dLWDVZbG80ak1xUXZ1OUhHYjZFQjhvMVpJTnFOTkEzOVg3VVdnR2JjUm5YSVl6ZVlNSU42ZnZOek5jRkhBNkxtWVVjdnNVRWcwbFFWRjYwUEo1NWE4eEp4cXJ0OXF1MjY2V21CeVdIYlVZOVJRUUFBQUFBNEM1aUFzRWZGbXRoVCtLWjNDaWV4K24wREV0bGFnT3dFWDFUWDZqMWdybUdHRW9XVm9MTmNmMHhHWU1LTjh6azhjaDlVMWNwcGJNeWpvZ0Y1TlRwNTdHSEhLcTJPMUJVWHF3OG1xa2E4NWoxZkczbGF5eVBvQzdnY0xpYmQvRytORFlNQUFBQUFDRDBUWjBMY1o5YWozdkp6K05NQ0FabXZzUm5Lc0JHUkkzR082c1B3eFpUb040NmpiQjJiMDFoWTBvR0dXNlk2WnM2ZCtwNFp0elJJTTFDRG4zdUxqK1dGMVcxM2FzSU5meFp3T0h3dlM2bDlIak1vNW55bU9rWXpmdzVyakhLTjN0ZmVzQUVBQUFBQURCSDd2UWJUYzg2NjdPd1A2dTIrekN3WXdaV3c3TW9ZT1BpdWZoSFp3S0dyVy9xUTljeXJOVlpYSGN3R1lNT042Ui92eXpQKzZiZWtnZ2N0UGRERHpsYzZaVC9Wd0dIdy9keStPbHAzOVE3ZlZOL0crdmFWRzJYdXh4OE5acDVNUEw3OHRuWTM1Y0FBQUFBQU11UzkxTjErNzJYbDFYYlhlUUdTUU04ZG1BNThtUjdRU2VnQ0gxVHY4cEZtczRHREZ0Y3kxK2NSbGk1TDlFRUhpWmw4T0dHbVVnbVBkYTFaZEJtSVlmam9id0luZktMOXlLSG4zSlhwN0crd0N2VFF2WUtPQnp1NW0yOEw4K3RGd0FBQUFEQTNVVzMzOThzMmNLZTVBWkp1Vm5Yd0k0YmVMZ3ZZNTVzRHd4VEZHa3Fpb2JoMjRubW5zQnFYTVoxQnBNem1uQkQrdmZtOTF0MGJYbm1pM1BROWlMa2NGcHlGeG1kOG92Mk9vK283cHY2ZEt3dk1JSTFGNmFGREVvTzN6MDJKZ3dBQUFBQTRQNmkrL2hqendMdjVYUFZkZ2NEUEc3Zy9oUkRBVVhxbTNwYkExc1l0bHlybVZMYTl0c01WbVlucmpPWW5GR0ZHMlp5Tit6Y0ZUdDN4eTdqaUxpbjU5RkY1cnlra0VQVmR2czY1UmZySkVJTmc1bitjUjlWMngxRnNPYko4STUra3ZLUHVHYzVmT2VHRXdBQUFBRGc0YUxoV1g1MmRHWTVGL1puMVhZZkJuYk13UDA4OVd3S0tGazBzSFUvQndNbTRBQXJjUm4zOGhlV2w2a2FaYmhoSm5mSHpvWE9rcjZEVjBmSTRkc214K1ZXYmJjYm9ZYjM0MW5hMFpoMXhCLzFTTldxN2JiemRaQlMrcjJBdytGdS9zZ1AySExvem5vQkFBQUFBQ3hYMzlTN21wM2R5OHQ0N2xic0JIWGd3UlJEQVlNUTkzUHZuQzBZTGdFSFdLcDhIVzI3bDJmcVJoMXVtSW1rN3pOZm9JUDNLTWJsOW5sNndycGVUQTVVUkVINXAvRXU3V0JOcGlOK1RHdjRPNjREeXRmRkZKRWo1d29BQUFBQVlIVnlzN09VMGd0THZMQkgwVnhzZDJESERkenNNcHJDS1lZQ0JxTnY2b09VMG0vT0dBelhsZWw2bWxERC9YWFJSTmYwTlNadkV1R0c5TzhYNkhsOGdiNHU0SEI0dVBjUmNsaFo0WER1VmxPMVhlNjIvbGxCZVpGZVQ2RWpmcndQVFdzWWp2OENOMU5mQ0FBQUFBQ0FkZW1iK2pRWDgycDBkaStmcXJZN0hPQnhBejlUREFVTVZ0L1VIOXpQd2ZCRnZZeHBMTEM0ZCtyTjRQOG1FMjZZNlp2Nk9IZlRUaW1kbEhGRVBORHZFWEw0c016UnVWWGJIZWR1TlNtbDJna3F6cnZvaUg4ODloZGF0ZDJyZUI4SzF3ekRKQUkzQUFBQUFBQWx1dElwOUtNVHRMQTNWZHVkRHV5WWdlKzlWUXdGRE4yVit6bUYwVEJnTVkzRmREMjR1eGR4M1FCaGN1R0dtYjZwOXlQeGF4VFNPTHlNMGJublZkdHQzL2NWVlcyM244TVNLYVc5cVM5b2dUNUdxR0VTWCtReGxlU3ZBZzZGMjUxTkpYQURBQUFBQUZDNnZxbHo0NkEvbktpRlBjK1RwSmZaVEF4WWk5emgvR25mMUNhd0FLTVJkU0ZQVFhHQTRjclQ5YUlCdGRwTXVGNitQaDdITkVyZ2lzbUdHOUwvRTcrNWU4RXpOOFNqa1NjdC9CMmJyM2Z1VEpIL3ZSRnFlRC8xQlN6UTdFdjgxVlJlY0hSSCtyMkFRK0ZtK1h2aldkL1V1OVlKQUFBQUFLQWNmVk1meGZNL0Z2TW9tb25aOTRaaGVCdFR4UytjTDJCczhtZGJUSEY0N2VUQ2NFVnQ1bTlPSWZ6a2RiNCtjZzJ6cFlHZlRUcmNNTk0zOWJrYjR0SEptNitmYzJBaFQyTzQ3c1hsN2pNNUNKSC92Vk5mc0FMTkNzY245U1Vld1libkJSd0tOM3NkbThYbjFna0FBQUFBb0R6eC9DOTNDdjNpOUN6c1U5VjJ1c0JEdWJxWUt1NDZCVWF2YityanVLYzdjYlpobVBxbS91QTZoditjeEwzOHNTV0I2d2szWE9HR2VMVGVSOGpodnkrRUNEWGtvdVN2RVlTZ0xKTXNISy9hN2tpd29YZ2YzV0FDQUFBQUFBeEgzOVRiS2FWM1R0bkMza1JESnFBY3M0bjNPODRKTURWOVUrZkdwby9qc3hBWUlOY3hFemU3bDcrMlVUZndmNzlhaTUvRkI4aCtGTC9YcFIwZjk3Wlh0ZDFlVEFRUWFDalR5VlMvd0t1Mnk1dVF2eGR3S015WFB6ZTJqUUlEQUFBQUFCaWV2cWtQb2xEL0w2ZHZJYzlqQXJyOWNkaXNzNVRTSzljaE1IWHhPZmhQd0NzYW5PNU5mVTFnYUdiWGNXNU1uRkk2Vlp2SkJPUlF3NjU3ZVZpTXlRMDNpSTRIajQyckhSM0JodkxNUnFkT09abDRVTUF4TU45c2tvaWJUQUFBQUFDQWdlcWIra05LNldrMHMrSHU4bk8xcjFYYjdWb3pXTHMvNGhtcVlpaUFIK1Q2a3Z3Wm1aL25XeHNZbm54dmsyc3o0em8rY1FvWm9ZK3pxV3Z1NVdGeHdnMjNpQy9TUEs3Mm1jMU9XTHBMbzFQL3MxM0ljZkIvSjdGaGZHeE5BQUFBQUFDR3IyL3FpOXpNSnJxZ3M1aFBWZHNkV2pOWXVkelo5V2s4b3pxeTNBQTN5OC96b3pqNmFYeUdBZ1B6UTFoSmZTWkQ5enJ1NVUxZWd3Y1FicmlqdnFuUFk3TlQ0aGVXNDVsdStCVHFTNFJ1cGp4SkJBQUFBQUJndEhJWDlKVFNXMmQ0WWVESmtsQUFBQXd4U1VSQlZHK3F0anNkMkRIREVPUm5VeStpQ0NwM2RyMXcxZ0FXRXlIV1dSZjQzeFJJdy9CRVdDblhaejZPcnZjd0ZMTXBEWnJvd3BMOGFpRVhFeDgreDFYYkhhU1UvaHpTc1VNaFh2c1NwMkI1NDlpREdRQUFBQUNBa2V1YitqQUs5VDg1MXd0NVhyVmRibHkxdmFZR1ZwcGtNVlo1Z3N4QmJyTG9EQU1zVjkvVUgxSkt1VUE2VlcyWFE2MjVSdVdKWllaaGlOOFpyOUsvMS9CV1hNTXZuVDRLaysvbjl3V1RZVFdFRys0cFJrQWVWVzJYdnp6M0J2a2lZTDFPZE1LbllONmZBQUFBQUFBVGs1dmRWRzJYdTRMbVlvUkh6ditkNWJYNldyWGRiMUU4dURLNThMdHF1NCtLbVJpQjNFSDhNT29NQUZpVGFHNjRuZjR0a3M3LzgxQ2RGd1hSSFBZV2M0SU9CL0huOXh1YmtDZEFIcTBwNkErVEp0endRRkVNdTErMVhlNm9VQS82eGNCcWRDbWxYVi9xRk1yN0V3QUFBQUJnd21KL2VDdW1PRHozWGxqSVgxWGJ2ZXViK21DVi81QytxVjg1UHd6UWx5aWcvZUE1RkVBWm9ydjJmdnpOcGpvY3VzZGdRODc2cGhadVdFRGNVeDNHbjhBUzYzQVNBV1hUR1dETmhCdVdwRy9xblVnSG5nbzV3RDh1bzJqY0tGVks1UDBKQUFBQUFNQi8rcWJlcmRvdUYrbi9hVlVXOG5zdURNelBTbGY1RDhubkovMWJ3SFFZQllsUFZ2blBnd1hsNTA0ZkZENEJERXRNZGRpZEhYUVVTdSs3MTJBTlhnczJQTnljd05Kc3NvTnJtUHZJOS9SNXl0cXhlM3JZUE9HR0pZcDA0Q3prWUh3dFU3YnlNY1R3QUcvN3BqNjBnQUFBQUFBQVhOVTM5VkhWZHZuNXhybm5mQXVwcTdiNzV6bnBxb3RBWW4vL3B6MytlRDY3RXdXSzIvR25Dek9ya0tlQ0gwZlJrNGtNQUNNUzl6SGYzV3ZFUGNhc2VGcXpXeDdpTEJmZWE4SzVPajlPZGtpdVlhNzNKWUlNSHdRWm9FekNEU3R3Wlh6dFRreHlzUG5KVkNnYXAyVGRxanRId1liNXdUWGZhWWtIeGEwOEZKelAreG5nZW1jS2x3Qy9pd0JZaGloczJJb0pBVzhzNnAwOWlvTHYzU1g5OXkwa25zK2UzblgvSkRvemI4Znh6b0lSTzU3ckVyN0VKSVpURGQzVzR0UnZlcUJVY1k5eEZILy9pWUxwVjNFdjhjbzlCS0dMb1BScDNFZllxOXF3RzY3aDdTdlg3NjVyZUxRK3h2VW94QUFEVS9WOTc1eXRtSkFERTNEU04vVytFMzEvVmR2WnRGdWRQRFpzVi9xZEtmREE5U2Y1K3QvV1BXdVlxcmJMRDhQM3ByNE9WMXoyVGIxVnpOR3dNVlhiNWZ2dTk4N0FkNTdha0tScXUveGc0dmZKTDhUM1B2Wk4vYXFrQTRKMXFOcnV3dGg1V01oZ0dvSkVWM2pQV2I3M3pMN242c1h2c0NQdnZ6dDUxemYxd1FDTzgxNnVUSWZZbnZQbi9tTTRMcThVSFo1SDRhRTk1QTJLYSt2QzV5d3NSSTFHNGFKV2JQZEtnRkxIK0dIN0V2Y04vLzE1TGpGdVAxekR1KzczaTNUMXVzejM5Qm9Gd29nSU42eVJJaFJHcUl1aWNSdCtEeVRjc0RLdis2WStIdWxyZzduaUljRFJ4RHVFNU03TmgzNjhEcC8zOHo5eU40a2o3MmV1aW12aklFYm9UblV6dFl2UGV0MFQrVTg4Yk1oaHo1Y1RYeFhYQjVQbjh3QnVkUm5kcUErSFZvd1JqUjJtZkIrY3JweS9BM3Z6NnhmZFBXZWRQYmNWcWYyamkvZmtrZmZremE2RUk5S1ZDUmV6b0VUeW5PamVabUdGaS9qNzUzOFgvaHFlcXUxMjR6N2V0UUR6ZllrcFNiNXpSK1NhYVZLQ2s2dlR4UVQ1aXgvL2hCVzRqMnV1NFMyL0ZlL2x5dy9YWlg0Ky9zMTlQVXlUY01NR0NEa3dBanJoTDVsd3c5THBVQW9BQUFBQUFFekNsYUtxbWF0Qmlwdit0YXVXL1p4cVZwdzB6NCtOUE02ajBEQXBZQUtBeGZ3UW9FeFhpcXRuYnJvSDJGbERnN0ZaRVBFbTM2NzU5OHo3MTg4RmZCaWJDSG5Pekx0bWY3emYvL0gvdDRwQTFFM1g3cnhyOCtLSCszL1hLbkJ2d2cwYkpPVEFRT21FdndMQ0RVdVRiNnkzM1J3REFBQUFBQUFBQUFBQURJdHdRd0dFSEJpSWs3NnA5NTJzMVJCdVdJcmYrcWIrTUlMWEFRQUFBQUFBQUFBQUFEQTV3ZzBGcWRvdWQ4UGZtL282VUp5enZxbDNuWmJWRW01NEVNRWJBQUFBQUFBQUFBQUFnSUg3eFFrc1J5N083WnU2eW9XNlUxOExpdkFscGZSWXNJR0NkZkVlRld3QUFBQUFBQUFBQUFBQUdEaVRHd3Bta2dNYmNwbFMydTJiK3R3SldCK1RHeGJpUFFvQUFBQUFBQUFBQUFBd01zSU5BeURrd0JxOTdwdjYySUt2bjNERG5YbVBBZ0FBQUFBQUFBQUFBSXlRY01PQUNEbXdRaWQ5VSs5YjRNMFJicmpWeDc2cFh4VitqQUFBQUFBQUFBQUFBQURjMHk4V2JqaHk4WG5mMUZVdVJKLzZXckEwWFVycHNXQURCYnVNOTZoZ0F3QUFBQUFBQUFBQUFNQ0ltZHd3WUNZNThBQzVZSHluYitvTGkxZ0dreHZtZXRFMzlXbUJ4d1VBQUFBQUFBQUFBQURBa2drM2pJQ1FBd3RTTUY0ZzRZYnZ2T3ViK3FDZzR3RUFBQUFBQUFBQUFBQmd4WVFiUmtUSWdWdjgwVGYxa1VVcWszRERQN3FVMG03ZjFOOEtPQllBQUFBQUFBQUFBQUFBMWtpNFlZU3F0c3Nkei8rYytqcnduNU8rcWZjdFI5a21IbTY0akZERGVRSEhBZ0FBQUFBQUFBQUFBTUFHQ0RlTVdOVjJ1YUQ5L2RUWFljSjB3UitRQ1ljYlh2ZE5mVnpBY1FBQUFBQUFBQUFBQUFDd1FjSU5FeURrTURtNjRBL1FCTU1OSm9vQUFBQUFBQUFBQUFBQThCL2hoZ2tSY3BnRVhmQUhha0xoQmhORkFBQUFBQUFBQUFBQUFQaUpjTU1FVlczM0txV1VDK0FmVFgwdFJ1UmQzOVFIVTErRUladEF1TUZFRVFBQUFBQUFBQUFBQUFDdTlhdWxtWjYrcVQra2xMYXF0dHRKS1owS09RemF4NzZwWDAxOUVTaWVpU0lBQUFBQUFBQUFBQUFBM0VpNFljS2lnN3FRd3pCMTBRWC8yOVFYZ3FLZDlFMjk3eFFCQUFBQUFBQUFBQUFBY0J2aEJxNkdITFlpNUZCYmxXSmRScWpoZk9vTFFkR0Vid0FBQUFBQUFBQUFBQUJZaUhBRC80bEM1QjBoaDJLOTdwdjZlT3FMUU5GeStHYW5iK29McHdrQUFBQUFBQUFBQUFDQVJRZzM4Sk1mUWc2NW1QNmxWZHFvazc2cDl5ZjgraG1HRjMxVG56cFhBQUFBQUFBQUFBQUFBTnlIY0FQWGlwRERxL3ovcjlvdWh4ejJyTlphZFNtbDNUZ1BVQ29UUlFBQUFBQUFBQUFBQUFCNHNLcnZlNnZJblZWdGQ1aFNlbVBGVnVveXBiUXQxREF0VmR2bHFRZlBCL1NpVFJRQkFBQUFBQUFBQUFBQVlHbUVHN2lYcXUxeVVmTjdxN2Qwei9xbVBoL1phK0lPQmhSdU1GRUVBQUFBQUFBQUFBQUFnS1VUYnVCQnFyYmJTU25sb3V4SFZ2SkJYdmROZlR6ZzQrZUJCaEJ1dUl4UWcvQU5BQUFBQUFBQUFBQUFBRXYzcXlYbElhTFFlVXZJNGQ1TytxYmVIK2l4TXgwditxWStkYjRCQUFBQUFBQUFBQUFBV0JYaEJwYmlTc2hoSzBJT3RaVzlVUmRkOEw4VmZJeGdvZ2dBQUFBQUFBQUFBQUFBYXlIY3dGSkZzWDZlNHBDcXRzdEYwWHRXK0R1WEVXbzRMK2lZNEVjbWlnQUFBQUFBQUFBQUFBQ3dWbFhmOTFhY2xhcmE3aWlsOUx0VlRyLzFUZjJoZ09PZ1FGWGI1WWtuenpkOFpCLzdwbjVWNUFJQkFBQUFBQUFBQUFBQU1HcS9PTDJzV3QvVUIzMVRWeW1sMXhOZDdMZjU5UXMyVUxBdXBmUllzQUVBQUFBQUFBQUFBQUNBVFRHNWdiV3IybTRucFpTNzFEOGErZXFmOUUyOVg4QnhNQUFibXR4d21WTGE2WnY2d25zRUFBQUFBQUFBQUFBQWdFMzYxZXF6Ym4xVG42ZVV0cXEyMjRxUVF6MnlrNUM3NE8vMlRmMnRnR09CZVM3alBYcHVkUUFBQUFBQUFBQUFBQUFvZ1hBREd4UEYvM21LUSs1YWY1eFMyaHY0MlZBd3poQTg4eDRGQUFBQUFBQUFBQUFBb0RSVjMvZE9Dc1dvMnU0Z3BmVG5BTS9JNjc2cGp3czREZ2FxYXJzOHhlVDVDby9lZXhRQUFBQUFBQUFBQUFDQVlnazNVS1NxN1haVFNoOVNTbzhLUDBNbmZWUHZGM0FjRE53S3d3MUNEUUFBQUFBQUFBQUFBQUFVNzFlbmlCTDFUWjBMdmJlcXR0dU9rRU5kMkdGMmZWUHZGSEFjY0IyaEJnQUFBQUFBQUFBQUFBQUdRN2lCb3ZWTmZaRlMycW5hYml1bGRKUlMydHZ3OFg3Sng5TTM5YmZDbDQ3cEVtb0FBQUFBQUFBQUFBQUFZSENxdnUrZE5RYWxhcnVEbE5LZmF6N215NVRTYnQvVTU5NHRyRUxWZG5sYXlmTUgvRmNMTlFBQUFBQUFBQUFBQUFBd1dNSU5ERmJWZGpzcHBWd1EvbWpGcjBIUk9DdjNnSENEOXljQUFBQUFBQUFBQUFBQWcvZXJVOGhReFJTRnJhcnR0aUxrVUMvNXBaejBUYjN2RFVLaGhCb0FBQUFBQUFBQUFBQUFHQTNoQmdhdmIrcHZLYVU4eFNGM3Y4L0YzbnNQZkUxZFNtazMvbnVoSkpjcHBWZDlVNTg2S3dBQUFBQUFBQUFBQUFDTVNkWDN2UlBLNkZSdGx5Y3VIS1dVSGkzdzJpNGoxSER1SGNHNlZXMlhBd3ZQci9uSGVtOENBQUFBQUFBQUFBQUFNR3JDRFl4YTFYWjVva09lNWxEZjhqcGY2SWJQSmwwVGJqaUxTUTJtaUFBQUFBQUFBQUFBQUFBd2FyODZ2WXhaZExyUEFZZGNQSjVERG5zL3ZOdy8rcVkrOGlhZ01ONlhBQUFBQUFBQUFBQUFBRXlLeVExTVR0VjIrem53MERmMWdiTlBLYXEyTzh4VFJ2cW12bkJTQUFBQUFBQUFBQUFBQUppVWxOTC9BUFNTbXVoUzR4QTdBQUFBQUVsRlRrU3VRbUNDIn0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDctMjkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJIeXBlciBGSURPIFBybyBORkMiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlUyRjAwMDIwMjUwNzI5MDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25Qcm9maWxlcyI6WyJjb25zdW1lciJdLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTA3LTI5IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjF9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjYtMDEtMDYifSx7ImFhZ3VpZCI6ImE0ZTlmYzZkLTRjYmUtNDc1OC1iOGJhLTM3NTk4YmI1YmJhYSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiYTRlOWZjNmQtNGNiZS00NzU4LWI4YmEtMzc1OThiYjViYmFhIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlNlY3VyaXR5IEtleSBORkMgYnkgWXViaWNvIn0sImRlc2NyaXB0aW9uIjoiU2VjdXJpdHkgS2V5IE5GQyBieSBZdWJpY28iLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI4NzA3LCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsiZWQyNTUxOV9lZGRzYV9zaGE1MTJfcmF3Iiwic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURIakNDQWdhZ0F3SUJBZ0lFRzBCVDl6QU5CZ2txaGtpRzl3MEJBUXNGQURBdU1Td3dLZ1lEVlFRREV5TlpkV0pwWTI4Z1ZUSkdJRkp2YjNRZ1EwRWdVMlZ5YVdGc0lEUTFOekl3TURZek1UQWdGdzB4TkRBNE1ERXdNREF3TURCYUdBOHlNRFV3TURrd05EQXdNREF3TUZvd0xqRXNNQ29HQTFVRUF4TWpXWFZpYVdOdklGVXlSaUJTYjI5MElFTkJJRk5sY21saGJDQTBOVGN5TURBMk16RXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFDL2p3WXVoQlZscWFpWVdFTXNyV0Zpc2dKK1B0TTkxZVNycEk0VEs3VTUzbXdDSWF3U0RIeTh2VW1rNU4yS0FqOWFidlQ5TlA1U01TMWhRaTN1c3hvWUdvblhRZ2ZPNlpYeVVBOWErS0FrcWRGbkJubHl1Z1NlQ09lcDhFZFpGZnNhUkZ0TWprd3o1R2N6MlB5NHZJWXZDZE1IUHR3YXowYlZ1em5ldWVJRXo2VG5RakU2M1JkdDJ6YnduZWJ3VEc1WnliZVdTd2J6eStCSjM0WkhjVWhQQVk4OXlKUVh1RTBJek1aRmNFQmJQTlJiV0VDUktnanEvL3FUOW5tRE9GVmxTUkN0MndpcVBTemx1d24rditzdVFFQnNValRHTUVkMjV0S1hYVGtOVzIxd0lXYnhlU3lVb1RYd0x2R1M2eGx3UVNnTnBrMnFYWXdmOGlYZzdWV1pBZ01CQUFHalFqQkFNQjBHQTFVZERnUVdCQlFnSXZ6MGJOR0poamdwVG9rc3lLcFA5eHY5b0RBUEJnTlZIUk1FQ0RBR0FRSC9BZ0VBTUE0R0ExVWREd0VCL3dRRUF3SUJCakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBanZqdU9NRFNhK0pYRkNMeUJLc3ljWHRCVlpzSjRVZTNMYmFFc1BZNE1ZTi9oSVE1Wk01cDdFamZjbk1HNEN0WWtOc2ZOSGMwQWhCTGRxNDVyblQ4N3EvNk8zdlVFdE5NYWZiaFU2a3RoWDdZKzlYRk45TnBtWXhyK2VrVlk1eE94aThoOUpESWdvTVA0VkIxdVMwYXVuTDFJR3FyTm9vTDltbUZuTDJrTFZWZWU2L1ZSNkM1K0tTVENNQ1dwcE11SklaSUkydjlvNGRrb1o4WTdRUmpRbExmWXpkM3FHdEtidzd4YUYxVXNHLzV4VWIvQnR3YjJYMmc0SW5waUIveXQvM0NwUVhwaVdYL0s0bUJ2VUtpR24wNVpzcWVZMWd4NGcweExCcWNVOXBzbXlQeksrVnNndzJqZVJRNUpsS0R5cUUwaGViZkMxdHZGdTBDQ3JKRmN3PT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZkNBWUFBQUNHVnMrTUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFIWVlBQUIyR0FWMmlFNEVBQUFiTlNVUkJWRmhIcFZkN1ROVjFGRC8zZDU5d2VRU0lnUzlBUUFYY0ZMQVFaaTlmcGVWejF0WS9XVFpyNVd4cGM3VzVrbkxhNWpJM1o4NXNyUzJuTTJzanRXd1pTN0lVSDRINHhDbkVReDREQVpGNzRWN3VzODg1djkvbEluQnZWSi9CNFB2OW51LzVudS81bnZNNTU2ZnpBL1F2MEhiL0lyWDNWRktQbzQ1Y25tNGluVUlXWXdMRlJtWlFVdXdqRkcvTjFpUkhoMUVaME5SVlJ1ZHF0MUJkKzJuU0t5Uy9PaHlzMCtsazNlLzNrUTlxdkQ0WlV0YTRWVlNVdVkwZWlweWlUaEFmb2NvT1JWZ0R1dXczcUtSaUFkM3JiY0V0alRqWUlvZjZXYUhzQ216VlBXQ014K2NnaDh0THFXTUthTVdzVWpMcW8yUnRKSVEwb096bWVycFF1NGVzWmdzT05rR3hIN2Qwa2R2VFQxN3M0T01VN1ZJOFpoamdHYU0rQXE5aUVOdThQaWYxdWR6MDdNd3ZLV2Y4R2xWb0NFWTA0UEM1V2RUYVhZRmJSOHZOdkw1KzNLZ2ZiNXhOTXlhOVJhbUppeW5hTWxHVFZ0RmxyNmJhOXUrcHFuRVg0dU11UlJnalNZRWhyTjd1dEZGZTZscWFsN05ma3c1aW1BR0h5blBwYms4Vm1ZMHhzdG5wdGxGQ1ZDWXR6VHVCTjgzUXBNTGpUdGV2ZFB6U1VuSjdlOG1ranhaMzlmWGJLRGZsZFpxYnZVK1RVZ0duQlZGNmZRMmlQSGc0VzE2VVdVd3Z6YmsxNnNNWkUrUG4wcHZ6N0pTZXVBeWVzOGxjcENtYUt1by9wK3FXcjJVY3dJQUhXcnZQMFlFemhYQXRMQWJzc0hocDdpR2FtdnlpalA4cnlxclhVV1g5WG9vd3h5QXVmTkJycDQzUE9CRlhabGtmOE1EUmlxY3B5b3dBd3B1ejJ4K2ZXdnovRHRkZTlzbXN6eWd0Y1I2QzF3YmR6Qmw2T2xxNVdOWVk0b0dhdGhKTXJrVEV4MGpBUlNIQVZzKzVyWWtRTlhiK1FnZlBMc1E2Z1h5SW5zcmVRZm1wbTdSVkZZZkw4Nm4xZmlVT2tZdlNoa1VQeHZidWt6b3k2SzFpaE0xaG8zWHpXNkV2U2ZYQStkcGlXR2FXZCtkb1h6THptR3dLWUZMQ0FzUkFsUEJBaE1sQ0ZYVTd0QlVWUHI4SGdWY0pIV3ErRjAwcGxyK0RNVGRyUDR6dnhZMTFrTk1oeFQrU2VUR2crZDRWNUxRSml0eVVHSk5COFZGWnNqZ1lCWk0vSUkvWENUa2owcXlET3BGMkFWUTE3Q0lqVXAvRG5UMVVrTDVGNWdkaitzUzF3ZzFnRTNnaWdtNjBmQ1h6U25QWGJ5QVBiSVh2K0lEcEUxNlRoYUhJUzlza3lobG1NRTVGM2NmcUFLaHEyQzBFNVBIMWdZYVhhTFBEa1pHMEhESk9uS1dIcDUxSTB6NVNPdXg4ZTFXQXVaemRIUXJUa3A4VG1qWG9JK2xhMHdHWnN6dWJxYk8zaWZRNkEvVzd2VlNZc1YzbVIwSkt3a0tjNFdIaUJrbVI4STNDQ2dJODdvT0w0cXpUNVArUlVKQmVqRU9nQVBLOGhZUHphdE0rZUlUcDJJTzl5VFFtZXJvbVBSeHgxcXhBY3NpbGUvdWJTZUViY1dRR1lFQ2doY0xZMkh5S2pvZ2pIMjVoTXBqcFV2MU91Z2xpNGVoMmVSdzBPMzJiSmpreXVDZ056ZzB2emxZTVNpU3MwdW9vNE1HN2hNT2pDRWFYMXlGRTBuU3ZqQnp1VG5FcEs4Nlo4SW9xRkFJdWJ3OGtnOUFyRWFSRVdTWkkrakg0WGJwNmc5RTlFbkpUM29hUnpETitNVUpCUURIbjU2YThvVW1FQnVzT3hCcy9ONSt0SkViUGtBRkRqOFVHdk9zL0lXdmNTZ2xHQmh2UzcvRlRZZnBXR1lkRFk4ZlBBeFdTQTM1c1RDNHA0K0xtNEFhcUlvUGVRdGZ1Zks2SmgwWmh4bGJzVVhPU21YTmlmRDVaVEFreURvZmJiY2NseG5BOFdOQXF4Q2JSTnlraFh4UXBhRHc2N2ZYVVlic2lHMEtodHYyb2VJdmg4cmhRTVlPY0VBcVhHL2VJK3puZ09jNXl4cjhxODJJQU0xYy9GTEZPcGxxdTVlRlFYck1aekdjVkNqWWJMV0c1STRCVDFldVJybGJ4dE5PdE1pdERERWhMWElJeW5BQXZ1T0VXRTNYM05kQWZ0OTRWZ2FHNDJYSVF0MFpYNlBlQ0UvcVFGZTlySzZIeDdZVTUwS3ZIN2ZXNGZTK3E3S0tCSnhzZ2dCWDVwU0FHaDFqSXJWaDV6UTZ3M1JmYWFoQlhtL2FDYkNaVGpDVUZVVHlXWnFXOXA2Mk1qSlBYVnFPclBnTU80TnY3NEdrZitvd2Z0TlZCRFFuakZKcUhTdzE3cFh2aFdXNUtacWUvUTQ5Ti9VU1RDQVZXb1FYRklIQkhYWGUzRlByVURzdUdEbXRGL2hIS1RIcGVreGhpQU9QSStTSnE2UzZIRjRJOVlXemtCSlRvNDZpVU16V3A4UGlyL1JpZHVMeEtZc1Nrc1Y4dkxsT1F2aEdYMllsUjBPQmhCakMrdS9nRWN2WTBBcEs3WWs0MU54alBTUW5XRkhURjY2VXJqZ2V2QjhDdTVhK2wydllTUlB0dVZEbzczaGhkTVNIblVYN3RUanNWWkd4QWwvV3B0aU9JRVExZ25MMjltWDYvdFIxdG1sa1lqOFc0WCtDU2pXY1VER1kxTnBTL0M3aFNLcWlNTE0vbDJRbVNXWjczRGR6K2dpbzhCQ0VOWVBRNDZxbmt6d1hVYnF2Qmt4alVRc1dmWkZnYnVvM3JBZit3TjdqT085MCt5bng0UGkzTCswbllMMVNjaERVZ0FQNGdQVi83SWQxcSsxSFNobXVHa0lxV1JQZ3l4TUZxUDhIZmpUbmpYd1k1YlFmYkpjdDZPSXpLZ01Ib3RGL0hlMWVnc2F4SFNxRzZ3ZmRtUTV4OE55VEZGcUJjcDJpU293SFIzeWs1KzM2aEY3dlhBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMV9QUkUiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6ImE0ZTlmYzZkNGNiZTQ3NThiOGJhMzc1OThiYjViYmFhIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWV9LCJtYXhNc2dTaXplIjoxMjAwLCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjgsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4LCJ0cmFuc3BvcnRzIjpbIm5mYyIsInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi04fV0sIm1pblBJTkxlbmd0aCI6NCwiZmlybXdhcmVWZXJzaW9uIjozMjg3MDd9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMy0wMy0yOCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjg3MDcsInVybCI6Imh0dHBzOi8vd3d3Lnl1Ymljby5jb20vcHJvZHVjdHMvIiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJTZWN1cml0eSBLZXkgTkZDIGJ5IFl1YmljbyIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjMwMzI4MDAyIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjMiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMyJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMy0wMi0wMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjg3MDcsInVybCI6Imh0dHBzOi8vd3d3Lnl1Ymljby5jb20vIiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJTZWN1cml0eSBLZXkgTkZDIGJ5IFl1YmljbyIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjMwMjAyMDAyIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4zIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIzLTAyLTAyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyODcwN31dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMy0wMy0yOSJ9LHsiYWFndWlkIjoiMGFjZjMwMTEtYmM2MC1mMzc1LWZiNTMtNmYwNWY0MzE1NGUwIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiIwYWNmMzAxMS1iYzYwLWYzNzUtZmI1My02ZjA1ZjQzMTU0ZTAiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiTnltaSBGSURPMiBBdXRoZW50aWNhdG9yIn0sImRlc2NyaXB0aW9uIjoiTnltaSBGSURPMiBBdXRoZW50aWNhdG9yIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQnNqQ0NBVm1nQXdJQkFnSUlSNmxnd2tzZmp5Z3dDZ1lJS29aSXpqMEVBd0l3TFRFck1Da0dBMVVFQXd3aVRubHRhU0JHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ1EwRWdSMjlzWkRBZUZ3MHlNREEyTWpZeE5qSXpOVEphRncwek5UQTJNak14TmpJek5USmFNQzB4S3pBcEJnTlZCQU1NSWs1NWJXa2dSa2xFVHlCQmRIUmxjM1JoZEdsdmJpQlNiMjkwSUVOQklFZHZiR1F3V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVFaVnl6WUxzdmJ2bWc0Ym1STnlaanJWWHp6elVmVWVZaVdZWmlSM3ZBQ2F2WDRqL1Z4M2pZL3d2bWRTYzViYUNtVlFoK3JOMFErKytMR3dVajFrRmljbzJNd1lUQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01COEdBMVVkSXdRWU1CYUFGSG1xOEtDNTc4alY0M0NKeFR4eEJLWWJvMWlNTUIwR0ExVWREZ1FXQkJSNXF2Q2d1ZS9JMWVOd2ljVThjUVNtRzZOWWpEQU9CZ05WSFE4QkFmOEVCQU1DQVlZd0NnWUlLb1pJemowRUF3SURSd0F3UkFJZ0toMUhjZ0w3b3hwZFdubmNrOXVDV0Y2QzZiMnRzYkdQalNIdTMxRzQ4V01DSUh1RXN0U0hHa01sRlRIMzY3cHRtZkM2d2l4bWFDZHdUOENWL2lqck9UTUkiXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBRUFBQUFCQUNBTUFBQUNkdDRIc0FBQUFBM05DU1ZRSUNBamI0VS9nQUFBQUNYQklXWE1BQUFMRkFBQUN4UUdKMW4vdkFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCM2QzY3VhVzVyYzJOaGNHVXViM0pubSs0OEdnQUFBalJRVEZSRktiN0dLcjdHSzcvR0xML0hMYi9ITHNESEw4RElNTURJTWNESU1jSElNc0hJTk1ISk5jTEpOc0xKTnNMS044TEtPTVBLT2NQS09zUEtPOFBMTzhUTFBNVExQc1RNUDhYTVFNWE1RY1hNUXNiTlE4Yk5STWJOUmNiTlJzZk9SOGZPU01mT1Njak9TOGpQVE1uUFRjblFUOG5RVU1yUVVNclJVY3JSVXNyUlU4dlJWTXZSVmN2U1ZjelNXYzNUV3MzVFc4M1RYTTdVWGM3VVhzN1VYODdVWU0vVlljL1ZZcy9WWk5EV1pkRFdadEhXWjlIWGFOSFhhZEhYYXRMWGE5TFliTkxZYmRQWWNOVFpjZFRaY3RUWmRkWGFkOWJiZXRiYmU5ZmNmTmZjZmRmY2Y5amRnTm5kZ2RuZGd0bmVoZHJmaHRyZmg5dmZpTnZmaXR6Z2k5emdqTnpnamR6aGp0M2hqOTNoa2Q3aWt0N2lrOTdpbE43aWxOL2psZC9qbDkvam1PRGttZURrbXVEa20rSGtuT0hsbmVIbG9PTG1vZUxtb3VQbW8rUG1wZVRucHVUbnFlWG9xK2Jwck9icHJlYnBydWJwcitmcXNPZnFzZWZxc3VqcXMranJ0ZW5ydHVuc3QrbnN1T25zdWVyc3V1cnR2T3Z0dmV2dHdPenV3ZXp1eGUzd3h1N3d5Tzd3eWUveHl1L3h5Ky94ek8veHpmRHl6L0R5MFBIeTBmSHowdkh6MC9IejAvTHoxUEwwMWZMMDF2UDAxL1AwMlBQMDJQUDEyZlQxMnZUMTIvVDEzUFQyM2ZYMjMvWDM0UGIzNGZiMzR2YjM0L2Y0NVBmNDV2ZjQ1L2o1NlBqNTZmajU2dm41Ni9uNjdQbjY3Zm42N2ZyNjd2cjc3L3I3OFByNzhmdjc4dnY3OHZ2ODgvdjg5UHo4OWZ6ODl2ejk5L3o5OS8zOStQMzkrZjM5K3YzKysvNysvUDcrL2Y3Ly92Ly8vLy8vV3BvNHJBQUFCQ2xKUkVGVUdCbWx3WTEvbEFNQXdQSGZkbHVhMm1Xa0ZuVkhTaEVxeEloaVVpcHZrVG8wUkdKVVdGNHlVZDZaOTJyenRxSlNtQnEycG1mMysrYzh6KzFXZDgvdXJ0dW43eGZQRTFadzZtQjNWMWYzd1ZOV2dLVU43TTIwekt3bHAzWm1TMmJ2Z0tWaENVT2R5K3FKbWJDc2M4Z1NjSXkrdGlaRzFFeE5YYnNnTmJXR0VVMXRmemtHeGd3K01ZbElhczNyM3c2WU0vRHQ2MnRTUkNadEdqUUdpNzAzaTlDMFI3dU5PZkRvTkVLcFBSYkRRa01QRVpyMTRpbExPTjF4SmFHVkF4YkNBZ2ZuQTVOZkRDd2oyRG9KdU9hUUJmQ3NBOU9BcFVlczRQQnR3UFFEbm9WbmRDVWhzU1ZyUmRsbkU1RDgzRE53MVBjWFFjTWV6K245U2RDNDMxR1lkN2daa3A5WmhjK1NNT09JZVRnaVdBUVRQN0VxbjE4SWl3Tkg0SWlOVVB1dVZkcGRDeGxIWU01WENjaFl0UTFRMjJVT1JvSUZzQ2l3YXNGQ3VHN1lDRWEyUWQzM2prTlBIV3czZ3FIVE0yR0Q0N0llWmdXR01QUWFURDdodUp4TVFvY2hERjBMR1lzZHZYWDJxMWFTZ1FXR1VIdWc3cGpGN2dNNnJPQllIZlNvcUkvQm5jYk1CUnFQV3NHZHNGRkZuUU83akVrVFdtRUZiOEZjRlQxZVErS0VNV2tpNzFuZWlRUTF4eFRkQmRjYmw0YTVrQnEwdk92aGJVVWZoM1hHcFdGdkkyUXNieDA4cm1ncmJETXVEZDN0VU4vanFLR2p2WGtuemRrRzl5ZzZIejR5TGczZHdYV3dLR3RPNy9KNlJ0Vy9hK1JEbUsvb0RQakp1RFIwKzNVQ3RodjVZUW9GMWhqNUVXWW9tb1RmakV0Qmp6NEVGeDAzZER2UU5DWHY2bjFHamtKUzBUcjQyNWpCQmppaS9jMndVdjBuUWMxZVkvNkJoS0lOMEdkaytKMXRlUy9kQ3MxWnRSTnFQdENmWVpweGZUQlIwYW53aTVITkZIckJ5QjF3NVpBOWtETHVFRnlxYUJyMkdYbUVzMm9lemhvNTFBQ2I3SUdVY2Q5Qld0RWwwR25reE1hMWVmYy90ZCs4NTJEQ2p6MlFNcTRUYmxIMEFkaHNXY0U4dUtrYlVzWTlBdzhxMmc2dGx0ZFZDeHNnWlZ3cnRDdjZCVFFOVzk0YXFJT1VNZGxMNEV0RmcwYllaM2w5VXdtbGpQa09rb0dpTG9lTUZld2tsRFltQTNlcHFHL0FaY09XbDEwSzNHU3g3RXg0UzBVZG1BeDdyS0J2TnJ4aHNUMHdlVkRGMEZwWVpDWC92dm1wTVF0aHJTRU05U2JnQThmbGZVajBHc0xJdlREbnRPTVFYQTByaldDazl3SjQzbkhZQWhNUEdzR2NOcGp3alZYYlB4R2VOZ2R6VHMyR0svcXQwc2swWERWa0RvN29ib0FsUTFibHZ4YTRZSjhqTUc4SHNDS3dDc0VLNEZYemNOUUdZUG1nNXpSMEQ1QnhGSTdLcmdKdS9zTnorUDFHWUZYV1VYaEdjRC9RL0lrVmZkd01yQW84QXdzOEFTUWUrZHV5K3RjbGdDY3RnSVU2RzRIbVYwNWIwbjg3cGdQSmR5eUVSWHB2SUhSNWU1OWovTmwrR2FHRnZSYkJZc1BibXdqVjM5M3hxd1YrZmUydWVrSVh2NUsxR01iMVBUbUZuTlN5OVMvdjNMMTc1OHZybDZYSW1iTHBMK053clA2dDh5aGgzdForeDhLUzlyY3RycWRBL1kxdEJ5d0p5eG5vNnNpc2JtMXBhVjJkNmVnYXNCdzhUM2llL2dldmo0SDJGRFAwMkFBQUFBQkpSVTVFcmtKZ2dnPT0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xX1BSRSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiMGFjZjMwMTFiYzYwZjM3NWZiNTM2ZjA1ZjQzMTU0ZTAiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwidXAiOmZhbHNlLCJ1diI6dHJ1ZSwiY3JlZE1nbXQiOnRydWV9LCJtYXhNc2dTaXplIjoxMjAwLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjIwLCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjEyOH19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIxLTAzLTIyIiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJOeW1pIEZJRE8yIEF1dGhlbnRpY2F0b3IiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDIxMDIxODAwNyIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4zLjciLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMy4wIn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMS0wMy0yMiJ9LHsiYWFndWlkIjoiZDkxYzUyODgtMGVmMC00OWI3LWI4YWUtMjFjYTBhYTZiM2YzIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiJkOTFjNTI4OC0wZWYwLTQ5YjctYjhhZS0yMWNhMGFhNmIzZjMiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiS0VZLUlEIEZJRE8yIEF1dGhlbnRpY2F0b3IifSwiZGVzY3JpcHRpb24iOiJLRVktSUQgRklETzIgQXV0aGVudGljYXRvciIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUJ2akNDQVdPZ0F3SUJBZ0lSQUxHcG1XWUlaeFdybzRmTFBVRXMvZ0l3Q2dZSUtvWkl6ajBFQXdJd1BURUxNQWtHQTFVRUJoTUNSMEl4RnpBVkJnTlZCQW9NRGtSdmRDQlBjbWxuYVc0Z1RIUmtNUlV3RXdZRFZRUUREQXhHU1VSUElGSnZiM1FnUTBFd0lCY05NVGt4TURFM01EQXdNREF3V2hnUE1qQTBPVEV3TVRZeU16VTVOVGxhTUQweEN6QUpCZ05WQkFZVEFrZENNUmN3RlFZRFZRUUtEQTVFYjNRZ1QzSnBaMmx1SUV4MFpERVZNQk1HQTFVRUF3d01Sa2xFVHlCU2IyOTBJRU5CTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFVHRpeEpFZXN5SWk5bTl1TUxnYW1CMlRHZTQvWnc2M1hYeVhSRFE0Q0k5dWV4TGxrY1dBK1IrU1A5Si81b25IS21PS0h4c0VTbEdqNDdhdGhMY05lSDZOQ01FQXdIUVlEVlIwT0JCWUVGTHNKdjBiWTlydVBDMFY3T2Z3UGtPSXcwNVpPTUE4R0ExVWRFd0VCL3dRRk1BTUJBZjh3RGdZRFZSMFBBUUgvQkFRREFnRUdNQW9HQ0NxR1NNNDlCQU1DQTBrQU1FWUNJUURuWVJnbUdBK0ZTeEtGTlVPeVA4THYxZmFBcmlJNlp3b3FlR0dvdWJ2NEt3SWhBTk1xNlVUaDBDekpENlRVeEZOZnkvOGhnY0NhT3U1c3dGTmIrM3h0SnZYSyJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFEb0FBQUFTQ0FZQUFBQUtSTTF6QUFBRUdXbERRMUJyUTBkRGIyeHZjbE53WVdObFIyVnVaWEpwWTFKSFFnQUFPSTJOVlYxb0hGVVVQcnR6WnlNa3psTnNOSVYwcUQ4TkpRMlRWalNodExwLzNkMDJicFpKTnRvaTZHVDI3czZZeWM0NE03djlvVTlGVUh3eDZwc1V4TCszZ0NBbzlRL2JQclF2bFFvbDJ0UWdLRDYwK0lOUTZJdW02NWs3TTVscHVySGVaZTU4ODUzdm5udnV1V2Z2QmVpNXFsaVdrUlFCRnBxdUxSY3k0bk9IajRnOUs1Q0VoNkFYQnFGWFVSMHJYYWxNQWpaUEMzZTFXOTlEd250ZjJkWGQvcCt0dDBZZEZTQnhIMkt6NXFnTGlJOEI4S2RWeTNZQmV2cVJIei9xV2g3Mll1aTNNVURFTDNxNDRXUFh3M00rZm8xcFp1UXM0dE9JQlZWVGFvaVhFSS9NeGZoR0RQc3hzTlpmb0UxcTY2cm81YUppbTNYZG9MRnc3MkgrbjIzQmFJWHpiY09uejVtZlBvVHZZVno3S3pVbDUrRlJ4RXVxa3A5Ry9BamlhMjE5dGh6ZzI1YWJrUkUvQnBEYzNwcXZwaEh2UkZ5czJ3ZXF2cCtrcmJXS0lYN25oRGJ6TE9JdGlNODM1OHBUd2RpcnFwUEZuTUYyeExjMVd2THlPd1RBaWJwYm12SEhjdnR0VTU3eTUrWHFOWnJMZTNsRS9QcThlVWoyZlhLZk9lM3BmT2p6aEpZdEIveWxsNVNERmNTRGlIK2hSa0gyNStMK3NkeEtFQU1aYWhybFNYOHVrcU1PV3kvalhXMm02TTlMREJjMzFCOUxGdXY2Z1ZLZy8wU3ppM0tBcjFrR3ExR01qVS9hTGJucTYvbFJ4YzRYZko5OGhUYXJnWCsrRGJNSkJTaVlNSWU5Q2sxWUF4RmtLRUFHM3hiWWFLbUREZ1l5RkswVUdZcGZvV1lYRytmQVBQSTZ0Sm5Od2I3Q2xQN0l5RitEK2JqT3RDcGtoejZDRnJJYS9JNnNGdE5sOGF1RlhHTVRQMzRzTndJL0poa2dFdG1EejE0eVNmYVJjVElCSW5tS1BFMzJreHl5RTJUdit0aEtiRVZlUERmVy9ieU1NMUttbTBYZE9iUzdvR0QvTXlwTVhGUFhyQ3dPdG9Zanl5bjdCVjI5L01aZnNWenBMRGRSdHVJWm5icFh6dmxmK2V2OE12WXIvR3FrNEgva1YvRzNjc2Rhekx1eVRNUHNiRmh6ZDFVYWJRYmpGdkRSbWNXSnhSM3pjZkhrVnc5R2ZwYkptZWV2OUYwOFdXOHVEa2FzbHdYNmF2bFdHVTZOUkt6MGcvU0h0Q3k5SjMwby9jYTl6WDNLZmMxOXpuM0JYUUtSTzh1ZDQ3N2hMbkFmYzEvRzltcnpHbHJmZXhaNUdMZG42WlpyckVvaEkyd1ZIaFp5d2piaFVXRXk4aWNNQ0dOQ1VkaUJscTNyK3hhZkw1NDlIUTVqSCthbisxeStMbFlCaWZ1eEF2Uk4vbFZWVk9sd2xDa2RWbTlOT0w1QkU0d2tRMlNNbERaVTk3aFg4NkVpbFUvbFVta1FVenRURTZteDFFRVBoN09tZHFCdEF2djhIZFdwYnJKUzZ0SmozbjBDV2RNNmJ1c056UlYzUzlLVFlocXZOaXFXbXVyb2lLZ1loc2hNam1oVGg5cHRXaHNGNzk3MGovU2JNcnNQRTFzdVI1ejdETUMrUC9Icyt5N2lqclFBbGh5QWdjY2piaGpQeWdmZUJUanpoTnF5MjhFZGtVaDhDK0RVOSt6MnYvb3llSDc5MU9uY3hIT3M1eTJBdFRjN25iL2Y3M1RXUGtEL3F3Qm5qWDhCb0o5OFZRTmNDKzhBQUFBNFpWaEpaazFOQUNvQUFBQUlBQUdIYVFBRUFBQUFBUUFBQUJvQUFBQUFBQUtnQWdBRUFBQUFBUUFBQURxZ0F3QUVBQUFBQVFBQUFCSUFBQUFBY2RMdEN3QUFBemhKUkVGVVdBbnRWMmxJVkZFVVBtL0djUm9iUjhuNjBZOFVsU0RiU01rV1dzU1NJQXpNTVNsSkVBMkxiREUzYkJFS2FzaVNqUG1qaUxSUVpoaU41bzlNSWF2SklLSEJDVXVaakJTcGZ0Z2toWlBrTWpQMkZ1OTU3OXE4eVVRaHNRdVArMzNuZlBlY2QrNjU5ekhEakxFRDVzQlF6SUVhK1JMblRLRSswbzVXdEQrQTRvY0czcVRWTFlJM1J4clFIWG94R25IVXNxMWdTcndDVWhzNng0RS91OTR4WUJjWU13WTlKeTBvQ1N1T0JuSmh0TG9nTms4aitxUkFHci9uMUN2ZWxWeVhEeGFiR1dXTVFna01JOUQzQlM5QlFRZ3FCRUIxMUEwdWNMdWM0ODhvU3BOcWM5RU80T2FMNUp5aWxxd1I1M1oyazlEdmRFR2J2WXVQVjkvOUhGeE9VU2RYNU1UNC9HSXU1NWhiak11K3EydDBHSndqd2hOcWlJTFkyK2xFU3MxVW9aUm5uRmo2YkdEcGZJb3VhNjY0bTJpVUFSbmJENk1uL1g0ZWo0OVhaNk10YThjSnhOTUZ1bnRmUTFLZGtFc2FrenE2VWdmQlNaVXBCSUorVXlvRXFyWElwYUMzeUNxbFBENjc4U0JjYnk3bjhmZitUMkMxdjBPTjJpOEFDdGVsSVo4S2tPWXNNQnZoWHN0TlBveWw0d2xBSWgzUmEwZTVJMHVHV3FPRnE3Ry83eFR4eTgxRkNlZlF0YnRpSCtLMlk0OFFUd2NvaWNrR2hWTHNXNitqandvcmVpZ3p3TkNRZ3pxeWIzUFlYZkl5UWk1RW9sZXBVa04zWVN2UE0xY2x3S1hHRWhnZEhrUi9XTWdhMEtvMFVHMXJnZzc3QjdSeklEaGdNUnhhUGFFZGxFS2UrTTBQaEI4RFgzbEJSdjFwYUU2OWhtTFpRcmtMVG9hUHJ3WjhGU3BDLzNxMjVac2gzTEFXMTVtU2pUdzJkVFpSbThrWlE1YXNtSEtobU1BRGtEMjZXdDFDVUtxRTRwd2pQMEhhTVE5eGdMdHo1TkZvL0NtSkQ2T2srSUo1T29wUEY1SCt5Rk96cDBvNlpEdktpUzdyaXlHdlJyeVhaMXJLd0xBbFM3b2VjVmZ1TThTVEJTWjlLWUIrc21ydk9xTzFCZ1lkL1NocTJGdUdtQU5lQzkyemRCc29Va29oNTY3d1Vhb3lWMExLOHAyd01paVVDc0tSelRmMlU3WVg2WGNvUGhPRXkvbk44UVh2SmNtUkdYZVVRSnhsank1UjZNTmpJU1p5RjZFUVgrNjVCUjgvZDRMMHdRVXpDTGg4NU9ORDBnU3pkN3hvd3dGQ2NmNWpvWnp5VnZ4NTltZVdLSTB3eG1HQWZ3R28xQnFJQ0Y4UHJUbVBvU1d0eXVNck1mLy9wbm5jbDlsckZNL2o3SzFoVW0vK0MxMHlLbjEwNlkxREFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xX1BSRSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiZDkxYzUyODgwZWYwNDliN2I4YWUyMWNhMGFhNmIzZjMiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZX0sIm1heE1zZ1NpemUiOjIwNDgsInBpblV2QXV0aFByb3RvY29scyI6WzFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjEwLCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjk2LCJ0cmFuc3BvcnRzIjpbInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIwLTA3LTE1IiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJLRVktSUQgRklETzLCriBTZWN1cml0eSBLZXkgd2l0aCBVMkYiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDIwMDMxOTAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4wLjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMC4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIwLTA3LTE1In1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMC0wNy0xNSJ9LHsiYWFndWlkIjoiOGVlYzliZjktNDg2Yy00NmRhLTlhNjctMWZiYjRmNjZiOWVkIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI4ZWVjOWJmOS00ODZjLTQ2ZGEtOWE2Ny0xZmJiNGY2NmI5ZWQiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiSElEIENyZXNjZW5kbyA0MDAwIEZJUFMifSwiZGVzY3JpcHRpb24iOiJISUQgQ3Jlc2NlbmRvIDQwMDAgRklQUyIsImFsdGVybmF0aXZlRGVzY3JpcHRpb25zIjp7ImVuLVVTIjoiSElEIENyZXNjZW5kbyA0MDAwIEZJUFMifSwiYXV0aGVudGljYXRvclZlcnNpb24iOjI2MjE0NCwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9LHsibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQyt6Q0NBcUdnQXdJQkFnSVVIM2hkbWtwZTBqSlQrcWFKWHhiNFJROFNuRG93Q2dZSUtvWkl6ajBFQXdJd2F6RUxNQWtHQTFVRUJoTUNWVk14RXpBUkJnTlZCQW9NQ2toSlJDQkhiRzlpWVd3eElqQWdCZ05WQkFzTUdVRjFkR2hsYm5ScFkyRjBiM0lnUVhSMFpYTjBZWFJwYjI0eEl6QWhCZ05WQkFNTUdrWkpSRThnUVhSMFpYTjBZWFJwYjI0Z1VtOXZkQ0JEUVNBeU1CNFhEVEkwTURVd01qRTVNVFExTVZvWERUUTVNRFV3TWpFNU1UUTFNVm93WmpFTE1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBb01Da2hKUkNCSGJHOWlZV3d4SWpBZ0JnTlZCQXNNR1VGMWRHaGxiblJwWTJGMGIzSWdRWFIwWlhOMFlYUnBiMjR4SGpBY0JnTlZCQU1NRlVaSlJFOGdRWFIwWlhOMFlYUnBiMjRnUTBFZ056QlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJGV0FCS0poUG9jWVR1YmZlem9zYWtoSVp5M2Zra2plcmN4Z3dmMTYwOGFwQzliMitvYzdsRVRYMDdmZE9pcDZpRVMveW1kdXgwbkduTDFHa05OUDliU2pnZ0VtTUlJQklqQU9CZ05WSFE4QkFmOEVCQU1DQVlZd0VnWURWUjBUQVFIL0JBZ3dCZ0VCL3dJQkFEQWZCZ05WSFNNRUdEQVdnQlM3NkRwbDkzdkIyaDVGREx2eU1NdlVCeWozaXpBZEJnTlZIUTRFRmdRVXg2S1VrbDk2eXJmWWw0QjBvRWlrTmN3T3Fic3dSQVlEVlIwZkJEMHdPekE1b0RlZ05ZWXphSFIwY0RvdkwyTnliQzVvZVdSeVlXNTBhV1F1WTI5dEwwWkpSRTlCZEhSbGMzUmhkR2x2YmxKdmIzUkRRVEl1WTNKc01IWUdDQ3NHQVFVRkJ3RUJCR293YURBL0JnZ3JCZ0VGQlFjd0FvWXphSFIwY0RvdkwyTnliQzVvZVdSeVlXNTBhV1F1WTI5dEwwWkpSRTlCZEhSbGMzUmhkR2x2YmxKdmIzUkRRVEl1Y0Rkak1DVUdDQ3NHQVFVRkJ6QUJoaGxvZEhSd09pOHZiMk56Y0M1b2VXUnlZVzUwYVdRdVkyOXRNQW9HQ0NxR1NNNDlCQU1DQTBnQU1FVUNJRTRBZ1dNODVzaWJZNGFQR0ZQQis3STlMSWExMHQ1Ti9mVFNhT1Baby96cUFpRUFyRVN1aWMwb2wybk5LRjdUK0RMRHlVOENtOVZSUnNVcFBGOVZHaEdhUjNrPSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFWTUFBQUNzQ0FZQUFBREcrRThNQUFBQUlHTklVazBBQUhvbEFBQ0Fnd0FBK2Y4QUFJRHBBQUIxTUFBQTZtQUFBRHFZQUFBWGI1SmZ4VVlBQUFBSmNFaFpjd0FBRDJBQUFBOWdBWHA0UlkwQUFBeWdTVVJCVkhoZTdaMS9iSlRsSGNCdmpoak5jQzRPK2RYZVhWdFVUTXppUDdvWVhaWTUxSWtLZDFmTm5GSGo1b2hCbUE3ajJNUnNab2xteGhoTkpvcnQyNEtnc2lGc2ltN1RBZE1ZUkZRRUZUY1Z4dy9yd0FFRlJDaFErdXVlUGMvMXFRUDNUTnMrMzN2ZXUrdm5rM3pTNDJnZm52ZTl0NTgrNzczWEl3RUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVVFcGtHNi9YUHBuSVJSOGdJaDV0NDFyOWNZYXRCZndQOVEzbjZ4MjBUWnRQMURjcFJNVFBOZGVVMTR1dVZ0Mk1xMjFGQmt4dE1qbXJMcFZxMFI4MzExWlgzMnJ2TG1NS1AyMzBqcW1QM0RzTkVmSHp6RVc3RXhmT0dXbUw4b1drazhrZjFxWFNQWFhWcWFYSlVhUE9xS21xT3JNdW1mcHJiVExWblVxbExyZWZWa1pNbVAxMS9aT2x3N2x6RUJFSG9qbXJ6VVpUYlYzK0wzVmp4MDR3SVIwOWV2VEo0MUtwS2RvYmpDTkhqaHcxZHV6WTVMaDBqZEtyMUxQdHA1Y0JKcVNzUmhGUjB0Nmd6clNWY1hHTURxbXFTU1l6K3ZZd0U4NmFxdFMxdGRYcDY4M3R1akZqVWpWams1UDFLclc5OTlQTGdWelU1ZHdaaUlnK21xQmVPcWZPbHVZbzB1bjBjVHFtWGZhUHc4d0sxZDVPNkZQOHQyclQ2VnYwelMrYnNQYmVXK3Jrb28rY093RVJVY0pjZE1EVzVpaXFxNnVQSDVlcTZWdDFGbGFtT3FJNzYxSTEyMDlKMS9SRjlrdmxFZFA2aG04N054NFJVZEpzd3oyMk9wOWlZcXBYbzUzMmoyWmxtai9wcEpPK3FqOTJwOGVNT2QzZWYweDV4RFRYdE0rNTRZaUlrdWFpRGx1ZEkrazloVThuanRPM0N6RTFkNDRZTVdLTXZuM1EzQjQrZXZqSituYmZLcldFNFhXa2lCakt5NXZQc3VYNWxMcFVhbVp0TXIzZjNLNnRUcjVUdUZOVGwwdytXcE5LM2F6L3JxTzJPajNOM2wyaVRJNm1PamNZRWJFWTVwcWV0ZlU1aXJycTFETzF5ZFNCY1ZXcEcreGRpYnFxNUF5ek90WDNMN1IzbFREMTBYTG5CaU1pRnNOY1UrSFUzVVZ5VlBJTUhkV1ZwOVhXcVZOcmF2UDY5dktxRVZXbjJyOHVjZXFqL2M0TlJrUXNocm1vakY0dk9oQ0lLU0tHMUgwUnFnSWdwb2dZVW1LS2lDZ2dNVVZFRkpDWUlpSUtTRXdSRVFVa3BvaUlBaEpUUkVRQmlTa2lvb0RFRkJGUlFHS0tpQ2dnTVVWRUZKQ1lJaUlLU0V3UkVRVWtwb2lJQWhKVFFTOTdXQ1V1ZUVBbExwd2RWdk52NWlMM25BYnI5eDUwLzF2RjlpS3RhejRETWE3SHdEeitydm4weDZ4Ky9PS1lkekUwMjNHUlBuN01NWFNwM2llVEc5M2JYR2tTVXpsdm52dXlpb3ZqcnB6bm5OT2cxQWYvdXMyNzdNaGgyZm5Kb2Q1dlFOZTgrcVArSm82TGFkRXE5NXo2NGRldVhXQkhxUXc2dTN0VVczdW4ycnhqbjFxOVlhZGFzbnF6dXFuNVpYWHlOUXRVNHVLSFZDSlRnWUVscG5LYWI2YTRxSlNZZnJUblFObkc5SWFIWDNMUHFSK2VxQ016Vk5pei83QmE4ZFpXZGVWOXo2dkVCTDJLclpTd0VsTTVpYWsveEhSbzBkblZvNTVkOTZFYWYrTWl2NmRKU2tGaUtpY3g5WWVZRGwzZWJ0bWp6cHUxMU8veGoxTmlLaWN4OVllWXdodGJkcWxUcHVxVnFya281OWhYSlNzeGxaT1kra05Nd3pQcnNUWHF6c1Z2cUx1V3ZLRXlkeTlUdVh1V3ExOHVmTDF3MzcxTDE2c1Y2N2NWTGlhRnBDZWZWNCsrK0UrVnVHQzJjMytWcE1SVVRtTHFEekVOVDJMQ2IvVXFzRkVsTWczL25aTzVLRlM0VHp0SlB4Nlh6bEZWVXhhcUtYTldxby9iRHR1dkxENjcyOXJWTjM2NnhJVHFxUDFWa2hKVE9ZbXBQOFEwUElYWGhqcm01RlJIN1pqSkRlcU8zNisxWDExOHVudDYxQzJQck5iSDVSR3hMMFdKcVp6RTFCOWlHcDRCeGJSUEhiWkpkeSt6STRSaC9ndnZGMWJJenZtVWdzUlVUbUxxRHpFTno2Qmlhc3cwcWgvcjAvNlFQUG5xQjM3SFJ6RWxwbklTVTMrSWFYZ0dIVk5qTmxKLy8zQ1BIU2tNVDcvV1VwcEJKYVp5RWxOL2lHbDR2R0txSGYrVHhYYWtjUHp4RmIxQ0xiWG5VSW1wbk1UVUgySWFIdCtZbXFpOXQyMnZIUzBjUDF2d3FucytjVWxNNVNTbS9oRFQ4SGpITkJlcDgyNS8ybzRXam53K3I4WlBYK3llVXh3U1V6bUpxVC9FTkR6ZU1kVis1YXBIN0doaDJYZXdRMlQrSWhKVE9ZbXBQOFEwUENJeG1tUk85VCt4STRibG1UVXRoZFd4YzE0aEphWnlFbE4vaUdsNFJHS2FqZFF0ODE2eEk0Wm4rRldDeC85Z0phWnlFbE4vaUdsNHBFNlR6NXl4eEk0WW52Yy8ydHY3NjYrT2VRV1RtTXBKVFAwaHB1R1JpdW5vNngrM0k4YkRpT3NlZGM0cm1NUlVUbUxxRHpFTmoxUk1oMTNSYkVlTUIzUE14dnJjS1RHVms1ajZRMHpESXhWVGN4R3FxN3ZiamhxZXJ1NGV1VzBaak1SVVRtTHFEekVOajFpQTlIR3pkbE9ySFRVZWJwMGY0d3Y1aWFtY3hOUWZZaG9lc1pobUd0WENsUnZ0cVBHd2JiYytmdUo2aDM1aUtpY3g5WWVZaGtjc3BqcGl0ejIyeG80YUQrMGRYU294TWFhMzZTT21jaEpUZjRocGVDUmpHdWRyVGZ1STdhbytNWlV6enBoKzUxZC9VdWZPZWxyRWIvNzhLYlVoaGpldU1CRFQ4SWpGTktiZjBmOHN0ejIreGoyL1lrdE01WXd6cHBVQ01RMlBXRXkxNTl5MjFJNGFINnZlM2U2Y1c5RWxwbklTVTMrSWFYZ3FMYVpiNDdvSVJVemxKS2IrRU5Qd1ZGcE10Kzg5MlB1L3Fqcm1WMVNKcVp6RTFCOWlHcDVLaSttdWZlMHFsbmZoSjZaeUVsTi9pR2w0S2kybWhmYzR2Y3pqR0Jxc3hGUk9ZdW9QTVExUHhaM21mOHhwdml6RXRDd2hwdUdwdEpqdTJIdUltSXBDVE1zU1locWVTb3ZwQnp2M203QTU1MWRVaWFtY2NjYlV2TUhFNjBLdTJiaFRIV2p2c2lPSGhaaUdwOUppdW1UMVp1ZmNpaTR4bFRQT21CNXJmaEtiSjkwbHZQZ2g5ZnJHZU43OWg1aUdSeXltSmZJYlVQWDNMSGZQcjlnU1V6bmpqQ20vbTI4bHBnTkdMS1lsOHJ2NXNaemlHNG1wbk1UVUgySWFIc21ZVG8vNXVzSCtRNTI5WjFldStSVmJZaW9uTWZXSG1JWkhMS2FaUnJYb3BVMTIxSGhZMzdLYmxhazR4SFR3RXROQlFVd2IxWXIxMit5bzhYRDJ6S1h1dVlXUW1NcEpUUDBocHVFUmkrbmtCdFg2eVNFN2FuamEydlVwL2lVeHZURzBrWmpLU1V6OUlhYmhrWHpPTkU2ZVdMWEpQYTlRRWxNNWlhay94RFE4VWpFOThacjVkc1R3OVBUazQzbmJ2U01scG5JU1UzK0lhWGlrWW5ycTlDZnNpT0g1eTdwL21aZzU1eFZNWWlvbk1mV0htSVpISktZNlpKZmMrWndkTVN5SE83djFNUlBqYzZWOUVsTTVpYWsveERROElqSE5OS29scTdmWUVjTXlyWEdWZTA2aEphWnlFbE4vaUdsNFJHSWEwOFduVGR2M3hmY2kvYzlLVE9Va3B2NFEwL0JJeEhUOHRFVjJ0SEMwZCtqVGUzMnN1dVlUaThSVVRtTHFEekVOajNkTTlTbiszT2MzMk5IQ1lLN2Vuelh6U2ZkODRwS1l5a2xNL1NHbTRmR042ZkFmekxNamhXUEd2SmVkYzRsVllpb25NZldIbUliSEs2YVRHOVRjdjRWZGxkNitjSTBKbDNzK2NVcE01U1NtL2hEVDhBdzZwdGxJblgvSG4rMG9ZYmlwZVZVOC95VkpmeVNtY2hKVGY0aHBlQVlWMDB5RE92ZjJaK3dJeGFlN0o2OStOUHZGMGx5UjlrbE01U1NtL2hEVDhQUTdwaVprK3JUZUhHdjNQclhlZm5YeE9kamVxY1pOWGVTZVV5bEpUT1VrcHY0UTAvQWt2blYvNzdzdGZkYUpENmxoVnpTckU2K2VyMDYvYWJISzNMMWMvU0h3Qy9PWHZibTFNQS9YUGlzNWlhbWN4TlFmWWdxR2c0YzcxVlgzUDE5WUNidjJWMGxLVE9Va3B2NFEwNkZOUjFlM2Vualp1eXJ4M1FlYys2bWtKYVp5RWxOL2lPblFwTDJ6U3pXdDJOQjdTbC9LRjVrK1QySXFKekgxaDVnT0hmTDV2SHE3WlkrYU1tZWxTbHlnVjZMbEd0RStpYW1jeE5RZllsclpmTngyV0sxNmI0ZTYwYnpUVTdaUkpTWjVQTmFsSmpHVmM5SnZscW5sYjI0dFhJRU02Y3AzL3EyTy9mNWM1NXdHWmFaUlBmanNQNXovVnJIOTNjcU4raHZNNDZMRHhEbnFwWGUzTzhjdXBpdmUycVl1dWVzNTk1ejY0UWxYejFlNzk3ZXJsdGEyaXZETkxidlYyazJ0aFgzejZ5Zldxb2wzUHFkT01EL3dMOWFuOGZxSHRXc2ZsTDNFRkxFRU5LZTQ1dVZJWmxWZTdwcnRNRmZoeStsS3ZJVEVGQkZSUUdLS2lDZ2dNVVZFRkpDWUlpSUtTRXdSRVFVa3BvaUlBaEpUUkVRQmlTa2lvb0RFRkJGUlFHS0tpQ2dnTVVWRUZKQ1lJaUlLU0V3UkVRVWtwb2lJQWhKVFJFUUJLemFtdWFqVnVjR0lpTVh4b0sxUGhaRnRhSEpzTENKaWNjeEZ1Mng5S293cm1zYzdOeGdSc1JobW9sL1krbFFnNWprTTEwWWpJa3FhaS9LMk9oVktydWtGNTRZaklrcWFpM2JZNmxRd3VhamJ1ZkdJaUJMbXRPZmNkN3d0VGdXVGk2WTdkd0Fpb29TNWFKbXR6UkNnUG5yTnVSTVFFWDNNUnEyMk1rT0liT05HNTg1QVJCeU11YVlLZlNsVWY4aEZpL1FPeU91VnFudm5JQ0ora2ViS2ZYM1RXbHVWSVV3Mk9rMnZVbHVKS2lJTzJGeTBONUZ0dXM3V0JBcVlxTlpINi9USGZUcXNuWW42WnIyekVCR1AwS3hDczFHYmJzU1dSS1poZ3EwSEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVCcGtVajhCNEFvbStNYlQrM0pBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiRklET18yXzAiLCJGSURPXzJfMSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiOGVlYzliZjk0ODZjNDZkYTlhNjcxZmJiNGY2NmI5ZWQiLCJvcHRpb25zIjp7InJrIjp0cnVlLCJjbGllbnRQaW4iOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOmZhbHNlLCJhbHdheXNVdiI6dHJ1ZX0sIm1heE1zZ1NpemUiOjUxMCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMl0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6MSwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjo5NCwidHJhbnNwb3J0cyI6WyJuZmMiXSwiZm9yY2VQSU5DaGFuZ2UiOmZhbHNlLCJtaW5QSU5MZW5ndGgiOjYsImZpcm13YXJlVmVyc2lvbiI6MjYyMTQ0LCJjZXJ0aWZpY2F0aW9ucyI6eyJGSVBTLUNNVlAtMyI6Mn0sInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjozMH19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTA2LTA5IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjI2MjE0NCwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJISUQgQ3Jlc2NlbmRvIDQwMDAgRklQUyIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjUwNjA5MDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDYtMDkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MjYyMTQ0fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTEwLTI0In0seyJhYWd1aWQiOiI0YzUwZmYxMC0xMDU3LTRmYzYtYjhlZC00M2E1Mjk1MzBjM2MiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjRjNTBmZjEwLTEwNTctNGZjNi1iOGVkLTQzYTUyOTUzMGMzYyIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJJbXByb3ZlSUQgQXV0aGVudGljYXRvciJ9LCJkZXNjcmlwdGlvbiI6IkltcHJvdmVJRCBBdXRoZW50aWNhdG9yIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjQ1LCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH0seyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNiVENDQWhPZ0F3SUJBZ0lKQUtNOUZxazArWDkvTUFvR0NDcUdTTTQ5QkFNQ01JR1JNUXN3Q1FZRFZRUUdFd0pWVXpFUk1BOEdBMVVFQ0F3SVZtbHlaMmx1YVdFeEVEQU9CZ05WQkFjTUIwRnphR0oxY200eEdEQVdCZ05WQkFvTUQwbHRjSEp2ZG1WSlJDd2dTVzVqTGpFaU1DQUdBMVVFQ3d3WlFYVjBhR1Z1ZEdsallYUnZjaUJCZEhSbGMzUmhkR2x2YmpFZk1CMEdBMVVFQXd3V1NXMXdjbTkyWlVsRUlFWkpSRThnVW05dmRDQkRRVEFnRncweU1qRXlNREV3T1RJNU5UaGFHQTh5TURVeU1URXlNekE1TWprMU9Gb3dnWkV4Q3pBSkJnTlZCQVlUQWxWVE1SRXdEd1lEVlFRSURBaFdhWEpuYVc1cFlURVFNQTRHQTFVRUJ3d0hRWE5vWW5WeWJqRVlNQllHQTFVRUNnd1BTVzF3Y205MlpVbEVMQ0JKYm1NdU1TSXdJQVlEVlFRTERCbEJkWFJvWlc1MGFXTmhkRzl5SUVGMGRHVnpkR0YwYVc5dU1SOHdIUVlEVlFRRERCWkpiWEJ5YjNabFNVUWdSa2xFVHlCU2IyOTBJRU5CTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFZlgwc0Z5a2l2Q0c5NVBpNWpXV2cwTXNhMHhvWHFHNVIrNlhvaGtQU09XcW1jSlcrQ2tDNERXT0FBRHpERFladWh4MHMxQi9VazJCb1ZpOW1SSXFhZ3FOUU1FNHdIUVlEVlIwT0JCWUVGTUpwS2gzWGNmUk5pWFZXZjZQbnVkWmkyTXMzTUI4R0ExVWRJd1FZTUJhQUZNSnBLaDNYY2ZSTmlYVldmNlBudWRaaTJNczNNQXdHQTFVZEV3UUZNQU1CQWY4d0NnWUlLb1pJemowRUF3SURTQUF3UlFJZ005MFlWMFRUMzlWN0JEeG5mRktKYmpVL0h2RW5Kc2tjRmdXVjkvdEtyZmtDSVFEZkNDVGZDendZUldKcFhydU44d1JmNERZMUVhNjRnampJOWo1bGxoSVB0dz09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWdDQUlBQUFEOEdPMmpBQUFBQ1hCSVdYTUFBQzRqQUFBdUl3RjRwVDkyQUFBS1QybERRMUJRYUc5MGIzTm9iM0FnU1VORElIQnliMlpwYkdVQUFIamFuVk5uVkZQcEZqMzMzdlJDUzRpQWxFdHZVaFVJSUZKQ2k0QVVrU1lxSVFrUVNvZ2hvZGtWVWNFUlJVVUVHOGlnaUFPT2pvQ01GVkVzRElvSzJBZmtJYUtPZzZPSWlzcjc0WHVqYTlhODkrYk4vclhYUHVlczg1Mnp6d2ZBQ0F5V1NETlJOWUFNcVVJZUVlQ0R4OFRHNGVRdVFJRUtKSEFBRUFpelpDRnovU01CQVBoK1BEd3JJc0FIdmdBQmVOTUxDQURBVFp2QU1CeUgvdy9xUXBsY0FZQ0VBY0Iwa1RoTENJQVVBRUI2amtLbUFFQkdBWUNkbUNaVEFLQUVBR0RMWTJMakFGQXRBR0FuZitiVEFJQ2QrSmw3QVFCYmxDRVZBYUNSQUNBVFpZaEVBR2c3QUt6UFZvcEZBRmd3QUJSbVM4UTVBTmd0QURCSlYyWklBTEMzQU1ET0VBdXlBQWdNQURCUmlJVXBBQVI3QUdESUl5TjRBSVNaQUJSRzhsYzg4U3V1RU9jcUFBQjRtYkk4dVNRNVJZRmJDQzF4QjFkWExoNG96a2tYS3hRMllRSmhta0F1d25tWkdUS0JOQS9nODh3QUFLQ1JGUkhnZy9QOWVNNE9yczdPTm82MkRsOHQ2cjhHL3lKaVl1UCs1YytyY0VBQUFPRjBmdEgrTEMrekdvQTdCb0J0L3FJbDdnUm9YZ3VnZGZlTFpySVBRTFVBb09uYVYvTncrSDQ4UEVXaGtMbloyZVhrNU5oS3hFSmJZY3BYZmY1bndsL0FWLzFzK1g0OC9QZjE0TDdpSklFeVhZRkhCUGpnd3N6MFRLVWN6NUlKaEdMYzVvOUgvTGNMLy93ZDB5TEVTV0s1V0NvVTQxRVNjWTVFbW96ek1xVWlpVUtTS2NVbDB2OWs0dDhzK3dNKzN6VUFzR28rQVh1UkxhaGRZd1AyU3ljUVdIVEE0dmNBQVBLN2I4SFVLQWdEZ0dpRDRjOTMvKzgvL1VlZ0pRQ0Faa21TY1FBQVhrUWtMbFRLc3ovSENBQUFSS0NCS3JCQkcvVEJHQ3pBQmh6QkJkekJDL3hnTm9SQ0pNVENRaEJDQ21TQUhISmdLYXlDUWlpR3piQWRLbUF2MUVBZE5NQlJhSWFUY0E0dXdsVzREajF3RC9waENKN0JLTHlCQ1FSQnlBZ1RZU0hhaUFGaWlsZ2pqZ2dYbVlYNEljRklCQktMSkNESmlCUlJJa3VSTlVneFVvcFVJRlZJSGZJOWNnSTVoMXhHdXBFN3lBQXlndnlHdkVjeGxJR3lVVDNVRExWRHVhZzNHb1JHb2d2UVpIUXhtbzhXb0p2UWNyUWFQWXcyb2VmUXEyZ1AybzgrUThjd3dPZ1lCelBFYkRBdXhzTkNzVGdzQ1pOank3RWlyQXlyeGhxd1Zxd0R1NG4xWTgreGR3UVNnVVhBQ1RZRWQwSWdZUjVCU0ZoTVdFN1lTS2dnSENRMEVkb0pOd2tEaEZIQ0p5S1RxRXUwSnJvUitjUVlZakl4aDFoSUxDUFdFbzhUTHhCN2lFUEVOeVFTaVVNeUo3bVFBa214cEZUU0V0SkcwbTVTSStrc3FaczBTQm9qazhuYVpHdXlCem1VTENBcnlJWGtuZVRENURQa0crUWg4bHNLbldKQWNhVDRVK0lvVXNwcVNobmxFT1UwNVFabG1ESkJWYU9hVXQyb29WUVJOWTlhUXEyaHRsS3ZVWWVvRXpSMW1qbk5neFpKUzZXdG9wWFRHbWdYYVBkcHIraDB1aEhkbFI1T2w5Qlgwc3ZwUitpWDZBUDBkd3dOaGhXRHg0aG5LQm1iR0FjWVp4bDNHSytZVEtZWjA0c1p4MVF3TnpIcm1PZVpENWx2VlZncXRpcDhGWkhLQ3BWS2xTYVZHeW92VkttcXBxcmVxZ3RWODFYTFZJK3BYbE45cmtaVk0xUGpxUW5VbHF0VnFwMVE2MU1iVTJlcE82aUhxbWVvYjFRL3BINVovWWtHV2NOTXcwOURwRkdnc1YvanZNWWdDMk1aczNnc0lXc05xNFoxZ1RYRUpySE4yWHgyS3J1WS9SMjdpejJxcWFFNVF6TktNMWV6VXZPVVpqOEg0NWh4K0p4MFRnbm5LS2VYODM2SzNoVHZLZUlwRzZZMFRMa3haVnhycXBhWGxsaXJTS3RScTBmcnZUYXU3YWVkcHIxRnUxbjdnUTVCeDBvblhDZEhaNC9PQlozblU5bFQzYWNLcHhaTlBUcjFyaTZxYTZVYm9idEVkNzl1cCs2WW5yNWVnSjVNYjZmZWViM24raHg5TC8xVS9XMzZwL1ZIREZnR3N3d2tCdHNNemhnOHhUVnhiendkTDhmYjhWRkRYY05BUTZWaGxXR1g0WVNSdWRFOG85VkdqVVlQakduR1hPTWs0MjNHYmNhakpnWW1JU1pMVGVwTjdwcFNUYm1tS2FZN1REdE14ODNNemFMTjFwazFtejB4MXpMbm0rZWIxNXZmdDJCYWVGb3N0cWkydUdWSnN1UmFwbG51dHJ4dWhWbzVXYVZZVlZwZHMwYXRuYTBsMXJ1dHU2Y1JwN2xPazA2cm50Wm53N0R4dHNtMnFiY1pzT1hZQnR1dXRtMjJmV0ZuWWhkbnQ4V3V3KzZUdlpOOXVuMk4vVDBIRFlmWkRxc2RXaDErYzdSeUZEcFdPdDZhenB6dVAzM0Y5SmJwTDJkWXp4RFAyRFBqdGhQTEtjUnBuVk9iMDBkbkYyZTVjNFB6aUl1SlM0TExMcGMrTHBzYnh0M0l2ZVJLZFBWeFhlRjYwdldkbTdPYnd1Mm8yNi91TnU1cDdvZmNuOHcwbnltZVdUTnowTVBJUStCUjVkRS9DNStWTUd2ZnJINVBRMCtCWjdYbkl5OWpMNUZYcmRld3Q2VjNxdmRoN3hjKzlqNXluK00rNHp3MzNqTGVXVi9NTjhDM3lMZkxUOE52bmwrRjMwTi9JLzlrLzNyLzBRQ25nQ1VCWndPSmdVR0JXd0w3K0hwOEliK09QenJiWmZheTJlMUJqS0M1UVJWQmo0S3RndVhCclNGb3lPeVFyU0gzNTVqT2tjNXBEb1ZRZnVqVzBBZGg1bUdMdzM0TUo0V0hoVmVHUDQ1d2lGZ2EwVEdYTlhmUjNFTnozMFQ2UkpaRTNwdG5NVTg1cnkxS05TbytxaTVxUE5vM3VqUzZQOFl1WmxuTTFWaWRXRWxzU3h3NUxpcXVObTVzdnQvODdmT0g0cDNpQytON0Y1Z3Z5RjF3ZWFIT3d2U0ZweGFwTGhJc09wWkFUSWhPT0pUd1FSQXFxQmFNSmZJVGR5V09Dbm5DSGNKbklpL1JOdEdJMkVOY0toNU84a2dxVFhxUzdKRzhOWGtreFRPbExPVzVoQ2Vwa0x4TURVemRtenFlRnBwMklHMHlQVHE5TVlPU2taQnhRcW9oVFpPMlorcG41bVoyeTZ4bGhiTCt4VzZMdHk4ZWxRZkphN09RckFWWkxRcTJRcWJvVkZvbzF5b0hzbWRsVjJhL3pZbktPWmFybml2TjdjeXp5dHVRTjV6dm4vL3RFc0lTNFpLMnBZWkxWeTBkV09hOXJHbzVzanh4ZWRzSzR4VUZLNFpXQnF3OHVJcTJLbTNWVDZ2dFY1ZXVmcjBtZWsxcmdWN0J5b0xCdFFGcjZ3dFZDdVdGZmV2YzErMWRUMWd2V2QrMVlmcUduUnMrRlltS3JoVGJGNWNWZjlnbzNIamxHNGR2eXIrWjNKUzBxYXZFdVdUUFp0Sm02ZWJlTFo1YkRwYXFsK2FYRG00TjJkcTBEZDlXdE8zMTlrWGJMNWZOS051N2c3WkR1YU8vUExpOFphZkp6czA3UDFTa1ZQUlUrbFEyN3RMZHRXSFgrRzdSN2h0N3ZQWTA3TlhiVzd6My9UN0p2dHRWQVZWTjFXYlZaZnRKKzdQM1A2NkpxdW40bHZ0dFhhMU9iWEh0eHdQU0EvMEhJdzYyMTduVTFSM1NQVlJTajlZcjYwY094eCsrL3AzdmR5ME5OZzFWalp6RzRpTndSSG5rNmZjSjMvY2VEVHJhZG94N3JPRUgweDkySFdjZEwycENtdkthUnB0VG12dGJZbHU2VDh3KzBkYnEzbnI4UjlzZkQ1dzBQRmw1U3ZOVXlXbmE2WUxUazJmeXo0eWRsWjE5Zmk3NTNHRGJvclo3NTJQTzMyb1BiKys2RUhUaDBrWC9pK2M3dkR2T1hQSzRkUEt5MitVVFY3aFhtcTg2WDIzcWRPbzgvcFBUVDhlN25MdWFycmxjYTdudWVyMjFlMmIzNlJ1ZU44N2Q5TDE1OFJiLzF0V2VPVDNkdmZONmIvZkY5L1hmRnQxK2NpZjl6c3U3MlhjbjdxMjhUN3hmOUVEdFFkbEQzWWZWUDF2KzNOanYzSDlxd0hlZzg5SGNSL2NHaFlQUC9wSDFqdzlEQlkrWmo4dUdEWWJybmpnK09UbmlQM0w5NmZ5blE4OWt6eWFlRi82aS9zdXVGeFl2ZnZqVjY5Zk8wWmpSb1pmeWw1Ty9iWHlsL2VyQTZ4bXYyOGJDeGg2K3lYZ3pNVjcwVnZ2dHdYZmNkeDN2bzk4UFQrUjhJSDhvLzJqNXNmVlQwS2Y3a3htVGsvOEVBNWp6L0dNekxkc0FBQUFnWTBoU1RRQUFlaVVBQUlDREFBRDUvd0FBZ09rQUFIVXdBQURxWUFBQU9wZ0FBQmR2a2wvRlJnQUFBdGhKUkVGVWVOcnNsdDlMazFFWXg3L3ZOdGUwdlhPazd5UzdxeVdCWXZuaklrdEdVMHZEQ3drdFY0S1hwdjN3Qi80QkJpSWEvUUMxd2prVlV4TnNVdXV1emQxazZpQkxDeElGemNEWE9UWndZOHIyc3IxcnA0dVhadW9nZ3J5SmZTOGVlTDZjNTN3NDUrRTVISW9RZ29PVUNBZXNHQ0FHaUFFQXlYNkxaZG4xOVhXR1lkUnE5VDhna04xcWEyMFZEbFZaY1pVUVlwdVpLUzB0SFRjYTl5d3o2SHVycTZzL3pzNlNQMmtYd0dJMkF6aktxSFE2M2Z0M2s0U1Fwb1lHQU1XRlJYdktMbW9MQUF3T0RQd2RvTGRIRDJCa2FPaDM4NDNKNUhLNTlwVFYxZHdFOEdwOGZQK09TNHRMNXJmbUg2R1FrTzcwb0x1emMyand1U29wMmRCck9DeW5rNUtPOVBYM1oyWmtNQ2twcXl2ZkdJWUJjTCs5dzJxZEtDb3FDZ1FDQUhpZUYyb2ZQM3hrTXIxVzBJcmF1bHB0UVlIUDd3TkY3ZTJCTmw4RElPMzRDUUFOZCt1N3U3b0FTRUFCcUt1cEpZUlU2YTREb0dYeHFhb1VwWndXQTlhSkNVSkk0UVV0Z0ZQcWt3blNRd0Q2OVByb1Z4UU1CdHZiMmlpS2V0RFJ3Zk44S0JUaU9PN1prNmNBK25vTkxNc0N5TW84emZuOUhNZmxuTWtDc0xTNE9EMDFEVUIzOVJvaHhPbDB5aE1TNGlpUjNXNlBiTHN6QjNGeGNiUkNRUWhSSkNaS0pCS3hXQ3lUeWVSeUdvQlVLdjB5L3htQVRsY3BpNCtYeVdRYWpRYUF6K2VibXB3RVVGNVJEa0NsVWhWcUMzZ1NucCtiaXo0SG5OOFB3Ty8zUjV4QWdNdk56azVta2tXVUNNRHE2bmZCZHpnMkJEQ3RVQUJ3T2wyL2ZJZEFpZzRJQm9PUktJam5lUVZOYjNtM2lpK1hpRUhwK3d6cEdlbHV0L3VsMFFnZ0VBaVVYU203ZGVmMnZaYVd0TFMwaFlXdkgrWSs1Wi9OeThuTmpmNVVTQ1NTU0l3NDRYRFk0ZGhRS3BYRHc4TmlpcXB2YkJ3ZGVWRjFvd29BdTdhV21uck0wS1BmM3Q2K1ZGTGMxTng4UHUvYzZOaVlTQ1NLUHNrZXQyZDVlZG5qOFVRY3I5ZHJYN2U3M1p0Q3lySnJWcXMxSEE0VFFwWlhWcnhlcitDN045MFdpOFZtcyswZkN5cjJxNGdCWW9EL0FQQnpBSTZWTnFHUVBVcW5BQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJjcmVkQmxvYiIsIm1pblBpbkxlbmd0aCJdLCJhYWd1aWQiOiI0YzUwZmYxMDEwNTc0ZmM2YjhlZDQzYTUyOTUzMGMzYyIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImVwIjpmYWxzZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjp0cnVlLCJhbHdheXNVdiI6ZmFsc2V9LCJtYXhNc2dTaXplIjoxMDI0LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxLDJdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjEwLCJ0cmFuc3BvcnRzIjpbIm5mYyJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XSwiZm9yY2VQSU5DaGFuZ2UiOmZhbHNlLCJtaW5QSU5MZW5ndGgiOjQsIm1heENyZWRCbG9iTGVuZ3RoIjozMiwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjF9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMy0wMS0xNyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjo0NSwidXJsIjoiaHR0cHM6Ly93d3cuaW1wcm92ZWlkLmNvbS8iLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IkltcHJvdmVJRCBBdXRoZW50aWNhdG9yIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyMzAxMTcwMDIiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMy0wMS0xNyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjo0NX1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMy0wNS0xOCJ9LHsiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbImIwZjQ5ODNmYzAxMGM3MmNlMzNhNjZiMjU5MjU1MTdlNDRkOTg0ODMiXSwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiYjBmNDk4M2ZjMDEwYzcyY2UzM2E2NmIyNTkyNTUxN2U0NGQ5ODQ4MyJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiVC1TaGllbGQgVHJ1c3RTRUMgdTJmIn0sImRlc2NyaXB0aW9uIjoiVC1TaGllbGQgVHJ1c3RTRUMgdTJmIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH0seyJtYWpvciI6MSwibWlub3IiOjF9LHsibWFqb3IiOjEsIm1pbm9yIjoyfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCIsImJhRGVzYyI6eyJzZWxmQXR0ZXN0ZWRGUlIiOjAuMCwic2VsZkF0dGVzdGVkRkFSIjoyRS0wNSwiaUFQQVJUaHJlc2hvbGQiOjAuMCwibWF4VGVtcGxhdGVzIjo1LCJtYXhSZXRyaWVzIjo1LCJibG9ja1Nsb3dkb3duIjozMH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MTAsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6MCwiYmxvY2tTbG93ZG93biI6MH19LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDV0RDQ0FmK2dBd0lCQWdJVVprb2hHVTZBK0YyQktiRzU5V0p5ZGFQTm8xY3dDZ1lJS29aSXpqMEVBd0l3Z1lBeEN6QUpCZ05WQkFZVEFrVkhNUTR3REFZRFZRUUlEQVZEWVdseWJ6RVJNQThHQTFVRUNnd0lWSEoxYzNSelpXTXhFREFPQmdOVkJBc01CMUp2YjNRZ1EwRXhGVEFUQmdOVkJBTU1ESFJ5ZFhOMGMyVmpMbTVsZERFbE1DTUdDU3FHU0liM0RRRUpBUllXYlM1bmFHRjBkR0Z6UUhSeWRYTjBjMlZqTG01bGREQWdGdzB5TkRBNU1Ea3dOelEzTVRaYUdBOHlNRGMwTURneU9EQTNORGN4Tmxvd2dZQXhDekFKQmdOVkJBWVRBa1ZITVE0d0RBWURWUVFJREFWRFlXbHliekVSTUE4R0ExVUVDZ3dJVkhKMWMzUnpaV014RURBT0JnTlZCQXNNQjFKdmIzUWdRMEV4RlRBVEJnTlZCQU1NREhSeWRYTjBjMlZqTG01bGRERWxNQ01HQ1NxR1NJYjNEUUVKQVJZV2JTNW5hR0YwZEdGelFIUnlkWE4wYzJWakxtNWxkREJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCR1E0T3h4VElBbVFicnpoOThDNjJveWs3SHdOQUZtUDNjRHE4b21IRXVRYnkzbVRxVzZxa0RPWXNBZjFKWUNzTUQrQUFtL3hjOFUwQmNqaXZzZEI4OFdqVXpCUk1CMEdBMVVkRGdRV0JCUjViOGR1ak4yaGkxdDJZUG9qbFRWSlRHS3RlakFmQmdOVkhTTUVHREFXZ0JSNWI4ZHVqTjJoaTF0MllQb2psVFZKVEdLdGVqQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01Bb0dDQ3FHU000OUJBTUNBMGNBTUVRQ0lIL1VSQnZtMmFlMmMzUjlZcU43MGRESXAyQy9uNHg1YXdOcGV5NHJTc1ltQWlCa1E3VDZjdytkWnllWndEYWxLUzE4VGJBSjNRZ3djem8vbUdhTGovTnlyQT09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQ1hrQUFBY2tDQVlBQUFBVEFKVnJBQUFBQ1hCSVdYTUFBQzRqQUFBdUl3RjRwVDkyQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQkY2bEpSRUZVZU5yczNVMklYZWQ1d1BIWHhpV09hWmhCR0VJd1JoTXFLZENtdVlNV3gxNFVlMUR3cWtvbE1BN1o1T3BxWTd3cEhrTktzd2lKREE3WnVhT2xuWnFNRk5kcHFNRWpLTlFPaGh4NWw0L2VhSmJHQW84UUZrMEN5VXdFcVpWRG1KN2pNMk5OWlVuemRlZk9jODc1L2VEbGdMN20zdWRlN2Y0ODd6MnJxNnNKQUFBQUFBQUFBQUNBbU80MUFnQUFBQUFBQUFBQWdMaEVYZ0FBQUFBQUFBQUFBSUdKdkFBQUFBQUFBQUFBQUFJVGVRRUFBQUFBQUFBQUFBUW04Z0lBQUFBQUFBQUFBQWhNNUFVQUFBQUFBQUFBQUJDWXlBc0FBQUFBQUFBQUFDQXdrUmNBQUFBQUFBQUFBRUJnSWk4QUFBQUFBQUFBQUlEQVJGNEFBQUFBQUFBQUFBQ0JpYndBQUFBQUFBQUFBQUFDRTNrQkFBQUFBQUFBQUFBRUp2SUNBQUFBQUFBQUFBQUlUT1FGQUFBQUFBQUFBQUFRbU1nTEFBQUFBQUFBQUFBZ01KRVhBQUFBQUFBQUFBQkFZQ0l2QUFBQUFBQUFBQUNBd0VSZUFBQUFBQUFBQUFBQWdZbThBQUFBQUFBQUFBQUFBaE41QVFBQUFBQUFBQUFBQkNieUFnQUFBQUFBQUFBQUNFemtCUUFBQUFBQUFBQUFFSmpJQ3dBQUFBQUFBQUFBSURDUkZ3QUFBQUFBQUFBQVFHQWlMd0FBQUFBQUFBQUFnTUJFWGdBQUFBQUFBQUFBQUlHSnZBQUFBQUFBQUFBQUFBSVRlUUVBQUFBQUFBQUFBQVFtOGdJQUFBQUFBQUFBQUFoTTVBVUFBQUFBQUFBQUFCQ1l5QXNBQUFBQUFBQUFBQ0F3a1JjQUFBQUFBQUFBQUVCZ0lpOEFBQUFBQUFBQUFJREFSRjRBQUFBQUFBQUFBQUNCaWJ3QUFBQUFBQUFBQUFBQ0Uza0JBQUFBQUFBQUFBQUVKdklDQUFBQUFBQUFBQUFJVE9RRkFBQUFBQUFBQUFBUW1NZ0xBQUFBQUFBQUFBQWdNSkVYQUFBQUFBQUFBQUJBWUNJdkFBQUFBQUFBQUFDQXdFUmVBQUFBQUFBQUFBQUFnWW04QUFBQUFBQUFBQUFBQWhONUFRQUFBQUFBQUFBQUJDYnlBZ0FBQUFBQUFBQUFDRXprQlFBQUFBQUFBQUFBRUpqSUN3QUFBQUFBQUFBQUlEQ1JGd0FBQUFBQUFBQUFRR0FpTHdBQUFBQUFBQUFBZ01CRVhnQUFBQUFBQUFBQUFJR0p2QUFBQUFBQUFBQUFBQUlUZVFFQUFBQUFBQUFBQUFRbThnSUFBQUFBQUFBQUFBaE01QVVBQUFBQUFBQUFBQkNZeUFzQUFBQUFBQUFBQUNBd2tSY0FBQUFBQUFBQUFFQmdJaThBQUFBQUFBQUFBSURBUkY0QUFBQUFBQUFBQUFDQmlid0FBQUFBQUFBQUFBQUNFM2tCQUFBQUFBQUFBQUFFSnZJQ0FBQUFBQUFBQUFBSVRPUUZBQUFBQUFBQUFBQVFtTWdMQUFBQUFBQUFBQUFnTUpFWEFBQUFBQUFBQUFCQVlDSXZBQUFBQUFBQUFBQ0F3RVJlQUFBQUFBQUFBQUFBZ1ltOEFBQUFBQUFBQUFBQUFoTjVBUUFBQUFBQUFBQUFCQ2J5QWdBQUFBQUFBQUFBQ0V6a0JRQUFBQUFBQUFBQUVKaklDd0FBQUFBQUFBQUFJRENSRndBQUFBQUFBQUFBUUdBaUx3QUFBQUFBQUFBQWdNQkVYZ0FBQUFBQUFBQUFBSUdKdkFBQUFBQUFBQUFBQUFJVGVRRUFBQUFBQUFBQUFBUW04Z0lBQUFBQUFBQUFBQWhNNUFVQUFBQUFBQUFBQUJDWXlBc0FBQUFBQUFBQUFDQXdrUmNBQUFBQUFBQUFBRUJnSWk4QUFBQUFBQUFBQUlEQVJGNEFBQUFBQUFBQUFBQ0JpYndBQUFBQUFBQUFBQUFDRTNrQkFBQUFBQUFBQUFBRUp2SUNBQUFBQUFBQUFBQUlUT1FGQUFBQUFBQUFBQUFRbU1nTEFBQUFBQUFBQUFBZ01KRVhBQUFBQUFBQUFBQkFZQ0l2QUFBQUFBQUFBQUNBd0VSZUFBQUFBQUFBQUFBQWdZbThBQUFBQUFBQUFBQUFBaE41QVFBQUFBQUFBQUFBQkNieUFnQUFBQUFBQUFBQUNFemtCUUFBQUFBQUFBQUFFSmpJQ3dBQUFBQUFBQUFBSURDUkZ3QUFBQUFBQUFBQVFHQWlMd0FBQUFBQUFBQUFnTUJFWGdBQUFBQUFBQUFBQUlHSnZBQUFBQUFBQUFBQUFBSVRlUUVBQUFBQUFBQUFBQVFtOGdJQUFBQUFBQUFBQUFoTTVBVUFBQUFBQUFBQUFCQ1l5QXNBQUFBQUFBQUFBQ0F3a1JjQUFBQUFBQUFBQUVCZ0lpOEFBQUFBQUFBQUFJREFSRjRBQUFBQUFBQUFBQUNCaWJ3QUFBQUFBQUFBQUFBQ0Uza0JBQUFBQUFBQUFBQUVKdklDQUFBQUFBQUFBQUFJVE9RRkFBQUFBQUFBQUFBUW1NZ0xBQUFBQUFBQUFBQWdNSkVYQUFBQUFBQUFBQUJBWUNJdkFBQUFBQUFBQUFDQXdFUmVBQUFBQUFBQUFBQUFnWW04QUFBQUFBQUFBQUFBQWhONUFRQUFBQUFBQUFBQUJDYnlBZ0FBQUFBQUFBQUFDRXprQlFBQUFBQUFBQUFBRUpqSUN3QUFBQUFBQUFBQUlEQ1JGd0FBQUFBQUFBQUFRR0FpTHdBQUFBQUFBQUFBZ01CRVhnQUFBQUFBQUFBQUFJR0p2QUFBQUFBQUFBQUFBQUlUZVFFQUFBQUFBQUFBQUFRbThnSUFBQUFBQUFBQUFBaE01QVVBQUFBQUFBQUFBQkNZeUFzQUFBQUFBQUFBQUNBd2tSY0FBQUFBQUFBQUFFQmdJaThBQUFBQUFBQUFBSURBUkY0QUFBQUFBQUFBQUFDQmlid0FBQUFBQUFBQUFBQUNFM2tCQUFBQUFBQUFBQUFFSnZJQ0FBQUFBQUFBQUFBSVRPUUZBQUFBQUFBQUFBQVFtTWdMQUFBQUFBQUFBQUFnTUpFWEFBQUFBQUFBQUFCQVlDSXZBQUFBQUFBQUFBQ0F3RVJlQUFBQUFBQUFBQUFBZ1ltOEFBQUFBQUFBQUFBQUFoTjVBUUFBQUFBQUFBQUFCQ2J5QWdBQUFBQUFBQUFBQ0V6a0JRQUFBQUFBQUFBQUVKaklDd0FBQUFBQUFBQUFJRENSRndBQUFBQUFBQUFBUUdBaUx3QUFBQUFBQUFBQWdNQkVYZ0FBQUFBQUFBQUFBSUdKdkFBQUFBQUFBQUFBQUFJVGVRRUFBQUFBQUFBQUFBUW04Z0lBQUFBQUFBQUFBQWhNNUFVQUFBQUFBQUFBQUJDWXlBc0FBQUFBQUFBQUFDQXdrUmNBQUFBQUFBQUFBRUJnSWk4QUFBQUFBQUFBQUlEQVJGNEFBQUFBQUFBQUFBQ0JpYndBQUFBQUFBQUFBQUFDRTNrQkFBQUFBQUFBQUFBRUp2SUNBQUFBQUFBQUFBQUlUT1FGQUFBQUFBQUFBQUFRbU1nTEFBQUFBQUFBQUFBZ01KRVhBQUFBQUFBQUFBQkFZQ0l2QUFBQUFBQUFBQUNBd0VSZUFBQUFBQUFBQUFBQWdZbThBQUFBQUFBQUFBQUFBaE41QVFBQUFBQUFBQUFBQkNieUFnQUFBQUFBQUFBQUNFemtCUUFBQUFBQUFBQUFFSmpJQ3dBQUFBQUFBQUFBSURDUkZ3QUFBQUFBQUFBQVFHQWlMd0FBQUFBQUFBQUFnTUJFWGdBQUFBQUFBQUFBQUlHSnZBQUFBQUFBQUFBQUFBSVRlUUVBQUFBQUFBQUFBQVFtOGdJQUFBQUFBQUFBQUFoTTVBVUFBQUFBQUFBQUFCQ1l5QXNBQUFBQUFBQUFBQ0F3a1JjQUFBQUFBQUFBQUVCZ0lpOEFBQUFBQUFBQUFJREFSRjRBQUFBQUFBQUFBQUNCaWJ3QUFBQUFBQUFBQUFBQ0Uza0JBQUFBQUFBQUFBQUVKdklDQUFBQUFBQUFBQUFJVE9RRkFBQUFBQUFBQUFBUW1NZ0xBQUFBQUFBQUFBQWdNSkVYQUFBQUFBQUFBQUJBWUNJdkFBQUFBQUFBQUFDQXdFUmVBQUFBQUFBQUFBQUFnWW04QUFBQUFBQUFBQUFBQWhONUFRQUFBQUFBQUFBQUJDYnlBZ0FBQUFBQUFBQUFDRXprQlFBQUFBQUFBQUFBRUpqSUN3QUFBQUFBQUFBQUlEQ1JGd0FBQUFBQUFBQUFRR0FpTHdBQUFBQUFBQUFBZ01CRVhnQUFBQUFBQUFBQUFJR0p2QUFBQUFBQUFBQUFBQUlUZVFFQUFBQUFBQUFBQUFRbThnSUFBQUFBQUFBQUFBaE01QVVBQUFBQUFBQUFBQkNZeUFzQUFBQUFBQUFBQUNBd2tSY0FBQUFBQUFBQUFFQmdJaThBQUFBQUFBQUFBSURBUkY0QUFBQUFBQUFBQUFDQmlid0FBQUFBQUFBQUFBQUNFM2tCQUFBQUFBQUFBQUFFSnZJQ0FBQUFBQUFBQUFBSVRPUUZBQUFBQUFBQUFBQVFtTWdMQUFBQUFBQUFBQUFnTUpFWEFBQUFBQUFBQUFCQVlDSXZBQUFBQUFBQUFBQ0F3RVJlQUFBQUFBQUFBQUFBZ1ltOEFBQUFBQUFBQUFBQUFoTjVBUUFBQUFBQUFBQUFCQ2J5QWdBQUFBQUFBQUFBQ0V6a0JRQUFBQUFBQUFBQUVKaklDd0FBQUFBQUFBQUFJRENSRndBQUFBQUFBQUFBUUdBaUx3QUFBQUFBQUFBQWdNQkVYZ0FBQUFBQUFBQUFBSUdKdkFBQUFBQUFBQUFBQUFJVGVRRUFBQUFBQUFBQUFBUW04Z0lBQUFBQUFBQUFBQWhNNUFVQUFBQUFBQUFBQUJDWXlBc0FBQUFBQUFBQUFDQXdrUmNBQUFBQUFBQUFBRUJnSWk4QUFBQUFBQUFBQUlEQVJGNEFBQUFBQUFBQUFBQ0JpYndBQUFBQUFBQUFBQUFDRTNrQkFBQUFBQUFBQUFBRUp2SUNBQUFBQUFBQUFBQUlUT1FGQUFBQUFBQUFBQUFRbU1nTEFBQUFBQUFBQUFBZ01KRVhBQUFBQUFBQUFBQkFZQ0l2QUFBQUFBQUFBQUNBd0VSZUFBQUFBQUFBQUFBQWdZbThBQUFBQUFBQUFBQUFBaE41QVFBQUFBQUFBQUFBQkNieUFnQUFBQUFBQUFBQUNFemtCUUFBQUFBQUFBQUFFSmpJQ3dBQUFBQUFBQUFBSURDUkZ3QUFBQUFBQUFBQVFHQWlMd0FBQUFBQUFBQUFnTUJFWGdBQUFBQUFBQUFBQUlHSnZBQUFBQUFBQUFBQUFBSVRlUUVBQUFBQUFBQUFBQVFtOGdJQUFBQUFBQUFBQUFoTTVBVUFBQUFBQUFBQUFCQ1l5QXNBQUFBQUFBQUFBQ0F3a1JjQUFBQUFBQUFBQUVCZ0lpOEFBQUFBQUFBQUFJREFSRjRBQUFBQUFBQUFBQUNCaWJ3QUFBQUFBQUFBQUFBQ0Uza0JBQUFBQUFBQUFBQUVKdklDQUFBQUFBQUFBQUFJVE9RRkFBQUFBQUFBQUFBUW1NZ0xBQUFBQUFBQUFBQWdNSkVYQUFBQUFBQUFBQUJBWUNJdkFBQUFBQUFBQUFDQXdFUmVBQUFBQUFBQUFBQUFnWW04QUFBQUFBQUFBQUFBQWhONUFRQUFBQUFBQUFBQUJDYnlBZ0FBQUFBQUFBQUFDRXprQlFBQUFBQUFBQUFBRUpqSUN3QUFBQUFBQUFBQUlEQ1JGd0FBQUFBQUFBQUFRR0FpTHdBQUFBQUFBQUFBZ01CRVhnQUFBQUFBQUFBQUFJR0p2QUFBQUFBQUFBQUFBQUlUZVFFQUFBQUFBQUFBQUFRbThnSUFBQUFBQUFBQUFBaE01QVVBQUFBQUFBQUFBQkNZeUFzQUFBQUFBQUFBQUNBd2tSY0FBQUFBQUFBQUFFQmdJaThBQUFBQUFBQUFBSURBUkY0QUFBQUFBQUFBQUFDQmlid0FBQUFBQUFBQUFBQUNFM2tCQUFBQUFBQUFBQUFFSnZJQ0FBQUFBQUFBQUFBSVRPUUZBQUFBQUFBQUFBQVFtTWdMQUFBQUFBQUFBQUFnTUpFWEFBQUFBQUFBQUFCQVlDSXZBQUFBQUFBQUFBQ0F3RVJlQUFBQUFBQUFBQUFBZ1ltOEFBQUFBQUFBQUFBQUFoTjVBUUFBQUFBQUFBQUFCQ2J5QWdBQUFBQUFBQUFBQ0V6a0JRQUFBQUFBQUFBQUVKaklDd0FBQUFBQUFBQUFJRENSRndBQUFBQUFBQUFBUUdBaUx3QUFBQUFBQUFBQWdNQkVYZ0FBQUFBQUFBQUFBSUdKdkFBQUFBQUFBQUFBQUFJVGVRRUFBQUFBQUFBQUFBUW04Z0lBQUFBQUFBQUFBQWhNNUFVQUFBQUFBQUFBQUJDWXlBc0FBQUFBQUFBQUFDQXdrUmNBQUFBQUFBQUFBRUJnSWk4QUFBQUFBQUFBQUlEQVJGNEFBQUFBQUFBQUFBQ0JpYndBQUFBQUFBQUFBQUFDRTNrQkFBQUFBQUFBQUFBRUp2SUNBQUFBQUFBQUFBQUlUT1FGQUFBQUFIdmszUjhkUGY2SHQ3S2ZtQVFBQUFBQXV5SHlBZ0FBQUlBOVVPVFo1TlJuNzV0YlhWMTlZdkg4MFlHSkFBQUFBTEJUSWk4QUFBQUFHTEVxOENvZitiMzNwcjlhKzZVZkNMMEFBQUFBMkNtUkZ3QUFBQUNNMEhyZ1ZaN2VMYjlWaFY3ekpnUUFBQURBZG9tOEFBQUFBR0JFN2hKNHJUc2w5QUlBQUFCZ3UwUmVBQUFBQURBQ1JaNU5sNCtsZE9mQWE1M1FDd0FBQUlCdHVXZDFkZFVVQUFBQUFHQVgxZ0t2dkR3VHQvN2VIejljVFV1LytmUHQvdHBpZVdaNi9lR3lDUUlBQUFCd056WjVBUUFBQU1BdUZIazJTSGNJdkRaUmJmektGODhmblRKRkFBQUFBTzVHNUFVQUFBQUFPMVRrMld6NStFSGFmdUMxcmdxOUxpMmVQenB0bWdBQUFBRGNpY2dMQUFBQUFIYWd5TFA1OHZFdkkvaW5xa0NzMnVnMU1GVUFBQUFBYnVlZTFkVlZVd0FBQUFDQUxTcnliTEo4TEpUbjhhMzgrVDkrdUpxV2Z2UG5yZjd6ei9YNnd6bFRCZ0FBQUdBamtSY0FBQUFBYkZHUlo5VzFpdk9wdm1aeFM3WVplVlhPbFdlMjF4OHVtemdBQUFBQUZkYzFBZ0FBQU1BV0ZIbDJzbnprYVJ1QjF3NmRTdlgxalpPbURnQUFBRUJGNUFVQUFBQUFteWp5N0V6NWVLTThFMlA2a1ZWSXRyUjQvdWkwNlFNQUFBRGd1a1lBQUFBQXVJTWl6NnB0V3ZQbE9iSFRmMk1IMXpYZTZuU3ZQNXozYVFBQUFBQjBsOGdMQUFBQUFHNmp5TE5xaTlaODJ1WDFqQ09JdkNybnlqUGI2dytYZlRJQUFBQUEzZU82UmdBQUFBQzRSWkZuSjh0SG5uWVplSTNRcWVyMUxKNC9PdVhUQVFBQUFPZ2VrUmNBQUFBQWJGRGsyVno1ZUtNOEU4RmVXaFdjWFZvOGYvU2tUd2tBQUFDZ1cxelhDQUFBQUFEcG83aHJxbndzcEJGdjd4clJkWTIzT3R2ckQyZDlhZ0FBQUFEZElQSUNBQUFBb1BQV3JtZWNUM3V3dld1UElxL0tZbmxPOXZyREpaOGdBQUFBUUx1NXJoRUFBQUNBVGd0OFBlTm1YTjhJQUFBQTBCRTJlUUVBQUFEUVNYdDFQZU90OW5DVDEwYXVid1FBQUFCb01aRVhBQUFBQUoxVDVObWdmRlFidlBaOGU5ZVlJcTlLZFgzam9OY2ZYdklKQXdBQUFMU0x5QXNBQUFDQXppanliTEo4ekpmbnhMaCs1aGdqcjhwS2VjNzArc001bnpZQUFBQkFlNGk4QUFBQUFPaUVJczltVWgxNEhSem56eDF6NUxYdVFxcTNlaTM3NUFFQUFBQ2E3MTRqQUFBQUFLRHRpanlyTmx2OU5JMDU4TnBIMWFheXBjWHpSMC82OUFFQUFBQ2F6eVl2QUFBQUFGcXJ5TFBwVkcvdjZ1M1hhOWluVFY0Ym5VMzFGWTYyZWdFQUFBQTBsRTFlQUFBQUFMUlNrV2RueXNldjBqNEdYa0U4VzU1TGkrZVB6dmhXQUFBQUFEU1RUVjRBQUFBQXRFcUU3VjBiQmRqa3RaR3RYZ0FBQUFBTlpKTVhBQUFBQUsxUjVObHMrY2lUN1YxM1lxc1hBQUFBUUFQWjVBVUFBQUJBNDBYYjNyVlJzRTFlRzlucUJRQUFBTkFRTm5rQkFBQUEwR2hGbnAwcEg3OUt0bmR0bDYxZUFBQUFBQTFoa3hjQUFBQUFqUlI1ZTlkR2dUZDViV1NyRndBQUFFQmdJaThBQUFBQUdxWElzOG55TVZ1ZTd6VGg5VFlrOHFxc2xHZlE2dzhYZk1zQUFBQUFZaEY1QVFBQUFOQVlSWjdOcEhwNzE4R212T1lHUlY3ckxwUm50dGNmTHZuR0FRQUFBTVFnOGdJQUFBQWd2TFh0WGZQbE9kRzAxOTdBeUt0U2JmV3FybStjOCswREFBQUEySDhpTHdBQUFBQkNLL0tzdXByeFRIa21tdmo2R3hwNXJWdE05UldPbDN3VEFRQUFBUGFQeUFzQUFBQ0FrSW84bXk0ZjFTYXB4NXY4UGhvZWVhMDdtK3JOWHN1K21RQUFBQURqSi9JQ0FBQUFJSlMxcXhuUGxPZlpOcnlmbGtSZWxlb0t4OWxlZnpqdld3b0FBQUF3WGlJdkFBQUFBTUlvOG15UTZ1MWRFMjE1VHkyS3ZOWmRUSFhzNVFwSEFBQUFnREVSZVFFQUFBQ3c3OXB5TmVQdHRERHlXdWNLUndBQUFJQXhFWGtCQUFBQXNHL2FkalhqN2JRNDhxcTR3aEVBQUFCZ0RFUmVBQUFBQU95TElzOW1VeDE0VGJUNWZiWTg4bHBYWGVGWWJmWEtmYk1CQUFBQVJrL2tCUUFBQU1CWUZYazJrK3FyR1h0ZGVMOGRpYnpXblV0MTdMWGttdzRBQUFBd09pSXZBQUFBQU1haXlMT3BWTWRkSjdyMHZqc1dlVlZXMWo3bnVWNS91T3liRHdBQUFMQjdJaThBQUFBQTlsU1JaNU9wdnBieDJTNisvdzVHWHV1dXBIcXIxN3ovQlFBQUFBQzdJL0lDQUFBQVlNOFVlVGFiNnNCcm9xc3o2SERrdFc2eFBMTzkvakQzUHdJQUFBQmdaMFJlQUFBQUFJeGNrV2VEVk1kZEI3cytDNUhYeHk2V1o5RHJENWVNQWdBQUFHQjdSRjRBQUFBQWpFeVJaek9wanJzZU40MmF5T3NUenFYNkdzY2xvd0FBQUFEWUdwRVhBQUFBQUx0VzVObFUrWmhQNHE1UEVIbmQxa3A1NXFyVDZ3K1hqUU1BQUFEZzdrUmVBQUFBQU96WVd0eDFwanluVE9QMlJGNTM5VkhzMWVzUHp4Z0ZBQUFBd0oySnZBQUFBQURZdGlMUEpsTWRkejFyR25jbjh0cVNLNm0rd25IZUtBQUFBQUErU2VRRkFBQUF3SmF0eFYyemEyZkNSRFluOHRvV3NSY0FBQURBYllpOEFBQUFBTmlVdUd2blJGNDdVc1ZlZzE1L21Cc0ZBQUFBZ01nTEFBQUFnTHNRZCsyZXlHdFhMcVo2czFkdUZBQUFBRUNYaWJ3QUFBQUErQVJ4MStpSXZFWkM3QVVBQUFCMG1zZ0xBQUFBZ0krSnUwWlA1RFZTWWk4QUFBQ2drMFJlQUFBQUFJaTc5cERJYTArSXZRQUFBSUJPRVhrQkFBQUFkSmk0YSsrSnZQWlVGWHZOOWZyREJhTUFBQUFBMmt6a0JRQUFBTkJCNHE3eEVYbU54WlZVYi9hYU53b0FBQUNnalVSZUFBQUFBQjFTNU5sVXFzT3VRUkozallYSWE2ekVYZ0FBQUVBcmlid0FBQUFBT21BdDdqcFRubE9tTVY0aXIzMVJ4VjV6NVpudjlZZkx4Z0VBQUFBMG5jZ0xBQUFBb01XS1BKdEo5ZFl1Y2RjK0VYbnRxNVZVeDE1ellpOEFBQUNneVVSZUFBQUFBQzIwRm5lZEtjL2pwckcvUkY0aFZMSFhRcXF2Y2x3eURnQUFBS0JwUkY0QUFBQUFMVkxrMlNEVmNkZEIwNGhCNUJYT3VWUmY0NWdiQlFBQUFOQVVJaThBQUFDQWhpdnliTEo4ektiNldrWnhWekFpcjdBdXB2b2F4d1dqQUFBQUFLSVRlUUVBQUFBMFZKRm5VNm5lMm5XeVBCTW1FcFBJSzd3cmEvK1BGbnI5NGJKeEFBQUFBQkdKdkFBQUFBQWFwc2l6bVZSdjdqcGhHdkdKdkJwanBUenpxZDd1dFdRY0FBQUFRQ1FpTHdBQUFJQ0dLUEpza09xTlE2NWtiQkNSVnlPZEs4OThyei9NalFJQUFBQ0lRT1FGQUFBQUVOamFsWXlEVkcvdWNpVmpBNG04R20weDFadTk1bzBDQUFBQTJFOGlMd0FBQUlDQVhNbllIaUt2Vm5DVkl3QUFBTEN2UkY0QUFBQUFRUlI1TnBsdWJ1MXlKV05MaUx4YTUwS3FyM0pjTUFvQUFBQmdYRVJlQUFBQUFQdXN5TFBwVklkZEo1TXJHVnZuMnUvL0lpMWYvMStEYUo4cjVabExkZkMxYkJ3QUFBREFYaEo1QVFBQUFPeVRJczhHcVk2N2VxYlJQdGR2UEpCZWZQTno2Y2YvK2QvcEc0Ty9UWTgrL0w2aHROZTVWTWRldVZFQUFBQUFlMEhrQlFBQUFEQkdSWjVOcFRyc0dpUmJ1MXJyM2Q4K2xMN3g4dS9UVzI5Zi9Qalhuamw5TWczKzduL1MvZmZkTUtEMnN0MExBQUFBMkJNaUx3QUFBSUE5VnVUWlpLcXZZclMxcXdOZWV1ZEkrc2Z2L050dGYrK0pZNCtscDcveW1YVDR3RFdEYWovYnZRQUFBSUNSRVhrQkFBQUE3SkVpejZaVEhYWlZnWmV0WFMzM3djcUQ2Wi9PcmFiWDMzaHowei83cmVlZVNzZS9lTlZXcjI2dzNRc0FBQURZTlpFWEFBQUF3QWl0YmUwYXJCMWJ1enJpdFY5OEliM3c4cy9TNWN2dmJmbnYyT3JWU1JkU0hYc3RHQVVBQUFDd0hTSXZBQUFBZ0JFbzhxemExbFdkVTZiUkhkWDJyaGRlLzFSNjVkV2ROenUyZW5WU3RkMnIrdExNOWZyREplTUFBQUFBTmlQeUFnQUFBTmloSXMrbTBzM3JHQSthU0xlODlNNlJkUGFIUDkvVzlxNDdzZFdyMHhaVGZaM2pndXNjQVFBQWdEc1JlUUVBQUFCc2crc1llZmUzRDZYbmYvUmhldjJOTjBmK2I5dnExWG5uVWgxN3VjNFJBQUFBK0g5RVhnQUFBQUJiVU9UWklOVWJ1MDZZUmpkZHYvRkErdjdGaDlJM3YvZmFudjZjUTRjT3AyOC8vVGZwUzUrOVl1amR0VktlK2VyMCtzTkx4Z0VBQUFDSXZBQUFBQUR1b01pem1WUnY3S3JpcmdrVDZhNmZYajZVWHZ6eHRmVFcyeGZIOWpPLy9yWGo2ZlRNSDlLQlQxLzNBWFJiVmZ1dFgrZTRaQndBQUFEUVRTSXZBQUFBZ0EyS1BKdE9OOE91Z3liU2JSK3NQSmpPL3RkZnBybVgvbU5mZm42MTFldjBrOVBwNy8vNnNnK0R5bUs2dWVGcjJUZ0FBQUNnTzBSZUFBQUFRT2NWZVRhVjZyQ3JPc0l1UHZMU08wZlMyUi8rUEYyKy9ONit2NVluamoyV252N0taOUxoQTlkOE1LeTdVSjZGVkcvNEVud0JBQUJBeTRtOEFBQUFnRTVhQzd1cWJWMkQ4dlJNaEhXL3ZQcjU5UHo1WDQvMWFzYXRldWIweWZUVlIzN25Da2R1SmZnQ0FBQ0FsaE41QVFBQUFKMGg3T0p1cXFzWlgzajlVK21WVnhmQ3Y5YnYvdk5UNmN0SHJxYjc3N3ZoZytOV1ZmQlZYZWU0WUJRQUFBRFFIaUl2QUFBQW9OV0VYV3ptK28wSDB2Y3ZQcFMrK2IzWEd2VzZxeXNjbnp6MllIcjA0ZmQ5aU56T1NscmI3bFdlM0lZdkFBQUFhRGFSRndBQUFOQTZ3aTYyNnJWZmZDRzk4UExQMHVYTDd6WDJQWHo5YThmVFB6eXltZzRmdU9ZRDVXNWM2UWdBQUFBTkp2SUNBQUFBV3FISXMrbnlNWk9FWFd6Qkw2OStQajEvL3RmcHJiY3Z0dVk5UFhQNlpQcnFJNzlMQno1OTNRZk1aZ1JmQUFBQTBEQWlMd0FBQUtDeDFzS3VRYXEzZGgwMEVUWlR4VjJ2L09SUDZaVlhGMXI3SHIvMTNGUHArQmV2cHZ2dnUrRURaeXVxMG5FOStGb3lEZ0FBQUloSjVBVUFBQUEwU3BGblZkQzFmaVpNaEszNFlPWEI5Sy81UlBydTNMOTM0djBlT25RNG5YNXlPbjM1aU5pTGJWbE1ONE92UzhZQkFBQUFjWWk4QUFBQWdOQ0tQSnRNTjZPdW1TVHNZaHV1MzNnZ3Zmam01em9UZDkzcWlXT1BwU2VQUFpnZWZmajkvMlB2Ym9DcnVzOTdVYjkyRUVpQVpDUHhMZWxnakNTSW5WaEtiTEE1cVEwaEpqZ054ZGpHUFl4ZGFGTlBycE9aTTJPbjdaM2V6dkVrNTJiU1NVOTcwcWFUNmJqcHFjZTlKVWxKalQ5S3lkZ1VCd1R1MUFsZ0xOSzR3VWdHdVh4L0doRG13d3J4MVJMSUNJd3hrdmFXOXQ3cmVXWVcwcGFiNmY3LzFyS05aLzk0WHc4RFBmVm1uQzE4TmRZdjN2U2NPQUFBQUdCZ0tYa0JBQUFBT2VmY0dzYVpjWFlWWTcxRTZLbWszUFdEbjFiRlh5NVpIeTB0emFuUFE5bUxQanJhY1RYRytTbGZSMFFDQUFBQS9VdkpDd0FBQU1nSjU5WXd6b3l6RTdzbVNJVGVVTzY2dktUczlYLzlSbW5VbHU4V0JuMWhyU01BQUFEME15VXZBQUFBWUVDME4wNjdMczZ2WUx4Ykl2U0ZjbGZQTEZvNE4rYmQrcTZ5RjVtUXJIVnNqUE9ySFUzNUFnQUFnQ3hROGdJQUFBRDZqV2xkWkpweVY5OG9lNUVGYStOODRjdVVMd0FBQU1nUUpTOEFBQUFnYTlvYnB6WEUrVkxYREltUUtjcGRtYVhzUlpZY2pYT0Zyemk3MnRHVUx3QUFBT2dsSlM4QUFBQWdZODZ0WUp6WjdUS3RpNHhTN3NvdVpTK3liSE9jTDN3MWlnTUFBQUN1bkpJWEFBQUEwR3Z0amRPdWpRdExYZlZTSVJ1VXUvcFhVdmI2MU1jR3gyM1YyNFZCTmxudENBQUFBRmRJeVFzQUFBRG9rZmJHYVRQamZLbkxDa2F5U3JscllNMmVkVWZjTjJ1a3NoZjlJVm50Mk5oMUtYMEJBQURBaFpTOEFBQUFnTXRTNm1JZzdEbzZNdjYyOFpyNDRZcFhsTHR5Z0xJWEErRE51TEQwMVNvU0FBQUEwa3pKQ3dBQUFMaUFVaGNEcWF2YzljZmZYaXFNSEZSVFV4dGZ1SzhoUGxPM0k0b0huUllJL1VucEN3QUFnRlJUOGdJQUFJQ1VVK29pRjJ6Y01UR2UrSmQzNG9udlBTZU1QTkJWOXBvK2NWK1VsN1FKaElHUWxMNlNsWTZOWWIwakFBQUFLYURrQlFBQUFDblMzamp0MmpoZjZHb0lwUzRHMlBKL3I0dm4xNyt0M0pYSGZ1L0w5OFhjK2dQS1hneTBvM0YrMGxkVC9lSk5qU0lCQUFDZ2tDaDVBUUFBUUFGcmI1eDJYVnhZNnFxWENnT3Q3ZlRRV0xPMUt2N1A4cDJ4OHNXMUFpa1FpeGJPalhtM3ZodTE1YnVGUWE1SS9nSFRHT2NtZnRVdjNuUkVKQUFBQU9RckpTOEFBQUFvSU4xV0x6YWMrM3FOVk1nVnU0Nk9qQldieStNdmw2eVBscFptZ1JTbzJiUHVpUHRtall6YnFyY0xnMXl6T2M2dmVHeXk0aEVBQUlCOG91UUZBQUFBZWFyYmxLNnVRcGNwWGVTa2pUc214bzgyWFIxLy9PMmx3a2lSbXByYStNSjlEZkdadWgxUlBPaTBRTWhGeVlySHJ0SlhjaldaOWdVQUFFQ3VVdklDQUFDQVBORGVPTzNhT0YvbW1ubnVlMU82eUduTC83MHVubC8vZGp6eHZlZUVrWEsvOStYNzRqTTN0a1ZsNlFGaGtPdmVqUE1ySHBQU1Y2TklBQUFBeUFWS1hnQUFBSkNETGxxN21Gd1RwRUkrYURzOU5IN3cwNnBZOGRMT1dQbmlXb0Z3Z1VVTDU4YW5QamJZS2tmeVRiTG1zVEhPRjcrc2VRUUFBS0RmS1hrQkFBREFBRHRYNkdyb2RsbTdTTjZ4a3BHZW1EM3JqcGc1ZFV4TW43Z3Z5a3ZhQkVJK1NscXNUYUg0QlFBQVFEOVI4Z0lBQUlCK2N0SEtSUk82S0FqSlNzYWxhdzdGc21kZkVBYTlrcXh5bkY1M0ttckxkd3VEZk5lOStOVnExU01BQUFDWnBPUUZBQUFBV2REZU9PMjZPRi9rbXRseEphOFZ1aWdJdTQ2T2pCLytkRVQ4N1ZNYm9xV2xXU0JrUkRMZDY3NVpJNk5oM080b0huUmFJQlNLWk5Walora3J6cTE4ckYrODZZaFlBQUFBNkNrbEx3QUFBT2lqYnVzV3J6djNkWVpVS0VScldtcmlIOWVlakNlKzk1d3d5SnFhbXRxWU4vdW0rTXlOYlZGWmVrQWdGS0kzbzF2cEs4NU8vYkx1RVFBQWdNdFM4Z0lBQUlBcjFONDRyV3N5MTNWaE9oY3BrVXp0V3JHNVBGYTh0RE5XdnJoV0lQU3JlK2ZOaWM5T0d4YTNWVzhYQm1sdzhkU3ZwUHpWS2hZQUFBQVNTbDRBQUFCd2tYTmxydXZpL0xyRjVQdDZ5WkFteWRTdTV6ZitNcjc5M2FlRXdZQkxwbnN0L0kyR21EN3BxT2xlcEZIU3NHME41UzhBQUlCVVUvSUNBQUFndGM2dFdid3VUT2FDVHFaMmtRKzZwbnMxak5zZHhZTk9DNFEwNjE3K3N2WVJBQUNnd0NsNUFRQUFVTkRPVGVXNk5zNld1Skt2WGRPNXJwRU9uTFg4Myt2aStmVnZ4eFBmZTA0WTVJMWt1dGU4MlRmRloyNXNNOTBMTHBTc2ZUd1NaNmQrSlYrVDRsZFQvZUpOUjBRREFBQ1F2NVM4QUFBQXlIdnRqZE91aS9QckZic1h1cXhZaEEvdytvSEsrTkdyUStOdm45b1FMUzNOQWlHdkpkTzlibThvaStrVGRwanVCWmVYVFAvcUtuNjFucnNVd0FBQUFQS0FraGNBQUFCNTRRTW1jaWx5UVErMG5SNGFhN1pXeGRJMWgyTFpzeThJaElMMGUxKytMeG9tbm9tYnhyd3BET2laN2dXdzk0cGc5WXMzdFlvR0FBQmc0Q2w1QVFBQWtCTzZUZVBxdXJwS1hGWXJRaCt0YWFtSmRhKzlHMy84N2FYQ0lEVm16N29qYnEwZkU3TW03NHZ5a2phQlFOOGtyY25XdUxBQTF2blZGREFBQUlEK29lUUZBQUJBdjJodm5EYnozTGZkeTF2SjErczZyZ2tTZ3N6YWRYUmsvUENuSTJMTmhsMng4c1cxQWlIVmtuV09uNTAyTEJyRzdiYk9FYkpqYzF4WS9tcnR1a3dDQXdBQXlBd2xMd0FBQVBxc1c0SHJ1bk5YVjRrck1VTkMwRCtTZFl6Ly9MUHFXUEh5UWVzWWMweE5UVzA4OXZDMCtKMy8rL3ZDR0dEV09jS0FPQnBuQzJDSnhuTmYzeXVFS1lJQkFBQjhPQ1V2QUFBQVBsQjc0N1N1YVZ2ZFMxdmRmMVl2SlJoNHlUckc1emYrTXI3OTNhZUVrWU9TZ3RjejM3d3gyazRWeGFjV3VVZTVkRjhXL2taRFRKOTBOQ3BMRHdnRWNrUFg2TW11QWxqWGRMRE9uMWtOQ1FBQXBKbVNGd0FBUU1xME4wNjdMczVPMjBwMEZiWVNNODk5VmQ2Q1BMQnh4OFQ0MGFhcjQ0Y3JYb21XbG1hQjVLaXVndGVVVVR0aXc0N3JsYnh5MU94WmQ4U3YvOXFZcUIrL0w4cEwyZ1FDdWErckROYTlCTlo2N2tvb2hBRUFBQVZIeVFzQUFDRFBkVnVWbU9oZTJyb3V6cGU1a3E4VHBBWDU3ZlVEbGZHalY0ZkdtZzI3WXVXTGF3V1M0eGJjYzFkODkwc25vM1RJOGM3WFNsNzU0ZDU1YytLejA0WkZ3N2pkVVR6b3RFQWcvMjJPczJXd1JGTzM3MXZqZkNuc1NQM2lUVTJpQWdBQWNwbVNGd0FBUUE2NHFLaVZ1TnpyNjBKaEMxSmoxOUdSc1haclJheDQrV0FzZS9ZRmdlU0ppd3RlQ1NXdi9QT2xMOHlQaGtsWHgyM1YyNFVCNmRLOUdOWjlXbGlpTmM2WHd6cGYxeS9lMUNveUFBQWcyNVM4QUFBQU11amNLc1RmdWVqSDNhZHJSVmlIQ0h5SXR0TkRZODNXcWxpNjVwQmlWeDU2NU9INzQ2djM3citnNEpWUThzcGZ5ZHJOZWJOdmlvYUpaK0ttTVc4S0JMaWNvM0ZoS1N6UkdoY1d3NkorOGFiL0tTb0FBS0FuQm9rQUFBQWdvNjdydUw0bUJxQ251b3BkLy9yYU8vSHQ3eW9DNWF2SEhsMFlYNTNmTElnQzA5TFNISC9lY3ZhK2RoVytwdGVkaXRyeTNjSUJMblpOeHpYam9wL051TVQvM2Y4VUZRQUEwQk5LWGdBQUFKbDFuUWlBSzZYWVZWaSs4L1VINCtFN3RnaWl3SFV2Zk0yZWRVZmNXajhtcGs4NkdwV2xCNFFEQUFBQVpJMlNGd0FBUUdaZEp3TGd3NnhwcVlsMXI3MGJQMXp4U3JTMHJCVklBVmoyblFkajNzY1Z2TkptMWVwMUhkZlo3eFcrQUFBQWdHeFM4Z0lBQUFEb0J4Y1d1LzVCSUFVaVdkMzN6RGR2akNtakZMelNUdUVMNkluTmYvL0podnJGbTVva0FRQUFYQ2tsTHdBQUFJQXNVZXdxYkF2dXVTdSsra0J4VEJtMVF4aGNRT0VMdUFMWGlnQUFBT2dKSlM4QUFBQ0FERkxzU29lSEZzMlBQLzJ0dDZKMGlOSU9sNmZ3QlFBQUFHU0NraGNBQUVCbStSUDVrREp0cDRmR21xMVY4YSt2dlJQZi91NVRIVC9aSUpRQzk5aWpDK09yODVzRlFZOHBmQUVBQUFDOXBlUUZBQUNRV1EwaWdNTDMvbUlYYWJIc093L0d2STl2RVFSOWRuSGg2K09UUjBYRHhETngwNWczaFFNQUFBQzhqNUlYQUFBQXdCWFlkWFJrck4xYUVVMXZuRmJzU3FHYW10cDQ1cHMzeHBSUkNsNWtYdmZDVi9Lc3padDlrOElYQUFBQWNBRWxMd0FBQUlBUDBGWHNXdkh5d1ZqMjdQTUNTYWtGOTl3VjMvM1N5U2dkc2tNWVpGMUxTM1A4ZWN2NWRhQmYrc0w4YUpoMGRUU00yeDNGZzA0TENBcEhNZ0c0VVF3QUFNQ1ZVdklDQUFBQTZPYjFBNVh4bzFlSHhwb051MkxsaTRwZGFmZllvd3ZqcS9PYkJjR0ErZXNubjN2dis2VHdOYm02S09ySDc0dnlramJoUUg2N1ZnUUFBRUJQS0hrQkFBQUFxYmVtcFNiV3ZmWnViUHo1bmxqNTRuTUNvZE95N3p3WTh6NXVQU081bzN2aDY5NTVjK0xtajVaRlEvWFJxQ3c5SUJ3QUFBQW9jRXBlQUFBQVFPcTBuUjRhYTdaV3hiKys5azZzK0hGVHRMVDhnMUI0ejV3N1o4U2ZQVHdpcG94UzhDSjNQYk44WmNkMTl2dlpzKzZJVyt2SFJOMjQ5cmhwekp2Q0FRQUFnQUtrNUFVQUFBQ2tRcktHOFpYVzRiSGk1WU94N05rWEJNSWxQYlJvZnZ6cGI3MFZwVU4yQ0lPOHNXcjF1bzdyN1BjMU5iVng1KzAzUnNPa3E2TmgzTzRvSG5SYVFBQUFBRkFBbEx3QUFBQXk2em9SUU81STFqQyt1dTJxV0xOaGx6V01mS2p2ZlAzQmVQZ08wN3ZJYnkwdHpaMVhsMFVMNThZbjYwcWlmdnkrS0M5cEV4QUFBQURrS1NVdkFBQ0F6Sm9nQWhnNDFqRFNHOG5rby8vdmF3MHh0VnJCaThLelpPbUtXSEx1ZTJzZEFRQUFJSDhwZVFFQUFBQjVMVm5EMlBpTFliRzI2WkExalBUWStmV00yNFJCd2Z1Z3RZNTFJdythOGdVQUFBQTVUc2tMQUFBQXlDdkp0SzZOTzhiSHV0ZmVqWTAvMzJNTkk3MW1QU05wZHZGYXgzdm56WW1iUDFvV0RkVkhvN0wwZ0lBQUFBQWd4eWg1QVFBQUFEa3ZtZGIxU3V2d2VPbG54K09KN3lsMTBUZldNOEw3UGJOOFpjZDEvdStSZWJOdmlycktkNk5oM080b0huUmFRQUFBQUREQWxMd0FBQUNBbkdOYUY5bGlQU044dUdUQzE1K2I4Z1haTmxNRUFBQkFUeWg1QVFBQUFEbkJ0QzZ5N2UvKzdNRjRZS3JwWGRCVHBud0JBQURBd0ZQeUFnQUFBQVpFTXExcnpkYXFlSFhiR2RPNnlLb0Y5OXdWWDMyZ09LYU1VdkNDdnJyVWxLOGJKcFZGL1g4NUViWGx1d1VFQUFBQVdhTGtCUUFBQVBTYmpUc214aXZiaTJKdDA2Rlk5dXdMQWlIci91U1BIb2d2enR3VnBVT3NtSU5zNkp6eWRlNzdaTXJYbmJmZkdKT3JpNkorL0w0b0wya1RFQUFBQUdTSWtoY0FBQUNRTmJ1T2pveTFXeXVpNlkzVHNlTEhUZEhTOG85Q29WOGtaWk8vK3NOYjR0TzFyd3NEK2treTVhdWwyNVN2MmJQdWlJOVBIaFVORTg5RVhjVmVxeDBCQUFDZ0Q1UzhBQUFBZ0l4SlZqQnUzREUrMXIzMjdya1ZqTThMaFg3M3lNUDN4MWZ2M1IrbFE3WUtBd2JRcXRYck9xN3pyNVBWampkL3RDenF4bHJ0Q0FBQUFEMmw1QVVBQUFEMGlSV001SXBrZXRkakQwK0xCNlp1RVFia29NN1Zqc3ZQLy8zYXRkcXhidlRScUN5MVVoVUFBQUF1UjhrTEFBQUE2SkhYRDFUR0s2M0RPMWN3ZnZ1N1QzWDhaSU5RR0hBUExab2ZqOTEvTWlyTEZMd2dIM3pRYXNlNnluZWpidVRCS0M5cEV4SUFBQUIwbytRRkFBQUFYTmF1b3lQamxmOHNqMzk5N1oxWThlT21hR2xSNmlLMy9OMmZQV2g2RitTNVM2MTJ2R0ZTV2RTTmE0KzZpcjFSUE9pMGtBQUFBRWcxSlM4QUFBRGdBbDJscmxlM25ZbU5QOThUSzE5OFhpamtwQVgzM0JWZmZhQTRwb3hTOElKQzA3bmFzZHZycFBSMTgwZkxvbTdzaWFndDN5MGdBQUFBVWtmSkN3QUFBRkt1N2ZUUTJMaGpmTHk2N2FyWXVPVndMSHRXcVl2Yzk1MnZQeGdQMzZIY0JXblJXZnBhZnY3MW9vVnpZOHFFRXFVdkFBQUFVa1BKQ3dBQUFGTG0vYVd1RjRSQzNqQzlDMGdzV2JyaWd0ZEo2ZXVUZFNWUk4vcG9WSlllRUJBQUFBQUZSOGtMQUFBQUNweFNGNFdncHFZMkhsazh6ZlF1NEpLUzB0ZVNidis4dVBQMkcyTnlkWkhTRndBQUFBVkR5UXNBQUFBS2pGSVhoZWFoUmZQanNmdFBSbVdaZ2hmdzRWcGFtanV2TGtwZkFBQUFGQUlsTHdBQUFNaHpTbDBVcXFTWThkakQwK0tCcWNwZFFPOHBmUUVBQUZBSWxMd0FBQUFnenloMWtRYVBQSHgvUFByNVk2WjNBUmwzY2VrcnNXamgzSmd5b1NUcXhwNkkydkxkUWdJQUFDRG5LSGtCQUFCQWp0dDFkR1M4OHAvbDBiTG5YYVV1Q3Q2Y08yZkU3LzIzOGZIcDJxM0NBUHJOa3FVckxuaXQ5QVVBQUVDdVVmSUNBQUNBSE5OVjZucDEyNW5ZK1BNOXNmTEY1NFZDS3Z6Skh6MFFYNXk1SzBxSEtIZ0JBK3ZpMHRlOTgrYkVEWlBLb201Y2U5UlY3STNpUWFlRkJBQUFRTDlTOGdJQUFJQUI5dnFCeW5pbGRYZzB2WEU2VnZ5NEtWcGFOZ2lGVkZsd3oxM3gxUWVLWThxbzE0VUI1S1JubHErTVo3cTlUa3BmMTFVT2o3cktkNk51NU1Fb0wya1RFZ0FBQUZtbDVBVUFBQUQ5Yk9PT2lmSEs5cUpvYW40N252amVjeDAvVWVvaW5XcHFhdU94aDZmRkExTzNDQVBJSzBucHE3dlpzKzZJU1JQS1kzSjFVZFNOUGhxVnBRZUVCQUFBUUVZcGVRRUFBRUFXSmFzWHR4NjRObDdkZGxWczNISTRsajM3UWloMVFjUWpEOThmWDcxM2Y1UU9VZkFDOHQrcTFldGlWYmZYU1lsMStpMlRZOHFFa3FnYmV5SnF5M2NMQ1FBQWdENVI4Z0lBQUlBTTZscTkyTHo3bDdIeDUzdGk1WXZQQ3dXNm1YUG5qUGpxYjQrT3FkWGJoQUVVckphVzVzNnJ1MlRGNHcyVHlxSnVYSHRVbFIyMjRoRUFBSUFlVWZJQ0FBQ0FYbW83UFRSZTN6L0c2a1c0QXNsVW0wY1dUNHVINzBnbWR4MFhDSkE2eVlySFo3cTl0dUlSQUFDQW5sRHlBZ0FBZ0N1VVRPbDZmZSt3ZUhYYm1Yajl6U1BuVmk4Q0grYXhSeGZHVno2M3gyckdBdmYzZnpvL3Z2NDNyNzF2ZWhGd2FSZXZlRXdzV2ppM2M4VmpkVVY3MUZYc2plSkJwd1VGQUFCQUp5VXZBQUFBdUlTTHAzU3QvVWxTWERDbEMzcGl3VDEzeFZmdUxZMnAxVW8vYVZBL1pudjg1VmV1aXlkV1h0ODVzUWpvdVNWTFYxendPcG4yOWZISm82SjYxTldtZlJXZVJoRUFBQUE5b2VRRkFBQUFjWFpLMXl1dHc2TjU5eTlONllJK1NsWXovc2tqMDJMZXg1UEpYUW9KYVZJMWZILzg0ZDNGTWFaaWZqeis1SE1DZ1Q3cW5QYTErc0tmSmRPK0pvd3JpYnB4N1ZGVmRqaktTOW9FQlFBQWtBSktYZ0FBQUtUT3JxTWpZK3VCYTJQcjdxczdwM1E5OGIya2lHQktGMlRDZDc3K1lEeHc2MDZyR1ZPc2VOQ3ArTkxNN1ZGWHZTQys4dlZsQW9FTXU5UzByMGtUeXFONmRGSFVqVDBSdGVXN2hRUUFBRkNBbEx3QUFBQW9lQnQzVE94Y3Uvakc3bmZpRjIvc2o1VXZQaThVeUxCSEhyNC9IdjM4c2Fnc1UrN2lyRm1UbXVOSGZ6VTd2djMwNmM1cFJFQjJkRTc3dXVobjk4NmJFOWRWRG8rNnluZWordHJqMWp3Q0FBQVVBQ1V2QUFBQUNrcFM2TnE2ZC9CRmF4ZE42WUpzZVdqUi9QamR6eGJGMU9wdHd1QjlrdldOMzNpd09HNmFmRjk4Ni9HbkJRTDk1Sm5sSzkvM00yc2VBUUFBOHB1U0Z3QUFRR1p0N3JqcXhkQS9YajlRR2EvdkhSWXRlOTZONWgwbnJGMkVmalRuemhueHhidXJZdDdIVGU3aThwTDFqWXR2YTRuNmlmUGo2My96V3JTME5Bc0ZCc0RGYXg1cmFtcGoraTJUWThxRWtxaXVhSSs2aXIwZGY3K2VGaFFBQUVDT1V2SUNBQURJckNNaXlJNWRSMGZHSy85WnJ0QUZBeXdwQlR5eWVGbzhmRWRTN2xMdzRzclZqOWtlMy8rajh2aTdmNTBmanovNW5FQmdnQ1dGeTR0TGw3Tm4zUkdUSnBSSDllaWlxQnQ3SXFyTERpbCtBUUFBNUFnbEx3QUFBSEpPVXVqYWV1RGEyTHI3Nm1ocWZqdlcvaVNaL0tMUUJRUHRPMTkvTUI2NGRXZVVEbEh1b25lU3FWNWZtcms5NnFvWHhGLzlZTE9wWHBCalZxMWVGNnN1K3BuaUZ3QUFRRzVROGdJQUFHQkFkYTFjM1BOV0tIUkJqbnJzMFlYeDBLeTNvckpNdVl2TW1EV3BPZjZycVY2UUZ4Uy9BQUFBY29PU0Z3QUFBUDJtcTlCbDVTTGtoNGNXelkvSDdqOFpsV1dtTFpGNVhWTzlwbjkwZm56OWIxNHoxUXZ5eUljVnY2b3IycU9xN0hDVWw3UUpDd0FBSUVPVXZBQUFBTWlLalRzbXh0YTlnNk41OXk5ajc4RlRDbDJRUjVKeTErOSt0aWltVm04VEJsbFhQMlo3ZlArUHl1T2ZmMzUvZk9Ndm5oSUk1S2xMRmI5cWFtcGoraTJUWThxRWtxZ29QUlBWMXg2UHl0SUR3Z0lBQU9nRkpTOEFBQUQ2Wk5mUmtiSG5XR204c3IwbzN0ajlUdnppamYyeDhzVzFvZEFGK1VlNWk0R1NUUFc2djJGclRQK3IyYkgwcFNHeFpPa0tvVUFCU0NiMFhXcEszNktGYzJQVWlDRlJQZXJxcUJxUjJuV1BUWjRRQUFDZ0o1UzhBQUFBNkpVLy81ZmErSCsrK1FOQlFBR1ljK2VNK09MZFZUSHY0MXVFd1lDcUdyNC8vdUJ6RVovNjJMM3h2Ly91MzYxd2hBSjFxU0puc3U3eHZsa2o0N2JxN1dtSjRZZ25BUUFBNkltclJRQUFBRUJ2Tk84NElRVEljMG01YTlsM0hveC9mdXk0Z2hjNVpYcjFHNTBySFAvNEQrOFhCcVJFc3U3eFVOdEhCQUVBQVBBQlRQSUNBQURJckdUdHlnd3hBTG5zd3NsZHlsM2twbVNGNDl3YnRzYjB2NzQ5bnZwcFJUeis1SE5DQVFBQUFGSkx5UXNBQUNDenJGMEJjcFp5Ri9tb291UllmR25tc2ZoTS9lZmpuMzV5MVNYWHZBRUFBQUFVT2lVdkFBQUFnQUtuM0VVaHFCMnhNLzdnY3hHZit0aTk4ZlRxZzUycjNZRENVamZXT25BQUFJQVBvdVFGQUFBQVVLQ1V1eWhFMDZ2ZmlPbS9IZkh5TEdVdkFBQUFJRDJVdkFBQUFBQUt6RU9MNXNmdmZyWW9wbFp2QytVdUNsVlM5dnJFZzhVeGMrcjk4ZVRUVGRIUzBpd1VJSjlZOHc0QUFQU0lraGNBQUFCQWdiaXczQVdGcjNqUXFaaDd3OWE0czY0OFh0eXE3QVhrai9yRm01cWtBQUFBOUlTU0Z3QUFBTDNTVUR0TUNKQWpIbnQwWVh6dTVqUEtYYVNXc2hjQUFBQlE2SlM4QUFBQU1zdWZ5QWY2VFZMdWVtaldXMUZacHN3Q2lZdkxYbzBiOXNXcTFlc0VBd0FBQU9ROUpTOEFBSURNT2lJQ0lKdHFhbXJqa2NYVDRvRmJkMGJwRU9VdXVKU3VzdGZjR3lKZW5uVnZQTDM2b0xJWEFBQUFrTmVVdkFBQUFBRHl3Snc3WjhRWDc2NktUOWNsNWE0dEFvRXJOTDM2alpqKzIyZkxYdit5L3UxNFp2bEtvUUFBQUFCNVI4a0xBQUFBSUljOXRHaCtmRzdhc0pqMzhhVFlwZHdGdmRWWjlxcU9lR0RXNStPZmZuSlZMRm02UWlqQVFEa3FBZ0FBb0tlVXZBQUFBQUJ5MEdPUExvemYvTlNwbURKcWh6QWdnMnBIN0l3LytGekV3dHRueCtxZmw4VzNIbjlhS0pBanFzc09wZVdvVGU0MkFBRFFVMHBlQUFBQUFEbWlwcVkySGxrOExlWTJISXpLc21hQlFCWlZEZDhmaTIvYkg1K3Z2ejFlM2o0Mm5ueTZLVnBhL0gwSEE2bDQwR2toQUFBQWZBQWxMd0FBZ0F3cW1ybStzYjF4bWlDQUhsbHd6MTJ4Y0ZhRmxZd3dBQ3BLanNYY0c1SnJhTHk4NDk3NGwvVnZ4elBMVndvR0FBQUF5Q2xLWGdBQUFQUkszZmhmQ1FINktGbkorTG1iejhUVTZtMGRydzRJQkFiWTlPbzNPcTZJQjJaOVBsNSt2ZGdxUndBQUFDQm5LSGtCQUFEUUs2VkR6Z2dCZW1IT25UTmk3aDFWOGNDdE96ditQcklhRG5KUjdZaWRVWHRieEcvZWNtdTh1UFcvUk9PR2ZiRnE5VHJCQUFBQUFBTkd5UXNBQUFDZ0h6enk4UDN4NjdjTWlrL1hiZzByR1NFL0ZBODZGWE52Mk5weFJXeSthMzY4L0l1SXg1OThUakJBWHpXS0FBQUE2Q2tsTHdBQUFJQXM2WnJhTmJmaFlGU1diUk1JNUxINk1kczdyb2o3YjcwOVh0NCsxblF2QUFBQW9GOHBlUUVBQUdUZTJvNXJoaGdndlV6dGdzSlZVWElzNXQ1d3pIUXZ5TEI3NTgzcCtIVy9JQUFBQUQ2QWtoY0FBQUJBQnBqYUJlblROZDNyZDM3dDF2aTNONnZqcGFhMmVHYjVTc0ZBTHd3YldpUUVBQUNBeTFEeUFnQUFvRmRLaTk4UkFuUjQ3TkdGOGJtYno4VFU2cVRZWldvWHBGSHhvRk14YTFKenh4WHgwSnpaOFhMTHRiSDBuNXVpcGFWWk9NQ2xIQkVCQUFEUVUwcGVBQUFBOU1ya1VidUVRR290dU9ldVdEaXJJajVkdHpOS2h5aHhBT2RWRGQ4Zjl6Y2sxOURZdk04NlIrQ1Nta1FBQUFEMGxKSVhBQUJBNXJWMlhEUEVBSVVsV2NmNDZhbVY4ZCttSDRyS3NnTWRQemtnRk9DeXVxOXpmSFZQWmZ6TCtyZXRjd1FBQUFCNlJja0xBQUFnODFwRkFJV2hwcVkyRnM2OU9XNi84YXI0ZE8zV2pwKzhMaFNneDVKMWp0T3IzK2k0SXY3N3I5OGVtM2VQaVplYTJoUytBQUFBZ0N1bTVBVUFBQUJ3a1VjZXZqOXUvOWpnbVBmeExSMnZyR01FTXFlaTVGak1tcFJjRVEvTm1SMHZ0MXdiUDkyOEwxYXRYaWNjVW0zQ3VCSWhBQUFBWElhU0Z3QUFBRUNIQmZmY0ZRdG5WY1NuNjNaRzZaQnRBZ0d5cm1yNC9yaS9JYmtpZHQ2bjhFVzZsUXhPejFuckYyOXFkTWNCQUlDZVV2SUNBQURJdk5hMEhEUXB4U3g3OWdWM25MeCtodWYrMTRxWU1mbGdWSllkNlBqSkFhRUFBMExoQ3dBQUFMZ2NKUzhBQUlETWEwM0xRYThaVnV4dWszY1V1NEJjcC9BRkFBQUFYRXpKQ3dBQUFDaDRpbDFBdmxMNEFnQUFBQkpLWGdBQUFFQkJVdXdDQ2szM3d0ZWgzN3c5TnU4ZUV5ODF0Y1V6eTFjS2g3eFhVWG9tTFVkZDYyNERBQUM5b2VRRkFBQ1FlYTBpZ0lIeHlNUDN4KzBmR3h5ZnJ0c1pwVU1VdTREQ1ZWRnlMR1pOU3E2SS8vN3J0OGZXZzZOaTh4dS9pc2VmZkU0NDVPY3pQZXkwRUFBQUFDNUR5UXNBQUNERGltYXViMjF2bkphS3M5WldEM1hER1ZBMU5iV3hjTzdOMFREcEkrZUtYZHVFQXFST1V2aWFYcDFjRWIvemE3Zkc2NGZHeGVidEg0bC9Xdld6YUdscEZoQUFBQUFVQUNVdkFBQUFlbTFZOFZWQ29OL051WE5HZkhwcVpkeCtRM3RNclU1S1hRb01BRjJLQjUySytqSGJPNjZJeGJjTmpaM0haOGZMTGRmR2Y3eHh6RnBIeUExSFJBQUFBUFNHa2hjQUFBQ1E4eDVhTkQ5dXYybFl6Smg4TUNyTERuYjg1SFdoQUZ5QnF1SDc0LzZHL1JFTkY2NTFYUFhTYTZaOHdjQm9FZ0VBQU5BYlNsNEFBQURac2JuanFoY0Q5RTR5cld2cXg4YkY3VGRlRmJmOGw5MVJPbVNIVUFENnFQdGF4eS9OSEJyTmIzMCttdDRjYXNvWE9hRzJmTGNRQUFBQUxrUEpDd0FBSUR0U3NZYWx0TVM2UmpMbmtZZnZqMC9VREk1UFh2ZDJUQm1WbExwTW1BSElwdG9ST3p1dU1PVUxBQUFBOG9DU0Z3QUFBTDFXTi9ZZElkQnJDKzY1SzI2WlVoNjMzOUFlVTZ1M2RmeGttMUFBQnNpbHBueTl2bWRvdlBJTFU3NGd3NnhyQkFBQWVrWEpDd0FBSUR0YU82NFpZb0R6M3IrQzhVREhUdzhJQmlBSGRVMzVtbnREeEIvZWZXdThmbWhjYk4xVEZEL2R2QzlXclY0bklPaTlJeUlBQUFCNlE4a0xBQUFnTzFwRlFOcDFsYm9hSm4wa2JwNXdNQ3JMRG9ZVmpBRDVwM2pRcWFnZnM3M2ppcmkvSWVMUWI1NWQ3ZGk4NjZyNHAxVS9zOXFSUHJ0MzNweU9YL2NMQWdBQTRES1V2QUFBQU9pMTBtTHJHamxQcVFzZ0hicXZkbHg4MjlEWWVYeDJiTjEzVFd6ZDhjdFk5ZEpyU2wvMDJMQ2hSV2s2cmtsZUFBQkFyeWg1QVFBQTBHdVRSKzBTUW9vdHVPZXV1R1ZLZVh6aStuZWpic3hocFM2QWxLb2F2ci96bWpVcDRrc3psYjdnY3VvWGIycVNBZ0FBMEJ0S1hnQUFBTm5SMkhGOVRRd1VpcHFhMnBneC9jWm9xQjBXbjV6NFRrd1p2VDlLaHh6bytDc0hoQVBBQlpTK0FBQUFJUE9VdkFBQUFJRDNTYVowVFpsd2JlZnF4YnF4YjhlVVVUczZmcnBETUFEMG1OSVhIMmJDdUpLMEhQV291dzBBQVBTV2toY0FBQUI5a2t4NDh1RnNmcHR6NTR5WU1tbDAxRlFPN3B6U05iVjZXNXlkMEdWS0Z3Q1pkNm5TMTQ2M1NxTjUxMVh4czljUHhLclY2NFNVTWlXRFUzTlVxeG9CQUlCZVUvSUNBQURJZ3FLWjZ4dmJHNmVsNHF3emJydFJ5U3VQWEZ6b09ydDI4WGpIWHprdUhBQUdSRmZwYTNwMXg0dmJJZzc5NXUyeDgxaEZiTjFURlAveHhyRjRadmxLSVFFQUFKQjZTbDRBQUFCUW9McFdMdFpVZmlScXh5cDBBWkFmS2txT2RWNzFZenBlTkVSODdiNzZhSDZyS2w3Zk16UzJ2SGt5WHQ3NHVvSTVBQUFBcWFQa0JRQUFBSGt1bWM1Vk5XNUVOTlFPaTQ0dlVUZjI3Wmd5YWtkWXVRaEFvYWdkc2JQamlwaDdROGVMejEyNDRuSDdydU9tZmVXNXVyRW4wbkxVUm5jYkFBRG9MU1V2QUFDQTdGbmJjYzBvOUVQV1ZnOTFwL3ZKeFdXdWNkZStFMU9ydDhYWnlWeW1jd0dRSGhlc2VPendoM2ZmR2p2YVJuWk8rOXE1dnoxV3ZmU2FhVjhBQUFBVUZDVXZBQUFBK21SWThWVkN5TENIRnMyUDRVT0xvcVp5c0RJWEFGeUI0a0duM3B2MkZUZEVmR25tMERoMDh2YlllYXdpdHU0cGlqZjNuSXdsUzFjSUNnQUFnTHlsNUFVQUFBQURvSHVScTdRa29uYnNPekgrbW1OUldYYXc0Ni91RUJBQTlGRkZ5YkhPcTM1TXg0dUdpRC80WEgzc1BEN2Ftc2VjdkZkdGFUbHFvN3NOQUFEMGxwSVhBQUJBOWpSR0N0WTFscGFZNUhVcEMrNjVLNjRaWGh5MVZVTmpXRWRHZGVOK0ZjT0xmeGxUUnUrUDBpSEpOQzVGTGdEb2J4ZXZlZnphZmZYUi9GWlY3RGhjRWpzUHZLdjROVURLMDFQeUFnQUE2RFVsTHdBQUFQcWtidXc3cVR0elY0RnJYRVZ4akNuL3lIdVR1QkpuMXlvbURuZzRBQ0FQdkxmbWNkTFoxNHBmWk5FUkVRQUFBTDJsNUFVQUFKQTlQc1RKSTNQdW5CRlY0MFowZnQ4MWZTdnh5WWxueTF1bHhlMHhaVlRYOUMwRkxnQW9aSmNxZm5XdGV0eDU2Q1B4NXA2VHNXVHBDa0ZsUUUxTmJXck9Xcjk0VTVNN0RnQUE5SmFTRndBQVFQYjRFQ2VIUExSb2ZqVFVEbnV2dEpVNHZ6b3hjZnpjQlFEd2ZsMnJIaU5aOWRnUThRZWZxNDlESjh0aTU3R0sySEdvS0xhOGVUTDI3ajhXcTFhdkUxWVBUTDlsY3NldnV3UUJBQUR3SVpTOEFBQUE2Sk5icXJmbnhmdE1DbDRQMzdIRkRRTUFNcWFpNUZqblZUOG1ZdTROWjM5MjZzRmJZMGZieVBmV1BlNS82N1NwWHlUZUZBRUFBTkFYU2w0QUFBRFoweXFDM0xIdjhCa2hBQUJaVnp6bzFQdldQVjQ4OVd2bi92YllkK2hrUExOOHBjRDh0d0VBQU1BVlVmSUNBQURJa3FLWjYxdmJHNmNKSWtmc09YUktDQURBZ09rKzlTdk9UZjM2Mm4zMXNmUDQ2RGowOXJEVWxyK21UQ2p4Y0FBQUFGd0JKUzhBQUFENmJNRTlkOFd5WjEvSTZmZDQ5TGlTRndDUWU2cUc3Kys0NHJMbHI4UEhmbVh0WS81ckVnRUFBTkFYU2w0QUFBRFp0Ym5qcWkvMFExNHpyRGpuMzJOU1F2dkJJemQ3SWdHQXZIQkIrZXVjcnJXUGgwK1Z4WTdESlhIaTlGV3g1YzJUOGZhSmRxc2ZjOThSRVFBQUFIMmg1QVVBQUpCZFBzd0JBQ0JqdXRZKzFvNDQrM3J1dWVsZkQ4ejZmQ3g0OUVkNWQ1NjZzU2Y4ZHdFQUFNQVZ1Rm9FQUFBQVdaV0tEM01hYW9mbHhmdmNzT042VHlRQUFBUEJ1a1lBQUtCUGxMd0FBQUN5eTRjNUFBQUFBQUJBbnloNUFRQUFrQnJOZXdjTEFRQWdoOVNXNzA3TFVmM2hEd0FBb0UrVXZBQUFBTElyRlIvbTNEeXhQUy9lWjl0SkR5UUFBUDJ2ZnZHbUkxSUFBQUQ2UXNrTEFBQWd1M3lZazBQMkhUNGpCQUNBSEZGVFU1dVdveDUxdHdFQWdMNVM4Z0lBQU1pdVZKUzhTb3ZmeVl2M3VlZlFLVThrQUVDT21IN0w1TFFjMWFwR0FBQ2d6NVM4QUFBQXNxaG81dnBVZktBemVkU3V2SGlmUjQ4cmVRRUFBQUFBa0grVXZBQUFBRWlOWmMrK0lBUUFnQnd4YXNTUXRCelZKQzhBQUtEUGxMd0FBQUN5YjIwYURqbm56aG51TkFBQVY2eWlMRFVmVVJ4eHR3RUFnTDVTOGdJQUFDQWpxc2FPeUl2M3VXSEg5VzRXQUFEOXFWVUVBQUJBWHlsNUFRQUFaRityQ0FBQTRFSjFZMC80N3dFQUFJQXJwT1FGQUFDUWZhMXBPR1JEN2JDOGVKL05ld2Q3SWdFQTZFL1dOUUlBQUgybTVBVUFBSkI5UHRUSklXMG5aUUNRRGF2ZnFCVUMwQ01WSlcycE9HZjk0azFON2pZQUFOQlhTbDRBQUFEWmw0b1BkY2FOeUkvM3VlL3dHVThrUUJaODVldkw0cThiSjhhcFh4WUxBN2dpNVNrcGVRRUFBR1NDa2hjQUFBQVpNZjdhOXJ4NG4zc09uWEt6QUxMazhTZWZpd2UvZVRpYTM2b1NCc0JaYTBVQUFBQmtncElYQUFCQWxoWE5YTjhvaGR4eDlMaVNGMEEydGJRMHg0SkhmeFJQTmRXWjZnVjhvRVVMNXdvQkFBQ2dCNVM4QUFBQXlJaGJxcmZueGZ0Yzl1d0xiaFpBUC9qR1h6d1ZqMzEvaUtsZVFObzFpUUFBQU1nRUpTOEFBSUQrWVUwTEFLbXphdlc2enFsZWY5MDQwVlF2NEFLalJneEp5MUdQdU5zQUFFQW1LSGtCQUFDUU1RdnV1U3N2M3VlR0hkZTdXUUQ5NlBFbm40c0h2M2s0VnI5Ukt3eWdVMFZaYWo2ZWFIVzNBUUNBVEZEeUFnQUE2QitwV05OeXpUQlRXZ0M0dEphVzV2aksxNWZGLy92MFdDc2NnUmlhbWtGZVNsNEFBRUJtS0hrQkFBRDBqMVNzYVNrZFZwUVg3N041NzJCUEpNQUFlV2I1eXM0VmpuLy9reG9ySENIRnFrYWNTTXRSVzkxdEFBQWdFNVM4QUFBQStrY3FKbmxOR3A4ZjVhbTJreDVJZ0lIMnJjZWY3bHpodU9JLzZwUzlnSUpWdjNoVHF4UUFBSUJNVVBJQ0FBRG9IMGRFa0R2MkhUNGpCSUFja0t4dy9CLy82Nmw0N1B0RDR1VWRrd1FDS1ZKYnZqc054M3pUblFZQUFESmxrQWdBQUFENlJTb21lZDA4c1QwdjN1ZWVRNmM4a1FBNVpOWHFkUjFYeEwzejVzUURzd1pGN1lpZFFnRUtRYXNJQUFDQVRESEpDd0FBb0I4VXpWeHZrbGNPT1hwY3lRc2dGejJ6ZkdVc2VQUkg4YitmcjQ3bXQ2b0VBZ1VxS1hTbVJLdTdEUUFBWklxU0Z3QUFRUDhwK0hVdGswZnZ5NHYzdWV6WkZ6eU5rQUZybXV1RVFGWXNXYnFpcyt6MTl6K3BpVU1ueXdRQ0JXYlkwS0swSExYVjNRWUFBREpGeVFzQUFLRC90QmI2QVV1SG5IQ1hJUVdTY3RkdmZHTjQvT082azhJZ3E3NzErTk14NjBzdktYdEJnUmsxWW9qZi93TUFBUFNRa2hjQUFFRC9hVXJESVJmY2MxZGV2TThOTzY3M1JFSVBiVGxRSFY5K29qcm1mUEVmWXVXTGF3VkN2MUgyZ3NKU1VaYWFqeVphM1cwQUFDQlRCb2tBQUFDZzN4eEp3eUd2R1Zic1RrT0IyWFZzWkR5eGVrUjg0OXRMaGNHQVNzcGUzK3I0K3Z0ZnZpOCtYNzgvS2txT0NRWHlVRVhwbWJRY3RkWGRCZ0FBTWtYSkN3QUFvUCtrWXBMWDJKSDVVZkpxM2pzNHBsWjdLT0Z5bEx2SVZkM0xYck0rZGl5cWh1OFhDdVNSaW1HblUzSE8rc1diV3QxdEFBQWdVNVM4QUFBQStrOHFKbm1OSGZHUnZIaWZiU2M5a1BCQnVzcGRTMWU4RWkwdHpRSWhaM1dWdlJZdG5CdDMzL1p1MUk3WUtSVElBME9MMnROd3pEZmRhUUFBSUpPVXZBQUFBUHBQS2laNWpSdVJIKzl6MytFem5raTRpTWxkNUtzbFMxZDBYR2ZMWHAvNjJPQ1lYdjJHVUNDSFZaWWVTTU14VzkxcEFBQWdrNVM4QUFBQStrblJ6UFZIMmh1bkZmdzV4MStiSDVNWjlodzY1YUdFY3pic3VENmVmK1VqeWwza3ZjNnlWOGZYMmJQdWlQdG1qWXhQak5zVnhZUDg4eDV5U1UxTmJWcU8ydXB1QXdBQW1hVGtCUUFBMEw4MmQxejFoWHpBY1dWdGVmRStqeDczb1Q4cy8vY3A4Zno2dCtPSkpVOEpnNEt5YXZXNmp1dHNtZVFMOXpYRTlJbDdvNkxrbUdBZ0IweS9aWExIcjd2U2NOUldkeHNBQU1na0pTOEFBSUQrZGFUUUQxaDV6Y0c4ZUovTG5uMGhmdkRJelo1SVVxZnQ5UEQ0d1UrcllzVzZuYkh5eGU4TGhJTFcwdEljLytOL05YZCsvL3RmdmkrbVR6NFZ0U04yQ2dZRzBMQ1MxSHdzMGVSdUF3QUFtYVRrQlFBQTBMOGFPNjRaaFg3SU9YZk9pSlV2cm5XM0lZZFl5VWphZmV2eHB6dS8zanR2VG54MjJyQ1lYdjJHVUdBQVZJOHVTc3RSajdqYkFBQkFKaWw1QVFBQTlLOVVmTmhUTlhaRVhyelBwUFF5dFhxYnA1S0NsVXp0K3VlZlZjVS9yRXltZGxuSkNJbG5scS9zdU02dWNsejRHdzB4YTdKVmp0Q2ZoZzVKeHpuckYyOXFkTGNCQUlCTVV2SUNBQURvWDZsWTJ6SjJaTEU3RFFOb1RYTmR2UFRhdTZaMndXVWtxeHkvOFJjZFY4ZjNYLzdDL0pqKzBZajZNZHNGQTFsV05lS0VFQUFBQUhwQnlRc0FBS0IvcFdLUzE5Z1JIOG1MOTltOGQzQk1yZlpRVWhoMkhSc1pQM3k1SXRaczJCVXJYL3dIZ1VBUFBQN2tjL0Y0eDlmWnMrNkltVlBIeFBTSnBudEJ0bFNVdEtYaG1QYVdBd0FBR2Fma0JRQUEwSStLWnE1dmFtK2NWdkRuckJ2L3E3eDRuMjBuUFpQa3Q2VFl0ZmIxa2JIaTN3N0ZzbWRmRUFqMDBhclY2enF1czk4dldqZzNQdld4d1RHOStnM0JRQWFWcDZQa2RjU2RCZ0FBTWszSkN3QUFvUCs5MlhGTktPUURsZzQ1a3hmdmM5L2hNNTVHOGs3YjZlR3habXRWdlBUemQrSXZ2L3VVUUNCTGxpeGRFVXM2dnRiVTFNYmRzMitLV1I4N0ZsWEQ5d3NHK2lDWmx0ZnhiN0kwSExYSjNRWUFBREpOeVFzQUFLRC90VWFCbDd3bWo5NlhGKzl6ejZGVG5rYnlnbUlYREp5V2x1YjRWbkxGMllMS3IvL2E2S2dmdjg4NlIraUZzYVBMSWlVbHIxWjNHd0FBeURRbEx3QUFnUDZYL01uK0dZVjh3TkloSi9MaWZSNDlydVJGN2xMc2d0elRmWjNqbDc4d1Arb25YUjJmR0xjcmlnZjU5d2xjaVFualN0SnkxRlozR3dBQXlEUWxMd0FBZ1A1M0pBMkhmT2kzNXNjVDMzc3VwOS9qc21kZmlCODhjck1ua3B5eDY5aklXUHY2eUhpMVJiRUxjdDNqVDU3L2Q5enZmL20rcUo5NEp1ckhiQmNNWEViSjROUWMxYnBHQUFBZzQ1UzhBQUFBK2w5angvVzFRajlrNmJBaWR4cXV3SllEMWJHcGRWaXMrTGREbmNWRElQOTg2L0duTzcvVzFOVEczYk52VXZpQ0QxQmQwWjZLYzlZdjNuVEUzUVlBQURKTnlRc0FBS0QvcGVKRG4wbmo4Mk5VdzRZZDE4ZlU2bTJlU3ZyOXVYdnBQNHBpellaZHNmTEY1d1FDQmFLbHBUbSsxWEVsRkw3Zy9VcUtVbEh5V3V0T0F3QUEyYURrQlFBQTBNK0tacTV2YW0rY1Z2RG5MQzI1eXMyR2M5cE9ENDgxVzZ2aXBaKy9Fei82Y1ZPMHRGakZDSVZPNFF2ZXI3WjhkeHFPYVlvWEFBQ1FGVXBlQUFBQUEyTnp4MVZmeUFlc0cvdE9YcnpQNXIyRFkycTFCNUxNUzlZd3J2M0ZzRmo3cWpXTWtIWUtYM0QyMlUrSkpuY2JBQURJQmlVdkFBQ0FnVkh3ZjhKL1hGbGJYcnpQdHBNZVJqSmoxN0dSOGNxYkk2UHBqVE94ZE1VcjBkSmlEU1B3ZmhjWHZtYmZmbVBVVDdvNlBqRnVWeFFQT2lVZ0N0YjBXeVluLzdaTXcxR1Z2QUFBZ0t4UThnSUFBQmdZalIzWGpFSStZT1UxQi9QaWZlNDdmTWJUU0srdGFhNkxWN2RkRlJ1M0hEYXRDK2l4cFBEVmNxN3dsVmkwY0c1OHNxNDQ2c2Z2aTRxU1l3S2lvSXdhTVNRdFI3V3VFUUFBeUFvbEx3QUFnSUdSaWc5L0Z0eHpWODRYWC9ZY01qV0ZLOWUxZ3JHcCtlMTRZa2t5cWVzVm9RQVpzMlRwaWxoeTd2dlpzKzZJVyt2SFJNT0VFMUU3WXFkd3lIc1ZaVmVuNHB6MWl6YzF1dHNBQUVBMktIa0JBQUFNakZTc2Nha2FYWnJ6Ny9Ib2NTVXZQbGhTNnRyVU9peGViWGtuZnZUakppc1lnWDZ6YXZXNmp1dnM5OTNYT3RhTlBHREtGM21wdXFJOURjYzg2azREQUFEWm91UUZBQUF3TUZKUjhwbzBmbkRPdjhkazB0Z1BIcm5aRTBrbnBTNGdGMTI4MXZIZWVYUGloa2xsVVRldVBlckhiQmNRZWFHa0tCVWxyeVozR2dBQXlCWWxMd0FBZ0FGUU5IUDlrZmJHYVFWL3puRWozR3R5bTFJWGtJK2VXYjR5bnVuMmV0SEN1ZkhKdXVLb0czTTBxb2J2RnhBNXFiWjhkeHFPcWVRRkFBQmtqWklYQUFEQXdGbmJjYzBvNUFPT3Z6WS9KalpzMkhGOVRLM2U1b2xNQWFVdW9CQXRXYm9pbHB6N3ZtdTFZMTMxb0tnZnY4OXFSM0xDN0ZsM2RQemFsb2FqSG5HM0FRQ0FiRkh5QWdBQUdEaXRVZUFscjhtajk3bkxES2lrd0xkcCsrQm9hbjQ3bmxpU0ZMcGVFUXBRMEM1ZTdaaVVhMjZhUENwcUs5K051cEVIbEw0WUVHTkhsMFZLU2w2TjdqWUFBSkF0U2w0QUFBQURwN1hRRDFnNjVFVG5SSkh1SHpibm91YTlnMk5xdFFjeTMrMDZOaksyN2l1UFY3ZGRGUnUzSEk1bHo3NFFTbDFBMnExYXZhN2pPdis2ZSttcmVrU2I5WTcwaXdualN2eitIZ0FBb0krVXZBQUFBQVpPWThmMXRVSS81SXpiYnN6NWtsZmJTUTlqUHVwYXZkaXk2MHhzK1BtZVdQbmlTcUVBZklpTFMxL2QxenRXbDUrTTJoRTdoVVRHVlpTbTQ1ejFpemUxdXRzQUFFQzJLSGtCQUFBTW5DTnBPT1RZa2NVNS94NzNIVDdqYWN4eGJhZUh4OGIvSEI5YjkxeHQ5U0pBQmwyODNqR3hhT0hjbURLaEpLb3IybU55eFo0b0huUktVUFJKMVlnVGFUam1XbmNhQUFESUppVXZBQUNBQVZJMGMzMVRlK08wZ2ovbjJCRWZ5Zm4zdU9lUUQ2OXp6WVlkMTNldTBYeTE1WjNZOHNiK1dQbWl6MDBCK3N1U3BTc3VlTjIxNHJGcTFGV21mZEVyRlNWdGFUaG1xenNOQUFCa2s1SVhBQURBd05yY2NkVVg4Z0Z2bnRpZTgrL3g2SEVscjRHVXJGM2N1bmRZdE94K056WnVPUnpMbm4waFRPa0N5QjBYcjNoTUpOTytKb3dyaWFxS00xRTlvaTJxaHU4WEZCK29YTWtMQUFDZ3o1UzhBQUFBQmxackZIakphMXhaN24rb2w1U0tmdkRJelo3R2ZyRHIyTWpZdXE4OFh0MTJWVFR2UEdIdElrQ2V1bmphVjBMeGkwdEpub3VPM3dHazRhaU43allBQUpCTlNsNEFBQUFEcTZuanVydVFEMWg1elVGM09hVzZDbDFiOTF3ZFRjMXZ4OXFYWDR1V0ZvVXVnRUwxWWNXdmtjTlBXL1dZUXFOR0RFbkxVWSs0MndBQVFEWXBlUUVBQUF5c3BqUWNjc0U5ZDUxYndaZTdOdXk0UHFaV2IvTkU5cEpDRndDWGNxbmkxNzN6NXNTWWlwS29HbDBVazhlZGlQTGlZMUZSY2t4WUJhcWk3T3BVbkxOKzhhWW1keHNBQU1nbUpTOEFBSUNCMVpxR1ExYU5MblduQzhpV0E5V3hkZSt3YU5uOWJyZVZpd0J3Wlo1WnZ2SjlQNnVwcVkzcHQwenVuUHBWVWZwdVZKZWZqT3JTZzFFODZKVEE4bHpkMkJOcE9PWm1keG9BQU1nMkpTOEFBSUFCVkRSemZWTjc0N1NDUCtlazhZTnovajAyN3gwY1U2czlreGRMSnB3bDJiVHNPaE43RHAwNlYrZ3lvUXVBekdwcGFlNjhMdGE5L0ZYUzhkc0prNy95ejlDaTlqUWNzOVdkQmdBQXNrM0pDd0FBWU9BbGYvSy92cEFQV0RmK1Z6bi9IdHRPcHZzaFROWXQ3ajVhRnB1Mko0V3VkMkxMRy90ajVZdHJRNkVMZ0lIMFFlV3Z4S0tGYzJONHlhRE90WThWcFdkaTVQRFRVVHRpcDlCeVRHWHBnVFFjMDZwR0FBQWc2NVM4QUFBQUJsNXJGSGpKYS93MXVkK2cybmY0VEdvZXVLN3BYSHNQbjEyM3VQYmwxNktsUlprTGdQeXlaT21LUy82OGEvclg2QkZEb3J6czZ2Y0tZTlkvOXI5NzU4M3ArSFYvR283YTZHNERBQURacHVRRkFBQXc4SkkvK1g5M0lSOXc4cWhkT2Y4ZWsxV0VoV2JMZ2VyWWM2UWt0dTY1Mm5RdUFGTGpjdE8vRWtueGFOalFvcGd5b2VUczcxUEduZWo4YWdwWTVsMVhPVHhTVXZKcWRiY0JBSUJzVS9JQ0FBQVllS2xZNzdMZ25ydGkyYk12NU96N08zbzhmMHRlM1ZjdEpoUEprc0xhRTB1ZUMyVXVBSGkvWjVhdnZPeGZUOVpBSmlhTUs0bVN3UkhWRmUweGRIQjdsQmNmaTRxU1l3THNnWXF5cTFOeHp2ckZtMXJkYlFBQUlOdVV2QUFBQUFaZUtrcGVWYU5MYy9yOUpRVzBIenh5YzA2L3h3OHVjd0VBbWZKQmF5Qzd1N2dJTm5USXUxRmRmblk5dGJXUTU5V05QWkdHWTY1MXB3RUFnUDZnNUFVQUFEREFpbWF1YjIxdm5GYnc1NXcwZnJDYmZZV1V1UUFndDExSkVheW1wamFtM3pLNTgvdlJJNFpFK2JtcFZoV2xaMkxrOE5PZDN4ZjZkTENLa3JZMFBBNnQvbzRBQUFENmc1SVhBQUJBYmtnbUFNd281QVBlUExFOTU5L2poaDNYeDlUcWJmMzIvMi9MZ2VyWWM2UWt0dTY1V3BrTEFBcE1TMHR6NTNXbFpzKzZJOGFPTG52djlaUUpKZTk5MzcwWWxzaVhhV0hsU2w0QUFBQVpvK1FGQUFDUUcxcWp3RXRlNDhyYVVubGoyMDRQankzN1I4ZWVJNE5qejFzUlRjMXZ4OUhqcHpyWFEwYTg0c2tIQURxdFdyMnUxLy9iZStmTjZmajFsemwxbnJNckxYZWw0ZFkxZW5vQkFJRCtvT1FGQUFDUUc1bzZydDh1NUFOV1huTXc1OTlqODk3Qk1iVzZkLy9iUzAzbFd2dnlhOUhTb3NnRkFHVFhNOHRYNXR4N0dqVmlTSnArSHc4QUFKQjFTbDRBQUFDNUlSVWZEajMwVy9QamllL2w3anJDdHBPWC8rdEprYXZ0VkZGczJqNDQzajc1YmpUdlBCRTc5N3dWSzE5TXRtMHFjd0VBZEtrZWRYVWFqbm0wZnZHbUkrNDJBQURRSDVTOEFBQUFja01xU2w2MTFVTnordjBsRTdnMjdMaSs4M3RGTGdDQTNxc2FjY0x2NFFFQUFESkl5UXNBQUNBSEZNMWNmNlM5Y2RxYkhkOU9LT1J6amgyUjJ4TWR2dkh0cGZFTmp5TUFRSjlWbHgxS3d6RWIzV2tBQUtDL1hDMENBQUNBbk5GYTZBZXNHL3VPdXd3QVVPQm16N29qaWdlZDl2dDNBQUNBREZMeUFnQUF5QjJOaFg3QVc2cTN1OHNBQUFWdTdPaXl0QnpWdWtZQUFLRGZLSGtCQUFEa2psUjhTRFRuemhudU5BQkFBWnN5b1NRVjU2eGZ2RW5KQ3dBQTZEZEtYZ0FBQUxtak5RMkgvT2lrMGU0MEFFQUJxNjVvVDhNeE43dlRBQUJBZjFMeUFnQUF5QkZGTTllblloTEFwUEdEM1d3QWdBSldNZlJFR281cGloY0FBTkN2bEx3QUFBQnl5OXBDUDJEZCtGKzV5d0FBQmF5eTlFQWFqcW5rQlFBQTlDc2xMd0FBZ054UzhCOFcxWTA2NGk0REFCU29SUXZuK24wN0FBQkFGaWg1QVFBQTVKYldRajlnNVRVSG82YW0xcDBHQUNoQUU4YVZwT1dvU2w0QUFFQy9VdklDQUFESUxmOC9lM2ZURzlkNXBnbjRCRkhwWTlLVU1wUmxSYVpwdDYwaWxWaVdpbzVvUzA0c3NVU0xwaExUaEw0Y2N4U3IwSUxjc1lNQU1VZVluWHZCN0xJa2tEOVErZ2ZVUHpqYTFxSkFMc2NRUUJLeWxSaGlhOGhSaGhpMVlYdXE3UFMwMC83U0I4azY1enpYQlJCbmZaL25YUlI0Ymp4dmlJOUZRMGYybXpRQVFBRTl2dk9UQ0RFWEs3V205YlFBQU1DR1V2SUNBQURJa0ZLMWtVYklPZEQzQThNR0FDaWczaC8rTlVKTVc3d0FBSUFOcCtRRkFBQ1FQWE5GRDlqLzJLZW1EQUJRUUQxZHR5TEVWUElDQUFBMm5KSVhBQUJBOWhUK28xSC9McmZiQUFBVXpabngwU2hSVTlNR0FBQTJtcElYQUFCQTloUys1Tld6WXlrcGwvdE1HZ0NnUVA2eDV4LzhYZ2NBQUZnblNsNEFBQURaRStLajBkQ1IvU1lOQUZBZ3ZidENmSEpZck5TYTF0SUNBQUFiVHNrTEFBQWdZMHJWUmhvaDUwRGZEd3diQUtCQUh2K3ZxeEZpMnVJRkFBQjBoSklYQUFCQU5zMFZQV0QvWTUrYU1nQkFnZlIxMzR3UVU4a0xBQURvQ0NVdkFBQ0FiQ3I4eDZQK1hXNjVBUUFvaWpQam8xR2lwcVlOQUFCMGdwSVhBQUJBTmhXKzVOV3pZeWtwbC90TUdnQ2dBSjdadTkzdmRBQUFnSFdrNUFVQUFKQk5JVDRlRFIzWmI5SUFBQVh3K001UElzUmNyTlNhMXRFQ0FBQWRvZVFGQUFDUVFhVnFJNDJRYzZEdkI0WU5BRkFBdlQvOGE0U1l0bmdCQUFBZG8rUUZBQUNRWFhORkQ5ai8yS2VtREFCUUFEMWR0eUxFVlBJQ0FBQTZSc2tMQUFBZ3V3ci9FYWwvbDl0dUFBRHk3c0xFV0pTb3FXa0RBQUNkb3VRRkFBQ1FYWVV2ZWZYc1dFcEdUd3laTkFCQWpqMjVaNXZmNXdBQUFPdE15UXNBQUNDNzBnZ2hmN0wzVVpNR0FNaXgvajBmUjRpNVdLazFyYUVGQUFBNlJza0xBQUFnbzByVlJvaE5BWHNmMjJ6WUFBQTU5dmoyMnhGaXBpWU5BQUIwa3BJWEFBQkF0bDByZXNCRFQzMXN5Z0FBT1ZVdTl5WGQyKzVFaU9xcVJnQUFvS09VdkFBQUFMS3Q4QitUQm52blRSa0FJS2RPSE4zdmR6a0FBTUFHVVBJQ0FBREl0aEFmazg2ZFBtblNBQUE1MVB0b0tVVE9TcTJabWpZQUFOQkpTbDRBQUFEWmxrWUlPZmpqYnBNR0FNaWgvaCt0Um9oNXphUUJBSUJPVS9JQ0FBRElzRksxc2RCNnJCUTlaM25QOXd3YkFDQ0grcnB2Um9qcHFrWUFBS0RqbEx3QUFBQ3lMeTE2d0VOUDNEWmxBSUNjT1RNK0dpV3FraGNBQU5CeFNsNEFBQURaVi9pUFNqMDdscEp5dWMra0FRQnk1Sm05MjZORVRVMGJBQURvTkNVdkFBQ0E3RXNqaEJ4N2VjQ2tBUUJ5NVBHZG4wU0l1VktwTlJkTUd3QUE2RFFsTHdBQWdPd0xjVDNNM3NjMm16UUFRSTcwUDdJVUlXWnEwZ0FBUUJZb2VRRUFBR1JjcWRwWWJqM21pcDd6MEZNZkd6WUFRRTZNREI5THVyZmRpUkIxMXJRQkFJQXNVUElDQUFESWg4Si9YQnJzblRkbEFJQ2MyUHRrZDVTb3FXa0RBQUJab09RRkFBQ1FEMm1Fa0pmZVBHWFNBQUE1c0srM0ZDSm5wZFpNVFJzQUFNZ0NKUzhBQUlCOFNDT0U3T3Y5THlZTkFKQUQvWSt1UklnNVo5SUFBRUJXS0hrQkFBRGtRS25hV0dnOUN2OGw3Ym1uUHpOc0FJQWM2T202RlNGbWF0SUFBRUJXS0hrQkFBRGtSMXIwZ0lPOU4wMFpBQ0RqTGt5TVJZazZhOW9BQUVCV0tIa0JBQURrUitFL01uVnRXVTNPblQ1cDBnQUFHZmJqSjdkRmlacWFOZ0FBa0JWS1hnQUFBUG1SUmdpNTc4a2ZtalFBUUliMS8yZzFRc3pGU3EyNVlOb0FBRUJXS0hrQkFBRGtSS25hU0NQa2ZPN3A3eHMyQUVDRzlYV0h1R0xiVlkwQUFFQ21LSGtCQUFEa3k3V2lCenoweEcxVEJnRElxQXNUWTFHaXBxWU5BQUJraVpJWEFBQkF2aFIrbzBEUGpxVms5TVNRU1FNQVpOQ1RlN1pGaVpxYU5nQUFrQ1ZLWGdBQUFQbVNSZ2c1K093ZWt3WUF5S0QrUFI5SGlMbFNxVFZkMXdnQUFHU0traGNBQUVDK3BCRkNQdmYwOTAwYUFDQ0QrbmYrSlVKTUJTOEFBQ0J6bEx3QUFBQnlwRlJ0TExjZWMwWFBlZWlKMjRZTkFKQXhaOFpIazYyYjdrYUltcG8yQUFDUU5VcGVBQUFBK1pNV1BXRFBqcVZrOU1TUVNRTUFaTWd6ZTdmN3ZRMEFBTkFoU2w0QUFBRDVFK0w2bU1Gbjk1ZzBBRUNHOU8vNU9FVE9TcTJabWpZQUFKQTFTbDRBQUFENWswWUkrZHpUM3pkcEFJQU02ZC81bHdneHI1azBBQUNRUlVwZUFBQUFPVk9xTmhaYWo4V2k1enoweEczREJnRElpRFBqbzhuV1RYY2pSRTFOR3dBQXlDSWxMd0FBZ0h4S2l4NndaOGRTTW5waXlLUUJBRExnbWIzYi9jNEdBQURvSUNVdkFBQ0FmRW9qaEJ4OGRvOUpBd0JrUVArZWo2TkVuVFZ0QUFBZ2k1UzhBQUFBOGltTkVQSzVwNzl2MGdBQUdYQnc5MktFbUhPVlduUFp0QUVBZ0N4UzhnSUFBTWloVXJXeDBIb1Uva3Zib1NkdUd6WUFRSWRkbUJpTEVqVTFiUUFBSUt1VXZBQUFBUElyTFhyQW5oMUx5ZWlKSVpNR0FPaWdIeis1emU5ckFBQ0FEbFB5QWdBQXlLODBRc2pqei9lWU5BQkFCL1gvYU5YdmF3QUFnQTVUOGdJQUFNaXZORUxJNTU3K3pLUUJBRHFrWE81TCtycHZSb2c2VjZrMWwwMGNBQURJS2lVdkFBQ0FuQ3BWR3d1dHgyTFJjdzcyM2pSc0FJQU9PWEYwZjVTb3FXa0RBQUJacHVRRkFBQ1FiMm5SQTNadFdVM09uVDVwMGdBQUhiQ3Z0K1IzTlFBQVFBWW9lUUVBQU9SYkdpSGswTUJPa3dZQTZJRCtSMWY4cmdZQUFNZ0FKUzhBQUlCOFN5T0VQUFRVeHlZTkFMREJSb2FQSlQxZHR5SkV2VmFwTlpkTkhBQUF5RElsTHdBQWdCd3JWUnNMcmNkaTBYTU85czRuNVhLZmdRTUFiS0FEKzNaRmlacWFOZ0FBa0hWS1hnQUFBUG1YUmdnNTl2S0FTUU1BYktEK25zLzhuZ1lBQU1nSUpTOEFBSUQ4U3lPRUhOaTd4YVFCQURieTk5ZWVteUZ5Vm1yTjFMUUJBSUNzVS9JQ0FBREl2NWtJSVlmNi85V2tBUUEyeUpueDBXVHJwcnNSb2w0emJRQUFJQStVdkFBQUFIS3VWRzBzdHg1elJjL1pzMk1wR1QweFpPQUFBQnZnbWIzYm8wUk5UUnNBQU1nREpTOEFBSUJpU0NPRVBQNThqMGtEQUd5QXloT3JVYUxPbURZQUFKQUhTbDRBQUFERmtFWUkrZHpUbjVrMEFNQTZLNWY3a3I3dW14R2lybFJxelZrVEJ3QUE4a0RKQ3dBQW9CalNDQ0VIZTIrYU5BREFPanR4ZEwvZjBBQUFBQm1qNUFVQUFGQUFwV3BqdWZXNFZ2U2NYVnRXazB0dm5qSndBSUIxTkxBM3pLZUQxTFFCQUlDOFVQSUNBQUFvampSQ3lLTUgvOEdrQVFEV1VmOGpTMUdpenBnMkFBQ1FGMHBlQUFBQXhSSGlJOVdoZi95clNRTUFySk16NDZOSjk3WTdFYUl1Vm1yTkJSTUhBQUR5UXNrTEFBQ2dJRXJWeG16cnNWTDBuUHQyZlppTW5oZ3ljQUNBZGZETTN1MVJvcWFtRFFBQTVJbVNGd0FBUUxHa0VVSU9QcnZIcEFFQTFrSGxpZFVvVVYzVkNBQUE1SXFTRndBQVFMR0UrRmgxYlAvM1RCb0FZSTJWeTMxSlgvZk5LSEZURXdjQUFQSkV5UXNBQUtCWTBnZ2hqNWV2bXpRQXdCb2JIemtZSmVwY3BkWmNObkVBQUNCUGxMd0FBQUFLcEZSdExMUWVpeEd5VHI3OXVvRURBS3loL3A3UG9rUjFWU01BQUpBN1NsNEFBQURGRStLajFVdjdONXMwQU1BYUd0Z1Q1cXBHSlM4QUFDQjNsTHdBQUFDS0o0MFE4dEFUdDAwYUFHQ05uQmtmVGJadXVoc2g2a3FsMXB3MWNRQUFJRytVdkFBQUFBcW1WRzJFMkV6UXMyTXBPWGY2cElFREFLeUJvd1BibzBSTlRSc0FBTWdqSlM4QUFJQml1aFloNU5EQVRwTUdBRmdEL1krdVJJbnFxa1lBQUNDWGxMd0FBQUNLS2NUSHErcFAvbzlKQXdBOHBKSGhZMGxQMTYwb2NWTVRCd0FBOGtqSkN3QUFvSmpTQ0NIMzdmb3dHVDB4Wk5vQUFBL2hjR1YzbEtoemxWcHp3Y1FCQUlBOFV2SUNBQUFvb0ZLMU1kdDZMRWJJT3Zqc0hnTUhBSGdJbFNkV28wUk5UUnNBQU1nckpTOEFBSURpU2lPRVBMYi9leVlOQVBDQXl1VytwSy83WnBTNE15WU9BQURrbFpJWEFBQkFjWVg0aUhXOGZQM3pqNU1BQU55LzhaR0RVYUt1VkdyTjFNUUJBSUM4VXZJQ0FBQW9xRksxRVdaVHdSdGpod3djQU9BQkREejFTWlNvcVdrREFBQjVwdVFGQUFCUWJGY2poSHp1NmUrYk5BREFBemk0ZXpGS1ZGYzFBZ0FBdWFia0JRQUFVR3hwaEpESCt6OHdhUUNBKy9UT3hWT1I0aXA1QVFBQXVhYmtCUUFBVUd3aFBtWjFiVmxOSnQ5KzNiUUJBTzdEd040d253am1Lclhtc29rREFBQjVwdVFGQUFCUVlLVnFZNkgxQ0hFSHowdjdOeHM0QU1COUdOaHpNMHBVVzd3QUFJRGNVL0lDQUFBb3ZoQWZ0VnpaQ0FCdzc5cFhOVzdkZE5mdllRQUFnSnhROGdJQUFDaStNRmMybmp0OTByUUJBTzdCdnQ1U2xLaUxsVnB6MXNRQkFJQzhVL0lDQUFBb3VGSzFrYlllS3hHeWpyMzRpSUVEQU55RHltTWZSWW1hbWpZQUFGQUVTbDRBQUFBeGhOam1OZFQvcnlZTkFQQWR6b3lQSnQzYjd2Z2REQUFBa0NOS1hnQUFBREdrRVVMMjdGaHlaU01Bd0hjNE9yQTlUTlpLcmFua0JRQUFGSUtTRndBQVFBeGhQbTY1c2hFQTROc0Z1cXJ4cW1rREFBQkZvZVFGQUFBUVFLbmFXRTZDZk9SeVpTTUF3RGR6VlNNQUFFQStLWGtCQUFERWtVWUk2Y3BHQUlCdkZ1bXF4a1RKQ3dBQUtCQWxMd0FBZ0RoYzJRZ0FFRnlncXhybktyWG1zb2tEQUFCRm9lUUZBQUFRUktuYVdHZzk1aUprZFdVakFNQlhCYnVxc1c3aUFBQkFrU2g1QVFBQXhCSmltNWNyR3dFQXZzcFZqUUFBQVBtbDVBVUFBQkNMS3hzQkFJSUtkRlhqWXFYV1hEQnhBQUNnU0pTOEFBQUFBaWxWRzdPdHgyS0VySzVzQkFENEQ4R3VhclRGQ3dBQUtCd2xMd0FBZ0hoYzJRZ0FFRXl3cXhyckpnNEFBQlNOa2hjQUFFQThybXdFQUFnbTJGV05zeVlPQUFBVWpaSVhBQUJBTUtWcUkyMDlWaUprZmUzZ0RRTUhBTUo3NStJcFZ6VUNBQURrbkpJWEFBQkFUQ0UrZm5WdFdVMG0zMzdkdEFHQTBBYjJodm9Va0pvNEFBQlFSRXBlQUFBQU1ZWFpjUERTL3MybURRQ0VOckRuWnBTb0s1VmEweVl2QUFDZ2tKUzhBQUFBQWlwVkcrMlBYeUd1YkR6ZS80R0JBd0JodGE5cTNMcnBicFM0Q2w0QUFFQmhLWGtCQUFERTVjcEdBSUNDQzNaVm81SVhBQUJRV0VwZUFBQUFjWVg1Q1BhTHdVMm1EUUNFVXk3M0pVZDY1NlBFZFZVakFBQlFhRXBlQUFBQVFmM3R5c1lRanBldmYvNlJFd0Fna3ZHUmc1SGlLbmdCQUFDRnB1UUZBQUFRMjlVb1FkOFlPMlRhQUVBb0EwOTlFaW11a2hjQUFGQm9TbDRBQUFDeGhma1k5dXBQUHpWdEFDQ01rZUZqeWNIZGkxSGl1cW9SQUFBb1BDVXZBQUNBMk1KOERCdnNuVTlHVHd5Wk9BQVF3dUhLN2toeFV4TUhBQUNLVHNrTEFBQWdzRksxc1p3RXVyTHgrUE05aGc0QWhQRGkzcFZJY1czeEFnQUFDay9KQ3dBQWdEQWZ4ZDQ0L0w5TUd3QW92RFBqbzBsUDF5Mi9ad0VBQUFwRXlRc0FBSUF3SDhWNmRpd2w1MDZmTkhFQW9OQ09EbXlQRlBkcXBkWmNOblVBQUtEb2xMd0FBQUNDaTNabDQ5aUxqeGc2QUZCb2xjYytpaFRYRmk4QUFDQUVKUzhBQUFEYXdud2NlKzNnRGRNR0FBcnJuWXVua3U1dGQ2TEVYYW5VbW5WVEJ3QUFJbER5QWdBQW9DMU15YXRyeTJveStmYnJKZzRBRk5MQTNsRC85cmZGQ3dBQUNFUEpDd0FBZ0grL3N2RktsTHkvR054azZBQkE0WlRMZmNtUjN2bElrWlc4QUFDQU1KUzhBQUFBK0hkaFBwSWRMMS8vL0NNb0FFQ1JqSThjakJTM2ZWV2praGNBQUJDR2toY0FBQUNmSzFVYjdZOWtLMUh5dnZYNjg0WU9BQlRLeS92dlJJcXI0QVVBQUlTaTVBVUFBTUNYaGZsWTl1cHpxNllOQUJUR3lQQ3hwS2ZybHQrdEFBQUFCYVhrQlFBQXdKZUYrVmkyYjllSHliblRKMDBjQUNpRVg3NjBPMUpjVnpVQ0FBRGhLSGtCQUFEdy8wVzdzbkhpK0U1REJ3QUs0Y1VuYjBTS3ErQUZBQUNFbytRRkFBREFmeGJtbzlueC9nOU1Hd0RJdlhjdW5rcTJicm9iS1hMZDFBRUFnR2lVdkFBQUFQalBwcU1FN2RxeW1ydzNPV0hpQUVDdS9ld25vZUl1Vm1yTjFOUUJBSUJvbEx3QUFBRDRPNlZxWTdiMVdJeVM5OVdmZm1yb0FFQnVqUXdmU3c3dVhvd1UyVldOQUFCQVNFcGVBQUFBZkowd0g4OEdlK2VUMFJOREpnNEE1TkxoeXU1b2tldW1EZ0FBUktUa0JRQUF3TmVwUndvN2R2UnhFd2NBY21sNDMwZVI0cmF2YXB3MWRRQUFJQ0lsTHdBQUFMN2liMWMyemtYSk8xYTViZWdBUU81Y21CaEx1cmZkaVJSNTJ0UUJBSUNvbEx3QUFBRDRKdlVvUVh0MkxDV1RiNzl1NGdCQXJ2ejgyYzNSSXMrWU9nQUFFSldTRndBQUFOOGsxRWUwWHd4dU1uRUFJRGZLNWI3a1NPOThwTWh6bFZwendlUUJBSUNvbEx3QUFBRDRXcVZxWTZIMXVCWWw3L0h5OVdUMHhKREJBd0M1TVBIYVFMVElybW9FQUFCQ1UvSUNBQURnMjlRamhSMDcrcmlKQXdDNU1MenZvMmlSWGRVSUFBQ0VwdVFGQUFEQXR3bjFNVzJzY3R2RUFZRE11ekF4bG5SdnV4TXA4dFZLcmJsczhnQUFRR1JLWGdBQUFIeWpVclhSL3BoMkpVcmVuaDFMeWVUYnJ4czhBSkJwUDM5MmM3VElkVk1IQUFDaVUvSUNBQURndTRUYTV2V3JuMy9QeEFHQXpDcVgrNUlqdmZPUklxOVVhazFYTlFJQUFPRXBlUUVBQVBDdFN0VkcrNlBhWXBTOGc3M3p5ZWlKSVlNSEFETHA0dG1CYUpIcnBnNEFBS0RrQlFBQXdMMEp0VDNodjczU2ErSUFRQ2E5K05SSDBTTFhUUjBBQUVESkN3QUFnSHRUanhUMnRZTTNUQndBeUp4M0xwNUt1cmZkaVJSNXNWSnJ6cG84QUFDQWtoY0FBQUQzb0ZSdHREK3V6VVhKMjdWbE5YbHZjc0xnQVlCTStkbFB3a1dlTm5VQUFJQXZLSGtCQUFCd3IrcVJ3azc4N1ArYU9BQ1FHU1BEeDVLRHV4ZWp4WjR4ZVFBQWdDOG9lUUVBQUhDdjZwSEM3dHYxWVhMdTlFbFRCd0F5NFpjdjdZNFcrV3FsMWx3d2VRQUFnQzhvZVFFQUFIQlBTdFhHY3V0eE5WTG1pZU03RFI0QTZMaHl1Uzk1OGNrYjBXTFhUUjRBQU9BL0tIa0JBQUJ3UCtxUndvNGZlUC96ajZvQUFCMzlUVEp5TU5tNjZXNmt5Q3VWV3ROVmpRQUFBRitpNUFVQUFNQTlLMVViN1k5dGk1RXl2M3ZoQllNSEFEcnE1ZjEzb2tXdW16b0FBTURmVS9JQ0FBRGdmb1hhcWpCV3VXM2lBRURIWEpnWVMzcTZia1dMWFRkNUFBQ0F2NmZrQlFBQXdQMmFqaFMyWjhkUzh0N2toS2tEQUIzeDgyYzNSNHM4VjZrMVowMGVBQURnN3lsNUFRQUFjRjlLMWNaQzYzRXRVdVpYZi9xcHdRTUFHMjVrK0ZoeXBIYytXdXhwa3djQUFQZ3FKUzhBQUFBZVJEMVMyTUhlK2VUYzZaT21EZ0JzcUYrK3REdGk3Qm1UQndBQStDb2xMd0FBQUI1RSsrUGJTcVRBRThkM21qb0FzR0hLNWI3a3hTZHZSSXQ5cFZKckxwcytBQURBVnlsNUFRQUFjTjlLMVViNzQxdW9MUXZqQjk3Ly9HTXJBTUNHL1BZWU9aaHMzWFEzV3V5NnlRTUFBSHc5SlM4QUFBQWUxSFMwd085ZWVNSFVBWUFOTVZhNUZTM3lZcVhXVEUwZUFBRGc2eWw1QVFBQThFQksxY1pzNnpFWEtmUDV3eDhZUEFDdzdpNU1qQ1hkMis1RWl6MXQ4Z0FBQU45TXlRc0FBSUNIRWVwalhOZVcxZVM5eVFsVEJ3RFcxZmpoenlMR3JwczhBQURBTjFQeUFnQUE0R0hNdFA1V0lnVitxN3BpNmdEQXVoa1pQcGIwZGQrTUZ2dEtwZFpjTm4wQUFJQnZwdVFGQUFEQUF5dFZHKzJQY1RPUk12ZnNXRW91dlhuSzhBR0FkWEYyK0pHSXNlc21Ed0FBOE8yVXZBQUFBSGhZMDlFQ1gzcGxzNmtEQUd1dXZjWHJTTzk4dE5pTGxWb3pOWDBBQUlCdnArUUZBQURBUXlsVkc3T3R4MXlreklPOTg4bm9pU0hEQndEV1ZQWDUzUkZqVDVzOEFBREFkMVB5QWdBQVlDMkUremozeitPUG16b0FzR2JLNWI3azVmNGJFYVBYVFI4QUFPQzdLWGtCQUFDd0ZtWmFmeXVSQW84ZmVOODJMd0JnN1g1YmpCeE10bTY2R3kzMmxVcXR1V3o2QUFBQTMwM0pDd0FBZ0lkV3FqYmFIK2Rtb3VVZU8ycWJGd0N3UnI4cktyY2l4cTZiUEFBQXdMMVI4Z0lBQUdDdGhMdXk4ZnpoRHo2L1dna0E0R0ZjL3UzWnBIdmJuV2l4Rnl1MVptcjZBQUFBOTBiSkN3QUFnRFZScWpabVc0OXJrVEozYlZsTjNyM3dndUVEQUEvbDVmMTNJc2FlTm5rQUFJQjdwK1FGQUFEQVdxcEhDenhXdVczcUFNQUR1ekF4bHZSMGhidXFjU1Z4VlNNQUFNQjlVZklDQUFCZ3paU3FqWHJ5eFVlN01IcDJMQ1h2VFU0WVBnRHdRTVlQZnhZeDlreWwxbHcyZlFBQWdIdW41QVVBQU1CYXEwY0wvRloxeGRRQmdQdDJabncwNmV1K0dURzZxeG9CQUFEdWs1SVhBQUFBYXkzY1J6dmJ2QUNBQi9IS0N6K0lHUHRhcGRhY05YMEFBSUQ3bytRRkFBREFtaXBWR3d1dHg5Vm91Vi85NmFlR0R3RGNzNUhoWThtUjN2bUkwZXVtRHdBQWNQK1V2QUFBQUZnUDRiWjVEZmJPSjVmZVBHWHlBTUE5T1R2OFNNVFlLNVZhczI3NkFBQUE5MC9KQ3dBQWdEVlhxamJTMW1NeFd1NUxyMncyZkFEZ093WGU0alZ0K2dBQUFBOUd5UXNBQUlEMVlwc1hBTURYQ0xyRnE2MXUrZ0FBQUE5R3lRc0FBSUQxVW0vOXJVUUxiWnNYQVBCdHl1VytaR0RQellqUnIxUnF6UVVuQUFBQTRNRW9lUUVBQUxBdVN0WEdjdXN4RXkxM2U1dlg2SWtoQndBQStGb1h6dzRrV3pmZGpSaTlidm9BQUFBUFRza0xBQUNBOVRRVk1mUS9qejl1OGdEQVY3UzNlTDNjZnlOaTlMbEtyWms2QVFBQUFBOU95UXNBQUlCMVU2bzJGbHFQYTlGeWp4OTQzell2QU9BckFtL3htalo5QUFDQWg2UGtCUUFBd0hxYmloamFOaThBNE1zQ2IvRmFxZFNhZFNjQUFBRGc0U2g1QVFBQXNLNUsxVWJhZWl4R3kyMmJGd0R3WmJaNEFRQUE4RENVdkFBQUFOZ0lVeEZEMitZRkFMUUYzdUxWcHVRRkFBQ3dCcFM4QUFBQTJBZ3pyYitWYUtGdDh3SUEyZ0p2OGJwU3FUV1huUUFBQUlDSHArUUZBQURBdWl0VkcrMlBleUczT05qbUJRQ3gyZUlGQUFEQVdsRHlBZ0FBWUtQVUk0YTJ6UXNBWWd1OHhldGFwZGFjZFFJQUFBRFdocElYQUFBQUc2SlViU3kwSGxjaVpyZk5Dd0Jpc3NVTEFBQ0F0YUxrQlFBQXdFWUsrYkhQTmk4QWlDbndGcS9GU3EwNTR3UUFBQUNzSFNVdkFBQUFOa3lwMm1oZjJYTXRZbmJidkFBZ2x1QmJ2S2FjQUFBQWdMV2w1QVVBQU1CR3M4MExBQ2k4d0Z1OFZscC90bmdCQUFDc01TVXZBQUFBTmxTcDJtaC85RnVNbU4wMkx3Q0lJZmdXcitsS3JibnNGQUFBQUt3dEpTOEFBQUE2WVNwaWFOdThBQ0NHd0Z1ODJxYWRBQUFBZ0xXbjVBVUFBTUNHSzFVYjllU0xxM3pDc2MwTEFJb3QrQmF2SzdaNEFRQUFyQThsTHdBQUFEb2w1SmFIOWphdlMyK2VNbjBBS0tqZ1c3eW1uQUFBQUlEMW9lUUZBQUJBcDdSTFhpRzNlVjE2WmJQcEEwQUJCZC9pZGJWU2F5NDRCUUFBQU90RHlRc0FBSUNPS0ZVYjdhdDhaaUptSCt5ZHQ4MExBQXJvZi96VGdjaGJ2S2FkQUFBQWdQV2o1QVVBQUVBblRVVU5icHNYQUJUTHlQQ3g1RWp2Zk5UNDF5cTFadW9VQUFBQXJCOGxMd0FBQURxbVZHMHN0QjVYSW1hM3pRc0FpdVhzOENPUjQ5dmlCUUFBc002VXZBQUFBT2kwc0I4Rko4Y05Id0NLSVBnV3I4VktyVG5qRkFBQUFLd3ZKUzhBQUFBNnFsUnR6TFllMXlKbTM3ZnJ3K1M5eVFtSEFBQnk3c0xKN3NqeHA1d0FBQUNBOWFma0JRQUFRQlpNUlEzK1ZuWEY5QUVneHk1TWpDVUhkeTlHamQvZTRsVjNDZ0FBQU5hZmtoY0FBQUFkVjZvMjBpVG9OcStlSFV1MmVRRkFqbzBmL2l4eS9Ha25BQUFBWUdNb2VRRUFBSkFWWVQ4U1hqNzU1NlJjN25NQ0FDQm4ybHU4K3JwdlJvM2ZYa2RhZHdvQUFBQTJocElYQUFBQW1WQ3FObVphajVCM0hYVnRXVTNldmZDQ1F3QUFPWE94K3I4ang1K3UxSnJMVGdFQUFNREdVUElDQUFBZ1M2YWlCajkvK0FQYnZBQWdSeTcvOW16U3ZlMU8xUGp0TFY2dWFnUUFBTmhBU2w0QUFBQmtScW5hcUNlQnQzbjk4ZmUyZVFGQUhyU0wyV09WVzVGZmdTMWVBQUFBRzB6SkN3QUFnS3laaWhwOC9NRDd5ZWlKSVNjQUFETHU0dGtCVzd3QUFBRFlVRXBlQUFBQVpFcmtiVjV0bDk5NHpDRUFnQXhyYi9GNnVmOUc1RmN3WTRzWEFBREF4bFB5QWdBQUlJdW1vZ1kvWHI2ZVhIcnpsQk1BQUJuMXUvTUR5ZFpOZC8xT0F3QUFZRU1wZVFFQUFKQkZNOGtYVndHRmRPbVZ6VTRBQUdUUXlQQ3g1UGplNjVGZndaVktyYm5nSkFBQUFHdzhKUzhBQUFBeXAxUnR0SzhBbW82YWY3QjNQbmx2Y3NKQkFJQ011WEN5Ty9vcm1ISUtBQUFBT2tQSkN3QUFnS3hxbDd6Q2J2TjZxN3JpQkFCQWhseVlHRXNPN2w2TS9BcHM4UUlBQU9nZ0pTOEFBQUF5S2ZvMnI1NGRTOG1mL3ZCckJ3RUFNbUxpcFgrTC9ncW1uQUlBQUlET1VmSUNBQUFneTBKdjh6cC8rSU9rWE81ekNnQ2d3eTcvOW16UzAzVXI4aXV3eFFzQUFLRERsTHdBQUFESXJPamJ2THEyckNaLy9QMExEZ0lBZEZDN2NEMVd1Ulg5TlV3NUNRQUFBSjJsNUFVQUFFRFdoZDdtTlg3Zy9lVGM2Wk5PQVFCMHlNV3pBMG4zdGp1Ulg0RXRYZ0FBQUJtZzVBVUFBRUNtUmQvbTFYYjU5SFlIQVFBNllHVDRXUEp5LzQzb3IySEtTUUFBQU9nOEpTOEFBQUR5SVBRMnI4SGUrV1R5N2RlZEFnRFlZR2VISDBtMmJyb2IrUlhZNGdVQUFKQVJTbDRBQUFCa25tMWVTZkx1TC83cUlBREFCcm93TVpZYzZaMlAvaHFtbkFRQUFJQnNVUElDQUFBZ0wwSnY4K3Jac1pUODZRKy9kZ29BWUlOTXZQUnYwVitCTFY0QUFBQVpvdVFGQUFCQUx0am1sU1RuRDMrUWxNdDlEZ01BckxQTHZ6MmI5SFRkaXY0YXBwd0VBQUNBN0ZEeUFnQUFJRTlDYi9QcTJyS2EvUEgzTHpnRkFMQ08yb1hxWHcxK0dQMDEyT0lGQUFDUU1VcGVBQUFBNUladFhra3lmdUQ5NU5LYnB4d0dBRmdudnpzL2tHemRkRGY2YTVoeUVnQUFBTEpGeVFzQUFJQmNLVlViVTYzSFl1UjNNRG51SEFEQWVoZ1pQcFljMzNzOSttdXd4UXNBQUNDRGxMd0FBQURJbzZuSTRmZnQrakI1YjNMQ0tRQ0FOZmFiMTdxOEJGdThBQUFBTWtuSkN3QUFnTndwVlJ2MUpQZzJyOHNuLzV5VXkzME9Bd0Nza1hjdW5rcjZ1bTlHZncxL3NNVUxBQUFnbTVTOEFBQUF5S3VweU9HN3Rxd20vL0tidzA0QkFLeUJkbkg2VjRkdlIzOE5LNjIvYWFjQkFBQWdtNVM4QUFBQXlDWGJ2SkxrL1BQL016bDMrcVREQUFBUDZlTFpnYVI3MjUzb3IyRzZVbXN1T3cwQUFBRFpwT1FGQUFCQW5rMUZmd0dYVDI5M0NnRGdJWXdNSDB0ZWZlWjY5TmRnaXhjQUFFREdLWGtCQUFDUVczL2I1blV0OGpzWTdKMVAzcHVjY0JnQTRBSDk1clV1TDhFV0x3QUFnTXhUOGdJQUFDRHZwcUsvZ01zbi81eVV5MzFPQWdEY3AzY3Vua3I2dW05R2Z3M3Q2Njl0OFFJQUFNZzRKUzhBQUFCeXJWUnRwRW53YlY1ZFcxYVRQLzcrQlljQkFPNUR1eUQ5VHkvOXhZdElraWxidkFBQUFMSlB5UXNBQUlBaW1JcitBc1lQdko5Y2V2T1Vrd0FBOStoMzV3ZVNyWnZ1Um44Tmk1VmFzKzQwQUFBQVpKK1NGd0FBQUxuM3QyMWVWNk8vaDhseFp3RUE3c1daOGRIaytON3JYb1NpUEFBQVFHNG9lUUVBQUZBVWs5RmZ3TDVkSHlaLytzT3ZuUVFBK0E2WFh2bk1TMGlTYTdaNEFRQUE1SWVTRndBQUFJVlFxallXV284cjBkL0QrY01mSktNbmhod0lBUGdHLy9MZlgwOTZ1bTU1RWJaNEFRQUE1SXFTRndBQUFFVXkxZnBiaWZ3Q3VyYXNKcGZmZU14SkFJQ3ZVUzczSldQUDN2QWl2dGppbFhvTkFBQUErZkgvQkdEdi9tUHNxdTg3Lzc5Yitjb21td25VR3pkS1hDdFF4amlDa3V0SU1GamFDRit6K0VlS014NGJPK3NZZkJtdkZReHlVOFlPRFVGUVBFNGhZV21VakVtaTRrU29ZNUxRYUlPRVFkL3FHM1lqOVRwZjZTdmxKcnExbFg4S1RMQXRZcEtONldZR1Y2YnVxTXVlNCtzRUhOdmorWEYvbkh2djR5RWRIYVhpeDUzWEhScWtQUFg1aUx3QUFBQm9HMmRPOHhycTlCMldkWS9Fd0xZTmZpRUE0SGM4ZE9jMU1XZldLVU5FOUpzQUFBQ2d0WWk4QUFBQWFEZHA1RFhXNlNQODVkcGZuVDZ0QkFDb3VtdExYM3o0ZlVjTkViRXZYNndjTVFNQUFFQnJFWGtCQUFEUVZuS0Y4bWhVcjIzc2FPbTFqUS9lZVlOZkNBQ0k2aldObjdqaGZ4dWlHc0lQbWdFQUFLRDFpTHdBQUFCb083bENPVDNOcStPUDZ0aDAvWXV4OWZZK3Z4QUFkTHp0bXhiSDNFdE9HQ0ppeUNsZUFBQUFyVW5rQlFBQVFMc2FNRUV5UXE4TkFPaHM2M3BYeHJJclJ3eFJQY1ZyeUF3QUFBQ3RTZVFGQUFCQVc4b1Z5dnVUMTRGTzMySFJ2R1B4MWQyMytZVUFvR050WGZHV0Vhb0c4OFhLcUJrQUFBQmFrOGdMQUFDQWRqWm9nb2h0Tjc0VTY5ZXVNZ1FBSGVlUit6YkUvSzdqaG9nNG1pOVduT0lGQUFEUXdrUmVBQUFBdEsxY29WeEtYdnNzRWJGejdYdU1BRUJIV1g3VGpYSEwxYTVwUEtQZkJBQUFBSzFONUFVQUFFQzdHelJCeEhVTERzZWo5Mjh5QkFBZDQ4NlBkeG1oNmtDK1dDbVpBUUFBb0xXSnZBQUFBR2hydVVMNVNQTGFiWW1JVHkwOUZpdHZYbW9JQU5yZWd6czJ4TUs1cnhtaWFzQUVBQUFBclUva0JRQUFRQ2NZU3A2eFRoK2hhL2JKMkZWOG45OEdBTnBhZWszajZqOTUxUkJWKy9MRnlrRXpBQUFBdEQ2UkZ3QUFBRzB2VnlpUGhsTXNUbk50SXdEdExyMm1jYzZzVTRhb0J1NysvUWNBQUtCTmlMd0FBQURvQ0xsQ2VUaDVIYktFYXhzQmFGK3VhVHpMVUw1WUdUVURBQUJBZXhCNUFRQUEwRW1jWmhHdWJRU2dQYm1tOFN4SDg4WEtvQmtBQUFEYWg4Z0xBQUNBanBFcmxFdko2emxMdUxZUmdQYmptc2F6Q05zQkFBRGFqTWdMQUFDQVR1Ti85RHpEdFkwQXRBdlhOSjdsUUw1WTJXOEdBQUNBOWlMeUFnQUFvS1BrQ3VVanlXdTNKVnpiQ0VCN2NFM2pPUVR0QUFBQWJVamtCUUFBUUNjYVNwNmpabkJ0SXdDdHp6V05aOW1UTDFZT21nRUFBS0Q5aUx3QUFBRG9PTGxDZVRSNURWcWl5cldOQUxRcTF6U2VaY3kvM3dBQUFMUXZrUmNBQUFBZEtWY29EeWV2QTVad2JTTUFyY2sxamVjWXpCY3JvMllBQUFCb1R5SXZBQUFBT3RtQUNhcGMyd2hBcTNGTjQxa081WXVWSVRNQUFBQzBMNUVYQUFBQUhTdFhLQjlNWG5zc1VlWGFSZ0JhaFdzYXp5RmNCd0FBYUhNaUx3QUFBRHJkWVBLTW1hRjZiZU9YN3Z3RFF3Q1FhZXQ2VjhiNnhTT0dlTnUrZkxGU01nTUFBRUI3RTNrQkFBRFEwWEtGOG1nNC9lSzNGczA3RmwvZGZac2hBTWlzclN2ZU1zTGIwbEI5MEF3QUFBRHRUK1FGQUFCQXg4c1Z5c1BKNjRBbHFyYmQrRktzWDd2S0VBQmt6aVAzYllqNVhjY044YmFoZkxGeXhBd0FBQUR0VCtRRkFBQUFWVTd6ZW9kZG41d1QzZDBMRFFGQVptemV1RHB1dWRvMWplOXdORitzREpvQkFBQ2dNNGk4QUFBQUlFNmY1blV3ZWUyeFJGVjZiZU9EZDk1Z0NBQXlJUTJQdHhUZU1NVForazBBQUFEUU9VUmVBQUFBOExiQjVCa3pROVdtNjErTXJiZjNHUUtBcHJ1My85cVllOGtKUTd4dFg3NVlLWmtCQUFDZ2M0aThBQUFBNEl4Y29Ud2FybTA4eTJPMy85cTFqUUEwMVYxYittTEpnc09HZU51WWYxOEJBQURvUENJdkFBQUFlSWRjb1R5Y3ZBNVlvcXByOXNuNCtuM1hHUUtBcGxoKzA0M1IvOUZmR3VKc2cvbGlaZFFNQUFBQW5VWGtCUUFBQU9keU9zWTdMT3NlaVVmdjMyUUlBQnJ1em85M3haeFpwd3p4dGtQNVltWElEQUFBQUoxSDVBVUFBQUMvSTFjb0gweGV1eTN4dGs4dFBSYnIxNjR5QkFBTjg4aDlHMkxoM05jTWNiWitFd0FBQUhRbWtSY0FBQUNjWDNwS3hsRXpWS1hYTnU3NjVCeERBTkFRNjNwWHhpMVhqeGppYkh2eXhjcEJNd0FBQUhRbWtSY0FBQUNjUjY1UUhnM1hOcDVsMGJ4ak1melk3WVlBb0s2NnV4ZkduLzNwbTRZNDIxanlESm9CQUFDZ2M0bThBQUFBNEFKeWhmTCs1UFdjSmQ2MjZmb1hZMkRiQmtNQVVEZjM5bDhiY3k4NVlZaXo5ZWVMbFZFekFBQUFkQzZSRndBQUFFd3NQYzFyekF4dis4dTF2enA5eWdvQTFOck91MitOSlFzT0crSnNCL0xGeW40ekFBQUFkRGFSRndBQUFFd2dWeWdmQ2Rjam5hVnI5c2w0NnFHUEdBS0FtbHArMDQzeGlldU9HZUpzYVdqZWJ3WUFBQUJFWGdBQUFIQVJ1VUo1S0hrZHNzVGJybHR3T0w2Nit6WkRBRkF6QSt2bXhKeFpwd3h4dHNGOHNYTEVEQUFBQUlpOEFBQUFZSEw2VFhDMmJUZStGRnR2N3pNRUFEUDJsWWMyeFB5dTQ0WTQyNkY4c1RKa0JnQUFBRklpTHdBQUFKaUVYS0Y4TUhudHRzVFpIbHgvS3JxN0Z4b0NnR203YTB0ZkxMdHl4QkRuNmpjQkFBQUF2eUh5QWdBQWdNbExUOU00YW9hM3piLzA5Zmo2ZmRjWkFvQnBXWDdUamRILzBWOGE0bHg3OHNYS1FUTUFBQUR3R3lJdkFBQUFtS1Jjb1R3YVR0VTR4N0x1a1hqMC9rMkdBR0RLQnRiTmlUbXpUaG5pYkdsUVBtZ0dBQUFBM2tua0JRQUFBRk9RSzVSTHlXdVBKYzYyYzhYTHNYN3RLa01BTUdsZmVXaER6Tzg2Ym9oejllZUxsVkV6QUFBQThFNGlMd0FBQUppNndlUVpNOFBaL3ZxTzM0dnU3b1dHQU9DaTd0clNGOHV1SERIRXVkSnJHa3RtQUFBQTRIZUp2QUFBQUdDS1hOdDRmdk12ZlQyK2Z0OTFoZ0JnUXN0dnVqSDZQL3BMUTV3ckRjZ0h6UUFBQU1ENWlMd0FBQUJnR25LRjh2N2s5WndsenJhc2V5UWV2WCtUSVFDNG9JRjFjMkxPckZPR09KZHJHZ0VBQUxnZ2tSY0FBQUJNWDMrNHR2RWNPMWU4SEZ0djd6TUVBT2Y0eWtNYlluN1hjVU9jNjdsOHNiTGZEQUFBQUZ5SXlBc0FBQUNteWJXTkYvYlk3YitPN3U2RmhnRGd0M2JlZldzc3UzTEVFT2NhOCs4VEFBQUFYSXpJQ3dBQUFHYkF0WTNuMXpYN1pEejEwRWNNQWNCcDYzcFh4aWV1TzJhSTgzTk5Jd0FBQUJjbDhnSUFBSUNaNncvWE5wN2p1Z1dIWS9peDJ3MEIwT0hTa3gyM3JuZ3I1c3c2Wll4enVhWVJBQUNBU1JGNUFRQUF3QXk1dHZIQ05sMy9ZZ3hzMjJBSWdBNTJiLysxTWIvcnVDSE81WnBHQUFBQUprM2tCUUFBQURYZzJzWUwrOHUxdjRyMWExY1pBcUFEUGJoalF5eFpjTmdRNStlYVJnQUFBQ1pONUFVQUFBQzEweCt1YlR4SDEreVRzZXVUYzA1ZjF3VkE1OWk4Y1hXc1h6eGlpUE56VFNNQUFBQlRJdklDQUFDQUduRnQ0NFV0bW5jc3ZuN2ZkWVlBNkJCcDJMdDkrZXVHT0QvWE5BSUFBREJsSWk4QUFBQ29JZGMyWHRpeTdwRjQ5UDVOaGdEb0FIc0dyb2c1czA0WjR2eGMwd2dBQU1DVWlid0FBQUNnOXZyRHRZM250WFBGeTdIMTlqNURBTFN4Sng1ZUYvTzdqaHZpL0Z6VENBQUF3TFNJdkFBQUFLREdYTnM0c2NkdS8zV3N2SG1wSVFEYTBNNjdiNDBsQ3c0YjR2eGMwd2dBQU1DMGlid0FBQUNnRGx6YmVHRmRzMC9HbCs3OGcranVYbWdNZ0RheXJuZGxGSmU4WW9nTGMwMGpBQUFBMHlieUFnQUFnUHJwVDU2alpqalhvbm5INHRFLzd6RUVRSnRJdzkzUHJuRlQ4UVQydUtZUkFBQ0FtUkI1QVFBQVFKMjR0bkZpdmRlK0ZJL2V2OGtRQUcxZ3o4QVZNV2ZXS1VPY1h4cDhENW9CQUFDQW1SQjVBUUFBUUIzbEN1VlM4dHBqaWZQYnVlTGxHTmkyd1JBQUxleUpoOWZGL0s3amhyZ3cxelFDQUFBd1l5SXZBQUFBcUwvQjVEbGtodlA3eTdXL2l2VnJWeGtDb0FVOXVHTkRMRmx3MkJBWHRqdGZySlRNQUFBQXdFeUp2QUFBQUtET1hOczRzYTdaSjJQWEorZEVkL2RDWXdDMGtNMGJWOGY2eFNPR3VMQkQrV0psMEF3QUFBRFVnc2dMQUFBQUdpQlhLQjlNWHJzdGNYNkw1aDJMcHg3NmlDRUFXc1M2M3BXeGZmbnJocml3c1JCNEF3QUFVRU1pTHdBQUFHaVFYS0U4bUx3T1dPTDhybHR3T0lZZnU5MFFBQm1YbnJ5NGRjVmJNV2ZXS1dOYzJHQytXRGxvQmdBQUFHcEY1QVVBQUFDTjFSL1YwejA0ajAzWHZ4Z1BER3cwQkVDR2ZYSDdWVEcvNjdnaEx1eEF2bGdaTWdNQUFBQzFKUElDQUFDQUJzb1Z5a2ZDOVUwVDJyWG1aN0YrN1NwREFHVFFFdyt2aTRWelh6UEVoYVVoZDU4WkFBQUFxRFdSRndBQUFEUllybERlbjd6MldlTEM5bTU3VStnRmtERTc3NzQxbGl3NGJJaUo5ZWVMbFZFekFBQUFVR3NpTHdBQUFHaU9nZVE1YW9iejY1cDlNblo5Y2s1MGR5ODBCa0FHYk42NE9vcExYakhFeFBia2k1WDlaZ0FBQUtBZVJGNEFBQURRQkxsQ09UM2x3M1ZPRTFnMDcxZzg5ZEJIREFIUVpPdDZWOGIyNWE4YlltS0hrbWZRREFBQUFOU0x5QXNBQUFDYUpGY29IMHhldXkxeFlkY3RPQnpQUEg2YklRQ2FKRDFSY2V1S3QyTE9yRlBHdUxDeGNFMGpBQUFBZFNieUFnQUFnQ2JLRmNxRHlldUFKUzZzOTlxWDR0SDdOeGtDb0FuMkRGd1I4N3VPRzJKaWcvbGk1YUFaQUFBQXFDZVJGd0FBQURSZmVtM2ptQmt1Yk9lS2wrT0JnWTJHQUdpZ0p4NWVKL0M2dU9meXhjcVFHUUFBQUtnM2tSY0FBQUEwV2E1UVRxOTM2cmZFeEhhdStrV3NYN3ZLRUFBTjhNaDlHMkxKZ3NPR21OaFIvLzBOQUFCQW80aThBQUFBSUFOeWhmTCs1TFhIRWhmV05mdGs3TjMyWnF5OGVha3hBT3BvNTkyM3hpMVhqeGppNHZyenhjcW9HUUFBQUdnRWtSY0FBQUJrUks1UUhraGVoeXh4WVdubzlhVTcveUM2dXhjYUE2QU9ObTljSGNVbHJ4amk0bmJuaTVXU0dRQUFBR2dVa1JjQUFBQmtTMS95akpuaHdoYk5PeGJQZnVFYVF3RFUyTHJlbGJGOStldUd1TGdEK1dKbDBBd0FBQUEwa3NnTEFBQUFNaVJYS0I5Slh2MldtRmdhZWozeitHMkdBS2lSOUlURXo2NFppem16VGhsalltbUkzV2NHQUFBQUdrM2tCUUFBQUJtVEs1VDNKNjg5bHBoWTc3VXZ4ZkJqdHhzQ1lJYlN3R3ZQd0JVQ3I4bnB5eGNybzJZQUFBQ2cwVVJlQUFBQWtFMkR5WFBJREJQYmRQMkw4Y0RBUmtNQXpNQVh0MThWODd1T0crTGlkdWVMbFpJWkFBQUFhQWFSRndBQUFHUlFybEJPVHdsSnI0TWFzOGJFZHEzNW1kQUxZSnFlZUhoZExKejdtaUV1N2tDK1dCazBBd0FBQU0waThnSUFBSUNNeWhYS1I1Slh2eVV1YnVlcVg4VDZ0YXNNQVRBRmFlQzFaTUZoUTF4Y0dsejNtUUVBQUlCbUVua0JBQUJBaHVVSzVmM0phNDhsSnRZMSsyVHMzZmFtMEF0Z2tuYmVmYXZBYS9MNjhzWEtxQmtBQUFCb0pwRVhBQUFBWkZ5dVVCNUlYb2NzTWJIZmhGN2QzUXVOQVRDQk5QQXFMbm5GRUpPekkxK3NsTXdBQUFCQXM0bThBQUFBb0RXazEwU05tV0ZpYWVqMTdCZXVFWG9CWE1EbWphc0ZYcFAzWEw1WUdUSURBQUFBV1NEeUFnQUFnQmFRSzVTUEpLOStTMXpjb25uSGhGNEE1N0d1ZDJWc1gvNjZJU2JucVAvZUJRQUFJRXRFWGdBQUFOQWljb1h5L3VTMTJ4SVhsNFplWDcvdk9rTUFuSkVHWHA5ZE14WnpacDB5eHNXbEoyZjI1WXVWVVZNQUFBQ1FGU0l2QUFBQWFDRzVRbmt3ZVIyd3hNVXQ2eDZKWng2L3pSQkF4MHRQTnZ5elAzMVQ0RFY1QS9saTVhQVpBQUFBeUJLUkZ3QUFBTFNldnFoZUk4VkY5Rjc3a3RBTDZHaHA0TFZuNElxWWU4a0pZMHpPdm55eE1td0dBQUFBc2tia0JRQUFBQzBtVnlpbjEwZjFXV0p5MHREcjBmczNHUUxvT0w4SnZPWjNIVGZHNUJ6S0Z5djlaZ0FBQUNDTFJGNEFBQURRZ25LRmNucU4xQlpMVE03T0ZTL0hBd01iRFFGMEZJSFhsSXlGZ0JvQUFJQU1FM2tCQUFCQWk4b1Z5c1BKYTU4bEptZlhtcDhKdllDTzhjVEQ2d1JlVTlPWEwxYU9tQUVBQUlDc0Vua0JBQUJBQzhzVnl2M0o2NUFsSmtmb0JYU0NOUEJhc3VDd0lTWnZSNzVZS1prQkFBQ0FMQk41QVFBQVFPc3JSUFdhS1NZaERiM1dyMTFsQ0tBdENieW1iRisrV0JreUF3QUFBRmtuOGdJQUFJQVdseXVVUjZNYWVqRkplN2U5S2ZRQzJvN0FhOHJTa3pBSHpBQUFBRUFyRUhrQkFBQkFHOGdWeWdlVDF4WkxURTdYN0pOQ0w2Q3Q3THo3Vm9IWDFLUW5ZUGJsaTVWUlV3QUFBTkFLUkY0QUFBRFFKbktGOG5EeTJtZUp5UkY2QWUwaURieUtTMTR4eE5Ta2dkY1JNd0FBQU5BcVJGNEFBQURRUm5LRmNuOVVyNTlpRW9SZVFLc1RlRTNMam55eFVqSURBQUFBclVUa0JRQUFBTzJua0R4SHpUQTVRaStnVlFtOHBtVmZ2bGdaTWdNQUFBQ3RSdVFGQUFBQWJTWlhLSThtcjc3a0diUEc1S1NoMTEvZjhYdlIzYjNRR0VCTEVIaE55NkY4c2RKdkJnQUFBRnFSeUFzQUFBRGFVSzVRUHBpOEJpd3hlZk12ZlQyZS9jSTFRaThnOHdSZTA1S0d6d1V6QUFBQTBLcEVYZ0FBQU5DbWNvWHljUExhYlluSld6VHZtTkFMeURTQjE3U2NEcnp5eGNxb0tRQUFBR2hWSWk4QUFBQm9ZN2xDZVRCNTdiUEU1QW05Z0t3U2VFM2JRTDVZT1dnR0FBQUFXcG5JQ3dBQUFOcGZlbTNqSVROTW50QUx5QnFCMTdUdHpoY3J3MllBQUFDZzFZbThBQUFBb00zbEN1WDBlcXBDVksrcllwS0VYa0JXQ0x5bWJWKytXQmswQXdBQUFPMUE1QVVBQUFBZFFPZzFQVUl2b05rRVh0T1dubUE1WUFZQUFBRGFoY2dMQUFBQU9rU3VVRDRZL2dmdktSTjZBYzBpOEpxMk5HZ3U1SXVWVVZNQUFBRFFMa1JlQUFBQTBFRnloZkp3OHRwdGlha1JlZ0dOSnZDYU5vRVhBQUFBYlVua0JRQUFBQjBtVnlnUEpxOTlscGdhb1JmUUtBS3ZHZW5QRnlzSHpRQUFBRUM3RVhrQkFBQkFCOG9WeXYzSjY1QWxwa2JvQmRTYndHdEd0dVNMbGYxbUFBQUFvQjJKdkFBQUFLQnpGVUxvTldWQ0w2QmVCRjR6c2k5ZnJBeWJBUUFBZ0hZbDhnSUFBSUFPbFN1VVI1TlhmL0tNV1dOcTB0RHJSMS83UUt4ZnU4b1lRRTBJdkdia3VYeXgwbThHQUFBQTJwbklDd0FBQURwWXJsQStHTlVUdlppaXJ0a25ZKysyTjRWZXdJd0p2R1lrUFpHeTN3d0FBQUMwTzVFWEFBQUFkTGd6b2RjV1MweWQwQXVZS1lIWGpLUW5VUmJ5eGNxb0tRQUFBR2gzSWk4QUFBQWdEYjJHazljT1MweWQwQXVZTG9IWGpBaThBQUFBNkNnaUx3QUFBT0MwWEtFOGxMejJXV0xxaEY3QVZEM3g4RHFCMTh6MDVZdVZnMllBQUFDZ1U0aThBQUFBZ04vS0ZjcjlJZlNhbHQrRVhsdHY3ek1HTUtFMDhGcXk0TEFocG05THZsZ3BtUUVBQUlCT0l2SUNBQUFBZnRkQThod3l3OVNsb2RmZmJEMFdEd3hzTkFad1hnS3ZHZHVSTDFhR3pRQUFBRUNuRVhrQkFBQUFaOGtWeXFQSnF4QkNyMm5idGVablFpL2dIQUt2R2R1WEwxYUd6QUFBQUVBbkVua0JBQUFBNXpnVGVxWDNEbzVaWTNxRVhzQnZkSGN2akwvLzJncUIxOHlrZ1ZlL0dRQUFBT2hVSWk4QUFBRGd2SEtGOHBHb251Z2w5SnFtTlBRYWZ1eDJRMEFIU3dPdlBRTlh4UHl1NDhhWXZ2Umt5UUV6QUFBQTBNbEVYZ0FBQU1BRjVRcmxnMUU5MFl0cDJuVDlpL0hNNDdjWkFqcVF3S3NtMHNDcmtDOVdSazBCQUFCQUp4TjVBUUFBQUJQS0ZjcWw1TFhGRXRQWGUrMUxRaS9vTU90NlY4WTM3bjIvd0d0bTBwTWtCVjRBQUFBUUlpOEFBQUJnRW5LRjhuQUl2V1lrRGIzKy82YytjZnBrSDZDOXBZSFhaOWVNeGR4TFRoaGorZ1JlQUFBQThBNGlMd0FBQUdCU3pvUmVleXd4ZmRjdE9CelBmdUVhb1JlMHNjMGJWNThPdk9iTU9tV002ZnRONEhYUUZBQUFBRkFsOGdJQUFBQW1MVmNvRHlTdmZaYVl2a1h6anAwT3ZWYmV2TlFZMEdaMjNuMXJmT1pqeHdSZU05Y244QUlBQUlDemlid0FBQUNBS2NrVnl2MGg5SnFSTlBSNit0Nkk5V3RYR1FQYVJCcDRGWmU4WW9pWjI1SXZWa3BtQUFBQWdMT0p2QUFBQUlBcE94TjZIYkRFOUhYTlBobDd0NzBaVzIvdk13YTB1Q2NlWGlmd3FvMDA4Qm8yQXdBQUFKeEw1QVVBQUFCTVYxb25IVExEOUtXaDE5OXNQUllQREd3MEJyU29OUEJhc3VDd0lXWk80QVVBQUFBVEVIa0JBQUFBMDVJcmxFZVRWeUdFWGpPMmE4M1A0dEg3TnhrQ1draDM5OEw0KzYrdEVIalZ4ajZCRndBQUFFeE01QVVBQUFCTW05Q3JkbmF1ZURtZWVmdzJRMEFMU0FPdlBRTlh4UHl1NDhhWXVUVHc2amNEQUFBQVRFemtCUUFBQU16SU8wS3ZNV3ZNVE8rMUw4VUwzL3prNllBRXlLWjF2U3ZqMi9mL1I0RlhiUWk4QUFBQVlKSkVYZ0FBQU1DTUNiMXFaMW4zU0R6N2hXdUVYcEJCbXpldWpzK3VHWXM1czA0WlkrWUVYZ0FBQURBRklpOEFBQUNnSm5LRjhzRVFldFhFb25uSDRuOStxVHZXcjExbERNaUluWGZmR3AvNTJER0JWMjBjRUhnQkFBREExSWk4QUFBQWdKb1JldFhPL0V0Zmo3M2Izb3l0dC9jWkE1cnNLdzl0aU9LU1Z3eFJHNGVTeC85akF3QUFnQ2tTZVFFQUFBQTFKZlNxbmE3WkorTnZ0aDZMQndZMkdnT2FJTDAyOVltSDE4V3lLMGVNVVJ0cDRGWElGeXVqcGdBQUFJQ3BFWGtCQUFBQU5TZjBxcTFkYTM0V3c0L2RiZ2hvb0RUdzJqTndSU3haY05nWXRTSHdBZ0FBZ0JrUWVRRUFBQUIxOFk3UWl4cllkUDJMOGN6anQ1ME9UNEQ2V3RlN01yNXg3L3RqZnRkeFk5U0d3QXNBQUFCbVNPUUZBQUFBMU0yWjBHdUxKV3FqOTlxWDR0a3ZYSk9aMEd2c1gvN1ZsMExidVd0TFgzeDJ6VmpNdmVTRU1XcEQ0QVVBQUFBMUlQSUNBQUFBNmlwWEtBK0gwS3RtRnMwN0ZqLzYyZ2RpL2RwVlRmOHN6eno3L2RpMFoxNzgrTlUvOXNYUUZoN2NzU0h1S2h5Tk9iTk9HYU0yQkY0QUFBQlFJeUl2QUFBQW9PNkVYclhWTmZ0azdOMzJaand3c0xIcG55VU52ZjdUNXUvRlgvemRIOGV4Tjk3cnk2RmxQZkh3dWxpL2VNUVF0U1B3QWdBQWdCb1NlUUVBQUFBTklmU3FyVFQwMnJYbVovSFYzYmRsNHZQczJmdTlXTDd6bGRqN3d3L0ZpVlB2OWdYUk10THJULy8rYXl0aXlZTER4cWdkZ1JjQUFBRFVtTWdMQUFBQWFCaWhWKzF0dS9HbGVPYngyMDZIS3MwMk12SnlmUHFoNzhTbXY0NzRoNWV2OHVXUWVldDZWOFkzN24xL3pPODZib3phRVhnQkFBQkFIWWk4QUFBQWdJWVNldFZlNzdVdnhiTmZ1Q1pXM3J3MEU1L25oUjhjaUpXZitydTQrOGtGcm5Ba3MrN2EwaGVmWFRNV2N5ODVZWXphRVhnQkFBQkFuWWk4QUFBQWdJWVRldFhlb25uSDR1bDdJOWF2WFpXWnovVGt0L2JIRmIwdnhKZGZXT1FLUnpMbGtmczJ4RjJGb3pGbjFpbGoxSTdBQ3dBQUFPcEk1QVVBQUFBMGhkQ3I5cnBtbjR5bi8veWY0NEdCalpuNlhKLzc0dE54dy9iWDR2bWZmc2lYUkZPbDE1bys5VmhmM0hMMWlERnFTK0FGQUFBQWRTYnlBZ0FBQUpwRzZGVWZ1OWI4TEo1NS9MWk1mYWFSa1pkai9hZS9FNXYyeklzZnYvckh2aVFhYnZsTk44YWVnU3Zpdys4N2FvemFFbmdCQUFCQUE0aThBQUFBZ0tZU2V0Vkg3N1V2eFUvL2U5L3BrNHV5NUpsbnZ4Ly9hZlAzNHZQN0Y4YXhOOTdyaTZJaE5tOWNIWDkxMjcvRi9LN2p4cWd0Z1JjQUFBQTBpTWdMQUFBQWFMcDNoRjVqMXFpZFJmT094WSsrOW9GWXYzWlY1ajdidzBQZmplVTdYNG05UDNTRkkvWDF5SDBiNGpNZk94WnpacDB5Um0wSnZBQUFBS0NCUkY0QUFBQkFKcHdKdlFvaDlLcXBydGtuNCtrLy8rZDRZR0JqNWo1YmVvWGpweC82VG56ODRYZTd3cEdhUzAreGUrcXh2cmpsNmhGajFKN0FDd0FBQUJyczk5NTY2eTByQUFBQUFKa3hYdXBabkx4S3lYT3BOV3JyK1o5ZUZaOTd2SHc2cnNxaXJadjc0c0VOYjhiODk3emVsdnVuSVZ0NlZTWDF0NjUzWld4ZDhaYnJHZXRENEFVQUFBQk40Q1F2QUFBQUlGTnloZkxCY0tKWFhmUmUrMUk4KzRWcll1WE5TelA1K1o3ODF2NjRvdmVGMDFjNG5qajFibDhZMDNMWGxyNzQ3Sm94Z1ZkOUNMd0FBQUNnU1VSZUFBQUFRT1lJdmVwbjBieGo4ZlM5RVFQYk5tVDJNNlpYT042dy9iVjQvcWNmOG9VeEpWOTVhRVBjVlRnYWMyYWRNa2J0SFFpQkZ3QUFBRFNONnhvQkFBQ0F6SEoxWTMzdC9lRlY4ZWxkMzhuMFoweXZjUHl2SzNKeC9ZSlhXbjV2MXpYV1QzZjN3dmppOXF0aTRkelhqRkVmKy9MRlNyOFpBQUFBb0hsRVhnQUFBRUNtblFtOTlpZlBCNjFSZXo5NTlZb29mdjRmWTJUazVVeC96Z2NITnNhT2ovMGl1bWIvUzh0dUxmS3FqODBiVjhmMjVhODd2YXQrQkY0QUFBQ1FBYTVyQkFBQUFETHR6TldOYWVoMXlCcTFkOTJDdy9HanIzMGcxcTlkbGVuUCtmRFFkMDlmNGZqMGoxM2h5TnNldVc5RGZPWmp4d1JlOVNQd0FnQUFnSXdRZVFFQUFBQ1pseXVVUjVOWElZUmVkZEUxKzJROC9lZi9ISS9ldnluVG56TTliYXovTDc0VEgzLzQzYWRQeGFKenBkY3pQdlZZWDl4eTlZZ3g2a2ZnQlFBQUFCbml1a1lBQUFDZ1pZeVhlaTVMWHFYa3lWdWpQdjVocER1Mi83ZWZaUDc2eHRROTJ6YkV3QzF2eFB6M3ZONFMyN3F1c1RiVzlhNk1QL3ZUTjJQdUpTZU1VVDliOHNYS3NCa0FBQUFnTzV6a0JRQUFBTFNNZDV6b3RjOGE5YkdzZXlUKzU1ZTZNMzk5WTJyUDN1L0ZGYjB2eE40ZmZpaE9uSHEzTDY4RFBMaGpRengwNjY4RVh2VWw4QUlBQUlBTWNwSVhBQUFBMEpMR1N6M0R5ZXNPUzlUUGwvL0h3dmpjRjU5dWljKzY4dWFsOGFrMWZ4UzkxLzVUWmorams3eW1MNzJlOGFFN3I0a1B2KytvTWVwTDRBVUFBQUFaSmZJQ0FBQUFXcGJRcS81Kzh1b1ZVZno4UDdiRTlZMnByWnY3NHA3ZWlBL05lelZ6bjAza05UMmJONjZPN2N0Zmp6bXpUaG1qZnNhU3B5OWZySlJNQVFBQUFObmt1a1lBQUFDZ1plVUs1ZjdrdGNNUzlYUGRnc1B4bzY5OUlMYmUzdGNTbi9mSmIrMlBEMi9ZSDE5K1laRXJITnZBSS9kdGlNOTg3SmpBcTc3U3dLc2c4QUlBQUlCc0Uza0JBQUFBTFMxWEtBOGxyeTJXcUordTJTZmpiN1llaTYvdXZxMWxQbk42emVRTjIxK0xwMy84SVY5Z0MxcCswNDN4dmEvY0VyZGNQV0tNK2tydnYwd0RyNE9tQUFBQWdHeHpYU01BQUFEUUZzWkxQZjNKS3cyK0xyVkcvYng0Zkg3Yys0MWZ4d3MvT05BeW4zbjkybFd4WTExWFhML2dsYVorRHRjMVRzNWRXL3FpLzZPL2RIcFgvUjJLYXVBMWFnb0FBQURJUHBFWEFBQUEwRGJHU3oyTGsxY3BoRjUxZGVMVXUrS3ZudjNER05yYldzSFNQZHMyeE1BdGI4VDg5N3plbEwrL3lHdGkzZDBMWS91bXhiSHNTcWQzTllEQUN3QUFBRnFNeUFzQUFBQm9LMEt2eG5uK3AxZkY1eDR2eDhqSXl5M3ptZE9RNko1aVQyeTY0ZWZSTmZ0Zkd2cjNGbmxkMkxyZWxiRjF4VnN4dit1NE1lcHZYL0lNQ0x3QUFBQ2d0WWk4QUFBQWdMWXpYdXE1TEtxaFY5NGE5WFZzN0wzeDhET3o0OGx2NzIrcHo3M3k1cVd4ODc5OElKWXRmS2xoZjArUjEvazl1R05EckYvczlLNEcyWmN2VnZyTkFBQUFBSzFINUFVQUFBQzBKYUZYWSszOTRWWHg2VjNmYWJuUHZYVnpYenk0NGMyR1hPRW84anJiOHB0dWpEcy8zaFVMNTc1bWpNYllrUzlXaHN3QUFBQUFyVW5rQlFBQUFMUzE4VkxQY1BLNnd4TDE5K0x4K1hIdk4zNGRML3pnUU10OTlrZnYzeFNmS2h5cjZ4V09JcSszM2JXbEwvby8rc3VZTSt1VU1ScGpTNzVZR1RZREFBQUF0SzdmTndFQUFBRFF6bktGY24veTJtT0orbHMwNzFnOGZXODFtR28xbi92aTAzSEQ5dGZpK1o5K3lCZFpSOTNkQytPcHgvcmlyc0pSZ1ZkampDWFBSd1JlQUFBQTBQcWM1QVVBQUFCMGhQRlNUMy95K2x0TE5NWlBYcjBpaXAvL3h4Z1plYm5sUHZ2NnRhdGl4N3F1dUg3Qkt6WDk2M2I2U1Y2Yk42Nk9MWVUzWXU0bEovd0QwaGhIazZjdlg2d2NOQVVBQUFDMFBwRVhBQUFBMERIR1N6MTl5V3M0ZVM2MVJ2MmRPUFd1K0t0bi96Q0c5clptMlBUZ3dNYllldE92WS81N1hxL0pYNjlUSTYvMDlLN3RteGJIc2l0SC9FUFJPSWVTcDVBdlZrWk5BUUFBQU8xQjVBVUFBQUIwbFBGU3orTGtWUXFoVjhQOHcwaDNiUDl2UDJuSlU3M1NRT21lWWs5c3UvR2ZadnpYNnNUSXkrbGRUZkZjOHZRTHZBQUFBS0M5aUx3QUFBQ0Fqak5lNnJrc3FxRlgzaHFOMGVxbmVxMjhlV2s4ZE1jZnp1Z0t4MDZMdkw3eTBBYW5kelhldm55eDBtOEdBQUFBYUQ4aUx3QUFBS0FqblFtOWhwTm5qVFVhcDVWUDlVcHQzZHdYRDI1NGMxcFhPSFpLNUxXdWQyVnNYZkZXek84NjdoZStzYmJraTVWaE13QUFBRUI3RW5rQkFBQUFIVzI4MURPY3ZPNndST08wK3FsZXFhOSsvcmJZZE1QUG8ydjJ2MHo2eittRXlPdVIremJFTFZjN3ZhdkJ4cUo2UGVOK1V3QUFBRUQ3RW5rQkFBQUFIVys4MU5PZnZQN1dFbzNWNnFkNmRYY3ZqRWZ2NlluZWEvOXBVbjk4TzBkZW16ZXVqaTJGTjJMdUpTZjhZamZXMGVUcHl4Y3JCMDBCQUFBQTdVM2tCUUFBQUJDblE2OUM4a3BQd3JuVUdvM1REcWQ2cFZjNC90Y1Z1Ymgrd1NzVC9uSHRHSG1sb2R2MlRZdGoyWlZPNzJxQ1E4bFR5QmNybzZZQUFBQ0E5aWZ5QWdBQUFEaGp2TlN6T0hrTkowL2VHbzNWNnFkNnBSNGMyQmc3UHZhTEMxN2gyRzZSbDlPN21tcGY4Z3dJdkFBQUFLQnppTHdBQUFBQTNtRzgxSE5aVkUvMFdtcU54a3BQOWZybWdmbnh1UzgrM2JJL1EzcXkxWVBiZW1MVDllZGU0ZGd1a1pmVHU1cHVkNzVZR1RRREFBQUFkQmFSRndBQUFNQjVqSmQ2aHBQWEhaWm92Sis4ZWtYc2Z1cC94UXMvT05DeVA4UEttNWZHUTNmODRWbFhPTFpENUhYWGxyN28vK2d2WTg2c1UzNVJHMjhzZWZyenhjcCtVd0FBQUVEbkVYa0JBQUFBWE1CNHFhYy9lZjJ0Slpwajd3K3Zpay92K2s1TC93ejNiTnNRQTdlOEVmUGY4M3BMUjE3TGI3b3hOcSthR3g5KzMxRy9tTTJSRHQrWEwxWU9tZ0lBQUFBNms4Z0xBQUFBWUFManBaNUNWSzl2dk5RYWpmZmk4Zmt4OUh6RWs5OXU3Y09MdnZyNTIrS3E5LytmV1BtcHYydTV6LzdnamcyeCtrOWVkWHBYOHh4S25rSytXQmsxQlFBQUFIUXVrUmNBQUFEQVJZeVhlaTZQYXVpVnQwWnpQUDNqUmZId04zNFVJeU12RzZOQjF2V3VqSzByM29yNVhjZU4wVHo3OHNWS3Z4a0FBQUFBa1JjQUFBREFKSXlYZWk1TFhrUEpjNGMxbXVQRXFYZkZsNy8vL25oazZMdkdxS1B1N29XeGZkUGlXSGJsaURHYWEwdStXQmsyQXdBQUFKQVNlUUVBQUFCTXdYaXBaekI1N2JKRTgvemsxU3RpOTFQL0sxNzR3UUZqMU5oZFcvcWkvNk8vZERWamM0MUY5WHJHZzZZQUFBQUFma1BrQlFBQUFEQkY0NldldnVRMW5EeVhXcU41OXY3d3F0anpyYklySEd0ZytVMDN4cDBmNzRxRmMxOHpSbk1kaW1yZ05Xb0tBQUFBNEoxRVhnQUFBQURUTUY3cVdSelYwQ3R2amVZNU52YmUyUFAvdmp1RzluN1BHTk9RWHMyNDVkYkZjY3ZWcm1iTWdIMzVZcVhmREFBQUFNRDVpTHdBQUFBQXBtbTgxSE5aOGhwS25qdXMwVnl1Y0p5NjlHckdUOXp3djJQdUpTZU0wWHhiOHNYS3NCa0FBQUNBQ3hGNUFRQUFBTXpRZUtsbklIbDl4UkxONXdySGkxdlh1ekkrdVd5V3F4bXo0V2p5OU9XTGxZT21BQUFBQUNZaThnSUFBQUNvZ2ZGU1R5RjU3VStlUzYzUlhDZE92U3UrL1AzM3h5TkQzelhHTzZSWE0yN2Z0RGlXWGVscXhveElqNTFMQTY5UlV3QUFBQUFYSS9JQ0FBQUFxSkV6MXplV2tpZHZqZVpMcjNCODhuLzhXeno1N2YwZHY4V0RPemJFNmo5NU5lYk1PdVVYSXh2MjVJdVZBVE1BQUFBQWt5WHlBZ0FBQUtpeDhWTFBVUEs2eHhMWjhQeFByNHB2UHYvemVPRUhCenJ1WjkrOGNYVnMvT2kveGZ5dTQzNFJzbUVzZWZyenhZcnlFQUFBQUpnU2tSY0FBQUJBSFl5WGV2cVRWeHA3dWI0eEE5SXJISi8rMFIvRm5tK1ZZMlRrNWJiL2VaZmZkR1BjK2ZHdVdEajNOVjkrZGh5SzZ2V01SMHdCQUFBQVRKWElDd0FBQUtCT3hrczlpNVBYY0xpK01UUFMyT3ZMMzM5L1BETDAzYmI4K2JxN0Y4YjJUWXRqMlpVanZ1eHMyWmM4QS9saVpkUVVBQUFBd0hTSXZBQUFBQURxYUx6VWMxbFVUL1M2d3hyWjhlTHgrVEgwZk1TVDMyNmZXL01ldVc5RC9PZXJYbzA1czA3NWdyTWp2WjR4amJ1R1RRRUFBQURNaE1nTEFBQUFvQUZjMzVoTlAzbjFpdmp5czIvRU04OSt2MlYvaHAxMzN4cXI4OGRqN2lVbmZLSFprbDdQMko4dlZnNmFBZ0FBQUpncGtSY0FBQUJBZzdpK01idWUvK2xWOGMzbmZ4NHYvT0JBeTN6bXpSdFh4NWJDRytLdWJISTlJd0FBQUZCVElpOEFBQUNBQm5KOVk3YWxzZGZuSGkvSHlNakxtZjJNYWR6VmU4TmJzWER1YTc2dzdIRTlJd0FBQUZBWElpOEFBQUNBSm5COVkzYWRPUFd1ZVBwSGZ4Ujd2cFd0Mkd2NVRUZkduUi92RW5kbGwrc1pBUUFBZ0xvUmVRRUFBQUEwaWVzYnN5MHJzVmNhZDkxNjAzdGp5WUxEdnBUc2NqMGpBQUFBVUZjaUx3QUFBSUFtT25OOTQyRHkzR09OYkdwVzdDWHVhZ25wOVl6cDZWMzdUUUVBQUFEVWs4Z0xBQUFBSUFQR1N6MTlVVDNWeS9XTkdkV28yRXZjMVRMUzZ4bjc4c1hLRVZNQUFBQUE5U2J5QWdBQUFNaUk4VkxQNVZFTnZaWmFJN3ZxRlh1SnUxcks3bnl4TW1nR0FBQUFvRkZFWGdBQUFBQVpNMTdxR1V4ZXV5eVJiYldLdmNSZExTVzluakU5dmF0a0NnQUFBS0NSUkY0QUFBQUFHVFJlNmxtY3ZQWW56d2V0a1cyL2liMytuLy92NS9IQ0R3NU0rcy9idkhGMTlON3dWaXljKzVvUlc4Tnp5ZE9mTDFaR1RRRUFBQUEwbXNnTEFBQUFJS1BHU3oyWEphK2g1TG5ER3EzaCtaOWVGZDk4ZnVMWTY2NHRmZkdmUHp3dTdtb2Q2ZWxkZy9saVpjZ1VBQUFBUUxPSXZBQUFBQUF5YnJ6VTA1ZThocFBuVW11MGhuOFk2WTcvZnVETmVQTGIrMC8vNSs3dWhkRzcvTU94T244ODVsNXl3a0N0NDFCVXIyYzhZZ29BQUFDZ21VUmVBQUFBQUMxZ3ZOUnplVlJEcjZYV2FCMi9lT00vUnVYb3UrUDkvK0huTVdmV0tZTzBsdDM1WW1YUURBQUFBRUFXaUx3QUFBQUFXc2g0cVdjZ2VYM0ZFcTNqNUwrK0ZVZCs5ZStHYUIxSGs2Yy9YNnlVVEFFQUFBQmt4ZStiQUFBQUFLQjE1QXJsb2VUMWthaGVJd2ZVMXA3a1dTendBZ0FBQUxMR1NWNEFBQUFBTFdxODFET1l2SFpaSXR1YzVOVVN4cUo2ZXRkK1V3QUFBQUJaNUNRdkFBQUFnQmFWSzVRSGs5ZXlxRjR2QjB6UGM4bHp1Y0FMQUFBQXlESW5lUUVBQUFDMHVQRlN6MlhKYXpCNTdyRkc5ampKSzdPYzNnVUFBQUMwREpFWEFBQUFRSnNZTC9VVWt0ZHc4bnpRR3RraDhzcWs5UFN1TlBBYU5RVUFBQURRQ2tSZUFBQUFBRzNFcVY3WkkvTEtsUFQwcnNGOHNUSmtDZ0FBQUtDVmlMd0FBQUFBMnBCVHZiSkQ1SlVaQjZKNmV0Y1JVd0FBQUFDdFJ1UUZBQUFBMEthYzZwVU5JcSttYzNvWEFBQUEwUEpFWGdBQUFBQnR6cWxlelNYeWFxcm5vbnA2MTZncEFBQUFnRlltOGdJQUFBRG9BRTcxYWg2UlYxT2twM2VsY2RkK1V3QUFBQUR0UU9RRkFBQUEwRUdjNnRWNElxK0djM29YQUFBQTBIWkVYZ0FBQUFBZGFMelVNNWk4ZGxtaS9rUmVEWE0wZVFhYzNnVUFBQUMwbzk4M0FRQUFBRURueVJYS2c4bnJJOGx6eUJxMGdUM0pzMWpnQlFBQUFMUXJKM2tCQUFBQWRManhVczlBOGhwTW5rdXRVWHRPOHFxcjlQU3U5R3JHa2lrQUFBQ0FkaWJ5QWdBQUFDQU52UzVQWHNQSnM5UWF0U1h5cXB2ZCtXSmwwQXdBQUFCQUp4QjVBUUFBQVBCYjQ2V2V2cWpHWGs3MXFoR1JWODBkaU9ycFhVZE1BUUFBQUhRS2tSY0FBQUFBWnhrdjlWd1cxZXNiNzdIR3pJbThhbVlzZVFieXhjcXdLUUFBQUlCT0kvSUNBQUFBNEx6R1N6MkY1RFdVUEhsclRKL0lxeWIyUlRYd0dqVUZBQUFBMElsRVhnQUFBQUJNYUx6VU14RFZrNzFjNFRnTklxOFpPUlRWdUt0a0NnQUFBS0NUaWJ3QUFBQUF1S2p4VXMvbFVUM1ZhNDAxcGtia05TM3AxWXhEK1dKbDBCUUFBQUFBSWk4QUFBQUFwdURNRlk3RHlmTkJhMHlPeUd2S25vdnE2VjFIVEFFQUFBQlFKZklDQUFBQVlNckdTejJEeVN1OXh0RVZqaGNoOHBxMG84blQ3MnBHQUFBQWdIT0p2QUFBQUFDWUZsYzRUbzdJNjZKY3pRZ0FBQUJ3RVNJdkFBQUFBR2JFRlk0VEUzbE55TldNQUFBQUFKTWc4Z0lBQUFDZ0psemhlSDRpci9OeU5TTUFBQURBRklpOEFBQUFBS2laOFZMUFpWRzl3dkVPYTFTSnZNNlNYczA0bUM5V2hrd0JBQUFBTUhraUx3QUFBQUJxN3N3VmpvUEpzN1RUdHhCNS9kYStxRjdOT0dvS0FBQUFnS2tSZVFFQUFBQlFOK09sbnY2b251elZzVmM0aXJ6aVFGVGpyb1AraVFBQUFBQ1lIcEVYQUFBQUFIVjE1Z3JIZ2VUWjFZay9md2RIWGtlakduZnQ5MDhCQUFBQXdNeUl2QUFBQUFCb2lQRlN6K1ZSdmNMeGprNzZ1VHN3OGhwTG5xRjhzVExvdHg0QUFBQ2dOa1JlQUFBQUFEVFVlS21uRU5YWWEya24vTHdkRm5udGkrcnBYYU4rMHdFQUFBQnFSK1FGQUFBQVFGT01sM3I2b3hwN2ZiQ2RmODRPaWJ3T0pFOS92bGc1NGpjYkFBQUFvUFpFWGdBQUFBQTAxWGlwWnpCNURTVFBwZTM0ODdWNTVIVW9xaWQzbGZ3bUF3QUFBTlNQeUFzQUFBQ0FwaHN2OVZ3VzFkQnJWN3Y5YkcwYWVSMU5uc0Y4c1RMc3R4Y0FBQUNnL2tSZUFBQUFBR1RHZUtubjhxaGU0WGhIdS94TWJSWjVqU1hQVUw1WUdmVGJDZ0FBQU5BNElpOEFBQUFBTW1lODFMTTRlUTBsejlKVy8xbmFLUExhSGRYQWE5UnZLQUFBQUVCamlid0FBQUFBeUt6eFVrOGhxaWQ3dFd6czFRYVIxNzZvWHMxNHhHOGtBQUFBUUhPSXZBQUFBQURJdlBGU1QzOVVZNjhQdHRwbmIrSEk2N25rR1JCM0FRQUFBRFNmeUFzQUFBQ0FsdEdLc1ZjTFJsNEhvbnB5VjhsdkhBQUFBRUEyaUx3QUFBQUFhRG5qcFo3QjVEV1FQSmRtL2JPMlVPUWw3Z0lBQUFESUtKRVhBQUFBQUMxcHZOUnpXVlJEcjB6SFhpMFFlUjJONnJXTSsvMVdBUUFBQUdTVHlBc0FBQUNBbHBiMTJDdkRrVmNhZDZVbmR3MzdMUUlBQUFESU5wRVhBQUFBQUcwaHE3RlhCaU12Y1JjQUFBQkFpeEY1QVFBQUFOQlczaEY3N2NyQzU4bFE1Q1h1QWdBQUFHaFJJaThBQUFBQTJ0SjRxZWZ5NURXWVBIYzA4M05rSVBJU2R3RUFBQUMwT0pFWEFBQUFBRzN0VE95Vm51elZIMDI0eHJHSmtaZTRDd0FBQUtCTmlMd0FBQUFBNkFqdnVNWXhmUm9XZXpVaDhoSjNBUUFBQUxRWmtSY0FBQUFBSGFYUnNWY0RJeTl4RndBQUFFQ2JFbmtCQUFBQTBKRWFGWHMxSVBJU2R3RUFBQUMwT1pFWEFBQUFBQjJ0M3JGWEhTT3ZBMUdOdTBxK1JRQUFBSUQySnZJQ0FBQUFnRFBHU3ozOXlXc3dlVDVZcTc5bUhTSXZjUmNBQUFCQWh4RjVBUUFBQU1EdnFHWHNWY1BJYTEveURJdTdBQUFBQURxUHlBc0FBQUFBTG1DODFGT0lhdXkxZExwL2pScEVYbW5jbFo3Y2RjUTNBZ0FBQU5DWlJGNEFBQUFBY0JGbllxK0I1Rmt6MVQ5M21wSFhXUElNUmZYa3JpTytBUUFBQUlET0p2SUNBQUFBZ0VrYUwvVmNIdFdUdmU2WTdKOHp4Y2pyYUx3ZGQ0MWFIQUFBQUlDVXlBc0FBQUFBcG1pODFITlpWRS8yU3A5TEovcGpKeGw1SFVxZW9YeXhNbXhkQUFBQUFINlh5QXNBQUFBQXB1bE03TlVYMWRPOVBuaStQK1lpa2RlQjlNL05GeXNsYXdJQUFBQndJU0l2QUFBQUFLaUI4VkpQR251bEozc3RmZWYvL1R5UjExank3STlxM0hYRWNnQUFBQUJjak1nTEFBQUFBR3Bvdk5Tek9LcXgxeDNwZjM1SDVIVTBlWWFqZWkzanFLVUFBQUFBbUN5UkZ3QUFBQURVUVhxVjQ3LysyMXRELy81LzRwYWp2L3IzdjhnWEs4TldBUUFBQUdBNlJGNEFBQUFBQUFBQUFBQVo5dnNtQUFBQUFBQUFBQUFBeUM2UkZ3QUFBQUFBQUFBQVFJYUp2QUFBQUFBQUFBQUFBREpNNUFVQUFBQUFBQUFBQUpCaElpOEFBQUFBQUFBQUFJQU1FM2tCQUFBQUFBQUFBQUJrbU1nTEFBQUFBQUFBQUFBZ3cwUmVBQUFBQUFBQUFBQUFHU2J5QWdBQUFBQUFBQUFBeURDUkZ3QUFBQUFBQUFBQVFJYUp2QUFBQUFBQUFBQUFBREpNNUFVQUFBRHdmOW03MitNMGt2VnZ3TTJwUXhYZnJDY0NjeUtRL2tvQU5nTHJSR0EyQW1zak1JNWd0UkVZUjdEYUNEd2tvSlVqV0J6QmtiOVJ4UWVlYnRPc1dWbVNlZGU4WEZkVjErQjlrZUdlWVhyUS9MZ2JBQUFBQUtERWhMd0FBQUFBQUFBQUFBQktUTWdMQUFBQUFBQUFBQUNneElTOEFBQUFBQUFBQUFBQVNreklDd0NPcU5WcW5ha0NBQUFBQUFBQUFKc1E4Z0tBSTJtMVdxTzR1VkFKQUFBQUFBQUFBRFloNUFVQVI1QURYcTlWQWdBQUFBQUFBSUJOL1ZzSkFPQndXcTNXU2R3VWNaeXFCZ0FBQUFBQUFBRGIwTWtMQUE1RXdBc0FBQUFBQUFDQWZSRHlBb0FEYUxWYVozRXpDUUplQUFBQUFBQUFBT3hJeUFzQTlxelZhbDJFUlFldkY2b0JBQUFBQUFBQXdLNkV2QUJnajFxdDFtWGMvQjRFdkFBQUFBQUFBQURZazM4ckFRRHNSNnZWR3NYTmE1VUFBQUFBQUFBQVlKK0V2QUJnUjYxVzZ5UXNsbWM4VlEwQUFBQUFBQUFBOXMxeWpRQ3dnMWFyZFJZM2t5RGdCUUFBQUFBQUFNQ0JDSGtCd0paYXJkWmwzUHdaeHd2VkFBQUFBQUFBQU9CUUxOY0lBQnZLeXpOZXhmRmFOUUFBQUFBQUFBQTROQ0V2QU5oQVhwNXhGQ3pQQ0FBQUFBQUFBTUNSV0s0UkFOYlVhclVHY1ZNRUFTOEFBQUFBQUFBQWprZ25Md0Q0Z2J3ODR5aU9WNm9CQUFBQUFBQUF3TEVKZVFIQUUvTHlqTmR4dkZRTkFBQUFBQUFBQUo2RDVSb0I0Qkd0Vm1zWU4zOEdBUzhBQUFBQUFBQUFucEZPWGdCd1Q2dlY2b2JGOG93OTFRQUFBQUFBQUFEZ3VlbmtCUUFyV3EzV1pkemNCZ0V2QUFBQUFBQUFBRXBDSnk4QUNGL0RYU2RoMGIzcmxXb0FBQUFBQUFBQVVDWTZlUUhRZUsxVzZ5SnVKa0hBQ3dBQUFBQUFBSUFTMHNrTGdNYlN2UXNBQUFBQUFBQ0FLdERKQzRCR2FyVmFsNkdCM2J2aTYrN2Erd0FBQUFBQUFBRFZJdVFGUUtPa2tGTWNSWHo0YXh3dkdsaUMyN3c4SlFBQUFBQUFBQUFWSWVRRlFHTzBXcTFoM1B3VlI2L0JaVWpCdHQ5akxhNGNFUUFBQUFBQUFBRFZJT1FGUU8yMVdxMStISlA0OEsxcS9PMU5yTW10NVJzQkFBQUFBQUFBeWsvSUM0RGFhclZhSjNHTTRzT1BjYnhVa2UrY2hzWHlqWmRLQVFBQUFBQUFBRkJlUWw0QTFGSU9MazNpZUswYVQwckxOLzRhNjFYbzZnVUFBQUFBQUFCUVRrSmVBTlJLWHByeE5qNzhOU3dDVEt5bkYzVDFBZ0FBQUFBQUFDZ2xJUzhBYWlGMW9WcFptdkZVUmJheTdPcVZ3bDU5NVFBQUFBQUFBQUFvQnlFdkFDcXQxV3FkeERHTUQxUDNMa3N6N2tjS3lYMU1vVGxMT0FJQUFBQUFBQUE4UHlFdkFDcXIxV29Od2lMYzlUWlltdkVRVW1ndWRmVWFwakNkY2dBQUFBQUFBQUE4RHlFdkFDb25MU1dZbGhTTUQ5L0g4VkpGRGlxRjUxS0licEk3cGdFQUFBQUFBQUJ3WkVKZUFGUkdxOVU2aTZPSUR6K0d4WktDSE0vWHNGZXMveVIzVUFNQUFBQUFBQURnU0lTOEFDaTlWcXZWaldNVUgvNFpSMDlGbmxYcW5QWitHZmF5akNNQUFBQUFBQURBNFFsNUFWQmFLK0d1ditKNHJTS2w4alhzRmZJeWpzSmVBQUFBQUFBQUFJY2o1QVZBNlFoM1ZjclhaUnpESXV4MWxmYWRrZ0FBQUFBQUFBRHNsNUFYQUtXUnVrR2xybER4NFcwUTdxcWFGUFo2RThkZkthQVhSMTlKQUFBQUFBQUFBUFpEeUF1QVo3ZlN1V3NTRmwyaFhxaEtwYVdBM3NlNFQyL2pHQ2dIQUFBQUFBQUF3RzZFdkFCNE5nOHN5eWpjVlMrbmNieVArL2pPVW80QUFBQUFBQUFBMnhQeUF1RG9IZ2gzVVcrclN6a1dxYnRYV3BwVFdRQUFBQUFBQUFEV0krUUZ3TkcwV3ExK0hOZEJ1S3ZKZW5HOGoyT1NnbjV4bkNrSkFBQUFBQUFBd05PRXZBQTR1Tnk1cVlnUFA4YnhTa1VJaSs1ZUtlajNaencyVXVCcmFEbEhBQUFBQUFBQWdJY0plUUZ3RUdrNXZqZ3VVNEFuTERvMzlWU0ZSN3lNNDIxWUxPZDRtNDhieXprQ0FBQUFBQUFBWkVKZUFPeFY2c1lVeDFWOE9JbmoxN0FJOE1DNlR2Tng4NyswdEdmdUFpZndCUUFBQUFBQUFEU2FrQmNBZTlGcXRTNVNLQ2MrL0N1T04yR3hIQi9zSWkzdG1ickFyUWErdXNvQ0FBQUFBQUFBTk0yL2xRQ0FiZVVPUzRNNExvT09YUnpXcXp6U2NmY3Bia1p4WE0vbjg0blNBQUFBQUFBQUFIV25reGNBRzJ1MVd2MDRSdkhoLzRJbEdUbSs1WktPZjhYajhEWXREeHJIbWJJQUFBQUFBQUFBZGFXVEZ3QnIwYldMa2pyTjQwMDhSci9FYlZveXRBaUxMbDkzeWdNQUFBQUFBQURVUVdzK242c0NBSTlQRkszV1JWaUV1MTZweGw2OGkzUHY4Qm4zWjVNbS9uSDRGdmk2ZGVnQkFBQUFBQUFBVmFXVEZ3RGZ5VXZmRGZKNG9TSlVWQytQdC9lNmZCWHorWHlpUEFBQUFBQUFBRUJWQ0hrQjhGV3IxZXJHVGVyYVpUbEc2aWlGRlYvbmtZNzN6K0dmb1M5TE93SUFBQUFBQUFDbEplUUYwR0N0VnVza2ZPdllkYW9pTkVnS01yN0pJNzBYUG9VYytBcENYd0FBQUFBQUFFREpDSGtCTkV3T2RsM2s4VXBGNEt2VFBJUytBQUFBQUFBQWdOSVI4Z0pvZ0pXbEdOUG9xUWo4MEVPaHI5dndMZlExVVNJQUFBQUFBQURnV0lTOEFHcXExV3FkeFUwL1dJb1I5bUVaK25xZDMxOWZ3aUx3OVRYNE5aL1BDeVVDQUFBQUFBQUFEcVUxbjg5VkFhQXVKL1ZXSzNYcTZvZEZ4NjZYS2xKSzcrTGNPM3pHWThURWZ6akxKUjVUOE9zMjd1ZGJKUUVBQUFBQUFBRDJRU2N2Z0FyTHl6RDJ3eUxVbGJZdlZBV2V6YkxiMS9MOW1icDlMWmQ0WEFhL0pzb0VBQUFBQUFBQWJFcklDNkJDV3EzV1NWaUV1ZExRclF2S0xZVXVlM2tzMzhQM2cxOFRIYjhBQUFBQUFBQ0FIeEh5QWlpNVZxdlZEOStDWFQwVmdVcDdLUGlWTnVPUVExOWgwZkdyVUNvQUFBQUFBQUJnU2NnTG9HU0V1cUNSSGdwK2ZRNTVtY2VnNnhjQUFBQUFBQUEwbXBBWHdETnF0VnJkdURrTGkwQlgyZ3AxQVVzdjgzaTFjczVJbTA4aGQveks0MDduTHdBQUFBQUFBS2czSVMrQUk4cGR1bFpEWFM5VkJkalFhUjczdzErcDg5Y2tqcXY1Zkg2dFRBQUFBQUFBQUZBZlFsNEFCN0lTNkZxT1UxVUJEbWpaK2F1SVE4Z0xBQUFBQUFBQWFrVElDMkJISzBzdXJnNGR1Z0FBQUFBQUFBQ0F2UkR5QWxoVHE5Vks0YTF1V0lTNHVubjBWQVlBQUFBQUFBQUFPQ1FoTDRBVmVZbkZKRzFQd3JkQWw4NWNBQUFBQUFBQUFNQ3pFUElDR2lNdnE1akdNcnlWOVBOV1J5NEFBQUFBQUFBQW9KU0V2SUJLYTdWYUR3VzJWaCtuZjMrcVVnQUFBQUFBQUFCQVZRbDVBVldYUWx3ZmxRSFc5aVdPRjhvQUFBQUFBQUFBVUIzL1VnS2d5dWJ6K1VRVllDUGRPTWJLQUFBQUFBQUFBRkFkUWw1QUhYeFJBbGpQZkQ2L2k2TWZILzdpdlFNQUFBQUFBQUJRRFVKZVFCM2NLZ0ZzWmo2Zlg4WE5XUngvcUFZQUFBQUFBQUJBdVFsNUFVQkRwZVZPNDdpSUQzK0s0N09LQUFBQUFBQUFBSlNUa0JkUUI0VVN3UGJtODNrUlJ6YytmQmNzNFFnQUFBQUFBQUJRT2tKZUFNQlg4L2w4R0RmZE9ENm9CZ0FBQUFBQUFFQjVDSGtCZFhDckJMQWY4L244TG81QmZQaWZJT3dGQUFBQUFBQUFVQXBDWGtBZDNDa0I3TmQ4UHA4SWV3RUFBQUFBQUFDVWc1QVhVQWNUSllEREVQWUNBQUFBQUFBQWVINUNYa0RscFJDS0tzRGgzMmZDWGdBQUFBQUFBQURQUThnTHFJc3ZTZ0NIdHhMMituOXh2UFBlQXdBQUFBQUFBRGc4SVMrZ0xtNlZBSTVuUHAvZnhUR01EN3R4L0J6SFoxVUJBQUFBQUFBQU9Bd2hMd0JnYXpuc05ZcWpHLy80VTdDVUl3QUFBQUFBQU1EZUNYa0JkVkVvQVR5ditYeGU1S1VjL3hNV1N6bnE3Z1VBUUczTnh1ZGRWUUFBQUFEZ1dQNnRCQURBUHMzbjgwbmNETk5vdFZyOXVCM0U4VnBsQUFDb290bjRQRjNUZHZOSWowL2lPSTFqblA4TUFBQUFBQWNuNUFYVXhhMFNRUG1rN2w1eFU3UmFyY3U0dllnamJVOVZCZ0NBTXBtTnoxTnc2eXlQOUxnZkZxR3VsNm9EQUFBQVFCa0llUUYxY2FjRVVGN3orVHk5UjBkcHRGcXRibGdFdmdaQjRBc0FnQ1BLU3l5bWNiYXlUZU9GNmdBQUFBQlFaa0plUUYxTWxBQ3FJUy9uZUpWR3E5VktOOVFHWVJINjBpVUJBSUM5V0FsejljTzNwUlo3S2dNQUFBQkFWUWw1QWJXUVFpT3RWa3NobXVOeldDejdsNFliTmRWKzc5NHU5MlVPZlBXRERsOEFBS3hwTmo2LzM1R3I2MW9TQUFBQWdEb1M4Z0xxNUV1d3hFWVQ5dkhWZkQ0ZnBqKzBXcTFMSmFtUEhQaEs0MnBsU2NkK0hLOVVCd0NnMldiajgzUmQyQTNmdW5PZEJHRXVBQUFBQUJwRXlBdW9reFFPMGRXcG5yNkd1OElpNEhXbkhQVjNiMG5IZEFPdkg3NkZ2aXpyQ0FCUVE3UHhlYnJ1VzNia1dsNERkbDMvQVFBQUFJQ1FGd0RsSnR4RnlQditPbyt3c3F4akdycDhBUUJVekd4ODNnMy83TWkxREhicHpBd0FBQUFBanhEeUF1cWtDRHA1MWNYbk9JYnorWHlrRk55M3VxeGorbk9yMWVxSGI2RXY1d0FBZ0pLWWpjL3ZkK1RxdWw0REFBQUFnTzBJZVFGUUpuK0VSZGV1UWlsWVZ6NWUvajVtaEw0QUFJNHJoN202NFZ0SHJ2VDRWR1VBQUFBQVlIK0V2SUE2dVZXQ1NrcGR1MFpwek9memlYS3dxMGRDWDhzbEh0UDJwU29CQU96SGJIeWVyckUrcWdRQUFBQUFISmFRRjFBbmQwcFFHVi9pdUE2TFlGZWhIQnpTU3VocnVieGpOM3pyTXRIUDJ4Y3FCUUFBQUFBQUFKU1ZrQmRRSnhNbEtMMjBIR01LZDEzUDUzT2hQSjVGN2hnM3ljZmlWNEpmQUFBQUFBQUFRSmtKZVFHMWtZSWJyVlpMSWNwSHNJdEtuRC9DOThHdmsvQXQ5TlhObzZkYUFBQUFBQUFBd0xFSmVRRjFrNVlCMUgzbitRbDJVWG41MkMzeStGdnUrcFZHUDQ1bEVDejkrYVdxQVFBQUFBQUFBSWNnNUFYVXpXM1FhZWM1cEhEZGRSNkZZQmQxdHRMMXE3ai83MXF0Vmo4L1ROdGxBQ3h0VDFVT0FBQUFBQUFBMkphUUZ3RGIraFFXSVpmUmZENi9WUTc0R2dBcjhzUGkvcjliV2Y1eHVVMzZlZHNOT29FQkFBQUFBQUFBanhEeUF1cW1DRHA1SGNxeVcxZXFjWkc3R1FGcldsbitNZVQzMG9OV3VvRjE4N2ovV0djd0FBQUFBQUFBYUJnaEx3Q2VNZzdmbG1EVXJRdU9ZS1ViMkZwYXJkYXlPOWpTUkJVQkFBQUFBQUNnWG9TOGdMb1JSTnBOQ25VVllSSHFLcFFEeWs4QUV3QUFBQUFBQU9wUHlBdW9tenNsMk1qZm9hNDRidk55Y2dBQUFBQUFBQUJBaVFoNUFYVXpVWUluNmRRRkFBQUFBQUFBQUJVajVBWFV5bncrbjdSYUxZVlkrQndXeTFjV1lSSHFzcVFiQUFBQUFBQUFBRlNRa0JkUVIxL2llTkhBMTUyNmRDMURYV25weFlsREFRQUFBQUFBQUFDcVQ4Z0xxS01VZE9yVi9EVit5cS96YTZoTGx5NEFBQUFBQUFBQXFDOGhMNER5V3k2N3VOcWw2MDVaQUFBQUFBQUFBS0FaaEx5QU9pcENkVHQ1Q1hRQkFBQUFsRUM3MCtuR1RScjkvSS9PNGpqSjQzU0xIL2tsTEg3bms5eXRQQzdTbjJmVHFVN3RBUEM4Yy81Sm51OVg1LzJ3dzl4LzMzamw4VzIrSGxoZUM0UjRMVkRZR3dBOFJjZ0w0UG1zTHJtWXdsd3UzZ0VBQUFDZVFidlRTVGR5KzJGeFE3Y2JEdk1Gd2hmM2Z1NnJ2SDJibjBQYXBOOFhUY0xLRndCbjA2a3ZBQUxBN25OOU4zd0xiNStzelBrdmovZzBlbzg4WHIwV1NGSVliQmtJdjgzWEF4TjdFUUFoTDZDT3l2YXR4K1czTkl1UWYwazNuODk5TXhNQUFBRGdtZVFidlJkaGNhTTNqUmNsZVdxbmVhUUEyUEtHYityOFhpeUhtN3dBc05ZOG4rYjNzNVh4b2tJdllSa0FlN1h5bXRJbWhiOVdnK0N1Q1FBYVJzZ0xxS1BuL0haanVzQ2U1UEgxSXR0eWl3QUFBQURQTDNmckdvUkZ1T3RsaFo1NmVxNnY4MGl2STNYN0t1SVlXZUlSQUw3T2pmM3dMZFNWdGk5cStsSjdlYnpKcjFzUUhLQmhoTHlBT2pyR1JleHE2L3psY29zdW5nRUFBQUJLWktWajEyV29WckRyS2N0dVgyL2k2MHNkNUsvVG1FMm4xeFhZRjkwZi9HZU5XSjR5MW1LNVRCalVXbncvRjZyQWdjNmp5ekJYR3E4YVhJcjdRZkRQK2JxZ0tQdDF3VFBQc1JPQk9LQ3FoTHlBMmtsaHExYXJ0YThmdDlxWks0VzVKcFphQkFBQUFDaTMzTkZqRVBKTnp4cDdrVi9qNjVVYnUxY2x2WEdaOXNmYkgvdzNQNFZGTjVLNlN6ZWZQM3FuMGdBdEpXQ1BjM3NLYlMrWFduNnBJZzlLZFVsZHZ0N2s1UjMvQ04vQzRFMVpkU1pkYi96NmcvL21YUnhEaHd0UVJVSmVRRjJsYnpHdTI0NDMvUUpzRW5LSUszd0xjMDJVRVFBQUFLQTYycDNPSUN4dTd2VWErUEpYYit5bW03cFhKZXVpbzNNVk5PK2NmTktnWUFtSE9ZYVd3YTQwWHFqSXhsN2w4VDVmRzZTdzE2am1yL25FYmdmcVRNZ0xxS3NVMUZyOVpkNlg4QzNFTmNtUDcrYnplYUZVQUFBQUFOV1did0pmQlowOWxyN2UxSTExU1YzcWh5VUplM1h0Rm1pY0ZPNHNsSUV0NW5UQnJzTmRHNlRycFdYbnp6cXVYT042QTZnMUlTK2dya1poOFlzOVFTNEFBQUNBbXNyTE1nNURNenQzclNQVjVXTkp3bDZuZGdjQWo4em4zYmk1REl0Z2w4RDJZYTB1OWZ3cExNSmVveHE5dnE1ZEROU1prQmRRUy9QNWZLUUtBQUFBQVBXVWxnQUxpeS80dlQ3eVgvMDVmT3NVUDhuL3JOamcvKytHYnpjZisyR3hwTkF4d2svTHNOZUh1TDA4OXZKcDhlKzFWQ00wVTFjSitNSDhNQWpOWFdhNUROSTF5UHZjM1N1TlVieEdtRlQ4TmJubUFHcE55QXNBQUFBQWdNcklONFRUamNoREwrR1VBbDFGSEdrcG85dERkc0hLSWFqbDZJZkRCYjlTS080aS9uMnBxOWZWRVhkYjM1RUxqZFJWQWg2WTg5SnhrZWJ5eTFDdDVSaS81R3VDU1I1MytjL0ozYVpMSCtiQSt0a0RjMlg2Wjh0L2Q2ejZwTC9uYlJvNUVENnNZdGdyMTlRU24wQ3RDWGtCQUFBQUFGQjYrY2JkZFRoc3Q0KzBiTkVvL1QzSHZMbVpid3pmM251dC9iQll0aXB0OTdsMFZicjUrV3Y4TzlMUEhoenBkZllkd1FDTm44ZTdZYkhFOHVzS1BOMVBlVjcrZSt5N0MyYitlY1hLUHlvZXVmWlpoc0M3ZVh2b3JtZkxwUnlyR1BiU3hRdW9QU0V2QUFBQUFBQktMUWVTUnVFdzNSbFN4NjdVMWVxNkxEY3k4NDNmNnp5V25iNEdlZXlyQnVrbThXMzgyV241eHRFQjkxMjZRZjNLVVF5TjFGY0M0anlRam9OaEtQZVNqQ25VVlN6SHNaYzEvc0gxd1BKNXJkWjAyZmx6dVgxNWdMKytpbUV2SVMrZzlvUzhBQUFBQUFBb3JYYW5rd0pZYnc3d284ZHhYTTJtMCt1eTF5QjMra3JMV2wwdU8zQ0YvUVNuVW1Ec2ZiNEJmM21nbTlvWGp1THYzT1hqN3lISFhKNnJyRDdsR2xWTk54d21hQUZWbmIvVDNESU01UTEzL1JFV1llcWlha3NUUHRBQmRCbjI2b2Y5QjZ1ckZQWVM4Z0pxVDhnTEFBQUFBSURTeVIyZ2lqaE85L3lqVTRBa0JacUtLdFlsaDlLdVY1YTlTaUdxWFVOQjZRYnVXZnlaZzN6amVKK0V2TDdmaDZuRy9UWGZCK21HOVVuK1kzOWxtL1ovWFFORmxYMS9QckVmdTNtZkxTMlhZRnRhN3VlVEE1enpudE9KZDN3ajUrOStLRys0S3dWc1IySFJ2Zk91TGpWZkNYMWQzVnZ5ZVIvWENLdlhDaGM1Zkg5VjB2cXRHL0p5YmdJcVM4Z0xBQUFBQUlCU3ljR1dGR2JhWjRqbFMxaDBvTGlxUTQxeUo0MUJ2cGw3bWNjdU4zSlRzS1RJUWEvclBlM0hickJVNDY3N2VUVjBWOXlyN3pJb2xHN2k5ME85d2tGMTI0L3AvVHE1OTQrdjF6Z1BMc01heTMzZERkVUs5emttbXpWM3ArTnpHQlpob0RKSnl6S1AwcWhheDY0dHp6ZjNsM3plZHdmUXQySFJXYlNNMTFUcm5uTjAvQUlxUzhnTEFBQUFBSURTeUIxQTBvM0pmUzVabHpwM1hOU3BhOGRTZmszRFpXZU5zTnZOOVZUejMrUFBlaGQvN25BUFQyL2dpRDc0dmkveVdBWXNVczB2Z3lVZjY3Qi9sd0cvNHQ0NWNobjQ2dWRoaVUrZWU5NU94MlNhTTk2VTdLbWx6cDJwNDlTbzRlZVNaUWZRazVVNVl0ZXdhRHJuL0JwL1p2cFpnekowWDh6WGp3QzE5eThsQUFBQUFBQ2dERklYcWJqNUdQWWJXRWlCcFg0ZEExNnIwdXVMSTlYdlAyRVJhdHZGMjdndlJqdnV5MldITVk1M0RFeHlPSzhieDI4cVV1djNlcEgyZFQ2M3BmZmFmK1A0RUJZZEM4dDJYdS9hYTdXZXQ5TjVmaExLRmZCS2MrQlA4YjF4MXZTQTF3UG5qaFI2UysvSm4vSTVZMWNwTFBZeEhnZlhKWGl2OSsxbG9BbUV2QUFBQUFBQWVIWTU0UFYrano4eWhSMyt1NmVPVkpXUmd6NzlzQWg5N0JMNGVCMzNTWkhEV3R2UVRlcjVqb0YwSS85eUQ4Y0ExZG5uMXlua21RTmZQNGZkZzU3NzFMV0hhamxuOStOSTNlWitMZEc1ZmhudTZwZWhzMVRKenhuRlNqRDh0ejNNRldrcHlOdTBoT016dnF5K1BRczBnWkFYQUFBQUFBRFA2a0FCcjM1ZW9xaVI4bXZ2eHZISERqK21GOGZHUVM5ZHZFcDFEUFNEb0ZmVDl2c29CejFUcDU2eGlyRG4rZm9rTHcrY3VtNmVsdVJwZlE2TFVMZHcxK2JuaTBrT0JhZnJoWGM3emhjcDdKYzZnYWF3MTlrenZKeWVQUW8wZ1pBWEFBQUFBQURQNW9BQnI5dW0xelozZExvSXUzVjBTamZ4TncxNjZlSlZubU1ndlE4R0t0SElmVitzaEwwK1ArTlQ2ZHNidFptdjA3NU01NVN5TE0yWTVyVzBKSE8zeWFIdVBWNHZETU4rd2w3cHV1SFAxTlZyaDI2Z214NmJGL1lpMEJSQ1hnQUFBQUFBUElzREJMd1NBYTk3OHMzdjFGWGowNVkvSXQyd25helRtU1ArTjkyNGVhdnFwZHYvNzFTaXNmcy9oYjI2amdGMm1LdFh1M2U5TE1uVFNsMHF6NXEySlBNUnpoZXJZYThQTy82NGRDMVFIS21yVjkvZUE1cEN5QXNBQUFBQWdLUExOLzMySGZENldjRHJZWGxKcGxUemJXL2FwczVjNjl5c0hhbDJLYVdBeG1kbGFQUTVZQmczLy9jTXg4R0o2bGQrcmk1Yjk2NjBOT05GbXRmc29ZT2RMMUxZYXhBZi9pZnN0dXpyMzEyOUR2eVVkZklDR2tQSUN3QUFBQUNBbzhvM2pZczkvOWpmWnRQcFNIV2ZsbS9hL3J6bC8vNWswQ3YrODdSTVkwK1ZTN25mNytKbXFCS05QdzVTV0NlOWYvODQ0bDk3cHZLVm5hdlRPZVBQVUo3dVhTbHNaR25HNDU0ekpubloxN1RzOHk0QjBiZnhlTHJOM1Q0UGNVMzUwdDRDbWtMSUN3QUFBQUNBbzBuTFBvVkZ0NmNYZS95eG4yYlQ2YVhxcmllSDRWSkhueTliL084UEJyM3lqZHVoNnBaK3Yrdm01VGhJSFhwUzE1dmZWSVBINXVrNGlsQ3VwWGQvU1dHakhGamwrT2VONWJMUHV5ejdtcnA2cGFEWHZydHU5ZTBob0VtRXZBQUFBQUFBT0taUldOem8yNWNVVkxKTXo0WnlSNTkrMkM3MGs0SmVveHpZVzdvTyt3M3VjYmozSDRRY2pQMzVDSCtWVGw0VnNySThZMW02TXFZNS92L2k4WHBsN3p6N09lTnVaZG5YVDF2K21IU2Q4SHM4enZhNVB3ZGIvRDlkZXhTb0tpRXZBQUFBQUFDT0lpL245MnJQUDNhUWxoTlMzYzJ0TE4yMnpjM2FGTlFyY3NlWFVkaHZjSS9ER1NrQksrZUFkRHdjT3VnbC9GbWRPWG9ReXJVOFk1cWJ1bm11b2tUWERuSHMydFhyVGVvV2R5OHN2czB4ZTdibDlZZmxIWUhLRXZJQ0FBQUFBT0RnOG8yNFgvZjhZOGQ1Q1NHMmxKZSs2b2Z0ZzE3cDV2dHJsYXpNL3A0RVN6Ynl6Mk5pRkk3VDBZdHl6OUdwczlMN0VqMmxEeWxJWkhuR1VwODdobUczcmw2cFc5enQvZVdmTnpTd0o0Q21FZklDQUFBQUFPQ2djcWVHZllleDBoSk9BOVhkM1k1Qkw5MHdxa2N3a3Z2bmdGSGMvSExBT2FDdnl1V2RuM00zeGpjbGVscnY0akZwZnEvR3VXTzU5UE52Vy82SWRBMlJPbnB0dSt5MjVicUJ4aEh5QWdBQUFBRGcwSVpoLzJHZ0s4czA3cytPUVMrcXhkSm5QSFFPU0oyY1BxaEVjK1FBZGhISzFZM3g1OXdoaWdwZFA4U1JsdVArYjFnRThEZVZsblQ5UFM4WHVzbnhleEVFellFR0V2SUNBQUFBQU9CZ2NnZVhmWGNJU1RjUnIxUjN2MWFDWHBienF6Y2hMeDQ3Qnd6aVpueUFIOTFWM2RMTnpjdUExMm1KbnRiUHVhc2MxVHgvcEM2UmFlbkZiY1BpNytOeE9kemd2eCtvT3RCRVFsNEFBQUFBQUJ6U0ljSllsem1ReEo3bHVxYnVHRjlVbzdiN1dNaUxweHppL2Q5VjF2Sm9kem9waURNSjVRbDRwZU5Od0tzZTgwczZydnBoKzY2QWIvUHlvVDg2aHRNNTVaV0tBMDBrNUFVQUFBQUF3RUcwTzUyMGZNKytieUovY1NQNHNISUlxQjhFdmVyTXNwdzg5djVmQmoycDU3eWNBbDVGV0N5UlZ4WVg1dlY2blVOeVY4QjNXLzZJMTJzRXZRWXFEVFRWdjVVQUFBQUEyTlZzZk41ZitXTzZjWEN5OHVlVC9NKzJrVzR5UGRSdG9saDVQR24zYmliMkFrQzU1S1dnaGdmNDBaWnBQTWJjUHAzZTVwRGVlOVdvSlozd2VPcjlYOFQzLzI5aGYwdnRucWxxS2VibE1nYThVZ2V2d3Q2cDVYbGtHSSs1eVpiWEVTbm90VnhDOWlHWEtndzBsWkFYQUFEcmZUQWZuM2ZEdyszMXQ3MXhuMjdZci81UytiYmR1L0ZMWm9EeXpnUDlQQS9jSHkrUDhOYy90QXpEMjN2UGIvbndjMWdzUFpJVTkrWWNZVENBNDBvMzRBNXhJMW5JNjFqei8zUTZ5a3NpdlZXTjJrblhSRDFsNEFuRHNPam90WS9yL1JQbGZGNGxEbmlON0ozYVgwZWtoM3NMZXNWL05palpjUXh3VkVKZUFBQk4vSUE5UGw4TlpxMTJXK212L0dkbngvN0EvSU1iOUpNODd0cTltMXQ3RWVCZzUrS3pQQWQwODd4dzlQbGdSeS9EdHh0UnZVZm1tclE4MFYyZVk1YWR3b1NOQWZZb2QvRTZSSmVGUC9KU1loenIybURSaWFNZkJJTHFacUlFL09DOWY1ZkRGQi8zOE9PRXZKNTNUaGJ3NGpuUEpTbm9kYnZsTVppQ1hzVzlZMldvcWtDVENYa0JBTlR4dy9PM3JsdkxzUXh5cGNjdksvQVMxcmxCL3lWODY4eVN0cE04M0tRSDJHek82SWRGbUtzZm1uUHo5dlNoT1NiV1lqbTNMRWZxL0ZVNFNnQzJjcWd1WGlPbGZSWVgrZk9XemhuUXBNOEtpMlVieDN2NG5IQ3FtczhqaDY2TGtwMi9meFB3YXR5NTVEWUh4di9jNG45L256dDZqWEx3OU9XZTNodG42WG5aTzBEVkNIa0JBRlQ1QS9LaTIwbzNMRUpjeXlCWFUyN1F2MWg1cmEvdTFTVnQwaThoSjNrVXdSSmRBS3R6UjdwUjJ3ODZjancydC9UdXpTbXA4OWZmNFMvQkw0Q25IYkNMMTVmWmRIcXR3czl3L2JEbzZKT3VIejZxUm0yNHNjMjZCbkg4cFF5Vm5ZK0xVSzZBMTRjNHAxemFPNDI4bGtoQnI1L0Rka3MzdnMvZHdQWjU3T2d3Q0ZTU2tCY0FRRlUrQ0M4NnJhd3VvZVhHL05OV2I5Sy96VFc4MzZIbDF0S1BRRVBta0hSVGRqbDA0TmpjYVI2dmN6M1RacHpua2lMUEp4TmxBdmpiNEVEelRhRzB6M2c5c2VqbzgyNzUrWXJLMHdHYmRkLzdrL2plLzdDOEZ0NVcvQm5kOUxOVTlEaFdBbDVsNnFLV3Zqd2o0TlhzODBucXhwVWViaFAwS29MZlp3QUllUUVBbFBJRDcySzV4WDVZQkxyU1ZsdjcvWGlxUTBzUjhzMzY1N3BSSDUvTFZkN25UWFRaOU1CZDdxNTAxZENYbndJeWZ0RzcvMk5Lc091d2x2UEptMXp2ejNrdUtZSVFjVk9jeGYxZUtJTzVub2YzOTRGK3J2ZmNjMTlmVEtmRDNOSExaMVJvbG1IWU1lUVZGbDlZbkNqbDBWeVY3Rnlkdm5oNWtUcEQyaldOdjVaSVFhOTBQdGcwTk83M0dnQkJ5QXNBb0J3ZmJoZmhqdjdLOEtIMXVKWWRXcGI3SS8zaXFZZ2pMUVZ6ek5CWE9nNmEycUZOaS9SbUxiZks0ZWFUYmxqY1dCK1lTNDd1WlZqYytGcDIrMW9OZlJVNmZkWFNDK2R0Y3ozZmEzYzYvWHhPUElSQ2hVc2hYV2Y4cVF5VkoyakIrcDh6OXRUTmk2UE54VmNsM0ZjWE9ybXhjazRaNXFDWGN3ckFob1M4QUFDZTQ0UHNZdW5GNVVqQkhqZml5eVh0ajFkNXBQMjE3UFExMG9FQ0tPbThNZ2lMRzY0Q0orWHhVT2hyR1I2K1ZoNmd4Z1lIbSsrbVU5ZmlaYmp1aVB2QnNvMjEyWThLd1NhR1liZEFSdnI5VjZHTWh4WGYxMmtlZmxPeXAvVXVMZmxyNzNCdkhockU0eldkRjNRSEJkaUFrQmNBd0RFK3RQNHoxT1VHZlBVc08zMjl5WUd2VVZnRXZuenpHWGpPdVNWMXhVbkxKUTNENFRxbXNEOXBINzNKYzhscXg4aHI4d2xRTXhjSCtybGpwUzNSZGNpaUE4ZkFOUWcwNm4yZnVubWxjL0cydjlmUzFmUEFjbURtZmNtZTFqak5HZllPaitpSHhUS3V2Z0FOc0NZaEx3Q0FBN0Q4WXEybHNOZXZZYkcweFVnNWdHZVlZOUxOa2NzOHpDL1Z0Tm94OG4zY3AzOEVnUytnQnRxZHpzVUI1NmFKQ3BmT0lJNlB5Z0NOTXR6aGZTL2tkZGc1T05XM0tOblRTbDl1dWJCM2VNeHNPcjNMMTQrdUp3RFdKT1FGQUxDUEQ2VGo4Mjc0RnVnNjVJME55c05TTWNCenpEY3AyRFUwejlUT012QjFGZmR4Q25zTjI3MmJpYklBRlhUSUc3bk9pMlc3THBsT2kzYW44eUhzdG53YlVMMzNmVnFHZkpzdWZtY3FlRkRYSmZ5Y09FZ2hIcnVHTmM0cmxvRUdXSk9RRndEQXRoOUFGMHN3cHBzWWFYdXFJczNTN3QwSWVRSEhuSFBTZkhNVkxJbFVkK21tek9zNHh3eVVBcWdvSWEvbUdRWmZkSUttU1o5TGZsV0c4bWgzT3VsYzNDdlowL293bTA2djdSM1drWmVCVHRjVGZzY084QU5DWGdBQTYzN1lYQ3lQZFJHK0JidjhFcnU1eGtvQUhHbnU2WWJGMHJBOTFUREhBSlJadTlNNU8vQm5wSWtxbC9CYVpUcWR4SDJmQWgrNmIxVDN1c04xSnB0S24wKzJDWGwxbGU0ZzgyKy9oT2ZnMU8zdDB0NWhRK2wzN3JmQjc5d0JudlF2SlFBQWVGeTZ1WjZXeG9vamZjRDhYeHp2dzJJNUpSODJtMDBYTCtBWWM5QXdidjRLYnJ5Wll3Q3E0VUlKR2l1RnZMNG9BelRrYzhwaStiMFBXL3l2dWhMdldidlRTVjlJTFdPM3JFdkxOTExGdVdVU0ZoMUNqNld2NmtBVjZlUUZBSEQvQStYNFBIMERmUkFXTnluOEFvcUh1QUVQSEhvZUdnWExGRFJWb1FSQVJmV1ZvS0hYTHRQcG5XNWUwRGdwV1BSYUdaNWQrdHhZdGkraS9tR1pSbmE0cHJqS3l6YjZzaHZBSTRTOEFBQ0NZQmNiSzVRQU9OQjhOQXh1a0RhZElERlFWVzdHTlZzS2VhV2x1WFM5aGlaOGJwbE9yOXVkenBkTjMvTnBhY0g0L3hZcXVMdFl5MEZZckRaUUp1bVlHTmc3N0NoZFQveXBEQUFQRS9JQ0FCcExzSXN0ZlduM2JpYktBT3g1VGxvdXMrRUdlYk45TnNjQVZkVHVkTTVVb2VIWE1ycDVRUlBwNXZWODgyNDNMTUsxWlRPMFRDTjd1S2E0amNmNE85Y1VBQS83bHhJQUFBMld2aEgwSmdoNHNSa2RWb0M5bW8zUCszRXpDUUplbUdPQTZoTHlJa21CZ3kvS0FJMTZ6Mi9xUk5uMlloVEsxem54YzFwcXo2NWhqK2VYejhvQThEMGhMd0FBMkV5aEJNQyt6TWJuZzdqNUdDeHRoRGtHcUxhdUVwQzd0N2pCRDgxNXo2Y3ZLR3dhd2hBSzNsRmVwckdNWHhBYTJEdnMrWnBpcUJJQTN4UHlBZ0NBemVpeUF1ekZiSHcraXB2M0tvRTVCcWlCZmszK0RuYW5teGMweTdVU0hFKzcwemtKNVF6VGptZlRhV0VQc1UveG1CcWxZMHNsQVA1SnlBc0FBRGJqQmp5d2s5bjQvQ1FIdkY2ckJxdmF2WnRDRllDSzZpb0JYNjl6RnAwM2hENmdPVGE5ZnRYSmF6ZnBjMlFadTBCZjJqVWN5RkFKQVA1SnlBc0FBTmIzcGQyN21TZ0RzSzBVOEFxTEd5RUNYdHpuRzhwQWxiMDh3dDhoR0ZBZFF5V29qRUlKMk9uenpYU2FRcDJiZE84N1ViWHR0RHVkZnR5OEt1RlQrNUNYN29SRG5HTUtuNVVCL2tuSUN3QUExdWVYVnNEV1ZnSmVwNnFCT1Fhb2kzYW4wejNTWDlWVjdZcGM4MHluaytDR0xEU0o3bjNITVNycDh4cmFOUnpZUUFrQXZoSHlBZ0NBOVJWS0FHeER3QXR6REZCajNTUDlQZWJRYWhrcEFiaU9mVUJQdVRiWDduU0c0VGhkTXpmMUlRZDc0V0R5TWZiaEFEOWFaMEdna29TOEFBQmdmYnFzQU50SzMyNTNjeHB6RE1BTzhsSlZWTUJzT2gyRnpaWndBNnI5V1lmRHpYMHBpSEpaMHFjM3RJZW84TEZtS1hDZ2tvUzhBQUJnZlc3QUF4dWJqYzlId1RmV2Vkcm5kdTltb2d4QVJSM3pCbGxmdVN0RjhBT2E4SGxuT3IyTG0wL3IvdmM1dE1UNnJ1SjRVY0xucFlzWHh6elBwR1B0RDVVQUVQSUNBSUIxZlhFREh0alViSHcrakp2WEtzRVBGRW9BVk5neGI5YjNsYnRTcnBRQUdtT1RVS2Z1T1d0cWR6cmRFbitlSE5sRHVLNEFPRDRoTHdBQVdJOHVYc0JHWnVQelFkeThWUW5NTVFCNzA5TUJwa0xYUXROcG10OCtxd1EwUXFFRUIxSFdVTXM0bnVQdGM0NTlYWkdPdWJGS0FFMG41QVVBQU9zcGxBQlkxMng4bnI2ZDdsdW1tR01BOXU5Q0NTckZrbzNRaE04L213VitkUEphUTd2VDZjZk5xNUkrUFo5MWNld0JQQk1oTHdBQVdJOHVLOEJhWnVQejFHRmtGTWNMMVdBZDdkNk5PUVpnZlVKZTFUSlNBbWlNZFR2czZNaTRubUZKbjlmbjJYUXF3TXV6eU1lZUxxRkFvd2w1QVFEQWV0eUFCOVkxak9OVUdWaVQ1U1lBTnZPcTNlbDBsYUVhTE5rSWpWSW93WDdrTGw2OWtqNDluWlJ3REFJOEl5RXZBQUQ0c2MvdDNzMUVHWUFmbVkzUCszSHpSaVhZUUtFRUFCdTdWSUpLMGZFRlhOZXU2aXZWRHcxTC9OeEdkZytPUVlEbkkrUUZBQUEvcG9zWDhFTXJ5elNDT1FiZ3NBYnRUc2R5WDlYaCtnaWE4SGxvT2kxVVlYY2w3K0wxSWU3bk8zdUpaejdYcEdQd2cwb0FUU1hrQlFBQVArWUdQTENPMUZYa3BUS3dvVUlKQURiMkl1am1WUmw1eWNZdktnR05zTTVTNUYxbGV0S3d4TTlOWjBiS1lxUUVRRk1KZVFFQXdJOFZTZ0E4WlRZKzc4Yk5XNVZnUTJrNVlOK0VCOWpPcFc1ZWxTSVlBTTFRclBIZitHTE1JMHJleGV2emJEcDFMcWNVY3VmQXp6dittSzVLQWxYMGJ5VUFBSUFmMHNrTCtKR1JFckNGUWdrQXRwYTZlVjNGTVZDS3lzeDVyNVVCYWkrRmdQcktzTFhMa3U5YktKTlIyTzNMZGdLblFDVUplUUVBd05OMFdRR2VOQnVmOTBONXYyMU51UWtSQTg1bHUzbmQ3blJHdVpzRDVaYkNBZStWQVdyKzJXaXhQR3RmSlRZWDU3TnUzTHdxOFZPOHNwY29tVkhRVVIxb0lNczFBZ0RBMDl5QUIzNWtxQVJzcVZBQ29BYWUrd3NSYmpwWHdHdzZUY2ZKSjVVQXFPVG55ay94UEQ2eGl5alp0Y1hFdFFYUVJFSmVBQUR3TkNFdjRGRzZlTEdMZHUvR0hBT3d1OU4ycHlQb1ZRMkZFZ0E4OExtZzB6bUptNHNTUDhXUnZVUkp1UVlFR2tmSUN3QUFubFlvQWZDRVN5VmdTMk1sQU9xZ0pFc2x2bWwzT2hmMlJ1bVBsY3M0V2o4WVBuOEJUZjFjK2FMRXorL2FMc0t4Q1ZBT1FsNEFBUEEwWFZhQUI4M0c1OTI0ZWFVU2JLbFFBb0M5R3JVN25UTmxBS0NDQmlWK2JwWnFwTFR5Y3RCL3FBVFFKRUplQUFEd3VNL3QzczJkTWdDUDBNV0xYUlJLQU5SSUdib1RwZzRvbzd6a0ZRQlVRcHkzQm5IenNzUlBjV1F2VVhLNmVRR05JdVFGQUFDUDA4VUxlTXBBQ1RESEFIdzFLY256T0kyakVQUUN3T2ZLdlNuc0loeWpBT1VoNUFVQUFJOXpBeDU0MEd4OFBnaUxqaUd3alU4NlJRSTFNeW5SY3hIMEFxQVM0bHpWalp0ZWlaL2k1OWwwNm5kamxGcGVUdlNUU2dCTkllUUZBQUNQSzVRQWVNU0ZFckFETjBvQTE4MkhKZWdGUUJWY2x2ejVXUWFQcWhncEFkQVVRbDRBQVBBNE4rR0I3OHpHNSttRzhTdVZZQWVGRWdDdW13OU8wQXVBc2h2NDNBTFBkNnpHNjhRenBRT3FSc2dMQUFBZVppa3Q0REY5SldCSFFzUkFyY3ltMDNUZC9MbUVUMDNRQzRCU2luTlQ2Zzc5b3VUenUwNWVWT1ZhOUhiTGExSFhpRURsQ0hrQkFNREQzSUFISG1PcFJuYnhwZDI3TWNjQWRWU1U5SG1sb05kRXB3WUFTbVpROHVjM3RvdHdMUXBRUGtKZUFBRHdNRGZnZ2NmMGxRRHpDOEIzaWhJL3Q5UXBwY2hkVXdEZ1dlVU9rNi9NNjdCWE9zOEJqZkJ2SlFBQWdBZTVDUTk4WnpZKzc4Yk5TNVZnQjRVU0FNNXZ6eUlGdlg1dmR6cnZadFBwME80Q3lpNmVyOUpuais0UC9yTzd2RXdaMVRJd3I0TmpGbUFiUWw0QUFQQ0FkdSttVUFYZ0FYMGwyTXFYc0FqUFR2SklpazNPdTdQeCtVTzE3NFp2Tjc3U3QrR1hTM0dsN1l1UzFzTDhBdFRTYkRwTlN5SitDb3ZsRWN2c2JYeWVhVTY1aU0vNXpwNERTbXlRemxrLytHL0dQcU5VZHQrV2ZWNzN1WVdxWFl2ZVZlUmFGR0FuUWw0QUFQQzlUMG9BUEtLdkJHdWZSNHM4YnR1OW04bXVQM0NiOEczdXZKWkdDbjJkNVAyWC92eWMzZGgwV2dEcUxKMnJxM0JqclJkSENxVmR1SWtOd0RIbERtMWxueXZIOWhTdVJRSEtTY2dMQUFDKzV3WTg4Smd6SlhoVXVoRXdpdU82M2JzcFJXZVVIQzVMbzFqOTU3UHgrYkxyMTNMMHczR0NYNS9LVWh1QUEwbnp3SnVLUE5mVThmRmp1OVA1YlRhZFh0cDFBQnpKUlFXZVkyRTNVVkZGaGE1RkFiWWk1QVVBQU44VDhnSWU0eHVoMy9zUXgzQWYzYnFPSlFldGlyQnk4eUlIdi9vcjR4RDcydndDMU5wc09yMXRkenFmdy9OMlROelVtN3g4NHlBOWYzc1JnQU1iVk9BNUZuWVRGZVhZQldwUHlBc0FnRzJrR3plVEJ6NDhUMWIrK1ZQNjkvN2N6U05KSFZWZVBQUHJjM01IK001c2ZLNkwxeitsemwyREtvVzducEtEWDlkNUhDcjBWVGhzZ0FaSTU5R3FkVkJJNS9nLzI1M091OWwwT3JRTEFUaklaNDVxTE5XWStMMFlsUlN2NCs3aSsreFQ4QVU5b01hRXZBQUFlTWlYc1BpRlRocDNxOXM5TFROVi9QQkQrYmVsdExyM1J1L1FMejYreHNJaEFEeWdxd1IvK3lXZUs2L3EvQUtmQ0gxZGhPMlhkM1N6QkdpQ1VhanVNamx2MjUxT09zOWZ6cVpUbndrQTJMY3FMTlg0S1FWbDdDb3FMRjNEQ1hrQnRTWGtCUUJBNnNTeURIUk55aEp3V2xsSzZ6dXo4WGszTEFKZ2FmVERmcnQvZlhKSUFJL1F5V3NSQXU3SGMzVGp3a29QaEw3U1hMUU1mTDFhcDNaTnJCdlFQSG5KeGlwM1VFalArMk44RGIvRjdkQ05iZ0QycUFvaEw1OVpxTG9pclArRmczN1FjUnVvR0NFdkFJQm1TamNzcnF2YXNTb3ZEWmJHOWZLZnJRUy8rbm03YmNjdnY4d0NIdE5WZ21ZR3ZKNllpMUkzczZ0N1hiN1NlQ2g0WEtoYTdYeHgzYkFSUVpsbVNlZkg5eFYvRGVubTRLRGQ2YVN1WGlPN0ZIZ0dKMHBRbzg4UG5VN2FuNzBLUEZYWHQxU2RZeGlvTlNFdkFJQUdhdmR1TG12NG1pYmgrK0RYYXVncmJkZFpXc3N2QW9ESGRCdisrbjhSOEhwMERycmY1V3NaOWxvTmZLbGQvYVJsclB2S0FBOUs1OE9yc0w5dXU4OGxQZi8zN1U1bkVCWkxPRHFYQThla2szQzlYRlRrZVpycnFMUjR2VGFKMTI1ZmFuQWRDdkFnSVM4QUFHb3JoeEgrL3VYVVNxZVZOQjdyOXVXWFdRRGZHOGR6NnBVeXJEMy9QQlQ0dWxZWm9DblNFb2Z0VG1jVTFsOHFwK3pTNTRZL0xlRUl3QTc2RlpuREM3dUtHa2pIOFN0bEFPcEl5QXNBZ01hNDMya2xtWTNQKytGYjhLdFgxU1VzZ2FQb05maTFEKzMrcmVlZWY4dzdBQTJTd3NGdmF2YWFsa3M0cHFDWDhETUFtNmhDSjY5UGRoTTFrYjdFSytRRjFKS1FGd0FBalpaRFhZVktBRHpxc3dBc0FKdktTK1Y4aUE5ZjEreWxwYVYvZm8ydjdUSXNsbkFVNUFYZ1NYSE9PQXZWV0RwdVltOVJFMFVjYjVVQnFLTi9LUUVBQUFEd0JEZXZBZGpXc01hdjdXVWN2N2M3blNLT3ZsME53Qk9xTWsvYzJsWFVoR01acUMwaEx3QUFBT0FwaFJJQXNJM1V6U3R1UHRUOFphYmxuRC9tc05lWnZRN3MrZnhDUGZSOTlvT2pYb1BleGMxbmxRRHFTTWdMQUFBQWZtQTJQajlwOE11Zk9BSUEyTUd3SWE4emhUSCtiSGM2b3ppNmRqc0FLMTc1N0FlT1o0QjlFUElDQUFDQUgydHNaNDUyNzhZeUJ3QnNMWGZ6ZXRlZ2wvdzZqcitFdlFENCtubXFRa3Y2NWprYjZxSlFBcUNPaEx3QUFBQUFBRGlrcXppK05PdzFDM3NCVzZ0U01JZ2Zxc3ErL0dSWFVUUHJmR0h0UkptQXFoSHlBZ0FBQUFEZ1lHYlQ2VjNjWERiMDVRdDdBVFJiVmJwQzM5bFYxTXlrUnU5UGdMOEplUUVBQUFDUG1vM1AvZElUZ04zbmsrbDBGRGZqQnBkQTJBdlloR3Z3K3VoWDVIa1dkaFUxdS9hOFZRV2dqdjZ0QkFBQUFQQzBkdSttbUkzUG0vcnlMVjhBd0w2a2JsNS9OcndHS2V6MXV0M3BmSWpiS3pjZ0FkZmdOZjRjdVFqMXZxakkwOVhKaXpyNjVRZm4wNGtTQVZVajVBVUFBQUE4cFI5OHF4dUFQVWlCcG5hbjh5NCtmS3NhZjRlOVVuZXpZYXlOdVJhNGZ3Mk8vWGhNUXNmVThkcnpTaFdBdXJGY0l3QUFBUENVQ3lVQVlGOW0wK2t3Ymo2cHhOOTZjWHhzZHpwRkhBUGxBTEt1RXRSQ2xaYmRuTmhkQUZCK1FsNEFBQURBVTA1bjQvT3VNZ0N3UjRNNHZpakRQNlN3MS90MnB6TVI5b0ptaStlQXRMVFlTNVdvaGNxRXZHYlQ2Y1R1QW9EeUUvSUNBQUFBZm1TZ0JBRHNTMXEyTVc0dVZlSkJLZGlSd2w1M2NReHoyQU5vbHI0UzFFYXZJczlUOEJvQUtrTElDd0FBQU5iVDVLV2wzczdHNTJjT0FRRDJaVGFkanVMbWcwbzg2a1dhZitQNFg3dlRHY1hSVlJKb2pMNFNWRjg4YjFmcDg5T3RQUVlBMVNEa0JRQUFBT3U1YS9qckg4M0c1N3FKQUxCUHFadlhKMlg0b2RkeC9OWHVkSzdqNkNzSDFONkZFdFJDVndrQWdIMFQ4Z0lBQUFEV2NScEhJZWdGd0w3TXB0TVVvRTVoQnN0RXJlZFZIQi9ibmM1dEhBUGxnUHJKUWM2WEtsRUxWZXJrVmRoZEFGQU5RbDRBQUFDd0hrdFlDSG9Cc0dlejZYUVNGa3VUQ1hwdE5oKy9iM2M2a3pndTR6QXZRMzBNbGFBMkxIY1BBT3lka0JjQUFBQ3M1MDRKdmtvM2xtOW40L08rVWdDd0Q3UHBOQVdwTDFWaVk2bmJ6Njl4cExEWE1JNnVra0IxeGZkdzZtellVNG5hcU5JNWVXSjNBVUExQ0hrQkFBREFlblR5K2liZFZQNDRHNThQbFFLQWZaaE5wNk80K1ZrbHR2SWlqcmR4L05YdWRFYkNYbEE5dVNQZlNDVnE1YlJDejNWaWR3RkFOUWg1QVFBQXdIcDA4dnJlMjluNGZLS3JGd0Q3SU9pMUY2L0RJdXgxSFlmNUdTb2dCN3lLc0Foc1VvOTlhcWxHQU9BZ2hMd0FBQUJnRGUzZVRhRUtEMXAyOWJxT282c2NBT3hDMEd0dlhxWDV1ZDNwRk1KZVVPTFBHTjhDWHFlcVVTc25GWHUrdWxZRFFFVUllUUVBQU1ENlBpdkJvOUxONUwvU0VvNXhuQ2dIQU5zUzlOcXJYbGlFdlNaeERKUUR5aU12clZvRUFhODY2bGRzM3RXMUdnQXFRc2dMQUFBQTF1Y2J6ai8yTm82SnNCY0F1eEQwMnJ2VWVmTzlzQmVVUTN3Zlh1VFBGZ0plQUFDc1RjZ0xBQUFBMWlma3RaNFhRZGdMZ0IzbG9OZFBjWHhSamIxWkRYc044MUp4d0pHazVWUFRNcXJ4NGUvNW1wbDY2bGZvdWVwV0RRQVZJdVFGQUFBQTZ5dVVZQ1AzdzE1ZEpRRmdFN1BwTk0yOS9lQW05TDY5WE03UndsNXdlS2x6Vnc1M2ZReUxaVlNoTENaS0FBRFZJZVFGQUFBQWEycjNiZ3BWMk1veTdQWFhiSHcraXVOTVNRQlkxMnc2VFowMDA5d3hWbzJEemRIQ1hyRFB6dzJkVGpjdGpSckhLSTY3c09qY0pkelZIUFkxQUhBUVFsNEFBQUN3R1RlWWQvTTZqajluNC9NaWpndmxBR0FkcytuMExvNStmUGliYWh5RXNCZHNJYjFYOGhLTWcvemVLWEtvNjY4NDN1ZHJYOHN5QWdDd0YvOVdBZ0FBQU5oSUVYd3pleDlTRFh1ejhYbGFmbXNVeDFXN2QzT25MQUE4WlRhZFh1WWx6OUxjSVRpeGY4dXdWNnJ6VlpxZlU4Qk9XVGl5czNqOFBlZmYzODNqdStjVng4bktZK2NndmhPUDNhcDFMWjdZYXdCUUhVSmVBQUFBc0pucnNMajV5WDY4elBWOE94dWZmNGpia1dVeEFYaktiRHE5VGt1aDVUbFo4UG93aEwxNFRyOHFBUlZXdFU2SUU3c01BS3JEY28wQUFBQ3dnWGJ2NWpadVBxdkVRYVRsYkQ3T3h1ZVRPQzdqNkNvSkFBOVpXYjd4bHppK3FNakJXTVlSQUFDZ0pJUzhBQUFBWUhQWFNuQlFxYnRYNnVEdzEyeDhmaDNIaFpJQThKRFpkSnE2VEtXbHNjYXFjVkRDWGdEcjZTc0JBSEFvUWw0QUFBQ3d1WkVTSE0yck9INmZqYy92NGhqRmNhWWtBS3lhVGFlVDNOWHJ2MEczelVOYkRYdGRLZ2NBQU1EeENIa0JBQURBaGl6WitDelNUZVcwbk9PZnMvSDViVjdPVVJjUkFQNDJtMDVUcDgwVUJuNm5Ha2VabDM5dGR6b3A3RFZRRGdBQWdNTVQ4Z0lBQUlEdFhDbkJzemtOaStVYy81ZTdlL1dWQklCa05wM2V4VEdNRC84VExPRjRER21KNWZmdFR1YzJEdk14UUFqZGlqM2ZXN3NNQUtwRHlBc0FBQUMyTTRyaml6STh1OVRkNitOc2ZEN1IzUXVBcFpVbEhIOEt1bThlUXdwZ2YyeDNPa1VjbGxZR21xeGJzZWQ3WjVjQlFIVUllUUVBQU1BVzJyMmI5TXZ3YTVVb2pkUkpSSGN2QVA1aE5wMFdjWFRqdzErQ2NQWXg5T0w0czkzcGpPSVF2QVlBQU5naklTOEFBQURZM2xBSlNtblozZXMyam9GeUFEQ2JUdE15eTkwNDNnVmhyMlBOeFpOMnAzT3BGQUFBQVB2eGJ5VUFBQUNBN2JSN04ybUp3QTloY1NPVDhrbExSNzJQK3lqZDJFOWpsUGFac2dBMDAydzZUVjA0aDZuTFZGZ0V0YzNmaC9VaWpsOWp2UWR4ZTVtNnFpa0phMHFkOTI1TCtMelNVcVNySGVyNmVkc05pNjZ5QUFCd1VFSmVBQUFBc0p0aGNKTzQ3TkpONXJkcDVGQmVDbnNWeWdMUVRMUHBkQkkzZzNhbk16U1BIMFVLWFgrTTlmNHQxVHVIN2VBcHR5VU5CVDc1bk9JeDNnMkx3RmMvTEFKaGFRaC9OWStsYWdHQWc3RmNJd0FBQU93Z2Q0YjZvQktWc1Z6S3NZampRamtBbWl1RnZlSVl4SWYvaWVNUEZUbTROM0hjdGp1ZHZsSlE0M05LRVVjS00xN0UwYzNubDlTWjdKTUtOY2FwRWdBQWh5TGtCUUFBQUx1N2pPT0xNbFJLTDQ3ZlorUHp0T1RtUURrQW1pc0hNMUx3OTZjNHhpcHlVS21yMGNmY1JRMmFjbjY1aXVQTU9RWUFnRjBKZVFFQUFNQ08ycjJidE96UVVDVXFLZDFzZmkvc0JVRHV3Tk1QZ2hqSDhMYmQ2UlJ4V05hTUpwNWpVbWN2WHhBQkFHQmpRbDRBQUFDd0IrM2V6Vld3REV1VkNYc0I4Tlc5c0pjbG1ROG5kZFdjdER1ZE02V2dZZWVZOUxraG5XTStxd1lBQUpzUThnSUFBSUQ5R1NoQjVRbDdBZkJWRG51bHVlQS9RZGpyVUY3RWtUcDZtWE5wMnZubE5tNVN3TkdYUkFBQVdKdVFGd0FBQU94SnUzZVRidGE4VTRsYUVQWUM0S3ZaZERvUjlqcW9GUFI2TCtoRkE4OHRhY24zaTJEcFJnQUExaVRrQlFBQUFIdlU3dDBNZzIvazE4a3k3SFViUjE4NUFKcnJYdGpydHlDWXNXOHA2RFZTQnBwMlhnbUxvQmNBQVB5UWtCY0FBQURzbjIvazE4OXBIQjluNC9NaWpxNXlBRFJYRG50ZHhvZHBQbmhuenQrcjE0SmVOUENjVWdUZGdBRUFXSU9RRndBQUFPeFp1M2N6aVp1QlN0UlNMNDYvWnVQenF6aE9sQU9ndWRKU2EzRU13eUxzOVhNY24xVmxMd1M5YUtJcjV4QUFBSDVFeUFzQUFBQU9vTjI3dVE2K2tWOW5iK0tZek1ibmx0Y0JhTGdjOWhyRjBRMkxzTmRZVlhZbTZFWGp6aU54TTFRSkFBQ2VJdVFGQUFBQUI5THUzUXpqNW9OSzFOYUxPSDYzaENNQVN6bnMxWThQZjRyakR4WFpTUXA2RFpXQkpwMC9nbTVlQUFBOFFjZ0xBQUFBRHFqZHV4bkV6U2VWcUxXMGhPUHRiSHgrcVJRQUpMUHB0SWdqZFh2OFQxZ0V2citveWxiZXRqdWRnVExRSUNNbHFEem5ld0RnWUlTOEFBQUE0UEQ2UWRDcjdsSlhyMTkxOVFKZzFXdzZuY1F4aUEvVDNQQkwwS1ZuRysvYm5VNWZHV2lJa1JKVTNtM0ZudStKWFFZQTFTSGtCUUFBQUFmVzd0M2NCVUd2cGxoMjlicFFDZ0NXWnRQcFhSeFhjWFRqSDMrT1k2d3FHN2x1ZHpwZFphQUI1NHFKend3YzJaa1NBRUIxQ0hrQkFBREFFUWg2TlVycTZ2WDdiSHgrcFJRQTNEZWJUa2R4cEd1Qy93dUxwUnhaYjI1TlFTOGRaMmlDUWdrQUFIaUlrQmNBQUFBY3lVclE2dy9WYUlRM3MvSDVyZVViQVhqSWJEcTl6VXM1L3I4NDNnVkxPZjdJYVJ3QzFEUkJvUVFBQUR4RXlBc0FBQUNPS0FXOTRraEwrZW5jMFF6cGhuUUtlbGtHQllBSDVhVWNoeXRMT2VyNitialg3VTdIa3NqVTNhMFNBQUR3RUNFdkFBQUFlQWJ0M3MwZ2JuNVJpVVpJUzB6OU9SdWZENVFDZ0tma3BSeFRNUGlub1BQblkwYnRUcWVyRE5UNFBEQ0pteThxVVZtRkVnQUFoeUxrQlFBQUFNK2szYnRKU3c3OU43aUoweFR2WitQelMyVUE0RWRtMDJrUlIrcFk5Wit3NlA3cFd1R2JGSjRlS1FNMXA1c1h4OUpYQWdDb0RpRXZBQUFBZUVidDNzMTEzS1NPSFpabWFvWmZaK1B6a1RJQXNJN1UwU2VPUVh6WWplTmRFUFphNnJVN0hjRnA2a3pJQ3dDQTd3aDVBUUFBd0ROcjkyNG1jYVNnMTIrcTBRaXZCYjBBMk1Sc09yMkxZeGdXWWErZjQvaXNLbUhZN25ST2xJR2F1bE9DeXBvb0FRQndLRUplQUFBQVVCTHQzazNxU1BGVDBLV2pDUVM5QU5oWURudU40dWdHWVMvTE5sSm5PbmxWMTZSaXoxZFlGZ0FxUk1nTEFBQUFTcVRkdXluQ29rdkhCOVdvdlJUMHVsSUdBTFloN1BYVnEzYW4wM2MwVUVNNmVYRXNwMG9BQU5VaDVBVUFBQUFsMCs3ZDNNVXhDSXV1WHBaanFyYzNzL0g1UUJrQTJKYXdWeENZcG80bVNsQlp1ckFCQUFjajVBVUFBQUFsbGJ0Nm5jWHhMbGpDc2M3ZXo4Ym5mV1VBWUJjTkRudWR0anVkZ1NPQW1yMmZKNnBRMlgxWHVTNXM4UnhxeVVZQXFBZ2hMd0FBQUNpeDNOVnJHQlpoTDBzNDF0ZjFiSHplVlFZQWR0WFFzTmZRbmdkS3BHcGYwRG16eXdDZ0dvUzhBQUFBb0FMYXZadkp5aEtPWXhXcG5SZGhFZlR5TFhvQTltSWw3UFZMcUg5SDBKZTZlVkZEbG0ydkxrczJBZ0FISWVRRkFBQ1VnVytOd3ByU0VvNXg5SU93VngyZEJwMUlBTml6MlhSNkZUZmRVUC9sbjgyaDFNMUVDU3FyYWtzMitwME1BRlNFa0JjQUFGQUdPdGZBaG9TOWF1dk5iSHplVndZQTltazJuZDdGTVF6MVh2NVpOeStnTEtyV3ljdnZaQUNnSW9TOEFBQUFvTUtFdldwcFpObEdBQTVoTnAxTzRoakVoLzlYMCt1R29iME1sTUNrWXMrM2E1Y0JRRFVJZVFFQUFFQU5ySVM5L2hQcTI2R2pLVjRHTjZrQk9LRFpkSG9iUjdwdStEblVhd25IMU0ycmJ3OER6MnhTc2VmYnRjc0FvQnFFdkFBQUFLQkcycjJiU1J5RHNBaDcvUmJxZGVPMlNkS3lqV2ZLQU1BaHphYlRVVmpjM1ArdFJpOXJZTTlTRXhNbHFLeXFMZGZZdGNzQW9CcUV2QUFBZ0RLd0xCbnNXUTU3WFliRkwreC9pZU96cWxUT2xSSUFjR2l6NmY5bjcyNlBuTGkydGdFM1R6MnEwajk0SXhpZENNQ1RnT1FJd0JFZ0lqQ09BRGtDanlPd2lPQU1FVmlUd0hpSXdDS0NaL2luS3YyWXR6ZmFBakhNcHo3WDdyNnVxaTZCRHdjMHE3djM3bGJmV250MldXL3BtaUV0NGZpeEFUL1M2MDYzNi82Q0pwZ3FRYm5qYW1GditjaGVBNEF5Q0hrQkFBQVI2RllETzlMcG4xL1cyMG05OWVyZi9sSnZaNnBTalA3ODdIaWdEQURzUTE3Q01WMlgvOTZBSDJkb2p3SUhWdFI5VjZmYjdkbGxORTE5WEkvcmJYTEg1b3RWUUhHRXZBQUFBS0FsT3YzejAzb2JWSXVsSE45WGxuSXN3VWdKQU5pbitXeVc1cDdTdTNvTjdVbmd3Q3paQ0lmM3V0NzZkMnkrZEFvVVI4Z0xBQUFBV2lZdjVUaXNGaC9rdjZtYXNUUlRVK25tQmNEZU5hQ3IxM05kYVlBRG14YjJmb1ZkQUtBQVFsNEFBQkRIUll0L2RoOG13Z0hrcFJ6SDlaYk93ZFN4UTNldm1FWktBTUFockhUMStsVGcyMzlsRHdJSHBKTVhIRkNuMngyb0F0QkVRbDRBQUJESFpZdC85cWQyUHh4V3AzOStvYnRYV0ttYlYwOFpBRGlFMU5Xcldud3A0ME5oYjEzSUN6amsyRGtwN0MzNzhoMU44MHdKZ0NZUzhnSUFBQUMrdXRiZDZ6LzE5bWRWWnZlT3BubXJCQUFjeW53MnU2eTNGSnI2cmFDMzNlOTB1eDd3QW9kVTBoZG5oTHhvR3NjMDBFaENYZ0FBUUFqenMrT0JLa0FzbmY3NXRON2UxbHV2L3UwdjFXSTVSdzVETnhJQURuL05QcHVkMUM4L1YrVXM3K3dlZzVMUHQxRzlQYmxuYzR6SFZ0S1NqVThGWTJrWUlTK2drWVM4QUFBQWdIdDErdWVuZVRuSC8xY3R1bmhZem5HL2p1Wm54NEplc1hob0FMUlNYb0pzVU1pMXdNQWVBdzdvb3JEMzYvcVdKdWtwQWRCRVFsNEFBQkRIdE9VL3Z3OFRvUUI1T2NlVHZKempUOVdpdTlkbmxka0xJYTlZbmlvQjBGYnoyU3dGRndaVi9LRFh3TjRDRG1oUzJQczFadElrejVVQWFDSWhMd0FBaUdQYThwL2ZzZ0JRbUU3Ly9DSjM5K3JWMjV0Nis2UXFPelZRQWdDaW1NOW1sMVg4b0pjSHZNQWh4OG5TT25uMTdEV2FvTlB0K2lJcDBGaENYZ0FBUUJRREpZQXk1ZTVlNDNycjFiLzl1VnAwOTJMNzBwS05QcXdHSUl3U2dsNmRidGQ5Qm5CSVp3VzlWL2NhTklWakdXaXMvMVVDQUFBZ0NKMjhvQUU2L2ZOSi9US1pueDJQNnRkaHZiMnRMR3UzVFlONmk5UVJZTnJtblZFZjU0Tjh6RVA3eHZ0RmNHYndnRDg2bWM5bXpwTW1qNFd6MldVK0h0SitqdGc1NjBWVjNwSnBRSE9rOGFkZnlIdlYvWkNtRVBJQ0drdklDd0FBZ2tnUGllZG54MjB1Z1E4VG9WbGoyclIrR2FXdEh0dUcrZGRIS3JPeFFiMmRSTnJQTForN29PM2owYnNIL0xrVTVKOG9WN01GRDNwNTBBc2MwdVNCODJXTTYvdDZMQmZPcGlIWHFRQ05aTGxHQUFBZ0RNdVFRVE5kVzhyeFRFVTJZcHkwUDhCNVFzeHIrY1hTamNONit4enNyZlhzSGVDQVkrTWs0TGg0bDRHOVJnUDRJaW5RV0VKZUFBQkFKRDBsZ09aS0hRdnJiVkFKZTIzaWFINTJiS3lNdzFMRGNMKytFclRIZkRaTFN3b1BIWU1BMzVrVTlGNkZzeWxhN2l3SzBGaENYZ0FBRUV2YlF3OCtUSVFXV0FsNy9hZmUzcXVJc2RLK2dJYVArOTJ1YzZWRjVyUFphZjN5ZTdCalVDZ1hPS1JKUWU5MVlIZFJPTWN3MEdoQ1hnQUFRQ1FESllEMjZQVFBwL1UyckhUMmVxeG9ZWWxQTGQ0WFFnUGdHbzhiekdlelVmM3kwZHdKOE1WcFFlLzFxWEEycmpzQjRoTHlBZ0NBV0tZdC8va3RwUUl0WkJuSFI0djIwS1hOYzVkNUM4b2N0OWlQWWFEM0lwUUxUYmh2NkhZdjYrM3FubTBjN1gzUFo3TjB2Znl4b0ZJUEhHMFVPa1k4YzQ4R05KMlFGd0FBeERKdGV3SG1aOGNlQWtKTHJZUzkzdFRiWnhXNWxRZlY1aTBvelVBSldqZyt6bVlYVlp4bEc0M1ZVUHE5d3FLNzFOTUgvTkZwMEI5aFl0NEd4eTdBcG9TOEFBQWdscWtTK0VBRzJxN1RQeC9YTDcxNisxTTFidVNieWJFSURzRDlqanJkYms4Wld1bWthdmV5dnNEMkRBcC8vMk8xQnNjdXdLYUV2QUFBSUphcEV2aEFCdmdTOUxxc3Q3ZlZZZ2xIRDRldm1aOGRSK3JtTlduNTdoRHlBdGQ0M0RaZnpXYVg5Y3Nvd0Z2cDJSdGdIam53ZUhoUjBIM04wOXc1RFVyelNnbUFwaFB5QWdDQVdLWktVTDFVQW1BcExlRllMVUkwWjZyeEhROWQ0aGdvQVRoWHVOMThOaHRYaHc4MjlPd0phTTA4Y2hINFp6Z3RxTjdDTWhRbEJ4T1BWQUpvT2lFdkFBQUlwTk0vbjZyQ2x3NDFQa3dFVnNmRzFOVnJVUC95dldvUTBQTmduZFVncW9FU3ROcElDWUMxN3djVzRZMm5EL3pqbDRGL2xIRkJaZmU1REs0MUFRSVM4Z0lBZ0hnK0tvRVBFNEVmZGZybncwclFhMmtRNkwxTTdBN3pGanpBVWFmYjdTbERPd1hwNWdXNDFqcjBXRmpTa28zUDYzbmJGeGtveVZBSmdEWVE4Z0lBZ0hndWxjRERjdUJtT2VobDZVYWlHU2dCT0ZlNDE0a1NBR3RxMG1jRVkzV0g3Y3BmSkhpdUVrQWJDSGtCQUVBOEV5V29ubHF5RWJoREdoOCtLME1ZRjByZ0FSZzgwRUFKV20xOHdIOWJOeG9vVk80bTllRHd4bncybXhnTFhlUGlmZ3lncVlTOEFBQWducWtTZkRGVUF1QW1uZjU1Nm5qNHR1VmxHQVRiSDIwbm5Bd1A0enhwc2Zsc2x1YUxEd2Y2NTNYM0FITkhsTEZ3V3BYVG1maWxKUnNweEZBSmdMWVE4Z0lBZ0hpbVN2REZ5L25aY1U4WmdKdDArdWZqK3VXVFNvUmhYd2l2d0VNODdYUzdMNVNoMWNaS0FEelN3RmpvR2hkdS9XeGdjVzBwekEyMGhwQVhBQUFFMCttZlQxVGhxNkVTQUhjNFVZSXdwa3BRdlo2ZkhldDBBUGZ6c0xqZDNPc0F1NXczaXZqaXdYdzJHMWZsTEQ5djNpYTZvUklBYlNMa0JRQUFNWDFVZ2kvZWVtQU8zT0ZVQ2NLWUtzRmkzbElDdUplSHhTMTJ3Q1ViZFp5RUFuVzYzVUg5OHJTaDE2VGpRdDZuSlJ0eGJRa1FpSkFYQUFERU5GV0NMOUtIdVI2WUF6ZnE5TStObGVhdGFJWktBUGQ2N21GeDYwM01VOEFETlRtOGNXSS93SWFmQ1hTNzZkZzhVZ21nVFlTOEFBQWdwZ3NsK0NwMTgrb3BBM0NMTXlVd2J3VnlWTTlaUTJXQWUzbFliTTRBYVBWOE1aL05wdFZoT2h1dXc1ZnZpTXE5RjlBNlFsNEFBQkRUUkFtK1N0MjhUcFFCSUxSTEpmaHFwQVJ3THlHdkZwdlBadTUxZ0h0MXV0MFgxZU03OUpRV0lpM2xzNDdVaGJQbnFDVFlHSkdPeVpjcUFiU05rQmNBQU1UazIrM2ZlNmt6Q2tCY25mNzVSQlcrU3QyOFJzb0FkMS9iV2JLeDlUNHFBWENQZFQ0REtPcUxCem4wV2twbll0MjhhTUlZQVZBOElTOEFBQWlvMHo5UEgweDY4UEc5ay9uWjhRdGxBSzdwS1VFWW41VGdLMHNOdy8xMDgycTNmWCtwUmNkSk1FOUVOUzdrZlE0ZGtqZ21BUTVQeUFzQUFPTFN6ZXQ3YWRuRzhmenNXTmNIUXFpUHhSVGlHQWx5SE55UkVvUXhWWUx2NXl4bGdEc0plWmt6M0ZzQk4rcDB1NE0xci9PTEMzVE9aN04welZqQ2x5V2UxdnRsNk9na3lCZ3g5RmtBMEZaQ1hnQUFFTmRFQ1g3d1BOVkYwSXNnMHNQcGQvWDJiMzFNbmxwU2RQOTA5ek52QmRlM2JDUGN5WktON1NaMEJkeGwzWHVyVXNlV1VxNFpMZGxJNldNRVFQR0V2QUFBSUs2SkV0eEkwSXNvK2l1L2ZsbHZmOVhINVdXOXBZNXpBK1haQzNXT3hRUDdINzBUQUlVNzZlYlZYdnZ1dGpOVmNqQS9SRlZRTjYvbnVjc2FIRXg5REtZdmUvVlZBbWdySVM4QUFBaXEweitmVm1WOHlIY0lLZWgxb1lzUGgzTEhzWmVXYUh0ZGIzL1hmMlphYnllTzA1MGFLRUVvUWw0Mys2dnRRYThVZkxXMExiY1lLZ0Y3TWxVQ0tFTmVodTFwQzMvMFVTSHZVemN2SElNQUJ5VGtCUUFBc1UyVTRGWkg5ZmJQL096WWh6c2N3dUNCeCtpditUZ1YrTnF5SEJoNTJlSVNUS085b1J4Ty91em92RkVLZXAyMDdCeDlrY2U5ZEZ6OFhXL0dQMjdTNzNTN1BXVm80VHcrbSszN1B1ZFMxYUVZd3laZEl6OWlYQnpYTHg4TGVLc3Z6ZDBjN0o1emNleTlWZ21nellTOEFBQWd0b2tTM091UCtkbnhSSGlHUFh2czhYWTk4SldXZExSRTFXWkdMZi81cDBIZmwyNWV0L3MxejFlOXB2NkExNEpkLytSeDcyak5jWlAyR0NvQk94K2ZaalB6RXhRZ0J6ajZHNXpyMDhKTFVNcVgyRWFPVmh4N0FJY2g1QVVBQUxHZEtzR0RwQStCLzhuQm1aNXlzQWViaEJWUzRDRjk4L1MvOWZGNldXK25hU2szeCs3RHBhWGZLdC9laldxaUJQZk9WLy9XeC9DbzNwNDE0RnpzNWZFcnpiK3BTODcxWU5lcWdkM1BMWVpLd0k1OVVnSW9ScXM3ZGVjdWgyY0Z2TlhYdW5teGIvVXhsKzZmZkZrT2FMMy9WUUlBQUlpcjB6OVBBWkRVcnYrNWFqeElDbjI4cm11V1BoUTlxZXNuSk1ldWJPdWNmRm90bGh6OHN1eGdQdDhueXkyTkFVcjl2ZHkxejdrZHQyT1dUaWtQODY3ZTN1WWxITWQ1cWN0U3pyKzBEZkoyOUlqL2U4OXU1eFpIblc3MzFYdzJNN2F6SzFNbEtNNkxTbkM4cllaSzhLVUcveGJ3UGtmMkYzdVdRcUJQbFFGb095RXZBQUNJYjF4dmZ5akRvNlJPS2YzNTJmSG5haEVHbWFUWEtJR1ozTEVwYmVsYmlDL3lyeTFqVllqY1JXcFhudWZ0MS94dm5WWGZRbDhYYlE5OTVZQkpxb1VQZHFzcTZyRXdzV3NlTEIzSEtlejFyajYyUCtUNUt0SmN0UXgwTGJmK2huL2xVZXBlSnJ6S0xZYVZBQy9tSnI1NXBnVHQwK2wyaHh0ZTU1ODFvUTVweWNtNkZuOHU3d2tEUzkyOFJnMVlJcE15eG9jMEw3eFZDUUFoTHdBQUtFRjY0Q1hrdFo3MEFmSHJ2UDJWdXlTbExqUFRhdkd3NTdMVFA5OUsxNW04N05acVVHdVFYMWYvKzR0S09LVUo5aG5JNitmdFhUN09WanQ5WFpUUy9XZEw1OWlvOHMzZFZTRTdadWxBdWJabFI3Ky85aG51WEFrZEw3ZEJucmQydGY5MFp1SFdjeUF0KytSQk1XMmFNNEVmQ0hCOGsrNTloZ1hjK3l6ZkoreGpmUEJaQUVBbDVBVUFBT0dsRUljSDVsdnpmS1dPeTlETThuOTc3TGQrbjlrbnJmVWl3REc4N1BTVnV0Vk5xc1hEeS9RNmJWTHdLNGNuWDFXTGh3ZEhEcjN2NW9iSTNaQW14c2VOWEE5M2ZzN24rR1gxTGFpdyt1dmI5S3J2bDBoYy9mMmhRc2RDWHR4bG1NZDcyRFloTDRoK2JkdnREbHcvcnR3SHpXYVhkVTFTcU9XdjRHODFkZk1hMSsvWDlSMjdIQjkwOFFKWUllUUZBQUJsR0ZlNmVlMWFYd2w0b0VHZzk1SkNHc3NPUU5jREljdXVkVjkrWGNvU2FibXpVS3J4cS94ejhhUG9TOUZNcXZqTHk1VGs2Y29jVmZvNVlXbGk3dksyMCsyZXBBZmJTdEY4OWI3ZTEzandXWWU0TzFrV2tUQnp3QmIramtiTkgvWFlOYzVMV0ViL3JHSVU3QjZaWm80UHVuZ0JaRUplQUFCUUJrczJRZ0M1czFUMGpsTExRRWovMm50UEx5a2N0T3dBOUxVVFVLZC9QamxRUGRNRDNsVFRRYlVJZjd5b2RPeDZpT2dkU1NaMkViZm9LUUgzekY4cDREdFdpbGJZVjdqSW5IUTM0VnNPTGkzWFcyMG55TjdFcm4zRGV2czMrSHZzMS92dzFYdzJPM1UwczZQeDRaMUtBSHdqNUFVQUFBWElTemFtY0ladVUzQllwVDhJdTdFYjBNcXlwY3N1WUV1VEcvNk9aVURzTHIzcXh6REhNdEMxL0xWdjRxNHY5QU9zMURYT25NVTlZeERjWmxRSmViV0ZrQmV3T3Zaemc5U0pzTlB0L2w3RkQ3bWMxTzl6b2hzbnhnZUEzUlB5QWdDQWNvd3JEMGZoMEFZTi8vbWVYaHRuakRreGxkQ2w0TlR4dzAxU0I3OU8vL3hDSmJqRlVWcWFLaTFScFJTTnQ2L2cvRVNwWFhNVFYrN1M4MW9sN3JoMm1zMUdxVk5XL2N2bmtlZnZhckdrM3NnZVk0dmp3d3ZqQThDUC9rY0pBQUNnR09tQitXZGxnSU95cEEySDlybVFnSXpsV3JoTlR3bTR4MXNsTUJac3lhZjViQ1pVQ3JHTnR2aDNOZmw4SHhid0h0L2xVQTVzeTRrU0FQeEl5QXNBQUFxUmxyK3FMRjhEaCtaRGF3NXRVc2ljTmExZlB0cGRHRWRady9OT3R6dFFCbU5CVytaTWFLc2RkUEZxN0ZLQk9iRDZXd0Z2ZGV6SVprdmpRK3BlcHpNMHdBMkV2QUFBb0N5K3hRWUhNajg3ZmxZdGxxR0FRNW9VOUY3SGRoYzNHQ2dCRHpCU2dzYmJ4N0pqdWtwQ2JEN2ZlTXo5Nkd5VzZuVVdmV3p2ZExzNmNyS1IraGg2Wm53QXVKMlFGd0FBRkNSM1J2bWdFbkFRQXlVZ2dKSWVXSS90TG03UVV3SWVvTi9wZG9mSzBOQjdtdjEwYXZzOG44MkV2TXIxVEFsYU1RNjhWSWxIUzkyTlBnZC9qMzlZdHBFTnBhQ2dMOWdCM0VMSUN3QUF5dVBiYkhBWVBxam0wRDdtc0c4UjhqTERnc2xjZDVRN0k4SjlSa3JRV0lNOS9Cc0NYbVY3cmdURytNZWF6MmFUcGhldC9oblQ5ZldyQXQ3cTJDSE9XdmVRaTREZ081VUF1SjJRRndBQUZLYlRQNTlVOFZ2MFF4TU5sSUFERzN2UE5JVFFMQTl4cEp0WFkrMGpvQ0RrQlVIbHNiMnZFdXZKWWJiZmc3L050R3lqTHlqaS9oRmdCNFM4QUFDZ1RDTWxnTDBUU3VEUWludGczZW1mcC9mOHlhN0RlTXFhVGpyZHJzNXZEWkwzNTY2N05IMnlWS1B4bU5CamdQRFBodW94YmxURi8vTGZyL1grZm1WdjhZanhZVlRwNUFod0x5RXZBQUFva0c1ZXNGL3pzK05lL2ZKVUpUaWdvcFpxdk1hRFBLNFRLdUNoMHR6N1Zoa2FaUjhQL01mSy9LaHpMT1k5YjdmYnMzc2FhYlNqNCs1elM4ZlQ2RittR0R1WGVlQ1liNWxHZ0FjUzhnSUFnSEtObEFEMlJpQ0JReXM1S0RXdTJ2bmdqZHYxbElCSGVPY0JjYU1NOXpUdllLNGdtSG9zSDlRdnYrN29yNzlvV3ozbnM5bGx0UWg2UmI3T1RvRytVMTA1dVdkc1NNZUhEcHdBRHlUa0JRQUFoZExOQy9aS3lJdERTZzl1aXYzUXU1NnYwZ01vM2J4WTFWY0NIbW1zQkEyNGYxbUU5WFo5L3IrZnoyWlQxWVp3NS84elkvbjIxZU5kQ3JjTmc3L041KzRGZU1CMTNwRXlBRHlNa0JjQUFKUnRxQVN3RndNbDRJQk9jbENxNkoraDBzMkxGZk96WStGWkhxUGY2WFpmS1lON2x3Y1lLM05qOUpTZ1VVYVZFTWR1cnFsbXMvUmxrRGZCMyticmVoNjMvREkveU1mRlM1VUFlRGdoTHdBQUtGaW5mejZ0WC81VUNkZzVZUVFPYWR5QStVbzNMNjdyS1FHUEhRc3Q5MVM4WFQvZ1A1dlBaaE5sZnVEY0hQOThNazgwNTFnYlZMdGJwbkhwb3MwMXJzZStkTC93UHZqYi9LTStGb2JPQ0ZiR2h2UTV5eDhxQWZBNFFsNEFBRkMrVWIxOVVnYllqZHh0NXFsS2NDRHZjNkMzQ1hUellwWHdMSStWNXVLeE1wUXBQOWpmOWZYVVNLV053NFE3OTFPWWNCL0xqbCsydmRiejJTeU5zOUdEWGljNTJJT3hvVmUvVEZRQzRQR0V2QUFBb0hDNU80cTI5N0E3UG9UbVVGSWdhdFN3K1dwa3QySnNaUU12TGR0WXJGMlAvN3A0TmM5QUNSb2hCYng4WVdaUGN0RHJZK0MzbUk2RmlhQlh1NjJFUDQwTkFHc1E4Z0lBZ0FibzlNL1RoeU1mVkFKMndnZlFITXBKZzdwNExlZXIxTTFMOTBtTXJXekNzbzJsamYyTExsNUhPLzVuUmlvTjRjNzlkRjcyVldMdkJsVVpRUzl6ZVh1bHp6Q2ZyL0gvUzUzcWRJWUdXay9JQ3dBQW1tTlkrYkFEZGtFUWdVTkk0L2xKZytjck9GSUMxcFFlRHA4cVF4bnlRL3pSanYrWkQ3cDROZklhVnppbzdITS9kVjE4dDhkLzBoaVExZU5oNnA0N3FBUzlpRGsyak5jYzM4OXlwenIza2tEckNYa0JVTEpMSlFENEppK0ROVlFKMkRvUG1EaUVZUjdYbXpoZlRTcmRKNm5OejQ0SHFzQzZjM1B1RUVOOGFWbjVvejM4R3p5ZWNBVzd1ZFpiTE1VM1Zva0RYbU9WRWZSS25ad0V2ZG8xTnFSeDRmVWEvOWQwSEwvS3gzWUsrditwbWtDYkNYa0JVS3lycTZ0MFlmK20wclVHNEt1OGJPTjdsWUR0bUo4ZDYrTEZJWnpsOGJ6SmhxN2pxWFJLWkRQdk90M3VRQmtDMzV0MHU3MXE5NTE4ZnAvUFpsUFZidXd4NUJ3dmI1K2x3RTY2am4ycUdnZStseFgwSXRiWU1LN1dEM2dOOHZHOE5LcTNUNm9LdEpXUUZ3QkZ1N3E2U2pjSHZjcTNOd0JXcFcreWYxUUcyQW9CQlBZdEJaK0dUZjhoZFo4azZ5a0JHenJOUVNKaUd1LzQ3LzgwbjgxR3lyeTJRUUh2VWZDanBPdTdSVkJuVWgxbVNlYXBQZkFqUVMrQ2pBM3BlbUJiQWEvbGNlMWVFbWd0SVM4QWluZDFkWFZaYnluUThGTzluYWtJMEhZckQ4NTFTSUhORFpTQVBVdkxORTViTWwvcFBva2dMWnRLbldKT1BSZ09PTVozdStsem1sMHZlVDFVNlkyVWNONllKOHB5VWkwQ08zdW5vOStkdFNrcDZPV2NiOTcxd0xqYVlzQnI1YmlldUpjRTJrcklDNERHdUxxNnVxaTNkTVA2UzZWZEw5QnluZjc1UmVXaEIyeURENW5acC9jdFdLYnhPdDBuMjYydkJDekh2MnI5THlpa0I4T25TaGpvWG1UUlhXMjA0My9tei95QWwvVTlMK0E5dWhZdjU3d2ZWK3NGT2RpRGxhQlg1QzlJQzNvMWEweDR0cXVBMTdWN1NWOXdCVnBIeUF1QXhybTZ1a29mN3FhYndkOWQ1QU50bG9NQ3Y2c0ViT1M1RXJBbkgrdHhlOWpDdVVyM3laYWJueDMzVk1INE41L04wamp3YW9PL281OGZKQkpEdWc5NXV1Tmo1cTB5YnpEL2xoT2lFUFlvNDNoSzQ2K0FWL1JycnRuc3N0NEdWZXp1UjJudVNFR3ZnVDFXOUppd1hMcDFsd0d2WlhoeHBPSkEyd2g1QWRCSWVRbkhkSUdmUGd6Nm9DSkFXM1g2NTJrczFMNGMxakEvT3g2b0FudVNBazZ0UGQ1eTkwa1A2OXZMQTN5K25QKzVLOU9iRGY2ZTE0SmVBY2IweFQ3WVpVZyt6WmxEbGQ1WUtkY2RSNVpqTGVLY1AzVEFTMWZZeDl6bkxvTFYwWU5lZjlmSGxyRyt6REVoWGR0ZnJIa3Q4T0NBMThyeG5KYUp0YW9MMENwQ1hnQTAydFhWMWJUZTByZUJmM2JERDdSVjdnd2o2QVdQSjNqQVBud0plT1dPVm0yZXE4YjF5NThPQjJNdHJmTitkY205K3RkcExOZzA2Q1UwZXFpeGZQRkFmdGRoajdmMWNYS2gyaHNiZUs5czRad2ZWekU2ZUYzYUc0K1RnMTV2Z3IvTnY0UzNpN3dPU05kMVIydjgzeDhkOEZveFVuMmdUWVM4QUdpRnE2dXJTYjJsaHdlL1ZaYUNBZG9wUGV3U2RvWEhFVHhnSDE3bFRsYXRWOWNoelZWQ3ljWmEybVYwL1Q5c0llajFoKzRmQnhqREY1MDcvdHJ4UC9NK0h4OXN0cTlTWjZ5WEJiM2xnYjBXOGpoSzU2SWxHZ3VXeDlOZnF0aWZsYWZ3OWtSSHYvanpTcjJkNU91QWRaWnJUdlA3aXpVRFhzdGpXVGN2b0RXRXZBQm9sYXVycTNTejBhczhQQUphSm5lSUdWU0NYdkFZZ2dmczJwdDZmSjRvdzNmejFkQmNaYXlsTmRJRHZlbE4vOE1XZ2w2NmYreHo3RjRFdkhZOW41M2x6ak5zcnJRNkR1eXlVT2Q3Q25PY1ZyRUNYanA1cmFrZVYwL3pPUlk1SU5PdnQybDkzQmtMWWw4RC9MckI5ZUEyNXFXUnZRRzBoWkFYQUsxemRYVjFXVy9weHVHbmVqdFRFYUF0Vm9KZXhqNjR4L3pzT0gxVCtMbEtzRU52OGhLRi9Dak5WWUplN1hHa0JLMDF1bk11M3M3U2pjYlpYZDlqTExxcnBKREEweDMrTTJsT2VLWGFXMVBha3FiUDYrT3NaN2VGT04vVGZwaFU4VHJCNllxN3liM3ZZZ25jRk5TSi9GbFJtbVArcm8vQmtUMFdha3hJKytPZmF2M1BUdDVzSzhDdG14ZlFKa0plQUxUVzFkWFZSYjBOcXNXSHhtNEFnRlpJUWE5NlMyT2Zqb1p3TjUxbDJKVzBITW92QWw1M3oxV1ZvRmVyek0rT0I2clFPcmQyOGZydTJOaFMwTXN5VHpzYXJ4ZDFuVlM3RFd1bWVYTzQ3aEpPL0xEUGhsV1o0Vm9odjhNZk8ybXVUbUVnWDRScDRyVllQY2JXVzlySHZ3ZC9xKy95OG8wOWUrMnc0MEc5cGZIZzNRWnorODg3V0lKNVpPOEFiU0RrQlVEclhWMWRwWnVKRndYY3hBSnNUVjRPUzlBTGJqZFFBbllnZlpnOXFNZmdVNlc0ZDU0UzlHb1h3ZHIyR1QvMEQyNGo2RlZ2RTBHdkxZL1Qzd0pldXd4OGZKazNjNWNadG1OVTZQdCthOWNkOUh4UHg4M2YxVzQ3OWhGQVBkNm1mZjF6SG4ralNzczNYdFRIcFhIaEFITi83cEw2OXdiei84Yzh0MDkyOEJaUGd4KzdBRnNoNUFVQTFkY2xITk5ON0g4cXk1Z0JMWkdEWG05VUFtNGtjTUMyZmZrd3V4NTdQYWgrK0R5MURIb0pKVGRmVHduYU5SNCs5c0hlU3RCcjNRZDM2VUhrTkhlaVlkUHhXY0NyMVAwMnFzcGRJdmZJK1h1UVk2YTNZYmVlZlpuYVc5dVQ1K2gwYlJaOStjWS9jbGN2OSs1N21QZnpISkxPdGRjYi9GVWZkam0zNTY2Zlkzc01hRG9oTHdCWWNYVjFOYzFMT0tadkxGbkNFV2k4dkZ6WVQ1VnZ1c0YxUGlobW03NThtQzNndGRZOGRhbjdwREdYeGpsWjUvK1VnMTZERGE1YjB3UGh2M1grMkhCY1hqeE1uMVlDWGlYdXQzZUYveGduOXVSZWo1bFIvZkp2VmNieWpGTjdiTHNLV3I0eGRmWDZKeDJ2T25idWJDeEk5MkxMc09jbTNmeCtxNCtwVjN0WWZ0bGNBVFNla0JjQTNPRHE2bXBTYjcxOEl5djRBRFJhRGgya01VOG5RNmpOejQ3VGg4TkhLc0dXL0ZhUHM2OXlWeXJXbjZ1R2xlNlRUZFpYZ2xaWmU4bmFIUG9aVkpzdDVicnMvT0ZoOEdQSDRtNzNWYlhvNExYTEpkc0V2TGEvMzVhZDEwcjNQQzhUeG83UDgzcWJWdVdIQXRuR3ZmRmkrY2FmcXZoTHFLZmpkWm9EU1d4aDNraWgrRHdXL0ZWdDl2bEkraUw5VC9XeGRMS25ZM1phd1BFS3NCRWhMd0M0UTE3Q3NWZnBIQUEwWE82VU1xamlmMHNUOWtGSEdiYmh5NGZaOWRqcW04VGJtNnZHMWVJaGs0NjdEVFEvTys2cFFpdDgyTFNEdzByUWE1TXZLS1JnNFRTSGxuaklHTHpvNnZQZlNzQ3J0UDIyREhnOWJjaVA5RnJRYTJmSHlpQUZZUE41N2dzdmZEZnYxbHU2UjQ3K2VWRWE1LzVLd1NUeis5cmpRRzlsV2NZL3RqQVdwR2NxTHc0d3I1c25nRVlUOGdLQWUxeGRYVjNXMjdCYUxPR295dzNRYUozKythZ3E0MXVhc0VzREpXQkRmOWJiQzhzejdtU2VTalZORDVrK3FFYmpDTmkydytrMi9wS1ZaYVQrM09DdlNRK0QvNXU3ZXZYc21sdkczY1VEMytVeVRidVU3ajhFdkxhNzc1WUJyK2NOKzlGZU8yKzNkNHlremtlNVc4L2ZWYUdkTmV0eFkySnY3cVhPbzZxTXo0dU9WdVozOS9ZUEd3c0dPVUQ3YjdYNXNveEpDbTMvVWg4end6MHN6M2lUc2IwS05KbVFGd0E4VUY3Q01kMFl2cWtzNFFnMFdIcUFYbThsZkVzVGRrWFFnSFdsRGxNLzEyUG9XOHN6N25TZVN0MG4wN2Z6ZjNOZGJ1eWxPS2ZiL012bXM5bmIrdVdYRGNlQ0ZHcjROM1d1c0lUanRmRzIyMDMxVGFHclhZZUVCTHkydisvU21EcXBtaGZ3V2oxdkw1eTNheDhmcjNLZ1kxcHR2aFFiTGJMUzFhdUU2L0EwVHZ5ZE8zc043YjBmeG9IVkpSbFR5UFAxbHY3cTlHV2NYbjJjbkI3d09MMnNmQ2tJYURBaEx3QjRwS3VycTNHMVdNTHhUOVVBbWl4MzlmcFBwWXNoN1ROUUFoNHBQZUQ0dlI0M2UvVTJVWTY5elZOcEtjd1g1cW5HRVBKcXZnKzc2T2FRSHlLbTQyZlR6aUtwYzRVSHdkWFhqaDRwY0pXV2F0cjFNbi92VTJEZ1FKMCttcmp2bnVXbHR2NnBtaHZ3V25xNmN0Nk9kUGE2OTdqNEV1eXF0M1N1cFNVWlgxZk5XY2FUUGF2SDdIUWRuczY1OXdXODNSUmlYQzdqMlBxeElvOEY2ZHJwLzZydExNbTRlaytjdW5lOUNqS251eThIR2t2SUN3RFdrSmR3VE45b0ZYNEFHcTNUUDUvVzI2QmFkRWo0cENMc1FIb2dleHJzUFUzc0ZoNGhQZGg0a1lPeEhHNmUwbTIzZkVKZXpiZXorWFUrbTAxelo1Rk5POUdtd01OZmJlMzZrWmRtSEZlTGpoNzdDQWk5U1VzNU9UVzJzdStXblpuU1EvdDNMZnZ4bDJHdjFKSHZJbmVtNmJYOGVGaUd1azV5WURNZEYwME5kcm4rTzVDOGRISWF3Myt1eXZoOC9HaGxyRGhONTBqYjVvaVZrT2ZMTGY4VDZjdndCKzNlZFlOVFp5blFWRSt1cnE1VUFRQTJuVkNmUEVrM2hTZlYvZDk4K2IyZWUwY3FGc1A4N0xpMUYwS2QvdmtUUndCcm5qY3A0SnJHTWQvNFpWMHBMRGpKMjJuVUplM3FZNzFYdnd6elp2a1NicEllWkF4VHlFZ3B3cHkzei9JYzlhdHFsRGsvcEc1NHlsRFFQY1dpVzlCandpUS83V001dnRTRnFuNFpiMm4rL3BUL3JwTW1kNXJLZ1ppMFAxL3Y2WjlNSWYraDVSazNQczVUc0hHUU4vZG5ONSsvRjNsTDl4NFhUVHlQODdId2JPVjQ2TFhzL3VXczNxOERoM3VJWTNHWTU1S1NqcjhVRWt4aG9OTmdBYVZOOThXelBCNjh5dHV1NW9oMFR6eXFhemNKV29lSExEbHREQUdLSStRRkFOdWNXSjg4U1RleWIrKzRjUkx5Q2tUSUM5WStkNTdsc2U2dThRNldWa05ka3hJRE1mVXgveUlmNzY4YzgxVDVnMnpMTW9ZK1ozdlZJcFRSVjQwaWZFajdxejZuZk51K3RIdUt4NFc4UHMxbnM5NGUzOXN1UXArcGMrTTQ2b1BNTmV2MEtsL2o3SE84VE4wK1JwWm52SE8vcEd2UFovbTN5L0JPTXNpL2Y2NUtHMS9McGVOdkdUSzh5TDlmWEVjRU9NZHo4SEoxekZ3OUpnWXIvODI5aVlCR3hER3MxQzhIZnM2Zlc2UnIwa25xRWxyZzNQRXFqeEc3bnRjLzVibDhITHdtSncrNEZqU0dBTVVSOGdLQWJVK3VUNTcwcXR1L0FTdmtGWWlRRjJ4OERpM0RYc05LcHlPK1NaMFpsdCtXbnpTdHkxRjkzQysvQ1R0dzNMZE9lcmcvMHJtcnFQTjFrSy9MaGIzaVNRK0cwa09YVStkVXdmY1Vqd3Q1dlQvRXNuejVnZWU0Mm00b0poMi82UUh3dU1ST1ZMa213M3c5YzdUbjgzN1lwSkRjSTJvK01SZkJ6Z2hveEJ6M212RGx3UFRaUmhxL3YzeStFU24wbGV1NzJzMXhYNkhQei9rYXZvZ09wem5NL2w5akNOQTBRbDRBc0t0SjlzbVRRYjdwV2Ywd1djZ3JFQ0V2Mk9yNU5Ld1dIOTc1Vm5tN3BBLzR2Z2E2MHErakxyKzRvK04rK1pCMDROaHY5REdlcnVmR2dpaEZuNnVEUEVlOVZJMkQraHFNcWM4blM3UTE0WjdpY1NHdjMrYXoyY2tCMyt1dXVvb3NqK3N2MTBKUkgzam01ZHlXUWZWRGhOUmIzYjFMeUF0MjZpQWhZaDQ4L2ozTDk4eHZxL0svSkxYOC9DTnQwK1d2ZHoyMzVUbThsN2ZscjQ4TzhMTVhFKzY2ZHZ6OTN6MS9UTWdMS0k2UUZ3RHNlcko5OG1UMXcyUWhyMENFdkdBbjU1Vmw3WnByTmREMTVjTk1vWmZ2anYxZTlhM0RseUJKK2RMeWNhbkQwRmdwR25lZWpzeFJleVhZMWVSN2lzZUZ2SDQ2ZE5lckhTM2hlTjNaNnZYU0licCszTkRkNDVEaG9sU1B0eVYyUE52eVBwbFVRbDZ3SzcvWFk4eElHWW9ZQzRkVmM3OGNtTHArWFZiZkx3VmJWZGVXZzczRllPWFh2ZXJiVXEwUjVvMGl3MTNYanJ0MHpEMjc0NDlNb3k4N0NYQ2RrQmNBN0dQQ2ZmSmsrV0h5cFpCWEhFSmVzTlB6SzQxNzZTSDZzUEpBbzBUcG9mekY2aWJROWVoellCbjRTcHN1WDJWSUg4eVBLOHZIdFdtTzBvRnlkK2ZTYVQ2WEJMdWFmRS94OEpEWDUvbHM5aXpRKys3bCsvUFhlL29uVTlCcFduM3IrcEVla2s0M0NZQ3RCTG1xZksyeC9QMitsbXQ2eUxYa3lFUFRyL3RyNHA0SWRrYklxN3d4Y1ZEcHNodGQ4ZUV1Z0NZVDhnSUFXa3ZJQy9aMnJ2V3FiOHZEZUxnUnk0M0xEYlJweWNVOW5nT0R2T2tnRkl0Z2wvTnp1ZXpxb1pZd2E4cGNNcW55a25YT3BSYmRVenc4NUJWeUdaejYvYWZ6UC8wTUx3T2NRdzhKUlBZS0dLZlN6ekk2NU5LY1FjK1ZpZnNnMkJraHIzTEh4bDYrRGgrNkRnOTFmM3dpcEEwUW01QVhBQUN3Tnl2ZFV3YVZzTXMrTFI4ZVR2TTJTYThleEIvc1BGaGRRbW5nUE5qN3VaQ09mMkVVYmpzM2g1VU9mQTl4bHMrbGRCNU5sS09kSGhIeUN2MEEvZ0Nkdlpvb2RlNUt3YTZ4amg4M0htTnBuQlR5Z3QzNHVSNTNYSXVVUDA0dXZ4aG9MajZNOTNrT2R5NEJGRURJQ3dBQU9KaHJZWmYwYTkvZTNFejYxbVY2c0RiSnJ6cHpsWGNlcEUzb2EzdVdvYTR2bTZYamVNUjUyYnQyWHJaOWZoTHE0Z2Q1dWFYQkEvN282WHcydXlqZzUwbm5mVm8rYW1ndWZ0UzFwNDRmOXg5YmFkd1U4b0xkRVBKcTFuaTUvR0pnMml6bnVQczVQTTNmQXRvQWhSSHlBZ0FBd3NnUDFWL2tiVkNWc1N6TlBxVXVDZE9iTmgySkduMGVwRmNQbXg4bWZWQ2RnZ1NUYWhGd0ZPckNlYm4rZWJRTUNrOGNBYlJOcDlzZFZvdXdsMkRPajFLQU9uWEVQQ2todkJma2VKbzRsbUJuaEx5YU8zWUtmRzNmcDVVNWZLb2NBR1VTOGdJQUFNS2JueDBQcWtYZ0syM3B3WHI2c0s5SkQwcVdIYmlTU1g1ZGR1S3FQR0FuTDNYNll1WDRIK1RYdGk0cHR3dzhUdktyUUJlSE9DK1g4OUx5Zkh4UmxSTk92aDRhL3JLa3IvTUl2cmZTM2V0VjVZc0hINnJGZytGVEhUOGVmUnhOS2lFdjJKV2ZCRTViTTVZdUExOERjL0tqZkZ5WnY1MHJBQTBnNUFVQUFCUXRMM1gzclByMmdMMjY5dXVsWFQxWU9idmx2MCt1L1g2YXR5OEV0OWppT2RDcnZvVWdlOWVPLy9UN0VqOEFUMTFDTHE2ZFMrbjFVZ2lGd3M3THUrYW1iUVkxVjhQQ1ZiVVNGTDUySHVuOENHdnFkTHZwL0IxVzdRcDhDWFlCRUhGTzdsWGZBbDlwMC9uNiszdnBTWjYvSnpwMkFUU1BrQmNBQUFDMHdFb2dzcXB1RGtMMjhuYWJ4d1JTenU3NDN5YTMvVjc0RVlBU05Qamg4bklacHpRZlR3UzdBQ2hvWGg1VTM1WldiMVBINjJXb2F6bDMrMUlVUU1NSmVRRUFBQUFBd0pweWw2OUI5ZTBCY3ltZHZsSW9PejBNbnFSWDNUNEFhTkRjdkp5VGUvazFiYVdIc2ordnp0dm1ib0IyRXZJQ0FBQUFBSUF0NlhTN3k0NlpnK3BicDh6K0FkOVNDbk10bDNGTjIxU25Ed0JhUEQ4djUrWmx0K3RvQWJDUEsvUDJ0UG9XNk5KaEV3QWhMd0FBQUFBQTJJZmNXU1FaclB6bndiVS9kdGNTeWNzdUhxc3VWLzdiMTEvUFo3T0ppZ1BBZytmb1hyVUlmeVhMQU5odGMvWFNmU0h1c3h2KzJ6UnYxK2R3UVM0QTdpWGtCUUFBQUFBQUFBQUFFTmovS0FFQUFBQUFBQUFBQUVCY1FsNEFBQUFBQUFBQUFBQ0JDWGtCQUFBQUFBQUFBQUFFSnVRRkFBQUFBQUFBQUFBUW1KQVhBQUFBQUFBQUFBQkFZRUplQUFBQUFBQUFBQUFBZ1FsNUFRQUFBQUFBQUFBQUJDYmtCUUFBQUFBQUFBQUFFSmlRRndBQUFBQUFBQUFBUUdCQ1hnQUFBQUFBQUFBQUFJRUplUUVBQUFBQUFBQUFBQVFtNUFVQUFBQUFBQUFBQUJDWWtCY0FBQUFBQUFBQUFFQmdRbDRBQUFBQUFBQUFBQUNCQ1hrQkFBQUFBQUFBQUFBRUp1UUZBQUFBQUFBQUFBQVFtSkFYQUFBQUFBQUFBQUJBWUVKZUFBQUFBQUFBQUFBQWdRbDVBUUFBQUFBQUFBQUFCQ2JrQlFBQUFBQUFBQUFBRUppUUZ3QUFBQUFBQUFBQVFHQkNYZ0FBQUFBQUFBQUFBSUVKZVFFQUFBQUFBQUFBQUFRbTVBVUFBQUFBQUFBQUFCQ1lrQmNBQUFBQUFBQUFBRUJnUWw0QUFBQUFBQUFBQUFDQkNYa0JBQUFBQUFBQUFBQUVKdVFGQUFBQUFBQUFBQUFRbUpBWEFBQUFBQUFBQUFCQVlFSmVBQUFBQUFBQUFBQUFnUWw1QVFBQUFBQUFBQUFBQkNia0JRQUFBQUFBQUFBQUVKaVFGd0FBQUFBQUFBQUFRR0JDWGdBQUFBQUFBQUFBQUlFSmVRRUFBQUFBQUFBQUFBUW01QVVBQUFBQUFBQUFBQkNZa0JjQUFBQUFBQUFBQUVCZ1FsNEFBQUFBQUFBQUFBQ0JDWGtCQUFBQUFBQUFBQUFFSnVRRkFBQUFBQUFBQUFBUW1KQVhBQUFBQUFBQUFBQkFZRUplQUFBQUFBQUFBQUFBZ1FsNUFRQUFBQUFBQUFBQUJDYmtCUUFBQUFBQUFBQUFFSmlRRndBQUFBQUFBQUFBUUdCQ1hnQUFBQUFBQUFBQUFJRUplUUVBQUFBQUFBQUFBQVFtNUFVQUFBQUFBQUFBQUJDWWtCY0FBQUFBQUFBQUFFQmdRbDRBQUFBQUFBQUFBQUNCQ1hrQkFBQUFBQUFBQUFBRUp1UUZBQUFBQUFBQUFBQVFtSkFYQUFBQUFBQUFBQUJBWUVKZUFBQUFBQUFBQUFBQWdRbDVBUUFBQUFBQUFBQUFCQ2JrQlFBQUFBQUFBQUFBRUppUUZ3QUFBQUFBQUFBQVFHQkNYZ0FBQUFBQUFBQUFBSUVKZVFFQUFBQUFBQUFBQUFRbTVBVUFBQUFBQUFBQUFCQ1lrQmNBQUFBQUFBQUFBRUJnUWw0QUFBQUFBQUFBQUFDQkNYa0JBQUFBQUFBQUFBQUVKdVFGQUFBQUFBQUFBQUFRbUpBWEFBQUFBQUFBQUFCQVlFSmVBQUFBQUFBQUFBQUFnUWw1QVFBQUFBQUFBQUFBQkNia0JRQUFBQUFBQUFBQUVKaVFGd0FBQUFBQUFBQUFRR0JDWGdBQUFBQUFBQUFBQUlFSmVRRUFBQUFBQUFBQUFBUW01QVVBQUFBQUFBQUFBQkNZa0JjQUFBQUFBQUFBQUVCZ1FsNEFBQUFBQUFBQUFBQ0JDWGtCQUFBQUFBQUFBQUFFSnVRRkFBQUFBQUFBQUFBUW1KQVhBQUFBQUFBQUFBQkFZRUplQUFBQUFBQUFBQUFBZ1FsNUFRQUFBQUFBQUFBQUJDYmtCUUFBQUFBQUFBQUFFSmlRRndBQUFBQUFBQUFBUUdCQ1hnQUFBQUFBQUFBQUFJRUplUUVBQUFBQUFBQUFBQVFtNUFVQUFBQUFBQUFBQUJDWWtCY0FBQUFBQUFBQUFFQmdRbDRBQUFBQUFBQUFBQUNCQ1hrQkFBQUFBQUFBQUFBRUp1UUZBQUFBQUFBQUFBQVFtSkFYQUFBQUFBQUFBQUJBWUVKZUFBQUFBQUFBQUFBQWdRbDVBUUFBQUFBQUFBQUFCQ2JrQlFBQUFBQUFBQUFBRUppUUZ3QUFBQUFBQUFBQVFHQkNYZ0FBQUFBQUFBQUFBSUVKZVFFQUFBQUFBQUFBQUFRbTVBVUFBQUFBQUFBQUFCQ1lrQmNBQUFBQUFBQUFBRUJnUWw0QUFBQUFBQUFBQUFDQkNYa0JBQUFBQUFBQUFBQUVKdVFGQUFBQUFBQUFBQUFRbUpBWEFBQUFBQUFBQUFCQVlFSmVBQUFBQUFBQUFBQUFnUWw1QVFBQUFBQUFBQUFBQkNia0JRQUFBQUFBQUFBQUVKaVFGd0FBQUFBQUFBQUFRR0JDWGdBQUFBQUFBQUFBQUlFSmVRRUFBQUFBQUFBQUFBUW01QVVBQUFBQUFBQUFBQkNZa0JjQUFBQUFBQUFBQUVCZ1FsNEFBQUFBQUFBQUFBQ0JDWGtCQUFBQUFBQUFBQUFFSnVRRkFBQUFBQUFBQUFBUW1KQVhBQUFBQUFBQUFBQkFZRUplQUFBQUFBQUFBQUFBZ1FsNUFRQUFBQUFBQUFBQUJDYmtCUUFBQUFBQUFBQUFFSmlRRndBQUFBQUFBQUFBUUdCQ1hnQUFBQUFBQUFBQUFJRUplUUVBQUFBQUFBQUFBQVFtNUFVQUFBQUFBQUFBQUJDWWtCY0FBQUFBQUFBQUFFQmdRbDRBQUFBQUFBQUFBQUNCQ1hrQkFBQUFBQUFBQUFBRUp1UUZBQUFBQUFBQUFBQVFtSkFYQUFBQUFBQUFBQUJBWUVKZUFBQUFBQUFBQUFBQWdRbDVBUUFBQUFBQUFBQUFCQ2JrQlFBQUFBQUFBQUFBRUppUUZ3QUFBQUFBQUFBQVFHQkNYZ0FBQUFBQUFBQUFBSUVKZVFFQUFBQUFBQUFBQUFRbTVBVUFBQUFBQUFBQUFCQ1lrQmNBQUFBQUFBQUFBRUJnUWw0QUFBQUFBQUFBQUFDQkNYa0JBQUFBQUFBQUFBQUVKdVFGQUFBQUFBQUFBQUFRbUpBWEFBQUFBQUFBQUFCQVlFSmVBQUFBQUFBQUFBQUFnUWw1QVFBQUFBQUFBQUFBQkNia0JRQUFBQUFBQUFBQUVKaVFGd0FBQUFBQUFBQUFRR0JDWGdBQUFBQUFBQUFBQUlFSmVRRUFBQUFBQUFBQUFBUW01QVVBQUFBQUFBQUFBQkNZa0JjQUFBQUFBQUFBQUVCZ1FsNEFBQUFBQUFBQUFBQ0JDWGtCQUFBQUFBQUFBQUFFSnVRRkFBQUFBQUFBQUFBUW1KQVhBQUFBQUFBQUFBQkFZRUplQUFBQUFBQUFBQUFBZ1FsNUFRQUFBQUFBQUFBQUJDYmtCUUFBQUFBQUFBQUFFSmlRRndBQUFBQUFBQUFBUUdCQ1hnQUFBQUFBQUFBQUFJRUplUUVBQUFBQUFBQUFBQVFtNUFVQUFBQUFBQUFBQUJDWWtCY0FBQUFBQUFBQUFFQmdRbDRBQUFBQUFBQUFBQUNCQ1hrQkFBQUFBQUFBQUFBRUp1UUZBQUFBQUFBQUFBQVFtSkFYQUFBQUFBQUFBQUJBWUVKZUFBQUFBQUFBQUFBQWdRbDVBUUFBQUFBQUFBQUFCQ2JrQlFBQUFBQUFBQUFBRUppUUZ3QUFBQUFBQUFBQVFHQkNYZ0FBQUFBQUFBQUFBSUVKZVFFQUFBQUFBQUFBQUFRbTVBVUFBQUFBQUFBQUFCQ1lrQmNBQUFBQUFBQUFBRUJnUWw0QUFBQUFBQUFBQUFDQkNYa0JBQUFBQUFBQUFBQUVKdVFGQUFBQUFBQUFBQUFRbUpBWEFBQUFBQUFBQUFCQVlFSmVBQUFBQUFBQUFBQUFnUWw1QVFBQUFBQUFBQUFBQkNia0JRQUFBQUFBQUFBQUVKaVFGd0FBQUFBQUFBQUFRR0JDWGdBQUFBQUFBQUFBQUlFSmVRRUFBQUFBQUFBQUFBUW01QVVBQUFBQUFBQUFBQkNZa0JjQUFBQUFBQUFBQUVCZ1FsNEFBQUFBQUFBQUFBQ0JDWGtCQUFBQUFBQUFBQUFFSnVRRkFBQUFBQUFBQUFBUW1KQVhBQUFBQUFBQUFBQkFZRUplQUFBQUFBQUFBQUFBZ1FsNUFRQUFBQUFBQUFBQUJDYmtCUUFBQUFBQUFBQUFFSmlRRndBQUFBQUFBQUFBUUdCQ1hnQUFBQUFBQUFBQUFJRUplUUVBQUFBQUFBQUFBQVFtNUFVQUFBQUFBQUFBQUJDWWtCY0FBQUFBQUFBQUFFQmdRbDRBQUFBQUFBQUFBQUNCQ1hrQkFBQUFBQUFBQUFBRUp1UUZBQUFBQUFBQUFBQVEyUDhYb0YwN0ZnQUFBQUFZNUc4OWpSM0ZrZVFGQUFBQUFBQUFBQUF3Sm5rQkFBQUFBQUFBQUFDTVNWNEFBQUFBQUFBQUFBQmpraGNBQUFBQUFBQUFBTUNZNUFVQUFBQUFBQUFBQURBbWVRRUFBQUFBQUFBQUFJeEpYZ0FBQUFBQUFBQUFBR09TRndBQUFBQUFBQUFBd0pqa0JRQUFBQUFBQUFBQU1DWjVBUUFBQUFBQUFBQUFqRWxlQUFBQUFBQUFBQUFBWTVJWEFBQUFBQUFBQUFEQW1PUUZBQUFBQUFBQUFBQXdKbmtCQUFBQUFBQUFBQUNNU1Y0QUFBQUFBQUFBQUFCamtoY0FBQUFBQUFBQUFNQ1k1QVVBQUFBQUFBQUFBREFtZVFFQUFBQUFBQUFBQUl4SlhnQUFBQUFBQUFBQUFHT1NGd0FBQUFBQUFBQUF3SmprQlFBQUFBQUFBQUFBTUNaNUFRQUFBQUFBQUFBQWpFbGVBQUFBQUFBQUFBQUFZNUlYQUFBQUFBQUFBQURBbU9RRkFBQUFBQUFBQUFBd0pua0JBQUFBQUFBQUFBQ01TVjRBQUFBQUFBQUFBQUJqa2hjQUFBQUFBQUFBQU1DWTVBVUFBQUFBQUFBQUFEQW1lUUVBQUFBQUFBQUFBSXhKWGdBQUFBQUFBQUFBQUdPU0Z3QUFBQUFBQUFBQXdKamtCUUFBQUFBQUFBQUFNQ1o1QVFBQUFBQUFBQUFBakVsZUFBQUFBQUFBQUFBQVk1SVhBQUFBQUFBQUFBREFtT1FGQUFBQUFBQUFBQUF3Sm5rQkFBQUFBQUFBQUFDTVNWNEFBQUFBQUFBQUFBQmpraGNBQUFBQUFBQUFBTUNZNUFVQUFBQUFBQUFBQURBbWVRRUFBQUFBQUFBQUFJeEpYZ0FBQUFBQUFBQUFBR09TRndBQUFBQUFBQUFBd0pqa0JRQUFBQUFBQUFBQU1DWjVBUUFBQUFBQUFBQUFqRWxlQUFBQUFBQUFBQUFBWTVJWEFBQUFBQUFBQUFEQW1PUUZBQUFBQUFBQUFBQXdKbmtCQUFBQUFBQUFBQUNNU1Y0QUFBQUFBQUFBQUFCamtoY0FBQUFBQUFBQUFNQ1k1QVVBQUFBQUFBQUFBREFtZVFFQUFBQUFBQUFBQUl4SlhnQUFBQUFBQUFBQUFHT1NGd0FBQUFBQUFBQUF3SmprQlFBQUFBQUFBQUFBTUNaNUFRQUFBQUFBQUFBQWpFbGVBQUFBQUFBQUFBQUFZNUlYQUFBQUFBQUFBQURBbU9RRkFBQUFBQUFBQUFBd0pua0JBQUFBQUFBQUFBQ01TVjRBQUFBQUFBQUFBQUJqa2hjQUFBQUFBQUFBQU1DWTVBVUFBQUFBQUFBQUFEQW1lUUVBQUFBQUFBQUFBSXhKWGdBQUFBQUFBQUFBQUdPU0Z3QUFBQUFBQUFBQXdKamtCUUFBQUFBQUFBQUFNQ1o1QVFBQUFBQUFBQUFBakVsZUFBQUFBQUFBQUFBQVk1SVhBQUFBQUFBQUFBREFtT1FGQUFBQUFBQUFBQUF3Sm5rQkFBQUFBQUFBQUFDTVNWNEFBQUFBQUFBQUFBQmpraGNBQUFBQUFBQUFBTUNZNUFVQUFBQUFBQUFBQURBbWVRRUFBQUFBQUFBQUFJeEpYZ0FBQUFBQUFBQUFBR09TRndBQUFBQUFBQUFBd0pqa0JRQUFBQUFBQUFBQU1DWjVBUUFBQUFBQUFBQUFqRWxlQUFBQUFBQUFBQUFBWTVJWEFBQUFBQUFBQUFEQW1PUUZBQUFBQUFBQUFBQXdKbmtCQUFBQUFBQUFBQUNNU1Y0QUFBQUFBQUFBQUFCamtoY0FBQUFBQUFBQUFNQ1k1QVVBQUFBQUFBQUFBREFtZVFFQUFBQUFBQUFBQUl4SlhnQUFBQUFBQUFBQUFHT1NGd0FBQUFBQUFBQUF3SmprQlFBQUFBQUFBQUFBTUNaNUFRQUFBQUFBQUFBQWpFbGVBQUFBQUFBQUFBQUFZNUlYQUFBQUFBQUFBQURBbU9RRkFBQUFBQUFBQUFBd0pua0JBQUFBQUFBQUFBQ01TVjRBQUFBQUFBQUFBQUJqa2hjQUFBQUFBQUFBQU1CWUxYS3JUY3hjZ0FFQUFBQUFTVVZPUks1Q1lJST0ifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wMS0wNiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IlQtU2hpZWxkIEZJRE8yIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVMkYxMDAwMjAyNTAxMDYwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wMS0wNiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTAzLTA2In0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiMjk3ODlkOTlkMzIxNDg1ZTdiZjU1ZGRkMjAxMTJkZGY5OGIyNmU3ZiJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyIyOTc4OWQ5OWQzMjE0ODVlN2JmNTVkZGQyMDExMmRkZjk4YjI2ZTdmIl0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IDUgU2VyaWVzIChFbnRlcnByaXNlIFByb2ZpbGUpIn0sImRlc2NyaXB0aW9uIjoiWXViaUtleSA1IFNlcmllcyAoRW50ZXJwcmlzZSBQcm9maWxlKSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzYsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6Mn1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiLCJyZW1vdGVfaGFuZGxlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRFBqQ0NBaWFnQXdJQkFnSVVYemVpRURKRU9UdDE0RjVuMG82WmYvYkJ3aVV3RFFZSktvWklodmNOQVFFTkJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNWjYvVHhNOHJJVCtFYW9Qdkc4MW9udE1Pby8ybVEyUkJ3SkhTMFFaY3hWYU5YdmwxMkxVaEJaNUxtaUJTY0laZDFSbngxb2Q1ODVoKy9kaEs3aEVtN0pBQUxrS0t0czFmTzUzS0dOTFp1ano1aDN3R25jcjRoeUtGMEc3NGIvVTNLOWhFNW1HTkQ2enFZY2hDUkFIZnJZTVlSREY0WUwwWDRENW5HZHh2cHBBeTZua0VtdFdtTW53TzNpMFRBdWNzcmJFNDg1SHZHTTRyMFZwZ1ZkSnB2Z1FqaVRKQ1RJcStEMzVod3RUOFFESXYrbkd2cGN5aTV3Y0lmQ2t6eUNpbUp1a2hZeTZLb3FOTUtRRWRwTmlTT3ZXeURNVE10MWJ3Q3ZFenB3OTF1K21zVXQ0cmowZWZuTzlzMFpPd2R3TVJEbkg0eGdVbDVaTHdyclBrZkMxLzBDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01COEdBMVVkSXdRWU1CYUFGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFNd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkRRVUFBNElCQVFDM0lXL3NnQjlwWjhhcEpOanh1R29YK0ZrSUxrczB3TU5yZFhML2NvVXZzcmh6c3ZsNm1lUE1yYkdKQnlKMVhucXVCNXNnY1JFTkZ4ZFFGbWEzbWlvOFVwZjFvd00xWnJlWHJKMG1BREcyQnBscWJKbnhpeVlhK1IxMXJlSUZUV2VJaE1OY1pLc0RackZBeVB1RmpDV1NRdkptTldlOW1GUllGZ05oWEpLa1hJYjVIMVhnRURsd2llZFlSTTdWb2xCTmxsZDZwUkZLbFg4dXN0Nk9UTU9lQURsMnhORjBtMUxUaFNkZXVYdkR5QzFnOStJTGZ6M1M2T0lZZ2MzaXJvUmNGRDM1NGc3cktmdTY3cUZBdzlnQzR5aTB4QlRQclk5NXJoNC9IcWFVWUNBL0w4bGRSazZIN1hrMzVEK1dWcG1xMlNoL3hUNUhpRnVoZjR3SmIwYksiLCJNSUlEU0RDQ0FqQ2dBd0lCQWdJVVVjbU1YelJJRk9nR1RLMFRiM2dFdVpZWmtCSXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFEbTU1NWJXWTlXVyt0T1kwcklXSGxkaCthTmFub0NaQ0ZoN0drM1laclFtUFV3MGhrU0c2cVlIUXRQK2ZaeVMzM1ZFcnZnK0JRcW5tdW1nTmhmeEZya3dFWkVMZWlkQmNDOEM0QWc0bnFxaVBXcHpzdkkxN05jeFlsSW5MTkxGY1pZLytnT2lONlpPVGloTzUvdkJaTWJqOXJpYUFjcWxpWW1OR0pQZ1RjTUdhRUF5TXpFTU55Mm5tNkVwK3BqUDVhRjZnaTIxdC9VUUZzdUoxajJSai95bk0vU2RSdCtlY2FsNU9Zb3R4SGtGYkw5dnZ2MkEyT3Y1SVRaQ2x3NGJPUzlucHlwUWltT1o1UUFZeXRtWWFRcFdsL3BNWXo2elNqOFJxa1ZETkVKR3FOZlRLQTJpdkxZd1g2bFN0dE1QYXBnMEo4NGw5WDB2b1ZOL0ZwUzRWQ1ZBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlFnS0ZBaEc2UmFXK2hUeTUyZHhlVDhiQzk2SHpBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBWU16Z0xySkxJcjBPb3ZRbkFaclJJR3VhYmlIU1VLU21iTFJXcFJrV2VBdHNDaERFSHBYY0ovYmdETktZV29IcVE4eFJVakI0Q3llcFlldmMzWWxyRzhvN3pIeHBmVmNhb0w1U2V1Smt6SHhLbjRiVGFTcDkrTXZ3YW1ucDY0a1pNaU5iRkxrbmZQOWtZS29SSGtNV2hlUkoxVXNQMXo0U2Nta0NlSUxmc01zNnZxb3ZxaldDbEZzSnBCY3NsdVlIV0Y3YkJKMW40UndnK0FURW9wWTRJZ0d2Nlp2d2MrQTlyK0FUMmhxcG9Ta1lvQWwrQU5Zd2dzbE9mOXNKZTBWK1RBOVlZL1VsYUJtUFBUZDAvL3I5d3ZjZVBXWmtQaktvQUMvelVOaGZEYmg0TFY4R0hzM2x5WDJYb21ML0xOYzhKWXp5SWFERWhHUXZlb1BoaC90cjFnPT0iLCJNSUlEUnpDQ0FqR2dBd0lCQWdJVWV4OW5UOXZ3Wk5YUzQ4M0xkaVlHZncyU2pTb3dDd1lKS29aSWh2Y05BUUVMTUM0eExEQXFCZ05WQkFNTUkxbDFZbWxqYnlCQmRIUmxjM1JoZEdsdmJpQkpiblJsY20xbFpHbGhkR1VnUWlBeE1DQVhEVEkxTURnd01UQXdNREF3TUZvWUR6azVPVGt4TWpNeE1qTTFPVFU1V2pBbk1TVXdJd1lEVlFRRERCeFpkV0pwWTI4Z1JrbEVUeUJCZEhSbGMzUmhkR2x2YmlCQ01pQXhNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXUxTWV2bnk5ZHlPOVpVQzM5U29NaExjUi9EWHJ0Ri9jaU0xMnRjaXkyRVhBWjZNa3JpdlZ0Q2ZFVk05WDZJU1RFbkJQNnVTWVlvdjZwcHY2TzZKaDJOSG1ZbTR3K0puUzRWbkNQVTdtSEFNZlZJMk1HVFRNVk9ldzB4VXNHN3NJU0lrSURVQm11azhZSzljNXppYzkrdkZRR0xJa3NkWE81aVZGSWdORzUzY0dYRDRaTFpvQVBpdTBQRW96eEFxWUlhSTRneEtoT0EzUzgvVzhtSVdzdTZvZnlqNEd2a0ZHNlo3a3lGMzEwN1A3bXdGSExySTNFTmFQV01PRmNUYUdhMGR3Ky92VlJ3alJjRVpCVnN1dVQvODdja1NzMGE1cGt0M3ZaQmxhWWVUOHB6U3JlVjdtb3djSU05MEwyaWFBVGxQMG54bWFFNm5PeVRib2pGVmwyd0lEQVFBQm8yWXdaREFkQmdOVkhRNEVGZ1FVU1hFaDNzYTNidER1cm00TU0vQzdTMWxSdXVZd0h3WURWUjBqQkJnd0ZvQVU2cmRDa0o0TWUyUjYyMVI4QTdwOFRwL1lvV0V3RWdZRFZSMFRBUUgvQkFnd0JnRUIvd0lCQURBT0JnTlZIUThCQWY4RUJBTUNBWVl3Q3dZSktvWklodmNOQVFFTEE0SUJBUUI1R2MzaGFmdHA3aEtzRVpzbytpL1o1blJ1cWRtekcyV0NsVW9SVXFiYVB5Z2xuSkRqS1Iva2ZnT2w2aWJiRi96dGhtM0ttWFE3SGNESVAyeE1kRzdVMkwyaW1iSlFIcVBmL2gySHFvamI0clpndWUrNlc0a3RTUjVlbFI5TDFyWXFFL1NHWU00aUVLb1ZRU3Y3UlQxcnhJZVdpS3N3L1Z4eGkvUU9uc3gzRjd4ODBDQ1lnQjRFM3lReDhWVFc0NDBoVEV3VEExZU1IT2l4MzJ0UHR5eUhJYThQVlZJZlZwSFFKQmFNVnZ2NTA4VUVqd2tiVTJybmpmem9TVE5TOUE1alVROG1CU3ZlOTVyakIwZG85OEVVK0R4ZEJxWDIrSDZpNXdsSUNGZ3poZHpjc25lOWhHS1Q2bHpUWDRjSWRKc3JZMit4bGVLMEZGUXk2bEdFVkxFZSIsIk1JSURTakNDQWpLZ0F3SUJBZ0lVVG5iYkdJUjJOSHZ6cUlLRkFlUXdHMVhCaXMwd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JCSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVFZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU9zWGozazA0QmFuNFRZZHRaS3FEL09QSnh5RHlhUG1DQlVGVWlhWklnVHRlWm5qM1gyNURoZ3BaWlhzQzREMHlkSWNybEE2d05VSW5PUkwvTDl6QmJURUlNQVZNR282ZzdVS0FtYjJNRjZBSGJuaFlKZDllaWt1cFZOV1NoSE5ZTmM0R0JkTzFZTjZBZlVxdkpoSGJlM1Y0U05NUG1CUkVLSlBWejdUaHdnbWdnVGU4V3MySzAvd3NxdjJ3U0U3cGJDQnNVWmhJWDUxYlpNM3BxRHdKUFRtUkZFdnQwLzZ0RzVlTzhGM2oxNE9YcWZFaG1qbjFWdnhLRFlRT0xaQXhDd3dnQzBQNENkZld2M3k4UFNSOEkzNTRoTzFZK0d6Tmp2SXFYMzhOS0x5d3VJWUhGZXJPeE5seEVNQnZGaFlCdVJ1WUFra2dVYVBxTjZVQmhzSUxyc0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ0NvUkhoaXlObmJuWFJXSUw2WkJYb0JYOVlUTUI4R0ExVWRJd1FZTUJhQUZDQW9VQ0VicEZwYjZGUExuWjNGNVB4c0wzb2ZNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUNRRmFmSkkxLzVXZzlDRUVpbUUxUlA1NFJnUXdUTlRPT1FzTEFDVGUrckl0bEZRekM5WkRoclY4Mjh5WDdqenkrQUFzcDNpeks3VDF0aDJkbDdtK3R1MHN3MlBhL29sYzAybnQ2UHlJdzM0OGdhSHpoSTErMEtFNDVxeHZGRGVMMmxNeGJQZkNZdnlFRWFZemppUUVMVTU5NTFwWEdXeUtNYS80Zkx0TytaS09YaE11VmVxNHJYRFBJNTRXNkpIT2lBYWlLZGl3KzVlM2Mya3QvakZJUXRNNnZNWGc5TE5GemRqRVROdDIwVlg5UWV2UnBGWmZ1Y01HOXdDYVFEb0ZsUHpwVE1KS2hQZXYvaW1KbVpZaEtmcjBsTGNlbXRxakl4TEFvcVpkT1lmSEJnNit2QWNkUEkvaWF1R3BVQXY3WCtVS05tRHdqWjJCYUg0c0x3aEIybSIsIk1JSURTakNDQWpLZ0F3SUJBZ0lVUjM4bXEyNlNmMnN6VlYyQmRHNldFTjdrdVdVd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVJZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU5ZMFdiOW9Qb1JvS29ReVdQYUpwejExdnJXVGc2elR0bU5qMlZvS1JueXZLR1JxcHpiODN3NWw2WUE5NlVZa1lCRFFQMGlsTzJEUGU2d1dxVlI1ekRmUnpkY0g4YmgrTDdkR0d2YWU2aFJUWmhrRmtDcFhEczRIY2NrbnJEZjhGQ2xKN0hlMzlKZjQyL0cxUW0yeno5V1dtclBYdGdpSy94MDVHanNRZkd1REcxemY1UVRVVWllOGx3eW1LM1RmZE92TmVlSkFBUGUycG43SXRmUmIrclZyTldpRHpsUm4ydk5uWjJ3UG80d0gvV0o2ZGhYWkcrck1XVCthNkJvY2cxVWZJdzZrZHVuRzRiVHBaenN2YWNGWXlSMG1wZitEZU9ucFNXQW15d0pXSHZUbGYyWVh4RnllWGNUQUNkUWxjTU5HSjJWaFpRNDh4dFA1L1JCUC84a0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ2h5NDJva2lxY1RTMWlxYS9IUldqa0JuNEgvTUI4R0ExVWRJd1FZTUJhQUZPcTNRcENlREh0a2V0dFVmQU82ZkU2ZjJLRmhNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUFuK1JISVBidE1FRE5kVDFnOEgvUml0QWtVZExnQXQxdFdHV25sajlrbmJ2NC80R2xYN0M5cDQ1ZWZQTzkvYVpMNk9WMVhSS0JpNkttdEJXNUs3bnVZRW5NeC81QnFCU2JMVDdyaGR1QzQ5VEJlTWI5UEhkWHNUbFNWTlllZnIxZEdpZHI0ajB4VkJRTGIxcmtuREFiZFdEektmdm5heUtPOEZyd2U3SHg4NDNNRy9ySitjMFhydVV2YmZWVENITGlJV2hNN29ORGhMOHhvYjZ4VW85S0xLY1NMK0l0WXNPMy85V2I4UTlHanNxTDRGWHNEY0cxU2FZaDdLcGZ1TW1PaXhxekpaTzJuSWljUFlSZzFJMlN1aVVmWU83MHRtZEhjYmwra1NRbVNZdDdycTR2aUlMZzJHeDNqOXJJVHVXVGpiYVVhU1NReGdPbU1TSHV5ek1BQyIsIk1JSURTRENDQWpDZ0F3SUJBZ0lVRHFFUncrNFJuR1NnZ3hnVWV3SkZFUERSWjNZd0RRWUpLb1pJaHZjTkFRRUxCUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURJN1huSCtadkR3TUNRVThNOFplVjVxc2N1Ymx2VllhYVJ0M1liYXhuOWdvZEx4NXN3SDBsWHJkZ2poNWg3RnBWZ0NnWVlYN0U0YmwxdmJ6VUxlbXJNV1Q4TjNXTUdVZThRQUpiQmVpb1Y3Vy9FK2hUWlAvMFNLSlZhM2V3S0JvNlVMZU1uZlFaRHJWT1JBazh3VExxMnY1TGxqNXZNajdKdE9vdEthOUo3bkhTOGtMbXpYWFNhajBTd0VQaDVPQVpVVE5WNHpzMWJ2b1RBUVFXckw0L0o5UXVLdDZXQ0ZFNW5VTmlSUWNFYlZGOG1scUsyYngyejZva1ZsdHlEVkxDeFlicFVURUx2WTF1c1IzRFRHUFVvSUNsT200Y3Jwd25EUkxWSHZqWWVQR0JCLy9wRXl6eEEvZ2NTY3hqd2FIMVpVdzliblNiSHl1cktxYlRhMUt2akFnTUJBQUdqWmpCa01CMEdBMVVkRGdRV0JCVHF0MEtRbmd4N1pIcmJWSHdEdW54T245aWhZVEFmQmdOVkhTTUVHREFXZ0JUUzd1OWFJbzA2YlZ3amx6M3loZFVtOFNWN2tqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQTRHQTFVZER3RUIvd1FFQXdJQmhqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFxUWFDV014VEdxVlZYN1NrN2trSm1VdWVUU1lLdVU2K0tCQlNnd0lSbmx3OUs3SGUxSXB4WjBoZHdwUE5pa0tqbWN5RmdGUHpoSW13SEpneHh1VDkwUHczdllPZGNKSk5rdERnMzVQWE9melNuMTVjRkF4MVJPMG1QVG1JYjhkWGlFV09wem9YdmR3WERNNDFaYUNEWU1UN3c0SVF0TXl2RTd4VUJacTJianRBbnEvTkRVQTdiZTRIOEgzaXBDKy8rTktsVXJjVWgrajQ4SzY3V0kwdTFtNkZlUXVlQkE3bjA2ajgyNXJxRHFzYUxzOVRiN0tBSEF3OFBtcldhTlBHMmtqS2VyeFBFZmVjaXZsRmF3cDJSV1p2eHJWdG4zVFYyU0J4eUNKQ2tYc05EMDVkQ0VyVkhTSklzK0JkdFRWTlk5QXd0eVBtbnliMHY0bVNUenZXZHc9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwiaWNvbkRhcmsiOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJwcm92aWRlckxvZ29MaWdodCI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsInByb3ZpZGVyTG9nb0RhcmsiOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0ifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMi0yMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzYsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWXViaUtleSA1IFNlcmllcyAoRW50ZXJwcmlzZSBQcm9maWxlKSIsImNlcnRpZmljYXRlTnVtYmVyIjoiVTJGMTAwMDIwMjQxMjIyMDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMTItMjIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTAyLTA2In0seyJhYWd1aWQiOiJjNjExYjU1Yy03N2IyLTQ1MjctODA4Mi01OTBlOTMxYjJmMDgiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6ImM2MTFiNTVjLTc3YjItNDUyNy04MDgyLTU5MGU5MzFiMmYwOCIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJJZGVtIEtleSJ9LCJkZXNjcmlwdGlvbiI6IkdvVHJ1c3QgSWRlbSBLZXkgIiwiYWx0ZXJuYXRpdmVEZXNjcmlwdGlvbnMiOnsiZW4tVVMiOiJHb1RydXN0IElkZW0gS2V5In0sImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyNjIxNDUsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfSx7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciLCJzZWNwMzg0cjFfZWNkc2Ffc2hhMzg0X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQnREQ0NBVnFnQXdJQkFnSUpBTXVqa1Z5aXc5MzlNQW9HQ0NxR1NNNDlCQU1DTURzeElEQWVCZ05WQkFNTUYwZHZWSEoxYzNRZ1JrbEVUeklnVW05dmRDQkRRU0F5TVJjd0ZRWURWUVFLREE1SGIxUnlkWE4wU1VRZ1NXNWpMakFnRncweU5UQTRNamt3T0RVeU5URmFHQTh5TURVd01EZ3lPVEE0TlRJMU1Wb3dPekVnTUI0R0ExVUVBd3dYUjI5VWNuVnpkQ0JHU1VSUE1pQlNiMjkwSUVOQklESXhGekFWQmdOVkJBb01Ea2R2VkhKMWMzUkpSQ0JKYm1NdU1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRXIzem4wWnR1SExoZk1oSHZhdStFYUFSa3lEQVN5dXRWRjI4eFlzdHFOeVd0YmpiT2w3bDl5U3NXRXRDaGFaS25hbm50blhCYkh5ODVaNU95MDAwZ2VxTkZNRU13RWdZRFZSMFRBUUgvQkFnd0JnRUIvd0lCQURBT0JnTlZIUThCQWY4RUJBTUNBUVl3SFFZRFZSME9CQllFRkw5TmJNbzBYQ282OXc5M2ZSTmlud2JGRmpyb01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lRQ2ZvbDNFZnJ6OFZDZ1NrdG93NmQzVVpRSjZKaThNWmZhbUVta1VZT1B3QVFJZ1NmVTl1dHRzdW45YmtsdmsvRnZsR2ExUzhweElIRU13UkVSOVltdnBKb1E9IiwiTUlJQnFUQ0NBVStnQXdJQkFnSUJBVEFLQmdncWhrak9QUVFEQWpBN01TQXdIZ1lEVlFRRERCZEhiMVJ5ZFhOMElFWkpSRTh5SUZKdmIzUWdRMEVnTVRFWE1CVUdBMVVFQ2d3T1IyOVVjblZ6ZEVsRUlFbHVZeTR3SUJjTk1qRXdNekF5TURZeE9EUTRXaGdQTWpBMU1UQXlNak13TmpFNE5EaGFNRHN4SURBZUJnTlZCQU1NRjBkdlZISjFjM1FnUmtsRVR6SWdVbTl2ZENCRFFTQXhNUmN3RlFZRFZRUUtEQTVIYjFSeWRYTjBTVVFnU1c1akxqQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJJemtNZHROWnQwWk96Tyt1MWYyRUtaUlNuZmh2eXdiaG9uQkY5TlNQcTJXRzdudVJpL3l2WjhsRGp3cDVkYXJRNk9kWmcrSHFiU1NlWEpYdzdVcGNsU2pRakJBTUE4R0ExVWRFd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnRUdNQjBHQTFVZERnUVdCQlJqV3hUbzFFcTMzWnJ4ZkxEV3NzZGRiRC92WlRBS0JnZ3Foa2pPUFFRREFnTklBREJGQWlCK0UwOUd6bWNZbE05NXFUL2FmblBVOXE2WEpteE9TS1dBUk81K2tnVW5XZ0loQUlhOW41cDQwdGNHZm1lRjYvV3ZZb2pBTnV5a1FxaFZrOFduZmcxNVM2OXIiXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBakNBWUFBQUQxN2doYUFBQUFCR2RCVFVFQUFMR09mUHRSa3dBQUFDQmpTRkpOQUFDSER3QUFqQThBQVAxU0FBQ0JRQUFBZlhrQUFPbUxBQUE4NVFBQUdjeHpQSVYzQUFBS0wybERRMUJKUTBNZ1VISnZabWxzWlFBQVNNZWRsbmRVVk5jV2g4KzlkM3FoelREU0dYcVRMakNBOUM0Z0hRUlJHR1lHR01vQXd3eE5iSWlvUUVRUkVRRkZrS0NBQWFPaFNLeUlZaUVvcUdBUFNCQlFZakNLcUtoa1J0WktmSGw1NytYbDk4ZTkzOXBuNzNQMzJYdWZ0UzRBSkU4ZkxpOEZsZ0lnbVNmZ0IzbzQwMWVGUjlDeC9RQUdlSUFCcGdBd1dlbXB2a0h1d1VBa0x6Y1hlcnJJQ2Z5TDNnd0JTUHkrWmVqcFQ2ZUQvMC9TckZTK0FBRElYOFRtYkU0NlM4VDVJazdLRktTSzdUTWlwc1lraWhsR2laa3ZTbERFY21LT1crU2xuMzBXMlZITTdHUWVXOFRpbkZQWnlXd3g5NGg0ZTRhUUkyTEVSOFFGR1Z4T3BvaHZpMWd6U1pqTUZmRmJjV3d5aDVrT0FJb2t0Z3M0ckhnUm00aVl4QThPZEJIeGNnQndwTGd2T09ZTEZuQ3lCT0pEdWFTa1p2TzVjZkVDdWk1TGoyNXFiYzJnZTNJeWt6Z0NnYUUvazVYSTVMUHBMaW5KcVV4ZU5nQ0xaLzRzR1hGdDZhSWlXNXBhVzFvYW1obVpmbEdvLzdyNE55WHU3U0s5Q3ZqY000alc5NGZ0ci94UzZnQmd6SXBxcytzUFc4eCtBRHEyQWlCMy93K2I1aUVBSkVWOWE3L3h4WGxvNG5tSkZ3aFNiWXlOTXpNempiZ2NscEc0b0wvcmZ6cjhEWDN4UFNQeGRyK1hoKzdLaVdVS2t3UjBjZDFZS1VrcFFqNDlQWlhKNHRBTi96ekUvemp3ci9OWUdzaUo1ZkE1UEZGRXFHakt1THc0VWJ0NWJLNkFtOEtqYzNuL3FZbi9NT3hQV3B4cmtTajFud0ExeWdoSTNhQUM1T2MrZ0tJUUFSSjVVTnoxMy92bWd3OEY0cHNYcGpxeE9QZWZCZjM3cm5DSitKSE9qZnNjNXhJWVRHY0orUm1MYStKckNkQ0FBQ1FCRmNnREZhQUJkSUVoTUFOV3dCWTRBamV3QXZpQllCQU8xZ0lXaUFmSmdBOHlRUzdZREFwQUVkZ0Y5b0pLVUFQcVFTTm9BU2RBQnpnTkxvREw0RHE0Q2U2QUIyQUVqSVBuWUFhOEFmTVFCR0VoTWtTQjVDRlZTQXN5Z013Z0JtUVB1VUUrVUNBVURrVkRjUkFQRWtLNTBCYW9DQ3FGS3FGYXFCSDZGam9GWFlDdVFnUFFQV2dVbW9KK2hkN0RDRXlDcWJBeXJBMGJ3d3pZQ2ZhR2crRTFjQnljQnVmQStmQk91QUt1ZzQvQjdmQUYrRHA4Qng2Qm44T3pDRUNJQ0ExUlF3d1JCdUtDK0NFUlNDekNSellnaFVnNVVvZTBJRjFJTDNJTEdVR21rWGNvRElxQ29xTU1VYllvVDFRSWlvVktRMjFBRmFNcVVVZFI3YWdlMUMzVUtHb0c5UWxOUml1aERkQTJhQy8wS25RY09oTmRnQzVITjZEYjBKZlFkOURqNkRjWURJYUcwY0ZZWVR3eDRaZ0V6RHBNTWVZQXBoVnpIak9BR2NQTVlyRlllYXdCMWc3cmgyVmlCZGdDN0g3c01ldzU3Q0IySFBzV1I4U3A0c3h3N3JnSUhBK1hoeXZITmVITzRnWnhFN2g1dkJSZUMyK0Q5OE96OGRuNEVudzl2Z3QvQXorT255ZElFM1FJZG9SZ1FnSmhNNkdDMEVLNFJIaEllRVVrRXRXSjFzUUFJcGU0aVZoQlBFNjhRaHdsdmlQSmtQUkpMcVJJa3BDMGszU0VkSjUwai9TS1RDWnJreDNKRVdRQmVTZTVrWHlSL0pqOFZvSWlZU1RoSmNHVzJDaFJKZEV1TVNqeFFoSXZxU1hwSkxsV01rZXlYUEtrNUEzSmFTbThsTGFVaXhSVGFvTlVsZFFwcVdHcFdXbUt0S20wbjNTeWRMRjBrL1JWNlVrWnJJeTJqSnNNV3laZjVyRE1SWmt4Q2tMUm9MaFFXSlF0bEhyS0pjbzRGVVBWb1hwUkU2aEYxRytvL2RRWldSblpaYktoc2xteVZiSm5aRWRvQ0UyYjVrVkxvcFhRVHRDR2FPK1hLQzl4V3NKWnNtTkp5NUxCSlhOeWluS09jaHk1UXJsV3VUdHk3K1hwOG03eWlmSzc1VHZrSHltZ0ZQUVZBaFF5RlE0cVhGS1lWcVFxMmlxeUZBc1ZUeWplVjRLVjlKVUNsZFlwSFZicVU1cFZWbEgyVUU1VjNxOThVWGxhaGFiaXFKS2dVcVp5Vm1WS2xhSnFyOHBWTFZNOXAvcU1Ma3Qzb2lmUksrZzk5QmsxSlRWUE5hRmFyVnEvMnJ5NmpucUllcDU2cS9vakRZSUdReU5XbzB5alcyTkdVMVhUVnpOWHMxbnp2aFplaTZFVnI3VlBxMWRyVGx0SE8weDdtM2FIOXFTT25JNlhUbzVPczg1RFhiS3VnMjZhYnAzdWJUMk1Ia012VWUrQTNrMTlXTjlDUDE2L1N2K0dBV3hnYWNBMU9HQXdzQlM5MUhvcGIybmQwbUZEa3FHVFlZWmhzK0dvRWMzSXh5alBxTVBvaGJHbWNZVHhidU5lNDA4bUZpWkpKdlVtRDB4bFRGZVk1cGwybWY1cXBtL0dNcXN5dTIxT05uYzMzMmplYWY1eW1jRXl6cktEeSs1YVVDeDhMYlpaZEZ0OHRMU3k1RnUyV0U1WmFWcEZXMVZiRFRPb0RIOUdNZU9LTmRyYTJYcWo5V25yZHphV05nS2JFemEvMkJyYUp0bzIyVTR1MTFuT1dWNi9mTXhPM1k1cFYyczNZayszajdZL1pEL2lvT2JBZEtoemVPS280Y2gyYkhDY2NOSnpTbkE2NXZUQzJjU1o3OXptUE9kaTQ3TGU1YndyNHVyaFd1amE3eWJqRnVKVzZmYllYZDA5enIzWmZjYkR3bU9keDNsUHRLZTM1MjdQWVM5bEw1WlhvOWZNQ3FzVjYxZjBlSk84Zzd3cnZaLzQ2UHZ3ZmJwOFlkOFZ2bnQ4SDY3VVdzbGIyZUVIL0x6ODl2Zzk4dGZ4VC9QL1BnQVQ0QjlRRmZBMDBEUXdON0EzaUJJVUZkUVU5Q2JZT2JnaytFR0lib2d3cER0VU1qUXl0REYwTHN3MXJEUnNaSlh4cXZXcnJvY3JoSFBET3lPd0VhRVJEUkd6cTkxVzcxMDlIbWtSV1JBNXRFWm5UZGFhcTJzVjFpYXRQUk1sR2NXTU9obU5qZzZMYm9yK3dQUmoxakZuWTd4aXFtTm1XQzZzZmF6bmJFZDJHWHVLWThjcDVVekUyc1dXeGs3RzJjWHRpWnVLZDRndmo1L211bkFydVM4VFBCTnFFdVlTL1JLUEpDNGtoU1cxSnVPU281TlA4V1I0aWJ5ZUZKV1VySlNCVklQVWd0U1JOSnUwdldremZHOStRenFVdmlhOVUwQVYvVXoxQ1hXRlc0V2pHZllaVlJsdk0wTXpUMlpKWi9HeStyTDFzM2RrVCtTNDUzeTlEcldPdGE0N1Z5MTNjKzdvZXFmMXRSdWdEVEVidWpkcWJNemZPTDdKWTlQUnpZVE5pWnQveURQSks4MTd2U1ZzUzFlK2N2Nm0vTEd0SGx1YkN5UUsrQVhEMjJ5MzFXeEhiZWR1Nzk5aHZtUC9qaytGN01KclJTWkY1VVVmaWxuRjE3NHkvYXJpcTRXZHNUdjdTeXhMRHU3QzdPTHRHdHJ0c1B0b3FYUnBUdW5ZSHQ4OTdXWDBzc0t5MTN1ajlsNHRYMVplczQrd1Q3aHZwTUtub25PLzV2NWQrejlVeGxmZXFYS3VhcTFXcXQ1UlBYZUFmV0R3b09QQmxocmxtcUthOTRlNGgrN1dldFMyMTJuWGxSL0dITTQ0L0xRK3RMNzNhOGJYalEwS0RVVU5INC93am93Y0RUemEwMmpWMk5pazFGVFNERGNMbTZlT1JSNjcrWTNyTjUwdGhpMjFyYlRXb3VQZ3VQRDRzMitqdngwNjRYMmkreVRqWk10M1d0OVZ0MUhhQ3R1aDl1ejJtWTc0anBITzhNNkJVeXRPZFhmWmRyVjliL1Q5a2ROcXA2dk95SjRwT1VzNG0zOTI0VnpPdWRuenFlZW5MOFJkR091TzZuNXdjZFhGMnowQlBmMlh2QzlkdWV4KytXS3ZVKys1SzNaWFRsKzF1WHJxR3VOYXgzWEw2KzE5Rm4xdFAxajgwTlp2MmQ5K3crcEc1MDNybTEwRHl3Zk9Eam9NWHJqbGV1dnliYS9iMSsrc3ZETXdGREowZHpoeWVPUXUrKzdrdmFSN0wrOW4zSjkvc09raCttSGhJNmxINVkrVkh0ZjlxUGRqNjRqbHlKbFIxOUcrSjBGUEhveXh4cDcvbFA3VGgvSDhwK1NuNVJPcUU0MlRacE9ucDl5bmJqNWIvV3o4ZWVyeitlbUNuNlYvcm42aCsrSzdYeHgvNlp0Wk5UUCtrdjl5NGRmaVYvS3ZqcnhlOXJwNzFuLzI4WnZrTi9OemhXL2wzeDU5eDNqWCt6N3MvY1I4NWdmc2g0cVBlaCs3UG5sL2VyaVF2TER3Ry9lRTgvczNCQ2tlQUFBQUNYQklXWE1BQUE3RUFBQU94QUdWS3c0YkFBQUFJWFJGV0hSRGNtVmhkR2x2YmlCVWFXMWxBREl3TVRnNk1EVTZNamdnTVRZNk5ESTZNVFQ5aHdyZkFBQUlIVWxFUVZSWVI1MVhDMUJVNXhYK2RsbGdRZDRQVVJBZmlTaGFORzFpN0JodG0wNUtVa25UV0IrTlFhMFlHMk9EbGpvT0drMWlPNTFxTkdRY2s5b2tSSnMwNEl3NnB1TjBURXhUYU9zWVM3U1NwaHBmMUtBVkJSWmhXUjRySUx0N2I3L3ozN3ZzUWhhQy9TNy9zdnozdk0vNXovbXg2QVNHQ1oyUC9GZ3M4cGY2NklOZmpNVjRPV3hZemQvRGcrWlhZRUhsSjUvanZnV2I4T2pxSFdoc2NhbjlPMVV1R0Y0RWhNUVUzdHJoUnQ3cWwzR3FzaHBJaUFGOFBxRHJOcFlWNU9IMUYxY2dKam9xS0ZMQ0krSUhOMng0RVRDVi8zemJINUE4Y1JGT1ZWOENSaWNEVVpGQU5KZlZpdklERmFqNjl4ZUtUaWtrajZiUkZIMXc1WUpCSXREZjZqOVZuc2E4WjNiUVd5OFFTNit0NWp0M3Q0ckExczBGMkx6cWNXT1A2TDFhcDR5S0dEZkczQ0VHQzRRWUVBeU5qeCsxMTV2MEtZK3UxNUdXcHlNblg4YzBXVXQxWkQraEkrbGhmV0hSVHQzcjlablVCaHBYYmRUUElWdy9qeEc2WTgwV2M1ZHlmUUc1d1JpMEJ2S0xkMk4vMlFmTWN5eGdaNWdGa3UrV2RveWNPQVpWKzMrTnV6UFRqSDNDdGZzZE9OWVcwMUVmd3BEQUhZMVBCLysySVdOZktlS1h6RGNJQjhDaU1WSEIxZnYySDQ5aFpXRUpNTUlPeEl6Z0R1M1RXUDRkWFRURWh2SlhpckQwc1RrR01kRlRmUVoxMzE0QVgzY2pGYk11K0NsUWhhaGk3dVhUZ3Nqa2lSaHo3QkRzT2RucURWZ2ZGcWF5THdKZlhHL0M3Q1cvd3MzTHpGOUtvbEdlOHFhblZ5bGZ1M1loWG51K1FFZ1Z2TTJ0YUpqM0ZEcXJqdExIVk83WTFMNUV3SWQycXJaUVJMejZOUFk5M0c5R2JPNGlaQjR0SjNtWU1xL1BBTXU0SDlIRENLNXdRN0dQWGplMVlzYUQ5NkxpblJlWWlXZ2hVM0NzZmc3TzB0Zm9hd3lGUkN0QnVncTVDMkhXUkdSV0hZYnU5VEV5ODZGcjdhUkw0bnN4aVdKcG5DMHBBMW5PYzBxV01xKyt5Y1d6M0FORW1zcDdic01XYnNYSEgrM0M2ZmUyOVNsdmUvY1FMbGppNENwOWkvNm1rRm1VaTg5dXJqYU0zTG9kazN4MWlQcm1mWWllUFJQWnZoc1l1YjJFS1dnbXQ0ZVVPbmxpNFdtdGcrWm1TZ2tWQVllekRhTnpsZ0pwU1R4RFhxU1BUa0w5WDNjckFrSDN5Yzl3NDRjcjRHbXVVZUVXTVlZMzNhclFFbjljZ1BTRGJ4akVSQWVGaDltc0xDUFdrWW5hakJud05UU1JMNHdHdFdOeVZ5T3NVWFl6UVNKT01xR1d4djdDVkppNE5tc2Vyc3lhQmEzNUpwVkwxUXVMRjcxb2dIM2ExekNwcnJhZjhwSzNqeUIrYWo1aTZORHJiRTUrMk1hbTAxaXZpb0pSbkxMTUZDaW9QV1BUTEFzRjkwa3BzbEg4SmtkUnd1MVVRaWI4cFFJVHp2NE40Wm5waXU1RTlVVkU1T1JqdzVhOVFCeFRGaEdPd2swQncrUUlHOUw3STJDQTZBeFM3RWNZN0dTVUVwSWk2MGJxOWgzSTF1c3hJdmM3NnYzMW15NU1tN2NCMzNxa0NCNWhUNDRqRTQ4aWo1aE5EUGtLQkF3WUJNb3V0WGdxNkZYS3htZlZ2cUI5Y1NIRzNyTU01eTVlQXpLWW5yQlFQZ2J3WmZjR1NjRkF5QUZTajhVZ2IzMTFEeTVhWXVBK2VBalc5QlRqOUlpQmJwNmtMczRIdnlacFlFRVlPZ1hzVEFNWkJNSWszaXVaMWtoY3Vlc0JOUDVpSFZPVHlIbkR3U1JHZDdOWk9Wd29MbHlBalQ5YlFDTjR4Q2dxTXR4b1RuNUk3UmhGR0VEQUFFNHZ0UVpBVExMS1kySG42dmJBdzBrblBVQjJkYTBYV2tNTDd2MTZGdHBxMzhQTDYvUFppR2lRTVBHWFBWd2lFNENTd3ljWVFSRWdWNGdpTkRvY1AzazhqVzRtdlY1VHA4RWRsNERLRDNiaTAwTmJFVzgySzFjbnZUZkhkYkEwK1M2UzVBbEcvd2lFcUFHYm1teUdhamtOR2pwVjEwdjc3VzVNYWorSGg3NlJwZWphZVRlWXRmZ0Z2UEg3STd5a1JDbWVZSWprcjQ1QWlCcVFycVdoaCtKNjJFd2JrTEJ5SmFicUhVaGFFeGhNVC85eUR4TEdQWTZULzZwaEQrQUVGVzJzcWM1YlJyc1ZEQjBCQ1gxUURkZzRxZnpJZHJHM1Q3OEhFVk9tWUhKekUwYnQ1YWcyOGRiQlNsZ216TWZlc2crQmRFNUV1VGRJRkNVTm5DY2x4Y3RNU201VHRoSEYvbEZXR2xYcW1XUDFoVTNrOGpVSC9uemlqTHhDV0VJaXhwOWgxN3Z3ZDloU09DdUkwNTlmUWNvRHEvRE11bDI4TXpEY2ZxOXY4elRjYU1hU1JkK0ZmdlV3aXBibktYcUJ0MUVHRWd0M1FHcVVBWkdSOUZqR3I0QUZwRE1WY3hjK2h5ay9LRWFkdzJuc0UyMjhGOHhjL0NKbVBsUUlaMXVIZVcrZ0NDOTVHMXVSTTNrODZpL3R4NzRkYTB3TzhyeFp6Z2thRDIvZE5kb1lyaUtnTTdIUWVMc2krbTVFdVN0K3c0citCNUJxQ3BWS0ZvK2EyL0RUWitjamxTMzJwYTN2QW9sQlZ6U3BtWFkzNTNzY2p2NXVBM0xuVERmMmlhNFRwMUQveUZKNHVocFl5TWxVYWt4UUwwZTNMVDRGazlwNHN5Wk1BOVJYbEIwNWdlVWJPSWFsb3lXYVRVWndpOTFOR2xXTWpGZHpUL0pNYk51OEhKdWVEdHlJdmMxTzNKaTdETGMrcmVDQlRTTzFUWEdJMXg3Y1JPeU03eUh6NDhPdzBBblpWd1lJWS9DOXNMaGtIMTU1cVl5RGhVY3dpcU5admVPU091bjFzT3M1OGNSVGorSEF6aUtEd1VUalQ5YkJWVjVLeFhHa3RsT3A4UG1vdWhVUjlqUmtWQjdnUmVWK2cxanFUZVRLaFNRVXZKcFBuLzNrRmw3SjV4clg4S2xQcXU5WjMxK25PMXJhVENvRHpsZjM4Q3B1NTFVOFVhOUJKdGRZL1JMWEJmNTlIckc2czdUTXBKUnJmLzlyL0pjTWtJandwdy9WNTJ2MTFEbXJkUXYvTDNqLytHZm1yb0hPaXVQNmYyS3pxQ1JhS2F6QmVLNXgra1drY1M5S2J5aFliMUlLUks2eGdqSG8vd1ZEd2NPclZiM2srZXh4aGp1RmdaYWhJMklrejAySXVUOFhZOTdmQjl0SUtUNlZ2RUZoZEo0aElTSUNOamF0ZlI0MUdhUFFmZllzMVk3dVU2NHh6OVlJTys2cStnVGovL21ob1Z4OEM3Q0doa1RnVG5ENzhuLzFxOU1mWnM0akdlcFVoanFldVU3U25idjJtaFIzaGpzeVFHTmgralBvL3VpWVhwZVhyenVLdGdUOU54bjYvNytoOEgvVlFDaUlrS0Z5SFJyQS93QzRlK08rWjFjbjRRQUFBQUJKUlU1RXJrSmdnZz09IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMSIsIkZJRE9fMl8xX1BSRSJdLCJleHRlbnNpb25zIjpbInV2bSIsImNyZWRCbG9iIiwiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsImxhcmdlQmxvYktleSIsIm1pblBpbkxlbmd0aCJdLCJhYWd1aWQiOiJjNjExYjU1Yzc3YjI0NTI3ODA4MjU5MGU5MzFiMmYwOCIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOnRydWUsInVwIjp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibGFyZ2VCbG9icyI6dHJ1ZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOnRydWUsImFsd2F5c1V2IjpmYWxzZX0sIm1heE1zZ1NpemUiOjE2MDAsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6OCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjo5NiwidHJhbnNwb3J0cyI6WyJuZmMiLCJ1c2IiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotMzV9XSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5Ijo0MDk2LCJmb3JjZVBJTkNoYW5nZSI6ZmFsc2UsIm1pblBJTkxlbmd0aCI6NCwiZmlybXdhcmVWZXJzaW9uIjoyNjIxNDUsIm1heENyZWRCbG9iTGVuZ3RoIjozMiwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjIsInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjo1MH19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTEwLTI3IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjI2MjE0NSwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJJZGVtIEtleSAoQ29uc3VtZXIgUHJvZmlsZSkiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI1MTAyNzAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUHJvZmlsZXMiOlsiY29uc3VtZXIiXSwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0xMC0yNyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyNjIxNDV9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMTItMTkifSx7ImFhZ3VpZCI6ImVlMDQxYmNlLTI1ZTUtNGNkYi04Zjg2LTg5N2ZkNjQxODQ2NCIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiZWUwNDFiY2UtMjVlNS00Y2RiLThmODYtODk3ZmQ2NDE4NDY0IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkZlaXRpYW4gZVBhc3MgRklETzItTkZDIEF1dGhlbnRpY2F0b3IifSwiZGVzY3JpcHRpb24iOiJGZWl0aWFuIGVQYXNzIEZJRE8yLU5GQyBBdXRoZW50aWNhdG9yIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUIyRENDQVg2Z0F3SUJBZ0lRRlo5N3dzMkpHUEVvYTVOSStwOHoxakFLQmdncWhrak9QUVFEQWpCTE1Rc3dDUVlEVlFRR0V3SkRUakVkTUJzR0ExVUVDZ3dVUm1WcGRHbGhiaUJVWldOb2JtOXNiMmRwWlhNeEhUQWJCZ05WQkFNTUZFWmxhWFJwWVc0Z1JrbEVUeUJTYjI5MElFTkJNQ0FYRFRFNE1EUXdNVEF3TURBd01Gb1lEekl3TkRnd016TXhNak0xT1RVNVdqQkxNUXN3Q1FZRFZRUUdFd0pEVGpFZE1Cc0dBMVVFQ2d3VVJtVnBkR2xoYmlCVVpXTm9ibTlzYjJkcFpYTXhIVEFiQmdOVkJBTU1GRVpsYVhScFlXNGdSa2xFVHlCU2IyOTBJRU5CTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFbmZBS2Jqdk1YMUV5MWI2aytXUVFkTlZNdDlKZ0dXeUozUHZNNEJTSzVYcVRmbysrMG9Bai80dG53eUlMMEhGQlI5U3Qra3RqcVNYRGZqaVhBdXJzODZOQ01FQXdIUVlEVlIwT0JCWUVGTkdobUUyQmY4TzVhL1lIWjcxUUV2NlFSZkZVTUE4R0ExVWRFd0VCL3dRRk1BTUJBZjh3RGdZRFZSMFBBUUgvQkFRREFnRUdNQW9HQ0NxR1NNNDlCQU1DQTBnQU1FVUNJUUMzc1QxbEJqR2VGK3hLVHB6VjFLWVUyY2thaFRkNG1MSnl6WU9oYUh2NGlnSWdEMkpZa2Z5SDVRNEJwbzhycm9PMEl0N29ZakYya2d5L2VTWjNVOUdsYXF3PSIsIk1JSUJmakNDQVNXZ0F3SUJBZ0lCQVRBS0JnZ3Foa2pPUFFRREFqQVhNUlV3RXdZRFZRUUREQXhHVkNCR1NVUlBJREF5TURBd0lCY05NVFl3TlRBeE1EQXdNREF3V2hnUE1qQTFNREExTURFd01EQXdNREJhTUJjeEZUQVRCZ05WQkFNTURFWlVJRVpKUkU4Z01ESXdNREJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCTkJtclJxVk94enRUSlZOMTl2dGRxY0w3dEtRZW9sMm5uTTIveVlndmtzWm5yNTBTS2JWZ0lFa3pIUVZPdTgwTFZFRTNsVmhlTzFIamdneEFsVDZvNFdqWURCZU1CMEdBMVVkRGdRV0JCUkpGV1F0MWJ2RzNqTTZYZ21WL0ljak50Ty9DekFmQmdOVkhTTUVHREFXZ0JSSkZXUXQxYnZHM2pNNlhnbVYvSWNqTnRPL0N6QU1CZ05WSFJNRUJUQURBUUgvTUE0R0ExVWREd0VCL3dRRUF3SUJCakFLQmdncWhrak9QUVFEQWdOSEFEQkVBaUF3ZlBxZ0lXSVVCK1FCQmFWR3NkSHkwczVSTXhsa3pwU1gvelN5VFptVXBRSWdCMndKNm5aUk04b1gvbkE0M1JoNlNKb3ZNMlh3Q0NILy8rTGlyQkFiQjBNPSIsIk1JSUIyRENDQVg2Z0F3SUJBZ0lRR0JVclFiZERybTIwRlpuRHNYMkNCVEFLQmdncWhrak9QUVFEQWpCTE1Rc3dDUVlEVlFRR0V3SlZVekVkTUJzR0ExVUVDZ3dVUm1WcGRHbGhiaUJVWldOb2JtOXNiMmRwWlhNeEhUQWJCZ05WQkFNTUZFWmxhWFJwWVc0Z1JrbEVUeUJTYjI5MElFTkJNQ0FYRFRFNE1EUXdNVEF3TURBd01Gb1lEekl3TkRnd016TXhNak0xT1RVNVdqQkxNUXN3Q1FZRFZRUUdFd0pWVXpFZE1Cc0dBMVVFQ2d3VVJtVnBkR2xoYmlCVVpXTm9ibTlzYjJkcFpYTXhIVEFiQmdOVkJBTU1GRVpsYVhScFlXNGdSa2xFVHlCU2IyOTBJRU5CTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFc0ZZRUVoaUp1cXFuTWdRalNpaXZCalY3REdDVGY0WEJCSC9CN3V2WnNLeFhTaEYwTDh1RElTV1V2Y0V4aXhSczZnQjNvbGRTcmpveDZMOFQ5NE5PenFOQ01FQXdIUVlEVlIwT0JCWUVGRXU5aHlZUnJSeUp6d1JZdm5EU0NJeHJGaU8zTUE4R0ExVWRFd0VCL3dRRk1BTUJBZjh3RGdZRFZSMFBBUUgvQkFRREFnRUdNQW9HQ0NxR1NNNDlCQU1DQTBnQU1FVUNJREhTYjJtYk5EQVVOWHZwUFUwb1dLZU55ZTBmUTJsOUQwMUFSMitzTFpkaEFpRUFvM3d6Njg0SUZNVnNDQ1JtdUpxeEg2RlFSRVNOcWV6dW8xRStLa0d4V3VNPSIsIk1JSUIrakNDQWFDZ0F3SUJBZ0lRR0JVclFiZERybTIwRlpuRHNYMkNDVEFLQmdncWhrak9QUVFEQWpCTE1Rc3dDUVlEVlFRR0V3SlZVekVkTUJzR0ExVUVDZ3dVUm1WcGRHbGhiaUJVWldOb2JtOXNiMmRwWlhNeEhUQWJCZ05WQkFNTUZFWmxhWFJwWVc0Z1JrbEVUeUJTYjI5MElFTkJNQ0FYRFRFNE1EVXlNREF3TURBd01Gb1lEekl3TXpnd05URTVNak0xT1RVNVdqQkpNUXN3Q1FZRFZRUUdFd0pWVXpFZE1Cc0dBMVVFQ2d3VVJtVnBkR2xoYmlCVVpXTm9ibTlzYjJkcFpYTXhHekFaQmdOVkJBTU1Fa1psYVhScFlXNGdSa2xFVHlCRFFTQXdOREJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCTVdoRmxZNWlwSVcvSEs3S0xwS2FZVTV2NDlIS3dac3lFQXFuYVNmMENRejY3VkhaMGNQWFlkNm5FNHVtM0JIMGxyNFc4NGdQY1pGVWVyWjIzSHJ1RE9qWmpCa01CMEdBMVVkRGdRV0JCU1RJM0JteFIzT3hLc2NLNjJFd2ZQbkhjNWdaekFmQmdOVkhTTUVHREFXZ0JSTHZZY21FYTBjaWM4RVdMNXcwZ2lNYXhZanR6QVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUFNQTRHQTFVZER3RUIvd1FFQXdJQkJqQUtCZ2dxaGtqT1BRUURBZ05JQURCRkFpQi90VURFUDBhV0ZpUzlFeVZJdEVyZkJMWmhjWS9rTERLNlg1clVESEJxdFFJaEFQckZwbjNjMWNmM2tWaWtHUVZvbVZ1dXgxUGllcFZLVGpJaDk1NUtZTUx4Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUZBQUFBQVVDQU1BQUFBdEJrcmxBQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQkhacFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR3L2VIQmhZMnRsZENCaVpXZHBiajBpNzd1L0lpQnBaRDBpVnpWTk1FMXdRMlZvYVVoNmNtVlRlazVVWTNwcll6bGtJajgrSUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWtGa2IySmxJRmhOVUNCRGIzSmxJRFV1Tmkxak1ERTBJRGM1TGpFMU5qYzVOeXdnTWpBeE5DOHdPQzh5TUMwd09UbzFNem93TWlBZ0lDQWdJQ0FnSWo0Z1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNGdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlnZUcxc2JuTTZlRzF3UFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIaHRiRzV6T25Cb2IzUnZjMmh2Y0QwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOXdhRzkwYjNOb2IzQXZNUzR3THlJZ2VHMXNibk02ZUcxd1RVMDlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl0YlM4aUlIaHRiRzV6T25OMFVtVm1QU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2YzFSNWNHVXZVbVZ6YjNWeVkyVlNaV1lqSWlCNGJYQTZRM0psWVhSdmNsUnZiMnc5SWtGa2IySmxJRkJvYjNSdmMyaHZjQ0JEUXlBeU1ERTBJQ2hOWVdOcGJuUnZjMmdwSWlCNGJYQTZRM0psWVhSbFJHRjBaVDBpTWpBeE5pMHhNaTB6TUZReE5Eb3pNem93T0Nzd09Eb3dNQ0lnZUcxd09rMXZaR2xtZVVSaGRHVTlJakl3TVRZdE1USXRNekJVTURjNk16RTZOVGtyTURnNk1EQWlJSGh0Y0RwTlpYUmhaR0YwWVVSaGRHVTlJakl3TVRZdE1USXRNekJVTURjNk16RTZOVGtyTURnNk1EQWlJR1JqT21admNtMWhkRDBpYVcxaFoyVXZjRzVuSWlCd2FHOTBiM05vYjNBNlNHbHpkRzl5ZVQwaU1qQXhOaTB4TWkwek1GUXhOVG96TURveU55c3dPRG93TUNZamVEazc1cGFINUx1MklPYWNxdWFnaCttaW1DMHhJT1czc3VhSmsrVzhnQ1lqZUVFN0lpQjRiWEJOVFRwSmJuTjBZVzVqWlVsRVBTSjRiWEF1YVdsa09qSkZOekZDUmtaRFF6WTNSakV4UlRZNU56aEVRVGxEUWtJMk5EWXpSamt3SWlCNGJYQk5UVHBFYjJOMWJXVnVkRWxFUFNKNGJYQXVaR2xrT2pKRk56RkNSa1pFUXpZM1JqRXhSVFk1TnpoRVFUbERRa0kyTkRZelJqa3dJajRnUEhodGNFMU5Pa1JsY21sMlpXUkdjbTl0SUhOMFVtVm1PbWx1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2TWtVM01VSkdSa0ZETmpkR01URkZOamszT0VSQk9VTkNRalkwTmpOR09UQWlJSE4wVW1WbU9tUnZZM1Z0Wlc1MFNVUTlJbmh0Y0M1a2FXUTZNa1UzTVVKR1JrSkROamRHTVRGRk5qazNPRVJCT1VOQ1FqWTBOak5HT1RBaUx6NGdQQzl5WkdZNlJHVnpZM0pwY0hScGIyNCtJRHd2Y21SbU9sSkVSajRnUEM5NE9uaHRjRzFsZEdFK0lEdy9lSEJoWTJ0bGRDQmxibVE5SW5JaVB6NDc3SlhGQUFBQVlGQk1WRVgvLy84RVZxSVhaYXZHMk9vcWNMRzJ6T09rd3QwQlNKdHFsY1hWNHUrYXV0bFdoYnprN1BVQU1ZOUhjcktqdE5icThmZUFsOGFCb3N6ejl2cGRqc0dHcXRGM244dVRzTlNacGM2SnNOVDUrdjB4WUtudThQZmY1L0w0OGZnL2ZyaWN6SmdZQUFBREFFbEVRVlI0MmtSVUNaYkRJQWpGWFpPWTFUYXROYzM5Ynprc1NZYzNyNE1FNGZNQkFhRDZ6bDh5LzlUT2dldDhkNWpmTjc4YndNL2REQ1JwUjUyMXpYZm9qSEowNUlJeWhCQVVTVkFPTmRHekJZdDJmN0tGcmZrSmFBa0hoOUZaaGNEWEhSa1RLbzlNTGloR2FhdkltblYzcXlFWDBFcHJnei80RHdVRDdrQ0hSbmQ4UUZONDNHbzRVVm1ERGd6YTR3MjdvaXpkQTIrY0srdXVVcGpqbzIreHdjLzQyVzUweDVMR1llREJzUjBIVkl4NXg4aUY2MENibGJURUVrRnIyN2JOREJVVlNxMU9LVlBiRTYyYjNFSDhGcUJnNU9PT0V1YzJ0OFpKaXFNT3VHcCtjS2pnN3dWR2Nlb3pxTjRweGdWUFFrakZZZ2JWSktEVWhEQ2pZcmF3UDVxNEVUZ0M5ZklNUkh0aXRwUWNDdkpPRUxjYk1zUWduY2lSa2xqcHlRanZHNDRqcUJVRVRGaUJpMVBFSXlla096c1crVHk1Y0xIb3M1UitkTVMxTHRTU3hmM2dRSGN6UjJDSTRnTU5wVzRJUkExUU1hNnRKNCtDNnVIdUdFOG1OREl5RnFnL09QL01NVXVlUzZJcThTOTBkQWVCSlNFeS9xS2tLK0JOd3o4Y1lZNGpiNUo2dTRpV0NJMkIxWjU2TFc1a0VjNGhrZE1wc3ZVQzU1ODVTWDBRdWJjZ05xeWZnREZFY1R0KzQwLzBTNU54MHdhQ3czT0trY09iQTVJbjBBWXAwMXBqancybjYyNlVEanRId2EyOGlIdVRLcXRydityZVc0MU5aNmlHbHI3dXVMSkNma0Z0Y3RjRzA0c2dtMWVOUytaYURucGFURXJHb3lYNUpLMmlNejh4czBuT3dXR2NQRE40OXFhQ2Q0YnpKb3pEWm0vYUJLK0Vvekx3K1hoTkJpWXdIZjBzaU91MVhQa0cvekt3dnFZS2NmU3dERWNIL29VZTA3ZXMvV1E4ckl5ZzJET1hqOHRqa1pkdURCL2I4aHpEbGxNTU9DUzVCRW5kNTM0Zjh0aTNVWmM0a01zM3hMeWFmTVNzSmhkRzhYUHFqTms1dEFnTzI1ZmVLQ2huVmREai9KMEZNa09zVS94TUJ2MHdGaFllRUdmVkgxM2Z1RFUweURGTGE0ZmM3Um5XSEJmdVRGVjJ0RW1Od2FkYzdhYzNVWTJqZkJsN0hUMzZmZTM0aVFPNW1OQ0ZGQlcwN0tqUGdxaE9MVTAxdlo4UHVlWjJKQ2xGWk44amtVczY5dWthOWVQcDYrRWZMNEFGNStOeXdTYmlySHRjQjhNbC9na3dBRWprSzY0S2pIUGVBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMV9QUkUiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6ImVlMDQxYmNlMjVlNTRjZGI4Zjg2ODk3ZmQ2NDE4NDY0Iiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWV9LCJtYXhNc2dTaXplIjoxMDI0LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0Ijo2LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjk2LCJ0cmFuc3BvcnRzIjpbIm5mYyIsInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDE4LTEwLTI2IiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJGZWl0aWFuIGVQYXNzIEZJRE8yLU5GQyBBdXRoZW50aWNhdG9yIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAxODA5MjkwMDIiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMy40IiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjEuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAxOC0xMC0yNiJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMTgtMTAtMjYifSx7ImFhZ3VpZCI6IjI1ODhhZTgzLTVhM2ItNDUzNi1iOGRlLTVlNTQwMjAwZDE5MSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiMjU4OGFlODMtNWEzYi00NTM2LWI4ZGUtNWU1NDAyMDBkMTkxIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkRhcHBsZSBBdXRoZW50aWNhdG9yIGZyb20gRGFwcGxlIFNlY3VyaXR5IEluYy4ifSwiZGVzY3JpcHRpb24iOiJEYXBwbGUgQXV0aGVudGljYXRvciBmcm9tIERhcHBsZSBTZWN1cml0eSBJbmMuIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEyLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH0seyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsic29mdHdhcmUiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiaW50ZXJuYWwiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUZzVENDQTVtZ0F3SUJBZ0lVZU1Oa1dZMW5iRHFScjdSbHkvb0JNaXFLS0NVd0RRWUpLb1pJaHZjTkFRRUxCUUF3WnpFTE1Ba0dBMVVFQmhNQ1ZWTXhFVEFQQmdOVkJBZ01DRU52Ykc5eVlXUnZNUk13RVFZRFZRUUhEQXBEWlc1MFpXNXVhV0ZzTVJ3d0dnWURWUVFLREJORVlYQndiR1VnVTJWamRYSnBkSGtnU1c1ak1SSXdFQVlEVlFRRERBbEVZWEJ3YkdVZ1EwRXdJQmNOTWpRd09USTBNVFl5T0RRNVdoZ1BNakExTWpBeU1UQXhOakk0TkRsYU1HY3hDekFKQmdOVkJBWVRBbFZUTVJFd0R3WURWUVFJREFoRGIyeHZjbUZrYnpFVE1CRUdBMVVFQnd3S1EyVnVkR1Z1Ym1saGJERWNNQm9HQTFVRUNnd1RSR0Z3Y0d4bElGTmxZM1Z5YVhSNUlFbHVZekVTTUJBR0ExVUVBd3dKUkdGd2NHeGxJRU5CTUlJQ0lqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FnOEFNSUlDQ2dLQ0FnRUEyNDRUZjRKQTI4U0hsYklOVzRzM3pFeEVGUm9ta2V1QWZvMEpDTndMQzVNdjZSOEhGZTAya0dNc3RrTHYyR1FZdjlZZEJlTUdrMS9ENjlDcHBJRXFvZHN5MWRlUGs4dnFYZW1ubGYvZXg2Lzh6dHVQcUZYR0dXUG5GZlIxRWNTeUtqS290R3Q4WENHMnduQnBqWWxKVDZHYlBaZ0UwTGFJcnNzd0hzaFViV3NuckFCb0pFZFBHZEp0dVBBVXB4Y2ZTTE1SZmtRSTZSbG9pKzVNM2gzcVIzZjRES3ozWXltdmhiOC9oQXh0eElOR0dFSTdudVRVdG5haGNYWnhvNEhVV3k5OENDc2htSnY5NUxTOExXRmVUcS90aUxudis2bnVEaktncXg3V1NTNVE2VmdlUWErU3lUZC9XM0NQSXpvYTdJbjhETjZjMFBGandPQmw0WWxVQ29uanVnc3gyRG82bEJzbWtiUlhmV0RJS0dVMXJEWmhxYTNEc0JEakxnZzBWUWZFYmg2UVBWaXBvZDlqN3M5UkhRUmJWU1dJU1czNGJlRDdNcVQ5cVBtRnFzRU1wY3Voai80Z29GeUE3b3dIMU1vNHFNZjRPNTFqcS9Eajcrei94QTRjQ1lhelV5SjArdDhSeG9tbHNFM2N3VU1vYVdmbnRBSTBPOW8wT2M2NXRaamUvS2RvbjF6elJVMEo0MHhzcXpmOTRoT3huOXliSm9CbDYrYk9MbUZ1Uytia09LZHVTY3JOQlQvdGRFeFh1THNNS1BMdXIwY3ZvN3diRmZJSDh3R29ub05INmFBY2t1UDdOMVNLVnVJZnhXeGQ5L0JFSmUzWWM1ZytNS3hLWFRoR3NJbHZnZk5lY2JrZCt4YTZ0ZE94MndCeVBlU2h4Z0NRWFhqd3k3Y0NBd0VBQWFOVE1GRXdIUVlEVlIwT0JCWUVGRDJ6eVVmU1Zna2hoU0dTRVpYVUMrYzFKYzh1TUI4R0ExVWRJd1FZTUJhQUZEMnp5VWZTVmdraGhTR1NFWlhVQytjMUpjOHVNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdEUVlKS29aSWh2Y05BUUVMQlFBRGdnSUJBTTdQMEh3dDdhbUZLSmdNTDBxNTZndkNpQnVNR1c0WFhwMVNCamc3S2FoRGRJUXRUZC93OEdyd0RoVEt3dFNXd3hSNzI1NFQvNGUwQld4M1o1aHNUdjNEK1p1bUFraHVMK2lEOFFiTWVzN3JaNU9jSU9OSE5Wc2NvNEY5eWNMSmIzQ2FwMThMcUZRUHZGbzVPTE1SVzNkRXZiWU1xdnA0RnJ3N0xieDQ0cDZjWmI0VjhzTlVYR2tPWmdkMTdPN3VaSWRXMVVZdUNRK1JWMjhrams2cTllaXJsVkVDWjhPdWV1ZzBFZXNzbDlhRzNTZlVWU3R5TE9BTm84TEFldUhGelNSbm1HLzUxTCtKZGhFT0owcUZ6dVltZ1dDdStWc3dqMkx4MVh6OWhnUEZWOGJVWGFlL2FKQVZ2VVluUXM4Mk4vYXRTdXg3aVptSmpRSk1uSTdlUzhEMlBkUWJ5Vk1IZEVNSXBDa2c2S2FZdGNkRzM1bUFta2YraStiQVlXeXhWUUpQblNPNXNselEzcDVQOTcyaFdiQ3NsT1ZnSHovWHRPbzJYQWlLQlNFZk43R2FnQUoyZEVneVlTOCtuS0ZESnA1eXB4eVdlM2k5OUtrdmtNMUpTL0RDT2Q3RVpwdkR3dnNBbU9oeDJxb2RkRStycHlRNHpHeWpiZWhReXJsRitjRjB0Yk1UWlBoREZkVk9LYkNuV2k1Nmd5alYzOGJjazFHMkF0Zkl5eXVPWk9MWUgvMS8wNjY2ZHNRQTNmU0ZhbG5TekRPRk1jcFhMYnFtbnBYd01kelBFR3M1U0w3SXhlT1I3emhIbXk3cmVqRm5rNlYrRFpRNkNkNkgzaVpwT1lSLzlzcVJTTlRxT1U4VjFscGJyWWp3TE9VMW85ZlI4bkNxNHEvYlN5YnUiXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBR0FBQUFCdUNBWUFBQURZa2haSUFBQUFDWEJJV1hNQUFBc1NBQUFMRWdIUzNYNzhBQUFnQUVsRVFWUjRuTlM5ZVhoYjVabncvYk5sU1paa0xiWXM3N0xsVGQ0ZEo4NW1KeUhPUWpZU0lBRUNsQzZVRmtxWktXM2ZkS0V0YmFFd1ROOFphS2NiN1pTV0ZscjJocVVKRUxLUmhNVE80aVRlRjNtM1pIbVJKV3VYTGRuTzk0ZWtFNXZRVHQ5TzI1bnZ2aTVmY2FSem52T2MrMzd1ZlhITWxTdFgrRjhHaHNoUDNaLzQzZ2swL1puLy8vOEs0djZuTjdBQTd2YTZmTjlMVUN2MGYrMENEb2VyR1poS1NsS2ZCRTRRSm96emI3Uy92d3ZFL0MvZ0FJM0g3VHVxVkNtcUYzNTRycjZGT0ZFY3hwSWNsQ29GSC81dVZXM2xYN1M0enh1d0IyZENIeVJxVlc4QmIvSy9qQ0QvMHdUUU9CeXVscVFrdFI1Zy95dEhlTy9kZWc2L1d5OWNzR1Y3TGIvODdYY0I2R3p2WjkrRFQ5TFIxZ2ZBZHg2L24zdnUzUTNBaUdXQzExNCtqRXF0b0t3c245THkvR3NJQjJFdVNVcFMveGI0TGY4TGlQRS9TUUFCK1ozdC9UejY4TTg1Vzk4Q2dGYWhwRWlYVHYyZ0NZRFdudGRScWhSVUdtL0I3ZklLQzVTVzUvUE9zYWZwYk8vbjl0MWZYZlRkcnRKcSttS2RsSmJuVTFOYnlaYnR0ZGNReE9Gd25VaEtVditJTUdmOGo4RC9sQTdRT08zdWppU3RPdjNJb1FiMlBmZ2ticGNYclVLSjNlZkI3dk5RNy9OUWF6Q3labU0xU3BXQy9hOGNXWVJnZ0hzL2ZUTUF2LzdsRzdoZFhxb3lERFJaQndFNDBIRVJnSTYyUHY3dzhtRWdUTEFINzl2TGtyVmxwR2ZxU0VwUzF3RjFQbS9BcmtpUWZZVXdWL3hESWZZZi9VREN5Ry9UYUZYcEFPMXRmUUppUDdkNnMzQ1JWcUdrSWoyYlcrKzRIb0QzRm9nbHZVWUx3TGFicndNUVJGWVUrYlVHbzNETlF1aG82K05mdnZOTGRxNzdQUGZkL1NqMXh5OEJvRWlRYVlIZmhFS3pmdUNSdjkyci90ZndqK2FBc05qUnFqT2pIOXgxMTNZa3JWN3NEaWZPZ0UrNDBPN3o4RkxIV2I2eDVLdFlMUk5jUE5VcWZMZDNTUTJ0Y2dleWhQaVA1QXdBczlQK2tSdUlmbjc0M1hvbW1xMU1pZ0xjODduZDNQbXg3Y2dVOFRMZ3V6NXY0Si8vVVJ6eGorUUFqZFB1Ymt0S1V1djN2M0tFTzNaL2xTT0hHdENsYTlueGhhMTRndE1jN1dsZGRNT3R0NGRQLzhIOUo5REtFOUFxbE9nMVdwNDZlWkRiN3RnQ3dHc1I4UUpoenRoUnNsVFFIUjhGbXdyTDJWUllEb1E1eG1JZTUzc1AvNEpWUysvaVp6OTRDYmpLRVc2SHA1MndUL0ozZzMrVUV0WTRiYTRlalU2ZHZQK1ZJK3g3OEVrQVZPb0UzbjduSitnTE1uank0VjlSTWFYaDhhT3ZJeE5McURVWStlS3ovMFJpaXBxMXl6L0o1clJpbWthR2FMSU9rcVZQNVhUajg0eFlKbGhUL1lsRkQzcDQ4eDZlYXp4NURRZnNLcTBtU1o1QXc1QUprMjMwSXplcFZTZ3BMVFJ3OHoxYnVTVkNmQUNQMi9kL2xTckZRMzlqbkFEL0dBN1FPQnl1Rm8xT25YejhRSU9BZkFDM3k4c1BIbjZXZ0crYXozM3RUazY0KzVnbmpLeVpOQW1KS1dxT0hHckFZaDdudHhkT0NqTCt6bzl0QitDZGw5Ni81bUdQSDMzOUk4WFBnWTZMdk5iY2dOM24rVWo5QUdHeDkwRlRLLy81MkF2Yzk3SHZNbWFkQkVDcFVudzk0SjgyOFhmZ2hyODNBVFRPQ1ZkZlVwSmEvKzRicDdqbnM0OHMrdkt1Wld0WkxjL20zNy8vVzVRcUJaOTg2RFptUmZNbzg1UFlldnQ2WUxHSWljTGVPOFBpNS9WWGovekpCMnNWU2tIVVJNRWZDa0pNVFBqZkQ4RkNvc3hmdWNMaFkyZDU0SmJ2OE93emJ3QWdrOGNYQm9PaFR1RG12K1RGLzFMNGV4SWdmUEpUMUVuN1h6bEM3MHZOYUJWS0FLb3lET2cxV2p3ekFUUXlPYy8rOGcyT0hHcWdwQ3lQY3gwdmMvZS8za1hkOVN2d3VIME1OZzRJQ3o1UXU0VWZQUEE1ZE9sYVdzNTAwRGxzNW9IYUxSLzU4SzNHSlNnazhkZDhidmQ1aEQxRVFTNldZRWhNQWNDb1MwY3VsZ0J3cWIrUDd6MzhDKzdZL1ZVQzNta2tFbkU4OEliYjVmMi9md3NFd2QrUEFCcVh6ZFdibEtUV256aDRsbS92K3pGUG5UeUkzZWVoTHIrVXo5ZGVqOWxwNTQvdEYzbjg2T3NBN0h2d1NUeHUzNkpGenRhM0xFSlUvYUFKU1hrU0FEOTk1alVBUkxHeGZQZjZXd1hpUnFGMWJBaGZjUG9qTjJmM2VXaXlEZ29jNGc4RitXQ2dFNEJraFpLVzBXRWd6RVZ5c1lTejlTMnNXbllYdlYxREFLalVDVjhMK0tkZit1OGdLQXAvRHdKb0hBNVhpMXFuMWpZZGEyWDR0WGIyVnRVSVgvWk9qdkg0MGRlNXBYSVZIMXUyVnBEWDZoZ3B4OTQ3dTJpaHNmNXh6Z3laMkxkK0oxcUZrbjdmSkR0dnFXTjB4Q2JZL2htcVJOSlZHdUhVNmpWYWpMcDAraWJIT2RiVEpxd1YvVDRLdFFZangzcmFCRzZNUXZjQ0JaMmJwQ05EbmNSblYyM2c1b0psbkhyOFBRN3VQd0dBVEI1L2g4Zmx1d1JvL2p2SStsdjdBUnFuemRXVHRNRGErZkRKekU1TXBuN1F4RjNMMXFLS2x3dWZyOHN0d1hTdUIyN2JKSHkyYWRsU25vOTdnMEJFWmtmTjBnTi91S3A4di9IT3RRZnhvNnljcWt3RE1yRkVJRXEzYlpSYWcxRXdXUitvM2NMVDlZZkRJWkNJbUJwdzJBQm9IVFhUYXg5SEswK0FwbnBDZ1NDN1A3NEZwVnF4Tk9DYmJwUXA0cGZ6VjhhVi9wWWNJRmc3QzVGLys1THc2VitWWFlCZW94Vk8yRFBuanZQVXlZUEN6WTJXUGpaa2xTeGE4RXFXako3Sk1aNnVQNHpkNXhGcy83N1RQWXV1MjdkK0oxOWF0NE5hZ3hHejA4NmVpcFhzS2cwSFYvOXB6UlpXWlJkUVAyaWlOc2RJWVhLYWNKOC9lRlVaajN0ZDZEWGFSVDVFTkN5eU5ET1h1dnhTN0g0dkp0c29YOTczRkU5ODR4Y0F5QlR4K1g3ZjlBWCtTazc0V3hGQTQ1eDBkVVdkckgwUFBvbGVvMlZueVRMaGdnMEZaWHl1WmpPZlc3Mlp1MWVzRjE0dUNuYS9sMUhQNGtPVW1aWENyUkdrYjZ4WlJrbFpIaGZPdG1FZUhoT3UwV3UwcENTb2FCZ3lDYWZhTmUzSHFFdG5VMkU1NTRiN2FJM0k5TWVPdms3UFpQamVxQjZJd29tK2prWDcrYzliN3hWKy8wWERFZmEzbkZ2MHZiSXZ4TE5QdkF5QVhCRmZNRDVtZi82dlFaem9rVWNlK1d2dVd3Z2FoOFBWa3FoVlp3elc5L0gxTC8wQTkzUUFveTZEUWwwYVB6M3pIay90K2dTdk5EVWdpWXZqZUc4N2wwWUdCTGtiQTRUbTV3aUVnaFF0eldmMWhxVUFqSFdPa3FCVFVyTm1DWDI5WnY3dHNRZVJhUlg4OE45L3gzdW56d3NQejBuVTBUdzZ6T1dSQVFLaElQNVFrUFl4Q3cxREptYm41eGllc24yazJSbUZXb09SZmV0M0VoOG5abFYySVkyV2ZnQ2tjV0oyRkM5RkdoZkg0SlR0V3NURnhsQVdxOE15TVVsQmRSNEpDZklpbnkrUUxwR0lEMTV6OForQi95NEJoSkR5K2ZjdTBmQ3IwK3dxcmFacndrcS9mWnpPQ1N0RnVnd0ErdXpqTkZtSG1MOHlqMUlhejFmcWRqRTlPMHR3YmhhNzM4dTYzQksrOXQzUElOY3EyTFAxaTlUdlA0dkY2V0J0M1RKMjNWeUhUQnNPSmQ5Mzk2T0NlSkZMcFB6VG1xMGtTT0s1WU81RHExQ3l1M3dGbDBiQ3BxdDdPa0JvZnU0ak43NXYvVTRhaHNMaXBtSElSSmZOeWtWem4zRDloTmROMDhnZ2lYSUZacWRkRUcrMUJpTjNMVnZINEpTTlFsMDYzL3JOYjltd2JDazZndzZKUkx3Y0dPTC9JVVg2M3hGQkF2SVA3ai9CMno4K3hPbkJMbDV0YnFEV1lLVEdZQXlMR2IrSHpva1JUTFpSNUdJSldya1NSOERIOFo0MnpneDBZWWxZUWVicEtaS05LVmo3eCtocTcrZW1zaFhFWFhEUzIzelZEemdYeVJkMDI2d0VRa0hNVGp0ZmV1czVucTRQTzJ1QjRBeU41bjYwQ2lWR1hmcEhicnJXWUFSZ3dESEJ2dlU3QmMvWTd2TXM0cFJpWFFiR2xQRGgyVkJRUnJvNkVRanJqZThmZjVQNlFST3RvMmJXNUJhejQvWXZNZGdXRm5QQjZkQXpRTlZmaXNTL2xnTUU1TzkvNVFpUGZmM25tQ1pINlJ3ZllYWitEcGxZd3V6Y0hGa2FMVzFqWnVIa3BDazE3Q3FyNW1ESFJkckhMY1FBV1JvdHRZWWkyaXhENUdwVCtmSFRMOU16WUdIVTdTUkJLc1YwcnBjbFd5dVJTaVZvazlSMHY5UE9IVXRyVVVpa05GbUhGbTBxTkQvSG1NZkpwMWZVc2EyNGlqeHRLaGZNZmRkc3ZqeE5qMElTVDJWR05wMFRWaXd1QjNxTk5weVA4SWNqcXpVR0k1TStEK2VIZTlsUnZKUjBwWVl6ZzkyRTV1ZVFTNlRzS3EzRzRwekVHNXpCNnA3aTliZmU1OVAzM0lSVUxvMzF1bjNiSkZMSmovNWVCRmlFL0gwUFBra2dGQlJNeFJYNmZHNnJYRTEyWWpMVHN5RkJBVVpsODBMYlBEUS9CekV4WWZaMjJhbVQ1dExWTzBTL1k0SXhqNU1tNnhBRHRnbkdlOGJaZUdNdFlra2M2VzRwNzE1bzVLWExaNENyc1grakxwM3lORDBtMnlpN0sxWXlGZkJ4M3R6SHNITnkwZVpURXRTc3p5K2xaM0lVc1NpT0VmY1V5N1B5dUdUcFh5U3l4and1bkFFL2dWQ1E2L0pLZVBiQ0NlUVNLWGFmaDFYWkJRdzU3VnkwOUZPU21zbjI0aXBPOTNiU2VLR0RXKy9ZZ2tRcTBiZ20zWnA0dWZTOXZ6VUJORk9UN280a3JUcXo0MFFILy9uWUMrZzFXdlFhTFJxWm5KWFpCYWhsY3M0TWRERjNaWjZVQkxVZ1o2TUUwaXFVSkN1VXVLY0Q2RFZhSHQxNkc3ODZkeHl6MDA2emRZanFyRnk2SjZ6a2FsTUloSUs0cHdPMGRQZEJUQXlyYXl1WlQ1Ync1a3RIMkZKVWlVd3NRU1dWMFRKbXBuM01nc2syR2ptWmRwcEhCems3MUhQTkN6ajhYbnJ0NDVoc280aEZJdTVidllsOGJTcTk5bkZHWEE1cUk2SXpKVUZOVG1JeVZSa0dKdjBlSHFqZGdsd2lvY2s2eE9DVURXbGNITzdwQU11eWNqRWs2ampaMzBuQTRVY2RMNmQ4dVpGNHVYUTE4Qll3ZHMwbS9rb0NhS1ljN3RaRXJTcHoveXRIK0Q4UFBvbmQ3MFVhSjBZamszTjJxQmVUYlJUM2RJQisremdYelAwMERKbVFpeVhjdmJLT0ZmcDhMbHI2a1lzbEpFaGxPUHhlOHBKU2FUVDNDNDZUZXpwQXJjRklyY0hJenRKcUdpT25Fc0poaVpvMVN5aGRVa0JzVEN4ZGwvb29URTdqQ2l3U015YmJLRVc2REVwVHM3aGc3dU9MNjNhd05yZUlob2hIM1d3ZDVPUEwxcUdLbDlGbzdtUGM2eUpUbFVUYnVFVkFhbEZLQnFsS05TZjZPb1QxemcvM2NkVFVJbkRJdHFJcVpCSUphVW9OSi9yYW1idHlCYnZQZzhZZVMrMk9GVWprRWh3T1Y0MU1GditMUDRmVXYxUUphNmJzN283RUpGWFdrYmRPcysvQko3bDlTUTEybndkUlRDdzNsUzBYTGpRNzdmenJqanRabTFzTWdFd2lwVEk5QjJOeU9wc0xLNmpLTkhEUHlnMEFYSmRmd3U2SzVZdTg1YTRKS3c2ZmQxRk1QNnBRSC96c0UvZzhmblovZGh2RnkvSjV1djR3THpkZG02bzBPKzM0UXpNQVRBVjhpR0xEci9uVXlZUDRRMEVtL1I3a1lpbitVSkQ2UVJQdjk3VXo2cDRpVGFrSksrTmdrSXEwYkdIZEF4MFgwY2prK0VOQjlxM2Z5ZGMyM0VqRGtJbU9NUXROMWlHcXMvSlpuMWVDWEN3aFhpeW00L2VOQUNRbHFaY0FkLzg1eFA0bEhLQngybHc5aWNucTFLWmpyZno4MGQvaEN3WHhoMmJDS2NRWWtJa2xna0tVaXlVa3loTVlkVStSa3FCbWUzRVZrejQzYzFmbVNWTnBPRGZVdzltaEhwVHhjbTZ0WE1YdzFDUU92NWZaSy9NOFVMdUZ2S1FVU3RPeW1QQzY2UndmUWEvUjh0REdtekRaUnRtWVcwcWlTMFRtYWdORnF3dUo3L0xUTXo1S0lCUkVyOUh5OE9ZOUhPeTR4THE4WXQ1c3ZVQm9mbzVtNnhCbkJydUJzTDdJMTZaeWRyZ1hzOHN1K0NCRktSbFlYUTZtcHYyNHB3TmthWkxZMzNLT25hWExCTzZVeG9tWnV6S1B5VFpLZVZvMjU0ZDdjYzhFdUgvMVpySTBXbDY0ZkliVUJEVXBDV3JHUm16RXBTckl5azNEN3dsc0VFdkYzLzlyQ2FCeFRycTdORHAxU3NPN2pkejJpWWNZZHRwWm5wWFA3UHc4M3VBTVl4NG5DZEo0SGxpemxhTTlyYWhrY25JU2swbEpVR1B6dWpuUWNaRXhqNU56dzcwWWRlbTBqVnV3T08xNHBnTzRwZ05zTHF5Z2MySUV1VmhLYUg2V0Z5K2RwdEhTTDhqdk5LV0czc2xSTkRJRnMvUHpuRzNyd0Q3blozVnRKVEZwOFR6L3U0Tmg4MWFoRElzOGlaUzdWOVFSTHhiVE5tWmU5REoybjRjUmw0TzhwRlRLMC9Tb1pYTE1UanRUQVorZ2I3UUtKZFdaZWJTUFcxaWFZZUJUSzlaelk5bHlabVpuNmJPUHM3R2dIT2UwajkwVksybXlEcEdUcE9QY2NDOWZXTHVWbWRsWitoM2phT0lWdERYM2NQM2U2eEJMeGZIOEdkL2d6eEZBOEhEZmZlTVVKLy96ZmN3dUI0RlFrQ1VaT1p6b2F5Y1FDcUpWS0puMHVtbXlEcUtPbDNQUHlnMk1lYVpvdGc3UlBtNEJZSGY1U3BxdGczVGJScm1sWXFVZ3M0ZW5Ka2xXcURqVzA0clpaV2R6WVFYZE5pc0pVaG5GS1Jtc3pTMWl4QlZlYTNES2hzazJ5b0JqZ3BQSEc5bDk4MGJLcWdvaEpvWVVsNFJQVksvanVjYVRFVDFTeEFWejN6V1pzVzl2dVlYcjhrcDRzKzBDYXBsY2lQc0VRa0ZCdGhmcE1wand1ZkRPVE5Oa0hXTFU3V1JwcG9IQzVEUzh3V2xLVTdQb2lTandSbk1mUFpOampIdWNyTTByd1RVZG9OazZ4QWNEWFd6VWx4Q2pGcU12eU1EdjltOFdTOFgvK3Y5Q2dFV201c3YvL2diK1VKQUIrd1NoK2JsRjBjYmJxMnJ3Qkdjb1RzbkFQUjBnTmlhRzluSExvbXVhclVPRTV1ZUlBWEsxS2N6TWhnUjcrN09yTnRJeGJ1SCttdXY1d2FtM3FjN0tZMmZwTWw2NGRKcmczS3dRdTRtQ1hxTWxMeW1WMzc5K2lOdnUyTUw2RGN2NXpSdnY4SXYzM2hXdU9kYlRKaUQvMjV2M01Ecy9oOTNuSVJBS2twMm80MmhQSzJhbm5iMUxhZ2pOendsN0FiaDM5VVpVOFhLQ3MyR2ZZc0xyNW9LNWo5bjVlYzRNbW1nMDk1R20wdkJxY3dQWDVaY3c1bkZoOTN2cHQ0OXp4TlRDOTdidXBTeE56enRkbHdtTythbTdwUmF4VkN6aFQzREJSeEhnR2p0L1I4bFNSbHdPZGxlc3hPS3lDNVpKR0dKb0dSM0M3dmRpY2RycG5CamgyOWZmd3FIdVp1R0txZ3dEb2ZrNTNOTUJESWs2TmhXV01lWnhRVXdNUTFPVHpNeUdTRllvdVR3eXlMQnprbFA5NGVUSXJySnFicTVZU2V1WW1VQW9TRldHZ2ZJMFBjdXljbm12NVRKOXZXWjIzVnpIMWgxcmVPSDV0Nm5KS2tBalV6QzJJS2czNEppZ0tzT0F6ZWVtZGN4TTI3aVovN2pwVTVoc281enE3K1NKSFhkaXNvWDF5SXJzZk5ySExIaG1BdmhuUTlUbGw5SStiaUVRQ3VJTlRqUG1jU0tYU0NsUDFUUG1kYkUrcnhUM2RBQ1JTTVEzTnQ3RTZweENMbzhNTUJYdzgwRi9KMFhxTlBKek0wbk0xdUtlOHF5UXlxUS8rSzhJb0hIYTNXMkpXblhXd3VxRnpuRUxhU29OYTNPTE9OQitVV0RYcWd3RFJsMjZzTWtvcU9MbGpIbGRKQ3VVck04cjVmYXFHcVJ4WWxabEYzQ2twNVgzdXB1eCs3M0VBSGN1WGNQbGtVRk85SFVJOS8vTDlqdlliS3dnWFpYSTZZRXVZb2xoek9Oa2hUNmZQc2NFZmZaeEpyd3VTaVVwcENZbllxaklZVmwxQ1NjT25pVlRuWVRKTnNxbXduSUdIQk80cHdPMGpnN3p4WFhiVWNmTEtVckpJQ1ZCelh1bUZwSVVTbVptZzl4V3VaclEvRHd5c1lSYktsY2hFMHZ4VFB2SlNkUUo0bkpQeFVyc2ZpOWpIaWZ0NHhia0VpbW4ranNSaTBSc0tpeEhyOUdpa0VqNTVibmpERGdtSWpyRlQwMVNIdnAxZVVobFVoVndFaGo4VXdUUWVGMitKbFdpVW4vNm5RdmNmLy9qUUpqbDdYNHZacWVkM0tRVUp2MGU3UDV3R1dHQ05KNWxtYmswREpuWVZWck4vSlVyRWFTWHNOcGdSQ09UMDJNYjQ1SmxnRXgxRXF1eUM3ZzhNb0JDSXVYZVZadG9IN2R3eE5SQ2VacWVHb01SZFh6WTFBdUVndnpxM0hFT20xcm9tUnhETEJLeHJhaUtOOXJPTStGMWthRks1Tkd0dHlFV2lYandSejlqNjQ0MVZGVVg0NWh5OC9LN3h3ak56N0c5dUlyK0NDSUFkQWtxVlBFeU5QRnlYbTF1d09LMG80cVhzendyanlickVBbVNlTFlYVi9IajArL3lUdWRsQnFkc0F2SnJEVWJzZmk4UHJ0MU8xNFNWbUpnWUlLd3Z0aGlYWUo1eVVKS2F3ZERVSkRlVUxHWE00OFFmQ2pMbWNYS2l0Wlc5dXpjalU4dVltbkNteUJUeEwzNGtBWHlld0k4U1ZQSk5qaDRiejM3M1JkYm5sZEErWnVhckcyNmkwMmJGa0tpamFYUUlpVWlFM2UrbDFtQkVwMUJoOTN1cFNNOW1lM0VWNy9lMk0rQ1lvTkhjUjJWNkRzZDcyeENMNHFqS3pPSFZwZ2JjTXdFR3Btd3MxK2RSbEpMTzNQdzh2Wk5qbUoxMjJzY3MrRU5CN0Q0UEE0NEpJT3cxeHdCRktSbUxSTnFZeDBsWnFwNFhMNTlHSFMvbmorK2M0clk3dHJCbVV6VnQ5VjMwRG85d3dkd25lTndQMUc3QkdmQlJsWmxMYUc2T2JFMHlGOHg5ZUtZRHRJK1pjVTBIU0ZJazBEbHU1ZHp3VmUrNTFtREVId3J5bVpVYmVLV3BIbUppdUM2dm1NMkZGUlFtcHpIdWRkSm5INmRBbDBwd2JwYjJNUXV6OC9Oc0xDaG5TVVlPM3BrQXZaUGpKRXJsTEY5ZlNWeWNLRWNVSjNwOElRR2loVmtHWU1Eajl2SDFqLzhySHB1WHFZQ1B1SmhZU2xJenVHZ1pJRm1ocERvcmovRklqRWF2MFZLV3FzY1o4UEdIbG5BdTk4Tng5NzFMYWtoV0tNbEpUR2JDNTZGNVpKQ05oZVZDZ2w2clVLS1ZKMkN5aldMVXBXTngybG1aWFlBejRLZkpPb2hlbzhVZkNsS1ZrWVBaYVYrazJLTk8xNDFseS9uWm1mZUVNbmFyWllMZFd4NWtlMTdsSW1VY2hWMmwxWFRick1KYTBWeXhVWmVCeVdaZDlBNWFoWkpBY0lhOVZUVW9KRkwrMkg2UklsM1lTMzdoMG1uaGU1bEVDaUM4MC8rNTdnYVNJODVsbzdtZkk4UHRuR2g2THJyc2JoWlVZNHNlZWVRUm5BNzNzL0V5YWNrTHo3OU40N0VXdGhaVkNxZTViY3dzaUtEenc3MW9aQXJXNTVmd1Zsc2pwd2U3YVI0Tld6aFJ2YkF1cjRUaHFYQUFyQ1ExaytjYVQzRzBweFdUYlpRRWlaUXB2dytUelNwRUZaUGxTZ3AxNlNSSTR4bDFUeEV2RnBPVHFCUENHb0ZRTUt4SU13MENad0RNenMwSklXbjNkQURucUpQQ1BEMlZLNHJKTDlEejFoc25yc2tOYXhWS3hDSVJvcGhZUVZGSDk1Nm0xR0QzZXhibEQ3VHlCSzdMTHlGRGxVZ2dHR0pOYmpob09IL2xDc3N5Y3huek9BbUVncXpPS2VUV3l0V2NIKzdsd2JYYnVUVFNqeWNZNFB4d0w5bUpPdDVwdTBoWlJRSDVCWHBjVXg1SnZFejY2aUlDaUdKamZ5ZUtFNG0rOWJXZjBObzN3S24rVHNIR2p3RlVNam03U3F0cEg3ZFFuSkpKYVdvVy90bVFnT2lGVUp0anBOOCtUbG1hbnBuWkVOSTRNVEV4TVlJVEZJZ1VSd1ZDUVQ1WmZSMHhNYkFodnd4bHZJeWhxVWtVa25qQkNsb0lINjllSzRTd1ZUSTVhM09MNlJnZlFTeUtZMm1tSVh3eVhSTFV4Y2tzV1ZHTWFXU0V5eGU3RnExeGUxVU5hM09MZWVIU2FWWmxGL0RReHB1dytkeVVwR2JTTUdUaTBXMTdCYUlDZlBHNjdSaDFHV1NvRWprOTJNVnpqYWNZY0V4Z3NvM3lzV1ZyU1ZPcXNiZ2MzRmkySEswOGdYVjVKWHd3MEVsOG5JUlJ0NVBPaVJGU2xScDJsUzNqN0VnZlc3YlhJb3FOTFJERmlSNWJTSUFxVVp6b0FZL2J4L2UrL1F1cU1neW80bVhZL1Y3MEdpM3U2VUQ0WnliOGI1cFN6Y0hPeXd4UDJUNHkyMlJJMGxHVmFlRFN5QUJYZ0FmWGJjZVFxRU92MGRJK2J1R2hqVGRUbnBiRkpjc0FkeXl0cFdWMG1OYlJZVTcxZHpMbWNTNHlJUmRDdjMyY1d5cFdzYTE0Q2U5MFhoYjhBN2xFaWw2ajVZS2xuOU85blJ3L2ZaRTl0MnhpODdiVkZIblZ2TjE0QWIxR3k4ZVhyZU5RZHpQakhpZG1wNTNwMlJDajdpbm1yOHd6TURXSkpsNk9VaHBQdzFDUG9MamJ4OHlvNHhVODEzaVMzS1FVRXFUeDVHdlRTSkluY0tpN0dVZkF4NjdTYXA0NWU0elorWGxtNWtLODNYR0ovT1EwU2xJeU9kVGRURlZtRG5LeGxIZWFMbkxQZmJzUnhZbEVMSWlTaWg1NTVKSFZ3QjB0bDAwMEgydWxmZHpDN29vVnhNYUthQjBkRnBEc25nNXc3NnBONkJKVURFOU5Mbkplb2lBWFMxaWZYMHFHS3BGR1N6OHh3TXROOVRRTW1RU3YyRHN6elVYTEFQbkpxVHh6N2pnVFhoZmJpcXY0b0w5TFdFTWxreE1EcEtrMHVLY0QvTWRObjhMdTkvSnFjd01wQ1dvZVhMZWRneDNoMnY2b2lJcm1KT1o5c3d4WVJ0bXl2WmFra2hSZWZ1a1FQbjhBU1Z3Y3VnUVYyNHFyT05iVEpweDBxM3NLejNTQUxjWWwxT1dYRWdnRnVYZjFKZ0toR1paa0dIang4bWwybGxSVGtwcUoweDhnV1pHQVhDSkZxMGpnNDh2V2tpaFgwRDA1UnFZcWtlY2JUeEdhbjZNc0xZdXBnSS9PaVJHVzYvUEpWQ2Nobll0bDJYV1Z5TlF5Z0hIQ1RZU0lIbm5ra1R1QU9yRnZubFJ6REIzakZpd3VCLzMyOFd0TytIWDVKZWcxeWNUSFNaaVpDMTFEaE0zR0N0WVlpcWdmNnNZZm5PR2hqVGZSYkIwU1l2OTVTYW5Nek0zU05UR0MyV2xIcjlIeTdldHY0Zm5HVTh6T3pTRVdpUVF6TkRRL2gxZ1VSeUFVNUZCM3N5RC8zVE1CMnNjczEzQ0tVWmNPTVRGVVplVHc5cWtHbHBVYUtWbFdRRUZoTnEvdlA4YmdsQTMzVEFDNVdDSWNob1gzZGtUU3BvM21QZ3FUMHhtZW1rUWpVOUErYnNIcW1XS053Y2p2TDMxQWszVklTUDVyNVVxbUFqNnNiZ2VEVXpadXI2cmx1cndTNHNVU3BrTWh4cnd1VnVrTGFCa2RabkJxa3NxeUF0SUwwNWlhZE9sazh2aW5vd1NvQStwNitzMTg1ZCtmWmsvRlN2SzFxZFFQWGEyUGlUbzFDb2tVdVVUQ3VlRWVDclJwZ3BKN29IWUxhVW9OdVVrcHFHVUt5bEt6T043YnhnVnpIK01lSjU5Y2ZoMnJjd3I1UThzNUNwSlRCUmtyRnNXeEpDT2JpeU9EeE1URW9KTEtFTWZGa2F4UVVwNm1GOHpBaFlTZW5adkRQeHNta2xHWExueG45M3NGYmdBNGR1SUNkUnRYc0txMkVvdGxnbzYyUGdLaDRFY2lmOS82bmJ6YTNNQ1l4NGxLSmljMkppWWN6eWtzSnhDYVlkQmg0LzNlZGtMemMrR0VVb0lLNzh3MGgwMHRmSHBGSFIzakZyTFVXZzUxTitPYUR1Q2JtVVlWTHlOZm0wWlJTZ2FxZURueFlqRURUaHZydHEwZ1ZoU3Jqb3VZb3dJQmhvWkdlZjUzQjNFR2ZGUm41U0dORTVPcDFuSjdWUTN2ZGpjVENBVlJ4OHZaVWxUSkZXSjR0YmxCZUltbzdMNXNIZVJVZnllZEV5UDBUSTVoOTNzSnpjK1JxVTVDSFMvbjdGQVAvbENRN2NWVktLUlNESWs2Vm1jWDhrRkUvdWRwdzFIS2FDRE43dmN5N25HU3B0SXdPemNuV0N6SkNpVjVTYW5YeEhFV3dzeE1FUCt3bS9YYlY3SjU4eXJhejNVeGFGa2NWL3JQVysvbHRlWUdadWZuMFd1MGdpaUxFbkhVUGNWbVl5VkpjZ1Y5OW5FZzdId2xTS1dzMUJjZ2wwZ1ljN3NvU0U3amdybVBHT0RMMSswZ1RhVkJyOUZ5c3ErRDVmcDhadWZuR0hEWVNCQkpXYmRuTlhGeG9qZ2lldUNhMHNUVk9ZWGtKQ2JUTm1hbU5EV0w3TVJrQXNGd2NxUEpPb2paNlVBVEtTbmN0MzVuT0RvWnNWcTA4Z1FDb1NCSzZkV3FaS011bmVNOWJjVEhTYWpLTUxDcHNGeEl3TFNPRG5Pc3AxVklhMDc2UEFMbmhhdVVwWmlkZHFvaU5yOC9Xa0hodFAvSkZxUW95TVVTZkZZWHYvclJhM3pobTUvZ2EwL2N4OEJkajZLSmlSZnMvYy85NFJrZ25IQ0pWa3NzQkxQVHpsRlRDNW5xSk9HelRZWGxpR0pqeVUxS0lWT2R5T05IMzBDclVQTFZ1bDE0WjJiNDNjVlQ1Q1RxQ015R2NFNzdzYnFuR0pxeThVYmJlWmE3OHZCNGZDaVZDZ2o3WGswQ0I0eVl4L25ESzBmb25Sd2pPRGRMdzZDSkUzMGR2TnZWdEVnWFhMTDBjOUhTVDJoK2pvWWhFOUk0TVhHeHNleXVXQ2xVUUVTUnN6YTNpUHRycm1kMmZwN0s5R3pxaDB4Y3NQUnp2S2VWbHRGaEZCSXBGcGREOElJRG9TQ0I0SXpBTlhzcVYzS2lyME93OWFPZzEyZ3BUOU5qMUtXVHJ0SUk5MEk0UG5YdnFvMllKa2U1UERKSXc3a1d5aW9LV0ZWYlNXYTZqdmI2TG00b1hVWktna29RVzlFMTdUNFB0MVN1d2hWSnpBRGNXRmJOQndQZDFCcU1ERGdtTUNRbE16Yy9UN04xaUVQZHpiaW5BNVNuNlZtVlhVQndiaGFIMzBlNktwRk1WU0pxbVp5Zm5ua1BwVFFlczlQT056ZnRKck15SzFyajFBMmNpTDM2VXNuSXhSTDhvU0RUa1hEeDNraGRaelBXbWRJQUFDQUFTVVJCVkszQmlGd3NJVXVkeE1yc0F2WlcxZkt0VGVFR2FhMGlnZXpFWkg1eStoQlZHUVkyRjFidzdldjNBREEwTmNucGdXNE9kRnpFRjV4QkpwWmc5M25JMG1oWm5wVkhSWHEyUUt4bzJWODA3VGZpbm1KL3l6a2d6R2tmaHZwQkU4ZDYycWdmTkMwcUdUUzc3RHo3b1JhbGZROCt5WWhsZ3V0dldrdkdhZ1B2ZFRmajhIc0Z6bzZ1SnhOTGlJbFozT0IzcktlTkxjWUs5aTZwaVFUYzRqblIxOEVmMnh1cHlUSHkxSTJmNFBhcUd2cnRFMHo2UEVqRllzNFA5NUtoU21KMWR1R2lldE8zT3kvaEdBNnZQVzZkM0FZTGNzTHpWK2FGaDhyRlV1UmlDWG5hRkhhVlZwT2wxaUtUU0pGTHBQUk9qbkdndlpIbkw1NWF0RW1Bem9rUkJxWnNoT2JtV0p0YmpOM253Um53c20vOVRvSnpzMEtWbk4zdnBXUGN3cm5oWGdDQjBIcTFsbHFEa2ZZeEMzYWZSNmpULzNuOTRpNlpEUVZsUVBpMGY3ajYydTd6a0xPZzNQenVGZXNwVDh6Z3EvZi9Hd0RmZmV4KzRsTER5Wml5TkQxM3I2aTdXcUllRTROM1pnYWpMcDNsK3FzSEpFbWVnQzg0dzhPYjk2Q0tsd25pcXNrNlNPdm9NRjg1OEh1ZU9ubVEwTndzMXhkV29KRXBhTElPc3IvMTNDSml4c1dLYUdnSlIzMWo0MFFKc0VBSmQvWU84dFpyeHhHTFJMU1BXOWhhdklTeU5EM2ROaXQvYkw5SUlHS043Q3FyeGhjSzh0VzZYVnkyRHVId2V3VjJMVTdKWUgxZUNZWEo2WXk0N0xTTldmQ0ZncXpVNS9Qc2hSTTBXUWNqeUw2Q056aURWcDZBM2U4VkxKTm9GTEV3T1kyaEJZNWUxUHFJNW5DYkkvbm5hQ2pndzdEd3BadXNRK0gvKytlWXNFK3hhZXRxbGkwdllmRHNBQzNtUVFxU1UrbTJXYkg3UE16T3pUSG1kV0Z4MmtsSlVKTWdEZGNCRFU5TjhuYm5KY3JTOU9ScFUzbXZ1NFVFYVR4MnY1ZHRSVlcwamcwTCs3Z0NUSGhkdk41NlhsRG1jckdFbkNRZHhTa1pORmg2dVBXT0xTZ1VzaFRnMFVWS2VGVk9JUzNXSWZ5aElNM1dJUnFHZXBDTEpVSUh1bDZqcFgzTXdoZldiS1hSTW9BeE9RMmRRb1UvMU1hM04rL2g2ZnJEakh0Y3lNUVMvdGdlN2xRZmNkcDVMTklGSXhkTHFNekl3YWhMNS9HanJ3dkJxNFZqQ2V3K0Q2cDQyVFZCc2R5a0ZHSUllNmQvcnRnMkNwc0t5MmtZTkFuWG1wMTJmdkh6MTZoZVhjYjEyMnE0K2JOYnVmS3pXVjY2WEwvb1BuOG9LTlNCNmpVR3RoZFhVYWhMSnpRM3gyOGFUMkpNVHFNamttdmVXcndFVVd5TUlBSWJ6ZjEwakZtRWRscXRYRWwyWWpLKzREUjdsOVR3V3ZOWjlJWEppNTRuY0VCd2Fwb1VjOWowaWlxOWFLSjZ6T1BFcUV2bm9ZMDM4VjUzTTRlNm02bE16MmJRWWVQTVFCZXpjM05BRFBOWDVwbTdNcys3WFUzRUFOL2RlaXZObzFkUHgxM1ZhOG5YcHZLSDVyTWtTT01oSm9aZHBjdG9zZzZ4VWw5QWYrVEVmTGprTUZtaHhCZWNac0xuRnN6UmhYQmpXVGdYNFZoZ2txcmo1WmhkMTFwS3ZaZjYySGJqV2xhc3FjRFVPY1RGMWk2cU1neUxIRHV6MDA1NW1wNEpyd3RuSU1BN25aZkRKbXB3aGd4VkV0MjJVVUx6YzFTbTV6QTNQNDhxWHNhNHg4bFhOdXppeHRKcXFqSnpBVWlRaHNNa0RVTW1VaEpVT0tmOXJFNDBVSEd6VURyNm5FQ0FLKzRRdi9yTm04ek96elBoZFJHYW4rUDdOM3lNREhVU3pkWnd5ckU1d3M2QlNMSWhTNk1sUmFtbU5EV0xBeDBYR1hFNW1KMmZZMmxWRVluSmFqTGoxTFNQVy9CRVJKUS9GTVFaOEFzcHhrQndodW5aV1c0b1hjYjYvRkppaU1Ga0cwV3YwYks1c0lJSm4xczRCTkVEa2F0TnVjYjJOenZ0bEtSbUVpY1M0ZkNIWjBiWS9SN2Mwd0hCaVl6Q3BNdk42ZE5OM1BXcEcxaFdXODRmMzNnZjA4Z0llNWZVQ0tLdzFtQ2syemJLb01PR2U5cVBUQ0psek9Na2hyQ0lpZGFRdG85YnVHRHVZMC9GU3RUeGNwcXRRMlNvRTRtTGplV1ZwZ1lzTGdlbitqdHhUd2NZY1RtWThMcllXclNFZ2h0S285dDVTMURDQXc0YkJ6b3VMa29OeXNVU2hpTzE4Y3YxZVl2YVBzMU9POVZaZVd3c0tCTUdZd0RzcVZqRkQzNzVFRC81MWJkSVYybElWNm9CMkZKVWljazJTcTQyaFk4dFhTTlVJNHRpWWhHTFJMemNWTSt4U0tkOFZBRnI1UW5Ybk9DRlJXQlI4SWVDbk9qcklDSFNGUm4yVjhLbnYrc2oycFU2MnZyNDVZOWVSYUdVOGN4emp3QUlWZDNsNmRtc3pDN2docEtsVktUcnFkYm5jMGRWTFJBdU1qUFpSdGxjV0NHc1ZaNmVUWFppTXA2WkFMTVI4OVRzdEhQMzh2WENOWFg1cGF6UTU3TXVyMWhvU295Q1FJRFp1Vm5od3hxRGtTMUZsWFJOV0tsSXo2WXF3OENxN0VMc1BpOXlzVVRvUHZuKzhUZDU5UEFmRmkxb3pNcEVsaVJuM2hYa2RIOFhIV01XOXEzZlNiUWgvNDNXOC9pRE05d1lRV1NUZFpCL2YvOEE3L2UyQy9MYUh3clNPemttMUhwR0xSMnRRc2tSVTZ2dys0ZWRwNFVkTDFHNHZyRDhtZ1k5Z05ZM20yaHA3S0trTEkvdlBINC9BTGxKNFZiVi9TM25HSFU3eWRZazB6RnU0WS90NFVxM25TWExlR0xISFVJNS9DZVhYOGNYMW16RkZmQ1RwdFJRYXpCU25aWEgwWjQyVWlNSFR4dEpaQmwxNmF3eEZQUFpWUnZwYk8rL2xnRFJpOE12TWtTL2ZRSmRnZ3BYd0kvZDcrRm5aOTdqUU1kRnNqUmFpblFacENrMWZQdjZQYXpMTFdHNVB2eUFPNnBxc1lqRDRxSGhURE5IZThQbXFjazJpc1B2NVdzYmJxUTRKWk9UZlIxWVhZNUY5djBEdFZ2UWE3VDg2NDQ3eVZ4Z1JpN2tMcnZQZzhsbUJTQmVMTUhtZFYrRDJBKy9TMzFFRVVjVDU5RWlyZ01kRi9uNHg3NkZ4KzNqbm50M3MyVjdMZTFqRnZvalllNGpwaGJlN3J5TTNlY0plK01aQmh4K0w4K2VQeUVRMURzelRmdVloZSs4OXlvMm54djN0SjhNVlNKeXNZU2ZuRDRrS0dldFFzbjNqNytGM2VjbVhpeGRPRnhFSXhCQUkxZXd1M3dGRUhaOFNsSXlPV0lLbTF0bXA1M2wranpxOGtzeDJVWTUwSEdSRnk2ZDVyRWpyNk9SeWRsVHNRcVRiWlNaMlJCTFZvWWI3VnlXS2FveWN0aFdYTVdCam90TWVGMWtxWk5JVmlUUWF4OW4zT3RhaExBREhSZXgrencwVzRlNHBXSWxFUFpPbCt2emhSZlp1NlFHZnlRSU4rSzBDOG54RDBPNEVTUXN2cUoyZTlRY2xVbWtBZ0xkTGkvM2Z1b1JBSDc0azY4eUtRb2drMGpSeU9UWGNFMlRkWkFESFJlWm1RM3grVWh6K091dDUvbng2WGVSaXlXWWJLTjBSZzdIZENoSVpVYTIwQXYzelVnbjUvZVB2OFdqNzcyNmNOa3F3UXlkQ1lWNDhkSnBJRnpFR2dqT0NNV3JBT3Z6U2luVXBkTm5IMmVMc1pMbCtueTh3V2xPOW5Wd3lUTEEydHdpS3RLelNjOUxEU012UmtXVGRZaHZiTHc1WE8wUW5HRjZOa1I1V2piMzF5Z29Uc25nYUU4cldvV1Nxb3djR2daTjdLMnFFZks0OG9qWHZORGtqQVlBRFVuaGxPV2ZHcnJoRHdXRjc2SWRNd1hhVkFMQkdldytEMVdGNVppZGRveTZkQlMyZVg3NW8xZTU3NHQ3ZWY2RmYrRzI3VjhtSlVHTlVaZkIvcFp6Z3BpTDRzRWZDdkx6K3NOQ3diQjlnVWRkbTJNVTRrdHFtWUsxaG1MMkxsbk53WTVMYUJWS1pHSUpSYm9NTWhiRWxnUUNSR1BjRUFtcWlTVkM4R3RYYVRWTjFrR2FSb2F3K3p3Y05yVlFxTXRnMU8wUUVpTUF6b0NmVzdQdkFHRC84UStveXkrbFk4ekN5dXdDNXVibmViUHRBdldEM1dTcWs0aU5pUkdRVkpDY2huZG1tcll4QzZrSmFzeE9PN3NyVnFKVHFQamRwUSt1UWZEaDdoWWhnUGZuUnROVVpSandoMmFFOXFoTmhSVWM2TGdvUERkS3hNQ0xRWmFzS0daVmJTVmZmK2pUUFBLOVh3aTR5RkpyT1ROa0lsT2paU1J5TUNEYzZGR1hYMHBjcklpTGxuNmFySU84dDZCeW85SGN4MHA5UG9aSXNiRmVuVXhvZmhhejA0NDBUaXhjZDAxNXVsYWh4T0swaHhNT0VUa2EzZlN4M2xiOGtVelNRMisvd0tEREpqVE02VFZhakZsWnFIU3E4TVREV0JHYkN5dVltUXZSTVc3QjRmZHl0Q2Q4ZjdUM0Y2QXEzWURUNzJNcTRLUFIzSWNrTG53bVhyaDBtbjdIK0o5RXJ0bHBwMzdRdEtqTC9jTzlZVTNXUVFIWlpxZGQwQ2RSQ3lrYWdxZ2ZOSEh2M1kvaWNmdlllOThOckt5NWF1VzgydHpBUGN2WFU2aE5SUzZXaE1Qa1BnK25CN3F3dU95YzZHdm5RTWRGekU0N2hpVGRvdERJMC9XSCtmWDU5MmswOXpQcHZ4cXZHckJmZmE5Rm52Q213bkoybFZZdkt1ZFlHQ1Q3OExVYkNzcUlqWW5GN0xSVFYxREtpdFZoTTNWaTBJWStVU3VrQ1g5eStwQnczOEtUYTdLTllvbkk1ZWh6b3IyK1dybVNLMWVnUUpzcWZMYzhLNC9wdVZtV1orVnlvT01TZ2VBTWVvMzJtcjMrSlZDdHo2TXpFb1dGc0Q3NHpYZGY0c0VmZnBhZi9QcGJyRm4rU2R3dUwvKzBaZ3RYWUpGNUh1MnEvKzJGazBCWVFwU2taaElJQlNsTnllSzh1WmY2aUVqZFZGRE80MGRmWjl6alpDcmdFNVI4QkpxdTRZQzNPeThMMWNyKzBBeHlzUVM1V01MbmF6YnptWlViMkxkK0oxbnFKRmJvOC9udGhaUE1YNW1QWENmRnJRd0g5RTZlYStLRlM2ZjV6WVgzT2RUVlJGV0dnUi9kOUNua1lna2ZXN2FXUFJXcklyTGZBQ3llNDVDaDB1QVBCbW15RGhJVEExYjNGQkF1ZDlsUnNwUzRtRmpoeFdVUzZTSVJGQTFyUURpZjhGR21xa0NBckR5eUZuRFBydEpxZnZIYVd6ejd6QnNvVlFxZWlZektuQXI0NlZpUVJaT0xKY1NKUk93c3ZkcUVIczUrcFRMaWNoQ2NteVZMSFY3M3NtV0FrLzJkRWV0dEZKVTBIbjhvaUVvdCtEZk9SUnhnOTNtcHpBaDNoZ1NDTTF5UktWaVRXMHhoY2hvL2J6aTY2QVVPZFRYVFpCM2sxV1lKZ1ZDUUsxd0JYYmhBYVc0OFFGMStLZDIyVWZ5aElQbkpxYmhucHJrdXY1VE9jUXR2TzJ3RWdqT1lYWFp1TGwvSnpGeEk0QXFyMjBtUkxoMnpLOGhSVTZ0d1FzYzlUbDV1cWhjODVXZ1YzZUw5ZTFEcjh3R0U5dGVQMGhINzF1L2s1L1dIQll1b0t0TkF0ODFLVmFhQjd6MzhDNjdmc0lwVnRaVjg2YXVmWVA4ejd3aGlMWm96eUZJbkNldkx4UkxlYUQyUHlUYTZxRlZxVjJrMUJ6b3Uwak01aGx3c0VjWTB5TVVTU3NyeWhPc1djWURaWldlTm9ZaWRwZFZDa3FNMnh5aVlpTkdmSWwwNlpXbFovTXYyTzVpTUlNR1FxR05aVmJndFNlMk5KVGc3Uy8va21EQTR5ZXFld2ozdDU4eEFONjZBRDM4b3lNMWx5NW1MVkUyTFlrVlVaUmpZVnJSRWtMTTFDMDV2SUJRa0pVRUZoTVhod2xqK1FybDdNaUlxL0F1TWlvV3dxN1JhbUZHaGxTY0lscDdKTmlvUTY4NDdIc0xqOXZHbHIzeWNqWFVyQ0lTQzNGSzVpb2MzNzZIR1lHUi95emtPZFlVcnpaL1ljU2ZmM0xRYmhVUXFFQ29jSms4UTlpV1RTS25KQ2VkVTdsMHdHWElSQWNJbVVqaEtlVENpck5ia0ZwTVd5VGhGNGFHTk43RTBNNWVVQkRXcStIREJsdGxwNTZkbkRwR2FtOEpJeHdpdk5qVndvT01peTdKeStlYzFXNW4wZW9pTmlXSHZraHJxQ3NwNGVQTWVqTHAwTkRJRnA0ZE1IREcxMERGdW9USWpHNzFHUzc0MmJNcEd4OGxFRVRybWNiRXV0NFFpWGZxaVBTMTA2UDZyU09teG5sWXEwc05jdnRDTXJUVVlCWVJaek9OQ1pmalhuN3FmdGlrcjNiWlIzdTY4eElUWGhTaFd4Qk03N2dTZ2JjeU1NbDVHcGpxSmZldDNobWRrbEM2aktzUEEwZ1VpOXRYbUJ2UWFMYSszbmx1NG5VRkJCSWxpWTY5aFYvZTBuNGNQdmJLSTFSdk4vUXc2SnRBcWxDaWw4Y1RIaVNsSVR1TTdkNGVINTgyTys2a3JLS04xZEJqM2RJRDUrWG5PV1hwWmxtbmdTMitGNnlNRG9TQzNWOVh3VmxzajI0eVY1Q2VuOGMxM1hxSmgwTVQwYkdqUkhxTGhoWENwUnhCUmJBd1hod2NYSWU2Ykh4cFpvMVVvcWNrcDVHREhKUXFUMDloVHNZci8rLzViN0NxdHBuN0l4TkxNWEt6dXFXdUl0VkRoSDM2M250Lzkrbzk4NGpNMzh1WWZubUxqOVorakxaSWdBcWlQOUoyOTBYWkI4Sit1eXl1aExFMHZ0T1pXWlJqQ3ZvNWNpZGxwcDJsa2tQdHZ1MmtSQVFRTzhNNU1DNW1wS016T3ovUHR6WHV1eHJjVlN1b0h1K20xajFPWm5zUDNqdXpuN0hBUHl6SnpjU25ESWVMdXZtRjZiS1BFeDRtWm5nM3gyOGFUeU1VUzBsV0pRakJQcjlHU0lJbG5IaGljc3RFK1pzYW9TMmQ2TmlSWU5SOGVyS2NRUzdDNEhJaGlZeGVKcHFnRnREQkFCcEFVOFlTdnl5dkI3QXFYVUVaRjZmT05KNFVSQmQrT2NHUFR5Q0FwQ2VwRmE3ejZrd040Umx6a1ZScTQ1NzdkQXNFQmZuampKM2xpeHgyQ3MrZ1BCWG5xNUVGT1JYTFlKdHNvVDUwTTk2OXBaSEswQ2lWYmk2cFlscFc3NkJtTGRFQ1Vjbkt4aEVlMjNpWVVLOG5peE9nMVdtcHlDbG1aWFFEQU0rZU9vVlVvT2RiVHhxdk5EYWl5d3VOeUVyMXgxT1dYY2IyeE1oeElreXU1WU83amVFODdjbkZZU2NmRnhqTHA5OUEyT296WmFTYzBOMGVHS2xHdzdZMjZkQjdldklmL3VPbFR3dDZpNHVKWVR4dExNM1A1YXQyTkFJSTRVMHBsd3JWaEpJZFRwaGN0QXpnRGZqNjUvRG8rRFBGeFlwNXVPSUxGYVNjL09ZMmRwY3ZZVzFVanBEcTE4Z1IrOHZYd1ZNZnZQSFkvcGVYNU5JME1ZdFNsTStGMWt5Q1JvZGRvZVdMSG5VSTRJbHJISkl0WWRscUZFbTl3aGtCd2hqZmF6dE1jRXc2TlQ0NVBkY0dDaE15MHc4OVBuM2tOclVKSlNvS2Fuc2xSZWlmSHVHRHV3ejBUd095MDgwRHRGbm9teHhod1RQREVqanRwR0RJSnlaYlBmL2xPRXBQVlBQUDRpM3pRMzhuU3pMQVhLb21MNCt4UUQxMFRJd1JDUWZLU1VqblFjZkZxQnN6dnBTeE5UMDZpanJLMExLRVd5QnlwenN0UFRtVTJvcWlqWUVoTW9XM2NqTmtaYm5FMTJVYXhlcVkrTWowNTVuRXlQUnZDTXgxdU1Zcld1MEo0YXVPSnZnNVNWQnFtUTBFK0dPakNaQnVsSnNlSXcrK2xQRjNQVzVmUEkzSFBVNzJ4a3JwTkszanB4VU1raUtUME95WTQzdHZHTFJXcmlJc1ZzYVZvQ2FNZUp4TmVsNUMraFhCSnA5VTl4WXJzZkRZVWxMTmg2MG95aXpMd3VIMzlDVXI1cndRT2lLWUhBV0pqWW9RVFZaVmhvTlpnNUlrZGQvSjI1MldhUmdaWnJzL24zYTZtUmJvaHIwalBnTWxNY1VvbXhTbVpmUC80Vy96c3pHR0NzN1BDL1h1WDFHRDNoNThUUGQyYkN5dndCcWQ1dXY0d0Z5MzlmR2JWUnZ5aElJM212c2dRSmU4aWtRUHc0dVhUZEUyTThFRHRsbkExUTZRK1Azcml2bnpkRFJRc25Jd1ZDbEtWbWNOLzNQUXA3bDIxVVJqR1ozRTVNT3JTV1paaElGbWhFcXl2RnkrZnBuZHlqT2NiVDJIM2VlaS8wTWVGdzVmSnpFcmhxUjkvQlpOdGxOWUk5eVlybEl4NW5EeHo5aWgxK2FYWEZBbEU5eVFYUzNtNzh4SXh1bkRPSWpVaitWMzRrQ2U4Yi8xT3Z2bk9TNExqRU0yTitrTVN2dm5PUzN4ajA4MFVwMlFzOG13QndmeWNIUStna0VpcEh6S3h1MklGWmFsNldpSWIvWG45WWZ5aElGL2ZjQ056VjY3d3pYZGU0dDkyM2lWa3V0N3B2SXdoTVVYSW5qMjRianRhZVFMdFl4WmViYnBhaFJlMXIrMCtqOEJGZXJVV2FWeGMySDl3MmltT2pKbjU0YW0zaGV1UDlMUmhzbzJTbXFBUmlQSkdhM2p3VS9SZDRXbzJMS29qVnVqenVXRHVaL2p4NTNrNFU4MzEyMnJZOThXUDg5U1BmbzllbzhYcW51TGNjQzg5azJNNExwOWhYVzRSU3pJTVBIditmVUUvN1lwWVJVZDdXaWt1RlhSQUUzeElCM3pZbWpBNzdlR1pPaEYyYWhvWjVIeWtsR1J0YmhHYkN5dkN1bUY1V0FHZWJXemoxK2ZlSjBPbHdUc1RyZ082b1dRcHV5Sit4ZWFDY3M0T21sQktaV2dWU2k1WkJraVVKUWhSenZyQmJvSnpzOGpGRXQ3cHZNeFV3Q2VNSE5CcnRPeGRVa1BYeEloZ2IwY3RwQ2JySURsSk9xRW83SE4vZUlZZm5ub2J1SnBQR0lub2x6ZmF6bjlreUNKS3pJVjFSbmFmaDl5a2NGdnRtZTZPOEdRWTd6UmYrT1luS0MzUHg2aExqMHdKQ085alc5RVN0aGN2WlgvcitVV1ZHYWNIdW5uc3lINjJMSzllK0RjTW1tQ0JEb2hXeGkwRTkzUTR6VmFXbWtYN3VJWGV5VEZHWEE3a1lnbTd5cFpUWXlnS1d5WGJsNU5YbHNPdm45N1B5YVlXYnExY1RmMWdONDJXZnE3TEs4SHU4MFo2dEF5a3FSSjVyN3VKbHRGaDJzYk0zRks1a29yMGJJeTZkTVFpRWM2QW45bjVPWG9ueDJpeERwR20wakRnbUdCMmJvNjVLL05zTmxiU016bEdURXdNRDlSdXdUUTVLdFN0am5sYzNMZDZNMHBwdkpEZ1h3aDZqVmFvdUk2V3VaU2w2Vm1oenhmYXBLSjlFYk56Yy9oRFFScUdUSUxPc0UxTTRYUDVxYnQrSlhXYlZ2QnZUNy9BaWU2cjQzZXM3aW1hcklOMGpvOEE4TlNOWWROODc1SWFyZ0Nhd21RMjNWRER6RXh3Smk1TzlCWDRNMk1ybzJVVlN6SnloSlRjcnRKcWFneEdSdDFUS0tYeFBOZDRncldHWXZLS3duOTNaOUlVanZKMTI2eDhiY09OVFBsOWZQbXQ1NUJKcE9GWXZOL0R3NXYzY0tLdlhYak96K3VQTUhkbERxdmJpZDNud2FoTHh4RVpZKytQS08yYXpVYisyTjVJVHFLT1FZY05xOHNoNUdjWG5tQzVXRUtHS3BGTWRhS1FhOGhVSlRMaW5oSXlXMW5xSlBaVXJtS3JzWkpYbXh0b0dEUUoxUk4ydnhlakxwMFYrbncwTWpsSFRLMXNLQ2pqRDgxbkJTbHc5TTNUM0g3RFJrcldsL0RVajc4aUpIVGc2cFJGQ0l1eW82WldmRFBUZE51c25CbnM1cC91dkFzQTU1U25NVFV0YkdZdklzRENPWnBSZG82eWwxNmpKVTRrNHB2dnZDVEVZaXJTOUNUSzVHUVdoRVZDUWtreURKcG9HRFNoMXlTVGtxQWlTWjdBMHN4Y2xtWGxNalJsRXhJV1VXaXlEcktqWkNtaUdKR2dleGJDNjIzbitYcmRqV1JwdEZSbDV2RHNoWk44K2JvYmVLVzVZVkc2Y3QvNm5UeDE4aUFUWHBjZzBnTEJHVFlXaEl0cG8rRUhpOHRCb0srRHJjWktWRktaWU1OSFJ5QXZ5Y2poOGFPdjR3OEZrWXNsek15R1dKcVppMWdrd3VLeXN6UXpEK3NCRTZJVUdkZHZxK0h1VDkySTBhYmdZTVN5MjFWYXpjN1NaZnowekNFQmwyY2kvOWJVTGdFZ05VMHJKTklGSGFCTFVBbTJLeURrVGhkQ3VQNG5USnphSENQWmljbWtxUkt4bmczWDhYejM4YzlUV3A2UFB4VGt0eGRPa0tGS1pGVk9JVldaT1p3ZjdxVm5RWkw5Z2RvdDdDaFp5cWJDY200cVc0NC9GQzRKL095cWpZdWVhZmQ1K05yYkw1Q1NvT0pZVHhzalRqdnhFZ25WbVlzZG1pZ3huanA1a00vWGJrR3JVT0tQbExGOGVOeEJOUFZabm43MUwyWTFXUWM1UGRBbElEOFFuSWxrNXFSTStqeGhVOU80aFBkNzIvak03NTdtblI4ZkloUUk4cTFINzZOMWRseHdIaTlaQjNueXhBRmFSeGNQQ3NuU3B5NE13cDJJL2lMb2dKaVlHTDcrK00rQWNDZzNXYUhrdGlXckJTcUtSWEVDTnhRa3B4RWJFOFB4bmpZYUxmMjgyM0NPMVd1V2tKdWZ5VjJmdWdHVkpvSExGN3Z3K2dPY0hlN2xVRmN6S1FrcUpyeHVkcFlzNCt4d0QyS1JpTGxJZDNvTU1YUlBXTmxXWEVWc1RBeHBTZzEzVk5XaWlwZGZiU2VWU1BIT1RKT2lETGRJUlgwVEFhbCtyekF0SzArYktuVHZ0NCtaRnpWczErV1hrcXBVODJiYmhVWE5nQTl2M3NORnl3QW0yeWdQMUc1QkhTbkJ2MkRweHozdEQwdUQwU0doZ090c1p4ZHBNalZWNjhySUxNcmc5eSsvUzZZaWtVK3ZxTVBoOXk2cVJRTFlzbU1OVzdiWEVwd0p6WWppUlA4Yy9UeVdpRGJXcEtoWkhmbmJYQ2JiS0tsS0RVK2VPSGgxSnJQNmFtaGdpN0ZTcURZQTZPbTNzS1h1YzN6bGkwL2g4L2k1NTk3ZG5HbDhuclU3Vm1LUC9ERWVnSnpFWk00TjkxS2tTNmRoMEVSVmhvSGpQVzI4MGxUUHZ2VTdzVGp0UEYxL21Qb2hFNiszWGVCQXgwVWhKRkUvYUNJblVjYy9yOW1HMldsbmFhYUI3MjNkdTZoV3FYN0loRmFoNU9uNnc4U0xKVHk1NnhOc0xWcXl5T3JKVGt6bW5wVWJydUh3WnV1UVlIR051WjFjYjZ3SU8xUStEM2V2cUdOVFlRVjJuMmZSZlpJMkx3T05BNVNVNWZIZHgrNm55VHJJVXljUDByQWdwbGFRbklaY0xPRzIzZUVvYU1BLy9mWkN3b2dlZWVTUkxwZlRlM2Q4dkVSVFZsSEF3TWx3cDNoME5JMUtKaGNxNFRZVmxqUHVjVkpqTU5Jd1pPSXpxNktUcjBvUmkrSlF1RUhSUGNPd3gwSFIwbnlXcml0bit3MXJZU3FJMStibFZIOG5uNnZaek84dmZvQk1JbVZQeFVweWsxS1l2M0tGc2pROWtyZzRQdWp2b2tpWHdlNktGUlJvVTdtOXFwYTNPeThKQjZOaHFDYzhyMkhNVEhCdWx0N0pNZHpUQVhhVlZyT3BzSncwbFFhVGJaUlYyUVdJWW1NNTJ0T0tJOElkcW5nNXJhUERERTdaS0V2VHM2bXdITlBrS04vWmNpdlBuRDJLdys4bFY1dUNNK0RubGFaNlFmSEtKUklzVGdkakhpZDNWYStsTmlmOC9rZE1MWXkwbXFuZXVFUm9oYnA0dVpNMGxVYXd0dXJ5UzNFVDVPSHZoMnVQNG1YU2J3SmRDd2xBZkx6a09ZZkRkVmQyVHJwYW5weUFaR2lhNXBGQllhSnRGUEswS1ZpY2RtRUlScEk4Z1piUllSSWtVcVpuZzl4U3NZb082ekJIajU1anJzMEpLZkVVVithemZFc1Y0alE1NTgrMzBXc2RSUzJUUmF5WktUekJnTkNVTFJIRmNjSGNoMWdrSWwyWlNNTlFENDJXUG95NmRLb3ljNW4wZTRSUWRIYWlEcmxZSXBTd20yeWozTEcwbGhjdW5VWXVrZkxwRlJ0SWxDdDQ4ZEpwakxwMGJpaFp5bXlreXZwWVQ1c1FlOHJXSkhQbHlwVkZ3MTdOTGpzcW1aeFYyUVhjWEw2Q1Zka0ZtRjNoOXphN0hNSitBZm9ueGpsYjM4SmRuN3FCRFhVcjZMMzQvMVYzNVhGTm5lbjZRY2hPUWt6WVNSREtwZ0hDTG9KWU4xeHZ0VVZibDZLdDJsK3RNLzNkVmtmdDdlSjA2dlRPeks5ajIybG5iUFhXdHJZNjQzYkhzVzdWVzF5dzR3VWRCVkZSTkVMWUlRWVNraE95a0VDNGY1eWNqeVFzZ2t2dGZmN2paT0hrL1piemZ1Lzd2TTliZ3pJVlhlbzZUNUdCOHVaYTVDL0l3K1JwbWJEYkhUWmZYMStQbml1TVZvU054K1B1MU91TmhjcjBoSUJPVGcvSy8xbEovZ216Sno2ZG1Ja2pOOHZJZFphdkwvUm1FMjYzdFdKbWdoS21MaHYrY3Y0a0pzZU1RN1FnRUxlS2IrR0QzZnVRazVlSzFQU3hXTFc2QUh3MkJ3MTNtbEhicGtWaXFBeFo4aGlrUjBTajI5bURIUmZQRUNPVU5hbWg3YVRvNTgwb1grUkZ4ZU5hYXdNU1EyVjRPWHM2c2lOajZYb0V0NzAyMFNYVXB6RVpjVjNUZ0N2TmRkQlpPcUd6ZE9KTTlRMVVhaHJKTTJWUlNnNTY0S1FUN0hXM1FkbXNpSllHWS9Pc1JTaDFxWFdOQzQ0QTI5Y1B1OHArSkR1QzFXSEhLem41bUJtZlF2TEViZG9Pekk1V0lpUWxISEZKVVRqeVhURzZ1dXhJajRqR3ZNUk1URjg5RFVIQm8yRXlXUTV6dVJ3UFlwQzdXb3FOeCtQdTdOQlRoU2taQ1FFQndTS2kwWCtwc1FacXZSWW5ibFZnL2VTbkVPZ0tUOWZxMjhoZ3FOcGEwZFhqUUpRa0NCVXQ5YmpjcEVaT1ZBS09YTGlBclZ2M1FlekxRMnFPQWdscE1SaWZud1pmUnk5bWpFN0F2aXNsT0hDMUZDb1g0eGdBUG5uNlJTTE8wV2pRb2FHakhVdlRKcUxiNlVTVnRobGhJakYybC8ySWF5MTlkY3hNamxuVjNrckl2TlBqa2xHcjE1TDMwQm1wNlhRMUpJZUhNYU9Ec0wraWhGUmxWclRVSTFJY2lGcVhicW5XVEdGOFpDeHUzRzBpREhINCtDQjZkREM2ZWh3a0JjbG5zUkZvWXNFdThVVjZ0Z0xqbytOUSttTUZicmUxWXVMRVZFeGRuRWR2UDF4T0lieGtMTDMxZ213OEhtZW5RVWU5bUo2bEVNb2pRejM2T2s2UFM4TFYxZ1k0ZTUzUW1Bd2tMd29BMldOaXNUSnJLcmFWRklHeVdUSGV0UWNYMTl4RWJsUThGTDJCOE9INklqZzJCRUtSQUpQeU05RWhkZUsydWdIUFJLWVNqMFF1bHVMQTFWTDhmdTVTRDVIWDB2bzdxTlZyMGVOMHd1cXc0MEo5dFFkTjNlcDFhcVZYcUI5MEZoTkVQRDdTSXFKZzdLTHJ1WFRtVHBUV3EzQk9mWk9zT01hallrUmpHZjFRUHB0RHZDaW1wcXk4dVpab1ZUTTF6U1YxS3B3NmRSSHpDNllpSVRNVzRJN0NXR1VNa3FjbFFpWVBRYWZKVXNQbXNONkdGd1pTekxKeFZKZjBzZ0FBRFNWSlJFRlUrWnl2OUhwallVYVdJc0I5RUdyMVdtZzdqYkE0N0ZpVk5RVit2cjY0NjZxdFRRa2JnejFYemhNRFBKMllpVXBOSXozYnVIeUVDc1ZROWVpUSsyU2ZySEtFTEJqekZrNkZVK2lMaTJVM1FGRm12SktUajl0dHJUaDJzNHp3OW1uYVJ6aHFkTFJ4bHFaTmhMcWpqUVR1bUJYZ0hZN1dtQXhFRklUUDR1QUphVENwQng1TTFOdTkySy9kYkFMVlpTVVRqUWxPQW5SVTRGbGxOczVVOTUzcWZaM0FuUW8xbmw2U2o3U01jWmlRcTRSTVRxZFgyUnpXZWd4VHNneGd0aU8zbFNCdTZVV3RYZ3NSancrZDJZUno2aXJVNnJYSWlveUIxV0hIaXF6SitKc3JOUWNBVFVZZFZvNmY0bUlEdElBMXlnK3Z2UDA4aEJKL0hEdFlqTmJqS3V3NVdvUjRSVFRHcHNWaXlmT3p3ZWR4OGRuKzd6QmhUQnhhcVE3dzJHelNOS0hTVlZNQUFNc3lKdUZPV3l1aHJNakZVaFNtNTlGZW0wdm53dHVvR3BNQnRYb3RZZ05EWVhQWSt3MkErN1lIMEZzcTFXVWwzeVVYUzZFeEdjRm5jNUFmbDR5S2xqcWtSMFNqM1VLaHA3Y1hWb2NkUzlNbllrNWtNaTQzcVpHVTJSZENOM2RhZFd3MjYvbUJERDJVYXFLTjU3WVNLTFlERjRvclNGMFhBNmFhNXRqTmNoS2x0RHJzQ0JXS2NhN21KaXBhNjlGazBHRjJ3U1RNV0RnSkYwdXVZZFVMNzZLdXJoVVh5bStnOW53MVZKb1dUTWhXWXNLVEtYaHU2U3p3ckQ2NHJhb25zOWE3SnZqWXpYSVlyR1prUmRLbjdnWEo0M0cycGhLdlRweUZubDRuOFl3WXVHOW5mNWk3RkZLQkVMZTB6U2hJSGs5RVNOeU5QeENXcFUvQzVjWWFVTFkrcjYxYXAwR1F2d2lCQWpybjIyVFVvOE5xeGw4UC93OWUvVldmdmRsczFxdTREOWxLZWhCNDNKMEdIYlU4UFVzaENnd2RqY05IaXZ2TkhrWkFlMHBNSW54ODZHS1A2WEhKU0FnT1J5QmZDSTNkaEszZmJBS0h3OGFTZ28yZ0tETVJ3SlA3UzdEcjhFbjRWcHZoWkFOajAySXhOaThCVHo2Wmdhb2IxYmh5aDFhK1l2bjY0WmU1TTBrWmFhaElqTmZ5NWtCbk1lSEExVkpvT3lsY2JhbEhsU3Z6NW83VGR5b3hUNUhoWXVMcGNWM1RBS2xBaU1MMHZBRjFKd0I2UzN0OTBoelVkN1NEc2xseHlhMjNBQVBtMldGeDJKRVFGSTVhdlpab2JLemRTSHViRm91dGpjWHlLeHpNd01OdFpjaDBRSTJvT2xlRk9ZdldraGY0TERZeTVESFFVQjFZa1RVRmF2MWRmSFh4TEtRQ0lWWmxUVVdSNmhxbUZFN0MyZzNMY0hUUGFmejd1ajhTcGFuVWlDaFVOTmQ1c0JNbTVDcXhidU55MGpINzZ4Mkh3QzJqOE0zNXM4U0ZUQTJQQXAvTkhwS1lHK3VTakhFUDJERllsSktEOHVaYVZMdGlSSEt4RlBNVUdXaDNKV0VJYjhoMW44ejkvYVZnSlVycVZFUzVQVDRvekVOZkNLQW5vek9jaTMySHRqQ1hwc0l0OXVPTjRZcDMyN2g4enRkNnZiRXdjcHpNNDhIc2NQYkFiTzlDazFFUFdZQUVpaEFaaWxUWFlYWFlNV1owSUd6OFh2eHgyMFpZT20wNDkrZlRzRmhzU0F5VkVWVkY1b0hJdUhoMzFJMzQrLzRpY0cwK2RFdVRYQ1dpbm94RGkxNFBjd010ZGNua2lEM2xNejN4aDdsTFVkRlNoemxqVS92MUVLQzZyQkJ6QmVTZ1NkbXNVT3UxU0l1SVFxZUxzVGNqUGhrcXJhZUVXWTN1TGxxTWVuS3kxbGxNOE9kdzBkUHJKS3ZPMk51RlhmdC9ENUZJQUxQWnVwM05abjAybEdGSDJzeFRiR2lucXNTQm90Q0QrNHR3OE9Nam1CNlhoUGVMNkxvbmI4b2duOFhHaVpPZlkweVNITGYrZmhYL09ub1p2ajZqOE8zbGM4U3pzRGpzZUhQYU16aGVWUWFEMVFJcFg0aUtsanBJQlVJNC9IcXhhblVCMW01WUJnRFF0TFRqeS9mMzRNdC9IQi80N3R4QWs0eXZReEVxQTllUGhmTzF0d2Q5TDZOWHh4aWJ6MklqTnlvQkpYVzM3MG4wNHJQWUh1UmlwczI2eFdKcjQvTzU4YmhIZTZ1UnRqQXhpQU5GNHd4YW8yN2g0aGxZOCs0eTNOYjJ4ZStsZktFSDBUWi9hamJHSk1uUnFyNkwxOTc3RTlTNnV6aGVWUTVWV3lzU1ErVWttVjdXcEliQlNrY2NTWExFYkFKbDdNUW5XM1lqTC9NRkZKMHNSV2g0SURadGV3MzdEMjBoN3QxZ09IcXpEQmFISGVNall4RWtDQmp5dlF5ZGhJSEZZU2RVZW5kNDk2Wmszc3NZZjBLdWt2UzQ1L081aXpDTTNtTDMwMEhEeGhWd3YralFVNFZqVTJJQ3V2akE5OGZwZU12aXRGeHdmRm1rM0hQZm9TM2crWFB4OHFyTjhESDFvTk51ZzRRdmRKMmF1MGwwc2QwbGxwY1hQUmJUNDVMUlF1bXhKbWNHR2d6MEE1Q2l6RGo2WFRIVTErb1JweGdEWlZvQ1ZxMHVRR3BFRkhxMFZ2QkhzUWVWT3J2VVdJTmIydVloZnhBamFUWlF1eE9BWGlFU3ZqL1lmbjZEcXJTSUF2engzWWxQd2VHd1lhTE1IM0E0N0MrSFk4ejc3U0ZqNC9FNE8vVjZZMkZLeHRnQWVXUW9zcnZEMEdCb0o5VHhWYXNMTUh0ZUhvcUxMbUhycDN1aE1SbGdkdGpSYUtUcmpOTWlvc0QxWTZHNzEwbDBuVFZVQnhLQ3duQmQwd2lidzlGUHRjdWlNMlByOWdPZ0tET3lzNU1RbXhHREtjL2tZSlN0Qno3dDluNHgrTUVRSHhTRzlWUG1FZGVVc2xuUllqS2daNEFpY0lEV0xSVjRVZUc5c1d2ZjcvQkVyQnlkSm90YUtCTE1INjRoSDdTaE05R1ovdUh3ZWJ5MTdoUG96Q1lzenM3RGIvZTlBUTZmZzd6TUZ6QlI4Z1NKMHpOZzVBOEFFTTRtUXdXWnA4akFENnByNExIWUpCUEdRQllnZ2JYYkFZZGZMOVp1WEVhV3ZLcXFEdSsrL1JrdXVEb3RqUlRNMWpuVW5zOGs3Um5HT0pPcldQdmJsVmk0ZUFic1hRNDdtOE5LZ0pjODhWQjRHQjIxeVNBMDMyekdmMzkvRmk4dWZ3cWpROFQ0N09POTRGK2hJNUhKb1hKOGM2bVkvTUJNK1JQbzduRkNaekVoSVNoOHdBZWVNaXdTelZRSEVYY0Y2Q1pCUnB1Ri9DMlRoK0JQVzk4ZzFUbEZKMHV4ZWRNMk5EVjZsamZSMU1wNEQ2V3ZleUUxUEFxTlJwMUh1YW03VzhwbnNmSFNtb1ZZdjJrRjg1R1ZHR0VmK29mVjBwenVMeU1SeWR3dnZqcnJIY3lQVGNPT2k2ZHh1VkdOK0tBd0pBU0ZrOWt6TVNyQm93V0pOOXpMajRhNkpoVUlrVHN0RFcrKzl6SWlaTUV3VVdaODljVWhmUDNGSWZlYVhGcGl3TVVBOU9ZR01iTjdKR1ZPenk2WmlROC9YUThBTUp1dDJ3VUMzaStHL1dFWEhtWlBlYklTbUF1L21Qd2ZxRzdYNEU2N2h2RDhWMlJOSmpSMXFVQ0kzREh4WlB0WmtEd2VhcDBXVW9FL0tscnEreGtqTnlxZWxDOE5oclVibCtPbDFRVVFpZ1JvYnRMaTg0LzM0TkNCMDMwVm9LNTA0bENHdnRkMkZCOFVoZ1dMODdIbTE3UjdyTmNiaXlXU2dLbERHV2N3UE14dXFnYUpKRURab2FPSVh4b2NIa2dZQ1JVdGRhaG9xVU9scHRIRFZYV3Zhb3dOREVWRlN4MU8zNm5zVnlqTlJDZUhNajRBZkxKbE4vSW52SVNTRTVjUklRdkc3ejVlaTkwSFB5RDVicDNaQkNuZmYwQU9Kd09aV05xUGIrcCtuOHZYTFNER3QxaHNLb2trb0dESW14b0NEM01GTUNBcjRkcmxXNWovYjY4REFKNVNwS1BKUUhlc1kyWTg0RmsxNlk2QnRnbm11dnMrN0EzbWdjNW5zU0dVaWZHYjk5ZVFzTWJCL1VYWS9PdnRZSFg3RFBrZEE0RTVHUDdtL1RWWTZPcHI3SnI1QmJqUFhzTEFvK21vYlpCSUFwU0dOcXBkbVRrV1d6OS9Dd0Fkd2RSWlRJUllDOEJWdkNDZ1l6c3NOdEdhQTRBRVYyOTNwZzdaSGU2ejB4dk05emNhZExoWldZUEZCUnV4NGZXUDBOeWt4Y0xGTS9DL2wzZGgrUytmR2RUNFVvRVFVMklVL2E3bktST3gvOUFXWW55YnJXdXZhOXU1YitNRGoyWUZNQkFiMjR6VkFVRUIwdUpqRjJBOG9zWmIzKy8xK09FTTRmYWpjOGY2S1djTmh0VHdxSDR5OC9jQ244V0dVQ1RBMGxWUGVUd2ZObS9hNXBIeEErZ0JrUEFFSG1TdW1YTnk4ZEdmTnhCaWJVY0g5ZmJvMGFJQm0vS01GSTl5QUFDNkFWemxhS2tvNHRhNVd6aXo3VFMydXFqdDArT1NjZHAxM0YrVWtvUFNldFU5dFVDQnZsSlJwcEovT0Y2TGU1OENtVHdFNnpZdUp6UDVZc2sxckgvdHczNXVLMENmYnQzUEduYTd3OFptczViQ1RmLy9RZkV3R2pvUEJSdVB6L25hMEU2dGxDa2kvQ05rSVRoKy9KK2tnSnBocjBWTGd6RXRKZ24ybm02UzVXSllib3lBTndQM2hwdU1sdWU5NEZHeFFwbnh3NGtTWENpaDlVUlRNMmkyaGtqc2o1bzdqYUFvTStLRHdwQXhXWWtkMzc2SHlWTnBYU01UWlM3ajg3bVRBVng0bUFaNjFDdUFnVWRucHVMdFovdkY2V2tocUhDUGd3L2dTUmkrRjRZajRPR05GUy9PeC9wTks5eDUrLzFnb3N3ZkNFV0NONGY5cFNQQVR6VUFnTnNnbEorNmlnL2YrWkpVb3JoakpBYS9YM2ovandtNVN2Y0VDb0dKTXBjSlJZSm5NWUxRd2tqeEtMeWd3V0NRU0FLVWVyMnhNVDAvQlF0L05aL0VmdWFPU3lOKy82TTJQa0FMZ2pDUXlVUHczSktaSHE5YkxMWTJBQVZDa1NBVGo5RDR3RSs3QWhoNGJFZXF2UlVJRW9qd242ZitRU3RiZWFVb0dUQ2FSY041VUE4SE0rZms0cmtsTXpGamRsOXR0TG5UcWhQNDh6WmdoUEdjQjhIakdBQ0E3dEI2V3h3VUVNd2NqcGlZelZDRDhLQ1lrS3ZFekxtNW1EVm5JaUprd2VTNkszdjFCbjVDd3pONFhBTUF1SzJFcWh0cWJIbG5CODZVbG1PaE1odXRWTWREMllvVVNURlFKTVZnMXB4Y1RNaFY5bnZRR2d5bWcyS3hjQ3VHU0pvL2Fqek9BUUM4QW5nSDl4ZEJkYkVhLy9XM1BqZWI4ZnRUSTZJR0hSUkZVZ3hFSWdFVVNUR1FSWVlnTVpFMi9FQ2VqU3Q4OEMxb1gvNkJUckVQQTQ5N0FBQkFiS0xNcDRRaWdVZk1vZXFHR3BTeEUzNitmbkQyT3VGME9qMCtOSmlCdmFIWEd4dEhqUnIxTDdGWStGZlFNLzJ4RzkwZFA0Y0JZTERDM0duOVVPRFBrOTc3clFORHJ6ZGVkZGk3RzBKQ3BlV2dqVjJCbjVuQnZmRnpHZ0FHcWFEYmU2UU84cm9CbmpRLzc3Ly9YK0gvQUFLb3BaNlJUM0ZaQUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIkZJRE9fMl8wIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiIyNTg4YWU4MzVhM2I0NTM2YjhkZTVlNTQwMjAwZDE5MSIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJ1cCI6dHJ1ZSwidXYiOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjp0cnVlfSwicGluVXZBdXRoUHJvdG9jb2xzIjpbMV0sInRyYW5zcG9ydHMiOlsidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN31dLCJmaXJtd2FyZVZlcnNpb24iOjEyfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTEyLTAzIn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0xMi0wMyJ9LHsiYWFndWlkIjoiNGI4OWY0MDEtNDY0ZS00NzQ1LWE1MjAtNDg2ZGRmYzVkODBlIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI0Yjg5ZjQwMS00NjRlLTQ3NDUtYTUyMC00ODZkZGZjNWQ4MGUiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiSUlTVCBGSURPMiBBdXRoZW50aWNhdG9yIn0sImRlc2NyaXB0aW9uIjoiSUlTVCBGSURPMiBBdXRoZW50aWNhdG9yIiwiYWx0ZXJuYXRpdmVEZXNjcmlwdGlvbnMiOnsiemgtQ04iOiJJSVNUIFNBU2UgVVNCIEtleSAxIn0sImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6Mn0seyJtYWpvciI6MSwibWlub3IiOjB9LHsibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQ1BqQ0NBZVNnQXdJQkFnSVVUT3laSnprSEdneHh1STZNUWwxUFZyOHJ6d3d3Q2dZSUtvWkl6ajBFQXdJd2RqRUxNQWtHQTFVRUJoTUNWRmN4RURBT0JnTlZCQWdNQjBoVFNVNURTRlV4RFRBTEJnTlZCQW9NQkVsSlUxUXhGVEFUQmdOVkJBc01ERWxKVTFRZ1VtOXZkQ0JEUVRFTk1Bc0dBMVVFQXd3RVNVbFRWREVnTUI0R0NTcUdTSWIzRFFFSkFSWVJjMkZzWlhOQWFXbHpkQzVqYjIwdWRIY3dIaGNOTWpReE1EQTRNRGMxTURReVdoY05NelF4TURBMk1EYzFNRFF5V2pCMk1Rc3dDUVlEVlFRR0V3SlVWekVRTUE0R0ExVUVDQXdIU0ZOSlRrTklWVEVOTUFzR0ExVUVDZ3dFU1VsVFZERVZNQk1HQTFVRUN3d01TVWxUVkNCU2IyOTBJRU5CTVEwd0N3WURWUVFEREFSSlNWTlVNU0F3SGdZSktvWklodmNOQVFrQkZoRnpZV3hsYzBCcGFYTjBMbU52YlM1MGR6QlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJFUDVUSmpwYzN6RktPQzJwVm10Rk5pTHNzZTE0K0xmUmczdTVXdzN6S2tQZFM0dWRSd0diV1MyeWZBYWFObWxDeE9GZ2VDQS90Z1VlNmZ4dnpOMjByYWpVREJPTUIwR0ExVWREZ1FXQkJUN2ZuSXVzSWN0UlFseFdTNlhnY1lQbWxZOVd6QWZCZ05WSFNNRUdEQVdnQlQ3Zm5JdXNJY3RSUWx4V1M2WGdjWVBtbFk5V3pBTUJnTlZIUk1FQlRBREFRSC9NQW9HQ0NxR1NNNDlCQU1DQTBnQU1FVUNJUURMSE9lbWNvcEY1YTlOaExVNXV4QWhXOXkrajI2K01qamRiUnJjZm13Qm5RSWdXc24zVk4rOS9QQ1NFSk1MUDRybkIxNHBaVUtseFNYWFRNcUVQN1BYaDlNPSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFMUUFBQUE4Q0FZQUFBRFBMcENIQUFBVTZIcFVXSFJTWVhjZ2NISnZabWxzWlNCMGVYQmxJR1Y0YVdZQUFIamFyWnBuY2lTN2NvWC8xeXEwQkNSc1lqbXdFZHFCbHEvdlZKUFVuYm56VElUZU1NZ211NnRnMGh5RG11Zjh6My9mNTcvNFYwTElUeTdOYTY4MThDLzMzT1BnRncrZmYrUDlhU0cvUDk5L00zOTlacisrLzZUMTlVSGtyY1JyK3Z6cDlldjY3L2Z0WjREUHkrQzM4cGVCL0dzZ203OSswTDltanY3YlFGOFRKYTBvOHN2K0dxaC9EWlRpNXdQN0dtQjh0aFZxOS9iTDFzN245ZXYrVHhqNGZ2VGozazlVVXZ4ODl2dmZ1Ukc5WFpnbnhYaVNwY0RQK1BtVVYzMm5KNDMzbDhISE5YN2UvbjRudjVmYUp5Qi9pbFA0eTZxZTM3UHk4OXR2V1NubHowbEo5WFBGd3h1L0JyUCt2UDd4ZlN0L0R2N3podmd2TTFNTzlqWHpMKy9uYnZIMzdYeC8zN3Y5dWZkOGRqZHlKYVQxYTFQZlc3UlA4UGRrcVBUZVZ2bHFmQmQrYis5WDU4c2ZxbmVSOGgxV21Id3RZMmJTY2kzYnRtSFh6dnU2YkxIRUhFOXN2TWE0WW5yZjg5UmlqeXRSMlVaMitMSWJXK3BwSnlkamkvUW1aZTFuTGZiTzI5L3BsamtUYitQS2FBeG1Lb1ZIUC80VFgvOXdvSHRWOG1ZS1ppbHZyRmhYVk1CWmhqS25uMXhGUXV4KzExRjVBL3o5OWZzLzVUV1J3ZktHMmRuZ0NQTXp4Q3oyVlZ1cW8vUW1PbkZoNGZYVGE5YjIxd0NFaUxrTGk3RkVCa0sxVkt4YWFERTJNK0xvNUdjd2tNZVU0eVFGVmtyY3JETG1STGUwNkZGemMwK3o5OXBZNHVkdE1JdEVsRlJUSXpVOURYSWxZS04rV25acWFKUlVjaW1sbGxhODlESnFxcm1XV211ckFyL1JVc3V0dE5wYTg5YmI4T1RaaTFkdjdvOTNIejMyQkRpV1hudnIzbnNmZzBrSEl3L3VIbHd3eG93enpUekxyTE5ObjMyT1JmbXN2TXFxcXkxL1ZsOWp4NTAyT0xIcmJ0dDMzK1BZb1pST1B1WFUwNDZmZnNhbDFHNjYrWlpiYjd0Kyt4MC9XYlBuazlhL2ZmMzdXYlB2ck1VM1U3cXcvV1NOVzF2N0hzSUVKMFU1STJNeEd4bHZ5Z0FGSFpXejRKWnpmSlE2NVN4MFlDNlZ5Q3FMa3JOTkdTT0QrVmdzMTM1eTkzK1oreVZ2VDg3L3I3ekY3OHc5U3QxL0luT1BVdmNQTXZmM3ZQMGhhMXRzczBKNjNneXBEUlhVa0dnL0xqZysyR0JjeTBxMnVETFlaOHpTMmgzR25xTFF4dnFvQkgrTkk3S3daOEZndnNwTWNVeHVUZ3BBS2lNVTN5eHBHbi9OTXZLSnR2ZWNheVhyZS9wcVpXbmNWcWtBM3l1T3gyUHV2c0dLTksrUmg3ZHlRSkEwd2lDTE14UHZVdE02bW1jVHhMUEVVcGxPcGt0RGptRTUreDNQdUlTU2lpRExaSzJudEp3a1ZpQ3AyYWxqbitwclV4aXpaK0MxM2JyWVRNa01KMTdlZnZUUjlQdnNTdkQzcWpjZTc2MVNLWHpDT3FqQllqM1djWGxCTU9TaDhWYXZqYno1TEh2ZTZyUDFHdmUrcmExbmdTR0V2OVpoM0hPYWo5U3A0RzFsbmhHbjUydE1FZXVLdWMzbFRYZXI2aU1WQk16YlhuZTMyL2ZESnJ6TWtuWVl4WHRKeEJyT09NVnlnUXNiWUdlRk9lTHBpMUxlUkgzV1JoNFkrcHdLMVNTaTNNNTQ0aHdkMFJBODgxRzdsRXc4N2FhaTkwZ29ZSGlacSsvcTNEUnlDeHRwMXZTeDUrMjZhbDBLOGo2bnpudXNMQ2N0VlozRnBIVm0rbTJKQkVLK0V5SzhZNGNUZHoyV3oyVEtzNDNCcmV4MHZCMXFLejNBYStyMWpOWlBMdnZRTjhXdnJScE82c3NwK0h2L3NGamFKdXllcUZXMk5tZEsvbFFpU3ZBYlJWenp0SlRpVnV2a29NNzUyaUFSR1dVVmtqdEhvNmhLT21CREpJOTB6bTJKaW1acmhhSmpMWVRxQ0lxYVdvSCtSNW01M3pYVHJYTjJGa0x1ZzArQjFIVm5SWEdmOVltZEVtUlBWK3phTzdPWFN0ejVMZTNSN21JM0RxaFFsNkhQQ3JXMzNVa1V4TlRxdmg3bnBmamJXYnVIYWVYSjY4UktMR2o4UmtuTkhmMmN6c3JvVFpCdmpPWlVTejhkVUdDZUViaTRGWXE0Vy9FSmloaUZ2bnRHMVhMaENFS0tkdVBvSUE0bzBwUnBnSWtHQWhhMTZQUzNoSC95blZrN01Gd2ZMa2pYdUk2YjJFcHBNOVZhYmhtamZ0WE12eHJpTThMek00U3hXMmY1bzZ1R0taRjEvM3JoejNYeEhmRHJBeUhZNTZQbnJlcGZSa0hIMFZERE44M0dPMERueUQ0SWNSYkVKUVM4RndCam1MQTlMbkthYmZXbkxDUXpCcVRNUFVINU1HYURVYUFLbFlKMWFzYU9WOUJyVWJwK0RGaUs0TUtkaXhLdWM0OU5HY3h4bm5KdXQ3UjJwVnpKWUxkVmJJMFY0dkFLbnA1RGd4OHljTUg4ejdZR085aUFOYUc2RjlRcFZlOCtxRG53QkNoWStXM2VZVWJLaTZmS0dBUEZDVnVWNmdveHZKQ0pza2RUNFlFZDh5NHFJaHpRWWJLMXZCZ3N0ZGtBTi9xTHBmUStPd0drdG9iNGEyaUNBbjlsVmgxaHJ5bGlwQi9wQWllL3gyOCtENmxOUkhlZ3BiYk5WVVRGOWNTQklxMk43dDFGdW9obGpRNGF0MExUblQ1aUJsRmpBVWJkZ2ZjSmkwU3VqblgyQXM1UlJIMlNoa3Y0d0ZVV2Y4YUJubGh4ZDBKZEV0aWY3bW9UcnRGMFZzbXVBK0Jyd210TitubHVOSFRyQzNDaC9tbWFIazZmSkJUR2ZGdW5uMzFrTVVHbzNzSTVEQWpYU3V4djh1N25nWExHNmdrc1M1UVB1TmxieXJ0M2tDSlBXbyttM3VTWXhLVUVzVVVJZHZVSUZ2VjFzaUJ4N0FIQ2hHZmVIV0dHR3VHWUpPRVp4RWhSbmcxYkFZdXV3a3h3aGp0VDN0azJ0ZE1wdGtNeGdrQTNnb1cwOVhNWGRQcHFweTQvczQ4TEZoZTN4OHd0Q0l0dzZmR1J5eDBUTnF1b3VZblFXTlNYSEZTNkNBd0kvamtFNUE1WTc2MGlXRGNKaXk1NjZvQXNaQ3AyY0JheFBGaGVPYWdKcWdlcmtyd1JPRVFLMHpqVjkwd2dIN1YwMWVpQUtHbXg1WWd1d0g0N1ZmUHBwaW4rZWp1dlRtRnk2MWVGc0F1ZVdpSmx0eWUrbUU4K0M0cDlBNnBJaEN2bmVZZGFreURGeWM0cWFEQ1JkcUNmQzhmOHdLekFBZVM1S2NsekgxTzZUKzFEMHRLWXVETXFhb0kxWUg4Z3FaUGJpTmZyQ2FTRUhlNk5qb1FVSWJ3VklCcllwZERKRDlTY0NRZVpTWVNiSGNOV0xaM3B4djRwQ2pqZlQ2WWFLalZTQ0J0YTU1RHZXbDZGdmU4RWoyWkxRTzFGS0xEK09FVWQ0T3dBelRGazBZQUFNUWpJdGRFenBDUlZKUEhJZ25sKzllUGlUN3NkK0dub0l3ZzBWV25Da2FTa1VDOGd1QytEREVlcDZGdnBJem9UK1lIL1h5Z2w0Zy9oaW1iVDd0b3V3WC9nUWdmZ0xyUjJTNlVtb21wOHo4cGZKdWJlak5xaHNEVXU2SmVvY0F1THhDSFNWNVNVZktzN1BLeXRRR0VJaTBoZ1FWY2tNSGxNaHFMcDlGaW0wUUc5cld2SU40cmQ1MjVxMXBoRUVjYXFVY1RqZVlPbW1CcGdoS3c1SllETVJwWUEvMFROTklrWkZDVDh6NVhyUUhkVHhJbm9Ta2hka2ppTlREMkw5azYwZjVGcG9iNWJaR1lrZkZvQUhjcUk5Z1Rna0NYRFR3QmVzclEzOXlJcURNd3c5WU5JOFdVUmNsZy9jbUc3RGdxeTVCVjRIZXdrQ2g5WUMzMjBhY2h4RXhGN2t3NkQ4eWxqUkFtUjIrdEJFTkg2ZVZWQVpWMEE5U0tBd085eUVUTy9UcTJKQmZydnJDd1FTRVIwTmx0VW9Vek5RWGRmSFdUNGk1WVJxZFJibzMrNnhDc0lZaExCQjlQaUFYUm1NU0FvcXBXNU8remZhQjBTeTRvb1luVWdiYnJsb0dqYnNiWFJhUFRPeFNaNGZ6azFSOVI4Z3laR29XdjZGbzFSL0dUUHdNd0haVGJ3Rndydy9ERFVud2lLY2x5WXZjT3VRTUxOOVJPQ29wbllFT04yRkJ2Wm82SVJNQVh0SFpEWlNxM2hCRm9kQUZzK0hWMDB6bWJVVURzaWthOE1kU0F4b0ZIS3VvMUdiZGxUc0czVElaZ2Q0cWtOcjRML2FrUWt3QWRkbERSQVVzdzhLOGxvOWQxUWdwWDVNb0dtZUZkWXE2YnBEektNMGtZbFNPcXZ0d2dBa25Va1JrOEF4MkpGM2psTVo2UXlaM0NHL2xWVGtXc1R6bEtqbSs3SER4dzVTTnEreTdRQS93bzdlaVRBR0xFV2hQNmlQK0pMRzRnS3REemdqMEF1RlA5SnlBbnE0TlFIQnN1Z21tVTZac2g3aVBFUmk0TithcUlJUUNuQ2Nwa1d4b3RCenNnaCtoUVlDV0EwSWZaelE3eFBtZG9PUmZZSzBpbS9odnRGUEdDWVdSb1JrcEFla3dDZ2VWQ2s1SVVQSERham1YRVB0QmY2cWorWjlrUVFOSUUvQzI4RE55clFCRDhiWGdpeDFyMVJ2WjN0WTMvS0FzaElFc0ZiRTZjRGorT09sbFYwOW1SM1FNdWhYRkZXUkU5cVl6VDgrNDVGR25YTTNJU0Q4dW83NENqUVRmbkFkRFpMampDRk5CaktuMXNBQklJSk05TUIxRUxRT1VHbVlCR2xlNnNFcU5FRzB4bDlLVVhDN0JIdGh6L0FMUEE1elB3WTdIeHFZQ3UwT3NXSkI4T2lvN05xSXdoTHNLU3h5R085L2dHTmhJU2dlVmNSZ1hRYWdtUzFwMkpiY0hPcG00eTNUQVFpWVVrSHdZNm5sOUZYbHZwTExvdEJUY2t2RW9hRGFRZGthSWNydFgrZThQYVh5M0VnNTJRR3dUdjhVUlZ6SkRWWG1EcVAwTWtXVkYwMDBjWW1CMlFxZ0NkZENhcVcrR0NDdkFUa2xCUmdFNzhDanZ1d2N1S0Y2NzRCM0lTM05rNFRhN3ZFRGpMZEtZTEJmRWlMRGlLUXdTTlpZT25YR25WRTJUWVpZMHNvVzB6L2xCVG9sQ1ZrUjk5RzVFUkYvK0RuUVlFbzVLQmdRdEh4NGNDZVVHb0JPcEthQkJSdzNBTXVsRmZLRGVSQklnMG9sR1RUeG5iRmxnZjZ2RHFmdU5obENmYzVIcnQwaDQ1UUdoRFhqTXFuY25YZ0VuVG94UHBRdDJ5TVBHWWRubkE3eUsxdGtnRlV5ejRxZGpUdUE0b0NMdms5cVRwUWhtUGFIZnJGS1lVc3FtUTU5TDN0R3lBbnRENGVGS0NTZ0ttcW9kSWkwdXNlN1ByR1RpVkZsT2pNUENvWkpYZ1VMZDRPVDFCbzVvamFQaTNqTUd6a09JYkx0eU5QYmlkNXMyR3Q3K1A3bk5LVUdNRHo2eUJsSVJVaEFjUm1CcFE4UTNERzVQczlDd0IrUUlpSnlwQXdvMXlSbHhENjgySm5kSU0vT3graTc5R2dnK3hpaExZMkF2RHMrTkxhU2VKampDNk5EdmZKaWhOUVBUckJtRDlHM2FFV1kzZjZrUkpCL3ZjMnlBbUkzUEVrTytOYWR0VmhOV0RNb0pUWXdUSUZGcC9SN0VtVEV2Z0hNNEZ2cUFFZ1pDR0F0K0ZpZFl6RTZnNWxBN2x5T2RvU01IYVVWbHB4aGtwdEliMDBrRml3bkFXTE5ORTAxZzNWUm9nUWhXUTVnYXRBL281ajFxSEdmNU8xeGI3WU43eGIwR2tmU0lhWG5sZzBJT3loZThDc0NyRGlONnltSG5XK0FmeGd4WEVCVkJSbGhsbVRVMEpYb3VudWlXSmNKQW5PRGFoQmZYaUlqNUZsd0ZLMFR4dmpDclhxVExTUWRrMW9Wem9xbCtGUVMwbG5VSWpUMmxTaVhkcHlWSWtaT3VxNW9ENU9TdUxjNkgyMzlpRnMwdm9TOWU0REIySnFuRDkrTm9BTEFjMlRvRU9RSitwZ3FIaER6WFhJbnVXanFoc3JTNkM4VTVnUUl2R0ZQS0RZT2gxVXFIaVNQckZla0FXbUJwRUtZYkg5cExZeXNCL0xWcVdLNEZQTDFxQllDUS9ZczExRUZrS1NGa0ZFd2hRZ0lDb2RYa3FrSDZyRGExTC9IYVdhZlV0YkZOQWh6b1Bob3BrRlF5OS9VZVhoSnFSRGxkZjBqUktRWktsR3VqdzlBQmdmMG9Kem5vQXhNVHNkZDNRMkdObG9Rb280VVdBQmpBSWFrVTNrakxYUk5SaEJPUHIxdTBqMTUxekpZU3hWMit5cmtvQUdsQXg1QXgxdGdkdnpQVTZERDlGQ1ZCZUFpTk9ocFZBemtRWWhSbGtEdlFvWG5zQUlVaTh0UmEwQlNrVzNTM3VySnJqL1JFd2doVTQ0S1lVSnJTQmJJUjJVR000NXBuUWVBb0FUeW9IQWUwVnpnaTBWU3NORmJ1NkhmOVc5U0VicW5RYUVIc0U0QkZvR3dTS3hCbmtSZ296NElCRTNiWUduQk5ZTFhYYXFieHowRmVUQXZEcG10Q0w2MVhFMlZwRlNyZjBpMkNHanZDL2RlOGtnbUwwUVRTd2NvN2VnWUdNUUJXYlJOVWFpVVF0SFY1VDVFUTJoZ3ZTNEw1ZGJKQzExREx3K05mVEE3RUFyNElwVklhTG9PWHI0b093b1dBd2FWK0ZtSWVPcGMzNnlpbXlycUxSMGRVRm5CNERlZXpheUpSV3JOb1R3ZzBDbmFCc20zbHlRb1R6VXVuU3JzQVBEeHZwZ2xvZ3NnenNwTFBDekZoM2UyY1A5N09xQVJnR2cxQUVmNHVkdFg5aGpPUGpSRENOQkRySlRSMWhWSFI5eVVVRGdBTEZvZUVKU1pXb2dZQW91VllRMExhOGpiMGdFRHFQVEV5SzA0czlJQjlnVGFYcmFDTXFwNi9NME4zQ252akM3ejRLZHBORnhMWi82M3p2SlVFOW1NNmlWTGhqZ0FtQVRaQVVseXZtT2ZjTTM4dHBwZGlxeXJnZXJFa0FqSGVMTEhFblVXME1oYjdZTUJjdXhqd1dkSUlRQTdxakQ2VlMzTUFOUkR1Y3RuU1M0WWZ5SUJKS2R0T0lZZDNqamdGcGlXc2lNa09jdEhNY0ZvcXJSRHRrZ2JXL1FsV3BxUllnQmhiUHlmdVNSMFQ3Z0xtVWhLMmRBRWJpVVRVWjZOWGxIV3F2akpORWJPckJyQVBwZGl6SmlySHFQbnBpZ2o0N09EQ2cxbW1IUWY4ZFgxUk5JaHNIM0IzUTNRVUl1Vklvcm9URm1WeE1JSW5xYklqZXNwQW1ubnZjK3g2R3pWVW9XeE1LYUREWStNMVBxYVQwSWlIYWxTM05EbkVBM0RlMjVab3g2NUZJTmFVNngxV2R6WDA4aDFIUUJyamxuUTNQcHRKLzRYTS95ZlNPbWoydmlaY0xrVTlxRUVudEQ2c2dzb0pZVkdadkI4TktYTXA2d0ZaeUthSm44alRNT0pBNVJxZFBVOEVwN1ZNQzk2eU5MU2F0OXpwMVIvZ1FuSS9wamVKVS91ZHNWUlFTdklYVkJUdHlCTVBMVlFsd0NVK0U5Wlp5bkFFTCtzcVpzdmVwSVF6Q0t6K2d4bGd0RTBtblVMellJdHRSVGJIbUhqS2FBT1Uzbkcrd0djTkhKZEVMT2ttUGtBVVVBSFdFblVWSTY3VU9xaCsxVU1QVzRHTTFyMHZIdlFyZWcxeHovanR6RVZzb29VUk1vVlQxSEVZL0YrZUFRVVllSHhNT0Jlc3dEV0FRcnNHZlVRUTB5QmNkQ3BoYXlWc3JUeUlCck8vNHgraHFzbk5hZkFqb05mRHNvT2xJaE0zQjljSENHNEpJL1k4RUhFdkNKU285aTVmUStIc1JGSW5DcGpxRmQ0eU1mV2cvWTMzTDEwSjVtb1dwZXlRNWY2QkV6Z0lmV084QU5JWVNDRXA1bXVZNko0UXphTFJrb25Qc0RhNEN3bmc0c05nTTlpU0k5THlGTkhUMVVvUDhqVURQQTYvZzJrbFBCRytUbUlWbWVpRS9wdGVCRkpnSVRIRnBpRFQxeTdkd1c4VUFWN3hIcDNJdFRwRkVwcWd5QW9tUFBrYTFFWStPUnFFOEhGSHA5Z25YYXBucVV0QVdVVUNTUWc1N25jak5hNkU3UzFodFJweDNBNy9rcVBnT1BvRFQwbVU2c1pEd2Vyc0xiZ1p5RWs2cEY2MG5kSEx6NElRcVFDVmtDcUFERTgxYnh4ZCtqVHJld0gxc3pnZGFES3F4UFRnZFZoOUlkT3NWRmJhS2NJbHA1YjUxS1Z6UVJjdG1xbnUwRjlnYi81eHlwNjFxMzJDWE9pd1lEYlIvSFoxQU84cnI0UnJUOFpRUFU3Y3V3c0FEYWxBL3JpOUQ5M0UrUG9TWEZJWEZoZFRWQTNManNzVVRRQXV5cS8rV2dwODQ2a0JBUGQvUm4wOXVVRmhDTS8yWjRWbmpXeU1GZVd3SURBWGpBellQY1JOcmwxSlpPZFkxS0t6TW9MRUxCd2Z2VThFRkdZa3hsdm5UVXA5UFBqbmpyTWlLU0ZwVGtRVVBpek5qRzBiTUNQUmNkRUJrcXY4OWpCLzBTZFJqS1dtSThhSWlsbkNIUXNVblFhdDhsUVBIaStBdjRJeFdkVHNQRFl0Z3FwVUF3REgwZngvNHFlcDJpdldXdm90OGJKS05UNEZKMXkvQ3N4eE5zVFNkNStBZUVvdXF0QThiMFc1Rk5sZEtIOHJLOE5tc0NPczdWRXhHMGFsRU1BQmtZUTJlQUZ6VlNidGQvQ3lCbWpmUlFDRndGdk5rWk5LVUJGVDUxc0ttenphcG45Ky92dUMwdzdId0ErTzRPQkg5Ty9iZ2ZCSGcvb0IrUGpsOVl1QjZUUVkrb1lHazFxdXhpZk9TN3IrdGhMLzVabklyTDZIVEFNL1E4NFV5UzlSblM1Y3JRdk5DMisveWN0UzFkT2ZIK2x6V3orZmsrY2dHNWc1N1hNNmVOU0VFV1BldUZ5RkRacDd5bmVnVU9QUE43RytGZnZRWkpyaWZySUY3UHBtQTVTZW9nU2ozdmdTM1g2YitqL2ZOWE9JTWdJYlQrRnpPeWI2czkvek54QUFBQmdtbERRMUJKUTBNZ2NISnZabWxzWlFBQWVKeDlrVTBvUkZFY3hYL2VFR2xFbVlWazhSWll5SlNRTERWRXlwVEdLSU9GOTk2WW9lWTkwM3NqRzB0bHF5eDhiSHd0Ykt6Wld0Z3FwWHlVYkcyc2lJMzAvTy9NMUV3eWJ0M3VyM1B2T2QxN0xtaUhHY3YycW52QWRuSnViQ3lpenlSbTlkb1hOSm9JQWwyRzVXV2pVNk54S283UE82clVlaHRXV1pYUC9Ua2Frb3VlQlZXNjhKQ1ZkWFBDQzhJRGE3bXM0bDNoa0xWa0pJWFBoTHRkdWFEd2c5TE5BcjhxVHVkWlU1a2hOeDRiRmc0SjYra3lOc3ZZV25KdDRYN2g5cVR0U0w0MlUrQ2s0blhGZG1iVkt0NVR2VEM0NkV4UEtWMW1HMk9NRTJVU0haTlZsc21RSXl5ckk0cEhUUFlqRmZ5dGVmK2t1RXh4TFdPSlk0UVZiSXk4SC9VSHY3djFVbjI5aGFSZ0JHcWVmZis5QTJxMzRYdkw5NytPZlAvN0dBSlBjT21VL0N1SE1QZ2grbFpKYXorQXhnMDR2eXBwNWc1Y2JFTExZOVp3amJ3VWtLbWxVdkIyS3QrVWdPWWJxSjhyOUZiYzUrUWU0dExWeERYczdVTm5XckxuSzd5N3JyeTNmODhVKy9zQlJZMXlsWFVDRjdNQUFCQjdhVlJZZEZoTlREcGpiMjB1WVdSdlltVXVlRzF3QUFBQUFBQThQM2h3WVdOclpYUWdZbVZuYVc0OUl1Kzd2eUlnYVdROUlsYzFUVEJOY0VObGFHbEllbkpsVTNwT1ZHTjZhMk01WkNJL1BnbzhlRHA0YlhCdFpYUmhJSGh0Ykc1ek9uZzlJbUZrYjJKbE9tNXpPbTFsZEdFdklpQjRPbmh0Y0hSclBTSllUVkFnUTI5eVpTQTBMalF1TUMxRmVHbDJNaUkrQ2lBOGNtUm1PbEpFUmlCNGJXeHVjenB5WkdZOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6RTVPVGt2TURJdk1qSXRjbVJtTFhONWJuUmhlQzF1Y3lNaVBnb2dJRHh5WkdZNlJHVnpZM0pwY0hScGIyNGdjbVJtT21GaWIzVjBQU0lpQ2lBZ0lDQjRiV3h1Y3pwcGNIUmpSWGgwUFNKb2RIUndPaTh2YVhCMFl5NXZjbWN2YzNSa0wwbHdkR00wZUcxd1JYaDBMekl3TURndE1ESXRNamt2SWdvZ0lDQWdlRzFzYm5NNmVHMXdUVTA5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5dGJTOGlDaUFnSUNCNGJXeHVjenB6ZEVWMmREMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzk0WVhBdk1TNHdMM05VZVhCbEwxSmxjMjkxY21ObFJYWmxiblFqSWdvZ0lDQWdlRzFzYm5NNmNHeDFjejBpYUhSMGNEb3ZMMjV6TG5WelpYQnNkWE11YjNKbkwyeGtaaTk0YlhBdk1TNHdMeUlLSUNBZ0lIaHRiRzV6T2tkSlRWQTlJbWgwZEhBNkx5OTNkM2N1WjJsdGNDNXZjbWN2ZUcxd0x5SUtJQ0FnSUhodGJHNXpPbVJqUFNKb2RIUndPaTh2Y0hWeWJDNXZjbWN2WkdNdlpXeGxiV1Z1ZEhNdk1TNHhMeUlLSUNBZ0lIaHRiRzV6T25ScFptWTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZEdsbVppOHhMakF2SWdvZ0lDQWdlRzFzYm5NNmVHMXdQU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2SWdvZ0lDQjRiWEJOVFRwRWIyTjFiV1Z1ZEVsRVBTSm5hVzF3T21SdlkybGtPbWRwYlhBNk1EbGxNRE00WWpFdFpqSmtPUzAwTW1GbExXSm1OV0V0WVRVeE9EUXlaamt5TlRVeklnb2dJQ0I0YlhCTlRUcEpibk4wWVc1alpVbEVQU0o0YlhBdWFXbGtPak5qWm1GaU9UbGtMVFV5WVdVdE5EbGxZeTA0TUdOa0xUUTNaVGszTnpCbVptRTBOeUlLSUNBZ2VHMXdUVTA2VDNKcFoybHVZV3hFYjJOMWJXVnVkRWxFUFNKNGJYQXVaR2xrT21RNU1qWXdOMlptTFRkak5qa3RORGxsWkMwNU0ySXlMVFU1WmpZM01USmxNVFU1TXlJS0lDQWdSMGxOVURwQlVFazlJakl1TUNJS0lDQWdSMGxOVURwUWJHRjBabTl5YlQwaVYybHVaRzkzY3lJS0lDQWdSMGxOVURwVWFXMWxVM1JoYlhBOUlqRTJOelkxTkRnNU5qSXhPVFkyTWpRaUNpQWdJRWRKVFZBNlZtVnljMmx2YmowaU1pNHhNQzR5TWlJS0lDQWdaR002Um05eWJXRjBQU0pwYldGblpTOXdibWNpQ2lBZ0lIUnBabVk2VDNKcFpXNTBZWFJwYjI0OUlqRWlDaUFnSUhodGNEcERjbVZoZEc5eVZHOXZiRDBpUjBsTlVDQXlMakV3SWo0S0lDQWdQR2x3ZEdORmVIUTZURzlqWVhScGIyNURjbVZoZEdWa1Bnb2dJQ0FnUEhKa1pqcENZV2N2UGdvZ0lDQThMMmx3ZEdORmVIUTZURzlqWVhScGIyNURjbVZoZEdWa1Bnb2dJQ0E4YVhCMFkwVjRkRHBNYjJOaGRHbHZibE5vYjNkdVBnb2dJQ0FnUEhKa1pqcENZV2N2UGdvZ0lDQThMMmx3ZEdORmVIUTZURzlqWVhScGIyNVRhRzkzYmo0S0lDQWdQR2x3ZEdORmVIUTZRWEowZDI5eWEwOXlUMkpxWldOMFBnb2dJQ0FnUEhKa1pqcENZV2N2UGdvZ0lDQThMMmx3ZEdORmVIUTZRWEowZDI5eWEwOXlUMkpxWldOMFBnb2dJQ0E4YVhCMFkwVjRkRHBTWldkcGMzUnllVWxrUGdvZ0lDQWdQSEprWmpwQ1lXY3ZQZ29nSUNBOEwybHdkR05GZUhRNlVtVm5hWE4wY25sSlpENEtJQ0FnUEhodGNFMU5Pa2hwYzNSdmNuaytDaUFnSUNBOGNtUm1PbE5sY1Q0S0lDQWdJQ0E4Y21SbU9teHBDaUFnSUNBZ0lITjBSWFowT21GamRHbHZiajBpYzJGMlpXUWlDaUFnSUNBZ0lITjBSWFowT21Ob1lXNW5aV1E5SWk4aUNpQWdJQ0FnSUhOMFJYWjBPbWx1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2WW1NeVpHTTNOelV0WVRkaU1pMDBNVFprTFdJellUTXRZemxoWkROa01qUTVOemhrSWdvZ0lDQWdJQ0J6ZEVWMmREcHpiMlowZDJGeVpVRm5aVzUwUFNKSGFXMXdJREl1TVRBZ0tGZHBibVJ2ZDNNcElnb2dJQ0FnSUNCemRFVjJkRHAzYUdWdVBTSXlNREl6TFRBeUxURTJWREU1T2pVMU9qQXpJaTgrQ2lBZ0lDQWdQSEprWmpwc2FRb2dJQ0FnSUNCemRFVjJkRHBoWTNScGIyNDlJbk5oZG1Wa0lnb2dJQ0FnSUNCemRFVjJkRHBqYUdGdVoyVmtQU0l2SWdvZ0lDQWdJQ0J6ZEVWMmREcHBibk4wWVc1alpVbEVQU0o0YlhBdWFXbGtPalppTVRNM01qTTRMVEEzT1RjdE5HWmpZUzFoTjJZMUxXSXdOVGxqTnpKaVpXUTNOaUlLSUNBZ0lDQWdjM1JGZG5RNmMyOW1kSGRoY21WQloyVnVkRDBpUjJsdGNDQXlMakV3SUNoWGFXNWtiM2R6S1NJS0lDQWdJQ0FnYzNSRmRuUTZkMmhsYmowaU1qQXlNeTB3TWkweE5sUXlNRG93TWpvME1pSXZQZ29nSUNBZ1BDOXlaR1k2VTJWeFBnb2dJQ0E4TDNodGNFMU5Pa2hwYzNSdmNuaytDaUFnSUR4d2JIVnpPa2x0WVdkbFUzVndjR3hwWlhJK0NpQWdJQ0E4Y21SbU9sTmxjUzgrQ2lBZ0lEd3ZjR3gxY3pwSmJXRm5aVk4xY0hCc2FXVnlQZ29nSUNBOGNHeDFjenBKYldGblpVTnlaV0YwYjNJK0NpQWdJQ0E4Y21SbU9sTmxjUzgrQ2lBZ0lEd3ZjR3gxY3pwSmJXRm5aVU55WldGMGIzSStDaUFnSUR4d2JIVnpPa052Y0hseWFXZG9kRTkzYm1WeVBnb2dJQ0FnUEhKa1pqcFRaWEV2UGdvZ0lDQThMM0JzZFhNNlEyOXdlWEpwWjJoMFQzZHVaWEkrQ2lBZ0lEeHdiSFZ6T2t4cFkyVnVjMjl5UGdvZ0lDQWdQSEprWmpwVFpYRXZQZ29nSUNBOEwzQnNkWE02VEdsalpXNXpiM0krQ2lBZ1BDOXlaR1k2UkdWelkzSnBjSFJwYjI0K0NpQThMM0prWmpwU1JFWStDand2ZURwNGJYQnRaWFJoUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDancvZUhCaFkydGxkQ0JsYm1ROUluY2lQejdNOXBQYkFBQUFCbUpMUjBRQUFBQUFBQUQ1UTd0L0FBQUFDWEJJV1hNQUFCSCtBQUFSL2dHVGovekRBQUFBQjNSSlRVVUg1d0lRREFJcURkdlhWUUFBSE5KSlJFRlVlTnJ0blh1WVhXVjk3ei9mZCszSmJSSWhnRndDSklDZ0JCVklzaWRVU20yOVBQWFVXckhXdzhIVGkraFJUeTlnTW50UGdHcHBuNHF0UUxMM2pnR3R4Nk05VDYyV1dzL3hVcFVlejZsYWIwZ21PNENvUmNJMUNRbUVXeEp5bjluci9aNC8xcG93U1NhejE1NUxhSjh6ditlWlBEUFphNi8xcnZmOXZyLzc3L2VLY1ZKUGIzVVcwZzNnNjFIWTRpUXNiZDV5ODlhRG4xZjdGbUgvUU5KTTRIZXhiKyt2MXlMQWt0N3EzQ0MrSi9FcTBDMDJIMTVYWDdVSFlQRTExOHhJcGszL0IreGZWd2pmd2I2cXY3YnFjYVpvaWthaE1ONGJHQ2ZBY1NCQ1lBWXhuVGIwMlNXOUZXRlB0elFEa1BBY3lScjZYQ0pCbW8wQjZBWWZISStUcmtUU0xDUWhkU0dWcHBacmlpWWQwS0FNMXkvOE96THVHZE5uVXpSRnh4clFVelJGVTRDZW9pbjZOd3ZveURDbEdIVHc3N1dOdWc5VEtUd3RHWFk5aC96dTRYLzcwTSttVkpNcEtxNEFkMExsNjFhSTFNZUg2RE9OandkbWc5NEh2RTNTVGp2K1B2RGtDL2ZYUXVCV3BJRGRBSDk5R0hDUEEzMVNjQ3J3WmVOUEEzc0JiTTBNUVIreHZVZ2gzR2Y3Smh5ZkJFWE16aFEvSGx0Njd0NWJhMU5BbjZMT0FiMWtXV1Y2U0hnTjZKMUlsMkNmcU16ekVHelBCbVlCRWVrNVFUcnNxMTIyVDhoL2YxN1N2dUhQdDMwaWtBQjdKZTBleG9sbCszaGdHakFnNlhrZ05SaVRJclpqOXdOZmtNUDMraHNyOTA4dDV4UzFCWFM1dDA4aE1BKzdGK2txdy9IWXlZdXNDZ3lOTzBwNjN2RDVZSzh5Yk95dlQzSHMwYWluVWhWU1lzZVE2WWdXVnN5WlVGelgrUGM5ZjIxOXUwR2NDZnlsNGNvY3lKYllhTFJSc0VkMk9rbGppL2xtMFhCZDMxSXdkR1BQQnhia1hQd1BMSjFtZkMzdzhFUU9Za2x2VmFDWGdHY1Z1TnhkOG5OMzFlc0RvOTV6eFFwNXNIV2NGR1lXdVNkNDUvcEdmZCs0M3FOU1BVbndNc044N0pPeWQySWFLQ0QyRzNZQTI4cVY2cU9rOGVIbXh4cTdPMUpGbC9kMk95UnpzUFZpZ1ZsaVlGUkFseXQ5M1lZUFlsOEpKSkoyQXA4UmZOMzJvekY2bjQ0MDNpYUNFcFdTWHpJc2xiMHV0dEx2U0JyaXpiS1lLV2tCOEdiczl3SW4ybjZiUXRpOXBGcTlabjJ0OXZ6RVRWTG9CdjlYNEkyMGVWZWhQU20rSG5od1ZJUzJXak9UVXRmVmp2R3lBZ0p1bDFFRHVITXM0eS8zVmkrUWVLdmhOY0Q1d0duQXpGek5HdzYrRnJBTDJFUUlQeTczVnI0TmZMWFpxTzhvTkUrbHJuY1EwM2NndWw1RUI4ZDNTNk12cHQ4RWVpY21BVDJMdlFMcGY2NnRyZG8xV2FPNlpNVzFwV2hmYnZzdkRLY3JTWDR3bUxiKzZjZXJHNGMvYzJOUHBYbzM2RjVnTmZnVThHOEtmUXY0N0FRS2lybkFid0NYdFo5U1BVelUvZ0tiNUNUZ0RjQ3Z0T1BPQ25xTUdQZDJwRlpjYzdVOGJmcVptUGNDdjJNNEpRZXgya2pydWNCY3NsU0V5NEgzTHFsVVZ3ci9jN05lUCtvWWxpenZtd2ErRlBnUFJhVCtwSkY5MTFIZGRqM0xsayszOVc0eWc2OGw4UW1qZitpZlJERDM5RjJyYUMvRXZzSDJlZGpUZ0tkbXpKaHhZS1RyMTlWcnV4M2pWOEdyZ2YyT25wMkU4SzZlM3I3akowVGRXRjZWMEVtU3ppMm8yVzkyMExOdGNSL0NLWFk4clpqNW9XMjJOeFpYa1NvejNEWHR6Wmd2QXRjRForY0dleWVxUUo3T3dDOEtQb2ZVS1BkV3p5djNWcElSUjVnd3gvWVpMeXFZTTA1eC8xRUJyUkJlTG54eHpzcC9idlBWb2NTaFNiVDBTamJ2dG4xUk5vYWszNDRmWFh2VFRVZlZTWnVyNi92QTM1RDA4OXd6Y2k0aG5EY2g0MGtraXdXR0U5clBwWENNOXhJOTJBWnd3ZmFabVI1YlFIKzJONVR3OHdVM1lMZWs5NEkrQXl5RmNZdC9BWE13NzBOOEN2VGFKYjE5UjJCR1pvSE1XUyt5UGJnSGVDU01Zb204UE0rUXMwSjRLTWIwMGNrZVVYUTZYL2kzY29BOExYeGphRTI3disycVJ6WVoveHlJMkxORlBHY0N2U2t2ejEySGJTMDMwRDJJVVkxazJTV2tzNUJlVW1DVHBJYjcxelpXdHpXOFgxT3BURlBRQjRBYnlWU01pZllxL1FyaU5zbS9lY2dtdXZxUHBDU2NpVGp0UlFiMEk4QzJvd05hSEplTEVFdnNzcjF2OHNjVWZwa3N5QUxTUHlPdFc5djRpN1p5T1kzZUo3UXpOOW9Tdyt3SjBza0M5dUtDc3ZwWndjOWxlM1NsV0RPd1gxR1FldzVpMzlmdW9rWExlc09nd3UrQ2x3UEhUK0lDTFFSdUtsZXF2M2J3ZjZaTlQyelBNM1MveUlEZUFPd0tiYXhHNWV3bkpualMvWk1TRndLSlFqQWgzSnRhaGZSMUpZZUV5Zzl4ODQwTHo0UnVwRmU1d0tzTHRpSTl1YTVlSC9YaWtDU3pCQzhyT0ozUGd4OGUzUk5WVVpJa1M0QnJnSk1uZTRueURmUHljNityS3Z1UHBNdlJaK1Qyem90Sjl3TjdTMHY3cmwwS1B2MHdMaFJqakl1TWo2bVNiM3MrdHJEM0szcGJGMnFONFRZbHpNV1g5SzI0L0VoZ2E4QnArdDMrUnEyUWoxV081eUxOSzdJVGdRM1lld3E4NC9HNW9WWmdRL0d3MEJOdFBDYXprYTYwL2VwanNFUlBZZDhVMENjZnVua29BQk83a1JhK3lKazJnOEFteEVESjloK0QzOENSSm5jWFpnYkhLQko0eWZYWGhuUXd6c3BVeDdCUDBvNWQrMUlYVy9nWDJKM3RtY0I3Ykg3blNFTlh1MVJLM2dBOFVJd2YrUUtoMlM0R3ZvZG9vNVl0NmUwVGFKN3d5UzZ5U2N4OVJrZDFsNVY3cXdMT3gvNVAyRVdsVWdRZXlqbmF6dHdEY2xhdVRveW1ObXpHL0drbzZlLzZWOVlHaG8xekRuQUdzSzhBVmdUTUtPaHhpY0NCZ3ZqYmdmMUVzMTVQUzRqWk10MkhmZEhEVkk1akF1aFMwbFZLQnc4TTZaVXQwT0R0MTd5UEN6OWVHL0g2SjU5K1dsZlVHclAyRGc2OFFtZ1FEb2JqbFJ0eHBTTW5UbEVpS1M1Z3d5SVhBSXF5UEpRSDNXb2RHQjJqRHBpTFVYc2RYeExHL2RqeDZNTlRBcndKT0wzZ0MrM0dyb1AvRm1sSE5zK0VITlFYSUMzSGZqMHcvVEFzUEdiNDR5QytjZ2lZTTlvRy9PRmgzem5hTzUwQmZNWjJFWDM3eDhDZkFjOFZZQ2VEdVE1TmlUUzlMWXJ2REZmcGhLSndEOUtiaTFqNEUwR3RURkVkcmdlVGhKRTNjaysxTDd6MTVsdm1HZjVVMHBXU0huWDBybnp5OXdOM3hCaWJIZ1pvQ1JTOVY5TFdJdU5adEt3NlhkSzVSUUJ0ZTd2TlpvZDJVVk9WRUJjVmtqb3g3Z0VldFVlckEvSXNGSDUxRk13Znh2SDhDZkJOelNQRDZNOHRxVlMyQUQ4Qy82R2thekR6OG9sN0VQdURNbDllMTZnZDhhQm1iZFhlY3FXeXZ0M0RtL1c2ZTZwOWJ5eHMzNWdmWXY4TGdkMEZycVdacFNwVFd0ZW9meFg0NmdqR3hudUM5RVpQZ3JMZlUrM3J0amtSbUNXNUZDMm4rdyswa0lZNGRKZUpzNjc0NzU4T1FQcUxmMzZIUFBpajBzQ0JmY2NwOVR5a1YwWDc5NERYWTNjUndreWt2ZGhJT21CelI3TlIrOHk0L0MzQnA5cGVVTkNhM1NycDhlYXExVzJrbVdZS1gxekV5RVJzRlR6UkhDWFpLdUtYQmxGTWY1VzJZdjl0OHlnNUllc3pZM1pYdWRKWHc5NEEzSWkwSC90RHpYcnRtKzNBV2dpajRnSmlJYnNzSW41QzBKNW1yYk5rcVZJYkw4ZUUwZEsrRmNjYkxnRXVzNzFRNG1SZ0pxaVVNV0lOMmo0dmM5WEcyWmplbVhCNXVWTGRmMkRudDVUcmQzT1JUck85QVB1NFhJenRGSHplOXRsQU9STXc0eCs3MERuQWlRWDBQVXQ2MGpFK1UyQkpUMFU2bFdKZWt3Y3dPOXFNOFdTazZRVmY2VG15OU53Mm5IUlZxMXlwL3FQZ1NkdDdUWExmUkdGQTlxV21rTXEzQTlqYXJOVTZ6aE1xbGF0OWt0RHdTVjZYM1doQ3NxWjYrcTd0QWw5bXU4K3doTXpLbis3MkcrM1MvTWZEMVpBaDdpYXBsWWxrZjlUMlAwcTY4VWhKVUEzRHhWSmljMWVqWG1pU0ZMVFE5cHdDVjZZb2JHWHd3TTRDSzdyUVprN0I1ZitaNVhZQTdDNmEzU1k0MCtic2NxVzZxVmtmSFNqTmVpM04xSThKWkdqTHEzT3M4RW9jaXpDYlo3Q2ZHcE10SnJnTWM5NXc0NituMmhmdGVDbTRhM3hnN3BzT2ZydnRHdmFwT1NnSGdlMlM5Z0lIa0FaemZUQnhGZzRlQ2d6c0JRWU9GVU1hRk94RmV0cjRud1IvSTlpVXhwZ2tTb1o1WjN4cFQ3VTZlTWltRkxMQ25rdjdWdHh4NTZxVm8vcTNGeTlibmtYejdDTGNiNy9UOUlIbXJXc0dDdWg2aXd0bG8wbjdrVGEyQzZNYldrVzVqdTI1bU5XSVB5ajNWdTl0Tm1wN09ZWVVBK2ZLSEZmdzhxMFV0SFZHNElUNmMvRHJEbWZJdzVqMm1OSkR5eDljSVEvd1Z0a043Rk1BSS8ycnBPOEJhNEdIU2VQVHhyc2NDQUZOSndrVjB2aCtoWkJJK2xKTTQ3ZUhOcHJFQVVMWVFZeWI3TGl4V1h2Qmw3eTR0emM1ekcxM0ZlaXFJeFkxaEwycHRCVDQyZWpjT1pubExOKzZWSUQxN1JiOHBOMWxpei9RTzBNaFhPd1lpNGpjWGNEalNnZmIrT0gxcktSV1lTVXpDMXg5RWZISmNxWHkrV2E5L3NpeEFyUkNPTmN4RnZGdVJQQm1SNTRkSzRmZWl6bUFEalV0Y2wxbjdCejZBQzhUdnM0Wm1GTXBmTTM0RnNNOXpWVWpsMHN0WFhIZFJpdmZSaUc1UDBZK2QzZnRsc0V4T3RwVEhTbDI5MEQ3Z29SY3Z6K3ppQjBoaGUya3JZZmFXNW1ja1B0cmk5QTJ4N2lsK2JFMWJqUE9weDNqYzNRVzdwNEhmQWowaG5KdlpZMkkzMWpYV0gxZ3NnR2QyMGN6Q3lFSGJWaS91clp2akJ5YWE0Q1REdk0zUitEdGtwYm5ISzhqdXV5cTkydS8vSjhkZlFGZ1FsZ2J6WjhGaForc1czV0xqNjVpRWwvNDBGMk9KRGs0aTNNQ2FiZmhZNEl2SDI0SEdGb3VsUjR0Y0pNemMwQVhjQmo1S2ZDMmRoY21wZEk4c3F3OXRiOG5XNDJmYk8rN0Q5dlRHTy9DZEpxTU5SMTRMZEpDazN5dDNGdTltY0FqelZwdFVxcVBmcUgzQXpOU2NZNWR5QVc4RC9QUVdKOVY2cSt0ZkxTbnQrOHg2UVVvOWRkcUxsY3FpNFhHOUlMN1Qzakp5VEt2TWN4RTJpV0YyNXVyYnI3dktEdFhPUkI5S0VkVTFOaDhGUkhZMkY5YnRYNXB0WG9JZVBwWDN0SldPaS91clNaNWVkY0pCWUFmd1Q5bGNMQXRoM09NcjhpamF1MG9sZlNJQm1OYmtadW02YURSTnhUQ2YzU01uVXBUa2VWK3ZBdnhpOEJONVdyMWpqVDZtWHNhOVFrTnBxVXFuZVFzdmJTSXVyVWIrWUV4QXhwZ1hXUFZoTDZBZ3M1d2pHZmxRTjF1dDc0OUNrYzkrT3dvSDQrejZLVEV2a0FjVjNsWGY2M3pnaytKTG9Xd3dIWjNBZmRhaXZueHV0dHVHM1djRjE1ZERRcmhGWTZ4Z0xUVGdNMGp6VFh0MVlCMXRWb3NWNm8vZEZhZTljdmp3TUQ1bVA4R2ZEV1JQbFd1Vk85czFtc1RsMTBaa2xPd2k2U1hHbnU3WWN1NEFMMzR5aXVEaDNuNzcvbkNGOFlGY05zbkQzRTQyODhRUWlIand6SE96OTFRcmRocTdRb3dKZ2t4eEpZWFhYR0Y4c1FodWhMby83dEM3elhUOXZtRjFaczAzdHQya3J1WWJidFFYclhFM3VqWUNZZmFBbnhDOEFvUHBkNk9qYVlEVndBOXdPZkt2ZFZQTkJ1MUo4ZUw1U1dWaW15Zm5qc0dpdWh3VzVOazhPa3hBN3FuVXYwc1l1NmhicnVxYlJiWWhTcWREelhzbHZXRm1OV21kUU1PMHNhWlo4eHJ5MjNLZmRlZGpOTnpNNXp3SEdKekxCalRQV3d6elFLdTdxbFczekpjWHpWU1QzWEZSanZlMEt6WHRvK0NxTm5BdVlYU084MVRFcHZiMjRNNlFkTHBoY0xvc0t0ZHl1aGhQdU5XejdMcTE5VVZGdHF1VXNoM1BpcWREVlFSNTVjcmxldUF4NHBHQWtlMEhWQ1NWZVF6cDRqRWs5VGZ2K3JXTVQrdkJQeDJMdVpING5McTFHMlhKaWdKeVhUSE5EaGorODk4ZDFsdisrUXlwNjhEbjJPUXpVTVNEelJyWStvUlVRSmVqWG4xNFZBSlNYZ3NwcjRaR0JIUVMzb3JrajBQQ3BRVFNSRFlFS0tLQkZST081Z2IwUWJQRXBzWlREZDE4c0xyUGxiYlc2NVVhbEl5eStMOWVmQnFQRFFMK0MxUU4vQUh3S2F4M3NqUTVSZ1hVQ3duYUJEcjIrUFNib0NmU2RwdytBOVpGbFhISExJbEVjVXdFMU50NzdGMHhZcnpMSzZ5T1VIU2dLVCthSSsxdVhrRXRvM3dQZzg2YXk4d09EcEtkUmJTM0dKUDh2MnBSdzkrTEw2NlQ0UndlcEc2eEV6QXNLRTFzR3QzcHkvZHJOZDNPNllmbHJoeFBBQThWTERvVFVnM2xDdDlZK2Y2MGh5a0N3dGV2UWQ1WEdNdkFiK2pJL01CVXR1L2llakZkT1MyKzNGdFpWcnVXekV3cE1LWW95YzN2ZWJhdnRKZ3l0Sm9YMGYwNi9OSmZFem85dldyVmg0WTIveHBMK2JUa3I1eWlOZEVnaEQyMk1rem8zdzNaQ1g4N1FNcW1RZkk5OUpHTFFvbFR5TnlIclJYQmZJYXdudnUvZVJmajBua05odjFQVXQ2SzdkSnVoKzBIUHg2eGxPSm5UVVdlanZ3TGVEdngzUUxhUzcyb29LWFAyV3pmVnlBWGxldmplaE9LMWNxaXdNaEhTbDdzZHpYVndMTlNleVhJczZONkV6Z0pSa2dRM1JNejhzVHppVzBZT21LYXhmYTNvZUlBYWFsMFNjckpLOGNUTk8zQ0M1eTlPbEFTZEpPdzAwaDZPNXh2Rk8wMk5pL2F1WDZ6aWVmTHNFcmk0bFNQeWY4Y0dpbkdBWm1TcnpjcUgwVm03VGZNVDR3bmdWZDM2Z1BMRjdXKzgwa1NlNHpYSW0wQXZ1bGpEM1o3RGloeXhmMUx2L21QWTNWSFlHdHAxSlZiZ3llVUdpSGlyVVMrOGZMb1F0N0RwYjJyZWl5ZVpudDN3Sy9QVW9MSE9Oc2hpZk5aNEU0RGZrYzdmaGFvVHNscFpsSWRSQk1kMHluWVpmeW5PVlUwbWJEallMUHI3M2w1dkU2K01lVVdDVzdHK21WQmJQaEhrUGhpZjQydmVBazVnQUxDOVlRYnBjOTdsWm1kMytzRVlFdFMzc3JhNkw1THVKRHdPdHlwdFBwM0NUR0Z5YUVjNENPbUlRSkFpOGdxMUlwOG9VNzZUQ1FkcVNYbzlwM0hJVERuUEtLZHF2N0VDOUJTR1lEdndHdVlyOXlTT0hMUlJNY2xwdy9UR3lWNHRHTUZPa0FXZXZkTzVFK2JmaCtjOVhLUWNaUHM4clZhMC9RSVZ6SklBOWlQNy91S01hbTRXd1ZLVFNWTUR4SWxvUi9kTTlOcFNvVTVwSVpta1hjbGcraEloVWF4YWkvVVI4RW11Vks5ZDJDS3d6dkJ5NkdEcXAyTWpvVjZZeHlwWEozUng0UE9XRC9Rc0dyOTRJZllwd1ZVaVZKZnkwZHJpZmJqdUZNKzJBZ1FBN2huZGczNU9LTFBMZjJwOEJQQkkvYmZoNnBKZFJsZkM3Mk84bmNkN3VCNzJNclAvaG5QMmdYc0JscGc4eUdpSC9hWExWeSswUXNvdTFaVW5oUENMenBDQTFWNGZIWUdyd2VSazU4RVZvczAxMHNYMTRQWXZhMXNmREJQbDFaYWtFaEUwU2oxQkNPbFpyMTJnN2dVK1hleWwxSXZ3MzhGN0pjNzZJMEUrazR1N09TUER2T0NDRlo0bUx4c1djd1R6VEhHYVVzT2NhM1dTTUVtVjhRa1pHc2t2b2lzZ2JuZzBqZkY2eTA5RE1jZDBiQ0FDSWxsRExGbWZnTE1jWTNZYytWOUZTVSt0UnFQU01JRVZLQ1drUWZTT3dEL1JPZlAxQ3k0NFdPUjFyV0lZUkhjNWZVczBmUml5K1NGTm91bWRrTlBBSnhjSFFHUlFLK01EOEZiUFFORXBSaTMwT0h2dmVlYWpYRUdMMiswV2dMaEdhamZsKzV0L29vMGc4bFBtTDdWUVZWa0VUUXJjd3VLancrd2FtWStRVXZmNHdzeTVEeGN1aTE1QjJTRHZ2c1JOdW41eTg4SUh5N1F6aEpzTm5tb3dvOHNXN2x5aEVuc2R5M0lzdDF6c1Z6Q094WnQ3cnhGTWVHVWtsYjBCRTk1b1MwMFdoRTcwblA4dVZkWk9IcFVHQ2xua0ZzWEZlcnQ5bU02cEswQkt5MmFMUDJBUS9pV0poRGxTdlZFdzIvSk9tblVDeWhwOW1vN1ZwMDlUVmZTNlpQTHlGOThxREVMYUpBcURQMVd5R1pqejIzNE9VUFdocDNxN2xTeS9IWGdnOU5iREZLWmIwcmhQRGh2RUpYU2dkL0VNUDA3NS9NOU5ZZHRZL0Vkdkk0YTZSOTBEZzRab2NUU2RwcnV4RWRQNXM1VlY0US96RmxnQU1EdTBiR1U1aXZMTjlBQlRqUFZzZFlJTi9BM1lZTGloaUV4cHV3bjJrVzRMUVpaKzViYUxzUGRBWGlIOHZWNnZYTldtMXprZS9lYzl1dExsZXFhNUdlQW9vQU9nTDdJSGFrRHRpK3NLQytIblBWZGR6cVZ1bnVlbjNuVWR4Mnc0K0h3RWhGZmNNQnVpTHF5cklybllhMGRTeXJJNHkwZTMydDFwRnhaZWs4aWdVL0ltZ3J1SDBDdWpoWjBqd1g4M0JzQU5yMllsNWE2VXNpZnAzdEc0Qkx5WHJsdlIzY1dsS3AvTW42ZW4xendWbEtPcWk5M0c5N0oybHhkZVA4RDE0VE5LQlhGUzFvc1AzSStzeUlIUmRORnVlY1NaNUhiWHRuS0pXMmMyeEpZOWdHRjFDb1g0UmFDdHJrMW1DUjh2cUxLSkpQbmgydmU1L002RjZUYXQvMGlLK1M5Q25nbHc2NlhlMFptQ3VGUHJ1azBuZHBUNlhhL21TR1VuSXBXUkpaRVhyYTl0Ym14eHFGT1hUM3ZxUTc1OUJGMXVKSnZYRFExUGc0OUNpSWlNTTRkRWdMRm1NdTZldExITk16eU9ySG9wTGszcnR1dm5sZ2N2SHI0U0EySFlic2wvUXU2d3BKT01zeEZxZ2g5QUU3UHJaK3pacjIzQ1Jva1YyZ0x0UGVqL1NZeFlqenRHalpjcFdTMHNtR1B1RDM4ME9hRHFkcHdHdUZ2Mmo0ZExsU3ZWM3dSTFQzQlpSYXhsWVNZQmI0RXFmcGRRVWxrb0VIaEI3cmlGT0cwanlrVTF3TU45c3N0azBxb0RIUDU2MWhaWmlqa016TTlLZ1JkU1VONVRVSGU1YXozc1N6SlExZy8yRHkyWEdZZ1RrK2x6aHBWbXJWaWQ2ZHZLUm93MjVKdXh6ZHRvYXczTHRzbHRCRnBram5KVzBIYlhHYXhpTzVjalVCWFd4elBmWmJHVDNKSjVDVldOMEF2TlB3UFVrYkRNL21OdDJKaGxlRGZwWGlMWGYzQXQvcE5KWFU2TldNdlBGRzJqQmJaVDA5cVlBMjJwRDNhanZCMFM5VDBGa2NwUzNURUpoN3JyMU9qdkY4N0xka3FteDQxdml1eVFaMFVKZ3Y4UXFiZ0xUSGRtZkZuOWtSRWFjWEZJL1BnUjV1djBySlM0TTR3eTV3VC9rcDIwK3VIMG1rVzkwUzczTFdOMXVGOXppY2wvOEFCOFBKMHp0VXgweDJDTk9YTzE4VHpvM1JSU0tFQnpBYm1vMkpLU2dJUjdkODRnUEF2ZGxMK2Z4QXVMeW50enFxamhsalBKbm9sZGdMa0xEOUpXRGpaSUs1M0Z1WkNielo5c0xNdHRQRHpqci9kTEpzODhrNGRIdmJNWVF0ZHF1dGVKVEMyUzZXeG1uUVpzYzRjcGZSNkQyZ3I1RmxESTQxNkRDRDRrMFNoNy9GUG1CTnMxN3JxTm45b3F2L0tJbFo0NThpYlNEMm9QWlY4K01HOU4yTnhnSHcvOGdqZ2wzR2Y0VDBqcDVLZGM3UkdZMHZRL1NRNWJadFFIeEdJWm0waXVLZVNyVmJJYndWMFF2TWtMVEgwWCtUUjhhS2JZaEtYNEtZVHhiVmJJZlNHR044WUgxamRWdWJRRUZuRjJ3QzNnSTJPbWpFWXllYXEydHBUT04zRUI5RjJzS3hveGJ3OTRZdmRQckZaTnFNbCthbmxDV0ZBRzBtckoxQ20xT3c5TCt4YnplOEZ6Z1JlYlhRcTNxcWZWOTM5S09PY1g4WXFnbk1ldHB1QWU1RE9zblNyYVJ4RzYzMHBKN2xsWWsxQUVPWUlZVUY0RGM3TzlidHBXU05hTDdpMXVDWE92U1ZUcE4wRHRMTWR2NWlRYlM5dHEyUnVXeDV5VmxDVWpHUkt6MTRkNjErMUkyL2ZuV3RWZjdBTloramEzb0o2VU5rM0c5eXdXeC93L2pQMWpmcUhlZG1LNFF6OHI0bVJXZ0hlUE14QVhSL3JiWm5hYVg2bDVMbTJMNENjN3h4QmZFT2ljZENFdlpvdUJpMEZiTXdiMVNNYjVGNEU1clljeGlOWkpobFBEOWYySkNEK1d1TzhjT2xHVE02QzU5bWVTeEZEeGw2WHVaZkMzRHlPZm5ZdXRwZnFyMk82WVB0cm11dXVUVmQydHY3TnpFa1QrZWdYam81RnJZR3NMK0M5Q2RkcmNHT0pjS1NEM3hBU0tjVlBCUXBBaHN4TzQ4Sm9BRlN0Q214cnhYYWh2ZzkyOGVUbGFTZlpVYmdhUjVpMkp3M2lZMmxoOW82eGZ3dzBOc2p2aVZHTnE2NzZhYU9IaHVrd3RFOHBDMVdlMjRTU3FXVGdET0wxQkFpN1NhNlVOaTZ2OUZvbFN2Vk95d2VrZlRIMkpmVCtaRnRveG1BTzdBL0RudzhUYld0dVdaTngwc1l1cnBDWHVGZHBPMVhOUHpyK3RYMWdXTUc2UFgxVlFZZVg3cThjbjBNK3JyRU8yVXVNY3lWbEhDTUQ2L1B0MHdVN0RCdTR2ajNpSDlwMWpvL09yaGM2WlBOR2VCaXgwN1k5eGNKejlvK1ZkSXBoVUFVNHliUzRqN1lacjNXQW41YTd1djdmZUNmUU84bk80NWlEcDJuaFpMUDZRN2dSNFkxZ245cDFtdUQ0OWdWMDJXZlUvRE1sVUdoSDA0a3B5dWM0TisvdW40QStOYWxLNVovZXpBbUo5aGVRUFJMRUxOQTd3UGVKbW1YSGEveEMxRWZBUXRCdHlJRjdNL1k4ZXU4RVBnNER2UkpaZVgzMzdUanAzTy9KN1ptaHFDUDJGNmtFTzYzZlJPT1QyYXVCdTJPYWR3WVd2dWY3Yi90cjhiY3V5UHpuM05xN281czA3cVdnUFFqUWhpVm0xelMxNmVJWnR2ZUJiVHpEa1NrSHpYWE5Ebyt5cm01YXRVdTRITTlsZW8za043c3JQTitHWmpQVVBYUTZBYmY4L240bXNEL0FmL2Y5Zlg2dUxQZHBEQXQ5ejl2cEgyQWE0ZnczUzhLb0lmb3pwV3JUWlorK1d6bU5xdDJTL3IxM0Job1Jldk81cXFWbTRaNUl2WmFHcXJIZW1CYXduZStmMHVXODFxdVZFK1F0QThicEMyWTc2NnIxL1lBWEx5OE1uT2F3dlo4bG5ZS2Z0UmZxMCtvQ3pEVC8zV1hNbFdxdmJjNHhrZmNacEhXcmxybHBTdXVYWS85ZnJkSkxaQmsyK1B5WEt6TFdqSjh2cng4K2YreWtwZExuRWZXeHV4TXNqenNPVGxqMlUrV252a01zQlY0SFBNZ2pnODBWemRhRXphbjBoN0RYMkhmM3M3TmFIc0E4ZFNMQ3VoUlhYODJESXVNWGRKYlVUeFV2OU5BbWtYelJuQWJIbkljbTQ0RXc4UmFsMEF6SzU5Nkl2K1pNT3BmZWN0VHdMRktsODNkZTZ2M0EvY3RYdDc3a3lDVmtLYVJIZnlVNUxpS2xsSmxIb3dCeStuNlJtUEN6WnorbGJjTTBxYTc2MlRTaTNzMjh4Uk5PTjI5dW1HeXVyekIveC9mUDB4QllJcW1BRDJpT2pybXp6VzFERlAwYndiUWtxUEVMakNHZ1lOSFRBQnJHM1hMUGlCNzZBREZQWWNjVTJiU0lhK0c4RDR4cko3T1RtM3Z4eloySzc5MmlxWm9WUHAvc1J5MEFyNkRINGdBQUFBQVNVVk9SSzVDWUlJPSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIkZJRE9fMl8wIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiI0Yjg5ZjQwMTQ2NGU0NzQ1YTUyMDQ4NmRkZmM1ZDgwZSIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOnRydWUsInVwIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZX0sIm1heE1zZ1NpemUiOjEyMDAsInBpblV2QXV0aFByb3RvY29scyI6WzFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjIwLCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjEyOCwidHJhbnNwb3J0cyI6WyJ1c2IiXX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTAxLTI0IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiSUlTVCBTQVNlIFVTQiBLZXkgMSwgSUlTVCBGSURPMiBBdXRoZW50aWNhdG9yIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNTAxMjQwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wMS0yNCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTA1LTI3In0seyJhYWd1aWQiOiIyY2QyZjcyNy1mNmNhLTQ0ZGEtOGY0OC01YzJlNWRhMDAwYTIiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjJjZDJmNzI3LWY2Y2EtNDRkYS04ZjQ4LTVjMmU1ZGEwMDBhMiIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJOaXRyb2tleSAzIEFNIn0sImRlc2NyaXB0aW9uIjoiTml0cm9rZXkgMyBBTSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX0seyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbImVkMjU1MTlfZWRkc2Ffc2hhNTEyX3JhdyIsInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIiwiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbInNvZnR3YXJlIl0sImlzS2V5UmVzdHJpY3RlZCI6dHJ1ZSwiaXNGcmVzaFVzZXJWZXJpZmljYXRpb25SZXF1aXJlZCI6dHJ1ZSwibWF0Y2hlclByb3RlY3Rpb24iOlsic29mdHdhcmUiXSwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRGlUQ0NBWEdnQXdJQkFnSURDS1pDTUEwR0NTcUdTSWIzRFFFQkN3VUFNRFl4Q3pBSkJnTlZCQVlUQWtSRk1SWXdGQVlEVlFRS0RBMU9hWFJ5YjJ0bGVTQkhiV0pJTVE4d0RRWURWUVFEREFaU2IyOTBJRE13SUJjTk1qSXdPREEwTURnME56RTBXaGdQTWpBM01qQTNNakl3T0RRM01UUmFNRGt4Q3pBSkJnTlZCQVlUQWtSRk1SWXdGQVlEVlFRS0RBMU9hWFJ5YjJ0bGVTQkhiV0pJTVJJd0VBWURWUVFEREFsR1NVUlBJRU5CSURRd1dUQVRCZ2NxaGtqT1BRSUJCZ2dxaGtqT1BRTUJCd05DQUFTSnhaZkxYVXd4UVNOc3JIZ2xLRzk3QnlIMnhycWltdXBiODF4RGx4bWRUSmsyZE9jaWxPMUVBNmdrbkpUeXlZVlpmaXU2RHN0NnhSZTFhYU9wVzI3Um8yWXdaREFkQmdOVkhRNEVGZ1FVOGttdmxrUFFVSllKUkUvWFFZT2h4ZlJPek9Vd0h3WURWUjBqQkJnd0ZvQVUwNlRVbm1ubUdhbjA5S05YRlhMMDRTMVFoamN3RWdZRFZSMFRBUUgvQkFnd0JnRUIvd0lCQURBT0JnTlZIUThCQWY4RUJBTUNBUVl3RFFZSktvWklodmNOQVFFTEJRQURnZ0lCQUdjOEdpZFpTMTFpK1d6b2hEazBHYy95cXk4eExTNGk5ci9RSWNzN3BON1pBakZucU5KV24yamhqUy9YVW5VT2tOaWNuUjZWSW9vYTVxQnhMVGZFM240LzFPZ25zWXVVSzBKaU53SWZXMU84K3pXNFZ4d2lWTkI2bnB6RGc4NFljRlJ0MVpvMDd2MDJuZm83cVRaSVJCSFcrV1JqMDV2VG9ZVHBXM0FOdVM3Y2lpTklURHRnOUE1MUxQempiQldXWHVhMFJGSkNMOXF4RUxlVTZlTk1jQ2YrYy84ZWl0RFRsZWZqSWZnd3kvSHB0NlJTVTd5bGtyUGxvODVzMndWR0FoRlgxMTRPS2Zsb1N2MHEyMVB1RXJXZ05CWjExQ2FtdjJrVXhBbU8zd0lWOFNqY0hJOUxDNHI5eXNDWTQ5RVVPeXVNUk9QaWxYdTN4TUxDbVhISlNpR1h2R3BjaVR5a2JGaGZxUWFaNWxhLzQwWHRIL1I2VmlCQVoxRkhhWm0wUlZLaXJaVHY1eDhTOEFqdWhvWk9IRVREYXc1dkhwQVFyUUpDT1RpOG40UUF0ZU1jbUtuQVBhWVdQcXUxY2ZaNG5yMTg4dElocW1CZEJNN1M0YTlHRUE0NjhXajhBSDFDYTl0VGlCS2tJRW0wQ2c3dEpkWm53N2JhTHI5c3l6QXFiT3N2V3RQbGoxaDdxNDR2M3VOamVySW1SUEREaStNS2VSU2x6SGEvMGtqbXRsQllxa1FjRG5MdGh5TW5iWlE3VS9qV0ZnNUJ0Vk9BbE5oQ1RNNFFWSENJU0grTjhsSjZXc1lrVXNtY3N2UFRoQ2JhTFpmQnhlaDg3UERKMXJKSHpWc0ZsRVluWU9hMHlUaThQaGEyczI1YmdtUTZDL0YwbEZyQzdZWHBoaERHIl0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUlBQUFBQ0FDQVlBQUFERFBtSExBQUFBQm1KTFIwUUEvd0QvQVArZ3ZhZVRBQUFXWmtsRVFWUjRuTzJkZTN3VTVkWEhmK2ZaU1lBRUxJV1EzUTFlMHFxME5sVklkMmQyaWZpK1lMVnYxWUt0cldCdHZiVUNWVUdnVmJSV0xTMWlzYTBDeWtYd0F0cFdpL2ExbFpmMnRkVWEyZytRN015R2k3NjBvbFJSTWRrTkZHL2tBdGw1enZ2SEpvaGNzak96TTd1YmtPOS9rT2Q1enZucy9IWm41anpubklkd0hCRWJyZzJsRkg5TEVyNHNnSkVNQkFFd0dFMGcyZ3JHYzFEd1JPUWQvZC81OWpWWFVMNGR5QVZHUmJpYVRmb2VFNzROb0NURDhQMEExa0RTZ2tpelhwY0Q5L0pLcnhYQXRxcXE0bjMvTHIyWWlhY1E0enlIeXpRd1lVVmJ2OUxIeCsxYzErNnFnd1ZDcnhPQVBrd05zSSt1QW5nYWdCTmRXallKWUpWUHlLWGh4b2EzWEZxeklPZzFBcWdQUmtMRVBBUGd5d0FVZVdUR0JQQy9nckVvbkRUK1NnQjdaQ2RuOUdnQnZIYmFhZjMyN2hzeUNjeXpRQmlWUzlzTXZBTEdnd093LytHUnlaZGFjbW5iVFhxa0FBeS8rbWxKbUFMZ1dnQkQ4K3pPKzhSWUxYeHlRYml4NFpVOCsyS2JIaU1BQmlqdVY3L1llZUV2QWVETHQwK0hJWm53SWpHdGVETnh5ak1UOGJTWmI0ZXNVUEFDcUI4U09RSDk1R1hFdUJGQVZiNzlzUWJ0QVBDd3FmZ2VxdGxWdHpmZjNuUkh3UW9nTmx3YndaSnZJS2J2QUR3dzMvNDRwQjJncDFuU0w2UE5zWmZ5N2N6UktDZ0IxR0tzVWhwc21jRE0wd0FhNTZHcGRnQ3JCWGhwaXBrRTBmVUFUUUxRenp1VFhFdEVpMXVhU3RlTXc3cVVkM2JzVVJBQzJGdzVhdkQrdHFLcmlHZ1d3S2Q0YUtvSm9CVkY2Rmp5aGNUbTNZWG1RejdJcXdEcWc1R1FrSElLRTY0QU1NQXJPOHpZUUVTTFdoTWx2OC8wN1dOQXhQM3F1Wkl3QThCRjhPNHpPZ0RnV1NGNGtkb1kzK0NSall6a1hBQXVoV2d0UVB1SStZa1U1T0thWk1QTFRsYUlEZGRHd09UdmdERVZoTUZ1ZTNnSURVeFlJWDNLcjJwMjFiVjVhT2NJY2lhQWVGa29hQ3ErSzhFOEhZVGgzbGx5L3dsOGZkblpnNVNpQTkvTXdadElNNENWS1VvdE83dHA4NXNlMmptSTV3TElVWWhXTXVGRklYRy9talRXZWhXaVBTd1c4VFVBaWhkMkFFZ0FmOHBGeU5rVEFkUldqdTFmMHQ0NkVaQS9BT2dzTDJ4MDhqNFRIaU5KQ3lOSi9RMFA3UnpCSWRISTd3SW84OURVZG1Zc2E1T3RqNHpidlcyZjI0dTdLb0I0ZWVoVVU0akpBQ1lER09MbTJoK0RzWVVGbGcyUSszK1Q3emg4RHZjalBpREdieVdKUmRGRTdCOXVMWnExQUE1NWF2WTZSSHR3SjA1TkdpOTRaQ01yY25TN1l5YjgxYTJRczJNQmZCU2k1WmtBblpHTkV4bElBbGhGQWt1MFJ1TnREKzI0eGlFNUNUY0FPTWxEVTY4RHRBSStQT3cwamMyMkFEWlhqaHA4b0YyNUE2Q3BBRXFkR0xVQ016WUF2SGhRV2RzelZkdTJIZkRLanBkc3E2b3EzcmRud05jaGFCb1lOUjZhYWdYNHdlTCtxYm5WTzdlOFoyZWlMUUhFeXJYUklIN2F3OWU0TmhBL0lRaEwxTWI0Wm85czVBV2pJbHd0cFpnRzhEZmhYZEJyRnlSTnRKUExhRmtBOWVYaDgwblFHZ0Q5SGJuV1BXOEF2TXhVaWg0cDlOMnpiSWtOMTRiQ3hIY0J2ZzVBcFFjbTJsanl4ZEhtK1BOV0Jsc1NnRkVSL295VVpBQVlsSlZySDRmQi9EeUJGcXRKNDQrVWZ2YzlibUJBMVB2RFgvRUptc2JwaUtpYmIyUWYrb1RVckNTb1pEVEtnTkFEMmthQUkrNzRoZzhBZmt3SUxGRWI0OXRkV3JOSGsvNkNpV2tBWHduZ0JIZFdwWmlXMEdzeWZiRXlDa0FQcUJNWldPMkNSLzhnWU1tQlZQR3Z4dXpaOEtFTDYvVTYxcGVkUFVoUjlsOUp3QTF1dkZreCtOSm9JdjY3N3Naa0ZFQXNvUDRkd0RrT2ZUREJXRVBBRWpWcHZOZ2JzbWh6QVFOaytOVnpHVHdOUk9QaFBMYnl0MGpDR052ZGdHNEZzQ2xRUGF3RFNnS0FzR2w0TnhNZVVVZ3U2MjE1OUxsbVE3RDZGSVdWNitBczVDeDlRdnJEalExN2pqV2cyd3ViWWlXYWFjeGh4QUc2dXJWLzZjblJKdU9IZlJjL2U4NXUydnhtSkdIYzJ0cS85Q1FDcmdIUVlHTzZTRW5TdWh1UWFUZnJVeFlOTlVQU1Y0K0hXcnA4MFZtYXRnckFLcjFjcldHQjN3TW96elNQZ0U5MzkvZE0zKzVNaFpSZFp0YjJYZnpjb1RVYkd3bjRvNVd4eE5SdFFtMjNBcEFXMzAySnVXQ1NISThiR0IzV2huRzMxOWp1dzEwZnZZdytBUnpuOUFuQUF6YjRhOHAxdnpvcDMzNVlvVThBTGhKSHFLamVyODVRcU9OVkp2eDZvejkwWnI1OXlrU2ZBRnpDOEt2bm1RR3htUWdMQVh3Q2dPSWpzU0RmZm1XaVR3QlpFaHV1allnRndtc2w0WGtjbVRMK1JkMnZqcytIWDFicEU0QkRObGVPR2h3THFQTmg4c3NBWFhTc2NVeFk4TnBwcDNsWWM1Z2RmUUt3Q1FNaUZ0Q3VQTkJldEIzQUxRQ0tNMHc1ZGUrK3dUZm13RFZIOUFuQUJuV0I4Rmc5cUc0QytERllDTU4rQk4wUkx3c0ZQWE1zQzd5cWJPbFY2QlhxU1N4cEhzQlhPTnpRSG1RVzBWeWtXOW9VRkgyL0FOMFFyd2lWeEFMYUhKWjRGZUFyc2xxTTZSbzlvS291dWVZYWZRSTRDZ3hRTEtCZGFrcnhUNEIvREhjU1lRVURpN2hBZWpKMDBTZUF3Nmp6aHlKNlFLc0QrQ2tBSngveXAvMEE3dWxJRlovQWpMc2NMajg2NWc4WFZJU3dUd0NkckMrcnJvZ0Z0TWNGaWJxakpNQythSnJtNXlNSjQ5WXhlelo4MkRhZ2RCNkExNTNZSWFKNzRoVWhpOXZzM25QY0M2QzJjbXovbUQ5OFc1R2lkTjNuai9pSmx1QzVOYnMzN2VqNjk3aWQ2OW9oNkFjT1RaNXNTcnJacWI5dTAyc0YwQldoMDRQcUpjY2FvL3ZWOFNYdExkdEFOQS9kbExuNWlHNDcvUDhpamZvZkFQelptWGQweTRaZ3RaZDlpQ3pUNndSd2VJU09HYitzclJ6N3NZZTRXTGsyVWcrb3RVeFlnd3dwVXdEQWpQUHJBK0VMai9oL3lmYzZkSE5BRVN2ekhjNTFsVjRqZ0c0aWRKOGEwTll5cTJ1Y0hsUnZoK0FHQnNiYVdaOUFDN1pWVlIyTSt0VVBqNXhJZ3I2ZmhiK1Q2aXRDWTV6T2Q0dGVJWUQ2UUdSY2R4RTZJcnB0ZlZsMUJRQkl5Uy9EV1o3OWlIMTdCdHkwOGNUUkEvU2dlanVaOGhVQVg4N0NiU0lwRm5LZXIwR1BGb0Jlb1o0VUMyaVBFK1NMWUl3ODlrZ2VXS1FvZHdOQU5CbC9sZ25PR2t3UXpmT2xVdTh5WXk3Y0tZMFB4ZnpocTExWXh6RTlVZ0JiL1dlVk9valFYVm5uRDZWZjcxak1BS3dsVlI0RlYzZjJpT2huOFUrR1B1SG1tbmJvVVFMb2l0QzFVNzkvT0lqUWtTQ3hrQUZLOTlpaDVWNzVhWk55czUvdlIva3kzbU1FRUF0cVlUMm9yajlLaE00T1VTT29mZ3NBRGhRWDN3bmdtQ1ZUdVlWbnhJWnJJL0podWVBRnNMNnN1a0wzcTh2QkhIT2p6UXBMeks4ZFZqWHduTGZXdnd2d1Q5enc4ZERsSGM0ckpwTi80YW9uRmlsWUFXeXJxaXF1OTZzemloVGxGVTUzSUhQSFY4THdBYUxrRmdCb1RReDhFTUEyRjFadEI5SGRyV2JyQ1NDNjI4a0NERXlvcjRoOHlRVmZiRkdRQXREOTZ2aDkveTc1WjJlQ3BadGRTUUFBUkxncDV0YytOUTdyVW9JeE04dTFuaGVNcWtpVC9xTnh1N2Z0TTMyK3V3RHNkTENVSkdtT3pzWVhKeFNVQU9xQzBUTmlBZlU1cXhHNkxPZ1B3czhCUUUwYUw0RG9XYWNMTVdpdW1qUU9iZ3pWN0twclkrS2JiQzVUUjBBMGtvaTdmVXZLU0VFSVlPT0pvNGZVQjlWRmdzMlhBZnhYYnF6eU4rb0M0YkVBSUNSL0grbnRYdHNRSDNteG8wM3gvd2J6WHpMT0JSb0J1a3BMR0dkckNjTndZajliOGlxQU9FSkY5VUYxaWkrVjJ0N1ppVHVuQjBFSm9vVlA0VkpmK2h2TWk1eXN3Y0NFV0ZBN1FyUWtxTHVhZ0RZRzV2YmovU01pQ2YzeGZIWk95WnNBRGhaU01KYkQyMmJMeDRZeDhwVGdHOWNDUUVlcTMxMEFFczdXa1F2aUNCMXNEUnV2Q0ozTWttY2RZL1RUS1VxZEVVMFlkK2E3enpHUWg2VFFlRVdveERURnJ5WGhhN20yZlZTWTVtNnVITFc2ZXVlRzkrb0Q2bTBFUEdwL0VUckRESWp2eDBYb0FWUFN6YWFrMmFERGVpc3d0aEJocHBZdy91YVM1NjZRODE4QWFZb0ZLSlNMbjJiWWdiYmlPd0Vna2pBZUF4QjN0Z3pQTjZYWUM5QWNmTHl4UmpNVHByNlpyQXdYMnNVSGNpeUFqU2VPSHNDRXEzSnAweExFMDR5SzhHY0lrSkIwSTV6Zmt3L2RKK2hnd3YyKy9YSkV0TWxZVWFnSFNlWlVBSXBNbGNIVG85a2NVeVNsdUE4QUlzMTZIUWhQWnJNWUUxNGdvRHJhWk13SXY5dnd2anN1ZWtOT0JiQ3pzYklSZ0tPMjV0N0RGeHFCOEFVQVlQcVUyUUNjUEtDOUNxYngwU2JqZkMxaHVCRmg5SnljQ21BaW5qYVo0VFNOeW5OTTBIMXhoSXBxZHRXOXcwZ0hpaXpCZUErZ1c0Y01mUGVzU0ZKZjY2R0xycFB6aDhCQlphMzNndkJhcnUxYWdZRFBta0dhQmdCU1VYNkJ6Q0ZkQ2RDdlVpajZUQ1NoMzNQNmpoMk9na241Sk9jQ3FOcTI3UUFCdCtiYXJtV1k1dWpEMUVETnJybzJTdWNXSGhVQzFrSFNGeUlKL2Nxemt4dWJjK21pbTJScUlXYnBhWmlKYlpWT2FVM0dNMVpDcFhuaUJCWTBCd0MwaFBFVWdNTmYzWFlCZEpXYU1NNk5OT3RiYys1ZEoweGs3ZEFKRXQyK2ZYVGZKNURZWWxkdnVzQnVFd1FtM3l3QWhkbGZrSGh5ZlRBU0FnRHlZU2JTQjFhMUF2U1QxdjZscCtjN2ZKdE9jK2NMTEEwbTJlMFJNdDNmQW9UUDZyMTYyTjU5UXk2ek9CWUEwSG4wMlVOMjV1UVFRY3dMR1NEdEhXTUxBNU5OUlJrUlNlaHpPbHUyNXBVQmJmc3VoOVh3dVJUZFhzTnVCYUMwcFdLd21qeEpQTXR1NWF1cEtMZWpjRjhMeDhRQzRhOERRRFJockt6WlZmZE92ajBDMG5tUjZSUE9MWEdnVmJibzNRM29WZ0NkUVF4cjVVK01rVVpRdGJXVlc3T3JibTluaW5WQlFxRDdDcW1RRXdCaTZWakY1NjJNSmVDNVRLZU5abjRMWU92WnM4ejRvZFd4WGJRbFM1Y0ErRCs3ODNMRVNaS0Y0K29mVCtBajZ4U1BCWUVmekR3bWt6MUE2QUgxVlFDbldqRXF3ZU5HSitMcnJJenRRdmVyWDNSY3JPRTlyVDRoenlpRXN3OE12M3BlWnpzNksyelhFc2JuTXAwWmxQRVhnQUFKSnN2SkVnTDBVNnRqdTlDU3hsOEJGR29FcmNTVW9pRGlGcEpnL2JNbFdtamxKRFpMZ2FEK2FIOFUxblBvenpsYUpXMG1mRkxPaE1PMExBL3AydEd6Zld0em16cC9lQUlBcTBtanpUNHlIN2N5MEpJQVJpWmZhaUhnZm92R0lVRHpuOEtsdHRLN3dzME4veUxnQVR0enZJUUpMekRFcUVMWTBhdkZXRVVRL2N6cWVHSXNDRGMydEZvWmF6a1VYTlMvNDRIMHBrZG1HRGp6RlArYjExaGR1NHNEcWVLZkFtaXlPODlsdGpQNG9taVRjYjZieDdSblEybWdaVEtBejFrY3ZsZDJpS1ZXMTdZc2dPcWRXOTREOFVLcjQwRTh6MjdSNDVnOUd6NEUwNTEyNXJqSXV3RGRPbkJvNjFuUlJQeFBlZkxoQ0RaWGpock1zSEh2Wjc0M3VqZjJnZFhodGphRCtJQnZBYXcvQzVUTFlqSEh6dm9Bb0NYMVIrRTRMY3NSNlIwOUx2cHNKS0hmVTJnbmxYZTBGOTBGNjBtenlWYlpadmxXRGRnVVFIUnY3QU1RV3k1OVlzSzBXTG5XVGQzK2tSQWdTV0lHY2hKcjUxcVdvcnBRZC9UcWc1RVFBOSt6UElGcFhxYkF6K0hZM2c0ZVV2cmVVZ0J2V0J5dVFHQzUzUzRZV3JPeGtZR243UHBtZzdjQnVpcVNpSjhiYlk2OTVLRWR4enlGUzMzRWNqbXMxa29RWGh0WTFtSzc1TjIyQUU3ZnNXTy92ZjE4anNUODZuUzdkdUFUTndHdzlDUnJnNWJPSGIwUmtZUnU2VFVwWDV3YzJEa0xRTWpxZUpaOHM1UGJsNk8ycFF5UUhsRFhBZmdQaTFOYWZGS09ERGMzL011T0hUMmcvb1FCTng0S0djRHZTT0FIV3FQeHRndnJlVXI2TkhIYURNRFNuajhUWG9nMkdlYzdzZVVvSTRnQVppbW13L3ArZnFrcGZLdnN4Z1pTaWpJZm9EZnRlL2d4REpJWUUwa1lFM3ZDeGEvRldFVktXZ1dMRng5QUI4UG4rRHdDeHlsaDBlYllTMkN5RWJqaE1TZjdkODYyWTZObVYxMGJHSlkzUHc2RmdFWW1UTlVTUmxSck5qWTZXU01mbEFaYWZnZ2dhbVBLZmFPYjZ2L3AxRjVXbmF2WGw1MDlxRWc1c0EzQVNSYW5kQkJncXhLMjgzYnpOMWcvd3I0TndQMGRxZUo1WS9ac3NKalJWQmpFeXJYUkVQeDNXQy9aZTkwbjVKbFdvMzVISTZ1azBNN0F6ZlUycGhReDhLU2RBQkVCTEFUUGdJV05EUUJyd1ZUVjFkVFpobDk1WjNQbHFNRVEvQVNzWDN4bUlhN0w1dUlETG1RRlI1TDZXakIrWTJQS3FhbCs0bEU3MlVOcVkzd3ppRmNlY3dCakN3RmpJd2xqZkNTcFczMUZMUmdZb0FOdHlrb0FsZFpuMGNwb1l5enJ4RnAzMHNJVm1nRWJNWHdDTHRFRFlWdGRORnBUYlRQcHlMM3dnaTY4dElyaFYyOEIwVmR0VEhuYnQ5OTBKVkhGdGRNcllnSHRJb0QveDhhYUprdStJTm9jdDVyZ0FBYklDS3JuUUdLVUpHNXNNOXN5cGp3Vk9ucFEvVEl6MXNKNmN3d1dqQytwU2NPVkJCcFhqeStwRDZoTENMRHpUTENYVFJHTjdvNFZaS1dRMThRclFwODFUVkVId21DcmM0aXhVRXNhVnBOQ00rSnFaWkJVbEp0Z0w3OXZDQ255ajdIaDJsQTMvZWdKYkFwVUR6T2xXR3ZuNG9PdzlaT0QzblUxTzhsVkFYU1dVMTBHT3lGY3h1a3c4WWZEZS9yM1p1SVZvWklPS0d0Z01jOHlEZTBUeEpQY3JqOTB2VFl3WFJadDY5VVFBSThwYWR2M3BOMUlZVStrRm1NVlU0clZzQmZzQVJGL1QyMk1iM2ZiSDArS1F5TUovVEU3NmVRQUFLS3ZWZ1oyUGxSb3g2cTVDUU5pZ0w5bEpZQ3YySnkzVkdzeTdMeHFXOGF6NnVBaGcvYk9BTUZXQ0phQmE0eUEra0J2RkFFRHBQdTFwVVQ0dHIyWnRIN1EwRmJYSHZvT3h6TUJuTDVqeDM1SzRlc0FkdG1aeDhBTlJsQmQwSnRFMEJuT1hnTGlxVGFudnNXU3Z1RmxscEtuL1FHMDNVWkNDbmt4YkxaYlljYU0zdkpMd0lDSStkWGxBSzZ6T2ZWRFNKb1FiWTRsdmZDcmk1eDh3SFgrOEFSQjlBeHNkd0xseDFzVEE3ODdEdXNLczR3OEEzR0Vpa3kvV0FuQ3QyeE9UVEg0NGx3a3ArYnNHNllIMU9zWldPSmc2bHFma0pPeTNmVElOYlhEcWdhVytFcWVocE9EcFpnbVI1TDZ3KzU3ZFNRNWF4R2pKWXlsWkNlOStTTytrcEtpdHI0ODRuZmRLWStJbDRXQ0piNlNXamk0K0VTNEkxY1hIOGpEUFRZVzBCNEFlSnFEcVR0TmxoTnFrZzB2dSs2VWk4VEt0WkVRdkFaT2pyVmhXaEJKNmptdFJzNTVreWd0b2Q4STRrY2NUSzMwa1c5amZURGR0S0VRMFFQcVJBaXNoN09MdjF4TDZrN1BJM1pNWHA2eTA2ZDhxbzhRY0xXejZmVEwxa1RKYllYeWNKaCsyUFBkQStLWmNQQ1pNdU9oU05LWW1vKytRM2w3eldKQTZFRjFPUmpYT2x1QjFwUGd5L09kNkZrWGlGWUttRS9BZXVYdVlmQ0RXaUorZmI2YVR1WHR2QUFDcE5aa1RHR3lYblg4Y1hnTVMyelYvZW9rZHoyelRzeXZYUzVnYm9IRGk4L0F2Zm04K0VDQkJGcGlnZkNQTzl1c080S0Ezd29ocDRjYkczSnlEdUNtUVBXd0RoUXRCZmdiRHBkZ01OOGVTY1lkblREbUpnVWhBQUNvRDZwVGlMRVV6bytOYVFiVHJFaFNmOEpOdnc2blBoaStncGp1Zy9OVFRqb0ltS0lsakZVdXV1V1lnaEVBQU5RSHdoY1M2TGZJNHFnNElqeFB4TlBkM2pxdEMwYlBFR3d1Qm5CdUZzdTh6MEpNZENPWjB5MEtTZ0FBc05FZk90TkhZZzFzWmNnZVFRZVlGcHRGdnJ0cWR0WHR6Y2FmMkhCdEtFdStreGpYQVNqS09PSFl2TTRRNHd1bDZVUVhCU2NBQUloWGhNbzZreWF5K2JZQjZhWVA4MzNDWEd3M2xMelZmMWJwZnZTYnpzQXR0dEsyamdielg2Q0l5eVB2NkFYWEZMTWdCUUNreTZOUENleWNCMkEyc3ZjendjVDNLTVFyTWdsaHEvK3MwbmJSZnlxWVp3UElOdndzbVhIM1c4bktPWVY2WkV6QkNxQ0x6blR6VlhEbmFMbmRBQzlKY2ZHeXd4dENiUERYbEN1VXVyNHpUTzFHa21vekMzRkZJZDN2ajBiQkN3QklueUN1RkNtUEVlTThsNVpzQjdCYXNseEdVSWpJdkE2Z1NYRHZQS00vazRtcnRkMkdzM01JYzBpUEVBRFFXUlRpVjZjejRXY0FDcXAvN3lHMEVEQmJUUmpMOGhuY3NVT1BFVUFYRzRkOTRUU2Z6L2NJckRlbnlCVXZDc2JrUXcrUzdnbjBPQUVBQjB2RXJtWEdmQUJEOHV6T0hnWm1SeExHcXA3eXJUK1VIaW1BTGpZRnFvZDFrSEkzR045Qjd2YzFUREE5N1BPWnQrY3FCTzBGUFZvQVhSZ1Y0V29wY1M5QTQzSmhqd2t2a0VrMzVmUE1JTGZvRlFMb29qNFF2cENZNW9Fd3lpTVREU3pFYllYK2FtZUhYaVVBSVAxOEVBdUdMeUhRSFdEWWFsSjVMQWpZeElMbWFvMzZzejN4UHQ4ZHZVNEFYYVNMTWJRTEFiNFp3SDg2WEtXV2lINnVOaGwvN20wWHZvdGVLNEJEcVE5R1FzUnlPb0JKQURKVkliY0I5Q1Q1K0FIdEhXTkxEdHpMSzhlRkFMcUlEZGVHa3NtVE9KMnVQUkpBSVAwWGFpTHdWZ0RQcFJSbGRiWTdpRDJKL3djSXJXV3A5U3dleGdBQUFBQkpSVTVFcmtKZ2dnPT0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiIyY2QyZjcyN2Y2Y2E0NGRhOGY0ODVjMmU1ZGEwMDBhMiIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImxhcmdlQmxvYnMiOmZhbHNlLCJjcmVkTWdtdCI6dHJ1ZX0sIm1heE1zZ1NpemUiOjMwNzIsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6MTAsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MjU1LCJ0cmFuc3BvcnRzIjpbInVzYiJdfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMDYtMTMiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJOaXRyb2tleSAzQSBNaW5pIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNDA2MTMwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblByb2ZpbGVzIjpbImNvbnN1bWVyIl0sImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMDYtMTMiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MX1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNC0xMC0yOSJ9LHsiYWFndWlkIjoiMTBjNzA3MTUtMmE5YS00ZGUxLWIwYWEtM2NmZjZkNDk2ZDM5IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiIxMGM3MDcxNS0yYTlhLTRkZTEtYjBhYS0zY2ZmNmQ0OTZkMzkiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiZVRva2VuIEZ1c2lvbiBORkMgRklQUyJ9LCJkZXNjcmlwdGlvbiI6ImVUb2tlbiBGdXNpb24gTkZDIEZJUFMiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6NSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9LHsibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJpc0tleVJlc3RyaWN0ZWQiOnRydWUsImlzRnJlc2hVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZWQiOnRydWUsIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQzZUQ0NBZEdnQXdJQkFnSUpBSmJUeXJ1MVgvSVBNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1DTXhJVEFmQmdOVkJBTU1HRWRsYldGc2RHOGdUWFZzZEdsQmNIQWdSa2xFVHlCRFFUQWVGdzB4T0RBMk1USXhORFExTlRCYUZ3MHlPREEyTURreE5EUTFOVEJhTUNNeElUQWZCZ05WQkFNTUdFZGxiV0ZzZEc4Z1RYVnNkR2xCY0hBZ1JrbEVUeUJEUVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTVZqS0hXcGJEN1RTbE14b2NqVGw2bklmN3gzMlBtc1E5ekd1TEdHcUEwVVFab0lxM1hMekw2TFlVdko1QTVnMHV5RkdsbEhFZkdBS3JFYUNROEZWdlBTL1VoMEZ5ZnpXaFJBemlUU2lqak1JSVZqampVdjltOXZGbWNYU2NnSGlnN09kejg4NThWMGtyTkg5OXFHbTN3amdhT2VyVFdtdCtqWENVZm4wMUlrVFB3eEcySGxnRWQ0NWpOTFNWN1Zvb2wrS2U4RTJraTRsRWtUZUh6Ym91bFI1R1VicDNuTWk3RTQ3Vk1RYTNiTndueldCYnNhQlNTUWhMazNtNUhhS2hoeGE2d0pESzQ3TmlNQ2tDa2RJSHVXU1FMVkFmbTg1VUFPTnRFT1B3aTBPdUszcWJlOHlLT0ZHZjBLaEI1TU1lQXltN01WL000VzBhNDlvZ1BEOXBNQ0F3RUFBYU1nTUI0d0RBWURWUjBUQkFVd0F3RUIvekFPQmdOVkhROEJBZjhFQkFNQ0FvUXdEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBSld6NXhMTWs1V05ZYkFiNnlPeEVDQm9aMldlQi9xbDRWSjNPLzMvdE5zeE9ZbnpMZVdvNTQwelFoOXJBbWF4ejdldW1CbHNrTXE0eUdQU05YQjl5Y1dHSGdrY0NlU3pOMnd2OENJekRCczJvQlpqVE5rNjVMQlpEc3NUT0J0TVcvK3VURkhRZmJ1TzNJU0xoSTBEWGZSRWk5TkRNM2pmazExeEhjc2ZoMlJNVitRZE5md1ZhWlpyQ3Erb3VHK0V2a3Y3S3FxK295dTBWRk0vdHo2OFRHbDZ5bGhQRlIxcWg5d3R0cFZqQU9PQ0VRQ0xxUDJkUDI4bHdZQnlDcUhRcVZId2J1anYvTFpqWm5LVzNMWW5kWml4UFBTUkNKc3NERHdKdmgvZjZuVHhnOVpFKy9KY1lyZTVDYUk4bnpWSGFTT0NqTko3RnpVTEc2NEppV092UTUwPSIsIk1JSURkVENDQWwyZ0F3SUJBZ0lKQUlDVVR2a2d0ajVDTUEwR0NTcUdTSWIzRFFFQkN3VUFNRkV4Q3pBSkJnTlZCQVlUQWtaU01Rd3dDZ1lEVlFRS0RBTkVTVk14Q3pBSkJnTlZCQXNNQWtOVE1TY3dKUVlEVlFRRERCNUhaVzFoYkhSdklFMTFiSFJwUVhCd0lFWkpSRThnVTNWaVkyRWdRMEV3SGhjTk1qQXdOekEzTVRRek56RTRXaGNOTXpBd056QTFNVFF6TnpFNFdqQlJNUXN3Q1FZRFZRUUdFd0pHVWpFTU1Bb0dBMVVFQ2d3RFJFbFRNUXN3Q1FZRFZRUUxEQUpEVXpFbk1DVUdBMVVFQXd3ZVIyVnRZV3gwYnlCTmRXeDBhVUZ3Y0NCR1NVUlBJRk4xWW1OaElFTkJNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXZBS09lcUM1L3AwRDFpc0NZS1FKbFZVT3JCNkk3RExvY3VuRS9SbThkdUdUYnl4UWh0M0NiRlZUdjNOMkxwMmZianhsSSszc09TR2szM0ZUWWtUcXhjZEpJcko3U3NrQmNVU05yZktPYVFULzZLUWNQNENtN1YrNjU1VHErVFd4eXhXUWhEeWd0MTVxb1A3TXVLNmJUOVN3cENqcGZLaGFNU215UWFNb1VjUkFiTHFkekJDYWMwaHpCK1plK2dxSmxuV1Y5VWFTSTJyRnNWdUg0WkUwY1JPK01PcGFMZ00vczI0OG5HR0hwMjJld1NRZmJuUGFCYmI4aXF5QVArY3U1MkdMc1VwS1JKZWJFK1I2K1BNUTlKQ2RXZVFaUjNEa2ZTaWRrdjNtY2I0anExaUl0YStNcUtoUm53cmZYaDkxMUtXTG5ZQWw5RU5DaExYMGM2U2oxUUlEQVFBQm8xQXdUakFkQmdOVkhRNEVGZ1FVV0x2aFJCVVBuOHVMSWY2OCtndi9OWkl3R1NJd0h3WURWUjBqQkJnd0ZvQVVXTHZoUkJVUG44dUxJZjY4K2d2L05aSXdHU0l3REFZRFZSMFRCQVV3QXdFQi96QU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFGTHJEaGFlZ2VLSHhZakgzRVAzdlVCS2huek0yMDZBU3hnZVlDTzJFYzlwT2xZSmFlcUZFK3NVYW1VVi9wd2pEbHFOYVNnRmd5N1R3ZVlrdk9tTW40cVNjc0hxdkozekdPQWlhZndhaDF2VUhmQ2xYUjgrYXhPMmlHT1VGMEpLclo5WVlqYkFhNS80SENsdjdqRlBPZE1XVE9ReW5nb2lIQXMzamt1WWpwQ0xGbEI0Vk9pM2Qxd2pBMXBuVGRCS2tBYjd0OG5UdncrL1hiRnZjUWE3M1ZIN3Nqdm9CcUQzZmRNZlJjdVZxNHFVWnRaVDZjR2FnVEhENjFUdHFoOW9NQ1pYY0RiUjFQR1puTmJxeWNzV1BESUswbnBtSzMvM2xmVjhjK1pzcnk2ZTE3MG1mSk1acDdPOG02Q1N6Ni9WTEsreURKZDc4NDF3cG1lS1RmNkluWkE9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFRd0FBQUFnQ0FZQUFBRG5sVVpxQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUVuUUFBQkowQWQ1bUgzZ0FBQUFaZEVWWWRGTnZablIzWVhKbEFIQmhhVzUwTG01bGRDQTBMakF1TWpIeElHbVZBQUFLMUVsRVFWUjRYdTFkRFhBY1pSbStOT0FmS29nNldPMFFjcmVYM083MVI0MW9IZFNxcURBT2czK2NZRVhCb2xYUlRFbjIyMHRhS1RjNjRtZ0JxekJpRVVWcEJkcWl3d2hxU2RJUzJ1cFlTZ3ZSdHBUU2NrbGpXekhhZ2pwU1JkcjR2THR2anJ2azI3dmR2ZDFMam43UHpETjN0L2QrNy90K2Y4Lys3OGFLME5EYWFyMnFPZFhab3FXeUg5UjBhMEZjdDY3V2RIR1Rab2pWQ2NQcVNlalcxb1F1SHNPeS9lQlRzRG1NLzU0WlQ5aitMV0dJZzdEZkIvc0JjRFBzZjRYZlA4WDNiMnVHMVpIUXpVOG1VdUtkeVdUSG01cWFjaS9qSEFLQnlpZjBiQnIrTHdhWElQWVBrTWRxZkw4WGRXcGxzMUFBMzEvUWpPdzk4TDhTOWI4QlhJUjIrbkRjNkRvemxzazBzbG5rUU14a1BHWE85RUp0Vm5ZR0Y0c1V5Vm5kOFVUYWVwOGJ3KzZMYWtCajVpemRiTkpTMXJ4RVdueVd4ZzM2RW1QZFdvUFBEZWpmN2VBVEdNc0hhRHpUdUM2aGJqME4vcFhtQXNydWdzMFdMUDhOdUJKalpKbVdFbGNsMDltUEoxSm1XMHRMNSt1aUhCdUdrWHNsalg4N25pNEV6Vm5rOUF2a3NRbjU3RVNkaHJCOEJNdVBqT1dQLy80T0hzUi9lN0Q4WWRUbGZ0UmhGZmdkTEc5SHUxd0FmenI1NWpBT2tpUUtodlZiR0I2QzAvL2krMmlOZVJ4OEZnbnZSZnhmYWluelNrN05FMGlJVVBiZjQzd1dtTlROZDdCcEtFQTdMWmZGQVk5enAzeVpUU01EaVFWaS9VK1NnNVFZQUlmT21HMmV3c1VqQS9yaFc3TDRCZXJtajloMFVvQjJPQitUWlRXNEIvazhPeUcveUNpT29XMUlZSDZIOFhQejlMYmNLemlsUUdocE1admhaeUhHd0czZzQyQms4NVo4bzkwRzhYME5pU3MxSXYyUUdrOEtkV3N6dDRzbklQOFJxUjltRFFYRElkWlNiQm9aMElsM1MyT1haWFlwRjQ4TVUxNHduSzFiZVc0MXBMM0ZFUUNKbFBWV3RERzJmdXlWck5SM3RCVGRTakI4WXJJRm95VnRubzJPQ3pCZ3hETkJCNnBYS01Id3hpRDlnSzNLYzZQY2t2QkdKUmkrTWNtQzBZRDRmZEs0WG9oOVcvWVRDWlJnZUtOdndjaGtHdEcyZTJXK2Frc2xHTDR4bVlKQmF4bHBUSStrTlJRZG1HUjNvVU1KaGpmNkZRdzZjQ3J6VTN0Q01MRFd1UXNkM1IrQXczS25CUTVLeW5qaGpkeE9ubkRpQ0VadUdqcnNZV2xNSnRwaVdVSzNCbVQvRmZFdWRoZzZVUGU2Rmd6MGJSNmZhNk1tblkza2xEd2hhWWpMVVU2ZXMyN3QwZ3p6bTdWZ1V1OTZENmZrSHhDYTYyVVZHQ01xOGcwMmpSUW5pbUJvUnZZaWFUd20ybnRmVzl2Q2s3VzBkWUhzL3dKMTYzazZlTVp1UTBXOUN3Ykc5SzFzT3FXQXZJVTBYNXRpRFp0TmJTakJjR0VFZ3RIV2Rzdko4RTJuQXVVeGlicDVoV005Mm9EZjJ5YjhYMEt4M3JFTkYwb3dvZ0htMGhKcHZqYVZZUGpDaVNBWWliVDFlV2tzSmliQ2svUG01VTVpYzhyeFFwbGRNUlBwN0hsc0hocVVZRVFESlJnaDRzVXVHSFNSRCtwSVYrVEo0eEgxTEc5ZGpDSFRpTWxSNFZpRzJFN0hSYmhBS0ZDQ0VRMlVZSVNJRjd0Z29KMnowamhNdEhPZWpsMndlUUZZL2xHWmZTbkZmRFlQQlVvd29rSENNQmRMODdXcEJNTVhLZ3FHSVM1dlRwdG5oMFhVKzA1Wm5BSkRGQXpENkRnZC9wNld4bUhHRGZGRk5oK0gwUWIwd2FPeU1tT0UrT1VOSS9jU0xsQTE2bDB3MEY2NzQ3cTRwUnBHY2RxYTdrdVI1VXRFSDQ1Z0Rtd0tpL0RaajgvN0lFUzM0ck96ZWFhWXpXbFVoM29SakpvelJNR29PQUVOYTBpMmRUR0dlRXA4VEZKbVBEdll2R3JVdTJDRVFicWhrc09GQnN5bGkyV3hhc1RqNk5kMTJwc1h2NTdUQ1FZbEdDNE1TVEJhVzYwM29vMWRiNnF6cVZ0ZlluTTU2QXBCdzlveG9Wd1JNWWxHTkszOTFWeWlLaWpCaUVZd21sUGRMYkpZdFNUYTdxSGlBK3Urb1FURGhTRUpCdHB2aGRUL0dIV3h2OXpXeFJpMHRQaUV0SHdKeGJWc1hoV1VZRVFqR0hSd0d1T2gwZ1Y1a1RPZU1pL2hoUHhEQ1lZTFF4Q01zMXF0Vmd6dThyZXZweXlQandId3NwVmgvU3VWV2pLZEN3U0dFb3lvQkFPNXA4MzNvcCtlazhXc0ZkRit3YThTVm9MaHdoQUVBMzdXVFBCYlJIVGNBZXhHdkpUTkhmUU1OY2Y2QnMrUDllYm54ZnFlUEpXWDJrQ1p6SGdmRXhqQ0dRSWxHTkVKQnNGK0VKRXVkc3ZpMW9iaVQ1eUtmOVNOWU9qV1pqVHlmYUhSdWQ5QUhvdFlwV0E0TnhxSlkxTGZUTlQ1SzJ3ZWk2MGZNaUFVRDRLakJmYm1qOGI2OHN0ajJ3N2FEMnFoZlUvMHh5NlpyekhTMnF1bHBUTmwrd3lJdWhjTWpCVTY2MVFObTJjdVBvUERSWVRSQmpwYlIyTUFPVjlIWnpPUTk4L3cvZll3aVBIdGZqZTBidjJGay9DUGVoR01PcnNPby9MdDY3bzFYRGdWdWlFL0J3THhqeEt4S09YRzJNNmR0aTM2dzhPUmRuR1A3VGNna0Z1ZEM4YlV2QTZqbGtpa084K1R0ZzJJTVhTWXpmeERDWVlMcXhBTUw3ZXZvNzd0dG5GLy8wbllrdGdoRVlseEhMcWF6SjJ0akVxYnM5aXlTV1huMnY0RFFBbEcvYU9zWUJqV0FUYnpEeVVZTGd3c0dMbHBLTHRWNnBOSkhWWjRZSExmL25mSkJXSUNoMkhkUUVYaTZld2xNcjhsZEo1SFl0djdoUktNK2tjNXdVRDc3R1V6LzFDQzRjS0FndUhwOUdkS1hNWG1FSXg4dTBRY1hQallhKzB5bVV3ajJ1dHhxZThpb280WDJ2WStvUVNqL2xGaGwrU1BiT1lmU2pCY0dFQXc2SG9LN0E2VW5jaW81OEdtcHN0ZWVCMUQ3OUJYNWVJZzRmM0RwM09wR09MTWwva2Z4eDJ4ekZyZmo4VlhnbEgvcUxCTHNvWE4vRU1KaGdzRENFWWlWZjcyZFdicEpkdzkrODZSaXNONDlnN3VoM1ZoRjRQRjZRbUovMUxxMWdJdTRobVZCQU1UOXU3eDcwd0pnL1RZZlU2aExKUmdWRWFGWFpJSDJNdy9sR0M0MEtkZ3pKNXRuZ0tmQjZTK21Qai8wSXdaSFMvbklnNUdSeHNoQmdOU2tTamxZaTVSQVBydVVsbWNZbUp5L1huRzNIRXhLNkRpRmtaRXhCall5Q21VUlNYQlFEdVBvQTVibzJiU3lMNmRVL0lFM2lxVW5nWU5tMmdEMTdOMCtHOFZwK1FmU2pCYzZGTXc0cnBsU2YwVUVURk5OaTlGei9ETVdHLytpRVFrSFBibU44UzJiWnQ0K2JoemowbjVKM2lCZEZzMWwvQUUxTDJ1QmFOV1RPcmlBNXlTSnlEdjc4cjgxSnllcnk2V1FBbUdDMzBJUnRPYzNHbG9wOE5TUDJQVXhWTmwxL1RyOHEyeHZ2eDY4UGtpc2ZnbmZsOGY2eDkwZlFVbDRuNUdHcStZdWpoeTVxenUxM0NSaWxDQzRZMTFLUmowV2tndEYvd21SU1VZTHZRaEdGNG1HQWFMWVBQeTJEZzBQZFl6OUg3c3BzeU45UXhVZkMwaVhmeUZQdG9uaTFsTUdxeGNwQ0tVWUhoajNRa0d4Q0twVysvbWRJSkJDWVlMUFFvR3ZZUWE5dVhmNzFscDY2SktsSHQ4L1FzVVIrMFhUWHVBRWd4dnJBL0JvTGZyMlFmSHIvR3psZW1LS1NNWXVua0hUU3pFbEw0K3NGYUNnZm8rQis3V2pPem4yTFFzbk5jR2lEMVVUdWJQb2RuRjVwR0F6cGdndnV0V0J1cjZIN3RPdXJpVWk1UUZYU1dLTXQvSEJONUVheVhVcit3OU1jRXBqdkdLNHZmSWJ3VmR3OElwbEFXTkJaUzVEdldoTjVYbjRlZG9xZDhvaUZ5eDJ3aytpdS8wSXVpbDlLd1RUc2tUNG1seER0cnpSbTVYalBVbzJwWGU2RzQ5Z2p4dncrZkNoTkdoY2Zod1FDOWphVExFRzl4b0dGZVd2aVkrVXVTbTJRK2NvWGR5Nk5ZaU5Pd3lWUHJIR0JoM0pvenVVQ3NlVDVtWFFmRi9qaGcveE9mWE5kMjhnam8wYUgzcExBbE5OR2R0TDVZaTU1dlFnYmVqNCs2Zy85Z3NNcUFPSDNIYVNmd0ViWGNEdm1lVGh2VXBUZTk2eTRRek03NlFtOVkwWjlGcGRQY202dk5wc0F0OXN0eHBPK3ZYNEViRTIwb1RDY3NHU29ubCtCL2Y2V2EvVmNWNTBhU1B4N3RPRGVFQnhnMTB4eStka29YZ2ZBZ3hGaURlMTlBTzMwTS9yRVFPOXlMbUE0aS9CYiszbCtibmtQSUhONFByVUwrMStGd0IyMnZob3gxaWYxRzgxWHBidkEyNVpqSytyMmx4UjI0YTFkOFJQekVmdXdvV2NzRVdpSk16WWorSTN3K1Z0S3NoSGdIL0FQWlNucWpUemZpOHhoNjd1blV1UGRyQTI4TnhZckgvQXozdEk0ajUrVE9MQUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzEiLCJGSURPXzJfMV9QUkUiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwibWluUGluTGVuZ3RoIl0sImFhZ3VpZCI6IjEwYzcwNzE1MmE5YTRkZTFiMGFhM2NmZjZkNDk2ZDM5Iiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6dHJ1ZSwidXAiOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJub01jR2FQZXJtaXNzaW9uc1dpdGhDbGllbnRQaW4iOmZhbHNlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6dHJ1ZSwiYWx3YXlzVXYiOmZhbHNlfSwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjo5NiwidHJhbnNwb3J0cyI6WyJuZmMiLCJ1c2IiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fV0sImZvcmNlUElOQ2hhbmdlIjpmYWxzZSwibWluUElOTGVuZ3RoIjo0LCJmaXJtd2FyZVZlcnNpb24iOjUsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjo0LCJyZW1haW5pbmdEaXNjb3ZlcmFibGVDcmVkZW50aWFscyI6MTAwfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMTAtMjMiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6NSwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJlVG9rZW4gRnVzaW9uIE5GQyBGSVBTIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNDEwMjMwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMC0yMyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjo1fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI0LTExLTI3In0seyJhYWlkIjoiMDA2NiMwMDAyIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWlkIjoiMDA2NiMwMDAyIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkNBUFkgVUFGIn0sImRlc2NyaXB0aW9uIjoiQ0FQWSBVQUYiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJ1YWYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X2RlciJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfc3Vycm9nYXRlIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInRlZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJ0ZWUiXSwiYXR0YWNobWVudEhpbnQiOlsiaW50ZXJuYWwiXSwidGNEaXNwbGF5IjpbImFueSJdLCJ0Y0Rpc3BsYXlDb250ZW50VHlwZSI6InRleHQvcGxhaW4iLCJ0Y0Rpc3BsYXlQTkdDaGFyYWN0ZXJpc3RpY3MiOlt7IndpZHRoIjozMiwiaGVpZ2h0IjozMiwiYml0RGVwdGgiOjEsImNvbG9yVHlwZSI6MywiY29tcHJlc3Npb24iOjAsImZpbHRlciI6MCwiaW50ZXJsYWNlIjowLCJwbHRlIjpbeyJyIjoyNTUsImciOjI1NSwiYiI6MjU1fV19XSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZ0NBSUFBQUQ4R08yakFBQUtuMmxEUTFCcFkyTUFBRWpIbFpZSFVKUFpGc2Z2OTZVM1drTG9FSG9UcEJOQWVnMWRPdGdJU1lCUVFrZ0lLalpVRmxkZ0xhaUlnTEtnaXhRRjF3TElXaEFMdGtYQUF0WU5zaWlvNjJMQmhzcCt3Q1B1dnBrM2IvWmt6bmQvYytiY2M4Kzl1WGZtRHdCNWtDMFVac0FLQUdRS2NrUVIvbDZNdVBnRUJ1NHhnQUFCK1JrQUZUWkhMUFFNRHc4R2lNMk4vN1IzZDVCc3hHNWFUTmNDLzg0VXVUd3hCd0FvSE9Fa3JwaVRpZkJ4eERzNVFsRU9BQ2pFZ2Y3eUhPRTBseU5NRXlFTklueG9tbE5tdVhPYWsyYjUxa3hPVklRM3dxTUE0TWxzdGlnRkFOSmJKTTdJNWFRZ2RjZzBoSzBFWEw0QVlSK0UzVGlwYkM3Q0JRalB5OHpNbXVZakNKc2svYTFPeWo5cUpzbHFzdGtwTXA3ZHk0emhmZmhpWVFaNzViODhqdjl2bVJtU3VUWDBFU2VuaWdJaXBzZnBjMHZQQ3BLeElDazBiSTc1M0puOEdVNlZCRVRQTVVmc25UREhYTFpQa0d4dVJtandIQ2Z6L1ZpeU9qbXNxRGtXWlVYSTZ2UEV2cEZ6ekJaOVcwdVNIdTBwVzVmSGt0WE1TNDJLbmVOY2Zrem9ISXZUSTRPKzVYakw0aUpKaEt6blpKR2ZiSStaNHIvdGk4K1M1ZWVrUmdYSTlzaisxaHRQSENmcmdjdno4WlhGQmRHeUhHR09sNnkrTUNOY2xzL0w4SmZGeGJtUnNyazV5R1g3TmpkY2RqNXA3TUR3T1FhUndBYllBV3RnQldKemVDdW03elR3emhLdUZQRlRVbk1ZbnNpcjRURllBbzdsUElhTmxUVVRnT2szT1BzWHZ4bWNlVnNRSGY4dGxvMnM3ZlFiY2hjUGY0c2xDZ0ZvM1FVQXZmcGJ6RkFYQVBrU0FOcWxISWtvZHphR252NWdBQkhJQXhwUUE5cklIVElCRmtoM0RzQUZlQUJmRUFqQ1FCU0lCMHNCQjZTQ1RDQUN5OEZxc0I0VWdtS3dEZXdDRmFBYTdBZjE0REE0Q3RyQUtYQU9YQUxYUUMrNERlNERLUmdCejhFNGVBY21JUWpDUVJTSUNxbEJPcEFoWkE3WlFFeklEZktGZ3FFSUtCNUtoRklnQVNTQlZrTWJvV0tvRktxQWFxQUc2R2ZvSkhRT3VnTDFRWGVoSVdnTWVnMTlnbEV3R2FiQldyQVJQQjltd3A1d0VCd0ZMNEZUNEd3NER5NkF0OERsY0MxOENHNkZ6OEhYNE51d0ZINE9UNkFBaW9TaW8zUlJGaWdteWhzVmhrcEFKYU5FcUxXb0lsUVpxaGJWak9wQWRhTnVvcVNvRjZpUGFDeWFpbWFnTGRBdTZBQjBOSnFEemthdlJaZWdLOUQxNkZiMEJmUk45QkI2SFAwVlE4Rm9Zc3d4emhnV0pnNlRnbG1PS2NTVVllb3dKekFYTWJjeEk1aDNXQ3lXampYR09tSURzUEhZTk93cWJBbDJMN1lGMjRudHd3NWpKM0E0bkJyT0hPZUtDOE94Y1RtNFF0d2UzQ0hjV1Z3L2JnVDNBVS9DNitCdDhINzRCTHdBdndGZmhtL0VuOEgzNDUvaUp3a0tCRU9DTXlHTXdDV3NKR3dsSENCMEVHNFFSZ2lUUkVXaU1kR1ZHRVZNSTY0bmxoT2JpUmVKRDRodlNDU1NIc21KdEpERUorV1R5a2xIU0pkSlE2U1BaQ1d5R2RtYnZKZ3NJVzhoSHlSM2t1K1MzMUFvRkNPS0J5V0Jra1BaUW1tZ25LYzhvbnlRbzhwWnlySGt1SExyNUNybFd1WDY1VjdLRStRTjVUM2xsOHJueVpmSkg1Ty9JZjlDZ2FCZ3BPQ3R3RlpZcTFDcGNGSmhRR0ZDa2Fwb3JSaW1tS2xZb3Rpb2VFVnhWQW1uWktUa3E4UlZLbERhcjNSZWFaaUtvdXBUdmFrYzZrYnFBZXBGNmdnTlN6T21zV2hwdEdMYVlWb1BiVnhaU2RsT09VWjVoWEtsOG1sbEtSMUZONkt6NkJuMHJmU2o5RHYwVHlwYUtwNHFQSlhOS3MwcS9TcnZWVFZVUFZSNXFrV3FMYXEzVlQrcE1kUjgxZExWdHF1MXFUMVVSNnVicVM5VVg2NitULzJpK2dzTm1vYUxCa2VqU09Pb3hqMU5XTk5NTTBKemxlWit6ZXVhRTFyYVd2NWFRcTA5V3VlMVhtalR0VDIwMDdSM2FwL1JIdE9oNnJqcDhIVjI2cHpWZWNaUVpuZ3lNaGpsakF1TWNWMU4zUUJkaVc2TmJvL3VwSjZ4WHJUZUJyMFd2WWY2UkgybWZyTCtUdjB1L1hFREhZTVFnOVVHVFFiM0RBbUdUTU5VdzkyRzNZYnZqWXlOWW8wMkdiVVpqUnFyR3JPTTg0eWJqQitZVUV6Y1RiSk5hazF1bVdKTm1hYnBwbnROZTgxZ00zdXpWTE5Lc3h2bXNMbURPZDk4cjNuZlBNdzhwM21DZWJYekJpeklGcDRXdVJaTkZrT1dkTXRneXcyV2JaWXY1eHZNVDVpL2ZYNzMvSzlXOWxZWlZnZXM3bHNyV1FkYWI3RHVzSDV0WTJiRHNhbTB1V1ZMc2ZXelhXZmJidnZLenR5T1o3ZlBidENlYWg5aXY4bSt5LzZMZzZPRHlLSFpZY3pSd0RIUnNjcHhnRWxqaGpOTG1KZWRNRTVlVHV1Y1RqbDlkSFp3em5FKzZ2eW5pNFZMdWt1ankrZ0M0d1c4QlFjV0RMdnF1YkpkYTF5bGJneTNSTGNmM2FUdXV1NXM5MXIzeHg3NkhseVBPbytubnFhZWFaNkhQRjk2V1htSnZFNTR2ZmQyOWw3ajNlbUQ4dkgzS2ZMcDhWWHlqZmF0OEgza3ArZVg0dGZrTis1djc3L0t2ek1BRXhBVXNEMWdnS1hGNHJBYVdPT0Jqb0ZyQWk4RWtZTWlneXFDSGdlYkJZdUNPMExna01DUUhTRVBRZzFEQmFGdFlTQ01GYllqN0dHNGNYaDIrQzhMc1F2REYxWXVmQkpoSGJFNm9qdVNHcmtzc2pIeVhaUlgxTmFvKzlFbTBaTG9yaGo1bU1VeERUSHZZMzFpUzJPbGNmUGoxc1JkaTFlUDU4ZTNKK0FTWWhMcUVpWVcrUzdhdFdoa3NmM2l3c1YzbGhndldiSGt5bEwxcFJsTFR5K1RYOFplZGl3Umt4aWIySmo0bVIzR3JtVlBKTEdTcXBMR09kNmMzWnpuWEEvdVR1NFl6NVZYeW51YTdKcGNtanlhNHBxeUkyVXMxVDIxTFBVRjM1dGZ3WCtWRnBCV25mWStQU3o5WVBwVVJteEdTeVkrTXpIenBFQkprQzY0a0tXZHRTS3JUMmd1TEJSS3M1MnpkMldQaTRKRWRXSkl2RVRjbmtORHhNNTFpWW5rTzhsUXJsdHVaZTZINVRITGo2MVFYQ0ZZY1gybDJjck5LNS9tK2VYOXRBcTlpck9xYTdYdTZ2V3JoOVo0cnFsWkM2MU5XdHUxVG45ZHdicVJmUC84K3ZYRTllbnJmOTFndGFGMHc5dU5zUnM3Q3JRSzhndUd2L1AvcnFsUXJsQlVPTERKWlZQMTkranYrZC8zYkxiZHZHZnoxeUp1MGRWaXErS3k0czhsbkpLclAxai9VUDdEMUpia0xUMWJIYmJ1MjRiZEp0aDJaN3Y3OXZwU3hkSzgwdUVkSVR0YWR6SjJGdTE4dTJ2WnJpdGxkbVhWdTRtN0pidWw1Y0hsN1hzTTltemI4N2tpdGVKMnBWZGxTNVZtMWVhcTkzdTVlL3YzZWV4cnJ0YXFMcTcrOUNQL3g4RWEvNXJXV3FQYXN2M1kvYm43bnh5SU9kRDlFL09uaGpyMXV1SzZMd2NGQjZYMUVmVVhHaHdiR2hvMUc3YzJ3VTJTcHJGRGl3LzFIdlk1M041czBWelRRbThwUGdLT1NJNDgrem54NXp0SGc0NTJIV01lYXo1dWVMenFCUFZFVVN2VXVySjF2QzIxVGRvZTM5NTNNdkJrVjRkTHg0bGZMSDg1ZUVyM1ZPVnA1ZE5ienhEUEZKeVpPcHQzZHFKVDJQbmlYTXE1NGE1bFhmZlB4NTIvZFdIaGhaNkxRUmN2WC9LN2RMN2JzL3ZzWmRmTHA2NDRYemw1bFhtMTdackR0ZGJyOXRkUC9Hci82NGtlaDU3V0c0NDMybnVkZWp2NkZ2U2Q2WGZ2UDNmVDUrYWxXNnhiMTI2SDN1NjdFMzFuY0dEeGdIU1FPemg2TitQdXEzdTU5eWJ2NXovQVBDaDZxUEN3N0pIbW85cmZUSDlya1RwSVR3LzVERjEvSFBuNC9qQm4rUG52NHQ4L2p4UThvVHdwZTZyenRHSFVadlRVbU45WTc3TkZ6MGFlQzU5UHZpajhRL0dQcXBjbUw0Ly82ZkhuOWZHNDhaRlhvbGRUcjB2ZXFMMDUrTmJ1YmRkRStNU2pkNW52SnQ4WGZWRDdVUCtSK2JIN1UreW5wNVBMUCtNK2wzOHgvZEx4TmVqcmc2bk1xU2toVzhTZWtRSW94T0hrWkFCZUh3U0FFZzhBdFJjQTRxSlpqVHhqMEt5dW55SHd2M2hXUjgrWUF3RDdFUzBlbFE5QU1ESldJbTZFc0x3SEFPR0lSM2tBMk5aVzV2OHhjYkt0eld3dFVoc2lUY3FtcHQ0ZzJoQm5Dc0NYZ2FtcHliYXBxUzkxU0xQM0FPaDhONnZOcDAzNVBBQ3FNMTJjUGFDUi85OGErUytZendkMWpHaURkUUFBQUNCalNGSk5BQUI2SmdBQWdJUUFBUG9BQUFDQTZBQUFkVEFBQU9wZ0FBQTZtQUFBRjNDY3VsRThBQUFBQm1KTFIwUUEvd0QvQVArZ3ZhZVRBQUFBQ1hCSVdYTUFBQXNTQUFBTEVnSFMzWDc4QUFBQUIzUkpUVVVINGdjTkJDME0rWWVxL0FBQUFIZDBSVmgwVW1GM0lIQnliMlpwYkdVZ2RIbHdaU0E0WW1sdEFBbzRZbWx0Q2lBZ0lDQWdJRFF3Q2pNNE5ESTBPVFJrTURRd05EQXdNREF3TURBd01EQXdNRE00TkRJME9UUmtNRFF5TlRBd01EQXdNREF3TURBeE1HUTBNV1E0WTJRNU9HWXdNR0l5TURSbE9UZ3dNRGs1T0FwbFkyWTROREkzWlFxbVU4T09BQUFNUm5wVVdIUlNZWGNnY0hKdlptbHNaU0IwZVhCbElHbGpZd0FBV01PdG1XdVc1S2dSaGY5ckZWNENCQkFReStFVjUzai9HL0NIbE5WVjNabGplM3lzR2xvcENVRVFqM3N2bXV1ZmMxNy80RWpTMmhYT01WZlRXRU1OT29QRSs1WXUzVFZYS1pKckZnbWxGU3RkUXFpYmY4THBaRStUekdXOU5HcXFxWVljU3lnaHovQTYvcnorZDRjejYvVWEvVDVXa3ZYTHNyOTVYSCt2ZTR5YXRkU2s2Ymtzci9zcWwrWnpXOWZ6WU9UblBBTUxEbFhxYzUxZTV5Q3BWandYdnU1YmUwMlFMOXg1dS9GNTBPZlhBNjAvNzMrdGxQdS85Vi81NTBDWnlEeW1wdjNNME1Ja0NMR0sxdnQ2K0pkRm9TcjIxNWRGTTc3dXAzRHBadFdtKzNtUXZ4NXN1cE1TK25xaGZRMDBDZEJTLzdvL1hwWkt1L1N2TEtwL2JhbCtzUFM2SDlUM0I3OUY1L3RvR2Z0UDNpbERWdnVmdy85L3k2UC9ZaUJjT0d2NWN5bnlkVDIxVmNtdHlOZjEvUzk1cDBNOWp5TFgyNE90a25mMnQvdjJpdFNmOXh0UmFhVzhEMFFKNS9SS3VKLzNzOGFjOC9ndzhXVGkrVDZRcXZHV3ZWdFVjN2FTLzd4UDBqcHA0dThERWZSY1NucTdUNTUvV2hwK0hhWGsrRDVRMDVMdEZ3NTl2OUMxa2FMMTdUNHJLSnIzMjBBazRTanAzUmRub0p6eWZsOWFMVVUrT1ZzSnMzNEk4Nm8vVStQbkNvd1ZmTEFvbnlYazloNU5vdmJKZC9pMHRFOVI0eEZoTHU4djZDNGZCam9nbCtWRFFwNXkvQUg2UHdlYWhPaHR5UlN3NHRQeVlXa1AxSDJhR1Y1NXl5UHRMTG1YOERaUUNNZjh4RUNKM3lrZTlPTWVtSWczV3YxVkpqbXBNN2lSa0FZTXRRdjJnOE1lQ2pyQnlxQ2xKdGt5aGVFU1E2WGI4YjhJOHNmaGFaMW5ONTNkdkJZMXRFOGRhM3ljbm13OVJaejYrdFJQTWVOZTJpQTU3NVdwK2FlT0JPVWhVVyszQzBiYmg2NEt5YWhmZlI0ZmZRUEVHZkJVdmgrS29WRzhjVCs0SkN4RDFzdC9ESkRHOCtLeE9uY0dPdGh6b2xGNHFmRFNBVGR0QitwWTNGRU4xRmZGa29aVmpRSGFlT2tIQmpBbU5kN3ZpWUU2TDNWZUdydzBlR25NUTFnSEZCKytPU1M4ZUdueCs1VGE1dmNldDlISUI5ckEzVlIveEZPUjNqRW1tdEU4UkNrME9yQ01FN1dZZGppT2p5UnFKTFFSNjRrUWpYZmh4RmhKeUlqWnNURUlKa2VqRStiR3poeWR6b1B6NEl5RmNYSmVuQmZuelhsemR2cDdoNzFZbW9RanJqSnRCUkdsT2I1dDZLZElHNFNNWjRWbnpDNlZlNVVYWVY0aGRJS0lFRUlzbmFLVndjdk1LUGhEOElXY0lPRUQ4WEluZFFxRHJGU0NGV2tySkNZQjFXa2VEclluNVZtbGFGUGRJVFZ1R0RjWVBYV3VCOWV6b2paNFlSL0tuaUc1RVcybERGS2dHbWlMT2huaFFFNCt3QWJTaEl6Sm1RRXpDWmZ4VVNhU0dVdnp6Q0V6V01ZbkowdXliekp0aFlLQUtnU2pwRTdtV0NnRk1WcFlPelZKTVNtcFJPdTBRYUdESm9XbEZzSmRDUFA5eHhKVjZxM0NGRXVVNktuMm9IVmM1Qjd5ekZiUTdyZDBWQ0tqT3dWWUpweGFycVJFWmZhYUZramlDQ1FTQmhTb1RGeU5aNGl6T3FDanVsQlB6RnE5SVZzR0NleWhrVDh0bjFMdUpQTU9yWEdOdGExelBiam1uYlpyYUNTamtic20rTWhZcHpIVG9XUkRxRmpqZCtjM0RyZkpieVl4WHVneGhzNnlPcFoxVXFLenBFN1pkRktnZDhDLzQ0dStadWgrQXMwZjZud2tDNlBFQXd1VU9sVkQ1ekZPOVhERzhZTUl6a2dHU2tmbHBUQUxlWVFHUWRydE1Ic044NVFabVRzWmRKMC9FdlRvemNVU0YzNVo5RnRrL0pvOFgvekdIWnQwMklKRm0vQ2hJOE91SHJZTjZsSER4Z2Q3YityU2dsTjNUcFk3eU9Ca3RlTXJIeWs0eS9aOXFoc3ZpVjRrQ01Dc09LQmlzMUZjZ3dlcm5qY2poWHovRjdNRG95dkdObVBzZUd0YWpMdXh1Qm9wcXlpd1NCVE5rZHFKMGxPVVNkdkE5SUZxb1RFSk9oSUFvSFZ5ZWhhQW9GQ1pVQWVGaHo1QmVmZVkyN2pna2dVNmJDWUZIYUpFU0NxV29oSE9BQzFHTEdORlZuV3E3Y2haRkxORjFSbTFlZFFoR01vOTcxZXNZRVBOTWNKenNUYUx0ZTlJYnNYcU5UWndoRUtQS0pUWVdvK3RlMnlMMzk0ZnhNa2xtbzVvRnE5b2c5eGRLMUpoc1V1UEhkZjBXb0dqSFVtTjJISG9pRG1PTk9KZ21ZTUJCNWFNMWVNQklGSWdUaWc3empyaXhEOXp6amh4OEFLMUZsVzg2c0V3aTRRNkxnYmJDUEtOZFJ1ZmJNdHhrMUI3VzNTaTRXbGYwWlVMSHZqdzZMdkxqYVg0bnNJVDBweXNBelRBT2tJRi9qWFdERGwxbkRtMzhKS0lWRG42U0tUeHU3dklXcEJPRjRCTEFDdEpsaVZOa2VRSExGMXlYdXhLcCtRK0pLOU9kbEZoOUMxS3MzcEptYWdHaDhJWkdYcVhJNmgxMEhZandMUnNVaXRWeGdCMVRkaHRTVXN1alJScUhUdFdGc0RrRW1OVVBDOW1TMEFUcWdjRFV4R2tublFid0xFRElpSWpLYWhzTXVoSFJzaUJ0cG1NL1JJNm9jc2xjMVZBYzhyQ0w2dXFMR1plbTd3a2E5RFBnbUZBZUJWS1JsZ2dVTjdGTFlxekVuZUFLeUZmZEY2NGhmSmRnMElnbFRQaHcwVnhjSFpKeHpiUmxNUUd1SjhUSFZNQ20xUDFsRVpMaVpCbGJFWHlYQ25iVG5tMVJQS25Ba0NYaGlpY2tvcXZkTFlCaU5Pa2ZTZmRCbGxrQkJwOFlUTlYxR21MT1RYSXBqVXNhck9CUHVVT2tqR1REVmJ1d0IzRDlKb1RLNFZZUExIZ05KUzA3RDJOM1Fob1RTaXFORm5SM09sS2l3aFRMb2xFVFVCTTJuSTJvalFZQ1NRaFBqRTV6NTNNOEMwd0kxSk84NEhJZ3oxNGxpVFVmbEVYa3pUZDJBTlZZYnVNZ2tjeGhYTEhmcWFEdXFERGpMek1yV2NLbkFvRE9OZzRGREM1ck0zV1c2NmowRUVDVktWRGJYaXBWcFFuTHpjWXErV1JxZVBjZ0VlS0JWbUlTenNDbmI0OTFkeVpDRHNnOW5ubGU4UEF5QU96S2NCTVZQTWNQWk5TbVc1NUdiRlliS1VRQVZ0M0poVWVya1R2NDhyczYvQjh2ZUNoV0VCMm9CNnNnQXVCZzBKbEZwS2dTS1d1QVhWZ3JSQkdpTFVYSEZhT1JNL05DVEk3STJIYmg2d3BoTHFBd2tXaFZ1M3NkQnh4aVBTdmxCSXNYaG9wMkNvaWRJNWlnSXdoT0cwY3hxdWw4MWJ2TkdlZ2dkdUcwZGdoekVRRHhlYlNzdGoyck5yS21sWkFwc0pPc2V5eENwQVBnOGNDQVNDMXNLR1FXYjFmR01NT1B2T29nNk1ZSnJoVWJDb3lDZGVTVEZZMVFTMzVCUDFzTHJlUlBjeGsxUGcrWHpnV1d6YTVsQ3BYZUYycmtjUjBvcklWZXRhMkp4dW9wR1lkMVV5bTVNYktIWWxRZFREeDZKemRzYlBxN0g2aFhSdjRqWFlZYUg0NFpiTUIzNU5zd09PT1VuQWdIVFVHMFNOYk5xRWgzNk9WaWtRZ3ZsUnp4dzdFS0tsRDBReDJHVEUvWDRZbVlRSnRVTzRWNTV4MVZRWFkxVnRsQTB1YUpmZ0ZudEJkRzMxTmVyVm1WN1VOYkdXdFJMYWl2eW9BWHdlRkJMRFcyV2lIVk5pdFVFTDE2TmNOQW02ZUF3NEltRng5RjFSWnZaQVM3V2lLQmttMU9CY2dFa0E2QU5nemtGQWJWUXA5cmthcXQ3d3A5a3dvKzBBZEhlY0tmbUhUbE1iVnFubGp5TWJlRkRUWXpRQnRNNHoxM2FqTDFtZHZVSDNEaFczNGJGTUJETzR0a0d2eHluSnZXL1VpT0x0NWdqY040WXgyUTY0aE42QVcxR2ZzemFBUFFMc2JWSDZLeGNBU0VBZEoxU2c2NnFRVXR6THR1dXVRK0JvU3l2Q200UWhqczJ0dFlCaEpoYm96ODBrU05HT1haUU9zSDkwTkZyUkpsK25WbHVZTGtoV0QrR3ozVGJvc0Zqck1IWTJueU5zRnJiTGxoMkxoQzVwcEI2QXBmQnBNbVNrcXFwd0NiRmN2bmNuUUtuaWdrelNrMmU1WTFSdEUwbWJ1QUN3OURERXplNGYwWVpRK0tMT3hEVWFmZmFJRVY4NVhYNUQ1aGpzMnRIOFNHSXZPWndoa2JFRjE5WUVNR1hIQlZ4bkdueUI5d3ZkOXMwTEsxS2prbUVacC9VS2ZZWGkxQWJDUmRXMWdEYlZOZlMrMk05Q3E4VElvUGZvb2pMVDVjZElzam1uakNKNnhrTFlzNEFMSHdUU0grYUZTOTRKb1pwZXpVUlJhVVE1Z2ZIRklEMFlBU05KaUw0RHNCMjVueVlPVmtRMlpYZlZNMTZRMkVDUWtTRnF6alRuaER5WXpCRXFiT0dPQ0ZuTU1uWXcwV2NpRXNDWjRCbkhvQkJUUXJYWDZhTmM2ZStnd2tHMXBzaGhrYVBMRmJta0I5d3Urd1krR0hRQlIzcXNzdkZYSzBnV0tNeDV1V0UxaHhjMUFwZ2hpNGs2NFZ2ZUI3MUcvN0VKbTY4Z3ZWTEFwREQ0WGltYzU2c0E3T3h2b01neHVaN1k3RTMxVDBrWEFCbGFtRFhodGFHUm5uNVFoT0IvV1B0OWV3WXROQWtDSnlJQXgwVmlrL2lLZVlHcmZnQ2JnTW54Y0cyamRDTis5YkNJVDJpYXcyNkUrbndqcHduNWlGNC9vaGVpT2xzRWwwUnhJOGd5QlFEdGVrT0Z3MitXcXkvVUVEYVhaNk5USU9xUU9OVkFkWlBHT2toKzFPdUdrVUJvT05GL1V5TTdEOTVwZ0pHWHJmckh4T3ArYjQ0OFBEMS9maUVRNTdnOFFZTmQ5WjVYN2F5RGMvdlJnZVYrZnBmLzh4QnJEai84SDhPTmUrRS8zcno4Zi9QWjkrOXZJMjdMKyt0SmVYbC9POG55dUVURFBRS0t2VDJxdnI5RGw5YkdrUE4vSjBhY3BmVGovZGdEK0xESWwrYzJ5TVI2ZlFLdkhrWjVlM3grcjNENkM3dXQ5bjM3M2VYVjlsb1k0T3FjWlRneC9mSXIvR2hrS3ZzL3QyMC9EMmVTTTltMVIrSXZqK2hjVDlUb1JBclAzbFFBQUFDVjBSVmgwVW1GM0lIQnliMlpwYkdVZ2RIbHdaU0JwY0hSakFBcHBjSFJqQ2lBZ0lDQWdJQ0F3Q3NEVy9HWUFBQWVjU1VSQlZFakhyVlpiYkp4WEVaNDUvL2t2ZThtdWQrMWRyMk03ZHV6R3VUU2hpZEtFcGlGcEJDVVJFb1FLYUZVRVJSVkNvaytnVmp4Q0gzamlBZkhDRXc4b1NDQkJLd2pRb3BhV0ZBcE5RK3ZnSnMzRmNaeUxMN0c5YSsvTnYzZi8rMy9POEhEV2JtZ3JWQzduNlQ5ejVqOXpadWFiK1FhSlNCSXdoRmpLdWJxZk1yUlMxZ1FBSWtDRS8zMXhTY1FRYnl3N1AzbDlzZVpFR3VKOWcrbHZQdFJ2NnRyL3hRWm5pRTBuK3NGTGM3WW5pRWhqK0tmSlppenBtZU5ERzBxU0FPRmZqQkVBQWhBQjNDVlh3dmZwTUFCNDRXSzExbzd5S2Y3NWZUMkhSalBaaFBiMjdiWHJGUWNSaENRQVlBaUlRQVMwL2pPdXgxREpONFIzTDdWbGZpUXV6TGMxeENjT2xiNzI0T2Fuanc4OU1KcHArZUtkdVJZQWFBeUphTGJtbFZjRFJFQUFBaEJTaHJGRUJOdUx5bmFnUEJDU0lpSGx1alVpaW9TTXBlVHpEYjlzQjFzTDFwR3hybGdTWjNoc2UvNmxTL1ZiVlJjQWF1M3dSNi9NejlWOXhuRC9VUHFwWXdPV3J2M3N6YVZyWmVmeGc2VlRaOHROSnpxNXIrZnhnMzFURmVlSGY1dzlNcGI3K2lmNkFlRGxLN1hueDVlZk9qYkFLM2JvQm1La2tBQkFCZ1FBMjB2SkgzOWx1NkV4QUhodWZQbnlnck1wb2NXQ1hyM2EzSkszdnJDL3QrbUtoVWI0MHplVzVodEJOc0dmUDcreWR6QXpsTGRhdnJ5NjZDalVUSlhkcGl0Nk15YXozVmdROUtSMWxSWUEwRFUyV2tnTzVpMHZGT016YTdrVS85N25ocjl4dEMraHN4c3JIZ0JZblBtUjVJdzljM3h3ckRjUkMvanpWQ050OGVHZVJMVVZyWGt4QUN3Mmc0R2MyWjh6V1JCTElMQjBkbmQrVkc1alNkdDZrNDhkS083c1N4OFp5eGtjZzVnVWJJS1lIajFRL05UTzdpY2VMQmtjWjJzK0FJd1dFZzBuYWpoUkxHVFpEZ2Z6bHNFWlI4U050MjhzalNFQWJMTDRkeis3ZFhrdE9ETlpINTlaQ3lMU1ZENEprZ2JiMXBzRWdJRmNvamRqTkowWUFNWktpZE1Uc21LSGFZdXZ1dkU5eFFRQThLVEJBTUVKeFB0d1JrU0krUExsNnFtelpkc1QyUVEzZEpUVU9USTRLcWROemxLbTVnU2hrRFJTU09xY0xUYURwTUdFcE5GaUFnQllQcVhyREN0MnFBb0tBQllhL3JkL2VmMFhiNVhkVVB6cTdSV0RzeWNQbDU0OU9XeHk5aDRLMTcyV1JFSVMxMUFROVdXTjdoU2ZiL2czVjd5VXFRM21MUUJnL1Rrem0rVFh5azdMajdtR0FIQnBvWFZocnEwenRySVdyTFRDVCsvS2YvbmpmU09GWkJRVEFnSUFRL1JDMlFwaUFIQkQyWERpVFJiWEVDMWRHK3EyNXVyK2xjWDJRTTdzU1JzQXdBWnkxbEMzVlcxRnA4NHVCYkdZcWJvdlg2NTNwL25lTFdrL2twSWdrK0FBTUZWMjJvSFFHS2pDamdTOVB0VUVnTGR1cmRaYVlWL1dVR25iVmtwVzdQQjZ4VlVKa0VRY0FCN2EzblZwb1QwKzA1cGNtbzRFMlo0WTdyRjI5S1dubDkyVXFaMjdhWnM2L3VIZE90ZFEzU0lrSkEzMnlwWEc5TEpiWFlzWXc5MERLUlc2MFVJQ0FDTFJTUUFSY0FCNGVGZjN4TnphdVp0clFjd2trYzd3eWNOOUFMQzF4eG90V0pObFoyS3VkZUxlbkJBMFhYRVVUQk02MjkyZit1dTB6Um1PRnExUDdzZ3JBMFBkQ1V0bllTeTM5aVNVSmxjOTZ6c25obDhzVmE4dU9nbURmV1pQOTg2K3RKQ2thK3pwNDF0Ky9ZK1ZZc1o0OVA3aTVKSlRiWVZFeEJDQ21MNTZxRyswbUt5MW95L3VMMWk2cGtpbE4ydmtVbnpORXdONUN3QVFrS3QycURGOFpGL3hrWDN2OVdlTklSRnM3cksrOWZBV0pkd3pzR25qVkJJWm5IM3AvdDUxVEhjZ2Jtak1EV1YvenN4WW5KUUh5aEVDSUVtSXFJRE9FRHR5QXRXa0VaR0loQVJkUTBSZ2lBcXlzU1J0WFhscDFmL2RoV3ExRlI3YjNnVUFVcExHa0czMGJzYlVuOER1WWhaMUYwTkVBSWFvVUJURzVJV2lVL09JaUtDTXZYdW4vZHQzYWhyaXh3YlNHMFRFLzBNR1JBQVl6QnQ3QmxLNnh1NStCd0RrVS9wSXdYeGdKS3VDMlFrREVhazRzSC9Mdi9RQndvSVBEQVpFSklnNFkrb0lFQkFBcGFUL2d0a1ZadUFqREI4TUVXcXQ4Ry9URFJWSG9nN0gwbnFMVmR0cUsrd29BQkFCUTZpM3cxbzc3QUJobmE2RFNLNjZFUkUxbkxBZHhLQkkvL3lzWGJHRE01TjFGVTMxSWx5UGlkcDZZVHd4YTd1aDJCZ3Z4bWRzVi9WZ0JFWFhBSEN0N1B4bVlqbVc5TVowODlwU0d3QzRHNHEyTHg0NzBMZnFoaGZtMTZiS3pzbTloZE1UeTRXTXNhMllUQnE4YlBzM1Y3d2RwZVRGTzYzWnVuZGlkK0gyaXJ0M1MyYXhHZlRuek5mTzFnK09aQ3QyYU9uczhEMDVMeElwVTdPOTJPUk1KWlVsRFcxTHQvWDlGMjR0cllibDFhQTNhengzdnJKL09OdWJNZWNiZ1JmSm1acmYzMlcyQTdHdG1PcEptMWNXV2w0a0FXRFg1dFNkUm5CMExGK3h3K1cxY0hkL0dnRGFnVWlidkdLSHVzWlUwRmpMajhkS3FXZFBqdjc5MW1yZGlTek9Vb2EydWN1OGQzUEswcG1sTTVPem9aNkVxVE9ONFdneGVYUEZMV1VNQU9BYUk0TFJZcEl6TEtTTmJFTDNJakZiOWVZYmZxMGRhaHFxNUhHRHM5K2ZyMnd0SkVwWjA5SlJFdlhuekw5TU5VeU9zWVRiVlRkdGFuNGtpS0RoaEFONTB3dGxKcUVEZ0pDMHlkSmV2TGhpNmt4akRBQm1hOTZCa2N4OWc1bWZuMXNzWlUyTHN3NTQ3OVM5MHhNVlB4S0xUZSsxYXpVaWV2TkdzOW9LWm12dStablZlanRvK1pIdFJRc05iOW4yWDcxU2pXSkpSUFYyRUVUaXpHU3QyZ3FhVGtoRVRTZHNlUkVSemRmZFpkdFh3ZytwZ3crdEtiVnVWOTJGcG45MExLK0duNDlVK3FxU0paRnFuNnFrSlhYWWtZQVFPaU1qSW9TeDFGWDNXUzh4S1FseFE2V0RiMXIvUW9CL0FxWklHWEwzelRoRUFBQUFiR1ZZU1daTlRRQXFBQUFBQ0FBRUFSb0FCUUFBQUFFQUFBQStBUnNBQlFBQUFBRUFBQUJHQVNnQUF3QUFBQUVBQWdBQWgya0FCQUFBQUFFQUFBQk9BQUFBQUFBQUFFZ0FBQUFCQUFBQVNBQUFBQUVBQXFBQ0FBUUFBQUFCQUFBRVRhQURBQVFBQUFBQkFBQUNvd0FBQUFBT3lQNWZBQUFBSlhSRldIUmtZWFJsT21OeVpXRjBaUUF5TURFNExUQTNMVEV6VkRBME9qUTFPakV5S3pBd09qQXc2aFpPMGdBQUFDVjBSVmgwWkdGMFpUcHRiMlJwWm5rQU1qQXhPQzB3TnkweE0xUXdORG8wTlRveE1pc3dNRG93TUp0TDltNEFBQUFZZEVWWWRHVjRhV1k2UlhocFprbHRZV2RsVEdWdVozUm9BRFkzTlNBSkFNd0FBQUFZZEVWWWRHVjRhV1k2UlhocFprbHRZV2RsVjJsa2RHZ0FNVEV3TVFZbk5xOEFBQUFTZEVWWWRHVjRhV1k2UlhocFprOW1abk5sZEFBM09NblVleWNBQUFBb2RFVllkR2xqWXpwamIzQjVjbWxuYUhRQVEyOXdlWEpwWjJoMElFRndjR3hsSUVsdVl5NHNJREl3TVRndlRBVkJBQUFBRjNSRldIUnBZMk02WkdWelkzSnBjSFJwYjI0QVJHbHpjR3hoZVJjYmxiZ0FBQUFBU1VWT1JLNUNZSUk9In0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDE4LTA4LTE3In1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAxOC0wOC0xNyJ9LHsiYWFndWlkIjoiZWZiOTZiMTAtYTllZS00YjZjLWE0YTktZDMyMTI1Y2NkNGE0IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiJlZmI5NmIxMC1hOWVlLTRiNmMtYTRhOS1kMzIxMjVjY2Q0YTQiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiU2FmZW5ldCBlVG9rZW4gRklETyJ9LCJkZXNjcmlwdGlvbiI6IlNhZmVuZXQgZVRva2VuIEZJRE8iLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MiwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2ludGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjI1NiwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sImlzS2V5UmVzdHJpY3RlZCI6dHJ1ZSwiaXNGcmVzaFVzZXJWZXJpZmljYXRpb25SZXF1aXJlZCI6dHJ1ZSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlEZFRDQ0FsMmdBd0lCQWdJSkFJQ1VUdmtndGo1Q01BMEdDU3FHU0liM0RRRUJDd1VBTUZFeEN6QUpCZ05WQkFZVEFrWlNNUXd3Q2dZRFZRUUtEQU5FU1ZNeEN6QUpCZ05WQkFzTUFrTlRNU2N3SlFZRFZRUUREQjVIWlcxaGJIUnZJRTExYkhScFFYQndJRVpKUkU4Z1UzVmlZMkVnUTBFd0hoY05NakF3TnpBM01UUXpOekU0V2hjTk16QXdOekExTVRRek56RTRXakJSTVFzd0NRWURWUVFHRXdKR1VqRU1NQW9HQTFVRUNnd0RSRWxUTVFzd0NRWURWUVFMREFKRFV6RW5NQ1VHQTFVRUF3d2VSMlZ0WVd4MGJ5Qk5kV3gwYVVGd2NDQkdTVVJQSUZOMVltTmhJRU5CTUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUF2QUtPZXFDNS9wMEQxaXNDWUtRSmxWVU9yQjZJN0RMb2N1bkUvUm04ZHVHVGJ5eFFodDNDYkZWVHYzTjJMcDJmYmp4bEkrM3NPU0drMzNGVFlrVHF4Y2RKSXJKN1Nza0JjVVNOcmZLT2FRVC82S1FjUDRDbTdWKzY1NVRxK1RXeHl4V1FoRHlndDE1cW9QN011SzZiVDlTd3BDanBmS2hhTVNteVFhTW9VY1JBYkxxZHpCQ2FjMGh6QitaZStncUpsbldWOVVhU0kyckZzVnVINFpFMGNSTytNT3BhTGdNL3MyNDhuR0dIcDIyZXdTUWZiblBhQmJiOGlxeUFQK2N1NTJHTHNVcEtSSmViRStSNitQTVE5SkNkV2VRWlIzRGtmU2lka3YzbWNiNGpxMWlJdGErTXFLaFJud3JmWGg5MTFLV0xuWUFsOUVOQ2hMWDBjNlNqMVFJREFRQUJvMUF3VGpBZEJnTlZIUTRFRmdRVVdMdmhSQlVQbjh1TElmNjgrZ3YvTlpJd0dTSXdId1lEVlIwakJCZ3dGb0FVV0x2aFJCVVBuOHVMSWY2OCtndi9OWkl3R1NJd0RBWURWUjBUQkFVd0F3RUIvekFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBRkxyRGhhZWdlS0h4WWpIM0VQM3ZVQktobnpNMjA2QVN4Z2VZQ08yRWM5cE9sWUphZXFGRStzVWFtVVYvcHdqRGxxTmFTZ0ZneTdUd2VZa3ZPbU1uNHFTY3NIcXZKM3pHT0FpYWZ3YWgxdlVIZkNsWFI4K2F4TzJpR09VRjBKS3JaOVlZamJBYTUvNEhDbHY3akZQT2RNV1RPUXluZ29pSEFzM2prdVlqcENMRmxCNFZPaTNkMXdqQTFwblRkQktrQWI3dDhuVHZ3Ky9YYkZ2Y1FhNzNWSDdzanZvQnFEM2ZkTWZSY3VWcTRxVVp0WlQ2Y0dhZ1RIRDYxVHRxaDlvTUNaWGNEYlIxUEdabk5icXljc1dQRElLMG5wbUszLzNsZlY4Yytac3J5NmUxNzBtZkpNWnA3TzhtNkNTejYvVkxLK3lESmQ3ODQxd3BtZUtUZjZJblpBPT0iLCJNSUlDNlRDQ0FkR2dBd0lCQWdJSkFKYlR5cnUxWC9JUE1BMEdDU3FHU0liM0RRRUJDd1VBTUNNeElUQWZCZ05WQkFNTUdFZGxiV0ZzZEc4Z1RYVnNkR2xCY0hBZ1JrbEVUeUJEUVRBZUZ3MHhPREEyTVRJeE5EUTFOVEJhRncweU9EQTJNRGt4TkRRMU5UQmFNQ014SVRBZkJnTlZCQU1NR0VkbGJXRnNkRzhnVFhWc2RHbEJjSEFnUmtsRVR5QkRRVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNVmpLSFdwYkQ3VFNsTXhvY2pUbDZuSWY3eDMyUG1zUTl6R3VMR0dxQTBVUVpvSXEzWEx6TDZMWVV2SjVBNWcwdXlGR2xsSEVmR0FLckVhQ1E4RlZ2UFMvVWgwRnlmeldoUkF6aVRTaWpqTUlJVmpqalV2OW05dkZtY1hTY2dIaWc3T2R6ODg1OFYwa3JOSDk5cUdtM3dqZ2FPZXJUV210K2pYQ1VmbjAxSWtUUHd4RzJIbGdFZDQ1ak5MU1Y3Vm9vbCtLZThFMmtpNGxFa1RlSHpib3VsUjVHVWJwM25NaTdFNDdWTVFhM2JOd256V0Jic2FCU1NRaExrM201SGFLaGh4YTZ3SkRLNDdOaU1Da0NrZElIdVdTUUxWQWZtODVVQU9OdEVPUHdpME91SzNxYmU4eUtPRkdmMEtoQjVNTWVBeW03TVYvTTRXMGE0OW9nUEQ5cE1DQXdFQUFhTWdNQjR3REFZRFZSMFRCQVV3QXdFQi96QU9CZ05WSFE4QkFmOEVCQU1DQW9Rd0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFKV3o1eExNazVXTlliQWI2eU94RUNCb1oyV2VCL3FsNFZKM08vMy90TnN4T1luekxlV281NDB6UWg5ckFtYXh6N2V1bUJsc2tNcTR5R1BTTlhCOXljV0dIZ2tjQ2VTek4yd3Y4Q0l6REJzMm9CWmpUTms2NUxCWkRzc1RPQnRNVy8rdVRGSFFmYnVPM0lTTGhJMERYZlJFaTlORE0zamZrMTF4SGNzZmgyUk1WK1FkTmZ3VmFaWnJDcStvdUcrRXZrdjdLcXErb3l1MFZGTS90ejY4VEdsNnlsaFBGUjFxaDl3dHRwVmpBT09DRVFDTHFQMmRQMjhsd1lCeUNxSFFxVkh3YnVqdi9MWmpabktXM0xZbmRaaXhQUFNSQ0pzc0REd0p2aC9mNm5UeGc5WkUrL0pjWXJlNUNhSThuelZIYVNPQ2pOSjdGelVMRzY0SmlXT3ZRNTA9Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQVF3QUFBQWdDQVlBQUFEbmxVWnFBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRW5RQUFCSjBBZDVtSDNnQUFBQVpkRVZZZEZOdlpuUjNZWEpsQUhCaGFXNTBMbTVsZENBMExqQXVNakh4SUdtVkFBQUsxRWxFUVZSNFh1MWREWEFjWlJtK05PQWZLb2c2V08wUWNyZVgzTzcxUjQxb0hkU3FxREFPZzMrY1lFWEJvbFhSVEVuMjIwdGFLVGM2NG1nQnF6QmlFVVZwQmRxaXd3aHFTZElTMnVwWVNndlJ0cFRTY2tsald6SGFnanBTUmRyNHZMdHZqcnZrMjd2ZHZkMUxqbjdQekROM3QvZCs3L3QrZjgvKzc4YUswTkRhYXIycU9kWFpvcVd5SDlSMGEwRmN0NjdXZEhHVFpvalZDY1BxU2VqVzFvUXVIc095L2VCVHNEbU0vNTRaVDlqK0xXR0lnN0RmQi9zQmNEUHNmNFhmUDhYM2IydUcxWkhRelU4bVV1S2R5V1RIbTVxYWNpL2pIQUtCeWlmMGJCcitMd2FYSVBZUGtNZHFmTDhYZFdwbHMxQUEzMS9Rak93OThMOFM5YjhCWElSMituRGM2RG96bHNrMHNsbmtRTXhrUEdYTzlFSnRWbllHRjRzVXlWbmQ4VVRhZXA4YncrNkxha0JqNWl6ZGJOSlMxcnhFV255V3hnMzZFbVBkV29QUERlamY3ZUFUR01zSGFEelR1QzZoYmowTi9wWG1Bc3J1Z3MwV0xQOE51QkpqWkptV0VsY2wwOW1QSjFKbVcwdEw1K3VpSEJ1R2tYc2xqWDg3bmk0RXpWbms5QXZrc1FuNTdFU2RockI4Qk11UGpPV1AvLzRPSHNSL2U3RDhZZFRsZnRSaEZmZ2RMRzlIdTF3QWZ6cjU1akFPa2lRS2h2VmJHQjZDMC8vaSsyaU5lUng4RmdudlJmeGZhaW56U2s3TkUwaUlVUGJmNDN3V21OVE5kN0JwS0VBN0xaZkZBWTl6cDN5WlRTTURpUVZpL1UrU2c1UVlBSWZPbUcyZXdzVWpBL3JoVzdMNEJlcm1qOWgwVW9CMk9CK1RaVFc0Qi9rOE95Ry95Q2lPb1cxSVlINkg4WFB6OUxiY0t6aWxRR2hwTVp2aFp5SEd3RzNnNDJCazg1WjhvOTBHOFgwTmlTczFJdjJRR2s4S2RXc3p0NHNuSVA4UnFSOW1EUVhESWRaU2JCb1owSWwzUzJPWFpYWXBGNDhNVTE0d25LMWJlVzQxcEwzRkVRQ0psUFZXdERHMmZ1eVZyTlIzdEJUZFNqQjhZcklGb3lWdG5vMk9DekJneEROQkI2cFhLTUh3eGlEOWdLM0tjNlBja3ZCR0pSaStNY21DMFlENGZkSzRYb2g5Vy9ZVENaUmdlS052d2Noa0d0RzJlMlcrYWtzbEdMNHhtWUpCYXhscFRJK2tOUlFkbUdSM29VTUpoamY2RlF3NmNDcnpVM3RDTUxEV3VRc2QzUitBdzNLbkJRNUt5bmpoamR4T25uRGlDRVp1R2pyc1lXbE1KdHBpV1VLM0JtVC9GZkV1ZGhnNlVQZTZGZ3owYlI2ZmE2TW1uWTNrbER3aGFZakxVVTZlczI3dDBnenptN1ZnVXU5NkQ2ZmtIeENhNjJVVkdDTXE4ZzAyalJRbmltQm9SdllpYVR3bTJudGZXOXZDazdXMGRZSHMvd0oxNjNrNmVNWnVRMFc5Q3diRzlLMXNPcVdBdklVMFg1dGlEWnROYlNqQmNHRUVndEhXZHN2SjhFMm5BdVV4aWJwNWhXTTkyb0RmMnliOFgwS3gzckVORjBvd29nSG0waEpwdmphVllQakNpU0FZaWJUMWVXa3NKaWJDay9QbTVVNWljOHJ4UXBsZE1SUHA3SGxzSGhxVVlFUURKUmdoNHNVdUdIU1JEK3BJVitUSjR4SDFMRzlkakNIVGlNbFI0VmlHMkU3SFJiaEFLRkNDRVEyVVlJU0lGN3Rnb0oyejBqaE10SE9lamwyd2VRRlkvbEdaZlNuRmZEWVBCVW93b2tIQ01CZEw4N1dwQk1NWEtncUdJUzV2VHB0bmgwWFUrMDVabkFKREZBekQ2RGdkL3A2V3htSEdEZkZGTmgrSDBRYjB3YU95TW1PRStPVU5JL2NTTGxBMTZsMHcwRjY3NDdxNHBScEdjZHFhN2t1UjVVdEVINDVnRG13S2kvRFpqOC83SUVTMzRyT3plYWFZeldsVWgzb1JqSm96Uk1Hb09BRU5hMGkyZFRHR2VFcDhURkptUER2WXZHclV1MkNFUWJxaGtzT0ZCc3lsaTJXeGFzVGo2TmQxMnBzWHY1N1RDUVlsR0M0TVNUQmFXNjAzb28xZGI2cXpxVnRmWW5NNTZBcEJ3OW94b1Z3Uk1ZbEdOSzM5MVZ5aUtpakJpRVl3bWxQZExiSll0U1RhN3FIaUErdStvUVREaFNFSkJ0cHZoZFQvR0hXeHY5eld4UmkwdFBpRXRId0p4YlZzWGhXVVlFUWpHSFJ3R3VPaDBnVjVrVE9lTWkvaGhQeERDWVlMUXhDTXMxcXRWZ3p1OHJldnB5eVBqd0h3c3BWaC9TdVZXaktkQ3dTR0VveW9CQU81cDgzM29wK2VrOFdzRmRGK3dhOFNWb0xod2hBRUEzN1dUUEJiUkhUY0FleEd2SlROSGZRTU5jZjZCcytQOWVibnhmcWVQSldYMmtDWnpIZ2ZFeGpDR1FJbEdORUpCc0YrRUpFdWRzdmkxb2JpVDV5S2Y5U05ZT2pXWmpUeWZhSFJ1ZDlBSG90WXBXQTROeHFKWTFMZlROVDVLMndlaTYwZk1pQVVENEtqQmZibWo4YjY4c3RqMnc3YUQycWhmVS8weHk2WnJ6SFMycXVscFRObCt3eUl1aGNNakJVNjYxUU5tMmN1UG9QRFJZVFJCanBiUjJNQU9WOUhaek9ROTgvdy9mWXdpUEh0ZmplMGJ2MkZrL0NQZWhHTU9yc09vL0x0NjdvMVhEZ1Z1aUUvQndMeGp4S3hLT1hHMk02ZHRpMzZ3OE9SZG5HUDdUY2drRnVkQzhiVXZBNmpsa2lrTzgrVHRnMklNWFNZemZ4RENZWUxxeEFNTDdldm83N3R0bkYvLzBuWWt0Z2hFWWx4SExxYXpKMnRqRXFiczlpeVNXWG4ydjREUUFsRy9hT3NZQmpXQVRiekR5VVlMZ3dzR0xscEtMdFY2cE5KSFZaNFlITGYvbmZKQldJQ2gySGRRRVhpNmV3bE1yOGxkSjVIWXR2N2hSS00ra2M1d1VENzdHVXovMUNDNGNLQWd1SHA5R2RLWE1YbUVJeDh1MFFjWFBqWWErMHltVXdqMnV0eHFlOGlvbzRYMnZZK29RU2ovbEZobCtTUGJPWWZTakJjR0VBdzZIb0s3QTZVbmNpbzU4R21wc3RlZUIxRDc5Qlg1ZUlnNGYzRHAzT3BHT0xNbC9rZnh4Mnh6RnJmajhWWGdsSC9xTEJMc29YTi9FTUpoZ3NEQ0VZaVZmNzJkV2JwSmR3OSs4NlJpc040OWc3dWgzVmhGNFBGNlFtSi8xTHExZ0l1NGhtVkJBTVQ5dTd4NzB3SmcvVFlmVTZoTEpSZ1ZFYUZYWklIMk13L2xHQzQwS2Rneko1dG5nS2ZCNlMrbVBqLzBJd1pIUy9uSWc1R1J4c2hCZ05Ta1NqbFlpNVJBUHJ1VWxtY1ltSnkvWG5HM0hFeEs2RGlGa1pFeEJqWXlDbVVSU1hCUUR1UG9BNWJvMmJTeUw2ZFUvSUUzaXFVbmdZTm0yZ0QxN04wK0c4VnArUWZTakJjNkZNdzRycGxTZjBVRVRGTk5pOUZ6L0RNV0cvK2lFUWtIUGJtTjhTMmJadDQrYmh6ajBuNUozaUJkRnMxbC9BRTFMMnVCYU5XVE9yaUE1eVNKeUR2NzhyODFKeWVyeTZXUUFtR0MzMElSdE9jM0dsb3A4TlNQMlBVeFZObDEvVHI4cTJ4dnZ4NjhQa2lzZmduZmw4ZjZ4OTBmUVVsNG41R0dxK1l1amh5NXF6dTEzQ1JpbENDNFkxMUtSajBXa2d0Ri93bVJTVVlMdlFoR0Y0bUdBYUxZUFB5MkRnMFBkWXo5SDdzcHN5TjlReFVmQzBpWGZ5RlB0b25pMWxNR3F4Y3BDS1VZSGhqM1FrR3hDS3BXKy9tZElKQkNZWUxQUW9HdllRYTl1WGY3MWxwNjZKS2xIdDgvUXNVUiswWFRYdUFFZ3h2ckEvQm9MZnIyUWZIci9HemxlbUtLU01ZdW5rSFRTekVsTDQrc0ZhQ2dmbytCKzdXak96bjJMUXNuTmNHaUQxVVR1YlBvZG5GNXBHQXpwZ2d2dXRXQnVyNkg3dE91cmlVaTVRRlhTV0tNdC9IQk41RWF5WFVyK3c5TWNFcGp2R0s0dmZJYndWZHc4SXBsQVdOQlpTNUR2V2hONVhuNGVkb3FkOG9pRnl4MndrK2l1LzBJdWlsOUt3VFRza1Q0bWx4RHRyelJtNVhqUFVvMnBYZTZHNDlnanh2dytmQ2hOR2hjZmh3UUM5amFUTEVHOXhvR0ZlV3ZpWStVdVNtMlErY29YZHk2TllpTk93eVZQckhHQmgzSm96dVVDc2VUNW1YUWZGL2poZy94T2ZYTmQyOGdqbzBhSDNwTEFsTk5HZHRMNVlpNTV2UWdiZWo0KzZnLzlnc01xQU9IM0hhU2Z3RWJYY0R2bWVUaHZVcFRlOTZ5NFF6TTc2UW05WTBaOUZwZFBjbTZ2TnBzQXQ5c3R4cE8rdlg0RWJFMjBvVENjc0dTb25sK0IvZjZXYS9WY1Y1MGFTUHg3dE9EZUVCeGcxMHh5K2Rrb1hnZkFneEZpRGUxOUFPMzBNL3JFUU85eUxtQTRpL0JiKzNsK2Jua1BJSE40UHJVTCsxK0Z3QjIydmhveDFpZjFHODFYcGJ2QTI1WmpLK3IybHhSMjRhMWQ4UlB6RWZ1d29XY3NFV2lKTXpZaitJM3crVnRLc2hIZ0gvQVBaU25xalR6Zmk4eGg2N3VuVXVQZHJBMjhOeFlySC9BejN0STRqNStUT0xBQUFBQUVsRlRrU3VRbUNDIiwic3VwcG9ydGVkRXh0ZW5zaW9ucyI6W3siaWQiOiJobWFjLXNlY3JldCIsImZhaWxfaWZfdW5rbm93biI6ZmFsc2V9XSwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiRklET18yXzAiXSwiYWFndWlkIjoiZWZiOTZiMTAtYTllZS00YjZjLWE0YTktZDMyMTI1Y2NkNGE0In19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIwLTA1LTE3IiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJTYWZlTmV0IGVUb2tlbiBGSURPIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyMDAyMDcwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMS4xIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjMifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjAtMDUtMTcifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIwLTA1LTE3In0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiZTBiMGM1MWNlNDY4OWQwYTMxZDliYWJlOTg4NjRmYTY1YmRiYWYxMCJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyJlMGIwYzUxY2U0Njg5ZDBhMzFkOWJhYmU5ODg2NGZhNjViZGJhZjEwIl0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IEJpbyBNdWx0aS1wcm90b2NvbCBFZGl0aW9uIChDb25zdW1lciBQcm9maWxlKSJ9LCJkZXNjcmlwdGlvbiI6Ill1YmlLZXkgQmlvIE11bHRpLXByb3RvY29sIEVkaXRpb24gKENvbnN1bWVyIFByb2ZpbGUpIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTcyOCwicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoyfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCIsInJlbW90ZV9oYW5kbGUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlEU0RDQ0FqQ2dBd0lCQWdJVURxRVJ3KzRSbkdTZ2d4Z1Vld0pGRVBEUlozWXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFESTdYbkgrWnZEd01DUVU4TThaZVY1cXNjdWJsdlZZYWFSdDNZYmF4bjlnb2RMeDVzd0gwbFhyZGdqaDVoN0ZwVmdDZ1lZWDdFNGJsMXZielVMZW1yTVdUOE4zV01HVWU4UUFKYkJlaW9WN1cvRStoVFpQLzBTS0pWYTNld0tCbzZVTGVNbmZRWkRyVk9SQWs4d1RMcTJ2NUxsajV2TWo3SnRPb3RLYTlKN25IUzhrTG16WFhTYWowU3dFUGg1T0FaVVROVjR6czFidm9UQVFRV3JMNC9KOVF1S3Q2V0NGRTVuVU5pUlFjRWJWRjhtbHFLMmJ4Mno2b2tWbHR5RFZMQ3hZYnBVVEVMdlkxdXNSM0RUR1BVb0lDbE9tNGNycHduRFJMVkh2alllUEdCQi8vcEV5enhBL2djU2N4andhSDFaVXc5Ym5TYkh5dXJLcWJUYTFLdmpBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlRxdDBLUW5neDdaSHJiVkh3RHVueE9uOWloWVRBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBcVFhQ1dNeFRHcVZWWDdTazdra0ptVXVlVFNZS3VVNitLQkJTZ3dJUm5sdzlLN0hlMUlweFowaGR3cFBOaWtLam1jeUZnRlB6aEltd0hKZ3h4dVQ5MFB3M3ZZT2RjSkpOa3REZzM1UFhPZnpTbjE1Y0ZBeDFSTzBtUFRtSWI4ZFhpRVdPcHpvWHZkd1hETTQxWmFDRFlNVDd3NElRdE15dkU3eFVCWnEyYmp0QW5xL05EVUE3YmU0SDhIM2lwQysvK05LbFVyY1VoK2o0OEs2N1dJMHUxbTZGZVF1ZUJBN24wNmo4MjVycURxc2FMczlUYjdLQUhBdzhQbXJXYU5QRzJraktlcnhQRWZlY2l2bEZhd3AyUldadnhyVnRuM1RWMlNCeHlDSkNrWHNORDA1ZENFclZIU0pJcytCZHRUVk5ZOUF3dHlQbW55YjB2NG1TVHp2V2R3PT0iLCJNSUlEU0RDQ0FqQ2dBd0lCQWdJVVVjbU1YelJJRk9nR1RLMFRiM2dFdVpZWmtCSXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFEbTU1NWJXWTlXVyt0T1kwcklXSGxkaCthTmFub0NaQ0ZoN0drM1laclFtUFV3MGhrU0c2cVlIUXRQK2ZaeVMzM1ZFcnZnK0JRcW5tdW1nTmhmeEZya3dFWkVMZWlkQmNDOEM0QWc0bnFxaVBXcHpzdkkxN05jeFlsSW5MTkxGY1pZLytnT2lONlpPVGloTzUvdkJaTWJqOXJpYUFjcWxpWW1OR0pQZ1RjTUdhRUF5TXpFTU55Mm5tNkVwK3BqUDVhRjZnaTIxdC9VUUZzdUoxajJSai95bk0vU2RSdCtlY2FsNU9Zb3R4SGtGYkw5dnZ2MkEyT3Y1SVRaQ2x3NGJPUzlucHlwUWltT1o1UUFZeXRtWWFRcFdsL3BNWXo2elNqOFJxa1ZETkVKR3FOZlRLQTJpdkxZd1g2bFN0dE1QYXBnMEo4NGw5WDB2b1ZOL0ZwUzRWQ1ZBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlFnS0ZBaEc2UmFXK2hUeTUyZHhlVDhiQzk2SHpBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBWU16Z0xySkxJcjBPb3ZRbkFaclJJR3VhYmlIU1VLU21iTFJXcFJrV2VBdHNDaERFSHBYY0ovYmdETktZV29IcVE4eFJVakI0Q3llcFlldmMzWWxyRzhvN3pIeHBmVmNhb0w1U2V1Smt6SHhLbjRiVGFTcDkrTXZ3YW1ucDY0a1pNaU5iRkxrbmZQOWtZS29SSGtNV2hlUkoxVXNQMXo0U2Nta0NlSUxmc01zNnZxb3ZxaldDbEZzSnBCY3NsdVlIV0Y3YkJKMW40UndnK0FURW9wWTRJZ0d2Nlp2d2MrQTlyK0FUMmhxcG9Ta1lvQWwrQU5Zd2dzbE9mOXNKZTBWK1RBOVlZL1VsYUJtUFBUZDAvL3I5d3ZjZVBXWmtQaktvQUMvelVOaGZEYmg0TFY4R0hzM2x5WDJYb21ML0xOYzhKWXp5SWFERWhHUXZlb1BoaC90cjFnPT0iLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVIzOG1xMjZTZjJzelZWMkJkRzZXRU43a3VXVXdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFSWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFOWTBXYjlvUG9Sb0tvUXlXUGFKcHoxMXZyV1RnNnpUdG1OajJWb0tSbnl2S0dScXB6YjgzdzVsNllBOTZVWWtZQkRRUDBpbE8yRFBlNndXcVZSNXpEZlJ6ZGNIOGJoK0w3ZEdHdmFlNmhSVFpoa0ZrQ3BYRHM0SGNja25yRGY4RkNsSjdIZTM5SmY0Mi9HMVFtMnp6OVdXbXJQWHRnaUsveDA1R2pzUWZHdURHMXpmNVFUVVVpZThsd3ltSzNUZmRPdk5lZUpBQVBlMnBuN0l0ZlJiK3JWck5XaUR6bFJuMnZObloyd1BvNHdIL1dKNmRoWFpHK3JNV1QrYTZCb2NnMVVmSXc2a2R1bkc0YlRwWnpzdmFjRll5UjBtcGYrRGVPbnBTV0FteXdKV0h2VGxmMllYeEZ5ZVhjVEFDZFFsY01OR0oyVmhaUTQ4eHRQNS9SQlAvOGtDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNoeTQyb2tpcWNUUzFpcWEvSFJXamtCbjRIL01COEdBMVVkSXdRWU1CYUFGT3EzUXBDZURIdGtldHRVZkFPNmZFNmYyS0ZoTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBbitSSElQYnRNRUROZFQxZzhIL1JpdEFrVWRMZ0F0MXRXR1dubGo5a25idjQvNEdsWDdDOXA0NWVmUE85L2FaTDZPVjFYUktCaTZLbXRCVzVLN251WUVuTXgvNUJxQlNiTFQ3cmhkdUM0OVRCZU1iOVBIZFhzVGxTVk5ZZWZyMWRHaWRyNGoweFZCUUxiMXJrbkRBYmRXRHpLZnZuYXlLTzhGcndlN0h4ODQzTUcvckorYzBYcnVVdmJmVlRDSExpSVdoTTdvTkRoTDh4b2I2eFVvOUtMS2NTTCtJdFlzTzMvOVdiOFE5R2pzcUw0RlhzRGNHMVNhWWg3S3BmdU1tT2l4cXpKWk8ybklpY1BZUmcxSTJTdWlVZllPNzB0bWRIY2JsK2tTUW1TWXQ3cnE0dmlJTGcyR3gzajlySVR1V1RqYmFVYVNTUXhnT21NU0h1eXpNQUMiLCJNSUlEUGpDQ0FpYWdBd0lCQWdJVVh6ZWlFREpFT1R0MTRGNW4wbzZaZi9iQndpVXdEUVlKS29aSWh2Y05BUUVOQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU1aNi9UeE04cklUK0Vhb1B2Rzgxb250TU9vLzJtUTJSQndKSFMwUVpjeFZhTlh2bDEyTFVoQlo1TG1pQlNjSVpkMVJueDFvZDU4NWgrL2RoSzdoRW03SkFBTGtLS3RzMWZPNTNLR05MWnVqejVoM3dHbmNyNGh5S0YwRzc0Yi9VM0s5aEU1bUdORDZ6cVljaENSQUhmcllNWVJERjRZTDBYNEQ1bkdkeHZwcEF5Nm5rRW10V21NbndPM2kwVEF1Y3NyYkU0ODVIdkdNNHIwVnBnVmRKcHZnUWppVEpDVElxK0QzNWh3dFQ4UURJdituR3ZwY3lpNXdjSWZDa3p5Q2ltSnVraFl5NktvcU5NS1FFZHBOaVNPdld5RE1UTXQxYndDdkV6cHc5MXUrbXNVdDRyajBlZm5POXMwWk93ZHdNUkRuSDR4Z1VsNVpMd3JyUGtmQzEvMENBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUI4R0ExVWRJd1FZTUJhQUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUU13RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCRFFVQUE0SUJBUUMzSVcvc2dCOXBaOGFwSk5qeHVHb1grRmtJTGtzMHdNTnJkWEwvY29VdnNyaHpzdmw2bWVQTXJiR0pCeUoxWG5xdUI1c2djUkVORnhkUUZtYTNtaW84VXBmMW93TTFacmVYckowbUFERzJCcGxxYkpueGl5WWErUjExcmVJRlRXZUloTU5jWktzRFpyRkF5UHVGakNXU1F2Sm1OV2U5bUZSWUZnTmhYSktrWEliNUgxWGdFRGx3aWVkWVJNN1ZvbEJObGxkNnBSRktsWDh1c3Q2T1RNT2VBRGwyeE5GMG0xTFRoU2RldVh2RHlDMWc5K0lMZnozUzZPSVlnYzNpcm9SY0ZEMzU0ZzdyS2Z1NjdxRkF3OWdDNHlpMHhCVFByWTk1cmg0L0hxYVVZQ0EvTDhsZFJrNkg3WGszNUQrV1ZwbXEyU2gveFQ1SGlGdWhmNHdKYjBiSyIsIk1JSURSekNDQWpHZ0F3SUJBZ0lVZXg5blQ5dndaTlhTNDgzTGRpWUdmdzJTalNvd0N3WUpLb1pJaHZjTkFRRUxNQzR4TERBcUJnTlZCQU1NSTFsMVltbGpieUJCZEhSbGMzUmhkR2x2YmlCSmJuUmxjbTFsWkdsaGRHVWdRaUF4TUNBWERUSTFNRGd3TVRBd01EQXdNRm9ZRHprNU9Ua3hNak14TWpNMU9UVTVXakFuTVNVd0l3WURWUVFEREJ4WmRXSnBZMjhnUmtsRVR5QkJkSFJsYzNSaGRHbHZiaUJDTWlBeE1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBdTFNZXZueTlkeU85WlVDMzlTb01oTGNSL0RYcnRGL2NpTTEydGNpeTJFWEFaNk1rcml2VnRDZkVWTTlYNklTVEVuQlA2dVNZWW92NnBwdjZPNkpoMk5IbVltNHcrSm5TNFZuQ1BVN21IQU1mVkkyTUdUVE1WT2V3MHhVc0c3c0lTSWtJRFVCbXVrOFlLOWM1emljOSt2RlFHTElrc2RYTzVpVkZJZ05HNTNjR1hENFpMWm9BUGl1MFBFb3p4QXFZSWFJNGd4S2hPQTNTOC9XOG1JV3N1Nm9meWo0R3ZrRkc2WjdreUYzMTA3UDdtd0ZITHJJM0VOYVBXTU9GY1RhR2EwZHcrL3ZWUndqUmNFWkJWc3V1VC84N2NrU3MwYTVwa3QzdlpCbGFZZVQ4cHpTcmVWN21vd2NJTTkwTDJpYUFUbFAwbnhtYUU2bk95VGJvakZWbDJ3SURBUUFCbzJZd1pEQWRCZ05WSFE0RUZnUVVTWEVoM3NhM2J0RHVybTRNTS9DN1MxbFJ1dVl3SHdZRFZSMGpCQmd3Rm9BVTZyZENrSjRNZTJSNjIxUjhBN3A4VHAvWW9XRXdFZ1lEVlIwVEFRSC9CQWd3QmdFQi93SUJBREFPQmdOVkhROEJBZjhFQkFNQ0FZWXdDd1lKS29aSWh2Y05BUUVMQTRJQkFRQjVHYzNoYWZ0cDdoS3NFWnNvK2kvWjVuUnVxZG16RzJXQ2xVb1JVcWJhUHlnbG5KRGpLUi9rZmdPbDZpYmJGL3p0aG0zS21YUTdIY0RJUDJ4TWRHN1UyTDJpbWJKUUhxUGYvaDJIcW9qYjRyWmd1ZSs2VzRrdFNSNWVsUjlMMXJZcUUvU0dZTTRpRUtvVlFTdjdSVDFyeEllV2lLc3cvVnh4aS9RT25zeDNGN3g4MENDWWdCNEUzeVF4OFZUVzQ0MGhURXdUQTFlTUhPaXgzMnRQdHl5SElhOFBWVklmVnBIUUpCYU1WdnY1MDhVRWp3a2JVMnJuamZ6b1NUTlM5QTVqVVE4bUJTdmU5NXJqQjBkbzk4RVUrRHhkQnFYMitINmk1d2xJQ0ZnemhkemNzbmU5aEdLVDZselRYNGNJZEpzclkyK3hsZUswRkZReTZsR0VWTEVlIiwiTUlJRFNqQ0NBaktnQXdJQkFnSVVUbmJiR0lSMk5IdnpxSUtGQWVRd0cxWEJpczB3RFFZSktvWklodmNOQVFFTEJRQXdMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3SUJjTk1qUXhNakF4TURBd01EQXdXaGdQT1RrNU9URXlNekV5TXpVNU5UbGFNQ1l4SkRBaUJnTlZCQU1NRzFsMVltbGpieUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRUVnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBT3NYajNrMDRCYW40VFlkdFpLcUQvT1BKeHlEeWFQbUNCVUZVaWFaSWdUdGVabmozWDI1RGhncFpaWHNDNEQweWRJY3JsQTZ3TlVJbk9STC9MOXpCYlRFSU1BVk1HbzZnN1VLQW1iMk1GNkFIYm5oWUpkOWVpa3VwVk5XU2hITllOYzRHQmRPMVlONkFmVXF2SmhIYmUzVjRTTk1QbUJSRUtKUFZ6N1Rod2dtZ2dUZThXczJLMC93c3F2MndTRTdwYkNCc1VaaElYNTFiWk0zcHFEd0pQVG1SRkV2dDAvNnRHNWVPOEYzajE0T1hxZkVobWpuMVZ2eEtEWVFPTFpBeEN3d2dDMFA0Q2RmV3YzeThQU1I4STM1NGhPMVkrR3pOanZJcVgzOE5LTHl3dUlZSEZlck94Tmx4RU1CdkZoWUJ1UnVZQWtrZ1VhUHFONlVCaHNJTHJzQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZDQ29SSGhpeU5uYm5YUldJTDZaQlhvQlg5WVRNQjhHQTFVZEl3UVlNQmFBRkNBb1VDRWJwRnBiNkZQTG5aM0Y1UHhzTDNvZk1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQ1FGYWZKSTEvNVdnOUNFRWltRTFSUDU0UmdRd1ROVE9PUXNMQUNUZStySXRsRlF6QzlaRGhyVjgyOHlYN2p6eStBQXNwM2l6SzdUMXRoMmRsN20rdHUwc3cyUGEvb2xjMDJudDZQeUl3MzQ4Z2FIemhJMSswS0U0NXF4dkZEZUwybE14YlBmQ1l2eUVFYVl6amlRRUxVNTk1MXBYR1d5S01hLzRmTHRPK1pLT1hoTXVWZXE0clhEUEk1NFc2SkhPaUFhaUtkaXcrNWUzYzJrdC9qRklRdE02dk1YZzlMTkZ6ZGpFVE50MjBWWDlRZXZScEZaZnVjTUc5d0NhUURvRmxQenBUTUpLaFBldi9pbUptWlloS2ZyMGxMY2VtdHFqSXhMQW9xWmRPWWZIQmc2K3ZBY2RQSS9pYXVHcFVBdjdYK1VLTm1Ed2paMkJhSDRzTHdoQjJtIl0sImljb24iOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJpY29uRGFyayI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsInByb3ZpZGVyTG9nb0xpZ2h0IjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwicHJvdmlkZXJMb2dvRGFyayI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI2LTA0LTI1IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTcyOCwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZdWJpS2V5IEJpbyBNdWx0aS1wcm90b2NvbCBFZGl0aW9uIChDb25zdW1lciBQcm9maWxlKSIsImNlcnRpZmljYXRlTnVtYmVyIjoiVTJGMTAwMDIwMjYwNDI1MDE4IiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25Qcm9maWxlcyI6WyJjb25zdW1lciJdLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI2LTA0LTI1IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTcyOH1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNi0wNS0wMSJ9LHsiYWFndWlkIjoiMjQwODNiY2ItMzAzNC00ODY3LTk5ZGUtYTNiNTJlMWQ0MjZhIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiIyNDA4M2JjYi0zMDM0LTQ4NjctOTlkZS1hM2I1MmUxZDQyNmEiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiRW50ZXJwcmlzZSBTZWN1cml0eSBLZXkgU2VyaWVzIHdpdGggTkZDIChDb25zdW1lciBQcm9maWxlKSJ9LCJkZXNjcmlwdGlvbiI6IkVudGVycHJpc2UgU2VjdXJpdHkgS2V5IFNlcmllcyB3aXRoIE5GQyAoQ29uc3VtZXIgUHJvZmlsZSkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NzI4LCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH0seyJtYWpvciI6MSwibWlub3IiOjN9LHsibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJlZDI1NTE5X2VkZHNhX3NoYTUxMl9yYXciLCJzZWNwMzg0cjFfZWNkc2Ffc2hhMzg0X3JhdyIsInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo2LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NiwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIiwic21hcnQtY2FyZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRFNEQ0NBakNnQXdJQkFnSVVEcUVSdys0Um5HU2dneGdVZXdKRkVQRFJaM1l3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRREk3WG5IK1p2RHdNQ1FVOE04WmVWNXFzY3VibHZWWWFhUnQzWWJheG45Z29kTHg1c3dIMGxYcmRnamg1aDdGcFZnQ2dZWVg3RTRibDF2YnpVTGVtck1XVDhOM1dNR1VlOFFBSmJCZWlvVjdXL0UraFRaUC8wU0tKVmEzZXdLQm82VUxlTW5mUVpEclZPUkFrOHdUTHEydjVMbGo1dk1qN0p0T290S2E5SjduSFM4a0xtelhYU2FqMFN3RVBoNU9BWlVUTlY0enMxYnZvVEFRUVdyTDQvSjlRdUt0NldDRkU1blVOaVJRY0ViVkY4bWxxSzJieDJ6Nm9rVmx0eURWTEN4WWJwVVRFTHZZMXVzUjNEVEdQVW9JQ2xPbTRjcnB3bkRSTFZIdmpZZVBHQkIvL3BFeXp4QS9nY1NjeGp3YUgxWlV3OWJuU2JIeXVyS3FiVGExS3ZqQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJUcXQwS1FuZ3g3WkhyYlZId0R1bnhPbjlpaFlUQWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQXFRYUNXTXhUR3FWVlg3U2s3a2tKbVV1ZVRTWUt1VTYrS0JCU2d3SVJubHc5SzdIZTFJcHhaMGhkd3BQTmlrS2ptY3lGZ0ZQemhJbXdISmd4eHVUOTBQdzN2WU9kY0pKTmt0RGczNVBYT2Z6U24xNWNGQXgxUk8wbVBUbUliOGRYaUVXT3B6b1h2ZHdYRE00MVphQ0RZTVQ3dzRJUXRNeXZFN3hVQlpxMmJqdEFucS9ORFVBN2JlNEg4SDNpcEMrLytOS2xVcmNVaCtqNDhLNjdXSTB1MW02RmVRdWVCQTduMDZqODI1cnFEcXNhTHM5VGI3S0FIQXc4UG1yV2FOUEcya2pLZXJ4UEVmZWNpdmxGYXdwMlJXWnZ4clZ0bjNUVjJTQnh5Q0pDa1hzTkQwNWRDRXJWSFNKSXMrQmR0VFZOWTlBd3R5UG1ueWIwdjRtU1R6dldkdz09IiwiTUlJRFJ6Q0NBakdnQXdJQkFnSVVleDluVDl2d1pOWFM0ODNMZGlZR2Z3MlNqU293Q3dZSktvWklodmNOQVFFTE1DNHhMREFxQmdOVkJBTU1JMWwxWW1samJ5QkJkSFJsYzNSaGRHbHZiaUJKYm5SbGNtMWxaR2xoZEdVZ1FpQXhNQ0FYRFRJMU1EZ3dNVEF3TURBd01Gb1lEems1T1RreE1qTXhNak0xT1RVNVdqQW5NU1V3SXdZRFZRUUREQnhaZFdKcFkyOGdSa2xFVHlCQmRIUmxjM1JoZEdsdmJpQkNNaUF4TUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUF1MU1ldm55OWR5TzlaVUMzOVNvTWhMY1IvRFhydEYvY2lNMTJ0Y2l5MkVYQVo2TWtyaXZWdENmRVZNOVg2SVNURW5CUDZ1U1lZb3Y2cHB2Nk82SmgyTkhtWW00dytKblM0Vm5DUFU3bUhBTWZWSTJNR1RUTVZPZXcweFVzRzdzSVNJa0lEVUJtdWs4WUs5YzV6aWM5K3ZGUUdMSWtzZFhPNWlWRklnTkc1M2NHWEQ0Wkxab0FQaXUwUEVvenhBcVlJYUk0Z3hLaE9BM1M4L1c4bUlXc3U2b2Z5ajRHdmtGRzZaN2t5RjMxMDdQN213RkhMckkzRU5hUFdNT0ZjVGFHYTBkdysvdlZSd2pSY0VaQlZzdXVULzg3Y2tTczBhNXBrdDN2WkJsYVllVDhwelNyZVY3bW93Y0lNOTBMMmlhQVRsUDBueG1hRTZuT3lUYm9qRlZsMndJREFRQUJvMll3WkRBZEJnTlZIUTRFRmdRVVNYRWgzc2EzYnREdXJtNE1NL0M3UzFsUnV1WXdId1lEVlIwakJCZ3dGb0FVNnJkQ2tKNE1lMlI2MjFSOEE3cDhUcC9Zb1dFd0VnWURWUjBUQVFIL0JBZ3dCZ0VCL3dJQkFEQU9CZ05WSFE4QkFmOEVCQU1DQVlZd0N3WUpLb1pJaHZjTkFRRUxBNElCQVFCNUdjM2hhZnRwN2hLc0Vac28raS9aNW5SdXFkbXpHMldDbFVvUlVxYmFQeWdsbkpEaktSL2tmZ09sNmliYkYvenRobTNLbVhRN0hjRElQMnhNZEc3VTJMMmltYkpRSHFQZi9oMkhxb2piNHJaZ3VlKzZXNGt0U1I1ZWxSOUwxcllxRS9TR1lNNGlFS29WUVN2N1JUMXJ4SWVXaUtzdy9WeHhpL1FPbnN4M0Y3eDgwQ0NZZ0I0RTN5UXg4VlRXNDQwaFRFd1RBMWVNSE9peDMydFB0eXlISWE4UFZWSWZWcEhRSkJhTVZ2djUwOFVFandrYlUycm5qZnpvU1ROUzlBNWpVUThtQlN2ZTk1cmpCMGRvOThFVStEeGRCcVgyK0g2aTV3bElDRmd6aGR6Y3NuZTloR0tUNmx6VFg0Y0lkSnNyWTIreGxlSzBGRlF5NmxHRVZMRWUiLCJNSUlEU0RDQ0FqQ2dBd0lCQWdJVVVjbU1YelJJRk9nR1RLMFRiM2dFdVpZWmtCSXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFEbTU1NWJXWTlXVyt0T1kwcklXSGxkaCthTmFub0NaQ0ZoN0drM1laclFtUFV3MGhrU0c2cVlIUXRQK2ZaeVMzM1ZFcnZnK0JRcW5tdW1nTmhmeEZya3dFWkVMZWlkQmNDOEM0QWc0bnFxaVBXcHpzdkkxN05jeFlsSW5MTkxGY1pZLytnT2lONlpPVGloTzUvdkJaTWJqOXJpYUFjcWxpWW1OR0pQZ1RjTUdhRUF5TXpFTU55Mm5tNkVwK3BqUDVhRjZnaTIxdC9VUUZzdUoxajJSai95bk0vU2RSdCtlY2FsNU9Zb3R4SGtGYkw5dnZ2MkEyT3Y1SVRaQ2x3NGJPUzlucHlwUWltT1o1UUFZeXRtWWFRcFdsL3BNWXo2elNqOFJxa1ZETkVKR3FOZlRLQTJpdkxZd1g2bFN0dE1QYXBnMEo4NGw5WDB2b1ZOL0ZwUzRWQ1ZBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlFnS0ZBaEc2UmFXK2hUeTUyZHhlVDhiQzk2SHpBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBWU16Z0xySkxJcjBPb3ZRbkFaclJJR3VhYmlIU1VLU21iTFJXcFJrV2VBdHNDaERFSHBYY0ovYmdETktZV29IcVE4eFJVakI0Q3llcFlldmMzWWxyRzhvN3pIeHBmVmNhb0w1U2V1Smt6SHhLbjRiVGFTcDkrTXZ3YW1ucDY0a1pNaU5iRkxrbmZQOWtZS29SSGtNV2hlUkoxVXNQMXo0U2Nta0NlSUxmc01zNnZxb3ZxaldDbEZzSnBCY3NsdVlIV0Y3YkJKMW40UndnK0FURW9wWTRJZ0d2Nlp2d2MrQTlyK0FUMmhxcG9Ta1lvQWwrQU5Zd2dzbE9mOXNKZTBWK1RBOVlZL1VsYUJtUFBUZDAvL3I5d3ZjZVBXWmtQaktvQUMvelVOaGZEYmg0TFY4R0hzM2x5WDJYb21ML0xOYzhKWXp5SWFERWhHUXZlb1BoaC90cjFnPT0iLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVRuYmJHSVIyTkh2enFJS0ZBZVF3RzFYQmlzMHdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFRWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPc1hqM2swNEJhbjRUWWR0WktxRC9PUEp4eUR5YVBtQ0JVRlVpYVpJZ1R0ZVpuajNYMjVEaGdwWlpYc0M0RDB5ZEljcmxBNndOVUluT1JML0w5ekJiVEVJTUFWTUdvNmc3VUtBbWIyTUY2QUhibmhZSmQ5ZWlrdXBWTldTaEhOWU5jNEdCZE8xWU42QWZVcXZKaEhiZTNWNFNOTVBtQlJFS0pQVno3VGh3Z21nZ1RlOFdzMkswL3dzcXYyd1NFN3BiQ0JzVVpoSVg1MWJaTTNwcUR3SlBUbVJGRXZ0MC82dEc1ZU84RjNqMTRPWHFmRWhtam4xVnZ4S0RZUU9MWkF4Q3d3Z0MwUDRDZGZXdjN5OFBTUjhJMzU0aE8xWStHek5qdklxWDM4TktMeXd1SVlIRmVyT3hObHhFTUJ2RmhZQnVSdVlBa2tnVWFQcU42VUJoc0lMcnNDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNDb1JIaGl5Tm5iblhSV0lMNlpCWG9CWDlZVE1COEdBMVVkSXdRWU1CYUFGQ0FvVUNFYnBGcGI2RlBMblozRjVQeHNMM29mTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFDUUZhZkpJMS81V2c5Q0VFaW1FMVJQNTRSZ1F3VE5UT09Rc0xBQ1RlK3JJdGxGUXpDOVpEaHJWODI4eVg3anp5K0FBc3AzaXpLN1QxdGgyZGw3bSt0dTBzdzJQYS9vbGMwMm50NlB5SXczNDhnYUh6aEkxKzBLRTQ1cXh2RkRlTDJsTXhiUGZDWXZ5RUVhWXpqaVFFTFU1OTUxcFhHV3lLTWEvNGZMdE8rWktPWGhNdVZlcTRyWERQSTU0VzZKSE9pQWFpS2Rpdys1ZTNjMmt0L2pGSVF0TTZ2TVhnOUxORnpkakVUTnQyMFZYOVFldlJwRlpmdWNNRzl3Q2FRRG9GbFB6cFRNSktoUGV2L2ltSm1aWWhLZnIwbExjZW10cWpJeExBb3FaZE9ZZkhCZzYrdkFjZFBJL2lhdUdwVUF2N1grVUtObUR3aloyQmFINHNMd2hCMm0iLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVIzOG1xMjZTZjJzelZWMkJkRzZXRU43a3VXVXdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFSWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFOWTBXYjlvUG9Sb0tvUXlXUGFKcHoxMXZyV1RnNnpUdG1OajJWb0tSbnl2S0dScXB6YjgzdzVsNllBOTZVWWtZQkRRUDBpbE8yRFBlNndXcVZSNXpEZlJ6ZGNIOGJoK0w3ZEdHdmFlNmhSVFpoa0ZrQ3BYRHM0SGNja25yRGY4RkNsSjdIZTM5SmY0Mi9HMVFtMnp6OVdXbXJQWHRnaUsveDA1R2pzUWZHdURHMXpmNVFUVVVpZThsd3ltSzNUZmRPdk5lZUpBQVBlMnBuN0l0ZlJiK3JWck5XaUR6bFJuMnZObloyd1BvNHdIL1dKNmRoWFpHK3JNV1QrYTZCb2NnMVVmSXc2a2R1bkc0YlRwWnpzdmFjRll5UjBtcGYrRGVPbnBTV0FteXdKV0h2VGxmMllYeEZ5ZVhjVEFDZFFsY01OR0oyVmhaUTQ4eHRQNS9SQlAvOGtDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNoeTQyb2tpcWNUUzFpcWEvSFJXamtCbjRIL01COEdBMVVkSXdRWU1CYUFGT3EzUXBDZURIdGtldHRVZkFPNmZFNmYyS0ZoTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBbitSSElQYnRNRUROZFQxZzhIL1JpdEFrVWRMZ0F0MXRXR1dubGo5a25idjQvNEdsWDdDOXA0NWVmUE85L2FaTDZPVjFYUktCaTZLbXRCVzVLN251WUVuTXgvNUJxQlNiTFQ3cmhkdUM0OVRCZU1iOVBIZFhzVGxTVk5ZZWZyMWRHaWRyNGoweFZCUUxiMXJrbkRBYmRXRHpLZnZuYXlLTzhGcndlN0h4ODQzTUcvckorYzBYcnVVdmJmVlRDSExpSVdoTTdvTkRoTDh4b2I2eFVvOUtMS2NTTCtJdFlzTzMvOVdiOFE5R2pzcUw0RlhzRGNHMVNhWWg3S3BmdU1tT2l4cXpKWk8ybklpY1BZUmcxSTJTdWlVZllPNzB0bWRIY2JsK2tTUW1TWXQ3cnE0dmlJTGcyR3gzajlySVR1V1RqYmFVYVNTUXhnT21NU0h1eXpNQUMiLCJNSUlEUGpDQ0FpYWdBd0lCQWdJVVh6ZWlFREpFT1R0MTRGNW4wbzZaZi9iQndpVXdEUVlKS29aSWh2Y05BUUVOQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU1aNi9UeE04cklUK0Vhb1B2Rzgxb250TU9vLzJtUTJSQndKSFMwUVpjeFZhTlh2bDEyTFVoQlo1TG1pQlNjSVpkMVJueDFvZDU4NWgrL2RoSzdoRW03SkFBTGtLS3RzMWZPNTNLR05MWnVqejVoM3dHbmNyNGh5S0YwRzc0Yi9VM0s5aEU1bUdORDZ6cVljaENSQUhmcllNWVJERjRZTDBYNEQ1bkdkeHZwcEF5Nm5rRW10V21NbndPM2kwVEF1Y3NyYkU0ODVIdkdNNHIwVnBnVmRKcHZnUWppVEpDVElxK0QzNWh3dFQ4UURJdituR3ZwY3lpNXdjSWZDa3p5Q2ltSnVraFl5NktvcU5NS1FFZHBOaVNPdld5RE1UTXQxYndDdkV6cHc5MXUrbXNVdDRyajBlZm5POXMwWk93ZHdNUkRuSDR4Z1VsNVpMd3JyUGtmQzEvMENBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUI4R0ExVWRJd1FZTUJhQUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUU13RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCRFFVQUE0SUJBUUMzSVcvc2dCOXBaOGFwSk5qeHVHb1grRmtJTGtzMHdNTnJkWEwvY29VdnNyaHpzdmw2bWVQTXJiR0pCeUoxWG5xdUI1c2djUkVORnhkUUZtYTNtaW84VXBmMW93TTFacmVYckowbUFERzJCcGxxYkpueGl5WWErUjExcmVJRlRXZUloTU5jWktzRFpyRkF5UHVGakNXU1F2Sm1OV2U5bUZSWUZnTmhYSktrWEliNUgxWGdFRGx3aWVkWVJNN1ZvbEJObGxkNnBSRktsWDh1c3Q2T1RNT2VBRGwyeE5GMG0xTFRoU2RldVh2RHlDMWc5K0lMZnozUzZPSVlnYzNpcm9SY0ZEMzU0ZzdyS2Z1NjdxRkF3OWdDNHlpMHhCVFByWTk1cmg0L0hxYVVZQ0EvTDhsZFJrNkg3WGszNUQrV1ZwbXEyU2gveFQ1SGlGdWhmNHdKYjBiSyJdLCJpY29uIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwiaWNvbkRhcmsiOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJwcm92aWRlckxvZ29MaWdodCI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsInByb3ZpZGVyTG9nb0RhcmsiOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xX1BSRSIsIkZJRE9fMl8xIiwiRklET18yXzIiLCJGSURPXzJfMyJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJsYXJnZUJsb2JLZXkiLCJjcmVkQmxvYiIsIm1pblBpbkxlbmd0aCIsImhtYWMtc2VjcmV0LW1jIiwidGhpcmRQYXJ0eVBheW1lbnQiLCJwcmV2aWV3U2lnbiJdLCJhYWd1aWQiOiIyNDA4M2JjYjMwMzQ0ODY3OTlkZWEzYjUyZTFkNDI2YSIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImxhcmdlQmxvYnMiOnRydWUsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsInBlckNyZWRNZ210Uk8iOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjp0cnVlLCJhbHdheXNVdiI6ZmFsc2V9LCJtYXhNc2dTaXplIjoxNTM2LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjgsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4LCJ0cmFuc3BvcnRzIjpbIm5mYyIsInVzYiIsInNtYXJ0LWNhcmQiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotOH0seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTM1fV0sIm1heFNlcmlhbGl6ZWRMYXJnZUJsb2JBcnJheSI6NDA5NiwiZm9yY2VQSU5DaGFuZ2UiOmZhbHNlLCJtaW5QSU5MZW5ndGgiOjYsImZpcm13YXJlVmVyc2lvbiI6MzI5NzI4LCJtYXhDcmVkQmxvYkxlbmd0aCI6MzIsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjoxLCJyZW1haW5pbmdEaXNjb3ZlcmFibGVDcmVkZW50aWFscyI6MTAwLCJsb25nVG91Y2hGb3JSZXNldCI6ZmFsc2UsImVuY0lkZW50aWZpZXIiOiIiLCJ0cmFuc3BvcnRzRm9yUmVzZXQiOlsiVVNCIiwiTkZDIiwic21hcnQtY2FyZCJdLCJwaW5Db21wbGV4aXR5UG9saWN5Ijp0cnVlLCJwaW5Db21wbGV4aXR5UG9saWN5VVJMIjoiNjg3NDc0NzA3MzNhMmYyZjc5NzU2MjY5MmU2MzZmMmY3MDY5NmUiLCJtYXhQSU5MZW5ndGgiOjYzLCJlbmNDcmVkU3RvcmVTdGF0ZSI6IiIsImF1dGhlbnRpY2F0b3JDb25maWdDb21tYW5kcyI6WzIsM119fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNi0wNC0yNSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk3MjgsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiRW50ZXJwcmlzZSBTZWN1cml0eSBLZXkgU2VyaWVzIHdpdGggTkZDIChDb25zdW1lciBQcm9maWxlKSIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjYwNDI1MDEzIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25Qcm9maWxlcyI6WyJjb25zdW1lciJdLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI2LTA0LTI1IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTcyOH1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNi0wNS0wMSJ9LHsiYWFndWlkIjoiNGIzZjg5NDQtZDRmMi00ZDIxLWJiMTktNzY0YTk4NmVjMTYwIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI0YjNmODk0NC1kNGYyLTRkMjEtYmIxOS03NjRhOTg2ZWMxNjAiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiS2V5WGVudGljIEZJRE8yIFNlY3AyNTZSMSBGSURPMiBDVEFQMiBBdXRoZW50aWNhdG9yIn0sImRlc2NyaXB0aW9uIjoiS2V5WGVudGljIEZJRE8yIFNlY3AyNTZSMSBGSURPMiBDVEFQMiBBdXRoZW50aWNhdG9yIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MTAsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6MCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MTAsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6MCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwiaXNGcmVzaFVzZXJWZXJpZmljYXRpb25SZXF1aXJlZCI6dHJ1ZSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlCYURDQ0FRK2dBd0lCQWdJVUpVcjVUQkwrUi9yRmZ6VGZHcTh0RGRhd0F3a3dDZ1lJS29aSXpqMEVBd0l3SVRFZk1CMEdBMVVFQXd3V1MyVjVXR1Z1ZEdsaklFWkpSRThnVW05dmRDQkRRVEFnRncweU1EQTNNamd3T1RRME5USmFHQTh5TURjd01EY3hOakE1TkRRMU1sb3dJVEVmTUIwR0ExVUVBd3dXUzJWNVdHVnVkR2xqSUVaSlJFOGdVbTl2ZENCRFFUQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJNS0kya0cram1BN0hhV29wUGRudmhCd1JjYnFnK21KUlNhT2hTcWRCZkkwMHNjSXgzOXllaHM0TkNJRWR6bE9nQ0V0d0hHaFRGeklGQVhhaGdTaFVwZWpJekFoTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0N3WURWUjBQQkFRREFnSUVNQW9HQ0NxR1NNNDlCQU1DQTBjQU1FUUNJSE05VzlvbkNIQ0l5aWx3QlZrVitSVTFEc1RKTmliZnhhNlYvSEpGUGVRVUFpQjY5cU8vdzlieGVicStaZDZCdGtTWGpUM0hLZk5lWFlQN1A5Yi93TXpwalE9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFNZ0FBQURJQ0FZQUFBQ3RXSzZlQUFBSlZFbEVRVlI0MnUyZFRXOFdWUlNBKzQvOFMvd1FkbllscktRcjZhcUpDNDBzTU1GRURRc1dKRFlhVWpRZzBWQ0pSQXNTQlFvcVJkcXhaK0tRNmZqT3pMMHo5OXg3enJ6UGsweWtXTnAzMm5uZWMrNDU5Mk5qQXdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBS0k1ZnZIVFlmdmlKd0lyT2JwMXUzcjU0Y2ZWNGRibDZ1bjV6YmZYaSsyZDZxOXJYMVN2Nzk2cnZJdHc4dWhHZFh4L3B6cisvdjNxK050M1YxOEpKTG43K3kvVnRmMjlhdnU3RzlYRmJ6NnJ6dC84cE5yYSs3TCsrUHJQZDZxRGwwL1BMZTM1a2Z0cTM2OWNtMTlkOVgvUGYxKy9VVDNidkhCR2lyN3IrY1ZMYmtTcGpoNi9jL0xyNTlYeER4LzB5NUJZa0Z1UEg1eDVRSVl1K1R6NWZPOWlYUG54NjZEN2xVdGsyWC8ybTQ5N2ZuTndjRTRlK0JBeHVwZEVHcXYzVlVzeEZDR1VCSkVJRWZxZ2RCOGFqMktJM0JJaHB0eXpSQlR6NlZSbzFPaTdKQlV6bFQ0OStHaTZGRE1Fa2RSaDZvUFNUa1U4cFNDU1BzNjVYN2trOHBpTkhIUGxzQ0pKUGJDV01VVUtNU1lLTWpWeWVKVWtKcVVhdTBRMGN6ZllIWVRQdldRTVUwU08xR0pNRUNUbHcrSkJrdFQzSzVlcE1ZbWtWaW5sYUs2c1l3eXBSR21JRVNtSS9HSlRQeXlXSmRHUXc5d1liT3FnM0VJVWthcFVkRVZLVVJDdEI2YTVMRlc0dE8vVnhCdUNqRDAwNUdqS3Y2cFI0NCs5NnZqT2UvcHlSQWd5ZDJEdVJSSnRPY3lNUlY3ZDNLMjBCTkZNcytxeWJRNHhJZ1RSU3Erc1NaSkREak5wbHFSQm1vTDhzNS8rRjVtc2RPdFlrRktTNUpLamFab2lTR3lWS3NkNFk2SWcwdWpLS1VodVNlUWRQZmY5SVlnSE9ZeEdrSnlTcE9ycnhGenlQUkhFZ3h6R0JkR1dwSVFjakVGaXhod1ByNWFWNC9RS2ZhMmxCTkdTcEpRY1p1Wm1XUmRFdlFFWWNFbFJ3T0lnVm5zdVUwazV6UFJCTEF0U3o2a3FMRWZzTkJOWjgxSHlvVW9sU1drNVRJdy96QXVTcXdrNEZEMGV4ZWZCSmFvOUtTVXBMWWVwdVZoV0JTblM2K2pLY1RyMm1mcHp6ZEZSMTVERWdoeW1wcnhiRk1SQ2FpWFRXT2I4WEV0V3RLWStiQ1g2T0daVEs5T0NGRTZ0NXNyUmtHTFJWRzVKU2hZWnpNbGhVWkRTVmF0VWNpREpBdVN3S0VqSjZCRWpSOHgyUUVqaVZBNXJncFNNSGlGeTlDM2xyUXNLSTdKWWtTVG1ZY3doaVdrNXJBbFNLbnFFeUJIU3pSOHJDU09Ka3cwYUxBcHk4bVRYZEZxVnFqVHNVWklVdTVXNGxNT1NJTFAyck1veDVrallQL0VvaWN6eldqczVyQWhTcnl2UEtjZHBLaWZmVTdONGdDUUxrTU9LSUZtWHp3YkswYTFTMVJKSFJybVFUcnlGem5VdVNkekpZVVdRYk9sVnFCenR0U2VkZnhPN0xnVkpITXRoUmhDcmNpU1NSRDUvblNWeEs0Y0ZRZXF0ZXl6TDBmTTFwS1RiWEVIQ0JEUVZMVWdpR3lXRXJzTUlrY1MxSENZRTBWNHRHQ2hIVUpQeU5CVWNMRFFNaVJMWWRiY2dTY3d1amtQRkJ2Tzd0WHNRUkhXdGVVUzFhbFNRRlY5TGVqZmR2K3RMMFdKK0p4NGxhVGNVNWZYTHdyR05KVkJjRUNPbDNNRkdaVGU5NnE1VkVTbGFFZUxNLysrT1h3TG5jSG1UWkxFc1VwQ0FRWEZ3dXRkNndPczBhcUFmMG00ODFsOXJhSER2Wk9DKzlwS1VGRVJsWVZSQTVPZys2UDk3c0ZjOHhHTnlqSFhuUTZwalNJSWc2b0tFckNGZjFYZHAvN3Rha2dseXJKSmtkUEErRWttc3JFeGNXMGxLQ3FJeHZYM09ZSHhWVXk5V2ptN1ZLbVFTNXRpY01BdFJwSkVFUVR3TGNuOW5QSHFNVk0zYWtreVdvN1dYVmxDVUhIbmRGdGFLTDZhdnNjNkN5Snl1RkYzNzNtclZSRmxEeGsxYTg1OFdmZklUZ3BRVlpNNTVoMDBrQ3AycDdDV0NJTWlhcDFoSkJPbEVoTkhwTkNPdlcyUEJFaWtXZy9UcDM3TVpZRStaSjlaVHVoMzZXaktRSDNyTk1qK0tRVHBsM254bDNxR0JkNmZzR2pWWGJFVmpzRDNvWHluSndQd3V5cndJb3JLRFlteWpzSzh4R0NWSnQrUGVTdVY2SlFsb0ZGcUlIalFLbHpiVlpFbzNmY1ZEUFBydTM0b0NvOU5SSmt4L29ZdU9JQnVXMXAydkVtRlVrb2lPZTh3NUk4aUJJTE5McWFrbDZVdjV1aDMydDR1bHVsTkt4cHFLQVZVMkszTEVidWdtMWExbVhRalQzVk11bU5MZXNDSFJtcEN4ZC8rUWRmVWhFY1NiSEVNTHBoWlJFbWJKYlZ3SldLSkpIVDJlN05iL1BUUDJHSkprZ2V2U1E3WXVZc250T216YUVGbmFqWlZESHJRbHlzR21EYWtFeVhYRXM0d1JBbGJ6SlpVa1FBNXZHOGhOZWMxcysrTmw0N2pRbmR4blNxTDFvSG1VZzQzanZHMDlxaWdKY3JEMXFNN20xYm5Tck5oakQyS252QWVrY09zcUI1dFh6em4rSUVjMVMvRnNrRkJCUEo0MkpldFJVcjltOHdmbldCT2tqaUxlRDlCeHNxTjdyQnhyZTdxVU5VR3NIOEZXUjdtZU11NVNJd2RIc0hHSXAvb2huakpsSFRrNHhITVp4MENQTEY2S3hjcDZjcXR5Y0F4MHBDQ2g4NXBVSlhtWVp1VWNjaXhBRXBPQ0tDMmt5aW1KekdiMUpvZUYxMnhPRW91Q1RPby9HSlBFMjVqRDBvUkpVMzBTcTRKWVNMVkN0eExxSWx2amxIN0laQ2VVcVQ5M0M1S1lXVTlpV2hBRHFWYk00VGROT2JmMHd5WGppTG5QUldsSlpDMCtnb1NrV2dGNzI2cGZnU3NCaGZaQk1sN2xzQ0tKaWVXKzFnV0pudXFoZElXKzFwSzdrS1NVdzRJa0pvNXc4eUNJQ1VrQzA2d2x5VkU2S3ByWTV0U0xJUFdZcE1DTTN4aEJTbTN5cGlsSFNVa1F4RlA1MTZnZ09lUW9KUW1DZUVxM0RBcVNVNDRTa3BnUTVOWE5YVlZCdEY1MzlqbGJoc1lnMG9Rc0lVZHVTVXdJOHViZzRKeVdISWRibDFWdnNPNlQ1SnI5R3lpSWRoWEx5bTZIT1NReFVjVVNubCs4cENLSXBHODVYci9xN295UmdtaWU1V0Z0SzFCdFNjemM2OUd0MjhubGVMWjVJYXY5ZFVOUk01cEVkTlBYYVo5Y0xVbk1uV1FsNlpESDZKRnRBQjhoU09vb1luMFRhWTBqNHN6ZHI0eEY1RjAvaFJ3dnRuZUsybDl2STVRNjdZb1FKR1VIMnNzTzZ5blhrWmdaZTJoSW9qMHdMeFpSSWdWSklZbTM0d2RTU0dKK1N5Q1JaR3E2OWVlVlQ4M2VYRDFHbWRPSm55Q0lNSFhxdTV0dGNUcklOUFdwYTJITVJvNitCbUpvTkpHVVNxTWhxQ3BMYkFvMlVaRG1uVFcwL0N1ZlY3TEhVV0x3N25wejY5ZDM3OVdSUVNSb3lzRVNZZVJqa1VnaWp1ZGZwRHo0OVhFR2tvb05TVE5Ea0FaSmwyUUFMMUdsU2I5RUNQbFkvbjR4aDg1MDNoeEVBTG5ISnJMSW4rWHZYRVVNV0RIUS8yOXJueFJ5QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdHLytCUUI5ZDhINTlDWklBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiXSwiZXh0ZW5zaW9ucyI6WyJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiI0YjNmODk0NGQ0ZjI0ZDIxYmIxOTc2NGE5ODZlYzE2MCIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOnRydWUsInVwIjp0cnVlLCJ1diI6dHJ1ZX0sIm1heE1zZ1NpemUiOjEyMDAsInBpblV2QXV0aFByb3RvY29scyI6WzFdLCJ0cmFuc3BvcnRzIjpbInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIwLTEwLTE1IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiS1g5MDYgU21hcnQgVG9rZW4gRklET8KuIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyMDEwMTUwMDIiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMiIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4zIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIwLTEwLTE1IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjMtMTAtMTAifSx7ImFhZ3VpZCI6IjRjMGNmOTVkLTJmNDAtNDNiNS1iYTQyLTRjODNhMTFjMDRiYSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiNGMwY2Y5NWQtMmY0MC00M2I1LWJhNDItNGM4M2ExMWMwNGJhIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkZlaXRpYW4gQmlvUGFzcyBGSURPMiBQcm8gQXV0aGVudGljYXRvciJ9LCJkZXNjcmlwdGlvbiI6IkZlaXRpYW4gQmlvUGFzcyBGSURPMiBQcm8gQXV0aGVudGljYXRvciIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX0seyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQjJEQ0NBWDZnQXdJQkFnSVFCVG1rM1p3aWxGWGpzWnl3SERuTWdEQUtCZ2dxaGtqT1BRUURBakJMTVFzd0NRWURWUVFHRXdKRFRqRWRNQnNHQTFVRUNnd1VSbVZwZEdsaGJpQlVaV05vYm05c2IyZHBaWE14SFRBYkJnTlZCQU1NRkVabGFYUnBZVzRnUmtsRVR5QlNiMjkwSUVOQk1DQVhEVEl5TURZd09EQXdNREF3TUZvWUR6SXdOVEl3TmpBM01qTTFPVFU1V2pCTE1Rc3dDUVlEVlFRR0V3SkRUakVkTUJzR0ExVUVDZ3dVUm1WcGRHbGhiaUJVWldOb2JtOXNiMmRwWlhNeEhUQWJCZ05WQkFNTUZFWmxhWFJwWVc0Z1JrbEVUeUJTYjI5MElFTkJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVuZkFLYmp2TVgxRXkxYjZrK1dRUWROVk10OUpnR1d5SjNQdk00QlNLNVhxVGZvKyswb0FqLzR0bnd5SUwwSEZCUjlTdCtrdGpxU1hEZmppWEF1cnM4Nk5DTUVBd0hRWURWUjBPQkJZRUZOR2htRTJCZjhPNWEvWUhaNzFRRXY2UVJmRlVNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdEZ1lEVlIwUEFRSC9CQVFEQWdFR01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lCeVJ6NE9BbFJaOUh6OUtWN2cyUU50QzBDOEp4SC94TEpZOEZaRW10SjNzQWlFQXNyZVQwK2VOa05jVWpJOWg1T1BDb0g2Tm1zT2tndkVBQkpackYwN0FEa1k9IiwiTUlJQjJUQ0NBWDZnQXdJQkFnSVFGUU5LVys3emJnLzdkK2xUeXJJV3dEQUtCZ2dxaGtqT1BRUURBakJMTVFzd0NRWURWUVFHRXdKVlV6RWRNQnNHQTFVRUNnd1VSbVZwZEdsaGJpQlVaV05vYm05c2IyZHBaWE14SFRBYkJnTlZCQU1NRkVabGFYUnBZVzRnUmtsRVR5QlNiMjkwSUVOQk1DQVhEVEl5TURZd09EQXdNREF3TUZvWUR6SXdOVEl3TmpBM01qTTFPVFU1V2pCTE1Rc3dDUVlEVlFRR0V3SlZVekVkTUJzR0ExVUVDZ3dVUm1WcGRHbGhiaUJVWldOb2JtOXNiMmRwWlhNeEhUQWJCZ05WQkFNTUZFWmxhWFJwWVc0Z1JrbEVUeUJTYjI5MElFTkJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVzRllFRWhpSnVxcW5NZ1FqU2lpdkJqVjdER0NUZjRYQkJIL0I3dXZac0t4WFNoRjBMOHVESVNXVXZjRXhpeFJzNmdCM29sZFNyam94Nkw4VDk0Tk96cU5DTUVBd0hRWURWUjBPQkJZRUZFdTloeVlSclJ5Snp3Ull2bkRTQ0l4ckZpTzNNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdEZ1lEVlIwUEFRSC9CQVFEQWdFR01Bb0dDQ3FHU000OUJBTUNBMGtBTUVZQ0lRQ0IwTkZRU04wejRsV3oveWMzNmV3clRDenR0Sy9xRnZsYVBPS2grVDFvNndJaEFQMG9LS0ErY2ljc0R5M1kzbitWbFA4ZUIzUEJ6TWtodlcvOUlTWEN3K1ZCIl0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUZBQUFBQVVDQU1BQUFBdEJrcmxBQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQkhacFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR3L2VIQmhZMnRsZENCaVpXZHBiajBpNzd1L0lpQnBaRDBpVnpWTk1FMXdRMlZvYVVoNmNtVlRlazVVWTNwcll6bGtJajgrSUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWtGa2IySmxJRmhOVUNCRGIzSmxJRFV1Tmkxak1ERTBJRGM1TGpFMU5qYzVOeXdnTWpBeE5DOHdPQzh5TUMwd09UbzFNem93TWlBZ0lDQWdJQ0FnSWo0Z1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNGdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlnZUcxc2JuTTZlRzF3UFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIaHRiRzV6T25Cb2IzUnZjMmh2Y0QwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOXdhRzkwYjNOb2IzQXZNUzR3THlJZ2VHMXNibk02ZUcxd1RVMDlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl0YlM4aUlIaHRiRzV6T25OMFVtVm1QU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2YzFSNWNHVXZVbVZ6YjNWeVkyVlNaV1lqSWlCNGJYQTZRM0psWVhSdmNsUnZiMnc5SWtGa2IySmxJRkJvYjNSdmMyaHZjQ0JEUXlBeU1ERTBJQ2hOWVdOcGJuUnZjMmdwSWlCNGJYQTZRM0psWVhSbFJHRjBaVDBpTWpBeE5pMHhNaTB6TUZReE5Eb3pNem93T0Nzd09Eb3dNQ0lnZUcxd09rMXZaR2xtZVVSaGRHVTlJakl3TVRZdE1USXRNekJVTURjNk16RTZOVGtyTURnNk1EQWlJSGh0Y0RwTlpYUmhaR0YwWVVSaGRHVTlJakl3TVRZdE1USXRNekJVTURjNk16RTZOVGtyTURnNk1EQWlJR1JqT21admNtMWhkRDBpYVcxaFoyVXZjRzVuSWlCd2FHOTBiM05vYjNBNlNHbHpkRzl5ZVQwaU1qQXhOaTB4TWkwek1GUXhOVG96TURveU55c3dPRG93TUNZamVEazc1cGFINUx1MklPYWNxdWFnaCttaW1DMHhJT1czc3VhSmsrVzhnQ1lqZUVFN0lpQjRiWEJOVFRwSmJuTjBZVzVqWlVsRVBTSjRiWEF1YVdsa09qSkZOekZDUmtaRFF6WTNSakV4UlRZNU56aEVRVGxEUWtJMk5EWXpSamt3SWlCNGJYQk5UVHBFYjJOMWJXVnVkRWxFUFNKNGJYQXVaR2xrT2pKRk56RkNSa1pFUXpZM1JqRXhSVFk1TnpoRVFUbERRa0kyTkRZelJqa3dJajRnUEhodGNFMU5Pa1JsY21sMlpXUkdjbTl0SUhOMFVtVm1PbWx1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2TWtVM01VSkdSa0ZETmpkR01URkZOamszT0VSQk9VTkNRalkwTmpOR09UQWlJSE4wVW1WbU9tUnZZM1Z0Wlc1MFNVUTlJbmh0Y0M1a2FXUTZNa1UzTVVKR1JrSkROamRHTVRGRk5qazNPRVJCT1VOQ1FqWTBOak5HT1RBaUx6NGdQQzl5WkdZNlJHVnpZM0pwY0hScGIyNCtJRHd2Y21SbU9sSkVSajRnUEM5NE9uaHRjRzFsZEdFK0lEdy9lSEJoWTJ0bGRDQmxibVE5SW5JaVB6NDc3SlhGQUFBQVlGQk1WRVgvLy84RVZxSVhaYXZHMk9vcWNMRzJ6T09rd3QwQlNKdHFsY1hWNHUrYXV0bFdoYnprN1BVQU1ZOUhjcktqdE5icThmZUFsOGFCb3N6ejl2cGRqc0dHcXRGM244dVRzTlNacGM2SnNOVDUrdjB4WUtudThQZmY1L0w0OGZnL2ZyaWN6SmdZQUFBREFFbEVRVlI0MmtSVUNaYkRJQWpGWFpPWTFUYXROYzM5Ynprc1NZYzNyNE1FNGZNQkFhRDZ6bDh5LzlUT2dldDhkNWpmTjc4YndNL2REQ1JwUjUyMXpYZm9qSEowNUlJeWhCQVVTVkFPTmRHekJZdDJmN0tGcmZrSmFBa0hoOUZaaGNEWEhSa1RLbzlNTGloR2FhdkltblYzcXlFWDBFcHJnei80RHdVRDdrQ0hSbmQ4UUZONDNHbzRVVm1ERGd6YTR3MjdvaXpkQTIrY0srdXVVcGpqbzIreHdjLzQyVzUweDVMR1llREJzUjBIVkl4NXg4aUY2MENibGJURUVrRnIyN2JOREJVVlNxMU9LVlBiRTYyYjNFSDhGcUJnNU9PT0V1YzJ0OFpKaXFNT3VHcCtjS2pnN3dWR2Nlb3pxTjRweGdWUFFrakZZZ2JWSktEVWhEQ2pZcmF3UDVxNEVUZ0M5ZklNUkh0aXRwUWNDdkpPRUxjYk1zUWduY2lSa2xqcHlRanZHNDRqcUJVRVRGaUJpMVBFSXlla096c1crVHk1Y0xIb3M1UitkTVMxTHRTU3hmM2dRSGN6UjJDSTRnTU5wVzRJUkExUU1hNnRKNCtDNnVIdUdFOG1OREl5RnFnL09QL01NVXVlUzZJcThTOTBkQWVCSlNFeS9xS2tLK0JOd3o4Y1lZNGpiNUo2dTRpV0NJMkIxWjU2TFc1a0VjNGhrZE1wc3ZVQzU1ODVTWDBRdWJjZ05xeWZnREZFY1R0KzQwLzBTNU54MHdhQ3czT0trY09iQTVJbjBBWXAwMXBqancybjYyNlVEanRId2EyOGlIdVRLcXRydityZVc0MU5aNmlHbHI3dXVMSkNma0Z0Y3RjRzA0c2dtMWVOUytaYURucGFURXJHb3lYNUpLMmlNejh4czBuT3dXR2NQRE40OXFhQ2Q0YnpKb3pEWm0vYUJLK0Vvekx3K1hoTkJpWXdIZjBzaU91MVhQa0cvekt3dnFZS2NmU3dERWNIL29VZTA3ZXMvV1E4ckl5ZzJET1hqOHRqa1pkdURCL2I4aHpEbGxNTU9DUzVCRW5kNTM0Zjh0aTNVWmM0a01zM3hMeWFmTVNzSmhkRzhYUHFqTms1dEFnTzI1ZmVLQ2huVmREai9KMEZNa09zVS94TUJ2MHdGaFllRUdmVkgxM2Z1RFUweURGTGE0ZmM3Um5XSEJmdVRGVjJ0RW1Od2FkYzdhYzNVWTJqZkJsN0hUMzZmZTM0aVFPNW1OQ0ZGQlcwN0tqUGdxaE9MVTAxdlo4UHVlWjJKQ2xGWk44amtVczY5dWthOWVQcDYrRWZMNEFGNStOeXdTYmlySHRjQjhNbC9na3dBRWprSzY0S2pIUGVBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMSIsIkZJRE9fMl8xX1BSRSJdLCJleHRlbnNpb25zIjpbImNyZWRCbG9iIiwiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsImxhcmdlQmxvYktleSIsIm1pblBpbkxlbmd0aCJdLCJhYWd1aWQiOiI0YzBjZjk1ZDJmNDA0M2I1YmE0MjRjODNhMTFjMDRiYSIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwidXYiOmZhbHNlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibm9NY0dhUGVybWlzc2lvbnNXaXRoQ2xpZW50UGluIjpmYWxzZSwibGFyZ2VCbG9icyI6dHJ1ZSwiYmlvRW5yb2xsIjpmYWxzZSwidXNlclZlcmlmaWNhdGlvbk1nbXRQcmV2aWV3IjpmYWxzZSwidXZCaW9FbnJvbGwiOnRydWUsImF1dGhuckNmZyI6dHJ1ZSwidXZBY2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOnRydWUsImFsd2F5c1V2IjpmYWxzZX0sIm1heE1zZ1NpemUiOjIwNDgsInBpblV2QXV0aFByb3RvY29scyI6WzEsMl0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6MTAsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6OTYsInRyYW5zcG9ydHMiOlsidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN31dLCJtYXhTZXJpYWxpemVkTGFyZ2VCbG9iQXJyYXkiOjEwMjQsIm1pblBJTkxlbmd0aCI6NCwibWF4Q3JlZEJsb2JMZW5ndGgiOjMyLCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6MiwicHJlZmVycmVkUGxhdGZvcm1VdkF0dGVtcHRzIjo1LCJ1dk1vZGFsaXR5IjoyLCJyZW1haW5pbmdEaXNjb3ZlcmFibGVDcmVkZW50aWFscyI6MTI4fX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMDktMjYiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJCaW9QYXNzIEZJRE8yIFBybyAoQ29uc3VtZXIgUHJvZmlsZSkiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI0MDkyNjAwNCIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTA5LTI2IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjF9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjQtMTEtMjAifSx7ImFhZ3VpZCI6IjUzNDM1MDJkLTUzNDMtNTM0My02MTcyLTY0NDY0OTQ0NGYzMiIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiNTM0MzUwMmQtNTM0My01MzQzLTYxNzItNjQ0NjQ5NDQ0ZjMyIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkVTUyBTbWFydCBDYXJkIEluYy4gQXV0aGVudGljYXRvciJ9LCJkZXNjcmlwdGlvbiI6IkVTUyBTbWFydCBDYXJkIEluYy4gQXV0aGVudGljYXRvciIsImFsdGVybmF0aXZlRGVzY3JpcHRpb25zIjp7ImZyLUNBIjoiU1NFIENhcnRlIMOgIFB1Y2UgSW5jLiBBdXRoZW50aWZpY2F0ZXVyIn0sImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX0seyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo2LCJtYXhSZXRyaWVzIjowLCJibG9ja1Nsb3dkb3duIjowfX0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo2LCJtYXhSZXRyaWVzIjowLCJibG9ja1Nsb3dkb3duIjowfX1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjI1NiwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJVnJqQ0NFNWFnQXdJQkFnSVdBTW9BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVRBTkJna3Foa2lHOXcwQkFRc0ZBRENDQWpBeE96QTVCZ05WQkFVTU1rNUZVU0F4TVRjek5EZzROalExSUM4Z1EwNGdNVEEyTkRjM015MHdJQzhnUWs0Z056WTNNelE1TmpneFVrTXdNREF4TVJNd0VRWUxLd1lCQkFHQ056d0NBUU1NQWtOQk1SZ3dGZ1lMS3dZQkJBR0NOendDQVFJTUIxRjF3NmxpWldNeEd6QVpCZ3NyQmdFRUFZSTNQQUlCQVF3S1ZHVnljbVZpYjI1dVpURXhNQzhHQTFVRUR3d29VOE9wWTNWeWFYVERxU0JKYm1admNtMWhkR2x4ZFdVZ0x5QkRlV0psY2lCVFpXTjFjbWwwZVRFcU1DZ0dDU3FHU0liM0RRRUpBUlliYVc1bWIyTmhRSE50WVhKMFkyRnlaSE5sWTNWeWFYUjVMbU5oTVJvd0dBWURWUVFYREJFck1TQW9ORFV3S1NBNU5qUXRORFV4TVRFYU1CZ0dBMVVFRkF3Ukt6RWdLRFExTUNrZ09UWTBMVGMzTnpZeEVEQU9CZ05WQkJFTUIwbzJWeUF3UVRJeEN6QUpCZ05WQkFZVEFrTkJNUkF3RGdZRFZRUUlEQWRSZGNPcFltVmpNUk13RVFZRFZRUUhEQXBVWlhKeVpXSnZibTVsTVJvd0dBWURWUVFKREJFeE1UYzVJR1JsSUd3blpYaHdjbVZ6Y3pFck1Da0dBMVVFQ3d3aVFYVjBhRzl5YVhURHFTQlNZV05wYm1VZ0x5QlNiMjkwSUVGMWRHaHZjbWwwZVRFMU1ETUdBMVVFQ2d3c1UxTkZJRU5oY25SbElNT2dJRkIxWTJVZ1NXNWpMaUF2SUVWVFV5QlRiV0Z5ZENCRFlYSmtJRWx1WXk0eFNEQkdCZ05WQkFNTVAxTmxZM1Z5YVhURHFTQkRZWEowWlNERG9DQlFkV05sSUNoVFExQXBJRUZESUM4Z1UyMWhjblFnUTJGeVpDQlRaV04xY21sMGVTQW9VME5US1NCRFFUQWVGdzB4T0RBMU16QXhOVEU1TURSYUZ3MDBPREExTWpneE5URTVNRFJhTUlJQ05URVRNQkVHQ3lzR0FRUUJnamM4QWdFRERBSkRRVEVZTUJZR0N5c0dBUVFCZ2pjOEFnRUNEQWRSZGNPcFltVmpNUnN3R1FZTEt3WUJCQUdDTnp3Q0FRRU1DbFJsY25KbFltOXVibVV4TVRBdkJnTlZCQThNS0ZQRHFXTjFjbWwwdzZrZ1NXNW1iM0p0WVhScGNYVmxJQzhnUTNsaVpYSWdVMlZqZFhKcGRIa3hPekE1QmdOVkJBVU1NazVGVVNBeE1UY3pORGc0TmpRMUlDOGdRMDRnTVRBMk5EYzNNeTB3SUM4Z1FrNGdOelkzTXpRNU5qZ3hVa013TURBeE1Tb3dLQVlKS29aSWh2Y05BUWtCRmh0cGJtWnZZMkZBYzIxaGNuUmpZWEprYzJWamRYSnBkSGt1WTJFeEdqQVlCZ05WQkJjTUVTc3hJQ2cwTlRBcElEazJOQzAwTlRFeE1Sb3dHQVlEVlFRVURCRXJNU0FvTkRVd0tTQTVOalF0TnpjM05qRVFNQTRHQTFVRUVRd0hTalpYSURCQk1qRUxNQWtHQTFVRUJoTUNRMEV4RURBT0JnTlZCQWdNQjFGMXc2bGlaV014RXpBUkJnTlZCQWNNQ2xSbGNuSmxZbTl1Ym1VeEdqQVlCZ05WQkFrTUVURXhOemtnWkdVZ2JDZGxlSEJ5WlhOek1USXdNQVlEVlFRTERDbEJkWFJ2Y21sMHc2a2daR1VnVUc5c2FYUnBjWFZsSUM4Z1VHOXNhV041SUVGMWRHaHZjbWwwZVRFMU1ETUdBMVVFQ2d3c1UxTkZJRU5oY25SbElNT2dJRkIxWTJVZ1NXNWpMaUF2SUVWVFV5QlRiV0Z5ZENCRFlYSmtJRWx1WXk0eFJqQkVCZ05WQkFNTVBWTkRVQ0JCZFhSdmNtbDB3NmtnWkdVZ1VHOXNhWFJwY1hWbElDOGdVME5USUVObGNuUnBabWxqWVhSbElGQnZiR2xqZVNCQmRYUm9iM0pwZEhrd2dnSWdNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUNEUUF3Z2dJSUFvSUNBUURhMkF5cFVzRG02enZnS3NvT3JydTRXZUFuT1hTaHdJMVQwVGlRWnN2SjkwdXdWNU1EV2NhTWYwRFp5bDJPS2lOK0xtelBJQ2JYdzRUQ3JKcGhKWG5keVBGMDlFM0gxUUMycEdONzFCTnB4b0RlQnFrWDFZSVc0UEhoWTlxaGpSS2dwbGJKVEtjSGZRQTFDalZUelg1cmFBbW5MQUo4aXVvN0hWN1picGxGZzdWM2NXT0piYzNwNUZGaXhlU0k1eEFDTHNKUUlBaXROUDMwRmhweDRieHhDWTlvMVpRTy9IVTMzejdaYkN1MVF3MGlhWFlJcjBWV0d1NWVDenNnemw1NmJ3RHVQUDdOZjE4bUpFYVYwMzllV3U0OVNqZFg2aFlrUUZUK3dRQllVeE9QVW84aDd4eFhHWmJ3TW5UTVV5UXdXNnV5YlVCOEd3dGpNSVZvRFQ5WTY4OFNIM2ZkN3FEb1l1dVRodzlEY0hGamhaSGhubUYwelJqUW8vRlphczA3bWtROVhJZFJqV3RXUGRxU0ZXc2RqOCtiU3FkNmxvSFpsc1ZQcHh5Q1JXTGVnYVdEaTYrS1NyeGd1UVhneDNpcDg1YlRkeUNJQ09iV2E4OEM4Q3FHcXNVQlRuam15RzkxRkZlRmg0ZURnMkNKWHpuVmRzSFNmZUtVVkdGOUhGV24zeDVRb0QyK05lVkZnSHFqT21QSXl4QkpMNVZ0OEFWUTB2b2Q5MjNQeGF5bU9sVVVrckJobEpYRS9WM1R3REtlNk44OHlqR1VmdEZjN2dEdmh1OGlKa0FVRDVpZFRUdGNWeHIxRTBUZ2RiUGFxajNPTHNoNldIZlo2dWQyS2IxdnFoc1FWNlg2UXhmbGR1VzYzeWdGbmJodHdEZExsUXNLRERyV0I0MlB4d0lCSmFPQ0RMVXdnZ3l4TUIwR0ExVWREZ1FXQkJUYWNqNW9nelFIYWdHUjBxV3ZQaHhOb3VIK1RqQWZCZ05WSFNNRUdEQVdnQlFrWUdvSGN5UlZkVHMyK25SWmsxWEpzZ0FtT2pBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUE0R0ExVWREd0VCL3dRRUF3SUJoakE1QmdOVkhSOEVNakF3TUM2Z0xLQXFoaWhvZEhSd09pOHZZMkV1YzIxaGNuUmpZWEprYzJWamRYSnBkSGt1WTJFdlkyRnpZM011WTNKc01ISUdDQ3NHQVFVRkJ3RUJCR1l3WkRBc0JnZ3JCZ0VGQlFjd0FZWWdhSFIwY0RvdkwyOWpjM0F1YzIxaGNuUmpZWEprYzJWamRYSnBkSGt1WTJFd05BWUlLd1lCQlFVSE1BS0dLR2gwZEhBNkx5OWpZUzV6YldGeWRHTmhjbVJ6WldOMWNtbDBlUzVqWVM5allYTmpjeTVqY25Rd0tnWURWUjBSQkNNd0lZWWZhSFIwY0RvdkwyTmhMbk50WVhKMFkyRnlaSE5sWTNWeWFYUjVMbU5oTHpDQ0MzRUdBMVVkSUFTQ0MyZ3dnZ3RrTURzR0JtQjhodmRvQVRBeE1DOEdDQ3NHQVFVRkJ3SUJGaU5vZEhSd2N6b3ZMMk5oTG5OdFlYSjBZMkZ5WkhObFkzVnlhWFI1TG1OaEwyTndjekFJQmdaZ2ZJYjNhQUl3Q0FZR1lIeUc5MmdETUFnR0JtQjhodmRvQkRBSUJnWmdmSWIzYUFVd0NBWUdZSHlHOTJnR01BZ0dCbUI4aHZkb0J6QUlCZ1pnZkliM2FBZ3dDQVlHWUh5RzkyZ0pNQWdHQm1COGh2ZG9DakFJQmdaZ2ZJYjNhQXN3Q0FZR1lIeUc5MmdNTUFnR0JtQjhodmRvRFRBSUJnWmdmSWIzYUE0d0NBWUdZSHlHOTJnUE1BZ0dCbUI4aHZkb0VEQUpCZ2RnZkliM2FBRUpNQWtHQjJCOGh2ZG9BUW93Q1FZSFlIeUc5MmdCQ3pBSkJnZGdmSWIzYUFFTU1Ba0dCMkI4aHZkb0FRMHdDUVlIWUh5RzkyZ0JEakFKQmdkZ2ZJYjNhQUVQTUFrR0IyQjhodmRvQVJBd0NRWUhZSHlHOTJnQkVUQUpCZ2RnZkliM2FBRVNNQWtHQjJCOGh2ZG9BUUV3Q2dZSVlIeUc5MmdCQVFFd0NnWUlZSHlHOTJnQkFRSXdDZ1lJWUh5RzkyZ0JBUU13Q2dZSVlIeUc5MmdCQVFRd0NnWUlZSHlHOTJnQkFRVXdDZ1lJWUh5RzkyZ0JBUVl3Q2dZSVlIeUc5MmdCQVFjd0NnWUlZSHlHOTJnQkFRZ3dDZ1lJWUh5RzkyZ0JBUWt3Q2dZSVlIeUc5MmdCQVFvd0NnWUlZSHlHOTJnQkFRc3dDZ1lJWUh5RzkyZ0JBUXd3Q2dZSVlIeUc5MmdCQVEwd0NnWUlZSHlHOTJnQkFRNHdDZ1lJWUh5RzkyZ0JBUTh3Q2dZSVlIeUc5MmdCQVJBd0NnWUlZSHlHOTJnQkFSRXdDZ1lJWUh5RzkyZ0JBUkl3Q2dZSVlIeUc5MmdCQVJNd0NnWUlZSHlHOTJnQkFSUXdDZ1lJWUh5RzkyZ0JBUlV3Q2dZSVlIeUc5MmdCQVJZd0NRWUhZSHlHOTJnQkJUQUtCZ2hnZkliM2FBRUZBVEFLQmdoZ2ZJYjNhQUVGQWpBS0JnaGdmSWIzYUFFRkF6QUtCZ2hnZkliM2FBRUZCREFLQmdoZ2ZJYjNhQUVGQlRBS0JnaGdmSWIzYUFFRkJqQUtCZ2hnZkliM2FBRUZCekFLQmdoZ2ZJYjNhQUVGQ0RBS0JnaGdmSWIzYUFFRkNUQUtCZ2hnZkliM2FBRUZDakFLQmdoZ2ZJYjNhQUVGQ3pBS0JnaGdmSWIzYUFFRkREQUtCZ2hnZkliM2FBRUZEVEFLQmdoZ2ZJYjNhQUVGRGpBS0JnaGdmSWIzYUFFRkR6QUtCZ2hnZkliM2FBRUZFREFLQmdoZ2ZJYjNhQUVGRVRBS0JnaGdmSWIzYUFFRkVqQUtCZ2hnZkliM2FBRUZFekFLQmdoZ2ZJYjNhQUVGRkRBS0JnaGdmSWIzYUFFRkZUQUtCZ2hnZkliM2FBRUZGakFLQmdoZ2ZJYjNhQUVGRnpBS0JnaGdmSWIzYUFFRkdEQUtCZ2hnZkliM2FBRUZHVEFLQmdoZ2ZJYjNhQUVGR2pBS0JnaGdmSWIzYUFFRkd6QUtCZ2hnZkliM2FBRUZIREFLQmdoZ2ZJYjNhQUVGSFRBS0JnaGdmSWIzYUFFRkhqQUpCZ2RnZkliM2FBRUNNQW9HQ0dCOGh2ZG9BUUlCTUFvR0NHQjhodmRvQVFJQ01Bb0dDR0I4aHZkb0FRSURNQW9HQ0dCOGh2ZG9BUUlFTUFvR0NHQjhodmRvQVFJRk1Bb0dDR0I4aHZkb0FRSUdNQW9HQ0dCOGh2ZG9BUUlITUFvR0NHQjhodmRvQVFJSU1Bb0dDR0I4aHZkb0FRSUpNQW9HQ0dCOGh2ZG9BUUlLTUFvR0NHQjhodmRvQVFJTE1Bb0dDR0I4aHZkb0FRSU1NQW9HQ0dCOGh2ZG9BUUlOTUFvR0NHQjhodmRvQVFJT01Bb0dDR0I4aHZkb0FRSVBNQW9HQ0dCOGh2ZG9BUUlRTUFvR0NHQjhodmRvQVFJUk1Bb0dDR0I4aHZkb0FRSVNNQW9HQ0dCOGh2ZG9BUUlUTUFvR0NHQjhodmRvQVFJVU1Bb0dDR0I4aHZkb0FRSVZNQW9HQ0dCOGh2ZG9BUUlXTUFvR0NHQjhodmRvQVFJWE1Bb0dDR0I4aHZkb0FRSVlNQW9HQ0dCOGh2ZG9BUUlaTUFvR0NHQjhodmRvQVFJYU1Bb0dDR0I4aHZkb0FRSWJNQW9HQ0dCOGh2ZG9BUUljTUFvR0NHQjhodmRvQVFJZE1Bb0dDR0I4aHZkb0FRSWVNQW9HQ0dCOGh2ZG9BUUlmTUFvR0NHQjhodmRvQVFJZ01Bb0dDR0I4aHZkb0FRSWhNQW9HQ0dCOGh2ZG9BUUlpTUFvR0NHQjhodmRvQVFJak1Ba0dCMkI4aHZkb0FRTXdDZ1lJWUh5RzkyZ0JBd0V3Q3dZSllIeUc5MmdCQXdFQk1Bc0dDV0I4aHZkb0FRTUJBakFMQmdsZ2ZJYjNhQUVEQVFNd0N3WUpZSHlHOTJnQkF3RUVNQXNHQ1dCOGh2ZG9BUU1CQlRBTEJnbGdmSWIzYUFFREFRWXdDd1lKWUh5RzkyZ0JBd0VITUFzR0NXQjhodmRvQVFNQkNEQUxCZ2xnZkliM2FBRURBUWt3Q3dZSllIeUc5MmdCQXdFS01Bc0dDV0I4aHZkb0FRTUJDekFMQmdsZ2ZJYjNhQUVEQVF3d0N3WUpZSHlHOTJnQkF3RU5NQXNHQ1dCOGh2ZG9BUU1CRGpBTEJnbGdmSWIzYUFFREFROHdDd1lKWUh5RzkyZ0JBd0VRTUFzR0NXQjhodmRvQVFNQkVUQUxCZ2xnZkliM2FBRURBUkl3Q2dZSVlIeUc5MmdCQXdJd0N3WUpZSHlHOTJnQkF3SUJNQXNHQ1dCOGh2ZG9BUU1DQWpBTEJnbGdmSWIzYUFFREFnTXdDd1lKWUh5RzkyZ0JBd0lFTUFzR0NXQjhodmRvQVFNQ0JUQUxCZ2xnZkliM2FBRURBZ1l3Q3dZSllIeUc5MmdCQXdJSE1Bc0dDV0I4aHZkb0FRTUNDREFMQmdsZ2ZJYjNhQUVEQWdrd0N3WUpZSHlHOTJnQkF3SUtNQXNHQ1dCOGh2ZG9BUU1DQ3pBTEJnbGdmSWIzYUFFREFnd3dDd1lKWUh5RzkyZ0JBd0lOTUFrR0IyQjhodmRvQVFRd0NnWUlZSHlHOTJnQkJBRXdDd1lKWUh5RzkyZ0JCQUVCTUFzR0NXQjhodmRvQVFRQkFqQUxCZ2xnZkliM2FBRUVBUU13Q3dZSllIeUc5MmdCQkFFRU1Bc0dDV0I4aHZkb0FRUUJCVEFMQmdsZ2ZJYjNhQUVFQVFZd0N3WUpZSHlHOTJnQkJBRUhNQXNHQ1dCOGh2ZG9BUVFCQ0RBTEJnbGdmSWIzYUFFRUFRa3dDd1lKWUh5RzkyZ0JCQUVLTUFzR0NXQjhodmRvQVFRQkN6QUxCZ2xnZkliM2FBRUVBUXd3Q3dZSllIeUc5MmdCQkFFTk1Bc0dDV0I4aHZkb0FRUUJEakFMQmdsZ2ZJYjNhQUVFQVE4d0N3WUpZSHlHOTJnQkJBRVFNQXNHQ1dCOGh2ZG9BUVFCRVRBTEJnbGdmSWIzYUFFRUFSSXdDd1lKWUh5RzkyZ0JCQUVUTUFvR0NHQjhodmRvQVFRQ01Bc0dDV0I4aHZkb0FRUUNBVEFMQmdsZ2ZJYjNhQUVFQWdJd0N3WUpZSHlHOTJnQkJBSURNQXNHQ1dCOGh2ZG9BUVFDQkRBTEJnbGdmSWIzYUFFRUFnVXdDd1lKWUh5RzkyZ0JCQUlHTUFzR0NXQjhodmRvQVFRQ0J6QUxCZ2xnZkliM2FBRUVBZ2d3Q3dZSllIeUc5MmdCQkFJSk1Bc0dDV0I4aHZkb0FRUUNDakFMQmdsZ2ZJYjNhQUVFQWdzd0N3WUpZSHlHOTJnQkJBSU1NQXNHQ1dCOGh2ZG9BUVFDRFRBTEJnbGdmSWIzYUFFRUFnNHdDZ1lJWUh5RzkyZ0JCQU13Q3dZSllIeUc5MmdCQkFNQk1Bc0dDV0I4aHZkb0FRUURBakFMQmdsZ2ZJYjNhQUVFQXdNd0N3WUpZSHlHOTJnQkJBTUVNQXNHQ1dCOGh2ZG9BUVFEQlRBTEJnbGdmSWIzYUFFRUF3WXdDd1lKWUh5RzkyZ0JCQU1ITUFzR0NXQjhodmRvQVFRRENEQUxCZ2xnZkliM2FBRUVBd2t3Q3dZSllIeUc5MmdCQkFNS01Bc0dDV0I4aHZkb0FRUURDekFMQmdsZ2ZJYjNhQUVFQXd3d0N3WUpZSHlHOTJnQkJBTU5NQWtHQjJCOGh2ZG9BUVl3Q2dZSVlIeUc5MmdCQmdFd0NnWUlZSHlHOTJnQkJnSXdDZ1lJWUh5RzkyZ0JCZ013Q2dZSVlIeUc5MmdCQmdRd0NnWUlZSHlHOTJnQkJnVXdDZ1lJWUh5RzkyZ0JCZ1l3Q2dZSVlIeUc5MmdCQmdjd0NRWUhZSHlHOTJnQkJ6QUtCZ2hnZkliM2FBRUhBVEFLQmdoZ2ZJYjNhQUVIQWpBS0JnaGdmSWIzYUFFSEF6QUtCZ2hnZkliM2FBRUhCREFLQmdoZ2ZJYjNhQUVIQlRBS0JnaGdmSWIzYUFFSEJqQUtCZ2hnZkliM2FBRUhCekFLQmdoZ2ZJYjNhQUVIQ0RBS0JnaGdmSWIzYUFFSENUQUtCZ2hnZkliM2FBRUhDakFKQmdkZ2ZJYjNhQUVJTUFvR0NHQjhodmRvQVFnQk1Bb0dDR0I4aHZkb0FRZ0NNQW9HQ0dCOGh2ZG9BUWdETUFvR0NHQjhodmRvQVFnRU1Bb0dDR0I4aHZkb0FRZ0ZNQW9HQ0dCOGh2ZG9BUWdHTUFvR0NHQjhodmRvQVFnSE1Bb0dDR0I4aHZkb0FRZ0lNQW9HQ0dCOGh2ZG9BUWdKTUFvR0NHQjhodmRvQVFnS01Bb0dDR0I4aHZkb0FRZ0xNQWNHQldlQkRBRUJNQWNHQldlQkRBRUNNQWdHQm1lQkRBRUNBVEFJQmdabmdRd0JBZ0l3Q0FZR1o0RU1BUUlETUFjR0JXZUJEQUVETUFjR0JXZUJEQUVmTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElDQVFCWS83QVBOSDFhMkpmcGx3MWdqSUVRL0xjNFhJNXBEczAyUE96cFZrQ1Y2blpKWmQ1WFhGYm9lQ3phZHBacFNQVy9SZWVMclJHOGtmR1VaSFdLYzhVQ1VrK1hjVjlXdks1NEVmRDl5eHRhVVloZUQrdGJiUE1HK3YreG8xeVBIT1FQVDhVL1ExZXhKYWQ2MVJ6T3BZR0JiK3Z5eWw0OUYyZ3FFNks2T1VzNWl0UFhZYnZiYmJWRDI0cGJ0R0ZuVWVncmlLaFFmYUNtaExjemN6TzBNclV1SUIzWmZwenVIWXF0L09ZbXl0WWNpc1FYdk82dXFIRU1ta09USkNXVGs1dC9EQXhxeXc5R3A3VGtXV2doNkc0cHZTY1RrazFZU2R0MXBPNzV0Wk54WTVraW5XbUM4eFRCMmtNb0ZqY1gwU3dpRXQ0dk1jSFMyNUt1OHpnbi9GSUl0RmhCUytrSC9hTHVYd2IrdisyVDNzZlkyRWVSQXN4MVB5ZnhzRkIzRUdIYUZzeU44VHcvbWRWNTBJbHpsNVdRUTJzK1R4TzVNOFF6NkdZZXBIMFRzZG44bnJxdWNoQnIzSzhYNU50Yy91RmNHckltL1R0ZW1rM3VOOHJlR1VlN0dnNGNmaDc0aWhMSXJrd0paR004eVJ2NVp3dWloUDJ0N3ZHWFF6VkxHaTFBQXM4REZUU0lSdFFla3F2MWxuRGVlVzIzd2ZrVTYrdkhWQ2doUks1cXV5WFBod29IanlsQlpCQU5aeEFtMmVaSFU2TXhhekEzTkJSbWl6NGkxQnU5eFRHVXlZWW5zVUJYRWJXOTIvSFl0RnhkN3VpcGlQWGo5QUttVjRDbklOVndFcUxqa3MxVmR4Zis3TDREK0ZNV09NTk1BaTRXbWszbUhUTlptVjJOQWc9PSIsIk1JSVNNRENDRUJpZ0F3SUJBZ0lXQUtvQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEQU5CZ2txaGtpRzl3MEJBUXNGQURDQ0FqVXhFekFSQmdzckJnRUVBWUkzUEFJQkF3d0NRMEV4R0RBV0Jnc3JCZ0VFQVlJM1BBSUJBZ3dIVVhYRHFXSmxZekViTUJrR0N5c0dBUVFCZ2pjOEFnRUJEQXBVWlhKeVpXSnZibTVsTVRFd0x3WURWUVFQRENoVHc2bGpkWEpwZE1PcElFbHVabTl5YldGMGFYRjFaU0F2SUVONVltVnlJRk5sWTNWeWFYUjVNVHN3T1FZRFZRUUZEREpPUlZFZ01URTNNelE0T0RZME5TQXZJRU5PSURFd05qUTNOek10TUNBdklFSk9JRGMyTnpNME9UWTRNVkpETURBd01URXFNQ2dHQ1NxR1NJYjNEUUVKQVJZYmFXNW1iMk5oUUhOdFlYSjBZMkZ5WkhObFkzVnlhWFI1TG1OaE1Sb3dHQVlEVlFRWERCRXJNU0FvTkRVd0tTQTVOalF0TkRVeE1URWFNQmdHQTFVRUZBd1JLekVnS0RRMU1Da2dPVFkwTFRjM056WXhFREFPQmdOVkJCRU1CMG8yVnlBd1FUSXhDekFKQmdOVkJBWVRBa05CTVJBd0RnWURWUVFJREFkUmRjT3BZbVZqTVJNd0VRWURWUVFIREFwVVpYSnlaV0p2Ym01bE1Sb3dHQVlEVlFRSkRCRXhNVGM1SUdSbElHd25aWGh3Y21WemN6RXlNREFHQTFVRUN3d3BRWFYwYjNKcGRNT3BJR1JsSUZCdmJHbDBhWEYxWlNBdklGQnZiR2xqZVNCQmRYUm9iM0pwZEhreE5UQXpCZ05WQkFvTUxGTlRSU0JEWVhKMFpTRERvQ0JRZFdObElFbHVZeTRnTHlCRlUxTWdVMjFoY25RZ1EyRnlaQ0JKYm1NdU1VWXdSQVlEVlFRREREMVRRMUFnUVhWMGIzSnBkTU9wSUdSbElGQnZiR2wwYVhGMVpTQXZJRk5EVXlCRFpYSjBhV1pwWTJGMFpTQlFiMnhwWTNrZ1FYVjBhRzl5YVhSNU1CNFhEVEU0TURVek1ERTFNekUxTjFvWERUTTRNRFV6TURFMU16RTFOMW93Z2dJbU1STXdFUVlMS3dZQkJBR0NOendDQVFNTUFrTkJNUmd3RmdZTEt3WUJCQUdDTnp3Q0FRSU1CMUYxdzZsaVpXTXhHekFaQmdzckJnRUVBWUkzUEFJQkFRd0tWR1Z5Y21WaWIyNXVaVEV4TUM4R0ExVUVEd3dvVThPcFkzVnlhWFREcVNCSmJtWnZjbTFoZEdseGRXVWdMeUJEZVdKbGNpQlRaV04xY21sMGVURTdNRGtHQTFVRUJRd3lUa1ZSSURFeE56TTBPRGcyTkRVZ0x5QkRUaUF4TURZME56Y3pMVEFnTHlCQ1RpQTNOamN6TkRrMk9ERlNRekF3TURFeEtqQW9CZ2txaGtpRzl3MEJDUUVXRzJsdVptOWpZVUJ6YldGeWRHTmhjbVJ6WldOMWNtbDBlUzVqWVRFYU1CZ0dBMVVFRnd3Ukt6RWdLRFExTUNrZ09UWTBMVFExTVRFeEdqQVlCZ05WQkJRTUVTc3hJQ2cwTlRBcElEazJOQzAzTnpjMk1SQXdEZ1lEVlFRUkRBZEtObGNnTUVFeU1Rc3dDUVlEVlFRR0V3SkRRVEVRTUE0R0ExVUVDQXdIVVhYRHFXSmxZekVUTUJFR0ExVUVCd3dLVkdWeWNtVmliMjV1WlRFYU1CZ0dBMVVFQ1F3Uk1URTNPU0JrWlNCc0oyVjRjSEpsYzNNeE1UQXZCZ05WQkFzTUtGWmhiR2xrWVhScGIyNGd3NGwwWlc1a2RTQXZJRVY0ZEdWdVpHVmtJRlpoYkdsa1lYUnBiMjR4TlRBekJnTlZCQW9NTEZOVFJTQkRZWEowWlNERG9DQlFkV05sSUVsdVl5NGdMeUJGVTFNZ1UyMWhjblFnUTJGeVpDQkpibU11TVRnd05nWURWUVFEREM5VFExQWdWbUZzYVdSaGRHbHZiaUJGZEdWdVpIVWdMeUJUUTFNZ1JYaDBaVzVrWldRZ1ZtRnNhV1JoZEdsdmJqQ0NBaUF3RFFZSktvWklodmNOQVFFQkJRQURnZ0lOQURDQ0FnZ0NnZ0lCQUxTQ1l2SHhhNmh3YUNpc1NwcXpTOWVZZGNaOGh6V3J6K0w3VVZXbXB2MkZON2l5MjhFNXdWZnFyRDl5MlkvbDlMa1F3b1NKZTJ4Mm9DSVVwNmszUEtoSDRPWnhoQjJYNTY4bHVJeFBnNjhVS3ZBZVlzemZoRldtMkVGU2VoMzF2OHNxbzlXZUJ6YjBSZXN6bTg2UmpKTEZjQ0NrYWFWVVY4cERGQzArMWRHQ2xLYlFYci9kakE0VnZJdFhOenZPVW5NaTVVMWxVSGw0RS9GaVpwY2U4cDdvN0RiTng0d2lFbzhsa080NUpGTGJmSW83UnQrbDhhMDRJVitzTUlrYmVZTVBXOHF0TExSaGlYNTZzbXBUd2tmSlRsaWRUOURHWm9YbllDblFMMld3c1dCc3NkaWlieUpKUVgvZlRJYkc3NjRWampmSzdlbzhBSklzZ0dKb0tLZjFwK0ovZEV5WlhRTGZLa1ZqNmJFK2dHZzZRQTdrWlJ6SUZuRytOUjVKc1lxcUoyU1AyOXlSUy9FUHFxUGNha0ZjT3loNnd0L3ByRUdrY0dLZEI3VFgxNlY5amFEWWR2WnIvNUhRbWJSVnRhWThZYkhBQWtFdXc1QUU4eFZsci92dmR4ekI4c0o0MWNhUGtMMEpxMlhYSTQ5dnlFZXc2MWhXVlNaZ1dQaXlUa1k3WHo0MzcyZW5PMStSNk9mcElOOHltdFV6TjBQOWxmVjIwbVJoSVZRRTU5ZDZ1YmdTZk9MTDd5QVNreTZDdS9kaVFRYUF1bHVqUUdZOHZvRFB5ck9rS21rKzcyb3krWXJpcTdpS1VzdFpyZ3AvLzIyaDhJb2E4R2FYTjRMNSs3T2hjTCtTeGNjUGxtK2lJVFlCa24wTVRHVThHUHplVHZUTWFKVFRqV1dqQWdFbG80SUpRVENDQ1Qwd0hRWURWUjBPQkJZRUZNcFpQWFZHTlF5alBXek1XVHRmdnpiUElHNXhNQjhHQTFVZEl3UVlNQmFBRk5weVBtaUROQWRxQVpIU3BhOCtIRTJpNGY1T01BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0N3WURWUjBQQkFRREFnSEdNSUlDbUFZRFZSMGxCSUlDanpDQ0Fvc0dDQ3NHQVFVRkJ3TUJCZ2dyQmdFRkJRY0RBZ1lJS3dZQkJRVUhBd1FHQ2lzR0FRUUJnamNLQXdRR0Npc0dBUVFCZ2pkREFRRUdDaXNHQVFRQmdqZERBUUlHQ1NzR0FRUUJnamRRQVFZSUt3WUJCUVVIQXdNR0Npc0dBUVFCZ2pjOUFRRUdDaXNHQVFRQmdqY0tBdzBHQ2lzR0FRUUJnamNVQWdFR0NDc0dBUVVGQndNSEJnZ3JCZ0VGQlFjREJnWUlLd1lCQlFVSUFnSUdCeXNHQVFVQ0F3VUdCeXNHQVFVQ0F3UUdDU3NHQVFRQmdqY1ZFd1lLS3dZQkJBR0NOd29EREFZSUt3WUJCUVVIQXdrR0IyQjhodmRvQWdRR0IyQjhodmRvQWdVR0IyQjhodmRvQWdjR0IyQjhodmRvQWdnR0IyQjhodmRvQWdrR0IyQjhodmRvQWdvR0IyQjhodmRvQWdzR0IyQjhodmRvQWd3R0IyQjhodmRvQWcwR0IyQjhodmRvQWc0R0IyQjhodmRvQWc4R0IyQjhodmRvQWhBR0IyQjhodmRvQWhFR0IyQjhodmRvQWhJR0IyQjhodmRvQWhNR0IyQjhodmRvQWhRR0IyQjhodmRvQWhVR0IyQjhodmRvQWhZR0IyQjhodmRvQWhjR0IyQjhodmRvQWhnR0IyQjhodmRvQWhrR0IyQjhodmRvQWhvR0IyQjhodmRvQlFFR0NHQjhodmRvQlFFQkJnaGdmSWIzYUFVQkFnWUlZSHlHOTJnRkFRTUdDR0I4aHZkb0JRRUVCZ2hnZkliM2FBVUJCUVlJWUh5RzkyZ0ZBUVlHQ0dCOGh2ZG9CUUVIQmdoZ2ZJYjNhQVVCQ0FZSVlIeUc5MmdGQVFrR0NHQjhodmRvQlFFS0JnaGdmSWIzYUFVQkN3WUlZSHlHOTJnRkFRd0dDR0I4aHZkb0JRRU5CZ2hnZkliM2FBVUJEZ1lJWUh5RzkyZ0ZBUThHQ0dCOGh2ZG9CUUVRQmdoZ2ZJYjNhQVVCRVFZSVlIeUc5MmdGQVJJR0NHQjhodmRvQlFFVEJnaGdmSWIzYUFVQkZBWUlZSHlHOTJnRkFSVUdDR0I4aHZkb0JRRVdCZ2hnZkliM2FBVUJGd1lJWUh5RzkyZ0ZBUmd3T2dZRFZSMGZCRE13TVRBdm9DMmdLNFlwYUhSMGNEb3ZMMk5oTG5OdFlYSjBZMkZ5WkhObFkzVnlhWFI1TG1OaEwzQnZiSE5qY3k1amNtd3dkUVlJS3dZQkJRVUhBUUVFYVRCbk1Dd0dDQ3NHQVFVRkJ6QUJoaUJvZEhSd09pOHZiMk56Y0M1emJXRnlkR05oY21SelpXTjFjbWwwZVM1allUQTNCZ2dyQmdFRkJRY3dBb1lyYUhSMGNEb3ZMMk5oTG5OdFlYSjBZMkZ5WkhObFkzVnlhWFI1TG1OaEwxQnZiRk5qYzBOaExtTnlkREFxQmdOVkhSRUVJekFoaGg5b2RIUndPaTh2WlhZdWMyMWhjblJqWVhKa2MyVmpkWEpwZEhrdVkyRXZNSUlGWUFZRFZSMGdCSUlGVnpDQ0JWTXdRZ1lIWUh5RzkyZ0JBekEzTURVR0NDc0dBUVVGQndJQkZpbG9kSFJ3Y3pvdkwyTmhMbk50WVhKMFkyRnlaSE5sWTNWeWFYUjVMbU5oTDJOd2N5OXpZM05sZGpBS0JnaGdmSWIzYUFFREFUQUxCZ2xnZkliM2FBRURBUUV3Q3dZSllIeUc5MmdCQXdFQ01Bc0dDV0I4aHZkb0FRTUJBekFMQmdsZ2ZJYjNhQUVEQVFRd0N3WUpZSHlHOTJnQkF3RUZNQXNHQ1dCOGh2ZG9BUU1CQmpBTEJnbGdmSWIzYUFFREFRY3dDd1lKWUh5RzkyZ0JBd0VJTUFzR0NXQjhodmRvQVFNQkNUQUxCZ2xnZkliM2FBRURBUW93Q3dZSllIeUc5MmdCQXdFTE1Bc0dDV0I4aHZkb0FRTUJEREFMQmdsZ2ZJYjNhQUVEQVEwd0N3WUpZSHlHOTJnQkF3RU9NQXNHQ1dCOGh2ZG9BUU1CRHpBTEJnbGdmSWIzYUFFREFSQXdDd1lKWUh5RzkyZ0JBd0VSTUFzR0NXQjhodmRvQVFNQkVqQUtCZ2hnZkliM2FBRURBakFMQmdsZ2ZJYjNhQUVEQWdFd0N3WUpZSHlHOTJnQkF3SUNNQXNHQ1dCOGh2ZG9BUU1DQXpBTEJnbGdmSWIzYUFFREFnUXdDd1lKWUh5RzkyZ0JBd0lGTUFzR0NXQjhodmRvQVFNQ0JqQUxCZ2xnZkliM2FBRURBZ2N3Q3dZSllIeUc5MmdCQXdJSU1Bc0dDV0I4aHZkb0FRTUNDVEFMQmdsZ2ZJYjNhQUVEQWdvd0N3WUpZSHlHOTJnQkF3SUxNQXNHQ1dCOGh2ZG9BUU1DRERBTEJnbGdmSWIzYUFFREFnMHdDUVlIWUh5RzkyZ0JCVEFLQmdoZ2ZJYjNhQUVGQVRBS0JnaGdmSWIzYUFFRkFqQUtCZ2hnZkliM2FBRUZBekFLQmdoZ2ZJYjNhQUVGQkRBS0JnaGdmSWIzYUFFRkJUQUtCZ2hnZkliM2FBRUZCakFLQmdoZ2ZJYjNhQUVGQnpBS0JnaGdmSWIzYUFFRkNEQUtCZ2hnZkliM2FBRUZDVEFLQmdoZ2ZJYjNhQUVGQ2pBS0JnaGdmSWIzYUFFRkN6QUtCZ2hnZkliM2FBRUZEREFLQmdoZ2ZJYjNhQUVGRFRBS0JnaGdmSWIzYUFFRkRqQUtCZ2hnZkliM2FBRUZEekFLQmdoZ2ZJYjNhQUVGRURBS0JnaGdmSWIzYUFFRkVUQUtCZ2hnZkliM2FBRUZFakFLQmdoZ2ZJYjNhQUVGRXpBS0JnaGdmSWIzYUFFRkZEQUtCZ2hnZkliM2FBRUZGVEFLQmdoZ2ZJYjNhQUVGRmpBS0JnaGdmSWIzYUFFRkZ6QUtCZ2hnZkliM2FBRUZHREFLQmdoZ2ZJYjNhQUVGR1RBS0JnaGdmSWIzYUFFRkdqQUtCZ2hnZkliM2FBRUZHekFLQmdoZ2ZJYjNhQUVGSERBS0JnaGdmSWIzYUFFRkhUQUtCZ2hnZkliM2FBRUZIakFKQmdkZ2ZJYjNhQUVDTUFvR0NHQjhodmRvQVFJQk1Bb0dDR0I4aHZkb0FRSUNNQW9HQ0dCOGh2ZG9BUUlETUFvR0NHQjhodmRvQVFJRU1Bb0dDR0I4aHZkb0FRSUZNQW9HQ0dCOGh2ZG9BUUlHTUFvR0NHQjhodmRvQVFJSE1Bb0dDR0I4aHZkb0FRSUlNQW9HQ0dCOGh2ZG9BUUlKTUFvR0NHQjhodmRvQVFJS01Bb0dDR0I4aHZkb0FRSUxNQW9HQ0dCOGh2ZG9BUUlNTUFvR0NHQjhodmRvQVFJTk1Bb0dDR0I4aHZkb0FRSU9NQW9HQ0dCOGh2ZG9BUUlQTUFvR0NHQjhodmRvQVFJUU1Bb0dDR0I4aHZkb0FRSVJNQW9HQ0dCOGh2ZG9BUUlTTUFvR0NHQjhodmRvQVFJVE1Bb0dDR0I4aHZkb0FRSVVNQW9HQ0dCOGh2ZG9BUUlWTUFvR0NHQjhodmRvQVFJV01Bb0dDR0I4aHZkb0FRSVhNQW9HQ0dCOGh2ZG9BUUlZTUFvR0NHQjhodmRvQVFJWk1Bb0dDR0I4aHZkb0FRSWFNQW9HQ0dCOGh2ZG9BUUliTUFvR0NHQjhodmRvQVFJY01Bb0dDR0I4aHZkb0FRSWRNQW9HQ0dCOGh2ZG9BUUllTUFvR0NHQjhodmRvQVFJZk1Bb0dDR0I4aHZkb0FRSWdNQW9HQ0dCOGh2ZG9BUUloTUFvR0NHQjhodmRvQVFJaU1Bb0dDR0I4aHZkb0FRSWpNQWNHQldlQkRBRUJNQWNHQldlQkRBRUNNQWdHQm1lQkRBRUNBVEFJQmdabmdRd0JBZ0l3Q0FZR1o0RU1BUUlETUFjR0JXZUJEQUVETUFjR0JXZUJEQUVmTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElDQVFDQjZIODZJeVY3a1RHZFpoL251aTh3d0djRFhUVVRyQXN1Y08zcjBDa251NHIxcHphS05LbXk2M0V2M1B2ZzB2UEV3Zm1OQUFRVmRTYmdHdE4wTCtGWlpLQktBZERWYTBJdktpUi85OW10dnJJc2pSWG1ZdUdnUlRpbVNlYXMzaG5HaTg3a0dOaTN4WVFVK2x6WlRIWWtHMTZBdTR0VmEyZmM1NUtxWE8yUUI2SjVVVk9CNWszN2pwZkxWdEgwNVhJclk2aWs2UzhONlNvMFJvTmRSZmlIbnZGSUlXdm9Ha3hQT01xSlBzdmRscCsvK3NRdmVjZTgrN1BLQytXQUNCMi9iUFpHTDNCdFFKbGhQYjVnbXQ1SHlKNmg0YTF5YTIrYlZmdkhqTTZSNmtoWWh2SWFOZm1ja1B5N3ZLQzlKNmxNRXFkRDc5V2RkZnY5alJia3JjSTVsdnpQREJYV1dVMXdZaDJCeWZ5NUFNdXRYOC9pc0hkdGJKQ2JWMFFqT3JZV2dZMHBha2o5MGRSVDVBdTN1K29Bcm0xZmV3aUFudTdPOUhXaHhaZGpMNXBaZW45K3JFdzg4YzZxQ0NkNmJqUjMrVnBzYXUrRGxZeGNlckVPMjZlWm9QU1FOL0pmTTZzNkFYa0xPR0x2THFqemZjLzlvMTZ3VmJRTFZvYXczN2xXcWsreW55d1FrcThOZHlPQ2V0N3hibDlLTHM4eDZ6MzB1bHJ1OXpKR1MrbXlHTXJLRHRmbUN0b3ovaXdOZEp1YXNOR1RpK2w4d1ZwODhubUY4R1lBOExVd3RtT0trYTVWcUs4WVpLem8xdm9GK3JEOEdNUWF0TklOOHZ4OEowY2ZOVFVtaHZDRCt1eGVWbWNLdkhwcTNDT3B0VTZwVTd1YmxlRG55TGZEOXc9PSIsIk1JSUpnekNDQjJ1Z0F3SUJBZ0lXQU1vQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEQU5CZ2txaGtpRzl3MEJBUXNGQURDQ0FqQXhPekE1QmdOVkJBVU1NazVGVVNBeE1UY3pORGc0TmpRMUlDOGdRMDRnTVRBMk5EYzNNeTB3SUM4Z1FrNGdOelkzTXpRNU5qZ3hVa013TURBeE1STXdFUVlMS3dZQkJBR0NOendDQVFNTUFrTkJNUmd3RmdZTEt3WUJCQUdDTnp3Q0FRSU1CMUYxdzZsaVpXTXhHekFaQmdzckJnRUVBWUkzUEFJQkFRd0tWR1Z5Y21WaWIyNXVaVEV4TUM4R0ExVUVEd3dvVThPcFkzVnlhWFREcVNCSmJtWnZjbTFoZEdseGRXVWdMeUJEZVdKbGNpQlRaV04xY21sMGVURXFNQ2dHQ1NxR1NJYjNEUUVKQVJZYmFXNW1iMk5oUUhOdFlYSjBZMkZ5WkhObFkzVnlhWFI1TG1OaE1Sb3dHQVlEVlFRWERCRXJNU0FvTkRVd0tTQTVOalF0TkRVeE1URWFNQmdHQTFVRUZBd1JLekVnS0RRMU1Da2dPVFkwTFRjM056WXhFREFPQmdOVkJCRU1CMG8yVnlBd1FUSXhDekFKQmdOVkJBWVRBa05CTVJBd0RnWURWUVFJREFkUmRjT3BZbVZqTVJNd0VRWURWUVFIREFwVVpYSnlaV0p2Ym01bE1Sb3dHQVlEVlFRSkRCRXhNVGM1SUdSbElHd25aWGh3Y21WemN6RXJNQ2tHQTFVRUN3d2lRWFYwYUc5eWFYVERxU0JTWVdOcGJtVWdMeUJTYjI5MElFRjFkR2h2Y21sMGVURTFNRE1HQTFVRUNnd3NVMU5GSUVOaGNuUmxJTU9nSUZCMVkyVWdTVzVqTGlBdklFVlRVeUJUYldGeWRDQkRZWEprSUVsdVl5NHhTREJHQmdOVkJBTU1QMU5sWTNWeWFYVERxU0JEWVhKMFpTRERvQ0JRZFdObElDaFRRMUFwSUVGRElDOGdVMjFoY25RZ1EyRnlaQ0JUWldOMWNtbDBlU0FvVTBOVEtTQkRRVEFlRncweE9EQTFNekF4TlRFMU16QmFGdzAwT0RBMU16QXhOVEUxTXpCYU1JSUNNREU3TURrR0ExVUVCUXd5VGtWUklERXhOek0wT0RnMk5EVWdMeUJEVGlBeE1EWTBOemN6TFRBZ0x5QkNUaUEzTmpjek5EazJPREZTUXpBd01ERXhFekFSQmdzckJnRUVBWUkzUEFJQkF3d0NRMEV4R0RBV0Jnc3JCZ0VFQVlJM1BBSUJBZ3dIVVhYRHFXSmxZekViTUJrR0N5c0dBUVFCZ2pjOEFnRUJEQXBVWlhKeVpXSnZibTVsTVRFd0x3WURWUVFQRENoVHc2bGpkWEpwZE1PcElFbHVabTl5YldGMGFYRjFaU0F2SUVONVltVnlJRk5sWTNWeWFYUjVNU293S0FZSktvWklodmNOQVFrQkZodHBibVp2WTJGQWMyMWhjblJqWVhKa2MyVmpkWEpwZEhrdVkyRXhHakFZQmdOVkJCY01FU3N4SUNnME5UQXBJRGsyTkMwME5URXhNUm93R0FZRFZRUVVEQkVyTVNBb05EVXdLU0E1TmpRdE56YzNOakVRTUE0R0ExVUVFUXdIU2paWElEQkJNakVMTUFrR0ExVUVCaE1DUTBFeEVEQU9CZ05WQkFnTUIxRjF3NmxpWldNeEV6QVJCZ05WQkFjTUNsUmxjbkpsWW05dWJtVXhHakFZQmdOVkJBa01FVEV4TnprZ1pHVWdiQ2RsZUhCeVpYTnpNU3N3S1FZRFZRUUxEQ0pCZFhSb2IzSnBkTU9wSUZKaFkybHVaU0F2SUZKdmIzUWdRWFYwYUc5eWFYUjVNVFV3TXdZRFZRUUtEQ3hUVTBVZ1EyRnlkR1VndzZBZ1VIVmpaU0JKYm1NdUlDOGdSVk5USUZOdFlYSjBJRU5oY21RZ1NXNWpMakZJTUVZR0ExVUVBd3cvVTJWamRYSnBkTU9wSUVOaGNuUmxJTU9nSUZCMVkyVWdLRk5EVUNrZ1FVTWdMeUJUYldGeWRDQkRZWEprSUZObFkzVnlhWFI1SUNoVFExTXBJRU5CTUlJQ0lEQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FnMEFNSUlDQ0FLQ0FnRUF1amFDVEVpMGtHWjFtczg1ZWVVaHVnUnBSdHlrMENBemJ4clhPRGFVU01ON1FoR0VjTlZSOGJQeWNhSnVQU0V3WVlyeERCUktJSHp5dHVEK0UvcEhKVWtuMzN1eWRiWUhJYXVSdllKV21QYVFWVEtkbnJ2ODhKSzBTZFNGWUZab0xoZHZrN1dNLzNMc1NzQWg2WWlaU3NYL2Z6T3JnTWp5UFVhd2QxSmtNclJoQVQyRDRkTDhBVVNmcHZvcUs0aU9lRmJxOHpjelZ5SWFrV2hJUXF3cVAvK1A2aWIvc3hpYXBvaHNEdWlDZHBRN0I3TVR5ek9IM2tLcG9HWm05VHI2RFdZdHU4ekFOcG84elEyWkx1MDQ1bE5CUWZVU3o1U0V3YUR5WVdRUlNoRFVybGh6YnhlQWxiNTYwOUNwOEY4UTZNdUpOQy80MmpRb0NqMEJBS1FQejFycWRWVGZjSnNZVnphdHp5b3Rwck1hR01GelBGZWxSYkorQ0s4RFNMVE1XVCtCSEdXRDhCcFQ3RmVQaTZpSFZibnF3MDhGOTBYUEUzV3JocXRsbjhsM2lYSDY1Q29vNHY5RVZ5NEYrcmlORkt1a3pFVERxZVgwd2pNdUhMUUtXS2FtMUd6b1pmUFVCZ3NyMzdkN25sem1qdEVjWUVZMzQ3MlpJaU1PeFdUOW9IUHVHV0hMRmhlR1h3MSs1cXdOMFN1a1cwLzlYdVlHMGZQZlludHNNczh4bEwvU3NFZkJEV2ltRGM0RXI4VXJ2MDQ3YVp5N2tDQWx3c21ZaHhYQXVyK1RwbzM0d3M5N1Vkazk5ZTNJazVOMGJ4ek1ncktEUk1ZNHhJSkpoSE5GNVZXUGdRd3prQ2JxdURYRDdJeVE1eHJsRkFwU0lPbGZnUVRPZVBuazFvY0NBU1dqZ1pBd2dZMHdIUVlEVlIwT0JCWUVGQ1JnYWdkekpGVjFPemI2ZEZtVFZjbXlBQ1k2TUI4R0ExVWRJd1FZTUJhQUZDUmdhZ2R6SkZWMU96YjZkRm1UVmNteUFDWTZNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdEZ1lEVlIwUEFRSC9CQVFEQWdHR01Db0dBMVVkRVFRak1DR0dIMmgwZEhBNkx5OWpZUzV6YldGeWRHTmhjbVJ6WldOMWNtbDBlUzVqWVM4d0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dJQkFLTjNHOTlyNWVKa1VXS0QxSmM5YXl6WkZwSXhDc2hOYlZHSWZOZTBaaXdDQjlLdFJpTytFakV1bkpsVU9mam5YTVpPRDE4a3U0cDZVNWUwSkNTVkh4UEg3NnAxM3NXRmJ4Y1lpd3V0Y2FPd3NPS0hJbGYyODFhbkl0d1piR09lU1o5b3lUYnJTS0JTUFg5Smpoc3EwYnlQdFE1VFJWd24yaENSZWVJMlJCYnMvNUtEUkhLTUozQ3N3SVpZV3J5Qnpaekd2R1BsZFF0TVVlMk5QaVRYdjJ5ODZDWWV3d2hpTVFSTzNpL2tac2pmZVdJa3FKWVR6akE5RkRIREVyU3ljZThlLzFzWGdEYWJxcEVvNnpyeGQ1SGdRR0I4RkltVmE3S3RMSUlxbFFFOUFYNFd4QXlOdWR5dmgrT2wzMzVNYTRRUDZrY2pYMXVGOHdpK1E3K045d0FvVzRCNlBPaVA2dFdiWkVQOTBNSkU1OUpKZ1BjWjE3ejNlNzBMWHNKT3FaQVFIak9WZVM5N0RyZHlxYTBtN2FXMUNPK3BMQU1kTi9UaGxNYktDRWpqT0lsK1JCT0FmdVk4eDREekZQaDFjOVFNOW1yam83S3NTallCYks1alVYblhvUVVRSVB3U1FFcittVFRjQXhLR3BnV1B1RlFjajNnMG1ManhLalV0anJtQ1QvUzM2aFpEbFEvd0YrcjNhUytoS2s3blI5c1ZqUllCRzFuNzlSZ0FlSHBBNDVpVmFyNGF5RkphRVA4TysrVlJpQVVOK1k3bXFyQStqejk3azZiR2lsckUyRmxXLzJQWVRlZ2d0LzBXVG1ZbUp1RU5BbUd5akFONUV5clBSK0lMZXFYbExwTGE3dFliWTJERk10ZDVVbTlOeUkxaW1GRU5vdlY1K2xiRCJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFsZ0FBQUtLQ0FZQUFBRGhrQ1g0QUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUFJR05JVWswQUFIb2xBQUNBZ3dBQStmOEFBSURwQUFCMU1BQUE2bUFBQURxWUFBQVhiNUpmeFVZQUFRV05TVVJCVkhqYTdMMTFmRjNKZWYvL1BuajVTcnBpdENTRHpBekx6Tm5RTnR5QWt6VFF0UEUzYlFvcE4rMnZtS1pKM0tSTkNxbWFRcGczdTFubXRlVTFrMHlTWlRGTGwrSFE3dy9aWG5zdEpndm0vWHJwdFd2cG5IUG56c3laK2N3enp6eVA1RGdPQW9GQUlCQUlCSUxwUXhaVklCQUlCQUtCUUNBRWxrQWdFQWdFQW9FUVdBS0JRQ0FRQ0FSQ1lBa0VBb0ZBSUJBSWhNQVNDQVFDZ1VBZ21DdW9vZ29XTnBJa2lVb1FMQWgyN056OUFQQUY0RjExdGJ2cVJZMElGZ0xpSlAvQ1JWaXdCQUxCZkJCWEh3ZCtEcXdGWHQyeGMvZGRvbFlFQXNGY1JoTHFlWUUzc0xCZ0NlYTNzRklZc2xyOTFoditaQUtmcnF2ZDlYVlJTNEw1akppRGhjQVNDSUVsRU15MnVBb0Mzd1llR3VXeXJ3S2ZxYXZkWllrYUV3aUJKUkFDU3lBRWxrQXd1cmlxQWg0RlZvL2o4cWNZOHNzYUZEVW5FQUpMTUZjUVBsZ0NnV0N1aWF1N2dmM2pGRmNBOXdMN2R1emN2VmJVbmtBZ21Dc0lDOVpDYjJCaHdSTE1IMkVsQWI4Ti9QMGtGMzl4NE1OMXRidStMMnBUTUY4UWM3QVFXQUloc0FTQ21SUlhmdUEvZ0hkTncrUCtBZmlEdXRwZHBxaFpnUkJZQWlHd0JFSmdDUmFydUZvRGZCOVlOWTJQZlFsNFQxM3RyblpSd3dJaHNBVFhBK0dESlJBSXJxZTQrbFdnYnByRkZjQ3R3S0dML2x3Q2dVQXc2d2dMMWtKdllHSEJFc3hOWWVVR3ZneDhZb1kveWdZK0QveVZDT1VnbUl1SU9WZ0lMSUVRV0FMQmRJbXJWY0IzZ1hXeitMSFBBNzhxdGd3RlFtQUpaZ3V4UlNnUUNHWlRYSDJVb1JBTTYyYjVvKzhBanU3WXVmdGgwUW9DZ1dBMkVCYXNoZDdBd29JbG1CdkNLZ2g4QTNqUEhDak9WNERmcjZ2ZGxSWXRJN2plaURsWUNDeUJFRmdDd1dURjFhM0Fmd05MNWxDeGpnSHZyNnZkZFZTMGtFQUlMSUVRV0FJaHNBVHpTVmhwd0Y4QXY4ZmNkRWZJQUg4SWZLbXVkcGN0V2t3Z0JKWkFDQ3lCRUZpQ3VTNnVWZ0gvQzJ5YUI4VjlEdGhaVjd1cldiU2NRQWdzZ1JCWUFpR3dCSE5SV01uQUx1QnZBUGM4S25vWStFeGQ3YTVhMFlvQ0liQUVRbUFKaE1BU3pDVnh0Uno0Sm5ETFBQNGFqd0VmcjZ2ZDFTWmFWQ0FFbGtBSUxJRVFXSUxyS2F3dVdhMytHdkFzZ0s4a3JGa0NJYkFFUW1BSmhNQVNYRmR4Tld0V0s4YzJ5Y1FIMFAxNXM5V3ZoVFZMSUFTV1FBZ3NnUkJZZ2xrVlZpcndHWVpPQ2M2NDFjbzJNeGlSQzNpMURDbkxneHBjZ2lRcnMvRlZ3OERuZ0cvVTFlNFNnNlZBQ0N6QnVCR1IzQVVDd1VURjFWWmdIL0NGMlJCWFpqcE9lcUNKdDJ4bzVJdnZlWlhONVcxa0JodXh6Vm1KRTVvRi9Bdnc4bzZkdTllSTFoY0lCT05GV0xBV2VnTUxDNVpnK29TVkgvaExodnl0Wm1WeFppWUhNT0k5Zk9yTzQyeXA3TG44KzE4Y1djS1BEbGFqQlVwUlhiN1pxZ0lEK0R1R0VrZW5SSThRVEFkaURoWUNTeUFFbG1CeGk2czNNV1RKS1orbGFRY3Ixb2xzRGZLN0R4eWlNaTk2elJXSG12UDQyak5yVWIxNXFON2MyYXlPczhBbjYycDNQU3Q2aGtBSUxJRVFXRUpnQ1FTVEVWWkxnQzhCYjUrMUNjZTJzS0l0NUhrSCtaMEhEcEh0ell4NGJVdS9ueTg4dm9tTUZFVHhsODUyZi84LzRIZnFhbmQxaUo0aUVBSkxJQVNXRUZnQ3dYaUVsWnVoRkRlZll4WkRMMWhHQ2pQU3dwYktMajU2YXoyYU1uWUdtMWhLWS9mVDY3a3drSU1TcUVCV3RObXNxaGhEanY1ZnJxdmRaWWllSXhBQ1N5QUVsaEJZQXNGSTR1cGg0Q3RBOVd4K3Jwa01ZOFM2ZU0rT3M5eTdwblZDOTlxT3hQZjJMZVdwa3hWb2daTFo5TXU2eENsZ1YxM3RycWRFRHhJSWdTVVFBa3NJTElIZ1NtRzFGTmdOUERUTE13eG12QjNGalBDWis0Nnd2REE4NlVlOWRqNmZmMzErRFlvbkI5VlhjRDJxOFlmQVordHFkMTBRUFVvZ0JKWVFXS0lXaE1BU0xHNWhsUTM4TWZCcFFKL056N1l0QXl2U1RFVm9nRS9mZll5Z0p6UGxaM1pGUEh6cGlZME1wb01vZ2ZMWmlwZDFKU25naThEZjFkWHVpb29lSmhBQ1N3Z3NnUkJZZ3NVbHJEVGcxNEUvQTBLei9mbG1Lb0lSN2VUQjlSZDRaTXQ1WkduNnhpTERrcWw5ZVNWMTU0dFEvYVdvTHUvMXFPTHVpM1g3NzNXMXUwelI0d1JDWUFtQkpSQUNTN0R3eGRYYkdZcnB0SHoySnhRYk85NEJScFRmdVBzWWEwdjdaK3l6OXB3cjVEOWVXb1hxeVVIMTVRUFg1WDJvQjM2dnJuYlhvNkxuQ1lUQUVnSkxJQVNXWUdFS3EyM0FQeklMdVFPSHd6TFRXTkVXcW5JSCtJMjdqazk0UzdBbjZpRS9rSnpRUGQwUkQxOTVlajI5aVNDS3YzeTJUeGxleWJNTWhYVTRKSHFpUUFnc0liQUVRbUFKRm9hd1dnMThIbmpIOVNxRGtlakhpUGZ5eUpaRzNyVGh3b1JzU1E3d3ZYM0xlZnhvT1IrKzlSUzMxN1JQVE5qWkV0L2R0NHhuVHBhaEJvclEzTUhyTnA4QzN3UCt0SzUyMXhuUk13VmlEaFlDU3lBRWxtQitDcXRsd0o4QzcrYzY3WS9abG9rZGI4V3J4TmgxejlGaG83S1BLc3dzbVg5NWJpMUgyd3BRdkFVWXNVN3VYOVBNdTdhZm0vQVhPdEdXd3o4L3R3NWI5aVA3U3E2SEEveGx6UWY4RC9ENXV0cGQ1MFZQRlFKTElBU1dRQWdzd2Z3UVZoWEFId0VmQmE2YmlqQlRVWXhZSnpjdmErZjlONTVGVjYwSjNSOU82UHo5THpmVEhjOUdENVloeVFxMlpaQUp0N0NxcUpkUDMzMTB3cytNcDFXKytkSnFqcmJtb1Z3L0IvakwraEg0SnZDWGRiVzcya1RQRlFKTElBU1dRQWdzd2R3VVZzWEE3ek4wT2xDL1h1VndiR3ZJa2QyTThjazdqN09odkcvQ3oyanU4L04zajI4bUkrZmc4aGZDRlgzWnNXMHlrVFpDN2tGKy82RURoSHpwQ1Q5L3o3bEN2dm55S2hSWEVNVlhpQ1RKMTdQcFVzQTNnTCt1cTkzVkxYcXlFRmdDSWJBRVFtQUo1b2F3cWdCK0YvZzF3SDA5eTJLbVlwanhEdGFXOXZMUlcrc0p1Q2VlUVdiZitRSys4ZndhRkU4K3VpOW54T3ZTMFc0VXM1L2Z2dThJSzRvR0ovdzUvWEUzWDM5dURVMTkyY2orVWxUZGM3MmJNZ244Ry9ERnV0cGR6YUpuQzRFbEVBSkxJQVNXNFBvSXExVU1XYXgrRlZDdjYwUngwV3BsR3pFK2VtczkyNnNuYm9peG5TRm45S2RPbEtNSHg1Znl4a2hHaGxMc2JEL0xmV3RiSmw1dTRPVXp4WHpyMVJwVVZ4RDUrbHV6WUdqcjhIOFlDbFo2V3ZSMEliQUVRbUFKaE1BU3pJNncyZ0w4SWZCMnJwUHorcFZNaDlVcW10TDR5bE1idU5BZlFzc3FtMUE0QmN0SVlVUmEyVlRSemNkdU96bGh2eXlBZ2JpTGYzdHhOZWU2Y3k1YXM3eHpvYWtkaHRMdi9MVUk3eUFFbGtBSUxJRVFXSUtaRTFaM0FwOEQ3cHNUazRObFlpZmF3VXp3NFZzbVo3VUNPTmNkNUV0UGJpUWpaYUVIaWlabFFYSnNpMHlralN3OXdtY2ZPRVJ4Vm1KU1pYbnBUREgvL1dvTmlzdUg3QzIrbmljTjM4Z1R3Ti9XMWU1Nlhyd0pRbUFKaE1BU0NJRWxtTHFvMG9GM0FiOE5iSm9yNVRLU0E1aXhIbTVjMXNuN2JqaUxWNTljTnBoZkhxdmdlNjh0US9VVm9IdXpwbHl1ZEt3UE85WEhyOTEya2h1WGRrM3FHWkdrenJkZXJlRlFjejZxdndETm5UV1h1c1FCNEV2QTkrcHFkeG5pRFJFQ1N5QUVsa0FJTE1IRWhGVWU4REhnTjRHU3VWSXUyMHhqeDl2eGFYRStmdnNKYWliaFhBNFFUMnY4ODNOck9kMlppeFlzUmRHbXp6ZmZUQ2N3b3Uxc3IrN2t3emZYbzZ2MnBKNXpyRFhFdjcrNG1yVGpRL2FXSUt2NlhPb2k3Y0JYZ1grdHE5M1ZKOTRZSWJBRVFtQUpoTUFTakM2c3RnRy9BYndIY00yZGljREdTdlNRU1lSNWVNTUYzckt4Q1ZXWm5IQTUyNVhGbDUvYWdDRUYwUUxGTStKVTd0Z21ScVFkdnhibHQrNDdUSGtvTnFublpFeUZIeDJvNHNrVDVlamVIRlJ2M2xVaEkrWUFhZUE3d0ZmcmFuZnRGMitRRUZnQ0liQUVRbUFKWGhkVlhvYTJBWDhkMkQ3WHltZW1vbGp4VHFyekIvbndMYWNvbXFSL2srMUkvUFJRRlQ4N1hJazJUVnVDWXdxa2VEOW1vcGYzM1hDV3UxZTNUdnBFUU91QWovOTRhVFd0QXdGa2J6R2EyejhYdTFJZDhIV0d0ZzhUNHMwU0Frc2dCSlpBQ0t6RktxeldNN1FOK0FFZ2E2NlY3OUoyb0M0bCtlRE5wOWhhMlRQcFovVkVQZXgrZWoyZDBTeTBRT21zYnJjTm5USnNZMm4rQUorNjZ4aFpFMHd5ZlhreUJPb2FDdm52VjJ1d1pNOWMzRGE4UkJqNGI0YTJENCtKTjAwSUxJRVFXQUloc0JhRHFNcG1hUHZ2SThDMk9Ubm8yelpXb3B0TU1zS2IxbC9nelJ1Ykp1M0hCRU1uODJwZldZbml6a0gzWFo4dE5zZXhNYUxkWUlUNTVKM0gyYnlrZDlMUFNoa0tQejFVeFJQSHk5RzlXU2plL0xrUU8yc2s5Z0gvQ1h5bnJuYlhvSGdEaGNBU0NJRWxFQUpySVlrcUJiZ2YrQkR3VnVhUWI5VWJSbnVNNUNCbW9wZFZ4ZjE4OE9iVEZBU1NrMzVjTEtYeGpSZldjcklqaEJZb21ST3hwWXhVRENQV3diYktibmJlZkFyUEpFOC9BblFNZXZtdlYxZHlyaXNieFplUDVzbGlEb1FsRzRrMDhCT2dGbmlxcm5hWEpkNU1JYkFFUW1BSmhNQ2FqNkpLQm01bXlGcjFUaUIvTHBmWFNNVndrcDNrK3VKODhNYlRyQ29abU5MekRqVGw4Njh2ck1GUkEyaitJaVI1N2xoNEhOdkVpSGFnRWVQWDd6ak8yckwrS1QzdmVHdUliKzFaU1RqcFFmSVdqeXNDL1hXbUIvZytRODd4cjlUVjdyTEZHeXNFbGtBSUxJRVFXSE5kV0cwRjNzdVEwM3JaWEMrdlphUndFaDJvcEhqdmpqUGN0S3dMU1pyOHVCQkxhWHp6NWRVY2FjbEQ4eGVoemsxbjhDRlJlVEhOem83cUxqNTQwK2twV2JNY1IrTEZNOFY4ZDk4eWJObUQ1Q2xHMFZ6em9jdTJYQlJiM3hhbkVJWEFFZ2lCSlJBQ2E2NkpxaTNBSXd4WnE2cm5RNWx0eThCT2RHS21FN3hsVXhNUHJHMmVrcDhWREZtdC91MkZOZGhxQU0xZk9KZWlvSTg4d1ZrbVJtejZyRmxwVStHeG94VThlcVFTemUxRjloUk9LTzNQZGFZUitEL2dKM1cxdXc2SU4xc0lMSUVRV0FJaHNHWmJVTW5BalJkRjFTTkE1WHdwdTIyWk9Na3Uwc2s0ZDY1czQ2MmJtZ2hPOGxUZEpRWVNMdjc5eGRXYzZnak5lYXZWU0Z5eVptMWUwc3VIYnA1Y1BzVXJHVXpvL1BoZ05TK2VMc2J0OVNONUNwQVZkVDVWU1JQd0k0WnlJZTRWMjRoQ1lBbUV3QklJZ1RWVG9rb0RiZ04rQlhnYlVEeXZCbkxieEU3MGtFcEV1V1ZGSjIvYmRKNWNmMnFLazRQRU0vV2xmTHR1T2JJZVJQY1h6Q2xmcTRuWGtZVVI2OEl4b256Z3h0UGNXdE14WlpmMXZwaWJIK3hmeXQ2R0FseStJSW9uRDBsVzUxdlZkRERrSVA5RDRFV1Jva2NJTElFUVdLS0JoY0NhcXFnS0FROENid1llWUE3R3FocVBhTENTdmFUalliWlg5L0RJbGdZS2c4a3BQN2R0d01lL1BMZU96bWdBelYrTW9uc1dUTHViNlFSbXJJUHlVSVJQM0g1ODBvRlZyNlFyNHVGNys1Wng4RUllTGw4MmlpZDNYbXloRGtNWStDWHdjK0N4dXRwZEEyS2tFQUpMSUFTV0VGaUM4WWlxRlJjRjFadUJXNEI1T1F2YWxvbWQ2aVdUaUxDK3ZKOTNiajFIYVU1OHlzOU5HUW8vT3JDVXAwNldvWHBDdUh5aHVaWTZadG9tdmt5c0Z5czF3QVByV25qYnBzWXArNmhkRXFiZnFWdk9pZmFjb1JoYTdsd2tSWjJ2MVdRQkwxOFVXeit2cTkxMVJvd2dRbUFKaE1BU0FrdHdTVkQ1Z0x1Qis0Q0hnS3I1L0gxc000T1Q2aUdWaUxPOXFvZTNiRG8vTGNJS1lFOURJZDk2ZFNVV1hsUi8wVnlOWWo2OUNzSk1ZOFU2MGFVRU8yK3BuMUkwK3pjS3JSOGZyT1pBVTk1Rkg2MzgrZVFNUHhMbmdjZUFKNEJuNjJwM3hjVUlJd1NXRUZnQ0liQVdqNkNTZ0xVTUJmNThrQ0VyMWJ4WENwYVJobFEzNlZTU1cxZDA4T1lOVGVRRlV0UHk3TllCSC8vMndocmFCb01vdnNLNW1vZHZSakZTVWN4WUYxWDVZVDU2eTBtS3M2Y24xVjkzMU1QUEQxZnl5dGtpWEc0dnVQUG5TM2lIc2Nnd1pOMTYvS0xnT2w1WHUwdE1PRUpnQ1lFbEVBSnJnWW1xU29hc1ZKZCtDaGJLZHpQVENhUjBOMFltemIxcldybC9iVFBaM3N5MFBEdWVWdm5CL21VOGY2b0V6UnRDODRVV2RaOXlISnRNckE4ek5jZzlxMXQ1KytaR3ZGT0luWFVsZ3dtZHg0OVY4UFNKY25TM0MwZlBSM1Y1RjFMMWRRUFBYUHFwcTkzVkpFWW1JYkNFd0JJSWdUWC9CRlVwY0N0dzUwVkJ0WFNoVGZSbUtnS3BYalRaNElHMUY3aHJkZHUwVGZhbUxmUFU4VEorZEhBcGt1cEY5UmN1aE8ycmFjTTJNNWp4TGpBVHZHTmJBM2V2YWtXUnAyY3NUV1JVbmo1WnhoUEhLakFkRGR4NXFPN2dYTTUxT0ZrYUxvcXQ1eGc2bWRndUJKWkFDQ3lCRUZoelQxQlZNclRWZDhmRm42VUw4WHZhbG9HZDZzZEloaW5MaWZQUStpYTJWdlpNMitUdUFQdlBGL0N0VjFlU3N0eW92cUlGZFRwd3VqRXpDYXhZRno0OXlRZHZxcDlTQXVrM1l0a1MrNXZ5ZWV4b0phMERQalJQRnJJN3RKQ0ZiZ1B3L01XZmwrcHFkMTBRQWtzZ0JKWkFDS3paRlZOdVlETndFM0REeGY4V0wrUjJORE1KcEhRdnFXU0s3ZFU5UExqdUFwVjUwZW1kM2JxRC9PZkxxK21NK0ZDOGhXaWVnSGlCeG9tUmpHREd1eW5MaWJIejVwTlU1VTl2MnpUMUJuajgyQkwyTmViajlyaHhYSGx6SW5IMkROTUJ2QXJzdmZqZmczVzF1MUlMN1V1S09WZ0lMSUVRV05kVFVGVXdGRFg5MHM4bVlNSHZWem0yaFprS1E3b1BWVGE1WjNVTGQ2OXFtM0xVOVRmUzNPZm5PL3RXY0tvakc4V2JoOHVidlNERExzekdSR25FQnpBU2Zhd3VIZVI5TzA1UDIrbk5TMFNTT3MvVWwvTDB5WEpNV3dWWExxbzdhNzdHMDVxd2pnVU9BWHN1L2RUVjdtb1dBa3NnQkpaQUNLenhpYWt5aHF4VEc0RXR3RFlXdUhYcURjUHRrTk42cG85VU1zMnFrZ0h1WGRQQ2h2SStaR2w2MzlXT3NKZnYxSzNnV0dzSXhaT0Q3czFaTEJQMWpBdGpJOUdQa1Joa1kwVWY3OWx4WmxvQ3UxNko3VWdjYWNubHFSUGwxTGRuRDFtMTlOeUxUdkdMU2h4M0FQdUFnOEJoaHF4Y3JVSmdDWVRBRWl4YWdiVmo1MjZGSVQrcFMySnFNME9XcWJ6RjJFNldtY1pKRDJLbUlnUmNHZTVjMWNxdHl6dkk4YVduL2JONm8yNisrOXB5RGpUbG83aXowSDI1UWxqTmlOQXlNZUpEL25MYnFydDU5N1p6VTA1Tk5CejljUmN2bnkzbXVmb3lvbWw5eUNIZWxZMml1aFpyMWZkZUZGeUhydmhwcUt2ZFpRbUJKUkFDUzdCZ0JOWkZJVlVOckxuNHMvcmlmMWNDcnNYY05yYVp3VXBISURPSWJWdnNxTzdpOXBwMmxoZUdaK1R6dWlJZWZuS3dtcnJHUWxSM0VOV2JPOStTRDgvUGRyWk16RVF2UmpMS1RjdTZlT3VtUmdxbTJhSjFpYk5kV2J4d3VvUzZ4a0prV1FFOUc4VVZYQlFCWWNjZ0Rad0NUZ0FuTC83M0JOQjR2WVdYbUlPRndCSUlnVFVlTVhValEwN24xUXhacDVZRFMxZ0UvbElUbVd5dGRBVFpHQ0NUc2RoYzJjdE55enBZVjlhUEt0c3o4cG5OZlg1K2VHQVpSMXRDYUo0Z3FqY2tRaTVjbDdZM01CTjlHTWtvR3l2NmVHUkxBK1doMkl4OGxtbkxIR3NOOGNyWllnNWR5RVBYRld3dFowaHNDVkY5SlFiUUJKd0ZHaGs2eVZoWFY3dHJqeEJZQWlHd0JITkpZSDBIZUxlbzlXRW0xbFFVeFJ3Z25iWllXOTdQTGNzNjJGalJPeTI1N1Vhelp2eGcvM0xPZEFaUlBkbm92aHdrV1V5dTF4dkhOakVTQXhpSlFXcUt3N3hqNjFtV0ZVUm03UE15cHN6aDVqeGVQbGZNOFpZUUxwZUNwZWFndWdOQ2FBL1BkK3RxZDcxSENDekJWQkdqcldBNlNZb3F1Q2lxekRSV09vcGtER0lZTnV2Sys3bWh1cE9ORmIyNHRabmJrWEFjaWNNdHVmems0RkphQjN3bzdseThlVm5DeDJvdUxYcGtGZDJmaitZTjBSQWU1SzhmemFJOEZPZHRteHZZV042SE5NMkhHWFRWWm50MU45dXJ1MGxtVkk2MDVMS25vWWpqclNFMFRjYlJzbEZjQVdUVkpScEhqR01DSWJBRWM1VHdZdjd5WmlZSlJnUW5FOEcyYkRZdDZXVkhkUmZyeXZwbTFGSUZrTXlvdkhDNmhGOGNyU1JwNk1qdVhOeTVDekw2OXdJU1dnb3VmeTZPTDRlT1JKaXZQUnZBcTZkNWFGMFR0OWQwNEptbXFQeFg0dEZOYmxqYXhRMUx1OGlZTXNkYWM2bHJMT1RRaFR4a1JVYlNnNkFGVVhVM2krdzBvaGpIQkVKZ0NRUnpCY2UyTVROeEZIT1FkQ3FGVnpmWVd0bk5saVU5ckNvWm1MYm82cVBSRWZieStMRWx2SEttQ0VWM0lidnpjQWQ5b25IbWs5Q1NaSFJmRHZoeXlLVGovT2l3aisrOXRveGJWblR5MExvTEZHVWxadVJ6ZGRWbVMyVVBXeXA3c0d5Sit2WWNEbHpJWjM5VEFZbUloc3Z0eGxLelVYVWZraXlFdWtBZ0JKYmdlckxnYzZwWVJob3JFME8xd2lSU0ZxVTVDWFlzNjJUVGt0NFpjMWgrSTdZamNiUWxsMThjcmVSY1Z4RE5FOENWa3lPMmVCYkNnT3p5Z2N1SGFxYloyeHprcGRQRkxDdU04S2IxVGF5ZmdWaG9sMUJraDdWbC9hd3Q2K2RETjUrbXBkL1BvUXQ1MUowdm9xM1hpOWV0WUNwWktMb2ZSVnZ3L2N3dGVxSkFDQ3pCWEdQQmpieU9iV0ZtRXNobUJDT2RRSlpzTnBUMXNhR2loL1ZsL2RNZVZYMDB1aUllbnEwdjQ0WFRKVmlPQnE0UTNyeWc4SzlhZ01pcUN6MVFoT2JMcHlrVzRXdlBaYU5JQm5lc2JPZk9sYTNUSHJqMGpaU0hZcFNIWXJ4bFV4T1JwTTdSMWhCSG12TTUwcHFMNGNob0xpKzJHa1RWdlF1eC93bUJKUkFDU3pEbnlKMzNnc3B4c0RJSkhET0diRVpKcGh6S2MrTnNXZHJOK3ZJK3F2S2kwKzZFUEJvWlUySGYrWHllT0Y1SmE3OFh6ZTFIOFdYakVnbVlGd1dTck9DNnVIMW9aWkk4ZXphTEo0NlZVeFpLY1AvYUpyWlg5YUNyTXh2R0tlakpjTXZ5VG01WjNvbmpTSnp2RFhDMEpaZjlGd3BvN2ZIaGNVdllhZ0JKOWFQb25vWGc5NWNyZXA1QUNDekJYR1BlUldGM0hBZkxTT0lZY1JRclNpSnBrUmRJczNGSkQydEsrMWxWUERDanAvNkdMNVBFbWM0c1hqaFRTbDFEQVlxbWdSN0NteDhRVHV1TEdFWDNvT2dldElCTlZ6TEt0L1lHK2MrWERYWlVkM1A3aWpaV0ZJVm5YUHhMa2tOMWZvVHEvQWh2MjN5ZVpFYmxWR2MySjlwQ0hHN09wN2ZiaGRlallDa0JKTTJIb25ubVl6NVVJYkFFMC9PK2lCZ2NDN3lCWnpjT1ZoTkRnVVhucnFDeUxTd2poV05lRWxRMk9mNE02MHI3V0YweUpLaXl2Sm5yVXJaejNVRmVQVmZNcStlS01HMFZTYzlDOHdTRmI1VmdSR3d6alpHTTRHVENxTExKVGNzNnVXbFp4NHpHMVJxTmNFS252aU9IayswaGpyWGwwaC9UOFhwa2JDV0FwUHBRTlBkODJGSnNxcXZkVlRXYml6eUJFRmdDSWJCR0UxYzZRL0ZqNXBTSnhUTFNXRVlLeFk1aUcwbFNHU2pPVHJLcXVKL1ZKUVBVRkEzT3FoL1ZOU041YjRBOURVVzhlcTZZUkVaRmRtV2h1Z0lvWWd0UU1ORytua2xpcGlQWTZRaGUzZVNtWlIzY3VMU1R5cnpvZFN0VE9LbHpwak9iayswNTFIZUU2QmowNE5aQjFqeFljZ0JGYzZOb09uTXNKSVFOZU9wcWQ4M0t3Q0RtNElXTDJDSVVUQmRMcjdlNGNpeHpLR215a1VCeFlpUlRKaTdWWWtWQmhKWEYvU3d2Q0ZPVkg1MXhuNVhSQjFPSmh1NGdleHFLcUR0ZlNDS3Rvcm9DeUs0Z25xQlg5Q0xCcExtMGhVaWdFQ09kNExsek9UeDFvaHl2eTJSSFZSYzNMdTFrYVVGa1ZuMElzendadGxWMXM2MnFHeGp5S1R6ZkUrQnNkeGFuT2tLYzZ3NFNOeFE4YmdWTERpQnBYbVRWZGIzVCtjZ01wZnM2SlhxVlFBZ3N3VnhndzZ3dU1TMER5MGlEbFVDMTQ2VFRKcGJ0VUpTZFltVkZQeXNLQjFsYUdLRWdjUDJETXB1MnpLbU9iT29hQzNudGZNSEY3YjhnaXR1UFY0Z3F3VXdNN0M0dnVMem9GR0ZtRXJ6WUZPS0ZNMldvc3NtMnFtNTJWSGV4c25od3h2SmZqb1N1V3RRVUQxSlRQTWpER3k0QTBCMzEwTkFWNUV4WE5xYzZRM1QydVZGa0NaZEx4WlI4b0hwUVZOZHNKNnhlSndTV1FBZ3N3VnhoeTB3ODFMRk1MQ3VEYldSUW5BU1NuU1NWdHBFbG03S2NCTXZMQmxpU0Y2VXlMMHB4Vm1KV2dudU9oMWhLRzBwSjBsaE1mVnMyc3FJTVJjajJCM0JyNGhTNFlCWUhlZDJMcW51QlFpd2p4ZDZXWFBZMmxtSmJGcXRLQjdteHVvTU41WDM0M2NaMUtWOUJJRWxCSU1tTnk3b0FzR3lKanJDWHB0NEFGM29Ebk8zS29YWEFpKzNJdUhRWkZEZVdkTkhTcGVvelplM2FDbnhmOUI2QkVGaUN1Y0QyU1lzbzI4WTIwOWlXZ1dOblVKMGsyQm5TYVJ2YmNjZ1BwS25JajFJUmlsS2FFNmM4RkNNL21KeFRYaHNPME5MbjUzQkxIbldOUmJUMWUzRzVOUncxQzFlT2I3Wlgzd0xCc0F6NVBMbUJmR3d6dzVtQk9HZjNGcEIrd2FBc2xHQjdkU2NieTNzcHo0MWR0L2RMa1IzS2N1S1U1Y1M1WlhubjVmZXJKK0tocGQ5UDI0Q1A1djRBRi9vQzlQYTVrQ1FKbHk0aktUcW01RUdTZFdSRlExWmRVNGxBZjRQb0xZS3BJcHpjRjNvRHo0S1QrNDZkdTczQUlLQk41djVNSW95VDZHUnBZWVRTN0JpRndRUUZ3U1RGMlFueUE2a1ppMTQ5VldJcGplTnRJZlpmS09SWVN3alRsbEYwSDVJV1FIVjVSUUJRd2J6QnNTM01kQUxIaUdKbDRxanlVSUx5TFV1NldGZmFmOTJzVzJOaE94TGRFUStkWVEvZEVROWRFUzl0ZzM0YXVvSkkzaUowYjlaa0g1MEJjdXBxZHlWbXZPN0ZITHhnRVJZc3dYUncyMlRGMVNVUnVLd293dTg5ZUhCT2Y4bU1xWENtSzR1akxia2NiaW1nSyt6QzdWS3gxU3pVZ0JlUDJQb1R6TmVGbUt5Z2VRTGdDUUJnR1NtT2RPVnpySzJJVk5xa01KaG1ZMFVQNjh0N1dWRVl2cTRIUmE1RWxoeUtzaExYNUd2OHU4YzMweGd0bnNxamRlQlc0QW5ST3dSQ1lBbXVKMitlNHVoT1BEMzN1cUpoeVp6cnp1SlVlemFIV2dwbzd2T2hhektPR2tEUnZQZ0x2Q0x3cDJCQjh2cFdZZ2pWdG9sa0VqelhXTUR6WjZKa0RKdUszRGdieW5wWVhUckFzb0l3bW1MUHFmSW4waXBNL2QxOHN4QllnaWxOYmNJOHVjQWJlSWEzQ0hmczNDMERyY0NrbDR0bUtrYWhkcGJQdjIzZjlSMlVNeW9OM1VGT2QrWndwRFdmbGo0dm1pcUI2a2ZXZktpNkIwa1JheExCNHNheFRNeE1FdHVJZ3huRE1CM0tRd25XbGZXeXNtaUFwUVZoZkM3enVwYnh6MzZ5blM1ak9hcmJQNVhIZEFCbGRiVzdabFE5aWpsNDRTSm1DOEZVdVgwcTR1cTZUUktPUlB1Z2w3TmRXZFIzNUhLNk01dUJ1SVpMbDNGVVA3TG14WnZydWQ3eGVBU0N1YmRvVTlTcnRoTTF5NlRiU1BMVTJTS2VybytSenRqaytBeFdGQTZ5cXFTUDVZVmhTck1Uc3hwL2E1b29ac2o5NFhuUjZnSWhzQVRYZzQ5TVdlemc0RkpuZG90aElPNmlxUzlBWTNlUUUrMTVOUGY1Y0pCUU5SZTI0a2ZSM2ZoOWJySGxKeEJNRUZsUmtaVUF1QU5BSVpwamt6SlNIT3BLY2FROWhtbWt3WEdveUl1enVyaVBwUVZoS3ZOaWhIeXBHU3VUcnRvNG1Xa1JkQjhSQWtzdzZjV0lNRTh1OEFhZXdTM0NIVHQzaHhqYUhweFNYcGRNSXN5YTBFbiszNzFIcDF3bUIrZ0tlN25RNTZleEordHlESjJNS2VQU0ZXekZoNng2VURTM0NKMGdFTXdTdHBuQk1sTFlaaExaaXBQT1dPaUtUV2xPZ2hXRkExVGxSMWlTRjZVb21Kd1dTOWRYbmxyUGlmN1ZVemxGZUlra1VGcFh1MnRncHVwR3pNRUxGMkhCRWt5RlQweFZYQUU0dGtuSVA3SFZyR1ZMOU1YY3RBNzRhQnZ3Y2I0M201WitQMzJ4b2J4bW1xNWh5ejVrMVlVYWRLT3JHbk1zMzVsQXNHaVFWZjNpZ2lZSWdJYURiV1pvVDZkcGJVd2puNHRqWkF3Y3h5RXZrS0U4RktNcWI1RFNpL0d3Y3YycENRVVJEdmxTT0wzVDRnZm1BVDRPL0oxb1JjR0VEUnhDUFMvd0JwNGhDOWJGNU03bmdaSXByMjdqYlR5MDZ0amwxQm5EY2JnNWovMU5CYlFOK3VtTnVva2tWUlFaTkYzQmtieWd1R1k2c3JOQUlKaGhiTXZBTmpQWVpnYXNOSktUd01oWVdEWUVQU2I1Z1JRbDJURzJWbmF6c2FKM3hPYzhlbVFKajlXdlEvYVZUa2V4Mm9EcW1VcitMT2JnaFl1WWlRU1Q1U1BUSWE0QUpEdDlUUnliTjdLM29ZaDl6WlZvbmlDeVI4UHYxMFFnVDRGZ2dTRXJHcktpZ2N0MytYY2FGd09oV2dadEtZT204eEVzV3g1VllCVUdFMkNscDZ0WXBSZkh1NitMRmhKTXFEK0xLaEJNbEIwN2QzdUFQNXl1NTZVejFwZ0N5Nk9iS0xvYnpSTkEwZHhDWEFrRUUwQ3pCOGx4VGxFZ25VQzMrK2RkK1NWWlFkRXV2dis2RzdjMit2WmZVVmFTakRHdHdWRC9jTWZPM1NLU3NHQkNDQXVXWURKOEJpaWZqZ2NOSlhOMktCNURZSGwxUTVqU0JZS0p2bCsyUWJiVHdMMnJ6bkg3aW5Za3llRS9YbHJMb2I0dG9NeFB2ZUE0RGo1OTlOMjZrdXc0bHVWZ1crWjB1UXlVQTc4Ri9JM29WWUx4SWl4WWdnbXhZK2Z1WXFiUmVtVVpLVXB6RW1NNnNBNjVrZ21CSlJDTUY1ZlZ3Y3JBUWY3Z2dWZTVvNmJ0OHVtOFg3MmhuaXlwZVI2clJnZDVETmRTUlhZb3lVbGlHZE1hQ3VJUGR1emNYU1I2bGtBSUxNRk04U1hBUDIxUHMyS3NLK3NkODdKNFdoTXhxZ1NDY2IxVEdiTHRlajZ3ZVErZnZ1dndOWW1hM1pwRmNXQUF4N0huNWRlVFpKbG9ldXdRSyt0S2U1SE0ySFIrZEFENHN1aGdBaUd3Qk5QT2pwMjczd1M4ZTFvZmFrUlpVenAyaUptVXFWNHlZd2tFZ2hGd1dSMnN6anJJSHozNEtoc3Jla2E4N3U1VlRlaFczL3o4a3BKRXloemJCM050V1Q5TXI4QUNlUGVPbmJzZkVqMU5JQVNXWURyRlZRajQxK2w4cG0wWkdJYkR5cUxCTWE4ZFRMaVFaZUV5S0JDOEVjZHhjREpoUEtsNmZuWFRYajUxNXhFOCt1aE80Q3VMd2dTVTNubjVmU1ZKSVp3WTIzK3NwbWdRdzdDSFFqNU1MLysyWStmdUhOSHpCRUpnQ2FhTGYyR2F3akpjd2twSDJWRFJoNnFNdlZYUkgzZUprNE1Dd1dWUlplT3l1c2lsbnRXQmZYeG84N1A0OVRTUEhsM0tLK2VLc1d4cERKSGlVSlhiajJPYjgrNjd5NHBLZjl3MTVuV2FZck9ob2c4ck0rMVdyQkpFeUFiQk9CQW1BY0dZN05pNSs1UEF1Nlo5SlpycDUrWmxIZU82dGorbW8yVnBvakVFaXg3TkhxUlFQODhqbTArem9qQjgrZmRyUy92NXl0T2IrZjZSclR4K01rYVdLMDdRblVKVGJHSVpIY05VMFZXVGQydytSWEYyZ2p0ckxuQzhwNXIwUE12Vkxpc2FmZUh4cGJtNmVWa0hKOXJ6d1J1YTdtSzhhOGZPM2MvVjFlNFNRa3N3Y2w4VlZTQVlRMXh0WXdZY095MGpCWTQ1YXJEQVM4UlNHaGxUUmxhRndCSXNUaVFyam1PbGthd2tLN0xxK2R5RCs2NFNWd0JlM2VSekQ3N0dJK3NPNE5PU0RLUUNOQXlVY2J5bm11WklHVjJKQXM0UGx2S05sellEVUprWHhTY1B6THU2a05XaDhTQ1dHbnM4MkZqUmkrU1kwMzJhOEJKZnZqZytDZ1RESWl4WWd0SEVWUkh3WThBMTdROVA5M0xueXJaeDVSZHI3QW5pZGltSVhJS0N4WVpqbVdSeG51cmNUazczTFVXWDR2emFyY2RIRm1LU3cyMHIycmx0UlR1V0xSRko2U1F6S3BMazBCOXpVL3ZxYXRMeTY2OXpWVzQvZmIwbTByenliNVJ3dXhTYWVnTkRqdXlqb01nT2Q2eHM0NFZHUDJobDAxMFFGL0NqSFR0M2I2dXIzZFVwZXF2Z21zV0FxQUxCQ09MS0N6ektVSnFJYVo4MDBza0U5NjVwR2RmMURkMUJITVVyR2tXd2VJU1ZZK08xbWxtYnZaL1AzZjh5TzI4K2hVb1NXYkxSbFBHRlYxQmtoeHh2R3BkcThhT0RLL2pXYTl0STZDdlJsQ0cvcS82NG03THNNQzU3L2ptN080cVhjOTFaNDdyMnZyVXRwQklKYkd0Ry9NM0tnRWN2anBjQ3dWVUlDNVpnT0hHbEE5OER0c3pFOCsxVUw5dXJ1d241eHBjcjdGQkxBWkxxRXcwaldCVG9WZzk1ZWhzZnVPRUU1YUhYSGJUZGFvYTBOZkZ0OG45N2FTMWRpV0pzMlkxbHBZbFpLbi8wazl1d0hZV2s1U1d0aEpodngwY2sxY2ZCNWdMZXR2bjhtTmVHZkdsMkxPM21TRWNBL0RQaWI3WUYrTjZPbmJzZm1hbUUwQUloc0FRTFExd3B3UDhDYjVvUmNXV1pwQk1SM3I2NWNWelhwd3lGbGo0ZjNqeXhRQlFzYkNRclJvNTBnVGR2UE1PMnl1NXIvdTdXMGlRdE44bU1PbVlZaGl2WmRmZGhCaFAxUkZNYWlZeEtNcVBpZHhrRTNCbFNwc29QRDliUWFhNENXWjgzZGFXNlBMVDAra2daQ201dDdKeURiOS9jU04zM0MvQjQ4cWNyZGM0YmVSUHdQenQyN241dlhlMHVTL1JtZ1JCWWdqZUtLd21vQmQ0eFU1L2hKRHU1ZVhrbmhjSGt1SzQvMnBLTHBxc2lSSU5nd2VMWUdiS2NDMnhmY29HSE41eEhsWWZmQXZUcmFicVNQcnFqSHBia1JzZjlmSzl1NGgxRmtIM203Z1A4OVM4OVJGZ3hmOFNvcktMcEtrZGJjdGxlM1QzbTlZWEJKRGN2NytSQXF4Y0NaVE5WckhjQ3FSMDdkMytvcm5hWHlPc2xFRDVZZ3N2aVNya29ydDQvVTU5aEdTbU1WSngzYkcwWTl6MHZuUzNGMGJKRkF3a1dKSmFaaHRnRkNud0RGQVRpOU1WR1BrOVNuaE1sWWJqb0RFK3ZOZGZ2TmlqUDdwOTNxWE1jTFp1WHpvN2ZSZlNkV3hzdzB2R1pPbEY0aVE4QXRSZkhVOEVpUjFpd0JPell1ZHZGa00vVlcyWndPTVNKdC9IT2JRMWtlY2JucGhCTGFSeHZ6Y0dUR3hDTkpGaVFLS29MZ3NzNW03UTVleXlKVHg1QUo0N2ZsU0xmRjJOdGFRL0xDc0xrK2xOVTVnNmluSU1UN2Zuc3FPNmExbkxjV04xRy9ZRUl0anAvRmpPYU84RHgxaHhpS2UyYWZJdkRrZVhOOE01dERmem9rSXFTWGMwTW5rcitJSkMxWStmdWQ5ZlY3a3FMWGk0RWxtRHhpcXRzNENmQTdUUDVPV2FpajVBM3hqMnJXOGQ5ejR0blN0QmNycG55bVJBSTVneVNKSVBxSTRHUEJEQm9RTXVBemNHZUJENWxFRjJLbzB0cE5EbEpkOHcvN1orL3NuZ0FyOVJQalBranNHUkZSWE81ZVBGTUNRK3R2ekN1ZSs1WjNjb0xwMHZwai9laSt2Sm5zbmh2Qlg2NVkrZnV0OWZWN2hvVVBYeHhJcllJRjdlNFdnN3NuV2x4WlJrcE12RitQblhYc1hIRnZRS3dIWW5Iamk1QmR1ZUtoaElzV3RFbGFYNFNjaG1EVWczZHJNZlVpb2lrdldUTTZSMjYzWnBGUUUvTXZ3bk1uY3RqUjVkZ08rT3pSaW15dzZmdU9rWW1NVERUVzRVQWR3QjdMNDZ6QWlHd0JJdElYTjBEMUFFMU0vazVqbTFqUmx0NTc0NnpsT1hFeDMxZlhXTUJhY3VGNmhMaEdRVHpIUWZMU0dHYkdSemJRamM3OEZwdDEvem9aZ2ZPR0xHYWJETkozTTduZU52MEx6d0NydVM4cTFuVjVTTnR1YWhyTEJqM1BXVTVjZDY3NHl4bXRCWEhubkcvc3hxZ2JzZk8zWGVMOTJEeElmWmVGcCt3a29FL0J2NXNOZ1MyRld0amJVa1A5NjRaLzlhZ1pVdDhiOThLWkcrK2FEREJQTlpWRGk2N2d6eFhOemV1YUNXYTBubTFjUW1XSS9PUkd3NlM1My9kZ25LbUs0Y2ZIMTJMcEk0OEpPdFdOd0dwblg1N0tTK2ZLMmZ6a3A3WGhaY2pJVW5PbEx5S0trSmhUa1V5eUtvK3I2cFo5dWJ6M1gwcjJGN1ZQVzRMK2IxcldqbmVsc3ZwSGgwMVdESFRSY3dCbnR5eGMvZm5nZit2cm5hWExWNk94WUd3WUMwdWNWVUtQQUY4ZmxiRVZhSUhqeHptRTNlY21OQjlMNXd1SVdhNDBkekN1VjB3VDFldTlpQ0Y4akYrL2FZWCtJTUg2N2lqcG8wM2J6alAvN3RySDVMazhJT0RLd241MCtRRlVoaTJ6TStQclNTcFZZLzRQSS9WeHUyVlIvbWpoMThqcUxUVEZjc21aUXdkVkh2c2FDVy85WjNiYVIrWW1yVzNLbThRMlpsL1B0bWFPMERjY1BQOHFZa2xuZmoxTzQvamtTTllpWjdabW1zL0R6eHhjUndXQ0lFbFdFRGk2bjNBVWVDZTJmZzhNeFhCU3ZYemV3OGVHbGNnd0V2RTB4cmYzYmNjeFZza0drMHcvM0FjdkdZVGR5MTVqVDkrMDE2V0ZVU3Urbk5SVm9LM3JhOW5JQjNpdTYrdFlEQ2g4N1hudHhCUlJuYlQ4Wm9YZU91YWc3eDFZd082YXJNMHQ1ZEJzNUFYemd6RmN5b0l4a2xMT1hSRlBWTXFlc2lYeGlYSDUyVzFLOTRpdnZ2YXNuRWxnTDZFVzdQNHZRY1BZU1g3TVZPUjJTcnFQY0RSSFR0M3YxZThMRUpnQ2VhL3NLcmFzWFAzenhpS3poNmFGWEdWU1dKRU8vbnMvWWNwenA2WTQreC92VnFEby9wUlhTSnl1MkNlYVN2Ykpzcyt6U2R2MmNOYk5qWWlTY052VjkyNHRKTUNieThIMjZyNHdoUGJHYUFHU1pLR0ZXcys4eHdmM1BZYXR5eHZ2L3pyaDljMzRGY0cyZE5ZaHVOSWxPWEVjU3RwTHZSbVQ2bjgyZDQwQ3ZNejA0dnE4b0xxNTc5ZVhUbWgrNHF6RTN6MmdjTVkwVTdNekt3NStZZUEvOXV4Yy9mUGR1emNYU1hlSENHd0JQT1g1NEEzejlhSFdVWUtNOUxDeCs4NFFVM1I0SVR1UGRFVzRrQlRBWnBmV0s4RTgwMWNXZVE0OVh6MjNyMVU1NDl0RGZuUWpjZVJKUmlRYW9iTlV1QTROa3FpZ1J1V25DZmJsN3E4SFFoUUVFd1NjdmN4YUpYeXlya2lDb0pKdkZxSzl2RFV3amZvcW8waW1mTzJEVFIvRVFlYThqbmVPckYxWkUzUklCKy80d1JtcEhVMlRoWmV5WnN2anMrQ0JZcHdjbC80L0Jmd3A3TWxyb3h3TXgrNXRaNGQ0MGhmY1NYeHRNby9QN2NXMVZjbzB1SUk1cGU0Y214eW5OUDg3djM3eGgxRXR5Z3J3WktzRG80UEZnTU9id3g2S1VrU2huc0pUemNWOFVwekRKVWttcHpCcldid2FCbVNhUW5MaGlkT0x1T0c2aTY4V3BwNHhqV2w3K0ZTTFJ4bi9tWjRrV1FGelYvSXZ6eS9scjkvNXg1OExtUGM5KzZvN3NheVpiNzVFcEJWZ2FLNVozTjhGaXhRaEFWcjRmT3Z3SXlmV3JFeVNUSVh4ZFZOeXpvbk5rRUIvL3pjZWpKa29YbUNvc1VFODRxQTJjQ243OW8vYm5GMWlYZHRQWTNIYmtPS25pYkxQb3RzRHNKbGdTTWhLeHFTNWllbEZCRlRxaGlRYXVpdzF0R1kya0tQdEI1TERqQmdsZlBEZzh2d3VWSWtEWDNSdDRYbUNaSWh5RmVmV2NkRXBlSk55enI1ME0ybnlJU2JNVE96RXJMQ3ZqZytDNFRBRXN4SDZtcDN0UUdQeitSbm1La1ltWEFMSDd2dDVJVEZGY0JqUjVad3VpdUVIaFJiZzRMNWh5bDUrUG1ScFdUTWlWbGU4d0lwU29OOTVQaHQvdXhOejdOejg3UFUrUGVUYlo5R05mdXVFRnZEaysyY0l5QjNjTEJ0Q1M0bFF6aWhqenZnNW5Ca1RBWGJtZi9XWXoxWXpObWVFRDgvTkhIM3BsdFhkUEN4MjA1aWhGc3dVN0daTHVyakY4ZG5nUkJZZ25uTU4yZnF3VmFpSHpQV3htL2RmNFFibGs0OFA5clJsbHgrY0dBcFdxQnNLRjJJUUREUFNLbGxITzdmd2wvKzRrWk9kZVJNNk40SDFqUVNONzJjYk05bDg1SWVQbjNYUWY3aUxTK3dvL2d3NWdqK1FJNXRrV1BYOHp2MzFYSG44Z2JTVGphbk9uSkltekw5c2NsdkUwWlRHcmFremZ2MmtDUVpMVkRHanc5V2NiaDU0Z0ZaYjFqYXhXL2Rkd1F6MW9hWjZKK1g0N0pBQ0N6QjdQRnpvSHRhbitnNG1MRjJOTE9UUDMzTGZ0YVdUbndndXRBWDRDdFByOGNWTEVIUlhLS1ZCUE40SkhVeklLL21QK3B1cFBhVjFSalcrSWJXVlNVRCtOUUVUOVpYQXRBWjl2TGxwelp6b0hNbDZqQitRSTV0a0MrZDVQY2ZxQ1BrUzNIdm1tYnl0QlljYnhteXF0TVZtWHlvaG9HNEM4UDJMSWptVURRWHJtQXgvL1QwZXBwNkp4NVBiMjFaUDMvNmx2MW9aaWRtdEcxTWErSWs2TDQ0TGd1RXdCTE1aK3BxZHhuQWYwL1g4MnpMd0FpZnA5alh5Zi8zU0IwVnVSTTNwWGRGUFB6dEx6YWplQXRFT2h6QkFrRWlxWlJ6b0djcmYvSG9UWnp0eWhySEhWQ2VQVWhmTXB1dlBiZUJMejEzS3czSnphU1VVbmhENkFiSlRsT3NuT1QzSHRoSHdHMWN2di9ETngvRFF4K21tay9iNE9TRDg3WVArc213Y01LanFHNC9pcStBdjMxczg2U0VaMFZ1akw5NnBJNWlmeGRHK0R5MlpVeG44Zjc3NHJnc0VBSkxzQUNZbHRNcVppcEN1djg4ZDlXYzU0OGYzay9RTS9HNE9kMVJENS8vNlhaTUxRL2RteTFhUnJDZ2NCUVBBL0pxL20zUFRlT3ladDJ5dkpXVUZlQmtlQ3R4cFJKSnZ2WjZ4ekl4d2hlb3loL2tSRnVJbG43LzVZVFBwVGx4MWhTMG9NZ21iUU9UUHlSeXVqdDMzcVhKR1F2ZG00Mmw1Zkg1bjI2ZmxNZ0tlakw4OGNQN3Vhdm1QT24rOHhpcDhKd2Fqd1Z6Zk1rMW40L2xDc2JSd0Zlc2duZnMzSDBjV0RPcFNjTzJzR0x0cUU2VVQ5NTVZbEpiZ2dBOVVROS8rZk90cEtSOGRML0lOU2hZNE8rZmxTUlhhZUFkbSt0WlU5by9iSzVBdzVMNXMwZnZJQ3d0SGRNUDBiWk1KRHVOVzQ2aWtjQ2xESVZ0VUNXRDV2NGdsWGtSZnZ2ZS9aTXE2MTgvZmlQdDV2b0YyUTZaV0ErcTJjdWZ2ZlUxQ29PVE95RjR2QzNFMTU5Ymd5SDVVZjBsU1BLa294d2RyNnZkdGU3eTJDcm00QVdMc0dBdExyNDlDV21Ga1J3azNkL0lsckltdnZDdVBaTVdWeTM5ZnY3a3g5dEpTZ1ZDWEFrV0JZN2lvZGRadzMrOGRnZC8rZk1iNlkxZDYxZWxLVForUFlXYWFNUmp0ZUE0STBkVmtSVVZTZk9SVm9xSUtkWDBzWkpXWXoxTm1TMllucXBKaDJvd2JabFl4ck5nMjBIMzUyT28rZnpKajNkTXlpY0xZRzFwUDE5NDF4NjJsbDBnMVg4ZUl6a0lURW9jZlVlOEdVSmdDUlllRTM2eEhkc21IZW5odzdlYzVHTzNuOFNqVHk3Uzg4bjJIRDcvMDIzWWVoRXVmNTVvQ2NIaVFaSXdsSHk2bkxWODlkbk53NFpTQ0xpU0JMMFcvKy8yRjZoMEhjWmx0VS9Jc1ZxM2VnbGFaMGdia3d1elVOK2VROHhhMk8rbHk1OEhya0wrOG1kYk9kcVNPNmxuZUhTVGo5MStrby9jY3BKMHBBZkhubFNJUVNHd2hNQVNMRFRxYW5jMUFBY25ORGZJQ2g2ZmgrYSt5VHZQUG5tOG5ILzQ1U1lVZndtNkwxczBoR0NSNml5WlFhdVkweDNYdmdORndUZ1pTeVBrUy9PNzk3L0dKMjk4a1dMbEtMbzE5dUZmdDlYR0xSVkgrUHhiWDhXMnJYR2ZZTHlTRjg5V1lLbFpDNzROZEY4MmFxQ1lMejIxZ1Y4Y1dUTHA1elQzQmZENFBKUEpPbkh3NGpnc0VBSkxzQUQ1OGNTWGZubThjTG9FMDU1WWQwbWJDbDk3ZGgzZjNiOENWM1lGbXRzdmFsK3dxTWtRb0dHWXBNeWwyUkhTdHB2dWk0N1l5d3ZEZlBqbVk3anRubEdmNXpXYmVOdWFnenl5K1J3dTFVS1NKSHFqRTB2ell0b3lIWkVzM0hZdkxxdHp3YmVCNWc3Z3ppN25SNGVXOGVXbk5seVY1M0c4OWZYODZSSndUY3JpOTJQeEZpd2VSQzdDeGNlUGdMK2N5QTJLNXNhUVZBNWR5R1ZiVmM4NFYzaCt2dnpVUnFKR0VIZE9pY2d2S0JBd3RPdm5VcXhyZnU5M0dXUnNuZU50SWZZMUZWUGZtVS9NekNFaEZ3N3JHTzg0RGdIckhCL2FjWWhWSlFPdnY2dkswRUdTNHV6RXVNdTByN0dRZ1V3ZTZ3dk8wQjBMMEdVdi9Jd0tpdWJHblZQRmlVNFh2Ly85QUorNTl3aFYrZEZ4M1h2b1FpNlNyRTQyWCtHUHhGdXdlQkFXckVWR1hlMnVrOERwQ2Qvb0N2RnNmZm1ZbDFtMnhBLzJMK1hQZjdxZEdDVzRzc3VGdUJJSUxxMW9wUlRGV2RmR2pkTlVHMTJSZUxaaEhTKzAza0tQczVha1VvcWtETDhHZHB1dC9NckdZeXd0dURwc2dLYlk5TVFtRnN2cTZWTlZCTlUrM245RFBSbExXelJ0SWNrS3J1eHlrbklKZi9HemJYeDMzekxNY1d5dlBsTmZqcU5QeW9mcjlNWHhWN0JZM25kUkJZdVNud0MvUDZHTzRzN2lWRWMyL1hFWElWOTYrTkdqSTV0L2UzRU40YlFmZDA3SmdvdXBJeEJNRmJlVUlOZC9iUW9jajJhaXlCWnBwWlR4WkJOTUs4VjgvOGgyZm5qRVFKRk1OTVZDbFUwR0V5NGlxZkZuUldqc0NkSWREZkRRMnROb2lvVmg2N0RJMWtPNkx3ZlY1ZVBwVXlwMWpZVjgvUFlUckN3ZUhQYmEvcmlMMHgxWmVQTW1GVy9zSitJTldGd0lDOWJpNUJlVFdlMjVQUzVlUFR2eTlzRlBEMWN4a0E3aHlsa2l4SlZBTU54Q1JVb09LN0NTaG9wcGcycjJqblBrVmtrb1pjU1VLc0x5Y25xZGxYUmFhMG1vVmVPeXdseWU4UTh2SjhzZDUvNDFGK2lMdTdFWTJ2WnliQk9YMVlYZmFzQnZOYUtZQXd0N0lsUjFYRG1WaERNaGZuNTQ1Q1RScjV3dHd1MXhUOVlxL3d2eEJpeXk5MTFVd2FMa1ZXQVF5SjdJVGJZVzRvVXpwVHk4OGNLd2YzL1QrZ3VjZmpJa2FsY2dHQUZkeWFDcjF4N3ROMHdaeTRMbDJXZHBpOGRKS0JNLzRXWW5lMERMSXVoT2ordjZhRXJqV0hNV3YvdmdZUlRab1MvbUpwR0drUHNVVmJsOTNGbHpnWXJjR0E0U0I4NFg4T09qcTRncHk2OUo0Yk9nc0JJOHZLRnB4RCsvZUtZVVd3dE54c2czZUhIY0ZTd2loQVZyRVZKWHU4c0Nmam5SK3pTWGo3NlltN2FCNFhNSHJpN3R4K2ZLWUtiaW9wSUZnbUh3cU1Pbmxrb1pDb3BrOGZDR0pqNjBiUjhCODh5b0FVZXZlYTdkam1MMElqa3BDb092djMralBjR3JtN3g1WXhPclM0WUNCMnV5elRzMkhPVFAzdndTSDdubE9GWDVVUlRaUVpWdGRpenQ1T08zSE1CanRTell0akZUY1FMdXpGV0hCcTZrYldCby9OTW1senYxbHhmSFhZRVFXSUpGd09NVHZrT1NjSGs4N0drb0hQN1B3RjByVzdIVEE2SjJCWUxoUkkyV0duN3lIZ3lpS3hteXZCbldsUGJ6Mi9mc0pZK1RZSStkNjlObGRYSjc1UW1XRjhYd0s0T1hrNitmYU0vaGxUUEZJOTZueUE2UGJHbTgvTythNGtIdVhObUtLZzh2eTZyekl4VDd1aWNrL09ZVGRucUFlMVkzai9qM1BRMkZ1RHpleVZyd0hoZTlYd2dzd2VMaE1TYVI1OEhSY25qMTNNaUQ5dTAxN1dSU0tSemJGRFVzRUZ3NWdWc0dGYUhJc0gvcmpQaFFKSXVzaThuVHN6eHAzcmY5Qks3VVdXeGpaSXV3WnZWeVUva0pIdDdRaUdFcHVPVVlJZCtRaUh2NVRBbEhXc1lmcStuUWhUd2FlMFlQS1B5bTlRM29WditDYXh2SE5zbWtVOXk2b21QRWExNDlWNEtqWlUvcThSZkhXOEVpUS9oZ0xWTHFhbmYxN3RpNSt4Q3dlVUlkUnZjeUdISFJNZWdkTnRaT2ppL05pdUl3NTZNUlhEN2hqeVVRWEVLeDR5d3JHTjY2RzAyN01VeUpMejI5allUaEltMjZ5T0FqcVFXUWxPRlBCVXJHSUc2N25lcjhRVjQ0WFVKUFBNQ0svSzdMZjI4ZDhKSHR6WXk3ZlAxeE4vKzdkemszTGV2bWtTM0RCeHRmVVJqR3AvUXh5TUpLcTVOSlJsaGRNbmhaNEw2UmprRXZnd2tkYjU1M01vOC9WRmU3cTFlOEFZc1BZY0ZhM0R3ejRUc2tDYmZIeld0TkJTTmVjdmVxRnFTTTJDWVVDSzdFSTBjb3pSN2VHaFhMdUVtN3Ftak9iS1RYV1VWVXFTYXRGQ0pyM2hGUHJObEtnRUc1aG45OTdRRytlK0llSEVubnpSc2FMNHNyVmJiSjlhWEdYYjZRTDhYZHE5dFFGWnUvZld3ektWTWQ1dlYzQ09ySkJkYzJVbWIwN2NIWG1ncHdlOXlUM1I1OFJ2UitJYkFFUW1DTkMwdk5aczhvMjRTYktub3hUUXZiVElzYUZnZ3Vva3NwY29hSklkY2JkWk8yZlJOT0hDekpDb3JtUXRGOUlHdFVaSFdTSHhnU1A5K3VXMEhJbithbVpSM2pmbDZ1UDBVNDZlSXRHOC96cm0zbitOdEhOOUhjZDIxNnE4SmdGTWRlT1A3YXRwbkd0aXpXbDQyODlmbnF1V0lzTldkV3gxbUJFRmlDK2MxTGdESFJtMVNYajQ1QkR3T0o0YmN1ZE5WbVkwVWZSaklxYWxnZ3VJaFhIMzdCY2FvalJOTFU4WnFOazM1Mk5nMTg0SWFoSU9FZFlTK3FiQk5PdUZoUkZCNzNNd29DS2FMSm9maDExZmtSZnZ2K0k5UytzdklhdjZ6VnhiMWdMUndybHBHS3NybXlGMVVaWHVBT0pGeDBEbnBRWFpQYUhqUXVqck1DSWJBRWk0bTYybDBKWU05RTc1TWtHYTlINVZqTHlENVd0NjVvQnlNc0tsa2d1SWpmTmZ4MjNmN21ZdnhLaEFkV24wRzN1aWY4WEpmWnppTWJUeEs4NkQvMEh5K3VJdVJMc2FONllvbWIzYnA1VmVManYvbkZaaXJ6b3Z6M3F5c0pKMTRQSEZ5WkY4V25EQzZjaHNrTWNzdXk5aEgvZkxRbEY2OVhSWkltTlYzdXVUak9Db1RBRWl4Q0ptVytOdFZzOWpjVmp2ajNkYVg5MkpiWUpoUUlBR3d6UTFYdXRhTEVzaVg2RWdGQzNpaDNyMnFoTXRBMHJ0QU1sMFdSM2MwdFMrclpXamtrekg1MHNKcnlVSnptdmdEM3JtbWRjRGtOZTJoS1NHUlVxdk9qMUJRT1l0a1NmLy9MVFpldnlROGswWWt2a0haSmcyT3pwblRrN2NFRFRRV1lTdmFzanE4Q0liQUVDNFBuSjNPVHF2czQyWjZEYVEvZmhWVEZabTNaQUlZSU9pb1FvQk5sUmVHMWszaDlSdzZSVElCdFM0WXNLTDkyNnpHeW5ZYnhpU3VyZ3gybHgzbjc1bk1BSEdzTjBkZ2RwS1hmejYvZmRYeFM1YnlVWmllUlVkRlZpeDFMdS9pTnU0OWhXaEsxcjZ5OGZKMVBYeGdMSnlNVlkxMVpQNG84Zk1RYTA1WTUyWjZEcXZzbSt4SFBpOTR2QkpaZzhmSWFrL0REa2xVZFdaRTQwNWsxNGpVM0xldEFNZ1pGRFkrblBxMG9raG5HdGd4UkdRc1F0eFNoUEJTNzV2ZFAxVmZoVmxPVVpNZkltREplM2VUOU80Nk5IakhkY2ZDYWpieGw5UUhldWZVc0FJMDlBWDU2YUNpSDNnTnJtOG56cHlaVlR0TWFPaVdYNTAvUkh4L0tTMWdZVEhMdm1sWU9YY2lqSXp6a2h4VHl4aGRFd0ZISkNIUHpLTnVEWnpxemtCVnBzcmxWall2anEyQ1JJdUpnTFhMcWFuY2xkK3pjZlJEWU1kRjdGYzNQOGJZUXEwZElMYkdodkplTVlhRmFKcklpdXRxd2M2VnRrV1dmNGVGMVovQzdETTcxaEdqdUR4Sk9lVW1hSHVKT0xyYmluNnovaDJDdUNDdzFpVmUvT3ZodUlxUFNIYzhoVGdIZjJITTdLaWswT1lOTE5VZ25FMWl1TklwMjlVRVN5VTZTSXpYd3NkdVBYQlpzeDFwRC9PeFFGYnBxczdhc2o2MVYzWk11cDZiWVJGTWFBYmRCSXFQUUczV1RGMGh4NThvMlhqbGJ6SCsrdElvL2ZQZ0FOVVY5SE9sUEk2bWVlZHNtdG1WaUdDYnJ5dnBHdk9aNFd3aEY4MC8ySXc3VzFlNUtpdDR2QkpaZ2NmUFNaQVNXclFZNDNKelB1N1lOdjZYaDFpeXE4bU8wSmVQbzNpeFJ5OE1Ra3M3eE93L3N2UnpnY0gzNTY0TjlQSzF4dWpPTGc4M0ZkRVVEeERKZUVrNE9wcEl0Qk5jOHc2ZGR1NlYycml1THFKVVBtcDhVVjB6aUZ1RG5tb1RDYnJPTkZia1grUEROSjlBdW5uaDc3T2dTanJXR1VHU0hMVXQ2dUh0MTY1VEt1VFEvelBtZUlPdkwrL2pVbmNmWi9mUjZQbkRUNmFFME9ka0pVb2JNdWU0c2x1YUg4VXFEcEppL0FzdE14MWxhRUJzMitmWWxEamZuWTZ1QnlTUjN2alN1Q29UQUVpeHlKcFhsWGRVOXRQVjRTV1RVYTFibmw5aFIxY0dQaitZQlFtQU5SOUNWSERGNnRNOWxzSGxKTDV1WDlGNFdYSC81NkEzWTlnQ0tBbkVuRjBzT2pCaUlVakEzY0d5TG9xeHJRNWJFTXhxV280MDVlVHRXaW16Tzg5N3R4MWw3MFJuYkJyNzY5SG9jQnpLbXdsczJOckdoWXVyQndyZFdkZlBpbVZMV2wvZVI0MHZ6dXc4ZTR0OWVYRTA4clNIakVQSW4rZUgrcGZ6T0E0ZlFwUmlwZWR3dWtobGhSL1hJY2NJU0daVzJBUy8rL0VtTHlGZEY3eGNDU3lCNGVWSURsS3pnZGN2VXQrZXdwYkpuMkdzMlZQVHgzWDBwdElBejJTaklDL3NGVk1ZZnNQRzdyNjBnSXdWNS81WjlyQzN0NTFSbkZxK2RMNkY1SUllNG5VTlNLaEJpYXdMWWxvRnNwM0hKY1ZSU0pPd2dqcFl6N1o4aldVbFdGVjByZm55NmdTSVpNSUlWeUhFY2ZGWXpOZm10L09xT2V0emFVRjlwNmd0USsvSks4dnhKK2hJZWZ2T3VZK1Q2cDBmcVZPVEdhT29OWU5rU2l1emcxVTMrM3oxSGdhRjBNZkdNeG84T1ZDUEpEajR0VFdTK3hodDFIREtwRkJzcVJ0NGVyRy9Qd2V1V3AvSk92U3plTWlHd0JJdWN1dHBkUFR0MjdqNERySmp3T0tVR09ONFdHbEZnRldjbENMZ05NcG5rWkFQMUxld1hVQjUraGpKdG1YQkN2enh4SG12TjVVVDNFaXFDSFd4ZU1sVFg2OHY2TDBlZmJ1b044SFI5SlUzOXVZU2RVaHpGTHlyM3luNXFtK2pPSUc3QytQUWtBVDFKYVU2VTZ2d0JRdDQwdGErdUlTNlZ6c2huZStWQmx1UmU2K0JlbEpYQUswZElFTHkyWDFqOTVPc3RmT2pXWTVUbHZINFM5NXN2cjZTcEo0aXEyQVE5QnI5NTkvRnBMKyt0SzlyNHY3MHIrTUJOcDY5K2x5L21IbDFWUE1EeGxsd0NyaVFkQ1FlWWZ3c25NNU1reTJ0UUVCalpSZXA0V3doYm1mVDI0Sm02MmwwOTRzMFRBa3NnQUtpYmpNQkM5WE9zTlE4NFBlSWxHeXI2Mk51U0x3VFdjTllOeVJsV1hIM2w2VTI0Vll2ZnVPc3c4YlRLZC9hdndTVW4rTWpOdzArb2xYbFJmdTNXWTJSTWhhZnJ5Nms3WDhhZ1hZYWxMTjZ0V2NkTUVKQzZDT3BSeXZNRzJWSFZRV1ZlNUJxZm0vL1p1NG9CdXdwbTZDQ0dKaVhJRzJZaUx3Z21jY3NScm9wQ2FhVUpjcDU3Vnpad3g4cld5OUxsVEdjVy8vN2lhdEttVEVsMmtvL2NlcEw4d014czBOMWUwOEczWHMzaW15K3Q0djAzbnI2bXZ0YVU5dlBDNlJLV0ZmUno2cHd4MlJOMjF4VXJFeDl6Uy9WWWF4N1M1QjNjNjhUb0poQUNTM0NKL2NBSEpucVRvcnZwNlhZUlQydjRYTU9IR0ZoZjFrdmQrU2lRTDJwNURES213aGVmM0VKYlppVlpVaXRwVStIZlhscFAzTXJtSGV2M1g0N1dQUks2YXZIUXVpWWVXSHVCWityTGVmNU1GV0dwR21SOVVkU2ZiYVVKMGs2Mk84eTJaZTNzcU9yRTd4NDU5TVdoNW53T2R5N0ZVb0l6VmlhZm5oclJ4blBuaXZNOFVhOGhTUkkrUFVWMVFTOXYyOVJ3MmFmUnRtVysvdnhxRGpmblVwRWI1ejA3enJLc1lPWXpKSHp3cGxQc08xL0FYLzlpQ3pkVWQzSFhxalowZGNqYVdoNkswVEhvNDlZVjdiak9SVERJbTM4TEd5dksrcktSQlZZOHJkRVRkZUV2Y0U5bFBCVUlnU1VRQUpPTTF5SkpNbDYzeE5tdUlCdEg4R2RZWFRKQU9tT2gyWmJ3RVJxRmxLSHdwYWUyMEpVdVEwNjFFSEdYc1B2cDlYUWtTMWtldXNBdHk5dkgvU3haY3JoM2RUTTNMMnZuVzNzR09EdFFTVm9wWHBnVjV6aW9WajlaU2hjYktqcTRlMlV6V2Q1cmhlamVoa0wyTkJaaG1oSy8rK0NRWmZEN0IxZVRVa3BudEhoZWJXUlJmT2ZLVm02dmFVT1doZzkwT1pEUThla0dYM2pYbm1HLzAweXl2YXFiN1ZYZFBGTmZ5dDgvdm9uOFFJcjcxMTZnTWkrS0xFRjVLSTVMbW44Q3k3RXQwbW1MVlNPRWx3RTQyeFhFNjVhbWNscFh4TDhTQ0lFbHVNeGhoZzZJVDFnQk9ZcVBNMTNaSXdvc244dWdNQ3RGT0pORWN3dmZvT0ZJWkZTKytPUldCako1YkMydXB5STN3bytPWjlFY0xxUTAyTVhIYmowMnVjbGROL25rN1VmWmY3NkxIeHhlUTFSWnVtQkNQRGlPamNmdUpGZnY1b0dORFd3czc3dG15N1VuNnVaLzk5VFFGZkhRRzNWUkZrcnd5VHRPQVBCL2Rhc0lTOVV6NmtGa1d5WWwyZEV4eGZCSTVQcFRmT2lXMDllMW51OWUxY2JkcTlyb2licjUvbXZMR0V5NkdJenJ1RlFMcjVZaU5zL2lqWnFaSk1YWnFSRlBQZ09jNmNyR1VTWWR2ZDI2T0o0S2hNQVNDQzRISEQwSnJKdndSS2Y2T2RHV0M5dEdUdkd4b2J5WDV4c0xRQWlzcXdkN1N5YWEwdmpIcDdZUk0vdzh2UG9JZDYxc3VTaU9EQklaalp1WHRZK1l5bU84YkszcW9qdzN3dGVleTlEdjFJQThqMTk5eDhGdGQxRG82ZVJYTmcvRmFIb2prWlRPdno2L21zR0VqbVhMNVBwVGZPTDJFMVRtRDRtZHdZUk9RMzhSa2pLelc2ZVNuUjQyQitGa3laZ3laN3V5UjgyZE4xUGtCMUo4NnE3ajJNQlBEMVl5bU5EeDYwbTY1MW1zQnR1SXMzSFo2UDdueDl0eWNkUkpqMVVuUllCUmdSQllnamV5ZnpJQ1M5RThOUGY1TUcwWlZSNStPYnUydEk4WHpzU0FRbEhMVjVETXFQempVOXRJR1JxZnVMbU9aWVd2KzlkY1N1QTdYUlFHay96dS9YVjg2V21iTG5NVjBqaWN1bVVyU1piY2hLN1laQ3dWdzlhdzBUSHdrTFk5SUtsSWlqcHJWakhkNmlaUGIrZmQyK3BaT295d0F2akYwVXIyTmVZalN3N1ozZ3dmdSsza05kdHJQeml3Z2lnVk0zNytUWmRUNUhpbm5yY3ZaU2c4ZnF5U1ordExlUGYyYzllMXo4ckEyemMzQVZDZUUrWmNxNEdzYVBQbW5aUE1HR3RLUmc3UFlOb3lMWDArUExtVGpuOGwvSzhFUW1BSnJ1RUE4T0VKRDdpS2lxWktOUFVFcmhJSVY3SzhNRXc2WTZQWk5wSXNvcEJmb21VZ1FHRXd3ZWNlbUIwZm00RGI0TFAzdnNiZi9WS2kxNnJCUXgrS1pHSTRMdEprWHpWUlNuYWFKWjRUN0xybjBPWEk0YVlsTTVqVUdVem9EQ1pjZEVYOGRJVDlSTk11MHFaR1BPTWlZN3RJT3dFeVV0YTBwVWlTckJnaCtRSnYzWFQ2Y3BpSzRTYkdMLzV5dzlEMXdEdTJOYkJtR0QrYlJFYWxzYTlnWEFKenlqZ09pano1UGJSRVJ1V25oNWF5cjZrWXczVDRmL2NjWm5saGVNNzAzMVhGZmJ6VUVzY21lMTY4YjQ1dGtjN1lMQ3VJakhoTlUwOEFUWldtMG5jUGlKRk5JQVNXNEkxTTJqRlQxVjAwamlLd3ZMcEpyajlEd2tpaXVueWlwaThPOWlWWk1YN3ZnZjJYVDJqTkJqNlh3Vy9kczU4dlBLbmlPRGEvZGM5K29pbU51dk1sbk9nc1pwQnFKRmtsS0RYejYzY2V1U3l1QUZURkpzK2Z1aUtaY00rd29xQzV6OC9obGtLYUI3SUpwM3pFN1R4TUpYdkN3V1lkMnlMZ05MRzE3QUp2MzN4dXhLM1NXRXJqaTA5dUpNK2ZKSnJVK2FPSEQ2Q05rQUxsOFdPVmhKM3lXWW5lbE1GTHkwQ0FxdnpvK0w4ejBOQ1Z4UzlQVk5FOEdDSnRxS3d0N3VBRE41NjhIR3gwcnJBa040cEhIaVErVHdTV1phVElENmJ4ak9KLzFkZ1RRTlZkVS9tWWZXSjBFd2lCSlhnanh5K083eE9lZTB6SlQwTjNOakJ5THJSVkpmM3NheTBVQXVzaVdaem4wM2NkbWxWeGRZa2NYNXFkTngzaHkwOXY0VmhiSG5ldmFtRnBRWVJJc3BHdlBKT2l5MXFOSkRtNHhsazJ5NVp3SEFsVnNmSHFKaXVMQjFsWlBEalVOeXlaNDIwaG5qdTloSzU0aUNqbFNPUFlVdEt0Ym9vOXJYejQ1bU5YQ0xwcjZZdTUrYWRuMXBIblQ2SXBEcDk3MDhFUnI3VWRpY050SlVpcWUxYnFXVks5UEgrbWlpMUx1dkc1UnA3VW95bU4wNTA1N0dzcW9Tc2FwRCtWalV0SlVScnM0ejFiNnk4SCtaeHJIR25KUTdKU1EvdUc4MEZnWlpLc0toL2RmNjJoT3h0VDhqTko3endIT0NGR040RVFXSUtycUt2ZGxkaXhjM2NEc0d5aTk4cWFtM005b3dlMVhGUFN6LzdtR016RHVEa3pRWUZ2Y05hUDNsL0ppc0pCN3FwcDVzY0hxN2xyVlFzU0VQUmsrTXc5Ky9uYlgrcEVuUkllTzFyRm16YzJqaWlxbnFrdloxOVRHZEdNRDh1Mjhic3krTFEwK2Y0NEc4dTdXRllReHU4MjJGalJ5OGFLWHNJSm5SOGZXczdwbm1JaVV1V3dZVHNjeXlTTEJ0NnkvaFEzVkhlTytoMWlLWTNkVDYrbkxDZUdTN1A1NEUyblJyMStmMU1CVWF0b1ZrZStibXNWZi91RVRxNDNRbUV3amtzMUNTZmN4REk2U1VNalliaElHQjZpR1M4K1BVVlFpM0JqeFJrZVdIdWVrQzg5Wi90dk5LWHgvUU0xWkF3WkpYdCt2SE95SFdOMXllZ0M2MngzRnJJMmFRSGVVRmU3S3lGR040RVFXSUxoT0RFWmdhVm9ibm9IWEtRTVpjUnRqT1dGWWRKcEE0MzVtVjVqT3JFdGs5THN5SFV2eHlOYnpySHZmQUduT25KWVZUemtyeFJ3Rzl5ejhody9yaS9teGFaVmhGTTZiOS9VY0RtUWJNWlVlUEZNQ1MrY3JXVFFMc0VqUmNqejlGR2VFK2ExamxYME9vVTA5Vm9jNkk3aGsvdnhxUWxDM2hoYktqcFpVOXJIenB0UDBCOC94MysrTWtoYllna1o1WFhCclZzOWxIa3Y4TEhiamhJWUpVQW9RTXBVK2NJdk43SzBJRXphVk1ZVVZ3RFAxRmRpcXJPc0JtU0ZBVll3a0lTemNRc3JFOE9yeE5EbERLcVV3YWVueWZOR1dWUFN6YnJTUHZJQzgrTllYc0J0OFBaTlovbmVnYlh6NUsxelNLY05hb3BHOW1GTEdRcDlzU2tGR0JYV0s0RVFXSUlST1FxOGRhSTNTWktNVzRjTHZRRnFMbTROdlpIOFFCS1hhbU1aR1JUTnRhZ3JXWkpsZXFMWGY2dFVsaHcrY2NjeG5qMVpmbGxnQWR5Mm9wM2o3YWZwaVdleHIyVVpoOXZLeVBZTVRmeEpVeWRpaEFpby9hd0wxZlBXVFdjcERDWTUxeDFrZjhmcWk5OVB3Wkd6aUpGRnpJYk9xRVA5a1RpK1k3MjQ1UmlmdXVNZ243MXZQejgvMHNkejUxYVRWb3NKT28zY3YrbzBkOVMwamF2cy8vRDRCalpWOUhLMk81dmZmZURRbU5lM0Qvcm96K1NDY3IzRXZVT1djNWI3MXA5amVjRWcrWUhrTldsbzVodDMxTFJ4OEVJUkRZbXkyVGswTUFVc0k0TmJzd2o1Umhhd0Yzb0R1SFdtY2lyMnFKaENCRUpnQ2FaOUJhWm9iczczQmtjVVdBQVZ1VEV1eEZOQ1lFa3liWkVjWWlsdDFGUXVzOEhTL0FqNnVndFh0NlhzOE9tN0RtRTdFbzNkUVY0OFYwNVRYNGdCdXhLRkpEZVVIdVdSelExWE9RdS9jcmFNbEpRN3JHMVNraVRRL01Rc0ZjVnF4Tzh5R1lpNzJIK2hCQU12cGRveGZ2MzJ3K1NNYzB2c3E4K3NZMzFaSHdlYjgvblR0NDd2Yk1iUGp5d2xJWlZjTjl1cFp2YnczbTNIV0ZmV3Y2RDY4c2R1TzhyZi9OSlBoSlZ6WEdDbHFNcU5qM3JOK2Q0Z2lqWWwvenhod1JLOHZvQVZWU0I0QThjbmU2TXArVG5YUGJvZlZrM1JBSTRwWXZBQkRGTE5sNS9lUWlKei9kYzU1YUhZOEFPRTVMQ3NNTXhIYmo3T243enBaZGFGRHFFNVVacjZjbmo1WEFuUjFPdk82ZzE5b1JGVElUbTJSY0E2eHgxbHIvTEhiOXBET0tuemhTZDNFRFVDM0ZKK2hNODl1RzlZY2ZXbEp6ZncxSWxTYlB2MW9lcXhvMHZJOG1RNDBwckgvN3ZuNkxnR3NVUkc1Y0pBM25WTjFSUlErMWk3d01RVlhOd3EzSEFLbDlVNXA4dnBtRWxXRm85ZS8rZTZzekNsS1FWRFBvNUFjQkZod1JLOGtUT0FBVXc0Y3FDc3VXanFHejFwN3RLQ01ISzk4QUcxTFJPdjNVNjdYY05mUGFaejc2b0dibDArOVlqdE00bW0ySHo4dG1Qc2FlamgwV00xL0xqK0pwNDUwNDlmanlQaEVITktobkd0YzlDc1B2TDFWajU1KytITFR0c0htZ3JJbVBEeFcrcFlXVHh5VHJqdWlJY1Q1SEs0cFFEYmxsaGQwc2Zwemh4eWZHbnVYZE15Ym92WEw0OVhFcUhzK2szdWprT0JQN3BnUFErM1ZYWHhha016WjJKNWMzYXJVTFlUVk9XTkhrT3NxUytJUEhucnVuRngvQlFJaHZxY3FBTEJsZFRWN2pLQVU1TzVWMUZkOUVaY1dQYkkwMGgxWG9SVTJnTEhXZHd2bnAzZy9wcGpiTXc5aENPcC9PajREZno1ejIvai8rcHFHRXpvYzdyc055N3Q1SThmZW9WYnlnNmpTaGw2MHFXMEcydkl5RG12QzBnemc5dHFJMTg2enZzM3ZjUWZQRlIzMVltNFcxZTA4Lys5N1pWUnhSWEFYNzFqTDdwcUUzUm4rUEN0OWVpcXpadldYeUNTMUxtaHVtdGM1YzJZTWdkYlNrSHhYTC8ydGlMc3FHcGIwSDM2STdjY0o0dUd1Vms0eHlHVnRxaktHemtlbVdWTDlFWmNLT3FrQmRhcGkrT25RQUFJQzVaZ2VPcVpSTW9jU1ZaUUZlZ01leW5OR2Q3WEljdWJ3YXRiV0daNnFyNE84eHF2RW1GRFJSLzNybWtsbmxaNTdGZ1ZSOXRMMk5PNm5xTWRTOGh4aDlsWTNzbm1pbTd5QTNOdlM5V2ptN3h2eHlsTSt3d24yM0k0MEZ6RVFNS0Q3Y2pvaWtsVjNpQTdxam9vQ0k1Yzl2RUV6WlNCVDkxMW5LTXR1ZnpMczJ0NTN3MW5hQnZ3czJPYzRncmdzV05WaEozeTYxcGZBYm1YZFdWOUM3cFBCOXdHRDZ3K3c0OVA1bUlvY3lzVWkyV204Ym1zVWNPaWRJYTlxQXBUMlVhdUYxT0hRQWdzd1ZoTTJzeXR1eFJhK3YwakNpeUFpdHc0NTJPTFcyQ3BKQzhIei9TNVRONjU5U3h2dHh0NDRWUXBMNXlyb0NXNW5PWXpLM25tYkM5dU9ZN2ZsU1RQRjJkZGFRK1ZlWkU1STdwVTJXWjllUi9yeTJkV1BLd3Y3Mk5sOFFDN24xNVBPS256OElhbWNkMFhUMnZzdTFDQkkzdXZhejBGOWRpY2k4SStFOXkyb3AyNjg4MDBwWEt1cTcvYk5RTExTRk9kR3h2MW1wWitQN3ByU21VVzI0TUNJYkFFWXpMcGJMSzI1S1Z0WVBUd0EwdnpCMmdNcHhkMUJidFZBMWx5cmhFcjI2czdlZTdNRWh6Rmd5VEptS2swaHE3U2xTeWlLZVpuZjVlTlg0MmdTM0g4ZXBxQUs4bXkvQUdxOHdjcHk0bVBtZ0prdnFPck5yL3p3R0ZlUEZNOGJvSDVyVDJyaUZoNUJPMFRaT1Jza25MSnJDV212b1JqWnFncDdWMlFiV0xhTWpJZ1g1RnY4Y00zSCtNZm5zNGl4dEk1VTA3SFRMT3NZSERVYTlvR2ZOaVNkeXArTStjUUNJVEFFc3lZd0pJOW5POGQvU1JoUlc0TStjemlkblIzcTllNmFpUXlLdi93NURZR3BKV1hSVURJbCtSekQreWhmY0JMYzMrQXM5MjU5TWE4dEllekdIQ1c0azEyY2JvcmoyVEt3cXViYkN6djRjTzNuaUtlMWpqYW1rdkFuV0ZWOGNDY2RwNmZ1SldrWTF6WEhXbko0MXgvQllXdVZ2N29UWHRwNmZmenZmMHI2VXdXa1phTEo1d1hjYkw0cEU1dVhyNHcvYS8rNWhlYmlhVlUvdTZkZXkvL0xzK2ZZbU5KQzYrMEYrRW9jeU10bHV3a1Jqd3BlNG56dlZuWThwVDg5SVRBRWdpQkpSaVRTWnU2RlZXbnBYLzBZODZsT1hGTXc1ajRNY1VGaEs1Y0xiQXlwc0lYbjl4S3I3MXE2Q1NlRVFFdFNOSndvVWdPRmJreEtuSmozTEs4Zy8vZHU1SzJaRFdPQTZ2eXovUCtHMDVkbGMvd1RHYzIvN2xuRTJHbkZFMUs0NmVkMWNVOXZIZjd1YXNzRFF1WmdZU0w3eDVZZ3lvbCtkaXRSNUFsaHlXNVVYNzMvdGM0MXgza0J3ZFcwcE11SWkwWHpialFDbWhoQ2dJTEx6VEpEL1l2UlZjc05wUmZtNUhnVjdhYzVVUkhBUU9zbmhObE5RMkRzcHl4dHdnVjE1UU9tSWd0UXNIVndsNVVnZUNOMU5YdTZnRW1sY2RGVmwwTXhEVU1hK1N1VlpJZHg3U0dZaU10V3E2WTAwMWI1b3RQYnFITFhBV3lUSTV6R3I4ODVOTms0S0VuOXJxdjJzdG5TempVdVJ4VHlVSldWUG9UM3F2RTFVRENSZTJlalVUVkZjaXFGeSs5M0x2NkFzc0x3dnpGejdkd29DbC93VmR0eGxUNHAyYzNrN1FDdkhsdFBVVlpWMXRMbHhWRStOUWRoOWxZY0JwejhDeVdNWU9wYWF3a204bzdGbHdkTi9VRXVOQVhRRlVjSHRsNmJhNUtUYkY1MjhiVDZGYjNkUytyWTF0WUZ0ZjBnNnY3ak14QVhFT2UvQW5DeU1WeFV5QzRqTEJnQ1ViaUhMQjV3cnBCbHRIVm9maEZJem02SzdKRHJqOUR3a3lqNnQ3Rldic1hkK3hzUitJclQyMmlMYk1LWkkxcyt6U2Z1ZnMxdnZUc1RRQWtyQ3hhKy93VUJKSTA5UWI0K2ZFMXBOU1N5NCtKcFQxWENiV3ZQYnVKc0x3TUNiQnRrMjFMV3JpanBoVUFyOHZndi9adXByNmpqZmZ1T0xXZ3RnMnZGRmRmZkhJcmZha0NicXc0eFMzTDI0R2hFMkluMmtPY2FDOWdJT2tqWWZxSU95R1ViTitNK21RRnBWYnVYdG15b09yWXRtVnFYMTNKcjkxMmt2L1pVNE5iSGQ3dmI4dVNicDQ4MFU2Ym1UOXIyN0hEYWx3elRTaVFHYlcvZDBjOTZPclErRFdGOFZJZ0VBSkxNQzRhSnlPd0FIUmRwbXNVZ1FWUUZvcHpxajhEaTFSZ1pTd1ZCL2phc3h1NGtGd0ZpaHUvZVpaZnYyTS9lWUVVTHRVQWU4aW43V3hQaUtXRllmN3Q1VTNFbGFxaFNjNUlJeWthU2NkRFBLM2hkUm44eTNQcjZUSlhJQ25LUmJHcjBCOS9YWUQ1WFFhTzRtVmY5MllhSDh2bTQ3Y2VHWFZWUDk4WWlMdjRwK2MyMDUvT1kydnBHZDZ6L1RSSFduTDU5eGRYSTJzK1RLMEFTWFVERWx3OExEYVQwNzVqbTFUbDlDeTRnd2RmZVhvZEQyKzRRR05QMXVXVHNDUHg3bTMxL1BNcithU1UwdXNuQ0kzTW1QNVgzUkVQdWo0bG9kMkFRUEFHeEJhaFlDUW03MDhndStnS2p5NmNxdk1HY2F6VW9xM2NwS0h6N3krdTQxeDBGYmJpdzJjMjhOR2JEbEIyVVpScTh0QzJuNnlvdFBRSCthZG5Oek1vclFBSlBGWUxjdUk4a2lTUmRMSTUzeHZndS90cWFJeXR3TGtpbUtZa3lRd21oLzV0T3hMZjNyZUtwRlNBTGZ2cE5GZXgrNW1OZktkdStZS296MzNuQy9tN0oyOWtNQlhrN21YSCtjQ05ReUdKTnBUMzhkZS9zcGRicWh2SVZacFF6VUV1bXc5bm1JRFR3aU9ienk2NHZudnpzZzUrY1dRSkV1QnpHZnp6c3lPSHpLdk9qMURrN2NSeHJwL3ZuMk9scU00ZkhQV2FyckFYNUNubFJ6MkxRQ0FFbG1DY1ROcmtiVW9lT3NZUVdDWFpjUlJuOFFxc1NDYUxFLzJyc0pRZ1pQcFJuQVJudTNNNDF4MGtiU3JvVjV3eWJCa0kwbVdzUU1Ja3h6N0p4MjU0bGVyQ0JFZ1NwdVRuTzNVcjJOOWVnM0ZGSlBWTHhETXViRWZpMzE5YVM2ZXg5SEpzb2dCdGZQcnV3elQzQi9qdXZoWHp0aDR0VytMTFQyM21XM1diY0NrR3YzbmJYdDY4NGZ6VlFzZHQ4TTZ0Wi9uek43L0UremMrVDRseUZMZlZOcU9Udm1PWlZJYzZ5ZlV2dkQ2K3ZicWJQM3ZyYTF6bzg5TTI0R05KYm9TL2VuUXJHWFA0NmVTOTIrcngyYTNYcmJ5S2s2SWtlL1FrengxaEw2WWtUaEFLcGhleFJTZ1lpZWJKM2lncE9xMERnVkd2S2N4S1lwcm00dTJBcW9lUTBvRXN0WkhXTkRKT2tNZE9GL0hrR1JPUGtpU2RzZUhpZUc5NnF2QTRYU3pQdnNDSGJqcUJXN05JSHg2cU9WbFJHVENLa2JTQ1MxTTdkanFDN0JvS2xaRXkzZnpERTF0cFN5L0RrbC9QRTVuQlJ6S2pzdlBtZXI3MHpBNEtUaVc1Y3g3NkNyVU4rR2dmOVBBckc0OXplMDNiTmJIRnJscE5TZzVicTdyWld0WE5oYjRBUHo2MG5NNVlIbEhLcHoxL1hvQUx2R3ZycVFYZGhkOS80eG5hQm56OCs0dXJXVlV5d0YvL1lndWZ2dnZZTmFLeU5DZE9pYitMcy9HeXFmZzRUUnJUTkNrSWppNTBXd2NDU01xVVRoQTJJeEFJZ1NVWUo1TmVjc3FLVG5kazlOVmdZVEJCeG5Cd09mYXNCMzZjQytTcEYvaURoL1pkL25jMHBkRSs0S09wTDR1ejNTRUdrbDRTNW5saWRnamJBcGxCaXJKaXhOTGFrTUF5WGc5eUlia0xHRXFxM0V1TzJrRkNVb2t4SkxCaVRoR1JWTVUxQWlMbEJEblRsY01EYXk4Z3l6Sy9yRi9KNnBKZUNvUHpLNXhBZVNqTzM3L3psUW5mdHlRM3ltZnVPVWgvM01VUER5N25YRjhKTWFsaVdxS1BPMWFHbXZ3T3NrZEp5N0pRS00ySjh5ZHZmWTJ2UHIyZWdrQ1NyejZ6amcvY2RJcnEvS3R6L3IxankybSs4bndSU1hsMlV4WTVqazNHY0NnTWp1NXIyQjN4SUh1bkpMQmFFUWlFd0JMTTlJcE1WalFpU1JYVGtsR1Y0YmRoM0pxRlI3ZXhMV01xeVZYbkxXN3Q2bm9KdUExcWlnZXBLUjdrZmk0QVE0Rkh6M1JtODFwVE1XM2hiSjV2V01rcjUxY1EwS1BFRFE5RGdjUmVGMVp2Mlh5V2RXVjkvTW5QNzN4OWdsRzl3enB5SzZxTFU1MjVlSFdEcEpORFdnbFIrMnFZMzM5ZzM3eXFSMG1hbWo5VnlKZm1ZN2NlcHk5Mmp2L2V1NXFXV0JscHBYaEt6OHlpaVhkdFhUd2hrV1JnMXoxSGVmUklKWW1NeXYvdFhjSGJ0elN5cHVUMVJONWxPWEh5UEwyMFpNcG05VVNoYlJsNGRIdlVORVdtSlJOSnFnU0NVNHJNSnl4WWdtSGZEWUhnR3VwcWR5V0Iva2xOZXJLTXBrTFhHRmFzdkVBYXgxeWN5ZWZqeHRpaTBxdWJiS3pvNVdPM0hlUFAzL3dTdjMzbmk2d3Z2b0JsUzFpeUY5c3ljU0lOM0Z0OWdEOTllQThiSzNwcDZmZVRkZ0xqS2tON09JdEhUNjRubytRaFNUSmR5V0xPZFFjWFpYdmsrbE44NXA2RDdOejZDdG4yU2JBblozMlNyQmpibHpUamN5MitmdjN3aGlhMlYzV2h5QTQvUHJDVU01MVhaM1I0WUUwam1qMjdDYTl0MHlBdk1IcGFycTdJeFJBTms3ZWs5MThjTHdVQ0liQUU0MmJTWm0rWEx0RVhHejJaYzBsMkhOdGFwQUlyNDhheUo3YVNMdy9GZVA4TjlmejVtMS9tRXpjOHh3ci9ZWHhlaGVjYVZ2R0ZKN2JSMUJ2Z1RGY09TVHRubEJXOWVkbTVPNlpVazFDV1hQNWJXaW5nNTBlV0wrb092NjZzano5OGNBOUx2VWZRN0lFSjM1OHROZlB3RzV6c0Z4TzMxWFJ3NThwV05NWGkyM1hMNlltK1BnYXNMK3NqS005dTRGSGJNc1owY08rTHVkRzBLVTJGWW50UUlBU1dZUFlHRGtuVzZJK1BicVVweTRuZ1dJc3o2WE1HLzVoSnNVZWpwbWlRejl4emdEKzQ3d1ZXNUxYU204amlxeS9leHFOSHFwRzFLM3hKSEFlTUtBRzdrUkwxS0hLODRmSktYWDZEWDVZa3lmVEVzMGFOd3I4WThPb21uN24zSU51S2p1QzJPc2Q5bjJiMTh2RGFzNmlMSkIzUlNOeXd0SnN0bFQzNFhDWmZmV1k5OXVYKzViQ211QXZIbkVYZk5DdE5XYzdvU1NuNjQ2NXIzZ1Voc0FSQ1lBbG1ta2tmSzdNbGZVeUJWUmhNTHRwUURVa25pOGFlckNrL0orZWlEOUVmM1A4aXkwS3R1TDF1SE1kQk5ib0pVVStOL3pVK3VQRVovdVRCNTNoazR5bGN2dEUvTSs3a1hyTzFzeGlSZ1BmdE9NMnRsY2ZSeDdHdDVUZzJlWG9iTzVaMmlsRUR1R2QxSy9tQkZFRlBtbjk1ZHUwVnY3K0FYMnFmdFhJb3BDaktTbzRwc0N5bTVBZmFJbHBjSUFTV1lOWUdEaE0zdmJFeGZMRDhLV3piWEpRVkt5bHVUblhtVGR2enNyMFpQbm5IRVhiZC9oTEZ5akhBUWNIa1hWdFBzYjI2QzY5dThyTWp5MG5MaGFNK3g1Q0NuT3JNRlQzL0ltL1oyRUMrZGdISEdyMmYrdXhXUG5qRDhRWDMvV01wamIwTmhaajJ4S2VLRDkxOGlyU2gwam5vNVZ6M2tHZ1ArZEprNmVGWks3OXRtZVQ2UmwvRTljWThXSklRV0FJaHNBU3p5eFJDTmFoMFIwWVBOaHJ5cDhrWXpxS3NXRW1TNkV1TWY0dnd1Vk9sbkd3UGpYbGRXVTZjUDNyVFh1NWZmcGlFNmVVZm43bUo1MCtYMGpyZ295ZVZOK1lKTGxsUmFROHZUa2YzZ2JpTDQyMGhmblJ3R1Y5K2VqTi8vZmhOL01uUDdtVEFLQUJHRmxpT25XRnBUdHVZNlZqbUk3cHE4NHVqMWZ6ZTkyL2xtZnJ5Q2ZzTi92WjlSekFzbWYvZDgzb3cyM1dsWGRpejVCcVFNUnhDL3RFL3F6dmlGVnVFZ2hsQmhHa1FqTWFrYmZteXJOSVhIOTNKUGN1VHhyR0hzdDFQUi95aGVXY2R5SGhKbXdvdTFScnpXc05TK1BwTDI3aHRhU08vc3ZYc3FEbjBKT0RCZFUxc1dkTEYxMS9jeU05UGJNUTZHTVB3bGc1L24rTmdXd2F5T3VTN2xUWVgzN0RRSDNmeDk0OXZJWkwyNGJpTFVYVFA2NVVwalo2ek1NdHA0bGQzMUMvSWV0RlZpejkrOHo2Kzh2Um1mbnhzQXkrY1hjSjlxeHE0ZVZubnVFSmt1SFdUUjdZMDh2WG5WOU0yNEtNMEo4NU5TenQ0Nlh3WENTcG10T3lPYmVIWVErUE1hUFRGM2NqYWxQcDhPd0xCY1BPZ3FBTEJLRXphb1VSU1ZDS0owZVBLS0xLRDEyVXQybTNDaEpQRHVhN3hXWXZPZGVkZ3VjdDVxWFVMWC9qbE51THBzV1AyRkFTVC9PRkRkZFRrTlNPNWN5NUgwWFpzQzlrTTQ3Zk9VeWdmSjJRZlJYY0dyeEpvbzA1Y2pqUmhTOFpjSitSTDg3ZnZlSlUvZWRNcjNGanlHcm5PU1hTcmU4eDBPcklWNGFhcUp2enVoWHNhMXFWYS9PNzkrM243MmlQWWpzeDNEMi9qODQvZXhMN3poZVBLNnJpOXVwdWxCVkYrY21nb1VYbXVQNFZmamM1NHVXM2J4T3V5VU9UUlN4bEphRk9ONUM4Yzd3VERJaXhZZ3RIb25iUnlsMVVNU3lLUlVmSHFJd3VvTEsvQm9HWENJZ3cyYXNwWkhHb3BZazNwNitFQU9zSmVuamhlUlY5aWFIdFZrV3hTcGtwZnBoaEpWckRJNGtKcVBYL3pTemVmdVBYUW1OdFNxbXp6OGR1TzhkaXhLTTgzckNMbUZLR2x6dkdSbSt0WlhqU0lWemY1dTE5dXB6K1QvM3JiU2ZZWVlpL0kyZTVzSGxwM1ljRzFTWEYyZ2cvZVdJOERuT3ZLNGhmSGx0SVZ5eVVpbFNISmI0ejA3WkFqTi9QZ3VxWUYzMWNseWVIdTFTM2NWdFBHbzBlcWVhMjVuUC9ldjRQSGovZnkxZzFuMkZneCtsRHhxVHVQOHg4dnJiejg3engvaks2SWd6U0RRVWNkeXlUYk83cndUV1NHeGltUFBLV3BzQmVCUUFnc3dRU1pmRlJBU2NLbERmbTFqQ2F3Y3YwcCtzT0wxTkZkVm1nWmVQM0UzbzhPTG1mUGhhVWs1TEpydDB5dm1JY2tSV1hRV2NWWFgzRHpwalVudVcxRjI1aWY5ZEM2SmdvQ0NiNTNhQ09XSjQrdXFJOE5GYjAwOS9ucFRSYUFPdlFCam0yUjZ4czlyVWpyUUlDMHFTM3N0Z0dXRjRiNVRPRkJJa21kSHg5YXhxbWVZaUpPNVdWcmg4dnM0aDNiVG8xcElWbElhSXJOMnplZjQvNjFUZnp3d0hKT2RKYnl6WDAzVVhDc2gwYzJuV0oxeWZDeHczSjhhWDduZ1NPWC83MnBySk1UeHhLZyttYXNyTFpsa3BzMXVvUDdRTnlGUzJPcTBlWDdFQWlHTXpTSUtoQ01SRjN0cmd3UW1iUjZWeVVHRTJPRmFvaVBlVUpySVRPUUR2SFNtV0srK2ZJYVhtcGVUMUpkTWo1L05Fa2lybGJ6czVOYitOKzlLOGUxVmJPMXNwc1BiZCtQYkVkNStzeEt6blRtOE1ORE5TU3VTQTJqMkZIV2w0MGVETEtwYjNHRmNRaDZNbnpvcHBOODdyNlhXSnY5R2g2ckRYQlE3VUdXRm9RWFpiLzE2aVlmdUxHZXo5My9JdXNLRzRsbWZIempsWnY1cTEvY01LNXNBRXNMdy9pa2dSa3RvMk9aRkFaSER6STZtSENocWxNU1Y1R0w0NlJBSUFTV1lNTDBUTHB6eVFxeE1YeUY4djFKSkNlOWFDczNvWlR6L1JOM2NLQjNHNFl5OGJBTkthV1kxN28yc1B2cFRlTUtFTHFtdEo4UGJUK0VMTm44NTU0TmRNYnlyMG9SNHBkNldGMHllb2FrMWdFL2Z0ZmltMU95UEJsKy9ZNmpmSFRISytUWTljVGtKWHp4eVcwa01vdDNJeURibStGanR4N25EKzkva1MxbERjUXpicjc4N0kzODdlUGJhZW9kT1dWVFFTQ0pMc1ZudEd5U2t5YmZQM29NckZoYVE1N2FBWnR1QkFJaHNBU1RaUEwrQlpKQ05LV05NVUNua1RFV2RRWGJhaEJKbWJ3UG1pbG5jemErbnI5N2ZQdTRKdnUxWlgyOGE5TVJERHpFcExLclZ2d1ZPWDNvNnVnK1dQMXhOeTUxOFZvZFZ4WVA4RWNQdlVxMTd3UzlSam4vK05SV1VvYXlxUHR3bGpmREIyK3M1OC9mL0NKdlduT2FjTXJEbDU2OWlTODhzWTNXRVRJV2VQV1pGZWt5QnRuZTBSZHYwWlFHMHBUYVRtd1BDb1RBRXN6K0FHSkpHdEhrNkFMTDd6YkF0a1F0VC9sTmR0TmhydUh2ZnJtRHdZUSs1dVdibDNUejhPcWplTzJML2x1T1E5QnA1TDNieGc0M2tNb29CTjJMZTFmRXJWbjgxcjBIV1IycXB6ZFR5cGVlM2pLcFlKd0xEVjIxZVhCZEUzL3hscGVvQ25YVG5GekI3aGR1NTB0UGJhRWpmSFZjUEs4MnM1WnJ4N1lJakhHNk01clVzS1FwK1JNS2dTVVFBa3N3YVNadEFyY2NGNUhVNkpOOXdHMWcyYmFvNVdsQVVsUjZuVlY4OGFrZGRFVThZMTUvUjAwYkg3MWhMeFhhSWNyMUkzenkxdjFrZVVjWFRuMHhONUlrNFhNWmk3NitaY25oNDdjZlkzbjJPVHFUUy9qRzgrdEZKN3lJcHRqODVwMUh5SkZiU0NqbG5FdHM1a3ZQM2NidVp6YlJmYkZ2NW5oVE9EUDQ3dHVXUFdiNGpFaEt4M0ttZElKWmJCRUtSa1NjSWhTTXhhUjlzQ1JaWVNBeGVyRFJvQ2VEYVRxNFJEMVBqOGlTRmZxZGxYejVhWW5QM1BNYWhjSFJmVkJXRmcrd3NuamZ1Si9mTnVCRGttVnkvV2xSMlF5ZE52ekU3Y2Y0MjhjOW5CdXNZbTlESnpjc3dueUUzVkVQQllHcis1cXEySVM4Y2ZxVElNa3lDWlp3T2xiR0Y1OHRvREs3azRBcmhXT2J3NFMvbUI1TXl5SG9HWDNCTUpCd1R6WEljWTk0Q3dRakxzSkVGUWpHWU5JbWNFbFdpQ1JISHp6OUxnUExCaHhIMVBSMFRmcVNURVN0NFN2UGJCdVhKV3Npbk9yS3hhWFpZMGJIWGxTclZObm1VM2Njd2kySGVlbGMrYUtzZy9yMkhINTBjTm0xZGFOWTE0d0pjYVdTNCtHdEhPbW9HRE9RNjJSeEhBZkxIaHBmUmlPUzFLY3FzTVFXb1dEa3NVRlVnV0FNSnUza1BoNkJwYXMycXVKZzI5WlU4NEVKM2lDeXdzcEt2dm9jL09hZFkxdXl4c3VGdm15eVBKbEZGZnNKaGdKUzFyNjhrdTU0RUwvTFJKWWNaTmxHbFMwOG1vbGJzL0RJTVdKcGZWSDJ0NkpnZ3U4ZFdFT09OOFdkSzF2SE1UYW9KT1ZxWnVwb2dHTmJxSW96NW9HTlNGSkhVcWRVQ2hGa1ZEQWl3b0lsR0l0Slo3Q1ZaWVY0ZW16UjVORnRITnNVTlQzdElrdWlYMXJKVjUrYlBrdFdOTzNCcHk4KzY1VlhOL25vYmZXRXZFbmFFdVUwcGpaek5yYVIwd01yT2R5OW1rTWQxYVJ0TDRwa2tqWVgzNG5DZ21BU3YwL2w4ZnExSEc3SnUrN2xjV3dUano2MmRTeWVWcWNhcGlFbVJockJTQWlUZ1dER0JoQkpWa2hreGg2OGZDNlRpSEIwbnptUlJRMWZlUVorNTc0NlFyN0ppNk8yQVIvUmpJK1ZoVjJMc2k1ZHFzV3V1dy94MkxFQlhqaFhRMXhaZ3N2cFkxUHBCZTVlMVVwaE1EbXVCTWdMa1J4ZkdwVTBZWFU1Mzlsdmt1WGVSMVYrNUxxVng3RnRmSzZ4RjIzSmpJSlBDQ3pCRENFc1dJSXhGM2xUbU4yeEhUREhDSURwZHhrNElsVERESW9zbWJCU3c1ZWUza1ovZlBMSENmWTJGcE8yM1d3bzYxclU5Zm5RdWlZK2Njc2VzdTE2a2tvRmh6dVhjYlExZjlHS3EwdTQxU0dIOHBoU3piKyt2SG5hL2Y4bUpyREdEdEZnV2pLMncxVFQ1TVRGQ0NNUUFrc3dXUWFuTXJFRFkyNlorTjBaSEVjSXJKa1dXZjJzNG90UGJpT2NuSnlmMEttdWZMSmRZWllWUmhaOWZWYm5SL2lEQi9kUzZUNUNoaUJQbk4zSTkvYXZXTlIxNHIyMGRTeEpSSlRsL05PelcwbWtyODhtaWVOWVkyWWJ1RFF1WFpuSllEYkhSNEVRV0FMQmxGWm9takpraGg4TmoyYmlpRk9FTXkreVpKbEJlU1ZmZW1yYm1CSDIzMGh2ekUwa2swMUFqK05TaFJnRzhMa01mdWVCL2R4U2RnRFpNZGpUdW83LzJiTnEwZGFIUnpYZ1lsWk1TWklabEdwb0dFZGV3cGtSV0E0ZWJmUXR3bVJHUVp1NnU1eXdZQW1Fd0JKY253RkVWaUJwcUdPc2ZFMXdoQS9XN0lnc2hWNW5GVjk0WXR1NERpQmM0dW1UUzRpWTJhd3I2UktWZUdWOUF1L2NlcFlQYmQrTHgrbmpRTmRLZmp4TXVJTEZRRjRnZ1cxWlY3MzhTckR5K2hUR3NmSG9Zd2dzUTBVV0Frc2dCSmJnT2pJbEowNUZndlFZZWRxQzd2U01SblFXWEt0Nis1eFYvT05UNDB0VTdEZ1NKenNMeU5MNnVIVkZtNmkvWVZoYjJzL3YzZjhxZVZvN2V5NVVzN2V4YU5IVlFWRXdkczFwWUZuUnJrdFpITnNtNkI3OVFFZmFVRkNrS1grVWNISVhDSUVsbUJ4MXRidW01SEFqeWRLWVBsZ3V6VUpHYkR2TkpwS2kwbVd0NGgrZUdEdFI4YUVMZVlTdFFuSmNnMlI1TXFMeVJpRGJtK0Z6RCs1alRXRXJQenV5bktkT1ZHRFpRek40SktsenZDM0VUdzh2NVpzdnIrV2ZueHZ5MlRyWm5vUHRTQXZpKy90ZEdhUTU0a3NwWStIU1JpOUwybFNRNUtuVi9WVEhSOEhDUm9ScEVJeDNsZWFmMUVBbnkyTk80QzdWUWtMRXdacjlXVWlqMjFyRmw1NXkrT3g5KzlGSDhLMTZvcjRhR1p2N1ZqY3VtcXBKWkZUT2RHWnp2RDJmemtpQXBLR1RNalZNVzBGWERIeDZpdXJjQWQ2MTdjeFY5eW15d3p1Mm5PRXJUMjNrRi9YcmVQN2NNaVRKd1hSY3hLMGdodTE2L2RSYW44T3J6VkdDYWgvdjIzYWNsY1VEODdyT1BMcUZLaHZNQlZ1MGhEbW1yMkRLVUpEbEtka1loUFZLSUFTV1lNckVKeXV3a0dTU1kyeER1VFFMQ2JGRmVGMVFkTnFOVmZ6RGt3Ni9jOStCYTBSV1kwK1F2blFCV1dvM0d5c1dkdERxbG40L0w1MHRvN0UzUk16d0U3T3lBZkFwVVhRNWlWOVA0MUlOTk1YZ2RFYzJidlhxTUFDZFlTOC9QYnlNQzRQNWhPMVNKTVhFd3NBako4bHh4VmpoYVNVL2tDRExrOEtuRzhUVEdqODVWRTNNeWNJOWpFTjJJcU5pV2pJWlU4YTBoLzRMa0xGa0RHdG8wWkkyWkN4NzZQYzV2alJMY3FQWExjcStLdHR6NXJDS2hEMm1CU3VaVVdGcUp3aUYvNVZBQ0N6QnRBaXN5WnBKU0p1akQySWV6UUlScHVHNjRjZ3Uyak9yK01vekRyOTE3d0ZVK1hXeCs4T0ROU1RzRUxjc09jbDgyc2hxSGZBaFMxQ1NQWHJYamFZMG5qeXhoT1B0UlVTdEhCS1dseXkxajZBZW95YXJuYzBWSFZTRVl1UmNFYUQxc1dPVk5BNldjOXZ5RXdDY2JNL2gwV1BMNlUzbWtyU0NCTlZ1bHZsUGN1UFNWdGFVOUkwWWorbng0MHZBVXdCbWd2L2F1d2tIQ2RPV3NSMEoyNUZ4a0hFY0J4a2JIQXNKc0d4d2tKQmtTQnNheUNxRzQ4YkNoVWRMVStocTVROGUybmRkNnR5MFpTUkpZazVJTE1jYUdsZEdZV2hjRWdKTElBU1c0UG9TbmZRNGh6S21ENVpiTTJjczZhdGduQ2h1V2xJcitZZGZTbno2N29QNFhDWjFqWVYwSlV0d3l6SFdsTXdQNjlXUmxqeCtjbmdGVVNzUDJ6SzRaOFVwSGxwMy9wcnJXdnI5L1BqUUNqcWlJY0pXSGxsS0wvbnVMbTZvYW1OYlZkZlF5ZFpoQ0NkMVhtNm94aVBINkl1NytmeWpOeE0yOHBDeHlISDE4dkN5bzl5MHRBTlZHYjAvTjNSbjhkeTVsV1NVZk5DaHgzWndyQ1IrdVJldkVzT25weWtLUmxsUjBFZXVQMFhJbjhhdFdwZFB4bVZNbVl5cEVFdHI5RWJkSEd2TDQ1V0dDdExxOWN1RmFKZ3l0ak0zMGdRNWpqMnNWZkJLVW9hS2d6S1ZoVU5VREJ3Q0liQUUxdzFiVXNZOFJlalNMQkVIYXk2MGxleWx4VmpMM3p6aEpkc2RwenVSUjBvcHdqRVRuTzNPWVhsaGVNNld2YkVud0hkZVcwMWZNb1JiVFZQc2JhY3Juc1BCNXBLckJGWlRiNER2SFZoRlR6SWZ3M2FSclhYelFPVSs3bG5kUEtLb3VwSnY3VmxEbUNyYzlQR3pVemZobFFlcENMVHlLNXRQVXg0YW4wdE9OS1h4bjY5dUlDNlZvMXU5K0tRKzhud1JObGQwc3JhMGIxenBqSFRWUmxkdC9HNkRrQy9Ganc3Vm9IcUMzRlZUUDZQMWJGb3lUNThzNDRGMXpkZjhyVGZtd1VKakxrZ3N4M2JHM0NMTW1ESzJwSWlUWGdJaHNBVFhsZVJNUGx4WGJJUyttaHRJc3NZZ05ReW00ZEpNS2FsZVhtbFl3dDJyV3VaY2tOR3VpSWYvM2J1YTdsZ1FqNWJtYmV1T3NLTzZFMTIxK2R4UDdpRmpENFVKNkFoNytiKzYxWFRFQzdGUnlYVjE4YWExNTloUTBUdHVDOGJKOWhBWEltVWd5eWgybXVWWkYzajN0bE1VQnNmL2V0aU94RDg4c1ptVXFiQTZkejkzMWx4Z1pmRWc4aVRUN0RqQVB6KzNrUzVyR1g2ekVjY1oyc0pNWkRUaWFSM0Rra2xkWVVGV1pBZXZadUxSRFVxeVl1UUhFdVQ2VStUNlUrT3FCMVd4K2VuaGF2eHVrMXVXdDEvMXQ3YkI0SFVMeXpCY3ZlaktqRnZGRTJMRUVBaUJKWmdxYVZFRmk1c3dTL2p4d1U3ZXMvMzBuQ2hQTktYeDdicFZuTy9MSWVCTzhkR2JEdzVyWVROdG1YOTljVDNuK29zeEhCKzVlanVQYkRyTjZwS0puZGl6YklsdjcxdU43VWhVdWc3enZ1MG5LYzJadUF2T21jNHNIbHAzbmkxTGVzZmNSaHdQLzd0bkZVMko1WUJPV0Y3S3Q0OVg0OWcyc21TaHl3YUtaS0hLSmpoRHZsc1dLb2F0WWRncWppT2h5UVkrTllZbUpmSHJDWmJrREhMajBuWXE4MGJlL1ZxU24rTG54MWRUbFJlK3FnNjZvajRrV1ZsTXI0V0lXU0lRQWt0dy9iQWRkY3hJN3BlWG5JSzVpK0xoYUhzcGIwbzFqcGxFZDZMMFJ0MGNiQzVnWFdrdnhkbWpHd1ZNUytablI2clpmNkVFVmJiNHdBMUhSeFZMVWJ1UVk3MkY1Q2l0dkgzZEVXNWMyam1wTXY3aWFDVXBBejUreTB0VENxZXdzbmh3MnVydGhkT2w3R2tzSnR2ZmpkL1ZqRWZMa090TFVwd1ZKYytmeE8vT29DdERwK2tVeWNHMGgwS21KQTJWU0ZLamZUQklWOFJISk8waVliZ1pTR1hUMmxyTy92WVZCTFVCVmhkMThkQzY4L2hjVjIrZDVuZ1N0S1RYOHZVWFUvemhnM3N2KzRWRlVsN215a21JOGJnY0pESXF0aU9tUUlFUVdJTHJ5NlJuQlFkcHpPMC9qMjVoMlVKaHpYWENWUEh0ZlQxOC9MWmowL2JNcDA5VzhOU1pHdUtHbjZkT2hmbjkrMThsejU4YTl0bzlEVVU4ZG53NWhpVnorNG9tSGxqVGpEVEsxcHBsZ1ZmdVpYUDVCWDVseTdtclRrZE9CTXVXS00yTzhmZnZmSG5PbktSMEhJa2NiNHJQdjNYaytocWI3bXNFUjJOUGtQMU54WnhvRC9IYytjMzB4Yng4OG80alY0dkVvajZPOUdjWWtKZnp0ZWRTZlBiKy9YUkhQS1JzUDh3UkE1WnRNeTZmT21kcUxUb29SZ1dCRUZpQ09ZMGt6RmZ6bzUwVWxZYitFcm9qNXlnSVRzMHR6d0grZCs4cURuZFU0cEZqckM1cFlWL0hSaDQ5c3BTZE41KzQ2dHJHbmdEZjNyZUdnWFEyUmI1ZVBuYmIwWEZGbEE5b1lUNXh4L0VKK1VnTmh5STdiS25zbVZ0dElUbXNMKytiMW1kNmRaT1ZSWVBzYVNqRlVuTUlTdjNrQmE2MUtGYm5oL0ZLZzZUa1lscFRTL24rYXhGc1J5SkdvWEFZRndpRXdCSUlCSk1oSnBYelAzV3IrZTE3RDB6NkdhWXQ4OC9QcmFjdEhHSlR5WG5ldmUwTWcwbWRFejNWZEVZRGw2L0xtRExmMnJPYVU3M2xLSTdCL1N0UGN1L3E1bkYvenArKzVUWFJZQk9nTSt6bEd5OXVKR0tHS1BHMTg2RWJUNUFmdUZhY2xtVEgwYVU0S2NDVXMzbXRkVG15SFVYV05WR0pBb0VRV0lMWlcybkxSRk5qeE9hUkVLY0k1MHQ3eWdvZHNXSWFlNEpVNTA4OERWc2lvL0tWcHpjUlQ3djRqZHYzVVpFN0ZOb2d6NTlDbDVMRU1tNEF1cU1lL3ZtNVRmUmFGZVFxTFh6eXRrTmorbWNKSnM5TFowdjV4ZkdWUkpWcVhQSWdTY1BGdC9hc0pjZWJwQ3B2a0xLY0tFVlpDUUp1WStna29wb2ljbkhITmFtV1lSdnBPV1c5Y3B6WE14S05SQ1NsSTBuQzVpWVFBa3N3ZjZma01mMGN2THFKSmVLTXpodVNTZ25mZVcwVmYvaFEzWVR1Q3lkMXZ2ejBKcnk2d1I4L3ZBZjNHK0lVZWZVVTRVdzJ6NTh1NVpjbmEwaVJ6Y3FzVTN6OHRxUG9xdWdnTThYNW5nQjd6aFdSNVVuZ3RVNlJOalhpaG8rSUdhSXA1cWF1WGNPdHB2RW9jVlFwalVmTjBCUFJya3FlSld1dU9mV2RMSnZMenZlanJ1eVFSQWNRQ0lFbEVBam1pbWFXNk1tVXNyK3BnSzJWM2VPNnBTdmk0V3ZQYm1CbDBRRHZ1Mkg0VUE5WjdpU2RxU1U4ZW5JREVnNTNWeC9telJzYVJYM1BNRlg1VVg3dndhdTNmRE9tUW4vY3hVRGNSWHZZUjBOUGlNR2toM0RLUzErbUFNTVRFdjVXQW9FUVdJSnBZRW9wSWNUMjM4TERVUEw1MlpFVmJLcm9HVE81Y0hPL24yODh2NDdiYTlxNGI4M0lQbFRMOGdjNDNxL2preFA4NnZhanJDM3RGeFY5bmRCVmk2S3NCRVZaQ1ZhVkRIRDNxbFpnS0ZCcVUyK0FWeHRLT2Q4WEltb0VpVk9JcExqbTNYZWNobkVwSW5xS1FBZ3N3VlNaZlBodVNTS2VFYzZ2QzVGQnA1d25UaXpob1hWTkkxNVQzNTdEZis5ZHpjUHJ6M1BUc3ZaUm43YzBmNURncVFZK2UrK0JLWVFlRU13a3N1UlFuUis1N0gvWEYzUHo0cGxTVG5ZV0VEV0NSQ2xGa3VmSCt4N1BhRWp5bExZSXhiNjFRQWdzd2ZWRGtzYjJjN2lVMHNKeGJPRjBPbyt3bFNDdk5GWnlaMDNyc1A0dSs1c0srT0hCR3U1ZjNUaW11QUtvekl2eWwyL2JpejZPZER5bUpROXRZU1ZjOUVZOXRJY0Q5RVM5SkUyTmFFTGhzL2NmbVBhQXFJSnJ5ZlduZVB2bUJ0NU9BM3NiQ3ZudU1SOEcrZGUxVEk0OU5KNk1uZFpKK0dBSmhNQVNMUFJPZUNsbGlDUEd1L25Hb0ZQSjl3OTA4Y0VicjA0eS9PeXBjcDZzWDhhT3loYnVXTmsyb1g2UXlLZ014RjMweDExMFIzMTBoUDMwSnp5a0RZMjBwWkt4TkRLV2hvV0x0TzBtYldySWtvTkhUWk94VmZMMVRpR3VacEcrbUp2LzI3ZUtsa2dSR1RsM3pyekNZMjFkQ3dSQ1lBa0Vnam1McExnNDJWVkdmL3c4SWQvUXR0NVBEaS9sbGZQTFdSWnE1KzJiejcxdVdRQWlDZjJ5NWFrejdLYzlIQ0NXMWttYkdtbExJMjFxbU03US82Y01IU1FKdDJyZ1VnMGt4MFJUREhUWndxdWxjS3Y5K0YwWmlySmlGR2RGK2RuaHBRellwZFFVZG91R21RV2lLWTN2N2EvaGJHOHhVV2tKa3FLSTlaRkFJQVNXUUNDWXRvbFdXc0wvN08xbDE5MkgrUDcrNWV4dFhVMHFIc2JJa3ZuSHA3YVJNalV5bGtyYTFMRFFTWmthYVZORlZ3emNTZ2FYbXNHbEdMZ1VnNEFyaVZzMUNQbFNGQVZqaEh4SnNqd1pncDdNNVJoTXcvRzkvU3NZTkVzbzliWHdybTFuUktQTUlHbFQ0ZEVqbFR4Ylg0SGxMa0hSUElzdHliTkFJQVNXWU5xWWtqT25pSEcxc0pGa2haWm9NVjk5eHFZaHVveU1sSVBqeitOazJFWWpoa2NPNDFiUzVIaGkrUFEweFZseHluUEM1QWVTNUFkUytGekdPUHFReExIV1hKNC9VNEVxMi96bVhZY3YvMjF2WXhGN20xZVFwZmJ3NmJzT0lVdGlhMmdtVVNTSEc1ZDJzcUp3Z001d0ErM2hBSU5KTnlsREkybnFwRTBkVS9LUXRBSTRpdmM2aUM5bnRzWWxTL1FHZ1JCWWdxa3k2ZVBJa2lTVHpJemR6VFRGd1hFc0pCRmRaMTZTbE1zNDJlL0JyNlVKeW1jSnVoTXNDUTJ5dHFTSEpibXhjUVI5dkJiRGtqblJGdUtWaGpLYStyS0pwelZ5L1NscUNudHhIQWxKY21nYjhQR1RJMnZRcFFTZnV1UGd1Qkw4ampRbGh4TTYwWlJPTktXUnlLaUVrMjR5bG95TXczMXJtOFgyMTZWSlE3RXB5WTVUa2gxblhkbTFvVFJNVzZZMzZxWXo3T0ZFZXdGdGd3RWlHUjh4SzRRaGg1RGttWDNISGNkR1U4WVdXY21NT3RWRE5WSFJHd1JDWUFtdXQ0MWpIRUpNMU5MOHcwRTJJL2psSHJKZFVkWlZkYkd4dkdkS0tXMzY0eTcyTnhWeXVMV0lyb2lmbEtFUThpVlpYOXJGSFRVdGxJZGlsNjlOWkZTKy9zSW1URWRqNS9iWEtNb2EzK2RHa2pyMUhUbWM3TWlqSitZalpicEltUnFHN2NKMGhoem9UVWRIa2xVVTB0eFNjVVNJcTRsTUtySjlPWWJXeG9xaGhOU1dMWEd1SzR0blR5K2hOUndpNHBUaUtMNlpHM0drOGZSZTBhb0NJYkFFMTUvSnI5UmttVVJtN0MwQ1RiRnhITEdYT0Mrd1VnU2tka0x1UVc1YjA4eW1pdDV4aFZZWWZwS0RodTRnTDU4dHAza3dtOEdrSDhPU3lmTkYyVmpXY1kyb3V2SytmM2wrQXhFenhBTTFSMWxiMWpmcTU3UU4rSGpxWkNVdGc5a01wbndrRERjK0xZVlBUK1BSTWdSZENieTZnYytWd2F1Ym5PN0lvaTFaUmE3V3didTJDcCt1cWFMSURqWEZnOVFVRDVJeFpSNC9Yc1crcGpJR3FacjJJS1dPYmFPTkk3VlNNcU9BSWl4WUFpR3dCTmQ1U3AzQ1duSzhPZ3hidU03TTdVblNIQ1JMYVdkalJRZjNycjR3NlZBSWppTnhxak9MRjg0c29TMmNUU1NUaFN4WlpMdkNiQ3B0SGxGVVhjbVBEaXpuUXJpVXRZWG5lWENFUUtlV0xmSEt1UktlTzExSmQ5U0xXM2ZJOWNYWlZOckN4ckl1cWdzaXcyNHBaa3laQTgyMzRGWVNmUENHNCtLNC96U2pxemFWdVdIMm5GOENpajRqbnpIKytLRlRzbUlKSHl5QkVGaUNLUk9mdEx5U0pGTEcrQ3hZYVdIQm1wdURoRFZBdHRMR2Zlc2EyVkhkT1duQjBSUDE4Tml4S3M3MTVoRTJRcWlZQlBWQnRwU2U1YzV4aUtwTEhHOEw4VkxqVW9wOW5YejBsdVBYQ2pqZ2hWTmwvT0RBVWl4YlpsbFJsUHZYTkxDeHZPZWFCTlBEOFlNRHl4a3dpOWhTZUlMcWdyRG9BTlBNbzBlcWVLRnhKVW0xWW1ZMjZSd2JUUmw3TEVrWktwSTZwUkxFUldzS2hNQVNUSlhKUjIyVUpDeDdiRE84cnRxa1JOTENPWVZrSmNpV21yaG5WU08zcldoSG11VHB2SFBkUVg1MHFJYmVaQzVKMDB1MjNzZjZnZ2J1VzMyZWl0elloSjQxRUhmeDMzdlhFOUJqN0xyNzREVmlyelBzNVorZlcwY2lvL0dtOVUzY1VkTTJJUWY3bnFpSEkrMFY1Q2dkdlArR1U2SVRURFAvdTJjRmV5NVVZYnVMa1IxblJwd3ZIY2NlUnhUM0lRdm5GRDlmUkxNVkNJRWxtREtUOWxxV0pKbU1PZllnNXRZc3dvYXdZRTF1d1c1aVd4WVNKcnFVUXBVeUtOSlFZRTVGc3BBbEIwVzJVV1FMQ1FkSkFsV3lMN2FQZzNMeC8rTVpuYWlaVGR6Skp5QzFzYUg0QXUvYWV2YjFTUHNUcExuUHo3ZjNyYVl6V1lBRTVMbDdlZmZHQTJ4YTBqdXBVQXFtTGZQVjV6WmgyaktmdWVNZ1B0ZTF3dWwwWnpZZnVlVWtsWG1UYzQvNTFwNDFaR3dYNzk5eGNOSitaWUtSZWZlT2MyeXQ3T1pFUno3Ti9VSGFFcVVrcGVKcEZsZ09MbTNzUHBzeEpmU3BuU0pNaUJZVkNJRWxtQ3F4eWQ0NEpMREdIc1M4dWdFWkliREdGbE1XYnFjSG54ekc3MHJpMVRMaytSUGtCeExrK3BMNFhRWStsNEhQWmVKekdSUGV6bXNiOFBIQ21UTHVYTmxDY2RiazVvOWtSdVcvOXF6bWJGOHBBRXVDN1R5eTZjeUVyVlZ2NU45ZlhFdFBMTURIYnprNFl0bHVyMm1mOVBPUHR1VFNIQ2xpZWFpVmRjTTR6WnYyVVA3RFZFWWhudEV3VEJsVnNWRWtCNy9iSU51YkhsYjBDYTZZY0dUN3NyTTd3TmRmTURnMldEQzlzYkljZTJnOEdWTmd5YmltSnJCaW9rVUZRbUFKcnF2QUFrZ1p5cWorTHg3ZHZKeWtWVERzcklISGFxTTgwTTZiMTUrak1qODZJLzRycFRseDNyZmo5S1R2UDk0VzRqdjcxeEl4Y2lqMmR2TCtHMDZNMjdkcU5CNDdXc214OWtMZXN2N01tQ2NHSjRObFMvemcwQ3A4YXBRUDNuaVN4cDRnWjd0eU9Oc1RJcFp5RHdYUXRIUnNTUjhLNDJDckY2MGxJRXNPTHRWQUlZTXVwL0JxYWJJOFNUYVhkN0N1ckg5Y2dWUVhLM2VzYUtaK2J3MldISnBHZldXUHVTMTh5UzlVRWdKTElBU1c0RG96NlVDalNCS1NCT2t4QkpaWE0wV1loaEdFbFdvTmtLTzA4YXMzbm1CWjRkeDF1djdoZ2VXOGNuNFpMaVhGcjZ6YnorMDFiZFB5M01NdGVUeDJmQm5iSzl1NGYrMkZHU243ejQ5VTB4UFB3YWVHK2RzbmJ5RnBCMG1hTHZ4YUFsMks0OVBTK0YxSlBPcnJvUnd1YlNFbU1ocVJwRTdDMEVrWkd0R01oKzVrUHNlNmwrTTUyTTg3TngvbnhxVmRvaXNQUThpWHhpMG5pRE9OQXN1eDhXcWpDNnkwb1F5NVgwM05CeXNpV2xBZ0JKWmdxa3dwM291cVFOSlF5U0l6NGpYWjNwUVFXRmRPRW1ZQ3Y5eE55RFhBWFd1YjJGclZQV2ZESXRxT3hOZGZXTStwM2lVVWVicjQ5VHNPaytOTFQ4dXpML1Q1K2VZcjY2bktIZUFETjliUFNQbFRoc0tlOCtWSXJtd1V4Y0N0eGlqMU5yR211SWNWUllNVVp5VW01T0J2T3hJdm5Tbm1aeWMzNFZkU2JLOFN5YWRIUWxjdEpLYjN2WGNjaTJ4dmF0UnJrb2FLT3ZWZFNSRUhTeUFFbG1ES1RNa1VyaW9RUzQvZTFYd3VBOWxadkZzcGptT2pXUVA0NUQ1eVBERTJMK3RreTVJdXNyeVpPVjF1MjVINHl0T2JhSWdzUnpaN2NHa1dQeis2bEtxOEFVcXo0eFFHRTVQMlMrcUtlTmo5ekZaQzNpU2Z2dnZ3ak9VWWRHc1dOMWMzNDlFYTJWTFpUY2lYbXZJem56OVRDWTdFZTdiVml6aGFvdzBzYVExN21xY2gyVEh4ajdFdEcwdFBpOEFTVzRRQ0liQUVVMlpLcG5CRmtZbW50Vkd2OGJzTTVNVjQ2dGx4OE5pdGxQaTd1RzlWSXl1TEI0ZWRrQjJHVHNpOWVxNk03cGlmbEtsajJrTXpoS2FZNkxKSm5qL0crdEp1dGxWMXowckNZd2Y0eXRNYk9UdFFpYTI0UUN2amJCVE9oQzFldm1DZ2trQ3kwK0NZdUZTTHBRVmhmdVBPSStONmRuL2N4VDgrdFIxVnNmbnNmZnRuL0VUZld6WTJUdHV6SGorMmhONU1DVFU1NTFoVi9IcXV2bGhLWXlEaElwelFTWnNLU1VQRnBWcDRkWU9BMjZBNE96R3UrRTBMYW1CSjZxUnNMOU9aZ2xUR0dOUHZMWjdXVUpRcGY2Z0lraVlRQWtzd1pmcW5jck1ralVOZ3VRMXdGdG14ZU1jaGFKL21vemNmWW1uK3lCcjJwYk1sUEhxa21veFNRRVlPdlg3aTZ0S2VvVDMwMHpwZ2M3UW56T25PWTN6d3B2b1pMMzRpclhIYjhsWnVvM1ZjMTN2SGFjbnFpN241eDZlM1l6a3l2M052M2FRanhsOHZ3ZkJ5WXpWdStpZ0l4UG1uWnpjVFRidEpaRndZamd2VGNaRTBYWmkyakNRTmhSVFFaQXVYYXVDUzQzalVGQ0ZQbkp1V3RyS2h2SGZCVzc4dTlBVXg4VTV2aW5mSEdocFB4aEJZVTNSd0J4Z1FVNE5BQ0N6QmxLaXIzWlhlc1hOM0F2Qk9hcnlUVk9KamJCRUczQWEydmJnRWx0ZHU0Mk8zSEtScWhKaE44YlRHMTU3YlNHOGlCOXVLazFaemtFYzV6aTVKTXJxY3BpUjdkbll1ZkM2RExaVTkwenZoOWdiNHhrdWJTVnM2SDd0NS83Z1RPTThWdnJWbk5XRm5DVEp4bmpsZmpFOUw0SkpqZU5VVU9Wb01uNTRoeDVjazZFNmpxemFPQXdNSkQ3MHhENUcwbTJqS1EyTzRuRFA3cXdnZTdtTmxZVGR2MzNSMndZWi9PTmNUUWxhMWFYMm1iVnRqaXZKNFdzV1IxS240TlNicWFuZWxFUWlFd0JKTUEvMlRGVmkycEJKTmFXTUtMTk4wMEJkUmhmcTE4SWppcWkvbTVrdFBieU5sKzdpM3BoNi9udUYvamkwRFplUlhWclhDYkNnOHd6MnJXK1psZlJ4cXp1YzcrOWRqSS9QQkhZZFpXVHkvREFSbk9yT3BiODhoUDZ1Qm9EdkJxcUkrVmhiMVVSR0tqVHRZcXdPMDl2dDVwbjRKeDlzTGVLVjlLL3NhOC9uODIrckk4UzY4K1R5YzhzSTBIOTh3VFdkTWdSVk5hZGhvVTdHYzlTTVFDSUVsbUVhQlZUYVpHeTNIUlRqaEd2V2FiRzhhMDJJb3NKQWtMWW9LL2YvWmUrL3dOcS96N3YvellIRVBTQ0pGaXByVWxpeGJOaVZMdGx6YlNhZ01aelZwNkhSazJHMGo1ZGZFVFB0MlNIM2J2bDFwSzdWcG05aHBVaW1MR2MwUWt6ak5jaHpSMjVaRldaU3N2YW5KSlpFRUYwQmlQcjgvQU5nUWhJMEh3QVB3L2x3WEx0a1M4SXh6em4yZjc3blBPZmZ4NTFNeVlETGMzUGxPVEpuNWo0NzF1SDNGL1BaZGgxaTM4RHFuKzZxeEtBNjhGRWRSc1U3bWw1N0wyRTY3VFBQSytUazhlWFFOUmp3OHVyR0xWWFB5ci8reW1Mejg0d2YyTVNPTkhaUUsvbHhrSHArQzExUkZOZGY0NklQSEMxSmN1VHhHSmx5bG9HR09VVlFWajVlNHUxaEhIRVY0c2FUVEFZckFFa1JnQ1pxUmNuWkh4V0JreUY0Uzh6dkZaaTlHZzRyUDU4VmcxTEJaZWwwVU00UlJjYU9xUnJ5WThHSEVxNXJ3K0N5b2lnRkZNZmpYTlNrR0ZFVkI5ZmxRVlcvZ3oxc2pEOEh2R3d6R3RNVGdtSytlSHg5YXdzUHJ6dDRVd2ZpdjU5WXlPbFhLYlhVOTFGZlpVWUhxVW44U3k4bElmWXJQUzYzaERKOSs2K3Zrb3pROU8xRE5qNC9jUnBGeGlrL2UzOFg4R2ZtNU9TdlY0M2xDbVhTWmVPTFpPN25xV0lUVjFNdW5IK3lpdG5LeUlCM0syZjRxcHJCcWVrMmZ6KzlINHAxRk9Hd3ZTVGQ3L0JDQ0lBSkwwSWlVRjlzWWpDWnNjU0pZQU9YRlhqdytUOHhwc0tRYXQyK1VWZFlUdlB2MmJpcUszYmc4QmliZEp0eGVnMzhYbDh2SWhOUEMyRlFSNDFORkRFNFUwejI2Q0lON2tFMUwrcWdxY1ZKVjRrVGg1b1hHTmtjSnc0NFNodTNGMkYwV0hDNExrNTVpcHRSS3ByQmlNTVpmVTZLcUtqNWpCYTlkVzA2SjJjTjc3L0R2WXJQWml3Q0Y4bUtWbzROck9QOUNJOFdHTWNwTWsvaThubHQzVzZrcTFlcFpXdCtXbjJmbjJaMG12dkhLSFJRWm5Iem1yUWVZWGFCaUloRUdKNHA1NHRrbWh0d05XTnk5dlBQMjgwdzR6WlM3M0pSYUNtOE5WdWVsT2JpVlNrMEhCYXJQUTNseGZEdXdPWXJTSGNqZFFCQkVZQWtha1hLMlJNVmdqTHNHQy96cnNJYTlIdEJveldzWkEzemkvdU1KSjRuMCtBejg5VTluVVdPZDRvTjNuVS9xWGg2dmdTdkQ1Unk2TXB1ejEyY3k3cXBrWEswSDQ4MVRlaGJ2RFdaYStxZ3B0ek0rWldGNHNvSmZuMTdPaUtPSWo5eHppaGxsVHJhOTZ3RGpVMlplUHRmQW9hdjFqTHFxc0xrV2dzbjhabWZrbXdKRE1XWGViajd4RzRmemRncnBxeS9kenBUSHpQOXAzait0eFpXcUt1eCs0VGJHUEROd3VidzRxZWViWFhNb3RmaDNGNWFhSE15cEhHWHpxa3NzbUZrWStTMnZqVlJyZXdZaG9IbzlDZTA2SFo4eW94U25kVy9KSGl1SXdCSTBveTkxZ1dWaVlpcCtVNXRWTWNtZ1RidVJ1cUtRVkFadWs4RkhrZEVOYXZKamFwUFJSMlBOR0kwMVk4QTV4aVl0UEhkbUhvZXUxRFBtcThOdG5JbkYzVXZ6a3FNOGRQdmxtNFRaczZmbjhyUFhGekV4WldMcmc4Y3hLUDVGdXU5YWM0bDNyYm5Fc0wyWTU4L001VVJmTFdOdUszYnFNRGlITUNsVC9OYjZZNXBNVGVXQ0E5MnpPVDlZeTl0WG50SGt2TUo4UmxGVS91KzdEM0pscUp6UlNRdFRiaFA5WStWY3RWVXk3Q2pGN2k3ajhQVzVuQnBhaU5VOHlIdlduR1B0L01HOGZkOWhlekYyVDRXMjY2OEFuODlEVFZWOG9UNHhaYUs0TkszdXJ3OUJFSUVsYUVUS0l6YUQwWWpIcTJCM21tTW1BS3l2c25OeVVEdUI1ZllWTVRwcG9hb2tzV3pvRHBjSnQ5ZUlGcG1IS2t0Y3ZIL3RCZDYzOWdLdlhaek5MNDh0WVVpdDU4Q2xCbjVqV2U4Ym8yeVQwY2ZiVjEvaGJTdXY4dnpwQmdiSGkyOVpjek9qekI5Uit5RG42UnN0NWRuVDh6bC9mUmE5STBVY3VGaEgwNExyZVpjdmFXTEt6RStPcnFDNlpKS0gxbHdTNndvd2YrWkVSSk56dUV4MGRzOW0vOFY1REUzTnBPM2dmZFNkNk9XUmU0L25YU29MZ1AwWDZwaFFhN1hOZndYNHZCN3FxdXd4djJOM212RjRGUXpHdE5TZEhDNHBpTUFTTktNM2pmRTVSV1lZbWlpS0tiQm1sVTlpVkxXYjZwcFNLK2dkS1lzcHNIcHNaUnk2VXN2cC9sbU1USlV6NnB2UDByTFh0SXRNQUhjdkdtRGR3dXY4NnZnQ25qblR5RC85WWlQYjNuWGdwbWs5bzBIbGJhdmlKK3lzcjNMd2V4dE9BM0Jwc0lKblQ4OW4zL2s2Zm1OWmZnMm92L0xTR2thOTlkdy83N0FjSlpNQXBSWVBiMW5SdzF0VzlIQjVxSUlmZGkyblo2S08vM2gyRTNmT3VjTEQ2OC9tVlRrZTdhbkRZQ3JXL0xwRzFVbE5SZXdJMXRCRUVVWG1vSFdtakVTd0JCRllnbWFrdGViQWJEWXdiQzhPRzZIZnpNenlLVkMxTzN2UFRSa1hCNnRZR1NHZjBzQllDYnRlWE11WVp4WVRuaXBLVEpNVUsyTXNLanRCUzlOWnpRdlBvS2c4dE9ZU0d4djcrUHpldS9qYm4yemdYMzVyWDFvSkpCZk9HdWYzN3p1UmR3MUp4Uit0Vk5Xei9OYTZjMkpaU2JKZzVqaC8rdmFEbk82cjV2dXZyV0xmMWRXY3VUNlRQOWgwTkMrbVdzZW56SXc0S3pXZkh2UTNMbGZjc3lTSDdjV1l6V25Iem1RTmxpQUNTOUNNYStuOFdER1lHWnFJdlpPd3BtSUtyOXVqMVJwM0RFWUxsNGVxSS83YjExKytIWnQ3TmxiemRlNWJjSkxWY3dhWk4yT0NZbk5tZCtMTktIUHlkKy9mejdkZlhjbS9QdFhFMzd6dnRWdnlZQlU2Q3ZEYmQ1OFJpMHFURmZVai9NMTdYdVdIWFV0NTdXb2pqNyt3aVhWekwvS2hwbk82am1hOWZLNkJjYlUrSXlsRnZHNFBOUld4QmRiUVJCR0tJVzB2YzAxYW9CQzNENUlpRUJLaHM2MjFIMGc1dk9SUmloaXl4NTRTcUsyY3hPVWhZdTZwMUhweWhURm41SHRPdUVwb3JMekkvM3ZQUG43enpnc3NuVDJhY1hIMWh0RXBLaCsvOXlSdldYR043K3hiS28xTFNCbWpRZVhENjgreVpkTitpaFFITDE5WnkyZC9jUStYaHlwMCs4eUhydGFqWkdCNlVGVjl1RHpFelJzMk5GR01SeWxLNTFhdWdEOFVCQkZZZ21ha1BHcFRsU0w2UnNwaWZxZkk1S1cweUlmUHE5M2h2cE91eUlmdkZKczlYTGRYNC9IbXpnUWVYTkhEYjk1MVVWcVZrRGJMWm8vd2Z4OTZsUlV6empMdXJ1YnhGemF4KzhVMWpFM3E2L0NwWVhzeG82NnFqRnpiNTNWVFd1U0xtMlMwYjdRTU5UMkJKZEVyUVFTV29EbFhVbTVvUmpPOWNRUVd3TXh5Sno2UGRnSnJ5bHZNbFB2V3hSNE5WU09NdUdzNDAxK1Ywd0t0TG5WSnF4STBvZFRpNFZOdmVaM0hIbmlKdXJJaFRnNDA4Tm1uZm9QZEw2NUp5UGF5d2Q2VDg3RlRueG1CNVhFenN6eitKcG5la2JLRWtnRm53ZzhLSXJBRUlSb3BueUpzTUpvWnRzY2ZOZFpYMlZFMWpHQzVLYU4vOU0wenF1MU9FMDhlV3NLbFlTc0dkUXFMeVNlMUtoUVVDMmFPOCtmdmVJMC9iMzZKK2RWRG5MMCttNTE3NytkelQ5K1YwK2RTZ1pOOXMxR01tWW1xcVY0M2M2cnRjYjgzYkMvQ1lFcnJHYTVLS3hNU1FSYTVDOGx3T1IyQjVYSWJtSmd5VXg0ajAvS0NtYU1jNlovUzdJRW5mWlZjSHFyRW9Lajg5TWdTZXNabVl2ZFVVR2tlNHFHVngxZzZlMVJxVlNoSUdxeDJQdjNXMXhtZHRQRFQxeGV6YUZadTIvcVp2bXJHdkxNeTF1dW8zaW5tejRqOWpoTlRmajlVWkVqcklTNUw2eEpFWUFsYWN5SGxYeW9LUlJhNFBsNFNVMkExV08wWWZOb2RtYUlZTFR4NWVDa1dpeG1qd1V0TjJTZ3RTNDl5eC94QnliOGtUQXVxU2x4ODlKNVRPWCtPWDUxWWpNczRLMk1Ia2h0OGt6UllZMGV3QnNaS0tDNGlyVVBhMC9LRGdnZ3NRY2lFWXpHYlRmU09sQWFPazRrdXNGeHVyMmFwR2hTRGdhTGlJdDYxNGpqM0xlM0RaSlFwUVVISU5nNlhpWUdKYWhSajVsYWx1TnhlNXNZUldIMGpaWmhNYVhkN0lyQ0V4RVMvRklHUUxjZmlWVXJvdGNWZWJGdFRNUVdxLzhnTExWQlZId3VyKzNod1JZK0lLMEhJRWMrY21zYzREUm03dnMvckFSVm14Y21CMVR0U2lsY3BFWUVsaU1BUzlFVm5XMnN2a1BMQlp6NURDWmVHS21NM1NFVmxab1VUbjBlYkkzTlVuNC9haWttcFBFSElFU3JRZGFVQmpDVVp1NGZQNDJSbWhSTkRuTVBkTHcxVjRUT2s5UnlPZ0I4VUJCRllndVowcC9wRG84bENqeTMrZHZGRnM4YndhaVN3REVZVFp3ZXNxS29pTlNjSU9lQmt6d3hHUGJVWnZZZlg0NlJ4MWxqYzcvWFl5akNtdDROUW9sZEN3c2dhTENGWlRnTzNwU1IyVEJaR2JCYmNYZ1BtR05OMVMycEhPTktuWGRScHdMMkUvL2V6RW9wTUhveUtpdG5vd1d6MFVHcHhVMTgxUVVQMU9EUExwcWl0bk14YU5uZEJtQzc4OHZoaTNNWlpHYjJINHAxa1NhMHQ1bmZjWGdNakRqUGxaV2tKTERualNSQ0JKV1J1UUpxeUV6UVlLVExEdGVFeUZ0V01SLzNlZ3BuajRORk9ZSGtNRlV5NmlsQVVCYmZYaUUreDRGVXRPSDNGZFBXYlVBeFFhclJqeGtHUjBVbUoyVVZsMFNUTFpnK3hwSGFFdVRQczArNjhRRUhRZ3NIeFltNU16Z1JqaGlQSW5ra1d6SXg5MFBXMTRUSXNacjhmU29NVFVxdUNDQ3doVTZTMTM5dHNObk41cUNLbXdKby9jd0tuUzhXcytsQVViV2F4WjVTTTgzOGZlaFZWVlJpZk1qTStaV2JFVVVUUFNEblhiSldNVEpiZzlKaXd1NHF3VFZYVDQ1alAwU0V6WldjbktGTEdLTGRNTXJ0OG5LWUYvYXlhWThOaWtraVhJTVRqZjQ4c1lZS0dqSzVGVVZVZlRwZkt2RGdDNi9KUUJXWnoydnVUVDB1dENpS3doRXh4TXAwZmV3eGxjUStpTGJWNHFDNXo0M1E3TVZtMFdSaHJDSGg0UlZHcExIRlJXZUtpd1dwbmRjUHdMZCsxMll1NFppdmo3UFdaWEJtcVpNeFp5cWl6a2w3SEFsNi9zWXB5NHpBVmxnbVcxUXh4MzlJZTZxb2MwaW9FSVl3cHQ1RUxnelVZakpudFpyeHVKOVZsYmtvdG5yZ0N5Mk1vSjgwODhpZWxaZ1VSV0VLbU9BUDRTSFdEaExHRTg5ZXI0MzV0Y2UwWXh3YW5OQk5ZVGsvaTB3TFdNaWZXTWlkcjVyNHB2c2Fuekp6dHIrYncxVG9HeGlzWWMxYnk3S1dGZEY1YlJybHBsTVd6Qm1sZWVVWEVsaUFFZVByRUFrYVpSNmEzbDNqZFV5eVpIWCtCKy9ucjFTakc0blJ1NVVQV1lBa2lzSVJNMGRuVzZ0end5T1BuZ1dVcDZTdHpFYjNEcGZoVUplYVc2bFZ6aGpnK1lBZXMyZ2dzYnhFZW55SGx0VlFWeFc2YUZ0NmdhZUdOTndUWDRTczFkRjJwWjhoUndXczlxempTMTBpbGVZUjFDM3A1eTRxcnNtQmVtTFo0ZlFxdlhaNkxrc0hVREVFVXI1MlY5VU94bFpHcTBHc3JwV2hHVVRxM090L1oxdXFVMmhWRVlBbVo1UFZVQlpiQmFBWkZvWGVrTkdiVzVjYWFNWHh1N1JhNlQxREgvK3hmd1cvZmZZWWlEZFpQVlJTN3VYOVpML2N2NjhXbktwem9tY0d6Wnhad2ZhS2FwODdjeFV2ZGpUUlVEdlArdGVmaVpwY1doRUxqbGZOekdQUE55VW9pSUo5N011YnBFT0JQTUlxaStQMVBlbjVQRUVSZ0NSa1hXQStuK3VPaUlqTVhybGZGRkI0TFpvN2o5YXI0dk81MG5hTGZDUnZLT1hqOUxrNy9mQTRXb3hPVHdZdlo0QXVraTFBeEJ0SkdtQlFmS0NvV280OGlrNWNpczRmeUloZFZ4VTdLaTEyVUY3bXBMSEZoTFhXOXNkRGRvS2lzbVR2RW1ybER1RHdHdWk3WDh1TForVndlcWVNL241dERUY2tnNzE1emdUVnpvNCt5blI0algzOXBKYmJKTXBiVkR2UFdsVmVaVVRZbExVM0lPMVRnMlRNTDhabXFNaSt1dkc2OFh0Vy84emdHNXdlcUtDcEsyNCtJd0JKRVlBbFpFVmdwNHpHVWMvNTZGUThzajU0UTJXaFFXVERMUVo5ekVrT0pOaWNURnZ0dVVHUnhBd2E4cWdHdkY2YkNnbG5qN2txOEhpL1Z4ZVA0VkFOdW54R2Zhc1NyR3ZINFRLaXFna0h4VW1UeVlGTGNGSm5jbEpoZFdFc2NOTTRhWVZITktIY3ZHdUNleGYxY0h5dmhwMGVXY0hGb0ZsL3IzTWlNMTRkNTMrM25XRHQvOEZiUmFmTHlzWHZQOEtYbjcrQ0ZTN2R6NE5vUzZrcXY4OXQzbjJaT3RVVEFoRHh5RGxkbU1lYWREY2JNMzh2cm1tVEJMRWZjZzlzdjNLalNZb0c3Q0N4QkJKYWdiNEZsTUpWd3BpLysycW8xRFRmb09WTUhKWldhUEhTWnhjSGZ2ZWVscVA4K05GSE16bWZlaXNzOGd6c2F6dktCdTg0RE1Pa3lNVDVsWnNKcHh1NDA4YjJEYXhnenJrQ3hkMU5UN3NJMldVNi9vNWFEL2FVVUc2Y29NVTVRYnBtaXVzVE83WE51OEk3VkZ6bDZiUmI3TDg3bm13YzM4UE5qdy96TzNTZFlIRGF0VVZiazVzL2VjWkFuRDQydy8vSVNMa3pleWVlZnIrSDJ1c3Y4enQybjQzWWlncUFIZm41c0thNE1KeFlONG5NN3VIM3hqYmpmTzlObnhXQktlejJZQ0N4QkJKYVFXVHJiV3ZzMlBQTDRBREE3bGQ4YnpjVU0zQ2hteW0yTXVSQjgxUndiVDUrWTBPeTVYZDRpUEY1RDFFT2Z6L1JYWS9mT1FER1g4ZHFWZWJ4OTlTWEtpanlVV1B5ZldpYXhPODE0Q2V4RUtxNWw3ZHhYZWM4ZEY3aytWc0xWNFhMT0RNeWtmNnljRzNZcnZlN2JPRDQ4U2JsaG1HTGpCQlZGazR3Tis3QjVMSHo1eFh1WVYzV0RqOTF6QW12Wm0rdG1GZUNEZDUzbjlvWWJ0TDE2T3pabEtRZjZaOUg5aTJvZWUrdWhtNzZiMUVqZnArQndtYWdvZGtzREZqTEd5VjRySSs3YXpDY1dEZHFMWjRLVjliRXp1RSs2VEF5TUZWTmVrOVlPd29IT3R0WStxV0VocVdDQ0ZJR1FxczVLMlNrYWpKUVVLWnp0cjQ3NXZjVzFZN2c4S2o2dlI1TUhudlJWY21rd2VnNnVvejJ6SVRES0hXTWhQM2h0K1MzZnVUWmN4cFRxajZpcHhuSTZMOC9INVRGUVYrVmcvYUxyZkdUaktmN3M3YTloTnJoQVVWQU1Kc3krRVZCVkJxYnFjUlUzNHJQTXdxY3FuQjFmemIvdTNjVFBqaXk2NWF6RUpiTkgrY3QzdlVwanlSR01pb3NCMzJyKzdkY2J1VHBVbnRLN2owNWEyUG5MdStSTVJpR2pQSGw0T1U3RDdLemN5K2YxNFBLb0xLNk52Y0Q5M0VBVkpVVkt1aG5jTzZWMkJSRllndTRGRmdDbU1zN0VFVmdXazVjRk0rMTRYZHJrbG5JcTFSeStHdDM1RDluTDNzd2NiN1J3ZG5BT2d4TTNqM3E3QjZ0eDg2YklHVlVYOE9UaEpUZDlaOWhlakl2U2dKbzBVVjNtNHUvZjl5S3R2L0VzOXpVY1lLYWxENlBKaEdJcVpkeTRsR2N1YnVDenY5akl3TmpOVXhobFJSNyt6OXU3ZUhEQlFjcDgxeGcxTHVPL1gxcVgwSUhaNGN3b2MySnpsUERVOFFYU2NvV01jRzZnaW1IWGJGQ3lJK0s5TGdjTFp0cmpucXB3cHI4YVRHWHAzazRFbGlBQ1M4Z2FyNlh6WTlWVXpyRnI4ZGRwTkMwY1FIVnJNMDFvTUpvNWUzMW14SC96ZUEzWTNUY0xuSEZsQWYvVHVmSVdnV1V3aFN5Nk54WnpyTGVCOGFrMy8rN0tjQm1UUHY4T0tzVmdvSDl5RGtldnpHTEJ6SEYrYjhOcC92cWhmVlNZUi8yZGhOdUp4MWhGdis4Mi91T1pUWFNjbkhmVC9SVGcvV3U3MmJycFZheSswNHl3a0MrOTBNVFlaUExMZFRjdDdlUHBFNHR3dUdSbGdLQTlQenEwSEtkeGR0YnVwN29uYUZvNEVQZDd4NjdOUWpXVnAzdTcxNlNHQlJGWVFyWTRnSDlIZGtxWXpDVmNIUzdGNVluZEJOYzBET0YxYWJlTGJzeFZkVXRVQ3VEU1lNVWJvdWdOY1dNd2NtMjhuaXNoMDNManp1S0E3SG1UVVdVQmV3NitPWjE0ZG1BbVhxWDBqZjkzR3V2NDBlc3I4UHI4djV0eUczRUV4RnlKOXhwMXl1dFkxWE5NTW90Zm5yMmJKNTY1ODVaeVdWd2JtRElzUGNhRWJ4WmZmbUZ0MHROOTcxNXpFVVV4OHBPd2lKc2dwTXZwdm1xdVQ5Vm5MWG9GNEhYWnVYMXU3QVNqTG8rQks4T2xtTXhwTFhCWEEvNU9FRVJnQ1ptbnM2MTFsRFNPalZDTUppeG1oYk1EMVRHL3QzRFdCRWJGaDlldFRRTGxDUnA0NnRpaVcwZTVQVFU0dVRWdmo4UFF3UDkwcm43ai8rMnVXOFdaWXJCd2JyQ2VvWUJ3dTJhcnZPWDh0VkhmZkg1K3RCR0F5NE1WVEtyK2V6bk5DNWhWTWNuZnYvY0ZQcnptQlVxVkc1d2VXODIvUExYaGplc0ZLU3Z5OEtkdjcyTHprc05jSHF5ZzQ5UzhwTjY5cXRURjNPcFJqdlhXSjNWMGtDREU0MGVIVnVES1l2VEs2M1ppVkh3c2lIUEE4OW1CYW9yTUNrcDY1eUdlQ2ZnN1FSQ0JKV1NORjlQNXNXS3U0TmpWR2JHL282amNOdGVHeDZsTkZFc3htamc5TUpzcDk4MENvM3ZRaXNGa2lYQi9BNE91ZW81ZW5jbjRsQm1YTC9KUkcrUEtBcjUzWUVWVUVlWTFWdEI1YVFIalUyWk85czNDclZTODhUemR0am4walpheWFVa2ZmL25PZmN3d1hPVzY3elkrdDNkanhJT3gzM1A3UmY3OEhhK3gvMEx0RzFHeFJIbHcyV1hHWEpVOGYyYXV0RjVCRTE2L01vdEJWM2FqVng2bm5UWHpobEdVMkVIMFkxZG5vSmdyY3VybkJCRllncEFLTDZYMWEzTUZyMSt0amZ1MURZMTlHRHphRFNCSG1jOVBYMTk4ODk5TlJaOUNjQnByK2ZIaDVWd2RMcjlsR3ZFTklXWXdjbVdzanF2RDVUamNSVkh1dTRqdjdGL0Z4YUhxbTdMVDJ3M3orTTUrZjVTc3JNaERiY1VZaXNIQXVIRVpYM3J4Yms3MjNpcENGOVdNOGFmdmVKM0pKTmRUM1Q1dmlPcmljYm91ejVIV0s2U05Ddnp2a1dXNFRUWFo3Ymc4bzl5OXFEKysrTHRhQytrTHJKZWtwZ1VSV0VKZUNTeWpwWVNCMGVLYkZvaEhZczNjWVp4T0Q2cFBvOE9UalNVYzdwbi94bG9zbTZNSXB4cHJsNUhDaUc4dTMzcDFOUjVEOU1XeWRtVWVuKzlvWWtxSnZIaGZNWnE0T0RLSElYdnB6WCt2R0xqdWJPRFFaWDhuNVF1dXJWSVU3S1lsdEhXdTQvaTFXeGZubDFvOGxDZVoxOHBpOGxKaGNURG1LcjhsaWljSXliTC9RaDBqM2ptRXIwdk1xS2p6ZVhFNlBheVpPeHp6ZStOVFp2cEhpekZhMGs0d0tnSkxFSUVsWkpmT3R0Ykx3T1ZVZjY4b0JrcExqQnk5T2pQbTkwb3RIaGJXMkRXYkpnUVlVeGJ5MVpkdVIxVVZ6dmI1RTR6R3dtTzBNbUZaSGZOY1JNVmd3Rm15QXJlaE91cDNISVo1akxodkhlMjdqTFg4NVBYbGVIMEtZMkhSTklkcEVkOSs3YzZZT2J5U29iNXFETHUzaWd2WEs2VVJDeW5qOFJuNDVmR2x1STB6czN0ZnA1MkZOWFpLTGJIejR4MjlPcE95RXVPYnFWZFM0M0xBendtQ0NDd2g2N3ljbHJNMFZ0TjFPZjQwNGFZbFBlQWEwZXloRllPUmZtY2o3UWVYY3JSbk5xcXBORHVscFNnb3haRWpYQ1BxUEw2MWJ3VVRubHVGajkzWXlGZGZYcXRKaW9WbHRVTzR2VVl1RDFkSjZ4VlM1aGRIRnpLaXpzLytqVjBqYkZyYUUvZHJCeS9WNGpGVzU5Uy9DU0t3QkNFZDlxYnpZMU5ST1VldnpvaTdXSHZkb2hzNHA1emFUUk1DSG1NVm5UM0xPVE5RbmU0b1Z4Tjh4a3FPOURZd29kWkhGR1lqeWhMYTlxMU8rejcxMVE1S1RFNXVqSmRKNnhWU3d1RXkwWGxwQWFxeFBLdjNWWDFlbkZOTzFpMk1mZjZnMTZkdzdOb01URVZwUDk5ZXFXMUJCSmFRS3pyU2FvQW1Dd2FESWU2eE9kWlNKM05uT2pTZEpnUndHdWZnTUM3U1RXRzZpeGFoUkp1R05GaTROREtIdnBIMG9tMmxSUjZNaWhzNU9scElsZThmV01Fb0M3TitYNC9UenR5WkRxeWxzZE8ybk8ydnhtQXdSTndabkUzL0pvakFFb1NVNld4cjdRRk9wZFVJTFJWdkxQQ094ZjFMZTFCZDJxZWpNWmlMZFZPZWlpRzJTZHFWQm41Mk5MMUVvYVZtRHo2dm0xS3pSeHF3a0RSOUk2V2NHV3hBTVZxeWZtL1ZOY3I5Q1V3UEhycGNnOEdTOXByRlV3SC9KZ2dpc0lTY2tWNFkzVkxKcXhmcTRrWlVOalFPNEhKT2FUcE5tRzhvQmlPOW85VnBYY1BsTmVEMktOUlUyS1hsQ2tuenJWZHZZOEtRL2JWWHFzK0x5em5GaHNiWXgrT293S3NYNnNDUzlocERtUjRVUkdBSitTMndUSlpTcGp5bXVMdmFxa3BkTEs0ZHh6MDFYdmdscWthWG01TytrclFXdXp0Y0pueXF3c3l5U1dtNVFsTHN2MUJILzlTOG5LeFpkRStOczdoMm5LcFNWOHp2WGJoZXlaVEhoQ245OUF3aXNBUVJXRUxPZVJhWVN1Y0M1dUl5dWk3RjMwMzR0cFZYd1dXYkZvV3FUbHdFcnpPQzlqTGpjS1l1c0c2TWw0RHFZM2FWUTFxdWtEQlRiaU0vTzdZY3QybFdiaDdBWmZQYmZ4eTZMdFppTGs1N0E4Y1U4SXpVdWlBQ1M4Z3BuVzJ0am9ESVNsMU1tS3ZaZDc0KzdqVGhYUXR1NEhHNzhYbGNoVjJvaWtKVnNZdVZWWWNwOGZiZS9FOTRzWmg4S1YvNmRQOHNpczFlYWlxbXBQRUtDZk0vblNzWklUY2JRbndlRng2M203c1d4TjQ5cUFMN0x0U2ptcXZUSGpSMnRyVktpRmNRZ1NYb2dwK2w4Mk9UcFFTN3k4eUZnZGpySm9yTlh0WXZ1b0Y3c3ZEUFhuVXdrN2V1dU1MSDF1MmoybmNTTlJETk1oc21xU3hKWFdCZUdhN0NXdWJFb01nK1FpRXh1cTlYY1dad0hvcXhLQ2YzZDArT3NuN1JEWXJOc2RkZlhoaW93dTR5WTdLa25kZnVaMUxyZ2dnc1FTLzhJcjJmSzVpS0szajVYRjNjYnphdnVvclBPUkp6blZJaDREYk80SVd6ODFnemQ0aS9mbWdmYTZ5SEtQTDJNYk5rSXVWck9qMUdScDNsbEpvbGVpVWtoc2Ryb0czL0doeUdlYmw1QUZYRjV4eGg4NnI0MDRNdm42dkRWS3pKaVFlL2tKb1hSR0FKdXFDenJmVXE4SHBhRXN0U3phc1g2dUltSFYwNmU1VEtFaGR1WjJIdGdsUFZtNmY5Rk1WQTcxZzFLdjdJM1Z6ck9JclBSZlBLaXluZjQwRDNiRWJjTTVsbkhaTkdLeVRFZC9hdndPWmJCSXFTay91N25YWXFTMXdzbVIwN2F1MzFLZXk3VUk5aXFVNzNsb2NEL2t3UTBzSWtSU0JveUkrQnRhbisyR2d1eHFlWU9IcHRKbmZPSDR6NTNYZXN2c0tQajVSRGNYbEJGSnpQNDJDV2NvNHB0UnFIY2Y0Ym5kbUVkd2FYYmxSZ052bDQ2Y0lTcWl5anJKazdsUEo5WGppM0FLTkJZVVhkWU9JZG5OZkFxTU9DdzJWaXltM0NxeXE0UEFZc0poOEdWRXFMUEZRV3U2Z29jV3M2N2RoMXFZYTE4d2N4R21RcU0xZWM2ck55NHNZaVZHTnB6cDVCZFE3eGpqdXV4UDNlMFdzelVSUWp4dlR6MmowcE5TK0l3QkwwUmp2d0QybGR3V0xsdVZOejR3cXMrNWYzc3VlMXhaZzhMaTJ5TmVjY3hWREUvQmwyM3JINk9OOTRaUTFEM29WNGpaVTRsVmwwbkY3QU5Wc1ZQb3g4Wk9QeGxPOXh1cThhbTd1R1VzTW84MmZlUE0zb1V4WDZSa3E1Y0wyYUN6ZXNERGxLbUhRWDRmU2E4ZmpNK0REanhZSkhOYUZpUUZFVVZGWEZnSXBKY1dKVVhDaXFtMktUaTFLems0cWlLZFkwWEdkWjNRaTFGYW10RmU0YkxlUGFrUXJlZjJlM1dGWU9tSmd5OHorZGE1ZzB6czNod01PRngrWGsvdVc5Y2IvNzNLbTVZTEZxNWNjRVFRU1dvQjg2MjFwUGIzams4ZVBBYlNrM3lKSXFqbDJ6TWpwcG9TckdRdTVTaTRkN0ZsL25RRThWUlJXekMwQmdHYmxpc3pMWGVweS9mczkrZm41a2dIMlhGakd1TE9KNHoyd01SWlhjTi84NGkyYWxsZ05NQlg1NGFDVk9ReDFsbkFIZzRLVWFEbCt0NDhaRU9YWlhDVk5xT1pOcU5ZcXg2TTA4UndwZ2pORUJBcUg1NENkVXdBVTRWWTROVDFKK1lwaGl3emgxRldQY3MvZ2FhK1lPWXpJa3RnUHluc1g5YlAvaFJ0Nnk0bHBhaS9xRkZJU05xdkJmejYxbFJGbWEwK2R3VDlxNFo4a0FwWmJZcHc2TU9pd2N1MmFsZEZiYXlVV1BkN2ExbnBZV0lJakFFdlRJajlNUldJckJSSEZKRVMrZnJlZmRkMXlPK2QySGJyL0V2dk96c1pUWDZPS3c1b1RGanFxaXdDMXJXc1o5c3pnelVNV0t1aEhldDdhYmU1ZjA4dG1mZS9DWTU3SzQ4aVFmYkRxWDhqMmZQVFdQUWZkY01DcE11RXI0NTZmZml0MDNBOVZVNWkrN1FQRnBWb3FLZ3NGY2lvTlNITURRdUkvVFhjdW9QSHlkK2RaaDNybTYrNVlvV2pnenk2ZVlPMk9LYis1YnhXTnZlMTBzSzR0ODU5VVY5THFXZ3NHVVF6dng0WmtjNDZFMWwrTis5K1Z6OVJTWEZLR2svN3cva3RvWHRFSVd1UXRhODRPMEhhdGxGaDBuNThYTmlkVmd0Yk9vWmh5M0k3OVNOcFM1emxDakhNZm92WG1odWNzd2syZE9MWHpqLzMvNittSW9xcUdoNUJ4LzlKWWpwTHJFZU5oZVJNZVpwWGlNTS96M3NTekFibHdBNW9xc0NWTkZNZUF6V1JreExPZUk3VzRlZitsQi91V3BEWnpvbVJIemR4OWFkNWJqUFRNNUUrY3djRUU3bmo2eGdDUFhsK00xVk9UME9keU9VUmJWak5OZ2piMlpSUVcvdjdCb2tnRDFCOUlDQkJGWWdpN3BiR3M5Q1J4TzV4cW1vbEltbkJaTzlzUmZUL0hCdXk3Z214cktxNVFOUnBPSlA5MzhHczJMOWxQaFBmZkcyWXFLWXFCL3ZCcXZUK0dIWFVzNU5yaU1hbU12bjJrK2xQQzBXamhlbjhLWG5yK1RNYVZSTisrdkdJeE1HUnZvY2QvQjExNTdnTS8rWWlNWGJrUStKbW4xbkdIbXpiVHpyVmR2aTd1N1ZFaWZRNWRyNlRpN0dxY3h4OVB1cW9wdmFvZ1BObDJJKzlXVFBWWW1uQlpNUldrdnhEL2MyZFo2U2xxQklBSkwwRFBmU2JNTHhsQnM1YWxqQytKKzg3YTV3MWhMcC9McWZNSXh0WUhuejh6bHZYZGNaTnZiWDJaSjZTR0tQUDBBakh0bjhlWG5idVBWcXlzcFV3YjU0K2FEY2RlZnhPSnJMOS9HZGZjU0ZJTlJmd1doS0xpTXRmUjdiK2ZMTDkvUDQ4L2N5YWpqMWcwTEg5bHdnakZuS2YvVHVVSXNLNE9jRzZqaUI0ZnVZTkkwTCtmUDRwNGF4MW82eFcwTnczRy8rOVN4QlJpS3JVRGFBdnc3MGdvRUVWaUMzdmtlL3ZYUEtXTXFzWEtpeDhyZ2VQd3QxeCs0NndLK3lVSGR2THpxODZKNm9wL3pwNWhLT0hobERnRFZwUzcrWlBNaFByYnVGYXkrazNnbzVxeHRNV1oxbkU4OTJFVjFhZXFMdTlzUEx1WDA4REo4eGpKOXR4WkZZY3JVd05tSkpuYisrbDVlT1Y5LzB6OHZuRFhPNnZwK1hydXlrSU1oNTFWZUhTNW4waVhMU0xYZ21xMk1yKzFyd203U1I2VFROem5JQis2S0g3MGFIQy9tUkk4VlUwbmF1d2Q5QWI4bENDS3dCUDNTMmRiYVI1b0hwU29HSThXbHBYU2NqTDlGZkVQakFDVm0vVVN4Rk1XQWVlcVNmL3JQR3puNk5PYVp4Ym1RWTRIdW1EZkloKzQ2UlpGdmtHS2puVCs4OXhEMWFSekcvS3ZqQzloL2JSVXU0Nno4YVRnR0kyUEc1Znp3K0QxOHZ1Tk9wdHh2UnQwK2ZzOUpLaXgyOW5UZHh2WHhFbXlPSWg3dnVKMlNOS0o3Z3ArQnNSSys5TUk2Sm94TGRQRTg3cWx4U3N4VGJHZ2NpUHZkdlNmblVseGFxa1dFOXBtQTN4SUVFVmlDN3ZsRzJsY29tc1V6cCtiZTFORkd3bWhRK2RDNjgvZ2NOL1R4NW9wQ1RaV1h2M3pIeTZ5dU9raUo5K290YThTY3hscWVPcjc0amYrL09sek9kdy9lanRHbzhPRzdqc1ROV2gyTHA0NHRwT1A4R3B6R3VyeHNPRzVqRGVjbjF2TFBUOTFENzRnLytsWmk4ZkN4amNmd3FHYis2N203dURKVWprOVY4UGpFaGFYRHNMMklMejYzamxIRHNweGxhZy9INTdqQmg5YWRqNXRnZHNwdDVObFRjNkZvbGo3OGxTQ0l3Qkt5eEk4Qld6b1hNSnFMTVprdFBIOTZUdHp2YmxyU1Q0bkppV2RxUWhjdlArNHF3MlQwOFVkdk9jTC90K2xsWmh1T1lmWU9oMmd3QTMzalZod3VFNE1UeFh6NXhTWThTZ1hOUzAvUXRPQjZXdUxxbVF1M01XVnN5Ty9XWTdRd3hDb2VmMjRqaHk3N3B3VlgxTnQ0eTlLejJGd3oyWHR5SVJqTWZPN3BKbHdlbzFoYkNveE5Xdmg4eDNxR2xSVzZTWFBpbVpxZ3hPUmswNUwrdU45OS9uUURKck5GaTh6dHd3Ri9KUWdpc0FUOTA5blc2Z1MrbmU1MTFLSmFmbjVrVWR3ZFpNRW9sdGR4WFJmdlA2SFd2Q0VNR212RytPdjN2TXI3VnJ4S2xlODBxdGQvMFBLWTJzQlBYMS9FNDgrc3cwRU42K2FjNXUycnI2Ujh6L2FEUzNtbSs0NzhGMWR2aUZDRkNkTVN2bis0aVdkTytSZGV2L2VPaTJ5WWU1WXJvN1B4R3F1NE1WSE8zLzkwUFJOVFpqRzZaQVlBVTJZK3QvZHVobGlocXh4eVhzZDFQclR1WE56b2xkZW44UE1qQzFHTGFyVzQ3WGNDL2tvUVJHQUplY05YMDcyQXFhZ010MnFtc3p2K3R2Rk5TL3NvczB6aG50VEJRY2FtQ2w0Ni8rWnVMQVY0eTRwci9NMURMM04zN1d1VWVTK0JzWWg5M1F1eGVlZXhyT29jdjNQM21kUkVxS3J3MVpkdTQ5VnJ0ek5scUN1NFJ1UXd6dWVwTTJ0NThyQi9TdlgzTnA1bTgvTFRsQmpHbVZzOXh0dFhYK1VmZnJhZVlYdVJXRnlDNHVyZjk2NW5TRjJocTkybDdza3h5aXlUYkZvYVAzclYyVDBidDJyR1ZGU21DejhsQ0NLd2hLelMyZFo2RE5pZjlvV0thdmx4VnlPcUdqK0s5WHNieitCMTNOQkZYaXliY3daOUl6Zm41aWsyZS9uNHZTZjU0d2Rmd3VRNGg2OTRMdk5Lei9QSkI0K21kQStQejhBWG5ybVRZOE5yOG10QmU1Sk1HZWZ3OHVYYitPa1IveTYzOTk3UnpkKysrd1cyUG5DRUI1YjM4THNiei9KUFAxOTNTM2tMdDRxci85eTdua0hmS24ybDdsQlZ2STRiL043R3MzR2pWNnFxOE9PdVJ0QW1lclUvNEtjRVFRU1drSGQ4TWQwTG1Fc3FHSE9XME5rZDM2R3VXM1NkV2VWMlhKTzV6KzV1VitieTNRTXJJLzdiTDQ4dlFpMnFwOFo0bXM4MEg4S2dKQzhJcDl4Ry91M3BkVnl3cjhacnFDejRodVEwMXZIaXhkdDQ2dGpDTjhScU1FZlkybm1EZk9xdHgvamMwM2R5ZnFCS3JDNkt1UHJjcisvbXVtOFY2Q3d2bXNzeHlxeHlPK3NXeFovaTcreXVaY3haZ3JsRWswenpUMGpMRUVSZ0NmbEtPNURtd2lnRnBiaVdIeDVjSERlS3BRQWYzM1Fhai8zR0d4blNjNFZpTU5EbmFPRFE1WnFiL3Y2WlUvTTRjV01KbGNvMS9yaTVpeUpUOHMrcHFncWY3N2lMWHRjcVZNUDBpZHBNR2V0NTVzSWFuanQ5YXpMTXhwb3gvdUpkaDlqOTRtcGV2enBMTEMrRVlYc1IvL2IwQmdiVmxib1RWNnJQaThkeGc0OXZPaDAzVmFpcUt2enc0R0tVNGxvMFNDeDZIZmlodEE1QkJKYVFsM1MydGJxQS8wNzNPc0VvVnRmbCtCM255bm9iSytmWWNObUhkQ0VJZm5oNEZiYkErcUR6QTFVOGZYb1ZSWXp4cWJkMFVWV1NXaUxSenU3WkREZ1hvQnFtMzdxaktlTWNmbm5xTmc1Y3ZIVmQzdXpLU2Y3bXZhL3haRmNqcjV4N00yR3AxNmZ3RHorOW00czNLcWRkZVEzYmkvakNNK3Y5QzlwMW1OSGZaUjlpNVJ3Yksrdmpiem8rZUdtV2x0R3Ivdzc0SjBFUWdTWGtMYnVCTkROQytxTlkzKzljbXRDWmRCL2ZkQnJQNUNnK1QrNzk1Nml5bEM4ODIwVGZTQ2xmMzdjV2dFZnVlVDJ0UktJSEw5ZmpOczZZdGcxcTBqU2Y5dGZYY3V6YXpGdityYUxZelYrOXA0dk9pN1g4NnZoOEFKNC9NNWRCYnlQLy9mSkdmbjFpd2JRcHA0R3hFajczNncwTXNsS1g0c3JuY2VHWkhPWGptMDdIL2E3WHAvQ0RBMHUxaWw2NWdWM2ltZ1VSV0VKZTA5blcyZ044UDkzcm1Fc3FHWGVXOE1xNStEdmxhaXNtYVY1OURmZEVmODdmWHpFWXVlRmR5Yi8rZWlOMnRaWUhsNXhoZVYxYUtjSndlNDFhZERKNUxySVc4cDNYN3VSNEJKRmxNWG41azgxSEdYVlkrT0hCUnA0NXZSQ1BVc3FZT29kZm5MNlQvM3B1TFM1UFlidS9xOFBsZlA2WkRZd2E5WldLNGFaMlBORlA4K3ByMUZaTXh2M3VLK2ZxR0hlV1lDN1JKQXI1Zzg2MjFsN3h6b0lJTEtFUStEZE54RXBKSFh0ZVc0TGJHNy9wZm1qZEJjdzRkSEdFam1JMDRTNVp5Z3h6RCs5YWMwa0QwYVpLaXdMc3BzVjg4OENkbk9xOTlTdzZSVkg1OE4zbm1UOWpncVUxdzd4ejRRdTBySHlHMlNWOW5CcGV6ai8vY2lQWHgwb0tzbHpPOUZmenhlZnZadHk0REVYUnB4QjNUNDFqeHNHSDFzVS9jOURsTWJEbnRTVW9KWnFsSWZsWHNSNUJCSlpRRUhTMnRSNEZmcFh1ZFV6RjVYZ29wdU5FL0RNS2kweGVIcjN2Sko2SkFWVFZsL015VUgxZWx0VGFwbm5jU1hzbXpZdjVSbWNUNXdhcUkvNzczWTNYZWZTK0U3eHY3UVhldXZJcWYvR08xMmlzUE1ld2J6Ny8rY3c5RWRkeUFYRTNWT2lWdzFkcStQcXI2N0NibCtybStKdGJ5OWFIWjJLQVIrODdtZEFtajJkT3pzVkRNYWJpY2kxdS95dEp6U0NJd0JJS2pjOXBjUkdscEo0ZkgycGtQSUhzM2VzWDNhQ3haaFRYeEdET1gxNVJERndacWtTTDJKUExZNUxXRklMRHRKaXY3RnZIOFo3NDY5Sk1SaDkvM0h5WU8yY2R3NmxVc2VmSTNYejcxWlg0d2dUVk02Zm04cSsvV3MvZ1JISGVsTU1MWnhyNGJsY1RkdE5pWFQrbmEyS1F4cHBSMWkrS2YzN28rSlNaSHg5cVJDbXAxNVVmRWdRUldJSnU2R3hyZlFib1RQYzZSa3NKSmtzcDdhOGwxb2xzZWVBRXZxa1J2TzZwWENzcytsMkwrUGVuMTZYZGFUdmNGbWxRRVVUV3R3L2NGWEZOMWkyT1QxRjU5TDRUdkh2NVFZenFGSy8xcjJYblUrc1ptM3l6WEE5ZW5zT2xxVFg4ZThkOTdIbHRHUjZ2dnQzbGo3cVc4dE5UZHpGcDB2Y2lmcTk3Q3QvVUNGc2VPSkhROTl0Zlc0elJVb3JSb3NsMGJtZkFEd21DQ0N5aDRQZzdUYlJLYVIwdm42dm42bkQ4S1lPYWlrbGExbC9BUGQ2Yjh3enZYbU1WRjZmVzhybU8rL25jcjlkeCtFcE5RcnNpUXhsMVdKajBsRWxMaW9EZHRKaHZ2ZGJFNGN1SlpmbCsyOHFydEQ2NGo1bW15L1JPTFdUbjAvZHd0cjhhdTlQTW1LdVNLdlVpUmNaSlhycTRsTC85MlNaZXY2Sy8vRnErd0ZGSnIxeTlIYWR4anI0clNGVnhqL2ZTc3Y0Q05Ra3NiTDg2WE03TDUrb3hsTmJweXY4SVFrTDlsS3JLWXRtQ3JtQWRyc0hZOE1qamg0RzE2VjdINDdoT1ErbFYvdWE5QnhQdzZ3cC84K1FHcmpzYnNKVHJwSk5VVll6ZUVTb00xMm1vc3JGNTFVV1cxTVkvUi9HRk13MjBuM2dRek9YU3dLTlE2cm5FYjY0NXhyMUxFdHNvNXZVcC9QTFlRdlpkWEloOXlrUjloWTJyVTB0Wk4vc1lqOTUzbk9QWFp2S0xZMHU0Y0wyTTVYV2ovTms3dW5UeG5pNlBrUzgrdDViTGptVjVrYzNmTlRGSWJWRVAvL2lCVHBRRVRpLzR4NSt0bzhjeEQxT3BKc2ZpSE9wc2EyM1NuK2FVUHJoUWtZVWNRaTc0ZStESmRDOWlMS25oeXZBbys4N1hjZStTL2poQ1UrVlRiejNLWC8yNEJHTlJPVWF6RHRiVktBcGVrNVVSck5oR2ZaeDdaUkVWeGlFV3pyVHh3TElyTEtvWmk3Z2cvdFh1QmhGWGNYQ1lGdktUNDBZY0xoUE5xNjdFYjBzR2xmZmVjWkhOcTY3dzh5T05QSCttZ1dMTGRkNjFwaHNGV0ROM2lEVnpoK2diTGVWQ2xNWDAyV2JVWWVFTHp6UngzYmNNRFBwZkorWjFUK0daSE9aVDd6cWFrTGphZDc2T0s4T1ZXS3cxV2ozQ1A0cGxDQ0t3aEVMbmY0SER3SjNwNlJNRlk5a2N2djJxaDdYekI5ODRseTRhOWRVT0hsNS9nUjhlTW1Ld0x0SlZiaURGWU1CbG1NMFFzeGtjOUhMOHhoTEtETVBNTEp0Zy9jSmVsdFNPTWp4UnhDK1BMMmJRTlZjbTl4TVJXY1o1UEgzV2lNTmw1bjFyTHlUMG0yS3psdyt0TzhkdnJUdkgxYUh5VzVMQjFsYzUwa29RcXhWWGhzdlo5ZUpkakNqTGRKbEFOQnhWOWVFZTcrSGg5UmVvcjQ1ZmZnNlhpVy92VzQ2eGJJNVdVZmpEQWI4akNObno2eEtlTFBBSzF1azI3UTJQUFA1MjRHa3RydVVadTh3OUN5L3k4VTFuNGp0NjRCOS91cDZyRXcwVVZjeldmd1dxS25nbktGSEdjS2tsZUl6VnVrMGFxVmVLdk5lNXErNFV2N2Z4ZEVHOHo4Rkx0ZXc1ZERzT1U2TnUwekNFNHh3ZllGNTVEMy96dnRjU1NsUHl6VmVXOCtxbFJreVY4N1Y2aEhkMHRyWCtXcDhtTG4xd29TS2VXc2dKQVdmM3ZDYU51R3dPTDV5WncvbUJxdmlDRS9qMDI0NkNhd1NQMDU0UENobE1GVXdhRy9DYVpvaTRTcVZ6TjlieVd2L3QvUGZ6dDkrU2lpR2ZVSUgyZzB2NS91SDFPTXlMODBaY2VhWW13RFhDcDk5Mk5DRnhkWDZnaWhmT3pNRlFwbGxhaHVmMUtxNEVFVmlDa0NtMmE5S0lqV1lzNVRWOCtmbmJFdHBLUDZQTXlkWUhUK0FhNjhYbjlVZ3RUQU04Uml1blJtL2o4eDEzNGZIbG45dWJjaHY1L042NzJOZHpKMU9tdVhuejNENnZCOWQ0SDFzZlBNR01NbWY4ZXZJYStQTHp0MkVwcjhGZ05Pdkt6d2lDQ0N3aGIraHNhKzFFZzhYdUFLWVNLM1ozR1U4ZVdwVFE5OWN0dk1GOXkvcHdqL2NFWWdOQ29lTTFWSERKdnBwLys5VTZKbDM1cy94MFlLeUVmL3JsUnM3YmI4ZHRzT1pSaWF1NHgzdTRiMWtmNnhiZVNPZ1hUeDVhaE4xZGhxbEVzL2Q4TXVCbkJFRUVsakR0K0F2OEo5dW4zNWpMR25qcTJId3VEVllrOVAyUDNYTUdhL0VZenZGQnFZVnBnczlZUW85N05mLzI5UHFFVGdMSU5mdTc2L2ozam5zWlZsYWhHSXZ5cXF5ZDQ0UE1LQjdqWS9lY1Nlajdsd1lyZU9yWWZBeGxEVm85Z2p2Z1h3UkJCSll3L2Voc2F6MFBmRUdUeG15eVlDbWJ4UmVmV1pQUVlkQW1vNDgvZStkaGNObHdUMDFJWlV3YnIyZmh1bTgxLy9yMEJnYkg5Wm5ld09NejhQV1hWL1BEbyt0eG1KZmszZG83OTlRRXVHejg2VHNQWXpMR1B3ZlU3VFh3eERPM1l5bWJoY0drMlNrRlh3ajRGMEVRZ1NWTVd6NEwzTkRpUXFiU0dVeTR5L2xCNTVLRXZsOWJNY21uM25vVTkzZ2ZQbzlMYW1MYWVENGp3OHBLL3ZPWkRRbWRCcEJOYm95WDhFKy8yTWpyZzNjeXBmZk03Qkh3ZVZ5NHgvdjQ5TnVPVXB0QXRuYUE3M2N1OFU4TmxzN1FyQmdEZmtVUVJHQUowNWZPdHRaUjRHODFhOVRsYzNudWRBTW5laEpieDdGMi9oRHZXbk1aMTlnMVZOVW5GVEpOVUJRRG80YmxmUEdGdXpuZHA0KzFUYytkbnNlLzdkM0VkZDlxZk1iOE93NUpWWDI0eHE3eHJqV1h1V1BlVUVLL09kRmo1Zm5URFJqS05WMjgvemNCdnlJSUlyQ0VhYzh1UUpQelJ3eEdNNmFLT3Y3cjJUVTNIZDRiaXcrdHY4Q3kyaUZjWXoxU0U5TkxaV0UzTGVVYis5Znoyc1hjNVVVYm56THpIM3ViK09ucHUzR1lGNk1ZOHRNMXUwWjdXRDU3a0ErdFR5eXg2OWlraGY5NmRnMm1pam90ZHcxMkFWK1J4aTJJd0JJRW9MT3QxUWQ4RW8yMjlKbUxLL0daS3ZuU2M3Y2xkRUVGYUcwK1FyVmxGTmZFRGFtUWFZYmR0SWc5UjVyWWUzSisxdS85MnNYWjdQalZ2Vnh3M0lIYk9DdHZ5OUExY1lQcW9oRWVTekRmbFFwKyt6UlZZaTdXN0J4RkZmaGt3SjhJZ2dnc1FRaUlySVBBZjJ0MVBXTlpQZDJEVnA0Nm1saW5XV3oyc3UyaExoVFhNQzZIekM1TU55YU44L2pWMmJXMEgxeWFsZnNOMjR2NHo3MTM4ZjBqR3hrMXJrQXhtUE8yN0Z5T1VSVFhNTnNlT2tTeDJadlFiNTQ2T3AvdVFhdVdDVVVCL2p2Z1J3UkJCSllnaFBGWGFMVGdYVkVNR012bjhjT0Rpem1YUUpaM2dGbmxVL3o1dXc3aHNRL2tSNlozUVZPY3hucjI5ZHpKRTgrdVRTaHBiU3A0ZlFvL083S0l6M1ZzNG9Makxwekd1cnd1TTQvVGpzYyt3SisvNnhDenlxY1MrczI1Z1NwK2VIQXh4dko1V3U2UXZCN3dINEtnQytRc3drS3ZZQ1gvamdiWjhNampEd00vMEt3RG1CekY0T3psWDM1clAxV2xpZTBVUEhpcGhpODl1NGFpNnZrWXpVWFNrS2FiM1hnbnFUV2Q0NU1QdkU1TmdqdmhFdUh3NVJyKzkrZ3liTDc1ZUEyVmVWOU9YcmNUNThnVi91aXR4eEpPSmpycXNQQ1hQOXFJcjJnT3BwSXFMUi9uNGM2MjF2WjhLMFBwZzBWZ0NTS3dzaTJ5ZmdLOFh6T1JOZEZMZldrL2YvM2VneGdOaWJYNVh4MmJUL3ZCcFJSWkYyaTVBRmZJbTQ3UFI0WDNBdTliYzRwN2wvU2xkYTJ6QTFYODZOQUtobHoxVEJsbUYwVDUrTHh1bkxiTFBMeitMTys0N1dwaWdzeW44Tm1mcmFQUFVZZXBYTk1VRlAvYjJkYjZtL25aenFRUExsUk1VZ1NDVHZrajRFRkFreUd1cWF5ZTN0RXB2cnQvS1IrOTkyeEN2M25ubWl1TVRoYXg5NlJDa1hVQmlrSE1aWG9OVGd4TW1KYnk0Mk1scUJ4bTA1TGVwSzl4dkdjbVB6KzJoTUdwV3FZTTlXQlFDcUpzVks4SDE4Z1Yzcjc2U3NMaUN1QzcrNWZTTzFhTnVVclRkVmVqd1A4bkxWYlFuUThSOVZ6b25VVCtPdlFOanp6K0tQQjE3VWJjSGx3akYvbkl4dE04dUNMeHp2SXJMNnptd0tVNVdLb1g1dTMyZVNFOVNyMVh1SC9SYWQ1OSt5VVVKYmJQdERtS2VQN01YSTcyMURQcXFjVmxtQVdLVWpCbG9mcDh1RVl1Y2ZmQ1hqN3h3SW1FZi9mODZUbDhaLzhLTE5XTE1CZzFIYXo4Zm1kYjZ6Znl0anlsRHhhQkpZakF5cEhJK2hud0hxMnU1M1ZQNFJ5NXdyWjNIV1o1L1VoaXdreFYrTUxlMnpuWlg0ZWxlbjdlSFZzaWFJUEpPMEtsb1llMWMvdFowM0NEcWxJWFpxTVBoOU5FNzBnNVIzdHE2QityWk54ZHlaaGFoOEZZZUd2M1ZOV0hhK1FLcStyNitjem1veGlVeFBxUE0zM1Y3SHpxenNDYVJrMlBKL3A1WjF2cmUvTzdUS1VQRm9FbGlNREtqY0NhRFJ3SE5Fc1E1SmthUTNYMDh0a1BIa2g0QWJQSForRGZmN1dXYzRPMUZGWFBFNUUxamZGNVhCUXhoZ2tuQm9NUHQyckI2U3NIVTBsQnR3dFY5ZUVjdWNyU211djg2VHRleDJSSUxOWFVqZkVTL3ZySGQ2T1V6c0ZVck9uQy9rSGd0czYyMWdFUldJSUlMRUVFVm1vaTZ3UEFqN1c4cHNjK1FCazMrSWNQSEtDc3lKMkV5THFUQzBPMW1Ldm1GVVRaQ2tLaUlzQTllcFhGTTYvN0QzQk9VRnhOVEpuNWZ6KzVHd2MxbU1vMFg5ei93YzYyMWljTG9XeUZ3a1NHNFlMdUNUalJyMnQ1VFZQWmJPeSthdjd0VjJ0eEo1anZ5R1R3OGFmdlBNeTg2a0hjbzFmbDNFSmhtb2dySCs3UnE4eXZ2cEdVdUhKN0RYenU2YlU0Zk5XWkVGZGZMd1J4SllqQUVnUTkwQXFjMWxSa2xUZlFQejZETHoxN0c2cWFXRFRLWlBEeGwrL3VZdkhNNnpoSFJHUUpoUyt1bkNQK3lOWDJkeDlLV0Z5cHFzS1hucjJOL3ZFWm1Nb2J0SDZzMHdGL0lBZ2lzQVFoWFRyYld1M0Fod0duWmhkVkZJd1Y4em5aVjhzMzl5MVBYSmdGSWxuTGFnWndqVnhCOVhtbGdvVENFMWMrTDY2Ukt5eXJHVWdxY2dYd3pYM0xPZGxYaTdGaXZ0WTdLSjM0RTRyS01RdUNDQ3hCMEZCa0hRWCtSTXRyS2dZRHhzb0Z2SEsrZ1I4ZmJFeE9aTDNqZGRiTTZjYzFjaG1mMXlNVkpCUU0vcFFtbDFrenA1OC9lK2ZyU1ltckh4MXM1Slh6RFJnckYyUWlyY21mZExhMUhwTWFFdklCV2VSZTZCVmNnQXV4Tnp6eStCNmdSZHNPeFkzTGRvbVc5ZWVTU3B5b3FncmZlSGtGK3k0MFlLbWVMeG5maFFJUVYyNWNJMWU0ZDNFUGo5NTNPbTdlcjFDZVBqNlA5dGVXWXJFdXpJUXQ3T2xzYS8xd29aVzM5TUdGaTZTbUZ2S1Izd2RXQTZ1MHVxREJhTVpjTlo4OUIvelJxYmV0NmtsUXdLcjgvbStjb3FMWXhhK09xMWlxNXNuWmhVTGU0blU3Y1k1ZTVWMjNYYUpsL1lXa2Z2dk15UWIySEZpYXFZSEdTZUFQcElhRWZFSWlXSVZld1FXYVNtRERJNDh2Qnc0QzVkcDJNRk80UnEvd0I3OXhpbnVYOUNmMTIxOGZuOGYzRHl6RlV0bUFxYWhVR3ArUVYzaWNEbHhqUGZ6MjNlZDRleEpSWElCOTUrdjQya3Nyc1ZScG5rZ1VZQnhZMzluV2VxWVF5MTM2WUJGWWdnZ3NQWXFzRHdJLzBuNFU3OC8yL29mM0p5K3lYcnRZdzM4L2R4dW04anJNSlpYU0FJVzh3RDA1aG1laW4wKys1VGpyRjkxSVdseDk5Y1dWbWNqU0h1UzNPdHRhZjF5b1pTOTljT0VpaTl5RnZDWGdkRCtyOVhXTjVtSXNWWFA1Nm9zcjJYZStMcW5mcmw5MGcyMFBIY2JuNk1ObEg1SktFblNQeXo2RXo5SEh0b2NPcHl5dUxGVnpNeVd1L3JHUXhaVWdBa3NROU16L1ErTXM3d0FtU3lsRlZmUDQra3NyZWY3MG5LUit1Nnh1aEgvNHpRTVVlUWR3anZXQmpGQUZQYUtxT01mNktQSU84QSsvZVlCbGRTTkovZno1MDNQNCtrc3JLYXFhaDhtU2tTbnhId0YvS3hVbDVDc3lSVmpvRlR3TmpuUFo4TWpqWmNETHdGcXRyKzExVCtFYXVjTHZianliOE1MM0lPTlRablkrMWNUQVJEV1d5cmtvQnFNMFNFRWYyc3JueFRWMmpicHlHMy94cmtOVUZMdVQrdjB6Snh2NDd2NWxXREkzTGZnNmNOOTB5SGNsZmJBSUxFRUVsdDVGMW55Z0U2alQrdHBlOXhUdXNhdThmMjAzNzExN0thbmZ1cjBHL3V2Wk5SenZxY0ZTTlErRHlTS05Vc2dwUG84TDEraFYxalRjNEZOdlBZYkptTnhwQkQ5N2ZTSC8rM29qNXNwNW1SSlgvY0NHenJiV0s5TkM3RW9mTEFKTEVJR1ZCeUxyTHVCRm9Dd1RuWko3OURJUExyL0s3OTV6am1SS1ZRVitlbWdSLy92NklpeVZjekFWbFVuREZIS0NaMm9DMTNnZjc3L3pJdSs3ODJMUzdmaTdyeTdsK1RQek1GY3R5TlJnd1E3YzM5bldlbWk2MUluMHdTS3dCQkZZK1NLeTNnWDhuQXlzTC9SNVBYakdMdEUwdjU5UFBIQVNnNUtjN2J4K1pTWmZmT1oyRENVenNaVE5sTVlwWkJYbnhCRHExQkNQTlIvbGpubkpiY0R3cVFwZmVXRVZYVmZxTUZVdXhHRE1TQXBGSC9DZXpyYldwNlpUdlVnZkxBSkxFSUdWVHlKckM3QXJJODdRNThVemRwbkZzd2I1NDgxSHNaaVNPNGV3YjZTVWYzM3FMaWE4MVZncTYxRVUyV2NpWkxvRDkrRWU2NlhNT01wZlBIU0kraXBIVXI5M2VZeDhmdS90WEJpY2hhbHlRU2JYRW03cGJHdjl5dlNySCttRFJXQUpJckR5UzJUOUxmQjNtZXF3dk9OWG1WVmlZOXREeVM4UWRyaE1mR0h2SFhRUHpzQmNOVStPMXhFeWhzL3J4ajE2bGNaWnczeG04eEZLTGNtZG1UaytaV2JuTCs5aWNOS0tzV0plSmdjRWY5ZloxdnIzMDFNQVN4OHNBa3NRZ1pWL0l1dHg0TEVNZVVVODlsNUtHT0V2MzkxRmJlVmtjaDJmcXZEOXpxVjBuSnFMcFVJeXZ3dmE0M0hhY1kzMXNubjFWWDc3N3ZOSm5Ta0ljSDJzaEgvNVJST1RWR01xbXdPWjh5V1BkN2ExZm1hNjFwUDB3WVdMekU4SWhjeG5nTzlrU0xsaUttOWdTcW5oYjU2OG0zTURWY2tabnFMeXV4dlBzdldCNDdqSHIrR2NrS1NrZ25hNEpnYnhqUGZ3eWJjYzUzYzJuRXRhWEowYnFPSnZucnliS1VNTnB2S0dUSXFyN3dCL0xEVW1GQ0lTd1NyMENwN0dFU3lBRFk4OGJzYWZzUEM5R1lzVVRJN2l0Zy93aWZ0UHNuSHhRTksvN3g4dDVYTy91cE5SVnlXV3lnYkpseVdrak9yejRoN3JvZEl5eHArOTh6QjFTYTYzQXRoL1lUWmZlWEVWNXZMWm1JcXJNdm00UHdNKzJOblc2cG5XZFNaOXNBZ3NRUVJXSG9zc1MwQmt2U2RqSXNzMWlYdnNLdTliZTVIMzNYbUpaRXZkNVRIeWxSZFhjZWh5TFpiS0JveVdFbW04UWxKNFhaTzR4bnBZdDNDQVAvaU5rMWhNeWVXM1VvSC9QYlNJbngxWmhMbHlMcWJNdHNHZkFSL3FiR3QxVFh0UkxIMndDQ3hCQkZhZWk2eFMvT2tiM3BLcGUvZzhManhqVjFqVGNKMnRENTVJdW9NRGVPNzBITDY5YnptbTBob3NaVmFwT0NFeGdXNjM0WEhjNE9PYnp2REE4dDdrZis4eHNPdjUxUnpycmNWVU1UL1RDWEdmdzUrT3dTRTFKd0pMQkpZZ0FrdEVWbUxPMHVmRk8zNlZtYVVqL05rN1g4ZGE2a3o2R2xlR3l2bmMwM2N5NWF2RVhERUh4U0JMSllWbzdjMkhhN3lYVW9OL1NuRGVqSW1rcjJHekYvRnZ2N3FUNGNrcS8wN0J6RTVSaTdnU2dTVUNTeENCSlNJclpaZUpaNklmZzJlRVAzM0g2eXl1SFV2NkNnNlhpUzg5dDRiVGZUTXhWelprNmtnU0lZL3h1aVp4ai9ld2FzNFFmL1NXWXhTYnZVbGY0OEwxU3Y3OTZiWDRURlpNNWJPQmpQb0xFVmNpc0VSZ0NTS3dwb0hJK2dFWlhKTUY0SjRjd1ROeG5ZK2xPRzBEOE15cHVmelBxMHN4bGM3Q1VqWkRLazhBL0ZuWnZaTkRmUFNlczd4bFpVOUsxM2poekJ5KzljcHl6T1cxbUVxcU0vM0lQd2MrTE9KS0JKWUlMRUVFVnVHTExBdndReks0dXhEZVBDaDYwNUplUG5ydldVeUc1TmRsOWRqSytNOWZyMlhVVllHNW9pRlR4NVFJZVlEUDY4RTkza04xMFRoLzh2YlhtVk50VC9vYUhwK0JiNzZ5bkZjdjFHZnl3T1pRWkVHN0NDd1JXSUlJckdrb3N0cUEzOG1vQS9WNThJNWZwYTU4aE0rOC9VaEs2N0xjWGdQZmZHVUYrODdYeVlIUjB4VDMxQVR1OFQ1K1kxa2ZINzNuRENaajhtTGRaaS9pUDM5OUI5ZnQxWUgxVmhrWDY5OERIaEZ4SlFKTEJKWWdBbXY2aVN3RmVCejRkSWE5S0Y1N1A2cDdsTWZlZHBUVkRiYVVMblB3VWcyN25sOE5sbXFLeW1zem1RQlMwRkVIN0o0WUFOY29mL1RXNDZ5ZFA1alNkVTcwek9DSlo5YUF1UXBUV1YwMjJzNFhnZGJPdGxicFpFUmdpY0FTUkdCTlk2SDFkOERmWnZvK25xa3gzT1A5dkcvdEpkNTMxOFdVbGhRUDI0djR3dDQ3NkIydHdsVFJnTkZjSkJWWW9IamRUdHpqUGN5M2p2Qlk4OUdVb3ArcXF2Q1RRd3Y1K1pHRm1DdnFNUlZYWk9QUi83NnpyZlh2cEFaRllJbkFFa1JnQ1d4NDVQRlBBMThndzBkSStUd3V2T05YV1RScm1FKy85UmpsU1I0V0RmNnpESDkrWkFFL09kUVlXQUF2T2JNS3JOdkZaUi9HNHhqaXQ5WjE4OUNhSzBrZmR3UCt3NXEvK013YUxnM053Rmd4TDlQNXJRQjh3R2M2MjFxL0tIVW9Ba3NFbGxTdUNDd2hWR1Q5RnY3ejBUSzY4bGRWZlhnbmVqSDd4dmpqdHg5SktaVUQrSE5tZmFIakRzWmNGWmdyNW1Bd21xVVM4eHlmMTQxN3JJZnE0bkUrcy9rSWM2MzJsSzV6ZnFDSy85eDdCMTVqQmNheU9TaEt4dk9wVFFFZjZXeHIvWkhVb2dnc1FRU1dDQ3doa3NpNkQvL09wK3BNMzhzOU9ZSjc0anEvZmZjNTNuN2J0ZFN1NFRYd3ZjNmxQSCs2QVhQNWJNd2xsVktKZVlyTE1ZckhmcDNtVmRkNCtPN3pLZTA2VllGZkg1L0hEdzRzd1pLZEZBd0FOdUI5blcydEwwc3Rpc0FTUkdDSndCSmlpYXhWd0ZQQS9FemZ5K3Vld2p0K2pWWDFOL2pFQXljcEswcnQ3TnRUdlZhKytPd2EzRlJncnFpWFE2UHpxWlAxZVhHTjkxS3NUUERZMjQ2eXJHNGtwZXZZbldaMlBiK0swLzJ6TUZiTXk5YjZ2Q3ZBdXpyYldrOUtUWXJBRWtSZ2ljQVNFaEZaZGZnaldlc3kzOEg2OE5wN01Ldmp0RFlmWmVuczBaU3U0M0NaK05wTHEzajlTZzNtOGpwTXhlVlNrVHJIUFRXQmU2S1A5UXV2OCtoOXAxTEt5QTV3cHIrYUp6clc0REZVWUN4cnlOWVJTd2VBOTNlMnRmWkxUWXJBRWtSZ2ljQVNraEZacGZqWFpIMGdHL2Z6VEk3Z21yanUzMlY0NXlVTVNtcjIyZGxkeTlkZVdnV21Dc3psc3lXYXBjZU8xZWZGUGRHUDBUdk8xZ2VQczNiK1VFclg4YWtLVDNZdDRoZEhGMkFwbjQycHBDcGJyL0FqNEdPU25WMEVsaUFDU3dTV2tLcklNZ0QvQXZ4Rk51N244N2p3VGx5bG9XcUVUNy90R0RQS25DbGRaM3pLekZkZVdNMkozcGtTemRJWi9xaFZQM2N0dU1IdjMzZVNVa3RxMDhLREU4VjhzZU4yK3NZck1aWm5aWmRna0g4RnRrdU9LeEZZZ2dnc0VWaUNGa0xyRVdBM2tQbXRlcXFLeDk2UDZocGw2NE1udUd2QllNcVhlak9hVlJtSVpobWtNblBWbVFhaVZnYlBCRnNlUEo1V3ZSN29ydVdyTDY3Q1VGeUZxWFIydHBMT3VvQ3RuVzJ0YlZLYklyQUVFVmdpc0FRdFJkYTl3Sk5BYlRidTUzSGFjWS8zY3QvU1hqNXl6MW5NS1J5UEFtSFJySXA2T1dvbkJ3U2pWbXZuRGZMNzk1MU1LZjhaZ010ajVGdjdsckgvUWoybWlxd2VtelFBZkxDenJYV2YxS1lJTEVFRWxsU3dDS3hNaUt6NXdQOENhN054UDUvWGcyL2lHdVhtY1I1clBzYUNtZU1wWDZzekVQVlF6SldZeTJ0bGJWWTJPdENRcU5VbkhqaEIwOEliS1YrciswWWxYM3htRFE1dk9jYnl1ZGs0U3pESVllQTNPOXRhcjBpTmlzQVNSR0FKSXJBeUtiTEtnSzhERDJmcm5oN0hFQzc3RUIrNHE1dDMzM0VsNVFYd1k1TVd2dmJTS283M3pNUlVYb2RaMW1abERQZmtHTzZKQVpvVzN1RGo5NTVPT1dybDlTbjg5UEJDZm5aa0laYnlHa3dsV2MzYy96M2dEMlV4dXdnc1FRU1dJQUlyV3lKTEFmNGMvd0w0ckN4czhucWMrQ2F1VVZjeHhxZmVkb3phaXNtVXI5VjFxWWF2dnJnS2o2RWNTM2tkaXRFa2xhb1JQcThiOTNnL1JZWUpQdm5BY1c2Yk81enl0ZnBHUy9tdlo5Wnd3MTZKc1h4dU5oZXkrNEMvNkd4ci9YZXBVUkZZZ2dnc1FRUldMb1JXTS9BRFlFYVdQRElleDNVOGs2Tjg5TjR6UExDOE4rVkxPVndtdnIxdk9aM2RzekdWMVdJcHJaSUtUUk9YZlFTUDR3WVBMTy9sdzNlZlN6bXZsUW84ZTdLQjcrNWZocm1zR2xOcERaQTFleDRHSHU1c2EzMUdhbFFFbGlBQ1N4Q0JsVXVSdFJCL1hxQzdzblZQcjJzU3o4UTFsczhlWnNzREo2a3NjYVY4clZPOVZyNzgvRzFNZXNzeFY5VExtWVlwNFBPNGNJLzNVbUd4ODBkdlBjcVNGTStYQkxBNWl2anY1MVp6Y2RDS3NXSXVSbk54TmwvbElORFMyZFo2U1dwVkJKWWdBa3NRZ2FVSGtWVUVmQUhZbWozbjdNTm43ME4xai9PSiswK210WURhNVRIeS9RTkxlTzUwQStiU1dWaktxc2xpeENTZmUwaGM5aUhja3pZZVduT1pEOXgxRVZPS3V6MEJPcnRuODdVWFYySW9xc1JZTmpzYmh6U0g4bVhnVHpyYldwMVNzU0t3QkJGWWdnZ3N2UW10andDN2dOSnMzZE16TllGbm9vKzE4Ni96eUtZektTK21CcmcwV01HWG4xdkRzS01NVThXY2JFZFA4Z3FQeTRGbm9vLzZ5bkUrK2VCeEdxejJsSzgxUG1YbWF5K3Q0a1RQVEl6bGM3S2RTc01PZktLenJmVjdVcXNpc0FRUldJSUlMRDJMck5YQUQ0RVZXWFBVUGk5ZWV5K0t4ODRmcGhuTjhxa0t2em8ybng4ZGJNUlFYSVdsdkNiYmtSUjlkNG8rTCs2SjY2anVjWDVudzFuZXNySW5yVmpmZ2U1YXZ2YlNTZ3lXQ2d5bDlkbE9CbnNTK0ZCblcrc3BxVmtSV0lJSUxFRUVWajZJckhMZ0s4QnZaL08rd1dqV1hRdXU4OGg5cDFNK2hnVmdhS0tZM1MrczV2ejFha25wRU1BOU9ZYmJQc0R0YzRkNDlMNVRWS1d4OXMwZnRWckppWjVadVloYWdmK2N6VTkydHJYYXhXSkZZQWtpc0FRUldQa210RDRGL0FlUXRmMzF3V2lXMGV0UGJwbnFRY0pCRGx5czVlc3ZyY1JuS01kVVhvZGhHcVowOEhsY2VDYjZLVExZK2NUOUo3aDlYcHBsR294YW1jc3hsTlZuTyttckUvaE1aMXZyTHJGUUVWaUNDQ3hCQkZZK2k2ejF3QjVnWVRidjY1bWF3RDNSeC9wRkEzenMzak5wUmJNY0xoUGY3MXpLUytmcU1aWE9vbWlhTElKWFZSVjNZQkg3MjFkZjViZWF1ckdZdkNsZkx4aTFPdDR6QzFOWmZTNE80ZTdHdjB2d2tGaW1DQ3hCQkpZZ0Fxc1FSRllWL3NPaUg4N21mYlZjbXdWdzhVWUZ1MTY0alNGN09hYnllb3lXa29LdE00L1RqbWVpbjduV01UNXgvNG0wRnJFRDdEdGZ4emRmV1o2cnFCWEFkNEgvcjdPdGRVd3NVZ1NXSUFKTEVJRlZhRUxyRDRESHllSXVRd2lzemJMM2NkdWNRUjY5N3pSVnBhbXZIVkpWaFk2VGMvbkJnU1VZTEJVRmQ2Nmh6K3ZCTTlHUDRyWHpzVTJudVhkSmYxcXh1cUdKWXI3eTRpb3UzS2pHV0phVHRWWjI0STg2MjFxL0pSWW9Ba3NRZ1NXSXdDcGtrYlVDL3hsdmE3UHF6SDFldkk1K2ZNNEpQbnJ2R2U1YjFwZVdjQmlkdFBETlYxYnkrcFdaaFpFSlhsVnhPa2J3T0FiWnRLU2YzOTE0TnExcFZiOFFiZUFIQjVaZ0txbkVXRG83RjdzeHU0RGY3bXhyUFMrV0p3SkxFSUVsaU1DYURpS3JDTmdKZkNiYjkvWTRIZmpzdlN5Y09jS1dCMDR3cTJJcXJldWQ3TFh5MVJkWE0rNHE5VThiNW1IdUxJL0xnWGVpajFubGRyYmNmNXhGTmVOcFhhOXZwSlJkejk5RzcxZ0Z4cktHWEUybGZnNzRxODYyVnBkWW5BZ3NRUVNXSUFKcnVnbXRkd050d0t6c09uWWZYc2QxM0pOalBMeitQRzlmZlExRlNkMGZlSDBLVHgyYno1T0hHakVXVldJdXE4bUxhVVAvZE9BQWVDYjRuUTNuZUhCRmI5cmw4UE1qQy9qcDRVV1lTd05uQ0diZkRnZUFqM1cydGY1YUxFd0VsaUFDU3hDQk5aMUYxaHpnVzhEYnNuMXZyM3NLMzBRUE5lWGpiSG5nQlBOblRxUjFQWnU5aUxaWFZuTHMyZ3g5VHh1cUtpNjdEYmRqaUh1WERQQzdHODlTVnVSTzY1TG5CcXJZL2NKcXhsMWxLS1VOR00xRnVYaXpwd1BpNnJwWWxnZ3NRUVNXSUFKTFJOWWpqeHVBUHdIK0NjaHV6NnlxZUNhSGNObUgyYno2V3RxcENDQnMyckNzVGxlN0RZTzdBMmRYVExEbHdSTXNtSm5lZEtERFplSjduVXZaZDY0T2Mza05waEpyTGw1ckV0Z0dmTEd6clZVY3V3Z3NRUVNXSUFKTENCTmFhNEJ2QTNkays5NCtqd3Vmb3hlTDR1QVBmK05rMnNrMHZUNkZ2U2ZtOGNPRGl6Rll5akdWMWVZMFNhblA0OEpqNzhmZ2MvQ1JlODZ3YVdsLzJwbThPcnRyYVh0bEJhcXhERVBwbkZ5OVh4ZndrYzYyMXROaVFTS3dCQkZZZ2dnc0licklLZ0wrQWZneklPdmJ6dHhUbzNnbnJuUEh2QnQ4Yk5PWnRJNkRBWDl5emU5MUx1UFY4N014bDg3RVVtYk42cm9rMWVmRFpSL0VNem5LNXR1dThzRzd1aWsycHhlaEc1d281dXN2cmVUY2RTdUcwdnBjSFNQa0JmNForTWZPdGxhM1dJNElMRUVFbGlBQ1MwaE1hTjBQZkpNc1o0RDNpeEl2UGtjL1h1Y0V2N1B4TEE4dTcwdHI4VGZBNWFFS3Z2cmlLdnBHS3pDV3pjNktLSEU1UnZFNnJyTzhib1JITnAyaXRuSXlQVVhqVTNqNitEeCtkSEF4NXBKS2pHVzF1VG9JK3p6K3FGV25XSW9JTEVFRWxpQUNTMGhlWkZVQ253Y2V6Y1g5UFM1L1NvZlpGZU44NHY2VGFTK0NWNEg5RjJiejdYMHI4RkNLcVh3MkJwUDJTODY4cmtrODluNHFMQTUrLzc2VDNEWjNPTzFybnUydjVpc3ZybUxNV1lxaHJDR1g2U2orRy9nek9hUlpCSllnQWtzUWdTV2tMN1ErZ1Arb25WbFp2M25JSXZpM3J1amhRK3N2cEQzRjV2SVkrY25oUmZ6cTJEeE14VldZeTJacGt0YkI1L1hnc1EvZ2M5bjUwTG9MYkY1OUZhTWhQVDgzUG1YbXUvdVhjcUI3TnFheUdzeWwxbHcxZzM3Z0R6cmJXbjhwRmlFQ1N4Q0JKWWpBRXJRVFdYWDRveGZ2ejhYOWZWNDNQbnN2UnArRGoyODZ6ZDJONldjQ3VERmV3cmYycmVCRWp4VlRhWTAvclVNSzdWWlZmYmp0dzdnbmJkeTdlSURmM25DV2l1TDBsaVdwcXNJTForcjU3djVsR0MxbEdNcnFVQXc1VzZUL1hhQzFzNjExU0N4QkJKWWdBa3NRZ1NWa1JtajlIdjd6REdmazR2N3VxUWw4OWo0VzE0N3crL2VsdjY0SjRFeGZOVjkvWlJWRDlsSk1wYk14SmJFK3k3L082Z2FMWm8zeDhVMm5tRGRqSXUzbnVUSlV6bGRlWE1YQWVBV0dzam1ZTEtXNXF1NEI0Sk9kYmEwL2taWXZBa3NRZ1NXSXdCSXlMN0p5R3MzeVo0Sy9nY3N4eWtPM1grWjlheTloTWZuU3ZLYkNLK2RuODkzOXkvRlFnckdzTG1heVRvL1RnZGZSVDRWbGtrYzJuVW83clFTQTNXbWkvZUFTWGp4VGo2VnNCcWFTbWJuSXhCN2srOENuSldvbEFrc1FnU1dJd0JLeUw3UitEM2dDeU1uQ0lKL0hoYy9lZzBXWjVKSDdUbkhYZ3NHMHIrbnlHUG5aa1lYODhzaDhqRVVWL21OM1F2SkwrZk5aRFlEWHdZZlhuK2ZCRlQxcHI3TlNnWmZPMVBQZHptVmdLc1ZRV28vQmFNNVZ0UTRDZjlUWjF0b3VMVndFbGlBQ1N4Q0JKZVJPWkRYZ1h3RC9VSzZld1RNNWpzZlJ6OUphRzQvZWQxcVRhVU9ibzRqdmR5N2xRSGN0NWxJcnB1SktQSTVoUE00eE5xKyt4bS9lZVpFU2l5ZnQrL2pUUjZ6MFR3ZVcxbU1xS3N0bGRmNHdJSzV1U01zV2dTV0l3QkpFWUFuNkVGcVA0RS9wa0pNREFHK2ROcnljOXBFN0FGZUh5L25XdmhWMDM2amdyZ1dEL002R2M4d29tMHI3dW5hbm1UMnZMZWFsczdxWURwU29sUWdzUVFTV0lBSkwwTEhJbWdOOGlSeXR6WUkzcHcxTlRQS1JlODZ5WWZFQVdyUkVyMDlKZXlvd2VKM25UOC9oQndlV1lyU1VvcFRXNS9RSUgrQi9nRC91YkdzZGxCWXNBa3NRZ1NXSXdCTDBMYlJhOEsvTm1wMnJaM0JQVGFBNittaW9IdWZSKzA2bG5hUlVDMDcyV3ZuR3l5c1pjNWFpbE03QmxOdERxSy9pM3lFb2VhMUVZQWtpc0FRUldFSWVpYXlad0w4REg4OWhEL0pHa3RKTlMvcDUrTzd6YWVlblNvVWI0eVY4NTlWbEhPK1ppYWxzRnVhU2FpQm45cUVDWHdiK3NyT3RkVXhhcWdnc1FRU1dJQUpMeUUraDlRNzhpK0RuNStvWmZGNFBxcU1mVHlERGV2T3FhNXBNOThYRDZUSHkwOE1MZWVyWWZDd2xsUmhMYXpUSkdKOEdaNEJQZExhMXZpUXRVNUErV0FTV0lBSkx5SCtSVlE3OE0vQnBjaGk2OGJvbThUbDZxYkE0ZUdUVGFVM09DSXpZY1FIN3o4L21PNjh1eDJzb3dWQTZCNFBKa3NzcThBRC9DdnhqWjF2cmxMUklRUVNXQ0N4QkJKWlFXRUpyRS9BVllHVXVuOE05T1lMWGZvT1Y5Y044ZE5NWmFpc21OYnYycGNFS3Z2N1NTdnJIeXYxcEY1TElDcDhoRHVLUFdyMHVMVkFRZ1NVQ1N4Q0JKUlN1eUxJQTI0Qy9Bb3B5MXJuNGZIZ25yK055K1BOYXZmL09pNVNta2RmS1ppL2lCNjh0NFVCM0xaYXltWmhLWnVReTdRTEFCUERYd0JjNzIxcTkwdklFRVZnaXNBUVJXTUwwRUZyTDhDKzJmbXN1bjhQbmNhRTYrdkI1Sm5sNC9Ya2VYTkdiMVBvc3A4ZklMMTVmd00rUExxQ29wQXhENmV4Y0hzb2M1SCtCeHpyYldxOUtTeE5FWUluQUVrUmdDZE5QWkNuNGR4bCtEcGlaeTJmeHVCeW9qajRxTEE0K2V1OFo3b2h6dHFDcUtyeDB0bzd2SDFpS2FpaUIwbnFNcHFKY0Yya1AwTnJaMXZwamFWMkNDQ3dSV0lJSUxFR0VWZzMrbEE0ZnpmV3p1Q2RIOFRxdTB6aHJsSS9lZTRaNU0yN05uM1d5MThvM1gxbUJiYkpVRDhmYmdIOWQvUmVCdjViVUM0SUlMRUVFbGdnc1FRZ1hXczM0cHcyWDVMYmo4ZUYxRE9KeWpIRFA0Z0UrdFA0QzFsSW4xMnhsZkhmL01zNzJXekdXenNKY1drME9OMFVHT1FKczZXeHJQU0F0U0JDQkpZakFFb0VsQ05GRVZqR3dQZkRKNlp5YnordEJuZXpITmVsZ3hSd2JwM3F0V0Vxck1aYk1RakVZY2wxVTQ4RC93NytJM1NNdFJ4Q0JKWWpBRW9FbENJa0lyYVhBZndHYmMvMHNYbzhUMVQySndWS2U2M01EZzdUalB6K3dWMXFLSUFKTEVJRWxBa3NRVWhGYUh3WStEOVJKYVhBZStGUm5XK3V2cFNnRUVWaENOQXhTQklJZ3hLT3pyZlVId0hMZ2NjQTNUWXZCQ2Z3ZHNFYkVsU0FJOFpBSVZxRlhzRVN3QkkzWjhNampkd0pmQWpaT285ZCtHdmgwWjF2cmVXa0JncFpJSHl3Q1N4Q0JKUWloSWtzQkhnVjJBRFVGL0txWGdQL1QyZGI2cE5TNklBSkxFSUVsaU1BU3NpVzByTUJuZ1U5U1dFc09uUGdQWnY2WHpyYldTYWxwUVFTV0lBSkxFSUVsNUVKb0ZkSzA0Uy94WjJLL0lEVXJpTUFTUkdBSklyQ0VYSXVzZko4MnZJZy83Y0pQcFRZRkVWaUNDQ3hCQkphZ042RlZEZnd0OEduQWxBZVBiQWYrR2ZpUHpyYldLYWxCUVFTV0lBSkxFSUVsNkZsb3JjU2ZPK3Z0T243TS93RzJkYmExOWtpTkNTS3dCQkZZZ2dnc0laK0UxdnVBL3dBVzYraXhEdUpmWi9XcTFKQWdBa3ZJQkpKb1ZCQ0VqQkpZMDdRYStFdGdJc2VQY3gzNGZXQ0RpQ3RCRURLSlJMQUt2WUlsZ2lYb2lBMlBQRDRIL3lMNGoyYjUxbTc4MDVXZjdXeHJIWk9hRVBTQzlNRWlzQVFSV0lLZ3BkRGFpUC9ZbmZWWnVOMHY4Q2NMUFNzbEw0akFFa1JnQ1NLd2hFSVhXUWJnNDhDL0FMTXpjSXN6d0o5MHRyVStKYVV0aU1BU1JHQUpJckNFNlNhMEtvRHR3UDhCaWpXNDVCRHc5OENYTzl0YVBWTENnZ2dzUVFTV0lBSkxtTTVDYXo3K2FOYnZwbmdKTi81cHg4OTJ0cldPU0lrS0lyQUVFVmlDQ0N4QmVGTm8zWTAvcmNPbUpINzJJK0F2T3R0YXU2VUVCUkZZZ2dnc1FRU1dJRVFXV1Fyd0lXQW5zQ2pHVjEvRHY0RDlaU2sxUVFTV0lBSkxFSUVsQ0lrSnJTTGdNZUN2Z2FxUWY3b00vRi9nZTUxdHJlTEVCQkZZZ2dnc1FRU1dJS1FndEdZQWZ3WDhIdkJ2d0JjNzIxcWRVaktDQ0N4QkJKWWdDSUlnQ01JMFFZN0tFUVJCRUFSQkVJRWxDSUlnQ0lJZ0Frc1FCRUVRQkVFRWxpQUlnaUFJZ2lBQ1N4QUVRUkFFUVFTV0lBaUNJQWlDQ0N4QkVBUkJFQVJCQkpZZ0NJSWdDSUlJTEVFUUJFRVFCQkZZZ2lBSWdpQUlRamdtS1FJaGwrVGhXWWxXd0NZMUp3amt2ZTNLVVhGQ0pwRUlsaUFrN3B6M0FMdWtLQVJCYkZjUVJHQUpRdm8wQVFlQmxzQm5teFNKSUlqdENrSXNGQW1SQ2psdGdQcWZJdHdHN0FqN094dXdEdWlXR2hTRS9MVmQ2ZitFVENJUkxFR0lUSEJhWVVlVWYydVJJaElFc1YxQmlJWXNjaGVFVzJrS09PakdDUC9XRFd3SDJxV1lCRUZzVnhDaUlSRXNRYmlaYmZqWGJJUTdhRnZBT1M4V0J5MElZcnVDRUErSllBbUNIeXYrWFVhUnBnOTJCeHkwcEdjUUJMRmRRUkNCSlFnSjBoeHcwT0VqMzQ2QWMrNlNJaElFc1YxQkVJRWxDTW1QZ0VNZHRLelZFQVN4WFVGSUMwblRJT1MyQWVvblRjT2V3R2g0WitBakNFSitrTEx0U3Y4bmlNQVNSR0JsWnlRTXNsWkRFUEtObEcxWCtqOUJCSllnQWtzUUJFRmpwUDhUTW9ta2FSQUVRUkFFUWRBWVdlUXVaQlZGVWF6NGt3RUdQOWJBcHlud2xTN2VEUFVILzdzTC82NGc0V1lhOGE4OWFRd3B5NllJMytzSStkTVcrRk9PK1JFRVFjZ2txcXJLUno0Wi8rRFBVYk1IVUZQOERPUGZqcDJJNkZCejhNbldJYkpOK0k4QXVaRG04MFpLeUJpc3AyeVZSWE9hOTlrUzQ5bzdBbTBtM1hmWkcvaHNDOXl2VWVQNjNKYkI4bTdPa1MyazJqWnlacnZpbytXVGlZOUVzSVJNUjZ5aTVhbEpGbXVnZzl1YWdNQXFSTFlFeEUremhrS3RoVnQzWFJWSytRVWpldW5TSFBZbmdlaGZPLzRrbGhJSjFEWWlLd2dGZ3dnc0laUGlha2VjRVd0d3lxb3JwRk1NVG5mRjZqaW5VL0xBWU1TcU9ZK2VPVnYxa3l0eDB4aG8xOXZ3NTF5U3RCNkNJSWpBRXJJbXJuWVJlUXFuQTlpdHFtcDc0SHZST3JBdFVjUlp2S2hFRjdBNVJKd0UyUkhsV1JKZDJ4VzZ2aWxiWW1kYmxPY09mZGYyd0oraGE5ZENuN2VKNUthMmd0Y0xMYnRvdjk4ZTl2KzJnT2hKVkdBRjY2b3hRcjN1aUNDbWRvZmRxeXZPZTNURXVlWWI3WkhJVy95RGdyODVSdm50d0I4SmZEaEZ3ZGNlNFQyYW9qeHJkMERNZFNjb05KdGlsTHN0Z1RKTXRON0RiYmN4aHAxWXA0bnRDb0tzd1pKUFJ0WmJSVnRYc2kzQ2QyT3hJOEkxVW5XUVdxNmJzbkxyK3A2OUdwcWxOWEM5YUd2UmRwRDhkTXFPTk40LzJyTmsxRFZsb0h6VFhTOFdhdzNoUWJTWmtvejFyTW1Xd2JZMDIzeTY5ZDZpVVQxbTNIYkZiOHNuRXg5SjB5Qm9IYmxxakRMaTNLcXFhckpUS1IxSmpNcXpTYnlSdnhiaXFqbEtlYXdMUkJDU2paYTBSeEVOUXVKdDhlSEFKMXEwYTIrZXZFZTIwT054TlptMFhVRzRDUkZZZ3RaRUdsbTJxNnE2TzRWcjZka1JacUtqQ29xclNDSnlPLzdwazFUWEhVbW5vcDFvMkJ4RFpHM1QrZk5udXgxMFR4UGJGUVFSV0VMbUNFU3Z0a1FSQjZtT052VjZkRTBtbm10UEZIRzFGVzBXVW92STBrNmtiSTB4d0xEcTVEa2JkVkQvM2RQRWRnVkJCSmFRVVZvaWRVYXFxcWJqWkNNdEFOWmpKQ0RkTGViUmRncHU1K2JGM2RLeDZJTklpK2poelhRaWVoUll1UkE3ZW93V2FXMjdnaUFDUzhnNHpWRTZJaTBkdEY2aUExbzY2V2FpVEsyaWJRb0FtUnJSbHQxSjJJRWUyMncyc09td2JFUmdDVmxCMGpRSW1Sd3haOEpCNjYzRHNnWWlBNmsrcDVYSUdlcTdpWjlVTmQyeWJKSW1teEhCcXRkeTdaNG05OHlXN1FxQ0NDd2hyd1ZXQjIrdTRlclNtVE5jcDhFMVl1VWEwdnBkdXlPSU95RTl3ZG9WUVZEcHBWeTdRMFJnTTdtZEl1d0lzV0hkMkc0Q3FXSUVRUVNXVUxDaUs1aGNzUkN4RW5scXNJUE1iSEh2Q3Z0dkdibHJJN0wweWxhZFBJY2l6VVFRZ1NVSTZYZmc0YU41eWJVVW5TMUVqblprU2xEYXBMUExtaDBJZ2pETmtVWHVRcVk3bHNiQWdjOUNaSUVWcVF4bE1YcitFRWtneXdIUWdpQklCRXZJeXNoOWw2SW82MVJWTFlRcHFkQ3oxb0x2bk1wN3RSQjUrclJkbWxGZWlhdElDOXBGSUJlMjdRcENRa2dFUzlDTVFMYjI3aWlPN2FDaUtJV3dhNjBGZjdiMTRDZFZCeDB0cXJkYldsSmV0UVZFSkU4NzJ4VUVFVmhDVHRnWlkvUjRVRkdVSFlxaTVQUHVOYTFFWXNTa3JPTDA4NHB0VVFTeTFHRmgyNjRnaU1BU3NrOGdpclU3VHFkMFFWR1ViWGtxdExSNDVxWW8xNUdwcGZ3U1YrRlR2RFpTUHhaS3lBL2JGUVFSV0VKT1JkWldZaytUV1BFZkRYTUJmNUxOZk1xa3JNV3pSaHRKeStMby9LQWwwSDdEMllwRXJ3cmRkZ1VoWVdTUnU1QXBrZld3b2lpN2lIMHVXL0RjdGkzNG8xNjd5ZTRXOStZVXZxK0ZrMjRVZ1pXM2JDRnk1djE0Z3dxaE1HeFhFRVJnQ2JvUVdWc1ZSZWtJZEVqeHd2TkJvZFdCZngxWE5xYkxtc2xObnE1b0VTekpuNlR2RG4xYmhQWVNuQmFVelFuWnJ3OUoveUxvR3BraUZESXRzdHFCeFVsMFFNMzRkL2drSXNvS0RabGUwZytOSWFMcVlLQk5Oa2NReEp0RlhBbUNJQUpMeUpYSXNnWFdaU1VqdExiZ1g2UFZVcUNqYjBFZjdBRFVDSjhMQVZHMWcxc2pqc0dEdU5lUjNhaWpDSEJCRUlFbENCR0ZWbmVTUXNzSzdDSHlnbUl0Mkk3LzZKaEVQNXVsRnFjOXlVWmt0VVNta01WMkJSRllncEN3ME5xWndNaDhHNUVYRm1lYkRtUWgrblFubUt4U3R2em5GMks3Z2dnc1lYb0pyY0JJZEhIZ3oxaENhd3VSRXp0bUczSFNoY1YyL05HTjhNOVdvaWNOYlJhUmxaZUk3UW9pc0lScGh3MS9KR3Nkc1hjUFJrcnVtSy92R3duSk5KMTlnb2RyaDM5MkIwVFdZaUtuWDJqQ1AzMHRDSUlnQWt2SWl4SG1acUpudzdhUyt5aVdGZ3VOdTJLOG41QmNtV1dqdmgrT0l2eWIwVWRVVmNpZTdRcUNDQ3docjlrWlEyVGxlbGRoY0VwcE1mN0ZzMW82ZW9sZzZiZHpmRGpLTXhSS1ZIVTZvSVh0Q29JSUxLRWdSRmFrTlJQV0hBdVJidEpmTUNzUnJOam9VV2dHcDdFajFka09xYks4UUF2YkZRUVJXRUpCc0R1UE91QmtIWDBrOUpvZks5dUMwQnBGNE9oVjlMY2d1YzBFUVJDQkplUVJIVm51MkhQOVhrM29jN29wMjFPYWpVbUkwbXl6TmNyZnkxb3NRUkJFWUFuYW95aEtzNklvTFlxaWJGTVVSU3VSVUtpSkZXMUVQeGc0bnpMWE4yYnh1bnBwQ3gxRVgvQXVVU3hCRUVSZ0NacUtxK0JaYmNHczY5T3Rvd25tUmRxQlAxOVhJc0lqV2hSckcvcUwwSFZsV1dDRnQ1OXU5TFVEYkdlTXVoUHliMkM0VjFHVUhZcWliTkZ3Y0NnSUlyQUVUUWp2L0RJdEVQUVcyUXF1d1FsbW5FOUVZTFpIRVEzV2dFakxCNEdWaVdoYnBFME03VG9yRDRsaUZRNnAySzRnaU1BU2NvWldUc3FhUndJcjJlZUx0aXNOSWg4d25Hc0JIZW1kR2pQd25GdnlvTDVCb2xpRkpMRDAzdFlFRVZqQ05LWXJRc2ViS2FIV2hiNm1pN2FFQ1VGYkVrNTZkNHgzMllXK3BncmJreEJFV2dxc2J2UVh3WUxZVWF3V2NRbDV3UzIycTZxcUNDeEJCSmFnSzJ3WkVsaGJrdWpvYzBWekdpTmdHOUYzcFRXaHIvUHVZZ21zWmczcnV6R0NDTlVyc1NLUWd2NUp4M1lGUVFTV2tCc1VSVW0zMDQyVVc4aW1zdzdYeXEzUmlvNFVoTXZ1UEJCWjNUR2VVNHRvVzJNRVlhSzMraVpDWFhkRWVaY3Q0Z1YwalJhMkt3Z2lzSVNNWTR2U3lhUktVNkRUamhReDBOUDBZS1Nwb0ZSR3dkdGovSzRKdUtCeGh4MFVNM3RUZU01b2RaMk9FSXdtSlBWVzMwUnBrNUhZZ1dUbTF6TmEyYTRnaU1BU01rcWtKSkROaXFLazBzRzBST2xzTzJKMFpya2FBVy9UeUVuYjhKK1JGaXRqK3E0UW9aVkt1VFlGbnZkZzREcmI4RWNJclVrK1o3d3B6YVlVNnp0Y2tMZnJyTDZqMFVIazZWTnJsRUdDVUZpMkt3aFJNVWtSQ0JrY0lUWXBpckliYUZkVnRUdU93MnNoK3BFalhmZ1AyMDNVZVRhRmRQcXhDT2Fjc3FWd2JhMFg0QWRGMWg2aXIybHFESFRhT3dJZGUxZmcweDBtY29QQ0tiakxMNWFRYWlhNWRXM3RBWkcxSzRySU9oajRUbnZnR2FORnZKcmoxUGZXTk50ZkU0bWRXOWtTOXAxZ3pxMWs2bko3bEloSVVEeDJSQ2pEN3BDeWFJenc3TkhxS2xKT3NHUTJWc1FxcS9DL2E0eGhOMTBhdC8rYzI2NnFxbnFQbGdyNWhxcXE4cEZQV3ArQUkxYmpmSVlEbmMydWdIUGNGaEFUQitQOGJrK1NVWmJtQko0bFV4K3RJaGJiQXVXVjZlY2RKdldweHkwSjN1TkNvTjZEbjNqZjEyck4yZDQweXliWk5ZUzdVcnoyTmczcWNXK095eXJWTXRPVjdZb3ZsNC9XSDRsZ0NWcUk5RzVGVVJJWlFTYmpnRzJCeU1EdVBDb0tyYVlZZGdhaUhOdkl6R0xwWUhRcG5iTGRIWGpmZUpuN0cwbHNQVjR3TDlqT1BEV0RZQlFyRit1dXVoSDBZcnVDOEFacEM2eU5qejRocFNnRU94Z3RNbGwzQlRydmFKbk9wNHVUN3NZL1RiWTlJTExDcDdLU3ZWWkh5TWVtNGZ0dUR0UjU4QmxUZWJiZHhNNEpsZ3JaVHRRYUZJaTVTTkVnQWt1RHRpeDltWkFzKzcveFdNeC9Wd0pUUENLd0JNM29iR3R0NXVhMUZGWnVYUThUdWw0ajJPbm5vNmpLSnNFb1lHTkl1WVpHaUlKcnNZSnJjcnBEL3N6Mjh6V0gxWCtrNSt2UVMrUmd3eU9QdCtDZmpyWUJXenZiV2xQTnQ5Yk1yV3ZpQkoyeTRaSEhwUkFFRVZpQ0lBZ1pGSVlYdUhsNkw3aVlYd1MvSUFncENTeEoweUFJd25Sbkc3ZXVuV29KaUM0NTlrWVFoSlFRZ1NVSXduUW1tQjhzRWxiODA0Yko3bVFWQkVFUWdTVUl3clFYV1BHUWFKWWdDQ0t3QkVFUWttQTNzSmo0S1Nza21pVUlnZ2dzUVJDRUpBaW14RWhFYUVrMFN4QUVFVmlDSUFnWkVGb1N6UklFUVFTV0lBaENob1NXUkxNRVFSQ0JKUWlDa0FHaEZSck5hcFFpRXdSQkJKWWdDSUoyUWt1aVdJSWdpTUFTQkVIUVdHaHRSNDdIRVFSQkJKWWdDSUptUXFzTC8wSFBnaUFJYjJDU0loQUVRVWhMYUFtQ0lOeUNSTEFFUVJBRVFSQkVZQW1DSUFpQ0lJakFFZ1JCRUFSQm1GYm9kUTFXVStCakJab0RmMmNsOHNHc1hZQXQ4T25Ddnk0aStLY2UyUk40ajlDY09kdVJSYktDbjBaa041cllyU0JJZnl3Q1M4Tk9wU1ZRZWMwcFZINlEwRncwTnFBZDZBajhxUWUyRVRsZlRtT09qR1pIeVA4M2EzVGRqZ2pHMWhYMjk1bGlGN0FsejIweVhxZTlCMzNuWEZJSzBFL3F5VzYxZnE5d3UwL0hEd1J0blN4MnNJMzRzK2xyVFFld09VVy9lbERqWjlsTmRqZFQ2S2svem10L2wwdUJaUTEwaGkxUmxMQlcxOStpazVHbU5lRFE0alhLYkpHSzhTUjYzV2pPT3RUQWJCa1NqZm1PTFkvZnNSQkhxWHF6V3kzUjJ2ZGF3MnkrSmF4dHRBYytYWGxnOHgwNmVwN3VMTFZ6UGZiSGVlM3ZjckVHcXpFUWFSakdIMEZwMGtOQlpJRXRSRDhZdGlsSDlaQUxoeDZzKzEwWmVJWkNFRmpkY1p4VVk1NCtlNzZpTjd2TlYzdHBEQWpWZzRIUEZnMnZtNHVCVGphZnB6dkQ5YUxYL2pqdi9WMDJCWlkxVUlFWHlQNDBqaTNIRmRISXpkTnhrV2pPd1RQbHV1TzZFQ2dYcXdiWGE2WXc2TTVqQVdtanNOQ2ozV3BGTHArN0tkQ3BIOVNnVFdmcVBmUVV3ZXJLd0RYem9UL09lMytYclNuQ0xVbDJwTUUxTzdaQWgyT0xVdkROdkxuNEx0c05OQm0ySmRpWU9yTDRUQjBSN3RmSW13c2FrL2xkdU9FMkplSDRndXRBTnFmWlFUY2xZUlNKdGdkckFtV1JUR2VkaUtpTk55cmFIdVh2WTRYMmJTUVdrby8zak0wNnQ3UHBZTGRhc2oxS25UYkhxZVAyR0dWaFRjTDJtNEM5Z2VmWXJhRWZDOWFkTllZOTdJN2piN28xZnA2Z1A0a1dFUTFkczlZZDl2ZGFSN0R5cVQvT2EzK1hhWUVWUEdrK0VZUGJIV0s4dGdRYU1TR0YyQkl3cUNZZGpxeWJFeHdoV0xQOFhEdGpHTit1R0U0bm1ZV2ZMUW0rZjNCaDZMbzA2cW9waGhGc1Q3RVRqTldta2kyTDhPdnVTTUdweDNQZVRURit0MU5EbTk2V29QaklaL1JxdDFvUHNIWkdlSi9oR0w5YmwwVDVOUk43aWpWNHYxMGhmWUNXZnN3YTR6ZVpXcE83TTRIMnNpVktmVHdzL1hGaCtidE1UaEUyNHc4L05zZUpKbXdIWnVEZkpiR2IxRHJZOWhpZFhUNUVyNUtKd0pBRkk5UnFWTmZPbTJlMnhSTTRqWUhSYktvZFZsT1U5clU1alFpRGxtV1JpQk5PNTVwTkdvMFk0MkdMTWFvc3BBaFd2dG10VmpScDFPWTdBdTFrY2VEUGVINTlGOXBPOXpWbXlSNjBlcTVNUDFPaDljZDU0ZTh5SmJDMkpOQlo3Z3dZMzA2MGlURFowbFRMbVdyVXpVbDhWeThqOTNnamxXUUpSbnUySjJBMHFZd1VvaTJHVEhlM1lsTUd5b0lNT1FhdE9zWk0yR0Mra1k5Mm13MkIxWlZpbTlpSlAvSVY3L2Q3eU01NnpLNGN0NjFzUDFNaDlzZDU0ZTh5SWJCMkVIMktLZGlRTmljNHFzbDFwNVV1dXpSc05Ma2VZV25SY0hjbUlMSzJrZndDL0V3NXJhWXNpNGxVcjJtTjR6eXpaUU9GRXNIS1I3dlZpa3kxbytBZ3F5dk92WGRvOEE2TmNXd3NWd09CVFByVzZkUWY1NDIvMDFwZzdZb1RnUWdtYjh2bW90QmNHZE9XQ0FZVlhGdzVYUVZXVUdURnEvOXRHajF6ZXdhTk9CTU9NZFZyTm1Yb3V2bGdaMkszMnBMSnlJQU4vem9qVzVMbHJ4ZVJtRzhDcTFENzQ3enhkd2FOS3pQV290RGRwTDlUTEp1ZFZyb0d2aTJLdUdoUDBURmtnMnlGMXVObEpXN1I0TGt6T1QxSWhweVNMUVBQbWkzbldRalJxM3kxMjJ3SkxDM3F1SnY0QzVEVHpkemRyQU43U0tac00vRk1oZHdmNTQyLzAwcGdiVXVnTXJmbXFGSG5ZbVFkYXhUY2tZYkF5ZVVJcTB0akk0dlhZYldrYVhDWm5CN01sSmpRMjJKOHZROWt4RzYxRjVqWmFFdnhGaytuSzdEaVRSSG1zbnl6WVR1RjNoL25qYi9UUW1BRmMycmt1aktiZERLeWpqVUt0c1Y1cGx4UE5XU3o0U2F5cXpCUlp4cnB1ZHZ6eklnekZXMFRnVlg0ZHB0cEg2cDFaTUFXeHo3VExjOUduYmJUcGl3ODAzVG9qL1BHMzZVbHNEWSsra1NUVGlvelZvZVk3UkZMcEFSMzRXSHg3aGp2a01zTTYvRVNER3BKdk9zMXBtRnNXaHd1bThrSVZxUEcxOHhGdEUxUGtZSHBicmZaRUZqWkhtQ2xHaFZzVHZPKytSd0VtQzc5Y2Q3NHU1UVRqVzU4OUlsZzBqSnJqQmZkbW1PSGtlM29WV09NVVhENGM3WEV1RWF1UmxuWnpCMmpsY0JxekpBVGJjNWdaOU9vNFRVYnlVM0l2RU5ISGRkMHQ5dHMyTC9XNzlhdGtmM24wb2NsS3ppc0dYeXU2ZElmNTVXL1N5ZVRlNnpEZW9PN1JYSk5McUpYa1NwOGR4S05JSmRIYitnMXRCN1BzWFJ3ODdFSDdSa3NCeTNMSXZSWWpDNmRQMnM0bXlrYzh0MXVDM0dBWlUzREgralJoOFhLYXE1RlB6VmQrdU84OG5jcENheU5qejdSUXV5RmlGdDEwaUZuYzhRUzdXaU5uVWsyZ2x5dDUyak9VY05OOTM3Yk0zRHZ4Z3kzcXc1QXliRGpUbmlVTmMzSmQ3dk5sZy9va25mSWlKMXE4VXpUcVQvT0szK1h0TUFLVEEzR211ZHQxeUNDa0tvNkRoNUkyWlVEZzlvV3BjSjNKOW5RY3VXb0c3UGNjT09OVVBVNDJ0U2pFZWRqMUZGUDVMdmRacXNkMlFya1BYSkZwcVlIcDF0L25GZitMcFVJVnF4RWNEWnlOODhiekVpYnExRlRjNEtqNE5EbmJVcXlBZVhDQVdTcTRlb2hXVndoR0xFSXJPbHR0NFhhanJvejhCNTZqR0NsVzdiVHJUL09LMytYMUM3Q2pZOCswUmhITFd0MWpsRytzU1BLS0xnalJXUFBSVjZkNWl3MzNIZ0NxejJIOVpsUFJsd0kwenBpdDdrbjIxSGJlUFp2MDlnV2NtMjdtUkJZMDdFL3ppdC9sMnlhaG0xeEd1L3VhZWlrdDBReG5wMXBHSHN1cGh1eVBmS0x0V1pndHhoeDJuVW1BbXQ2MkcwMjJsSW1PdWxNbkpTUTdXVU9pUkpyQjJFNnp6WGQrdU84ODNjSlR4RUdvbGZ4c3NOT3graFZwRWJlbm9EaHhEdjBOTnNPSUpzQ3F6bU9nMjNYc1JIcktZS1ZqVU50Zzl1L3d6dUZuV0szT2JmYmJBbWVyaXkzM1h3KzBTQ1pzazAzZWpYZCt1Tzg4M2ZKck1IYUZ1ZmxwbVAwYWx1VVNrOWtaNXVlUnNKTldXaTRpYmFsZUZNMHVUWmlQUW1zYkhTS2tkWXBkWWpkNnNKdTgxbGd0V1JBWUdWN21VTzZaZHVWWmh1ZWJ2MXgzdm03aEtZSUF6c0hXK0pFSEtaYjlDcmEwUnE3RXpUbTdoUWRSYjQ3MTVZNDc3ZDlHaGh4TnNSZ1Z3YkxvMHZzVmhkMm02OXR2amxPMjIzWHNUMmsydWEwZkticDJoL25uYjlMZEExV0M3SERyOU4xN1ZXa01ra21sTmloazlHd05RT2p5V2dHc2l1T3VPcWFCa2FjaldmVnlzRzI2Q3dhSUhhYi8yMStXNXkrUkhZUVNuOWNFUDR1VVlHMUpjNklicm90cG8yMmV5Tlo1OUNkWW1QSzVnaFdxNFliN3lpSGR2U3hyaWZiaTMzVGpRUmtza05wakZBZWVwc21uYzUybTQwMnIzVmROOFZwdHpzellBdTJITnV1MWdKcnV2YkhlZWZ2NGdxc3dPSjJ2UzVJemhYYm9oaHhzdE5iK1NDd3RIQ3dWbUF2c2RjaWJKMG1ScHlOVGxHcloyM1JlUmxNZDd2Tmh2MXJXZCtSRmhDSGk2dENpMTVwZlFiaGRPMlA4OUxmbVZLOGFTalQ3VGlPSnFJZnJaSHNLQ2xlVHAyZE9YWUFXdFJ2TS9FUElkMk1QcUpEK2JRTldNc2ROVTBSNnFlSjZGbk94VzV6YjdmWmFrdGFSckIyRURzcFpqcmxadFdwM1dxOXdIMjY5c2Q1NmU5TWFUU1E2U3F3ZGtTcDRGVG12YnQwTUJMT1ZQU3FNZEJnNDIwbDNxcWp1bzFYRnJZOGVWWXJvR2JvdnQxaXQ3cXcyMnkwSlMybmczZkY4UVVQcDJsZjAyVUg0WFR0ai9QUzM1blNiTGpUVFZ6Rk9sb2pGZWNRVk43V0tJN2Ftb1ZPWGV2cGdlQXV3UzF4M25zNytsdU1XU2hINUdTU0RyRmJYZGl0bG1XanBmMUg2dnoyeHZFeld6Vm9WL2wyQm1GM0J1cXJrUHZqdlBSM01kZGdiWHowaVNheXQ4TXNYMGZCNldiTXpmVUJzdFk0SFVrOGNkYU1QMUsxQnhnTy9Ca3ZhclVZZmU1MEtaUkRuak5GUGgzNlcraDJtNDEybEs3QTJnWmNpRk1lV2cyMDlKckZYY3NJMW5UdWovUFMzNWxTYkJ5SmRzQ0ZSS3lqTmRJcGg2NFlvNUttTEJoTlU1eDMzcUxSZlhhVDNpTFdYQnR4UHUwZ3pLVERFYnZWaDkxbVk0RFZuYUlOdFJEN0VPSWdXelVTVjgwNmJyTmE3aUNjenYxeFh2bzdVeHJHbDY4T041M1JtTmFqNEhoRzBaaERCNkFGWGZoM3RlVExzUTFOZWRMVzQ3V0xkSksxV29sK2xGR0gySzF1N0RZYkhWZGo0Tjg3WXRpTE5mQm44THVOQ1piZFZyVGI4WmFQT3dpN1U3emVkT3lQODliZm1kSXd2dWtrc0tJZHJhSEZicUZjVGpWWXllejVhYnZKbjZSMytiUjROTjUwaUJidDhnS1JjOEtJM2ViZWJyUFZscllST3lsb0tuUUV4SldXZlVlKzdTRE14RkZBMDFWZzZkcmZHZEw1OGY1dlBEWWRCRmEwb3pVNk5CSVB1WFRVbWI3K0x1QWcrWEVJYmo1bGNNOUdwSzA3RDhwaHV0cHROcU1EYU5pZUhzYWZra1hyZm1NNm5VRTRIUVZXM3ZvN2swNk1UODlvY2JSR0xHTHRTQW8ycnE0Y05OeDRJNE5nMXR2bU9OZHB3citMU0MrNXJsSnA2OTN5ckhrbnNBclpick1oVExSaWQ4Q1h0RTlEMjdYR2FEdDZGc1BpbTBWZ1phMWlvNDJDT3pTdXlPWWNPT3A0TzFJU2ZjZDR5VVNiOEVlekhzN1RVZEowUE9SWnN4UGx4Vzd6c3VOS3AweTZRc3JhVmlEMm9LVlA2ZEpSZmVXN3dOSzF2ek1oeEdKYmhrZkJvWlhabklJSTBvdW82TUNmZXVGZ0RHTUk1c2ZxeUVNajFsc0VLeGRUSWwxaXQ3cXgyMngxWExIRWtTMmtUUVFUa25ib3pCWnkzV2FiQ3NDV3hOK0p3TXFZODRtV29tQnZsaHZYemh3MDNHUWJtQTEvaE9wZ25JNVByd0tyVUhZUWRtZm9IamF4VzkzWWJUYmEvTlk4RVFKNlRhM1NHRVZrNTJzdU9mRjNJckEwWlZjZU9NRk1PcVpVR2xnWC9qVVhXMkowT25xTVlqVWw4Rjc1NEhDMExOZndyYy90WXJlNnNOdHNQV08rUkZuMG1uaXpTWWZQVkdnQ1MvZitMcDdBNm83MWdoc2ZmYUtSd3R5NUVPMW9qVnc1a0V3Y3ZaR3BlZTJkeEU1TzJrSitaVVhQSnpHbzVZNmFuV0szdXJSYnJaOHZuOFZWUE52Vm81MTJwMm1YalhIS290RDY0N3oyZDRZRWJweVBqVHRkdHVWUkk5UGI2RFZlRXNjdDZHOTlpdXdnRkx2TkY3dlZ1LzJMUGJ3NWtJeEVPcEdSNmRnZjU3Vy9peGZCc2szREN0MFNaUlRjSGFWQ2JSbzVwRmhIUzJUaTZJMU1ybDNvSUg0VVMwOEpTSnZ5eUlqektWK1gySzJzT2N3bHRoemFhR01TYlZHcjk1bHVBa3YzL2k2ZXdPcUtvY1FMdFVLampZSXprU0F2Rkd1TWV6ZmxXY050SjNZNGUwc2VDU3k5R2JHZXoxMFR1ODI4M1dyNTNJVWcxSnQxK0V5WmlGNU4xLzQ0ci8xZHVsT0VUUVZXbWRHTzF0aWRoY3JNOXRsbXNScXVGcVB1OWpqdFJrL09JRi9DME5uWVVTTjJxMis3emNhZ1lycFBOZXRWWUUyMy9qanYvVjA4Z1JWdkpOTk1mdVI3U1hja21vMEZ2OWs4ZWlNYmdpS2VNMm5KZ3hHU0xZOEUxblRkblRTZDdGWUVsdjVwaWxLMjNhUWZHWnhPL1hGQitMdVlBaXR3MW1BOFkyc3BrTXFNdHZnNkc2UGdSQnBNYzVZYXJsYnYyaFhuV2kxNVlNVFQ4UXpDZURheU55Qm9tc1J1czI2M1dyWjVxd2oxakxWSG9yVEhkSmxPL1hGQitMdEVEbnR1bndZVjJnanN5T0VvT0pGRzA1aWxocXVsZzgySGFjSjhXb3VTNjZuTWJRSEJzQU4vUXRrTFlyZFp0ZHRDYVVmWkVyalpIZ1JZTXl5d3BrdC9YREQrenBCbUF3Nk8wSnJ6dkNLM3hUQ0tiRHFjcml3NTZteGxQODRIWjlDY3BiTElkTDFsV2d4RzJpM1hKWGFiVmJzdGxNaUFIZ1pQbVdCSGpQYW9sUytaRHYxeHdmaTd1QUpyL3pjZTYwakE2TGJsY1NVMnhSaDFaRHZaWXJiV2MyUnJaTkFWNTUxYXBya1JheWtHTTkweGJrdkIyWXZkNm5NZFZpR2wrdWhPMFY0eVVhYlphSStGM2g4WGxMOHpKUGk5blFrVXhKWThyY1FkT2hrRlo5TlpaSG9IWVNoNm55Yk1sODRtbHp0cW91VjZhaGU3MVZVbnI3Y0JWcTdMUHB2K1pWZU12bFByTWkzay9yaWcvRjFDQW12L054NUx4R250SVArMmljWUtwK2JpcUpDdU5CdWRIcDJybnFjSjQ0MlE5RFJGbU1zZE5kdWkxS3RON0RacmRwdU5kcSszWGJOYStKZHNDSTF0VWNyVWxxSDJXS2o5Y2NINU8wTVMzOTBlNTkrdEFSV2ZUOXRFZCtsb0ZKeUl3R25LY01QdHp0QTdkZVhZQVJiQ1NENVg2MmIwR0wyYWpuYWJqVGFmanljQnhQTXYyeklzY0p1SUhrM2Rtc0ZCU0NIMnh3WG43eElXV1B1LzhWZzc4WGRDTk9GZmFaOFB5am5XRVJlNVBPaTJJOE1qNFd6dElFeTBjVGFTdTJrVWF3NUhTZmtpQnJkRkdabTNpOTFtMVc2ejBYSGw2MUZMOGZxbFBSa3N5NzB4ZkY0bWJhVFErdU9DOUhlR0pMKy9QUUVqdFBKbTdvaHNPSXNkSkw5OTBvcSsxbkFrNnVTYThyVGh0cWZRcUxPQjdDRE00bWhPSTBFOFhlMDJHKzFJYjIwK0dZRVZieTNXcmd6WXhzRW9nN1F1L05HclRGTW8vWEhCK3J1a0JOYitienhtQXg1T3dCQ0RqdkNneHRFSksvNDFPN3VBNGNEMWd5RmdhNUlGYWRYaEtEaWVrMnZTeUFpeUxiQzY0elRTWEcwdHpxY3B3bXp2cUltVklUMVgwYjNwYkxkYWRvTFo3cml5d2ZZRTJzNWUwcDh5cytLUGlPMkswUTR5T1RVWWZxOUM2SThMMXQ4bEc4RUtabmZmbkdBRENvWlFMNUJhTnRUR1FBVUdHOGR3b0hGSGNyUk5TVnhUTC9semtuVnlXalRjWERuWWVJMTBCOWxkTDJBbGY0NWlpRGZGWk5QNFhpMEJ1MjFNUVN4bnNneW1zOTFtb3kzbHM4QktaTXFzT2FRdnNxYlkvaTRRZldPT0xkQTNack1jODcwL0xtaC9wNmlxbXRJUE56NzZSREQwMkpSQ2craU8wWUUxQlNvcldhVzlPZXlha2JMcU5nY0tzVEdHZzdIRmVEWWI2V2ZrYll4aG9NR3pwT0tKb0VqSDBPeU1VSWJoSXFLSjJMdjJ0a2Q1NStDT3VuUWR4M0FjeHhZc1g1c0c1UjZ0bkswaDVSTnZQVnE4ZDk2WkFVTlBwVTBFN1NsUmtSSHBlazBKZGpvN0U0Z1dwQ3Q4cDZ2ZGFsbUdrYzdFaXpWS0R4MVVkTVhweExyUTc1RTZCeFBzazRMcmFycEQ2c1lXd1I2YVNDekNIcHdXekpWSTFYdC9YSkQrYnY4M0hzdU13QW9SV2R2UVIyS3pkV0dOdXdYdEZ6ZHEwYmxrNHJtNkF1K2ZxSkJKaGQya3Y2NWdSNHB0SmZ6OUVtRUwycSs3dU1WK05MeldOcUt2TDlJVGl6TWNMWnJPZHBzdmJXazd1WitTMVZwb3BFTTcyWnNXalBmdWV1MlBDOUxmeFJOWWhuVHVIRmlUdFQyZ1ZuTVJvZzgyN0JrUktqTVRPM2UwTUtCTVBGZDMyUFd0R2I1SE9pSXRXL2ZPOU00dHJVZncrYkRUcHlNTGRqNWQ3VGFmMnBLZXB4SnRnYzQ5R3dLd0cvOGFxSWZSeHdZQlBmZkgwOUxmR1RSOGtNV0J3dTNPY0lQZUhXalFTdURQYU9jOE5ldlVzV1Q2dVRJbExMbzByTDlzM0R2Zk9wbDhjRGpaV0hzMVhlMVdCSmEyQklWR0pxWXl1d1BYWDBkdTg4SGxVMzg4TGYyZFNlTUgyaDM0dEFRY1VndnBSVk9DNnlxNlF2N001WWhUQzJQTlJIU3BLd3NOVnl0SHRaUGtrNHZxVVdCcDZiaXM2UE5RNEhCYnpFWm5NbDN0TmwvYWt0NU9PSWhYN3gwaGZWRTYvVkd3L1hmb1ZGVHB2VCtlbHY0dXJUVllBQnNmZlNLUmtWOXd3V1hvQXVQd2wra0srYk9ieUF0Q0JVRVFCQ0ZWZ292V1F6ZE5oUFpKM1NIOVRsZVlxQ2dFcEQvV2tJd3VjaGNFUVJBRVFSQnV4U0JGSUFpQ0lBaUNJQUpMRUFSQkVBUkJCSllnQ0lJZ0NJSUlMRUVRQkVFUUJFRUVsaUFJZ2lBSWdnZ3NRUkFFUVJBRUVWaUNJQWlDSUFpQ0NDeEJFQVJCRUFRUldJSWdDSUlnQ0NLd0JFRVFCRUVRQkJGWWdpQUlnaUFJSXJBRVFSQUVRUkJFWUFtQ0lBaUNJSWpBRWdSQkVBUkJFRVJnQ1lJZ0NJSWdpTUFTQkVFUUJFRVFnU1VJZ2lBSWdpQ0l3QklFUVJBRVFSQ0JKUWlDSUFpQ0lBSkxFQVJCRUFSQkVJRWxDSUlnQ0lJZ0Frc1FCRUVRQkNHdk1TWHo1WTJQUHJFTjJCSGpLelpnUnBiZllRL1FrdUp2TzRETjBnemVRSS8xMnhLbzQwVG9CbllET3d1d1hscUFwckM2MkJsNFg1czBYV2x6d3JTMXJZTmh6eDlLRjdCT3Fqa3o3UC9HWXpILzNaRGt4WGJ1LzhaalNrQ1lCTmtOS0lIUGpCeTg0OE9CZTI4UCtidjJrR2NLLzZ3TGVYNXhpamV6TTFCR2VxcmY5Z2oxMngxV3Axc0RmOWNZRUloN0M2aWpWd1AvdlM3a2ZSOE92TytPZ0hNVnBNMEowOWUyZ3M4ZnFWOFVjWlZEVXAwaWJBejU3dzZkdkV0VG1Hb25ocUovT0NBY09xUUo1R1g5dG9mOTIyNXVqa1EyQTFzS1lHUzlKL0JlT3lNSWdNMkJqaURSc2pzWTZGQXVoTld2SUcwdTBudnZDYlNaYlFWWXIxcmFsaDU5dHA3OGRxRzFtd3ZBTHFKSERHL0NsT3dkTmo3NmhGV25IWEJqbVBPTGhTMHdBaFZ1UmEvMTJ4eEhRSGNIbkdOTGhNNHhIMGZYTytJTUFteHhCaEtoVHFFcDBKRjBCUDUvTDdCWW1ycTB1UWpzQ1BpQW5RbTJyK2xzVzNvZERIUWh5d2EwN2hQM0JtdzlLYjlwU3VGbXpUcXN5TWFRQmlhTlM5dE9SUTlsMlJSbzVQRkVYeGVwcjhmVFd5ZVhxTGlOMXhHRWo5QzNjL1BVbHlCdExyeDlGREphMnBaZUJaWkVyN1RGUm9wVHJla0tySFlkalVxa2NXa3ZzTnAxK0V5eFJKODFMTHFRcngxN1k4akFJUllQUzNPVk5pZUliUkUvMmlya2dGVFdZR2t0Wm9KVEZscXA5L1k0OTlxUjRQWDJKakV5YlFwYzl3TCtkUzdobngxeDNqMzgrNUYyUmphR2ZlZENsR3MyUnJqZWxtbFN2eTFoMzJ1TVVoKzdvamlvU04vZGxtVDVXZ1AxSGZydmU4TTY0a1RmZFF1SnJaZEs5RDJqUFh1MGR3OXRhOUhXNGx5STg5dG81UmpPcmdTdXNUZEtXOTZWNERQc3lVS2IyNWJBTzdRa1dLYzdnT0VJZFJISm4reE5zQXhDZmRLMk5NdHRTNFMySHEzTkpOTk8wbW1QV3R0V1B2anRwamdSckVUS1B0cTZvbVRxTGQxMzNaWmtHejRZdy9jbDR0ZkNQOE1CUHoyYzRQZmpMZ2xJU21CdGZQU0owTEM1YmY4M0hrdFhLUWNGeis0MHI5TWNFc3JyaXVNTTQ0a0dhOEJRckFsRWNJSkNMT2lBUW5lanpJanhYaTJCeHRlRWZ5MVk2QTZXRHQ3Y0pyNGxiSFNzOE9hVVQyTVVKeFA4WGp0djdncmNuWVNoV2hNc3kyelZyelZCMFJmcU1IY0d5aUZZRnNIb3cyYmUzQUVXVGtmZzM0THZ2RHVzdkNPVjcvYXc4bTBKR0gxWFdKMWFrK2pjYldHT0tOaWh4dW9NZ3MvVUVkTFJSM3JQYU04ZWZQZGdCQ2I0YjR0RGhPcU9LTzF0TVc5T0s5bTRkY2R1Y0MxUHZCMjdXNk04UTdBT2JBRTczeFdoTExkeTg0THp6V0YyR0Z4L3RqTUxiVzRuTjYvVDJCeG0yODJCNTQvbG5QY0UvRW93TFVwb09RVHQvbUNZUHduLzd1SVk1UkdzajUweHZxZkVLTGVnLzlvU29jNjNCcTdmbUVZN1NhYzlhbTFiK2VDMzQwVmJGMGVwNThVaDk5aEM1RTBOeWRSYk91L2FIbmlQZFdIM2lPUVBRbi9iSGVWN3V3UHZ0RFhzZDd2RC9IM3dzNTAzMDNMTWlQRzlod1AzYlUra2YwdzJndFdzWVhTak9XUWtaazNqT3FHaXdCcEhjVFltOE54N0F0K0w5MHloVGk3WUNHMWh4cncxOFBmdFliL2JFNmpBaDdsNVdpRzRnNlVyNUx1Um5FUjNpRkhFb3FNQTZyYzU3TjI3WWtRUWc4KzlQY3lSV2dPL1RlU2RHaE1NczF2RHZtTU5kUDRQaDlWM2UrQ1Q2UFJSUjRUdkJuZXZ4T3VZbXhLc3UwaURCMnVFZCs4T2E2Tk5jY29zL0pwZGdicElkUDFDWTVUeTN4NndzZTZRanE0bHlqTjBoNzIvTGZEN3pVa01HTkp0YzAwaHZ3MFZ2VnVqM0NPMERvSTVqZFlSZWYzY3d5SDMyQlp5N1lmRC9FOXpqUEpZRi9MZDVnalBHbnEvOEhMYkVXaUhIVkdlTWJpNzBoWkJJQ1RUVHRKcGo1bXdMVDM3N1VTaXJaSHF1VHZDNEdSYkJIK2RySDJuOHE2MkNHMnRNY2E5US8yc05lU1p1OEsrc3p0S09ZUmZiMmVZRFRkSHFZdjJNRHZVVkdBbG1nb2hrUkhpanBCcmFOVUJoNnZjY0lVYXIrRnVDM3ZHZUpHWmR1SW5LZzNkalJNTXFjY2JUZThPYVdCTkVlb2c2RXdiWTR6aUd0TTBWTDNVYjFPVUVXand1a0doRzl6NXREbkNxRFBSOTJrT0VXT0pyRC9yQ0l0bVJMdlBUaExmdFdxTElRYUNFYklkTVo0OVVZSFZuWUFERGkvM3JoZ2orM1RiVENMUHNET0dRR25SYUdDZ1JadHJpbElldGpqMnRUY2tPaEp0elZkN2dnSWpVYkhkbEVUZEJhTkc4ZHF6amNoSk9wTzF4VlRibzlhMnBYZS9uY2pBT0ZZOWQ0UTh1elhDNENWWis5YnFYVU1IQ2QxeElvdldDSU9KV0FPNFJMK1hsazlMV0dBRjBqTzBSR2hNcVJBY0NhUTZFb25tRER1U2lEaEVxc3lXRUJWcmpmSmN3Y2hNTjhtbGVyQ0dHRys4blRwZE1hNEJOMCs1YkluU1FKTGQvYWZYK2cwUGY0ZlBtVzhKaVhCc2ovSDdqaVRhVXJ6ZGs0MFJETDRwcFBOTmwrN0FxSEI3Rk1jU2FTMWhVNExPcURGSysycU8wdmFDNnp0c1VkcEVNc0l1MGZMdmlOR0IyYUtJOW1TRVFxYmJYRFN4RnlyQ095S0lsNmFBZ09wSTBUOGtVcCtwMmtkTG9OMTFrOWhPdysxcHRwTlUyNlBXdHFWM3Y1M29zbzU0OWR3ZUpiaVFiTDFwK2E3SkRoSTZFbXhUOFh4a0xIR2ZHWUVWN25UMmYrT3hWTGZ2QjQwMHRBTnUxTUFaeGxzejFCU2pzRUtuZDdyREdrR2tVUndrZjR6Q2xzQjlPaEp3ZW8xUlJyMHRJYjhOUnNZaWpSQ2EweHdGcFpPZVFjdjZEUmU1d2ZuNjBNOWkzcHlMajJWOGlVU2tXcEl3MUs0SWpqdllQb1o1TTU5UU9nVFh5S3lMOFB4YlV1d29vN1dOU0tIejRMUklOMjlPKzVDRXNOdVJaTjBuSTRadENYWUNMU1MzeVNQZE5oZHRXbU5IU0JSa2N4VC9rT2pBcGpGS2RDMzhHZUpGWW1PTjFGdkMvTXEyTkFkZXliYVRWTnVqMXJhVlQzNjdJNEY2YmsvQW5teHAxSnVXNzVxTVQwdGtNSkZvWHhCcnNKYk1ScG1rQkpZV2VUYUNVYUt0WVJYWm1JYlJKcXF1WTYzQjJCUGlNRzB4bnFzNXlRNDdrdEVtc3c0b3ZGRTNjZXZhbEtEanNjYjRYcjdXYnlKclllTDkzcHJBaUNYNGpFMUpHR3FrOVNvZElaMzB0b0RRMGlLaUZUeDlZR2VVVVdZeXpxTXh3bmRDSFhEb2pyd3R2SmxjTDk3SU9OSnVuaFlTWDN1V2FQZytVclFndE8yRzczcmFrMlI3MXFMTlJYcVdKdDVjMDJTTE12alNhcDFnUzRJRHBkQm4zUnVoM05vVDlIdlJkbjlkU0xHZHBOTWV0YmF0ZlBMYjhXdzBsaCtNbHZNdFdmdlc2bDJiVXhna0pCS0ZUVWF3UmRxRm1KU29Uem1DbFdJMEloZ2xDbGZLMWhRNzRaWTBueWs4NGtJY1lSQzZlRFdabkRlTlljYVg2SHZ0anZEM0hXR0dzRHVrYkVQdmwyNEVTdy8xRytvOGRxZngrMlNtQnhQcDVCcWoxT1Btd0loNGQ5Z29MeEdSdFNlQjBkSHVPQkdjUko4OWxnTU8zWDFvSmY2MFNMRGN3bmZyckV0UjJNVHFCS0t0a1dzT0taL3dhRk5Ya3JhcVZac0xQc3Z1c0toSnZPaE9JcjRoV0FhNzB4ejVOOFVvdDlBRjRmSDhYakRLRjc3YmJIR0s3U1NkOXFpbGJlV2IzKzVJd3crR0RpNjcwN0J2cmQ0MTBjRnVNdE4raWZqSTBEcGZUT1Fkc3RvS3JNRDZxM1FqSE1IZGVhR2p1bDF4SEw4V2pTdmU3M2NFUmluaHV3MWpDYXhrRXdvbU0xVVViWTFCYzVUS0RhNGxDRTZGTktiNGZIcXYzMVJFMzVZa2Zwdm9vc1o0STYrdWdDSE9DS2tIYTRMdm1zd1VSSHNLN1RMYVBjSWRjSGdrTHA3VGl0Um1raDJOSnpLNkRCVlN0Z1NjY1dPYUVhaXVOTnBzVjlpZnpVUmZpMmhOb1p4MmE5ZzVkY1VaUUNRcU1xSkZFcEp0SjZtMlI2MXRTKzkrTzlIMVY0a3NVbStKTUFoSXR0NjBmTmRrQndsYWJlYUlKZGlha3UwYkRhazRuUlRXWHdYWExVVmF5eEJwNUppc0tFZ2xsTjhZRW5FSmY2N2RVWjRwM1NtdlJJeDJWMGlqdENWUXVUWnVEc08yYU5DcDZLMStVeEY5b2V0UWRpZFJCdkVNZjF1WXVObEM1TVNsb2FQOTdnU01QeEZuM2hKeTdaMHBDS3d0eEY1L0Zib2RQblRMZVdPU285NmdBRWdtQWhUUEFWb0R6OThkcFJPSU5KV1F5a1lVTGRwYzZHL2JRK3hwVjVxK1lVdUlmVy9YY0tUZWtXQzVOU1pvUXgxcHRwTlUyMk1tYkN0Zi9IWkhDb09nMEhjUFBtZDdHdldtNWJ1bU8wakloR0RibXF3SU5pVHAvQkoxT3NGa2VxRk9JVkxlaU80MFJFdTZJODNnVHJmMktNOFZOS3JHQ1BkSlpDUzFMYXp5YldHR0hPMlpnZ2Z6N283Z1hLTzlaekRYVWpBQlh6cnBHZlJZdjkwcGlMN21KTnVHTlFFaDJCSkJ6RGZGNmF5N2liOHVxamtzNGhhdGN3MysrOE5FWDJBZDYvZmRVYUlWa1RyYW5TSHZzU3ROcDVWSVhjWHJCSGJ4NWpiN2FJdHdiUm84aHhadExuVDBhd3Nic0VYeUcxMGhkZEVjdzBhRHU1Y2Z6dkJJUGRyenhmSjdqWEVpV0ltMmszVGFvOWEycFhlL25VZ2ZHRzkzY2JCT0kyMitTTmErdFhwWExRWUptUlpzR1l0ZzJXSjhKNWdmSm5qeWROQXB4TXJyRXBvOE1ObVFiS3JzaVRGU0NZOEViQWxUN1IwaFVadGRFWjQ1ZUl4QytEYjZuU0hsdERlc005d1MrTHRtM2t4T0dpMGFFNDJ0SVIxb2R4cUdxcGY2YlVuZ21SSnBIOTFSSE1FT2JzNkczUjd5dXoxaDlST01kclpFR05rM2h6bm80TE1ITTNFL25NVHpOMGE0ZDFQZzNyc0NkUnRwN1VOWG5HZmZFM2pPN1VuVWZXaW00bUNialZiR2tmSWQ3WWp3TFBIcUt0SWFuMkJaV2dQdjNwMWc1TEV4eEVhM1pMbk4yU0xZdmkzRWIyeUxFQTNvRHZGTjRmbjRnbTIxSzBvWnBETlM3MHFnM0VJSG9qdWl0TkU5RWQ0bGxYYVNUbnZNaEczcDFXOWJrL0RiMFFSRHNLK0t0ck0xbVhyVDhsMzFzUDZxSzBKWjdTREpYWVNLcXFvUi8ySGpvMCswSkh1eHNFYlpGTllBZG9kMVRwR21Wb0pwNm1NMXF1RTQ5MzZZMk5sc3d3MXpjVmpsWElqUUtXd1BFMlBCYzQ1YW9yeDdOUEhXUXVRczFNRXR3SkU2d09Fd1liS1Y2Rk12d2QxSWlSd0pvc2Y2VGVTWkhvNFRFVXEwUTdWRjZLeUMwYmptQ1BYVEhxWGNkd1IrRTc1RmV6ZkpMY2h0NU9ZMUN1RWRjQmV4cDl5aXRjbG96eDV0YWpQVTJVYXpsNE1KaXVXdENUenpyZ1RhV2xlRU90OGJJOXBEakhhWnpUWVg2amZDOHl0MWMvTVVlclMyRktzTUVpbVB6V0dkU3FMMkVhbmNnbEg1NWlnQ2NXY2MzeFdyblpCR2Urek9zRzNsazk4T3R0VjQ5ZHdkNGhlNjA2aTMzUnErYTdTemdyY24yTGJXaFFtamFFSThYRkFHMXc0bjNXZnMvOFpqcVFtc1JObjQ2Qk5NYzdhUitCbG5naUFJZ2lBVUFQRUVsa0dLS0MyQ3lRUDNTbEVJZ2lBSWdpQUNTeHVDaVFPdFVoU0NJQWlDSUlqQVNwOWc3cXhkSkxjVlhCQUVRUkNFQWlmdE5WaUNJQWlDSUFqQ3pVZ0VTeEFFUVJBRVFRU1dJQWlDSUFpQ0NDeEJFQVJCRUFRUldJSWdDSUlnQ0lJSUxFRVFCRUVRQkJGWWdpQUlnaUFJSXJBRVFSQUVRUkFFRVZpQ0lBaUNJQWdpc0FSQkVBUkJFRVJnQ1lJZ0NJSWdDT0g4L3dNQUlrOE5nQXZQWmdFQUFBQUFTVVZPUks1Q1lJST0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJGSURPXzJfMSIsIkZJRE9fMl8wIiwiVTJGX1YyIl0sImV4dGVuc2lvbnMiOlsiaG1hYy1zZWNyZXQiLCJjcmVkUHJvdGVjdCJdLCJhYWd1aWQiOiI1MzQzNTAyZDUzNDM1MzQzNjE3MjY0NDY0OTQ0NGYzMiIsIm9wdGlvbnMiOnsicmsiOnRydWUsImNsaWVudFBpbiI6dHJ1ZSwidXAiOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlfSwibWF4TXNnU2l6ZSI6MjAwMCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0IjoyMCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjozNTAsInRyYW5zcG9ydHMiOlsibmZjIl0sIm1pblBJTkxlbmd0aCI6NiwiZmlybXdhcmVWZXJzaW9uIjoyfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIyLTA3LTAxIn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMi0wNy0wMSJ9LHsiYWFpZCI6IjRlNGUjNDAxMCIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFpZCI6IjRlNGUjNDAxMCIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJBbmRyb2lkIEZpbmdlcnByaW50In0sImRlc2NyaXB0aW9uIjoiQW5kcm9pZCBGaW5nZXJwcmludCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyNTYsInByb3RvY29sRmFtaWx5IjoidWFmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX0seyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19zdXJyb2dhdGUiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwiLCJiYURlc2MiOnsic2VsZkF0dGVzdGVkRlJSIjowLjAsInNlbGZBdHRlc3RlZEZBUiI6MC4wLCJpQVBBUlRocmVzaG9sZCI6MC4wLCJtYXhUZW1wbGF0ZXMiOjAsIm1heFJldHJpZXMiOjUsImJsb2NrU2xvd2Rvd24iOjMwfX1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInRlZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJ0ZWUiXSwiYXR0YWNobWVudEhpbnQiOlsiaW50ZXJuYWwiXSwidGNEaXNwbGF5IjpbImFueSJdLCJ0Y0Rpc3BsYXlDb250ZW50VHlwZSI6InRleHQvcGxhaW4iLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOltdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFFZ0FBQUJJQ0FZQUFBQlY3Yk5IQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUF5UnBWRmgwV0UxTU9tTnZiUzVoWkc5aVpTNTRiWEFBQUFBQUFEdy9lSEJoWTJ0bGRDQmlaV2RwYmowaTc3dS9JaUJwWkQwaVZ6Vk5NRTF3UTJWb2FVaDZjbVZUZWs1VVkzcHJZemxrSWo4K0lEeDRPbmh0Y0cxbGRHRWdlRzFzYm5NNmVEMGlZV1J2WW1VNmJuTTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlrRmtiMkpsSUZoTlVDQkRiM0psSURVdU15MWpNREV4SURZMkxqRTBOVFkyTVN3Z01qQXhNaTh3TWk4d05pMHhORG8xTmpveU55QWdJQ0FnSUNBZ0lqNGdQSEprWmpwU1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJajRnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJZ2VHMXNibk02ZUcxd1BTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZJaUI0Yld4dWN6cDRiWEJOVFQwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOTRZWEF2TVM0d0wyMXRMeUlnZUcxc2JuTTZjM1JTWldZOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXpWSGx3WlM5U1pYTnZkWEpqWlZKbFppTWlJSGh0Y0RwRGNtVmhkRzl5Vkc5dmJEMGlRV1J2WW1VZ1VHaHZkRzl6YUc5d0lFTlROaUFvVFdGamFXNTBiM05vS1NJZ2VHMXdUVTA2U1c1emRHRnVZMlZKUkQwaWVHMXdMbWxwWkRwQlJrSXpNVEkyUmtFNE1VSXhNVVUxT1VJeE1VWkZOamhDUmpJM01qSXlOQ0lnZUcxd1RVMDZSRzlqZFcxbGJuUkpSRDBpZUcxd0xtUnBaRHBCUmtJek1USTNNRUU0TVVJeE1VVTFPVUl4TVVaRk5qaENSakkzTWpJeU5DSStJRHg0YlhCTlRUcEVaWEpwZG1Wa1JuSnZiU0J6ZEZKbFpqcHBibk4wWVc1alpVbEVQU0o0YlhBdWFXbGtPa0ZHUWpNeE1qWkVRVGd4UWpFeFJUVTVRakV4UmtVMk9FSkdNamN5TWpJMElpQnpkRkpsWmpwa2IyTjFiV1Z1ZEVsRVBTSjRiWEF1Wkdsa09rRkdRak14TWpaRlFUZ3hRakV4UlRVNVFqRXhSa1UyT0VKR01qY3lNakkwSWk4K0lEd3ZjbVJtT2tSbGMyTnlhWEIwYVc5dVBpQThMM0prWmpwU1JFWStJRHd2ZURwNGJYQnRaWFJoUGlBOFAzaHdZV05yWlhRZ1pXNWtQU0p5SWo4K3BEL3pCZ0FBREJCSlJFRlVlTnJzWEFWd0ZNc1c3VUNDRTRJRkN3NEJDZ251QkNuOFEzQUtkM2QzTHlnY0NxZHdUK0h1cm9VR0owQndLZHpkMHI5UEYzZXFwM2Yya2ZkNDJkM3c5bFIxWUx0N1ptZnUzTDV5YnM5Nk1ET1NpOVpCdFArSmxvbjl0M0JEdEsyaXpSVHRzZFdFMnFLOUVvMy94OXVybjdJd0ljZ3RHSnNHbVRBUDBSS0w5bFMwYU13TkZlR2krVVlYZndhTEZ1aVdodzJnUEQvdzU1cG8vbTU1V09JNkJQUlJ0Tmh1V1ZqaWt5ZlV5Rm5mbmpadFdsYXlaRW1XTFZzMjV1L3Z6K0xFaWNNNDUremJ0Mi9zeG8wYkxEUTBsQjA5ZWxUKzZ5UkkyYnh4dEllb1c3Y3UzN2x6Si8veDR3ZVBDSTRkTzhaYnRtenBERS8yeHFFQ3FseTVNcjk0OFNML3AzajgrREZ2MGFLRlF3WGs4Vk5BM3BHcHA1NmVubXpObWpXc1dyVnE4dlByMTYvWitmUG4yZkhqeDluVnExZGxlL0RnQVh2MzdoMTc4K1lOOC9iMlp2SGl4V01wVTZaa09YTGtZRm16Wm1YRmloVmp4WXNYbDhkamZsQlFFQXNMQzR2c0pmWTIwaldvZE9uUy9OV3JWMUlEWnM2Y3ljVk5XczZMSFRzMjkvUHo0MElZUEYyNmRGd0l5SEplK2ZMbCtiNTkrL2p0MjdkNW8wYU51SWVIUjlSY1l0R2lSZU1WS2xUZ3UzYnQ0cjE2OVRLTnBVNmRtcmRwMDRhdldyV0tuenQzamd2TnNWeFN3bGh6b1MxODY5YXR2RStmUGp4Nzl1ekdPUklsU3NSNzlPakJzMlRKRXBsQ2lqd0J4WTBibHhjcFVzVDRuQ0JCQW5tVFo4NmM0YjhEYU02WU1XTjRpaFFwL2d3ampTYzllZkprL3ZuejUxL2UvUHYzNzdtd1Fmemx5NWNSOG5BYk5temdCUXNXakxwR3VsKy9mbXpJa0NGTTJCZWJNY1EyaHc0ZFloY3VYR0FoSVNGTWVDZ21CTVRDdzhObGl4OC9Qa3VjT0RFTENBaVFjVkpnWUNBVEdtbjVQY0hCd1d6Z3dJRk1hRmZVTU5MaWhyandVRFpQSEpveGFkSWtYcWhRb1g5MDNreVpNa2w3WmhVcWZQejRrVGRzMk5EMU5VZ0VnV3pac21YTXk4dkw2SU5iSHpkdUhKczllellUSHMzb1Q1SWtDUk5MUkViVUdUSmtZTDYrdnJKZkdIaXBUWGZ1M0pIdVh4aHlkdm55WmRQM05HM2FsSFh2M2wxcW1BcUVCZnBjbDlHZ0prMmEyRHpacFV1WG1neXFXRGE4YTlldWZQLysvZnpUcDA4Uk5zNGk5ZUN6WnMyU2JsNzl6dDY5ZTV2c0c1eUFTeHBwdUc0ZDRpa2I0OUdqUitmQ0huR2hUZngzZ2RDZ2Rldld4cmtSTngwOGVOQVlSM2poY2dKYXZueTVLU1hJbHkrZk1WYTRjR0V1MU43eVpwODhlY0pQbkRqQnhiTGtFeWRPNUNOSGp1Ump4NDdsQ3hZczRMdDM3K1kzYjk2MEt5aWNVMFRueHZmZ09PRDY5ZXV1SmFCa3laSVpGdzAzTFd5S01RWXQwdkgyN1ZzK1pjb1VYclpzV2JzUnM5cHk1c3pKdTNYcnhvWFhzeFRVd29VTGpibFl2a0R0MnJWZFIwREN4Um9YbXp0M2JxTWZrYTRPcEJ2MmdyeFVxVkxKdUtaTW1USThUNTQ4UEduU3BEWnpNSTc0UjRjSUYrVHhtSU9sTEhJOUhpTkdETmNRa1BBMjhpSlZTZ0pQWE1XWEwxOTRqUm8xVE1jaDkycmZ2cjFNT2U3ZnZ5L25xSUR4RlY2TXIxMjdsbmZzMkpFTHIyY2NDKzFER3FMaStmUG5QSFBtekhJY0dvUTB4T2tDeXBVcmw3dzQyQXQ3M2d3MkNVbW9Hcy9BeHZ3ZEx3WmdQbzZEVWFaellYbnBzUlljQnNaY1FvT2c3ckE3eU1ieEdjdEROOExxRGZYdjMxOG1vZllBTGFCbUR6aStiOSsrcG5PcWVQandJWThWSzViemJWRE1tREdsNTBIa2pNOGkyT05mdjM0MUxSSDBVWGEvY2VOR201dkYwcG94WXdhdlZLa1NqeE1uanVuOHlOS1I4STRmUDE0bXFUcTJiOTl1YUVtWExsMU1ZNGl6bkM0Z1ZZWHh4UFNiS0ZxMHFERytaODhlRzgzcTFLbVRGQnpOU1pNbURXL1FvSUcwTjJBTzlaUUVOZzdhb2VMYXRXczhZY0tFY2h4WnZncVJDN3BPSEhUNDhHSFR4ZUZHN2RtSkxWdTJ5SWlheG12V3JHbVp1MUdHdjNMbFNzUGdJdUJjdkhpeGFRNWlKVnJpNEo5VS9LYWgvbmNFdEdiTkd0TkZ3YzNhc3cvd1dPcXhNTG9SQlphYW1tTG94RDR4a3lvQmgzakxhUUx5OGZHUmRzQmUwRmFuVGgzVDJOR2pSMDNMVTAwUENFZU9IT0h6NXMyVFFvZDkwZ0ZOcGVDeVo4K2VwakdSRU12K3FsV3JtdXlVMHdRa3NuUFRCZTdZc2NNWUsxR2loSTB4Vm8yd3ppeENNR3FRU2Exa3laTDh5cFVycHJsaFlXR0dsOUt2QVdFSCtpbnFQbnYyclBNRXRIZnZYdVBDNEtHb0g4Uzh5Z2pDbXlIMm9YRjRHQlh6NTg4M3hWV0l0bGV2WHMySERSdkd2Ynk4WlArMGFkTk14OEJtMFRISXZRaWhvYUZHckFVZ09WWWRnVU1GaFBnSFFJSkpmWWlEd3NQRFRUY1RHQmhvaks5YnQ4NDBCZzJnTWQwTEVWQzlzTEpuMDZkUGwvMDVjdVF3OWRlcVZVdjJueng1VW41V0hZTERCSVFZYU1LRUNieGN1WEpHWDdObXpXeHVybUxGaXNiNG5EbHpUR056NTg0MXhwRE4veFdhTjI4dTUwRW9Lb29WSzJaajdKR2VvQTloQWtEcGgwTUZwS3N0cUZRZDFhdFh0NnNkNnBLRWNWVngrdlJwdWJ6dTNyMXI2a2NDaS9sSVJBbjM3dDJUZmQ3ZTNxYTV5TlhRSHhJU0l1MlkwOXg4Z1FJRjVBM3BzVXVwVXFXTU9ZTUdEYkoweVdqMTY5YzNqY0d6cVJVUjFaTWgvYUFrVndYT29Xc2hqRDc2R2pkdWJOSmlod3BJdHdsRWVXYk1tTkdZTTNUb1VCdGFBc3NUWTNuejVqV05nWXpYdndQcHh0T25UNDA1MEZUMFQ1MDYxWlI3cVlhWkFMb0V4NmRQbjk0NUFvSzdWWUdMVnNmVm13QnUzYnJGNDhlUEw4Y0NBZ0pNOUN2SzB4akRjc0RPRDRRTXFLZkI2TU1KcUFrdWFBOTROOVZUWWg3T3F6S1hDQ2FkbW1xQTRnREF5MkRuaHJvMDlBQVNPUlB4T1RDczM3OS9ONDNERTJITUNzK2VQVE1KQ0o0UWN4RWVFTFp0MnliN2tIOFJRT1U2VlVEd1lvaDYxZG80b3RoSGp4N1oyQnhLYkRHdWh3R1V0OEhRUnBUVVI5QUpCcEVBZ2VNY1dGWUVhSmdWSyttVVpCV0cweXF2UXFKSmM4QWU2cUNZaFJxRUJNS3RiZHUyTWd6UW8yakM0TUdENVh4NE1iMmFRUXduQUNQdFZBSEJJRU9Uck5oQmRWZUhIZ1lndWlaWC9LdFdwVW9WbVRMb214Z3doZ1JXNWJ2UnQyalJJcU52OU9qUnpoTVExTmRxa3dHU1VsUWlTTFAwYWdTOERwRnN4QjlEKytBQlljZ1I1eUJPMG5sb25UYlJjejZFRytoRFVHbEZ1emhjUVBBazRKc0pDT3l3NzRmR3NVeFFNOWVUVW15TndUaVdGNHozWHdIR21WSUtOQ3haTlRFR3lVWUF6WUUrbEowSWFnbktLVXNNNm94Z0R2YUYraERpNndRYUFJTk9jMEN6V3VIRml4Y20ybGIxZ3FpLzRWaC9mMy9UUGlUYXdRYlFIR0l0bmM0b3Fva2dhbGFiTjIrMnVUbDRKa280clJKVzNIeUhEaDNrMHdhTjRldnJ5NE9DZ21SZFh3VzhJOFZSYWxQdEV5WEd3UHIxNjEyRGNvVU53ZEt4QXVoUmVxcDZpUnBBanZhclBZNG81UkNRb2V0enNOd0l0QVVHZGd5Y3Qwc0k2TlNwVXphQ09YRGdnTHc1bFgxRU1LZWlYYnQyeGppTUtiaHFCSGZRTUxYbWppV2w3dUNBOFZhL0h6UXVnV3hnNTg2ZFRSeVVVd1VFUWFpRXZPNis2OVdyWjFPTlFBMmRPR1NWZUZNQjBremRmSzdXLzlXS0NobHVnUFpSUjZUbTd6QUJnZm9ZTUdDQWtTNVFBOTJobDN1QVZxMWFHVGRoYjljSEFVdVN6Z2Zxd2lyQVJHbWFvRzZMY2NsTm5LQS9rRnhhUmNBd3ByVHBFaEd6WGx0SFdJQXlEWmFIQ2hRVmRVSU9jWk1WaFF0dGRWa0JZWU8zRlVCWFlLY0h6UVBEcCs3N1FXNUdaSmdWbFVMY1RzcVVLWTA4RHB1b2FLNzZNSDZESEl0OEFjR0RxSUFuZ1dDb3FFZHo5TFFFMFREdG9xY3RMR2lVOUNJdTh2VDBsSDBVOHlEaXBtQlZOZUMvd2YwNFpvbWgrb0NjS0gvKy9LWitWRHAwQ2dRYnFiRDdUT1dPSUFERVFlaFQ1eWRQbmx6MmdmcWdhcXBPMkNOSi9ZMEtodU0za3VOcFlwOFFYTDVWQVpEU0FOM20wRzRRTllmRFRuMzAwUjRpMkM5OFJvQnBWU0J3YVFFaHc5YzVJWld2VnJldTZGdjBxR3dORC9maHd3ZEQwM1NLbGtnekVpSVloU2p6S2dJSU5KV0dvR29vT0J4YUtsYWxZNlFXTkFhYWdvQXl0RjQ4UkZ4RUtRVTBORXErcXpGaXhBaDUwMnJ0akdpU0ZTdFcyQ1hXRURsYjdkQlFqVHZaTFNTa1VmSnRIM3U3WWVIVjFOd0tXTEpraVRFSHlTZ0tmd1JLT0ljUEgyN2FJWUlzZnRPbVRhWThMOG9LQ0c0ZTlLa1YxTW9EZHI5ZXVuVEpwZzZtOGp1a1VRZzAvNlYwd3ZrQ3dxWW5KSjlxZ1JFdUhLVWZOUUpYOHpWNEsvSnlxa2FoZlAzSHZ0UkxYa3N0U1lQL2dWZlQrV3JheGtMQ2dmQVFYZi9SYnoxYmVidFJvMGJaRkJlSnJ3NE9EcGFWV0FoVjMrRHB5TGVlMzRrV3oxbHY3dVBOWm1Gd21aK2ZIL1B4OFdFaSs1ZHZQK1AvSWlTUWJ6ZzdFZS9kUDAzeGk1K213RS9pM0hmTHdTN3VRMEJyM1hLd2k3WHVIMWl5RC9rRFN4REtDOUZxdU9WaGd4by9aV1BBL1NOdkZqL3k1cUZKemYwemdkclBCUDVmZ0FFQWJNajMwdzN2c3hjQUFBQUFTVVZPUks1Q1lJST0iLCJzdXBwb3J0ZWRFeHRlbnNpb25zIjpbeyJpZCI6ImZpZG8udWFmLmFuZHJvaWQua2V5X2F0dGVzdGF0aW9uIiwiZGF0YSI6IntcImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlc1wiOltcIk1JSUNpekNDQWpLZ0F3SUJBZ0lKQUtJRm50RU9RMXRYTUFvR0NDcUdTTTQ5QkFNQ01JR1lNUXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0F3S1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ3d05UVzkxYm5SaGFXNGdWbWxsZHpFVk1CTUdBMVVFQ2d3TVIyOXZaMnhsTENCSmJtTXVNUkF3RGdZRFZRUUxEQWRCYm1SeWIybGtNVE13TVFZRFZRUUREQ3BCYm1SeWIybGtJRXRsZVhOMGIzSmxJRk52Wm5SM1lYSmxJRUYwZEdWemRHRjBhVzl1SUZKdmIzUXdIaGNOTVRZd01URXhNREEwTXpVd1doY05Nell3TVRBMk1EQTBNelV3V2pDQm1ERUxNQWtHQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdNQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjTURVMXZkVzUwWVdsdUlGWnBaWGN4RlRBVEJnTlZCQW9NREVkdmIyZHNaU3dnU1c1akxqRVFNQTRHQTFVRUN3d0hRVzVrY205cFpERXpNREVHQTFVRUF3d3FRVzVrY205cFpDQkxaWGx6ZEc5eVpTQlRiMlowZDJGeVpTQkJkSFJsYzNSaGRHbHZiaUJTYjI5ME1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRTdsMWV4K0hBMjIwRHBuN210aHZzVFdwZGFtZ3VELzkvU1E1OWR4OUVJbTI5c2EvNkZzdkhyY1YzMGxhY3FyZXdMVlFCWFQ1REt5cU8xMDdzU0hWQnBLTmpNR0V3SFFZRFZSME9CQllFRk1pdDZYZE1SY09qencwV0VPUjVRem9oV2pEUE1COEdBMVVkSXdRWU1CYUFGTWl0NlhkTVJjT2p6dzBXRU9SNVF6b2hXakRQTUE4R0ExVWRFd0VCL3dRRk1BTUJBZjh3RGdZRFZSMFBBUUgvQkFRREFnS0VNQW9HQ0NxR1NNNDlCQU1DQTBjQU1FUUNJRFVobysrTE5FWWVuTlZnOHgxWWlTQnEzS05sUWZZTm5zNktHWXhtU0dCN0FpQk5DL05SMlRCOGZWdmFOVFFkcUVjYlk2V0ZaVHl0VHlTbjUwMnZRWDN4dnc9PVwiLFwiTUlJRllEQ0NBMGlnQXdJQkFnSUpBT2o2R1dNVTB2b1lNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1Cc3hHVEFYQmdOVkJBVVRFR1k1TWpBd09XVTROVE5pTm1Jd05EVXdIaGNOTVRZd05USTJNVFl5T0RVeVdoY05Nall3TlRJME1UWXlPRFV5V2pBYk1Sa3dGd1lEVlFRRkV4Qm1PVEl3TURsbE9EVXpZalppTURRMU1JSUNJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBZzhBTUlJQ0NnS0NBZ0VBcjdiSGdpdXhwd0hzSzdRdWk4eFVGbU9yNzVndk1zZC9kVEVEREpkU1N4dGY2QW43eHlxcFJSOTBQTDJhYnhNMWRFcWxYbmYydHF3MU5lNFh3bDVqbFJmZG5KTG1OMHBUeS80bGo0Lzd0djBTazNpaUtreXBuRVV0UjZXZk1nSDBRWmZLSE0xK2RpK3k5VEZSdHY2eS8vMHJiK1QrVzhhOW5zTkwvZ2dqbmFyODY0NjFxTzByT3MyY1hqcDNrT0cxRkVKNU1WbUZtQkd0bnJLcGE3M1hwWHlUcVJ4Qi9NMG4xbi9XOW5HcUM0RlNZYTA0VDZONVJJWkdCTjJ6Mk1UNUlLR2JGbGJDOFVyVzBEeFc3QVlJbVFRY0h0R2wvbTAwUUxWV3V0SFFvVkpZbkZQbFhUY0hZdkFTTHUrUmhoc2JEbXhNZ0pKMG1jRHB2c0M0UGp2QitUeHl3RWxnUzcwdkUwWG1MRCtPSnR2c0JzbEhadlBCS0NPZFQwTVMrdGdTT0lmZ2ErejFaMWc3K0RWYWdmN3F1dm1hZzhqZlBpb3lLdnhuSy9FZ3NUVVZpMmdoenE4d20yN3VkL21JTTdBWTJxRU9SUjhHbzNUVkI0SHpXUWdwWnJ0M2k1TUlsQ2FZNTA0THpTUmlpZ0hDekFQbEh3cytXMHJCNU4rZXI1LzJwSktuZkJTRGlDaUZBVnRDTE9aN2dMaU1tMGpoTzJCNnRVWEhJLytNUlBqeTAyaTU5bElOTVJSZXY1NkdLdGNkOXFPLzBrVUpXZFpUZEEyWG9TODJpeFB2WnRYUXBVcHVMMTJhYis5RWFESzhaNFJISllZZkNUM1E1dk5BWGFpV1ErOFBUV20yUWdCUi9ia3dTV2MrTnBVRmdOUE45UHZRaThXRWc1VW1BR01DQXdFQUFhT0JwakNCb3pBZEJnTlZIUTRFRmdRVU5tSGhBSHlJQlFsUmkwUnNSLzhhVE1ucVR4SXdId1lEVlIwakJCZ3dGb0FVTm1IaEFIeUlCUWxSaTBSc1IvOGFUTW5xVHhJd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBT0JnTlZIUThCQWY4RUJBTUNBWVl3UUFZRFZSMGZCRGt3TnpBMW9ET2dNWVl2YUhSMGNITTZMeTloYm1SeWIybGtMbWR2YjJkc1pXRndhWE11WTI5dEwyRjBkR1Z6ZEdGMGFXOXVMMk55YkM4d0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dJQkFDREl3NDFMM0tsWEcwYU1pUy8vY3FyRytFU2hIVUdvOEhOc3czMFcxa0p0am42VUJ3Uk02am5taXdmQlBiOFZBOTFjaGIydnNzQXRYMnpiVHZxQko5K0xCUEdDZHcvRTUzUmJmODZxaHhLYWlBSE9qcHZBeTVZM20wMG1xQzB3L1p3dmp1MXR3YjR2aExhSjVOa1VKWXNVUzdybUpLSEhCbkVUTGk4R0ZxaUVzcVRXcEcvNmliWUN2N3JZREJKRGNSOVc2MkJXOWpmSW9CUWN4VUNVSm91TVBIMjVsTE5jRGMxc3NxdkMydjdpVWdJOUxlb00xc05vdnFQbVFVaUc5ckhsaTF2WHh6Q3lhTVRqd2Z0a0pMa2Y2NzI0REZodUt1ZzJqSVRWMFFrWHZhSldGNG5VYUhPVE5BNHVKVTlXRHZaTEkxajgzQSsveG5BSlV1Y0l2L3pHSjFBTUgyYm9IcUY4Q1kxNkxwc1lnQnQ2dEt4eFdIMDBYY3lEQ2RXMktsQkNlcWJRUGNzRm1XeVd1Z3hkY2VraFlzQVd5b1NmODE4TlVzWmRCV0JhUi9PdWtYck5MZmtRNzlJeVpvaFpidmFiTy9YK01WVDNycmlBb0tjOG9FMlV3czZERis2MFBWNy9XSVBqTnZYeVNkcXNwSW1TTjc4bWZseERxd0xxUkJZa0EzSTc1cXBwTEdHOXJwN1VDZFJqeE1sOFpEQmxkKzd5dkhWZ3QxY1Z6Sng5eG55R0NDMjNVYWljTURTWFlyQjRJNFdIWFBHanhoWnVDdVBCTFRkT0xVOFlSdk1ZZEV2WWViV0hNcHZ3R0NGNmJBeDNKQnBJZU9RMXdEQjV5MFVTaWNWM1lnWUdtaStOWmZoQTRVUlNoNzdZZDZ1dUpPSkVOUmFOVlR6a1wiXX0iLCJmYWlsX2lmX3Vua25vd24iOmZhbHNlfV19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAxOC0wNS0xOSJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMTgtMDUtMTkifSx7ImFhZ3VpZCI6IjY5ZTdjMzZmLWYyZjYtOWUwZC0wN2E2LWJjYzI0MzI2MmU2YiIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiNjllN2MzNmYtZjJmNi05ZTBkLTA3YTYtYmNjMjQzMjYyZTZiIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ik9uZUtleSBGSURPMiBBdXRoZW50aWNhdG9yIn0sImRlc2NyaXB0aW9uIjoiT25lS2V5IEZJRE8yIEF1dGhlbnRpY2F0b3IiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6NSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9LHsibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQ21EQ0NBajZnQXdJQkFnSUlVTzNyVlp3K1lJd3dDZ1lJS29aSXpqMEVBd0l3Z1pjeEN6QUpCZ05WQkFZVEFrTk9NUkF3RGdZRFZRUUlFd2RDUlVsS1NVNUhNUkF3RGdZRFZRUUhFd2RJUVVsRVNVRk9NUjh3SFFZRFZRUUtFeFpQVGtWTFJWa2dSMHhQUWtGTUlFTlBMaXdnVEZSRU1ROHdEUVlEVlFRTEV3WlBUa1ZMUlZreEZEQVNCZ05WQkFNVEMwOU9SVXRGV1NCU1QwOVVNUnd3R2dZSktvWklodmNOQVFrQkZnMWtaWFpBYjI1bGEyVjVMbk52TUI0WERUSXpNVEV3TnpBek5URXdNRm9YRFRNek1URXdOekF6TlRFd01Gb3dnWmN4Q3pBSkJnTlZCQVlUQWtOT01SQXdEZ1lEVlFRSUV3ZENSVWxLU1U1SE1SQXdEZ1lEVlFRSEV3ZElRVWxFU1VGT01SOHdIUVlEVlFRS0V4WlBUa1ZMUlZrZ1IweFBRa0ZNSUVOUExpd2dURlJFTVE4d0RRWURWUVFMRXdaUFRrVkxSVmt4RkRBU0JnTlZCQU1UQzA5T1JVdEZXU0JTVDA5VU1Sd3dHZ1lKS29aSWh2Y05BUWtCRmcxa1pYWkFiMjVsYTJWNUxuTnZNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVBOXZNTEpRRG1uemZUZkNFRTMzWUUrTlI2aFpyeHl6OVRGb0VrNlVvOXhTN3h1OHhOZ2U1L01uVGczRVh3ZmRKaU1RVWRYSEh0M2NXQUVHTTlxYnNKS055TUhBd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBZEJnTlZIUTRFRmdRVVpjdWZTeldBbVZBSnR0QXJWUXJiR2dWRi91a3dDd1lEVlIwUEJBUURBZ0VHTUJFR0NXQ0dTQUdHK0VJQkFRUUVBd0lBQnpBZUJnbGdoa2dCaHZoQ0FRMEVFUllQZUdOaElHTmxjblJwWm1sallYUmxNQW9HQ0NxR1NNNDlCQU1DQTBnQU1FVUNJUUNERkJYTUtFV1Bkd0ZjeVpzREM3dWVRU0tCNUJscmd5TTZLaldEV1J2NkpBSWdIOFdJSk5oWnFWZmMxTFlpSStJVEhZL1BsOUM1Qm9BVlVvdjd2TnB3R08wPSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFHQUFBQUJnQ0FZQUFBRGltSGM0QUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQWNVU1VSQlZIZ0I3WjNQYnhOSEZNZS9zM2FNb0VFWVVWR0JWR0VPVUZXcWhBMGtvcGZHT1ZPSjVGUXVWWUxVSG5wS3FOUWVHNmYvQVBURW9VZzRVZys5RWRUMlZpbk9pU29KeFp3cVViVTRVZ1d0VkJRalVDc1NlNmZ6MWhnVi8wZzhzek96YTJjK2toWEhXU2Z4Kzg2OGVmUGV6Q3pnY0RnY0RvZkQ0WEE0SEE2SHcyRU5ocmh5TjV2RzFsQUdIc3NBUEEwdXZqTHhsWGtIdG4wZjk1K0lhNnZpMmczeDhkYkY5MVVrYTJYa3lsWEVrSGdJUU1hdXAvTENldUxCam9uL0tndU9ETFRDU1lDeWVOd1RmNk9FeENhSlVrSEVSQ2ZBM1hNWitQNFVlR0QwUEtKQkNNS1g0YU9JMGRVeUlzQytBR3VqRStKRHowUm85RzZVa2NCVjVGWVdZQkY3QXF5TlRJT3hPZjJ1UlRNY0ZTUlJzQ1dFZVFGV3orWGgrVGRpYi9oV0xBbGhUZ0FhV1AwaDBlTFpMUG9aeG92d3R1Wk5EZGhtQkxpZHpXQW9kVk04eTJJUUNIckQ1cmdKRWZRTFFNWlBwWmI2enVYc1RCVStIOWNkTGVrVllIQ04zMFM3Q1BvRUdIempONm1LU1Z4T2x6dnlvSXZkWVh3aWpacjRyQlJrYUVDUEFIZEc0eC9mNjRTSnoxcFAzWUFHd3J1Z1JzVHpBTHVUU1p4ZFdVUUl3dmNBY2oyN0ZZNHJZVjFSRW1HZzlJSUYxNU5KSGVucHVtcjltWGc4aFRYSUZkVlNOTkVzUUpGd0x1ak82QVBUQXFRVCs3R1IvYkduYXk5VnZrVHg4USt3REVWRngxWHJEZW91YU8zTWhJM1dQNUYrRHpGSFJFVjdwcUZJaURFZ01RVUxYRWlQSWZZdy93SVVVUk9BSWgvUk9HRVljajhUL1NBQTFUWld6K2FoZ0pvQVEwTjVXS0FQM00vLzhQSlFRREVLWXNwZFRvYnlQNzlpL1A0bmJhOHZuYnlHMk9HQlhISUJrcWlHb1hsWW9QenZmZlFORkpEUW5FQXlHcEozUVExZnB5VVBNbkRVaDZUSFJZVXhJREVZUlJZamVOSzJrUmVBOFg0SVN5TENQd1ZKRkhvQXo4RFJCV2FoQnlqOGtWMUVPbGh3Sm9HY0FKcUtFQVBOVmwzS1JuSUMxSkt1OWUrRUo3Y1NSRTRBV3AzczJCN3VHZXdCOEp3QU95TFhTT1Ztd3NFYWZVUk90NXgvWmZNUklzZGp4MlF1RDFjUml3Z3F2QXdLZlNrQVFhbnFkR0k0ZUc2OUZLa1JTUmVFU0YxUWZ2ZzBKZzZPNGNLQk1XVDJ2Rm9uSmdGS1QzL0dnbkJQaTlWbFJBYjNNektYOTBVUHlPNDlnU3R2Zm9yOC90TmRyMmtXYitoQll3RzVLUklrN3VoYkdXZUltY01Yc2ZUV3RXMk4zd3F0b3FDYXdkeVJqeEYzWXQwRHlJQ0ZveDlCbGVaNzV4OTlqYmdpT1JGREJaWWdmeC9HK0Uzb2Q4eUtYbVFOenA3SVhCN2JIbkRqK0JkZGYwYnpnRnRpb0cxV3pNamxUQjg2ajZsRDczZThmazZJUU8reEVpbDViRVBtOGxnS1FNYnN0QnF1OGx3TXJ1dnRneXU5VHE4VkhsNFBmSDlyaEVRRGRPR0k2QWwvWEVIY2tNMEZWV0NCdWFQdGcyZTE5alFvMEc4WDJWRDBROWVRSUsxTXZYNCtFTUk0UGwrWHVWd3lDdktOYi9mUDdqM1pzZlhQLzNtOXAxUkRFSUt1dDgrVXlmaGorM013RHpOWWxQZTlDZ3lUNzJLazR0KzlyL21rWHRMSjM0OFBuNEZ4a25XcHBmcHlBdFFUeG50QUp6ZlJ6YURiY1d1amZUWjhJR25CQmRVZ0ZRWEpDZkR1VHhYUWF1QStwZGRsN3FHZ2sxa2tVQ25LVjJDWlp0Sk5oazZ0M1VLNnVtcCtZWmJQN3NFZ25ZeVUzWGRTT29LaDk3U3kvdndoek1LbHQ2OHFyQXRpUm85MTZSWm16aDcrQUwzU2JSNVJlbVk2T2VkSk4wNTVBYmhmZ2tHb0I5Q2kzRlptM3Jnb1d2V0pIZDlQaHU4MGoyaE8xb3lTcUV2dmw1TVhvTEZMM09oQXZQRDR1N2JYeUFYUkxIZEt0TzV1VVA2SU1xZlJ0SDRpS2QwRDFNb3JhNk4wRUlmUkRSb1AzbGxzU3lrMG9aWmNmUHc5MWwrTUYyUnd5Z04xUzFsVDZ3OW15RVlIWWVIL3o2NUt6L1RVY2tHY0xZdTBoRkVCSm4vL0RIZmYvcWJqejhqUU12V0Jna2hIbTQrQVBLVXluRnBCSnZtOENNTnVpTVlCSGNWM3FnVXMyTmc1NmZ0RktLQW1RQkRyY3FQUkVFRXA1TW5mUHUrWVhOc0pTdDVkRnRsUHlwQ2FSOWhDOFFRVjlaSWs1L093QUJYWXlYOHZDSi9mS3pSRzVINzVFRmYvK2haV1NMQ3JVQ1RjR29lMWtTV2JweC9TWURzcnd0RlRJbVBhT2dhUXkxcCtkaWNRekdveG5rN1RHbGs1RGtYQ0NVRGJsWmdYMlZrUndkcWc1TENTaTlKR0F0TmhEdllMdjhySGNpK0lGU0ZiUHhGK1dZcVB5OWl0Sk5VUDZXZ1NYZ0FhL1Rtc0RNaXhnckdpampORjlTek1HbGtwaVA1WXdtNkJYSSszVjB2UDE3Y3liaXR4eWVhNm9jZ0l6aEQxeHBFcmFabUk2aE9BcW1XYjRoOGJhQkY0VmN4L0pwRUxLb05hMExzMmRKQkZvSmJ2SStZSHR6YTVmUzZEb2ZyTmdkblMrdEx0Nkd2NVRjeXNqcWFlUUtuWmdZaU8yRmRJN3N1Wk1IN3cyMkVhNmcwcHYvOE9kYVZXRC84U1J0WktNSWk3Z1VNckEzY0RoMVlhK2FNWldEanlUQTZheHdoM0UvSWdWbG1pMi9IVkdLano0aG1kTkNVR2EyWjVEL0xMdXlvdEl2SGFncTY0WHBZWTdQcDlRZEF6MktsR1lvOU9aTkVjUVZGb3pJTzdKcFZFTEg4UHllRnlWRVovOWQrS00zVHlTSzNXdUlFYnZHT2lGbjB3ZUwzYlptaU9KOEs0TDI3aUZqd1gvanhaTVJYQk9Cd09oOFBoY0RnY0RvZkQ0WEQwR2Y4QjlXTjIvbGRxaTNFQUFBQUFTVVZPUks1Q1lJST0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiNjllN2MzNmZmMmY2OWUwZDA3YTZiY2MyNDMyNjJlNmIiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6ZmFsc2UsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJ1diI6dHJ1ZX0sIm1heE1zZ1NpemUiOjEwMjQsInBpblV2QXV0aFByb3RvY29scyI6WzFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjEwLCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjEyOCwidHJhbnNwb3J0cyI6WyJ1c2IiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fV0sImZpcm13YXJlVmVyc2lvbiI6NX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0wOC0wMiJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjQtMDgtMDIifSx7ImFhZ3VpZCI6IjUyNGRlMmRlLTk4MmYtNDliNC1hNzY5LTJiNWUzYjczYWQ3OSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiNTI0ZGUyZGUtOTgyZi00OWI0LWE3NjktMmI1ZTNiNzNhZDc5IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ill1YmlLZXkgNSBTZXJpZXMgKEVudGVycHJpc2UgUHJvZmlsZSkifSwiZGVzY3JpcHRpb24iOiJZdWJpS2V5IDUgU2VyaWVzIChFbnRlcnByaXNlIFByb2ZpbGUpIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTcyOCwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9LHsibWFqb3IiOjEsIm1pbm9yIjozfSx7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDM4NHIxX2VjZHNhX3NoYTM4NF9yYXciLCJlZDI1NTE5X2VkZHNhX3NoYTUxMl9yYXciLCJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJzbWFydC1jYXJkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlEU0RDQ0FqQ2dBd0lCQWdJVVVjbU1YelJJRk9nR1RLMFRiM2dFdVpZWmtCSXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFEbTU1NWJXWTlXVyt0T1kwcklXSGxkaCthTmFub0NaQ0ZoN0drM1laclFtUFV3MGhrU0c2cVlIUXRQK2ZaeVMzM1ZFcnZnK0JRcW5tdW1nTmhmeEZya3dFWkVMZWlkQmNDOEM0QWc0bnFxaVBXcHpzdkkxN05jeFlsSW5MTkxGY1pZLytnT2lONlpPVGloTzUvdkJaTWJqOXJpYUFjcWxpWW1OR0pQZ1RjTUdhRUF5TXpFTU55Mm5tNkVwK3BqUDVhRjZnaTIxdC9VUUZzdUoxajJSai95bk0vU2RSdCtlY2FsNU9Zb3R4SGtGYkw5dnZ2MkEyT3Y1SVRaQ2x3NGJPUzlucHlwUWltT1o1UUFZeXRtWWFRcFdsL3BNWXo2elNqOFJxa1ZETkVKR3FOZlRLQTJpdkxZd1g2bFN0dE1QYXBnMEo4NGw5WDB2b1ZOL0ZwUzRWQ1ZBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlFnS0ZBaEc2UmFXK2hUeTUyZHhlVDhiQzk2SHpBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBWU16Z0xySkxJcjBPb3ZRbkFaclJJR3VhYmlIU1VLU21iTFJXcFJrV2VBdHNDaERFSHBYY0ovYmdETktZV29IcVE4eFJVakI0Q3llcFlldmMzWWxyRzhvN3pIeHBmVmNhb0w1U2V1Smt6SHhLbjRiVGFTcDkrTXZ3YW1ucDY0a1pNaU5iRkxrbmZQOWtZS29SSGtNV2hlUkoxVXNQMXo0U2Nta0NlSUxmc01zNnZxb3ZxaldDbEZzSnBCY3NsdVlIV0Y3YkJKMW40UndnK0FURW9wWTRJZ0d2Nlp2d2MrQTlyK0FUMmhxcG9Ta1lvQWwrQU5Zd2dzbE9mOXNKZTBWK1RBOVlZL1VsYUJtUFBUZDAvL3I5d3ZjZVBXWmtQaktvQUMvelVOaGZEYmg0TFY4R0hzM2x5WDJYb21ML0xOYzhKWXp5SWFERWhHUXZlb1BoaC90cjFnPT0iLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVRuYmJHSVIyTkh2enFJS0ZBZVF3RzFYQmlzMHdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFRWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPc1hqM2swNEJhbjRUWWR0WktxRC9PUEp4eUR5YVBtQ0JVRlVpYVpJZ1R0ZVpuajNYMjVEaGdwWlpYc0M0RDB5ZEljcmxBNndOVUluT1JML0w5ekJiVEVJTUFWTUdvNmc3VUtBbWIyTUY2QUhibmhZSmQ5ZWlrdXBWTldTaEhOWU5jNEdCZE8xWU42QWZVcXZKaEhiZTNWNFNOTVBtQlJFS0pQVno3VGh3Z21nZ1RlOFdzMkswL3dzcXYyd1NFN3BiQ0JzVVpoSVg1MWJaTTNwcUR3SlBUbVJGRXZ0MC82dEc1ZU84RjNqMTRPWHFmRWhtam4xVnZ4S0RZUU9MWkF4Q3d3Z0MwUDRDZGZXdjN5OFBTUjhJMzU0aE8xWStHek5qdklxWDM4TktMeXd1SVlIRmVyT3hObHhFTUJ2RmhZQnVSdVlBa2tnVWFQcU42VUJoc0lMcnNDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNDb1JIaGl5Tm5iblhSV0lMNlpCWG9CWDlZVE1COEdBMVVkSXdRWU1CYUFGQ0FvVUNFYnBGcGI2RlBMblozRjVQeHNMM29mTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFDUUZhZkpJMS81V2c5Q0VFaW1FMVJQNTRSZ1F3VE5UT09Rc0xBQ1RlK3JJdGxGUXpDOVpEaHJWODI4eVg3anp5K0FBc3AzaXpLN1QxdGgyZGw3bSt0dTBzdzJQYS9vbGMwMm50NlB5SXczNDhnYUh6aEkxKzBLRTQ1cXh2RkRlTDJsTXhiUGZDWXZ5RUVhWXpqaVFFTFU1OTUxcFhHV3lLTWEvNGZMdE8rWktPWGhNdVZlcTRyWERQSTU0VzZKSE9pQWFpS2Rpdys1ZTNjMmt0L2pGSVF0TTZ2TVhnOUxORnpkakVUTnQyMFZYOVFldlJwRlpmdWNNRzl3Q2FRRG9GbFB6cFRNSktoUGV2L2ltSm1aWWhLZnIwbExjZW10cWpJeExBb3FaZE9ZZkhCZzYrdkFjZFBJL2lhdUdwVUF2N1grVUtObUR3aloyQmFINHNMd2hCMm0iLCJNSUlEUnpDQ0FqR2dBd0lCQWdJVWV4OW5UOXZ3Wk5YUzQ4M0xkaVlHZncyU2pTb3dDd1lKS29aSWh2Y05BUUVMTUM0eExEQXFCZ05WQkFNTUkxbDFZbWxqYnlCQmRIUmxjM1JoZEdsdmJpQkpiblJsY20xbFpHbGhkR1VnUWlBeE1DQVhEVEkxTURnd01UQXdNREF3TUZvWUR6azVPVGt4TWpNeE1qTTFPVFU1V2pBbk1TVXdJd1lEVlFRRERCeFpkV0pwWTI4Z1JrbEVUeUJCZEhSbGMzUmhkR2x2YmlCQ01pQXhNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXUxTWV2bnk5ZHlPOVpVQzM5U29NaExjUi9EWHJ0Ri9jaU0xMnRjaXkyRVhBWjZNa3JpdlZ0Q2ZFVk05WDZJU1RFbkJQNnVTWVlvdjZwcHY2TzZKaDJOSG1ZbTR3K0puUzRWbkNQVTdtSEFNZlZJMk1HVFRNVk9ldzB4VXNHN3NJU0lrSURVQm11azhZSzljNXppYzkrdkZRR0xJa3NkWE81aVZGSWdORzUzY0dYRDRaTFpvQVBpdTBQRW96eEFxWUlhSTRneEtoT0EzUzgvVzhtSVdzdTZvZnlqNEd2a0ZHNlo3a3lGMzEwN1A3bXdGSExySTNFTmFQV01PRmNUYUdhMGR3Ky92VlJ3alJjRVpCVnN1dVQvODdja1NzMGE1cGt0M3ZaQmxhWWVUOHB6U3JlVjdtb3djSU05MEwyaWFBVGxQMG54bWFFNm5PeVRib2pGVmwyd0lEQVFBQm8yWXdaREFkQmdOVkhRNEVGZ1FVU1hFaDNzYTNidER1cm00TU0vQzdTMWxSdXVZd0h3WURWUjBqQkJnd0ZvQVU2cmRDa0o0TWUyUjYyMVI4QTdwOFRwL1lvV0V3RWdZRFZSMFRBUUgvQkFnd0JnRUIvd0lCQURBT0JnTlZIUThCQWY4RUJBTUNBWVl3Q3dZSktvWklodmNOQVFFTEE0SUJBUUI1R2MzaGFmdHA3aEtzRVpzbytpL1o1blJ1cWRtekcyV0NsVW9SVXFiYVB5Z2xuSkRqS1Iva2ZnT2w2aWJiRi96dGhtM0ttWFE3SGNESVAyeE1kRzdVMkwyaW1iSlFIcVBmL2gySHFvamI0clpndWUrNlc0a3RTUjVlbFI5TDFyWXFFL1NHWU00aUVLb1ZRU3Y3UlQxcnhJZVdpS3N3L1Z4eGkvUU9uc3gzRjd4ODBDQ1lnQjRFM3lReDhWVFc0NDBoVEV3VEExZU1IT2l4MzJ0UHR5eUhJYThQVlZJZlZwSFFKQmFNVnZ2NTA4VUVqd2tiVTJybmpmem9TVE5TOUE1alVROG1CU3ZlOTVyakIwZG85OEVVK0R4ZEJxWDIrSDZpNXdsSUNGZ3poZHpjc25lOWhHS1Q2bHpUWDRjSWRKc3JZMit4bGVLMEZGUXk2bEdFVkxFZSIsIk1JSURQakNDQWlhZ0F3SUJBZ0lVWHplaUVESkVPVHQxNEY1bjBvNlpmL2JCd2lVd0RRWUpLb1pJaHZjTkFRRU5CUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTVo2L1R4TThySVQrRWFvUHZHODFvbnRNT28vMm1RMlJCd0pIUzBRWmN4VmFOWHZsMTJMVWhCWjVMbWlCU2NJWmQxUm54MW9kNTg1aCsvZGhLN2hFbTdKQUFMa0tLdHMxZk81M0tHTkxadWp6NWgzd0duY3I0aHlLRjBHNzRiL1UzSzloRTVtR05ENnpxWWNoQ1JBSGZyWU1ZUkRGNFlMMFg0RDVuR2R4dnBwQXk2bmtFbXRXbU1ud08zaTBUQXVjc3JiRTQ4NUh2R000cjBWcGdWZEpwdmdRamlUSkNUSXErRDM1aHd0VDhRREl2K25HdnBjeWk1d2NJZkNrenlDaW1KdWtoWXk2S29xTk1LUUVkcE5pU092V3lETVRNdDFid0N2RXpwdzkxdSttc1V0NHJqMGVmbk85czBaT3dkd01SRG5INHhnVWw1Wkx3cnJQa2ZDMS8wQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQjhHQTFVZEl3UVlNQmFBRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRTXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJEUVVBQTRJQkFRQzNJVy9zZ0I5cFo4YXBKTmp4dUdvWCtGa0lMa3Mwd01OcmRYTC9jb1V2c3JoenN2bDZtZVBNcmJHSkJ5SjFYbnF1QjVzZ2NSRU5GeGRRRm1hM21pbzhVcGYxb3dNMVpyZVhySjBtQURHMkJwbHFiSm54aXlZYStSMTFyZUlGVFdlSWhNTmNaS3NEWnJGQXlQdUZqQ1dTUXZKbU5XZTltRlJZRmdOaFhKS2tYSWI1SDFYZ0VEbHdpZWRZUk03Vm9sQk5sbGQ2cFJGS2xYOHVzdDZPVE1PZUFEbDJ4TkYwbTFMVGhTZGV1WHZEeUMxZzkrSUxmejNTNk9JWWdjM2lyb1JjRkQzNTRnN3JLZnU2N3FGQXc5Z0M0eWkweEJUUHJZOTVyaDQvSHFhVVlDQS9MOGxkUms2SDdYazM1RCtXVnBtcTJTaC94VDVIaUZ1aGY0d0piMGJLIiwiTUlJRFNqQ0NBaktnQXdJQkFnSVVSMzhtcTI2U2Yyc3pWVjJCZEc2V0VON2t1V1V3RFFZSktvWklodmNOQVFFTEJRQXdMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3SUJjTk1qUXhNakF4TURBd01EQXdXaGdQT1RrNU9URXlNekV5TXpVNU5UbGFNQ1l4SkRBaUJnTlZCQU1NRzFsMVltbGpieUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRUlnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTlkwV2I5b1BvUm9Lb1F5V1BhSnB6MTF2cldUZzZ6VHRtTmoyVm9LUm55dktHUnFwemI4M3c1bDZZQTk2VVlrWUJEUVAwaWxPMkRQZTZ3V3FWUjV6RGZSemRjSDhiaCtMN2RHR3ZhZTZoUlRaaGtGa0NwWERzNEhjY2tuckRmOEZDbEo3SGUzOUpmNDIvRzFRbTJ6ejlXV21yUFh0Z2lLL3gwNUdqc1FmR3VERzF6ZjVRVFVVaWU4bHd5bUszVGZkT3ZOZWVKQUFQZTJwbjdJdGZSYityVnJOV2lEemxSbjJ2Tm5aMndQbzR3SC9XSjZkaFhaRytyTVdUK2E2Qm9jZzFVZkl3NmtkdW5HNGJUcFp6c3ZhY0ZZeVIwbXBmK0RlT25wU1dBbXl3SldIdlRsZjJZWHhGeWVYY1RBQ2RRbGNNTkdKMlZoWlE0OHh0UDUvUkJQLzhrQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZDaHk0Mm9raXFjVFMxaXFhL0hSV2prQm40SC9NQjhHQTFVZEl3UVlNQmFBRk9xM1FwQ2VESHRrZXR0VWZBTzZmRTZmMktGaE1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQW4rUkhJUGJ0TUVETmRUMWc4SC9SaXRBa1VkTGdBdDF0V0dXbmxqOWtuYnY0LzRHbFg3QzlwNDVlZlBPOS9hWkw2T1YxWFJLQmk2S210Qlc1SzdudVlFbk14LzVCcUJTYkxUN3JoZHVDNDlUQmVNYjlQSGRYc1RsU1ZOWWVmcjFkR2lkcjRqMHhWQlFMYjFya25EQWJkV0R6S2Z2bmF5S084RnJ3ZTdIeDg0M01HL3JKK2MwWHJ1VXZiZlZUQ0hMaUlXaE03b05EaEw4eG9iNnhVbzlLTEtjU0wrSXRZc08zLzlXYjhROUdqc3FMNEZYc0RjRzFTYVloN0twZnVNbU9peHF6SlpPMm5JaWNQWVJnMUkyU3VpVWZZTzcwdG1kSGNibCtrU1FtU1l0N3JxNHZpSUxnMkd4M2o5cklUdVdUamJhVWFTU1F4Z09tTVNIdXl6TUFDIiwiTUlJRFNEQ0NBakNnQXdJQkFnSVVEcUVSdys0Um5HU2dneGdVZXdKRkVQRFJaM1l3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRREk3WG5IK1p2RHdNQ1FVOE04WmVWNXFzY3VibHZWWWFhUnQzWWJheG45Z29kTHg1c3dIMGxYcmRnamg1aDdGcFZnQ2dZWVg3RTRibDF2YnpVTGVtck1XVDhOM1dNR1VlOFFBSmJCZWlvVjdXL0UraFRaUC8wU0tKVmEzZXdLQm82VUxlTW5mUVpEclZPUkFrOHdUTHEydjVMbGo1dk1qN0p0T290S2E5SjduSFM4a0xtelhYU2FqMFN3RVBoNU9BWlVUTlY0enMxYnZvVEFRUVdyTDQvSjlRdUt0NldDRkU1blVOaVJRY0ViVkY4bWxxSzJieDJ6Nm9rVmx0eURWTEN4WWJwVVRFTHZZMXVzUjNEVEdQVW9JQ2xPbTRjcnB3bkRSTFZIdmpZZVBHQkIvL3BFeXp4QS9nY1NjeGp3YUgxWlV3OWJuU2JIeXVyS3FiVGExS3ZqQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJUcXQwS1FuZ3g3WkhyYlZId0R1bnhPbjlpaFlUQWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQXFRYUNXTXhUR3FWVlg3U2s3a2tKbVV1ZVRTWUt1VTYrS0JCU2d3SVJubHc5SzdIZTFJcHhaMGhkd3BQTmlrS2ptY3lGZ0ZQemhJbXdISmd4eHVUOTBQdzN2WU9kY0pKTmt0RGczNVBYT2Z6U24xNWNGQXgxUk8wbVBUbUliOGRYaUVXT3B6b1h2ZHdYRE00MVphQ0RZTVQ3dzRJUXRNeXZFN3hVQlpxMmJqdEFucS9ORFVBN2JlNEg4SDNpcEMrLytOS2xVcmNVaCtqNDhLNjdXSTB1MW02RmVRdWVCQTduMDZqODI1cnFEcXNhTHM5VGI3S0FIQXc4UG1yV2FOUEcya2pLZXJ4UEVmZWNpdmxGYXdwMlJXWnZ4clZ0bjNUVjJTQnh5Q0pDa1hzTkQwNWRDRXJWSFNKSXMrQmR0VFZOWTlBd3R5UG1ueWIwdjRtU1R6dldkdz09Il0sImljb24iOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJpY29uRGFyayI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsInByb3ZpZGVyTG9nb0xpZ2h0IjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwicHJvdmlkZXJMb2dvRGFyayI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzFfUFJFIiwiRklET18yXzEiLCJGSURPXzJfMiIsIkZJRE9fMl8zIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsImxhcmdlQmxvYktleSIsImNyZWRCbG9iIiwibWluUGluTGVuZ3RoIiwiaG1hYy1zZWNyZXQtbWMiLCJ0aGlyZFBhcnR5UGF5bWVudCIsInByZXZpZXdTaWduIl0sImFhZ3VpZCI6IjUyNGRlMmRlOTgyZjQ5YjRhNzY5MmI1ZTNiNzNhZDc5Iiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibGFyZ2VCbG9icyI6dHJ1ZSwiZXAiOmZhbHNlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJwZXJDcmVkTWdtdFJPIjp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6dHJ1ZSwiYWx3YXlzVXYiOmZhbHNlfSwibWF4TXNnU2l6ZSI6MTUzNiwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0Ijo4LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjEyOCwidHJhbnNwb3J0cyI6WyJ1c2IiLCJzbWFydC1jYXJkIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN30seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTh9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi0zNX1dLCJtYXhTZXJpYWxpemVkTGFyZ2VCbG9iQXJyYXkiOjQwOTYsImZvcmNlUElOQ2hhbmdlIjpmYWxzZSwibWluUElOTGVuZ3RoIjo0LCJmaXJtd2FyZVZlcnNpb24iOjMyOTcyOCwibWF4Q3JlZEJsb2JMZW5ndGgiOjMyLCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6MSwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjEwMCwibG9uZ1RvdWNoRm9yUmVzZXQiOmZhbHNlLCJlbmNJZGVudGlmaWVyIjoiIiwidHJhbnNwb3J0c0ZvclJlc2V0IjpbIlVTQiIsIk5GQyIsInNtYXJ0LWNhcmQiXSwicGluQ29tcGxleGl0eVBvbGljeSI6ZmFsc2UsIm1heFBJTkxlbmd0aCI6NjMsImVuY0NyZWRTdG9yZVN0YXRlIjoiIiwiYXV0aGVudGljYXRvckNvbmZpZ0NvbW1hbmRzIjpbMSwyLDNdfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjYtMDQtMjUiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NzI4LCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ill1YmlLZXkgNSBTZXJpZXMgKEVudGVycHJpc2UgUHJvZmlsZSkiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI2MDQyNTAwMyIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUHJvZmlsZXMiOlsiZW50ZXJwcmlzZSJdLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI2LTA0LTI1IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTcyOH1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNi0wNS0wMSJ9LHsiYWFndWlkIjoiMDk1OTFmYzYtOTgxMS00OGY3LThmNTctYjlmMjNkZjY0MTNmIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiIwOTU5MWZjNi05ODExLTQ4ZjctOGY1Ny1iOWYyM2RmNjQxM2YiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiUG9uZSBCaW9tZXRyaWNzIE9GRlBBRCBBdXRoZW50aWNhdG9yIn0sImRlc2NyaXB0aW9uIjoiUG9uZSBCaW9tZXRyaWNzIE9GRlBBRCBBdXRoZW50aWNhdG9yIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3IiwiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbInNvZnR3YXJlIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbIm5mYyIsImJsdWV0b290aCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQndUQ0NBV2VnQXdJQkFnSVVNOXpYMHlLUWo4eGdWbHoya3RBMGdsU1BxcVF3Q2dZSUtvWkl6ajBFQXdJd05qRVlNQllHQTFVRUF3d1BVRzl1WlNCQ2FXOXRaWFJ5YVdOek1Rc3dDUVlEVlFRR0V3Sk9UekVOTUFzR0ExVUVCd3dFVDNOc2J6QWVGdzB5TWpFeE1UY3hOVEU0TURWYUZ3MHpNakV4TVRReE5URTRNRFZhTURZeEdEQVdCZ05WQkFNTUQxQnZibVVnUW1sdmJXVjBjbWxqY3pFTE1Ba0dBMVVFQmhNQ1RrOHhEVEFMQmdOVkJBY01CRTl6Ykc4d1dUQVRCZ2NxaGtqT1BRSUJCZ2dxaGtqT1BRTUJCd05DQUFSUk9UTDBlak5lWDlXd2pFWVBoam1OdVl6OTM2Qm1hRDBLRVZYMEtqbGhyS1Q1NUNqT3pzZlQwSFJpN3QydUNNR0pKcG81R2hJd3NDMWNnbCtuUFdpQm8xTXdVVEFkQmdOVkhRNEVGZ1FVdUxBT25lT29ybmREbStzL1RYaHVhcG1Xd0lJd0h3WURWUjBqQkJnd0ZvQVV1TEFPbmVPb3JuZERtK3MvVFhodWFwbVd3SUl3RHdZRFZSMFRBUUgvQkFVd0F3RUIvekFLQmdncWhrak9QUVFEQWdOSUFEQkZBaUJPTDNQa29ueFIzWWk1cTFRS0JaUFBzWjBCSVQxWFdRWnFJNmg1bXA1S2RBSWhBUFhEcUV4Z3JSMTUvcSs1aXRWODZhaVVrWnZUVThwK2dRVDZHbHZRRDBVbyJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFhTUFBQUdqQ0FZQUFBQ0JsWHIwQUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUhUbWxVV0hSWVRVdzZZMjl0TG1Ga2IySmxMbmh0Y0FBQUFBQUFQRDk0Y0dGamEyVjBJR0psWjJsdVBTTHZ1NzhpSUdsa1BTSlhOVTB3VFhCRFpXaHBTSHB5WlZONlRsUmplbXRqT1dRaVB6NGdQSGc2ZUcxd2JXVjBZU0I0Yld4dWN6cDRQU0poWkc5aVpUcHVjenB0WlhSaEx5SWdlRHA0YlhCMGF6MGlRV1J2WW1VZ1dFMVFJRU52Y21VZ09TNHdMV013TURBZ056a3VNVGN4WXpJM1ptRmlMQ0F5TURJeUx6QTRMekUyTFRJeU9qTTFPalF4SUNBZ0lDQWdJQ0FpUGlBOGNtUm1PbEpFUmlCNGJXeHVjenB5WkdZOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6RTVPVGt2TURJdk1qSXRjbVJtTFhONWJuUmhlQzF1Y3lNaVBpQThjbVJtT2tSbGMyTnlhWEIwYVc5dUlISmtaanBoWW05MWREMGlJaUI0Yld4dWN6cDRiWEJOVFQwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOTRZWEF2TVM0d0wyMXRMeUlnZUcxc2JuTTZjM1JTWldZOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXpWSGx3WlM5U1pYTnZkWEpqWlZKbFppTWlJSGh0Ykc1ek9uTjBSWFowUFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdmMxUjVjR1V2VW1WemIzVnlZMlZGZG1WdWRDTWlJSGh0Ykc1ek9uaHRjRDBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5NFlYQXZNUzR3THlJZ2VHMXNibk02WkdNOUltaDBkSEE2THk5d2RYSnNMbTl5Wnk5a1l5OWxiR1Z0Wlc1MGN5OHhMakV2SWlCNGJXeHVjenB3YUc5MGIzTm9iM0E5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmNHaHZkRzl6YUc5d0x6RXVNQzhpSUhodGNFMU5Pazl5YVdkcGJtRnNSRzlqZFcxbGJuUkpSRDBpZUcxd0xtUnBaRG8zWVdZM01qQXlOUzB5WkRKaExUWmpOR0V0T1dZeVpDMHhNakZpTWpGak9EVXdPRGNpSUhodGNFMU5Pa1J2WTNWdFpXNTBTVVE5SW1Ga2IySmxPbVJ2WTJsa09uQm9iM1J2YzJodmNEbzJNalpoTkRBMVpTMWlZVGxrTFRnMU5EQXRZVGN4WWkxa05HVmpPV00zTVRVeE5ESWlJSGh0Y0UxTk9rbHVjM1JoYm1ObFNVUTlJbmh0Y0M1cGFXUTZaakkwTkRJNU1EY3RaRFZpWlMwME1XVmtMV0kxWW1FdFpqbGxPV00zWXpreVlqVXpJaUI0YlhBNlEzSmxZWFJ2Y2xSdmIydzlJa0ZrYjJKbElGQm9iM1J2YzJodmNDQkRReUF5TURFMElDaFhhVzVrYjNkektTSWdlRzF3T2tOeVpXRjBaVVJoZEdVOUlqSXdNakl0TVRBdE1EWlVNVE02TVRnNk5UZ3JNREk2TURBaUlIaHRjRHBOYjJScFpubEVZWFJsUFNJeU1ESXlMVEV5TFRFMFZERXhPak14T2pJeEt6QXhPakF3SWlCNGJYQTZUV1YwWVdSaGRHRkVZWFJsUFNJeU1ESXlMVEV5TFRFMFZERXhPak14T2pJeEt6QXhPakF3SWlCa1l6cG1iM0p0WVhROUltbHRZV2RsTDNCdVp5SWdjR2h2ZEc5emFHOXdPa052Ykc5eVRXOWtaVDBpTXlJK0lEeDRiWEJOVFRwRVpYSnBkbVZrUm5KdmJTQnpkRkpsWmpwcGJuTjBZVzVqWlVsRVBTSjRiWEF1YVdsa09qWTJaRGhsWm1OaExUTXpOekl0TmpZME15MWlNamhoTFRVM1kyUXpPR0prTnpCaE1pSWdjM1JTWldZNlpHOWpkVzFsYm5SSlJEMGlZV1J2WW1VNlpHOWphV1E2Y0dodmRHOXphRzl3T2prek1tWmpObUU0TFdZd01qY3RNVEZsTkMxaU9UYzBMV1E1TW1OaVpHVTVabU5sTmlJdlBpQThlRzF3VFUwNlNHbHpkRzl5ZVQ0Z1BISmtaanBUWlhFK0lEeHlaR1k2YkdrZ2MzUkZkblE2WVdOMGFXOXVQU0p6WVhabFpDSWdjM1JGZG5RNmFXNXpkR0Z1WTJWSlJEMGllRzF3TG1scFpEb3lZbVl3TnpZek5DMDFNVGszTFRSbFlqWXRZbVkzWXkxbU9HWm1PVFprWVdKa01tUWlJSE4wUlhaME9uZG9aVzQ5SWpJd01qSXRNVEV0TUROVU1URTZOVGM2TXpNck1ERTZNREFpSUhOMFJYWjBPbk52Wm5SM1lYSmxRV2RsYm5ROUlrRmtiMkpsSUZCb2IzUnZjMmh2Y0NBeU5DNHdJQ2hOWVdOcGJuUnZjMmdwSWlCemRFVjJkRHBqYUdGdVoyVmtQU0l2SWk4K0lEeHlaR1k2YkdrZ2MzUkZkblE2WVdOMGFXOXVQU0p6WVhabFpDSWdjM1JGZG5RNmFXNXpkR0Z1WTJWSlJEMGllRzF3TG1scFpEcG1NalEwTWprd055MWtOV0psTFRReFpXUXRZalZpWVMxbU9XVTVZemRqT1RKaU5UTWlJSE4wUlhaME9uZG9aVzQ5SWpJd01qSXRNVEl0TVRSVU1URTZNekU2TWpFck1ERTZNREFpSUhOMFJYWjBPbk52Wm5SM1lYSmxRV2RsYm5ROUlrRmtiMkpsSUZCb2IzUnZjMmh2Y0NBeU5DNHdJQ2hOWVdOcGJuUnZjMmdwSWlCemRFVjJkRHBqYUdGdVoyVmtQU0l2SWk4K0lEd3ZjbVJtT2xObGNUNGdQQzk0YlhCTlRUcElhWE4wYjNKNVBpQThjR2h2ZEc5emFHOXdPa1J2WTNWdFpXNTBRVzVqWlhOMGIzSnpQaUE4Y21SbU9rSmhaejRnUEhKa1pqcHNhVDU0YlhBdVpHbGtPamM1TURZNE16QTBOek5DT0RFeFJVUkNSVE0xT0VNeU5FTkVSRGt5UXpFMVBDOXlaR1k2YkdrK0lEd3ZjbVJtT2tKaFp6NGdQQzl3YUc5MGIzTm9iM0E2Ukc5amRXMWxiblJCYm1ObGMzUnZjbk0rSUR3dmNtUm1Pa1JsYzJOeWFYQjBhVzl1UGlBOEwzSmtaanBTUkVZK0lEd3ZlRHA0YlhCdFpYUmhQaUE4UDNod1lXTnJaWFFnWlc1a1BTSnlJajgrOGJzRTJnQUFKYzlKUkVGVWVKenQzWG1ZWkdWaDcvRnZkZmZzS3pQRElEc0lTaElVOTJnQVJWRkFweFJjNG5LcG1FMU5ZdFRFdUdhOVJuTzlpVXRRRTYvR05ScFRlTjBpTGpXaUlKcGczQUlvSU9pTmpDeUR3ellETXoxN0wxWDNqN2RMaXBvNnA2dXE2OVJicCtyN2VaNStlcWI3TEcvTmRKOWZ2WHVoVnFzaGFmZ1ZMdDVjcVA5eDduTU5vSGJocGxvYnh4WHF4emRmTnVXV2pjZVBOZjM5RjMrdTMzL3V2cis0VDNPNU5Od0tocEdVallhSE90RDJRei9wdU1acjFUb01rTFRBYUR5bjhmaFduK0grVUtrMW5WZE5PSzVWV1dvTjU3VU1xS2J2SFJKYzlkZHNZQTBQdzBqcWtlYndhWFZJMDJkby9RQnVESitrQjNyek5SdVBhVDYzSGhhTkFUSFdjSHkxNGJ6YTNQZXFIQnBpamZjZUEyWWJ6bXUrWjNYdTgzalR0ZXIzcURZYzMxeHJxcXVmVjIzeHZWOEV0NkUwSEF3anFRdnpCRTl6NkxRS2g4YUg4RGozMXphYWowdTZUbk9BMUIvNmpUV1h4dUNCQndaUTQvZWJYMHR6Y05UUHFWK251VmFVZEozbW9KMXB1RWE5N05XNWo4WmdiQzVML1d1ekpMTnBMK2NNSTZsTmJkUjhHaCswOWMvTkQrVDZjV245TWZVSGYvTXZaM01mVE9NMW04T3BWUzBzN1h2MTBCbm5nV1dxbDZYYTlQZm1RQzF3ZjAycE1aeG1nUWtlR0RiTnRhZDZMYXNlc3ZXL042dVhjYmJoN3kzVkx0elVxamFsQVdZWVNXMW9DcUpXb2RUOGpyL3hhNDNuRkZyOHVUR1lhaTNPcS9MQWtLRGgrRlo5T1BWNzF3T3E4WHF6UERBTW04dlRxc1pVdjhjRUQydzZhMVd1Y1ZxSFVxc2FUejJBR3NPcHNmbXVYbDZhdmw1dGNWNHJoL1N0YVhBWlJsS0tGcldoNXIrUEpYeHVmdGpYdjk3NDhHNE9nZVp6VzlVNjZzYm5QamRlcTlVQWdjYVFxRFo4Ymp4MnZPR2M4YWI3TklaWDQwZGpEYWE1djRtbWV6WFhtdXJuMTJ0Tk0zUG5URFc4cHViQW1XbjZldVAzbTVzM0gvRFpRTXFIaWRnRmtBWlZRbTJvK1d1TnRZd3hEbjF3US9nOWEveGE0ME82TWFpYSsyV2FtOHpxNmcvNnhudlV2MTZ2RVUxd2FDQTAxNkthKzRBYUE0Nkc0OGNhcmxXL3owVERzZlY3TllkUi9UVTExbHdhYXovMW10SDQzSGtUYzM4KzJQRDk1dXMwaGxPMTZXdU54eDR5RWsrRHpacVIxQ1NoYjZoVjgxdFNFTlUvai9QQTBLaC9OTDRKbkdpNlZxdGFUV01ZMUlPbDNoeldxdittc1ZtdThjOXcvOE8vVmNBdGJycC8vZGo2ZGFibmptbDg2RGNIMUN5d2FPNXIwdzNIdFdwbXE5ZDI2bCtyLzMxNjdweURUY2ZYajBrNnJ6R1VtbXRIOWlFTnVMYkRxRkNZcis5MkJKUXJLNEhEZ1EzQWVtQVpzR2J1dXl1eHBqa3Nrc0tvK1hPcmdCcm4wSUNxZjczNXZGWWZOUTY5Wm5QZlRLc211Y2JSZEkxbGJqWHlyYm01cjNtT1VOSzk2dGRvckptMStsNDlGQnRyYW8yRElCcURvc29EYXpqMUFRcjF6NjIrM3VxY3h0Q2k0ZnBwZzBCNlpSYllQZmZuU1dBL3NHUHU0MjVLeGQxSko0NktkbkxHTUdwV3Jpd0NmZ1U0RFhnNGNESndBdkJnN2c4ZVNXclhidUJud0MzQUZ1QjY0RnJnUmtyRmd5bm5EUTNEcUIzbHloSEFtWE1mWndDUHdocU9wT3pOQXRjQi93bDhDN2lTVW5GYjNDSmx3ekJxcFZ3WkEzNE5lQWF3aVJBK2tqUUlyZ2UrTXZkeEphVmkya1RmM0RDTTZzcVZBbkE2OENMZ2VjQ1JjUXNrU2ZPNkIvZzM0RlBBdjFNcTVuWVFobUZVcmp3SStGM2dwY0NKa1VzalNkMjZIZmdJOEJGS3hhMnhDOU9wMFEyamN1VU00RFhBQmR3L2lrbVM4cTRHYkFZdW9sUzhJblpoMmpWYVlSU2E0aTRBM2tEb0U1S2tZWFlOOEE3ZzA0UGVoRGM2WVZTdVBCdDRFL0RJdUFXUnBMNzdNZkFXNEZPVWlnTzVpc0h3aDFHNWNqcHdFZkQ0MkVXUjV0RThHVFBwYytOazAxWkxFTkhpYXdQNHk2a0lmZ2k4amxMeDY3RUwwbXg0dzZoY09RNTRHMkYwbkNUcGZsOGdoTkpOc1F0U04zeGhWSzZNQTY4Ry9vYXdGSThrNlZCVHdGdUJ2NlZVbko3djRLd05WeGlWSzQ4Z0RHMThUTnlDU0ZKdTNBQzhoRkx4ZXpFTE1SeGhGRlpNZUFPaE51UXlQWkxVbVNyd3Q4QmZVeXJPekhkd0Z2SWZSdVhLTWNBbmdDZjMvK2FTTkZTK0I1UW9GYmYwKzhidDVFenpYaWVEbzF4NUdtRjB5SlBqRmtTU2hzTGpnV3NvVnk2SVhaQldCcTltRkNhdnZwSFErVGE0WVNsSitmVlc0RTM5V29nMWY4MTA1Y29TNE9QQUM3Ty9tU1NOdEFyd1FrckZ2Vm5mS0Y5aFZLNnNKNHlQUHlQYkcwbVM1dndBS0ZJcTNwSGxUZklUUm1HZ3doWEFRN0s3aVNTcGhhM0EyVmxPa3MzSEFJWnk1V1RndXhoRWtoVERzY0IzS0ZjZUhyTVFjY01vdlBncmdhT2psa09TUnRzRzRKdVVLOUhXK1l6WFRCZHFSTjhDanVqdGhTVkpYZG9KUElsUzhmcGVYblJ3bStuS2xXT0JiMklRU2RJZ1dRdGNRYm55MEg3ZnVQOWhWSzVzSUF4V3NHbE9rZ1pQZUVhWEszMTlSdmMzak1xVnBZVGgyeWYzOWI2U3BFNGNEVlFvVjFiMTY0YjlDNk93c3NLL0FLZjM3WjZTcEc0OUF2ak0zTlk5bWV0bnplZ3ZnT2YzOFg2U3BJVTVqN0NSYWViNk01cXVYRGtQMkV6c29lU1NwRzY4Z0ZMeE05MmVQQmdyTUlRdHduOElITmJkQlNSSmtlMEZIa3VwK0pOdVRvNC90RHUwTlpZeGlDUXB6MVlBbjV4YnpEb1RXVGViL1Jsd1pzYjNrQ1JsNzVHRXJTY3lrVjB6WGJueVdNS2FjMzBaaVNGSjZvdXpLUlcvMGNrSjhmcU15cFVKNENyQzBFQkowdkM0Q1RpTlVuRi91eWZFN0RONlBRYVJKQTJqazRHLzd2VkZlMTh6S2xjZUROd0laTmJSSlVtS2FoWjROS1hpZGUwY0hLdG05RTRNSWtrYVp1UEF1M3Q1d2Q2R1VibnlGT0E1UGIybUpHa1FQWVZ5cFdmUCs5NDEwNFcxNTY0aERQK1RKQTIvTGNBdlVTck9wQjNVNzJhNkYySVFTZElvT1FsNGFTOHUxSnVhVWJreUJ2d0krT1ZlRkVxU2xCdGJnWk1wRmFlU0R1aG56ZWdGR0VTU05JcU9CWDUzb1JmcFZSaTlzVWZYa1NUbHordm5Xc2k2dHZBd0tsZWVobjFGa2pUS0hndzhkeUVYNkVYTjZMVTl1SVlrS2Q4V2xBVUxHOEJRcnB4SUdOcTNnSjMzSkVsRDRwR1VpdGMyZjdFZkF4aCtGNE5Ja2hSMFBjeTcrNXBSMkRodkszQmt0emVYSkEyVlhjQ1J6U3Q2WjEwek9nZURTSkowdnpYQUJkMmN1SkF3ZXY0Q3pwVWtEYWV1c3FHN1pycHlaUkZ3RjNCWU56ZVZKQTJ0QThEaGxJcDc2bC9Jc3BudUtSaEVrcVJETFFVMmRYcFN0MkhVOFkwa1NTT2piMkgwakM3UGt5UU52NmZQYlN2VXRzN0RLR3dyL3RDT3o1TWtqWW9qZ0VkMWNrSTNOYU96dWpoSGtqUmFPc3FLYnNMbzlDN09rU1NObG82eW9wc3dPck9MY3lSSm82V2pyT2hzbmxHNXNnYlkyVVdoSkVtajUzaEt4ZHV5bUdmMDhPN0tJMGthUWFlMWUyQ25ZZFQyaFNWSkk4OHdraVJGbDFrWW5kemg4WktrMGRWMlpuUWFSaWQyZUx3a2FYUzFuUm50ajZhN2VQTTRZVFhXaVM0TEpVa2FQV3RxRjI2YW5PK2dUbXBHRDhJZ2tpUjE1dGgyRHVva2pEWjJXUkJKMHVocUt6czZDYU1OWFJaRWtqUzYyc3FPVHNKb2ZaY0ZrU1NOcnJheW81TXdXdDVsUVNSSm82dXQ3T2drakZaM1dSQkowdWhxS3p1NjNlbFZrcVNlNlNTTVZtWldDa25Tc0dvck96b0pJK2NZU1pJNjFWWjIyRXduU1lyT01KSWtSV2NZU1pLaU00d2tTZEVaUnBLazZBd2pTVkowaHBFa0tUckRTSklVbldFa1NZck9NSklrUldjWVNaS2lNNHdrU2RFWlJwS2s2QXdqU1ZKMGhwRWtLVHJEU0pJVW5XRWtTWXJPTUpJa1JXY1lTWktpTTR3a1NkRVpScEtrNkF3alNWSjBocEVrS1RyRFNKSVVuV0VrU1lyT01KSWtSV2NZU1pLaU00d2tTZEVaUnBLazZBd2pTVkowaHBFa0tUckRTSklVbldFa1NZck9NSklrUldjWVNaS2lNNHdrU2RFWlJwS2s2QXdqU1ZKMGhwRWtLVHJEU0pJVW5XRWtTWXJPTUpJa1JXY1lTWktpTTR3a1NkRVpScEtrNkF3alNWSjBocEVrS1RyRFNKSVVuV0VrU1lyT01KSWtSV2NZU1pLaU00d2tTZEVaUnBLazZBd2pTVkowaHBFa0tUckRTSklVbldFa1NZck9NSklrUldjWVNaS3kxRmJPR0VhU3BDd1Yyam5JTUpJa1pjbWFrU1FwSHd3alNWSjBocEVrS1V1MWRnNHlqQ1JKMFJsR2txUXNPWUJCa2hUZGVEc0hHVWFTcEN4TkZDN2VQTzljSThOSWtwUWxhMGFTcEh3d2pDUkpXYXEyYzVCaEpFbkswbXp0d2szenpqVXlqQ1JKV1pwcDV5RERTSktVSlp2cEpFbjVZQmhKa3JMa2ZrYVNwT2dNSTBsU1BoaEdrcVFzT1lCQmtoU2RZU1JKaXM3TjlTUkowVmt6a2lUbGcyRWtTWXJPTUpJa1JXY1lTWktpTTR3a1NkRVpScEtrNkF3alNWSjBocEVrS1RyRFNKSVVuV0VrU1lyT01KSWtSV2NZU1pLaU00d2tTZEVaUnBLazZBd2pTVkowaHBFa0ticUoyQVVZQkt2RzRYSEw0S1FsY1B4aU9HSVJMQzdBc2tMNC9tUVZwbXV3ZFFwdW1ZSWZIWUFiRHNCc1cvc1hTc3E3VmVOdytuTFlYUTNibGg2b3dsUU5abXF3ZDI3cnVQcjM5czg5TDlTWmtRMmpCeTJDNTZ5Qlo2NkdVNWQxWGtYY1U0WHY3SVhQNzRMTEp1SGdBUDd3ZmZ4NGVPaVNPUGZlUFF2bmJ1bnROZi91S0RoclpXK3YyWW5uM2d4M1RQZnVlaTlaRHk5ZDM3dnJRWGdJM2pNRC8zMFFydGtIVit5QkhUTzl2VWN2dk9WSU9HZFY4dmYzVk9FWlc4TERmaEFjdHdnK2RGeG41OHpVUWpCQmVFTUxzSG9zQk5hT1diaDNCbTZkZ21zUHdBLzJ3WFg3Mjl3U2RVaU5YQmlkdWhSZXZSSE9YUVdGQlZ4bjVWajRaVHBuVmZqRitjUzk4SUh0Y085c3o0cTZZRWRNd05HTDR0eDdkd1lOd0JzaXZoNkE4UjVmYi9WNE5xL25oTVh3dU9WUU9pdzgzTDZ4R3o2NEk3eDVHZ1JMeCtBRmEySDVQRDhqWjY2QWIrN3BTNUV5TVZFSU5TcTQvM1BkNm5FNGNURThaams4ZCs1cmQ4L0ExeWFoZkY5b2VSazFJOU5uZFBRaStPQ3g4SldUNEx3RkJsR3psV1B3OGczdzdZZkNxdzRQUDRUU0lCZ0Rucm9LUG5VQ2ZPeTR1R0ZlZC9iSytZTUk0Tmxyc2kvTElOazRBYit4TGp5ai91OEo4R3NyWXBlb3YwWWlqSDVySFZ4K01qeDlkYmIzV1Q0R3I5OFlmcGdldml6YmUwbWRPbnNWZkczdXpWaE1GN1FaTXVldURuMjNvK2owRmVFTnhQdVBoYU1HNEExRVB3eDFHQzBiZzM4OEJ2N21TRmpSeDFkNnloTDQvSW53L0xYOXU2ZlVqbFhqOElIajRNWHI0dHgvNVZnSXhYYVBmVnJrNEl5dHVCcStlbEwyYjZRSHdkQ0cwZm9KK0xjVDIzOFgxbWltRnRwdmI1NEtJK2p1bk82OFkzRnhBZjcrYVBpekkzcmJKQ2d0MUJqaERkcW1DQSs0YzFmRGtnNStJWjQ1QWcvaCthd1pEMTBNdy80c0djb0JET3NuUXB2cktXMk9KTnRmaGN0MnczL3NnYXYzaHhFdXphTjRGaFhDME85ZlhRNVBYaGsrMnVrYmV2bUcwR0g3cGpzNmZobVp1ZkVBdlBuT2JPL1J6MUZRMjJmZ0ZiZG5mNTk3K2pncTdiTTc0VE03T3p0bldRR09Xd3lQWFI1cUh5dFQzbXFPRWQ0czNYQWcvTHozUzZkdkRzOVpIVm8xOWc3NE1MT3I5clUzZUdsZk5ieWVkZU53OHBJUU5PMTYrWVl3S09tMTI0WnpXc25RaGRIU01mam9jZTBGMGJacGVOOTIrTGVkWVVSY211a2EvT1JBK1BpWGU4UElyaGV2ZzVldU8zU2tUTFBmV1JjZW1QOTRUOXN2STFPVHM0TXpzcW9YRHRhRzYvVUFiSjN1L2pWOTdON3d3SHZ4T3Zpanc1TkRhY1VZdlBWSStJMWJ1eTluSjlhT3d4TTc3SlJmVWdoTmRWL1lsVTJaZXVVZGQzZjMvM1hDWW5qS1N0aTBCaDYvZlA3am43c1c3cHFCdjcycjgzc051cUZxcGlzQTd6d0tIalhQNElHcFd2alBmT0pQUTdETUYwU3RiSitCZDkwTlovNDB2SXVkeitzM3d2a2pOanBJOGV5dHdqOXRoM051U2g4bS9LU1ZjRWFmUm0xdFd0MjZOZUcycWZTV2cyRWVWWGZMRlB6enZmRDhtK0hwVzJEejVQem52SHhEQ0xCaE0xUmg5SkwxOHovd3R4d00vK252Mzk2YldkTDN6Y0pyZmc2L3R6VlV3ZE5jZERROEpOSWtWSTJtbjAvRGhiZWtUOWJ0OWNUYkpFbS9tNVZKK1BKa2NyL3NrMVoyMXB5VlZ6Y2VnRC9ZQ2krNkJXNmZaM0wxUlVlSG11WXdHWm93ZXNnUytOTWowby81OWw2NDRHYTQ2V0R2NzMvcEpEenY1dlIyNDhVRitJZGpRditUMUMvM3pjS2ZwOVE4emxxWi9ZUHRpQWw0UWtJTjdLdVRvVC91dXduTlhJc0s4SXdSR3NqdzdiMWg5WW5MZHljZnMzNEMvbnllNTEzZURFVVlGWUIzSHAwK0orRTdlK0YzYmd2OUpWbTU0VUI0RjVyVzdIZnFVbmpsaHV6S0lMWHk5ZDN3Zy8ydHZ6ZFJnQ2RtM095emFYWHJoODIyNmZ2TGxkWXZOR3BOM0x0bTRXVmI0WE03azQ5NTBXSHdzS1Y5SzFMbWhpS01MbGlUM2s5MCszUm9SdHZmaHhFNU54NkFWMjVOUCtZUE5vUzE4YVIrU2h1ZGQxckdEN1ZucjIzOTljcGtXS3NONEN1VHlhTXdUMThSYWdPalpMWUdyOXNHVis5TFB1YU5RMVE3eW4wWVRSVFMvME5tYS9EeXJlR2RScjljc1NmMFNTVlpOZ2F2MjlpLzhrZ1FwaTRrT1daeGR2YzllbEh5bThWTEd6cnNkODdDdnllVWNReDQxZ2cxMWRYTjF1Q1BmNTY4RVBOWksrRzBJVm50SmZkaDlLelY2ZXR0ZlhnSFhKdlFQSkdsaSs0T2syYVRQSGROYUVlWCt1VzJxYkQxUVN2ck0rd3pTcHBiZFBmTW9lLzZ2NWpTVlBlc0VXdXFxN3R0S3YzTjdZc1A2MTlac3BUN01Fb2JDWFRQREZ3VWFXN1B3UnE4T2FYVGVLSVFiMGtXamE0WXE4b25oY2ptRmlQb3ZyWTd1UmJ3Mk9XRHNkQnJEQi9ZSG1xT3JaeS9KbjJDYzE3aytpWDgwdEwwQlVuZnQ3MC8vVVJKcnRpVDNHa004T3RyaDN0NUR3MmVmaTg4ZXRLU01HaW5sVlp6YXZaV3cvNWdyUlFJYTdXTm9yM1ZNQ2V5bFdVZHJQYzN5SElkUm1uclZ1MmVoWXZ2NjE5Wmt2eFRTdlg2cUpTMmRLblhGaFZnWFVMVGNGYXJ5NXlmOER1Nll3YitLNkZqL3NzcEV6K1RCa0tNZ2srbVBNK0dZVUhaWElmUmVTbGg5TmxkY1d0RmRaZnRUbC9UTE8wMVNMMzBtT1hKdi9CWk5kOGxEY20rZEhmeSttcVg3MDZlSHZHd3BXRUpuVkgwOCtua0FPOTBtYVZCbE5zd1dqdWV2djdjbHdka0xhdVpXaGl5bXVSWDIxaVBTdXFGczFQbUV0MmN3VVR3VTVlR1pycFcwbjQvcDJwaElteVNibGJpSHhaSm93M1hUOEF4T2U5UHkyMFlQVHJsSWI1ekZxNkpNSUl1eVdVcE02bFBXemE2RzRpcGYxYU13UXRUUmwxZGxjSHZTMUt0YU5jc2ZDOWw3Z3c0QVRiSjkxUCszZkkreER1M1lmVExLYldpYS9ZTjFoTHJWKzlMYnBOZlZJQVRSN1RaUWYzekp4dmhzSVRoMi91cVlRbWFYaXFRMGtTWE1ybTE3bHQ3azVzT0g3SWtERjRhUlQ5SldmUTI3ODJYdVEyajQxTCs0YTlOK1ErTFlVOFZmcGJTREpMbGhFUHBhYXZTcDBCY3NpdDUvbEczSHJVc2VSaDJwWTJWcWVkcjNrNGFHREhzZHM0bVQrRFArL2JrdVoxMm1kWSsycy9Od3RwMTYxUnkrM20vNTA0OGVqbDg1Nkc5dis2SGQ4QkhkdlQrdXZONTBFUTJyNmN5Q2Y4cjQwMElzelJSZ0Zkc0NMV2lwSGVkTTdYMEVaL2RTdXJYMlQwYmFqM3R1R1FubEJLYUZzOWZBMisvdTZ1aTVkNTlzNjFYTWQrWTI2ZDVrTnZpcjB5Wk1YN25QTXV2eC9EemxETDFleFh2eFlWc0FuQjFwQ1h0eHpONlBldHl1a1QvK29td01zbEwxc1B4ODlTNlA3UWo3S25UUzJOQU1TR01MdHZkL2k3QS83VXZyTkxRNmlGNzNHSjQ1REw0NFFEMURmZEwwbFkxWXpudmU4NXRHQzFKK1lmUGNtWHViaVhOS2dkWW5kdkdVbVhsL05YSmswVmJPVmlGNVdNaGZFNWEwdDVrNmg4ZGdML1BvSGJ4aEJYSjc5TFQ1aEExcXhJR01yd3NvWW54V1d0R000eVM1SDBWaHR5R1VkcS8rd0NOWGZpRnFiUkM1ZndkalhydnBDWEp6YnE5Y1BzMHZPUzJlWDR1dTVTMC9NK2VhdnBpcmExOEtTV016bDhEYjcwemVWTytZWlUwK2pibldaVGY4cWY5QUM0YndGZTFOQ1Z3ZGc5Z1RVN0Q2N3I5WVp2cnROMWZ1elZSU0Y0WjVSdTdPdysvSCs0UEM0VzJjc1JFV0s5dTFHVHhCbUlRRE9CanV6MXAveUZKUTFoalN0dUxwUmZibjB2em1hMkY5UnFmZDNONkgrWkNQSEZGOGhiaDdZeWlheVZ0SmUvbnJPM3VtbmsybnZER05xMHJJQTl5MjB5M1BXV0puVUVjS3AwMitxL2ZBeTcrK3lDODQ2N2VYL2VtU0tNWWQ4ekFuMjdyL1hXemVtRDNXeFhZdkN1c1lIOVRCaXN0TkVvYVJiZXZHaFlPN3NZWEorR1ZoN2YrM3ROWHdWOFdCbXRlWWRiV0pGUWgwcFlkeTRQY2h0SFdsQWRGMmpKQk1Zd0JwNlIwUnQvYTU0ZmV2VFB3MVpSVklmTG1RRzI0WGs4djFBaTdEbDg2Q1ovZDJaOWdYVktBY3hPYTZMNjVwL3U1VEQ4NUFQL3ZZT3ZmNi9VVG9UYjJ6UzZETG04bUNyQWg0YWw5dDJFVVI5cGNvc2NNV0R2eVNVdVNSN3JNMWdaelhwVGlldi8yRUxMdE9sQU5UZGM3WjBQdy9HaC84bUtqV1hucXF1U2Y4NnYzTFd6dHRHL3ZUWDZUK2N3MW94TkdKeXdPZ2RUS1R6T3U5V1l0dDJIMHc1UTFtazVaRWpvMzd4cVFkd3BucFN4UWVjT0J3VmhkWElQbC8yd2Z6Q2tLYWRKMll2MnJCNFdQTEd4YURYKytiWGc3OWh1bGJUbHp3NEN0UE5PcDNBNWd1UDVBK2cvZk9RTzBYRWphTmhGSlM4SkxlYkppTE42ZU9pdkg0TWtwYi9pR3lla0pXMFhzcVdiZkg1aTEzSWJSZEEyK2s3S3N5SXZXOXEwb3FVNVlESTlQYVRhODNMNE9EWUZ6VjZWUFJNL2FLR3dyc2JpUUhQaFg3bWwvWll0Qmxkc3dndlNob3FjdEM4dUZ4UGJpZGNuZjJ6NEQzN1ZtcENFUWUxdUhwNjRLdGJOaGR2YXE1R0h6dy9DbU50Zi9mWmRPcHMvUmVlM0cvcFdsbFkwVDhKc3BZZlQ1WGFNMUpGWERhZTE0ZXI5b1B5d2ZDNEUwekpKV290aGJUVi9oUEM4NkNhT0JXN1JtNTJ4NG9DYzVhMlZ5RzJzL3ZHWmpjdFBGYkEwK0dtR0ZhNm5YbnI0NmVZUlhQOFd1bldYcENTdmdjUW5OL1YvWTFmK1JrMW5vWkRUZEFQeTRIZXJETytBRmE1Ty8vM2RId1RrMzlYOTI4dU9XdzRVcE8ydCthWEo0SmxWcXRLWDExL3oyYlhCRkQ1dVFsbzdCRDA4Sk5hRm1UMWtKcThhSGIzbXRNZUJOQ1NNUmE4VFp0aVVMdWE0WlFaZ1FsOVozZE1KaStPc2orMWNlQ08yNjd6a20rZnRUTlhqSGlPN0ZvdUd5ZmdKK0xhSDFZZGRzNXd1anp1ZEFGYjZlRUc2TEN2Q01JV3lxKy8wTnlTdTRmMzVuL3VjWDFlVzZ6Nmp1ZjkrVlBzeTdkQmk4TUtXVzBrdUxDdkNQeDZSUDhQdndEdGpxUkZjTmdmTlhKejlFTnJleHZYZzMwcHJtMCtZNjVkRmpsc1ByRS9xK0QxVERFay9Eb3BNd0d0aXU5cTFUOE41NS9sUGVkaFE4SitNZjFFVUYrTUN4NlhNZWJqb0k3N0pXcENHUjl2QlBXK0IwSWY1alQzSWZ5WmtyMGhjbHpwTXpWOEFuajAvdWo3dm9udVFWemZOb0tNSUk0TDNiNFpxVWpiYkdnSGNkQTcrWE1DSmxvVFpNd01VbnBFLzhtNjdCSzIvUC8rcTZFb1RkZFpPMmNNaHkyc0pVRFNvSlFUZGVnR2NNMElUM2Jvd0Jyem9jUG5GODZDTnI1UWY3UXd2TE1CbUtaam9JelFGL2ZIc1lZWmRrRFBqTEI4RS9IWnU4MkdBM3psc0ZYemtwZlhJcndCdTNoY1VycFdHUVZpdjY4bVMyMHhiUytvbXpiZ0hKMHFPWHdSY2VISnJta3JhSzJERUR2NzgxLzVOY20rVitBRU9qVzZmZ3BiZk4vNSswYVRWODQrVFFNWmowenFNZHB5NkZqeDBISHpvdXJJV1g1bDEzaDlXVHBXR1JOcFE2cXlhNnVpdjNob2R5SzQ5ZFB2L3Y0eUJaWEFoenBDNCtBUzU1TUR3aVpiTCtnV29Jb241dk85TVBuZnlYRGVDV2RZZjYvajU0MWUxaEVFSGEzSWMxNC9BWFI4RExOOERuZHNJbHUrQ0cvZk52WWJ4K0FzNWVHUVpFL0dxYnE0UC82NzN3N2lIcWFKUk9YQXdQU3hqaHRXMDZyTktkcGRrYVhMbzdERTVxVmlBTU4vL2dBRFZqTFNtRWtObGJEVHRSSHo0Qkp5OEpLOFdjc1NKNXRmTkdrN05ocS9qdkQrbXFMWjJFVVc2YTlDcVRzT2MyK09DeDgyOUJ2bTQ4ekd4KzJYcTRkelpzYzN6VHdmRE9ZMTgxdkdzNWJCeU9Yd3kvc2pUc1M5UkpGZkdqTytETmR3NTRoNXZVb2JSYTBaZDI5ZWZuL2ZNN1c0Y1JoRzBsK2hsR2J6OHFCRTJTeFlVUVB0MzY4UUg0dzl0aHk1QU00MjVsS01NSTROLzN3SE51aHZjZEN3OXVjK2ZYZGVPaDFuTjJENVkybWE3Qlg5MEJGOSszOEd0Smd5WnRvdXNYKzdRMHpWWDd3b1p5RzFzOHhSNjVMTHlCN05kZVljZG50THQwRGZqNHZmRFdPNGQvNE5OUTlSazF1L0VBRkxmQXAzZjI5NzViRHNMemJqYUlOSngrYVdueXUveGJwdUQ2bEZHdHZWUWxMSVdUSk85empxN2VCOC84R2Z6UE80WS9pS0N6TU1ybDZrZDdxL0M2bjhOemI4NSs4Nm1EdGRBM2RONlcwTnduRGFOblJ4eTQwQ3hwaURma2QxdUpLL2JBaGJlRWxwMStCZnNneU5HWWs0VzVhaDlzMmhKR3JmemhodVQ1RWQzWVc0Vi91VGUwVVNlTjhKR0d4VE5UNXZIME80eXUyUjhtZmg3WG9wbnNsQ1h3MENYdzN3UGV6N0szQ3RmdWg2OU93bGQzaHdFZ28yaGt3Z2hDKyt2bHU4UEhTVXZDZklUelZvY2YyazRkcUlaSmZaL2ZHWDZBOWcxZ3ZmR3VHVmpUNGdmN25wd0c1dmFaMW92TDNwSFRYOTdKMmVURmNxc0QyaXh6eXBJdy82VlZ1VytkaXZQZy8vUk8rQjhKQXhuT1dObWJNdDA1RXdZaUxjU3FNU2dVb0ZhRDdiTnd6elQ4YkNvMDZ3L2c0NlB2Q3JWYWV6LzFoWXMzdnhONGJiYkZpZU93OFZCVE9ubEo2SWpjTURIM2d6UDMvVm5Db285M1RJZGZ1T3YydzNVSGhtL1NtU1JsNEQyMUN6ZTllcjZEMnFvWkZTN2VYQUJTbHY3TXQvdG00YkxkNFVPUzFIL3REbUFZNmpDU0pNWFZTUmpsYXA2UkpDay9obWJWYmtsU2ZyVWJSalZDUDc0a1NUMW5HRW1Tb21zcmpHb1hicXBoTTUwa0tTTkR2VGFkSkNrZjJncWp1WGxHdWRqUFNKS1VQdzd0bGlSRlp4aEprcUp6bnBFa0tUcUhka3VTb2pPTUpFblJPYzlJa2hSZEowTzduV2NrU2NwRUo2UHBSbXBYV0VsUy96aTBXNUlVbmNzQlNaS2k2MlEwWFRYTGdraVNSbGNuWVRTZFpVRWtTYU9yazZIZGhwRWtxVk50ZGZGMDBtZGtHRW1TT3RYek1MTFBTSkxVcVo2SGtTUkptWEJvdHlRcE9tdEdrcVRvM005SWtwU2x0c1liT0lCQmtwU2x0aW95aHBFa0tUcWI2U1JKMFRtQVFaSVVuV0VrU1lyT01KSWtSV2NZU1pLaU00d2tTZEVaUnBLazZBd2pTVkowaHBFa0tUckRTSklVbldFa1NZck9NSklrUldjWVNaS2lNNHdrU2RFWlJwS2s2QXdqU1ZKMGhwRWtLVHJEU0pJVW5XRWtTWXJPTUpJa1JXY1lTWktpTTR3a1NkRVpScEtrNkF3alNWSjBocEVrS1RyRFNKSVVuV0VrU1lyT01KSWtSV2NZU1pLaU00d2tTZEVaUnBLazZBd2pTVkowaHBFa0tUckRTSklVbldFa1NZck9NSklrUldjWVNaS2lNNHdrU2RFWlJwS2s2QXdqU1ZKMGhwRWtLVHJEU0pJVW5XRWtTWXJPTUpJa1JXY1lTWktpTTR3a1NkRVpScEtrNkF3alNWSjBocEVrS1RyRFNKSVVuV0VrU1lyT01KSWtSV2NZU1pLaU00d2tTZEVaUnBLazZBd2pTVkowaHBFa0tUckRTSklVbldFa1NZck9NSklrUldjWVNaS2lNNHdrU2RFWlJwS2s2QXdqU1ZKMGhwRWtLVHJEU0pJVW5XRWtTWXJPTUpJa1JXY1lTWktpTTR3a1NkRVpScEtrNkRvSm8xcG1wWkFrRGF1MnNxT1RNTnJWWlVFa1NhT3JyZXl3bVU2U0ZGMG5ZYlEzczFKSWtvWlZXOW5SU1JqdDY3SWdrcVRSMVZaMmRCSkdPN29zaUNScGRMV1ZIWWFSSkNsTFBRK2plN29zaUNScGRMV1ZIWjJFMFRhY2F5Uko2c3p0N1J6VWZoaVZpbE9FUUpJa3FSMTdLUlczdDNOZ3AvT01mdFpGWVNSSm82bnR6RENNSkVsWnlTeU1ydS93ZUVuUzZHbzdNem9ObytzNlBGNlNOTHJhemd6RFNKS1VsWXpDcUZTOEM5amFhV2trU1NObkYvRFRkZy91WnRYdS8remlIRW5TYVBrT3BXSzEzWU83Q2FOdmRYR09KR20wZEpRVmhwRWtLUXVaaDlGMXdCMWRuQ2RKR2cyN2dXOTNja0xuWVZRcTFvQkxPejVQa2pRcUxxZFVuTzdraEc2M0hkL2M1WG1TcE9IWGNVWjBHMGFYQWdlNlBGZVNOTHlxd0JjN1BhbTdNQ29WOTJEdFNKSjBxRzlTS3Q3ZDZVbmQxb3dBUHJPQWN5Vkp3Nm1yYkZoSUdIMkpNR0pDa2lTQUtlQ3ozWnpZZlJpVmludUJmKzM2ZkVuU3NQbGN1NXZwTlZ0SXpRamdJd3M4WDVJMFBMck9oSVdGVWFsNE5YRFZncTRoU1JvR1B3V3U2UGJraGRhTUFON1ZnMnRJa3ZMdDNYT0xJblNsRjJIMGFlQzJIbHhIa3BSUE80Qi9Yc2dGRmg1R3BlSU04SjRGWDBlU2xGZnZvMVRjdjVBTDlLSm1CUEIrNE00ZVhVdVNsQis3Z0lzV2VwSGVoRkZJeExmMTVGcVNwRHg1TjZYaXpvVmVwRmMxSTRBUDRKYmtralJLZHRDalFXeTlDNk5RTy9yTG5sMVBralRvM2tLcHVLc1hGK3BselFqZ0U4RDNlM3hOU2RMZytUSHd2bDVkckxkaEZNYVkvM0ZQcnlsSkdrUi9NamVhdWlkNlhUT0NVdkc3d0FmYlBMcnJDVktTcEdnK1RhbjQxVjVlc1BkaEZMd0IyTmJHY1FYQ1JreVNwSHk0Ri9palhsODBtekFLSFZxdjZLQU1CcElrNWNOcktSWHY2dlZGczZvWlFhbDRDZkN4RHNwaElFblNZTHVFVXZGaldWdzR1ekFLWGdWc2FmUFlNZXhEa3FSQnRRMTRhVllYenphTVNzVTl3RzhBMDIyZVVjTkFrcVJCVXdWK20xSnhSMVkzeUxwbVZCOWQ5NW8yajY0MzF4bElralE0M2tTcGVGbVdOOGcrakFCS3hmY1NKc1MyWXh5WXhVQ1NwRUh3UmVDdFdkK2tQMkVVL0Q1d2RadkhUbUFZU1ZKc1B3WitjeUdiNXJXcmYyRVUxcTU3Sm5Ccm0yYzRvRUdTNHJrTDJOU3J0ZWZtMDgrYUVaU0tkd0tiQ1B0ZnRLT1FZV2trU2EyRnlrT3BlRXUvYnRqZk1BSW9GVzhrQk5LQ2RnV1VKR1ZpR25nMnBlSlYvYnhwLzhNSW9GVDhOcUhKYmlySy9TVkpyVlNCWDZkVS9GcS9ieHduakFCS3hTdUE1OVArSEtRNis1RWtxZmVxaE1FS1g0eHg4MEt0MXQ2enZWRElxUHVtWEhrcThDVmdXVFkza0NUTll4cDRQcVhpRjdLNGVEczVFNjltVkZjcWZoMDRGNWpzNG14clNaSzBNUHVCWjJVVlJPMktIMFlBcGVLM2dET0JyUjJlNldnN1NlcmUzY0NUZTcwM1VUY0dJNHdBU3NYcmdTY0FQK2p5Q3RhU0pLbDlQd0dlUUtuNC9kZ0ZnVUVLSTRCU2NSdndKT0RUWFp4ZHJ5VzVGWVVrcGFzQXAxTXEzaHk3SUhYeEJ6QWtLVmRlQTd5ZHNGWmRONmJuemgyc3dKV2tlR3JBbTRHMzlHT0puMS9jdEkyY0dkd3dBaWhYbmdTVWdXTVdjSlVwUWlCTjlLUk1rcFJQZHdPL1JhbDRhYjl2bkkvUmRHbEt4ZjhBSGc1OGFnRlhXVXdJb2xrNm45TWtTY1BneThERFlnUlJ1d2E3WnRTb1hDa0I3d1kyOU9CcU5SeUpKMmx3OWVvWnRRdDRQZkRoZmpiTE5jdC9NMTJ6Y3VWdzRGMUFLWFpSSktuSGV2MG0rUkxnRlhNRHc2SWF2akNxSzFlZVJxZ2xuUnE1SkpJMGFHNENYa09wK0tYWUJhbkxmNTlSa2xMeGN1Q1J3Q3VCelBaa2w2UWMyUVc4QVRoMWtJS29YZm1zR1RVcVY5WUFmd0s4R2xnVHR6Q1MxSGQ3Z2ZjQzc2QlVITWczNThQYlROZEt1YklXZUMzd2g4QzZ1SVdScE14TkFoOEUza2FwdUQxMllkS01WaGpWbFNzcmdOOG0xSlpPaWxzWVNlcTUyNEIvQUQ1RXFkak5BdE45TjVwaFZGZXVqQUZQQTE0R1hBQXNpbHNnU2VyYUxHRUpudzhEbXlrVlp5T1hweU9qSFVhTnlwV053QXVCRndCbjRCd2pTZm53UGVBendDY0hZWWgydHd5alZzcVZvNEJmQjU0T1BCazM5Wk0wT0E0Q1Z3SmZBVDVIcVhocjVQTDBoR0UwbjNKbEtXR1Y4TE1JK3lrOURzTkpVdjhjQks0bUJOQ1Z3RGNvRmZmRkxWTHZHVWFkS2xjV0FROERIZ0djUmxnWDcyVGdXTHBmUFZ5U3FzRHR3QmJnT3VCNjRGcmdla3JGZ3pFTDFnK0dVYStVS3hPRWxjT1BCVFlDNndscjVDMEhWczRkdFFiN29xUlJ0WFB1ODE1Z0g3Q2RNQ0gvSHNJTzFsc3BGVWQyb2VhZWhwRWtTVm5KNTNKQWtxU2hZaGhKa3FJempDUkowUmxHa3FUb0RDTkpVblNHa1NRcE9zTklraFNkWVNSSmlzNHdraVJGOS84QlJ6c0MwaWFneEIwQUFBQUFTVVZPUks1Q1lJST0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJGSURPXzJfMCJdLCJleHRlbnNpb25zIjpbImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6IjA5NTkxZmM2OTgxMTQ4Zjc4ZjU3YjlmMjNkZjY0MTNmIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJ1diI6dHJ1ZX0sInRyYW5zcG9ydHMiOlsiYmxlIiwibmZjIl0sImZpcm13YXJlVmVyc2lvbiI6MX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMi0xMS0xMCJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjItMTEtMTAifSx7ImFhZ3VpZCI6IjkxMjQzNWQ5LTRhODgtNDJmMy05NzJkLTEyNDRiMGQ1MTQyMCIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiOTEyNDM1ZDktNGE4OC00MmYzLTk3MmQtMTI0NGIwZDUxNDIwIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlNJMFggRklETyBDTCBXUklTVCB2MS4wIn0sImRlc2NyaXB0aW9uIjoiU0kwWCBGSURPIENMIFdSSVNUIHYxLjAiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsic29mdHdhcmUiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQnRqQ0NBVnVnQXdJQkFnSUJBVEFLQmdncWhrak9QUVFEQWpCS01Rc3dDUVlEVlFRR0V3SkVSVEVoTUI4R0ExVUVDZ3dZUnl0RUlFMXZZbWxzWlNCVFpXTjFjbWwwZVNCSGJXSklNUmd3RmdZRFZRUUREQTlHU1VSUElGSnZiM1FnUTBFZ01ERXdIaGNOTWpBeE1URXlNREF3TURBd1doY05OREF4TVRFeU1EQXdNREF3V2pCS01Rc3dDUVlEVlFRR0V3SkVSVEVoTUI4R0ExVUVDZ3dZUnl0RUlFMXZZbWxzWlNCVFpXTjFjbWwwZVNCSGJXSklNUmd3RmdZRFZRUUREQTlHU1VSUElGSnZiM1FnUTBFZ01ERXdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUXc2Y3krem5NeVE2cHRkNEpqcXZtYTRlOFJlK1pwcGI5MEdxS3ZzUkJuRjhXbU01eVpXSU9LalFnai84KzNqOWF2VytTeUFhLzFNYXl3UUQ2QjBnOWFvekl3TURBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUIwR0ExVWREZ1FXQkJTc2VwV3V1eG1EMG84ajFZMjc4YkxUR0NaTnZqQUtCZ2dxaGtqT1BRUURBZ05KQURCR0FpRUF1MzNTcDBFN0JFZEhvekVHQUNsTnNhMHlQQjZzRURvUTdXNGtpeTBEWjE0Q0lRQ0pMRFRKREFuV3hvMzF6enZyV3VJTnRCcXkwNDQrR2dGUDYrd2xxRzY2Tnc9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFGQUFBQUJRQ0FJQUFBQUJjMlg2QUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUFCM1JKVFVVSDR3SVVEQzBGb09VSElBQUFDY2RKUkVGVWVOcnRtMnRRVk5jZHdQLy9jKzgrV0phQ1BCWTFDZ3NDb3BETWFENzRBTVVraW1PbldtM3lJWjFwcTlpcG83WlduYVpOTTAxc203YlVxS2hrTE5aSGZNeTBINHF0VnUxVU15TTAwYzRvZHN4TXdWQ05HbE9Gd1FCcldKNTdYK2ZmRCtmdWd3VldOc0dtTlBjTUg5Ykx1V2ZQNy8vK240TklSUEJGR2d5K1lNTUN0b0F0WUF2WUFyYUFMV0FMMkFLMmdDMWdDOWdDdG9BdFlBdVlBTWJxQklpSUh0TnhrbGlXUWg5aWZndkcrTFg0RlNJQ1FDQVE2T3pvYUd0NzBOSGUzdGZmandDQUdDRVdIUHdCRE1QSUw4aWZOV3NXaHFjQkFDaXFldnJVS1lZTUJqOFB2aHRlWWZEbklYTUJpSGpTbDVJbVprN3laSG84SG85c2s4V2VFVEVHc0J4YmVJaDQ2OWF0L1RVMTlSZnFlbnA2WU1RdFJBOVYwMVpYVk15ZVBUdEtncXFpdlBTRGwreXkvTmtWaXdDRUtOU1NscGIybFJYTHY3TnUzYVJKaytJMjZaREczN3QyYmZVM3Z2bmNvbWRPL0tHMnQ2ZEhZb3doQ3ZrUkl1Q0lBMFlRc25qTUlxYUpwekdXR25GOVJBcitreUUrOVBrTzdQOXQ2Yno1Mzl1NDhjUGJkMkJrVDJUUm5rQ0VBSnp6ZmZ2MnJWengxYjlmdXVSME9CeDJPeUthVGtpRWlDeTJxb2xpbUJaaDBGa0F4SFlSQU9KeGJ4UzdGVDlCT2JvU0VvRG83WFBubm4zbTJaTW5UK0lJeml4SGlWK01pdFZyL2xaZjczQTRJbDhiR0JqUU5FMlNaVm1TNEZIQlRGRlZYZGVHOTBJS3kxZFZWZmdVY1pGSUtFRFhkY013bkU2bncrRUFJc1lZQU1nUzI3cDV5OVdHcTl2ZjJQNElIeVlpVlZVcnZyWDYwc1dMVHFlVGlBQlIxYlJFbHl0bjJyU1MrZlBuekoyVGxaT1Q1SGFiSGpTeW1va293WlVRT3pyMEJ3YmV1WGd4S1NrSlJ4c1pRaElqUUFRaXY5OS81OWJ0eTVjdlg3bHk1YU83ZHpWTnMwa1NZOHlPZVB6b1VRU28zUDdyYUVPajRPQ2NFOUcyMTdibFptWG5lWE9tWlh2enZEbFRKazMrN29hTkxTMHR1cTdUV0l6dTd1NnNLVlBGNGhNelBGMWRYV095cktacGQyN2QvdHJLVlZtVG44ano1b2lmbktsWng0OGVJeUllTVJNaVh6dDcrb3duTFYzUVRzdjJ6aWdvUEhQNmRKUkV4aGo0azAvR0JEaTB0ME1IRG1aUG1ScENtRHI1aWV0TjF5Tm5odk53WUdCZ1VkbWloNTJkNG9rc3k2ZlBuaWtvTEJTR2pXTlVKUFQwOUJUUExMSkpFaUwyOXZYZCtPQm1ja3JLWjZ3NnhPNDRrVWdoRjk5OWQrM3FOY0pyaUtpZ3NQRE1YODdLd1VRWWp0Si9xajNSMXRvcWFCVlZQWFRrU0VGaG9YZ054N28yRWt1T3ljS2hSVmp3MDhLeXNwOXMyOVkvTUNCazBkemNmTzNhdFpCMFRHQkZVU29ySzIwMm0zajYvQXN2bEM0b0hiOEZjOFhhaXJuejVqRkVrV1YvOXRxMjZEeGNWMWZYM2ROdDJyYWlmbi96WnM3NU9LVVZMcnAxNjlhZS9uNUVsQ1dwcWFtcHVibDVFUEE3ZGZVT3V3TVFGVTFidm5KRlRtNk95R21QWTRRTStUSDFFbUw1QldVTDgvUHpSREN6eTNMZGhRc0FnSUFtVlVORGczQUJTWkkyck4vdy85RUpidDZ5UmRkMVJKUmt1ZUhLRlNGakJnQStuNitscFVYSUppMHRMUzgvNy9HSi83OWsxVVFBTUcvdVBKZkxKWjc4NjhZTllWMHlBSHh3ODJZZ0VFaElTRUFBVDZiSDRYREVGVUlOYnZpNy9JK2NMOHJNdnI1K0lITW1NdXp5ZC9QUlNKWUFFTnh1dHdpcm93emQ2WjZNbE5RSnZ2WU9BbmpZNld0LzhMRm5ZcVlNQUhjL3ZDdENsS0hydVRtNWtpVEZKYzdXbHRheXNqS253NG5Sam9SbUdSaU1GZ2JuakRHYmJLN3ZjaVlzS3k4bkFtUVllb3NIKzRxUXI0dHFJYUFveDMvL3V3V2xjZVFPU1pMUzB6TTZQKzdneERWTnUzZi92Z2w4Ly81OXhoZ0JxSnJtOVhyanRoL090WUFpSXhNNUlJYWRCZnRCTTVJaW9xYXFvOUV1STFCVmxZejRFZ2RqTEhOaTV2dU5qWklzYzRQN09qdk41cUd2cnk4a1M3dmRIbi9VWmFLL1F5SWVqc0RSTVJrWWlxS05VVWpyd0JIUmxBQU5qcktET2xoQ1FBS01lMlBvY3JrSXdDQUNJSEdBSVllL2hBZ0FqUGpUTCtkYzUxdzNEQllPZFFqQlV3RGlGTGtEemcyVVpRS3plK2VhaG94eHpzMG1GMkJvT2pTSUFFRGpCbysvajFRVXhXeTVFWVZNWlFCd3U5MmlqN2JKTnArdkk5NUZFOTJKNVV1WDJ1MTJJR0lqaHk0Q0lNNkJxTDYrWGxDcG12cmM0aVVNTVhiT0Y4SlFORFV0UFMzZVdOM2IyOGNReFZGa1NuS0tDVHhsNmhUaGZreGlyYTF0anp3SGl4b1pHUm5Iamg4YmJmUFEyL05rVWJFZG1LallkKzJ1U2s1SndWR2JhRnpBaG1HMHQ3Y0RZd2pBR0V0TFR6ZUI4L01MRUJHSm1DVGR2M2ZQTUF4Wmx1UENqbU5tNUdrbEFVTmtZOStibU9vMWROM2YxWVdJUU9Td083dzVYck8wbkRHak1OSGxFaWRhN2UzdHZiMjlZOVhLZkk1VkJ5SzJ0TFkrZlBoUXhDWlBwaWMxTlJVSUdBRzRrNUt5dlY1QjJPWDN2eGRzcHNicENLbnE3ZlBuRlVVUi9FWEZ4ZUdZRHdBbEMwczU1NGdvQSt6WXNYTzhWOUhpMEdkL1RZM0Raa01BVmRQbWxjd1hIc1hFNWNPU0pVdkZBU0tUcFBlYm1pNWR2RFRlbVUrZityUGYzODBZNDBUY01KNWJ2RGhZRFFBZ1lrbkovR3l2MXpBTUFMRGI3YnVycXNhN1ZkZlUxTmhsbVlpNFlaU1hsM3V6czRWdGh4UGdMeXNyRFNJUk5xODJOUHppOWRlandzQjRDVmVjYVAzNjliZHUzbVNNRVpIa2NMenk2cXZoZTQvUTdOSUZwVVZGUlFiblJKVG9jcjExNkszcXZYcy9YUUw4SEdrQjRPZmJmbnIrcitlY1RpZm5YTlAxUldWbHVkTnloN2xxa1dWNVYxV1ZhR2c0NXpaWjJ2NnJ5bGQrK0tPdXJxN3hZc2FkSFIzcjFuNzc4SUVEdG1ERGw1eWNYTFY3ZDJRbE4raHVhV2JSekQxdlZxdWFLcGpkYm5kdGJXM0puTG1IRHg0TUtNcFliVXNjaHB0Zk9rYTI0L2Y3cTNic1hEQy9wSzZ1TGlFeFVmU1ltcTRmUG5va09TVTUwaVhENTlJVXZMRFp0V1BuM2oxN0VsMHVrYWlJS0JBSUpLZE1lT3FwSjR1TGl6TXlNMU1ucE1vMmFkak81aEhkSVpDaUtEOSsrV1dKTVVRTUtNck9YYnNjVG1mOFhrTkVvR3VheitkNzhPQkJZMVBqOWFicmZiMjlyb1FFOHhBUFVWWFZIVHQzdnZqMUZ6bm5rUnFPdmhBWDJEWDdmdlBHOXUxMm15M1k0bkNSc1hSZDU0YkJpWUJ6Q04xM1VxaFNwS0haUDNROXp3Q0ljeVpKZHJ2ZERKaU1CUUlCMFNmekljSUxYVGpSU0UwU29zU1l4RmlJSjZRekRsRDladlh5RlNzaW53OFBIQnIvdUhwMTA2Wk4vNzc3a1RzeFVmUm9adEViWERXc0VoeG1SMGdZRlV0dzBGOE1ERkhaS0JTTUZObDdpVjJZQ0tMWkpNNTcrbnBuUC8zMDN1cnE2ZE9uRDN0M09UeXdXRUxYOWVvOTFYODhVZHZXMW9ZQWtpU1pmNU1RVml3Tjd2RWo4SWJBNGVnT2IyT2t3RUZtVHdBWXZ0TTJkRjJTNWFsWldSVnIxNjZ1V0JOVGFpTURRL0FDdGZHZmpTZHFhK3ZxTHZoOFBsM1Z6TXZ4Q0NNWlp0OXhwaFFjZW13ZG96R0ltR3l6MlNaUG5yeHMyWmRYUGI4cXY2REFack9GZGo1c1hNRFlSVVdVVlhSMmR2cTcvSUZBQUlDRzM5bG9GZnFvaTRNWVIremhuV0dDMDVtYWxwb1N1bzRiVERrc00xci9NODBDdG9BdFlBdllBcmFBTFdBTDJBSzJnQzFnQzlnQ3RvQXRZQXZZQXJhQUxlRC9xZkVmYm1NY1ZDcDhiRzhBQUFBQVNVVk9SSzVDWUlJPSIsInN1cHBvcnRlZEV4dGVuc2lvbnMiOlt7ImlkIjoiaG1hYy1zZWNyZXQiLCJmYWlsX2lmX3Vua25vd24iOmZhbHNlfV0sImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIl0sImV4dGVuc2lvbnMiOlsiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiOTEyNDM1ZDk0YTg4NDJmMzk3MmQxMjQ0YjBkNTE0MjAiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjp0cnVlLCJ1cCI6dHJ1ZX0sImZpcm13YXJlVmVyc2lvbiI6MX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMS0xMi0xMyJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjEtMTItMTMifSx7ImFhZ3VpZCI6IjdlM2YzZDMwLTM1NTctNDQ0Mi1iZGFlLTEzOTMxMjE3OGIzOSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiN2UzZjNkMzAtMzU1Ny00NDQyLWJkYWUtMTM5MzEyMTc4YjM5IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlJTQSBEUzEwMCJ9LCJkZXNjcmlwdGlvbiI6IlJTQSBEUzEwMCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MjU2LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDTERDQ0FjK2dBd0lCQWdJRVpQL2dOekFNQmdncWhrak9QUVFEQWdVQU1IY3hDekFKQmdOVkJBWVRBbFZUTVFzd0NRWURWUVFJRXdKTlFURVFNQTRHQTFVRUJ4TUhRbVZrWm05eVpERVpNQmNHQTFVRUNoTVFVbE5CSUZObFkzVnlhWFI1SUV4TVF6RVRNQkVHQTFVRUN4TUtUM0JsY21GMGFXOXVjekVaTUJjR0ExVUVBeE1RVWxOQklFWkpSRThnUTBFZ1VtOXZkREFnRncweU1qQTFNVEV3TURFM01UZGFHQTh5TURVeU1EVXhNREF3TVRjeE4xb3dkekVMTUFrR0ExVUVCaE1DVlZNeEN6QUpCZ05WQkFnVEFrMUJNUkF3RGdZRFZRUUhFd2RDWldSbWIzSmtNUmt3RndZRFZRUUtFeEJTVTBFZ1UyVmpkWEpwZEhrZ1RFeERNUk13RVFZRFZRUUxFd3BQY0dWeVlYUnBiMjV6TVJrd0Z3WURWUVFERXhCU1UwRWdSa2xFVHlCRFFTQlNiMjkwTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFTGYyaDY4R3pTRVdFb3AyMlJMdktDMXdOQXRVSXRtdjRUZjJPeElwQjFYUWU5SlAyblJQQ21renpmUVVZbk9rOUo5UGd2akVpNjRidVVLUHJxZDAzTWFORk1FTXdFZ1lEVlIwVEFRSC9CQWd3QmdFQi93SUJBREFPQmdOVkhROEJBZjhFQkFNQ0FRWXdIUVlEVlIwT0JCWUVGTGhSbzR1RTJtbkovVnRHZkIrT04wckFRelFaTUF3R0NDcUdTTTQ5QkFNQ0JRQURTUUF3UmdJaEFMNzE5SzBsUzZqZG9sbGlJOGg0bHlJOHRnRkZqdjROUGcxZGRJRitiSG1TQWlFQTB0aTFhUDBTY3BybUJvTGFHUHhkdVRoZjdNd21pUWJUbTI3TmdhaFJ2S2c9Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUhzQUFBQXZDQVlBQUFERDJMV2VBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBQ3hNQUFBc1RBUUNhbkJnQUFBQVRkRVZZZEZOdlpuUjNZWEpsQUVkSlRWQWdNaTQ0TGpneGdjdGlBQUFjSDBsRVFWUjRYc1ZjaVh0V3hibjNqK210eXBvUUVySVpaUkZCRkt1NFZHMnRWV24xNmxPZmVpdFliZFZiYmF0ZHJMYnV5dUpHclVvcmRhR1Y3QnVCRVBZSUNHUWhnWkN3RTdKL3lYdmYzKytkbVhPK3NPU0xpYjN2ay9sbXpweVpkOTU5bG5OT0xwSWhFU1JrQVpJdXZoNE1EU1VqNFpYK0RMckIvUFdvSU43UGx4V0kwNVdTQUcxQWg3K3RFSzRIWTVVQWR4bHFoOTMrMnFCNGdNclFPVW85YnArVGxvSEFoLzJDRjAyODhMbURZWmVwd2tYRE93MjVJWWNyNjJ1RG9pRW1aWWg1RXRvQmwxOElCclNMS1RIZVA1UmRHcFJFVkhjZWFYaVdnbEJkUmNTcjR4M0pHOFVZd2VNanVJTHg0NU1DNngzTlVMeVhsWUxQNC93WnViSCtLVUtTc3EwOENnUWNPSTdCd0ZkNWZGNjQzcHVpSGltTWhjYXVtZS9IWEgraTZ4Z2VWbUpFU3dUWEVCbUwrSEVDQmYyVzQ0YTJaNjZnT2N4czdCRERxVUNhM0ZnSjFzUm9EeENyU3lMQlM5SW9PNWZzTHdRV3hoMXk5dFhra2FTS0xMUkQ1aFJxNEluVGZNaFlJMzZNaDNieHB1Y0IxNHZBNXVpbTQwVmRUV2k0TmpxOE1CV1l4NVJPUU5uVGhTWXhXaHlOZ2YrVUlzK0ZBZmpqQ2c3Z0NHQVdMM05JT0Fob2llZ01vQlhFbWFKdTR1QTgyeE1Ec0lINlRoeVhydjE3cGJ0aDM0aXBwM0UvYzdUdmFtcVUwdzM3TlRWS29xTkRCb0hhS3lFQXl1ZGc1THlnN1dOR2xNQzFLaVl3N0xLQjluWnArK3h6MmZ2Qzg3Snp5YzlreTMzM1NPMmlHNlRtcGh0azR4MjN5L2FmM2kvMVQvNVNtbGN1bDhQbFpkSjkrQ0Q3ZW9NeXhXQTBYeE9uK1d1Q0lqUTZiVTUycEJyTlBrSERtdHVvSnB2b0hucEZkTENLRmpGNjJpNUNIMjlGU0o3ZHBuZVdTMUhheFZLU20zbkJWTXc4STByWjA2UTBKMFBLY3Fjekw4L09sTXI1czJUM2tvZmw0S2RyWldDd0grTTZva2NHM3k1U2lBR3ZjZEhkSXkwZnI2WkNTMmVrazRiU3ZPbFNuS04wYUE0YWpMWk1MV2RLV2I3U2pIdWdVV210WGpCWDl2em1WM0o4MDBaRkZ2R2ZNb0VqZ2lseVlHQkFaYnFTNDFYZnZFRFQxYkpoMFhXeWNkRzFVbjNOZkduK2FKVU9hMlA3b1dIVUtCOHAvVUwydmZpU05DNS9VdzFIT1hlR1A5cklFK1pzR0YvY3NwcFdycFN5dE1rVXlvVlN1VXQySFRPQXZDd3B5cG51aEo4bEpkT25Tc20wUzZXOElGK2FYbjVKK2pyYU9OcklZQlljd2hvSTFiK0IvaTdwK09JTHFWcHdoUlJObTB6RmxlVm1CUm80SmxKdU91a3Jtd0ZhakRZcVhhOHJjcktvK09LTUtWSTQ3UktwbUR0SG1sYThKZ09uVGxMSVhqWmpCbFZRejZHanNuN2hsVkthbVNabFdXcVVrSWZTWEpLVEpzV1pVMlhEell1azkvQmhiV3ljV3RBeTNsdFd2Q24xdjFnaWU1Ly9uUnlyWHM4NjNoNGxnUmNaUWtNYUlWQmxyM3BiaXFkZVRBLzFpWjR5TEVGWXdhdlBrU0RRb2x4bGtKNnV3czVXSnRNbXlNWWJGa2w3OGI4dzJBVUI1RVFSM09qczdUd3BlNTU5UmtvekpxZzNLNzR3WGpvOUY0WVg2ckpCTzVTZTNBYUtMOG1iSWFWNlhaS1RiYmtLdityS09YSmk2MmFPRmZuWTJLSDFnL2VsWk9MRlVweW5OS2lDSVk4U2xRMk5VMmtzblBwdE9mejV2NjJ4RzlaUEs0YytlbDlhM25tSFN1OXBQOFQ3L3Q1b1FKVjliamp3OWtvcFRwOUE0VUJJQ01jUUVNTmdYbm9RS0JRZUNUS3E4L1h3S3VSa1RvVlpucU45Z1RNelE2cG01VXJMWDFlUjhJanl5UGdJckFkai9iYU9VcFBIdkZ1VXBsRUMwVVJ4VldTREhsV3lVMXhSdHRablRKSkNwUitwYU1vbEtzeEx5QSs4R0o3azZTSlBhZ3p3ZU9SNy8vZ3N4eHMxT0FVRWlQRXowTmV2WGoyWGhtNUdaVkVGTXF4UVdrRkgwWXdwNmdEWFMyS3cxM1ZWWS9PODkvZEk1NDR2cGErdGphSGR4cko3bzRFUmxRMGxNd3ptNlR5WHJ4WTVmYktzbTN5cEZFK0dBTDhkQkJsUFVBUUZPL1ZTZW5FaGhLL0txS0IzbTRLS0ViNDBLcFRsejVDT3dtSTNxa0tnMytZNjR6ZmFIcld0ZXBmS1FvaTJhT0dFcGRFRGhyUXUvZHRTZWZXVnN1c0pYWWl0V0NrSFAvdEVqaForSVljKytWaWEzMW9odTU1NVdqYmVmWWZTTUlPMEF4ZVVEQjdMWjEvR0VHNDBwTGp4Y28wc2M5N0cvaWdiTTIxcjF1aFVNMUhIbWNIcHBqeFBEU3M3TGNpaVBBdU9wRHhNbnlCSDFxMWpIeGcza0NHa200SnRVVWFxTUlqTFJnTWpLdHNyaG9TcFluWS8rWVNjV0Y4akhlWGxjcXlzWEk2VUY1K1ZqbGFVU0VkWmtiU3VXMHRQcVZMaHcwajh2QW1jREswT2I5WE1mQm5vUHUxNEFHTkdReEFlZjVUUi9sNnBtRk9naHFlR29rWkltdURSTHErY1Z5RHRuLzlUaGpwN1pGQzlhU2lodUdBb3NCTE5Fd2xkd2ZmM3lVRFBHUms0YzF4T3JxK1ZMNTk2UWlvS2NxUTRiWkljZU85dEc5OURvT1A4QU54b1JrcDlleFlqUG1vV3ppZlBsQ1dtRDFVc2pVdU5FK3NhaTRJcUV6V0VtdXNYV0NmUzRXaHhHZEFoT2FrRS9LbkN5TXFHSUpVWUVBSmxONjFZeHZ1RGFubEpnbkZBNWlIY1lkQ3E0UnFlQTZhNGVGS0dHZHJKZktaODlleXZBKzJXeHozTEJIZndINnVsOURKTUk2WmNScHg4bExPazhxcVowdFZ4Mk5Ga1hoRHdjWnZtRm5nT0Y1WFB1M281MktmOHZzMHlXckFmV1R1YnYzTUIyK1BIRFJqbi8vRGFUeWhEVGhWcTNPQzc1REtOUW1xc1VIUkZMbllHbUxjMVY5NlFIeW91am1nRHJnaGRORWI0U1IxU21MUFZBdjNLdFNCVEdwMnlVeFVFQUFMR0d2TkVYUzBWenFsQlF4a1dLSmdlU3ZKeXBIYkJQQm5zNlhFZERMY0p6U2xJLytvZmU5UU1UK21waEVkQVNCQ2VSbzBqR3E3SnZDYTBweHhzMHJONkQ3N3MydUVQVzVoSVFYNDdZelNNRElhRGVQMTBnMnIrREVydDNiZlJHR0hnbUxZZ3gwSVlxUEpSUGtPbk1WVXVwMGcxQ016bGFMUDVqdTlaZHlKMnEzT1hyQkFaOG1nZ0pjK0dRSXRkdURudzFqSVZERnBRU2tsd0xvOG1rRUFVQnVYZzN6K1UwblNkOS8xcUZNcFcvSlZ6WmtySGh2S0FnNWxENTlGdVdueW5HWWUyOTNRaFlSRTIyT2NYTmxDY2VURkJLNG1LUHk0QmFBZ21UTjgyOGlJVnBoOTBCUEI3WVM5K2p1MjZIdEZwcm1vbW9sbEVLNmVkckF6WmV0ODlVbm50VmFac1RiZ0hMMGNxbTVVbkhjVTZkenRhQUhGNlFqbXFTZ2xHWHFDcFVIMUNLTnEvOGcwM2hoS0Jnazh4Q0VKanZSR0xIRGFhT04wcFpiT3hVTkg1V2tNNlFqam1yc3FaT2RLeTZqMjI4NzdsOFZoSUc1UU50eTJpbDJBcW9QRnhTbEJ2MElVZ2hlM0hvN0pkZndmMFlyVFNPdGE2dGxFTEFLNmpPaDhZTGdobk5YTDloL3BrNTJNUFU3bGNuemlGWWdyQzR2YjRsazNTOU5lVlVqaGxFbmMzWlRNMFN1Vk41U0lXYWVmRER5cW1pQS9nWklyeE5GcElMWXlyb2pudjVHWHpxQkZnWkZ3WVBHSDI2NVRlM1NOMTkveVFod3MybDltS3Vyd2dWL1l2ZjgxeDVGYWdMZ0VObExENS9zVlV0amMrZWplaWcyNnpPc3BLSW1Ib0h3d0cxd0g4QlJzNStqV25halFzZW9PeVptNWNsa2NBMThpTWlRWENzUzFicE9hNk9WUXlwaTNRQ3VNc3lwb21kWGQ5VC9wVkRvT25UMHJwbkZ4M3dLTjdmbmc5akZkRCtZYjVjK1g0eG8yR2pqOWVIZ1kyVEhTZENxUzJRSE1KMnlTdjdDVEFBZ2g1R0ZzTFdvRTZKSXJTcU9OS3VPN08yM1ZmT2NtWTB3VEZsUlNvSVMwejNMWTBjOGdjSHNEZTUzK3ZjelZDdjg1MzJpY0lVWEZVWFQxYnQwMm5neEY2cGR0RmxIa0RoQ3FqMnpaV2ROOHAyamNZRWF5OU5kZXlMdmdhWG54QkNuVmJaOG96YjRWWEYwNitXTm8vV2FPTjFad1QvZEw0MmhzOHZDck50b01kVzdSbXlMck1DZEx3M0I5VkdPQUkrRTJtRVUyT3hsSEFtSlZ0NCt2QUtxUmczUjRRNGtpUkkxU2g5K1J4S1NzdzcvUjRFY29aeHYvK2dmVkJjOWNld0tMK0hLK3JVYVBJc1pWcnJDL0NlbEYydWxUUHYxS09WbFpLUWczSzk0SHBlTCtOWUpqZ05JL2ErencxWVlZMktMaUx6dVptcWYzdVRUemN3UW9jWVJ6VEZsTFZyZGRKejBGN0FJUDV2Yk5wajFSZWVia1V6OERoa1BLa3ZHRHhXYVR6T3M3T3UvYnZOMHIwTHhpeSsyRStDaGk3WjBPL1FaZCt0bFVZZE1KUzVRMG9tU2dqd1h0aHlWQVM1MXdxVEJXbFc2Y3pYKzVFRCswS3BBYmVrRHhzL3ZGZFVwdzUwVHhCK3pJcVlPRkRoVS9WbFhtNmJQdkp2ZEwrcjAvbHpONEc2ZXR4RDE1Z2pCNlBNMEpjTWFIZVJ5ZldPOXI1a3dLd0QzTDFWcVg5OEQ4LzFyblkxanM4SGdWOVdGaG1wVW5qUzM4T1lrSWZHT2JlMy81YXlxWXJUNUN4ZWpiMzNscGVselpSRHJ6L3J0Sm43UTFNMk1sMXFjRTRoSEgvT2syeWdQeWNhNWNnTUNHSFB2K25icjF5cVdoL2dzU3dwYUc1OXZaYjJEWXdvUXJ4UlN2b0FtOXdRTHBhV3FUbTJua2FJbkhzYUh0VTRNQ1JhUkgyckJvMjhaQ2hPSE15UFdQWDQ0OUs2OG9WY3JSbW8vU2ZQT1hRbVRFWldvdEk4VElpUVJoN1JIREMxeEk4TmRIYkl4dHV2VW5Lc2pTRVUyNUtuOXRhVlMyWUt5YzNiN0cyNk9kNFBGcFJadDZ0U2daUFBwUkRSaHV1dXlZOG1PRllwTTdBNmxLSDhabXpGV3k3NHdtSXpuV1J1ZzYweXU1ZlB5R1Z1c2NHODVpL3dBeERNRmJYV1ZQazhDZi9RSWNZSXlaRWx0VUNBbU5hT0w1dGg2ei96dFZTTkgxS2JDdG1aODJXYlA4TmJ3ZHUxRlV2bUMyYnZuK3oxQzk5V05yWGZDejlSM0FBWS9pQ3h5UEROWVptRmVpL01BUTYwVTlsY0t5a2hITEREb09IUHpBK1ZTQVV1WDNwUTlwSU9VUmJKeHVrb2Q1K1JpTWVYRGtlakNlTkRJcXI3ZE9QYlFnbll4c0xOYU9EY1ZFMmppRlBiOTdLdmVIUjBqSU5vWjlJNjEvZmxhLys4RHVwdS8wMjdodXI4bldlanExS1dWWkZsVTlQazYzL3ZWaXhPS0VwV0JhUENpd1EvTGxhVDJ1VGJMLzNYaW5PUUlRd295blNITUtsa0hRN2c2UEpwRkRxUW4zVkZYbFNPbmUyN0hqb0FUbXh5YTE0Q2VZMVFSSHVjT2RDNEdsRStFYS9qYmZkelBtWGZHSnhSb1ZQazhvNWVZeHNmckNnT0k0ajBycG10VWE5Zk5LSU9kNFdkbW5FVlRWdmJtaUw3b0hlVUVnTnhrSFpJRFloaHo5Ynd3Y0wyRm9VWjAvbW84ZEN0VzRJR1E4QUdLTHl6YU9oSE82WDFaTHhNTC83dEliWFFMaE9hRnJHSmVaNll5OFN1dmNraGt4dGdTUFVxbXZta0RaN0dxZTQ4N081bmVGSm5TYUVSVDZLZFNFU1pRZ1RDNkxDck1sU3F3cnExSzFTSWhFTDZhUmhaR1VEY0hTTTloMjExWHdHQUJvNEJtVG1vdGltR3hkcEUxcy9HRGcrWEo0WTZKR2FXNjVYMm5QWmo4bEhCZDFhdHNGUVhGdW1yd0hqRnNZeEgrNTQrSDd1bjdIZzhwN3J3eEhQdzVWd0tsL25NeHdOUXNqZERRME9nNGVZZ0NrTXk1blJHN3pIRzZDTUJ4NnRINjJXdXNWM1NmWENhNlhvY3ZWa1hRemhzYUVYT3JkcTRFRnBZTzZuRWpVNlBIckUwN3BkVHp3bUNaNnZHOFRIT1Q5RTNyYmxSM2NISHNPWk4valh4V1RqcWhVT1lUTDkxSjhMeWMzdnJOTDI1aUErQ29KVzVEVTNMSFJUbk84ZmsxT0tNRDdLZHRSam9WRXhkNVlTaUJjS1hHak50VEJiTlFNNFZMQnFwUWpydTU5K1dycmFXcTNqbUFDUklBcS9YWHQyUy9ONzc4cXVKMzh1dFhmY0loVWFQZ3ZUSjNIUnhnVWMrRkJGOHkyYWZDakdMZlRVaXdvekx0V0Y0cTF5ZWsrOW9hWkE0OHFKQ3hoYWNrWE5UMnl0TTA5VW5PWFpXRDlra25jWWRlVzhLeVRSYmQ1UGZKcUhkWWlyQXd6MGRFdmxWYk81TUF2S2RrNERwYmV0WGVzVWJ0M1lkUlF3TG1HY1lVd0JnOWYvNm5FeTdRVnJJUTNQcm5XZnFYUGxyaGVlbFJOVjFYd0VPUjVBcjRoeGpXc0VmNFRGbnVaV1BvNDkrTGYzcFg3SlExSjVlYTZzbXphSisxOEw1eGJTc2NqRFF3a1lJL2JyT09IcWJtME5hSjNqS1poU1RGSGVvNjBPQ3o5RUwvQkxKYmxVT3UwUzJmdktpMnhyT3hRSE1acTVhRU9tOXc4c1h5YnJNdFU0c1RXRnpFR25PZ3JtOFcwYXVheWQyN3Q1emFjSVkxYzJpUVlUdGdMdk90UWkxYnFOcU1ySjVSektjS21lZytOQUVIMTYvejUwY0JCai9tdUNEWTlmQ0I5ZUU1T0FiUWw0QjlzWDBOYjAzZ28rRGkyYUhwM2c0Ym02aFV1VXAwaGg5aVRaLzVjL2N4dGxLalVnYm5jWmFuV01udm92cGZxNnEwSUk5NHFDSVdHQmxUaHpPaGdNc21TdnhyWGh4ZVZnVjZkVVhINFphZUxVcHpuZnBkTzhZdDVNT1JKN1FPSzZwd3pqTm1lYmhadnlZSjBSMDdZaXhpb1Q1UzAvdXBQdHlQeG9xUjBCQWpyaXhsNDUyWk1nVkFoNllLQlBHbDUvaGNiSCtWSHA4NjlMWVZ1SWh4TGxNL09rdDdYRmRmWmcrSUtZWGJiMytUOHlYUHY5TlBEUnlLZE5sRDIvLzYwMTR2ald3WFhqdGRram9xTVdjS0Yvb0sxSXB4UXNNamsxWUtyUnhTM28zZlg0STlhT01EcG5HUmRsZTE4S0ZxdXcvcnZYbTFVcW9aeDNRRENFbVovRFY0VFF6cmNkS3dSRFU0UWViNFRiVk1Qa2hhMFpRdXF4ZFlYMElpb0d4b25ueWJwVndwWU5DN1pXN1AxVnNMNGZrSGdlbWF2eDlEUTJ5c1lmM0VwRmtFZDZOM2hWbnRXcnU1dWJ0TFhTQmp5dUh5RGc5T0F1c2Zyb09YcFlLZ3QwZStqd3dBRDlDeDlWQytmSnFibzZaeGYvRDhvR2VDSGdwMThYVEdlMmI3WDN1RldBb2IvT08zaDRYM1ByRGRKNy9HaGdjRXd3REVjUUlySllFVC94NkdQejVLQTB2dm9pcHhzSWxRYzhqRWk2UjllRjVGZS9mWW9yZmZaeHVBaGFoZ2xoN3NUV3IwaFgvdWdQbzdiK3lxLzIzLzdMUjJTZ3E0ZnY5Q1QxOXpRb2dDWi9peVg4OWZiTHZ1ZCt4OWViYmFHbWRPWFpvaGV2VGU5NzZRVko5TWVPcGxPRWNWTzJQOFFMQWxYVCsrcFBmNUNpcVhibXk4V0xoaVF1aUFxeXBQR1ZWN1h0NkFrZURrbHp0Sk1hTW45Y2F5bld6dVJKbzRCM25OcXlXZFovWjU3U2FCNWtvVlBuMnN6SnN2V245N3R6ZWsydUg0RmVxcW81ZVVJMjMzdVB2VitIZ3hERjRVL0JvSENjcHRsZ0xnSGlaVUNzREFxOXNaN2NYQ2VWczY2Z3M1Z1JxVUZxS0FkK0hMdDJ0eDdRVnNaYnFqQU9DelJsV3VtaktDRTlDTUVKdGx1M1ZqVzNYT2UrMUREdm9WQndLclJ3cnB6ZXZZZnR4Z3hPWUVGdW9hREFjcVIwUXJnL0tKMk5EVko3MDAxVURnMVJGYzZGMWZSMDJmb1RLTnVqOEpITEc1ZE9BeHRxcFN6RFBrTHdIbzI1dnlSckV0OUU2ZTFvWjB2MG94Tm93Y3FXZ0lNNTVhWjFWRFRxZEE3djZaSDZ4NWZ5QVFtbUZ0QUZIVUR4MkVvZTBPMmxkN0JVWWR3OCszelF0dm9qaGpsc3ZialBWb1ZqTHNJeDU2NW5udEs5WlMvYm1RRDhZYWdweHBjcEJQN0ZGQWFCYUEzYldFT2ZXU0ZjdUtJVHFCTnZBQmpjaGhzWGtDWThLMmVvMUcxalNmcGtxWDkwYWZoY0NSREdCd3JGVi9mZ1lpbk5oSUdvQVd0L0x2UjBqdzJsTjY3d2h5Z2pnTFpocytHNXlnS25abmhkaTlGQ282SXRKTldvc0RLZmU0VjdGU3RaSnVqcisxc2V3VGV1N0lGangyVHJnL2N4SENGTWhwQ0VwTjV6Y3RzbTF4SmcxazhJVkp1bHMrVHFCbnZQOEdpVEZXeUQrdWd4S3NCeTlJdFNtTThWS0JiOWExMzlnYTY4Y1NhTk4wWEFwenRqVDU4b2pXL2pmVHYwY1NhaVA3N2ZxWDE3cEdUcUZIb2NEQVRLUUJtZjl0VGV1SkFuZzZsNEh2QjczTWFuSmh0Q2huVExWbnZQOS9sOEcvTGpPS0JSeDRKM3QzNndDajNET0FFWDhTallSWUJ2WE5rWStFaEpzVlRNdVl3ZXd6Q3BSUFBoUk5ZVTJmU0QyOXdCaTUySmV3S1JPUkU3Y1BPN0tuamJrcC9LNXNVL2tKT2JOa21DNStxUk1xeFhkTWdUejFrd1dmS251Nm1GejhkeHRNcDlMZm0wczNSODZOQzVjenRhS2hoK3cyT0NySC9rZjZSMEdwUnRMMktZMGpPa0tEOUxkdjd2WTlvNDlSQnJlQlZZTVB4NEJnTU1UZSsrdzRkSXdJMHhPRTFBNlRvVnJyOTJucmFBWEp4eUEzZ21rK0Uvb215TXUvTVhlQTBZMnhKZHRmSzB5bkRpcXhMTVAwWmJGTVpwNVhHYW5mQU9ybDNMcjBzeHAyTDF2UDFuRDhuQlQxZkxxVDI3K0g2YldiZGpYanR6RWVpUTBFdjFENS9qSEtzcGwyMzMvMGdWcGlIUm5mYkJHQkY5c0JMZit1TWYydGNoQU5EaFBCelEyZHFvNDArZ29xa0VEYlA0TEFxS3FKaVZMNmRoSkJ6VDBaRUNzRGwrTklXSWdQS1pMcW42em53dXpyREk5ZXNEYmc4enArbzArYUcxamZGc1plY0FNZmptbGUwWTZEdllLdVZYWFU2UHJuUjdXUkFOdkhpMGQrWUFWcGNHSmxnVUxMa3I2VzF2dGE5TFZDRUlaVkFTM2huSGUrMGJicjVldHZ6c1FXbDQvamxwK2ZBRE9WSlZLYWQyYkpPdXZWL1JFTERxYnYvM1dtbDYvVlhaOXRBRC9FU29TTmNONXBIMlNCTEtLOExMZndVNTB2YkYyaUF1bWlDTFZyUHI1MHNwZEg4azdQdGpqNDF2d3RtVVhVYW5iUFlqbUxHenYxWTJ2UHF5dmFDWm0yTlJNYmFReEpNeXRQUjlReiszUm9uRE42NXNzMUVMd2ZpSXJ5UlRWNWRLWkpIaWdySzVEMWRoYlgvZ3h5UVlqelc5VUllVHUrT1JwVW9IckZzWFEzbmFuNDlNM1pTZ2dzYlJKSERpYzZMSytUUDVFaUkrcUZ0LzdkWGNycFROTGJBK09pWWVoS0NmUDdpdzEzbHRhL1BWYjU2V3hFQmZUQU1SUGQzTkRWSTFiMVlrRTdkNFFoa1BXNDdWNGp0djEzaFU0TWJ3QXpsQU1kSGJ4ZWNLa0pzL1lNRjRLRmNVekpDMlQ2TVBKT0xyaEJnYXduOHNqUHZGdzZhYmIrVERCanNzd0ZlTWJ0RXhKMWM2UHZVUDkrTWVvZjIxNzRuNm5WSjF6VXhWemxRcHhHbVNDNTNlcTNnczYzRDVpSUU2VEIwbyszdEkvSElTQzBhdXZvMFdmcjZyN1hjc2VWREhNNFBEcnduTTB6UElzd004TCtjQ0UrTndmSXNJTmJmZ21iVzFzeTV4UHM0RDFpR002UzZ0M25mWDh0NFhuek5IVVFNMVhoeXZLZ2RzOC9BTld6aGI4RWdDTW9QL2dMSUJSalhHN3R5MWsxc3hlSmJmUnRERHRhNXU4VDNTZi94NGFFdm1WZEZlNlBoa3RmN0p4NlJLdHgzbCtYakwxRHdxbml4YU9BVzdPbHZZb0J3SkNVTERVeTkvSDY5TTdmblRiemdxQnVQNFJnUnp4S1llSFIvUDRPSE5mTTg3R0pyaVNwc2tiZnplM0swN2ZOOFJ3SWZxVUhaZzRSaGdDa3gwbm1FSXAzT293WE50Z2NnRStxK2VKZTNsUld6dGNaMExWTmx1TUNhOC9RSEF2OWxRWlUrZGFKK1hJbHhvd3J2ZFRXKzl5UllSSVNPQktjd3pndkxlUHp6RGhSbU9Bd3N6SnZQUUh3OE5NSWMyTEgvSnJOd0lJZURhSDlSZzRONldBN0w3bGIvSWxydnZWRytmelpWcHVlTEJXeWVJR3Q0SW9IZ3ZFSHF2S2dtR3hwY25NTmRyZmMzMTgyWDcwaVc2QmR5aXBDcHlNamFjTC9QeUErK3RsRUs4RUpFeGhlKy9GV1pNSkEvRmFkL1NxZUlhOVM1YkdZTkg1dWc2RG1Ba0Rjbit2end2LzU3d0xYN3VoRStBa1NpM3lmOGxPeC85dWZUcGxqVEFPUVkvNi8rZ0dRenFvcWFlcjdFZS9QQnZtajVnd3A3MHpPNTZJaktHUm9aa3l6WG9QdEV1VFc4dTQ5T3g1bVd2Uyt1eTEvVDZEV25XeGRQaHp6K1RvVzdkUjJzL1AvK2dIOGVMNDFIbEQzU2VraE1iYW5RLy9KYnNmdXBKdnN0V2M5TkNidlB3QWtDaENnR0N3SXY1NjNRcmhVZUYxZGRjSmJWMzNTRTdmdlc0SEZ6MWxxNmNkeW8rVzFNQXNaV2dLS1BiVkthMWlVRTVXbHFpTkw3TS8yM1N2UHhWT2ZEbTYzdzFHZ3VvSXpXVlZFaVNYR0xGc1lGUjBkM2VJdnRmZVVubDlvYlM4RHJIMzdmeVZXbDg4MlZwWGZPeGJVTVZ6ajVPTVRCbDZ3K0lqQktFSEZlU0RaWnNxOUg5a1lBTFE3WlZERjRZbWlWdGl5d3p3SVZQNXhnbmhEajlzVnRxRnJxSU9kUGVKbDM3R2xXQlg4cnhMWFY4bWZERWhtcExXb2IzZHU3WkxmMkgyalFzZGtlT3JCQlhVbFRuQ2dxeFloZ3pBbC8ydEhvekhUc0EzUURPRFRDRVhrUVIwblFVNktLUTR6U2REZEdjemNZR1hwaXNjZFUwQWlzUy9LQ3BRa1NjSnZVU0U2NGpISFZPc2pheWxWREVWVkNFMTQ2N0JIaTZBajJ4ZTM0OGdxdVBicVBlalQrTXQyaXJCV00wT3RBV0hPQWhXS0FkbWJ2bmhjMkhaQTZ2M1JzN0RJbnVERUNMSDVNbGoxd2o0SUNuM3ptUEpuODNEdnluZCs3K01BREJVSUsvSDJNZ05IWjFGd0syTlZ3QmlEUGUxKzVIRFBqN3JvM0Q0ZThHM2JzYUNqL1dKb1F4N2U3YkFrSTdWMmZGaUE2V2s0TmF5QUhST0JqQnh2SUozU0tqQWM0NE4yTUFQNEFhRThaQW1YaUhJMGU5Rzk5dTZmaHg1aFc0UUlzYUFJeFFRS2p6QmVab3IvZGpBcmtRY0R1Z0RXMFVONVlud21mRGlMSkdKa0NqSlJyTTNkSStwcFZnRlA0R0lKUnhEMjNqM205MUFGTGorcmdzVm9qYUFZeEdHNDlsKzR2YU94TDh0YThlSzhURGRaeFh3Mi9Ydy9uaU5mc2xRNWl6WFcrRnFCT0F6TGt5d0s2VDI0d0lTYmc5UGhDa1dSeDVERml0UCtkc01xd2lmaGxtSTVlZlpVaHhpTjlDV1ZPZ2pwblJhSkVDNVVpQUhpMWxvWTJ0aFNuR29mRFpHRUVwaXZHUWhCTVh3d2RSV3NBRDZVcTZKL0ovVVZiV09oTktnQXdBQUFBQVNVVk9SSzVDWUlJPSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIkZJRE9fMl8wIl0sImV4dGVuc2lvbnMiOlsiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiN2UzZjNkMzAzNTU3NDQ0MmJkYWUxMzkzMTIxNzhiMzkiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjp0cnVlLCJ1cCI6dHJ1ZX0sIm1heE1zZ1NpemUiOjEyMDAsInBpblV2QXV0aFByb3RvY29scyI6WzFdfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjItMTAtMDciLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwidXJsIjoiaHR0cHM6Ly93d3cucnNhLmNvbSIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiRFMxMDAiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDIyMTAwNzAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIyLTEwLTA3IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjF9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjItMTAtMDcifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyI5OWI5MDNiMDBlZjJiMzc3ODg5ZmJkMmUyYjEyZjU2ZjY2ZTgzMzE2Il0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjk5YjkwM2IwMGVmMmIzNzc4ODlmYmQyZTJiMTJmNTZmNjZlODMzMTYiXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkZlaXRpYW4gQmlvUGFzcyBGSURPMiBQcm8gQXV0aGVudGljYXRvciJ9LCJkZXNjcmlwdGlvbiI6IkZlaXRpYW4gQmlvUGFzcyBGSURPMiBQcm8gQXV0aGVudGljYXRvciIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjJ9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCIsInJlbW90ZV9oYW5kbGUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQjJEQ0NBWDZnQXdJQkFnSVFCVG1rM1p3aWxGWGpzWnl3SERuTWdEQUtCZ2dxaGtqT1BRUURBakJMTVFzd0NRWURWUVFHRXdKRFRqRWRNQnNHQTFVRUNnd1VSbVZwZEdsaGJpQlVaV05vYm05c2IyZHBaWE14SFRBYkJnTlZCQU1NRkVabGFYUnBZVzRnUmtsRVR5QlNiMjkwSUVOQk1DQVhEVEl5TURZd09EQXdNREF3TUZvWUR6SXdOVEl3TmpBM01qTTFPVFU1V2pCTE1Rc3dDUVlEVlFRR0V3SkRUakVkTUJzR0ExVUVDZ3dVUm1WcGRHbGhiaUJVWldOb2JtOXNiMmRwWlhNeEhUQWJCZ05WQkFNTUZFWmxhWFJwWVc0Z1JrbEVUeUJTYjI5MElFTkJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVuZkFLYmp2TVgxRXkxYjZrK1dRUWROVk10OUpnR1d5SjNQdk00QlNLNVhxVGZvKyswb0FqLzR0bnd5SUwwSEZCUjlTdCtrdGpxU1hEZmppWEF1cnM4Nk5DTUVBd0hRWURWUjBPQkJZRUZOR2htRTJCZjhPNWEvWUhaNzFRRXY2UVJmRlVNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdEZ1lEVlIwUEFRSC9CQVFEQWdFR01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lCeVJ6NE9BbFJaOUh6OUtWN2cyUU50QzBDOEp4SC94TEpZOEZaRW10SjNzQWlFQXNyZVQwK2VOa05jVWpJOWg1T1BDb0g2Tm1zT2tndkVBQkpackYwN0FEa1k9IiwiTUlJQjJEQ0NBWCtnQXdJQkFnSVJBTXM4WVhWQm9CTnVYVWpxZkNvWDd5NHdDZ1lJS29aSXpqMEVBd0l3U3pFTE1Ba0dBMVVFQmhNQ1ZWTXhIVEFiQmdOVkJBb01GRVpsYVhScFlXNGdWR1ZqYUc1dmJHOW5hV1Z6TVIwd0d3WURWUVFEREJSR1pXbDBhV0Z1SUVaSlJFOGdSVUVnVW05dmREQWdGdzB5TXpBeE1ERXdNREF3TURCYUdBOHlNRFV5TVRJek1USXpOVGsxT1Zvd1N6RUxNQWtHQTFVRUJoTUNWVk14SFRBYkJnTlZCQW9NRkVabGFYUnBZVzRnVkdWamFHNXZiRzluYVdWek1SMHdHd1lEVlFRRERCUkdaV2wwYVdGdUlFWkpSRThnUlVFZ1VtOXZkREJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCRDJMSEhBUXFZYmRSMVdabHVlcnRNMzByV2hvcllhdldtTVZhNG5kWDlQWnd1UkVwTFE0bTFuRWxxUUtNblJFOC80QytScXdpYXYrbXBJNGt4ZDVlNXVqUWpCQU1CMEdBMVVkRGdRV0JCUzNaWmp5R2xoWjk5TjF2TG9UUFhWVWE0WkVZREFQQmdOVkhSTUJBZjhFQlRBREFRSC9NQTRHQTFVZER3RUIvd1FFQXdJQkJqQUtCZ2dxaGtqT1BRUURBZ05IQURCRUFpQW9EK1I2a29sSVdhTkp6NGh6MDNEM2dlczNHYk1CakFXcGtPVWc5YXlGZ3dJZ2JFdzdBWVN5azY4T3Z4Z1hlemduZFRSVEV1U1dUK2ZkUm5MYUJOc2FUdzA9IiwiTUlJQjJUQ0NBWDZnQXdJQkFnSVFGUU5LVys3emJnLzdkK2xUeXJJV3dEQUtCZ2dxaGtqT1BRUURBakJMTVFzd0NRWURWUVFHRXdKVlV6RWRNQnNHQTFVRUNnd1VSbVZwZEdsaGJpQlVaV05vYm05c2IyZHBaWE14SFRBYkJnTlZCQU1NRkVabGFYUnBZVzRnUmtsRVR5QlNiMjkwSUVOQk1DQVhEVEl5TURZd09EQXdNREF3TUZvWUR6SXdOVEl3TmpBM01qTTFPVFU1V2pCTE1Rc3dDUVlEVlFRR0V3SlZVekVkTUJzR0ExVUVDZ3dVUm1WcGRHbGhiaUJVWldOb2JtOXNiMmRwWlhNeEhUQWJCZ05WQkFNTUZFWmxhWFJwWVc0Z1JrbEVUeUJTYjI5MElFTkJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVzRllFRWhpSnVxcW5NZ1FqU2lpdkJqVjdER0NUZjRYQkJIL0I3dXZac0t4WFNoRjBMOHVESVNXVXZjRXhpeFJzNmdCM29sZFNyam94Nkw4VDk0Tk96cU5DTUVBd0hRWURWUjBPQkJZRUZFdTloeVlSclJ5Snp3Ull2bkRTQ0l4ckZpTzNNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdEZ1lEVlIwUEFRSC9CQVFEQWdFR01Bb0dDQ3FHU000OUJBTUNBMGtBTUVZQ0lRQ0IwTkZRU04wejRsV3oveWMzNmV3clRDenR0Sy9xRnZsYVBPS2grVDFvNndJaEFQMG9LS0ErY2ljc0R5M1kzbitWbFA4ZUIzUEJ6TWtodlcvOUlTWEN3K1ZCIl0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUZBQUFBQVVDQU1BQUFBdEJrcmxBQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQkhacFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR3L2VIQmhZMnRsZENCaVpXZHBiajBpNzd1L0lpQnBaRDBpVnpWTk1FMXdRMlZvYVVoNmNtVlRlazVVWTNwcll6bGtJajgrSUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWtGa2IySmxJRmhOVUNCRGIzSmxJRFV1Tmkxak1ERTBJRGM1TGpFMU5qYzVOeXdnTWpBeE5DOHdPQzh5TUMwd09UbzFNem93TWlBZ0lDQWdJQ0FnSWo0Z1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNGdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlnZUcxc2JuTTZlRzF3UFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIaHRiRzV6T25Cb2IzUnZjMmh2Y0QwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOXdhRzkwYjNOb2IzQXZNUzR3THlJZ2VHMXNibk02ZUcxd1RVMDlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl0YlM4aUlIaHRiRzV6T25OMFVtVm1QU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2YzFSNWNHVXZVbVZ6YjNWeVkyVlNaV1lqSWlCNGJYQTZRM0psWVhSdmNsUnZiMnc5SWtGa2IySmxJRkJvYjNSdmMyaHZjQ0JEUXlBeU1ERTBJQ2hOWVdOcGJuUnZjMmdwSWlCNGJYQTZRM0psWVhSbFJHRjBaVDBpTWpBeE5pMHhNaTB6TUZReE5Eb3pNem93T0Nzd09Eb3dNQ0lnZUcxd09rMXZaR2xtZVVSaGRHVTlJakl3TVRZdE1USXRNekJVTURjNk16RTZOVGtyTURnNk1EQWlJSGh0Y0RwTlpYUmhaR0YwWVVSaGRHVTlJakl3TVRZdE1USXRNekJVTURjNk16RTZOVGtyTURnNk1EQWlJR1JqT21admNtMWhkRDBpYVcxaFoyVXZjRzVuSWlCd2FHOTBiM05vYjNBNlNHbHpkRzl5ZVQwaU1qQXhOaTB4TWkwek1GUXhOVG96TURveU55c3dPRG93TUNZamVEazc1cGFINUx1MklPYWNxdWFnaCttaW1DMHhJT1czc3VhSmsrVzhnQ1lqZUVFN0lpQjRiWEJOVFRwSmJuTjBZVzVqWlVsRVBTSjRiWEF1YVdsa09qSkZOekZDUmtaRFF6WTNSakV4UlRZNU56aEVRVGxEUWtJMk5EWXpSamt3SWlCNGJYQk5UVHBFYjJOMWJXVnVkRWxFUFNKNGJYQXVaR2xrT2pKRk56RkNSa1pFUXpZM1JqRXhSVFk1TnpoRVFUbERRa0kyTkRZelJqa3dJajRnUEhodGNFMU5Pa1JsY21sMlpXUkdjbTl0SUhOMFVtVm1PbWx1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2TWtVM01VSkdSa0ZETmpkR01URkZOamszT0VSQk9VTkNRalkwTmpOR09UQWlJSE4wVW1WbU9tUnZZM1Z0Wlc1MFNVUTlJbmh0Y0M1a2FXUTZNa1UzTVVKR1JrSkROamRHTVRGRk5qazNPRVJCT1VOQ1FqWTBOak5HT1RBaUx6NGdQQzl5WkdZNlJHVnpZM0pwY0hScGIyNCtJRHd2Y21SbU9sSkVSajRnUEM5NE9uaHRjRzFsZEdFK0lEdy9lSEJoWTJ0bGRDQmxibVE5SW5JaVB6NDc3SlhGQUFBQVlGQk1WRVgvLy84RVZxSVhaYXZHMk9vcWNMRzJ6T09rd3QwQlNKdHFsY1hWNHUrYXV0bFdoYnprN1BVQU1ZOUhjcktqdE5icThmZUFsOGFCb3N6ejl2cGRqc0dHcXRGM244dVRzTlNacGM2SnNOVDUrdjB4WUtudThQZmY1L0w0OGZnL2ZyaWN6SmdZQUFBREFFbEVRVlI0MmtSVUNaYkRJQWpGWFpPWTFUYXROYzM5Ynprc1NZYzNyNE1FNGZNQkFhRDZ6bDh5LzlUT2dldDhkNWpmTjc4YndNL2REQ1JwUjUyMXpYZm9qSEowNUlJeWhCQVVTVkFPTmRHekJZdDJmN0tGcmZrSmFBa0hoOUZaaGNEWEhSa1RLbzlNTGloR2FhdkltblYzcXlFWDBFcHJnei80RHdVRDdrQ0hSbmQ4UUZONDNHbzRVVm1ERGd6YTR3MjdvaXpkQTIrY0srdXVVcGpqbzIreHdjLzQyVzUweDVMR1llREJzUjBIVkl4NXg4aUY2MENibGJURUVrRnIyN2JOREJVVlNxMU9LVlBiRTYyYjNFSDhGcUJnNU9PT0V1YzJ0OFpKaXFNT3VHcCtjS2pnN3dWR2Nlb3pxTjRweGdWUFFrakZZZ2JWSktEVWhEQ2pZcmF3UDVxNEVUZ0M5ZklNUkh0aXRwUWNDdkpPRUxjYk1zUWduY2lSa2xqcHlRanZHNDRqcUJVRVRGaUJpMVBFSXlla096c1crVHk1Y0xIb3M1UitkTVMxTHRTU3hmM2dRSGN6UjJDSTRnTU5wVzRJUkExUU1hNnRKNCtDNnVIdUdFOG1OREl5RnFnL09QL01NVXVlUzZJcThTOTBkQWVCSlNFeS9xS2tLK0JOd3o4Y1lZNGpiNUo2dTRpV0NJMkIxWjU2TFc1a0VjNGhrZE1wc3ZVQzU1ODVTWDBRdWJjZ05xeWZnREZFY1R0KzQwLzBTNU54MHdhQ3czT0trY09iQTVJbjBBWXAwMXBqancybjYyNlVEanRId2EyOGlIdVRLcXRydityZVc0MU5aNmlHbHI3dXVMSkNma0Z0Y3RjRzA0c2dtMWVOUytaYURucGFURXJHb3lYNUpLMmlNejh4czBuT3dXR2NQRE40OXFhQ2Q0YnpKb3pEWm0vYUJLK0Vvekx3K1hoTkJpWXdIZjBzaU91MVhQa0cvekt3dnFZS2NmU3dERWNIL29VZTA3ZXMvV1E4ckl5ZzJET1hqOHRqa1pkdURCL2I4aHpEbGxNTU9DUzVCRW5kNTM0Zjh0aTNVWmM0a01zM3hMeWFmTVNzSmhkRzhYUHFqTms1dEFnTzI1ZmVLQ2huVmREai9KMEZNa09zVS94TUJ2MHdGaFllRUdmVkgxM2Z1RFUweURGTGE0ZmM3Um5XSEJmdVRGVjJ0RW1Od2FkYzdhYzNVWTJqZkJsN0hUMzZmZTM0aVFPNW1OQ0ZGQlcwN0tqUGdxaE9MVTAxdlo4UHVlWjJKQ2xGWk44amtVczY5dWthOWVQcDYrRWZMNEFGNStOeXdTYmlySHRjQjhNbC9na3dBRWprSzY0S2pIUGVBQUFBQUVsRlRrU3VRbUNDIn0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMDktMjYiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJGZWl0aWFuIEJpb1Bhc3MgRklETzIgUHJvIEF1dGhlbnRpY2F0b3IiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlUyRjEwMDAyMDI0MDkyNjAwMiIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTA5LTI2IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjF9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjQtMTEtMjAifSx7ImFhZ3VpZCI6IjczYmIwY2Q0LWU1MDItNDliOC05YzZmLWI1OTQ0NWJmNzIwYiIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiNzNiYjBjZDQtZTUwMi00OWI4LTljNmYtYjU5NDQ1YmY3MjBiIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ill1YmlLZXkgNSBGSVBTIFNlcmllcyJ9LCJkZXNjcmlwdGlvbiI6Ill1YmlLZXkgNSBGSVBTIFNlcmllcyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjg3MDYsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyIsImVkMjU1MTlfZWRkc2Ffc2hhNTEyX3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NiwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NiwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURIakNDQWdhZ0F3SUJBZ0lFRzBCVDl6QU5CZ2txaGtpRzl3MEJBUXNGQURBdU1Td3dLZ1lEVlFRREV5TlpkV0pwWTI4Z1ZUSkdJRkp2YjNRZ1EwRWdVMlZ5YVdGc0lEUTFOekl3TURZek1UQWdGdzB4TkRBNE1ERXdNREF3TURCYUdBOHlNRFV3TURrd05EQXdNREF3TUZvd0xqRXNNQ29HQTFVRUF4TWpXWFZpYVdOdklGVXlSaUJTYjI5MElFTkJJRk5sY21saGJDQTBOVGN5TURBMk16RXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFDL2p3WXVoQlZscWFpWVdFTXNyV0Zpc2dKK1B0TTkxZVNycEk0VEs3VTUzbXdDSWF3U0RIeTh2VW1rNU4yS0FqOWFidlQ5TlA1U01TMWhRaTN1c3hvWUdvblhRZ2ZPNlpYeVVBOWErS0FrcWRGbkJubHl1Z1NlQ09lcDhFZFpGZnNhUkZ0TWprd3o1R2N6MlB5NHZJWXZDZE1IUHR3YXowYlZ1em5ldWVJRXo2VG5RakU2M1JkdDJ6YnduZWJ3VEc1WnliZVdTd2J6eStCSjM0WkhjVWhQQVk4OXlKUVh1RTBJek1aRmNFQmJQTlJiV0VDUktnanEvL3FUOW5tRE9GVmxTUkN0MndpcVBTemx1d24rditzdVFFQnNValRHTUVkMjV0S1hYVGtOVzIxd0lXYnhlU3lVb1RYd0x2R1M2eGx3UVNnTnBrMnFYWXdmOGlYZzdWV1pBZ01CQUFHalFqQkFNQjBHQTFVZERnUVdCQlFnSXZ6MGJOR0poamdwVG9rc3lLcFA5eHY5b0RBUEJnTlZIUk1FQ0RBR0FRSC9BZ0VBTUE0R0ExVWREd0VCL3dRRUF3SUJCakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBanZqdU9NRFNhK0pYRkNMeUJLc3ljWHRCVlpzSjRVZTNMYmFFc1BZNE1ZTi9oSVE1Wk01cDdFamZjbk1HNEN0WWtOc2ZOSGMwQWhCTGRxNDVyblQ4N3EvNk8zdlVFdE5NYWZiaFU2a3RoWDdZKzlYRk45TnBtWXhyK2VrVlk1eE94aThoOUpESWdvTVA0VkIxdVMwYXVuTDFJR3FyTm9vTDltbUZuTDJrTFZWZWU2L1ZSNkM1K0tTVENNQ1dwcE11SklaSUkydjlvNGRrb1o4WTdRUmpRbExmWXpkM3FHdEtidzd4YUYxVXNHLzV4VWIvQnR3YjJYMmc0SW5waUIveXQvM0NwUVhwaVdYL0s0bUJ2VUtpR24wNVpzcWVZMWd4NGcweExCcWNVOXBzbXlQeksrVnNndzJqZVJRNUpsS0R5cUUwaGViZkMxdHZGdTBDQ3JKRmN3PT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZkNBWUFBQUNHVnMrTUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFIWVlBQUIyR0FWMmlFNEVBQUFiTlNVUkJWRmhIcFZkN1ROVjFGRC8zZDU5d2VRU0lnUzlBUUFYY0ZMQVFaaTlmcGVWejF0WS9XVFpyNVd4cGM3VzVrbkxhNWpJM1o4NXNyUzJuTTJzanRXd1pTN0lVSDRINHhDbkVReDREQVpGNzRWN3VzODg1djkvbEluQnZWSi9CNFB2OW51LzVudS81bnZNNTU2ZnpBL1F2MEhiL0lyWDNWRktQbzQ1Y25tNGluVUlXWXdMRlJtWlFVdXdqRkcvTjFpUkhoMUVaME5SVlJ1ZHF0MUJkKzJuU0t5Uy9PaHlzMCtsazNlLzNrUTlxdkQ0WlV0YTRWVlNVdVkwZWlweWlUaEFmb2NvT1JWZ0R1dXczcUtSaUFkM3JiY0V0alRqWUlvZjZXYUhzQ216VlBXQ014K2NnaDh0THFXTUthTVdzVWpMcW8yUnRKSVEwb096bWVycFF1NGVzWmdzT05rR3hIN2Qwa2R2VFQxN3M0T01VN1ZJOFpoamdHYU0rQXE5aUVOdThQaWYxdWR6MDdNd3ZLV2Y4R2xWb0NFWTA0UEM1V2RUYVhZRmJSOHZOdkw1KzNLZ2ZiNXhOTXlhOVJhbUppeW5hTWxHVFZ0RmxyNmJhOXUrcHFuRVg0dU11UlJnalNZRWhyTjd1dEZGZTZscWFsN05ma3c1aW1BR0h5blBwYms4Vm1ZMHhzdG5wdGxGQ1ZDWXR6VHVCTjgzUXBNTGpUdGV2ZFB6U1VuSjdlOG1ranhaMzlmWGJLRGZsZFpxYnZVK1RVZ0duQlZGNmZRMmlQSGc0VzE2VVdVd3Z6YmsxNnNNWkUrUG4wcHZ6N0pTZXVBeWVzOGxjcENtYUt1by9wK3FXcjJVY3dJQUhXcnZQMFlFemhYQXRMQWJzc0hocDdpR2FtdnlpalA4cnlxclhVV1g5WG9vd3h5QXVmTkJycDQzUE9CRlhabGtmOE1EUmlxY3B5b3dBd3B1ejJ4K2ZXdnovRHRkZTlzbXN6eWd0Y1I2QzF3YmR6Qmw2T2xxNVdOWVk0b0dhdGhKTXJrVEV4MGpBUlNIQVZzKzVyWWtRTlhiK1FnZlBMc1E2Z1h5SW5zcmVRZm1wbTdSVkZZZkw4Nm4xZmlVT2tZdlNoa1VQeHZidWt6b3k2SzFpaE0xaG8zWHpXNkV2U2ZYQStkcGlXR2FXZCtkb1h6THptR3dLWUZMQ0FzUkFsUEJBaE1sQ0ZYVTd0QlVWUHI4SGdWY0pIV3ErRjAwcGxyK0RNVGRyUDR6dnhZMTFrTk1oeFQrU2VUR2crZDRWNUxRSml0eVVHSk5COFZGWnNqZ1lCWk0vSUkvWENUa2owcXlET3BGMkFWUTE3Q0lqVXAvRG5UMVVrTDVGNWdkaitzUzF3ZzFnRTNnaWdtNjBmQ1h6U25QWGJ5QVBiSVh2K0lEcEUxNlRoYUhJUzlza3lobG1NRTVGM2NmcUFLaHEyQzBFNVBIMWdZYVhhTFBEa1pHMEhESk9uS1dIcDUxSTB6NVNPdXg4ZTFXQXVaemRIUXJUa3A4VG1qWG9JK2xhMHdHWnN6dWJxYk8zaWZRNkEvVzd2VlNZc1YzbVIwSkt3a0tjNFdIaUJrbVI4STNDQ2dJODdvT0w0cXpUNVArUlVKQmVqRU9nQVBLOGhZUHphdE0rZUlUcDJJTzl5VFFtZXJvbVBSeHgxcXhBY3NpbGUvdWJTZUViY1dRR1lFQ2doY0xZMkh5S2pvZ2pIMjVoTXBqcFV2MU91Z2xpNGVoMmVSdzBPMzJiSmpreXVDZ056ZzB2emxZTVNpU3MwdW9vNE1HN2hNT2pDRWFYMXlGRTBuU3ZqQnp1VG5FcEs4Nlo4SW9xRkFJdWJ3OGtnOUFyRWFSRVdTWkkrakg0WGJwNmc5RTlFbkpUM29hUnpETitNVUpCUURIbjU2YThvVW1FQnVzT3hCcy9ONSt0SkViUGtBRkRqOFVHdk9zL0lXdmNTZ2xHQmh2UzcvRlRZZnBXR1lkRFk4ZlBBeFdTQTM1c1RDNHA0K0xtNEFhcUlvUGVRdGZ1Zks2SmgwWmh4bGJzVVhPU21YTmlmRDVaVEFreURvZmJiY2NseG5BOFdOQXF4Q2JSTnlraFh4UXBhRHc2N2ZYVVlic2lHMEtodHYyb2VJdmg4cmhRTVlPY0VBcVhHL2VJK3puZ09jNXl4cjhxODJJQU0xYy9GTEZPcGxxdTVlRlFYck1aekdjVkNqWWJMV0c1STRCVDFldVJybGJ4dE5PdE1pdERERWhMWElJeW5BQXZ1T0VXRTNYM05kQWZ0OTRWZ2FHNDJYSVF0MFpYNlBlQ0UvcVFGZTlySzZIeDdZVTUwS3ZIN2ZXNGZTK3E3S0tCSnhzZ2dCWDVwU0FHaDFqSXJWaDV6UTZ3M1JmYWFoQlhtL2FDYkNaVGpDVUZVVHlXWnFXOXA2Mk1qSlBYVnFPclBnTU80TnY3NEdrZitvd2Z0TlZCRFFuakZKcUhTdzE3cFh2aFdXNUtacWUvUTQ5Ti9VU1RDQVZXb1FYRklIQkhYWGUzRlByVURzdUdEbXRGL2hIS1RIcGVreGhpQU9QSStTSnE2UzZIRjRJOVlXemtCSlRvNDZpVU16V3A4UGlyL1JpZHVMeEtZc1Nrc1Y4dkxsT1F2aEdYMllsUjBPQmhCakMrdS9nRWN2WTBBcEs3WWs0MU54alBTUW5XRkhURjY2VXJqZ2V2QjhDdTVhK2wydllTUlB0dVZEbzczaGhkTVNIblVYN3RUanNWWkd4QWwvV3B0aU9JRVExZ25MMjltWDYvdFIxdG1sa1lqOFc0WCtDU2pXY1VER1kxTnBTL0M3aFNLcWlNTE0vbDJRbVNXWjczRGR6K2dpbzhCQ0VOWVBRNDZxbmt6d1hVYnF2Qmt4alVRc1dmWkZnYnVvM3JBZit3TjdqT085MCt5bng0UGkzTCswbllMMVNjaERVZ0FQNGdQVi83SWQxcSsxSFNobXVHa0lxV1JQZ3l4TUZxUDhIZmpUbmpYd1k1YlFmYkpjdDZPSXpLZ01Ib3RGL0hlMWVnc2F4SFNxRzZ3ZmRtUTV4OE55VEZGcUJjcDJpU293SFIzeWs1KzM2aEY3dlhBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMV9QUkUiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6IjczYmIwY2Q0ZTUwMjQ5Yjg5YzZmYjU5NDQ1YmY3MjBiIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWV9LCJtYXhNc2dTaXplIjoxMjAwLCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjgsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4LCJ0cmFuc3BvcnRzIjpbInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi04fV0sIm1pblBJTkxlbmd0aCI6NiwiZmlybXdhcmVWZXJzaW9uIjozMjg3MDYsImNlcnRpZmljYXRpb25zIjp7IkZJUFMtQ01WUC0yIjoyLCJGSVBTLUNNVlAtMi1QSFkiOjN9fX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjMtMDMtMjgiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI4NzA2LCJ1cmwiOiJodHRwczovL3d3dy55dWJpY28uY29tL3Byb2R1Y3RzLyIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWXViaUtleSA1IEZJUFMgU2VyaWVzIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyMzAzMjgwMDQiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMyIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4zIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIxLTAyLTE4IiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZSyA1IEZJUFMiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDIxMDExODAwNCIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4zLjciLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMyJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMS0wMi0xOCJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjMtMDMtMjkifSx7ImFhZ3VpZCI6IjM5NTg5MDk5LTlhNzUtNDlmYy1hZmFhLTgwMWNhMjExYzYyYSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiMzk1ODkwOTktOWE3NS00OWZjLWFmYWEtODAxY2EyMTFjNjJhIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkZlaXRpYW4gZVBhc3MgRklETy1ORkMgKEVudGVycHJpc2UgUHJvZmlsZSkgKENUQVAyLjEsIENUQVAyLjAsICJ9LCJkZXNjcmlwdGlvbiI6IkZlaXRpYW4gZVBhc3MgRklETy1ORkMgKEVudGVycHJpc2UgUHJvZmlsZSkgKENUQVAyLjEsIENUQVAyLjAsIFUyRikiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9LHsibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDWHpDQ0FjR2dBd0lCQWdJUVl6L1dxdVBHd2poeDlrWkd3OEF6dFRBS0JnZ3Foa2pPUFFRREJEQkxNUXN3Q1FZRFZRUUdFd0pWVXpFZE1Cc0dBMVVFQ2d3VVJtVnBkR2xoYmlCVVpXTm9ibTlzYjJkcFpYTXhIVEFiQmdOVkJBTU1GRVpGU1ZSSlFVNGdSa2xFVHlCRlFTQlNiMjkwTUNBWERUSTFNREV3TVRBd01EQXdNRm9ZRHpJeE1qUXhNak14TWpNMU9UVTVXakJMTVFzd0NRWURWUVFHRXdKVlV6RWRNQnNHQTFVRUNnd1VSbVZwZEdsaGJpQlVaV05vYm05c2IyZHBaWE14SFRBYkJnTlZCQU1NRkVaRlNWUkpRVTRnUmtsRVR5QkZRU0JTYjI5ME1JR2JNQkFHQnlxR1NNNDlBZ0VHQlN1QkJBQWpBNEdHQUFRQXdtL0hiTitpY25HbGxQaytqRTZXYUM0UFBnRXdUaUZ0djFITU5WSVBtNExOMkk0ODEzNVQvZTA4ZU95bTFDeXc3b0x1QUN6ajlocEhaNzEvK1JTR3B6SUJvcmVidEZPUzRoK014TXBFeUtSMVNaYjFlOGdBVDFLT21tcm9kd0VoaFBSaUNnYTY5eW9uWnJLN3hMZ1hPamE2dCtxR2NJR3BPWktwYVB6R2RUZFNUMVdqUWpCQU1CMEdBMVVkRGdRV0JCVGdSVzh5ZmpQZFZvV1d1ZStLM0JzK1h2YVVCREFQQmdOVkhSTUJBZjhFQlRBREFRSC9NQTRHQTFVZER3RUIvd1FFQXdJQkJqQUtCZ2dxaGtqT1BRUURCQU9CaXdBd2dZY0NRZ0VrdWMyK0Vud0gycEN3aERPWHpaSlIvVzZDbFE0ck54cUt6TjUvVE5NYWhLT1VnbUFEMS9XZWJqZDF5WGpIYmd2dG9kZk5tZm1XTm5NdlE5ZDEzb1NvalFKQkUwQkU4YkZUZ1diS2RVMUtraldIUEZ2bHhLeWREZ2Z0TFI1THJoVGVGVklmcUtHU2Zxejh1Z2dxRXlkUGF5OHVXTTVlR3k3RzdSUXllNXJ5VEo2V3hJQT0iLCJNSUlCMkRDQ0FYK2dBd0lCQWdJUkFNczhZWFZCb0JOdVhVanFmQ29YN3k0d0NnWUlLb1pJemowRUF3SXdTekVMTUFrR0ExVUVCaE1DVlZNeEhUQWJCZ05WQkFvTUZFWmxhWFJwWVc0Z1ZHVmphRzV2Ykc5bmFXVnpNUjB3R3dZRFZRUUREQlJHWldsMGFXRnVJRVpKUkU4Z1JVRWdVbTl2ZERBZ0Z3MHlNekF4TURFd01EQXdNREJhR0E4eU1EVXlNVEl6TVRJek5UazFPVm93U3pFTE1Ba0dBMVVFQmhNQ1ZWTXhIVEFiQmdOVkJBb01GRVpsYVhScFlXNGdWR1ZqYUc1dmJHOW5hV1Z6TVIwd0d3WURWUVFEREJSR1pXbDBhV0Z1SUVaSlJFOGdSVUVnVW05dmREQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJEMkxISEFRcVliZFIxV1psdWVydE0zMHJXaG9yWWF2V21NVmE0bmRYOVBad3VSRXBMUTRtMW5FbHFRS01uUkU4LzRDK1Jxd2lhdittcEk0a3hkNWU1dWpRakJBTUIwR0ExVWREZ1FXQkJTM1paanlHbGhaOTlOMXZMb1RQWFZVYTRaRVlEQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01BNEdBMVVkRHdFQi93UUVBd0lCQmpBS0JnZ3Foa2pPUFFRREFnTkhBREJFQWlBb0QrUjZrb2xJV2FOSno0aHowM0QzZ2VzM0diTUJqQVdwa09VZzlheUZnd0lnYkV3N0FZU3lrNjhPdnhnWGV6Z25kVFJURXVTV1QrZmRSbkxhQk5zYVR3MD0iLCJNSUlDV1RDQ0FidWdBd0lCQWdJUUthN3U1dTEzdlltTzZBNitrMmNoaFRBS0JnZ3Foa2pPUFFRREF6QkxNUXN3Q1FZRFZRUUdFd0pWVXpFZE1Cc0dBMVVFQ2d3VVJtVnBkR2xoYmlCVVpXTm9ibTlzYjJkcFpYTXhIVEFiQmdOVkJBTU1GRVpGU1ZSSlFVNGdSa2xFVHlCRlFTQlNiMjkwTUNBWERUSTFNREV3TVRBd01EQXdNRm9ZRHpJeE1EQXhNak14TWpNMU9UVTVXakJITVFzd0NRWURWUVFHRXdKVlV6RWRNQnNHQTFVRUNnd1VSbVZwZEdsaGJpQlVaV05vYm05c2IyZHBaWE14R1RBWEJnTlZCQU1NRUVaRlNWUkpRVTRnUlVFZ1EwRWdNREl3ZGpBUUJnY3Foa2pPUFFJQkJnVXJnUVFBSWdOaUFBUy9kWTlXVWlWaG9SNkE3cUdlY2pIZVN1dTlId2pIZEV0L2lPR2NQUGRTeWhsd2FqRFZGNjh0OXdNTjgvNXZsSWFlS08wclJuRlFubUdtbXVVb3VlclAyb1BKd0srVHVMZndEQWFycWJJSGpXUnNGdU95Yjl6NWZja2ZNZnoyUUVpalpqQmtNQjBHQTFVZERnUVdCQlNkUjVCRjdKeWdKT0FGL0tCK0xseUJNUVVCSWpBZkJnTlZIU01FR0RBV2dCVGdSVzh5ZmpQZFZvV1d1ZStLM0JzK1h2YVVCREFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VBTUE0R0ExVWREd0VCL3dRRUF3SUJCakFLQmdncWhrak9QUVFEQXdPQml3QXdnWWNDUWdIQnR3WkRoYU1OWHl3emI0aHZReDdMTmFRVzZLeHhETzM1WDAvQm8vT3IwR2hHdW9LaUtHbisycFBlNEx1U0tESDV3Nm42OEVrODNHcTU0dUg2SHVCNTlnSkJWNk11Mm9aZk5tVEcwSTh6NG5yME9sR25qTzNZRjQ2VGlGVW54MFhEYk9xaXNvQ3I3VHRGVmxJWGhtaW5QdzVUNDQ5eXFoZnB1RUJwUnFWbmR3NTlDVXM9Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUZBQUFBQVVDQU1BQUFBdEJrcmxBQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQkhacFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR3L2VIQmhZMnRsZENCaVpXZHBiajBpNzd1L0lpQnBaRDBpVnpWTk1FMXdRMlZvYVVoNmNtVlRlazVVWTNwcll6bGtJajgrSUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWtGa2IySmxJRmhOVUNCRGIzSmxJRFV1Tmkxak1ERTBJRGM1TGpFMU5qYzVOeXdnTWpBeE5DOHdPQzh5TUMwd09UbzFNem93TWlBZ0lDQWdJQ0FnSWo0Z1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNGdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlnZUcxc2JuTTZlRzF3UFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIaHRiRzV6T25Cb2IzUnZjMmh2Y0QwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOXdhRzkwYjNOb2IzQXZNUzR3THlJZ2VHMXNibk02ZUcxd1RVMDlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl0YlM4aUlIaHRiRzV6T25OMFVtVm1QU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2YzFSNWNHVXZVbVZ6YjNWeVkyVlNaV1lqSWlCNGJYQTZRM0psWVhSdmNsUnZiMnc5SWtGa2IySmxJRkJvYjNSdmMyaHZjQ0JEUXlBeU1ERTBJQ2hOWVdOcGJuUnZjMmdwSWlCNGJYQTZRM0psWVhSbFJHRjBaVDBpTWpBeE5pMHhNaTB6TUZReE5Eb3pNem93T0Nzd09Eb3dNQ0lnZUcxd09rMXZaR2xtZVVSaGRHVTlJakl3TVRZdE1USXRNekJVTURjNk16RTZOVGtyTURnNk1EQWlJSGh0Y0RwTlpYUmhaR0YwWVVSaGRHVTlJakl3TVRZdE1USXRNekJVTURjNk16RTZOVGtyTURnNk1EQWlJR1JqT21admNtMWhkRDBpYVcxaFoyVXZjRzVuSWlCd2FHOTBiM05vYjNBNlNHbHpkRzl5ZVQwaU1qQXhOaTB4TWkwek1GUXhOVG96TURveU55c3dPRG93TUNZamVEazc1cGFINUx1MklPYWNxdWFnaCttaW1DMHhJT1czc3VhSmsrVzhnQ1lqZUVFN0lpQjRiWEJOVFRwSmJuTjBZVzVqWlVsRVBTSjRiWEF1YVdsa09qSkZOekZDUmtaRFF6WTNSakV4UlRZNU56aEVRVGxEUWtJMk5EWXpSamt3SWlCNGJYQk5UVHBFYjJOMWJXVnVkRWxFUFNKNGJYQXVaR2xrT2pKRk56RkNSa1pFUXpZM1JqRXhSVFk1TnpoRVFUbERRa0kyTkRZelJqa3dJajRnUEhodGNFMU5Pa1JsY21sMlpXUkdjbTl0SUhOMFVtVm1PbWx1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2TWtVM01VSkdSa0ZETmpkR01URkZOamszT0VSQk9VTkNRalkwTmpOR09UQWlJSE4wVW1WbU9tUnZZM1Z0Wlc1MFNVUTlJbmh0Y0M1a2FXUTZNa1UzTVVKR1JrSkROamRHTVRGRk5qazNPRVJCT1VOQ1FqWTBOak5HT1RBaUx6NGdQQzl5WkdZNlJHVnpZM0pwY0hScGIyNCtJRHd2Y21SbU9sSkVSajRnUEM5NE9uaHRjRzFsZEdFK0lEdy9lSEJoWTJ0bGRDQmxibVE5SW5JaVB6NDc3SlhGQUFBQVlGQk1WRVgvLy84RVZxSVhaYXZHMk9vcWNMRzJ6T09rd3QwQlNKdHFsY1hWNHUrYXV0bFdoYnprN1BVQU1ZOUhjcktqdE5icThmZUFsOGFCb3N6ejl2cGRqc0dHcXRGM244dVRzTlNacGM2SnNOVDUrdjB4WUtudThQZmY1L0w0OGZnL2ZyaWN6SmdZQUFBREFFbEVRVlI0MmtSVUNaYkRJQWpGWFpPWTFUYXROYzM5Ynprc1NZYzNyNE1FNGZNQkFhRDZ6bDh5LzlUT2dldDhkNWpmTjc4YndNL2REQ1JwUjUyMXpYZm9qSEowNUlJeWhCQVVTVkFPTmRHekJZdDJmN0tGcmZrSmFBa0hoOUZaaGNEWEhSa1RLbzlNTGloR2FhdkltblYzcXlFWDBFcHJnei80RHdVRDdrQ0hSbmQ4UUZONDNHbzRVVm1ERGd6YTR3MjdvaXpkQTIrY0srdXVVcGpqbzIreHdjLzQyVzUweDVMR1llREJzUjBIVkl4NXg4aUY2MENibGJURUVrRnIyN2JOREJVVlNxMU9LVlBiRTYyYjNFSDhGcUJnNU9PT0V1YzJ0OFpKaXFNT3VHcCtjS2pnN3dWR2Nlb3pxTjRweGdWUFFrakZZZ2JWSktEVWhEQ2pZcmF3UDVxNEVUZ0M5ZklNUkh0aXRwUWNDdkpPRUxjYk1zUWduY2lSa2xqcHlRanZHNDRqcUJVRVRGaUJpMVBFSXlla096c1crVHk1Y0xIb3M1UitkTVMxTHRTU3hmM2dRSGN6UjJDSTRnTU5wVzRJUkExUU1hNnRKNCtDNnVIdUdFOG1OREl5RnFnL09QL01NVXVlUzZJcThTOTBkQWVCSlNFeS9xS2tLK0JOd3o4Y1lZNGpiNUo2dTRpV0NJMkIxWjU2TFc1a0VjNGhrZE1wc3ZVQzU1ODVTWDBRdWJjZ05xeWZnREZFY1R0KzQwLzBTNU54MHdhQ3czT0trY09iQTVJbjBBWXAwMXBqancybjYyNlVEanRId2EyOGlIdVRLcXRydityZVc0MU5aNmlHbHI3dXVMSkNma0Z0Y3RjRzA0c2dtMWVOUytaYURucGFURXJHb3lYNUpLMmlNejh4czBuT3dXR2NQRE40OXFhQ2Q0YnpKb3pEWm0vYUJLK0Vvekx3K1hoTkJpWXdIZjBzaU91MVhQa0cvekt3dnFZS2NmU3dERWNIL29VZTA3ZXMvV1E4ckl5ZzJET1hqOHRqa1pkdURCL2I4aHpEbGxNTU9DUzVCRW5kNTM0Zjh0aTNVWmM0a01zM3hMeWFmTVNzSmhkRzhYUHFqTms1dEFnTzI1ZmVLQ2huVmREai9KMEZNa09zVS94TUJ2MHdGaFllRUdmVkgxM2Z1RFUweURGTGE0ZmM3Um5XSEJmdVRGVjJ0RW1Od2FkYzdhYzNVWTJqZkJsN0hUMzZmZTM0aVFPNW1OQ0ZGQlcwN0tqUGdxaE9MVTAxdlo4UHVlWjJKQ2xGWk44amtVczY5dWthOWVQcDYrRWZMNEFGNStOeXdTYmlySHRjQjhNbC9na3dBRWprSzY0S2pIUGVBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMSIsIkZJRE9fMl8xX1BSRSJdLCJleHRlbnNpb25zIjpbImNyZWRCbG9iIiwiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsImxhcmdlQmxvYktleSIsIm1pblBpbkxlbmd0aCJdLCJhYWd1aWQiOiIzOTU4OTA5OTlhNzU0OWZjYWZhYTgwMWNhMjExYzYyYSIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImxhcmdlQmxvYnMiOnRydWUsImVwIjpmYWxzZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOnRydWUsImFsd2F5c1V2IjpmYWxzZX0sIm1heE1zZ1NpemUiOjIwNDgsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6NiwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjo5NiwidHJhbnNwb3J0cyI6WyJuZmMiLCJ1c2IiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fV0sIm1heFNlcmlhbGl6ZWRMYXJnZUJsb2JBcnJheSI6MTAyNCwibWluUElOTGVuZ3RoIjo0LCJtYXhDcmVkQmxvYkxlbmd0aCI6MzIsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjozLCJyZW1haW5pbmdEaXNjb3ZlcmFibGVDcmVkZW50aWFscyI6MTI4fX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDItMjgiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJlUGFzcyBGSURPLU5GQyBTZXJpZXMgKEVudGVycHJpc2UgUHJvZmlsZSkiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI1MDIyODAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTAyLTI4IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjF9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDQtMDgifSx7ImFhZ3VpZCI6ImRjNWU5NDlkLWY5MzktNDNiMy05ODc3LWE4NWM3MTg2Yjc1MyIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiZGM1ZTk0OWQtZjkzOS00M2IzLTk4NzctYTg1YzcxODZiNzUzIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ill1YmlLZXkgQmlvIE11bHRpLXByb3RvY29sIEVkaXRpb24gKEVudGVycHJpc2UgUHJvZmlsZSkifSwiZGVzY3JpcHRpb24iOiJZdWJpS2V5IEJpbyBNdWx0aS1wcm90b2NvbCBFZGl0aW9uIChFbnRlcnByaXNlIFByb2ZpbGUpIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTcyOCwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9LHsibWFqb3IiOjEsIm1pbm9yIjowfSx7Im1ham9yIjoxLCJtaW5vciI6M31dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDM4NHIxX2VjZHNhX3NoYTM4NF9yYXciLCJlZDI1NTE5X2VkZHNhX3NoYTUxMl9yYXciLCJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIiwiYmFEZXNjIjp7InNlbGZBdHRlc3RlZEZSUiI6MC4wLCJzZWxmQXR0ZXN0ZWRGQVIiOjAuMCwiaUFQQVJUaHJlc2hvbGQiOjAuMCwibWF4VGVtcGxhdGVzIjo1LCJtYXhSZXRyaWVzIjozLCJibG9ja1Nsb3dkb3duIjowfX0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIiwiYmFEZXNjIjp7InNlbGZBdHRlc3RlZEZSUiI6MC4wLCJzZWxmQXR0ZXN0ZWRGQVIiOjAuMCwiaUFQQVJUaHJlc2hvbGQiOjAuMCwibWF4VGVtcGxhdGVzIjo1LCJtYXhSZXRyaWVzIjozLCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwic21hcnQtY2FyZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRFNqQ0NBaktnQXdJQkFnSVVSMzhtcTI2U2Yyc3pWVjJCZEc2V0VON2t1V1V3RFFZSktvWklodmNOQVFFTEJRQXdMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3SUJjTk1qUXhNakF4TURBd01EQXdXaGdQT1RrNU9URXlNekV5TXpVNU5UbGFNQ1l4SkRBaUJnTlZCQU1NRzFsMVltbGpieUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRUlnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTlkwV2I5b1BvUm9Lb1F5V1BhSnB6MTF2cldUZzZ6VHRtTmoyVm9LUm55dktHUnFwemI4M3c1bDZZQTk2VVlrWUJEUVAwaWxPMkRQZTZ3V3FWUjV6RGZSemRjSDhiaCtMN2RHR3ZhZTZoUlRaaGtGa0NwWERzNEhjY2tuckRmOEZDbEo3SGUzOUpmNDIvRzFRbTJ6ejlXV21yUFh0Z2lLL3gwNUdqc1FmR3VERzF6ZjVRVFVVaWU4bHd5bUszVGZkT3ZOZWVKQUFQZTJwbjdJdGZSYityVnJOV2lEemxSbjJ2Tm5aMndQbzR3SC9XSjZkaFhaRytyTVdUK2E2Qm9jZzFVZkl3NmtkdW5HNGJUcFp6c3ZhY0ZZeVIwbXBmK0RlT25wU1dBbXl3SldIdlRsZjJZWHhGeWVYY1RBQ2RRbGNNTkdKMlZoWlE0OHh0UDUvUkJQLzhrQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZDaHk0Mm9raXFjVFMxaXFhL0hSV2prQm40SC9NQjhHQTFVZEl3UVlNQmFBRk9xM1FwQ2VESHRrZXR0VWZBTzZmRTZmMktGaE1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQW4rUkhJUGJ0TUVETmRUMWc4SC9SaXRBa1VkTGdBdDF0V0dXbmxqOWtuYnY0LzRHbFg3QzlwNDVlZlBPOS9hWkw2T1YxWFJLQmk2S210Qlc1SzdudVlFbk14LzVCcUJTYkxUN3JoZHVDNDlUQmVNYjlQSGRYc1RsU1ZOWWVmcjFkR2lkcjRqMHhWQlFMYjFya25EQWJkV0R6S2Z2bmF5S084RnJ3ZTdIeDg0M01HL3JKK2MwWHJ1VXZiZlZUQ0hMaUlXaE03b05EaEw4eG9iNnhVbzlLTEtjU0wrSXRZc08zLzlXYjhROUdqc3FMNEZYc0RjRzFTYVloN0twZnVNbU9peHF6SlpPMm5JaWNQWVJnMUkyU3VpVWZZTzcwdG1kSGNibCtrU1FtU1l0N3JxNHZpSUxnMkd4M2o5cklUdVdUamJhVWFTU1F4Z09tTVNIdXl6TUFDIiwiTUlJRFJ6Q0NBakdnQXdJQkFnSVVleDluVDl2d1pOWFM0ODNMZGlZR2Z3MlNqU293Q3dZSktvWklodmNOQVFFTE1DNHhMREFxQmdOVkJBTU1JMWwxWW1samJ5QkJkSFJsYzNSaGRHbHZiaUJKYm5SbGNtMWxaR2xoZEdVZ1FpQXhNQ0FYRFRJMU1EZ3dNVEF3TURBd01Gb1lEems1T1RreE1qTXhNak0xT1RVNVdqQW5NU1V3SXdZRFZRUUREQnhaZFdKcFkyOGdSa2xFVHlCQmRIUmxjM1JoZEdsdmJpQkNNaUF4TUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUF1MU1ldm55OWR5TzlaVUMzOVNvTWhMY1IvRFhydEYvY2lNMTJ0Y2l5MkVYQVo2TWtyaXZWdENmRVZNOVg2SVNURW5CUDZ1U1lZb3Y2cHB2Nk82SmgyTkhtWW00dytKblM0Vm5DUFU3bUhBTWZWSTJNR1RUTVZPZXcweFVzRzdzSVNJa0lEVUJtdWs4WUs5YzV6aWM5K3ZGUUdMSWtzZFhPNWlWRklnTkc1M2NHWEQ0Wkxab0FQaXUwUEVvenhBcVlJYUk0Z3hLaE9BM1M4L1c4bUlXc3U2b2Z5ajRHdmtGRzZaN2t5RjMxMDdQN213RkhMckkzRU5hUFdNT0ZjVGFHYTBkdysvdlZSd2pSY0VaQlZzdXVULzg3Y2tTczBhNXBrdDN2WkJsYVllVDhwelNyZVY3bW93Y0lNOTBMMmlhQVRsUDBueG1hRTZuT3lUYm9qRlZsMndJREFRQUJvMll3WkRBZEJnTlZIUTRFRmdRVVNYRWgzc2EzYnREdXJtNE1NL0M3UzFsUnV1WXdId1lEVlIwakJCZ3dGb0FVNnJkQ2tKNE1lMlI2MjFSOEE3cDhUcC9Zb1dFd0VnWURWUjBUQVFIL0JBZ3dCZ0VCL3dJQkFEQU9CZ05WSFE4QkFmOEVCQU1DQVlZd0N3WUpLb1pJaHZjTkFRRUxBNElCQVFCNUdjM2hhZnRwN2hLc0Vac28raS9aNW5SdXFkbXpHMldDbFVvUlVxYmFQeWdsbkpEaktSL2tmZ09sNmliYkYvenRobTNLbVhRN0hjRElQMnhNZEc3VTJMMmltYkpRSHFQZi9oMkhxb2piNHJaZ3VlKzZXNGt0U1I1ZWxSOUwxcllxRS9TR1lNNGlFS29WUVN2N1JUMXJ4SWVXaUtzdy9WeHhpL1FPbnN4M0Y3eDgwQ0NZZ0I0RTN5UXg4VlRXNDQwaFRFd1RBMWVNSE9peDMydFB0eXlISWE4UFZWSWZWcEhRSkJhTVZ2djUwOFVFandrYlUycm5qZnpvU1ROUzlBNWpVUThtQlN2ZTk1cmpCMGRvOThFVStEeGRCcVgyK0g2aTV3bElDRmd6aGR6Y3NuZTloR0tUNmx6VFg0Y0lkSnNyWTIreGxlSzBGRlF5NmxHRVZMRWUiLCJNSUlEU0RDQ0FqQ2dBd0lCQWdJVVVjbU1YelJJRk9nR1RLMFRiM2dFdVpZWmtCSXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFEbTU1NWJXWTlXVyt0T1kwcklXSGxkaCthTmFub0NaQ0ZoN0drM1laclFtUFV3MGhrU0c2cVlIUXRQK2ZaeVMzM1ZFcnZnK0JRcW5tdW1nTmhmeEZya3dFWkVMZWlkQmNDOEM0QWc0bnFxaVBXcHpzdkkxN05jeFlsSW5MTkxGY1pZLytnT2lONlpPVGloTzUvdkJaTWJqOXJpYUFjcWxpWW1OR0pQZ1RjTUdhRUF5TXpFTU55Mm5tNkVwK3BqUDVhRjZnaTIxdC9VUUZzdUoxajJSai95bk0vU2RSdCtlY2FsNU9Zb3R4SGtGYkw5dnZ2MkEyT3Y1SVRaQ2x3NGJPUzlucHlwUWltT1o1UUFZeXRtWWFRcFdsL3BNWXo2elNqOFJxa1ZETkVKR3FOZlRLQTJpdkxZd1g2bFN0dE1QYXBnMEo4NGw5WDB2b1ZOL0ZwUzRWQ1ZBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlFnS0ZBaEc2UmFXK2hUeTUyZHhlVDhiQzk2SHpBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBWU16Z0xySkxJcjBPb3ZRbkFaclJJR3VhYmlIU1VLU21iTFJXcFJrV2VBdHNDaERFSHBYY0ovYmdETktZV29IcVE4eFJVakI0Q3llcFlldmMzWWxyRzhvN3pIeHBmVmNhb0w1U2V1Smt6SHhLbjRiVGFTcDkrTXZ3YW1ucDY0a1pNaU5iRkxrbmZQOWtZS29SSGtNV2hlUkoxVXNQMXo0U2Nta0NlSUxmc01zNnZxb3ZxaldDbEZzSnBCY3NsdVlIV0Y3YkJKMW40UndnK0FURW9wWTRJZ0d2Nlp2d2MrQTlyK0FUMmhxcG9Ta1lvQWwrQU5Zd2dzbE9mOXNKZTBWK1RBOVlZL1VsYUJtUFBUZDAvL3I5d3ZjZVBXWmtQaktvQUMvelVOaGZEYmg0TFY4R0hzM2x5WDJYb21ML0xOYzhKWXp5SWFERWhHUXZlb1BoaC90cjFnPT0iLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVRuYmJHSVIyTkh2enFJS0ZBZVF3RzFYQmlzMHdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFRWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPc1hqM2swNEJhbjRUWWR0WktxRC9PUEp4eUR5YVBtQ0JVRlVpYVpJZ1R0ZVpuajNYMjVEaGdwWlpYc0M0RDB5ZEljcmxBNndOVUluT1JML0w5ekJiVEVJTUFWTUdvNmc3VUtBbWIyTUY2QUhibmhZSmQ5ZWlrdXBWTldTaEhOWU5jNEdCZE8xWU42QWZVcXZKaEhiZTNWNFNOTVBtQlJFS0pQVno3VGh3Z21nZ1RlOFdzMkswL3dzcXYyd1NFN3BiQ0JzVVpoSVg1MWJaTTNwcUR3SlBUbVJGRXZ0MC82dEc1ZU84RjNqMTRPWHFmRWhtam4xVnZ4S0RZUU9MWkF4Q3d3Z0MwUDRDZGZXdjN5OFBTUjhJMzU0aE8xWStHek5qdklxWDM4TktMeXd1SVlIRmVyT3hObHhFTUJ2RmhZQnVSdVlBa2tnVWFQcU42VUJoc0lMcnNDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNDb1JIaGl5Tm5iblhSV0lMNlpCWG9CWDlZVE1COEdBMVVkSXdRWU1CYUFGQ0FvVUNFYnBGcGI2RlBMblozRjVQeHNMM29mTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFDUUZhZkpJMS81V2c5Q0VFaW1FMVJQNTRSZ1F3VE5UT09Rc0xBQ1RlK3JJdGxGUXpDOVpEaHJWODI4eVg3anp5K0FBc3AzaXpLN1QxdGgyZGw3bSt0dTBzdzJQYS9vbGMwMm50NlB5SXczNDhnYUh6aEkxKzBLRTQ1cXh2RkRlTDJsTXhiUGZDWXZ5RUVhWXpqaVFFTFU1OTUxcFhHV3lLTWEvNGZMdE8rWktPWGhNdVZlcTRyWERQSTU0VzZKSE9pQWFpS2Rpdys1ZTNjMmt0L2pGSVF0TTZ2TVhnOUxORnpkakVUTnQyMFZYOVFldlJwRlpmdWNNRzl3Q2FRRG9GbFB6cFRNSktoUGV2L2ltSm1aWWhLZnIwbExjZW10cWpJeExBb3FaZE9ZZkhCZzYrdkFjZFBJL2lhdUdwVUF2N1grVUtObUR3aloyQmFINHNMd2hCMm0iLCJNSUlEUGpDQ0FpYWdBd0lCQWdJVVh6ZWlFREpFT1R0MTRGNW4wbzZaZi9iQndpVXdEUVlKS29aSWh2Y05BUUVOQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU1aNi9UeE04cklUK0Vhb1B2Rzgxb250TU9vLzJtUTJSQndKSFMwUVpjeFZhTlh2bDEyTFVoQlo1TG1pQlNjSVpkMVJueDFvZDU4NWgrL2RoSzdoRW03SkFBTGtLS3RzMWZPNTNLR05MWnVqejVoM3dHbmNyNGh5S0YwRzc0Yi9VM0s5aEU1bUdORDZ6cVljaENSQUhmcllNWVJERjRZTDBYNEQ1bkdkeHZwcEF5Nm5rRW10V21NbndPM2kwVEF1Y3NyYkU0ODVIdkdNNHIwVnBnVmRKcHZnUWppVEpDVElxK0QzNWh3dFQ4UURJdituR3ZwY3lpNXdjSWZDa3p5Q2ltSnVraFl5NktvcU5NS1FFZHBOaVNPdld5RE1UTXQxYndDdkV6cHc5MXUrbXNVdDRyajBlZm5POXMwWk93ZHdNUkRuSDR4Z1VsNVpMd3JyUGtmQzEvMENBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUI4R0ExVWRJd1FZTUJhQUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUU13RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCRFFVQUE0SUJBUUMzSVcvc2dCOXBaOGFwSk5qeHVHb1grRmtJTGtzMHdNTnJkWEwvY29VdnNyaHpzdmw2bWVQTXJiR0pCeUoxWG5xdUI1c2djUkVORnhkUUZtYTNtaW84VXBmMW93TTFacmVYckowbUFERzJCcGxxYkpueGl5WWErUjExcmVJRlRXZUloTU5jWktzRFpyRkF5UHVGakNXU1F2Sm1OV2U5bUZSWUZnTmhYSktrWEliNUgxWGdFRGx3aWVkWVJNN1ZvbEJObGxkNnBSRktsWDh1c3Q2T1RNT2VBRGwyeE5GMG0xTFRoU2RldVh2RHlDMWc5K0lMZnozUzZPSVlnYzNpcm9SY0ZEMzU0ZzdyS2Z1NjdxRkF3OWdDNHlpMHhCVFByWTk1cmg0L0hxYVVZQ0EvTDhsZFJrNkg3WGszNUQrV1ZwbXEyU2gveFQ1SGlGdWhmNHdKYjBiSyIsIk1JSURTRENDQWpDZ0F3SUJBZ0lVRHFFUncrNFJuR1NnZ3hnVWV3SkZFUERSWjNZd0RRWUpLb1pJaHZjTkFRRUxCUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURJN1huSCtadkR3TUNRVThNOFplVjVxc2N1Ymx2VllhYVJ0M1liYXhuOWdvZEx4NXN3SDBsWHJkZ2poNWg3RnBWZ0NnWVlYN0U0YmwxdmJ6VUxlbXJNV1Q4TjNXTUdVZThRQUpiQmVpb1Y3Vy9FK2hUWlAvMFNLSlZhM2V3S0JvNlVMZU1uZlFaRHJWT1JBazh3VExxMnY1TGxqNXZNajdKdE9vdEthOUo3bkhTOGtMbXpYWFNhajBTd0VQaDVPQVpVVE5WNHpzMWJ2b1RBUVFXckw0L0o5UXVLdDZXQ0ZFNW5VTmlSUWNFYlZGOG1scUsyYngyejZva1ZsdHlEVkxDeFlicFVURUx2WTF1c1IzRFRHUFVvSUNsT200Y3Jwd25EUkxWSHZqWWVQR0JCLy9wRXl6eEEvZ2NTY3hqd2FIMVpVdzliblNiSHl1cktxYlRhMUt2akFnTUJBQUdqWmpCa01CMEdBMVVkRGdRV0JCVHF0MEtRbmd4N1pIcmJWSHdEdW54T245aWhZVEFmQmdOVkhTTUVHREFXZ0JUUzd1OWFJbzA2YlZ3amx6M3loZFVtOFNWN2tqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQTRHQTFVZER3RUIvd1FFQXdJQmhqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFxUWFDV014VEdxVlZYN1NrN2trSm1VdWVUU1lLdVU2K0tCQlNnd0lSbmx3OUs3SGUxSXB4WjBoZHdwUE5pa0tqbWN5RmdGUHpoSW13SEpneHh1VDkwUHczdllPZGNKSk5rdERnMzVQWE9melNuMTVjRkF4MVJPMG1QVG1JYjhkWGlFV09wem9YdmR3WERNNDFaYUNEWU1UN3c0SVF0TXl2RTd4VUJacTJianRBbnEvTkRVQTdiZTRIOEgzaXBDKy8rTktsVXJjVWgrajQ4SzY3V0kwdTFtNkZlUXVlQkE3bjA2ajgyNXJxRHFzYUxzOVRiN0tBSEF3OFBtcldhTlBHMmtqS2VyeFBFZmVjaXZsRmF3cDJSV1p2eHJWdG4zVFYyU0J4eUNKQ2tYc05EMDVkQ0VyVkhTSklzK0JkdFRWTlk5QXd0eVBtbnliMHY0bVNUenZXZHc9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwiaWNvbkRhcmsiOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJwcm92aWRlckxvZ29MaWdodCI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsInByb3ZpZGVyTG9nb0RhcmsiOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJGSURPXzJfMCIsIkZJRE9fMl8xX1BSRSIsIkZJRE9fMl8xIiwiRklET18yXzMiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwibGFyZ2VCbG9iS2V5IiwiY3JlZEJsb2IiLCJtaW5QaW5MZW5ndGgiLCJobWFjLXNlY3JldC1tYyIsInRoaXJkUGFydHlQYXltZW50IiwicHJldmlld1NpZ24iXSwiYWFndWlkIjoiZGM1ZTk0OWRmOTM5NDNiMzk4NzdhODVjNzE4NmI3NTMiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsInV2IjpmYWxzZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImxhcmdlQmxvYnMiOnRydWUsImVwIjpmYWxzZSwiYmlvRW5yb2xsIjpmYWxzZSwidXNlclZlcmlmaWNhdGlvbk1nbXRQcmV2aWV3IjpmYWxzZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwicGVyQ3JlZE1nbXRSTyI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOmZhbHNlLCJhbHdheXNVdiI6dHJ1ZX0sIm1heE1zZ1NpemUiOjE1MzYsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6OCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoxMjgsInRyYW5zcG9ydHMiOlsidXNiIiwic21hcnQtY2FyZCJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi04fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotMzV9XSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5Ijo0MDk2LCJmb3JjZVBJTkNoYW5nZSI6ZmFsc2UsIm1pblBJTkxlbmd0aCI6NiwiZmlybXdhcmVWZXJzaW9uIjozMjk3MjgsIm1heENyZWRCbG9iTGVuZ3RoIjozMiwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjEsInByZWZlcnJlZFBsYXRmb3JtVXZBdHRlbXB0cyI6MywidXZNb2RhbGl0eSI6MiwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjEwMCwiYXR0ZXN0YXRpb25Gb3JtYXRzIjpbInBhY2tlZCJdLCJ1dkNvdW50U2luY2VMYXN0UGluRW50cnkiOjAsImVuY0lkZW50aWZpZXIiOiIiLCJ0cmFuc3BvcnRzRm9yUmVzZXQiOlsidXNiIiwic21hcnQtY2FyZCJdLCJwaW5Db21wbGV4aXR5UG9saWN5IjpmYWxzZSwibWF4UElOTGVuZ3RoIjo4LCJlbmNDcmVkU3RvcmVTdGF0ZSI6IiIsImF1dGhlbnRpY2F0b3JDb25maWdDb21tYW5kcyI6WzEsMiwzXX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI2LTA0LTI1IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTcyOCwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZdWJpS2V5IEJpbyBNdWx0aS1wcm90b2NvbCBFZGl0aW9uIChFbnRlcnByaXNlIFByb2ZpbGUpIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNjA0MjUwMDgiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblByb2ZpbGVzIjpbImVudGVycHJpc2UiXSwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNi0wNC0yNSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk3Mjh9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjYtMDUtMDEifSx7ImFhZ3VpZCI6IjE0OWEyMDIxLThlZjYtNDEzMy05NmI4LTgxZjhkNWI3ZjFmNSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiMTQ5YTIwMjEtOGVmNi00MTMzLTk2YjgtODFmOGQ1YjdmMWY1IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlNlY3VyaXR5IEtleSBieSBZdWJpY28gd2l0aCBORkMifSwiZGVzY3JpcHRpb24iOiJTZWN1cml0eSBLZXkgYnkgWXViaWNvIHdpdGggTkZDIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjUwMjAwLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsiZWQyNTUxOV9lZGRzYV9zaGE1MTJfcmF3Iiwic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURIakNDQWdhZ0F3SUJBZ0lFRzBCVDl6QU5CZ2txaGtpRzl3MEJBUXNGQURBdU1Td3dLZ1lEVlFRREV5TlpkV0pwWTI4Z1ZUSkdJRkp2YjNRZ1EwRWdVMlZ5YVdGc0lEUTFOekl3TURZek1UQWdGdzB4TkRBNE1ERXdNREF3TURCYUdBOHlNRFV3TURrd05EQXdNREF3TUZvd0xqRXNNQ29HQTFVRUF4TWpXWFZpYVdOdklGVXlSaUJTYjI5MElFTkJJRk5sY21saGJDQTBOVGN5TURBMk16RXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFDL2p3WXVoQlZscWFpWVdFTXNyV0Zpc2dKK1B0TTkxZVNycEk0VEs3VTUzbXdDSWF3U0RIeTh2VW1rNU4yS0FqOWFidlQ5TlA1U01TMWhRaTN1c3hvWUdvblhRZ2ZPNlpYeVVBOWErS0FrcWRGbkJubHl1Z1NlQ09lcDhFZFpGZnNhUkZ0TWprd3o1R2N6MlB5NHZJWXZDZE1IUHR3YXowYlZ1em5ldWVJRXo2VG5RakU2M1JkdDJ6YnduZWJ3VEc1WnliZVdTd2J6eStCSjM0WkhjVWhQQVk4OXlKUVh1RTBJek1aRmNFQmJQTlJiV0VDUktnanEvL3FUOW5tRE9GVmxTUkN0MndpcVBTemx1d24rditzdVFFQnNValRHTUVkMjV0S1hYVGtOVzIxd0lXYnhlU3lVb1RYd0x2R1M2eGx3UVNnTnBrMnFYWXdmOGlYZzdWV1pBZ01CQUFHalFqQkFNQjBHQTFVZERnUVdCQlFnSXZ6MGJOR0poamdwVG9rc3lLcFA5eHY5b0RBUEJnTlZIUk1FQ0RBR0FRSC9BZ0VBTUE0R0ExVWREd0VCL3dRRUF3SUJCakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBanZqdU9NRFNhK0pYRkNMeUJLc3ljWHRCVlpzSjRVZTNMYmFFc1BZNE1ZTi9oSVE1Wk01cDdFamZjbk1HNEN0WWtOc2ZOSGMwQWhCTGRxNDVyblQ4N3EvNk8zdlVFdE5NYWZiaFU2a3RoWDdZKzlYRk45TnBtWXhyK2VrVlk1eE94aThoOUpESWdvTVA0VkIxdVMwYXVuTDFJR3FyTm9vTDltbUZuTDJrTFZWZWU2L1ZSNkM1K0tTVENNQ1dwcE11SklaSUkydjlvNGRrb1o4WTdRUmpRbExmWXpkM3FHdEtidzd4YUYxVXNHLzV4VWIvQnR3YjJYMmc0SW5waUIveXQvM0NwUVhwaVdYL0s0bUJ2VUtpR24wNVpzcWVZMWd4NGcweExCcWNVOXBzbXlQeksrVnNndzJqZVJRNUpsS0R5cUUwaGViZkMxdHZGdTBDQ3JKRmN3PT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZkNBWUFBQUNHVnMrTUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFIWVlBQUIyR0FWMmlFNEVBQUFiTlNVUkJWRmhIcFZkN1ROVjFGRC8zZDU5d2VRU0lnUzlBUUFYY0ZMQVFaaTlmcGVWejF0WS9XVFpyNVd4cGM3VzVrbkxhNWpJM1o4NXNyUzJuTTJzanRXd1pTN0lVSDRINHhDbkVReDREQVpGNzRWN3VzODg1djkvbEluQnZWSi9CNFB2OW51LzVudS81bnZNNTU2ZnpBL1F2MEhiL0lyWDNWRktQbzQ1Y25tNGluVUlXWXdMRlJtWlFVdXdqRkcvTjFpUkhoMUVaME5SVlJ1ZHF0MUJkKzJuU0t5Uy9PaHlzMCtsazNlLzNrUTlxdkQ0WlV0YTRWVlNVdVkwZWlweWlUaEFmb2NvT1JWZ0R1dXczcUtSaUFkM3JiY0V0alRqWUlvZjZXYUhzQ216VlBXQ014K2NnaDh0THFXTUthTVdzVWpMcW8yUnRKSVEwb096bWVycFF1NGVzWmdzT05rR3hIN2Qwa2R2VFQxN3M0T01VN1ZJOFpoamdHYU0rQXE5aUVOdThQaWYxdWR6MDdNd3ZLV2Y4R2xWb0NFWTA0UEM1V2RUYVhZRmJSOHZOdkw1KzNLZ2ZiNXhOTXlhOVJhbUppeW5hTWxHVFZ0RmxyNmJhOXUrcHFuRVg0dU11UlJnalNZRWhyTjd1dEZGZTZscWFsN05ma3c1aW1BR0h5blBwYms4Vm1ZMHhzdG5wdGxGQ1ZDWXR6VHVCTjgzUXBNTGpUdGV2ZFB6U1VuSjdlOG1ranhaMzlmWGJLRGZsZFpxYnZVK1RVZ0duQlZGNmZRMmlQSGc0VzE2VVdVd3Z6YmsxNnNNWkUrUG4wcHZ6N0pTZXVBeWVzOGxjcENtYUt1by9wK3FXcjJVY3dJQUhXcnZQMFlFemhYQXRMQWJzc0hocDdpR2FtdnlpalA4cnlxclhVV1g5WG9vd3h5QXVmTkJycDQzUE9CRlhabGtmOE1EUmlxY3B5b3dBd3B1ejJ4K2ZXdnovRHRkZTlzbXN6eWd0Y1I2QzF3YmR6Qmw2T2xxNVdOWVk0b0dhdGhKTXJrVEV4MGpBUlNIQVZzKzVyWWtRTlhiK1FnZlBMc1E2Z1h5SW5zcmVRZm1wbTdSVkZZZkw4Nm4xZmlVT2tZdlNoa1VQeHZidWt6b3k2SzFpaE0xaG8zWHpXNkV2U2ZYQStkcGlXR2FXZCtkb1h6THptR3dLWUZMQ0FzUkFsUEJBaE1sQ0ZYVTd0QlVWUHI4SGdWY0pIV3ErRjAwcGxyK0RNVGRyUDR6dnhZMTFrTk1oeFQrU2VUR2crZDRWNUxRSml0eVVHSk5COFZGWnNqZ1lCWk0vSUkvWENUa2owcXlET3BGMkFWUTE3Q0lqVXAvRG5UMVVrTDVGNWdkaitzUzF3ZzFnRTNnaWdtNjBmQ1h6U25QWGJ5QVBiSVh2K0lEcEUxNlRoYUhJUzlza3lobG1NRTVGM2NmcUFLaHEyQzBFNVBIMWdZYVhhTFBEa1pHMEhESk9uS1dIcDUxSTB6NVNPdXg4ZTFXQXVaemRIUXJUa3A4VG1qWG9JK2xhMHdHWnN6dWJxYk8zaWZRNkEvVzd2VlNZc1YzbVIwSkt3a0tjNFdIaUJrbVI4STNDQ2dJODdvT0w0cXpUNVArUlVKQmVqRU9nQVBLOGhZUHphdE0rZUlUcDJJTzl5VFFtZXJvbVBSeHgxcXhBY3NpbGUvdWJTZUViY1dRR1lFQ2doY0xZMkh5S2pvZ2pIMjVoTXBqcFV2MU91Z2xpNGVoMmVSdzBPMzJiSmpreXVDZ056ZzB2emxZTVNpU3MwdW9vNE1HN2hNT2pDRWFYMXlGRTBuU3ZqQnp1VG5FcEs4Nlo4SW9xRkFJdWJ3OGtnOUFyRWFSRVdTWkkrakg0WGJwNmc5RTlFbkpUM29hUnpETitNVUpCUURIbjU2YThvVW1FQnVzT3hCcy9ONSt0SkViUGtBRkRqOFVHdk9zL0lXdmNTZ2xHQmh2UzcvRlRZZnBXR1lkRFk4ZlBBeFdTQTM1c1RDNHA0K0xtNEFhcUlvUGVRdGZ1Zks2SmgwWmh4bGJzVVhPU21YTmlmRDVaVEFreURvZmJiY2NseG5BOFdOQXF4Q2JSTnlraFh4UXBhRHc2N2ZYVVlic2lHMEtodHYyb2VJdmg4cmhRTVlPY0VBcVhHL2VJK3puZ09jNXl4cjhxODJJQU0xYy9GTEZPcGxxdTVlRlFYck1aekdjVkNqWWJMV0c1STRCVDFldVJybGJ4dE5PdE1pdERERWhMWElJeW5BQXZ1T0VXRTNYM05kQWZ0OTRWZ2FHNDJYSVF0MFpYNlBlQ0UvcVFGZTlySzZIeDdZVTUwS3ZIN2ZXNGZTK3E3S0tCSnhzZ2dCWDVwU0FHaDFqSXJWaDV6UTZ3M1JmYWFoQlhtL2FDYkNaVGpDVUZVVHlXWnFXOXA2Mk1qSlBYVnFPclBnTU80TnY3NEdrZitvd2Z0TlZCRFFuakZKcUhTdzE3cFh2aFdXNUtacWUvUTQ5Ti9VU1RDQVZXb1FYRklIQkhYWGUzRlByVURzdUdEbXRGL2hIS1RIcGVreGhpQU9QSStTSnE2UzZIRjRJOVlXemtCSlRvNDZpVU16V3A4UGlyL1JpZHVMeEtZc1Nrc1Y4dkxsT1F2aEdYMllsUjBPQmhCakMrdS9nRWN2WTBBcEs3WWs0MU54alBTUW5XRkhURjY2VXJqZ2V2QjhDdTVhK2wydllTUlB0dVZEbzczaGhkTVNIblVYN3RUanNWWkd4QWwvV3B0aU9JRVExZ25MMjltWDYvdFIxdG1sa1lqOFc0WCtDU2pXY1VER1kxTnBTL0M3aFNLcWlNTE0vbDJRbVNXWjczRGR6K2dpbzhCQ0VOWVBRNDZxbmt6d1hVYnF2Qmt4alVRc1dmWkZnYnVvM3JBZit3TjdqT085MCt5bng0UGkzTCswbllMMVNjaERVZ0FQNGdQVi83SWQxcSsxSFNobXVHa0lxV1JQZ3l4TUZxUDhIZmpUbmpYd1k1YlFmYkpjdDZPSXpLZ01Ib3RGL0hlMWVnc2F4SFNxRzZ3ZmRtUTV4OE55VEZGcUJjcDJpU293SFIzeWs1KzM2aEY3dlhBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMV9QUkUiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6IjE0OWEyMDIxOGVmNjQxMzM5NmI4ODFmOGQ1YjdmMWY1Iiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6dHJ1ZSwidXAiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZX0sIm1heE1zZ1NpemUiOjEyMDAsInBpblV2QXV0aFByb3RvY29scyI6WzFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjgsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4LCJ0cmFuc3BvcnRzIjpbIm5mYyIsInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi04fV19fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMC0wNS0xMiIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiU2VjdXJpdHkgS2V5IE5GQyBieSBZdWJpY28iLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDE5MTAxNzAwNCIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4xLjEiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IkZJRE8yMDAyMDEifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjAtMDUtMTIifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIwLTA1LTEyIn0seyJhYWd1aWQiOiI1ZGY2NmY2Mi01YjQ3LTQzZDMtYWExZC1hNmUzMWM4ZGJlYjUiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjVkZjY2ZjYyLTViNDctNDNkMy1hYTFkLWE2ZTMxYzhkYmViNSIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJTZWN1cml0YWcgQXNzZW1ibHkgR3JvdXAgRklETyBBdXRoZW50aWNhdG9yIE5GQyJ9LCJkZXNjcmlwdGlvbiI6IlNlY3VyaXRhZyBBc3NlbWJseSBHcm91cCBGSURPIEF1dGhlbnRpY2F0b3IgTkZDIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfSx7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjowLCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjowLCJibG9ja1Nsb3dkb3duIjowfX0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNJakNDQWNlZ0F3SUJBZ0lVWS8yQ1J4djBUWkdPZHNMc0M1NFJsMDdnSVA4d0NnWUlLb1pJemowRUF3SXdiekVMTUFrR0ExVUVCaE1DVkZjeElUQWZCZ05WQkFvTUdGTmxZM1Z5YVhSaFp5QkJjM05sYldKc2VTQkhjbTkxY0RFaU1DQUdBMVVFQ3d3WlFYVjBhR1Z1ZEdsallYUnZjaUJCZEhSbGMzUmhkR2x2YmpFWk1CY0dBMVVFQXd3UVUwRkhJRVpKUkU4Z1VrOVBWQ0JEUVRBZ0Z3MHlOVEExTVRrd05UVXdNRGRhR0E4eU1EVXdNRFV4T1RBMU5UQXdOMW93YnpFTE1Ba0dBMVVFQmhNQ1ZGY3hJVEFmQmdOVkJBb01HRk5sWTNWeWFYUmhaeUJCYzNObGJXSnNlU0JIY205MWNERWlNQ0FHQTFVRUN3d1pRWFYwYUdWdWRHbGpZWFJ2Y2lCQmRIUmxjM1JoZEdsdmJqRVpNQmNHQTFVRUF3d1FVMEZISUVaSlJFOGdVazlQVkNCRFFUQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJEeU9nc3V2RndHaGRDcjUzcEJzaS9nbkd3ZU8xSldMd015V29ZRVdCNWNmMVlEQ1FkN2hybjJRaktZb2Z5ZlRQcHFEQmNqU2Y1RlJVQzdGWEdlZC8ybWpQekE5TUF3R0ExVWRFd0VCL3dRQ01BQXdEZ1lEVlIwUEFRSC9CQVFEQWdFR01CMEdBMVVkRGdRV0JCUlVoaDVKVUJQMlBvbWp1ajcwanFhNmVWR3k1ekFLQmdncWhrak9QUVFEQWdOSkFEQkdBaUVBb0lKb29TS0dId2NVaTB6bEpocUlZYVh1K0FrYjhhVGRXTi83UDZMMkM3QUNJUURZQUV3ck5JTHdiZ0U4S0NrWUUwWlpoaW5hcWhRcllST1hUbnI2a2hmVmhBPT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBTTRBQUFCNkNBSUFBQUI0SnZ2d0FBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFEc01BQUE3REFjZHZxR1FBQUJkWFNVUkJWSGhlN1oxNVdCVlY0OGRiekVmTHRGZDkxY3F5ZkYrMzNIc1NsekpMY1gzVDZxMnMxRFFyMTB4TnMxNS9MdVdhb3F3aUtJS0tnQXV5Z3lnQ3Nnb0tLb2tzNGhVVTJSUkI5SnIxNysrcmN4ekhjN24zbmpOM1pyamlmSi9QSDNEbXJEUGZPZWZNblprelR4anYvSzJqb3dHNjFYUTBRcmVhamtib1Z0UFJDTjFxT2hxaFcwMUhJM1NyNldpRWJqVWRqZEN0cHFNUnV0VjBOS0l4V0MydnJDNDB1MkpkakdIRzdsd2JXUlY1SVRxbmlzcGZSeEVhVmE5V1huczdJZi9hN3pHR2p6MVBPNnpOa0EweW9YTFdzWjFHTzREQ0xxdWpMcnl6NFFSbEl4WTJIREpRdWVuWVRpT2ZxK1dYMWJuRUZZOXh6YWJNWkJtTXBGUStPcmJ6V0Z3V0dLcHVyUWc3VC9uSkFyclYxT0N4c0pyQXdleUtDUjZuS0ZmVmkyNDFOWGlNckFZS3ltL085TStsakdXS2JqVTFlTHlzSnZCL29WWUdVOTFxYXZBNFdnMTRKbDZpN0NWRnQ1b2FQS1pXQTFuRk5aVERSSFNycWNIamF6VlFmZk1PWlRJQjNXcHE4R2hZcmZMaXRUTWhPYkhMRHgyWXZrOGU0Zk5EVTdha1VObUNyT0pheW1kQXQ1b2FQSHE5V25IV3BUU3ZOTGpIdmQ5bVhnb1N6bE81Z2VDc2N0MXFHdkFJRDZCbGhWWEpyc2xlYjN0UWZyTEE0Uld4VkNZQ1RyRVhkYXVwelNNL1Y3dVNYeG0zNmdobEtYT2dMNlNTaTB6ek82dGJUVlVheVdXQkliTWthbkVFWlN4VExGZ3Q2a3lsYmpWVmFTUldFOGlOeWZOMGNLWHNKY1dDMWNDaS9RVzYxZFNqVVZrTllPSy9iWmduNVRBUnkxWkxMN3F1VzAwOUdwdlZRSFg1RGQvUjJ5bVRDVmkyR2xnWlhxUmJUU1Vhb2RVRTlrMEpwSHdHckZvdHViQmF0NXBLTkZxckFiK3hkTjltMVdwZzlwNXp1dFhVb0RGYnJlclNkUmxXQzg0cTE2Mm1CdHBaN1VwRjFaR2pDUzV1N2d0K1hEVGxxNmxqeDQwYjRPRFF1Zk8vV3JWcTljUTlMVjIyL0g3a3Y0eGxKNDNaVHNiby94aDlualY2UGNGRXlDQmpIZjJ5VTE1Y0FhL1ZydFRjMXEybUJ1cGFMVFE4WXY3Q0h4MUhqbnJwNVpjRlA5V3I5aDA2ekpnMSsrS2xVaXI1WFc0YmpZWVlZL3cwby9kVHRMZE15UkROK29DVUxTbGNWZ1B6QXZPb2tKR2pScE82V3RQc09YT3B0SnFSY1RJYnArdWN1ZDkvT1dreXp1UkJnNGQwNzlHanc0c3ZObXZXakZST0NmMjdTNWVKWDN4eE5pK2ZLdDBxeWxzTmxYQjE5eGcvNGNQbm5udU8xTTY4Um8wZTQrbmxqUTZQeXFRZUtuT01VZU5vYjFHZ0Y2UlMzZm43bHZHdmZWOEZjVmt0TUtOTSt1L0gvLzB2cVM2RFhubmxsWW9xN2Q3dHUzSHJka1JVTkFZS2pBK2tCcHBvNGFMRlZFMnNvcVRWOGdxTDVzNmJSK3BpVFQxNzl0cm1zNFBLd1RxR0tLTi9SOXBoSWxGajZQajNLRWdzNHJLYW9lcVcrSGRpVWdxcE1iUGNQTGFJeWRVREk4YWt5VlBRYVpGU3RkWFFvZTlTOWJHS01sYXJxYnUxZXMyNkRoMDZrSXBZRS9yNXltdlhxVXhZdVZWcmpKOU9tMHpBak5WQXdvWUVkcXRKbWZzOTY4a2o2cDEzaGxLWktNdXhsRlFNWWFTd0JsTERXQzNoV0ZMZmZ2MUlGUmdrbWY3YndMbmQ5Y3plb3NiUzBlNVRXVnp0TmNTRDEycVh5eW93anlUMTVsRjRaRFNWbFNMazVPWmhMa2pLYUZBMWdOVUNndmFSd3RrVUZoRkY1U0NmZ3IxR3J5Y1pyUVlPcjR6bHRacXpxeHVwTjZjbVQ1bENaV1U3T0VYLzBibzFLYUNocGJYVkZpejhrWlRNSnUvdFBsUU90bkxHL1dHcm1SMUFRVkdxZ2RkcWI3LzlEcWs2cDVvMmJYcm1EeVYvTVlIUFNOYjJJVTJ0aG10TVVpeWJKay81aXNwQkdSSm5TYXhtcVZjRFhGYUxpSTRoVlpjbFplWUo5N0EzbjBIYVdVMUc0K01UazZoTWxNRllaOXo3QnFQVjRsWWRvVUlzTUhYYTE2VHFzdFNsUzlmYW0wWXFUeGxzOWQ1T2NyUW5hV1MxMkNOeHBFQm1vUXVrTWxHU3Fsemo5bWIzckdacEFBVm5vODlSSWViSUt6alA4cnVnWmNuNU5lZGhvbUppU1Y1MnBoa3paMUZWdFlvY3EzSDlwQ2xvN2JyMVZDWUtrN2FFeFdyVkZUZW9FSE9zV3JPV1ZOMEdPWTRjU1dYTHhmSE1rK0pkTzd0Uzl4NDlzazZkb1dwckZXNnJvUXhTSUk5MitPMms4bEdZMmpManRxWldCMUIyK3ZUdFM2cHVtdzdIeFZNNXMvUEIrUEVrRnhzRXMvYnUwd2ZqblNKTW5UWnRrN09MREo4QmJxdkptNkppektYeVVaNkU3NVN5V3VEZS9hVGVOdXZiNzJaUW1UTVNFUlZOc3VEWFd3TUdPRzEyUnFkWVZubVZ5cllCNGJZYU9rL1NJQjdObkRXYnlrZDVLczVZSFVBWitmaVRUMGk5YlZiTGxxMEtpaTVRK2JQdzZXZWZrU3g0OU5uRXo0OGNsZCtQcWdxZjFRb3ZYQ1J0NGxTdlhyMm9yRlFoWlFFZHdrOW0xaWxTYVlXMGVzMWFxZ2lyeEI5TElvbDV0R2p4VDFRK2RnV2YxUktTa2tteitPWHA1VTNscGp4RjRYUUlQMHQrL29YVVdDRmhxa1FWWVpWcFgwOG5pWm0xMVhzYmxZbTl3V2MxLzRBZzBqSit0V3ZmWHQ1MGtvUGJENTdJa01mMUczVnFQSTJ6ZTA4Z1ZaQmxYbnpwSlpLU1RYYmVud253V2MzR253QStHRDlCeTJlNVpMRE5ad2VwcTZKQ3c2bUNMTUE3ZXZiczJhdTh5bzZtLytiZ3M1clhObHQvdWU3LzVwdmhrY3JkY1ZjYTlxZHRPM1hxUlA1aVUxSnFHbFdXT1RDM0kyblk1TGRyTjVXRGZjSm50YU1KaWFSOXRtbnBzdVZwR1psVTVnMU9mQ0pIZDVLY2xrNytZdFAzODM2Z2lqUEhtTEhqU0JvR0RlVy9RZFJROEZudFFuRUphYUlTZW4vNENLZE56cWR5emxLbE5CU3o1MzVQYW1aTncwZU1RUHpwMzN4TC9tY1FwcW9scFE4OVIyNk9sangzQ0p4ZDNhamtkZ3VmMVFCMkdXbWxjaG8yN0QzTUF0TXpUMUJsYVFsODBLNWRPMUloYXhJZTZVNU56eUQvczhscDAyWnBpZldTbTE5SVlqUG8rZWVmTHltOVF1Vmd0M0JiYmREZ0lhU2hLc2hoNEVDTXJUaUVWS0Vhc05uWmxWVENtdjdSdW5YeFpYS0ErL1h2VDBJWk5NREJRU3pPSFB1RFEwaHNCdUVVcFpMYk05eFcrM1hWYXRKUU5ZVXB5THJmTnlqN2RLRmxCZzloUFlXbWZUMWRUT1creFpPRXN1bkF3UkF4YmIycy9HMFZpY3FnbjViOFRDVzNaN2l0ZHVyTUg2U2htbWpzdUhFNG5KZ2pVdFZRRmx3VWsvSVlGQm9lS1UzN3pEUFBrQTBNK3ZTemlkSzBwaUFDaWNvZ0xlNHNLd2UzMWNBSDR5ZVF0bXFsRmkxYWZEWng0cjREQjZtYUtNV1VyNmFTa3F5cGI5OStWRnF1aXdNb015dWJ5a0hLR3oxN2tuZ01PbjdpSkpYY0ZFeElGQVJYSVFkRHc2Z2lHSkZqdGUwN2ZFbGJOZGV3OTk3MzNibUxxbytONU9ZWE5ILzJXVktBTmExWStTdVZuUGZpWVBGUFM2Z2NwSkJJYk1vdkxLS1NVd3dhUEpoRVZWUWZqQjh2WTV5Ull6WHd5YWR5bmp0UVNtOE5HS0RnTFQrdTJXZjI2UndxT2VDNk9IaTFVeWR6NzhCZXZWNUxJckdwM05xdGx6WnQycENvU2dzVEc2b3NxOGkwR25qdHRkZEpzUTJrY2YvNTRHakNNYXBXTXVqZHV3L0owWnJNM1YvaXZUanc4TnhLNVNCd3FiU014R0RRVTA4OVJTVTNoVVJWUitjTnhWUnhscEZ2dFlJaUF5bXpRYlh3eDBVMWRmTHZzZ2NFN1NVWk1jakgxNDlLTHRLOE9lc1FEQTE5ZHhpVlhDRC9mQkdKd2FEV3JWdFR5VTBoVWRVUjcwV0pmS3VCeEdUdTlTelUwSWdSam5rRjlYejdnb1dQUG1aOVQ2Smp4NDVYcTJ1bzVDSzhGd2VSMFRGVURpRDdUQTdaektEWE8zZW1rcHRDb3FvalRhMEdpZ3pGWEJkTjZpbmhHUGZMZnhrbnNraGlCczM5Zmg2VlhBcnZ4UUd1ZWFrY0FGY20vZnUvU1NVM2hVUlZSMXBiRFZSY3JkYis1NDk2aGF0eHFtNldXYnhrQ1VuSklLc1BVdU5paFVSbFVMTm16WEp5NlZYY2poeE5JSnNaNURCd0lKWGNGQkpWSFRXQTFRUldyMTJuM3ZVT3U2SVBIYVlxWm81ck5UZGVlNTMxeW1id2tDRlVjbE40THc2V3JWaEo1WkRDODdUSUs2KytTaVUzaFVSVlJ3MW1OWEE2NSt4WFU2ZVJpalNRMnJkdnovaE9PZGV6ZDc5dmRLS1MxMHZMbGkxSkFnWjE2OWJ0eHEzYjB1UTV1ZWZJTmdZMWFkSkVtclplU0ZSMTFKQldFd2dPQ1ozd0lkOXlIc3JxaXk4blVWV3FGMGZIa1NTQk5UVnYzaHpYaGxUeWV1RzlPS0F1YVV0S3I1QU5iQkx2K3B1amR4L1czM0ZrcU9HdEpvQjZmRGxwTXFtVTVvcU1Qa1RWaHlLTzV4blB6Ny80Z2twdUR0NkxnNUdqUmt1VDE5YmRJaHZZWlBXeEsvYkhWV1RJWHF3bWtKSjJIRk4xcnZteUlwbzAyY3J5WnJObXp5RlJHUlMwYnorVjNBTHNUNGdJaW90UGxDWkhEMG8yTU9oZ3FQVTN4QXdsbHhPVFVtQUxxemk3dXZYcTNadGt6U0Frb2NxeWpMcFdFem1Xa3FxbDU1NSsrbWtMYjJjVlh5cHQyN1l0aVdwTlhidDFvNUpiaHZmaTRMdVpNNlhKMlJkNWhjemRkYkFGOW1zN083V2FpR2FlczNCWDIybXpNNG5FSUJuUGhIRmRpYi93d2d2bkwxd1UwK0phZ1d4Z0VPK1BPeXdNSGZvdXlkMmE3TjFxSW1uSE05ZXVXKzg0Y2hUWDgxN3NncHVwRWtVR0RocEVJakZJeGlQQjM4MllTUkt6YVkxa21hWUJEZzRrbEVGV24zNlRRU08wbWdqTzZlMCt2b3BmdEw3ODhzdFVRUUtoNFpFa0JvUGtyVnJGZTNFZ2ZRYnVtMisvSTZFTU1uMTR6bllhczlWRUVwTlRaczZlZ3dHRk5NVm0xWHNiZnZLVUtXUXpnekR4b3BJejh1Njd3MGdXYk5vVEdDUWtEQW1MSUVFTWF0NzgyZm8vWVdNRDltVTFGS1BHTEVHZ29NZ3dZK1lzb1RFMkt2ODh2UVRRSCtmeTJiK0NnMHVIUzFmS3FSd1k0YjA0UUtjdUpLeXVyZU9hVWF4ZC83dFlxQ0xZbmRVZ1hDdXRYck9PMnFRVVVUR3hiZHYrVXloSXRoS1NrcWxzVi83Nkc5bkdvT25mZkVzbDU0TDNnd2NwYWNlRmhCOSs5REVKWWxDdjNyM0ZFaFhCSHEwbXFHKy9mdXMzYkRTVVhLTGlLQUo3cyt1VjZST3pQWHYxSXRzWVpPTm5MdVl3djhBc2FONThzbUtYbS9zV0VzU20rUXNXaW9YYWp2MWFUVkNiTm0xbno1bHIyb3ZZaUkwL2RsYzkvSGlaZjBBZzJjQ2cvbTlhZjBUSE1yd1hCeGdsTHBmZEhhOVA1WEMvazVhVXdyb2dpRlhzM1dxaXhvNGI1N2ZMbjRvdm13TWhvU1JmZnBrK3BEcmh3NC9JTmdiOSt0c3FLcmtNaG85d0pObXhhWk96aTVDUTZ5Y1BxRjI3ZG1LaE52TElXRTFRNTg2ZE1iWGZIM3p3ZW0wZGxaWUxXOWJZNnRPM3J6U3I5TXdUWkFPRG5uenlTVVZXRXZIMDhpWTVzbW5nb0VIeUVrS3ZkdXFrU0owZk1hdUpFdDdmUkQ4blkvM2Z0SXhNV3g2QSsrSCsxRWZneDhVL2tRME1RdjhuVFdzTEhUdStRakpsVTNBSWVjdFMzbnQxVHB1Y3IxNnZGVXVYd2FOcU5hblFCaHgrMk03QzhnaTFONDBuc2s4Rjd0Mi9kTmx5cmhkRFRIVTg4OEhydUppMGNTMkhwdUNycGo4c1dFZ3laZFBFeno4WEV2cnUzRTJDT0lYQmROcjA2Y21wNldJZDJNSDg4dDlkdXBDTXJNbCtyU1pWa3laTjJyYjlKMXIxMWdBSFdGRGdkZVpuWXEwS3VVa3J2TlZyRzluQUlJeEUxYmFOKzFKNEx3NHdkcC9NUGkya2ZmLzk0U1JVbHBvMWE5YStmZnV1WGJ0aDVpZnVaTXVRbEd4Nk5LeW10alk0YlpKV2VQaUlFV1FEZytiOU1GK2ExblpHanhsRHNtYlRrcDkvRVJJRzdWUHM4d2xxU0xmYUUvMzY5NWZPVjdqZURZSGlFaDU2Z014MnR2bndyVHZ4Mm11dmkvWG4ramxYWStsV2U0S2FwbkRkNWxMcFc5aThjNE10VzcyRWhPVlYxOTUrUitZM1NkWFdzWlJVc1lFc05EYXJVViszTlpSY2JzMXpHYnVSWVdGSEdTeml1ZjZGaHIzM1lJMiszUHlDN3QyN2t3MzJKTk9YQ3kzVHFLd21mZkJMQUpNMnNvMUJ6N1ZvVVZoa29ISlFoTFNNVEZJR3M2SmlZc1hrNktmWkh4dldUS1hsRldJTldXZzhWdk1QSU0vaFNIRndHRWcyTStqTFNaT3A1QXJDK3htOHFkTytsaVlQaStCNHpFNGJTYXZIZ2h5ckphZWxjOTNrMFVEMStpd2tMSnhzWnRPK0E4RlVEZ3JpdDR2dmQ3TG16Wjg5bTVjdnpRSFRjTjdmSTlTVGpPdDBPVllUU0UzUDRIM3RVUTA1T280MHQ4QXMxOXVCUFhxOFFTVlhuQzVkdTVMQzJHUzZiQ0JZYWgvZmNaZXgzSmg4cXduQWNDdCsvYTFCenJaQmd3ZnYzRzMyMW43TzJYTk5tellsVVJuMDgvK1dVamtvemkvL1cwb0tZMVAzSGoxdTNyNURaUUxRdlRYc1M5M1V6NWFNMkdvMWtUTi81RHE3dW8yZk1LRkZpeGFrUnFwcGhLT2oxZmZTbHEvOGxjUm1VM3FHNmw5Tk9KSE4vZmxIWHorenQ4Z1VmejZlUmYzNjk3ZHdlbHRHTWF1SmxKUmUyUk1ZTkgvQndpRkQzdWJxVjZ4cThPQWhxMWF2RWUvYldLYkhHMitRWkF5U3NkeW1QTmlYY3hNMGVveVY3ellYRkJsOGZQMnd0NGVQR01IK2lROWV0V3JWQ3BjMXN0KzBFRkRlYWxLdVhxK05pam0wYlBrS3g1R2p1SlpPRWRTNlRSc016Yk5tejNIMzhFemkrY0V3SVNuNVZaNzc2d2RDUXFrY1ZJTHJNMWFRK0ZnUkk0VkZodWhEaDRORHduQ2R0TTNIMTlYZFkvMkdqWmpoWUlZbkc5NjdBdVpRMTJvVVZkVTFSUmRMc2svbkpDYWxoRVZHN2Q0VGdIRnc3YnIxeTFhc1hMZitkeGMzZCsvdFB2NEJnY0Vob2RoZmpDdXk2RHdxYUdvMW5jY1ozV282R3FGYlRVY2pkS3ZwYUlSdU5SMk4wSzJtb3hHNjFYUTBRcWJWaWkrVmVuaDRiTml3WWE5azhjNlQyYWYyQkFRSWlJRWc4MlNXcjUvZnhvMGJ3eU1peE1EZ2d3ZUZUNmhrbkRoNU9PNm9HSjZjbW9ac0liK2RPNi9Wa09lZWI5Nis0K096US94UTNJbXNiTEdnRU1rM0E4OWZ1SWlRdEhTeStJWEFqVnUzRXhLUGJmZnhRWjVCZS9kS04xRWNDQTRPQ0Fpa0ZnZy9HcDhnMUNjM3YwQU1SSXZRSEFRZWw2eEdleWoyc0ZDbDJNTkh4TUNzVTZjUkl0UWMxY0RmbFZlcnhhMXVibTdJeE5uRjVRL0pZNGI1NTR2MlAveU1DZW9RRjUrQVA5SXpNcVBxKzR3THdDNUtUVHZ1czJNSEtvYTlMWWJqU0czYXRBbWx1THE2U3I5WmczMGJHaGFHUU93WkhEZ3gvUHFObTZpazhLRzB1S1B4MGdaR3h4d1NHb2p3VzMvK0pZWXpJdE5xTUlyL25vQ2J4ajlSTXpFd1B2SFlicE1iWkJtWkp6WnYzaXg4MDA4YTJkM2RBNGNCZjhCbkFmZVhmQUpING80ZVBCaHl0YnJHMWMwdEpaV3NENEQ5aUowbFdnMDdvdkNDQWZzMEtTWFZVUHhndVpDdzhJajkrdy9nSEJCREFQenQ1ZTB0Zkt5dXV1YUdkSk1VNUlNcTdkeTE2OVNaQnl0OVhMMWVpM0t6VDUxQkJXb2xTMmpoNEFrZmY1RzJhTGUvZjd6SmV3bnduOGVXTGFoWW5mSFByVnUzSXVGRnlmb21hRUpoMFFYWXlNWEZWUXpNUHAyRHRvdi9ndUxMcFloNXVhd2N6aWd5UEZoaVVncDJvNXU3ZTJsNUpmNldOaE03Q2szQStZWTZvSFZpT1A3RkVheTRlZzJuT2lJVVhTVGZKb01GOGUvbGUwc3c0Y3lVbmpZN2QrMU9TVXN2TWhRamduWWZhY1FPY25kM1I5a0ZrdC8wWVRVWEZ4ZTRYdHJUSEF3SkJlSy9JaGFzaHZNc01pcmEyM3ViK0RZSFpUVUI3UDFjeVJOZE9KWTRrRmZLSzNFOENpVExYWGw2ZXFhbUg4ZStGczVJcVdPa0hENFNodzRqS1RsbDc3NTkwbkNjeWpoVjRGZnBhbTA0QjFBVytwN0thdys2S0gvL1BaNWJ0NklJSEE4eEVEMEgyb0lxb1ZPTWlJekNIOUpXb0Fub2g1Q1Y5SWlhV2cyZ0d0aTN5SW9LRjBGUEp2UjhnVUY3VVFleDd4U3NobjVveTVZdDBxSngrTEpQaytXQ2tYUGFjYkk0cG1XckJRWHR4Y0ZDaGF2TWZHZlNBdkxuYXZBQldvNVN4UkVIVnNNd2g3WkpleHJVVmRxZmkyemZ2aDFqSmY2QUwzRTh4SEJZemM5dkowWW9OTGkwakR4U3pHSzEwemxuRVVjUURxb1lqczRtNWxBc09udzRHNXVrL1pBVVlUNEFJVnNxRGpvU0x5OHZhdVFxdVh3Rm5RU09xeGdDcTZHclFQTmhkekVRRVhBVWNmSmdQbkF1dnhCZWxMNXhqYklRWDZnNU9oZ2hzRjZyWVZjZ2pyaERUSUh2aFZQNjdMbTh1ekh2MTBHd1dsNUJJUnFZS0ZtL1o4Y08zMlBKS2ZpanB1Nm1rNU9UdUdvVFJpckVGM29RSENPY2UwSTRRSHN4d1VnOGxuU3B0RXdNWkVlbTFjSWpJK0V6ZUFMZUVnUEZYZzJJcTNWY3E3bXhEVlgyOGNIeFJ1OGlSc1lCd0J3bE5Dd2NacFd1TzR4T0xqRG9iaWNIZzVvYlFBVW9xMkhvREkrNCsxVjF6T1NjblozUnlRbmhtUHFnQ093akhBeGtVcS9WMEVsakUwNGVPQklkei9IN0R4UmhKTUloaVlrOWpBd3gwQWlCaU9QcjY0dVJFUjBEVGd3aEVJaTltblJLaWxiQTR1aFVrQzBTWWovZ0xCSzNvZ25ZazZnYnhqTHhqTVVJam1NdjdNYXl5aW9oRUgrZ2hsY3FIcGlZNG1MSlpmUyttTURBY0lqNXdHcEZkNjJHSFlpWm9uUUFSWlBSS0pTTzBXT0hyNiswczhlSmlvWmdmNkxPMHBubHpwMjdwR2JsUmFiVk1QWEI2UUtMU0tzb1RLRUVjSEtJNFJoNnNQdFFTOG9yU0E3RGxWV1F2U2xRVm5tMTVONUpnNzVCNk1ZQjloUmNaWnBjK2hyNmhZc2x3aXBYT0dhb2dIUjJqM0NoVnVaT1IreFFzU2RHSEdubmdYQWt4T1JhREFIbzBoQ0lVT25zV0FnRTB0a1k0bUJJQWtMUnlFZjZpV00wQVpNZWFWVUJIQy9rQThSTm1BRGdYK3BEUVJRNE1ZUlVtTnVKZ1RpMUVDSnVGY01CSm4rNGhNSVZDWGF2TkJ5TlF0ZUlTVGFxTFExSHRtTFhLd1A1QTZpT0RoZTYxWFEwUXJlYWprYm9WdFBSQ04xcU9ocWhXMDFISTNTcjZXaUVialVkamRDdHBxTVJ1dFYwTkVLM21vNG0zUG43L3dFMTNsRW5HZTJTNUFBQUFBQkpSVTVFcmtKZ2dnPT0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsImxhcmdlQmxvYktleSIsIm1pblBpbkxlbmd0aCIsImNyZWRCbG9iIl0sImFhZ3VpZCI6IjVkZjY2ZjYyNWI0NzQzZDNhYTFkYTZlMzFjOGRiZWI1Iiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6dHJ1ZSwidXAiOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJsYXJnZUJsb2JzIjp0cnVlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOmZhbHNlLCJhbHdheXNVdiI6ZmFsc2V9LCJtYXhNc2dTaXplIjoxMDI0LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxLDJdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjEwLCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjcyLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5IjoxMDI0LCJmb3JjZVBJTkNoYW5nZSI6ZmFsc2UsIm1pblBJTkxlbmd0aCI6NCwiZmlybXdhcmVWZXJzaW9uIjoxLCJtYXhDcmVkQmxvYkxlbmd0aCI6MjU2LCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6MSwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjQwfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDgtMjciLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJTZWN1cml0YWcgQXNzZW1ibHkgR3JvdXAgRklETyBBdXRoZW50aWNhdG9yIE5GQyIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjUwODI3MDAzIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDgtMjciLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MX1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0xMS0yNSJ9LHsiYWFndWlkIjoiOWEyNzI1NTgtNWNmYS00NDI0LWJlMzctNjU1MDk2NzdiNzdkIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI5YTI3MjU1OC01Y2ZhLTQ0MjQtYmUzNy02NTUwOTY3N2I3N2QiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiU0VDT1JBIElEIEtleSBTIFVTQiBDb25zdW1lciBFZGl0aW9uIn0sImRlc2NyaXB0aW9uIjoiU0VDT1JBIElEIEtleSBTIFVTQiBieSBJbmZpbmVvbiBDb25zdW1lciBFZGl0aW9uIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfSx7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDUkRDQ0FldWdBd0lCQWdJSVMyVjVRMjVGWkRFd0NnWUlLb1pJemowRUF3SXdnWlF4Q3pBSkJnTlZCQVlUQWtSRk1Ta3dKd1lEVlFRTERDQkRRU0JtYjNJZ1FYVjBhR1Z1ZEdsallYUnZjaUJCZEhSbGMzUmhkR2x2YmpFaE1COEdBMVVFQ2d3WVNXNW1hVzVsYjI0Z1ZHVmphRzV2Ykc5bmFXVnpJRUZITVRjd05RWURWUVFEREM1SmJtWnBibVZ2YmlCR1NVUlBNaUJTYjI5MElFTkJJRk5sY21saGJDQTBRalkxTnprME16WkZORFUyTkRNeE1DQVhEVEkxTURVek1USXlNREF3TUZvWUR6SXdOVEF4TWpNd01qTXdNREF3V2pDQmxERUxNQWtHQTFVRUJoTUNSRVV4S1RBbkJnTlZCQXNNSUVOQklHWnZjaUJCZFhSb1pXNTBhV05oZEc5eUlFRjBkR1Z6ZEdGMGFXOXVNU0V3SHdZRFZRUUtEQmhKYm1acGJtVnZiaUJVWldOb2JtOXNiMmRwWlhNZ1FVY3hOekExQmdOVkJBTU1Ma2x1Wm1sdVpXOXVJRVpKUkU4eUlGSnZiM1FnUTBFZ1UyVnlhV0ZzSURSQ05qVTNPVFF6TmtVME5UWTBNekV3V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVNSbkxybGlsNUI5R0s4Zm4ybHluMEVoQVlLUm1rTGcvTXkzODUrRVo3MDFMR3ZSMENjOXJZejZMSlBONFdSSmhGc0E5SzNsUVI1M3hNcWhHdWRtdk1sb3lNd0lUQVBCZ05WSFJNRUNEQUdBUUgvQWdFQU1BNEdBMVVkRHdFQi93UUVBd0lBQkRBS0JnZ3Foa2pPUFFRREFnTkhBREJFQWlBdmxoYXBHdXZETmVWOXpBMk4wR2J6MlJMa3cvOVFyakVkNFZFT1czRzJWd0lnWG42R3BUQXFZWGdXR1dnd0lTd0J0Z0hRcHpaenphNFFnU1dmM0duUXdVaz0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSWNBQUFBOENBWUFBQUJNNnFtOEFBQUFCR2RCVFVFQUFMR09mUHRSa3dBQUFDQmpTRkpOQUFDSER3QUFqQThBQVAxU0FBQ0JRQUFBZlhrQUFPbUxBQUE4NVFBQUdjeHpQSVYzQUFBS0wybERRMUJKUTBNZ1VISnZabWxzWlFBQVNNZWRsbmRVVk5jV2g4KzlkM3FoelRBQ1VvYmV1OEFBMG51VFhrVmhtQmxnS0FNT016U3hJYUlDRVVWRW1pSklVTVNBMFZBa1ZrU3hFQlJVc0Fja0NDZ3hHRVZVTEc5RzFvdXVyTHozOHZMNzQ2eHY3YlAzdWZ2c3ZjOWFGd0NTcHkrWGx3WkxBWkRLRS9DRFBKenBFWkZSZE93QWdBRWVZSUFwQUV4V1JycGZzSHNJRU1uTHpZV2VJWElDWHdRQjhIcFl2QUp3MDlBemdFNEgvNStrV2VsOGdlaVlBQkdic3prWkxCRVhpRGdsUzVBdXRzK0ttQnFYTEdZWUpXYStLRUVSeTRrNVlaRU5QdnNzc3FPWTJhazh0b2pGT2FlelU5bGk3aFh4dGt3aFI4U0lyNGdMTTdtY0xCSGZFckZHaWpDVksrSTM0dGhVRGpNREFCUkpiQmR3V0lraU5oRXhpUjhTNUNMaTVRRGdTQWxmY2R4WExPQmtDOFNYY2tsTHorRnpFeElGZEIyV0x0M1UycHBCOStSa3BYQUVBc01BSml1WnlXZlRYZEpTMDVtOEhBQVc3L3haTXVMYTBrVkZ0alMxdHJRME5ETXkvYXBRLzNYemIwcmMyMFY2R2ZpNVp4Q3QvNHZ0ci96U0dnQmd6SWxxcy9PTExhNEtnTTR0QU1qZCsyTFRPQUNBcEtodkhkZS91ZzlOUEMrSkFrRzZqYkZ4VmxhV0VaZkRNaElYOUEvOVQ0ZS9vYSsrWnlRKzdvL3kwRjA1OFV4aGlvQXVyaHNyTFNWTnlLZG5wRE5aSExyaG40ZjRId2YrZFI0R1FaeDREcC9ERTBXRWlhYU15MHNRdFp2SDVncTRhVHc2bC9lZm12Z1B3LzZreGJrV2lkTDRFVkJqaklEVWRTcEFmdTBIS0FvUklOSDd4VjMvbzIrKytEQWdmbm5oS3BPTGMvL3ZOLzFud2FYaUpZT2I4RG5PSlNpRXpoTHlNeGYzeE04U29BRUJTQUlxa0FmS1FCM29BRU5nQnF5QUxYQUVic0FiK0lNUUVBbFdBeFpJQkttQUQ3SkFIdGdFQ2tFeDJBbjJnR3BRQnhwQk0yZ0Z4MEVuT0FYT2cwdmdHcmdCYm9QN1lCUk1nR2RnRnJ3R0N4QUVZU0V5UklIa0lSVklFOUtIekNBR1pBKzVRYjVRRUJRSnhVSUpFQThTUW5uUVpxZ1lLb09xb1hxb0dmb2VPZ21kaDY1QWc5QmRhQXlhaG42SDNzRUlUSUtwc0JLc0JSdkRETmdKOW9GRDRGVndBcndHem9VTDRCMXdKZHdBSDRVNzRQUHdOZmcyUEFvL2crY1FnQkFSR3FLS0dDSU14QVh4UjZLUWVJU1ByRWVLa0Fxa0FXbEZ1cEUrNUNZeWlzd2diMUVZRkFWRlJ4bWliRkdlcUZBVUM3VUd0UjVWZ3FwR0hVWjFvSHBSTjFGanFGblVSelFacllqV1I5dWd2ZEFSNkFSMEZyb1FYWUZ1UXJlakw2SnZveWZRcnpFWURBMmpqYkhDZUdJaU1VbVl0WmdTekQ1TUcrWWNaaEF6anBuRFlySHlXSDJzSGRZZnk4UUtzSVhZS3V4UjdGbnNFSFlDK3daSHhLbmd6SER1dUNnY0Q1ZVBxOEFkd1ozQkRlRW1jUXQ0S2J3bTNnYnZqMmZqYy9DbCtFWjhOLzQ2ZmdLL1FKQW1hQlBzQ0NHRUpNSW1RaVdobFhDUjhJRHdra2drcWhHdGlZRkVMbkVqc1pKNGpIaVpPRVo4UzVJaDZaRmNTTkVrSVdrSDZSRHBIT2t1NlNXWlROWWlPNUtqeUFMeURuSXorUUw1RWZtTkJFWENTTUpMZ2kyeFFhSkdva05pU09LNUpGNVNVOUpKY3JWa3JtU0Y1QW5KNjVJelVuZ3BMU2tYS2FiVWVxa2FxWk5TSTFKejBoUnBVMmwvNlZUcEV1a2owbGVrcDJTd01sb3liakpzbVFLWmd6SVhaTVlwQ0VXZDRrSmhVVFpUR2lrWEtSTlVERldiNmtWTm9oWlR2Nk1PVUdkbFpXU1h5WWJKWnN2V3lKNldIYVVoTkMyYUZ5MkZWa283VGh1bXZWdWl0TVJwQ1dmSjlpV3RTNGFXek1zdGxYT1U0OGdWeWJYSjNaWjdKMCtYZDVOUGx0OGwzeW4vVUFHbG9LY1FxSkNsc0YvaG9zTE1VdXBTMjZXc3BVVkxqeSs5cHdncjZpa0dLYTVWUEtqWXJ6aW5wS3prb1pTdVZLVjBRV2xHbWFic3FKeWtYSzU4Um5sYWhhSmlyOEpWS1ZjNXEvS1VMa3Qzb3FmUUsrbTk5RmxWUlZWUFZhRnF2ZXFBNm9LYXRscW9XcjVhbTlwRGRZSTZRejFldlZ5OVIzMVdRMFhEVHlOUG8wWGpuaVplazZHWnFMbFhzMDl6WGt0YksxeHJxMWFuMXBTMm5MYVhkcTUyaS9ZREhiS09nODRhblFhZFc3b1lYWVp1c3U0KzNSdDZzSjZGWHFKZWpkNTFmVmpmVXArcnYwOS8wQUJ0WUczQU0yZ3dHREVrR1RvWlpocTJHSTRaMFl4OGpmS05PbzJlRzJzWVJ4bnZNdTR6L21oaVlaSmkwbWh5MzFURzFOczAzN1RiOUhjelBUT1dXWTNaTFhPeXVidjVCdk11OHhmTDlKZHhsdTFmZHNlQ1l1Rm5zZFdpeCtLRHBaVWwzN0xWY3RwS3d5cldxdFpxaEVGbEJEQktHSmV0MGRiTzFodXNUMW0vdGJHMEVkZ2N0L25OMXRBMjJmYUk3ZFJ5N2VXYzVZM0x4KzNVN0poMjlYYWo5blQ3V1BzRDlxTU9xZzVNaHdhSHg0N3FqbXpISnNkSkoxMm5KS2VqVHMrZFRaejV6dTNPOHk0Mkx1dGN6cmtpcmg2dVJhNERiakp1b1c3VmJvL2MxZHdUM0Z2Y1p6MHNQTlo2blBORWUvcDQ3dkljOFZMeVluazFlODE2VzNtdjgrNzFJZmtFKzFUN1BQYlY4K1g3ZHZ2QmZ0NSt1LzBlck5CY3dWdlI2US84dmZ4Myt6OE0wQTVZRS9CaklDWXdJTEFtOEVtUWFWQmVVRjh3SlRnbStFanc2eERua05LUSs2RTZvY0xRbmpESnNPaXc1ckQ1Y05md3N2RFJDT09JZFJIWEloVWl1WkZkVWRpb3NLaW1xTG1WYml2M3JKeUl0b2d1akI1ZXBiMHFlOVdWMVFxclUxYWZqcEdNWWNhY2lFWEhoc2NlaVgzUDlHYzJNT2Zpdk9KcTQyWlpMcXk5ckdkc1IzWTVlNXBqeHlualRNYmJ4WmZGVHlYWUpleE9tRTUwU0t4SW5PRzZjS3U1TDVJOGsrcVM1cFA5a3c4bGYwb0pUMmxMeGFYR3BwN2t5ZkNTZWIxcHltblphWVBwK3VtRjZhTnJiTmJzV1RQTDkrRTNaVUFacXpLNkJGVFJ6MVMvVUVlNFJUaVdhWjlaay9rbUt5enJSTFowTmkrN1AwY3ZaM3ZPWks1NzdyZHJVV3RaYTN2eVZQTTI1WTJ0YzFwWHZ4NWFIN2UrWjRQNmhvSU5FeHM5Tmg3ZVJOaVV2T21uZkpQOHN2eFhtOE0zZHhjb0ZXd3NHTi9pc2FXbFVLS1FYeml5MVhacjNUYlVOdTYyZ2UzbTI2dTJmeXhpRjEwdE5pbXVLSDVmd2lxNStvM3BONVhmZk5vUnYyT2cxTEowLzA3TVR0N080VjBPdXc2WFNaZmxsbzN2OXR2ZFVVNHZMeXAvdFNkbXo1V0taUlYxZXdsN2hYdEhLMzBydTZvMHFuWld2YTlPckw1ZDQxelRWcXRZdTcxMmZoOTczOUIreC8ydGRVcDF4WFh2RG5BUDNLbjNxTzlvMEdxb09JZzVtSG53U1dOWVk5KzNqRytibXhTYWlwcytIT0lkR2owY2RMaTMyYXE1K1lqaWtkSVd1RVhZTW4wMCt1aU43MXkvNjJvMWJLMXZvN1VWSHdQSGhNZWVmaC83L2ZCeG4rTTlKeGduV24vUS9LRzJuZEplMUFGMTVIVE1kaVoyam5aRmRnMmU5RDdaMDIzYjNmNmowWStIVHFtZXFqa3RlN3IwRE9GTXdabFBaM1BQenAxTFB6ZHpQdUg4ZUU5TXovMExFUmR1OVFiMkRsejB1WGo1a3Z1bEMzMU9mV2N2MjEwK2RjWG15c21yakt1ZDF5eXZkZlJiOUxmL1pQRlQrNERsUU1kMXErdGRONnh2ZEE4dUh6d3o1REIwL3FicnpVdTN2RzVkdTczaTl1Qnc2UENka2VpUjBUdnNPMU4zVSs2K3VKZDViK0greGdmb0IwVVBwUjVXUEZKODFQQ3o3czl0bzVhanA4ZGN4L29mQnorK1A4NGFmL1pMeGkvdkp3cWVrSjlVVEtwTU5rK1pUWjJhZHArKzhYVGwwNGxuNmM4V1pncC9sZjYxOXJuTzh4OStjL3l0ZnpaaWR1SUYvOFduMzB0ZXlyODg5R3JacTU2NWdMbEhyMU5mTDh3WHZaRi9jL2d0NDIzZnUvQjNrd3RaNzdIdkt6L29mdWorNlBQeHdhZlVUNS8rQlFPWTgveHZKdHdQQUFBQUNYQklXWE1BQUE3RUFBQU94QUdWS3c0YkFBQUFKM1JGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JRYUc5MGIzTm9iM0FnUTBNZ0tFMWhZMmx1ZEc5emFDbSs3NGFBQUFBQUIzUkpUVVVIM1FvSEVURUpGM2J6R0FBQUFDRjBSVmgwUTNKbFlYUnBiMjRnVkdsdFpRQXlNREV4T2pBM09qQTNJREUzT2pNME9qVTB2SmNlZWdBQUdLQkpSRUZVZUY3dFhRbGdGRldhL3FyUEhPUk95RUU0d28wQlFRUlVGQkZFR0FFVkJHOW1VSENFbVowZGNjWmoxZG1aY1YxWFJSRHZjOFJaWFk4WkFYVVFSQkFRUEFBdmtCdENJRUJDN2p2cDd2UzUzMTlWVGJvN2pRUU1FYlEvcUhUVmU2OWV2ZU43Ly9IZXEyN0ZSK0FNZzgvcGhyZXlGbDZYRFo0eWZoNnVnS2VrSEI1WEZYeDFEbmlLYStBcE9BeDNTUW5EcTRCcUh4U0xFYjRvQXd3bUU0eUpTVkRTRW1Ic2xBSkR2QlUrZ3hGR2F6S3ZVMkhNU0lFeEt4V0d0Q1FZRW1KaHpFNkhvai8zNTRiVG1oemVSZ2U4ZGV4OEhyWWxuOEc1ZmlNOHRqcDQ5bGJCVzF0RGN0VEI1N1l6cFllSEMxSVJuOUVJUTVTQ3FENGpFWFhGVUZpRzlvTXhMaDNHTGp6UzRxRVl6RkNpckt5NVBPSDRrRHdqNURnTjRENVVEdWQzVzJCZnN4bE5lWnZoMlZnQVYyVStPNmdKQm5Ba0k1cXBEUENpbkljZEp1VEFQTHdQclAwSHdYcEpMa3lkZXlEcW9nRmFaaEg4WVB5bzVIRGxGOEc1ZlRNYW5sdEtRbnhPS1dCanFKUGRIOGZSR3NXRHFnQU9IazRlQ2t5OXNtSElUVUhjK0pzUWMvWEZNS1lrYVJsRmNFclFydVR3dVQxd2JjMkRiZmxxTkw3MUlWejdEOERucUNVRktPNFJxNUtCeW9UL2JDU0RIVDZ6QmRHakxvSjExSG1JdVg0Y3pCbVpWQWttTGJNSVRqbmFuQnlWOVE2OHZmRVFlcVozd0xpenM5UXc1NDREcUgzbUdkaGVYd2RmSTQxRy9qTWhrV1NnN3FlY0VKdkJpd2E0VVVONnhNSTY2V0xFVEJpRHVGdXZaNW9JZml5MEtUbG1MbGlQaGUvdUFPS2p5QWczWURYaG0rZXZ4dUJrQ3c2bVh3aWxRYWhnWVVycGNwRVFEaEtpR0thRUxFU05IWTNZYThjaGR1bzROYThJZm55MEdUbHVmL296UFBYaGJpQXRUZ3VRL25mU2k2aXlvM3paVENTOHZ4YUZVNlpUTW5Ra0tXb1phWUpsUUYvRS9lZk5pQjAxQ29iVWVQVzJDRTRmdEJrNWxOejV3TEJzRVFqQnFHckViZVA3NGNYZlhJQnRpb0tFK0tGSWVIQTJZaWRQcEhmUlVVOFV3ZWtJVWZnbkRaVlYxYlhJcTZTWGtVSTMweGZHUXVoZ3hjNzhDdlcweDN1Zm9FdnRsMGo0L1l3SU1jNEFuRFE1M0VjcWNLanpNTlMvc2dTOVVtS0EraVpObFlUQzQ0WFBLbllHRUhQVlNQVXpnak1ESjB3T1VVTGxNKy9Ed1U1ZGdjSUdOTHkxUWcxUHlNMEFHa2lRUUVqdWhiVllNSDJ3ZG4wSzhQNm1RNWk3ZENlZVg3a0hYKzB0MTBNamFBdWNrTTFoLy93cmxGNDZIVXFUaDRhbFRFRDU0RFkxb3R1M2J5TXZweCtHMy9ZUFZBaEJMRVpONTlpY3VIM3EyWGhpNWpEMS9yYkVKN3RLTWVyUHF3Q0hrN2F0ekk4UU5JQjdka25BdW9jbklDdVJIaFB4NmVZaU9Gd2VETzJmZ2NRWVRZSkYwRHEwbWh5VmR6eU0yaWZtd1l3Y2FvL21pU2laMm5haEN0M3JkcUhNYk1IY3Q3ZGdSMzRsTEZGbTNEQXlCOWRmbEtPbmJEdlUyMXhJdnZsdHVCV0twaWdoQnZXWlZJTXFMTk5pUXRHcjF6QkV3V1gzcjhESG4rU1RQQWIwNnBPR3I1K2VoSGk2MXhHMERzY2xoNCtqLzFEdUNQZ0t5a2dKcWc3TkROWGhJekZLWURxL056cDk4QjRNS2JGNitLbkZBMjlzeGwvL3NRVklvcTNqWlhrYW5UQVlGSGlMNjNBUHZhSkhwZzNHcXlURmpMbnJnSTRzRTcwa0hLbkg0elBPeFIzWERkSnppZUI0K0Y2Ym8rbWJuVGlZT2dRb2FHeEJERm52Y09JSVVsK2RpODRiVnJVYk1RUlByTnBMNjFabVY0bDZPMTc1M1hCNEZ2MFNLNSs2Q3ZkY2RaWWFYT2R3QVdhUktMd1EvbFBBUkdUR2llR1lrc094WlFlS3o1bkFOazBrZ3pUOXJVR0JCL1h3bWUzb3RHMDF6SDI2NmVFYUttc2RXTCtuREt1MmxxQ2l4bzUvM3RuMkhvb3k1RW1BTmdROFBpUlNLcFF1bkFxTDMrN1FVY3huWjgxNGgyazhIQUljQTNZWDlyMXlEWHAwU3RCVFJIQThoQ1dIYytkZUhNNDlEeGIwQ0xJdk5HS1V3OVM3QjdLMkxvZGlEZTZRd2lvYk9vLzdHeURHSUR1clMvY1VISHgya2g3YmRsRDZ6d2VHZGdab2FKNFZiOFhXWnlmREtLb2pCSVhWTnR6M2YxUS84T0xSRzg5QlpqdEt0NThDV3FnVjU4NzlLTW9kUzJMMERDR0dMSS9SMEx6c0FtUnRiMGtNZ2RWc2hFSkNRRVpuUWpTaWFBaWVFb2drME9FbXRTbEF3aUtiTnNsci96NmN4MFVSWXB3RVd2UmU4WmhwREpRbDlPRE85MUtWR0pLU2tMbnlkU2drUVZoUUNQbkVRSlJEQkZLNFNiRzJnTnVyNWMxSENBRXRORVpQSjFTTGUzMlNxSFc0OWJNZkgwSGtLTHA0TXRsUlJsb0Vqekl2R3FGMFMwSG5xazE2U0NzUk1xSnJiRTJZOTY4ZHVQTEJqNkgwZkJRUDB1MFZ2TGVoQUYxbkxZWXk4QWtvQStZamVmcmIyTFNyVEkwTHhQWkQxZmpEYzE4QXZTbWRSRndZRlJUVU4ySDIwNS9obHZuck1QSHVaVGhVVXFlbkJ1WXYvZzVqLzdRQ3lyVWs5T0FuNGFhckc0aGxXNHB3MzhLdm9OejRKdTJZcDlEazljTGg5T0IzTDJ5QU11WmxLR2ZOZ3pMOFdjeCs4bFA5am5EUUt2a082NkJNL2w4b1o3UDhsN3lrcXI2WWFXOWk3ZFlqYXZ6MzRZdWRwY2lZdFFSSzM3bElIUFVDMjJFQmxQR3Y0S1dWTkx6RFFNcTRZUGx1WFBmSUdqNXZBZTU1ZkwwYXZuWmJNVWJSZlpjMlZBWThEdVdxdjJQSlp3VnEzTW5ncU0xaFcvc3BTa1pQVWUyTTRGNzF3WTFxWk8xWkNVdnZZT016Rk9WMURuU2N1UWlJcGpwcThxQjNSaHoyUEhtbEhndHNPMUNGczJjdkFUcFloSEc0LytwY09HazNQUGJPVm0yWlA1cmhJZ1JzOURSSzYxRklENlJUYWpOUjFZa3Z1VCtINVBDYlN1eFFOYjNnU0IzeUYvOEszYk8wRmQ3dXN4ZmpRSEU5RUd0Qkd1dFI5dVpOYXJnZjB4NWVnemMremdQUzQyQmtmaC9mTnhyVDZQNFdzUjZnTFFNeng0NXNUeTF2d09XRE8ySDVmLzlDdXpFRWp5M2FpcnRmL1ZxclE0eVo5N0JNUnQ0ckU0SjBzNStiTXdLL0dkTkxUeDJNOXpjZXhLU0gxckR1dkUvYVJXMTdOa0lUSlVpVkhWTkc5Y0NpdXk5UjAvcFJYRXRqKzRZM0tEWjVqOW1FUVRsSnVHVmtkOXorREFlT2hFblpCYkp0b3NLR04vODhCamRjK1AxOUZ3NnE1SkRkM0dVVFpwTVlra0VnTVJTNnEwVklmdXorNHhLak5VaE5qa0UwQ1NPZGhYZ0xIdnBnRng1YnVndEk2NkIxaEpzOUlTcEpkbnRseFdIVy83RFJBbUFVVzBNYTBCY2dBY1FRbFlhbERkUWxOeDNaNmN4TFIwSUhObElzNDhUMkNheVdqcjQ5MDVpSUhVbzE2ZUV4NnY2UFVDUmtpK045VWc1Ulh3TG0rU0ZIOGFHS1J1MDZBSGtrNU4wUHNweFNCNW1RTzFoTk10bUF3elVrQ3N2S092LzJ6dVZ3U0w0aGNOQ1RtdlRIRHpRRFhrZ2xaQ3JnZmRWMnRVenkzTVhMZHVIbDFTUndBREpwenczdjFWRzdoMjIxNVZBTmJuOXhJNThWclExTURqaTEvT0xCOGZuM0NuRlBBaW81NnA1N0hWNTdGYytDYlFtWi9VU1VGZkYzVHRkRFRoQWhwa0FHT3lKRE9sZHRkRVlLeTlseFprcVphenNub1Y4YzQxeTZ6aVVSdnFTM1VTOGpTRWU4eFlqSlBWUFYwYWlDbzEwYzA2blpDYmlTMG1MV29DeFlaTVQ2SWRKRlNCR0dHSUllV2MxRVVra21SS0VyZmw1S0RLYXdQRW9UeXlsRWxPS1MxRStGRWZNVEgxcE50NW9kSmRLaXBBRmZ2M0ExZk10dXdVZHpKM0NJNnlxdVR6S21QYXFKL2tCTXZHYzUwQ1ZSa3pJMURvenRsNDVOTDAzQlhWZWVwWTU0dGR6ZGt2RnZUMzRPbTE4NjZrZ1Uwa3U1SkkwUXlXcUNrZmJLcE94RW5KdElrc2c4ajRDRHJxSzZVWlhxSndxTkhBOHRoQm1kZUJiY2lqS2ZrZmJVSS9yVlNTQ2tVNFFySFdUZHhSOWhkK0Zjam82U3YxK0Rmeng4T1hZK1A0VWpqeU5IRXJLenlobHZEeURId0p4a0xIbnlLblV4VDAxRHU2TUxPL1NkUjhiai9YbFg0TDdmWGFnbGJDV1NSVUpJUGxJY0lWSzlBd3R1T3c4YitZeEZqMXlPZTY1Z0o5WHJSTFNZVUJvaU9iN2RYNFc5QlpRVU1rTHRUdng2VWk3T0ZmSVNZMG5VaVJUMVVrZFl6Rmkvb3hnTmNxNmptTVJmbmM4QlNiVUFseERRaDQ4ZUdJdGh2SC91TFVOeDQ0aWNveXZkTHBzVGI5T21DWVFpS3N4dm1GTlNwSENnZlRkL0l0NWx1YjkrWmhLNnkwcTVTR0xDeGtRbEpQMkp3dEMwYVN2Y0ZXVzhQVlJxZUtERUppQm0wbWc5cEcyZ2pteTlNemhtc09tcFNaU0dsQmc2TWdka2tQVWtoTjVwT28yQ29jNXA4T0QvSmphUVUwVG9TU0JXOWJxMGZNQ1I5Y2RKL1RIbnlsdzFUbkFEOVQxZER5MmVoMUZHYWdBKytQcVFXZzhWSk9xMXd6cHI1enB1RWowdlphTTNWVjVqeC9aQ0VsL0h1MThWYXAwcnc3UFJnUWR2UEVlTDBESGo4dDY4bC9HU1BlMnVsMWJzMWlKMFdOVEZUZjNaN1BqdFQxK0YzQzdOdS9GN2lwcFREWEJGemNKOUVtMWtzSCt4a2VXVEc2VUZBdUdHZVZBT2pHazAvdG9RaXQvdDVDT3RQRGVHdUtIWk1wcjlsV1pVYUtuQ29UVnB3a0h0YS8vTnZFZ1FOUmVBZERIczNDSzU5RVFoRTIwdnI4N1g3QVdXMTBUMTJGazNoUDFJRVZ0STZpSzNrZkJWb2lwMGJKWHRCZjZCd3M4aGZXbi9CT0Rpc3pLUUlvdUVjai96M2xQcG9Da1NvRnJVdVo3bWRvcFZKWEl6VEdKdnlTUlFjSkZQQ0FibmhoMjhueG1GUU93TlUwWlgvYW9Ob2RkSENoMk96S3JSR1NhOFBlQU5mWERnenJZd2pXeWthb0JSNjVSWWRtQ0d2azNBRDU5MHJyOCtQTi9tdDBHSURXS3c2cDF2WXBwdXNwTXVBR2JtWi9SdmZlQUFhcVJrcTZUM2NpeDQvQU5LaDBrR1hVallpY0xnL0dMdk1jbGg3cEd0WDdVZmZsaDEyaFpIeXlMRUNGTXdwMUZuRENWS0xUdGp5SngvSWVmWGk1Qno2eUowdjIwUlpqMHJyaVVKSUdCbkY4aDJTaDFIS3RqUkRCTVltYmRabFFUQlVFVGQ2bDZPV0E5MjhVTGFFUVpQVVFYcnJsY2dDQ1o0U3NXRGlTQWNSTms0dlFIaWhCSmtYNTBUQmZRcUNpaitEelR5VTd3cXYvZEVJdFVHcUFYRlRtTXpRS1dHSGVSQ1BqVmNJVWQ4ZE5JQzFFbzdJRVRqTjBPa2lhdm9nSDcxTTBlNGpnc05sTjRWNzZLV0VzRi8wQWhGSlQyY0trcU1TanVxSk42UEVQdmxkSVRCa0NSR1ZMTzc2SWRDNTlhenUwUzMyaUpRVlVzQVRBeXcrRFVCaVJGUHoyRGR2SW40Z203d1p3dXVERDRldndKclhweUNCVE9hdDB2NnhQZ05NTHJDY3VXb1FlbGpSeWswT29NTjVsTU5nMmx3Ti9aL3VJVWlFN3pGUitEY0ZUdzc5N09FZEZBWTZXRUpYS3ZoK2JuZEVuRkJqeFJjMkN1MXhUR0sza2kvVFAyRkx5SlZqRmY5ZmcrWkVjN1Y5SWxhMG0wUk1YdWpWZGU3L1dDd2p1clBlcmVjSUpFOW1ENlBHNDN2cmRKRElnaUZXN1lweW1ZaW9vNGR2ZnRJdlhyZUdwd2oyeHJFd0ZTSjRVVnhYWURLSWV4T04xemlSZ3N4U1p3WXV0VkpTY0hlMEttR3dUcjQyRHZEWmVtKzZrLzM2MWMvWThpZ0RpUDJiN3UwcHpydHJWcHU3TUR2OW1vdmI3VUd1ZGtraDd3dXFuZitOeUd2Vlh5MnV4elZhandUa0hpOWtxS1IwczY3NXcxUm80Y0NjWW1zZjBzM1Nid1lJenFnN3VuWDlKQ2ZNY0tvbFlsRDZPcEw1MG1jMVl4NzN2aEdpd2lBUkozOW04VW9DcG1qbUtET3BqSldFdERkZmZUZDdXcTRIMnUvbE5sWG5raitOR2F2SGRGZGkyaEhHQXhXQzJKblRTWTFaUCtFMERnUVBwSWpFOVYzellmSGR1Sno4K0ZHMnhtSlk5UmpjUGRrZE85Q0NTQzJnOFdJQ25vakYvNWhLUW9xR21tait2RFBqUWZSYThZNzJGWlFnMXREOW9RTTZwYU1mdWwwQm1SaHoycENlV2tENWkzWnBzWnR5Q3ZIdzR0NW5pQ3ZtREtlZWMyVXFmeDJobXJ0cFB6WEhUUktwUVdFcW5JMFE1RWtUUTZVamczZUM5RXFCR2YxRTRTQzkvNWpOTENEWHAyMFpKd1ZYeHlwUTg3VTEyRVkrVHl1KzgrVnlKYzlGUmtkc0dMVlBxcUs0QTFNZjVsQnFaMWZyVjFreHVNdTJYaDArZDh3L0xmdnFzdjFhcDdsRFpoejNVQWt5NHB4TzBNbGh4SWRoZlIvUGtPZjVhQS9LQWp5ZHB2ejgrOVFlZTljUGVRWUlMOFVFWVBDTS85bkNDVDRhRnk0ZVA4ZkxhRS9KQmlCejJoWjNLUFF5c0lFZXZKUWFJL1FJNCtWajVxSU9NYU0wSUN1U2Zqcm5CSHFjcjNxOWtmVG84aEpCbVF2YldmWlVFQVUxZUszMHdmai9ON2FpcTBmMXczdml1bVRjbFVDcUNOSk5qWjFwRWNqeHFxVXU5cU9YSjR2dVBVWWRxRy83T0dLcG9acjhkSU80WkljRDBlYkpQYWFpVEFQN0UvMUlyT2lMYk15SVFWMWo4eEQ0L0tXK3hMOGNMaDg4QjJnVVpZblJ6bnlBMVloL2RndHkrMTZmRGxIalR0dzR3NXg0TERFMHppVFkzOWwrQ2xqaWR1bnBTazhXQU5YR0RkUXNFdldML1MwWmZ2NXJKQU5ONVVOZEJYOXo2SXhXUnd3dlMyd3lkNlNQZnF6K0ZtcGRtSW9mUGpMOUNGNGVzNUZsQUpzT3psa2FWL3kybGFzZmk2ODh4SThPK3Q4ZFEwbEZIKy9heVJtanVzRGJENENsUEkrMlhjaDkzOWJoREVETXJIdHBhbDZ5bUFVbDlJejB0c1JlWlZ3K0RjbTZUaFl4anp5S0trWTc4dXZZTFl0NTdLT2g2QlhFM3d1THc1bm5nOWZaUk9sUmZCQ2tBWUZUZGlGOU5mZlFJZHBFL1N3OW9ZVTkyVEdRZnZncTRKcXJDUXBaSzNrNXBIZDBWSGQrdGM2UExrcUQ1VVZEWWlMajhaZEUvcnFvVDhPSEYvdWFQbmVpblBIZmhUMnZ4Um1wTElMV2s2NitDZzczU2hIeXNLSEVYL0w5WHBvQkQ4VitKcWNxUG5yeTRqLzQ3VHdMelc1OWgvR3dSNERZVlZmbWc0L1pkdUUzVWo0OWUxSWZla0JQU1NDTXgxTkczZWlkdDVMU0h2ck1TaG1jM2h5Q0Z4N0NsSFVkd3pKSVhNZE11MGJta3loQkNtR0tiY24wdDkvRmVZZXdidWdJaml6VVAzUTQzQnVQNFQwdDU3UVE3N0gxamYzeVVaMi9pb1ljN05JZ3BidmtBaFpUTWlFZDBjcER2Y2NodnJYNkg3cENNdTJDRTVMT0Q3OUNvVUR4OEhVTlNlSUdJSmpTbzVBbEV6K0pScmYrNWhxUnFSRE9ENHBjS0VRcGw2OWtQYmlvNGdhUmY4OWd0TWFybTBGS0x2bkx2am85WFRhc0JSS21CWGZZMG9PUDRRNUdlKytqc3hWOG1VcDFYUjFLN1VJRlg1ZWVkWGQ2NzY4R2hTTkhvK1NjVFBWcjIrSTRQU0RjLzEzS1A3RkwzSDR3akZJL05WTVpIK3pJaXd4QksyU0hINTRhdXBSZnYzdHNIKzBsaW9sZ2ZJaWhxSEIvclZrNWtVZFA3MndYTmlmeHMwek1IZVc3L2FJNE1lRU02OEFwYis0aWM3R1FTUStNQWZKZjc1VGp6azJqaXM1QW1GTWpFUEdpb1hJWFBjT2xPeEVlaXc3U1lMZ3lSV1pnWkR2TWhmeXVEL2ZqY05kQnFKNHhFMm9mMldSbGlDQ2RvT1BYVk45N3dJYzZqZ00rYjF6RUROK0RMcVc3V3dWTVFRbkpEbEMwZmoreDZqNi9ZTndIenBBTXNpUDFvVGZqQ0kvZjZGOTJYMGo0dStlZ3c3WFh3WHJPWDMwMkFqYUVwN0thdGorOVFucW4zNGREWnZmaFFYZEVYdmRaQ1MvOEFBSDk0bDlEY1ZKazBOdUVpbmhyYmZEOGRYWEtMMzBSbDRaVllrQnlNOWhTS3cvbFFaUk5SN0lub2NvV003cGkrZ0pseUQrcmx0Z2pHL2VJUlhCeWFGMi9tdXdMMXNENTVkYjRHbzh3SloySTJYMnZZai8wMnlZT2dXdjZiUVdQMGh5aE1LMlpDMXFuMTBJKzVvMTFGZFJKSXEvVUtIVDNmSzdDUzRTcFpaL0Q4TGE1V0xFWG4wWllpYU1nUFc4SVRERXRmOEs1SmtFK1lKZzU4NDgyTjViaWFibG44SitZQjFiV0h2djE1elJIMGtQL0I1eHQxMmpYdjhRdENrNS9IQVhsNlA2TDgvQTl1RXkrQXJyV0hBVHlTTEdxNW5ub1krVFgxNnlNMVQ3MFIzRmtnaFRUaHBpcnB1STZDdUh3NVRhaVQ1NHVwNjJHY0V5NmFjTHI5MEoxODU5OERSV3dQYmlSN0N0WHc4VTFyUE42clgyb3JRMkpLWEFNbUl3a2grOUY1YStiYmNwNkpTUXd3K2ZoOUprNldvMHZycVllbkF0SzFQUHFpU3hRbGFWTU9FaHY3M2k1bEhMczNxWW9ySmd5czJDdGU4UVdDOGJDRk4yRjBSZE91d25TUXl2dlBmNzdTNjREK3hIMDRhZGNINjlCZTdTUXJqM0ZiSTk1QnNkUldVYjFjRWt3eU42N0dYb01HMFNvc2RmQW1OSzI2dm1VMHFPVURTK3RSSzJUNWJCL3M0bWVLdkwxTkZ2cEVUUnBJbzRUbjQ3UmVEdmZpR0x2S2pZb0RhUVFLR1paVkJpWURxM0w2eVhENFF4aWRJbXZnc3NRL3JCM0s4cnBVLzc3clZzTGFSbTN2SnFPTGZzaFh2WEFiaDlKZkFjcWtiVDZtM3diTjhIcjZlUmFjVDc4N0NPL25hUjJzdkdaYU1hRmozN0VrU2ZOeHB4TjdmOUYvR0ZvbDNKNFlmUHd4R3ljejhOcU5Wd0xOMkFwbjFiNEN1VDkwamRiSkRtWDNCU2Q2RWRKWXRBSTQvOGt3WVV1MFhiT1MvbkVzZEROVmVpWUU3dkRHTzNOUFdRZDNNTUZyclhIVk5neUVxQmtwWUVZM0k4bE1RWTlTNHRYeE1VQTcwdEEwMXBrL3kyWENBWUwzdEJaRHVnbDg5Uzk2RG9MandUZXF2cjRhbHVnSys4QnQ2U0tyakxxK0J0cW9PM3NZR2RYd0Z2WVRYYytSejlTZzE4TG5hOFMzdWlWamRSdFJiMTBDQ0RnZmRLVzhRbndOeXRLNkxGSGhzN0VwYkJmYUhvUHpMUUh2aFJ5QkVLYnlNOW5yVmZ3bFZkaVBvSDM2SllQUkR3WTRDeFBLTFlqSlFXSEQweWdwb0pFMXAwdVJhclJqcFBmalRRclI3UzRGcDRjd29OL21rZUlhS01USkpDZGsyMStLWkVkaVdKSVIwckkxbnlseS9kMUVncTBEN2xXcncweVY5N2p1UXI2bFB5RmdMSXVVWjRiVU8zNU5IRWd5UWkwV1czdjVIMlE0Yzdwc0l5aUZKeHlGQ1lNdHYyV3c1T0JLY0ZPY0xCblY4TTUvNDhOSzNiaHFidDM1SXcxTDFiODltSUpXeGtFYm55ZzRFZGVFaEgranMzY0U1UEc1dk5uNExRcWdaZk4zZjJzYUE1NkJvQzh6MFdoRWhDQUNHQ20zOUZOZGFxenpHYnU4TTBvaXNzNmIwUk5YNDR6RDI2SXVxQzArdXJ0MDliY3JTQVNQV0tLb3AwQjF3N0N1QlkrUTFjbTdmQVkydUU5ekNOMTRwcVNodUtkaWRITDhXK0pqMWtKRXYxcENQOTVOSElwQkZLUHYxalhmc01oVVlZL3lGNSt2UDJmL29sZ0o4NjRuM3hXZFNNQm1NSEdGT1RZT2ljQUdOOElpeERCeUg2bWxHcVNqUEVKTUJ3Z3BOUzdZMHpoeHpmQTZtQnQ2SVdYZ2ZKMFdBalVhaXpDMHJoa1Yrejl0WEJSM2ZRVjFMRGNMcUE1YnltZmVCcG9LMVNROVZsYTZLN1NOdkZSUlVtNzZZR0VZVEdJTzBQeFdxbUdXT0JNUzRhU2x5VVpxdWtVQVdrc1pOVFNZQk9GUDFlTXpzOEdhWk90SEU2cGNLUVFPbG1wVXFrZlNON2hjODhBUDhQY1lGNUFLUCtxaDBBQUFBQVNVVk9SSzVDWUlJPSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzEiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkQmxvYiIsImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJsYXJnZUJsb2JLZXkiLCJtaW5QaW5MZW5ndGgiXSwiYWFndWlkIjoiOWEyNzI1NTg1Y2ZhNDQyNGJlMzc2NTUwOTY3N2I3N2QiLCJvcHRpb25zIjp7InJrIjp0cnVlLCJjbGllbnRQaW4iOnRydWUsInVwIjp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibm9NY0dhUGVybWlzc2lvbnNXaXRoQ2xpZW50UGluIjpmYWxzZSwibGFyZ2VCbG9icyI6dHJ1ZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjpmYWxzZSwiYWx3YXlzVXYiOmZhbHNlfSwibWF4TXNnU2l6ZSI6MTE1MCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0IjozNSwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoyNTYsInRyYW5zcG9ydHMiOlsibmZjIiwidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN31dLCJtYXhTZXJpYWxpemVkTGFyZ2VCbG9iQXJyYXkiOjEwMjQsIm1pblBJTkxlbmd0aCI6NCwibWF4Q3JlZEJsb2JMZW5ndGgiOjMyLCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6MzJ9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDNwbHVzIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMTAtMTciLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJJbmZpbmVvbiBTRUNPUkHihKIgSUQgS2V5IFMgVVNCIENvbnN1bWVyIEVkaXRpb24iLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI1MTAxNzAwMyIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUHJvZmlsZXMiOlsiY29uc3VtZXIiXSwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0xMC0xNyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI2LTAzLTIwIn0seyJhYWlkIjoiMDA1MiMwMDAyIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWlkIjoiMDA1MiMwMDAyIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6ImktU3ByaW50IEFuZHJvaWQgRmluZ2VyUHJpbnQgVUFGIEF1dGhlbnRpY2F0b3IifSwiZGVzY3JpcHRpb24iOiJpLVNwcmludCBBbmRyb2lkIEZpbmdlclByaW50IFVBRiBBdXRoZW50aWNhdG9yIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoidWFmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX3N1cnJvZ2F0ZSJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsic29mdHdhcmUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsic29mdHdhcmUiXSwiYXR0YWNobWVudEhpbnQiOlsiaW50ZXJuYWwiXSwidGNEaXNwbGF5IjpbImFueSJdLCJ0Y0Rpc3BsYXlDb250ZW50VHlwZSI6InRleHQvcGxhaW4iLCJ0Y0Rpc3BsYXlQTkdDaGFyYWN0ZXJpc3RpY3MiOlt7IndpZHRoIjozMjAsImhlaWdodCI6NDgwLCJiaXREZXB0aCI6MTYsImNvbG9yVHlwZSI6MiwiY29tcHJlc3Npb24iOjAsImZpbHRlciI6MCwiaW50ZXJsYWNlIjowfV0sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6W10sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUs0QUFBQTlDQVlBQUFBMC9sSURBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBS1RXbERRMUJRYUc5MGIzTm9iM0FnU1VORElIQnliMlpwYkdVQUFIamFuVk4zV0pQM0ZqN2Y5MlVQVmtMWThMR1hiSUVBSWlPc0NNZ1FXYUlRa2dCaGhCQVNRTVdGaUFwV0ZCVVJuRWhWeElMVkNraWRpT0tnS0xoblFZcUlXb3RWWERqdUg5eW50WDE2NyszdCs5Zjd2T2VjNS96T2VjOFBnQkVTSnBIbW9tb0FPVktGUERyWUg0OVBTTVRKdllBQ0ZVamdCQ0FRNXN2Q1p3WEZBQUR3QTNsNGZuU3dQL3dCcjI4QUFnQncxUzRrRXNmaC80TzZVQ1pYQUNDUkFPQWlFdWNMQVpCU0FNZ3VWTWdVQU1nWUFMQlRzMlFLQUpRQUFHeDVmRUlpQUtvTkFPejBTVDRGQU5pcGs5d1hBTmlpSEtrSUFJMEJBSmtvUnlRQ1FMc0FZRldCVWl3Q3dNSUFvS3hBSWk0RXdLNEJnRm0yTWtjQ2dMMEZBSGFPV0pBUFFHQUFnSmxDTE13QUlEZ0NBRU1lRTgwRElFd0RvRERTditDcFgzQ0Z1RWdCQU1ETGxjMlhTOUl6RkxpVjBCcDM4dkRnNGlIaXdteXhRbUVYS1JCbUNlUWluSmViSXhOSTV3Tk16Z3dBQUJyNTBjSCtPRCtRNStiazRlWm01Mnp2OU1XaS9tdndieUkrSWZIZi9yeU1BZ1FBRUU3UDc5cGY1ZVhXQTNESEFiQjF2MnVwV3dEYVZnQm8zL2xkTTlzSm9Gb0swSHI1aTNrNC9FQWVucUZReUR3ZEhBb0xDKzBsWXFHOU1PT0xQdjh6NFcvZ2kzNzIvRUFlL3R0NjhBQnhta0NacmNDamcvMXhZVzUycmxLTzU4c0VRakZ1OStjai9zZUZmLzJPS2RIaU5MRmNMQldLOFZpSnVGQWlUY2Q1dVZLUlJDSEpsZUlTNlg4eThSK1cvUW1UZHcwQXJJWlB3RTYyQjdYTGJNQis3Z0VDaXc1WTBuWUFRSDd6TFl3YUM1RUFFR2MwTW5uM0FBQ1R2L21QUUNzQkFNMlhwT01BQUx6b0dGeW9sQmRNeGdnQUFFU2dnU3F3UVFjTXdSU3N3QTZjd1IyOHdCY0NZUVpFUUF3a3dEd1FRZ2JrZ0J3S29SaVdRUmxVd0RyWUJMV3dBeHFnRVpyaEVMVEJNVGdONStBU1hJSHJjQmNHWUJpZXdoaThoZ2tFUWNnSUUyRWhPb2dSWW83WUlzNElGNW1PQkNKaFNEU1NnS1FnNllnVVVTTEZ5SEtrQXFsQ2FwRmRTQ1B5TFhJVU9ZMWNRUHFRMjhnZ01vcjhpcnhITVpTQnNsRUQxQUoxUUxtb0h4cUt4cUJ6MFhRMEQxMkFscUpyMFJxMEhqMkF0cUtuMFV2b2RYUUFmWXFPWTREUk1RNW1qTmxoWEl5SFJXQ0pXQm9teHhaajVWZzFWbzgxWXgxWU4zWVZHOENlWWU4SUpBS0xnQlBzQ0Y2RUVNSnNncENRUjFoTVdFT29KZXdqdEJLNkNGY0pnNFF4d2ljaWs2aFB0Q1Y2RXZuRWVHSTZzWkJZUnF3bTdpRWVJWjRsWGljT0UxK1RTQ1FPeVpMa1Rnb2hKWkF5U1F0SmEwamJTQzJrVTZRKzBoQnBuRXdtNjVCdHlkN2tDTEtBckNDWGtiZVFENUJQa3Z2SncrUzNGRHJGaU9KTUNhSWtVcVNVRWtvMVpUL2xCS1dmTWtLWm9LcFJ6YW1lMUFpcWlEcWZXa2x0b0haUUwxT0hxUk0wZFpvbHpac1dROHVrTGFQVjBKcHBaMm4zYUMvcGRMb0ozWU1lUlpmUWw5SnI2QWZwNSttRDlIY01EWVlOZzhkSVlpZ1pheGw3R2FjWXR4a3ZtVXltQmRPWG1jaFVNTmN5RzVsbm1BK1liMVZZS3ZZcWZCV1J5aEtWT3BWV2xYNlY1NnBVVlhOVlA5VjVxZ3RVcTFVUHExNVdmYVpHVmJOUTQ2a0oxQmFyMWFrZFZidXBOcTdPVW5kU2oxRFBVVitqdmwvOWd2cGpEYktHaFVhZ2hraWpWR08zeGhtTklSYkdNbVh4V0VMV2NsWUQ2eXhybUUxaVc3TDU3RXgyQmZzYmRpOTdURk5EYzZwbXJHYVJacDNtY2MwQkRzYXg0UEE1Mlp4S3ppSE9EYzU3TFFNdFB5MngxbXF0WnExK3JUZmFldHErMm1MdGN1MFc3ZXZhNzNWd25VQ2RMSjMxT20wNjkzVUp1amE2VWJxRnV0dDF6K28rMDJQcmVla0o5Y3IxRHVuZDBVZjFiZlNqOVJmcTc5YnYwUjgzTURRSU5wQVpiREU0WS9ETWtHUG9hNWhwdU5Id2hPR29FY3RvdXBIRWFLUFJTYU1udUNidWgyZmpOWGdYUG1hc2J4eGlyRFRlWmR4clBHRmlhVExicE1Ta3hlUytLYzJVYTVwbXV0RzAwM1RNek1nczNLellyTW5zampuVm5HdWVZYjdadk52OGpZV2xSWnpGU29zMmk4ZVcycFo4eXdXV1RaYjNySmhXUGxaNVZ2VlcxNnhKMWx6ckxPdHQxbGRzVUJ0WG13eWJPcHZMdHFpdG02M0VkcHR0M3hUaUZJOHAwaW4xVTI3YU1lejg3QXJzbXV3RzdUbjJZZllsOW0zMnp4M01IQklkMWp0ME8zeHlkSFhNZG14d3ZPdWs0VFREcWNTcHcrbFhaeHRub1hPZDh6VVhwa3VReXhLWGRwY1hVMjJuaXFkdW4zckxsZVVhN3JyU3RkUDFvNXU3bTl5dDJXM1UzY3c5eFgyciswMHVteHZKWGNNOTcwSDA4UGRZNG5ITTQ1Mm5tNmZDODVEbkwxNTJYbGxlKzcwZVQ3T2NKcDdXTUczSTI4UmI0TDNMZTJBNlBqMWwrczdwQXo3R1BnS2ZlcCtIdnFhK0l0ODl2aU4rMW42WmZnZjhudnM3K3N2OWovaS80WG55RnZGT0JXQUJ3UUhsQWIyQkdvR3pBMnNESHdTWkJLVUhOUVdOQmJzR0x3dytGVUlNQ1ExWkgzS1RiOEFYOGh2NVl6UGNaeXlhMFJYS0NKMFZXaHY2TU13bVRCN1dFWTZHendqZkVINXZwdmxNNmN5MkNJamdSMnlJdUI5cEdaa1grWDBVS1NveXFpN3FVYlJUZEhGMDl5eldyT1JaKzJlOWp2R1BxWXk1Tzl0cXRuSjJaNnhxYkZKc1kreWJ1SUM0cXJpQmVJZjRSZkdYRW5RVEpBbnRpZVRFMk1ROWllTnpBdWRzbWpPYzVKcFVsblJqcnVYY29ya1g1dW5PeTU1M1BGazFXWkI4T0lXWUVwZXlQK1dESUVKUUx4aFA1YWR1VFIwVDhvU2JoVTlGdnFLTm9sR3h0N2hLUEpMbW5WYVY5ampkTzMxRCttaUdUMFoxeGpNSlQxSXJlWkVaa3JrajgwMVdSTmJlck0vWmNka3RPWlNjbEp5alVnMXBsclFyMXpDM0tMZFBaaXNya3cza2VlWnR5aHVUaDhyMzVDUDVjL1BiRld5RlROR2p0Rkt1VUE0V1RDK29LM2hiR0Z0NHVFaTlTRnJVTTk5bS91cjVJd3VDRm55OWtMQlF1TEN6MkxoNFdmSGdJcjlGdXhZamkxTVhkeTR4WFZLNlpIaHA4Tko5eTJqTHNwYjlVT0pZVWxYeWFubmM4bzVTZzlLbHBVTXJnbGMwbGFtVXljdHVydlJhdVdNVllaVmtWZTlxbDlWYlZuOHFGNVZmckhDc3FLNzRzRWE0NXVKWFRsL1ZmUFY1YmRyYTNrcTN5dTNyU091azYyNnM5MW0vcjBxOWFrSFYwSWJ3RGEwYjhZM2xHMTl0U3Q1MG9YcHE5WTdOdE0zS3pRTTFZVFh0Vzh5MnJOdnlvVGFqOW5xZGYxM0xWdjJ0cTdlKzJTYmExci9kZDN2ekRvTWRGVHZlNzVUc3ZMVXJlRmRydlVWOTlXN1M3b0xkanhwaUc3cS81bjdkdUVkM1Q4V2VqM3VsZXdmMlJlL3JhblJ2Yk55dnY3K3lDVzFTTm8wZVNEcHc1WnVBYjlxYjdacDN0WEJhS2c3Q1FlWEJKOSttZkh2alVPaWh6c1BjdzgzZm1YKzM5UWpyU0hrcjBqcS9kYXd0bzIyZ1BhRzk3K2lNbzUwZFhoMUh2cmYvZnU4eDQyTjF4eldQVjU2Z25TZzk4Zm5rZ3BQanAyU25ucDFPUHozVW1keDU5MHo4bVd0ZFVWMjlaMFBQbmo4WGRPNU10MS8zeWZQZTU0OWQ4THh3OUNMM1l0c2x0MHV0UGE0OVIzNXcvZUZJcjF0djYyWDN5KzFYUEs1MDlFM3JPOUh2MDMvNmFzRFZjOWY0MXk1ZG4zbTk3OGJzRzdkdUp0MGN1Q1c2OWZoMjl1MFhkd3J1VE54ZGVvOTRyL3krMnYzcUIvb1A2biswL3JGbHdHM2crR0RBWU0vRFdRL3ZEZ21IbnY2VS85T0g0ZEpIekVmVkkwWWpqWStkSHg4YkRScTk4bVRPaytHbnNxY1R6OHArVnY5NTYzT3I1OS85NHZ0THoxajgyUEFMK1l2UHY2NTVxZk55NzZ1cHJ6ckhJOGNmdk01NVBmR20vSzNPMjMzdnVPKzYzOGU5SDVrby9FRCtVUFBSK21QSHA5QlA5ejduZlA3OEwvZUU4L3NsMHA4ekFBQUFCR2RCVFVFQUFMR09mUHRSa3dBQUFDQmpTRkpOQUFCNkpRQUFnSU1BQVBuL0FBQ0E2UUFBZFRBQUFPcGdBQUE2bUFBQUYyK1NYOFZHQUFBYWhrbEVRVlI0MnV5ZGVaaGxWWFgyZjJ1Zk85U3RxaTZxZW02bVptajRtb2JFK0JHUk1TSkRDSk1RQ1lvZ0NrSEZLWUlHSVFvbU9BUWt3U2lScUlnQ1JpTUVHVVFrWUFRUlpBb05DQi9JNU5EZEFxR2JucnU2cXV2ZWU4NWUzeDk3M2E1VHA4NnR1bFZVUXpyUFhjOXpuKzQrd3o1N2VQZGE3MXByNzkyaXFyU2xMVnVidUhZWHRLVU4zTGEwcFEzY3RyU2xEZHkydElIYmxyYTBnZHVXdHJTQjI1WTJjTnZTbGpadzI5S1dObkRiMGhhZ01OWk5FWmtIOUFKSitqS3dFbGd6aWUvdGJ1OXJxaXdIUEovNnh2WkFWK3FaVnlNQ2JBSitQODV6MDREOWdIMkFSY0JNb05QdURRSHJnZDhCandNUEE3OGU3OE5kVWNUbHUrNUJiNkZBc2hXbjFRV0tUdlVkQ2tjZzdBQ1VnZGgrbTBUNUduQmIzcnVLNE9YVmZmK0VweCtmT0hDQm5ZR2ZBc1hNOWNlQlA3RkJiVlUrQ0Z4bVlFcC8vMnJnQTZsclh3ZU9tTUsrWHd3YzBPVGVUT0JzNE4zQS9CYkwyd1RjQzF3Ty9QaC91V0xyVTdneEVYa3JtWUZyaUJmdWJnYmMxNU1xUEFEOHN3RTMvWHNUOFBFSmZHYzc0UE5BS1ZQT2Z3T2Z6bWowVXM3M1hzMnYxS1JPYndidUI4NmZBR2dCS2pheGJnVytCL1RrUGVSUi9oY3NYem9QZU91d0JoMzlteUxMT0xWVXdlU3p3T0hBM3Bucm53WnVORE0vbm56UnRGdFdQZ3lzR0RYbVV5dmxuR3U3R2ZCbWpmRmViQk9xMUVUWkFKd0N6QWJlbHJVK1hTNmlKTEkxZ3pjQ2pzbTUvanp3bFBWUFh3czA3SFVEN2hCd3BtbW5OQWk2Z1M4Qng0N3ovaEZtaXJQeVRlQkhMZGJ6Q1dEMUpKeEpBWjdKdVg1SkU5RCtBcmdPZU14NHZEZSt2Y2pBK1k0YzJuUTQ4RGZBaFNObVJxV0w2WVVDZzk1dnJjQ3RBRE55S09KQndNYi8wYzVaU2g0MVUvK0Z6UFZqZ0JPQkh6UjVyOVBBblpYZjJtQzNLaDhGN3B1aU51OENISlZ6L1IrQmM1dTg4eFJ3UGZCdDRQdkEzSno2L1l1QkhZQkZuVjFqS09xdFJ1Tm1HL0RML3dtZ25RaHdBZjdCQm56L25BRy9FMWliODg0NXdKNDVWT0JEVFo1dkpzVXBiUE1mNWRDSEpjQUZMYng3dDlHYm16S093Z3lRdzRCclBVcEpISHQyZGhPUGppYk1BL1lBZGpReld3U3FGcUg1UGZCc0RuVnFWV1phMlRzQjA2Mk5pUUZ0RGJBTStNMEVva0ZKTG5XZm5Nd0g5cktJVVkrVnM4YjYvVmZwQ2I4bGdGdTN5TUJEcVZCUm8xSi9tK09zN2RGRWcxMXVrWXFKbXZ5cGtqazUxMTRDYWkyK2Y2dFJpVjBCRllHQ0lzRHVJTlJRRHVycFkyRm5GNFBKNXJFL0RuaS9SVGQ2eHloN3RUbkVWd0UvYkxFKyt3Sm5BWWNZM3g1TGxodmwrelp3ZTg3OXM4MkNlcHRVMDNNczdMMHB5aWJBVjVwWTNBaDRKM0FHSWN6WTNhUk9LNEdmRzNXOGMwc0FGK0JKQSttbG1lc2ZNUk82T0hYdG40d2ZwdVdaRmpYYmxwUThnRFkwMWRJVzNvK0JQd01xQ0Y0RXZPSmlkQ01vODBwbFRwbzloM3JndGhYZ0N1RFVGdXMydzN5R1k0RWJET3pyeG5qK0hPQ2lDVmlrdWNBSjlydlNyRWVjdXI4d3g2Sm1KMzEyNHQrVTg5d2lRbGp6VDFxbzB5eWJMQ2NDMzdWSnVIYXFnWXZOc0tQVFlSTHJ1QzhEQjF0SHZNc0dOMnQ2UGdqMFQrS2I5U2tFN25OTkFIT2JUYXE3Z0EzamxKRnIyZ29pbkxQOWZMWXJkVERnRXlUdysxT2JhTDZYckUrMkljVExzMkc3dnpEZ0g5ZkViSjlzTkMwckc0eDJESnBtN0RGcTBwRjU3djJFcE1vWFg2Vmx5NzZ6anpuZGVaWnRtVkdoQXJCRGpvTjhLckRBTlB1YXFRWnVZaHoxWVViR01BOEEzbXVhOTVLYzk3NWtabVl5c3AzeG84bWtxSmRudE95anhpVVg1bWlKbTRBWHpBbDUya0kvUzYyTWw3UGFMMUlRQkMrS1F6aHAxbHdXZFhZemtDUklLUC85T1FOM25wbkUxYWx3M1M3QWFjQW5NbU55TlBEMkhGUGNEZng5NXRwR20zZzNXbDBiWU84d2tKd01mQ3JEN3o4SWZCVVlzSDh2Tmg0ZTIwUTZMUFA4TXFOSmtxSUR6MlEwK3ZVNW9MM1ZGTnNqS2NVMTIrak5lZVozTkdRL293MG5Na2FNV01iYTVTc3k1Z1Q4c0huUzJZRjUyRDZhRGFQc1Q4ZzZqU2UzNTJqclFkTzZrOUVJaDFxSHBlVlk0SllKbEZjMTBDNnpnWG9BdUtjQXorR0VXSUpEZHVsT3U3Tnp1VUkxMElUVGphdW01VStCbjZxQUtLZ2x2d1ZBRlVUT3pabjBQODRKT1I0UDNKeTVkcHFxZm9mR2VEcVhwdzYvYUVCSk8xdDdrQitMTDFsNzB4R1VLeG1aNWN6S0ZUbjNMeEdMSVBtTW1yYTY5V2hJNUdUYmVCendvOG1tZk1lU3I1dEtQekxqcU0zUDRaUWZiQkcwakJGV204ckl5YTJtZ1M1cndhRnBhTVVHdjl2SExNdVFJdjhKY2dub0F6WHZ1V1h0U2o0eGR3YzBERkdmS0xoR2VrbEFrUUh2QkhXQ1duS2lwZ2tPb2NzVlNhcTFLOEtrbFduaHRqampleEtnclRib01pdG9QazAwT0laclZmWEdRa2VKN2huVFVWVldyRjZKOTU2aU9BbzRuRmZFKzRjeTdYSWovSkNHb2dyZzc4eVoySVc4WjYySk84bW9lTDM4RE9GdmFnS3g2SWgxQzBLWXZBV1ZEVVhQNmFCUG1HVnR5RmthSnEyZmF1Q3FPV1dQNUhpZmFia1krSy9YMFJuYjNGM09PYUlvb2w2dlEwZzAzRytXNHdSQ05tMGkwcEdnYjhQTGtjQ25FTDUwOTdyVkhOWFR5ODdsRG1xcXF5Tmxzd0tNSGFpNHExSDVtbnE1VDBXV0theEsxT05GNk4xdUh2SGcwUHFOcTljY29vQ3Z4NmhQeEN6ZkNMUG9WYjhOK2kwUlVWY0tmbG1wcTVPZW1kT0ppa1hpSk1hdmVvWEVlNXlBRTNvOHVxZW9uajEyUnhrSXRaVk8xZUg0bUlLZ1I0R2tGWXozK00vVXhEaUxCcUJtQVZRTER0THFvbks1SUJlbjd1NlB5RzVOZkpKeFY0ZU5qVnpWSlYxZFhlZDBkM2RmbGFVY0lrSWN4dzhQRGc1ZWxQZHVWMWNYenJWTVdaOVgxUTJUcEFxYm5jRmlzVWk1WEthL3Y1LzE2OWRUcjlkZk1ONzNPZUNQb2lqYXQ3ZTNkNjhvaWhZQjI1cVpMRFV2Mm9GS1VhUDRVaFY1eVh1OTdxRmlrYjFuem1FZ1NSNFVrUmdvSkJMWW9GUGQzU2xmc1pkZkFWN29SSmNJOHF5TG91Y3IwN2Y1VmJHdjV6ZmUrdzIxYXBYNjRKREcvUU5vSEk5b3Vqam5vMm1kRkRzcmxDcGxJb21LenJudEpVbm1ldSszQmViMTl2WE5WYS96UmRqUklUdHBjTkMycE95YmRhZ1ZQYVlTSWd2akRYUXNzS2VNR0Y3dEtKY3JlMDhLdUFzV0xCaTN0cVZTNmVwaXNYaVVlY0ZwV1M4aVozcnZhNU9kR0trSmNxYUkvSHpTS2xlRWVyM08wTkFRM250NmUzdnA3dTZtVnF0UnJWWVpHaHJhTkRBdzhDRHc0THg1OHlnV2l6am5wcW5xUE8vOURzQmVxdnJId0VFaU1qK3Rkd0lkOEZRaithejMvcFpuWWRQeW5tbnNXTzU0dnFwY2d1cjVDblFJSUFtcDFRdXpKZENVdlZHb3E2ZWV4Q0R5b2dxTG80N1NEWFNVYnl4T20xYVZlS1MxMU1oQnllSFF3ejI4Vy9IN2tmanRRU3RoUGduVFpzellqSFhWTFJBTkh5MDdaT21WQktVd0lSTStjdHhaTUttb1FxbFVhZ1ZVVkt2VkszS0FleC93ZUI0NEozSHNrd0FVQ29WSmdUYU9ZNGFHaGxJMnpCTkZFWlZLaGM3T1RsU1ZEUnMyc0dIREJwSWt3VG1IcXZhcmFyLzMvbmxWdmN2cTNLT3FKNm5xSlVCdm82ZExYcWtXMkgwSS80WmE0aCs2Y3Zudk9YLzdCU1RDQlQ1T1hwVEVueVhLd2lUeUxheFAxZTB0Z3ZMbm9HZUw2bWtXNFVoM1lKZkcvaHZKWms2cE9SQVlBZlkxRmcxSW1Ob2xveU9NNkZRWHFPaWNTUUUzUGRnVGpPWFJKUGI0cW5ocXZWNm5YQzRqSWkyQlgwUklrb1Nob1NGVUZSSHBzQkRWTkxVQ1ZOVUJ0L2YwOUR6VzNkMk5pQ0FpRGZCdUJub2pSaHJIOFRmak9ONEFYT3RzYmQ5Z0FRcERDdUozVFZRZktneFZxZld2aDQ0T25JdStnZmZYb0g0ZlVmWVYxVGRhK0dzKzBBZFNHZ1BMYndKK2dPcCs2ZGl5S0YrVlJOK2RNOURMZ0NjUmZnTXNFZVFsWUltUDVFV1VWMXlpcDI5QjRHYWQ3MEVWdmdzTWpVK2FjM3NnQXYzWnBJQnJUc3hrZ1R1bGhxa0IxdjcrZnVJNG50QjdsVXFsd2FkRlZmK1cwVXNzWndDUGlRanIxcTFEVmFsVUtrUlJ0RmtETytmdzNsT3YxMUhWbndKcm5kTFhpSlZSRjZRUWxUdWRjT3kwNlVqaXFXM2NpTGdJY1c0STlmZEtWTGhYbkVQQ1BPZ1ZaUjc0WFJUZFUxWDNSM2dMbzFQQ2k0QWpGTFZZcnV3bEllYWJsbFVPOTFGQi9rTWQvVHJDZFpmZ0dOVmpWTFYzQzFLRlphTkNyZWlGNHFMbElUaWl6UVlJdkVkelZ0R3BURElCTVJHQWJQSFFnQWkxV20waWsybFlGV3phUkxsY0J0aWtxcjhDM3BKNTVDamdVMG1TVkd1MUd0NTdCZ1lHTm12Y2hnWjJ6alUwZmk4aHF4VTZNUUdmUk5SalhiSHZOajBzS0pVN2F1aWJFU21vZXRVa0VXQUk3eCtNb29JWFYwQkUxa21JRFQvajBkc1VqNnJmUlQzWG1hWk55NTZwSk1SK09VcmhIOVJGL3g2RmNpMCtyS2dCd2lkeHcrTHMxWnp5ZVZCRlhEVFpJWHFJa1ZuQ0N2Qk9qZVBMeEVXNEtMOWNueVJvRW9OcUNaRkNDdUVGMCtMeDFnemNnU1JKOE42MzdOQ040Q3hKUXJWYWJXamR1M0tBKzMrQXk1SWsrUkNnRFpxUXBTT3FTcTFXSTRxaWM0RU9IVll0Uk9vSDZ5cFA3QmhGRklTT212YzNCeXFRaW1lcjM3MWVqNWVoaW9qRFJXR2MxUFlUYUVqQjNwQUQzTFE2NnN0cDRsSWZKOFRVUU1IN0VJWHdTUkxjK1NoQ0lyZVRpQnlmUyttODRtMnNYVkdIWTdRVGs5c0lLd2pUWFBjY1ZiMUJxN1dYeU9sUEVRRVJwQkQ5b1loOEQ5V0tBVmNJR2N1MzAyU0p3TllDM0JOVmRVOG1sL0t0QXpjbFNkSnZYUFZmZ1U4U05raW01VXpDWnM0dlczdzNteXV2QUc5VTFiUGpPRDR4Y0VvQkFhZEsxZkhEVGQ2L3VDbXBvNG11ODBueWxJUkYxK2xNMUlYcS9SbnF2ZmVxRFpJQklqaEFvcWhMUkk3T0lWMVB3MlpldnpJSFZvZXE2Zzk4YkpxMVlZSkZRZ1pOZFFIZWYxODFOOTdlbFRiVFBrNWFqL2JJaU1qUU1sV3VFZFdQcEI3Wkh1RldRaGJ4aVNiRjdFM2lyMVVaanFPSEpLSmN3aGpyV3JZVzRQNjF5S3VpelBlbE9tRVo4R2xWL1dyT2MyK1ZzREZ3dWFvdVpYZ1hSSitxN2lBaU82ZTFoamV6WEVwMGhTL0lCVFdmVUUxaVNCTFUrNityNmtHWjhrOERka1hrR2drRHVRNklFSmtKN0tQZXYxZEg1dTBCL2x0RWZwYUtIVHlvcW5GbTdNNEFYa0RrdXhMMjhZRklEN0M3cWg2UDZ2dlVqOXJOMEpCdkVkYkVQZ3Bja3NxRXRRamVFZVB5ZDZwNktDUFhnYndSZUpDUXJieUhzQURJQVR1cTZrR292azFITHdDNkN1ZStOZFozdHhxTysycG9Sc1BVTmpKbnFucDVITWZUQ2Z2cDhtUXVvM2M1akxheEluaVJwWVZFMzZWUllVbEpIUE9MWmVweGpLcS96Z2J4akF3bFBZaGhUVHhnM25OSFBsZzBBVDZHU0ZyN1A0dnFOU0R2eTR6akZ3anJuMWVZMnVvQjVveUVvVzRBNlFyZkhPSDhMV0tTaS9YRmpXamJhbFRmcnFvM0JmQksybHE5dzM3alJYTC9UVVErcE9Oc2VTcU14dzFibEx4eUpydStvSE9LZ2R2Vm9CaHhIRzhPcHdHZlM1SmtNV0dYN3dHVEtMZmY0NzZ2em4wTzAzSkZFV1pIUlJMMXFLcXE4Z0Y4ZlFub0o3QzB1SXdSKzh5QTl6bUlQb2x6dDRZTWdpSytNUjc2Y1EyUmtEL1BsTmxEYXNWZXByei9BUGNwOFA4RUhDcWp2eXM1VWFGcE9YUXBnN1VJaVVaZy9objEvbURSK0lzYTRzeUZzVUpNcVRxdUFMbEVYUEhMcmNTanhnU3ViMzJqMzNPbXZSb3ZPTUxTd2NuSUZZUXRNbE8xeTdERzhCSkM0amltV056YzBiZXI2dTJxZWlCaENlRytxcm9iWVkxc0phV1pZc0t5d1ZVaThwVFY3emJFL1haMDJGOHpUcFgrdmZQeDkwVDFCSVhETkVRSXBtZktyd01iWGRDV2p3djgySXZjb3M1dEhLMkFBZGdvNk51ZDk2Y292TWZvUlY5S2ExYUJEUzdRb2djUXVVbEY3bEVCNStNUG9IcXh3b0hHdStzdVRMeTdaSFJjOWpNR1hyVXhmV3kwZG92QlJhaEVhUml1UVAzcFR2MVhSUFZFaFVNMDdCalpodUZsa2xWZ25RczA1WFlWdVZZbGVxbGxUVDlXSUgrOFROVUUxaHBzOXNwSGVKU3ZnMFJSUktsVUlvNWpraVFaRVQyd3YzZXI2a3pUWEkydDZVUEFXaEY1UlVScW0rc3VCVFJ5ZEFGSnVZQjN3ajl1dHdzTEs1MzBKd214Vi9BMW5JOFJWYnhDSXE3VGk1dHRnMWcwYmJRcHhJV1RWeUxWV01UNHN5dUJpeENnRWpra3FUR1VlSnNjaXZNZXIxQjNoUmxHYlRwdHdnOEtyQ3o2ZUpXWU9mY2llSWx3UGdhdjFGMDBUWkVLc0tuZzQzN0h4SUlKa1FnZEZuMFpLbFlvUmlVVXBaNGtKRWxNVWV0RUljVEJrTmRHSFdjenZPcHNBRmhlOFBIYXFORmVpWkNvakV2UmorTWZlV0RxcVVJamRkckNZaHk4OXlNMGVPT2RSbnowdFpJV3dtb2JtY2hPMXRUeXZxR05nMXkrNU5lOFpmcE1EdWlieWF4aW1VMWF6NXJzUVF2MVVCUWhFbUhJZTByT1VWUWx0ajUzSWhTY3cwVVJpU28zcjNpWk1wNkQrNmJURlVVTUp2RklibWxXSlJLaDdCd0MxUHp3TXlYbmNDNmk2dU5HZmZyenZQWU81M0FJUStyeFRaUmFTUndiZmN6dHExZnpjcTNHazRPRHpPL3M0c2paYzltNTBvVVQ0ZmViaGhoS1lpb2k3RkxwcEI5WlhSQlpIZXJsbXpxQWxTZ2lJYXpkbUxUR2JVVXJpc2dJOEdZQm10VzB6YlRnWk1EYm1CQjU1VGVTQnRsNnFlcG1yZHNBY1FQSWpleGNzL28ybmhuV3VCRWVrS1JPa3FuSHpGS1pvMmZONWNqcGZYUTdTSHhDQVVjc0RoVkhKTUtMMVNGdVcvVUt2OXl3Z1owcm5melo5RDcyN095a000cFlseVFzcmNiZ0N0eTNkaVczdnJJY2dKMHFGZDQ1Wnk1djZlM0RKekhWb00wMmE4QlY5UnIzckYzRHk5VXF6d3owYndiZkRoMFY5dXFleG5FeloxQlNHTEs2SzZCeFdBZlZWWWk0WTgxcUJoUFBuMDd2WTV1b1FHemhOUkdoNWoyUkNPdmltQXVYTHVHNXdjRlJmYlJ0UndjRmhKZXJROVExTExBL2NmWnNqcGsxbHhlcVExUzlaMkZYOStiRFVnbytEcWYraUZDS2l2eGs3VHJ1V2JPS2xiVVFLbnhoMCtDV0FXNmFOb3cxNksyOG53VmRIaWdid01tYklHT1ZtMzAyYjczRENGRG1VSnNzdUZ0cDc4S3VMczZmdnhNVkVaNGFHTUM1Q0kvanNmNzEzTGxtVlhvbk1BQjdkSFl4cjF6aXlZRUJWdGFhYnp3K3RHODZwODJkeTV4aW1hcUxXRjJ2YytlYVZkeXhhaVdyNnMzZmUxTlBEek1MUlJaMGRUT3RVS1RpSEFzN3lrd3ZGUGpocXBWODlhVVhBWmpmMGNHaXppNTI2NnhRODhxTDFTcEh6cGpPdENqaTgwdVg4dXRORTlzWE1MTllZazFjeDZ1R0NUUnJEZ1VSZkJLenNLdVR5RG11ZWZsbDdsaTlxaldsbHgyRVZnZUVzTkd0V1d5d2c3Q2U5YlhnQUVYQzJvUFpoQjBLcysxWG1Pb1BaWUhkcWt3dkZwbFhLamU3dlJ0aEc5RitFeTEzdTNLWjgzYWN6eWx6dDJWbWNkUkt2bjBKWHYzaGpIM1VGRHQxZEhEc2pKbmpkN1FJWGRHRVVzSmZJK3dLSDFONkN3VzJMWmNuaE05WEE5d3pqQ05sdHpPWENYdk1mclFsd0pNakIxb2dmNjM5MWxuV2F5STdHZzVpZEpyMXRaSkY1cTBmTWtYbGJVUFk4ckxKa2kzckNKbkMxME51SUd6R2JNZ2ZNenJkUGk0ZG5HcmdScFlKV1pLSlIzN0JQTnVGcjFIbkhHWlU3VVRDZnJBMzI1OGRFeWpqZDYxb2hxMUV6clArMk44VXgxeGEyMWYzV3NndkNJZVJ2SzdBaGJBZFpGTnFWdTF0bmZhaGhnTksyT0g1QUdIZjJXY3pDWVpzTmtVSVc3VC9iOFBLQWg4ajdQcTltNUNlYkFiY1pvUHpUc0xxcjA5WUhmNHpsWERZaDNDNHlUckMrb1JMQ1NsS0NPc1d2bVBXNDlaTWttS2UxZXRvRzR4TFRkT2RSVGh2NGpyQ0Z2Y3ZNWElML3pIQVNZU2RBWThiUFpoSk9QbXlKMlhKN2lla1NVOUl2WHRFU0NMd3VQWER0azNhZTZXRm1wb3Q3SjV2ei95U3NLUDYwTXo5SXdnTFpoNno5bVBXNkt6TWN5YzNFaUNFaGU4ZkkrelV2Wit3MkFiRHdadnNtNWNTenBMNGYvYjNBd25uYjJTemFTZlptRzFSNEVMSXY2c040bUtHajFkeWhITUtWZ0x2SVJ6SitTTGhUSUVHSWJ1TGtjZnVSQmFZL3FzVS8xUENJdW92RUhZVVowbm1vZmJNY1lSQS9ONkVZSGREYnJNeXI3T092dDZBT3RONDRKV0VFOGNmQmI1aDVtd3U0U3lGVyt5ZEsyMkNMc3hNME5XbXFROG1IR1NoMXQ2emJWQldXQjgwNnZ3dGUrWUI0SDAyNFB2WXRWbFdqaG9JVGszUmg2TXRDZkk1d2s2VHhRYXNQR0o0bEpXeDJNcEx5d3dMeGYzVTJ2VVZTMzQwanBBOXhkNzlad1BoWDFyZHo4MEpuZDNQOEdtYis2WGFmajdEaDhXOFlrbU0rWlpZZXRrU1U5OHc0RjVzNVhha01uUHIwOVJtU3dJWDROK3RZMWZhWUdDZHJvdzhodWNOZHUxNCsvY3RqRHdqSzdMR052Ym03MkxQWHpUR3R3OU9nWHVkL1hsRDZ2N05CcUJTeXFsTUNFdm0wcG0vOU9tUkZ4c0ZTc3NUREo4YzAyaEhtanZ1YXRjK2s3cDJyRjFyQVA1ZmJBS2sxMEhzeC9DSk5oOUpnVGh0aFg1Sk9DUWp6V1ByakR4TktDMm5BNnVzck8ra3RQbTVqRDZGNTE0REZhWVJyOG9wNytPbWROTHlFK0RhRkhmVmxNSnB5Rzh5Rk96bmhHTU5OZ2RkN0wzR0JEdmNZdWh6eGdQdVZEbFA1eG5IdkRqVndJTk1hOTJYR2Z6ZldZZi9rUHpOVXBvWk5NeEVOazN3cGJUUzcrejlhc1paZklqaDAyelcyYXplSmgwMXkyaXZQekNnMzJ6M2xMQVo4QTh5OWZwSlRsM3ZTRjE3dEJIbE1rMVRKcVE0bDJmYTNOQTJ0eGlsZVpwd0tzMDNHVDZKSnJIN2pYY0toQk1RNzg3cGs2dk5RZnNZdzJlMXZSZjRRM3YzSmxNU2FwVEltOExabG5BNFIwdjBNNk53bFB6RERMUFBwUmMyUEd0OWRKS0IraFR6bThZOXNYS3FnTHZlZ0xFaVUyRWhmL0dHcGdDVFpFSmJIWm5HYW91WnJCZE5ZNUR6dlUwNUFQTmpkRENtbWE1UDlkRy9wc3B2dEdGZ3ZBaWEvVmxOdGJkWlc4b1dCVGdBK0RzenB6dWtOUGlUUnEwYTM3N0tKa0V6V1dudnpqS1RmNFpwNlhYV3JnYUF2bXZ0Nm1qU0R6UUphM1l5Y3MxeUsvMlJWLzQxREsrUFBnVDQ2MVlBTjFYQWpYTEt1OHVjc2YxU1d2Y05oQVBlR3BwcXJXbU5kTGlraDlHSDNMVVNEMDVhQUZDci9mQ3c4ZDhmMEdUclNFNjlOTVV4RjZjY1J6SUFrM0hxdU55Y21yS1ovQXNJUnlUTm5JQTJ6TFl0dHZvMWpzZTZMWWV6bG96L25wcWp4ZGVZbzl4SlNGbHZZMDdzYnljNFRvV2M5dDlrYlR6SGxOOVBYa3ZnaW5WME9ncitnTTJtbTgxcnJoRU9hcnM1VmJucnpYRzdnSERZM0lmdGVrZXFJNFNSNjBlYkRmaVBUSnMxTk5JcHBzRzZjMERkbTZucjA4YXJseHFkdVlLd0c3akJhMk9qSWhlWjVtdWMxcDBkcUxyeHZFSGptSmVaUmx1VzBsTFRjc2JBbVZVNDBPS2N2elhRLzl5ZXVkRDY3Q2JqbFhQTkVmMG9vM2ZYdnN2QXVkaVV3c2xXNzhUZVBkc2lFeGRaUFk4eForeS9yTzQzRXhZVjNVazRldlVLVTBKcWY3L04rcmFVb2xlTk5yaWNtSEk2TFBta1JRenVNNy9pUWNMS3RIc01BMTluL0pNeXh5YS9FM1RPS2paajlzb0IxVmxXc2Z2TUFjb3VXUDVMQS9rZEZ2WjZUeW9rMVd2OGVjNDRJYm56ek9QK2ZPbzNLeFZ5T3k1akhjN0sxSFZYY3pBZlp2Zy83TmpSQnZRaDYrQXJVbVhPc1crbTkzOHRzQUUvMWNwNnhEaC9KZVB4bjV5cC83Ym1OSldOUTk5dXZPOHlSdTc0UGRBaUk0K1lSdnhrRSsyOUQrSEV4c2VONTU2YWVXNnVUY1lIclcxWE0vTE1yb05zZ2p4Q09IbXpFYjU4cTRVU2YyR1QrbWlHRDZwcnRDSDdQeENkeWNnRTFUeUw0ejVpbkxzaGI3T0pjZEJyRmNkdHkwamdxamxpYlptWW5HdFJuR0tyd0MyMCsyektwR0VtdTlwZDBiSzh3U3pzWDFsY3UvV3pCOW9hZDhxazIvaGJYN3NyV3BiRGpNNmNQbEY4U2h1Z2JkbWF6VnRiMnRJR2JsdmEwZ1p1VzlyU0JtNWIyc0J0UzF0ZVIvbi9Bd0NPNDFMQkNqejA4d0FBQUFCSlJVNUVya0pnZ2c9PSJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDE4LTA4LTAxIiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJGSURPIEwxIENsaWVudC9BdXRoZW50aWNhdG9yIENvbWJvIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVQUYxMDAwMjAxODAyMjEwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMy4yIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjAuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAxOC0wOC0wMSJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMTgtMDgtMDEifSx7ImFhZ3VpZCI6IjA5NjE5ZmJmLWQ3NWUtNGE2Mi1iZTFkLWZlNGQyNDA4NjRhZSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiMDk2MTlmYmYtZDc1ZS00YTYyLWJlMWQtZmU0ZDI0MDg2NGFlIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlZlcmlNYXJrKFRNKSBHdWFyZCAyLjEgRmluZ2VycHJpbnQgU2VjdXJpdHkgS2V5In0sImRlc2NyaXB0aW9uIjoiVmVyaU1hcmsoVE0pIEd1YXJkIDIuMSBGaW5nZXJwcmludCBTZWN1cml0eSBLZXkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9LHsibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3IiwiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJpc0tleVJlc3RyaWN0ZWQiOnRydWUsImlzRnJlc2hVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZWQiOnRydWUsIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjExMiwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQ2ZEQ0NBaU9nQXdJQkFnSUpBUDRmU1JRcFJwM3FNQW9HQ0NxR1NNNDlCQU1DTUlHWk1Rc3dDUVlEVlFRR0V3SlZVekVMTUFrR0ExVUVDQXdDUTBFeEVUQVBCZ05WQkFjTUNGTmhiaUJLYjNObE1SZ3dGZ1lEVlFRS0RBOVRlVzVoY0hScFkzTXNJRWx1WXk0eEREQUtCZ05WQkFzTUExQkRSREVWTUJNR0ExVUVBd3dNVTNsdVlYQjBhV056SUVOQk1Tc3dLUVlKS29aSWh2Y05BUWtCRmh4alpYSjBMV0YxZEdodmNtbDBlVUJ6ZVc1aGNIUnBZM011WTI5dE1DQVhEVEl3TURZd09ESXpOVEF3T1ZvWUR6SXdOVEV3TmpBNE1qTTFNREE1V2pDQm1URUxNQWtHQTFVRUJoTUNWVk14Q3pBSkJnTlZCQWdNQWtOQk1SRXdEd1lEVlFRSERBaFRZVzRnU205elpURVlNQllHQTFVRUNnd1BVM2x1WVhCMGFXTnpMQ0JKYm1NdU1Rd3dDZ1lEVlFRTERBTlFRMFF4RlRBVEJnTlZCQU1NREZONWJtRndkR2xqY3lCRFFURXJNQ2tHQ1NxR1NJYjNEUUVKQVJZY1kyVnlkQzFoZFhSb2IzSnBkSGxBYzNsdVlYQjBhV056TG1OdmJUQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJMUFFtNTBEZ0I5ODByZElJcDZIWU5vK25mUWVVaFBzbTRzNzhOUk9lTE1PaGV1S244WnhQWERIRCtTS3FCSEFuWE5idG9ROGc0Y2grcWlTK3NXdkp1T2pVREJPTUIwR0ExVWREZ1FXQkJSRG5XbzI0QzJQcEVTelZiSlB6MVpGVGViU0p6QWZCZ05WSFNNRUdEQVdnQlJEbldvMjRDMlBwRVN6VmJKUHoxWkZUZWJTSnpBTUJnTlZIUk1FQlRBREFRSC9NQW9HQ0NxR1NNNDlCQU1DQTBjQU1FUUNJRVNrazc2a3RGbkRCRHlTZWJKSHR3M1RjSklYVGZObzVOZzRBajg4Qkk3UkFpQnRFYjVveHVpOFN6c1VaNndjUVFqbjVhQjVuZDJhTkpCaFpLK2lGSEhHeGc9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUE0a0FBQUREQ0FZQUFBQXZCVlRDQUFBQUNYQklXWE1BQUM0akFBQXVJd0Y0cFQ5MkFBQWdBRWxFUVZSNG5PM2RUWEliT2JhRzRlU05tcXQ2QlZLdFFPb1ZtRjZCVlZOT0pLL0FySWpMc2VVeEI1WlhZR2x3T1MxNUJTV3RvS1FWbExTQ3RsYkFHM0IvYWFlWkpNV2ZjNUFBOG4waUZOMG1YUlovTWdFYzRPQmdVUDN2Ly8xYVZkVkpaZTkrUGgxOWRmaDNveHBNWmtkVlZSMTUvODc1ZEhUYmVoQUFBQUFBSXZ0RkFlSmZEci8yZFZWVldRYytDaER2cTZvNmFEMXA2enIzendvQUFBQkFHZjZINzNHNXdXUVdWbGh2SWdTSUQvUHA2THoxS0FBQUFBQjBnQ0J4dGN1cXFvNVhQbXZqdWFxcVlhZnZFZ0FBQUFBYUNCS1hHRXhtNDZxcXp0clBtUG9XSUphd2J4TUFBQUJBT1g3aHUvelpZRElMSzNzZlcwL1lHOCtuby92TzNpZ0ErQlRuS3FKb0dWQUtiWit4TEZESVBRNzBBRUZpZ3daTE42MG43SDJZVDBkWDNieExBUGhKMkJQOTN2QWp5YjVvR1ZBWTZ3S0YzT05BRDVCdUtoRUwxWHlaVDBjWHJVY0JBQUFBSUFFRWlUL0VLRlR6b0ZsN0FBQUFBRWdTUVdMY1FqV241UEVEQUlDSXFLSU9ZR3U5RHhJSGs5bEpwRUkxb1pMcFkrdFJBQUFBQUVoSXI0TkU3VU9Nc2ZuNkxaVk1BUUFBQU9TZzd5dUp0eEVLMVZ4VHlSUUFBQUJBTG5vYkpBNG1zNnNJaFdydTV0TVJoV29BQUFBQVpLT1hRZUpnTWp1UFVLam1LUlNxYVQwS0FBQUFBQW5yWFpDb1FqV2ZXMC9Zb3BJcEFBQUFnQ3oxS2tpTVdLam1uRUkxQUFBQUFITFV0NVhFR0lWcS9waFBSemV0UndFQUFBQWdBNzBKRWlNVnFnbVZUQzliandJQUFBQkFKbm9SSkVZcVZQTlFWZFc0OVNnQUFBQUFaS1Q0SURGaW9ab2hoV29BQUFBQTVLN29JREZTb1JvQ1JBQUFBQURGS0gwbE1VYWhtakdWVEFFQUFBQ1U0cGRTdjhsSWhXbyt6YWVqcTlhakFKQ1B4NnFxN2d4ZkxWa1ZBQUJrcnNnZ01WS2htaS96NlloQ05RQ3lwb2t1SnJzQUFNQjN4YVdiUmlwVUV5cVpucmNlQlFBQUFJRE1GUlVrUml4VWMwcWhHZ0FBQUFBbEttMGw4U1pDb1pvUUlENjJIZ1VBQUFDQUFoUVRKQTRtczh1cXFsNjFuckQxZGo0ZGVhOVVBZ0FBQUVCbmlnZ1NWYWptWGVzSlc5ZFVNZ1VBQUFCUXV1eURSQldxdVd3OVlldHVQaDFScUFZQUFBQkE4YklPRWxXb3huc2Y0bFBZaDloNkZBQUFBQUFLbFB0S1lnZ1FEMXVQMnFHU0tRQUFBSUJleWZZdy9VaUZhczduMDlGOTYxR2dRNFBKN0tpcXFxTU5Yc0U5RXh5QXI4RmtOdHpnRjN5bEw4RTJsQ2tWdHRQVS8xdTczYUdBM2paL1AvUXRaNjFIZjNhKzRYVy9rL2wwZE9IMWI2UGZHRDl0SjhzZ01WS2htai9tMDlGTjY5R2VXbmRqVWZIVlRtTmdVQThPNm83NFpKZTA2c0ZrVnYvZnV6QlFEUTFmL2NOUkxpOXJmQitiZU9RekxZdjJ2Qi9wR3FqYndIQk5IRy83Umh2M1l0akM4S2o3OEZIM0ltM29EaGJ1ejFYMzZxTitxcFFIZnVwalQ5WG1EMTlvNzdlNlhuUjliZlRmS1BoN0tVaDg2Zmw5WlI4a0xnVFJxd0xxZS9YTGpLT002SE0vYXJUYnYrci9iNTExdURCK3FuUVAxVzEya3BOKzZyT0dDK1BIYXRmK1psRDk3LytGZitTdjFqUDdlKzF4MGVzRHVIMmhBZDNYZGQ4SzFUUTYyK1lOdHUyTjlkeG85TzcxUFRFYnMwYmpoaDdxOC9kTW4xNzByTy9vUnJQVHZReHdHaE1naTUzTFBtME1RWGxtMUFZMjcwWHZUSlZGRC9YOXlJQ3hUZmZwc0RHSnR1djM4OXpzbjlUMmRkSkg2Wm83MTgrbUV3OGZQRmZhTk1qMkdCTnViRDRkRGJyOC9kdFFINzc0czIvZjBldzN5RUJZb1RGK3FqLy9yU2Z2OWxDUG4rbzJ1N1ArWGUzSVdPM0lKbVBJOE5yRGFRMlhMNzN1cklKRWZSRDN6Z1BwMEZFUCt4RFlEQ2F6NXF5bDU4MzExTGlSZXIwNnEydTQvdHhQblNjN3R2V2dTc0UzSlYvL2pjRm0vUk1yTUg5cWRDckpCT1dEeVN3TU9OKzNudGlkeXdTaEJ3MHl6aU8wZ2R0NjF1VE5WWjhEUnZWUnB4SHUwenQ5M2xFR2U0MUIzWGlIUG9BZ3NVTWQ5T0dNbnhvaXRnbmJlbERnRlRWZ0hFeG1ZNjI4TjYvRDU4WkVRejJXRzY1WStGbmJudVFXSk40NnorNkdEL2FvOEFGeWZZTjFGYUQwY3ZDakZPbndtYjlwUFptZStqdTZLR1gxYThjWmUyOFBqWHVoeTFuSVhnV0ptaVFZNjM1TWFaQ3h5cFB1eFY2YzA5djRmczQ3NnFPK2FJYmQ1UnBlTWFqYnh0cEJuY0hySTBoY1FtT244NDc3OEw2T243b2V0MjdyMnZzNzBwam1jaUgxKzFwdDE4clY1OGJFYUxOOVhiazRsazJRcUVJMW52c1FuL1VocmZ4d2M3WERVblFzUlE5K0VoanNXTGpPT1ZqVWdPYzh3aDZhZmRXemtGZkxHbXBQZlFrU05WRXpUbXpGY0J1bHQ1ZERCVSt4MDN4WE1mMjgxUTlmR1FRWkJJbVJKRHgycW5yUUhxVDgyVzhxWkNpTXJlTUtmVGEzamI3c1lkdENtMHZhb3llZDV2RFR2NUZGa0tqTy9YUHJDVnR2Uzd2WjlreHBpYW1veGs2ZDdEaVRWY05OdVE1TXJDVTQ0TnhVOUZYY2tvUEVRZ1lhaTdZZUVLUk1NOXN4cXBYdjZrbWY5ODdYdE43amxkRUVCVUdpczR6R1RsV0I0NmNqOWQycFQreHU0NU8rSTVNSjRJV3N5cjFxcUNpejRhUCsyRnBSVEQ1SWpGU281dE44T2hxM0hzMllCbjQ1TkhCTkQ1cDF5VEtOSW9QQnpyNlNINXlxZzdrcTVEdUlzb3BiYXBDWWFSdTRqYXdtYmhacElINFJvVks1bFM5cS83WWE2RG1NWVFnU0hXWGNidXc5bWRHbFFvUERwdnJjOWIyK240V3N5dThCNHJvVENHUmxFY21GaGJpNytYVDB2U3BxMG9mcHF4TzVjYjVadjVRVUlJWUdmakNaUFdyUWwxc2pGMlpaLzlKTmtJMXduUTRtc3hDWS9GMXdnRmpwKy9sYkRVcHlOQ04yWDlCM0VEckxmOEsxcGJZUUd3ajdWekp1QTdmeGZqQ1ozZWQ0YlNnUXVjOG9RS3lVR2ZLNHpmbUFrY1l3TUpENTJLbFNwa1FZUDkzazFDWm8vQlNDdzM4S0RoQXJYVk4vNmIzdVJCTk9kWnY1WldFRjhWeVRPNnQrL2pPWXpPYTZQbjVxdzdRSy9VRi9mS1d4MURkSkI0bHFYTDBybVJaeDFJVnV0RXRkSExtblZiM1Q0R2ZabVZkSjBjMzBXSGpqdHVpemd1SWs2TnEvVmNwRWlZT3hzelhuYkVIQ1RLcXVnejhMU2kxOXliRUNsK1RieXBvR1NibjJVOXNPOUx6SE1OaFRZV09ucWpHWmNkcDZKakY2amZmR21TeXBlNy9IeEcrOWdQSzhSK3p5Um0zWVQvKzlzaE1lOU1lTCt2VWxHeVRxcHZXdVpMcDE2a2lLR3Vrc09jM0t2aVFNZm02M21iV05xVEVnTFRVd2VjbFpDb0dpcnYyU1ZnOVg0YXlzTlFwY1JkN0dnZHJLcEFORkRjWnZDaGtRdm4rcC9WTWcyY2ZyTVJ1Ti9xT2tzVk9sTnVIUGxDWnpteHB0UVo4bTlKck8xR1p2SENqcVdxM2JrL0VMc1V0SUdSM1VQMVZWL2F1cXF0OVZTS2UyTEdPdlhrRThVQ1haTklORVJiamVOMjJyaWsrT05CTnptM0hGdm5VT2xzMTRkSzNuQTlLbVRnUEZ4dVJJOFowTUIvRXZ4MlROZDBrSGlvMXFmQ1VWODFyWi91bDc2TlBxU0hZMHJpaTkvemhMTFNWZEUvK1BoYlVGdXpqZU1sQ3N4OEhQMnhZcENnR2x6dGc4MVFKWmNMQWs3ZlMyc1pyNDdmY2xGeVEyaW45NGVsdkNHVE5xNVA3c3dlRG9jd3FCWW1QMnErOEQwcWF6THZhUVJpcG9sWXE3UEY1bVhJMVVwYjVQMXRUcVFIRmQ4WUxvbHBSckw4bXFRREdyZmZWOW96N3JjMC82ajNEZkpiRjlwNUhXeS9qcHY0NjNhQ3ZxZ082bTljeUd0UHI0MHVKWTNaNTk2MWVUQ2hJYjUzWjRYa0RYSlpRS2puUXNTRW82RFJRYlFVbmZaNytXZVJmenUrbGhNUWhTVFJjb2xhOFBFMlRiT3RobkVHR3Q4QUN4ZHRZczlLRFplU1l1RXFXZ3ZyVDAwcGNjZHBscDBLZ2IwTGZQZlJObkcrNXhydHZRZlJlNFhscTUvRDdlQ0cxWmFpdUpWdWNJcmZLd3oza2lxZWhoZ0ZqNzNNVm1iSFg2cFE5MDluVVpjUVdqYjhVZ1NEVnQwQ0NQVkw3VmpoT3FFTzNkcDZmaVkyTUFudTJ4SktWVDI5R25Jbk5ObmFTazk2aHV3RDdlcjZ1L3NaQ1N1dk40UUxGRDNSNC9MOHVvWEh6c2w5YS8waEZGMHA2ck5FOGxWQWpzY1lCWUMxV2hockgyay9KNWIreEFBMExYZTZ5bnhTQllTZXpQcXBTVnNMcC9zMndRRUlzQzFUNWxYdHl3aXBpdW5nZUl0VHBRakRLRzZ0bTJrSDJGc2UzSmlvSTB6Y0IrMmZPTGpwYXNUcDQyQThRTngyb25TUVNKV2gzeW5CbXVEN0hNdXBLcE9xQXVBNWJuSlFQV2s4Z053SUU2NDFVM2t4bGRsNmtIaUE5TEdvM1kzMGt0bks5ejdwWE9yWlhLTHM4MFhYYjlWMHJmY0F0Y1N0Zy9iU1QxQUhIWjllRjZiYnpnNm9YRGxkMm83WXlaV3ZhazYrTlIzMEhkSnA3b094aEdhQmNQbDN6L1NFQkNBV0xkWDNjNWtSQmxES1grT3ZVQU1hWHgwNkhHTnk5bElteFM2T1p3VFV4MXQwMDgxSG1RcUprRzd6MkM1N2xYTXRYbkZIT3Z5Wk4rWC9qYzdsLzYvUFQ2VHRRWm4wYm9qSy9xRXIyT1Vxa1UrS0R2NFZHTjd0ZE5ydWZHZDNLcTd5Vkd3M2VwRlF5UHp1Y2lZdVA5c0hEOWI1VGlvYy84U0ovN2ljSG4vdEI2cEw5U0NCRHJRTEFPU0I1MWZheTkzclVLMnJ3WFk3eVh3ekNiclBPdm9tblVGdkQycEtJUE4ydnV6NThtV0JTOG5qb0dES3lZSkVZcktyRUR4SHI4OUsyZFdOVmZSeDQzTlIzcXRYbU9jWTRTdVIrZTZuNTh4L0ZUek8vbTI5RTZTOXF6YmVPWHhRbkxadUQ3U3RmbUppdUo5NTBHaVpFSzFYeFE2ZGRzUmZxY0tsMVk0ZmRjTHJsSTE5Sk5kMThQRGlKMHhtL0M3OGo5dTEyaDJjSGM3aHB3TmI4VFhVT25DclE4OS9NZGJEZ2J0aFhOU25wMzlKc01PdGRxZk9iZnIwdTk5dUdPd1RyN0VidjNwWEV2N2pUWnFIdjR0ZzVhTkFBWlI3aW14eUh0TTNJV3phVnpYL1dzYzhLMkRrVFZYOXdvY09naWVFQkUyaTZ5YWtYRjJ0YmpweFhqcG5Ha2xjWmp0UTFkWnVkNGVGYi9lMk0xZnFwK1hFdm5FYjZiaThXRDhzTjdHRXhtOVI4M3lRNEpFNWMvQllFYWg5eG9nbkpsMXRmaW50V3VWeEs5TjdWZng1NUZkWExoL0RtRndmSEZzZ3RtVnd1ZHNkZmVsQkQ4SE9XZVJpeDFCM1Bsc2VxdHoraEtuOW5ZZVZYT1kyRHFlUitiWC85TkdqQmM3VGlCUXZwYU4rNzBmYm1zaXVzZVAxZjdlT1U0OERqUWdDTktJUnR0aWZBTXZLNDNPRWo2UmJvbno1V0dlTlhUQTcyTEZ1azR0VXA5OTZXQ3czMnZ5NXZHM3RZWSsrL0QzdVhiQWliYjY4RHd5bXQ3aHNZSFZ3b1dQU2ZDenBRQnNqalI4S0E0WUxoTHBrYjQ5elQyK0VjUG5hNzRkNGFOLythMnN5QXhRcUdhaDQ3M0w1bFFZK0cxdCtOWkRadmJBRndYK3FuZWgzVm5mS0NHTk9mdjJUVkFXV1krSFYzcXZNY2JwOG1IZ3pVTjBOWWFxNkFlUHVuemp6YlIwQmdJalBXK3htdStCL1lqeG5XdDZ5SEtDcTUrejFEWHdzZldYN0F4am5odW4rZGt6bHZyZGpJTWdocGJYbElzc3ROTUc3dGQrTitOYVJWaDA4cnVtNnhVWEdlUTVSQWorOHFsLzFDZ005U2czdnQ5NUR6WlhtZi9YTVY2L2FFTmFveWZ2SUw0OFpKeGJiMG5mK2V4a0FMRk90aGMxZDdWN2NTMzg1azdDUklqRmFvWkZyTEM1QlU4M0dtdlpxekJrRmRuL0U2clZybWw1VVVQRHB2VVdIZ2U3WEZoZU8xNjdRY3dIM1J1WTJGMWQ2aE9ZZkhlSU4wMGpxakI0U0pOM0h4MUtwUjFHQ00xMzdHeVo5MmZ1NnlxNno0OFRhUzRpVW1xM0JKSHhtTXV0eFViQzZxczY1MTlkZTc5R1lSN3RsR1B3dXY5MUpYSm94OHZ0b2RudGRlZEhQV2orM0xvMkdhY0x3a1M2L005RDFhbGltNW9aWnVpTnJ5K3pyNzkrOUhQU1l4VXFLYUlBRkdyclI1cE1KOUN2bkxzQVZINFR1YlQwYWtHWkpaeVN5a09zNDhuWFFZb1ZhT2hjeXFPY21oNEhwTkg1OVZwZ0xnb0REWjBiL3pXdUQrZU01ejh5RTBZN0wwTzUrZDIvVm5yZW56YmVzSkdqUE9CdmRyaDB4aUY1M1NHc25YZnRLa250VW0vNmxyMEt2NWxJdkVBMFRQN3F0SUUrMG1zejZET05uQytOdDkwY1FiMWpzSWU4YU91QXNRbXh6YmpRR210MzZrTnZOT2ZMeGJPVHJSU3QrSDFaRlhjSURGU0FaYTN1VmN5clg1OFZoNXBsRys3M3Fqc2NHT2RSVHpJZlIvUEdwRHV2YWZHU2lOUWZIYjQ1NjBHcHRabkwzNUtLVUJzQ2dNQzNSK3ZJNllJOXRWMXpNSGVKblJkZm5ENHA5ODREU3ErY1Z4RmZCdnorOUc5Rjd1aWNHaVBqbEp0a3pMazJXNWVhNEk5YXYrdENYYnZTWXhMenpiQ1FCaWovQjRtVXhPYlFCazd0Um5MZ3ZZNmlEdTB1TTZiQi9ocnkwUGRobjlQb1k2OWt1aGRxQ2Jad2Q4T1BEYkdKck42b2didlMrdUozZVd3bWpoTWNRWldqWUhIU3NPeVJtNHJDdjR0NzRQbkhLNFZyU3lXVUhRclZWKzBZcFBjYW8yKzk3dldFL3V6bm14cDhtZy9yanZxcjA2ZEpzMlc2WHpTdGlRYTZIcU5NYTgxYnVtTWM2QjRtSGg5aC9NVUMrdzRqcDlhMjdJMGZ2eWtQNTdwZXErZkM0SGRRRDhyMjNwTmN0Ui9yNjYyZmQ3WUUzL1hYS1dORmlSR0tGVHpwWlRHMXFuY2YxTHBkWEt1TkJzTHA0blBnbFVwcjNDcjhiVWVtQjRhclBCYW4rTVUremdBcENuMWJCT1B2c3dsblV6dHJuVi85ZFRWZ0ZYcGZURW1hUDVnOWRDT3JrT3Y3NjN6QUxHbTErRXhpVlNwTW5tcTQ2aVUwNi92UFRKQWxxVUFLODZwVnk0L0tyYmE1M2VjTi9iQ1B5MzJFMUdDeEFpRmFoNGk3Ym1JeGJwejdHcEdkcTI2WU1DNnY3T0ZnOEt1Z1M1NGRMQXJaN1EyWkIwa2xuaXVKZ3FqUVlmMWlvSFhTcUpIOEJtMTR2QWl6YVI3RGNTcnhkbDZtQmc3YldXNlN5VkFiRGcxbkdCdk9pamhWSUNPWERwa0lLd2EvelJyU1lRRCtHKzJuWkFQa3dFcThGUUhpTS9hLy8xVHUrc2VKRVlvVlBPc1plZ2lWZ2MwaTJQWklEMGsyTUI5cDhIUXA5WVR1eUZJM0lOU0Q2d0hScDRwYmxzclliOHllc002aURoMFdpV3dEaEtmRXBuVTlGeE5KSlhja0dNTmg5YktTZ3FNSjlnWHBieWFtS3hHdFhKTFM4ZFBqVm9TOVhndFpHbmVoNkR2cFdBeFBLL1Z4OGRHZ2FjSDdjOXZqWTljajhDSVZLZ21TdVd6aUt6TC9lY1FPRjNvZGU3N3ZvL0RwQVNCd0Y2c0QvWmVOUk8ycWFXTjVJNWlGNlFBZGhiYXNjYVpWbFpPSE03ZXRKNElTaUtBMHJGTmR3NEZlUjVTcmc2YUthOVZ4TmJLU2lyVVBueHd5TktyczdKWTZkN2VwWEZsM1pWdFQrTVlqb3ZHOWY5T3g4STlhVXRGY3l4OHBQWi9zVDlaZTlhbjkwcWlkNkdhcUpYUElyR2NEZnVRUThCa1BBT1QwMWsvS2JKT3gvUzgvN2ZGN0NoeUUyVm1lbGVxam1jNU9FOWxGYkhtOFZwSWViZm5zWXFZL1BoSlJhNDgwazVKT2QyQjlqT2JUa2EvdERLb2ErQkV3VjZkN25xbzFjWDNqWit6aGZGWTJNN3cyMHZWOWoyRHhHVUhRMXRLY3AvZFBwU2FheldvZnM1c0pzanF0UklrN2tHTmhXWFYyY3J3dk1SOWVadzVDbml5bmdSZE8rRFlRZEY3aGpYR3NONW54Q3FpSVJYZXNGNUZmTXFvdXJSSHR0amhzcUlwMkloMUcvWmltNjJqczBLdzk2dU96L3FnY2R6ZHdrOTQvUGVxcXY2MTZkbkFudW1tbmdGaTB2dnM5bUQ1bnJLcTRoZ3VWcVBVbnBCeWVzUWg1SHU1Tjc1L2sxbkJDeDFmaW1XMGdXV1VVdlpzT0FpMkRoS3RVMDFUblBpOWNhamVDanNlWThGc3hwZU9hZEduckhydjVOWTRCWGk0emNTU3Npdk5KcUppbjVOb3BkUVpEc3YzbFdNK3VWV0RsRlN4bEF4WnozU25zcEpZc2RLTURGbW12RmtIaVpiLzNsT2k2WDJzL0NWS3FYald3ZEZkaHR1WVBGWTl6eWhnczczU3RzRGxHaVFXVnhsTWpaMVZPdHgxcHRWZUNSTFRZRDFRMjZlanNWNFJQdE0rS2lBWGxvTU82NVJyeXozSHFRNnVDQkxUNVhMOFN1dVJ4RGxWSnErWVZOMlo1VDdSVGlmWmN3MFN3MEN2dEkyMWxqZGpscDJhVWtRdDluK2t0SEtWbmNRbUdEelNobStZSVVWR2treWQzL1pjcmcwa1dTUkUvWkxsb0krMng0NTFXbWlPcTRnMWorQ1dJSEUzbG0xMnArMUZya0ZpOExHd0ZRSEw5NUp6SHJuRlFDR2xpcHE1c3B5VjNPZmE5aGc0aHYxZHR3a1YxQUhXU1hWL2RTK0NSTEg4RG1oM0RHaVN3cnF2ei9iWUJ3VzMxcFZPeWJyWlRURTFNVHlEUktzRDB0Y3BhVVhBNm1aOHlEVFZ0R1l5aTBkS1lURzhHdHRqQllyTWxLSlhFbTRiVXc0U1NUbE5qM1hiL1ZSQVVUUHJJUGVBc2RST0NCSTNjQk1oVUR3b29mSFdqSmhWOVRxcWV2NFhzN1VGVUNFTDZ4TDB0WERQL1RtWXpHN3BDSkd3VkNmOVRPK1p6Q2MzRVY4Zkt1dHV5eVBJcFcvc01kZDAwM0J1aC9YQmtrdUVJdzl5djdrdEE1cmtEODkvZ1ZYUWI1MEtoZTU0eis2RzZuaC9FU3dpUmFrZjZOMFRscE92dERFMkNCSVhlQnptenZYYXVlSUwxNXc2cmdUVXpuU2dhcTVZOWJMSFoxcU9XQ2xBZGJBWXp1d2NPeFRtQUxDYzkyVHl2c2pRU1lqMmsxc2VvUDlRME5uSzFzRXVZNmx1V1Y3blcvTThUUDhiSFpJZUFyZy9XMC9hK2p5WXpPNHpuWFcxdkFuUE0xOE5zZHBqU2dXNVFvUjlJb1BKN01taGZQOHE0ZmQ4VkhHc08zVzZ0d1VOSW9EVWtHcUtiVmdITGlYdE9iVitMMkZmNGhIOVh6KzVCNG5WajBGZTJKLzRydldrclZ0ZHpMbDFPSllCeldIRXdYVEtxSEJhbGhDb3ZlL2dIYjJxRDJzZVRHWVBlaDAzZEppQUtTYjFzQTNySURIM2dqWGZoWVdTd1dUMmJMd0NkY0pxZWo5Rk93SWowdjdFWEF2WnZHbzlBcURwTWtMYStrdU90Y0w0ajFKU0x6bEdBekNSK3FRZTkzbGFUTCtQak05R1hNWDYvWEQ5OTFUc2N4Smo3RThzb1pBTkRMQ25yQnpLRHZBNExIaFhoOHFNK0hzd21YME5iUTdIYWFCbitwUWlhcm5TU1dydC9peURsdFQzdys3Q2V0c1ZZNm1laWhva0trVXJSb0daYkFyWnNCTGhpb2F0SVBQcDZOTDRrSDhySVlQaFRNZHBFRENpTDB3SG9vbFA2bGtHaVZTcjNaOWxLbVdKMzRmMVNpSmpxWjZLdlpKWTZiRFNHQWZ0Zjg0a0FHTXZCckM1OHdUU1R0ZHBCb3p6d1dSMmszbmxaU0NXbEFlaVRPWW13cUV3WDRsNzdhemZFOWQvVDBVUEV1VWkwaEovS0dSREVBWVVJbUkyZ3BVM21yQ3FWeGpwYkZFSzY0Rm95bFc1TGU5YkNvQ2twYlQ5aUpWRFliVk9qMkZBZHpvSkVyVy9LTWFLUUs2RmJBQ3NvR3lFdDh1ZlRWYTl3dmczaC9hakJBNEQwU1FuVUJ6TzVDTkkzQStwajVzcGNhOGxJdXRxSmJIU2VZYmoxaFAyVWk5a3cyQVIyTko4T3JyS01GQ3MxWWYyRXl3aWQ1WUQwVlR2QmV2WHhaN0UvWmdHaVFWV05xMlpGa2lpcitxbnpvTEU2c2RBNzdyMWhMMXNDdGtBMkV6bWdXSzFFQ3d5TzQ0Y1dhNktIU1JhOE1seWNQeVU0VG5PeUJQWEdmYldhWkFvTWM1UHJESXFaQU5nUXdvVWYwKzhtTTFMWHVuc3haU08rQUEyWWIwcWxsU1FxSm9HYjFwUDdJNVZSTVRDdFlhOWRSNGtSdHlmV0ZISUJpaVA5aWdPQzlpRDhYNHdtZDJ6cW9pTVdLZnFuU2JXUjF0bklGRWpJUzNzMndQV1NHRWxNZWIreExENS9LYjFLSUNzaFRaa1BoMkZUSUVQbWIrVjR6QURUTllEY3VDd24rc2dzZXJGMXVNU2dzUzBrSklKckpGRWtGakYzWi80YWpDWlhiWWU3UTZkQm1Ca1BoMkZsTTEvSjNyby9xWU9WQVdWZmRUSXdSZmoxemhPWVRWUjk5OWg2NG5kUFdsQ0hBQ3lrRXlRS0xIMko3NWpBQWFVU2F1S1ErMVZmTXI0VFg2bW5VSUdyTE56RGlObEZxMmtJTlY2anpCWlRBQ3lrbFNRR0hsLzRpVXBYVUM1d2w3RitYUjBwQXFvdWE0c0VpZ2lkUjdCejdqanZia1h4cXVJUWNwSGNmWFZxNzUvQU1BNnY2eDVyaE5oRldBd21ZVlp4TS9Pdi8vYi9zUVFLSFpja3RyNmQ5K1J3dm9kaHhhalRtVy8wcVRRV0JVVUxRL0g5aFltdE81SlZVT0tRdjg1bU15K0dGY0JyZXNIUkovSTFYbHc3MXBQN0lkVVU4UkdBVFRzTGJrZ3NkS2dUZzMxV2V0Slc0ZnFpRG83SkZSQmNldnhQZHhxWHhhQWhYc3RaQ29vbGV4VVA1WURXeStwVEdnQnExdzUzRXZIZzhuc2FqNGRSVnRKVjl2Z3NUS2FVaDBFOUFOQkl2YVcycDdFcGxqN0UxTW9aSlB6R1c5QVZrS2dGU2FpNXROUkNCTC9wWFJVNitJYjFnNFphQ0pWT29iR1kvL3ZXYXgwYXdXSXR3NVpCcytrbXBveW5TalRnZ1JleGtwNER5VWJKRWJlbjloMUlSdHVQcUFEbVFXTVp3eG9rREN2REJiM2ZibU5BUEc0OWVUK0xza0FNTVY0YVRPbSt5MjVodnNwNVpYRW1PY25WaDBYc3JIY081ZlNRY1JBTmpJSkdGbE5SSkswOTllcm1uQUlGRjFXNDlUdmV3V0l6OXl6eVN0dTRpMkZJMlJRaHFTRHhDcnUrWW4xdnA4dWJpN0xJSkdLcmNDZUVnNFl3ejZ0MDlhalFCbzg5OE9IbGZSN3k4bGNGY256Q2hBclZoSHR6YWNqNjhKOEpZNlpyTjlUenVjT1l3L0pCNGtTYTMvaVlVZG5HVmsyZW14V0JneXRDQmhqdEVlcmRIcUdITENLSm5VOUI1UWhtUHM3ckNydWMwUkdTTnNPQVdkVlZSOGRLeDAvVVVRdUN3U0p3QXBaQkltUjl5ZDJVY2pHTXNmK2tGUUR3RWNqWUF5ZDhHOVZWWDNxb1BEVXE0N1BrQVBXaWRGWGg4cm4vd3dtczVEOWM3cEpueGZ1bWJCeU9Kak1RdWJPWDQ2cmh6WE9OL1ZqT1JGeFdHQjdhaDBrY3F4YVR5VjVCTVl5RWM5UHJGVEk1bDZ6b3U1MHp0U0RZYWMxN0doRkZPaU4rWFQwcUZXOXNRcHJlQnpBdmNvcGU1MlFvbkJmRENhekM2M1NlWHRUSDcyaFB2UnhZZEwxVncyWVR5S2ZqZnJKSVMwU1A5d2JGMllaRmxhQjFucWZKV2RPOTFRdTZhYmZSTnlmV0hWUXlNWnlOWkVLaUVCRVdsMDhVaXBxakpWRlZpbVFyUGwwZE5uQkh0NWpCWXp2R3ovdkZFekVEQkFmNXRNUktlRytySU9XWXZaNWExWFVlcktTSUxHbnNnb1NKZGIreE5pRmJDeFgvaWhzQVhSQUUxbEhTa1AxZEV4YU9SSjMzdkhlM1M0OE0wa2JoZlVxYlVuZm1mbDdZVlc4djdJTEVodjdFMk9JV2NqRzhpWXNNY2NleUlMMkxZYkpyTitkVnhVcFRvQmtxYThlZHJCbnR5dmZBa1NxbWZyVDhXaVdEam8rSzl1UzlTSkIzeVo2MEpEalNtTGRRUHpSZXNMSEsrMnY4SDVQWDQxdlJ0SmRnQTdOcDZNYjUwRXlRU0tTMXFOQXNRNFFPZWc5SHVzcXV0bG5ZQ203NUUzcmlmMndpdGhqV1FhSlZmdzlEKzhqblUxbXVYR2FQVXRBeHpSbzlMb1hTVGRGOG5RUERBdGVrU0JBN0laMWx0ZWJBakt3UE1hcEJJazlsbTJRS0dIdzlkUjYxTWRWaEVJMmxvMWVTZWtUUUxhMG91Z3hvY1ZLSXJKUWNLQklnTmdkajYxQXVXZGdlYngrZ3NRZXl6cElWQ3BMckJTQkF3V0ticlAzS3FsdjJZbHlrQytRQm8vT201VkU1T2Fpb05UVDBGY2ZFU0IyUStNbDYwV0M4MXdMZ2cwbXM2SEQyWjkzN0xIdHQ5eFhFbVB2VHp5T2NKYU81ZGxuaDZ3bUF0MXptQUFDc3FCRDdFTy8rWitxcXY2TWZCeUZsM0FPNGdrRDZNNVpyeVllWkx5YTZESFc0N3p0bnNzK1NLemk3MDk4NDF6STVzWjRwdldTVXZsQUV1aHcwUnVoM3hsTVpxRnYvcWVxcXJOQzNuZFl1WHJOT1lqSnNKeFVyNDF6MjV1bzErdHhqOUZuOVZ3UlFhTEUzSi9vVnNoR001T21leE5KT3dXU3dLb0Rla0g3OSs5MW1IMEp3c1R0aC9sMGRNU1pjZCsvMzg0NVpXZ2NPQVdmbmp4ZTc1MCtYL1JZTVVGaTVQMkpsWE1oRyt1ZzdwM3kxUUYwaDcxTEtKNzZ4VnVkTTV5N2I4R2g5aDdtUE5scTNmYWt0TkxtRVNDOXlXWE1wTmRwZmV4RkZXRnJGVEpRMGtwaTdQMkpib1ZzTkh0ejNYcGlQNjVGZHdDOHlIclEwZnNWRGFTbEVTRG12dS93U1dPSmI4Rmg3bnNQSFY1L01wV1Y1OVBSbFZNeHBGekdUQjVCOGpPcHBxaEtDeEtyK1BzVFBRdlpXUCs3aDl6MFFLZHlQNE1MV0VuN29uSU9FRU5nK0ttcXFuOHJyZlN5c01JMGx0dHhVanQ0M2lOUU9rdzk3VlQxTWF3cm1nWlhGR1ZDVldLUUtESDNKN29Vc3RHK0IrdGc5NVdxekFHSXozcGd4VW9pVW5KakhDQ0d2V1p2cTZyNlhjSGJYZXR2N1AvdlgydkZzQTRNeHdVZmFVM2dkYmdBQUEvNFNVUkJWR0c1dit3NHNlSXVsMDZyaVdlcFZvalhxdjM3MWhNMmN0dVRDU2UvbFBqQmhoa1FGWmI1dS9Xa2oxREk1bDZIWmxzYU8rU2FoMFl2ZkVZY2pRRkVvb0dHOVFvTGV4eVJCT01WalREQmU3NVFJT1o3MzZvVXdEcmRjVmtLOTVGK3ZpNjVSOEsvK2JXblp4dUc5LzZxOWVqdXpsTXBpcWN4MzZWVDBQUjVNSms5cGxTd1NQZUFWMmJZTlFWclVDc3lTS3kwUDNFd21ZVVp3byt0SjMyRS9QV2haZWNUYnRUQlpIYnRVTnFZUUJHSVJCMjY5V0RxaVhRZ3BFRFh0OVdSRUNGQVhIditvSjZyQit5c3BtL3UxamlJU2laSWxFdGRoeDdwempmVzQ3czkzVGdXaHFJYVByNHJOZDMwbThqN0U3MEsyWXdkMHloSVBRWDhYVGgwNkF5T2tRckxnWG4yUldJU1poM2dIS2FVaXFucnhpdkFDZGYzYlFwSGYyamNacmtpM01RcUluNVNkSkFvTWZjbm1oZXljVzc0UXFCNG45dkJzYlZVem1wQ1hHRmdrc3MxcTBHVXgxbHhGS0ZDS3F4V0VaOVZxUklPTkphdzN0ZDVtVklGVUMwTVdKK2JXT3M4VUZTQTZIRm9mcVhGQ0t0N0dZVW9Qa2pzNFB4RTgwSTJhdmlzRy9kYUNHenZ0WWN6Q3lIdFl6Q1poWldVdndrVSswVURrczlWVmYwVHJvRlVpd3BVUHdMRXo2MG45dmZzc1A4WjJKcjZEYXRWUlBiWStyTnVOdzRTUEUvUHMwK29BOFdvL1U3bzk1d0R4SXBWZkN6VGg1WEUyT2NuVmlwa3MyeEQvVDdPbmRKT0t6VjhmdzRtczV1VVYyaTBnaFJTSWY1cXBGc3c4OVV2emNtTVYzVlJnVEF4azlLMU81ak14azRCWWtYbE9TUWtpd1BIOFoxSFFQZEc3VjBTTk43NzRQaGFEdFR2UkZsRmJSd3Q0eGtnUG1neEF2aEpMNExFS3Y3K3hFb2JuYzBHcmNvVDk1NjllcU5WeFl0VVVrakNaNmpYODFXRDdzVzlYZG1zZ01MRXN1LzdVQVVaL3RGRVIyZXJpN3BlYjUwTFpwR1NoMVNReVpFUnJSUjVqSU0rSnJZLzhjSXg3YlQyVHVNbHQ0a1NmYWIzVG1jaDFwNGpqQzJScWQ0RWlSSnpmK0tCQWtXellFc3BadGV0SjJ3ZGFNRDlxSm15NktzelNxMDQxMkQ3SDcyZVZTbE5Cem1seW1KM3VwZGVPaExtaldaNVEwbjBxMWpYaHE3WkMzWG9Ya1VGS2dvTElER1cvWVBuZllNZnZGYU1QcXZOVFdXUDRxbGo5bFV0VEZEK1paMkYxZGhTODNuTjJNZktSVStQaE1FR2VoVWtkckEvOGRpNlFkYXhGZDR6WkpVYXBuZk52VitlalgvWVd4aFNWdFF3L2tlTjQ2YURCb0xFZnRqbWV6NVFlczZmellEUitocFdaMzZsYTNiZFpJWUZDZ3NnTmFaVmUxUGVZMXdLbmZmblZlUGdUS3RyblgrUGtiS3ZhbThhbVN3N2owZlVSOTB1YktueGRFMmFLZFlwOXB6RVZUbzRQL0ZNQisxYjNvaERyVmg0blpPejZGVmovOWVEOHVQRHorTzJNMUNOZzVEckE0K0grdk0rZzJ1Q3hIN1k5WHV1QThadmV6b2ExL0M5cnVHTmo1TlFhdEdKZml5TGRteUN3Z0lvWGRoYWNNTjE3dTVDZ1lpSFE0MFZMbFFvSjdTdlgwTTcyK2ovYTZFOS9UNG1tRTlIcHBsTElmc3E4bmp2amZab1BqZmUrLzJxY1pKV0grdStaQmh4VEZkcHNZRkpSNnpWdXlDeDB2NUV6ZmJFU20vNXFFRFI1R3l6MElIcTlkOUdIcVJXV2gwOXJzdjZoMFA1bGNMN1VncmNrV01EK0MzbGxJcVA1ZG93MVhSVHg4MDlIcnFHbjErb3JyanZSTWErN3BqeFJZS2VqTnYxUTFXUEhCSW8rbEhBZHVjOEJqclVPS0U1VmxnckJFM1c2ZlFhNzUwNEYzNVp0RGd4V1MzME1WMzNKK0cxbkhLUDRTVjkyNVBZRkNOZnZjbTZrTTI5WnA1aXZvZFZEaHVyamF0K3ZHZklXRTBzbS9mM2U3RGl1cTEvdXU3UVNjTkRpanoyeHg1clQvdzRwVFA0Q3BSaW0rSlNCRWJiZEx6ck9iemtJS0grWk1qZWRteWl0MEZpQi9zVFBRclpwQlFvZG8wZ3NXeDkvbjdwMEpHcWRhdnYremhRaXVDajloT2ZwM3c4VTQ3VXBuZ2VGYkVMdDNZK2tVQ3hhM1dBU0tFYWJLU1g2YVkxcFZ4OFVNR0pHT3BDTm1ZemVOcGpPZXdvOVRRbEllWDBoTWF2UE1hcHBybDV5eldOaE4zVzZZUk9GdFAyNnBTOThQTlZLNW5OQ1pSN1V1ZzJGNDZLME5ZVnp5TVd0dUY2N21ZSUZKWDZHVFAxTkJVRWlOaGFyNFBFNmtjak9ZeTRQOUc4a0UwalVMeEtxTEh2d2prYnNZdlUxMVhFRUNCeUppSlNackxQZmd2TmxMMmxOdG43OW9MRi9jbDFRSHBmRjJCWi81OW5aNmhBTzRWSjVnUHRSM1g3akJVbzFzZEw5TVdUOWlBU0lHSXJmZDZUMkJSN2YrSkg2d05ZRzZtblhxV3RjMERLYVpuNnRoOHZ0RVcvRXlBaWRWcTFLeTJGYjNGLzhqdGxHLzJwTS9IbVlhSlhhYkJqRlVYSmxyN0RsTGF0dUs0bVZ2OTl6NkZ0ZmQyVHJUcWhpaWxaVnRnSlFXSTMreE1yNjBJMmxkN0hmRG9LRGV5bjFwUDljSmg3aDQyZjZSNVp1V3BRb0NlbEJGR3BGN25vNDJUR3NWSVd3NzdKdndlVFdiMTNNc3VKU2dVUXFXVGhSUGtNdFZwNVV2akUrcWY1ZEhSQ0NqWjJSWkFvYWpCaWJ1STJMMlJUbTA5SFk4MlNQYldlTEI5VklNdlNwOVhoTzJaOGtSdm53OWx6Y2FpZzhjL0JaUFpWQVdOV0U1WmFYWHVid09yYWNheXF0cUY0anliV1V5dmdzNjg2RzRYdE45Z0xRV0pEMko4WXViT3JDOW1ZYTh5UzlXbFY4VTRIMktJY2ZSaUFoZzc5anpCWVljWVhtVHFueXZaM2RiR2RzTUo0bTlQcW9nTEZGRkpQM1ZOT216VDIrNjJRdmlha2Z4K1JqUUlMQklsdHNmY25oa0kyTHJNOVNqK3RWeFZMSG1pSFJ2RzFCdG1sRlJYb3RiQ3FwcG5lMTRXV0wvK2kxVU1PeWtlMmRKekNCZDlneXl1dExqNWExeUh3b2t5R0UrMWw2MHIwd0xxeHF2aDdwbGxZZHhvSG5UUFpDQ3NFaVFzNjJwOW9Yc2ltS1FST2F2emVGcFNDK3F3VWtkL1VLQkljRmt6WDhMbG1lLzhvNERxdU8vUlR6a0JFQ1RUUjBmZHo2Rlk1Vk5HYjJ4ek9lMVRBZE5KaEdtWm5BWFZZZ1p0UFIwY1pqWmVlVkFtYlNYS1lJMGhjb29QOWlaWFgvc1Nta0VyU2FQeHlYVm44b2x6N1gwT0tDQVBzZnRIZzVWTFg4YitWVHAxVHdQaUZWVzhVYk56eENsVHF3c3JpdlZmMmtMVU8wekFQdXc2bU14Z3YzV2tzZEVRbGJIZ2hTRnloZy8ySkI3SE9uRkxqTjJ3TXNsUGZTL0pGRGZXL3RQSkNyajNxVk5SeEkyRDhrT2dBOVVtcm43L3AraVU0UkpFYXh5bjB2WkROT2dmS0hycU5WYUJsSDQwMHpOZnFpMk5KWWk5blk3ejBXd0tUa2s5NkRiOXBvcEd4RUZ6MS9qRDlGNXhHUG1RMlZQVzZVbHFkdTBiWjY3RTIxdy8xbmc4anZkOVY3aFF3M3pLZ3hpWjBMWWVmQ3cyOGh2bzU2ZWdJalMrNmhtOVk3VWFmMUlIaVlESzcxQm1EV0M2MFM0ODZQRDc1aXNicWkrdDAyVk1WS3pwdS9jWDlQRFQ2L3FRQ0lMWGo5WGpwcERGZTh1NWY3aHA5Q1pXdkVkVXZHbGk5ZHZpbDJWL01vYk5UWTVEOEhvSjlxVUcrVVFONHBNRjFQY2crY1FpVW4zV05mTlgvaHAvSHhCckJxMWlydXdrS25hSFZMSGZVVGZRYXBONDBLOTNxUHE3djVhSCsxMkl5NUVrVFNmVTFmSjloUjI1OW5YdTlmOHQrS3JmQTNmSzlSN2srd3lyL1lESzdVVUdiUHAxMXVvMERCVjVaQklyVmoyQXBUQUJjTmliazZ2YjFWLzBzQm85UFMrNjV1djkvVk4rZlRWL2JtSlQ4Vm5CTU5TWHEvdVZreC82bEhoTTlOdnFTbk1jZjFyRkZUdjFxTVdQSHdYdytiejBJTExOUVhHZVRqZVgzaXdFQ0s0TklpU1pFNmttZ294Y21oSnJYN2lNcmhNQm1sS2x5RlRFckowZS9rejVZRmdYUkw1MlhlVTgxVXFTS0lCRUFBTGhRa1pZTEFzUVhoWldrYkZZVUFaU1BJQkVBQUpoUzVzbmxrdFJEclBhc2MxUEpVZ0RRT1lKRUFBQmdRaWwyRnhTdDJkbURWaFJKUVFUUUtZN0FBQUFBZTFPQnFGc0N4TDBjSzhnR2dFNnhrZ2dBQVBiaVhKem1JVktWNUpTcXNMNm0wQnVBTG5GT0lnQUEyTmxnTWd0bjVuMDIvZ1NmdEtmeEtuYnFaYVBxY2ZONGg5am5CMTl1VUJrVEFOeXdrZ2dBQUhiaUVDQ0c0UEJpUGgxZHRaN3BrUE1oOHF1OFRlMXpBTkFmQklrQUFHQnJ4Z0hpczRMRHk5WXppVkhBR1BZTm5qbS9zcWY1ZExUdTdGWUFjRU9RQ0FBQXRxSWlOWDhiZldwaHorRnBia2MvUkFvV09XUWZRQ2VvYmdvQUFEYW1ZeTZzaXFwYzY4aUg3TTRHREs5NVBoMkYxZFRYV2duMWNON3R1d1RRVjZ3a0FnQ0FqUTBtczdDeTljYmdFN3RXa0pXOVJ1RHNzVi94WDV5YkNDQTJWaElCQU1CR3RBL1JJa0M4S3lWQXJQNjdxdmhWMVZBZldrL3U3elQyK3dFQWdrUUFBUEFpclpaWkZKWjVMakh3YVFTSzFxbW5CSWtBb2lOSUJBQUFteGdiSFpZL0xqVjlVdS9MZW9WMDJIb0VBSnl4SnhFQUFLeWxWY1JIZ3lDeEY4YzZEQ2F6c0QveFZldUozZjJXWTNFZkFQbGlKUkVBQUx6RWFoVXgrWE1RalZnZmdzOTVpUUNpSWtnRUFBQXZzVXFodEE2ZVVtVjl0dUZKNnhFQWNFU1FDQUFBVmhwTVpxRnd5dUdxNTdmdzBKZWpIUFErTFN1ZC90cDZCQUFjRVNRQ0FJQjFyQXFuM0xjZUtSdG5Hd0xJRmtFaUFBQll4K29JQmdxdkFFQW1DQklCQU1CU3FtcHFrV29LQU1nSVFTSUFBRmpGc21CSzM5Sk5BU0JiQklrQUFHQVZ5NFBjKzFhaGs0cWtBTEpGa0FnQUFHQm9NSmtkR1owckNRQ2RJRWdFQUFDcldCN2kzcWVWTmNzVjJJcFVYUUN4RVNRQ0FJQlZDQkozWTFVUnRzWnhHZ0NpSWtnRUFBQXhIQ29OczJpcUNQdkc4ajNPcDZQYjFvTUE0SWdnRVFBQXJHS2Q1bmplZXFROFkrTjM5TkI2QkFDY0VTUUNBSUJWck5NY3gxcHBLNUxlbTNXUXlINUVBTkVSSkFJQWdGV3NnOFFEaHlBcUpWY09WVTF2V284QWdET0NSQUFBc0lySEt0Yjd3V1JXWEJHYndXUjJhcjBYVWRpUENDQzZ3WHcrNTFNSEFBQkxEU1l6ajRIQ1U2aDJPcCtPaXFqYXFhRDMxbUVWOGN0OE9yS3VsQW9BTDJJbEVRQUFySE8zNXJsZEhZYWdxb1Q5aVk0QllxWDBWUUNJamlBUkFBQ3M0N1VuN2xpQllyYXBwODRCNHROOE9tSS9Jb0JPRUNRQ0FJQjFQRmV6NmtBeHU1VEt3V1FXQ3ZEODdSUWdCaGV0UndBZ0V2WWtBZ0NBdFFhVFdRZ1V6OWI5SFFNaHJmVjhQaDA5cHZ4dERDYXpJd1hPcjFwUDJnbXJpRWV4M3hzQTFGaEpCQUFBTDRteHFoV0NybjlDUURxWXpJYXRaenNXZ2tNRnkvODRCNGdWcTRnQXVzWktJZ0FBZUZHazFjU21CNjNZM1hTNXVxaUE5VHppZTcrYlQwZkpCY2tBK29VZ0VRQUF2RWhwbHZlT2UvRFdlVkNCbUc4L25rZG5xT0xxVUQrbnFzUWF5M1A0dmZQcHlPTjhTZ0RZR0VFaUFBRFlpSXExZkV6ZzAzcFd3QnArdmpZT25IL2NkTlZSd1dCZFdUVUVoRWY2ODNIckw4Znp4M3c2dXV6dzl3UEFOd1NKQUFCZ1k0UEo3RGJDbnJ3K3VwNVBSK2Q5L3hBQXBJSENOUUFBWUJzaEJmT0pUOHhVU0tjZEYvUitBR1NPSUJFQUFHeE0rd0ZQbGZLSi9UMW9INkxiUGtzQTJCWkJJZ0FBMklvS3F3d0pGUGRHZ0FnZ1NRU0pBQUJnYXdTS2V5TkFCSkFzZ2tRQUFMQ1RScURJSHNYdGZDRkFCSkF5cXBzQ0FJQzk2RGlKRzZxZWJ1VERmRHE2eU9CMUF1Z3hna1FBQUdCaU1KbUY0T2M5bitaU1liWDFmRDRkM1M1N0VnQlNRcm9wQUFBd29SV3lmMnUvSFg3NEZBN3FKMEFFa0F0V0VnRUFnTG5CWkJiTy9RdEI0MEdQUDkyN2NQNmg5bTRDUURZSUVnRUFnQXZ0VlJ6cnAwL0JZZ2dPTDFnNUJKQXJna1FBQU9DcVI4RWl3U0dBSWhBa0FnQ0FLQlFzbmlwWVBDN2tVdy9uUkY1VlZYVTVuNDRlVzg4Q1FJWUlFZ0VBUUhTRHlleEl3V0lJR2c4eit3YWVkZVRIelh3NnVtazlDd0NaSTBnRUFBQ2RHa3htSnpxVS96VGhzeFpES3VtdEFrTUswUUFvR2tFaUFBQkl5bUF5Q3dIalNlTW5kbXBxQ0FoRDZtZ0lCdS9aWXdpZ2J3Z1NBUUJBOHJUYStLdFdIQ3NGa0w4Mi92OG1CWEdlRlB6VjZ1RHZzUTRLNTlQUjE5Wi9CUUI5VWxYVi93UGhXSzN0TVBWdEdRQUFBQUJKUlU1RXJrSmdnZz09IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMSIsIkZJRE9fMl8xX1BSRSJdLCJleHRlbnNpb25zIjpbImNyZWRCbG9iIiwiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsImxhcmdlQmxvYktleSIsIm1pblBpbkxlbmd0aCJdLCJhYWd1aWQiOiIwOTYxOWZiZmQ3NWU0YTYyYmUxZGZlNGQyNDA4NjRhZSIsIm9wdGlvbnMiOnsicmsiOnRydWUsImNsaWVudFBpbiI6dHJ1ZSwidXAiOnRydWUsInV2Ijp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibGFyZ2VCbG9icyI6dHJ1ZSwiZXAiOnRydWUsImJpb0Vucm9sbCI6dHJ1ZSwidXNlclZlcmlmaWNhdGlvbk1nbXRQcmV2aWV3Ijp0cnVlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZX0sIm1heE1zZ1NpemUiOjc2MDksInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6MjAsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MjU2LCJ0cmFuc3BvcnRzIjpbInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5IjoxMDI0LCJmb3JjZVBJTkNoYW5nZSI6ZmFsc2UsIm1pblBJTkxlbmd0aCI6NCwiZmlybXdhcmVWZXJzaW9uIjoxLCJtYXhDcmVkQmxvYkxlbmd0aCI6MzIsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjoxLCJwcmVmZXJyZWRQbGF0Zm9ybVV2QXR0ZW1wdHMiOjUsInV2TW9kYWxpdHkiOjF9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMS0yMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IlZlcmlNYXJrKFRNKSBHdWFyZCAyLjEgRmluZ2VycHJpbnQgU2VjdXJpdHkgS2V5IiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNDExMjIwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblByb2ZpbGVzIjpbImVudGVycHJpc2UiXSwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMS0yMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI2LTA1LTA2In0seyJhYWd1aWQiOiI1MGNiZjE1YS0yMzhjLTQ0NTctOGYxNi04MTJjNDNiZjNjNDkiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjUwY2JmMTVhLTIzOGMtNDQ1Ny04ZjE2LTgxMmM0M2JmM2M0OSIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJFbnN1cml0eSBBVVRIIFRvdWNoUHJvIn0sImRlc2NyaXB0aW9uIjoiRW5zdXJpdHkgQVVUSCBUb3VjaFBybyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9pbnRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRENUQ0NBZkdnQXdJQkFnSUpBTEtLajBzS1RYRGxNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1DRXhIekFkQmdOVkJBTU1Ga1Z1YzNWeWFYUjVJRlJvYVc1RElGSnZiM1FnUTBFd0lCY05NVGd3TnpJek1UTXpOekl4V2hnUE1qQTJPREEzTVRBeE16TTNNakZhTUNFeEh6QWRCZ05WQkFNTUZrVnVjM1Z5YVhSNUlGUm9hVzVESUZKdmIzUWdRMEV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRREVpWmg0dEljQVVQZlVrQ21YYk53V0RJRnZXeHhHUGhKcS8vRnMzdVBCQTRKUVVYaUFIV1VvZjBtTnhmVTM5eWZLMzkvMnlYZ09KNVFvWkd6cFFFR1N3NVNub3kwKzYxb2VJKzBJWGtBYU12ZlZ2dG1Ob08yT0pPNStBRHRsRHU2cmdKdVY2SXBMTFI1U0tYT1Uxek9QSFlyQVBzWXh2M1VMZzI2VzYzek1UcXBDTkNnNHB6d1pSeVhqY0xyVWVDekY0WGNmK3AvRzQyWmRHekJlWmM0eit5Y2NPTXhCeDR3c0djUGcxSEZ5elhsM0ptdHlnN3pVREVxYmplSDhOc3k5K2tUMzFtVlhvY2lnQjNoRzd3Y3RpSW42QTVsUEdNUEpvSTg0UlpkckIzZXM5UWxIWldTbnZkSkdlYUxuTzVYcTRtSWh1ZmJZNHMxVXEvcHZHc0FQQWdNQkFBR2pRakJBTUIwR0ExVWREZ1FXQkJTT0VuK1ZGaEkvWkdVVFNVZWhFeU9seHhGeEx6QVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUFNQXNHQTFVZER3UUVBd0lCQmpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQXJhRG84dW1yZWpYTllRNkJSQm40WHNEZWhEbGlqM0xBTk03Sjd0aW1hTk1mb3hhZHd5UzFudkE4ZTdjTzdPQXczaWVsWWpPNm9pU3B6VXN1NmVIMmxvWjBMSzBma29pYVpabkhLYi80Nm82bzk5NDdpOHR1QU95b1ZyR1B3OWMyOVZvSVFrRTNRai8wUEpabVUwWXViaWxSVU54NmxkSzI1YTBvL3E4bGs3QkwzMk5qV2RUektESlBnZEttcndsMW0zSzJlR212MlpJZ0FQNHBXVW1nMERGNFhTL0phbmtGaWJSWmhzNktnMFYwMkU5UGNiR3lYSW8raHhVOVFzampnSVB0RmlGOCtWdlFiUFRWZU0xWmMwQ3hQbTFYeDIya2kzSWVQcGFEaWd6UzBLZnhrNVJuRnRxWS9aT3lWdGFtL29BUDl0cS9NVGpFUXUxZmxycHBSUT09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUtnQUFBQ29DQVlBQUFCMFM2VzBBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBRTltbFVXSFJZVFV3NlkyOXRMbUZrYjJKbExuaHRjQUFBQUFBQVBEOTRjR0ZqYTJWMElHSmxaMmx1UFNMdnU3OGlJR2xrUFNKWE5VMHdUWEJEWldocFNIcHlaVk42VGxSamVtdGpPV1FpUHo0Z1BIZzZlRzF3YldWMFlTQjRiV3h1Y3pwNFBTSmhaRzlpWlRwdWN6cHRaWFJoTHlJZ2VEcDRiWEIwYXowaVFXUnZZbVVnV0UxUUlFTnZjbVVnT1M0eExXTXdNRElnTnprdVlUWmhOak01TmpoaExDQXlNREkwTHpBekx6QTJMVEV4T2pVeU9qQTFJQ0FnSUNBZ0lDQWlQaUE4Y21SbU9sSkVSaUI0Yld4dWN6cHlaR1k5SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpFNU9Ua3ZNREl2TWpJdGNtUm1MWE41Ym5SaGVDMXVjeU1pUGlBOGNtUm1Pa1JsYzJOeWFYQjBhVzl1SUhKa1pqcGhZbTkxZEQwaUlpQjRiV3h1Y3pwNGJYQTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzhpSUhodGJHNXpPbVJqUFNKb2RIUndPaTh2Y0hWeWJDNXZjbWN2WkdNdlpXeGxiV1Z1ZEhNdk1TNHhMeUlnZUcxc2JuTTZjR2h2ZEc5emFHOXdQU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNCb2IzUnZjMmh2Y0M4eExqQXZJaUI0Yld4dWN6cDRiWEJOVFQwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOTRZWEF2TVM0d0wyMXRMeUlnZUcxc2JuTTZjM1JGZG5ROUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXpWSGx3WlM5U1pYTnZkWEpqWlVWMlpXNTBJeUlnZUcxd09rTnlaV0YwYjNKVWIyOXNQU0pCWkc5aVpTQlFhRzkwYjNOb2IzQWdNalV1TVRFZ0tFMWhZMmx1ZEc5emFDa2lJSGh0Y0RwRGNtVmhkR1ZFWVhSbFBTSXlNREkwTFRBNExUSXpWREV4T2pBM09qVTFLekExT2pNd0lpQjRiWEE2VFc5a2FXWjVSR0YwWlQwaU1qQXlOQzB3T1Mwd00xUXhNVG96TXpvd05Tc3dOVG96TUNJZ2VHMXdPazFsZEdGa1lYUmhSR0YwWlQwaU1qQXlOQzB3T1Mwd00xUXhNVG96TXpvd05Tc3dOVG96TUNJZ1pHTTZabTl5YldGMFBTSnBiV0ZuWlM5d2JtY2lJSEJvYjNSdmMyaHZjRHBEYjJ4dmNrMXZaR1U5SWpNaUlIaHRjRTFOT2tsdWMzUmhibU5sU1VROUluaHRjQzVwYVdRNk5UTmlNMlkzT0dJdFl6azJPQzAwTnpOaExUZzJaV1V0TXpBNE1UaG1PVEkwWW1KaklpQjRiWEJOVFRwRWIyTjFiV1Z1ZEVsRVBTSjRiWEF1Wkdsa09qVXpZak5tTnpoaUxXTTVOamd0TkRjellTMDRObVZsTFRNd09ERTRaamt5TkdKaVl5SWdlRzF3VFUwNlQzSnBaMmx1WVd4RWIyTjFiV1Z1ZEVsRVBTSjRiWEF1Wkdsa09qVXpZak5tTnpoaUxXTTVOamd0TkRjellTMDRObVZsTFRNd09ERTRaamt5TkdKaVl5SStJRHg0YlhCTlRUcElhWE4wYjNKNVBpQThjbVJtT2xObGNUNGdQSEprWmpwc2FTQnpkRVYyZERwaFkzUnBiMjQ5SW1OeVpXRjBaV1FpSUhOMFJYWjBPbWx1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2TlROaU0yWTNPR0l0WXprMk9DMDBOek5oTFRnMlpXVXRNekE0TVRobU9USTBZbUpqSWlCemRFVjJkRHAzYUdWdVBTSXlNREkwTFRBNExUSXpWREV4T2pBM09qVTFLekExT2pNd0lpQnpkRVYyZERwemIyWjBkMkZ5WlVGblpXNTBQU0pCWkc5aVpTQlFhRzkwYjNOb2IzQWdNalV1TVRFZ0tFMWhZMmx1ZEc5emFDa2lMejRnUEM5eVpHWTZVMlZ4UGlBOEwzaHRjRTFOT2tocGMzUnZjbmsrSUR3dmNtUm1Pa1JsYzJOeWFYQjBhVzl1UGlBOEwzSmtaanBTUkVZK0lEd3ZlRHA0YlhCdFpYUmhQaUE4UDNod1lXTnJaWFFnWlc1a1BTSnlJajgrVzBZWE1RQUFSeTFKUkVGVWVKenR2V21RSk9sNTMvZDdyOHk2dTZ1UDZlNjVyOTNaRTd1TGF3RVNQQ0NDRkVtUm9paVpWSVFvTzBTSm9aQ3NDTnR5aEdXSExjdDJPRUlPMjJGTHBvTlMyQjhVK21ETHVrakpGQ1NMRUVpSklNQUZRV0N4QVBiZU9YZk9ucjY3anJ6ZXd4OHlxNCtaMlVYM1lMR3oxVHQvUkdGN3FyTXlzNnIvOWJ6dmMvMGZFVUpnM1BDZi83Vy9zdWRqQytmbzFGdWNtSjhGWHpBYzloSENvRHQxTXUvSTg0S2FMb2hFaTlXVmpLZ0d0VWFkTExNVXlRRGRVRFFiVGJ6TFdWdFpJVEpnZEkzQ3lWa25lQ0xLL05FOHo3OHVEaTI4a2RrQTNnTGkrL2ZtOTRHLy9wLzk5UWQ5Qzk4ejlJTytnUWNIZ1JBbGtZUUVKU1hlZTd6ejVPbVE0VERERnhsNWtIUEIrMGZxY2YxY3B6TjNKcUFmcmJjN3A0U1NaNTU2N1BHSlJ4OTduUC8zODcvSnE5Lzh3eDg4Yyt6RTd5TTE0L2lsLzZEaVEwRFFRQUNrbEVna2hFREE0YXdsZHhsWm1pR2NrMm14Y2NSN2NjS1krdGtRd3JuMlJPdXhacXQ1MWtUeENXVk11eFkxaUV3REZ6Ulo2aEdSWS9iSVNTYTdoNWpzSGlJcDBsODVlL2IwN3plYWJZb2lmOUJ2K3NCZ0xBbGFVbTZ2eDBKa0lqWTNOK24xVmlPajFaRW9yaDhYZWZha2lzM2ozWm51eVpxdW54VmVuWXJqVmh6VklyU0tFTnBVcnhlNEFMN0lTZk1jSVMzQ1FKSW1MQzB1Y25SdWdhbkpDYUlvZXZhVjg2K2pkVXdJL3Z2MHp2ZUhIL3FqUC8rZ2IrRjd4bGdTVk94amoyZVVZblh4NXVIMnFUTi82L25QL3VTUERJZTkyZjR3bDFGVVE1a1lxUXpCZ2tDVlMzeHc1TjVCbmlJQUx5VUJnWEFXS1FRRWg5S2c4T1JKUWxIa1RFOVAwWWpqazhQMWxabG1wNzNzM1FlRG9BY0JZMG5RdGpSN09rNUtRWkhsdkhWejVXLzh4Qi8vcFYvOHNjOTlqbSs4K0RYZVBIK0ZRRXlSZWdJNUlaVEhJa3JMSEFqYis5UGd5eStFQkFJRUwzRzVKd1JKa21Va2FVcTdNNFhTcmE1ejY2ZW5aK3JMV1dhL1gyLzlRNGV4SktqdWRQWjBuRlFTc2d5bmE0ZXVYTHRObGhXRUFIbG1rUmdJSGdRbEdjWDJ0a0VnU2pKdVBSTkFDSUlvZnk0dHVHU1k1S1JwU3FmZHBEVTF5ZXJscFdmRXRjSFg1RU1MK3A1aExBbmFqZU05SFNlRlFNUVJ0YnE2dHJSMkUrc3lXczBtU2dXRWNBZ2xFQ0tBOEFRdjkzVVBVZ2p5dkNUbzdHeVhRek5UWEw4UW5seU5tM2doNEtFbi81NWdMQWs2TXhqczZUZ0pHSzFvMS9TVnRkNGFnMzVLSE5jeGtVUUlqeENxdEtEN2NydUFBRVpvaWl4bk9CeWlkVVI3b290WDRkRVFLNFNRRDBOTjd4SEdrcUJ2eXNhZWo0MTBoS3Exei9lWFYxbGVXbWRxcW9NeEVWbmlrTEtNaFpaTC9CNVBLQ0Q0Z0JTQ0VEeEpsaEJDWUtJN0NVRXNaT2tRSFJ1Q2YwalE5d0pqU2RDWitZMDlIMXR2S05MRW5YL3QxWlNWOVJXT25UaEVwR3IwODAzcXpYSlo5MTRnOTByUUFBandzdHlYSm1sS25oZE1Uc3dRUi9WcGEyMWNiemN5WjkyZTd6R1VweUlFZ1hNQjhjRklSSDBnTUpZRWJkZjJia0hyc1dLaTQ4L25kdVBheHZycTBjaEVSSEZjZXVveUFBRVJOT3hqa1JkQ2dnZ0VDWG1XazJVNTNjNGtqVVp6em1mWmdzNzlaZmJxS0FsWjdvTkRRSXFBTXVMaDluVUh4cEtndDY0MjkzeXNrcHFpSUl0MCtzYnE2dEpSZ2FMUmFKVGtESUl5NVhrL2pCQklJY2p5akRSTG1Kam9NTm1kakJadlhqdFRSMTkyZXptbEVHQWRqWVpnMEUvcG1vTHVUSjBpZXhnRkdHRXNDWnIxYit6NVdFRVpRcEpTdkxTeXN2WmpoZlcwMncya0RBUXZSZ2Z0RXg0UWFHWElzNEkwVGVsMko1aVluT0xxMVN2bmd1QzMvYnVkTTRDS0pBcVB0aFloSW9KUUJHeEoyb2RyL0JiR2txQW5uM2xpWDhjM20zVnVidlMrYytQcUxZYURoSGE3Z1RFSzV6eFNTZVErbzBLQzdRMUJWdVFNa3hTdEROM0phVnhSUE51SUxjVHY0TWtIMERHa2c1eGlVSUJTdXpZWElUeU1VTzNFV0JKMHFqdTFyK01uSnllWW41OC8vOXFiaTZ4dmJOS1phQkxITWYxZVFhejJGLzhFS2srK3pEaDU3MG1TQkJlZ016RkpjT0pjcTVIVGJHdHNjVGZUbElaMElGbTdtcU4wQUtNL0lNVjVIMHlNSlVIekl0M3pzWUZBbGtlMEp4cFhzM1E0V0YxZGE4NHZuRVJITlp6UEFMKzFGOTBQeXBWWUV2SkFtbWJZd2pMWm5jWkV0VWMyYnEyMlJHTDZ4UjBaVDBGQVJZclYxUnBGSG9qcWNqKysyWWNTWTBuUTMvdnlWL1oxZkNBZ1E3Z1ZSMlp4ZFhYcGRHVE9FVWQxWUgwN0JycG5vZ1JHc2FZUXdCTklraFJyTFoxMmgxcWtGOVkzd3VPMTl1d2ZXcmZOVUFGNEVSaXVDcndGRXcwSTRUNnM5NGNNWTBuUW1MMkhtYURNdFR0WDVFVytlbVZ0YmZsMDhKSkd2WTRVcFNlL2p3QlRsWUVxWTZmQkIwUlFaSGxLbXFTMG1rM2EzVW1LWXUxSlo5UWZaczV2K3pzU1lpR1FLaENjZTdqUDNDUEdrcUR0cWIzbDRrY1FRaUJsekxXYjR2V2x4YVhQZWkrb3hWR1pneDhSWlU4cmZHVTVSMVpVQ0xTV3BHbktZRGhrWnJwTGQzYWF5K2NYbjEyOXZVbWFGMldKSHVDOVoxNFpWTE9KRTN1KzRJY2VZMG5RWm1OL3R5MEVHS09vUmVidGxlWFZ5dG8xVUVyaVhVQVp1YjhpYUM4cnl4aFFTdUtzSTAxVG9paW0wKzZTcGNVUEhIMWlFdE9JSVhpa1Z2UnVidUp1OTBnZmJqcjNoYkVrNkdCai83Y2R4eEZ4MUxqUzIxeWxQK2hSYnpReFVZek5IWElmMWl5RTdXT0ZBQjhFMWxvS202T05wdDNxc0xyWi8wU2FGRCt4ZG5QOUN4dnJRNlJSMUJzTkp1T3gvTGdmS01ieUUvUG0zcmRkNXJQdmJhR2MwVVNOK0hKdmM1UCtZSVBwbVhsTUZHSHRZTmQrY0Y4eDhsQnVIMEx3OUFjOU50WTNlZnp4ai9EVFB6M2d3cXN2L3MyMTIydGZHQXd0d2hpT0hhMmg0b2RPMFg0eGxwOVlKTU05SHdxSUJCZ3YwRTZqbmRwNnFFTFNpaHRYaDhQaFlIbGxoVmF6VGkyT2NmWjdTQ3RXeTd5VWtuNi96MmEveCt6TUhKLzk0Ui9EQy8weGF2NFhUejQ1eTZIak00QkVob0JTQ3FVVlNsSlZVNzAzbjhsQnhWaGEwQWE3NDZCU1FwNEYwbHpRbUdqUm5PNFRSU25aanJjWDFSU3FZYSs5L0twOStkYXR4ZWVqV05KdU5MbnRWN1pjSDNFZmJCRUlRaENraVVWSmlkS2Uxa1NMNmJsajNMaDYvWk9uSHBuNXg3VTY5QlkzeUkwaUhmVG1rMEgrU0xBRkRSbS9wV3Z4cllkRWZXZU1KVUhESFh2R1FKa2Q5M2hFWkZqM1RWalBtUUlJQVE4b1dUQkZDNGU2ZmVuU0ZVSnd4SEd0SW1aQVZIdkxVZUZJcUpidjBjL2xmd05DeUxLRldZclNHa3BGWkIxU0tweHpySzJ2c2JLeXdrWS9JM1BteDI5Y1dmeGpRWWpIa2tINi9GcFBudEJhUGFaVTNESDFEcjBpTHphR3ZkOCtWTlAvdFhmaDYwSUdqQW9FK2RDUkdtRXNDZnBPRUVJZ2hTZExOSVBsR05iVzhibkRLMFhMZS9KbWNmalk2VWQrNE9NZi96ak9GbHZ4ZVNGR2ZhTGJ4SkJDSUpXc1NDaVJVdUdESjRSQVVSUVVSY0htUmtLYXBmUjZRL3E5QVYvLyt0Zm85VGNZRG9mRWNaMzU0eWMrSXFYOGZCelZtRDdjd0VRMTJzMFc5Y2lndENSM21WbGJYZjdKeFZ2WGZ6THk3cS9vaWZqdmJQUWx0bmhvVGtjNFVBU0YwdHBwNGRHMXdQcDBSRzk5blhLZkdIajc2cTMvL3RTcDU2WWZlK3djM2djaUU2T2tRZ1RRUnFPMXJFZ3VjZDVqclNOUE01SXNaVGdjMHU4UDZQZjdESWNEc2pURE9vY1VFcVUwY1Z3amlqUnpoK2JwVEV6UTZiU0phM1dVTWdpaEVFb1JoTUE3UjkwbzR0Z0FnbTVuR2lNYjNMaDI2ZGQ2TnI0Vmt1ZzNTc3Y5MElyQ0FTUW9BQUc4YzlSYUV6U2JMWXgwNU5aeTQrYmc3STNGbTZ5dXIzTGs4T1BNelR2YWIxOGp6WVlVUlU2dm45RGI3RFBvRHlwQzlzbnlBdThkQW9HSkl1SW9vdFZxczdCd21GYXJSYjFXSjY0YmFuR0VsQWFCS1B2cnZjZTVBcDluV0Jkd3psTnYxSmc1Tk1udHBXWGVldXNHeldhVE0yZlBjdXIwT1RZMlV0WTJWdjYzVXllVEx6WnFnMDFyeDlKL2ZjOXhBQW02bmJwMG1hTXpHVEhaaWNrOHREcTNONFpwenB2bjMyUmpmWVczWHIvRWhVdVhHQTc3T0YvZ2JJR1VHcVUwelVhZDd0UVV6VWFEUnJOQnM5RWtpaU9NTVdpdGtVTGdROEE1aC9lT29yQjRYMVJ4VW8rUXBmTVVSSGsvdFZxTmRxZkJiL3pEMytBMy9xOS96dTNWMjB6VVczenloei9OWC82ci96RWZmLzdqZk9uTFh6eTZ2SmorMVViYy9PL3lvQjQ2VGh3MGdvYUEwcHBJS2FRRWdhTzNPVHk1dnJyNmFGTElUK3U0OFVNMUVmaWRMMzZSb3JCSUZGUFRYV1lQelZDTFkxcXRKbzFtazFwY0k2NUZXMmxLaE1BN2ozTVc1eHhGWHJ4THBySnFXZ3JiQlNVQWs5T1QvTmEvK0R4LysxZi9OZ0FUc240dG9yajFiMy9yLzV1NWZYdjU1UC80YS84cmp6MytCRzk4Nnh2L1phVE5QOUlpdk82TDhLSFBpSTRsUWIyN3c0djM1Y1BFaGl3ZG1LWFZ0WjhmOVBzL0owWDBjYVhqTXlGRXlzUjFUcHc4VEJ6RmFHMW90VnJVNmpHMVdsekszbFNWd3JheWlHbWE3YmhBeGJMUlpmZEFtcTJNVXdnME95MDJObGI1Vi8veTgweXIydW9QL3VpbmZ2blkyZm5mUEh6aUtGbmY4MXUvK2E5Ky9oLy8vYi8vZi82NXYvUVhaNjVldUJBTjhvMWZQZVR6bjJDbFIzaUhwTVNIQldQNTd1UDY3a0pMcFFJMUgzUGx4dkR4NjI5ZS9NS2h1Zm1qcDA0L1NWeHJFa1Yxb3JpT0VvYTRKcEVTckEwNExHREpzaUhlU1Z6VmhDblZLTXkwazRVanN1MStacXZPWkJkaGQraVJsQ0VDNG5xTkc5Y3VnMDl1L05KZi92ZWVmL3FqejExNzlac3YwZXgwME1yenN6LzM0Ly9zNnR1M1g3bDY4ZlZ2UHZIczA0MHZmK2tyUHg1SDBaK1JVN1Avb0hBZjdoanBXQkswZVdnN1VCOEN0TnVTcXhmU3MyK2VYL3JxdWFlZjZIejB1V2ZSV3BVU2kwVnBFWU5JU1ZJb05XMEV5RkZkNXc3c284cm96amFOTzA1U0hSQUlRcUMwd05xVVJ4OC8rMThkUG43azJvVTNMckM2c3NiRTZpcStpQ0Z4bkRnKzkrYTN2L25DZi9IWm4vcVR2em83dThEbTJzMi9Pak1UL3dPOHhiczkzOWFCdzFnU2REQnNiZjJzdE1TdEMxNTY2WTMvZWU3d1F1ZjVUMzJLTEV2b0RmcU1kSlFDWVhkT1Y1VENTMlhCY0drTFJYWEFlMWFuV1FYOGhWSnNiUFNZbjUvalk1LzR4RnVuamorQk9BSEZVODl5ZS9VV3lTREZ0Q2FvTnh0Y2ZQT04vLzNDYTYvKzJVY2YvY2dudi9uaTJzZUxMUDJyWHVSL3krMUlHbnpZTUpZRXpUZHFXei9YNmhGWGJ0eitSRy9nLzhTbmYrUlo4c0l5VEZLVWtpQkQyZi91MzQxNDM2ZDRZNEFxNGM1Z21EQTNPY2t6enp6em1WWjM2aXZkemlSQ0daWnUzK1NWMTE3RUF3akovSW5qNUVYMmhWaUxUM2E2TTl5ODlzWi8rdEduei83ZFE5T0gweXhKUDVSV2RDd0pxaXJ4TUNFRXlpaHUzbHorUzNPSDV6azBOMHQvTUVDRUFMN3FOYW9VTzk3dnVIZW9jdlFpZUdLakdReFNKcHV0WC83YTczM3BmK29WSWRTTXB0c3lhR2ZCSzd5ME5HUUVQcjJ3c1hxVEkzTUxKUDMxbzdldXIveUY1TmJHcnhWRnNmOTI1Si84L3J5Mzl4TmpTZEQyWlBuZktOS3NyeVF6SzZ2OVAvblJ4NTVFYVFIT2xUSTJQdXgyWWg2QTlTbUxuUUtDUUpwbGhFYnozTmxUai95M3IxNjg5TjkwSTROd0dUTExpTFVtYTg5QWxwUG45clQzR3UwRkM3T0hXYngxOFM5dnBDdS90cGxZdEZidi81dDR3QmhMZ3RhMGd3RHRsdWI4NjdkL3J2RHg1TnpDWVhKYnNNVkV3VllzOHNFdGpXVnhDU0ZndEdaNWRZM1poU04vWTJGcDhUZjdTN2UrVVp1Zmdyd2dLSW1xTjFoWldwMmZtRHowRndNeGFaTFFhRGFKbWhOUGlwNy9tY2dubjVjNUh6cFJoN0VrNk9xYVJRakJJTEZjdmJyNnA0OGNtYWM3MlNWTEJpVVpxOGRJaVBaQllOUVNRaGoxUFFXOGdQV05sTm5qWno0L0dHNys2VUZ2ODB1bUtDaXNZdkcxbDUrY24xMzQ5U1BIVHM1dDloSzBFZ1FoTWFhR2srRXYxRnZSNTRXS1BuU3lqbU5KVUZXSHVLYm9yZmZPcnF6MGYrempuM3FPMkNpU1FkaTJNQitFdjJNQW5LL1VtZ1ZDS2dhRGxJbUp4dnpKSjU3OTNkczNyM3dqUzN2ZmtaampwNlk3UHpxemNGUVd1VU9xc3AxWkJVbHNESDBoZmp3djNCR1RaOWYzcVdRNjloaExndnJRSU04MGIxKzYvWE5DMStUTTNDeHBrbFVocFE4Z3F2aXFFQUlUQ2ZxYkE2SW9ZbWIrc1k4RllUOW1qQ0k0eWFDWGdyUklDVDRvaEJLVitwMXE0dDF6WGtmWDk2NFRlVEF3bGdSMWVSOFhKSXUzVm45czV0QUMwOTB1V1RMYzJuSitZRkcxZVJBa2hiVmt0b3pBNnloZ0xUZ25pRlZaMHhxY0w0VnlsVVpJamE1SHp6V1YvcnlTOG9QNUpmdytZU3dKR2x5VDN1Wm1lM096Lyt5NUo1L0RHRjB1N3gva0NyVXFjUlVvSjl1SjRNdmI5WUFWYUNGUlptZWFOZUNkeDBReElvb1J4ZUN4eG5BTmFUNWMrOUN4Sk9nVFQzMkVsNy8xN1pQZSs0V1oyV25TTEtOYyt0Nm5QOXhPUzczWFNNR1cwelJ5M0txS3A2M2I5a2hacWR0VlR3YnZNWEZwUVZNbno5bkQwelE2RFd5eGQvWG1jY2RZRXZTMVY3L001VXMzajNVbloybTMyOWk4SUhqUCs3WS8yNHBralViVDdNQ296RTZNeHRYYzhjS1J2cUpnMUNlOW5iNi9JNmZ2dlVjSGhWR2FYTXJqeTdjMko4eEt1dkhRZ243QTBhcFBvOFR5akk3WVZ3bmNYbEEyelZWMW5EdG1KU2tsMFVvaDFZNWcrUzVMV3Y3c3ZjZFpoL1Azc0hMK0hpM083eGpYRk9CQlNvVldFZDZKV1Zsd1ZBbTU0UjhTOUlPTk4xOTdRdzhHZzBaY244RjcvNTc2N3FNeXV4QktDeGlaR0trazF1WU1Ca09TSktXd09VVlI0SndIQWtvcXROWkVVYWwvWDRzam9qaENJQ2xzZ1hOdWY4VWVBUkJsQVl0Q1lKUWhCSUZ1eEkrR2V2d0tINklKSW1OSjBNbnVyQjJtY3JneHpIRFdFUm1KdjJ1dHZUOTRYd294eEhFTjd6MGJ2VTAyMTlmWTdHMlFKQ2w1bmxlVlVHSExXUmsxdVVrcE1TYXUyanZhZENjbmFMWGJ4SEZNVVJUNGNHZkQ5THREeUFDK1FFdUJxY1VFTnM4SnNWRk8wUHVRWUN3Sit1VFRIOEg1bDFkdmZPY3RyQytvaVRvRTl6MHY4eUdVdlVOU0NwYVhWMWxldXMzNnhqcEZucGRMdk5iVTRxaVN1d2xiSy94b2NGZlpOdzlwbGpHOGxiQzZ1c3JrNUFUZGJwZDJ1NDJSaXAyYW9lOEtJZkFJcktmc2cxSVNaL1dqemRZVVVSVGo3N1ZkT0lBWVM0Sis2NXN2MHU4UHIwV1JJa2xUSmh0dDhsQnNEWHpkTDBJSUNDbXAxMklHZ3o0M2I5eGdlV1VWN3kxUlpJaE1ZOHRxam5yalllZjJ0M1IwcEt5bWhxQ0k0d2lsSk1OaFVvNU16Rkk2N1E1eHZFZHlDWUVRRWg4Q1dpbVVpa2dHUE9tRzVkNDI3R21NeVBoakxBa2F4eDZCdVNvQ0s3MzF6ZWtqaCthckl1VDl5bmhYczRta1JpckQwdElpYjErK1RKcmx4UFVZSldOOENGdnozLzJXdXZLdXMreDRaa1JRS3ZVUlZXMFhZbXhlc0xuWnA5T1JWVlhTdTB2dFNCa2dPSUlQYUdYS09mUkNQcElzTDAyQldYVWZrbkQ5V0JKMFB2ZjBYRmh4SWR6bzlRZlRRbFVxYy9zOFR3Z2VFMGNvb2JoMCtRcUx0MjZpcEtUWmF1Qzh4L3V3SXloZTdSOUZXYUVmd3VnTDRTdDFra296VkNna2NtdkVvcFFTcFVwblM1c1k1eHlSaVFqQlkrMDdsOUNKNEt0eGlySlVPTkVhRUYxZGowNUZ0WGpWZlVnOCtiRWs2TlNUVHhFblErSXJLOHU5M3FBVVZxajJoWHRDS0hYcnRkRklJYmx3NFJJM2J5M1NiTmFSVXVDOHI3VHJCU0tVQWZOUjNZZDNvVnJLUzhkTWlwSEV1TWZhZ0pTZXlKU1dFMERwMHNOWFdxTzF3aGhUOXRkclE3L2Z3OW9jWTh6ZEZmOGphZkpRNWZDTlFpcHdRcCsyWG4vand4SnFHa3VDSGpwOG1zR2dUN1B4OG9YMWpmWFBwbG1La0pLdDFzeDNReFZJMTBwanRPVFM1VXNzcjZ6UWJEWVJJbXdOZ1pWU2JDV0pDbGVHbk9JNFFpdEJyUlpSV3M2UndyTEh1d0JDNDRQRTJyTEVUaHRGWkF4YUc2UlNTS0dRd2hDOElqSU5abWRiM0ZxOFFab1d4SkhaNWVSNVR6VktwTnhXS0NOUlJsS2syVGxrSGEzVWh5TGxPWllFL2NyWHZrUWNhYWFtelVzcmw0ZjBCbzV1SjhJNy8rNVMzZ0dvbGw5akRJdUxOMWhaV2FYUmFKUUpIdThJVlhaSENFbndIdXM4OVRpbVdZL1JCZ2c1a09OY0FUanc1UzQwamxXcHd5UU56aW1zVTJoVDMxSWkwVm9UNlFpalk2S29EbExRYXJRNU1uK0NTMWZPVXhRT2JmU1d3N1dUck01N2xEUm9XY1BML09uVkxFWElEMGQxL1ZnU1ZOV1dFVVppNHVLaXpRTERmc3BzdDBrdVFJVHQ2ZStqVE9JdUJXVThVUnpUNjIrd3ZMeE1vOTRBQk00SFJEVnlUaUt3MWJJKzJXa1NhVUh3Rmx0a09HY0JXVzBydGgyZG9uQmtXYzRvSHFwMVZJNDYxRlBFdFFaYUtxSW94cGhTWkN6U2hoQTg4M056V0pkeCtjcEZ0TkgzREpWNUg5QXFSbUR3UWoxVkREYnhWZm5lUWNkWUV2U0pwLzRZalVhRFY5VzNMbjN0RDc1QWxneVE4aEFBUHZnZGY3aTc2KytVVmxpYnNycStURnlQVUVGU1dBZkM0MTM1UjgrTHNnMjBXVmRvYWNuVEFxUkFTSUVRbWhES3BUMEVYN1owVk5lU1cxWXRVQlE1ZWI1RW52Y3crZ1NUMDhjeEpnWWhNTm9RUnpGeEZBT0IweWRQc2JGWkpnUHE5UnAzSXZoeTM2dU1aampJank4Y21Uc3kwWm04WGhURjkrUGovVUJoTEFrYWxucjR1S0J1dVJCRjh0SncyRHNWR0FuTTNrTVJaQWVraE0zZUFBTFU0anEyeURGSXZCY1VJUkNDSUlvVWtRNElZVXZ5eWxBNVBUdUp2NTFCdWh1aTh1SWxXVGJrNW8zWENNRnk2dFJIVVVJaGhhUmVyNWNTakJLaUtPYmtpVk44NitXWDd2RWV5dmVsdGNaRUVRalpHZzZTRTNXdnJoZDcyWE9QT2NhU29DLysvcGVRQktKNm81aW90MS9yOTNxbmZPVjUzK2s0N0I2UUlDZ0tDd1FhclNhK2NJZ0FWaFRnSENvWW5MUEVVUUhlWXQySUxKNFFYQlZLMnA5am9uV010VGx2WC9rT2thbng1Qk9mUVlxQWlkUld5akpKaDh6T3pISm9acGFWbGR2VTZvMWQ3eU5VQWhRbWloRGFVS1RadVg3Ui8zMzdJY2dtalNWQkIzVURnTllCRTRrMzB6VDU2YndvU3VIWjhNNVdKUVNQRk5Db044aUtBaWN0Um11S1FwRVhCVklGWEpIaGJBWmJlN3h5OUhiNStydGlRVHQrZnFmOW9FZkpPa1licmx6NU5nc0xSM24wa2VkSWtsNHBlaGJBaFlDc1NRN056bkY3NlRiZWg2MGlweTN0WndIYUdHSmpDRDQ3ZHp2Sks1bnkvWDU2NDRXeEpPaEhuL2tZQUsxbUEveFhMbno3emVzTStpbXRaaDBmeWx4M0NIY3Zrd0pvdEJybDNsR21XS253emxVaEowTi91SWx6T1hjdTVkdW9LdDF0RHNHWCs0WFJzZDZYNlU0ZHNUUG5Lb1JBS0Vra2E2VDVrRzk5Kzk4eGQrZ1k3WGFYSkJtVXJ4ZUNOTXVZNms3VGFuWVlEZ2ZFY1lSVVpVOTlXV0R2VVFKOGtFUkduVDUzVWlDTjJRcUxIVlNNSlVIcmJZMUFVRzlwT3QzbUcwV1NNeHdrZE5wTmhBK1Y1MTZTUk1wUUxlMmVLS3JSYVU5UjJCeWxJb284b3lneXZBK1FwYVJKSCtjc3BzcnU3REtZUXVCdFZ2YTRON3ZvV2h1cG9ySklPa0J3RnB2MnlQc3JJRVJKMUZEZWk1UWVSQ0RTTVNzck43bHc4VnQ4NHVNL1RwcFVEcFlJZU85b05CcE1UWGJaM05pZ1ZvKzJ2aDVsYTRqSFNFMGNSZVQ1OEpGaFlxamxFUWM5b3pTV0JQM21OMThBd0JpSks4eGI5VnBjWk9uUVNLVUl0cFFLMjA1OGxoYk9lOGZrNUNUZHlTNkQ0WkJHdlVHZVorUkZqdk9lNjlmTzQyd2ZxZlRXZm5PcmtVZ0lmSkdpVEozNjlERk1zd3RTVVEyTkx5RWx0VEJQUHBobXVIU1pVT1FJVTVMVXVWTHdWa2hGdmRiaXdzVnZjK3JVVTNSYTB5VHBzS3pNOTRFaXo2blhHeWhkQnVGM05najRFTkRhRUVXR05PVlVmMVhNaWxxMFpPOVZHSDJBTUpZRWpXc0xBR2l0U2NOd1VXSnY1MWw2Wk5ReFdhcHhsWmJUZTdhQ29kMXVoOW1aU2VLZXhscEhVUlRZSWpCTWgyVHBKdDRWVzdueE1Ockxqc2daTldnZmVRSnBZbHlXQUhscEpZVWt1SUpRV0JDU3FIMElxUXk5RzY4Um5FTklpYWlHMWdwcE1LYk8ydG9pMTYrZnAvdkVQRVZoeTNZVkhGbWVJNlVpaWd3RWowQnVsYWVFRU5CS0lORDR3ays0aG4vRTExbnk5cUVGL2NDaGJnY0FLQytJcFVpTWtqYzJlNzBqWlM5YW1RRXF3NU9sWmZMQm9iU2lVYStqdGFUVnJHT2R4MW1QMGpXdVhIbVRmbThOV1ZXdTczUThnck5JWldqTlA0SlFCcHYya2NvZ3BNSW1tN2c4UlRjNjVXdTl4V1Y5ZEdPQzJ1UUN5Y28xaEl3Wk9WeWxVeU5SVXJPeWVvdGViNU04eS9HaDFEQ0ZVVWpKWUYzR25ia2lJUVJLYVp5VHFKQ2RtWmx1L242ZVB5VG9CdzRpMzE3V2RLU3AxNk0zMXRjM1BwSGJjdnoxeUxzdHkrUktLMXF2eDhTMUNPOEtncmZsSENTamFEVHFGTVdBSkJsU3J6ZnY4b3FESzZqTkhFZlYycmkwajVRYVFtQnc2enpweGlMZVprVE5MdTJqVHlDa0x0T2x6cUxyRXdoMXEycUsydzdtQXlnVk0raHZzTmxmZ2FESTh4d2Z5dmFSVVJMQXVudEVXQU5vSFJGclRlR0tzMWR1OTNEKzd0YThnNFN4Sk9oMVgrckhCNkFXSFBWMmZIbHBLU2ZQQ3VvMWdTdEc3YnRWTUgwVTZOYVZGcjBZVlhFR2hDakk4M1NMUkx0aXFTRWdsRUhYMmdSWHloOEtIWkd1WGlQYlhDUnFUNkhqRmxKSEJCKzJwOVI1ajFCbGphbDNCVUpzMjhMU1FrWU1rd0diL1RXMGFqSk1rdkorUW1uNXkxU3QyaFdKQ0pYRHBaUkUxUXplNWsvYm9VUWJjNkNMUnNhU29KUGQ3dGJQY1MxaXVKbGZ5YS9kSmhrTWFEWTZiQmNSaCtwL3ZyS01Za2RqcFVDcGNwVDI1bVlmZ2tTSTNSVkNJWGlrTXRYeVhWcHRiek4wdmNQRXlZK2lUQXl5L0FpRHM2WDNMZzFDYVVKcXR3cWR0MUdtTEwwUEZFVkdiM09keUFUU3JKUTBsNkw4OG5oWDN1OUlIYnA4YWZrNkV4bUUxdVJXbnB1ZTd0QnNOckQyNERwS1kwblFodDIrN1ZxaGFlcm85Y0lsWkZtQ2tqT0VVSlJML003RnJ5TG9iZ0pXeTZnSU9EemJuZXlCMHRPNlJ5VGNlMVJVTDBOTVZOWXVlSUszZUp2anNnRTIyY1Q3TWg1N1o5WFJLSlVwQkF5SFEzS3RzRVdweDdSVHgxU0lIZVJrZE84ZXBUU1JpY2o2L25DYTJ2bDJwM1lMbDkvdlIvbUJ4MWdTVk5qdElnbFBvRldMTHRSaTBkdmM3TFhMY2pxMkZEdktxdlp5QktIM0hxUGtkdGR1QUMwMWNSd2haRUJJdnlOeEpFdWRCV2RMYjF6SGdLdWNNRWVlck9CZGpyY0Z3V2JZYklCTmV4QWdhblZ4YWI4a3B5amJPM2JkZjZWZE9reFNqSTRxQjZtTTJTSW8rNW1FdklPZzFmNVVLb3lPRUVKT2JxNzNUK1NwdTNXUUcrakdrcUFiTzJZWVNWbUFDRGRqcmE3ME5udFBXZXQzYXpTRmdCU0N2Q2dvYklFeE5ZSVRJM0VaRUpSVlJvUWQ4VTlGNlhtRHR6bmU1U2c1Mm9lQ2tKcDhzRUt5L0RaUXRYdm9DRk9mb05ZOVFqeTV3R0R4TFpLVnE2aW9mc2ZkVjFjT2tqeXpPRHVzU3ZmSzMwZ3R5eXFuTytwUWdtQ0xvRW9hZkZENE5EM25uUDJEQTd3RkhVK0NIajV4ZXV0bktSVktCaTVldm41K1k3MzNWSkVYcGNXc25Bb2h5a0d4dHNqSnM0eE9xNGwzMnlFZGdXQnljaHFsWXJ4M3BSV3JDRnFhVUU4eFhDZHF6MUM5Q0x5bk1YMENYZXZnYlZrOHJLSUdwajRCVXVMU1B2V3BZL2dpSmUrdlZ1blBFYW9TUUtISkM0dnlwWU1VUWxrcVdKTXg4aDV0N3lPK2hoQ1FTdUdLUUt0UlB6VjFiQWJyL1oxRytzQmdMQW5hYVcvL0xHVWdNcEpXTTc1ODVkcVF6RnJxTlkxUGM1U2lNajJTdkhBTWt5Rkt6ZTQ2bC9PT3FlNDBqZG9FV2JxS2pvRlFBR1ZCaXRBUmVXK1pxRDJEYVhaeDJaRGd5d0I4UEhHSXJVMWo4SGhYZ1BOSVV5c3RzYmliYWFQZWVlOFZ3UVdjTDdiSzY2d3RxTmRyNVJmSzd1NmZMd2xhZnZHVVZNZ293dHIwcEZ6YUlBcnEzVHNKeGhoaktWRVJwTjU2T0NTNjNxSTlNWGs1VGZya1JWYUdkVUxad0FZQjYwcnR6ZjZnVHhDZU1Bb0hCY2p6bk83a05IT3o4NlJwVnUxUFBWQ1c1WTA4KzhIaUJXemFROFVOaERhbEcxWGsrQ0xEMjR6Z0hWSkZxS2lCU3dkc1huMlp2TGVNMVBHdWUxZEs0ajFrR1ZocnNVV0J6WE9jdFJTRlJhbXk0ZTR1d29rcXR1dkxRTDZKWTF6Z1JEWk1DSG1Heis1K0hBU01wUVUxOWZVNy9wM1NiUG5YZ3JWa1NZcWM3SUxhMGZwQndHakYydG9HYVpLamxNTGJrcnpPV1JxTk9vOCsramhYM240ZGJ6M1NtQjFMWmtDYUdGOWs5SzY5Um4zNktLWXhpWkFhVWRWekJ1OEkzdUd5SWNWZ2xheTNSUEMrSXVmMmw2R0VwN0NTd2trb0NoQUJMUlhPRmdRODlYcTkwcHU2Ty93dVJKbVRWMW9SYTgzQXVwTnV0bGJ6alZycTdNRjBsTWFTb0xlL2MzWFh2emVNb2xhRVYrcHRQZWozK2sxeFZKVlZSbFZQRWtJUWFjUG1SbytscFZXT0h6dE1Zb2RsMWtrRXNqemg5S2t6SEQ5Nmxnc1hYNlpqekJhMXkxS2xrcVRCRlF5WExxRk1IV25pTXRRa3dOc0M3MUo4a1JLY1Erb0lvY3ZPejUybGUwS0FkWjQwTGR1UXZYTmwyRXVYbG54eXNrTzlWcU80YzNuZktjOFlBbEtVQVhwck9ScUtjS1RUckYzSXN6MUs2b3daeHBLZ2cySmkxNzlUcThBVTF4c04rZXJtWnU4VFFZRFFrdUJLZ29oUXRteDRIN2k1ZUlzalJ4YTI5SlNnRE5ZM20zVSs4c3dudVhIakNtbWFVS3MxMlJVM0RhRzBtbExqWFlFclVyYk43SGEva2pDRzdUanFxT0M1YkdOV0NubzlRYUNHcU9Lc1FvSnpEdWNjM1c2M1hON3ZhdnZZdm83M25paUswTXJnZ3pRMjg4ZDl6Z1YvUU51VHhuSVBLcnUxWFErbVlxSnVrOWhFRjN2OUhxNndiQXZEbG1iVWgzTDVYRmxaWW1sNW1TaUtjUzVVMVU2Q05FMDRlZklNVDMva2VZckM0bHl4STZpL2U3a1ZVaUYxaE5SeDlZZ1EwbFJPVVNucVVEN0tuNFZRU0NrWURCeFpFWmNOZDVSZG9WSUs4anlqM1dveU9UbUJkUTU1RCtkcTY5clYveW1sVUpIR092ZDQwdStUSmNsZGo0T0FzYlNnZWQ3ZjlXOGh3R3RORkVldmJRNEhaR2xDSk11dVM0Y3ZKeUlLZ1ZRU2x3Y3VYYnJFMU9SVVphMkFJTW5TZ241L2tZVWpwemk5OGhHdVgzK0RFSXF5MTMyMFZkaXlaSGQyaTc1VHVVWVpTeFVpa0NTV1FSSlY1eXRUV0VHQXN3NEJIRDZ5Z0JTUzNPYlZlOXFaaDkrWkVSUDRBRW9iVkQwRzV4NlYxOWJRSTZHSEE0YXhKT2lUajMvOHJ1Y21Kam9NTit3clgzbmgyeVREbEhxblRWRVVaVFpKU29Jc2w4YzRickMwdk16VjY5ZDQ1TXdaZXYwK3d6UXQ5VC9UQkI5ZzRlZ2pGRVhPOHZMYk9GZWdWSlZ2RHlERUtPKzlzeTFFTWZvb1IyVjFXNXJ6M2pFWVdySzhSbVJxQ0JtcXdwTHk5WU5CbjZOSGo5RHRka21UZEV2LzZkM2d2Uzg5ZWFsSnMzQ0VoUk0wR2czY0FlenlIRXVDRHU2eGZBbWxFRnBmeER0c25xR2lTYktpMGxlcVVvdFErazZSaWJsdzhRSVRFeE5FT21KdGZaVWtUYkhXa21VSldaN1Q3TXlSRjlEdkxSRjhVZTB4NzlSMzNPbWhpMHF6cWF5U0d1MTVoNG5BdWdaeHZRYkJsZHVOU2xZblMxSW1KeWM0Y3VRSVJWNVVtYTN2WWdYRnFMcSsxSzRQU3A1Yzl3a2lkVlhoODhIQ1dCTDBxNy83cFhzK1g0dWlpNDE2YlcwNEhIVEZLQ0YvWjMxbkFHMGlzbXpJeXkrL3pJbmpwN0dGSnk5eXNpd2xTMU95UENFdlBIRzlqUStDUE90aGl4UWhmRlZmdEZYTHg2aHlQM2hIQ0tWVDVYMGd6eVhPYXhBMTRsZ2g4UGl3N1RybGVZRlVpak5uemhDWmlDUkpTbVdUNzRZQWdiSm9SSnVJWkNoT0pxc3JYV0R0SUlicXg1S2dUNXg3OUs3bmpER2s2WEQ5dFRldlhCLzBCOTBRQkw1U3B4TWg3Sm9BRWtJZ2poc01rNVFyVnk4ejBlNlFwUmxKT2lUTGM1enpPSmRqQzFzTzN6SjF0TkJZbTVldElHRWtlMU11dDc2U1NYUkZRQWlOOXdybkpWcVA5cTkrSzl3bGhXQTRTRkZhOGVpamo5Q29OMGpTUFpKemRQOVUyU1NwU2JKOFptWmg2c1RDL09HMVVucm5ZR0VzQ2ZyNnBiZnVmbEtBbG9KYTNWd2FESVpQT1ZmSjBsUWFTbmVxdzRjUXRpeVhzeFlwSlVWaHlZdThKSlQxMk1MaGcwUGdrVnFqZ2l3OWYxeFZZQnp3VllSQUNGbnVkWkZJRmFpMnJXWHhzdGhPY2FacFJoUkhuRDE3aGs2bnczQTR2QytOcFVEWmsrV0RKN2YrbVJNbkhubXBzUGJBU1lPUEpVRmJwblhYY3lGQXZSYXgxdWk5MkJ0cy9temhIRXFXdi9CZTN0UFJMdi9JcGlyQzhJUWdzRVVCM2hHODJPcWxMejM5cWk5ZEJrUVFXd1hFaVBJY0k4ZCt0TVI3WDZVbXk1ZmlyQ2N2Q2pxZE5zZVBuNkJXcTVFTWsvMlRzeXBrOXE1c0RhblZhNlJwY3U2MWwxK3Fta3kzRi9wblAvcnAvWjM3QTRpeEpPajg4Zm03bmhOQ0VNVVJpMnVyYnkxZlh5WE5NbHAxZzNNQ29WUmxDZS9HYUd5MkQ0SW9Nb1RRcE5mYnBNaHpSdHFjb3doVFdaay9JbTNscGNPV2N4SzJ1cFJIcmM0QjV6eHBsbEdMWXc0ZlBzejgzRHhDQ05Ja0tUVk43d05sUVpVbk1wcG1zMDQyN0orK2RuTUpkUURiUDhhU29GZHVMTjd6ZVdNTVFvblh2TTBaOXZwMFc3TllrWmRUMzk3aDcxWnlxeVNVSUZDTG0wUTZvdGZmb05mdmsrZDUxWWxabHJ4N0gzWVhjbFRacUsxbnFuMnB0UTViT0l3eHpCMmFaWFptaGxhclRaN25XR2Z2bTV3N3Iyc2lneFFhYThWamgwOUlwcVpqOHZ4Z2hackdrcUFmZmViWmV6N2ZiRGE1ZnUzeTYyKzhjZkhtb045ZmdMbXFhZTdlKzdJN2pZMUhFR3dwaGRPZG5LYlY2TERaN3pFY0RzbXlqTUxhTGV1NHMrQTVCRmVKNTVZblZWclNxTmRwemJicGREbzBHdzI4RHlSSlVuNVpSbXYvL2NiVkEyVkV3U2lRaHVERjZkN2E4REEydTFFVUR5M29BOGVWeTVmdStid3hoc0dnTjR5TXVkSHY5eGRLTWRzcTFMU0hwVytVUnJUZUl6MllLT2JRVElPOHlFbVNoS3pJeXJJNFcrYk9ReWdWblFXaTFLRlhraWlLaU9PWVJyMkowaHBuSFdtYU1ScXFzUHRpOTRmUmZZcXFhS1FvYkZ2cDlvbUZJeWR2cE9uQjh1VEhrcUEzYjEyNzUvUGVlNXF0T3MxbSs2M05qZDdIWExDSWlrRDNvdWV1S3FFN25nOUE3aXlpR21QWWJMWG9xSWx5VHBJUGVGL05TeEpsQkV0S1ZlYklxMktQb3JEWVVXdUtvT3A3M3kwS3NWOXNwVndGZUh6WlQyWGlTakt5Y2ZMSWtkTXZEQWJEKzcvQUJ4QmpTZEJISHpsN3orZUZGRVJHYytQdGpaZjdnejQyRktVaXNyWDN0RmlqUHZhN0JXT3Izd09sTnFqQU9sOU5pZHRCc2lySDd3TzRxa1N1R0hsVWdsMVpvZmRLcmx1SVFCRFZMQ1l2a0NnNm5RNXJhMHVuL3NrLy9VZUVJTGN1Kzl4elAvU2VYUE5CWWl3SnVyeTQ4WTYvaTJORHZhWmYzK3dQeUxPQ1NNZWxPYnpIRkxvN0pScnZ4S2lYdmp3MjNHWDl5c0VMWVRmNWQ3em1lOFhXRjJYcmROVVhxb29VQkYvV2hpcWxRSWd6aCtiYWFLTVBsQ1RqV0JLMDMrKy80Kyt5VENNbHIzbFhNQmhrMUticVlFYzV4djBSWi9mU0wrNjVqUlZ5VDl2Yjl4U2pLSUlMSG1NaWxJcnd4ZkJVcHgwUjF3enVBSTFKSEV1Q3VuZVl6Z2FBVXBoNjdaSjM3dHFnUHp4NjZOQTBJcXNjK1oweTg5czFkTjhUN3VjVVBnU2lhakR0TUUwcHMxNzMvdkxjOCtscWtva1hBV1UwVW12eW5ETzlHMFc5VUNRSFNUTjBMQXVXYTRSM2ZnUkhNOUpKOE9HVndTQkJtVkxzYTJkRkUwcnV5czEvUHlGRXVTOVdTakhSYnRHb3hRZ2d5VEt1THk1am5kK2FTbmYzYSs5OXpoQUFXVHArU21xMGpralMvTGlYK25SOVlwYW9PVW5VblB3K3ZhUDNGMk5KMEZZOWZzZEhNNDdvVHJTcHhmRXI2MnNiNWZ5am5SWHFVbXlUOHowME5LRnFLekZhRVJsTnQ5UGFJbVJlV1BLaTRLdmZlcFdMMTI2eU1EdkYrYmR2OFAvOHk5OWhNRXlveDlGM3Z3Q2pQYk9vQ2t2S1BhaVFFaWsxVWhpeUlqazd0S3NrZHAzRXJyOTNiKzRCWWl5WCtNRjNhUkNMWTAwVTY3ZjZtMzJLSkVQcVNzakJDL0RicWNuN2NheEg4Y3hSbUtuVGF1SzlwemNZNHB4RENzMTZyODhmZnVjTm5QY2thYzVyRjYvd281OThscGRlTzgvczFDU2ZmZjVaNW1lbUtLeWpQMHc0ZkdobXo5Y1BBZERWeHRkNWhIUW9wZkZXUTJ3Zm5aNmR3SHNPVE1wekxBazZIS2J2K3Z1aTBHZ3RYeHVtQ1ZtZVVvc05ia3VKT096c1Fkc3pSaGF5V2EvaHZTZkxDM3dJdkhiaENuRmtlT3owY2I3NnJkYzRmK1U2ajU0OHlyZmZ1RWhlV0tRVWZPVFIwenh5NGdpTHk2c3NyVzd3K3NXcmJQWUdSTWJRR3lRb3RjK0Z6SWV0N0ZnSVlJd3VCNDJKK056c3pHbVFBdThPUmxYVFdCSzAwN3A3R3R0T1JKRWhHell1ci9lV2Jab1h1bEZ2VkgvUVVkeHovOWZVcWxUditPMnZmcE1zTC9qY3B6OUtNemE4OE5LclNDSDR5TGt6MU9PSXQ5Nit6bk9QbitXdi9jcWY1bDkvK2V0ODQrVTMrWkZQUHNQczFBUVRyU2F2WFh5YnYvZnIvN3JTV1JLc2J3NUtKNGw5N0RoMmxOUTU3OUJLMGU2MHNObjZzVGZlL0JvbU1uZ2ZlUDRIUHJmL04vb0J3MWp1UWExOTkwZWVlZUphZlZFSWY2dmY3NWR4UXI2MzZHUmtOTU1rNDl0dlhPVDNYM3laUzlkdU1qM1o0ZWo4TEwxaHdzcjZCb2VtdThUR3NON3IwMnpVV0pqcGtoY0ZiOTlZeFB0QXMxRW56eTNQUFhHV1gvNVRQOG54dzRlNHZyaEVsaGYzVnp4U1ZVK1pPRVpyUStIY01XY2xVdGFBdmUxclArZ1lTNEtHT0huWGg0c0dtSlpOaGVMeTVzWmdxOTRUMk9xeTNDKzBWcXh1OUppYWFQUDRtUk84OE5LcjlJY3BKdzdQWWEyak4waVlhRFZwTmVxc3JHK3kwUnN5MFc2aHRXWnBkWU1RQXUxbW5VRGc2TndNejU0N3pmek1GQmV1M21COXMxZU80OTRMZklBZGdYZ3ZRVWNHWXlLY3N5ZXlQQndWc2trZ2ZwZVRqQS9Ha3FDTld1ZTdQcHFOU1pUV2J3MEdQWUxiV1JKM2Y4NkRFSkplZjBnY0dYN2lCei9HOHRvbTMzcjlBa2ZuWjhtS2d0NWd5T0c1YVJyMUd2MUJRcFlYdEJwMWFwSGgwdlZiSkduT1RIZUMyQmd1WGJ2RjdkVjFqczdQOGdQUFBZVVFZdThkbWVVM3JQcTVlanUrcktCQzZvYVc5bXpkREtqcmQ5K25qd3ZHY2crYTIrK1dvaFJvTFRGR2ZhdElCMlVwbkpjSTVVRDYwdXpzRTFLVTRaM2JLK3Q4OFlVWEFmajZ5Mjl5NnVnOHM5MEp2dkxpSzZSNXpzM2J5eng5N2pSQ2xHblhVMGNYR0NRcGc2UjBodjdFNTM2UU9ETGNXbDVqYnFiTG1lT0gyZXdQU0xPaTZncjlMcmp6RU9kQkJZUlNCS0ZKVXA0c2JQUGZmWmNzN3RoZ0xBbTZlTzNHZHoxR0s0VkJmcWZzMXN5UVVoR0VLN013OS9IWEN5R3cwUnZndk9mRTRUa2VPMzJNZi9iRnIvQUgzM3Fkbi8zc3AvbS8vOFZ2OCt0ZitEM09Iai9DSjU0NlI1WVhaSG5CWno3MkpNNlZCY3l0WnAyWlJ5WlkzK3lUcERsQ2xOMmRZcVJlZXorb21sZVZqcEJTWWIxL0xNUjZ4Mmp3OGNaWUV2VEk0WVh2ZWt3Y1JkeTZ2WGpoMHR0TDZUQkphaE1URTFodjcydUZsMUtTRlFWdlhibk85R1Nibi83aFR6SklNamI3cFZXY241M2l6Lzd4ejlFYkpCeVpuMEVDUlZHT3VrR1Vpc205L29EdnZIbUpkclBPVTQrY0trdnlyT1A4MnplWW5talRhdGJKQ250ZlBQWE9vNFFtaXVwNDMzOXNZM0dGS0RvWVR0SllFclNYZlhmZG9jUVZXUHdWYjkzNUxFMmZVdE5kYk01SXJHNS9vYVlRU05LTVR6M3pPTjFPaTlzcjY3Z1ErT3p6eitLOVkzMnpUM2VpeGV6VUJFbFdFRVdHbTh0cmRKcDFKanR0UWdqY3VMM0NzQ3BjZnVGYnI5SnExQ0VFcmkwdTB4c01lZUxNaVdyRzAvNi9RVDRFdERHWUtLSklPYmV5M0dzR0h3LzJmYUlQSU1hU29Cc3I3MXpOTkVLWjdYRUV3cVhCY1BEVUtCaCtQOHY3cVBqaTJjZlBFQnZEeWthUFlaSVNhWVh6bmpneVdPdklDNHRXcGJkL2UyV05WOTY2ek1rajh6eHg1amdUN1NhOVlVS3pYdVBhN1dYYWpUcEpYdkQ0NmVNc3JXMXdlMldOdVptcHU2UVg5d0x2UFpIV0dCT3hzZXFQemM3bzQ0Y1dhcS90KzBRZlFJd2xRZHNUZDdjZDM0blJ2dTcyMHVyMVhxOVhGdmxXK2t6NzNmQUpTbjJuSk0xNTZiVUxYTHg2aytlZU9MdTFURWRHa3hVRjNudjZnNFNOL29CV284NUV1OGxHZjhEVnhTWG1acnE4ZXVFS3A0N09NOWxwc3J5MnlhbWpDM3oxcFZjNWZHaWFROU5kN1AxcUs0VlNKVTlwalVlZ05hY2JrWDFJMEFjRnR3ZHhBbEVSTWpieXJlRndpUFhsdWk2NDM0YTFnUE9laVhhVFRydUpENEZydDVZeFJuTjdkWTFIVGh4RkNzbnJsNjd5aWFmT1VhL0hpS1ZWbEpUY1hsbm4rUHdoSGoxNWxGYWp0bFZlMTJrMWVQNlp4ekNtaklGNmYzZFI5Rjd2RFVCcFJkU1FaRU45ZHZueXdZaURqaVZCNisvUXBia0xBU0tsYWRYamkwazZ4Qlo1bWEwSi9yNDg1aERLWVAvWkUwZkk4b0lyMTI5eCt0aGhJcU5aV2x0bmRXT1R6ZjZRTThjT2MrWEdJdDFPbTI2blJXUU1QZ1FHU2NyY3pCVFdXb3pXVEU5T01FaFNHdlZhT1hsdVI4Zm8vbSt1S3IwekdoazBYdnBUVEh6M2JkQTRZQ3dKR3JXKyt4SVBFTmRpbW9QazR2ck5WZklpbzFtdlYzMUs5eDhrTEtxbC9OQlVsODMrZ05XTlBzODlkcGJydDVkcE5lbzg5ZWdwTnZ0RHZQZDBXaU5KUkVHV0Z5Z2x5NkM4OXpqdmtVSnNqVEg4WHU1cFZPdXFaRG1GdWNpR3h4NDU4OUg3UHQ4SENXTkowTjRlUmJLR3poT2t2T0FLZXlQcER3KzNHNDN0S1hUM2lWRkdTQ2xGTFRJY25TK28xMktlT0hNY0tTWDlZVXBzZEhWc3RrVThLZS9QUTk4cnJQTm9GUkdaaUdJNE9McTI4bkRLeHdORGx1eXR0VllxU1ZIa2c2S3dGd2VENFdFcDVQNnFodTZCd3BVQmR3RHJISEhabDA1UmJIdmZJNi8vdmVya2ZEY0lSdFYzNVlBdlkyS3Nra2RmZWZtVjlrLzg5Qy8wdnU4MzhIM0dXQkwwN0psN3R4M2ZDYVVWcmlpNGRYUDFqWTJOemMrQS9KNkw2SGN1eTFBMnJqMW9TQm53akFZMUtJYkRmRzZ5WTQ0QXJ6L29lL3RlTVpZRVBYbjg1SjZPVTBxaHBPQWJmL2pTcTJ1cjYxZ0hTTVZvOHNaQlFDbWxFeEErSUFsWVd6QVlKS3JkS2VaNVNOQUhnMi8remhmMmZHek5LS0xnWGgrNm5NSVh5RWpqODR6M3FuZjlnV05IYllIM2dUVEpHQTU3YkN3MXVnLzR6dDRUakNWQm8rN2VQL3NvanBnby9PVzFHeXRrZVVxejNpQ3Y1aC9KdTBaZWp4OUdmbGV0RmpQbzl4a00rdVJwenBwM0I2TGViaXpyUWZPdzkwZmlBaVl5eTlJWG0ra2dRZTRZTWpqdTVJU3l5bFVJcU1VUnQ1ZHZNVXdIYks1dkZQVjZkUDVCMzl0N2diRzBvR214OTdGcWhmY0VLVGFkdFJ1OXRZM08zT3hzTmY5Z1BKYjRYVXFONFk0SVJQV0x5WWsydDI3ZjR2cjFLMlRESHF2THkxOTkvdm1QM1VNbmZmd3dsZ1E5ZCt6RW5vODF4cEJtYVhyKzlVdTNlaHVieDc2UHQvV2VZWmNtVXhEVjJNU3EwS1dTTy9VK0lKV2syNTVnTU5qa085LzVGa0lvdnZIQ1MweE1OSDREOCs2TmhlT0NzU1RveE95aFBSOXJqS0ZSWkVTMTJ2WCtjUGdKNEh1T2hYNWZFVVpDWmFMVW5CZmJRNzlFRlVaU1VoUEhNZFo1cnJ4OWhUZlB2NHFwYTE3OHlrdGN1M3oxcmMvOWxYLy83NGI5dGpKL1FER1dCRDEvOVEvMmRYeXRab2dhK2xwU0ZIaGZwaDQvYUJUZEhpQXJVTEpVckZOS29yVXF1d0VJRkhuQk1Fa29pajZEL29Eck4yNnh0ckZNWEJPODhwVnY4YnYvNW92OHlWLzhtYjl3K3BGSHM3V1ZkMVlBSENlTUpVRzkzVnN1ZmdSWFJEUmJyUmVYbC9za2FVcGtURGttOFgzYWhvWWRGWDVsNlY0bG5WaVZ5Q21wVUZwdjZabFpXMURrR2NOaHhtQTRxTHp6VW9ZOHlSSmNzS1JKU3BZVTlGYjZmUDJGYjNCNThTMysxSTk5OWovOHpBOTk1dmZlZVBXTjhmUis3NEd4SkdpZTc3RkZkd1FSMGUyMGYvZkdsUnR1ZlgxREhUdDJwQ1RvZTR4ZHFmWVFTZzJsSUtvbVBvM1NFcVAxMXNqdHdscXlOS1dYYkRJWURPbjFlaVRwa0RSTjZQZjZKRWxDTWh6U0h3eEloZ25KWU1qazVBUkY0Vmk2dHN6NTh4Zlp5RmNBc2wvNHFaLytzNy95bi96S1AzMzFwZS9RNjIxUWl4NlcyejB3Mkh4L010ZmVaU2dwTDRvUXZuRCsvSVdmT25ueU9FcEtyUGRicS8xK25Ib3B5eVU1akViT1ZONjFFT1dTckpVdUI5QlcrMGZ2TE1Na3BUOUk2UFUyNmZmSzZTSERFZmtHUTliWDErbHQ5b0d3TmI4K1NLalZhd2dFRSswMlIrYVBoSC84VC80UmcyUWdnTFZKNnQvKzBZOS8raC8rL0ovNnlOOS8rZ2VmUzVjWEE4UGhFSzNObGxqRnVHTXNDZHJkUjZCK2hHYXpRWmJaZi9DMXI3LzJVNjhlUHNyVHp6ekoyc29TQkU5QWZ0YytwZEZRcjFKTlRxTFV0aldVVXVKOElNc0swalJscmI5R3IxOWFQZXN5a21HUC9tREFvRGRrWTJPVExFMFpEcEt0MXlxbG1KN3RNajkvQ0pzSG5ITWNXcGhCbUZMUzV2VEprelFiRFJxdGpvaVYvRCtXM243cmYya2ZuYjUyb2p1Vm5IamtMSWZtQWh2ckt3ejd6WGVVY2h4WGpDVkIvOGpuL3VpK1h6TTdOOGNYLy9XLytQVi85enRmL2g5ZWVPRnJSM1dzK2NoVDUraXRyWk9rV1psVkNwUnlqWlJFVkZwdUZXQVlFNVVUM3J5anNEbFpsck8ydXNad09HUTRURWl6aE9GZ1NIOHdaR050blg1dlFESk1HUTU3S0NNeEpxSmVhekF4TVVHcjBXSm1XdEx1dEppYm4rUFEzQXpUTTEzaVdvMjNyMXd2QjNVRmo2M3FQQ1dHZk9oSmgwdjhCMy9wRjc2NnRuTHJyUzk5NWV0c1hyL042dEk2V2tQalVIdHZmZlZqaHJFazZNV3Z2YkR2MTF5UFk4ekdlbko4WWZwdlhsMWUvVHUvLzVVdnM3cXl4Rk9QUDgzVTlEUXVXTHdMRU1vMXZ5eGhjNlJaU3IvZll6aE02RzBPNlBVMnlmT1Vmbi9BeHNZR3cwRlNrYkdQVktvY1FkT28wMm8xcWRValRwMDV6dUhEaCtsMEp2Q2hMT2FJb2dpcERZVXQ2RTVNY09USVFyWGZ6RXJybXFRWWJYQ3FUTVgyK3dPYWNRdXBBeXVMUzJkTUxlWmp6ejdEQmZjTk5uc2J6TXcyN2t2T1p4d3dsZ1Q5OGgvc242RGVPVHFUWFU2Y08vTjNMMTM5eWsrdkxlVS84NnB6WEw5Mm15T0g1NWljNktDTndqbUhMWExTTkdXWUp1UjVUcG9rM0xweGk4MzFmaldHeHFLMW9UTXhRV3dpcGs5TU1Ublp4VG1MRURBNU5VbXRIaU9rNE1TSlU4ek9ISUxnV2J4OW13c1hMcElYRGtKYVd1TzBJSTVyS0ZWNjgzRk5rYVNPSUExQ1Nyd3ZzSzVVSGZGTzRpU25zdlVOR3JVbVQzMzYwMXkvdm9xUXQzRFdFWHdnU3pPR2d5SCtZVi84ZzBPaTcrUEQxN0E0VEpob3RmanNEejMvcy8vbXQzNzc3MTI0ZWV1WDV3K2ZZUEhHTFpxdE9sRnNrRW9Rdk1lNWd2V1ZOYTVldklGVWlwTm5UbkRpNUhHMGtXWHd2MWxqWW5LQytZVUZEaDJhcGQyZTVQYmliYTVkdndZK1lKMGpTMU51M3JpRlFHM05UcEpTNHIxSEtvSHdFaC9Lb1dER0dJUUVLVTAxSEt6VUFBMHVZSU1ERFM0RnFjempub2hldjBBWnpkemhCV3pSd1JZcFVWeXdjSFNCemt6M29aUDBJREhWYU43M2E2MEx6QzhzOE1jLzl3Ti8vdmUrL3ZJL2ZQbVZWLytXMGMwbkJCSVRTYXh6cElPTXQyNjh5ZHpNREwvd2k3OUlaMktLSjU1K0RDOEtOalkyaUtJWWF5MkRRUit0Tk43QjB1SXlHK3M5K3IwaFdvOW1jVXVjdFhqdkVBaU1NZFZjKzdMUVNFcHd6bExZbklZc3EvU1ZpZ2xlbDdGVDd4Q0ZKVTh0WG9JMFFKQkg4R0ZDQ0w4UnJDZTNHYUNSb29XUWxrTUxDNldXNlVPRjVRZUh2YlFkdnhOQ2dMWE5IbkZzK0lFZi9mUVhtb2N1UFhuNWxUZWYzdHpZK0ptVkc3M24xemMzcG9XUXZpMzAxVS8vNE1mZG4vK1AvdHd2RFRkenRicTh4dVZMbDFsZjc2Rk5xV3ppcktXM21kS291M0wrZkJTaHBDb3RwSlFnSklXMVpTZW5NU2lwTU1Zd0hBNHJDMWNPcDdXRjNaSVZOMFp2OVMrVnJkT1NQTS94MXFJVTRKaFRYcDVSM3IrNFBaUEpWUS93TnVNZ0RVTWNTNEorVHhCbDIwYWVXMjZ0M0tiV2JEQjNlUEk3UC9WblB2RWRrYllJT2J4MTVTS25uempETXg5NW5xdHZYVG81R0lZZjF0b1ExK0pxZUd4WnNoZDhlUjdueW5pcVVncXBGTTZWU1FBcEJiWWlhQlJGQ0NHMmV1QjN3bHBieFZWRFNXU3Q4ZFVJUmlFRU5zMndhWTZ1eHlBRXFxN1BCcytMWTFvdHVTOGMvSGY0TGxCS1V1UUZTWktSREhLVU5relB6REljWmlnZjA5QjF2QzIrTHNvb1BIRmRvclZBeXJKelJHcUJkVGsrbEJMZVNtdU1LUWRwbFN0c2FSWHpZcnZWT1lxaXV3S3VvMVptQW1pdE1WcHZMZEVDZ2JlT3doWWdaTGs3RmVxVUN4cVBldGZIUWNDSHo0TGVBd0tCZDJVeHhuSi9oU09INTNuazdDeEZjUU1Sb3F0Q1JDQThPbzZSU3VHZFI0Z3lSdXE5eFh1TFVoRmFTYUxJTUJoc0s0U0VFQ2p5Zk92bmNxbVhXMHU0bEpLaUtIRE9WUVVpQ20wTWZwaVVTN29RZUJuSXF6bWhQaWhrOEk4cU52Z3cySmVIQkswZ3BDQWRwalFiSGY3SVQzd09IM0kyQmtNaUdWM1NPbUFGYUJtaGxTYXpKZUZFMWVGWkZKWW9pb0Y3TCtGRlVXd3Q0VnBydE5ZVVJZRlNDaUhFMWo1VmF3MWIyNERLZ2twQVN3cnJTdVZ2NzlGYW5lM2xrdHlHVXVMeEFPUGdmd1gzQUNFRVdacGlJc1h4VTBjSlFESndDRytBY0Y1SUQ5WWhrV2h0ZG5uSTN2dGRzalhHbUsxaWtORzVyYlZiYzVWR0JOMzVlKzhjUmJVTkVFQmtURmtQT2hxYUhEeEZuaE1vSzZCODBJOTZLMXV1S0hEV3ZlUGpJT0JEYmtITEpiYmYzOFJaeitPZmVvNVdzMEV5R0JEVnlzR2VVc2kzWFJFV1JjR2NrcktjSnJ5RFhIY3U0VkVVb1ZUcHlXODVPZGJpbkVOclhWWTJHYk9ib042VDM3a04yQW9WQ1VRUU9HdkxRUkF5WUQzelJ1bW5BL29GY2NCdHpJZVdvS1hGQ3l3dExUTTlNOC9Ibi9saG1xWkZiN1hQMWdodUJFcTRuaEx1cXBCNmpudDQ0VUtJYlNjSHFySTZqY3RLNlJrcHk5aHFVUlJsTUY0SWpMNzdZNzl6RzZDVXFyeDdnUkFTNnl6V0ZraGxDTTVUait2bnBwcHpMNGhxc094QnhWZ1M5SHVKUVk5ZWF2T01ZWC9JcVZOSCtORWYrZ3dURXhOc3JLMWk5RzZMSlBDRTRDOEUrTGdMdTVmd2tZVWNPVG1qeXFUSUdMSXFHQzlFYWYzeW9xQzVZeHV3czJsdko4bTNhMGMxZVo0alpkbUg2cHluS0FwcUpzWVdBaW5sNDUxT0E2SDAxbWpIZzRpeEpHaVczMy9MdHc4QmdhY0lnYm1qaHpuOTJEbUNzTHg5N2RJOVM5VzhkelRyM2F2S0NMendtS3JXOGw1THVGS3FIQ2hyZHU5VFF3allxa0I2dElUdkpMbXNDRG9LNkpkRGFUWERIVFduUHRqS3lncWtNdGc4Zlh6eDI5OUVTZjNPOXZPVFAzTGZuOU1IQldOSjBDZlBQbmJmcncyaEV0bUtIeWVLNGxMNEt5dm8xcWJ1ZFhCSldxTXZwc0ZDMEZ0T1RsWXQ0YU1aUjlaYTRyaXNZdGYzV01MelBMOHJHTzhxNTBwSXVYV09ld2IwcTdLN1hlZUk0MGNXQnhtYm15djNqQndjRkl3bFFVOCtzZmUyNDNzaGhFRHdZV3ZmK0c0d1JyRzB1djc2WUtPb0t1YjFybno2aUtERmptRDhkOXNHaklMeFJiV0VReGtOY0ZYMmFIU09rVmNQSUlLZzhJNmdBUUZlcUhPaDJ6b25vdkFHK2lGQlAxQzRkT1A5azE4UFdGUm9YVEZtcXJBMkdDSHV2WVNQaGgrTW5CeDVSekIrWjhxekxJQysyNU12N3JVTklDQ290aEpaanZjZXBSWFdGV0txUFhtaU5USHh4amFORHg3R2txRDk5ZmV2MXRGN2d6SCs3VmJMdnUyRVBpTUVtR29aM3RrblV1VDVMazllVjA0T2JNZENpNktnVnF2ZEZXb2FZZWNTUGpxSEhXMERFTGpDWXJNY1hZc1JKa0wwZWd2TjFWVzR4NWJpb0dBczM1a08reC9WY3I4SUJMUVRGaC9lRElnenU2MWJ1VDBjT1RraldlL1JObURuUG5Wa0ljdnRaTUJVTWRFUjdoV3UwbmQ2OHRaaHN4d1IxU3BsRVhXaTBCb09TTzNudlRDV0JHM1g2dS96RlFOTytOY2cvTlNJWEtQQzQ1R1RZNjNGV1l1S290SUxqNks3UGZrZDJ3QmpETElLeHQ4cm9MOFZEU2d2ai9BUXJNUG1CVUVJS0J5aVZqc3ltSnNsQkhsZ0YvbXhKS2lydmQ4OTN3RkNlRk9LVXBWRVZrSUxMczlBN0hhVVJwNTg5RTRCL1IyZXZGWnF5ekdTc3F3ZDNSWFFONGF0ZktjcUJTQ0tJaStEdVZJaVhIaWlqcXY2N3c5bXNINDhDYnEwOHI1ZVR6aUw2RXhjcFJYamMxOVdIQ2xERmlwUEhvSHp1ejE1ZlE5UGZtUWhSNTc4cUdoRXluTDZoeTJLZXdiMFE2aksreEFVb1VCSWh3c1NpMzdHRnYyRkxCdmNQR2p0eGlPTUowRWZRSzJqOUx3dEViaFFMdXNtTW9URVFkQlZFWE1ncjlLVndDNEZrWkdGelBPOGRKU3FzcjBvaXVqMysyWGNOT3dPZSszTXlZK3NvNkFpdVMxQXhYaG95MExNMWF5NUtRNWd5ekdNS1VIdFZQdDl2WjRQZ1ZqS2E5cTVGU3YwdE5DS21sRm9KN2ZHWVkrVzhCRkJSN1dkbzlEUnlGSHkza05WWk5MdGR1bjMrMlJaUmdpQmlZa0oycTFXdWV6RGRrNitLR3RCUlZXaG4yZVdXck5HVVZobXBpZTYzVzZiNG9CVUw5MkpzU1RvNU9COW5xSVdBa0t3bnJXbWJ3UXBwNE9FMkdoVVVMaWRTM2hSbEswYVVoSkZFZlZHZzhIU0VsRVVrZWM1N1hhYldxMkdjMlVQVTYxVzQ5aXhZMnhzYktDVW90dnRic1ZNUjNuOWtTZXZVT1dFa2R5UjV3V05UaUFpb3A4TVQvZlN6WDk3VUNzbng1S2cvZXg5dGhZaEVDVEVrZ3NLbmc0aElFMU0wR0pYSU4wNWgzV09xSEorWm1kbUlBUUdnd0dkVG9lNXVia3RBZ0piNmRHRmhZV3RmOXNkdGFXanZlcE9SVnZ2eTNncG9td3o4Ymw2cXA4SGhIem9KSDFnNEtiZjN5VStBRklFcFBEbktSeEJDMVFVb1l6QjVydHo4aU5QZmxRaHY3Q3dRSjduV3c3UFRrY0t3RGxYalV0azZ6eFExUXhVbHRoNWp3N2J4MU45SVh3UWdIaEsrclJTM2o5NCs5Q3hKT2h3Yy9WOXY2YnpGdG1jdVdCVW5keGFkR1JRVVVSSUU2aGFOM2JtNUVmL0hwWFBqU3JxOTZPTjc3MHZ5d0EzTmtpU3N0VzVYcTh6MGVuZ2NuQXVvSTA2WGFNdXZQZGhYSFQzOTRPeEpLamNlUDhkZ2xCWUVNV3JvaVBBQmtSVkc3cGJFalRzY3BSR3o5MnZpTUpJY2VUWXNXT3NyYTBoaEdDaVBZR0pJMnlsRksyRU9DYU5PbUc5dVB5UW9COFF6TmJmNzB3U2lDakNCbmZSQ1pzZ1JEMDRUNlRVcmxWVkNGR0tMRlFacHZkQzNXTlVJem8vUDE4NllubTV6eFZHRWF4SFNtbnlORHc2NkEwdkh4UzVtNTBZUzRMV2ErLy9iVXN2c1hGMHE2ZkNJbzZUVUJXTnNLMENFa0tweWZSZTQ2NTlhcFZWQ2w0Z3BTWk5zOW5ieTBzWWN6QUV3M1ppTEFuNlJwcTg3OWYwSWFEeTFDN0VqU3RheGlldER6UmJMWnFOQmh1Ym0xdTUrVTY3dmN0VGYxY0lDSzZVWjc0ejBGNTY1ZHZxelFEYmlYa0pVdUp6UjU0N1JBaCtlcktGVkdQNTUzeFhqT1U3aXRUN3Y5ZnlBWlFFSWNQcjB2TWozbnEwVXN3dkxHejFEM1U2SGJyZDdpNXI5NjRZVmVzSnR2VTl3eWhxQUFTSFJ5Q0UyaHAvRzVBRUp4RGVjL1RZWWE1ZWVvdTNyMTI3OXRnVFowbVRnekVqZmlmR2txQ3pzNGNmeUhWOUNBUnZYd0dQa0dXR1Iydk40Y09IeTBMaXFoUFRWM0xoZTRLVVpZeTk2cFVhTWRSNURWS2pxdnJUV3JPR2lTSk1IR056UzlwUCtPWWZ2TUFmL3NIdi9kTlAvdENuZmk5ekVma0JiSjRiUzRJT2t0NER1YTRQbnBxSnY2blluays0czAyanNFVnBGZS94V3JFMW9Lc2FZRnRWS1hra09JbVNFRWVhS0RiRXRRaWhZNndMK0R4aDZkWnQzbnpsVlpKa3lOTGlJb1ArNFBiRytzYUY3M3pqbS8vcXgzN21CLzdIWXljbVdGcDhlMnpHTys0SFkwbFFFeDdNSHlJRWlRcmhOYWxaRlVGTVNTSEFPMEtRMnh0RndiWTQyQTR2dnB3Y0Y5QktJclVtaW1KcWpSaGxGTjdEY05CbmRYbVo1Y1ZsaHYwK1M4dkxZV1ZwK2VyNjZzck5qYlgxNjBxbzd3VHl0NHpKMzh3TDgrcmhvd3VEei83a1ozamkyU2RJa3g1SytZY0UvYUFnZXBDMzdjS0tVLzY4VVBxVDNndUUwQVJmN2ptRkR5QTFubElCejJoRkZOV28xV3RFdXB3V054Z09HUFEydVhIaktqZXUzbUw1OWkyL3ZyNzY1dXJ5MnVzMlM2OFlyZDY0dmJoOGVlRkU5OExNYlBleUo4MmZlLzV4bm5qcUkxeTVlSjZaUXhHWExtM1NiTlJaWDEybnY5bG5lcWFPRUFjdnhBUmpTdER2eHhDdXZTSUVpNG5NN3pZYkU1OU1rNExnTEtZV1U2dkhSRlU3c1pDQ1lYL0ErdG9hbHk1Y1lQbldNaXMzbHpaWDFsWXZac1h3eFRUZHZPQ1N3U1hsN2RYT3dwSEZwWnZYTHlsZHMrZWVmSlREeCthNCtOWjFUcHc3eE94MGx6ZGZ1OEgwb1dtODgvUTNCeWlka2c1VG9pbzd0YVZoZTBBeGxnU051Kzl6TlZPRkVBUnh6ZEhmN1AvcXhXL2YrcFhaaGJudVZIZUNmci9IaFRmZVlQbldNb3VMdDF3eUdOeklrdUVyU1Q1OG1lQXZMdDlhL3JhMzlvM1cxT1N5am1GaHRrdTNlWlFqQzExYUowL3cyamUvVGIrWDArcTB5ZEtDTENzWTlCSnFKdHFxSVMxRmNnOHdFOThCWTBuUTVkVUhWL3ZvZzZMVHR0Y0dneXVmK3ZvLy8rb3ZKWVBOSXh0cnZYNmFEbDRQUVZ4dXRkdFg4aXk5WEl0ME1qVTl3WE9mK2podlgzcTduT0RSYm5QdDhtVW1KNXVJQXZyOWhHSjFneVJKS1hLSGR3NHdCOWtnN2h2L1A0ZG5jYlZ5VlJXZkFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMSIsIkZJRE9fMl8xX1BSRSJdLCJleHRlbnNpb25zIjpbImhtYWMtc2VjcmV0IiwiY3JlZFByb3RlY3QiXSwiYWFndWlkIjoiNTBjYmYxNWEyMzhjNDQ1NzhmMTY4MTJjNDNiZjNjNDkiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJub01jR2FQZXJtaXNzaW9uc1dpdGhDbGllbnRQaW4iOmZhbHNlLCJsYXJnZUJsb2JzIjpmYWxzZSwiYXV0aG5yQ2ZnIjpmYWxzZSwidXZBY2ZnIjpmYWxzZSwiY3JlZE1nbXQiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjpmYWxzZSwibWFrZUNyZWRVdk5vdFJxZCI6ZmFsc2UsImFsd2F5c1V2IjpmYWxzZX0sIm1heE1zZ1NpemUiOjE1MDAsInBpblV2QXV0aFByb3RvY29scyI6WzEsMl0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6MTAsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTkyLCJ0cmFuc3BvcnRzIjpbInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XSwiZm9yY2VQSU5DaGFuZ2UiOmZhbHNlLCJtaW5QSU5MZW5ndGgiOjQsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjoxMCwidXZNb2RhbGl0eSI6Mn19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0wOS0wNSJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjQtMDktMDUifSx7ImFhZ3VpZCI6ImVlN2ZhMWUwLTk1MzktNDMyZi1iZDQzLTljMmZjNmQ0ZjMxMSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiZWU3ZmExZTAtOTUzOS00MzJmLWJkNDMtOWMyZmM2ZDRmMzExIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlZlcmlNYXJrIE5GQysgVVNCLUMgU2VjdXJpdHkgS2V5In0sImRlc2NyaXB0aW9uIjoiVmVyaU1hcmsgTkZDKyBVU0ItQyBTZWN1cml0eSBLZXkiLCJhbHRlcm5hdGl2ZURlc2NyaXB0aW9ucyI6eyJlbi1VUyI6IlZlcmlNYXJrIE5GQysgVVNCLUMgU2VjdXJpdHkgS2V5In0sImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyNjIxNDUsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfSx7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDM4NHIxX2VjZHNhX3NoYTM4NF9yYXciLCJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQnREQ0NBVnFnQXdJQkFnSUpBSzI5MHNoN3FpUzlNQW9HQ0NxR1NNNDlCQU1DTURzeElEQWVCZ05WQkFNTUYwZHZWSEoxYzNRZ1JrbEVUeklnVW05dmRDQkRRU0F6TVJjd0ZRWURWUVFLREE1SGIxUnlkWE4wU1VRZ1NXNWpMakFnRncweU5UQTVNVFl3TmpRd01qWmFHQTh5TURVd01Ea3hOakEyTkRBeU5sb3dPekVnTUI0R0ExVUVBd3dYUjI5VWNuVnpkQ0JHU1VSUE1pQlNiMjkwSUVOQklETXhGekFWQmdOVkJBb01Ea2R2VkhKMWMzUkpSQ0JKYm1NdU1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRXJUVlliTmtYa09MQmxFSGVZT0EveHJyZ0k4UmZyMWZjdTBVY3c0SHFnVmdDSWE1QXFUdmZ5YjB5d2E0UlFneTdEaG1sK3NNcGhtZ3pxZ29sRFRsSzdLTkZNRU13RWdZRFZSMFRBUUgvQkFnd0JnRUIvd0lCQURBT0JnTlZIUThCQWY4RUJBTUNBUVl3SFFZRFZSME9CQllFRlBGaU90dVNTMmxLUnJhT0JZaUFkL2I2b3VuL01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lRRHA0dlQzWUZmV3lmMDljSjRld0Z2dDRldUJFaHUyZDVlb2JpdlQvTGczdVFJZ1NybVVqZlIwWUN3MjlsYWk0RWh6RUU0UmpyUTNYTHFkTjc3ZWJkZDlrRms9Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUxrQUFBQW9DQVlBQUFDaWwxdTZBQUFBQ1hCSVdYTUFBQVdKQUFBRmlRRnRhSjM2QUFBSURFbEVRVlI0bk8xYzBYSGJPQkI5ZTNQL2RnZGhLckJTZ1prS3JBNmlWSEM2Q2tKWGNFb0ZaaW80dTRJd0ZaeGNRZWdPckFyMlByQk1vT1VDQkNsS29oSytHWXdHSUxCWUFvK0xCYmdVQVdEczQ1NlpDMFJBUk5jQUtnQTM2dEl6TXk5aWJXZk1PRFgrR05odWd6YkJYd0RrQjJsellTQWlWaWsvdDA1RFFVU1Z1cGZpM0RxTmhkNGtKNklWZ0ErcWVBZGd5Y3l2WXlnMVk4YVk2RVZ5SWxvQWVEQXVyWmw1TzQ1S00yYU1pejlUSzNwK3VNWTlNNWRqS1hSaCtLYnk4MG8yQVFoWDBYZ1d5U1NISS9pVktudnEycVQreW1EbS9OdzZ6TmdIRVcwQUxBRnNpUWdBVmtra0o2SVN4a2tLZ05XSSt2V0d1RS9YZmhrelYrZlJwaCtzVGVvWXVoTlIzaVZITE4wQ3dLdm5aamEvMTNCem5SazYxc3hjcCtyUnAzNkNyRDFZOXloOHlPQU1jdk83QXR3Um9wOEtaa2FUcEpLdTh3b2c4K3VGa25TMmdSdEVMV2NMWUEzZ09sSFd0ZWhUR2JMODlBZ2dUNVMzanNqYml1N212VW83UHkwUytyTEdRZXNlbEdQSXphWE5xekZIcGErNzZMRHg2bFFCZVNIZGlnNDlTa09Qb2ZPY09sYTUwcUVRUGJad0QzS0IySTFJSlV0NEo0R2tmZEdocEQ4aHl3NVp5OEFBeGxJNW9yeVZJU05wWEdRYyt1cmU2czhnd21PaXJFTGE2UG9IazF6MHFFYWM1L1dBc1NvOFhiWXkzczFEc3JRbXltOWdkUllkZkUvWnNxZWlRZGtEWmNVbUpqYVJvNUhjRy9TaHVwdUVHQ2pYR3NPRFNBNXhlVVlheXo0UGk1WFduazZseUZwS1daRGtWb2RCeTVoZ3dXdTRweXVYdEpZeXYwN0xEWW9NZWcyMzlDNDltWnRBWFMzVElraXBaSzJ4Yi9sYUxvUWhRNU04cEh0amJYSXZsVWE5MThENFd2ZlpXSzFjZmxNZWdzcVRtWG4zM1VseWhJMmdQODlMaEZlYjFMR3FVOGNLQVhmSW1xZ2lNSWl0cHo0Z01EUGFscFlDc0MxU21YRHo2MGovVnYyaVE3K1l2R3NFZk5FQkV4ZGRyZ01FV3huNjZEcVBBWGxWZ0RnRjJnOStFUnF6Z0d5TGFLWVJoTDJ2cXhQbXJXWHhPMlNhOWEySnNpeEFiWkUwOGVhakR3ZHNpM0FkdS9sRGRCZ2lMOUpQWDVKM0dncTBWN2ROd3VSbUFWbVpVZGZVb1EvSkEzSk5ncWMrd0FQbk9Xb2dtMlM5OGRSSGhaREdxUzg2bGlwZnhDcUwzRklWNTRsOWhWQ3BmQmFyUExHWWswZVYxd0Z2T3YvRWdXTTZLWDlTeGRWUXhUeXNWWDVubEdsZE5uRHhUVDQwVi9wQ2oxVm1WYkpJcmhVQmdMV2NRVVloZGZaZUdISGEyVyt0OG9kR01tcDVieUxYQU9BckVXMklLRHV3M3pIUVpVejAySFNGVXh3ajNFS1RNOVVJYmxUKzdrQTlrZ3l2UmZJUzdhZi9Dc0JqODdvMGd0WjFJMUt2bFFEODB5Vm5MSWgxMDYvakFlQXZBTitKYUN1RVAvUkIrNVh4UnVXMVJRMmgwZ1VIcnFKSkQzQW9RR3VGdGtWL2crNmJHWXNZeHliWUNtNkp0WEFEUi9qL2lLaVdxTXNwUVU5czExaU5PcFlCVWlhUmpjOFV4R2VTWEpZZXkxKzY3WWd6UHBvRkhoTml6UmV3TGJxUE53QWVKTlo2S3ZlbWlYSVhjck9rWExzRW94T3R4Mzd0TEFqR3JqRHpsb2p1QVh4U2x6NFIwWmFaTGF0ZUdmWHZCK2hWRDJqVEMwTDBYQ3pUQ3UwWWVSKzMrSG1PZm01VVJsa0plN05lcXZ3dTBQNlhSalJBaTVrTEljR3R1bFJLSUpDMkNxMG5taWNlcFNnYjQ0cUkxbkFrWHNMZUVOMFIwZUpjUzI0RFpxNko2RE9jUzlYZ2xvaWFGMHl2a0xOOXRFL0tOb2RhWFdhdUpMcnZCMUtDd3FSZWRramZRNUh5MGNRU2JmLzFDbzdvZTB1NEVHQ3ZMaEZOd2ZwMWdwbGZtYmxrNWlXQXQyaHZ2b0ZwV0hMQUVmaFpsZDBBK0JmQVYvbTF2cjh0UnVwLzZGRmdicFFkM1doMGtqemluOStndlJ3QzdjMXA5UHgwaW1EbVdzaXVKek03Z3pvdHlKeWtubWdBYnUrUmo2aENwZktyeEQzTFN1V2ZUK0hQSjMzK0prdVI1VnZmR1J2UlV1VnZKM2hDa1FvOUFmVTVsTkFnb2dydHZZK0ZKd0FmbVRrZlFLYllxVXlwOGxkb240SHZRVmIwbHR2YlU2ZEJTUDdHVTVZNjZ6VGlrKytTeUFPaDZ6MmtFSjJJc2xPY1lrZy8wYU0xMll2b0piOCtsazZwa0hIVVpIblB6QVRuWnIxdjhzeTg1UFJQRTJ1VnZ3dU5VV0NPUDhpK3h0SzVpUXowc1RQS2pvSytYK3RiL2puZy9QUE15NitNZXMxUjNON1NSa1FMS2FzQWZNZHB2alphdzUyRGI0bG83MjJ1NkZQQStiWStkdWpuSWh3TG1jcS9OSnMrY2JPcXhMZk1HdGE5bFVTMEZLT1FxMnRydE9mNEg1bmpKZkREbUJTd1A1MWNuL0xvc1JXaDFoRVVreHR0bXNBdVA3QnFnV0d4eHR1dS9oSUNkNkp0MEE2Q1Nra3JvNTlqQkdnVnNUYkdkWVlqVVJQZXFsT2ZyNHdzMmJIN1d3NFlSek9RYXFSNU5zZlhtcWdveVRzR28xVDFGZ01KZFdnVVlyQU53bDg3OVNMNEdVaytSSCtHczlUbWZTajVvZmh2a3hzRDV0amsxMGp6Ykk3dm9IL1FZdWVmNnlNc1FQbGx6THhsNWd6QTM3QUR2M3k4QVBnTTRDMGZjUmxqZDh6NVR2cUs2YlFEOEVYMEtZK2xUMStJL3A4SE5MMkRjeG0zc2YwSXUxT2xlOWh1YWF1ZDZMTkFmSTc5c1N4NjZuMHdxREhuSituTStlMlpjV2w3VEdMSDRIMjU3c1AvaW4xeWtIR3MwQTZVU3NVT3pvMnBPL3BaNEdlb1J0MVYzOU10ODRyT1BwWW5KZm1Nd3lIRXE3Qy9rZnVDOE1uUEFtNVoxeHUvYi95Yi9HL01UUElMZ3F3Nk5YNFNkZ2UzRDRoYVNtbTNRVHMrNTkyNXJld3BNUFJmYldlY0IydnNXK1JOQ2tuWmhTeXMwUGFaOC9GVW15NW1rbDhXZEhoRjFiTjlyZkpUQ1I4K0ttYVNYeGIwRzlpK0pNMVVmdEp4NEdOaEp2bGxRUi9yclZJYnl0R3VQbzJwRHRUbklqQ1QvTEtnWDczZkVkRmpMRTZiaUs3bDFicitqdmJsZDloMEF2UHB5a1ZCeVB3OWNQa1pMclNpOXNwQ3g0ZUFDK0txUmxOdXdwaEpmbUdRS01TSEE4VjhuTkpiM0dOamRsY3VERUxPOStnT2s3RHdBbWZCeXpGMW1qcG1TMzdCa0pEV0psa3VDZUNJWGNIOVgrSVVRb1ZQanY4QjdReUMxTUMrZWljQUFBQUFTVVZPUks1Q1lJST0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xIiwiRklET18yXzFfUFJFIl0sImV4dGVuc2lvbnMiOlsidXZtIiwiY3JlZEJsb2IiLCJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwibGFyZ2VCbG9iS2V5IiwibWluUGluTGVuZ3RoIl0sImFhZ3VpZCI6ImVlN2ZhMWUwOTUzOTQzMmZiZDQzOWMyZmM2ZDRmMzExIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6dHJ1ZSwidXAiOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJsYXJnZUJsb2JzIjp0cnVlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6dHJ1ZSwiYWx3YXlzVXYiOmZhbHNlfSwibWF4TXNnU2l6ZSI6MTYwMCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0Ijo4LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjk2LCJ0cmFuc3BvcnRzIjpbIm5mYyIsInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi0zNX1dLCJtYXhTZXJpYWxpemVkTGFyZ2VCbG9iQXJyYXkiOjQwOTYsImZvcmNlUElOQ2hhbmdlIjpmYWxzZSwibWluUElOTGVuZ3RoIjo0LCJmaXJtd2FyZVZlcnNpb24iOjI2MjE0NSwibWF4Q3JlZEJsb2JMZW5ndGgiOjMyLCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6MiwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjUwfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMTAtMjciLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MjYyMTQ1LCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IktlbnNpbmd0b24gVmVyaU1hcmsgTkZDKyBVU0ItQyBTZWN1cml0eSBLZXkiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI1MTAyNzAwNCIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUHJvZmlsZXMiOlsiY29uc3VtZXIiXSwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0xMC0yNyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyNjIxNDV9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjYtMDItMTEifSx7ImFhZ3VpZCI6ImI5MGU3ZGMxLTMxNmUtNGZlZS1hMjVhLTU2YTY2NmE2NzBmZSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiYjkwZTdkYzEtMzE2ZS00ZmVlLWEyNWEtNTZhNjY2YTY3MGZlIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ill1YmlLZXkgNSBTZXJpZXMgd2l0aCBMaWdodG5pbmcgKEVudGVycHJpc2UgUHJvZmlsZSkifSwiZGVzY3JpcHRpb24iOiJZdWJpS2V5IDUgU2VyaWVzIHdpdGggTGlnaHRuaW5nIChFbnRlcnByaXNlIFByb2ZpbGUpIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3MywicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9LHsibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyIsImVkMjU1MTlfZWRkc2Ffc2hhNTEyX3JhdyIsInNlY3AzODRyMV9lY2RzYV9zaGEzODRfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRE16Q0NBaHVnQXdJQkFnSVVTT0VqVGYvL3lxUmZQVzdRcThxdEl5Q3JBZzh3RFFZSktvWklodmNOQVFFTEJRQXdMekV0TUNzR0ExVUVBd3drV1hWaWFXTnZJRVpKUkU4Z1VtOXZkQ0JEUVNCVFpYSnBZV3dnTkRVd01qQXpOVFUyTUNBWERUSTBNRFV3TVRBd01EQXdNRm9ZRHpJd05qQXdORE13TURBd01EQXdXakF2TVMwd0t3WURWUVFERENSWmRXSnBZMjhnUmtsRVR5QlNiMjkwSUVOQklGTmxjbWxoYkNBME5UQXlNRE0xTlRZd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUUNkdmwyN3cyZ3UxZlBYZUVGYklkcXgwQmFsdlZEVldyUVBKN0hxdml1RXRaSGx4U0x4U0Z0Y1hwVG9sdkx2b2Y4ZjR0TWVyUVRrVkd6Y21Zem0xRUJUNElKdU1tb0VxZmtFRWhXcHNBRE1Gcmpaa3FsWlk5RXF4UXpMb1ZFRW9uRTVvR3hTZFZDeENjTElhY2tweVIvQ0NYdmoxQnQvaFRnRTloVGxGNHBScXhNa3gzcGxGN3k4ZERabFJIV3M3dmJuaG1CQ0dlSTBaUEVRNm5sMm1DZzJyNzRhZEYydTZLOXJyTGZoQkMzUUxFOEVQcmdxVXNJK2hrdXEydEs0TTJTTU9wOHVVVlZrcVVldTNoMGtyM1dWSTBXMDJwa2dyT2dpRktMRk5rU3JiWWhkak1CRGo1aXptcWZjOXhKUktvRFg2MTJxZDhaR1ZIcFQ1QVlGWCsxaEFnTUJBQUdqUlRCRE1CMEdBMVVkRGdRV0JCVFp5VTVEaVEvYTJVRWdFN3FCSzB6aElzUk5SakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VBTUE0R0ExVWREd0VCL3dRRUF3SUJCakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBWHZuQjRTTHVVSmZZTVNWR0Foc3NML1NtV2xpM0ZTY2NneHlkdktsQUNjaWRJSVdLUXFhM3EvUVNVRVF6QzlEZ0VmTWdyN2lDMUJrVFpiSUxib1Y2VVo1a25Oc3ZqRVpXdU1lb2dKOHRnWnMxaFZ2S3daaXp3SittRWNtc2poSXJCWXVvTDFUNnlyT0p2S0ZnMWp2K0N5NFp3QTlCcGsvVjNVT2lyMVZ5SzhkQ3R5SHU2dmZvc290QWRZeDhGQXVSMjQzZ1JUTVY2Sng4SmRpZzJKRElBUU1selZlRHBTVUhYL0sySFhSSHhId2ZnamJnVWpqQnUvNzJyOE9mZWh5aHpIWEkzSzhDRkZkZmxPKzhuRU9KSzN5OEYxaXZnUzV1Ti84U21jWXcvU1RRWXdocnhQdXd6M25QOGJhTXVtNEJCMm5uWW1wQjYwc1gzYmw1azhRVVN3PT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZkNBWUFBQUNHVnMrTUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFIWVlBQUIyR0FWMmlFNEVBQUFiTlNVUkJWRmhIcFZkN1ROVjFGRC8zZDU5d2VRU0lnUzlBUUFYY0ZMQVFaaTlmcGVWejF0WS9XVFpyNVd4cGM3VzVrbkxhNWpJM1o4NXNyUzJuTTJzanRXd1pTN0lVSDRINHhDbkVReDREQVpGNzRWN3VzODg1djkvbEluQnZWSi9CNFB2OW51LzVudS81bnZNNTU2ZnpBL1F2MEhiL0lyWDNWRktQbzQ1Y25tNGluVUlXWXdMRlJtWlFVdXdqRkcvTjFpUkhoMUVaME5SVlJ1ZHF0MUJkKzJuU0t5Uy9PaHlzMCtsazNlLzNrUTlxdkQ0WlV0YTRWVlNVdVkwZWlweWlUaEFmb2NvT1JWZ0R1dXczcUtSaUFkM3JiY0V0alRqWUlvZjZXYUhzQ216VlBXQ014K2NnaDh0THFXTUthTVdzVWpMcW8yUnRKSVEwb096bWVycFF1NGVzWmdzT05rR3hIN2Qwa2R2VFQxN3M0T01VN1ZJOFpoamdHYU0rQXE5aUVOdThQaWYxdWR6MDdNd3ZLV2Y4R2xWb0NFWTA0UEM1V2RUYVhZRmJSOHZOdkw1KzNLZ2ZiNXhOTXlhOVJhbUppeW5hTWxHVFZ0RmxyNmJhOXUrcHFuRVg0dU11UlJnalNZRWhyTjd1dEZGZTZscWFsN05ma3c1aW1BR0h5blBwYms4Vm1ZMHhzdG5wdGxGQ1ZDWXR6VHVCTjgzUXBNTGpUdGV2ZFB6U1VuSjdlOG1ranhaMzlmWGJLRGZsZFpxYnZVK1RVZ0duQlZGNmZRMmlQSGc0VzE2VVdVd3Z6YmsxNnNNWkUrUG4wcHZ6N0pTZXVBeWVzOGxjcENtYUt1by9wK3FXcjJVY3dJQUhXcnZQMFlFemhYQXRMQWJzc0hocDdpR2FtdnlpalA4cnlxclhVV1g5WG9vd3h5QXVmTkJycDQzUE9CRlhabGtmOE1EUmlxY3B5b3dBd3B1ejJ4K2ZXdnovRHRkZTlzbXN6eWd0Y1I2QzF3YmR6Qmw2T2xxNVdOWVk0b0dhdGhKTXJrVEV4MGpBUlNIQVZzKzVyWWtRTlhiK1FnZlBMc1E2Z1h5SW5zcmVRZm1wbTdSVkZZZkw4Nm4xZmlVT2tZdlNoa1VQeHZidWt6b3k2SzFpaE0xaG8zWHpXNkV2U2ZYQStkcGlXR2FXZCtkb1h6THptR3dLWUZMQ0FzUkFsUEJBaE1sQ0ZYVTd0QlVWUHI4SGdWY0pIV3ErRjAwcGxyK0RNVGRyUDR6dnhZMTFrTk1oeFQrU2VUR2crZDRWNUxRSml0eVVHSk5COFZGWnNqZ1lCWk0vSUkvWENUa2owcXlET3BGMkFWUTE3Q0lqVXAvRG5UMVVrTDVGNWdkaitzUzF3ZzFnRTNnaWdtNjBmQ1h6U25QWGJ5QVBiSVh2K0lEcEUxNlRoYUhJUzlza3lobG1NRTVGM2NmcUFLaHEyQzBFNVBIMWdZYVhhTFBEa1pHMEhESk9uS1dIcDUxSTB6NVNPdXg4ZTFXQXVaemRIUXJUa3A4VG1qWG9JK2xhMHdHWnN6dWJxYk8zaWZRNkEvVzd2VlNZc1YzbVIwSkt3a0tjNFdIaUJrbVI4STNDQ2dJODdvT0w0cXpUNVArUlVKQmVqRU9nQVBLOGhZUHphdE0rZUlUcDJJTzl5VFFtZXJvbVBSeHgxcXhBY3NpbGUvdWJTZUViY1dRR1lFQ2doY0xZMkh5S2pvZ2pIMjVoTXBqcFV2MU91Z2xpNGVoMmVSdzBPMzJiSmpreXVDZ056ZzB2emxZTVNpU3MwdW9vNE1HN2hNT2pDRWFYMXlGRTBuU3ZqQnp1VG5FcEs4Nlo4SW9xRkFJdWJ3OGtnOUFyRWFSRVdTWkkrakg0WGJwNmc5RTlFbkpUM29hUnpETitNVUpCUURIbjU2YThvVW1FQnVzT3hCcy9ONSt0SkViUGtBRkRqOFVHdk9zL0lXdmNTZ2xHQmh2UzcvRlRZZnBXR1lkRFk4ZlBBeFdTQTM1c1RDNHA0K0xtNEFhcUlvUGVRdGZ1Zks2SmgwWmh4bGJzVVhPU21YTmlmRDVaVEFreURvZmJiY2NseG5BOFdOQXF4Q2JSTnlraFh4UXBhRHc2N2ZYVVlic2lHMEtodHYyb2VJdmg4cmhRTVlPY0VBcVhHL2VJK3puZ09jNXl4cjhxODJJQU0xYy9GTEZPcGxxdTVlRlFYck1aekdjVkNqWWJMV0c1STRCVDFldVJybGJ4dE5PdE1pdERERWhMWElJeW5BQXZ1T0VXRTNYM05kQWZ0OTRWZ2FHNDJYSVF0MFpYNlBlQ0UvcVFGZTlySzZIeDdZVTUwS3ZIN2ZXNGZTK3E3S0tCSnhzZ2dCWDVwU0FHaDFqSXJWaDV6UTZ3M1JmYWFoQlhtL2FDYkNaVGpDVUZVVHlXWnFXOXA2Mk1qSlBYVnFPclBnTU80TnY3NEdrZitvd2Z0TlZCRFFuakZKcUhTdzE3cFh2aFdXNUtacWUvUTQ5Ti9VU1RDQVZXb1FYRklIQkhYWGUzRlByVURzdUdEbXRGL2hIS1RIcGVreGhpQU9QSStTSnE2UzZIRjRJOVlXemtCSlRvNDZpVU16V3A4UGlyL1JpZHVMeEtZc1Nrc1Y4dkxsT1F2aEdYMllsUjBPQmhCakMrdS9nRWN2WTBBcEs3WWs0MU54alBTUW5XRkhURjY2VXJqZ2V2QjhDdTVhK2wydllTUlB0dVZEbzczaGhkTVNIblVYN3RUanNWWkd4QWwvV3B0aU9JRVExZ25MMjltWDYvdFIxdG1sa1lqOFc0WCtDU2pXY1VER1kxTnBTL0M3aFNLcWlNTE0vbDJRbVNXWjczRGR6K2dpbzhCQ0VOWVBRNDZxbmt6d1hVYnF2Qmt4alVRc1dmWkZnYnVvM3JBZit3TjdqT085MCt5bng0UGkzTCswbllMMVNjaERVZ0FQNGdQVi83SWQxcSsxSFNobXVHa0lxV1JQZ3l4TUZxUDhIZmpUbmpYd1k1YlFmYkpjdDZPSXpLZ01Ib3RGL0hlMWVnc2F4SFNxRzZ3ZmRtUTV4OE55VEZGcUJjcDJpU293SFIzeWs1KzM2aEY3dlhBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMV9QUkUiLCJGSURPXzJfMSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJsYXJnZUJsb2JLZXkiLCJjcmVkQmxvYiIsIm1pblBpbkxlbmd0aCJdLCJhYWd1aWQiOiJiOTBlN2RjMTMxNmU0ZmVlYTI1YTU2YTY2NmE2NzBmZSIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImxhcmdlQmxvYnMiOnRydWUsImVwIjpmYWxzZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOnRydWUsImFsd2F5c1V2IjpmYWxzZX0sIm1heE1zZ1NpemUiOjEyODAsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6OCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoxMjgsInRyYW5zcG9ydHMiOlsidXNiIiwibGlnaHRuaW5nIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN30seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTh9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi0zNX1dLCJtYXhTZXJpYWxpemVkTGFyZ2VCbG9iQXJyYXkiOjQwOTYsIm1pblBJTkxlbmd0aCI6NCwiZmlybXdhcmVWZXJzaW9uIjozMjk0NzMsIm1heENyZWRCbG9iTGVuZ3RoIjozMiwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjEsInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjoxMDB9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMC0xMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzMsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWXViaUtleSA1IFNlcmllcyB3aXRoIExpZ2h0bmluZyAoRW50ZXJwcmlzZSBQcm9maWxlKSIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjQxMDEyMDA5IiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMTAtMTIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDczfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI0LTExLTEyIn0seyJhYWd1aWQiOiI2ZDRhYTc0NS1kYWQ1LTQwYzQtYjliNC02YTI1MmZjZWU3MGYiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjZkNGFhNzQ1LWRhZDUtNDBjNC1iOWI0LTZhMjUyZmNlZTcwZiIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJHb1RydXN0IEN5YmVyIEtleSJ9LCJkZXNjcmlwdGlvbiI6IkdvVHJ1c3QgQ3liZXIgS2V5IiwiYWx0ZXJuYXRpdmVEZXNjcmlwdGlvbnMiOnsiZW4tVVMiOiJHb1RydXN0IEN5YmVyIEtleSJ9LCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MjYyMTQ1LCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH0seyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Iiwic2VjcDM4NHIxX2VjZHNhX3NoYTM4NF9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUJ0RENDQVZxZ0F3SUJBZ0lKQU11amtWeWl3OTM5TUFvR0NDcUdTTTQ5QkFNQ01Ec3hJREFlQmdOVkJBTU1GMGR2VkhKMWMzUWdSa2xFVHpJZ1VtOXZkQ0JEUVNBeU1SY3dGUVlEVlFRS0RBNUhiMVJ5ZFhOMFNVUWdTVzVqTGpBZ0Z3MHlOVEE0TWprd09EVXlOVEZhR0E4eU1EVXdNRGd5T1RBNE5USTFNVm93T3pFZ01CNEdBMVVFQXd3WFIyOVVjblZ6ZENCR1NVUlBNaUJTYjI5MElFTkJJREl4RnpBVkJnTlZCQW9NRGtkdlZISjFjM1JKUkNCSmJtTXVNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVyM3puMFp0dUhMaGZNaEh2YXUrRWFBUmt5REFTeXV0VkYyOHhZc3RxTnlXdGJqYk9sN2w5eVNzV0V0Q2hhWktuYW5udG5YQmJIeTg1WjVPeTAwMGdlcU5GTUVNd0VnWURWUjBUQVFIL0JBZ3dCZ0VCL3dJQkFEQU9CZ05WSFE4QkFmOEVCQU1DQVFZd0hRWURWUjBPQkJZRUZMOU5iTW8wWENvNjl3OTNmUk5pbndiRkZqcm9NQW9HQ0NxR1NNNDlCQU1DQTBnQU1FVUNJUUNmb2wzRWZyejhWQ2dTa3RvdzZkM1VaUUo2Smk4TVpmYW1FbWtVWU9Qd0FRSWdTZlU5dXR0c3VuOWJrbHZrL0Z2bEdhMVM4cHhJSEVNd1JFUjlZbXZwSm9RPSIsIk1JSUJxVENDQVUrZ0F3SUJBZ0lCQVRBS0JnZ3Foa2pPUFFRREFqQTdNU0F3SGdZRFZRUUREQmRIYjFSeWRYTjBJRVpKUkU4eUlGSnZiM1FnUTBFZ01URVhNQlVHQTFVRUNnd09SMjlVY25WemRFbEVJRWx1WXk0d0lCY05NakV3TXpBeU1EWXhPRFE0V2hnUE1qQTFNVEF5TWpNd05qRTRORGhhTURzeElEQWVCZ05WQkFNTUYwZHZWSEoxYzNRZ1JrbEVUeklnVW05dmRDQkRRU0F4TVJjd0ZRWURWUVFLREE1SGIxUnlkWE4wU1VRZ1NXNWpMakJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCSXprTWR0Tlp0MFpPek8rdTFmMkVLWlJTbmZodnl3YmhvbkJGOU5TUHEyV0c3bnVSaS95dlo4bERqd3A1ZGFyUTZPZFpnK0hxYlNTZVhKWHc3VXBjbFNqUWpCQU1BOEdBMVVkRXdRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0VHTUIwR0ExVWREZ1FXQkJSald4VG8xRXEzM1pyeGZMRFdzc2RkYkQvdlpUQUtCZ2dxaGtqT1BRUURBZ05JQURCRkFpQitFMDlHem1jWWxNOTVxVC9hZm5QVTlxNlhKbXhPU0tXQVJPNStrZ1VuV2dJaEFJYTluNXA0MHRjR2ZtZUY2L1d2WW9qQU51eWtRcWhWazhXbmZnMTVTNjlyIl0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWpDQVlBQUFEMTdnaGFBQUFBQkdkQlRVRUFBTEdPZlB0Umt3QUFBQ0JqU0ZKTkFBQ0hEd0FBakE4QUFQMVNBQUNCUUFBQWZYa0FBT21MQUFBODVRQUFHY3h6UElWM0FBQUtMMmxEUTFCSlEwTWdVSEp2Wm1sc1pRQUFTTWVkbG5kVVZOY1doOCs5ZDNxaHpURFNHWHFUTGpDQTlDNGdIUVJSR0dZR0dNb0F3d3hOYklpb1FFUVJFUUZGa0tDQUFhT2hTS3lJWWlFb3FHQVBTQkJRWWpDS3FLaGtSdFpLZkhsNTcrWGw5OGU5MzlwbjczUDMyWHVmdFM0QUpFOGZMaThGbGdJZ21TZmdCM280MDFlRlI5Q3gvUUFHZUlBQnBnQXdXZW1wdmtIdXdVQWtMemNYZXJySUNmeUwzZ3dCU1B5K1planBUNmVELzAvU3JGUytBQURJWDhUbWJFNDZTOFQ1SWs3S0ZLU0s3VE1pcHNZa2lobEdpWmt2U2xERWNtS09XK1NsbjMwVzJWSE03R1FlVzhUaW5GUFp5V3d4OTRoNGU0YVFJMkxFUjhRRkdWeE9wb2h2aTFnelNaak1GZkZiY1d3eWg1a09BSW9rdGdzNHJIZ1JtNGlZeEE4T2RCSHhjZ0J3cExndk9PWUxGbkN5Qk9KRHVhU2tadk81Y2ZFQ3VpNUxqMjVxYmMyZ2UzSXlremdDZ2FFL2s1WEk1TFBwTGluSnFVeGVOZ0NMWi80c0dYRnQ2YUlpVzVwYVcxb2FtaG1aZmxHby83cjROeVh1N1NLOUN2amNNNGpXOTRmdHIveFM2Z0JneklwcXMrc1BXOHgrQURxMkFpQjMvdytiNWlFQUpFVjlhNy94eFhsbzRubUpGd2hTYll5Tk16TXpqYmdjbHBHNG9ML3JmenI4RFgzeFBTUHhkcitYaCs3S2lXVUtrd1IwY2QxWUtVa3BRajQ5UFpYSjR0QU4venpFL3pqd3IvTllHc2lKNWZBNVBGRkVxR2pLdUx3NFVidDViSzZBbThLamMzbi9xWW4vTU94UFdweHJrU2oxbndBMXlnaEkzYUFDNU9jK2dLSVFBUko1VU56MTMvdm1ndzhGNHBzWHBqcXhPUGVmQmYzN3JuQ0orSkhPamZzYzV4SVlUR2NKK1JtTGErSnJDZENBQUNRQkZjZ0RGYUFCZElFaE1BTld3Qlk0QWpld0F2aUJZQkFPMWdJV2lBZkpnQTh5UVM3WURBcEFFZGdGOW9KS1VBUHFRU05vQVNkQUJ6Z05Mb0RMNERxNENlNkFCMkFFaklQbllBYThBZk1RQkdFaE1rU0I1Q0ZWU0FzeWdNd2dCbVFQdVVFK1VDQVVEa1ZEY1JBUEVrSzUwQmFvQ0NxRktxRmFxQkg2RmpvRlhZQ3VRZ1BRUFdnVW1vSitoZDdEQ0V5Q3FiQXlyQTBid3d6WUNmYUdnK0UxY0J5Y0J1ZkErZkJPdUFLdWc0L0I3ZkFGK0RwOEJ4NkJuOE96Q0VDSUNBMVJRd3dSQnVLQytDRVJTQ3pDUnpZZ2hVZzVVb2UwSUYxSUwzSUxHVUdta1hjb0RJcUNvcU1NVWJZb1QxUUlpb1ZLUTIxQUZhTXFVVWRSN2FnZTFDM1VLR29HOVFsTlJpdWhEZEEyYUMvMEtuUWNPaE5kZ0M1SE42RGIwSmZRZDlEajZEY1lESWFHMGNGWVlUd3g0WmdFekRwTU1lWUFwaFZ6SGpPQUdjUE1ZckZZZWF3QjFnN3JoMlZpQmRnQzdIN3NNZXc1N0NCMkhQc1dSOFNwNHN4dzdyZ0lIQStYaHl2SE5lSE80Z1p4RTdoNXZCUmVDMitEOThPejhkbjRFbnc5dmd0L0F6K09ueWRJRTNRSWRvUmdRZ0poTTZHQzBFSzRSSGhJZUVVa0V0V0oxc1FBSXBlNGlWaEJQRTY4UWh3bHZpUEprUFJKTHFSSWtwQzBrM1NFZEo1MGovU0tUQ1pya3gzSkVXUUJlU2U1a1h5Ui9KajhWb0lpWVNUaEpjR1cyQ2hSSmRFdU1TanhRaEl2cVNYcEpMbFdNa2V5WFBLazVBM0phU204bExhVWl4UlRhb05VbGRRcHFXR3BXV21LdEttMG4zU3lkTEYway9SVjZVa1pySXkyakpzTVd5WmY1ckRNUlpreENrTFJvTGhRV0pRdGxIcktKY280RlVQVm9YcFJFNmhGMUcrby9kUVpXUm5aWmJLaHNsbXlWYkpuWkVkb0NFMmI1a1ZMb3BYUVR0Q0dhTytYS0M5eFdzSlpzbU5KeTVMQkpYTnlpbktPY2h5NVFybFd1VHR5NytYcDhtN3lpZks3NVR2a0h5bWdGUFFWQWhReUZRNHFYRktZVnFRcTJpcXlGQXNWVHlqZVY0S1Y5SlVDbGRZcEhWYnFVNXBWVmxIMlVFNVYzcTk4VVhsYWhhYmlxSktnVXFaeVZtVktsYUpxcjhwVkxWTTlwL3FNTGt0M29pZlJLK2c5OUJrMUpUVlBOYUZhclZxLzJyeTZqbnFJZXA1NnEvb2pEWUlHUXlOV28weWpXMk5HVTFYVFZ6TlhzMW56dmhaZWk2RVZyN1ZQcTFkclRsdEhPMHg3bTNhSDlxU09uSTZYVG81T3M4NURYYkt1ZzI2YWJwM3ViVDJNSGtNdlVlK0EzazE5V045Q1AxNi9TditHQVd4Z2FjQTFPR0F3c0JTOTFIb3BiMm5kMG1GRGtxR1RZWVpocytHb0VjM0l4eWpQcU1Qb2hiR21jWVR4YnVOZTQwOG1GaVpKSnZVbUQweGxURmVZNXBsMm1mNXFwbS9HTXFzeXUyMU9ObmMzMzJqZWFmNXltY0V5enJLRHkrNWFVQ3g4TGJaWmRGdDh0TFN5NUZ1MldFNVphVnBGVzFWYkRUT29ESDlHTWVPS05kcmEyWHFqOVducmR6YVdOZ0tiRXphLzJCcmFKdG8yMlU0dTExbk9XVjYvZk14TzNZNXBWMnMzWWsrM2o3WS9aRC9pb09iQWRLaHplT0tvNGNoMmJIQ2NjTkp6U25BNjV2VEMyY1NaNzl6bVBPZGk0N0xlNWJ3cjR1cmhXdWphN3liakZ1Slc2ZmJZWGQwOXpyM1pmY2JEd21PZHgzbFB0S2UzNTI3UFlTOWxMNVpYbzlmTUNxc1Y2MWYwZUpPOGc3d3J2Wi80NlB2d2ZicDhZZDhWdm50OEg2N1VXc2xiMmVFSC9Mejg5dmc5OHRmeFQvUC9QZ0FUNEI5UUZmQTAwRFF3TjdBM2lCSVVGZFFVOUNiWU9iZ2srRUdJYm9nd3BEdFVNalF5dERGMExzdzFyRFJzWkpYeHF2V3Jyb2NyaEhQRE95T3dFYUVSRFJHenE5MVc3MTA5SG1rUldSQTV0RVpuVGRhYXEyc1YxaWF0UFJNbEdjV01PaG1Oamc2TGJvcit3UFJqMWpGblk3eGlxbU5tV0M2c2Zhem5iRWQyR1h1S1k4Y3A1VXpFMnNXV3hrN0cyY1h0aVp1S2Q0Z3ZqNS9tdW5BcnVTOFRQQk5xRXVZUy9SS1BKQzRraFNXMUp1T1NvNU5QOFdSNGlieWVGSldVckpTQlZJUFVndFNSTkp1MHZXa3pmRzkrUXpxVXZpYTlVMEFWL1V6MUNYV0ZXNFdqR2ZZWlZSbHZNME16VDJaSlovR3krckwxczNka1QrUzQ1M3k5RHJXT3RhNDdWeTEzYys3b2VxZjF0UnVnRFRFYnVqZHFiTXpmT0w3Slk5UFJ6WVROaVp0L3lEUEpLODE3dlNWc1MxZStjdjZtL0xHdEhsdWJDeVFLK0FYRDIyeTMxV3hIYmVkdTc5OWh2bVAvamsrRjdNSnJSU1pGNVVVZmlsbkYxNzR5L2FyaXE0V2RzVHY3U3l4TER1N0M3T0x0R3RydHNQdG9xWFJwVHVuWUh0ODk3V1gwc3NLeTEzdWo5bDR0WDFaZXM0K3dUN2h2cE1Lbm9uTy81djVkK3o5VXhsZmVxWEt1YXExV3F0NVJQWGVBZldEd29PUEJsaHJsbXFLYTk0ZTRoKzdXZXRTMjEyblhsUi9HSE00NC9MUSt0TDczYThiWGpRMEtEVVVOSDQvd2pvd2NEVHphMDJqVjJOaWsxRlRTRERjTG02ZU9SUjY3K1kzck41MHRoaTIxcmJUV291UGd1UEQ0czIranZ4MDY0WDJpK3lUalpNdDNXdDlWdDFIYUN0dWg5dXoybVk3NGpwSE84TTZCVXl0T2RYZlpkclY5Yi9UOWtkTnFwNnZPeUo0cE9VczRtMzkyNFZ6T3VkbnpxZWVuTDhSZEdPdU82bjV3Y2RYRjJ6MEJQZjJYdkM5ZHVleCsrV0t2VSsrNUszWlhUbCsxdVhycUd1TmF4M1hMNisxOUZuMXRQMWo4ME5adjJkOSt3K3BHNTAzcm0xMER5d2ZPRGpvTVhyamxldXZ5YmEvYjErK3N2RE13RkRKMGR6aHllT1F1Kys3a3ZhUjdMKzluM0o5L3NPa2grbUhoSTZsSDVZK1ZIdGY5cVBkajY0amx5SmxSMTlHK0owRlBIb3l4eHA3L2xQN1RoL0g4cCtTbjVST3FFNDJUWnBPbnA5eW5iajViL1d6OGVlcnorZW1DbjZWL3JuNmgrK0s3WHh4LzZadFpOVFAra3Y5eTRkZmlWL0t2anJ4ZTlycDcxbi8yOFp2a04vTnpoVy9sM3g1OXgzalgrejdzL2NSODVnZnNoNHFQZWgrN1BubC9lcmlRdkxEd0cvZUU4L3MzQkNrZUFBQUFDWEJJV1hNQUFBN0VBQUFPeEFHVkt3NGJBQUFBSVhSRldIUkRjbVZoZEdsdmJpQlVhVzFsQURJd01UZzZNRFU2TWpnZ01UWTZOREk2TVRUOWh3cmZBQUFJSFVsRVFWUllSNTFYQzFCVTV4WCtkbGxnUWQ0UFVSQWZpU2hhTkcxaTdCaHRtMDVLVWtuVFdCK05RYTBZRzJPRGxqb09HazFpTzUxcU5HUWNrOW9rUkpzMDRJdzZwdU4wVEV4VGFPc1lTN1NTcGhwZjFLQVZCUlpoV1I0cklMdDdiNy96Mzd2c1FoYUMvUzcvc3Z6M3ZNLzV6L214NkFTR0NaMlAvRmdzOHBmNjZJTmZqTVY0T1d4WXpkL0RnK1pYWUVIbEo1L2p2Z1diOE9qcUhXaHNjYW45TzFVdUdGNEVoTVFVM3RyaFJ0N3FsM0dxc2hwSWlBRjhQcURyTnBZVjVPSDFGMWNnSmpvcUtGTENJK0lITjJ4NEVUQ1YvM3piSDVBOGNSRk9WVjhDUmljRFVaRkFOSmZWaXZJREZhajY5eGVLVGlra2o2YlJGSDF3NVlKQkl0RGY2ajlWbnNhOFozYlFXeThRUzYrdDVqdDN0NHJBMXMwRjJMenFjV09QNkwxYXA0eUtHRGZHM0NFR0M0UVlFQXlOangrMTE1djBLWSt1MTVHV3B5TW5YOGMwV1V0MVpEK2hJK2xoZldIUlR0M3I5Wm5VQmhwWGJkVFBJVncvanhHNlk4MFdjNWR5ZlFHNXdSaTBCdktMZDJOLzJRZk1jeXhnWjVnRmt1K1dkb3ljT0FaViszK051elBUakgzQ3Rmc2RPTllXMDFFZndwREFIWTFQQi8rMklXTmZLZUtYekRjSUI4Q2lNVkhCMWZ2Mkg0OWhaV0VKTU1JT3hJemdEdTNUV1A0ZFhUVEVodkpYaXJEMHNUa0dNZEZUZlFaMTMxNEFYM2NqRmJNdStDbFFoYWhpN3VYVGdzamtpUmh6N0JEc09kbnFEVmdmRnFheUx3SmZYRy9DN0NXL3dzM0x6RjlLb2xHZThxYW5WeWxmdTNZaFhudStRRWdWdk0ydGFKajNGRHFyanRMSFZPN1kxTDVFd0lkMnFyWlFSTHo2TlBZOTNHOUdiTzRpWkI0dEozbVlNcS9QQU11NEg5SERDSzV3UTdHUFhqZTFZc2FEOTZMaW5SZVlpV2doVTNDc2ZnN08wdGZvYXd5RlJDdEJ1Z3E1QzJIV1JHUldIWWJ1OVRFeTg2RnI3YVJMNG5zeGlXSnBuQzBwQTFuT2MwcVdNcSsreWNXejNBTkVtc3A3YnNNV2JzWEhIKzNDNmZlMjlTbHZlL2NRTGxqaTRDcDlpLzZta0ZtVWk4OXVyamFNM0xvZGszeDFpUHJtZllpZVBSUFp2aHNZdWIyRUtXZ210NGVVT25saTRXbXRnK1ptU2drVkFZZXpEYU56bGdKcFNUeERYcVNQVGtMOVgzY3JBa0gzeWM5dzQ0Y3I0R211VWVFV01ZWTMzYXJRRW45Y2dQU0RieGpFUkFlRmg5bXNMQ1BXa1luYWpCbndOVFNSTDR3R3RXTnlWeU9zVVhZelFTSk9NcUdXeHY3Q1ZKaTRObXNlcnN5YUJhMzVKcFZMMVF1TEY3MW9nSDNhMXpDcHJyYWY4cEszanlCK2FqNWk2TkRyYkU1KzJNYW0wMWl2aW9KUm5MTE1GQ2lvUFdQVExBc0Y5MGtwc2xIOEprZFJ3dTFVUWliOHBRSVR6djRONFpucGl1NUU5VVZFNU9Sanc1YTlRQnhURmhHT3drMEJ3K1FJRzlMN0kyQ0E2QXhTN0VjWTdHU1VFcElpNjBicTloM0kxdXN4SXZjNzZ2MzFteTVNbTdjQjMzcWtDQjVoVDQ0akU0OGlqNWhORFBrS0JBd1lCTW91dFhncTZGWEt4bWZWdnFCOWNTSEczck1NNXk1ZUF6S1luckJRUGdid1pmY0dTY0ZBeUFGU2o4VWdiMzExRHk1YVl1QStlQWpXOUJUajlJaUJicDZrTHM0SHZ5WnBZRUVZT2dYc1RBTVpCTUlrM2l1WjFraGN1ZXNCTlA1aUhWT1R5SG5Ed1NSR2Q3TlpPVndvTGx5QWpUOWJRQ040eENncU10eG9UbjVJN1JoRkdFREFBRTR2dFFaQVRMTEtZMkhuNnZiQXcwa25QVUIyZGEwWFdrTUw3djE2RnRwcTM4UEw2L1BaaUdpUU1QR1hQVndpRTRDU3d5Y1lRUkVnVjRnaU5Eb2NQM2s4alc0bXZWNVRwOEVkbDRES0QzYmkwME5iRVc4MksxY252VGZIZGJBMCtTNlM1QWxHL3dpRXFBR2JtbXlHYWprTkdqcFYxMHY3N1c1TWFqK0hoNzZScGVqYWVUZVl0ZmdGdlBIN0k3eWtSQ21lWUlqa3I0NUFpQnFRcnFXaGgrSjYyRXdia0xCeUphYnFIVWhhRXhoTVQvOXlEeExHUFk2VC82cGhEK0FFRlcyc3FjNWJScnNWREIwQkNYMVFEZGc0cWZ6SWRyRzNUNzhIRVZPbVlISnpFMGJ0NWFnMjhkYkJTbGdtek1mZXNnK0JkRTVFdVRkSUZDVU5uQ2NseGN0TVNtNVR0aEhGL2xGV0dsWHFtV1AxaFUzazhqVUgvbnppakx4Q1dFSWl4cDloMTd2d2Q5aFNPQ3VJMDU5ZlFjb0RxL0RNdWwyOE16RGNmcTl2OHpUY2FNYVNSZCtGZnZVd2lwYm5LWHFCdDFFR0VndDNRR3FVQVpHUjlGakdyNEFGcERNVmN4YytoeWsvS0VhZHcybnNFMjI4Rjh4Yy9DSm1QbFFJWjF1SGVXK2dDQzk1RzF1Uk0zazg2aS90eDc0ZGEwd084cnhaemdrYUQyL2ROZG9ZcmlLZ003SFFlTHNpK201RXVTdCt3NHIrQjVCcUNwVktGbythMi9EVForY2psUzMycGEzdkFvbEJWelNwbVhZMzUzc2NqdjV1QTNMblREZjJpYTRUcDFEL3lGSjR1aHBZeU1sVWFreFFMMGUzTFQ0Rms5cDRzeVpNQTlSWGxCMDVnZVViT0lhbG95V2FUVVp3aTkxTkdsV01qRmR6VC9KTWJOdThISnVlRHR5SXZjMU8zSmk3RExjK3JlQ0JUU08xVFhHSTF4N2NST3lNN3lIejQ4T3cwQW5aVndZSVkvQzlzTGhrSDE1NXFZeURoVWN3aXFOWnZlT1NPdW4xc09zNThjUlRqK0hBemlLRHdVVGpUOWJCVlY1S3hYR2t0bE9wOFBtb3VoVVI5alJrVkI3Z1JlVitnMWpxVGVUS2hTUVV2SnBQbi8za0ZsN0o1eHJYOEtsUHF1OVozMStuTzFyYVRDb0R6bGYzOENwdTUxVThVYTlCSnRkWS9STFhCZjU5SHJHNnM3VE1wSlJyZi85ci9KY01rSWp3cHcvVjUydjExRG1yZFF2L0wzai8rR2Ztcm9IT2l1UDZmMkt6cUNSYUthekJlSzV4K2tXa2NTOUtieWhZYjFJS1JLNnhnakhvL3dWRHdjT3JWYjNrK2V4eGhqdUZnWmFoSTJJa3owMkl1VDhYWTk3ZkI5dElLVDZWdkVGaGRKNGhJU0lDTmphdGZSNDFHYVBRZmZZczFZN3VVNjR4ejlZSU8rNnErZ1RqLy9taG9WeDhDN0NHaGtUZ1RuRDc4bi8xcTlNZlpzNGpHZXBVaGpxZXVVN1NuYnYybWhSM2hqc3lRR05oK2pQby91aVlYcGVYcnp1S3RnVDlOeG42LzcraDhIL1ZRQ2lJa0tGeUhSckEvd0M0ZStPK1oxY240UUFBQUFCSlJVNUVya0pnZ2c9PSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzEiLCJGSURPXzJfMV9QUkUiXSwiZXh0ZW5zaW9ucyI6WyJ1dm0iLCJjcmVkQmxvYiIsImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJsYXJnZUJsb2JLZXkiLCJtaW5QaW5MZW5ndGgiXSwiYWFndWlkIjoiNmQ0YWE3NDVkYWQ1NDBjNGI5YjQ2YTI1MmZjZWU3MGYiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjp0cnVlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImxhcmdlQmxvYnMiOnRydWUsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjp0cnVlLCJhbHdheXNVdiI6ZmFsc2V9LCJtYXhNc2dTaXplIjoxNjAwLCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjgsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6OTYsInRyYW5zcG9ydHMiOlsibmZjIiwidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN30seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTM1fV0sIm1heFNlcmlhbGl6ZWRMYXJnZUJsb2JBcnJheSI6NDA5NiwiZm9yY2VQSU5DaGFuZ2UiOmZhbHNlLCJtaW5QSU5MZW5ndGgiOjQsImZpcm13YXJlVmVyc2lvbiI6MjYyMTQ1LCJtYXhDcmVkQmxvYkxlbmd0aCI6MzIsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjoyLCJyZW1haW5pbmdEaXNjb3ZlcmFibGVDcmVkZW50aWFscyI6NTB9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiTk9UX0ZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjYtMDQtMjgifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI2LTA0LTI4In0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiMzQwYzg1ZWE4ZGNkNjliNDNhOTZjYjAzM2I0ZTRiYzYwOGFiNGI3ZiJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyIzNDBjODVlYThkY2Q2OWI0M2E5NmNiMDMzYjRlNGJjNjA4YWI0YjdmIl0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IDUgU2VyaWVzIChDb25zdW1lciBQcm9maWxlKSJ9LCJkZXNjcmlwdGlvbiI6Ill1YmlLZXkgNSBTZXJpZXMgKENvbnN1bWVyIFByb2ZpbGUpIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTcyOCwicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoyfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCIsInJlbW90ZV9oYW5kbGUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlEU2pDQ0FqS2dBd0lCQWdJVVRuYmJHSVIyTkh2enFJS0ZBZVF3RzFYQmlzMHdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFRWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPc1hqM2swNEJhbjRUWWR0WktxRC9PUEp4eUR5YVBtQ0JVRlVpYVpJZ1R0ZVpuajNYMjVEaGdwWlpYc0M0RDB5ZEljcmxBNndOVUluT1JML0w5ekJiVEVJTUFWTUdvNmc3VUtBbWIyTUY2QUhibmhZSmQ5ZWlrdXBWTldTaEhOWU5jNEdCZE8xWU42QWZVcXZKaEhiZTNWNFNOTVBtQlJFS0pQVno3VGh3Z21nZ1RlOFdzMkswL3dzcXYyd1NFN3BiQ0JzVVpoSVg1MWJaTTNwcUR3SlBUbVJGRXZ0MC82dEc1ZU84RjNqMTRPWHFmRWhtam4xVnZ4S0RZUU9MWkF4Q3d3Z0MwUDRDZGZXdjN5OFBTUjhJMzU0aE8xWStHek5qdklxWDM4TktMeXd1SVlIRmVyT3hObHhFTUJ2RmhZQnVSdVlBa2tnVWFQcU42VUJoc0lMcnNDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNDb1JIaGl5Tm5iblhSV0lMNlpCWG9CWDlZVE1COEdBMVVkSXdRWU1CYUFGQ0FvVUNFYnBGcGI2RlBMblozRjVQeHNMM29mTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFDUUZhZkpJMS81V2c5Q0VFaW1FMVJQNTRSZ1F3VE5UT09Rc0xBQ1RlK3JJdGxGUXpDOVpEaHJWODI4eVg3anp5K0FBc3AzaXpLN1QxdGgyZGw3bSt0dTBzdzJQYS9vbGMwMm50NlB5SXczNDhnYUh6aEkxKzBLRTQ1cXh2RkRlTDJsTXhiUGZDWXZ5RUVhWXpqaVFFTFU1OTUxcFhHV3lLTWEvNGZMdE8rWktPWGhNdVZlcTRyWERQSTU0VzZKSE9pQWFpS2Rpdys1ZTNjMmt0L2pGSVF0TTZ2TVhnOUxORnpkakVUTnQyMFZYOVFldlJwRlpmdWNNRzl3Q2FRRG9GbFB6cFRNSktoUGV2L2ltSm1aWWhLZnIwbExjZW10cWpJeExBb3FaZE9ZZkhCZzYrdkFjZFBJL2lhdUdwVUF2N1grVUtObUR3aloyQmFINHNMd2hCMm0iLCJNSUlEUnpDQ0FqR2dBd0lCQWdJVWV4OW5UOXZ3Wk5YUzQ4M0xkaVlHZncyU2pTb3dDd1lKS29aSWh2Y05BUUVMTUM0eExEQXFCZ05WQkFNTUkxbDFZbWxqYnlCQmRIUmxjM1JoZEdsdmJpQkpiblJsY20xbFpHbGhkR1VnUWlBeE1DQVhEVEkxTURnd01UQXdNREF3TUZvWUR6azVPVGt4TWpNeE1qTTFPVFU1V2pBbk1TVXdJd1lEVlFRRERCeFpkV0pwWTI4Z1JrbEVUeUJCZEhSbGMzUmhkR2x2YmlCQ01pQXhNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXUxTWV2bnk5ZHlPOVpVQzM5U29NaExjUi9EWHJ0Ri9jaU0xMnRjaXkyRVhBWjZNa3JpdlZ0Q2ZFVk05WDZJU1RFbkJQNnVTWVlvdjZwcHY2TzZKaDJOSG1ZbTR3K0puUzRWbkNQVTdtSEFNZlZJMk1HVFRNVk9ldzB4VXNHN3NJU0lrSURVQm11azhZSzljNXppYzkrdkZRR0xJa3NkWE81aVZGSWdORzUzY0dYRDRaTFpvQVBpdTBQRW96eEFxWUlhSTRneEtoT0EzUzgvVzhtSVdzdTZvZnlqNEd2a0ZHNlo3a3lGMzEwN1A3bXdGSExySTNFTmFQV01PRmNUYUdhMGR3Ky92VlJ3alJjRVpCVnN1dVQvODdja1NzMGE1cGt0M3ZaQmxhWWVUOHB6U3JlVjdtb3djSU05MEwyaWFBVGxQMG54bWFFNm5PeVRib2pGVmwyd0lEQVFBQm8yWXdaREFkQmdOVkhRNEVGZ1FVU1hFaDNzYTNidER1cm00TU0vQzdTMWxSdXVZd0h3WURWUjBqQkJnd0ZvQVU2cmRDa0o0TWUyUjYyMVI4QTdwOFRwL1lvV0V3RWdZRFZSMFRBUUgvQkFnd0JnRUIvd0lCQURBT0JnTlZIUThCQWY4RUJBTUNBWVl3Q3dZSktvWklodmNOQVFFTEE0SUJBUUI1R2MzaGFmdHA3aEtzRVpzbytpL1o1blJ1cWRtekcyV0NsVW9SVXFiYVB5Z2xuSkRqS1Iva2ZnT2w2aWJiRi96dGhtM0ttWFE3SGNESVAyeE1kRzdVMkwyaW1iSlFIcVBmL2gySHFvamI0clpndWUrNlc0a3RTUjVlbFI5TDFyWXFFL1NHWU00aUVLb1ZRU3Y3UlQxcnhJZVdpS3N3L1Z4eGkvUU9uc3gzRjd4ODBDQ1lnQjRFM3lReDhWVFc0NDBoVEV3VEExZU1IT2l4MzJ0UHR5eUhJYThQVlZJZlZwSFFKQmFNVnZ2NTA4VUVqd2tiVTJybmpmem9TVE5TOUE1alVROG1CU3ZlOTVyakIwZG85OEVVK0R4ZEJxWDIrSDZpNXdsSUNGZ3poZHpjc25lOWhHS1Q2bHpUWDRjSWRKc3JZMit4bGVLMEZGUXk2bEdFVkxFZSIsIk1JSURTRENDQWpDZ0F3SUJBZ0lVRHFFUncrNFJuR1NnZ3hnVWV3SkZFUERSWjNZd0RRWUpLb1pJaHZjTkFRRUxCUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURJN1huSCtadkR3TUNRVThNOFplVjVxc2N1Ymx2VllhYVJ0M1liYXhuOWdvZEx4NXN3SDBsWHJkZ2poNWg3RnBWZ0NnWVlYN0U0YmwxdmJ6VUxlbXJNV1Q4TjNXTUdVZThRQUpiQmVpb1Y3Vy9FK2hUWlAvMFNLSlZhM2V3S0JvNlVMZU1uZlFaRHJWT1JBazh3VExxMnY1TGxqNXZNajdKdE9vdEthOUo3bkhTOGtMbXpYWFNhajBTd0VQaDVPQVpVVE5WNHpzMWJ2b1RBUVFXckw0L0o5UXVLdDZXQ0ZFNW5VTmlSUWNFYlZGOG1scUsyYngyejZva1ZsdHlEVkxDeFlicFVURUx2WTF1c1IzRFRHUFVvSUNsT200Y3Jwd25EUkxWSHZqWWVQR0JCLy9wRXl6eEEvZ2NTY3hqd2FIMVpVdzliblNiSHl1cktxYlRhMUt2akFnTUJBQUdqWmpCa01CMEdBMVVkRGdRV0JCVHF0MEtRbmd4N1pIcmJWSHdEdW54T245aWhZVEFmQmdOVkhTTUVHREFXZ0JUUzd1OWFJbzA2YlZ3amx6M3loZFVtOFNWN2tqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQTRHQTFVZER3RUIvd1FFQXdJQmhqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFxUWFDV014VEdxVlZYN1NrN2trSm1VdWVUU1lLdVU2K0tCQlNnd0lSbmx3OUs3SGUxSXB4WjBoZHdwUE5pa0tqbWN5RmdGUHpoSW13SEpneHh1VDkwUHczdllPZGNKSk5rdERnMzVQWE9melNuMTVjRkF4MVJPMG1QVG1JYjhkWGlFV09wem9YdmR3WERNNDFaYUNEWU1UN3c0SVF0TXl2RTd4VUJacTJianRBbnEvTkRVQTdiZTRIOEgzaXBDKy8rTktsVXJjVWgrajQ4SzY3V0kwdTFtNkZlUXVlQkE3bjA2ajgyNXJxRHFzYUxzOVRiN0tBSEF3OFBtcldhTlBHMmtqS2VyeFBFZmVjaXZsRmF3cDJSV1p2eHJWdG4zVFYyU0J4eUNKQ2tYc05EMDVkQ0VyVkhTSklzK0JkdFRWTlk5QXd0eVBtbnliMHY0bVNUenZXZHc9PSIsIk1JSURQakNDQWlhZ0F3SUJBZ0lVWHplaUVESkVPVHQxNEY1bjBvNlpmL2JCd2lVd0RRWUpLb1pJaHZjTkFRRU5CUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTVo2L1R4TThySVQrRWFvUHZHODFvbnRNT28vMm1RMlJCd0pIUzBRWmN4VmFOWHZsMTJMVWhCWjVMbWlCU2NJWmQxUm54MW9kNTg1aCsvZGhLN2hFbTdKQUFMa0tLdHMxZk81M0tHTkxadWp6NWgzd0duY3I0aHlLRjBHNzRiL1UzSzloRTVtR05ENnpxWWNoQ1JBSGZyWU1ZUkRGNFlMMFg0RDVuR2R4dnBwQXk2bmtFbXRXbU1ud08zaTBUQXVjc3JiRTQ4NUh2R000cjBWcGdWZEpwdmdRamlUSkNUSXErRDM1aHd0VDhRREl2K25HdnBjeWk1d2NJZkNrenlDaW1KdWtoWXk2S29xTk1LUUVkcE5pU092V3lETVRNdDFid0N2RXpwdzkxdSttc1V0NHJqMGVmbk85czBaT3dkd01SRG5INHhnVWw1Wkx3cnJQa2ZDMS8wQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQjhHQTFVZEl3UVlNQmFBRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRTXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJEUVVBQTRJQkFRQzNJVy9zZ0I5cFo4YXBKTmp4dUdvWCtGa0lMa3Mwd01OcmRYTC9jb1V2c3JoenN2bDZtZVBNcmJHSkJ5SjFYbnF1QjVzZ2NSRU5GeGRRRm1hM21pbzhVcGYxb3dNMVpyZVhySjBtQURHMkJwbHFiSm54aXlZYStSMTFyZUlGVFdlSWhNTmNaS3NEWnJGQXlQdUZqQ1dTUXZKbU5XZTltRlJZRmdOaFhKS2tYSWI1SDFYZ0VEbHdpZWRZUk03Vm9sQk5sbGQ2cFJGS2xYOHVzdDZPVE1PZUFEbDJ4TkYwbTFMVGhTZGV1WHZEeUMxZzkrSUxmejNTNk9JWWdjM2lyb1JjRkQzNTRnN3JLZnU2N3FGQXc5Z0M0eWkweEJUUHJZOTVyaDQvSHFhVVlDQS9MOGxkUms2SDdYazM1RCtXVnBtcTJTaC94VDVIaUZ1aGY0d0piMGJLIiwiTUlJRFNEQ0NBakNnQXdJQkFnSVVVY21NWHpSSUZPZ0dUSzBUYjNnRXVaWVprQkl3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRRG01NTViV1k5V1crdE9ZMHJJV0hsZGgrYU5hbm9DWkNGaDdHazNZWnJRbVBVdzBoa1NHNnFZSFF0UCtmWnlTMzNWRXJ2ZytCUXFubXVtZ05oZnhGcmt3RVpFTGVpZEJjQzhDNEFnNG5xcWlQV3B6c3ZJMTdOY3hZbEluTE5MRmNaWS8rZ09pTjZaT1RpaE81L3ZCWk1iajlyaWFBY3FsaVltTkdKUGdUY01HYUVBeU16RU1OeTJubTZFcCtwalA1YUY2Z2kyMXQvVVFGc3VKMWoyUmoveW5NL1NkUnQrZWNhbDVPWW90eEhrRmJMOXZ2djJBMk92NUlUWkNsdzRiT1M5bnB5cFFpbU9aNVFBWXl0bVlhUXBXbC9wTVl6NnpTajhScWtWRE5FSkdxTmZUS0EyaXZMWXdYNmxTdHRNUGFwZzBKODRsOVgwdm9WTi9GcFM0VkNWQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJRZ0tGQWhHNlJhVytoVHk1MmR4ZVQ4YkM5Nkh6QWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQVlNemdMckpMSXIwT292UW5BWnJSSUd1YWJpSFNVS1NtYkxSV3BSa1dlQXRzQ2hERUhwWGNKL2JnRE5LWVdvSHFROHhSVWpCNEN5ZXBZZXZjM1lsckc4bzd6SHhwZlZjYW9MNVNldUprekh4S240YlRhU3A5K012d2FtbnA2NGtaTWlOYkZMa25mUDlrWUtvUkhrTVdoZVJKMVVzUDF6NFNjbWtDZUlMZnNNczZ2cW92cWpXQ2xGc0pwQmNzbHVZSFdGN2JCSjFuNFJ3ZytBVEVvcFk0SWdHdjZadndjK0E5citBVDJocXBvU2tZb0FsK0FOWXdnc2xPZjlzSmUwVitUQTlZWS9VbGFCbVBQVGQwLy9yOXd2Y2VQV1prUGpLb0FDL3pVTmhmRGJoNExWOEdIczNseVgyWG9tTC9MTmM4Sll6eUlhREVoR1F2ZW9QaGgvdHIxZz09IiwiTUlJRFNqQ0NBaktnQXdJQkFnSVVSMzhtcTI2U2Yyc3pWVjJCZEc2V0VON2t1V1V3RFFZSktvWklodmNOQVFFTEJRQXdMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3SUJjTk1qUXhNakF4TURBd01EQXdXaGdQT1RrNU9URXlNekV5TXpVNU5UbGFNQ1l4SkRBaUJnTlZCQU1NRzFsMVltbGpieUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRUlnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTlkwV2I5b1BvUm9Lb1F5V1BhSnB6MTF2cldUZzZ6VHRtTmoyVm9LUm55dktHUnFwemI4M3c1bDZZQTk2VVlrWUJEUVAwaWxPMkRQZTZ3V3FWUjV6RGZSemRjSDhiaCtMN2RHR3ZhZTZoUlRaaGtGa0NwWERzNEhjY2tuckRmOEZDbEo3SGUzOUpmNDIvRzFRbTJ6ejlXV21yUFh0Z2lLL3gwNUdqc1FmR3VERzF6ZjVRVFVVaWU4bHd5bUszVGZkT3ZOZWVKQUFQZTJwbjdJdGZSYityVnJOV2lEemxSbjJ2Tm5aMndQbzR3SC9XSjZkaFhaRytyTVdUK2E2Qm9jZzFVZkl3NmtkdW5HNGJUcFp6c3ZhY0ZZeVIwbXBmK0RlT25wU1dBbXl3SldIdlRsZjJZWHhGeWVYY1RBQ2RRbGNNTkdKMlZoWlE0OHh0UDUvUkJQLzhrQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZDaHk0Mm9raXFjVFMxaXFhL0hSV2prQm40SC9NQjhHQTFVZEl3UVlNQmFBRk9xM1FwQ2VESHRrZXR0VWZBTzZmRTZmMktGaE1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQW4rUkhJUGJ0TUVETmRUMWc4SC9SaXRBa1VkTGdBdDF0V0dXbmxqOWtuYnY0LzRHbFg3QzlwNDVlZlBPOS9hWkw2T1YxWFJLQmk2S210Qlc1SzdudVlFbk14LzVCcUJTYkxUN3JoZHVDNDlUQmVNYjlQSGRYc1RsU1ZOWWVmcjFkR2lkcjRqMHhWQlFMYjFya25EQWJkV0R6S2Z2bmF5S084RnJ3ZTdIeDg0M01HL3JKK2MwWHJ1VXZiZlZUQ0hMaUlXaE03b05EaEw4eG9iNnhVbzlLTEtjU0wrSXRZc08zLzlXYjhROUdqc3FMNEZYc0RjRzFTYVloN0twZnVNbU9peHF6SlpPMm5JaWNQWVJnMUkyU3VpVWZZTzcwdG1kSGNibCtrU1FtU1l0N3JxNHZpSUxnMkd4M2o5cklUdVdUamJhVWFTU1F4Z09tTVNIdXl6TUFDIl0sImljb24iOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJpY29uRGFyayI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsInByb3ZpZGVyTG9nb0xpZ2h0IjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwicHJvdmlkZXJMb2dvRGFyayI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI2LTA0LTI1IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTcyOCwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZdWJpS2V5IDUgU2VyaWVzIChDb25zdW1lciBQcm9maWxlKSIsImNlcnRpZmljYXRlTnVtYmVyIjoiVTJGMTAwMDIwMjYwNDI1MDEwIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25Qcm9maWxlcyI6WyJjb25zdW1lciJdLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI2LTA0LTI1IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTcyOH1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNi0wNS0wMSJ9LHsiYWFndWlkIjoiMTc1Y2QyOTgtODNkMi00YTI2LWI2MzctMzEzYzA3YTY0MzRlIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiIxNzVjZDI5OC04M2QyLTRhMjYtYjYzNy0zMTNjMDdhNjQzNGUiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiQ2h1bmdod2EgVGVsZWNvbSBGSURPMiBTbWFydCBDYXJkIEF1dGhlbnRpY2F0b3IifSwiZGVzY3JpcHRpb24iOiJDaHVuZ2h3YSBUZWxlY29tIEZJRE8yIFNtYXJ0IENhcmQgQXV0aGVudGljYXRvciIsImFsdGVybmF0aXZlRGVzY3JpcHRpb25zIjp7InpoLUNOIjoi5Lit6I-v6Zu75L-h5pm65oWn5Y2hRklETzLouqvku73pqZforYnlmagifSwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfSx7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQ056Q0NBYjZnQXdJQkFnSVVYeHdFa1VINCtoQjFsVThGSk5wQmd6TzUyV293Q2dZSUtvWkl6ajBFQXdNd1VqRUxNQWtHQTFVRUJoTUNWRmN4R1RBWEJnTlZCQW9NRUVOb2RXNW5hSGRoSUZSbGJHVmpiMjB4S0RBbUJnTlZCQU1NSDBOSVZDQkdTVVJQTWlCQmRYUm9aVzUwYVdOaGRHOXlJRkpQVDFRZ1EwRXdJQmNOTWpNd05ERTFNVEExTURNMFdoZ1BNakExTURBNE16RXhNRFV3TXpSYU1GSXhDekFKQmdOVkJBWVRBbFJYTVJrd0Z3WURWUVFLREJCRGFIVnVaMmgzWVNCVVpXeGxZMjl0TVNnd0pnWURWUVFEREI5RFNGUWdSa2xFVHpJZ1FYVjBhR1Z1ZEdsallYUnZjaUJTVDA5VUlFTkJNSFl3RUFZSEtvWkl6ajBDQVFZRks0RUVBQ0lEWWdBRWN1T25ja3pVcEhzMzBCZkFxRWpuYVRoN1FJYmJzaDZJTzltaW9YVDI2VHE1OE9UK1VyUW1qTVpXT3ZUYjVLTWVIN0F1TW5QMHZ0dVJpN053eWJqRnBMWjB6K05WUVdMbGkreTZNclErTEFYc2tMdWJsZHlqTG1scnJFYjNiblY0bzFNd1VUQWRCZ05WSFE0RUZnUVVpMWhGZ3Zydzl5aStkdkUyVGlBVm5oYzBKVW93SHdZRFZSMGpCQmd3Rm9BVWkxaEZndnJ3OXlpK2R2RTJUaUFWbmhjMEpVb3dEd1lEVlIwVEFRSC9CQVV3QXdFQi96QUtCZ2dxaGtqT1BRUURBd05uQURCa0FqQVdCb3BhTDRqeG9ZYnZDNXpjakpPL0pFdDcyVmlRYW9tMXBLem1QbUtpZmxmdGk5SUluM3J6MWppdFAzenluQzRDTUhaTnQxd01KdE5iRlI1UklaZnZFdEU3bTRvKzhnZGpyWmpJWXErT2pBWWI1Rkc1TU1XUEpmL2VZRkdUSW9XVEZnPT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSVFBQUFDR0NBSUFBQUNUN3JYN0FBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFEc01BQUE3REFjZHZxR1FBQUF6YlNVUkJWSGhlN1ozNVV4UlhIc0FEWWFQeElKcHNFbE9sTVZlWnN6YXB6VkdwMnRxdFpKTTFpYWxjdThtQWlJaEdXRUVsZU1TTmhvMDV2Q1VhU1R5aUVkdzVZQmlZQWRRQlliZ1BHUmhPTTh6QURJaklEY1BsWDdEZkxGdVc5YlhwNmU1NWIvcUpYZlg1UVMzN1haOTVWL2M3N25DUFhWTmdCRVVHUXlneUdJSmRHYTdSYTQ3aDhZYStrYW9yUTNtTzNwVEs5cTlOelpFbnF0N1laWGw2Yzg2Q0tFTndSTnJNTUYxUXFDWW81SCtFYW1hRTZlWkdwRDBZWlhocVUvWmZ2eXVBLzd6VDFIUzZ3cDNiMGxQVk9RUkJRWUFRTElxSUhaaVQwVFk2VWR2dHlXem9PcGhyajBtMnZyT3Y4S240N09CVmFZRXE5UjJmU0FFZUJFTlB4bWUvdmJkd1hiTDFnTm1lVVgrbDV1cHcyOGdFaWxwMkdKTFIzRCtxcWU1WWMvTGl5enZNRDhjYVo2OU1sU3hnS2dKVTZ0bmhxWXRpakM5dk4wTzlPVlBWM3RRL2dwSWhJL0xMZ0twUTBURzRTV3Q3S0RvajRLYmlvd3BFOThEYTlBMW5ha3JkQTVBTWxERC9JNXNNMStoRWVjZmdUNFhPancrWDNiTXFEUldUbjRGMjdLUHZTNUlzenRKMk9hM0lKc1BXN1lITXJ6dHREVDlhd1FqUnA2dC9LSEJBZDRLUzZqZGtrd0g5cDMxb2pFRmE1ZXZZR2VyQUZSUVpES0hJWUFpS01tQlk0dlNNQzJhQzZqQkdaR0ttaEdvaWFjbXc5WGgybXByV25yb29oS2hmcXIvT2FvYVJMZ3FFSURyclpSU3BOUDZkMlVSdnVFVmVobXYwV201THo3TDlSVUdoR2pTYzUrVE9FTTNTM1JaZHplV1dvWEVVRkVHKzBOZWplS1VCcVgxN2IrRzVTOTAwM25HUmw1SFowTFhrcyt3QVlXOHlZTHAzNklJREJwUW9FT0tRa2dGQTFoN2ZtSlZ1NjBSUitBNUpHUTdQK0MvbDd2dldwS1BVY3dJL3NWY1RjbzBOWFNnUVNoQ1VNY244MWZyakphMHR3eVJyTXpFWnZ3Nk9RU2N4S3p3VkpacVRHV0hhTlNlcmlsejlLQkI2RUpjQjNMMUNsNURSMkR3d2l1S1NEQmtaTUJZQ0UvZXQwZCsxWE91VitaSDYvV1k3eUVPQlVPVkxRd05LQmhIdVhhUGZZV2lBSmdGRkp3MHlNcUEzZzhLOUpBeXlWVnNnenVGeGxBeFNRTVpKZGVia08zQUZ5U2d5R0VLUndSQ0tESWFRS0tPc2ZlQlV1ZnRrbVVzSWJnYSthQmE3K2xHcUtBSEZVdW9lUUxFTFJJb01XNC9udlFQRjkwVHFZZjdNejd4SWZmVHBhdlM0TE93ME5xRzAwU0pTdjJ4ZmtWWFMreXZSTW1CS3NUVzFEdWJQYUFaME13R2ZxSi9abkpQdjdFVWh5QUtOU2Q5VVFPSEVhMnhPOFpNUDBUSjAxZzZCTHp5Q0k5S1NDcDNvY2Jud3B3d0FKclpucXRwUkdyd2lUa2JOMWVISE5waFF4SnhBdGZnd3NkZ2h4L3lPRXovTEFCYkhHcXM2eFgwVUVDR2pkV1RpNDhObEtNcXBtQjJ1YzdHMFpNLy9Nb0FQRWt0YVBTSUtRWVFNR0VGRkhLOThaMStoRUNSVVVxcjhYT1pDS2ZRRDRjY3FSTDBNRmQxbktOQkRrY0VRaWd5R1VHUXdoQ0tESWJ6SWFCdVpTTWhzZUNMTzlNajZUSzg4dXQ1NHNzeUZRdkNkMkdRcml1aVc0L0dOeHUzcDlWNjM1M2lSQWNQWlYzYVkwZkI1S3U1ZG5VN2pZMnJJa1hJVTBhM0lINzg0WCt4dG1PdEZScExGT1h1bG9EVUdnT3BJR1kwRmQ5TkR4cXh3M2FGOEI4b2FnazhHbE96ZkQ1V2lRS2NpS0ZSN3JMZ05oVUNFNlNFRFdMYS9pTCtsNHBOUjFqNFlMSGhQMGNKMW1abDBGa0ZOR3hselZxWVd0ZkcxVkh3eTlwKzNQNzdSSkl5c0ZUOVYxUFZTMmF6b2Z4bUJLczM5YXcwMzVaRUEzMlExb2R6ZENKK01tcXZEeGU0QklaUzRCMnF1ZWlodHNmYS9qQUNWK3BVdnphYkdMcFJOMytILzZPU2xBMmNCdVpxcGQvY1ZOZlVUV3kwb0JFVUdIKy9zTFlSS2o5SkREMFVHSDBFaG1vOE9sVlIzRGFFa1VVS1I0UVhvekRmK3A1WlNkNGpna0FFUmwzY01wdFpjMWduRzB0cUhBaUdJdkRLQW9GRE5BYk1kWmRrWHl0b0hPTzF5eUhBTWoyODRVd01UNzFuaFF0bDRwZ1lGUWhEWlpRQjNMZGVpTEVzR0NqWW0yY3E1VFl0RFJrUHZ5RnQ3Q2xGcStJRVpDUXFFSUN6SUlNdnIzeGJVOVhETXlUaGtWSFVPTGZrc0d6M1BROEFuYXEyMUF3VkNrT2tuNDdFTldaV1hPUmFPY01qSWJlbVpHeUhpWkpWQWxmcjhwVzRVQ0VHbW40dzVLMVBQLzhwUllod3lUbGU0WVFpQm51Y0JaUEMvY3ZHUjZTY0RTdXhFS2NkTFZlNmE4Wld4VVRnN1RVMk5mUlNQMEdKTnhxS1l6SVJNWEFoaU9jZlZsbkRJWUEzV1pQeCtUYnFoN29ycnBuVDZqaUpETklFaG10Q2tjb0tiWEsranlKREMvWittczc0cG54SnNkdUF3Y1VQcDlCME9HYlhkSHJGUWZkWE1wZ3pvT1VyY0E2Z2NSSUd5Q1hESWVHSGJ1ZWUyNUlnaTRsZ2xDb1FnYk1vQW5velBSdVVnSENoa2xFMkFRNGJBMDNCdTVObk5aMUVnQkdGV2hpOEVoV2hRTmdFT0dYZUttZkZOc2lqR1NLK2xtcFl5WU42SHNnbHd5QkExL1o1a2ZxVGUxSGdWaFVPSzIxb0cxQ0QwcEZkbWhPbGdIbzdDSWNWdDNVdzl1K1hza3Zoc1VUeTFLV2U3b1FHRlE0bzRkUzJLVGdMM3J6V2c0aUJDZ0VxOUlEb0R4U1dFWnpibm9Hd0NIRExLT3diTE9nWkVBWS9VOVhDTTFZZ0FJYVBvSkJDYllrWGxTQVQ0Z1cvVzJrcmJjWFJlNFR5UWtVUEd0SVRlQmt2UXpOWjVVK3hEVDhiUzNSWlNJMGxGaHEvQXNMNjZpOHpocW9vTVg1bXhYRnRBYUhFTWg0eFM5OERSb2xacFpOU1JmNWRKQktxYjhqOVBxMGZsNEJYT2I2TWNNazZWdTJGS2d1SVRDTXorR3Z2OHVqNVZJRlJsaUFXS2wzTXZDNGNNczcxbmp1RGRTZ2dZZDlPYi9ma0NVekptaDZjSy9leGEyVG4wUkZ3V2VsNDRyeWJrMHB0elNJWXBHWStzTjFVSVhLcFQzenZ5dDkwVzlMeHdRUHMrczkwL2kxT0Z3NVNNMTc3SjUveTljc2hvR1I1ZmwyeUZRY0tOcCttSzR2VnY4MjJNVlE2cU1nSlZHbFFDUEVEQlJwMnE1anorblVNRy9LaEwzUDBwbGU1a3FhZ3Zkdmo1UUdldlVKWHg4ZzR6S2dFZW9HQ0xYZjFDRno1UFM2aktlUDlnQ1lwT0dvb01Bb1FmSmZQVldaRkJnRGgxTFlwT0dvb01BdXpLdVlTaWt3YWZERnUzcDd4ajBIZFk2TXlweXRoNy9sZVU1YW5nWEtGekhUNFpCM05ibnR0eTFuZFdIYS95dzBVKy9GQ1Y4ZWdHRThyeVZQRFhJVDRaTUFJVGZvb0xEekFNajBtMnluaE5KMEJWaGtCbXJkQVZPUG5lNy9MSmFCdWRlUDlnTVFwUkdqTlg2SGFmdlVUMWtqdCtXSkN4ZEk5RitrRXV3T0Y4eDZ4d0hRcFVHdk5YNnhQeldsd3krWkJkQnZ3Y0QrYmErVGNTZUpFQlUvRVh0d3M5L01zcmN5UFNkaGdhdkI1SVJnUFpaVHovK2JsQ2I5K2d2TWlBZ3R1YVd2ZGdsT0crVC9WRVdMZ3VFem94LzljUFNqSUNWZXJnVmFrb2p6ZnpRRlI2dk1ibXRkZjBJbVBhUUVuR1l4dE1XVTNFbGxJcU1uemlUMS9sTlpEYno2aklrRTZBU3YzcHlZc0VtMXhGaG5TQ1FqU2NYMDhsbzhpUXpoTnhXV1J2YWhZaG83eGpNUHAwOVQ4T2w5NksvR0hyV1ZTVXZnTzlONG9Gc2ZiVVJhOW4yZDZJQ0JsT3ovaUgzNWVnQkNud3NHeC9rYWk3ZGNRMVUxV2RRNHRqalNoS0JVNFcvak5UN0IxeG92dU1sRXIzdkVnOWlsZ0JFUnlSZHBMcmRCQitSTXVBeGlwT1hTdmthcmpibGtDVkpqYWxSc0xsWDZKbEFOVmR3Mi90c2N5TlNKMnowaDhFaFdwUmJ1WGxkNkZhbE1JYmdXSjVjMWNCdE9lbzBJUWdSUVpRME5wM3BNQnhPTjhmdkNUNG1nTC9BR01rbE1JYmdXS1JmRStrUkJuKzVBT1dobkF2YlQvZlBFRHJxNlVpUXdRenczUmtwOXdJUllaUXdNUW1yYTJGNXAyY2lneWh2SnFRVzhhMVJaVWd4R1E0UFJNd21LTUJxZS93dmhBVW9zMno5emlHeDFEYUFNZzRLZ3JKa0pIaDhJd25aRFF1aURMTWhiRWRhV0FvaVlyRy93U28xQ2hWa3p5NDFyQXRyWTVVMjBXc1pqVDFqLzRydlg1R0dGdHpBcXJjdFZ5N05kWFdRTzRLRjVKOWhuMW83RWRMcS9DYmdXNXBZSDUzS0srRjdHSko4aDI0MW5wNWNhd1I2alZLL2JRQnNyWXdKcFBHdGM3a1piaEdyNWthdTk3NHJtQmF2cjhLVkdsZSt5WS9vKzRLalFWNTVHVk1jdkhLMExhMCtvOS9LUFVkLzcrMEQ0NUllM3R2SVVyR0pGdTBkWldTM2pzSmdaWU1vSFZrQW9ZWnZ2T2VmNGUyTUlwTnpHdXhEK0ZrVEVKMXhUQkZHYVR3MjZRUHh0QlBiOG94MUYxQkNmQWJpb3ovTXlOTUY1SlVudGZTUytOY2JZRW9NbjREcHF0SENod0VsNk5KUXpZWk1CcUJlYnNRM2srazJHZkFMSFhwSG91bHRlOTZkREx1VzVCTlJtUGZ5TStscnMxYVcweUtOU2FaanlYeElxNjVFY3ZpOWNaVkp5cC9peWpGdWtsck8xN1NSbkJHTFJiNWFzYklSR0ZiWDJLZS9hMDloYlBDQ2V5UDhvVzdWK2plM0ZWd3dHeUhLaUxqRGl1Wit3em9MY0ZLZ2JNdjRsakZ2YXZUQTI0cUpxcEFkUE1pOWVGSEt5NDRlaUVaTW5iZGt6RFVnZGYxZUk0V3RZWW1sYit3N2R4RDBSa3pWK2lJdjFPQkFHZUc2UlpFWnp5LzdaenFTTm1QaFU0YjcvWlRQOE9RakVtZ2xhanNITlJVZDN5WDA3ejY1NnEvZkgzaDRWZ2pOQ09TeGNDRDhQaWlHT09mZDE2SVBGSDFiWGF6dXJxajR2S2dqTTNSVkRBbjR6cXUwUW43MEppdDU3ZTk2RG5OVitGWC9KbW05c1B2UzE3YWJuNDR4Z2pOQy96R2cwSTFnU29OdERZQS9BSCtDdjg0THpJTml2N0ZMOHdmSkpiRXFXdVRMTTdzNW00SUJJS0NBT1hhVkNnRWRtWGNoaWd5R0VLUndSQ0tESVpRWkRDRUlvTWhGQmtNb2NoZ0NFVUdReWd5R0VLUndReGoxLzRMRk5STTRMN3doZzRBQUFBQVNVVk9SSzVDWUlJPSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzEiXSwiZXh0ZW5zaW9ucyI6WyJobWFjLXNlY3JldCIsImNyZWRQcm90ZWN0IiwiY3JlZEJsb2IiLCJsYXJnZUJsb2JLZXkiLCJtaW5QaW5MZW5ndGgiXSwiYWFndWlkIjoiMTc1Y2QyOTg4M2QyNGEyNmI2MzczMTNjMDdhNjQzNGUiLCJvcHRpb25zIjp7InJrIjp0cnVlLCJjbGllbnRQaW4iOnRydWUsInVwIjp0cnVlLCJsYXJnZUJsb2JzIjp0cnVlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsImFsd2F5c1V2IjpmYWxzZX0sIm1heE1zZ1NpemUiOjEwMjQsInBpblV2QXV0aFByb3RvY29scyI6WzEsMl0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6MTYsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6NDgsInRyYW5zcG9ydHMiOlsibmZjIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN31dLCJtYXhTZXJpYWxpemVkTGFyZ2VCbG9iQXJyYXkiOjEwMjQsImZvcmNlUElOQ2hhbmdlIjpmYWxzZSwibWluUElOTGVuZ3RoIjo0LCJmaXJtd2FyZVZlcnNpb24iOjEsIm1heENyZWRCbG9iTGVuZ3RoIjozMiwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjF9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMy0wNy0xOSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IkNodW5naHdhIFRlbGVjb20gRklETzIgU21hcnQgQ2FyZCBBdXRoZW50aWNhdG9yIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyMzA3MTkwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMy0wNy0xOSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIzLTEwLTAzIn0seyJhYWd1aWQiOiIzNDc0NDkxMy00ZjU3LTRlNmUtYTUyNy1lOWVjM2M0Yjk0ZTYiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjM0NzQ0OTEzLTRmNTctNGU2ZS1hNTI3LWU5ZWMzYzRiOTRlNiIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IEJpbyBTZXJpZXMgLSBNdWx0aS1wcm90b2NvbCBFZGl0aW9uIn0sImRlc2NyaXB0aW9uIjoiWXViaUtleSBCaW8gU2VyaWVzIC0gTXVsdGktcHJvdG9jb2wgRWRpdGlvbiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzYsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfSx7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciLCJlZDI1NTE5X2VkZHNhX3NoYTUxMl9yYXciLCJzZWNwMzg0cjFfZWNkc2Ffc2hhMzg0X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwiLCJiYURlc2MiOnsic2VsZkF0dGVzdGVkRlJSIjowLjAsInNlbGZBdHRlc3RlZEZBUiI6MC4wLCJpQVBBUlRocmVzaG9sZCI6MC4wLCJtYXhUZW1wbGF0ZXMiOjUsIm1heFJldHJpZXMiOjUsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NiwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjYsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwiLCJiYURlc2MiOnsic2VsZkF0dGVzdGVkRlJSIjowLjAsInNlbGZBdHRlc3RlZEZBUiI6MC4wLCJpQVBBUlRocmVzaG9sZCI6MC4wLCJtYXhUZW1wbGF0ZXMiOjUsIm1heFJldHJpZXMiOjUsImJsb2NrU2xvd2Rvd24iOjB9fV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlEU0RDQ0FqQ2dBd0lCQWdJVVVjbU1YelJJRk9nR1RLMFRiM2dFdVpZWmtCSXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFEbTU1NWJXWTlXVyt0T1kwcklXSGxkaCthTmFub0NaQ0ZoN0drM1laclFtUFV3MGhrU0c2cVlIUXRQK2ZaeVMzM1ZFcnZnK0JRcW5tdW1nTmhmeEZya3dFWkVMZWlkQmNDOEM0QWc0bnFxaVBXcHpzdkkxN05jeFlsSW5MTkxGY1pZLytnT2lONlpPVGloTzUvdkJaTWJqOXJpYUFjcWxpWW1OR0pQZ1RjTUdhRUF5TXpFTU55Mm5tNkVwK3BqUDVhRjZnaTIxdC9VUUZzdUoxajJSai95bk0vU2RSdCtlY2FsNU9Zb3R4SGtGYkw5dnZ2MkEyT3Y1SVRaQ2x3NGJPUzlucHlwUWltT1o1UUFZeXRtWWFRcFdsL3BNWXo2elNqOFJxa1ZETkVKR3FOZlRLQTJpdkxZd1g2bFN0dE1QYXBnMEo4NGw5WDB2b1ZOL0ZwUzRWQ1ZBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlFnS0ZBaEc2UmFXK2hUeTUyZHhlVDhiQzk2SHpBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBWU16Z0xySkxJcjBPb3ZRbkFaclJJR3VhYmlIU1VLU21iTFJXcFJrV2VBdHNDaERFSHBYY0ovYmdETktZV29IcVE4eFJVakI0Q3llcFlldmMzWWxyRzhvN3pIeHBmVmNhb0w1U2V1Smt6SHhLbjRiVGFTcDkrTXZ3YW1ucDY0a1pNaU5iRkxrbmZQOWtZS29SSGtNV2hlUkoxVXNQMXo0U2Nta0NlSUxmc01zNnZxb3ZxaldDbEZzSnBCY3NsdVlIV0Y3YkJKMW40UndnK0FURW9wWTRJZ0d2Nlp2d2MrQTlyK0FUMmhxcG9Ta1lvQWwrQU5Zd2dzbE9mOXNKZTBWK1RBOVlZL1VsYUJtUFBUZDAvL3I5d3ZjZVBXWmtQaktvQUMvelVOaGZEYmg0TFY4R0hzM2x5WDJYb21ML0xOYzhKWXp5SWFERWhHUXZlb1BoaC90cjFnPT0iLCJNSUlEUGpDQ0FpYWdBd0lCQWdJVVh6ZWlFREpFT1R0MTRGNW4wbzZaZi9iQndpVXdEUVlKS29aSWh2Y05BUUVOQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU1aNi9UeE04cklUK0Vhb1B2Rzgxb250TU9vLzJtUTJSQndKSFMwUVpjeFZhTlh2bDEyTFVoQlo1TG1pQlNjSVpkMVJueDFvZDU4NWgrL2RoSzdoRW03SkFBTGtLS3RzMWZPNTNLR05MWnVqejVoM3dHbmNyNGh5S0YwRzc0Yi9VM0s5aEU1bUdORDZ6cVljaENSQUhmcllNWVJERjRZTDBYNEQ1bkdkeHZwcEF5Nm5rRW10V21NbndPM2kwVEF1Y3NyYkU0ODVIdkdNNHIwVnBnVmRKcHZnUWppVEpDVElxK0QzNWh3dFQ4UURJdituR3ZwY3lpNXdjSWZDa3p5Q2ltSnVraFl5NktvcU5NS1FFZHBOaVNPdld5RE1UTXQxYndDdkV6cHc5MXUrbXNVdDRyajBlZm5POXMwWk93ZHdNUkRuSDR4Z1VsNVpMd3JyUGtmQzEvMENBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUI4R0ExVWRJd1FZTUJhQUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUU13RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCRFFVQUE0SUJBUUMzSVcvc2dCOXBaOGFwSk5qeHVHb1grRmtJTGtzMHdNTnJkWEwvY29VdnNyaHpzdmw2bWVQTXJiR0pCeUoxWG5xdUI1c2djUkVORnhkUUZtYTNtaW84VXBmMW93TTFacmVYckowbUFERzJCcGxxYkpueGl5WWErUjExcmVJRlRXZUloTU5jWktzRFpyRkF5UHVGakNXU1F2Sm1OV2U5bUZSWUZnTmhYSktrWEliNUgxWGdFRGx3aWVkWVJNN1ZvbEJObGxkNnBSRktsWDh1c3Q2T1RNT2VBRGwyeE5GMG0xTFRoU2RldVh2RHlDMWc5K0lMZnozUzZPSVlnYzNpcm9SY0ZEMzU0ZzdyS2Z1NjdxRkF3OWdDNHlpMHhCVFByWTk1cmg0L0hxYVVZQ0EvTDhsZFJrNkg3WGszNUQrV1ZwbXEyU2gveFQ1SGlGdWhmNHdKYjBiSyIsIk1JSURSekNDQWpHZ0F3SUJBZ0lVZXg5blQ5dndaTlhTNDgzTGRpWUdmdzJTalNvd0N3WUpLb1pJaHZjTkFRRUxNQzR4TERBcUJnTlZCQU1NSTFsMVltbGpieUJCZEhSbGMzUmhkR2x2YmlCSmJuUmxjbTFsWkdsaGRHVWdRaUF4TUNBWERUSTFNRGd3TVRBd01EQXdNRm9ZRHprNU9Ua3hNak14TWpNMU9UVTVXakFuTVNVd0l3WURWUVFEREJ4WmRXSnBZMjhnUmtsRVR5QkJkSFJsYzNSaGRHbHZiaUJDTWlBeE1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBdTFNZXZueTlkeU85WlVDMzlTb01oTGNSL0RYcnRGL2NpTTEydGNpeTJFWEFaNk1rcml2VnRDZkVWTTlYNklTVEVuQlA2dVNZWW92NnBwdjZPNkpoMk5IbVltNHcrSm5TNFZuQ1BVN21IQU1mVkkyTUdUVE1WT2V3MHhVc0c3c0lTSWtJRFVCbXVrOFlLOWM1emljOSt2RlFHTElrc2RYTzVpVkZJZ05HNTNjR1hENFpMWm9BUGl1MFBFb3p4QXFZSWFJNGd4S2hPQTNTOC9XOG1JV3N1Nm9meWo0R3ZrRkc2WjdreUYzMTA3UDdtd0ZITHJJM0VOYVBXTU9GY1RhR2EwZHcrL3ZWUndqUmNFWkJWc3V1VC84N2NrU3MwYTVwa3QzdlpCbGFZZVQ4cHpTcmVWN21vd2NJTTkwTDJpYUFUbFAwbnhtYUU2bk95VGJvakZWbDJ3SURBUUFCbzJZd1pEQWRCZ05WSFE0RUZnUVVTWEVoM3NhM2J0RHVybTRNTS9DN1MxbFJ1dVl3SHdZRFZSMGpCQmd3Rm9BVTZyZENrSjRNZTJSNjIxUjhBN3A4VHAvWW9XRXdFZ1lEVlIwVEFRSC9CQWd3QmdFQi93SUJBREFPQmdOVkhROEJBZjhFQkFNQ0FZWXdDd1lKS29aSWh2Y05BUUVMQTRJQkFRQjVHYzNoYWZ0cDdoS3NFWnNvK2kvWjVuUnVxZG16RzJXQ2xVb1JVcWJhUHlnbG5KRGpLUi9rZmdPbDZpYmJGL3p0aG0zS21YUTdIY0RJUDJ4TWRHN1UyTDJpbWJKUUhxUGYvaDJIcW9qYjRyWmd1ZSs2VzRrdFNSNWVsUjlMMXJZcUUvU0dZTTRpRUtvVlFTdjdSVDFyeEllV2lLc3cvVnh4aS9RT25zeDNGN3g4MENDWWdCNEUzeVF4OFZUVzQ0MGhURXdUQTFlTUhPaXgzMnRQdHl5SElhOFBWVklmVnBIUUpCYU1WdnY1MDhVRWp3a2JVMnJuamZ6b1NUTlM5QTVqVVE4bUJTdmU5NXJqQjBkbzk4RVUrRHhkQnFYMitINmk1d2xJQ0ZnemhkemNzbmU5aEdLVDZselRYNGNJZEpzclkyK3hsZUswRkZReTZsR0VWTEVlIiwiTUlJRFNqQ0NBaktnQXdJQkFnSVVUbmJiR0lSMk5IdnpxSUtGQWVRd0cxWEJpczB3RFFZSktvWklodmNOQVFFTEJRQXdMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3SUJjTk1qUXhNakF4TURBd01EQXdXaGdQT1RrNU9URXlNekV5TXpVNU5UbGFNQ1l4SkRBaUJnTlZCQU1NRzFsMVltbGpieUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRUVnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBT3NYajNrMDRCYW40VFlkdFpLcUQvT1BKeHlEeWFQbUNCVUZVaWFaSWdUdGVabmozWDI1RGhncFpaWHNDNEQweWRJY3JsQTZ3TlVJbk9STC9MOXpCYlRFSU1BVk1HbzZnN1VLQW1iMk1GNkFIYm5oWUpkOWVpa3VwVk5XU2hITllOYzRHQmRPMVlONkFmVXF2SmhIYmUzVjRTTk1QbUJSRUtKUFZ6N1Rod2dtZ2dUZThXczJLMC93c3F2MndTRTdwYkNCc1VaaElYNTFiWk0zcHFEd0pQVG1SRkV2dDAvNnRHNWVPOEYzajE0T1hxZkVobWpuMVZ2eEtEWVFPTFpBeEN3d2dDMFA0Q2RmV3YzeThQU1I4STM1NGhPMVkrR3pOanZJcVgzOE5LTHl3dUlZSEZlck94Tmx4RU1CdkZoWUJ1UnVZQWtrZ1VhUHFONlVCaHNJTHJzQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZDQ29SSGhpeU5uYm5YUldJTDZaQlhvQlg5WVRNQjhHQTFVZEl3UVlNQmFBRkNBb1VDRWJwRnBiNkZQTG5aM0Y1UHhzTDNvZk1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQ1FGYWZKSTEvNVdnOUNFRWltRTFSUDU0UmdRd1ROVE9PUXNMQUNUZStySXRsRlF6QzlaRGhyVjgyOHlYN2p6eStBQXNwM2l6SzdUMXRoMmRsN20rdHUwc3cyUGEvb2xjMDJudDZQeUl3MzQ4Z2FIemhJMSswS0U0NXF4dkZEZUwybE14YlBmQ1l2eUVFYVl6amlRRUxVNTk1MXBYR1d5S01hLzRmTHRPK1pLT1hoTXVWZXE0clhEUEk1NFc2SkhPaUFhaUtkaXcrNWUzYzJrdC9qRklRdE02dk1YZzlMTkZ6ZGpFVE50MjBWWDlRZXZScEZaZnVjTUc5d0NhUURvRmxQenBUTUpLaFBldi9pbUptWlloS2ZyMGxMY2VtdHFqSXhMQW9xWmRPWWZIQmc2K3ZBY2RQSS9pYXVHcFVBdjdYK1VLTm1Ed2paMkJhSDRzTHdoQjJtIiwiTUlJRFNEQ0NBakNnQXdJQkFnSVVEcUVSdys0Um5HU2dneGdVZXdKRkVQRFJaM1l3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRREk3WG5IK1p2RHdNQ1FVOE04WmVWNXFzY3VibHZWWWFhUnQzWWJheG45Z29kTHg1c3dIMGxYcmRnamg1aDdGcFZnQ2dZWVg3RTRibDF2YnpVTGVtck1XVDhOM1dNR1VlOFFBSmJCZWlvVjdXL0UraFRaUC8wU0tKVmEzZXdLQm82VUxlTW5mUVpEclZPUkFrOHdUTHEydjVMbGo1dk1qN0p0T290S2E5SjduSFM4a0xtelhYU2FqMFN3RVBoNU9BWlVUTlY0enMxYnZvVEFRUVdyTDQvSjlRdUt0NldDRkU1blVOaVJRY0ViVkY4bWxxSzJieDJ6Nm9rVmx0eURWTEN4WWJwVVRFTHZZMXVzUjNEVEdQVW9JQ2xPbTRjcnB3bkRSTFZIdmpZZVBHQkIvL3BFeXp4QS9nY1NjeGp3YUgxWlV3OWJuU2JIeXVyS3FiVGExS3ZqQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJUcXQwS1FuZ3g3WkhyYlZId0R1bnhPbjlpaFlUQWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQXFRYUNXTXhUR3FWVlg3U2s3a2tKbVV1ZVRTWUt1VTYrS0JCU2d3SVJubHc5SzdIZTFJcHhaMGhkd3BQTmlrS2ptY3lGZ0ZQemhJbXdISmd4eHVUOTBQdzN2WU9kY0pKTmt0RGczNVBYT2Z6U24xNWNGQXgxUk8wbVBUbUliOGRYaUVXT3B6b1h2ZHdYRE00MVphQ0RZTVQ3dzRJUXRNeXZFN3hVQlpxMmJqdEFucS9ORFVBN2JlNEg4SDNpcEMrLytOS2xVcmNVaCtqNDhLNjdXSTB1MW02RmVRdWVCQTduMDZqODI1cnFEcXNhTHM5VGI3S0FIQXc4UG1yV2FOUEcya2pLZXJ4UEVmZWNpdmxGYXdwMlJXWnZ4clZ0bjNUVjJTQnh5Q0pDa1hzTkQwNWRDRXJWSFNKSXMrQmR0VFZOWTlBd3R5UG1ueWIwdjRtU1R6dldkdz09IiwiTUlJRFNqQ0NBaktnQXdJQkFnSVVSMzhtcTI2U2Yyc3pWVjJCZEc2V0VON2t1V1V3RFFZSktvWklodmNOQVFFTEJRQXdMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3SUJjTk1qUXhNakF4TURBd01EQXdXaGdQT1RrNU9URXlNekV5TXpVNU5UbGFNQ1l4SkRBaUJnTlZCQU1NRzFsMVltbGpieUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRUlnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTlkwV2I5b1BvUm9Lb1F5V1BhSnB6MTF2cldUZzZ6VHRtTmoyVm9LUm55dktHUnFwemI4M3c1bDZZQTk2VVlrWUJEUVAwaWxPMkRQZTZ3V3FWUjV6RGZSemRjSDhiaCtMN2RHR3ZhZTZoUlRaaGtGa0NwWERzNEhjY2tuckRmOEZDbEo3SGUzOUpmNDIvRzFRbTJ6ejlXV21yUFh0Z2lLL3gwNUdqc1FmR3VERzF6ZjVRVFVVaWU4bHd5bUszVGZkT3ZOZWVKQUFQZTJwbjdJdGZSYityVnJOV2lEemxSbjJ2Tm5aMndQbzR3SC9XSjZkaFhaRytyTVdUK2E2Qm9jZzFVZkl3NmtkdW5HNGJUcFp6c3ZhY0ZZeVIwbXBmK0RlT25wU1dBbXl3SldIdlRsZjJZWHhGeWVYY1RBQ2RRbGNNTkdKMlZoWlE0OHh0UDUvUkJQLzhrQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZDaHk0Mm9raXFjVFMxaXFhL0hSV2prQm40SC9NQjhHQTFVZEl3UVlNQmFBRk9xM1FwQ2VESHRrZXR0VWZBTzZmRTZmMktGaE1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQW4rUkhJUGJ0TUVETmRUMWc4SC9SaXRBa1VkTGdBdDF0V0dXbmxqOWtuYnY0LzRHbFg3QzlwNDVlZlBPOS9hWkw2T1YxWFJLQmk2S210Qlc1SzdudVlFbk14LzVCcUJTYkxUN3JoZHVDNDlUQmVNYjlQSGRYc1RsU1ZOWWVmcjFkR2lkcjRqMHhWQlFMYjFya25EQWJkV0R6S2Z2bmF5S084RnJ3ZTdIeDg0M01HL3JKK2MwWHJ1VXZiZlZUQ0hMaUlXaE03b05EaEw4eG9iNnhVbzlLTEtjU0wrSXRZc08zLzlXYjhROUdqc3FMNEZYc0RjRzFTYVloN0twZnVNbU9peHF6SlpPMm5JaWNQWVJnMUkyU3VpVWZZTzcwdG1kSGNibCtrU1FtU1l0N3JxNHZpSUxnMkd4M2o5cklUdVdUamJhVWFTU1F4Z09tTVNIdXl6TUFDIl0sImljb24iOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJpY29uRGFyayI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsInByb3ZpZGVyTG9nb0xpZ2h0IjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwicHJvdmlkZXJMb2dvRGFyayI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIkZJRE9fMl8wIiwiRklET18yXzFfUFJFIiwiRklET18yXzEiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwibGFyZ2VCbG9iS2V5IiwiY3JlZEJsb2IiLCJtaW5QaW5MZW5ndGgiXSwiYWFndWlkIjoiMzQ3NDQ5MTM0ZjU3NGU2ZWE1MjdlOWVjM2M0Yjk0ZTYiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsInV2IjpmYWxzZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImxhcmdlQmxvYnMiOnRydWUsImJpb0Vucm9sbCI6ZmFsc2UsInVzZXJWZXJpZmljYXRpb25NZ210UHJldmlldyI6ZmFsc2UsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjpmYWxzZSwiYWx3YXlzVXYiOnRydWV9LCJtYXhNc2dTaXplIjoxNTM2LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjgsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4LCJ0cmFuc3BvcnRzIjpbInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi04fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotMzV9XSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5Ijo0MDk2LCJtaW5QSU5MZW5ndGgiOjYsImZpcm13YXJlVmVyc2lvbiI6MzI5NDc2LCJtYXhDcmVkQmxvYkxlbmd0aCI6MzIsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjoxLCJwcmVmZXJyZWRQbGF0Zm9ybVV2QXR0ZW1wdHMiOjMsInV2TW9kYWxpdHkiOjIsInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjoxMDB9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wMi0wMSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzYsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWXViaUtleSBCaW8gU2VyaWVzIC0gTXVsdGktcHJvdG9jb2wgRWRpdGlvbiIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjUwMjAxMDAzIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDItMDEiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTAyLTA2In0seyJhYWd1aWQiOiI1ZWEzMDhiMi03YWM3LTQ4YjktYWMwOS03ZTJkYTkwMTVmOGMiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjVlYTMwOGIyLTdhYzctNDhiOS1hYzA5LTdlMmRhOTAxNWY4YyIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJWZXJpZGl1bSBBbmRyb2lkIFNESyJ9LCJkZXNjcmlwdGlvbiI6IlZlcmlkaXVtIEFuZHJvaWQgU0RLIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwiLCJiYURlc2MiOnsic2VsZkF0dGVzdGVkRlJSIjowLjAsInNlbGZBdHRlc3RlZEZBUiI6MkUtMDYsImlBUEFSVGhyZXNob2xkIjowLjAsIm1heFRlbXBsYXRlcyI6NSwibWF4UmV0cmllcyI6NSwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwidGVlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbInRlZSJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVsZXNzIiwiYmx1ZXRvb3RoIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDR0RDQ0FiNmdBd0lCQWdJVUx1TEp5bHZKcUs4SkV6emVhV1RZb2NIYWV1TXdDZ1lJS29aSXpqMEVBd0l3ZkRFTE1Ba0dBMVVFQmhNQ1ZWTXhFVEFQQmdOVkJBZ01DRTVsZHlCWmIzSnJNUkV3RHdZRFZRUUhEQWhPWlhjZ1dXOXlhekVWTUJNR0ExVUVDZ3dNVm1WeWFXUnBkVzBnVEZSRU1STXdFUVlEVlFRTERBcFdaWEpwWkdsMWJVbEVNUnN3R1FZRFZRUUREQkpXWlhKcFpHbDFiVWxFSUZKUFQxUWdRMEV3SUJjTk1qRXdPREV5TVRJd05qTTFXaGdQTWpBMU1UQXpNRGd4TWpBMk16VmFNSUdITVFzd0NRWURWUVFHRXdKVlV6RVJNQThHQTFVRUNBd0lUbVYzSUZsdmNtc3hFVEFQQmdOVkJBY01DRTVsZHlCWmIzSnJNUlV3RXdZRFZRUUtEQXhXWlhKcFpHbDFiU0JNVkVReEV6QVJCZ05WQkFzTUNsWmxjbWxrYVhWdFNVUXhKakFrQmdOVkJBTU1IVlpsY21sa2FYVnRTVVFnUVhSMFpYTjBZWFJwYjI0Z1NYTnpkV1Z5TUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFRlY3Q1QxWTUwWVV0RHM1bkNmdnBZMzhMN0lLd0hoaDFFQ0V0ekZHZ0pxTXJXYzlPQ3hFUnVyYmpsdzFlbnljY3I0WURQbkR2K3l2czZjSThZUlozU3FNUU1BNHdEQVlEVlIwVEJBVXdBd0VCL3pBS0JnZ3Foa2pPUFFRREFnTklBREJGQWlFQWlKdjN3SFVxeXVKMGNBdDkyOW1xQWFQekZoamhuYXlzcWpOdHhLcFV6QmNDSUVRWFI3czg2TzZCbkJIMzBJV3VXTHh1dC90c2hpYVQ2RXUwTmtoNkhkNjEiXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZ0NBWUFBQUVFZlVwaUFBQUFCR2RCVFVFQUFMR1BDL3hoQlFBQUFDQmpTRkpOQUFCNkpnQUFnSVFBQVBvQUFBQ0E2QUFBZFRBQUFPcGdBQUE2bUFBQUYzQ2N1bEU4QUFBQWVHVllTV1pOVFFBcUFBQUFDQUFGQVJJQUF3QUFBQUVBQVFBQUFSb0FCUUFBQUFFQUFBQktBUnNBQlFBQUFBRUFBQUJTQVNnQUF3QUFBQUVBQWdBQWgya0FCQUFBQUFFQUFBQmFBQUFBQUFBQUFFZ0FBQUFCQUFBQVNBQUFBQUVBQXFBQ0FBUUFBQUFCQUFBQUlLQURBQVFBQUFBQkFBQUFJQUFBQUFBUWRJZENBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBQ1ptbFVXSFJZVFV3NlkyOXRMbUZrYjJKbExuaHRjQUFBQUFBQVBIZzZlRzF3YldWMFlTQjRiV3h1Y3pwNFBTSmhaRzlpWlRwdWN6cHRaWFJoTHlJZ2VEcDRiWEIwYXowaVdFMVFJRU52Y21VZ05pNHdMakFpUGdvZ0lDQThjbVJtT2xKRVJpQjRiV3h1Y3pweVpHWTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5MekU1T1Rrdk1ESXZNakl0Y21SbUxYTjViblJoZUMxdWN5TWlQZ29nSUNBZ0lDQThjbVJtT2tSbGMyTnlhWEIwYVc5dUlISmtaanBoWW05MWREMGlJZ29nSUNBZ0lDQWdJQ0FnSUNCNGJXeHVjenAwYVdabVBTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM1JwWm1Zdk1TNHdMeUlLSUNBZ0lDQWdJQ0FnSUNBZ2VHMXNibk02WlhocFpqMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzlsZUdsbUx6RXVNQzhpUGdvZ0lDQWdJQ0FnSUNBOGRHbG1aanBQY21sbGJuUmhkR2x2Ymo0eFBDOTBhV1ptT2s5eWFXVnVkR0YwYVc5dVBnb2dJQ0FnSUNBZ0lDQThkR2xtWmpwU1pYTnZiSFYwYVc5dVZXNXBkRDR5UEM5MGFXWm1PbEpsYzI5c2RYUnBiMjVWYm1sMFBnb2dJQ0FnSUNBZ0lDQThaWGhwWmpwUWFYaGxiRmxFYVcxbGJuTnBiMjQrT1RZOEwyVjRhV1k2VUdsNFpXeFpSR2x0Wlc1emFXOXVQZ29nSUNBZ0lDQWdJQ0E4WlhocFpqcFFhWGhsYkZoRWFXMWxibk5wYjI0K09UWThMMlY0YVdZNlVHbDRaV3hZUkdsdFpXNXphVzl1UGdvZ0lDQWdJQ0FnSUNBOFpYaHBaanBEYjJ4dmNsTndZV05sUGpFOEwyVjRhV1k2UTI5c2IzSlRjR0ZqWlQ0S0lDQWdJQ0FnUEM5eVpHWTZSR1Z6WTNKcGNIUnBiMjQrQ2lBZ0lEd3ZjbVJtT2xKRVJqNEtQQzk0T25odGNHMWxkR0UrQ3JPdGxsRUFBQWJPU1VSQlZGZ0p0UmRyYkpOVjlONzdmVis3N2duYlNGeWM0T2ptZzJpTURqRktvc0FZQkh5QlkyRDhZV0tNemhCK09GOXMrMk14eWpBaUd2OU5Rd3d4TVhFUEVnenZEWXJBRWpRYm9BTXh0TjBZUTUzUXRkMnJhL3M5cnVmYzlpdnQxcTZRd0czUzc5NTdudmVjYzg4NWw1RFpobjE3bTBhWEgra2FJSno4ZVBXc3Z3bVI1YUF2SFBFT0JKdVkxVVpjNzc5QWt6aFV2dDJpeEhkS2Q3WGFyQ0VhcE1zUGQvSnJselJpVEUwUXltaWpmUFhjS0NlY1UwOVRiUnc3aVUvaW9uekhYZzVxZExxY3E2c3JZZ0JhdnFQakNEZU1haE5SSm9US1ZaMWRmTEEzUUxnQjNBMERZRnoxTkcyMElCSnpybDVaTnRqai94S0JsTEYrVCtTaVpBSk5Mck4rMDJwYXNhUDlDeTVaUGdBZGtrZGxTNDh5TnZsZnhBZ0ZDWlU0WVN0UG5PS1ZMUzJLaVJZWUdRZ2pVQXhRbUs0NDNLa1RTV0pYenZrZW9Cci9Dd0FNZ1ZTU2lYdnJlc280NTJUb25HOE1nSmROSUtGVWRaZXBRcnc4MEJQZ2trVHprUW9BbkZIalJWZEQ3UUd4TnYvc3pSMGN2QnN4MTRuZnRNZE1SSm8rWCtad3lrTTUvb2RrVzBHZlVIZzZRc3AxYmF1RSsrWE43ZGVHRk84VVVmVStIVUtFVlhVZWR3b0NoeU10TXpqQ3BvcW5iQm9jQTJ6Qzd5V1V4TzBQQVlkQmE4eVg4L0tZT2pyK09NbFdMcEJmQ0RuaFdLN1ptOXN4OWxRUUVQZURFSVovbkdnUW9HNFI5WlR6K1J6c1R5VkdBbGVELzQ1NXRSS3VhM0hjK0lRU25kbHlKUjRPM2xjNlZUaU1RbVFDM3VTVVR2WC81cytTRmNaQVlrbWN3SnhRa0VmcFBrL0RodlhtbGpzMlljNDFxOHFHem80T3l6SUZUanpSS3hyTHlpYWV4ZzFzem9EUG1raHNNc0h2VFFLSFE2NndQRkpKc25QUDhGRHdFM2ZES3g4bkl0NlZ1WDE3KzdxMHJrc3JNZVp1OE5BZmxKS0cyMklncnBYRFlWVHMvSm1EOFI4RVg4bzNiWkJXWkF3QWt1MjJSNTlqU3RaeEl4d0VyeE1EaU0rejJsWXVRalFUZlhuMlkzdUliaHdYbHhtY2FucU0rUXFQUGJQTTZZeUhaaEtqVmpQK084YTVwbTVLZ3NVV2pERGxKSXNZemRPQmVONHlsMVpjOGRVaENIODlHencrTTV5QmlJbEk1TWE3SzQ1MlljWUF1MFNEYWN4ZnRGbFNjb1l4S1FQeGRHTWJFTkt3WjNuTEJNaVFPTXVxbkNjeFpEbms1UE1RNFR1NWxqS0hxSlJKekZXL2xwYUc4L3RvVlplVEc1b0dnaUVGU2l3MGVINGlpMmdxM3FRVWR1R1FCbGszaFBlenFCYnFHOVVBSWtJTjZyNkJYLzFaUk5mUVJUT0lxV0xGNi9wbWpCaFE0SUloSXBVbDR2T00zWmowYWZNWU9qVDVRaUdPdU1Jc0VzblBMZlNHY0NOeHlGZk9YTmRoWXg0ZUljVlFLYUhqcnZvMVJRUlRXbHNkNGlZTkprbmtDV29GTDhWVWlrUFI4SlR1ZGpkdEtCSjdiUnRuRU9NK0s1a3MraE10Q21VWGpZTEc0OHlXUTJUR24vVFlqUzJJbEhuRXptMXYzbnNGeXlvU1lPck9UQmgxeGEzZzNSRWM3Q042djYxVHk3ODVhQ1dUVTYyUXNSODJBL0dPQ0VqSkpIWWZFVGEyb0xnVzhsQ1FoTlVRK09jbGlMN1J1NllBbmhhRmxybXN4U0RVV2ZIMUlXNVEvUWR3c1lXckVRTTZBaEd5V0VWdVBhY2h4MWxHb3QvOUM0czJZenhJQ2htR3VyblVDTVp5QWljb09jNkZMZTN1enNWVjJwUVdSMDB6d1FQRXpQeVBaYVFjNnNUdm1NR2d4dTNraG01RTgwbnFUSVljbVRVWWRxMDRlb3hMcXY2cUthSTJ3Vy9tM3ZTdmFXSk1YblkzM1k1bHdtRHNFcHh1VVRRRGNyd0ZxVjBNTklJZnRsUFFWNHIwWUJqOCsxWGRaM2pWMGE3OS9ybHpoVlVxZTNxU2N6QVdORWMwZndYdUwxNEN2aDJxMkhVQW1QRjZJeExtY0dMa20vbjZRVnZDSUxkaFI4SHdCTkMvWW1wazZ2ZzRwSGRlVFpTc0FEVHF3VGtqZ1plRnBnUUV3eWdmV2FMWXJSMjdoVkRLVDBQODNCUHRONFdKTThXUzBFNnk1WUpJdXQ4SWVBdmNqVFdMVTJscjBVUENLQXBuckszNjFHa1NHQno5eWR2ZnRwVGxrVko5eWxEalRXNm0wNktwb1Znd2E0N0MxYkFQMHUzcmwrdlhIQ1pveVl1TGhNSXpGUUNETWtVaVdrUVBldDNqa1VuZlNKRWswMXFtRUs1UFRZSWQwZ2RVMUZyaVg0TzZJek9MbFVJdC9zNzEzdG90YUdsczRRVVVXZ3NUVnlnZ0tnRzRBMzdxeEkxUTRFWi9NQWZja2cvOU5nSGhpSXZ0WGFhQkdGQjZjbVJvT3dZNGxWK0RKMVdQdUNIYnRpRVQzbHUzR0Z2VnBDRXpDWXJobEQ1KzNUV3VoaWEwUXRuQ3NLNmg2Y0RGU2JqcEZpbzhLUlIwTEFUaE5pZ3NueUppL0pac1RGMkZUR2JNZFhya3c3OHZqRmwwUXk2RXA0bUtqeW9RbnltZzBJUllhUEVCMWlzeGFhSDdvM1YwVHIvM2N6T3hZYzQzaGN6MlpmTksvUHM4alRWWldTb3JoT0xhaVV4QkF4UVE5MU1DQTVVcThBcWtWS2N5ZXdjS05YVTMxRHhkTXBrM2hEaENLQWJlYlF6V1d4ZlZ0TThlSEhOdHJYa2VtUkxaOGdaWVZCZkNPQmV0a1ZDTTBZTTJiYUlRK2hKTFFZRjNEOGdSbHNLWHdtM0l6SXhxdmkwWGZOWlJBZytrL2ZoSUVsUUphVGN6bDF2RCtCOWNNQTdneXF2dVRRQUFBQUJKUlU1RXJrSmdnZz09IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiRklET18yXzAiXSwiZXh0ZW5zaW9ucyI6W10sImFhZ3VpZCI6IjVlYTMwOGIyN2FjNzQ4YjlhYzA5N2UyZGE5MDE1ZjhjIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJ1diI6dHJ1ZX0sIm1heE1zZ1NpemUiOjEyMDAsInBpblV2QXV0aFByb3RvY29scyI6WzFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjE2LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjEyOCwidHJhbnNwb3J0cyI6WyJibGUiLCJ3aXJlbGVzcyJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XSwiZmlybXdhcmVWZXJzaW9uIjoxfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTA3LTE0IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjF9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDctMjgifSx7ImFhZ3VpZCI6IjNiMWFkYjk5LTBkZmUtNDZmZC05MGI4LTdmNzYxNGE0ZGUyYSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiM2IxYWRiOTktMGRmZS00NmZkLTkwYjgtN2Y3NjE0YTRkZTJhIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkdvVHJ1c3QgSWRlbSBLZXkifSwiZGVzY3JpcHRpb24iOiJHb1RydXN0IElkZW0gS2V5IiwiYWx0ZXJuYXRpdmVEZXNjcmlwdGlvbnMiOnsiZW4tVVMiOiJHb1RydXN0IElkZW0gS2V5In0sImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUJ6VENDQVhPZ0F3SUJBZ0lKQUxTM1NpYkdEWFRQTUFvR0NDcUdTTTQ5QkFNQ01Ec3hJREFlQmdOVkJBTU1GMGR2VkhKMWMzUWdSa2xFVHpJZ1VtOXZkQ0JEUVNBeE1SY3dGUVlEVlFRS0RBNUhiMVJ5ZFhOMFNVUWdTVzVqTGpBZUZ3MHhPVEV5TURRd05qVTVOREJhRncwME9URXhNall3TmpVNU5EQmFNRHN4SURBZUJnTlZCQU1NRjBkdlZISjFjM1FnUmtsRVR6SWdVbTl2ZENCRFFTQXhNUmN3RlFZRFZRUUtEQTVIYjFSeWRYTjBTVVFnU1c1akxqQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJBNW1qWXNqb3dBSTBqbnBpLy9DSjNLbnpoR2JUVW1zdE5XcU43OGlvRzFDVEs5Z1BnUGw5VWlGT0pPL3YrRmZGSytQeHYxMGM2MDRkdmxJREFiS3craWpZREJlTUF3R0ExVWRFd0VCL3dRQ01BQXdEZ1lEVlIwUEFRSC9CQVFEQWdFR01CMEdBMVVkRGdRV0JCU2dXdFkwbkVjbVBtR0RMdUN3Y2VLZUpQU2NvekFmQmdOVkhTTUVHREFXZ0JTZ1d0WTBuRWNtUG1HREx1Q3djZUtlSlBTY296QUtCZ2dxaGtqT1BRUURBZ05JQURCRkFpQXhvVnM2cWo3RFgyeGl4Q2pqY0RVZHhCVEptU1RMYjBmMXJSR3dyQUJ6VFFJaEFQdDBQMzJxekFlZXBGNC8vdGd6eHFOb0trV0RjYVBQU1hyZyt4enJsVkh3IiwiTUlJQnp6Q0NBWGFnQXdJQkFnSUNBU0F3Q2dZSUtvWkl6ajBFQXdJd096RWdNQjRHQTFVRUF3d1hSMjlVY25WemRDQkdTVVJQTWlCU2IyOTBJRU5CSURFeEZ6QVZCZ05WQkFvTURrZHZWSEoxYzNSSlJDQkpibU11TUNJWUR6SXdNVGt4TWpBME1EWTFPVFF3V2hnUE1qQTFNVEEwTURjd016QTFNREJhTURzeElEQWVCZ05WQkFNTUYwZHZWSEoxYzNRZ1JrbEVUeklnVW05dmRDQkRRU0F4TVJjd0ZRWURWUVFLREE1SGIxUnlkWE4wU1VRZ1NXNWpMakJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCQTVtallzam93QUkwam5waS8vQ0ozS256aEdiVFVtc3ROV3FONzhpb0cxQ1RLOWdQZ1BsOVVpRk9KTy92K0ZmRksrUHh2MTBjNjA0ZHZsSURBYkt3K2lqWmpCa01CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdFR01CMEdBMVVkRGdRV0JCU2dXdFkwbkVjbVBtR0RMdUN3Y2VLZUpQU2NvekFmQmdOVkhTTUVHREFXZ0JTZ1d0WTBuRWNtUG1HREx1Q3djZUtlSlBTY296QUtCZ2dxaGtqT1BRUURBZ05IQURCRUFpQWtyTE01VjNEbkQwWGNWVUZXK05NRmNCWkNPMUZ4eVl6NFZrUEgzQTdLR1FJZ0hheVRmVTg4b0lFaU1OYXgxM3RnWmFvaGhNQVhFTWpxVHlJdGJjVFQ4UWM9IiwiTUlJQnFUQ0NBVStnQXdJQkFnSUJBVEFLQmdncWhrak9QUVFEQWpBN01TQXdIZ1lEVlFRRERCZEhiMVJ5ZFhOMElFWkpSRTh5SUZKdmIzUWdRMEVnTVRFWE1CVUdBMVVFQ2d3T1IyOVVjblZ6ZEVsRUlFbHVZeTR3SUJjTk1qRXdNekF5TURZeE9EUTRXaGdQTWpBMU1UQXlNak13TmpFNE5EaGFNRHN4SURBZUJnTlZCQU1NRjBkdlZISjFjM1FnUmtsRVR6SWdVbTl2ZENCRFFTQXhNUmN3RlFZRFZRUUtEQTVIYjFSeWRYTjBTVVFnU1c1akxqQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJJemtNZHROWnQwWk96Tyt1MWYyRUtaUlNuZmh2eXdiaG9uQkY5TlNQcTJXRzdudVJpL3l2WjhsRGp3cDVkYXJRNk9kWmcrSHFiU1NlWEpYdzdVcGNsU2pRakJBTUE4R0ExVWRFd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnRUdNQjBHQTFVZERnUVdCQlJqV3hUbzFFcTMzWnJ4ZkxEV3NzZGRiRC92WlRBS0JnZ3Foa2pPUFFRREFnTklBREJGQWlCK0UwOUd6bWNZbE05NXFUL2FmblBVOXE2WEpteE9TS1dBUk81K2tnVW5XZ0loQUlhOW41cDQwdGNHZm1lRjYvV3ZZb2pBTnV5a1FxaFZrOFduZmcxNVM2OXIiXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBakNBWUFBQUQxN2doYUFBQUFCR2RCVFVFQUFMR09mUHRSa3dBQUFDQmpTRkpOQUFDSER3QUFqQThBQVAxU0FBQ0JRQUFBZlhrQUFPbUxBQUE4NVFBQUdjeHpQSVYzQUFBS0wybERRMUJKUTBNZ1VISnZabWxzWlFBQVNNZWRsbmRVVk5jV2g4KzlkM3FoelREU0dYcVRMakNBOUM0Z0hRUlJHR1lHR01vQXd3eE5iSWlvUUVRUkVRRkZrS0NBQWFPaFNLeUlZaUVvcUdBUFNCQlFZakNLcUtoa1J0WktmSGw1NytYbDk4ZTkzOXBuNzNQMzJYdWZ0UzRBSkU4ZkxpOEZsZ0lnbVNmZ0IzbzQwMWVGUjlDeC9RQUdlSUFCcGdBd1dlbXB2a0h1d1VBa0x6Y1hlcnJJQ2Z5TDNnd0JTUHkrWmVqcFQ2ZUQvMC9TckZTK0FBRElYOFRtYkU0NlM4VDVJazdLRktTSzdUTWlwc1lraWhsR2laa3ZTbERFY21LT1crU2xuMzBXMlZITTdHUWVXOFRpbkZQWnlXd3g5NGg0ZTRhUUkyTEVSOFFGR1Z4T3BvaHZpMWd6U1pqTUZmRmJjV3d5aDVrT0FJb2t0Z3M0ckhnUm00aVl4QThPZEJIeGNnQndwTGd2T09ZTEZuQ3lCT0pEdWFTa1p2TzVjZkVDdWk1TGoyNXFiYzJnZTNJeWt6Z0NnYUUvazVYSTVMUHBMaW5KcVV4ZU5nQ0xaLzRzR1hGdDZhSWlXNXBhVzFvYW1obVpmbEdvLzdyNE55WHU3U0s5Q3ZqY000alc5NGZ0ci94UzZnQmd6SXBxcytzUFc4eCtBRHEyQWlCMy93K2I1aUVBSkVWOWE3L3h4WGxvNG5tSkZ3aFNiWXlOTXpNempiZ2NscEc0b0wvcmZ6cjhEWDN4UFNQeGRyK1hoKzdLaVdVS2t3UjBjZDFZS1VrcFFqNDlQWlhKNHRBTi96ekUvemp3ci9OWUdzaUo1ZkE1UEZGRXFHakt1THc0VWJ0NWJLNkFtOEtqYzNuL3FZbi9NT3hQV3B4cmtTajFud0ExeWdoSTNhQUM1T2MrZ0tJUUFSSjVVTnoxMy92bWd3OEY0cHNYcGpxeE9QZWZCZjM3cm5DSitKSE9qZnNjNXhJWVRHY0orUm1MYStKckNkQ0FBQ1FCRmNnREZhQUJkSUVoTUFOV3dCWTRBamV3QXZpQllCQU8xZ0lXaUFmSmdBOHlRUzdZREFwQUVkZ0Y5b0pLVUFQcVFTTm9BU2RBQnpnTkxvREw0RHE0Q2U2QUIyQUVqSVBuWUFhOEFmTVFCR0VoTWtTQjVDRlZTQXN5Z013Z0JtUVB1VUUrVUNBVURrVkRjUkFQRWtLNTBCYW9DQ3FGS3FGYXFCSDZGam9GWFlDdVFnUFFQV2dVbW9KK2hkN0RDRXlDcWJBeXJBMGJ3d3pZQ2ZhR2crRTFjQnljQnVmQStmQk91QUt1ZzQvQjdmQUYrRHA4Qng2Qm44T3pDRUNJQ0ExUlF3d1JCdUtDK0NFUlNDekNSellnaFVnNVVvZTBJRjFJTDNJTEdVR21rWGNvRElxQ29xTU1VYllvVDFRSWlvVktRMjFBRmFNcVVVZFI3YWdlMUMzVUtHb0c5UWxOUml1aERkQTJhQy8wS25RY09oTmRnQzVITjZEYjBKZlFkOURqNkRjWURJYUcwY0ZZWVR3eDRaZ0V6RHBNTWVZQXBoVnpIak9BR2NQTVlyRlllYXdCMWc3cmgyVmlCZGdDN0g3c01ldzU3Q0IySFBzV1I4U3A0c3h3N3JnSUhBK1hoeXZITmVITzRnWnhFN2g1dkJSZUMyK0Q5OE96OGRuNEVudzl2Z3QvQXorT255ZElFM1FJZG9SZ1FnSmhNNkdDMEVLNFJIaEllRVVrRXRXSjFzUUFJcGU0aVZoQlBFNjhRaHdsdmlQSmtQUkpMcVJJa3BDMGszU0VkSjUwai9TS1RDWnJreDNKRVdRQmVTZTVrWHlSL0pqOFZvSWlZU1RoSmNHVzJDaFJKZEV1TVNqeFFoSXZxU1hwSkxsV01rZXlYUEtrNUEzSmFTbThsTGFVaXhSVGFvTlVsZFFwcVdHcFdXbUt0S20wbjNTeWRMRjBrL1JWNlVrWnJJeTJqSnNNV3laZjVyRE1SWmt4Q2tMUm9MaFFXSlF0bEhyS0pjbzRGVVBWb1hwUkU2aEYxRytvL2RRWldSblpaYktoc2xteVZiSm5aRWRvQ0UyYjVrVkxvcFhRVHRDR2FPK1hLQzl4V3NKWnNtTkp5NUxCSlhOeWluS09jaHk1UXJsV3VUdHk3K1hwOG03eWlmSzc1VHZrSHltZ0ZQUVZBaFF5RlE0cVhGS1lWcVFxMmlxeUZBc1ZUeWplVjRLVjlKVUNsZFlwSFZicVU1cFZWbEgyVUU1VjNxOThVWGxhaGFiaXFKS2dVcVp5Vm1WS2xhSnFyOHBWTFZNOXAvcU1Ma3Qzb2lmUksrZzk5QmsxSlRWUE5hRmFyVnEvMnJ5NmpucUllcDU2cS9vakRZSUdReU5XbzB5alcyTkdVMVhUVnpOWHMxbnp2aFplaTZFVnI3VlBxMWRyVGx0SE8weDdtM2FIOXFTT25JNlhUbzVPczg1RFhiS3VnMjZhYnAzdWJUMk1Ia012VWUrQTNrMTlXTjlDUDE2L1N2K0dBV3hnYWNBMU9HQXdzQlM5MUhvcGIybmQwbUZEa3FHVFlZWmhzK0dvRWMzSXh5alBxTVBvaGJHbWNZVHhidU5lNDA4bUZpWkpKdlVtRDB4bFRGZVk1cGwybWY1cXBtL0dNcXN5dTIxT05uYzMzMmplYWY1eW1jRXl6cktEeSs1YVVDeDhMYlpaZEZ0OHRMU3k1RnUyV0U1WmFWcEZXMVZiRFRPb0RIOUdNZU9LTmRyYTJYcWo5V25yZHphV05nS2JFemEvMkJyYUp0bzIyVTR1MTFuT1dWNi9mTXhPM1k1cFYyczNZayszajdZL1pEL2lvT2JBZEtoemVPS280Y2gyYkhDY2NOSnpTbkE2NXZUQzJjU1o3OXptUE9kaTQ3TGU1YndyNHVyaFd1amE3eWJqRnVKVzZmYllYZDA5enIzWmZjYkR3bU9keDNsUHRLZTM1MjdQWVM5bEw1WlhvOWZNQ3FzVjYxZjBlSk84Zzd3cnZaLzQ2UHZ3ZmJwOFlkOFZ2bnQ4SDY3VVdzbGIyZUVIL0x6ODl2Zzk4dGZ4VC9QL1BnQVQ0QjlRRmZBMDBEUXdON0EzaUJJVUZkUVU5Q2JZT2JnaytFR0lib2d3cER0VU1qUXl0REYwTHN3MXJEUnNaSlh4cXZXcnJvY3JoSFBET3lPd0VhRVJEUkd6cTkxVzcxMDlIbWtSV1JBNXRFWm5UZGFhcTJzVjFpYXRQUk1sR2NXTU9obU5qZzZMYm9yK3dQUmoxakZuWTd4aXFtTm1XQzZzZmF6bmJFZDJHWHVLWThjcDVVekUyc1dXeGs3RzJjWHRpWnVLZDRndmo1L211bkFydVM4VFBCTnFFdVlTL1JLUEpDNGtoU1cxSnVPU281TlA4V1I0aWJ5ZUZKV1VySlNCVklQVWd0U1JOSnUwdldremZHOStRenFVdmlhOVUwQVYvVXoxQ1hXRlc0V2pHZllaVlJsdk0wTXpUMlpKWi9HeStyTDFzM2RrVCtTNDUzeTlEcldPdGE0N1Z5MTNjKzdvZXFmMXRSdWdEVEVidWpkcWJNemZPTDdKWTlQUnpZVE5pWnQveURQSks4MTd2U1ZzUzFlK2N2Nm0vTEd0SGx1YkN5UUsrQVhEMjJ5MzFXeEhiZWR1Nzk5aHZtUC9qaytGN01KclJTWkY1VVVmaWxuRjE3NHkvYXJpcTRXZHNUdjdTeXhMRHU3QzdPTHRHdHJ0c1B0b3FYUnBUdW5ZSHQ4OTdXWDBzc0t5MTN1ajlsNHRYMVplczQrd1Q3aHZwTUtub25PLzV2NWQrejlVeGxmZXFYS3VhcTFXcXQ1UlBYZUFmV0R3b09QQmxocmxtcUthOTRlNGgrN1dldFMyMTJuWGxSL0dITTQ0L0xRK3RMNzNhOGJYalEwS0RVVU5INC93am93Y0RUemEwMmpWMk5pazFGVFNERGNMbTZlT1JSNjcrWTNyTjUwdGhpMjFyYlRXb3VQZ3VQRDRzMitqdngwNjRYMmkreVRqWk10M1d0OVZ0MUhhQ3R1aDl1ejJtWTc0anBITzhNNkJVeXRPZFhmWmRyVjliL1Q5a2ROcXA2dk95SjRwT1VzNG0zOTI0VnpPdWRuenFlZW5MOFJkR091TzZuNXdjZFhGMnowQlBmMlh2QzlkdWV4KytXS3ZVKys1SzNaWFRsKzF1WHJxR3VOYXgzWEw2KzE5Rm4xdFAxajgwTlp2MmQ5K3crcEc1MDNybTEwRHl3Zk9Eam9NWHJqbGV1dnliYS9iMSsrc3ZETXdGREowZHpoeWVPUXUrKzdrdmFSN0wrOW4zSjkvc09raCttSGhJNmxINVkrVkh0ZjlxUGRqNjRqbHlKbFIxOUcrSjBGUEhveXh4cDcvbFA3VGgvSDhwK1NuNVJPcUU0MlRacE9ucDl5bmJqNWIvV3o4ZWVyeitlbUNuNlYvcm42aCsrSzdYeHgvNlp0Wk5UUCtrdjl5NGRmaVYvS3ZqcnhlOXJwNzFuLzI4WnZrTi9OemhXL2wzeDU5eDNqWCt6N3MvY1I4NWdmc2g0cVBlaCs3UG5sL2VyaVF2TER3Ry9lRTgvczNCQ2tlQUFBQUNYQklXWE1BQUE3RUFBQU94QUdWS3c0YkFBQUFJWFJGV0hSRGNtVmhkR2x2YmlCVWFXMWxBREl3TVRnNk1EVTZNamdnTVRZNk5ESTZNVFQ5aHdyZkFBQUlIVWxFUVZSWVI1MVhDMUJVNXhYK2RsbGdRZDRQVVJBZmlTaGFORzFpN0JodG0wNUtVa25UV0IrTlFhMFlHMk9EbGpvT0drMWlPNTFxTkdRY2s5b2tSSnMwNEl3NnB1TjBURXhUYU9zWVM3U1NwaHBmMUtBVkJSWmhXUjRySUx0N2I3L3ozN3ZzUWhhQy9TNy9zdnozdk0vNXovbXg2QVNHQ1oyUC9GZ3M4cGY2NklOZmpNVjRPV3hZemQvRGcrWlhZRUhsSjUvanZnV2I4T2pxSFdoc2NhbjlPMVV1R0Y0RWhNUVUzdHJoUnQ3cWwzR3FzaHBJaUFGOFBxRHJOcFlWNU9IMUYxY2dKam9xS0ZMQ0krSUhOMng0RVRDVi8zemJINUE4Y1JGT1ZWOENSaWNEVVpGQU5KZlZpdklERmFqNjl4ZUtUaWtrajZiUkZIMXc1WUpCSXREZjZqOVZuc2E4WjNiUVd5OFFTNit0NWp0M3Q0ckExczBGMkx6cWNXT1A2TDFhcDR5S0dEZkczQ0VHQzRRWUVBeU5qeCsxMTV2MEtZK3UxNUdXcHlNblg4YzBXVXQxWkQraEkrbGhmV0hSVHQzcjlablVCaHBYYmRUUElWdy9qeEc2WTgwV2M1ZHlmUUc1d1JpMEJ2S0xkMk4vMlFmTWN5eGdaNWdGa3UrV2RveWNPQVpWKzMrTnV6UFRqSDNDdGZzZE9OWVcwMUVmd3BEQUhZMVBCLysySVdOZktlS1h6RGNJQjhDaU1WSEIxZnYySDQ5aFpXRUpNTUlPeEl6Z0R1M1RXUDRkWFRURWh2SlhpckQwc1RrR01kRlRmUVoxMzE0QVgzY2pGYk11K0NsUWhhaGk3dVhUZ3Nqa2lSaHo3QkRzT2RucURWZ2ZGcWF5THdKZlhHL0M3Q1cvd3MzTHpGOUtvbEdlOHFhblZ5bGZ1M1loWG51K1FFZ1Z2TTJ0YUpqM0ZEcXJqdExIVk83WTFMNUV3SWQycXJaUVJMejZOUFk5M0c5R2JPNGlaQjR0SjNtWU1xL1BBTXU0SDlIRENLNXdRN0dQWGplMVlzYUQ5NkxpblJlWWlXZ2hVM0NzZmc3TzB0Zm9hd3lGUkN0QnVncTVDMkhXUkdSV0hZYnU5VEV5ODZGcjdhUkw0bnN4aVdKcG5DMHBBMW5PYzBxV01xKyt5Y1d6M0FORW1zcDdic01XYnNYSEgrM0M2ZmUyOVNsdmUvY1FMbGppNENwOWkvNm1rRm1VaTg5dXJqYU0zTG9kazN4MWlQcm1mWWllUFJQWnZoc1l1YjJFS1dnbXQ0ZVVPbmxpNFdtdGcrWm1TZ2tWQVllekRhTnpsZ0pwU1R4RFhxU1BUa0w5WDNjckFrSDN5Yzl3NDRjcjRHbXVVZUVXTVlZMzNhclFFbjljZ1BTRGJ4akVSQWVGaDltc0xDUFdrWW5hakJud05UU1JMNHdHdFdOeVZ5T3NVWFl6UVNKT01xR1d4djdDVkppNE5tc2Vyc3lhQmEzNUpwVkwxUXVMRjcxb2dIM2ExekNwcnJhZjhwSzNqeUIrYWo1aTZORHJiRTUrMk1hbTAxaXZpb0pSbkxMTUZDaW9QV1BUTEFzRjkwa3BzbEg4SmtkUnd1MVVRaWI4cFFJVHp2NE40Wm5waXU1RTlVVkU1T1JqdzVhOVFCeFRGaEdPd2swQncrUUlHOUw3STJDQTZBeFM3RWNZN0dTVUVwSWk2MGJxOWgzSTF1c3hJdmM3NnYzMW15NU1tN2NCMzNxa0NCNWhUNDRqRTQ4aWo1aE5EUGtLQkF3WUJNb3V0WGdxNkZYS3htZlZ2cUI5Y1NIRzNyTU01eTVlQXpLWW5yQlFQZ2J3WmZjR1NjRkF5QUZTajhVZ2IzMTFEeTVhWXVBK2VBalc5QlRqOUlpQmJwNmtMczRIdnlacFlFRVlPZ1hzVEFNWkJNSWszaXVaMWtoY3Vlc0JOUDVpSFZPVHlIbkR3U1JHZDdOWk9Wd29MbHlBalQ5YlFDTjR4Q2dxTXR4b1RuNUk3UmhGR0VEQUFFNHZ0UVpBVExMS1kySG42dmJBdzBrblBVQjJkYTBYV2tNTDd2MTZGdHBxMzhQTDYvUFppR2lRTVBHWFBWd2lFNENTd3ljWVFSRWdWNGdpTkRvY1AzazhqVzRtdlY1VHA4RWRsNERLRDNiaTAwTmJFVzgySzFjbnZUZkhkYkEwK1M2UzVBbEcvd2lFcUFHYm1teUdhamtOR2pwVjEwdjc3VzVNYWorSGg3NlJwZWphZVRlWXRmZ0Z2UEg3STd5a1JDbWVZSWprcjQ1QWlCcVFycVdoaCtKNjJFd2JrTEJ5SmFicUhVaGFFeGhNVC85eUR4TEdQWTZULzZwaEQrQUVGVzJzcWM1YlJyc1ZEQjBCQ1gxUURkZzRxZnpJZHJHM1Q3OEhFVk9tWUhKekUwYnQ1YWcyOGRiQlNsZ216TWZlc2crQmRFNUV1VGRJRkNVTm5DY2x4Y3RNU201VHRoSEYvbEZXR2xYcW1XUDFoVTNrOGpVSC9uemlqTHhDV0VJaXhwOWgxN3Z3ZDloU09DdUkwNTlmUWNvRHEvRE11bDI4TXpEY2ZxOXY4elRjYU1hU1JkK0ZmdlV3aXBibktYcUJ0MUVHRWd0M1FHcVVBWkdSOUZqR3I0QUZwRE1WY3hjK2h5ay9LRWFkdzJuc0UyMjhGOHhjL0NKbVBsUUlaMXVIZVcrZ0NDOTVHMXVSTTNrODZpL3R4NzRkYTB3TzhyeFp6Z2thRDIvZE5kb1lyaUtnTTdIUWVMc2krbTVFdVN0K3c0citCNUJxQ3BWS0ZvK2EyL0RUWitjamxTMzJwYTN2QW9sQlZ6U3BtWFkzNTNzY2p2NXVBM0xuVERmMmlhNFRwMUQveUZKNHVocFl5TWxVYWt4UUwwZTNMVDRGazlwNHN5Wk1BOVJYbEIwNWdlVWJPSWFsb3lXYVRVWndpOTFOR2xXTWpGZHpUL0pNYk51OEhKdWVEdHlJdmMxTzNKaTdETGMrcmVDQlRTTzFUWEdJMXg3Y1JPeU03eUh6NDhPdzBBblpWd1lJWS9DOXNMaGtIMTU1cVl5RGhVY3dpcU5admVPU091bjFzT3M1OGNSVGorSEF6aUtEd1VUalQ5YkJWVjVLeFhHa3RsT3A4UG1vdWhVUjlqUmtWQjdnUmVWK2cxanFUZVRLaFNRVXZKcFBuLzNrRmw3SjV4clg4S2xQcXU5WjMxK25PMXJhVENvRHpsZjM4Q3B1NTFVOFVhOUJKdGRZL1JMWEJmNTlIckc2czdUTXBKUnJmLzlyL0pjTWtJandwdy9WNTJ2MTFEbXJkUXYvTDNqLytHZm1yb0hPaXVQNmYyS3pxQ1JhS2F6QmVLNXgra1drY1M5S2J5aFliMUlLUks2eGdqSG8vd1ZEd2NPclZiM2srZXh4aGp1RmdaYWhJMklrejAySXVUOFhZOTdmQjl0SUtUNlZ2RUZoZEo0aElTSUNOamF0ZlI0MUdhUFFmZllzMVk3dVU2NHh6OVlJTys2cStnVGovL21ob1Z4OEM3Q0doa1RnVG5ENzhuLzFxOU1mWnM0akdlcFVoanFldVU3U25idjJtaFIzaGpzeVFHTmgralBvL3VpWVhwZVhyenVLdGdUOU54bjYvNytoOEgvVlFDaUlrS0Z5SFJyQS93QzRlK08rWjFjbjRRQUFBQUJKUlU1RXJrSmdnZz09IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiXSwiZXh0ZW5zaW9ucyI6WyJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiIzYjFhZGI5OTBkZmU0NmZkOTBiODdmNzYxNGE0ZGUyYSIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZX0sIm1heE1zZ1NpemUiOjEwMjQsInBpblV2QXV0aFByb3RvY29scyI6WzFdfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjEtMDMtMDUiLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IkdvVHJ1c3QgSWRlbSBLZXkiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDIxMDMwNTAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4zIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjQifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMTktMTItMDQiLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IkdvVHJ1c3QgSWRlbSBLZXkiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDE5MTEyMjAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4wLjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMC4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDE5LTEyLTA0In1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMS0wMy0wNSJ9LHsiYWFndWlkIjoiNDY1NDRkNWQtOGY1ZC00ZGI0LTg5YWMtZWE4OTc3MDczZmZmIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI0NjU0NGQ1ZC04ZjVkLTRkYjQtODlhYy1lYTg5NzcwNzNmZmYiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiRm9vbmd0b25lIEZJRE8gQXV0aGVudGljYXRvciJ9LCJkZXNjcmlwdGlvbiI6IkZvb25ndG9uZSBGSURPIEF1dGhlbnRpY2F0b3IiLCJhbHRlcm5hdGl2ZURlc2NyaXB0aW9ucyI6eyJ6aC1UVyI6IuWuj-mAmuaVuOeivOenkeaKgEZJRE_ouqvku73pqZforYnlmagifSwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfSx7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNBakNDQWFlZ0F3SUJBZ0lVVXYreStmakxKWU8zOUtkTlJNNE1CNDNNQ0pjd0NnWUlLb1pJemowRUF3SXdkVEVMTUFrR0ExVUVCaE1DVkZjeEpqQWtCZ05WQkFvTUhVWnZiMjVuZEc5dVpTQlVaV05vYm05c2IyZDVJRU52TGl4TWRHUXVNU0l3SUFZRFZRUUxEQmxCZFhSb1pXNTBhV05oZEc5eUlFRjBkR1Z6ZEdGMGFXOXVNUm93R0FZRFZRUUREQkZHYjI5dVozUnZibVVnUmtsRVR5QkRRVEFnRncweU5ERXdNRFF3TVRJeU1UQmFHQTh5TURjME1Ea3lNakF4TWpJeE1Gb3dkVEVMTUFrR0ExVUVCaE1DVkZjeEpqQWtCZ05WQkFvTUhVWnZiMjVuZEc5dVpTQlVaV05vYm05c2IyZDVJRU52TGl4TWRHUXVNU0l3SUFZRFZRUUxEQmxCZFhSb1pXNTBhV05oZEc5eUlFRjBkR1Z6ZEdGMGFXOXVNUm93R0FZRFZRUUREQkZHYjI5dVozUnZibVVnUmtsRVR5QkRRVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCQnNzWWt1TUd0MEg2dXVjRUZmMHY5S1lDc1JZM2tpMFZ1ckJwSFBGVVpranhqOUpocVFPSzZIUGlWYXQ3TEc4MWpDTkRXTkFkb3ZzMldzRFZ5K1VRWUNqRXpBUk1BOEdBMVVkRXdRSU1BWUJBZjhDQVFBd0NnWUlLb1pJemowRUF3SURTUUF3UmdJaEFQRmJJV2c3NTNsUGpXckY2NlBYbUdzS3lHekp3N0Q5UGkrbDNyZzhzbEtaQWlFQXVPS2FpZWZDdmJidVdERzlYcy9qSkUzNTJIYWRvVGVDd1Z4SnNJWktvN0k9Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUtBQUFBQWxDQUlBQUFCSzBIVVJBQUFBQ1hCSVdYTUFBQTdFQUFBT3hBR1ZLdzRiQUFBZDBFbEVRVlI0MnUyYmQxUlYxN2JHajhhS2lEUkJwSWlvaUtMWWV4ZXg5OTRSRzRvTmF6VEcyQkI3aTExaml4cGJOTEVMVWdSN3hZYUt4bDVRc2FNaVJmSitlMC9ZYmdHTjk3NTM3eDl2dU1jZVo2eXp6OXFyelBMTmI2NjFqdUhEdCt2LzlXWDRKb0p2Q3Y1Mi9iOVdjRkpTMG9jazVUUEQ2OS9yVlY1TTA4NFhXdnZmOTVoaHAvb24rc0ovNlBxQzZENzNVNGFDK3Bka1l2aXFBU1VrSk1YSEs1K0o2dGZFeEtUNGhFU2VKQ1orV1RIL0owS1J6L2o0K0VTMU95NEs4WisvRWo4ZGxSUjRtSkI2SlNjbnEzTkt1YlQyMDl1WjlpVHgwMHZxLytNQTlKY000TXNqVEV3blQyMEF2S3Nmbm41Zy80NEhmK3liK1Njbi81MTZmZUJPL3ZEeCs5OS9LOHFXUGo1dlN2SmNtNTcra2lHbWY2N0pYZnVVN21TZWYvL1RsZDQvOUwvR3hzWW02eWFsL3pYOUZETHNMam41YXdmd3VkRnFScVBOVVh1ZVpnaDhUMDd6VmtLQ21Jc21FNzdKay9RbVl2aXMweWlhVTNwTlNvaVBDUTI5TnNrdm9sUFhFL1VhSEt0VjkyU2paaGY2OXJ1emZIbnN0V3NwSFg5cVh4bTZZSWJ6Yk51czhlaGh2aG4rcE1kTVZMNXczcHpycWQwZERnc2JOM3FVLzhUeGZ1UEgrVSthd0QxbHdrK1R4NCtiUFgzcURIKy84K2NpMEo4bU81bnp3d2Yzanh3S1AzNzBTR2h3VUtWU3JyeCs3TWpoUTJFSEw2aVZyMFZGZFduWE92TFNSU3EvajR0TDBIa3pWMHpNa3h0Ly9YWGpyK3MzYjl6Z3ZuZjM3cHMzYjhKQ1E0SURBNElQQkhLSEJCM2dsc0wrdlh0dTM3d3AvY3JyVkg3Nk5JWVdqaDQrdEhYVHhwRytnOGYvTUZveldTNW14eGdHOXUwMWRFQi9DamlDSmozQm02aXJWeHE3MXpsMjVGRHlwNVkxZGZKRXo0N3R2MnpjaHZUcVZiV2JrS3c2NjcyMXZ4NnRXak13ajFWQUx2UEEzSG1Eekd5Q0xPME9tRm9IR2xzRUdKbUgyRHFlOC9SNmVmNmNxdVBFREhXc3djakc5YjlPK3VuSHFhbyswSTMvUk9XemdKVjVoWkxGcDAyZWlJWlNIcUt0aWVNUGg0Y2xwTm9wczdwMDRVSStFeU5iYzVPbEMzOSsrK2JOeXVWTGl6cll1bGV2N0Y2dE10cXE2T1phczJLNStyV3FGOHhuYVRBWWFFZWtKaU41Ly80OVh4Zk5uMnVVeWVEbTdGU2lzS05EWHJNaWR2a281elBKVmF0U2VYNDlHQktjM1dCQWVXa2tSU01VdmgvbW04MWdvRWRlTk11ZXVaeXJ5K1hJU0VkckMrdmNPUm1TclptSmpha3hOMlVIUzdPY0JzT1NCZk41aTM1RmMrMWJORFhML3AyMWlWRitzOXlXdWJKVHYzZTNMbFRZczNOSHQ0N3QzNzU5ZzVDb1ZxZHF4UWExYTZnamY2K0prVVlRd29salJ6SWJESC84dm9VeVZuamgzTGx6RVdjdlIxNXEwNnl4cTFNQm5seThjSjdINXlNaTd0eSsvVmtQMXVJMVFrVzdiKy9kUGRPNmJVQU8wd05tTmlGMmhVTHRDNGM2RkFteGNUeVF4NHBDcUwzeWhLK0J1U3lDOHpuY25EY3ZXWFNjVVZRV01HbFl1NGFSd1lCa0MrVzNraHVSMWFoUXRyUkxZZTJKY3R0YUl5bkVjZkw0TWFZdEVZc1dtRStyeGcxTXMyZStldm15R0UxUVFFQm9jTEFvNDhybHk2T0grOXFZbW93YU9nU1BFU1NYaXhZUTA1enBVMUZKNUtWTDE2OUZGYmExL21uTTl6aGlyMjZkSzVaeXhXSzJiOTFpbFR0bmo4NGRCL1RwTld6UUFPK2VubGV2WEpiZUdUK0MrMjNkV21kN216N2R1Lzd4KzlhQWZYdVJvNzJsNmFybHk1NDllL1kwSnFaS0diY0J2WHRTZmhRZC9malJvMWV2WG1xQms4THFYNVpQL1BFSDBBVUZVM2p4L0xsWTdlK2JOK1hNWk9qUXFzVzd0MjhWK2RTcDBiSlJmYjBISytDc3Vpd2ViSkkxTS9CQXVheHJVY1NZTjFkMkM2TnN1SWVUVFY0S0ZqbXpZbTFaRElZZVhUcUtjWC9XZzBXN3NWRlh3MHVVUnJ1b05pUi93ZUI4QlVKc25WQnRlTW15RjMwR0JPYTJDTW52aEhhVjUzYUYrTnlmTFhma0VGK0oyY0s2UDJrek1aR0J0bWpvd2YwbU52YlZ5eGRjcjErL2pqaDdoa2srZWhUOTZ1WExWK3IxL05rejFJUDA4NXNaMzc5L2o3R0s5MnRlQmNwcDVVSDkrbGliNUVMcnpSdlVLMWJRdnFsSDNkQ2dJRDNDQzdiVDljOXpaaUVSYkF0NzUzYktsOWZaUG4rSlFvNUY3R3p5bXhxRGZ2Um9reWNYa0FDYzRHMzhkUGJNYVZYV0NvcEluRU05RzlhdWtjWlJNSkt0VnE1MDh3YnU5RTVyWllvVm9kQzBYcDNtRFQzdTM3c25NVUxHa0JJcDR4T3cybFhMbDZvaFBGbU1IaWZPWVRCNGRtci83dDI3Um5Wck5xdnZydllWcndmbmFYNlRnQkRlN2RlengrSUY4M2RzM3diT2MyTnExSGR6THZUSDFpM2J0bXpHUmpmL3R2N0U4V05hVk1ySWc5VWY0aDQvQ25jckcyaHNHV0pmR09XbGFOZmNKc1RlNmZtSkU0cEJqWitBUm9Qek93V3JPdVlUYjk2ZnhmanFqK01VbGFqWXFHY1pNdGJLcFV2V3FGaFdtWjR5ZWdYNnhvd1labW1VTGViSkU1bXpkcFV0WGhUWjZVRnkxNTkvMUs5VjgvVEprNks1bGN1V3RtbldDTlhpbE5sVWN3WU11clJ0amFUYU5XL1NvM01Id0ZaRUxONS8rOVpOd2hzS0p1Z2VQM1lVbkJnNVpCQW8xNzFqK3pJdVJjNmNQb1drNmxXdm9pSkJKSzBSclFWalJkQU1Bemd4eVdJSUNnd1E0bjM3MWkzSGZKWU1ZTmdnbjJFRGZUQ3ZtaFhMRGgvazQ5dmZteWVQb2g5cUNpYWMzN3A1a3dFZytueDVjaEUrUUE2K2FvcmY4T3Nhd3NyZTNidEE4c2J1dFRVRlMyVFp0M3VYOFhjR0IwdFQ3SWtvUUVkSk9uTWYzTjhicVg1VkRFNU5oeEp4MzRpdTNmZG5NOUZyTjhnOGY2aGprZWVuRlBrbXFoMUhUWnkwUDN0dThlT1FmSTdvR0ZjT01ESjd0SHUzMUVsRDVYbTRmOC91d1AzNzlFTXA3dVFBczBoUHIzYitzWjJhWXViaWdodlhyN00xejRPeC8vajlTQ3IwN05ySkxNZDNQcjI5VUJzQ0xXSnZnL24zN2RFTnlFVlZSTk9UeDQrTDIrbGpjQ2FEQWZXM2E5RlVuSzlUbTViWUJ6R0M0VkZBdm9JUVpqbXlIRDE4V0l2aXZNNEFsaTllbE5jNEJ5QXNJM3h3L3o3aVhycHdBYzZLd3ZEN1BwNWRLYU5MbkR2dVhaeTRFVFVmUG5oZ2IyRnFralVUQUZEWTFzck9Jbzl4WmdNRHVIUDdGbDRvWXhQQ2tjYURSWHFFajJkUG40YUZCSnRreWJScHd6cktqeDgvaHQ5QkdvNkVoN2RyM2hSbjRQVkRCdzlDSGhuODI3ZHZQeHVERTFWZmViUjNUNEN4dVFDdnB0MkRoWXU5T0hOYU5LY29USzE1emM5dmYzYVRZQUJjMFhFQmtEekl3dlpJeGFyeHIxNUp1cXdQSkFTZUgwWU04L1h4N3VmbDZlM1Z2VjlQVC93TWkvYW9VZFc3UjNla3d4UGw5dkwwNmVVMXlMczNaRXB6QXBFVW9hNlBaN2RKNDhieXZHK1A3bldyVmRZTXd0a2gvN0pGQzZTTW8wQmt6a1djMFlpMHVPQ3BFeWRtVFBXYlBjM2ZiOEpQZURCcW51ay9CY1lIMEJFak1SMFFudGQzNy9pVGtFYVkxMUl5NlIyT0RUTm81RjRMSHVUVnBXUEVtVE91VGc3NHVubk9yTnpZQjVxelVNdm9NdUwwYWMyOFlsKy9KbFN2WExZRWN6VE5tYU56bTVaclYvNnlhZjA2Q0FUWUErb21xZTF6TmFoZEhaRFhGS3ozalhObnoyQVdlRGxsRWdIWUlzaG5tdjA3cTl3NTRKN3dFdE5zbVRFZ2VnOExDY2s0QnF2NGpFcVNUalZ0RVdpU04xamlybDBoZEhiUXVmakxjeEVwMmxXV09PTGxreWZYL2YwRGNwcGlCQktQQVdySTl0MDFhelZUMEJUODVNbmo2dVVWUGxXcFZBbElMOENDQitEQjFjdVhxVmErVEpVeUpYa3VOejhWYzdUMzZkMVRuK29JVUV0STVuTklmMi9MWE5tZ3dVaVpHNGNvNnBEZnRSRHgxYUdZb3gxVFBYUHFsQmEvSlVETW1ESzVpWHR0V0F4aGt2cDBoTHR3SS9INk5hc1hzTEpnYlBTMWFQNDhSMnRMT0lHNkdKSW8zZUdhWUNQbVNGTFhwbWxqMmo5MjVFaWgvTmFMZjU1MzcrNGRYSllaWWFPVVNhVndZbjJPcHlVMjZOSXlWdzdHZkNVeVVwNFFNakVzWDU5K2I5UzhIQVduZUhEOFJ3K1dKUUVDUko1c21ZRXhlQlkwaFFnU0duUUFQOFpyRHdZSFVjQjM2OWVzQm5WNC92eTVMT044b21CRnVTcTNlaFY1S2NqS0xqaWZvK2E3WWM2dXJ5NWVTSW1zaVlreVdER3RKSlVtWEo4K2ZYK09QQ2wrYk90RUtuVzZSV3Z5cThSUFUwa3Q1RWhDSEg0dzFEUjdsdlZyVml0b2YrWEtXNVZHS3I5KytLQkpSSnNoVDNidjNGRzBnRzNWc3FYcVZxMzArdFVyaElKeHJGKzcrdGZWSzRuSHNPTGUzYnVzVzdPSys2Y3hvOERTczZvUGlZTEZPRUJnbExwdnorNHRHMy9EZ3pFZ3d0dmNHZE1SM0xtelo4bUpRV2J5Yko4K1BldFVyYVM1cjlyNzMyTkhqY2lWeVlDRG5qMTFDdC9GbFk4ZlBlcGdaVTVRV0xabzRaSUZQME95NnRlcUJ1cFE1blBycHQrMGlTdFpRRUxDcVJQSE1lZ2lkdFk0SEJPNWUrZTJ6SEhOeWhVRVlEUk56WG8xcXFEZ0pHWFo1NzErQ1lGcUY4NmZod3k2RkxETGt6WHo2Vk1uUnd3ZXhEVDFRWTJnYm1hVUE2cW96dzgvOVdDQ1FYTHluWldyVWp6U0RzNXNmYkJJOGRlWEkwVzdFbm9KdzVHK1E1TVZucVR3YmRIeFh6Tm1LSnpMcHFEaXgxYjJCd3NWZXhmOUVFVWxwWEk1NlU4c2l5c3VMbzdJZ1J3cFE2Y0wyK1gzSGRCZnJGNGp3RlRXWi9wSERoMGloNEVIRVhvSmhJUDc5YTFhMWkwMkZ2eDcvZVRKRXhJWWtwQlk5UUxIVUZYRW1SUUZpNGhwcDFYaittU3hQNHdjVGhUSElEeHFWaHM5ZkdqM2p1MEkyT2NqemxMWnhkRU8vQWRMRUJNOU1rak5OQmZNblUxQVFVTkJBZnNQaGdUQnQ1RXlHVUdwb29WTEZpbUk2M3ZVckZxallqbnlZM1FBbGxZcTdacTZKcFVVcjhxdFc0ZTJoVzN6Z1J6WUNuNVd1MHJGbUpnbjcrUGkrQW5lRnhmM2prSmo5MXF3TnBWdmZ0Q1dONTgralNHSVFMN290SGFWQ25nd0F4dnBPeGl6Z0tsUW1hU0RpbzNxMXJLMU1JMSsrREJGTCtrOUdESGdPRmUrSDZNbzJLRklvSW5Wd1VJdU9IU0tkbFZGdm9xOEdPWlNZcThoMjRVKzN1b3lpQXFob3VQcDAvZGx5WlhDdHkxc25wODRucXkrbUdaSlZqakZLTi9CNUgvQUR1WFJ3M3dSc1VRTzBxUlowL3dEOSszVkFwZ2U1SG00ZHVVS2NoaHNnclFoVDdaTWhEMm1qZHdMNXJNa0t5V1JzRExPS1FzT3dyYzFpS1pNOGpwMjFFaDRPMVlDWCt2ZjJ3c0ZvKy9aMDZaaUpWUVlQbmdnN29VUkNFR0xUeDI4b0RRY3dzbzRCL0lGZXloY3V4WVZkZlVxNEF4QWsxQVJ1WGZ0K0pPZ3ppczlPbldvVmFtY1dMT0F4MTZWQ2NQSUNOVWtXc0VIQXAzc2NPSTdtdjhSRVM1ZnVsU3Jjdm55cmk1RWdkMDcvK1IxRWlmaEJOOFpESmdSblFiczNTT1M0ZGVXalJwWTU4bDk5Y29WbmlBMDlMMXgvYTlwb3UrbkNsYWxjS0YzWDJYaHd0cmhVS255c2RlaWtsTzFTNTFuUjQraThxQzg5cUVGbkdITEVWMjZKY1RHcGl5TnFtcTd1V0RCQVZNcnVIZGdic3ZIQVlIWVlaS09TMnRzRmhSbHhET25UcUVNTUJwbE5vd2FPbGlVRVJNVDQyUmpoUitJVldwTGZVcm1GaGZIeEJiTm15TUtCcUtwUm5weit1UUpBaElzR20xZGlieDBMZW9xdUExTGlsQ3pXRzBoRERFUkFpZisrTVBjR2RQcVZLa0kwQTNvMDRzeEVKaS9IenBrK09BQjlIanA0Z1ZJRXo2azlhdlBBdTdldmkwS2hyNWlUS1J0d01hSXdRTWg0ZU5HanlLM3BuRmlNNVY3ZHVta0IzbTRJUUFPM1NVYkpIWVF0bVhoakp5Q0FaQU9FSGRRUEN3SmU2Vk5tTVR2bXpjeFprblNVRE9zaXRza2ErYWRmMnhUOGU4ZG53OGZQbkFyV3JobXhYSy9MRjBDWmd3ZDJGK0NkL3JOcFhRS05yWUl0bkk0VkxwODdGL1hQMUh3a2NPaFRzNGdzS3BnOHpOdE95UzhmcDB5ZTFWenR4WXR5bERCZWo4QVZYSjlsNmxydXphTUhqcFF2a1J4TitmQ0NsaTlCNjdpSkpXQ1c4NzA5OVA3a0xnK0xTeGZzb2pJalRKZzBlVkx1R2hoRytoYnNXUVJQUGxJZU5qOFdUT0pseWhlUkN3SzNyNWxDMGxSd3pvMXN4b01rTGloQTMzZ3REZzZYTFJMdXphUWM2cnQzYlVUQXR6VW84Nzc5L0Y2SFF0cElDOUMvY0Fwd2NMTzNJUXNqazduelpwUnBsaVI3VnUzbEhJdXRHckZNaXlBQ3IyN2R3VXdOUVV6Y2hnWnI2TmdLaXljTjVkSkFibFlPV2hSMGEwNExHL0MyREhnTUxiU3JINDlEYUsxUFM2ZVJKdzVoUmIzcUo0Tlh4SG5KajJEaUJnWkRBTHNFdnZTNzN0bUNOR0ZJZElFNExRUWZlRjhtRXZKZlptTnpubDZLVXZXYXBSTmZLK000SytaTS9kbk5mNGNSSXNuL2JadUxXYll5TDIyeE5xQjNuMHNqWTB1WGppdklSVjFHR0xIVnMwSko3ZHYzUkowL1pDNjEwYUZzYU9HZzBWZzNhS2Y1eUZIZVl0WGtQS21EZXZIamh5ZTJXQ3dNTXFLZkRFQ0pScWxialpRRGZuaTlNVUtGamlyaHVmVks1YlptT1hCVjZTUnExY3UyK2MxSnprRzh4Zk1tU1hOYXBJU0lnMkwzckp4ZzNBMGxGckF5dnpQYmIrWExsb1lkMFRCQkZkeVpkcUJxQk54TlRLc2NVWnBZZUc4T1R5QmM2RjFMRnRQbElqQmtpYnBTVmFpMnZ1WlV5ZHpmMmZZdTJ1SFZobXVSN1lHK1lmQUU2RkFhUWswMmhMZXB5U0xobEpJMWtxTlpBVkNzcHhkWDZzWm9hSmoxWlNlbnp4eGNjREFEK3BTNUVlU2hYYVZoUzJGU0tjbldlSkQ1eUxPNGxoMXExV0JRQkpMSm84Zlo1WTlDemtTVWRDelkvc1dEVHhxVkN4TENvRmIyT2Mxd3lvRnQ3Vk1OTzdkTzdBWGlJTm5rdjhOSHpTQUVJNFJQSDc4Q00wUmlnaUhrUmN2SXYyVnk1Y1NKckViL1c2U012Sm56ekVkbHdLMjVWeUwxcTVjQVp6d256UkJKQko1NldKUlJ3Y1hSNGZvNk9naFB0NG0yYklRWHpVSWtkY1pObksweXAwVExDVmxtdVkzQ2FaR0lBQUR3SDg2M2Z6YkJoR3VnNVdGc05uM3FZbWl0UFB3d1FNd1k4bUMrZm9kSVRXT0pPQ1I5SUtDV3padUlHdlJtZ3VTRk1FaVNRcHlaOG04YmN0bXloZ1pxUnJDcERXU0NJQnd4SkNCNElGYkVhZlZLNVlqRFcwZC9sTVdMV25TcFV0QmVXMkRVeGFablE2WVdvZnBkUHd4VFZLVmw2cmRXVUtoVTlJa2s3eW5tN2RLa3lZSjJZRmNQSDRVRGRGRlQwQWxnWWRVa3M5U1JRc2g4VFpORzNsN2RSOHpZdWlpK1hNN3RHcU9BaTZyK1NMWXpaeUhEdWh2VUpjRkdEMUFEYmhoMGVUMUVDc2IwMXdGOHByQnJmS2I1dWE1bzVVRk5XbE5OQ1RtQlhIRHJUMXFWT1VWYWxZb1dSd3ZsTldyUFR0MzJwbm5LV0p2SzRzYlR4NC9kbkcwaCtoUzBQWnJhZUhoZy9zbGl6Z1JOV21LaUVqc0pFYUFFNzhzVzBMdXk0dFlIck9vNEZZY1ZuRTRQRXkvWnlBc0R3OG02NFVFVUVhamFiWkRlRml0WENuNGdlYkI4dGF4bzBjSURjNE8rWWxOd0RnalozYUZiSzNIanhuOUtEcGFNeFRTWXJ5Rm42cFhLQXNmMUM5SEcvUkhOeWlkYk5TVVhGWmI2RGhnYmhQbVhBTEZmMXpvVU01MUpHb0pVb0NhQkg5YzZNaHBlbWZWcWpRTEhab2Z5TGpCSitqVjVjaExNTW1YTDErbTN5ckcvMlpPOVFmQnRDUUhwNFJOYUdrMGZKc2NmODB2SzBnNk1RZ0NHNTRCZnlHZm1UOTc1Z3gvdjhQaDRkb1JBN29tSktQZy9yMjhxRVBqUENmNXhndmgwbzhmUFZxeFpISFVGVVc3YjkrKzRUTTRNQURHOVBMRkMrMFFpQnhKZVA3ODJjZTg4K1pOVW1IdEszZytkK1owY25HNjJMZHJwM0JHTFpDTGtUMTcrcFJjYTgvT0hkcjZ0dnlrV2VGMHY4a2dyZW9QQ1pwWDRMSThKQjR0WDd3UTcwTEhCQ09FSnNJVWtCRDdvUDdxRlN0Z09WcjdHUzlWUnUvY0daREw3T05TcGJLWWxUK3NhSW1QaTFtcFM1WFhwMDRUUFArNFZHbHBlN2g4bGZnWEw5S2ZIdnJ5K1FjR21xRHU2cjFMWGZIUTFxMzBXMG15Sy9YMzExMmFFNlMvUHZjOGZRdGZycENnV2svNjU2SmFmU09pUW4zTGFhYVdrTHBVcHcraThicUgrbUdua1VtYVFwb3cvT2xtZ3lyQnM1MjZCdVEwQzdGUHR4d3RTNndxaGJzK1JWbWtGTjhOeVpmaXZvRzVMYUwvL0RQOVpnT2ZOMi84RlJZU2pIT2NQeGNoQXlYNWc2UnMzYlNST0txWnZNSjNMbDlldjNiTkFYV3pRVnoyM3IyN2lwZThlMGM3R0M4UlZ6dkJSSU5yVjYyRWNTaXJvWThmZzU5SER4MEtEUXFDellwMGFHM0RyMHJxS1dkVXNDUkpRQldUU2tnZ2dGR0JBaUZjT2FGeElCQTZvOEVHbjRBdE41ak1UMjlpU1N5dVE2bUNBZ011SzJjL2xGbmdsekExNGlJdG9LVHIxNjdKVGhHTlhMOFdGZjN3SVlNVUxKVk1EK3JMQUVSRFBDRis0NUdndCtqNHhZdm5FQUo5M25IenhvMTFxMWZoOTVKa3hxZWFGS05GU3VkVnIzdjY5T21sQ3hka1VzUmd1SWllU0greUg1eWtaa1J4ajZMRFM1VE9lTHRRWFVDSW1qQ1J1QnVTdWwwWW9tNFg3c3RpZkhYc2orbTNDMFhRdlQyNzFxdGVoZVJrNGR6WmZJVWlWUzd0UmlRanJKWXBYblNmdW96T05YM0s1RXFsU3BEbXFydThIaVNSYU02bmQ4OUY4K2VKWWFLNXRzMmFLQ3NQTDE2MGJ0SUkyamxzb0UrVnNxV2dWMGhXU1o5Y1hZaTFZNFlQMVZvYjR0TVA4dEtpb2NmVHB5bXRRV1dsdGNOaEIxczNhU2dibDFYS2xKVGtXTllvK0l5TmZUMTZtRzg5ZFpQWTI4c1RBdEdsYmVzbTllcjA2K2tKQ1pkMHRrSkpWenJ0MzZ0SHV4Wk5lV1hVMENIVEprOUtYWHoyWkxJOGJPeGVCeE9SSG1tZnBFajJKWW1YTkRpd2IrL3lyc1UycmxPV0tjanBQV3BVRTFYeFNld29YNkxZSU84K0hWbzJyMXV0OHAwN3Q5RXVrWUl4TXgyU1BWSytEV3ZYUU1TcWxpc05NK2VWZHMyYlNGUGFxU05EbXNOVGtoRzl2bkk1ektXRXN1RnYvM0hEbjlnY1hxTHNwVUZEQW5LWmg2VEczWlFOLzZ6R0YzMEdKZ3Y1U3FXdnFSUkQyVzd6NnRwSk9sWW9jVndjT2QrYWxTdEVFQ0ZCQjBvV0xnZzRId29MZzhpSVEzUDE3ZEd0WDY4ZXlxNW52NzU1c21VaDBLcW5zUTVDd1dqdys2RkR1bmRvcDRHU3BJWmNhR0xUaG5VVThET2FKY1RLOHo2ZVhRbVE2aDVxWDlQc1dVWEhlQ2V5bzdVUmd3ZVMxQXF0VFpPREV1bDlmYnhUVDVBMU9SQ3dUMmdtK1dpVk1tN2tTL0lUaklGM3gzMC9jc3pJWVhna054RVhpc0JQVE5iSnhnclNRQmwrTUVVOVVkU2dkbzJaL2xOU2M1N1RMbzUydVB2NWlMT04xVFNTcHVBS3hRbzZBQU5TaDNSRG1PUDN3M3oxRTRmb3lYNDVPY0txRmNzOU83WFhzbzhNVG5Tb2ZwZXk4ZkQyenUxVFRWdnN5NWI3Z0drK05YRlN6dWdFV3pzY01Na2JpdGI1cXFvMndNaWN4UGZHekZuSmNzSXlLZTBwVHRuYngwNUpRMkU2MC8wbVhZdTZXck5pT1dISXNyN1J1RzZ0VThlUFQ1MDBnVXhYT0JRQUNBdXJXcllVWHdmMDZZbVVHOWV0UFd1cS81WEl5STZ0Vy9EUW8yYlZzSkFRek9YTzdWdjhDb2lCVG56MTZ0eGh4WkpGRkVZT0dTVHBDZ21pZXBTSjF0eGtKR1JjRGV2VW5EVjFDdmpjdm1Vekh1SlZXQU40TU5KM3NMWm1McXNyaStmTnhVRWwvSGR0MXdhdTI2aE9UVFFYZGZVS3RGbVFsa3Q4em4vaStCS0ZIU0huM0VVZGJOZXZXU1ZtUVNRcVh0QUIrTUgxSVhmdjQrT0JGakFmVFFpejY5eTJGU0JFQ0doUXE3b2swQmdjR0tDcVVLbUdwZklLSFRYemNBOFBEWlhGdGRXL0xFZTE0QnpWbEhNSGp2WXhNVEZwRmdFTmFVL2NKUW5oVW5STXpidXJWaDJ0WEoza0o4RElURGwwWjI0VG5OYys1ZEJkVHJOZ213TG51blovY2ZaTW1vT1ZuM3F3c2gzVXg3UGJ5bVZMWDcxNnlheUlReWlia0tubGd1QXF3ZWFYcFlzeFErVko2cmEvZTdYSy9BbzdEZGk3R3g5dDZsRzNxWWU3ZDQvdTZtSnNmWUtUTE9nc21EdUhMQkFZNUhtdmJwMFJJb1U1TTZaMWF0TlNmNGhBV2dNWWNHNzhUOTB1ck1mQUJBOW1UNSthblB4QlMxNjFqYXhsQ3hjTTh1NHRSMDA2dG1xeGQvZE8rWldJVU5HdHVMYThJQk1aTzJvRWNZRjJLR3U3MnFBNmhBT2lBTXcyOFhDSDl0TkZ1ZUpGbzlTVlpMbXdlTlFQdlpDMURpNzBqUlZxRlU0Y080YUNlYkZ0OHlZeThRZjM3NE5Ecms0RlNFa1lEMWppcFR1UWxiRUhwLzZQSWZYWXJFb0ZFK1BlUFE0SWlQcnhwN1B0T2g2djQzR3NldTBUSG8zT2UvVzZ0V0RocTlTdFRVVzdxbW1rUHhnTk9hWUNzc2JQaEN0SnpHdFV0emFNQm5iUXBWMmJIcDA3cWlnWGc4djZUZmdKRjkrN2EyZVpZczdiMUpXbUxtMWJiVnF2b0M0d0RySTFWOWZ6c0Z3M1o2ZjllM2JmdjNzWDkwVXU1SCtLSzdScGlRZFR3T1JwYlFxdFhWVmFLKzFTWk51V3piS3g4L3ZtallMcXRDYjcvT1RadUF1U1FnMzY5VkYrK25uMnJGNWRPOGswNlhybVZMK2podzlGcWx1b1JNYzJ6UnBmUEgvKzdKblRwRWs4R1RGazRNUnhZNlV5YjVHelVVQ3Z1S2JDVEs5RkZiU3huakZsc3ZDRDZ1WExRZ2tKeHRBQzdKVitUeHc3V3RITjlVaDQyTEhEaDNIY2hyVnJnQ2pZQWZETzg2VUxGNGlsbG5JdXhNVGhua3k4U2IyNlVETTUrZ09HYXdjRnYvTGdlMUs2ZysvSlNSOFNNeno0L3JsVDc1SWh3SkpBVk8yVVpMSnlobVllczhLTkpvOGZwNUZEUWhkNDJMUytPMlNCT1loYjRBZk1YQ0lUR0xWdXpTcmg0VHYrMkE3ZGdFREprV2FwdkhqK1BNUWhEUHorZlZyelFvVXdvUDNxVm96aWtZc1duanB4UW1sTjFURlVnREs2Ui9GNHdKUUo0eldJbHBFSDdOMkR4WWdIQXhWRVZtcXVXTHBZNWtMeUNoOGtjUHFOSDBjN01OdnR2MitWeXJ6RnV4VDhKMDE0cXViMGNqNFMwNVRoWWZFdFZBbmc5M0lXLzliTkd3eTRaOWZPQTczN01EWnk4ZUdEQmpMK1ZvMGJRdFRGTzVXSmI5L1d0bG5qbG8wYWRHcmRVdFo2ZWZmbzRYRHNTYzQ1L2NQQjl3eitsU1IvWFpIRkVYV25saWZhWDFjK3BEOUgrWmsvQjZUL3A0SUdibHBpSUYvVEo1VDZDbW5LSDAwdG84cWFmWDZodGJTSDFwSStaUFNIZzdUVjBpVGxHVmFXUXBvSnBtOHR3MkZrbUY2bkgzYWFlZjN6UHh2K0UzOHVTdk92Q3UyL1JySklwQTFJdm1wTFNCb0dKT3JPRG1obHFhT1luKzV2Uy9yS24yc3RLVjFyMnQ5blV2YWhQM3l5QnBlb2V6ZjF6MFVKYVdhUmtMcHcvYkgzMUpIb1hVci9CeVFhMDViSjlHSlJoeEd2YjE4Ly9zOU5YS3FsaDlML2hvSy81dnJLeWwrdWsvNnZnbC8vYm5xRytPVi9JLzVMVjVyV3ZuSVdYMjdrYzVYLzJ4Nzg3ZnIyQi9CdjF6Y0ZmN3YrM2V0L0FPcXF3VUV1bHBPUUFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiI0NjU0NGQ1ZDhmNWQ0ZGI0ODlhY2VhODk3NzA3M2ZmZiIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsIm5vTWNHYVBlcm1pc3Npb25zV2l0aENsaWVudFBpbiI6ZmFsc2UsImxhcmdlQmxvYnMiOmZhbHNlLCJ1dkJpb0Vucm9sbCI6ZmFsc2UsImF1dGhuckNmZyI6ZmFsc2UsInV2QWNmZyI6ZmFsc2UsImNyZWRNZ210Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOmZhbHNlLCJtYWtlQ3JlZFV2Tm90UnFkIjpmYWxzZX0sIm1heE1zZ1NpemUiOjEwMjQsInBpblV2QXV0aFByb3RvY29scyI6WzEsMl0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6MTYsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4LCJ0cmFuc3BvcnRzIjpbIm5mYyJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XSwibWluUElOTGVuZ3RoIjo0LCJmaXJtd2FyZVZlcnNpb24iOjEsInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjo2fX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMTEtMDQiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJGb29uZ3RvbmUgRklETyBBdXRoZW50aWNhdG9yIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNDExMDQwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMS0wNCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTAyLTI2In0seyJhYWd1aWQiOiIwYTM1NzE1Ny05YjE4LTRjOGEtOTIwZS1kMTU2ZTk3MmIyZjgiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjBhMzU3MTU3LTliMTgtNGM4YS05MjBlLWQxNTZlOTcyYjJmOCIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IDUgU2VyaWVzIChDb25zdW1lciBQcm9maWxlKSJ9LCJkZXNjcmlwdGlvbiI6Ill1YmlLZXkgNSBTZXJpZXMgKENvbnN1bWVyIFByb2ZpbGUpIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTcyOCwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9LHsibWFqb3IiOjEsIm1pbm9yIjoxfSx7Im1ham9yIjoxLCJtaW5vciI6M31dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDM4NHIxX2VjZHNhX3NoYTM4NF9yYXciLCJlZDI1NTE5X2VkZHNhX3NoYTUxMl9yYXciLCJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJzbWFydC1jYXJkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlEU2pDQ0FqS2dBd0lCQWdJVVIzOG1xMjZTZjJzelZWMkJkRzZXRU43a3VXVXdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFSWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFOWTBXYjlvUG9Sb0tvUXlXUGFKcHoxMXZyV1RnNnpUdG1OajJWb0tSbnl2S0dScXB6YjgzdzVsNllBOTZVWWtZQkRRUDBpbE8yRFBlNndXcVZSNXpEZlJ6ZGNIOGJoK0w3ZEdHdmFlNmhSVFpoa0ZrQ3BYRHM0SGNja25yRGY4RkNsSjdIZTM5SmY0Mi9HMVFtMnp6OVdXbXJQWHRnaUsveDA1R2pzUWZHdURHMXpmNVFUVVVpZThsd3ltSzNUZmRPdk5lZUpBQVBlMnBuN0l0ZlJiK3JWck5XaUR6bFJuMnZObloyd1BvNHdIL1dKNmRoWFpHK3JNV1QrYTZCb2NnMVVmSXc2a2R1bkc0YlRwWnpzdmFjRll5UjBtcGYrRGVPbnBTV0FteXdKV0h2VGxmMllYeEZ5ZVhjVEFDZFFsY01OR0oyVmhaUTQ4eHRQNS9SQlAvOGtDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNoeTQyb2tpcWNUUzFpcWEvSFJXamtCbjRIL01COEdBMVVkSXdRWU1CYUFGT3EzUXBDZURIdGtldHRVZkFPNmZFNmYyS0ZoTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBbitSSElQYnRNRUROZFQxZzhIL1JpdEFrVWRMZ0F0MXRXR1dubGo5a25idjQvNEdsWDdDOXA0NWVmUE85L2FaTDZPVjFYUktCaTZLbXRCVzVLN251WUVuTXgvNUJxQlNiTFQ3cmhkdUM0OVRCZU1iOVBIZFhzVGxTVk5ZZWZyMWRHaWRyNGoweFZCUUxiMXJrbkRBYmRXRHpLZnZuYXlLTzhGcndlN0h4ODQzTUcvckorYzBYcnVVdmJmVlRDSExpSVdoTTdvTkRoTDh4b2I2eFVvOUtMS2NTTCtJdFlzTzMvOVdiOFE5R2pzcUw0RlhzRGNHMVNhWWg3S3BmdU1tT2l4cXpKWk8ybklpY1BZUmcxSTJTdWlVZllPNzB0bWRIY2JsK2tTUW1TWXQ3cnE0dmlJTGcyR3gzajlySVR1V1RqYmFVYVNTUXhnT21NU0h1eXpNQUMiLCJNSUlEU0RDQ0FqQ2dBd0lCQWdJVURxRVJ3KzRSbkdTZ2d4Z1Vld0pGRVBEUlozWXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFESTdYbkgrWnZEd01DUVU4TThaZVY1cXNjdWJsdlZZYWFSdDNZYmF4bjlnb2RMeDVzd0gwbFhyZGdqaDVoN0ZwVmdDZ1lZWDdFNGJsMXZielVMZW1yTVdUOE4zV01HVWU4UUFKYkJlaW9WN1cvRStoVFpQLzBTS0pWYTNld0tCbzZVTGVNbmZRWkRyVk9SQWs4d1RMcTJ2NUxsajV2TWo3SnRPb3RLYTlKN25IUzhrTG16WFhTYWowU3dFUGg1T0FaVVROVjR6czFidm9UQVFRV3JMNC9KOVF1S3Q2V0NGRTVuVU5pUlFjRWJWRjhtbHFLMmJ4Mno2b2tWbHR5RFZMQ3hZYnBVVEVMdlkxdXNSM0RUR1BVb0lDbE9tNGNycHduRFJMVkh2alllUEdCQi8vcEV5enhBL2djU2N4andhSDFaVXc5Ym5TYkh5dXJLcWJUYTFLdmpBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlRxdDBLUW5neDdaSHJiVkh3RHVueE9uOWloWVRBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBcVFhQ1dNeFRHcVZWWDdTazdra0ptVXVlVFNZS3VVNitLQkJTZ3dJUm5sdzlLN0hlMUlweFowaGR3cFBOaWtLam1jeUZnRlB6aEltd0hKZ3h4dVQ5MFB3M3ZZT2RjSkpOa3REZzM1UFhPZnpTbjE1Y0ZBeDFSTzBtUFRtSWI4ZFhpRVdPcHpvWHZkd1hETTQxWmFDRFlNVDd3NElRdE15dkU3eFVCWnEyYmp0QW5xL05EVUE3YmU0SDhIM2lwQysvK05LbFVyY1VoK2o0OEs2N1dJMHUxbTZGZVF1ZUJBN24wNmo4MjVycURxc2FMczlUYjdLQUhBdzhQbXJXYU5QRzJraktlcnhQRWZlY2l2bEZhd3AyUldadnhyVnRuM1RWMlNCeHlDSkNrWHNORDA1ZENFclZIU0pJcytCZHRUVk5ZOUF3dHlQbW55YjB2NG1TVHp2V2R3PT0iLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVRuYmJHSVIyTkh2enFJS0ZBZVF3RzFYQmlzMHdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFRWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPc1hqM2swNEJhbjRUWWR0WktxRC9PUEp4eUR5YVBtQ0JVRlVpYVpJZ1R0ZVpuajNYMjVEaGdwWlpYc0M0RDB5ZEljcmxBNndOVUluT1JML0w5ekJiVEVJTUFWTUdvNmc3VUtBbWIyTUY2QUhibmhZSmQ5ZWlrdXBWTldTaEhOWU5jNEdCZE8xWU42QWZVcXZKaEhiZTNWNFNOTVBtQlJFS0pQVno3VGh3Z21nZ1RlOFdzMkswL3dzcXYyd1NFN3BiQ0JzVVpoSVg1MWJaTTNwcUR3SlBUbVJGRXZ0MC82dEc1ZU84RjNqMTRPWHFmRWhtam4xVnZ4S0RZUU9MWkF4Q3d3Z0MwUDRDZGZXdjN5OFBTUjhJMzU0aE8xWStHek5qdklxWDM4TktMeXd1SVlIRmVyT3hObHhFTUJ2RmhZQnVSdVlBa2tnVWFQcU42VUJoc0lMcnNDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNDb1JIaGl5Tm5iblhSV0lMNlpCWG9CWDlZVE1COEdBMVVkSXdRWU1CYUFGQ0FvVUNFYnBGcGI2RlBMblozRjVQeHNMM29mTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFDUUZhZkpJMS81V2c5Q0VFaW1FMVJQNTRSZ1F3VE5UT09Rc0xBQ1RlK3JJdGxGUXpDOVpEaHJWODI4eVg3anp5K0FBc3AzaXpLN1QxdGgyZGw3bSt0dTBzdzJQYS9vbGMwMm50NlB5SXczNDhnYUh6aEkxKzBLRTQ1cXh2RkRlTDJsTXhiUGZDWXZ5RUVhWXpqaVFFTFU1OTUxcFhHV3lLTWEvNGZMdE8rWktPWGhNdVZlcTRyWERQSTU0VzZKSE9pQWFpS2Rpdys1ZTNjMmt0L2pGSVF0TTZ2TVhnOUxORnpkakVUTnQyMFZYOVFldlJwRlpmdWNNRzl3Q2FRRG9GbFB6cFRNSktoUGV2L2ltSm1aWWhLZnIwbExjZW10cWpJeExBb3FaZE9ZZkhCZzYrdkFjZFBJL2lhdUdwVUF2N1grVUtObUR3aloyQmFINHNMd2hCMm0iLCJNSUlEUnpDQ0FqR2dBd0lCQWdJVWV4OW5UOXZ3Wk5YUzQ4M0xkaVlHZncyU2pTb3dDd1lKS29aSWh2Y05BUUVMTUM0eExEQXFCZ05WQkFNTUkxbDFZbWxqYnlCQmRIUmxjM1JoZEdsdmJpQkpiblJsY20xbFpHbGhkR1VnUWlBeE1DQVhEVEkxTURnd01UQXdNREF3TUZvWUR6azVPVGt4TWpNeE1qTTFPVFU1V2pBbk1TVXdJd1lEVlFRRERCeFpkV0pwWTI4Z1JrbEVUeUJCZEhSbGMzUmhkR2x2YmlCQ01pQXhNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXUxTWV2bnk5ZHlPOVpVQzM5U29NaExjUi9EWHJ0Ri9jaU0xMnRjaXkyRVhBWjZNa3JpdlZ0Q2ZFVk05WDZJU1RFbkJQNnVTWVlvdjZwcHY2TzZKaDJOSG1ZbTR3K0puUzRWbkNQVTdtSEFNZlZJMk1HVFRNVk9ldzB4VXNHN3NJU0lrSURVQm11azhZSzljNXppYzkrdkZRR0xJa3NkWE81aVZGSWdORzUzY0dYRDRaTFpvQVBpdTBQRW96eEFxWUlhSTRneEtoT0EzUzgvVzhtSVdzdTZvZnlqNEd2a0ZHNlo3a3lGMzEwN1A3bXdGSExySTNFTmFQV01PRmNUYUdhMGR3Ky92VlJ3alJjRVpCVnN1dVQvODdja1NzMGE1cGt0M3ZaQmxhWWVUOHB6U3JlVjdtb3djSU05MEwyaWFBVGxQMG54bWFFNm5PeVRib2pGVmwyd0lEQVFBQm8yWXdaREFkQmdOVkhRNEVGZ1FVU1hFaDNzYTNidER1cm00TU0vQzdTMWxSdXVZd0h3WURWUjBqQkJnd0ZvQVU2cmRDa0o0TWUyUjYyMVI4QTdwOFRwL1lvV0V3RWdZRFZSMFRBUUgvQkFnd0JnRUIvd0lCQURBT0JnTlZIUThCQWY4RUJBTUNBWVl3Q3dZSktvWklodmNOQVFFTEE0SUJBUUI1R2MzaGFmdHA3aEtzRVpzbytpL1o1blJ1cWRtekcyV0NsVW9SVXFiYVB5Z2xuSkRqS1Iva2ZnT2w2aWJiRi96dGhtM0ttWFE3SGNESVAyeE1kRzdVMkwyaW1iSlFIcVBmL2gySHFvamI0clpndWUrNlc0a3RTUjVlbFI5TDFyWXFFL1NHWU00aUVLb1ZRU3Y3UlQxcnhJZVdpS3N3L1Z4eGkvUU9uc3gzRjd4ODBDQ1lnQjRFM3lReDhWVFc0NDBoVEV3VEExZU1IT2l4MzJ0UHR5eUhJYThQVlZJZlZwSFFKQmFNVnZ2NTA4VUVqd2tiVTJybmpmem9TVE5TOUE1alVROG1CU3ZlOTVyakIwZG85OEVVK0R4ZEJxWDIrSDZpNXdsSUNGZ3poZHpjc25lOWhHS1Q2bHpUWDRjSWRKc3JZMit4bGVLMEZGUXk2bEdFVkxFZSIsIk1JSURQakNDQWlhZ0F3SUJBZ0lVWHplaUVESkVPVHQxNEY1bjBvNlpmL2JCd2lVd0RRWUpLb1pJaHZjTkFRRU5CUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTVo2L1R4TThySVQrRWFvUHZHODFvbnRNT28vMm1RMlJCd0pIUzBRWmN4VmFOWHZsMTJMVWhCWjVMbWlCU2NJWmQxUm54MW9kNTg1aCsvZGhLN2hFbTdKQUFMa0tLdHMxZk81M0tHTkxadWp6NWgzd0duY3I0aHlLRjBHNzRiL1UzSzloRTVtR05ENnpxWWNoQ1JBSGZyWU1ZUkRGNFlMMFg0RDVuR2R4dnBwQXk2bmtFbXRXbU1ud08zaTBUQXVjc3JiRTQ4NUh2R000cjBWcGdWZEpwdmdRamlUSkNUSXErRDM1aHd0VDhRREl2K25HdnBjeWk1d2NJZkNrenlDaW1KdWtoWXk2S29xTk1LUUVkcE5pU092V3lETVRNdDFid0N2RXpwdzkxdSttc1V0NHJqMGVmbk85czBaT3dkd01SRG5INHhnVWw1Wkx3cnJQa2ZDMS8wQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQjhHQTFVZEl3UVlNQmFBRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRTXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJEUVVBQTRJQkFRQzNJVy9zZ0I5cFo4YXBKTmp4dUdvWCtGa0lMa3Mwd01OcmRYTC9jb1V2c3JoenN2bDZtZVBNcmJHSkJ5SjFYbnF1QjVzZ2NSRU5GeGRRRm1hM21pbzhVcGYxb3dNMVpyZVhySjBtQURHMkJwbHFiSm54aXlZYStSMTFyZUlGVFdlSWhNTmNaS3NEWnJGQXlQdUZqQ1dTUXZKbU5XZTltRlJZRmdOaFhKS2tYSWI1SDFYZ0VEbHdpZWRZUk03Vm9sQk5sbGQ2cFJGS2xYOHVzdDZPVE1PZUFEbDJ4TkYwbTFMVGhTZGV1WHZEeUMxZzkrSUxmejNTNk9JWWdjM2lyb1JjRkQzNTRnN3JLZnU2N3FGQXc5Z0M0eWkweEJUUHJZOTVyaDQvSHFhVVlDQS9MOGxkUms2SDdYazM1RCtXVnBtcTJTaC94VDVIaUZ1aGY0d0piMGJLIiwiTUlJRFNEQ0NBakNnQXdJQkFnSVVVY21NWHpSSUZPZ0dUSzBUYjNnRXVaWVprQkl3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRRG01NTViV1k5V1crdE9ZMHJJV0hsZGgrYU5hbm9DWkNGaDdHazNZWnJRbVBVdzBoa1NHNnFZSFF0UCtmWnlTMzNWRXJ2ZytCUXFubXVtZ05oZnhGcmt3RVpFTGVpZEJjQzhDNEFnNG5xcWlQV3B6c3ZJMTdOY3hZbEluTE5MRmNaWS8rZ09pTjZaT1RpaE81L3ZCWk1iajlyaWFBY3FsaVltTkdKUGdUY01HYUVBeU16RU1OeTJubTZFcCtwalA1YUY2Z2kyMXQvVVFGc3VKMWoyUmoveW5NL1NkUnQrZWNhbDVPWW90eEhrRmJMOXZ2djJBMk92NUlUWkNsdzRiT1M5bnB5cFFpbU9aNVFBWXl0bVlhUXBXbC9wTVl6NnpTajhScWtWRE5FSkdxTmZUS0EyaXZMWXdYNmxTdHRNUGFwZzBKODRsOVgwdm9WTi9GcFM0VkNWQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJRZ0tGQWhHNlJhVytoVHk1MmR4ZVQ4YkM5Nkh6QWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQVlNemdMckpMSXIwT292UW5BWnJSSUd1YWJpSFNVS1NtYkxSV3BSa1dlQXRzQ2hERUhwWGNKL2JnRE5LWVdvSHFROHhSVWpCNEN5ZXBZZXZjM1lsckc4bzd6SHhwZlZjYW9MNVNldUprekh4S240YlRhU3A5K012d2FtbnA2NGtaTWlOYkZMa25mUDlrWUtvUkhrTVdoZVJKMVVzUDF6NFNjbWtDZUlMZnNNczZ2cW92cWpXQ2xGc0pwQmNzbHVZSFdGN2JCSjFuNFJ3ZytBVEVvcFk0SWdHdjZadndjK0E5citBVDJocXBvU2tZb0FsK0FOWXdnc2xPZjlzSmUwVitUQTlZWS9VbGFCbVBQVGQwLy9yOXd2Y2VQV1prUGpLb0FDL3pVTmhmRGJoNExWOEdIczNseVgyWG9tTC9MTmM4Sll6eUlhREVoR1F2ZW9QaGgvdHIxZz09Il0sImljb24iOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJpY29uRGFyayI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsInByb3ZpZGVyTG9nb0xpZ2h0IjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwicHJvdmlkZXJMb2dvRGFyayI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzFfUFJFIiwiRklET18yXzEiLCJGSURPXzJfMiIsIkZJRE9fMl8zIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsImxhcmdlQmxvYktleSIsImNyZWRCbG9iIiwibWluUGluTGVuZ3RoIiwiaG1hYy1zZWNyZXQtbWMiLCJ0aGlyZFBhcnR5UGF5bWVudCIsInByZXZpZXdTaWduIl0sImFhZ3VpZCI6IjBhMzU3MTU3OWIxODRjOGE5MjBlZDE1NmU5NzJiMmY4Iiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibGFyZ2VCbG9icyI6dHJ1ZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwicGVyQ3JlZE1nbXRSTyI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOnRydWUsImFsd2F5c1V2IjpmYWxzZX0sIm1heE1zZ1NpemUiOjE1MzYsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6OCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoxMjgsInRyYW5zcG9ydHMiOlsidXNiIiwic21hcnQtY2FyZCJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi04fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotMzV9XSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5Ijo0MDk2LCJmb3JjZVBJTkNoYW5nZSI6ZmFsc2UsIm1pblBJTkxlbmd0aCI6NCwiZmlybXdhcmVWZXJzaW9uIjozMjk3MjgsIm1heENyZWRCbG9iTGVuZ3RoIjozMiwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjEsInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjoxMDAsImxvbmdUb3VjaEZvclJlc2V0IjpmYWxzZSwiZW5jSWRlbnRpZmllciI6IiIsInRyYW5zcG9ydHNGb3JSZXNldCI6WyJVU0IiLCJORkMiLCJzbWFydC1jYXJkIl0sInBpbkNvbXBsZXhpdHlQb2xpY3kiOmZhbHNlLCJtYXhQSU5MZW5ndGgiOjYzLCJlbmNDcmVkU3RvcmVTdGF0ZSI6IiIsImF1dGhlbnRpY2F0b3JDb25maWdDb21tYW5kcyI6WzIsM119fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNi0wNC0yNSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk3MjgsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWXViaUtleSA1IFNlcmllcyAoQ29uc3VtZXIgUHJvZmlsZSkiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI2MDQyNTAxMCIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUHJvZmlsZXMiOlsiY29uc3VtZXIiXSwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNi0wNC0yNSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk3Mjh9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjYtMDUtMDEifSx7ImFhaWQiOiI0ZTRlIzQwMTEiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhaWQiOiI0ZTRlIzQwMTEiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiU2Ftc3VuZyBQYXNzIn0sImRlc2NyaXB0aW9uIjoiU2Ftc3VuZyBQYXNzIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjI1NiwicHJvdG9jb2xGYW1pbHkiOiJ1YWYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfc3Vycm9nYXRlIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIiwiYmFEZXNjIjp7InNlbGZBdHRlc3RlZEZSUiI6MC4wLCJzZWxmQXR0ZXN0ZWRGQVIiOjAuMCwiaUFQQVJUaHJlc2hvbGQiOjAuMCwibWF4VGVtcGxhdGVzIjowLCJtYXhSZXRyaWVzIjo1LCJibG9ja1Nsb3dkb3duIjozMH19XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJ0ZWUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsic29mdHdhcmUiXSwiYXR0YWNobWVudEhpbnQiOlsiaW50ZXJuYWwiXSwidGNEaXNwbGF5IjpbImFueSJdLCJ0Y0Rpc3BsYXlDb250ZW50VHlwZSI6InRleHQvcGxhaW4iLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOltdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFFZ0FBQUJJQ0FZQUFBQlY3Yk5IQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUF5UnBWRmgwV0UxTU9tTnZiUzVoWkc5aVpTNTRiWEFBQUFBQUFEdy9lSEJoWTJ0bGRDQmlaV2RwYmowaTc3dS9JaUJwWkQwaVZ6Vk5NRTF3UTJWb2FVaDZjbVZUZWs1VVkzcHJZemxrSWo4K0lEeDRPbmh0Y0cxbGRHRWdlRzFzYm5NNmVEMGlZV1J2WW1VNmJuTTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlrRmtiMkpsSUZoTlVDQkRiM0psSURVdU15MWpNREV4SURZMkxqRTBOVFkyTVN3Z01qQXhNaTh3TWk4d05pMHhORG8xTmpveU55QWdJQ0FnSUNBZ0lqNGdQSEprWmpwU1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJajRnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJZ2VHMXNibk02ZUcxd1BTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZJaUI0Yld4dWN6cDRiWEJOVFQwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOTRZWEF2TVM0d0wyMXRMeUlnZUcxc2JuTTZjM1JTWldZOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXpWSGx3WlM5U1pYTnZkWEpqWlZKbFppTWlJSGh0Y0RwRGNtVmhkRzl5Vkc5dmJEMGlRV1J2WW1VZ1VHaHZkRzl6YUc5d0lFTlROaUFvVFdGamFXNTBiM05vS1NJZ2VHMXdUVTA2U1c1emRHRnVZMlZKUkQwaWVHMXdMbWxwWkRwQlJrSXpNVEkyUmtFNE1VSXhNVVUxT1VJeE1VWkZOamhDUmpJM01qSXlOQ0lnZUcxd1RVMDZSRzlqZFcxbGJuUkpSRDBpZUcxd0xtUnBaRHBCUmtJek1USTNNRUU0TVVJeE1VVTFPVUl4TVVaRk5qaENSakkzTWpJeU5DSStJRHg0YlhCTlRUcEVaWEpwZG1Wa1JuSnZiU0J6ZEZKbFpqcHBibk4wWVc1alpVbEVQU0o0YlhBdWFXbGtPa0ZHUWpNeE1qWkVRVGd4UWpFeFJUVTVRakV4UmtVMk9FSkdNamN5TWpJMElpQnpkRkpsWmpwa2IyTjFiV1Z1ZEVsRVBTSjRiWEF1Wkdsa09rRkdRak14TWpaRlFUZ3hRakV4UlRVNVFqRXhSa1UyT0VKR01qY3lNakkwSWk4K0lEd3ZjbVJtT2tSbGMyTnlhWEIwYVc5dVBpQThMM0prWmpwU1JFWStJRHd2ZURwNGJYQnRaWFJoUGlBOFAzaHdZV05yWlhRZ1pXNWtQU0p5SWo4K3BEL3pCZ0FBREJCSlJFRlVlTnJzWEFWd0ZNc1c3VUNDRTRJRkN3NEJDZ251QkNuOFEzQUtkM2QzTHlnY0NxZHdUK0h1cm9VR0owQndLZHpkMHI5UEYzZXFwM2Yya2ZkNDJkM3c5bFIxWUx0N1ptZnUzTDV5YnM5Nk1ET1NpOVpCdFArSmxvbjl0M0JEdEsyaXpSVHRzZFdFMnFLOUVvMy94OXVybjdJd0ljZ3RHSnNHbVRBUDBSS0w5bFMwYU13TkZlR2krVVlYZndhTEZ1aVdodzJnUEQvdzU1cG8vbTU1V09JNkJQUlJ0Tmh1V1ZqaWt5ZlV5Rm5mbmpadFdsYXlaRW1XTFZzMjV1L3Z6K0xFaWNNNDUremJ0Mi9zeG8wYkxEUTBsQjA5ZWxUKzZ5UkkyYnh4dEllb1c3Y3UzN2x6Si8veDR3ZVBDSTRkTzhaYnRtenBERS8yeHFFQ3FseTVNcjk0OFNML3AzajgrREZ2MGFLRlF3WGs4Vk5BM3BHcHA1NmVubXpObWpXc1dyVnE4dlByMTYvWitmUG4yZkhqeDluVnExZGxlL0RnQVh2MzdoMTc4K1lOOC9iMlp2SGl4V01wVTZaa09YTGtZRm16Wm1YRmloVmp4WXNYbDhkamZsQlFFQXNMQzR2c0pmWTIwaldvZE9uUy9OV3JWMUlEWnM2Y3ljVk5XczZMSFRzMjkvUHo0MElZUEYyNmRGd0l5SEplK2ZMbCtiNTkrL2p0MjdkNW8wYU51SWVIUjlSY1l0R2lSZU1WS2xUZ3UzYnQ0cjE2OVRLTnBVNmRtcmRwMDRhdldyV0tuenQzamd2TnNWeFN3bGh6b1MxODY5YXR2RStmUGp4Nzl1ekdPUklsU3NSNzlPakJzMlRKRXBsQ2lqd0J4WTBibHhjcFVzVDRuQ0JCQW5tVFo4NmM0YjhEYU02WU1XTjRpaFFwL2d3ampTYzllZkprL3ZuejUxL2UvUHYzNzdtd1Fmemx5NWNSOG5BYk5temdCUXNXakxwR3VsKy9mbXpJa0NGTTJCZWJNY1EyaHc0ZFloY3VYR0FoSVNGTWVDZ21CTVRDdzhObGl4OC9Qa3VjT0RFTENBaVFjVkpnWUNBVEdtbjVQY0hCd1d6Z3dJRk1hRmZVTU5MaWhyandVRFpQSEpveGFkSWtYcWhRb1g5MDNreVpNa2w3WmhVcWZQejRrVGRzMk5EMU5VZ0VnV3pac21YTXk4dkw2SU5iSHpkdUhKczllellUSHMzb1Q1SWtDUk5MUkViVUdUSmtZTDYrdnJKZkdIaXBUWGZ1M0pIdVh4aHlkdm55WmRQM05HM2FsSFh2M2wxcW1BcUVCZnBjbDlHZ0prMmEyRHpacFV1WG1neXFXRGE4YTlldWZQLysvZnpUcDA4Uk5zNGk5ZUN6WnMyU2JsNzl6dDY5ZTV2c0c1eUFTeHBwdUc0ZDRpa2I0OUdqUitmQ0huR2hUZngzZ2RDZ2Rldld4cmtSTngwOGVOQVlSM2poY2dKYXZueTVLU1hJbHkrZk1WYTRjR0V1MU43eVpwODhlY0pQbkRqQnhiTGtFeWRPNUNOSGp1Ump4NDdsQ3hZczRMdDM3K1kzYjk2MEt5aWNVMFRueHZmZ09PRDY5ZXV1SmFCa3laSVpGdzAzTFd5S01RWXQwdkgyN1ZzK1pjb1VYclpzV2JzUnM5cHk1c3pKdTNYcnhvWFhzeFRVd29VTGpibFl2a0R0MnJWZFIwREN4Um9YbXp0M2JxTWZrYTRPcEJ2MmdyeFVxVkxKdUtaTW1USThUNTQ4UEduU3BEWnpNSTc0UjRjSUYrVHhtSU9sTEhJOUhpTkdETmNRa1BBMjhpSlZTZ0pQWE1XWEwxOTRqUm8xVE1jaDkycmZ2cjFNT2U3ZnZ5L25xSUR4RlY2TXIxMjdsbmZzMkpFTHIyY2NDKzFER3FMaStmUG5QSFBtekhJY0dvUTB4T2tDeXBVcmw3dzQyQXQ3M2d3MkNVbW9Hcy9BeHZ3ZEx3WmdQbzZEVWFaellYbnBzUlljQnNaY1FvT2c3ckE3eU1ieEdjdEROOExxRGZYdjMxOG1vZllBTGFCbUR6aStiOSsrcG5PcWVQandJWThWSzViemJWRE1tREdsNTBIa2pNOGkyT05mdjM0MUxSSDBVWGEvY2VOR201dkYwcG94WXdhdlZLa1NqeE1uanVuOHlOS1I4STRmUDE0bXFUcTJiOTl1YUVtWExsMU1ZNGl6bkM0Z1ZZWHh4UFNiS0ZxMHFERytaODhlRzgzcTFLbVRGQnpOU1pNbURXL1FvSUcwTjJBTzlaUUVOZzdhb2VMYXRXczhZY0tFY2h4WnZncVJDN3BPSEhUNDhHSFR4ZUZHN2RtSkxWdTJ5SWlheG12V3JHbVp1MUdHdjNMbFNzUGdJdUJjdkhpeGFRNWlKVnJpNEo5VS9LYWgvbmNFdEdiTkd0TkZ3YzNhc3cvd1dPcXhNTG9SQlphYW1tTG94RDR4a3lvQmgzakxhUUx5OGZHUmRzQmUwRmFuVGgzVDJOR2pSMDNMVTAwUENFZU9IT0h6NXMyVFFvZDkwZ0ZOcGVDeVo4K2VwakdSRU12K3FsV3JtdXlVMHdRa3NuUFRCZTdZc2NNWUsxR2loSTB4Vm8yd3ppeENNR3FRU2Exa3laTDh5cFVycHJsaFlXR0dsOUt2QVdFSCtpbnFQbnYyclBNRXRIZnZYdVBDNEtHb0g4Uzh5Z2pDbXlIMm9YRjRHQlh6NTg4M3hWV0l0bGV2WHMySERSdkd2Ynk4WlArMGFkTk14OEJtMFRISXZRaWhvYUZHckFVZ09WWWRnVU1GaFBnSFFJSkpmWWlEd3NQRFRUY1RHQmhvaks5YnQ4NDBCZzJnTWQwTEVWQzlzTEpuMDZkUGwvMDVjdVF3OWRlcVZVdjJueng1VW41V0hZTERCSVFZYU1LRUNieGN1WEpHWDdObXpXeHVybUxGaXNiNG5EbHpUR056NTg0MXhwRE4veFdhTjI4dTUwRW9Lb29WSzJaajdKR2VvQTloQWtEcGgwTUZwS3N0cUZRZDFhdFh0NnNkNnBLRWNWVngrdlJwdWJ6dTNyMXI2a2NDaS9sSVJBbjM3dDJUZmQ3ZTNxYTV5TlhRSHhJU0l1MlkwOXg4Z1FJRjVBM3BzVXVwVXFXTU9ZTUdEYkoweVdqMTY5YzNqY0d6cVJVUjFaTWgvYUFrVndYT29Xc2hqRDc2R2pkdWJOSmlod3BJdHdsRWVXYk1tTkdZTTNUb1VCdGFBc3NUWTNuejVqV05nWXpYdndQcHh0T25UNDA1MEZUMFQ1MDYxWlI3cVlhWkFMb0V4NmRQbjk0NUFvSzdWWUdMVnNmVm13QnUzYnJGNDhlUEw4Y0NBZ0pNOUN2SzB4akRjc0RPRDRRTXFLZkI2TU1KcUFrdWFBOTROOVZUWWg3T3F6S1hDQ2FkbW1xQTRnREF5MkRuaHJvMDlBQVNPUlB4T1RDczM3OS9ONDNERTJITUNzK2VQVE1KQ0o0UWN4RWVFTFp0MnliN2tIOFJRT1U2VlVEd1lvaDYxZG80b3RoSGp4N1oyQnhLYkRHdWh3R1V0OEhRUnBUVVI5QUpCcEVBZ2VNY1dGWUVhSmdWSyttVVpCV0cweXF2UXFKSmM4QWU2cUNZaFJxRUJNS3RiZHUyTWd6UW8yakM0TUdENVh4NE1iMmFRUXduQUNQdFZBSEJJRU9Uck5oQmRWZUhIZ1lndWlaWC9LdFdwVW9WbVRMb214Z3doZ1JXNWJ2UnQyalJJcU52OU9qUnpoTVExTmRxa3dHU1VsUWlTTFAwYWdTOERwRnN4QjlEKytBQlljZ1I1eUJPMG5sb25UYlJjejZFRytoRFVHbEZ1emhjUVBBazRKc0pDT3l3NzRmR3NVeFFNOWVUVW15TndUaVdGNHozWHdIR21WSUtOQ3haTlRFR3lVWUF6WUUrbEowSWFnbktLVXNNNm94Z0R2YUYraERpNndRYUFJTk9jMEN6V3VIRml4Y20ybGIxZ3FpLzRWaC9mMy9UUGlUYXdRYlFIR0l0bmM0b3Fva2dhbGFiTjIrMnVUbDRKa280clJKVzNIeUhEaDNrMHdhTjRldnJ5NE9DZ21SZFh3VzhJOFZSYWxQdEV5WEd3UHIxNjEyRGNvVU53ZEt4QXVoUmVxcDZpUnBBanZhclBZNG81UkNRb2V0enNOd0l0QVVHZGd5Y3Qwc0k2TlNwVXphQ09YRGdnTHc1bFgxRU1LZWlYYnQyeGppTUtiaHFCSGZRTUxYbWppV2w3dUNBOFZhL0h6UXVnV3hnNTg2ZFRSeVVVd1VFUWFpRXZPNis2OVdyWjFPTlFBMmRPR1NWZUZNQjBremRmSzdXLzlXS0NobHVnUFpSUjZUbTd6QUJnZm9ZTUdDQWtTNVFBOTJobDN1QVZxMWFHVGRoYjljSEFVdVN6Z2Zxd2lyQVJHbWFvRzZMY2NsTm5LQS9rRnhhUmNBd3ByVHBFaEd6WGx0SFdJQXlEWmFIQ2hRVmRVSU9jWk1WaFF0dGRWa0JZWU8zRlVCWFlLY0h6UVBEcCs3N1FXNUdaSmdWbFVMY1RzcVVLWTA4RHB1b2FLNzZNSDZESEl0OEFjR0RxSUFuZ1dDb3FFZHo5TFFFMFREdG9xY3RMR2lVOUNJdTh2VDBsSDBVOHlEaXBtQlZOZUMvd2YwNFpvbWgrb0NjS0gvKy9LWitWRHAwQ2dRYnFiRDdUT1dPSUFERVFlaFQ1eWRQbmx6MmdmcWdhcXBPMkNOSi9ZMEtodU0za3VOcFlwOFFYTDVWQVpEU0FOM20wRzRRTllmRFRuMzAwUjRpMkM5OFJvQnBWU0J3YVFFaHc5YzVJWld2VnJldTZGdjBxR3dORC9maHd3ZEQwM1NLbGtnekVpSVloU2p6S2dJSU5KV0dvR29vT0J4YUtsYWxZNlFXTkFhYWdvQXl0RjQ4UkZ4RUtRVTBORXErcXpGaXhBaDUwMnJ0akdpU0ZTdFcyQ1hXRURsYjdkQlFqVHZaTFNTa1VmSnRIM3U3WWVIVjFOd0tXTEpraVRFSHlTZ0tmd1JLT0ljUEgyN2FJWUlzZnRPbVRhWThMOG9LQ0c0ZTlLa1YxTW9EZHI5ZXVuVEpwZzZtOGp1a1VRZzAvNlYwd3ZrQ3dxWW5KSjlxZ1JFdUhLVWZOUUpYOHpWNEsvSnlxa2FoZlAzSHZ0UkxYa3N0U1lQL2dWZlQrV3JheGtMQ2dmQVFYZi9SYnoxYmVidFJvMGJaRkJlSnJ3NE9EcGFWV0FoVjMrRHB5TGVlMzRrV3oxbHY3dVBOWm1Gd21aK2ZIL1B4OFdFaSs1ZHZQK1AvSWlTUWJ6ZzdFZS9kUDAzeGk1K213RS9pM0hmTHdTN3VRMEJyM1hLd2k3WHVIMWl5RC9rRFN4REtDOUZxdU9WaGd4by9aV1BBL1NOdkZqL3k1cUZKemYwemdkclBCUDVmZ0FFQWJNajMwdzN2c3hjQUFBQUFTVVZPUks1Q1lJST0iLCJzdXBwb3J0ZWRFeHRlbnNpb25zIjpbeyJpZCI6ImZpZG8udWFmLmFuZHJvaWQua2V5X2F0dGVzdGF0aW9uIiwiZGF0YSI6IntcImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlc1wiOltcIk1JSUNpekNDQWpLZ0F3SUJBZ0lKQUtJRm50RU9RMXRYTUFvR0NDcUdTTTQ5QkFNQ01JR1lNUXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0F3S1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ3d05UVzkxYm5SaGFXNGdWbWxsZHpFVk1CTUdBMVVFQ2d3TVIyOXZaMnhsTENCSmJtTXVNUkF3RGdZRFZRUUxEQWRCYm1SeWIybGtNVE13TVFZRFZRUUREQ3BCYm1SeWIybGtJRXRsZVhOMGIzSmxJRk52Wm5SM1lYSmxJRUYwZEdWemRHRjBhVzl1SUZKdmIzUXdIaGNOTVRZd01URXhNREEwTXpVd1doY05Nell3TVRBMk1EQTBNelV3V2pDQm1ERUxNQWtHQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdNQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjTURVMXZkVzUwWVdsdUlGWnBaWGN4RlRBVEJnTlZCQW9NREVkdmIyZHNaU3dnU1c1akxqRVFNQTRHQTFVRUN3d0hRVzVrY205cFpERXpNREVHQTFVRUF3d3FRVzVrY205cFpDQkxaWGx6ZEc5eVpTQlRiMlowZDJGeVpTQkJkSFJsYzNSaGRHbHZiaUJTYjI5ME1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRTdsMWV4K0hBMjIwRHBuN210aHZzVFdwZGFtZ3VELzkvU1E1OWR4OUVJbTI5c2EvNkZzdkhyY1YzMGxhY3FyZXdMVlFCWFQ1REt5cU8xMDdzU0hWQnBLTmpNR0V3SFFZRFZSME9CQllFRk1pdDZYZE1SY09qencwV0VPUjVRem9oV2pEUE1COEdBMVVkSXdRWU1CYUFGTWl0NlhkTVJjT2p6dzBXRU9SNVF6b2hXakRQTUE4R0ExVWRFd0VCL3dRRk1BTUJBZjh3RGdZRFZSMFBBUUgvQkFRREFnS0VNQW9HQ0NxR1NNNDlCQU1DQTBjQU1FUUNJRFVobysrTE5FWWVuTlZnOHgxWWlTQnEzS05sUWZZTm5zNktHWXhtU0dCN0FpQk5DL05SMlRCOGZWdmFOVFFkcUVjYlk2V0ZaVHl0VHlTbjUwMnZRWDN4dnc9PVwiXX0iLCJmYWlsX2lmX3Vua25vd24iOmZhbHNlfV19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAxOC0wNS0xOSJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMTgtMDUtMTkifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyIzYzIyYjU5N2YzMGU4Njg5ZWQyNDYwZjlkZmU5OWI3NTEwMzI5MmY2Il0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjNjMjJiNTk3ZjMwZTg2ODllZDI0NjBmOWRmZTk5Yjc1MTAzMjkyZjYiXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlJlZHN5cyBVMkYgQXV0aGVudGljYXRvciJ9LCJkZXNjcmlwdGlvbiI6IlJlZHN5cyBVMkYgQXV0aGVudGljYXRvciIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiYXR0YWNobWVudEhpbnQiOlsid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURBakNDQXFpZ0F3SUJBZ0lKQU1FVnNwZUVzR2lLTUFvR0NDcUdTTTQ5QkFNQ01JSGJNUXN3Q1FZRFZRUUdFd0pGVXpFY01Cb0dBMVVFQ0F3VFEyOXRkVzVwWkdGa0lHUmxJRTFoWkhKcFpERVBNQTBHQTFVRUJ3d0dUV0ZrY21sa01TMHdLd1lEVlFRS0RDUlNaV1J6ZVhNZ1UyVnlkbWxqYVc5eklHUmxJRkJ5YjJObGMyRnRhV1Z1ZEc4Z1Uwd3hJekFoQmdOVkJBc01HbE52YkhWamFXOXVaWE1nUTJocGNDQjVJRlJoY21wbGRHRnpNUTh3RFFZRFZRUUREQVpTWldSemVYTXhPREEyQmdrcWhraUc5dzBCQ1FFV0tYVnpkV2RsYmk1VGIyeDFZMmx2Ym1WelEwaEpVSGxrWlVWdGFYTnBiMjVBY21Wa2MzbHpMbVZ6TUI0WERURTRNVEF4TVRBNE1EWTFNMW9YRFRJek1UQXhNREE0TURZMU0xb3dnZHN4Q3pBSkJnTlZCQVlUQWtWVE1Sd3dHZ1lEVlFRSURCTkRiMjExYm1sa1lXUWdaR1VnVFdGa2NtbGtNUTh3RFFZRFZRUUhEQVpOWVdSeWFXUXhMVEFyQmdOVkJBb01KRkpsWkhONWN5QlRaWEoyYVdOcGIzTWdaR1VnVUhKdlkyVnpZVzFwWlc1MGJ5QlRUREVqTUNFR0ExVUVDd3dhVTI5c2RXTnBiMjVsY3lCRGFHbHdJSGtnVkdGeWFtVjBZWE14RHpBTkJnTlZCQU1NQmxKbFpITjVjekU0TURZR0NTcUdTSWIzRFFFSkFSWXBkWE4xWjJWdUxsTnZiSFZqYVc5dVpYTkRTRWxRZVdSbFJXMXBjMmx2YmtCeVpXUnplWE11WlhNd1dUQVRCZ2NxaGtqT1BRSUJCZ2dxaGtqT1BRTUJCd05DQUFRZ0d1bVNkNWJkOXB3THMzMlhXU05iSEZDUWRHZ2tDQkx1U0hKbmVYUWNFS0NCV1JDMnlNME1hL2pleXZXUzhaVGhFaE5vVHVvRzBIS0RHd0MvcGZDRW8xTXdVVEFkQmdOVkhRNEVGZ1FVUENLMWwvTU9ob250SkdENTMrbWJkUkF5a3ZZd0h3WURWUjBqQkJnd0ZvQVVQQ0sxbC9NT2hvbnRKR0Q1MyttYmRSQXlrdll3RHdZRFZSMFRBUUgvQkFVd0F3RUIvekFLQmdncWhrak9QUVFEQWdOSUFEQkZBaUJaZUQ5ajZvVUtNWjBrVzBtRENuSHFLcGxaYldlVFN4R3p2U1JmOUpzZjh3SWhBTWY4ZDEweWx6SVl1bGZpdTBPbnQ1c0lXNS9SRW1lMFZ3UHg5T2JoTEFUeiJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFNZ0FBQURJQ0FZQUFBQ3RXSzZlQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQURzUUFBQTdFQVpVckRoc0FBQ2J1U1VSQlZIaGU3WjBKZ0IxVm1iYmZ1dnZ0N25TNk8zc0NKQUlTQWhGUkJCVUVsTVZBWUNLUmdZQ0pFY0t3aW96b0RPcUFxR3dqbTdJb2htWDRkWVJCUUJIWlFRaUt3SThDaW9JUUlDeUpDZGw3WCs1YU5lOTc2dDdPN2FSVGhKQTB2LzdmazV4YmRhdE9uVHBWOWIzbmZOK3BxdHRlUUdBWXhxREVLbFBETUFiQkJHSVlFWmhBRENNQ0U0aGhSR0FDTVl3SVRDQ0dFWUVKeERBaU1JRVlSZ1FtRU1PSXdBUmlHQkdZUUF3akFoT0lZVVJnQWpHTUNFd2doaEdCQ2NRd0lqQ0JHRVlFSmhERGlNQUVZaGdSbUVBTUl3SVRpR0ZFWUFJeGpBaE1JSVlSZ1FuRU1DSXdnUmhHQkNZUXc0akFCR0lZRVpoQURDTUNFNGhoUkdBQ01Zd0lUQ0NHRVlFSnhEQWlNSUVZUmdRbUVNT0l3QVJpR0JHWVFBd2pBaE9JWVVSZ0FqR01DRXdnaGhHQkNjUXdJakNCR0VZRUpoRERpTUFFWWhnUm1FQU1Jd0lUaUdGRVlBSXhqQWhNSUlZUmdRbkVNQ0l3Z1JoR0JDWVF3NGpBQkdJWUVaaEFEQ01DRTRoaFJHQUNNWXdJVENDR0VZRUp4REFpTUlFWVJnUW1FTU9Jd0FSaUdCR1lRQXdqQWhPSVlVUmdBakdNQ0V3Z2hoR0JDY1F3SWpDQkdFWUVKaEREaU1BRVloZ1JtRUFNSXdJVGlHRkVZQUl4akFoTUlJWVJnUW5FTUNJd2dSaEdCRjVBS3ZOYkZCVmFab3E3YjREUFZDN2xFTFN2UXRDNURGNTNCM3lmUytOeHhESjFpTmVQUWJsNURCTFo0ZjJxMWZhYVYxSjVIcE5oRENWYlRDQlZBNjVPYzR1ZmdmL1hSNUI0WlFHOHhjOGhXTE1Lc1R5Tm5ZcUpKWmlQVmw4MWVOWEFseHFLVEZ4WGJHNkF0ODJ1Q0hiY0Q1aHlFQkpUUDYzRkRna3R4cytBbnlZWVkydXp4UVNTNjEwSi8vRmJVSHJxVmlSZWVBckpIQTJmVnAzS2NtV21rdUl4Q29QS0NId2FkNldmOEtRTUVsQTVUbUVCZ25JNVhFekJsQXZxZVppMjNSSEJmaWNnZnVBcGlHZWErZ1ZqR0Z1VExTS1FzaCtndU9wVnBGc21VQkgxYnBrS0RYcGJVWGpqV1hqUDNRYjg0VVlrK256RTY3Z2lsb1lYcHdJa2hrbzM0TlhVd3MyNmFuRzluMVFsS1JhcWhUMVF1UnZvbTd3YkVwODVENmtQZjBZNUVXUDM0N05ycXJwemhyR2wyR294U0pXSzErVGlpZkpMQzRDYjV5RFp2aHhCUTR3RzdWRWd0UkZHdjlNVmZySnFFZzVsQXMvbk9sVlZQbGFlZ3FCUWl1a1VpbC80TDlUdE15ZnNqOWd6cWJ4SzMyUVk3NXF0THBEMWtYMzNMTGdFbWR1K0JtOWtQY1ZEWDh4ajI5OWZqYXBJcWxBZWJwVVg5akxzcmJUTUthNVFRcm1UUFVwRE0ySmZmaENaSGZaMDZ5dzZNYllVbXl3UTE0ckxNTjlsK3h3RzJVRDMwdWVSdkd3M3BKb1M4RHoxTWRWcU1JZFhNWEJYTmMxenp4SUdseXMyY1NHNkJLSmx6QjRVaWlpdnBGQSsvbGxrenZpRjJ5TEIzZ1N1ZHpLTXplZHRCQkxLb3B6clJySFFpMHpqYUdkOFd3THR0TEJvQWVMekQwU3NKU3NKY0NGTDl5UWgwaThTZlZSRXdxcDZNbnhONlhLNXFsTW9YdGxuSEVTSHJTT1BmSkdDdTJ3SmhUZU9lVW9JWWdsenVZek41bTFzeDBPK1p4WGFmblFxc2x0UUhDRStranNlZ1B4ZTg5Zzc5TUZMME9pWmdpU3JsS1RMbGVEZWxKSkt6SjcwNGFVb0NNMm51SXpKWXdveXpNdkV1Qit4RVVta21xbVlVOGVqNy9tSFVhWTRuS0FNWXpNWnZBZmhraEp0c05UWGp2TE1ac1IvMllGTXRyR3lja3VoM1hySWxRdUlmeWVONVBBNjFTWmNxdDdEOVNaTS9XaWRlaERYZ1JBWlBtZDhDc3IxSkJYM3EwZ2hsY29vTFNraGYvcHRxUC9vVVZ3dmQwdi9yUzh4M2hrRExZYUc1dlFpK3l3WDRjMWw4THZIWkNTM3VEaEVhUHpwZUFxNUhmYWluUmZneDdtTVBVakFhY0FlUTcyR3BtRmkzVktzRjZkUVQ1SmlQdlUwbFI3SHJVdFRRSFZNOVFra2RrZ2hQZjlvOVAzeFFXcEhJbks3TTR4M3hBQ0JCR3F4K2IvQStmeXBvNURRemIxZFA3MVYyMTNGMnVrSis3Q3pLTGs3N0JJRlVoS0hSTUxxY0ZrMTZTNjgzQ29sVUNpZThqbXh5UDFTUVVyTVNLRWd5eXc3cGhDLy9oQ1VWeThPUldJWTc1QUJWcU0ybldhSDNPV0hvYjdZQVk4R0Z3d2Y2WXg0YTZGOWxySXQ3cUV0RjMrb1JuRitTQXdKOVJMVkpNRXdWV0lUTDBraEpKT2NNamhQU1JUTW8xNGx3L1g2bmszQ3o4YVFuQmhIOFpKSmJqK1VFNDl2YXg2TjhZOUdSU0NoN3kveXovMGFEVS9lQjI4WVBYYmFtYmQ4MFZidFFXUzRzZDdGRkFNTlBTWVIwTWdwRHVjMmNjY0JSUUlubElwQXVONTNTWUppdnFyYmxXWkpFb2VXWjlTcnNHeCs5N0lwMURVRGZUZlAwdTU0bkNyY01EWU5aL3ZxTllLZzZOclcwcFV6RUl5aG9URklsbC92TDNwb3E3ZTU1YmNlQ2x0K041SVZRNHdDQU9NUXpYdVZhWXhUbHlnU3JmZGNraURrY25GZWVST0pTbTlDRVdRb09FMFYremRsa1g3NU51UmJYOXlxWWpmKzhRanRoWUc1N3lYUi9kQzFxQy9rM0kxdHJaRTdrMTYrRXJrVnI3aHNXeExkN0ZPdjFkZTZFSm1lSlJRSEF4NjVUZ3JRSlFyVndRM3pNaGR0dnQvVmluTTdDU25PdUlQekVsV1l1STFpRmhlYmhLSnhJa25SRGFOUUVoTlkxdDBuT0RmTE1EWVZOOHdyUTFVdmtUOXhPT3FUblRRMnVUYzBZYmJLS0FYb2E1cUV1bSsvRm03Z1B0ODlFb2hLeTk4NkZhbjhhM1RuZEVkZEF1QWV1S282VlU1NlhxeVBGQk9LU3E2WS9vWHJ0WUN6ZWc1TFM0TXlFK2ZkczF0Y3BhblBCb0RMaXl0NzRaMjhBcW42TVpVTkRTTWExNFBRaEZCOC9VOUl0VkVjTlFaS3A4WDU4ZG0yMTlGejY2bGIyTlh5VVBqdEY1SHUvU3ZpS2ZVZXJBbzFFT2hHaDJyRjVLbFhVQytpb0QwbTl5djhyZ0VwbjNtcmNZZ2VxM2ZEdlpwUzNFalNOMlN2RVNodzEvSjBnbTVaR3VsUmJBaWV1d1FsWnFOaytHa1kwZEI2UXZ6Zi9CZGlUWnFydURqOEp4UFNORmFmUXZiSitjai80b3RPSktGUXFzMzNPME5sYXZ1ZTM1K081S3ZYd0tzZnhwM1FYTmtyK0JTQ1lna1hWM0RpVXVXNzcrSU56bE1nY3YxY2JLSk9SWUt1SkNlbTZ2WWEzVkp5UTcvY3E0Wis2K29SVy83ZlhLQk9aZlBxYi96L1JmK2Q5TndaazVBc0xXWWdMQ09rb2VxdXRscGorZnY4VjVhQjl1WlJHTGNqWXFjOGhYVGRDRmVBREY1ditOVm9iUUFhVnZWcVJvN3l1VFh3N3QwUHFlNlhFR1NIdTVZOEZwZExwNzF3UDR3dFlwNUVHcFlubWJxNzU0TVgvN1pvMnhBV3dFTXQ5YlFpT0tJRGlWUWp5emFNYUp6WnlZYUtxeGU3R0FDS1Blak8rRXdLaUgzUGQvTnhXbHFzTVkxczF5TEV6aHVKdnRzL2k5N1dNSGpYQStZYm8weHhxUHkranBlUmUrUm94RzhlaFVUeFZRUjF3N2t2dGZUYUozT29DTHBJMG9VbmQ0cjdWWklWYjY0NGhKNVlDUlBMVXRseXd6cWZEVmNheHR2Z2xkbURsTHJiRWY5Q016Q2U3aFNOU01GNVREMElYUlJudk01cW1WdmYxZWFuMk1vWEN3am96QmNiR3hEc09CM3hDWHNESTZZQUdiWE1iUGNMakdmYUZ3SnJua0N3OUg0azg1M3dza2thYUphOUJITTRJYkNua0x4Y0R5SVpoY3Vkb3JRL1RiY2tMTlBQdGFMNHdSdVIzUDc0Q0ZrYi95OVE4dG04eHVJb0ZyclpiaXR5ckpvR0cvR3VwVWlNMnMyWnlkYkVLMUVnaFJWTGtENTlJbUxqYURJMFZKK3VWVXdHNndUQmxwZFQxNHJMcCtkM3QxNDlpNlpCanV0Szd0VU05NHloOG5HcVFTZGZUOWpHSlFvRzRhNHNyZURCS1U2UTY2VHZLUzBYY3RNcTIyOUZ2RnduZW5hOUZQVTduVmxaWWxTWlBtTW1yN3NheDNWbWw4dm5jZEFuUDRHenp2cGFaY25XUjQybWJFT3hhdTdwRzVEKytZbGh2RWxpUlM3cm9tZHkrcDFvbUJxK2NyMDFjVEZJejdKRnlIN2wvYUZBZEUvRWpRVEo0aWtBeGlDaElNcVZxV0lUeGlnVWtJeFp3WEk0QXNYODdCRmN3SzMxTEVLeFI1Q1FtNlR2NFdITGpkTHBWeDVkREovbHVxZDNoNGlnMElYY3p0OUYzZVN2VnBZTTVPbG5uc1hQYnJrRjlRME5sU1hScU83TlRjMW9ibW5HcEVrVE1YWFhYVEZpUkJpZi9iMXh4RDhmZ3dTdmNlMzF5Rk1nKys2N0gvNzl6QzlWbG14OS9ESWJVWG90dlk5ZmdPejkzMFM4S1FPdldFWTVWMFMrYmp2RXpub05TYjNLd0x4YnVUME5CWkp2WDRYa2lXTVFqRS9TcE5rYjZDUlJHTHIzRUdQUTdDY1Ryc2R3bzFzYVJXTGxRNEhJOENrQWZsZTg0dkc3cHZMVG5DQTRsWEMwWExjajNBQkFyYkIwaUp5WGRJWUN0VXBCdmczRnFmT1IyUEdrUVUvdVF3OHZ3SVhmdlJndHpTMmJYQytmM1dmZyt5aVZTeWpRb0pvYWgrSElJMmZpYzhjY1U4bng5OEhNbzQ1MUFsSERWU1dYeTFFZysrTGZ2andVQWduUGQ1SFhxZlRBbVVnOWVRVml3N0x1T2dScmMralpZemF5Ujkza1J2TTFDdW1pVytlVGJ6MWM2Y21tMGNoelRyOE80bEE5MXpVaS9iZ2duc3ZkVTc5dUFUT3ExOUFKMVRLdHI4eTYxWndQWFNibTB4Q3M2MkVvSW5mVEwxeStxVWE0SmRDZTJCNEE5ZHNPZG5pT0dPdVdTcVdZa2tqWEpMY3N5V2x0Y3ZsU3lHWlNxS3ZMb0hIWU1Jd1lPWkxpVCtLbS83a1YwLy9wQ0t4ZXM3WlM4dEFkNTk4cnNnV05lUmJ2T0FhcFAxeUJlRDE3aVhJT0pZb2pQNGU5T3NVUlUrRExVeG12MnR0V3h1MUJINldXRnFveWpBT2NDTUs1Q3F3VWwrbmRwSEFGUDFRL1ZaSXhoYytrY052WDR4OWE0Vnd1OWhvVUR2c1NsT1Z5Y1gyWitVQ1hLK1pHeWxpSzIvdFF3am9xMW12K2tHcTVDU2lYYXM2allnOVI3T3RGYnhkam1PNXVkSFYwb0dQdFduUzJ0ZEVOMFcrM2hDWHFNODVqSDBheFpPdnJjZlN4czkxeTQrMHAwbHA2NzV5RDVKcy9oejk2UEFyWlVlak5qb2QvOW1Ka3B4N2o3RFR1NlltTE1QOVEwRytpOFNrSHVSZEJwR0luVG9VT0F5cFM4MFVpNFZmZHUzQ1oxQ3E3alpUQzFZS3pkSzA4ZGh3ME1LMnE5alJjNHdYdlJhS1lVdzFJWk1acUhNVFZjVk5RamRlMHR1S0gxL3dBOTl6OUs5eDcxeTl4LzcxMzRmNzc3OGFWVjF5T0QrLytBYlMzdFlhWmEwakU0OGpXMWVISFA5SE5TWlZpUkpGZzcxQjN4RTFJZnFXRTVDbkxrRGpqTFdUL2RTblN3N1lMZS83S1FNNVEwaStRWU44dkFGMmM2anF5TXZLZUJsN1M5UXhLTVlsVXBGbmxkTnN4YWVqV3FVRkxPWFZCT1pkUkhHcUpWYjRlSjNrdkV2dytsTWJQY05WVXYvQk8wQVVxRmRSVHJDUEdMbjd5VGp2aDNIUE94cWNQUHRqNTYrdVRUcWZ4ekxOL3JIejd4MGRuVlZZeG1DbHJuYlB6alJCajcxQjF2b1dNVTJhbDVCclpkZVlhZmZVcUs4Tko3V2VJNXF0MTFIenRPa2ROSlYyUXJvenVFWkxaSGpMTlhLOFhrZlRMaHhxQzllSnNkY3QwaS9TNFIzVVVpMEY4bk1HOHZ1dUlKQW9Ld1FYMUN1S2xENzBteXdOeVFieUdlQlc4OC92UXUxWHJLUFcwSVRqZ0dTUmI5dENCczVJNjlRTjVlTUZ2Y2ZGbGx6Rkk1NG1vWWZYcTFmZy8xODNIeEVrVEswc0dzbkxWYXJwVGN6QjI3TUFISVV1bEVvYlZzeGU1OFliS2tvM3oxbHZMS2FabnNPalZSVmkxYWhYeUJiYWtQTmNqUnJSZzRuYmJZYmNQZmhDNzdES2xrbnZUV2J1MkZiOTcvSGQ0YmRGckxIY2xDc1V5WTZZNmJMUE5lT3kxNTE3WVk0OFB1M3p2TkVpWHpSUTZGeUwrNWszd1ZqMkljdnZmRUMrc0JFM0RXVjJacDdjVWEwS3lmanpLVGJ1anZQMnh5RTQ4SEVXNnEvNnZEa1ZjcjNMVElIUVZnckp1RE5NRjdtcUhkK1JkU0NUVHZFYXlQKzFwSUs0Wit0bngzRThIMTNON2xhR0JrbUkzY3U4N0ZOa0R6bkJDVXpXMGVhbHJHZnpIYm9EM3d2MElscjZJUkdlWCs1MW8yYjNhelZJNmhuTHplSGpiVGtYNUE0ZWhidHJwL1VJTkh6V3BIRXp1NW45RC9TT1hJMmpVS0JiWDhtUTU0NmV4dTlFckNVUDNTZWhqeDVLVllWOEYzekkwQ2lBY3V0VjIvTkRvbDM2NW5iUHVMVUJPaDNJNGQzMzhvSWlDTnhxcDZYb0JqQWZzVkZ4WldjUG1DdVNOTnhaajNzbW5ZUFNvVVpVbElmbDhBYnZ2TmhYZlB2ZWN5cElOV2ZDYngzRHR0ZGRoRlFQNk9vb3BIbWRMeXZPdVU2bUxVOWIxS1pmZGtHdWNCbkg4M0RtWU5ldW9jT01JbHZ4dEtjNi84Q0s4VEdFTWE2QnJ5WExkZlE2V3FWR2dFbzJxcjY4UDlaa1VmdlkvTitPNEUwK0d6LzFFQ1VUMVVWdGU3RnFJNFBGRGtleDRrOWRiYm9JTWhnMnJlM3BhRjUwNUEwcUl5Uyt4cWN6blVOeDJEaEtIL05TVjAvM29hV2g4OWtmaHZUSmVDNDBFeWxqUkMvVHMrMjNVN2ZjdGZtRzg2czdDUUhyWHZJcjRkM1pDTW55TXo0VUQra01CaGRWYytZTzFTRGEwdUV1YnovWEEvOTcreUQ3L0xGQXYrMk4xcW5hb0czZGxDWkRUSWpkMmF1ZnhObzVFK29iVi9YdXRURlV6aW1EMnBlanJadDdLSStKaEgrUWNvOHFVdUk5YXRLMFdjdXBLNDFSZlZRa21wei9PNms3NVlHN1BrQ1R1VzNlWHloLzVZYVg2cXB1YjJUeDRUT3R6eGRWWG9ybkpQZTA1Z0RVTTVEWGt1ekZPT3VWVVhIVHhwUlJCZ05HalI2R0JnWDA2blhKL0dpTFAzcWRFZFNScGdHcnhKVm9GL3ovK3lVOHdiOTYvVkVvWW5EdCtlUWRtenowZWExdmJNVzdNR0paYmh3eUZvTkc1ZUNxRkJGTW1rOGFJbG1iT3B6R1g1YVdTQ29DalQ0ekVVVmoxTUdMM1RVR3FzQVplUFkweFhzK2tGcDhaOUZPWCtYYW1Ebmg1L1Q1c0h3VkEyNkp0eE9QSi9sWTcrNmxya0hPTmNKb05NSzAza1lXWHFrTXdqSTN3NzNrK3VDcTJFWGZEZitoc0pKdTRjVEtGZ01mRGczSmwrdnYvTTJJVWh5aDByb0IzY2dPeWJ6MkwyRWcyREZrZW0yNTA2OUxubUpuaEJMcTVseTdXVFQvdXFjRXhpVFc5N3M5dmlIQ2VXOFZweFhVOCtQSnhseUxleXR5U3BKb3VHWHhKSTg3TXlsa3QwV2tLbnpYbnJNdFRRYlB1RGlHM2xSSHh2eHVKVXplb2JkNFRlQUx5UmVSYVBvVHM2R2s4a1RYMWZRZG9NeG1ubzhhSWxpejVHMDc3NHVsNC9iVTNrYVJycXRLcmUyaHRhOE8wZ3cvRUIzYmR0YkprSGNvejdmQWoyR3UwT2lPTjYzRWJMaXNVQ3VqcDZzS25QcmsvNXM3NUhLWWZPbzI5U1F5NVhqYXRSUGVQR3B0YnNLYWpFM09QbStlV3JjL2RkOTFOd2M3SCtQSGpXQ2Rab1ZBejU2RzN0dzlyMlJ2bTJYT29UTTJYU2pKSHovVjJnd21rdWtTL2J1bWlzTWNPUmpCY3piZCtLYU1DZStoaXZBNjUzV240MHg1Rjd0Q25rRC9vSHVUM3VCejVDWWVod0YzNCthNVFJRXkwSG5oNzAxdnBvNjlUUTBEN3lmVDBJUC9HWTV5dkxLeWdSa1R1VmVxUHQ5TnprVDJHdlJuN1EwaUxxV052ZE9XSzhpVjc2YWtuZWpweWxzS0NkRk02UjlQdW5ma2Z5Si85QUhvdmZCTDVjKzVGM3dsWEliZlAwZlF3VWlpMXJYYmlyQks2V0JVMG93UG8vZklrTkJRV3c4dXdFbnFZVURjQ3VXZTlwZWRhWXozWnErQkRiKy9wYlQ3TkoraFNNYStlcTlLODZoVG80cWdGVjZ5aUlkNzFqM2hybzMzVGR5emtXNUU0Z3U1Sm5DMHpGMHV6RzJOakxsYUpyc2R3ZDNkZHZaTG5qR3B0YXh0S3hRTGRsM3A2R1JRSGwwdUFSUzVyYlczRllkT240OSsvT3ZnakxjZWRjQkk2T2p2ZGZSVGh4RUVYYXNMWTBmamhENjUyeTJyNTVqZlB4WjlmWEloc0p1UHk2a3l1WGJNR1gvbnlHUlRSSVM2UDZLRnhIVEw5Y0l6YlpzTjdQWElUUC8rNVkvR0Z6ODhPcnhQcG8waXUvdEcxZU9qaGh5blVEWjhBcUhXeFhHalI5aWQ0ajN3WUNUM05YVzBjOVR0a1BSMG96UW4wVXdEOTU3ZXl0bjlhYkZ1RVZQT08vZlhTdFNoZTJZQjBzc2oybURiQzgxZjJ5OVJhQWNYbWZaQTkvbmZNeEsxZGdYcklpZlY1L0JyVTNmdEZka0VadW01NkNrUENvL3U4MDlGSXpidlZ4UTVGOWxyQlNYVklOTE5NN1p3TnZQWldZc1BmOTUvUG9YNjdEL0o3ZUE2Rnl0VzhVaTlqbExwdGR1bGZOOEJXTkF3cTlhUXVYNFR1dGR5UXZpT2QwdENqWUFvNDczb0M5OVplcUYyM3Nsb2FDZlVXTGxEbEs1dUdTUVk3aEVtVWM2M3dQbnEzRTRlSUVrY1VHckx0N081R1IzY1BPanU3bmU4dXQ2V0pRb3JyQlMySnBsakVxcFVyc2NPa1NiaHUvalViRmNjZm5uNEdieTVaMGk4T29UdnhQbDJxd2NRaHpqLy9QSFF4dUJUVjB6MmMrNzcxOWw5VXZvVmNmZlhWYUI0NXF2YVNPTll3VUQvN0cxL0g4Y2ZON1JlSDBERDBXYXpuN05uSDhyam9Ia1dnYzFlbWplZ2hDTmRRMWpSNGlYUUMvaE96OUFKcVAxcXJwTzJVMGpYaUVNcnFUN3NlNktielg3TWlRQmF4eFk4alJ6ZE5UNUs3eHpEY2NzNCs5ZzMzS3ZVNkdLUFJvMHZNdm1IZ0NCZ051UklVa0xCU0FUdTkrUFhIOGRxeFhIN1hXaVZ0cC9wcHZyNUdIR0tndmRBVm9sZUh0SUxFN3oyUHdsc3N1RWozU0gvUWhzMkhWNklrM0M4WXNvaWd4UCthc2dqM25mNGQ5K3JzVXVOaW5EcnRjTysxT3h3S3REL3QyKzlwUTNHWGM1RGM1bkFLWHhWN2QrZytqbG81M1FpVVN5UjNSUHRTS3JDbDNXMlhLWGowa1lkdzZhVVhZNmYzdjk5dE14aDMzdm1yQWZHS2FxYnRqenJ5cys2NzNLemFWTlRmUmlFalI0MTBzVWtWaWZiTk54a2sxL0RZLzMwYTZScmhpUktGTjJuaWRqandVL3RYbG16SThYUG11R09LZXBGTXhxSVJ3S0xPclFMdzJuT2FiRURkc2pzUi82bUgzSDBmUXVHUDMwSit6ZTlkcjZPY3F2WDZKZXM5b3RUT3g2SjMrQVJtb2oxVjlpMUhOWjFoL2tjdllnNTZMWlhHTHIvMHo4aTJkdExrOUJZYzBmblBsMURZKy9PTUhZYTV6c2FSektJd2RoUkZvcjJ2STBsUHAyN0ZjMGdkMTRUQ21lUFIrOU5UMGZlWGg1M2JxTFIrL2NSQWdUaENjMDVQbUFydk80K2d1SXltVmZEZE1Kd3VqdnhRZHh4cVBad1Z1aStWLy94dzFzbGlXWG10VVRlczQzT0dwRjVuSzZkQVNmdnFiVU51eDlPUTJlVjhmbWVyeCtYdkJobU9UME9WRzlUWjFZMjJ0dlorWTlYK1V1azBubnYrZWN6NHpFd3NmUGxsdDN4anZQTEtLNGhyNUtlR1REYUxYOXg1Snc0KzVEQk0vOHhuQjZSRFo4ekVRWWNlemgweEVxd1pZUks2SHRYN0wzTDdPanM3QnVSUjNWVG5BeUxFVVdYY21MRzh6aEZOQ2ZldjFyYTA5eDFBUndmejVXa0dNbjkzMGRrVTEvUC9jS1E2WDBiaXhmT1J2UE5qS1A4NGp2SmpzMUhNcjNibE9oSDA3eUI4bFM1KzZDMG85dW9Kck9vS1Rpbnk0T2tybllIcVpyUE90UGZRMXhCVDZPTytLUmRqRDNhcTZWay9jTi9kKzBORVo5Yjc2bU1vNk41dG5zZmpMcjJ6UUJjR3lQWEtkaTVINXNINVNGOXdNRENUYnZoRkI2Q3crTS9LNk15NnlpQUNDZXN2ZFNkM1BRRCt4VStqc0pKR1RxWEdTZ3g0TlNUR0prUS9pcUFLdW1DZUplckFxeTJBcjJHK2lqMDZjWEJlYTlaM2diWnNDc3ZYRC9UNkVzZk8vNEhNN2o5MGRYUkRoWlg2YkM1cjZPL2ZjTjE4L09xTzIvSEEzYi9FbGQrL3pBVzFhdDFWdE9LUFZDWkxRNi9EU1NlZGdudnV2aWZjY0JBS2hienJmYXBVdDAreTJaVExwdDVsc0NRa3ltcHk1NXpMQ3BVYm1NdVdMV1V2TUZCNEtydk05ZVBIREJ4K0hnejFqczVuM3hoY3IzMW14ODlFY1RvOWpQUjRvTHVEaXFGcjVvZDFVSTFpWG9aQmRDTmlEUlJMS292NEc3Y2ljZDFvOVA3aEhHZnN6aWdJbXpRM2pXKzNMN3hSZTlDbTlKdWVRbmtTU0pmeTZGbDRselBTRXRmRlhueVExcSsvNmVmT0dHT1ZFa29mTzRibnJkRUpyWG9qc2N6ZUxURm1aOFRtdDZKMzI3M2dyMlhkS0VDMklOdzFiVmpIb2NlZjlLczNqUWtrZUdyclgzZ1U4Wk4yUitkNS8xVDE2TFNMU29tRG9wRW5ka3ZiZndTRmExY2czNjBJbjRYVHlaUzc1WnhOVG9OeUl1eFZLSW80VTFBSm5OU3p4SmpuWFRiY200NE9uT0wxZWNGS2UvNGNtYWtYdW9QYjJGRGhPMFdIMGNsV3M4cVV5VHZocmp0dW8vRVZYQUJmUFV5NVlRcVFMLzcrVlhoa3dhT1ZwUU54aGxGamlHNlc5ZGZmTkZFY1V0N0VWR0x5bldzU3RweHVKS3pTU0EwZ1FiZG52YWNBQnFPN3I1YysvOXRjTUYxYzdpUGRPQldKYWErZ2VOZ2lOa1pmUXo0OUdtWGRpTzJqQ3dRR0JaVXo0djdpVjd3QjhlRU55RDUxSWZJTGY5Sy9yb3F1VUhubUxTaDM4aHJxMXppY2dKaXl0S25mbnV2eWxCWmNoclQrdWwrbGw5QjZqU2duai81UjVmczY5QWN2TkpxVnFHOUczVGZvNWwyM0dyMUhYb0Q4dU1rb3NsY0pPbWk0dmJxUlhZVTE0QWFKY1I0YW43a0hmVmZNZFQrL3E0aDh3Q2pXaHVqcFNnVXhYdWluZlg4NlVzL2RqL2hZTGxHZ3BCOUNrS3VRWWp1ZDVoN2lMRkREYis2SDNMU2hsRXBCYVRSTEVvL1kwK2FpMDZYekdiQS9MZGFOUTN6L0Z4SExOT25BWEV2eFRubW5Od3J6Tkx6cGg4OUF5OGlScmdYV0lXcXZtcTVZdGd6WGM1dkpPdzJNUitiOXk0bm82T3JocVF0YmUrWE4wMDJhTWYwUW5IREM0RU8zbThvblBuVVFKb3hueTk1UDRPS1lLVk4yeGtYbmZhZXliRU4wRTNMYVlUTXdac3pBSndFRzNDalV5ZFpvcFBNUVpENDZ4N0tPRU9meHIxaUE0T1Zya0hqekYrNmVnbnNBbHZsajZ2WFk0dWRUWTVDZDg0YkwzdzhiR0tvYlBiY2ZnTHJGdjJVand4aEQ1N0xvb2RUUkEvOUNlZ1VYTmpGMDV4NGtFSGRYTzRldUtjY2dQZWNXMmpaN0J1ZFloWVRYUUw1RDJLZUVOaHhXWCt0S2Ivd1I1VWQvaE9RRERPelpnN2dZVzZHQzdrblFTOHF0WnY0SFEzZFMyMGNnSHpHODZIcFBKSFhtZlNpZTlSdmsxSkN1MW0xSHJtR0J1aFBwTVU3eE5PeW5Ma003a3d1bVZyM3lmVU9YYUVzazdydlVoVkt1RmFWZC9oT1k5aFlTNlNaM1VKc2pqczFCajhKZmZlWDNzSHo1OHNxU0VPMTlMQTMxbE5PK2lENjJ6TFhzczg4KzdrMjlLc3FyWjdadSsvbkFFYW5OWWNMNENlNnUrenJvdWlYVGVQTEpwMWpIdHlyTE51U2NzODkyN2wwVXZwZERvWlJEbVNkWVBVT2M0bkRudXBMVWFpZkhIc0JHNnVmby9maVBxYnAxUGE2YVlmZkhqSExWeC85cm9EaEVhc2F2VU9oaHk2NXJ5MytLS1Jodm8vam9lZkQwR2lHWEM1L1RQbjdOSEgydDI2ZDd6cW1HVXFrUE9kYW9hdHhoNmFHeGF6N3h2ZzhqUGU5NjVLOTZGZVZXOXNBYVNhckI3YWFzWjR2ZlZpQWhrb2dVcW1LeXUrNlA5UHdTK21aY2d0NDFMSHcxQTdVYy9YQUt4RDFLVHRVN1YwZnpPcE1TaHhTdloyM0M0M3ZYS0VnTGlwMG85clNqT0dFV2dzL21rWnI4ZGZmajdrUG0wdFd3eTVRcCtOZlRUa1hyNmxWMDZYUnBLMUNrSTBlTXhOR3pqcTBzQ0RuaCtPUFEzVTUzcFBaOE1PK3c0VTJZTWZOSVBQdk1NNVdGZy9QNjY2L2ovQXN1d2hOUFBWVlpzbzZqWnM1Z29CNE9CMWRSV3pGNjlHak1uWGNTN3JudkFTNVp0K1BGaXhmanRETytqSmNXdmJIQjZOZjYrSXd0dkJWUG9QUkxCclV2WFlCQ3gwdXUxM0NYZXIxcGZDbkZIbmZtNjVBTnhmdzgvS1lOYjVwVzBVaFVjYy9qR2UvV1BQVEp1Qzc3Ky9NNENZZlNIWXpoc05jc0pGTjZsa3RsRDhUUDlhRTR5MFB2N2Fjajk4WXp6dnRSdmFvOWlQSzdaYis5RVI0RldIM2YzY0VNWmYwbFp0WmQ3ZjNidUZnYlJ6dlRUZ3VQWFl2WUExOUhxdEFPcjRVN3Ewc2p5TElLdXEydjg1MWlqS0puc2VScUtZRGNuQnVHeXE3TmdsNktMMGNOY2gvYm53eHY2bVZJeE1LTEVMN0JQTEFsMkJ3Mjkxa3NjYzQ1MzhTZm4zOEIyWVpocnNydVl2RDBhaFNwdWJrSk45NXduY3NuSG4vaUNYejluSE14ZnR4NFh2ZndmQ2kvN29kMGRuVzVrYWhKMjIySHNYUjVrblJidTNwNnNITFZHaXg3YXprRDlESjdwUnl1dVBSaWZPUWo0WU9HdFJ4NTFESHUrdFRlWnhHNjFMcVJLTGRRajVrb2hsRnZvK2UwdEU0dTMvcWpaT3ZmS01US0p4RC8zU2ZjejdrR09ibytyTHFmM3BZN0c4dGo1citlWlVEWE1zU1N2QzVlSFkrSlI4VmppaFVERk9rdWxUNzNKMlJIN2U3S1hoOWRRYVhnT3g1U3d5aEdmV0ZQSlRjdHBzRWh0ZlFNd0F2eVhyN2JSVytoWWRBV3ZwRHZSdXhFWG9OaE5MYytDcGJsbEp2cmtkQndNc3NyZDdVanRteUZpdzRVNTNoRmxoSXdubVA1d2QvSzZEM3JPZ3liZHFLcit5YjFJSU9oRFdXYW1mMU9SdXFpTmhUT2ZCNzV5U2VpcDVjblpCVTd1TzRlbmwzV0xrLy9zTWdhVm9ZR3BJME5YYVgxa3dJb1hvNkEyNWZaVGVkYkdXUXl4bWc1Q0lXUDNnWHZpQnhTdTEySkpNV2hVc09TMzcwNDNpMFhYSEErR21oc01qd25EcVp3ZEN1REZhdlg0Tnh2bmVmeWlVL1F6YnI0d3ZPeFl0VXE5TkVJcSsyVWd2eW00Y09kMGE2aUtQLzBsNy9nRDgvK0NRdGZmaFVkSFIwWTNqak1pVmZQVlBXLzRMWWV0LzdzWmhwK0tJYmE5azlDVlAxYUtOYTZiTmE5QWFuUnNhN3VidmRFYjExOXZSc2RpeUtNN1hoY3lVYUtaQVRpZEdtVGpIeVRQUzhnMGZsWHhQMDJ4QlVEeHVwNS9NenIwN3Vnd2VaWmw5SVJkeU5EY1d6c1hrdWNzcGFreS90OUMrV0NlcEdxZVlaWDJLRkJrVDAvUjUrVTR0aElPZjBqY1JuYXgvQTRrb3d6TW9WZUpGYThndmhiQzVIdW9qZ2FLZVlNNHc4M2lFTmIwOS9nWDFaR3o1Y3VjdUlRVHZBOGdZUHZaVlBSUmFJcVZZZ3pDS1o4Njk4UXZIWTd2R1cvUnF6dEtTUks3YXdzVi9EbzlYT2dYa3lqTGVHRkNGdFBicVZoUzRtRGRkVWlQOG1MTlh3UGVDUDNSWG5zWWNpMGZMem1OREVmUDNVQVc1b0hIbndJNTUxM0FacEd0TENPWWZtcWo0ejExcHYrR3p2c3NMMWJ0akgwcU1TblAzMG9VbW4yMHpValFqS1d0dGExT1BhWVdUampTNmRYbHZJNGVmb3Z2ZXo3ZU9TUkJlNE9kWkt4aUhwYXZWNmdyY0l6cXRQRG9KUG5xUHJlZXowTlhMSFB4SWtiNzlFdXYrSXEzSHZ2ZlVnenIxNFJEbnVIc0V5VkZkNkl6R1BlM05tWVBYc09Eam4wY0xkZnhRcFY4blIzZEEvbG5HOThYZDR5Y3UyL1IrelJqemxENXVWaVNTeVQxMUpPdUVZeTllZnZYQnl2eTh0cldjendQTzQ0RDdHOUxxRUx6SDNMM053MUg0endxbW9FcVhUNU1OU1ZhYlZzQkhXT1lteGtTN1NiOHFvK3hDN3VSQ0xKSGlMTXZnRzlGRmZwOUN3eWJKZjExRlAvVS9NeVZkVloyOUhINHFWQ3dKMzV0TTNpUHJPUm1uc1Zrc1BDaHgycnhiNTdnYXlISGtkWjk4NjVxMU00N1Z6TURtRVI0bjFMZVBRVVRMSGRuWEM1Umw1OEpJWERMalgxUHZpTkUraW03VVFSaGU2QktscHRSNGFDRlN0WDRxV1hYbUlMVFRldXNrejA5ZVh4OFkvdDZaNjJmVHVXTGwyR1JhKy93UzU4WUsrbVk5R2JoOU9tVGVzZndhcmx1ZWYrakw4OC96eVdyMXlGOXZaMjUvNW9td1NOdTdHeEVTTmFXckQ5OXUvRGgzYjdBSm81dnlsSUNMK20rRjU4OFNXc1dic0dSYnBYS20vVXlKSFliZW91T1BEQUF5czVnY2QrOTdoN01GSzlYaFhWUVkvd1Q5bDVNaSt1WEtyd21FcjUxZkE2WGdTNi84cnIya29EN2xadStERzZWWmtSaU5WL0FNR0lEN25lcEw4ZjBBbGRWL1JHa2MzMFhqOFZEYTBMMmEyayt3VVNVTkI5azJlajd0aWJ3b3did1hsbVRJVWlYZklsejlLZGVoRisxeXJXazk2SVl1RUViYXQrRkx6Uk82RDh2cjJRYWg3djZqaFkxYmE0UUF6ajNkTDN3bTNJM0RFTGdYNUxXYjJkRTBnSnBkWWl5aGYxSUoxU0ZEMDBER1hqYkJnT3VkZnFKYXFwMmtKclh1NVYvSjVaOEJyU2pDWFVGeEMxNGJraWN2dDlDUW05TXhJdUhSSk1JTWFRRXpBdzlvTThlbi96VlhyYXI5TGQ3b1YrRXJiMDBpMG9mVDlGRjFCQmcxeTVpbm42T2ZRazY1Q2RjWlcraEs3YUVHRXVsakhreUdVcU1jN3hML0xjbzFVYXpsVThHcWNlM0tQNGZ1WGRHbzByKzNuazlBakt1UjFJcFlmK0YvbXRCekhlQTBJejF5dXV1cGNScjYrblVES0laZXBRcmp4c3FZY0tTM25kRVU4aFRuRWtuRGpraEEwdEpoQmp5QWtqRU5KTGtXajBxOUREYVE1bGpUcnBFWnllSElxYytudi9CeEpmNjBPYzR0Qjc3ZStGdVpxTFpRdzVnVjlDS1paQThPWjlLSzMrS3hKOVN4SEx0YVBzMWNHdjJ4YXhpWHNqdHMwbncvYzZ3azNlTTB3Z3hwQVRXcHp1eUc5by9scWw1TzZHdjlmcUlDWVF3NGpBWWhERGlNQUVZaGdSbUVBTUl3SVRpR0ZFWUFJeGpBaE1JSVlSZ1FuRU1DSXdnUmhHQkNZUXc0akFCR0lZRVpoQURDTUNFNGhoUkdBQ01Zd0lUQ0NHRVlFSnhEQWlNSUVZUmdRbUVNT0l3QVJpR0JHWVFBd2pBaE9JWVVSZ0FqR01DRXdnaGhHQkNjUXdJakNCR0VZRUpoRERpTUFFWWhnUm1FQU1Jd0lUaUdGRVlBSXhqQWhNSUlZUmdRbkVNQ0l3Z1JoR0JDWVF3NGpBQkdJWUVaaEFEQ01DRTRoaFJHQUNNWXdJVENDR0VZRUp4REFpTUlFWVJnUW1FTU9Jd0FSaUdCR1lRQXdqQWhPSVlVUmdBakdNQ0V3Z2hoR0JDY1F3SWpDQkdFWUVKaEREaU1BRVloZ1JtRUFNSXdJVGlHRkVZQUl4akFoTUlJWVJnUW5FTUNJd2dSaEdCQ1lRdzRqQUJHSVlFWmhBRENNQ0U0aGhSR0FDTVl3SVRDQ0dFWUVKeERBaU1JRVlSZ1FtRU1PSXdBUmlHQkdZUUF3akFoT0lZVVJnQWpHTUNFd2doaEdCQ2NRd0lqQ0JHTVpHQWY0WDdwQllZdkhldWJJQUFBQUFTVVZPUks1Q1lJST0ifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiTk9UX0ZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMTgtMTAtMTEifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDE4LTEwLTExIn0seyJhYWd1aWQiOiI5OThmMzU4Yi0yZGQyLTRjYmUtYTQzYS1lODEwNzQzOGRmYjMiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6Ijk5OGYzNThiLTJkZDItNGNiZS1hNDNhLWU4MTA3NDM4ZGZiMyIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJPbmx5S2V5IFNlY3AyNTZSMSBGSURPMiBDVEFQMiBBdXRoZW50aWNhdG9yIn0sImRlc2NyaXB0aW9uIjoiT25seUtleSBTZWNwMjU2UjEgRklETzIgQ1RBUDIgQXV0aGVudGljYXRvciIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQzJUQ0NBb0NnQXdJQkFnSUJBVEFLQmdncWhrak9QUVFEQWpCN01Rc3dDUVlEVlFRR0V3SlZVekVYTUJVR0ExVUVDQXdPVG05eWRHZ2dRMkZ5YjJ4cGJtRXhGREFTQmdOVkJBb01DME55ZVhCMGIxUnlkWE4wTVJBd0RnWURWUVFMREFkU2IyOTBJRU5CTVE4d0RRWURWUVFEREFaamNuQXVkRzh4R2pBWUJna3Foa2lHOXcwQkNRRVdDMmx1Wm05QVkzSndMblJ2TUNBWERUSXlNREl5TVRJd01URXpNVm9ZRHpJd056SXdNakE1TWpBeE1UTXhXakNCalRFTE1Ba0dBMVVFQmhNQ1ZWTXhGekFWQmdOVkJBZ01EazV2Y25Sb0lFTmhjbTlzYVc1aE1SUXdFZ1lEVlFRS0RBdERjbmx3ZEc5VWNuVnpkREVpTUNBR0ExVUVDd3daUVhWMGFHVnVkR2xqWVhSdmNpQkJkSFJsYzNSaGRHbHZiakVQTUEwR0ExVUVBd3dHWTNKd0xuUnZNUm93R0FZSktvWklodmNOQVFrQkZndHBibVp2UUdOeWNDNTBiekJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCUERIQmdhN2Q2dU5nYVVqRTE1UWh4dmd5ZVR0VWgzdVRHSkNYaDFNLzVwNS9OL2MzRUZqb2cwR29PTjBmTVpwSVpqNk9ENzBXQzFJWE9wVlE0ZmJmdGFqZ2Q4d2dkd3dIUVlEVlIwT0JCWUVGTUZ0MndQQTNwZFhRUGFXMlVnWHZlRWx5N1NrTUlHaUJnTlZIU01FZ1pvd2daZWhmNlI5TUhzeEN6QUpCZ05WQkFZVEFsVlRNUmN3RlFZRFZRUUlEQTVPYjNKMGFDQkRZWEp2YkdsdVlURVVNQklHQTFVRUNnd0xRM0o1Y0hSdlZISjFjM1F4RURBT0JnTlZCQXNNQjFKdmIzUWdRMEV4RHpBTkJnTlZCQU1NQm1OeWNDNTBiekVhTUJnR0NTcUdTSWIzRFFFSkFSWUxhVzVtYjBCamNuQXVkRytDRkZONk83eG5JS2I3NDgzcHFpcWd1QVQ2VnBRTU1Ba0dBMVVkRXdRQ01BQXdDd1lEVlIwUEJBUURBZ1R3TUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUZ3OG5tTEU2eWJNRWFmT2NoZ21YcGNINE5Jc2R3V2xEdWZyZWRMK0IrQ2lBaUJIV3N5Nzd3MDllQy9zRWpvVmNHa213UmNaa1R0bXJZb056Z3VpallNVnRRPT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBREFBQUFBd0NBSUFBQURZWUc3UUFBQUtMMmxEUTFCSlEwTWdjSEp2Wm1sc1pRQUFTTWVkbG5kVVZOY1doOCs5ZDNxaHpURFNHWHFUTGpDQTlDNGdIUVJSR0dZR0dNb0F3d3hOYklpb1FFUVJFUUZGa0tDQUFhT2hTS3lJWWlFb3FHQVBTQkJRWWpDS3FLaGtSdFpLZkhsNTcrWGw5OGU5MzlwbjczUDMyWHVmdFM0QUpFOGZMaThGbGdJZ21TZmdCM280MDFlRlI5Q3gvUUFHZUlBQnBnQXdXZW1wdmtIdXdVQWtMemNYZXJySUNmeUwzZ3dCU1B5K1planBUNmVELzAvU3JGUytBQURJWDhUbWJFNDZTOFQ1SWs3S0ZLU0s3VE1pcHNZa2lobEdpWmt2U2xERWNtS09XK1NsbjMwVzJWSE03R1FlVzhUaW5GUFp5V3d4OTRoNGU0YVFJMkxFUjhRRkdWeE9wb2h2aTFnelNaak1GZkZiY1d3eWg1a09BSW9rdGdzNHJIZ1JtNGlZeEE4T2RCSHhjZ0J3cExndk9PWUxGbkN5Qk9KRHVhU2tadk81Y2ZFQ3VpNUxqMjVxYmMyZ2UzSXlremdDZ2FFL2s1WEk1TFBwTGluSnFVeGVOZ0NMWi80c0dYRnQ2YUlpVzVwYVcxb2FtaG1aZmxHby83cjROeVh1N1NLOUN2amNNNGpXOTRmdHIveFM2Z0JneklwcXMrc1BXOHgrQURxMkFpQjMvdytiNWlFQUpFVjlhNy94eFhsbzRubUpGd2hTYll5Tk16TXpqYmdjbHBHNG9ML3JmenI4RFgzeFBTUHhkcitYaCs3S2lXVUtrd1IwY2QxWUtVa3BRajQ5UFpYSjR0QU4venpFL3pqd3IvTllHc2lKNWZBNVBGRkVxR2pLdUx3NFVidDViSzZBbThLamMzbi9xWW4vTU94UFdweHJrU2oxbndBMXlnaEkzYUFDNU9jK2dLSVFBUko1VU56MTMvdm1ndzhGNHBzWHBqcXhPUGVmQmYzN3JuQ0orSkhPamZzYzV4SVlUR2NKK1JtTGErSnJDZENBQUNRQkZjZ0RGYUFCZElFaE1BTld3Qlk0QWpld0F2aUJZQkFPMWdJV2lBZkpnQTh5UVM3WURBcEFFZGdGOW9KS1VBUHFRU05vQVNkQUJ6Z05Mb0RMNERxNENlNkFCMkFFaklQbllBYThBZk1RQkdFaE1rU0I1Q0ZWU0FzeWdNd2dCbVFQdVVFK1VDQVVEa1ZEY1JBUEVrSzUwQmFvQ0NxRktxRmFxQkg2RmpvRlhZQ3VRZ1BRUFdnVW1vSitoZDdEQ0V5Q3FiQXlyQTBid3d6WUNmYUdnK0UxY0J5Y0J1ZkErZkJPdUFLdWc0L0I3ZkFGK0RwOEJ4NkJuOE96Q0VDSUNBMVJRd3dSQnVLQytDRVJTQ3pDUnpZZ2hVZzVVb2UwSUYxSUwzSUxHVUdta1hjb0RJcUNvcU1NVWJZb1QxUUlpb1ZLUTIxQUZhTXFVVWRSN2FnZTFDM1VLR29HOVFsTlJpdWhEZEEyYUMvMEtuUWNPaE5kZ0M1SE42RGIwSmZRZDlEajZEY1lESWFHMGNGWVlUd3g0WmdFekRwTU1lWUFwaFZ6SGpPQUdjUE1ZckZZZWF3QjFnN3JoMlZpQmRnQzdIN3NNZXc1N0NCMkhQc1dSOFNwNHN4dzdyZ0lIQStYaHl2SE5lSE80Z1p4RTdoNXZCUmVDMitEOThPejhkbjRFbnc5dmd0L0F6K09ueWRJRTNRSWRvUmdRZ0poTTZHQzBFSzRSSGhJZUVVa0V0V0oxc1FBSXBlNGlWaEJQRTY4UWh3bHZpUEprUFJKTHFSSWtwQzBrM1NFZEo1MGovU0tUQ1pya3gzSkVXUUJlU2U1a1h5Ui9KajhWb0lpWVNUaEpjR1cyQ2hSSmRFdU1TanhRaEl2cVNYcEpMbFdNa2V5WFBLazVBM0phU204bExhVWl4UlRhb05VbGRRcHFXR3BXV21LdEttMG4zU3lkTEYway9SVjZVa1pySXkyakpzTVd5WmY1ckRNUlpreENrTFJvTGhRV0pRdGxIcktKY280RlVQVm9YcFJFNmhGMUcrby9kUVpXUm5aWmJLaHNsbXlWYkpuWkVkb0NFMmI1a1ZMb3BYUVR0Q0dhTytYS0M5eFdzSlpzbU5KeTVMQkpYTnlpbktPY2h5NVFybFd1VHR5NytYcDhtN3lpZks3NVR2a0h5bWdGUFFWQWhReUZRNHFYRktZVnFRcTJpcXlGQXNWVHlqZVY0S1Y5SlVDbGRZcEhWYnFVNXBWVmxIMlVFNVYzcTk4VVhsYWhhYmlxSktnVXFaeVZtVktsYUpxcjhwVkxWTTlwL3FNTGt0M29pZlJLK2c5OUJrMUpUVlBOYUZhclZxLzJyeTZqbnFJZXA1NnEvb2pEWUlHUXlOV28weWpXMk5HVTFYVFZ6TlhzMW56dmhaZWk2RVZyN1ZQcTFkclRsdEhPMHg3bTNhSDlxU09uSTZYVG81T3M4NURYYkt1ZzI2YWJwM3ViVDJNSGtNdlVlK0EzazE5V045Q1AxNi9TditHQVd4Z2FjQTFPR0F3c0JTOTFIb3BiMm5kMG1GRGtxR1RZWVpocytHb0VjM0l4eWpQcU1Qb2hiR21jWVR4YnVOZTQwOG1GaVpKSnZVbUQweGxURmVZNXBsMm1mNXFwbS9HTXFzeXUyMU9ObmMzMzJqZWFmNXltY0V5enJLRHkrNWFVQ3g4TGJaWmRGdDh0TFN5NUZ1MldFNVphVnBGVzFWYkRUT29ESDlHTWVPS05kcmEyWHFqOVducmR6YVdOZ0tiRXphLzJCcmFKdG8yMlU0dTExbk9XVjYvZk14TzNZNXBWMnMzWWsrM2o3WS9aRC9pb09iQWRLaHplT0tvNGNoMmJIQ2NjTkp6U25BNjV2VEMyY1NaNzl6bVBPZGk0N0xlNWJ3cjR1cmhXdWphN3liakZ1Slc2ZmJZWGQwOXpyM1pmY2JEd21PZHgzbFB0S2UzNTI3UFlTOWxMNVpYbzlmTUNxc1Y2MWYwZUpPOGc3d3J2Wi80NlB2d2ZicDhZZDhWdm50OEg2N1VXc2xiMmVFSC9Mejg5dmc5OHRmeFQvUC9QZ0FUNEI5UUZmQTAwRFF3TjdBM2lCSVVGZFFVOUNiWU9iZ2srRUdJYm9nd3BEdFVNalF5dERGMExzdzFyRFJzWkpYeHF2V3Jyb2NyaEhQRE95T3dFYUVSRFJHenE5MVc3MTA5SG1rUldSQTV0RVpuVGRhYXEyc1YxaWF0UFJNbEdjV01PaG1Oamc2TGJvcit3UFJqMWpGblk3eGlxbU5tV0M2c2Zhem5iRWQyR1h1S1k4Y3A1VXpFMnNXV3hrN0cyY1h0aVp1S2Q0Z3ZqNS9tdW5BcnVTOFRQQk5xRXVZUy9SS1BKQzRraFNXMUp1T1NvNU5QOFdSNGlieWVGSldVckpTQlZJUFVndFNSTkp1MHZXa3pmRzkrUXpxVXZpYTlVMEFWL1V6MUNYV0ZXNFdqR2ZZWlZSbHZNME16VDJaSlovR3krckwxczNka1QrUzQ1M3k5RHJXT3RhNDdWeTEzYys3b2VxZjF0UnVnRFRFYnVqZHFiTXpmT0w3Slk5UFJ6WVROaVp0L3lEUEpLODE3dlNWc1MxZStjdjZtL0xHdEhsdWJDeVFLK0FYRDIyeTMxV3hIYmVkdTc5OWh2bVAvamsrRjdNSnJSU1pGNVVVZmlsbkYxNzR5L2FyaXE0V2RzVHY3U3l4TER1N0M3T0x0R3RydHNQdG9xWFJwVHVuWUh0ODk3V1gwc3NLeTEzdWo5bDR0WDFaZXM0K3dUN2h2cE1Lbm9uTy81djVkK3o5VXhsZmVxWEt1YXExV3F0NVJQWGVBZldEd29PUEJsaHJsbXFLYTk0ZTRoKzdXZXRTMjEyblhsUi9HSE00NC9MUSt0TDczYThiWGpRMEtEVVVOSDQvd2pvd2NEVHphMDJqVjJOaWsxRlRTRERjTG02ZU9SUjY3K1kzck41MHRoaTIxcmJUV291UGd1UEQ0czIranZ4MDY0WDJpK3lUalpNdDNXdDlWdDFIYUN0dWg5dXoybVk3NGpwSE84TTZCVXl0T2RYZlpkclY5Yi9UOWtkTnFwNnZPeUo0cE9VczRtMzkyNFZ6T3VkbnpxZWVuTDhSZEdPdU82bjV3Y2RYRjJ6MEJQZjJYdkM5ZHVleCsrV0t2VSsrNUszWlhUbCsxdVhycUd1TmF4M1hMNisxOUZuMXRQMWo4ME5adjJkOSt3K3BHNTAzcm0xMER5d2ZPRGpvTVhyamxldXZ5YmEvYjErK3N2RE13RkRKMGR6aHllT1F1Kys3a3ZhUjdMKzluM0o5L3NPa2grbUhoSTZsSDVZK1ZIdGY5cVBkajY0amx5SmxSMTlHK0owRlBIb3l4eHA3L2xQN1RoL0g4cCtTbjVST3FFNDJUWnBPbnA5eW5iajViL1d6OGVlcnorZW1DbjZWL3JuNmgrK0s3WHh4LzZadFpOVFAra3Y5eTRkZmlWL0t2anJ4ZTlycDcxbi8yOFp2a04vTnpoVy9sM3g1OXgzalgrejdzL2NSODVnZnNoNHFQZWgrN1BubC9lcmlRdkxEd0cvZUU4L3ZNTzd4c0FBQUFDWEJJV1hNQUFCWWxBQUFXSlFGSlVpVHdBQUFHaUVsRVFWUll3KzJZYTJ3VVZSU0F6engydTd0dGQwc0R0UzJZU3JGMGE2VWFNV0lUbzJBdEFXSUJLU3BGTkNTS1JtbXd2akNrVVJPTXFCVTFQZ0NyQkRRK0NJS2dnaStNNzlyYUFrRm9HNUJnb1ErZ25iYk1kcmU3c3pQM2NmeHhsM0ZiQ2xUakQzL3MrVFZuOXN5OTM1em4zWkVRRWY1UElzUC9UQkpBQ2FBRVVBSW9BWlFBK29laXhpdUluREdPaUtxcVNwSjA0U2NaWTV4eldaWmxXWW0zcFpRQ2dLSW9GMTBCQUJDUk1SWnZMTm5UWHF3dXJvUEI0UEhqeDNWZEh4Z1lNRTNUc2l6R0dBQWtKU1c1M1c2Zno1ZVJrZUgzKzRVOVkweVdaYkVpSW82R3c2YmhuQ3VLQW9oZ1A0V0k0Z2RFM1BMaCsxY1hUUm05ZTFOU3ZJc1czM1h3VURNaWNvNlVFa1FzWHpDL3RIUm1lK2RKU2doZVRBNzlmbURjMkxHN3Z2eWFVU29ZSkVSa2pDcUtXdm5nL2V2ZWVrZnNsSjZlN3ZGNHZGNnYyKzEydVZ5S290aGVwSlNHUWlGZDF3TUJQUkl4eFAybWZmdXZ1Zm9xenBqRDZWUVZpWEZvT1h3a0wzZWkwK2s4OXpVNFo3S3NXRkhqcWFlZnJubHBMUUJNekx1aTdXZ3JwVlJWMVppSGZ2M3BPMkc5Y2xWMWEydHJkMDlQYjIrdnJ1dkJZSEJ3Y0RCOFZnWUhCME9oVUNBUTBEU3RvNk5qejlkZnBhZDVBZUQ2RzI1R3hFZ2tnb2dlbHhNQVdvNzhZWnJtdVM2eExBc1JHeHZxYzNJdUZUdmVmTXZNRSszdHdqMklDT0pxNmQwVkFIQm54ZDJJYUpwUnhwaElOMG9wcGRRT2E3eEtDREV0YTE5VFl5ekhFWTFJK0FKQVlpUFROQjkvN0ZHUjlUNnY3K1ZYWGhkTDJXWXhEeFVXNUN1cTQvVjFHNFRhMXRiVzBORFExZFVsMU1OSGp0VFYxV2xhYnl6d0J3ODJOVFYxOS9SUVF2cjdlaWZsVEFDQWhzYjluSkVSZ1RqbndqRmY3TjVWNE04WEwzQnIyZHlqeDlvUTBUU3RlTzRZVU83RXk5d3UxeWM3UHhWcVZWVlZjbkpLVFUyTlVHOHZMd2VBUGQvc0VaNmJNWDE2VmxiMngxdTNJcUpoaEV0TGJnU0FMZHQyQytOaFFKekhXc2s5U3haN1BCNUI4OEZIV3htam9oU0dpUW9BNFFHZFdFUldIRzYzTjlZTUFCd09sZk5ZUjFCVVZWWVVyYmRmMUxra1NiSXNEWVlOQUpCbDFlTkpCWURUcHpyT1Y0d045WFVWRllzNnUwNEJ3UFFadDN5eVk1czNKUVZBQW9BUldnUWk5cHp1eU15OHhPdE4rNlcrVVdBR2cwRk4wd1lHZ2tJZENBUzZ1N3ZENGJCUWRWM1hOQzBjam5ET0tTRjNsTThIZ09wbjFnenpFS1cwdjcvdmthb1ZZcU54R1psdnY3TXhQcDlHRkJVQXFFbUJjNUJBa1dLTk96VTFOVFUxMVliMitueGVuODlXMDlMUzdDNGdTU0FyQ2dCd2JnMnRiUjZOUmlzZmVuREwxbTBBVURaL1FXM3QrcXlNUzJJUk9IL3psQUVBUWJScjZWOE5IMG1XWkFDQW9YL3ZaRWwySlNWZFgxeWM1SFFDd0s1UGQremMvcGxoR0tNYXJnNm5LaXNTSURMT3hDaDRkL1BteXNySyt2cmZoTkhidGJYTGxpMXJibTRXNEsrc1hidHk1Y3E5ZS9mS3NveUloRm9BSUN2cVVFNWduSzk0K0pFZmZ2eCt4dlNiQUdENThnZEtaODdhdC84QUFCQkNMalJROUw2ZThkbFpLY25lYjcvN1dmU3V1V1ZsQUxCaFE2MklhMmxKQ1FEczJMRlRWRm5SbENtU0pHL2F0QWtSTGRPY1YxWUdBRFd2dm5GdWxZbGNpUnJHYTYrK0xIcVB5K1Y2Y2xXMWFFZ2pacElNQUQ2ZjE2azZLQ2VSeUlBSWNFbEp5WklsU3pJell5R2ZOWHYyd29VTFBaNWtVV1h6NXMxZnVuUnBWdFo0QU9DY1JpSUJBSmd3L3RJUndpbEpBS0E2SEN1cUhqM1JkdXpLd2lzSUlTOCsvMXp1NWY2angvNGNPWk1FMTZUY3l4d081OFpON3czajVad1BlNDk0MVRTamZYMTlFM01tQUVCZHcxN082UGs2dGQzZlgzeGhqVU5WQWNEaFRGcFYvWlJGU1B5dmY0K08yK2JPQVlCRmkrOFJ6clFzeTdJc01sVG9XU0dFV0pabG1xWkZTR1A5TC9hTFJTNDRPbXpwN0dpZmR0MjFBQ0JKY3U2a3l3OGNha1pFY3BZcDVxRXZQdHN1MW4zaXlWVXRMYTA5UFpxbWFmMzkvYnF1NjdvZUNBU0N3V0FvRkJLVDljeVpNNXFtZFhaMmZMbjdjN0g5bkxubGlHZ1l4bWlBaE5ueno2MU84OFpheWVwbjF3UUNnYitCeEd5YlZ6YkhqdVBZc2VPeXM3UHo4dkw4Zm45QlFVRmhZZUhVcVZPTGk0dW5UWnRXVkZTVW41K2ZtWm1aZkhZT2VEd3BKenE2Q0NHV1pkckh2ZWJEaDg4SFpNZW90ZVhRN0ZremhYMzFNNnVIZUloemJwbm0rblZ2K3ZNbmo3NEYrZExHUExTOHNyMnpNMzZiKys2N3QySlJSZGVwMC9HWmNhNklWS0dVdnJkNVk5YjRIUHZ4a1krdzNkM2RKMCtlakVhampESERNRVFPY2M0bFNYSTZuV1BHakVsUFQ1ODhlYkk0dUlsRHNWMGsvNmpCMnB2YWkwanhYOUJFVFFHQXFxb1hYY3MrNU1mUnhPNERnSDNLSGcwVDU5emVVVXA4MGtzQUpZQVNRQW1nQkZBQzZMK1Z2d0NxR2ZIeWtBcG1vd0FBQUFCSlJVNUVya0pnZ2c9PSIsInN1cHBvcnRlZEV4dGVuc2lvbnMiOlt7ImlkIjoiY3JlZFByb3RlY3QiLCJmYWlsX2lmX3Vua25vd24iOmZhbHNlfSx7ImlkIjoiaG1hYy1zZWNyZXQiLCJmYWlsX2lmX3Vua25vd24iOmZhbHNlfV0sImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzFfUFJFIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiI5OThmMzU4YjJkZDI0Y2JlYTQzYWU4MTA3NDM4ZGZiMyIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOnRydWUsInVwIjp0cnVlLCJ1diI6dHJ1ZX0sIm1heE1zZ1NpemUiOjEyMDAsInBpblV2QXV0aFByb3RvY29scyI6WzFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjEyLCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjI1NiwidHJhbnNwb3J0cyI6WyJ1c2IiXX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIyLTAzLTMwIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIsInVybCI6Imh0dHBzOi8vY3JwLnRvIiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJPbmx5S2V5IiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyMjAzMzAwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjQifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjItMDMtMzAiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6Mn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMy0wMS0xMSJ9LHsiYWFndWlkIjoiMzBiNTAzNWUtZDI5Ny00ZmYyLTAxMGItYWRkYzk2YmE2YTk4IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiIzMGI1MDM1ZS1kMjk3LTRmZjItMDEwYi1hZGRjOTZiYTZhOTgiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiT25lU3BhbiBESUdJUEFTUyBGWDItQSJ9LCJkZXNjcmlwdGlvbiI6Ik9uZVNwYW4gRElHSVBBU1MgRlgyLUEiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9LHsibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIiwiYmFEZXNjIjp7InNlbGZBdHRlc3RlZEZSUiI6MC4wMywic2VsZkF0dGVzdGVkRkFSIjoxRS0wNSwiaUFQQVJUaHJlc2hvbGQiOjAuMCwibWF4VGVtcGxhdGVzIjo1LCJtYXhSZXRyaWVzIjozLCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sImlzRnJlc2hVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZWQiOnRydWUsIm1hdGNoZXJQcm90ZWN0aW9uIjpbInNvZnR3YXJlIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsIm5mYyIsImJsdWV0b290aCJdLCJ0Y0Rpc3BsYXkiOlsiaGFyZHdhcmUiXSwidGNEaXNwbGF5Q29udGVudFR5cGUiOiJ0ZXh0L3BsYWluIiwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNHekNDQWNLZ0F3SUJBZ0lFQVRUK0VUQUtCZ2dxaGtqT1BRUURBakJzTVFzd0NRWURWUVFHRXdKVlV6RVFNQTRHQTFVRUNoTUhUMjVsVTNCaGJqRWlNQ0FHQTFVRUN4TVpRWFYwYUdWdWRHbGpZWFJ2Y2lCQmRIUmxjM1JoZEdsdmJqRW5NQ1VHQTFVRUF4TWVUMjVsVTNCaGJpQkVTVWRKVUVGVFV5QkdXREpHU1ZCVElFd3lJRU5CTUNBWERUSTFNREV5T1RFME5UUXdNMW9ZRHpJd05UVXdNVE13TVRRMU5EQXpXakJzTVFzd0NRWURWUVFHRXdKVlV6RVFNQTRHQTFVRUNoTUhUMjVsVTNCaGJqRWlNQ0FHQTFVRUN4TVpRWFYwYUdWdWRHbGpZWFJ2Y2lCQmRIUmxjM1JoZEdsdmJqRW5NQ1VHQTFVRUF4TWVUMjVsVTNCaGJpQkVTVWRKVUVGVFV5QkdXREpHU1ZCVElFd3lJRU5CTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFR24rUXgxOERwOFplUFkvVDVoaDZqUGZ5Q0xmKzRENXZ3VldNSXpISHI3alF5N1lzczV4YzZZcytuTERaZW5QVjNKT0FWYnB4WjY4LzVpZnlydk9FRHFOUU1FNHdIUVlEVlIwT0JCWUVGTGMvUTdMNHA1Z2V0R0hQNmg5UjFMN1Q1UUhLTUI4R0ExVWRJd1FZTUJhQUZMYy9RN0w0cDVnZXRHSFA2aDlSMUw3VDVRSEtNQXdHQTFVZEV3UUZNQU1CQWY4d0NnWUlLb1pJemowRUF3SURSd0F3UkFJZ1I4WnhONVp2QlYxS3llZGhIZFlvV3Z6WkhKMk5jenJtTjRZNFFhMXNUaVFDSUNLMHYxR1BOeXdFSWY2RDIyK1duTGY5My9YTERYWHpSbkJJMzFoWDZEdGQiLCJNSUlDRVRDQ0FiaWdBd0lCQWdJRUFUVUJGVEFLQmdncWhrak9QUVFEQWpCbk1Rc3dDUVlEVlFRR0V3SlZVekVRTUE0R0ExVUVDaE1IVDI1bFUzQmhiakVpTUNBR0ExVUVDeE1aUVhWMGFHVnVkR2xqWVhSdmNpQkJkSFJsYzNSaGRHbHZiakVpTUNBR0ExVUVBeE1aVDI1bFUzQmhiaUJFU1VkSlVFRlRVeUJHV0RJdFFTQkRRVEFnRncweU5UQTVNREV4TWpRek5ERmFHQTh5TURVMU1Ea3dNakV5TkRNME1Wb3daekVMTUFrR0ExVUVCaE1DVlZNeEVEQU9CZ05WQkFvVEIwOXVaVk53WVc0eElqQWdCZ05WQkFzVEdVRjFkR2hsYm5ScFkyRjBiM0lnUVhSMFpYTjBZWFJwYjI0eElqQWdCZ05WQkFNVEdVOXVaVk53WVc0Z1JFbEhTVkJCVTFNZ1JsZ3lMVUVnUTBFd1dUQVRCZ2NxaGtqT1BRSUJCZ2dxaGtqT1BRTUJCd05DQUFUcm15dktDRWt3NURkTEJZZWlOS2w1UmJjTjJkWFp5Q1VkRkg4TWp6bkhYWjErdjVzbWdJeXJtUzltOTA2QkpScXUwYkRXZzlJNzBvSlFXNUp4ZmtnM28xQXdUakFkQmdOVkhRNEVGZ1FVeFh6dUoxdFNwQmJrS2xDbTVuVmU4bS9jU29jd0h3WURWUjBqQkJnd0ZvQVV4WHp1SjF0U3BCYmtLbENtNW5WZThtL2NTb2N3REFZRFZSMFRCQVV3QXdFQi96QUtCZ2dxaGtqT1BRUURBZ05IQURCRUFpQStjT0V6ZGx3eHMvUExyVGppNyt1TXIyN2N1Q0xDVllGcU1udExDZDBXWVFJZ1dmL0x2T0RXbE80RDlQK1cxZUMrNUJYbUg2MzF0R2VkNENCNTNuSTk5Qlk9Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQVJnQUFBSENDQVlBQUFBMEs5YkZBQUFBQkdkQlRVRUFBTEdQQy94aEJRQUFDa2xwUTBOUWMxSkhRaUJKUlVNMk1UazJOaTB5TGpFQUFFaUpuVk4zV0pQM0ZqN2Y5MlVQVmtMWThMR1hiSUVBSWlPc0NNZ1FXYUlRa2dCaGhCQVNRTVdGaUFwV0ZCVVJuRWhWeElMVkNraWRpT0tnS0xoblFZcUlXb3RWWERqdUg5eW50WDE2NyszdCs5Zjd2T2VjNS96T2VjOFBnQkVTSnBIbW9tb0FPVktGUERyWUg0OVBTTVRKdllBQ0ZVamdCQ0FRNXN2Q1p3WEZBQUR3QTNsNGZuU3dQL3dCcjI4QUFnQncxUzRrRXNmaC80TzZVQ1pYQUNDUkFPQWlFdWNMQVpCU0FNZ3VWTWdVQU1nWUFMQlRzMlFLQUpRQUFHeDVmRUlpQUtvTkFPejBTVDRGQU5pcGs5d1hBTmlpSEtrSUFJMEJBSmtvUnlRQ1FMc0FZRldCVWl3Q3dNSUFvS3hBSWk0RXdLNEJnRm0yTWtjQ2dMMEZBSGFPV0pBUFFHQUFnSmxDTE13QUlEZ0NBRU1lRTgwRElFd0RvRERTditDcFgzQ0Z1RWdCQU1ETGxjMlhTOUl6RkxpVjBCcDM4dkRnNGlIaXdteXhRbUVYS1JCbUNlUWluSmViSXhOSTV3Tk16Z3dBQUJyNTBjSCtPRCtRNStiazRlWm01Mnp2OU1XaS9tdndieUkrSWZIZi9yeU1BZ1FBRUU3UDc5cGY1ZVhXQTNESEFiQjF2MnVwV3dEYVZnQm8zL2xkTTlzSm9Gb0swSHI1aTNrNC9FQWVucUZReUR3ZEhBb0xDKzBsWXFHOU1PT0xQdjh6NFcvZ2kzNzIvRUFlL3R0NjhBQnhta0NacmNDamcvMXhZVzUycmxLTzU4c0VRakZ1OStjai9zZUZmLzJPS2RIaU5MRmNMQldLOFZpSnVGQWlUY2Q1dVZLUlJDSEpsZUlTNlg4eThSK1cvUW1UZHcwQXJJWlB3RTYyQjdYTGJNQis3Z0VDaXc1WTBuWUFRSDd6TFl3YUM1RUFFR2MwTW5uM0FBQ1R2L21QUUNzQkFNMlhwT01BQUx6b0dGeW9sQmRNeGdnQUFFU2dnU3F3UVFjTXdSU3N3QTZjd1IyOHdCY0NZUVpFUUF3a3dEd1FRZ2JrZ0J3S29SaVdRUmxVd0RyWUJMV3dBeHFnRVpyaEVMVEJNVGdONStBU1hJSHJjQmNHWUJpZXdoaThoZ2tFUWNnSUUyRWhPb2dSWW83WUlzNElGNW1PQkNKaFNEU1NnS1FnNllnVVVTTEZ5SEtrQXFsQ2FwRmRTQ1B5TFhJVU9ZMWNRUHFRMjhnZ01vcjhpcnhITVpTQnNsRUQxQUoxUUxtb0h4cUt4cUJ6MFhRMEQxMkFscUpyMFJxMEhqMkF0cUtuMFV2b2RYUUFmWXFPWTREUk1RNW1qTmxoWEl5SFJXQ0pXQm9teHhaajVWZzFWbzgxWXgxWU4zWVZHOENlWWU4SUpBS0xnQlBzQ0Y2RUVNSnNncENRUjFoTVdFT29KZXdqdEJLNkNGY0pnNFF4d2ljaWs2aFB0Q1Y2RXZuRWVHSTZzWkJZUnF3bTdpRWVJWjRsWGljT0UxK1RTQ1FPeVpMa1Rnb2hKWkF5U1F0SmEwamJTQzJrVTZRKzBoQnBuRXdtNjVCdHlkN2tDTEtBckNDWGtiZVFENUJQa3Z2SncrUzNGRHJGaU9KTUNhSWtVcVNVRWtvMVpUL2xCS1dmTWtLWm9LcFJ6YW1lMUFpcWlEcWZXa2x0b0haUUwxT0hxUk0wZFpvbHpac1dROHVrTGFQVjBKcHBaMm4zYUMvcGRMb0ozWU1lUlpmUWw5SnI2QWZwNSttRDlIY01EWVlOZzhkSVlpZ1pheGw3R2FjWXR4a3ZtVXltQmRPWG1jaFVNTmN5RzVsbm1BK1liMVZZS3ZZcWZCV1J5aEtWT3BWV2xYNlY1NnBVVlhOVlA5VjVxZ3RVcTFVUHExNVdmYVpHVmJOUTQ2a0oxQmFyMWFrZFZidXBOcTdPVW5kU2oxRFBVVitqdmwvOWd2cGpEYktHaFVhZ2hraWpWR08zeGhtTklSYkdNbVh4V0VMV2NsWUQ2eXhybUUxaVc3TDU3RXgyQmZzYmRpOTdURk5EYzZwbXJHYVJacDNtY2MwQkRzYXg0UEE1Mlp4S3ppSE9EYzU3TFFNdFB5MngxbXF0WnExK3JUZmFldHErMm1MdGN1MFc3ZXZhNzNWd25VQ2RMSjMxT20wNjkzVUp1amE2VWJxRnV0dDF6K28rMDJQcmVla0o5Y3IxRHVuZDBVZjFiZlNqOVJmcTc5YnYwUjgzTURRSU5wQVpiREU0WS9ETWtHUG9hNWhwdU5Id2hPR29FY3RvdXBIRWFLUFJTYU1udUNidWgyZmpOWGdYUG1hc2J4eGlyRFRlWmR4clBHRmlhVExicE1Ta3hlUytLYzJVYTVwbXV0RzAwM1RNek1nczNLellyTW5zampuVm5HdWVZYjdadk52OGpZV2xSWnpGU29zMmk4ZVcycFo4eXdXV1RaYjNySmhXUGxaNVZ2VlcxNnhKMWx6ckxPdHQxbGRzVUJ0WG13eWJPcHZMdHFpdG02M0VkcHR0M3hUaUZJOHAwaW4xVTI3YU1lejg3QXJzbXV3RzdUbjJZZllsOW0zMnp4M01IQklkMWp0ME8zeHlkSFhNZG14d3ZPdWs0VFREcWNTcHcrbFhaeHRub1hPZDh6VVhwa3VReXhLWGRwY1hVMjJuaXFkdW4zckxsZVVhN3JyU3RkUDFvNXU3bTl5dDJXM1UzY3c5eFgyciswMHVteHZKWGNNOTcwSDA4UGRZNG5ITTQ1Mm5tNmZDODVEbkwxNTJYbGxlKzcwZVQ3T2NKcDdXTUczSTI4UmI0TDNMZTJBNlBqMWwrczdwQXo3R1BnS2ZlcCtIdnFhK0l0ODl2aU4rMW42WmZnZjhudnM3K3N2OWovaS80WG55RnZGT0JXQUJ3UUhsQWIyQkdvR3pBMnNESHdTWkJLVUhOUVdOQmJzR0x3dytGVUlNQ1ExWkgzS1RiOEFYOGh2NVl6UGNaeXlhMFJYS0NKMFZXaHY2TU13bVRCN1dFWTZHendqZkVINXZwdmxNNmN5MkNJamdSMnlJdUI5cEdaa1grWDBVS1NveXFpN3FVYlJUZEhGMDl5eldyT1JaKzJlOWp2R1BxWXk1Tzl0cXRuSjJaNnhxYkZKc1kreWJ1SUM0cXJpQmVJZjRSZkdYRW5RVEpBbnRpZVRFMk1ROWllTnpBdWRzbWpPYzVKcFVsblJqcnVYY29ya1g1dW5PeTU1M1BGazFXWkI4T0lXWUVwZXlQK1dESUVKUUx4aFA1YWR1VFIwVDhvU2JoVTlGdnFLTm9sR3h0N2hLUEpMbW5WYVY5ampkTzMxRCttaUdUMFoxeGpNSlQxSXJlWkVaa3JrajgwMVdSTmJlck0vWmNka3RPWlNjbEp5alVnMXBsclFyMXpDM0tMZFBaaXNya3cza2VlWnR5aHVUaDhyMzVDUDVjL1BiRld5RlROR2p0Rkt1VUE0V1RDK29LM2hiR0Z0NHVFaTlTRnJVTTk5bS91cjVJd3VDRm55OWtMQlF1TEN6MkxoNFdmSGdJcjlGdXhZamkxTVhkeTR4WFZLNlpIaHA4Tko5eTJqTHNwYjlVT0pZVWxYeWFubmM4bzVTZzlLbHBVTXJnbGMwbGFtVXljdHVydlJhdVdNVllaVmtWZTlxbDlWYlZuOHFGNVZmckhDc3FLNzRzRWE0NXVKWFRsL1ZmUFY1YmRyYTNrcTN5dTNyU091azYyNnM5MW0vcjBxOWFrSFYwSWJ3RGEwYjhZM2xHMTl0U3Q1MG9YcHE5WTdOdE0zS3pRTTFZVFh0Vzh5MnJOdnlvVGFqOW5xZGYxM0xWdjJ0cTdlKzJTYmExci9kZDN2ekRvTWRGVHZlNzVUc3ZMVXJlRmRydlVWOTlXN1M3b0xkanhwaUc3cS81bjdkdUVkM1Q4V2VqM3VsZXdmMlJlL3JhblJ2Yk55dnY3K3lDVzFTTm8wZVNEcHc1WnVBYjlxYjdacDN0WEJhS2c3Q1FlWEJKOSttZkh2alVPaWh6c1BjdzgzZm1YKzM5UWpyU0hrcjBqcS9kYXd0bzIyZ1BhRzk3K2lNbzUwZFhoMUh2cmYvZnU4eDQyTjF4eldQVjU2Z25TZzk4Zm5rZ3BQanAyU25ucDFPUHozVW1keDU5MHo4bVd0ZFVWMjlaMFBQbmo4WGRPNU10MS8zeWZQZTU0OWQ4THh3OUNMM1l0c2x0MHV0UGE0OVIzNXcvZUZJcjF0djYyWDN5KzFYUEs1MDlFM3JPOUh2MDMvNmFzRFZjOWY0MXk1ZG4zbTk3OGJzRzdkdUp0MGN1Q1c2OWZoMjl1MFhkd3J1VE54ZGVvOTRyL3krMnYzcUIvb1A2biswL3JGbHdHM2crR0RBWU0vRFdRL3ZEZ21IbnY2VS85T0g0ZEpIekVmVkkwWWpqWStkSHg4YkRScTk4bVRPaytHbnNxY1R6OHArVnY5NTYzT3I1OS85NHZ0THoxajgyUEFMK1l2UHY2NTVxZk55NzZ1cHJ6ckhJOGNmdk01NVBmR20vSzNPMjMzdnVPKzYzOGU5SDVrby9FRCtVUFBSK21QSHA5QlA5ejduZlA3OEwvZUU4L3N0UnpqUEFBQUFJR05JVWswQUFIb21BQUNBaEFBQStnQUFBSURvQUFCMU1BQUE2bUFBQURxWUFBQVhjSnk2VVR3QUFBQUpjRWhaY3dBQUxpTUFBQzRqQVhpbFAzWUFBTEtDU1VSQlZIaWM3SjEzbkIxbHVmaS83enN6cCswNTIzZlRLd21oRitrUWlraVRMaUFxQ01wVlZCVFI2N1grOUNycXRWeDdMK2k5S2xYMEtxQ2lOSldPZ01HRVVFSWdDYWxic24xUG5mSyt2ei9tek96WkVraTJaZG5NbDg5aHMzdm1uRE5uWnQ1bm52NElyVFVSRVJFUkU0SGMzVHNRRVJFeGZZa0VURVJFeElRUkNaaUlpSWdKSXhJd0VSRVJFMFlrWUNJaUlpYU1TTUJFUkVSTUdKR0FpWWlJbURBaUFSTVJFVEZoUkFJbUlpSml3b2dFVEVSRXhJUVJDWmlJaUlnSkl4SXdFUkVSRTBZa1lDSWlJaWFNU01CRVJFUk1HSkdBaVlpSW1EQWlBUk1SRVRGaFJBSW1JaUppd29nRVRFUkV4SVFSQ1ppSWlJZ0pJeEl3RVJFUkUwWWtZQ0lpSWlhTVNNQkVSRVJNR0pHQWlZaUltRERNbmQxUUNER1IrekZ0V0xyM1VpekxJdHVYcGFhdW1sdytUendXcDFBb1lCb21wbWtpaEVBcGhXM2JaRElaUE0ranU3dWI2dXBxVE5Pa3Q3Y1h5N0pJcFZJNGprTTJteVVlajVOT3ArbnQ3U1dYeTVGSUpLaXRyY1Z4SEdLeEdOM2QzWGllUjJOakk0VkNBWUIwT28zV21yNitQalpzMkJEdTQ0d1pNNFRqT1ArV3orZWJoUkNGblQyM2dvSHROSzgrVHl0NFg4L3prdWwwdXIxUUtQeHZMcGZUQUlaaHNIRFJRdEtaS3FTVTVBc0ZuSkpETXBXa3Q5di8vclcxdFJTS0JXSldqUDYrZnZMRlBNbFVrdXBNaGtLK1NDNlhJNTFPazBna3lPVnlLS1dvcXFyQzh6ejYrdnFvcjYvSE1BeTZ1cnJJWkRMWXRvMXArdWZBZFYya2xCUUtCVktwRklWQ2daZGZmcGxVS2tXeFdNUnhuSjAvNlhzb096TlRiYWNGVE1UVVJtdU4xbnJRalVCS2lWSUt6L09vcmEwbGs4bFFMQlpSU3MwMlRmT25tVXpHTUUwVHd6QXdET1BWUDZSQ0RnazlYQ2dORlRvQ2dlZDV1SjRMR2svSDlWMjF0YlZidGRZVUMwVTg1U0drUkVvWjdyY1FJdnd1RWE5OUlnSHpHaUJZYk1IaTh6d3ZGQ1pDQ0VNSWtURk5zMW9JMGFTMWJoUkMxR3F0NngzSHFWTksxVnFXVmQzWTJKaUp4V0xWeVdUU0twVktjNFFReGtnTE8vajNTQ2lVTDJUMFlHMG0zTThLQVJNOEx5MkpwUzJVVWtZaWxiZ3JIbzl2MVZyYnFhcFV2NForMjdaN1RjUG9WVXIxQ0NHNnROYmRwbWwybUtiWkxxWHNGMEwwU3lrOU5JTytkK1Z4aVppNlJBSm1DcUtVQXZ5RkxxVTBEY09ZSVlTWTQzbmVmTXV5NXRiVTFNeVdVczYzYmJ0UktkVlVMQmJyTGN1cXN5eXJLcC9QQS83aXkyYXpnSy9KQUpSS0pRQXN5NnBZbkJxdEJ5L1dIUzFjSlJRN1lSa05SdmpmUXhnQ0ljUUJSYWQ0Z0VDRUFpMlh5NFhmVlFoQnZwREhqSmtJSVhMOXVmNXVwVlNYMG1xN3RHUkhkVTMxWm1uSUxaN25iUlZDYkRJTVk2dVVzazBJNGI3U2ZrZnNQaUlCczV1b05Hbkttb1FKTEJaQ0xFa2tFb3VCWmJadEx4SkNMSXpINC9PQTZudytqeEFpRkJDMmJZZnZWWGxYSDZxQkJBSUxmTTFDaThxRldOWTF5cG9Kd2I4SDRUKzU4MzQ0SGI1RzZ3SE5SdnVTRERXQ2xGSmFJOHJIeEJNZWFLbzBWRWtoNXRxdWpaUVN3ekR3bEVjdW44T1FCc2xrcWcvWVVpcVZOZ2doTnNSaXNSZUVFT3VCbDRRUTY2V1VidUR2aW9UUDdpRVNNSlBFVVBQRE5NMjl0ZGI3dXE1N2lOYjYwR1F5dWEvcnV2TmMxMDBHdmhQYnRvY0pESzMxZ01BUXZuZ0k3djcrbjBTb05RVGJTQ1FhMENpMDBJUE5tMHJCOGlvSWpJSE54WkNYQmpJbDNGWXdTTkF3Mkt6Uy9wY0p0OUpvdEJxcVJma0NDZzFhYVJ6UDhUVWZORXBwREsyclhWZnZKNFRZTDlEU2lzVWlRQ0daVEc3MlBPODV6L05XeHVQeGxhWnBQbS9iOXRyS1l4VXg4VVFDWnFMUVZQbzNMTk13bHdISGFLMlBVMG9kb3JYZVJ3Z1J6K2Z6YUsyUlVvNTRsNVZTbG9VSVVGNGNBbitSYWFrUjJ2Lzd3RXJWYUZIV2tOQ2d5NzRUeW90WTYvRDFRZys4VjdqNGc3VTNJQnNHb1lacVNKWENEMTlnb0FWS2FMUlc0ZnRxOUNEaEpzcHEwNEN3RWdncFFBaGtwV3lxT0o1S0QyaENRZ3RmOEpTMW5zQ1pqWCtza2tLSXZYTzUzTjVDaVBOTjA2UlVLcFdFRUd1RUVDczl6M3RFU3ZtWUVPSUZyWFVZTHZJOEQ5ZDFCMmw4RVdORDdLenFHRW45VjhjMFRSWXZYa3dzSHFPL3IzOXhkVTNtaEVLcGVJSlM2Z2loeFFHVkN3SXF6SmxnZ1EzUlBvU1FDREhnK3hqa0p3bnYreUMxSFB4M1BWakFBSU0waFZDWVZEcHJ5eHVNR0g3V0E2OGIrbE5JTVdnYi82MHFCRjdGejhGTzRQS2ZSZkIwcFJZV1BPY0xLaEVjay9MN0NBUlNTSVFVd3dUTlNJOEFLV1c0MytXbzJUUEFrN0ZZN0tGQ29mQ0FiZHZyWGRlbHE2c3I5RmRGN0ppZGtSMlJnQmtqcG1sU1cxdExWVlVWNlhUbU9GYzVwMml0WCsrNjd0RktxVGlpN0FNUllHQU0xV3dHekJzeG9HR0VpMzJRNDlYL24vOThoVjZnTlFTTGpJcEZWZW43cURROUtnVEVVTi9OcTEwTFEwMjFWOXQyNkRVVENwNkszeXROdVVBN3EvdzllRWxnR2dVZkswU2c4UXpzbHl3TFpDRUVzbnlzUGUyaDFjaENKL0IvbFRYSVVpcVYrb2ZydW4rWFV0Nlh6V1lmS1JRS2RIUjA0THJ1SzM3WFBaVkl3RXdRbG1WUlZWVkZLcFVpazhrY0hZdkZ6dlk4N3h6YnNROXlQZGZQN3hpNnVLVEF4RUFJbzZ5VkJQNkh3TStnS0V1WkljSkNnUmJsaFZYMnZ3d1ZKZ3crMmNNK2U0cWR1MWU2NW9iNnF2eWZ2aUNTbFlKWmxpTlJvbXd1K1pzaGhVUUxWZFp5REQ5NkZid2U2UXNkNWFHVUNvK2wvNmIrWndlSmtJbEVZclZsV1grMGJmdVBoVUxoSDUyZG5lUnl1ZEN4SGhFSm1IRW5tVXhTVjFkSEpwTlpsRXFsM3BMUDU5K3NsSHFkNjdvREpnbUVGM3U0S0NydTVvRjJnYWpRUENxMWpySS9RU3VOMHE4ZS9kZ1R6c3NySFlQUXlTMHJ6S1pBOEZRNHdEVURFVHRwU0tTUVNDMVJXb1grRzYzMFlCTlFDT0x4T0laaFBKVklKSDVyMi9hdHZiMjlHOXJiMjhOczZUMlpTTUNNQTBJSWFtdHJxYW1wTWFxcXFzN1RXci9kZGQwemJkdU9EeVNuaVFFMVhtaUU0ZnRQb0d5ZUNDakhhMUY2NE4raEVLa1FKb09pUm1Ma2hMYUl3UXk5aGdPdFJ3YUNSMHFrRkFQS2lnQmtvQlVOQ0J5aHhDRHRacWcybFVna1NyRlk3TStPNDl5VXpXWnZ6K1Z5WG1kbjV4NGJBbzhFekJpd0xJdjYrbnJTNmZTOFJDSnhpVkxxMGxLcGRHQnc0UTBLRFpmdmpBaFErSkVNclgxcElzb09XRTk1YUtWUWdZWXlSSmpzYWNkM01oanFUSmRTaGxxT05NcU9jUTFhYUtRcE1mQk5LaWtsUWd1VXB3WUpteURhSjZVa0hvK3Z0aXpyNWxLcGRITjNkL2VtenM3T1BhNStLUkl3b3lBV2kxRmRYVTExZGZYZXRiVzE3OC9uOCs4c2xVbzFTcWtCSjJUWkJES2tnUllhamU4LzhZV0tyM1VvcFZDZWg5Sitmb2RTS295YTdDbkhjaXBTS2RpRjhLTkp2dkFSQ09GSG1aQ1U2N09rNzhmUkFzLzFRdTJtOHZ3bGs4bmVaREw1eTU2ZW5oLzE5Zld0N2UzdDNXTWlVSkdBMlFXa0ZOVFYxdFBZMUxqVU5NMS9MNVZLNzNKZE56YWl0bUpJbFBBMWxORHY0ZzM0VHp6UEc1WkxNZDJQMzJ1UlFZNXgvUE5xU0NPTVRpRjg1N3hoR0pqU0RJdEhYWHZBa1I5Y0g3Rll6RFlNNDMrVVV0L3U2dXA2Y2Z2MjdkTStueVlTTUR0QjRHT1pNV1BHUWl0bWZhU1FMMXlwbEVyNEY0Y281N0FKa1A3RnBuUzVUc2kzaDN3bm9UZGNxRXpYNHpXZENYMHU1Znllb01vODhLMGhCV1paMkdpdFVhN0M5ZHd3M2FkY3psRE1aREkvYzEzMzIxdTJiTmt3blgwMGtZRFpNUUxRMWRYVnpKbzFxOTZLeFQ1Y0xCVSs2TmhPYlpqc1ZuYXVTdW5iN0o1V0EwbXVuZzRGaXZJVVNxc1I4ejRpWHJ0VW1sSkJTNHZRaVY5MkhGdW01WnRQbm9mcmVnUXhiNjAxVlZWVlBhWnBmcjlVS24xbjI3WnRYYjI5dlRCaWJ2UnJsMGpBakl5d0xFczNOVFZSWDE5L21lZDVYeWdVQ3d0ZDVUY2dNakRDTzVpV1FRNktuMnZoTy96OGl5bjB5VXlmNHhLeEF3SmhFMmcwaG1HZ3BmODN5ekF4TFF1QndIUEt2Vy93a3lzTnd5Q1ZTcjBzaFBoc1YxZlhEZHUzYjZkVUtrMGJJUk1KbU1GSVFOWFUxREJ6NXN3bDhYajhXOWxzOWh6WGRRY3lhWVhDTkt3d0R3SkFhSUhydW5pZWgrZDZZWDdFTkRnZUVidElxTlZJZ1dWYUdOSUE2VWVoRE1NZ1pzWUFCZ21hSUhrdms4bjh5YmJ0ajJ6ZHV2WEY3dTV1S0YrUHUrM0xqQU9SZ1BFUmdMWXNpK2JtWm1wcWFxNXhYZmUvaXNWaUpoUVVHb1FCR0dLZ1BrY05GTDk1bmhjSmxZaEJCRVdqaG1sZ21tWlk2bUVZQnBabGdRYlhka09mbmRhYVJDTFJuMHdtLzdPcnErdTdXN2R1RGNMYXIxbU5KaEl3NVpPWFRxZVpOMi9lL29aaGZMdS92Ly9VSUo4QlRUa25Rb1FWeUZKTFBOY1hMSzduUm9JbDRoVUoxbzloR0w1UFJncVVVRmltaFdtWUtFL2hPdTVBN1pjVVpLb3o5Mm1sLy8zbERTOC8wOWZYQjY5UkliTW5DNWh5a0JFMVk4WU1tcHViLzYxVUtuMi9XQ3ltS2dXR2xCSXRCMHdoclRTdTQrSzRUaVJZSW5hSllCMVpwb1ZoR1lEZk5pTVdpMkZnK0pxdzYrRUozOHhPSnBMNVZDTDF3ZGJXMXY5dDJkWUN2c2xVcmtSN2JiQ25DaGdCSUtYVWMrZk9wYTZ1N2dmWmJQWURqdU9FclNPbDhGczQ2dUMrb2ZBRmkrT2cwZUYyRVJHN1N1RDhqMWt4cENsRHN5bG14VkJLVVhSS1lXYy8wektwcWE3NVliWTNlL1g2OWV2eFBDOE1WTzdXTDdHVDdHa0NKanc1eVdTU2VmUG1MVFlOODVaY1BuY2tNRWhyOFl0cU5SS0o1M2pZam8xU0toSXNFZU5HRUVXS3grSWcvUklTS3haRFNrbXBhS09VNTI4b29MYTY5Z20zNUw1dHc4c2IxcGVMS0Y4VEp0T2VKR0FDazBpbjAybTlZTUdDNVFwMVM3WS9PMWNLU1pBd0o4MWdNeitYeFhFY2dpalNGUDkrRWE5QmdncDd5N1Q4UHNwb3BDRXhMUlBYY1FlRnRHdXJhN2RvcGQrMmNlUEdoL3Y3KzhQcm1Ta3NhUFlVQVJQNlcycHJhNWt6Wjg2bHhWTHh4cUpkOUF2VGRIbnVqdUU3M3d4dDREcHUyTzgyMGxvaUpwcEIya3c1SGNLS3hkQjZjT1AyZUN4T09wVytiUFBtelRkMmRIVEFGUGZMN0l6c2VDMnZMbEh4VU5YVjFjeVlNZU9ha2wyNjBTN1pHTUwwYzFZTWdURDlERXpwU2V5aUhUU0dqb1JMeEtRUTFEQVZpZ1UvNVVGTHZ5QlNRRHdlRHpYb29sMGtYOHJmTUh2TzdBL1YxZFVCNVNyYWdjZHJqdGVxQmlNcWZxcm01bWFhbXBvK204dmxQbDlaN1NwTkFWTDRqWVU4aFYyeThaUVhDWmFJM1laU0NzdXlzR0wrNkJscEdwaW1RY2t1K2IyREZNU3NHSWxFNG5PYk4yLytRazlQRDB4UlRXWTZtMGloNXRMVTFNU3NXYk8rMk4vZi81a2dJVTVyaldGSnYybDJ1VmFrVkNwRkpsSEVsQ0M0RHVQeGVLaGxtNWFKVnhvb21EVk5FeW5sbDdadjMvNlpycTR1QUFOZm81a3lRbWE2bWtpaGNNbGtNalExTlYyYnpXWS9FNmI4ZzUrSFVPN2Q0cnB1WkJKRlRDbUU4T3ZhaXNXaUx6SThQK3ZYakpsaEk2enkrSlJQejVrejUvTTFOVFg0VytGSExGNUR2SlkwbUVGbVVkbm44aCt1NjM3RGRkMkJIQmZURDBOTExYRnNoMUtwTkdpNGVrVEVWQ0dvYlVvbWszNXhMWXBZUEk1Ykdwak5aRmtXVXNxUHRiYTJmcVBDWEpvU05VelRTWU9wRkM0azRnbG16NTU5dWRiNkc1N25JY3Y5YjRYcEZ5MUs3VHR6UzZWU1dHWWZFVEhWQ05wNEZvdkYwUGxyMnlXTW1CSGVNQjNIUVd2OTlYbno1bDBlajhlRGx3YnJkc3BmMks4VkFSTWdBTlhRMkhDS3A3eGYyYllkVmtKTHM5eHJGWU5Tc1lUdDJNRndyWWlJS1kwUUFydG9Ed2daeDhHd1pIamp0RzBiMTNWLzBkemNmREsrOWlKNWphemQxNEtKRkh5d1lacW1PMmZPbkwyc21QWFBmQ2xmYXdvVE5FaEwrdW4vV2xJcWxuQTlOL0szUkx6bVVFb1JqOFV4TEwvWHMyVlp2dU8zWEpHZFRDYjdjcm5jWVZ1M2JuM0pkVjJUQWFmdmJuSDhUZ2NUS1hEb0dvRGIyTmhvWlRLWlA1V0twVnBERzM0bk9iTThoQXVKWGJKeFhDY1NMaEd2U2FUMDgyTTgxL1BiUGJndXBtV0dOL2Rpc1ZoZFUxUHpwNGFHQmhOd0dYRDZUbGxUYVNxdnhPQ2dTY0NMeCtPa1VxbGZaclBaZllMdS9xYjBXeGxLTFhGS1RtUVdSYnptRVZMNFdlYWVQNDNDVlc0NGJWSnJUYUZRV0piSlpINFZpOFZnSUxJRVUxVElURlVCTThpcGF4aUduajE3OWxWQ2lFdGMxeDNvNDJMNm03bTJHd21YaUdsQmtOVnJsMnkvcWJ5bmNQSDhZRVU1N2NJd2pFc1dMRmh3bFdtYUZZTnZCLzJjTWt4RkFWTjVzQXdoaE52VTFMU3ZZUmpmdFIyN1BIdTRISTRXb0YxRnlTNzVveVlpSXFZSkdoM09WL0tVaDVaK1FoNzRrU1hUTkwvYjNOeThyeERDQlV5bW9IQ0JxU2xnb0R3RkFuRFM2VFExTlRVMzJiWnRCWjMralNCaXBBeUt4ZExBUUxTSWlHbENZQkk1dG9PcC9ZWlYwdlFqUzFwclNxV1NWVmRYZDFNbW5RR3c4ZjJVTU1VRXpWUVRNSlhhaXpCTms3cTZ1azg3am5Ob01CeGVtbjVsdEVSUUtoV0hUZHFMaUpndUNPR2JSSTdqK0wyTFhBL0Q5RTBsclRVbHAzUm9ZMVBqWjJKV0xIakpsUFBIVERVQkF3TlJJNmVtcHVhQWVEeitlY2R4d2xFaXdoQVlRdUk2bnA4dkVQbGRJcVl4VWtxL3BZTUN0TWJEOHllTG9pZzVKV0tKMkxVMXRiVUhBQTcrdXBreXdnV21sb0NwREVsNzhYaWM2dXJxSDlxdWJRVEpkRUdtcnZKMFdBSVFFVEhkRVVKUUxCVVJTRHpQUXhzNkhBNVlza3RHVFYzMWo4cFp2aDREUW1aS0NKcXB0RUtEZ3lJQnJ6cFQvWFloeFFtdTYvclZwNGJ2ZHpFd0tCYUs0ZFM5aUlqcFRsQWNhZHNPcGpCUm5qOXJDZnpST3NJVXgxZlhWRi9HOElMSTNiNUFwb0tBcVpTMkJsQktKcFBwZENiOUZkZDJrZVZkRkJJTTRlZTdlRzdVMHlWaXowSktpZXM2S0U5QnhhZ1VnY0F0dXRUVzFINDVsVXFsZ1JLRFRhWGRLbVNteWlvTk5CY0JVRmRYOXdtdDlkeGdsb3hoR1FncDhSemxGekNha2Q4bFlzK2thQmY5TWNhZXdwQ0dmd1AyS3dubU5qWTJmcUs4MmFEMXREdVpTZ0xHQUVyVjFkWHprOG5rUnp6UFQ1Y09oczhMWGM1d0pES05JdlpNaFBBRmkrZDZnQmcwQ2NOMVhWS3AxSC9VMWRYTlo3Z1dzOXZZM1FKbVdML1JUQ1p6clZJcXBiVS84MWRZZm1hajUzaEJGdU5PRlZsRlJFeEhoQkRZamcwYUZBb3BSWmd6bzVSS1pqS1pheXMzWnpkck1ydFR3RlRXR3BsQUtaMU9INUJNSnE5d1hBZUI5bFhBY3R2TFlOcGlSTVNlVENCTVBNZkYwQWFlVW41dW1QQTEvRlFxZFVVbWt6a1FYNHVwelBEZExZdG5LbWd3WVlldTZ1cnEvd3hNb3lBc0xZWEVkZndCOUpGak55TENkeHM0cm9QbktSVEs3NGRVWHNxZTUxRmZYLytaOHFhN3ZYZk03bDZ4Z2UvRnJxcXFPaXlaVEY3c3V2NHdLbW40WGIyMDU2ZExSOXBMUk1RQVdtdGMxOC93VlVxQlNWZ01tVXFsTHM1a01vY3hVRUt3Mi9KaWRvZUFxY3gza2ZpeGUycHFhajZrbEFvaWNQNDhvL0lCaTBhTlJFUU1Sa28vNlU1NUNxV1ZIL3lRQXExMG9NVjhxTHlwN3hIZVRVSm1kNjNhNE11YWdKMUtwZlpPSkJKdjliVVg3UmQxQmRwTHVZRlU1TmlOaUJpTzY3cElMY1BFVXlFRWp1T1FTQ1RlVmxWVnRReGZpd2w4TVpNdVpIYVhCaE44dGdESVpESWYwRnBid1FhR09kRHdXSGxSTVdORXhFZ0V4WkNlNS9sL2tEb2MwYWExTnV2cTZqNFFiTXB1VWlZbSswTXJoWXNFOG9sRVluWXFsWHFuMzBoSys4V0x3dGRlb296ZGlJaFhKaEF5UXBVSHVvbUJtM01xbFhwSE1wbWNEZVFaN095ZHREdjI3bHE5UVdpYW1wcWFkMGdwcTdYV2Z1ZGlFNlR3UzlPVmpyU1hpSWhYUWdoL2Nxbm4rV09zaFFRaENFeW02dHJhMm5lVU43WFlEVGt4dTBPRENTUnB5VENNWkNLUmVLL3J1Z2o4R1RGU1NvVHliY3RJdUVSRXZEcUJrUEdUNzN4bmI2RFpWRlZWdmRleXJDUlFaR0R0VGRyQ01pZnJneGdjUFRLQVlqcWR2c0F3akFXbGt0K1Z6akFNREdIZzJBNmU1MDFZcjVmSVlSeXh1NWlJbTJZZ1lMVHloUXRDQUg0MEtaRklMS2l1cmo2M3M3UHpWaURHd0tnVHdTU01PNWxNQVJNZ0FTV0VFT2wwK29yQVFSVTBsRUw1OXVORWFpLytLTmtvTWhVeGVmZ1p1R3JpcmprTnJ1TmlHUlpLbEYwTDVkRW5tVXptaXE2dXJ0OW9yWDA3YWhLWkxBRXpWSHZKSjVQSlEyS3gyT21PNHdCK0sweHBTRnpiSFZURU5iNW90SVpVc2dyRE5GRXFFakFSazRPVXZzbVN6MmNuUm91UnZoWmpxUmhDbG5OaS9Qb2tFb25FNlZWVlZZZGtzOWwvQVZVTWFERXd3VnJNWkdvd2xmYWZycXFxdWdBR3pKVWdzUzdVYU1vMUYrT1BRQVN6ckNNWFQ4UWtNdEhYbTlJS3ovTXdwWUhHNzNybko2OXEwdW4waFdVQkU5em9OUU5KZUJNbVpDWkR3RlFtK0VpZ2FCaEdPcGxNWGhpVUJSamxzZ0RscWRDNU81SG1pOVk2ZkVSRVRCWVRmYjM1amwwSDB6VDgraVFoOGZDQzhvRUxUZFA4cXV1NlJRWjhNUlB1aDVtc0tGSWdZQ3pBVGFWU3J6Y01ZOS9nZ0V0RFltRGdPbTQwSlNBaVlwUU1oS3k5OEhZZXROdTBUR3VmZERyOWV2eVJzNVdadlJQS1pBaVlTdTFGQTFSVlZaMGZxRzVTK0EybE5EcksybzJJR0NPaTNJZ0t6YUE4TWcrUFZGWHFUZVhOTkpNMDEzcWlCY3pRd3NhY1pWbjFpVVRpamFHdnhmQkhrWGllaCt1NVVlWnVSTVJZRU9DNUhrTDdja01MZjlTSjdkckVrL0UzV2xhc0FjZ3gyQ2M2WVVKbU1nUk04Tk1FVkRLWlBGVUlNU3ZjUUFvTVllQzVYdVFUaVlnWUkwSUlQT1diU1JJWnJrQ3ROSVkwWm1ZeTZWUHcvUytUVWdBNUdlckNvT3pCWkRKNWJtZ2VTVDgwSGRRZFJlWlJSTVQ0NEhsZU9FNDVtQ3VtdENLVlNwMWIzaVRveFRTaFRLU0FxZFJlSkpDM0xHdFdNcGs4UXlsVi92UnlTck0za2JrdkVSRjdGbUd2R0ZYdWRpZUYzOUxCMVNUaWlUZGFsalVMS0RDNHlucEM3dTRUdmFKbHhjTkpwVkluU0NuckF3RWp5K2FSOWpSS3F3bmVsWWlJUFFlbEZFb3BqSEpEdThENWE1aEdYVlZWMVFrTWRMdWIwSmFhRS9YR1lzaERBaVFTaVRlRXdrWElnWkVMWGxUWUdCRXgzaWpQWDJzQ0VhNHZwUlNwVk9xVThpYVZDc0NFK0dJbXc4a3JnWkpwbXMyeFdPeVVJSG9ralhKcGdCczE5STZJR0crRUVMaktSUWRta2hob0NoNlB4OTlnbXVaTS9Na0RFenAxWUNKWGRTQVZEYUFZajhjUE1VMXpVUmdwa240bmRNL3pvam5URVJIampCRGwvcnhLZ2RCb3FRYVM3aXhyVVNxVk9oamZEMk15Z1MwY0prTEFERFdOZ3VqUkNjQkE3MUJaVGdBcVI0K2lFSFZFeFBpalBJMVFFcTE5VXlsWVo4bGs4dmp5SnBYcmROek5wSW4yd1VqQUUwSlk4WGo4NkRDNVR2cnpqanpsUmFVQkVSRVRpS3F3RU1LYnVtOG1IVU81ZEljSnpJV1o2REMxQkFyeGVIeVphWnBIaHBYVFVpQ05jbHZNU01CRVJFd0lZU01xcmYxS2JxbkRqZ1dXWlIyUlNDVDJ3VGVUSm14MjBuZ0xtS0hta1FsNDhYajhFQ2xsSmhBbVV2cmpZSlZiOW5KSEFpWWlZa0lJYS94MGVWbVdsNXBoR0psa01ua3dmc3VHeW5EMWxEZVJLbXVQQkVBOEhqK3U4dGt3bmJrOFVDM3l2MFJFVEF5Qlk5ZS9sZXV3MDUxU2luZzhmbXpscGt4QVJHa2lmVEFTc0lVUXlWZ3NkdGpBN0JiQ0NYUmFSZEdqaUlpSnhtOElydEJDaCtVRDVVNTNod3NoRWt6Z2lObUpqQ0lGL3BkOURNUFlQN0FGcFpBWXdrQzVLc3JlallpWVlFSU54dE5JSk5vWTZIUm5HTWIrOFhoOFgveUpBMU0raWpUVS8ySUFYaUtST0ZnSWtRbzgyVUZDbmFlOGNmem9pSWlJVjBJcmphaFk3dG9mY3BncTU4TlUrbUhHVmRCTWhKTTM4TDhZQUtacEhocEdqOHFoTXFWVWxMMGJFVEZKQkQ1UHJYVzViTUJmZDJVL3pPdkttdzBWTU9QQ1JFV1JKT0JKS2F0aXNkZ1JBOVhUL3NOVDNyVDN2L2c5ZjErNUQrdU9uZ3NLMVY3dE5UdjdHYS8yZk5BKzQ1V2VIMmwvUE0vdjk3cnI3R0IvUnRxSENRNEE3QW05bVFleWVqMjAwQ0IwK0xkWUxIYUVFS0lLWDRzWmR3RXpFVTIvUS8rTFpWa0xUTlBjcjdMQTBjREE4UnoweE05ODJpMUlLZW51N2lhWHl5R2xnVDhxUlJPTHhhaXRyY1UwVGFTVTlQWDEwZHZiUnlhVG9iYTJCcTAxaFVLQjd1NXVUTk0vTFk3alVsZFhTMVZWRlFCZFhkM2tjbGthR2hvb2xVcGtzOWxRQzFSS2swakVxYXVyQ3lkaytwL1JDMEJkWFIzcGROcnZFMUxPbk83cTZzSnhYQ3pMeExadEVva0VkWFYxNGZmSVpuUDA5SFFUaThYUVd1TzZMdlgxOWFSU0tYcDZlcERTSUpsTTBOdmJSMDFOZGZpK1Jxa2ZvZHhCYmZTRlZqaG1Db25DZEF2WVJoSWRUeVBRYU0vRDdPdEdlaTV1ZFIwNmtVSVZDeGpaUGt3MEh1Q20wc2hFQ2lyOGRsSktlbnQ3S1JRSzRiRUdTS1ZTVkZWVmhYa2czZDNkS0tXcHI2OExoL2w1bmtkUFR3K2xVZ21BV0N4R1haMy8vSFFVT0VvcFVINEhTUzM4WTZpMHdqVE5mV094Mkx4U3FiUVJ2eG40dU43MXgxUEFESzJnTGxpV3RZOFFva1lwUlRBYVZnZ1JWbmxPUndxRkFzdVhMMmZKa3Iwb0ZBb1lob0hyZXF4YnQ0NFZLMWFnTlNRU2NRNDY2R0FPT2VRZ1ZxOWV6Y3FWcThqbjg5VFUxUEQydDEvSy92c2ZnQkN3WnMwTC9PVXZmNkcxdFpYcTZtcU9PKzVZbGkxYnlrTVBQVXhUVXpONzc3MlVZckdJWVJnb3BYamhoYlU4OGNTVFpESVpITWRocjczMjRwaGpqZ2JnL3ZzZllOdTJiYVJTS1Z6WHBiT3prMk9PT1lhVFQzNDlNMmZPWU1PR2pkeC8vLzJzV3JXS3hzWkdPanM3cWFtcDVqM3Z1Wkw5OTkrZllySEUwMCt2NHM5Ly9qTmJ0bXpod0FNUDRxMXZ2WmhFSXNGZi8vcFgvdmEzdjFOYlV3TkNvQlllZ1k1WEk1UVRIaGRsV01UNnR1S2xHckhUelNSYW42YlV1ZzdQU2hGVEh2cUUwM0htTDhaYy9VL2NGWStScXFuRlB2WmtuT1paaU40dWtrOC9TYW1uQzExVGh5aHJIYlp0czJ6Wk1tYk1hTWEyYlF6RHhIVmRYbjU1SXkrL3ZJRzZ1am9TaVRoSEhYVWtobUh5NG9zdjRyb3UyV3dXMjdZNTRvZ2pPUEJBLzFnLysrenpQUDc0RXhpR3BLNnVib2NhNUdzVlhiN1JTU1MrOTFNRmRVazE4WGg4MzFLcHRBWklNRmlMR2JPa0hTOEJNN1M1bEFDSXhXSUhCR1pRNEg4SlZPN3BhQjVwcmVucjYrTmQ3L28zemp6empjT2V2LzMyTy9qRUp6N0IyclV2OEpuUGZKcjN2T2RLYnJycEp1Njg4MDhjY3NqcnVPNjZuM0RFRVVjTWVzM0tsVmR3MldXWDhjd3pxL25aejY3anROTk81ZXFyUDhncHA1ekMrZWVmTit3enZ2dmQ3L0c1ejExTGYzK1c3MzN2TzF4NDRRVUEvT3huUCtQZi8vMC9TQ2FUZEhaMmNzVVY3K1JiMy9ybW9QUHc4WTkvbFBlODUzM2NkTk5ON0wzMzNseC8vYTg0NG9qREI3My9YWGZkeFR2ZitXOWNjTUg1SEh2c01mVDA5TEpnd1h6YTI3ZnozTlAvb3FhK21TMEhYRXFoYVgrMHAwRllnSUo0QS9PZi9nRkpwNWNYai93VWphMlBNdmVlVDVMYnRCSHp6RGZ6M0RkdklOYmR6WkozbndYMWpiUi84bXUwbjNnV09oT0RQcHZtcHg1bTVuYy9TM0hUeStncVh4UHI3T3prZTkvN0RtZWZmZmFnZld4dGJlTmIzL28yMy8zdWQxbTJiQmszM25nOWRYWDFuSERDU1R6KytEK1lPM2NlMy9uT3QzbkxXeTRlY241dTU1T2YvSDkwZFhWUlgxOC83WVNNOGhTYWNsYXZyenVpdFNZZWp4OEEzTWJJZFVsakVqSVRHVVdLbWFhNWIzQ1NoQnh3OEU1WEFRTysycDdMNVFCNDdMRi84TTF2Zm9zYmJyaUJVcW5FK2VlZngwMDMzVWd5bWFLOXZSMkF0cloyRW9ra045eHdQVWNjY1FUUFBQTXM3MzN2Vlh6b1F4OW13NFlOSEhMSXdkeDIyKzlKcHpOMGRIUUFVQ3FWUXRYKzl0di93S2MrOWYvNDMvLzlCUUFmK3RBMW5Ienk2MmxxYXVTa2swNEs5K3ZNTTg5a3pweTViTisrblgzMjJZZHZmOXNYTGgvNjBJYzUvdmdUdVA3NkcwZ2tFdnppRi85RGZYMDk3MzN2bFJ4eHhPSDg4WTkvNHNRVFg4L2xsNytEbnA0ZXpqampETDd3aGMvVDJkbko2dFhQME4zZHhmYnRIZXkvLzM2VWl2NCt1YVVpdXREUC9FMS9adCsxdjJUdmwzN05QaS8ra25UbkdwSlAvNTdHZFgra28vNHdzb3RPbzNyeEFsNjg0cU40dG1MZWYzMElzZnBKdXQ3ek1kck9lQk9OOTkzQjRnOWVUdjNkdjZmOW1KUFovbzRQK1ROLzFNRHNyRmdzQnNBdHQveWFkNzd6Q243ODR4OHpjK1lNdnZhMXIzTGdnUWZTMWRWTlBKNEFvRmdzSW9UZ3h6LytFVzk1eThYWXRzMFBmdkJEdnZ2ZDc5SFgxOGY1NTUvUC8vN3YvNUJJeENrV2l4Ti9zVXdpUWdpVVZuNyttZEFFN1hyTHgzQWZJTTRFUkpFbXlrUnlEY05vc0N6cndNcjJERUpLbE8yaHRjSXd6R2xwNjhKQTZjTnZmL3RidnYzdGIyRlpjYTY3N3VmY2V1dk5ISDc0NFZ4NDRadEQzMGh2Ynkvbm5YY2VCeHl3UHhzM2J1S1NTeTVsOWVwVkFEejY2S05jZDkxMWJOaXdBZE8wd3FtWFFPaEwrTi8vL1YvKytNYzdBS2lxU3ZHV3Q3eUZ3dzgvSE5PMGFHaW81L2UvdjQzYTJscE9Qdm4xSEhQTVVmenFWNzlrN3R3NWdLQ3ZyNC83N3Zzcnp6MzNERTg5dFpKVUtzV2NPWE5vYm01bXlaS2xBRHo3N0xNOCtPRDk0V2UrNXoxWHNtN2RPbXpicHFhbWh2NytQdXJyRzNqb29ZZEpaOUxsMjRzQmhxQjI1YzFVYlZ1Sm0waWpwRWsrMWtDdWFEUDdtVnZvYlRpQWw1ZGV3TUc2blpoMHFiNzM5OFR2K2gybGVZdHBQK2dZcktMTGdsLy9oT3lEZjJQSnRwZFplZEladE0vYmk3cXFEQlR5SUkzUXh3Snc4ODAzODZjLy9aRWJiN3laVTA4OWpTVkw5cUsydHBZdFc3WlFMQlpKcFZKMGRuWnl6am5uY3RwcHA5TFQwOHViMzN3eDk5MTNIMUpLZnZ2YjMzTGJiYmR4N0xISGNPR0ZGL0t6bi8wUHMyZUh2ZWxmOHdRQ1dTa1ZGajFTcnE2MkxPdEF3ekFhUE04TDJtaE9PUUZUcWJsSW9HaFoxbDZtYVM2dEhBVXJOSGllbXFidTNlRlVWVlZoV1hIbXpwM0x3dzgveUM5L2VUMy83Lzk5aWhOUFBKNlhYbm9SOEoyTHk1Y3ZCK0QvL3UvL1dMMTZGZnZzc3g4SEhYUXdvUG5SajM1TWYzOC85ZlVOZzhMNmdXYTRiTm5lUFBua0hKWXMyWXQ5OXRrSGdMYTJOaTY4OEVJQWZ2akRIN0p3NFNKT1B2bjFuSExLS2R4NjYyOTQ0b2tuV2JseUpZY2NjZ2pQUFBNMER6endJQ3RYcnVRUGYvZ0RkOTc1WjNwN2U3bm5ubnM1Kyt5eitPUW5QOEZGRjEzSWloVlBzV3JWS2o3eWtmL2duLzljd2FKRmkzQmRqNXFhR3U2Nzd5ZTB0TFJRWDUxQkFWSjdvRFd0QzAvQnFOOGZMMUZEc3RCQmN1dFRxRVFOM3Bhbm1iL3FaNnc3L0tOc2FYNER5NzczUlhKdDJ5akdVMGpEcFBubE5YZ3ZyNkc0OWpsaU5XbTYzM0FPZG4wdHMrNWZnK2pyZ1VRcWpDNEZVYXlQZi96am5Ibm1tZXl6ejc0c1dEQ2Y2NjY3amdjZmZJaWxTMzFCcWJYR2NSeE9PTUh2VXZDNzMvMk8rKzY3aDhXTGx5Q0U0TEhISHVmbW0yL21ReCs2aG1PT09ZYWYvL3puZUo0WEN2THBnTkwrdkNTSlJPR0ZDWGVtYVM2TnhXS3pDNFhDc3d6NFlZTEpqekFHTTJrOEJNeEk3VEZMcG1rdUZFSWtndGk3REdQdmUwNy9GeWtsaG1FUWk4V1EwcVMxdFEyQVRDWk5jTzZrbEdReUdRQzJiL2ZOcHFhbUptNjk5ZVpCNy9YcFQzK0c3ZHUzaDcvYnR1OUEvZnJYdjhiWHYvNjE4TzhyVjY3a2lTZWU1TC8vKzZ0MGRuYngvUE5yS0JaTGFLMDUrK3l6Mkh2dnZYbnh4UmU1K09LMzhwR1BmSmdycjd5U2swNDZrWk5PT2hHQUcyKzhpWTk4NUQvNDhZOS9RbTl2RDUvNXpLZFp1blFwUzVZczRTMXZ1Wml0VzdmeS92ZC9nTC8rOWUvOCt0ZS9EczJVdXJvNmxGUHlHNGtwRjVSSCs2SC9CckUweEt1cGIzMlVocFovMHVNS1BOY2gzcjhOcENLWHFFTTk4eFFVYzZqYVJ0RFE5TFZQa0d6WlRQYTRVMmw3M3lmWmZ2UUpOUDd6Y1diYzhIM3lhSkFTeWpldTREbzYvdmpsSEgvODh2QTRGSXNsWXJFWVNnMXNaeGhHR0NYYnRHa1RVbHBZbG9WU2ltUXl5ZWJObXdGSUpwT1lwaFZrdTQ3MU1wZzZsR3VRREl4eWhFOEgwejBTbG1VdExCUUtLNEFVZ3h1QmoybWhUcFNKcEMzTFdnYmxCbE55K2p0NFI4SnhISXJGQXR1M2IwY3BsK09PT3dhQXpadTNoaHFJNjdxMHRMUUNjT2loaHdMUTB0TENaei83T2JxNnVyam9vZ3M0NmFUWDR6ak9vUGVXWlRWMzNicDE5UFQwQUlKLy9uTUZYL2pDRnpqenpEZVNTQ1JJSkJMODYxOHJNQXdUSVFTMXRiVXNYYnFFT1hObWM4MDExM0RERFRmeXJXOTloMlhMbHJIZmZ2dnhxVTk5a3JlLy9WTCs4cGU3T09ta0V6Rk5rNHN1ZWpPWlREVno1ODdsOHN2ZnpwbG5uc2tuUC9sSkhuendZVEtaVEJoUzl5T0ZQa3FhSUExbXJMNlJXSzRkSjFGREt0OU9IZ1BoNUVnMHpXZmQ2OTZETEpWWXN2WVd1cTcrT0ZiTGR1Sy8vQjZsNmxvOHUwam52MytCclpkL0dMbzZXUHp0YThuY2RqMzU3aTVVMDh5d25nYkFNUHpQLytRblA4VU5OOXpJN05seitPWTN2ODQxMTN5UWpvNE9mdmF6bjRjamNqelBZK3ZXclFBY2Z2aGhLT1dReStVd0RJTjhQcy9yWG5jWUFEMDkzZGkyTSswU1FZUGNGMkNnSnFrYzlpLzdZVFREQ3g2bmpKTzNzanU1dEN4cjJVQUdMeUFJQ3h6M0ZLcXFVdFRXMWpGNzltdysvL2t2OEphM3ZBV0EyMjY3clNKL3hlTXZmL2tMQU9lZWV5NVhYdmtldG03ZHloZS8rQVh1dnZzZVpzMmFEUkRtcndSWWxnWEFsNy84Rlk0NTVqZ3V1T0JDUHZyUmo5TFgxOGY3M3ZjK0FKNTk5am0yYnQzS2hnM3JXYk5tRGVEZjZadWJtem5qak5QNXovLzhEQzB0cmZ6cFQzL2dhMS83S212WHJnVWdsVXB5K3VtbmNjVVY3K1Ixcnp1TVJ4NTVpRnR2dllXYmIvNDFBRFUxTmVHZGZ5UzBNRUJJYXRiOWxkb1ZOOUN3NG5waUwvd04yNFdrOE9qYzcwTDZtNDlrenJPM0lyMTJOcHg2S1JzdnZJTFlYbnNUYjIvQnZleHExbC8xS1dML2ZJaWxINytNcWx0K1NrNFlNSDl4K1JnTVhFUEJJZG00Y1JQYnRtM2huLzk4bk9lZWV3NkFaY3VXRFJJU3lXU1NPKy84TXdCbm4zMFdIL3pnTmZUMys3bEM3M3JYdjNIeHhSY0JjUGZkOTJLYTV2VFNYc29vcGNwclVJY2lwS3lGN3MzQWVPZEtaKytZWk1SNG1rakJ2NVVRb3RvMHpRVmhCS2s4UVVEWkNvWENFTlB2eEFXVTA2OEIrUFNuUDgzVlYzK0FtcHJhOFBsdmZPT2JQUHJvdzd6MXJiNndtVE5uRGc4K2VEKzMzWFk3YjNyVCtWeDMzVSs1NG9wM1VpcVZCa1dCVXFrVXFWUVM4SVZMa0h5WFRDYkRqbVZTU2s0NTVSUU9POHpQL3I3a2trdlpzR0VEeFdLUm80OCtpZ2NmZklDcnJycUtDeTY0a0UyYk5ySFBQc3Q0NG9sLzhNZ2pqM0x3d1FkeXhCRkhzR1hMRnU2NDR3NzIzbnR2UHZheGovS0xYL3dQWjU5OUpyYnRjTkZGdmwvbnBwdHVKcC9QVVZ0Yk0rVGJsLzBpVmdyaU5kaUpXa1M4RnBXb1FhT0psZnB3OXorVHpmdGVSblh2R3BvMjNFbHBld3R6Ny8wZFc2NThOMXZmK3lrVy9QQ0xQSHZxbTZDa0tHYnFXUHYreitMVk5hRFNOYVE3V3BqN2xYL0hiVzBCSzRibktWSXAvemo4NTM5K212UE9PNWRGaXhaeDFGRkhBdkRuUC92Q3BLR2hBWURHeGtZZWV1Z0JmdkNESDNMMTFSL2dlOS83TGxkZStXNlVVaHg4OE1FQS9PSVh2K0F2Zi9rTFRVMk5ZNzRXcGhxVmpsNXBsdE5IbEFqOE1BdUVFTlZhNjhEM01pV2N2TUZPVkVvOHp6VE5HWVpoaEEyK2hmVG5zbmpLOHdYbk5QYkJtS1pKUzBzTGJXM3RKSk1KMHVrTXVWeU8xYXRYODh0ZlhzOU5OOTFFSXBHa3A2ZUhqbzRPZW5yNk1BeVRxNisrbXRiV1Z0Nys5a3M1NWhqZmxMcnJycnU0OTk2LzhxbFBmWUwrL2l6dDdSMXMzNzZkYkRiTHRtM2IyTDU5TzRWQ2dYUTZqV1ZaYUswNTZLQ0Q2T25wNWc5LytCTWJOMjZrcHFhR1ZDckZNODg4eTUvLy9HZE9QUEVra3NrcUxyamdJbjd5a3g5eCtPR0hzKysrdm5QNEgvOTRuUC84ejgrU3plYjQzdmUrVHpxZDVyTEwzaDQ2alB2Nit2ajJ0Ny9MejM3MnN4MHNRUCs4cHJOYmNHSVcwclBCTUgwMXczR3cwclYwekQ2Y1dPOEc1anozQzRwOTdSU0owWERyejhqTldVVFByQVhNT09vRXFsNThGdDNkNlVjZHEydXhYQWRsRnpGS1JhalFnR014aTNYcjFyRmt5UkxtekpuRFB2dnNnMUtLNTU1N2psLzg0aGY4L3ZlM3NXalJJcDUrK21scWEydFJTbEZkWGNlMTEzNmV0clkyM3YvK3F6and3QU1CYUcvZnprOSs4aE8rKzkzdmtVcWxNRTF6MnVYQkFDaFVXWG1SNkhLWG1MS3ZhWkZwbXMyTzQ3UXcwQWk4MHRrN3FnVXJkbmFoNzhCdlVsazViZUY3b0hQSlpQTG9wcWFtdjNxZUo3WFdXQWtMeTdRbzVvczRqb05wN3E0UXRVWnJRVlVxN1krc25ZQjkwRnFUU0NTSXgrTmxzMGJpdWc0ZEhSM2s4d1hxNitzd1RaTllMRVpWVlJXNVhJNVNxVVNoVUNTYnpiSmt5V0xtejU5UGYzK1daNTU1RnNPUXpKa3poLzcrTEVMNGthbHN0aC9ETUVrbWsyU3oyVUgrbWVycWFpekxwS3VyTzR5Q0NDR3diWnQ0UEVaTlRTMnU2N0orL1FZeW1UUkxsdXhGVFUwdHZiMjl2UGppaXhTTFJSb2JtOGpsc3ZUMTliTm8wVUxtenAyTEVJS05HemV5Y2VNbWFtdHJTQ1FTTzF5QXNpeFVsT2NNWEpaYWcybUJZU0hkQXNLeGNhV0ZrQWFpVk1DUUJsNVZHaVVsbGwxQzdjQlBwd2JWUG1rTXc4U3lyRUVtWkg5L1A3MjlmZFRYMTVVZDdINEd1ZU00U0Nrb0ZrdDBkWFV4ZS9ac0ZpMWFoQkNDbDE5K21jMmJOMU5mWDA4eW1SeDM0ZUtIMUYzeStkeHU5VUVxcFlqSDRwaHhYNEJxeno5QmhtR28xdGJXTitSeXVjZUFOSDRMQndlL1Jra3hnb0RabWZVelhnTEd4QmN3S2FBams4bThyYjYrL2tiWGRVR0RsYkF3VFpOQ3JvRHJ1cnZSdHAxNEFTT0VvRlFxNGJvRHlXQlNTaXpMQ3IrM3YrQWRiTnVQZEFTMVBxREo1d3NVQ2dWTTB5U2RUaU9Fb0ZBb0VJL0h3L1Q0UkNLQjUzazRqa01pa1FnRmRpQkliTnNlOHI0RCsrVTREdkY0bkZnc2htM2I1UE41SE1mQnNpeFNxVlNvQ1FVVUNnVUtoU0tnU1NhVEpKUEpWejhJbnV2WERCbldvSG9rdEFaVkZoRFNIUHljNnlDVVJoc1N0UGJMQVNyZk0zQS9tZ1B2R1h4ZlB4Vmk0Q1pybWlhbWFZYkh2MVFxb1RYRTQ3RkJIUlJMcFJMNWZBSFFwRktwMExTZENLYUtnTkZhWTVrV1Z0enlIYnllWDBaZ21SYmJPN1pmMXRQVGN6UFFDT1R4Qll6TEdBVE1lT2JCQkdhU01rMXpZYkFEUW9qd1JHdWxwNTFuZmloQjJEYklNTjNSTnBabFlsbG0rTHVQS1B0YVVvTzJEL3d0TU9EY0RjTGZsYTh2SjAyRjJ3eXR2SzdjcjdMZFRYVjE5YkI5cTJTbmhVb2x4ZzR1S3lGOG9SUCtLc28xUkFZS0FWSmdtYjZBMHd4a1JYdWVWMDdxNjhjdEZMRXNpM2c4VG1kbkY2YnBoNTZ6Mld5NG4xMWRYY1JpTWVycjYrbnI2ME5LU1RLWnBLK3ZuM1M2Q3N1eUtCUUs1ZWlibjR1VXkrVXdUWk5zTm90aEdOVFUxQXhLYkp4TytNZlhIOGltaFIrcTFrSmpHTVpDQmt5aWNhbXNIZzhmekxETVA5TTA5eHJZUW9Db2FBbXdaMFNvcHoyRlFpRVVXc0dnOVVENzhiVTJBOWYxVFRmVE5DbVZTbVZOcXl4bnlxSGh4c1ltZ2w2eGptUFQzNThsa1VpRW56RnYzanhLcFJMYnRtMWp4b3daMU5iVzB0UFRRMHRMQzZlZStnYjYrN09zV3JXS0JRc1cwTmJXUmo2ZjU2eXp6bUxyMWkzODg1OVBzZDkrKzlEZDdWZE5MMTY4cUZ6cG5xZXBxWUh6emp1WHhzWkd1cnQ3S0JZTDNIcnJiM2o5NjA4aW5jNXc3NzMza2txbHBtVktoVjh5QUVqZko2TzBRaUl4TFhOeHhXWkQxL2FvMVAzeGlpSUYwczREa3FacHpndnVoRktDRklaL0VXcUZJYWR2QkdsUHdYRmNGaTFhUkZOVEUwOC8vVFNMRmkwaUhvK3pmdjE2VE5QQU1Dd0toVHl6WnMwa21VeXdaY3RXRGpyb0lGcGJXMExuYVZkWE4vdnR0eDl6NXN6bXNjZit3WklsUzVnL2Z6NlBQUEpJcUZrSUlUamhoT041d3h0TzV0eHp6K2RyWC9zcWMrYk1ZY1dLZitHNkRzY2Z2NXhpc2NULy9kLy9jZUtKSjNENzdYZXdmUGx5emo3N2JMVDIrT0FIUDhUWlo1L05BUWNjd0ZWWHZaOHZmT0ZhdnZyVnIvSDN2OS9QbTk1MEhsLzcybjl6L2ZVMzBOUFR3d1VYWE1BaGh4ekNJWWNjekc5Kzgxc0toY0l3VFhLNkVPYkNpSUdaMVZwcExOT2FWKzQrR2RpY3UxV0RHWnFRSXdIUE1JeDZ3ekJtaEtwMjhDV21aOUJvajhPMmJXYk1tTUhCQng5TVMwc0xaNTk5TnV2V3JhT3Fxb29UVGpnQjBNVGpDZkw1SEhWMWRYUjJkckZzMlRLVVVzeWI1enVMWGRjbG55L1EyOXREVFUwMWp1TlFXMXRMVzFzcmh4eHlDUGw4amtLaFFHOXZIM2ZmZlErWFhQSlczdjN1ZDlIWTJNZ1RUenpKZ2dYejZlbnBvMUFvMHQzZGplZjV5WnVYWGZaMlpzNmN3V0dISGM3bGwxL0d0ZGRleTVvMWF6aisrT1c4NzMzdjlmM01wb0VRbE5zMjVIQWNoM3Z1dVpmSEhudU1SeDk5aFBlLy93UGNkTlBOekp3NWMxcEdPc05rdS9La3gwQkIwMW9qVFRsVFNsbnJlVjZlNGNKbFZGck1XQjBpUTBzRUhNTXdHb1VRc3lxYlRFMzNIakI3RXFXU3pZd1p6Y1JpTWJxN3U4bGswZ2poUjI2cXFxcW9yYTNETkEweW1RejkvZjMwOWZVU2kxazgrT0JEYk4yNkZjTXd5T1Z5eEdLK0x5YWJ6ZU41SGcwTjllVHplYlp0MjBaMWRUVUhIbmdnTDczMEVzODk5enlQUC80azMvdmVkOW13NFdXZWVlWVpaczZjUlg5L0g2dFdyV0xwMGlVY2M4elJ1SzZINTNtWVpveEVJb0ZsK2I2bVpETEpyMzUxUFc5NHd4czQ4Y1FUNk8zdEN6cnFVMTJkSVp2TmtVcWxPTys4YzFtelpnMUhIbmtrQng5OGNGZ1JQeDNSNkVHWjErQlhXZ3REekRRTW93bmZ1VnM1STJuVVdzeDRDaGlCcjhITUVFSTBoQnNFeVQzUkJJRnBnZFlhMDdRUVFoQ0x4ZmpkNzM1SFBKNmdVQ2p3MTcvZXgwTVBQY2pERHovQ3ZmZmV5NFlOTDVQUDUzbnd3WWR3WFlmbm4xL0Q1czFiZU9HRnRheGUvUXkxdFhVODlkUlRGQW9GL3ZXdmY1SEpWTlBWMVlWU21xZWUraGVsVW9sa01zRjk5LzJOUXFISVgvLzZWL3I3czJ6YXRBbUFRdzQ1bUd3Mnk1bzFMNkNVNGhlLytDVi8vZXQ5M0h2djNienZmZS9oMDUvK0RLMnRMVHoyMkQvNHlsZStTazlQRDY3ckVJOG5LQmFMM0hiYjdYemlFeDhENE1RVFQrS0tLOTVGZFhVMTU1eHpEdGxzYmxwcU1BR0JJeDBoRVlKZzRrZURaVmt6OFYwZDQySWlqU1ZNTGZEelgwejhWbnRKb0N1VHlWeFNYMS8vUzhkeC9Jc3dIc013SllWczBXLzBiZXpPS05MRWg2bW5PNzYyMFVBdWw2T25weWQwN0FiaDMyQk1xWDlqOFY4VE9JT1ZVamlPaTFHK0JvSlFmaktaSkovUFk5czJpeGN2cHFHaGdWV3JWcEZJSk1LeEcvWDE5WFIyZGhLUEo0akZMRnBiVzFtKy9EaXkyUnovK3RlL21EOS9QdDNkM2ZUMzkzUENDY2ZUMnRyRzZ0V3JXYng0TWJadDA5UFRRM056RTRWQ01SeW5HcHovcXFvcVNpVS9OeWFkVGxOVFUwTTJteDFYQis5VUNWTURvVU0rRm8vaGFjK2ZzS3JCakpsMGJ1KzhvcmUzOXlhZ0huK3NySTBmcXZZWVlpSk5kQjVNSUdBc0JnUk1aMTFkM1VlcXE2dS82amdPUWdwaWNRc3BEUXJaZ3UrdDNxMWg2a2pBakpVZ3RDeUVHSll6TXg3djdicHVtT3NUanJqeFBBcUZRbGdXNGJvdXNWaU0vdjUrcEpTazAybUt4U0t4V0F3aEJQMzkvV0VlVWRDMjFEQ004RDJDd3NkZ29YbWViMTdGWWpGYzF3M0QvZVA5M2FhU2dERk5rM2dpNXB0THJrWXBQM1dpcDZmblU1MmRuZDhBbXZCellXd0dFdTUyV2NDTTFjazd0Q2hLR29ZUmR1a1JRdmloTU9XMzZwdnVPVEI3QXNIaUMvNDkzdTl0R0Vhb3VReEVJdVdnWEtBZ1liRXloeWNJYlZmK3ZiSXVEQWlqUW9IR0ZXaGRsZjhPM25zNjMzeWtsSDdyQnEwUjRaTDBVd1ZNMDV6SjhNNTJvdzVWajhlS3I3VFRMQ25sbk1xVEl6SDhLdXBwZk1JaXhwZmRmWWZmRTFCYVZmaGgvSWhTV2NET3hiZEtndHpwTWZsaHhpSmdLajg0S0lxS0c0WXhLeHp3RkxUbVU5UDdqaEFSOFZwRFUxNmpnUWdRWWRIanpQSzg2c3JlTURCS0lUTmFBVFAwZzRNSVVscEsyUVFWWDBDS2FUc0RLU0xpTll2Mnk4VUVERnJOVXNwbXd6QXlqQnhKMm1VaE01NWhhdGN3akl4aEdMVmhnVjE1ZnlMdEpTSmlhdUdQTEJtY09sSTJrV29NdzZqR2p4eFY1c0tNaXJGb01HTEl2ejBwWlQxUU85UkVtdTVqWWlNaVhuTlVqQnl1WEp0Q2lGb2hSQzIrZ0JteDFuQlhHSzJBR2VvQUVvQXJwYXdYUWd3cUl4YmxMTUdJaUlpcFRibjdRY3d3akFhR20waVRLbUJnZU1oS0c0WlJIK3hvc0V0N3duRHhpSWpYSXBYck1vZ2lBWmltV2M4NFZRK094VVFhTm1MU01JeG1DTktRZFRoSklHaVRHUkVSTVhVWTZpc05NRTJ6bVpHdGxFbHg4bzRVUVpLQUdPVGdEYnUvUjlwTFJNUlVJK2h3b0xVR1dSNG5XMFpLV2NOd0pXS2dLOW91TUY1aGF2Q3pncXNIL2loQUNMUWE2R3dYRVJFeGRkRGx3V3VhZ2ZWWnpteXV4aThEZ3VIQm5GMWlOQUttVXBKVmZxZ3BwYXdmNkFQanQycndtNWhIV2t4RXhGUWlMTVVvVHhpb3BPeExEWHFiRGwzbnU3U1l4N000eUNxclZ2NWVDVDlQVUtNakt5a2lZcXBTc1RZRFIyODVUTDNqcHRLN3dGaDhNSU1jdkVLSXVKU3l0dEl6SGFoZ0VEbDVJeUttR3BWTzNzclZLYVdzS2FlYmpGU1BOT0UrbUtHMm1BUzBsRElocGF3Tk53bzBtS2pSZDBURWxLV3l0VzN3dXhDaVZrb1oxQ05WeW9oZDlzT00xUWNUZUptMWxESWhoTWlFSXpRQ3g1R09jbUVpSXFZcUk2MUxLV1hHTUl3RXcwZVl3Rzd3d1FqQUUwSWtoQkJoRzNaWmJqUVJPWGdqSXFZNEZTcERXWU9wS3EvbE1hZmdqOFZFcW55bzhnNGxCMGxFemJTYzd4c1JNUjBJb2toRGpaNnlzcEJnNUhLQlNjbURDZmVsL0ZNWmhwRU02cERDS21xaEl3MG1JbUlLTTlMNkxBZHNxaGd3a1ViTmFGdG1EdlVxSy95ZXZETDRTK0IvRVZPd1RDQVNlcnRBNVl6b29ZZE5WUHlZWXVkNEtoSTBRNThxakxRdlpSTkpsSjI4Z1lBWmRhbkFlSTJPMVpYK0YvK0pzaFl6eGcrSW1GeVU0K0tXU21qYmdYSy9XcVFzdDk3d0IzVnBLRmVCYUxSUy9rTnJNQXhrUElZWmp5RU1HWjM4MXdBN0NyNlUxM05sbUhwVWpNZm9XQUFscFV5SFVTT2hVY0tmZHh0Rmo2WXdRcUFjQnpkZlJOazJLRVdpT2tQTjdGbkVHdXRJekdnazBWQkhMSlBCckVxaVl4YW1sR2pBYzExMDBjYkw1aWoyOUZIYzNrbXB2Wk5TWnllNXRnNWMyMEhHTEl4NERDT1pRRWdKMGJVdzlkaEJ1YUFRb21ya1ozYU5YUlV3SXpXYUdxVEJoT0hwY25sVTBId3FZdXFndGNZcmxyQjcrNGtsNHRRc25FdnRQbnRUdmQ4UzBrc1drcHJaakZWZmk1Rk8rY1BGZGZsR052UTBWam9JSFFlM3A1OVNSeGZaVGR2SXJsMUg5N012MEx0MlBmbldkb2pGaUdYU1NHdTg3bWtSNDRGbW9CYXBzbVdEbERLSUlvMlVhRmRaL1BpS2pOVUhFMTV5Wlp0dFlBTlJVU1lReVpjcGc5MmZSUmRLcE9mTVpQNHBKOUIwM09IVUhMaU1XRk1qTWg1RGxZV1BaOXQ0dmYwN3IzVklpVWpHU1N4ZFNIci92ZEduSFkrWHpaUGJzSW51cDFhei9kRVZkRDM5UE1XZUhxeWFhb3g0UE5Kb3BoQktLTCtpdW54S0RNTklNbnpsVHBvUFpxUjdXWElrY3loby9oMnhHeEVDcHorTExoU3BYYllYczA0N2llYlhIME42cjRWb3k4VHA2OGZPNVdFczQxSTlEendQcjJUalVIWWdHcExVdmt1cE9leEE1bHgwTnIwcm42SGw3Z2RvZStBZjVOdTJZOVhWWU1aaWtSbTlPeG1TYUYvaDBnOFVodDNxNUEyUTViaDVlWTlFR0VXSzJIMElJWEJMSmV5T0xtcm16V0hCZTk3T3pITk9KVDUvTms0MlI2R3ZEKzE0RTZOaGFnMUs0ZlgwWWZmMkkyTVdOU2NjUmQzeFJ6TjN4ZE5zL3MwZjJYYnZBeFQ2c3NUcmF5TWZ6VzRpU0NRSkNwTXJsSUVFQTZiUXFCMjlZNTNzR1A2VVVpWXJueEZhSUhTa3Vld1cvTGd4eGE0ZVRDRlk4cllMbVArT2kwa3NubytUelpIYjNEcllpSjdvZGEwMXFtamp0blFnTEpQa0lmdXo3NkVITXVPTWs5bnc4NXZaL3RRcWpOb2FyR1FpMG1ZbW1iQ01aOGhTSFdJaWpmcWtqRWJBak5Sc1NqQ2dVcFgvSUFhYTJVUW0wdVFoL0NrT3BmYnQxTzYxaUwzZS93N3FUejBCejNISWJXdmQvZWZDZHZIYU9zRTB5Sng0RkFmc3Y0eHROLzJPRFRmK2ptS3hTTHl1TnRKa0poTmRvYVlJVUFPeUpCQXdRUzBTakVLVEdZODhHQUFwcFl3UGF0VVF0T0NMbkx5VFJ4QjI3dXhoenV1WHMvaWo3OE5hT0pkQ2U2ZnZJeEdEOUpiZGh3QmNENjkxTzdJcXhaeHIza1g2d0gxNThScy9wcitsbFZoOW5iK3ZrYUNaZVB3WU1GTDRkUUV3TUYyQWNWaTVZM1h5QmxlQUhQcGVZYk1wcGxiMjRuUkZTSUZiS0tMN2NpeTY1QUxtZitTOWVFQnhhM3Q1QTZia2dsWDlPZHhDaWZRcHgzUEFnbm04OExtdjBmR3YxY1JuTkVWK21VbGdvTlBCNE9pekVNSmtvRzBtZzU3Y0JjWnROcldVTWhRd1FvaUJsbndSRTQ0UUFpZGZSUFRuV1BLZXk1ajdpYXNwRlczc2ppNlUxdjVEVGRHSDlyT0hpNXUySWViUFp1K3ZmNDVaeHh4SnFhVU5IUlhLVGlqQmpWK01rT01rcGJRWTRtY2Q0ZWVyc3FzQ1prZHg4VUVhakNDS0lFMGFRdURhTnFLL240WHZ2cFQ2ZDExS3Zxc1hweStMcHdXZTRyWHgwSUpTeTNaVUpzT0N6MytjbWNjZGhkM2VFVjFHRTgwT1hCaGFhNVBoemFaMm1mR1lLb0FRUW1xdGd5YkJmdWhMUkpmR1pLQTlEOVhkeTd5M1hrRGRGWmRRNnV2SHkrVlJNS0M5dkZZZUNPeU9McnhNRmZNKzl6RWFEOTRmdDZzbktxU2NaTW8rR0ZNSVVXa2lqY3FiT201NU1JWmhtTU5Nb29yNXR4RVRnQkE0blYzTVBQNVlHdDcvTGtyNUl1U0xhQ0ZBdlZhUHU4RHI2TWFZMmN5OFQzMEUrNk9mSmR2UlFheTJKcnFXSm9LZ3lkUVEyVEhFUkJvMTQ5SDBHNjIxZEJ6SERKMjU1UitWODFZaXhoa2hjTHA3cU4xck1jMy9maFcyMG5oOU9Uek43dmVyalBXQndHblpqbHE4a0RrZmVCY3hLWEdMeFVpVG1RU0NKRm5YZFUydDlkRHc5QzVyTWVPaXdRZ2hwR21hUnRnaFN6Tk1Ja2FNSTBMZ0ZVdkVZekdhMzNVWjdveG1WRnQ3T1pGaG5PL3lmaE1UditqUk1BWVd1VktnUFAvejFBUk04TlRndG0zSE92NVlabHh3TGx0dS9EVzZPUmJkc01hWmdkbElBNDVlcFJTV1pSbFNTakdrSStYdU1aR0VFTUl3aktoTWRwTFFXcU43ZTJtOCtBS01ZNDdFNmVnYzV5bTlHaDJMWWFTU0NLWFJ0ZzM1QWpwZlFMdXVuNmtkaXlHcXFpQVJSOFJpZUo2SHp1VVFhc3hOMEFad1hFclpIRlVYbmt2dHF0VjB2L0FTVm4xdEZMb2VaM2JRMWM3QUQxT1A2V0NQUjZtQTFsb2JudWNacG1uNkY1OEliYVNJOFVZSTNMNCtxaGZNSjNudVdSVHpSVVRKR1hzU1hhRDhwcExJWkFyWjIwdnBpUlhZTDd4SWFkTlc3TzBkcUh3ZTRYbG9BY0swTUdxcVNjeWNpYlY0QWZGOWwyRXNXb2hubXVoc0ZteDdmRXlhL2p5NnFZRzZ0MXhFN2t0ZnczTWNwQm5keXlhS3dLM2h1cTZwbEJJTU5QNmU5RnFrOEVPMTF0THpQTU95ckZmYlBtS01hSzB4aWlXcXozNGozcXhacU8wZGpGVmpFRnFoNG5HTTJocmsxbTNrNy84VCtjZWZJTDloSTI2eGlEQU0zMFNTY2tDUWFRMmJOdE8vYXJYZnFLcXVsdFIrKzVJOFlUbXhvNC9FclVwRGQ0OXZTbzFwL3pSZVJ6Zm1FWWRUYzh5UmREejBDTEtoSWRKaUpoNVpmZ1NOdjJHU1RLU2g5UWhDU2lrTXc1QkRKd2dFa3gyanBMdnh3K3ZQVXIxc0tjYnh4MUhzN1VPcWN1UGowUkMwdmF5dXhrUlR1djJQOU45NUY0V1hOK0taQmtZNmpabXUycW5GWENxVktEejZEMklybmlKMThFRmtMamdQRGpvQXJ5K0xLSlZBamtISU9BNmUxaVRQT0ozRXF0WFl0bzJNYm1ZVFFsQkRhSnFtbEZJT1c5UHNCaWV2RmtJSTB6UkZKRVFtSGtONXBFNCtDYnUyRHIyOUEyK3Naa2hOTmNiMlRySy8vQlc5anp5S2lzVXhHK29Id29zN2VVNk5lQndqSGtkNWl0N0huNkM0K2htcUw3b0E4NXl6Y1JOSlJENC9KcE5KOS9ZaDl0K1AxS0VIVTNyd1lhaXJHL1Y3UlF4bUI4UFhEREVPSHZYeE1tYUYxdG9ZL0pkeGV1ZUlFTGRRSUQxbkR1S3d3eWxsODhpeUJqSXF0RWJYMTJPdFgwZi90NzlIMy9yMUdFMU5tS1k1SnZOREdCS3pzUkU3bjZmajU3K2dic3MyWXU5NU42VlVGVVovdjI5bWpZYVNReUV0c1k0Nm10ampUK0s0YnVTTEdTZEV4WCtxN0hMUldvKzZCMHdsWTNYeWhyYVoxbHBVMWpaRVllcHhSbXRrb1VEc29JTW9OYy9FNitvY2RVUmFhSVZYVjBkODQyYXkzL2cyL1Z1MllNNmNHVGpVeG1WZmpWUUtaVmwwMzNNUGRhNkx2UG9ET0lrVXNsRHdFd0ZIODdaOVdlU3laY1FXTHFTMGZqMHluUjc3dmtZQUZiMTV5K3RXYXkwck5KdmQwbkNxRXFHMUZuTEkzU25xQlROK2FNOGpWbFVGKysxSHlYWXdYRFhxbUpHWFNoSHY3YWYwMDUrU2EybkZhbTRlZjZlcDFrakxRamMxMGZQQUE5VFcxcURmZmpsdXNZVHd2RmQvL1VpVWJKeWFHb3o5OWtNKzl4eEVBbWJDMEZxTHNoWXpKc1pGd0NoL0xrNGtTU1lRYmRzWTgrYml6cHVQeXVYUWVoU1Z4aHEwSVJGU29uOTlDN2xubjBVMk5rNWNSRVpyaEdHZ2EyckkzZmtYVWdzV1V6ajJXR1J2eitqdWg2N0NjMTBTUzVlU3lHUW9PazdrN0owZ3hzdWZPbDROcDBhK1hDS2Y3N2loaTBYay9JVTQxYlY0aFFKaWxFcUFtODZRZnVvcENuLy9HNnE2R3VQVlh6STJ0RWJHWXBUeWVlSzMvUTVqOFJLS3RUV1loVHlqa1RKZU5vODNheDQwejRDdFd5QVNNQlBKcU1QVEFXTnQxeEF5VXFGanhQaWd0Y1lVQWpWbkxyWmg0VGt1cnFkMytXRWpNZko1OUgzM1ludWVQenBrY3I0QVJrME5oWTBia1E4L2lMYml1RXFNNmp0bzI2VllsVWJPbll1TStzV01PMEdpM2F0WUpEc3RjSFpGZ3htcEYrK29QalJpMTlDdVE2eTZHcmRwQnFXaWplbU5UbnE3NlNvU0sxZmd2dkE4Wktvbk5WbE5DSUZiVllWYThTVG0wY3NwWkRJWXBkS3V2NUZXYUdFUW56RVQ5Q2pWdUlnUkdlb3ZIY0ZNcXV4a3VWT3A0N3RxSXUzMEZSbjFneGsvaE91aTYydHdhK3B3QzBVWWhZRFJVaUlkRjJQMVN2TEZJcklxUGJuWnNGb2prMGxVYXl2eStlZXdqenVSV0w2QTN1WDdra1pyc0J1YU1Bd1RUK3VveW5vS00xb2ZUQ1E5SmhIaEtWUTZUU21aOG9mVGp5SSs3WmttaVk3dHFQWHJFS25VYmttMUYxTGlPRGJtaXk4Z2oxcE9TVXZrS0p6VnJ1TmhWZGVScXFyQzhid29IMlljcU95aC9RcnM4a1VUblpuWEFBSUZtUnBzSTRieTNGM3VWU3NBVzBneXJXM29uaDR3ZDU5ajFJdkZTTFMzSW51NktjVVRHTGE3Nis5aDIzanhCREpWQmQzZEVBbVlLY3U0bkpseXpIejRFNUhtT2k0SURTcVJ4RkVnUEQycW5pK2VNTkJkSGVBNEVJdE53Rjd1SEVZc2h0ZmJnK3J1d1pzNVoxVG1udWQ0dUVZTUZZc2pSaE91ajVnMHhrUEFDQ0dFSHJGc0lUS2t4ZzF0eFgwQjQ0NVN3R2lCMTllSGRoM0VaRVdQUmtJYXFFSUIrdnR3bXVlZzNGMy9MaTRlampSUXh0aktHaUlHMkFuemFGUk1tRzRabEF0TTFJN3ZTUWdCdHZBbkJBaFA3L0tpMG9EbmFZVHRNQ1drdnZMOHJGdzFPbUdwUElXakJVb0taSFNGalN1VmthU0tjTFVPbjk1RnhqcDRMZHdSS2VVSWJiRkcrZTRSdzlBYVhFK0RweEdqRURDdVYyNmRNUVdXb3dBOHBYRmQ3UXZNWGNRRFhBV01UejFleEJES0xWYkc1VUlacjVhWlNnaWhvbllORTRYQThEeVU4a0NwVWZrZGxGSjRoZ2xpTExQMnhnbkR3RFVObFBJWW9kL0lxK0lLQlo1YlVmc2JNZDVJS2JVUVFnOHBlTnhseHNVSEE3NlFHZkhKS0VkaDdBakFLWUZ5QUJkMmNWa0pBSzhFcVpSZnU3TTdjMGVVaDBna2NST3BpdSt6aXdpQmNJcEkxeDE3UDV5SUVkZW9sTkliajdVN1hzV095dk04enl5SEN5dXQ0a2lyR1E4RW9waEhlQTRhRjBZVE9YR0tPRFUxYU5QeTIxaU90aS9MR05HT2kyaXV3YXRLSWR3UzZORUlHQk5wRjVCMkNTMWxaQ1NOTXdLQnB6eFAreFcxWXpxODQrWGsxVXFwUVJJdmFKVVp0Y3NjTzFwSVJMWWYweWxRRWdhRzJyVVVlUTBJeHlaZlY0ZE9WNk83T3hHN0tYZEVPaVhzdWdic2RCVWlseHVkc0JRYVdjaWlDM21JaGxtTW1VRUtnVC9EQk5kMVBUWFlmaDNWSWg3dGJhenl3NFFRUXBtbTZVYUNaR0pRUW1JVmNzUUxXWlRRZmczT0xqNE10MGdoazhHWk13ZFoyRDFEekxSU3hNd1l4WG56c0xYQzlKeFJmUmNoTkxIK1huU2g0RGNranhnVFFlUklvZkR3OExTSFlSaXVsSExNR3N4NDZNbWliQ0U1UWtSRDd5Y0NiUnFZK1FKV1h6Y1kyamNyZHZFaFBCdFhlT1FXTHlFZWo2TWRaL0svaUcxRFl5TjlDeFpBS1ZzMjkzYnhnWWRRTm9tZVRwVHJSWFZJRTRCRzR5blAwY09iRHUzeTZoNHZRMXdENFJXcnRSNVF1eUtCTTNaTUU1WE5ZbloyZ0NuUjJodlZRK1N6OUN4WUFBc1hJZ3VGU1YyY0dvZ1ZpeFQzMlpmK3Vsb011emlxNzZDMEFxZEVyTE5qdC9tUnBoTkNpR0U2U2xsUmNLZUNEeVlvMi9ZSUJFekY3b3kwOHhHN2poQUN4MU5VZFd6SGNFc28xS2lLQkEwUDhxa3F1bDkzS0EwYk5wQ2RyQ0ZtUWlDeVdXTE56V3pkZno5VU1lK2JSNk80Tmp4aFVGV3dNZHZiOFNJQk0yWUN0NFpHRDFVR2JJSHdOTnBrREdyQ2FNL1EwRXREVWFIQkFKSG1NczZvZUl4WWF5dXhiQjlhanM1TVFybklmRCt0aXhiZ0hIUWc4WHgrVWs2VGRsd1NTdE45N0RIMFZsZGhGbk13R3ZOSXVXQkpVaDF0bU4zZHFLakljY3dFL3BjUk1uZ2R6VEFOWnBkdkNic2lZSFowTFFwQWE2MTNnMUcvNTZBdEM2T3prK3J0N1doRGxBZlA3K0pEZXhpZWcrdVcySExjVVJoejV5Q3oyUWsxbGJUV3hQSjUzTU5leDlaOTlrSVVzcjZ6ZGhUN3IvRVFCbFMxYk1QTjVxSjJtZU9CR041b3Fsemk0ekpnb1l5YThZZ2lBU2l0S3hNYXl0TUdJL05vM0JCUzR1VUxwRGR1UWhnYU5Zcm9DMlUvaGxuSTAxY1ZaOXVwSnhHdnFVWDA5WTk2bE1pT2QxaWdsTUxxejhJQis3TGh4S053M1JLbWE0OXF2OUVlU2tJeTIwZHE0MlpjMDR3dXJ6RXlLT3FyTlVJTHBKWUlMZEJLT3d6UDZOUTcrUGNPR1pjb0VyNkFzWU04R0sxQjY0clpTSkc1TkhhRW9HU2FKRi9lUkZWZkw4b0V0RE82Qnk1R2Z5K2R6WFcwbkhNS2licGF6TzQrLzRJYmoxVXJCTHBrayt6TEl2YmZsdzJuTEtlSWkxWE1vN1U3dW4xV0R0b1NWTGUwWXJTMG9YZG5SZmcwUXZncVRFVTFZemdYeWNZWE1MczlUQTIraVZRWThwZW9vbnFja1lrNGRIUlJ2MzRqbU1MM1NZenlJWlNMMGRkRFIxTU5tOTkwR25MdlJjU3llU2phWTl0SnJSSDlPVkpLVTF4K0JPdE9QWVlDTG1ZdWg5YmVxUGZYRXg0bWlwcVhObUNYU2dnamN2Q09Dd0lRT214eFc5SDB1OGc0cUFaajhaSU5VcGVVVXZsaFQ4c29palRlMkZwVHMyWWR5U1Z6S0VpTjZZMiszRThBWnE2ZjdreUN3cG5MbWJGNkpwblZhMUdkUGRpbWdVakVkdG8vbzVWQ0ZrcFlob0czWUE1dGgrMVArNEtaNkZJSjB5MW5IbzkyRXFVQUhZdFIxOUpHZk1ObThvbDRkRm1OSnlNY3pPSHJlWFJuYnp6QzFPRHZZcWpCYUsxUmdCRTEvaDUzdkVRY05yZlN2RzR6RzVmTmcvd1lOUTdBTE9Rb0dnWWJEOXViMmtVenFWMnprZFRMVzZHckQrMTZmajhaaVo5M0VpUlRhb1ZRR29udmJwT0pHTjdpdVhRdG1VL1hrcm1VTEFPWnkyS01RM2EzaDhCQTBmVHNTNVQ2c29oMGFzenZHZUhqdXpVRWFEM0lKNk8xcmhRd296Nko0MVpOWFZhcEt0Qm9aRFE2ZHB5UlVsSkVVN1B5QmFybU5aQXpKRlpaQ0l3RjAvWFFmVFk5S1l1ZW8vY2xmZUJDVWkyZFZMVjFZM2IyWXVaTENNY0ZyNXc5YXhoNE1ST251Z3EzcVk3c2pEcHlNK3NvbWdZVVM1aWw4V3Vrb0JJeFptM2JqcmxtQTZWRWZOenMrb2dCQWpkR2hROG1XTStUbm1pbkdlNU5Ga3FwUWlnTi9SMUVsRTJrb1BBeFloelFHcDJNNDdaME1QT1pEYXcvWWdtZTYrMXlFNm9kWVpZOGRLbEExalRKTG15Q2hVMVlyaUpSY256L2pGTCtLVFlzdkdTTVVzekFrMld0cGxURUxQaCt3Zkh3dXdrTnJpbEpPamFOLzF4RHNXUWpNN3RuSXNKMEpRakZoSXBBK1lkU0toQXdROWY2TGgzOGNUT1JsRkk1WDVCUWpsS1hkenlxcGg1M2hCU1U0aVpWVDYramFYWXQ3Yk15R0xsUnREMFlBUTBnOEx2OWx6T2JYS0RmRUpDeEJud3lTb095a1VXTkVjemdHcFlNT2phVUFCR0xNWHZWSnZTR2JhaFVZdHdFYVVTWklJS2tHSFR5dE5ZNUJnOWFtM1FmVE9VSHl2SU9oWWp5NU1sSWM1a0FOTWk0UlRGWG9Qbnh0UlRPT0loK1UyTTQ0MlNXNk1FL0pleHFqNnR4MlFlVnRwaTV0WnZVUDllU2p4bElRMGJheXpnVHRsUVpJaitVVWxrWSsrank4UnE4SnJYV2hVSDlZUEREMUZHRWVvTFFvRklKdk0zdHpIMThIV3VPM3d2UDh6QkdPVloyU3FFMVh0SWtrN2RwZm13dHhWSVJXWldNaE1zNE04aXBHNmlmSXZ4N2tYRklZeG10RHlib05CNDhwTmE2cUxYMkFBTk5tTFFscEVCUGg0dCtDaUlBcHlwRzR0bU5MTWtrZVBHZ1pyeWlnK0h4bWs0UDhDeEpsYWRZK1BjWEtiVjFvYW9pMDJpaUdCU0VFYUhGNFhtZUZ3aVl5blVPdTZneWpJY0dvd0ZES1ZYUVdwZUVFS21SZkM2UkwyWmlFSVpCMFZJa24zaUpCWlpnMHo2MWVBVUhZOHc1bUxzQkRWNU1rbEN3OE5HTnVCdGE4TkpSenN1RU1uSU9US21jQjJNd0J1RUM0OWN5MDFCS0ZjdWU1NVJDaGNJazhzRk1NRm9qWWhhRmtrMzFveTh4bjhWczJxY2FyK0Q2bWd5N3NjSDNycURCaXd0U1NyRGdzVTJvTlZ0eDB2SG8rcGxnd21wcUxTcE5wR0k1VEcyRW00MlNYUlV3UXlWWUlOME1mSnN0cDdXdXI5d3EwbHdtQWEwUjhaZ3ZaQjVaejE3T2ZOYnZYNDFudXhoVFpOYmFLNkhRNkpSQnBpU1ovOGdtMUxvMlg3akl5SWMzNFFUbGdtSkFJZEJhNThzQ3B0SkVxbVNuejhwNFJKR0NQSmlTVWlvbnkwMkF0TkpoWFVOMEY1b0VBaUhqdUNUK3NaRWx2YzFzZTEwOTJiaENGQlV5ZEp0TkxUd0pKRXdhdDVlWThYZ2JYbnNQYmpwRzFINTFjaGlwSUZrcGxWVksyZmdDSnNoL21MUXc5VWpTVENxbGJLMTF6OEFmZmE5MGxNazdpV2lOc0F5S1FtRTkxOHI4bmdJZGh6VFNQc1BBS3prWTdoU3BEZFArOWFIaWdqZ21NOVprcVYzWlJyRllRcVZpVTJJWDl3U0dkcHdNUXRWS3FSNmxWSWtCRGFhU1NYWHlCdGtSUW10dGE2MzdCbWtyMFdUUHlVZURNQ1JPbFVDMjlES2pwMFI2bnpyYWxpVEpKVFY0R3NNdWE3MlRyU0VJZ1JhZ0VnSWhKVTJkaW9abk81QWJ1c21iR3BHeWlNclhKcGVoQ29DVUVxMTFYN2xkUTZ6ODUyQ2Q3eFluYi9DaHJsS3FML3lqMW1oVk5wR0kvRENUalVDZ3F5d0t0azFpUlN1TE5tZm9XVmJGMW1id0VzcFBrL1VNUnBnb1BpRW9BNUFlQ0tocWgrWk5EcG1YYzlpRklrN0NSQmlSU2JRN0VIS2d0Q2RBYTUzRk40MWlERTVMMldYR0s1TVhmQUhUTzlCMHF1eURpZXFSZGg4YWhHVmdXeHFqTzB2bTRTd0xxdzJxRHB0RFN4TjB4LzBHNHBRMGFEbXV3a2FMc3VOUUtvZ2JKQnpCekdLS3FuVjVTcysxWWJtYWZFd2lxcXd4SktKSGpKWmdQV3BSTVFHa2pPZDVQUXllNlR2cDFkUkQ4MkRBNzJyWEgvNmxiR2RMSVNNemFUY2pFS2k0Z1VvSUVpV04rVmdiODZ2ajFEWktjczJTL2dhRGt1WGhTdTFYUzN1QWtnd2Z5cW9IdmV2Z3A3US9GTTdRZmpNc0liRThRVG9uU1c5d1NMZTV4THY3OFlvTzBqSnhFOEpQbm9zRXkyN2pGY29FK2hoc0Z1MjJQSmpLTEQrdGxQSUZqQ2cvcFgwVlRDTEhwYm8yWW13SXdMTUVPZTJpZTByRXRrTnFuVVZqWFFLblR0SlRvMUVaZzBJUzhuR0ZrbXJnaFRzaXZQd0VsaWRKNXlSV1hoUHZjOGwwZzlIakl2cEtGUEhJeGlRaUZ2UTV4UGZKUktiejdrV0FVQ0lVSjhMdnBaeGxlQWJ2cUJoTkhzd09QMWdwMVJWdXFQRjMyc0Eza1ZSa0l1MU9Lbys5RUFJWnQvRGlHczlUMEpWRnRrT3pNREdTSm5ZUzdLUkF4ZjJIRjlONEZqaGlJTkpnSURCZE1GeUJVZFJJRzR5Q1E3d0laa0ZqMnc2dTFMZ202SVJFU2dzWlpYaFBHY0xaOFFqZlRLN0E4N3l1a1Y3Q0tJVE9XSDB3bFEvaGVWNXY1YlBobDRndW90M0tVTUVlbkE4aEJCZ0NESW1PKyswNHRiS1JmUkRycVdnK1JEa1p1RkpJVVhZTWhxZlZGejIyQVNVRFJKVnZHZzhNbDlqeCtZK3VqOTNEc09Mazh1OUtxVjZHMXh0T3VwT1hJUjlzQkZHa0lFbHFoR2x4RVpQSWpqVEdvWXZaMzB5QUVBZ0ptRU82TXdSeGhPR2ZNT3k1b1prSkE2YnhRQ0FpMkszSzNZaUV6T1FUWGg4VmgxMXJUVmxScUt4REd2V0oyZFZ5N0IwMW9OR0FxWlRxQm5LRC9pcDJmS0ZIVEM1RHphU0JuOFBQVHpET0FnSHN3RTh2OEo5N3BYeW55a3p1eXJFMkVWT0R5a3plb0V5Z0hFVWFxbnhVcnZtZFh0Q2o4Y0dJSWI4SEQwTnJuZFZhOXdzaHFwUldhT1ZyTURLYUlUeGw4TzN1d093WlFiQU1Nb09HbFBLUEVFV3FWTElIRlZYcVN1MGwwR3JMb2RId2I4TzFxWWpKb3pLbEpFQnIzVitPQnIrU0JqTXBQcGloSDJnb3BmSktxVnhveTVVVjdjQ1pGS25CazhkSWZwZUFvY0lsTkpHQzN5dTJHL21aNGVoQTRKU2xseGFWQWtyN1dzdXJuUC9vK3BoY2doQjEyUEM3SEVIeVBDOW8xVENra2VhdU14clZZcWpqSjlnQjAvTzhmTmxNR3RneS9LZU9McDdkeEk3RWdnak4xd0VUSnF4UEtmOTc0UGNkdlBIUWJjdC9IeXpneEd1aVk4UWV4YUJ6TkVqQTlDaWxDZ3hXUGtidDdCMnI3VElvaWxTdVIrb01ueXpQV3BFaU1wRjJLenZVWm9iN1pJYiszZit0TEVsQ2dSSnNVakVlZU9pMk8zalBWOUtzSWlZUGdWOFhwZ04xczR4U3FyUGNxbUZvRkdsVWpHWGxWMmIzQmI0WjEvTzh0a3JiVG1tRk1LS1dEVk9OVnpzZkl0aEdWRjVkd3lSTWhSazFOQmc5Y0ZjYytwbVJrTm45RFBqaUFpdkk5NDk1bnRlR244czlFUGJ6R1pXUUdhMkFHWm82SEFnWXBaVHFIRmFQSkNMN2Vpb3o0Z0lQemxkbEtKbEswVEtZc1BmUG9LMGpwaUk2bUJzZlR1a1VvUS9OODd4T0JvYmVEOVZnZG5rQmo5WUhNL1QzSUc5WFYyYnpobjhWRlY4bTRyWERXR1JFSkYrbU5LRnZUY3R5QUZBSFBwaE9LdFl6WTRnZ3dkaE5wR0ZtMHJBMFkxMFJEb3NrekpSa1JNVlM2MkV5NHBVTWNqOTZWSEdHZ3plTlR2bVVJNXo0VVE3NTZiSUJvclhHZGQwdUJtc3ZzT1BUL3FxTWgvZDFVQzZNNTNsZFlScTZ4dmZCUkcwenB3d2o1VDZNZFAzbzh2OTI5cXdOcVJxb2tDK0RjaXgyOE5wSUNrMDJnN3JaQmVmS3orTHRZdVJ4SmFOaU5BSm1xRzFXYVNJWm51ZDFsQnZXVUZrcU1LaitKV0pTR1pKSVZmRjc1ZDhaL3Jmd3QvSy85SkRIQ05lZTFnTU93K0ZDelArZ29mc1RNZm5zSU1rdVYvYkJXQXcza1NxRE9Udk5lUHBnTkg0dVRHL1ltMWVES2c5TEg2bHpWc1R1eFpjVEZkZVExdUhmQWdkdm9Na0UveDUwVzlQbDE1UnpuSUp6cTRkbDZPcW9QR0NLSVlSQTZJRmVNT1ViUXZjTzZwQXFTOU1telFjejBvY1o1WDZlWGVGMGdmS1ZhUWdqOHNGTUpydXdvblZaV2xSZVJZRjFqbFk3MUpQRHZ3K2RXNjBxdDltUmNObVI5aE14R1F3dGRDdzdlTHNxQkV6RnM2Tm52TWFXaEJwTWVlUkJqNVIraFp4V2VsRHZpWWpKWWFndUc3WklyUHdKWVJKZUlHUkdGQ1JDdjJJemJ2K3p4QkFuNzVCdGhwaEZVUjNTN2lQd2lRYWxQRUdLUVRtTE53ZWtHRDZ1WkZRbmE2d3RNNGRxelliVzJsWkt0VmZhZUo3MndHQ1BFakJDQ0J6SG9WZ3NVaXFWY0YzL2ZCbUdRU3dXSTVGSUVJdkZYdVZkeHNaUW4xZG93bFFXSGU1Z0FxY2U4b3Ntdk10UktCUXBsWW9vVDZIUmc3NlRhWnF2NkdNWjJJZngrcFlSdTRvUUFtU2dvUTZjZjgvenRnTTJrQUdDa1gxRC9UQzd4SGdXT3dZM1RlVjVYdXVBQ3VaL0NTRWtlMExGUVBsRTBkR3hIY013bVQ5L1Bnc1hMcUN4c1JFcEpiMjlmV3pldkptWFgzNlpqbzRPR2hvYVNDYVR2cTlxQWhqSnNSNDZZQ3NLRWwreENCR1EwcUNucjVlKzNsN216WnZIc21WN2s4bGtFRUtReldiWnRtMGJtemR2eGpSTkdoc2JoNzNucTJrcmtUWXpPV2l0dys0R1F1RTd6TXB5dzNYZHlpemVNUmM2d3VnRlRHVWthV2h6WU9GNVhtdXdvZDg2VS9qbEFrenZTRklnUUFxRlBLZWNjZ29YWC94bVRqNzVEVFEyTmd6YXpuRWNIbnJvWWY3MHB6L3h1OS85bnJhMk5wcWJteWR0a1kza2dIM0ZjeUlFMjFxMk1YL2VQRDcrSHgvaC9Bc3ZZTUg4K1lNMmFXL2Z6bC91L0RPMzNIb3JqLzNqSHpRMU5tSloxazU5cDBpNFRDNEN2MC8yb0c0SFF1QzZiZ3RETEd1R2F6Rzc5bGs3ZTNLSFhJQUMzMEZzbFI4SklBbFVBWjNwZFByOHVycTZud1ptUVR3Ung3SXM4dGs4bnZKMlkzOFlqZGFDVktvS3d6REc5Y0tXVXRMUjBVRXFWY1dYdnZRRkxydnNzdkM1N2R1MzA5TFNnbEthcHFaRzVzeVpFejczajMvOGc0OTg1S09zWExtS2VmUG1UdGhpMjFXaEh2aG5wSlJzMjdhTkF3ODhrT3V2L3lXTEZpMENZT1hLbGJTMnRpS2x3ZXpac3pqZ2dBUEMxMzdzb3gvanA5ZjluSmt6Wjd6cTUrNHB3c1UzTDEzeStmeHUzUStsRkpacEVVdkU4SlNIY24waFk1b21IUjBkNyszcjY3c2RhQUN5UUFFbzRadExEa08wbXAwNWQrTTZWYUM4QTVibmVaMlY5cjdTS3N3Y3JIUXlUaGVrbEhSMmRwSEpaTGpsbHBzNCt1aWpBZmp6bi8vQ0wzLzVDMWF2ZnBhZW5oNjAxbVF5MVN4WnNvUzN2ZTFpTHIvOGNvNCsrbWp1dWVjdXpqdnZUVHp4eEJQTW1UTm5Rc3dsdlFOZlM4Q0lsVzFhMDl2Ynk1dzVjN2psbHB1Wk8zY09Uenp4QkovODVQL2pxYWVld3ZNOGhCREU0M0VPUHZnZ3Jybm1HczQ5OXh5Ky9vMnZzM0hUSnU2OTk2ODBOemU5Nmo1RlRDN0RrdXpLRG5mWGRWOHBCMlpVakxYWXNmTDM0R0VwcGJxMDFqMWhiOTdnUXBxbWtZTmlzWWpudWZ6Z0I5OExoY3RuUHZNWkxybmtVdTY4OHkvMDlmV1JUQ1pKcFZJVWl3VWVmdmdoM3Z2ZXEzakhPOTVKTnBzbG5VNXowMDAzc0hqeFlycTZ1Z1lKQWFVVW51Y04ranlsRktWU2lWd3VSNkZRSFBiOEsxSE8xc1J4SEVxbEVzVmlFZGQxaDU5UXJWRkswZGZYeDJXWFhzTGN1WE40YWUxYUxudjc1VHp5NktNME5qUXdlOVlzWnMyY1NYV21tbi84NDNIZSt0YTM4ZjN2L3dDQUF3ODhFTWR4QnUxenBlQU0zdCsyYlhLNVBJVkN3ZCtQbmJ3K3lndUNRcUZJTHBjcmZ3L3ZGVit2bEFxZDdaWHY0KzlEYnBmMzRiWEtTQkZkcFZSdk9ZdlhZc2VtMGFRN2VVZlNZRXpYZGJ1VlVtMUNpTnJLamFkandhTVFncmEyTnE2ODhrck9PdXNzQUw3ODVhL3dwUzk5aGZuejU1TklKQVpkc0tacGtrcWxjRjJYRzIrOENkTzArSi8vK1Jrelo4N2tFNS80T085OTcvdklaRElZaHArSzREZ09ydXVHcit2bzZFQXBSVk5USXpVMU5SUUtSVG82T3NubHN0VFhOeENQeDBiVWdLU1UyTFpOWjJjWHNaaEZWVlVWcVZRS0lRUzl2WDIwdDdkVFgxOVBLcFZDS1JWR3dXcHJhemx1K1hJQWJyanBadGF0MzhEaXhZc0d2YmRwR3N5ZE81ZisvbjYrL2UzdjB0M2R6ZDEzMzBOOWZYMjRUUzZYdzdadE1wa01pVVNDam81T1BNK2pvYUdlNXVZbUhNZWxvNk9Eam81T3Fxc3paREtaWVlJekVMdzlQVDJVU2lXcXE2dXBxNnNsbVV5U3orZnA2dW9pbTgxU1UxTVRmby9LMXdiSDBuRWMwdWswWFYxZE9JNURZMk1qTTJZMFk5c09IUjBkZEhaMlVsZFhSeUtSbUREbisrNWtvQTJILzU4VUVxMTFxK2Q1M2ZneW9kSVVHclgvQmNadmRHeWxzOWRRU3ZWcnJkdWxsTXVnbkF1RFJocHkybWt4aFVLQjJ0cGFycnJxZlFDc1dMR0NMMy81Szh5Wk0yZVljQW5RV21PYUpnc1hMdVNHRzI3Z3ROTk80UzF2ZVFzWFgveG1ycnZ1T3A1OTlqbXFxMnNvRlBKOCtNTWY0ckRERHVQVG4vNE1qei8rT0NlZGRCTHZldGNWdlBHTloxQmJXMHR2YngvLyt0ZEtmdi83MzNQcnJiZGkyMGt5bWZTZ2hlR2JjSjFvRFJkZWVBR25uWFlLeHgxM0hEVTFOUmlHd1RQUFBNTnR0OTNHTGJmOGhyYTJObWJPbUlHbkZGcHJrc2trTTJiT0FLQzdxd3REeW1CQStyRHZWRjFkVGFsVTRtdGYrem9ORFEyazB5a2N4NlZRS1BBZi8vRVIwdWswLy8zZlgyUERoZzBjZnZqaHZQdmQ3K0tOYnp5RDV1Wm1TcVVTVHorOW1ydnV1b3RmL2VvR3RtN2R5cXhac3dhWmRxN3IwdHJheW9FSEhzaUZGMTdBS2FlY3d0NTdMeVdWU3RIZjM4K3FWYXU0Kys1N3VmNzZHOWkrZlR2TnpjMmhrT3JwNmVIS0s2L2tsRk5PNWt0ZitncjMzWGNmUnh4eEJGZGUrUzdPT3V0c1pzeG9KcGZMOGZUVHE3bmpqanY0MWErdXAxZ3NVbHRiTzYyRWpCRCs1QWlsVmJpQ3l6ZWZkcy96K3ZGbGdzczRhQzh3L2hxTUJtUzVNM21IYVpvZ3ltcSs5bndCTTQwUVF0RGQzYzNwcDUvR3Z2dnVBOEIxMS8wYzI3WkpwOU92ZUdFR1FpYVJTSERkZFQvbm9vdmVqR21hbkhycWFUejIyT09rMDJrOFQzSFVVVWR4NG9rbmNNY2RSNURKWkxqMzNyc0h2VTk5ZlQxdmVNUEp2T0VOSjNQTU1jZnc0UTkvdVB5K2NiVDJjMVRhMnRySVpESjgvL3ZmNDl4enp3bGYyOUhSUVR3ZTU2aWpqdUtvbzQ3aW9vc3U0dDN2ZmkvcjE2OWp6dXc1U0NuSlpyTnMyclNKdmZmZW02TmU5enErN3hUcDYrc25uYTRhNWt2elBBL1ROSmsxYTFaWklIaW9zcUI2eTFzdVp1N2N1ZnorOTdleGRPa1M3cjc3cnZCMXBWS1JSQ0xCa1VjZXdaRkhIc0ZGRjEzSXU5LzlIcDUrK21ubXpwMGJtbGN0TGExY2NjVTcrTy8vL2lycGREcDh2ZXU2VkZkWGMvenh4M1A4OGNkejVwbG44STUzdkROTUEvQThqMUtweE90ZWR5Z25uWFFTanovK0JKMmRIVHp4eEQ4R0hjdnE2bXFXTHordS9Gak9sVmUraDF3dVJ5cVZtaFkzeGFBUERMSjgzaXFtT1packNBdEFOWU45TUdQU1lNYXpvMTJsRmpPb3N4MGFoQkpJT2IwYWY3dXVTeUtSNG9RVFRnQ2dzN09USjU5OGtycTZ1cDI2NjJtdHFhK3Y1NWxubm1IbHlwVUFISDc0WVNRU2NWelhSUWhCVDA4UEFCZGM4Q2J1dWVjdTFxOWZ6OVZYZjVDVFR6NkY0NDgva1VzdXVaUkhIbmtVZ0xlLy9WS3V2UEpLMnR1M2g4NzB2cjQrMHVrMHYvM3RiemozM0hQbzZPamt3eC8rZHc0OTlEQ09QdnBZRGovOENNNC8vd0tlZXVwZkhINzQ0ZnpmLzkxS1hWMGRYZDFkV0paRlgxOGZkOTk5RHdCdnZlenRmUHJUbjhhMlM2eGZ2NTZXbGxaeXVkd3d2OFZRSDFJOEhxZXZ6NThxZlBubGwvR1h2L3labDE1NmlYZS8rejBjYzh4eEhIWFVNUngvL0lsODRRdGZKSnZOc2Q5KyszSEhIYjhmNUpQcTdPemt3Z3ZmeEE5LytBUFM2VFFQUFBBQWwxOStCY3VYSDgvUlJ4L0x5U2Vmd3RlKzluVmMxK1hZWTQvbFJ6LzZVU2hZd0w5TEI4Znk5YTgvaVljZmZvak96azQrK3RHUGNkcHBaN0I4K1FtODZVMFhoZC8xdlBQTzVlTWYveGhkWGQzVDVucUZnWkIwcGRpbzZHVG5NTHhWUThDb0RzSjQxaUpWSnR2aGVkNldRUnVXUjhlT3BGNi9WaWtXaXl4WU1KY1RUL1FGek5xMWEybHZieWNlaisvMGU4UmlNWHA3KzFpOWVqVUE4K2ZQbzZtcEdkdTJCMjEzMGtrbjhjQUREM0xDQ1NmeDR4Ly9sTldyVi9QaWl5L3lmLy8zTzk3MHBndjV4eitlQU9BOTc3bVNXYk5ta00vblVFcVJ6V2I1N0dmL2t5T1BQSUp0MjdaeDdybm44ZDN2ZnBlV2x0YlFTZnJuUC8rRmM4ODlqNVVyVjdGa3lSSys4cFd2a00vblVjcWpvYUdCWC8vNlZwNTQ0Z2tNMCtTLy91dS8rUE9mLzhRWHYvZ0Z6am5uTEdiUG5rMnBWS0t0clQxY3dFTWpWVkpLbFBKTmxVc3Z2WVFISG5pQTQ0NDdubC8rOGxlOC9QTExkSFoyOGZ6enovTzV6MzJXaXk5K0MxMWRYVFExTmZQVnIzNGxkRW9YaXlVdXZQQkNBRzYrK1JiT09lYzhmdjNyVzNqcHBYVzB0cmF5Y3VWS1B2R0pqL1B4ajM4Q2dGTlBQWVdUVHo2Wjd1N3VjRCtDL1RyeXlDTjU2YVdYT09LSW8vajJ0Ny9MVTA4OXhicDE2N2p6emp1NTRJSUx1ZlBPT3dHNDZxcjNzZmZlUzhobWMwd1hLbHVuVkJhR3VLNGJyTmZLK0pKaWpBbDM0OTBQSnRnWjAzWGRsdURMaEwxNWhaeFdNNUpzMjZhaG9aNEZDeFlBME5IUlNiRllEQjIwTzR1VWt1M2J0d08rbXA1T1Z3MkxkcXhmdjU1M3ZldmQ5UFgxczJUSlh0VFYxVkZkWFYyK3kzZnk3VzkvRzRCRml4Wng2S0dIa012bDZldnI0NUJERHVIZDczNFhBSi84NUtkNDdMRkhXYnAwYjJwcXFzUDAvc1dMRjdGdFd3dGYrdEtYQWJqa2tyZHk0SUVIMHRQVFN6S1pwRmdzY3ZubDcrU09PLzRBK0F2MFU1LzZKRGZkZENOMzMzMFh0OTU2Q3gvNzJIK3daTWtTdG0xcklaZkxEVG9HUWNRSVlNT0dEVnh4eGJ2STUvTXNXYklYbVV5R1pESkpRME1EZSsyMWxMLzg1VTYrL09XdkFIRG1tVy9rcUtPT3BLZW5oOXJhR202ODhTWis5clAvNGRwclAwOHNGbVB4NHNWVVYxZVRTcVZvYW1waTVzelozSHp6cjNubW1XY0JPUGJZWThMUHI2UzF0WlZMTDMwN1c3ZHVaY21TdmFpdnJ5ZVR5YkI0OFNLVVVuei8rejlFYTAxVlZSVm5uSEVHeFdKaFd0d1VCeVc1Vm1ndlFKQmtaeko0SFkrWjhad3FVQ2xrWXA3bmJkZGFlK0IvTWExODVXWTZaZlA2YWRjbXB1bTdzanpQQ3lNd3U0S1VBczhMYXBVa1VvcGh0VG9QUHZnUTdlM3R6Smd4T09OWEtVVkRRd1BQUGZjc25aMytRSWNGQ3hiaWVSNTlmWDJjZlBMckFYamlpU2U0NFlicmljVVN0TGEyMHRMU1FtdHJLNjJ0cld6YnRnM1EvUEdQZitTNTU1NEQ0S2lqanFCWUxJWHYzOW5aeVR2ZmVRVVhYWFF4Ly91L3YyVERoZzBBMU5mWHNYejVjdjd6UHovRHZmZmV6WmUrOUVWYzE2V3pzM09Ra0RFTS94ajk0aGUvWXRPbXpjeWVQWHRZMk5vd0RPYk1tY2Z0dDkvQnRtMHRBQngvL0hMeStUelYxZFU4OHNnamZPUWovMEdwVktLbXBvYmUzbDQ2T3p0cGEydGp5NWF0Yk4vZVFWdmJOcDU2YWdVQVRVMU40Ym1wNU1rbi84bkxMMjlrenB3NXc0NWxjM016TDczMEV1dlhyd2Znc01NT3c3S3NhZVBvRmJLOEJobHdubXV0UGRkMXR6TThCMmJNUHBqeHJrVUtjMkU4eitzc053QnZEbnFGQ1BTME1wRk0weVNYeTlQVDAwczZuU2FkVGhPUHgwTm41ODRRMUM2bDB4a0FzdGs4aGNKd0xjaXlyREQwT3ZRNXd6QndISmZPemk0YUd2eFF0ZXQ2SkpOSjl0dHZQd0I2ZTN1NS9QSjNVRmRYTitKK3VLNUxxV1FUWEVzTEZ5NE1zNTBESVdQYkR2ZmQ5MWYrOXJlLzBkall5TEpsZTNQUVFRZHg5TkZIYzhZWnAxTlZWY1dIUG5RTlM1WXM0VjN2ZXZjZ1RTYlFYUHY2ZW9uSFl6dU1yaVdUU2JxNnVubjAwVWU1NktJTFdiSmtDYWxVQ3R1MnFhbXBJUmFMMGRIUlNUcGR4ZXpaczVrL2Z6NXo1c3ltb2FHUmREcUYxbkQ0NFVlODRqRzNMSE9IOVY5QnRLcXJxNHU5OXRxTGVEdytyYTdaU3ZNb3FFc3F0Mm5vQm1LTWsyQUpHQThCTTlUWkcyVHo5aXFsdGtvcG02R3N4Y0MwaWlURjR3bTJidDNLVTA4OXhkeTVjMWk4ZUJHWlREWFpiUDlPKzJFOHp5TVdpN0hYWG5zQjBOYldTbWRuSi9HNGhlc09EalcvRXI0NTZ2L2JGd3ErZ0FrRXlxbW5uc3FwcDU2NjA5OHQwRGdDbEZLWXBrRnpjMU9ZblBiSUk0L3gxNy8raldReXlkS2xTN24yMnM5eXhobG5jTlpaWi9MKzkxL0YxNy8ramJEd01iaE1ZckhZSzJwNHdVSnViL2ROeGt5bXVud3NOWjJkblZSVlZmSGU5MTdKMldlZkhXcG5yL1plUTNtbEZxNkJKaFc0SXFhTDVnTGx3bFlKV3Fpdy9VWTVQMmlMNHpnOWpCeWlIcE9RR1dzZXpJNU1KS0dVeW51ZXQ5a3dqRVBCajdzclBJU2NQaU5NNHZFWTI3YTE4UGUvLzUxenp6Mkh4WXNYczg4K3kvajczLzlPSnBQWnFlL1kzOS9QbkRsek9QSkkvNjc3ekRQUDBOdmJ5K3paczNIZDRpN3R6eXN0M050dnY0Ty8vT1V2MU5UVXZzTHJ3WFU5UVBQa2swOVNVMU1kdG1pb1hKUkNDR0t4V0ZqRTZib3VxMVk5emNVWHY0Mjc3dm96eHg1N0RCZGVlQUhYWGZjekhNY2xIaDlvU3pIVXR6VHlkOUNZcGk5UVBVK2hOWFIxOVRCMzdoeCs4cE1mczN6NWNRQTg5dGcvZU95eHgxaTNiajNidDdmVDFkVkZXMXM3WC8zcWw4T2t4OUV5SFV6NFlRaVFvbXgrNjRGejZYbmVadTIzdWEzQ2I5ZXdvN1c5eTR5WEJoTjhlS1Z6cU9SNTNyYndSSlg5MGRLUTA2by9ieUlSNStHSEg2Wlk5SE01M3ZyV2kvbmpILytFNTcxNlVXY1FmbjM3Mjk5T1E0Ty9XUC8ydDcrVFNDVEh2RitHWVpETlp1bnM3QUJneTVZdFhIZmRUOGxrYWhpcHJhb28xNG9WQ3I1RGM4YU1HVlJYVjVQTjV1anE2cUsydG9hcXFxb1I3K2ltYWJKZ3dYeGVlR0VOdDkxMkc4Y2Vld3l6WjgrbXFhbUpyVnUzbHJPTC9jc2ltVXp1bEpCWnNHQWhBQjBkMitucjY4V3lZdnpnQjk5bitmTGpXTDkrUGU5KzkzdDQ5TkZIa1ZKaVdSWlNHaWpsMGRmWEUwYXpJZ1lJbTc1SmYweEo1YzJ2N09DMThRVk1aYnJKbU0yazhiQlhncmo1MEFLcElYMWhRSHY0ZldHbWlRWURVRnRieHpQUFBNZnZmdmQ3QUM2NjZDTE9QZmNjWG41NTR5dXE0a0dKd2RLbFMvbklSLzRkOEIyeDk5OS9QM1YxdFdQZUw4TXdjUnlIbFN0WEFYNEc3K0xGUzZpcXFtTFdySm5NbkRsanlHTW1OVFUxekpremgzbno1bUVZQnJsY2psbXpadkRWcjM2WkdUTm0wTjdlL29vM0JTbU4wT2ZpdWk2dTY0WkNOZ2hUSDNQTTBjUmlzVUYxU3BYSHBMdTdtL256NTNQY2NjY0NzR3JWMCtSeS9SeHh4T0djZE5LSkFQeS8vL2NaL3Y3M3Z6SjM3bHptelp2SGpCa3p3dEtKNXVhWjdMWFhrakVmditsR1pWZkpvTjh5aEQ2bkZvWTdkNFBmeDZRRmpIZVl1dEp1azQ3amJBbzNLbmUycXd4ZFR3Y01RMUpWbGVLYjMvd1dQVDA5eEdJeGZ2U2pIM0RjY2NleWZ2MTY4dm44b0VVWk9CRmZmbmtqZFhWMS9Qem5QMlBPbk5rQWZPbExYNkZRS08xU0hzMHJVVnRieXozMzNFdC9mNVpaczJaeDFWWHZvN1cxbFh3K1AwaTdDakoyVzF0YitlcFh2OHl0dDk1Q1BCNWo4K1pObkhUU1NYemdBKy9uSzEvNU1vWmgwdExTTWt6N0RFb1JZckU0cDU5K09nQXZ2TENHdHJZMllySGd1L2puKyt5enorYk1NOS9JeXkrdlIrdUJpSnVVa2x6TzE1YXV1dXA5cE5OcCt2cjYrZnZmNzhjd0Jzd3hyVFhyMXEyanNiRjVXTXVOelpzM2NmTEpyK2ZvbzQ4YWwrTTMzUmlhQXhQODI3YnR6WXc4cW1TM2F6QWo3VXdnK1dLZTUyM1RXcGY4OW94QmIxNkpJWGN0VDJRcW83V21vYUdCNTU5L252ZS8vd01Bekpremh6Lzg0UTZ1dXVvcWxGSnMyYktGdHJZMjJ0cmEyYnAxS3owOXZaeHh4dW5jY2NkdDRaMzZzNSs5bHZ2dSsrdXdNUFJZU0tmVHZQRENDM3oxcTE4RjRLTWYvUTgrODVuUDBOM2R3OGFObThyNzFNYW1UWnZvN2UzbDg1Ky9sb3N2dnBqRER6K2NaREtGWVpnOC8vd2F3RTljKysxdmY4MmhoeDRTaHJZclg2K1U0dHZmL2dhdmYvMUpBUHp5bHpjTXlna1N3ditwbE9MR0cyL2duSFBPWTlPbXplSDdiTnk0aWE2dWJqNzN1Yzl5NVpYdkJ1QTczL2tPTDd5d2hycTZPdHJhMnNydkl6ajU1SlBwNkdpbnRiVzFIS1p1WjkyNmRaeDQ0b244ei8vOEhNOExHaW1OeTJHY05vU04rTXNhVFBsR1gvSThieXZESTBqallpWk5SSmc2eVA0TGNtRTZoQkJ6Z2x3WXJSWENFR2hIRDRySHY5YVpPM2N1dDkxMkI1ZGRkamsvK2NsUHFLbXA1bnZmK3c0Zi92Q0h1UC8rKzhORk9HUEdESTQ2NmlnT1AveXc4TFdmK3RULzR6dmYrUjR6Wjg0WUVoSVZvWVAwbGZyM0J1SEdRUE9KeFdLaGx0SFkyTWgzdi9zOTl0cHJMLzd0MzY3Z2kxLzhQT2VmZnk2Lys5M3YyYkpsSzFKSzVzK2Z4MFVYWGNSQkJ4MEl3RWMvK2pFMmJIaVpCUXNXOE1BREQvQ3hqMzJDcjMvOXY4dlp4UGR6MTExMzgrU1RUOUxWMVZWdUN6cVBjODg5aDRVTEZ3THdQLy96QzI2NTVkY1Z3bEtFRi9kWHYvcmZYSHp4eGZ6aEQ3Znpwei9keVgzMzNVZHZieC9OemMyODZVM25oZTB1N3J6enozenptOStpdnI2ZWVEek9paFZQY2Z2dGQzRCsrZWZ4My8vOUZlcnE2cmozM251d2JZZlpzMmR4K3VtbjgyLy9kZ1gzM25zZjdlM3RYSHJwSmNOOFlNRXhqTWZqcjZoRkJ6MXVBQktKeEU1ZUFWTWZLU1ZhYUNwellKUlNIYTdyZHVBTG1LR1p1MU1pVEEwamU1eGpydXYydWE2N3pUVE5PVW9wUDVLa0ZWTEthU1ZjZ2dVK1o4NXNicnZ0ZGw1NmFSMVhYLzBCTHJyb1FoWXZYalNzdlVIQW4vNzBKMzc0d3gveHdBTVBNSFBtekZBd1FHQksyUlNMZmlTcFVDaUVEWjZHWWhoRytYbi9wdFBmM3g5MjdVOGtFdFRXMXZLUmovd0g2OWF0NDVwclBzaGhoeDNHWVljZE51eDlYbnJwSmI3eGpXOXc4ODIvcHJHeEVjTXdhR2hvNEtjLy9TbWJOMi9tNnF2ZnovTGx5em5qak5NNTQ0elRoNzIrdlgwN1AvclJqL25oRDM5SVhWMHRzVmdzckFVS3J0Vk5telp6d2drbmN2dnR2K2ZzczgvaTdMTUhSM3VVVXZ6b1J6L2hpMS84TDVMSlZGaG9tRWdrK1BqSFAwRWlrZUNNTTA3bms1LzhPSi84NU1jSHZmYTIyMjduYlc5N0crOS8vd2U0OU5KTHlHUXlvVk5hS1JWMmt3c2FzU2VUdzUzcFFnaHMydzU5UkwyOXZhTktucHlTQkowTUtvb2NiZHZlNXJwdUg3NkFHU21DTkxhUEhHWEx6RW9rdnFDeXlqdVp3Qjk3a0FLNm1wcWF2aG1QeDkvaXVpN1NrQ1JTQ2JUUzVMTUZqRW5QaVptNGxwa0JRV1RJZFYwT1B2aGdqanp5Q0pZdFcwWmpZMlBveEh6cHBaZDQ0b2tuV2JseUpZN2owTlRVTk95T3FyV21XQ3l3MzM3Nzg0WTNuTXpkZDkvTml5KytOT0lkMWQrMnlBa25uTURTcFV1NC9mWTc2Tzd1RHUvQ1VrcEtwUklkSFIwc1hicVU0NDlmemlHSEhFSkRRd05LS2JadGErR3BwMWJ3eUNPUHNuWHJWcHFiQi93YlFaaTZyYTJObXBvYURqL2NGMDRMRml5a3BxWWF6L05vYjIvam1XZWU1YkhISG1QdDJoZXByNjhQZTZrNGpvT1Vrai8rOFE3MjIyOC9ycjMyODN6Kzg5Y3llL1pjVGozMVZKWXZQNDRaTTJaUUtwVll1M1l0OTk5L1A0OC8vZ1NaVEdaUVJicVVrdTd1SHFUMFRhVGpqanMyN1A3MzRvc3Zjdi85OS9QSUk0OFNqOGVZTldzMkYxNTRBV3ZXdk1CRER6MUVJcEdnVkNxeGFORWlUai85TkI1KytHRldyWHFhcXFxcUVZOWxxVlRpeUNPUDVMRERYc2VkZC82WkxWdTJqSGtDeEc1dm1ha2hsb3o1aVhXT3dsTWVsbVdSeStWdWJXdHIreWhRaDk4aU13OFVHV2lWNlRKODhwWC9sanV4ZnNaTHdCZ01GekJWd1BhNnVyb1BwZFBwVHdZWFdqenBaMGJtKy9OaEc4M0pZK0lGREF3NGNyUFpMUDM5MlhKRmNRd1E1U0pHSFM2Z1YycU1iUmdHUFQwOWRIWjIwZGpZUUUxTnpZamQ2d0xuWFh2N2RncUZQRE5uemlRZWp3OXJ1S1MxSnBmTDBkdmJpK3Q2eE9OeHRQYTd5c1ZpTVdwcWFrZ21reU9hRDBJSVNxVVMvZjM5NUhJNXBKVEVZbjc0MmJaTG1LWkpkWFVOVlZXcFFXYmVVQUh6MmM5K2ptOTg0MXMwTnpmUjNkMU5xV1NUU01URExudVpURFUxTmRVam5wOUF1K2p1N3FaWUxJWXAvSjZueUdUUzFOVFVZRmtXaFVLQjF0WldNcGtNalkyTmVKNkhZUmowOS9lemZmdDI2dXJxcUt1cmU4VmoyZG5aU1Y5Zkg0Mk5qWU0wb2RHeU93Vk1hRUluNG1nMHl2VXRDY3UwNk8zdC9lL096czd2QW8xQWpnRUJZK01MR0Q4eGFnUnRaako2OG9hZnhjaCtHT0c2N3RiS0hRcStySkQrblhFNnBXRUhCTm1nTlRVMTFOVFVoQlhCNE4rSkszMERyL1RkUGM4amsvRzd1d1cvNytqenROYmxTSXNmYlJtNklJTFBxYXFxQ3ZOWmdtME13eGdrNkhlVXhoK0x4V2hvYUFnMW4xMTUvVWp2TldQR2pQRFlDQ0dHRlVpTzlEckxzc0lKREpXZkh4QmtSczh2VHowSWpwbm5lYVJTcWJBdzlkV09aU0NFNExXZnpSdjBnUkZTREF4Q0pDeHlETmJuMEREMW9MY1k3V2VQWjZsQThPOUJKUVBsTW5CWENHRUdGMFhRdG1GWGVzbStsaEZDN0hSdDBtUXhWTkJOOXVzRFJudHNoZ3FraUZkR1NqbTRrcm9zWDhvaDZxREljZHdhVFlXZk85WTNxR0JvdUZyakM1aHRTcW1LT1VuK05NQkFjNWx1Mmt2RWNQeHNXOStIc2JPemtpTEdGeUg5b0lyU0E3T1FQTTlyZFJ4bkd5TVhPWTVMSkdraUV1MVV4Y055WGJmRDg3eVdnWXpPY204WVl4cDQ1U05lbGFEOHdMYjlhRkpmWDkrMDZnbjBta0VPUkpDQ0pEdlA4MXJMbzBxQ1J0L2pyc1dNaDk0K3RBTlc1WTZaV3V0dTEzVTNtNmJwVi9NcDBNclhZT1NlTUV0MkQ4YzBUVnpYNWVNZi93Ujc3YlVYOTkvL0FETm16TmpkdTdYSG9MVS9OVUNXYTVDRUhzaWNkbDEzRTc1anR4RS9halNTNWpKMFpOWXVNWjVPM3VCbnBSWWpBZTE1M3Jvd1JWbjVDWGRTeUduVmZDcGl4NlJTS1o1OGNnVVBQZlR3b0JCMnhPUWdLbnBoVjY0MzI3YlhNWGdXZGFBZ1ZHYnhqb254N2djVC9LemNVZE4xM1pmRGpjc1p2ZEtTQ0VOTW55U21uV1NvLzJGbm1sTlZKdCtCMzZyVE1BeE0wd3d2bUZLcE5PaHZRd2xtSzFXKzUyUWRkNlVVdGJVMWFEM1EvbUZIMjhHcjk3NkoySGtHRlRreU9JdlhkZDJORExUSjNGRWQwbTczd1ZReWtpL0djbDEzaTliYUNXcVNWTG5JelpER0hxZkJhSzNKWm5PVVNxV3cxVUF3MmlONGZuQTJyNTg3NFhrZVhWMWR1SzdMbkRselNLZlQ1WXBsajF3dXgrelpzMG1uMC9UMDlJUlZ6SlYzck1DNUdpendycTR1aXNWU1JiV3pvbGdzRGhOT1E1UC9odjYrTTlzRW54dE1JQWoySWRoT1NrbGZYeCtPNHlDRW9MKy9mOFFnd0VqSGFHYy9mMDhsTUpGOERXWkFzQ3VsWE1keHRnQnhSdmE5akF2akdUdXRGQ3lWQWladTIzYXJVbXFyRUdKaEVJZlhRb2R4K1QwQngzRklKQks4Ly8xWHNjOCsrMUFvRlBqVG4rNmtzYkdCMy8zdU5scGFXcGd4WXdhNVhCNnQvYmFZOFhpYyt2b0dycjc2S3ViT25jdjk5ei9BZGRmOW5EZSs4V0NlZSs1NTFxL2ZFRTVCUE9TUWcxbTc5a1hTNlRUZDNkMTBkM2VIbWJRelo4N2t5aXZmemEyMzNzcTJiUzNFNDNGKzhwTWZjOHN0dC9EUVF3OWpHQWFlNXpGMzdseTZ1cnJvN3U2bXJxNE8yN2I5WWVtV2hXRVlZZHAvSXBFZ2w4dFZDQStKYVJxa1VpbnkrVHhhNjdCWmVLQnRKWk5KOXQ5L2Y3WnQyMVllQXFmRGFaVTlQVDBzVzdZc0hNNzJtOS84aHV1dnY1RlVLb2tRZnJWNlBsOEkreFlIb2Uxa01rbHZieSttYVdJWUJvbEVJdno4cXFvcTh2bDhxTGxaVnF5Y0kyTlJLcFdtM1VDMUhlSDNnQkhvb0lXZDFnZy9SV1NyNHppdERLNUJHaXBveG94eDdiWFg3dFNHbi8vODUxL3BhVkYrQkZtOUVqKzJicFlmL2FsVTZrVFROQmNxclJCU1lGZ0c2SUZNejhsRFlGbXhTVmZEQXkydHJhMmRONzd4alR6KytPUGNmZmM5dk9NZGwzUFdXV2RTWFozaHFhZFdjUGJaWjNIeHhXK21wNmVIdFd0ZjVPaWpqK0tFRTA3Z205LzhGaGRmZkRHSlJKeXRXN2VSeldZNTdyamorT0FIUDBCOWZRTnIxNzVBTEJibk85LzVOc2xra2kxYnR2TCs5NytQcFV1WHNIbnpaczQ0NDNSV3JWckZ1blhyZU4zclhzYzExMXpOeG8yYnVQLytCempubkxQNHdBYyt3SXdaelNpbCtjUW5QazViV3p0TGxpemhra3ZlUmt0TEs2V1N6WlZYdnB1bFM1Znk4c3N2Yzk1NTUzTDU1WmV4YU5FaUxyamdUYVJTU1o1N2JnMlhYbm9KcjMvOTYzbisrVFVjY2NRUmZQakRIMkxSb29Xc1c3ZU82Ni8vRmNsa2lvNk83VngrK1R0WXVIQWhMN3p3QWtKSS91dS92c2cvLzdtQ2UrKzlMMHpYdi9iYXozTHd3UWV4YXRVcVRqdnRGSzY4OGtyMjJtc1JaNTExRnMzTnpXemN1SkYzdmV2ZnVQamlOMlBiSmJxNnVyam1tbXM0NktBRGVmNzU1em5wcEpPNDVwb1BVbGRYaDJGSWxpM2JtMEtod0Vrbm5jUUxMN3d3T0Rka0VzNi8xbXJFUGpnVGlkWWFLMjc1bisrQktpZUJ1cTc3ZEc5djc2L3gxNm1IbjdVYlpPNTY3TVJrZ1oyUkhlT2QvVFhVUk5MNGt4NXpudWR0RHVvNUFrZHZrQUc2SjVoSmdjcS9hdFVxbm50dURTdFdyS0NscFFVaEJFOCsrVThPT3VnZ1FIRGlpY2VUeStWNTV6dmZ3Uk5QckVCcnhlYk5tN25ubnJ0WnVIQVJ4eHh6RkhWMWRlVWlRRjlnTlRRMHNIejVjdGF2WDgvcTFhdDUrdW1uaWNmanVLN0h1ZWVlUTA5UEQ1czNiOGJ6UER6UDQvVFRUMlAxNnRYc3ZmZFNqanp5Q0pZdlgwNTdlenV4V0l4ampqa2FJUVIxZGJXOCtjMXZKcGZMY2Y3NTU1UEw1Vmk0Y0FINzdyc1BXaXNPT2VRUXRtN2R4c2tudjU3SEgzK0NRdzg5bE5yYU9vNDk5aGc4VDNIZWVlZXljT0ZDV2x2YjJHZWZmVGo0NElONS9QRW5lUFRSUnpqa2tFTTQ0NHpUK1BHUGY0cHQyeXhkdWhTQTY2NjdqbzZPRG9RUVhIZWRQL3VwdnI2ZXQ3emxZcFlzMll1dFc3ZHl6REhIOHZUVHF6ajQ0QU9SVW5EQUFRZHcrKzEzY05aWloxRXNGdW5wNmVHMDAwNmx2WDA3aHgxMkdPdldyZVBnZ3cvR3NtSTBOemVIZFdHLytjMXZhRzV1M3IwWHhRUVRaTTFMSWFIY2owbWhRRUM1VjFNV1A0STByc2wxbFl6WGJYd2tCKzhnYjdSdDJ5OVZ0czlVbmtKSUdmcGg5aFNTeVdTNSsxb3ROVFhWMkxiTmIzN3pHOXJiZlkwaEhrK3dldlZxbm4zMk9TekxGOEF6Wjg3azhNT1A1STF2UElPbm4xNU5jM01UVHo3NUpGSUs5dHByTWRkZmZ6MjF0YlhZdGsxSFJ3ZmJ0Mi9ub0lNT1FHdE5YMTgvVFUyTlZGVlY0VGdPKysyM0wwY2NjUVFyVmp6RjNudnZ6WUlGODNueHhaYzQ3cmpqK00xdmZndkFIWGZjUVc5dkx3ME45YXhjdVpMbm4zK2VlZlBtVWlnVWVQenhKOGpuYzNSM2QzUGZmWDlsMDZiTi9PMXZmNmRRS0xCNDhhS3l3SHlTclZ1MzRua2VmL3pqSDJscGFTR1ZTckZ0MjFhVVVxeGN1WXFISDM2RXM4OCtpOGJHUmw1NjZTWGk4VGh2ZmV0YmVjTWIzc0E3M3ZFT3RJWTFhMTZncGFXVldiTm0wZGZYenozMzNNdTZkZXY1MjkvdUo1L1BVMTlmVDF0YkcydldQSS9qMkx6dWRZY2hwVjlITkgvK2ZMcTd1L2pkNzM1SFBsOWczYnAxZEhWMWNmNzU1M1BISFg4Z2xVcE4rNXNhRE5SV0tlMzdQalcrZThKMjdKY1l5T25kNGJvZDYrZVBsNGtFZzAyazRHSGkyM2lPYVpxMXlXVHlUVUd6RzhNME1DMER6L0h3MUt2M3J4MC9kbytKVkVsVGs3K29PanM3YVdwcVlzT0dsNm12citQQkJ4L0U4endPT09BQS92V3ZmL0hpaXkraHRlRHd3dy9qdlBQT1pjV0tGZnppRjc5azVzeVo1SEo1Rml4WVNDeG0wZHZiU3phYjVibm5ucU91cm81RER6MlVscFlXNXMrZlIwdExDNnRXUFUycFZHTE5talhzdmZmZWRIVjFjKzIxbjZXL1A4ZWlSWXN3REpQcTZnelpiSlo4dmtCUFR5K1BQLzRFRFEyTjdMWFhYcXhZc1lLSEgzNllndzgrQ005emVlS0pmMkthSm0xdHJjUmlNYlpzMlVJeW1lVHV1KytocWFtSkdUTm04T2lqajZHMVp2djI3VmlXeWRxMWE2bXBxZUdRUXc2aHE2dUxCUXNXMHRiV3hzcVZxMmh2OXh0eHZlTWRsM1A4OGNleFlzVlQzSGZmZlh6NHc5ZVF5V1M0NFlZYnFhcEtzVzFiQzdGWWpMYTJOa3FsRXRsc2psTlBQWVZERGptVUJ4OThpTFZyMTNMb29ZZlMxdGJLcWxWUGs4L24yTDU5Tzhsa2tuLzk2MStrVWlrT1B2Z2dmdkNESDVCS3BTYjFHdGdkSmxMZzV6SXRFMDk1ZU9XSXJTbE5zdjNaWDlpMnZRbS9PRGtvYkF4TXBKMmE2TGd6c21NOHFxbkRUUmhjVlIxbm9HMkRIWS9IRnpRMk50NnV0VTRyVDJFbExPTEpPS1Zja1ZMSm5xUVU4c21wcG40bGdzeld3SEZhTEJiRE9VYXU2eEtMV1RRMU5kUGUzbzVwbXFHUEtwbE0wdDdlVGxWVkZXMXRiVngrK2VXY2RkWWIyYmF0aFhRNnpRYytjRFcxdGJWSUtjbGtNblIxZFZGZlgwODJtOFh6dkxEQUVBVEZZb0ZVS2tWcmF4dkhINytjcTYvK0FHdlh2c0JlZXkzaGd4KzhCc2R4eXVhcnBLbXBrYTZ1THJMWkxETm0rQTJ4Z25uUlpWc2UwelJSeXEvS3ptUXlWRmRud3ZuWXBtbmhlVzU0SncyY3I0Mk5qV3pmdmgybEZJbEVJdHpmUkNMTzl1MGRhSzFwYW1xaVZMTHA3Ky9Ec3F3d2FjOFhibTJjZGRaWkhIUE0wWHp2ZTk4UCsrWTBOalpTS0JRb0ZvdElhV0NhL2o3MjlmWHhudmRjQ2NCUGYzb2RUVTFOazM3ZUo3T2F1cHlwU3l3V3cwcVkvdlhsdUNEQkVFYTJ2YVg5VGNWU2NTUCtlczNqdDJvSXFxaGRCZ1RORHBtc2RnM2hKZ3pXV3VKQXN2eXdwSlJ5eG93Wk4wZ3BEL0k4RDlNeVNhUVNPQ1dIWXI2SWFZMmN2ekcrN0g0QkE0UHpXZ0wvVTJVSU9jaU5DWTc1UUNXMmdSQ0V3K1pQT3VsRW1wcWF1T3V1dStucDZRa1QyUFNBSTIrUUk3T3lEVVB3V1k3amNPU1JSN0wvL3Z0eDExMTNzMlhMbHRCOENIdzJwbWtpcFF6RHlKVzlZb2IrRElSWlpZNU81WGNMOWkwUVlwVmFST1ZyZ1RDa1BmVHpnbTJEc2JOdGJXM2hlKzNvTzJ1dG1UVnJGcjI5dmZUMzkyTloxaVNjNlFGMlI3dUdRSGpMbVBRdEJjZERtQUxscWRVdFcxdmVydnhPN0I0RExScUtETlprWG5HQjdBNEJFelNmQ2dSTTBCc21BZlExTlRWOVBSNlBYeFRjaGVMSk9Hakk5ZWNtYVNEYjFCQXdZeVZZeUg3T2kwZHRiYzJvc21PRHhkZlQwME9wVktLNnVucUhvMG1tR2tJSUhNZkJkVjJTeWVTcm5zdEFjNVJTN3BaTTRza1dNSUZBVGlRU1lJQm5sMjhXbGtteFVQeGRhMnZyUjRGcWZLRVNhQytCQmhNSW5qRUxtTW1JSWdXUGt1dTZHNEkyaFVFL0VkTXdCL1dHaVhoMWd1aEFmWDE5K0xmUkxKamdBcW10clIzVCsrd09Rdi9DRGpLWFI5bys2QWI0V3ZtT1l5Rk1zSk1pYkZVTElJWEVjWndOREcrUE9TR0pkaFBScmlINDk5REthc054bkpmQ0RjcWg2cUEzekd0Vm00aUltS3BVMWlDaENadE1sVXFsbC9EWC9rZ0pkakJGQlV6QVVLa1lxRnB4eDNIV2E2M3pVa28wR2srNWFLR1JodHdqY21FaUlpWVR3L0RYR1FxMEptalpVSEJkZHoyK0M2TlNDUmlwRm1uTVRHUXQwdEJIMG5YZFZzL3pOb1dWMWRwWDVReHBoTkkxSWlKaWZCQkJPeFFGNEp0TW51ZHRkQnluQlQvNHNpTUI4NXJTWUlLSDZYbGV2K000YTBJQjQ1VXJxdzA1TUZJaElpSml6QVI5cnlzcnFLV1UyTGE5eHZPOGZnYWFURTJZL3dVbVJzREFqak1EWGRkMUJ3Uk11VWV2TlB5R09IdUM4eTBpWXFLcDdIczl0SnJjY1p3MStIa3VNTHdIekxqZjRTZmFSQXA4TUdFREt0dTJYd3cyOXZNaUZGSklETEhudFc2SWlKZ1FkRVVWOVJBQk04VEJxeGs4bHVRMVlTTEJ5RHZzQVRISGNkWXBwYnFISlpFWjBvOHNqYjhRallqWTQ1Q0JnMWRUbWFUWVk5djJTL2g1YXBXNUx1UGFvbUhRZm96M0c1YlprUllUZDExM3ExTHE1WUZHUjZCUW9SOG1jdlpHUkl3UlFkaURWM3NEL2hmWGRWOTJYWGNiZzV0TXZhWk1KQmdjNWhvcVpDeWxWTlp4bkxWaFVwMm5VWjdmWUVtK1FqdkZpSWlJVnljWUNTU2w5S3VuSzdvR09vNnpWaW5WejhBY3BKRk1vaW52NUIwcGlqVG9TN2l1K3l6NDJvclMvcHhjMzlGcmhCbUhFUkVSbzBBUnRzZ0VYK0JVOUhKK3BtTExDUTlSdzhRSW1LQy94RWloYWdVa2JOdGVHMndaTkFFWEVrVFpEeE01ZWlNaWRoMi83NHZmTVRLWWcxVFprcmJzZjBrd2ZGMVdydGR4WFh3VFdmd3prcER4OEh2MGJ2SThiMnY0VlpTL2tXSElDYkFDSXlMMkRDck5JUURLL3BkeWNleldVcW4wTXI2QW1SVC9DMHlzaVZUNTc4cEh6SFhkTnRkMTF3YUQxL3pDUjcrTUgwRmtKa1ZFaklLZ0NOWXdETFRTQk1wTDJjRzcxblhkTm5ZOGh4cGVJeVpTUU9WT1YzNGhBOGk3cnJzMkdGN3U5eDF4dzU0ZWU4cWtnWWlJOFdSb0JiWFdDb0VJTW5qWDR2ZDlrWXpjdGU0MW84RUVWS3BlbFNhU0JrekhjVmFIR3dZWnZZSDBqVW9HSWlKR1JlQi9vVHlIT3FEczREWFpzWTkwUXBnTUg4eEk5bDdLdHUxMVNxbFNZQ1pwcGRCQ0QrcGVGaEVSc1d1RWpkdTBYNGRVN3JWVUtwVks2L0Nidisxb0J0S0VDSm1KVExRTGZvNGthQktPNDJ6elBHK05rRUhoWTdteWVsSTYyMFZFVEQrQ2FhbEI5aTZFL3BjMXRtMXZ3M2Z3RGpXUGh2cGd4cFhKOXNFRVgwNHFwWG9keDNtbWNuU3BuM0JudnVMODRvaUlpT0hvb01EUktDZllxWUVJa3VNNHoyaXRleWtiVCt3NFJEM3VUTFM2TUZJVUtTeXljaHpuMmNySzZpRGh6akNNU01CRVJPd0Ntbko0T3NoL3FXanVYaXdXbjhPdm9BNXFBaXR2OWhQcThKeE1BVE8wc2pwbTIvWnpnQXJhK2lsUCtXTVZ6TWdQRXhHeHE0VDVMMld4VVY0L3VsUXFQWXRmNEZpNURpY3NlM2ZRUGszVUd6T3k1bEw1cUxKdGU2UHJ1aHZEMFJLZUgwMEtSc3BPS0pIc2lwaE1KdUY2QzFyUkR2Ry92T3c0emthZ2loMmJSaE1tWk1aN3FzQklEQlV1WVdXMTUzbWR0bTMvS3g2UEw0S3lIMGFYQlF4aUFzTFZGV2RaUjNYYkVaT0lGa3lVbEFueVh3enB1eFlDLzR1VWtrS2g4Qy9QODNxQWV2enhKSk5xSWsyR2dCbWF6RE1vTk9ZNHpzcEVJbkVCNEdjZnVnckxzdnhxVUUrRjV0SjRJUVFVaTRXQmZxVVJFWk9FbnFBTWRhMzl0clBDRUg1UHBjRU5wbFl4NEg4Wm12UUtFeXhrSmxyQUJNVlRJNWxJSG1DV1NxVm5NNW1NRWtKSXBmMUlrb2dMREZQaWxsd01qSEhmcVlHQmRoRVJrOHRFbVA3QnRFd3Q5WUIzeFM4a1ZzVmk4UmtHR2t4TlN1NUxKWk9od2NESUFrWUJTZHUyWDFKS3JSZENMQW5HcG1xbE1Vd1RTdmFFN0V6a1BJNllUZ1Q5ZDFINGpmVFJnYm0wdnR3aU04bndJTXVFZGJHclpMTEQxTVA4TUVxcHpsS3A5RXd3VDFoNTVkbk1ob2tVMFVDMmlJaFhRMHJmUEJyYVlNcTI3V2VVVXAzNEdzeU9NbmhoQW9YTTVBeUU5aGxhbHhTYVQ0N2pQQmxvRlVyNURhaUU0UTg5OTVRWGFSd1JFVHZBOHp5L2c1MGgwVnI1NVFFREV4ei95Y2h1aWdsdDBWREpaSGs2UnlwNkRMU1lwT000ejJ1dFBTR0VuK2JzNlRBck1lZ3BHaEVSTVRKU1NsK29LRDlRVXZhL2VPVUV1OEE4R2lwY0FsN1RKbElsTzNMMEprdWwwanFsMUF0QytBVmF5dk5EYmFicHU0Z2lNeWtpWW1RR2g2ZkxmL1B6WDE0b2xVcnI4UXNjZCtSN21SWWF6STdLQllJdmFpbWxPaDNIZVRyd3czaWVoNmRjRE5NSTUxWkhSRVFNUm11L1dsb1lBbzBLRzdXVkczeXZWa3AxTUREQjBXT3c1VEFwUW1heU5KZ2RGVDU2K1BhaHNHMzdYNVYrR05jYjhNTkVEYWdpSW9ZVHpuV1hZbEI1Z0pTU1lySDRGT1cxeGNpYXk3VHl3Y0R3TDFhcHNxVktwZEl6Z0YzcGh3SDh3a2V0SWtkdlJNUUlCUDFmZEhsMWxTMEF1N3llS3NzRGhtb3VrN04vay9RNXd5cXBHZnpGVTdadGIzSmRkNkI5ZytlSDNDSS9URVRFRGhCK28zeU5YOE1YekVSeVhmZlpVcW0wR2QvQk81TC9aVkswRjlnOUdzelF5bW9OR0ZyclBzZHhWbFFLR05kMU1Td2phdDhRRVRFRXBaUnZIaG15UE9OOVVQN0xpb3IrTDBOdjV0UE95VHVVeWk5WTZYU1N4V0x4S1NHRVAxbEFLWlRyejNnSkJFeGtKa1ZFREdESWN0ZUJJYUlpbjgrdllIRHYzVXJCNGpFTlRTUjQ1ZFlOQ2tqYnRyMWFLZFV0cFF5RmpOWWEwNWlzaW9hSWlOY093cWhvejZCOTdVVXAxVk91UDBxekc2TkhBWk90d1F4MThsYXFid25IY1ZvZHgzbXkwa3p5UEEvRE1vTG14Wk84dXhFUlU0OWcvcEUwUkRpOVVlTVhQSlpLcFNkYzEyMWh4LzZYU1hWbTdnNE5Ca1lXTWdDT2JkdVBCNmFRcDd4eXk0YUJaS0xJVElyWTA5RXFHTERtenhEVEZSTWNpOFhpNDRETjhKU1FvYTFTcHFVR0E4TWpTWlVxWEt4WUxLNEFuTUMyOUR3L1ZjWTB6U2lTRkJFQm9iWUNBbFhSM0Z0cjdSUUtoUlZBbk1IcnE5TDNNcWxtd080d2tVYUtKQVgvcmlxVlNtczh6MXZ6Lzl2N3NwalpzcXU4YjUrOXoxQlYvM1NIN3NiWTREaGtVQklSaUZBVWtvZEVpaEpGaVFSUEtDZ0t5Z05CRVlQaUYwQWhpa0ppQkJHQko1dUFpTUdSQXVxQUNZb054allZdTd2QmVHaGp1eDJiTnRoeE43UnBqL2ZlZjZxcU0rd3hEL3VzVTd2MmYrcS90N3Z2dlg4TjU3c3ExVC9mR3M3NXpscmZXdXRiWFJTakRZdzFFRUxRaS9pUUgvS0FBZXNGR202MHpyVGVSbDMzN3A5SUtmOEVGL3RmUWc5ZVlFdEYzaEJ4aWtSRWt6bm56cVdVSDZhMXNxVERKR25pUFVjSGdobXd3NkFOcU9SZUJ3dUFlWUpwbXVZajF0cHpMT3daWWczbW9mVy9FSzR5UmVxckpGa0FlZE0wZndpMFlWOXJvNWtrQ2JqZ01HYXdieGl3dXlEM09yOFJkVG1pYi9XWFB1K1hXSHZaMmdpbXo1c2lqR0EwZ0VsZDEzOWtyWDJSZm9sYzdqS1IrVDh5UkRFRGRoU01NZkIydVpvMXR2dWFNZWJGcXFxZWhTOVBoM3BMYkpYNVVLL09WeEhCOUUxV2h5OUNyclYrVVNuMVVjNjU3NGN4RnRwb0pHSklrd2JzTHFnOHpWcUhBV3JiYU12VEg5VmF2d2kvSHJaUGUzbm8wUXR3ZFFSRDkyRUlwOXQ3RHNCSktUOGNycFUxMms5WEN5RzhNZmlRSmczWUlkQTZaWkVJZjVFMXkvcExteDVaK0hNNnpnd2V1dlpDdUNxUjk3S09YZ1Bnb0s3clo2eTE4MjY2Mm5vclFNRUYzTlc4VmdNR1hDa1lZMGhFT3ozZC9tTmdNTWFVZFYwL0ErQUFGNFhkSzVtaUpsemxjcUE0UlFwdm82WnBQcSsxL2doRk1WcHJhS3NoTW04R1BuVDFEdGdsa1BjdUY4dkwxVGpua0ZJKzNUVE5DMWp1M3UwYkRkaUpGQW5vbjBzS1F6b0dZRjdYOVFkSmgzSFd3U2lEUkNUZUROd01lNDBHN0JiODlIUzdYQzBnbUtxcVBnaWd4TUpjcWk4OWV1Z0NMM0QxQkxNcVJTSVRxcWNCR0dxd004WUFEaENwSDM1TWh1Mk1BM1lJWEhEQXdWdGpMb1liVFZWVlQ4Tjc3NjZxSElYM0R4WHJrQ0t0U3BQMm02WjVUbXY5ek5Md285VVFxVUF5REQ4TzJCRXNoaHRiYWNDaU01ZVNVbjZpYVpybnNDaFA5NDNnWEluK0Fsd3R3UUQ5Sld1NkpjNjVXVjNYVHhEQkdHMmd0UUVYSER3UjBFWmYxZU1lTU9DaGdaYmJNNXFlTnE2ckhsVlY5WVJ6Ym9aRjllaktoZDBRNjBBd3NRWVRNbkRlNXBlNkczN1VYbnVoNGNlaFhEMWcyOUV0dDNjK2FyZXdZTDZMMTdUblI0RkZtOGNxL2VWS2NOVXBFdDMzQ2IwR3dGN1ROTTlxclQ5SkpsVEdHR2pqclRTSHByc0J1NEJ1VEFabXFibE9LZldwcXFvK2pjVndZM3lSdm5LU1dZY0lKazZObHV3Ym5IT1ZsUEpKSWhobkhHeWJKZ2toQm8rWUFWc05HbTdzOW9QWnhXcVNxcXFlQkRESDhuQmpuL2F5a3hFTW9ZOWt3bkJ2VXBibEh3QlFETDVFWjR3RkdEcUNHVEJnVzBHYk5SZ0FHTmRGN05aYVZaYmxCK0NyUjVjTk4xNHAxb0ZnZ0g3ckJvTjIrTEZwbWs5cnJUL1JwVW5hd0JnRDBhWkpBOGtNMkVhUXVNdEZBdXNjWE52NjFYcS9mS0t1NjJjQjdNT2ZKNWVsUjFlR3F5YVlVSWZwSXhrTElIWE96WnFtK2IydW1tUU1qRGJnbkVQd0lZb1pzSjJ3MW9LTHhXb1M2MnczTGxQVjFWUE91WE1BS1M2V3BtTnlHVklrck5aaExJRDlxcW8rZ0xDYVpBekFHTGpnUXpWcHdOYUJqbWVhUGJMT3dUZ0RsemdZWjNRMXJ6NkU1ZG1qdmdqbXl0T2tkU0FZWUZtTWltY3BOSHcxNlROYTY2Y1hhWktHTmhwcGxnNnpTUU8yRGpSN0pMandZd0hhZ1RsR3pYVWZxWnY2czFnMDEvWEpDMWN1OEFMclFUQ1h6U1hSQzhhZGMvT3FxcDRnSzAxbkFLTVcxYVRCNlc3QXRvSHpoY1pvbmIrQWlrU2dLcXYzT2VlbVdHeHVYTFg3Nk1xeERnUkRXTlVQUTdmOXVxN2Y3NXlyR1dOdzhMTkp6am1rV1hwMWozckFnQWNFTGpnY2EvY2V0ZU1DMXRxNnJhcnVZL1g1c2hiUkM3QStCTFBLNVM1dXV2c3pwZFR2TDQ4TytEU0pKOGt3WVQxZ0syQ3RSY0lTcEducVBhbGJhOHpXMlB2OVRkUDhHZnJUbzdYU1g0RDFJUmpnN3FtU0E2Q3JxdnJ0SlN0TnJZQUU0RU9hZE4vQkdMdm4yNEQ3aXpSTmdRUXcxbmI2WXBJa0tNdnkzUUFVRm5vbHRYUDArYjljT2RadDZmT3FhaEo5dkYrVzVRZjI5L2Uvd2xqeW1HTzI2NGxKc3hSU3ltRjA0QldDeUlJOFgyay9PTjNDbjZPT1Vvb29hWFJqZUE5ZUdSaGpZTUxQSFRtOUdBMHd4bnhsUHA5L0FENDl1bHYwc2haWVo0THBFNjhtV3V2UE4wM3p1MFZSZkpleUZrWjVrc216SEkxb2ZBUGVzQVh5SldPcHg4ajQxTk5hMitsY0FDNFFETjM3TmFiYzl5VUo3eGxMSHJJRFhocU1OVWg1Q3NFRmpQWGJOT2cxTHN2eXZWcnJMd0Q0ZWdBMTFyUzVMc1E2RVF3NWJsMDIvR2dCakt1cWVrOVJGTjlGZTVPMDFzanlEQ0lWa0ZKQ2lIVjZXdXNOTXZQU1duYzMwcktTeE9zQVJCNWhLa1FSRHBFUlJZOUNDSERPa2FacDl6NE1aSC92WUM3dzNiWE9OOWUxci90OFBuOFB2QzFtZUQ3MFdXUUNhMEl5NjNZbTNxMWNiZUNiN2o2K3Y3Ly9meGxqMytTWVd4WjdhejRNUU40ajJuMDYwRnBES2VVN1J6bkhlRHhHbG1VUVFuZ3RBRmo1ZWhMSlNDa2hwVVRUTkdpYXhyOGZhZG9SelpBNjNSMjBWRTBJQWVNTXJGNW9MMXJyVDVabCtUSDQ1anFhMWROWTFsL1dSdHdsckJ2QkFQMGtFODVhRk5iYXI5UjEvZTc5L2YxdmtsTENhWDhGSHVVanBDS0ZWTklyOE1NQjNRdUtXcFJTVUVyQkdEOTJNWmxNTUJxTmx2YUE5K2t2OGQ5SzB4Ulo1cGZpS2FWUWxpWEtza1JkMXo2NnpES2thVHJzRnI4TG5IUGVob1F6S08ydEdSajhxcDdUMDlQZmRzNmRBdmc2QUExVzk3NnMxUXU4VGxXa0VLc0loajYvVmxYVlU4NjVpbnBpclBMTlNHazJFTXRsb0pPOGFSclVkUTFyTFNhVENXN2N1SUdEZzRPT21JMHhuY0I3R2NKVXlSaURORTF4ZEhTRW16ZHZZbTl2RDliYWpteW9sMlBBYW5ET1BVTzB0cGpNVzhQVzgvbjhTUUJIdUtoTnJxVzRTMWkzZDN0VlAweG80MEFUMXM4MVRmTWtsYXlOTnQzb2dPQUNXZzkybWpGSWVHMmFCa29wQ0NGd2RIU0V3OFBEYmxOREtPcStIRkRLSllUQXRXdlhjUDM2ZGFTcHIvQ1ZaVG0wRXF3QStiNXd3V0hOWWkxc3U3WHh5YVpwUG9kbDM5MDRzbC9MRkduZENBWllQZndZUmpFQTRPcTZmbWRuQ080c3ROSkFndTRxUEJ6SUN4QzVVRXFVNXptdVhidUcwV2pVUlN2M0V4VFZqTWRqM0xoeEExbVdRU21GcXFvR2t1a0JDZVJnM25NMzdIMlp6V2J2eE9LNDd6c2YxazdjSmF3andSRENScUsrYXRLMXNpdy9aSXg1cml1eEtuLzF6SXBzS0pNR29MUklTdGxwSXRldVhldG11QjRrU095OWVmTW1ScU1SdE5aZGFqYWtTeDZVT29wVXdFWTdwN1hXejgvbjh3OEN1STRGc1lTR2JFUXVRNHIwRXRDWEpzVTZUR2FNT2Fucit1MDBBR25iOER6SmttRUFNZ0FKdW5TeUh4MGRQVlNqTHBvTXZuSGpCdkk4aDlZYVRkTU1XbGtMYTMzMUtPR3NhMjRFR0Rqbm1NL25iN1BXSG1QWjk0WGtnclhzZlFteHJnUURYRndZRmVlY0dzQmtOcHY5RG9EU1g2VUJLeTJzdHNqeWZFMWY4b2VMc0JTZHBpa09EdytSWE1IY0ZwRTlSVTVOMDBCS09VUXhBQmlqdEI2dzJyWk9kZ3pPdVhJNm5mNE9WczhkaFpIOVdtSmQzOTNZSHlZV3R1aUZQcEJTZnJacG12ZVEyS3VOaGxZYWFTWWdoQmQ3ZHpXS0NjbUZNWWI5L2Ywclhic2JWcGxhWDVQaC9XbGJCTGpnc0M0UWR3VkhYZGZ2a1ZKK0ZndGpxVEJGNml0UHI5MGxkVjBKSmtRY3dZUTVLQUNrWlZtK25XWmpxTFBYTVljc3o3b2R2cnVJc0lROEdvMlE1L21WNjFKYWE0eEdJK3p0N2NFWUE2WFVsVDZlcXdTbGlLbEl2UzJEZGwxeGdqR0c2WFQ2ZHZqVUNPaXZIcTExZWdTc1A4SFk2TllYelZ3cnkvTER4cGhubHNSZTJicmQ3YWlOQXdtNzFscWthWXJ4ZUh6bDVFS3cxbUp2Ync5Q2lLNnF0WXRSREhYdThwUjNGd0tnTS9WK3BpekxEd0c0aHRWTDFkYTJla1JZWjRJSlg3aFZZd01XM2hTOExNdnkvNFEyRGtZYk1NNlFadW5PSHNBa0dCWkY0UnU0MWtSVXRkWkNDSUh4ZU53SjBMc0lheTBFRjBEU3poMjFJeTVDQ014bXM3YzU1eXI0Q09ZeTdXVXRVeVBDT2hNTXNIbzJLUlo3Yjg3bjh5ZXN0VjhpejE2dE5JdzJLSXFDdWlHdjZqazhkRkNKbnZMN0xNdldobHdJMXRwdUxJRUdMSGZwSWtCbGVwRUpPR2U3dVNPV01HaXR2elNielo0RWNCUDl4TEsyalhVeDFwMWdDQ0hKaERwTU41K2t0ZjVDWGRkdm93bGViZndBSHhmK0JOdTFBNWptaDJqZ2NOMElsbEszUE0rN1ZHNm40THoyd2dTRE5hNUxqd1FYS012eWJWcnJQNGVmbkk0bGdiQTh2YmJFUXRnRWdxRVhzUytDb1JmYkFkaWZ6V2J2Y000MVJDUkdHMmlyVVdUNXczL1VWd2c2WVJsajNSRGl1aUxMRmsyUjZ4WmxQVWd3eGlCeVAyVWVXbUlDYU03UHo5K0JoZWZ1M2VhTzF2cEYyeFNDNmZQcWpkT2tnNlpwUHRzMHpUczU1MkJnbm1DVWdzajhWVndwdFJOUkRFVXZaQVMxcnRFQnRjZVRFTDhyNHgzR0dQQlUrSDNUMmhNTWF4dnJ5cko4bDVUeS93RTR4TExldU1xYVlhMnhDUVFETEVjeE1jbUVMM28ybTgxK05Va1NDeXBaU3dQdGZIdjgrcjhkOXc4aHdheHJaQkQ2bnl3NldMY2ZqREdrUW5TRzNzNDVPRGdrU2VLbTArbGJzU3pzeG5MQVd0c3p4TmdVZ2dHV3UzcmpGNTJJNTFwVlZYOG9wWHhLdE9NRDVIbVNGaW5TTElYU3V4SEZBTGpnUXJkdTZHWndkc2lCa0N4ZHVVaGFJWDdoK1ZMWDlWTmxXWDRFdmpRZFgwUlYrL25hemgzMVlWTUladFdFZFh4TEFDVHorZnh4eHBndldWc0xMVFhnNEJ2TnpPNWNKVGVsRForSWNGMGpyZnVOTlBXTmRkWllPR3NCNXZXWHM3T3p4OUVldzdnNEdoRDNoQUViUURLYmNRUXUwRmROQ2dsR3daZXMzNitVK2lpWlQydXAwYWdHYVpZaVM3T3RiMCtuRTNVVG5tUDhHTGVWWkVqSTVwd2pFUW1jOFhOSFlKNWdwWlFmbTgvbjd3ZHdBNHRvUmFPL2FncHNBTGtBbTBVdzhYd1NrWXpDOG91Zk91ZDBWVldQZTdIWFQ2c2FaZURna0JYWnp1VDZBOVlISkx4bldlWU4wZ0pSdS9WOGVSeitXS2FwNmJoYXVsSGFDMkdUQ0lZUXBrdDliNEFCOE1oc05udWZNZWFQV0pLQU1VQkxEYW1rM3o2d0kwT1FtL0w4TnVWeHZseFE5Q0tFOEkxMWJkOUxLK3hDS2ZYc2REcDlMNEJIY0xGeVJOSE1SblR1eHRoVWdnbEhCZnBHQ0RKcjdYUStuLzh5dWVJYmE3empIZHQrTGFZYi9OeUFkSU91N051OEpiSWJhcVJqMFN6MkhiVmpBYjlzclowQ3lMRGFsbUZqU3RNaE5vMWc0cDZZTUUwS1V5VU40Tkg1ZlA2N1d1dm5reVFCZzlkaWxGTElDcjlEYVZ1akdIcE9tNUlLMHVQY3h2Y0M4TE54UE9FUVdWdU8xN1pMalpSU3o1K2ZuNzhId0tOWVBuN2oxSC9qMGlOZzh3aUcwTmQ0RjZkS21USG12Q3pMWDZReXFEVVdXdnJCdW5Xd0xualFvTjZTZFQ1eGFZTUJzTDBFNCtDUVpvdm94YnFGSmViNStmbGJyTFhuOE5GTGVORmNwYjFzRkRhUllQck1xUG9xU2hyQWplbDArZzVqekdkb0NGSkpCYWtsOGlMM2RnRmJHTVZRZjhtNkx6c2oyMDRheXR3MmtLR1U0S0t6WkxCcU1SYWd0ZjdNZERwOUIzemxLQ2FWalk5ZWdNMGtHRUxZRDdPcW5icXcxcDdQNS9PMzBESXhZeXgwbytCZ01Tb0syQzMwaWlFdGcwN2VkU1pRclhWSGlKdWlHOTBybkhOZ1lHMzA0amVRaHBZTTUrZm4vNk9OWGdxc3Zsakd2UzhiaFUwbG1ENnZtRkJ0cHpkSUFuaHNOcHY5bHRiNlQrZ2dWbEpEdHQyOXRFNWpuVS9DVjRKMTN3K2xsRm9TZWJjRmNlWElXdGYxdmJSMm9YOThmbjcrVy9EYWk4TEYxQ2llT3dJMkxIb0JOcGRnZ0g2ZkdCTEc0bFd6OCtsMCtpdEVNRjZMMFhEV29SZ1ZhNTlLdkJ5UWlFakwxTmJ0NUtYMFFTbUZKRW02bEc1YjBObGxrUGFpRFl6MTcwT3J2ZnhpYXlnVld6S0V4L0JHZUw1Y2hrMG5tRkNMSWVWZDR1THVtTWZtOC9sdlNDay9uU1FKV01LOEZpTWwwa3o0S0daTFo1VG9KRjYzNTBhbTM2Uy9yTnZqZXlYb3RCY2hrS1F0eVd1ZmlyZlArK1BUNmZTM0FUeUdpMUZMWDRvMEVNd1ZJbzVrNGloR3crZTQ1OVBwOU9mcGF1bTNIR3BZNnpBZWo4R3dYZmsvZ1RFR3BkUmFWWlBvQkd5YVppdjdYMmhwZlpabmNHaTd5TnMwa0hPT3M3T3puM2ZPTmZCZHUrR0ZjSlgrc3JIWUZvTHA4NG9Kb3hnTjRGVjFYYitucnV1bnd4a2xLU1dTTkVHZTUydDVwWDhsb0RUSldnc3A1ZG84dHlSSlVOYzF0TlorTm1lTDBpUEdHSXcxU0xPMDJ6TnR0QUVZYUIvVSsyZXoyVk5ZUkMreFMyT2NIbTAwTnAxZytzaWw3dzJqU1d0TXA5T2ZBZEFkMUxMeHUzbUtVZEZwRnV0eUl0NHZNTWE2SFVSWFBXRk5xVkZkMTUzMnNrMncxa0lrQW1tZXdzTENTRDhTd01EQUdIT25wNmYvRFlBQXdMSGFraUhlR3JDeDdMc043MjdjM2R0M05hQTM4UkVwNVI5SUtYK2RjdzZXTUJobG9Cb0Z4b0hScUZqN3FzdkxBWlYvYVNmMFZSRW9WVmJLc2dUZ3IramJSdWJHK09pRmppMjZZQWtoVUZYVnI1ZGwrV0Y0TTIrS1VzS1VQcTRlQVJ0TUxzQjJFQXhoMVlLMmVGSGIzdm41K2M4QU9LZGZsRTBESlRYeXZFQXF0dE5hazZLenVxNEJQUHl1V1VyWHlyTHNJcWx0ZW8ySlBGUGhqYzJzdFg3MmJZSHB5Y25KejhKYllRSVhtMEw3dEplTkpoZGdld2ltTDFXS3kzMzA4UTBwNWZOVlZiMUZDTkdPemx2Zmo1RTRqQ2ZqclRXZ2JydEhIenJKa0lnN204M1FOSTFmTnJabG5idldXampiYmhObHZ1ZkZHUy9zcG1tSzJXejJpMUxLendHNGpuN3RSUVZmMzRyb0JkZ2VnZ0ZXNzArS1I5NE5nSzg1UHo5LzNEbjNmTmQ4MXlnMFRRT1JDeFJGc1pWUkRPQlBkcTAxcXFwNktDYmJwTEhNNTNOSUtiZVNYS2kzS3MzU1JWbGFlV0czZmIyZlB6MDlmUnpBcTdDNjU2WFBjM2Zqc1UwRUEvVDN4ZEF0ZkFQSFd1dVQyV3oyUmhxRWROWkIxUXBhYTR3blkvQ0ViNlhnQ3l5VEREM0grLzA4cVNTcnRjWjBPdlhWdXRhRWZOdEF2VHg1NFhjOEdlVUhHaWw2T1Q4L2Y1TXg1aFRBQlAxbVVtSDBzaFhFUXRnbWdvbkhCOEsrbUpoa05JQlhuWitmdjBzcDlSU2xTbHBweUVhQ2NZWml2SjJDTDdBWWhyVFdvcTVyU0NrQjRMN29JcVMxT09kUVZSWG04em1NTVZ0Wk1TSllhNUhsR1JobnNFRlRuUkFDVXNyZk96OC9meGVBcjhGeXBFS2tFbGVPTm5Lb2NSVzI4UjBQeWVVeWY0MEVRSFoyZHZaVG5ITkZKdUhVNFZzVUJmSXRubE1LMDZPbWFWQ1dKYVNVU3phTzkvcTg2ZWVKV0pxbXdXdzJRMVZWWFNTemphOGhOUXhtV1FhUkNkODFMWFgzUGNhWXVuUG56bitGYjZoYlZaYnVHd3ZZR213YndmUU5RVjVhdHE3cit0bXlMUDk3NXphbURXUXRZYXpCYURJRzNPWVlONzFVaEF2YXJMVm9tZ1pWVmFGcG1xVWhSQ0lidXRIbjNXeVg5U0o1VlZVb3k3TFRkNmdNdlcyZHVvUzRZOWNxTCt3Q0lHSDN6WFZkZnhyZUNqTzh1SzBhQzlpcTZBVUEyTDFXU3pib0FHSEJUY0JmUFRJQU9meGdXZEYrbkxYZnF6bm45YU9QUHZwcnpybS9acTBGSERDYUZNakhCWnA1Zy9sODN1MVEzbGJRK3hzK3g1Qkk0dlNHeUlsTXJjTEsyN1lTU2dnYXdTaEdCZEk4aGRZYXFsWmdZSDVqbzNOLy9NVXZmdkdmVzJzTCtPT081dVFrZ0FwQTNkNGtGaWs4WFJnM0F2ZHlQbXhiQkFQMHI1cTlMSXFaR0dQSzZYVDZVMm1hK3FZME9NaEdRU3VOMGJqd3hsUmJtaW9Sd29ueTJFOUdTb21tYWJwYlhkZW82N3FMZEtoNWo0aG9tMThub0JYSmxVWXFVdVNaZDBZMHN2VVZha2NDVGs5UGY5cGFXd0xZdzNMa0Vtc3ZkQVA4TWJ0Vkw5NDJFZ3l3ZWo0cDlPNE5oOHhlTTV2Tm5taWE1bGM3WTZvMlZYSncyTnZiMjZuVnByRjlSVitLRk42Mm5WQmkySFpaV2pFdVlKbjFWYVAyMkVqVEZQUDUvSzJ6MmV4OUFGNk5penVPNG1Nd1RvMjJLa3plVm9JaHhCV2x2blpzdW5yY1BEazVlUk9BTDVHOXBtd2s2cm9CenpnbWs4bldSekdyUUlRVDNuWVp4aGdVb3dLTSszSS9WWTA0NTdEV2Z2bjQrUGhOOE9NQURLdUhjTGZDanVGdTJIYUNBZndiRjNkTTlsazZIQ2lsYnAyZG5mMVltcVpkb0NwckNhVVVSdU1SVXBGMi9Sd0RkaFBHR0tScGlqUk5GNm1SVy9UOW5KeWN2RUZyZlF2QUFTNk9BL1FkZTFzeE5iMEsyM3lteEdGbnZBa3lYbWlsQVh6dGJEWjdaMTNYdjVZS1gxWFNXa05XRXRwcDdCM3NkVi9ieFVobWwwR2FGQU5EUHNyaDRLQWI3ZmRMdzlFdzQvK2VUcWZ2eEtKak4xNmdGa2N3WWVReVJEQWJpRDdCTnd4VnlmMk9EZ1lHbnlyOUZ3QXZrTVlnRzRtbWJzQUV3LzcrUHBSVU81OG03QnFjODh2cVIrTVJHR2N3UnZ0R3pEWnljYzU5L3M2ZE96K0JSV29VRnhYaWhzK3RzR080RzdhZFlBaVhkZmZHSGI2SFd1dloyZG5aRzJpTUFBQlU3UnZ3OGp6SGVEeGVLd09uQVE4V1ZEVXFpZ0k4NDdEYVFIY05kYjVxZEh4OC9KKzExak1BUjdqb1V0ZDNyRzFkVTEwZmRvMWdRaUlKdlh2akpxaFh6MmF6SjZxcWVuT2FlbThQYXl4a0tTR054TjdCSGdUZi90TDFBQSt0TmRJMDlhbVJjZERLd0xhclg3TXN3M1E2L1lYWmJQWUVGbFdqbUZ5bzF5VVdkN2NldTBBdzRWVWlYZzBSdi9rVTVUQUFqNTJkbmIzUk9mZUpibW1iVXQ3cTBXbnNIKzV2eE42aEFTOGZuZTdDR1BKeERndnY4VUkrTDIxLzFDZU9qNC9mQ0crQkdWYU40c2dsSkpqUWptR3JvNWhkSUJpZ1grd05CODdpSzR3R01ORmE0ODZkTy85T0NGRjF1NFJyNWZXWWxHSC9ZSDlwZm1mQTlvQmNBSzJ4WFVuYWFOTU5ocmJIUTMzcjFxMGZzZFk2K0VucDJPZWxUM2ZaeXBHQVZkZ1ZnaUhFZGc0aHVjUlhHQTNnc2JxdVAzdDJkdmFqYVpwNllkY0JUZGxBMWhMNUtNZmUzajZhcHJtYVp6UGdnY0U1NTBjQmlnSWk1VERhVzZzQzZHd1lqbytQZjdScG1zK2czOEM3TDNMWktYSUJkb3Rnd25KZ1RES1g5Y2U4NXZ6OC9OZnF1bjY4MDJPc1JWTTFVRkpoc2pkR251Vm9tbWJvajlrU2tGOU9udVVvUmdXc1haU2tpVnpLc3Z4ZloyZG5id1h3R3ZUYlg4WUVzNVYrTDNmRHJwMFJxK2FVWkhDTGhUZ0I0TkdUazVPZnNOWitqTlpzYUtWUlZ6V1VVVGc0UEFCUCtGQloyZ0lRdVhET01acU1ZS0NobE9wV2o3UW1XaCsvZmZ2Mmo4T3ZmUlhvYjMrSTArNnQ4M3E1Rit3YXdSRGk4WUh3YXRPbnh4d1lZOWp4OGZFUGM4NVBpVVJrTFZGWE5TeXpPTHAyQk9mY1dxd0dHZkR5UU9UQ3dMdzNNL1BMK2JUVUhia3d4azV2Mzc3OXcrM3MwVDR1VmlERHFlaytndGtwN09LWlFHOXkzMTdydnB6WndCOHNqelZOOCtMSnlja1BkdXMyR05CVWZyclljWWZEbzBOb3JZZE8zdzBFbVVjNTU0M2ZrZmplRjFWZjBGMStzR21hUDhmQ29XN1ZoU3BNdjNjeWVnRjJrMkJDeEVPUWZWRU1IUnpVSC9PKzJXejJCaktvQW9CNlhxT3BHdkNVNCtEb0FFcXUxNnJXQVplanM2YlFCcE85Q1ZqcU8zVkRjc215REtlbnAyOElwcVREcWxCNGdRcFRiWTFsajVlZEloZGdkd21tVC9EdDAyUENhSVorOWpXbnA2ZHZicHJtZnhMSk9Hczl5ZFFOOGp6SHdjRUJtcVlaeXRjYkFtc3R0TmFZN0UzYVRsMExWUzBjL1ZwM3VsODZPVG41QlhoUk45YndRbUlKeVNVY0I5aUp4cm9ZdTBvd1FIK3FGQTVDcnRwSWtBRjQ5Zkh4OFJ1c3RVOEtJY0NTQk1ZYTFLVTMwQzRtQlE3MkQzenFOSkRNMm9MZUYyOHNOb0lvUkZlT0puK1h0cG51cVR0Mzdyd0JQbkpKc2RwbnFLOUlzSE5SUzRoZEpoaGdPWktKUTkwR0YwbUdWbjN1V1dzUGI5KysvVU1BUGtXbTFscHJWUE1Lc3BFWTc0Mnh0N2Mza015YWdocnBsRklZVDhiSWl4ekdHT2k2OVhkSi9McFg1OXl6dDIvZi9tSG4zQUVXelhTcjBxSlFmOW1KWWNhN1lkY0pKZ1FkRUxHbFEwd3lwTWRjMDFxck8zZnVmQjlqN0FVaUdhVVVxbm1GV3RhWTdFMDh5VlQxTUgyOVp1aklaZVRKeFJvTFhiY0NmY0lnL1A2bXozLzV5MS8rWGlsbEErQWFGcHBLSE8yRzZYVGNWTGZUR0FobStRcHpXYmt4TGprYUFJOUlLVzhkSHg5L04rZjhxMlFmMmNnRzlieUdWSDR3Y3JJL3ViS2QwQVA2b1pUQ3FCZ2hLekx2TzF4TFAyUEVPb3ZRVzEvOTZsZS9XeWwxQzM0ckFCRkczTzhTUnJvN04ydDBOd3dFNHhFMjM2MXF3QXR6N0REYWVVMWQxOCtmbkp4OFQ1cW1VL0tRVVZLaW1wZW9aWTM5ZzMwYzdPOFA2ZElWbzB1THBNSm9OUElEak01Q05yS0xYTnBHeXVudDI3ZS9wMm1hNStCMWwxWGw2TGdZRUpla2R4NER3U3dRaXI1eDZmcXlIRnNEZUYxWmxzK2VucDUrYjVxbXBaKytacEJTb1o1NTkvM3gvZ1Q3QjU1a2hoTDJ3d2VWb3JYeXE0R0xVUUZqVFdlSlNwRUw1N3k4YytmTzk1VmwrVWNBWG9lTDczV2NGdlZaWUE0RTAySWdtSXZvMjI4ZEhreDlqdkFXd0d0bnM5bEh6czdPdmovTHNqazU4RXNwVWM1SzFIV044WGlNbzhNanlFWjZtNGRrSUptSEFWcE9yOXMrbDZ6SW9JM3U1c2tvNmhSQ3pJK1BqMzlnUHA4L0RlQzFXQzR4eCtUUzRHSkplaUNXQ051NGVPMlZJbHpjeHJGWTNwWkhOMXJvbHNJVE5kMytkSDkvLys4ZEhoNitXU2sxb1lWa2FacGlOQjZoS0FwSUtYRjZjZ3JPT1ZVcUh2NnozQkZRZGM5WmgvSGVCQ0wzZlM2eWtsQmFkV2JkUW9qNW5UdDMvczFzTnZzZ2ZPUmlzUnk1VUJUYnRMY2EvV256enBETXZSeTNBOEgwZzU0c2h5Y05nY1YyeVBCR0JDT3dUREtmMjkvZi85YkR3OE8zS0tYMmFRT2lFQUxGcEVBeEt1Q1V3L0dkWXpnNEZFV3hNenVYSGlZb2dreVNCSHY3ZTBoRUFpVTFWQ05odERjS1MwU0NoQ1hUNCtQamZ6MmZ6ejhNNEJ1d3JNZFJoRUlSU3gxOEhIczY3d3k1QUFQQnZCS3c0RDdCSXBKWlJUS2l2ZkhnZDE2WVRDYmZmSFIwOUxQR21LK2hPUmVlY09UajNKdEhPNGJUNDFNbzdYMUhnSHQ3MHdaY2psRE1UZE1VazcwSlhPS2dsWWFzNVZJVFhaSWtYN2w5Ky9ZUGxHWDVEUHJUSWtxTFEySlpsUjRCQThFc1lTQ1kxYUFuVEZGSlRESVpGbnV1MC9iR281Ly9RbEVVZi9INjlldHZ0TmIrWld0c1YwWEtSem1LY1FHUkNNek9weWpMQ2xtZTBmS3VoL3RNdHdnazVpcWxVT1FGUnBNUkhDeWtVcERWd28yTyt6Nlh6OTI2ZGV2MVRkTThqK1g1b3RnY3ZpOXlpYmNEQUR0RUxzQkFNUGNEWVNURHNTQVpJcGhZaytram1TOW1XYlovL2ZyMU56SEd2bFZyM1IyR2FaRmhOQjRoenpMVVpZM3ArUlFzOGJNdlF5VHowa0dOamdBd25veVI1Wm0zdVZTeWM2TUQvSHBYWTh6VHQyL2ZmcjJVOGh6QTEySlpzS2NKK2xEUXBWdmZyQkd3WStRQ0RBUnp2eENMdmdrV0FtK2NLb1hwVXBoZWZabHpqcHMzYi82a0VPTGJsRkxkQ3RZc3k1Q1BjeFJGRHFzc1RrL09vSTFHbnVkZHFEL2djb1J0LzV6N05iOUo1azNCWkNVN3N5Z2FYSlJTdnVQV3JWcy9Zb3dCdk8xQ3FLSEVwbEVVdmNTOVVBNDdxTHVFR0FqbS9xR3ZzaFJyTXZReGliNFU4YkQyODVNa1NlYlhybDM3dDZQUjZBZklMTnc1dnhVd0cyWElSemxTbG1JK25XTTJtMEdrb2x0Uk9xQWZWQ1d5MXFJb1dnR2RlYkpSdFlhMXB2dTVMTXN3bjg5Lzd2ajQrRTNXMmdtVzIvLzcwcUl3YWdsYkZYWTZjaUVNQkhOL0VXb3lSQjZySXBtUVpCSXNTS1lHOE9YRHc4TnYyOXZiK3pHdDlRR1JCd05EV3FTK3d6VFAwZFFOWnVjemFPTjM4aVJKTWtRekFickdPYTBoaE1Cb05JTElCSXd4VUZKQ0JnYmRiUVBkK2ZuNStYODZQVDM5VFhpVDdnTExwZWhRMUEzRlhQcDQxU2pBem1JZ21QdUxVSStKZTJSQzRYY1Z5UkRSV0FBdmpNZmp2M2w0ZVBnVGpMRnZKTjBBRHVBcDl3THdxRURpRXBUekV2UDV2THNDQTd0ZGFhSjBTR3UvbTJoVWpKQVhPVnppb0tTRWxocGFtZTdkYWlQQVQ1MmNuUHlIc2l3L0NWOHBTckRjVUVsVDhtSFhkaCs1aEwwdXdFQXdkLzJaZ1dCZU9vaGd3c3BTWEYyS05abVFZT2pqTHdnaGl1dlhyLy83TE11K00weVpraVJCbG1jb1JnWHlQSWRXR3RPektSclpRQWdCV21tN1MwVFRlYmUwNlZDV1pSaU5SdUJwQXEwTWxKS1FqWVJ6Q0p2blVGWFZyeDRmSC8razFycUdyeFRGSmxCeEkxMVlocjdNdUh2bk1SRE1nMEhjSTBPaWI1OG1zeXBkb3BUcEZNRFowZEhSdDA4bWsvOW9yVDJpZmhtS1pyTENFNDFJQkpxcVFUa3ZJWlhzaUdZWFNJYjhjclhXU0VXS1lsUWd5MU1ZNTh2UnFsRXdRZFRTOXJlY3ptYXpIejg1T2ZrTkFJZFk3SXp1MnlyUkY3bjBUVWdQNUJKZ0lKZ0hoMVdOZUhFa0U5NzZTQ2FCUDNoZkxJcmlMeDBlSHY2UUVPSWZVNVVKRG1BSklOSU1XU0ZRRkNNa1NGQ1ZGY3F5aERFR2dndHd3UUZzVjBRVFJ5eWNjK1I1anF6SS9CcGZxYndwdDlKQSs3emJlU0pJS2Q5N2VucjYwMDNUZkE3ZTRwSmptU0JpUS9kWWR3bEwwYkV6M2ZhOHlLOFFBOEU4V01TTmVCU1ZVTlFTNnpFWkZrUVUvZzRSelczR1dIMTRlUGdkNC9INDljNjV4MGhuQ05PbU5FOTkxNjhGNnFwR1ZWVmRlWmEySFd3eTBkRGpOOFoweEpMbEdmSWlCMHQ4bjR1UmZvV3JuMHBQd0JZclJiNHltODNlZEhwNit1dndyLzBqV0NhV3VQMC85SFNKYlRuQ0pycEIxTzNCUURBUEhxc2lHWTZMa1V5SzVXYThNSnBCKzNrRDRBdDVubi85NGVIaDk2ZHArcDMrUkROd0ZuQnc0SndqemRMdXBBUDhLdHU2OGdaWEFMcXFFN0FaVVEwZFcrVHM3K0NRaWhSNW5pTXRVaCt4S05VS3VMb3Iyd2NWSWpSTjg5YlQwOU9mazFKK0hsNXJ5ZUZKQWxoT2llSVZOU0hCckxKZUFBWnl1WUNCWUI0TytraUdTdGdVdVlSUkRIMmRJaG1HaTlITUhRQ3ovZjM5ZnpDWlRMNmZjLzR0bENvQS9vM2xnaU5OVXgvUjVEa1lTNkNsUWxYWDNnNUNlenVJVm8vb2ZtOWRzRVFxcmU2VUpBbXlMRU9XWlJDcGdJT0QwZ0d4R051OTJwUU9hYTAvTnAxT2YyNDJtLzBlZ0QwQU4zQ3hDYTdQejRWMGxydjU2UUlEdWZSaUlKaUhoejdoTjV4ZENsT212a2lHR3ZMQ3RNdkJkd0NQOS9iMi91bDRQUDVYakxHL1Fxa0Q0SDhpU1JMdzFFYzFlWjZCQ3dGbkhLVDBWUldsdkVPK2N3RG5DYVVTL3RjZkl1R0UvMmNuWkdOQkZOUlVtSWpFOTdJb0w5d2FiWHFKeFJqejJiSXNmMms2bmI3YkdGUENkK1NTcHRXK09oZjBsbFV1aGZFMmdGRE1IY2hsQlFhQ2ViZ0lDU0tjWFFvYjhzaFhKaVNac09zM2lmNVdBdCtjOXlVaHhLTjdlM3ZmUGhxTi9nVmo3SFVoMFRqbldxTnFmNktLVFBqQlNjWmhqWVdTQ2xMNXFFWnIzUjBZbEdLUWwzQWY3dWtndXVSM3JiWCtjVHFmNGlWSmdvUW40SW1Qd0VRcWtQQUVGdDV0emlnRG93eVVVWEFXU0ZwVEx0b0o3cHo3MDdJc2YyVTZuZjZtMXZxckFGNkZSZE5jU0FyeGFwSFlMQ28yZEtlZkg4amxIakVRek5VZ0hDdUlLMHd4d1JEcGhOcE5tREloK0h3RzRLdHBtcjVxYjIvdm54VkY4UzhaWTYrakZBTll2T0U4NFVpRWoyeXlORU9hcHVBaUFTeWd0ZW1XdVd1alliVW5BT2NaWUNsU29QZjhYc2lIZW5nNjhtci9VT2R6eTMza2thWXBPT2R3ekxXYWk0YldQbExwb3BYMldUTUFYQWh3em1HTStkT3FxaDZmeldidlVrcDlDWDd4L0I2V2w1cUZxZEdxdlVYeEZvQndLdHBobVdBR1hJS0JZSzRPTExyRkpCTnJNMm53L1ZEOERTMU42V3RUQU1kcG1sNGJqOGYvcUNpS2J4ZEMvRjJLRkphaW1rQUVUVGdEVDMzdmpPQSthb0FEbkYxVWJJenhKemhGSE5iWnJsd08rTSs3SjhpWUp4RkdId05JZ3YrUEpXQ2NlYkpMRWpobTRTeTZmaFpyTFp4MjBFYkRXT05MOHZRM0UwQndRZFBSSDZycitqZm44L2w3dGRZbkFLN0RMNTJQaVNYVVcwaEhpYU9VMlBxVUNNaGhJSmVYaklGZ3JoYXhwa0xPZUNIUnhOV2x2dkdDT0pwQisvMFN3SjBrU1NhajBlZ2JpNkw0SjJtYS9uM08rV3VJTU9pOUpiSUpVeUp3Z0NjSmVOdEh3eE8rNUJHY3VBUU9iVlFDQndZR1o5M3lvd0E2a2dGamNLeXQ3amdHNjJ4WEZiTFd3RmdIbUlYK1lwMEZjNno3VzlSOTI4NFl2U2lsL1AyNnJuK25MTXRQT2VmbThPTHRHTXNhQzkySEVRdE5SRjlHTHZINm1mRHZETGhIREFSenRXRHdCMnhjSVFxSkprNlZCSmFqR1VxeCt0SW0rbGdET0FaUUNTRytmalFhL2UyaUtQNGg1L3h2SlVueUdPa2dYZnJTYWlGaDlKRWtDUmdZV01MQU9HdkpDRzJQU2Z0eldKQUJuWVlPRG1qTDUyR0s1TXppLytxaUlQcTlnRkFvRFd0N1g3NmlsUHA0MHpSUGxtWDVVYTMxQ3dCRzhCR0x3REtoMEgzWThoL3JMWEcwRXE4QkR2dGJiUEIrRGJoSERBU3pIb2hKWVZVMEU0NGJ4T0p2UERBWkVnemFyMXNBYy9qeEE1T202VjhvaXVLYnN5ejdPMm1hZmt1U0pOOEFMSVJYSXBxUWRCWVBlS0c5T0Z5K3g4bTVOcnB4UGdBSWp5WWlEMHA5V0xMNEhBQ3N0YzhwcFQ3V05NMUg2cnArUmluMVF2dGNqdURYdE5MekFpNUdMQlMxck5vVEhlK0w3bHRJUDRpNXJ3QUR3YXdYWWwwbUZvQkRvb21qbWJpY3ZTcWFRZnM5RFM4S3p3R0FjMzZVcHVrMzVIbitONFFRZjVWei90YzU1MS9IR051alg0cFRLdjlCVEJtcm50aHlxa1Azb1ZEc25KdFphLzljYS8xcEtlVm5wSlRQS3FXZU04YWN0bjltQWkvYUNpeElwWDBVM1gxZjFFTHBUcGoreEt0L3cxTDFvTGZjSnd3RXM1NElDU1lzWjhkRVE5R01pTDdmbHpiRkdnMml6MnQ0d3BFQVJKSWtoMm1hM3VTY3Yxb0k4VnJPK2RkeHpoOUprdVFtWSt3Unh0Z2hZMndDSUtIV2Zib1A5UndBNGZlc2MyN3VuRHR6enQyMjF0NHl4dHcyeG54ZWEvMkNNZVlMU3FuYjF0cno5bkVVOEtSU3RJOHhQaEF2SXhZZDNNZWR1U0hCeEwwdHc4RGlmY1JBTU91TFZZMTVZYm02TDVLSm81bXdRUy9wK2R2eC94bW1GbFY3STdQYUlrbVNVWklrKysxdGtpVEpYcElrQllBOFNaTE1HQ09jYzR3eDVqam4yamtublhPMXRiYXgxczZ0dFZOcjdheTlyK0NKRGUzakg3VTNjY25yRXFjc0ZNbUVxVkE4U3hScUxrUW9mZTMrd3p6UmZjWkFNT3VOVmRyTVpSRk5uREtKNkhkWFJUUjliMTRvMmZaMXZQWnRMSFRSNzRkbCtQaHg5M1VvOXgxc2ZlTHRLZ0UzVEluNkNDV01XTUpCeFVGcmVRQzRGKzY0N0dveTRNR0NhaXF4SmhDZUdPRVZXN1NmaHlld3dXb1J1RStuV1hXaXMrRHZobDk3T2MvcHNxOEhkYVFMcEJXbk1ER3h4RUp1MkNRWEVrOHM0ZzdrY29VWUNPWnFRUWM5RVkyTlBxWVRobVpzUW9JSnRaazRaWXA5WjJLQ1dhWFY5RDIyVndvWGZkelhIQmVTaXdudVkvTG9TNDFDSXVyVFdRWml1VUlNQkxNZWlLT1prR1FzRnRHS3hySVhNSlc3WTZKSjBKODJrVTdUMTd3WGtzd3J5WWRqUWdrL1hrVXFZY2s1TGp0ZmRoL1BENFhwVVB6L0Q3Z0NEQVN6UGxpbFQ5Q05la0xDSy90bEJCT1h0ZnY2YUdocU94NUxBRjVlbE5OSEtQSHo2RXNGdzRqbGJnUVRrMUdmeGpJUXk1cGdJSmoxeEtvclAya3VOdmlZb2hvaWxuRFVJTDZQamNjdlM1OWVMc0gwVllKV2tVdVlEc1hFRW40ZXBvdGhlMzlmRTk2QU5jSkFNT3VMK0dReHVEaCtRRkZNV0lGUzZDZVhWU1RUbHphRjBjeTlwRXVYUlNveHFjUUVFNmRGZmQrTGYzZlFXRFlFQThGc0J2cklCcmpvaUJjU1NLekZ4RlBhbDJrMEhJdlU2VjRKWmxYRUVwTktYSDd1UzNuaTN3bkY0ZmovRzdER0dBaG1zeENLd01DaTZrVDNJZGtZWENTUFBvS0pPNEw3MGlaZ05kSGNMWHFKUmRoVjVORjNILy90OFA4YnNBRVlDR1l6MFZjcGlVa25KcHcrSW9sTnh4SDhyY3ZLMm4yUFpWVS9TMTgwZytobituNSsxZk1jc0VFWUNHYXpFWitBRE11RUUwWXlDTzdqMFlLN1JTMHZsV0RvZnRVTldMWktRUFM5K0xrTjJGQU1CTE5kNkNNY1lEbVZBcGFKNDM1WGtjTDdQdkxvUzN2Ni90YUFMY0JBTU51TitLU2xFMzVWejh0bHBISTNncm5ieDJHRUZVZGJBN1lVQThIc0RzS1RPWXhrd2tnSHdkZGY2ZjhSZmkwa2xzdCtkc0NXWVNDWTNjYXF5a3o4K2Ixb01QZnkvd3pZTWR5elhjT0FBUU1HdkZURXVmaUFBUU1HM0RjTUJETmd3SUFIaG9GZ0Jnd1k4TUF3RU15QUFRTWVHQWFDR1RCZ3dBUERRREFEQmd4NFlCZ0lac0NBQVE4TS94L1Aya3FBNUJUMThRQUFBQUJKUlU1RXJrSmdnZz09IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMV9QUkUiLCJGSURPXzJfMSJdLCJleHRlbnNpb25zIjpbInV2bSIsImNyZWRCbG9iIiwiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsImxhcmdlQmxvYktleSIsInR4QXV0aFNpbXBsZSJdLCJhYWd1aWQiOiIzMGI1MDM1ZWQyOTc0ZmYyMDEwYmFkZGM5NmJhNmE5OCIsIm9wdGlvbnMiOnsicmsiOnRydWUsInVwIjp0cnVlLCJ1diI6ZmFsc2UsInBpblV2QXV0aFRva2VuIjp0cnVlLCJsYXJnZUJsb2JzIjp0cnVlLCJ1c2VyVmVyaWZpY2F0aW9uTWdtdFByZXZpZXciOmZhbHNlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWUsImFsd2F5c1V2IjpmYWxzZX0sIm1heE1zZ1NpemUiOjc2MDksInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6OCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjo1MDAsInRyYW5zcG9ydHMiOlsidXNiIiwiYmxlIiwibmZjIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN31dLCJtYXhTZXJpYWxpemVkTGFyZ2VCbG9iQXJyYXkiOjQwNTYsIm1pblBJTkxlbmd0aCI6NCwibWF4Q3JlZEJsb2JMZW5ndGgiOjY0LCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6MTUsInByZWZlcnJlZFBsYXRmb3JtVXZBdHRlbXB0cyI6MywidXZNb2RhbGl0eSI6NiwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjE2Mn19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTA4LTI2IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiRElHSVBBU1MgRlgyRklQUyIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjUwODI2MDAyIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDgtMjYiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MX1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0xMC0yMSJ9LHsiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjcxNmMxNmNlMjE0MGI3MmZlMGI4YzE4ZGNmYjJhNzg5OTdkMDk3MTUiXSwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiNzE2YzE2Y2UyMTQwYjcyZmUwYjhjMThkY2ZiMmE3ODk5N2QwOTcxNSJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiWXViaUtleSBCaW8gU2VyaWVzIChFbnRlcnByaXNlIFByb2ZpbGUpIn0sImRlc2NyaXB0aW9uIjoiWXViaUtleSBCaW8gU2VyaWVzIC0gRklETyBFZGl0aW9uIChFbnRlcnByaXNlIFByb2ZpbGUpIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NiwicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoyfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCIsInJlbW90ZV9oYW5kbGUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlEUnpDQ0FqR2dBd0lCQWdJVWV4OW5UOXZ3Wk5YUzQ4M0xkaVlHZncyU2pTb3dDd1lKS29aSWh2Y05BUUVMTUM0eExEQXFCZ05WQkFNTUkxbDFZbWxqYnlCQmRIUmxjM1JoZEdsdmJpQkpiblJsY20xbFpHbGhkR1VnUWlBeE1DQVhEVEkxTURnd01UQXdNREF3TUZvWUR6azVPVGt4TWpNeE1qTTFPVFU1V2pBbk1TVXdJd1lEVlFRRERCeFpkV0pwWTI4Z1JrbEVUeUJCZEhSbGMzUmhkR2x2YmlCQ01pQXhNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXUxTWV2bnk5ZHlPOVpVQzM5U29NaExjUi9EWHJ0Ri9jaU0xMnRjaXkyRVhBWjZNa3JpdlZ0Q2ZFVk05WDZJU1RFbkJQNnVTWVlvdjZwcHY2TzZKaDJOSG1ZbTR3K0puUzRWbkNQVTdtSEFNZlZJMk1HVFRNVk9ldzB4VXNHN3NJU0lrSURVQm11azhZSzljNXppYzkrdkZRR0xJa3NkWE81aVZGSWdORzUzY0dYRDRaTFpvQVBpdTBQRW96eEFxWUlhSTRneEtoT0EzUzgvVzhtSVdzdTZvZnlqNEd2a0ZHNlo3a3lGMzEwN1A3bXdGSExySTNFTmFQV01PRmNUYUdhMGR3Ky92VlJ3alJjRVpCVnN1dVQvODdja1NzMGE1cGt0M3ZaQmxhWWVUOHB6U3JlVjdtb3djSU05MEwyaWFBVGxQMG54bWFFNm5PeVRib2pGVmwyd0lEQVFBQm8yWXdaREFkQmdOVkhRNEVGZ1FVU1hFaDNzYTNidER1cm00TU0vQzdTMWxSdXVZd0h3WURWUjBqQkJnd0ZvQVU2cmRDa0o0TWUyUjYyMVI4QTdwOFRwL1lvV0V3RWdZRFZSMFRBUUgvQkFnd0JnRUIvd0lCQURBT0JnTlZIUThCQWY4RUJBTUNBWVl3Q3dZSktvWklodmNOQVFFTEE0SUJBUUI1R2MzaGFmdHA3aEtzRVpzbytpL1o1blJ1cWRtekcyV0NsVW9SVXFiYVB5Z2xuSkRqS1Iva2ZnT2w2aWJiRi96dGhtM0ttWFE3SGNESVAyeE1kRzdVMkwyaW1iSlFIcVBmL2gySHFvamI0clpndWUrNlc0a3RTUjVlbFI5TDFyWXFFL1NHWU00aUVLb1ZRU3Y3UlQxcnhJZVdpS3N3L1Z4eGkvUU9uc3gzRjd4ODBDQ1lnQjRFM3lReDhWVFc0NDBoVEV3VEExZU1IT2l4MzJ0UHR5eUhJYThQVlZJZlZwSFFKQmFNVnZ2NTA4VUVqd2tiVTJybmpmem9TVE5TOUE1alVROG1CU3ZlOTVyakIwZG85OEVVK0R4ZEJxWDIrSDZpNXdsSUNGZ3poZHpjc25lOWhHS1Q2bHpUWDRjSWRKc3JZMit4bGVLMEZGUXk2bEdFVkxFZSIsIk1JSURTakNDQWpLZ0F3SUJBZ0lVUjM4bXEyNlNmMnN6VlYyQmRHNldFTjdrdVdVd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVJZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU5ZMFdiOW9Qb1JvS29ReVdQYUpwejExdnJXVGc2elR0bU5qMlZvS1JueXZLR1JxcHpiODN3NWw2WUE5NlVZa1lCRFFQMGlsTzJEUGU2d1dxVlI1ekRmUnpkY0g4YmgrTDdkR0d2YWU2aFJUWmhrRmtDcFhEczRIY2NrbnJEZjhGQ2xKN0hlMzlKZjQyL0cxUW0yeno5V1dtclBYdGdpSy94MDVHanNRZkd1REcxemY1UVRVVWllOGx3eW1LM1RmZE92TmVlSkFBUGUycG43SXRmUmIrclZyTldpRHpsUm4ydk5uWjJ3UG80d0gvV0o2ZGhYWkcrck1XVCthNkJvY2cxVWZJdzZrZHVuRzRiVHBaenN2YWNGWXlSMG1wZitEZU9ucFNXQW15d0pXSHZUbGYyWVh4RnllWGNUQUNkUWxjTU5HSjJWaFpRNDh4dFA1L1JCUC84a0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ2h5NDJva2lxY1RTMWlxYS9IUldqa0JuNEgvTUI4R0ExVWRJd1FZTUJhQUZPcTNRcENlREh0a2V0dFVmQU82ZkU2ZjJLRmhNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUFuK1JISVBidE1FRE5kVDFnOEgvUml0QWtVZExnQXQxdFdHV25sajlrbmJ2NC80R2xYN0M5cDQ1ZWZQTzkvYVpMNk9WMVhSS0JpNkttdEJXNUs3bnVZRW5NeC81QnFCU2JMVDdyaGR1QzQ5VEJlTWI5UEhkWHNUbFNWTlllZnIxZEdpZHI0ajB4VkJRTGIxcmtuREFiZFdEektmdm5heUtPOEZyd2U3SHg4NDNNRy9ySitjMFhydVV2YmZWVENITGlJV2hNN29ORGhMOHhvYjZ4VW85S0xLY1NMK0l0WXNPMy85V2I4UTlHanNxTDRGWHNEY0cxU2FZaDdLcGZ1TW1PaXhxekpaTzJuSWljUFlSZzFJMlN1aVVmWU83MHRtZEhjYmwra1NRbVNZdDdycTR2aUlMZzJHeDNqOXJJVHVXVGpiYVVhU1NReGdPbU1TSHV5ek1BQyIsIk1JSURTakNDQWpLZ0F3SUJBZ0lVVG5iYkdJUjJOSHZ6cUlLRkFlUXdHMVhCaXMwd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JCSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVFZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU9zWGozazA0QmFuNFRZZHRaS3FEL09QSnh5RHlhUG1DQlVGVWlhWklnVHRlWm5qM1gyNURoZ3BaWlhzQzREMHlkSWNybEE2d05VSW5PUkwvTDl6QmJURUlNQVZNR282ZzdVS0FtYjJNRjZBSGJuaFlKZDllaWt1cFZOV1NoSE5ZTmM0R0JkTzFZTjZBZlVxdkpoSGJlM1Y0U05NUG1CUkVLSlBWejdUaHdnbWdnVGU4V3MySzAvd3NxdjJ3U0U3cGJDQnNVWmhJWDUxYlpNM3BxRHdKUFRtUkZFdnQwLzZ0RzVlTzhGM2oxNE9YcWZFaG1qbjFWdnhLRFlRT0xaQXhDd3dnQzBQNENkZld2M3k4UFNSOEkzNTRoTzFZK0d6Tmp2SXFYMzhOS0x5d3VJWUhGZXJPeE5seEVNQnZGaFlCdVJ1WUFra2dVYVBxTjZVQmhzSUxyc0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ0NvUkhoaXlObmJuWFJXSUw2WkJYb0JYOVlUTUI4R0ExVWRJd1FZTUJhQUZDQW9VQ0VicEZwYjZGUExuWjNGNVB4c0wzb2ZNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUNRRmFmSkkxLzVXZzlDRUVpbUUxUlA1NFJnUXdUTlRPT1FzTEFDVGUrckl0bEZRekM5WkRoclY4Mjh5WDdqenkrQUFzcDNpeks3VDF0aDJkbDdtK3R1MHN3MlBhL29sYzAybnQ2UHlJdzM0OGdhSHpoSTErMEtFNDVxeHZGRGVMMmxNeGJQZkNZdnlFRWFZemppUUVMVTU5NTFwWEdXeUtNYS80Zkx0TytaS09YaE11VmVxNHJYRFBJNTRXNkpIT2lBYWlLZGl3KzVlM2Mya3QvakZJUXRNNnZNWGc5TE5GemRqRVROdDIwVlg5UWV2UnBGWmZ1Y01HOXdDYVFEb0ZsUHpwVE1KS2hQZXYvaW1KbVpZaEtmcjBsTGNlbXRxakl4TEFvcVpkT1lmSEJnNit2QWNkUEkvaWF1R3BVQXY3WCtVS05tRHdqWjJCYUg0c0x3aEIybSIsIk1JSURTRENDQWpDZ0F3SUJBZ0lVVWNtTVh6UklGT2dHVEswVGIzZ0V1Wllaa0JJd0RRWUpLb1pJaHZjTkFRRUxCUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JCSURFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURtNTU1YldZOVdXK3RPWTBySVdIbGRoK2FOYW5vQ1pDRmg3R2szWVpyUW1QVXcwaGtTRzZxWUhRdFArZlp5UzMzVkVydmcrQlFxbm11bWdOaGZ4RnJrd0VaRUxlaWRCY0M4QzRBZzRucXFpUFdwenN2STE3TmN4WWxJbkxOTEZjWlkvK2dPaU42Wk9UaWhPNS92QlpNYmo5cmlhQWNxbGlZbU5HSlBnVGNNR2FFQXlNekVNTnkybm02RXArcGpQNWFGNmdpMjF0L1VRRnN1SjFqMlJqL3luTS9TZFJ0K2VjYWw1T1lvdHhIa0ZiTDl2dnYyQTJPdjVJVFpDbHc0Yk9TOW5weXBRaW1PWjVRQVl5dG1ZYVFwV2wvcE1ZejZ6U2o4UnFrVkRORUpHcU5mVEtBMml2TFl3WDZsU3R0TVBhcGcwSjg0bDlYMHZvVk4vRnBTNFZDVkFnTUJBQUdqWmpCa01CMEdBMVVkRGdRV0JCUWdLRkFoRzZSYVcraFR5NTJkeGVUOGJDOTZIekFmQmdOVkhTTUVHREFXZ0JUUzd1OWFJbzA2YlZ3amx6M3loZFVtOFNWN2tqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQTRHQTFVZER3RUIvd1FFQXdJQmhqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFZTXpnTHJKTElyME9vdlFuQVpyUklHdWFiaUhTVUtTbWJMUldwUmtXZUF0c0NoREVIcFhjSi9iZ0ROS1lXb0hxUTh4UlVqQjRDeWVwWWV2YzNZbHJHOG83ekh4cGZWY2FvTDVTZXVKa3pIeEtuNGJUYVNwOStNdndhbW5wNjRrWk1pTmJGTGtuZlA5a1lLb1JIa01XaGVSSjFVc1AxejRTY21rQ2VJTGZzTXM2dnFvdnFqV0NsRnNKcEJjc2x1WUhXRjdiQkoxbjRSd2crQVRFb3BZNElnR3Y2WnZ3YytBOXIrQVQyaHFwb1NrWW9BbCtBTll3Z3NsT2Y5c0plMFYrVEE5WVkvVWxhQm1QUFRkMC8vcjl3dmNlUFdaa1BqS29BQy96VU5oZkRiaDRMVjhHSHMzbHlYMlhvbUwvTE5jOEpZenlJYURFaEdRdmVvUGhoL3RyMWc9PSIsIk1JSURQakNDQWlhZ0F3SUJBZ0lVWHplaUVESkVPVHQxNEY1bjBvNlpmL2JCd2lVd0RRWUpLb1pJaHZjTkFRRU5CUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTVo2L1R4TThySVQrRWFvUHZHODFvbnRNT28vMm1RMlJCd0pIUzBRWmN4VmFOWHZsMTJMVWhCWjVMbWlCU2NJWmQxUm54MW9kNTg1aCsvZGhLN2hFbTdKQUFMa0tLdHMxZk81M0tHTkxadWp6NWgzd0duY3I0aHlLRjBHNzRiL1UzSzloRTVtR05ENnpxWWNoQ1JBSGZyWU1ZUkRGNFlMMFg0RDVuR2R4dnBwQXk2bmtFbXRXbU1ud08zaTBUQXVjc3JiRTQ4NUh2R000cjBWcGdWZEpwdmdRamlUSkNUSXErRDM1aHd0VDhRREl2K25HdnBjeWk1d2NJZkNrenlDaW1KdWtoWXk2S29xTk1LUUVkcE5pU092V3lETVRNdDFid0N2RXpwdzkxdSttc1V0NHJqMGVmbk85czBaT3dkd01SRG5INHhnVWw1Wkx3cnJQa2ZDMS8wQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQjhHQTFVZEl3UVlNQmFBRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRTXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJEUVVBQTRJQkFRQzNJVy9zZ0I5cFo4YXBKTmp4dUdvWCtGa0lMa3Mwd01OcmRYTC9jb1V2c3JoenN2bDZtZVBNcmJHSkJ5SjFYbnF1QjVzZ2NSRU5GeGRRRm1hM21pbzhVcGYxb3dNMVpyZVhySjBtQURHMkJwbHFiSm54aXlZYStSMTFyZUlGVFdlSWhNTmNaS3NEWnJGQXlQdUZqQ1dTUXZKbU5XZTltRlJZRmdOaFhKS2tYSWI1SDFYZ0VEbHdpZWRZUk03Vm9sQk5sbGQ2cFJGS2xYOHVzdDZPVE1PZUFEbDJ4TkYwbTFMVGhTZGV1WHZEeUMxZzkrSUxmejNTNk9JWWdjM2lyb1JjRkQzNTRnN3JLZnU2N3FGQXc5Z0M0eWkweEJUUHJZOTVyaDQvSHFhVVlDQS9MOGxkUms2SDdYazM1RCtXVnBtcTJTaC94VDVIaUZ1aGY0d0piMGJLIiwiTUlJRFNEQ0NBakNnQXdJQkFnSVVEcUVSdys0Um5HU2dneGdVZXdKRkVQRFJaM1l3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRREk3WG5IK1p2RHdNQ1FVOE04WmVWNXFzY3VibHZWWWFhUnQzWWJheG45Z29kTHg1c3dIMGxYcmRnamg1aDdGcFZnQ2dZWVg3RTRibDF2YnpVTGVtck1XVDhOM1dNR1VlOFFBSmJCZWlvVjdXL0UraFRaUC8wU0tKVmEzZXdLQm82VUxlTW5mUVpEclZPUkFrOHdUTHEydjVMbGo1dk1qN0p0T290S2E5SjduSFM4a0xtelhYU2FqMFN3RVBoNU9BWlVUTlY0enMxYnZvVEFRUVdyTDQvSjlRdUt0NldDRkU1blVOaVJRY0ViVkY4bWxxSzJieDJ6Nm9rVmx0eURWTEN4WWJwVVRFTHZZMXVzUjNEVEdQVW9JQ2xPbTRjcnB3bkRSTFZIdmpZZVBHQkIvL3BFeXp4QS9nY1NjeGp3YUgxWlV3OWJuU2JIeXVyS3FiVGExS3ZqQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJUcXQwS1FuZ3g3WkhyYlZId0R1bnhPbjlpaFlUQWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQXFRYUNXTXhUR3FWVlg3U2s3a2tKbVV1ZVRTWUt1VTYrS0JCU2d3SVJubHc5SzdIZTFJcHhaMGhkd3BQTmlrS2ptY3lGZ0ZQemhJbXdISmd4eHVUOTBQdzN2WU9kY0pKTmt0RGczNVBYT2Z6U24xNWNGQXgxUk8wbVBUbUliOGRYaUVXT3B6b1h2ZHdYRE00MVphQ0RZTVQ3dzRJUXRNeXZFN3hVQlpxMmJqdEFucS9ORFVBN2JlNEg4SDNpcEMrLytOS2xVcmNVaCtqNDhLNjdXSTB1MW02RmVRdWVCQTduMDZqODI1cnFEcXNhTHM5VGI3S0FIQXc4UG1yV2FOUEcya2pLZXJ4UEVmZWNpdmxGYXdwMlJXWnZ4clZ0bjNUVjJTQnh5Q0pDa1hzTkQwNWRDRXJWSFNKSXMrQmR0VFZOWTlBd3R5UG1ueWIwdjRtU1R6dldkdz09Il0sImljb24iOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJpY29uRGFyayI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsInByb3ZpZGVyTG9nb0xpZ2h0IjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwicHJvdmlkZXJMb2dvRGFyayI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTAyLTAxIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZdWJpS2V5IEJpbyBTZXJpZXMiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlUyRjEwMDAyMDI1MDIwMTAwMiIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTAyLTAxIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3Nn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wMi0wNiJ9LHsiYWFndWlkIjoiODE3Y2RhYjgtMGQ1MS00ZGUxLWE4MjEtZTI1Yjg4NTE5Y2YzIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI4MTdjZGFiOC0wZDUxLTRkZTEtYTgyMS1lMjViODg1MTljZjMiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiU3dpc3NiaXQgaVNoaWVsZCBLZXkgMiBGSVBTIn0sImRlc2NyaXB0aW9uIjoiU3dpc3NiaXQgaVNoaWVsZCBLZXkgMiBGSVBTIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfSx7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NiwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjYsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNpVENDQWc2Z0F3SUJBZ0lVT2ttVTM1SWljWG9WUGpmdndwRzdNTjZ0SFBVd0NnWUlLb1pJemowRUF3TXdRekVMTUFrR0ExVUVCaE1DUkVVeEZEQVNCZ05WQkFvTUMxTjNhWE56WW1sMElFRkhNUjR3SEFZRFZRUUREQlZUZDJsemMySnBkQ0JHU1VSUElGSnZiM1FnUTBFd0lCY05NakV4TURBM01Ea3pNRFF5V2hnUE1qQTFNVEV3TURjd09UTXdOREphTUVNeEN6QUpCZ05WQkFZVEFrUkZNUlF3RWdZRFZRUUtEQXRUZDJsemMySnBkQ0JCUnpFZU1Cd0dBMVVFQXd3VlUzZHBjM05pYVhRZ1JrbEVUeUJTYjI5MElFTkJNSFl3RUFZSEtvWkl6ajBDQVFZRks0RUVBQ0lEWWdBRXRnT0M3SUt4aXBNSjdiVlBUVDgzT2U5MHh6SFBDZWJ4eUN0Zy9XcnNUclJhU25ZaWdtSkNCOC9qcUJONE9RRzJkWjVqY05zTDZTd0hvc1lEUkpjK08xems5aTVHRVpXZjNJcjk5MkE2ZHVNc3A1MWxxNGZBZ2EvVXpUTjkvRWJ6bzRIQU1JRzlNQjBHQTFVZERnUVdCQlRmeHpnOEdHellBaWRLTDYzdWhTaXJhWEpJS0RCK0JnTlZIU01FZHpCMWdCVGZ4emc4R0d6WUFpZEtMNjN1aFNpcmFYSklLS0ZIcEVVd1F6RUxNQWtHQTFVRUJoTUNSRVV4RkRBU0JnTlZCQW9NQzFOM2FYTnpZbWwwSUVGSE1SNHdIQVlEVlFRRERCVlRkMmx6YzJKcGRDQkdTVVJQSUZKdmIzUWdRMEdDRkRwSmxOK1NJbkY2RlQ0Mzc4S1J1ekRlclJ6MU1Bd0dBMVVkRXdRRk1BTUJBZjh3RGdZRFZSMFBBUUgvQkFRREFnRUdNQW9HQ0NxR1NNNDlCQU1EQTJrQU1HWUNNUURzdjRLNk5mSnZmdnpkME95Z3dKL0FCaUx0Z3RKV2hYVGVVbGx0ZHFhNFdzT005dHZ4NjM2djVGSXZaUmtLMVhvQ01RQ2RvUFErYTRmREJFaU51ajBXczMzdVVRaEdycHNlUERHZlZYbjRrRXBiVElCZU9kVkF4Ly9Uck1DL1NWYitic2c9Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQU5FQUFBRE1DQUlBQUFCaUVOSDlBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFBN0RBY2R2cUdRQUFDWnZTVVJCVkhoZTdaMEhkQnpWMVlEWERUZWFzU2syRUV3eFlNQ0FBUU9HbjBEb0VDZEFDS1lrUUNDaEJFaUFFRWdnaElRRUhBaWhkeExBWGJMYUZxMTY3NzJ2ZXU5OXAvZVoxWC9mekVwYTFnV0RaNldWOXQzekhSMGRnM1puMy92bXZ2dG01NzJ4ak9IQU1iV0JuY014MVhFZzUxUlZIWFVUTmMxdDlvS0t0K0x6SDQzTXV6bThkSDFFdzZsUm5TdHRneXNjN21OaWlXT2MxREZPRWpQYm9hQ3ZvY2RYMllkT2krcTRPTEwrMXZEU3h5TnozNDdQaXkyb3FHdnRjQk1FMk9MMTV0dGl2ODRKZ3REVzBaRlU1bm8zcmZ3Ulc4bDFZYVZydHBZZi9YWHRuRzF0bG1pM0pVNnlKSTlaVWpHaEJQUTQ5SHZVNk54dHJjZHNyVDE3ZThYMXUwc2V0eFYva0Y2ZVdsN2IyZFVsaXFMWG5nUEd2cDFqR01iVjFCcVdWZktjTmZmRzhOSXp3aHFPRHUrY3Y2ZlBFamxzaVNFc05zYmk0Q3l4dkk2QUNRMzA3bmF3cVBmQmdZamh3eUlHamc3ck9ITjMzUzFoSlgrMjVVZmxsdFczdEhNYzUzVm8vN0VQNXdpQ0tLMXYvaXk5OUtHb292VTd5bGZzYkpvVDFvY2tpNWVSNXZDTGpiWllTZlRHbUZBRCtoMmNpK1dRQ2VDRG5aMGIxbnZjenNaTGRwUTlHbFAwWldaWlpWTXJSVkZlay9ZVC9zNUJoZ1BoUGtncXZDdWlhTTN1K2tYaFBYT2lSaXhXR2drTzJKbHg0YkJ6b1FscHNWTElBVERCVU1KS3pZMGFXUkxlc3phczd0NDlCWitsRlZVMHRCdzQyMzNET1o3bmE1dmJQa3N2dVd0UDRTazdYZlBDK3kxeGVtNnpRMGFsOW5wN1RNZ0RWb0IyOFJKSXNpQzg3N1FkMWZkRkZueVZXZGJZMWdIekFhOVZlOFdrY3pEdmFPdm9oQnJ1b2FqQ004UHJGMFQySTVkaElJY1hoWmZHZ3lsbWI5QlFDOXBCY1M5QThsdXdwL2VjOE5ySFlncWljOHM2dTdvMVRmTzY5YzJZZE01TmtNbGxydWRpY2kvY1Zyb292QnZKQ3pVakpGSnNHK2JBZ0NIZ2lWT3d4SWxMd2pvM2JDOTUwWmFiVVZHM3Y4SnUwamxYUy90N2FlVTNoWlV1Mzk1Z2lSelNwd3NzcnRzd0J3ZUpNaFE0czJmZzJHMTFtOEpMUHNtb2FHanIyT2ZWazBubjdQbmxqMXFMejloVk55KzhEMmtMTlJ6ODlIOXBER1kvd01RQ1RTbkkrV0c5WisrcS9aMjlKS0dvY25CNDJLdVhUMHc2OTFaYzN2VmhKY3ZDTzlCZkdqVWNUbktZZ3dmVmRycDJObWI1N3JhYmR4ZTluNUJYMDlMdTFjc25KcDE3TkNMM3pHM2xoMFgwbzBvT0NidlhpMkl3QndhY0FYUGl4SVhodld1L0x2MWRkRjVLZFpOWEw1K1lkTzdtOE5LanY2NzFWbkl3WS9WN09Rem1ZSEF3NE55Y2lLRmp2cXE1TGJJc3ZMTERxNWRQVERxM1BxSisvczRPL2MvMGJ4cDhYd2lET1Vqcyt2QWE0MTZ3by8zeTZJYlBxd2U4ZXZuRXBIT25SbmVpTCs5dEU5ODA3UFZ5R015M1l0T3JPaGdubzBiUHRuVzk2M0o3OWZLSlNlZFcyZ2IxNnlPY2Zya0ZPNGY1WGhqeXhISVdwN2c2ZHVqTk9zYXJsMDlNT3JmQzRiWWtlOUJWRnI5WHdXQytLMDRCWEZybGRHK3A1NzE2K2NTa2M4ZkVrdWdlS2V3YzV0QnhpdURTQ1hIRTZ3MEh2Q1o4akpOQ3pvR2hmbitQd1h4WERPZmlxZGUrelRrOXoySG5NSWVPTjgrUnJ6WHM0KzRTN0J3bUFHRG5NRk1OZGc0ejFXRG5MTkVoajErREJKclFkYzVvN3FoOUVSbEt3T2VkWXUxbXVYT0dXUHZFVnpLLy94Uk56SmtnaHBnN2U0RlBaM3hNLzNZTEtMUFdPY01lUXlsMFFyc25tVkF0Q3JYN0FpdXh5RVlzdFJOSE9vaGxEbko1TEhXc2t6cmVTYTJNbzFiRlV5ZkdVeWVOYzNMQzdPR1VCUExrQkhKVkhIVk1MTG5FUnM2YnlwdlRacFZ6NDFscVVqajlGemlQNTFxUld3dDF0NDZLSlZjNFNmQnBkUUoxWmpLOUxwVytLSjIrUElPK0tvdStOcHU1SVllOUpZL2RsTS9lVnNEK3JJQzlzNUQ5ZVNGN2w4N21vbG5DM1VYc2ZjWG81Nlk4OXJJTUdoUmNiQ2U5amViWHBJRmc5amhucEM1SVl4R1F6TkR2TUhBc3NwRndIcDhVVDU2WlRLMVBvNi9Nb20vSVpVQ21lNHE1aDh2NEp5cjU1MnFFdjlRS3I5WUxielFLN3pRTEg3U0lIN2RLbjdWSi8ydVh2dTZRdG5WSzI3dWtIVjNTVHAxZHM0WGQzVkpranhUV0xjSG5mYUtTMjVqSkxJdlZuWU1HOUd2VlFEQWJuRE5PMFBHc05pK0dXR0tIVEVhZGxraXZUMk91elVHSjZwRnk5b1VhL3ZVRzRjTldFV1NLNkpHZEEwcnFrSkk3cXBZUWFpV2wxZEphRTZPMXNGbzdwM1Z3V2hlbjlmQmFyNkQxNmZUUExnWkZ6UzE3aGlSUG1Wdjl1Rlc4dllBN1BvNnlST21GaDEvYkJvSVo3TnlFYW5xSkJwWFprWGJ5NUhqcWdsVDYyaHhtY3hIM1pDWC9TcDN3Zm91NHJWTzA5MHNaUTBxeFc2bWwxVllXeVRRaWVTakZ3NnRqc21kczN5c3RReUFHQmMrZWJ2bVhKZHlKNEp4UjdQbzFjaUNZMmM3cHVRMFMyeEVPY25VaURXTUVGQ3QvckJiZWJSSER1MlZJWTJXRTJzUnFQV0NZN0tFVkQ2ZDZSTTBqYTJPcVo4emovV1FoSFpEQ3c3dWtYMkRudmgxdmVrTzVEUXFSdGNrVVZHbVBsTVBRS1c3dmxOS0dsR3BLaFpHUlZzQXRyTmFCb3BQVGRuWks5eFp6TUlIRnpoMFFQYjB0dEtIWi90Vlp6T1BsSEF5Z3puNmxpbFM3ZVkyUVljVDBRQ2JEOGEwQmxlc083TnlCOEE2bWJoaE1WempKOWVrMFRQaTNOQWpXWHJtR1VxRSt3MG50dXdaMjd0dlFuVnRnSTA2TUo2L1BZWjUzOFdIZGNnV2g5Z3Nvc1hrUEZNZDNDZXpjL2pFeVhCU3h4SWF1dE4xUndMN1JLS1FNeVoyOHBtRFpEaUd3Yy90SGQyNnBqVHczaFg2d2xQdXNWU3gycTZPU0J3dDNpSUdkMnhkZ213NWt1SFdwOU1ObDNMWU95VVdwM01GdXc0M2pRSUdkMnhkNmhsdHNKODVKb1VDNDdaMVNBNjNpNnMyc3dNNTlrL0VNZDVpVldKTk0zVi9LYmRXRms3Qnc1Z1YyN3B2b2s0YjVWdUxrQk9wbmhld25iV0l0em5CbUIzYnVtK2pPSFJ0SDNwakx2Tmtrd0tTQnc4S1pIZGk1Y1l4UkZjbzRHM2xST3YwbkY1ODJyTUFzMVhzb09Nd0w3Tnc0dW5BTHJNU3BpYWlNaStpUmU0VDliTEtONDlBQ096ZU9QcW91anlWdnlHWGViaGFyS0ZYR09TNHdnWjBiSjRxWVp5WE9TNlgvVU0wbEQ4ckRFczV4Z1lvZVh0dmRKZDBYMHM3cGxkemNhR0s1azl5VXovNnZYV3hqTlFWL2RSK3dHQlMxaUc0SjNiTVpIN0xPZWI5VUpTNUFTWTdQR0piWktmeDZDOTVKODZEYk9RRjRXd0RHZEZuekF0bDI5dEhNYUZzN3BidUx1SldoNnh4ODVpZ0NqdWEyZlBhek5xbVptYUtySTZMcW9XUVBET0w5Z3RiTm8vVVFyYXdHL2RISWFQVzBXZ3RRYW8xT05hVldrWk5Vemt6Z3lGMzZCMGtjVUxZMENqZm5zY2M2OWZVUWdGK1BCSUpnYzI1dURIRmVDZ1ZKTG5rd3NOZEhRR2RHR1JzUXdTMjFqRkF6aDVYNEFkbmFLKy9wbG5kM3lkczY1YTg2cEMvYXBVL2J4STlieFk5YXhBOWF4UGVieGZlYXhYZDEzdEdCS2M1TUJJNGNQZzU4aXIvV0NmZVZjT3ZUNlNNZG9ibldFRjBpY1I5dUo2L1BacUNiR3hnTlJyUUFCUXpaVUNsbURTdTd1NlYzVzhTWGE0V25xN2hIeXJrSFN6bVl4RzB1NU80czVHNHJZRGNWc0xmbU1iZmtNVGZsTWpmbU1qZmtNTmZuTU5kbEk2N1YrZEhNQkMzanpVV2Y0b3BNNXB3VSt2ZzQ4akRiWHQwUk9JTEZPZjJhM0x3WTlFM1hBeVdjdlU4ZUNVeVNnNG9OWHJtVVVIZDFTUys1aEx1TDJhdXptWFZwOUJsSmFIVTdsRFhIeDZGMS9DdWNGSHprbzRGWThpZ0hDV2tBT01LT2dMTmkxckRVVGk2MG9TOFk1L2gxUjBBSkZ1ZFFNWUhXcFY2VVRyOVVpNzdwQ3NRMU9SQU9LcmIwWWVYZmplSXZpcmtONmZSSjhlUVJEaElHZEVONnhNVG1NVVpON1V2RXJBTStGTFQ4MUF5cEV3U0xjK2pERThjNXFSL25zUiszU3MycytjTXFDRGNrZXRJR2xiL1hDVEJLUWxaRCszUkFjeHUyR2I4WXY0Y09FNS9hcnpzQ1NoQTVGMDJjbmtqL3BveUw2WlVIUlBPem5GdjI1STZvcjlVTDErVXdLMkpKMU9Mb1JQZHBlcjlEd2dTSW9IQU8ranNTaWpueW9qVG1aWmVRTTZKUVpsK1dnNUc2aGxJL2JKRTI1Yk1ueGxGejlYZWN0aE05eEFrZTV4YlpTSmhTd1J5K2xsSkZHQWpOQzlVekJvblQyaXMvWE1hdFRxVG13OXNaSTR2ZllXQ21odWwzYnR5QVpiSGs3UVhzcmk2NW16ZjVMaEpHUVJQVk54dkVIMll4aTIzZTJoSG50bWtqU0p5YkUwMmNHRTg5V01vNSt4WEM3S3NrZllJVzFTUC91b3cvUFpIU2MrcVV6OVF3dmt5L2MzcVNXMkFsejBxbWYxL0ZaNCtvZ3FscnVqeWVzVHBLZmJ0WnZENkhSVStRZ3JlRFNzN3ZHREJUU1pBNHQ4Uk9YcHhPLzZWV2dFSFExRnB1REVyRDNCSGxEOVg4ZWFrMGxJekcyL2tmQTJZcW1YN25JT3RFRTBjNXlLdXltSDgxQ2k3SzVKV3JidG5qNkpmdjEyL1hRWnMxZzNCNFlKMWVnc1M1RlU3eXBsem0vUmFoaVRIVE9VaVpYYnkyclZQYWxNZUMxcFBYUi95T0FUT1ZUTE56cUtKSFAxZnE5eTk5MFNhMmMyYk9XU1Z0ckk1V1AyZ1JyODVpRnFJWkt4WXVDQWdTNTA2T0p6Y1hzWkNRdWdVem5XUFZNU2dRdHpTS2wyYlFhRHQ2N0Z3d0VBVE9vU3NYcXhNb0tMbkN1K1UrVTcvMUloVlB6b2p5Y3Exd1lScU4zZzVmSlFrR2dzUzUweE9waDBxNXFCNTUwRlRuUm1WUDJwRHl4eHIrM0JRS3ZSMTJMaGlZZnVjaWtBZG5KRkdQbEhQV1BubklWT2VHSlUvaW9QeDBGWGQyOHZqVllMOER3RXc5UWVMY21pVHEwWExPWnJaejhHcHhBL0tUbGR5WjJMbmdJWGljZTZ3YzNSNXNybk13VWp2NzVTY3F1RFhZdWVCaDF1YzVjTzVKN0Z4UUVTUnpDS2puakxzMXpaMURESXVlK0FINWQzaHNEU3FDeExuVDlIbHJaSS9KZHdpUFNKNlVRZlJsNjFxWXQyTG5nb1FnY1c1MUF2WExFaTZzVys0VnpIU09rRDFadzhxTEx2NzgxUEhyYzc3dmpwa1dnc1M1aytPcHpVWGN0azZwaXpmemV3aEc4UlM3MVgvV0N4dlNHZnc5UkxBUUpNNmg3MXNMMkMvYXhUWlRkMFFYVlU4dHJiN2JMRjZWeGFCbHcrQWN2cEZwMmdrQzU5RFBGVTYwaDZ2cDk1V29uckZPWHR2YU1YNWZpWEh6SEU1MTAwdVFPSGUwZnYvY0d3RzRmdzVLdXRnKytVSDljWkhlNVY3WXVlbGxtcDBEOU55ejFJYnVFLzVybmZuM0NVdmFXT0dvK3FKTHVDaU5XWUx2RXc0R2dzUzVCVmJ5N0dUcW1XbytaMFFCUzh5TlZsYjdiN3QwUndGN0F0cE5rckJFNEZRM3JVeS9jOUQ5K3Jxdkh5U1FENWR4Q1FPeTZRdXEzYkluWTFoK3ljWEQ3QlV0aVFEbmNGVTNqUVNKYzhEeVdQTE9RamE4UitvVFRWN2ZLbXNlbUVsRTlraVBsSE5uSmRPTDRVMVJ0ak4ydmhuM3o4RDN3REFCWXZxZEE2Q3pJNG1sZHJSUitpZHRZaU9yU3FidUlReXZKV3Jvb3NuL090RGV1ZWNtVS9CZWh1aGU1d3dtek1QeUJaVGdjVzYrbGJ3MGcvNUhnMUJNS0d3QU5uV2xGVThscVg3VklUMVp5VjJkelp5ZVNCM25wR0R1TXQ4NGdDZzk1M2t4VXVDQm1maWZUV0pDL2UvS3hIbGk0TnV3d1VuUU9PZUdrZzZtRVU5Vjh2RUQ4b2pwOHdnOTJ6R0twNUhSNGdia3Q1ckZ4OHI1Vy9QWWk5T1kwNUI4NUpFT1lxRU5QU01BN2Y1bmRKNWYxODRJWm9SMndlTWNOTm1xT09ybmhlelhIVktucWF1L2ZBUG1KME9TVmtHcTlqNzV3eGJwTHk3aHNRcHVjeEhhdy9XSDJjeWxHY3lGYWN3NUtkU2FaR3AxSXRwNTg4UjRhbVVjZFh3Y0NWNGVxN1BDREtCNEJZN1JXYVp6dEFOeGxBN2EwMVBmMWhQdGhtbER1MkV1QVd6RVlodXh5RVlzdEtKblBTNndFcENoNThYczZ5U1p5TVRCYVdGUU9BZm9qUVhOZldVbTgzcURBSU5nNExaTWh4Zm1WTStnNEdsaXRCSzNtaklvdy9RQ3h0ejNXOFF0RGNMTHRjSnoxZnlURmR5dnl6Z28vdTR1OXU0dC9KTjg5c2Q1N0MxNTdNMjVpSnR5MFNiRDM1c2JjNW5yZ1J6bTJoenZIcjlYWnpFL3pHS3V5cVN2ektRM1p0S1haOUpRYVZ5YVRsK1NSbCtVUnE5UG95OUlvODVQcGM1Tm9kWW1VMmNsVVdja1VhY21VajlJb0ZicCs5R0N3V0RxSWp1eTBPdlp4SGlObmRzMzBDNVJjUHFTMEpTL3JlREFBMGJ4dm5WQUE4eUcybkZJUlB2ejE5Rm9BL1hjRVRWMVNISDJ5OUc5VWxpM3RMMEw2YWh2b0M1OTFDcDkyQ3A5MEFKMlN1KzFpSWZDdS9yKzVmOXBFdDlxRXYvZEtMN1pLUDZyVWR6U0tNTDU5czhHNGRVRzRlLzF3aXQxd2w5ckJjakVMN3FFUDdtRUYycjRQMWJ6ejFieHY2K0NVNEovdklML1RUbjNFSndZcGR6ZFJkd2RhTHR0OXBwc1prTTZ5dE0vU0VRV0xyYVIzcTBMZ2txK0lISXVHbDJsZzFIbXAvbG9vV3NucnltQkdtRDNFU0NmcUtIOTFFblpNeXFCaFo1K1Fldmh0UzVlYTljZkY5SENhSkFYb1J4czBLay9OT3BvaEl0QzFGQmF0VTRWcFZVU1NnV2hsQk5LR2FHVUVrcUpXeWwySzRXalNzR29raitxNUkwcTJTTks1ckNTUHFUQWlaRTBLRVB0NjBDbmh3eW5COVFrSDdXQ3RlTHoxZndEcGR5Tk9jeTZWQnBTSUxxNVlVSTd2MmFmRm9MRk9RQzBpMFJseW9aMCt0VTZBVnA1YWxKZFVJWEhnOUQwbjhZdmNESVlEK1VCWlAzRUVBQVZ5Z04waHNCa25GVFFTVElnb05PalNYL1dCUmdaM2kxREtuMjJtcit6a0lVeCt1UjRWQlJPNXJ6cFRYaEI1QndBSlVnMGNVb0Myb2d1dkZ2cU1YVk4vNndQYUN4Wjg0Q0lvR0EzcjlWU1dzYVFzcXRMZ2hQNDNtS1lvZE13ZDBFN3hFL01MWHhiZmlvSk91ZGdKbUdIbVFUOWozb2VCcGZBelNSQ0lYalYweWQ0aWtiVkhaMFNsSU13QVZxVGhIYUw5eWE4NmRJdXVKelRNLzk4OU4wcmRYOEpDMlVLMUZXbWZpVVJpa0hMSGloSlljRDlvRVY4cUpTN01JMyt4cTJFVTI5ZWNEbG5OQUY2dENGNVJRYjlXcjBBRlRSajlsZitvUmxnWGkydFFzVUMwOTRyTXBubHNSUWFadzN6Zkx0Z0NnZ3U1d3dpaVRsUmFJWEVQVVhzMWs2cFBRRFBKd25OZ1BJWUd0UGVwL3k1UnJncWEvd2hHVk9mN1lMUk9iMGhJTlZka0VvL1U4VW5EOGltNzJvZHNnRVQ0VjdCa3pRZ3YrUVMvaStMV2VhWWp0b3VHSjNUVHp0b2k2Tmp5ZXR5bVA4MGlaV2t5dUhaaEVrQjdUZ2dhSEg5OG5NMS9JWjArb2lKMnM2dkZ3SkhNRHBub0xmQzZnVHFubUx1cXc2cGtkYXdkV1lGVE1zNk9jM2FoM1p5T1RlRldtREZlYzVBUC9rV1c4bHpVdWpIS2ppWXcvYUpIbHpabVJXeU50YkthWEF5Lzd5UVBTbWVtZy9hVGRrSUc3ek82U01zTk1UaGRuSkRCdjE4alpBMHFQU0wrTXFKYWNHcmFNSDVsZ2J4Mm16RysrU01xUmxoZzljNUFKelRyeEl2aXlXaDRIMjVUa2dkVW9ZRGNHdGR5TWF3NUVrWVVINWZ5YTlOcGhmRTZOcE5RYW9MYXVjQVBkWEJmR0tGazd3MmgzbTFuczhZa29mTXZYVTloRVB4akRXejJ1ZHQwby96MkJWT2ZSdWhLZEF1MkowRGpJWkFUeFFtcjgybS8xYkhKdzhxZllMSDNHV3dJUnVzNnNrWVZwNnQ0dGVsMGd0dHhpTTBBcnlUMEF4d0R0Q2RteHRESE90RXo5dDh5U1hBVkI5bVhwTEphLzVETWVETWJXUzBUOXFrbitheng4VlJxS2tqc1hQQWVLcURVeEFHMlNzeUdEZ3Z3N3NsRjZYU2dYaHVmNGlGVy9MQTBQRk1GYjgyaGRhMzE4RE9HVUJiNk9aQnRqdktUcTVQb3g0dVpUOXJFNHRHMVNGOERlWFFBb2FMT2twN3IxbThKcHRkWXF6Q05GcmJyd3ZNWXNZNFo2QnJCeWZpWWh0eFpoSjFSeUh6ejNyQjJxdTRLQTNNd3pjRGZNL3dqSTJJbnVoZStkNWlibVU4TmM4UURqczNDYlNGZm12blFpdHhZang1UlNielNCbi9RWXNFb3dOTXdRZ1p6eTIrVDRqYVdJNyt4RkdZU1N3TzlFNUNNODg1d0RnTDBSRGdYbW9uejBxaWI4MWpuNjBXUG0wVDQvcVZja0p0NTdSaEVkMHhpelBmUVFhMFV5MnQvcWRKdkM0bjhOZUhaNlJ6Z09FYzBnNFNIbHAyZW00S2ZXTXU4NXN5RGtiYnJSMVM0b0JTU3FndHJEWWdlQ2pGSTZqb1doUzZySWN0M0U5MDg5ck9MdW0rWXZSVkdHcll3TTBrWnFwekV4am1SYUdseFVjNXlETVNxZi9MWkRZWHNrOVg4YTgxaUorMlNXSGRzck5mVGg5QzY2WktDYVdLVkdvcHRIeXJsVVByQzZHaGV3V3RYL0FNaUo1QjBRUFpjVVJDNndsZ0tnZkRORURxVURxMHZ1YkZGK2I3QWprWTRGUUVyNkkxTlRDNlNScGFaYVBxUzIrbVB1Q0RKdzBxMEc1bko5UG9CaWZzM0g2WlNIaEFORnJnRHVhdGlpUFBTcVkyWkREWDViSjNGSEFQbEhKUFZQRFAxL0N2MUFsYkdvUzNtOFFQVzhVdjJ0SGlQRGl6OS9SSVVEN2IrdVRZZmptaFgwNGFrRk1HMFdLK3pHRWxXeWQzV01rZlVZR0NVVVNoRzFIMGZTa20xQkpDaFJ4Y1JxaFFCbFFTYWhXcHVpZ1ZocllHR2lWbU9CTjZlRzFRMU55eXhxcWVLYnNXeENwamNHRC9iQkEyWk5DQi9jcC94anZueTRSOGVudk5zNks5bmxiRVVpZkhVekRKUFQrTnVqU0R2aXFMdmo2SHVUV1B1YTJBdmF1UXZhOFlHZm5yTXU3UmN2Q1MrMTBsOTB3VjkxdzEvM3cxLzJjWC82S0xmOG5Gdit6aVg2a1YvZ2JVSVY2dG4rUWYzeDNvVkdqcjF4dUVmelVJYnpRS2J6WUtieldKN3pTamhkWWZ0WXFmdDB0ZnRrdmJPNldJSHNuV0R4TWpHZEl6Sk9aZVhvUHNHTkQ4QjFrVzB2L0hiUktVZEl2dDJMbURaQ0xub2QwNjBBWW82RitpMFNVOXlIK0xiY1FSZHJRbkNOVElVUDhkNzBUcDhLUUV0UDNDNmtUcXRFUnFUUklGMlhGdE1uVk9DblZlQ3JVdUZlM1ZjRUVxZFdFcXRUNk51UWhJUjF5c2M4bjNCYkl2Y0drR2Mxa0djM2ttc3pHVGdhazMxQU0vekdaK2xNUGNrTXZjbk12OEpKKzVFODZIRWhiT0JFalBVTnBIOXNnbGJuVkExQUkzSzlKdklkWjJkY3UzRjdETFlCcGhOR1lndEp0Vnp2bWhDK2UxOENBeC9zUkFmeEVvRXlleEl1WWVHcEI5QVJpOGZJRlRZcUdOV0dRbmxqcUl3eDFRSGhETG5TVDB5cW1KMVBrcDlIWFp6RU9sM0w4YVJTaE1teGd0Y0xkTVEvM3E2SmNmS0dGUGpBdmtQZXV6MlRsZ1FpQmZzU0lOak0yTERwS0p2eklWMytQeEhoNmtad04wMlBOajBGMnJ5Mk9SZkpBSVllamYwU1hWMFNvWG1IUUhVeGtvWktIR09DT0o4dDdhQlBnMTZhRXp5NTM3Zmt5WU9sMTQvZE1aMXhGcTAzVXAxTU5sM0s0dXFZVlJBekczVUxTeGdsSGxoUnIwcUNwdzNYc0FmbzF6NkdEbmdvdDl5Z2Zhb2QyUGlTVldZbDBLRGJPYytINFphanZWN05zSTRlWEtTUlhtU1plbE0xRDdZdWRDRzhPL0NIU24valZaekw4YUE3WGF2SVpTWVRaOXRiNE1FVHNYOG9CMmU1QUVxeE9vQjBxNFBkMVNyNm5QNHpPaWdVWTNtTnlZTTc3aUdsS3MzMkVjT3RpNW1ZUmUyeDJsUDZkcVM2TlFUWnI4ekNDSUZrYjd0Rlg4U1I1ekF2UTRkZzZESkloQ2sxbVlWejVaeWNFYzAvVHJKaDJjOW1XN2RHY0JjMkxnN2huR3pzMGtqS291R2kwTjJWekU2by8xTnZuNUxkMjh0cjFUdXFlSVBUbHczL1JqNTJZWStuaTMxRTdlbE10ODBTNjFzS3BzNnV5MVY5REN1dVZmbG5DbkpJdzdCNkw3SGNNaGdwMmJZWUFCa1dpejc2c3ltYmVieENwUzVVMGRYdnNFTGFKSGZyQ1VnNWtLZGc2amc1eHp6NDBoTnFUUi82Z1RDa2NWMnRRckp2MmlGdFVyUDFUR25XbzRGNEdkdytqT3pZa2hMa2lsWDNJSldjTUtZZW8zRWxBZ1J2ZktENWR4cHlWaTV6QUd1blB3ODl3VTZybHFQblZRSGpWMWM3NUo1NUwwWmYzWU9jeUVjMnVUcVdlcStDVDBiRFJUeDFaaGZHdzFuTVAxSEdiQ2c3T1RxZDlYOG9uOThyRFp6a1gyeUwrQ09RU01yZGc1RE1Md0lJWlltMEk5WGNVbm1wM25ZTjY2cDF0K0FGOHJ3VXd5N2h6VWMzK281bFBNcnVkNmVXMVhsM3hmTWZjRDdCekdpKzRjekZ2UFQ2UC83Qkl5eko2M2RuSGF0azVwYzFFZ1Z4eGk1MllZdW5Oelk0aUwwK2xYNm9TOFVjWGNYWUxhV2UyLzdkTHRoZXhLL0gwcnhndHlqcGh2SlRkbU1XODBpZVdreWZlcE56UGFSNjNpcmZuTWNkRGp5TG05RHVEUXdjN05NSFRuRnRuSmEzT1pqMXZGQmthVlRMMmZxWTdXM200U3I4dGxsdVA3NXpBSUVBNDgwRGRZaHVGdlo1ZlV3MnRtS3VjWnF5TFYxeHVFSzdPWXlXZUMrUjNEb1lPZG0wbm96czJKSms1T0lCOHFZK01IWk5MVVlnNzBMWEdyZjNFSkY2Y3hTd08zT3hOMmJpYWhTN0RZUmw2WUNwTld2dEN0S0tZT3JKSytJOWd6VmZ3NXlmUkNZL3NJN0Z4SW8xZHlJQUZVOTV2eTJFOWF4V2JXNVAyVWFXVXNjVkQ1VFJtL09vR2FQejZPK3gvR29ZT2RteGtZQmtTZ2ZURE9UYUdmcnVKZ1lEWDNVUm1RTUlkRVQxU3Z2TG1ZQTYzbkdNTEIrL29keWFHRG5RdGVvTDhOb084aHcrbVBHRDNPU2QxUndQNjNYV3lnTmNIVWdWWDFqTFZ6MnBjZDBpMzU3T1NENTdCem9ZVmhteUZjQlBwbG1RTTlEK2pWZWlGdkJOMnFhZTVLQ0RDNG1sTGZiaGJoTFE2ejZXOGFDT0dBb0hOdTRzekdHRVFUODZLSnhWWmlaVHgxVFRZRFU0ZUVBYmxQTUg5bEsweUJzMGVVbDF6QytXbjBISmhBaElwemhtMlJ2cHZUekFvaTlzTDNQMDM4RHZpb0JpeXdvdjNMVG9vbkwwcWpmMTdFUWljbERzamR2Q2Ficnh4NnFLdTFWMzZrWEw5YkUvb0NuUFB0R2hNSkt1Zm1XZ25JNm92c3hCSTdPYXV3VGJMVXJ1TWdEM2VRVURZZDZTQ1BpaVdYeFpMTDQ4aGo0OGdUNHFrVDQ5RitlR3VTcUhOVHFFdlM2UjlsTS9jVXN5KzRlS2kwQ3R6S0lOcW14TnNwNWtZTG8zM1dKdjIwZ0QwdVR0OThMaFNjZzN4K3BJTTRKWkc2SUkyK0xKTytRdWZ5V2NIR0RNUVZtY3lWT3NZT2h6QlFYbWRzY3BqSGJNcG5iaTlrN3lwaWYxSEMvYXFVZTd5Q2Y3b0s3Zks1cFVINHFGVU03NUV5aDVWR1ZpTUR0dU1oZUZ4R3FIK3ZFeTdQWUE1M0dLT05md2VaUnJBNHAyL0Zla29pV3JiNVJDWDNjaDF2N0lRS3JUQUxlRlVIYmV4YWp6WjJCWlBlYUJUKzNTUzgweXkrM3lwKzNDcCszaVpDR3R2WkpVWDB5TFplT1dGQXlSaFdpa1lWRjRXZU96QWtlVGdWYVJHNFFGZm1CcFJIeXZqVEUrbkRBbmMxMkNBb25OUExPS2hkTGt5ajRmemUxUzFCTVZ2c1JoU09LZ1V6bjBLM1VvUlFpOTNlRGF6TENiV0NSTHRYMTR6dlh0M01hcUJYRjYvQi9HQklSRnUyYzZwSG1aS0hoa0wyaFBmOXVsUGFsTThlSFJ2SUhUWU5nc1U1Zlowd3pOTC8zU1JDa29jNWxLVHZYUStJc3d2alE4RWt3QUQ2MndEU21LWURsazJGYUQ1Qkt4NDRKVjZ0Rnk3Sm9OR3orUU1xSEJCVXprR0pBK1ZMQ3h1QVdSbU8vVWN2V3JzdlFSMEp4YlF4NXZoM2tMa0VsWE0vekdMZWF4SHJhRlUyOVFvN2pnTUVETi9scEFJbDV0Vlp6TkdCdTMvSmw2Qnk3cW9zQnNwcUtISE0zWU1EeC80Q1dubEUwcXg5S01tdFRxQVdRRjlnNTNBRU5GZ1ZrcHo2WnFOd1ZSYTlkT0k1SklCZkI1a0xkaTZVbzVOREt3dTlPMy9wdllDZHd4SEFJR1V0WTBoNW9VYTRKSjA1UEhDN3BPOE5kaTQwUTFEUlhTUXdZN3N4bHpuV1NhTEg4QnNEcTEvWEJBTHNYQWlHb25tYUdHMTdsM1IvQ1hkcUlqVXZadnpaYUg3OUVpQ3djNkVXaWdkdEdoelZJLysyZ2o4dmxkWWZZYWc3NTljcGdRTTdGMUtoalkzMThKNjRmdm01YW41REJzeFY5VnRJRFB3NkpYQmc1MEluSk0zVHlXdU9maG5tRFZkazBnRjgwczJCd2M2RlNJamFXQXVyUnZkS3oxYnpHek9aWmJIajh3YnNISGJPOUlBQ3ppMTVLZ2gxVzZmMFpBVjNTVG85K1IwWHREemcxeDJCQmpzM3UwUFcwSVhmdENIbFAwM2lQY1hzdWxUcUNJZTN3YWZCTmdQczNLd01hRDlHOGNEOHRNU3Q3dXFTLytRU2JzcGxUa21nRnRxbUw3MU5nSjJiZlNHb3lMWml0eHJlSmIxYUw5eFR6RjJjVGg4WFI4NkhwcDRZVW4zYmY0b0pLdWV1em1JK2FFSDdXMmxUY24vczdBZzRQU1VOZlZ0UHlKNWVRYXVuMVp3UlpYZVhCRDM2UUFtM01aTmVGVStpOUFhTkRMYjV0ZnkwRUZUT1haUEZmTmdpTmpFbWI4TXgrMExUOTdPQjBYTlU4dlR3V2lPamxSQnE4cUM4dTF0NnUxbDRyb2JmWE1SZW1jbWNsa2dkNmREdk5aOVl4ZWpYOHROQ1VEbTNNWU41clY2QTA3UlAwTnl5QnhpV1pqVWlZa2huVUdkQVFQVHA5QXJnazZlTDk4QWtvSjNUV2xtdGlVVnB6RVdwNVNSYVpwRStKRHY3NWJCdTZkTTJjVXVqOEV3MWYyOHhlMDAydlRhRlBzNEpwZHY0OWQ1cEgwejlDQXJuQVAyeHBPZWtVTDh1NHo1b0ZhTjY1ZGgraEsxdk5tUHRSY1QweXRHOWNsUVBJcUpiMnRNdFFicmExU1h0NkpTMmRrcGZkVWovYlJjL2F4TS9haEhmYXhGaCt2bDZnL2hLSGY5OERmOVVKZmRRR1hkWEVYdHpIbnRsRm5OZUtnMnpoR1d4cEhmaEZzeE1qZlJtbU9mWDROTklzRGdYVGN5TEllQTRMczlrN2l4aUh5N2pIaTFIZ0lLekdQaVlCcURPcjBxNUIwdTUrMHZZWDVhd2tLN3VMbUx2S21SL1ZzRGVWc0QrSkorOUpZKzlNWWU5TnB1OUtwTzVMSU5abjBhdlRhWmg2RnlWUUVIWEhPNUFGZHRjdlJtOUJLRnFFd1NMY3pIRW5CaGlzWjA0Tm80OEpaRTZJNGs2TXhteEptazJBeC9UNEhRZ2tRS0hUazFFaS9naFhmMGdnVHBKWDlPL01vNkM3am5PU2E3UWwvc2Y1U0FQdDVPTGJHaFlnQmJ6Nm1Xa05DL0JONWo2RVR6T0dVQTdBbkRLaGhUR3AwWkVmd052cnRvbklKYUIzNzhEZTdWcWNCRmN6a0Y3b2JOV1AxLzk5cElKYWZSTU5pSFpCRE5GTWorQ0xjOU50aVBtd1BpMTJ3d2k2SnpEekhxd2M1aXBCanVIbVdxd2M1aXA1cUNkbzdCekdITXduSXVuWG1zUXZYcjVoSTl6c2FRbFpjd1N5L3YvUFFielhRSG5VaURQRWE4ZjJMa1ZEcmNsMllPZHc1Z0FqSlpKbmxYTzBTMzF2RmN2bjVoMGJxVjFBT25wNEN4V3ltSWwvVjhGZ3prWXdCendKNVlEN1ZZN0J0K3NwYjE2K2NTa2M2ZEZkVmlpUmkwMkJnRi81dmRhR016QllLTXNOdHBpcHkyUkkydXRuZS9XakhyMThvbEo1eTdhVXpkL1J6djZNMGgxOEdlK0w0VEJIQ1JnbTRPMVJMc1AyOUcyTWFyK2krcCtyMTQrTWVuY3JlRWx5NzUyellrYXRzUkpGanZqLzFvWXpNSGdZQ3h4NHB5SXdSVmYxOXdSV1JwUjFlSFZ5eWNtbmZ0dFpPN1oyOG9XUnZSYjRpV2tLaTdwTU44VmNBYk1pUk1YaGZlZXQ3WDBtWmk4dE9wbXIxNCtNZW5jTy9GNU40YVZIQlBXZ1pJYy9DVWFYckYybUlNR2hBTm5kSE5XN0c3OWNWalJSNG41cnBaMnIxNCtNZW1jczZEeXQ3YVNzM2JYelEvdjlRcUxaeEtZZzhjUUxvWmNzTHZuM04ydVp4d2x5U1ZWUThNalhyMThZdEs1dXRhT0Q5UExidzByV2JHdHpoSXhhSW1YMFdRQ3B6ck1RVUdpSzd0UWxZWDNINyt0OXJidzRpK3lLcHM3dWlSSjh1cmxFNVBPRVNTWlZsNzdKMnZ1SlR0S2w0UjN3NmlNWGdWZnE4TjhLMkFJZU9JVUxISEM0V0VkRzNlVy9OV2VtMU5WVDlQN3VEZ0hNZW1jcXFvZG5WMlJPYVdQeGhTdURhczlMS0lQWlVzbm1LZGZPc0htWWZiR3FPSDBLOEFXRzdWd1Q4KzZzSnFuYklYMi9QS2VubDdQZnBiTlR6b0hJUWhDUTJ2N2w1bGw5MFlVbkxhamVrRjRIN3B1Z2k2ZFFHR0lhenZNWG9BVjRBWVk0aFFYaHZldTJWNzVZRlRCOXV5eWxvNHVVZHpITjYxR2ZNTTVDSlpsS3hwYVBrMHB1aSt5Y08zdXVxWGgzWE1qaDFIbWhOb09RUEpCemdQL2NOb0xTWXhoMUpndUdFcFlxWGxSdzRlSGRhMExxMzB3c3ZETGpPS2E1alpJWGw2ZjloWCt6a0ZRRkZYWjJQcFZadm1qMFlVYmRwUWV2N054YmxndnVvQUNGU0lZRFcrRGg5cVFCUTJtREJwTWpRSFF4c3piM2IxeVI4UEduYVZQV2d1M1o1ZTdXdG9aaHZHYXRKL1loM01RSE1jMXRMUkg1NWE5YU0vYnRLZjA3TEM2NVdIdGg0WDNXdllNV3FMZDNuZUZJUnlxUFV3SUllZ1pod0VINWtRTXdtQzZmSGZiT2J0cmI5c0RrNFk4cU9HYTJ6c1BuT0dNMkxkekVEQWVkM1YzcDFmV2ZaeFo4WlNqNU9hdzRyVmJTNWQvN1pxN3RRWGRDZ0JIa0R5Rzd2SEVoQTdRNDlEdmtjUHp0N1VjdTlWMTNyYXlXOE9LbjNhVWZKWlprVlZWMzlQVHM4OHJJM3ZIZnAyRDBEU05KTW42MXZiNG9vcjNFd3VlaXM3N2FVVFpaVkVOWjF1N1RuRU1ybks2VDNBU0oraHIwREd6SFFyNkducDh0V053cmJWelkxVDk3UkdsVDhma2Y1aVVuMVJjMmRUZUNmVVkyT0wxNXR2aVFNNFpJY3Z5NE9CZ2RWTnJTblZ6V0dYNzU5VUQ3N3JjYjlZeFcrcjUxNEFHOUNod3pPeW5ub2NlLzNjZDgyN042QmZWL1h1cTJ0TnFtbDNOclVORFE0cWllRjA1dVBoMjUzRGdNRGV3Y3ppbU5zYkcvaCs5UDcrS2ZLTytSZ0FBQUFCSlJVNUVya0pnZ2c9PSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzEiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImNyZWRCbG9iIiwibWluUGluTGVuZ3RoIiwiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiODE3Y2RhYjgwZDUxNGRlMWE4MjFlMjViODg1MTljZjMiLCJvcHRpb25zIjp7InJrIjp0cnVlLCJjbGllbnRQaW4iOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOnRydWUsImFsd2F5c1V2IjpmYWxzZX0sIm1heE1zZ1NpemUiOjg5NiwicGluVXZBdXRoUHJvdG9jb2xzIjpbMSwyXSwidHJhbnNwb3J0cyI6WyJ1c2IiLCJuZmMiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fV0sImZvcmNlUElOQ2hhbmdlIjpmYWxzZSwibWluUElOTGVuZ3RoIjo2LCJmaXJtd2FyZVZlcnNpb24iOjEsIm1heENyZWRCbG9iTGVuZ3RoIjozMiwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjgsInV2TW9kYWxpdHkiOjIwNDksInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjozMDB9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNi0wMy0yMCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IlN3aXNzYml0IGlTaGllbGQgS2V5IDIgRklQUyIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjYwMzIwMDAzIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25Qcm9maWxlcyI6WyJjb25zdW1lciJdLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTAyLTI3IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiU3dpc3NiaXQgaVNoaWVsZCBLZXkgMiBGSVBTIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNTAyMjcwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wMi0yNyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI2LTAzLTIwIn0seyJhYWd1aWQiOiI2MTI1MDU5MS1iMmJjLTQ0NTYtYjcxOS0wYjE3YmU5MGJiMzAiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjYxMjUwNTkxLWIyYmMtNDQ1Ni1iNzE5LTBiMTdiZTkwYmIzMCIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJlV0JNIGVGUEEgRklETzIgQXV0aGVudGljYXRvciJ9LCJkZXNjcmlwdGlvbiI6ImVXQk0gZUZQQSBGSURPMiBBdXRoZW50aWNhdG9yIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MjU2LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQ3BUQ0NBa3FnQXdJQkFnSUJBVEFLQmdncWhrak9QUVFEQWpDQnJ6RUxNQWtHQTFVRUJoTUNTMUl4RVRBUEJnTlZCQWdNQ0ZObGIzVnNMVk5wTVJNd0VRWURWUVFIREFwSFlXNW5ibUZ0TFVkMU1SY3dGUVlEVlFRS0RBNWxWMEpOSUVOdkxpd2dUSFJrTGpFaU1DQUdBMVVFQ3d3WlFYVjBhR1Z1ZEdsallYUnZjaUJCZEhSbGMzUmhkR2x2YmpFY01Cb0dBMVVFQXd3VFpWZENUU0JEUVNCRFpYSjBhV1pwWTJGMFpURWRNQnNHQ1NxR1NJYjNEUUVKQVJZT2FXNW1iMEJsTFhkaWJTNWpiMjB3SGhjTk1UZ3dOekF5TURVek1UTTVXaGNOTWpNd056QXhNRFV6TVRNNVdqQ0JyekVMTUFrR0ExVUVCaE1DUzFJeEVUQVBCZ05WQkFnTUNGTmxiM1ZzTFZOcE1STXdFUVlEVlFRSERBcEhZVzVuYm1GdExVZDFNUmN3RlFZRFZRUUtEQTVsVjBKTklFTnZMaXdnVEhSa0xqRWlNQ0FHQTFVRUN3d1pRWFYwYUdWdWRHbGpZWFJ2Y2lCQmRIUmxjM1JoZEdsdmJqRWNNQm9HQTFVRUF3d1RaVmRDVFNCRFFTQkRaWEowYVdacFkyRjBaVEVkTUJzR0NTcUdTSWIzRFFFSkFSWU9hVzVtYjBCbExYZGliUzVqYjIwd1dUQVRCZ2NxaGtqT1BRSUJCZ2dxaGtqT1BRTUJCd05DQUFRSWZxSGlzaTBvTy9leU9xU2FEcnI5aXRHMkl5bUJrSG5TREdRSUlZbVQrdnFBOEFnTzgxbW9tYzJMZDVQR3BFTjZtdUU1NHdQSFFqdmMveUNpaDh1Mm8xVXdVekFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VBTUIwR0ExVWREZ1FXQkJTM0ovZnhpQXYyMmlyZEJzOThTT0RoRjdrVS9qQUxCZ05WSFE4RUJBTUNBUVl3RVFZSllJWklBWWI0UWdFQkJBUURBZ0FITUFvR0NDcUdTTTQ5QkFNQ0Ewa0FNRVlDSVFEYzQxTEZLNExKQ0JVMlZWS0l6N1o2c3hQaFVFa2g4bkxTTEs2SVhka1A1d0loQUllS1ZPWmNoYVZPNWFGN2ZiZFhvU3JjeXkxWVllVWVQTG9qY0tJOWZYODQiLCJNSUlDZ2pDQ0FpaWdBd0lCQWdJQkFUQUtCZ2dxaGtqT1BRUURBakNCblRFTE1Ba0dBMVVFQmhNQ1MxSXhEakFNQmdOVkJBZ01CVk5sYjNWc01SQXdEZ1lEVlFRSERBZEhZVzVuYm1GdE1SY3dGUVlEVlFRS0RBNWxWMEpOSUVOdkxpd2dUSFJrTGpFWk1CY0dBMVVFQ3d3UVEyVnlkR2xtYVdOaGRHVWdWVzVwZERFWk1CY0dBMVVFQXd3UVpWZENUU0JEWlhKMGFXWnBZMkYwWlRFZE1Cc0dDU3FHU0liM0RRRUpBUllPYVc1bWIwQmxMWGRpYlM1amIyMHdJQmNOTWpNd056RXhNRE0wTmpFMFdoZ1BNakEzTXpBMk1qZ3dNelEyTVRSYU1JR2RNUXN3Q1FZRFZRUUdFd0pMVWpFT01Bd0dBMVVFQ0F3RlUyVnZkV3d4RURBT0JnTlZCQWNNQjBkaGJtZHVZVzB4RnpBVkJnTlZCQW9NRG1WWFFrMGdRMjh1TENCTWRHUXVNUmt3RndZRFZRUUxEQkJEWlhKMGFXWnBZMkYwWlNCVmJtbDBNUmt3RndZRFZRUUREQkJsVjBKTklFTmxjblJwWm1sallYUmxNUjB3R3dZSktvWklodmNOQVFrQkZnNXBibVp2UUdVdGQySnRMbU52YlRCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQkFoK29lS3lMU2c3OTdJNnBKb091djJLMGJZaktZR1FlZElNWkFnaGlaUDYrb0R3Q0E3eldhaVp6WXQzazhha1EzcWE0VG5qQThkQ085ei9JS0tIeTdhalZUQlRNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3SFFZRFZSME9CQllFRkxjbjkvR0lDL2JhS3QwR3ozeEk0T0VYdVJUK01Bc0dBMVVkRHdRRUF3SUJCakFSQmdsZ2hrZ0JodmhDQVFFRUJBTUNBQWN3Q2dZSUtvWkl6ajBFQXdJRFNBQXdSUUloQU5WbkpkZS8vdEJMcThNRERpK1NBZDZVZFlJWlNuZzRQTXFteU5ydlpqNjRBaUFYMHhTekFoRmFDQ3AvdWhwVmdubEYrWEJncndBSXNvdFpHVEI2cmtCMzFBPT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBK2dBQUFFeENBWUFBQUR2RFlncUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFFblFBQUJKMEFkNW1IM2dBQUZpY1NVUkJWSGhlN2QwSGVCWEYyc0R4TjczUUNUVkE2RklGRktrQ1V1eUFFdW1LWWtGVWJJQ0NJaUtDVWdRRTdMMGdkbFFzS0NwU3JJZ2dTQytoSm5SQ0o0SDBiMmZ2ZUQvMGtoQ1NuYzJlay8vdnVYbVlkNDZYa0pOejlzeTdNL05PUUpaRkFBQUFBQUJBZ1FyVWZ3SUFBQUFBZ0FKRWdnNEFBQUFBZ0FlUW9BTUFBQUFBNEFFazZBQUFBQUFBZUFBSk9nQUFBQUFBSGtDQ0RnQUFBQUNBQjVDZ0F3QUFBQURnQVNUb0FBQUFBQUI0QUFrNkFBQUFBQUFlUUlJT0FBQUFBSUFIa0tBREFBQUFBT0FCSk9nQUFBQUFBSGdBQ1RvQUFBQUFBQjVBZ2c0QUFBQUFnQWVRb0FNQUFBQUE0QUVrNkFBQUFBQUFlRUJBbGtXM1BTc3pOVlhTRHlUS3FhMWI1ZFNhZFpLNmU0K2tIejltOTRuMy8vbUFjUUVob1JKY3VwUUVSMFZKV0pWS0V0Nmd2b1JYcnlaQnBVcEpRQ0QzNFFBQUFBQmY0TmtFUFNzalEwNXQzaUtIUHZwRWp2K3dRTkwzN1pPczFEVDlLSUN6Q1l5TWxOQWExYVRFTloybFpKZk9FbHFodlBXT0Q5Q1BBZ0FBQVBBYXp5WG9LakUvTXZjN1NYeHpocHhhc1ZMM0FzaVBnTkFRS2RxeHZaUzlZNEFVYWRKWTl3SUFBQUR3RWs4bDZNZC8rMTMyakh0S1V0YXQxejBBbkZhODY5VlNZZGdRQ2F0U1JmY0FBQUFBOEFKUEpPZ1pKMDdJbm9sVDVQQUhINHRrWnVwZUFLWUVoSWRMaFZFakpLcFhkd2tJRHRhOUFBQUFBQXBTZ1Nmb3A3WnNsUjBEQjBucTF1MjZCNEFyQWdLazJCV1hTcFhKRXlTb2FGSGRDUUFBQUtDZ0ZHaUNmdUxQNVJJL1lKQmtIRG1pZXdDNExieFJRNm4yNWlzU0VoV2xld0FBQUFBVWhBSkwwRThzWFNZN2JybERNcE9TZEErQWdoSmFxNGJVL09oZENTNWRXdmNBQUFBQWNGdUJISkNzbHJYSDMza3Z5VG5nRWFtYnQ4cjJnWU1rZy9ja0FBQUFVR0JjVDlEVGp4NlQ3YmZkSVJtSER1c2VBRjV3OHMrL1pPY2pqMGtXaFJvQkFBQ0FBdUhxRW5kMXhubjhBdy9Kc1MvbTZKNXpGeGdaSVVHbFNrbElqZW9TVktLNDdnVUtPZXR0bkw1dnY2VHRpSmVNSTBjbEt5MU5QM0R1S2s0WUsyWDY5TklSQUFBQUFMZTRtcUFmWGJqSUxncDN6a2VwQlFaSytQa05KS3AvUHluV3VxVUVseWtqQVVGQitrRUFmOHRNVFpYVVhidms2TGZ6NU5ETTl5Vjl6MTc5U080Rmxpd2g1LzN3RFVYakFBQUFBSmU1bHFCbkpDVkwzRlhYU0ZyQ1R0MlRPNkUxcTB2RlVTT2tlTnMyZHFJT0lIY3lUNTZVZ3g5OExQdWZlVjR5angzWHZibFRvbHRYaVprNnlicENCT2dlQUFBQUFLYTVsdkVlbWZQMXVTWG5WbUpRb21lczFKNHpXNHBmMG83a0hEaEhnUkVSVXZiVy9sTExlZytwbzlUT3hiRnZ2NWRUOFFrNkFnQUFBT0FHVjdKZXRleDIvL012NlNnWHJHUThhdEJBaVhscXZBU0doK3RPQUhrUlZxV3lmWVJhNU1VdGRjL1paWjFLa2YzUHZxQWpBQUFBQUc1d0pVRS9zWGlKcE8vYW82T3pDQWlRMGpmM2sraWg5N084Rm5DSXV0RlY3ZFVYejJrbS9jU0NSWkorNUtpT0FBQUFBSmpteWg1MFZibjk2R2RmNkNobktvR28rZkg3RWhnV3Fudnl5ZnJ4c3RMVEpmM0VDY2s0Zmx5eVV2TmUzUnB3aXpxdElMaFlNWHVadWwwUTBhR2JWYWUyNzVETlYxNGpXU2twdWlkbmxaNlpJcVd2NmFJakFBQUFBQ1laVDlCVmNyeXVlUnZKUEh4RTkrUWdPRmlxejNwUGlqWnByRHZ5TG5uZGVqazJmNkVrL2JwWVVyWnNsWXpFZy9vUndIY0V4MVNSaU5xMXBHaUhkbEtzWTNzSnExaFJQNUozKzE1NlZmWlBtcXFqbkJXOXJLTlVmL1ZGSFFFQUFBQXd5WGlDbnJ4bXJXenAybDFIT1N2YThSS3AvdnJMZVo0dHpEeVZJa2UrL1U0U1gzdFRVdFp0MEwyQW53Z01sS0tkMmt1WlcvdExzUmJOOC93K1NUOTZWRFoxdkZJeURoM1dQZGtMS2w1YzZ2N3hzd1NHaGVrZUFBQUFBS1lZMzRPZS9OZEszVHE3MG4xNjVTM3B5TXFTNDR0L2w3ak8zV1RYa09FazUvQlBtWmx5WXQ0QzJYN0RMYkp0NENCSnlXT1Y5ZUFTSmFURXRWMTFsRE4xVkZ2cXpsMDZBZ0FBQUdDUzhRVDk1UHJjSmNzQmtSRlM3SksyT3NvOVZTRis5OFRKc3VPbUFaSzZkWnZ1QmZ5WVN0Ui9XQ2lidTE0bmgrZDhZOGZucWtTWHEzUXJaMWxwYVpMQyt3b0FBQUJ3aGRrRVBTdEwwclp1MTBIT3dodlVsOERRY3lzTXA0cStiYi9qSGpuNDZwdjJYbmVnTU1rOGRseDJEaDRtZTZZK1k3L1h6a1ZFelJvU1dMU29qbktXc2llWEp6QUFBQUFBeUJlakNicmEzcDZSbkt5am5LbXptcytGU3M2MzNUcFFraGI5cEh1QVFpZ2pReEpmZU1WZVJYSXVTWHBBUklRRWw0M1NVYzdTZDVPZ0F3QUFBRzR3TzRPZW1TbVp1VHpPS2FoQ2VkMDZPN1hzTm43WUNEbTViSVh1QVFvM3RZcmt3RnN6ZEhSMjZ1aTJnTkRjRlg3TDJMZGZ0d0FBQUFDWVpId1B1Z243WDN0VFRuejNnNDRBS1BzbVRaT2tGWC9wQ0FBQUFJQ3ZNWHJNbXRvWHZxbExyS1J1ak5NOTJZc2FORkNpaHczVlVmWk9ib3FUTFYydXMyZlJjeTB3ME41dkcxd21TZ0tqU3VsT3dLT3NkMlRHemwyU2NlS0VaSjVJMHAyNUUxcXJodFQrOGxNSmpJalFQV2VXbFpFaGNaMWpKV1hqSnQyVHZaTGR1a3FWYVpOMUJBQUFBTUFVMzByUXJYL3F0dHZ1a0JNTGM3bnYzRDQzdW9PVUhYQ3poTmVySzhIRml1a0hBSS9MekpTMHc0Zmx4TzkveUlIblg3SVNhZXM5bEp1M2FrQ0FsQjh4VE1yZGZxdnVPRE1TZEFBQUFNQjdmR3FKZTlLcTFibE96a05pcWtqMWoyWks5VmRma0tMTm01R2N3N2NFQmtwSVZKU1U2bnlWMUo0eld5bytPVm9Dd3NQMWd6bXdrdmpFbDErVGpLUnptM2tIQUFBQVVQQjhKMEczRW84RHI3NmhnNXlGbjk5QWFzNytTSXBlMUZUM0FMNUxGWFFyYzMwZis0WlRVTWtTdWpkN0dZY095eEYxUGpvQUFBQUFuK0l6Q1hyNmthT1M5TXR2T3NwZWNNWHlVdTMxbHlXa2RHbmRBL2lISW8zT2w4clBUYlZlNUVHNkozdEhQdnRDdHdBQUFBRDRDcDlKMEpOV3JwTE1ZOGQxbEkzQVFLazRkclNFbEN1ck93RC9VcnpOeFZMcWhqNDZ5bDd5bnlzazQvZ0pIUUVBQUFEd0JiNlRvUC8ydTI1bEw3eGVIU25SNFJJZEFmNnA3SUJiSlNBNFdFZlp5TWlRcEpVcmRRQUFBQURBRi9oTWdwNjhicDF1WmE5RWw2dnQvYnFBUHd1clhFa2lXalhYVWZaT3JWNnJXd0FBQUFCOGdVOGs2RmtabVpLMmFiT09zbGZzc2s2NkJmaTNZbTNiNkZiMlV2ZnYxeTBBQUFBQXZzQkhFdlIwTzBrL203QUtGWFFMOEcraDFhdnBWdll5VDNEVUdnQUFBT0JMZkdhSmU2NEU2RDhCZjhkckhRQUFBUEE3L3BXZ0F3QUFBQURnbzBqUUFRQUFBQUR3QUJKMEFBQUFBQUE4Z0FRZEFBQUFBQUFQSUVFSEFBQUFBTUFEU05BQkFBQUFBUEFBRW5RQUFBQUFBRHlBQkIwQUFBQUFBQThnUVFjQUFBQUF3QU5JMEFFQUFBQUE4QUFTZEFBQUFBQUFQSUFFSFFBQUFBQUFEeUJCQndBQUFBREFBMGpRQVFBQUFBRHdBQkowQUFBQUFBQThnQVFkQUFBQUFBQVBJRUVIQUFBQUFNQURTTkFCQUFBQUFQQUFFblFBQUFBQUFEeUFCQjBBQUFBQUFBOGdRUWNBQUFBQXdBTkkwQUVBQUFBQThBQVNkQUFBQUFBQVBJQUVIUUFBQUFBQUR5QkJCd0FBQUFEQUEwalFBUUFBQUFEd0FCSjBBQUFBQUFBOGdBUWRBQUFBQUFBUElFRUhBQUFBQU1BRFNOQUJBQUFBQVBBQUVuUUFBQUFBQUR5QUJCMEFBQUFBQUE4Z1FRY0FBQUFBd0FOSTBBRUFBQUFBOEFBU2RBQUFBQUFBUElBRUhRQUFBQUFBRHlCQkJ3QUFBQURBQTBqUUFRQUFBQUR3QUJKMEFBQUFBQUE4Z0FRZEFBQUFBQUFQQ01peTZMYmpzdExUWlZPWFdFbmRHS2Q3c2hjMWFLQkVEeHVxbzMvS1RFMlZEYTNhUzhhaFE3cm56QnFzWFM2QmtaRTZNaWMxUGtGT3JkK2dJL2l6MEpnWUNhOVhSMGZlY1dUK0Fra1lNRWhIWjFhaVI2ekVUSjZnbzMvS3lzaVF1TTZ4a3JKeGsrN0pYc2x1WGFYS3RNazZBZ0FBQUdBS0NYb2VISno1dnV4K2JLeU80TStpK3ZlVDZNY2YxWkYza0tBREFBQUEvb2NsN2dBQUFBQUFlQUFKT2dBQUFBQUFIa0NDRGdBQUFBQ0FCNUNnQXdBQUFBRGdBU1RvQUFBQUFBQjRBQWs2QUFBQUFBQWVRSUlPQUFBQUFJQUhrS0FEQUFBQUFPQUJKT2dBQUFBQUFIZ0FDVG9BQUFBQUFCNUFnZzRBQUFBQWdBZVFvQU1BQUFBQTRBRWs2QUFBQUFBQWVBQUpPZ0FBQUFBQUhrQ0NEZ0FBQUFDQUJ3UmtXWFRiY1ZucDZiS3BTNnlrYm96VFBkbUxHalJRb29jTjFkRS9aYWFteW9aVzdTWGowQ0hkYzJZTjFpNlh3TWhJSFpsemN2VWFPZjdqenpyeXZ1US9WOGp4UlQvcHlGbmxCOThyRXVTLzkza2lHcDB2eGRxMTBaRjNISm0vUUJJR0ROTFJtWlhvRVNzeGt5Zm82Sit5TWpJa3JuT3NwR3pjcEh1eVY3SmJWNmt5YmJLT0FBQUFBSmhDZ2w0SUpMNDVRL1k4Y2VaRUxiOGF4cTJSZ09CZ0hjRXQvcHlnWjZXbFNWYW1zY3RTNFJNZ0VoZ1NZdjFwTlFBQS8wT05NOFdGajUyQTRDQUpDQXJTVWNGejlmT1d6eUlnMTBqUUN3RVNkUC9qenduNnRxSEQ1TlNLbFRwQ2ZnV1ZLQzYxUG41ZkFrTkRkUThBNEhSeDNmdEkrbG5HbUU0b1Avd0JLWDNWRlRvcVdCbEpTYkxseGxzazQvQVIzV05XWkl0bUVqUCtDUWtJWkhjdGNEWWs2SVVBQ2JyLzhlY0VQYTdmelhKeThSSWRJYjlDYTFTWHV2TyswUkVBNE4vV3RXd242UWNPNk1pYzZFbmpwVXozV0IwVm9NeE0yVDUwbUJ6N3lwM1BodUFLNWFYMjdJOGxwRnc1M1FNZ0o5ekdBZ0EvRmxhcnBtNEJBQ0NTK05FczE1THpnTEF3cVRKMUVzazVjQTVJMEFIQWo0V1dMNjliQUlEQ0xubmRldGt6N2lrZG1WZHV5TDFTckVWekhRSElEUkowQVBCallZMGE2aFlBb0RETE9INWM0Z2MvS0ZrblQrb2VzNHBkY1ptVXUrMFdIUUhJTFJKMEFQQmo0VFZyNkJZQW9OREt5cExkazU2VzFDMWJkWWRaSVpXaXBjcjRzUlNGQS9LQWR3MEErS3VnSUFtclVFRUhBSURDNnZBMzM4cmhEejdXa1ZtQmtSRVM4OEl6RWx5eXBPNEJjQzVJMEFIQVR3V1ZLaVdCeFlycUNBQlFHS1hFeDh1dWthUHRXWFRqZ29La3dxaEhwTWo1Yks4Qzhvb0VIUUQ4VkZEUkloSVlGcVlqQURBck16TlRUcDQ4S1ljT0haS3QyN2JKMHFWTEpUVTFWVCtLZ3BCNUtrVjJESDVRTW84ZjF6MW1xYU5aeS9Uc3JpTUFlVUdDRGdCK0txUnlKUWtJQ3RJUkFPU05TcnpUMHRJa09UbFpFaE1UWmZQbXpiSjQ4V0o1Ny8zM1pkejQ4VEo0eUJDNU5qWldhdGV0SytmVnF5ZDFySzk2RFJwSTY3WnQ1YmhMaVNIT1FPMDdmMnF5bkZxNVduZVlGZDZvb1ZRZU8xb2tJRUQzQU1nTEVuUUE4Rk9oVldOMEN3QnlwaEx3QXdjT3lOcTFhMlgyN05ueTRrc3Z5V09qUjB1L20yNlNpOXUxazZiTm10bEpkNldZR0tuWHNLRzA2OUJCYnI3MVZubDg3Rmg1d2ZwdnY1azdWK0xqNDJYdjNyMXk1T2hSTzZsSHdUcTY2Q2M1L1A1SE9qSXJzR2hSaVprK1JRTER3M1VQZ0x3aVFRY0FQeFZLZ1RnQU9UaDI3SmhjZXZubFVyZCtmWWtzVmt5aXExU1JKazJiU3ErK2ZlWCtJVU5rd2xOUHlVY2ZmeXpMbGkyVDlSczJ5TzQ5ZTBpOGZVVHE3ajJ5Yy9nSXlVcFAxejBHQlFSSTlKT1BTM2pWcXJvRFFINlFvQU9BbndxL29KRnVBY0QvVXZ2REYvLyt1MnpaNnM3UlczQkhwdlY3algvb0VjazRkRmozR0dRbDUxRURicGJTWFR2ckRnRDVSWUlPQUg0cXZFb1YzUUlBRkJiN1gzMWRrbi83WFVkbVJWN1VWQ29PSGF3akFFNGdRUWNBUHhRUUVTRWhaY3JxQ0FCUUdCeGZzbFQyUC9lU2pzd0tybGhCcWo0M1ZRSkRRM1VQQUNlUW9BT0FId291WDA0Q1FvSjFCQUR3ZCtsSGprakNzSWVzaHZsOTV3R2hJVko1OGdRSktjdU5ZTUJwSk9nQTRJZENTcGFVZ0VBdThRQlFHS2hpY1BIREg1SDBYWHQwajFsbDdycERpcmRxcVNNQVRtTDBCZ0IrS0tSR05jNmlCWUJDNHNEYjc4aUorUXQxWkZiUjl1Mms0cjJEZEFUQWFTVG9BRHdscEZ4WkNhMVMyYld2a0lvVjNVbGtyZThSVWluNmpQOEdFMThSOWV2cmJ3d0E4R2RKSzFmSnZxblA2TWlzRU92ekpXYktSRzRBQXdZRlpGbDAyM0ZxdWMybUxyR1N1akZPOTJRdmF0QkFpUjQyVkVmL3BJNkwyTkNxdldRY09xUjd6cXpCMnVVU0dCbXBJL3d0OGMwWnN1ZUpDVHB5VnNPNE5SSVF6RDVYdHgyWnYwQVNCdVI4OTdwRWoxaUptWHptMzN0V1JvYkVkWTZWbEkyYmRFLzJTbmJyS2xXbVRkYVIvemtWSHk5eGwzVTJmbFpzWUpFaVVtZkJkeEpTSmtyM0FFREJTa3hNbEtvMWF0akhyWm15ZDljdWlZcnk5blZ2WGN0MmtuN2dnSTdNaVo0MFhzcDBqOVdSTTlLUEhaTzRiajBsYlVlODdqRW5NQ0pDcW4vd2poUTV2Nkh1QVdBQ00rZ0FBQUNBRDlyMXhIaFhrbk1KREpUeWp6NUVjZzY0Z0FRZEFBQUE4REVIUDUwdFJ6LzdRa2RtbGVqYVdjcjA2cWtqQUNhUm9BTUFBQUErNUdUY1p0a3pacHlPekFxcmM1NVVHVGVHazBFQWwvQk9nMDlSOVFpMjlydFoxbDNRd3ZoWDNMVTlKT05Fa3Y3T0FBQUFCUy9qeEFtSnYvOEJ5VXd5UDBZSkxGWk1ZcDZmWnU4L0IrQU9FblQ0anF3czJUZjllVW42OVhmSk9ITFU2RmRtOGttcE9IcWtCQlV0b3I4NUFLQ3d5TXpNbFBUMDlETitaV1JrV0I5SHh1cnJBam5Lc2w2YnV5ZE15bFdSMTN3TENwVG9NYU1rb2tZTjNWRjRxZmQ4VHRjRjlSamdGS3E0RndMK1VzWDkyTSsveUk1Yjd4VHJTcWg3ekNsNy85MVNZZkM5T3ZJZXFyZzdoeXJ1dmk4bEpVWFdybDByZjYxY0tmdjM3NWNEaVluNkVaR3cwRkFwV2JLa2xDMWJWbXJYcmkzMTZ0YjFmRVZwdUNjcEtVbTJidDBxcTFhdmxqMTc5c2kyN2R0bDQ4YU5jdXJVS1RsNTh1UVpCOTBSRVJFU0VoSWlwVXFWa2diMTYwdWxTcFdrYXRXcWRydHk1Y29TN0VNbm0xREYvVDk4cVlyN2tlKytsL2g3aHFpN1NMckhuTkw5KzBubFVZOFV1aVBWMHRMU0pONGFHeXhmc1VJU0VoSWtMaTVPTmxsZjZycVFuSnlzLzZ2L3A5N3pZV0ZoVXJ4NGNXbllvSUY5SGFoV3JabzBidFRJdmo3NDBqVUIza0NDWGdqNFE0S2V1bnVQYkxaZVN4bUhqK2dlY3lKYnQ1UWFNOS8wOUY0ckVuVG5rS0Q3cHFOSGo4cmNiNytWRHo3OFVINzg2U2M3MGNxdE91ZWRKNDgvOXBqMDZORkQ5NkF3VU1uMnRtM2JaUEh2djh1aUgzK1V2Lzc2UzFhdVdxVWZkVVo0ZUxnMGI5Wk1McmpnQW1uVnNxVzBiTkhDSHFCN0ZRbjZmL2hLZ3A2U3NGUGlydWt1bWNlTzZSNXpJaTVzSWpWbnZpMkI0V0c2eDMrcDE3KzZ3ZnZMTDcvSS9BVUw1UGNsUytTWVE4OXhwSldYdEczVFJ0cGZjb20wc0s0SHpTNjZ5TDVPQURraFFTOEVmRDFCejB4SmthM1g5NWVUeS8vU1BlWUVsUzBqdGIrZUxTRmx5K29lYnlKQmR3NEpldTc4YmlVMTY5YXYxNUV6THJJR0tvM09QMTlIdVhQQUdrUy8vT3FyTXVYcHA4ODRrNUZic3o3NlNMcGRlNjJPenQyc1R6NlI0OGVQNjhoNVYxNXhoVVJIUit2SUdaOTk5cGtjT1hwVVI4Njd4QnFBMXZUWVVsaTFISDNUcGszeTJlelo4c21ubjhyNkRSdnNQcmNFQlFYWk40UjY5ZXdwVjExNXBUUm8wTUNlYVROcDFhcFZzdXpQUDNXVXN4TW5Uc2hESTBiWVMzUk5lWHJ5WkNsYXRLaU84cTU4K2ZMUytlcXJkZVFzWDBqUXM5TFNaSE8vbStYa3N1VzZ4NXpnY21XbDF1eFpFbHFodk83eFArbzFyMjdRZldoOUZyejczbnR5OE9CQjQxdFhBZ0lDcEZpeFl0S2plM2ZwZC8zMTByeDVjK1BYZ3pOUk55cy8vK0lMT1hMRTdLUlg2ZEtsOC9VNW0xZnE1M3RuNXN3enJvQnlpcnJKMHJ0WEwvc2Fid0lKZWlIZzB3bTY5ZkxjODh6emt2anNDMVpiOXhrU1lGMGtxNzc5bWhScjJWejNlQmNKdW5OSTBIUG4vaUZENU1XWFh0S1JNKzY3NXg1NWVzb1VIZVZNRGFabXpab2xReDk4VUJLdGdWUitxT1dHZi83eGg5U3ZYMS8zbkJ2MXNkbW9TUlBac0hHajduSGV0OTk4STUwNmR0U1JNNW8yYTJZdjVUYmxuYmZmbHI1OSt1aW9ZS2tWRmQ5Ly83MU1zbDVmYWhDdWxxd1dORFdRVTB0ZkI5eDZxLzA4eGNURTJBTjJwMDJkTnMxT3V2Mk5TbW8rc0JJcEV6eWZvRnZYbkYwVEpzdkJOOTdTSGVhb01WM1YxMStTNG0zYjZCNy9vbTdzZmo5dm5qdzFhWktzK09zdlYyL1luVTY5OTZ0WHF5YUQ3Ny9mVHZSVU11dW0yd2NPbExmZmVVZEhacWliRWJzVEVseGZNYUMyTGRVLy8zeWp2OXNPN2R2TGQzUG5Hcm1HS3hTSmc2Y2QrMjJ4SEh6aEZlUEp1ZlVPa3pLREJ2cEVjZzc0aTRTZE8zVXJaNGNQSDVicmI3aEJicjd0dG53bjU0cWF6Vk9KRXZ5UFdxcjYzdnZ2MnpjamV2WHRhODhrZXlFNVY5UmdjY2VPSFRKcTlHajdCcysxc2JHeWRObXlBa3NRZkUzclZxMTBxL0JSTlhnT3pqQ2JUUDJ0ekYyMysyVnlybTd5ZnZubGw5S2thVlBwMmJ1M2ZXMG95UGVldXRHN2RkczJ1Vy93WUtuWHNLRThQWFZxdmxhRm5hdGV2WHJwbGpscWxabXFEK08ySlV1V0dQL2Q5ckZlUTZhU2M0VUVIWjZWZGlCUmRqM3dzUEdaVFNXeVdWTXBmOWRBSFFGd3d4cnJnL3RzaTdqVW51RzI3ZHZMN0MrK2NHeTVXcGt5WmV3NysvQWY2blgwODg4L1M1dDI3ZVRtVzIrVkxWdTM2a2U4S2Zua1NidUdndnIzWG5IVlZmWVdFdVNzUmlHdEpKNjZiNzhrREgvRXlqRE5KNU5GMmw0c0ZlNjlXMGYrUTIzUHVycExGK2x1SmFYcU04VnJEaDA2SkE4LzhvaDlZL0dMTDc4ODYrZWlFeTZ4cmoycTBLVnBjNy83VHJmY00zL2hRdDB5UTYwSXVDNDJmOFVlejRZRUhaNms5bG9sUFBpUXBGc2ZUS2FwdlZZeHowK1hnSkFRM1FQQURjZU9IclVyWldkSFZjN3RlT21sZGxWdEoxMTR3UVZHNzN6RFhXb2Y5ZEFISHBETHJyelNYckxxUzlSTkoxWGtVTjJFNnQ2enAyemM1TUxSV1Q1STdkTlZWZklMRzdYRk0rSGhSeVRqd1ArZlRHRktjTVVLRWpONW9nUVkybE5iRU5TS21zbFBQeTB0V3JXU2hZc1c2Vjd2MnJ4bGl6MjczKyttbSt4Nkt5YUZob1pLZDhOSnBySjQ4V0xkY29lNnBxb2lvQ2FwbXh2cWRCaVRTTkRoUFZsWnN1K2xWeVhwcDE5MWh6a3FLYTgwYVp5RWxDMmpld0M0NWRqeDQvYnk5VFBadlh1M1hHNGxYRHQzN2RJOXppbU1BMzEvcFdiRDJuZnNLTSsvK0tMUEx4WC84cXV2NUtMbXpXWHNFMC9ZTngzdy8wS0NnNlZDaFFvNktqejJ2L0cyTzJPaGlBaXArdngwdnhvTHFXTVR1MTV6alR3eWNxUjlQSnF2VUxQbkg4K2FaYyttLzdGMHFlNDE0N3JycmpOK3Mxb3RjVGQ1U3NTL3FhTXkxVllpazI3czEwKzN6Q0ZCaCtjYy8zMkpKRDcvc283TWlocHdpeFMvcEoyT0FMaEp6WjZyczJiL1RSWDQ2dFduajVIa1hGSFZ4dUg3bGxxRFY3VkUzT21qMGdxU1NpU2VHRGRPV2w1OHNheFlzVUwzb203ZHVvWHVhS3JqZnl5VkE5T2YwNUZCZ1lGU1lmaFFLZEtrc2U3d2ZTdFhyclN2RFF0OFlOWThPM3YyN3JWdlVzOTg5MTFqUzk1VlhRZDFESnhKdTNidk5wNHduMjdldkhtNlpVWkVSSVI5eW9wcEpPandsTFQ5K3lYaC9nZnRKZTZtUlRTL1NDb012VTlIQUFxQ3V0dDlPclU4YmNnREQ4aVNQLzdRUGM0S0N3MHR0SHRaL1lrNnIvaUtxNitXL1M1VTNpNElhbHRIMzM3OVhKMTU4ckthTld2cVZ1R1FmdXk0N0J6K2lDczFlSXBmZVptVTZYZTlqbnlmV2xMZHZsTW5pVTlJMEQyK1M5MnNIbmpublRKdCtuUWpTWHFSSWtXazJ6WFg2TWljYjEzYWg2NmVvM2svL0tBak05VHBLaVZLbE5DUk9TVG84QXoxUWFRS29iaXgxeW9vcXJURVRKMWsvQXgzQURuNzdWLzcwOVR4TjJyR3dKU3laY3RLS2NON3gyRFcrdlhyN1JVV0pzK2g5NExKVHoxbDd4T0ZTTE9MTHRJdC82ZU9RVTBZT1VyU0VuSjN5a1YraE5hdUtWVW1qcE9BUVA5SUIzNzg4VWU1cWtzWHY5b2lvcXJQanhnNVVwNTU5bG5kNHl4VmpkeTB4UzRWd1R5VmtpSi9HTHE1LzdjQnQ5Mm1XMmFSb01NejlyLytwaVQ5K0l1T3pMSDNuVThlTDZHVm9uVVBnSUp5K2hMM28wZVAya2ZPcUFHSktlWExsN2NMVHNFM3FXckhzVDE2eUlGRTh6ZHlDOUtkQXdkS1Z5dlJ3SDgwYmRwVXQveGY0cnZ2eS9GdnpNODRCaGFKbEpqcFV5U29TQkhkNDl2VXFxdHUzYnZiczg3K1JxMHNHL2JRUS9MZWUrL3BIdWUwYk5sU2loY3ZyaU16MUxGbktWYnliTnJtdURqWnUyK2ZqcHluenFwdjE3YXRqc3dpUVljbm5QaGpxZXlmUEYxSFpwVWVjTE9VNk5CZVJ3QUtrcG9OL2RzYmI3NXAvQWljcGhkZVNBVjNINldXTDZxQ1QxdTJiTkU5L2trVk1ad3dmcnlPb1BhZVY2dGFWVWYrTFhuTld0azdlYXFPREFvTWtJcGpSa2xrM2JxNnc3ZHQzNzVkdXZmbzRmZkZGZSs4KzI3SHQzK3BhdVJYWDNXVmpzell0MysvN0xlK1RQdG03bHpkTWtNdGIzZnJpRllTZEJTNDlFT0hKR0hJY0hXTFVQZVlFOW1pbVZRY3dyNXp3Q3ZVSG1LMVZEa3hNVkhHakIycmU4MVJ4YWJnbXhZdFdpUnZ6WmloSS8razlvUysvZWFiVXJSb1VkMkRraVZLU0ZSVWxJNzhWL3F4WTdKajhJT1NkZEp3eGZHQUFDbmQ3M3FKNm5hdDd2QnRhc2E4ZDkrK2RoTG83MVFSeVJ2NjliTlhFam5KZEZWeU5Ydis3KzFzVGxPckRFenVkVmMzOXUrNC9YWWRtVWVDamdKbG4zYytiSVNrNzk2amU4d0pLbFZLcWt5ZnpIbm5nSWVvNWV6Nzl1MlQ5OTUvWDVKek9CUGRLZXI4VXZnZTlUb1pOWHEwUFFqelYyb0FPT0toaDZSSmt5YTZCMHI1Q2hYc3lzbCtMU3RMZGowNVFkSzIvYk5vcGduaDlldEo5RU1QMm9tNlB4ajc1Sk95M01VVEQ0S0NndXhpbzJwbGgvcFNXNlpDckhHbFd5dXpkc1RIeTUyREJqbDZMV3plckptVUtXUDJpTDF2di8xV3Q4dzRldXlZckR0dFJaN1RvaXRXbEdiVzgrUVdFblFVcVAxdnpaQVRDMzdVa1VIV2hUTjYvQmdKTFlUbnFBSmVwcXBVcjkrd1FWNTYyZnpSaW1vZ1ZhMWFOUjNCbDZpcTdhWXErM3VGT3ZKbzZKQWhPc0xmR2pkcXBGdis2OUNYYytUb1oxL295SnlnTWxGUzlhWG5KTkJQanF6NytlZWZaZXEwYVRveVJ4VnJ2T0x5eStXRjU1NlRYMy82U2JadDJTSjdkKzJ5di9iczNDa2IxcTZWYitiTXNXK3cxYTlYVC8rL3pQbksrbDVPemhhcnF1UWREQjgvK3JOMURjL0l5TkNSODlUSkYwNnZMRGhkKy9idGpSOUpkem9TZEJTWUUzOHNrd05UbnRHUlFWWnlYdnEyL2xMeXlzdDFCd0F2ZWZPdHQyVEwxcTA2TXFkcTFhcXVmc0RDR1dyditiUFBQNjhqODZwVXFTSTMzM1NUUEQxNXNzeXpCc0ViMTYyVHJYRnhzbS8zYnRtMGZyMnNXNzFhNW4vL3ZUejN6RE15Y3NRSXVhWnJWNmxYdDY0RTUrTlVrS2pTcGVXZEdUUHNtVGo4VSszYXRYWExQNTNhdmtOMmp4NXJ6NktiRkJBU0xKVW5QQ0ZoZmxJZ1YrMDNIekJ3b0k3TVVMUGl2WHIydE4vemM3NzhVZ2JlZnJ0ZHNGQ2RCcUsybzZndnRTYzVKaVpHTHUzVVNjYU9HU1BMbHkyVDJaOStLdWMzYktqL0Z1ZXBGVVgzRHg3czJKNTc5WFBlY0wzWm8vWlVZYys5ZS9mcXlIbmZXZGRrazl4YzNxNlFvS05BcENVZWxJVDdIM0RudlBNTG0wakZCNW1WQUx4cXp0ZGY2NVpabGFLajg1VkVvV0FjUEhoUWZ2cjVaeDJaVTcxNmRYbHY1a3c3SVgvdDFWZmx2bnZ2bGZhWFhHS2ZtNitTZGxYQlYvMDNLbUZzMTY2ZDNIbkhIZkw0Nk5IeTZheFpzdUxQUDJWWGZMeDgvT0dIOWtDM1N1WEsrbS9OblNtVEprbU05VDN3di94NVcwcEdjckxFVzJPaHpPUG1pNXRGM1hhTGxPallRVWUrYjlLVUtiTFZZRkhSNGxiaVBYUEdESG4zblhmc203dTVwWmJBZCtuY1dSYi8rcXVkMEp1eWZjY09lZjZGRjNTVWY1ZFkxenBWTU02VVpPdTEvcWQxblRSQjNjVDk0Z3R6SzFEVTcvOGlsNDk2SkVHSDY3SXlNMlhYNkxHU3Z0ZmNVUWgvVTh1NVlwNmRLb0VjcXdRVWVtNS93TUlacTFldnRvL2dNK25pMXEzbGo4V0w3ZG15dk14aXEwRzVTdUJqdTNXemk3eXRXN05HZmxxNFVIcjI2SEhXSTR4dTZOdFhicmpoQmgzbG43cHhzTk1hdk9mbWE5V0tGY2JQV2wvMTExOW4vTjY1L1ZMN1kvMlJHZ3Z0Zm1xS25GcXpWdmVZVTZSTmE2azQ5SDRkK1Q2MUQ5dko1UFRmMUVxckQ5OS9YM3IzNm1YUEx1ZUYybEwxN1BUcGN2Kzk5K2I1N3ppYnFkYmY3OVMxVWEwR3VMUmpSeDJaTVgvQkF0MXlscW9RYi9KMGo4c3Z2ZFQxMVUwazZIQmQ0dHN6WFRualU0S0RKSHJDRXhJYVhWRjNBQ2pNYXRlcXBWdndKYVpuejFWaS9jRjc3ems2ZTZTS1I3VnExVXJlZi9kZGUzbnN4UEhqN1JVYy94Nm9xNW4ycDU5KzJ0RUJ2RW91MUhuL3VmbFNTM1ZOSzJkOWp6Tjk3OXgrcVpzZi91am9Ed3ZrOEFjZjY4aWM0SExsSkdieVJBbndvK2R4aXZXZVVhZC9tREo2MUNpNTdMTExkSlIzNnJVN2Z0dzRZNnRBRGg4K0xLKys5cHFPOGtkZGc5UU5TcE4rK2ZWWDNYTFdYeXRYR2kweWE3cksvWm1Rb01OVlNTdFh5YjRwNWd0NktLWDY5cGFTbmZ4bk9SZUEvRkd6cFBBOUppdnpLcGRiQS9HS0ZjM2R5RlZKNWdORGg5cXo2bXJmdXRxdnFxaEswRysrL3JxOS94eUZTOHF1WGJKenhDZ1JnMFd6bElDd01JbDVmcXFFbEROL0k4WXRPM2Z1bExjTkhyZllvbmx6ZTN1TFU5UUtsUmVmZjE0aURaMUU4SnAxRFZGNzBwMmdia29VTVZpblpjM2F0ZlpOQmFjdE1EUXpyNml0UjgydDE0VGJTTkRobXZSRGh5WGgzcUhtei9pMGhEZW9KOUdQUHF4dUNlb2VBSVdaV200WWN3NzdDT0VkYTlldDB5MHpxcnRVMlYvTmJOOHhjS0M5ckh6VXlKRXllUEJnZTk4bkNwZE1mYnhzNXBFanVzZWN3S0pGSk16UFRxNlkrZTY3OW5uZ3Bvd1pQZHJ4V2lXcWJzV3R0OXlpSTJkdDI3NWRGaTVjcUtQOEtWcTBxSFRwMGtWSHpsTkh3NmxxN2s1Uys4OU5Gb2pyMnJWcmdhemlJVUdISzdMUzB5WGhvVWNrTFdHbjdqRkhmU0JWZVg2YUJCcmVWd2VnWUtnallhNis4a29aLytTVDlwRTNDZFlBNWVqaHczTE0ranA2NkpCczM3SkZmck1HQVdyLzMxMTMzR0dmSzkzbTRvdnRHVXY0bnNURVJOMHlJODJGWXFXblUzczlIeHMxU3A0WU04YlkzbFI0MS82WFg1UGtKVXQxWkZiR3dVT3k4L0VuN2YzdS91RGt5WlB5bk1HOTU2MWF0cFNPaHZaaDMzUDMzY2IyTWIvbDRJb0NWVGZEcENWTGx1aVdNL2JzMlNNYk4yM1NrYk9DQWdQbCtyNTlkZVF1RW5TNEl2SERqK1hFL0VVNk1pY2dPRWdxVFo0ZzRaeDFEUGlkcUtnb2VmeXh4K3dxMjE5OC9ya01lL0JCZStsWmhRb1Y3T1dERWRhWG1xV3NWS21TTkx2b0lybnJ6anZsMldlZXNZdC9mVEY3TnNrUXppaHU4Mlo3RnNadHZCNExwK0F5VWJybGp1Tnp2NU5EbjMrcEk5LzJ3L3o1Y3VEQUFSMDU3NWFiYnpiMnZxeG1qVXNiblgrK2pweWw2blFrSlNYcEtIL2F0VzFyZjVhYW92NnRUbDV2ZjdjU2ZxZVcrUDliNWNxVnBlbUZGK3JJWFNUb01DNTV6VnJaTjI2U1dvZWllOHdwcWZhZFg1SC93aDRBdkVNTmw5U3hOU3VXTFpPUmp6eGlKK3JuUWcyNDFCSjMrQ2JUaWV5Q2hRdGxtOEhqbW9EVFJmWHNMcEhObXVySUJkYllhOCtURXlUTllHTHJsbG16WnVtVzg5UUtxNjRHbDNlclpkTFh4Y2JxeUZuNzl1MlRwVXVkV1pWUnFsUXB1MnE1S1dvZmVtcHFxbzd5YjlFaWM1Ti8zYnQzTDdBaWxTVG9NQ3JqeEFsSkdEcGNzZ3p1Ri9wYldQMjZFdjNJY0RXYTB6MEFmSjM2Y0x6Ly92dGwxa2NmR1Mza0JlOHlmY3lXcWdaOWRkZXVrcENRb0hzQWN3S0NnNlhTRTQ5TGdJdkhObVVlUFNZN1I0MXhaYUxFbEpTVUZKbnp6VGM2Y2w0ejZ6cFRwa3daSFpseG1jSEU5K05QUHRHdC9PdlZxNWR1T2UrRWxSY3NYNzVjUi9tbmJyQ2FvRzdZOUwvcEpoMjVqd1FkeG1SbFpNak9rYU1sTmM3YzJZUi9DeXhXVkdKZW1DNkI0ZUc2QjRBL0dIVG5uVEpwNGtUSGkvYkFkMVJ6b2JpZk9rTzNXY3VXOHNHSEh6bzZ1d09jU1VUdFdsTDJ2cnQxNUk3ajgrYkxRUjllNnY3cmI3OFpQVnF0aytFendKVzZkZXZxbHZOVThUVlZoTTBKNmxnNFZTdkRGTFZWd1FtN2R1ODJ0dis4WnExYWNsN3QyanB5SHdrNnpNaktrc1QzUDVSalg1bTcyL2xmZ1FGU2NleGo3RHNIL0V6bnE2NlN5Wk1tR1YvaURHOXIxS2lSYnBsMThPQkI2WC9MTGRLMGVYT1o5Y2tuY3ZUb1VmMEk0THh5dC9hWHNMcDFkT1NPdmVNbVN1cWV2VHJ5TFY5Ly9iVnVPVTk5eG5SbzMxNUg1b1NIaDh2NURSdnF5Rm03cldUMTBLRkRPc29mZFRSa0c0UEhrcXJ6MEozWWh6NTM3bHpkY2w3MzJOZ0NuUmdnUVljUnllczN5TDZKVTl6WmQ5Nnp1NVMrdHF1T0FQaUQwcVZMeXlzdnYxeGcrNy9nSGVwY1lyZHUwcWhCNDRZTkcrVDZmdjJrYm9NR2N1Lzk5OHV5WmN2czViV0FrOVNLdjhxVHhrdUFpNmRMWkJ3K0lnbVBqTEpYT1BvU1ZRVHN4NTkrMHBIejFQRmk2aWcwMDlSMXJHS0ZDanB5MXJGangreUNsMDdwMzcrL2JqbHYwNlpOanF4VU1yYThQU3hNYnI3NVpoMFZEQkowT0M3aitIRkp1R2V3WkNXZjFEM21oTmFxSVpWR2oyVGZPZUJIMUNEbXliRmo3YnY0UUkwYTFuVStPbHBIN2xISHU3Mzh5aXZTcWswYmFkU2tpVHd3YkpoZGlNbnRZOW5ndjRyVXJ5ZWwrL2ZUa1R1U2Z2bE5EczMrUWtlK1FTMXRYNzkrdlk2Y3AwNy9LRm15cEk3TUttSHcrNnhaczBhMzhxLzlKWmRJOGVMRmRlU3NuYnQyeWZidDIzV1VOK3FtNmRKbHkzVGtyQWIxNnhmSVo4N3BTTkRockt3czJmWDRrNUs2YllmdU1FZnRPNi82OHZNU2FQQTRDQUR1VS92MGJ1em43cUFWM3FVR3o3SGR1dW1vWUd6ZHRrMmVmZTQ1YWQyMnJkU29WVXY2M1hTVGZEeHJsbDA5R2Nnek5hTTYrRjRKcVJxak8xeVFtV2xYZFUvWmJuNmM1aFNWektVYXZER205aHFIdXJTU29WelpzcnJsdk44V0w5YXQvRk9ucGJSczBVSkh6cHY3N2JlNmxUZnhDUW41VHZLejArM2Fhd3Q4OVI0Sk9oeDFjTmFuY25TMkMwVklyRGRPeGRFakpieG1EZDBCd0IrbzJmT0hodyszOStvQmY3dm43cnM5YzFUZVhpc3AvK2pqaitXR0cyK1VLdFdxU1l0V3JXVE0yTEd5Nk1jZmpSYXhnbit5bDdwUGVNTFZsWUNaeDA5SXdxT2pmV2FwdXlxQVpsTFZHUGR1a0pRclYwNjNuTGRueng3ZHlyL0F3RUM1eWVDTjh2eHVXZmpoaHg5MHkxbWhJU0ZHbC9mbkZnazZISE55NHliWk0vcEpWL2FkbDRpOVJrcGZWN0F6S2dDY1Y3bFNKZnZ1TlhDNjZ0V3JTNC91M1hYa0hXclArdklWSytUSjhlUGw4aXV2bEVyV1FMOVhuejd5c1pYQXE4R3lFNFdRNFArS3RXZ3VwYTd2clNOM0pDOWVJZ2RtdnFjamIxT25MSmhVcW5ScDNmSnRjWEZ4dXVXTUs2NjR3dGpLZ3BVclYrYTV0b2U2cm41ajZNaTlwazJiR3FzVGNDNUkwT0dJaktRa2liLzdmbmZPTzY5N25sUitZalQ3emdFLzFLZDNiM3RKTTNBNnRiSml6T2pSVXF4WU1kM2pQV3JRZVBMa1NabjkrZWR5dzAwM1NmMkdEZVdLcTY2U3p6NzdqSmwxbkZXRndmZEtrT0Z6dVA5dC85Um41SlFQTEhWWE44Rk1lbnZHREtsZXE1WXJYMDlQbTZhL3EvTU9Iam9rcHh3Y2g1Y29VVUxhdG1takkyZXBsVWpxbUxTOFVOZlRQdzI5SnE2OTVocjc4NmFna2FBajM3SXlNLyt6NzN6TE50MWpUa0JFaEZSNTVtbk9Pd2Y4a0ZwYU51QzIyM1FFL0ZQVnFsWGxpVEZqUERGNHlvMFRTVW15Y05FaTZYMzk5Vkt2UVFPN3lOeU9IVHVZVmNjWmhaUXVMWldlZkZ5dExkWTk1bVVtSmN2T2gwZEtWbnE2N3ZFZVZaVFJ5YVhiWjZJU3ZwMDdkN3J5cGFxdG02TE9RVmMzQ1oyaXJyVTllL1RRa2JQVTcxVVYzY3lMelpzM3k0RURCM1RrSFBYejNtQmRyNzJBQkIzNWR2aUxyK1RvcDUvcnlDRHJqVlB4c1JFU2NaNzVvekFBdUs5Ky9mcDJFZ1prNTQ2QkErWHFxNjdTa2UvWXQzKy9YV1N1VnAwNjB2ZUdHMlRGWDMvcFI0RC9WNkpqZXluV3FZT08zSkc4OUU4NThQNkhPdklldFF6NkZNY2M1azVXbHVPblRKaWNVZjVxemh6ZE9qZnpETzAvdjdoMWE2bmdnZVh0Q2drNjhrWHRPOTg5WXBSOVVUQ3RlTGV1RXRXN3A0NEErSnRPblRweDdqbHlGQndjTERQZWVrc3VhTkpFOS9pZVR6Lzd6QzRzcHhKMWRSNHc4TGNBNi9wWGVleG9DU3JsenBGZmY5cy9hYXFjM09Ucy9tV25xUE95ODdwWHViREp5TXgwZklhK1RKa3ljdmxsbCtuSVdVdisrRU15OGxDbzhMdnZ2OWN0Wi9YdDAwZTNDaDRKT3ZJbC90NGhrcFdTcWlOelF1dlV0ajYwSHJObjBRSDRwK3M5OU9FSTcxTDdJci8rNml0cDByaXg3dkU5YXBuN0o1OStLazJiTjdjcndDY25KK3RIVU5pRmxDc3JGUjU5V0VmdXlEeDVVaEllZkZneXJXVFlhMVRDZWZUb1VSMmhJUFRwMVV1M25MVnY3MTU3MmYrNU9IandvUHk1ZkxtT25CTVJFZUdwQXJVazZNaVhOSmZPTzQ5NWRxb0VGUzJxZXdENG0wclIwVkt2WGowZEFUa3JXN2FzelB2dU83bjgwa3QxajI5U0JaMVVCZmlMMjdhMTkxVUNTdFExMTBqUkR1MTA1STVUYTlmSi9sZGYxNUYzcUp0WjFHMG9XQjA3ZHBTUWtCQWRPZWVrZGYwNzErMCthOWF1ZFhTZi9kL2FYSHl4MFNQd3poVUpPanl2L01NUHN1OGM4SE5ObWpReE1nQ0EveXBac3FSODl1bW5NdVQrKyswemUzMlpHblMydmVRU21mdnR0N29IaFZwZ2dFU1BHaWtCTHAvOWYrREZWeVhaU3RTOUpOMUh6bXIzWjlIUjBYSnhxMVk2Y3RiWFgzK3RXN216YU5FaUl6ZHNialI0NW50ZWtLREQ4OUpVOVU3dW5nSityUnJGNFpBSFlWWUNNK21wcDJUV1J4OUpsY3FWZGE5dlNqeDRVSHIwNmlYdnZmKys3a0ZoRmw0MVJzb1BHK0xxMXI2c2xCVFpPZkl4eVhLNDBGaCtzUDNERy9yMjdhdGJ6anJYNWVyejU4L1hMZWVvYlZPbTl0bm5GUWs2UE8vZ3EyL0tzWjkvMFJFQUFQOTBUZGV1c3VxdnYrelpkRFhZOGxXcUlOYUFnUU5sMWllZjZCNFVabVZ1NkN2aERkemQrbk5xOVZyWis4SkxPaXA0eGRqZW1HdHFKVkZrWktTT25OV2hmWHY3aHFqVDFPcWgvZnYzNnlobmlZbUpzdlRQUDNYa0hIWFdlMVJVbEk2OGdRUWQrUkxab3BsdW1aT1ZtaVk3SHh3aHFidk5ub01KQVBCZFJhMkJ2SnBOLzhzYXdQWHUxY3ZZUU5XMDlQUjB1ZjJPTzJUNWloVzZCNFZWWUdpb1ZKazBRUUxDM1YzcW52ajYyNUswYXJXT0NwYXBJNzc4a1hxbTFFa1hKcWdqVUJzMmFLQWo1NmpsNnI4dFhxeWpuQzMrL1hmNyt1aTAvamZkcEZ2ZVFZS09mS2t5OVNrSkttUCtybFBHZ1VTSkgveUFKeXVNQWdDOG8zTGx5akp6eGd4WnVYeTUzSHZQUFJKVnVyUit4SGNrSlNWSi81dHZabmt2N0JvOFpXNi9UVWZ1eUZKVjNZYy9ZbGQzTDJpcU5nbjFTWElud09BTXVwcWR2N2wvZngwNTY3ZmZmdE90blAzMDAwKzY1Wnp5NWNySnBaMDY2Y2c3U05DUkx5SFdDN3ZLTTFNa0lNVE1IYnZUblZ5NlhQWTkrNEtPQUFBNE16WHJWcTFhTlprNlpZcHMyckJCM25yakRXblZzcVZQemNadDJMaFJKa3ljcUNNVVd0WnJ0dnlkdDB0b3JacTZ3eDJwY1p0bDc0c3Y2NmpncUlTelNKRWlPa0pPVkJJZEdocXFJK2QxdnZwcUNUUHc5NnVaOGR3VWZ2czFsNG44dVZEVjI5WHFLNjhoUVVlK0ZXdmRTcUtzRHc4M0pMNzh1aHo3MWZrM0tBREFQeFV2WGx6NjNYQ0QvTFJva1d4Y3QwNG1qQnRuRDhwTUREU2Q5dElycjhpK2ZmdDBoTUlxTUR4Y0trOTRVaVFvU1BlNFE0MjVUaGc0Yy9wY3FIM1A0UzVYcy9kVjVjcVdOWnFncTJydWpSczMxcEZ6VnExYVpSODVtUk43Ly9teVpUcHlUdS9ldlhYTFd3S3lEQjR1bUpXZUxwdTZ4RXJxeGpqZGs3Mm9RUU1sZXRoUUhmMlRXdGE4b1ZWN3lUaDBTUGVjV1lPMXl5WFFSL2VjbVpUNDVnelo4OFFFSFRtcllkd2FDUWdPdG4vWDIyNjlRNUorL2xVL1lrNXd1YkpTNjZ2UEpNVDZzN0E2TW4rQkpBd1lwS016SzlFalZtSW1uL24zbnBXUklYR2RZeVZsNHliZGs3MlMzYnBLbFdtVGRlUi9Uc1hIUzl4bG5lM1hzRW1CUllwSW5RWGZTWWdMVzBKTXVIL0lFSG54SlhPRmcrNis2eTZaUG0yYWpyeE5mV3cyYXRMRW51RTA1ZHR2dnBGT0hUdnF5QmxObXpXVFZhdk43U3Q5NSsyM3BXK2ZQanJ5TnZVN1BIYnNtSHd6ZDY0c3RCSjN0Y1J5eTlhdFJ2WTM1dGV3Qng2UThlUEc2Y2haYXRCYnRVWU51emlkS1h0MzdmSmNBYVovVzlleW5hUWZPS0FqYzZJbmpaY3kzV04xZE81MlRYaEtEcjcrdG83Y0VWSTFSczZiTTF1Q0NtaDhyZDZUZFJzMGtCMDdkdWdlNTZuVk51M2F0dFdSN3pxdmRtMTVhUGh3SFpueDBzc3Z5MzJEQit2SU9RdC8rRUhhdEdtam8vLzF5YWVmU3Q4YmJ0Q1JNOVM1NTFzMmJaTHc4SERkNHgwazZJV0FHd202a25id29NUmQzVTB5OXB2L2tJdHMzVkpxdlAyYUJCVFNmVWtrNk00aFFjOGRFdlQvUjRKK1pyNlVvUCtiU2dMVVRMVksyTldYbXFsUmxZVU5EcEZ5VGMxYXFabC9FNE5JRXZULzhKVUVQZVA0Y2RsNDliV1M3bkxSM05MOStrcmx4MGZaeSswTHdpVWRPdVM2a0ZoZVhIWGxsZkxsNTUvckNEbFIxOFZxTld0S21zTkg4WTE0NkNFWk8yYU1qdjdYZ050dmx4a3paK3JJR1gxNjk3YnJsWGdSUzl6aG1CRHJBN2p5bEltdUxNRktYcnhFOXI3d3Nob3A2eDRBQVBKR1ZUNnVWS21TM0Q1Z2dNeis5RlBac0hhdC9QempqM0xYSFhkSTFaZ1lZNVdSYzJQdjNyMnljdFVxSGFFd0N5cFdUQ285YVNVeGdlNE8zdzkvT0V1Ty8xbHdTOTJiWFhTUmJwbXhlczBheWNqSTBCRnlVclpzV1duWm9vV09uSlBUUG5SMUEzSHhraVU2Y2s2UDd0MTF5M3RJME9HbzRtMHZsakozdWJBZjNYb1RIM3p4VlRuK3gxTGRBUUNBTTFUUm9CYk5tOHV6enp3ajY2MWsvYWVGQzJYUVhYY1ZTRVg0ek14TStmcnJyM1dFd2s2TnMwcGMwMWxIN2xBcnpIWU9mMFF5a2dybVZJSGF0V3ZybGhrblRweXd0N3pnN0ZTaHpXdTZkdFdSYzlTS3RKU1VGQjM5MDU0OWUyVExsaTA2Y2tiNTh1WHRsUk5lUllJT3g1Vy9aNUJFTkRkN3QxUEpTa3VUbmZjOUlHa3VMS2tIQUJSTzZvaW5aczJheVRQVHBzbld6WnZscFJkZWtOcTFhdWxIM2JIa2p6OTBDNFdkT2tvcit1RmhFaFRsN3MyaXRCM3hzbnZpNUFKWnVkakN3SXp0NlZSeXZpbnU3TnR4OFIvWFhudXQ0eWRpcUpWQzI3ZHYxOUUvcVRvaFRxOXc2Tks1czlHQ2V2bEZnZzdIQllhRlNzd3pVeVNvYkJuZFkwNjZsWnduREh0WXN0SlptZ1FBTUVzZCtUVGd0dHRrNVlvVjh1VFlzUklSRWFFZk1VdnRpV2NKTHY0V1VyYXNSSThlNmZwUzl5TWZmeUxIZmpPM0Z6dzcxYXRWTTNyVW1scWw4c01QUCtnSVo2TitIODJiTmRPUmMrWmtzMUxJNlJWRTZqaTYzajE3NnNpYlNOQmhSR2lGQ2xMNTZZbi9MU0JuVXRKUHY4cSs1MS9VRVFBQVpxbFpkVlV0K2ZOUFA1VWlMaFNuVlVYc2ZIVUpyaGNyNC91RGtsZGVJY1V1ZGJhUTVObllTOTJIalpEMHc0ZDFqenZVbHBQNjllcnB5QXlWSEhxaEtLU3ZNRkVROUV5RkFKT1NraHpmZjE3UnlsRmF0MjZ0STI4aVFZY3h4ZHRjTEtYdnVFMUhaaVdxL2VpL3N3UVFBT0NlRGgwNnlQQmh3M1JranByaFUvdGtuYWFLM3ptOVZQWGYyTnRyUmtCUWtGUjYvRkVKTEZGYzk3Z2pmZDkrMlRWK2txdEwzWU9zbi9YU1RwMTBaTVpmSzFmS3RtM2JkSVN6dWVMeXl4MHZucmw4eFlyL09ROWRIWCtwS3NjN3FWdTNidmI1K2w1R2dnNXpyQS85aXZmZkl4RXRuVjhHODIvMmZ2UUhIbkw5cmk0QW1LQVNNaWVwbVNHbmo4WEJmd29tM1hiYmJjYVh1cXZmMzc4SHJrNVFnMVRUQ2JySkk5d0t1OUR5NWFYOGcwTjA1SjZqbjM4cFJ4ZjlxQ04zWEhIRkZicGxobHJwOFpaSGo5enlvaG8xYWtqREJnMTA1QXgxMU9XdTNidDE5QitMRnk5MmRHV0R1dG5UeitIejFFMGdRWWRSNnB6eUtwTW5TbENwa3JySEhIVXVhTUpESTQyZlp3MEFwaDAvZmx5M25QSEpwNS9LK2cwYmRBUW5sUzVWeXQ2VDZZdE1KK2ZLWm9lckwrT2Z5dlRxS1JGTkw5Q1JTekl6WmRkall5WDk2RkhkWVo0NlZVRWQ4V1hTakhmZXNaZFU0K3pVUHU0YisvWFRrVFBVVFpMZmZ2dE5SLzh4Wjg0YzNYSkcxYXBWcGRINTUrdkl1MGpRWVZ4WTVVcFNhZXBUOW5JczAwN01XeUQ3MzNoYlJ3RGdtNXhjMGhjZkh5LzNEUjZzSS85eThPQkJPWENnWUUveVVBTlZ0U2ZkTkRYejQ3VHc4SEFKTkp5a3EyV3JNQ2NnT0VncWozOUNBaUxDZFk4NzFLVEl6a2RIMjhtNkc5Unk2bDZHQzN1cDQ3ekdQdkdFamdxZTB5dXBuS2FPS1hPNkV2cmNiNy9WcmYvY3FQN2xYd2w3ZmwxN3pUV2VydDcrTnhKMHVLTEVKZTJrMUswMzZjaXNBMU9teS9IRnpoYVVBQUEzclhBb3FWSDdmL3ZkZUtNa0ppYnFIditoa3ZPdTExNHJ6VnEwc0Nzd0YrUmcxdlJ1WEpXY0Z5OXVacTl4NDhhTmRjc01OU05HOFMyekltclZsSEwzRHJLM0ZycnAyTGZmeTVINUMzUmtucXE4YlhyVng2dXZ2U1pyMTYzVFVjRlEyNUhlZmZkZHVlbm1tejFkWkxGYXRXcFN2WHAxSFRsREZZcjcrMmRldFdxVm95c2ExTTNVVy9yMzE1RzNrYURESGRZRnRlS1EreVM4U1NQZFljNS9xb3crTE9tSGorZ2VBSENPR2lDV0tsVktSMmFvWTdYeW05U2twS1RJTGJmZTZuZ0ZYQzlRTXl2WHhzYmF6NVBhczlqRlN0VDczM0tMN1A3WC9rVTNxTDNocG0rQWhBUUhTNGtTSlhUa3JNcVZLdW1XR2N2Ky9OTSs0eGhtbGUxL280VFZxNk1qbDJSbXlhNlJveVhOcFZVc3paczNOMTdOL1lTVkVLcWJta2RkWEw3L04zWE5YN2x5cFZ4NitlVnl5NEFCOHZHc1dmTHNjODk1OWdhWFdqblU3L3JyZGVRTWRlTjExNjVkZGxzbDYwNys3T2ZWcmkyMXJTOWZRSUlPMXdSR1JFak1jMU1sME5Bc3dPblNkKzM1ei9ub0hsOGVCTUEzbVM0S3Ruck5HbG03ZHEyT3p0M0preWZsWmlzNS85TGgvWHRlb0txWjkrN2JWNWI4OGY4bmQ2Z3p3ai84NkNOcGZPR0Y4dFNrU1VZcW5tZm5wNTkvTm41am9FbVRKc2FXMFZjeW5LQ3IzOFhqWThia2VhRE5NVzI1RXhnZUxsVW1QR25YL25GVHhzRkRzdk94c1NxNzFEM21xSlVrUTF6WXJyUEd1dmIyNnRQSDhWb2dPVkZKNlcyMzN5NHRMNzc0djhlTnFmZk1xTkdqWmY3OCtYYnNSZGZGeGpxNi9VYmQ4RlEzOVJTbno2YnYwcVdMNDVYblRTRkJoNnZDS2xlV1NsTW02TWlzRS9NWHlZRjMzdE1SQURqSDFHem02Y1pQbkppbnBFWU45R0s3ZDdjTHcva2JOV0R1ZThNTk1pK2JnZHVSSTBmazBjY2VrenIxNjh1MDZkT056MnlyL2UrRGg1aXZvbjNoaFJmcWx2TmF0MnFsVytiTWZPODllZU9OTjg3cDlieHAweVlaUEhTb3RHdmZua3J3dVJUWm9MNUUzZUxPZHNMVEhaODNYdzU5OFpXT3pGSUpZYVhvYUIyWnMyRGhRbW5UcnAyc1c3OWU5NWl4ZGRzMkdUWjh1TlJyMEVCbXZ2dnUvOXlRVXE5OXRUcG8rL2J0dXNkYjFCTDNlblhyNnNnWjM4K2JaMi9QK3ZIbm4zV1BNMjZ6bmtkZlFZSU8xNVc4ckpORTNUbEFSMmJ0bnpSVmtsYXQxaEVBT01QcDQyWE9SQ1hZTDczOGNxNlRHalh6OE43Nzc4dEZ6WnZML0FYdTdRdDFpMXF5UDJEZ1FQbjJ1KzkwVC9aVWtiM2hEejhzTld2WHRndmtMVjI2MVBGajVyWlpBK2JPWGJ2YUEyeVQxTDVKazhXeGF0V3FaWDhQazlSemY4OTk5OW1KeHVyVnE4K1ljS3ZYNzBZcktYL25uWGZreXF1dmxrWVhYQ0F2dlBpaXZZMUJKUzdJaFlBQXFYRC9QUkphdmFydWNJbDFqZG96N2lsSmRXRXJRN0ZpeGVUUmtTTjFaSlpLemx1MmJtMnZ5am5zNERHK2FvV1RtaFZYSzRIcU4yd28wNTk5Vms3bWNJemkvZ01INU5ycnJuTjFaVkJ1cVpVOXZYdjEwcEV6Vk4wS2RjMTJzcTdJQmRiMVJCME41eXRJMEZFZ0tneStUOElhbU4xSHBHUlpGOEdFK3g3Z2ZIUUFqbExGY1V4VGlmblFCeDZRSVVPSDJyTW5haG4zdjZrK2RYYXNLaWpVdEZrenVlVzIyeVR4NEVIOXFQOVF5WnY2MlQ2YlBWdjM1RTZ5OVJtZ2JuSzBiZDllNmpab0lJODkvcmdzc3hJK05UdVRsOVVKYXNDb0tqMVBmT29wYVhMaGhiTGlyNy8wSStaVXJseFp6cmNHOGFhb0diQ1NKYzBmaFpwaFBYY2ZmUGloTkcvVlNpckZ4TmhKdU5xRzBjZEtVbHBkZkxGVXJscFZMckNlMDlzR0RyUnZNSjMrZWxlL043VTNGV2VubHJwWEdqZFdyUWZYUGU3SU9IUklkbzRjTFZrWjVyY1dYbi85OVViZkU2ZFR5YlJhbFZPM2ZuMTVjUGh3V2I1OCtUa255dXExckZienFPMHdhbFZJblhyMTVLb3VYZXpyMlptdTYyZXlidDA2dWVPdXV6eFoyVjBsNkU3ZTVOdXdjYU44OXZubmVicEdaMGRWYnpkOUk5SkpBZFlQNzl4UC95K3FXTmVtTHJHU3VqRk85MlF2YXRCQWlSNDJWRWYvbEptYUtodGF0YmZmL0RscHNIYTVCRVpHNmdoL1MzeHpodXg1d3N5eThvWnhheVFnai9zNVRtM2JMbHU2WGllWlNjbTZ4NXlpVjE0bTFaNmY3c3BSYjI1UVZWTVRCZ3pTMFptVjZCRXJNWlBQL0h2UHNqNFE0anJIU3NyR1Rib25leVc3ZFpVcTB5YnJ5UCtjaW8rWHVNczZHejgvUDdCSUVhbXo0RHNKS1JPbGUzekwvVU9HeUlzdnZhUWo1OTF0RFR5bVQ1dW1JKy83YStWS2FkNnlwYU1EaUp5bzQ3QnFXSW1VT2d2NDcyUktMZWYrZmNrUzJibHJsNnQ3SmJQenp0dHZTOTgrZlhUa0hEVnpyaEk1cDVic3F5Si9aYUtpN0pzc0hUdDBrUFBQUDk4dVBGVzZkR203VXJyYVQ2bSsxTUJaZmFtWk0xV0k3cGRmZnBIdnZ2OWUvc3pEQUQwL0huM2tFUmx0SlFnbVhkdXRtM3h6MnZGR1hqVDR2dnRrOHFSSk9uTFd1cGJ0Sk4yRlFtZlJrOFpMbWU2eE9qTEl1aTRsUERaR0RyLy9rZTV3aWZYZXF2VFVPSWx5NFdmODJYby9xbUpxQlpHd2xpOWYzaTQ0MXJKRkM2bFFzYUo5YlZiWGpyRFFVRW0zcmhscW1icTZxYXFLSThiRnhjbXZpeGZMZ2YzNzVlaXhZL3B2eUx1bkpreVFvUzVzcXprWDZuZlF1azBiKzlyb2xMK3Z3VTVRMS95MXExYjVUSUU0aFJsMEZKanc2dFVrMnJxUWl3dDN0RTU4TzA4T3pKaXBJd0RJSHpVNGk3Q1NacmVvR1dTMTNQS3RHVE5rMmpQUDJGK3F2WDdEQms4azU2YW9nYTdhNCsza2ZucDFVK1ZBWXFLOWRQcXB5Wk9sMzAwM3lZWE5ta20xbWpXbGRObXlVclZHRFh2WmFZeVZ3S3U0NW5ubjJmdWdIM24wVWZueHA1OWNUYzdWVFlONzc3bEhSK2IwTVhCanhXa3Z2ZktLYkxLU0hlU0NXdW8rK0Y0SktsZFdkN2pFZW0vdG5UaFpVdmZ0MHgzbVhOeTZkWUVkbWFWV0xha2JCSk9mZmxvZWVQQkJ1K1pIcDhzdWt6YVhYQ0x0TzNhMGJ4eW83VGhxNW4zR3pKbXllZk5tUjVKelpmVGpqOXY3NDcxRXpVeDM2OVpOUjg1d0tqbFhMbWpTeEtlU2M0VUVIUVdxMUZWWFNLbSt6dTVkeWM3K3lkTWxlVzNCbm0wSndEOUVSa1pLaHc0ZGRBUVRWSEorLytEQjh2cWJiK29lZDZpVkNmRUpDWTROcVBOajBKMTMya202YVpkMjZpVEZpeFhUa1RlcGxSUVBQZnl3YTZ0V2ZGMUlWSlJVR2pQS2xVbVEwMlVjT2l3Snd4OHh2eXJOK3JtZW5qTEY4UUpsWG5mS2VoL2MxTCsvN05peFEvZDR3NVdYWDI3UFZIdlJEUTRmQmVjR0VuUVVMT3NDR3oxcWhJU2ZiNzdnVXRhcFU1Snc3MURKT082OUloc0FmRS9QSGoxMEMwNVRTeVlmSERaTVhuMzlkZDFUK0RTb1gxOGVmdWdoSFpsVnBrd1p1ZXl5eTNUa1hWOS84NDBzK3ZGSEhlRnNTbHphU1lwZDNrbEg3a242ZGJFY25HWCtGSWtpUllySXpCa3o3TUp4aGNtKy9mdnRXWHN2clo1cTFLaVJKNHV3aFlhR1N0ZXVYWFhrTzBqUVVlQUN3OElrNW9WbkpMQllVZDFqVHVxMjdaTHcwRWg3RHpZQTVJZWFkVlFEUkRoTExXMThjdHc0ZWZIbGwzVlA0YU1HbGE5YVAzK1k5Zm5vQmpYejljakREenQ2bnJFSmF2WjgrRU1QY2V4YUxnVUVCa3Jsc2FNbEtNcjhLb3gvc0g1UGU4WlBrbE03NG5XSE9ZMGJONVkzWDMvZGZzOFVKcXZYckpGQjk5emo2Rkx3L0ZBckdrelVJTW12cGhkZUtOV3F1bnlxZ1FOSTBPRUpZVlVxUy9TVGo5c3o2cVlkLzI2ZUhQendZeDBCUU42b1FrR3hEdSs3TXkwcUtrb3VhZGRPUjk2akVyQkpreWZMdUFrVEN1MVNacFVrUHpOdG1qUnYzbHozdUVNVnkrdmFwWXVPdkVzVmFIeG5KalZsY2tzdGRhL3cwSVAydm5RM1pTVW55ODdoSXlUTGhTSnVxa0wzK0NlZjlPd1NhMU0rL09nam1mTDAwem9xZUYwN2Q3WVRkUy9wZitPTlB2bTZJRUdIWjVUcTJsbEs5cnBPUndaWkh4Wjd4MCtTNUhYcmRRY0E1TTJ3Qng3d21aa2I5ZTk4N2VXWDdVcndYcVVHVWwyc1FWNnRtalYxVCtHaUJyY1BEeDh1dDkxNnErNXhqM3J1eHo3K3VHdXo5dm54eExoeGRxMEE1RTVVN0xWU3BPM0ZPbkpQOHJMbGN1Q3RHVG95UjcxMlZUSEZ4dzJmZHVCRlU2ZFA5OHdSaE9vbVg2WG9hQjBWdktKRmk4cFZWMTJsSTk5Q2dnN3ZzQzZ3MFNOSFNGZ2Q4NVVXczVKUFN2eGQ5MG1HSDFjL0JtQmV2WHIxN0R2MHZrQU5YdFZldkppWUdOM2pUV3FROS92aXhmYlp1b1ZwUml3NE9GaEdQUFNRUERacVZJSDkzT3Ixckk1MTgvcnp2bnYzYmhrL2NhS09jRmFCZ1ZKcDlFZ0ppSWpRSGU3Wi8reUxraEp2ZnFtN3VyazE0dUdINVpXWFhwTElBdmc1QzRKYXZyMXcvbng3WlpRWGhJU0V5STM5K3VtbzRGM1V0S2xVckZoUlI3NkZCQjJlRWxTMGlNUzgrS3dFRmpkZjhDTXRQa0Yyamh4dDc1VUNnTHhRaWN5VFR6d2hWU3BYMWozZW8vNk5JMGVNa0FjZmVNQ082NXgzbnYybmx4VXJXdFF1L3ZUQnUrOUt4UW9WZEsvL1V1ZmNQenQ5dW4zZWVVRXZFWDFnNkZEcDBMNjlqcnpyUlNzUjI3aHhvNDV3TnVIVnFrbjVZVVBzeVJBM1paNDRJZkZEaDB1bUMzVUQxTFh1MWx0dWtkbWZmU1pseTdwOHhKeUxTcFFvSVUrT0hTcy9MVm9rOWV2VjA3M2VjRjFzckdkcVdWemZ0Ni9uYnpabWh3UWRuaE5lbzdwVWZNSktuRjBZcEJ5Yk0xY1NQL2hJUndCdzd0UXhXSysvK3Fvbmw3cXJXVmsxSTNyNnJHeTVjdVhzUDcxTy9YdTdkKzh1Znk1ZEtqZjE2K2NUUzYvem9tclZxdkxObkRseSs0QUJuaGhNcWxtdzkyYk9sRWJubjY5N3ZNaytkbTNFaUVKYnF5QXZ5dlRwTGVFTjYrdklQU2YvV2lVSDNucEhSK1oxN05CQmZ2LzFWL3VzZEY5TjBNNUVKYjZYWFhxcC9QbkhIL0xROE9HZS9NeFJxM0M4TUd1dEt2dXIyZ1MraWdRZG5sU3F5OVZTc3FjTCs5R3REL1o5NDU2U2szR2JkUWNBbkx1T0hUdksxQ2xUQ256MjgzUnFtZWNMeno0cmo0NGMrWTkvVjZsU3BYeHEwS3Btd2w1LzdUWDUrY2NmcFhXclZwNTZqdk5ESmNLMzlPOHZTMzc3VGRxMmFhTjd2VUVkdS9iRjdObWVUOUxWc1d2ejVzM1RFYzRtTUN4VXFqdzFYZ0xjdnRsbGpiVU9QUCtTcTJNdHRaWG51N2x6WmR3VFQ5aDdrWDJadWw0M2FOQkF2dmpzTTVuejVaZjJUVDJ2VWpjTmVuYnZycU9DbzY2cDZyUE9WNUdndzVQVTBTRHFmUFN3dXVhWFltYXEvZWlEN3BlTXBHVGRBd0RuYnVEdHQ5dVZoTDJRUUtvbDkzTysra3B1dmZYVy8vbjNxSmtGVllIZWw2Z0I2Z1ZObXNpQ0gzNlFMNjNFVVNYcXZrenRqZnplU2g1ZWVmbGx6K3dmL2JmSzFtdElKVGhxTnRLTDFHdENuVWhReWNQYlM3d280cnphVW1hZyswVUlNNU9USldIWXc1S1pscVo3ekZPcmJvWTkrS0Q4c1hpeGRMdm1HcCtjVGE5YnA0NjgvY1liOW8yOEs2NjR3aWR1VUhyaHVEVmZyMkZDZ2c3UENpcFNSS3BNbXl5Qkxwd3puTHA1aSt4NmJJeGQ0UjBBOGtJTkJ0VCszYmRlZjkzZVExMFExTCtoMy9YWDI4dkNzNXVWVlRNY0JmWHZ5eSsxeEZNTlVoY3RXQ0FMNXMyVFhqMTcrc3haOU9wM294THo5OTk5VjM3OStXZHBZLzErdkQ2QVZEUHBhc1pPRmE4TDk5QVdBMVVjNjRQMzNwUHZ2LzFXR3RSM2Y4bTJUN05lYytYdnVsUENyRVRkYmFkV3I1Vjl6NzJvSS9mVXJsMWJabjM4c2Z5NGNLRmNjZm5sbmovdlgxSEw4ejk4LzMxWjhlZWZjcjExVGZlbExUNXFtWHYxNnRWMTVMN2l4WXY3eEpHUk9TRkJoNmRGMUswakZjZU9zbDZwNWwrcVJ6Ly9TZzdPL2tKSEFKQTNhakMxZE1rU1Y4OGJWM3ZOMjdWdEt6OHZXaVJ2dnZGR2prdjcxTkpxTll2dXkxUmkyOWI2ZWRWZTZhMXhjZkxVeElseTRRVVgyTStEMTZpQ1RqMnV1MDUrWExEQVRzeDc5dWpoVTh2MDFldGw3Smd4c21UeFl1blVzV09CUGNlcWtKNzYvcDk5OG9uOVBIYTNubE4vMmU3Z05yWFV2ZEs0TWVyQ29YdmNrL2pxRzVLOHZtQ091VzNWc3FWODljVVhzbHpYdFNqanNkVXJhdSsyT21MeEx5c3BWNnVGMUd2Y2k5ZTBzMUh2MWRodTNYVGtQbldkOFBuUHVDeUQxVFd5MHRObFU1ZFlTZDBZcDN1eUZ6Vm9vRVFQRzZxamYxS1ZIemUwYWk4Wmh3N3Buak5yc0hhNUJFWkc2Z2gvUzN4emh1eDVZb0tPbk5Vd2JvMEVHTDU0WkdWbVNzS0lSK1hveDUvcEhuTUNySUZJemE4K2tZZzZkWFNQTngyWnYwQVNCZ3pTMFptVjZCRXJNWlBQL0h2UHlzaVF1TTZ4a3JKeGsrN0pYc2x1WGUyVkRQNHE3Y0FCMlRWdW92V2NtRjA5WVErSUhudFVnbDA0b2NDRUdlKzhJL09zQVlNcGwzYnFKRGYzNzY4ai81Qmh2YysrbWpOSHhvd2RLK3MzYkxCanB4V3hQdk5Vb3ZySXd3OUw4K2JOY3owenBDcGcvMllsWEU0YWRPZWQwcnAxYXgyNVR6Mi9PK0xqNVF0ckFQNjU5YlYyM1RvNWV2U29mdFE5NnVaQnlaSWxwZGxGRjltSmVUZHJvT3JMZXlGUGwybDlIcTlZc2NJKzRtekJ3b1Z5NHNRSi9ZZ1phdGF3Um8wYTlwN1cvamZkWkMrN041R1VKNHdjTGVuSGp1bkluS2pyKzBqeFZpMTBWUEQydi9tMkpLMVlxU1AzaEo5WFd5cmVjNWM5bTErUTFQVmg3dHk1TW1QbVRQbHorWEk1ZlBpd2ZzUWQ2bnF0aW94MnVPUVNPekZ2MmJLbFJQcEpIcU0rODhhTkg2K2ovM1V5T1ZtK3RwNTdFNStMNnNhdFdsM2x5MGpRQ3dGZlQ5Q1ZET3VEYy9OMXZTVjF5emJkWTA1WTdWcFM2OHRQSkRBOFhQZDREd2s2NER2UzB0TGtqNlZMNVpWWFhwRzUzMzRyeDYya0pxK0Rra0JyUUt0bU5GVXlyZ1lnbmErKzJrNWF2TDVVMm0xcWFIUHc0RUZadlhxMWZQdmRkL2JnZThrZmYwaTZOUzVSWDA1U00xeHFvSzBTOGhiVzcrVnE2M2VpaXF1cEpOMmZxYlBJdjdFRzJMTSsrY1IrYmsrZVBHa244UG1oWHR0cXhVRnJLMUZSUzFUYnRXdG5GOFR5aFNYSjhHMUhqaHl4cnhPcThPRGl4WXRsOVpvMTlyWEN5UVJTWFN2VWxoeDFyYmo4c3N1a2ZmdjI5aDd6aUVKeWJ2dnBQcHM5VzNyMzdhc2o1NmpuZDFkOHZNOXNmY29PQ1hvaDRBOEp1cEs4YnIxczdYbURaQ1diTCtaV3NuY1BxVExoaVFLL3U1c2RFblRBTjUwNmRVcldXQU0vbGJELy92dnZFcCtRSUlsV0lobHZEU2hVZ25NNnRmKzNmTGx5ZGhFeFZmU3RXYk5tMHJCaFEybmNxSkhmSjM4bXBGcGppWjA3ZDhxYXRXdnRQemZGeGNuV3JWdnRnYm1hU1V0S1NySm40TTlFL1E2aVNwZTJuM2UxdjdHYWxUVFdxMXRYcXNURTJMK1R5cFVxRmNwQjl0L1VjN2ZXZWw1WHJsb2w2OWV2dDJmUDFHeWtlbDYzYk5raS94NW9Wb3FPdG1jTzFaYzY1LzZDQ3k2UW1qVnJTaVBydFIxVHBRb0pPUXFjV2gyeWJkczJleVdPdWw2b20xREhqaDJ6djlRMVkvZWVQWko4aHZHb1NneWpLMWEwYnpTcDY0VzZnYXB1MkttcTh1ZGIxNG9xMXV0YjNZZ3F6TlJuWFl2V3JlMXJoZFA2M1hDRHZQWEdHenJ5WFNUb2hZQy9KT2lLT3JOOHp5T2pkV1JXcFdjbVMrbHJ1dXJJVzBqUUFmOXh0bzloWnNmTnkrMVFpTi9GdWNucGVlVzVoSy9LemZXQzEzZjJYbnY5ZFJsMHp6MDZjbzY2c2ZmRGQ5L1pCVGg5SFFsNklYQms5aGR5NE9YWGRlU3NXbDkvYmlYb0x0N3B0bDZ1dTZjOUt5bWJ6djZheXEvQVlzV2s4cGhSRXVUQjF4UUpPZ0FBQUh6SnZuMzdwUEVGRjhqQnMrUjBlYUcyQy95MWZMbGZyTUFoUVFkOEVBazZBQUFBZklWS09XKzU5Vlo1NzRNUGRJOXoxSXFGMTE1NXhTNG02UTg0bndJQUFBQUFZTXo3Vm1KdUlqbFh5cFVySjlmRnh1ckk5NUdnQXdBQUFBQ00rUFhYWDQzc08vL2JuUU1IK3Z6WjU2Y2pRUWNBQUFBQU9HN1Y2dFhTcTArZk0xYTlkMExGaWhYbHZudnYxWkYvSUVFSEFBQUFBRGhxL29JRmN2a1ZWOGorQXdkMGovT0dQL2lnZmZ5bFB5RkJCd0FBQUFBNElpMHRUWjUvNFFXNU5qYldTTVgydjlXdFcxY0czbjY3anZ3SENUb0FBQUFBSUY5VXBmYjE2OWZMMVYyNnlKQUhIcENVbEJUOWlQTlU1Zllwa3laSmFHaW83dkVmSk9nQUFBQUFnRHpic0dHRDNEbG9rRnpZckprcyt2RkgzV3RPcng0OTVJckxMOWVSZnlGQkJ3QUFBQUNjazBPSERzbnN6eitYemwyNlNLTUxMcEEzMzNwTDB0UFQ5YVBtUkZlc0tNOU1uNjRqLzBPQ0RnQUFBQURJVVZKU2txeGJ0MDdlZXZ0dGliM3VPcWxlcTVaZG9mMzdIMzZ3bDdlN0lUdzhYRDU0N3oySmlvclNQZjZIQkIwQUFBQUFJSm1abVhMcTFDbDdkbnpEeG8zeTFadzVNdXF4eCtUeUs2K1VXblhxMkV2WUI5NTVwOHo1NWh0alI2ZGxKekF3VUI1NzlGRnAzYnExN3ZGUEpPZ0FBQUFBVU1pZE9IRkNXcmRwSTQyYU5KRWF0V3ZMK1kwYnkzVTllc2pFU1pOazRhSkZrcGlZS0JrWkdmcS9kbCtmWHIxazZKQWhPdkpmSk9nQUFBQUFVTWdWS1ZKRWR1N2FKZHUyYjdlWHMzdEoyelp0NU9XWFhwS2dvQ0RkNDc5STBBRUFBQUNna0ZOSGw3VnUxVXBIM3RIMHdndmwwMW16SkNJaVF2ZjROeEowQUFBQUFJRFVPZTg4M2ZLR2kxdTNscm5mZkNPbFNwWFNQZjZQQkIwQUFBQUFJTTJhTmRPdGdxVm04Ni9wMGtXK25qTkhTcFVzcVhzTEJ4SjBBQUFBQUlCVXFWeFp0d3FPU3M2SDNIKy9mUGpCQjFJa01sTDNGaDRrNkFBQUFBQUFpWW1Ka1dMRml1bklmU1ZLbEpCM1o4eVFweVpPbEpDUUVOMWJ1SkNnQXdBQUFBQ2tlUEhpRWg0V3BpUDNCQVlFeUdXWFhpckxseTZWWHIxNjZkN0NpUVFkQUFBQUFHRFBXcnU5RHoyNllrVjU2Y1VYNWFzdnZyQm44QXM3RW5RQUFBQUFnSzFCZ3dhNlpWWmtSSVRjUFdpUXJGeXhRbTY5NVpaQ2NjWjVicENnQXdBQUFBQnNGelpwb2x0bWhJZUh5eDBEQjhyS3YvNlM2Vk9uU3NsQ1ZxWDliRWpRQVFBQUFBQzJPblhxNkphenFzYkV5TmpISDVmTkd6Zks4ODgrSzlXcVZ0V1A0SFFrNkFBQUFBQUFXM1IwdEJRdFVrUkgrVlBKK3J2NlhYKzlmRDkzcm14Y3YxNUdQUHl3bEM5ZlhqK0tNeUZCQndBQUFBRFlpaFl0S3VYeW1FU3IvMitkODg2VE8rKzRReGJObnk4YjFxMlR0OTU4VXpwMDZNQWU4MXdpUVFjQUFBQUEyTUxDd2lTbVNoVWRuVmxBUUlCZDVFM3RIMjkveVNWeTM3MzN5dHl2djVZTmE5ZmFSZCtlZStZWnVmamlpKzM5NWpnM0pPZ0FBQUFBZ1A5cTJhS0YvV2U1c21XbGNlUEcwckZEQjdrdU50WmVvajV6eGd5WlAyK2VyTGVTOFYzeDhUTHZ1Ky9rNmNtVDVkSk9uZXpsNjh5VTV3OEpPZ0FBQUFEZ3YwWTkrcWlrblRvbHV4SVNaTm1TSmZMZDNMbnkwUWNmMkVYZSt2VHVMVzNidExIM3FvZUdodXIvQjV4Q2dnNEFBQUFBK0M4Uzc0SkRnZzRBQUFBQWdBZVFvQU1BQUFBQTRBRWs2QUFBQUFBQWVBQUpPZ0FBQUFBQUh1QWpDWHFBL2IrenlUeDFTcmNBLzVhWmZGSzNjaERFL1RjQUFBREFsL2pFQ0Q0d05FU0NpaFhUVWZhU1ZxM1JMY0MvblZ5MlhMZXlGeEpWUnJjQUFBQUErQUtmbVdJTHY2Q3hibVh2Nk5kemRRdndYMWxwYVhMc2gvazZ5bDVvNVdqZEFnQUFBT0FMZkNaQmp6eS9vVzVsNzhTOEJaSis2SkNPQVA5MDdKZGZKWDNQUGgxbEw3SkZNOTBDQUFBQTRBdDhKa0V2ZW5FcjYxK2I4MGIwaktOSFpmZFRUNHRrWnVvZXdMOWtKQ2ZMM3ZHVFJMS3lkTStaQlpVdkorSFZxdWtJQUFBQWdDL3dtUVE5ckZwVkNhMWVYVWZaTy9ycDU1TDR5V2M2QXZ4SFZucTY3Qm81V2xJM2I5VTkyU3ZlcVlNRUJQck0yeHNBQUFDQXhXZEc4SUdob1ZLcVYzY2Q1U0FqUS9hT2ZGd092UE91WkZsdHdCOWtKQ1ZKL0lNUHk5RXY1dWllSEZpSmVhbmVQWFFBQUFBQXdGZjQxQlJiVk4vZUVsU3FwSTZ5cDJZYTl6NCtUcmJmZnBlYzJycU5KZS93V2VxMWZPeW5YMlR6dFQzbG1Fck96N0swWFlsc2NaRVV5VVhOQmdBQUFBRGVFcEJsMFczSHFlUmlVNWRZU2QwWXAzdXlGelZvb0VRUEc2cWo3TzEvNVhYWk4zR0tqczR1SURoWUlwbzFsYUx0MjBsRXJSb1NWTGFzZmdUd3FLeE1TWXZmSlNjM2JwVGozLzhnS1pzMjZ3Zk9MaUEwUkdwOCtvRkVOc3c1UVZlclMrSTZ4MHJLeGsyNkozc2x1M1dWS3RNbTZ3Z0FBQUNBS1Q2WG9HZW1wc25tMko2U3NtNkQ3Z0h3dDFJM1hTK1Z4enltbyt5Um9BTUFBQURlNDNOVnBBSkRRNlRLMUVrU1dLU0k3Z0dnaE5Xdks5RWpodXNJQUFBQWdLOHhtNkFIQkZqL3kvbG90UDlLVDllTnM0dW9jNTVVbWo1SkFrSkNkQTlRdUFWWEtDL1ZYbjlKQXNQRGRjOVpxSFV6dVZ3OG83YUpBQUFBQUREUGVJSWVHSm03bWU3Y0hCMTF1cEtkT2tyRjhXUHNQYmRBWVJZVVZWcXF2ZjJhaEZhc3FIdk9MaXN0VlRLT0g5ZFJ6b0tyVjlVdEFBQUFBQ1laVGREVk9jekJ1YWk2cnB6YXNVTzNjc2xLL3FONlhDZFZYbmxCQW9zWDA1MUE0UkphcDdiVStPUjllMVhKdVVnL2RGalM5eC9RVWM1Q0tsVFFMUUFBQUFBbUdkK0RIblorZmQzS1dkcVdiWkt5YzZlT2NxOUUrM1pTNjh0UEpLSjVVOTBEK0QrMTdMeGszMTVTNjdPUEpMeGFOZDJiZThjWC95NlNrYUdqSEFRRVNGaVZ5am9BQUFBQVlKTHhCRDNpdk56UDdCMysrRFBkT2pkaFZhdEt6ZmZma2VoSjR5U2thaFhkQy9paG9DQ0phSGFoVlAvNFhha3lib3dFUlVicUIzSlBWWEEvL1BFbk9zcFpZRVM0aEZVLzl4c0FBQUFBQU02ZDBXUFdsTFRFZzdLaFJWdVJ6RXpkazcyUXlwWGt2Ty9uV0VsQmhPNDVkNWtwS1hMc3g1L2w0RHZ2eXFuVmF5WHpXTzcyMlFLZXBiYUtSSldXeU5ZdHBjeUFteVd5WGowSnNCTDF2RXBhdFZxMmRlOXJINE40TnFFMXFrdWRINzZ4WjlJQkFBQUFtR1U4UVZjMlhkdERVbGF0MFZIT3lnNjVWeXJjZDdlTzhpZjl5QkU1dVhHVEpDOWZJU21iTmt2NnNXT1NsWnFtSHdXOEt5Z3lRb0tLRjVmd0N4cExrU2FOSmF4YU5ic3Z2MVJTdnFYdlRYSnkyWExkazdQU3QvV1hTbytPMEJFQUFBQUFrMXhKMFBlOS9KcnNmK3BwSGVVc01ESlNxbi95bmoxTENNQlpCOTU1VC9ZKy9tVHVqbGdMQ3BTYVgzNHFrZlY1THdJQUFBQnVNTDRIWFNuWithcGNMOG5OVEU2VytEdnZ5MVBCT0FEWk83cndSOWszYm1LdXp6OFBxMVZUSXM2cnJTTUFBQUFBcHJtU29Lc3EwRVd2dmtKSFo1Y1dueUJiKzl3b0p6ZHYwVDBBOHN4S3lJOTgrNzBrM0hYdk9XM3hpTHJsSnJ0YVBBQUFBQUIzdUpLZ0srWHV2UDJjQnZ2cHUvYkkxdGplY3VqekwzTlZ6QXJBLzhvNGNVSjJUWmdrQ2ZjTWtheVVWTjE3ZGlIVnFrcXAyR3QxQkFBQUFNQU5yaVhva2ZYcVN2SFlyanJLblV5VlhBeDlTTGJjY0xPY1dMcU1SQjNJcGN4VHArVGdwN01sN29xdWN1aTF0M0ozNXZuZkFnS2szSDJESkRBMFZIY0FBQUFBY0lNclJlTCtsbllnVWVJNmQ1TU02ODl6WmlVTm9UVnJTTkYyRjB1UkM1clk3YUFTSmZTRFFDR1hsU25wK3cvSXFVMXhrclJrcVp6NGRiRmtXSEZlRkxIZVk5WGZlazBDQWwyN2Z3Y0FBQURBNG1xQ3JoejVZWUc5RjFiU3oyRkdMenVjelF6OFB3ZmV5b0VsaWt1dE9iTWxySElsM1FNQUFBREFMYTRuNkNxSjJEUHBhVWw4K1hYZEFjQUxBc0pDSmViVkY2VjR1emE2QndBQUFJQ2IzRi9ER2hBZ0ZSNGNJaVd1b3dBVjRCbEJnVkpoOUVpU2N3QUFBS0FBRmNnbVUzVW1ldVZ4WTZUb3BSMTBENEFDRXhnbzVSNFlMR1g2OU5JZEFBQUFBQXFDKzB2Y1Q1T1ZtaW83SHhzclJ6NzZSUGNBY0pOYTFsNXh6Q2lKNnQxVDl3QUFBQUFvS0FXYW9OdXNiNS80M2dleWI4SVV5VXhPMXAwQVRBdUpxU3lWcDB5VW9zMHUwajBBQUFBQUNsTEJKK2phcWUzYlplZURJK1RrOGhWVzBxNDdBVGd1SURSVVNsemJSYUlmZTBTQ2loYlZ2UUFBQUFBS21tY1NkQ1VyUFYyT2ZQK0Q3SnM4VGRKMnhOdXo2d0NjRVJBU0xCRk5HdHRMMmlQcjFyRTZPS1lRQUFBQThCSlBKZWgveTB4SmtlTy9McGJFTjk2V2szOHNzeE4zQUhsZ0plR0JSU0tsMkdXZHBNeXROMGxrL2ZwMlVUZ0FBQUFBM3VQSkJQMTBxZnYzeS9GRlAwblNiNy9MeVkyYkpHM0xOc2xLUzlPUEF2aTNBQ3NoRDZ0VlV5SWJueTlGMjdhUm9xMWFTRkNSSXZwUkFBQUFBRjdsK1FUOUg2eC9xcHBOVHp0OFJESk9ISmYwZzRja0t6TlRQd2dVWG9IaFlSSlV2SVFFbHl3cHdTV0tTd0N6NUFBQUFJRFA4YTBFSFFBQUFBQUFQOFUwR3dBQUFBQUFIa0NDRGdBQUFBQ0FCNUNnQXdBQUFBRGdBU1RvQUFBQUFBQjRBQWs2QUFBQUFBQWVRSUlPQUFBQUFJQUhrS0FEQUFBQUFPQUJKT2dBQUFBQUFIZ0FDVG9BQUFBQUFCNUFnZzRBQUFBQWdBZVFvQU1BQUFBQTRBRWs2QUFBQUFBQWVBQUpPZ0FBQUFBQUhrQ0NEZ0FBQUFDQUI1Q2dBd0FBQUFEZ0FTVG9BQUFBQUFCNEFBazZBQUFBQUFBRlR1VC9BRWk0UGhzV0RwQ2hBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMV9QUkUiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6IjYxMjUwNTkxYjJiYzQ0NTZiNzE5MGIxN2JlOTBiYjMwIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6dHJ1ZSwidXAiOnRydWUsInV2Ijp0cnVlLCJ1c2VyVmVyaWZpY2F0aW9uTWdtdFByZXZpZXciOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZX0sIm1heE1zZ1NpemUiOjIwNDgsInBpblV2QXV0aFByb3RvY29scyI6WzFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjYsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTkyLCJ0cmFuc3BvcnRzIjpbInVzYiJdfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMTktMDQtMDQiLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6ImVXQk0gZUZQQSBGSURPMiBBdXRoZW50aWNhdG9yIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAxODA5MjYwMjAiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMy40IiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjAuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAxOS0wNC0wNCJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMTktMDQtMDQifSx7ImFhZ3VpZCI6IjhjMzllZTg2LTdmOWEtNGE5NS05YmEzLWY2YjA5N2U1YzJlZSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiOGMzOWVlODYtN2Y5YS00YTk1LTliYTMtZjZiMDk3ZTVjMmVlIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ill1YmlLZXkgQmlvIFNlcmllcyAoRW50ZXJwcmlzZSBQcm9maWxlKSJ9LCJkZXNjcmlwdGlvbiI6Ill1YmlLZXkgQmlvIFNlcmllcyAtIEZJRE8gRWRpdGlvbiAoRW50ZXJwcmlzZSBQcm9maWxlKSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzQsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfSx7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDM4NHIxX2VjZHNhX3NoYTM4NF9yYXciLCJlZDI1NTE5X2VkZHNhX3NoYTUxMl9yYXciLCJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwiLCJiYURlc2MiOnsic2VsZkF0dGVzdGVkRlJSIjowLjAsInNlbGZBdHRlc3RlZEZBUiI6MC4wLCJpQVBBUlRocmVzaG9sZCI6MC4wLCJtYXhUZW1wbGF0ZXMiOjUsIm1heFJldHJpZXMiOjUsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIiwiYmFEZXNjIjp7InNlbGZBdHRlc3RlZEZSUiI6MC4wLCJzZWxmQXR0ZXN0ZWRGQVIiOjAuMCwiaUFQQVJUaHJlc2hvbGQiOjAuMCwibWF4VGVtcGxhdGVzIjo1LCJtYXhSZXRyaWVzIjo1LCJibG9ja1Nsb3dkb3duIjowfX0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlETXpDQ0FodWdBd0lCQWdJVVNPRWpUZi8veXFSZlBXN1FxOHF0SXlDckFnOHdEUVlKS29aSWh2Y05BUUVMQlFBd0x6RXRNQ3NHQTFVRUF3d2tXWFZpYVdOdklFWkpSRThnVW05dmRDQkRRU0JUWlhKcFlXd2dORFV3TWpBek5UVTJNQ0FYRFRJME1EVXdNVEF3TURBd01Gb1lEekl3TmpBd05ETXdNREF3TURBd1dqQXZNUzB3S3dZRFZRUUREQ1JaZFdKcFkyOGdSa2xFVHlCU2IyOTBJRU5CSUZObGNtbGhiQ0EwTlRBeU1ETTFOVFl3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRQ2R2bDI3dzJndTFmUFhlRUZiSWRxeDBCYWx2VkRWV3JRUEo3SHF2aXVFdFpIbHhTTHhTRnRjWHBUb2x2THZvZjhmNHRNZXJRVGtWR3pjbVl6bTFFQlQ0SUp1TW1vRXFma0VFaFdwc0FETUZyalprcWxaWTlFcXhRekxvVkVFb25FNW9HeFNkVkN4Q2NMSWFja3B5Ui9DQ1h2ajFCdC9oVGdFOWhUbEY0cFJxeE1reDNwbEY3eThkRFpsUkhXczd2Ym5obUJDR2VJMFpQRVE2bmwybUNnMnI3NGFkRjJ1Nks5cnJMZmhCQzNRTEU4RVByZ3FVc0kraGt1cTJ0SzRNMlNNT3A4dVVWVmtxVWV1M2gwa3IzV1ZJMFcwMnBrZ3JPZ2lGS0xGTmtTcmJZaGRqTUJEajVpem1xZmM5eEpSS29EWDYxMnFkOFpHVkhwVDVBWUZYKzFoQWdNQkFBR2pSVEJETUIwR0ExVWREZ1FXQkJUWnlVNURpUS9hMlVFZ0U3cUJLMHpoSXNSTlJqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUFNQTRHQTFVZER3RUIvd1FFQXdJQkJqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFYdm5CNFNMdVVKZllNU1ZHQWhzc0wvU21XbGkzRlNjY2d4eWR2S2xBQ2NpZElJV0tRcWEzcS9RU1VFUXpDOURnRWZNZ3I3aUMxQmtUWmJJTGJvVjZVWjVrbk5zdmpFWld1TWVvZ0o4dGdaczFoVnZLd1ppendKK21FY21zamhJckJZdW9MMVQ2eXJPSnZLRmcxanYrQ3k0WndBOUJway9WM1VPaXIxVnlLOGRDdHlIdTZ2Zm9zb3RBZFl4OEZBdVIyNDNnUlRNVjZKeDhKZGlnMkpESUFRTWx6VmVEcFNVSFgvSzJIWFJIeEh3ZmdqYmdVampCdS83MnI4T2ZlaHloekhYSTNLOENGRmRmbE8rOG5FT0pLM3k4RjFpdmdTNXVOLzhTbWNZdy9TVFFZd2hyeFB1d3ozblA4YmFNdW00QkIybm5ZbXBCNjBzWDNibDVrOFFVU3c9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFmQ0FZQUFBQ0dWcytNQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUhZWUFBQjJHQVYyaUU0RUFBQWJOU1VSQlZGaEhwVmQ3VE5WMUZELzNkNTl3ZVFTSWdTOUFRQVhjRkxBUVppOWZwZVZ6MXRZL1dUWnI1V3hwYzdXNWtuTGE1akkzWjg1c3JTMm5NMnNqdFd3WlM3SVVINEg0eENuRVF4NERBWkY3NFY3dXM4ODV2OS9sSW5CdlZKL0I0UHY5bnUvNW51LzVudk01NTZmekEvUXYwSGIvSXJYM1ZGS1BvNDVjbm00aW5VSVdZd0xGUm1aUVV1d2pGRy9OMWlSSGgxRVowTlJWUnVkcXQxQmQrMm5TS3lTL09oeXMwK2xrM2UvM2tROXF2RDRaVXRhNFZWU1V1WTBlaXB5aVRoQWZvY29PUlZnRHV1dzNxS1JpQWQzcmJjRXRqVGpZSW9mNldhSHNDbXpWUFdDTXgrY2doOHRMcVdNS2FNV3NVakxxbzJSdEpJUTBvT3ptZXJwUXU0ZXNaZ3NPTmtHeEg3ZDBrZHZUVDE3czRPTVU3Vkk4WmhqZ0dhTStBcTlpRU51OFBpZjF1ZHowN013dktXZjhHbFZvQ0VZMDRQQzVXZFRhWFlGYlI4dk52TDUrM0tnZmI1eE5NeWE5UmFtSml5bmFNbEdUVnRGbHI2YmE5dStwcW5FWDR1TXVSUmdqU1lFaHJON3V0RkZlNmxxYWw3TmZrdzVpbUFHSHluUHBiazhWbVkweHN0bnB0bEZDVkNZdHpUdUJOODNRcE1MalR0ZXZkUHpTVW5KN2U4bWtqeFozOWZYYktEZmxkWnFidlUrVFVnR25CVkY2ZlEyaVBIZzRXMTZVV1V3dnpiazE2c01aRStQbjBwdno3SlNldUF5ZXM4bGNwQ21hS3VvL3ArcVdyMlVjd0lBSFdydlAwWUV6aFhBdExBYnNzSGhwN2lHYW12eWlqUDhyeXFyWFVXWDlYb293eHlBdWZOQnJwNDNQT0JGWFpsa2Y4TURSaXFjcHlvd0F3cHV6MngrZld2ei9EdGRlOXNtc3p5Z3RjUjZDMXdiZHpCbDZPbHE1V05ZWTRvR2F0aEpNcmtURXgwakFSU0hBVnMrNXJZa1FOWGIrUWdmUExzUTZnWHlJbnNyZVFmbXBtN1JWRllmTDg2bjFmaVVPa1l2U2hrVVB4dmJ1a3pveTZLMWloTTFobzNYelc2RXZTZlhBK2RwaVdHYVdkK2RvWHpMem1Hd0tZRkxDQXNSQWxQQkFoTWxDRlhVN3RCVVZQcjhIZ1ZjSkhXcStGMDBwbHIrRE1UZHJQNHp2eFkxMWtOTWh4VCtTZVRHZytkNFY1TFFKaXR5VUdKTkI4VkZac2pnWUJaTS9JSS9YQ1RrajBxeURPcEYyQVZRMTdDSWpVcC9EblQxVWtMNUY1Z2RqK3NTMXdnMWdFM2dpZ202MGZDWHpTblBYYnlBUGJJWHYrSURwRTE2VGhhSElTOXNreWhsbU1FNUYzY2ZxQUtocTJDMEU1UEgxZ1lhWGFMUERrWkcwSERKT25LV0hwNTFJMHo1U091eDhlMVdBdVp6ZEhRclRrcDhUbWpYb0krbGEwd0dac3p1YnFiTzNpZlE2QS9XN3ZWU1lzVjNtUjBKS3drS2M0V0hpQmttUjhJM0NDZ0k4N29PTDRxelQ1UCtSVUpCZWpFT2dBUEs4aFlQemF0TStlSVRwMklPOXlUUW1lcm9tUFJ4eDFxeEFjc2lsZS91YlNlRWJjV1FHWUVDZ2hjTFkySHlLam9nakgyNWhNcGpwVXYxT3VnbGk0ZWgyZVJ3ME8zMmJKamt5dUNnTnpnMHZ6bFlNU2lTczB1b280TUc3aE1PakNFYVgxeUZFMG5TdmpCenVUbkVwSzg2WjhJb3FGQUl1Ync4a2c5QXJFYVJFV1NaSStqSDRYYnA2ZzlFOUVuSlQzb2FSekROK01VSkJRREhuNTZhOG9VbUVCdXNPeEJzL041K3RKRWJQa0FGRGo4VUd2T3MvSVd2Y1NnbEdCaHZTNy9GVFlmcFdHWWREWThmUEF4V1NBMzVzVEM0cDQrTG00QWFxSW9QZVF0ZnVmSzZKaDBaaHhsYnNVWE9TbVhOaWZENVpUQWt5RG9mYmJjY2x4bkE4V05BcXhDYlJOeWtoWHhRcGFEdzY3ZlhVWWJzaUcwS2h0djJvZUl2aDhyaFFNWU9jRUFxWEcvZUkrem5nT2M1eXhyOHE4MklBTTFjL0ZMRk9wbHF1NWVGUVhyTVp6R2NWQ2pZYkxXRzVJNEJUMWV1UnJsYnh0Tk90TWl0RERFaExYSUl5bkFBdnVPRVdFM1gzTmRBZnQ5NFZnYUc0MlhJUXQwWlg2UGVDRS9xUUZlOXJLNkh4N1lVNTBLdkg3Zlc0ZlMrcTdLS0JKeHNnZ0JYNXBTQUdoMWpJclZoNXpRNnczUmZhYWhCWG0vYUNiQ1pUakNVRlVUeVdacVc5cDYyTWpKUFhWcU9yUGdNTzROdjc0R2tmK293ZnROVkJEUW5qRkpxSFN3MTdwWHZoV1c1S1pxZS9RNDlOL1VTVENBVldvUVhGSUhCSFhYZTNGUHJVRHN1R0RtdEYvaEhLVEhwZWt4aGlBT1BJK1NKcTZTNkhGNEk5WVd6a0JKVG80NmlVTXpXcDhQaXIvUmlkdUx4S1lzU2tzVjh2TGxPUXZoR1gyWWxSME9CaEJqQyt1L2dFY3ZZMEFwSzdZazQxTnhqUFNRbldGSFRGNjZVcmpnZXZCOEN1NWErbDJ2WVNSUHR1VkRvNzNoaGRNU0huVVg3dFRqc1ZaR3hBbC9XcHRpT0lFUTFnbkwyOW1YNi90UjF0bWxrWWo4VzRYK0NTaldjVURHWTFOcFMvQzdoU0txaU1MTS9sMlFtU1daNzNEZHorZ2lvOEJDRU5ZUFE0NnFua3p3WFVicXZCa3hqVVFzV2ZaRmdidW8zckFmK3dON2pPTzkwK3lueDRQaTNMKzBuWUwxU2NoRFVnQVA0Z1BWLzdJZDFxKzFIU2htdUdrSXFXUlBneXhNRnFQOEhmalRualh3WTViUWZiSmN0Nk9JektnTUhvdEYvSGUxZWdzYXhIU3FHNndmZG1RNXg4TnlURkZxQmNwMmlTb3dIUjN5azUrMzZoRjd2WEFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJGSURPXzJfMCIsIkZJRE9fMl8xX1BSRSIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsImxhcmdlQmxvYktleSIsImNyZWRCbG9iIiwibWluUGluTGVuZ3RoIl0sImFhZ3VpZCI6IjhjMzllZTg2N2Y5YTRhOTU5YmEzZjZiMDk3ZTVjMmVlIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJ1diI6ZmFsc2UsInBpblV2QXV0aFRva2VuIjp0cnVlLCJsYXJnZUJsb2JzIjp0cnVlLCJlcCI6dHJ1ZSwiYmlvRW5yb2xsIjpmYWxzZSwidXNlclZlcmlmaWNhdGlvbk1nbXRQcmV2aWV3IjpmYWxzZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOmZhbHNlLCJhbHdheXNVdiI6dHJ1ZX0sIm1heE1zZ1NpemUiOjEyODAsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6OCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoxMjgsInRyYW5zcG9ydHMiOlsidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN30seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTh9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi0zNX1dLCJtYXhTZXJpYWxpemVkTGFyZ2VCbG9iQXJyYXkiOjQwOTYsIm1pblBJTkxlbmd0aCI6NCwiZmlybXdhcmVWZXJzaW9uIjozMjk0NzQsIm1heENyZWRCbG9iTGVuZ3RoIjozMiwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjEsInByZWZlcnJlZFBsYXRmb3JtVXZBdHRlbXB0cyI6MywidXZNb2RhbGl0eSI6MiwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjEwMH19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTAyLTAxIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NCwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZdWJpS2V5IEJpbyBTZXJpZXMgKEVudGVycHJpc2UgUHJvZmlsZSkiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI1MDIwMTAwNyIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTAyLTAxIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NH1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wMi0wNiJ9LHsiYWFndWlkIjoiZjhhMDExZjMtOGMwYS00ZDE1LTgwMDYtMTcxMTFmOWVkYzdkIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiJmOGEwMTFmMy04YzBhLTRkMTUtODAwNi0xNzExMWY5ZWRjN2QiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiU2VjdXJpdHkgS2V5IGJ5IFl1YmljbyJ9LCJkZXNjcmlwdGlvbiI6IlNlY3VyaXR5IEtleSBieSBZdWJpY28iLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6NTAxMDAsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJlZDI1NTE5X2VkZHNhX3NoYTUxMl9yYXciLCJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURIakNDQWdhZ0F3SUJBZ0lFRzBCVDl6QU5CZ2txaGtpRzl3MEJBUXNGQURBdU1Td3dLZ1lEVlFRREV5TlpkV0pwWTI4Z1ZUSkdJRkp2YjNRZ1EwRWdVMlZ5YVdGc0lEUTFOekl3TURZek1UQWdGdzB4TkRBNE1ERXdNREF3TURCYUdBOHlNRFV3TURrd05EQXdNREF3TUZvd0xqRXNNQ29HQTFVRUF4TWpXWFZpYVdOdklGVXlSaUJTYjI5MElFTkJJRk5sY21saGJDQTBOVGN5TURBMk16RXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFDL2p3WXVoQlZscWFpWVdFTXNyV0Zpc2dKK1B0TTkxZVNycEk0VEs3VTUzbXdDSWF3U0RIeTh2VW1rNU4yS0FqOWFidlQ5TlA1U01TMWhRaTN1c3hvWUdvblhRZ2ZPNlpYeVVBOWErS0FrcWRGbkJubHl1Z1NlQ09lcDhFZFpGZnNhUkZ0TWprd3o1R2N6MlB5NHZJWXZDZE1IUHR3YXowYlZ1em5ldWVJRXo2VG5RakU2M1JkdDJ6YnduZWJ3VEc1WnliZVdTd2J6eStCSjM0WkhjVWhQQVk4OXlKUVh1RTBJek1aRmNFQmJQTlJiV0VDUktnanEvL3FUOW5tRE9GVmxTUkN0MndpcVBTemx1d24rditzdVFFQnNValRHTUVkMjV0S1hYVGtOVzIxd0lXYnhlU3lVb1RYd0x2R1M2eGx3UVNnTnBrMnFYWXdmOGlYZzdWV1pBZ01CQUFHalFqQkFNQjBHQTFVZERnUVdCQlFnSXZ6MGJOR0poamdwVG9rc3lLcFA5eHY5b0RBUEJnTlZIUk1FQ0RBR0FRSC9BZ0VBTUE0R0ExVWREd0VCL3dRRUF3SUJCakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBanZqdU9NRFNhK0pYRkNMeUJLc3ljWHRCVlpzSjRVZTNMYmFFc1BZNE1ZTi9oSVE1Wk01cDdFamZjbk1HNEN0WWtOc2ZOSGMwQWhCTGRxNDVyblQ4N3EvNk8zdlVFdE5NYWZiaFU2a3RoWDdZKzlYRk45TnBtWXhyK2VrVlk1eE94aThoOUpESWdvTVA0VkIxdVMwYXVuTDFJR3FyTm9vTDltbUZuTDJrTFZWZWU2L1ZSNkM1K0tTVENNQ1dwcE11SklaSUkydjlvNGRrb1o4WTdRUmpRbExmWXpkM3FHdEtidzd4YUYxVXNHLzV4VWIvQnR3YjJYMmc0SW5waUIveXQvM0NwUVhwaVdYL0s0bUJ2VUtpR24wNVpzcWVZMWd4NGcweExCcWNVOXBzbXlQeksrVnNndzJqZVJRNUpsS0R5cUUwaGViZkMxdHZGdTBDQ3JKRmN3PT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZkNBWUFBQUNHVnMrTUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFIWVlBQUIyR0FWMmlFNEVBQUFiTlNVUkJWRmhIcFZkN1ROVjFGRC8zZDU5d2VRU0lnUzlBUUFYY0ZMQVFaaTlmcGVWejF0WS9XVFpyNVd4cGM3VzVrbkxhNWpJM1o4NXNyUzJuTTJzanRXd1pTN0lVSDRINHhDbkVReDREQVpGNzRWN3VzODg1djkvbEluQnZWSi9CNFB2OW51LzVudS81bnZNNTU2ZnpBL1F2MEhiL0lyWDNWRktQbzQ1Y25tNGluVUlXWXdMRlJtWlFVdXdqRkcvTjFpUkhoMUVaME5SVlJ1ZHF0MUJkKzJuU0t5Uy9PaHlzMCtsazNlLzNrUTlxdkQ0WlV0YTRWVlNVdVkwZWlweWlUaEFmb2NvT1JWZ0R1dXczcUtSaUFkM3JiY0V0alRqWUlvZjZXYUhzQ216VlBXQ014K2NnaDh0THFXTUthTVdzVWpMcW8yUnRKSVEwb096bWVycFF1NGVzWmdzT05rR3hIN2Qwa2R2VFQxN3M0T01VN1ZJOFpoamdHYU0rQXE5aUVOdThQaWYxdWR6MDdNd3ZLV2Y4R2xWb0NFWTA0UEM1V2RUYVhZRmJSOHZOdkw1KzNLZ2ZiNXhOTXlhOVJhbUppeW5hTWxHVFZ0RmxyNmJhOXUrcHFuRVg0dU11UlJnalNZRWhyTjd1dEZGZTZscWFsN05ma3c1aW1BR0h5blBwYms4Vm1ZMHhzdG5wdGxGQ1ZDWXR6VHVCTjgzUXBNTGpUdGV2ZFB6U1VuSjdlOG1ranhaMzlmWGJLRGZsZFpxYnZVK1RVZ0duQlZGNmZRMmlQSGc0VzE2VVdVd3Z6YmsxNnNNWkUrUG4wcHZ6N0pTZXVBeWVzOGxjcENtYUt1by9wK3FXcjJVY3dJQUhXcnZQMFlFemhYQXRMQWJzc0hocDdpR2FtdnlpalA4cnlxclhVV1g5WG9vd3h5QXVmTkJycDQzUE9CRlhabGtmOE1EUmlxY3B5b3dBd3B1ejJ4K2ZXdnovRHRkZTlzbXN6eWd0Y1I2QzF3YmR6Qmw2T2xxNVdOWVk0b0dhdGhKTXJrVEV4MGpBUlNIQVZzKzVyWWtRTlhiK1FnZlBMc1E2Z1h5SW5zcmVRZm1wbTdSVkZZZkw4Nm4xZmlVT2tZdlNoa1VQeHZidWt6b3k2SzFpaE0xaG8zWHpXNkV2U2ZYQStkcGlXR2FXZCtkb1h6THptR3dLWUZMQ0FzUkFsUEJBaE1sQ0ZYVTd0QlVWUHI4SGdWY0pIV3ErRjAwcGxyK0RNVGRyUDR6dnhZMTFrTk1oeFQrU2VUR2crZDRWNUxRSml0eVVHSk5COFZGWnNqZ1lCWk0vSUkvWENUa2owcXlET3BGMkFWUTE3Q0lqVXAvRG5UMVVrTDVGNWdkaitzUzF3ZzFnRTNnaWdtNjBmQ1h6U25QWGJ5QVBiSVh2K0lEcEUxNlRoYUhJUzlza3lobG1NRTVGM2NmcUFLaHEyQzBFNVBIMWdZYVhhTFBEa1pHMEhESk9uS1dIcDUxSTB6NVNPdXg4ZTFXQXVaemRIUXJUa3A4VG1qWG9JK2xhMHdHWnN6dWJxYk8zaWZRNkEvVzd2VlNZc1YzbVIwSkt3a0tjNFdIaUJrbVI4STNDQ2dJODdvT0w0cXpUNVArUlVKQmVqRU9nQVBLOGhZUHphdE0rZUlUcDJJTzl5VFFtZXJvbVBSeHgxcXhBY3NpbGUvdWJTZUViY1dRR1lFQ2doY0xZMkh5S2pvZ2pIMjVoTXBqcFV2MU91Z2xpNGVoMmVSdzBPMzJiSmpreXVDZ056ZzB2emxZTVNpU3MwdW9vNE1HN2hNT2pDRWFYMXlGRTBuU3ZqQnp1VG5FcEs4Nlo4SW9xRkFJdWJ3OGtnOUFyRWFSRVdTWkkrakg0WGJwNmc5RTlFbkpUM29hUnpETitNVUpCUURIbjU2YThvVW1FQnVzT3hCcy9ONSt0SkViUGtBRkRqOFVHdk9zL0lXdmNTZ2xHQmh2UzcvRlRZZnBXR1lkRFk4ZlBBeFdTQTM1c1RDNHA0K0xtNEFhcUlvUGVRdGZ1Zks2SmgwWmh4bGJzVVhPU21YTmlmRDVaVEFreURvZmJiY2NseG5BOFdOQXF4Q2JSTnlraFh4UXBhRHc2N2ZYVVlic2lHMEtodHYyb2VJdmg4cmhRTVlPY0VBcVhHL2VJK3puZ09jNXl4cjhxODJJQU0xYy9GTEZPcGxxdTVlRlFYck1aekdjVkNqWWJMV0c1STRCVDFldVJybGJ4dE5PdE1pdERERWhMWElJeW5BQXZ1T0VXRTNYM05kQWZ0OTRWZ2FHNDJYSVF0MFpYNlBlQ0UvcVFGZTlySzZIeDdZVTUwS3ZIN2ZXNGZTK3E3S0tCSnhzZ2dCWDVwU0FHaDFqSXJWaDV6UTZ3M1JmYWFoQlhtL2FDYkNaVGpDVUZVVHlXWnFXOXA2Mk1qSlBYVnFPclBnTU80TnY3NEdrZitvd2Z0TlZCRFFuakZKcUhTdzE3cFh2aFdXNUtacWUvUTQ5Ti9VU1RDQVZXb1FYRklIQkhYWGUzRlByVURzdUdEbXRGL2hIS1RIcGVreGhpQU9QSStTSnE2UzZIRjRJOVlXemtCSlRvNDZpVU16V3A4UGlyL1JpZHVMeEtZc1Nrc1Y4dkxsT1F2aEdYMllsUjBPQmhCakMrdS9nRWN2WTBBcEs3WWs0MU54alBTUW5XRkhURjY2VXJqZ2V2QjhDdTVhK2wydllTUlB0dVZEbzczaGhkTVNIblVYN3RUanNWWkd4QWwvV3B0aU9JRVExZ25MMjltWDYvdFIxdG1sa1lqOFc0WCtDU2pXY1VER1kxTnBTL0M3aFNLcWlNTE0vbDJRbVNXWjczRGR6K2dpbzhCQ0VOWVBRNDZxbmt6d1hVYnF2Qmt4alVRc1dmWkZnYnVvM3JBZit3TjdqT085MCt5bng0UGkzTCswbllMMVNjaERVZ0FQNGdQVi83SWQxcSsxSFNobXVHa0lxV1JQZ3l4TUZxUDhIZmpUbmpYd1k1YlFmYkpjdDZPSXpLZ01Ib3RGL0hlMWVnc2F4SFNxRzZ3ZmRtUTV4OE55VEZGcUJjcDJpU293SFIzeWs1KzM2aEY3dlhBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiXSwiZXh0ZW5zaW9ucyI6WyJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiJmOGEwMTFmMzhjMGE0ZDE1ODAwNjE3MTExZjllZGM3ZCIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZX0sIm1heE1zZ1NpemUiOjEyMDAsInBpblV2QXV0aFByb3RvY29scyI6WzFdfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjAtMDUtMTIiLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IlNlY3VyaXR5IEtleSBieSBZdWJpY28iLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDE4MDkyNjAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4wLjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMC4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIwLTA1LTEyIn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMC0wNS0xMiJ9LHsiYWFpZCI6IjAwMjQjMTU2MSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFpZCI6IjAwMjQjMTU2MSIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJHK0RTQkFLZXlzdG9yZUFuZHJvaWQifSwiZGVzY3JpcHRpb24iOiJHK0QgU0JBS2V5c3RvcmVBbmRyb2lkIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoidWFmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6Mn0seyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfZGVyIl0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9kZXIiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbInNvZnR3YXJlIl0sImF0dGFjaG1lbnRIaW50IjpbImludGVybmFsIl0sInRjRGlzcGxheSI6WyJhbnkiLCJwcml2aWxlZ2VkX3NvZnR3YXJlIl0sInRjRGlzcGxheUNvbnRlbnRUeXBlIjoiaW1hZ2UvcG5nIiwidGNEaXNwbGF5UE5HQ2hhcmFjdGVyaXN0aWNzIjpbeyJ3aWR0aCI6NTQwLCJoZWlnaHQiOjk2MCwiYml0RGVwdGgiOjE2LCJjb2xvclR5cGUiOjIsImNvbXByZXNzaW9uIjowLCJmaWx0ZXIiOjAsImludGVybGFjZSI6MH1dLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQm1EQ0NBVDBDQkdRZFBSMHdDZ1lJS29aSXpqMEVBd0l3VmpFTE1Ba0dBMVVFQmhNQ1NVNHhDekFKQmdOVkJBZ01BazFJTVEwd0N3WURWUVFIREFSUVZVNUZNUXN3Q1FZRFZRUUtEQUpIUkRFTE1Ba0dBMVVFQ3d3Q1JGTXhFVEFQQmdOVkJBTU1DRUZWVkVoU1QwOVVNQjRYRFRJek1ETXlOREEyTURNd09Wb1hEVFF6TURNeU5EQTJNRE13T1Zvd1ZqRUxNQWtHQTFVRUJoTUNTVTR4Q3pBSkJnTlZCQWdNQWsxSU1RMHdDd1lEVlFRSERBUlFWVTVGTVFzd0NRWURWUVFLREFKSFJERUxNQWtHQTFVRUN3d0NSRk14RVRBUEJnTlZCQU1NQ0VGVlZFaFNUMDlVTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFU0lwSS9kS1lDRFloendEMndTZllBT2Ivbk5haVBjV0YyMXZ4WmsvVGdEME9KdGNEK09QbTY0bndaZEZXU0VZU1c3aU9xbnBtSnlkZThtZ3IvdG5BaXpBS0JnZ3Foa2pPUFFRREFnTkpBREJHQWlFQTNidmhhelFGUHdteVhseEsveENYZmg3ZzFYMUVvYkxDM0wrMkdPUnhwN2dDSVFDZk5FVFgvbTJCZWJSTFhJNExNUDFFUUdQWEZEZjdPazc0VTd4YmlNNFZrQT09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsLzlqLzRBQVFTa1pKUmdBQkFRQUFBUUFCQUFELzJ3QkRBQU1DQWdNQ0FnTURBd01FQXdNRUJRZ0ZCUVFFQlFvSEJ3WUlEQW9NREFzS0N3c05EaElRRFE0UkRnc0xFQllRRVJNVUZSVVZEQThYR0JZVUdCSVVGUlQvMndCREFRTUVCQVVFQlFrRkJRa1VEUXNORkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCVC93Z0FSQ0FESUFNZ0RBU0lBQWhFQkF4RUIvOFFBSEFBQkFBTUFBd0VCQUFBQUFBQUFBQUFBQUFjSUNRUUZCZ0lELzhRQUd3RUJBQUlEQVFFQUFBQUFBQUFBQUFBQUFBRURBZ1VHQkFmLzJnQU1Bd0VBQWhBREVBQUFBYXlqNkY1d0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFZ2QzZURUNXhMSjM2eEZvYzVsOGxHUFNYS3N6TkRNMDlOVmROKzhQOFpkTEtCSHBpZSt2aFR1b2ZOWE5Bdm0rTXlVbVJuMWRRWmdBSE00Y3cxTGljUDFWTGVRdWpUekoyZEpNMzM1cGhhYVVqZWFiS1VSdmRWN1NaMWRUUzZTdUZrd1EvYkhyNzY1dDJGMW1kazg3TlBxRStTWXlIUjFnQUxCMThsdnlUZWpQWFFxbXVnc2dZZFZWcDF5YUhmWExXM3ZVUWsycGFJcWQ1TXJZcUlQZmpkTE5tVFl5MitDVG94c2I2SXR0U3U2bEE5QlpIQTZxb0FCeU9PTkhQMnBQZW5qcnMvOEF4bW5jWWJMQ2lhNnoweFNtYVp0OUhSTWxVUnZkRitxem9ZdXMzbGRLVjF1NmlhbTN0N1BydEpuMEdlbnUvQTlEV0d4eEFBQWV2OGd4WEtrL09acWM5Sm1iS2xwTXpaR2t6TmthVE0yUnBOd002RXJoMWo4dzJPSWV5QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUC84UUFLQkFBQVFNREF3UUJCUUVBQUFBQUFBQUFCUUFFQmdJREJ4VVhJQUVRRXpZUkVoWXdOSEExLzlvQUNBRUJBQUVGQXY2YkdJU1JsTlliRmdVWlMzRk1tbFBndEtXMmJmU0xyRTFQU3VXK0MwdkJhWGd0THdXbDRMU2NpR0x5azFpZ09ScGtzUUl4ZTkrR0FRbXFVUEc3ZTAwc1BuN1lhM2U1ZEJ0cTk1eGFPWllIRkF5eEo3Y3BCa3hoSGkyODR0YnppMXZPTFRITFFKM1cxZDJIMWg2eXNFV3M1aDF5S0VPYlJyY2ZPZ1lpeUJGU1dRdDR5S1BTRjdJM3ZERW50eXlmN3R3amNvZlJoNENOTjVBTWxBSzNJd2x5M1ZadWNzVk1PajJYTExSbXA5SSsxR0pqMWRPMGg1YlNIbEFvQ1ZqcDlUWEhoWTlKZHBEeTJrUEp6aXc0MGJkc09tYW01ZFpIWWRCOHc1WVkrTmVVNCtycEx1emI5Ym1lL3dBUHRqWDZ2dlZaZitQdXZsaTRoMFlTOVpkQ1ZNejNhbkpzam9wM1BraTNQa2l4NU5UQjZSS2RUbzJGbEc1OGtXNThrVi9KRWhkV08ySEFsVjRnc2hrT2hLWDhyRit0cmZqUnkxSXd4NEcya1F5U1JSL0YzWERFbnR5eWY3dHdpc05mU2x5SUZOd2crWVNHaU5BNnF1dGRYT0VURzdFMzdCKzNLTkw3ZTA2dFBjWHg5NVh0Q0NXMElKYlFna0JnQXVPUDBheDBKUEV0b1FTMmhCTGFFRW1PTTQreHJ0V3FMRnNvVmFobVV4bGw2V0V2d3g2VWtJemZDNWVHUEtXOHFET3FkZEdyWFJxMTBhdGRHclhScTEwYXRkR3JYUnExMGFuTXRDdEtUZVlCN1drOUpIOGtjLzAzLzhRQUhSRUFBZ0lDQXdFQUFBQUFBQUFBQUFBQUFBRVJFZ0lRSUNFeFVQL2FBQWdCQXdFQlB3SDZ5eGs2UktGN3FVU2g0enlmUzFERW1aRVBXTE11QzlNdFdSWWJnc2h1UmVtWG5GT1NwVml4WTFKVmxXSlFOenlzV0xGaXhZYm43SC8veEFBdUVRQUJBd0VGQmdVRkFRQUFBQUFBQUFBQ0FBRURCQVVSRlNGU0VoUWdNVUZSRXlJeVlZRVFKRkJ4OERQLzJnQUlBUUlCQVQ4Qi9MVmxkNFBrajVyN2lwenpkUjBsUXhzN2lxci9BQVA5S09NNVgyUXpXNTFPbGJyVWpuc3VvSytXRjdqelpSbU1nc1k4dUNVL0NqYyt5cFl0Nm11TDl1aEZoYTRWdlVHdGxVMU1KUWt6RXJPa0dPVjNON3NsdmNHdGtFb1MraDcxYUZNeGc4cmMyVmxTdmU4WHp3Vlk3VUJzeXNzMkdaMmZyOU1MbTd0L2ZDa3M2V01YTjNiSlFRRlVGc0FzTG03dC9mQ29hWTZablkrcXF6WUlDZDFaWTN6WCszRFZVNVVzbTBQTG9vYlVHNjZWbGljSHVwN1Foa2lJRzZxaG5DbmtjajdMRTRQZFBha0hTOVZOVWRXVjNUc3FLbTNlUHpjMzRTRmpiWkpIWmNSWmk5eXdrZGF3a2Rhd2tkYXdrZGF3a05TaHBJb1BTMmY1ai8vRUFFTVFBQUVEQWdBSEN3b0VCUVVBQUFBQUFBRUNBd1FBRVJBU0V5RXhRWk1GSUNJak16VlJZWkdoMFJRd01qUlNZbkdCd2VGQ2M3R3lVM0NTcy9CVWNuU0N3di9hQUFnQkFRQUdQd0wrWnQyRVpLTUR3cERuby9McG9GOXM3b1BlMDk2UDlOV1lpTU1qb1EyQlhKcDdLM1dJUWtIeVZ6Vjd1QUFnRVpCZW41VnlhZXl1VFQyVnlhZXl1VFQyVnlhZXlyUHdvN3c5OW9HbEtpaFc1NzNTM25SL1NmcFZwVGVNeW84Qjl2T2hYbWk5SXVuYzVrOE1qOFo5a1VobGx0TFRTQlpLRWl3RkYrVStpTzBQeHVLdFJTMEpFcjNtMjdEdklyMUtaMko4YW13MjRrcEszMlZOZ3F4YkM0K09BZmtMK21CNkE5RmtPT05XdXBHTGJPTDlQWFhxVXpzVDQxNmxNN0UrTmVwVE94UGpRUzRYNG5XNjNtN3IwbDZPOGg5cFdoYmFyaW5JOGxwTHpMZ3NwQ3E0RjNJTDJkbHc2dmRQWDVobU95TVoxMVlRa2RacVBCWTlGcE5pZmFPczA1TWY0WDRXMjlhMWRGR1JNZHh2WlFQUlFPZ0RlajhoZjB3VC9nMy9BRzA3MFBSWE9MUEtNcTlGWS96WFRNMk1lQXZTazZVbldEVWlFdTJNb1hiVjdLOVJwVGF4aXJTYkVIVWQrMHRRdUk3YW5mcDljSGtRUEV3MGdXOTQ1ejlNSVVCSHNjL0sxb2piV3RFYmEwSmNzTTVISnFUd0YzT0NWTmlobklPWW1ManVXT1pJRmFJMjFyUkcydE92dUNQaU5wSzFXYzFEQy91Y284VklSanBIdmo3ZnBnbkJJc2wwaDRmTVorKysvbTlQazMvb1lOMWNiVGx6aGEvMmp6RzZQL0hjL2FjTzV1TDByL1lyQW0zK21SZnRPL2pwVWJKa0lVejlSM2dZRWJvSlR4TXRPYysrTTM2V3doSW5pd3pjaTM0VnpnTmczNFZ6Z05nMzRVSXMyWGxtTWtwV0xrMHB6L0lZSmNTSE15VWRHSmlweVNEcFFEckZjNERZTitGYzREWU4rRk9NdVRncHR4SlNvWkZHZy9MREozVVduaW1VNUpCNlZIVDNmcmczUVdrM1EyckpEL3FMSHZ2djIzbWxZamphZ3BLaHFJcVBOYXRkWXN0UHNyMWluWVVrY0JlaFEwb1ZxSW90eW03dEU4VytuMEYvNTBiMGZrTCttQ2Y4Ry83YWQ2QXlndFJRZU1rcUhCSHc2VFRNT0tuRlphRnVzOVpwK1VTTXNSaU1wNlY2dkdpcFJ1bzV5VDVnNDEzSUx2TE5EOXc2NmJreFhVdk1MRjBxVFNtbm0wdXRxMG9XTGcwVkNLcU9UL0JjSTdxMHl0cjlxMHl0cjlxMHl0cjlxOHNpRi9LNHBUeGk3ajlNRHM2U1g4czVhK0l1d3pDM1IxVnBsYlg3VnBsYlg3VnBsYlg3VUZlUm1Rb2Z4MWxYZG9wS0cwSmJRbk1FcEZnS2NsVEhReXlqV2RmVUt5eXJ0eG04ekxYc2pwK1Btc2VFOVpCOU5sZWRDdmxRVFBiWEFkMW0yT2p1ejFkdmRTSWVvdkFHdWNJdTJUWE9FWGJKcm5DTHRrMXpoRjJ5YTV3aTdaTmM0UmRzbXVjSXUyVFhPRVhiSnJuQ0x0azFkM2RTSU9vT2hSN0JSVHVjeXVhN3FXdmdJOGF5MDU3SHQ2TFl6SVI4Qi9NNy84UUFLQkFCQUFFQkJRZ0RBUUVBQUFBQUFBQUFBUkVBSVRGQlVXRVFjWUdSb2NIdzhTQXcwYkZ3LzlvQUNBRUJBQUUvSWY4QVRZam80YURUTTBPTVVZNjN2RXRCWkcrYUJGdUQraFhxOUc1RUNITnN1NWFCTlBWNjlYcjFldlY2OVhwYzVZZjJ5bVpPMFJaMVQraWdaNFRnaE9Eby9VVEJ1Nk4vTi9YQTMwYTQwU09RVmVxckFkMi9Tb01IZ3VyT214R0VobnBDQXVXMzRVU0xxaGxoTVNQZ1JvMGJwdHN0M082WGFhb2JpVkNFSk1pZVkwREUwM2htMEhVNHg4OWRxWEpCUm1FU0RiaXVxeTFicGl3TUx1SDlYQUdsM09XN2NzdjY0L1pSd1Zzb1N1T00rWXFmdWVRZk5GQ3FKdnd2VTZMVCsyNytCaFBuWmtIM093OVo4TmhaZWhhWW5KSERiQTVvUEJYblB5dk9mbEUyREc4eEZrYWJIbVJHSUdzak1hODUrVjV6OHEvVVBGZ2x3MDJwTmtaZkozejVObkh2SUNmbUZCM1c2MzdiRGFQTTVZZEkyK1d5K3RRRmJKdE4xdHNXYmN4NmZuUEFwWE5Pb0xqc1RCREJ1QkVjUXVlMG9ZSUdGdG9VSjJyQkxNaUxRZGhuQXBZTWxhamV1MUNoaUZnWGtJU3pMdFNnSmRrckc3WXd3ZzRaMEh6TkF2UmlKSG5TaENDMjY3L1JHc2N1WFljMGZwalRsTE1kaHZ3ZFZ2MlVjSU5CckNjVCtBNHhWajFsTjVqbUsyMWF0RVdNZEJlMEtmdzJRbFg2SElPaGVETFJkYnNrbkRxS3gvSFNpSjlCWnRScTB5OHhQTkljQ3ZTcWVsVTlLb2JRTmhJRyt5R3pEZGY3QUVHZ1Y2VlQwcW5wVk1OSUVqdWNTZ0RGRGdaQVVTV3JieFlCaXVWTFFsbnZFYXNlQmg5UytZWjVoNXRTR3NEZEZMeHNPWEdqVTUvQkZtdlB1OWVmZDY4KzcxNTkzcno3dlhuM2V2UHU5ZWZkNjgrNzB5aW42NExXQnVRUjF0dGJvTjlTVTZWR1dCdnYvd0JPLzlvQURBTUJBQUlBQXdBQUFCRDc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nm9Namc0eHZQMzc3Nm1wenl5dnplcHI3NzczajVUL3o1ZS96Nzc2NHB2OEF2cS82SUcrKysrdmMvd0QvQVA4QXRmOEF2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2L3hBQWVFUUVBQWdFRkFRRUFBQUFBQUFBQUFBQUJBQkV4RUNBaFVXRkJVUC9hQUFnQkF3RUJQeEQ5Yk1kQnF6TUVVTXoybG4yQmhFUnAyQmJVV0NabmhMQnhBcHhQS0ltWlExRDkyY1JEeHJBV29BdDBpd2hzYm9EVEhycEFSakNqV2htNXRHb016TDlTL1V2MUw5Uy9VWEw5ai8vRUFDZ1JBUUFCQVFVSUF3RUJBQUFBQUFBQUFBRUFFU0ZCWVhIaElERlJnWkdoc2RIQjhQRlFFUC9hQUFnQkFnRUJQeEQrc2IzMTl1TllEbzd0UFJGVTBFODV6dmtvZFZ2bU43ZTQrS3RKVSszdzd6SitHS3pWYkdHUll0VnFXL1RGZ1lxQmRQM0lDOVVhRllYUVZGdVpQMUlVbzBjSVhOTjlpWTVRRG15bEhoK09tdzNCSGkyWEFTek94OGY0dTE3akZIa0ZiRjlSK2dJVnQ1Rnc4Wis0d3BnMUc2dnlFdkJCT2JaRVViaGVUWVFTak54MnFxNFlabmVVVmRlSmZ5dW4xR3NyUTFDRm1zcUZVVVdabnFmVWF3QlVMa2U0TUpTNExiZmxqWnljT0J5ODdMMEtqY3hxcXdienZiM21LNmF6RmROWml1bXN4WFRXRlMxOUNXM25HMTA1ZjJQL3hBQW1FQUVBQVFNREJBTUFBd0VBQUFBQUFBQUJFUUFoTVJCQllTQlJjWUV3d2ZCd2thSFIvOW9BQ0FFQkFBRS9FUDVOdmNVNFpraTUrQXRLUTBIckJaN3FlZUp2bWppdEFOZWdyOU45VXpHTUFqc3NhU0dreEI2TmZwdnF2MDMxWDZiNnI5TjlWK20rcVBNVUpyL1NpeDgrbm9nNG9xbUJQYmtzREdOc2JLU0UvRVMweFRIQTJGa1N1Z0VJUVNXWGhjQXNGV1ZmVFIyQ3QxRmhLN0ZUSnRBcGVIU0RDekozZnVoTUVUQXZIUTBPTG05bG8xZ0RKa2VoZ3dZTkQreEUrV0RsQTcwYnA1N29jSWttNWtwdDNmdHJDTUlJUkJFUWFQMEtVd1hXV3VrT0lrdkQ0SEZkd2RQZ2xMMWpBdUpWK1krQ1lMQlUvaXdPQVYyeFpnTWhEQU1ZUGoxQnRJZ1lsdkJLVy95TkZKQkcycHNtMURBOWdvcXdoMkdPQVlUMGtKWkduaWtKdzFCMkp3WkJ2UmliZWhBZzdpSjFsdGlra2lMOGdqa2FNQkZRL3dCbmZ3Yys3cmRQYVlzSkovdlhQTmxnZDhCaGE3UjlzUkozVkpIS3hHdWVaRmIxZERFWnNLMnJMejBaQ2lvMmttNzhlaENUNEVTdCsrdktxSk43ditrNkJMSlRkT0hXZmg5dngzc2JSV2U0OWFOT0VRaCtkdXNhTlMwRUkvUU9Sb3lJU2wzbjJoWGQ0dW9HSHlxQVFHdVRKYUZHemE3WVpMYVkwbVdmdGR3MGwxMXpCYldUSnYxRHNzbkNrcEpFZFNJQ0phV1M0NGZIUXlyK0dURW50TTk5ZU01ZEREY2dIMVF4RVM1S0NiMnVKenVGTXFTRFM4U25DTHdpbGxUQWJDcnNvN1BOaHlRdnh0RkJLQlFobnNMZUczSkM5Wno4SVYzZEJMS2U3WUNDcHJMUmF2Rm05M2tUS1VnWE1rSmxWM1ZaK0IrNnNURllEWUZiV0RkRkFiQXBNRzRtUWJLQkVSQks0Rm51aUVpZVNtQUZkSzhKNFFIUXpac3pOVnl5L0Jjc2I2RW1tQ1BKOEpNaStaNkdiTm5QTTAreGN6MkZEVUtCZGdBQTRLa2FDZk93QzhhQVN0WHFZNlN0NGJNWW94QVNCK0o5Z3dURjVpSVdtQXRNU1ZEWW9LSjNDdWRtSjNab0VlSmdieVllejR2L0FQOEEvd0QvQVA4QS93RC9BUGdnUkw2eFFlaW9iMFJWL0JiOGpzb0EzYkVtTWpZd0pVcUNWaitUdi8vWiJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wNC0xNiJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDQtMTYifSx7ImFhZ3VpZCI6Ijg5NzY2MzFiLWQ0YTAtNDI3Zi01NzczLTBlYzcxYzllMDI3OSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiODk3NjYzMWItZDRhMC00MjdmLTU3NzMtMGVjNzFjOWUwMjc5IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlNvbG8gVGFwIFNlY3AyNTZSMSBGSURPMiBDVEFQMiBBdXRoZW50aWNhdG9yIn0sImRlc2NyaXB0aW9uIjoiU29sbyBUYXAgU2VjcDI1NlIxIEZJRE8yIENUQVAyIEF1dGhlbnRpY2F0b3IiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MiwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQjlEQ0NBWm9DQ1FERVIyT1NqL1MrakRBS0JnZ3Foa2pPUFFRREFqQ0JnREVMTUFrR0ExVUVCaE1DVlZNeEVUQVBCZ05WQkFnTUNFMWhjbmxzWVc1a01SSXdFQVlEVlFRS0RBbFRiMnh2SUV0bGVYTXhFREFPQmdOVkJBc01CMUp2YjNRZ1EwRXhGVEFUQmdOVkJBTU1ESE52Ykc5clpYbHpMbU52YlRFaE1COEdDU3FHU0liM0RRRUpBUllTYUdWc2JHOUFjMjlzYjJ0bGVYTXVZMjl0TUNBWERURTRNVEV4TVRFeU5URTBNbG9ZRHpJd05qZ3hNREk1TVRJMU1UUXlXakNCZ0RFTE1Ba0dBMVVFQmhNQ1ZWTXhFVEFQQmdOVkJBZ01DRTFoY25sc1lXNWtNUkl3RUFZRFZRUUtEQWxUYjJ4dklFdGxlWE14RURBT0JnTlZCQXNNQjFKdmIzUWdRMEV4RlRBVEJnTlZCQU1NREhOdmJHOXJaWGx6TG1OdmJURWhNQjhHQ1NxR1NJYjNEUUVKQVJZU2FHVnNiRzlBYzI5c2IydGxlWE11WTI5dE1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRVdIQU4wQ0NKVlpkTXMwb2t0WjVtOTN1eG1CMWl5cThFTFJMdHFWRkxTT2lIUUVhYjU2cVJUQi9RenJwR0FZKytZMm13K3ZSdVFNTmhCaVUwS3p3akJqQUtCZ2dxaGtqT1BRUURBZ05JQURCRkFpRUF6OVNsckFYSWxFdTg3dnJhNTRySUNQcys0YjBxaHAzUGR6Y1RnN3J2blAwQ0lHanh6bHRlUVF4K2pRR2Q3cndTWnVFNVJXVVBWeWdZaFVzdFFPOXpOVU9zIl0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUxRQUFBQzBDQU1BQUFBS0UvWUFBQUFBQkdkQlRVRUFBTEdQQy94aEJRQUFBQ0JqU0ZKTkFBQjZKZ0FBZ0lRQUFQb0FBQUNBNkFBQWRUQUFBT3BnQUFBNm1BQUFGM0NjdWxFOEFBQUMrbEJNVkVYLy8vL3c4UERYMTllK3ZiMmxwS1NrbzZPL3ZyN2EyZG4xOVBYNit2cTd1cnA2ZUhoZlhGeEdRa01zS1Nvakh5QXpMekJOU2t0b1pXYUtpSWpTMGRMWTE5aURnWUg4Ky96WjJObDRkbmN4TFM2WGxaVzZ1Ym40K1BqbzUrZDRkWFlsSVNJNU5UYXVySzMrL3Y2NHQ3Y3NLQ2xaVmxmdjcrK2pvYUhrNU9RNU5qZnI2K3ZnMytCbFltSldVMVNvcHFmSHhzWW1JeU05T1RwU1QxQS9QRDA0TkRWOGVYclcxZFg4L1B6ZTN0NkhoWVV0S2lxOHVyc3ZLeXpqNCtQdjd1NWZYRjFuWkdYUjBORW5JeVRoNE9EMDlQUXJKeWhhVjFqbTV1WitmSDFFUUVIRnhNVEt5Y3EzdGJhaW9LR05pNHkydExYdTdlN0d4Y1d4c0xDZW5KeVJqNUNtcGFYUXo4K1JqNDgvT3p6RXc4U1dsSlJWVWxNbUlpTlRVRkdVa3BQOS9mM0l4OGVJaG9aSFJFVmtZV0trb3FLZW5aM1UwOU5oWGwvVDB0SktSMGQ3ZVhra0lDR0NnSUJzYW1wcmFXblYxTlFxSmlkcmFHbmw1ZVcwczdOWFZGVHM3T3hGUVVMMjl2WStPanQyYzNRb0pDVmNXVnFhbUpuTXk4dk56TXlibVpvNk56am41dWMzTXpUcDZlbFlWVlg3Ky90bVpHUmlYMkRPemMxU1RrK1ZrNU9QalkzcTZ1bzBNVEZ0YTJ1QmYzOU1TVXFHaElWZVcxdkx5c3V3cjYrcXFLaTN0clkxTVRMeTh2TGo0dUpiV0ZuS3ljbENQejhwSlNhcXFhbElSVWJjM055c3E2dXlzYkd6c3JKMWNuUGYzdDh6TURFdUtpdVpsNWlobjZDY21wcjI5ZlhKeU1oUFRFMkxpSW4zOS9kZFdsczhPRGx6Y1hGeWNIQ0FmbjVVVVZLWGxwWkxSMGgwY25KWVZWYTV1TGhEUUVDUWpvNmZuWjVKUmtaeGJtOWpZR0V3TEMxTVNFbGxZMlB6OC9OQlBqOVJUazdiMnRyRHdzSlFUVTJwcDZod2JXNU9TMHlMaVlwZ1hWN1B6czc1K2ZscVoyZ3lMaTg3T0RqQ3djR2RtNXVKaDRlcnFxcEFQVDZucGFiUTBOQ0VnWUorZTN6eDhmR3RyS3pBdjc5eWIzQ0ZnNFNTa0pGdWEyeTFzN1M5dTd5d3JxL0R3c09NaW91RWdvUGMyOXVZbHBlOXZMMTllbnZ0N2UzZDNkMDJNak92cmE3cDZPaWducDlwWm1kM2RIWEJ3TURpNGVGR1EwUi9mWDZPakl4dmJHM1cxdGFjMTJWNEFBQUFBV0pMUjBRQWlBVWRTQUFBQUFkMFNVMUZCK0lKR2hjNkhJMHQ4bUFBQUEyVFNVUkJWSGphN1Z4NWZCUkZGaTdDSFVrYVJBeTN3VUM0eEpBQVM3akNFUWdva1ZQa1RCaXlpa0NHeTRVVkNVSE9vSWFRY0NjWWdzZ3B5eEZBRVRjQ0lnUnc1VWdNdUFyb3hndFdGUEJZVjExM2Y3L04xT3VlZXRWZDNUTTFFU1ovOVBkUHB0NVIvYVc3dXZwVjFhc2l4SVlOR3paczJMQmh3NFlOR3paczJMQmh3NFlOR3pac1NLTlNRT1VxVmF0VnIrRnZIbDZpWnVBOXRZS0NGUlcxNjl4Yjl6NWZxNnAzUDBQSUhhUmN2MEZEeFlDZ1JyN2Q4Y2FvamlaM2pITFRCMElWSVpvOUdGWlJTVGR2b1pnaXZHWEZKTjBxVkxGQVVPdUtTTHFLWW8wMmJTc2U2WWRhZUNDdHRLdHdwTU1lOXNSWlVTSXFHdW4yT29LUlVSMDZSdXBrblNRNzJ6dE8rZ0hNTHZnUG5hUExaQ0ZkdW5ialdIZXZXS1NiOUVBWGlJcHh5M3Yyd3FSN1Z5elNmVkQ5c1gyUm9sOGRwSW1UKzhUY2FkS0JxUDcrbktZZXZ0VURLaFRwcXFqK1IzalZvMGcxME9qWk12NnhRWU1IRHhvU1AxU1M5SUJod3grdk8rS0p3SkUrL3oralVQMmplVlZFYjRZeE9yZUFzZU1TTkxmUXhQR2R2U1h0bUpEMFI5Ym9ubnhLN2dscW1JZ2J3V05lT2owOVNkK1QxNXJzRmVudVUvUWRiSEpUSDBnM3gxVTRwM3J6eE5wT2N5b0dPS2VqajcwSjZSbUpSajlsWmxKTmFkSjkrQ29hUGhQeEp3OGVuYU1VSWFKWUd4R1RubVVTTDh6K3N5enBHc2FhbnAxYWJZNjVRK05neFFUQmpTMUpEemJ6VTU2ckw4dDZycWlhbEhtcDljVG04Mk5OcjYya1BHOUJlb0c1bjdKUU5vNmNiMVpUbXdlR1ZESllMMXBzY1cybDJSSlQwZ01UckJ5WHBrbXlYbVplVjhJTEwvSzJqcGV3dWx1djlPWGhNN0ZrZHBnSjZZd1YyS3hUNXVOWks3bVJ4eXBKMHBWTVhpekE2alhZZGkzU1JLNmpzVi9OVk55WHJEY2gvUWlTWk1PZHlKbU9aTEViSkZuZnQwS3h3c3U1YnN1UWpVeWNGNmhKTjZFbi80cERTSG9EZWhNV2JsYjlvaHNnczdtU3BFbnJsWmFzbGZHYTRhdEl1SVg1NHcvVVZpSHBiZWdCYldlTzl6Snh3a095ck9lTTJHSEpPdGtCZGloY2pZcEc3bWpLcExlSWROcE9WczVFMTMwUjJiMG1TN3JzdXJ0R1c3SCtDelhhbmNja2piRDNLaWJmbVNZZ3ZRZVZ1WGRrTDVPdmxpZGQxbDZIV3pTU3ZPb3VrKzdvYVhKZnNiN0lkSStBOUQ1V25NSmRkQjI2Ukw0dnJBbUppWmhlMjRUMWZwYytpWlVQOEo3bzhhY0xTTTlteFlPYzN3eGtPTjgzMG1WdzlFbC9lYWFBdE5NVlE3N095b204V3hEVHZDRWdqVHFkZlp6ZlVHUzQzbWZTTGpScHYveVFJWTU3czB4Uml4V2Y0VjMyTTgwMEFXbjBJQWJ4am5GTTgxUzVTTHZRT2oySUorMGFpaDFteGFtOCtWdE04MWNqNlh4VUxPQWQzMmFhSStVbVhZYWpYR2owTnQ4SWtuamJlL2lHb3lPZGc0clZlTWRqWmczSFY4ekhqYnRGbVNDY0ZkL2hUWTh6VFc4amFZSzZTdDFrMWJ0TU05RmJYdEYxVGpEczBXdFA0bHRkU0VnbTN3Z1FVTU5KRnBCRzBRM2ZDUG9od3kzRVd5eEVYbGw2NVNha2RKWU5pckpZOFJSdmlUNm95d1drVDdOaUE4N3ZEREljNWpYcHBjaXJvMTQ1SENrN0VTNzA0RDhGTFpGaGdZQjBNaXN1NWE1UWdPN0tVT0l0MEd1dktPL3BsS2hmVnY1V1ZtNkxPc0pOMkRDVnlXTUxCYVJSMmRrRk82SjNZYS9Ybk1uN21IVEQ2cHd1Qm44ZXp4TCtNWjlEaGc0VXQ0UVRBZWwrcUNQS1FvNTkwVjA0N3ozcEhPN3pGNFdqbWM2ZHNJb09XaHNoQVJyVFlJNFRSYVRKQlZidVVjZ2M3MGQyUmQ2VHhqMkNDM1ZlM1ZEc0VzOHArQ0FQeTJ2VHlZbWNFaWE1ZUVhcm9nZzlrZXpkUXRKNElEbzdSM09zZ2taYzh5UTRrMXpGZ0JXSG4zMVhMMU1mNmxnazJqRVNaSmZ3bk1LSFJFZ2FOMTVscFJvaGpzY1hrQXVYa2hVdnNGaGRsNnVCbTB4azR0OHJONy8vSEI2Z1hzdzNJVDBERDhaM1RtclUvcU81SCtNTFBDbkZtZlN6SE5lcWNFL3l4Y2RhbWFVVUVSUFM1RVBMK2kvS1RqS05MRkU4QVgwUnFsclpYU2FtcE1sWkM3KzhLNUtjQ2FuZnhnUG5xM2dkSU1uY3poMUZpVWpQNlcvK2dMWktjeTdya005WlVZNXN4RnRIbUxTUVdCWUxDZWZ5MGo0eHVVRDJHcStaWWpnaXNrMDVqd3ZRVytjZUVOa2RZTk1qWmxPOVQrd1VPWGFRWDhaVzhla1I4V2o4M0Q4RVMwVEZ1enJwN1JZZkxVWUdacFBxUFpNTWM3UlRHbnVpWm9XdytPVG5kQldlV21VMkI1dC8rU1M2Zk55VFZYWno2cEZvNFlPZldzeDRjeW5xL0xJUE52WWxNNE5IeTRFTDdzbWM5UENVT3YxN2J4dFYydFBTdHZoUzZxclA5dS8vN1BQVVVya0ZuMHBEeG1abGhrK2F1Ky9vU0VlNUdkdXdZY09HRFJzMmJOaXdZY05HaGNYbGNCZStNTkZ1b2Rydy9yNnZUTjRSMUtWRHpDL0Z5cTNxS0hTWHYxbEtrUDVLNWR6SzN5UWxTSytIUEdwblZYOXpsQ0Jkb0hKK3d0OFVKVWdId3B5ZDgzMS9NNVFnZlEwNGgyN3lvVTUva2E2Y0FweGY5VGMvQ2RLbHNFd1UrcUMvNlVtUXZnU2NFNjc3bTUwRTZYL0M2bUxDY0grVGt5QTlFUEpkRW54WlZmQVg2ZmJBT2ZJcmYxT1RJTDBIcHNzalRYUHR3OVlrVFI4M3VzM2Vkc2xyMFpJeGNUUnhRWnllVzB4MXJEeGcyTHF2ejQ0N25qWHhXdlg4MzROMExpekF4alkzc2MrNGdYSkU4azZ5SFE3ZlVFbVVRK0N6aUM2UXVsUHk0bEVHbHhKOHZoS1JobzcwR3RqL0ZHdXlGQko5Rk85QWN1RjFkNTRHNUk2TUVYaDlpMFBGQ2VHNkdocU8zVTBrd1pOK0hqaW5tR3pXeXRpckdMQkRpN1VoVC9rZGdSdmRKUkwzS2YxZFdiQmpNMHAyd1pZalhRU0xaaWszeGJZeHA3Um1jZnBXMG9WbWFtR25ta1ZSVEpPQzRuSU1icE9wR2VRK2RsRnpCZkxlcnJXdDNXRXRzM1plTkpFQ0pqMFNubjFlTmJIcEJtak5vZWM3dyt0Mit6b2tUZlNZQWZyUGFja1lGRUphUjd6clp5R2t5WTIrck80VHViSU04bFMrOXBsMEg3Z0xlYVZpeStoRFZMMFFaWlUxblVkRmgyRy80bmUwMEVIdkYvSzlTeHhFZi85QVRXYWpQbVlQRGN5Yzd4RVpNTktUMVllVk1rTnNPWUpxZTNFcmRRNXdoMVJsQXN2ZjMrajhiaUlUZXROTGZzVHFmMUYxSnBHQm0vVFQ3bXlFUjRWdjh4azZKdmorVTkxdHBDOVp0d3hhMkVyZGRkbVJaQnE5RTlESjBMMnhQL0g2RGk1WmJZY3ZwRHVqcEo1dElzTi9VOVVQZXZGN1ZBeUwvalhwRXJ0dWN5dWtTY0ZMNDZBZmdSRjhEVi9RR3FTeUoxVFNBVnlDdlNCU1drSUQ3SENqb3AxTHZoRitRMTRGMy9kRVVCbnNEUXloL2QxWnZnSklzaDlQSkFDa3o4RU9qTHl4TUM3YzJkZGdkOFRzZmx5aUNzaEJlSWoyQlI5d2VwcnhmVXBkQTZmZDVQZjhnbmpJVmhla1psYnFvaHVjOTdPV1duWGFFRVBRYlRrbERtTUZiWEZEcG9uVXNUaVo4UmNuYXo2RVFBYzBWYkpidGlMdDZ1c2MwSWtaM3FaQ09nVWkzQ0M4R0xXYklkVDVLTkxTRmh1Wm9aYlVIVnpIcTVOeWdaR0diOG9TeUZmUmQ1elhxUFJ4VVExMEkwazNlQVpwOUQ4NGdiUWJ1ZjRpUTh2Mk81WitSWGEvbG9oMFNtVVFWSU52MUdJK0hvRGt4MHR0QmJoRlZlcTkyMGNMTTl4K3o5TnlxYnVNRGw2WU9XNVZ3ZTN5a2RZNEUzSURCQmU0MStXcTRnRXFMMmpDV1c0LytoL2hlUFZ6M3UzWDVPdldlU1ZXcEZHTVZGUE53MXFBelQ3elJGb2JtOUhHc2tQYmdscGNZdWlZdHpUVGViYjRwQXVSQkpCT3VZWkUyOVdZR3A5WmM4RVRhUzFPZ2syNzJyQm52YXVRc0lpN1l0cXNwVHBmNTdJQUlnVWd6WC82SWF4UlR2VmpvcE9lU0d0N3IwTG9qVHl1bHVobVIyTk9aa0JTSXA4b0YzeU55RUE0NzNFUXFucWRTZWl1MXRDWURGTzQ0NVhCOU9iQ0h0Q2hsRnFnNkxyNUU4YjNRcWRFSkx4SUpDQWtYVVBkQThRbW1HQlBtVGVISExXbW4rcHY2ZTlCcnAvTlRBL2FDTG1TV2t2TCsrNG9NK1lTVDR0TmhxbThidTdOZy9CVjhPcDBraGRjbGhBKzA5UjI2d0QvbDZRUy9RM3lsYlNXaFh0TzZ3YlcwT0luM3RRSVowSzRvcFR0OUMzenRCTjFNNlFteW1Ram01QU9ld0ZZMzFETE5la01UcUkzTlViVFVkbFZvcVoxMS9Mb3NKbTIvQjNsSjAxdVEzZnFMRlhMTkNaSkVkMjFXUlBMZ0llVk5DQnM0eUNFbm53d2hDbis0MzRHUEdDTVgweThodWxLd0VBWTYyZXJzUTRrVGs4ejJ2MUlvMW04WGpDQUJsY1RZUG9tR3gxMVFOOUw1VGRERlpEdks1RW9hNzdtY2g0YXlHcjRuTStCOThXWU52d2IvYXIxd3lJNkxraUdRV1ZYSkI5RHF6aGhxQUlDQjRrNHhKeDBDQVMvZEN1aTIvQzBQcU4xTngxcnY4WEo2RkMyZHRxdnJqLzRFNTNmVFh4TDZSY3lWaUpYMW1KSkxnYW1GQ0pobTBVR0RNaDBIVmdhN0hDZXdBa2ROTU9hVG9ieDR6UFlvM1JJZHo3RUFEcmxlY3g3enBhTG4wUFVmaDhtUjlXczZLdjRXK0g0a3NwKzFkMGxHdm5UbHIyV2s2djdYWTV6bjV0aTJLaVUvanVSMWpaSC9oZEs2dTZTWSs3YkdyYitCSldzMks3emE2b2xTWmZvMHBUVk15N21YV0wvNVpxWHFXaW1wM05GdkNhZHJ4NHdBK3R5eGRwWkR4OTMzVExoZno5WHFmc0tGT09LREk2OVZVdmR0bGJTVTl1Z3NuSDhWL0Y5bHhSdGZWTTdKU3hWZ3JNMWFWSVBWbCtDdjZPbEVPRytqMUJCUUZTcTZneXA3bjFOdG5vc2t4cnJXcFBXOXJXc2hKN2ZNU0xPY0xrMnN3UnU2c2E1UTBiTmR0SEJOVW9EdWZHNUI5TGtKLzQ1dDU3R1gyM0hnbnloMjFTcS9VajAvN1RTSDJ5U2tDbDdST1pOZWlhbWVZaFY2UVkxdU9xZXk5aWM3ajdBcThXeEk0VW1icys2OUQzRVo5K2tGU3o3bUIwVVYvS0c3Tmtldm1GUjdxeWpvemJsTmpYL0hFQlFlTXU4aXVpWTlwdCs2N3FyZTBBT3FUQ0FydTFwZjlPUXdvKzAwM25KM3pUa0FFZlVCSmEvb3J1SVhCclZIeTcvYnFHN2dkdTA2d3E3Q1ZGc0JWNm14aWhTTmw1NDZ5ZDEzUzdJNFc4NjNwSm1pSlBmemVsMzBrNXZ6OTd6T3hqcEZLOFB2dkE3ZmttRU9EcjBZRXo1Szd0N0tMd3lwdm5BTHZuK3BtSERoZzBiTm16WXNHSERoZzBiZHcvL0IyWkhJSjZEbTZUOEFBQUFKWFJGV0hSa1lYUmxPbU55WldGMFpRQXlNREU0TFRBNUxUSTJWREl6T2pVNE9qSTRLekF5T2pBd2Z6UFlkUUFBQUNWMFJWaDBaR0YwWlRwdGIyUnBabmtBTWpBeE9DMHdPUzB5TmxReU16bzFPRG95T0Nzd01qb3dNQTV1WU1rQUFBQlhlbFJZZEZKaGR5QndjbTltYVd4bElIUjVjR1VnYVhCMFl3QUFlSnpqOGd3SWNWWW9LTXBQeTh4SjVWSUFBeU1MTG1NTEV5TVRTNU1VQXhNZ1JJQTB3MlFESTdOVUlNdlkxTWpFek1RY3hBZkxnRWlnU2k0QTZoY1JkUEpDTlpVQUFBQUFTVVZPUks1Q1lJST0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCJdLCJleHRlbnNpb25zIjpbImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6Ijg5NzY2MzFiZDRhMDQyN2Y1NzczMGVjNzFjOWUwMjc5Iiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlfSwibWF4TXNnU2l6ZSI6MTIwMCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMV19fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMC0wNC0wMyIsInVybCI6Imh0dHBzOi8vc29sb2tleXMuY29tIiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJTb2xvIFRhcCBGSURPMiBBdXRoZW50aWNhdG9yIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAxOTEyMDYwMDMiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMy43IiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjAuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMC0wNC0wMyJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjAtMDQtMDMifSx7ImFhZ3VpZCI6IjdkYWI4NWE1LWQxNmQtNGVhZi1hN2VmLTRjMTM4NWIxNTFjNSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiN2RhYjg1YTUtZDE2ZC00ZWFmLWE3ZWYtNGMxMzg1YjE1MWM1IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ill1YmlLZXkgNSBTZXJpZXMgd2l0aCBORkMgKENvbnN1bWVyIFByb2ZpbGUpIEtWWlI1Ny0yIn0sImRlc2NyaXB0aW9uIjoiWXViaUtleSA1IFNlcmllcyB3aXRoIE5GQyAoQ29uc3VtZXIgUHJvZmlsZSkgS1ZaUjU3LTIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NzI4LCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH0seyJtYWpvciI6MSwibWlub3IiOjN9LHsibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMzg0cjFfZWNkc2Ffc2hhMzg0X3JhdyIsInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3IiwiZWQyNTUxOV9lZGRzYV9zaGE1MTJfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIiwic21hcnQtY2FyZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRFNEQ0NBakNnQXdJQkFnSVVEcUVSdys0Um5HU2dneGdVZXdKRkVQRFJaM1l3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRREk3WG5IK1p2RHdNQ1FVOE04WmVWNXFzY3VibHZWWWFhUnQzWWJheG45Z29kTHg1c3dIMGxYcmRnamg1aDdGcFZnQ2dZWVg3RTRibDF2YnpVTGVtck1XVDhOM1dNR1VlOFFBSmJCZWlvVjdXL0UraFRaUC8wU0tKVmEzZXdLQm82VUxlTW5mUVpEclZPUkFrOHdUTHEydjVMbGo1dk1qN0p0T290S2E5SjduSFM4a0xtelhYU2FqMFN3RVBoNU9BWlVUTlY0enMxYnZvVEFRUVdyTDQvSjlRdUt0NldDRkU1blVOaVJRY0ViVkY4bWxxSzJieDJ6Nm9rVmx0eURWTEN4WWJwVVRFTHZZMXVzUjNEVEdQVW9JQ2xPbTRjcnB3bkRSTFZIdmpZZVBHQkIvL3BFeXp4QS9nY1NjeGp3YUgxWlV3OWJuU2JIeXVyS3FiVGExS3ZqQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJUcXQwS1FuZ3g3WkhyYlZId0R1bnhPbjlpaFlUQWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQXFRYUNXTXhUR3FWVlg3U2s3a2tKbVV1ZVRTWUt1VTYrS0JCU2d3SVJubHc5SzdIZTFJcHhaMGhkd3BQTmlrS2ptY3lGZ0ZQemhJbXdISmd4eHVUOTBQdzN2WU9kY0pKTmt0RGczNVBYT2Z6U24xNWNGQXgxUk8wbVBUbUliOGRYaUVXT3B6b1h2ZHdYRE00MVphQ0RZTVQ3dzRJUXRNeXZFN3hVQlpxMmJqdEFucS9ORFVBN2JlNEg4SDNpcEMrLytOS2xVcmNVaCtqNDhLNjdXSTB1MW02RmVRdWVCQTduMDZqODI1cnFEcXNhTHM5VGI3S0FIQXc4UG1yV2FOUEcya2pLZXJ4UEVmZWNpdmxGYXdwMlJXWnZ4clZ0bjNUVjJTQnh5Q0pDa1hzTkQwNWRDRXJWSFNKSXMrQmR0VFZOWTlBd3R5UG1ueWIwdjRtU1R6dldkdz09IiwiTUlJRFNqQ0NBaktnQXdJQkFnSVVSMzhtcTI2U2Yyc3pWVjJCZEc2V0VON2t1V1V3RFFZSktvWklodmNOQVFFTEJRQXdMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3SUJjTk1qUXhNakF4TURBd01EQXdXaGdQT1RrNU9URXlNekV5TXpVNU5UbGFNQ1l4SkRBaUJnTlZCQU1NRzFsMVltbGpieUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRUlnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTlkwV2I5b1BvUm9Lb1F5V1BhSnB6MTF2cldUZzZ6VHRtTmoyVm9LUm55dktHUnFwemI4M3c1bDZZQTk2VVlrWUJEUVAwaWxPMkRQZTZ3V3FWUjV6RGZSemRjSDhiaCtMN2RHR3ZhZTZoUlRaaGtGa0NwWERzNEhjY2tuckRmOEZDbEo3SGUzOUpmNDIvRzFRbTJ6ejlXV21yUFh0Z2lLL3gwNUdqc1FmR3VERzF6ZjVRVFVVaWU4bHd5bUszVGZkT3ZOZWVKQUFQZTJwbjdJdGZSYityVnJOV2lEemxSbjJ2Tm5aMndQbzR3SC9XSjZkaFhaRytyTVdUK2E2Qm9jZzFVZkl3NmtkdW5HNGJUcFp6c3ZhY0ZZeVIwbXBmK0RlT25wU1dBbXl3SldIdlRsZjJZWHhGeWVYY1RBQ2RRbGNNTkdKMlZoWlE0OHh0UDUvUkJQLzhrQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZDaHk0Mm9raXFjVFMxaXFhL0hSV2prQm40SC9NQjhHQTFVZEl3UVlNQmFBRk9xM1FwQ2VESHRrZXR0VWZBTzZmRTZmMktGaE1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQW4rUkhJUGJ0TUVETmRUMWc4SC9SaXRBa1VkTGdBdDF0V0dXbmxqOWtuYnY0LzRHbFg3QzlwNDVlZlBPOS9hWkw2T1YxWFJLQmk2S210Qlc1SzdudVlFbk14LzVCcUJTYkxUN3JoZHVDNDlUQmVNYjlQSGRYc1RsU1ZOWWVmcjFkR2lkcjRqMHhWQlFMYjFya25EQWJkV0R6S2Z2bmF5S084RnJ3ZTdIeDg0M01HL3JKK2MwWHJ1VXZiZlZUQ0hMaUlXaE03b05EaEw4eG9iNnhVbzlLTEtjU0wrSXRZc08zLzlXYjhROUdqc3FMNEZYc0RjRzFTYVloN0twZnVNbU9peHF6SlpPMm5JaWNQWVJnMUkyU3VpVWZZTzcwdG1kSGNibCtrU1FtU1l0N3JxNHZpSUxnMkd4M2o5cklUdVdUamJhVWFTU1F4Z09tTVNIdXl6TUFDIiwiTUlJRFNEQ0NBakNnQXdJQkFnSVVVY21NWHpSSUZPZ0dUSzBUYjNnRXVaWVprQkl3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRRG01NTViV1k5V1crdE9ZMHJJV0hsZGgrYU5hbm9DWkNGaDdHazNZWnJRbVBVdzBoa1NHNnFZSFF0UCtmWnlTMzNWRXJ2ZytCUXFubXVtZ05oZnhGcmt3RVpFTGVpZEJjQzhDNEFnNG5xcWlQV3B6c3ZJMTdOY3hZbEluTE5MRmNaWS8rZ09pTjZaT1RpaE81L3ZCWk1iajlyaWFBY3FsaVltTkdKUGdUY01HYUVBeU16RU1OeTJubTZFcCtwalA1YUY2Z2kyMXQvVVFGc3VKMWoyUmoveW5NL1NkUnQrZWNhbDVPWW90eEhrRmJMOXZ2djJBMk92NUlUWkNsdzRiT1M5bnB5cFFpbU9aNVFBWXl0bVlhUXBXbC9wTVl6NnpTajhScWtWRE5FSkdxTmZUS0EyaXZMWXdYNmxTdHRNUGFwZzBKODRsOVgwdm9WTi9GcFM0VkNWQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJRZ0tGQWhHNlJhVytoVHk1MmR4ZVQ4YkM5Nkh6QWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQVlNemdMckpMSXIwT292UW5BWnJSSUd1YWJpSFNVS1NtYkxSV3BSa1dlQXRzQ2hERUhwWGNKL2JnRE5LWVdvSHFROHhSVWpCNEN5ZXBZZXZjM1lsckc4bzd6SHhwZlZjYW9MNVNldUprekh4S240YlRhU3A5K012d2FtbnA2NGtaTWlOYkZMa25mUDlrWUtvUkhrTVdoZVJKMVVzUDF6NFNjbWtDZUlMZnNNczZ2cW92cWpXQ2xGc0pwQmNzbHVZSFdGN2JCSjFuNFJ3ZytBVEVvcFk0SWdHdjZadndjK0E5citBVDJocXBvU2tZb0FsK0FOWXdnc2xPZjlzSmUwVitUQTlZWS9VbGFCbVBQVGQwLy9yOXd2Y2VQV1prUGpLb0FDL3pVTmhmRGJoNExWOEdIczNseVgyWG9tTC9MTmM4Sll6eUlhREVoR1F2ZW9QaGgvdHIxZz09IiwiTUlJRFBqQ0NBaWFnQXdJQkFnSVVYemVpRURKRU9UdDE0RjVuMG82WmYvYkJ3aVV3RFFZSktvWklodmNOQVFFTkJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNWjYvVHhNOHJJVCtFYW9Qdkc4MW9udE1Pby8ybVEyUkJ3SkhTMFFaY3hWYU5YdmwxMkxVaEJaNUxtaUJTY0laZDFSbngxb2Q1ODVoKy9kaEs3aEVtN0pBQUxrS0t0czFmTzUzS0dOTFp1ano1aDN3R25jcjRoeUtGMEc3NGIvVTNLOWhFNW1HTkQ2enFZY2hDUkFIZnJZTVlSREY0WUwwWDRENW5HZHh2cHBBeTZua0VtdFdtTW53TzNpMFRBdWNzcmJFNDg1SHZHTTRyMFZwZ1ZkSnB2Z1FqaVRKQ1RJcStEMzVod3RUOFFESXYrbkd2cGN5aTV3Y0lmQ2t6eUNpbUp1a2hZeTZLb3FOTUtRRWRwTmlTT3ZXeURNVE10MWJ3Q3ZFenB3OTF1K21zVXQ0cmowZWZuTzlzMFpPd2R3TVJEbkg0eGdVbDVaTHdyclBrZkMxLzBDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01COEdBMVVkSXdRWU1CYUFGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFNd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkRRVUFBNElCQVFDM0lXL3NnQjlwWjhhcEpOanh1R29YK0ZrSUxrczB3TU5yZFhML2NvVXZzcmh6c3ZsNm1lUE1yYkdKQnlKMVhucXVCNXNnY1JFTkZ4ZFFGbWEzbWlvOFVwZjFvd00xWnJlWHJKMG1BREcyQnBscWJKbnhpeVlhK1IxMXJlSUZUV2VJaE1OY1pLc0RackZBeVB1RmpDV1NRdkptTldlOW1GUllGZ05oWEpLa1hJYjVIMVhnRURsd2llZFlSTTdWb2xCTmxsZDZwUkZLbFg4dXN0Nk9UTU9lQURsMnhORjBtMUxUaFNkZXVYdkR5QzFnOStJTGZ6M1M2T0lZZ2MzaXJvUmNGRDM1NGc3cktmdTY3cUZBdzlnQzR5aTB4QlRQclk5NXJoNC9IcWFVWUNBL0w4bGRSazZIN1hrMzVEK1dWcG1xMlNoL3hUNUhpRnVoZjR3SmIwYksiLCJNSUlEUnpDQ0FqR2dBd0lCQWdJVWV4OW5UOXZ3Wk5YUzQ4M0xkaVlHZncyU2pTb3dDd1lKS29aSWh2Y05BUUVMTUM0eExEQXFCZ05WQkFNTUkxbDFZbWxqYnlCQmRIUmxjM1JoZEdsdmJpQkpiblJsY20xbFpHbGhkR1VnUWlBeE1DQVhEVEkxTURnd01UQXdNREF3TUZvWUR6azVPVGt4TWpNeE1qTTFPVFU1V2pBbk1TVXdJd1lEVlFRRERCeFpkV0pwWTI4Z1JrbEVUeUJCZEhSbGMzUmhkR2x2YmlCQ01pQXhNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXUxTWV2bnk5ZHlPOVpVQzM5U29NaExjUi9EWHJ0Ri9jaU0xMnRjaXkyRVhBWjZNa3JpdlZ0Q2ZFVk05WDZJU1RFbkJQNnVTWVlvdjZwcHY2TzZKaDJOSG1ZbTR3K0puUzRWbkNQVTdtSEFNZlZJMk1HVFRNVk9ldzB4VXNHN3NJU0lrSURVQm11azhZSzljNXppYzkrdkZRR0xJa3NkWE81aVZGSWdORzUzY0dYRDRaTFpvQVBpdTBQRW96eEFxWUlhSTRneEtoT0EzUzgvVzhtSVdzdTZvZnlqNEd2a0ZHNlo3a3lGMzEwN1A3bXdGSExySTNFTmFQV01PRmNUYUdhMGR3Ky92VlJ3alJjRVpCVnN1dVQvODdja1NzMGE1cGt0M3ZaQmxhWWVUOHB6U3JlVjdtb3djSU05MEwyaWFBVGxQMG54bWFFNm5PeVRib2pGVmwyd0lEQVFBQm8yWXdaREFkQmdOVkhRNEVGZ1FVU1hFaDNzYTNidER1cm00TU0vQzdTMWxSdXVZd0h3WURWUjBqQkJnd0ZvQVU2cmRDa0o0TWUyUjYyMVI4QTdwOFRwL1lvV0V3RWdZRFZSMFRBUUgvQkFnd0JnRUIvd0lCQURBT0JnTlZIUThCQWY4RUJBTUNBWVl3Q3dZSktvWklodmNOQVFFTEE0SUJBUUI1R2MzaGFmdHA3aEtzRVpzbytpL1o1blJ1cWRtekcyV0NsVW9SVXFiYVB5Z2xuSkRqS1Iva2ZnT2w2aWJiRi96dGhtM0ttWFE3SGNESVAyeE1kRzdVMkwyaW1iSlFIcVBmL2gySHFvamI0clpndWUrNlc0a3RTUjVlbFI5TDFyWXFFL1NHWU00aUVLb1ZRU3Y3UlQxcnhJZVdpS3N3L1Z4eGkvUU9uc3gzRjd4ODBDQ1lnQjRFM3lReDhWVFc0NDBoVEV3VEExZU1IT2l4MzJ0UHR5eUhJYThQVlZJZlZwSFFKQmFNVnZ2NTA4VUVqd2tiVTJybmpmem9TVE5TOUE1alVROG1CU3ZlOTVyakIwZG85OEVVK0R4ZEJxWDIrSDZpNXdsSUNGZ3poZHpjc25lOWhHS1Q2bHpUWDRjSWRKc3JZMit4bGVLMEZGUXk2bEdFVkxFZSIsIk1JSURTakNDQWpLZ0F3SUJBZ0lVVG5iYkdJUjJOSHZ6cUlLRkFlUXdHMVhCaXMwd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JCSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVFZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU9zWGozazA0QmFuNFRZZHRaS3FEL09QSnh5RHlhUG1DQlVGVWlhWklnVHRlWm5qM1gyNURoZ3BaWlhzQzREMHlkSWNybEE2d05VSW5PUkwvTDl6QmJURUlNQVZNR282ZzdVS0FtYjJNRjZBSGJuaFlKZDllaWt1cFZOV1NoSE5ZTmM0R0JkTzFZTjZBZlVxdkpoSGJlM1Y0U05NUG1CUkVLSlBWejdUaHdnbWdnVGU4V3MySzAvd3NxdjJ3U0U3cGJDQnNVWmhJWDUxYlpNM3BxRHdKUFRtUkZFdnQwLzZ0RzVlTzhGM2oxNE9YcWZFaG1qbjFWdnhLRFlRT0xaQXhDd3dnQzBQNENkZld2M3k4UFNSOEkzNTRoTzFZK0d6Tmp2SXFYMzhOS0x5d3VJWUhGZXJPeE5seEVNQnZGaFlCdVJ1WUFra2dVYVBxTjZVQmhzSUxyc0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ0NvUkhoaXlObmJuWFJXSUw2WkJYb0JYOVlUTUI4R0ExVWRJd1FZTUJhQUZDQW9VQ0VicEZwYjZGUExuWjNGNVB4c0wzb2ZNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUNRRmFmSkkxLzVXZzlDRUVpbUUxUlA1NFJnUXdUTlRPT1FzTEFDVGUrckl0bEZRekM5WkRoclY4Mjh5WDdqenkrQUFzcDNpeks3VDF0aDJkbDdtK3R1MHN3MlBhL29sYzAybnQ2UHlJdzM0OGdhSHpoSTErMEtFNDVxeHZGRGVMMmxNeGJQZkNZdnlFRWFZemppUUVMVTU5NTFwWEdXeUtNYS80Zkx0TytaS09YaE11VmVxNHJYRFBJNTRXNkpIT2lBYWlLZGl3KzVlM2Mya3QvakZJUXRNNnZNWGc5TE5GemRqRVROdDIwVlg5UWV2UnBGWmZ1Y01HOXdDYVFEb0ZsUHpwVE1KS2hQZXYvaW1KbVpZaEtmcjBsTGNlbXRxakl4TEFvcVpkT1lmSEJnNit2QWNkUEkvaWF1R3BVQXY3WCtVS05tRHdqWjJCYUg0c0x3aEIybSJdLCJpY29uIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwiaWNvbkRhcmsiOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJwcm92aWRlckxvZ29MaWdodCI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsInByb3ZpZGVyTG9nb0RhcmsiOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xX1BSRSIsIkZJRE9fMl8xIiwiRklET18yXzIiLCJGSURPXzJfMyJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJsYXJnZUJsb2JLZXkiLCJjcmVkQmxvYiIsIm1pblBpbkxlbmd0aCIsImhtYWMtc2VjcmV0LW1jIiwidGhpcmRQYXJ0eVBheW1lbnQiLCJwcmV2aWV3U2lnbiJdLCJhYWd1aWQiOiI3ZGFiODVhNWQxNmQ0ZWFmYTdlZjRjMTM4NWIxNTFjNSIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImxhcmdlQmxvYnMiOnRydWUsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsInBlckNyZWRNZ210Uk8iOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjp0cnVlLCJhbHdheXNVdiI6ZmFsc2V9LCJtYXhNc2dTaXplIjoxNTM2LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjgsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4LCJ0cmFuc3BvcnRzIjpbIm5mYyIsInVzYiIsInNtYXJ0LWNhcmQiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotOH0seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTM1fV0sIm1heFNlcmlhbGl6ZWRMYXJnZUJsb2JBcnJheSI6NDA5NiwiZm9yY2VQSU5DaGFuZ2UiOmZhbHNlLCJtaW5QSU5MZW5ndGgiOjQsImZpcm13YXJlVmVyc2lvbiI6MzI5NzI4LCJtYXhDcmVkQmxvYkxlbmd0aCI6MzIsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjoxLCJyZW1haW5pbmdEaXNjb3ZlcmFibGVDcmVkZW50aWFscyI6MTAwLCJsb25nVG91Y2hGb3JSZXNldCI6ZmFsc2UsImVuY0lkZW50aWZpZXIiOiIiLCJ0cmFuc3BvcnRzRm9yUmVzZXQiOlsiVVNCIiwiTkZDIiwic21hcnQtY2FyZCJdLCJwaW5Db21wbGV4aXR5UG9saWN5IjpmYWxzZSwibWF4UElOTGVuZ3RoIjo2MywiZW5jQ3JlZFN0b3JlU3RhdGUiOiIiLCJhdXRoZW50aWNhdG9yQ29uZmlnQ29tbWFuZHMiOlsyLDNdfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjYtMDQtMjUiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NzI4LCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ill1YmlLZXkgNSBTZXJpZXMgd2l0aCBORkMgKENvbnN1bWVyIFByb2ZpbGUpIEtWWlI1Ny0yIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNjA0MjUwMTYiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblByb2ZpbGVzIjpbImNvbnN1bWVyIl0sImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjYtMDQtMjUiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NzI4fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI2LTA1LTAxIn0seyJhYWd1aWQiOiI1MTZkMzk2OS01YTU3LTU2NTEtNTk1OC00ZTdhNDk0MzQxNjciLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjUxNmQzOTY5LTVhNTctNTY1MS01OTU4LTRlN2E0OTQzNDE2NyIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJTbWFydERpc3BsYXllciBCb2JlZVBhc3MgRklETzIgQXV0aGVudGljYXRvciJ9LCJkZXNjcmlwdGlvbiI6IlNtYXJ0RGlzcGxheWVyIEJvYmVlUGFzcyBGSURPMiBBdXRoZW50aWNhdG9yIiwiYWx0ZXJuYXRpdmVEZXNjcmlwdGlvbnMiOnsiemgtVFciOiJTbWFydERpc3BsYXllciBCb2JlZVBhc3MgRklETzIg6Lqr5Lu96amX6K2J5ZmoIn0sImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIiwiYmx1ZXRvb3RoIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlCdmpDQ0FXT2dBd0lCQWdJVVBXSlhmMlY3RkF0Yzg3NWRFNGpQYWJpNVlCUXdDZ1lJS29aSXpqMEVBd0l3UlRFTE1Ba0dBMVVFQmhNQ1ZGY3hJakFnQmdOVkJBb01HVk50WVhKMFJHbHpjR3hoZVdWeUlGUmxZMmh1YjJ4dloza3hFakFRQmdOVkJBTU1DVUp2WW1WbFVHRnpjekFnRncweU1qQXlNVFF3T0RNM016WmFHQTh5TURVeU1ESXdOekE0TXpjek5sb3dSVEVMTUFrR0ExVUVCaE1DVkZjeElqQWdCZ05WQkFvTUdWTnRZWEowUkdsemNHeGhlV1Z5SUZSbFkyaHViMnh2WjNreEVqQVFCZ05WQkFNTUNVSnZZbVZsVUdGemN6QlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJLSFZxYkJCRFUwVlhKVVdWSHk3UzZvdnl3WlR4OGxhYkJ6bUI1NGdGZzY4SXJ5UDVwaENNVVBJSXZIbVlGNVYrbGFvRFV3MjQ3cUk2M2NmZUdqV3V4NmpMekF0TUF3R0ExVWRFd1FGTUFNQkFmOHdIUVlEVlIwT0JCWUVGTUtEUm1Zam1WYnVzUFhIbUZuWWdsRlE1dldwTUFvR0NDcUdTTTQ5QkFNQ0Ewa0FNRVlDSVFDc1FESnZCNUZjYTRyeVBPVlorTUJBSVp6b3crT1Y3VC93Qko5OTA2SFpaQUloQU1WYlN3ZDJqTm9IbDNTUnlocmNmUUpxRG81MHZ0S0YrSmhnMDV2SG1PcDIiXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBU2dBQUFFb0NBSUFBQUJrWmZ0T0FBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFGaVVBQUJZbEFVbFNKUEFBQURhY1NVUkJWSGhlN1owRmxCWEh0dmQ1NjkzdlN1NTczN3IzNXNaRGNNdmc3aEpDSUVnSTdqSzRETzQyQkVod2R4OElCRW1RWU1HRHU5dGdDUTRKN2d6Tzl6dW5hbnI2ZFBjNUROd1ZLbC9XL3EyYVdlZDBWMWRYVis5LzdWMWQzWDBTUEJNRTRaVWp3aE1FQTRqd0JNRUFJanhCTUlBSVR4QU1JTUlUQkFPSThBVEJBQ0k4UVRDQUNFOFFEQ0RDRXdRRGlQQUV3UUFpUEVFd2dBaFBFQXdnd2hNRUE0andCTUVBSWp4Qk1JQUlUeEFNSU1JVEJBT0k4QVRCQUNJOFFUQ0FDRThRRENEQ0V3UURpUEFFd1FBaVBFRXdnQWhQRUF3Z3doTUVBNGp3Qk1FQUlqeEJNSUFJVHhBTUlNSVRCQU9JOEFUQkFDSThRVENBQ0U4UURDRENFd1FEaVBBRXdRQWlQRUV3Z0FoUEVBd2d3aE1FQTRqd0JNRUFJanhCTUlBSVR4QU1JTUlUQkFPSThBVEJBQ0k4UVRDQUNFOFFEQ0RDRXdRRGlQQUV3UUFpUEVFd2dBaFBFQXdnd2hNRUE0andCTUVBSWp4Qk1JQUlUeEFNSU1JVEJBT0k4QVRCQUNJOFFUQ0FDRThRRENEQ0V3UURpUEFFd1FBaVBFRXdnQWhQRUF3Z3doTUVBNGp3Qk1FQUlqeEJNSUFJVHhBTUlNSVRCQU9JOEFUQkFDSThRVENBQ0U4UURDRENFd1FEaVBBRXdRQWlQRUV3Z0FoUEVBd2d3aE1FQTRqd0JNRUFJanhCTUlBSVR4QU1JTUlUQkFPSThBVEJBQ0k4UVRDQUNFOFFEQ0RDRXdRRGlQQUV3UUFpUEVFd2dBaFBFQXdnd2hNRUE0andCTUVBSWp4Qk1JQUlUeEFNSU1JVEJBT0k4QVRCQUNJOFFUQ0FDRThRRENEQ0V3UURpUEFFd1FBaVBFRXdnQWhQRUF3Z3doTUVBNGp3Qk1FQUlqeEJNSUFJVHhBTUlNSVRCQU9JOEFUQkFDSThRVENBQ0U4UURDRENFd1FEaVBBRXdRQWlQRUV3Z0FoUEVBd2d3aE1FQTRqd0JNRUFJanhCTUlBSVR4QU1FRXA0Qncvc0h6SndZS1d5WlhKbnk1by9WMDZWOG1UUFZxSE01OTI3ZGxtOGNPR1RKMDkwVmhkTkdqWm8wNko1MjVZdDdLbEp3L3JyMXF6Vk9lTEh5R0ZEVzBRMGNaUlRwMmFOcDgrZTZoelBvMkRlUE5UWnFyOUthWklsZmZUd2tjNFJuTUVEQnJTSWFPcll1eU8xYkJZeGZPaVFCZlBtblR0N1ZtL21ZdkdDQlUwYk5YUnMrS0twUmRNbUEvdjIxU1UrajE1ZmRLZGliTlcwWVlQdjU4M1RTMy9mVFA5NmFyUEdqYWd6LzZkTm5hcVgva0h4RnQ3K2ZmdnlaTS82WWZKa1dUT2t0NnRPSmV3NGU2YU1HY00rVEpidy9jcmx5aDAvZGt4dkZzdmp4NC9EVXFiSWtTbGp6c3laN0NuamgybGFOMit1TThXRHZYdDJvNUFjZ1lXdzY3QVV5ZU1wdktpSkV6TjhtTVpSZjFLR05LbVhMZjFCWndwTzBjS0ZzcVpQWjkrN1o2S1ZNb1Y5bUNaNU1nNXd4dlJwZW1NYnJabzFZNVZqcXhkTjZkT2s3dGE1a3k0eEpESDNZNG9VeUUrdDJDcDEwaVNiTm03VUszN2YxQSt2blNsdEdIWG03SFJvMjFZdi9ZUGlJYnl1blRvbVQ1VFFyVGZQbEROTDVoU0pQcWhlcGJMZTJNKytmWHN4eEh3NWN6Z3lLOCtqTThXRHNxVktVcjY5QkZLdXJGbXFWaWl2YzRUazJ0V3I5QTU1YzJSM2xFREtsakZEbDQ0ZGRMNGczTDU5dTBDZTNHNXZHU0t4ci9ScFVtWExsTkhoL1NxVUtVMjFIWmxmTkdHVWt5YU0xeVdHNU95Wk0xYjcweDBjMkw5ZnI0Z0YzMUkvUEh6NjExL3I3NzhQeXBmK1RMVlN4ckEwLzc5NDZaZkdLYnl1SFR2Z3JOeWFDWkhRUnFYeTVmVDJmdVo4TzVzTzNwRk5KVHpZc1dOSGRiNlEwUFRwVTZkeTE0UnpVN0ZzR1owcEpQaUhMT25UT1RaWGlXNmx5RWNGUXp2TjY5ZXU1Yy90MDVKajIrY21DaytWSlBIRzlldFVPZmZ1M1N0U3FFQ2UrSFZrSVJJQnlLbFRwMVNab1RsMzVzeUhLWkt6Q2IzR0p4OFZ1bmYzcmw3aHAzM2JOcmhCQWdjcTJiMUxGNzNVTkE4ZTNLZG5VYTJkTGxYS0ZjdVc2UlYvVUFLRUZ6VnBZdXBrU2EwemJTV2Fnd0FnYzlvd0ZiMDR4SkExUTdxK1gzNmxpL0RUcEVGOXpxczlqNVVvWk5MNGVIWGJqTTA4dlM3Q0sxT3FwTTRVbk9oRGg5S21DdFdEWUhZWGYvMVY1L1ppL2JxMWFWT21jR3dWejBUTlNhcWNXemR2ZnBRLzN3dDVUbmZpRk9US2x1WGl4WXVxek5CTW1qQU9JMllyNnZCcGtjSVA3dC9YSy95OVFPRUMrVlhEOHA5R1pvbGVaNVRIVHg3UkhhZ2p6WjA5MjVYTGwvV0tQeWdCd3Z2ZzdiZmNsb3JUeUp3dWJhM3FWV2RNbTlhemUyUzkycldTdnY4ZWZWTDJqQmxVWnM3eDExRlJ1Z2cvcFl0L0dpeXlZc0RXdUY0OW5TODRVeWRQOWd4V1NZaC9RTi9lT2w5d3FsZXF5TDRjMjlvVFVlaXNHVE4wYmk4WUJMckhoeHgxaXNTSlZFcVpKREdqVFE1ZjJiRWowVzR0bWphaG5EMjdkcjd6K2o4SnlLME5yZVFPcEVrVTZNaEdTcHJ3UFE3OGJxRHZDc2FvRWNPenBFdExVWlJmclZKRnZkVFBreWRQaW43OGtkb3Y1Nmh3L254NmhXa1dMMXpBMEk1YUlidzhPYkxkdkhGRHIvaURFaWU4UWYzN3E3TmxUMWhleDNZZXc5dzllM2EzYnRFOFdjTDNHU3lsVFpWeTM5NDllb1VmenhEUlNvbmZlMWZuQ3c0bHFLakRuYkMvM3IxNjZIeEJRRFBwUXRhQmhFOXUyYXlwM3NDTFByMTZaZzJNVkZGZHg3WnQ5R28vWjA2Zm1ob1ZWVEJQYnZvbWUwNFNlNmQ3dW43OW1zN3FSZTBhMVIzYVEzWGZ6cDZwVjc4czRUVnFxRTZIczlPNVEzdTlOSmFWSzVZbi95QWhnV3VTOTk1ZHZYS2xYdnFmTVh2V3pMZi8rUTlmQi9FK0hVUTZ2ZlJGV0x0bXRSSWV2VmpoZkhuMTBqOHVjY0lybURlM28rZDI5NWR1V2pXUCtNZHJmOU5mL0RBT3dYcENHRDJTMkxsOXU4N3RSYy9JYm00N3RoTEM2eEhaVFdjTlFySENId1Z6dVZiaVlEOHBWRkJ2NEFVQmM0N01BUUV6eHpWOW12Y0ZpWGF0V2hKRjJ6T1Q2TFptejV5bGM3aUl1UjlUOUtOQ2pqYi9NRVd5OCtmTzZ4d3ZTNjFxMVpTZWFjWXhvMGJxcFRZZVBIeDQ4TUNCZVByUCtEQjg2QkRWYStmT211WFRJaC9ycFM5Q3AzYnRzbVZNVHdsMEdYVnIxdEJMLzdqRUNZOWUwS0VXRkxKdjcxNjlPampyMWdaTXpSRy9CYnV5b2hMSzZkNDE2SmorNHNWZmNSUWhkSXMxLzdCb2tjN3R4Y1J4WTNHWWpxMDhVNnFrU2RpZDNzeEY4WStMT0ZUQmNjMzU3bHU5Mm9WYlJUalZSdlhyNnRVdTd0eTVYYVJBZnZ2WWo2TW13RDUzN3B6TzhWTGNpN2xyMVlRenVHM0xGcjNpdDZSdHE1YUVBK3dSSHh2UE9ROEg3VnUxVXRjRlFwdkhId1l0dkwxN2RvZTVMaVRFVTNnT3VuYnFTT3M3aXJJbmJLSlUwVTkwYmhldG16ZlBsc0hYOHdWTDZkT2syckJPWHpEMEpGdkdqTzRyR2V6VUxXYWZReGpwNFJBVUh4Y280Q2duVGJLa3QyL2QxcXRkOU9uVnkxRnpMS201ZjVqbnlkN2R1NG4zN1BtcEpPN2l3WU80YXlFdkFjRXQzbDRGNm1tU0p6dm9ta3Y0TGFoWXRrd3V2NDhsT1ArcTV4ZDY2WXRRdGxSSkZhUmtERXV6NEk4K2x3QnhIaTkxc3FRTzA0eFBxT21tMUtmRm5odm1wVWowd1dPdnUxNTI3OW9abGlKNUNIZEhRbmhyZi94UmIrQ2lVN3UyN3BFcTlhbFE1dk1DdVhNNVNpYXFhUkFlcnJjTTVPcVZLL2x5NWJDUE01VTd1aEY4ME4rbVJRdkh0ZHpRd3R1MFlhUERNMk83bFFNblp1TFBpUk0vSHoxNmhQK3JWNjFNN3g4c2VjNGx4SjlMbHk0ZU9SejkwL0hqK250SXlwVXFxWHdzUjNUa3lHRzE4TkRCZzlHSERxblBvWG44K0xHcU1QOWZkQzdoME1FRHg0NGVqWTZPMTQ3K0U0ak1EMGRIay9UMy80dzQ0U1Y2NTIyM3hSUFhkV2pUV3VlSUg2R3ZyS2lVTWV6RDJUTTlMaUdVTGxIY2NiSEJuZEttU3JsNzUwNjlRU0RYcmwzRGlUbXV5dkExYmFvVXJQWDF5b0U5QW1lYXhGbFhtOXRoRk9xNHJNcm9oVjQ1eE5RZkEwdGxmRlpDZUkwYjFOZXJYWXdZTnRReGxLVWpxRi9idXlQd0JNc21yaXVZTjAreWhPL1RZUkd6a0t3NDMrYy9QdzZZUzRBRCsvZVBIVFZ5OHNRSkU4YU5uVE43dGw1cTQ4S0Y4NDNxMTB1VFBDbnUzVmRnaXVSSjMzK3ZkTW5pUzRLSDkzUlNLUk1uc25aYXFWeFpiQ0JGNGtTcVB0U3RaTEdpMzg4UDVjUWVQbmlZTWtsaU51ZGs1YzZlalFMMUNpK3VYNzgrYXZqd2FoVXJKSDczSGZhcjlrSktuVFFKVlMxYXVCQnhyOG81Wk9CQWpuUXl4enA2OUM4WExxaUZicTVldlRKNnhBaVZjL1RJRVpjRFp6SWVQWHJZb1cwYnVnTUdKbXBIN09XelQ0c3hTTlk1WE96Y3NXUHM2Rkdxd0NFREI2aUZONjdmYUZBbnZIYjFhcVRXTFpySENZOHZqZzViSlVTQ1NaMDhjVUxuQzhucFV5Y3p1cTZzMEpxT0pka3paV2pUc29YZUpwWjVjK2JFUjdTMHI5N0FSYVA2OWQxUkx2VWZObmdRYTRjUEdleStaa093ZC9pd1J4KzJiY3RXSW0xN1R0eFJwWEpCSis2akprNVFmc2FlTXFjTkd6ZG10TTdob2tQYjFvN2FVajFVb1ZlSFpNM3FWVVRDQkNrRXQ4R201bjBCUytWS2VvTllSZ3diZ29sblNodEcvMVhpa3lKNmFTeFlLdGFNR1RqT0FoMFcrZlBueXJGaTJWS2QxY2JwVTZmQ1V2cm02MVZDZXg2YnAweFJNRS91bXpkdjZtMEMyYlJ4bzJwdFRDVkhsc3pCN25yZHQzZFBtWklsQ0pkb3FHQWROSlV2bERlM3lzOGVzU2dPTnRrSDd5K1kvNzFhNktabFJBUm1RTFlNYVZLblM1TktML1dEd2o5NCt5MU9rNzAzNStnd2h1U0pQdWdSR2FuekJUSjIxQ2g2QkFwRXJpV0sraHFaR08yOU4vNU4zWEw2Ny83alE1endWcTFZUVNmbmFmYzBIUDJXNTd5Q2d4blRwem11ckZCakFwNzhPWFBZUzFaQmhkNG1sdnk1Y3prOGhtZENlRStmZWppZXc5R0hPSG1PK3JNajYrcjJ0aTFiTW9TbGNXVGdGSTRaN1dIclBiL283cDVMNk5TdW5WNGRTUDgrZlR5N2pKUkpFaDA1Y2tSbmNsRzVYRm1IOVhDcW9pWk4xS3VERTE2akdvMWd0Ulg3OWQzZWtDNHRtL05mdFMwSmMzSGZGdGVnVGgwMTA1QTFRL3ArdlFOdWUxaStkR255RHhLcWJVbVVRN0gyR0lIYUVzWVRndW9OWWxtNlpJbDEwam5kVkVONUJzVEdaNnMrYkk2QkhmRUsxVmF2WG1YTkpSUXBVRUF2RFFUem8zcHFKS2tTbVRsRzkxRjNhcTlQVTR1bVRaUXY0ZHkxYWVGOWsvRDFhOWZ3WU9TaEdUbUs3MmJIWFlWdTNhelpoeW4wSUp6anlwSStIZnZpdjlvWCtWbEwyS0p6MjJqU3NLSGViNllNU2pXb1RwVmpwVGpoUWVYeTVkMERKQ3V4Uzg3M3JwMDdkRzR2QnZiclN6YjdWcHptTGgzYlUwdUhYWElPR0pQb3pmdzN6WEJVamp3Y29XTUppUzdBYzN6NGNZSDhqa2lTUk5Pc1c3Tkc1MERiT2JYbXJlUWI1dFgxaU82NmRPcmdjRWMwWmJkT25jNmZPOGVJZ3BIUHRxMWJvaVpPYk5ha01Xcm54THZyU2NrVnluNnVpM01SYkM3aHd2UG1FajR2V2R5YXQvQlplZGlIOU5iaE5hcVBIenQyeXFSSlgwZEZsU3o2aVRwR2F1WDJuMVVxVkZCcVorMVFmeUJnWVEzT09SYThOMzZEMEtoS3hmSzRDL2JDdmlpMllPNWMxNjVkMVJ2NGlibDNqOEZ6bnV5K0ExRjVwa1ZGblRwMTh2aXhvOGVPSFowMmRRck5hTFVrc3VFMFBYcmtmQzRFNjFSNXFBQStUUytOaGJGQXFXTEZMRzFUUFd3TUVSSklFd1JPbXpLRm95NWhPMnJpUnJYaHJCbmZVSE1XK3ZSYzBGdlBrVjI2MEFlUmg4M0pwcGY2N211UHNFSWVUbjJXOUw3R25CbzFlZmlRSVhpSUhINWRVUlA4M3BuVHp2djQ2dFNxcVJxWmVpNWF1QUREcG1YSVRFZG1SU2dCd2dNT1J0WERNN0U5anI1RG0xWTZ0NHVhVlNvNWVuRzg3YThYZm5HUHJ4ejNqaEhKVUxnOUF3M0IyS0JRM2p4Mm02WVFkL2dFeTVZc1lUaHF6Nmt5TzZJcHdtdlYzMXVKbmRMWFBuendRT2VJcGFocndFYmlCS2krbk1SWm9VRlo0cWkyU2l4TWxTUXhLdFhGdWJoejV6WW1xR3hGSlNwUGdTRTJnYzlMRkxmNk5RNkVRNTdzdW0zNjB5SWZxNXBUdyszYkF1WVM3ajk0UUlPb3RUUzQzZmxjT0g5QmpkT29CZ2JnZU1aaTFqZmZFTEhUVUFWeTViUUw3OWF0VzdteVpzNlpSVGNwNHZtaWExZTl6a2JkbWpXc0RwMXl2dWptbkliMXpVYjRUWmxkOSt6dWpOOHFsaTJMM2F2TnFYenFaRWtHdUI2UEtsMnloRG91dW94RkN4YXFoUXpER042emtOTkIzVHlmWXVPZ1dLc2EzM0ozRzlhdnQwYXRWS2xzcVZKcXVRV2RwckpuaW0zWFdnOHBMWlRTMU9hY0x6NlRHWWRSTDd4MjM2KytJZ0RHTnB6Q2c2SWZGYWIyRGlPMkozb1JqRWJuRGlRc1ZjcDhnWWJJT09UKy9mc2pZaWRZcllRK0s4YytaQkRSdUtGYjdZek85KzdablRkN051c1lTQnhBeFhKbDFWWjJxSTliSnh6cW1UT25kUTQvQ3hmTVZ5R05QV0dDbXpkdDBqbGljYWppaFJLSFJzdHUycmhCbCtYRm5xQnpDYzR1d0tKbHN3aXNWbVdtWHk5YnF1VERSdy8xdWxnWVJIMlVQNitxT2VVZk9oaHdBZURDK2ZNWjArb3JScXpkczNPWFh2SHMyYUlGQ3pKODZHc1pYd3VYOFhiVUEvcjFwZlV1WDc2a3YvdWZ1a1RlVmtQNTV4SjY2bldCV0xjMGtKa1A5Ky9INkJWK3JMa0VUTllSYlBlSTdHb05udWxyTUlacjF6eHVCa3FleUJja3ExN0RmaGMrTnFDV0l3RDNKZFpCL2Z1cDhJRmlDWXoxMG1mUENNZVUxVkVyTkthWDJyaDA2UktuV0pXTVJQWFNXSENEckxJU1ZTb2VlRlBCdVhQblBJUUhnd2YyVC9MK3UyNVR0aEpDZDJ2dnhNOC9FUS9ZRlV2dGFVcFdiZG0weVhHUmtFUnN6YXJMbHkrN0IwZ1kxckRCUXhoTzRKcnRxMmlJc3FVLzgrOHRqdkZqeDdndmJIQzA3VnM3UFRNMWRQaW9QSGlHakJsNjlPK25jL2h4enlYRUo1R2ZzUVRuakZOMTVuU0E0TjFzMnZoaWN3a2JONnpINkZWVFlOOVZLMVRRS3dJNWNlSUVGU0FQOWwwZ1Q2NXJWd1BDd2dzWExpaTFzN1pJZ2Z4NFhiM0NKanlmL2o4dXJKZTZPSGYyelBYcjE5WG4vZnYydmZ2djEra09xbFlvcjdTWExuWEtZUGNrL2Z6VFQ2cGkvbXlwNXMrYnExY1FTVDZ5elNXa1RyVnFWZHhkYktkT25WSURNQktubnNQM0hONFQyWWI1bjhiZ0ZHQXdmTlVybmoyamJtcFlTT3N0WHJoQUw0MkZuYXI5WW0rRCt2ZFhDeGZNbTZmTWlkMVJuNjFCN2tBbzkxa3BWU1ZLdGw5bTM3dG5qM0t6S3RGWkZQL0VZOWJhVzNodzd0eFpEaU9FNitQMGx5c2Q0SUtYTGxsTWwyelBUOTlmdGFJMkVlSWloeWxUNDMxNzlqREVVbUdHbGNoR083SUpMZVZRRklMdjFxbWpLbER4OE9FRHUyZFhpYTkwWUhmdWVreDI0eEE0TzlueTVNcVlMM2ZxQW5rL3laNnRVYXF3cUp6NXp4YjUvRmppdExzVEpMald1dlB1WTBmZDNVVG9SS0VFeG9SSk83ZUhHZ05iakJqcU5aZFFKK2hjUW9taVJWUU16OGtPRm03QW10V3JWWXRoVHgvbHorZTQxWGhLMUNScnpFUHZ3RGhUcjNqMjdQejU4d3dpVkUweXB3dnIxTTU1aDZlYnNwK1ZZbGpJQitKQTJvckUyUTgyMDROZWloUXFvTHB5K3NRdmU4Uk5zdHZuRWhnRm5Ud1pkLzJjUWFZYUdyQUthd2tXaDIvWXNFNzFZaHgxM3V6WjlWSS9XQXMyd3lyNlJHdWFRVEhudTIvVlZoU3U3RTFCdjVQYjczNXA2a3BlNFpXaWZuaHRkVVpvVXNaK2V1bXpad2pWNmxJcG1UYlJLd0lKS2p6RjFLaW94TysrWTcrVVpFOTBuL1plcEgvZlB0WUlSQ1ZPQ1JhbTF0YXNVcGxtdGErbG1Vb1ZLOHJKY0pnNHc4TFpzM3l6Zkw0NzFnT3ZrWExPK256WlN4V29ZSGp0MkNtSm94MCtkSWpPRVVpWDRjUHlwa3Y3WmZJMGk5NUk5TXRmM2lDZC9ldWJQLy9wWHdjVC9IVi9nZ1NrNjUxNzdqd2NUVmZuS0pNenB4NFVvT2ZPR0piR0hRNVF0eTRkQXpxRkVIUm84d0p6Q2N1WExsWFAxOUZROURMdVIvNHRwazZaVEFaeVloTzFxbFhSUzJNWk4zcVVVanRySzFWd2V0ZUtaY29vS3lmUmdNVUtGNzU3TCtqa080RTBSZkhoM3QyN3lwVXhLTWlmMitsajdVUjI2YXdPR1hNcVg3cTBYaG80bDhBcVMxMVhyMTVSZ1NLSlhqN0VnOHZXUkJFbmhaaFdML1V6ODV2cHFxK2hjQVk3ZXFtZm5Ga3phM2VYTm16d0FPM3VIajk1YkE4VTBaNDY2WTVFZUtsVVI2TDhiMngzOEk0Wk5WSlZocE5GWnhFMTBmc3k5WE9FQjNmdjNpMVZyRmpXREU3akpsR3Q0cC9FQmEvVmtWYWdSSWs4NTg3NVRxMmRQM2VPUTBVa2p0eWhPdHJPNnRHWHV4N01jWFNXcDArZDR0Z2NKVkFtMlhRT0d6Rzc5LzNTdk1PNWZ5Vys4S2ZYVC8vdHpaOWVlK3Z3MzkrTy9zdS9EeWI0eTRFRWZ6cFRzdUt0UlhxU3FrZGtwT040VVoxMW0zOU1UTXlDK2ZNTDVNbnRjTlFrdXJxV0VhR2VlTER3bkV1WUdqVkpydzZrYVlNR2FsODB1Q1BLY0VEZ3AzTHl2MGw5NTl4OWd6cTFsYlFRQUIyV1hob0xJMnA2VWd4VTFZZnE0UWZtemRXbno4R3d3WVAyN1BFOWtqTG4yMW5xZW1PZWJGbUxoTHpwdkZQN2RrcDRuT0tpaGVJR1RxdFgyZVlTYk5jZUo0N1RUeFZTSlU2bzNSTTY2TmY3S3pLUWsvS3R1UVRGd1lNSHJDZzBhOFlNVnB5TVo3YVdNOGhYQzJIWHJoMzAreXlQZjNJSXo3cGxrc01wbERlUFh1cmkrY0pUbENqNmlTck9rWWhQcklQaFNCd2FDRXVad3JybjZOVEpVMVRSa2NHZFVpVk5zbjM3TnJWSnJ5KzZxd2ExRW4wSjNadGFDeFhMZkc1MTBsYkNldGF2aTd0dk8yYjMzbCthdHp2MDMvL2NuK0MvRGliNG4raS92WG40Zjk0aFJmLzVkWlljK1hmaTYyUGo0Z1FGNGI1RGVIU1c3aG1iWWg4WGRvaUh4SmdiUzlJNWduQS9KdVlUMTF3Q3AvL2d3WU02aDQxYnQyNTlsRTlmTDhHM0R4MDBVSy93Z3JoZE5RZ05OV0hzV0wwMGxpcmx5NmtLczNhazF3VFVndmx6T1dXVzl2aUFwNldQMEt1OW1QNzFWQ1VQd2pPTVJDLzF3bTZSSCtXTGV3NHcyRnhDdzdwNnlwSGxuNWNvcnBkNndiQ2ZQT1RrdU1hTTFITUpGcG5TK3VaQ01EenF1WDNyVnJXd2ZPblBWRlBnUzNIRmFpSDA3eDBYdFZHbXc5RjVwbmRlLzlkNDIyMFM0ZFgxb3lIc2J2Yk1vQTk4eGxkNFVDaGZYb2V0a0RDWDNidDhGOGV1WHJuaXVMSkNJbFJRMnlvSzVza1YrZzBJTkhTdHFuRUJVcnZXclJ4cXg2VnMzcXl2UUs1ZnQ4NHhwQ1RSV0NXTGY2b3lYQnM3NmVpN3FZZ2U3WG9qSGZyVHYxaklpTzdlT2wzVW9JRURQOG9YMXpuUmN6dU9sRU56My9wdzd1eFpCbFNXbWFyRWhrVUtlVThaV2R5NWZmdmpnczZycHZRNHAwN0dYUld3WVBSRkFLYjJRbWNjNHJiMXUzZnVXRFhQOEdIcVpUOEV2TTNKTjVjUU85UGdhOFpOM205QTJyaHVQY1prNzFCd25uU3B3VzVkYWhXQmovV2RveHlaTWpadDFGQXY5YUphWlQzVlJHZHFuN3NQbkV2b3JwZWlqYysxbkxKbFNOK3RjNmdZbnFHbVBxNDBxWmNzMG5NSkZvelQxRmlKZmw4OXNiMTkyOWJVeVh4UHUyTThOT21GODNGenAwTUhEVkxDWTlmeGVkR0JHMHZuR09mYzRNK3l2SUR3dG0zZFF1RG5NSFNFcDB4aHcvcjFEaG5RQlg0V3F3R0ZOVmtaTERHZXZIb2xicEJBZE9jV251WE5DaGZJcDA2TWxmSlNRbGpxWDY1ZnU5WWhjcDlQYjMrTi92Ty9MYjJSb3Y4UFhpN0JUK2x6UGJxcUwwa3ZXdkI5R3YvdFFzay9TQmdUK3hLRVloODdKL0U0ekwzK3lNckJvSDU5VlgvdnlCemk2U0hZczN1WHVycG9KWFpYc3VnbkQ3M2VPSGpvMEFFMXdDUGhqbjcrK1dlOXdvVmpMaUU2OEI2UkMrZlBXWGZ6c1piQVVxOXdjZnYyYmZvT2U1QlBPNk1adlRxUVpvMGFxYWNXY1IxOUEyK0ZzZlA0OFdQTVVkVU52elRFNXJjRDV4SjBzUDMwNlJPV3FQd0VvbXQvakxzTHdvMDFsNEJFajd2ZTZOTy9UeC9xUmdiR0MrMzlOeDYzYnE3dmpzUzZtalZ1ckxJcExPR1JvVlh6Wm5ycGk2Q0dpRlNHZ2V2SkUwRlBsazk0QkRQcVMyak9uam1kM2t0NGUzYjdMSExjNk5IV0hSVXFjVlR0V3dmY1lMMTE2NVlRMFNibnc3cWtxN0JDSXlzaHZGVXJWN0NLcU5wZUZKTExoRC9PbGZPYnRGbCtUdkRYUTdpNHY3OGRJTG0vdlhrZ3dYOGRTNXJ1YnF5WE83Qi9QNlpBaDZlY0NYYTJaSW52UHVETGx5NDZKZzlKS1pNazlud3VBZCtGMFRoOEZ5cGlET041NFZ1eGFlTjZEc1MrQ1lWOFh1SlR6enR5SE1KaldLdFh1RGdSZThtZSt2am1FZ0p2TVRsLzdyeFNPMnY5Y3duUGVXcWhkNjllOWtjME9ibWQyanN2ZFQ1NSt0anlOdmpZRUU4VkhEOTJUTzJkQWdrZmR1N1ExMzRmUFhxa3FzUi9MUFhIMkNpZGFOeTZ5b3J3VnEzd25YUlBDQk9zMFJyQ08zUEcyVDQvTEZtc09oRXk1TXljaVNYVzVCNW4zM0h6OUtCKy9TM2h0UTV5bDFrSXJMa0VDa2Nhdi96eWkxN2hJZ0ZqMXRmKzlOOVJFeWZvQmNIeDlIaTA1azgvK1dUZHJFbGpkUitObGVqQXBzUjJZSW9uVDUrZ0ZvZE5xOFJDbXUveDR3RExvNWtjTm0zZElZMGRXS3V5NU0yZEkzZXVzUWxUWFB6ekd5ZisrdWJoUU1tUkNEVVBKdmpmRzdQajVvNWFSa1JnbzNhM1JqZWhyamNjUG55SXovYkRKRHd1VnZpang2NGJuUlFEK3Zaek96MjhLRzVONTNBeGZQQWdlaGw3Zm1Mc1J2VzhINWs5ZCs0YzdhQWFEWlA5Zm43Y1VUaFlzM3BWd0Z6Q3JZQ2U0dnQ1ODVUOStmb0YzMXpDODUvNkl4eE5HL3ZLT2Nvc2xEZVBZMzcvN3QwN1ZFelZqVTVoNC9yMWVvVUw2NTRoeWlIL3ZidDMxUElIRCs2cm1XZ1djcGhXc1AzbzRVUExWSWlrdnA4YjlLZzNyRnVYUG8zL29xaC9VazR2dFhIKy9EbE9CeGs0a0lKNWNoTjVxdlBPV1c3WkxFSm5pbVhlbk84eWh2bXZGZm10U3krTk45WmNBdnRLbWNRNXNXNG5BU01CRG95VUlVMnFnYjU1NUtEOXRIdU1SN3R3cHRWYUZPalFKTjJKKzhaT2drOUhmS2dTbWUzM3B5cXdlSFg4VmxMQ1k0U2d2R3Z1M0RsVEZzemJOVVhZOGRmZU9zMG96aVc1NkwrOFFjeDV0cnp6VlFJUmpSclE3dmFTZlQ3bk0xOU12MlhMWmlwalgwWE1YTEpZMFNkZVR3L0JuVHUzYVFkSFBYSFVJV2JEKzMzMXBTUGs1cXRqbXNRQ24xQThkbXhHMTlZaytITkdVeVpQVWwwQWUzZlBKZmh1WEl4ZFc4VTFseENNK1hQbjBuT3JTdUo0SFNQREc5ZXZjMFpZaGRFWHlKT2JyM3BGSUR1MmJXVUVxd3JCazlTcVhrMnZ3UGx2V084NWx3QVZ5bnl1VElWTjFHdWpQQmsvWm96cXhUZ0YyZjBPelEwZGx0SXdKcXBha2c4b0JGK2ljOFN5ZGV0bStocVZBVkhjdWEwN2lIZ3lacVNlUy9EMWJvRVRHdzRTREI3UVh4a0JOY1BKRWwyVUx2NXAxTVNKUC8xMFBDYkdOOEY2OWVyVmFWT24wRms2b2o0U3R0dk9QeWw1eGV2S1NzckVpWjY0d2kzTE9PeUpXbjVjMEdOU1dQVmg5cHk0cVV1WEx2cmNIUkY3dnR3bHNtYmI5WC9mTy8rWE40KzZKRWZ5amZIKy92YjlhSS9uQTlhdlgrZFFGNGw0a3FoNzdHamRkbFppYkJENnlZekdEVHdlUjhJaWc4MG1sOGVrQWh1VDNuM2ExMVAwYWhlTjZ0YWxEbVR6bVV1YTFNZVBlVCtjMnJON3BEcVZXS3BibjNWcTFWUStoNnAyREh4UDg3alJvK3FIMTlaZlhGZ1B1YUlRNjRLell1V0tGWmFQTFpnM0Q0RzNYbUVqNW41TWx0aW5CMkxySHpjUHVXckZjcys1QkxDdWFtS1pEQ005QjhESGp4OG54RldpNHJpNkJ0NWNZV0ZOeEZzSlk2WXoxYXNEb1lhcVFCcXpjK0RraEJzaS82MWJOdXN2dnRmUzZpdTM3SzVlZUMyOTFJc0U3ZHUyY2N4cjA4MWcyZWdlSzArUk9CR3VES21vcWpqU0IyKy9kZDhmc1d4WTc3ekFTRU43VG1Jd3NxSTBoMFFKTm5idGNOcm95Uk1uc21SSWI3L3prM05UcDJZTmppMXpwb3lNNlBvbVRVMXNlZncxRDhsRnYvWVdqdTVDazZDUDhGNzg5V0xPMlBjaldBbnJYN3h3NFppUkk5enVxSWZyemwwN3AwK2ZVdGV5N0Z0eGFoM3YrYld3eGtWV3dxc2M4cHBMVU5Cb1dJTnFORGJrMU5MVDZYVTI2c1pLaTQ1andqam5YQUpOcDdwTzFscjM3eXZvVmdqR0N1VE81WG5KMUJyeEVremFqUXdXTFZwSWg4c3FiRWJkeGVJQXcrRGtXZ2ZMcVcvUk5HQ2VzOTlYWHdXN2lvZ3J3NmpVaHVSeGp6RDM3TnFKY1ZwZGM5YjA2YjdzNGYzNk9VSU10UmVWZlBwUG5Xcm5EdSs3MjFvMWoxRGlJUnRPZmx2c0RJU2JjV1BHL1BQdnI2MWNzVngvOTcxbXFxcHFaUG9hUnlNN1NNQjQxS3JRQ3lXT2VkU0k0YW9VM3kwUmdYNk0zUWVMWnpJRUR2T3dsVnJWNG1JUGkzTm56MlpsckJWb3paekM5Rmt6Rjh5UmZjMi9Qc0RSdVdOTDBxRS8vWE4vZ2dTM2Z3ejFYaFlvRnp2NVl5VWNCVTZqYktsU0RsVmdXNHRjdC9rNWlHallVSjB0ZS9JL1JlWHNVRzdkdkZuWTlYN2JZSE1KRmpTUlZUN1ZRK2VNbngzWGIwcVhLSjQ3bSsrSThDR091WVNZKy9lc0IrUUpYdWhmOUFvLzlXclg0aXl3bGdwWExGUEcvc3IzbWxVcUsyZkxLU1BRUFJ2NGlHcnpwbzFwTk5ieTMzRkQxb1oxYXlNYU5lUzRyRE5JT2U1bmM3N28wbFVkRjcxYnJ5L2k1aElVZFAzS1ZOQUFCa2FCYXZudDI3Y1FNQ0dWM1pBNDZxVkx2SDhQWSt2bXpTcWdWUW5qL015cm0xQVE5U1I2NTIyVmsvMFNCODBJZkxYY28wY1B4NDhkd3lyMlNEcDJOTzQ2YXVIWXE4cWNvTWtUUWwwM1NWRHNZOSt6Q1BZRGlFL2lETFZ0RmZjSWVkT0dEUnhYVm53enprRnUybW9SMFZTZExaVVN2L3ZPZGEvN3pTK2N2NUF0VTBhSDhOTGx5eE9lTHRQUHI3MUZjdWhOSmNMTG80bDh0MlUvbDJGRGhqZzZDeXl2YXNVS0dLaWpOWEJIbm5NSmRrNmZPZTIrYnNRSmRvLzBEa2NmSWllbnpjckdmZ2w3SGoxMFBtcGdKK1plRE4yL0ZTK3hJN3dIOFFnYXJoZGVHMjlXdTNxMWZINURZUzE5b3VONTB5dFhMck1YVlQxNjhmMDJhZDI3ZXk5L2JrNllEbjM1UUJDT3RWRTRkbS90TVd1R2RPN1hXS0FFbFFGclkvUk92SXFHUHkzeWNiS0U3NmRQazhvNnk5U0syaGJNclI4TXQvTjVpZUtxK3lPRDQxSWNUSnM2bFdPeENxRkFERTlGWVh6MkY2dGRJcDh6cDAvcjd1WVU5MkppMk5ES1NkZGpYVmIxWk9qZ1FkYVZaTjlld2o1a0NOYXdYaDBPa0lnYXdXZE81N3UyeDZwVVNSUHJiZnhZMTB2eHFLSGZ0KytiVHBnOGNRS0JKYzJ0RGtidHp6Tng1ckpsVFAvK20yODRwdVNwaEtNTFI4eHJWcS9XcXdOWnZYS0ZOU0RFOUFjUDBDK2xjTEJqKzNhQ0lxcytXRlhLQW5sSEpFcDU2Yzl2ZUk3b1NEaTZzeFZDQmRaMkRrZEhFNXc0anRleVRudWkyNDdQaTQyYk4yM2k2ZlFjSVUzMHdZTnErRzRsTE8vekVpVkMvT2FaNHNhTkczUUs5QUwyR3ViSmxwV1JnaTlseWF5T2hSTlJNRTl1UnVaNk16L256cHhSVi9hSUc1R1o0d1hwMzg2Y2lhcnRyZTFJcUF0aDNQZVArUzJlUEk2YlN5Q3hYMVVUYTRsS1ZBd2pEdllBZVBIWTV3UHhTSjRHVTc5T2VGaUs1STZUUWoxcDZ0VEprbXpjc0VGcHoyZVpydCtLc1lOdHEwTDh1OHVsbHdhblpUUGZkVzlydit4UkhaMWw1NVJEaGhxMnAwT3RoeVRJSEhvdUFlSW0wQWxWV3pWcmhwT2xPMEUyTkRTSkFJQ2RJUTgrMDN6b3VGTzdkaytlQnBnSVhTWlNaSmVNQWF6MDlyLytFZXlWTlRldVgwL3FmemtQQlNaUCtINncrYTdaTTJjbWZPdE5xOEEwS1ZQT1MvRGF5UVQvZFNEQmYzdW12UWtTWEJreVNtOGNQM0RMdEoyMUM4K0V2V0lUZDJNdmY0ZGc4OGFOU2Q5L3o5RU85STZPK0twWGp5OFN2L2V1UFUrS1JCL1VyRnBWcjM0ZTMwejdPaXhsY3ZiQ29NVm5DbjY5WVIvS0xCZzQrRnhOeGd5T3VZU1ozMHhYamNueHNxSDc4dU9qaDQ5NmRZL2tZSW1kMkp4aWZXVm15WXk5Y3BvWXJydC90dUh1bmJpNUJIdktuVFdMcnlZWk0rQlkvTmZxaWgvWXYwOXZFd2pkMmV2Lyt6KytSa2lSSEY4UmJFNmZ3UjRWd3licEdpZ1dwVEZ1VkxNdmE5ZXU4ZG1lL3pTbHRUMWg0R0RuOXUzcTJpeHRSYWMvTC9iKzRkRDRtdHB2OHpTQ2FtZTZTUG9nbjluNGg4U01ZSFZXUDd0MzdYejMzNityYy9yV1AvK2hsd2JCNDg2VlM1Y3VJc0lKWThkT2pacmNJN0lid2RLMEtWUEdqaDUxTk1qclErN2R1eGQ5NkJDUnJqMGRESHdFMDhHUnc0ZVBIZVZmOUsyYlFlZnVPU3ZSMGJwWS9rNGRQdkowei83Nyt3N0VlS1k5K3g4Y0QzcVhRREIrT243ODZORWpWcDA5RTBkOUluNHZlb0xqeDlnaW9FQTJaNW45NnU2bFM1YzRjSHVlSTBjT24zN2U4M3NPTU9WQi9mdlZyRnFGaEZQRlh6V29FMTZ6V3BYSUxwMm5UWjF5d25WM0M2RW1IbDdWNTdUclZRVjI1cytaUTJkZm8wcGxJcUFxRlNzMHJGdG56V3J2VzArdHVRUVNmaUMxLzFKY2t2ZmZZNmdaWHFONmh6WnRmbGl5T1BUTHFtbVdRd2NQK2h2aENEVnpYd08zczJEK3ZER2pSclpzMWpScTRzVHo1L1dzdyszYnQ1WHRzVGxKTFhSVDlyTlM2akt5ejkzbHpLR1h4bytsUC96UXBFSDl1clZxSm56cmpVcGx5eERTRHhrMDBQTUZLREV4TWRHSDFPRWNEWEdwVFBFQ3Q0d0pnaDM3WE1MdjU4ZFAzTkRwMENQRXVidTVjL1FLbzRqd2hKZGswY0s0dVlUU2dUZmwvcTVvMWxoZmVzWGRoWGhPNXhVandoTmVrbVpOR2ltRFp2eFRyZUlMdjNIODFYRDU4aVYxcFpHVUtXMlkvZVpzczRqd2hKZWtROXMyU25oWjBxY2IyQy9ncFRXL0g1bzExcjFEM2h6WjA2Y09lRm10V1VSNHdzdncrTkdqRWtVL1VUTUJHWU84a044NHYvN3lpOTNkMlIraE5vNElUM2daSGo1NFVMUndJVFdwbFRabGlxMmJBMjRsKzUyQUgxWjNpdm5jWGV6ZC9MOFRSSGpDeTNEbHloWHJjWjQ4MmJLZXR6M0UvVHZoNGFOSHhKWnFtakZ6MnJDUnc0ZnBGYjhQUkhqQ3k3QnJwMzRwRUU0dlg0N3M3aDlVTUU2L1ByMHoyOTcyOVh2ckdrUjR3c3Z3L2Z5NTFseUMrOWNPalBQZ3dVUEwzV1hMa0w1VnM1ZDVpY052aWdoUGVCbmFORytlTk9GN1lTbFRxQ2RjOWRMZkRiMTc5VXowenR0VXozZGI0Z2NKUS96Z3RpbEVlTUxMY09iTWFmOTlmMGNQSDQ3MmZMakVMRWNPUi90dTFsTTNvd1gvcFRTRGlQQUV3UUFpUEVFd2dBanZWWFBreUpGS0ZTbzBqNGh3L3o2amc3bHo1dlRwMDJmZ2dBSDkrL2NmTVh4NHNCdmVMMSsrdkhEaHd0NWZmbG0zVHAxYU5XdFdyRkJoeWVMRmVsMGdNMmJNaUl5TVBPZjY2WS9aczJaRmR1djJvazlJZUhMcTVFa3FYSzl1M1JyVnF6ZUxpRmk0NERsUDdodmg2dFdyTk1XQWZ2MGFObWhBaTFVb1gzN3BVbytmbUg1UmJ0MjY5VVgzN3YzaWR4T1BDTzlWTTI3Y3VLWk5tb1RYcnUzNTNoUTd2Yi82cW5HalJyVnIxc1E0TUdYK2p3dDhLL3ZEaHc4SERSeFlzMFlOSkZlbmRtMVM3VnExeXBVdEcweEMvZnIyclZxbHlrOC8vY1RuYmwyN2Z2V1ZmdjlzcjU0OTY5V3JGL3JCemZpQS9xdFhxMFpWT1RwcVFtclIvSVZmVGZtYmN2LysvUysrK0lJbXBaSjF3c05KdEdyVnlwWGRUeHUrQktkT242NWV0U3I5anY0ZUVoSGVLd1h2aEpad0JmUzEyN1lGdkxITEFhTHEzS2tURmh4ei8vN2R1M2NYTFZ6b0UyR3RXdGJiRFc1Y3Y5NElHamFzWDdmdWhBa1RqaDgvSHRxRlBuandvRU9IRG0zYnRpVWIxY0F4MXE5WDcvYWRPMCtmUHUzY3VYT3JWcTM0ckxPK0ZKY3VYY0thbXpSdXZIaVI3NzNBY09yVXFlL256MWVmZnc5Y3VuaVI5cVNHNkczOCtQRUhEaHlJNTZ1YzQ4bnFWYXNvLzV0dnZ0SGZReUxDZTZWTW56WU42eHc4YUZERCt2Vm5ocnkva2I2NVEvdjJEZXJYeDZEVmt1blRwK1BaaUQvNWpDeVJIRGJVcmwwNzYwZGpRblByNXMySWlBaTB4N1o4SmR6NjVWZmZSZlpyMTY2aHdCNWZ4UDBHMDh1eFlmMTZEZzEvb3IrL1drYU5HdlZacVZJLy92aWovdTdpenUzYnFDS2lhVk9TNTB2Qi8zT1dMVnRHejdnaStFdXY3WWp3WGgweE1UR0VYdmlja3lkT1lPdkRoK3QzdEhseTRzUUp6aUpPejNwNTg0OXIxaUM4NGNOOHR6NFJ6K0FBQ1ZrZkIzbk5ycHNybHk4VFZoRys2dSt4b0Z1V016alIzNzNBZHoxM0JLaUUxOVhyTjlBZE9PSTZYTzdObXpmMWwwRHUzTGx6NXN3WkJxV090NXNwV0tzL1BYdjJaYTllVFJzM0R2SGVtdTZSa1RSWDgyYk40dE5pSEM4N1BYUDJyR2VuNW81THljL0FvVWVQSHJSQWlCKzNzQ1BDZTNXc1hMa1NFLzkyOW13K3QybmR1aVBPSjNod2VQNzhlWHBvYXhnR25UcDBRSGhidG15NWVlc1ducERQKy9kNXY4dkVrMDJiTmxIZ0pQL3ZKQzVkdXJUMFo1OU5HRCtlejZ0V3JVTGhpMkxqUXl5NFF2bnl1RlAxMW9halI0L1NSekJ5WS9SU3IwNGRBbHFWelEyZW1aeUUwTk8rRG5nWkhqQ3EvTHgwYVVhVlI0NGNvZG8xcWxXakhkUTFuaUZEaGxRb1Y0N3l1d2NxZjlldVhjVFJhcjlVbTZIcGN2OFBNK3phdlp1YVQ1bzBhZUw0OFpVcVZ1UndHUGRTWVJSRnAxYTVVaVhLVnlYWXVYN3RHdU02NnFiR3R5Rll1R0JCM2ZCd2FxZ0dxMVVxVjFZdkM2UERLbCt1M09iTm0xdTBhRkc1WXNXbHNXOVBKTWhucHpXclZ5Yy9kU0NRb2FkUXEwSWp3bnQxb0RUTTRxNi9uNllEeGt5RHZmTWNGbjcvZllONjlRYjA3ODg0aFBNZDJhMmJpaTF4RU11V0xtWGJua0YrNWo4WWE5ZXVSV0FML0cvVVhMSmtDZFk4Yjk0OFB2L3d3dysrQUdtNTc2MnNJMGVNWVB5RG0vVnQ0UGU2WkdOZnMyZk5RcGxVQURjYjRqVXFNMmZNd0ZqSlAycGt3RS9iYnQrK25aNkNZckhqOGVQR0lUWU9wRXZuempRSVhvakRRWlBzYU4wNi9lNmdsU3RXMUtoZW5TVUVrT3ZYcnljeXAxYmIvVVBpdVhQbnNxMjZPb1VhUjQ4ZWpVU25SRVd4a1BKWHJWeTUxNnN6UWs2b3JrTzc1N3dXbW1DRVlqbkdXYk5tclYyelJoMnZXdFcvWHo5RzVuU1h0RldsQ2hWVytwdXJmYnQybkZEeXpKZ3hZLzI2ZFh6d2xMMG5JcnhYeFA0REIram1SOFMrWGZqcnFWUDVHdUtWT0hPKyt3NWo0bHpTNVpQVGQ0SWJObFFSRi9KQWs5T21UVk01NDhtZ2dRT3hxdWhEaC9nOGRNZ1F5anpqang2SERSMktNVjI5Y21YaHdvWGhnZGNodi9SUFVXeUpmZVJuK2ZMbE5XdlVXTE1tMUM5bW9RUmxpMjNieFAzaTdJeHZ2bUVKM3VEdzRjTnFDVjRGOGJSc29WL05paktwbS9MR3UzZnR3dUVnWUN1NDdkV3pKNW5Wd0F4dDB5eW82TUFCMzl1MGJ2dGZHbzhmNHhBbXUxN0xhVUd0NkE2b2h2N3V4ZWhSbzlncERsOS9mL2FNS3JGRWZhYit0QXpkaDRwVStUOTA4R0RXMG1Xb0RFQWRFS2YrOGp4RWVLK0lQbjM2WUQxZmZmbmxZRDlFVmxpUEZlQzU2ZDI3TnlkN3hQRGhoSUlFTnZiTEJnUDY5ZU9VczF4L2QyRU5qUUN0S3JreUxFUnM2dmNsQ1p3d3hIUCtvS2hQNzk2WUZHS21UR3phR3NCY3UzYU4vSzFidFdMRHZuMzY5T3ZYTHpJeUVsSE5uT1g4YlJrSGkzR250V3BSVk4rK2ZkV1NxTW1UTVVyMUE2YkFxQldiYnRVeTdzM1RoTjlrSUlybU0zV2pKdXAzbmhYNHhvaW1UWlducGQydy9tKy9EZmo1UWZvZzloaml5Z3JSQVdVR2U5MHRNSmJEeDlJbTZzb1RFR05UcGJHeDh6YzBCU1ZjaTQxUUdOSDVKaXB0cjZNL2NmSWsrWWY2UitEeFFZVDNLbURBaG85cTFLQ0JiekJRdGFvYXQ2QkR2STNPNFFJTEk3NWlmSysvMjBBcWVJOFFIbS84K1BFRWRkZ0JpUUdKQ2lrN2RPalF2bTFiako3ZXVsUEhqbTFidDc3LzRNR1RKMCs2ZE9tQ1dkTUxrT3kvWmFuaVF6UTVZTUFBZWcxQWU2Z2loT0F0Q0dVeFUwSTE1VlM3ZHUzS3dWNk9mWXN1em9wRHc0K3ByL0QxMTE5ajJYdjM3aVdRWnJCRVJLZFg0RnVlUEtIUkNBTFZWd2E5U1BwNjRHVkpJbEoyRjJMOE9YRGdRSTRsaE1mYnZYczNad1RIcUwvN2ZzTndvODhKKzczb2thTkgrVXc3cUZVd1o4NGNEdUc3NytMZXowa2tUR3VIZHFwMlJIaXZndEZqeHRBbGI5eXdRWC8zeHlxTXhYM1hWN3plM0I0VEU5T2hmWHRPNUlYQW4wMVU0QURwbTBPTThZaGo4VFo0S2hLV3VtblRwdnYzNzBkRVJMQTdsSGI3emgwaUlzcm5NMjZFenoxNjlGQ1daTGY0MWF0WFV3SENTLzM5QlJrK2JCakdldEFmRUhiczJMRjVSSVQxY3V0ZHUzZjdiSFJHM012SXUzWHJocHhRNXRNblQxalYwZmI3Sk9jdlhLQWNGZEhSYUVTaDlpQld3ZWlPNkNERUpEaDZvQmVnMzlIZlhTaVh1OVBtRXIrZlA1OGxHL3kvK0VkUFFSMkcybnJKQlFzV3NIYmpKdjBqcDdCazBTS1dyRjY1VW45L0hpSzgzNXhMRnkvaVRPank3OFgrMUxOQ1JWQnFsT0xBNXlIcjF5ZURweXg5VTlWMTZ1RDB2cGsrWFMrS1pjTDQ4Y3BXSEZ5eXpTVVFKdkZaWFM5RkRMVnExT2psSDloTW5USUY4N0t1ckJDc2txMXI1N2dmNWxjNGZwdFNjZXZXTGNmOEZjTERFQkVlYXNGbGRlN1NSYS93VnhLUnI3VFpLRHVsZlFqa0hqOTZ4REFTYjZ4WFBIdTJiZHMyYWtWWHdtZmFpaks3Mm9xQ3AwK2ZFdlhadXd3M0twSkUyNHljOWFKWXhvMGJ0MlhUcHZuejV1RXo3UjZ2YisvZUxGR0Q4UGx6NS9wa1ptdFlmQjFyMWRTT2dzOGNWSWhmcUhjZ3d2dk40YVJ5U2xUUVltZkk0TUZZOWttdkh3bFNjd21SWGJzR201aWFQbTBhd3kzRVNmeXpaZlBtQXdjUEVublNxVmV1Vk1sendrMEhUdjZyRjVzM2IrYnpCUDl2MlRDc3dxUm14VTdsTXdTbHFwYjIycmRyUjVleE9qYTJQSFRvRUY3YWNseDJHRlZXS0ZmdWk4aklGY3VYLy9yTEwxZ2hkZlAxTlhmdlVoOTJwN1N0R0R0bUREdmRIMnVqZEM0b0UyK3N2cUk2dHYzT1A0cGJ2MzQ5RmVDNDFPVjdBa0kyVkNLMGVPb2ZnS25yTkFRSWFoRHJobkVtWVFLbDRiaDI3Tml4ZDgrZXlaTW1zU04wem1nV2I4a0hNcWpmN2hzelpndzU4YUxxTnJxSkV5YlFMRnY5UTFBRklRbE56ZWFyWXJ1UGdZTUcxUTBQVjNNazhVR0U5OXVDZjhEK3NJeGYvYmVKMkprN2IxNmxpaFdYZWNWeWRLaU1Bd2NFL2lLOEE3U25yZ2VnUUN5N1R1M2FtTTZYdlhwNVh1NWZ2bXdaKzVydnY0RnI1ZkxsZkdidmZNWnUrR3kvVm9IMktMYWQvOG83ZXNiUXNUazFuOGE0MGVGdExMYnYyS0Z1Z0tReWJJSkQ1cEJWbUxwaHd3WjJZWGZPdnF2dzRlRldnNXc0ZVJJanhyMnJyM3YyN0tsYXBRcEZWYXRhbFpxZ0tQNGpGVll0WHJ5WW5BNC9qOGRqWDNnejFGdXViTm4xc1hNU2JrYU9HRUZPVlVsZmk0V0gwMktEQmc1VXYvRTRldFFvbHJDY1hWQWF3dU5BMUliZEl5T3BqQ09VM2JsakIvVWt2NXIwYTl5d0lhWHBkZkZBaFBmYlFseTNkT2xTNjRxOEhSU3liTm15N2RzOWZoN3h4SWtUUkc2N1lpOERCZ05USU52NDhlT2pvcUx3YVo2K1NNSFFIeG1vdTgvWUk1K1ZHZTNZdnAwNk9MUzZkdTNhWlV1WEtsZDg0OFlOZkFVZWdKQnNUZkRMaGdvR2szUUhaQ2FNdEc0cndZZXd1eU8ycDFGeHVUK3VYdjBnTm9yR1RWR0hZN2FmaVNYS3hhMFIrdEo2ZTNidnBuZFFOMVVlUEhpUW5DeFUyU3d1WDdvMGZ0eTRNYU5IVDRtS3N1Nnc4K1RzMmJNLy92amppQkVqcGsrZmprUnhYSHFGbjQwYk53NGJOa3g1VnhyV3VveEVpK0hKM1QwYS9uRFJva1VvZHR6WXNZU3BNMjJqMXVjaXdoTUVBNGp3Qk1FQUlqeEJNSUFJVHhBTUlNSVRCQU9JOEFUQkFDSThRVENBQ0U4UURDRENFd1FEaVBBRXdRQWlQRUV3Z0FoUEVBd2d3aE1FQTRqd0JNRUFJanhCTUlBSVR4QU1JTUlUQkFPSThBVEJBQ0k4UVRDQUNFOFFEQ0RDRXdRRGlQQUV3UUFpUEVFd2dBaFBFQXdnd2hNRUE0andCTUVBSWp4Qk1JQUlUeEFNSU1JVEJBT0k4QVRCQUNJOFFUQ0FDRThRRENEQ0V3UURpUEFFd1FBaVBFRXdnQWhQRUF3Z3doTUVBNGp3Qk1FQUlqeEJNSUFJVHhBTUlNSVRCQU9JOEFUQkFDSThRVENBQ0U4UURDRENFd1FEaVBBRXdRQWlQRUV3Z0FoUEVBd2d3aE1FQTRqd0JNRUFJanhCTUlBSVR4QU1JTUlUQkFPSThBVEJBQ0k4UVRDQUNFOFFEQ0RDRXdRRGlQQUV3UUFpUEVFd2dBaFBFQXdnd2hNRUE0andCTUVBSWp4Qk1JQUlUeEFNSU1JVEJBT0k4QVRCQUNJOFFUQ0FDRThRRENEQ0V3UURpUEFFd1FBaVBFRXdnQWhQRUF3Z3doTUVBNGp3Qk1FQUlqeEJNSUFJVHhBTUlNSVRCQU9JOEFUQkFDSThRVENBQ0U4UURDRENFd1FEaVBBRXdRQWlQRUV3Z0FoUEVBd2d3aE1FQTRqd0JNRUFJanhCTUlBSVR4QU1JTUlUQkFPSThBVEJBQ0k4UVRDQUNFOFFEQ0RDRXdRRGlQQUV3UUFpUEVFd2dBaFBFQXdnd2hNRUE0andCTUVBSWp4Qk1JQUlUeEFNSU1JVEJBT0k4QVRCQUNJOFFUQ0FDRThRRENEQ0V3UURpUEFFd1FBaVBFRXdnQWhQRUF3Z3doTUVBNGp3Qk1FQUlqeEJNSUFJVHhBTUlNSVRCQU9JOEFUQkFDSThRVENBQ0U4UURDRENFd1FEaVBBRXdRQWlQRUV3Z0FoUEVBd2d3aE9FVjg2elovOFBNcDBoRC9VZC8vQUFBQUFBU1VWT1JLNUNZSUk9IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMV9QUkUiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6IjUxNmQzOTY5NWE1NzU2NTE1OTU4NGU3YTQ5NDM0MTY3Iiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6dHJ1ZSwidXAiOnRydWUsInV2Ijp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6ZmFsc2UsImJpb0Vucm9sbCI6dHJ1ZSwidXNlclZlcmlmaWNhdGlvbk1nbXRQcmV2aWV3Ijp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOmZhbHNlfSwibWF4TXNnU2l6ZSI6MTIwMCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6OCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoxMjgsInRyYW5zcG9ydHMiOlsidXNiIiwibmZjIiwiYmxlIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN31dLCJmaXJtd2FyZVZlcnNpb24iOjIsInByZWZlcnJlZFBsYXRmb3JtVXZBdHRlbXB0cyI6MX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDIzLTA2LTAyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIsInVybCI6Imh0dHBzOi8vd3d3LnNtYXJ0ZGlzcGxheWVyLmNvbS9maWRvIiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJTbWFydERpc3BsYXllciBCb2JlZVBhc3MgRklETzIgQXV0aGVudGljYXRvciIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjMwNjAyMDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjMtMDYtMDIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6Mn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMy0xMC0xMCJ9LHsiYWFndWlkIjoiODY4MWEwNzMtNWY1MC00ZDUyLWJjZTQtZTIxNjU4ZDIwN2IzIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI4NjgxYTA3My01ZjUwLTRkNTItYmNlNC1lMjE2NThkMjA3YjMiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiUlNBIEF1dGhlbnRpY2F0b3IgNCBmb3IgaU9TIn0sImRlc2NyaXB0aW9uIjoiUlNBIEF1dGhlbnRpY2F0b3IgNCBmb3IgaU9TIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZXllcHJpbnRfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZhY2VwcmludF9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJsb2NhdGlvbl9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWxlc3MiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNjRENDQWhPZ0F3SUJBZ0lFVGUxMldUQU1CZ2dxaGtqT1BRUURBZ1VBTUlHWU1Rc3dDUVlEVlFRR0V3SlZVekVMTUFrR0ExVUVDQk1DVFVFeEV6QVJCZ05WQkFjVENrSjFjbXhwYm1kMGIyNHhHVEFYQmdOVkJBb1RFRkpUUVNCVFpXTjFjbWwwZVNCTVRFTXhFekFSQmdOVkJBc1RDazl3WlhKaGRHbHZibk14TnpBMUJnTlZCQU1UTGxKVFFTQlRiMlowZDJGeVpTMUNZWE5sWkNCR1NVUlBJRUYxZEdobGJuUnBZMkYwYjNKeklGSnZiM1FnUTBFd0lCY05NalF3TkRNd01UZ3hPRE13V2hnUE1qQTFOREEwTXpBeE9ERTRNekJhTUlHWU1Rc3dDUVlEVlFRR0V3SlZVekVMTUFrR0ExVUVDQk1DVFVFeEV6QVJCZ05WQkFjVENrSjFjbXhwYm1kMGIyNHhHVEFYQmdOVkJBb1RFRkpUUVNCVFpXTjFjbWwwZVNCTVRFTXhFekFSQmdOVkJBc1RDazl3WlhKaGRHbHZibk14TnpBMUJnTlZCQU1UTGxKVFFTQlRiMlowZDJGeVpTMUNZWE5sWkNCR1NVUlBJRUYxZEdobGJuUnBZMkYwYjNKeklGSnZiM1FnUTBFd1dUQVRCZ2NxaGtqT1BRSUJCZ2dxaGtqT1BRTUJCd05DQUFRbk12WWhmZTY3ZU8xMFN3L216aHE4eURNNWVxbkpoeXpQRVExQmR2Y2JHR2FMMXUyaGdyYjhvTm5Md1pscy9raWg0bG15RmFLTEo0enU0UGJzSnBnSW8wVXdRekFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VCTUE0R0ExVWREd0VCL3dRRUF3SUJCakFkQmdOVkhRNEVGZ1FVdElNVFNDTnpJaVFLWDN6WWRabys0WUhwS0hFd0RBWUlLb1pJemowRUF3SUZBQU5KQURCR0FpRUF6NTV2N0ZpYW1YeEZ0cTZmd3lob3FMaitwdEM1VG1sWEV0UDVGZlBiT3A4Q0lRQ0wxSzRSdDlsMm9XdDRWa1BqSVQ2MDNmb0ZHSFZrdVJ6cnVVQW03MDJFM3c9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFIc0FBQUF2Q0FZQUFBREQyTFdlQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUN4TUFBQXNUQVFDYW5CZ0FBQUFUZEVWWWRGTnZablIzWVhKbEFFZEpUVkFnTWk0NExqZ3hnY3RpQUFBY0gwbEVRVlI0WHNWY2lYdFd4Ym4zaittdHlwb1FFcklaWlJGQkZLdTRWRzJ0VlduMTZsT2ZlaXRZYmRWYmJhdGRyTGJ1eXVKR3JVb3JkYUdWN0J1QkVQWUlDR1FoZ1pDd0U3Si95WHZmMysrZG1YTytzT1NMaWIzdmsvbG16cHlaZDk1OWxuTk9McEloRVNSa0FaSXV2aDRNRFNVajRaWCtETHJCL1BXb0lON1BseFdJMDVXU0FHMUFoNyt0RUs0SFk1VUFkeGxxaDkzKzJxQjRnTXJRT1VvOWJwK1Rsb0hBaC8yQ0YwMjg4TG1EWVplcHdrWERPdzI1SVljcjYydURvaUVtWlloNUV0b0JsMThJQnJTTEtUSGVQNVJkR3BSRVZIY2VhWGlXZ2xCZFJjU3I0eDNKRzhVWXdlTWp1SUx4NDVNQzZ4M05VTHlYbFlMUDQvd1p1YkgrS1VLU3NxMDhDZ1FjT0k3QndGZDVmRjY0M3B1aUhpbU1oY2F1bWUvSFhIK2k2eGdlVm1KRVN3VFhFQm1MK0hFQ0JmMlc0NGEyWjY2Z09jeHM3QkREcVVDYTNGZ0oxc1JvRHhDclN5TEJTOUlvTzVmc0x3UVd4aDF5OXRYa2thU0tMTFJENWhScTRJblRmTWhZSTM2TWgzYnhwdWNCMTR2QTV1aW00MFZkVFdpNE5qcThNQldZeDVST1FOblRoU1l4V2h5TmdmK1VJcytGQWZqakNnN2dDR0FXTDNOSU9BaG9pZWdNb0JYRW1hSnU0dUE4MnhNRHNJSDZUaHlYcnYxN3BidGgzNGlwcDNFL2M3VHZhbXFVMHczN05UVktvcU5EQm9IYUt5RUF5dWRnNUx5ZzdXTkdsTUMxS2lZdzdMS0I5blpwKyt4ejJmdkM4N0p6eWM5a3kzMzNTTzJpRzZUbXBodGs0eDIzeS9hZjNpLzFULzVTbWxjdWw4UGxaZEo5K0NEN2VvTXl4V0EwWHhPbitXdUNJalE2YlU1MnBCck5Qa0hEbXR1b0pwdm9IbnBGZExDS0ZqRjYyaTVDSDI5RlNKN2RwbmVXUzFIYXhWS1NtM25CVk13OEkwclowNlEwSjBQS2NxY3pMOC9PbE1yNXMyVDNrb2ZsNEtkclpXQ3dIK002b2tjRzN5NVNpQUd2Y2RIZEl5MGZyNlpDUzJla2s0YlN2T2xTbktOMGFBNGFqTFpNTFdkS1diN1NqSHVnVVdtdFhqQlg5dnptVjNKODAwWkZGdkdmTW9FamdpbHlZR0JBWmJxUzQxWGZ2RURUMWJKaDBYV3ljZEcxVW4zTmZHbithSlVPYTJQN29XSFVLQjhwL1VMMnZmaVNOQzUvVXcxSE9YZUdQOXJJRStac0dGL2NzcHBXcnBTeXRNa1V5b1ZTdVV0MkhUT0F2Q3dweXBudWhKOGxKZE9uU3NtMFM2VzhJRithWG41SitqcmFPTnJJWUJZY3dob0kxYitCL2k3cCtPSUxxVnB3aFJSTm0wekZsZVZtQlJvNEpsSnVPdWtybXdGYWpEWXFYYThyY3JLbytPS01LVkk0N1JLcG1EdEhtbGE4SmdPblRsTElYalpqQmxWUXo2R2pzbjdobFZLYW1TWmxXV3FVa0lmU1hKS1RKc1daVTJYRHpZdWs5L0JoYld5Y1d0QXkzbHRXdkNuMXYxZ2llNS8vblJ5clhzODYzaDRsZ1JjWlFrTWFJVkJscjNwYmlxZGVUQS8xaVo0eUxFRll3YXZQa1NEUW9seGxrSjZ1d3M1V0p0TW15TVliRmtsNzhiOHcyQVVCNUVRUjNPanM3VHdwZTU1OVJrb3pKcWczSzc0d1hqbzlGNFlYNnJKQk81U2UzQWFLTDhtYklhVjZYWktUYmJrS3YrcktPWEppNjJhT0ZmblkyS0gxZy9lbFpPTEZVcHluTktpQ0lZOFNsUTJOVTJrc25QcHRPZno1djYyeEc5WlBLNGMrZWw5YTNubUhTdTlwUDhUNy90NW9RSlY5Ympqdzlrb3BUcDlBNFVCSUNNY1FFTU5nWG5vUUtCUWVDVEtxOC9Yd0t1UmtUb1ZabnFOOWdUTXpRNnBtNVVyTFgxZVI4SWp5eVBnSXJBZGovYmFPVXBQSHZGdVVwbEVDMFVSeFZXU0RIbFd5VTF4UnR0Wm5USkpDcFIrcGFNb2xLc3hMeUErOEdKN2s2U0pQYWd6d2VPUjcvL2dzeHhzMU9BVUVpUEV6ME5ldlhqMlhobTVHWlZFRk1xeFFXa0ZIMFl3cDZnRFhTMkt3MTNWVlkvTzg5L2RJNTQ0dnBhK3RqYUhkeHJKN280RVJsUTBsTXd6bTZUeVhyeFk1ZmJLc20zeXBGRStHQUw4ZEJCbFBVQVFGTy9WU2VuRWhoSy9LcUtCM200S0tFYjQwS3BUbHo1Q093bUkzcWtLZzMrWTY0emZhSHJXdGVwZktRb2kyYU9HRXBkRURoclF1L2R0U2VmV1ZzdXNKWFlpdFdDa0hQL3RFamhaK0lZYysrVmlhMzFvaHU1NTVXamJlZllmU01JTzBBeGVVREI3TFoxL0dFRzQwcExqeGNvMHNjOTdHL2lnYk0yMXIxdWhVTTFISG1jSHBwanhQRFNzN0xjaWlQQXVPcER4TW55QkgxcTFqSHhnM2tDR2ttNEp0VVVhcU1JakxSZ01qS3RzcmhvU3BZblkvK1lTY1dGOGpIZVhsY3F5c1hJNlVGNStWamxhVVNFZFprYlN1VzB0UHFWTGh3MGo4dkFtY0RLME9iOVhNZkJub1B1MTRBR05HUXhBZWY1VFIvbDZwbUZPZ2hxZUdva1pJbXVEUkxxK2NWeUR0bi85VGhqcDdaRkM5YVNpaHVHQW9zQkxORXdsZHdmZjN5VURQR1JrNGMxeE9ycStWTDU5NlFpb0tjcVE0YlpJY2VPOXRHOTlEb09QOEFOeG9Sa3A5ZXhZalBtb1d6aWZQbENXbUQxVXNqVXVORStzYWk0SXFFeldFbXVzWFdDZlM0V2h4R2RBaE9ha0UvS25DeU1xR0lKVVlFQUpsTjYxWXh2dURhbmxKZ25GQTVpSGNZZENxNFJxZUE2YTRlRktHR2RySmZLWjg5ZXl2QSsyV3h6M0xCSGZ3SDZ1bDlESk1JNlpjUnB4OGxMT2s4cXFaMHRWeDJORmtYaER3Y1p2bUZuZ09GNVhQdTNvNTJLZjh2czB5V3JBZldUdWJ2M01CMitQSERSam4vL0RhVHloRFRoVnEzT0M3NURLTlFtcXNVSFJGTG5ZR21MYzFWOTZRSHlvdWptZ0RyZ2hkTkViNFNSMVNtTFBWQXYzS3RTQlRHcDJ5VXhVRUFBTEdHdk5FWFMwVnpxbEJReGtXS0pnZVN2SnlwSGJCUEJuczZYRWRETGNKelNsSS8rb2ZlOVFNVCttcGhFZEFTQkNlUm8wakdxN0p2Q2EwcHh4czByTjZENzdzMnVFUFc1aElRWDQ3WXpTTURJYURlUDEwZzJyK0RFcnQzYmZSR0dIZ21MWWd4MElZcVBKUlBrT25NVlV1cDBnMUNNemxhTFA1anU5WmR5SjJxM09YckJBWjhtZ2dKYytHUUl0ZHVEbncxaklWREZwUVNrbHdMbzhta0VBVUJ1WGczeitVMG5TZDkvMXFGTXBXL0pWelprckhodktBZzVsRDU5RnVXbnluR1llMjkzUWhZUkUyMk9jWE5sQ2NlVEZCSzRtS1B5NEJhQWdtVE44MjhpSVZwaDkwQlBCN1lTOStqdTI2SHRGcHJtb21vbGxFSzZlZHJBelpldDg5VW5udFZhWnNUYmdITDBjcW01VW5IY1U2ZHp0YUFIRjZRam1xU2dsR1hxQ3BVSDFDS05xLzhnMDNoaEtCZ2s4eENFSmp2UkdMSERhYU9OMHBaYk94VU5INVdrTTZRamptcnNxWk9kS3k2ajIyODc3bDhWaElHNVFOdHkyaWwyQXFvUEZ4U2xCdjBJVWdoZTNIbzdKZGZ3ZjBZclRTT3RhNnRsRUxBSzZqT2g4WUxnaG5OWEw5aC9wazUyTVBVN2xjbnppRllnckM0dmI0bGszUzlOZVZVamhsRW5jM1pUTTBTdVZONVNJV2FlZkREeXFtaUEvZ1pJcnhORnBJTFl5cm9qbnY1R1h6cUJGZ1pGd1lQR0gyNjVUZTNTTjE5L3lRaHdzMmw5bUt1cndnVi9ZdmY4MXg1RmFnTGdFTmxMRDUvc1ZVdGpjK2VqZWlnMjZ6T3NwS0ltSG9Id3dHMXdIOEJSczUralduYWpRc2VvT3labTVjbGtjQTE4aU1pUVhDc1MxYnBPYTZPVlF5cGkzUUN1TXN5cG9tZFhkOVQvcFZEb09uVDBycG5GeDN3S043Zm5nOWpGZEQrWWI1YytYNHhvMkdqajllSGdZMlRIU2RDcVMyUUhNSjJ5U3Y3Q1RBQWdoNUdGc0xXb0U2SklyU3FPTkt1TzdPMjNWZk9jbVkwd1RGbFJTb0lTMHozTFkwYzhnY0hzRGU1Myt2Y3pWQ3Y4NTMyaWNJVVhGVVhUMWJ0MDJuZ3hGNnBkdEZsSGtEaENxajJ6WldkTjhwMmpjWUVheTlOZGV5THZnYVhueEJDblZiWjhvemI0VlhGMDYrV05vL1dhT04xWndUL2RMNDJoczh2Q3JOdG9NZFc3Um15THJNQ2RMdzNCOVZHT0FJK0UybUVVMk94bEhBbUpWdDQrdkFLcVJnM1I0UTRraVJJMVNoOStSeEtTc3c3L1I0RWNvWnh2LytnZlZCYzljZXdLTCtISytyVWFQSXNaVnJyQy9DZWxGMnVsVFB2MUtPVmxaS1FnM0s5NEhwZUwrTllKamdOSS9hK3p3MVlZWTJLTGlMenVabXFmM3VUVHpjd1FvY1lSelRGbExWcmRkSnowRjdBSVA1dmJOcGoxUmVlYmtVejhEaGtQS2t2R0R4V2FUek9zN091L2J2TjByMEx4aXkrMkUrQ2hpN1owTy9RWmQrdGxVWWRNSlM1UTBvbVNnandYdGh5VkFTNTF3cVRCV2xXNmN6WCs1RUQrMEtwQWJla0R4cy92RmRVcHc1MFR4Qit6SXFZT0ZEaFUvVmxYbTZiUHZKdmRMK3IwL2x6TjRHNmV0eEQxNWdqQjZQTTBKY01hSGVSeWZXTzlyNWt3S3dEM0wxVnFYOThEOC8xcm5ZMWpzOEhnVjlXRmhtcFVualMzOE9Za0lmR09iZTMvNWF5cVlyVDVDeGVqYjMzbHBlbHpaUkRyei9ydEpuN1ExTTJNbDFxY0U0aEhIL09rMnlnUHljYTVjZ01DR0hQdituYnIxeXFXaC9nc1N3cGFHNTl2WmIyRFl3b1FyeFJTdm9BbTl3UUxwYVdxVG0ybmthSW5Ic2FIdFU0TUNSYVJIMnJCbzI4WkNoT0hNeVBXUFg0NDlLNjhvVmNyUm1vL1NmUE9YUW1URVpXb3RJOFRJaVFSaDdSSERDMXhJOE5kSGJJeHR1dlVuS3NqU0VVMjVLbjl0YVZTMllLeWMzYjdHMjZPZDRQRnBSWnQ2dFNnWlBQcFJEUmh1dXV5WThtT0ZZcE03QTZsS0g4Wm16Rld5NzR3bUl6bldSdWc2MHl1NWZQeUdWdXNjRzg1aS93QXhETUZiWFdWUGs4Q2YvUUljWUl5WkVsdFVDQW1OYU9MNXRoNnovenRWU05IMUtiQ3RtWjgyV2JQOE5id2R1MUZVdm1DMmJ2bit6MUM5OVdOclhmQ3o5UjNBQVkvaUN4eVBETllabUZlaS9NQVE2MFU5bGNLeWtoSExERG9PSFB6QStWU0FVdVgzcFE5cElPVVJiSnh1a29kNStSaU1lWERrZWpDZU5ESXFyN2RPUGJRZ25ZeHNMTmFPRGNWRTJqaUZQYjk3S3ZlSFIwaklOb1o5STYxL2ZsYS8rOER1cHUvMDI3aHVyOG5XZWpxMUtXVlpGbFU5UGs2My92Vml4T0tFcFdCYVBDaXdRL0xsYVQydVRiTC8zWGluT1FJUXdveW5TSE1LbGtIUTdnNlBKcEZEcVFuM1ZGWGxTT25lMjdIam9BVG14eWExNENlWTFRUkh1Y09kQzRHbEUrRWEvamJmZHpQbVhmR0p4Um9WUGs4bzVlWXhzZnJDZ09JNGowcnBtdFVhOWZOS0lPZDRXZG1uRVZUVnZibWlMN29IZVVFZ054a0haSURZaGh6OWJ3d2NMMkZvVVowL21vOGRDdFc0SUdROEFHS0x5emFPaEhPNlgxWkx4TUwvN3RJYlhRTGhPYUZyR0plWjZZeThTdXZja2hreHRnU1BVcW12bWtEWjdHcWU0ODdPNW5lRkpuU2FFUlQ2S2RTRVNaUWdUQzZMQ3JNbFNxd3JxMUsxU0loRUw2YVJoWkdVRGNIU005aDIxMVh3R0FCbzRCbVRtb3RpbUd4ZHBFMXMvR0RnK1hKNFk2SkdhVzY1WDJuUFpqOGxIQmQxYXRzRlFYRnVtcndIakZzWXhIKzU0K0g3dW43SGc4cDdyd3hIUHc1VndLbC9uTXh3TlFzamREUTBPZzRlWWdDa015NW5SRzd6SEc2Q01CeDZ0SDYyV3VzVjNTZlhDYTZYb2N2VmtYUXpoc2FFWE9yZHE0RUZwWU82bkVqVTZQSHJFMDdwZFR6d21DWjZ2RzhUSE9UOUUzcmJsUjNjSEhzT1pOL2pYeFdUanFoVU9ZVEw5MUo4THljM3ZyTkwyNWlBK0NvSlc1RFUzTEhSVG5POGZrMU9LTUQ3S2R0UmpvVkV4ZDVZU2lCY0tYR2pOdFRCYk5RTTRWTEJxcFFqcnU1OStXcnJhV3Ezam1BQ1JJQXEvWFh0MlMvTjc3OHF1SjM4dXRYZmNJaFVhUGd2VEozSFJ4Z1VjK0ZCRjh5MmFmQ2pHTGZUVWl3b3pMdFdGNHExeWVrKzlvYVpBNDhxSkN4aGFja1hOVDJ5dE0wOVVuT1haV0Q5a2tuY1lkZVc4S3lUUmJkNVBmSnFIZFlpckF3ejBkRXZsVmJPNU1BdktkazREcGJldFhlc1VidDNZZFJRd0xtR2NZVXdCZzlmLzZuRXk3UVZySVEzUHJuV2ZxWFBscmhlZWxSTlYxWHdFT1I1QXI0aHhqV3NFZjRURm51WldQbzQ5K0xmM3BYN0pRMUo1ZWE2c216YUorMThMNXhiU3NjakRRd2tZSS9ick9PSHFibTBOYUozaktaaFNURkhlbzYwT0N6OUVML0JMSmJsVU91MFMyZnZLaTJ4ck94UUhNWnE1YUVPbTl3OHNYeWJyTXRVNHNUV0Z6RUduT2dybThXMGF1YXlkMjd0NXphY0lZMWMyaVFZVHRnTHZPdFFpMWJxTnFNcko1UnpLY0ttZWcrTkFFSDE2L3o1MGNCQmovbXVDRFk5ZkNCOWVFNU9BYlFsNEI5c1gwTmIwM2dvK0RpMmFIcDNnNGJtNmhVdVVwMGhoOWlUWi81Yy9jeHRsS2pVZ2JuY1phbldNbnZvdnBmcTZxMElJOTRxQ0lXR0JsVGh6T2hnTXNtU3Z4clhoeGVWZ1Y2ZFVYSDRaYWVMVXB6bmZwZE84WXQ1TU9SSjdRT0s2cHd6ak5tZWJoWnZ5WUowUjA3WWl4aW9UNVMwL3VwUHR5UHhvcVIwQkFqcml4bDQ1MlpNZ1ZBaDZZS0JQR2w1L2hjYkgrVkhwODY5TFlWdUloeExsTS9Pa3Q3WEZkZlpnK0lLWVhiYjMrVDh5WFB2OU5QRFJ5S2RObEQyLy82MDE0dmpXd1hYanRka2pvcU1XY0tGL29LMUlweFFzTWprMVlLclJ4UzNvM2ZYNEk5YU9NRHBuR1JkbGUxOEtGcXV3L3J2WG0xVXFvWngzUURDRW1aL0RWNFRRenJjZEt3UkRVNFFlYjRUYlZNUGtoYTBaUXVxeGRZWDBJaW9HeG9ubnlicFZ3cFlOQzdaVzdQMVZzTDRma0hnZW1hdng5RFEyeXNZZjNFcEZrRWQ2TjNoVm50V3J1NXVidExYU0JqeXVIeURnOU9BdXNmcm9PWHBZS2d0MGUrand3QUQ5Q3g5VkMrZkpxYm82WnhmL0Q4b0dlQ0hncDE4WFRHZTJiN1gzdUZXQW9iL09PM2g0WDNQckRkSjcvR2hnY0V3d0RFY1FJckpZRVQveDZHUHo1S0EwdnZvaXB4c0lsUWM4akVpNlI5ZUY1RmUvZllvcmZmWnh1QWhhaGdsaDdzVFdyMGhYL3VnUG83Yit5cS8yMy83TFIyU2dxNGZ2OUNUMTl6UW9nQ1ovaXlYODlmYkx2dWQreDllYmJhR21kT1hab2hldlRlOTc2UVZKOU1lT3BsT0VjVk8yUDhRTEFsWFQrK3BQZjVDaXFYYm15OFdMaGlRdWlBcXlwUEdWVjdYdDZBa2VEa2x6dEpNYU1uOWNheW5XenVSSm80QjNuTnF5V2RaL1o1N1NhQjVrb1ZQbjJzekpzdlduOTd0emVrMnVINEZlcXFvNWVVSTIzM3VQdlYrSGd4REY0VS9Cb0hDY3B0bGdMZ0hpWlVDc0RBcTlzWjdjWENlVnM2NmdzNWdScVVGcUtBZCtITHQydHg3UVZzWmJxakFPQ3pSbFd1bWpLQ0U5Q01FSnRsdTNWalczWE9lKzFERHZvVkJ3S3JSd3JwemV2WWZ0eGd4T1lFRnVvYURBY3FSMFFyZy9LSjJORFZKNzAwMVVEZzFSRmM2RjFmUjAyZm9US051ajhKSExHNWRPQXh0cXBTekRQa0x3SG8yNXZ5UnJFdDlFNmUxb1owdjBveE5vd2NxV2dJTTU1YVoxVkRUcWRBN3Y2Wkg2eDVmeUFRbW1GdEFGSFVEeDJFb2UwTzJsZDdCVVlkdzgrM3pRdHZvamhqbHN2YmpQVm9WakxzSXg1NjVubnRLOVpTL2JtUUQ4WWFncHhwY3BCUDdGRkFhQmFBM2JXRU9mV1NGY3VLSVRxQk52QUJqY2hoc1hrQ1k4SzJlbzFHMWpTZnBrcVg5MGFmaGNDUkRHQndyRlYvZmdZaW5OaElHb0FXdC9MdlIwancybE42N3doeWdqZ0xaaHMrRzV5Z0tuWm5oZGk5RkNvNkl0Sk5Xb3NES2ZlNFY3RlN0Wkp1anIrMXNld1RldTdJRmp4MlRyZy9jeEhDRk1ocENFcE41emN0c20xeEpnMWs4SVZKdWxzK1RxQm52UDhHaVRGV3lEK3VneEtzQnk5SXRTbU04VktCYjlhMTM5Z2E2OGNTYU5OMFhBcHp0alQ1OG9qVy9qZlR2MGNTYWlQNzdmcVgxN3BHVHFGSG9jREFUS1FCbWY5dFRldUpBbmc2bDRIdkI3M01hbkpodENoblRMVm52UDkvbDhHL0xqT0tCUng0SjN0MzZ3Q2ozRE9BRVg4U2pZUllCdlhOa1krRWhKc1ZUTXVZd2V3ekNwUlBQaFJOWVUyZlNEMjl3Qmk1Mkpld0tST1JFN2NQTzdLbmpia3AvSzVzVS9rSk9iTmttQzUrcVJNcXhYZE1nVHoxa3dXZktudTZtRno4ZHh0TXA5TGZtMHMzUjg2TkM1Y3p0YUtoaCt3Mk9Dckgva2Y2UjBHcFJ0TDJLWTBqT2tLRDlMZHY3dlk5bzQ5UkJyZUJWWU1QeDRCZ01NVGUrK3c0ZEl3STB4T0UxQTZUb1ZycjkybnJhQVhKeHlBM2dtaytFL29teU11L01YZUEwWTJ4SmR0ZksweW5EaXF4TE1QMFpiRk1acDVYR2FuZkFPcmwzTHIwc3hwMkwxdlAxbkQ4bkJUMWZMcVQyNytINmJXYmRqWGp0ekVlaVEwRXYxRDUvakhLc3BsMjMzLzBnVnBpSFJuZmJCR0JGOXNCTGYrdU1mMnRjaEFORGhQQnpRMmRxbzQwK2dvcWtFRGJQNExBcUtxSmlWTDZkaEpCelQwWkVDc0RsK05JV0lnUEtaTHFuNnpud3V6ckRJOWVzRGJnOHpwK28wK2FHMWpmRnNaZWNBTWZqbWxlMFk2RHZZS3VWWFhVNlByblI3V1JBTnZIaTBkK1lBVnBjR0psZ1VMTGtyNlcxdnRhOUxWQ0VJWlZBUzNobkhlKzBiYnI1ZXR2enNRV2w0L2pscCtmQURPVkpWS2FkMmJKT3V2Vi9SRUxEcWJ2LzNXbWw2L1ZYWjl0QUQvRVNvU05jTjVwSDJTQkxLSzhMTGZ3VTUwdmJGMmlBdW1pQ0xWclByNTBzcGRIOGs3UHRqajQxdnd0bVVYVWFuYlBZam1MR3p2MVkydlBxeXZhQ1ptMk5STWJhUXhKTXl0UFI5UXorM1JvbkRONjVzczFFTHdmaUlyeVJUVjVkS1pKSGlncks1RDFkaGJYL2d4eVFZanpXOVVJZVR1K09ScFVvSHJGc1hRM25hbjQ5TTNaU2dnc2JSSkhEaWM2TEsrVFA1RWlJK3FGdC83ZFhjcnBUTkxiQStPaVllaEtDZlA3aXcxM2x0YS9QVmI1Nld4RUJmVEFNUlBkM05EVkkxYjFZa0U3ZDRRaGtQVzQ3VjRqdHYxM2hVNE1id0F6bEFNZEhieGVjS2tKcy9ZTUY0S0ZjVXpKQzJUNk1QSk9McmhCZ2F3bjhzalB2Rnc2YWJiK1REQmpzc3dGZU1idEV4SjFjNlB2VVA5K01lb2YyMTc0bjZuVkoxelV4VnpsUXB4R21TQzUzZXEzZ3M2M0Q1aUlFNlRCMG8rM3RJL0hJU0MwYXV2bzBXZnI2cjdYY3NlVkRITTRQRHJ3bk0welBJc3dNOEwrY0NFK053ZklzSU5iZmdtYlcxc3k1eFBzNEQxaUdNNlM2dDNuZlg4dDRYbnpOSFVRTTFYaHl2S2dkczgvQU5XemhiOEVnQ01vUC9nTElCUmpYRzd0eTFrMXN4ZUpiZlJ0RER0YTV1OFQzU2YveDRhRXZtVmRGZTZQaGt0ZjdKeDZSS3R4M2wrWGpMMUR3cW5peGFPQVc3T2x2WW9Cd0pDVUxEVXk5L0g2OU03Zm5UYnpncUJ1UDRSZ1J6eEtZZUhSL1A0T0hOZk04N0dKcmlTcHNrYmZ6ZTNLMDdmTjhSd0lmcVVIWmc0UmhnQ2t4MG5tRUlwM09vd1hOdGdjZ0UrcStlSmUzbFJXenRjWjBMVk5sdU1DYTgvUUhBdjlsUVpVK2RhSitYSWx4b3dydmRUVys5eVJZUklTT0JLY3d6Z3ZMZVB6ekRoUm1PQXdzekp2UFFIdzhOTUljMkxIL0pyTndJSWVEYUg5Umc0TjZXQTdMN2xiL0lscnZ2VkcrZnpaVnB1ZUxCV3llSUd0NElvSGd2RUhxdktnbUd4cGNuTU5kcmZjMzE4Mlg3MGlXNkJkeWlwQ3B5TWphY0wvUHlBKyt0bEVLOEVKRXhoZSsvRldaTUpBL0ZhZC9TcWVJYTlTNWJHWU5INXVnNkRtQWtEY24rdnp3di81N3dMWDd1aEUrQWtTaTN5ZjhsT3gvOXVmVHBsalRBT1FZLzYvK2dHUXpxb3FhZXI3RWUvUEJ2bWo1Z3dwNzB6TzU2SWpLR1JvWmt5elhvUHRFdVRXOHU0OU94NW1XdlMrdXkxL1Q2RFduV3hkUGh6eitUb1c3ZFIycy9QLytnSDhlTDQxSGxEM1Nla2hNYmFuUS8vSmJzZnVwSnZzdFdjOU5DYnZQd0FrQ2hDZ0dDd0l2NTYzUXJoVWVGMWRkY0piVjMzU0U3ZnZXNEhGejFscTZjZHlvK1cxTUFzWldnS0tQYlZLYTFpVUU1V2xxaU5MN00vMjNTdlB4Vk9mRG02M3cxR2d1b0l6V1ZWRWlTWEdMRnNZRlIwZDNlSXZ0ZmVVbmw5b2JTOERySDM3ZnlWV2w4ODJWcFhmT3hiVU1Wemo1T01UQmw2dytJakJLRUhGZVNEWlpzcTlIOWtZQUxRN1pWREY0WW1pVnRpeXd6d0lWUDV4Z25oRGo5c1Z0cUZycUlPZFBlSmwzN0dsV0JYOHJ4TFhWOG1mREVobXBMV29iM2R1N1pMZjJIMmpRc2RrZU9yQkJYVWxUbkNncXhZaGd6QWwvMnRIb3pIVHNBM1FET0RUQ0VYa1FSMG5RVTZLS1E0elNkRGRHY3pjWUdYcGlzY2RVMEFpc1MvS0NwUWtTY0p2VVNFNjRqSEhWT3NqYXlsVkRFVlZDRTE0NjdCSGk2QWoyeGUzNDhncXVQYnFQZWpUK010MmlyQldNME90QVdIT0FoV0tBZG1idm5oYzJIWkE2djNSczdESW51REVDTEg1TWxqMXdqNElDbjN6bVBKbjgzRHZ5bmQrNytNQURCVUlLL0gyTWdOSFoxRndLMk5Wd0JpRFBlMSs1SERQajdybzNENGU4RzNic2FDai9XSm9ReDdlN2JBa0k3VjJmRmlBNldrNE5heUFIUk9CakJ4dklKM1NLakFjNDROMk1BUDRBYUU4WkFtWGlISTBlOUc5OXU2Zmh4NWhXNFFJc2FBSXhRUUtqekJlWm9yL2RqQXJrUWNEdWdEVzBVTjVZbndtZkRpTEpHSmtDakpSck0zZEkrcHBWZ0ZQNEdJSlJ4RDIzajNtOTFBRkxqK3Jnc1ZvamFBWXhHRzQ5bCs0dmFPeEw4dGE4ZUs4VERkWnhYdzIvWHcvbmlOZnNsUTVpelhXK0ZxQk9BekxreXdLNlQyNHdJU2JnOVBoQ2tXUng1REZpdFArZHNNcXdpZmhsbUk1ZWZaVWh4aU45Q1dWT2dqcG5SYUpFQzVVaUFIaTFsb1kydGhTbkdvZkRaR0VFcGl2R1FoQk1Yd3dkUldzQUQ2VXE2Si9KL1VWYldPaE5LZ0F3QUFBQUFTVVZPUks1Q1lJST0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJGSURPXzJfMCJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiODY4MWEwNzM1ZjUwNGQ1MmJjZTRlMjE2NThkMjA3YjMiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwidXAiOnRydWUsInV2Ijp0cnVlfSwibWF4TXNnU2l6ZSI6MjA0OCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMV19fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0wOC0yMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IlJTQSBBdXRoZW50aWNhdG9yIGZvciBpT1MiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI0MDgyMjAwMyIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTA4LTIyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjF9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjQtMDktMTAifSx7ImFhZ3VpZCI6IjMwYjUwMzVlLWQyOTctNGZmNy0wMzBiLWFkZGM5NmJhNmE5OCIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiMzBiNTAzNWUtZDI5Ny00ZmY3LTAzMGItYWRkYzk2YmE2YTk4IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ik9uZVNwYW4gRElHSVBBU1MgRlg3LUMifSwiZGVzY3JpcHRpb24iOiJPbmVTcGFuIERJR0lQQVNTIEZYNy1DIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfSx7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJpc0ZyZXNoVXNlclZlcmlmaWNhdGlvblJlcXVpcmVkIjp0cnVlLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJzb2Z0d2FyZSJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNFakNDQWJpZ0F3SUJBZ0lFQVRVQUFUQUtCZ2dxaGtqT1BRUURBakJuTVFzd0NRWURWUVFHRXdKVlV6RVFNQTRHQTFVRUNoTUhUMjVsVTNCaGJqRWlNQ0FHQTFVRUN4TVpRWFYwYUdWdWRHbGpZWFJ2Y2lCQmRIUmxjM1JoZEdsdmJqRWlNQ0FHQTFVRUF4TVpUMjVsVTNCaGJpQkVTVWRKVUVGVFV5QkdXRGN0UXlCRFFUQWdGdzB5TlRBMk1qVXdOek16TWpWYUdBOHlNRFUxTURZeU5qQTNNek15TlZvd1p6RUxNQWtHQTFVRUJoTUNWVk14RURBT0JnTlZCQW9UQjA5dVpWTndZVzR4SWpBZ0JnTlZCQXNUR1VGMWRHaGxiblJwWTJGMGIzSWdRWFIwWlhOMFlYUnBiMjR4SWpBZ0JnTlZCQU1UR1U5dVpWTndZVzRnUkVsSFNWQkJVMU1nUmxnM0xVTWdRMEV3V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVFkbEp0YXViQXMzWlhhVkZFczk0czlHUExJNlppZzI1Qll0ZGF0SnZ5M3NuM1JQbnNlTDM3TVJ3Y2pJQzlRYlBtVXV0N1RwOHU1cHNINXBoQ2E5VUpTbzFBd1RqQWRCZ05WSFE0RUZnUVVqU2JkTnBtcDl0ZEVUR0UyOGd3Z1phNStsYlV3SHdZRFZSMGpCQmd3Rm9BVWpTYmROcG1wOXRkRVRHRTI4Z3dnWmE1K2xiVXdEQVlEVlIwVEJBVXdBd0VCL3pBS0JnZ3Foa2pPUFFRREFnTklBREJGQWlFQTVqcnJUOGgrT2lNMDU1bjBLVFNkd3dYZGR4NjV2d3luTHI0ZmVuRXFUUW9DSUV4c0lMZ3hPRi83dnZoSEE5a01DK3VUMDJBNk51OVgyRWRPdDNzcTJqSGUiXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBUUFBQUFCN0NBWUFBQUNiNEY3UUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFMaU1BQUM0akFYaWxQM1lBQUcxblNVUkJWSGhlN2IwSmxHWlhkUjU2L3JuR3J1cDVubWZOc2tCQ2FBS01CQWFCSlB3aWJHTHpESDdFOFV0aU8zNngzMHJJaXAvamVLM1lXWGFlczU3anJDU2Uxb29YTnJKQklBa0pNQWlFUUFnaE5IZXJ1OVh6WE5WZDFVUE4vL1MrNzl2bjNPRWZxcXBicllGMmZWWDdQL081WjlyNzdIUHV1ZmU2T2N4aER2OXdrZkhtSE9Zd2h3dkVxbFdyT3Z2NitoYlJQbDZ2aTVjNk01azZUYUNZeStVMnVYeGVEdjNtY2k0SEkxTW8xR3RUbFN1eStTeDloYXpDNE1aL3RWcmRuczB3dTZ4RFpwbHNObHZQS21yRzFXcTFqUWdwMFVYdXpTQk9aY3YyWEhiWml1M3dPZURxOWZQMVd2M0UxUGpZNGNIOUozN240SmYrOG96aXRzR2NBSmpEMndwMzNIRkgvc2lSSSt0S3BaS2JuSncwVHd6M0V2N0FDSGt3d0paOFBsOEhNdVNxZkM0UHhzblZhYTlOMWJabGNqbmpGUUR4K1VPZWN0VmFiUjA0cWROQ3dGUmdWTGdSbGtWWVpVWEdaZnFkbUxlZUFSaUZuRmV2MTJwTGNLMWw5SU9KS1BCWE9EUEpJcHRNMGJ2OGZ6RFRDRktCWUJpeWFnOEV0ZzFtQ1lQRm8zcjE5YTZ3YnFObDZtbnk3QmszOE9xdWY3djNDMy8xdXo1YVN6U1djdzQvdnNpQWVUakJOR0Z3Y0pBOHNNbGNNWXJGb3N5cXEyNEdFeFhDRE1VZjJzaG81WEo1TFppb1cweEZmdElQZmtHWXFaWmhTbHBBdDRMSkhHWW40OHdId3l6M2JnQnpGUm5ER0ttN1dnVkRCa2Fpd2JTTWt5VVRaZ3JtSHpPYmdYWU8vR0FHeE82TFpTeEwxenFVak44T3pVRXQ0alo0bWJOTm50NjdUV2hMWkcrNnhaVTJiVVVpbnpQTTh2Q1FPLzdDYzBjcVBZWE5CLy95THljVTBBTEoxcDFEQzl4d3d3MEZ3UFM0QnB3N2QyNDl3b3lMOUZzMEE4TzNXcTZ1Z20wZTFFQXhVMkNxVEQ1VHIxYXFuRlVXa1ltTW9RSmpvZk9xOWI1cXZib3lteUhqV1BmUUN0WkFrbm9mWnNDVlNhWXdCaVByMURzd3k2MmxUZjR5eUVBY1MySWs4WFlxTGFqdFFFT0FIMDc2VFNFS0l4TGhLZjhBODB6N0oxeE5ZUjRweitsbnhJRFkyaVoyMjB4aXpDSktHaGVjNFBVaTdyK0EzSzN2Y1IxYnI0QU5oVkY1Nm03cTlDbDMvSWMvZ0h4Mkg5djN4Yi82SW4xYm9UbTNPUWhyMTY3dFdMQm8wUi8wZEhmOURKaG12akVSUTZ6SlBDUDU5Z3RoZ0I4UVpzU2pJejFUWUVDbjNJRGNMUWE2OTJnS2dkTjhtdjBEMGlIZTFUNTZhOHdZZjhZY0RETkdZd09HU05hWXM4ejVNa0lZUkFScm4zUzNSK245SDNURmpkQUFJa0FBREE2NDQwOS96OVhxdFVmMmZ1RnpkL3VBSnN6dUN2OEFjZlhWVjM5bTBlTEYvMzFxcWl5VlNwQmg5cmFEczAxQSsvaHRRMUtZWGF3R1RKdm9BcnQrMXRGL2pJYlVSVFhxMnc4OVAvZHBsKzFmNEYwQTZqVTVlTktkL040VHJseXZUWTVQblY5dy9PR0h4M3hvQ3RRZjU5QUNQYjA5MTJDZDZpb1ZySkFyTlNPNHE5VzZxTmFPYXEycDNvN1FXV25pR3JtWlhFUW9uS2lWWHdORlFKd211a0MweXIrUmhPWUExQ0J4NWVBT2ZrbDM4THUwMUJKUmVkOXN0Q3BoZ3FoS1hpQmxlK2E1VEM0UHdoSXpFSmVYREt1N1VtZWg1d1BJdkNYbUJFQWJZTzNlUmVZWGc3WHFxRGVNWmtJaW5yZHlPVEk5TVk1UmxId0dTcWFKcVZYZUNXcnpoNVNnZ09BT2ZrbDM4THUwYUx5Q0NEOUphaDBKMUJhdElqZFE0MFZFcmFOR2RCSEk1TUg4WVBoTWxveHZoQjlkenVPRDNtekNuQUJvZ3l4dkFYRktidXlnUUFHdHdscFEwemdRZ1QxZUQvay81RFJybXUxZnE3U1hNMXJWVmkzUnF0MUZDSitKRW5rRkpQMWllcDEvblAzRjhOd3RCbkZqR0FYUVhSbHFWZlU1QVhEaDhCcHMxTWlOZjJ4Y05mRHMva0pYcDJrT0Y0OVc3WG1wYVRxMGl0K2VMbjRjSk9KSnFyUWd6dmhrZW1rQm51QWZYOCt0Mm5Udnh6ZlMwb2c1QWRBRzFXcjFNbWtiRFlBRXdxQm9waURVT0tnaUFmZTJJSnZkMHRRcTNwdEphcVlHdnplQ3duVkFjVStsL25nN3ViRnRGSlAvWnMzV3N1NDIySnJBNE1zU216YXRmVmR2YjkvSGNvVzg3bi9YcXZYdGZrRXZxR0VnLzJoQTFkOVFxOWM2UW5PZ1BldlpiR0ZaTGxjcXpXNnpxRVV6ZXE4V0lXOGlrbGVmVFVYZTJ0SmVlcndaOVhucjI2ei8xejlyR2tBQzQ4ZU91S0VuditrbXkxT3VXcXU3bW5QL2M5K0RmLzBaSHh6aGN1dHhZYzJhTmUrYnY3RHZheEI4T2J1RjV3ZC8yZ0JnUy9tWm14SzBxNnNIYnE2dExyU0pMc3NtYllNZjk3cStUY3Zmb2xqVGxiVC8xLzl0a3dBWU93b0I4TjF2dUttcEtWZXAxVGlzWDl6NzROOWM2NE1qWEpaTGdPNmV6by9rczduYzFPU2tHb0QzOGtXUWhuU1hJeXE3Y3Rtb0lxcnF0bCs1VXVFQkNxOGw4T2RDYURhNDJIVFQ0VUx5YkJYM1ltZ21JQTRiY1JZVXE3eHZKaVdMMENyOEVsSTJUZG5wQ1BFYnFXV2VudkJqYmQyaWI0SUw4K0MydGZmODcvM3lUT0N5RkFEWlhIWnp1VXdtNW4zMkJFRVBncEVteERmaWZxbTM0NGYzN3RQcnF0ZEpYS2VCZFB5M1ZhZEhZYm1McEpBK1NhM2lrVnJGZlNNSTljTGdiRXUrN3Jtb0RRSzF5dXVOcHNZeVhHSnFxSHNyUnI1NEFwTTNrQ0Yyd0NobXMrT2I1VWdnaW5vNTRacHJybnk0V3ExL3VBYlY1MkxSMDlQcmlzVXVDSk84U1lWTEFuWUlET2JYMFBKdHZPY3doeGh0eG1IdnIvMGJESnoweUJrOWVnaExnTWVoMVVMVHJWYTVCMEQ4RXBZQi85MnNoc3R5dkYxNzNkVVBsYWNxZDl2Ni8rTFEzZDNqT2p0N1hhRlFra2J3K25GSk1ybTgwZEJFYjdzV202RkFiMVY1ZTM3bE4vSHJXZGtibzBjT3U5UGZlOXpWSWdHZ1U2Zi9aZStYUHYrckZzTndtUXFBcTc0OE5WWDV5T3Zwa2E2dWJqZHYzbnpYMGRHdDVVQXozcmp1VGd1Y1Mzd2RuOTBsTDMxRGhxODcveFpTOTVLWE9ZblhtZmtiV3JhQU5oZnAvR2UvM3NUSkVnQlBmU3NXQUdqUGVpYno5OUFBN3ZSUmhNdFRBRnpyQlVDRVdWWVQwUmd6QjdXL1dDeTVoUXVYUUFqMGEyUFEwTDZicDlNMkxHam1JVElieHAvbU1zS00xL0pCTTJRVG95SGlyTkkxRkhMR05ETkVtTlUxTHdJWE12aGJsbUdtenJnQU5PVWtqOW5sWC9nbi95SjVneHRVeHhMZ3NCdUNBS2hYeXE3TTUxbFFWc1E1c1BmQno2KzNlSVlMYVlNZkcyemJ2dVhMOC9zWGZHVHAwdVZ1Y25LaWlTbFMvUVk3bWlaeU1Jd3Z5amh4OG9SYnMzcTlXN1JvaVp1WWlOK25FQmc5bVdmci9KTmhoT1VkQVk2ME0rR0MxVnorTnhrUmFCSTJEZkZUU0hpMUNQV2VjVWo3T0RIU1RyaGFKbXFQYWFNcnNIMk1LS1RaOG9ZalhiVG02ODRVM2dweG10bkZid1JUNVQ3OXkrRGtOQ3VQUUFCUUEzRFZoQUNvdTdPbFVuM0pqZ2NlbVBMUkxrOEJzRzdEMm9jNlN4MTN6K3ZyczkxOGVxS0IrTmUreGdxTndOZFJMVnE4MU0zdlg2aGJoMkgzbk8zTW5WZmJPUTUrVEVtL3NDc2IvTkJCYW5qcjNFYmgwZHFNNHhFaFRJQVJoY2dldVJJQmFiVDJuajVkMmd1dVZuRVNaU1RrYXZBTGFCZG0vdEZQaEthWUxlS2s0ZHM2OFR0dGRHREdMQk9CYmFyVkFOOGJUWEdiRTBjK3M0Z2JvSkEyd1psZitBd0haU3FZR3NEcDczODdMUURnbjZ2bUZ1OSsrSE9uTEZab3Vjc002emFzZnFpajJIbDNYMTgvQkFEdjV4dURHay9PcnNwalkyUHUzUGtSUyt0YlZ2ZHc0ZVlmOHpYbVp2Njh4V2Y1Y3JEb2FvZ25JWkdEa1BEaEVoamVQNTh2eEhIZ3oxdUVmSnVkeGFXSnE4RFU5ZUFYM0RuRTVRVkNQTDV4S0p0QmVydW95cUFTd3NxbFRDdW9PdjRuYVkrdDZjRXNsN2NUUGpUbGwwU1Q5eXc0cUdXTWxwNVd4eG1CdEphOFZTWnBQN21hb3ZuVXJaSzNoSSt2M3hhWWRUNkdLSHF6cFFuMVQzNEt2K2wyR2VGSndLY2hBQ29WN1FGVU1VNlpRN1pTWDdYbmtiODlhckZtM1pvL1hsaTNEZ0tnSXhZQTVBWlZOSml6cVBiQXdJQ3JJaW4zQWpnSUNnVXdMSmlZVE04OHlZQmtNRElvaFlBRUFnbHB4Y2dnK29sNEFNSDc4OXJWR2g4elprd0lnSnpsdzdSVDVVbTlJMEI1TVNmR1FWRlo2b2dKY1QwS0F6dW9CSC9HWi82TW10QkFDS1pqT1ZqbWZEN3ZoWTJWZ1NiakZvc2RybGdvd3E0VDA4aXJFdFdOd2tzdGhuZ0U0NVZLSFNnZlNvUHJxUXp3cHhBeWdXWjFabnNRNFZwRXJER1lxVi8vazdTbmZ1MC9zcHN0dG51WGQ1dG5IQlRaNHBEWUM5Ymdqa0lUNFFrL3d1ZVY4bzBNV0x5ZDhDV0tJV2ZzMTJSTEdYRm9DcmgreXhEdjMvMUx2eEwxVWNEbzhhTVFBTitCQmxCeEZTOEEyQ3ZWZXVhT0ExLysvQk1XSy9UT05PQTc4Y3Jsc3IzM3JnV1dnazU2TS9FemUweTU5ZVBWOFJKVTdxYXlsTEJnNGRzaEoyczFoWld5MlhxWmxqSit3WkNOTUsrQ08zUm8vMy9HZ0x5dHIzKytHSXZWdFBiQmovMUhEU3B2SWJZUlI0OGRsUURvN09qeVBqNnRvbVZjRGdNK2w4MjdLbFFzTW1GSXJ2ZktodHlqUVdocERiUmtYQW1NVnlwMWdVbHlpbDlGUjQyUGo3ano1NGZkeE1TNG1Kd1hDOGtZaHd6THQrRFNYMi9EOVV4TlpxV2JHa0VZRkV4SDRVTFVVQkV5SllzVGhJUUVHUWFHdEJqODVjbnNZT0J5QlcxTHZ3UXhNOGJsdGJpYnpIRG1FUWtoZVNGL0xyZmdadndDMm9ldlMyVHoxK3E4anNYTjY5MmpxSE5JQXd2ZEVOaTZmZ1hYWjc0VVFoUmFRWXN4d1lKRUtDdUZFUDE1Z2pNSUcrWkJQK1pCdnhxRUxFMFRkQlJ1aWZxa0VOeWhwUU1RMTl0aXk0V2lPZUdGNWRrK1VqSmszaS8vWC9oTmwzL3N4SEUzOUlNZ0FDcGFBbkNZVnQwc0JjRFAvZHduLy8zcFV3TS9uOHRsZW91bDRrSzBIUC9WaVh3empyM05oaDQrZ2Jlby8vRmpEWStDTnRRaGZVRkc5bGFBMW1SMHJxblpzZXg4RG1hYkhSczdNYzZBTmc3d1BhL3RjV1BqNDY2ZkdnRGlXb3lFRUpnRllnSEFOMGtuMG9DbnlKWVVBR1M2S3RaWGlhSGlLK0RkeVhMYXhUMnlMUVJBRlFMZ2ZDUUFPSUFGWkpITW45ZG0rK2J5T1RHWUJqMkZBUEtobG1LemJsU0NGbUFPYlpBTWdOMldLNllaV0p0YkJQYUp0QkQyaGIrU3hUVnRRd0pIL21CdUxWbUNsZ1EvaERNa2xMTUtGWlZwakZudGV1eHZDa1RXTXpDK2pUdHJFMTFWNVRGb2ZDVGlzcGhxSitSSGdhTTJSdjVNeHo2anRzTDJMMEM3WTEyUVZQa244MnlQbWVQTUtodkJJa2JSWjUwdWpkNS95dHVBeWM2REFEZ0pBUkJwQUJjaEFQN1BmL0VyRDU4WkhQcHdaMmZSZFhYYTY5UkRRMFZvbXpxTitEYWFRUU1ZRFQ4ZFVsbTNkNlFRUXA1NitpazNORHpzK3FFQmNOQlprY2s0WnM0R1I0OGVRY1BWTk5zb1RTSVpHWTREaXdPSmcwNGRGOExSMEVtblJrTm9zOGhPRGFDemhRQ2dCakRrQlFCbk5zUm5ab29SOHZRQ0FPMG5BY0FQVDlDTmZEaGphb1pYSEVtcUNKRTFsR1U2TkVVSkhtYnlONHJTRlBkQ3dKSUdXeHNnUVBzZEtIZkVXUFNqMEFNenMyVWlEUXhHem1zOW1xVEE5QUZzTHpJNDI1bW40NmFtSmlIZ0dRY0NIT25aejMxOUM2U0p3RU5wd3VXbVIvdFlVWGxuaEVYVTc2elRHSEpMbHJtdWozMEM5VSszSUpjQXc4ODg2UVVBbGdDb0kydlZLQUNzdFZxZ0E0T3p1NnNiWmljYXBVUEVSdUthT0tMQzdLaXJzeXRGbkZXNW5weU9PTGdqeXBOS25vSzdtZktleUtER01rU3d4ZVpzWUxFeFFKRlh2TFkyeGdvRGtwUUNralRsempqMERLTWhHaFZOTVM4S3lnVjVVbU9ncEs5Z1JyV0I3UVVUa0NybFJWMldpVWhlS0lHQ0Q2c1RLUFpNMExSZ1BoYXg3Ujh5NXA2SlpyRmFvS3FXS3J6Rnl3ZSt5anpzd29lN1lFN0FqMVN1VEZsN2VKb0V3L05oTUtibE8vTktuZDJ1cTd2WHpadTMwQzFZdU5SMXdEMDBQT2dPSGQ0TElYd2U4V3dad3JacjZPVUdoQmlOaEY4WVRhU1FSdEFYNDRsL2lOU2VRajdlanJGWnV1Tk90WkgybnlMQ1pISnF3RFFtZFF6UnVrT21FUUFkOWE3T0h0ZlQwK05LV0FkM3pKcTZYU2NhTXlLNms1VHdZMXcydk15TG9CS3BST3BLa2RSVzFEV3FicklOQkZxUzFBTHdaa056aHoxTlpINGo5aHM3UWd2L0JxVGFYVkJFVCtsQStoalMrYVJkQ2NRSkVNa1loZXRtQ2dGcURtWWE4ekNUcGx6cGtmYThDSVJNWXJLL3RHL2FjYWxnbWNWWHZCaFlvU2dRdVBsS2syT3hkOTU4TEI5SHNRUTg1RTZjUENyaHdmWTJ4cHNsSVdld2FPb3YrREpDVS94QWNhdzJsTXd0NHdwWFgrK3k4eGVpR3FpTEJEN051cHVDQUR1L2Y3ZXJRVWhTQ0dRUkJ2MEpxWnJiaW5tMXhPLzhoOTkvYVBUczJOMnJWeTF6aXhicDgyY2V1SFFxVlpzc0VLbHQ1aWsweDByN3dEVnRSczJCZi9vWGYrTDI3TjNsNXZjdk1DWkFIQ3Z6dEJsNVdCd3VBZGhzWFJnVUFaWVRDTXl2YjdsQjVhNWhnSVJyTUVJMElHR2tydFp3YVM0QnFHVmxzdHprcW1PZ05ld0JvTk9ZcjhtV2VKaXpWYW1SVU1qWkhrQllTdFZ0MXg0VlpSaUpkeDBpUWVWakdSb0tFeEM4MndRYnB1dFhoc1Fsalg5YklFU0YyVFpPQ3pDSnRUZlNjWXo1d2RpeVZCZVNjUU8wUndFaGV2NzhHUzBOdUo4VXJqczk0amh0WXpjRW1ITTJlY2ZJUUJ2dnVQOFhZTnBuQWdPb0FRejg2UHR1N05BK2pCMk1ZSTRoNU0yaVk2UldhcTZ3Y2QvRER4enkwZHMzMFIvL3lmOTRhUGprK2J2dnVlOHV0LzJLYmQ2M0ZWNUhLNzl1dEdnMGVQM2laejd0dnZ2ZEo5MzgrUXN1ZmhQdzZGRmtsWkhHRWlNZWNCSUFXSVBXb0pKR0E2T3Vwalk3QVd0MHRZYkxTZ0JBWThwa0xsNEFjS25FY2hnUVYwc1YzdXBqMlV3STZHNENMNTY2ZmtOaFBHWVJCV0FKWkZ3RW1oTTEra3lYTGR2QU5CMWJvM1BmUTR4NmdRV2FmVXdUQktPajUzU3R4WXVYWXFscGR5WGFJZEg3MHprYVhFQ1R4L1FvM0hDVHkxOS9rM2ZGR05QM0FCNTNtV3JabUIvdFJlNG5IMEFjL09tZVJ4NzhQM3hVb2UwU0lEeWpQVEl5cmgzbjlwUjlDNmxGZVFxWUJWR3I1RXg4Y1FnNWNMaUFFck5OQ3NuOHdhMmVQYncvZnp4UlNKQWltTjFVcy9aZ2FJalJlUFVvSmZLbHNBaGsxMEZzYjVXL1h4TEVGTUppUWhRank3STFNV3k2Y0ZBY0tSRExZdVVSelFqVzFCUGJQQWd4SU1vL0FsdWNhL1hFbisrclpnb2FVVE8xQzJON2RIWE5rekRsc21Ca3hBNkg0VitFeTZVUXZFVDRpY25LRUR6azFoK2NUWEZub0k0T2w3dnlPcVJLZzdkcWgzZStxSTAvTXI4MWxobW94OG5xWklIM0MxTkFkcTN4aDMvNFJ3L3RmSG5uM1IvNzZYdmM3WGZjSWo4TkhMUEl6cDZRQ2RMVFJvM0VRZWZqa0poWWRnd3hjek9QZ0xnb2FoWTVyWUZZYS8zUjlLMFEzR2EzdUFHLyt1dS82cjcvL2UrNytRdXdCR0FQK3ZpRTBzd0N1ZzFZcmJ2dW5ubHloL1FCa1FZUWxnQWhtTlh5cHY5cFNBbWdERHlBMDFucTFzQmlySlFHTUdsM0FVS2J4Zm40T2tSTEFONVR6MXM4eE5FU0FIODA3ZllYQnJFU3dMZXpDMUVRRDlxRjkvUUV2MVp0QXE4bVh4OHZLb2QrV3lBS2FJN1I2Qk5IVFlaWWZTTjRwMFlPNmhCMi9hWGhjSm1qME1hY1p3RWtpZEtHNUEyWGpvdkZ1eEJWTnpweVZnK0ljVWt3ZTNEOGUrczBVSlFvWHZzRStSdmU1ZkxYM2VoZE1jNGQyT3RPUC9jMDF2eTIrY2ZabjJQRGVEUHppVDFmZWZCelBtcUVxSHFOK0RlZi9YY1BQZlAwVTNmL3pQMzN1cXV1dWxJWnpZNXdVVEkrN0MyRmdzZ1Bia2h1T3o5dko5UzR3U2FUblpweVcwZEw1Y3ZGYnFVRGFhZWVmNnBOeHYzVzcvdy83dG5uZnVRV1lBbGcxNG5EK0IvREhDa3ZEd3FBQ2xaTVBiMTljamZHbEFDQUNzNDZnZ3N0Q05aVXQrbmFDRUw1WEtYczZsUCtHUXdVcGxpQUFNQVNJSnZscmF6cEJRRERxU2xFak5jZ0FPU0hQSFVhajIwRHU3V2hXc1ZsMFE3NUs2K1J2WHJvZ0t0UFRxZ01tdkYwMjh6bmkzclUrU20wNFNHVk4xVWJ4dmZ4Q05veTNUMHVFeGlCMThLMWZXRU5MRC9TQ2FoZjlkZ1JzeXRieTF0NTZ0L2lXWDhaV1F3UE9EUnhlRHRoTTdhbGJSVHNGaStLNkhPUG9mWkNtWG5iTU85dkhSTEpNUnNENlRYR0VJNStPVFUwNEJiT1greDZlL25leURaSUpFL21sQVpDN0gvMndCS2s5UEZQT2F3ZnZZZWhPam5samo3K3FLdU5uWGNabE5FMGdKcS8vMTkvOUxXdmZKbmZCN1MxVXdKeHpSc1FHb0VITXJpVE9IdkNSVkVBa3UxSUp5a1JCOVFjM2tCVytJU2JKc29GaWt5V0UyRVVLdEhPdDVvVWRtOGo1QzFMa3ZERDlCRkZYb2JHVVpNQ0J0Q21MUzYzYW8zTExsc1JVVTYwM015bHkxMTI4UktYWGJrYXRFYXBsTFV1WU9Vem1Mc2RyQmp0QzJNTVlJSXhYaGNiVTBoWTlKb0txMEhjQlUyQWdtaHEwdFVuSmx4OVpOUmhXblBRYlYzOXpMQno0Mk91dU8wS0xLZDRPNVdiaWtqRHZIa0hoTUpHak1aOGNhMVZhMTE5Zk56Vno1NkIwRGpqM1BDd2hFZDlhTmpWaGs0Ym5UN2xxZ01uMVVlNVpTdVJuTUl5V1JmVU85SGc3QWZyYitzVDgwVjgvTXZGSHlzQ3d2MjQ0RjBQVFNxd2V6L2VDdE5Fby93dFRIMXN1UUE4SHAxMUhjV2M2KzRzaXJwS0JkY0pkNm1RZFNXRUZUMlZzS3pzS0lMeFFEUVhMMWpvVHAwKzZjYkdKMVMybG4rKy9WbFhieGpoeW9IMHEvQkFjcWJpTkZKdTdjWW01aWZPSGR6cmF1T2pYSVVxSHV1SEppUi9qTmNybVYrQ1J4UHpFMjBGUU5pRUlzTnliUkVSR3p1aTBBRnRTTXllcE1ZNDdmT1FGaUVUYmwrV01DaENaNHNVbmd6ekhVeURkam05WDJTMmd4S2xyVzJTNUZhc2REVXdUQlZxVjNXL0o5Z3JCMTREd1lTN2NuQ2ZxeDQraUR4czJHVVhMYmJFUURwYjY3SlpZWnFvR0VJYVFJSXZPL1VHMTkzcktpZU91Zkx4bzI1cXo2dXVNblFLZE5wVmhrKzc2bG5VQVF4TXFwdzc2NnJuWUQ4MTZMSkxsbHA2bHAzdHlJeGhoTDUzRUd4S056VG9xaVBuWEUwRUlUSTY2bW9RS0xUVFgyRmpJN3AyWnY1OE5Kd3RXVUkvQnRJMVdHVHZIekVzU1NFRzJma0RDdUdwU1NJeFh2U24vQk41SXB5cVBDeW9FazhxOGhDVkVkMCtZNW5VdXV3MEtvVWcyOWZjUFJDaWl5QUVUcDQ4NWlZaFRDUEdiVWZKUDNpWVlFaUdCL0syS0tDWmNsdXZqR0lINHNuTDBTTUhOZXV6akN5LzZreTd5L3oyM3E5OTZUQXNMZEZlQTZENEFKSXp1c2pQM2thTkRONUE3SXlMb25TSDJveHZIUmpjMGV4UG90dFhPcFNiYmdQOGdpMVlaZ1Fha3J1OVZPMGpzTEU5b0hwbk1LdldCZ2U4Unl2WXhiSjhIcUZjZHRXRCsxMW0wUktwY01saXBJc1VycEc0VmdKdGl4OUZqK3NxT3lxY1diallWVTRQdXFsZE8xeDU5MDZVaFM5TFJTamJLa2srUHFsQ1psMndTUFZNZ296UGNGZUVkc0E3TEJBcVVYb1JKeGxmbUtRL1M0VzBGU3cvY212V0tvd01HY1h4L1pja3l5WVJabG42bnhpS3kvQm9ySGhTQ2taZ01LOWxjZlZITzRKNENUSzBvdEV6S3JxbHAvWmtkMVBBSmd3bUEwb3J5cmplN203WDI5UHJUa0FJY0x3R3hvNUltWmtKWjRvWTVFUHNUd0hlUDBubUZWRVcxOHdzWHdWYkdsTVE0aFVJYm9IMThIVkVzUTY1MnVUL2F3R3RNWTBHd0l3Z0FOQnhqWXdkYXdNeGsxNHNwWVFFR1J6WGxTay9NajdKKy92QllIRmdaeGhOdVgzSHM3TTk0TzB0MFErYnh2OEZuOWJJY2QyOEdvTzFCWEpRNmJtZTFUcHJPa0IxemkxZjZTcVF6bFJKbVNhM052VkNsZ1JDaWRqVkY0ZFFtcEFUZEhhWHdVeGVQWEZjYlVSUE05bG1qQURRalB6TkpKWDN2K2F5YTlZcENwY0E5TlBNRDVOMXFoMDlES3N4RnYzNHB6N0FId2MxVGZtTGxJMnJuVDlIanVPMmVwek9wNlZwTU5QUytUQzU3U2Y5Uno4TEMrT0E5dGpmL0F5V0l2S1RQeG5YNHRtWVl4MHRQdmVXOU1BVnl3dVFTVzFweFVtUnI0K3Z1SGs5WFR3dzU0YXc3QWxNR2hGK1lqSW1GNk1qdERHY0h2Uk4vNlhqa0xMcm1sN3FLNHdjT1JUUC9nQ3J3R1BoLyt5bmY2YnY5My9sWHovejRLTlBmdTIvL2RuZi9EYUNtRzBLYlFVQW1ZbmdaN0ZqMWQ4WU05WUdHb1ZESXN4VFV4cFB3Yjh0aFU3aG9JSmRFbDZkWkV4dXpFL1R4NEhiT3BLbWlnN0FIbXlSSlJCK0ZOZmlwd2pCVmF4ZE5kTTFyTGN5a1ByVUR1cm5NSmdid1lRUndDaExsN2tLdFFTMGpYeWdZcU9BTGp1dnJ5SHU2MEZEbnlieXphN2I0Q3I3WG9PZmVjYXQ0ZEhrOUI3TWNnenJTYlJ0Wmw2L1JoOEZHTnZaZFhXN091cGZPNHU2ZURCVjZDT3R2ZW1ELzhDVXZMNU1nSnVRK2ZXYmxNcmEzc0lKcHFQTnZJSTlqa05EVUFESlVxaGNJUXhndk9qYVFLcUY0R1Y1V3hoL1VXcWxvVCtabE16RCsvMTZyZ0NKQXdOeWpPc2JFakF0WHNIMXordDFJNlBuM1JRMHE0akpQWmxiV1VSbHNDQWY1bjBWTHYvZ2lId2pVdngxelovMzQybS84ZU9IRVVNVkVMRWU5Nzd2Zys3Mm0rN29XNzE2MDlVclY2MjdzMURzK0hmLy9GOStOblVHZ0dnckFOZ296Q3ljTFc5UytjbDRUZVExZ3dRRndkQVl0M1Y2U3VEWWJRUEsrN0ZpZ2NucEZ3bUJoTCszVzdmeWwzVXdteUdZamFCL29HQ3RZN0FleEl5OXdYdlJFeXJnaWxWWTEwY0hxWnJoczNEY2tWKzR5TlZPeGNzRUJsV1BIbkxaRmFzNXhYaWZRRVRTM2d5Tml3WTAreUU5L2pQOHNoSGJZK1E4bkhHZXRNdWxhUEZmQ3Q1WlByRFg1VmF2azFQOUFVc1dXaEgzT2l5RGtOYUlmYUpsZ3VJeW5GR3NYeGhYZzNSeTB0WE9ZTWJFRW9PcEZFZUdYT1lRckdaTUw1SUxpQ3crbmM5YkxpWHhkZytWTUJIRjRQTVVVWGh3TDRBemZnNk1UK0lUZzl6NHRHNGlpZm41Y2cwUTI0SjNvd3FGdk91R050UFYyZUZPRDUrMjY0UEV6R1lGR2ZQU00ra3Z5TnVIZTk5Zzgwa2kwbmhhc3B4UlVoZy9OZWhxNDJPcUE3VUF0dlVhaks5UGZQUisxOWUvd1BYUFgrajY1aTl5aTVlc2NJVlM4UTkrL2JPL2c4RVhvNzBHUUFhRGFjeFBoZ2REa3hFREpaaDc1aG1kd2dCbWtsckdDNFNPOGFZR0ZUdktNN3ZDNlBhVlRkbDltTFVZZTEwMWdSOU50ZEVzd0VoSWc3L2F4TGlyWXliTW9pR0pMTThWd0szYmFETWdEOEZSZ1JyZGhLa3BWOE9hUE5kaUxSZkEwZ2RxRDZzTXkya1dLM2RBYnQxNlZ6bDhJUGJ4bGloUFdEZzRJOFJKWVdXYmdkQy9sV09IblZ1eVRQMmR3V0NxUWQydFRhSU9ET2MxWmRJd2V5UUVOSDU4UHI1ZnJPOHdYcmdVV29uNmU1VTZoZ29WcGNNUGJDRWtHWkcrSWNTN0dEZkV4NCtsOTNiK1JlR0tZV0hlVGdia3JWT0c4MkVqVG44aGpMQXhhVm9jNDFJejBOMFcyRG5VK3FIUmpZK1B1Z20wQzh1cFAxYUZSZmJGTml2OUxVQ0c5eWZNMjhManZ6aE9oaHZJak5TQU1Vd29GS3drbHArdC92RVAzK2Y2KzNwZFoxZkpxTFBrdXJ1NzNaTEZ5M29yRTVQL3QwOHF0QlVBYWdNYWdTbko2SUhwZzU5dkdCTUdKZ2phQ3dNS2tBWWhraUlPRUxOemtJalpOWmhRTWZwelFJVXdIMThkeW5UZVZBUFFyazV2aFBrZ3RFVllNMExlMWVOSE1XT3YxSVpZZHRseXpPQnROMVNWYjdhdjMyVVhMMU01S1N3YXdUalVDakxvRU1lWFlKaTN5cHdFKzlydTUyZGNxVlRTc2ViKytYeE5lUWZTK0ZRaFRTS3R5b0NsQjY4Um5Uc2dvaVRKUVJRbkRLMGlrMVlOeHF5ckRaMXltZjc1V2s2UWFka2Vha08xYzJodmtpVXp1eDg4aExLTjQ0c29XS2hkcmVLdFVVVVFFQktpS3g3N0dCYVhRZHZuZVgzVUt5REVNd3NOTXJDaXc4N3JvSjFEbUk1b1d4Z3RzUnQxaE1XZW1VQzdoRGFuWFZGWkJveFozZzc4aVhlNGpsdHZkMTB3QzUzb04vUUw4K040ejBOcjRDUHoyZ3RnTnNxS2VmQ1g3V2grOHZLR3duMUFJc2dRUEVKQzBqSUl6TWpmaU11dFNXaFRBZ3JEVnUrQjVuZlhiYmRnelBDRk9rWmN4UlpMQmF6ZWVsRHU3S2YvNVcvOWdjMW9RSEtiTzRXYjNuWHpKd1pPbnRpeWZ0MGFxQTlRWlhHQnFBTTlBNmI4SWdZMS8wQnhlSUw0QjlNUWFtUlFSNWpOLzlIcWJkNDBTZWxUQlJOUWp2ajU3dmVlZE1lUEh3ZC9vZWJzWkI4eHpqc0o3NWMyM0huZXZrSWRTd1cwSUR0NTB4WXcxYUR1bld0ekRXcGlGbFJubmhnTUdaN0xoNVRPYjd2Q1phbjZENTZVK2gzbkdJTSsyZktVSzNGVFozaFlmaHhvZXNSMWFnTEN0T3dXTHBqdjNuSERPOTBkdDcvSHZmTWRON29ycnJqS1hRbTY5dHJyM2RYWFhBdHB2bFQxNGFPckJPMjYxdzgxTnJkbW5hc2VQQUJmc0FVdVp0VnVMZ2NEMUpZTVE3dlYvVkZtTWo3ZmRrU1QvcGxWcTNXWUtJT0JqdEd1T3hzNWFBTzhFNURwbXc4QnNVQmFrbWpoWXJzU3RDZHI3OURQVmtaakhJeU44WEVKbEd4UHI2VkRYc29UQWpUVFQ0TFFJU0cvd29aTkxyOW9DWllOMEVCT1E3RHhqVkRvVjRKalNSY0VzZXpoYWdxbEgvVjNJQXczalQzV0UyVXBGTURZeGJ3clVyaFRHOEVZWnBVWnhuaGhNc3NzWCtseWl4Y3JUaDVNVkZpNHhPVlFsc3dpTEdOUTdocmJvN2ZQbllObTA5c3pMOW80Tk1UMWI0M1poV2V2dmNFNWZ5Z3RvSXF4ZUc3UERsaWd0YkJOVWRZUHZlY24zWjIzM0tnYldFazZQVGpzVHA0NDZVWkh6aGN5MWNrZDMvdk80eTh3ajdZYUFLcHVKaHRCYW51cm1iL0ZySys0c1R1ZEprMFdsdFlLa3ZzRlVkcUVYNUtTZVNmdEVScmFWb09sQ2ZRRGNZUUVBd1IyQWw4YkEvQkFDMmV0TERvZ0IyWVFyY0RnQldrUVk4MlZYYnBjZ3hhang3S05icUVoZ3hhb2o0MkpXY2xRWVhEU3dsZVMzM0g3ZTkxOTk5MFBwcjlTNzJTSVlSSDVFTkQ2OVJ2YysrLzhnUHZvUis5ekN6a1FGY2JDb3Y0OEM5NEJ3VVVmZUNsL2J3WWhiR0Ztai80U2RqR3Jad1FKZC96VnVBWStjdGhWamg3UitRWnU2UEhXWHVYUWZsY21IUVR0ZTAwYVNNYS80b3Q1eExEckNtUVNDS3dLOHp0eXlGV1BISEUxTUJBMUxKTFplUjBzWXlEa2xKTGxwc1V6djlvNmxUOUJJUVo0NzFCWFJRdFJtUTM4VFl0a0dHZDlGTWNUSXdTTlUrTUp4RGk4SlVqVnZ3YTF1N3p6SlRmMXlvdHVhc2RMcnJwN2g4c2NPYUM3Qm53VGxSVlRCV1ZtZ29vUk8rTnc3eGNIMFM5SjVsWHR0aVBwVmdtak1zWVF4NlVWMlhLODg1WjMwOVVFWnNVNjhJVW5VK1hLZTczM05Fc0FYNERBVkNJdkJHSm1NeUZBZThvdnNzK0NsSjc1QmdIRDVVUWdlNXVKWHVxQXdkZU91REVqZTluc1ZKbGpXQ2VyZVZRbDJxeXhTR2tFWDFCb1p3R3p3YjQ5Y01NOHNNK0loM3d3NEZPMGE2ZXI3dDBqeHFoaVlMY0RyMEJ0b1hiMmpEOXlhNTdkUFQzdW94KzUxMjNlc2szWFpybWxSVm1NeUV4aXlkS2w3a01mK29oYnZkcE9HaExhdk9SR0l4T0FRcDJaSVhlNCsvcjZzQzYwdHp3cGpFRnlBYkJZdFcybWxsYUgyWndIbTJyYy80RG13ajBRenNMODZJU0lkaEMvUWtNMzYwNGh5UUczQURQbHVuWHIzZkxsS3lEYzRuN2hyZFFLaEVpZEp4SkpmQ0VxbGl6S1AwRjgvMk5sejZ2R2FMd3pRNkZNb0pCazZsQldRNmlGMVpVVWxvYjhvNy9TOEljdUgwY3UybjI2U0pzRjZmWWFoVEFQUjNIdmc4THA5S0RHS1ZYd0RDWktsb2dQb2hWQmZCbUo4dkh3bC9Dd2NxZ3M5UFArY2JEM3B6VkpmSFVaNzhaRTlUU1V6NTlWK1JpTHYremJtN1p2ZEwyWWV4cXBzNFRKaG5Fd01hRmUwVWFnK2JiQWpUZmU5SW5CZ1pOYlZxOWU2Ull2VGl3QjJEQXdZL1hlM0xNakZEWGhEcEF0ZGpaQWlhSTRac2JYRDNzQkVpYSs0M2EvdHR1OWhwbUk5MmpWYVBxM3hndWRQeE5HTU92VXFsZ0NLQThBQTV1SGZ5Q1ZkSXlXQTVFcW9RWVkva3o5eEIvVWZqRTJ5dVF2NlVFSFM0K1lmSnZTbWcwdXkvdTNma0JUVlgzZmUzL1M5YzZiQjBISXA3bVloV3JySVErVlgzVUFoVWQrMmZGcklBRDQvTUlrbHloZ21uQkduOHhMY0EvaEZxeGhid1ZwR1hIMU5XN0w1cTFxczZGaGFEZ3dsVC9Ld2VjVE5OTnhRNHpMR2VUQnV4ZGtWSjRRckovRndPUHNqbnpaRHlxYS9XQUdSWG9JNGI3RlM5d0g3bmlQdS9HZE43dU5HemU3TFZ1M2FlbkNoNVJPUUtQS1lBbFRQWEpRWlNQWWx0YWVmandsOHVPMWFwanRxbGp2Y2krQSt4SUlzbllnV0c3ZjJON0hsMG5ORlBtRk9EU1lsczhDY0FuQU5ieU5ZMDVBWHZYSHhNUnlaQ0hBc3RDNDZseFNuVGltT3hnc0k4ZWJTc242TTB2a1I3OXhDTEY1SENlRUJRRm1hWERHYnRyc3Z6WEEvTm50MTNoSGpKSEQwTGpRZDd4ZHkzSXZ3ekxsNSsrOTEzRzdFa1BYVlFLaGEwK2NISFpIb0dWTlFVQ05qWjJmZXZwN1Qvd3g4MmlyQVNBL0ZZZ1pjK2FQWm14U28wcmVwQVdrS2VXdlJvN0pHanRvQUkyelAyZDJhZ0IyOE1LSUh6cUlaM3RwQUp3bDZBK1Q2MmptR3hBR2treTZPYmpha3RVNUprc1RQSGo3TDd0bVBhd1lRUXJ5TWZBamswQW1ZY0MxQXplL3FOb3lsY1d0dTZ1dXVrYXp1VEVpdkRSeU0yN3cxSUQ3em5lKzVmNzI3ejd2UHYvQVg3dEhIMzNZSGVadFNCWFdFMEN0NTZhYmJtWkNKTWNnNXFrN0xGSEFWZG92dU9lZWo3bFZtSlZmZWVWbDk4UVRqK3Q5Q2VOZzdOdHV2Y085Rit2R0lGU1lYcWZkV0RJSUdLNjdlWkJJWVJCczJjNHVQVS9BbVBUelNRVExnbjRaZHlzWXZnZkM3TysvOFRYMzE1LzdYKzdCTC82ZDIvWHFxKzc2NjMvQzlWNTFyYXRRbzJMUnJmZ3B5TXY3aDdabWVhZ1IxTTZkbGZiRVMxSUVoZXVGYTBlUU8xamtZMW1HS0dnM2pqMk9MWTRabWh5Yjh1T0hOT2hHTkQ3ZlVlZkpTUHl4WFUzRDVST2dOdGxJWVBqeHordWJCbXZDMUs1b1kwVFhqaXpCOEI3MjN4NThid1NNVUhRQitaZlBuMU9wbUpwLzYxWXNjMTJZMGp2QjFSMmdvamM3NFFjUmlpVE5WMm1yQVdBd2ZlTFU0TUNXVmF1V3U4V0xGbHBsa1VFejA4eVdXT2EwWHdvTTUwOWtOMU8rRFdsb3Fpd1VUcjRUckdPc0kzYnMyT0gyNzk4Zno5NUExSGl3cEJxeXdSVXd3cGtjL1poNktTZzlZTWxBVmRkQkdjeE1NY09DbW9DQUJuOCttSlBwZ3ZwOTZwVGpHMzA0YUhoYjZmYmIzNFA2Vk56VTFJUUVINnU2Wjg4dTk3V3ZQK1pPRHB4MDQxaGI4bXRGNTlIcGUxL2I0MFpHUjl6NjlSdXhqRFptNVdEdjcxL2dUcHc0WVJ1REtGZUdMeTd0N1hNZnVPMDJWNExXOGRCREQ3cTlXS0tjaGlvOU9EamdkdTkrMWZYMjlyck5tN1pBNHhtQnNCbUV5cjdJYmRxdzFaMDVjOFp0dkFaYXdySmxibWwvbnhzZEhkV0xOTW1BK1kxYlhBWXo0Ylp0MjdWUHNYYnRPdTFWRFBOQklCUzh1N3ZYM2Z5dWQ3dmRKMCs0SGNlUHVhblRRMGgvSG9Mcm9EcytOdTZHb1VGUWpYNFBCTThwbEdYWjB1WHVscHR2ZFZkZWVZMmJCNkV4UERTazkvY1IzTy9nQnVpTjc3eEpHc1NxK2ZPaGhTeDNROGlMNnUrS2xTdmRkZEJvQnRHZTFHNm9jV3pkc2wwTWZKcWFScUw5a3dLQ05qb0wxQUlLMUhqZzRMaENIN1B0cVkwVXVLK0RmTkNnaW12anpoZ3BqRUhGMXhpMS9DZW55bXBybmlYZ3NCQWlTN0NtUFJLdUJHTGYrcEpsTHJlT2g2ZDh1ZW1INjU3YnN4UExNWDVMd25qelBlOThoN3ZqaHVzVmoyQU9JVDQxZ01OSGp1azlpdWlMVXpOcUFOMDlmT2NlUHdKaFROV0syczM0YlFtTkY3dXQ4VWpNUitjTUlEbDFPeEdOSG9nenZMU0J4R3dmaUlNa21QeDhWekNaRjJFZG85K28wMExIeFc1MmFDUEJYemtFc0pmb2c3U0RKKzJoSG5Sd1FDbzJXMXRJNTJCdU1QdTZqYTRDZFpKcGVCM215MWV1MWVzVlBRYk11dEwvRkdaK3p0U3NzK1dFakpVM2YrcHU5NjVYTVp1L1JBKzV3OVhXOEt5OWQ5Vk9Ibk9yMTYvWE92eTU1MzhFQnVVZEJ5dWdCalRNNzMzL3Uycm5UWnMyd3k4clpyejk5anZjaHovOEVYZkRsbTF1VVdlbnUrYWE2OXhQZit3ZnVmbmM1RVFiNTBiT3VYdCsrdU9ZSk42dHNqTEhkOTM4YnZjaHBPR3loSUtDTCtGY0EyWmVpZXRuSWZDNFZPR20zK2w4d1ZXUEhaYmdvdUQ1cVE5KzJOMkJwY0lvdjhRRTRYTFZsVmU3ajN6a1h0Zko5eGNBNzN2Zit5Vk1xSzBjUXJ2eGhiTHYyYkRlcmR0MkJhNWRjMzN6K3R6MjdWZWlmUGVEOFRyY2dRUDd0Yi94M3ZlKzMyMVl2MEZNU2RKajR5eXBtcHh0YjlvdDM1YkxYZnRTc2FqMU1RVU9EL1owOXZTNlRqN0ZPWERDbGlZb2kxcFpGdGlRam5sNHAzNTR5N1lUUE1PNjA4c0NhU0dZT3VIaHJWR3dRSTlBNWlUbFVodkJCako5SFdQRnUvUy9hWFhxakkvdmFRUDdPNERaQnJRVkFKbHNUcm5HRE50TXBnS0IwQkdOWVVtS1orcWtYOXBOU2kwQnBQcUQ2UlBNVHpVL1V2VlRRc0NZbjIrRzFTemxCWURhQlkyWkluYWN5ak1kQlJXdUJWQlhxZGVOWi9wRGRMVmFBZ24vSE5icFRBdEo1ejNwelJtejB3NlNqR09kaTdvejdzNVhkMGd0VGVVRkpEdlZCRUF5UmwwenVuend3L3JPaDhRbkF3d09Ec1p0b0xoRTNmSERwNXdwK1JVbGU1eVlyem5EN0lKQi8va0gvODQ5K0tVdnVHOTg4K3ZhWjlpOGVhdWE1UVlzSmViMzlia0hIL29pbGlmZkZqMzZsWWZkeWhVcnNaUzVXblg0N25lL28yWEpYVmdLZlBMam53QlQzK2V1d1N5Znc3WFFpU29meHczdmVuQnA4NTBubjNEZmZ1SmI3dEhISGtFZDVtbXB3TXBTcS9qNjMzL1ZQZjZ0YjdnZi92QUg3dUdISDhRTU51S3V3SkpKeDVKOVRaNS8vbG4zMkZjZmNUOTQ1dnZ1a2E4OEpMK3RXN2ZMSk9PejFsSDlFOFRKaDIxSzVzMXoxa2M5dFIreGJMbXJIRC9pRzV5TjZTZUd5S1NmNWMzNEZIdzhHcXd6QlNBckdIOFFWMzhlNWhWWlk4QmwvMDJVYWJqOVoxQ0lMeC9xQjNNUk5MVjJvSUlUZ1VrOTJncUFRcUdnMGNlS0pwbDBaa0w4bEVEdzZSdjlJamRuZmlPdHBXU1NNUE56TFVaQlFPYjNncUNzdFQrWjN4aGZ6QS9HanpRQmtKZ0lpRHZLekdUbnpVUUNHbzIyaUpnVlREM1VRbUNtVVZ5bVlZaE13bjVsQk9LdU81WVRmSVE0QkFkMFlVMnQ5Z2psdzkrNXBtY05rbnNMWmhzZEdWRWJLanQvN1RCemhwS0VOSFJGS3JDQ2FMZlprZGZVQU03WmR3WFlUaFF1RlFna3h1S2V3d1JVVFg1c2xWaUptWEVJUzRZVkVBamJ3R1JrTkc0eWN1MjhBbUhNZDkvZXZlNXpXUHQvNjF2ZmRLOGQzTzhXTEYzbWJvV3EvaUZvQ3JZNUM2QWNlL2UrQnJVVTZqN0xCT0w1RFM0L0ZtSXBrZ1ZEL1JDYXkzblVrNXJCdTk5OUs1WU43MGRaTVZOakxPUWhoTVZzdU42eFk4ZVVKZk9nSmtGVmx5OU1rUmZieHJlcnFpN1F6N1FBRXNjWlBUaDJ5bWlUV25lM3EzS3pFWDVSMzdDdC9YaTIvSEJsUGpBRW9aSER0ZkxjTEVUNzJjYXVoVWZYU3poaWE3QlpXY3l2R1hYMFRUT3M3d2hMbDNGcmxqY2ZGWjRKYlFVQTFweDVaaHd6YllMWUlKSGJNemlvMWF3dXY0YjRIR0RCVHRPV0FIU0Q0Uk5hUUtRQmlQbkI5RUVMNE95ZjBnUk1DQVJpbmdTN1FNM0x6cnBBQ3JCT2J5YmU5ODZzV2VmcWZMS3RwMGR2eDVFSkpva09zWGppd1JZK0FGTkZHaUZ3cFlkdEdzRVNYMVl6bzlEZ3I3USt2WFlrTk5ob01RT0ZOd0k0UHJpWHdiQkZQTTNvL2N4aWRsNW5JWllJRkt4VWsxazNwdWZaQjE2WWY2SHZ3b0RqbmtVWEJ2cTZWV3UwRDhIYmZHdkJqRWVPSEJZREU0ekxsNXZ1MnIzVGZSc2F4Tis4K0lKN2VkOCt0eFRyMlJXK0xBTGlXWkd0ekhVd2RBV1g2VUE3RmlCZ2J2dm9mVnArckZ5enhwMUgzUDBRakJQVUlNVDRNSGhBaU1YQ0QvLzh2K1VYOHNZZkgrTGkza1YrNDJaUjRZcXJYV0g3VlhxK1BydGx1OHRTdTRGL0RYWEpRbXZSTFVxazFiakVXQXlNYjdlbE9WNmg4aVBQMHRYWHVSTHlLbTY3RXJUZEZmaUNHSlROYWdQUTRoMW1EUjdlRS9CVnZ5Q3dydFptckszaDJFRDgzRW5zbTd4U005b0tBS2d5RXFrUmcrTmlZU0NrcUZFWXpPQ09tYitaQXVOVENMQ2hJN2NZUHdpQkpPT0hXZCtFUUNDbVVVT3o1aWgzWUdvak1QQXNpQU9ZWlJxZkdJdG9naVptUmRySHdGaDhmM3laak1vMVdrKzN2U0tMQjJBNHc1RjRCcE5IZHp1NmtDZXVyYlZoS0JkYjEzQ090dzJGMkhQRjhnU1RDTWt1TmF6RzJqY0ZKT2RhT1VZR2ErSURibnhzM0YyemZidnJ3ZklndmdRdEdYY05CekJVOWQyN2Q4bUg3Y2srWXppS0xJUzJFNHVoWGJqSk9JWCsrT2FPVjl4alVObEpYNFg2L2N3elAzQ3Z2UHdpTkpwdTk0NTMzdWczS0hFVnpLYVZ5WEUzQUMyQ003YSt2aVBVVWM4VlloaEZCSHBXclhJTHNSdzVmMnJRZFowNDZyWXZYdXhlMmZHUyt4cXU4ZkpUVDdwRHp6M2ppbVJzMUxQODZzdlNXT0NVUEtBc2xKQUtGQUM3N3J6d2NKRS9zOEYzSTVSMzczRGxYVHZjMUt1dnVNbWRyN2h4SHV6WnM5TlY5dTdSMjV3NDVqbVd4UEFjaHhxbjFoWUVOUkIzWUsrcklTOGVCaW9qRHg1eDVtMUZOU2FJL1IzK3pOTWpoQ2U4RENGZVRGVytzWW5WYVNUMVV3eVdyeFVZTlkzNG9tMEZBTlpFZXQ2VHpCQVlsTE5ERUFpeW8vUnhXS09BUUpVVGFWdTVZN3MxY0RCajhvd1B1d2tBa0wvOUYyYisxaHBBZWdsd01jVEJ5M3dtTWRBQ2NVYVRPWTdCaHpYaXVaZWZkeE04Q1hmOHFLc2VQK2FxSjlvUXo4K2ZPNk5qclNxWC93M2RNRERJejZ2U0IxM2xQVGR2MmVxVzhLMDhSTElIZlhnQmd1Zm1xeFAzaHVWZjF5eXNuRkVIOGtBWmJmaURBL3RkRjVqdTdnOS8xRjBKVlhvNVZNWFZxOWU2MjI2N3cvM0U5VGRvMXQ2QndhcytSVnRiRytDeS9ycWFXVW44QiszQThtQUJtUFRXRlN0Y1A3U2Izbmw5dXMvLzBYdnZjK3ZXYjlBRzhuWFgzZUR1dmVkamJoTm0xVldZYVRmV0t1NzYxU3ZWWHdONmtZck56bHc2Zk9DdUQrb1c1VnJNdmo5MTIzdDB1dTNaSHowandjOHhRUTJGYmJFTWJmNlRQM21YSzVhQ2RvUXhOSUMyUTZHQ3VzL3lpV0MzRDU1aU1sdTJRcmN3ZFR3WmZhcWRmVkFHWXhDbFlFYVdCbEpFZGVXQko0N1h6aDR6TlhiTnRMZ1pWOFNTSm9mOHNoaHZwb1h4cTgvOHZxR3hGR0xyTHdWTHJucDdxNGU1UXJzSENzajU4V3hnelZoWWtNcnJ2WURoYzNZc25FZ2tGMWhtSHcySWJXMEZnQW1YUnFZR1JVeWNaUDdtc0ptWVgrNlUzL1JDSUdnQjFBQ2l6VUJwQS9ITUgrOEJCRWtZR3ZYQ0NUOVdMcHBKNGlEZ21wMkRFNUlac2ZXbkprZDRPL0JZYTVibjl3dThlNUNPeC9VK2IvWEYvblppNzY0N1B5ajFXa2owOUNJSWtvOTg5RjdYeTl1UkNmQTJJVzhkSnNIQnZ4ZXorMWUvK3FqYTgxWXcvVDBmL1pqNzBBZnZkaHZXYmNUcytySTIzdFNmZGF4LzBYNnNQejhuelVkUWVVMldpbXRxNXM4cUhqeDEybjBicy84eU1NSEhQLzZQM1NjKzhVbjM3bHR1ZDN0MjczYjc5dS9WTGNhdmZlMVJWWWUzK243cTJ1dmNMZSs4eVUxQ2EvcjZDOC9yMXAvVnRTN05ZeFFNOThFUGZBaUM0S2ZFVUYvNytxTzZWY2xiajQ4Ly9nMDBkNC83OElmdWNiZmQraDYzSC9rLysrd3o3cHpmaHprelBPUUdRUlBvYzdhT1dnaUZQSGJzcUR0eDRyakxjR09PaDVrZ2lMa1JSdEpoSjg4UVJuYjJJUTh5QnM2NE1xN0RKWjdhUldPU21xRkV0TjB0d0RJbWd6eWxjYUFlR3M5b1g2b2hHajhCVmsyMW03ZkducDcwYXdFcEtBMklyMm9MSlkyQTYrck9pcndzN0hURE94cUlrRUxGbE1XYkhnM09HTC81cnovNyt5OCs5K3h2Yk5tMHptM2J1c1dLaWRJd1kyTVEvclBpYVR1ZGNzbmU2SVpOSHVhTzBhb1lzVjlVZU8vbjI1ei9kSm1EOEg1UGZmLzc3dmtYWDNUZEdEaW16cmFBVDlJT1o5SG9vNlBjQk1PQUNBVmdtV0hOWWMxWGdlckltWVMzU3ZtWk03MDhBb0dLR2Yra2tKazN6K1d3WnVXeDJvSyttZGlqWFdOK0ZEUmJLcmdQdlA4dU93SElINmIzWlR4emRoZ0RmVmh0MW8xbHh0S2xTLzJ1TXplZytGMStYcXNPeHZpaGUvbWxGMkdIRzM1NXFPS0ZUVnRkQlNxdTVaVnhDNjc3Q2RlTEpjd1Vaa1RPeEJ6WU9lbk9XUXgwdnRUQzZUNytGTDlZaEVGTzlaZ01vQXh3ZlY2TDYrY2E2Z0IxU3h1WUxNYzVucHowTXhYdkpQQnkvS2g3TjlmYWgvZERlNW9VbGRadWNEVys5UmhhenlkLy9sUHUxVmQzdXU4KzlSMlg0eWZqTm0xekV6dGVWRGtDT0x1eXJpeTd2WUxkK2hNalNNekttanRvUS9tTnJPZkxtb3lpc2NVMjJJQjEvY0NKZU9NV1lCM0RqRmdzWk4zQ2VkMTY0U2YzbXBpU3libWhXVnV3R0hYSXVxbWpmT0VHaFllZDJTaHQzT0p5RUlqMklCZUVKU2NLRUxYVHNjbUtmWkNHd2tEd1pXbUJVTXcwNktsYVJjaHR1OHJsYm4yL2R4bFl6eE5QZnROVmhnYjFVcEFLM0ovNTZYdmRiM3p5SHl2YzkxZzB3NyswWTc5NzRzbW5NYTZIM2VsVEF4Ti8rQjkvcXh0dFVBdmh6V0JESXdmTmdnMWs2bit3Yytab0NJdUlqQjdiRlM2M3phUXhoVGhHYk5Da0ZxRFRnT0Z1QUxXQXhDbkFzRG1vcFlBMEFuOFNVSTJMSDVxdENEK3BQL1JHa3VBRmNQYVRKUUtQc0dxRHpIZHcxSW5KYU9ra0Vlb2NoQmhFZWlOUUE0WjcrOXdQZnZSRDd5SjhKaGdML01yeHVuVWIzUG9ORzhYOGhNcHBOanJjZ2RPbjNZc3Z2dUQ5R1FJR1diSGFianZDeVVGUHl4Qm0vQ053SDhXU2hXMFY1c0Z3L29EMUdhTUtQRDZtSngrNWlaa0UzM0pjSDBFOW9Da3dLV2Zwc3p6WTQ1bWZqTVhyTTFlZVJCekQ5WWVIaG5XUWlkZm5PcHhQOXVWS0hjYkFaRVJRQWV0cGJwSmFPZkdqS2xnOURMR3ArdmtnUlpsQ24yT0p4WGN1MGgzSVlRTGdwbUtOQjZOUzRQS0RFZEJHdkNEK1EvMlprTXlyc1RoNFF2WFYreUV0bWN0QjY4cnpmWkRRVU1LbXRkNldwSEZheHRJUkFrSjNPU3ovSkVLNUFxVkJEK3U1WURkQzJhUXhwY0hsQ3N0QndXMk5sbkU3OXZwTlpzQlNtc2xRZzlsUXo5d0REendnUjFzQklBbUMxS2I2QnVZTXpHcG1VaERJM1JBM3hmeXd4OHdQTTVHT2xOejlaMk9hMnc0QkJZcnZDQVF5cGsvZEZhZ2s3Z0tnL0Rhb1d4RWpCREpMOUVjM21zY0dvNFVJbUluMEVNL0pFNVlPaUJ2WDRMMHR6K2dpSHJEeXlibHdSSmR1aGZhQnlhQmV2L1RjRDkzVFAzZ3FNWHQ0aEN3U1dVV0EzNnU3ZHJwdlB2bUV5L2lOSzVaZmR5VlFPTDZkTndrK3lFTUJsb2R3NE96S3MvbjIrbThFZ2tMN0VId2lqdy90WkRDb0ZVeU5nd0lRd29PZzhOQW1IRWVSYjRpb3JhQVpjWmU4ZmdhTXFZMDZUOGk3QnRVOHYzcWRHeG9hd294MHh1VW9FTkYzZFdnbVVSMTllU0xBbjNtcmFJb2pEN25aMzN5cWtNSVo2Z2dEbFRhM2RwMGRPZllldkg2Y0tkM1VMdmpVSjRReSt4Wjl3dnk0d3grdVU5MjdDMXJVRnFWbG5DSTBHRzRpa3ZsSmJLc3d2bGtPbm1Fb1QwM2FKUnFneTgrQVZsRzRmMlFGU3FQWWE2OXJzN2JGMHV3RXhxVkhxQ2xKVlVGNjlZMnlpZk5xcndHZ1VvUm1lRlFzTUh2YURHRnNNTE1iNDVQTWJtNGZuMjdhNVRhN3BXbDJONUxVTEM4Y2d1Uk5hZ2xKWWo0R1ZiMkpVbjhxSzN5VFVXalF6NncrRUFOcTFXb3hCUXBnallzQlpJTXFqU2dkUVVlVU9RREJWUnMrclYxbStaRUorWnF0STV5cDY1akZuM2RmK3RJWDNGRStIaHZxa2V6TkJIaTQ1NnRmL1lyN3poUGZjdVdUeHlGSSt1MWprU2hURmd6RzJaL0ZTeGFSZHM1c1BNL1BaOWp0UG5xeXhLRk5RQ3pyeVdNcUgrdkovUVM5NGd4Q09Lb1Q0L24wU3FQK3J1dWRCR1V3bjBJVmJNc0htbnBZQ3ZWKytOdmYxT1pqYnVVYVZ6MStXR09FWXlQa2E0YmxsK25zMUhvK3Jvck40aHBMaW90OER4L1VZU3NtNUVOTFBHN005bVlZSVVOcFpCR1IrVkZrN2ZTVHl0UTBZZktyVUJxdkk5Q0dvR0h3UVRDK3I2QUdlM25FM2dGSVRaUVRrV2tCTlN3SHUxd1BoQjdISU12WEVtMjhwd01mcnFwT0pPL3VHQW9Vbk9pL01BNVBuRHJ0em8yT3V6SXVQMWwyN3Z4NDNaMDZWM1BIaDZ0dWVJUmZDall0QjJYZWQvLzk5MnVXYVhYQ1FIalhMYmZlT1hqaStDMzkvYjF1d1lMNVNtakVOb3hOV3ZUbi9kaW9VVGorRkI3aUtzenNGc2I0OHJWdy9RZTdZalM3YWM1QXgwK2NkS2RPbmJKSEgrRVd2TkVhRnBpTXdzMHdManVDSnhtR3J3U3JIajFxYnBCT2oyRlE2b3M4NklDa01Halp6ejZjNzg0dmdrSHo2TGdDdElISm80ZmNPSVFDQnhOQmRmazFQdEg0Mmg1M0ZqUG9LR2FlYzVpMXoyTEc1TWJXd1lNSDNGTlBmZGU5QkpYL3ZEOHd4S3d6b3lPdWdQV3BISHk4VnB0SHVGNnFmWXpKcWxEYkMrczM2a01lRmNhdDJ5QldlK0dmZFpHZ0hSdlI2Nmo0bUMrMUh6NEdyU2JGandsbkNtUUtjSnNOK1JFVWxvSEhWTXRZT3l0UE5hSy9Qb3JHNjlmQVJObFZhMlRubzhBMTFJMFFNOUhQLzdFdWhhM2JkUTgvdXh3YURwY25ZOUFVQk1Xd3VqTmZhRGM1UHEwSWJTSy9ZcVdyN3Q5bjBRQUVDNVpDRnRVeHAzclczQlQ2ZWdxY1U2N3dZU0FLQXpBSy9Da0lLbWpqd2pYWFl5MjJ3RTNzZUFVemZNVUVRSWdMb3ZaWjdPeHlpN0ZrQ0gxaVZ3MVhOcVJkTThGaTh4TmYyZldib05YMXloMEI0MmZrNEY1SWRQWWR5Z25CdFdYOWRmQ2U1ODZNVk4zSVdOVk5UTmE1VmVPR3NFUWNnRERudUo0WUd6djU5UGVlK0svTW9xMEF1UGxtQ0lDVHgyL3A2K3ZSMjJuVWJPeEEybEltRGRyNWp6LzYwVE5ocHo4dHdkNFl2OWtPa3AxK1pvL0loeGsxaEhuaW0wOU9RUm9Xd0poMHB4RzdVeUVOMGNpTTNGdFFldlFEM3dqa2VHS3RXSlI2blNWaFZpajA5MEVTOTJOdDJPdjRrSkJVYjNRRU12QTVOVUNqRlEzUE0rZFhYeS8xZHhLejl6Zy8xcEZLazlFZGpkT25CdDFSekxxSGNlMjlQL3FoTzNMa2tEdUpKY2dVbGd5Y3ZhaGVoMUdsdC9oUzlRWVQ4TDBFS0x4dkV6SW9pQ2FJbWh0R05wZ1Uwd1JmZmM3ekFmUG5RNFZlSWliWHN3NExGenEzQUVRVGRjNHVYMkhQNlBOY0ErcXJOL2Z3cy9FUWloa1MzK2FEK0h4bHVDc1dsRWF2UTljMXJYRlJFcnMrQnl6enlrTUZoeENxZ3FrZDJwSnZHTXJxYlVEKzdVSjBMMWprTWt1V0lTWHlZZHVoM1dvRGR0Z29RTlgzL2NlM0ZSZXZ2bzVUdXIyZWJTSHI0K3VGOHZGdFRTVGVHY2lodnJWQ3lVME9ud0ZqY1BZUFJHYmlHUUJ1OEtITUM1ZWdIWmE2U2libktzVk9WKzJaNTJwOWZCTVFpR2JmUWplVkw3ckZIU1U5ajhBVG1tbXdoTDZUQUEyQjJPblI2R0Z1L2VJbnUzU0Z5N0FjQ1hESndsZUMxN0hzUmFPcWZlZERxOXZHWllyWGhqbW1TS2NIQjl3cGFIN2pFT2pqNDJOLy80T252dk1GNXRGZUFMejczWGNPbkRoeFM5KzhIb3dEKzhZZSsxRW1JM2hUbmF0L0N6ZC9zMXZIeDNiKzZUOXB0eGdOZHYybTdaYUpwWjJCVGc2Z3NoUUFCYjV0aDZtWlZ3SXBSeEp4WEx1MVNBR0FodTZmRDlWeUxkYXpRNXBkNUFsaTUyUmg1c2w0R05SU2pjSDh1ZlViTUVnSG1ycFVvQ2Q2bnh0aHBVVjhyVmZXVFowLzQ4WWduYm1uRWNIM1BBMCs4VVZtME1ZYktHZ2I0YnVJR2syK25tUkNhaXQxM211blgyTWhmTDRFUCt0VjQ1ZDl1S0hGbDF4QTBQQmpKMVVRZCttcklMcTVlYW5aSDlvSDErL1VMUGhVSUk4MTgzTmlTYUpncExxdXo0SWhQOVpBbWxGVURyYWJMeXVadnJzYnk2cWplc2NBTnhmMTloOW9CeUp1M2tFNDhGTnJWa2VNYzc2cWpTZmUyUDdLTnNwWTRNczd5T2c4ZThFWG8yaXpMaERLVlBkRWV4VmFZbVlaTklYekk2N0tqVVNxL05hMWFlSlZ1UGVCOFRENXlzdXVnalpnMmtCbHRGTjNyWUxaZjdHT01jZEwwRVkwbEpYbFQza0ZoOVZLcnVBRndaZjFUd1FHc084blVZOEsya29DQUlVOWNYckF2ZWNuYnJiYjV0d1RFMDI1SWZUekVNTE84VHhLTnY5SFR6MzUrSFBNZ3d2QWxxQmFKQk9abW9ySG1ZT21WLzJDUDAxSmRUS2Z4WW5XL2Q2dWRDUnZqL0tSR2V4SU00MWQxMHZZNC9UTlpwTHBBNlVkU2NRQnlXQ2ZCY1dzUFJqQ1cybkZrdDRMR0lqZnZLdEN0ZUl0cGhyVVBqSUd2NU5YTzNuU1prd2tUK1lweUFQWEFsTnp0dUw2VWdOYVNJMEdnZVZnZmZqYUxLck01bWQxRFBtR2V4VjFyUC9yV1BaVWR1OTB1UTFoc0NTdW5zamVyRWhIclFQdFpxQnZDREZJVFY2NzNsVmVldDdlQ3dnL3BSRkJZSW1DRzFyVHpwZmQxRFBmZDJXMmx6THc1QkZaVVU3ZURhbnNmdFVPU0dHTnErOE0wZ3cwQ2NLeWhyZGN1VVNvUWxQaTI0SENPQXY5SEFGbHphOVo1eXF2dktUYnJSbG9JWTFJcDhBTWYraUFoTHU1WWtxQ1dzM1VDOCs2cWVlZjFkdVdrekZWRnN5MDgrZjM2d1FrR1M4SVBURjNvdTZHWmsvR1MvcEdvWWxvVmFyNlJNS1A2SUMycHdOTUpHUjBDa0w0NlplZTFiY0tSa2JQUVJzNTUwWkFQTVhLQ1daaWNueDhRVS92d3o3NU5KdUFnS3BJaGhKekJkTWFQbUorejZnUnM3ZXdLeDNKMjZOOFpBYTdNWGJLcnJ6TkxqTnBqK0tGZkJJbTRzUVY4SlJDSEpDS2tuQ29BNkZlNTZoK1VxcWpZWkd4MU1vMEVGblhJeEVvQTJhK3JMNkRGeXRZSVZUSTVhWGFsbmU4NUNxdjdiSmJhL0MyMGhDd3FaNnhXWnVZMEJ0eCtLV2Z1TTBSSC8raFRianh4bGVSYStjZmc5SnVOemFNbUFnYXBnMS9GanRKWkhveUlSbTB4bGQ5clZrcmY2Z2ZpQkFvSk9BUGtOd0Y5MTZFUmJNL2ZWM0lheE84TXhCZXZSNmd1Tm93UVAwZ2JDdXZ2T2lxRUJaYU9xaWRySzMwNjh2QmRwUldNb20yT25wSWR6QXNvMGJDVHlEVWl4OUV6Zk9RRnZNZzhhNkZweHlmN2FCMngyVUs0MEp3ODZ0UnR2Rkc5cW03RlN1V3V5VkxscmpCazBHUUIvamEra3VsMGVCQkorUFpUeXFZMWh5WXR6ck0yNEVNajZsenlYSTdlczZKaW1XRzl5UGZmZHdORHcrQ1Rvbk9nTWJRaDN6YUZHUG1mMzcyczc5bVIwK0I2VFVBRGl3d1ZCT3pjUUQ2UVVlVC9oR3pwK3lNYStFV3Y5SHU4MmhqcDVtMHkwemFJelA0MHd3RHc4d1lZZEJZU0tDMEl3bDRjSE9QNmlSMzJBRytySkl6ZTZvM0UrbFFISjlYVFMvTkRETkxRQWptbDRLcko0L3B5R3NWS2h5LzNaK0YycTdPOTNFRU9nTUJ2UDJvRjQvNlk2OEU0ektkWmxITW9GbW9mQnpJdFlQN1hYSGpac2lhSXVSUTNpaWIxMjAvRWcvWDhDUVoxNUV5NlFZcG5qOWd4S2ZidUZtWk9YNE1ZWG1YR1lVNmp2enlYQkloRGZNVEtYLzdWSGtyNGxPR2dlVEdHcHFVZ1lwUHQ4TVNvQWp0aHZzaWRqc3VCK1lMNVNNaEhVMldEL2Jnci94UlZ2bDNkT2dGSGc1TEZ2cGxSc0hVcFU1WGdHQlJuZjFtclI3WlJUaE5IaDh1bFlxdU1IVEtkYTVhNVVxZEhYQVhYQ2ZXOHAxOEowQlhwK3Zac3MwVnNIYm0rd0wwT2ZZVFIxMG50Q3VseTdNY1djMytmQnN3VmUzV3NBNzBQQnU2RTRodEVScThJaWNUOGc1VUEvS290NWFTYUFzS0pBcXdReGhieis5NmhRZCszT25UM0E4YmdCWncxcDA1TzNTdXM2ZnZQL3FrUXRzOWdKdmVkZk9kcHdZR2J1bnA3WElMTVp1SmJmVHZoeWVaVDRhNXhkU3kwalM3WXFUc2ROSm1mZ3BUaXFSZGtXSy9wSjJtckdaUG1zRWZ2MjVnY05DZGhzcW90N0tFTVAxNnBCeEp4QUY4d0tpR1dVcXZ3K0twTDNZQVQ2aGhrSEtkcVZrUjRLRG1acVBOQ1BJQ1lNRXNLTzFCc3pIU2VYRE5xOE0xWUtvOG1Ja2ROam1NOVNpV0dlV0JFeWhCc25CUmhtWmpYVkF1dnFZS1lsMkRqL2V4ZVo4K3YzNmpjeEE2bkpqRjFNZ1h1YnNPUHAyR05hSVluc3lIOHZNVUl1TndoZ3VNTHliekRFV0dZWnpDS2pBL2xqY1phQjhLUTd3TWhFeHA4emFYUWZ2S2o0d1ltRkVtQ2VxOVo0NlFMcm8rMnFvSUJxcGpNR2VyUER0dmp5SG5DeDB1UDMraGN6cXhaK3BzTkNNam5IbUZCdVl2VlY2ZGhFU1k3R3VnbWxPWW90MU5RQ0NQc1JIZDZjZ01ENWtmUDNHdU1KYUZaeUQ0Mlc4SWdVTE9GZEMySFN0V3VnSm1TWjRnNVNuTjdyVWJIUlpWcmdnL1BlZlBrdUVuNzJxdXlOZTNuUjEySzFldGRFdVdMbkVuam1ONXdtV1FsUTdVaUlRL0RGYkZmTHhmQXl6TVF4YjhzRzVicjVKWEJHYUVzazFnN1BCdUFNY0lSOUNSd1pOdUdjYnBHTWJmS05yMDNMbGh6SzJWWC83RDMvMTMzN0dFaHJZYUFHZFdNZ1FaU0xPMm4ySEZkTkhzNjhPOUdXWi9oU2xOZ3oza29mZytEN2xqZTVRKzhrdllhWUxzbXUzTkFEWkVJQ0hsQ0loanhUWjBNdFNxQWdaSXVKVW1JSUFDUVJ0eUdIenlRcGw1NnlyY0RqT3lIZGdwSHBlRnlxeGRiOVlUQXllN2NwVU9BL0hGbitYS3BCc2JIM0hqNTRhMWowQTF0QjFZSnBuK3lVRWVLdzRESkx0OGxSMU9ncURoZ0lvR0Zjck85OWp6OUpveEk0OFBsOFNFZ1NsanBrMFFaMGRvSlFWcUZWaitNSzBZaWtJT3Ftajk5Q21YWDdISy9DbUFGSWFyU2dXRlhZZHJlTGlJYmpLeHBkZTErSUpMQ0lnTVZHbkdSd1Nsd1hUbDhnempKcDVQSnlpOXhZdGFRZTdZVlAwd08vT0ZuUmJGTmdqMVZ1Rno1N1EwVUFDalUraVJFQUZGUXBrZ0tDR3NDbGd2Rnp1S3JxTy9IeG9BQkVEZll0ZXpmTDBybmhtRk50RGorRVpqQ2d3SkFnanNBbFQrSXZxQTM1Nm9sS3RRcjhlaklxVXRqVWo0ZVN0cUsyc0lhVTdsdzZHSmhJa25pUTUrcDRDYnJ4U0diR3RjKyt6WW1IdHkxeXNENTg4Ti9jWHcyY0hmcmt5Vi8ra2YvZDUvK0F1ZkpFSjdEZUNtZDkwNVNBMmd1OU10Q0JvQVFVYVV5WC85eUlTM0dGQ3VLQ3oyTjNld2gzeThIOTEwbWNXSHlkSVEzMkRYYVcveS9YQkRROE9heVlKZk0zd2EvU2JnUFRoZ29UZGg4dWRybmdGMUtJRUkzT2xmdk5pWWtmN3k0ajNqNU1uRnFxdEFjNmhEamVSWmJUYzFvWjEwSFJzZDR0dDVlSys1ekZzeStoaElHWGxsTUZ0ckRZdTBjY0VTd3lGWW9ZcnJVVlRNYkxuT1R1MlMxL2g5ZUpRbFNib05Dc0dTM2JoRk8vdGtTcXJRTERJZi9DRXNybWRnVDJUWXdnYWs0WDE4MWtGbFFaaVlCMWJPaU55UVJEbFVLTlFsSUprUGl4dVlWOWRBNHNMbTdhNjZmdy9Da0tueTVXRWNEdHFzTmdHejNCc0FneEVxQzY0WnltZXdNY0hNcFYxUVkxbS9TZDhuMEZOK1BscUl6MlBBMUk1NGg0SzNTUm5PRUdTcnR3SVhJS3hLMEFMSTNHNFMyczBWVjduaW9pVmc4R1Y2ZFZrZEFwcUNtODhoVUpBekhTY2l6djc4U3ROUzlDa1BiVVVYQm1nVFJUK05TUGlGeUI2cDJBcXpkZ3lvb2I3NnRtUUNiTmZxMUpTcm9Fd29wUHFEVFRzOE1kNzV5c0RwWC96cW4vM1h2MzdxeWNlZnRkaHB0TlVBQWpqenRwNzUvWXhMTStrT2RzN2ttczFEV3RvWlJudWNqL2x4MW13SWErVkhFMlRYYVcrMkI1dkZLTmlFMkR0Q1VHdGJRUU1VTXdLWEFyeWVua0xFak1hbjVmaEtNbnNzbWVhRUc5djNtcXV0WGV1eVYxN2xzakNyeDQrZ25Ld0hENU9BOGN1VEVoWWNZTHh2em9NMGFUUVVET0I3QmZpTlB1NUg2R09kVUtkWmR6OWlvdGhLaWJMd0ZsOWgzVWFYN1o0SFA3WlJrdm5qNGNVdzVkUFZwWUZuTHo2MU9HSG1ORlVmREltdzRnM3Zjc1ViYjliSFVSaGQvdVFRcGJFc2lHQnFRNUVxdm5iS0tXU1pwMmtLdUxCOWh4RmhlWjVIWUY1SzU2OVBnbCtVbVFEaHNYQ1JCRklXUXRhV01xWnRLTDZQd3hPQ2ViNHJVV210YkRtU3NsT3RWWllpbURuZjIrdHlDM25Pb1JPQnZPVUxMYUplVWR4U0FjczlKS1RXc0FDei93cVVrOHdmRjhueU56TEl4YkxBRXZzU2FWY2lFNE9Qbi9SVmxOMys3a29EdXFpUlFXdmp4MmJZVHRKd0lEbXoyZHIvaCtDR3pHTzAxUURlZWVPTmQ1NGFITGlGNzZ2alNVQjFrQStMN1BoUjg5SHRQV2phWVBSMmIvSkg4V1JWSk5sRFBMUE96cy95YjI5eS9UODhkQWFxTHQvMzdoTUJzUTFJT1pMd2VZSFlrR09hNWVqd1BlTEIyVXBIZzhHSUROT0dOZUx6bFZEZ0VwZ2d6TUFPblpKZnZkcmx1Y21IQWNTanV2ckVHUDRvUEhqWUJJVlVPZlh3RFc5ZjhkZ3JYeXpTMlcxMnBoVjFRNFdHNnM4RFI3aU1qdWh5aHNiNmo4TmRET0JuUzg2YVBBbEpsWjR6WUc3SmNwZm5qbkZseW1XNmtSZVhCcjN6WEpacU4rL0hnK1NteVJtR1Q4Q0JHVU5yY0VCSkNEQi81Rm00NGxxMWp3aGw0dTFBZmVhTDZXbjZnMUU1TWhUelJadzhseW9IOWttUXF6bVpseHBWclEwMzJnekNMYjk1cStMbndKRFV0TGcwMG9FZW5uRWdRZjJtV3M5TnY4TDhoZEFvWGxPNUlzWm41cjdrY3BmTGVsTlBEbmxRdUJTWExIVWxyTnM3bGkyREhlb3pabnNlbm1KNGpnZTlrQVp6ajE3RXdhVVozV1Q2VW9ITEdLamN2ZjFRL2J2MUdIZDRia09YSkVWSU9RQzQ3YitKSWdRSFRMUEdvY3FmSm9VbnZ4S01ma3VDNWVZdFNMNHFISU1LMVk4bXd0WDlXNjhjT0xQcmxXZThPNFcyQXVER20yNkNBQmk4cGJ1ckEwdUFmdCtjQUFkcVpJVk4veHpBM2gzc0ZpQS9rU1dJN0JiWCt5Vk5XVnVFUlY1bW1jNmtBQmdhSHBaNkdQeUZoRFdOT0NEWU5JZ3dxRklDSU5WZGRhbmVIT1RadnZqMVh6bFFPT0NpM1gweXdidytNS0lOZGg0bXFmcUhpY0orQisycUtmNzV6b0Q2K2JOMjRFaU1rcmdtQmpncUpPS0RPZm4rQlJqY1lGSnFKSWhHWnJjWmxZekFiUXJiSUN0Q3E4aVdNS05SOHpoNVZPdDREaVNIdE54VTVGbFJNa2tHU3hJTk1Bb09NaU52ZmZGYXZMU21TeXNHTGJ5Tnh6SlFLREJOOWRoUk82akU1WTd5QlVIWVpLSFpaS0Z4WkNwVnRRMWY0RUVkaFdVVmMvb2NqWG5CWUNncjc1RHdDenoxNFZPdWpyN2tQb1FPRmtHVHFad2FVUHZ4b0JMWDR0SkkyTjdVQXBDZUNIMnVMc1FQaFZJV0FwV2ZMWE5ub0RtZHhkTHB6Q21YZzhsbFZKWG5Pbmh3aS9zdy9BQXB5bEtlbUhTanUzZnJ6QVBMbTg5eURMSnRJSVM1dEVMZjhlVXdCdGJDMThXc0hwSEZBKzRXNGNGTEx2ekV2b2JnYjBCcFJpQ1V0alM4RFFvb2RQZTZTZFNIZXg5YzdrUTg0ZHd0QzdkdithdWhWMThOWjVRanRCVUE3N2pweGp0UER3emV3dHNoQ3haNGFjT3h4NStFM2E1QjArd0s1ei9kOG1md2RIYkN1Mm1MTFczRFpqS2xBUXhEQThEZ1VDN20zWUMwWjhvRmh3WW5Cb0lFUUxvSEJEN1J4OE1wUE1WR0xZQm42a242Y2d6WDhWalQ2MUFRaU9mOWN6d2VDMGFZZW5XbnpmVFVGRkRlcEFESXpvYzZDeWJVaGg3dlBHQkprVG9Zd3pQd0lKcmNMT09PUEQ5UXFnd1FuenY1WkNLQ2c1L2ZIUkJoWnF1Zk9lc3FSdys2ekxsaFU1Zko4R0pXWEFPenJvUUFCUU1HRCs4YTVOZHRzdjBJQ2dya3oyelZKc2hYMmdEL3NBeml1cGt6TUhmdmxSNzU2TFFpODZHYjF5SVR3YzFiaUR6UHpvMnNhRmNkcHUzTXc5MEZZUXFoWmw5Z05xMUQ0YndvK3dRL3RuemlXaDdyZDlRdFI0MWgzUVlJQ3BTVit5dCtERmhaa1NmU0Z6WnUxcWxBQ2lvTytEelVmb2hpbnpjL21ZR2NrWXpmQ09BbTVSUmY4WVhWOFJUNnZzSmxDVitVd2lWZGxWb1Y3OXhrc2VyZzh3aThCa21YQk5RcTlrZFAraXN3aWdCNGQrU2REdU5mMGkrT1l2NzY1Zk1aWENwQ3k3SXdBOGNDaGZJVUQ2UkJDOGh3bndjVkExOTAxT3E1MWNPN1hubkFSNDFnbzZVVnVKZUF2M2dkYm8wdk95aGEyNnREZkJ6NmFWYnpZVDZOcmQ4YjdUYjRaWWIwWG1xbDEvd01wems5aFpjeWNEMmRnbzJIQk9oaG5zRVdSVWs1a2tpME1pQjFIQ28wWjZXQVZCNEpjSTNLd1RmMTlGT1l0UVl4eTRJWmt0a2hQbXFLVERIWW9aN3k1UlhUUVVuUnlWd3E2TGdybUNVSDFkcENlUEc0QU56WUt2SHNld1h0Y25DL0JKVE50R1FzcnVkSnZEdEFKalE3bDAxTXg3ZmQ1S0UyUndNWlA3cDFobXVUQ2ZKUXo4c3YvRWduQkRsejh0dDRJVDMzVDVqTzhpV2pJd09za1hnSHhVN29sZFFHRE5NU2hmV0JzTTZ2WFlmMStnRXdtTzIvTUU4cmJ5aXptYUZJZEZONGFJM1BqVDQybzBKSUJ0MktQUXZoQklFWG5RTmcrVGowMmZhZW1Da2ZrYTZlT09xbW9IRk1vTDM0VEFLUDA0NURFRk4wZFBGaG5HcE5HOE5XRGlPeVVkSXRQNWxXZC9OTHhFbitlVC84c0JBc2NvUkdmN1A2T00vOWdBNmpFQS9FZzBGRkxJdDRMb0tmTkdQN1VOaWllLyszamZmY2Y2L1NKdUJ6YThhbmZ2RXp2Ly9xanBkK2d6dWtDeGIwMmJBaVU4cGdxL0dmUDYzOHpKU2ZKZU52azJuL3dRMTdiR0ZRazF1eFpXbE9relJIUmtaMUY0QXZacUJRWVB3azBpNmd5UU1OZzRaanErbDBWMmgwQXZubnRtelRFVkxPNU96RUFOblVFWEl5RTZ5VnIzSjF6Q2c4TkpMSGVqNi9lWXVyN25pWk5ZQkNZQStmVU5qcGdSZk1ZRHAzRUNGeFhZQXVVaGFNNGpDb3M2UG50Y3pKTDEyQjZRdE14Q1BJWUNqRzRxelowOXZuZXE2LzBWVmUyKzBxVUdtcmxVbkVONmFrTUE2RFQyMkhmekpqZ2Jmb3dJQ1F1eTZEbWJWODhwaXJuSUdxTGNGQURRTnBWcTl6Wlo2Qkh6cWw2aktNcGpMaFA1aWRnbHRhRGoxUUhuVVBOMHE0TElKZ3FiOW1SM3JEMnQwdGhFREQwb09mWCtQMXMxQzUyUVhoaVV6cjM3cWJnc2JDN3ovd2dud0Zldmk2RWgvVzRuc1plUXJTTnFiUjcyaWI0cGJ0dU5adVpxQzJ5MFBvZGVUWmE0akRIUEhEdXBaNnVsM250aXZjNUl2UHVja3lOQW1FNloyRVlHNitmN0VIekYrZThuZUVBbGd1YjIyRVJxd0NFekZVQjBNWTBRcVB2TTFYVFprQys4bGJBVm5oVVgvZmgxMW03VWI1SmNHM1BaM1o4WUtyUWpEejdVc1ZhRjk2M0xsV081SXAxcS9hOThBRDBiM3Q1bXQ1M1ArelAvdWZkcjc4MHIvaXQrclo2QkZRaWJnYUhzazZCRnNpVWlwRmMzQXpmRU5OR3llZ0tXdXMxekJRK1NSZmlXZjNKUUFNcWZ5bXpaeURseHQ1MlNZQndDZmgrTVJhQlRPRTk0a2FNWFNNQUlObjZMa015S0lqaWhDa21pRlhZclpHaDFTaERWQnIwUk9IR1RBdjFOU3BuWHgxbHk5dlZMNDRQOXI0dEY4T2pNa3ZFYk9lT1RJK3lwcmZ1dDBPQWtHZ0VCUUEvZHV2Y1VYa3JZZDZPQUN3SnM5VEFJQUo5QjU4eHVOMk9CaFR6TTlUZmptbzlZRGVxd2lHekt4YmoyWExTNXBGZEZjRTE2OHRXKzdHWG5sSlRBYitSVFFURE5JQTJYZjFyT3BtVFVFM1RRNWllK0ZHRnVWM1dMOXppY0U0Mm5NQW8wNisvS0s0VWUvYXAvYVE0YTFTRXdBVWtyUklGZWZ5QmE1T2FHSjhyVG12bmVWOStpMVh1UElyTDBqNHNDelVDakwrK1F5V2kvS0l0LzQ2aTV3VlRmT2tBR2JZdkhmZTVLb1FTdVh6SSs3c0dEOHVVM2VsanBMdS8zZVVTbGlaWWJua1lhSmtlcWk0Vm5FenZUdjQrQWkwMkcva2JvYTFJK0hIbW5mWE9SYnYremswYUZxUlowN245dTF4WXdkZTA0TkNGWDF1emkrUDZwbFA3SHZvZ2M5WlRJeFJielpoNjdZcjdqcDlhdkRkSExqbnpwMTNmREtPZzRLUFIvS3J1ZVFyRmxvbVM2VHlXeWRUdmRKUlRraHltblpjbEF6QSs2MDBNZENnaXZFK2RWRExkRUlOQTFCVXNJWXZGanJFeE1WaWg2aFU2a1JuZEpyWjBRVjdsMllCMmp2NVRqa1FIOGpndW8rMzRUaGdteHEyZlRzRGlVQ09iSkR0QWZnV1I3NmNhU3A3TUtORWNWc0xBTzdlYzFPUWFycFVWUXhvbHN0aC9WdllzRWxQNEdtSmd6Ymx5VDQrR01TWGpEYkQ1dzZETnU2UVYvbkNTcVpMcU5oY3gvUFlibDN2cVVOY0ROcXVOV0MwWTdpK0dJOTloWld0THd1NlVZT2N3Z1BzNy91RHFqbUdoTm9NdlFoR3pxQmZxRkxtSjhCMDZNZjg1bTF1WXM4dVYrWCtCT09oVURxZWkydFEyTklydERtRmtGMVhnd1F3Zjc3aHByUU5taEdmbVVBY01tcUZUd1JDUzBHTE1FdmtpN1NLYkV5amZLa2hjU0RESkt6dUZzaTlpaW9kV0JkejN5WGYxNjh6Ky94K1E0VXpPWmRlQ0laWWh4Q2dJSUFEMStCNDVWa0FmZ1JrL094NU56TEp2UW9lRWU1MFhieURnemdxUDh4QTBvSm1JRVQwZHRuNDQ5T2EyNko0LzZUYm96R3ZkQnpZK2NjK2dBQjBpNWZCTHczZXFUbS9iemMwZ0FuVFpOUTNGSXp1MVRON2RuN1RSMVBPTGZHUFB2Nnp2emMwZVBvM3g4Yk91VFZyMW9NWjdmaW9DSTNHd2N6T1M2NXRXRGdaeXRic1NkUCs1WWdnZDlyTEk2UkxJdmFJYk0wV3QrUFZGMFVzTTlWQndjWmVHOFNCd2FhMTA5TGw3c1N1VjNYZm11QU9OVjlJa1Z6N2grdnlWelpmNkR6VVNhMjd4OGZBWERrSU1OTUEyRTU4b0NpellKR2JvbXBPUWJsaGk1dkNqQm9HdGhBVkNmbFpsdllRQ2dZNG56TmdIMmpkemZVejdJeFQyclFOU3dPYjhmaFJqVzdNWkNYTWNMd21EeWR4OWd6cmFqRUZya2NoeWZSOGpyMVk3RlJjWTFxSWRmaXovZmpoQzBmVnZIZWVxMlRxYm5UZkxoMWU0bWppcFUxejRMS0JBNnlPdlBsb3JXa0Fhbi9VeFZjQjROakp1SzZWNit4cHdNSGpMck5pbFJ0Ny9vZk1EdW5ZMWhCSkVDck1nQzhxb1Z0bGdyMkNaUXpYNVlRMkFWRi9ydWtGMkV2WFhPK21YdmlSNjdqdUhXNXExdzdkeXFNMlFIQzg4dGh2YnlmWHhtQjZhRDU4RVFqcldrZEZ1SHpxQk9QYmUvMjlJRXFVUEliM1N3V2w0N0c4M3ViL3Zkdjd5eTJyZHlmak42Q1JSMlJsNHhLb2MvM3UrNTFyK0h4WUJjdlRZOTk0V0p2SGZJMmUzbXVna014LzJmL0lGMzVWVm1BYURXRHJYVmpMM2NKSENwY3VYYVpPVTdIUk1Pd1VkaFFIRlUrelZhcFRVS1ZJV0o5aHVhQkRNT1VKSFlTaHljRXlPVFhlZ2liY0JFeCtGSk0wbWFJeCtMV2dxUlorU2grNzdjMm5wekM0SWUrYjJ6T0JPREFWRFE1N1QxN0dUVUlJa0tIWTBMbmxLN1JHYllhSnRkQXh2RitORWFiNy9lWmxncE5nZWJSM3NHZ0oxTE1SM2RQbE0vZVUxS215S2tQOEtGT3phemVieDRzUlVZS0VRcGo1d3E3bzQrT3V3TWRWT2ROM2RMckNtYk5pRWpJNHRRMHlQWWVCTm1vUmg4U0J4L0xwNEZQV25tbmdSY09Nd1RqY1BTK3MzeXlOWm5MUFRsZEdHMWZSMzFwbkl6OXFjaFFDMVBpeVdISndxY0d4b1hBSkFOTUNBaVB5V3Z5MEZ3OEc4ZVRmK012UFM4Vm1mTnZFcGJyT29XbUNpODNBdmxROWtCYzNEZmt3RHZkNDJBNjJNUWt0RXZsV0IwN29MVC9aODJmMVhBQ3Z6U1VLMVhnS08xVGRRZXk1TW9wQ0ZtYy9VK01rNDFQYnpPa09BWnVVRXhCSnpadHdKeWo2b3lhQ3Y0WXcvY3V1REdYUzdZTWlPMzlvRGZZa0plUEVibm5RNWZodEEya0FEVTlUVXVNNXoxZXlRUmdiei9vQWwza2FHc0JqM3RGZUFLemZ1SEZMdFZ6NUVQbStwNWNmWVRUR0YvTy9sZVFIYnBvNG04WEVUMUdmUHMxN3hLMEVRT3d4VFJBR0JoZ0JnM1JrWUVEUDFtczNuNGRZRW12QkdPd0svZ0s0SmgvTFpWd09mbVdKQURHVGxrNjI2VmZCK2plTEdac3FOaCt6UllBWUlDb3ZMSm9WUFBFa0cxL0NVWVg2TEgva3JBSEF3Y0FvU0t2NzdWQUplVFMydkd1bjY4Q0FMNEk1bVo1N09kd01zdXlZbmpNaTFGOHdMdS81RS9hS2Nkc2d0RmR6TVYvOFFOWGtZWnpKRTBmZDVPbVRhbVBHVVYwUWo4dTFFZ1FPM1ZYZStnTVQ4Y2s1blVOQStmaFFWaEVNR0x2UlJqbk12cWRPdU1sakIxMGUvY3FuOE1pb2VjelF2UFZjTE1HZUIzUERUV2JYM1FXNEM5Q2srSVZnTXIvZHVhQjJaWG16SVpnL245elR3Z1o5eVBnTTEzS1Q3Y0d5SXEyK0JveTBCZmd4RHphamtlOUxPc3htRkVmd1RtdDd0bGRMTzFMQnduL1lmUnA1S1VUK0NrLzZlWHVTdkc4aVhuRERERTR1OWZnZ0ZjTTkxYURabkllbXhxWFJSUW1BdGV0V1g0MDExejJVNXZONnU5QzB4dndSYVlCY1BKR1pXL2szRWEvVFJKeGRqRkxNRDZsSGs5L0Q0MEVnN1loSEZZOHNDWnRIa3djbmNEQUN6SkhoSVcxU1pibEx6Uy84WUlBckFDMUtSZ3BNYWlZYW1vMlBtVmp2cmhPVHNMekdMTForaFIwbXoyN3I5V0dJcXpjTjBZK3pIMVcxaG54SjNOM1cyM0xvRDZqdlVjWXc2S3hRdVBiWWlCNEN5a0tqNEw0Sm1UemM0bU5heGl6cWtkY09NQTNEcU54d0Q0RHFQbzhuODVueE11VVk1QisxTkdncEdXaDZwNDY0MnZuVHVBcTBBY1Fud3hhTFlDQXViWkIvRlZwZ3JjYmQrWnBuVmc0dEh2aXgxMlJUSUxDY1pGUUpBekFlWiswU0JGQVI0ZHp2NFQ0RVRjN0l1dFdZNXo0UW1kZklIdXVsUHhpYyt4RU1ZMXd4c1draGpHK1BRRU5qZ0gvVU5welpZWS9iQ2w2d3lvOS9NTGxFWUFNRnY4Z3VONTNoejdRdVVoVE9mZ2gvM203L2RDdXg3UDVmYVFodlJHNExEYWFSd2tKOFV1Ulc3aElBZFFxQUJEaSt6dS9kRFFzMUs0d2g3NDgwS1FGZ3ViYkFMYmZmL3VtQjQ4ZitsTTg0ODFOTVVmbmluR0QxRGhuZWxiUVRzS1RqR1JyOTVMWi91ZEtHdHhESk9FbTdOeGhYcWlLY0hCQmt3Z0FmSzBhVFJ3eFRGK3Z1Sk5UejByVTN1TXJSd3pwNk8vblNjNjdPZHdNMlFIMFNMQUcrUE93dzJ4QXpiN3VmanNHTW1hd0Qya1htMEFFTVlxcmVaRklMRDJ0N01xME5acXJvMUdpNGNXZnJmdzQwQ2hmZENrUjVKYlI4T0dIYWtlMEIyTFY5V1pBUHpYQmVnNHhGeHVOYWtiQzh3TUNJUTFBZFYzdFFtQ0VmcG1XWmZJMVZUcXJTRExjSXRxUWdHTmRiZkh2clI5ZTFQaythQ29qQ2FOS05IeVEzUVdlbUxYMWl2K0R2R1NKcDh2TElna3RVVzVwd2Y0SnJZcjRsRjBJWTRiYVhaV2tzcjFCdUVrRVAvaWZjTXN4TS9nWS9LemNOSzc4NWZaMW1kTWZaR0JKWGlQeDlhZkJUditWOXJvWWxXaEpUbUFTUGYrTVJiUTV6WXFraVg3dFM1dGNPUFBLRlA3SllpZXdhY2MyZGQzYVA3dHZ6ZnE3bmkxMmxldXZIWW1KVUt0eUR0VTRQS0pXUVRodnh4VE1qSTlBZHAwVkovMVEzTXgwZGFnVzdJVFU5SmlZbWZCMjRndzB4RDJTenRmc21wOHEvUjdYUGJoOGwwT0JzRFRBUkdRNk1NWXFacHRRM3oyV3ducy8xOXRzRExjY09peUZpQmpXRzVxRGg1Y3p0TjdFZ2ZXazNOUlB4bVRkTUlqQ29kWU1WTEI3Y1hJZDdoaU5Ed3hMY3h1QldiVjZmY1pVbmV3RGxJdk5wVjUrektOeWFXWXVkc05PZndzTEMrRVdqa0xmK1dBVFpnd21iL3VXamE1a3BZOVpnZE5XUWVTb3RUVnFTWnV5dlA1cEJlQ3ZNZHpQcXFxRVBrMzdtUzdlWmtUdEE4V0lrWGJ4R3VUTGhwaVpIb2VtTTJmNVZlVUpDMVFRQWs0Y1UzZ3pYTjRmL2I0NWpGYko2RUhFOVcvdVpLVi8rTkNFdVIzUVZiOEU0ZWZkN1hYMURXZ0JNREoxMko1LzRHcGFzazlFdFFJd1VWOHZVZi9uZ3d3LytOeDh0enV0eXd0cTFxMzhCczl1ZmMrQ0h4bTdUcmcySUl6SHRzbVdybzVrbURFYTZ5V1RNbHh0VTdHek9JRkx0UWN5QkE4TFVmN29zVDhiWGJqUGQ3QXk1YlFZT2Naa2Y3NTlyM1kyZVllZFlmcnlNZnFPQlFETnBEK1hTWnA2WTNvU083UFFYbWR0TTNnM2dTdG5LMW9qSXAwVVlvWHFZSllKWlcvbkRvWCtydDJ4MFIzWnp4M2FqQUY5TklGM25BTlhCckJFVXFnRDh4RkVqV0hnNndCaVpoNDFNVzZEQU5hRUo0YzV4NEdQcFYybDlldGd0clJ6bTdjdWZybU93SzZUQkx4ay9Sa01SN1RvSlAxb3JOOS9oSEY4SEg0QXNSbzRkY2FkKzhDUUNZd0hneGVrL09mRElnLy9Eckttc0xoOUlBTlFnQUxER0ZETk5pM1I0Y0hHemlMdmkvQllmVDZPSk9mMDZQZHphNG84M1prYXJqcHdKVFZGbWxVcG9MaEo5bUhxbXdzNzJDbThzM2g2bE1GQlk4bndKendYdzFWKzhXMkFsUkgrb29JMTJRNXE1a3d4dllTbC85a3Z3UXhaeExvUzVHcklIYkR5VWI3clZaWGdMT0lHeisvYTQ0UmVmaFFZd2dURmJzeVVBSTllemR4ejR5aGVlc0ZpTjE3bE1zSGJENmwrb1RGYitYRDFpN1gzQjZPSUdIZEpxMWxaSHRjTUZOdUUwMFdmUDNnMEl5V1paVncyMmxyam9Fcnc1U0JXdXVhUnZSdG5aY3J5RE1BL0x3YjU1ODExUE41YUgwcVFvQUl5c0pEWnVVa3dlaUxsRWJtcU53YTJZaUovR1RQV2FldWZOenZHN0ZRbndKT0R3aXovVUhrQ0ZTMDNtall5Z3gxeTk3NUV2dnV5anZTbHQ5cVpqOCtZTnZ6QXlNdnJuVkhlMW1YVWg4QzFDRFlDZHl1ZjFyUk5uaVVTTHZoNTJTZzZFdHZta3ZPbG9LT2NGRlB0dGcxazNXVEppdTRyT09yTUlzMG1SN0p0U3NkTXRXYnpDTFZ1NlZ1OFJESnVSTWNQSHk3eWthUnV3d1MvMlYxM0FxYzAxTWg5RlNZRE84ZXV1ZGZVTkc4ekQ0K3krM2U2TU5BQUtBQ3d4RVJGWG1DclVlaGEvOXRoZlJZOEZYM2dML1JpQUF1RDh5TWlmMit1dkdxczR1eXJ6NUo3ZVhRZVpTVUZpU0xkK3lwVjArRXZRU0tkb2dTaENIRk8yR1JNU3paSGl0T213ZHY3VElZNlpTRFA3NUcyUkxzYkZac2gwb1lWbjE2ZnhsZHBjODJLTEFuQVBadW1TTlc3RHV1MnVGOXFCYnYxNnhyYTlIalBGK0RTVGRzLzhKZ1I4aGdta3ZCSU9XWkZnL0xwcklBRDR2WUlZRkFEREwvMElMRDhCQWNEMVAyTm5qaDc0eW9OOGREVEM3RnJ1eHd3Yk5xMzkxT2o1c1QvVHdSYnZkNkhnL2UxOGpzOGw4QmtFZnU3NVVxTzVaSkhQbTlvcnllR1Z2SEJxMktYUU5FaVJMS1JzTllBdkRJM2xlZDBadG9WeWpuOVNzTms0Um5DYkVZZUZXVHYycnJ2bHk5YTVWU3MyNms0TGw1REc2SGJISnpCK0xCUkNPTjBoMzBTRHB0QktGOHk0OFd1dmNyVVdBdUFNQlVEUUFPQ0gzTDkyOEN0ZitvREZNRnlnZnZ6amdYbjl2ZGVYeTVWN3dxMnhaclQwVElFNyszb2V3QzhqVEVKZkl2Si9mc1I0TS9adm1lWlNrMTM0YlFqMmpTZisrM1gxbTBkMjE0Y3plcHJzcmttNGd4SlRQanFIb1Z1c21IVEdKMGJkNE9samFHY2VmT3JRSnJKOWNaZ25MRDNUaTlEcjZBanJDMXliMStCeGFtL3FJU3ZtbitWazVCK204d2VoN08zT1BBaFZkSk9MNTd0NmYvcFpnTW1oVTI1aThMampSMXB0ZEtrdHYzeG16NnRmVlFTUHkxSUE5TStidDc1YXFYeWNIZGthb1VuYUV6czN2R0dIQTZBbEUxMHdJZWVrbTMvbW1mWi9RNm1oREVsaTNWdjV6NHFteWZmMTBrV1ZTMGt1Z2xybEZSTmlORk1MZjg3dTU4NFB1WW5KVWRjM2I1RVlPQll3U2ROSVFvWitNa040Yk5mMkhleVNpa0l3blJ1YjErbnEvSWhyQXVPbkJ0d2tYeVB1TndCOTlEODVzMmZYaTdKNXhMbGNSbGk3ZHVXN0pxZktUL0V6enBUTzAxWlNqZG9NdmdpbFVPd3dxUnZ0QWN3V2w2aFpHN0taWGE2WDZOb1hERnozb3NyN1ptT2FVdm1nOWpHYVE5b01INEY4UitIUTBkSHR0bTk5UjNReU5SWW90Q3VxSWNvcm1XbXJDOERQTXBmMTVNckZycm9sZlJEb3pKNmQ3dHpPRjEyTjc1N2d0VkRRYWk1LzFlR0gvaTcxV3VGV3VmL1lZK1hLbFp2cnJyTDcvTGxSeW1Mdk94MGdaYjB0WUY1ZnIrc29kVXZGbzBvMk83Um96Z3RvNFV2WEdXOWd0ODZROVlWZitRMHM2OFVpVVNTenpxS01pQkxIamNlYzhXbmRkWGYxdXV1dmZUZUVRTUg4UGVjSFRZRHBUQnRJYWdZSnV5N1FZRmNPenUzc3pyclIxV3RnaTBmN1dRcUFYUys1cWdRQVBES1prYTd1NHNJZER6eVFPc2NlOHJqY2tGdXhjdGtERXhNVDkrbVZVdE9nZFFQd2RWbzlldmxJRnVzdnFtZHZPbFN3aSt1ZXQwK25YbUJKM29DQ3p6N0xpeXZyOUtrWTZwa1NETi9SMGVuV3JMVE51c0NvcWZSZzZpU00wUlAyQ0xTSEhKd2JYcmZPWmErNjFyc0FCSjNaL1lvYjJiTkRqMW5iQTlhWnZ6LzQ2SmZ1dEFneDBsZTh6TEJpellxN1hhMTJneHgrSnpTQ2Q1aGh2NUMzL1psY2JqbDNaRHM3TzVlN2V2WjJ2Y20yb1dPU3VOQUdUSFo4M0lWdkxKckxPTXRTWDBEbDBnUDA3UVpmdGxrVWNmYTFTTVJzYlkwUXpjc3crRlFrbHdLelEzcUV5QlZsRmVlWnVmSWExMy83KzgzdGNlYlZWOXpvM3AydVVxbllIWUJzNXQ4ZmZPUkx2MldoTVdaZjMzOWcyTFp0MjRmSEp5WWVsc28yalFDWUhwWXVtVHJkcGEwd2M0eExnL1oxdXJEYVhrVGJYRVNTTkJvellKdkZmclBKUHAxaUdpalNMUE9PQXMwU3g0MVZjNnIrZkIranZiejEwcUMwL1dxMzZBTWY5UzdEbVowdnU5SDl1eVFBOUlpNnE5OTY2TkdIdnV1REk3d0Z1dTJQQjJxMUtiNTVReDBYYjlwY0tIR1RKMDF1UnNJVm00aUZ1TlNFbnpZVWxYOVdmNmpYak5Ud2w3ekdSVkJqbTVsLzB0MU1kdGpHekVaN0l5WFQ2ZjU4Z3ByakpzcFdDK1RqYWdmZTR1Qkh4TG1FcjB3TDdrdEZ5VElhMmFQWkNDWEdhOTJsSDVrMWpjdnlOdUNsd0lJRml3cmxTdmxYZFF1bW9iRXZsRktEcEpGU2Y0amVrdDZZdjFaWFNoSEtOM3RxU0o1Q1krRHJvOFkvK2FNTUxkdFhqTnJnUnlhTjNDRThLVXc4S1Y5bTdlMEU3RVJ5ZGs5UkZBQzd2QkpwRWNaZ3pzcHlYclJtbVFZL2FkYTVZWXV1RldoODRJUXJueDFTM1hDaHJ4LzY4aGYvMGtkUDRkS1U0RExFNXMyYk4weE1UdXl0Vm1wYXR4bDhjN1ZvdGJUWGpCSGVWTHl4bDU0bTkwdDFZYzgveWsvMmlLVTAyTTBybUluUWhGL0NOL1p2UUZSY01LYlpZZEpDdC95OG1mV21BaFVya2RnZ3Z5UkNGS1RoZHcxNEtJalBtMXdLbExac2R3dVNTd0JVN3N3ckw3aXhJL3QwQjZDV3lmenpRNDkrK1k5OWFBb05wWnhEd0twVnF4Wmc4aDhjSFIxdlhpWWxSMCtiRmt3T2lsWURSQWo1TUl6MllCSkswaW9SNGYwVnB3SFJvRXhBam5hNXdkY0hwTU5iK2NkK1JNTHFFWWZIWWJGZkV1YVZETENLNnhjL1lsSHZvTUZadUpuWmFlSlBqbWFrTGhzNW1xODhhNURwWmZpRE93bXkxN1BGdWNhWGEvQ0RtOXJHK1BpNFhzZ3lhL2hyTnlQakN1czJ1QVVmdXMrN0FiVEhtWmVmYzJQSERtSUJscWxsQ203Ri9vY2VhdmxDbnRaNXprRllzM2JWRXhNVFU3ZngyR1lLZnNTMUdYY0FRdXkvTlJJanRuMGVzMGU3Z2RFYWwrS0tNUzV0YnMyd1dpVHFBbXVLRmJ3MThtc1JMbmZTZnhwNzVQSmVBaXFaN0RGMUg0VVBDVmJ5dUwyRmlVZDNlWXlYd29BQmpHOFptVFhPZTJLYzcyemtjZDVpaUFMRFd3TGdiUElMU0lUeEUvRjlkMzFFZGdHRk92TUtCY0FoVjg5a3YzWGdzWWZlNjBPYTBDYjNPUkJidDI3dEhaOGMvNlY2dFhvOVZvZ3RnYzVlaFZic2thTmV6eGh2MjNDeFg0K1V3L1ZodGxoQmk4MWdDT1Q3bXVUbVR4eFpReXc0TTY0WTRnV2t3aHVnZkZzaDRSMWIyOFJ0Uk11MEFkUGtNY3ZzWjRQR3JFS0R6SHdKSDZOTnhPQWROYkM0bUVac2FyYjNKaG5kUkFEVWJLajBmTUNIWUJpWGpUcUZHakY5elB5MFlYbXAyNEZkWFRaMG1oQ3VxZDlXOENITWI4VnExL3YrRDVrYjRDYmdtWmVlYytNbmo2QXcrZnYzUC9ibHBvK0NCclRQZnc1dk8yemF0R2tWQnBjMkpDYndoLzgyL1JkL3d3N1JGMmN5dVVWVm5ZZXEycUdRU3FVcFhjTnhxVXdoWDlpS0VaMEpnbyt2Q1crQ3ZHTFJtTXZsVnRZemJoNjlBalBWNnJWcHh4aVlvUWdtNGNQc2lHZDVwUld1MXR5YXlXUTNJSzBXMFh4dW8xS3BqSUFCRHljdWxnVUQ2aTBaeUYrWklFNXkwN3NFZjkyUU4wRkpRVXhYQStBWGV5Y2N2QkR0WWxUenBCWkFodWNEUDNMcllTRm9CanhONmpVRHBtT0tNWDB3cHFDWGlyU0dqemdERkdYRkt0Znp2cCtTbStBYnBya0VHQjg4dGorZnJXOS83YkhIRXQvMlMyTVdsNWpESEM0L1FKak9BN1FJSHhnWTBENFBtSFZ4cVZSYWlQVjVsbDhnS2hRNjFycXM2OFJzblMzbWl1dXI5V29KUXFZN2w4M2VWcTNXL05RZGk0Y0F5WVdVSmRPZHlXWTZPZk5UN2VkZENIN2ZrQytQbmQrL0NNRnBOcHdkVXlaaXJWanBldC83UWUrQUFLMVUzTmtkTDdqeXlMbFB2L2Jsdi8xejc5MFNzN3ZXSE9Zd2g0dkdOZGRjMHoweE1kRkorM2htdkZnOVgvMFV0SVIvbGMvbCt2c2hBS2cxdE1jMFlTRm9HUVhBWGQ0QnhXeXE3TTd2M3VGY2VlTG5kejd3Vi8vTGU3ZkUzRUdnT2N6aERjYUxMNzQ0dW52MzdsT2t3N3NPSHdOK0Y3eDdGeFFFTEZ1cVVCVGl2MmFOSXZpMUlPMGRHZW53VDlXb1ZpbnJJU0RvTktEcE1TY0E1akNIdHdBblRweDRCcXo3bi9VSk5wMGVCSUdSOWZwdUhVNktTU2NTUlJhbm1jajR6TWVveHU4cytvKzh6SVE1QVRDSE9ieEZ5R1V5bitkcjVpTkdEb0tnZ2VJM0NDVUZReEFXaURNNVlaL0Y4NlFQZ2lLdWJmbE9qemtCTUljNXZFVll1blRwTG5EK3NCZzdVTVRnTWFWbS8wZ3d3QzhRdnl4ZGdTRGhnejhnZmhjUUFja2JORzB4SndEbU1JZTNDTTgrK3l3L3BmeHNyT0lIcGs0d2VqVFRKNFZCQTFGdzhKdUgxQUFnQUdwVEU3WTNNS2NCekdFT2IyL1VxdFdCZUxZM2htOWs3aVNsdElXSXNPNG40NHZLcmpvNWFRS2dVcC94THQrY0FKakRITjVDMURPWjQvRnNEMlp1UXlZUWdvQklFejgzcjNWL0dWb0F6QnFXQUl5dno4M1BnRGtCTUljNXZJWEkxT3ZIMHJNOW1EcEpnY2xGcllTQ0hidmt6ajlmQUVybUQwc0E2QVgrS3UweEp3RG1NSWUzRkxXenNlcFBpaGxiSktHUXBFYWg0TDhxelVlTStRSlEzaEhnR1FBS2hsbGdUZ0RNWVE1dklhaWxrOUViWi9mQTNHbmhRR29sRktEdVQ0Njc2c1M0cTR5UCtUTUIzQVNjR1hNQ1lBNXplQXZCdS9XdEdEb2M2dEhCSHJoYlVoQVdpRk1aR3hWVklRQWMwOEVmbHBidkFFaGlUZ0RNWVE1dkpjRElrYm9mVVl0WlAwa1FHeUx2cm1IbXI0NmJCbENibXZRQ0FPbHE3ckMvU2x2TUNZQTV6T0V0UkxsY1BqRTFWZGJUZ2FSeXVlTEtGWmllK1A3QUN0YjRnWGgwbUx2N3BLQUpTT1d2bG5VbndDR092Z2RZZHk4Y2ZPZTF1L3hsMm1KT0FNeGhEbThod01ERCtOV21uV2J6T2hrN3Btb05URS9HOTFRQm8wZDJMeUJvZDU3NVNiVmEvWkRMMVQ3bGZ2dTNaOXdKblBHZ3dCem1NSWMzRGt1WEx1M09GckozRnJLRkZpOEk1QXhQTTc2Zkgyd1psK25QdXN4eWx3VUxJMDUrODNhWHlXWEdhNW5zamtMT2ZlTzF4eDQ3NTZQT1lRNXptTU1jNWpDSE9jeGhEbk9Zd3h6bU1JZC84SER1L3djLy9FZjkxM2JEbGdBQUFBQkpSVTVFcmtKZ2dnPT0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xX1BSRSIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsidXZtIiwiY3JlZEJsb2IiLCJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwibGFyZ2VCbG9iS2V5IiwibWluUGluTGVuZ3RoIl0sImFhZ3VpZCI6IjMwYjUwMzVlZDI5NzRmZjcwMzBiYWRkYzk2YmE2YTk4Iiwib3B0aW9ucyI6eyJyayI6dHJ1ZSwiY2xpZW50UGluIjp0cnVlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImxhcmdlQmxvYnMiOnRydWUsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJhbHdheXNVdiI6ZmFsc2V9LCJtYXhNc2dTaXplIjoyMDQyLCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjgsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6NTAwLCJ0cmFuc3BvcnRzIjpbInVzYiIsIm5mYyJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5IjoxOTc4LCJtaW5QSU5MZW5ndGgiOjQsIm1heENyZWRCbG9iTGVuZ3RoIjo2NCwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjE1LCJyZW1haW5pbmdEaXNjb3ZlcmFibGVDcmVkZW50aWFscyI6MzY4fX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDgtMjYiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJPbmVTcGFuIEZYN0MiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI1MDgyNjAwNCIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTA4LTI2IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjF9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMTAtMjEifSx7ImFhaWQiOiIwMDI0Izg1MDAiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhaWQiOiIwMDI0Izg1MDAiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiRytERmluZ2VycHJpbnRLZXlzdG9yZUFuZHJvaWRNIn0sImRlc2NyaXB0aW9uIjoiRytEIEZpbmdlcnByaW50S2V5c3RvcmVBbmRyb2lkTSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6InVhZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjJ9LHsibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X2RlciJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfZGVyIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsic29mdHdhcmUiXSwiYXR0YWNobWVudEhpbnQiOlsiaW50ZXJuYWwiXSwidGNEaXNwbGF5IjpbImFueSIsInByaXZpbGVnZWRfc29mdHdhcmUiXSwidGNEaXNwbGF5Q29udGVudFR5cGUiOiJpbWFnZS9wbmciLCJ0Y0Rpc3BsYXlQTkdDaGFyYWN0ZXJpc3RpY3MiOlt7IndpZHRoIjo1NDAsImhlaWdodCI6OTYwLCJiaXREZXB0aCI6MTYsImNvbG9yVHlwZSI6MiwiY29tcHJlc3Npb24iOjAsImZpbHRlciI6MCwiaW50ZXJsYWNlIjowfV0sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlCbURDQ0FUMENCR1FkUFIwd0NnWUlLb1pJemowRUF3SXdWakVMTUFrR0ExVUVCaE1DU1U0eEN6QUpCZ05WQkFnTUFrMUlNUTB3Q3dZRFZRUUhEQVJRVlU1Rk1Rc3dDUVlEVlFRS0RBSkhSREVMTUFrR0ExVUVDd3dDUkZNeEVUQVBCZ05WQkFNTUNFRlZWRWhTVDA5VU1CNFhEVEl6TURNeU5EQTJNRE13T1ZvWERUUXpNRE15TkRBMk1ETXdPVm93VmpFTE1Ba0dBMVVFQmhNQ1NVNHhDekFKQmdOVkJBZ01BazFJTVEwd0N3WURWUVFIREFSUVZVNUZNUXN3Q1FZRFZRUUtEQUpIUkRFTE1Ba0dBMVVFQ3d3Q1JGTXhFVEFQQmdOVkJBTU1DRUZWVkVoU1QwOVVNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVTSXBJL2RLWUNEWWh6d0Qyd1NmWUFPYi9uTmFpUGNXRjIxdnhaay9UZ0QwT0p0Y0QrT1BtNjRud1pkRldTRVlTVzdpT3FucG1KeWRlOG1nci90bkFpekFLQmdncWhrak9QUVFEQWdOSkFEQkdBaUVBM2J2aGF6UUZQd215WGx4Sy94Q1hmaDdnMVgxRW9iTEMzTCsyR09SeHA3Z0NJUUNmTkVUWC9tMkJlYlJMWEk0TE1QMUVRR1BYRkRmN09rNzRVN3hiaU00VmtBPT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCwvOWovNEFBUVNrWkpSZ0FCQVFBQUFRQUJBQUQvMndCREFBTUNBZ01DQWdNREF3TUVBd01FQlFnRkJRUUVCUW9IQndZSURBb01EQXNLQ3dzTkRoSVFEUTRSRGdzTEVCWVFFUk1VRlJVVkRBOFhHQllVR0JJVUZSVC8yd0JEQVFNRUJBVUVCUWtGQlFrVURRc05GQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJUL3dnQVJDQURJQU1nREFTSUFBaEVCQXhFQi84UUFIQUFCQUFNQUF3RUJBQUFBQUFBQUFBQUFBQWNJQ1FRRkJnSUQvOFFBR3dFQkFBSURBUUVBQUFBQUFBQUFBQUFBQUFFREFnVUdCQWYvMmdBTUF3RUFBaEFERUFBQUFheWo2RjV3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVnZDNlRFQ1eExKMzZ4Rm9jNWw4bEdQU1hLc3pORE0wOU5WZE4rOFA4WmRMS0JIcGllK3ZoVHVvZk5YTkF2bStNeVVtUm4xZFFaZ0FITTRjdzFMaWNQMVZMZVF1alR6SjJkSk0zMzVwaGFhVWplYWJLVVJ2ZFY3U1oxZFRTNlN1Rmt3US9iSHI3NjV0MkYxbWRrODdOUHFFK1NZeUhSMWdBTEIxOGx2eVRlalBYUXFtdWdzZ1lkVlZwMXlhSGZYTFczdlVRazJwYUlxZDVNcllxSVBmamRMTm1UWXkyK0NUb3hzYjZJdHRTdTZsQTlCWkhBNnFvQUJ5T09OSFAycFBlbmpycy84QXhtbmNZYkxDaWE2ejB4U21hWnQ5SFJNbFVSdmRGK3F6b1l1czNsZEtWMXU2aWFtM3Q3UHJ0Sm4wR2VudS9BOURXR3h4QUFBZXY4Z3hYS2svT1pxYzlKbWJLbHBNelpHa3pOa2FUTTJScE53TTZFcmgxajh3Mk9JZXlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQLzhRQUtCQUFBUU1EQXdRQkJRRUFBQUFBQUFBQUJRQUVCZ0lEQnhVWElBRVFFellSRWhZd05IQTEvOW9BQ0FFQkFBRUZBdjZiR0lTUmxOWWJGZ1VaUzNGTW1sUGd0S1cyYmZTTHJFMVBTdVcrQzB2QmFYZ3RMd1dsNExTY2lHTHlrMWlnT1Jwa3NRSXhlOStHQVFtcVVQRzdlMDBzUG43WWEzZTVkQnRxOTV4YU9aWUhGQXl4SjdjcEJreGhIaTI4NHRiemkxdk9MVEhMUUozVzFkMkgxaDZ5c0VXczVoMXlLRU9iUnJjZk9nWWl5QkZTV1F0NHlLUFNGN0kzdkRFbnR5eWY3dHdqY29mUmg0Q05ONUFNbEFLM0l3bHkzVlp1Y3NWTU9qMlhMTFJtcDlJKzFHSmoxZE8waDViU0hsQW9DVmpwOVRYSGhZOUpkcER5MmtQSnppdzQwYmRzT21hbTVkWkhZZEI4dzVZWStOZVU0K3JwTHV6YjlibWUvd0FQdGpYNnZ2VlpmK1B1dmxpNGgwWVM5WmRDVk16M2FuSnNqb3AzUGtpM1BraXg1TlRCNlJLZFRvMkZsRzU4a1c1OGtWL0pFaGRXTzJIQWxWNGdzaGtPaEtYOHJGK3RyZmpSeTFJd3g0RzJrUXlTUlIvRjNYREVudHl5Zjd0d2lzTmZTbHlJRk53ZytZU0dpTkE2cXV0ZFhPRVRHN0UzN0IrM0tOTDdlMDZ0UGNYeDk1WHRDQ1cwSUpiUWdrQmdBdU9QMGF4MEpQRXRvUVMyaEJMYUVFbU9NNCt4cnRXcUxGc29WYWhtVXhsbDZXRXZ3eDZVa0l6ZkM1ZUdQS1c4cURPcWRkR3JYUnExMGF0ZEdyWFJxMTBhdGRHclhScTEwYW5NdEN0S1RlWUI3V2s5Skg4a2MvMDMvOFFBSFJFQUFnSUNBd0VBQUFBQUFBQUFBQUFBQUFFUkVnSVFJQ0V4VVAvYUFBZ0JBd0VCUHdINnl4azZSS0Y3cVVTaDR6eWZTMURFbVpFUFdMTXVDOU10V1JZYmdzaHVSZW1YbkZPU3BWaXhZMUpWbFdKUU56eXNXTEZpeFlibjdILy94QUF1RVFBQkF3RUZCZ1VGQVFBQUFBQUFBQUFDQUFFREJBVVJGU0ZTRWhRZ01VRlJFeUl5WVlFUUpGQng4RFAvMmdBSUFRSUJBVDhCL0xWbGQ0UGtqNXI3aXB6emRSMGxReHM3aXFyL0FBUDlLT001WDJRelc1MU9sYnJVam5zdW9LK1dGN2p6WlJtTWdzWTh1Q1UvQ2pjK3lwWXQ2bXVMOXVoRmhhNFZ2VUd0bFUxTUpRa3pFck9rR09WM043c2x2Y0d0a0VvUytoNzFhRk14ZzhyYzJWbFN2ZThYendWWTdVQnN5c3MyR1oyZnI5TUxtN3QvZkNrczZXTVhOM2JKUVFGVUZzQXNMbTd0L2ZDb2FZNlpuWStxcXpZSUNkMVpZM3pYKzNEVlU1VXNtMFBMb29iVUc2NlZsaWNIdXA3UWhraUlHNnFobkNua2NqN0xFNFBkUGFrSFM5Vk5VZFdWM1RzcUttM2VQemMzNFNGamJaSkhaY1JaaTl5d2tkYXdrZGF3a2Rhd2tkYXdrTlNocElvUFMyZjVqLy9FQUVNUUFBRURBZ0FIQ3dvRUJRVUFBQUFBQUFFQ0F3UUFFUkFTRXlFeFFaTUZJQ0lqTXpWUllaR2gwUlF3TWpSU1luR0J3ZUZDYzdHeVUzQ1NzL0JVY25TQ3d2L2FBQWdCQVFBR1B3TCtadDJFWktNRHdwRG5vL0xwb0Y5czdvUGUwOTZQOU5XWWlNTWpvUTJCWEpwN0szV0lRa0h5VnpWN3VBQWdFWkJlbjVWeWFleXVUVDJWeWFleXVUVDJWeWFleXJQd283dzk5b0dsS2loVzU3M1MzblIvU2ZwVnBUZU15bzhCOXZPaFhtaTlJdW5jNWs4TWo4WjlrVWhsbHRMVFNCWktFaXdGRitVK2lPMFB4dUt0UlMwSkVyM20yN0R2SXIxS1oySjhhbXcyNGtwSzMyVk5ncXhiQzQrT0Fma0wrbUI2QTlGa09PTld1cEdMYk9MOVBYWHFVenNUNDE2bE03RStOZXBUT3hQalFTNFg0blc2M203cjBsNk84aDlwV2hiYXJpbkk4bHBMekxnc3BDcTRGM0lMMmRsdzZ2ZFBYNWhtT3lNWjExWVFrZFpxUEJZOUZwTmlmYU9zMDVNZjRYNFcyOWExZEZHUk1keHZaUVBSUU9nRGVqOGhmMHdUL2czL0FHMDcwUFJYT0xQS01xOUZZL3pYVE0yTWVBdlNrNlVuV0RVaUV1Mk1vWGJWN0s5UnBUYXhpclNiRUhVZCswdFF1STdhbmZwOWNIa1FQRXcwZ1c5NDV6OU1JVUJIc2MvSzFvamJXdEViYTBKY3NNNUhKcVR3RjNPQ1ZOaWhuSU9ZbUxqdVdPWklGYUkyMXJSRzJ0T3Z1Q1BpTnBLMVdjMURDL3VjbzhWSVJqcEh2ajdmcGduQklzbDBoNGZNWisrKy9tOVBrMy9vWU4xY2JUbHpoYS8yanpHNlAvSGMvYWNPNXVMMHIvWXJBbTMrbVJmdE8vanBVYkprSVV6OVIzZ1lFYm9KVHhNdE9jKytNMzZXd2hJbml3emNpMzRWemdOZzM0VnpnTmczNFVJczJYbG1Na3BXTGswcHovSVlKY1NITXlVZEdKaXB5U0RwUURyRmM0RFlOK0ZjNERZTitGT011VGdwdHhKU29aRkdnL0xESjNVV25pbVU1SkI2VkhUM2ZyZzNRV2szUTJySkQvcUxIdnZ2MjNtbFlqamFncEtocUlxUE5hdGRZc3RQc3IxaW5ZVWtjQmVoUTBvVnFJb3R5bTd0RThXK24wRi81MGIwZmtMK21DZjhHLzdhZDZBeWd0UlFlTWtxSEJIdzZUVE1PS25GWmFGdXM5WnArVVNNc1JpTXA2VjZ2R2lwUnVvNXlUNWc0MTNJTHZMTkQ5dzY2Ymt4WFV2TUxGMHFUU21ubTB1dHEwb1dMZzBWQ0txT1QvQmNJN3EweXRyOXEweXRyOXEweXRyOXE4c2lGL0s0cFR4aTdqOU1EczZTWDhzNWErSXV3ekMzUjFWcGxiWDdWcGxiWDdWcGxiWDdVRmVSbVFvZngxbFhkb3BLRzBKYlFuTUVwRmdLY2xUSFF5eWpXZGZVS3l5cnR4bTh6TFhzanArUG1zZUU5WkI5TmxlZEN2bFFUUGJYQWQxbTJPanV6MWR2ZFNJZW92QUd1Y0l1MlRYT0VYYkpybkNMdGsxemhGMnlhNXdpN1pOYzRSZHNtdWNJdTJUWE9FWGJKcm5DTHRrMWQzZFNJT29PaFI3QlJUdWN5dWE3cVd2Z0k4YXkwNTdIdDZMWXpJUjhCL003LzhRQUtCQUJBQUVCQlFnREFRRUFBQUFBQUFBQUFSRUFJVEZCVVdFUWNZR1JvY0h3OFNBdzBiRncvOW9BQ0FFQkFBRS9JZjhBVFlqbzRhRFRNME9NVVk2M3ZFdEJaRythQkZ1RCtoWHE5RzVFQ0hOc3U1YUJOUFY2OVhyMWV2VjY5WHBjNVlmMnltWk8wUloxVCtpZ1o0VGdoT0RvL1VUQnU2Ti9OL1hBMzBhNDBTT1FWZXFyQWQyL1NvTUhndXJPbXhHRWhucENBdVczNFVTTHFobGhNU1BnUm8wYnB0c3QzTzZYYWFvYmlWQ0VKTWllWTBERTAzaG0wSFU0eDg5ZHFYSkJSbUVTRGJpdXF5MWJwaXdNTHVIOVhBR2wzT1c3Y3N2NjQvWlJ3VnNvU3VPTStZcWZ1ZVFmTkZDcUp2d3ZVNkxUKzI3K0JoUG5aa0gzT3c5WjhOaFplaGFZbkpIRGJBNW9QQlhuUHl2T2ZsRTJERzh4RmthYkhtUkdJR3NqTWE4NStWNXo4cS9VUEZnbHcwMnBOa1pmSjN6NU5uSHZJQ2ZtRkIzVzYzN2JEYVBNNVlkSTIrV3krdFFGYkp0TjF0c1diY3g2Zm5QQXBYTk9vTGpzVEJEQnVCRWNRdWUwb1lJR0Z0b1VKMnJCTE1pTFFkaG5BcFlNbGFqZXUxQ2hpRmdYa0lTekx0U2dKZGtyRzdZd3dnNFowSHpOQXZSaUpIblNoQ0MyNjcvUkdzY3VYWWMwZnBqVGxMTWRodndkVnYyVWNJTkJyQ2NUK0E0eFZqMWxONWptSzIxYXRFV01kQmUwS2Z3MlFsWDZISU9oZURMUmRic2tuRHFLeC9IU2lKOUJadFJxMHk4eFBOSWNDdlNxZWxVOUtvYlFOaElHK3lHekRkZjdBRUdnVjZWVDBxbnBWTU5JRWp1Y1NnREZEZ1pBVVNXcmJ4WUJpdVZMUWxudkVhc2VCaDlTK1laNWg1dFNHc0RkRkx4c09YR2pVNS9CRm12UHU5ZWZkNjgrNzE1OTNyejd2WG4zZXZQdTllZmQ2OCs3MHlpbjY0TFdCdVFSMXR0Ym9OOVNVNlZHV0J2di93Qk8vOW9BREFNQkFBSUFBd0FBQUJENzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc2b01qZzR4dlAzNzc2bXB6eXl2emVwcjc3NzNqNVQvejVlL3o3NzY0cHY4QXZxLzZJRysrKyt2Yy93RC9BUDhBdGY4QXZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnYveEFBZUVRRUFBZ0VGQVFFQUFBQUFBQUFBQUFBQkFCRXhFQ0FoVVdGQlVQL2FBQWdCQXdFQlB4RDliTWRCcXpNRVVNejJsbjJCaEVScDJCYlVXQ1puaExCeEFweFBLSW1aUTFEOTJjUkR4ckFXb0F0MGl3aHNib0RUSHJwQVJqQ2pXaG01dEdvTXpMOVMvVXYxTDlTL1VYTDlqLy9FQUNnUkFRQUJBUVVJQXdFQkFBQUFBQUFBQUFFQUVTRkJZWEhoSURGUmdaR2hzZEhCOFBGUUVQL2FBQWdCQWdFQlB4RCtzYjMxOXVOWURvN3RQUkZVMEU4NXp2a29kVnZtTjdlNCtLdEpVKzN3N3pKK0dLelZiR0dSWXRWcVcvVEZnWXFCZFAzSUM5VWFGWVhRVkZ1WlAxSVVvMGNJWE5OOWlZNVFEbXlsSGgrT213M0JIaTJYQVN6T3g4ZjR1MTdqRkhrRmJGOVIrZ0lWdDVGdzhaKzR3cGcxRzZ2eUV2QkJPYlpFVWJoZVRZUVNqTngycXE0WVpuZVVWZGVKZnl1bjFHc3JRMUNGbXNxRlVVV1pucWZVYXdCVUxrZTRNSlM0TGJmbGpaeWNPQnk4N0wwS2pjeHFxd2J6dmIzbUs2YXpGZE5aaXVtc3hYVFdGUzE5Q1czbkcxMDVmMlAveEFBbUVBRUFBUU1EQkFNQUF3RUFBQUFBQUFBQkVRQWhNUkJCWVNCUmNZRXd3ZkJ3a2FIUi85b0FDQUVCQUFFL0VQNU52Y1U0WmtpNStBdEtRMEhyQlo3cWVlSnZtaml0QU5lZ3I5TjlVekdNQWpzc2FTR2t4QjZOZnB2cXYwMzFYNmI2cjlOOVYrbStxUE1VSnIvU2l4OCtub2c0b3FtQlBia3NER05zYktTRS9FUzB4VEhBMkZrU3VnRUlRU1dYaGNBc0ZXVmZUUjJDdDFGaEs3RlRKdEFwZUhTREN6SjNmdWhNRVRBdkhRME9MbTlsbzFnREprZWhnd1lORCt4RStXRGxBNzBicDU3b2NJa201a3B0M2Z0ckNNSUlSQkVRYVAwS1V3WFdXdWtPSWt2RDRIRmR3ZFBnbEwxakF1SlYrWStDWUxCVS9pd09BVjJ4WmdNaERBTVlQajFCdElnWWx2QktXL3lORkpCRzJwc20xREE5Z29xd2gyR09BWVQwa0paR25pa0p3MUIySndaQnZSaWJlaEFnN2lKMWx0aWtraUw4Z2prYU1CRlEvd0JuZndjKzdyZFBhWXNKSi92WFBObGdkOEJoYTdSOXNSSjNWSkhLeEd1ZVpGYjFkREVac0syckx6MFpDaW8ya203OGVoQ1Q0RVN0Kyt2S3FKTjd2K2s2QkxKVGRPSFdmaDl2eDNzYlJXZTQ5YU5PRVFoK2R1c2FOUzBFSS9RT1JveUlTbDNuMmhYZDR1b0dIeXFBUUd1VEphRkd6YTdZWkxhWTBtV2Z0ZHcwbDExekJiV1RKdjFEc3NuQ2twSkVkU0lDSmFXUzQ0ZkhReXIrR1RFbnRNOTllTTVkRERjZ0gxUXhFUzVLQ2IydUp6dUZNcVNEUzhTbkNMd2lsbFRBYkNyc283UE5oeVF2eHRGQktCUWhuc0xlRzNKQzlaejhJVjNkQkxLZTdZQ0NwckxSYXZGbTkza1RLVWdYTWtKbFYzVlorQis2c1RGWURZRmJXRGRGQWJBcE1HNG1RYktCRVJCSzRGbnVpRWllU21BRmRLOEo0UUhRelpzek5WeXkvQmNzYjZFbW1DUEo4Sk1pK1o2R2JOblBNMCt4Y3oyRkRVS0JkZ0FBNEtrYUNmT3dDOGFBU3RYcVk2U3Q0Yk1Zb3hBU0IrSjlnd1RGNWlJV21BdE1TVkRZb0tKM0N1ZG1KM1pvRWVKZ2J5WWV6NHYvQVA4QS93RC9BUDhBL3dEL0FQZ2dSTDZ4UWVpb2IwUlYvQmI4anNvQTNiRW1Nall3SlVxQ1ZqK1R2Ly9aIn0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTA0LTE2In1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wNC0xNiJ9LHsiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjU3MzQwMmFlOTAxZTI3YzExNDM4ZWI4YTQ0ZTc0NmVjNzM3MmRlZTMiXSwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiNTczNDAyYWU5MDFlMjdjMTE0MzhlYjhhNDRlNzQ2ZWM3MzcyZGVlMyJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiU09MSUQgd2ViS2V5In0sImRlc2NyaXB0aW9uIjoiU09MSUQgd2ViS2V5IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwiaXNGcmVzaFVzZXJWZXJpZmljYXRpb25SZXF1aXJlZCI6dHJ1ZSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlIYkRDQ0JWU2dBd0lCQWdJSVlPTjZiL2FvR1k4d0RRWUpLb1pJaHZjTkFRRUxCUUF3Z1k4eEN6QUpCZ05WQkFZVEFscEJNVEl3TUFZRFZRUUtEQ2xNUVZjZ1ZISjFjM1JsWkNCVWFHbHlaQ0JRWVhKMGVTQlRaWEoyYVdObGN5QlFWRmtnVEhSa0xqRXBNQ2NHQTFVRUN3d2dURUZYZEhKMWMzUWdWSEoxYzNRZ1UyVnlkbWxqWlhNZ1VISnZkbWxrWlhJeElUQWZCZ05WQkFNTUdFeEJWM1J5ZFhOMElGQnlhWFpoZEdVZ1VtOXZkQ0JEUVRBZUZ3MHhPREV3TVRreE1qRTVNRFZhRncweU9ERXdNVFl4TWpFNU1EVmFNSUdSTVFzd0NRWURWUVFHRXdKYVFURXlNREFHQTFVRUNnd3BURUZYSUZSeWRYTjBaV1FnVkdocGNtUWdVR0Z5ZEhrZ1UyVnlkbWxqWlhNZ1VGUlpJRXgwWkM0eEtUQW5CZ05WQkFzTUlFeEJWM1J5ZFhOMElGUnlkWE4wSUZObGNuWnBZMlZ6SUZCeWIzWnBaR1Z5TVNNd0lRWURWUVFEREJwTVFWZDBjblZ6ZENCUWNtbDJZWFJsSUVGMWRHZ2dRMEV3TVRDQ0FpSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnSVBBRENDQWdvQ2dnSUJBTVhJZDI3SVZEdFBydVdVcG5PWnlyeDlWUEN4WFFxTzdzZVBtUGtLeUNEbStmaFBaSXBXcGkyNDUrOVZSc2h1MUtudFkzV1hOaTAvd2ExeFZZbGhrejNUV3V3RjBhSktoeWNUWEZQZzFwRjBkR3gyd2NoYXdISDR0UDM4U2wrMi84ZDNuenNIZ0NaSE8zMURZRkhtUTJvVVhnUzZLU1VMQUJXMFRKN1NnaHBnSlloc1NjeEkxYkpXSDAycW9WUEo1eUpvREE3N1BvcmM0cHhPTGx0UmFBK3c3NitZa0V6RW9lNyswbEdoOUZacFRNQUJUemlXMVpQL1R5SUR3OEQ4eVBOK25jMFFHakJrNFFFcUtVYlN0YUkvMGE3VSt0TEpRSUh6b25lSEwxZ0oyWGo5aGszM3VmNjRBZnliWXJsdFNyT0dDcWJsdGltR1BDY3BZcjFwYlZrWExsOUpvVFNtblUzbVN5UGVpTXVWcDFURms3Um8vUERzY2FnRWIrdWU3c2F1RTVoZklYMkZDb1hQcldJU1JCZ0NVS1BOQTZoUnhYRHRHQmpKMVhva0JzRWViZERId29rN2wrY3JJMm5jeUVNSTFNQTQ0NVBXRFJrdDRwVDRRNUFlcmZzYzUvdzhIRnZjTnJWMFhUMkNuY011OXBGS1VFWUV0YzJWUjdwbzNUWkdNNmExSmJDT2tNRy82MzQwLzZzMlNCQmtzTVFvVVZJOTZSU2kxYWRtYS9BaGVuQkZaV1lTWkhpamR1RWFQSjFsNXhQWUxtRk5ydmFyUExHN3l3SjFYN0VGU1JLV0FzbmJUSVZWM3ZFaGFqM2lIL2FtTDdEVVhtT2xLM1lCRXNQQzN4MUxEMFkrTlBzOTYzVVlEOUJMTUhKakdNUTMwRHBkZ01CZzhtZGJBZ01CQUFHamdnSEdNSUlCd2pBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUI4R0ExVWRJd1FZTUJhQUZJRG9VSG5tM2RhajkyUmhWdjFIck9LdkNkRnVNRFlHQ0NzR0FRVUZCd0VCQkNvd0tEQW1CZ2dyQmdFRkJRY3dBWVlhYUhSMGNEb3ZMMjlqYzNBdWJHRjNkSEoxYzNRdVkyOHVlbUV3U0FZRFZSMGdCRUV3UHpBOUJncGdoa2dCaHZwc0NnSUJNQzh3TFFZSUt3WUJCUVVIQWdFV0lXaDBkSEJ6T2k4dmJHRjNkSEoxYzNRdVkyOHVlbUV2Y21Wd2IzTnBkRzl5ZVRDQjNBWURWUjBmQklIVU1JSFJNSUhPb0RTZ01vWXdhSFIwY0RvdkwyTnliQzVzWVhkMGNuVnpkQzVqYnk1NllTOU1WRjlRY21sMllYUmxYMUp2YjNSZlEwRXVZM0pzb29HVnBJR1NNSUdQTVNFd0h3WURWUVFEREJoTVFWZDBjblZ6ZENCUWNtbDJZWFJsSUZKdmIzUWdRMEV4TWpBd0JnTlZCQW9NS1V4QlZ5QlVjblZ6ZEdWa0lGUm9hWEprSUZCaGNuUjVJRk5sY25acFkyVnpJRkJVV1NCTWRHUXVNU2t3SndZRFZRUUxEQ0JNUVZkMGNuVnpkQ0JVY25WemRDQlRaWEoyYVdObGN5QlFjbTkyYVdSbGNqRUxNQWtHQTFVRUJoTUNXa0V3SFFZRFZSME9CQllFRk1RbDZnT2djNFYzNFlzcHBWc1Rzb2ZUSHd6V01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQWdFQXVDZ0J3R0xObitEcWFiV1RZL2RQeDhmcVRKOERlOXRnNHl2eU1vVFR3OE9ZRTBPaUdxQm9ES0U0d09hY1lKd2Irc3A4b2FiYjRWVTU1RlhqcDNtTUZ1NnNuc21LdzhPSnpaeldNbHBCOC95a0FhOXhCS0JwZDlBSlFRZkt1Q0RyblJnQ0pHejVqY01oMTN6b2o0Y3M5eGp5QWVURjgxUVhtczVyQ3lHQm5iS2I5OURXY2Z0Rys0blVMZFZBNDNaSDFZTWhaOExHeHRVZjFlNlhlYTF0Qy9Hb04wbFNOZVVSR3VNS2x0MCs5MUFoRG14b2F3SGlWYm9aL0V1RzFPS0QzczRKejhNTlNZQVBjRnNzZzI4WEpCOTl2TFpzVnpzekJsOEYyZk1LZ1ZPaUw3L0NReEYvUW51bzFwcVkzamw1eU95UGc3ZzZwcElGK0VxR3BQc0RNWEJjOE5wOERCYlJKL0hkYlJHQzZPWHlWcXB5WXlJM01iMFBXTXd3NUhjNWozNkpZaHNhSW1rdmIrbjUvU2dJL3lheDhvT0xFVi9vZytwV2Y5eGVOakt4N080LzRJYVVCNDhUaFNnOTJPZVFIQm5yTERWVHhDaHlTRUw5Qm1hVW1HUDdCTDduWW1UazErb1JHZ1RkTU0xb2xvZ2hTamM5S3pwMldBWkFvVHNESWdVVWR3eE9sSXFrYzBtSUFSdEl4Q0dTM3FnWnhOU3JienBLWjJwc3UzZkJ4U0RsT29GM3hoeDNScGE1eWpmclVFbzRDZ3NDc1VDdHg4NWt3UThzYnZndExMTlVlbW1DcmxNb1BXSDlhL1N4QkF6TjRpWkZLUzJrRDdzRnF4bFhrMTcyK1NIRkF3UjF1SVJ0YkEzNDBFZ0tXLzBPRjlXS29MMGtRekRLTW9VPSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFaQUFBQUdRQ0FNQUFBQzNZY2IrQUFBQWIxQk1WRVVBWmYvdDd2OFVjZjhpZWY5QWl2L0ExUDhKYXY4QUFHWHY3LzhBR280eWd2L04yLy9uNnY4QUJHelk0djlabWY4QVlmcG9vZjhBRVlDbHhmK1h2UCtBci84QUNuVGc1djhBWFBJQVZ1Z0FOTFVBVHQyNTBQOXpxUDlPa3Y4QVBzT010djhBSzZjQUlwb0FSdEN2eXY4ODFML01BQUFSTTBsRVFWUjQydXlkNjNicXlBNkVaU0JtQXdFQ2tBdUVXMGplL3huUFdYUGRRMlBjclZaSjduYnI3NndWNytFRHUxeWxsbWhjcWxORjVTTW9RRW9WSUFWSXFRS2tBQ2xWZ0JRZ3BRcVFBcVJVQVZLcUFDbEFTaFVnQlVpcEFxUUFLVldBRkNDbENwQlNCVWdCVXFvQUtVQktGU0FGU0trQ3BBQXBWWUNVS2tBS2tGSUZTQUZTcWdBcFFFb1ZJQVZJcVFLa1ZBRlNnSlFxUUFxUVVva0N1WDUvVURyMXNqdXZzd2J5OWtuSjFYbWVMNUMzSFNWWTMvTnNnWHhTa3JYUEZjaVZFcTExbmtEbXUxU0JmT2NKWkUvSjFpUkhJRzh2NlFMWnpUTUU4azBKMTFkK1FDWXA4NkNYdCt5QWZDWU5oTTY1QWZtaXhHdWRGNUQ1UitwQVB2TUNzcWZrNjVvVGtQVkwra0ErNWhrQmNTVHY4bGRRVmRQYlAvRDZDMXp1SmZmNUFIRWtiNzBJL0hoK292OUNjUDNZU0Y4VklMdjQ3L2ZwOWsrYzBFRGNTNTV6QWVKSTN1Rno4S2N6cTIvL3lBRU54TDNrSkE4Z2I0N2szVEErbnVQdEg1bFdhQ0pIQyttckFPUjgrLzgxNGp4am53ZTNmMmFMQnZJOE5MQzA4RURXam9COFluMDgyOXMvTTNoSEU5a2FTRjg4RU1mRVdrbnAwR09PMGhjT3hNbHRCMXpCZW5Dazd3eE41TW1SdnV2VWdiaTU3WVg5OFN6MXBlOVNQYzFGQTlrTFNONi9hK0hvMEI4MGtJVzY5QVVEY1hQYmlNK3dlblhvd3FXdmM4bGQya0RPb25jWlY0ZGUwRURVcFM4V3lFVDJPVnh0OUtXdmM4bVB0NFNCZkVvcjFaR1FobzY1NURsZElGZnBMM1ExRTNyTGpMcmtPbFVnYm00YjczYXNKSHlZeUV0K3BncGtMKzhIVnU4RENhY3k4cExYTklHNGt2ZUEwS0VSTHphZWRkRnNaQVFDaWMxdEc3NndRKzAwdDNJdnVVOFJ5QVNVdW1hZTV1S0E3RkRmNUJIa2w5ZVZOQmNHeE1sdEIxTDNlamRhUlV0ZnpUUVhCV1QrZ1ZORHE1elRYQlNRTS9CRGU5ZFBjL1drTHdqSUd2cEdmWUhkRHUzVFhCQ1FiNmpubEhPYWl3RnlCVXRUZ3pUM29KVG1Rb0RNZCtpWHR5NDBNbjZuQTJTUHRqZXFoWDRqbzFLYWl3QWltdHY2NmxBRDZidExCY2had1NKM285Vk1HaGtCUU5ZcVQ5eE9OREsrSlFIa1V5ZG0xWmUrS21tdVBKQ3IwbGYzS2M5R1JuRWdrcTJLajZzTGpZeWYzUWV5VjVNL0ZvMk1BN2owbFFhaUlYa2IwMXk4cGZVS1QzT2xnWHdyM2tkY0hRcC9ydU9scnpDUWllcVQxdWtxSkhpYXUwR251Y0pBZHJyZjJaRitseFphK3NvQytkSzlxOS9wS2pRNG03dnVMaEJFcTJKZ21qdUUvMFRBall5aVFQYmFqbC8xWHFzZlVBQ251WkpBMWkvcU41QmZqdXFwOVJzWlJkTmNTU0RmK2cxVHJzN0NYeFNiNWdvQ21ZQnpXNi9YQWlJeVNIUGZ1Z2dFbjl0NnZEZ1RFVTJUVG5NSkozbnhiZW11bTZWeVFBR2E1b29CY1UwcytPZmltcTlhUHhGZ0k2TVlrTFArUy9PaGFScmZRZi9aOWRVMUlOaFdSVSsxbzlmd2dHdGtsQUtpbE5zKy9GQVVHeDV3MGxjSXlGVy81Y0I5WTlhOE9pek5KWkRraFRzWXJxZWsrL3RFamFXUkFiTFhIMEl5cXg4QndUYzhvS1F2WVNRdlBOMTJjd2x0alFjYVMwTVF5WXZ2LzlpMERhS0d2d1dCcEs4RWtJbitEZU91aWFYc0UyREcwaEJDOGg3MTd4ZHV2ZXJmTmMvZEFQS2xMem9YZFRzUXZOY01TWFBqZ2VqbnRvMG1sbll3Z2toelNWN3k0bzJMZzkrQ0NiaWxoVWh6bzRFWTVMYk5KcGIyTndPUTVrWURNY2h0dDc0N1dQQ1dsdnhZR2hLWHZBdjlHNFdkcFNVL2xpWVdpRUZ1dS9KZlU0UzN0TVRIMHBDdzVNVy9qODFxZnlENE4xVHhzVFFrTEhueHVlMG9aSk1YM3RLU1RuUGpnQmprdGhzS3FvMytFKzFxQjhRZ3QyMDNzYlJ2b2NKcExvbEtYdnhEOUpVQ0s3WDllakZBNUZhRGlKcFkyakpjZGl4TkJCQ0wzSFpKd2JYVS8wZDkyd0RaNjkrdkQ4U290TWJTOElFWTVMYStKcGF5cFZWSnBya2tKM254dWUyV1dKWFVXQm9Tazd6NHQySi9FMHZaMHFvRTAxdzJFSVBjZGtYTVNtbkpDSWxKWHJpek9xdTVRQXpHMHJEVFhDWVFpOXgyUk94S2FNa0lDVWxlZkRxM29ZaEtaOGtJQ1VsZWd5TVozYkswcE1iUzhJQjg2MHZlVjRvcXZLVWxKSDFaUUF4YUZSZDFISkJrbG95d2dPejBKZStTSWd0dmFjbElYdzRRNVJFemJCTXJ5YkUwbElUazVabFkyanBRUlBveWdKejEvMWUzSkZCcExCa0pCK0syS2o3cC81OTIwdElTYVdTa2VNbUxmMXl1U0tSVytuZldQUjdJVlY5UXptb1pJSFVLWTJsQ2dWaU1tQm1SVU9FdHJmaXhOQlFyZVEyT2puWFkwb3BQY3dPQkdJeVlpVE94dEw4OTBVdEdLRkx5R2h3LzdyU2xGWjNtaGdFeGFGVmMxSkpBOEFva3RwRXhESWpCaUprbGlSWmVvMGRLWDRxU3ZQaDNyUU1KRjl6U2lreHpLVXJ5d2xzVkpVd3NiWjhucnBFeEJJakJpSmt0aWRkVy82azN3UUF4YUZXVU1iRzBiN05SYVc0QUVJUGNka1dBZ2d1UktPbnJEOFFndDUzVkNDRDRmM2ZNa2hIaVMxNkROWFgzUCtEcGFiazZIbGZMMDlRUFlLZVhqQkRieEJwMHdNU3FSOGVmLzd6cUxYNk9vM1lxY0VzcklzMzFCV0tRMjdhWldQVnBjL2M3OGJ3NTFkYVdGai9OSmE3a3hldjV4eWJXOFBKQUxiMWZocmFXRmovTjlRUmlNR0xtb1lrMTNMWjhINnJOMU5UU1lxZTV4SlM4QmlmM2ZudDhYVHgrbnRWMllHZHBWZXcwbDVpU1YvOXM2MitmcHVlcjNXSnBhR2x4R3huOWdPam50czBtMWlCQUkyMEdkcFlXY3l3TnNTU3Z3WHlFZno3Sm9OZTZ4ZFRNMG1LT3BTR1c1RFdZSVBMMzdTcndxL0M4TkxPMGVHTnBmSUFZNUxaTkp0WXErRTVUSGMwc0xaYjA5UUJpa05zMm1WaWNSMWYxYW1WcHNkSmNZcGhZQm9kYW95NjhNckswV05LM0hZakJpSmtHRTJ2SlZFYlYwc2JTWW8ybGFRVmlrTnMybUZoVHRyUjduaHBaV293MGw0Sk5MSVB6azMvK01DUHUrWXVCamFYRlNIUGJnQmprdG9EdGhOWEd5TklLSDB0RG9aSVhuOXN1RWU3VDBzVFNZcVM1MUxuYzlyNkpGYXNrR3Q0MDRaWlc4RmdhNmxwdTIyQmlSU3VKaTVHbEZacm1VdGRhRmUrYldQRWRZTlhReU5JS2JHU2tqdVcyRGJlV0xZbzAraHRXaFM0Wm9ZN2x0aXZRRDZUeEo3TFMvNHBkdVVBTVJzdzBtRmdpNzZJWEkwc3JySkdSdXBYYjNqZXhhcEg3eW50dFpHa0ZMUm1oVHVXMkRTYVcwTHZQeWNqU0NrcHpxVXU1YlZNbjFnYUtHKzhGaFVoZjZsS3JZbE55SVhUaFo4R1VKZkxKdUE0SFlwRGJOblZpaWQzbHAxWmRXZ0hTbHpvMFlxWXAvaFp6QjQ1V0J3OERwQzkxWjhSTVl5ZVdtTC84WTlhbDVkL0lTSjJSdk0yZFdHSjNsSVZabDVaL21rdWRrYnlOblZpMTNEVnFzeTR0NzdFMDVQa0RNZWdYLytmckszZVJxZDNCdzVQblQrUStrSGtIVGxRZ0lyR1QzY0ZEUjBMdVFvQ3MxU1h2ZytPRWdrK3ZwZUhCdzF1Sjl4SUZCUDdQSGFtY21sMFpIangwbnBFaFFONjAvN21QamhNZWNkOVN4WnVBMDFnYWRNdHlmU3pzUC9maGNVSWxJT0RINU5IVHo2Sk9IRUI0VlRyb3Z6STdlT2h0WjFFWHJON0hNN0ZVSHVyb1Z5M3Y0enZVaFREazhVd3NGZGtMTmlQOEl4SHFRRnpZTWhOTDQ4VVFiR2tGOU1HVC9VSG90cGxZY3RaSlZSdk4wZ280SkUzMkxTZXRNN0h3NWlMWTBncHBQQ0h6cHF6Mm1WaDQreDFzYVlXMFpwSDV1Sm4ybVZqd2dBcHNhUVdOb2lIcnhsNlBtVmpvQ0JkdGFRVzE5NUoxNjd2SFRDeDBrd1BZSXdvYlowYkdRLzI4QnJ2TCtEYVY0clVlMmtKZjdONWUvUEVwdjhIdTJFWTVzRWNVT0JLVGJLZGsrUTEyaDdhU2dqMmkwR09HWkhvRTEzZXdPN0RaR20xcGhSN0VKZFBoNHI2RDNZSEhFY0NXVnZEZzhiWkRuOUF4RHY2RDNXRUhkdENXMWloMG1FTWJFSGZRaVp6MERSanNEanZTQnJhMHRxRm5QdHNIQndCSEFZVU1kcjhvUFVGa1BTTEdqT3RXSUxnbFIwR0QzV09QUlMrQ0xpYjFvR1FzUUdvZlBnTkxjOE1HdTBNR0I0QXRMYzZlaEhZZ3FFVjVvWVBkbzM2WWdadmVoRHdpemhJOWozbFpvRldTb2RzSkFjTm53SllXWnpxVDE0aS9XMHVybGxEcTRkc0p4Y2N6Z1MwdDN1aGVIeUNJc3lLYzdZVFNBOHpBbGxaQWJoczZKaFp3bW9xMW5YQ2xvUjZrSHBUTThlOWVRT1RUWE9aMlF0YW5kR1JkS3ZwQnlWeVE0RGZaK2xiNjFyRnBMbmM3SVdOTUxIZHRVdVNEa3J0Q3hITVkvMDQyemVWdkp3d2VwSHhpWHlyTzB1SXUyZkVFSXB2bXhtd25EQm8xWGkxaXJoVHpvT1RPNHZkZTZDTGF5QmkxbmJBV0djWVB0clRDNXB0d2dFaE9Cb3JkVHJqMGZONHVJdmZvUmxoYS9GV0cza3ZCQk5QYzZPMkU4UXRkd0pZV2YrT1JQeEE1NlN1eG5YQjRhVjE1Tkl5L0N2ZEJXZkYzZ2dYc01SUkxjMlgyRFVjdEJRTmJXcUZ6Rm5sQXBCb1pYMG1vK0d2ejBKWld4RjdKRUNBeTB2ZFpjcDFxUFhVWFMwNGxMOEN5dElKbjlUS0J5RXk1UHBGMEJhOWVCWnMxVWJ1Smc0QklORExPS0sxaVdGcmg4OTY1UUNRMkpRd1RBeEwrQWh5MzN6NE1TSHdqNDVhU3E5QVhZTWJPRURhUTZHMDdWWjBla0hyNlZ3MXZhbkJURGY5dkwyc2drTmhHeGlYMXIvWmpKSkM0alcyTEh2THdYVXJNQkJMWHlEanRJWkRyR0Fza1pucnNUdzk1Zkk3QlFHSWFHUWM5QkRLQkErR1BwWG50SVkvekdBK0VPNWJtdWU0Zmo1YzNCU0RjTlBmWXd4L0lmcXdCaERlV1p0YkRIMGlvNUdVQzRhVzVweDcrUUs1akhTQ2NOTGRJWGlBUXhsaWE1MkVQZ2F6VmdJU251VVh5WW9FRXByblZva2hlTEpEUU5OZDVvZytmdWxtSHk3KzEvYU0yLy83SDJYOXI4ZjViTGFKeTIzZ2dZV251SVRyMTZXSlZNcTJLTWtEdXBMbFZRRy8xNmxkbUZabmJDZ0FKU1hOZkkzUEdCQ295dHhVQUV0REk2QjZCdmVURzQwbEc4a1lCOFU5emw1d1grN1NLZGQ1V0dvaHZtdnVVNVJQOWNTL054OXdBaUdlYTZ6N1JsN254ZUphU3ZKRkEvTWJTWEpqeFNVSjFGREd4NG9GNHBibnUwWlhYekhCVWNwSTNGb2pQV0pvVlA0SlBwVTVpa2pjV2lNZFlHdmVKL3BNYmo0T1FpU1VCcERYTnJVWmhubGVLZHl4QnlSc1BwRzBzelRiTUZVNnhMb0tTTng1SXkxaWEvSi9vTWVkdElVQWVwN2s5ZUtLdkpDV3ZBSkNIMHRkdE5Obmt4b003WWdZSDVORlltbEZNWTNZYU5aTEpiU1dCTktlNW0veWY2RCt5a2xjRVNPT1NFZGZoT2ViR281STBzY1NBTkkybE9RYjNDaVZYWXJtdEtKQ0dSc1llUE5IRkphOFFrUHZTOTVUL0UxMWM4Z29CdVp2bS9uakdWd21YWUc0ckRPUk9JNlA3Uk0rdTBRUWdlY1dBT0dsdXZmSnVnVWhXWVVXTm1BRURjUzB0Q3UrUDczTnVLdzdFbGI2NU41cFVjU05tMEVCYzZadjdFMTAydDVVSDRxYTVtVC9SbDZLNXJUd1FWL3JtM1RyS1dnMmlDc1MxdEhKdUhaWE9iUkZBMWoxNm9vdTJLcUtBUEpDKzJiV09Ra3dzY1NDdXBaVnI2NmhzcXlJTWlKdm01dG82T2tOSlhtRWc0L3ZTTjd0R0U5ZklQbys3Q1dSeWowZCtqU2FBM0JZRTVLNzB6YTUxbEw4YVJCK0kyOGlZWCt1b2VLc2lFc2dkU3l1N1JoT2s1SlVISXI5ZnJ4KzVMUXpJbmJFMG1RVlQ4cTJLV0NCU1MwWjZsdHNDZ1V6eWJsY0U1YlpBSURKTFJ2cVcyeUtCU0N3WjZXeWhjbHNra0tDeE5DVzNWUUFTdjJTa2Y3a3RGSWpjZnIydTFSTXN0OFVDaVYweTBzUGNGZ3hrbldjWDBCWnJZZ0dCeEMwWjZiSGtoUUh4RzB0VGNsczFJREZMUnZvc2VYRkE1cnZzZ3R5VGd1VEZBV0V2R2Vsc0hhQzVMUjRJZDhsSXZ5VXZFZ2h2eVVoZmMxc0ZJTHdsSTMzTmJUV0F2T1dVNXE1MEpDOFVDR1BKU0g5eld4VWdHYVc1OE54V0IwZzJhZTVHUy9LQ2dUU09wU2ttbGhHUVROSmN4SWdaR3lCNVNGOTN1Y05rbkNxUUxOTGNwWjdraFFQSkljM0ZqSml4QXBKQm1qdlNNckYwZ0t4VGw3NWJlS3VpTHBEVTAxeGR5YXNCSkhIcGU4UzNLaW9EU1RyTnJiUnlXMDBnU2FlNVdybXRKaENQSlNNSjViYnJESUM0bGxZcTBsY3Z0OVVGa21valk3VlZ5MjExZ2JRc0dTbTVyVG9ROTJ4dUVvMk1SMTBUU3hGSW1tbnVURi95cWdFWnB5aDlUNHE1clRvUU44MGRkYjQwYzF0MUlBOG5NaVpTKzNGT1FGb25MWGUrZHZPc2dMUk9XdTU4WGNkNUFXbWN5SmhJZlk0ekEvSjQwbkwzYTUwZEVEZk5UYW5PNC95QVRCTG04ZkdXSVJDUEpTT2RyYTl4amtEU2xiNjdjWlpBL3RmZUhhTUFDTVFBRUN4RENrR3VFTG5XLy85UkxBWEI5aEptdnpCTjBpUjFSOTlzQ3ZMelpHVFpybWdLOG5WR3RrRDdhQXNTV1hFOW5ORVhKSTVaanVUY09vTThKbG1yRWMxQkJBU0lnQUFSRUNBQ0FrUkFCQVNJZ0FBUkVDQUNBa1JBQkFTSWdBQVJFQ0FDQWtSQUJBU0lnQUFSRUNBQ0FrUkFCQVNJZ0FBUkVDQUNBa1JBOU80R1Y2Tkk4TGpMeHRjQUFBQUFTVVZPUks1Q1lJST0ifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAxOS0wNC0xMSIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiU09MSUQgd2ViS2V5IiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVMkYxMTAwMjAxOTAzMTkwMDQiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMyIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4xIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDE5LTA0LTExIn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAxOS0wNC0xMSJ9LHsiYWFpZCI6IjAwNDIjMDAwMiIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFpZCI6IjAwNDIjMDAwMiIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJTU2VuU3RvbmUgRklETyBVQUYgQXV0aGVudGljYXRvciBmb3IgaU9TIn0sImRlc2NyaXB0aW9uIjoiU1NlblN0b25lIEZJRE8gVUFGIEF1dGhlbnRpY2F0b3IgZm9yIGlPUyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6InVhZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZrMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19zdXJyb2dhdGUiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbInNvZnR3YXJlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbInNvZnR3YXJlIl0sImF0dGFjaG1lbnRIaW50IjpbImludGVybmFsIl0sInRjRGlzcGxheSI6WyJhbnkiXSwidGNEaXNwbGF5Q29udGVudFR5cGUiOiJpbWFnZS9wbmciLCJ0Y0Rpc3BsYXlQTkdDaGFyYWN0ZXJpc3RpY3MiOlt7IndpZHRoIjoyMDAsImhlaWdodCI6NDAwLCJiaXREZXB0aCI6MSwiY29sb3JUeXBlIjozLCJjb21wcmVzc2lvbiI6MCwiZmlsdGVyIjowLCJpbnRlcmxhY2UiOjAsInBsdGUiOlt7InIiOjIwMCwiZyI6MCwiYiI6MH0seyJyIjoyMTYsImciOjIxNiwiYiI6MjE2fV19LHsid2lkdGgiOjMwMCwiaGVpZ2h0Ijo1MDAsImJpdERlcHRoIjo4LCJjb2xvclR5cGUiOjYsImNvbXByZXNzaW9uIjowLCJmaWx0ZXIiOjAsImludGVybGFjZSI6MH1dLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOltdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFFOEFBQUF2Q0FZQUFBQ2l3SmZjQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQURzTUFBQTdEQWNkdnFHUUFBQWFoU1VSQlZHaEQ3WnI1YnhSbEdNZjlLelRCOEFNL1lFaEUyVzdwUVpjV0tLQmNsU3BIQVRsRUxBUkU3a05FQ0NBM0ZrV0swQ0tLU0NGSXNLQmNnVkNEV0dORVNkQVlpZHdnZ2dKQmlSaU1oRmMvNHd5ODg4NHp1OU5kbG5HVGZaSlAybjNuTysrODg5MzNmdmVCQngrUHFDekprVFV2QmJMbXBVRFd2QlRJbXBjQ1NadlhMQ2RYOVIwNVNrMTliYjVhdGY1OTlmRysvZXJBNTQxcTQ3YVAxTExWYTlTSXlWTlVpOElpOGQ1a0dUc2kzME5GdjdhaTluN1FaUE13YmR5czJlclUyWE1xVWR5OCtaY2FObUdpbUU4eVhOM1JVZDNhMThuRjBmVWxvdlorMENUeldwZDJWaitlT20xYkV5eTZEeDRpNXBVTUdXdmVvNTA2cTIyN2R0dVdCSXVmZnI2b1dwVjBGUE5MaG93MTc1MU5tMjFMdlBIM3JWdFdqZno2NkxmcWw4dFg3RlJsOVlGU1hzbVNzZWI5Y2VPR2JZazdNTlVjR1BnOFpzYk1lOXJmUVVhYVYvSk1YOXNxZHpEQ1N2cDBrWkhtVFpnOXg3YkxIY01uVGhiMTZlSittVmZRcTh5YVVaUU5HNjRpWForMC9rcTZ1T1pGTzBRdGF0ZFdLZlhuUlE5OUJqOTFSNU9JRm5rNTRqTjBta1VpcWxPM1hEVytNbCs5OG1LQjZ0VzdyV3BaY1BjKzB6ZzR0THJZbFVjODZFNmVHRGpJTXViVnBjdXNlYXJmZ0lZR1JrNmJyaFpWci9KY0h6b29MNzU1MGplZExFeG9wV2NBcGkyWlVxaHU3Skx2clZzUVU4MXprek9QZWVtTVJZdlZ1UXNYN1BiaURRWTVKdlpvbmZ0SysxVlk4SDl1dHg1MzBoMG9iK2ptUllxajZvdWFZdkVlblcvV2xZanA4Y3diTW02ODJ0UHdxVzFSNHRqLzJTSDEzSVJKWWw0bW9adlhwaVNxRHI3ZFh0UUh4YS9QSzMvK0JXc0sxZFRnSHU2Vjh0UUozYndGa3dwRnJVT1E1MHMxcjNsZXZtOHpaY3ExNytCQmF3N0s4bEVLNXF6a1llYXJrOUE4cDdQM0d6REsrbmQzRFFvdys2VUM4U1ZOODJpdXYzOGltN050YVh0VjFDVnE2Umd3NHBrc21iZGkzYnUyRGU3WWZhQkJ4Y3FmdnFQclVqRlFOVFEyMmxmZFVWVlQ2OHJUSktGNURuU21VamdkcWc0bVNTOXBtc2ZESlIzRzZUb0gwaVc5YVY3TFdMSFlYS2xsVER0MExUQXRrWUlhYW1wMVFqVnYrK3V5R1V4VmRKMEROVlhTbStiMXFSeHBsODRkZGZYMUxwMU8vZDY5dHNvZDB2czVoR3JlOXh1OG8rZnBMUjFjR2hOVEQ2WjU3QzlLTVdYZWZKZE9aOTRiYjlvcWQxUk9uUzdxSVRUekhpbU1xaXZiTzNnMERkVnlrM1dRQmhCenRLMzVZS05kT25jOE8zYWNTNmZEWkZnS2FYTHNFSnA1cmRybGlCcXA4OWNKY3MvbTdUdnMwcmtqR2ZONGIwa1BvWm4zVUp1SU9ybloyMnlQMWZtdlV4K081Z1NxZWJWMW0relN1WU5WaHE3VFdiRGlMVnZsanBsTGxvcDZDTFhQKzJxdHZHTElMLzF2aW1JU2RNQmd6U29GWnl1NlRxZCtqenhnc1BhVjlCQ3FlZS9OallrNnY2bEs5Y3dpVWMvU1R0ZjFIRHBNM2I1OTJ5N2gzVGh4NW96SzY5SExwWVd1QXdhcVM1Y3YyNnE3Y2ViOGVmVllhUmVQM2lGVTh6ajFrblN3WlhITW1uQ2pZME9nYWxvN1VRZlNDTTNxUVFyMkgvWEZQN3NzWHg0NVlsOTFCeWVDZXA0bW9ab0grMWZHM3hENHRUN3g4a3d5ajhud2I5ZXYyNlYwQjZkKzdINHpLdnVkQUg1MzdGanF5ek9IZEpuSEV1em1YcS9XanhPYnZOTWJ2N25oeXdzWDJhVnNXdEM4KzQ4YUxlYXBFN3A1d0taaTBBMkFRUlY1bnZSNEUrdUpjK2I2MWtBcHFJbnhCZ21kLzRWNVFQL210MThIREM3c1JIZnRtZXU1bG1oVjBybi9BTFgyMzJicWQ0QkZuRHg3VmkxY1dTMnVmZjBJYkI0N3FleHhtVWo5UXV0WWp1cGQzdFlENmFiV0JCTXJoK2FwTmJPS3JORjErdWdDYTRyaVhHZndNUFB0VmlhdmhVM1lNT0FBbnVVYi9SMDdMMHlPU2VPYWRFODhBcHNYRkdmZjMweW5obEpnTTUxQ1U2dk45RXpnbnB2SEJGVXlpVnJhZVBpd0o1M0RGNVpUWm5vbUVOZzg1a05VZDJvSmkyV3ByNE9tbWtmTjR4NHpIZmlWRmM4RHY4Tnp1aE5xT2lkaWxHdkE2REd1ZVp3Tzc4QUFRbjZjaUVrNitydzVWY3ZqdnFORFlQT29JVXdhS1NocnhBdVhMbGtINGFZdUdmTVlEYzEwV0Y1VGEzMWhQSk9mY1VoclUvSmxJTmk2YzZlbFJZZEJwbzYrK1lmang2MWxHTmZSbTRNRDVySjFqM0ZvR0huakRTQk5hcllVZ01MeU1zektwYjd0WHBvSGZQczhoM1dwMUx6TmZOazU0WHhDMXdER1VtWXpYWWVmaDZ6L2NLdFZtNEVCeGE5VlFHRHpZcjNMclVNUmpIRUtrazd6YUZLWVFBMmhHUVUxeis4NU5GV3BYRHJrejN2eDEwR3F4UTZCemVOYm9CazVuOGs0bmViUmgrazFoV2Z4VEYwRDFFeVdVczVuditkZ1FxS2F4enVDZEUwaXNIbDAyTlE4YWgwbVhyMTJMYTNtMGY5d2lrOSt3TE5UTVkvODZNUG84eWkzMU9meG1UNlBXb3FHOStEWnVrWW5hNTZtU1p0NVdXU3k1cVZBMXJ3VXlKcVhBbG56a2lhaS9nSFNEN1JrVHlpaG9nQUFBQUJKUlU1RXJrSmdnZz09In0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMTgtMDktMTMifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDE4LTA5LTEzIn0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiMDczYzQzMzNlOTRkNDQ3NGI1MzQ3NmJhM2FmNGM5ZmI1Nzg1MjJjOSJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyIwNzNjNDMzM2U5NGQ0NDc0YjUzNDc2YmEzYWY0YzlmYjU3ODUyMmM5Il0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJDaGlwd29uIENsaWZlIEtleSJ9LCJkZXNjcmlwdGlvbiI6IkNoaXB3b24gQ2xpZmUgS2V5IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEwNSwicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfSx7Im1ham9yIjoxLCJtaW5vciI6Mn1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiLCJyZW1vdGVfaGFuZGxlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQnpqQ0NBWFdnQXdJQkFnSVVFVjJ1WTBWMDFqcWJYUEVqTWZZekNlKzVWQnd3Q2dZSUtvWkl6ajBFQXdJd0lERWVNQndHQTFVRUF3d1ZRMmhwY0hkdmJpQkdTVVJQTWlCRFFTQXdNREF4TUNBWERUSXpNRE13TnpBek1UZ3dORm9ZRHpJd056TXdNakl5TURNeE9EQTBXakFnTVI0d0hBWURWUVFEREJWRGFHbHdkMjl1SUVaSlJFOHlJRU5CSURBd01ERXdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBU2NJMVRqVUxPVU9MT1N2Skk4aVg3amxqL3NhMWdpT2RCRXEyMFc2d2tYbnp4UUo2S2cxTnVvaHNlK2lJUzQwcU1DeXkzQXBhWnh3TlIrLzI4VkdtUHdvNEdLTUlHSE1CMEdBMVVkRGdRV0JCUXo4OUpRWFR4YnlqU2xTMzVtc1BIN2F5aUdlekJGQmdOVkhTTUVQakE4b1NTa0lqQWdNUjR3SEFZRFZRUUREQlZEYUdsd2QyOXVJRVpKUkU4eUlFTkJJREF3TURHQ0ZCRmRybU5GZE5ZNm0xenhJekgyTXdudnVWUWNNQThHQTFVZEV3UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdFR01Bb0dDQ3FHU000OUJBTUNBMGNBTUVRQ0lEd2g4U0FzSXRRS2FLdGExa3QyYnYycHJ2RjVVdFdBa1RWMGVnOGtMZkxLQWlBZ2V4OXhwS0dDTFBlaSs4VHVFa3h5S1FDOUY2N3Q5NkhWdlFQRSt1VWZCUT09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQVRBQUFBQ3dDQUlBQUFBSFhxWElBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFBN0RBY2R2cUdRQUFCRHVTVVJCVkhoZTdaMzdieDNsRVlZVDMyTW50cE5nVEc0NGNlemNuTmhKYk1jWEhJSkVnYW9xUmRBaVZSVUNTdFVXa0hvQlVWVlZJWUNVcXFHa3YvU0hsbFpJdEZLTG9QK2srM0crMTl2TmE1L2p2Y3pzenA0emp4NmhKR2QzM3RuZEdVN2lPUGFCYmNkeHpPQUw2VGlHOElWMEhFUDRRanFPSVh3aEhjY1F2cENPWXdoZlNNY3hoQytrNHhqQ0Y5SnhET0VMNlRpRzhJVjBIRVA0UWpxT0lYd2hIY2NRdnBDT1l3aGZTTWN4aEMrazR4aWlSeGZ5MnZ6UkgzMW45dDNYRmo1NisvcDdyeTk4ZStzVVhuQ2NXdW5taFp3NU1mYmZQejlWMGcvZVhFSTV4OUduMnhZeXZOM1JSc202dGppRkpNZFJvRXNXa3RhbUdwSHRPSEkwZXlGcFErcnk2dHdrR25LY2NqUnlJU2VQRE5GS0dCSDlPVTVSR3JhUUx6OTNsbmJBb09qVmNmTFRtSVY4ZHZNa3piMXgwYmZqNUtFWkMwbXozaUJ4QVk2VERlc0xTZlBkUkwvNjlBNHV4bkgydys1Q0RnMzIwV1EzV2x5VjQzVEU2RUxTTkhlSC9sYnA3SXZGaGFRNTdqSnhrWTZ6RjdZVzhxL3ZyOVA0ZHFXNFdzZlpoYUdGcEtudGJuLzF5aFZjdHVPa3NMS1FOSys5NFAxZkwrUGlIV2NIRXd0Sms5cFQ0aFk0VG92NkY1SUdOS000T1NkLysyQ0Q2bGdRelRsTzdRdEpvOW5CUjQrTjRCdzVLS0pHMFpEVDg5UzVrRFNVZTRwREgyWng0Y3FUbXh2RlJJbUhvZEJhUkN1VnNIVHgyTXZQblgzOWhia0g3NjFTRzUyZE9UR0dFajBHVGRHTnhXdDRRWnJhRnBLZU5JbURVdHplV0tlYlVsNlVUa0Z0VkN5YUVJVWlwSHp0aFRrRWRDL0hqeDJsZ2RsVEhDMUVQUXRKVHpjdGp0aGhmV1dacmw5RGhPMUFMVlhtYjM4aS8vL2Q2ZU9IS0VYUWM2Y09JNmE3bUJnZnB3blpWNXhabWhvV2toNXFJbDdlZ1M2NEdwSGRndHFyUm1TTFFoSGlJcVpib0pISUpVcVVvT3FGcEdjWnhXczcwRVZXTC9wb1FhMVdJSUxsV0Z1Y29naHhrZFI4YUJJS2lFSkZxWFFoNlNsRzhWb0x1clo2UlU4dHFHZHRrU29IMWRjUVNVMkdCcUN3S0ZlSU9oY1N2OXFDTHNtSWx5L01vNy90N2ZkL3ZrVDlxNHBVSWY3MWh5MnFyeUhDbWdrOStwS2lhSDZxVzhoMkQyOXQrU1pkaktBelo4NGdwajBidDFicExCTEh0YUNyVUJXUlFsQnhKUkhXTk9pSmk0alNPYWxvSWRzOU5yb0dLVkc5S0ZRdGlCZGEwTFhvaVR3aHFMaWV5R3NPOUt5bFJQV2NWTEdRRTRjSDkzeGdkQUhsUlYxUmt1THJxeXY0SmQvSmppS3NPU1NQV0Z3RTVLR0toZHo5dE1wOHFzMXVOMit0eHJLcXhDejhwSms3U1pYMVJGNFRTS1pJUTJUa1FYMGhkejhuYXJxTVcrdHJzV1psaEZEOHFKbHZPRlJjeWY2K2c4Z3pUM3FjTkVSTVpxcGJ5UGhUYXJlTXNXRDFyRnkvamg4MWNDZXBzcDdJTXc4TmxiaUl5WXp1UXRMam9WNExHNnRaNE5UMGFIS05lajY3ZVJKNUVsQnhKUkZtbTNNemo5Tm9pWXVrekNndTVQTlBuVWsvRzJxMHNMR2FIWklSVkJWaEVsQmxQWkZuR0JvdERaR1VHY1dGVEQrVnE1Y3ZVYU1GbkpzOUY2dFpJeGxCVlJFbUFWVldFbUdHb1FIVEVFbVowVnJJZjN5NG1YNHExR1VCWXgyYi9QUUhGNUlwMUJOaEVsQmxQWkZuRlpveERjZkdSaEdXRGEyRlREOFBhckdBc1k1bGtoRlVGV0VTVUdVbEVXWVZHak1OaDRlSEVaWU5sWVg4N080M1g3b20vcGo2SzJDc1k1LzBJQ3FKSkFtb3NwN0lNd2xObW9aSXlvektRb2JIOE1mVzF6aWs1Z29ZQ3phQzlCVHFpVEFKcUxLU0NETUpEWnVHU01xTS9FTEdUNVNMUDZibThocUxOSWowSUNxSkpBbW9zcDdJczBmNEF4Nk5uTGhJeW96OFFpWVBnRHJMYTM5L2Y2elRJQWI2RDZZSFVjUHA0NGNRSmdFVlZ4SmhKcUdwRXhjeG1kRmFTR3FyZ0xGYTQwZ1BvcEpJa29BcTY0azhlOURVaVl1WXpBZ3ZaSExycWEyOHhpSU5KVDJJR2c0UFNmN2VnWW9yaVRCN3FINnlEakx5b0xLUTFGWmVZNm5ta2g1RUpaRWtBVlhXRTNuMm9QRVRGQUY1a0Z6SWd3ZFJqZHJLNWVEZ1lDelNhR2dXeFYyOStnaVNKS0RpU2lMTUpEU0VJcUowVGlRWE10NTBhaXV2c1ZUVGVXYmpaSG9XTlVTU0JGUlpUK1RaZzRhd3ZGT1BIRWZwbkFqL2xqVkFuZVVTSmJvQ21rVnhUMHo1aDFzbG9WRXNLWXJtUjNnaHFhMjhva3EzUU9Nb0xtSWtvTXA2SXM4a05JMkZSYmxDR0ZwSWxPZ2lhQmJGOVErM2lrTXpXVUFVS29ya1F2YjE5VkZ6dVVTVjdvTEdVVnpFU0VDVjlVU2VWV2dzc3pzNU1ZNFNKWkJjU09vdmx5alJkZEFzaW9zWUlhaTRrZ2l6RGMzbnZ1SzAwdmhDcWtQaktDNWlKS0RLZWlMUFBEU2x1OTFjdTRWRGhmQ0ZWSWRtVVZ6RUNFSEZsVVJZbzNqODlPbjExWlViaTlkRWZtdmFEckdGcEFYTEpVcDBMelNPNGlKR0FxcXNKL0tjaC9HRnJBS2FSWEVSSXdRVlZ4Smh6c1A0UWxZRWphTzRpSkdBS3V1SlBDZUZMMlJGMEN5S2l4Z2hxTGlTQ0hOU3lDemswdFVGMnJIc0hwMmNSSlZ1aDhaUlhNUklRSlgxUko2emc4eEMwbzdsRWlWNkFKcEZjUkVqQkJWWEVtSE9EcjZRbFVMaktDNWlKS0RLZWlMUGFlRUxXU2swaStJaVJnZ3FyaVRDbkJhK2tGVkQ0eWd1WWlTZ3lrcCsvZUFPOGh4ZnlPcWhjUlFYTVJMYys4VU5LcTRrOGh4ZnlGcWdjUlFYTVJKUVpTVS8vL2dKNVBVOHZwQTE4TVc5TFpwSVdSRWp3WGZ2bktiaVNpS3Y1L0dGckFjYVIzRVJJd0ZWVm5KK1J2RXp0aHVFTDJROWZQWHBIWnBJV1JFandkcy92RVRGbFVSZWIrTUxXUnMwanVJaVJnS3FyT1RveUFEeWVoaGZ5TnFnY1JRWE1SSjg4dTR5RlZjU2VUMk1MMlNkMERpS2l4Z0pxTEtTQ0pPRGhrM1E2YWtwWklqaUMxa25OSTdpSWtZQzdZOE1KeUt2TkRSbTRpSkdtdm9YOHNxbGk2alNrOUE0aW9zWUNhaXlrZ2dyd2R6c09ab3hEUkVtVGYwTEdVU1Zub1RHVVZ6RVNLRDlrZUZFNUJWaVlHQ0Fwa3REaENrZ3M1QUI2amlYS05HcjBEaUtpNWpTaENkRmxaVkVYaUhTYzZVbndoVHdoYXdmR2tkeEVWT084MmZQaGlkRmxmVkVhazdTUTZVbnduVHdoVFFCamFPNGlDbEI4ckNvc3BKSXpjUDY2a3JTcEtySTA4SEVRZ1pScFZlaGNSUVhNVVZKUHltcXJDZXlNNU51VWsrRXFTRzJrTXRMaTlSNkxsR2xWK252UDBqaktPdVhuenlKcEVMUXc2TGlTaUk3RzlTaG5zaFRRMndoQTlSNkxsR2loNkZ4RkJjeCthRW5GYVRLZXFLRC9kaGFYNk1PbGV6djYwT2tHbFlXOGducDc1SFFPTDcvclJrYVIxbi8vbUdSLyt2UlkwcWs0a3FpaWYyZzN2UkVuaVpXRmpLSUtqME1qYU80aU1rRFBhTkVxcXduK21nUE5hYm56YVZGUkdvaXVaQUJ1b1pjb2tRUEUvNmtSK01vNjkyM2xwQ1VEWHBBSkJWWEVxMjBJZjVsVERVaVVobXhoYnovem5MNEwxMURYbU9wWG9iR1VWekVaSU9lRGttVjlVUTNlMEV0cVlwSVpZVGZJVXQrR2lHcTlEQTBpK0srOGRJOGt2YURIczJlVW5FbDBkQXVxQmxWRWFtUDVFS0dlM2Znd0FHNmtyeWlWZytUbmtVTkVkTVJlaWp0cE1wNm9xMkhvV1pVUmFRKzhndDVlMk9kTGlhWHFOWERwQWRSd3l3ZmJxV0gwa0VxcmlUYVNrRnRxSXJJU2hCZXlNOC8zdlEzeWZLa1oxRkR4TFNCSGtkbnFiS2VhSzdGK3NveXRhRXFVaXRCK00rUTRjYUZoU3ovRjdVbzE2dWtCMUhEdTIrMi9YRHJ6Sm5UOUN6MmxZb3JpZjVhVUFPcWpvMk9JclVTNUJjeTZHK1M1VWtHVVVuRTdJSWVSQmFwc3A1b3NYdC92eHJRV3NpUjRXRzZzTHlpWXErU1RLR1NiN3k0eDRkYjZSRmtsNG9yaVM1YlVBTktibGIrQ1dUQ0N4bUk5Njc4bTJRUUZYdVZaQkNWUkV3S3V2L1pwY3A2b3RHcUZoSmhGYUsxa0lNRGZiNlRKVW1tVU1sbk5rNGlxUVhkK2J4U2NTWFJhd3RxUUVNa1ZZajhRZ2JpdlFzTE9UODdTMWVZMTBlbkhrSFIzdVAyOG5ReWlFb2lLV1NWKzh1cUlGWFdFeDNyTHlSaXFrVnhJWU05OVNiNTZ2Zk9KeGNldmJQeUdGNHJDaFVVOS9Mc1JBeWllMTVNS3E1a2JEaENEY2lLakdwUldjaEF2SGMzTHgvdmtaMU14bVZQY1ZCK3FJNkdTSklZYnFxc0p6cldYRWdFVkk3dVFnYkRRb3JzNUpIRGgxSGFIak1uRHlmWDIwRWNuUk1xSXU3a2thRVlSRGU4bUZSY3lkaHc0TkRJQ0RVZ0pRSXFSMnNoQThudGs5ckpJRW9iSTduU0xPS2N6TkRwR2lMSjN5UjNST2s2cUdJaGcyRWhUNTU0akM2N21LaHVodlJsWmhjblo0UE9GYmUvLzJBTW9sdGRUQ3F1Wkd3NGNPWGlSV3FndkNoZEI0b0xHVWpmUWFrM3llRHdFSDZYVlR2cEM4d3JTbVNBVHRRUVNmNG11Ymx4WWU0ODZ0YUI3a0lHa3R2M3ozdGJnanNaUkVEbEpKL2NtRnhhWVdPZExOQ0o0aUpHWXJnM2I2MVNjU1hSc2ZSQ29taE5WTGVRd2ZqWkFySmYwQll4VlpFa3BxK3JqTEhhdnRCWkdpS3BPVytTWDl6YlFzZWlPNG1LTmFHK2tJSDBUUndhL0dZbisvdjc2UzZVRkVscWpJNk9wb1BTVjFUZVdMTXpDK2NuNlN4eGtTUXgzT3ZMMTZtNGt1aFliaUZScmo2cVdNaEEraVpldjNRcy9pTGRpL0lPRFE3R3lsS01qV0VQby9FWDA5Y2laYXpjR1RwRlF5UTE1MDBTN2JhZ0JvcUpXdlZSMFVJRzB2Znh5ei9oQzJuVDdaQnlvY1Qzbkx3NFAwZlZncmMzMXVPcjZhdVFOZGJ2QUIydklaSWtuc3Z0dGF0VVhFbDBMTkV6Q3RWS2RRczVNdHl2ZHl1ek9EODdPejAxTlRFK2Z2elkwU3NYTDlDckhVU1graXVCbVBiUThSb2lTZUtoVUdVbFIwY0cwSEhwbmxHbFZxcGJ5QURkeWlCZXFHb244M3BqOFZwczc4RjdLOVM1a2pHdUhYU3doa2lTZUNKSHhnYXB1SkxvdUZ6UEtGRTNsUzVrZ0c1bEZLOFpXMHYwVk1rYUpONzc1VTJrdG9HTzF4Qko1UjVIL040UVZGbkoyRzJFMnNndXpxK2JxaGN5UUhjeml0ZGEwSjJxWHZSUjdTcEcxeGVua04wR09sNURKRW04NGN6UGpGTnhKV05jZ05ySUtFNDJRQTBMR2FDN21ZaVhXOUF0cThESHBoOUY5dmIyMCtzbnFMY0t6UElGR3NQRzBsa2FJa3ppRFljcUs0bXdGdFJKRm5HbUFlcFp5QURkMExRNG9rVmZYeC9kTzNHbnB4NTZVN3I3MWhMMVU1bm9ZRC9vTEEyUkpQR0c4OHpHU1NxdUpQTHk5engvZmhabkdxQzJoUXpRRFNWeFVBcTZqMlZjWExpQ29pbW9nU3I5VDU1dnFFcm5Lb2t3aVRjY3Fxd2t3bHBRUDUzRk9UYW9jeUVEcnp6UC84cWVmT2ZWUFRZbmNHbCtubTVyQnk5ZjZQUU5MU2l4ZWo5Nit6cGF5UXhWMEJCSitSY1NwNlY0NDZWNUtxNGs4bndoUzBLM3RaMDR1alJqaHdhb2NvMk9IeTd5MlVWVVJFbUVTY3czVlZZU1lkdmJvNGNPVVZmdHhBbG1NTEdRQWJxeldSd2U2c2ZKN1RrMVBmcVgzNjNSaVhaRWw0V2dVaG9pS2M5Q1RveVA0NXlIK2YzUEZxbTRrc2pMM0RPT05vT1ZoUXpRbmUxNmNkbEZvV3BLSWt4aXZxbXlrZ2piM2w2NGZJbDYyeTBPdFlTaGhZelEvZTFXY2JYbG9Kb2FJaW5iUXE2dGZQTk5lenRBeFpWRVdJYWVjWndsekMxa2dPNXZsM243NWpTdXN6UlVXVW1FU2N3M1ZWWVNZZnMxaklPTVlYRWhJM1NYdTBOY214eFVYME1rQ2IzaFVIRWxFZGF4Wnh4aERMc0xHZmpxMHp0MG81dnJFemYrLzJsQXNsQ1Foa2dTbW04cXJpR1MyamM4TVg0RVJ4akQ5RUpHNkY0M1VWeUpEcFNsSVpLYXM1QkJoTFhwR2EvWm93RUxHYUhiM1JUUnZUSVVxaUdTaE9hYmltdUlwTDBhM2xwZncydjJhTXhDUnVpbVd4WWRWd1dsaTRzWXVUY2NxcThoa25iMWpGODFTY01XTWtMMzNacm9zbktvRFhFUkl6ZmZWRjljeFBoQ1ZzUHh5V0Y2QVBYNjlZTTc2S3dtSmc3ci9ndDl4SWpPTjBXSWk1aFV6L2k1VlJxOGtHbm9NVlFzbXJBQjlTWXJNcVRubTFJRVJZQXZaRjNRODlEei9qdjdmRlpLalZDcmdpSmdlL3Y4MmJPeTgwMUJnaUtndFpQNGtXRzZiU0hUMElNcDc3L3Y1L2hYaS9XaTl4VVBFTkNhNzc2K1B2eEVDTW9TRWFWOUlRM3kyZDBjWDV2d056KytpdE1heTlUUkVicW84cUwwOWpaOXBRVkJCZ2Y2S0xTa3FOc0VlbXNoZTV3WG4zNmNKblZmWDM5aHJ0aS8ySFNLNFF2cE9JYndoWFFjUS9oQ09vNGhmQ0VkeHhDK2tJNWpDRjlJeHpHRUw2VGpHTUlYMG5FTTRRdnBPSWJ3aFhRY1EvaENPbzRoZkNFZHh4QytrSTVqQ0Y5SXh6R0VMNlRqR01JWDBuRU00UXZwT0lid2hYUWNRL2hDT280aGZDRWR4eEMra0k1akNGOUl4ekdFTDZUakdNSVgwbkVNNFF2cE9JYndoWFFjUS9oQ09vNGhmQ0VkeHhDK2tJNWpDRjlJeHpHRUw2VGptR0Y3KzMrcVlNSlpwZ3g1dGdBQUFBQkpSVTVFcmtKZ2dnPT0ifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMy0wNi0xMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxMDUsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiQ2hpcHdvbiBDbGlmZSBLZXkiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlUyRjEwMDAyMDIzMDYxMjAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIzLTA2LTEyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEwNX1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wNy0yMyJ9LHsiYWFpZCI6IjAwMjIjMTEwMCIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFpZCI6IjAwMjIjMTEwMCIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJNb3ZlbmRhIEVnb21ldCBGSURPIFVBRiBpT1MgVG91Y2ggSUQvRmFjZSBJRCBBdXRoZW50aWNhdG9yIn0sImRlc2NyaXB0aW9uIjoiTW92ZW5kYSBFZ29tZXQgRklETyBVQUYgaU9TIFRvdWNoIElEL0ZhY2UgSUQgQXV0aGVudGljYXRvciIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6InVhZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfZGVyIl0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19zdXJyb2dhdGUiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmFjZXByaW50X2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsic29mdHdhcmUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsic29mdHdhcmUiXSwiYXR0YWNobWVudEhpbnQiOlsiaW50ZXJuYWwiXSwidGNEaXNwbGF5IjpbImFueSJdLCJ0Y0Rpc3BsYXlDb250ZW50VHlwZSI6ImltYWdlL3BuZyIsInRjRGlzcGxheVBOR0NoYXJhY3RlcmlzdGljcyI6W3sid2lkdGgiOjU0MCwiaGVpZ2h0Ijo4NDAsImJpdERlcHRoIjo4LCJjb2xvclR5cGUiOjIsImNvbXByZXNzaW9uIjowLCJmaWx0ZXIiOjAsImludGVybGFjZSI6MH0seyJ3aWR0aCI6ODEwLCJoZWlnaHQiOjEyNjAsImJpdERlcHRoIjo4LCJjb2xvclR5cGUiOjIsImNvbXByZXNzaW9uIjowLCJmaWx0ZXIiOjAsImludGVybGFjZSI6MH1dLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOltdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFNZ0FBQURJQ0FJQUFBQWlPam5KQUFBQUJHZEJUVUVBQUxHUEMveGhCUUFBQUNCalNGSk5BQUI2SmdBQWdJUUFBUG9BQUFDQTZBQUFkVEFBQU9wZ0FBQTZtQUFBRjNDY3VsRThBQUFBQm1KTFIwUUEvd0QvQVArZ3ZhZVRBQUFBQjNSSlRVVUg0Z01CRFNJM2Y1Tjk0QUFBR2VGSlJFRlVlRjd0M1gxd1ZOWGRCL0J6enQyYmZjbHVTRWdJRXBKTkVDWFFJQVJDVUxRKytGYW5pcFNxcmJhV2NiUlRIS3N6OW8rK3pmU2ZwNTNwMDMvYXB4MW0ybWZHZ3ZXbHFIV3FkaXJGbDZLV0NpS1FoSkFJUWhCSXNra3c3MitiM2J1Nzk1N3plLzdZWk4yRTdONlh2V2V6YTg5bm5NNDBuSnZzN3YzdXVlZWVlMTR3QUNCQnNCdlJLeUFJVm9oZ0NWeUlZQWxjaUdBSlhJaGdDVnlJWUFsY2lHQUpYSWhnQ1Z5SVlBbGNpR0FKWEloZ0NWeUlZQWxjaUdBSlhJaGdDVnlJWUFsY2lHQUpYSWhnQ1Z5SVlBbGNpR0FKWEloZ0NWeUlZQWxjaUdBSlhJaGdDVnlJWUFsY2lHQUpYSWhnQ1Z4OElZSWxWZ25JUFE2OUFqbVAwdGloUTZCcDhzYU5wS3dNWWF4M2dKQU5lUjhzTmpvYU9YQ0E5ZmZIRGg1MGJOeFljTU1OMG9vVklsNExMdStEcGJXM3M4RkJ4Qmp0NmFHOXZlclJvODRkTzV5MzNvb2NlZi9XOGxwK3Q3RWdISTZkT0lGVUZXR01DRUVZczZHaHlFc3ZSZDk2QzFSVjcyaUJvL3dPRnIxNGtWNjRNT3ZDUndnb1N1VFZWNk92dlFhUlNPcERCYjd5T1ZpTXFTMHRNRFUxdDBXRk1VU2prUU1ISW4vNUN3U0RLUTRXK01yallMSEJRYld0YmY1Mk9zWklWYVAvL0tleWJ4OGJHNXVuZ01CWkhnZExqVGZiVTkwQVlvd0FZaDk4b1B6cFQyeG9hUDR5QWpmNUdpd0loZFFUSjVDbTZSVkVhbk56ZU85ZTJ0dXJWMUN3VTc0R1M3dHdnVjY2WkxDL1NqdDFTdG16aDE2NnBGZFFzRTErQm90U3Rha0pRaUdEd1VLRWFPZk9oWjkrV2p0N1ZxK29ZSSs4REJZYkdORGEyNDJtS280UTJ0MGQvdU1mMVpNbjlZb0tOc2pMWUttblRySGhZWFBCUWdoaHpDNWZWcDU5VnYzb295L2FjMnRLWVhJU3BxYjB5bVZQL2ozM2dLa3B0YWtKVVlxSStXOEZJV3h3TVB6Y2MrNW90T0RtbTVFazZSMlEyelNOZG5WcEZ5L1N6azdhM1MydlgrOTY0QUVySHdzSCtSY3NyYU9EZG5XWnJxNFNDSUdKQ2VYUGY0YXBLZWRYdjVxL2p4VFowRkQwN2JkalI0NUFNSWcwRFFGZ2x3c2lFZXp4NkIyYURmbjJzV3FhMnRRRTRYQkczMHVNSVJTS3ZQb3FLSXB6KzNic2N1a2RrR00wVFcxdGpmejk3L1RpUlFTQU1FYVNoQUJZZno4Ykc1TkVzQ3lnL2YzYW1UUFdxNnNFakNFU2lienhCa1Nqcm52dnhZV0ZlZ2ZrQ3RiZkgzM3JyZGlSSXpBMUZYL3VQdjBQR0VNb3hBSUJhZm55dEw4Z1MvSXNXRnByS3hzWnNTRllhT2F4ejl0dlF5amsvdmEzY1ZHUjNnRUxUVlZqVFUzUi9mdHBaeWRDNk1vNkc2SlIydDB0YjlreXo3RlpsMC9CZ3NsSjY4MzJlV0dNTkMzMndRZWdLTzZkTzBsWm1kNEJDNGIxOTBjUEhJaDkrQ0dFUW1uZVBnMEVJQkxKaFl0N1BnVkxPM2VPZG5mYlUxMGxZSXdZVTQ4ZFE2cnEvczUzU0VXRjNnRlpwMWRSZlE1ajJ0Y0h3YUFJbGhtYXBqWTNReVJpVzNXVkRHTzFwUVhDWWZjamowalYxWHFsczhkZ1JaVUFrNVAwOG1XeVpJbGVRZTcwWDJ1T29IMTkydW5UTmxkWHlURFd6cDROUC8yMDF0R2hWelFyVkRWMjlHaG85Kzdvd1lORzc0SXhCa1ZoZ1lCZXVXd3c4SEp6ZzlyYXlzYkdPQVlMSVlReHZYaFIyYnRYUFhWS3J5aGZyTDlmZWVFRlplL2U2UWZ0eHQ4MVk3UzdHK1hBc096OENCWWJIMWVibWhCamVnVXpSZ2dOQkpSbm5sR2JteGZtc1krRmlpb1p4clNyaTRWQ2V1VzR5NDgyRmoxN2x2WDJtdmppWm9JUU5qUVUzcnZYSFFvVjNIeXo2Vk9iQWJNdHFubGd6TWJIMmNBQUtTN1dLOHBYSGdRTFlyRllVeE92WnZ1OE1JYnhjV1hmUGxBVTV4MTNaT0d4RDBTajZ2SGowVGZmcEYxZENLVzk5VXNQWTFBVUdnZzRhbXYxaXZMRi9TUExIT3ZybzJmUFpxbTZTc0FZZ3NISUs2OUFKT0s4Nnk3c2RPb2RZQjN0NjR2dTM2OGVPd2FLWWoxU0NhcEtBd0hFbUEyL0tnTjVFQ3oxNUVrMlBwN3RZS0hwYjMvazlkY2hISGJkZXk5MnUvVU9NQTJpVWZYWXNlaisvZE1qcDIySkFzWXNFSUJ3R0h1OWVrVTV5dlZnc2JFeHRibDV3YjUvR0tOWUxQcldXeEFPdXg5OEVQdDhlZ2VZWUhORmxZQXhIUmhnSXlPU0NGWWEydW5UdExmWCt1Y2V2N1BMcExiREdLbHE3UDMzVVRUcSt0YTNTR21wM2dINnVGUlVDUmhES0VSN2V4ZTJwemVuZ3dXeG1OcmNqR0l4aXg4OWdGUlpDWXFTNlhQcitFeXlJMGRBVWR3UFAwekt5L1VPU0lkWFJaVXNGcU5kWGVpbW0vVEtjWlRUd1dLQmdIYnVuTVZNQUdDbjAzbnZ2ZGp0VnA1L25nME1XUHc5U2RUbVpnaUgzWTgrS2xWVjZaV2RCOStLYWpZYUNJQ2k4R2dYR3BUVHdWS2JtMkZpd21JZ0FNank1WTY2T2xKY2pKMU81Zm5uYVhkM3B1Y1NZKzNNR1dYUEh0Zk9uWTVWcS9SS3o1S05paW9CWTNiNU1reE9MbUN3T0wvRERMRGhZZlhrU2V2ZDM0VEltemJGK3drZGRYWHVYYnNjdGJVMjlOMFRvblYwUlBidGcvRnh2YUxUSUJxTi9mdmY0ZC85TG5ib1VOWjY0eUFZWE5nNXV0bDRrOVpvWjg3UXk1Y3RuZ1lBVWxJaU56UWtmdUM0OWxyM3JsMk9kZXZTSEdTQzI0MEtDdlFLSVlRUTdlcFM5dTVWbm4yVzl2U1llK3FYQ1l3aEVxRUwralRhMG1uakR5SVJ0YW5KK3NOVUFNZmF0WE1HNlVwVlZaN0hIcE0zYlVwMWtGR3lYTEI1cys2Y0JWQ1U2THZ2aG5idmpoMCtuTFdLNm5NQXRMc2JZakc5Y3J6a2FCdUxkbmRySFIwV3Y5OEEyT1dTTjIyNjhsRU1XYkxFL2QzdjRzTEMyT0hEaUZJcnY1OHhhZmx5M1pxUGRuVkY5KytQTlRXaGFEVGJrWXJEbVBYMlFpaUVqZFdzdGx1STk2d0xRRzFwZ1dEUXlvbEhDQUVRdjkreGV2VzgvMGhLU3R3N2R6cnZ2QlBKc3BVR0hNYU8rQ3E2cVVFNHJMejhjdXpJRWVzZEpYTlllSjBJc2JFeDl0bG5lcVY0c2VOdDI0ME5EMnNaTjl2VFRJN0FYcS9yd1FkZDk5eURYUzV6ZndVQSszeHlRMFA2eEdOWkpsN3Y5TVNzREFFZ2hMRGJiVHFnTTArajljcnhZdkxsWm9YVzNrNzcrMDEvbEhFQXBLeE0zcmd4ZlNuc2NybnV1OC8xalcvZ3drSVQyUUp3MU5icTkyakxzbFJUWS9IMUoyTU1PNTBGWC82eTY2R0hzTnR0NG5YR2FScnQ2a0tVNnBYakl1ZmFXS0FvMDgxMmF5Y0d3RkZYSnhtWkV5SEx6cnZ1d2w2djh2TExNRDV1Nk0vSnN0ellhR1NxQXFtc3hHNDNLSXJGU2dzQUlTVDUvYzV0MitRdFcxQWtFbnZuSFdwMmFRYU1hVThQaE1QMlB1STBLT2VDUmJ1NnREbnIxUm9IZ0QwZXViSFI2S0lNa2xTd2RTdDJPcFdYWG1LRGd6clpZa3p5K3gxcjE2WXJNME5hdmh6N2ZLQW9lZ1hud3hqMmVPVHJyM2R1M3g2L3NRVkNpTjlQQXdHajd5c09Zelk4eklhSEpSRXNCS0EyTlVFd2FLait1QktBVkYxdHJrOGNZM25MRnVSeVJWNThrZmIwcFB1N0dNc2JOeHA4Q0kxOVBsSlJZZm81VXJ5aXV2cHE1L2J0OHFaTmlSczZMTXVTMzYrYS9VemlUNk43ZXFRVksvU0syaSszZ3NVR0I5VlRwOHlkakdTU0pEYzBXS2o1NVEwYnNOdXRQUGRjeXVWR0FQQ2lSY2s5cnVsaHQxdXFxdEphVy9VS0ptRU1lNzBGTjk3bzNMYU5YSFhWbkgrVS9QNzRtaC9tUHB4WWJLSGE3eWEvQkp5cHAwNlovcFluQUpDeU1vZGVzejBWeCtyVm51OS8zN0ZtemZ4dFpBREg2dFhFNzUvbm4xS1FhbW9NOXM1UFYxVFhYdXQ1L0hIM3d3OWZtU28wYzIyOTh1YzZNS2FkblJBTzY1V3pYdzRGQzhKaHRhWEZ5SHExOHdOd3JGc256WGRXREpLcXF6Mjdkc2tORGZOa3krbVVOMjgyMWRrb1ZWWWF1dVZrREJjVk9lKyt1L0FIUDVBYkc1RXN6MXNLRnhXUjVjdjFmOXNjR0xQUFBvT0pDYjF5OXN1aFlOR0xGK25GaTVhcksxeFlhS0xabmdLcHFIQS8rcWg4NDQzeE1WalRQMlZNcXF4MDFOV2xQWFF1VWxvcWxaZW5pd0lBd3RpeFpvM25pU2ZjRHoyVWZ2b3lkcnNsdjk5MHNCQ0tON1AwU3Rrdlo0TEZtTnJjUE04MkV3WUJTRFUxam11dTBTdW5qNVNWZVI1NXBDQyt6VlA4UkJJaU56U1luVkNGM1c1U1daa3lDb3poNG1MWGpoMmVwNTZTNit1TmZCK2s2bXBrb0tkakZvd2hHbDJRWmxhdU5ONVpmMyttemZiR1JydVd1Y0pGUmU2ZE8zRmhZZlR0dDFFMFNoWXYxdTF4bllja1NYNy81K2xNQUVDRU9OYXRjKzNZNGZqU2w0emYvMHArUC9aNHdPeThFZ0FhQ0VBMHluV2kwWlZ5SlZocVd4c2JHakwza1NVQWtLVkw1ZnA2dlhJbVlMZmJkZi85Mk9PSi91MXYwdXJWeE5KcVpwTGZqOTN1V2N1R00wYkt5Z3J1dU1ONTIyMTQwYUswUjg5RlNrcWtwVXMxcytzTVlFeDdlMkZxNmo4eFdCQUtaYlR3RllCY1gwK1dMdFVyWnc1Mk9sM2J0cEdpSWxKYWFxclpua0NXTGNPTEZrRjh3anNBY2pqaytucm4xNy91V0xYS1hEZ1FRZ2hoajRmNC9jajhVdlV3UHM0dVh6YllBMmVYbkFpV2R1R0M5ZlZxQWJEWEt6YzBXQXhsZXJKY2NOdHRsc2VkNHNKQ3Fhb3F2amdBV2JyVStaV3ZGTnh5aTVWZWd6aENKTDhmeWJLNTE1T1lHMzNkZFhwRjdaUUR3V0pzZXBzSmE4a0FrRmF1bEZhdTFDdVhBV3N2RENGY1VDQlZWYWt0TGZMR2phNGRPekova2RQWFZyTzNPSlRTN202a2FWbFlLeUFoZTM4cEZYcjVzdWx0SnBJNUhQS21UYnJqT1JlS282N09VMUlpYjlsaXl5c2tTNWVTNG1KcWRxUWF4alErTnpxTDY2eGEvQzdhU0d0dHRiTE5SQndBdWVvcWU1dnQ5bktzWGwxdysrMjJwQW9oUkFvTHBlcHEwNzFaR0xQUjBTenZyYmZBd1lKZ1VHMXBzVDVtQ0VCZXZ6NFhWa1pNeWRvWEpoVlpKbjYvNlV0ei9HbDBmQjJiYkRINUV1Mm1uVDl2ZmIzYStIak94a2FMaCtjbnFhYkd5cUEvVmFVOVBhYVB5c0NDdHJFeTNHWUN3SEhOTlZKTmpWNDVRMFpIUjg5MW5BTUd4Y1hGcGFXbFJVVkZIcHV1WC9hU0tpcHdVWkhwa1Y0WTArNXVVQlM3THNxNkZqSll0SzlQKy9oajYvV053eUUzTnRvMTJiZWpvK05Ydi9wVkpCS1JaZG5qOFZSWFYyK28zM0RUVFRkZGZmWFZlb2RtRmZiNXBPWExXWCsvdWM4TjR5eHZpTEtRd1ZKYlc5bm9xTGtQS0NIK1lGaHZHcFp4bEZKRlVSUkZRUWlOVDR6MzlmVWRQMzc4d0pzSHZ2bU5iOTV6enozTzdIWmJwNEZkTHNudlYxdGE5QXJPbHZVTlVTeGRnK3dBazVOcVM0dTV2cjVrR0RzMmJMQjNMd21NY2Z4L0NTYVNKQ0dFdXJ1Ny8vQi9mM2oxdFZlWjVkZkpBYW1xUXVhREh0OFFSYStVYlJZc1dOcTVjeXdRc0ZoZEdadUdaUW9BVUVvWlk1RFV3aVdFS0lyeXlpdXZuRFgvSUdXT1dDdzJOajQyTkRUVTA5TVREQWIxaXFjajFkUVFJeU85cmhEZkVFV3ZsRDBXNkZLb3FobHRNMkZ3R3BZWmZyLy8vdnZ1UDlkeDd1elpzNHFpNEpuSUVrS0dob2JlZi8vOU5XdldFRXV2ZG1CZzRQRGh3MjN0YlQyQm5vbkpDWWZEOGNNZi92Q0c2Mi9RT3k0bFVseE1saTQxM1lySTdvWW9DeE1zMnR1YjBUWVRocWRoR1ZkZFhmM2trMDlPVFUwZFBIanc2VDgrSFF3R2NkTExhMnR2Q3dhRGkweU9SMEFJSGYzbzZEUFBQTlBSMGFGcFd2d1hlandlVGJVNlNoWWhORFBvVC92a0U3MkNjMlZ6UXhRclg4SE1xUzB0MXJlWmlLK2VZR3dhbGlrWVk1L1A5N1d2ZlczcmYyMU52aUJpakFjR0JrWkhSOU1jTzY5UFAvMTA5KzdkWjg2Y0FRQkprdUlWSGdDQSthdllMSVJJMWRXcEJqR25sTjBOVVJZZ1dHeDhYRDE1TXBObXUvRnBXQlk0SEk0Tkd6WVV6QjRuRTQxR2gwZUdVeDB5THdCNDk5MTNBNEdBTkRNNkZBQktpa3ZXcmwyN3VIUngrbU4xRWI4ZmV6eW1tMWxaM0JCbEFTNkY5T3haMXRkbnNib3lPUTNMR3AvUEo4dXlxcXFKcXlGakxCcUpwajlxam1BdzJIcnE4K2xmQUxCMjdkb252di9FeXBVck0rOTZsY3JMU1drcG5adzA5ekhPYkloaWRwaTFCZG11c1NBV2k1MDRZWHArWElMNWFWZ0xaV0ppWW1CZ0lCNU5BSEM1WEE4ODhFQjlmYjNQNTVNTWpIQlBEeGNXU21rRzFLY3lzeUdLWGprYlpEdFlMQkRRUHZuRVlxb1FRZ1VGeVZPRWM5bFVhRXBOdXVoNHZkN2FWZlp0UStKd1NEVTFScVpnekpMRkpXaXlIU3kxcGNYNmVyWHgzbllPelhZdVp0Y21FcEZjdHQ3R3hnZjltYTYwRWh1aWNKYlZZTEd4TWJXMTFmUm5rUkJmcjdha1JLOWNMZ0prOVYyblFDb3FyQXpjbTlrUVJhOWNwcklhTE8zMGFkclhaN2xUbEJRWFc1bUc5UVVWZnhwdCtsczZzeUdLWHJsTVdUckhsa0EwT3IzTmhEVUEwcG8xMXFaaG1lVndPTEMxaTNWcTl2OUNwMU95Y0JNenN5R0tYcmxNWlM5WXRLdExzN3c3SEFCMnVRb2FHN1BUYkM4cUtwSm5kejh5eGxTejNUK3ozNmltYVdHN0wwQ1MzMjlsdG1COFF4VE9zaFdzK0hxMVp2dGRFZ0JJWmFXMFpvMWVPWHZFKzdFUy94ZGpISTFHKy9yNjBoeHlKYXJSNUI3MmNEamMyZFdacHJ3RnhPODN0TzdJRmVJYm91aVZ5a2lXZ3NWR1JyUU1tKzJOalZubzFvc3JMaTVldG14WmNpd1lZOGRQSEo4d3MyeEwvMEIvWkdZb0FjWlkwelRGN25OSlNrcElSWVhwVDNWbVF4UzljaG5KVXJDME0yZm9aNTlaYjdhWGxNZ2JOdWlWczQzWDYxMi9ibjN5VHdnaDdlM3RML3o1aGFHaElTUFhSRVZSUHZ6d3cwZ2trdWdnOVhxOS9pcnpUYUswcHBlZ01TOExHNkpZT3RNbVFTU2lIajl1L1JIVmZOdE1jSVV4dnZYV1d5dVdWU1NQNzFOVjlhOS8vZXVQZnZ5ajMvLys5MU9wMTVrTkJvUEhqaDNidlh2M29VT0hFaytkRVVLM2JMM2xHanNXdzVrRjQrbTUwYVprWlVPVWJBU0xkblpxNTg5YmJsMmwybWFDcTlyYTJ1OTk3M3RsWldXSkN5TEdtRkxhMGRIeHIwUC9TdE1NUC9QSm1WLyt6eS9mMlA5R05EcjliTEd3c0hEN1Bkc2ZlZVFSSHVPYkpXdFBvL2x2aU1JL1dJbjFhcTBHUzZxdVRyWE5CRDhZNDd2dXV1dkhQL3B4WldYbG5ER2xoSkEwZlFlYU90MldTZ3gwM3JwMTY1TlBQcm1Fenlnb3NtUUpXYnpZZExCbU5rVFJLMmNkOTJDeDRXR3RyVTJ2VkdyeGhhOHNkREZuYkdobzZFVFRpYkd4c2VRZnhrT1dwaHNkQUlCOVB1SUtBSTRlUGZybVcyOXFscGZBVEF0N1BOWlcrdU85SVFyM1lHbnQ3WFJnd0hxenZiVFVrY1ZtZTRLaUtIdjI3bm45OWRkRG9WRHk0QmxDaU52dEpqamwyeWtySzl2VXVHbng0c1dKYkkyTmplM2J0Ky9qano5T2RVaEdIQTZwdWpvSG4wYnpiYmpZczgxRUJ1dlZXbmI4K1BIMzNuc1BKZldZQThES2xTdnZ2dnZ1MnRyYU5HT1VWNjFhOWZQLy92bnAwNmQvKzd2ZmRuZDN4eStkSXlNakh4NzlzTDYrM3ZiK2Q1UllnaVljTnRmWTBEUWFDQ0JLVFlmU0dFdm4yekI2NFlMMjZhZm0zbkJDWXB1SjdEYmJFVUtxcW43d3dRZkpkUlVBVkM2di9PbFBmdnJRdHg5cTJOZ2dwNzRSa3lUSjQvRnMzcno1emp2dlRKNThjZjc4K1JDZk5nMnBxTUFXZXZobWxxRFJLMmNSejJEWnNsNXRyWDFqbUF5Ym5KdzgxM0V1dVhaaGpOMTQwNDNYbVZtN2JIWHRhcmZibmJnZ0RnNE9KdTRUN1lXOVhvdUQvb2FHMkxDNThkYkdjUXdXR3h4VU0xbjRLdDVzOTNyMXl0bHZkR3gwWW1JaU9WaE9wL1BhYTY5TmM4aVZpb3VMRXdQbk1jYVJTSVF5cTR2cXBEWDlOTnJzNXp5eklZcGVPWXM0Qmt0dGIyZURnNmJmY0Z4OGQ3Z0ZXdmhxY25JeStTWU9BR1JaTHZLWnV6UEZaTzRieDhqU1IySEE5Tk5vczVVV3p3MVJlQVVMUWlIMXhJa010NW13ZmIxYWc4TGhNTDFpeVM3VDdXNlRaemtUVWxXVmxhWElNYVpkWFp5YVdieUNwVjI0UUM5ZHNseGQyYkxOaEdYOHFoWk84S0pGWk5reTB6VVd4cXkvbjlPR0tIeUNSZW4wZXJWV2d5V3RXR0hMTmhPNWcydFlzY2RqWlFuSitOTm9QczBzTHNHaUF3T1pybGU3ZWJPVnVqMkhVVWFqTVM1M2hYR1MzMjkwczdFRW5odWljQW1XMXRhVzBYcTE1ZVh5K2xtalZ2S1J4K054SlBYQVRVMU5uZTg0bjZaOGhxdy9qUTRFZ0VNL2lQM0JncW1wNlcwbXJJbXZWMXRlcmxjdTF4VVhGeWNHUjJDTUZVVjUvVyt2WDdwMFNkTzBUTmR1bUE5WnNvUXNXV0k2V0RNYm91aVZNODMrWUdrZEhiU3owM0oxeFhHYkNjUG1YYmZEN0YyaHorZXJxNnRML0I1Q1NHdHI2ODkrOXJQZi9POXZMbDY2bVA1WUN5dy9qWWFKQ2RiZnIxZktOTHZQWDJLOVdwT25ZVm9XdHBrd29IK2dQeHFOSmlmSjRYRDRURzVWUWdpNS9mYmJ5OHZMazBjTGRnZTYzM25ubmM4dWN4aFdFTjlzek94OU5NWVFEdk9ZVzJGenNHaC92M2Jtak1WVUlZUmt1ZUQ2NjdPMnN1KzhSa1pIamh3K01xY2Z5K1B4bEpsZmxuTDl1dldQUGZiWWtpVkxrdGNLVEQrY0t4TVdtMW1KRFZGc1pmajVMbU5zY0ZCbmFCZ2hzWTgrWWlNakZvTUZnTDFlN1BQUnpzNVpjOEFsaVN4YlptV2VreG14V0d4NGVMaXpzL01mLy9qSHlkYVR5YytQR1dOK3Y5L0NxbXNZNDIxM2I2dXNyRHo0ejRPbjJrNk5qWTNGWWpHWHk1WDVvaUR6SWhVVm4yODJaaHlmRFZHTUJndFVOZkxhYTJwcnEwN3JKeEl4L1kxSndCaW1wc0o3OXN6S0pRRDIrUXFmZXNxdTlkeFRhV3RyKy9WdmZqMHlNaElPaCtjc0NTbEowdWJHellXV3VqOHd4dlhyNjY5YmU5MzQrUGpJeU1qSTZBZ0ExUEo1c2s2OFhzbnZONzFFVkh4RGxPRmhhVUdDaFFBZ0hJYkpTWjFnbVhwTFY2SVU1aXo4R28rcDVYdE13eUxSeU1qd2lCSlI1cVNLVXJwbXpacXRXN2VtT3RBSVNaSktTMHRMN1Ywc0RnQ21waUI1aWdyR1pQSGkxQWVrZ0RHRXc3R2pSeDBURStrV0N3RWdKU1hTaWhVRzc2c01Cd3NoaFBIMGYxeGQrZnQ1LzBXRUVFSVk0VG1QalFHQU1WWlZWYlZyMTY3bFdad2paQkRFWXNxTEwycHRiWitmYVl4QlVReWUrRmtvamI3elR1eTk5OUpkYlJoek5EUjRIbi9jWUp2RVRMQyswQUFCWXl4eEIxZFFVRkJTVXRLd3NlRysrKzVibTVzTEp3RkFNTWhHUnVZbXlkcjNVTk1nL2Z3OHhsQXNacnlkSTRJMXplZjFiYWpmSUVtU3krMWFXcjYwdXFaNmRlMXF2OTlmWVBZNVNUYlpldzFKLzN0TS9pRVJyR2wxZFhXLytNVXZKRW1TSkNtbnc1UW5STENteWJLY1ppUzdZSmI1aHA0Z0dDQ0NKWEFoZ2lWd0lZSWxjQ0dDSlhBaGdpVndJWUlsY0NHQ0pYQWhnaVZ3SVlJbGNDR0NKWEJoNWxraFkxbllOV291Z0FYNG8va0NZUHEvTERENWh3d0hTNUtrK0RvK0ZzYVJaUUlBdTkzWTdkWXI5NThIWSt6eDRLS2lMSjBSeHJESFkzemtERFkrZVJKVU5RdERoT2VCTVpibExIMThlY1RJOUJaYjRjSkNVbDV1OEVTWUNKWWdHR2NvZllKZ2xnaVd3SVVJbHNDRkNKYkFoUWlXd0lVSWxzQ0ZDSmJBaFFpV3dJVUlsc0NGQ0piQWhRaVd3SVVJbHNDRkNKYkFoUWlXd0lVSWxzQ0ZDSmJBaFFpV3dJVUlsc0NGQ0piQWhRaVd3SVVJbHNDRkNKYkFoUWlXd0lVSWxzQ0ZDSmJBaFFpV3dJVUlsc0NGQ0piQWhRaVd3SVVJbHNDRkNKYkFoUWlXd0lVSWxzQ0ZDSmJBaFFpV3dJVUlsc0NGQ0piQWhRaVd3SVVJbHNDRkNKYkFoU1B5Mm10NlpRVEJORWZrbFZmMHlnaUNhUTRrU1hwbEJNRTAwY1lTdUJEQkVyZ1F3Uks0RU1FU3VCREJFcmdRd1JLNEVNRVN1QkRCRXJnUXdSSzRFTUVTdVBoLzVTU2hUbjJXeGw4QUFBQWxkRVZZZEdSaGRHVTZZM0psWVhSbEFESXdNVGd0TURNdE1ERlVNVE02TXpRNk5UVXJNREE2TURCa0VBVDNBQUFBSlhSRldIUmtZWFJsT20xdlpHbG1lUUF5TURFNExUQXpMVEF4VkRFek9qTTBPalUxS3pBd09qQXdGVTI4U3dBQUFBQkpSVTVFcmtKZ2dnPT0ifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAxOS0xMC0zMCIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiQ2xpZW50L0F1dGhlbnRpY2F0b3IgQ29tYm8gQ2VydGlmaWNhdGlvbiIsImNlcnRpZmljYXRlTnVtYmVyIjoiVUFGMTAwMDIwMTkwNTA2MDAyIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjMuNiIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4wLjAifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDE5LTEwLTMwIn0seyJhYWd1aWQiOiJlNDFiNDJhMy02MGFjLTRhZmItODc1Ny1hOThmMmQ3ZjZjOWYiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6ImU0MWI0MmEzLTYwYWMtNGFmYi04NzU3LWE5OGYyZDdmNmM5ZiIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJTYWZlS2V5L0NsYXNzaWMgKEZQKSJ9LCJkZXNjcmlwdGlvbiI6IkRlZXBuZXQgU2FmZUtleS9DbGFzc2ljIChGUCkiLCJhbHRlcm5hdGl2ZURlc2NyaXB0aW9ucyI6eyJlbi1VUyI6IkRlZXBuZXQgU2FmZUtleS9DbGFzc2ljIChGUCkifSwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfSx7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQ25UQ0NBa1NnQXdJQkFnSUljYURhdVRSNkFJNHdDZ1lJS29aSXpqMEVBd0l3Z2FveEtqQW9CZ2txaGtpRzl3MEJDUUVXRzNOMWNIQnZjblJBWkdWbGNHNWxkSE5sWTNWeWFYUjVMbU52YlRFTk1Bc0dBMVVFQ3d3RVJrbEVUekVaTUJjR0ExVUVDZ3dRUkdWbGNHNWxkQ0JUWldOMWNtbDBlVEVRTUE0R0ExVUVCd3dIUlc1bmJHbHphREVRTUE0R0ExVUVDQXdIUlc1bmJHRnVaREVoTUI4R0ExVUVBd3dZWm1sa2J5NWtaV1Z3Ym1WMGMyVmpkWEpwZEhrdVkyOXRNUXN3Q1FZRFZRUUdFd0pWU3pBZ0Z3MHlOREF5TWpjeE1qRTFOVFZhR0E4eU1EYzBNREl5TnpFeU1UVTFOVm93Z2FveEtqQW9CZ2txaGtpRzl3MEJDUUVXRzNOMWNIQnZjblJBWkdWbGNHNWxkSE5sWTNWeWFYUjVMbU52YlRFTk1Bc0dBMVVFQ3d3RVJrbEVUekVaTUJjR0ExVUVDZ3dRUkdWbGNHNWxkQ0JUWldOMWNtbDBlVEVRTUE0R0ExVUVCd3dIUlc1bmJHbHphREVRTUE0R0ExVUVDQXdIUlc1bmJHRnVaREVoTUI4R0ExVUVBd3dZWm1sa2J5NWtaV1Z3Ym1WMGMyVmpkWEpwZEhrdVkyOXRNUXN3Q1FZRFZRUUdFd0pWU3pCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQktqWGJOMnEwTWtWc2xvNlN6SThnNzlkdzIwLzMrK1FSbHJRaE0zaHVwcFo1aTVFbFNGaXl3eldocGlnODFBcTBTSXUyS21sVFlwdDg2bUxMK2RBWjVHalVEQk9NQjBHQTFVZERnUVdCQlMwR0N3Tk1pNnZXYUpsQnJ5K2dPbmhZc3J0b0RBZkJnTlZIU01FR0RBV2dCUzBHQ3dOTWk2dldhSmxCcnkrZ09uaFlzcnRvREFNQmdOVkhSTUVCVEFEQVFIL01Bb0dDQ3FHU000OUJBTUNBMGNBTUVRQ0lHWmNtcW1DaFhpMWhMOWRaMlhyNk5LTzNoeWZOQmw3NVoyTWl4czlYVHEvQWlCNzc1OTV2R3UwUXE5SDlBQzdiVVhwNFBtM1NMSHVrK2tCWTVudndNVG55QT09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQU1nQUFBQkdDQU1BQUFDK1BDc0VBQUFBalZCTVZFVkhjRXd5UVU0eVFVNHlRVTVjT0VVeVFVNHlRVTQ4UDB3eVFVNlRLamt5UVU0eVFVNHlRVTR5UVU0eVFVNHlRVTR5UVU0eVFVNHlRVTR5UVU0eVFVNHlRVTR5UVU2L0hpNi9IaTR5UVU0eVFVNHlRVTR5UVU0eVFVN0FIaTYvSGk2L0hpNi9IaTYvSGk0eVFVN0FIaTYvSGk2L0hpNi9IaTYvSGk2L0hpNi9IaTYvSGk2L0hpNHlRVTYvSGk1anc0UjdBQUFBTFhSU1RsTUF1L1FTQmRucUNob0M0ZnpBUWZsTUp0TmdNbjVXb3l1anlvcVZiYlUrSHRnUjdLeXZtWXR0VjhoN1NieUxablJ5QUFBSW5FbEVRVlJvM3UxYWgyN2pPQkNWMWFuZXJXcGJrVnRzSy8vL2VjY21pbFJ4QWh6T0d5OXVzTUE2b2ppY3grbWtKT250S0hZc2tjSXFsdDZSUUdyMXZjMzk2L3ZRZjBza2txdjFFd3FEOTlSSnZBazVraUdTNmoxVkloa0tSNm5lOTVyMEY1QlI5TDM4TndBSm9Ndm9ieW01NlVjOE5kQkhtbmZFNFllZXpSR0tXbkw2aGlITERLZkJ0L2RLOVIwVkl0c2llVnB0dktWdlE3ZEllZkxmTXh0SzkrTXgzLzBOMGZiNjlmV1ZiM25hcTI4SlpQc0JrWHp3ZERodDM3TFNPbi9ONlBNdGtlenpPWkxUREs2TGNtVWEvMnFyYSsvbm5LTWp0TFdQNlR0cTA2UFFyQ2UvRUFuZ2YzUFVQcUJLRm9CZzBuOWg5eGdsc1RMQjhEMFE3eGMyajFXdk80a3BYZklKSFNHT3d3eElGWWJlcndVQzVYS2xCVmYvK2pyUDNsWVVjL09MZ2NqTFFJNzdwUW5aN3daeStwalM0YnlJNDdjRDJXK24xQUxwSFlFOGo4dlFPVXpUVk1BYUVBTU5MMWI5QUU5VVY0ODduZ3pTdVl2N3VjQjFGUWcvemE4Y3piS0tMRklXZ0NoK3VRa3RTOXVVcmpGckRySUNUZXpxb1NsUW9ocFNHdUR6cDZTQjg4SW1pYW13YW9vR0kvS25pZWRxUlpZcWM2NUluSERrYXNDSkRwS3J3Z3pNbFkzeEhZODJqWGFSZ2drUUkzTGtvYWVVT3lGUkJxWEYyazBySWVJRU91WVR4cEpaNmdOWHZTUkxLNlJOMVNPSUtTcnNvVlBkQ0Z6TlJMTVpWenJSRkE0WFYvUmlKREwza2w0TFFJQ1plVHdQSytWUEFZVE91UWxHSUgxZkJodCswSWs1SUgyaEtDVy9xTVloY1F1QjZ5YjRLUkExb1pMU0V3bGQ0NEZRY1R4TDA0aUVPdE5WUkI3SW1xWVJvVFltQjZScktGTzZlQkZ3UUxTZ0VvOFBHbWF6UGxHeWJBMWNuZUNIUUNMeWZsaW1mbG9ON3c5QWxJWllWQm9vU2x4cjNJRXhjSFdpZTlkVVREZkRUTkJoaHBrMVdGb2RJcENiSkUyVERWbWdnN0lhVllNTlNzT2JaM1ZsVWhLcmxvZnRjUzJPYTRWblZwQ3JVU2NKWW10bkNhS2xMcDJjcnNqVUZvUE1Gb0FreEtUcGZzVlk2eVdaaDM4UDFxM1dhRTBkN1pTcXh0UnpDdDhnam9vM3dJdndJSjRudzAzUXl3QkZKYVVtMHRLTmMvQkV5aFZncFE4Z3M2ZFJDOVI0RVZhMkt4a1BCSXNrUjZQOUlzWld3Q0FXYkd2VWNoU0gyc0U0U0xiWndkSEFvSzVqK1h4WTdSMnlWN1V0WEJJQXZFcUdoUVBQZ1NoNFk3TXhyQVloQjZRYytSQnhFVE03R2hRcGMwRTZRTUpxNWdpRUg0dzhKZ1FGTXJxYTVNcHNKcGJHUzhWelhicHozd0J4bVVrTVZJOUFNRjloTUxMcHZxZWU0S0swQVNEcllDQjJ4NlV6WWpFSkJ5VGhqSHNVMXBlWjVxaEtNb2JzR3lCWWR4cyt6K0d0SlVBd3lzSTBSc0pQa0JsZ2UwaTRFUU0vcVVjZzZXeVpSbVZBdEdCaUZLU1R3NitWUE5lU29mNEdTRGZaSHJvU0FSSmhJM0E0S3BBaVFvV0tFL0pERnVPRWdlakJUUEdod29Ed04weUdNd0JSc1RRYXgzU0R1TnJWRDRBNGc5RlBHaGlmYmRDY05JVWxoQ21WREVnbzFCMVl6ZGg4Q0pCb0VZaFJMSFA5Q1pCaVhpRW03RkcxQ3NUVXZnUGlHTE1ncnpNZ3ZEeUFBUUZyMi9OaklPNHpJTnBtU3BWQjNhQ1lEYVUvQXlLY2JZd2F3Vzh0Y0kxK0NFVDBTeHh6Q1pDU3BHdGpRdW9RZmQybElRcWtFRXhyakV3eklLTkdpTnZML2pMWGI0QTBMTmFJRWM5bmtiaGJhaWZ3NHZiS1BSRVhUd2VLOVNGWFBOTUlPY09KVmxMM2N5QWs1Zkc5RFRaVUx2eGF3VnE3dG5hN2JXb3p4OFA1QjBmNVp4cVpKV0NodUgzZXVlS2N5MGQxa3BUSUJGS0gxWXZ6N0ZXTU5CSlVVeUZJSkhpbUVjbjMxZzhIUVRZUHNOS2tCdUFUQ1ZtVEwxRzBZS0ZEcHNLcTYwQXN2c2ZRR2MrbkdpRTdseG5yeHJQNmlRT1IyM0luVmYxUU5PSlN2ZUU3U3pjeHhsd3QxeHdTby9aNUlIM0gzQjBmbFZIM2Y2b1JhVkxDWXE2REowWVRTWmVLclQ2azR5cnRscWdmZzVMME5xN0sybENMVmo2a2pCL0tmempUN2V4QzZFdnRpaUlKY01LMmErbGJqVWdtTHNxOGFqQUNOYzY4b1JnbXUxcTRLMmNaS3NsNk9teGx6TUJIRFJMdWRKd2tpVmxqMWV0WkdxRGhNc1RGRi9FbEFqbE0zRUF4NDZoRGZ5WkE2RXVkQ1BkakpNMDFpdlJFSTNhWEpDYXIrR0huUmJobU91M1htUEgwZXBmVWl5NGYwTHBBMWtJTCsxcEh4VUIrQlFLSHRveDZTSVpIaDZQS2cxMXBxT21rSHd2SE1sN0hWWkpWaExyWWxxOW9CTDJNclNLZGN4MmNOR2JsUkxlb2sxaW9jT1FvNG9BZ3U3REZla0ZQQnR0UHAzVks0WThhQ1d0TCtLTEtsVmFBakRjQTd0S1JCcHlhcW1JL3Z3WUU5cmZqaVlZVzBVREdFcE5TaHh3VXVYUEhwQk5VT24vQWtwaWNzMnVtWDNDekFzR1FaQ0hDMWg2bmtSblhjZ3lhSU83a1owQWt3ODhzMmJNOXZjQnR2VnMxaUpnaG1sR253V0ZiMWd2eGlBNm9jZW5vc20xN3N0WFV3WEIyU1lIQXlGRG9rS3VzWmY0NHl5ZzNUZE1KRWQySU1yUWVld2ppeE1IeUVLN0NxMjdTRldGWXJuYnVxdW1tcVI4UFJxTWlBbVBtTU16WVI1OFlLQXU5Y2dCbnBtNWdUUElJcmtjVU5NMDFWWEV0U0xQMXhZZkFtSE5sbHFnb2l2R3pDN3JGOGU5ZWtKYUF2T0EyOGIray94eUk5RCtRZndHRTJTUUF2Tit4NStULzhTM09OZW1JQ2dCOU9ubjNsVUQydHp5L2tMN29kc3p6L0U0ZEZsMzVrd3V6N1FuOWR6OWovMVV2cDlQcFFpN1M5dVFMay8wcHorSE1HMkt5USsrcXQ4dnJmYVE5bnU3M0t3YWlIdlBkYmtka2JNK1BDM3plb3QrN0E1TDM4b24vTUI2bjdmMlJZMUQ3QS82WXFkM3Rib2ZyYm91RWJ4OW5JTjBQdTlkclpEc3VxaDdISytRYjl4SE1CTWdOYXVldzU0QkF1aDVhR3FoMmgxMzd1THplUjBCN1BON2JBY2hwdTkzaXZXNC9iOUk2RU9OMlJMK0JDSVM2elRrbm82L1dDTmpmSG84N0lFQU94Mk5PelA1d1hRWHllWDQ4aUxxV2dFajd6OFB1ajBRdEFOb2JsaFNabHRHU2krVDJzSzZSMCs3eWlVVmQxSWdrblkvcUh3cS9VT3pyeEVmQStYTzg0U2ZxT2VXQStVaCtBcXNhZ1VEQWk0SGdNL1h0NWI2alV2TlJhMzk4WEhZN0hMV0FldjY4YjZrV01CQndKYzYrNVlEcy94d1FjcFdGMHNpWm1EekpJOVE1Mml2TURqZXl6eTNNSFdjcXMzcStjZ2xrQ0cyNzA2aVI2KzJsUUx4eXJLT1hLMXlVcThkc0x1UjdNQ1J3TUM5WXVjVC9DaUJOOUo0ZnNNNzZ0T0QxYS80RHNnVzlHVm9EUW9JQUFBQUFTVVZPUks1Q1lJST0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xIiwiRklET18yXzFfUFJFIl0sImV4dGVuc2lvbnMiOlsiY3JlZEJsb2IiLCJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwibGFyZ2VCbG9iS2V5IiwibWluUGluTGVuZ3RoIl0sImFhZ3VpZCI6ImU0MWI0MmEzNjBhYzRhZmI4NzU3YTk4ZjJkN2Y2YzlmIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6dHJ1ZSwidXAiOnRydWUsInV2Ijp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibm9NY0dhUGVybWlzc2lvbnNXaXRoQ2xpZW50UGluIjpmYWxzZSwibGFyZ2VCbG9icyI6dHJ1ZSwiYmlvRW5yb2xsIjp0cnVlLCJ1c2VyVmVyaWZpY2F0aW9uTWdtdFByZXZpZXciOnRydWUsInV2QmlvRW5yb2xsIjp0cnVlLCJhdXRobnJDZmciOnRydWUsInV2QWNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjp0cnVlLCJhbHdheXNVdiI6ZmFsc2V9LCJtYXhNc2dTaXplIjoyMDQ4LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjEwLCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjk2LCJ0cmFuc3BvcnRzIjpbInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wMi0yNSJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDItMjUifSx7ImFhZ3VpZCI6ImM4OWU2YTM4LTZjMDAtNTQyNi01YWE1LWM5Y2JmNDhmMDM4MiIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiYzg5ZTZhMzgtNmMwMC01NDI2LTVhYTUtYzljYmY0OGYwMzgyIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkFDUyBGSURPIEF1dGhlbnRpY2F0b3IgTkZDIn0sImRlc2NyaXB0aW9uIjoiQUNTIEZJRE8gQXV0aGVudGljYXRvciBORkMiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MTAwMDAsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfSx7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNmekNDQWlXZ0F3SUJBZ0lGRUlaQUIzTXdDZ1lJS29aSXpqMEVBd0l3ZFRFTE1Ba0dBMVVFQmhNQ1NFc3hFakFRQmdOVkJBZ01DVWh2Ym1jZ1MyOXVaekVTTUJBR0ExVUVCd3dKU0c5dVp5QkxiMjVuTVNNd0lRWURWUVFLREJwQlpIWmhibU5sWkNCRFlYSmtJRk41YzNSbGJYTWdUSFJrTGpFWk1CY0dBMVVFQXd3UVFVTlRJRVpKUkU4Z1VtOXZkQ0JEUVRBZUZ3MHlOREV3TURNd05qUTJNelphRncwek5ERXdNRE13TmpRMk16WmFNSUdDTVFzd0NRWURWUVFHRXdKSVN6RWpNQ0VHQTFVRUNnd2FRV1IyWVc1alpXUWdRMkZ5WkNCVGVYTjBaVzF6SUV4MFpDNHhJakFnQmdOVkJBc01HVUYxZEdobGJuUnBZMkYwYjNJZ1FYUjBaWE4wWVhScGIyNHhLakFvQmdOVkJBTU1JVUZEVXlCQlJrUXdNeUJCZEhSbGMzUmhkR2x2YmlCRFpYSjBhV1pwWTJGMFpUQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJHc2VOYXlJT1Y0bWZxVDNRU29MNHhXQ2FHTGNpS0Ewb0FjaWloMXVIalQ2b1dDTTd4L0FRY0hqYkJoZEduZTUySnFpOTlZZTNhcWtxK0xrZHZQL00vV2pnWk13Z1pBd0NRWURWUjBUQkFJd0FEQUxCZ05WSFE4RUJBTUNCc0F3RXdZTEt3WUJCQUdDNVJ3Q0FRRUVCQU1DQkRBd0lRWUxLd1lCQkFHQzVSd0JBUVFFRWdRUXlKNXFPR3dBVkNaYXBjbkw5SThEZ2pBZEJnTlZIUTRFRmdRVUc2ekI0U1g5UkZYMFN2TnlBSHpUdktaaEdTVXdId1lEVlIwakJCZ3dGb0FVNTBHcTZYVXJlTEluZTFZM3pTQ3lCNjI5ajZBd0NnWUlLb1pJemowRUF3SURTQUF3UlFJaEFJbTc4R0M3eGwwVkl2UWpoN0U0K0FJSDBQdzQyNG9kdVVVZ2R3V29uRzQwQWlBeDFYNlhtWEJyNWIxam1wQ1ljdkxNZmRIOU9iUDNFa2xJWFU5RkhnTG9zQT09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQURBQUFBQXdDQVlBQUFCWEF2bUhBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNRQUFBN0VBWlVyRGhzQUFBaWNTVVJCVkdoRDFaalBpNVZWR01mOUM5b2I2REpvSVFpMWlEQndJNVFnRVVFbHRCSjBZU0FHRXVSQ0ZCTXhJa2xDYXlGSVFpYUtCWlVvbFk3UU5KTTYzbkdhY2E2ajQwdzAwNHpCTUJPNkxFN244OXo3UGZPODV6M3Z0ZHE1K0hMdWZYK2M4L2srNXpuUE9mZXUrUHV2djhMakxEUFFHaDRPN2ZIeDBHb05wODlWdGEyZG5KeXNhWHA2S21sdWJqNjEwdno4WEZoWVdDaHFjV25SdExTNEZCNCtmQmdlUEh4ZzRyTVhqTDZWRGg0ODJEWFFCVTlHWWp2ZWJpYzF3UXU0QkErNFBzL096amJDbXdGbjRyOG9HUkIwSjlvZEpmaDJIWDRxZ2lJUDd3VTgwS1hvZTNDRGZ3UjRIbldKbWVwcG9LTjJEWDU2cXB3eXRBRFB6M1VpM3dzZTZQOEw3bFV4a0NzSFIzblVCYzFucVFUdTRiMkpFdFMva1FKUU54RFRoYlFwd1FOSDYrSFZDcHJ2dE14Q0RrK2VMeTVWb1h1WktNMkFuaThhYU1wM2c0NXBZMjBHajRCVnZ1ZlI5OUdXUEVoSnZWTEg5ME13c2hub0hYa0JlM2d2RDU3RE0xZ3ZhTlFMSEZYaEYyMk1aQ0NIUm9CNkFWbUN6OU5Gc3RMWU5WQ0N5YStWcE9jRVRuOStqRVlET1RpTDk5K0NsOUlHNVhDS2VLL0lWL3JvOXV2SEtocFFtUVN5R0hHWDU3TS8vQkJtUHZzczNOdTFLOXpidkRuY1diZXVwcnN2dkpBMDhlSkxZV2IzN3ZEN29VTmg0Y0tGOE9mTVRCRzZCTy9CcFpvQmJWQytYR3B4b3RscjE4TDAvdjBHTXZyRUUyRjB4WW93K3VTVEJqcjY4c3RoZFB2MnBGLzJ2eGR1ZmZ4eDVSb2FmKzY1TVBiMDA1MTNvOXFyVjV2NSs2ZE9tU0VQTGZDU0FRcEh4UURSVlZ1SmVFeVZYOCtlVGRDMGQvYnNDYTFQUDdValNIOS92N1dxWkQ0SURESTNUd3BPbStpUDY5cmxoejcvUEF6djNkc3hId09Cb2VrMzN3ejN2LzIyWXFBRVQxc3g0Tk9HQnhEZ3Q1OS9QdHg5NC9Vdzhja3hneHc4Y3NRaU9mTHNNNVk2OTYvMGRRYUxVZk1wNE1VWVhLZk43NUhYakFVRGhxNisrcW9GNnRhcVZXRW16cUNnbGJxMEJJVjNrZ0dCMHdyZThqb0s2TlkzMzRTYm16Wlp4N2ZYckFsM1B2Z2dUQXhkdDNzTVRLZWErZzVVM1lTWERPbTcza1ZBRHJkYVlYanJWaHVQbEpzZkdyTHJZaE5uTXBCSEgwQmV1dlhkZCtIV0s2L1kxSkxuWXlkT2RFK3VMWHVlVGoySTVBRVZkVjN6OTJoejBhYzBFdE56WlAxNk13SVQxeGdYa1lxVkdaQXd3SU8yNkNJNEVTRGZCd1lIREp6N3lrOEdGQWl0cE84ZU5yL3Z4WGhOK1E3VHpaZ0pzSXdkT0pCbUFCVU5MSTZOcFFVNy91Njd0a2hKRmJzWEIxR05KMjJtMzNrbmxVaEtvOG9pZmQ2UHBsVmFLWjFMc1Y4QnMwaC9qUUhTUGNiTXdlbGZZbXlxbWkzeWp6Nnk3MlJMeFFBUDhxS1Z1RmdSYnA0K0hRWmoxTWx4cmlmNEtFQlpDM1RveFRVQVMvY0lDQXNlVTdWN1VVb1J3VnNiS3lCc0FyYXNpUDJ3UnRpdktnWjRvYjFsaXowdzFOZG51YzUxSDNYZ2lUQ1IxOEEzTm00TXd3Nks2cVRQcmJWck8vZGluM2F0V3lyVFBSYXFyc1ZuVkJDOFpDQ1ppTThQdnZXV1Bac01BTThtUlVmdGt5Y3Q4bHdUdkRlQkFhYWZ0VUZFV0JkMFp1YTdjR2prcWFmUy9zQzBtekVIYThVZ2lwbkdDQ0pkYytDOHRUMG9tdWZkaWdHbWx0eFhKOHZnbmRPa0ZxRDAyOHh2ZHZ4bVVaVlNDbURnRjd0NVQ1OFVBOTJuNWpNdTRoN1BhcTE1Q1o2cVE2QW12emhsNzhOWk1VQjBXT1UycUl1NG9wNkxSY211bWRJalV6TFFQVXFqaFFqaG4yZTlFYlRmdi9xcUNDN3hIWGhhTW9SM0wxMjZsQm1JRjRrUUQvbDBVZDduOEUzZ0V0T01BZnEyV2NSQS9Nd0IwSzhGaVVVc2VPVEJVL1NqT0JIdy92bno1NWNOQUV3bjE0OGVzNVF3eUliSTg3eEZub0V4d1RxSXhtMm5ka0NhQWFCekFjYVI1T2RZcGxrcjZrc3BwR2o3Vm1KalphektER0NBbW56ajdiYzdHMVVEdkVUZFoxQXFEUDltY0ZEajJGRXhFTUZrNEkrNDRFZ1RpVE1XMXltRjdPNTZoN3dtMmtBekEvVHI0WlUrbUw5OHVXL1pBR2xpcFRGT0RTK1hEUENjUGsrODlscG4wUGo4NUpVcnRoR2x0SENwUllVQnZyUXZrRElZU0gxRkVWVWY4YW1wWlFPY3ZSaGpmTU1HUzU5S0ZRS1lTc0xnYk51UG1nRitqSGdZTDlLaWFYM29wTmwwRHdNR25rVWVlQlk4cy9yOXVYUDJITE5iTVFBWTJ6K2RUWjg1VXdIMjBaZjRKWmFpSGpXeWNxWEJFNWtKTnNLNGlIVVBhQUJKRVdZbHYwY3FBc1c3SGh4WjJzUnhNQ0I0bmlOMWF3YlE1TFp0MWpHYmp3Y3VpZlZDSkFDelRyc0FXcWg4NTU2a1V5elA4QjBZcVFZZlUxTW5ZVXViYVB6aXhZc0d6cGlWR2NqQnlFOWVwRWFUMy9sOWhHbUpJcUFLazZ2cFNLQ1dkYUJmYkRrNGxZd0ZDL3hQOGFjczBBU0JkamkyeFJsQVhLTmUyM0VoVGpFTHZQSjcxWWthWDRPT2NFQXpRNUxnVTVYaHp3T25lL3YycGZFd0lIRFNpN0xKYndObVRTWXFCank0TjBKazJaMHQxMlBIOXVPYjM2c040Qkx3dElMMkVhZjFhY0laaUJTWjJMblQ5aE5McWFOSDdaREl1QnlqbFc0R0gxTU5lTnJHRk1wRkJHOGUvckR6NjZpNzhERERiMWFPeUI2ZVp5MXQzRkZZQWpwdjBkVXZ6MWtCRURUQ1dOL1hYMXZKeEFEUUV2QTFBNzJNS0YwWWxLbThmdWg5R3l6dG9sRnNoS3daL1pZbUpkaXd2RGhKRW1sRTFPMkUybjJmdmtpWC91UEhEVnJnZ09hUkx4b29RYXROY291VnlLbGpIUXVJbXVWckJKUElhLzlkNHRtck8zYUVIdzhmdGx3SG1DckREaXZBbE8veEI0eXVTUno1SDVsQ1RmQmVXcXd5cENnUnZaTElaU0RSd09DZ2llY1ZERnBKc0Y2QTYzTXlBS0RhR25oVUwzQmE1VGpTUWtWNXJudlozL2tPMWd1NFBGMlE0QWxFWlFZRW5rZWVLdFJVNC9OS2cvSXFreDhKSlAwelY0SHVibEFHM2dNZVlZQzJaa0RnZ3MraFU0WHBpdStvWk1BYkViUmFEOTZCWDk2Y2VzRXI4dnBjTWZBb2VFbXdBdmMxWHZLblNLODYrSExPRzNnQjN2NlA2Z0tyeFFUWGl3YnlEVXFwb3FqTGdJZEhBS3JOMVRQZkl6U1JMMVdhRXJ4YUZuL05nQWYzS20xS09UemZjM0NVNTd1aVRpdlFrcG9pVHl0VkRKVEFnYlBJWndZRUQyQVR1SUNiQkpUYVhMM2d1VmN6a0lNcmJaQUh6K0h6MWdzNHRRYXF5RWNnKy9jNVN4c3RUcjlJMVE0TURDWm9yMFlEQXM5ekhsV2kzM094bHZNZUtMVWwrZWlUNTUyMm1qcFNNc0NIeDFNSHd6OGNlSHk3RWhSejVRQUFBQUJKUlU1RXJrSmdnZz09IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMSIsIkZJRE9fMl8xX1BSRSJdLCJleHRlbnNpb25zIjpbImNyZWRCbG9iIiwiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsIm1pblBpbkxlbmd0aCJdLCJhYWd1aWQiOiJjODllNmEzODZjMDA1NDI2NWFhNWM5Y2JmNDhmMDM4MiIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjp0cnVlfSwibWF4TXNnU2l6ZSI6MjA0OCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0Ijo2LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjEwNCwidHJhbnNwb3J0cyI6WyJ1c2IiLCJuZmMiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fV0sImZvcmNlUElOQ2hhbmdlIjpmYWxzZSwibWluUElOTGVuZ3RoIjo0LCJmaXJtd2FyZVZlcnNpb24iOjEwMDAwLCJtYXhDcmVkQmxvYkxlbmd0aCI6NjQsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjozfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMTAtMTciLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MTAwMDAsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiQUNTIEZJRE8gQXV0aGVudGljYXRvciBORkMiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI0MTAxNzAwMiIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTEwLTE3IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEwMDAwfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTA1LTEzIn0seyJhYWd1aWQiOiJlYjdlZjc0OC1jYmUwLTRiNDAtYjhmNi0wN2JkMmQ1OTJkMzUiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6ImViN2VmNzQ4LWNiZTAtNGI0MC1iOGY2LTA3YmQyZDU5MmQzNSIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IDUgQ0NOIFNlcmllcyB3aXRoIE5GQyAoQ29uc3VtZXIgUHJvZmlsZSkifSwiZGVzY3JpcHRpb24iOiJZdWJpS2V5IDUgQ0NOIFNlcmllcyB3aXRoIE5GQyAoQ29uc3VtZXIgUHJvZmlsZSkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NzI4LCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6M30seyJtYWpvciI6MSwibWlub3IiOjB9LHsibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMzg0cjFfZWNkc2Ffc2hhMzg0X3JhdyIsImVkMjU1MTlfZWRkc2Ffc2hhNTEyX3JhdyIsInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIiwic21hcnQtY2FyZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRFNEQ0NBakNnQXdJQkFnSVVEcUVSdys0Um5HU2dneGdVZXdKRkVQRFJaM1l3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRREk3WG5IK1p2RHdNQ1FVOE04WmVWNXFzY3VibHZWWWFhUnQzWWJheG45Z29kTHg1c3dIMGxYcmRnamg1aDdGcFZnQ2dZWVg3RTRibDF2YnpVTGVtck1XVDhOM1dNR1VlOFFBSmJCZWlvVjdXL0UraFRaUC8wU0tKVmEzZXdLQm82VUxlTW5mUVpEclZPUkFrOHdUTHEydjVMbGo1dk1qN0p0T290S2E5SjduSFM4a0xtelhYU2FqMFN3RVBoNU9BWlVUTlY0enMxYnZvVEFRUVdyTDQvSjlRdUt0NldDRkU1blVOaVJRY0ViVkY4bWxxSzJieDJ6Nm9rVmx0eURWTEN4WWJwVVRFTHZZMXVzUjNEVEdQVW9JQ2xPbTRjcnB3bkRSTFZIdmpZZVBHQkIvL3BFeXp4QS9nY1NjeGp3YUgxWlV3OWJuU2JIeXVyS3FiVGExS3ZqQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJUcXQwS1FuZ3g3WkhyYlZId0R1bnhPbjlpaFlUQWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQXFRYUNXTXhUR3FWVlg3U2s3a2tKbVV1ZVRTWUt1VTYrS0JCU2d3SVJubHc5SzdIZTFJcHhaMGhkd3BQTmlrS2ptY3lGZ0ZQemhJbXdISmd4eHVUOTBQdzN2WU9kY0pKTmt0RGczNVBYT2Z6U24xNWNGQXgxUk8wbVBUbUliOGRYaUVXT3B6b1h2ZHdYRE00MVphQ0RZTVQ3dzRJUXRNeXZFN3hVQlpxMmJqdEFucS9ORFVBN2JlNEg4SDNpcEMrLytOS2xVcmNVaCtqNDhLNjdXSTB1MW02RmVRdWVCQTduMDZqODI1cnFEcXNhTHM5VGI3S0FIQXc4UG1yV2FOUEcya2pLZXJ4UEVmZWNpdmxGYXdwMlJXWnZ4clZ0bjNUVjJTQnh5Q0pDa1hzTkQwNWRDRXJWSFNKSXMrQmR0VFZOWTlBd3R5UG1ueWIwdjRtU1R6dldkdz09IiwiTUlJRFBqQ0NBaWFnQXdJQkFnSVVYemVpRURKRU9UdDE0RjVuMG82WmYvYkJ3aVV3RFFZSktvWklodmNOQVFFTkJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNWjYvVHhNOHJJVCtFYW9Qdkc4MW9udE1Pby8ybVEyUkJ3SkhTMFFaY3hWYU5YdmwxMkxVaEJaNUxtaUJTY0laZDFSbngxb2Q1ODVoKy9kaEs3aEVtN0pBQUxrS0t0czFmTzUzS0dOTFp1ano1aDN3R25jcjRoeUtGMEc3NGIvVTNLOWhFNW1HTkQ2enFZY2hDUkFIZnJZTVlSREY0WUwwWDRENW5HZHh2cHBBeTZua0VtdFdtTW53TzNpMFRBdWNzcmJFNDg1SHZHTTRyMFZwZ1ZkSnB2Z1FqaVRKQ1RJcStEMzVod3RUOFFESXYrbkd2cGN5aTV3Y0lmQ2t6eUNpbUp1a2hZeTZLb3FOTUtRRWRwTmlTT3ZXeURNVE10MWJ3Q3ZFenB3OTF1K21zVXQ0cmowZWZuTzlzMFpPd2R3TVJEbkg0eGdVbDVaTHdyclBrZkMxLzBDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01COEdBMVVkSXdRWU1CYUFGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFNd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkRRVUFBNElCQVFDM0lXL3NnQjlwWjhhcEpOanh1R29YK0ZrSUxrczB3TU5yZFhML2NvVXZzcmh6c3ZsNm1lUE1yYkdKQnlKMVhucXVCNXNnY1JFTkZ4ZFFGbWEzbWlvOFVwZjFvd00xWnJlWHJKMG1BREcyQnBscWJKbnhpeVlhK1IxMXJlSUZUV2VJaE1OY1pLc0RackZBeVB1RmpDV1NRdkptTldlOW1GUllGZ05oWEpLa1hJYjVIMVhnRURsd2llZFlSTTdWb2xCTmxsZDZwUkZLbFg4dXN0Nk9UTU9lQURsMnhORjBtMUxUaFNkZXVYdkR5QzFnOStJTGZ6M1M2T0lZZ2MzaXJvUmNGRDM1NGc3cktmdTY3cUZBdzlnQzR5aTB4QlRQclk5NXJoNC9IcWFVWUNBL0w4bGRSazZIN1hrMzVEK1dWcG1xMlNoL3hUNUhpRnVoZjR3SmIwYksiLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVIzOG1xMjZTZjJzelZWMkJkRzZXRU43a3VXVXdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFSWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFOWTBXYjlvUG9Sb0tvUXlXUGFKcHoxMXZyV1RnNnpUdG1OajJWb0tSbnl2S0dScXB6YjgzdzVsNllBOTZVWWtZQkRRUDBpbE8yRFBlNndXcVZSNXpEZlJ6ZGNIOGJoK0w3ZEdHdmFlNmhSVFpoa0ZrQ3BYRHM0SGNja25yRGY4RkNsSjdIZTM5SmY0Mi9HMVFtMnp6OVdXbXJQWHRnaUsveDA1R2pzUWZHdURHMXpmNVFUVVVpZThsd3ltSzNUZmRPdk5lZUpBQVBlMnBuN0l0ZlJiK3JWck5XaUR6bFJuMnZObloyd1BvNHdIL1dKNmRoWFpHK3JNV1QrYTZCb2NnMVVmSXc2a2R1bkc0YlRwWnpzdmFjRll5UjBtcGYrRGVPbnBTV0FteXdKV0h2VGxmMllYeEZ5ZVhjVEFDZFFsY01OR0oyVmhaUTQ4eHRQNS9SQlAvOGtDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNoeTQyb2tpcWNUUzFpcWEvSFJXamtCbjRIL01COEdBMVVkSXdRWU1CYUFGT3EzUXBDZURIdGtldHRVZkFPNmZFNmYyS0ZoTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBbitSSElQYnRNRUROZFQxZzhIL1JpdEFrVWRMZ0F0MXRXR1dubGo5a25idjQvNEdsWDdDOXA0NWVmUE85L2FaTDZPVjFYUktCaTZLbXRCVzVLN251WUVuTXgvNUJxQlNiTFQ3cmhkdUM0OVRCZU1iOVBIZFhzVGxTVk5ZZWZyMWRHaWRyNGoweFZCUUxiMXJrbkRBYmRXRHpLZnZuYXlLTzhGcndlN0h4ODQzTUcvckorYzBYcnVVdmJmVlRDSExpSVdoTTdvTkRoTDh4b2I2eFVvOUtMS2NTTCtJdFlzTzMvOVdiOFE5R2pzcUw0RlhzRGNHMVNhWWg3S3BmdU1tT2l4cXpKWk8ybklpY1BZUmcxSTJTdWlVZllPNzB0bWRIY2JsK2tTUW1TWXQ3cnE0dmlJTGcyR3gzajlySVR1V1RqYmFVYVNTUXhnT21NU0h1eXpNQUMiLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVRuYmJHSVIyTkh2enFJS0ZBZVF3RzFYQmlzMHdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFRWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPc1hqM2swNEJhbjRUWWR0WktxRC9PUEp4eUR5YVBtQ0JVRlVpYVpJZ1R0ZVpuajNYMjVEaGdwWlpYc0M0RDB5ZEljcmxBNndOVUluT1JML0w5ekJiVEVJTUFWTUdvNmc3VUtBbWIyTUY2QUhibmhZSmQ5ZWlrdXBWTldTaEhOWU5jNEdCZE8xWU42QWZVcXZKaEhiZTNWNFNOTVBtQlJFS0pQVno3VGh3Z21nZ1RlOFdzMkswL3dzcXYyd1NFN3BiQ0JzVVpoSVg1MWJaTTNwcUR3SlBUbVJGRXZ0MC82dEc1ZU84RjNqMTRPWHFmRWhtam4xVnZ4S0RZUU9MWkF4Q3d3Z0MwUDRDZGZXdjN5OFBTUjhJMzU0aE8xWStHek5qdklxWDM4TktMeXd1SVlIRmVyT3hObHhFTUJ2RmhZQnVSdVlBa2tnVWFQcU42VUJoc0lMcnNDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNDb1JIaGl5Tm5iblhSV0lMNlpCWG9CWDlZVE1COEdBMVVkSXdRWU1CYUFGQ0FvVUNFYnBGcGI2RlBMblozRjVQeHNMM29mTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFDUUZhZkpJMS81V2c5Q0VFaW1FMVJQNTRSZ1F3VE5UT09Rc0xBQ1RlK3JJdGxGUXpDOVpEaHJWODI4eVg3anp5K0FBc3AzaXpLN1QxdGgyZGw3bSt0dTBzdzJQYS9vbGMwMm50NlB5SXczNDhnYUh6aEkxKzBLRTQ1cXh2RkRlTDJsTXhiUGZDWXZ5RUVhWXpqaVFFTFU1OTUxcFhHV3lLTWEvNGZMdE8rWktPWGhNdVZlcTRyWERQSTU0VzZKSE9pQWFpS2Rpdys1ZTNjMmt0L2pGSVF0TTZ2TVhnOUxORnpkakVUTnQyMFZYOVFldlJwRlpmdWNNRzl3Q2FRRG9GbFB6cFRNSktoUGV2L2ltSm1aWWhLZnIwbExjZW10cWpJeExBb3FaZE9ZZkhCZzYrdkFjZFBJL2lhdUdwVUF2N1grVUtObUR3aloyQmFINHNMd2hCMm0iLCJNSUlEUnpDQ0FqR2dBd0lCQWdJVWV4OW5UOXZ3Wk5YUzQ4M0xkaVlHZncyU2pTb3dDd1lKS29aSWh2Y05BUUVMTUM0eExEQXFCZ05WQkFNTUkxbDFZbWxqYnlCQmRIUmxjM1JoZEdsdmJpQkpiblJsY20xbFpHbGhkR1VnUWlBeE1DQVhEVEkxTURnd01UQXdNREF3TUZvWUR6azVPVGt4TWpNeE1qTTFPVFU1V2pBbk1TVXdJd1lEVlFRRERCeFpkV0pwWTI4Z1JrbEVUeUJCZEhSbGMzUmhkR2x2YmlCQ01pQXhNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXUxTWV2bnk5ZHlPOVpVQzM5U29NaExjUi9EWHJ0Ri9jaU0xMnRjaXkyRVhBWjZNa3JpdlZ0Q2ZFVk05WDZJU1RFbkJQNnVTWVlvdjZwcHY2TzZKaDJOSG1ZbTR3K0puUzRWbkNQVTdtSEFNZlZJMk1HVFRNVk9ldzB4VXNHN3NJU0lrSURVQm11azhZSzljNXppYzkrdkZRR0xJa3NkWE81aVZGSWdORzUzY0dYRDRaTFpvQVBpdTBQRW96eEFxWUlhSTRneEtoT0EzUzgvVzhtSVdzdTZvZnlqNEd2a0ZHNlo3a3lGMzEwN1A3bXdGSExySTNFTmFQV01PRmNUYUdhMGR3Ky92VlJ3alJjRVpCVnN1dVQvODdja1NzMGE1cGt0M3ZaQmxhWWVUOHB6U3JlVjdtb3djSU05MEwyaWFBVGxQMG54bWFFNm5PeVRib2pGVmwyd0lEQVFBQm8yWXdaREFkQmdOVkhRNEVGZ1FVU1hFaDNzYTNidER1cm00TU0vQzdTMWxSdXVZd0h3WURWUjBqQkJnd0ZvQVU2cmRDa0o0TWUyUjYyMVI4QTdwOFRwL1lvV0V3RWdZRFZSMFRBUUgvQkFnd0JnRUIvd0lCQURBT0JnTlZIUThCQWY4RUJBTUNBWVl3Q3dZSktvWklodmNOQVFFTEE0SUJBUUI1R2MzaGFmdHA3aEtzRVpzbytpL1o1blJ1cWRtekcyV0NsVW9SVXFiYVB5Z2xuSkRqS1Iva2ZnT2w2aWJiRi96dGhtM0ttWFE3SGNESVAyeE1kRzdVMkwyaW1iSlFIcVBmL2gySHFvamI0clpndWUrNlc0a3RTUjVlbFI5TDFyWXFFL1NHWU00aUVLb1ZRU3Y3UlQxcnhJZVdpS3N3L1Z4eGkvUU9uc3gzRjd4ODBDQ1lnQjRFM3lReDhWVFc0NDBoVEV3VEExZU1IT2l4MzJ0UHR5eUhJYThQVlZJZlZwSFFKQmFNVnZ2NTA4VUVqd2tiVTJybmpmem9TVE5TOUE1alVROG1CU3ZlOTVyakIwZG85OEVVK0R4ZEJxWDIrSDZpNXdsSUNGZ3poZHpjc25lOWhHS1Q2bHpUWDRjSWRKc3JZMit4bGVLMEZGUXk2bEdFVkxFZSIsIk1JSURTRENDQWpDZ0F3SUJBZ0lVVWNtTVh6UklGT2dHVEswVGIzZ0V1Wllaa0JJd0RRWUpLb1pJaHZjTkFRRUxCUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JCSURFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURtNTU1YldZOVdXK3RPWTBySVdIbGRoK2FOYW5vQ1pDRmg3R2szWVpyUW1QVXcwaGtTRzZxWUhRdFArZlp5UzMzVkVydmcrQlFxbm11bWdOaGZ4RnJrd0VaRUxlaWRCY0M4QzRBZzRucXFpUFdwenN2STE3TmN4WWxJbkxOTEZjWlkvK2dPaU42Wk9UaWhPNS92QlpNYmo5cmlhQWNxbGlZbU5HSlBnVGNNR2FFQXlNekVNTnkybm02RXArcGpQNWFGNmdpMjF0L1VRRnN1SjFqMlJqL3luTS9TZFJ0K2VjYWw1T1lvdHhIa0ZiTDl2dnYyQTJPdjVJVFpDbHc0Yk9TOW5weXBRaW1PWjVRQVl5dG1ZYVFwV2wvcE1ZejZ6U2o4UnFrVkRORUpHcU5mVEtBMml2TFl3WDZsU3R0TVBhcGcwSjg0bDlYMHZvVk4vRnBTNFZDVkFnTUJBQUdqWmpCa01CMEdBMVVkRGdRV0JCUWdLRkFoRzZSYVcraFR5NTJkeGVUOGJDOTZIekFmQmdOVkhTTUVHREFXZ0JUUzd1OWFJbzA2YlZ3amx6M3loZFVtOFNWN2tqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQTRHQTFVZER3RUIvd1FFQXdJQmhqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFZTXpnTHJKTElyME9vdlFuQVpyUklHdWFiaUhTVUtTbWJMUldwUmtXZUF0c0NoREVIcFhjSi9iZ0ROS1lXb0hxUTh4UlVqQjRDeWVwWWV2YzNZbHJHOG83ekh4cGZWY2FvTDVTZXVKa3pIeEtuNGJUYVNwOStNdndhbW5wNjRrWk1pTmJGTGtuZlA5a1lLb1JIa01XaGVSSjFVc1AxejRTY21rQ2VJTGZzTXM2dnFvdnFqV0NsRnNKcEJjc2x1WUhXRjdiQkoxbjRSd2crQVRFb3BZNElnR3Y2WnZ3YytBOXIrQVQyaHFwb1NrWW9BbCtBTll3Z3NsT2Y5c0plMFYrVEE5WVkvVWxhQm1QUFRkMC8vcjl3dmNlUFdaa1BqS29BQy96VU5oZkRiaDRMVjhHSHMzbHlYMlhvbUwvTE5jOEpZenlJYURFaEdRdmVvUGhoL3RyMWc9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwiaWNvbkRhcmsiOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJwcm92aWRlckxvZ29MaWdodCI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsInByb3ZpZGVyTG9nb0RhcmsiOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xX1BSRSIsIkZJRE9fMl8xIiwiRklET18yXzIiLCJGSURPXzJfMyJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJsYXJnZUJsb2JLZXkiLCJjcmVkQmxvYiIsIm1pblBpbkxlbmd0aCIsImhtYWMtc2VjcmV0LW1jIiwidGhpcmRQYXJ0eVBheW1lbnQiLCJwcmV2aWV3U2lnbiJdLCJhYWd1aWQiOiJlYjdlZjc0OGNiZTA0YjQwYjhmNjA3YmQyZDU5MmQzNSIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImxhcmdlQmxvYnMiOnRydWUsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsInBlckNyZWRNZ210Uk8iOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjp0cnVlLCJhbHdheXNVdiI6ZmFsc2V9LCJtYXhNc2dTaXplIjoxNTM2LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjgsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4LCJ0cmFuc3BvcnRzIjpbIm5mYyIsInVzYiIsInNtYXJ0LWNhcmQiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotOH0seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTM1fV0sIm1heFNlcmlhbGl6ZWRMYXJnZUJsb2JBcnJheSI6NDA5NiwiZm9yY2VQSU5DaGFuZ2UiOmZhbHNlLCJtaW5QSU5MZW5ndGgiOjQsImZpcm13YXJlVmVyc2lvbiI6MzI5NzI4LCJtYXhDcmVkQmxvYkxlbmd0aCI6MzIsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjoxLCJyZW1haW5pbmdEaXNjb3ZlcmFibGVDcmVkZW50aWFscyI6MTAwLCJsb25nVG91Y2hGb3JSZXNldCI6ZmFsc2UsImVuY0lkZW50aWZpZXIiOiIiLCJ0cmFuc3BvcnRzRm9yUmVzZXQiOlsiVVNCIiwiTkZDIiwic21hcnQtY2FyZCJdLCJwaW5Db21wbGV4aXR5UG9saWN5IjpmYWxzZSwibWF4UElOTGVuZ3RoIjo2MywiZW5jQ3JlZFN0b3JlU3RhdGUiOiIiLCJhdXRoZW50aWNhdG9yQ29uZmlnQ29tbWFuZHMiOlsyLDNdfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjYtMDQtMjUiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NzI4LCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ill1YmlLZXkgNSBDQ04gU2VyaWVzIHdpdGggTkZDIChDb25zdW1lciBQcm9maWxlKSIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjYwNDI1MDE1IiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25Qcm9maWxlcyI6WyJjb25zdW1lciJdLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI2LTA0LTI1IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTcyOH1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNi0wNS0wMSJ9LHsiYWFndWlkIjoiYTAyMTY3YjktYWU3MS00YWM3LTlhMDctMDY0MzJlYmI2ZjFjIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiJhMDIxNjdiOS1hZTcxLTRhYzctOWEwNy0wNjQzMmViYjZmMWMiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiWXViaUtleSA1IFNlcmllcyB3aXRoIExpZ2h0bmluZyJ9LCJkZXNjcmlwdGlvbiI6Ill1YmlLZXkgNSBTZXJpZXMgd2l0aCBMaWdodG5pbmciLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDczLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX0seyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Iiwic2VjcDM4NHIxX2VjZHNhX3NoYTM4NF9yYXciLCJlZDI1NTE5X2VkZHNhX3NoYTUxMl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlESGpDQ0FnYWdBd0lCQWdJRUcwQlQ5ekFOQmdrcWhraUc5dzBCQVFzRkFEQXVNU3d3S2dZRFZRUURFeU5aZFdKcFkyOGdWVEpHSUZKdmIzUWdRMEVnVTJWeWFXRnNJRFExTnpJd01EWXpNVEFnRncweE5EQTRNREV3TURBd01EQmFHQTh5TURVd01Ea3dOREF3TURBd01Gb3dMakVzTUNvR0ExVUVBeE1qV1hWaWFXTnZJRlV5UmlCU2IyOTBJRU5CSUZObGNtbGhiQ0EwTlRjeU1EQTJNekV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRQy9qd1l1aEJWbHFhaVlXRU1zcldGaXNnSitQdE05MWVTcnBJNFRLN1U1M213Q0lhd1NESHk4dlVtazVOMktBajlhYnZUOU5QNVNNUzFoUWkzdXN4b1lHb25YUWdmTzZaWHlVQTlhK0tBa3FkRm5Cbmx5dWdTZUNPZXA4RWRaRmZzYVJGdE1qa3d6NUdjejJQeTR2SVl2Q2RNSFB0d2F6MGJWdXpuZXVlSUV6NlRuUWpFNjNSZHQyemJ3bmVid1RHNVp5YmVXU3dienkrQkozNFpIY1VoUEFZODl5SlFYdUUwSXpNWkZjRUJiUE5SYldFQ1JLZ2pxLy9xVDlubURPRlZsU1JDdDJ3aXFQU3psdXduK3Yrc3VRRUJzVWpUR01FZDI1dEtYWFRrTlcyMXdJV2J4ZVN5VW9UWHdMdkdTNnhsd1FTZ05wazJxWFl3ZjhpWGc3VldaQWdNQkFBR2pRakJBTUIwR0ExVWREZ1FXQkJRZ0l2ejBiTkdKaGpncFRva3N5S3BQOXh2OW9EQVBCZ05WSFJNRUNEQUdBUUgvQWdFQU1BNEdBMVVkRHdFQi93UUVBd0lCQmpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQWp2anVPTURTYStKWEZDTHlCS3N5Y1h0QlZac0o0VWUzTGJhRXNQWTRNWU4vaElRNVpNNXA3RWpmY25NRzRDdFlrTnNmTkhjMEFoQkxkcTQ1cm5UODdxLzZPM3ZVRXROTWFmYmhVNmt0aFg3WSs5WEZOOU5wbVl4citla1ZZNXhPeGk4aDlKRElnb01QNFZCMXVTMGF1bkwxSUdxck5vb0w5bW1Gbkwya0xWVmVlNi9WUjZDNStLU1RDTUNXcHBNdUpJWklJMnY5bzRka29aOFk3UVJqUWxMZll6ZDNxR3RLYnc3eGFGMVVzRy81eFViL0J0d2IyWDJnNElucGlCL3l0LzNDcFFYcGlXWC9LNG1CdlVLaUduMDVac3FlWTFneDRnMHhMQnFjVTlwc215UHpLK1ZzZ3cyamVSUTVKbEtEeXFFMGhlYmZDMXR2RnUwQ0NySkZjdz09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWZDQVlBQUFDR1ZzK01BQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBSFlZQUFCMkdBVjJpRTRFQUFBYk5TVVJCVkZoSHBWZDdUTlYxRkQvM2Q1OXdlUVNJZ1M5QVFBWGNGTEFRWmk5ZnBlVnoxdFkvV1RacjVXeHBjN1c1a25MYTVqSTNaODVzclMybk0yc2p0V3daUzdJVUg0SDR4Q25FUXg0REFaRjc0Vjd1czg4NXY5L2xJbkJ2VkovQjRQdjludS81bnUvNW52TTU1NmZ6QS9RdjBIYi9JclgzVkZLUG80NWNubTRpblVJV1l3TEZSbVpRVXV3akZHL04xaVJIaDFFWjBOUlZSdWRxdDFCZCsyblNLeVMvT2h5czArbGszZS8za1E5cXZENFpVdGE0VlZTVXVZMGVpcHlpVGhBZm9jb09SVmdEdXV3M3FLUmlBZDNyYmNFdGpUallJb2Y2V2FIc0NtelZQV0NNeCtjZ2g4dExxV01LYU1Xc1VqTHFvMlJ0SklRMG9Pem1lcnBRdTRlc1pnc09Oa0d4SDdkMGtkdlRUMTdzNE9NVTdWSThaaGpnR2FNK0FxOWlFTnU4UGlmMXVkejA3TXd2S1dmOEdsVm9DRVkwNFBDNVdkVGFYWUZiUjh2TnZMNSszS2dmYjV4Tk15YTlSYW1KaXluYU1sR1RWdEZscjZiYTl1K3BxbkVYNHVNdVJSZ2pTWUVock43dXRGRmU2bHFhbDdOZmt3NWltQUdIeW5QcGJrOFZtWTB4c3RucHRsRkNWQ1l0elR1Qk44M1FwTUxqVHRldmRQelNVbko3ZThta2p4WjM5ZlhiS0RmbGRacWJ2VStUVWdHbkJWRjZmUTJpUEhnNFcxNlVXVXd2emJrMTZzTVpFK1BuMHB2ejdKU2V1QXllczhsY3BDbWFLdW8vcCtxV3IyVWN3SUFIV3J2UDBZRXpoWEF0TEFic3NIaHA3aUdhbXZ5aWpQOHJ5cXJYVVdYOVhvb3d4eUF1Zk5CcnA0M1BPQkZYWmxrZjhNRFJpcWNweW93QXdwdXoyeCtmV3Z6L0R0ZGU5c21zenlndGNSNkMxd2JkekJsNk9scTVXTllZNG9HYXRoSk1ya1RFeDBqQVJTSEFWcys1cllrUU5YYitRZ2ZQTHNRNmdYeUluc3JlUWZtcG03UlZGWWZMODZuMWZpVU9rWXZTaGtVUHh2YnVrem95NksxaWhNMWhvM1h6VzZFdlNmWEErZHBpV0dhV2QrZG9Yekx6bUd3S1lGTENBc1JBbFBCQWhNbENGWFU3dEJVVlByOEhnVmNKSFdxK0YwMHBscitETVRkclA0enZ4WTExa05NaHhUK1NlVEdnK2Q0VjVMUUppdHlVR0pOQjhWRlpzamdZQlpNL0lJL1hDVGtqMHF5RE9wRjJBVlExN0NJalVwL0RuVDFVa0w1RjVnZGorc1Mxd2cxZ0UzZ2lnbTYwZkNYelNuUFhieUFQYklYditJRHBFMTZUaGFISVM5c2t5aGxtTUU1RjNjZnFBS2hxMkMwRTVQSDFnWWFYYUxQRGtaRzBIREpPbktXSHA1MUkwejVTT3V4OGUxV0F1WnpkSFFyVGtwOFRtalhvSStsYTB3R1pzenVicWJPM2lmUTZBL1c3dlZTWXNWM21SMEpLd2tLYzRXSGlCa21SOEkzQ0NnSTg3b09MNHF6VDVQK1JVSkJlakVPZ0FQSzhoWVB6YXRNK2VJVHAySU85eVRRbWVyb21QUnh4MXF4QWNzaWxlL3ViU2VFYmNXUUdZRUNnaGNMWTJIeUtqb2dqSDI1aE1wanBVdjFPdWdsaTRlaDJlUncwTzMyYkpqa3l1Q2dOemcwdnpsWU1TaVNzMHVvbzRNRzdoTU9qQ0VhWDF5RkUwblN2akJ6dVRuRXBLODZaOElvcUZBSXVidzhrZzlBckVhUkVXU1pJK2pINFhicDZnOUU5RW5KVDNvYVJ6RE4rTVVKQlFESG41NmE4b1VtRUJ1c094QnMvTjUrdEpFYlBrQUZEajhVR3ZPcy9JV3ZjU2dsR0JodlM3L0ZUWWZwV0dZZERZOGZQQXhXU0EzNXNUQzRwNCtMbTRBYXFJb1BlUXRmdWZLNkpoMFpoeGxic1VYT1NtWE5pZkQ1WlRBa3lEb2ZiYmNjbHhuQThXTkFxeENiUk55a2hYeFFwYUR3NjdmWFVZYnNpRzBLaHR2Mm9lSXZoOHJoUU1ZT2NFQXFYRy9lSSt6bmdPYzV5eHI4cTgySUFNMWMvRkxGT3BscXU1ZUZRWHJNWnpHY1ZDalliTFdHNUk0QlQxZXVScmxieHROT3RNaXREREVoTFhJSXluQUF2dU9FV0UzWDNOZEFmdDk0VmdhRzQyWElRdDBaWDZQZUNFL3FRRmU5cks2SHg3WVU1MEt2SDdmVzRmUytxN0tLQkp4c2dnQlg1cFNBR2gxaklyVmg1elE2dzNSZmFhaEJYbS9hQ2JDWlRqQ1VGVVR5V1pxVzlwNjJNakpQWFZxT3JQZ01PNE52NzRHa2Yrb3dmdE5WQkRRbmpGSnFIU3cxN3BYdmhXVzVLWnFlL1E0OU4vVVNUQ0FWV29RWEZJSEJIWFhlM0ZQclVEc3VHRG10Ri9oSEtUSHBla3hoaUFPUEkrU0pxNlM2SEY0STlZV3prQkpUbzQ2aVVNeldwOFBpci9SaWR1THhLWXNTa3NWOHZMbE9RdmhHWDJZbFIwT0JoQmpDK3UvZ0VjdlkwQXBLN1lrNDFOeGpQU1FuV0ZIVEY2NlVyamdldkI4Q3U1YStsMnZZU1JQdHVWRG83M2hoZE1TSG5VWDd0VGpzVlpHeEFsL1dwdGlPSUVRMWduTDI5bVg2L3RSMXRtbGtZajhXNFgrQ1NqV2NVREdZMU5wUy9DN2hTS3FpTUxNL2wyUW1TV1o3M0RkeitnaW84QkNFTllQUTQ2cW5rendYVWJxdkJreGpVUXNXZlpGZ2J1bzNyQWYrd043ak9POTAreW54NFBpM0wrMG5ZTDFTY2hEVWdBUDRnUFYvN0lkMXErMUhTaG11R2tJcVdSUGd5eE1GcVA4SGZqVG5qWHdZNWJRZmJKY3Q2T0l6S2dNSG90Ri9IZTFlZ3NheEhTcUc2d2ZkbVE1eDhOeVRGRnFCY3AyaVNvd0hSM3lrNSszNmhGN3ZYQUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzFfUFJFIiwiRklET18yXzEiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwibGFyZ2VCbG9iS2V5IiwiY3JlZEJsb2IiLCJtaW5QaW5MZW5ndGgiXSwiYWFndWlkIjoiYTAyMTY3YjlhZTcxNGFjNzlhMDcwNjQzMmViYjZmMWMiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJsYXJnZUJsb2JzIjp0cnVlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6dHJ1ZSwiYWx3YXlzVXYiOmZhbHNlfSwibWF4TXNnU2l6ZSI6MTI4MCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0Ijo4LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjEyOCwidHJhbnNwb3J0cyI6WyJ1c2IiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotOH0seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTM1fV0sIm1heFNlcmlhbGl6ZWRMYXJnZUJsb2JBcnJheSI6NDA5NiwibWluUElOTGVuZ3RoIjo0LCJmaXJtd2FyZVZlcnNpb24iOjMyOTQ3MywibWF4Q3JlZEJsb2JMZW5ndGgiOjMyLCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6MSwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjEwMH19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTEwLTEyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3MywiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZdWJpS2V5IDUgU2VyaWVzIHdpdGggTGlnaHRuaW5nIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNDEwMTIwMDgiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0wNi0wNCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzMsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWXViaUtleSA1IFNlcmllcyB3aXRoIExpZ2h0bmluZyIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjQwNjA0MDA0IiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMDYtMDQiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDczfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI0LTExLTEyIn0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiMTJiMGM2NjI1ZDM3N2VhN2I5ZjBjODZmYzMyOWNhOWM3MjMwMGM0MyJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyIxMmIwYzY2MjVkMzc3ZWE3YjlmMGM4NmZjMzI5Y2E5YzcyMzAwYzQzIl0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IDUgQ0NOIFNlcmllcyB3aXRoIE5GQyAoRW50ZXJwcmlzZSBQcm9maWxlKSJ9LCJkZXNjcmlwdGlvbiI6Ill1YmlLZXkgNSBDQ04gU2VyaWVzIHdpdGggTkZDIChFbnRlcnByaXNlIFByb2ZpbGUpIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTcyOCwicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoyfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCIsInJlbW90ZV9oYW5kbGUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURTakNDQWpLZ0F3SUJBZ0lVVG5iYkdJUjJOSHZ6cUlLRkFlUXdHMVhCaXMwd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JCSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVFZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU9zWGozazA0QmFuNFRZZHRaS3FEL09QSnh5RHlhUG1DQlVGVWlhWklnVHRlWm5qM1gyNURoZ3BaWlhzQzREMHlkSWNybEE2d05VSW5PUkwvTDl6QmJURUlNQVZNR282ZzdVS0FtYjJNRjZBSGJuaFlKZDllaWt1cFZOV1NoSE5ZTmM0R0JkTzFZTjZBZlVxdkpoSGJlM1Y0U05NUG1CUkVLSlBWejdUaHdnbWdnVGU4V3MySzAvd3NxdjJ3U0U3cGJDQnNVWmhJWDUxYlpNM3BxRHdKUFRtUkZFdnQwLzZ0RzVlTzhGM2oxNE9YcWZFaG1qbjFWdnhLRFlRT0xaQXhDd3dnQzBQNENkZld2M3k4UFNSOEkzNTRoTzFZK0d6Tmp2SXFYMzhOS0x5d3VJWUhGZXJPeE5seEVNQnZGaFlCdVJ1WUFra2dVYVBxTjZVQmhzSUxyc0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ0NvUkhoaXlObmJuWFJXSUw2WkJYb0JYOVlUTUI4R0ExVWRJd1FZTUJhQUZDQW9VQ0VicEZwYjZGUExuWjNGNVB4c0wzb2ZNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUNRRmFmSkkxLzVXZzlDRUVpbUUxUlA1NFJnUXdUTlRPT1FzTEFDVGUrckl0bEZRekM5WkRoclY4Mjh5WDdqenkrQUFzcDNpeks3VDF0aDJkbDdtK3R1MHN3MlBhL29sYzAybnQ2UHlJdzM0OGdhSHpoSTErMEtFNDVxeHZGRGVMMmxNeGJQZkNZdnlFRWFZemppUUVMVTU5NTFwWEdXeUtNYS80Zkx0TytaS09YaE11VmVxNHJYRFBJNTRXNkpIT2lBYWlLZGl3KzVlM2Mya3QvakZJUXRNNnZNWGc5TE5GemRqRVROdDIwVlg5UWV2UnBGWmZ1Y01HOXdDYVFEb0ZsUHpwVE1KS2hQZXYvaW1KbVpZaEtmcjBsTGNlbXRxakl4TEFvcVpkT1lmSEJnNit2QWNkUEkvaWF1R3BVQXY3WCtVS05tRHdqWjJCYUg0c0x3aEIybSIsIk1JSURTRENDQWpDZ0F3SUJBZ0lVRHFFUncrNFJuR1NnZ3hnVWV3SkZFUERSWjNZd0RRWUpLb1pJaHZjTkFRRUxCUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURJN1huSCtadkR3TUNRVThNOFplVjVxc2N1Ymx2VllhYVJ0M1liYXhuOWdvZEx4NXN3SDBsWHJkZ2poNWg3RnBWZ0NnWVlYN0U0YmwxdmJ6VUxlbXJNV1Q4TjNXTUdVZThRQUpiQmVpb1Y3Vy9FK2hUWlAvMFNLSlZhM2V3S0JvNlVMZU1uZlFaRHJWT1JBazh3VExxMnY1TGxqNXZNajdKdE9vdEthOUo3bkhTOGtMbXpYWFNhajBTd0VQaDVPQVpVVE5WNHpzMWJ2b1RBUVFXckw0L0o5UXVLdDZXQ0ZFNW5VTmlSUWNFYlZGOG1scUsyYngyejZva1ZsdHlEVkxDeFlicFVURUx2WTF1c1IzRFRHUFVvSUNsT200Y3Jwd25EUkxWSHZqWWVQR0JCLy9wRXl6eEEvZ2NTY3hqd2FIMVpVdzliblNiSHl1cktxYlRhMUt2akFnTUJBQUdqWmpCa01CMEdBMVVkRGdRV0JCVHF0MEtRbmd4N1pIcmJWSHdEdW54T245aWhZVEFmQmdOVkhTTUVHREFXZ0JUUzd1OWFJbzA2YlZ3amx6M3loZFVtOFNWN2tqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQTRHQTFVZER3RUIvd1FFQXdJQmhqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFxUWFDV014VEdxVlZYN1NrN2trSm1VdWVUU1lLdVU2K0tCQlNnd0lSbmx3OUs3SGUxSXB4WjBoZHdwUE5pa0tqbWN5RmdGUHpoSW13SEpneHh1VDkwUHczdllPZGNKSk5rdERnMzVQWE9melNuMTVjRkF4MVJPMG1QVG1JYjhkWGlFV09wem9YdmR3WERNNDFaYUNEWU1UN3c0SVF0TXl2RTd4VUJacTJianRBbnEvTkRVQTdiZTRIOEgzaXBDKy8rTktsVXJjVWgrajQ4SzY3V0kwdTFtNkZlUXVlQkE3bjA2ajgyNXJxRHFzYUxzOVRiN0tBSEF3OFBtcldhTlBHMmtqS2VyeFBFZmVjaXZsRmF3cDJSV1p2eHJWdG4zVFYyU0J4eUNKQ2tYc05EMDVkQ0VyVkhTSklzK0JkdFRWTlk5QXd0eVBtbnliMHY0bVNUenZXZHc9PSIsIk1JSURQakNDQWlhZ0F3SUJBZ0lVWHplaUVESkVPVHQxNEY1bjBvNlpmL2JCd2lVd0RRWUpLb1pJaHZjTkFRRU5CUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTVo2L1R4TThySVQrRWFvUHZHODFvbnRNT28vMm1RMlJCd0pIUzBRWmN4VmFOWHZsMTJMVWhCWjVMbWlCU2NJWmQxUm54MW9kNTg1aCsvZGhLN2hFbTdKQUFMa0tLdHMxZk81M0tHTkxadWp6NWgzd0duY3I0aHlLRjBHNzRiL1UzSzloRTVtR05ENnpxWWNoQ1JBSGZyWU1ZUkRGNFlMMFg0RDVuR2R4dnBwQXk2bmtFbXRXbU1ud08zaTBUQXVjc3JiRTQ4NUh2R000cjBWcGdWZEpwdmdRamlUSkNUSXErRDM1aHd0VDhRREl2K25HdnBjeWk1d2NJZkNrenlDaW1KdWtoWXk2S29xTk1LUUVkcE5pU092V3lETVRNdDFid0N2RXpwdzkxdSttc1V0NHJqMGVmbk85czBaT3dkd01SRG5INHhnVWw1Wkx3cnJQa2ZDMS8wQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQjhHQTFVZEl3UVlNQmFBRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRTXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJEUVVBQTRJQkFRQzNJVy9zZ0I5cFo4YXBKTmp4dUdvWCtGa0lMa3Mwd01OcmRYTC9jb1V2c3JoenN2bDZtZVBNcmJHSkJ5SjFYbnF1QjVzZ2NSRU5GeGRRRm1hM21pbzhVcGYxb3dNMVpyZVhySjBtQURHMkJwbHFiSm54aXlZYStSMTFyZUlGVFdlSWhNTmNaS3NEWnJGQXlQdUZqQ1dTUXZKbU5XZTltRlJZRmdOaFhKS2tYSWI1SDFYZ0VEbHdpZWRZUk03Vm9sQk5sbGQ2cFJGS2xYOHVzdDZPVE1PZUFEbDJ4TkYwbTFMVGhTZGV1WHZEeUMxZzkrSUxmejNTNk9JWWdjM2lyb1JjRkQzNTRnN3JLZnU2N3FGQXc5Z0M0eWkweEJUUHJZOTVyaDQvSHFhVVlDQS9MOGxkUms2SDdYazM1RCtXVnBtcTJTaC94VDVIaUZ1aGY0d0piMGJLIiwiTUlJRFJ6Q0NBakdnQXdJQkFnSVVleDluVDl2d1pOWFM0ODNMZGlZR2Z3MlNqU293Q3dZSktvWklodmNOQVFFTE1DNHhMREFxQmdOVkJBTU1JMWwxWW1samJ5QkJkSFJsYzNSaGRHbHZiaUJKYm5SbGNtMWxaR2xoZEdVZ1FpQXhNQ0FYRFRJMU1EZ3dNVEF3TURBd01Gb1lEems1T1RreE1qTXhNak0xT1RVNVdqQW5NU1V3SXdZRFZRUUREQnhaZFdKcFkyOGdSa2xFVHlCQmRIUmxjM1JoZEdsdmJpQkNNaUF4TUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUF1MU1ldm55OWR5TzlaVUMzOVNvTWhMY1IvRFhydEYvY2lNMTJ0Y2l5MkVYQVo2TWtyaXZWdENmRVZNOVg2SVNURW5CUDZ1U1lZb3Y2cHB2Nk82SmgyTkhtWW00dytKblM0Vm5DUFU3bUhBTWZWSTJNR1RUTVZPZXcweFVzRzdzSVNJa0lEVUJtdWs4WUs5YzV6aWM5K3ZGUUdMSWtzZFhPNWlWRklnTkc1M2NHWEQ0Wkxab0FQaXUwUEVvenhBcVlJYUk0Z3hLaE9BM1M4L1c4bUlXc3U2b2Z5ajRHdmtGRzZaN2t5RjMxMDdQN213RkhMckkzRU5hUFdNT0ZjVGFHYTBkdysvdlZSd2pSY0VaQlZzdXVULzg3Y2tTczBhNXBrdDN2WkJsYVllVDhwelNyZVY3bW93Y0lNOTBMMmlhQVRsUDBueG1hRTZuT3lUYm9qRlZsMndJREFRQUJvMll3WkRBZEJnTlZIUTRFRmdRVVNYRWgzc2EzYnREdXJtNE1NL0M3UzFsUnV1WXdId1lEVlIwakJCZ3dGb0FVNnJkQ2tKNE1lMlI2MjFSOEE3cDhUcC9Zb1dFd0VnWURWUjBUQVFIL0JBZ3dCZ0VCL3dJQkFEQU9CZ05WSFE4QkFmOEVCQU1DQVlZd0N3WUpLb1pJaHZjTkFRRUxBNElCQVFCNUdjM2hhZnRwN2hLc0Vac28raS9aNW5SdXFkbXpHMldDbFVvUlVxYmFQeWdsbkpEaktSL2tmZ09sNmliYkYvenRobTNLbVhRN0hjRElQMnhNZEc3VTJMMmltYkpRSHFQZi9oMkhxb2piNHJaZ3VlKzZXNGt0U1I1ZWxSOUwxcllxRS9TR1lNNGlFS29WUVN2N1JUMXJ4SWVXaUtzdy9WeHhpL1FPbnN4M0Y3eDgwQ0NZZ0I0RTN5UXg4VlRXNDQwaFRFd1RBMWVNSE9peDMydFB0eXlISWE4UFZWSWZWcEhRSkJhTVZ2djUwOFVFandrYlUycm5qZnpvU1ROUzlBNWpVUThtQlN2ZTk1cmpCMGRvOThFVStEeGRCcVgyK0g2aTV3bElDRmd6aGR6Y3NuZTloR0tUNmx6VFg0Y0lkSnNyWTIreGxlSzBGRlF5NmxHRVZMRWUiLCJNSUlEU0RDQ0FqQ2dBd0lCQWdJVVVjbU1YelJJRk9nR1RLMFRiM2dFdVpZWmtCSXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFEbTU1NWJXWTlXVyt0T1kwcklXSGxkaCthTmFub0NaQ0ZoN0drM1laclFtUFV3MGhrU0c2cVlIUXRQK2ZaeVMzM1ZFcnZnK0JRcW5tdW1nTmhmeEZya3dFWkVMZWlkQmNDOEM0QWc0bnFxaVBXcHpzdkkxN05jeFlsSW5MTkxGY1pZLytnT2lONlpPVGloTzUvdkJaTWJqOXJpYUFjcWxpWW1OR0pQZ1RjTUdhRUF5TXpFTU55Mm5tNkVwK3BqUDVhRjZnaTIxdC9VUUZzdUoxajJSai95bk0vU2RSdCtlY2FsNU9Zb3R4SGtGYkw5dnZ2MkEyT3Y1SVRaQ2x3NGJPUzlucHlwUWltT1o1UUFZeXRtWWFRcFdsL3BNWXo2elNqOFJxa1ZETkVKR3FOZlRLQTJpdkxZd1g2bFN0dE1QYXBnMEo4NGw5WDB2b1ZOL0ZwUzRWQ1ZBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlFnS0ZBaEc2UmFXK2hUeTUyZHhlVDhiQzk2SHpBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBWU16Z0xySkxJcjBPb3ZRbkFaclJJR3VhYmlIU1VLU21iTFJXcFJrV2VBdHNDaERFSHBYY0ovYmdETktZV29IcVE4eFJVakI0Q3llcFlldmMzWWxyRzhvN3pIeHBmVmNhb0w1U2V1Smt6SHhLbjRiVGFTcDkrTXZ3YW1ucDY0a1pNaU5iRkxrbmZQOWtZS29SSGtNV2hlUkoxVXNQMXo0U2Nta0NlSUxmc01zNnZxb3ZxaldDbEZzSnBCY3NsdVlIV0Y3YkJKMW40UndnK0FURW9wWTRJZ0d2Nlp2d2MrQTlyK0FUMmhxcG9Ta1lvQWwrQU5Zd2dzbE9mOXNKZTBWK1RBOVlZL1VsYUJtUFBUZDAvL3I5d3ZjZVBXWmtQaktvQUMvelVOaGZEYmg0TFY4R0hzM2x5WDJYb21ML0xOYzhKWXp5SWFERWhHUXZlb1BoaC90cjFnPT0iLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVIzOG1xMjZTZjJzelZWMkJkRzZXRU43a3VXVXdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFSWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFOWTBXYjlvUG9Sb0tvUXlXUGFKcHoxMXZyV1RnNnpUdG1OajJWb0tSbnl2S0dScXB6YjgzdzVsNllBOTZVWWtZQkRRUDBpbE8yRFBlNndXcVZSNXpEZlJ6ZGNIOGJoK0w3ZEdHdmFlNmhSVFpoa0ZrQ3BYRHM0SGNja25yRGY4RkNsSjdIZTM5SmY0Mi9HMVFtMnp6OVdXbXJQWHRnaUsveDA1R2pzUWZHdURHMXpmNVFUVVVpZThsd3ltSzNUZmRPdk5lZUpBQVBlMnBuN0l0ZlJiK3JWck5XaUR6bFJuMnZObloyd1BvNHdIL1dKNmRoWFpHK3JNV1QrYTZCb2NnMVVmSXc2a2R1bkc0YlRwWnpzdmFjRll5UjBtcGYrRGVPbnBTV0FteXdKV0h2VGxmMllYeEZ5ZVhjVEFDZFFsY01OR0oyVmhaUTQ4eHRQNS9SQlAvOGtDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNoeTQyb2tpcWNUUzFpcWEvSFJXamtCbjRIL01COEdBMVVkSXdRWU1CYUFGT3EzUXBDZURIdGtldHRVZkFPNmZFNmYyS0ZoTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBbitSSElQYnRNRUROZFQxZzhIL1JpdEFrVWRMZ0F0MXRXR1dubGo5a25idjQvNEdsWDdDOXA0NWVmUE85L2FaTDZPVjFYUktCaTZLbXRCVzVLN251WUVuTXgvNUJxQlNiTFQ3cmhkdUM0OVRCZU1iOVBIZFhzVGxTVk5ZZWZyMWRHaWRyNGoweFZCUUxiMXJrbkRBYmRXRHpLZnZuYXlLTzhGcndlN0h4ODQzTUcvckorYzBYcnVVdmJmVlRDSExpSVdoTTdvTkRoTDh4b2I2eFVvOUtMS2NTTCtJdFlzTzMvOVdiOFE5R2pzcUw0RlhzRGNHMVNhWWg3S3BmdU1tT2l4cXpKWk8ybklpY1BZUmcxSTJTdWlVZllPNzB0bWRIY2JsK2tTUW1TWXQ3cnE0dmlJTGcyR3gzajlySVR1V1RqYmFVYVNTUXhnT21NU0h1eXpNQUMiXSwiaWNvbiI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsImljb25EYXJrIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwicHJvdmlkZXJMb2dvTGlnaHQiOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJwcm92aWRlckxvZ29EYXJrIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09In0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjYtMDQtMjUiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NzI4LCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ill1YmlLZXkgNSBDQ04gU2VyaWVzIHdpdGggTkZDIChFbnRlcnByaXNlIFByb2ZpbGUpIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVMkYxMDAwMjAyNjA0MjUwMDciLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblByb2ZpbGVzIjpbImVudGVycHJpc2UiXSwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNi0wNC0yNSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk3Mjh9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjYtMDUtMDEifSx7ImFhZ3VpZCI6IjgyYjBhNzIwLTEyN2EtNDc4OC1iNTZkLWQxZDRiMmQ4MmVhYyIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiODJiMGE3MjAtMTI3YS00Nzg4LWI1NmQtZDFkNGIyZDgyZWFjIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IklELU9uZSBLZXkifSwiZGVzY3JpcHRpb24iOiJJRC1PbmUgS2V5IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjE2Nzc3MjE2LCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH0seyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AzODRyMV9lY2RzYV9zaGEzODRfcmF3Iiwic2VjcDUyMXIxX2VjZHNhX3NoYTUxMl9yYXciLCJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbIndpcmVkIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDM2pDQ0FqK2dBd0lCQWdJR0FPcTBBQUFDTUFvR0NDcUdTTTQ5QkFNRU1JR1JNUXN3Q1FZRFZRUUdFd0pWVXpFTE1Ba0dBMVVFQ0F3Q1ZrRXhEekFOQmdOVkJBY01CbEpsYzNSdmJqRXRNQ3NHQTFVRUNnd2tTVVJGVFVsQklFbGtaVzUwYVhSNUlHRnVaQ0JUWldOMWNtbDBlU0JWVTBFZ1RFeERNVFV3TXdZRFZRUUREQ3hKUkVWTlNVRWdTV1JsYm5ScGRIa2dZVzVrSUZObFkzVnlhWFI1SUZWVFFTQk1URU1nVW05dmRDQkRRVEFnRncweU5EQTVNVGd5TWpBd01EQmFHQTh5TURZME1Ea3hPVEl4TlRrMU9Wb3dnWkV4Q3pBSkJnTlZCQVlUQWxWVE1Rc3dDUVlEVlFRSURBSldRVEVQTUEwR0ExVUVCd3dHVW1WemRHOXVNUzB3S3dZRFZRUUtEQ1JKUkVWTlNVRWdTV1JsYm5ScGRIa2dZVzVrSUZObFkzVnlhWFI1SUZWVFFTQk1URU14TlRBekJnTlZCQU1NTEVsRVJVMUpRU0JKWkdWdWRHbDBlU0JoYm1RZ1UyVmpkWEpwZEhrZ1ZWTkJJRXhNUXlCU2IyOTBJRU5CTUlHYk1CQUdCeXFHU000OUFnRUdCU3VCQkFBakE0R0dBQVFBbGNUWXNDVjJMeHV3SzhRNVBLKzAzL3dTQVBTcFFaUjZrMTJQMnBxZkIxcDdNM0pVZlV3dmVtaXRvaEtKWTJFZXBQTGFkSWl3ejJnVmFyUEI2TUZjL0g0QlJtdjV5Y1VZaFd3SnlQaVJmcUZKUXJjbk9yMlFtR1VtN24vR1poUUtWejV1cjhMN05PcG5vbnZ4Y3VoY2V1amVlMXhIcElVK1dyeUNvMmhwTmZYb1lpS2pQREE2TUIwR0ExVWREZ1FXQkJRN1ZqbEwzYWdTVFh2VkFGeUtiNEdJRWNwMHd6QUxCZ05WSFE4RUJBTUNBUDh3REFZRFZSMFRCQVV3QXdFQi96QUtCZ2dxaGtqT1BRUURCQU9CakFBd2dZZ0NRZ0UrZmJiSkZjWGlGZ1FaYlpyM3hRZFVXU25nZzFoTnJrSEZIaDVRNlJFSFhIRVhheXgrSW1mMDBpUG9OcEFFNmM5bUNTVFZlV0JzR09xRFM0QjM2UlZRb1FKQ0FiWHdNRCtsMUYvTHN4UkJlNCswTUhod3IyMHY2aGttK3MyS09WVXIybitJQXoyY2doQ0NsTE9UZFhYdlFHbDQ2NTNYWDN2d1g5VnBneVJTVVQxdGhpZXgiXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBRElBQUFBeUNBSUFBQUNSWFIvbUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFGaVVBQUJZbEFVbFNKUEFBQUFvclNVUkJWRmhIelZocGNGUFhHZFh5bm1RdFhpWEwrMElhc01IR093WWJFbEpLZ0VrQ0FhWU0wMHliTW1sTEtBTmhuOG5DWmdncDVBL1VoSTR6aE5EU2FXY0tKR3lGTUtHQk5ISHhnbzF0R2JNYmIvSyt5SllsV2N1VDFITjFoVkJrVzlJUFluTEc0em52M2l2ZDg3N3RmbGQ4aDhQQkc0WEdlMTExbFpyZXptSE9adWZ6WFlOUEV3NGV3d3BqRWtLeVp5WEZKeWxjZ3g3d2xuWDg4SGZIRDEwMzZpMFNLU3NRQ240VVRVNWdXeHRuSHpGYUkxVFM5VHQrdm1SbHJtdkNpU2V5QnJYREsrYVVHSFRXNEZBeEJOSEJDWUROWmgvc055WlBpVGo1M3pVOG5wQU91bVIxdHZjdlNpOVd4UVREdG5SaWdtRTJjVWFqdWJSNUd5TVU0NUhLc3M5TzNpK1RpWVhNeEJscE5DeG1UaGJNbnIreEVaem8rR0R0YVNId1REVUJJakhUMjJVNGZ2Z2FPTjlnTU14Ty9EZ3FOb1QvNDRWM3dMRGJIYnJCa2JLMkR3UVhUNmxsOHFDZmdpWkFJT0RiN2J6SzcrOExwOFFzN0d6VFBYTVBQb0hERWE2U0NqbzF1c0RMQVl5TWZNWWZ6Vi84OTN4MEx3RG9vK09INndNQnhIUnBoZ1JXQ3hlZ0E3RWxrZ1VWVml4bWVIeVN3cHpWTGdBUUFjNUhMQkFLeWFQRHdTZFM3QTVFTVo2eHhEVENCYWdNWDJXeFlCZGVRS0x3cFQyZHVyUGw2eS9YYjc1UXZXRjRjTVJxc1QyWG9yeXMzb1FSaFVxR2ttMFlObS9ac3hDUFg5L2FyTzB6Y0p3OVBqbjhzbm96MWl4OUk4ZWdON3UreXgvNGVCRVg5UWZUaVBXMWxSbWhFUkx3TlV0UGlJTVltR3A2WGp5ZGZYU3ZGM1ppUmNKdnY3cERSOElVVXFHUVgxbmFWUGJOUXp4dUxKcHY0NGc1NmF4ZkNBSlpDRlAxOXhpTGlwZUJOei9zcXloOUpBNWlyVll1TFRNT0kyMlArcTFXRzEvQVoxaEJRMTJIOHhPOHlkT2lZSzBJaGF4bzQzazY4c2QzWDlMclRKVDdnejBnYStIay91MjZBb0dRdUh2NzIyY1VrVEtRRVlNMXR6QVpSRjJsRVlrWUVCaXNvMlVJQkVqUGpvTldKUGpnZ1BHckwrb3g4cHUxaGZpOE94dDh3Y0ZEYlBrQmlYUUx0M1hmSXZEcTBwWTc5UjJzaU1HZ1BEZ29WRUY4V24yOUZlNERRYlFpemgvZTdnYlBtWldNNEFNSkNaZnMzM1lKQk5oNWFNbmd3QWpsdnVIZmliRDg2czB2VWI1bnk3a0lKVEVWeDlsU002THA0TzJiN2V6akF4NW1VOS9RZ0dUT1RJQTVRV0JDSzJmN1Iwa1orSUpsNlFxbEhNNGxTMzNDanhQdE5qdSs5NjNOYzhDdm5Hdm9hdFBSRm9PejJMTm1KamlYOE83V2R3bFoxL2ZBYkRVVnJTQVNHYXRVeWZCeDhPRFFvRS8yWFhYTzgzWVh2NDRrcGR3SC9NZ2FHalJ0K3hOeEg3Qm53NFV3WnlZQ2NDdE53NVlIQTR6b1NaV0IyV3JMaVN4Z2FtWXNOUXhLRjdMaDRJNHI0UGx6SjAxSmk2TCs5UUZmc2xBU1pUTFI0cFZaNENjL3IwVDFwdWNCL001WmJIQVRlRTFGVTVDRUphdWRRSXkzTmcxUW5wbWY0TjVlSmhlZk9GSktlZEhocGYwOXc1U1BCMSt5dEgzR1BVZElVUUFPN2I0Q1gxQk95bmNRRXhvbUJiK2o3b0lsNkRnRnB1NDNkSUZNejR1RFVla2dzaUZVSWQyMS9pejQ1TFNvM01KSk9ERG8xSmdZVnhiU08zbXlZdmI4NThFLytmQWIyQW0rb0ZNMnpwYVNGa041VFhtTE85NHBVR25yYnJTQlpPUW5vT1M2enh3WTljSS9hd2U2U1dEdFA3b2NoY1BIY1RTdXJJRmVmZEdmbDFKKzRzaDFlVERwWlNtczFpZnhqa0tGbktDY0FpclZsVVNXUkNMQ24zdHJHQ3hNS2QyMWdSaE1HUjB5NzdWcGFKVHAxR2lNTFFzV3hsVnBXazRzK0o1M3ppT3Q4S1YwQ3NCc1ZuNGlTUE9EUHBQSml2cE94eW5nMDlzMW5aUm41c0ZnVDZJYkovZjFxdzliR3Z2QjkvMWxHVzRXNHhsc0RGbFlpVnAxNExOZmd2ZjE2RStmcUpKSVJYUUtjUEFjTnFzOTc0VWs4T3JTWnM5NHA0RHhOQzFhV2hxeUN4SVJESFFjd0x1RksyVGJWcDBFUndqK1llc0x1SkRSS1MrTWFTMEhQcStNQ2dicmFOSFN6b1ZPRURoNGZBRjViMUNEM2dJK0d1Z20wTW1BeUVQRlh2YkFDWVoyaXZMNDVBZ2tPK1ZlR09OYklTSkl5dTVZZXdZOFkwWkMvcHhKWm8rc29STFZsYVNVNXhZbW1ZemU4WUZ6S1RvK1JDb25CcTRxYmZaS0NHVDMvcVBFRDhCSFd5K2ljRkR1aGJGakM2NzU5NzlxQjNwSjFudzBLbXZFRXJicWY4MGdhYmx4NkY2ODdJSHNRd21ndkxhaXpmUGlDWWRPU2xFV09yTzd1T2cvckpnMGpYVEtDMlBMSWtHZ2xPMWNSd3dHYnk1WWtrYWRRb0dkYmxXM1U2NktDYkhaZmlBTGUrY1VrTWlEWE8yQTNuTmp2T2Z1ZzYrRG9KUDllMGtaYnFaMGZEVEdsZ1VnZXNxdU5pTFh3RkdYMFk2NnJjS3lBdlZONGtRZ016L09NOWNBcTVsTHp5WG5Va05OdTVBUnV1TVMrWnRiNE1ydXZac3VTbVVpcnhUMnhMaXlxTUhlKy8xcGNMR0VlV1BOVEtQQjRwNUNxcUlOQkUvTjhKYUY1TXFlU2NwSFhVV2J5Tm53QUhpbC9oNDk0Z0hjb0RPZi91c05GQjA2TlNiR2xRV2dIYmgvcDd1bW9nVjh5OTVGdzFvVE5SaGtNWXdBY1FPT3FQZXNpcWdMU2hWSllRQWREdTNEQUt5Wjk4clV5S2dROEIzcnppaWo1TDd2RUw1a0FSR1JzcUwxNXlqZnNITytic2pWOWNMRk5MeFNNMkk4a3hHQmxUM0xkUURjcW1tbjhZNlh3VjM1d3hKeXZHcWF0TmN1M3FYMXhRZjh5R0lZWVVmYjBOZGZOb0N2MmpoSHhBcHBwV0hRVnoxdVlIQjBvbEJSam5NSk5ZWHlqdFpCZWk2TkdDd3IzcG9oZGRhQzk5LytJa0lsY3dmY2VQQWpDOEFkNXNCMlY5Zjd6czZYZFlQRVlIRGkzVnJYYlNJOUt3NzlKK1VXRTVmdFBDNXJ5eldpSUplcFVIWGYzZjhLT0pLZ29hNWR4UG94RmVCZkZ0N1lPR3c1ZGF3S2ZQbWJPYUdoRXRnR2d6M2R3MVl6VVpNek81RVNLQUJTczBpdTFkMW9GWWxKVU90MTV0VmI1NElBU0NEY2hRSzVtUHFYQllTRVNUNSszMld3WFljWGF3ZEltY1ZKY0xPTStIRjZYZ0x0cSt3Mmh6SmFUc3U2dXFvVmRRUVZIMG13ZWh1UjllMmx1MTBkcnA3Ykx3S1NoWklJRVNVSHlDOVBoZk1teDhhRm95Z2diTlhWSkJsVHBrZGpBZXprdkhlNCtyQjd0N29SbDBQYWtVMjdGOUtSQSs5ZENvc2duV01nQ0VnV2dNUHIyTUh2S2YvMDdKdHdEWFp0cUhFVjFkakVNSmdLYWZqaUwxTG9TRStIRHJVa0xqRnN4ZS95OFBqbDM2cTEvY2JBZnhmaS8zcGhTYmRHNzlYS2pRazA1Z3FWUERvMkJOVzF2cm9kRGdMU1NDVHhteC8yR2cxV0pHblN6eFJvR0ZGUkcrLzJRSVFxSmhobkYvS3V2a3FEeC9GT1FFOVl6TFlaTDhielY3MTZ0TDFwS01EM2dKdGdGUkRVU1d3R1dmUVNnWWloVzhLNWtJc3BXa2dobE5ZTzl3Sy93QmxWTUM5Sm9JeVNlWjIxUGdESElhVHdSd3NQL3ROSDk1YllIby91NGc0bmVDM3dDN3kySWtvbW1Kb1Y1ZGxBUG5QZ21FckxqUlhNWDV4cUdEYkRIYTdoWndxYXpuTVhUaEVrSnNkbXpZcEdvTGxtbmltTWV1dXJ2MG9Wc3pJU3RocE54OUs4ejVTUmNoOE4wQVNBM0FCTWxzc042NlJCd1NqRTl2ajQyTDJmTHVocUgwWVN1WlpNT0pDemZUMkc0bFBMb0FreVVCZjR5T3BGUy9MM0hWdWcweG9SY1JNY1o5aHV4R0ExbXl3bEY1Wm5aS1ZBREI5WEw1eFpLRFc0RjJDK3NiR2x1T2lhdXJ3UEYzYmNRdUhUeDA1OXVzNGxyNDEzaDFWUTlteWNyV0JCM1BydDgxV1JrUUtHendqSlQ5UE9YNnA1RGp0blI5UmprZGxpYm55Z3FmeXVxZm1CVmo5a2hyK2RwbnVxOW5NV1BaVEFrSER4ODFPVk0rYytsNUFZdzRwWWROaXNtTUZWaXNmai94L3hxT2NQUmRTdmF3QUFBQUJKUlU1RXJrSmdnZz09IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiODJiMGE3MjAxMjdhNDc4OGI1NmRkMWQ0YjJkODJlYWMiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjp0cnVlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImVwIjp0cnVlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJhbHdheXNVdiI6dHJ1ZX0sIm1heE1zZ1NpemUiOjEyNTAsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6MTYsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MjA4LCJ0cmFuc3BvcnRzIjpbIm5mYyIsInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi0zNX0seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTM2fV0sIm1pblBJTkxlbmd0aCI6NCwiZmlybXdhcmVWZXJzaW9uIjoxNjc3NzIxNiwiY2VydGlmaWNhdGlvbnMiOnsiRklETyI6M30sInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjo1MX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTEyLTI3IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjE2Nzc3MjE2LCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IklELU9uZSBLZXkiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI0MTIyNzAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTEyLTI3IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjE2Nzc3MjE2fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTA2LTI2In0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiMDEwZGViZjcxMzk4N2JkY2Y0NDNkYmY2M2NmMjAxODQzMzg1NTE4ZCJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyIwMTBkZWJmNzEzOTg3YmRjZjQ0M2RiZjYzY2YyMDE4NDMzODU1MThkIl0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IDUgU2VyaWVzIHdpdGggTGlnaHRuaW5nIChFbnRlcnByaXNlIFByb2ZpbGUpIn0sImRlc2NyaXB0aW9uIjoiWXViaUtleSA1IFNlcmllcyB3aXRoIExpZ2h0bmluZyAoRW50ZXJwcmlzZSBQcm9maWxlKSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzYsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6Mn1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiLCJyZW1vdGVfaGFuZGxlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRFNEQ0NBakNnQXdJQkFnSVVEcUVSdys0Um5HU2dneGdVZXdKRkVQRFJaM1l3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRREk3WG5IK1p2RHdNQ1FVOE04WmVWNXFzY3VibHZWWWFhUnQzWWJheG45Z29kTHg1c3dIMGxYcmRnamg1aDdGcFZnQ2dZWVg3RTRibDF2YnpVTGVtck1XVDhOM1dNR1VlOFFBSmJCZWlvVjdXL0UraFRaUC8wU0tKVmEzZXdLQm82VUxlTW5mUVpEclZPUkFrOHdUTHEydjVMbGo1dk1qN0p0T290S2E5SjduSFM4a0xtelhYU2FqMFN3RVBoNU9BWlVUTlY0enMxYnZvVEFRUVdyTDQvSjlRdUt0NldDRkU1blVOaVJRY0ViVkY4bWxxSzJieDJ6Nm9rVmx0eURWTEN4WWJwVVRFTHZZMXVzUjNEVEdQVW9JQ2xPbTRjcnB3bkRSTFZIdmpZZVBHQkIvL3BFeXp4QS9nY1NjeGp3YUgxWlV3OWJuU2JIeXVyS3FiVGExS3ZqQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJUcXQwS1FuZ3g3WkhyYlZId0R1bnhPbjlpaFlUQWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQXFRYUNXTXhUR3FWVlg3U2s3a2tKbVV1ZVRTWUt1VTYrS0JCU2d3SVJubHc5SzdIZTFJcHhaMGhkd3BQTmlrS2ptY3lGZ0ZQemhJbXdISmd4eHVUOTBQdzN2WU9kY0pKTmt0RGczNVBYT2Z6U24xNWNGQXgxUk8wbVBUbUliOGRYaUVXT3B6b1h2ZHdYRE00MVphQ0RZTVQ3dzRJUXRNeXZFN3hVQlpxMmJqdEFucS9ORFVBN2JlNEg4SDNpcEMrLytOS2xVcmNVaCtqNDhLNjdXSTB1MW02RmVRdWVCQTduMDZqODI1cnFEcXNhTHM5VGI3S0FIQXc4UG1yV2FOUEcya2pLZXJ4UEVmZWNpdmxGYXdwMlJXWnZ4clZ0bjNUVjJTQnh5Q0pDa1hzTkQwNWRDRXJWSFNKSXMrQmR0VFZOWTlBd3R5UG1ueWIwdjRtU1R6dldkdz09IiwiTUlJRFNEQ0NBakNnQXdJQkFnSVVVY21NWHpSSUZPZ0dUSzBUYjNnRXVaWVprQkl3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRRG01NTViV1k5V1crdE9ZMHJJV0hsZGgrYU5hbm9DWkNGaDdHazNZWnJRbVBVdzBoa1NHNnFZSFF0UCtmWnlTMzNWRXJ2ZytCUXFubXVtZ05oZnhGcmt3RVpFTGVpZEJjQzhDNEFnNG5xcWlQV3B6c3ZJMTdOY3hZbEluTE5MRmNaWS8rZ09pTjZaT1RpaE81L3ZCWk1iajlyaWFBY3FsaVltTkdKUGdUY01HYUVBeU16RU1OeTJubTZFcCtwalA1YUY2Z2kyMXQvVVFGc3VKMWoyUmoveW5NL1NkUnQrZWNhbDVPWW90eEhrRmJMOXZ2djJBMk92NUlUWkNsdzRiT1M5bnB5cFFpbU9aNVFBWXl0bVlhUXBXbC9wTVl6NnpTajhScWtWRE5FSkdxTmZUS0EyaXZMWXdYNmxTdHRNUGFwZzBKODRsOVgwdm9WTi9GcFM0VkNWQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJRZ0tGQWhHNlJhVytoVHk1MmR4ZVQ4YkM5Nkh6QWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQVlNemdMckpMSXIwT292UW5BWnJSSUd1YWJpSFNVS1NtYkxSV3BSa1dlQXRzQ2hERUhwWGNKL2JnRE5LWVdvSHFROHhSVWpCNEN5ZXBZZXZjM1lsckc4bzd6SHhwZlZjYW9MNVNldUprekh4S240YlRhU3A5K012d2FtbnA2NGtaTWlOYkZMa25mUDlrWUtvUkhrTVdoZVJKMVVzUDF6NFNjbWtDZUlMZnNNczZ2cW92cWpXQ2xGc0pwQmNzbHVZSFdGN2JCSjFuNFJ3ZytBVEVvcFk0SWdHdjZadndjK0E5citBVDJocXBvU2tZb0FsK0FOWXdnc2xPZjlzSmUwVitUQTlZWS9VbGFCbVBQVGQwLy9yOXd2Y2VQV1prUGpLb0FDL3pVTmhmRGJoNExWOEdIczNseVgyWG9tTC9MTmM4Sll6eUlhREVoR1F2ZW9QaGgvdHIxZz09IiwiTUlJRFNqQ0NBaktnQXdJQkFnSVVUbmJiR0lSMk5IdnpxSUtGQWVRd0cxWEJpczB3RFFZSktvWklodmNOQVFFTEJRQXdMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3SUJjTk1qUXhNakF4TURBd01EQXdXaGdQT1RrNU9URXlNekV5TXpVNU5UbGFNQ1l4SkRBaUJnTlZCQU1NRzFsMVltbGpieUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRUVnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBT3NYajNrMDRCYW40VFlkdFpLcUQvT1BKeHlEeWFQbUNCVUZVaWFaSWdUdGVabmozWDI1RGhncFpaWHNDNEQweWRJY3JsQTZ3TlVJbk9STC9MOXpCYlRFSU1BVk1HbzZnN1VLQW1iMk1GNkFIYm5oWUpkOWVpa3VwVk5XU2hITllOYzRHQmRPMVlONkFmVXF2SmhIYmUzVjRTTk1QbUJSRUtKUFZ6N1Rod2dtZ2dUZThXczJLMC93c3F2MndTRTdwYkNCc1VaaElYNTFiWk0zcHFEd0pQVG1SRkV2dDAvNnRHNWVPOEYzajE0T1hxZkVobWpuMVZ2eEtEWVFPTFpBeEN3d2dDMFA0Q2RmV3YzeThQU1I4STM1NGhPMVkrR3pOanZJcVgzOE5LTHl3dUlZSEZlck94Tmx4RU1CdkZoWUJ1UnVZQWtrZ1VhUHFONlVCaHNJTHJzQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZDQ29SSGhpeU5uYm5YUldJTDZaQlhvQlg5WVRNQjhHQTFVZEl3UVlNQmFBRkNBb1VDRWJwRnBiNkZQTG5aM0Y1UHhzTDNvZk1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQ1FGYWZKSTEvNVdnOUNFRWltRTFSUDU0UmdRd1ROVE9PUXNMQUNUZStySXRsRlF6QzlaRGhyVjgyOHlYN2p6eStBQXNwM2l6SzdUMXRoMmRsN20rdHUwc3cyUGEvb2xjMDJudDZQeUl3MzQ4Z2FIemhJMSswS0U0NXF4dkZEZUwybE14YlBmQ1l2eUVFYVl6amlRRUxVNTk1MXBYR1d5S01hLzRmTHRPK1pLT1hoTXVWZXE0clhEUEk1NFc2SkhPaUFhaUtkaXcrNWUzYzJrdC9qRklRdE02dk1YZzlMTkZ6ZGpFVE50MjBWWDlRZXZScEZaZnVjTUc5d0NhUURvRmxQenBUTUpLaFBldi9pbUptWlloS2ZyMGxMY2VtdHFqSXhMQW9xWmRPWWZIQmc2K3ZBY2RQSS9pYXVHcFVBdjdYK1VLTm1Ed2paMkJhSDRzTHdoQjJtIiwiTUlJRFJ6Q0NBakdnQXdJQkFnSVVleDluVDl2d1pOWFM0ODNMZGlZR2Z3MlNqU293Q3dZSktvWklodmNOQVFFTE1DNHhMREFxQmdOVkJBTU1JMWwxWW1samJ5QkJkSFJsYzNSaGRHbHZiaUJKYm5SbGNtMWxaR2xoZEdVZ1FpQXhNQ0FYRFRJMU1EZ3dNVEF3TURBd01Gb1lEems1T1RreE1qTXhNak0xT1RVNVdqQW5NU1V3SXdZRFZRUUREQnhaZFdKcFkyOGdSa2xFVHlCQmRIUmxjM1JoZEdsdmJpQkNNaUF4TUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUF1MU1ldm55OWR5TzlaVUMzOVNvTWhMY1IvRFhydEYvY2lNMTJ0Y2l5MkVYQVo2TWtyaXZWdENmRVZNOVg2SVNURW5CUDZ1U1lZb3Y2cHB2Nk82SmgyTkhtWW00dytKblM0Vm5DUFU3bUhBTWZWSTJNR1RUTVZPZXcweFVzRzdzSVNJa0lEVUJtdWs4WUs5YzV6aWM5K3ZGUUdMSWtzZFhPNWlWRklnTkc1M2NHWEQ0Wkxab0FQaXUwUEVvenhBcVlJYUk0Z3hLaE9BM1M4L1c4bUlXc3U2b2Z5ajRHdmtGRzZaN2t5RjMxMDdQN213RkhMckkzRU5hUFdNT0ZjVGFHYTBkdysvdlZSd2pSY0VaQlZzdXVULzg3Y2tTczBhNXBrdDN2WkJsYVllVDhwelNyZVY3bW93Y0lNOTBMMmlhQVRsUDBueG1hRTZuT3lUYm9qRlZsMndJREFRQUJvMll3WkRBZEJnTlZIUTRFRmdRVVNYRWgzc2EzYnREdXJtNE1NL0M3UzFsUnV1WXdId1lEVlIwakJCZ3dGb0FVNnJkQ2tKNE1lMlI2MjFSOEE3cDhUcC9Zb1dFd0VnWURWUjBUQVFIL0JBZ3dCZ0VCL3dJQkFEQU9CZ05WSFE4QkFmOEVCQU1DQVlZd0N3WUpLb1pJaHZjTkFRRUxBNElCQVFCNUdjM2hhZnRwN2hLc0Vac28raS9aNW5SdXFkbXpHMldDbFVvUlVxYmFQeWdsbkpEaktSL2tmZ09sNmliYkYvenRobTNLbVhRN0hjRElQMnhNZEc3VTJMMmltYkpRSHFQZi9oMkhxb2piNHJaZ3VlKzZXNGt0U1I1ZWxSOUwxcllxRS9TR1lNNGlFS29WUVN2N1JUMXJ4SWVXaUtzdy9WeHhpL1FPbnN4M0Y3eDgwQ0NZZ0I0RTN5UXg4VlRXNDQwaFRFd1RBMWVNSE9peDMydFB0eXlISWE4UFZWSWZWcEhRSkJhTVZ2djUwOFVFandrYlUycm5qZnpvU1ROUzlBNWpVUThtQlN2ZTk1cmpCMGRvOThFVStEeGRCcVgyK0g2aTV3bElDRmd6aGR6Y3NuZTloR0tUNmx6VFg0Y0lkSnNyWTIreGxlSzBGRlF5NmxHRVZMRWUiLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVIzOG1xMjZTZjJzelZWMkJkRzZXRU43a3VXVXdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFSWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFOWTBXYjlvUG9Sb0tvUXlXUGFKcHoxMXZyV1RnNnpUdG1OajJWb0tSbnl2S0dScXB6YjgzdzVsNllBOTZVWWtZQkRRUDBpbE8yRFBlNndXcVZSNXpEZlJ6ZGNIOGJoK0w3ZEdHdmFlNmhSVFpoa0ZrQ3BYRHM0SGNja25yRGY4RkNsSjdIZTM5SmY0Mi9HMVFtMnp6OVdXbXJQWHRnaUsveDA1R2pzUWZHdURHMXpmNVFUVVVpZThsd3ltSzNUZmRPdk5lZUpBQVBlMnBuN0l0ZlJiK3JWck5XaUR6bFJuMnZObloyd1BvNHdIL1dKNmRoWFpHK3JNV1QrYTZCb2NnMVVmSXc2a2R1bkc0YlRwWnpzdmFjRll5UjBtcGYrRGVPbnBTV0FteXdKV0h2VGxmMllYeEZ5ZVhjVEFDZFFsY01OR0oyVmhaUTQ4eHRQNS9SQlAvOGtDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNoeTQyb2tpcWNUUzFpcWEvSFJXamtCbjRIL01COEdBMVVkSXdRWU1CYUFGT3EzUXBDZURIdGtldHRVZkFPNmZFNmYyS0ZoTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBbitSSElQYnRNRUROZFQxZzhIL1JpdEFrVWRMZ0F0MXRXR1dubGo5a25idjQvNEdsWDdDOXA0NWVmUE85L2FaTDZPVjFYUktCaTZLbXRCVzVLN251WUVuTXgvNUJxQlNiTFQ3cmhkdUM0OVRCZU1iOVBIZFhzVGxTVk5ZZWZyMWRHaWRyNGoweFZCUUxiMXJrbkRBYmRXRHpLZnZuYXlLTzhGcndlN0h4ODQzTUcvckorYzBYcnVVdmJmVlRDSExpSVdoTTdvTkRoTDh4b2I2eFVvOUtMS2NTTCtJdFlzTzMvOVdiOFE5R2pzcUw0RlhzRGNHMVNhWWg3S3BmdU1tT2l4cXpKWk8ybklpY1BZUmcxSTJTdWlVZllPNzB0bWRIY2JsK2tTUW1TWXQ3cnE0dmlJTGcyR3gzajlySVR1V1RqYmFVYVNTUXhnT21NU0h1eXpNQUMiLCJNSUlEUGpDQ0FpYWdBd0lCQWdJVVh6ZWlFREpFT1R0MTRGNW4wbzZaZi9iQndpVXdEUVlKS29aSWh2Y05BUUVOQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU1aNi9UeE04cklUK0Vhb1B2Rzgxb250TU9vLzJtUTJSQndKSFMwUVpjeFZhTlh2bDEyTFVoQlo1TG1pQlNjSVpkMVJueDFvZDU4NWgrL2RoSzdoRW03SkFBTGtLS3RzMWZPNTNLR05MWnVqejVoM3dHbmNyNGh5S0YwRzc0Yi9VM0s5aEU1bUdORDZ6cVljaENSQUhmcllNWVJERjRZTDBYNEQ1bkdkeHZwcEF5Nm5rRW10V21NbndPM2kwVEF1Y3NyYkU0ODVIdkdNNHIwVnBnVmRKcHZnUWppVEpDVElxK0QzNWh3dFQ4UURJdituR3ZwY3lpNXdjSWZDa3p5Q2ltSnVraFl5NktvcU5NS1FFZHBOaVNPdld5RE1UTXQxYndDdkV6cHc5MXUrbXNVdDRyajBlZm5POXMwWk93ZHdNUkRuSDR4Z1VsNVpMd3JyUGtmQzEvMENBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUI4R0ExVWRJd1FZTUJhQUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUU13RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCRFFVQUE0SUJBUUMzSVcvc2dCOXBaOGFwSk5qeHVHb1grRmtJTGtzMHdNTnJkWEwvY29VdnNyaHpzdmw2bWVQTXJiR0pCeUoxWG5xdUI1c2djUkVORnhkUUZtYTNtaW84VXBmMW93TTFacmVYckowbUFERzJCcGxxYkpueGl5WWErUjExcmVJRlRXZUloTU5jWktzRFpyRkF5UHVGakNXU1F2Sm1OV2U5bUZSWUZnTmhYSktrWEliNUgxWGdFRGx3aWVkWVJNN1ZvbEJObGxkNnBSRktsWDh1c3Q2T1RNT2VBRGwyeE5GMG0xTFRoU2RldVh2RHlDMWc5K0lMZnozUzZPSVlnYzNpcm9SY0ZEMzU0ZzdyS2Z1NjdxRkF3OWdDNHlpMHhCVFByWTk1cmg0L0hxYVVZQ0EvTDhsZFJrNkg3WGszNUQrV1ZwbXEyU2gveFQ1SGlGdWhmNHdKYjBiSyJdLCJpY29uIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwiaWNvbkRhcmsiOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJwcm92aWRlckxvZ29MaWdodCI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsInByb3ZpZGVyTG9nb0RhcmsiOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0ifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMi0yMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzYsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWXViaUtleSA1IFNlcmllcyB3aXRoIExpZ2h0bmluZyAoRW50ZXJwcmlzZSBQcm9maWxlKSIsImNlcnRpZmljYXRlTnVtYmVyIjoiVTJGMTAwMDIwMjQxMjIyMDAzIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMTItMjIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTAyLTA2In0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiMzQyOTM4ZTBlZTY1ZDUxZWUwNTYxMWMyODIwMmM2NzRkZmQ1YzlkZSIsImQ1M2VkZDIzYWRiNmI1YjRhZGQxMDJmYjRhZDFiNDAzN2ZmNGE3YWUiLCJhMTgzMzUzMmU4MWJjY2M3OTI0NWZhNmY1Mjk2YzQ4MTVkZmY1OTljIiwiZjVmNmVlZjcyOWEwMjY0NzUyMDUzYzIyZTg5ZmMzMDI4ZjE1MzZjMSJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyIzNDI5MzhlMGVlNjVkNTFlZTA1NjExYzI4MjAyYzY3NGRmZDVjOWRlIiwiZDUzZWRkMjNhZGI2YjViNGFkZDEwMmZiNGFkMWI0MDM3ZmY0YTdhZSIsImExODMzNTMyZTgxYmNjYzc5MjQ1ZmE2ZjUyOTZjNDgxNWRmZjU5OWMiLCJmNWY2ZWVmNzI5YTAyNjQ3NTIwNTNjMjJlODlmYzMwMjhmMTUzNmMxIl0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IDUgRklQUyBTZXJpZXMgd2l0aCBMaWdodG5pbmcifSwiZGVzY3JpcHRpb24iOiJZdWJpS2V5IDUgRklQUyBTZXJpZXMgd2l0aCBMaWdodG5pbmciLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI4NzA3LCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50IiwicmVtb3RlX2hhbmRsZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURIakNDQWdhZ0F3SUJBZ0lFRzBCVDl6QU5CZ2txaGtpRzl3MEJBUXNGQURBdU1Td3dLZ1lEVlFRREV5TlpkV0pwWTI4Z1ZUSkdJRkp2YjNRZ1EwRWdVMlZ5YVdGc0lEUTFOekl3TURZek1UQWdGdzB4TkRBNE1ERXdNREF3TURCYUdBOHlNRFV3TURrd05EQXdNREF3TUZvd0xqRXNNQ29HQTFVRUF4TWpXWFZpYVdOdklGVXlSaUJTYjI5MElFTkJJRk5sY21saGJDQTBOVGN5TURBMk16RXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFDL2p3WXVoQlZscWFpWVdFTXNyV0Zpc2dKK1B0TTkxZVNycEk0VEs3VTUzbXdDSWF3U0RIeTh2VW1rNU4yS0FqOWFidlQ5TlA1U01TMWhRaTN1c3hvWUdvblhRZ2ZPNlpYeVVBOWErS0FrcWRGbkJubHl1Z1NlQ09lcDhFZFpGZnNhUkZ0TWprd3o1R2N6MlB5NHZJWXZDZE1IUHR3YXowYlZ1em5ldWVJRXo2VG5RakU2M1JkdDJ6YnduZWJ3VEc1WnliZVdTd2J6eStCSjM0WkhjVWhQQVk4OXlKUVh1RTBJek1aRmNFQmJQTlJiV0VDUktnanEvL3FUOW5tRE9GVmxTUkN0MndpcVBTemx1d24rditzdVFFQnNValRHTUVkMjV0S1hYVGtOVzIxd0lXYnhlU3lVb1RYd0x2R1M2eGx3UVNnTnBrMnFYWXdmOGlYZzdWV1pBZ01CQUFHalFqQkFNQjBHQTFVZERnUVdCQlFnSXZ6MGJOR0poamdwVG9rc3lLcFA5eHY5b0RBUEJnTlZIUk1FQ0RBR0FRSC9BZ0VBTUE0R0ExVWREd0VCL3dRRUF3SUJCakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBanZqdU9NRFNhK0pYRkNMeUJLc3ljWHRCVlpzSjRVZTNMYmFFc1BZNE1ZTi9oSVE1Wk01cDdFamZjbk1HNEN0WWtOc2ZOSGMwQWhCTGRxNDVyblQ4N3EvNk8zdlVFdE5NYWZiaFU2a3RoWDdZKzlYRk45TnBtWXhyK2VrVlk1eE94aThoOUpESWdvTVA0VkIxdVMwYXVuTDFJR3FyTm9vTDltbUZuTDJrTFZWZWU2L1ZSNkM1K0tTVENNQ1dwcE11SklaSUkydjlvNGRrb1o4WTdRUmpRbExmWXpkM3FHdEtidzd4YUYxVXNHLzV4VWIvQnR3YjJYMmc0SW5waUIveXQvM0NwUVhwaVdYL0s0bUJ2VUtpR24wNVpzcWVZMWd4NGcweExCcWNVOXBzbXlQeksrVnNndzJqZVJRNUpsS0R5cUUwaGViZkMxdHZGdTBDQ3JKRmN3PT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZkNBWUFBQUNHVnMrTUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFIWVlBQUIyR0FWMmlFNEVBQUFiTlNVUkJWRmhIcFZkN1ROVjFGRC8zZDU5d2VRU0lnUzlBUUFYY0ZMQVFaaTlmcGVWejF0WS9XVFpyNVd4cGM3VzVrbkxhNWpJM1o4NXNyUzJuTTJzanRXd1pTN0lVSDRINHhDbkVReDREQVpGNzRWN3VzODg1djkvbEluQnZWSi9CNFB2OW51LzVudS81bnZNNTU2ZnpBL1F2MEhiL0lyWDNWRktQbzQ1Y25tNGluVUlXWXdMRlJtWlFVdXdqRkcvTjFpUkhoMUVaME5SVlJ1ZHF0MUJkKzJuU0t5Uy9PaHlzMCtsazNlLzNrUTlxdkQ0WlV0YTRWVlNVdVkwZWlweWlUaEFmb2NvT1JWZ0R1dXczcUtSaUFkM3JiY0V0alRqWUlvZjZXYUhzQ216VlBXQ014K2NnaDh0THFXTUthTVdzVWpMcW8yUnRKSVEwb096bWVycFF1NGVzWmdzT05rR3hIN2Qwa2R2VFQxN3M0T01VN1ZJOFpoamdHYU0rQXE5aUVOdThQaWYxdWR6MDdNd3ZLV2Y4R2xWb0NFWTA0UEM1V2RUYVhZRmJSOHZOdkw1KzNLZ2ZiNXhOTXlhOVJhbUppeW5hTWxHVFZ0RmxyNmJhOXUrcHFuRVg0dU11UlJnalNZRWhyTjd1dEZGZTZscWFsN05ma3c1aW1BR0h5blBwYms4Vm1ZMHhzdG5wdGxGQ1ZDWXR6VHVCTjgzUXBNTGpUdGV2ZFB6U1VuSjdlOG1ranhaMzlmWGJLRGZsZFpxYnZVK1RVZ0duQlZGNmZRMmlQSGc0VzE2VVdVd3Z6YmsxNnNNWkUrUG4wcHZ6N0pTZXVBeWVzOGxjcENtYUt1by9wK3FXcjJVY3dJQUhXcnZQMFlFemhYQXRMQWJzc0hocDdpR2FtdnlpalA4cnlxclhVV1g5WG9vd3h5QXVmTkJycDQzUE9CRlhabGtmOE1EUmlxY3B5b3dBd3B1ejJ4K2ZXdnovRHRkZTlzbXN6eWd0Y1I2QzF3YmR6Qmw2T2xxNVdOWVk0b0dhdGhKTXJrVEV4MGpBUlNIQVZzKzVyWWtRTlhiK1FnZlBMc1E2Z1h5SW5zcmVRZm1wbTdSVkZZZkw4Nm4xZmlVT2tZdlNoa1VQeHZidWt6b3k2SzFpaE0xaG8zWHpXNkV2U2ZYQStkcGlXR2FXZCtkb1h6THptR3dLWUZMQ0FzUkFsUEJBaE1sQ0ZYVTd0QlVWUHI4SGdWY0pIV3ErRjAwcGxyK0RNVGRyUDR6dnhZMTFrTk1oeFQrU2VUR2crZDRWNUxRSml0eVVHSk5COFZGWnNqZ1lCWk0vSUkvWENUa2owcXlET3BGMkFWUTE3Q0lqVXAvRG5UMVVrTDVGNWdkaitzUzF3ZzFnRTNnaWdtNjBmQ1h6U25QWGJ5QVBiSVh2K0lEcEUxNlRoYUhJUzlza3lobG1NRTVGM2NmcUFLaHEyQzBFNVBIMWdZYVhhTFBEa1pHMEhESk9uS1dIcDUxSTB6NVNPdXg4ZTFXQXVaemRIUXJUa3A4VG1qWG9JK2xhMHdHWnN6dWJxYk8zaWZRNkEvVzd2VlNZc1YzbVIwSkt3a0tjNFdIaUJrbVI4STNDQ2dJODdvT0w0cXpUNVArUlVKQmVqRU9nQVBLOGhZUHphdE0rZUlUcDJJTzl5VFFtZXJvbVBSeHgxcXhBY3NpbGUvdWJTZUViY1dRR1lFQ2doY0xZMkh5S2pvZ2pIMjVoTXBqcFV2MU91Z2xpNGVoMmVSdzBPMzJiSmpreXVDZ056ZzB2emxZTVNpU3MwdW9vNE1HN2hNT2pDRWFYMXlGRTBuU3ZqQnp1VG5FcEs4Nlo4SW9xRkFJdWJ3OGtnOUFyRWFSRVdTWkkrakg0WGJwNmc5RTlFbkpUM29hUnpETitNVUpCUURIbjU2YThvVW1FQnVzT3hCcy9ONSt0SkViUGtBRkRqOFVHdk9zL0lXdmNTZ2xHQmh2UzcvRlRZZnBXR1lkRFk4ZlBBeFdTQTM1c1RDNHA0K0xtNEFhcUlvUGVRdGZ1Zks2SmgwWmh4bGJzVVhPU21YTmlmRDVaVEFreURvZmJiY2NseG5BOFdOQXF4Q2JSTnlraFh4UXBhRHc2N2ZYVVlic2lHMEtodHYyb2VJdmg4cmhRTVlPY0VBcVhHL2VJK3puZ09jNXl4cjhxODJJQU0xYy9GTEZPcGxxdTVlRlFYck1aekdjVkNqWWJMV0c1STRCVDFldVJybGJ4dE5PdE1pdERERWhMWElJeW5BQXZ1T0VXRTNYM05kQWZ0OTRWZ2FHNDJYSVF0MFpYNlBlQ0UvcVFGZTlySzZIeDdZVTUwS3ZIN2ZXNGZTK3E3S0tCSnhzZ2dCWDVwU0FHaDFqSXJWaDV6UTZ3M1JmYWFoQlhtL2FDYkNaVGpDVUZVVHlXWnFXOXA2Mk1qSlBYVnFPclBnTU80TnY3NEdrZitvd2Z0TlZCRFFuakZKcUhTdzE3cFh2aFdXNUtacWUvUTQ5Ti9VU1RDQVZXb1FYRklIQkhYWGUzRlByVURzdUdEbXRGL2hIS1RIcGVreGhpQU9QSStTSnE2UzZIRjRJOVlXemtCSlRvNDZpVU16V3A4UGlyL1JpZHVMeEtZc1Nrc1Y4dkxsT1F2aEdYMllsUjBPQmhCakMrdS9nRWN2WTBBcEs3WWs0MU54alBTUW5XRkhURjY2VXJqZ2V2QjhDdTVhK2wydllTUlB0dVZEbzczaGhkTVNIblVYN3RUanNWWkd4QWwvV3B0aU9JRVExZ25MMjltWDYvdFIxdG1sa1lqOFc0WCtDU2pXY1VER1kxTnBTL0M3aFNLcWlNTE0vbDJRbVNXWjczRGR6K2dpbzhCQ0VOWVBRNDZxbmt6d1hVYnF2Qmt4alVRc1dmWkZnYnVvM3JBZit3TjdqT085MCt5bng0UGkzTCswbllMMVNjaERVZ0FQNGdQVi83SWQxcSsxSFNobXVHa0lxV1JQZ3l4TUZxUDhIZmpUbmpYd1k1YlFmYkpjdDZPSXpLZ01Ib3RGL0hlMWVnc2F4SFNxRzZ3ZmRtUTV4OE55VEZGcUJjcDJpU293SFIzeWs1KzM2aEY3dlhBQUFBQUVsRlRrU3VRbUNDIn0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIzLTAyLTA4In1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMy0wMi0wOCJ9LHsiYWFndWlkIjoiMmMwZGY4MzItOTJkZS00YmUxLTg0MTItODhhOGYwNzRkZjRhIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiIyYzBkZjgzMi05MmRlLTRiZTEtODQxMi04OGE4ZjA3NGRmNGEiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiRmVpdGlhbiBGSURPIFNtYXJ0IENhcmQifSwiZGVzY3JpcHRpb24iOiJGZWl0aWFuIEZJRE8gU21hcnQgQ2FyZCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUIyRENDQVg2Z0F3SUJBZ0lRRlo5N3dzMkpHUEVvYTVOSStwOHoxakFLQmdncWhrak9QUVFEQWpCTE1Rc3dDUVlEVlFRR0V3SkRUakVkTUJzR0ExVUVDZ3dVUm1WcGRHbGhiaUJVWldOb2JtOXNiMmRwWlhNeEhUQWJCZ05WQkFNTUZFWmxhWFJwWVc0Z1JrbEVUeUJTYjI5MElFTkJNQ0FYRFRFNE1EUXdNVEF3TURBd01Gb1lEekl3TkRnd016TXhNak0xT1RVNVdqQkxNUXN3Q1FZRFZRUUdFd0pEVGpFZE1Cc0dBMVVFQ2d3VVJtVnBkR2xoYmlCVVpXTm9ibTlzYjJkcFpYTXhIVEFiQmdOVkJBTU1GRVpsYVhScFlXNGdSa2xFVHlCU2IyOTBJRU5CTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFbmZBS2Jqdk1YMUV5MWI2aytXUVFkTlZNdDlKZ0dXeUozUHZNNEJTSzVYcVRmbysrMG9Bai80dG53eUlMMEhGQlI5U3Qra3RqcVNYRGZqaVhBdXJzODZOQ01FQXdIUVlEVlIwT0JCWUVGTkdobUUyQmY4TzVhL1lIWjcxUUV2NlFSZkZVTUE4R0ExVWRFd0VCL3dRRk1BTUJBZjh3RGdZRFZSMFBBUUgvQkFRREFnRUdNQW9HQ0NxR1NNNDlCQU1DQTBnQU1FVUNJUUMzc1QxbEJqR2VGK3hLVHB6VjFLWVUyY2thaFRkNG1MSnl6WU9oYUh2NGlnSWdEMkpZa2Z5SDVRNEJwbzhycm9PMEl0N29ZakYya2d5L2VTWjNVOUdsYXF3PSIsIk1JSUJmakNDQVNXZ0F3SUJBZ0lCQVRBS0JnZ3Foa2pPUFFRREFqQVhNUlV3RXdZRFZRUUREQXhHVkNCR1NVUlBJREF5TURBd0lCY05NVFl3TlRBeE1EQXdNREF3V2hnUE1qQTFNREExTURFd01EQXdNREJhTUJjeEZUQVRCZ05WQkFNTURFWlVJRVpKUkU4Z01ESXdNREJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCTkJtclJxVk94enRUSlZOMTl2dGRxY0w3dEtRZW9sMm5uTTIveVlndmtzWm5yNTBTS2JWZ0lFa3pIUVZPdTgwTFZFRTNsVmhlTzFIamdneEFsVDZvNFdqWURCZU1CMEdBMVVkRGdRV0JCUkpGV1F0MWJ2RzNqTTZYZ21WL0ljak50Ty9DekFmQmdOVkhTTUVHREFXZ0JSSkZXUXQxYnZHM2pNNlhnbVYvSWNqTnRPL0N6QU1CZ05WSFJNRUJUQURBUUgvTUE0R0ExVWREd0VCL3dRRUF3SUJCakFLQmdncWhrak9QUVFEQWdOSEFEQkVBaUF3ZlBxZ0lXSVVCK1FCQmFWR3NkSHkwczVSTXhsa3pwU1gvelN5VFptVXBRSWdCMndKNm5aUk04b1gvbkE0M1JoNlNKb3ZNMlh3Q0NILy8rTGlyQkFiQjBNPSIsIk1JSUIyRENDQVg2Z0F3SUJBZ0lRR0JVclFiZERybTIwRlpuRHNYMkNCVEFLQmdncWhrak9QUVFEQWpCTE1Rc3dDUVlEVlFRR0V3SlZVekVkTUJzR0ExVUVDZ3dVUm1WcGRHbGhiaUJVWldOb2JtOXNiMmRwWlhNeEhUQWJCZ05WQkFNTUZFWmxhWFJwWVc0Z1JrbEVUeUJTYjI5MElFTkJNQ0FYRFRFNE1EUXdNVEF3TURBd01Gb1lEekl3TkRnd016TXhNak0xT1RVNVdqQkxNUXN3Q1FZRFZRUUdFd0pWVXpFZE1Cc0dBMVVFQ2d3VVJtVnBkR2xoYmlCVVpXTm9ibTlzYjJkcFpYTXhIVEFiQmdOVkJBTU1GRVpsYVhScFlXNGdSa2xFVHlCU2IyOTBJRU5CTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFc0ZZRUVoaUp1cXFuTWdRalNpaXZCalY3REdDVGY0WEJCSC9CN3V2WnNLeFhTaEYwTDh1RElTV1V2Y0V4aXhSczZnQjNvbGRTcmpveDZMOFQ5NE5PenFOQ01FQXdIUVlEVlIwT0JCWUVGRXU5aHlZUnJSeUp6d1JZdm5EU0NJeHJGaU8zTUE4R0ExVWRFd0VCL3dRRk1BTUJBZjh3RGdZRFZSMFBBUUgvQkFRREFnRUdNQW9HQ0NxR1NNNDlCQU1DQTBnQU1FVUNJREhTYjJtYk5EQVVOWHZwUFUwb1dLZU55ZTBmUTJsOUQwMUFSMitzTFpkaEFpRUFvM3d6Njg0SUZNVnNDQ1JtdUpxeEg2RlFSRVNOcWV6dW8xRStLa0d4V3VNPSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFGQUFBQUFVQ0FNQUFBQXRCa3JsQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUJIWnBWRmgwV0UxTU9tTnZiUzVoWkc5aVpTNTRiWEFBQUFBQUFEdy9lSEJoWTJ0bGRDQmlaV2RwYmowaTc3dS9JaUJwWkQwaVZ6Vk5NRTF3UTJWb2FVaDZjbVZUZWs1VVkzcHJZemxrSWo4K0lEeDRPbmh0Y0cxbGRHRWdlRzFzYm5NNmVEMGlZV1J2WW1VNmJuTTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlrRmtiMkpsSUZoTlVDQkRiM0psSURVdU5pMWpNREUwSURjNUxqRTFOamM1Tnl3Z01qQXhOQzh3T0M4eU1DMHdPVG8xTXpvd01pQWdJQ0FnSUNBZ0lqNGdQSEprWmpwU1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJajRnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJZ2VHMXNibk02ZUcxd1BTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGh0Ykc1ek9uQm9iM1J2YzJodmNEMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzl3YUc5MGIzTm9iM0F2TVM0d0x5SWdlRzFzYm5NNmVHMXdUVTA5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5dGJTOGlJSGh0Ykc1ek9uTjBVbVZtUFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdmMxUjVjR1V2VW1WemIzVnlZMlZTWldZaklpQjRiWEE2UTNKbFlYUnZjbFJ2YjJ3OUlrRmtiMkpsSUZCb2IzUnZjMmh2Y0NCRFF5QXlNREUwSUNoTllXTnBiblJ2YzJncElpQjRiWEE2UTNKbFlYUmxSR0YwWlQwaU1qQXhOaTB4TWkwek1GUXhORG96TXpvd09Dc3dPRG93TUNJZ2VHMXdPazF2WkdsbWVVUmhkR1U5SWpJd01UWXRNVEl0TXpCVU1EYzZNekU2TlRrck1EZzZNREFpSUhodGNEcE5aWFJoWkdGMFlVUmhkR1U5SWpJd01UWXRNVEl0TXpCVU1EYzZNekU2TlRrck1EZzZNREFpSUdSak9tWnZjbTFoZEQwaWFXMWhaMlV2Y0c1bklpQndhRzkwYjNOb2IzQTZTR2x6ZEc5eWVUMGlNakF4TmkweE1pMHpNRlF4TlRvek1Eb3lOeXN3T0Rvd01DWWplRGs3NXBhSDVMdTJJT2FjcXVhZ2grbWltQzB4SU9XM3N1YUprK1c4Z0NZamVFRTdJaUI0YlhCTlRUcEpibk4wWVc1alpVbEVQU0o0YlhBdWFXbGtPakpGTnpGQ1JrWkRRelkzUmpFeFJUWTVOemhFUVRsRFFrSTJORFl6Umprd0lpQjRiWEJOVFRwRWIyTjFiV1Z1ZEVsRVBTSjRiWEF1Wkdsa09qSkZOekZDUmtaRVF6WTNSakV4UlRZNU56aEVRVGxEUWtJMk5EWXpSamt3SWo0Z1BIaHRjRTFOT2tSbGNtbDJaV1JHY205dElITjBVbVZtT21sdWMzUmhibU5sU1VROUluaHRjQzVwYVdRNk1rVTNNVUpHUmtGRE5qZEdNVEZGTmprM09FUkJPVU5DUWpZME5qTkdPVEFpSUhOMFVtVm1PbVJ2WTNWdFpXNTBTVVE5SW5odGNDNWthV1E2TWtVM01VSkdSa0pETmpkR01URkZOamszT0VSQk9VTkNRalkwTmpOR09UQWlMejRnUEM5eVpHWTZSR1Z6WTNKcGNIUnBiMjQrSUR3dmNtUm1PbEpFUmo0Z1BDOTRPbmh0Y0cxbGRHRStJRHcvZUhCaFkydGxkQ0JsYm1ROUluSWlQejQ3N0pYRkFBQUFZRkJNVkVYLy8vOEVWcUlYWmF2RzJPb3FjTEcyek9Pa3d0MEJTSnRxbGNYVjR1K2F1dGxXaGJ6azdQVUFNWTlIY3JLanROYnE4ZmVBbDhhQm9zeno5dnBkanNHR3F0RjNuOHVUc05TWnBjNkpzTlQ1K3YweFlLbnU4UGZmNS9MNDhmZy9mcmljekpnWUFBQURBRWxFUVZSNDJrUlVDWmJESUFqRlhaT1kxVGF0TmMzOWJ6a3NTWWMzcjRNRTRmTUJBYUQ2emw4eS85VE9nZXQ4ZDVqZk43OGJ3TS9kRENScFI1MjF6WGZvakhKMDVJSXloQkFVU1ZBT05kR3pCWXQyZjdLRnJma0phQWtIaDlGWmhjRFhIUmtUS285TUxpaEdhYXZJbW5WM3F5RVgwRXByZ3ovNER3VUQ3a0NIUm5kOFFGTjQzR280VVZtRERnemE0dzI3b2l6ZEEyK2NLK3V1VXBqam8yK3h3Yy80Mlc1MHg1TEdZZURCc1IwSFZJeDV4OGlGNjBDYmxiVEVFa0ZyMjdiTkRCVVZTcTFPS1ZQYkU2MmIzRUg4RnFCZzVPT09FdWMydDhaSmlxTU91R3ArY0tqZzd3VkdjZW96cU40cHhnVlBRa2pGWWdiVkpLRFVoRENqWXJhd1A1cTRFVGdDOWZJTVJIdGl0cFFjQ3ZKT0VMY2JNc1FnbmNpUmtsanB5UWp2RzQ0anFCVUVURmlCaTFQRUl5ZWtPenNXK1R5NWNMSG9zNVIrZE1TMUx0U1N4ZjNnUUhjelIyQ0k0Z01OcFc0SVJBMVFNYTZ0SjQrQzZ1SHVHRThtTkRJeUZxZy9PUC9NTVV1ZVM2SXE4UzkwZEFlQkpTRXkvcUtrSytCTnd6OGNZWTRqYjVKNnU0aVdDSTJCMVo1NkxXNWtFYzRoa2RNcHN2VUM1NTg1U1gwUXViY2dOcXlmZ0RGRWNUdCs0MC8wUzVOeDB3YUN3M09La2NPYkE1SW4wQVlwMDFwamp3Mm42MjZVRGp0SHdhMjhpSHVUS3F0cnYrcmVXNDFOWjZpR2xyN3V1TEpDZmtGdGN0Y0cwNHNnbTFlTlMrWmFEbnBhVEVyR295WDVKSzJpTXo4eHMwbk93V0djUERONDlxYUNkNGJ6Sm96RFptL2FCSytFb3pMdytYaE5CaVl3SGYwc2lPdTFYUGtHL3pLd3ZxWUtjZlN3REVjSC9vVWUwN2VzL1dROHJJeWcyRE9Yajh0amtaZHVEQi9iOGh6RGxsTU1PQ1M1QkVuZDUzNGY4dGkzVVpjNGtNczN4THlhZk1Tc0poZEc4WFBxak5rNXRBZ08yNWZlS0NoblZkRGovSjBGTWtPc1UveE1CdjB3RmhZZUVHZlZIMTNmdURVMHlERkxhNGZjN1JuV0hCZnVURlYydEVtTndhZGM3YWMzVVkyamZCbDdIVDM2ZmUzNGlRTzVtTkNGRkJXMDdLalBncWhPTFUwMXZaOFB1ZVoySkNsRlpOOGprVXM2OXVrYTllUHA2K0VmTDRBRjUrTnl3U2Jpckh0Y0I4TWwvZ2t3QUVqa0s2NEtqSFBlQUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzFfUFJFIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiIyYzBkZjgzMjkyZGU0YmUxODQxMjg4YThmMDc0ZGY0YSIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlfSwibWF4TXNnU2l6ZSI6MTAyNCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6NiwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjo5NiwidHJhbnNwb3J0cyI6WyJuZmMiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fV19fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiTk9UX0ZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjAtMDQtMjQifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIwLTA0LTI0In0seyJhYWd1aWQiOiI1OWY4NWZlNy1mYWE1LTRjOTItOWY1Mi02OTdiOWQ0ZDU0NzMiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjU5Zjg1ZmU3LWZhYTUtNGM5Mi05ZjUyLTY5N2I5ZDRkNTQ3MyIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJSU0EgQXV0aGVudGljYXRvciA0IGZvciBBbmRyb2lkIn0sImRlc2NyaXB0aW9uIjoiUlNBIEF1dGhlbnRpY2F0b3IgNCBmb3IgQW5kcm9pZCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJleWVwcmludF9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImxvY2F0aW9uX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmFjZXByaW50X2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVsZXNzIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDY0RDQ0FoT2dBd0lCQWdJRVRlMTJXVEFNQmdncWhrak9QUVFEQWdVQU1JR1lNUXN3Q1FZRFZRUUdFd0pWVXpFTE1Ba0dBMVVFQ0JNQ1RVRXhFekFSQmdOVkJBY1RDa0oxY214cGJtZDBiMjR4R1RBWEJnTlZCQW9URUZKVFFTQlRaV04xY21sMGVTQk1URU14RXpBUkJnTlZCQXNUQ2s5d1pYSmhkR2x2Ym5NeE56QTFCZ05WQkFNVExsSlRRU0JUYjJaMGQyRnlaUzFDWVhObFpDQkdTVVJQSUVGMWRHaGxiblJwWTJGMGIzSnpJRkp2YjNRZ1EwRXdJQmNOTWpRd05ETXdNVGd4T0RNd1doZ1BNakExTkRBME16QXhPREU0TXpCYU1JR1lNUXN3Q1FZRFZRUUdFd0pWVXpFTE1Ba0dBMVVFQ0JNQ1RVRXhFekFSQmdOVkJBY1RDa0oxY214cGJtZDBiMjR4R1RBWEJnTlZCQW9URUZKVFFTQlRaV04xY21sMGVTQk1URU14RXpBUkJnTlZCQXNUQ2s5d1pYSmhkR2x2Ym5NeE56QTFCZ05WQkFNVExsSlRRU0JUYjJaMGQyRnlaUzFDWVhObFpDQkdTVVJQSUVGMWRHaGxiblJwWTJGMGIzSnpJRkp2YjNRZ1EwRXdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUW5NdlloZmU2N2VPMTBTdy9temhxOHlETTVlcW5KaHl6UEVRMUJkdmNiR0dhTDF1MmhncmI4b05uTHdabHMva2loNGxteUZhS0xKNHp1NFBic0pwZ0lvMFV3UXpBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQk1BNEdBMVVkRHdFQi93UUVBd0lCQmpBZEJnTlZIUTRFRmdRVXRJTVRTQ056SWlRS1gzellkWm8rNFlIcEtIRXdEQVlJS29aSXpqMEVBd0lGQUFOSkFEQkdBaUVBejU1djdGaWFtWHhGdHE2Znd5aG9xTGorcHRDNVRtbFhFdFA1RmZQYk9wOENJUUNMMUs0UnQ5bDJvV3Q0VmtQaklUNjAzZm9GR0hWa3VSenJ1VUFtNzAyRTN3PT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSHNBQUFBdkNBWUFBQUREMkxXZUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFDeE1BQUFzVEFRQ2FuQmdBQUFBVGRFVllkRk52Wm5SM1lYSmxBRWRKVFZBZ01pNDRMamd4Z2N0aUFBQWNIMGxFUVZSNFhzVmNpWHRXeGJuM2orbXR5cG9RRXJJWlpSRkJGS3U0VkcydFZXbjE2bE9mZWl0WWJkVmJiYXRkckxidXl1SkdyVW9yZGFHVjdCdUJFUFlJQ0dRaGdaQ3dFN0oveVh2ZjMrK2RtWE8rc09TTGliM3ZrL2xtenB5WmQ5NTlsbk5PTHBJaEVTUmtBWkl1dmg0TURTVWo0WlgrRExyQi9QV29JTjdQbHhXSTA1V1NBRzFBaDcrdEVLNEhZNVVBZHhscWg5MysycUI0Z01yUU9VbzlicCtUbG9IQWgvMkNGMDI4OExtRFlaZXB3a1hET3cyNUlZY3I2MnVEb2lFbVpZaDVFdG9CbDE4SUJyU0xLVEhlUDVSZEdwUkVWSGNlYVhpV2dsQmRSY1NyNHgzSkc4VVl3ZU1qdUlMeDQ1TUM2eDNOVUx5WGxZTFA0L3dadWJIK0tVS1NzcTA4Q2dRY09JN0J3RmQ1ZkY2NDNwdWlIaW1NaGNhdW1lL0hYSCtpNnhnZVZtSkVTd1RYRUJtTCtIRUNCZjJXNDRhMlo2NmdPY3hzN0JERHFVQ2EzRmdKMXNSb0R4Q3JTeUxCUzlJb081ZnNMd1FXeGgxeTl0WGtrYVNLTExSRDVoUnE0SW5UZk1oWUkzNk1oM2J4cHVjQjE0dkE1dWltNDBWZFRXaTROanE4TUJXWXg1Uk9RTm5UaFNZeFdoeU5nZitVSXMrRkFmampDZzdnQ0dBV0wzTklPQWhvaWVnTW9CWEVtYUp1NHVBODJ4TURzSUg2VGh5WHJ2MTdwYnRoMzRpcHAzRS9jN1R2YW1xVTB3MzdOVFZLb3FOREJvSGFLeUVBeXVkZzVMeWc3V05HbE1DMUtpWXc3TEtCOW5acCsreHoyZnZDODdKenljOWt5MzMzU08yaUc2VG1waHRrNHgyM3kvYWYzaS8xVC81U21sY3VsOFBsWmRKOStDRDdlb015eFdBMFh4T24rV3VDSWpRNmJVNTJwQnJOUGtIRG10dW9KcHZvSG5wRmRMQ0tGakY2Mmk1Q0gyOUZTSjdkcG5lV1MxSGF4VktTbTNuQlZNdzhJMHJaMDZRMEowUEtjcWN6TDgvT2xNcjVzMlQza29mbDRLZHJaV0N3SCtNNm9rY0czeTVTaUFHdmNkSGRJeTBmcjZaQ1MyZWtrNGJTdk9sU25LTjBhQTRhakxaTUxXZEtXYjdTakh1Z1VXbXRYakJYOXZ6bVYzSjgwMFpGRnZHZk1vRWpnaWx5WUdCQVpicVM0MVhmdkVEVDFiSmgwWFd5Y2RHMVVuM05mR24rYUpVT2EyUDdvV0hVS0I4cC9VTDJ2ZmlTTkM1L1V3MUhPWGVHUDlySUUrWnNHRi9jc3BwV3JwU3l0TWtVeW9WU3VVdDJIVE9BdkN3cHlwbnVoSjhsSmRPblNzbTBTNlc4SUYrYVhuNUoranJhT05ySVlCWWN3aG9JMWIrQi9pN3ArT0lMcVZwd2hSUk5tMHpGbGVWbUJSbzRKbEp1T3Vrcm13RmFqRFlxWGE4cmNyS28rT0tNS1ZJNDdSS3BtRHRIbWxhOEpnT25UbExJWGpaakJsVlF6Nkdqc243aGxWS2FtU1psV1dxVWtJZlNYSktUSnNXWlUyWER6WXVrOS9CaGJXeWNXdEF5M2x0V3ZDbjF2MWdpZTUvL25SeXJYczg2M2g0bGdSY1pRa01hSVZCbHIzcGJpcWRlVEEvMWlaNHlMRUZZd2F2UGtTRFFvbHhsa0o2dXdzNVdKdE1teU1ZYkZrbDc4Yjh3MkFVQjVFUVIzT2pzN1R3cGU1NTlSa296SnFnM0s3NHdYam85RjRZWDZySkJPNVNlM0FhS0w4bWJJYVY2WFpLVGJia0t2K3JLT1hKaTYyYU9GZm5ZMktIMWcvZWxaT0xGVXB5bk5LaUNJWThTbFEyTlUya3NuUHB0T2Z6NXY2MnhHOVpQSzRjK2VsOWEzbm1IU3U5cFA4VDcvdDVvUUpWOWJqanc5a29wVHA5QTRVQklDTWNRRU1OZ1hub1FLQlFlQ1RLcTgvWHdLdVJrVG9WWm5xTjlnVE16UTZwbTVVckxYMWVSOElqeXlQZ0lyQWRqL2JhT1VwUEh2RnVVcGxFQzBVUnhWV1NESGxXeVUxeFJ0dFpuVEpKQ3BSK3BhTW9sS3N4THlBKzhHSjdrNlNKUGFnendlT1I3Ly9nc3h4czFPQVVFaVBFejBOZXZYajJYaG01R1pWRUZNcXhRV2tGSDBZd3A2Z0RYUzJLdzEzVlZZL084OS9kSTU0NHZwYSt0amFIZHhySjdvNEVSbFEwbE13em02VHlYcnhZNWZiS3NtM3lwRkUrR0FMOGRCQmxQVUFRRk8vVlNlbkVoaEsvS3FLQjNtNEtLRWI0MEtwVGx6NUNPd21JM3FrS2czK1k2NHpmYUhyV3RlcGZLUW9pMmFPR0VwZEVEaHJRdS9kdFNlZldWc3VzSlhZaXRXQ2tIUC90RWpoWitJWWMrK1ZpYTMxb2h1NTU1V2piZWZZZlNNSU8wQXhlVURCN0xaMS9HRUc0MHBManhjbzBzYzk3Ry9pZ2JNMjFyMXVoVU0xSEhtY0hwcGp4UERTczdMY2lpUEF1T3BEeE1ueUJIMXExakh4ZzNrQ0drbTRKdFVVYXFNSWpMUmdNakt0c3Job1NwWW5ZLytZU2NXRjhqSGVYbGNxeXNYSTZVRjUrVmpsYVVTRWRaa2JTdVcwdFBxVkxodzBqOHZBbWNESzBPYjlYTWZCbm9QdTE0QUdOR1F4QWVmNVRSL2w2cG1GT2docWVHb2taSW11RFJMcStjVnlEdG4vOVRoanA3WkZDOWFTaWh1R0Fvc0JMTkV3bGR3ZmYzeVVEUEdSazRjMXhPcnErVkw1OTZRaW9LY3FRNGJaSWNlTzl0Rzk5RG9PUDhBTnhvUmtwOWV4WWpQbW9XemlmUGxDV21EMVVzalV1TkUrc2FpNElxRXpXRW11c1hXQ2ZTNFdoeEdkQWhPYWtFL0tuQ3lNcUdJSlVZRUFKbE42MVl4dnVEYW5sSmduRkE1aUhjWWRDcTRScWVBNmE0ZUZLR0dkckpmS1o4OWV5dkErMld4ejNMQkhmd0g2dWw5REpNSTZaY1JweDhsTE9rOHFxWjB0VngyTkZrWGhEd2Nadm1GbmdPRjVYUHUzbzUyS2Y4dnMweVdyQWZXVHVidjNNQjIrUEhEUmpuLy9EYVR5aERUaFZxM09DNzVES05RbXFzVUhSRkxuWUdtTGMxVjk2UUh5b3VqbWdEcmdoZE5FYjRTUjFTbUxQVkF2M0t0U0JUR3AyeVV4VUVBQUxHR3ZORVhTMFZ6cWxCUXhrV0tKZ2VTdkp5cEhiQlBCbnM2WEVkRExjSnpTbEkvK29mZTlRTVQrbXBoRWRBU0JDZVJvMGpHcTdKdkNhMHB4eHMwck42RDc3czJ1RVBXNWhJUVg0N1l6U01ESWFEZVAxMGcycitERXJ0M2JmUkdHSGdtTFlneDBJWXFQSlJQa09uTVZVdXAwZzFDTXpsYUxQNWp1OVpkeUoycTNPWHJCQVo4bWdnSmMrR1FJdGR1RG53MWpJVkRGcFFTa2x3TG84bWtFQVVCdVhnM3orVTBuU2Q5LzFxRk1wVy9KVnpaa3JIaHZLQWc1bEQ1OUZ1V255bkdZZTI5M1FoWVJFMjJPY1hObENjZVRGQks0bUtQeTRCYUFnbVROODI4aUlWcGg5MEJQQjdZUzkranUyNkh0RnBybW9tb2xsRUs2ZWRyQXpaZXQ4OVVubnRWYVpzVGJnSEwwY3FtNVVuSGNVNmR6dGFBSEY2UWptcVNnbEdYcUNwVUgxQ0tOcS84ZzAzaGhLQmdrOHhDRUpqdlJHTEhEYWFPTjBwWmJPeFVOSDVXa002UWpqbXJzcVpPZEt5NmoyMjg3N2w4VmhJRzVRTnR5MmlsMkFxb1BGeFNsQnYwSVVnaGUzSG83SmRmd2YwWXJUU090YTZ0bEVMQUs2ak9oOFlMZ2huTlhMOWgvcGs1Mk1QVTdsY256aUZZZ3JDNHZiNGxrM1M5TmVWVWpobEVuYzNaVE0wU3VWTjVTSVdhZWZERHlxbWlBL2daSXJ4TkZwSUxZeXJvam52NUdYenFCRmdaRndZUEdIMjY1VGUzU04xOS95UWh3czJsOW1LdXJ3Z1YvWXZmODF4NUZhZ0xnRU5sTEQ1L3NWVXRqYytlamVpZzI2ek9zcEtJbUhvSHd3RzF3SDhCUnM1K2pXbmFqUXNlb095Wm01Y2xrY0ExOGlNaVFYQ3NTMWJwT2E2T1ZReXBpM1FDdU1zeXBvbWRYZDlUL3BWRG9PblQwcnBuRngzd0tON2ZuZzlqRmREK1liNWMrWDR4bzJHamo5ZUhnWTJUSFNkQ3FTMlFITUoyeVN2N0NUQUFnaDVHRnNMV29FNkpJclNxT05LdU83TzIzVmZPY21ZMHdURmxSU29JUzB6M0xZMGM4Z2NIc0RlNTMrdmN6VkN2ODUzMmljSVVYRlVYVDFidDAybmd4RjZwZHRGbEhrRGhDcWoyelpXZE44cDJqY1lFYXk5TmRleUx2Z2FYbnhCQ25WYlo4b3piNFZYRjA2K1dOby9XYU9OMVp3VC9kTDQyaHM4dkNyTnRvTWRXN1JteUxyTUNkTHczQjlWR09BSStFMm1FVTJPeGxIQW1KVnQ0K3ZBS3FSZzNSNFE0a2lSSTFTaDkrUnhLU3N3Ny9SNEVjb1p4di8rZ2ZWQmM5Y2V3S0wrSEsrclVhUElzWlZyckMvQ2VsRjJ1bFRQdjFLT1ZsWktRZzNLOTRIcGVMK05ZSmpnTkkvYSt6dzFZWVkyS0xpTHp1Wm1xZjN1VFR6Y3dRb2NZUnpURmxMVnJkZEp6MEY3QUlQNXZiTnBqMVJlZWJrVXo4RGhrUEtrdkdEeFdhVHpPczdPdS9idk4wcjBMeGl5KzJFK0NoaTdaME8vUVpkK3RsVVlkTUpTNVEwb21TZ2p3WHRoeVZBUzUxd3FUQldsVzZjelgrNUVEKzBLcEFiZWtEeHMvdkZkVXB3NTBUeEIreklxWU9GRGhVL1ZsWG02YlB2SnZkTCtyMC9sek40RzZldHhEMTVnakI2UE0wSmNNYUhlUnlmV085cjVrd0t3RDNMMVZxWDk4RDgvMXJuWTFqczhIZ1Y5V0ZobXBVbmpTMzhPWWtJZkdPYmUzLzVheXFZclQ1Q3hlamIzM2xwZWx6WlJEcnovcnRKbjdRMU0yTWwxcWNFNGhISC9PazJ5Z1B5Y2E1Y2dNQ0dIUHYrbmJyMXlxV2gvZ3NTd3BhRzU5dlpiMkRZd29RcnhSU3ZvQW05d1FMcGFXcVRtMm5rYUluSHNhSHRVNE1DUmFSSDJyQm8yOFpDaE9ITXlQV1BYNDQ5SzY4b1ZjclJtby9TZlBPWFFtVEVaV290SThUSWlRUmg3UkhEQzF4SThOZEhiSXh0dXZVbktzalNFVTI1S245dGFWUzJZS3ljM2I3RzI2T2Q0UEZwUlp0NnRTZ1pQUHBSRFJodXV1eVk4bU9GWXBNN0E2bEtIOFptekZXeTc0d21Jem5XUnVnNjB5dTVmUHlHVnVzY0c4NWkvd0F4RE1GYlhXVlBrOENmL1FJY1lJeVpFbHRVQ0FtTmFPTDV0aDZ6L3p0VlNOSDFLYkN0bVo4MldiUDhOYndkdTFGVXZtQzJidm4rejFDOTlXTnJYZkN6OVIzQUFZL2lDeHlQRE5ZWm1GZWkvTUFRNjBVOWxjS3lraEhMRERvT0hQekErVlNBVXVYM3BROXBJT1VSYkp4dWtvZDUrUmlNZVhEa2VqQ2VORElxcjdkT1BiUWduWXhzTE5hT0RjVkUyamlGUGI5N0t2ZUhSMGpJTm9aOUk2MS9mbGEvKzhEdXB1LzAyN2h1cjhuV2VqcTFLV1ZaRmxVOVBrNjMvdlZpeE9LRXBXQmFQQ2l3US9MbGFUMnVUYkwvM1hpbk9RSVF3b3luU0hNS2xrSFE3ZzZQSnBGRHFRbjNWRlhsU09uZTI3SGpvQVRteHlhMTRDZVkxUVJIdWNPZEM0R2xFK0VhL2piZmR6UG1YZkdKeFJvVlBrOG81ZVl4c2ZyQ2dPSTRqMHJwbXRVYTlmTktJT2Q0V2RtbkVWVFZ2Ym1pTDdvSGVVRWdOeGtIWklEWWhoejlid3djTDJGb1VaMC9tbzhkQ3RXNElHUThBR0tMeXphT2hITzZYMVpMeE1MLzd0SWJYUUxoT2FGckdKZVo2WXk4U3V2Y2toa3h0Z1NQVXFtdm1rRFo3R3FlNDg3TzVuZUZKblNhRVJUNktkU0VTWlFnVEM2TENyTWxTcXdycTFLMVNJaEVMNmFSaFpHVURjSFNNOWgyMTFYd0dBQm80Qm1UbW90aW1HeGRwRTFzL0dEZytYSjRZNkpHYVc2NVgyblBaajhsSEJkMWF0c0ZRWEZ1bXJ3SGpGc1l4SCs1NCtIN3VuN0hnOHA3cnd4SFB3NVZ3S2wvbk14d05Rc2pkRFEwT2c0ZVlnQ2tNeTVuUkc3ekhHNkNNQng2dEg2Mld1c1YzU2ZYQ2E2WG9jdlZrWFF6aHNhRVhPcmRxNEVGcFlPNm5FalU2UEhyRTA3cGRUendtQ1o2dkc4VEhPVDlFM3JibFIzY0hIc09aTi9qWHhXVGpxaFVPWVRMOTFKOEx5YzN2ck5MMjVpQStDb0pXNURVM0xIUlRuTzhmazFPS01EN0tkdFJqb1ZFeGQ1WVNpQmNLWEdqTnRUQmJOUU00VkxCcXBRanJ1NTkrV3JyYVdxM2ptQUNSSUFxL1hYdDJTL043NzhxdUozOHV0WGZjSWhVYVBndlRKM0hSeGdVYytGQkY4eTJhZkNqR0xmVFVpd296THRXRjRxMXllays5b2FaQTQ4cUpDeGhhY2tYTlQyeXRNMDlVbk9YWldEOWtrbmNZZGVXOEt5VFJiZDVQZkpxSGRZaXJBd3owZEV2bFZiTzVNQXZLZGs0RHBiZXRYZXNVYnQzWWRSUXdMbUdjWVV3Qmc5Zi82bkV5N1FWcklRM1BybldmcVhQbHJoZWVsUk5WMVh3RU9SNUFyNGh4aldzRWY0VEZudVpXUG80OStMZjNwWDdKUTFKNWVhNnNtemFKKzE4TDV4YlNzY2pEUXdrWUkvYnJPT0hxYm0wTmFKM2pLWmhTVEZIZW82ME9DejlFTC9CTEpibFVPdTBTMmZ2S2kyeHJPeFFITVpxNWFFT205dzhzWHlick10VTRzVFdGekVHbk9ncm04VzBhdWF5ZDI3dDV6YWNJWTFjMmlRWVR0Z0x2T3RRaTFicU5xTXJKNVJ6S2NLbWVnK05BRUgxNi96NTBjQkJqL211Q0RZOWZDQjllRTVPQWJRbDRCOXNYME5iMDNnbytEaTJhSHAzZzRibTZoVXVVcDBoaDlpVFovNWMvY3h0bEtqVWdibmNaYW5XTW52b3ZwZnE2cTBJSTk0cUNJV0dCbFRoek9oZ01zbVN2eHJYaHhlVmdWNmRVWEg0WmFlTFVwem5mcGRPOFl0NU1PUko3UU9LNnB3empObWViaFp2eVlKMFIwN1lpeGlvVDVTMC91cFB0eVB4b3FSMEJBanJpeGw0NTJaTWdWQWg2WUtCUEdsNS9oY2JIK1ZIcDg2OUxZVnVJaHhMbE0vT2t0N1hGZGZaZytJS1lYYmIzK1Q4eVhQdjlOUERSeUtkTmxEMi8vNjAxNHZqV3dYWGp0ZGtqb3FNV2NLRi9vSzFJcHhRc01qazFZS3JSeFMzbzNmWDRJOWFPTURwbkdSZGxlMThLRnF1dy9ydlhtMVVxb1p4M1FEQ0VtWi9EVjRUUXpyY2RLd1JEVTRRZWI0VGJWTVBraGEwWlF1cXhkWVgwSWlvR3hvbm55YnBWd3BZTkM3Wlc3UDFWc0w0ZmtIZ2VtYXZ4OURRMnlzWWYzRXBGa0VkNk4zaFZudFdydTV1YnRMWFNCanl1SHlEZzlPQXVzZnJvT1hwWUtndDBlK2p3d0FEOUN4OVZDK2ZKcWJvNlp4Zi9EOG9HZUNIZ3AxOFhUR2UyYjdYM3VGV0FvYi9PTzNoNFgzUHJEZEo3L0doZ2NFd3dERWNRSXJKWUVUL3g2R1B6NUtBMHZ2b2lweHNJbFFjOGpFaTZSOWVGNUZlL2ZZb3JmZlp4dUFoYWhnbGg3c1RXcjBoWC91Z1BvN2IreXEvMjMvN0xSMlNncTRmdjlDVDE5elFvZ0NaL2l5WDg5ZmJMdnVkK3g5ZWJiYUdtZE9YWm9oZXZUZTk3NlFWSjlNZU9wbE9FY1ZPMlA4UUxBbFhUKytwUGY1Q2lxWGJteThXTGhpUXVpQXF5cFBHVlY3WHQ2QWtlRGtsenRKTWFNbjljYXluV3p1UkpvNEIzbk5xeVdkWi9aNTdTYUI1a29WUG4yc3pKc3ZXbjk3dHplazJ1SDRGZXFxbzVlVUkyMzN1UHZWK0hneERGNFUvQm9IQ2NwdGxnTGdIaVpVQ3NEQXE5c1o3Y1hDZVZzNjZnczVnUnFVRnFLQWQrSEx0MnR4N1FWc1picWpBT0N6UmxXdW1qS0NFOUNNRUp0bHUzVmpXM1hPZSsxRER2b1ZCd0tyUndycHpldllmdHhneE9ZRUZ1b2FEQWNxUjBRcmcvS0oyTkRWSjcwMDFVRGcxUkZjNkYxZlIwMmZvVEtOdWo4SkhMRzVkT0F4dHFwU3pEUGtMd0hvMjV2eVJyRXQ5RTZlMW9aMHYwb3hOb3djcVdnSU01NWFaMVZEVHFkQTd2NlpINng1ZnlBUW1tRnRBRkhVRHgyRW9lME8ybGQ3QlVZZHc4KzN6UXR2b2poamxzdmJqUFZvVmpMc0l4NTY1bm50SzlaUy9ibVFEOFlhZ3B4cGNwQlA3RkZBYUJhQTNiV0VPZldTRmN1S0lUcUJOdkFCamNoaHNYa0NZOEsyZW8xRzFqU2Zwa3FYOTBhZmhjQ1JER0J3ckZWL2ZnWWluTmhJR29BV3QvTHZSMGp3MmxONjd3aHlnamdMWmhzK0c1eWdLblpuaGRpOUZDbzZJdEpOV29zREtmZTRWN0ZTdFpKdWpyKzFzZXdUZXU3SUZqeDJUcmcvY3hIQ0ZNaHBDRXBONXpjdHNtMXhKZzFrOElWSnVscytUcUJudlA4R2lURld5RCt1Z3hLc0J5OUl0U21NOFZLQmI5YTEzOWdhNjhjU2FOTjBYQXB6dGpUNThvalcvamZUdjBjU2FpUDc3ZnFYMTdwR1RxRkhvY0RBVEtRQm1mOXRUZXVKQW5nNmw0SHZCNzNNYW5KaHRDaG5UTFZudlA5L2w4Ry9Mak9LQlJ4NEozdDM2d0NqM0RPQUVYOFNqWVJZQnZYTmtZK0VoSnNWVE11WXdld3pDcFJQUGhSTllVMmZTRDI5d0JpNTJKZXdLUk9SRTdjUE83S25qYmtwL0s1c1Uva0pPYk5rbUM1K3FSTXF4WGRNZ1R6MWt3V2ZLbnU2bUZ6OGR4dE1wOUxmbTBzM1I4Nk5DNWN6dGFLaGgrdzJPQ3JIL2tmNlIwR3BSdEwyS1kwak9rS0Q5TGR2N3ZZOW80OVJCcmVCVllNUHg0QmdNTVRlKyt3NGRJd0kweE9FMUE2VG9WcnI5Mm5yYUFYSnh5QTNnbWsrRS9vbXlNdS9NWGVBMFkyeEpkdGZLMHluRGlxeExNUDBaYkZNWnA1WEdhbmZBT3JsM0xyMHN4cDJMMXZQMW5EOG5CVDFmTHFUMjcrSDZiV2JkalhqdHpFZWlRMEV2MUQ1L2pIS3NwbDIzMy8wZ1ZwaUhSbmZiQkdCRjlzQkxmK3VNZjJ0Y2hBTkRoUEJ6UTJkcW80MCtnb3FrRURiUDRMQXFLcUppVkw2ZGhKQnpUMFpFQ3NEbCtOSVdJZ1BLWkxxbjZ6bnd1enJESTllc0RiZzh6cCtvMCthRzFqZkZzWmVjQU1mam1sZTBZNkR2WUt1VlhYVTZQcm5SN1dSQU52SGkwZCtZQVZwY0dKbGdVTExrcjZXMXZ0YTlMVkNFSVpWQVMzaG5IZSswYmJyNWV0dnpzUVdsNC9qbHArZkFET1ZKVkthZDJiSk91dlYvUkVMRHFidi8zV21sNi9WWFo5dEFEL0VTb1NOY041cEgyU0JMS0s4TExmd1U1MHZiRjJpQXVtaUNMVnJQcjUwc3BkSDhrN1B0amo0MXZ3dG1VWFVhbmJQWWptTEd6djFZMnZQcXl2YUNabTJOUk1iYVF4Sk15dFBSOVF6KzNSb25ETjY1c3MxRUx3ZmlJcnlSVFY1ZEtaSkhpZ3JLNUQxZGhiWC9neHlRWWp6VzlVSWVUdStPUnBVb0hyRnNYUTNuYW40OU0zWlNnZ3NiUkpIRGljNkxLK1RQNUVpSStxRnQvN2RYY3JwVE5MYkErT2lZZWhLQ2ZQN2l3MTNsdGEvUFZiNTZXeEVCZlRBTVJQZDNORFZJMWIxWWtFN2Q0UWhrUFc0N1Y0anR2MTNoVTRNYndBemxBTWRIYnhlY0trSnMvWU1GNEtGY1V6SkMyVDZNUEpPTHJoQmdhd244c2pQdkZ3NmFiYitUREJqc3N3RmVNYnRFeEoxYzZQdlVQOStNZW9mMjE3NG42blZKMXpVeFZ6bFFweEdtU0M1M2VxM2dzNjNENWlJRTZUQjBvKzN0SS9ISVNDMGF1dm8wV2ZyNnI3WGNzZVZESE00UERyd25NMHpQSXN3TThMK2NDRStOd2ZJc0lOYmZnbWJXMXN5NXhQczREMWlHTTZTNnQzbmZYOHQ0WG56TkhVUU0xWGh5dktnZHM4L0FOV3poYjhFZ0NNb1AvZ0xJQlJqWEc3dHkxazFzeGVKYmZSdEREdGE1dThUM1NmL3g0YUV2bVZkRmU2UGhrdGY3Sng2Ukt0eDNsK1hqTDFEd3FuaXhhT0FXN09sdllvQndKQ1VMRFV5OS9INjlNN2ZuVGJ6Z3FCdVA0UmdSenhLWWVIUi9QNE9ITmZNODdHSnJpU3Bza2JmemUzSzA3Zk44UndJZnFVSFpnNFJoZ0NreDBubUVJcDNPb3dYTnRnY2dFK3ErZUplM2xSV3p0Y1owTFZObHVNQ2E4L1FIQXY5bFFaVStkYUorWElseG93cnZkVFcrOXlSWVJJU09CS2N3emd2TGVQenpEaFJtT0F3c3pKdlBRSHc4Tk1JYzJMSC9Kck53SUllRGFIOVJnNE42V0E3TDdsYi9JbHJ2dlZHK2Z6WlZwdWVMQld5ZUlHdDRJb0hndkVIcXZLZ21HeHBjbk1OZHJmYzMxODJYNzBpVzZCZHlpcENweU1qYWNML1B5QSsrdGxFSzhFSkV4aGUrL0ZXWk1KQS9GYWQvU3FlSWE5UzViR1lOSDV1ZzZEbUFrRGNuK3Z6d3YvNTd3TFg3dWhFK0FrU2kzeWY4bE94Lzl1ZlRwbGpUQU9RWS82LytnR1F6cW9xYWVyN0VlL1BCdm1qNWd3cDcwek81NklqS0dSb1preXpYb1B0RXVUVzh1NDlPeDVtV3ZTK3V5MS9UNkRXbld4ZFBoenorVG9XN2RSMnMvUC8rZ0g4ZUw0MUhsRDNTZWtoTWJhblEvL0pic2Z1cEp2c3RXYzlOQ2J2UHdBa0NoQ2dHQ3dJdjU2M1FyaFVlRjFkZGNKYlYzM1NFN2Z2VzRIRnoxbHE2Y2R5bytXMU1Bc1pXZ0tLUGJWS2ExaVVFNVdscWlOTDdNLzIzU3ZQeFZPZkRtNjN3MUdndW9JeldWVkVpU1hHTEZzWUZSMGQzZUl2dGZlVW5sOW9iUzhEckgzN2Z5VldsODgyVnBYZk94YlVNVnpqNU9NVEJsNncrSWpCS0VIRmVTRFpac3E5SDlrWUFMUTdaVkRGNFltaVZ0aXl3endJVlA1eGduaERqOXNWdHFGcnFJT2RQZUpsMzdHbFdCWDhyeExYVjhtZkRFaG1wTFdvYjNkdTdaTGYySDJqUXNka2VPckJCWFVsVG5DZ3F4WWhnekFsLzJ0SG96SFRzQTNRRE9EVENFWGtRUjBuUVU2S0tRNHpTZERkR2N6Y1lHWHBpc2NkVTBBaXNTL0tDcFFrU2NKdlVTRTY0akhIVk9zamF5bFZERVZWQ0UxNDY3QkhpNkFqMnhlMzQ4Z3F1UGJxUGVqVCtNdDJpckJXTTBPdEFXSE9BaFdLQWRtYnZuaGMySFpBNnYzUnM3REludURFQ0xINU1sajF3ajRJQ24zem1QSm44M0R2eW5kKzcrTUFEQlVJSy9IMk1nTkhaMUZ3SzJOVndCaURQZTErNUhEUGo3cm8zRDRlOEczYnNhQ2ovV0pvUXg3ZTdiQWtJN1YyZkZpQTZXazROYXlBSFJPQmpCeHZJSjNTS2pBYzQ0TjJNQVA0QWFFOFpBbVhpSEkwZTlHOTl1NmZoeDVoVzRRSXNhQUl4UVFLanpCZVpvci9kakFya1FjRHVnRFcwVU41WW53bWZEaUxKR0prQ2pKUnJNM2RJK3BwVmdGUDRHSUpSeEQyM2ozbTkxQUZMaityZ3NWb2phQVl4R0c0OWwrNHZhT3hMOHRhOGVLOFREZFp4WHcyL1h3L25pTmZzbFE1aXpYVytGcUJPQXpMa3l3SzZUMjR3SVNiZzlQaENrV1J4NURGaXRQK2RzTXF3aWZobG1JNWVmWlVoeGlOOUNXVk9nanBuUmFKRUM1VWlBSGkxbG9ZMnRoU25Hb2ZEWkdFRXBpdkdRaEJNWHd3ZFJXc0FENlVxNkovSi9VVmJXT2hOS2dBd0FBQUFBU1VWT1JLNUNZSUk9IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiRklET18yXzAiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6IjU5Zjg1ZmU3ZmFhNTRjOTI5ZjUyNjk3YjlkNGQ1NDczIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsInVwIjp0cnVlLCJ1diI6dHJ1ZX0sIm1heE1zZ1NpemUiOjIwNDgsInBpblV2QXV0aFByb3RvY29scyI6WzFdfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMDgtMjIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJSU0EgQXV0aGVudGljYXRvciBmb3IgQW5kcm9pZCIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjQwODIyMDAyIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMDgtMjIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MX1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNC0wOS0xMCJ9LHsiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbImJjYjg4ODAxNjFhMmFjYzE3YjU2YjI2ZmM1MDVlYzM1ODBmNjEyY2EiXSwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiYmNiODg4MDE2MWEyYWNjMTdiNTZiMjZmYzUwNWVjMzU4MGY2MTJjYSJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiSUQtT25lIEtleSJ9LCJkZXNjcmlwdGlvbiI6IklELU9uZSBLZXkgKFVTQiBBKSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxNjc3NzIxNiwicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoyfSx7Im1ham9yIjoxLCJtaW5vciI6MX0seyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDM2pDQ0FqK2dBd0lCQWdJR0FPcTBBQUFDTUFvR0NDcUdTTTQ5QkFNRU1JR1JNUXN3Q1FZRFZRUUdFd0pWVXpFTE1Ba0dBMVVFQ0F3Q1ZrRXhEekFOQmdOVkJBY01CbEpsYzNSdmJqRXRNQ3NHQTFVRUNnd2tTVVJGVFVsQklFbGtaVzUwYVhSNUlHRnVaQ0JUWldOMWNtbDBlU0JWVTBFZ1RFeERNVFV3TXdZRFZRUUREQ3hKUkVWTlNVRWdTV1JsYm5ScGRIa2dZVzVrSUZObFkzVnlhWFI1SUZWVFFTQk1URU1nVW05dmRDQkRRVEFnRncweU5EQTVNVGd5TWpBd01EQmFHQTh5TURZME1Ea3hPVEl4TlRrMU9Wb3dnWkV4Q3pBSkJnTlZCQVlUQWxWVE1Rc3dDUVlEVlFRSURBSldRVEVQTUEwR0ExVUVCd3dHVW1WemRHOXVNUzB3S3dZRFZRUUtEQ1JKUkVWTlNVRWdTV1JsYm5ScGRIa2dZVzVrSUZObFkzVnlhWFI1SUZWVFFTQk1URU14TlRBekJnTlZCQU1NTEVsRVJVMUpRU0JKWkdWdWRHbDBlU0JoYm1RZ1UyVmpkWEpwZEhrZ1ZWTkJJRXhNUXlCU2IyOTBJRU5CTUlHYk1CQUdCeXFHU000OUFnRUdCU3VCQkFBakE0R0dBQVFBbGNUWXNDVjJMeHV3SzhRNVBLKzAzL3dTQVBTcFFaUjZrMTJQMnBxZkIxcDdNM0pVZlV3dmVtaXRvaEtKWTJFZXBQTGFkSWl3ejJnVmFyUEI2TUZjL0g0QlJtdjV5Y1VZaFd3SnlQaVJmcUZKUXJjbk9yMlFtR1VtN24vR1poUUtWejV1cjhMN05PcG5vbnZ4Y3VoY2V1amVlMXhIcElVK1dyeUNvMmhwTmZYb1lpS2pQREE2TUIwR0ExVWREZ1FXQkJRN1ZqbEwzYWdTVFh2VkFGeUtiNEdJRWNwMHd6QUxCZ05WSFE4RUJBTUNBUDh3REFZRFZSMFRCQVV3QXdFQi96QUtCZ2dxaGtqT1BRUURCQU9CakFBd2dZZ0NRZ0UrZmJiSkZjWGlGZ1FaYlpyM3hRZFVXU25nZzFoTnJrSEZIaDVRNlJFSFhIRVhheXgrSW1mMDBpUG9OcEFFNmM5bUNTVFZlV0JzR09xRFM0QjM2UlZRb1FKQ0FiWHdNRCtsMUYvTHN4UkJlNCswTUhod3IyMHY2aGttK3MyS09WVXIybitJQXoyY2doQ0NsTE9UZFhYdlFHbDQ2NTNYWDN2d1g5VnBneVJTVVQxdGhpZXgiXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBRElBQUFBeUNBSUFBQUNSWFIvbUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFGaVVBQUJZbEFVbFNKUEFBQUFvclNVUkJWRmhIelZocGNGUFhHZFh5bm1RdFhpWEwrMElhc01IR093WWJFbEpLZ0VrQ0FhWU0wMHliTW1sTEtBTmhuOG5DWmdncDVBL1VoSTR6aE5EU2FXY0tKR3lGTUtHQk5ISHhnbzF0R2JNYmIvSyt5SllsV2N1VDFITjFoVkJrVzlJUFluTEc0em52M2l2ZDg3N3RmbGQ4aDhQQkc0WEdlMTExbFpyZXptSE9adWZ6WFlOUEV3NGV3d3BqRWtLeVp5WEZKeWxjZ3g3d2xuWDg4SGZIRDEwMzZpMFNLU3NRQ240VVRVNWdXeHRuSHpGYUkxVFM5VHQrdm1SbHJtdkNpU2V5QnJYREsrYVVHSFRXNEZBeEJOSEJDWUROWmgvc055WlBpVGo1M3pVOG5wQU91bVIxdHZjdlNpOVd4UVREdG5SaWdtRTJjVWFqdWJSNUd5TVU0NUhLc3M5TzNpK1RpWVhNeEJscE5DeG1UaGJNbnIreEVaem8rR0R0YVNId1REVUJJakhUMjJVNGZ2Z2FPTjlnTU14Ty9EZ3FOb1QvNDRWM3dMRGJIYnJCa2JLMkR3UVhUNmxsOHFDZmdpWkFJT0RiN2J6SzcrOExwOFFzN0d6VFBYTVBQb0hERWE2U0NqbzF1c0RMQVl5TWZNWWZ6Vi84OTN4MEx3RG9vK09INndNQnhIUnBoZ1JXQ3hlZ0E3RWxrZ1VWVml4bWVIeVN3cHpWTGdBUUFjNUhMQkFLeWFQRHdTZFM3QTVFTVo2eHhEVENCYWdNWDJXeFlCZGVRS0x3cFQyZHVyUGw2eS9YYjc1UXZXRjRjTVJxc1QyWG9yeXMzb1FSaFVxR2ttMFlObS9ac3hDUFg5L2FyTzB6Y0p3OVBqbjhzbm96MWl4OUk4ZWdON3UreXgvNGVCRVg5UWZUaVBXMWxSbWhFUkx3TlV0UGlJTVltR3A2WGp5ZGZYU3ZGM1ppUmNKdnY3cERSOElVVXFHUVgxbmFWUGJOUXp4dUxKcHY0NGc1NmF4ZkNBSlpDRlAxOXhpTGlwZUJOei9zcXloOUpBNWlyVll1TFRNT0kyMlArcTFXRzEvQVoxaEJRMTJIOHhPOHlkT2lZSzBJaGF4bzQzazY4c2QzWDlMclRKVDdnejBnYStIay91MjZBb0dRdUh2NzIyY1VrVEtRRVlNMXR6QVpSRjJsRVlrWUVCaXNvMlVJQkVqUGpvTldKUGpnZ1BHckwrb3g4cHUxaGZpOE94dDh3Y0ZEYlBrQmlYUUx0M1hmSXZEcTBwWTc5UjJzaU1HZ1BEZ29WRUY4V24yOUZlNERRYlFpemgvZTdnYlBtWldNNEFNSkNaZnMzM1lKQk5oNWFNbmd3QWpsdnVIZmliRDg2czB2VWI1bnk3a0lKVEVWeDlsU002THA0TzJiN2V6akF4NW1VOS9RZ0dUT1RJQTVRV0JDSzJmN1Iwa1orSUpsNlFxbEhNNGxTMzNDanhQdE5qdSs5NjNOYzhDdm5Hdm9hdFBSRm9PejJMTm1KamlYOE83V2R3bFoxL2ZBYkRVVnJTQVNHYXRVeWZCeDhPRFFvRS8yWFhYTzgzWVh2NDRrcGR3SC9NZ2FHalJ0K3hOeEg3Qm53NFV3WnlZQ2NDdE53NVlIQTR6b1NaV0IyV3JMaVN4Z2FtWXNOUXhLRjdMaDRJNHI0UGx6SjAxSmk2TCs5UUZmc2xBU1pUTFI0cFZaNENjL3IwVDFwdWNCL001WmJIQVRlRTFGVTVDRUphdWRRSXkzTmcxUW5wbWY0TjVlSmhlZk9GSktlZEhocGYwOXc1U1BCMSt5dEgzR1BVZElVUUFPN2I0Q1gxQk95bmNRRXhvbUJiK2o3b0lsNkRnRnB1NDNkSUZNejR1RFVla2dzaUZVSWQyMS9pejQ1TFNvM01KSk9ERG8xSmdZVnhiU08zbXlZdmI4NThFLytmQWIyQW0rb0ZNMnpwYVNGa041VFhtTE85NHBVR25yYnJTQlpPUW5vT1M2enh3WTljSS9hd2U2U1dEdFA3b2NoY1BIY1RTdXJJRmVmZEdmbDFKKzRzaDFlVERwWlNtczFpZnhqa0tGbktDY0FpclZsVVNXUkNMQ24zdHJHQ3hNS2QyMWdSaE1HUjB5NzdWcGFKVHAxR2lNTFFzV3hsVnBXazRzK0o1M3ppT3Q4S1YwQ3NCc1ZuNGlTUE9EUHBQSml2cE94eW5nMDlzMW5aUm41c0ZnVDZJYkovZjFxdzliR3Z2QjkvMWxHVzRXNHhsc0RGbFlpVnAxNExOZmd2ZjE2RStmcUpKSVJYUUtjUEFjTnFzOTc0VWs4T3JTWnM5NHA0RHhOQzFhV2hxeUN4SVJESFFjd0x1RksyVGJWcDBFUndqK1llc0x1SkRSS1MrTWFTMEhQcStNQ2dicmFOSFN6b1ZPRURoNGZBRjViMUNEM2dJK0d1Z20wTW1BeUVQRlh2YkFDWVoyaXZMNDVBZ2tPK1ZlR09OYklTSkl5dTVZZXdZOFkwWkMvcHhKWm8rc29STFZsYVNVNXhZbW1ZemU4WUZ6S1RvK1JDb25CcTRxYmZaS0NHVDMvcVBFRDhCSFd5K2ljRkR1aGJGakM2NzU5NzlxQjNwSjFudzBLbXZFRXJicWY4MGdhYmx4NkY2ODdJSHNRd21ndkxhaXpmUGlDWWRPU2xFV09yTzd1T2cvckpnMGpYVEtDMlBMSWtHZ2xPMWNSd3dHYnk1WWtrYWRRb0dkYmxXM1U2NktDYkhaZmlBTGUrY1VrTWlEWE8yQTNuTmp2T2Z1ZzYrRG9KUDllMGtaYnFaMGZEVEdsZ1VnZXNxdU5pTFh3RkdYMFk2NnJjS3lBdlZONGtRZ016L09NOWNBcTVsTHp5WG5Va05OdTVBUnV1TVMrWnRiNE1ydXZac3VTbVVpcnhUMnhMaXlxTUhlKy8xcGNMR0VlV1BOVEtQQjRwNUNxcUlOQkUvTjhKYUY1TXFlU2NwSFhVV2J5Tm53QUhpbC9oNDk0Z0hjb0RPZi91c05GQjA2TlNiR2xRV2dIYmgvcDd1bW9nVjh5OTVGdzFvVE5SaGtNWXdBY1FPT3FQZXNpcWdMU2hWSllRQWREdTNEQUt5Wjk4clV5S2dROEIzcnppaWo1TDd2RUw1a0FSR1JzcUwxNXlqZnNITytic2pWOWNMRk5MeFNNMkk4a3hHQmxUM0xkUURjcW1tbjhZNlh3VjM1d3hKeXZHcWF0TmN1M3FYMXhRZjh5R0lZWVVmYjBOZGZOb0N2MmpoSHhBcHBwV0hRVnoxdVlIQjBvbEJSam5NSk5ZWHlqdFpCZWk2TkdDd3IzcG9oZGRhQzk5LytJa0lsY3dmY2VQQWpDOEFkNXNCMlY5Zjd6czZYZFlQRVlIRGkzVnJYYlNJOUt3NzlKK1VXRTVmdFBDNXJ5eldpSUplcFVIWGYzZjhLT0pLZ29hNWR4UG94RmVCZkZ0N1lPR3c1ZGF3S2ZQbWJPYUdoRXRnR2d6M2R3MVl6VVpNek81RVNLQUJTczBpdTFkMW9GWWxKVU90MTV0VmI1NElBU0NEY2hRSzVtUHFYQllTRVNUNSszMld3WFljWGF3ZEltY1ZKY0xPTStIRjZYZ0x0cSt3Mmh6SmFUc3U2dXFvVmRRUVZIMG13ZWh1UjllMmx1MTBkcnA3Ykx3S1NoWklJRVNVSHlDOVBoZk1teDhhRm95Z2diTlhWSkJsVHBrZGpBZXprdkhlNCtyQjd0N29SbDBQYWtVMjdGOUtSQSs5ZENvc2duV01nQ0VnV2dNUHIyTUh2S2YvMDdKdHdEWFp0cUhFVjFkakVNSmdLYWZqaUwxTG9TRStIRHJVa0xqRnN4ZS95OFBqbDM2cTEvY2JBZnhmaS8zcGhTYmRHNzlYS2pRazA1Z3FWUERvMkJOVzF2cm9kRGdMU1NDVHhteC8yR2cxV0pHblN6eFJvR0ZGUkcrLzJRSVFxSmhobkYvS3V2a3FEeC9GT1FFOVl6TFlaTDhielY3MTZ0TDFwS01EM2dKdGdGUkRVU1d3R1dmUVNnWWloVzhLNWtJc3BXa2dobE5ZTzl3Sy93QmxWTUM5Sm9JeVNlWjIxUGdESElhVHdSd3NQL3ROSDk1YllIby91NGc0bmVDM3dDN3kySWtvbW1Kb1Y1ZGxBUG5QZ21FckxqUlhNWDV4cUdEYkRIYTdoWndxYXpuTVhUaEVrSnNkbXpZcEdvTGxtbmltTWV1dXJ2MG9Wc3pJU3RocE54OUs4ejVTUmNoOE4wQVNBM0FCTWxzc042NlJCd1NqRTl2ajQyTDJmTHVocUgwWVN1WlpNT0pDemZUMkc0bFBMb0FreVVCZjR5T3BGUy9MM0hWdWcweG9SY1JNY1o5aHV4R0ExbXl3bEY1Wm5aS1ZBREI5WEw1eFpLRFc0RjJDK3NiR2x1T2lhdXJ3UEYzYmNRdUhUeDA1OXVzNGxyNDEzaDFWUTlteWNyV0JCM1BydDgxV1JrUUtHendqSlQ5UE9YNnA1RGp0blI5UmprZGxpYm55Z3FmeXVxZm1CVmo5a2hyK2RwbnVxOW5NV1BaVEFrSER4ODFPVk0rYytsNUFZdzRwWWROaXNtTUZWaXNmai94L3hxT2NQUmRTdmF3QUFBQUJKUlU1RXJrSmdnZz09In0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMTItMjciLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MTY3NzcyMTYsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiSUQtT25lIEtleSAoVVNCIEEpIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVMkYxMDAwMjAyNTAxMTQwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMi0yNyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxNjc3NzIxNn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wNi0yNiJ9LHsiYWFndWlkIjoiMjI2ODJlZTUtNGYwZS00YzE5LWJlM2UtNzk3ZDU3NzBlYmZlIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiIyMjY4MmVlNS00ZjBlLTRjMTktYmUzZS03OTdkNTc3MGViZmUiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiUHJlY2lzaW9uIElubmFJVCBLZXkgRklETyAyIExldmVsIDIgY2VydGlmaWVkIn0sImRlc2NyaXB0aW9uIjoiUHJlY2lzaW9uIElubmFJVCBLZXkgRklETyAyIExldmVsIDIgY2VydGlmaWVkIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MTAsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6MCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MTAsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6MCwiYmxvY2tTbG93ZG93biI6MH19XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURnekNDQW11Z0F3SUJBZ0lRYVlqbnhPdWs0N0JHYytFaWgyN2JtakFOQmdrcWhraUc5dzBCQVFzRkFEQkhNUk13RVFZS0NaSW1pWlB5TEdRQkdSWURZMjl0TVJrd0Z3WUtDWkltaVpQeUxHUUJHUllKVUhKbFkybHphVzl1TVJVd0V3WURWUVFERXd4UWNtVmphWE5wYjI0dFEwRXdJQmNOTVRrd09ERXpNVEl6TURVM1doZ1BNakV4T1RBNE1UTXhNalF3TlRkYU1FY3hFekFSQmdvSmtpYUprL0lzWkFFWkZnTmpiMjB4R1RBWEJnb0praWFKay9Jc1pBRVpGZ2xRY21WamFYTnBiMjR4RlRBVEJnTlZCQU1UREZCeVpXTnBjMmx2YmkxRFFUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU9zNWF2UnhidFJOemJRRHB2V2dDTUZDV0VSQUY3SlM5YlVtMUhKTXpiZzFQMzlVVEp0NE1yVUd6YTE0M09XK1QyQ3RMYTZZd3VPc3ZFZm9WQVJuQ2Y1UUh1dVNzQzJTUzFnbmcxMkdDT2JHQmFzSUJIQzIxUjlIVnNJMFc0dXhmNWtjR05oOFl5U3RwbHhYUGNLeGlnMnRyTUQxVTRpem00TGVOdUZTcWNYZjF4ay9qcklvZ2dudk1JVlVZSzBXTTNwUjkxbGVibmloc1huUjhHdFdqQUZkcFFIQU9VWTk0UmpOOXE4bnhHdU11TmNmKzJFWjBWTGVWM3RHM2lRWnhKeWwzeDlkWkN3SzcwV1hqM0d0S2RwUi9GU3VjcmlEUkxxYlVGV3VNZ0tBWGlmazRva2p6azVmZDVPRm5lelBpbDdoMGpZM3ErSEtLbEhqTTliNDd3VUNBd0VBQWFOcE1HY3dFd1lKS3dZQkJBR0NOeFFDQkFZZUJBQkRBRUV3RGdZRFZSMFBBUUgvQkFRREFnR0dNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdIUVlEVlIwT0JCWUVGUDJyanczY0xwd1V6aFoybHRQdHYrY3ZkQ09nTUJBR0NTc0dBUVFCZ2pjVkFRUURBZ0VBTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFDVnVYbmVnNTI2QmNQUWpCYXZYOVA2MGcwSklKS2FKMENSb1BVRzgzSWxNNXFseUtRT3JtRzRmcC9QSG5oUEQvbUE3TzRjWExWdXhEQisyVytnbmhMRGlWRUpwY2p5cEIxR1hpVjVocWZjMFhwbUhUNDhDYTlEaXRuMUVlVmVCMXQ4cldDSzE4WG82eDV4WE1UOW9UVURwUDQxMG5WQzJ3ZlZRMjFJWEE2Ymt6Z1FNaUs3QkNKZ2dXSjhIb2tnUGhtUGI0Ui9wUE53THVDbHZSeHBwbjIwWmNKcXBZUUhlSTAycjBMS2h3Y2Ura1pwakpEK2hVbnlybzI2MlJLck9mOSszeTh6ckZZQzEwY2JzTFVtVUpzNXBKeHlnajRmVkdia0I5anZzRzF4VHU2MmtvOHFVWDVtWEpOdHozZFJQQ0VjR3g0eTJyb202dXNoQVB0cXIxSWsiLCJNSUlFUnpDQ0F5K2dBd0lCQWdJVGR3QUFBQ1FvaE5PUlBiMDBSZ0FBQUFBQUpEQU5CZ2txaGtpRzl3MEJBUXNGQURCSE1STXdFUVlLQ1pJbWlaUHlMR1FCR1JZRFkyOXRNUmt3RndZS0NaSW1pWlB5TEdRQkdSWUpVSEpsWTJsemFXOXVNUlV3RXdZRFZRUURFd3hRY21WamFYTnBiMjR0UTBFd0hoY05Nak13TXpBNU1EY3lNekE0V2hjTk16TXdNekE1TURjek16QTRXakNCc1RFTE1Ba0dBMVVFQmhNQ1NVNHhFekFSQmdOVkJBZ1RDbFJoYldsc0lFNWhaSFV4RURBT0JnTlZCQWNUQjBOb1pXNXVZV2t4S2pBb0JnTlZCQW9USVZCeVpXTnBjMmx2YmlCQ2FXOXRaWFJ5YVdNZ1NXNWthV0VnVUZaVUlFeFVSREVTTUJBR0ExVUVDeE1KUW1sdmJXVjBjbWxqTVJJd0VBWURWUVFERXdsd2NtVmphWE5wYjI0eEp6QWxCZ2txaGtpRzl3MEJDUUVXR0dSbGRtOXdjMEJ3Y21WamFYTnBiMjVwZEM1amJ5NXBiakNCbnpBTkJna3Foa2lHOXcwQkFRRUZBQU9CalFBd2dZa0NnWUVBa0s2VWtSZU95bVA2dThyWmNuMXZHbFBFekp6ZHUwN2dTMHNOd29nemRxOHpwQVJxVmhEc3d2UnU4STJxVXRsR0JNZW94Q3pZMWNMTWJ6QURKYzhMdWR0eW9tNnRGTXRIMWkrOXRuckNqWlM5ai9KYnE4SXBmNUtMVW9MOFVQZERFK0xRWGZ1cVlxcGtTYnB1NHRFSENtYTVtd3RyRkk0aFI5VWl1YU9aWTZjQ0F3RUFBYU9DQVVNd2dnRS9NQjBHQTFVZERnUVdCQlRFcFNQSSsvUHZueFl5bkF6Vno4cW9jdk5BVWpBZkJnTlZIU01FR0RBV2dCVDlxNDhOM0M2Y0ZNNFdkcGJUN2IvbkwzUWpvREJRQmdOVkhSOEVTVEJITUVXZ1E2QkJoajltYVd4bE9pOHZMeTlDZFdsc1pGTnlkaTVRUjFOUFRGVlVTVTlPVXk1TVQwTkJUQzlEWlhKMFJXNXliMnhzTDFCeVpXTnBjMmx2YmkxRFFTNWpjbXd3ZGdZSUt3WUJCUVVIQVFFRWFqQm9NR1lHQ0NzR0FRVUZCekFDaGxwbWFXeGxPaTh2THk5Q2RXbHNaRk55ZGk1UVIxTlBURlZVU1U5T1V5NU1UME5CVEM5RFpYSjBSVzV5YjJ4c0wwSjFhV3hrVTNKMkxsQkhVMDlNVlZSSlQwNVRMa3hQUTBGTVgxQnlaV05wYzJsdmJpMURRUzVqY25Rd0pRWUpLd1lCQkFHQ054UUNCQmdlRmdCREFHOEFaQUJsQUZNQWFRQm5BRzRBYVFCdUFHY3dEQVlEVlIwVEFRSC9CQUl3QURBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQWxjSXFqc2E0T1NqcUJJdTNqKzAxbnM0clBWcEVOcVIrMCsvTDFrem4zenZhaVg1WWpuSXdtUE1FdGZNOGxXQldKMXk4TXhxNmEzempQejAxR0E1Q3M1QUJoQzR0ckdhMmVtaE5nYWh3Zk85MXo4OTFMY2Q4TVZJYnl1MFA0Q0JweTFqREVtZU9mZ2czMzNhVXBwb2tyc3VRMDFPRUZHb203VFdnL0R3bkJaam9DdzBvbm5JcjJ2MHpsRFUwSndKRDIyYWhweGJKdHdnaG82bEVVT20ra2Q2OStFb092eUl6dlF2bWpXczNyTXZobnQ1ZE53N0tZbVV6eUdXRWFCSGxDcU9pNldzRyszTlRWbTM4Y0FRTlZiZjByRjFPaUROYTNHWHdQNW1pSEJlSWtXaW41b0R5OTlBeGgyeUp6YkVXMXhFYnVhY281OXgrNFlZTDZqSC9TUT09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQWdVQUFBRFRDQVlBQUFBUlpHQVdBQUFBQ1hCSVdYTUFBQmNSQUFBWEVRSEtKdk0vQUFBZ0FFbEVRVlI0bk8yZC9YWGJPTmFIbWZmcy85SlVZRTBGMWxaZ1RRVlJLckJTUVpRS29sUVF1NExJRll4Y1FlUUtJbGNRdVlLVkt0Qjd4TGs0ZzhFQUlBQ0NGRVUrenpuYzdNZ1NQMEFTK09IaWZydzduVTRGQUFBQXdQOE52Z1VBQUFDZ0JGRUFBQUFBSllnQ0FBQUFLRUVVQUFBQVFBbWlBQUFBQUVvUUJRQUFBRkNDS0FBQUFJQVNSQUVBQUFDVUlBb0FBQUNnQkZFQUFBQUFKWWdDQUFBQUtFRVVBQUFBUUFtaUFBQUFBRW9RQlFBQUFGQ0NLQUFBQUlBU1JBRUFBQUNVSUFvQUFBQ2dCRkVBQUFBQUpZZ0NBQUFBS0VFVUFBQUFRQW1pQUFBQUFFb1FCUUFBQUZDQ0tBQUFBSUFTUkFFQUFBQ1VJQW9BQUFDZ0JGRUFBQUFBSllnQ0FBQUFLRUVVQUFBQVFBbWlBQUFBQUVvUUJRQUFBRkNDS0FBQUFJQVNSQUVBQUFDVUlBb0FBQUNnQkZFQUFBQUFKWWdDQUFBQUtFRVVBQUFBUUFtaUFBQUFBRW9RQlFBQUFGQ0NLT2dlazZFM0FBQUFYQVpFUWJlWUZrV3hLNHBpWFJURmVPaU5BUUFBN2ZMdWREclI1TjNnTEFpMlJWR001R3hlaTZLWUZVVnhHSHJEQUFCQU8yQXA2QWFtSURoeks1OWhNUUFBZ0ZaQUZGeWVSVkVVUHcxQm9GRENZRHJBZGdFQWdKWkJGRnlXVlZFVTM0MHplSktsQTRVU0J2TUJ0UXNBQUZ3QVJNRmxHTXRBLzhVNCttZXhISng5Q1o2MXo4OVdoRDlGUkFBQUFEUUNqb2J0Y3g3d044Wnl3YkVvaXFWRUhlaWMvL3ZlK094RmhNTytwKzBEQUFBWEFrdEJlNXl0QXc5RlVmd3dCTUdiQ0FWVEVCUXkrSDgwUHJ1VHNNVkZIeG9GQUFDNkE1YUNkbENEL28xeHRHY1ozS3ZDRHFkaVhUQi9qOVVBQUFDeWdhV2dXU2JpTy9EREdOQ1A0ajh3RDh4RHNCTmg4R1I4ZnJZYS9CSmZBMElYQVFDZ0ZsZ0ttbUVpQTdYcEQxQmttTjNQWlJuQ3RCb2M1Zk1IRWg0QkFFQUtpSUs4K01TQXk1a3doYkVjNTVQak9JZ0RBQUNJQmxHUWg0VnNkNDY5UGNvZ0hqSklMMlM1WUJmdzNZbUlETmR4bitUdjJ5WXZIZ0FBK2dHaUlKMjV0dG15RVJZeUtLOGlsZ3JPbG9Sdk10dWZCUXFEUXI2NzhvaUROM0ZVWEVmc0V3QUFCZ2FpSUp5SkRMNXorZGNsQkk0eUFNZUlnY0tSaytCajVITERUSVRGZTg5M2xFRFl5c1lTQXdBQWxDQUs3RXcwRVRDVnpYVHNNM21WQVh3ZE9kQ09aWkIyemZLL0ptUXluSWc0V0hqRWkrSlZXNjVRRzBJQkFHQ0E5RjBVakQzRmhQUy9xZjgvbGxvRG9kUTF5N3Z5RDVpOFJJUXZtb1FzYzdpT1dSaitDQzdmaEFQTEVnQUExMC9mUmNGTWNnVGs1RVVHeDAzTmdYQmxxWDNnNHlnei8wMk5ZNnFsajFtaytLbmlSZmJaRk1weVV5QkFBSUl3SjBRNEcwTVEvNkdadkx4cEp2VnRwaGRyS3BhRjJFRlpGVVVLellKb1k2T0ppckcyUEtMK2piRWt0TUZDbGtITXRrcjEyd0RvT3o2L29tY0pWVVlnZ0pNaFd3cU94b3hUdlNocVRUMzNpNk5xSDloeUdNUnlsQUh4b1lGem5Hb3pjM08yNGZKN3lHMHBxUEt6MElsMXhnVG9LdytPM0NVbVR3bTFVOVFTNUtTakU0aWpObmxiTTFsSVoyaWk0TjBGem1Fc3luM1p3SXYwSnVMZ0VvT2l2dnlSVXhTb3N0SXhscFFVWjB5QVBtR0xYdklSK3M2bVdqWXZ6WlAwdVRoTlIwTHRnK2FZYUlyMVMwUEsrdXlnK0YyT3NleEovWU5OUWdmMHBXR2ZCb0F1NDhxaTZ1TXVRRWhQRXdSNlY3aVhjNmNtVENTSWdyeU14U3kzbFVKRjl5MloyVzRrNmRGZWhNaThoV00yc1M3cHl3cFpCWllDR0NLVFNJZGxuYXFKeEthRHl3UXgzTkl2eElNb3FJL0tDWEIrZ2Y0bk0vZlVnZTFGdHRmRTM0OUVpUHdwWmpNbEVKcFd5Nm5YYTFKSHpOeHBFUW9BUTZIT096UHkvSDRSRUNwOURYeWlYNGlENklNNHBoYXYvVkFsL1NJeitiM0ZxYkVLUFkvQ1ZIUDI4Wm4xbEVCUVpzVnJTRkxreThRWXdneW5ReGdZZGEyQ3JuY20xaEd4eTh3YmNNcnVMWWlDdnpITlRMcm4vU1JCTlQ5cllZeDE0K3IxYUFnelQ4Rk0yM3d6OWx2WnpMWEhWMDBjbUVzQyt4WUhXVmVTcVJpWUVjRFFxUHZldU42WlhOYS9Mb0FvaUlEb2c3K3AyeEJITFE5QW5RUkRkUmhyOVJseWhENzZQSlJ6UjNia1NEVFZkQklsZ0s2Um93TzN2YnQ5R2hqZW1EQ0VnMDlCZlY0a1ZuNmNJZU5nWFE1eS9QTjUvQ2JubGVxZkFBRFFCNGhBaUlEbGczUml5eUlyZEwrRXdramhhMk92SFdOci9MZVBnMWFnYVNaQ0lZZjFBQUQ2ejF0UEhBMEwwcUxIZ1NpSUowWU1qTVdVUDYxUmIwQmYyOU5EajE2TTlNcytwMEgxblZWaVRETUFESXR0ai9vSlJFRUVMQitFYzNZYy9GMW0zRDVCTUpXQmQ2ZUZLSDVxSUFISW5lejNUem5PVGtJanE2d081L1AvUTZ1Q0NBQmcwcGY0L2lOT2huRWdDcXA1azBGMDdoRURLcFh4ZVdEK0tUUDZ0ck9BM1VvQ28xOXlIZ3ZQV3RwV0xCY2Y1YVVCQU5EWlMvOXc3U3lwZ3hBSG9zRFBvNWJxMDRhZXl2aGJoOUtCM21ycGoxY2VjYkNXYTNodStmd0FvUHVzcjN6aVFMRzBCQkFGZHM0dndRZFBRUTBsQnRwTVpaekNTS3dXUG5Gd0VDdklaNndHQUdDd2xvblIweFgxRCtkei9TK0NJQTBjRGYvTnEyZXBvTW1LaDAyaXhNSFNVM0paMVZuZjlNanJHQURxczljeUhPb1pWYXZJa1NyNUpiRE95dGI0RnhJWmtpZ0ljYXp6bGR0VTZVRHJQT1JITGNPaFNqTmNsVzVZVDI4OERVaHY3R01reXh3TDJVeXYzTjJWVjBick1pb0V0WXZwcFhPaVp3SzkxZzdhTi9BZHRLaWZJYUw2cnBCOExMTU1vbUJMVWFOMndWTHdOMCtPZk45amVTZy9KZTczV1p1QnB6aThxSUZiNzRUR1dtcmplY0tMZHlzT2tWOHRMOXhCcTZFK3BDeGdZMk1RQ00wSFlUS1ZlNkxxWS9nc1NpOUdKOXVXV0xqa3RZYUUwTGFOQ2gyZVI5WXplZFlzYktIdHBTS0VWS2l4cWtueVFPZ2NkSUp6bXVNZWI3UFQzMndUcm5ONk9wMTJwM2pPdjFtY1RxZHhTMjE3UHMvMTZYUTZKSnpyMW5PZUM4OHhaOForNmw2RHViOFVVdTd4K2JnYng3SE85M0VldUo5elcrMXJudjhtNG5pcGJleTYxcTM4dldvZjUyZGxtZWxhUTQ3WHhudFRsNjNzeTNlc2g0QmpQQ1QwR1Rsb3FuMjNHYzV0ZGVGblpIQWJqb1p1NWdsbWRPWGdvbWJhYmMyR1ZBamlSR2IvYnhHL3ZaTlpvczFVMm5kSG5aWFVXM0JWWjd5VlBCQytkbEI1Szc1bk1KVytsK1B0RzZqaDhGQnhyWGZ5ZDE5TXQxcHkrcGJwV245bzRiRnRNcEhqL3N5VW9PZE85dVV5YzY4RExZMmY1THhJeXdzWFkwakxCekZWdnhiU3lZY1NtL0pZcFRaV25lSFUwUkdvOVdlejVMS0xnNWExY0JYaEVEbVNmUzhINUxIN0VMRWtwQVlPZlhsSlJhQTBVVTN1UmdiTVp6bG1YWEc1amhqOFZKc3N0YyttMGw1TlhLc1NJNC95ekRZdHBGZEdadENjZk5HVzlOUjF4TFI5SVVMMG9XZWxpK0dLb0VyaXY0a1JCSy9TZVZZTjFoT3RzNGhaczNRZFUva29WQjAzeFI4aU5MYjNtcXNrem1WR0hvdHFHeFhGMFVZRXlwdWNiK3A2YzQ1ci9aWjQ3RmhlSFE2d09aaklPOU9HQTYyNlo1UEV0aThrWVZxSXIwSlRWUkp6c00wZ0pHMStUeVpUelRtMENRYmxYSW9vK0NjeGdxRHFZVlhPUzhzR095SlZycm5LU1drbTN3azlqeEJoY00yaVlKOW8vajVLTzdkZGEvNG8xNVV5V0E3cFdsMm9pSm8ydzRoVlRIL3FNWitsLzZoaXlLSmdMUDFmVzg5b1hZRitGZUJUOERlaGd1QlYvQVpjRCtwRUJtQzF6dHprekdRa3BzbWY4Z0s2VEk1cTNmWXBjTC9mZTJ5K25OWllEeDlkWUpBc3RPV2RrTmh3blpUSUZQMllsN3pXWE92cWx4QUVoUnl2empIYjlyTzRSdG9VQklXOFM3MzMrVUFVL01Va1VCQThlV1l4WXhFRHY4UmMzM1luZENmWHNITjBLQWNaNkVQem1YOVBHSVN1Z1pEWlZ4Y1ppZlVtcGtPNjFvRmxsTWxVZXlsQmtJUFJ3RUtDWTVsZVVMVDIydDhEVWZBWElRNkNqeDZuTDFWMEl6V1hRVTV1eFF5L2NYUXFhN0YwaEtRczdXTjFzV3NXT3JlUmlWeUdkSzBta3lzV0JBcEVnWnRMQ3Q1cm5WZ0VnU2dJNDZQaGphMVFIYyszRG5ZKzc3VlFSUk5sVFJoaXJZTnJOLzE5aWhnc3J2MWFxMHFCKzloY3VTQUFQNFJ0TmdRWkRhdHhPZDNONWZQVWprZGxNdHQ3VXQ5T3RIU3JLV3ZoSTFrR21GblNOeXRoa0RxYjBqdnIxNFRmWDRvK0xJbXNBazJZMTU2cVdwbHFZeTBHTVU2MTBEL2VSQlRXOGFrWkxIMFhCZWJhL3pUU2MvU3pReERFNWpGUVBNdkRtcHJTZGlJUCtpS3kwN3VYYTU5bEZBYTZLTGltWFA1OW1EMzIybnhwRUNzS3BoMVp4b1BMY0pSbjRLQ0ZEamVWbDZLWDlIMzV3QnlzWWt4T1Q0NDE5WFdrSURoS1dNMXZtblVoZFJEZHl6bWRIL3JmSTZJSkNoRVJOZzkybDJNaWRKZFJUNTFBYmR4RUxpSDAwUThHd2prWS9ldEtjajdFWkhrZE5QZ1UySGx4bUdkanNwTXBNVEJwS0ZPYkttY2FJdzZVTURBNzJaMGpLb0VDTGQxbFNFSXU5RnBuRi9KSWgrNXdZL0gvVXBPaForNVROVU1UQlQ1TGdTcXRmSFNZWjFjUmd1QTVRZ3hNdFRWL1BVWHhRajZ2c200b2NmRGZ3TFg5a1N4Zm1QdGRXMTZhcXBMT0NzVERYOExzZzRpMGQvTHZCL204Q1lmT1Mxb0sycjdXVUVzQkpYYWhFTWR2MDJKMGtINzl3MEFkcklNWmdxUGhpelo3bUFiVUFiZUZIUzRDMTZXT0FmVURKbHE2NDlDVXgyOWF5Vm1YUDhKT3kxRmZ0YWJxV2twUUtXWkRuSE4wVVhGTlBnVzVlWlg3YVlhMXFub1Ztd3psdDIxY0lsenRSU3NBcFdOZTYwT21Ra09LRUV0QkUzSHJSODBIU0MvM1BOTktMZVBJMWswK3lYMHkwMlp2dEg3U04rRWFyTVdKNVlOLzhtd1JEZFBBZFVxVm50VWxDR2F5NzEraVpOOUhPTDNkU0NmN1hUcmZ0V2RRV0FZbUtMcTFuT3ZCV0RaSnFiRS9KSjdrK2FocXA0TjJYM0xOVXRvV0JTcHhWOGkxeGlUSnlvVXRaTGdPYXVsdllSSGlXeTFjOG12TDF3bmgzRHFxVis2TmlabHQrMjJvZmdoREVBWDZ5K3d6dVc0c2ZnVGp3SGpuVitrZ2JHWjBsVlhOVjdZMkJwWGErSmNudzExb2dxSjd5MUxKVmx0RzhBMEF1cEllNHZMQlUwSm1zM1hHd2F2TkdXcnF0ZVlTQmlHenRsd1JHVWR4VEF2MUExcEZKQU9EeS9BbG9ZODZES2hpN0Q4WWdpalFId2FmdWVqQjBnbXNBanJmVjB1b24vNzdudzJhb3U0MTFXc1NHbFZnRXhheEE5ZlFsZytPTlFiM2RXVFV5S1Y1cTNtdEx3SGZxMHZkeXFPS294YWlHOE9RazRGZEE2K0pxWWtIbVZGeUNENEYrb0FWYzVORDRwMlBEaCtFc1hRc2JTUlFHVWw1VnR0c1RrVVYrRUlvUjViNjdYdlpuNnR6Tk1YRzBKWVpiQUl5OXZjNTF0d25MYlI5M2NpWlZZYnFsMVhrc2hMVUtkdXNzb2VtbGtxR1puaDBQTVB6Q3N2eEpMTmZ6TlV3QkZHZ3YrUXhKdGNRUHdKYkdjMnB6SkRhenFpbUhtQXpjK0U2UU9EY1c4b3Z4eWpyb1ltQ3VtYkZuY3pBNnk0QnRDRUtxaHh6cTlpS2VHNHlhVlNPU0F5YlAxRXNHeEhUZ3h4TU9zYWI5R0hteEdZczcyK09wZHhlTWdSUllIYWFJVmtOUStLZEh4MFAzQ2FoczMvUlBMajFjNWhFN3V0ZXpzR2NPUzFsZno2aDhoQVpENjY0cGhUSE9YakxOQkR2cjhCei9UWFQwdEN1WVcvdUhQdk81ZXNSRTdvTXpmRHNzT0RPcUlsUnpSQkZnY3NoVUtjcTN2bk44aDIxWkJEYTBiL0lRRncxTzFFZTBNdkFoL205S0dGenByOFEvd1lYZHhFenoydE5jWnlEWERQejdSV0VQZVc2MWlhZmtSeEpuRjR5WHVzZWE4SEZNYTJsUldDbzl1QXBCaFNTcU05bXEweU5rNERPMnZYUWhTd1p2SWgzOHl6UVhMa1hBYUxDbjBLY21lNGQvZ1dQRmI4TFRmNmlpNEljZGUrdmlTRkZXdVM2MWliYkxFZTF2THJMQmszdkQ4SjVOUVNlc2d3akNBSVppaWd3SHhJZlZVNUxMNVpPWkI0NE0vaWE2TjFjaUFoWnllOURUUFlQRnNmS1ZZV29tQWQyc3Jwb0dwby93WkFUTlhXUkhQNEV1WVV0b3VCeTNHcjk1S3BGaCsvZU1CUlJvTTlVcWpxUktnYzdtNU5aaUZQaXgweHBXSGVCd21Ca09kNmhvc01hQllnaVcwRWxnRXVSdzFMUXhEUGNSaWdtMlBraUVTOWZFdjBIaHVZbjlRK0dJZ3IwbWNCTlJVZmlVNVZ2RmxHd0NQQWorT2dRRTJOWmlqaWYzOG5ZVk9aQzI1cnBJVkFZM0R1c0JUNnExbWdSQmRBbDZsb0tCajBBOUJSVmxmYXo1ZktPOHJrcnUraG5lYVorRzJyZWlTRmFDb3FLZ2MrWDJ0STJ5NjRhWkI4ZGdtQXBBLzgzaHcrRFNtMzh3MUhBU0JYNHFIcHdiU2srZlIxaGxhVkFienRtUTNEdE5MVWNORFJmbXk2aDhoSThXUHFvdFh6dXlpNnFyTDVrTk93NUIyTWc5SWtDbjNuZFZoZkJaeVd3UlNrVThyQjlpekJ0dlpmQjNKd1Y3UU5FaVcyUXIxcEM4TTIrOUxiRFNnQUExNFF1QWtQcWVBeU9JUlZFMGdjd255andLWHp6YjFYK0I3Wk1XcW5aN0VaeWZITTU0S0hDdW1IekU2aWF4YmhlRmpOdkFyTWhBRHVYTEcwTmtNeVFSSUUrZ04xNi9BcGNzMmlicWR3bkxvNFc4OU9zWm1qTUtOSFIwVHhQMzJEKzdGSElNZnNCR0RJNUhDQUJXbWRJb3NBV1J1amkyZks1elZUdWMwcTBpWXVRS0lVcTdpeURjMVVJbEczVzR2SXI4TzFMYjdOYzJlNEFMa2xUTTNvc0JYQ1ZEQ0dqb1VMNUZhaUJmTzV4SkxIbHhyYWx6UFJocTRsUUZTOTdsT05VUlRPWU9iMzNGYm4wYlIyVWEwRDNpWUpaNFBjQTJxSnVac2lSek9wekN0d3BxWFE3dzlyb0s4MSs4K3RBMjhYSmtFUkJvVG40RlRMb3V6cURqYVdJUzZ4VG5VMFUrTkNySEM0cUtodmFCSWt2bDc2dGc5cGJPdE1uVCtjNE4vYURLSUMrNEpzZ3BKQWo5VExrd1hkZlF4eTFCOGVRbGc4S3l4cTRid25CZkpqcXppU3F5amJyNFRIcmlyREJISVYwYk02RXZoZEliNnMzSWcrZ0krVHdhOGxWZWxtUlVyc2Z1c2NnbDRDR0pncDJocWUrcnpQSXNmNGZneWs2WWtWSVZYaU5LVXJNQi83VjA4R2FsUmV4RWtCWHlKRm0rMzJBYUErbHFob3BORThPVVRZZHFzVm5hTXNIaFF6MitoS0NxekxncGF1ZDVSWUZHM25JRC9MU21ENFRQaEZrTGgwTU1xa0hkSks5WmFrdmhZZE1GZ1BNMFpmbnU2Tm9YUXhkcjJEYUdFTVVCUnRORkJReVFMcGVaTDAyZXE2WlJDZzd5OEN0WXhaV3FqTG5uMmN2LzNNNEpOclNOK3ZveXZ1VnBRUG9HTnVLZHlXRTl5SUs2bGpCbGtNZVREcEdxclhtS1BkUlpUMGNuTVBvMEpZUENwbFo2Q0dIUGxPVHNoWVVHVVJCMWRxbmFhcXFtdm5id2hKOVNZd1VObjhFMyt4bWFuUjBiUytyQUZTUmF6bHJYV01kZVdwTU51QnluT3NYL0o2UWh2M2MxMC9rT2RpUTVuaFk2RGY3cGtJWXVNb05WODJXWTllalRORlJ0WCticVRQRmRQbFM4ZkRyRHBCSC9BbWdnK1I2SmxYVzBGaGhrRm9PSGZMektoT1h2ZHdYVzFFa0d5cjZTMTl5R0tSUHdWQkZnVG1yOWcybWUzbkl6STZpYXIzS3pHZ1dheW5ZVlJRN3VyWDhadTFJdk9URFZoUkVNVEY4S3RZa0xJSU9ja2g0N2wyY2hjRlA2Uk9xc2hLT3BXLzRRVjZDem5CclRMQWVwQ0tpanlmTHhIQTVWSWZSb1lxQ3doQUNJZFlDbXpuZkZ6WVlrMFd3Y0tqU3FobVFUY3dzSXN4bWp4VVdDWFAvTEIxQVY4bHQ2djBpNzRZNUlSaHJlUTMyTmRPV1F6T1kvZFRhSXd4c2dtQXg1S1dnSVl1Q2RZUzF3UFYzMzdxL3plSElaeTI0c1FpSnFrSDR6akxUUDRqQStGcGhhWEJWY0ZTWVZvS25UT0ZmQUUwUTZsTVR3NDBNK21mTHdVbTJzN1B1bi9KdVlCM29KdStscjlVdFBUWmg0QklFdnNSeHZXZklvcUNJdEJiWXpPYXhmZ1ZWU3dqbThYY0JzLzV2RHF2RVNqNy82ckJRekN1V0FzeVpGNkZXMEhWNFJrRnhWeUVNdmlJSTdBeGRGSmpXZ29mSTZtWlZnM3hzeWVLRjVmZ2hIWjNMT1dxdmlZTjN4dVlUTkRQRDBvR1ZBSzZCcWt5Z01DeHVIY0xnZDB1L3VrWVEvTVhRUlVGaG1OOUhrYk9OV09mQmd4YmlhR05rV1E3WUJqaFJLYS9wWE9sVmRTdkJzY0laRWFCTDhLeUNqazBZbUJPYzlRV1QxSFVPUk1GZmE1RzZpZjVUWkNpS2I4Qyt0Y3pncXh5aWxoWnJ3YUxDUDZBUVlmQmRycWRPVG9XVmtjdGdSY1FCWEJGYmNhQUZVTnlLRUxCWlV4RUVCb2lDdnpCbjJPdUlaWVNxQ0FGejM5c0tFNmZOV25HSUVDcG5KNXRmY2cyeGFWdW40bld0ZUNYaUFLNlFKY3NJblNESGttT3VDWWt0QjhVT1FmQnZFQVYvWWRiVnZva1lERU5FZ1Nrd3F2Yjl5YUpxZHdIeHRqcjM0aVY5Q2x3U0dWdXVwWS9WM3Fvc0xtMlJJMVYwMHhhY2EwNW5QZXZRdlI0cU9VUkJ5alA0MmVKRDlVNzZPSDEvTmw4cnRmMHgxT2NIVWZBM0syTjJjUjg0S0liNENaZ3o5blZBVk1IR0lpWjg4Yll1UW1mN2EyUFo0T3NWRGdvaFdlWHFYbE11aDhzY0EzclZ0ZFFOMGNzbE9pNlI3ZS9RQTJIUVJydkZwZ0x1T3Jtc20xdlNIRU1oZzdmZWlkZ3lHZG93QllXSkxUdGExZXo5eHZGUXJpTlU3Sk9jZjFYbnZqUUt5cnhlSUx5cnJabHozWUV1bHlob0k1cWpLeEVqZGRzOFZkenNybGdZaEo1ejNXV1NKcTFOT2ZZZHU0K1k2TEUyOTNVMUlBcit5ZDZ3RG93c25xdXUzODA4VG9jM2pxaUNLb2VvOXc1aHNCVm5RcC9LdDhYaDJwZ2IyYnVPbVVySXhuTElNTE1ObVZuVnpaT2ZVeFRVdWQ2UUdWN2RhODAxVTYxSzJSM3krenEvdllRd2FPTlpMaktJNlNhdEVYWFA3Wml3anh1dFRIeWRiVFZZZjRQVDZjVDI3KzNoOUU5MnA5TnBITmhPcTVPZHcrbDBtaGpmSGN1K3ExaDdqamMvblU1NzdmZm40OHdDejNVcTM5Y0ovVzBUMnpxZ0xWenNBODluYkxubVVIYVpyOWw4em1KWUJ1eC9VbVAvbTh6WFd1ZmVMakljUC9SZHk4RldqbGZuL29hK2g0dWE1MnYyU2JtMzFIZnRWTkh2dWZyWk50aGVzSTlzZk92dGhXWFlOc2JERlNNTXBzWkFyYkIxdExhQjJmV0MrSTQva3hjbDVoek40K2JvZk90c2RRYXhtSE5QN1ZCeXQ4OGtzZE04WkJDcFZlUVdoNm4zTmxUc2hXNTFCdW9ROUlFc1ZZakVDakpiWHhON3JrMXRkZHJiSjFnUUJRMXR2YjJ3REp2dGhZNFJCcTZaZ20xZ21RVStqRHNaek90ZW4wMFF0TkZCaEd3cEwzdktTeG83YzIycWZWSm1lckVEZHV6QTFOUzFMaE91TmNmemJudmZ0Z25uVXNVcThGM3pFZFBINk5jVFM0eXdyTE9ORTBWTGxRQlB1ZVpjUExUUWJoZmJlbnRoR1Ivb09zS2drRTVCNzRBT2pvNHVkSEE0T0RxZm1QUHBxaUJRVzh6c1lsdWpjd3M5VHRQdEUzUHZVNndWNHdnUjFQUzFob3ErbUdXd091MmVReHhzSzhUTE5GQ1lQZFI0bGhjUjRtUGZrTmlxZS8ySzBHZThyZVVnazZhWFhDNjY5ZmJDTW00NWhFRmhyUDI3Zmg4emEweFJxN01yRUFUNnVmcG1HSFhGa1g0YzE4Q3diZEhIb21yMnVzblFHYzA5SFduYjErcTd0K3VXTzk2cHZFOHhnOHhCempObWNGMWFqcEd5SDljMkNSQTVWY3VRVFcxamVWOTl3cVZLWE5udVcrclNTUXFwb3Z5cXRuZm4vNEZLeHVLbGU2dDk4U2llcmJIZXNRc3RkYkF0M0ZIVmFuZVZaWDJSMzhkNkRkc3FnTmxLaDNhTnFTVWFZcGZCczk1a0l0dFU5cisvVUVpZmViMTd1ZGM1ejJWSTF4ckxXTTVyNm9nNlV1M1Y1UndlRTJsWE05Ly9waU1weStkRzMzZVFjMHU1NzJQWlg1M1U3aUhVT2NlckFsRVFqa3NZTEJPVFhDeTBCODFrS3AvcnlZU2U1RGdwSVVRUGtpVlI1eG9FQVFBQXRBaWlJQTZWQ3ZqTytOVmpBOVhaeGpLWTcwVU1wQ2pVaVp6dnJmSDVaMm9hQUFDQUNhSWdEZHZNKzFWbTNsMHhLOXFXSWVwWU5nQUFvT2VRMFRDTnBkUWcwTE9rbldmalB5K1FIdGhFV1RQK05BVEJxL2hBSUFnQUFNQUtsb0o2ekdYd05ibVUxV0FoVmd5YmsrSnZIWEV5QWdDQWpvS2xvQjZ1UVZaWkRkYVpDM1M0bUlvRDRuZFAxQUtDQUFBQXZDQUs4bUlXUWJrWEIwRmJsY1FjVEVSNC9MUTRQOWF0bmdZQUFBTURVWkNYaVZRbjFEblAzTDlrRmdkS0RQeXlWUEk2QzVNUERVUkRBQUJBejBFVTVPYzg4UDl1S2FPY1F4ejR4TUJSQk1tMGdjUStBQUF3QUJBRnpiQVhKOFEvTEhYdmRYR3dEc3pFTlJlZkFac1lLQ1FSMFZUTGxBZ0FBQkFOb3FCWnRoSUc2QklIOXpMUWJ5VnlRTGNlVEdTUTMwdUVnK2t6VUlnWStGMSsyNGYwbXlkdDg0VjJyb3p2K2phVkV0bHMzeHo3TnJlWlk1OWIrZDdCOHgyVG1iRnZIZk52T2M3VjEvYmJtc2ZhV3ZiaFN2T3RzN0Q4cGs0NjI1VThENkhudlE4SU1hN3p2TGlZSjdUNTFwSU9YTWQ4WmtLZVEvUGFmS1JjL3k3eW5HTTIxMzJMYWRlZFROd0dsZmtWVWRBT1NodzhPbzUySjVFRHlucXdFYkh3eFVoMXJQT2hSMktnU2M2UklPKzE5dlYxUWsxekZvSS9CcHBlZW00NHY0N2tPWGNKdGFtUmRWUFZHa2w5M3VmeVBwblpQWDNjeUcvYXZGOWp6eVRBeDEyTDBVNjV1SlZyYmJwdVFTcTNNbkZUZlVlVmlPMEYveG5DUlFvTG8waklRVHFkbEZvQ3FlaW1mWlg0U0E4aEhEbVdCOVQzOWUrMnZVeXdNRHJIZlkxYURMa3hyVENLc1RFSWpLUVQraGlSeE1tMWJ4dWg5K1M3REhDcGc4M0JjMTVUN1RrNWVuSmx4RHcvcm4yWTdmdnEyTzlPczVMbzlVTnVOTUdzLzA2RjJPclhrVko4VEVmdjBOOEN4TVZFRStReGcwSE04MkxEUEphclRSWDZQUmhwYlhkSnFzNTVhdlJsazBDeFY3VmZuWkQ5K2Q2UGlURWh1NUVvcno4NjB1YzF4aEJFZ2EyUWtlTDlCUXNES2RQWlhDSUZYRE9ZSjYyNjJZK1d6N0h3dE4rZENKZ202ajdFNGpPRmp1WDh2bWlmUFVSVTR3czE5OGR5TCtlMlNCQjR1NHFsaXJ1QTc4WGd1cjh6NDVsY1ZuU1lObUZ3Sy8rdEJzTnhBNExBWkIyNExQREZ5Rm9hUXU3bnBhcE56WHZRQmFyT2VTb0RiTzYyaUtYcS9aaklNZldVOXFGK1lGZkxFSllQYkFXQmRPNHZXQnpvSUEvWlZId0RIbVVXOHlxejJkOWswTGhrTklGTFVDaytkU0MxczQrRG5OOW43VHVqQ3k4aktONUwrL2E2a3pGUXdrRFA2WEdybWI2YkZnU2huTS9udjVxb2hIeDB1ZXkwemw3dXZSNUpkdFAzNWIrK1d3b1d4dHJjbTliNUxMVE81NU5Xa2ZCU3FBZXdTeDNRd2hBRXJ2WmJTdnQxT2ZMaGZON2Z0UCtlQjRwQm44TlN5cXpsczdTWE1rM2Vhak9XYStrczYzTFFuT25VTTNRdm4rbG01V1ZEYlRJTEZMSUgyV0w2aGR6UFN4VjdlYVoyMmpKTjEwa1Z3UXZIekg3ZmNFMlhwUWg0UmE5OUMvb3VDdlRaNEp2Y1RQWFNyQTBUMWliaGhib21wNTZVRHNsY2g5WGJiNk9aTFVkYVZjYXVvdGJoWXgyNHZuaitsdEttTzIzZFYxOEwvaG5wNjNEdDdMU2xCQ1VFZEVHUXV5MzBkL3N1NGpuNEprNjlvZGE2M005TEZmc09sa0YzRGQ2RkNJTFVKUmFYdjlWTHcrK05LUW9SQlZlTVBtaXZqWTVoWnd3U01WN0oxMGpzWUdoaXR0OVdsamxVdXczSkJGNFhaVUovTURxNjc5TGhETVZjYlJNR1JVUGlhQ096ZUZkdEVCOUxFb0pGNFJxOFhaQmJwVU1NS2ZyQU5tamxuT2wvekxpdkhHekZTVEgyQlhWaGE2dHJzcFFVaWNMb0Q4Zm5kWmVhRGxwSXFUNjcvQ1R0T2lTTHdjNjROMDFjKzE3NmdIbWdnSjBrdmp0TlBTOHVKdkljTmJVODBTVEh5Q1dpejQ3dk5pMHF6T2VsMTJIZ2ZSY0ZlbWR6YjRUUW1SNy9UelZ1OXE2ak13bFZ2amwxOEo1cDdiZVE5bE12NWRvSTJlbjZlcmc1K3c0OTM2WTcycFZtQWpiWDF5RXZoOGlva3hSUjBQYkFQQkZScVlSbEYwTG05SE5ZaUFWTWNkVDhTV0xaWGVqYVRNZkNYdnYrOUYwVVBCamhKRC9FNUQwMkJqU2xXUHRveHFxejNqZ3ovQVorT3RydnJlUG0xYVhGQWF4TE0vRzExdUhaMXRlaEhoTXR5dWZjcnU5b3o5Wllpd2piU051ckJGNmZPK2dMWVdObDhSUHB0Uld2NzZKZ0wwV0M5SnRxOHgxSWlSVWZBcllsQ0Z2N1hYcFc2L0w0bmxrU3BSUnlUYUZxUHliY3NvNEpkeWVEVjFVSUtNUnpNSlluUXN1dVlSWUFBQVBDU1VSQlZPNXBxbzlNelBPeURyQmErSnoyaWdZOCtYVnk1VnpZV254SHZzbTdHUlBlRjNMTytqR3Izc1dKNDM2TjVkeHNmY2ZYdm84VlEvQXBXR214NnVZTmZzT0pxQkxidXJmaVRRVEJwYzFwUG85dms1ZElSNzZZZlJjMXpadktBWEZ0aEVCQlBRNUdSdERZZXhvekNNVHMyN2FVWVI0cmw5T2UrVnpHN3JkdXBrYWJVK205REx4bVJrc1hzZWRjOVM3ZVJONnZwNDduWk1uQ1VHb2ZQSWdxL0NoSzc2dUVHVTBRQkVHc0pKR1NyZjJ1WlgxTkpZUUs3WUF1aFlyaGQ5WEpnRFJTVGI3SGxzM2NPMHZaOVZDcUxHQjFucWtjYmFDRWdaNGw4bFlMMCswcXIxcXRtZDd6N25TcUtuNEZHZEhYcDE0aXpYTm1PdE0rNXVEVzIyUHZNYTFPSXMybU1VbGRZdmV0NHpybnFlYnNHWE11K3U5QzcvWFVxTzhSS3RwQzIxNW5iSFRtcWNsenBvWXpiRlBQZGNxOXJicW1PcytMYjk5bW0xUVJlcTlUempma2VkQ2ZuNm8yTTUrYnduSCt0dStGRXZJdWh0RHJPZ2MyRUFYdGdpZ0FBSURPUXVuazlsZ1lEbmxURVFraHF0V1cwR1k1bEZLZUFBRFFEbGdLMm1GZFVSTFpsL2ZlalBNMUdWSnFYQUFBYUJCRVFmT1l1UkpzSEdXZHoxeUhDeTJMeWxJQ0FBRFVodVdEWnBrWWd1QW9TVHMrR0NFK0kwZVluQm4rOGlnQ3dQUWk3bjJZREFBQU5NK1FhaDljQXRPUlVGOG0yTWpzL2s3N204N1lTTGp5VlJ2OFZYeXpLZ1Y4Sjk4bkFSTUFBQ1NEcGFCWjlOQ2ZWNHZmZ0o0andTeldZem9SbW5IQ3BoOEJUb2NBQUZBTFJFRjcyR0tEVGRHZ1k4NzZ6VUhmRnVjTEFBQ1FES0tnV1hSTHdFaG05eW9FY1c3NEc1aFdoSjJSK2V0QkV4RVR3M0p3N0h2bExnQUFhQjVFUWJQc0RJZkNjMWppLzhRZjRFL2p5TGF3UW4zZ1A2Y0QvU1cvL1dVVXpibUdhbU1BQU5CeENFbHNucWxSQk1UR282ZEl6NjZpYXQ0ci9nUUFBSkFETEFYTm80cUEyS3FNSFNYNWtLOXEzOHhUeU9ReFkzbFRBQUFZT0ZnSzJrWFY2SjRrMU40Zml3Q1lpdERZNGx3SUFBQTVRUlFBQUFCQUNjc0hBQUFBVUlJb0FBQUFnQkpFQVFBQUFKUWdDZ0FBQUtBRVVRQUFBQUFsaUFJQUFBQW9RUlFBQUFCQUNhSUFBQUFBU2hBRkFBQUFVSUlvQUFBQWdCSkVBUUFBQUpRZ0NnQUFBS0FFVVFBQUFBQWxpQUlBQUFBb1FSUUFBQUJBQ2FJQUFBQUFTaEFGQUFBQVVJSW9BQUFBZ0JKRUFRQUFBSlFnQ2dBQUFLQUVVUUFBQUFBbGlBSUFBQUFvUVJRQUFBQkFDYUlBQUFBQVNoQUZBQUFBVUlJb0FBQUFnQkpFQVFBQUFKUWdDZ0FBQUtBRVVRQUFBQUFsaUFJQUFBQW9RUlFBQUFCQUNhSUFBQUFBU2hBRkFBQUFVSUlvQUFBQWdCSkVBUUFBQUpRZ0NnQUFBS0FFVVFBQUFBQWxpQUlBQUFBb2lxSW8vaDlnTjhaeXp5aVdXd0FBQUFCSlJVNUVya0pnZ2c9PSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIl0sImV4dGVuc2lvbnMiOlsiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiMjI2ODJlZTU0ZjBlNGMxOWJlM2U3OTdkNTc3MGViZmUiLCJvcHRpb25zIjp7InJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZX0sIm1heE1zZ1NpemUiOjIyMDAsInBpblV2QXV0aFByb3RvY29scyI6WzFdfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIzLTExLTA2In1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMy0xMS0wNiJ9LHsiYWFpZCI6IjAwNkYjMDAwMiIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFpZCI6IjAwNkYjMDAwMiIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJIYW5rbyBVQUYgQ2xpZW50L0F1dGhlbnRpY2F0b3IgQ29tYm8gZm9yIGlPUyJ9LCJkZXNjcmlwdGlvbiI6IkhhbmtvIFVBRiBDbGllbnQvQXV0aGVudGljYXRvciBDb21ibyBmb3IgaU9TIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoidWFmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9kZXIiXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX2RlciJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX3N1cnJvZ2F0ZSJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmFjZXByaW50X2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsic29mdHdhcmUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsic29mdHdhcmUiXSwiYXR0YWNobWVudEhpbnQiOlsiaW50ZXJuYWwiXSwidGNEaXNwbGF5IjpbImFueSJdLCJ0Y0Rpc3BsYXlDb250ZW50VHlwZSI6InRleHQvcGxhaW4iLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOltdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUF3d0FBQUVzQ0FZQUFBQnVURFJrQUFBQUJtSkxSMFFBQUFBQUFBRDVRN3QvQUFBQUNYQklXWE1BQUE3REFBQU93d0hIYjZoa0FBQUFCM1JKVFVVSDRBVVVFQmdVU2V3UnpnQUFJQUJKUkVGVWVOcnQzWCtNSEdlZDUvSFBVOVZkL1NOR2pBTlJEQXZaTnB2eHhEZzNOL0hHUzlBNENvbzJtRnNoT1pvaldpMkNMQWlEN3lDY1FNVDVnK1QyN2lDSmRBbXJJQkdRd2cvdEVTSWpsTU55cElnajVHUVJKUmJjQmhtZk44N0VucEFad0F0R1FHYlFKVFA5czU3N3d6MUpISHM4TTExUFZUL1YvWDVKVnJTTHU2cjcrMVMzNjFQUEwyT3RGUUFBQUFDY1QwQUpBQUFBQUJBWUFBQUFBQkFZQUFBQUFCQVlBQUFBQUJBWUFBQUFBQkFZQUFBQUFCQVlBQUFBQUJBWUFBQUFBQkFZQUFBQUFCQVlBQUFBQUJBWUFBQUFBSURBQUFBQUFJREFBQUFBQUlEQUFBQUFBSURBQUFBQUFJREFBQUFBQUlEQUFBQUFBSURBQUFBQUFJREFBQUFBQUlEQUFBQUFBSURBQUFBQUFBRExDcFFBYzhhVUcyVzlKV2pyOHNDb1pvemVFb1lhLy9ORit3SGYzL3N2SXZQeElOUzdPbGJIYlVmUHRJMytHTGYwbTIzV25xWmxBUUFBQ0F6b3dYRmpOaFVydWp4c2Eyc1FhQ3lvcUZhV3BPSzVmOC8zRzI4YmFFTmdOQklZVFNyUVpOUzlxbjlaTldyRk9tdzdla2FCVGhXYm1xMVpXNmYxQVFBQUNBeTRVRUFJOWE0TkZZMnNwZlVMWlZYeS9MbUx3WmtRSVVtcVNDK1V6TEcyZE14SUowWWJkcG9yQXdBQWdNQXdsT2FNS2JjaWJaWjBWY0ZvKzRhS2FyUzJGSVlhRDZWeDZVd1BSTHV0eHpvRlRTK1c5TXpFdkYzZ3lnRUFBQ0F3REhSSVdDcnFuWkgwbDRXS2RrV1VaUFdMdjZCZEJXbFhxWEdtOTZFVDZ5Zk50djZGK1E4QUFBQUVob0VNQ1ZWSzByTXcxSGdZYWp3cVNyTmxNOWNLZEpDZUJ3QUFBQUpETHAyb21NMUJySGNYeXJxK2FycnpFZUJNRUtoV2tqNnozUFBRc0hxMDB0S3pUSm9HQUFBRUJuaHJ6cGh5czZLcmk3RnVMQWVxS2FRbVdRaERqVmVsOFRqVXdrekpIR28yZFlnaFN3QUFnTUFBYnl6M0prUVZUWlVrdHRycms4Qm9KQW8xRlZVMHRkenJzTFZwajFBWkFBQkFZRUJmVEVkbWV6SFFkZVZBay9RbStHVzUxMkcyWWhiYWJYMnYyTmFUREZjQ0FBQUVCbVFXRk1xQlBsZ3RkSmRDaGJjQ281R29xTDBxYXU5TXlSeDR1YW9mTUVrYUFBQVFHT0RjbkRIbFZrSFhGa0x0SWlqa1V4UnFLbXBvaXVBQUFBQUlESERxWk5Yc0xKYjFrWWpWamdnT0FBQUFCQVlzV3g1NlZBcFVrNkVlZ3h3Y2lrMGRZSTREQUFBZ01HQk5UbFRNNXNqcVV3dzlHcDdnRUpkMS9VelJNRGthQUFBUUdMQ3lveHZOeUlZbGZiUWNhSkllaGVHeVBEazZEclZyT2pMN1dZNFZBQUFRR1BDSzVRbk5HNHZheXg0S1F4NGNBdFdxZ1Q3L2ZOa2NialQwWFRhQUF3QUFCSVloTjFNeVd3c2xmU3dLR0g2RVZ4VURUUllybWp4Wk1nOUZUZjJRWVVvQUFNQm5QUE5Pd2RHTlp1UVhrZmw0Rk9xTEFXRUJLeWlGK3BBdDYvNlprdGxLTlFBQWdLL29ZWERzWk5Yc2ZLUFZSNElDeTZSaURZbmRhQ1FLOWNWZlJPYXhzS1h2ME5zQUFBQUlEQU5xZVZKemlVbk42T1dMV05DdU9OUzdaa3JtSDBjYmRwcUtBQUFBWHpBa3lZSHB5R3gvWTExZktnYWFwQnJvK2N2NGFtL0R4K2VNS1ZNUkFBRGdBM29ZRXBnenB0d3A2c1BWZ25aUkRUajdVaGEwS3c0MGRxSml2anEyWkdlcENBQUE2Q2Q2R0hwMDNKaE50cVE3QzRRRnBQSEZERlFyRzkwN1V6UTNVQTBBQUVCZ3lKbVRWYk56UTBYM3N3SVMwaFlWdGZmNXN2a3NRNVFBQUFDQklRZm1qQ24vSWpJZkwwbWZvUnJJU2pIUXBDM3IvdVBHYktJYUFBQ0F3T0NwNDhac2lpUGR4aEFrOU9XTGFqU3lvYUw3VDFiTlRxb0JBQUFJREo2WktabXQxYkx1REVPTlV3MzBVMG42ekV6SmZKQktBQUFBQW9NblRsYk56aWpVRndQRFJtendReFJxNm9XUytRZm1OUUFBQUFLREI1aXZNSHlhTFQwd1g5S2VodlRsT05hY2orOHhERFZ1UzdxVGVRMEFBSURBQVBUQnhMeGQyTEpvbjlwY3Q3ZldyZmExWWgzMjdzc2JxRll0RXhvQUFBQ0JBZWlyc1NVN2UzbmQzamRmMHA1bVJ3ZTgrZ0ozSjBOUFIyWTdMUVVBQU5MQVRzOTkwR3pwQWRmSGpJcmFTMlhUTlRGdkZ5VHRQMjdNb1ZKSmYxY01OT25MZTZzVzlQbnB5Tnk5dFdtUDBGSUFBSURBa0hPakxmdTQ2MlArc21vSURCblpadTFwU2ZlZHFKaURrZFduZk5uQWo5QUFBQURTd0pBa29FZGpTM1oyYzkzZTJwQytIRnN0K0JJYVdIWVZBQUFRR0FDUGJGbTBULzJwckZ2YmJUM213L3VKUWswUkdnQUFBSUVCOE1qRXZGMzRpNmI5UnJPai8reERid09oQVFBQUVCZ0FENDAyN0xTcDZ4WWZlaHNJRFFBQWdNQUFlS2htYmYwdm12WWJpMjNkM2UvZWhpalUxRXpSM0VDckFBQUFBZ1BnbWExTmUrUlBaZDNhNmVoWVgwTkRVWHZacHdFQUFCQVlBQTlOek51RmR6VHNGeG9kUGRUUDk5RmRjcFhRQUFBQUNBeUFqN1kwN01GK0QxR3FGdlQ1RXhXem1kWUFBQUFFQnNCRFc1djJ5R0pkZC9SemlGSWszWDdjbUUyMEJnQUFJREFBSHRwbTdlbWdxWHRhc1E3MzVRdHZORkl0Njg0NVk4cTBCZ0FBSURBQUhxcFpXNys4YnU5cmRuU2dYNkVoam5RYm9RRUFBQkFZQUkrTk51eit4YmJ1N3NlNXcxRGpuYUkrVENzQUFBQUNBK0N4clUxN3BGKzdReGNLMnNVZURRQUFnTUFBZUc2MFlhY1g2N3FqSDZFaEttcnZUTWxzcFJVQUFBQ0JBZkRZTm10UDl5czBGQUo5anBXVEFBQUFnUUhJUVdqb3g4N1FnZEZJSmRJbm1BUU5BQUFJRElEbkp1YnRRdERVUFZtSGhqRFVlQ3ZTRkMwQUFBQUdOakRNR1ZNK3V0R00wS1RJdTVxMTlYNkVoaWpVRlBNWkFBREF3QWFHVGxFZnJ0UzFrU1lGb2FGM2hVQ2ZJM2dEQUlDQkN3elRrZGxlS0dnWHpRbENROElmQktPUkRVdjZLTlVIQUFBREV4aU9ialFqNVZDZnBDa3hxS0ZocWFtdlo3bDZVakhRSlBzekFBQ0FnUWtNRzViMDBjQ0lJUlFZV1AxWWNqVXFhaTlMclFJQWdOd0hocE5WczdNWWFKSm1CS0hCdlVxa1QxQjVBQUNRMjhCd2RLTVpLVnA5aENiRU1JV0dla2RmeStwOFlhaHhoaVlCQUlEY0JvWTN2S3liR0lxRVliTzFhWTgwcEM5bmRiNUNRWC9McWtrQUFCQVljbWVtWkxheUtoS0cxWlpGKzFTem93T1ovRUN3YWhJQUFBU0d2TDNoT1dQS0JhT1AwWFFZWnFNTnV6K3I1VmFMZ1NiWjBBMEFBQUpEYnJRS3VqWUlWS1BwTVBSZjNxYnV5V29TZENIUTUrYU1LVk4xQUFBSURGNDd1dEdNUkVYdHBkbUFNM3MwTE5aMVJ5WS9GRVlqcllLdXBlb0FBQkFZdk1aWWF1QnMyNnc5bmRVazZLaW92VXlBQmdDQXdPQ3RFeFd6bVQwWGdITnRXYlJQdGR0NkxJdHp2ZUZsM1VURkFRQWdNSGdwc3ZvVXpRV2NYOWpTZDdLWXoxQW9hTmVKaXRsTXhRRUFJREI0WlRveTI1bm9ES3lzWm0yOUtkMlZTVGl4dXBHS0F3QkFZUEJLT2RBSGFTcmd3c2FXN0d5am80ZlNQZy9MckFJQVFHRHd5c21xMlVudkF2SXVxeHZzcUtrZnhySG0wajRQZTZFQUFFQmc4TUtjTWVXaTFVZG9KdVNkTVhyZlRNbDhNTzI5REdyVzFwdEdYMDM5aHlOUWJUb3kyMmxaQUFBSURIM1ZLdWphd0lobEhERVFvbEJUY2FUYjBnNE5XUTFOWXFnZ0FBQUVocjRyaE5wRkUyR1FoS0hHc3dnTldReE5vcGNCQUFBQ1ExK3hNaElJRGIycldWdHZXMzByN2M5U01uby9MUW9BR0ViR21JdU5NWlBHbUp1Tk1mY1lZdzRhWSt3cWY3N1IvYnRUeHBnSlkweUZ3SkFBd3gwdzZLR2hYZEovVFBNY293MDczWXAxT08zUHdiNE16djhCdW1jTi8rQ3M5bWRMWHMvdjZRMkJUZW5QTFZ5L3hocGpEcWIwWHJZTTRuWHN3M2ZVUVcyWC85eWMwOStFcWU1MSswZEpUMG42dHFSOWtuYXY0UkI3dW4vMys1SitMbW5SR1BQNWJ2RHdOang0R1Jqb1hjQXc2QzVQbW1vd2JqVDAzZFRERC9zeVlMQzlPY1ZqWDBaNUpVbTdqVEZ2b3d5NWNvMmo0eHpLV1ZDNHBSc1N2ci9HY0xCV2QzV0R4eFBkTU9KZGNDaDRlaU4xSGQ5RnJQV0d1Rk9XMDZkVFN4czBuOVg3ajBKTnpSVE43MGRiOXZFMGpyL04ydE16SlhNZ0NqV1ZadkE1YnN4M3QxbDdtaXNTQTZpVzRySGZRM2xmY2FPayt5bERicmo0TitVUmErMnBuSVNGcVc1SVNOdU83bmtlTWNiY1pxMDlTV0JZd1ltSzJWd09OTWwzRVd1OUljNzdaNGlLMmp0VE1xZEdHM1k2bFJ2NnBnN0VaVjJmNW9walVhVHJKZTNuaXNRQTJwRHl6UUhPdUpuQWtBL2QzaUFYVDljUDVPQ3pYaXpwdit2TU1LSXM3ZGFabnJkL2I2MzFvazdlRFVrS1lyMmJyeU9HVFNIUTU0NGJzeW1OWTllc3JiZmIrbDZxb1NmVVZOb3JQd0Y5Y2syYUJ4K2srUjVKdzVNeFpvSXk1TUwxam83ajlYQ2tiakQ2WVIvQ3dtdDkzNWU1VGw0RmhqbGp5bWtPblFCOEZSaU5WQ0o5SXEyYjdtSmJUOFpXQzJsK2htWkZWOU9TR0VBYlV6NytKWlQ0RlRzcFFTNE0vSENrYmxnNElEOTZBYi9pdytSd3J3SUROeHdZWm1HbzhXYWs5NlZ4N0N4NkdZb3hrNTh4a05KK3VuZ3BKWDdGelpUQWI4TXdIS2s3NGRpWHNMRHMyLzN1Z2ZNcU1IRERnV0ZYQ3ZXaHRKWXBUYnVYSVFoVVk0bFZETmpOMGNVWm5PWUtLdjJLSGNZWTVqRDZiUmlHSS8wMytUbS82T3NaL1NiNUhSaE9WTXhtbGxJRnBNanFVMmtNVGFwWlcyL0ZlalRWSHhUbUlHR3d2RG1EY3hDeXo4WXFpWDRiNk9GSXhwajM2c3dlQ1Y0R2Frbi9ZZWdEQXpjYVFQZTdFS2pXS3VqYU5JNjlXTldQVXcwN1RIN0dZS2xsY0k0OWxQa3NkK1ZsNTl0aE0rakRrYnJYM1owNStINzBaYUVFTHdMRG5ESGxRdUNzbXd2SXZhaW92VWMzR3VmTG9FN00yNFZtSjkwZjY2V2kza2tMWWtCc3lPSWsvUnhtNEtudGxNQkxnejRjNldQS3gxTEhmWG5JNEVWZ1dDcnFuV211RVEvazBSdGUxazFwSERjTzlKTTAzemNiTDJLQVhKUFJlZDVNcWMvQ2I0aWZYUFI4ZXprY3FkdTc4SldjdE1PK2ZqeGs4Q0l3Uk5KZjhqMEV6bFlvYUZjYWs0akhsdXhzcDZOaktRYUd5VFI2UjRBKzJKalJlV3FVK2l4MzBldmkzUTMxeFhMelpOdlgxWkgrWGM2YTVQMURGeGptakNrWEN0ckYxeEU0VjJqVFdUbXNZZE9kL0Z4dDZFcGFEd01ncTY3L1RaVDZIQ3l6UHBqdDRldHdKSmRMK2o0aWFaZWtzZGY4dVVyU3B4MmVJL005eS9vZUdCanZES3lzR0dneWpWNkdTa3ZQcHZtK0N4M21KQ0hmTW43Q1RjQSsxMDJVWU9EYXc5ZmhTSzRtYzB2UzMxdHJiN1RXL3NoYWUvSTFmNDVhYSsvdmhvZW5IWnhuZC9kOUQwOWdZRGdTc09yTjkxKzdQbWJOMm5xYWs1L0RVT01NUzBMT1pUbXZZQXZsUHNjZWhpVjVGWjRIZVRqU1h6azZ6cWV0dFE5ZTZDOVlhMDlLK29Sbjc5di93TUJ3SkdBTmdhR2dYU25kZlA4OHpmZGRlbG52b1BXUVk3VU16N1diY3A4WHc1SUdxeDE4SFk3a1l2N0NJNUsrdFphL2FLMDlLdWxlQitlOEpzc2k5VFV3dENJMnJBSFdvcnFvOTdnKzVtakRUcWU1OHpPOWg4aTVEVm1lckY5cnEzdnVrNVRBQ3dNN0hLbkxSZS9KZzliYXBYVUdqS1F5M1dDdTMwT1NydUo3Q0t5dUdLU3pJa0k3VHUrSkQ3Mkh5TGxyTWo1ZmxaS2ZJL054MmpnbnlBNzBjQ1NIUWYzSDYvejdSeHk5Lzh5K0gzME5EQVhENWl6QW1yNm9SaU16SmJNMWhVT25PaXdwcGZjTVpHRmp4dWRqQ04vNXNZQkNmdzM2Y0tTYWcyTThZcTE5Y1QwdjZQWkdmTlBCdVRPYmE5VzN3SERjbUUxQndOclR3RG80NzVFck5qV2I1aHUyWjFhRUFQSW82OTFVMzBySnoydUtFdlRWb0E5SGNyR2s4VC8zK0RvWC8vNW05cUNoYjRHaFdOSGxmQStCdFl0QzkvOXcxcXl0dDJJZFR1MTdiclNUbGtQZTlHbDFuc3VvL0hreExLbC8zNE9LQm50MUpNbk5rc2JQWmZ5NjE4cnNRVVBmQWtQWUZrTVZnSFZLWTRpUDdlaVoxSDVnQXRWWVhoVTVsS1NidjlmSmpQc28rNG9ZbHRRZnJvYU5IL0w0TTdvWWV2aTdIbC8za29OelovYWdvZEN2RmdwQ3ZZdnZvdC9LUnZmK3NtcUc3bk0zVzNwZ3RHVWY5L1R0WFNWcDJ1VUI0NEtlVC9NTmQ1ZFhQY0kzQ2psU1MvRGFCOVhqTXFuR21NbzZWMW9aRnJkMDY0cHNYZWZnR0Q0UFI1TGM5S0Q4dnNmWHplWHBZdWhMRDhOeFl6WUZSangxQk5hYjhGTllLR0JzeWM2bS9KNnZvT1dRTTBtV1ZQMWRndGUrbmRLZjF3NWp6QVJseUU1M09OSmREZzUxZ0dxbUtyT2V5YjRFQnVZdkFEMStZVk1hNHBQbVBJWlFmTitST3owdnFXcXRUZkpkcWxINkZURWZLbHZETUJ6SmxUOE14ZjFIUDA3Sy9BV2dkMm5zb0p6bVBJWXcxUGljTVdWYURqblM2N2ptcDd2LzdYVWV3d1pLdjZLYktVR21CbjQ0a3FzOUdOYTdwQ3FCWVQwbkRWaHFFZWhWS2tOOEFxWDZvOTRvNnkyMEhIS2sxM0hOUCs3KzkyU1ByNytHMHErSVlVblozVWd6SEFuOUR3eHp4cFRaZndIb1hScERmRjZ1NnJlcC90QzBHWmFFM053c0pWbFNkYUg3MzEvMStQcU50TUFGL1EwbHlBVERrZEQvd01DVFJpQmhZQWcxN3ZxWUUvTjJJZFVmR3NOREF1UkdraVZWbDlkVi8wMlByOTlEK1Mvb3J1N1RiNlJyR0ZaSGd1K0JnU2VOUUhMSGpkbmsrcGhwVG54bUdDSnlKRW00WFY1WC9ZVmVEOEFtWmF2YVRnblN3M0FrK0JNWWVOSUlKQlpGN29jdW1OakpKaklyQllZYUU1K1JFMGttSHM5MS83dVk0QmhWbXVDQ3JxTUV1UWhrREVjaU1DUytjZUJKSTVCVUxPZFBJV09iN2lZeURFZEVUcmlZZVB6ckJLKzlraWE0SUlZbHBlc3FCOGRnT0JLQndVbGdxRkYySVBFMzl4TFhoN1JGcGJyRHJESDZNeG9PT2RCejc1MjE5bVQzdjBtK1MyK2xDVloxTFNWSWpZdmxheG1PUkdCSUpvMXgxOEF3TWthWE9nOE1WdithNnB2dUpKcE1DbVRGMWNUamUzdDgzV1Uwd2FwdW9nUnAvTHRpSmlUdGNIQ29uMUpOQWtNaWFZeTdCcENUSHh1anpWUUJudDh3SlZsUzlmVUJvZGVWeDk1RFM2d2U2aEsyRmM3UHhXN2FUeS8zdElIQTBMc1V4bDBEdzZnWWFOTDFNVXYxZFBkaUNNV1FKSGpQWlMvWWN6MitiZ2ZOc0NaWFV3TG5YQXhIZXBBeUVoaGNuTzBTU2c3NHFXWnRQZFd2UC9PWGtJT3ZRWUxYdm40WVJzK3JqaGxqdHRBVXEySllra01PaHlNOVJUVUpEQTR1U1BmanJnSGt4OUdOWm9RcXdHTWJIQjVyTHNGcmViaTJ1ajNzV2VHVXErRklSeWtsZ1NFeGhpUUE3dVJ4RVlGS25YbE04RnFTSlZXZmVkMy8vWWNFeCtMaDJ0cGNUd21jWVRnUy9Ba01ERWtBM0NtVWxidTF5T01PZ1FGZWMzWjlXbXRmVFBEeUsyaUtOWmxhNVg5ZnBFU3JZemdTdkFzTUFJWTg1Rmk5aVNyQVl6MHZxYnJDeWpDUDlIZzRWaFJibTkwWEdwYkU1bUZyeG5BaytCTVlUbFFNUDRBQUFDK2x0RXhucjh0TDdxRkYxb3hoU2NreEhBbitCQVlBTUtHdXBBcndWSklsVlZmYXBPMFp6d0xNSUxxRkVpUUt5bThUdzVHd0JvWE1ra21zc2tJS25wWS9YN1Fmb0FvQTBMTmFDc2Q4S2NGcjN5enB4U0ZyZzlzbDNiWE8xK3d3eGt3d0hLWm5MbnBvR0k1RVlIQW8xdHNJREFDUWlSUEdHS3F3UGttV1ZQM3BDdi8vRnhJR21HSGJNYmZYT1FjN0pYSEQycHNwQjhkZ09OSVFZRWdTZ015RVJ0dW9BangxVFFySFRMSkt6NlloYklOamtwN3U0WFUzYy9tdVgzYzQwbTRIaDJJNEVvRUJBQnorNEJpeGNSdDhsV1JKMWZQT1ZWaGg1YVMxR3NiNVBvdnE3V24xanU3U29PZnpUUzd0RlRFY0NRUUdBQURXd2JlVmliWU1hVHYwK3JSNnBhVkI1N20wVjhSd0pQZ1hHRmdkQlFEZ0l3Y3JFdjM2QXYvYnZUMGVjL2N3dGtYM2FYVXZ3NUsrWW95cGNEV3ZXVTBNUjRLUGdRRUFBRThsV1ZKVjF0cWxDL3pQQ3dtQ3pMRDJNdHpmNCt1MmN5bXYyVTBPanNGd0pBSURBQUJEbzViZ3RhdU5rWDh1d2JHclE5b2VoM3A4M1hWY3ltdm1ZZ2dldzVFSURBQ1FqamxqeWxRQm5rbXlwT3BxWStSL2wrRFk3eGl5ZHFoS2tyWDJsS1JIZW5qOVhReEx5aFREa1FnTUFKQ09SbGx2b1Fyd3pCVUpYcnZhYnM2L1QzRHN0dzVaTzd3MklCM284Uml2SDVhMHdPV2RDb1lqRVJnQUFCZ3FTWmI3WFcwMzV6OGtPUFpsUTl3bWovYjR1bys4N3Y5K2pzczdGUXhISWpBQUFEQlU5aVY0N1FWM2M3Yld2dGluOTVWcjNicjFzb2ZDSGdlclhtRjFQNmNFQkFZQVNFMjdyaVdxQUY4NEdQTytsdDJjdjluSDk1ZG5EL2Y0dXF1NXNsTjNGU1VnTUFCQWFyWlplNW9xd0NOdlQvajZYNi9oNzh6MzhmM2wyYzk2Zk4xTlhOYXBZOThMQWdNQUFFUGpraVF2WG1VUGhtWFBKRGhGYlZnYnBqc3M2ZlllWHNxd3BHeXc3d1dCQVFDUVkyUFdXdFBMSC9XK00zRmVYWnJndFdzZGF2UlNnbk5zR1BKcitZa2VYL2QrZmdaU3g3NFhCQWIzVEp6b0J4TUFnRFFrV1ZKMXJVT05rdlF3WERQa2JYR2t4Mk5OT2FnOUx1d3VlbklJRE03RlZuT1VHd0RnbVNSTHFtWnhNN3B4bU51aU8rU3JsMkZKdTQweGIrUHlYdEUzSFIySENlWUVCZ0FBQmw2U3BVdlgxSE51clQyWjRCeDdhQ0w5b01mWFhVL3BWdlMvMU50dTJxL0hCSE1DQXdDNDFlbm9HRldBTHh5czh2SzdkZnpkcHhPOHo2RitVdDdkVWJpWCtrMXhsVi9RQVFmSFlJSTVnUUVBM0lxTi9oOVZnRWVTTGxuNiszWDgzUjhuT0UrVnB1cHBaK0hkR3E0NUlPdDF5TkZ4bUdBK0JBcVozU2dVOUR6bFRzOU0wZHhBRmR4ZHEyTkxkcFpLQUFQdmtvU3YvOE02L3U2dkVwem5Ta2tuaDd5dGZ0VGo2K2hsV0lHMTlwUXg1cEZ1c0VwaXFzZEFCd0xEQU4wOHhwb0xBdi9Yd1k2SzJrdHJ1ZEZzNlFGSkJJWlUvb0ZhMXhBT0lHMlhKcnVlN1l2citPdS9TWENxdC9MYllVLzJlSE83bTh2OGdnNDRxTkZ1WTh6YnJMV25LT2ZneW14SVVydXVwVHdXcUNQOUs1Y0o0Q3FCcjJzSUI1QzJKRXVxcm5mQ2FKS3dmTm1RdE1kcUswSWQ0SkoxenRXd3BCc3BKWUhCaVczV25xYmNBQUNQSkZsU2RiMURoSktFNWZjTVNYdXN0aUxVSVM1WnQ3cTlBaTZXV0wyWmFoSVlBTUFKNWpMQk0wbVdWRjN2bklSZkp6alhEcHJxbFp2YlI2aUVjdzg3T01ZT1k4d0VwU1F3T05HS2RaaVNBd0Q2emNHU3F1dWFrOURkZ0N6Sis5MUNxMG1TdmtZSm5QdVpvK1BzcEpRRWhseUlPME8xSXlhUU82VzZma3NWNElta1M2cjJNaWNoeWRDUFMyZ3lwemUzZURYTXZpZzN3NUsrNGlDSWc4QWd4VGJkbFdjS1ZtOXkva1hxNkJrdUU4Q05tclYxcWdCUEpMMEI3MlZPd255QzgxMUtrem05dWNYWkhuWjBuTzJVa3NDUVhMaXVOYXNCREJDR0pNSXpTVy9BZS9uMzdLY0p6bmNGVGViODVoYXZldExSY2E2amxBUUdCMDhHMGwyaTFBYTZ5UGt4aS9sY0RoYndqWW4xRWxXQVJ4TGRnSzl6RHdZWE50Tmt6bTl1OGVyMXZDVHBkZ2VIdXNzWWN6RVZKVEFrc2xSTzFCMjcrb2N4N245UTB3NDV3TENJcmVhb0FqeVNaRW5WWGxmcVNUTEVkUTlONXZ6bUZtZDd3dEZ4cnFhVUJJWkVKdWJ0QWlVSGh2YlhobDFBNFpNa1M2cWU3UEYxaTBuZU1FOXVVN201eGF1T09Eck9UWlNTd0pCWW11T1lpNEVtWFI5emJNbk9jcGtBeVRXYjZmWXdBdXU0OFU2NmtzcytZNHhkN3g4bDI0dEJrdDVNNjUxMWMvczBaWERIWWMvTkhzSXRnY0hCQmRuVFVuUnJObWRNMmZVeDQ1aWhGRUJTN1BZT2o3dzlwKys3UnRPZGRYUDdJSlZ3emxYUHpmc3BKWUVoMlpjOFhQZnVtT3ZTS09zdHJvL1pFZk1ZZ0VUZm9ZNk9VUVY0Sks5N0dteWk2Yzd5RkNWd0hzUU95MDNQelJUVkpEQWt2QmpUdmZrMlJuL20vRDJ6RndPUU5IUS9UeFhna2J6dWFYQWxUWGZXemUxUk1Td3BEUzU2Ym5ZYlk5NUdLUWtNUFV0OVRrQW5oVEdlVE5ZRUVtbGJQVWNWNEpHODdtbXdoYVpMNWVZV1ozUFZjM01qcFNRd0pMdW5UM0Y0UWhwTHE3NWMxVys1VklEZXhTMzloaXJBSXlNNWZkKzdhYnB6SEtRRWJqbnN1Ym1aYWhJWUVta3J2Y0NReGtwSkUvTjJnWW5QUU8rWThBelA3TXZyRzJlWXh6azN0NmZVKzc0WVdKbUxucHNkeHBnSmp6L2pIMmhtendORHg2WTc4ZmxFeFRqdlpXaGJaK3NUQTBNbHphV1VnUjV1dUNzNS93Z3NyWHF1QTVUQXVSODVPczVPajhPbWs5M2FqVEZETVZTd0w0R2hjWkZlU1BjZkJQY1RueG1ERGZUNG84eWlBZkRMMjNQKy90OUJFNTdqVVVyZy9HYjZwTnowM0h4bEFFSzZ6ekxyWFN2MDQ5Tk56TnVGMmJLWkM0SjAxcFFPMjlvcXg4dXROUzdTQzlXR3YxZk1zRDdGVFdNSUd0eUtDNnlRQks5Y2t2UDMvMWFhOEp5YjJ4ZU5NZCtVdElkcU9IVkFidWJOYkpmb2FVN0p5YXhPVk9qWEoyeGJIWWxTMm9RbUNQVXVTZDl3SFhKZUtKbGpZYWh4SDYrWXkrdjJ2bUg4cHZ5eWFnZ01ubU8zZEhqbTBweS8vOHRvd3ZONm1NRGczQ0ZIeDduTzQ4QndyL28zcHlsWHl5UUgvVHB4bWtOOEFxT1JWT1l4aE02K1BNQlFZUDRDUEhSRnp0Ly9QcHJ3dkg1R0NkeHlPS0g4TG1QTXhRTmNxbjdlK0djMjVMZHZnYUhTMHJOcEh0L0UrcmV1ajdsWVlpdzJzQjV4d0taSzhNNUkzajhBWThMUGUzUDdvczQ4TFlaYnJpYVVYKzNwNSt2bmZaMkw0WVV2RFh4Z3FGbGJUM00vaHFKeFB6Ti9ZdDR1cFBtZWdVSFRXbUwrQXJ3ekNFL28zMDR6bmhmTHE3cm5ha0w1VFo1K1BoYzMzTDMyV3JvWVh2aENWb1VLK3RsS25WZy9TZTJEQmFvZDNXaWNQMGxxV0ZaakFOWWlqalhIL2d2d2lZc244OVphay9TUHBMR0ViK01TV3ZPOFdQN2NzVzdQelRjZEhHcVBwM3VJdU9oaCtLc2VYL2NlQitmT2JDK0p2Z2FHWmx2L2t1YnhxdzMzNDhvcUxUMGJXeTN3TXdKY0dIdVh3RU5Kbjh5N2VvS2Q5Qi81UzJuSzg5N2NMa202blVvNDk3Q2o0MXp2NFdmN3RZTmo3Rjd2dzRodWVOcmg0Sm8vTlJTQlladTFwOVBjUWJrWTYwYlh4NnhaVzIvSFRINEcxdURubEFDZVNmcGszc2tTaGc0MmpMcUdwbHpSRHlpQmM2NG1sRTk1R2pKZFBBall2czYvLzA0SDU4eDB6azdRNzhaSzh5bGtFS2gyM0poTnJvLzdjcFVmSk9CQ1lxdUYwWWFkcGhMd1ROSW44eTU3bDVQY3BHeWtLVmU4QVR3cXNkaUM0NXE2R3BhMDI5TmRrZiszaTgrMnpyLy9TUWZuL09sUUJRYWwvQlN5R0xsL0VqTXhieGVhSGJhaUIxWjhFRUF2SFB5VWRFbFZsOHVCSittdFlMK0JDM3VRRWpqbmFsalNlejM4YkM3dVEvY1pZeWJXOGhlTk1lK1ZtdzN4TWwzaHFlK0JZYlJocDlPY0UxQU05UDQwamtzdkE5Qy9Cd0ZBajVJdWhPRnlDY05FLzloN09vSFVGMDlSQXVlZWRIU2NtejM4Yks1R3VueDl0ZEJnakptVTlKaURjejF0clQyWlpaRjg2R0ZJOVdsa1lEUXlIWm50cm85TEx3TndmZ3hIZ3NlU0xxazY1L0M5SkEwZlZacnovTHJEa2xoaTFXMU5YVTBvMzdIV0ovRjUvR3lTZm02TXVjY1lNMm1NMmZLYVA1UEdtSHNjaHRuTWU5RzhDQXpOWnJyREY0cUJya3ZqdVBReUFOaytBQUI2NVdpenMwV0hieW5wK3VsWDBxb1h4QU05OTU1d2RKeS84ZkN6dWJ5ZjI5Y05CaWRlOCtjcHVkMERKdk5lTkM4Q1ErcXJKUVdhVEdQeTg4UzhYV2kyOUFDL0ljQ3I0aUM5L1ZXQUJCSnZkdVo0Q2NPazRXTURUWHBCUExod3o5WFFuYnQ4MjYwOFo3MVNqM1RmNy9BRkJrbHFkNXlNNlZwUkZLV3ovbSt4clNmVEREdEFyc0pDckxteEpUdExKZUFocnpZN2N6RCttQjZHMWNNZHc1TGMxdFRsUGhmYlBmeUlYOHRKVTl6Ymo1TjZFeGhlM3BEdU1taFJxS2swZG42dVdWdHZHbjJWbnhJZy9lQVBKSkIwU2RWN1Bmczg3NkZKQitZR01FOWNEVXZhN2VGbmV6SUhJZk1SYSszaG9RNE1FL04yb1JVcjFTSmN0SmpPdUxteEpUdmI2T2doZmtjdzdOSU8va0FDVjNqNG5wS0VrQjAwNmFwK1JnbmM2dDZzdXZpZDMyZU11ZGl6ejdZazZiOTYzZ1I5ZTNBUitGU0ZWdXdzdVo1WFdyMXJjSE8xQUFBTHBVbEVRVlFNa2hRMTlVT0dKbUdZdGR0NmJHTGVMbEFKZUNycGIvOVBmZnRBbm02QzVkTU5vS3NOeDNBMlZ5djBYTzNoTlhOVTdvWmRPUThML2VwZDhDNHdiRzNhSTJuZmRLZlZ5MUN6dHI3WTBKZjRIY0d3aWcxcm44TnIreng4VDBsRHlDVTA2Nm9lcGdUT3VmcXR2OG5UejNlZi9CdWE5TFNrLzlMUE54RDQxa3FwVDM1T3NaZGhtN1duRzlLWCtTM0IwSVdGV0hQc3ZRQmZPVnFSSlkxZFZaUHV4WEFwcmJ1cUp5bUJXOTJuOEM2R0plM3hjUVBDN3RDa1d4eDlSbGRoWWFyN3ZnZ015NHJ0OUwvY2FmVXlTTktXUmZzVUc3cGgyTFFDSGFRSzhOamJQWDFmY3dsZmZ3Vk51NmFidjl1cGhIT3VoaVZkNytsMWMwclNsQWVoWVRrc25PcDNUUXErTlZMTjJ2cE15UnlJUWsybGRZNG8xTlNKaXZsSldzcy9qamJzL2hkSzV2SXcxSGhXZFpzcG1odGNIL1BsRFhxYU1lbFlUV3kxRU5XWlhBaXZ1Umk2OCtzVTNsZlN2UmhHYU5vMWVZSVNPUGNqUjhlWlVoOTJMVjVyYURER1RPbk1VS0E5d3h3V3ZBd00wcGtkbEtOR2VvRkJra0tyRzNWbW5Gb3FncWJ1NlVTNkxhdlFFQlcxMS9tTllGM1BTeUl3NElKYXNSN2RZbTJkU3NCamlZZnVwREVjb0h0RGt1UVEreVRkUnZPdTZnZ2xjSDd0bmpUR1BLTGt5NlB1TnNac2NiQXZTWnFoNFQvcHpOQzJiMmQ0NnRzbDNkZnZZVWhuM2RmNjJFQlpMTEZhRERRNUhablVOZzZwV1ZzUG1yb250dHh3WTdBdFZ2VmpxZ0RQSlIyNmsrWktPNGttVi9xMk5LV25OMzFMa2o1TkpaeHpOZno2dmI1ZlA5YmFCM1ZtYUdQYXk1cmVLMm5NV251M1QySEIyOEFnU1IyVC9wam9jcWhQemhsVFRqTTBMTloxQjZFQmc2clowUUdHclNFSGtnN2RtVS94dlNWOXN2cG1tbmROV01YTnZVT09qbk56VG9MbktXdnRiWkxlSk9udjVXNGxwYWU3Z1hiTVdudWJyNzB0eGxycmJlTThYemFmTFFhYVRQTWNqWTRlMnRLd3FZYVQ0OFpzcXBaMVoyRE8vS1AxNTR2MkE2N1A4Y3VxK1ordWoxbTMycGZXUEErZlAzZXpwUWRHVy9aeDM2L2xOTnBudmZXY0wya1BnUUVBTUl5NnF6eTlVOUlXU1pmcHpBN3NxMjJxZUsvT0RQZCtUdEkvK3pKSFlUVUZuOTljeCtoZ1Vla0dobEtvRDUyb21QK2I1bzN4Tm10UEh6Zm1qbXBKdHdhQmFuekZNQWpvWFFBQURMUHV6ZjRwdVpzRTdxM0E1emMzdG1SbjA1N0xJRW5GV0I5Tyt4emJyRDF0R3JxajA5RXh2bUlZQkM5WDlRT3FBQURBNEF0OGY0Tlp6R1VJUTQybnNTenA2OVdzcmIralliL0FaWWU4bzNjQkFBQUNnemV5Nm1XSWl0cDdvbUkyYzBrQXE2TjNBUUFBQW9OWHN1aGxrS1RJNmxOcHJwb0VESUpHUncvUnV3QUFBSUhCSzJOTGRyYlpjYmJlNzhyRkNGUnJSZWx1R0Fma1dXeTFFRFgxUXlvQkFBQ0J3VHRaRFlHSVFrMmx1YUVia0dmdHRyNVhZMWRuQUFBSURENmFtTGNMelpZZXlPSmM1VkNmUEc3TUppNFA0RlZ4ckRuWCsxTUFBQUFDZzFQRnRwNk1ZODJsWGhTamtVcWtUekNmQVhoVjAraXJWQUVBQUFLRDEyclcxdHRXMzhyaVhHR284VTR4L2YwWmdEeG94VHJzKzY3ZkFBQ0F3Q0JKR20zWTZTeVdXWldrUWtHN3N0aWZBZkJaYkxYd1VrWC9SQ1VBQUNBdzVFYVdOeTlSVVh1WkJJMWgxbTdyZXl5akNnQUFnU0ZYc3B3QUxURUpHc09yMDlFeEpqb0RBRUJneUtYUmxuMjgwOUd4VElwa05GSXQ2MDVDQTRiTlVsTmZwd29BQUJBWXVKbFpZMmhnNVNRTWsyWkxEMnl6OWpTVkFBQ0F3SkJiMjZ3OW5lWFFwRERVZUJ6cE5rSURCaDFEa1FBQXdFQUVCaW5ib1VtRUJnd0xoaUlCQUlDQkNRekxOemV4VldhcnVMQkhBd1laUTVFQUFNREFCWVp0MXA1dUdmMlBMTTlaS0dqWFRNbDhrRXNJZzZRVjZ6QkRrUUFBd01BRkJrbmFzbWlmYXJmMVdKYm5qRUpORVJvd1NDNnYyL3VvQWdBQUdNakFJRWxoUzkrSlk4MFJHZ0FBQUFBQ3d6bHExdFlYRy9wUzF1ZU5RazI5VURML3dFUm9BQUFBRUJnOHQ4M2EwNHR0M1ozMWVWazlDUUFBQUFTR25OamF0RWVhSFIwZ05BQUFBQUFFaHZNYWJkajlXZTdQOE5yUVlNdTYvN2d4bTdpOEFBQUFRR0R3K2NNMWRVK1crek84Y2w2amtXcFpkODZVekZZdU1RQUFBQkFZUEZXenRyNVkxeDM5Q2cxUnFDOU9SMlk3bHhrQUFBQUlESjdhWnUzcGRxeC83TmY1cXdWOW5tVlhBUUFBUUdEdzJHakRUdmRqNWFSbExMc0tBQUFBQW9QbnRqYnRrVVpIRC9Yci9NdVRvVTlVekdZdU93QUFBQkFZUExTbFlRLzJZN25WVjRwdE5GSTJ1bmVtYUc3ZzBnTUFBQUNCd1VPakRidS9uNkZCa3FLaTlqNWZOcDg5dXRHTWNBa0NBQUNBd09CaGFHaTM5VmcvMzBNeDBPUWI2L29TUzY4Q0FBQ0F3T0Noc0tYdjlHTmp0N09LMzExNjlSZVIrVGdUb2dFQUFFQmc4RWpOMm5yUTFEMzlEZzJTVkNob2x5M3Jmbm9iQUFBQVFHQWdOSnkvSVY3VDI4RGNCZ0FBQUJBWVBBc04vWjRJdmF4UTBLNDMxdlVsVmxJQ0FBQUFnY0dqME9ERDZrbXZOSXJSU0ZUVTN0bXlZVkkwQUFBQStxcEFDVjQxMnJEN1owcEdVYWdwTDRKRG9Gb2tmZkg1c2puY01UbzR0bVJuYWFVTXZoU2hkajFmTmxlNlBHWm90STNLQWdBQUFzT2doSWFpK1gxVTFGNWYzbE14MEdSUm1pUTRaQmZVQXFsR0pRQUFBQWdNNXc4TkxmdjRkR1QrV0Mzbzh6NjlyK1hnOEVMSkhHdFlQVnBwNmRtYXRYVmFEQUFBQUFTR2pHMXQyaU1uS21aZkpOMGVHSG0xYWxFWWFyd3FqY2VoRm1aSzVsRGI2cmtxTFRsMDJuVXRVUVVBQUpBMkpqMWZ3TmlTblYyczZ3NGZsbDA5YitPZFdZcDF5cmVlRUtSdnNhMjd0MWw3bWtvQUFBQUNRNTl0cy9aMDBOUTlyVmlIcVFiNkxiWmFlR2xKdDJ4dDJpTlVBd0FBRUJnOFViTzJmbm5kM3RmbzZDR3FnWDdwZEhUc1QyWGRTczhDQUFESUVpUGYxMkZMd3g2Y0taa1RoVUNmODIxZUF3WmJzNk1Eb3cyN24wb0FBSUNzMGNPd1RxTU5PLzJuc203MWRWNERCa3RzdGJEWTF0MkVCUUFBUUdESWtZbDV1L0NPaHYwQ1E1U1FwazVIeHhicnVvUDVDZ0FBb0o4WWtwUUFRNVNRbGtaSEQyMXAySU5VQWdBQTlCczlEQW1OTnV5MHFldVdkbHVQVVEwa0ZjZWFxMXZ0SXl3QUFBQmYwTVBnUUhlMzVXL01sTXhUOURhZ1Y0Mk9Ib3FhK3VFWXUzY0RBQUNQME1QZ0VMME42TVZyZXhWcWhBVUFBT0FaZWhnY283Y0I2MEd2QWdBQUlEQU1xZEdHblo0ejVwWkdwUGVWUW4ySWl1QzFPaDBkVzJycTYyekNCZ0FBQ0F4RHJOdmJjUEM0TVQ4dGxmUjN4VUNUVkdXNHhWWUw5WTYreGxLcEFBQ0F3SUJYZEo4aTN6Y2RtU2ZLZ1Q0WUJLcFJsZUd6UFB4b0s4T1BBQUFBZ1FIbjAzMnFmR1NtYUc0b0ZQUzN6RzhZRHMyT0RyeGMxUThtNXUwQzFRQUFBQVFHckdxMFpSK2ZNK2JKWmtIWEVod0dWeXZXNFk3UndiR0duYVVhQUFDQXdJQjE2YzV2T0JNY0lrMUZvYWFveXZyRlZndStCYTVYZ2tLZG9BQUFBQWdNY0JNYzloL2RhSDV3MFV2YVFZL0QrblNzamdmR2o4bmtCQVVBQUVCZ1FHcTY0OXNacXBSRHpZNE94SUYrUWxBQUFBQUVCcVJ1ZWFpU3BNZW5JN09kVlpYOEZGc3R0R0k5dWxqVmo1bk1EQUFBQ0F6b2krVlZsVTVVek9aQ1IzOWRLR2dYVmVselVJZzFWNCsxdjlMU3MxdFlIaFVBQUJBWTRJT3hKVHNyNlJ0SE41cUhMM3BKT3dxaGR0SHJrR0ZJc0Zwb3h6ckVzQ01BQUVCZ2dOZVc1emxJZXZ4RXhXd09ZcjI3RU9oNjVqcWtveFhyY0N2V0U1V1duaDJsTndFQUFCQVlrQ2ZkWG9kWlNmdG5TbWFycEtzSUQ4bDFPanJXRG5Wb3NhUm5tSnNBQUFCQVlCZ0lvdzA3TFdtYThOQ2JWcXpEY2FDbkNRa0FBQUFFaHFFS0Q4ZU4yUlFWOUcvQ1FPOE9RNDFUblRQaVdITnRxeU9TZmw1c2F2WnloaHNCQUFBUUdJYlJObXRQU3pxdE0vczdsRnVSTmx0cHJDQ05EMU9BaUswVzRvNytUNmVnNmRhU251L1dCUUFBQUFRR0xPdnU3N0RjKzNCd3pwaHlvNnkzQkcxZGJrSmRHUnB0ZS8wUXBsSmR2ODNqWjIzRk9oeGJ6WGFzZnRXNFNDOHd6QWdBQUtCM3hscExGU0JKZW0ySVVLQkxSaHQydisvditXVFY3RFF0VlJUb1ZMT3BlWG9QQUFBQUNBd0FBQUFBTWhKUUFnQUFBQUFFQmdBQUFBQUVCZ0FBQUFBRUJnQUFBQUFFQmdBQUFBQUVCZ0FBQUFBRUJnQUFBQUFFQmdBQUFBQUVCZ0FBQUFBRUJnQUFBQUFFQmdBQUFBQWdNQUFBQUFBZ01BQUFBQUFnTUFBQUFBQWdNQUFBQUFBZ01BQUFBQUFnTUFBQUFBQWdNQUFBQUFBZ01BQUFBQUFnTUFBQUFBQWdNQUFBQUFEQXN2OFBsZHI2TkhSMys3WUFBQUFBU1VWT1JLNUNZSUk9In0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIwLTEwLTIxIn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMC0xMC0yMSJ9LHsiYWFndWlkIjoiNzlmM2M4YmEtOWUzNS00ODRiLThmNDctNTNhNWEwZjVjNjMwIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI3OWYzYzhiYS05ZTM1LTQ4NGItOGY0Ny01M2E1YTBmNWM2MzAiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiWXViaUtleSA1IEZJUFMgU2VyaWVzIHdpdGggTkZDIChFbnRlcnByaXNlIFByb2ZpbGUpIn0sImRlc2NyaXB0aW9uIjoiWXViaUtleSA1IEZJUFMgU2VyaWVzIHdpdGggTkZDIChFbnRlcnByaXNlIFByb2ZpbGUpIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NiwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9LHsibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMzg0cjFfZWNkc2Ffc2hhMzg0X3JhdyIsImVkMjU1MTlfZWRkc2Ffc2hhNTEyX3JhdyIsInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6OCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo4LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlEUGpDQ0FpYWdBd0lCQWdJVVh6ZWlFREpFT1R0MTRGNW4wbzZaZi9iQndpVXdEUVlKS29aSWh2Y05BUUVOQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU1aNi9UeE04cklUK0Vhb1B2Rzgxb250TU9vLzJtUTJSQndKSFMwUVpjeFZhTlh2bDEyTFVoQlo1TG1pQlNjSVpkMVJueDFvZDU4NWgrL2RoSzdoRW03SkFBTGtLS3RzMWZPNTNLR05MWnVqejVoM3dHbmNyNGh5S0YwRzc0Yi9VM0s5aEU1bUdORDZ6cVljaENSQUhmcllNWVJERjRZTDBYNEQ1bkdkeHZwcEF5Nm5rRW10V21NbndPM2kwVEF1Y3NyYkU0ODVIdkdNNHIwVnBnVmRKcHZnUWppVEpDVElxK0QzNWh3dFQ4UURJdituR3ZwY3lpNXdjSWZDa3p5Q2ltSnVraFl5NktvcU5NS1FFZHBOaVNPdld5RE1UTXQxYndDdkV6cHc5MXUrbXNVdDRyajBlZm5POXMwWk93ZHdNUkRuSDR4Z1VsNVpMd3JyUGtmQzEvMENBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUI4R0ExVWRJd1FZTUJhQUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUU13RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCRFFVQUE0SUJBUUMzSVcvc2dCOXBaOGFwSk5qeHVHb1grRmtJTGtzMHdNTnJkWEwvY29VdnNyaHpzdmw2bWVQTXJiR0pCeUoxWG5xdUI1c2djUkVORnhkUUZtYTNtaW84VXBmMW93TTFacmVYckowbUFERzJCcGxxYkpueGl5WWErUjExcmVJRlRXZUloTU5jWktzRFpyRkF5UHVGakNXU1F2Sm1OV2U5bUZSWUZnTmhYSktrWEliNUgxWGdFRGx3aWVkWVJNN1ZvbEJObGxkNnBSRktsWDh1c3Q2T1RNT2VBRGwyeE5GMG0xTFRoU2RldVh2RHlDMWc5K0lMZnozUzZPSVlnYzNpcm9SY0ZEMzU0ZzdyS2Z1NjdxRkF3OWdDNHlpMHhCVFByWTk1cmg0L0hxYVVZQ0EvTDhsZFJrNkg3WGszNUQrV1ZwbXEyU2gveFQ1SGlGdWhmNHdKYjBiSyIsIk1JSURTakNDQWpLZ0F3SUJBZ0lVUjM4bXEyNlNmMnN6VlYyQmRHNldFTjdrdVdVd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVJZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU5ZMFdiOW9Qb1JvS29ReVdQYUpwejExdnJXVGc2elR0bU5qMlZvS1JueXZLR1JxcHpiODN3NWw2WUE5NlVZa1lCRFFQMGlsTzJEUGU2d1dxVlI1ekRmUnpkY0g4YmgrTDdkR0d2YWU2aFJUWmhrRmtDcFhEczRIY2NrbnJEZjhGQ2xKN0hlMzlKZjQyL0cxUW0yeno5V1dtclBYdGdpSy94MDVHanNRZkd1REcxemY1UVRVVWllOGx3eW1LM1RmZE92TmVlSkFBUGUycG43SXRmUmIrclZyTldpRHpsUm4ydk5uWjJ3UG80d0gvV0o2ZGhYWkcrck1XVCthNkJvY2cxVWZJdzZrZHVuRzRiVHBaenN2YWNGWXlSMG1wZitEZU9ucFNXQW15d0pXSHZUbGYyWVh4RnllWGNUQUNkUWxjTU5HSjJWaFpRNDh4dFA1L1JCUC84a0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ2h5NDJva2lxY1RTMWlxYS9IUldqa0JuNEgvTUI4R0ExVWRJd1FZTUJhQUZPcTNRcENlREh0a2V0dFVmQU82ZkU2ZjJLRmhNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUFuK1JISVBidE1FRE5kVDFnOEgvUml0QWtVZExnQXQxdFdHV25sajlrbmJ2NC80R2xYN0M5cDQ1ZWZQTzkvYVpMNk9WMVhSS0JpNkttdEJXNUs3bnVZRW5NeC81QnFCU2JMVDdyaGR1QzQ5VEJlTWI5UEhkWHNUbFNWTlllZnIxZEdpZHI0ajB4VkJRTGIxcmtuREFiZFdEektmdm5heUtPOEZyd2U3SHg4NDNNRy9ySitjMFhydVV2YmZWVENITGlJV2hNN29ORGhMOHhvYjZ4VW85S0xLY1NMK0l0WXNPMy85V2I4UTlHanNxTDRGWHNEY0cxU2FZaDdLcGZ1TW1PaXhxekpaTzJuSWljUFlSZzFJMlN1aVVmWU83MHRtZEhjYmwra1NRbVNZdDdycTR2aUlMZzJHeDNqOXJJVHVXVGpiYVVhU1NReGdPbU1TSHV5ek1BQyIsIk1JSURTRENDQWpDZ0F3SUJBZ0lVVWNtTVh6UklGT2dHVEswVGIzZ0V1Wllaa0JJd0RRWUpLb1pJaHZjTkFRRUxCUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JCSURFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURtNTU1YldZOVdXK3RPWTBySVdIbGRoK2FOYW5vQ1pDRmg3R2szWVpyUW1QVXcwaGtTRzZxWUhRdFArZlp5UzMzVkVydmcrQlFxbm11bWdOaGZ4RnJrd0VaRUxlaWRCY0M4QzRBZzRucXFpUFdwenN2STE3TmN4WWxJbkxOTEZjWlkvK2dPaU42Wk9UaWhPNS92QlpNYmo5cmlhQWNxbGlZbU5HSlBnVGNNR2FFQXlNekVNTnkybm02RXArcGpQNWFGNmdpMjF0L1VRRnN1SjFqMlJqL3luTS9TZFJ0K2VjYWw1T1lvdHhIa0ZiTDl2dnYyQTJPdjVJVFpDbHc0Yk9TOW5weXBRaW1PWjVRQVl5dG1ZYVFwV2wvcE1ZejZ6U2o4UnFrVkRORUpHcU5mVEtBMml2TFl3WDZsU3R0TVBhcGcwSjg0bDlYMHZvVk4vRnBTNFZDVkFnTUJBQUdqWmpCa01CMEdBMVVkRGdRV0JCUWdLRkFoRzZSYVcraFR5NTJkeGVUOGJDOTZIekFmQmdOVkhTTUVHREFXZ0JUUzd1OWFJbzA2YlZ3amx6M3loZFVtOFNWN2tqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQTRHQTFVZER3RUIvd1FFQXdJQmhqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFZTXpnTHJKTElyME9vdlFuQVpyUklHdWFiaUhTVUtTbWJMUldwUmtXZUF0c0NoREVIcFhjSi9iZ0ROS1lXb0hxUTh4UlVqQjRDeWVwWWV2YzNZbHJHOG83ekh4cGZWY2FvTDVTZXVKa3pIeEtuNGJUYVNwOStNdndhbW5wNjRrWk1pTmJGTGtuZlA5a1lLb1JIa01XaGVSSjFVc1AxejRTY21rQ2VJTGZzTXM2dnFvdnFqV0NsRnNKcEJjc2x1WUhXRjdiQkoxbjRSd2crQVRFb3BZNElnR3Y2WnZ3YytBOXIrQVQyaHFwb1NrWW9BbCtBTll3Z3NsT2Y5c0plMFYrVEE5WVkvVWxhQm1QUFRkMC8vcjl3dmNlUFdaa1BqS29BQy96VU5oZkRiaDRMVjhHSHMzbHlYMlhvbUwvTE5jOEpZenlJYURFaEdRdmVvUGhoL3RyMWc9PSIsIk1JSURSekNDQWpHZ0F3SUJBZ0lVZXg5blQ5dndaTlhTNDgzTGRpWUdmdzJTalNvd0N3WUpLb1pJaHZjTkFRRUxNQzR4TERBcUJnTlZCQU1NSTFsMVltbGpieUJCZEhSbGMzUmhkR2x2YmlCSmJuUmxjbTFsWkdsaGRHVWdRaUF4TUNBWERUSTFNRGd3TVRBd01EQXdNRm9ZRHprNU9Ua3hNak14TWpNMU9UVTVXakFuTVNVd0l3WURWUVFEREJ4WmRXSnBZMjhnUmtsRVR5QkJkSFJsYzNSaGRHbHZiaUJDTWlBeE1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBdTFNZXZueTlkeU85WlVDMzlTb01oTGNSL0RYcnRGL2NpTTEydGNpeTJFWEFaNk1rcml2VnRDZkVWTTlYNklTVEVuQlA2dVNZWW92NnBwdjZPNkpoMk5IbVltNHcrSm5TNFZuQ1BVN21IQU1mVkkyTUdUVE1WT2V3MHhVc0c3c0lTSWtJRFVCbXVrOFlLOWM1emljOSt2RlFHTElrc2RYTzVpVkZJZ05HNTNjR1hENFpMWm9BUGl1MFBFb3p4QXFZSWFJNGd4S2hPQTNTOC9XOG1JV3N1Nm9meWo0R3ZrRkc2WjdreUYzMTA3UDdtd0ZITHJJM0VOYVBXTU9GY1RhR2EwZHcrL3ZWUndqUmNFWkJWc3V1VC84N2NrU3MwYTVwa3QzdlpCbGFZZVQ4cHpTcmVWN21vd2NJTTkwTDJpYUFUbFAwbnhtYUU2bk95VGJvakZWbDJ3SURBUUFCbzJZd1pEQWRCZ05WSFE0RUZnUVVTWEVoM3NhM2J0RHVybTRNTS9DN1MxbFJ1dVl3SHdZRFZSMGpCQmd3Rm9BVTZyZENrSjRNZTJSNjIxUjhBN3A4VHAvWW9XRXdFZ1lEVlIwVEFRSC9CQWd3QmdFQi93SUJBREFPQmdOVkhROEJBZjhFQkFNQ0FZWXdDd1lKS29aSWh2Y05BUUVMQTRJQkFRQjVHYzNoYWZ0cDdoS3NFWnNvK2kvWjVuUnVxZG16RzJXQ2xVb1JVcWJhUHlnbG5KRGpLUi9rZmdPbDZpYmJGL3p0aG0zS21YUTdIY0RJUDJ4TWRHN1UyTDJpbWJKUUhxUGYvaDJIcW9qYjRyWmd1ZSs2VzRrdFNSNWVsUjlMMXJZcUUvU0dZTTRpRUtvVlFTdjdSVDFyeEllV2lLc3cvVnh4aS9RT25zeDNGN3g4MENDWWdCNEUzeVF4OFZUVzQ0MGhURXdUQTFlTUhPaXgzMnRQdHl5SElhOFBWVklmVnBIUUpCYU1WdnY1MDhVRWp3a2JVMnJuamZ6b1NUTlM5QTVqVVE4bUJTdmU5NXJqQjBkbzk4RVUrRHhkQnFYMitINmk1d2xJQ0ZnemhkemNzbmU5aEdLVDZselRYNGNJZEpzclkyK3hsZUswRkZReTZsR0VWTEVlIiwiTUlJRFNEQ0NBakNnQXdJQkFnSVVEcUVSdys0Um5HU2dneGdVZXdKRkVQRFJaM1l3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRREk3WG5IK1p2RHdNQ1FVOE04WmVWNXFzY3VibHZWWWFhUnQzWWJheG45Z29kTHg1c3dIMGxYcmRnamg1aDdGcFZnQ2dZWVg3RTRibDF2YnpVTGVtck1XVDhOM1dNR1VlOFFBSmJCZWlvVjdXL0UraFRaUC8wU0tKVmEzZXdLQm82VUxlTW5mUVpEclZPUkFrOHdUTHEydjVMbGo1dk1qN0p0T290S2E5SjduSFM4a0xtelhYU2FqMFN3RVBoNU9BWlVUTlY0enMxYnZvVEFRUVdyTDQvSjlRdUt0NldDRkU1blVOaVJRY0ViVkY4bWxxSzJieDJ6Nm9rVmx0eURWTEN4WWJwVVRFTHZZMXVzUjNEVEdQVW9JQ2xPbTRjcnB3bkRSTFZIdmpZZVBHQkIvL3BFeXp4QS9nY1NjeGp3YUgxWlV3OWJuU2JIeXVyS3FiVGExS3ZqQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJUcXQwS1FuZ3g3WkhyYlZId0R1bnhPbjlpaFlUQWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQXFRYUNXTXhUR3FWVlg3U2s3a2tKbVV1ZVRTWUt1VTYrS0JCU2d3SVJubHc5SzdIZTFJcHhaMGhkd3BQTmlrS2ptY3lGZ0ZQemhJbXdISmd4eHVUOTBQdzN2WU9kY0pKTmt0RGczNVBYT2Z6U24xNWNGQXgxUk8wbVBUbUliOGRYaUVXT3B6b1h2ZHdYRE00MVphQ0RZTVQ3dzRJUXRNeXZFN3hVQlpxMmJqdEFucS9ORFVBN2JlNEg4SDNpcEMrLytOS2xVcmNVaCtqNDhLNjdXSTB1MW02RmVRdWVCQTduMDZqODI1cnFEcXNhTHM5VGI3S0FIQXc4UG1yV2FOUEcya2pLZXJ4UEVmZWNpdmxGYXdwMlJXWnZ4clZ0bjNUVjJTQnh5Q0pDa1hzTkQwNWRDRXJWSFNKSXMrQmR0VFZOWTlBd3R5UG1ueWIwdjRtU1R6dldkdz09IiwiTUlJRFNqQ0NBaktnQXdJQkFnSVVUbmJiR0lSMk5IdnpxSUtGQWVRd0cxWEJpczB3RFFZSktvWklodmNOQVFFTEJRQXdMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3SUJjTk1qUXhNakF4TURBd01EQXdXaGdQT1RrNU9URXlNekV5TXpVNU5UbGFNQ1l4SkRBaUJnTlZCQU1NRzFsMVltbGpieUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRUVnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBT3NYajNrMDRCYW40VFlkdFpLcUQvT1BKeHlEeWFQbUNCVUZVaWFaSWdUdGVabmozWDI1RGhncFpaWHNDNEQweWRJY3JsQTZ3TlVJbk9STC9MOXpCYlRFSU1BVk1HbzZnN1VLQW1iMk1GNkFIYm5oWUpkOWVpa3VwVk5XU2hITllOYzRHQmRPMVlONkFmVXF2SmhIYmUzVjRTTk1QbUJSRUtKUFZ6N1Rod2dtZ2dUZThXczJLMC93c3F2MndTRTdwYkNCc1VaaElYNTFiWk0zcHFEd0pQVG1SRkV2dDAvNnRHNWVPOEYzajE0T1hxZkVobWpuMVZ2eEtEWVFPTFpBeEN3d2dDMFA0Q2RmV3YzeThQU1I4STM1NGhPMVkrR3pOanZJcVgzOE5LTHl3dUlZSEZlck94Tmx4RU1CdkZoWUJ1UnVZQWtrZ1VhUHFONlVCaHNJTHJzQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZDQ29SSGhpeU5uYm5YUldJTDZaQlhvQlg5WVRNQjhHQTFVZEl3UVlNQmFBRkNBb1VDRWJwRnBiNkZQTG5aM0Y1UHhzTDNvZk1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQ1FGYWZKSTEvNVdnOUNFRWltRTFSUDU0UmdRd1ROVE9PUXNMQUNUZStySXRsRlF6QzlaRGhyVjgyOHlYN2p6eStBQXNwM2l6SzdUMXRoMmRsN20rdHUwc3cyUGEvb2xjMDJudDZQeUl3MzQ4Z2FIemhJMSswS0U0NXF4dkZEZUwybE14YlBmQ1l2eUVFYVl6amlRRUxVNTk1MXBYR1d5S01hLzRmTHRPK1pLT1hoTXVWZXE0clhEUEk1NFc2SkhPaUFhaUtkaXcrNWUzYzJrdC9qRklRdE02dk1YZzlMTkZ6ZGpFVE50MjBWWDlRZXZScEZaZnVjTUc5d0NhUURvRmxQenBUTUpLaFBldi9pbUptWlloS2ZyMGxMY2VtdHFqSXhMQW9xWmRPWWZIQmc2K3ZBY2RQSS9pYXVHcFVBdjdYK1VLTm1Ed2paMkJhSDRzTHdoQjJtIl0sImljb24iOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJpY29uRGFyayI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsInByb3ZpZGVyTG9nb0xpZ2h0IjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwicHJvdmlkZXJMb2dvRGFyayI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIkZJRE9fMl8wIiwiRklET18yXzFfUFJFIiwiRklET18yXzEiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwibGFyZ2VCbG9iS2V5IiwiY3JlZEJsb2IiLCJtaW5QaW5MZW5ndGgiXSwiYWFndWlkIjoiNzlmM2M4YmE5ZTM1NDg0YjhmNDc1M2E1YTBmNWM2MzAiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJsYXJnZUJsb2JzIjp0cnVlLCJlcCI6ZmFsc2UsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjpmYWxzZSwiYWx3YXlzVXYiOnRydWV9LCJtYXhNc2dTaXplIjoxNTM2LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjgsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4LCJ0cmFuc3BvcnRzIjpbIm5mYyIsInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi04fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotMzV9XSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5Ijo0MDk2LCJtaW5QSU5MZW5ndGgiOjgsImZpcm13YXJlVmVyc2lvbiI6MzI5NDc2LCJtYXhDcmVkQmxvYkxlbmd0aCI6MzIsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjoxLCJjZXJ0aWZpY2F0aW9ucyI6eyJGSVBTLUNNVlAtMyI6MiwiRklQUy1DTVZQLTMtUEhZIjozfSwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjEwMH19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTEyLTIxIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZdWJpS2V5IDUgRklQUyBTZXJpZXMgd2l0aCBORkMgKEVudGVycHJpc2UgUHJvZmlsZSkiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI0MTIyMTAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTEyLTIxIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3Nn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wMS0xMCJ9LHsiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjc4NjU0NDc3MmVjYzlkM2U4NTA0OTIyMmFlMzMyMjYzNDViNTljNjkiXSwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiNzg2NTQ0NzcyZWNjOWQzZTg1MDQ5MjIyYWUzMzIyNjM0NWI1OWM2OSJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiWXViaUtleSBCaW8gU2VyaWVzIn0sImRlc2NyaXB0aW9uIjoiWXViaUtleSBCaW8gU2VyaWVzIC0gRklETyBFZGl0aW9uIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyODk2NSwicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoyfSx7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiLCJyZW1vdGVfaGFuZGxlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJREhqQ0NBZ2FnQXdJQkFnSUVHMEJUOXpBTkJna3Foa2lHOXcwQkFRc0ZBREF1TVN3d0tnWURWUVFERXlOWmRXSnBZMjhnVlRKR0lGSnZiM1FnUTBFZ1UyVnlhV0ZzSURRMU56SXdNRFl6TVRBZ0Z3MHhOREE0TURFd01EQXdNREJhR0E4eU1EVXdNRGt3TkRBd01EQXdNRm93TGpFc01Db0dBMVVFQXhNaldYVmlhV052SUZVeVJpQlNiMjkwSUVOQklGTmxjbWxoYkNBME5UY3lNREEyTXpFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUUMvandZdWhCVmxxYWlZV0VNc3JXRmlzZ0orUHRNOTFlU3JwSTRUSzdVNTNtd0NJYXdTREh5OHZVbWs1TjJLQWo5YWJ2VDlOUDVTTVMxaFFpM3VzeG9ZR29uWFFnZk82Wlh5VUE5YStLQWtxZEZuQm5seXVnU2VDT2VwOEVkWkZmc2FSRnRNamt3ejVHY3oyUHk0dklZdkNkTUhQdHdhejBiVnV6bmV1ZUlFejZUblFqRTYzUmR0Mnpid25lYndURzVaeWJlV1N3Ynp5K0JKMzRaSGNVaFBBWTg5eUpRWHVFMEl6TVpGY0VCYlBOUmJXRUNSS2dqcS8vcVQ5bm1ET0ZWbFNSQ3Qyd2lxUFN6bHV3bit2K3N1UUVCc1VqVEdNRWQyNXRLWFhUa05XMjF3SVdieGVTeVVvVFh3THZHUzZ4bHdRU2dOcGsycVhZd2Y4aVhnN1ZXWkFnTUJBQUdqUWpCQU1CMEdBMVVkRGdRV0JCUWdJdnowYk5HSmhqZ3BUb2tzeUtwUDl4djlvREFQQmdOVkhSTUVDREFHQVFIL0FnRUFNQTRHQTFVZER3RUIvd1FFQXdJQkJqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFqdmp1T01EU2ErSlhGQ0x5QktzeWNYdEJWWnNKNFVlM0xiYUVzUFk0TVlOL2hJUTVaTTVwN0VqZmNuTUc0Q3RZa05zZk5IYzBBaEJMZHE0NXJuVDg3cS82TzN2VUV0Tk1hZmJoVTZrdGhYN1krOVhGTjlOcG1ZeHIrZWtWWTV4T3hpOGg5SkRJZ29NUDRWQjF1UzBhdW5MMUlHcXJOb29MOW1tRm5MMmtMVlZlZTYvVlI2QzUrS1NUQ01DV3BwTXVKSVpJSTJ2OW80ZGtvWjhZN1FSalFsTGZZemQzcUd0S2J3N3hhRjFVc0cvNXhVYi9CdHdiMlgyZzRJbnBpQi95dC8zQ3BRWHBpV1gvSzRtQnZVS2lHbjA1WnNxZVkxZ3g0ZzB4TEJxY1U5cHNteVB6SytWc2d3MmplUlE1SmxLRHlxRTBoZWJmQzF0dkZ1MENDckpGY3c9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFmQ0FZQUFBQ0dWcytNQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUhZWUFBQjJHQVYyaUU0RUFBQWJOU1VSQlZGaEhwVmQ3VE5WMUZELzNkNTl3ZVFTSWdTOUFRQVhjRkxBUVppOWZwZVZ6MXRZL1dUWnI1V3hwYzdXNWtuTGE1akkzWjg1c3JTMm5NMnNqdFd3WlM3SVVINEg0eENuRVF4NERBWkY3NFY3dXM4ODV2OS9sSW5CdlZKL0I0UHY5bnUvNW51LzVudk01NTZmekEvUXYwSGIvSXJYM1ZGS1BvNDVjbm00aW5VSVdZd0xGUm1aUVV1d2pGRy9OMWlSSGgxRVowTlJWUnVkcXQxQmQrMm5TS3lTL09oeXMwK2xrM2UvM2tROXF2RDRaVXRhNFZWU1V1WTBlaXB5aVRoQWZvY29PUlZnRHV1dzNxS1JpQWQzcmJjRXRqVGpZSW9mNldhSHNDbXpWUFdDTXgrY2doOHRMcVdNS2FNV3NVakxxbzJSdEpJUTBvT3ptZXJwUXU0ZXNaZ3NPTmtHeEg3ZDBrZHZUVDE3czRPTVU3Vkk4WmhqZ0dhTStBcTlpRU51OFBpZjF1ZHowN013dktXZjhHbFZvQ0VZMDRQQzVXZFRhWFlGYlI4dk52TDUrM0tnZmI1eE5NeWE5UmFtSml5bmFNbEdUVnRGbHI2YmE5dStwcW5FWDR1TXVSUmdqU1lFaHJON3V0RkZlNmxxYWw3TmZrdzVpbUFHSHluUHBiazhWbVkweHN0bnB0bEZDVkNZdHpUdUJOODNRcE1MalR0ZXZkUHpTVW5KN2U4bWtqeFozOWZYYktEZmxkWnFidlUrVFVnR25CVkY2ZlEyaVBIZzRXMTZVV1V3dnpiazE2c01aRStQbjBwdno3SlNldUF5ZXM4bGNwQ21hS3VvL3ArcVdyMlVjd0lBSFdydlAwWUV6aFhBdExBYnNzSGhwN2lHYW12eWlqUDhyeXFyWFVXWDlYb293eHlBdWZOQnJwNDNQT0JGWFpsa2Y4TURSaXFjcHlvd0F3cHV6MngrZld2ei9EdGRlOXNtc3p5Z3RjUjZDMXdiZHpCbDZPbHE1V05ZWTRvR2F0aEpNcmtURXgwakFSU0hBVnMrNXJZa1FOWGIrUWdmUExzUTZnWHlJbnNyZVFmbXBtN1JWRllmTDg2bjFmaVVPa1l2U2hrVVB4dmJ1a3pveTZLMWloTTFobzNYelc2RXZTZlhBK2RwaVdHYVdkK2RvWHpMem1Hd0tZRkxDQXNSQWxQQkFoTWxDRlhVN3RCVVZQcjhIZ1ZjSkhXcStGMDBwbHIrRE1UZHJQNHp2eFkxMWtOTWh4VCtTZVRHZytkNFY1TFFKaXR5VUdKTkI4VkZac2pnWUJaTS9JSS9YQ1RrajBxeURPcEYyQVZRMTdDSWpVcC9EblQxVWtMNUY1Z2RqK3NTMXdnMWdFM2dpZ202MGZDWHpTblBYYnlBUGJJWHYrSURwRTE2VGhhSElTOXNreWhsbU1FNUYzY2ZxQUtocTJDMEU1UEgxZ1lhWGFMUERrWkcwSERKT25LV0hwNTFJMHo1U091eDhlMVdBdVp6ZEhRclRrcDhUbWpYb0krbGEwd0dac3p1YnFiTzNpZlE2QS9XN3ZWU1lzVjNtUjBKS3drS2M0V0hpQmttUjhJM0NDZ0k4N29PTDRxelQ1UCtSVUpCZWpFT2dBUEs4aFlQemF0TStlSVRwMklPOXlUUW1lcm9tUFJ4eDFxeEFjc2lsZS91YlNlRWJjV1FHWUVDZ2hjTFkySHlLam9nakgyNWhNcGpwVXYxT3VnbGk0ZWgyZVJ3ME8zMmJKamt5dUNnTnpnMHZ6bFlNU2lTczB1b280TUc3aE1PakNFYVgxeUZFMG5TdmpCenVUbkVwSzg2WjhJb3FGQUl1Ync4a2c5QXJFYVJFV1NaSStqSDRYYnA2ZzlFOUVuSlQzb2FSekROK01VSkJRREhuNTZhOG9VbUVCdXNPeEJzL041K3RKRWJQa0FGRGo4VUd2T3MvSVd2Y1NnbEdCaHZTNy9GVFlmcFdHWWREWThmUEF4V1NBMzVzVEM0cDQrTG00QWFxSW9QZVF0ZnVmSzZKaDBaaHhsYnNVWE9TbVhOaWZENVpUQWt5RG9mYmJjY2x4bkE4V05BcXhDYlJOeWtoWHhRcGFEdzY3ZlhVWWJzaUcwS2h0djJvZUl2aDhyaFFNWU9jRUFxWEcvZUkrem5nT2M1eXhyOHE4MklBTTFjL0ZMRk9wbHF1NWVGUVhyTVp6R2NWQ2pZYkxXRzVJNEJUMWV1UnJsYnh0Tk90TWl0RERFaExYSUl5bkFBdnVPRVdFM1gzTmRBZnQ5NFZnYUc0MlhJUXQwWlg2UGVDRS9xUUZlOXJLNkh4N1lVNTBLdkg3Zlc0ZlMrcTdLS0JKeHNnZ0JYNXBTQUdoMWpJclZoNXpRNnczUmZhYWhCWG0vYUNiQ1pUakNVRlVUeVdacVc5cDYyTWpKUFhWcU9yUGdNTzROdjc0R2tmK293ZnROVkJEUW5qRkpxSFN3MTdwWHZoV1c1S1pxZS9RNDlOL1VTVENBVldvUVhGSUhCSFhYZTNGUHJVRHN1R0RtdEYvaEhLVEhwZWt4aGlBT1BJK1NKcTZTNkhGNEk5WVd6a0JKVG80NmlVTXpXcDhQaXIvUmlkdUx4S1lzU2tzVjh2TGxPUXZoR1gyWWxSME9CaEJqQyt1L2dFY3ZZMEFwSzdZazQxTnhqUFNRbldGSFRGNjZVcmpnZXZCOEN1NWErbDJ2WVNSUHR1VkRvNzNoaGRNU0huVVg3dFRqc1ZaR3hBbC9XcHRpT0lFUTFnbkwyOW1YNi90UjF0bWxrWWo4VzRYK0NTaldjVURHWTFOcFMvQzdoU0txaU1MTS9sMlFtU1daNzNEZHorZ2lvOEJDRU5ZUFE0NnFua3p3WFVicXZCa3hqVVFzV2ZaRmdidW8zckFmK3dON2pPTzkwK3lueDRQaTNMKzBuWUwxU2NoRFVnQVA0Z1BWLzdJZDFxKzFIU2htdUdrSXFXUlBneXhNRnFQOEhmalRualh3WTViUWZiSmN0Nk9JektnTUhvdEYvSGUxZWdzYXhIU3FHNndmZG1RNXg4TnlURkZxQmNwMmlTb3dIUjN5azUrMzZoRjd2WEFBQUFBRWxGVGtTdVFtQ0MifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMS0wOC0xMSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjg5NjUsInVybCI6Ind3dy55dWJpY28uY29tIiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZdWJpS2V5IEJpbyIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjEwODExMDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjMiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMS0wOC0xMSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjg5NjV9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjEtMDgtMTgifSx7ImFhZ3VpZCI6IjZlMzQzNDFhLTg4YzctNDgzZC1iNzc3LWE0MjVjMzU1YmU5MyIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiNmUzNDM0MWEtODhjNy00ODNkLWI3NzctYTQyNWMzNTViZTkzIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IldlYkNvbW0gT0VUSGVudGljYXRvciJ9LCJkZXNjcmlwdGlvbiI6IldlYkNvbW0gT0VUSGVudGljYXRvciIsImFsdGVybmF0aXZlRGVzY3JpcHRpb25zIjp7InpoLVRXIjoiV2ViQ29tbSBGSURPMui6q-S7vempl-itieWZqCJ9LCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6NTI2MjU0MDksInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfSx7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIiwiYmFzaWNfc3Vycm9nYXRlIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUIwVENDQVhlZ0F3SUJBZ0lVU2dYSVdvWnlFWDBXYXJQWEtOL3BlMEhnZUJNd0NnWUlLb1pJemowRUF3SXdQVEVMTUFrR0ExVUVCaE1DVkZjeER6QU5CZ05WQkFjTUJsUmhhWEJsYVRFUU1BNEdBMVVFQ2d3SFYyVmlRMjl0YlRFTE1Ba0dBMVVFQXd3Q1EwRXdJQmNOTWpVd09UQXlNREl5TnpBeVdoZ1BNakV5TlRBNE1Ea3dNakkzTURKYU1EMHhDekFKQmdOVkJBWVRBbFJYTVE4d0RRWURWUVFIREFaVVlXbHdaV2t4RURBT0JnTlZCQW9NQjFkbFlrTnZiVzB4Q3pBSkJnTlZCQU1NQWtOQk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRUVSRGQzSE5OQzlmem9sbGluTk5UZGt6VEZsMFpqbmpucFhyenlkZmM5ZVVTV2dFbDE1SDY1THp4emI2U1QxRFBIcnFYZ0N5VFNhSjhPeVFucTNlYUhxTlRNRkV3SFFZRFZSME9CQllFRkVZNXZrczZuK1RCNmhIbHY2aVhTRUd3S3lIQk1COEdBMVVkSXdRWU1CYUFGRVk1dmtzNm4rVEI2aEhsdjZpWFNFR3dLeUhCTUE4R0ExVWRFd0VCL3dRRk1BTUJBZjh3Q2dZSUtvWkl6ajBFQXdJRFNBQXdSUUloQUp1d0pYTFVIOVZleWFWS3VkZXZsbzlaOEIxOGZXbEthckpsQ1IwNW1hNXNBaUJYZHhJYnJKZjFsZXhtZWRNV2VybzEwNWVNS2hKeXl4a2RlZFdQbVBERVh3PT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBR1FBQUFBakNBWUFBQUJpdjYrQUFBQUFCSE5DU1ZRSUNBZ0lmQWhraUFBQURCaEpSRUZVYUlIdFdrMXMzTllSL21hNFdjdHlVRE50bXNDd0hUTUJraDZhZHVrQ0FzVzFObG9YUGZRU1pJVmVlcE8yS05yZXBEM2tMTzJoUUcrU0QwV0JYclE2OWhCSVFodWc2RVdyS05HYU5WQ3ZrTFJBRDBXWU5xbmhBazBZTkZuTG0rV2JIaDVKa2R6Vmo0TUVOZ0o5Z0g3NE9QejQzcHZIbVhremovQ1FVQzVQMkJTeUNRQmlxR0IzOTFiM1lmWGxVVUxoWWIzWUVHT1pES29DZ0FpMUFWeC9XSDE1bE1BUHV3T255T0pVSVk4WVRoWHlpT0ZVSVk4WUN1WHloRzJJc1J3MzdIUnVKczUxdWxReTFmajRLaUNtZ0c2ODJlbHNKRSt1M3EwQm1BZHdBL1duazNiSGNhekhtT2NKWWhOZ0M5QVZVUGN6cFc1NG51Y2YycFBWajB5Z3YxN29mMUs5MUgydGU3bjcyaWIzOWxlMjkvYUN2R2pVcnpsQVhrazErMzBselZIdnVPWTRWV2FhQldEcEZncWcxT2FPNTdXT202Q0s2eXdCTkExUXdMMWVQZDJmS2RkZEpvZ053T2ZldmNhb3ZqNG9UNEZDTnVOb0p3ODFmbmFkQ0ZXQVFDSTJnQTFBaDZ5N2tQVklyQXFBQUtEaU9ITms4R28wNlBoM2xZRHFHYWE1aXVNMERwK0UvUVdBcW9QaU9RU1h2MmMvczdkdXkvalorWEo1NG5vNkpDNlhKMndSWTRzSVp2eU9HR2NNbXB0eTNaVTNPNTBHRUN2dTdEcFJkbnlENGpuOHcvMUo3ZkdaeTR1ZlBQMnRHZFNmR2hseVYxeDNnUWlMcWZrSUFOVGpTV1RDUXR3SE5UNitCMkRsWkR6akFEQ2o3emxMbE9JNTFHUnB3ZFJBaU16NFh3UEdhcUgvYVViK211TlVENVF4QWtRbUdieDZ6WEdxaDBpMEUvNzdueWJQRk1UWW1pNlZURUIvZlFVeHR0Sjl5WU1KQ3hYWFhRRGlCVFc4MkQ3NHpzdTQrOEwzOGNuVHoxdVAzLzM3ZXN5Zmh1TTRGa0VXYzgxV1BGYXRqRFF5WCtzeFBHTEdQRVNjdVRkU0llWHloSjBYakZGeG5TVUMyZC8rMDY5dzVTKy93NFcvdnQ0QUFHYktLRU1KVmtUUUVNRkd1ajB2bDZCK29RM3cxUXQvZmIzeHd2YXYvYVNkeUZUall3c0FVR1JhVEN0RFJOb2lxcWtFS3hBSm9yWVc5M290UGRpVU1rUUMzU2ZWL0t6NGVNSi81dDZIVnN5ZlJwRnBkWlRpcDBzbDg5QXhqTUNEOGd4dERLZExKVk9Kc1o2ekJnQWlSVUVyNnZ5ZGQvQzFmNy9kM3VuY1hOSHRaTVZ5SXRJU0padWlMN3ZNWkJQcCswUmtPWTVqWVJUcVQzWHZBTjBYU3FXV0dqOTdPMzRHb0ZrQVMwUTBsM3BITyszdnl1V0pOVU1LMVozT3pSVUFxTGlUczJucUFZVUhwdTluZjF4NTRwK2QyOFg5d0xyNHpoOFMvbGgyeURxa0VJNlBMekxGdnVob1JLYnFnWGlHRkhMVUN3MHhsaE5GaVFSOUpYVUFvSkJOR0FkeVJEUm5HQWVUTjhSaktCTmlISFliMjN0N1FjVjExZ0JhalBpc2NubkN6Z2dwV1V0ZlJwT2Q5Z1hKR0VTa3ZkdEpwV2JxVHdRdnVzNWFZZ1VTeFdjWFhSNEUySWROY0I2YUI4dWo3aDNGTTJTeU1yWXhNZ01KVVdyVkNHaGtSSE1jUktRMWxMY2lESDNTQWo2ZnZnNURQalNDT1JZbjRJOWh3RGd3STVHWk8rQkptVXRJVjBUYWg3MHl6eU1pclpQd0hPclVCZElWeUkyUjkwVGFPNTFPMHRFQjRPZnZoNkc2SHYrOGUvWEh6YnVXV3g5Z2NIV25jN01laVNYUEVNaWVjdDFhZk8wNGpzV1F1WFJmUE0vek13dkVvUGxNcDFiL1kyUDF6aEpXNzFpaitOUEJ4SFNwWk9iNWdRUC9lTkJPVFlMNmVNUUVCQ0hDK2xCN2hGRThnTHczU2piUGMyaHlNVVJZTjhDMW9Sc2lBZmZ1emFTYlBNL3pLKzVrTy82Q2lLaktUQUdnOXQ1KytaZlR3WVVYcTFyeTFldll2UUFBVUVyVzBtYU5DZXNWZDdJbG9JQWhjeGxIS0xTbUI0WU5BdVlBUGNtVjh1UnRpR3p1bjN2eS9PMysveFlHeFhPQTNoczlrZWMzbU5hblhMZEZVQjhyMEN4bCtHVXpIL0ZFUG1wRjd4OXlVd0JxN3U3ZTZuNzNSei9GQnkrK0RBQjQvbzNmQUJnMmVVZnlDQnE3blN6UFNJV0lxT1p1NTFhMzRqcERDbEdnK3Bzak5rQWhoWTEwU0VxRUdvWVZXa1VVM3I3bGVlMktPOWxLTzJvaW1rdDJMOG5ncFJzN2F1N2RhOGo0MlZyeURwQU5JanM4ZXg2Uk1nQm84NlQ1M1EzZER3QkVKZ01MZWFNZ0luNWZvVlZrMmtvMUp2NXhlRzcwQkFQQTMzN3dLZ1pqMnZLRlo4NWgrc003cHNxWnFnZmw0UUdRTVFWNkFyd2xBQWhKYldSSnNKSFpyYWV3dTN1ckd5cVp5ZnVkYi9oL2p2OE5BTFRTOTNZNk4rc1oyNXJ2TktUTG45NUxJcW50dmIxZ1FPSDEyTVRFZVB5LzcrTGlPNytIZWVjZEFOU0kyN25YcStmRDdqeC9TT0hNWTh6emxITHNXZitZOGwwNTZ6QVlPNS9jQ3k2ODJBM0h4eGV6cGtwdUhNYVRWbFNhaDRBNHRjRHpBdmhHcjlmTWJldHJCTXdDMk9aZXIzVlVlZ0E0TEsxQm0wYzkrM2xTR3hYSG1RUHpLL0VtNjZqMHpISDhXWFBDUWRvLzZ2R01MUUIwSmFUd1JpWWcwZW1lWlVBQzRFeXo4dHNmWnZZejhjSk8rdXc2U3dDWFFobzBEK2M1eFNsT2NZcFRuT0lVcHpqRkY0OGt3MWN1VDlqV3BjdS91SER4a205ZHVtUmJ6enhUdTNMNTBzOHZYN3o0OFhOUFBobThkL2Z1L25Ga0ZYZHk2NS92djc5Mm5GeTVQR0UvOS9WdjdxYzVSN1VCT21UOTF3Y2YrTWUxZlZXUWJJa3I3dVFXb05NZFE3VVFrZUMra3F2cEdIL0tkV3RNV01jUlVJS2tlaGVWaXVjQlZJbklVb0laVXNvRTAyeGZTYjNJdEFySWRqNTJmNm5zU2hpcTYyOTVYdnVvdHE4S0NrQmN1YUtxaEtvT2hpV2ltcnIrQ3d1UU5RTE5GNWtXeStXSlpHTkV3S3plQlV1U0V5S2lxa0M2RVBLaDFLYXh2NS9za28yUTdUaHJFVTltdVR4aEd6RG1peU1LTlhvenAxUFV6RFE3NWJvbVFTVzdZR2FhcmJoT1ZjRGRmUGJBY1J5cnFOTTBFT2FBbERKUFVqK2ZMcFZNTlRaV080bnNsNFVDQUREcnVrTWZhQmQxRGNLSzd2c0FUUXZRSGM1V2lnbklkcVM0TEVnc1lscmUzdHRyeFUwSzhCbGlBWFF3d2FFeUZhUkJ6Q1pCTXRsYkJxeUVtMkJERUNDVmx0QnRaQkVVZ0d4NnBBQllNR2llUURaRWZERDV1bUNsdjhDS083a2FqMUZBWGRJTHoxUTZRMXpWc2hRQVluTHYzc3hnYk16V2kwTWZVamdZdTA3akU4U0drclV2UXBHY0xuVjZudWNUVUJ0UlA3QUF1akxxL0MwUlZlTWZQVTlrUjBrL3MrSk92cHVUbmlZaUswNG9DblBKTUhncnZmSmo3SGhlSzY0SXFsQWFiM1k2alpEQ2hsTFNCQUFJclNrbHpieUpBM1Jpa1VDMmlQanBmZ0pjMG4yTUVvNmdnQ0ExNkJNZkFHQkZPUzJmQ0RVaXFuNTJybWlKb1lLRFlwWllJSmdFbWdmb0NwRlVRVGpSRjNnU0ZBQmRORXBuWFI4RTJyeHBFUEdpVGhhU1NaQXE5KzVkamU5RjJkM0VOQkdVdmRQeEdsT3V1MDNnV1VBeXZOcm42R3l4WWZCV3BUelpKWkF0UmxMUWVjVXdlUG1hNDR6MEpTS3FxUlRheEd5U1VxWXdCU0VObXRPbGtxbVVOQUJBbUFKU3Nnbm1Wd1R3U2FrOVlkcUVra0NZVEVEdDdYWnVkUjNIc1Fxc0U0SkY1bVZBN1ltQ0Q2WnBoS05yUnA4WFNYTFJNSGpyZnFpZWpjOVVEWXZLZGwraEZUdDJIUVFjbUN3QmRabXdrUGdWSld0OW9CM0xsOHNUZGdHRjI5ckh5Q1pBMHlHRkRTTmtXNWhMY1ExRVJEVzFXZEhubUlpb0tvSkdYNm1OTTB5M2hlRDNRNWtwTWkwU1VNc0hHMThHNGpNQVgvWjdnRnh4b0FCWXVvUXIyNEJzUjJiSWorMWxCam16UnNCNytxOVVDYkRCTkZ0a1hVd0NBSmFDRGdJRWdWSzZKbEpBNFRZeExSTmdDUkNJU0NzMlFUc2RieWt4V1VwMVBjL3o3eXU1Q2dCbkRINlhnTnFBd3V1akptbTZWREtuWEhka1BSdUlGOVBKNFhtZWY1d3lyamxPdGVJNGMwZkpuQVNaQXRVQThBMlJJQjMyYWxOR1VjYzZTMEI4MW9qc0FZVjFRd29CUVJaRnFUVVlyS3Q2UkhNSVZjYkprVko3Q3RpTUE0aVF3a1lZY3BENzRrYVdPV09NN2U4SDZ0eFpBSUJRdG15Y0djZlltRzFBNWw1eUorZDBRS0tkTlJGWlVmM0Zlc21kL0FoQTBsOFJiQkNrS3FCMi9IZW4wNW1wdU82NnZrYVhBRHQ2cGd1Q0NZRUpRa0NpRnhRQXZGUjJWeUVTeE85TmxheFBoTXdYNG5tZVQ3MTd6OGExY0VDWEdkUFhBRkJrcm9tSWIwaWhxcFVoamJqRzNWZlNsRkRWeWVEVjlJclo4YnhXMnRidjd0N3FIclhxeXVVSlhhS0ZYaWpsOG9TdHpwM2RBb0Q3b1hvV0FBcGliQTJkUmdIQWpLb2NuRUN4UUxBUkYrSUlOZ2lCRVB4b2txT0tvbGhhUERiWFVUaFBZa1VWU2t1QldsRVoyWWJBUkZTM0Z4M2wrYW5yZ0lpcUQ2b01JUHBDQm9EUGtYT09pa2h0QUtpNFRyT3ZzREUwY1VvRnd0d1FwWUxDL3Y2emIraGpPMWFvcEJISnRxWmNOeURHc0M5U3NwWS9GQkczcTFSN0dISmdzR3pHbkxvZ0padmMyMS94ZEIrdlZseDN3UWpaUnZiNEQvb0tyU0xFRDRFbW9FUG8wRkJkUTdpbVFyVEZVQUVBa0dKekFQaEZwbHBmeVVhUnVSYlNvRzFJb2RwWFViVTBsQnNoZExRbVJoaEVwMSthUmFBcXpJSEN3QThWQjRhaHpNYys3ZnRxZkd5aHI5QXlqUERRMDVWSDRmOHh2WnlLTEFLeldBQUFBQUJKUlU1RXJrSmdnZz09IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiRklET18yXzAiLCJGSURPXzJfMSIsIkZJRE9fMl8xX1BSRSJdLCJleHRlbnNpb25zIjpbImNyZWRCbG9iIiwiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsImxhcmdlQmxvYktleSIsIm1pblBpbkxlbmd0aCJdLCJhYWd1aWQiOiI2ZTM0MzQxYTg4Yzc0ODNkYjc3N2E0MjVjMzU1YmU5MyIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImxhcmdlQmxvYnMiOnRydWUsImJpb0Vucm9sbCI6ZmFsc2UsInVzZXJWZXJpZmljYXRpb25NZ210UHJldmlldyI6ZmFsc2UsInV2QmlvRW5yb2xsIjp0cnVlLCJhdXRobnJDZmciOnRydWUsInV2QWNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6ZmFsc2UsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6ZmFsc2V9LCJtYXhNc2dTaXplIjoxMDI0LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxLDJdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjgsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTAyNCwidHJhbnNwb3J0cyI6WyJ1c2IiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fV0sIm1heFNlcmlhbGl6ZWRMYXJnZUJsb2JBcnJheSI6MTAyNCwiZm9yY2VQSU5DaGFuZ2UiOmZhbHNlLCJtaW5QSU5MZW5ndGgiOjQsImZpcm13YXJlVmVyc2lvbiI6NTI2MjU0MDksIm1heENyZWRCbG9iTGVuZ3RoIjoxMjgsInByZWZlcnJlZFBsYXRmb3JtVXZBdHRlbXB0cyI6MX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wOS0wNSJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDktMDUifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyIxYjY5MGE3NWUxZmI3MTU2ZTM0MzkwM2JlM2FhMzliM2FiNjFkM2NkIl0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjFiNjkwYTc1ZTFmYjcxNTZlMzQzOTAzYmUzYWEzOWIzYWI2MWQzY2QiXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlpUUGFzcyBTbWFydEF1dGgifSwiZGVzY3JpcHRpb24iOiJaVFBhc3MgU21hcnRBdXRoIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIxLCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjJ9LHsibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDVmpDQ0FmdWdBd0lCQWdJSkFOYVNyRmRVTHJ2SE1Bb0dDQ3FHU000OUJBTUNNSUdGTVFzd0NRWURWUVFHRXdKVlV6RVJNQThHQTFVRUNBd0lWbWx5WjJsdWFXRXhFREFPQmdOVkJBY01CMEZ6YUdKMWNtNHhEekFOQmdOVkJBb01CbHBVVUdGemN6RWlNQ0FHQTFVRUN3d1pRWFYwYUdWdWRHbGpZWFJ2Y2lCQmRIUmxjM1JoZEdsdmJqRWNNQm9HQTFVRUF3d1RXbFJRWVhOeklFWkpSRThnVW05dmRDQkRRVEFnRncweU5EQTVNVEF4TVRRd01UVmFHQTh5TURVME1Ea3dNekV4TkRBeE5Wb3dnWVV4Q3pBSkJnTlZCQVlUQWxWVE1SRXdEd1lEVlFRSURBaFdhWEpuYVc1cFlURVFNQTRHQTFVRUJ3d0hRWE5vWW5WeWJqRVBNQTBHQTFVRUNnd0dXbFJRWVhOek1TSXdJQVlEVlFRTERCbEJkWFJvWlc1MGFXTmhkRzl5SUVGMGRHVnpkR0YwYVc5dU1Sd3dHZ1lEVlFRRERCTmFWRkJoYzNNZ1JrbEVUeUJTYjI5MElFTkJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVjVGdwQ2R3Sk1hZnRFTUNPVmgxNVBFV0pqVURrT1ZFc3ZpK2JFSVJIREhnRzU1bHl3eDJSRERWbDRUZ283UkVjR2UrWkdNVnNmVGYwVVpvRlFka1dXS05RTUU0d0hRWURWUjBPQkJZRUZKUnVHTVdIS1lzeVplT2JOQmFpOVdjSWYwSEJNQjhHQTFVZEl3UVlNQmFBRkpSdUdNV0hLWXN5WmVPYk5CYWk5V2NJZjBIQk1Bd0dBMVVkRXdRRk1BTUJBZjh3Q2dZSUtvWkl6ajBFQXdJRFNRQXdSZ0loQU9sZDV0ODZiY2VVa1BjbFduVW1wejlJSU0vVEFNQ0dYQWxDZUpMdmNCUU5BaUVBNDRkSStBU2VkMS9IU2VkaytMWG1RSlVMNmlvRUpydmc1VEtDdkdmNUU4QT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFCQUFBQUFIMENBWUFBQUNqSmw4ckFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFKTmRKUkVGVWVOcnMzZjlSSEVtV0FPQ2NqZjMvOEdCS0ZneG53WlFzV0dUQkZoWUlXVURMQWpRV3dGcUExZ0o2TElDeGdGNEx4Rmt3UjYyS0VTQUIzVTFYMWN2TTc0dkltTHVJTzFGZCthUHl2Y3pLU2drQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTXIxazFzQUZHNy90dXk1RGNXNXVpMDNia08yOXRRZmEyaUd3dlp1aHZFU2N4cStXZzFGQW1ERWdidlR6c2pZejVWTVB0cEExL0wydGl4MytPOWRCUHQ5alBNZzd5ZTQveG5hanNsdS9QSG05TGE4Y1N1NDF5YmFlODljUWM0NDdoS252dy8vODFYdGdWQlFkMzJnTDc4T2ZXSGZiZG01bTN0OTRHNytzS3poaDQrZEFHaUh5VGVBQkFCVCtqeE1jaitiNElaejF5Y1BiOHVaMjFHbFBwZzV1QzMvRU5qTWJqVThjKy9HU3p0enByYzM5SWRmaDdHeGNVdG1kVFgwaVgvWGtoQVlJd0h3cDZJb3lnWmwxOEg2aFh0YWZibThMVWNtVmVIbUJkZHVSM1ZCLzhsUTc4YWx1T1U4ZmQyOWF3ZkcrTHJoZm10M2NjdVg5SFhIV3F1NVNnQW9paUlCb09SWkxvYVZGdWJ4dUQ5MmJrblI5b1k2dmpUMlpCdjRTSnp1VmpQYzF5L2FXSGJsZWxoTWtCeVRBRkFVUlFKQXlmUkJMdmljZjA1Z0YwQzVnZjlDa0ZOVTR0UUs2T3ZIdjFOdHFaamsyQ0xuUk1EZjlFY0FLdFFNa3pHSmdPa2NQMUVQN245NWdmLzFVTjlXeXNvSlhpOGtBclorMXB3UDk4NVlWODQ0ZHp5TWMxa25Bc1ljTUdTS0ZFV3hBMERKWVlYTFlXVHp6QWUrbUVBVjRTQjV2NytXY3FyUHJoVWtubWdyMWV3SXlDcTVZd2NBQUh3TlVDK0hDWnVKN2U0ZHZ6QlJQbktMc3RXa3J5dWM1OG43NHJYbzByZjNvZmx4TXV6Uy9hbEcvd3pyazJMWkxDUklBQURBTjBmRHhNMXVnTjFwMDhzN2U5NG5pWmVjQXgwSGE5WVo5SndNUVkrKyt6QVFsQXlyOTFtWFJlSkhBZ0FBSG1xUzFadGRPbDV6NHV4KzV4bm9DUDRFUGRmSjJRRDd3M09qMHlTcUZ6NHhKZ0VBQUU4L3hMM3IrdnJnWU4zQXdDNkFQRFRKZ1dZOHREZTBpVVdsdjc4YmZuK2pLWER2MlJkMk42RUVBQUM4UExFVG1HN25lSVAvVzdzQTR0dFBYcEhoK2Y1K1d0bHZsaWptS1UwS21peVZBQUFBUWM4WTJyVDV0bUM3QU9JNlNKSmh2S3dieHNzYTJra2YrRXRhOHB5NzE2VkNKUUVrQUFEZ1pVM3lxY0J0SnNmYlRKWk1xR01HZGQ3M1oxMzdxZnhrVWJpZ0R1MUZBZ0FBZHVzdWt5OElXaTlnYkxiOC83VUxJRjVkbnJvTlNBSUkvaW1qM1VnQUFJQko3YTRkditMLzF5NkFPRnJCUDhaTHdUOWx0UjhKQUFEWWZGSjc0alk4cVovY05LLzhOK3dDaU5IT3o5MEdkdENPU2traW5RaitLU0VKSUFFQUFOc0Z1WklBUDNhOGczL0RMb0I1M1gzV1RSS0dYVGdvWUx6c2pFbnNVTjhmWmp0VFNBSUFBTFp6bEt3Ry9XaVMzT3pvMzdJTFlENE8vTU40K1kxZFgremFyRWxXQ1FBQTJONnNXZnlBam5mNGIrMlpkTTlpa1RiL2ZDT1VPbDcyNDVDRUdHTzJMUWtBQU1qc0FlN0xBRjkxYVhlci8yUCttenl0RC95UDNRWkdIaTl6Y21vTVl1UXhkL0pYU3lRQUFPQjE5Z1ZOLzNXYzJiOUwvc0VaZVk2WGkweXU5V0FvTUtiSmQ4WklBQURBNi9VWi9MYmkzOStsOFZiSnh2eTMrZWJZZldiQ3RoYjlWUUFKTWFZMGFWdVRBQUNBREIvZ0FTZjBPZi83dGV1RE1TZWNZN3g4T09aNHRZc2l4MkFKQUFEWWpTYmxzN1YxbDdvMC9zcnhGSCtqWmc1YlpJNkFwd3M4bGt1SU1iWEprazRTQUFDd083Vjl1bTdLay9ydEFoaEgvNDV6NnpZd2c1T2c0Nld0Lzh6MVBKMGs4U1FCQUFBWlBzQ0RPSnB3QXQ4bHV3REdDc0xBZVBsVm15VEVtTThrWjdGSUFBREFidFd5QzJCditLMVRUNDdZblM1SnFtQzhOTWFRYW1xREVnQUFzUHZBdUlaZEFGT3UvZ3RZeC9GUHQ0QUE0MldVVCszMVkwdXJTcGpad2RqUFZna0FBTmk5OTRYL3ZyMFpmNk1WdXQzWUYrd1F4TEhyZ0FmUDExRVhFU1FBQUdDY0IzaFg4TytiWS9YL1RuOWZHMDNzMWQ2N0JRVFI5K2Myd0poOW9Db0lZdFRkV1JJQUFDREEyblNpUFBkdmMzQ2RZQWNCenk2TnZ1MGFOdENNT1ViL2ZlU0xYOTJXaitvd1d6ZTM1YXFRMzNJeDg5L3Y3K01IVFdydGUxV1NmaHo4bDJyZHFWL1QxKzNMMFNkcis4TkRmRlhZL1Q4S2NPL3ZQbDIzMUIyS0QzYVd3M1BoLzFUYnhuNjVOdzVGMXczenBKdVovbjR1NTJHc2h2N3doK1pkOVB5aDk0L2I4bG1Wd2ZiK25MbGNxSUxaWEtqN29vT1kwd0Q5KzdsUzJtR0EvYVRwUzVCN3EyOXQ3eng0dnpsTmRpanNVcDhBV055VzYrRDEzczA0cmtXK0w5ZEQvVFdhY2xYemh5K3FDU1FBa0FEZzZjbmJTZEFIK0dWaDkzb1I3UDYybW4rV3o4VG5BbjlCenJpNlFFbTh4K1Y4eG5zU05RQTgwbVJIVDQ1RlRnUkloSUlFQUJJQVBLUGYxaGR4aGF1VTkwb2pyZjdyWDlzN0NCcm9TT1pNMjVmUGt4WFBPeEh2eFhseUpzR1UycUNKTWVmZGdBUUFFZ0NzTWJHOVRMYTFqbUdSWXE2UUNCdzNFMjIzektWQVp6Wkgrdk4vUlF2OEJIM21ENlh1SWdRSkFDUUFxT0loZmxySVBZMjZiVmdmeTJ0TUZQekgwZ1hyejR1SmYvOStrakFtZGhKZzUyT2t6d0FDVUpyK0ZPbTNLYzdwKy9zRjNOT1R3SUZhbSt3QzJQUitSYkFhK3VtTktwblYyVzM1Rk9oNmZxbDRmRDRiQ3VZUG83WlJDUUFBU24ySUgwb0E3RVNUNHE5S0hXdnlXUVgvdlhlQy96RDZ6Kzh0S3gwdmZ3bnl1NjhDUGJQTUg3Nk9UOFdPMnhJQUFKU3FuOUNlQ2J5cUNLN2JaQmZBT3BvZzEvRnhDSGlJNDdEU05ycnYvdk1EVjhNNEZjSE9rMVFTQUFDVUxNb0R2TW4wL3ZYWDNXVnlyWFlCNU5FTys5VzFUNm9pbkZXcU0yRWFJUUZ3bGlURUl2cVVZdXhTMnZtNExRRUFnRW10QkVBSlFYV2I3QUo0U1lUdHpyOGxXLytqaXBJdzNTdjBiMFcvN3p4ME00eFhjM01HQUFCc0VYRE03ZWNNNzF1VDhqdVIyaTZBK01IT21Xb0lhM1ZiUHBjWThNejhkNTZ6VExFT25LT0M4VW9DQUlEUzlWc3I1MTV4YkRLOGJ6a0cwMjN5R2EzSUNZQXJ3VTU0LzlZZjNHLytza294WHM5b0pRQUFZRE5MdDJBalRjYUJ0RjBBVDl2WEQ4bWdqbjUydndta3VDU05CQUFBTmZqRExhZ21pRzZTWFFENklkdGFCZW5EVTRpd0E4RGhmL0VWVjBjU0FBRFV3Q3NBZFFYUWRnRUlMdG5lc3BMZnVhOC9rTUg4UVFJQUFMWXdkd1kvcHdSQUNjRnpmNzg3elI0SVRBS0FXZnpkTFFBQUNneWMrMFRHbVNxRm5ldFhSTWRNcXRvV1QyNVdhZHlFems1M0lVZ0FBRkNEZHVhL3Y4emtQcDBXVk9kTitwck1rQVNBemJ4MUMrREI4L3Vua242UVZ3QUFxTUgvdUFVdmF0UDhpWkpkY3hZQThKUzVkeHJzcXdJa0FBQmd2T0NXK29MbEpqa0xRRCtFSDV2N2NMYzlWWUFFQUwzRmJma3plRGxSVFVCRytrbVdsWmFYQTdOU2d6TzdBTDVaemZ6M2YxWUY4TjNZQ3hJQWxROEMwU2NxL1hhcEQ2b0t5TWhCZ0d2NFhaQThteWJaQlJBbEFYQ2dDdUNCZjdnRlNBRFVxNStnbkFlL3huNnJsSU5oZ054WUFYNWVtOHBmaGRJR1l0aVRCQ0NRWllCcjBCK1FBS2o0Z1hpZTRyOEw5QzdOLzc0VXdDYTY5RFhCYXFKWmQzRGN0NEVqM1NIRVRwUi9xZ1o0TURaSkFpQUJVS0grbmZybzc2ZCtTUGw4eGdxZ3R4Y291RjBGdlVkdHF1Y2QxT1BrMEswSVNmeUQ1TDFuNG9nd3QzMnZHcEFBcUV1WDRyK2IrUG0yZkZKVlFHYjY1R29USk9pS21nQ29hV3Q4SC96WHZndmdTcnVEQnlLTXphMnhDZXJSci9wSFAvSC9NcFd4WWpMM2ZielEzR2R6b2U2cmRCUm9ISTNhQnRvTW5rRzdMbCtTWFFCUjZtSmhtTUt6NHNIWTVHczFUTUlPZ1Buc1pSQVk5S3RXaDhsNy8wQmV1aFRyYzZWUnZ3QlE0eXFzWFFDeGRnRjBoaXYwaDcvR3B0TWtRUWxGbTN0VmNwMVMwb1BaQ3FDK3B1N3JjQkp3TEcwRDNxYzIxYmY2YnhmQVY2ZkI2cUkxYkZINUhMSEVuYmRBQmhQVXgrV2tzSHN1QVNBQm9PN0x0ajlNbkNJR20vcEZ2TEtvdUs5MHlZSURSQjRQTDVQWEFjQ0RkNGFCcHpRU0FCN3M2cjVNZDlzbW80Nm41NTVEZGdFRTdETlIrNHFWVCtad0ZIU01jakFnRkdCLzZOQW1SUklBU0FEdyt2RjBjVnV1azFlcE5oWDludGtGTUw3TEZIY09zcEFJWUdKTmlyMG9kNkNLMktXZjNJTEozQjM2RjMxTHo5c1U0NXVvWXlRQTVyUWM3aTN6SkFEYUdmLys2cmI4U3pYc3hQOE1ZK2grSmdGQ2Y0RHFteFRySU5VK0lYR3FLWVd0bjZuMEs0dlJYL1U3UzE4UDBGeW11Si9ScEJ6WEtjWm5ZNStiUy9TZjVmNTNvZk4wSkFDSzFHOXRpNTdCKzNCYlBoVjYveVVBSkFCZ2pnRG0wQ1EzdEkrcHpwMEF6ZEFXY3RLZjF1NnJSRS9mbS84YjdzL1ZFQ3l1M0phTjVKQVV1Kyt1cnZteDN4K05HOFlQWmhsVW9tK0ZMSDFGeUNzQWRTY0FiSGRXblA3djNYOW5BVHgwcnY2TEx4ZERVTnRKL0syVkZOTm15aC92TDRha2I1dThhc1NJMmd3NlJBMmZISkVBa0FCUWxOb1BVL1h1djdNQTdqdFE5OVdWNjJIQnh6dmxrbUxLdC9sNXYxRHJxd3ZzTkp1WXc2Ri9OVFI2Q1FBSkFFV3ArZkMvVHAwOFc1cEt4MGRKb2JwWFF5VURIbXExaStvVFpJdGt0d3l2ZEpsQlk2OWw0SmNBa0FCUWxDa25FUUs5dkVxdEJ5TktEQ24zQXg5Ym9vMlZ5cmQ1ZTZjN3NLblREQnIzU1VYMUlRRWdBYUFvVnY5akJkeDJBY3l2RC9pKzZMUEtvNzdaVkR4bmtCUlRIaWZIamlUSEtHWHdxQzBnZGI4bEFCVEZ1Lzl4QW95OW9OZFZveVA5VnBFSWVPQlMvU3ZwKzFkbUZxYlVQR1UvazBaY1d5WkxBa0FDUUZHYy9COXJwVDN5dGRYR3RtZmx1ZDJpdGMwWlcvV3VwS2QzQkhTbTF0d1hjVVhqUjZYR2t5NGxBQ1FBRkdYc2NpNncyM2lWM1M0QUFZK1N4OExSVVdWOXdoY0JsSmZtOWI0Y1FEYUJ4bEdsZFNNQm9GOHFTbTA3cXlKdTdXNGVYV09Yd1RVS2VCVGwyMXltbHY3UkpPZGpLQytYaFdsMjNVNHlhS1NuRmRlUEJJQUVnS0xVOUVXVmlJZTdQZlVNc2d0QW0xSHNCb2pJK1JqS3VtZi8yQTFRb1lOTUdtZk5KMWhLQUVnQUtFcE5XLzhYQWU5VDg4UzFkaGxkcS9tTW9ud2I5L2JNSVJTbCtsM1dWZHJQSUdQK1JXWktBa0FDUUZGR094QW8yaVE0NGtydVM1K2R0UXNnRHE4Q0tKdU1mNlhQTDV0a1o0eXkrVmR1S0ZoZndUbDhLdVJBVlVrQVNBQW9TalhKMVVYQSsvVFNoS2dMV0w5TnhYTWJBWSt5U2YvdUN1OFRuWHBXTmlpMTc3cVdKUTlRRnFwSkFrQUN3QU5KR2FWRW5QUkdETjdXZlE3WkJSQkhxMzhyQll5SHUzU3FqcFVDRmdoNHBSd09CaEYwU2dBZ0FhRFVOZGxkQkp3RXJic1NFbkdWcmVZSm5BUFFGRW16aDhuVlMzV3NTQUxJakhzdlZRSkFBa0FDUUttdm5BUnQ2em12L3QrSnRndWc5ckhicXFjaUNmQk5rN3dlbzBnQ1ZDbVh6cSt4U1FBZ0FhRFVOYmxkQkp6NGJKcUk3Z0xXZVdzTTFmY1ZTWUJCRG9kL0s1SUE3RmdPMjM4NjFTUUJnTW1yVXMzS2YwcGxyUDVIN2JPMWo5KzJQaXVsalplU0FJb2tBR3ZMWVN2Y3FXcVNBRUFDUUtrdXNib0lPTm5aOWpXME5tRDl0NUlBa2dDS0JTbEpBT1dWejhYR3REd3ZYUVlOeTJjbkpBQ1FBRkIyLzhDTy9pblZrbGIvby9aYlkzZytDeUZLckZMeXA2Z2xBUlN4bWc0dXF5UUJZUElvQWFBVTlxRE9ZY3ZlSXVEejZMVVRuRFpnZTJnTnAvOTFZbXhRTmh3UFN0NzYzQ1M3WXhReFFYSDZTY3gxa21HVkFORFpKUUNVMmc2eHlpRkwzd1M4ZDR0Qys2NXgvSnN1V2ZsVWZKbnFmcXhnZDR6aWpBekJRNWFUTFFrQUUwZDlXTEZhbFZkQzlUVGcvZHZWUkw4TjJENWFRK3BmK2xWZEs1L0t1dVZjWWt4UkxON21ZSkZCNHhGWVNnQWdBYURVdGVwL3B3bDRENDhLNzcvRzhqem5Ta3FaNDBQVWNkbThRNWs2WWM2T0hHVFFjSzQxSEFrQUpBQ1VuZlRQTnNPMkhXMzEvM3FFMzlnR2JDK3RZZlU3KzhaYVpjMkFwNm1rVHh3bHV3RVVPMk95ZTVEbGNPaWY3MGxLQUNBQm9Md3VZTzB5WG1XcTVaTmZkZ0hrbzB0NW5KdWs2RDlUY0RhQTRsV0FqRHByRHUrMGRhcEtBZ0FKQUdYci9wajdBN2VHMWY4N2JjQTIxQnBhbjUxSExaTFZUOFVjOW43Q1ZpSkE4U3FBU2RXcjMxTkZBZ0FKQUdXekIyeC82bTRKTzZlYUNpZjAwZnJ4cGFGMUxWMnlJMEFSOER4T0JFaU9LYjRLRU1oUkJnM0VwRU1DQUFrQVpmMVY2WDZ5VmRyMnVwcFcvKysweVNwbXpscUJqNUo4d2VyTzNqQisrSXFHY3I4MEhoWFQyNWN4bFFDUUFKQUFVTEplVWJvWXN1aGR3US9TcHVKQStMekN4RWVKZ2MrQlpJQ1M2am9ROEtVeC9jaGNSVWtUN3ZEK1NiLzc2NEdVdzRuNmIyL0xVblZ0blFDWTAzS29QK1pKQUxRei92M1ZiZm1YYWhpdFg2WEt4c1hURkd2bHVXL2ZieWFjS0VjTHVnOXZ5NW11dUxYOVlYeitkYWhmaHh2WDVXem9RM3lMUjlxaEgvdzYvTmZDWDEwbWlmVWtBR0lFQ092NGNGcytxU29KQUxMcjMrb2VBZkR1MUp3QXFTa3BzUGRvM1A0NVdTMStLbURNUFdueVp1aEhQRi9Iait2NlY3Zm0yZkVqVjU5dnl6dlZPTDZUWkV0SUxRa0Fyd0RVbXdCUTk1U2d4bmYvZjVRRWNSWUFmQi8wOU8yd2YwMG10MWNyRnFxUEVaSW03ZEMyY2p4bm9WR0Y0K295YUFTWHlmWWZDUUFrQUREQkYvaEtoTUQ2ODl0YzNpbDN2aFZqYTFKZW55YTE4RHZ5WkNwNlEvaVN2QThuQVlBRUFNU2J6TThaOURhU0liQ1dOcE5FZ1A3RGxNbXhIT0kvU2JFUjlEYzFoeTBoQjZwS0FnQUpBRXppUForK1l4Y0FyTzhnZU5EakU5ZE1IUWRHZndYOFNEWHQzbm55VHBRRWdDQlFBa0Rkb3czbjJxYWJaQlVUTmcxNklzOS83WGhsYW0zZ3hKaWsySTRkWlJEOEN4Z2tBSkFBZ0xzSlNyUm5WQnZrM3RnRkFPWE1nMDlVRFRNbHhxTHVDbTlVVDdrVHFSOU5JTHozSVFHQUJBQkVhTCtSMjNPVDdBS0FiWFJCNTc4d1Z4TGdOSGtOb05qS3plSDBSMXVnSkFDUUFJQmVtNnordnlUaUxnQkpmQ1FCeklISlQ3VG5pZGNBZGlDSFEvODYxU1FCZ0FRQUJHbTdPYlRsSnVDemZLSHBJZ21nNzVDZGlLOEROS3Fsbkl5T2J6NUtBQ0FCQU05cGs5WC9kVVU3emRrbm5EQkh0dUpKdmttQVNEdkdPMVd5blM2RDROK0FKd0dBQkFCRWFyYzV0ZU9Jci9ndE5HRXlDbml1QS9VZHlUUG0xaVlMeEZuYlQvSGYrKyt2cjFGVkVnQklBRURBeVVmMDFmODdpMlFYQUpRdzVyU3Fnd0NpN0l4eE9PYUdvbVUwRFhRU0FFZ0FRQTV0TnNjMmJCY0FsQkh3NkRkNHBveDhEc0RmQ2gvSW11RFgrT0cyTFBVeEFBWnRpcGNZL3BqQmZidTVMYjhGdTZiM3lTNEE4aEdsbi8raUt2Qk1lY0RYTWRhMFNQRlgvczlWMDZTc29OWExEZ0J5RW0zbldrN3QxeTRBZUowSXV3QnNlY1l6eFhOa1kyM0s0OUEvcXdJU0FFZ0F3SDFkd09kVmJpc1BpK1FzQU5qV2ZwQitBNUppSXk0YWwvWUtRSlBpcjZ6M1cwb09oLzhDd0ozallOZHpkbHV1TXJ1SG40STlYL3ZnLzBqVEpoTjlmMThGdUk1V1ZSQkVoTmNBZHA1RUxpa0JzRGNFLzlFejdZY1pUcWdBR0ZlWDRwMWI4ekhEKytnc0FIaWR6MjRCL0NWQ1VxeVZBSGphU1lxL1ZmR1RnUldBSDRpNCtyL0s5RjdhQlFEYiszZUFhMmhWQTRFc1MvdEJwU1FBdXFGRWJ6d2Y5Q0VBZnZBTWE0SmQwOGVNNzZkZEFDRFlnVjM1SThBMTdIU09VRUlDb0YvMVB3MStqYXZiOGs3L0FlQUhyUDd2WHNSZEFNZWFPcG53cWlyRTZnOFNBSThlcURsOFR1OWRjdWdmQU4vcmt0WC9NZHdFL0IxSEFlc2FudW8vYy9wRkZTQUJNSjdjRXdEbkdUeE1IZm9Id0ZPcy9vL25VOERmWWhjQU9maDk1ci92ZFJraUtXNFJOK2NFUUgvb1h4djhHcytHQWdDUGRjbnFmMjIvSjJLZEExQ1J2MmQ2M1FjcC9vbTYvYXIvb1NZR3dCT3Mvay96bTQ2REJkM0hNODRQTG1iKzdmOUtGa2FJbzdzdC81ejVHdDZxQmlRQVhwYkRvWC85VmhHSC9nSHczTVN6Q1haTkh3dTkxeCtEelJ1NjRacFdNL3p0ZHViZi9ydXVUeUJOOHNsQktwVGJLd0I3dzBNOCtydEI3MUo1cXlnQTdPNVpadlcvN3QvbUxBQWkrN21TM3huaGpLNVdjME1DNEhuOWUvLzd3YS94US9JTlZRQ2VGdTAwK0lnbjV1K2Fzd0JpK0ZYM3o4TGNiWE0xNGRnSDBmdEQxUW1BbytHQkdkbForbnJxTUFEOFNMLzYvejdZTmYyV3l0KzFkcGJzQWtnQjdvSFQzZk13OTJMYmZ5cTYxNjNtSmdFZ0FmRDBRSFFTL0JyN2JVUWY5QkVBbm5FVUxBanFWOEJxU1Z6YkJUQi9BbURmRUpCRnNDTlJNNTJmM1lMdzJnRFhzS3d0QWRBUFFoZkJyN0dmUUIwbVc0a0FlUDU1Rm5IMXY1Wm4xMW15QzhCa21oenFaNnArdW5TL1dVTnhyeTdsa0FDNFNQRXprWDN3ZjZWL0FQQU1xLy96cTMwWFFJUlQrUDloS0JEc0JFa0FSTkQzZnp0ajR1cWYyVzFwL1NGNkFpQ0hRLy82eWNSbi9RT0FGeVlSVnYvbmR4WXd1RGlwckE0T0RBZnFKMUFDNE1vOVIzK0lvN3N0ZndZdkYvcEZOclNWZWwyb2V3SllCSHQrZlVuMXZ1ZDdFSEErMFU3MDI5dktmaTk1enIybmRCN2c5MTVyZXVhUXo1U2RKNG1qN2dESTRkQy9QaHZ6VHI4QTRBVlcvMlBwZCswdGcxM1RWR2NCckNyN3ZXd213amcxOVlyOEh3RitjNVBzQW9pb1RUR1NsVHYvS2tiRUJFQS9VVHBOc1ZjbWJvYmczNkYvQUx6RXUvL3hSRHNMWUtxSjVpckkzQ1hLeEpxSGRSTGh0ZHVyd3YvZVU5NXJndUZFU1ZSV2NjNWNoSzA0TDVWT244aU9Wd0RxNVJVQTV0UUgvbCtDUGNNV3FpWEUyRERYV0hHUnZFYko5NjZEdEl1amlYOTNJNzdnaVlSWWxIWlJ2S01NZ3Y5VGZVSUN3RVRISkYvZHM2WkY4dTYvQ1Y2c2QrTWp0VW5ibm8xVGo4c2N1eEN1amM4RWJST1hIc1FxQVFrQUpBREloOVYvNDBQRThTTFNmRXZBTTcvOVlPMWhEcWZKUWlQZm5BUnFEMFYvSmFZSk9FbnlrSklBRUFTYTRLdDdTcGxFM0owMDdUa1dOeGllY2hlQUx5cHhsNlM4RHRRV3ptZTZEMTJ3UHRGcG1yT0o5cFdZb25kSlhhYjRxLy83K29RRWdBbU9CSUM2WjAxTndPZVlTV1hNTVdLT01TUGFlVXRXUGMyLzV4eWpJbzdYNG83cDlmYzgyb0owc1U1VC9PRC9TSitRQUJBRW10eXJlekordHZuTzlOUGFWTjh1Z0M3Z2I1WUVNUDl1SkVNZTdEeVdCS2c3K0Q4djlXWkhmQUI1SUVrQUNBSWxBTlE5cjlFa3EvL0dpZGpqUnNRMmFzNDFqYjBVODR0YmM1K3pGZkVnY2ttQWVvUC9ZcC9iVVcvMjQ4SEkrNUlTQUlKQUUzdDF6eWFzL3VlblRmWHRBb2o2MmVWemM2OVJFejlSWDdzOUNuQnZmSDY4UGwzZ2VMUzRjVERhb1NOUFpkMGEvVUlDUUJBb0FhRHV5WHdTYWZLWXgxZ3g5ZGpSQlo2RFhhZHBEa09zeVVHS3ZmQzJad3g0Y1hlTXhOaHVZOUhJcjZFWHVmMy9QTVhmK3UvYnRCSUFna0NUZW5YUHBxeis1MnMvMVRVWGlmaVp5aDk5QWt2UTgvcWs1RVh3ZW80UzdIUXAvdUtraE81dTZqbjYyRmRjSExySUlQaGY2QnNTQUlKQUNRQjF6eFlUYmF2L0VqZzVKWEJ5T0lqNXl6QXZrd2pZZkR6S29YNm4rdlJsS1VteHUzbUZoY3J0QXYvckRPcTN1TVQ5UVFZMy9Wei9rQUFRQkVvQXFIc0VqNUk0RlNSeEl2N2VsN1pCQzN5ZUQyQzdGSC9GUC9JNHRjanMzdlhYNjZEQXAvWDM1aVNUd0greTh6QittdmloR3YxUXZadmJjamo4bC9rc1Iwb0F6UDJiM3FyYTJSSUFyYnBuZ21kY3RJbHMvenc3VXpWYkpYSzZRTmV6dWkxdlJ2ejN6ek1OcXZ1eDlmZmJjalhNMjFaRHFTbXcyUnZHbmwrRzUxeU9nV0MwY1NyaVdMN3VPTkgzaVQrR1BqSFdmRHF5OXQ1L2Z4bjZRNVBaYjdnWnh2c2lZdEc5RlBmVVVTVmVHWU1kQUhVbkFOUTlVd1NOVnRYS1NlYlV0QXVnTmU5UWpGT2h4M09sbnJLWW9vSC9iYUtPMUNYYlV3QW9OMkRzZ2wzVFI5V3l0VldLdDNQaWVNUi9lNW5xV3luRU9HWDhKSnArMWY5VFNRa0FCN2NBVUtyVFlOZXpUTGIrbHhZQU5HbmNKTk1IVmM3RVZvSEhxZFZVZ1JqYzgxdWFhT3YvMzl4ckFOaGFtK0o5cjl6cVZabkJ5Wmk3QUs2U3BCSFRpcDUwK3BpY0NjYTB6NXpKa2s0U0FBQVFNeWpieGpMWnpyM0xBQ0NTSm8yL0MwREF3MVRqMU9mZzEzaVRKRk9aenFUanJ3UUFBR3luVFZiL1M3WktkZTBDRVBBd2xjTk1yck5ma2IxU1hZeHNtU1pPaUVrQUFFQzhZR3piU2NSU3RleFViYnNBQkR4TTBhZFdHVjN2b1NwalJEZHp0REVKQUFEWVhKdXMvdGRnRmZDK25xUnhEMWMrVEY0RllCeDljbW1SNFRVYld4bnp1YjJTQUFDQStLeisxK05Uc0lDNEQvNlBCRHhrWnBhVnpoMVpKRHRqR09lNVBjdlhKaVFBQUdBemJiTDZYMXZnOGx1d2EzcWZ4dDBGMEU5S1A2dDZkdWhENWtIMHUyUm5ETHQ5cnJ5YjY0OUxBQURBWnF6KzE2ZTJYUUM5ZnJWMnBlclpnYk9VLzJjbVY4bDVBT3pPckFrbENRQUFXRiticlA3WHFNWmRBRGZKcWlldjE2LzZmeWprdC9TN1lqNnBVbDZwVHlRdDU3d0FDUUFBV045cHdBbnBVclZNb3NaZEFGZkpxaWZiNi92TDIxUldFcWxQWnB5cFdyWjBGcUg5U0FBQXdIcTY5UFV6Yk5FbW8wd1h6TlMyQzZEM1dSSUF3ZjkzNDY1REFjbDJMSlVBQUlEMVJIdjMveXg1UjN0cU5lNEN1R3RyWGpWaDArRC95dStEL3dxMW0wb0NBQUJlMXFWNHEvOENzbmttL2pYdUF1Z3RrcTNQQ0k0bEFkZ20rQSsxRzBZQ0FBQmVadldmTzdYdUF1Z2RKb2VnSVNpV0JDRGI0RjhDQUFCZTFpV3IvenljOUVlNy84Y1R0dEVQeVprQUNJWWxBWGpKNXhUMEhBd0pBQUI0T2JpSzVDeFovWi9icDRCMWNEeHhHNVFFNE01VjVVSHdYUkxnVEZQZzNoZ1o5ak9xRWdBQThMUXVXZjBuajNxWXVxMzJFOXovVFdXZThzNzZsc2tLK0YwU3dDc3k5TUx2a3BJQUFJQ25XZjBucDdxWXVyMzJRZDhid1YrMVBxVnlQL1gzbXVEdm5YdFNwYnVkSU9HVFFCSUFBUEJqWGJMNlQxNzFNVWViN1NlOS81dXNmTllXNkx3YmdsMis5M25vRXhKajlWaW1yOG5RWlE0WEt3RUFBTi9yVDFZL0NSaHNybFJOS0dmSkxvQTdmVEQ0Vmh1dEp0RDU3Rlk4YXpVa0FTUnR5M1p6Yit6TFp0ZUhCQUFBZk84b1RmTnQ5VTBtR1ZaWVk3SUw0R0Z3YURkQXVZSE9ZYkxsZjFPTFpEZEFxYklkN3lRQUFPQ2hQdkIvSCt5YWZqUHBEdXNzMlFYd09GRDhNRXlNbDVwSE1XMzhUWExLL2JhdWh2N3d3VGhlaFB2SnNGV09QMEFDQUFBZXN2clBwdXdDK0hIUTgzYVlLSzgwa1N3dGg4RDFVT0M2RS8wNC9zWjRublhnL3pFVmtBeVRBQUNBYjZ6K3M0MnpaQmZBYy9mbWpVUkFkb0gvMitUemZtTUZrUitTSFJXNUJ2NkxFcDdIRWdBQThJM1ZmN1lWN2J2UDNXMXBBMTNQL1VTQW9ES21zM3VCLzlMdEdOVnE2QXR2aHVCU2tqZG1IUlVWK0UrdHYybC9Lc3FhWlF4ei82WUx3OEJzTHRROWErb0QveS9CeHNPRmFqSGVGRHIrN04rVzA0Qjlyclp5UFl3emplNGJJbWwzb1UzT1hzNkh1a0FDUUpFQUVBU2FrS3Q3ejZwSnk1Y1VhemNDTDJzRFBsUGJUQUtmYzhtQVNZUCtreUVKUXp4OU1xYmZqWGFwclU1V0xvZDdMaEVtQWFCSUFBZ0NKUURVZlNXcy9sUEttSlA3R0hRd0JLZUNuOTBtRXkrR0FFZlFuMTh5b0UrUW5RNkpHKzE1ZDBtdzArSGVWcGRvLzd0K1JTV1dNLzk5N3p0Q2JONzlaMWY2ZDBiYlFOZlREbVdaeWYzN1BKVDcxOThIcmI4TXdkQitzalBtT2F1aDlQT09QNGIvbW9Qa1haOW42ZHVCZ1hkOTRIR2Y0UGtZNE9aUmYxalZmRU4rbXZqaFl6SUVUSzFMODI3cFdpVW4vVW9BYk83cVVSQ0U5dlRhQ2ZDeXNIdjhPQkZRVzJKZzlTaUl1VW9PS2F2ZC9WaHJyOExFd1BLRi94MEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUtqVy93c3dBTWl4TmRxUkNVcWdBQUFBQUVsRlRrU3VRbUNDIn0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDEtMTYiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MjEsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWlRQYXNzIFNtYXJ0QXV0aCIsImNlcnRpZmljYXRlTnVtYmVyIjoiVTJGMTAwMDIwMjUwMTE2MDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDEtMTYiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MjF9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDMtMDYifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyIwOTdjY2QwZDMxYjZiMjU2NjliN2M0OGUwZmU3M2NhOTY0NGVhZmM2Il0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjA5N2NjZDBkMzFiNmIyNTY2OWI3YzQ4ZTBmZTczY2E5NjQ0ZWFmYzYiXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ill1YmlLZXkgNSBDQ04gU2VyaWVzIHdpdGggTkZDIChDb25zdW1lciBQcm9maWxlKSJ9LCJkZXNjcmlwdGlvbiI6Ill1YmlLZXkgNSBDQ04gU2VyaWVzIHdpdGggTkZDIChDb25zdW1lciBQcm9maWxlKSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk3MjgsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6Mn1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiLCJyZW1vdGVfaGFuZGxlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlEU0RDQ0FqQ2dBd0lCQWdJVURxRVJ3KzRSbkdTZ2d4Z1Vld0pGRVBEUlozWXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFESTdYbkgrWnZEd01DUVU4TThaZVY1cXNjdWJsdlZZYWFSdDNZYmF4bjlnb2RMeDVzd0gwbFhyZGdqaDVoN0ZwVmdDZ1lZWDdFNGJsMXZielVMZW1yTVdUOE4zV01HVWU4UUFKYkJlaW9WN1cvRStoVFpQLzBTS0pWYTNld0tCbzZVTGVNbmZRWkRyVk9SQWs4d1RMcTJ2NUxsajV2TWo3SnRPb3RLYTlKN25IUzhrTG16WFhTYWowU3dFUGg1T0FaVVROVjR6czFidm9UQVFRV3JMNC9KOVF1S3Q2V0NGRTVuVU5pUlFjRWJWRjhtbHFLMmJ4Mno2b2tWbHR5RFZMQ3hZYnBVVEVMdlkxdXNSM0RUR1BVb0lDbE9tNGNycHduRFJMVkh2alllUEdCQi8vcEV5enhBL2djU2N4andhSDFaVXc5Ym5TYkh5dXJLcWJUYTFLdmpBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlRxdDBLUW5neDdaSHJiVkh3RHVueE9uOWloWVRBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBcVFhQ1dNeFRHcVZWWDdTazdra0ptVXVlVFNZS3VVNitLQkJTZ3dJUm5sdzlLN0hlMUlweFowaGR3cFBOaWtLam1jeUZnRlB6aEltd0hKZ3h4dVQ5MFB3M3ZZT2RjSkpOa3REZzM1UFhPZnpTbjE1Y0ZBeDFSTzBtUFRtSWI4ZFhpRVdPcHpvWHZkd1hETTQxWmFDRFlNVDd3NElRdE15dkU3eFVCWnEyYmp0QW5xL05EVUE3YmU0SDhIM2lwQysvK05LbFVyY1VoK2o0OEs2N1dJMHUxbTZGZVF1ZUJBN24wNmo4MjVycURxc2FMczlUYjdLQUhBdzhQbXJXYU5QRzJraktlcnhQRWZlY2l2bEZhd3AyUldadnhyVnRuM1RWMlNCeHlDSkNrWHNORDA1ZENFclZIU0pJcytCZHRUVk5ZOUF3dHlQbW55YjB2NG1TVHp2V2R3PT0iLCJNSUlEUGpDQ0FpYWdBd0lCQWdJVVh6ZWlFREpFT1R0MTRGNW4wbzZaZi9iQndpVXdEUVlKS29aSWh2Y05BUUVOQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU1aNi9UeE04cklUK0Vhb1B2Rzgxb250TU9vLzJtUTJSQndKSFMwUVpjeFZhTlh2bDEyTFVoQlo1TG1pQlNjSVpkMVJueDFvZDU4NWgrL2RoSzdoRW03SkFBTGtLS3RzMWZPNTNLR05MWnVqejVoM3dHbmNyNGh5S0YwRzc0Yi9VM0s5aEU1bUdORDZ6cVljaENSQUhmcllNWVJERjRZTDBYNEQ1bkdkeHZwcEF5Nm5rRW10V21NbndPM2kwVEF1Y3NyYkU0ODVIdkdNNHIwVnBnVmRKcHZnUWppVEpDVElxK0QzNWh3dFQ4UURJdituR3ZwY3lpNXdjSWZDa3p5Q2ltSnVraFl5NktvcU5NS1FFZHBOaVNPdld5RE1UTXQxYndDdkV6cHc5MXUrbXNVdDRyajBlZm5POXMwWk93ZHdNUkRuSDR4Z1VsNVpMd3JyUGtmQzEvMENBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUI4R0ExVWRJd1FZTUJhQUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUU13RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCRFFVQUE0SUJBUUMzSVcvc2dCOXBaOGFwSk5qeHVHb1grRmtJTGtzMHdNTnJkWEwvY29VdnNyaHpzdmw2bWVQTXJiR0pCeUoxWG5xdUI1c2djUkVORnhkUUZtYTNtaW84VXBmMW93TTFacmVYckowbUFERzJCcGxxYkpueGl5WWErUjExcmVJRlRXZUloTU5jWktzRFpyRkF5UHVGakNXU1F2Sm1OV2U5bUZSWUZnTmhYSktrWEliNUgxWGdFRGx3aWVkWVJNN1ZvbEJObGxkNnBSRktsWDh1c3Q2T1RNT2VBRGwyeE5GMG0xTFRoU2RldVh2RHlDMWc5K0lMZnozUzZPSVlnYzNpcm9SY0ZEMzU0ZzdyS2Z1NjdxRkF3OWdDNHlpMHhCVFByWTk1cmg0L0hxYVVZQ0EvTDhsZFJrNkg3WGszNUQrV1ZwbXEyU2gveFQ1SGlGdWhmNHdKYjBiSyIsIk1JSURSekNDQWpHZ0F3SUJBZ0lVZXg5blQ5dndaTlhTNDgzTGRpWUdmdzJTalNvd0N3WUpLb1pJaHZjTkFRRUxNQzR4TERBcUJnTlZCQU1NSTFsMVltbGpieUJCZEhSbGMzUmhkR2x2YmlCSmJuUmxjbTFsWkdsaGRHVWdRaUF4TUNBWERUSTFNRGd3TVRBd01EQXdNRm9ZRHprNU9Ua3hNak14TWpNMU9UVTVXakFuTVNVd0l3WURWUVFEREJ4WmRXSnBZMjhnUmtsRVR5QkJkSFJsYzNSaGRHbHZiaUJDTWlBeE1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBdTFNZXZueTlkeU85WlVDMzlTb01oTGNSL0RYcnRGL2NpTTEydGNpeTJFWEFaNk1rcml2VnRDZkVWTTlYNklTVEVuQlA2dVNZWW92NnBwdjZPNkpoMk5IbVltNHcrSm5TNFZuQ1BVN21IQU1mVkkyTUdUVE1WT2V3MHhVc0c3c0lTSWtJRFVCbXVrOFlLOWM1emljOSt2RlFHTElrc2RYTzVpVkZJZ05HNTNjR1hENFpMWm9BUGl1MFBFb3p4QXFZSWFJNGd4S2hPQTNTOC9XOG1JV3N1Nm9meWo0R3ZrRkc2WjdreUYzMTA3UDdtd0ZITHJJM0VOYVBXTU9GY1RhR2EwZHcrL3ZWUndqUmNFWkJWc3V1VC84N2NrU3MwYTVwa3QzdlpCbGFZZVQ4cHpTcmVWN21vd2NJTTkwTDJpYUFUbFAwbnhtYUU2bk95VGJvakZWbDJ3SURBUUFCbzJZd1pEQWRCZ05WSFE0RUZnUVVTWEVoM3NhM2J0RHVybTRNTS9DN1MxbFJ1dVl3SHdZRFZSMGpCQmd3Rm9BVTZyZENrSjRNZTJSNjIxUjhBN3A4VHAvWW9XRXdFZ1lEVlIwVEFRSC9CQWd3QmdFQi93SUJBREFPQmdOVkhROEJBZjhFQkFNQ0FZWXdDd1lKS29aSWh2Y05BUUVMQTRJQkFRQjVHYzNoYWZ0cDdoS3NFWnNvK2kvWjVuUnVxZG16RzJXQ2xVb1JVcWJhUHlnbG5KRGpLUi9rZmdPbDZpYmJGL3p0aG0zS21YUTdIY0RJUDJ4TWRHN1UyTDJpbWJKUUhxUGYvaDJIcW9qYjRyWmd1ZSs2VzRrdFNSNWVsUjlMMXJZcUUvU0dZTTRpRUtvVlFTdjdSVDFyeEllV2lLc3cvVnh4aS9RT25zeDNGN3g4MENDWWdCNEUzeVF4OFZUVzQ0MGhURXdUQTFlTUhPaXgzMnRQdHl5SElhOFBWVklmVnBIUUpCYU1WdnY1MDhVRWp3a2JVMnJuamZ6b1NUTlM5QTVqVVE4bUJTdmU5NXJqQjBkbzk4RVUrRHhkQnFYMitINmk1d2xJQ0ZnemhkemNzbmU5aEdLVDZselRYNGNJZEpzclkyK3hsZUswRkZReTZsR0VWTEVlIiwiTUlJRFNEQ0NBakNnQXdJQkFnSVVVY21NWHpSSUZPZ0dUSzBUYjNnRXVaWVprQkl3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRRG01NTViV1k5V1crdE9ZMHJJV0hsZGgrYU5hbm9DWkNGaDdHazNZWnJRbVBVdzBoa1NHNnFZSFF0UCtmWnlTMzNWRXJ2ZytCUXFubXVtZ05oZnhGcmt3RVpFTGVpZEJjQzhDNEFnNG5xcWlQV3B6c3ZJMTdOY3hZbEluTE5MRmNaWS8rZ09pTjZaT1RpaE81L3ZCWk1iajlyaWFBY3FsaVltTkdKUGdUY01HYUVBeU16RU1OeTJubTZFcCtwalA1YUY2Z2kyMXQvVVFGc3VKMWoyUmoveW5NL1NkUnQrZWNhbDVPWW90eEhrRmJMOXZ2djJBMk92NUlUWkNsdzRiT1M5bnB5cFFpbU9aNVFBWXl0bVlhUXBXbC9wTVl6NnpTajhScWtWRE5FSkdxTmZUS0EyaXZMWXdYNmxTdHRNUGFwZzBKODRsOVgwdm9WTi9GcFM0VkNWQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJRZ0tGQWhHNlJhVytoVHk1MmR4ZVQ4YkM5Nkh6QWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQVlNemdMckpMSXIwT292UW5BWnJSSUd1YWJpSFNVS1NtYkxSV3BSa1dlQXRzQ2hERUhwWGNKL2JnRE5LWVdvSHFROHhSVWpCNEN5ZXBZZXZjM1lsckc4bzd6SHhwZlZjYW9MNVNldUprekh4S240YlRhU3A5K012d2FtbnA2NGtaTWlOYkZMa25mUDlrWUtvUkhrTVdoZVJKMVVzUDF6NFNjbWtDZUlMZnNNczZ2cW92cWpXQ2xGc0pwQmNzbHVZSFdGN2JCSjFuNFJ3ZytBVEVvcFk0SWdHdjZadndjK0E5citBVDJocXBvU2tZb0FsK0FOWXdnc2xPZjlzSmUwVitUQTlZWS9VbGFCbVBQVGQwLy9yOXd2Y2VQV1prUGpLb0FDL3pVTmhmRGJoNExWOEdIczNseVgyWG9tTC9MTmM4Sll6eUlhREVoR1F2ZW9QaGgvdHIxZz09IiwiTUlJRFNqQ0NBaktnQXdJQkFnSVVUbmJiR0lSMk5IdnpxSUtGQWVRd0cxWEJpczB3RFFZSktvWklodmNOQVFFTEJRQXdMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3SUJjTk1qUXhNakF4TURBd01EQXdXaGdQT1RrNU9URXlNekV5TXpVNU5UbGFNQ1l4SkRBaUJnTlZCQU1NRzFsMVltbGpieUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRUVnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBT3NYajNrMDRCYW40VFlkdFpLcUQvT1BKeHlEeWFQbUNCVUZVaWFaSWdUdGVabmozWDI1RGhncFpaWHNDNEQweWRJY3JsQTZ3TlVJbk9STC9MOXpCYlRFSU1BVk1HbzZnN1VLQW1iMk1GNkFIYm5oWUpkOWVpa3VwVk5XU2hITllOYzRHQmRPMVlONkFmVXF2SmhIYmUzVjRTTk1QbUJSRUtKUFZ6N1Rod2dtZ2dUZThXczJLMC93c3F2MndTRTdwYkNCc1VaaElYNTFiWk0zcHFEd0pQVG1SRkV2dDAvNnRHNWVPOEYzajE0T1hxZkVobWpuMVZ2eEtEWVFPTFpBeEN3d2dDMFA0Q2RmV3YzeThQU1I4STM1NGhPMVkrR3pOanZJcVgzOE5LTHl3dUlZSEZlck94Tmx4RU1CdkZoWUJ1UnVZQWtrZ1VhUHFONlVCaHNJTHJzQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZDQ29SSGhpeU5uYm5YUldJTDZaQlhvQlg5WVRNQjhHQTFVZEl3UVlNQmFBRkNBb1VDRWJwRnBiNkZQTG5aM0Y1UHhzTDNvZk1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQ1FGYWZKSTEvNVdnOUNFRWltRTFSUDU0UmdRd1ROVE9PUXNMQUNUZStySXRsRlF6QzlaRGhyVjgyOHlYN2p6eStBQXNwM2l6SzdUMXRoMmRsN20rdHUwc3cyUGEvb2xjMDJudDZQeUl3MzQ4Z2FIemhJMSswS0U0NXF4dkZEZUwybE14YlBmQ1l2eUVFYVl6amlRRUxVNTk1MXBYR1d5S01hLzRmTHRPK1pLT1hoTXVWZXE0clhEUEk1NFc2SkhPaUFhaUtkaXcrNWUzYzJrdC9qRklRdE02dk1YZzlMTkZ6ZGpFVE50MjBWWDlRZXZScEZaZnVjTUc5d0NhUURvRmxQenBUTUpLaFBldi9pbUptWlloS2ZyMGxMY2VtdHFqSXhMQW9xWmRPWWZIQmc2K3ZBY2RQSS9pYXVHcFVBdjdYK1VLTm1Ed2paMkJhSDRzTHdoQjJtIiwiTUlJRFNqQ0NBaktnQXdJQkFnSVVSMzhtcTI2U2Yyc3pWVjJCZEc2V0VON2t1V1V3RFFZSktvWklodmNOQVFFTEJRQXdMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3SUJjTk1qUXhNakF4TURBd01EQXdXaGdQT1RrNU9URXlNekV5TXpVNU5UbGFNQ1l4SkRBaUJnTlZCQU1NRzFsMVltbGpieUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRUlnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTlkwV2I5b1BvUm9Lb1F5V1BhSnB6MTF2cldUZzZ6VHRtTmoyVm9LUm55dktHUnFwemI4M3c1bDZZQTk2VVlrWUJEUVAwaWxPMkRQZTZ3V3FWUjV6RGZSemRjSDhiaCtMN2RHR3ZhZTZoUlRaaGtGa0NwWERzNEhjY2tuckRmOEZDbEo3SGUzOUpmNDIvRzFRbTJ6ejlXV21yUFh0Z2lLL3gwNUdqc1FmR3VERzF6ZjVRVFVVaWU4bHd5bUszVGZkT3ZOZWVKQUFQZTJwbjdJdGZSYityVnJOV2lEemxSbjJ2Tm5aMndQbzR3SC9XSjZkaFhaRytyTVdUK2E2Qm9jZzFVZkl3NmtkdW5HNGJUcFp6c3ZhY0ZZeVIwbXBmK0RlT25wU1dBbXl3SldIdlRsZjJZWHhGeWVYY1RBQ2RRbGNNTkdKMlZoWlE0OHh0UDUvUkJQLzhrQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZDaHk0Mm9raXFjVFMxaXFhL0hSV2prQm40SC9NQjhHQTFVZEl3UVlNQmFBRk9xM1FwQ2VESHRrZXR0VWZBTzZmRTZmMktGaE1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQW4rUkhJUGJ0TUVETmRUMWc4SC9SaXRBa1VkTGdBdDF0V0dXbmxqOWtuYnY0LzRHbFg3QzlwNDVlZlBPOS9hWkw2T1YxWFJLQmk2S210Qlc1SzdudVlFbk14LzVCcUJTYkxUN3JoZHVDNDlUQmVNYjlQSGRYc1RsU1ZOWWVmcjFkR2lkcjRqMHhWQlFMYjFya25EQWJkV0R6S2Z2bmF5S084RnJ3ZTdIeDg0M01HL3JKK2MwWHJ1VXZiZlZUQ0hMaUlXaE03b05EaEw4eG9iNnhVbzlLTEtjU0wrSXRZc08zLzlXYjhROUdqc3FMNEZYc0RjRzFTYVloN0twZnVNbU9peHF6SlpPMm5JaWNQWVJnMUkyU3VpVWZZTzcwdG1kSGNibCtrU1FtU1l0N3JxNHZpSUxnMkd4M2o5cklUdVdUamJhVWFTU1F4Z09tTVNIdXl6TUFDIl0sImljb24iOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJpY29uRGFyayI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsInByb3ZpZGVyTG9nb0xpZ2h0IjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwicHJvdmlkZXJMb2dvRGFyayI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI2LTA0LTI1IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTcyOCwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZdWJpS2V5IDUgQ0NOIFNlcmllcyB3aXRoIE5GQyAoQ29uc3VtZXIgUHJvZmlsZSkiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlUyRjEwMDAyMDI2MDQyNTAxNSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUHJvZmlsZXMiOlsiY29uc3VtZXIiXSwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNi0wNC0yNSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk3Mjh9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjYtMDUtMDEifSx7ImFhZ3VpZCI6IjdhNTNjNjQzLTlkZWMtNDIxOS1iM2E0LWY5ZDI0YWNhNGUxMiIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiN2E1M2M2NDMtOWRlYy00MjE5LWIzYTQtZjlkMjRhY2E0ZTEyIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkcrRCBTdGFyS2V5IEZJRE8yLU5GQyJ9LCJkZXNjcmlwdGlvbiI6IkcrRCBTdGFyS2V5IEZJRE8yLU5GQyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX0seyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNNRENDQVpPZ0F3SUJBZ0lRY2haQWw5WTFobVdtcDVKMk93cFdzREFLQmdncWhrak9QUVFEQXpBMk1Rc3dDUVlEVlFRR0V3SkVSVEVNTUFvR0ExVUVDZ3dEUnl0RU1Sa3dGd1lEVlFRRERCQkhLMFFnUmtsRVR5QlNiMjkwSUVOQk1DQVhEVEkxTURFd01UQXdNREF3TUZvWUR6SXhNREF4TWpNeE1qTTFPVFU1V2pBME1Rc3dDUVlEVlFRR0V3SkVSVEVNTUFvR0ExVUVDZ3dEUnl0RU1SY3dGUVlEVlFRRERBNUhLMFFnUmtsRVR5QkRRU0F3TWpCMk1CQUdCeXFHU000OUFnRUdCU3VCQkFBaUEySUFCTEVoVk9QM29SZ0NrUGtuTDdad3llQnZZaFR6NDBJc0JMZFAvRUtuZkxPMGFCOEhPS0dVUTI4LzcvVXFaOVV5RGhtZERCTU94RHU5eWNCWVVUc1hZTGN0STFnWGhHZG51cmJNcjBKV0hRQXEvdFRrczJxUGN1aHVaRUJyRStGTVo2Tm1NR1F3SFFZRFZSME9CQllFRkE3UnJWRUV6OGlFY0VvUHUvZ3N0MTFsM2g0dE1COEdBMVVkSXdRWU1CYUFGRk13ZlJIYkFHL2pqNmVqckFYT2pmakUzTnBsTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0VHTUFvR0NDcUdTTTQ5QkFNREE0R0tBRENCaGdKQkxydnpwMzNMRmZQcW1uMDVCMnhRZlNKVmliN21Dc0c5OTFpV0wwZW8walVjaGZPTWdJTStqczJFRHJ2dVVIcFpYelB3VnBJTVY3eUgrYjdPbUxXaFRjY0NRVnJmUmttUDRaVDdaK250RERuempIMVVTN1dHNVdqdVRZSlBDYUcyTjVVYnZVc21KcnRjOXRzUFpNTGdhKzRDVDlGeGs3U01sNHdjNHEyQzNTN2czQ0ZXIiwiTUlJQ05qQ0NBWmVnQXdJQkFnSVFadmEzQnNaMXZvUXhMRjZsQVIxNFJUQUtCZ2dxaGtqT1BRUURCREEyTVFzd0NRWURWUVFHRXdKRVJURU1NQW9HQTFVRUNnd0RSeXRFTVJrd0Z3WURWUVFEREJCSEswUWdSa2xFVHlCU2IyOTBJRU5CTUNBWERUSTFNREV3TVRBd01EQXdNRm9ZRHpJeE1qUXhNak14TWpNMU9UVTVXakEyTVFzd0NRWURWUVFHRXdKRVJURU1NQW9HQTFVRUNnd0RSeXRFTVJrd0Z3WURWUVFEREJCSEswUWdSa2xFVHlCU2IyOTBJRU5CTUlHYk1CQUdCeXFHU000OUFnRUdCU3VCQkFBakE0R0dBQVFBYzlSU2p4bVBFa0pQWDRicUs3UnVmam5NUHk3M0ZvWUdmUWplNzVBOWY1UEorVnMzbjdkdGhPazNTQmo1SEYzcGdWQzcvYlNHbFBNMHc1c2plZUtzL0JRQitPeUI1OC94SFlicEk2ckpVakl0VDFUUFZySWJQUEljb2d4SVZjWUNmMWRNeHQ4M3hDc3RYM1EyeGxXcFo1T1lSb1h0SEJrTTcxUzlpVzdYaFk3a3BLZWpRakJBTUIwR0ExVWREZ1FXQkJSVE1IMFIyd0J2NDQrbm82d0Z6bzM0eE56YVpUQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01BNEdBMVVkRHdFQi93UUVBd0lCQmpBS0JnZ3Foa2pPUFFRREJBT0JqQUF3Z1lnQ1FnR1dEZ2FObHJzRis1MkNKejlYUCt1Qmt0S2JZcE1hL0lXM2wxa1M4NWhOaUp1bTFsL3VQVEhsQlhQYmxmZE54c0xjck1GMzJNdm5zd0FGd29lSTRxQzArQUpDQVNSMUtHUWlIZEYxcGpKMDIyVzM2a0RsL2RTUktlSkNuN2FORkUyWXlGQklvbXdBa1hDS0dVeVAyRGx6RlBFMW9DUFFCcDE4QVZzZWs3MUJlOXlBSjhNYyJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFGQUFBQUJRQ0FJQUFBQUJjMlg2QUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUFCM1JKVFVVSDR3SVVEQzBGb09VSElBQUFDY2RKUkVGVWVOcnRtMnRRVk5jZHdQLy9jKzgrV0phQ1BCWTFDZ3NDb3BETWFENzRBTVVraW1PbldtM3lJWjFwcTlpcG83WlduYVpOTTAxc203YlVxS2hrTE5aSGZNeTBINHF0VnUxVU15TTAwYzRvZHN4TXdWQ05HbE9Gd1FCcldKNTdYK2ZmRCtmdWd3VldOc0dtTlBjTUg5Ykx1V2ZQNy8vK240TklSUEJGR2d5K1lNTUN0b0F0WUF2WUFyYUFMV0FMMkFLMmdDMWdDOWdDdG9BdFlBdVlBTWJxQklpSUh0TnhrbGlXUWg5aWZndkcrTFg0RlNJQ1FDQVE2T3pvYUd0NzBOSGUzdGZmandDQUdDRVdIUHdCRE1QSUw4aWZOV3NXaHFjQkFDaXFldnJVS1lZTUJqOFB2aHRlWWZEbklYTUJpSGpTbDVJbVprN3laSG84SG85c2s4V2VFVEVHc0J4YmVJaDQ2OWF0L1RVMTlSZnFlbnA2WU1RdFJBOVYwMVpYVk15ZVBUdEtncXFpdlBTRGwreXkvTmtWaXdDRUtOU1NscGIybFJYTHY3TnUzYVJKaytJMjZaREczN3QyYmZVM3Z2bmNvbWRPL0tHMnQ2ZEhZb3doQ3ZrUkl1Q0lBMFlRc25qTUlxYUpwekdXR25GOVJBcitreUUrOVBrTzdQOXQ2Yno1Mzl1NDhjUGJkMkJrVDJUUm5rQ0VBSnp6ZmZ2MnJWengxYjlmdXVSME9CeDJPeUthVGtpRWlDeTJxb2xpbUJaaDBGa0F4SFlSQU9KeGJ4UzdGVDlCT2JvU0VvRG83WFBubm4zbTJaTW5UK0lJeml4SGlWK01pdFZyL2xaZjczQTRJbDhiR0JqUU5FMlNaVm1TNEZIQlRGRlZYZGVHOTBJS3kxZFZWZmdVY1pGSUtFRFhkY013bkU2bncrRUFJc1lZQU1nUzI3cDV5OVdHcTl2ZjJQNElIeVlpVlZVcnZyWDYwc1dMVHFlVGlBQlIxYlJFbHl0bjJyU1MrZlBuekoyVGxaT1Q1SGFiSGpTeW1va293WlVRT3pyMEJ3YmV1WGd4S1NrSlJ4c1pRaElqUUFRaXY5OS81OWJ0eTVjdlg3bHk1YU83ZHpWTnMwa1NZOHlPZVB6b1VRU28zUDdyYUVPajRPQ2NFOUcyMTdibFptWG5lWE9tWlh2enZEbFRKazMrN29hTkxTMHR1cTdUV0l6dTd1NnNLVlBGNGhNelBGMWRYV095cktacGQyN2QvdHJLVlZtVG44ano1b2lmbktsWng0OGVJeUllTVJNaVh6dDcrb3duTFYzUVRzdjJ6aWdvUEhQNmRKUkV4aGo0azAvR0JEaTB0ME1IRG1aUG1ScENtRHI1aWV0TjF5Tm5odk53WUdCZ1VkbWloNTJkNG9rc3k2ZlBuaWtvTEJTR2pXTlVKUFQwOUJUUExMSkpFaUwyOXZYZCtPQm1ja3JLWjZ3NnhPNDRrVWdoRjk5OWQrM3FOY0pyaUtpZ3NQRE1YODdLd1VRWWp0Si9xajNSMXRvcWFCVlZQWFRrU0VGaG9YZ054N28yRWt1T3ljS2hSVmp3MDhLeXNwOXMyOVkvTUNCazBkemNmTzNhdFpCMFRHQkZVU29ySzIwMm0zajYvQXN2bEM0b0hiOEZjOFhhaXJuejVqRkVrV1YvOXRxMjZEeGNWMWZYM2ROdDJyYWlmbi96WnM3NU9LVVZMcnAxNjlhZS9uNUVsQ1dwcWFtcHVibDVFUEE3ZGZVT3V3TVFGVTFidm5KRlRtNk95R21QWTRRTStUSDFFbUw1QldVTDgvUHpSREN6eTNMZGhRc0FnSUFtVlVORGczQUJTWkkyck4vdy85RUpidDZ5UmRkMVJKUmt1ZUhLRlNGakJnQStuNitscFVYSUppMHRMUzgvNy9HSi83OWsxVVFBTUcvdVBKZkxKWjc4NjhZTllWMHlBSHh3ODJZZ0VFaElTRUFBVDZiSDRYREVGVUlOYnZpNy9JK2NMOHJNdnI1K0lITW1NdXp5ZC9QUlNKWUFFTnh1dHdpcm93emQ2WjZNbE5RSnZ2WU9BbmpZNld0LzhMRm5ZcVlNQUhjL3ZDdENsS0hydVRtNWtpVEZKYzdXbHRheXNqS253NG5Sam9SbUdSaU1GZ2JuakRHYmJLN3ZjaVlzS3k4bkFtUVllb3NIKzRxUXI0dHFJYUFveDMvL3V3V2xjZVFPU1pMUzB6TTZQKzdneERWTnUzZi92Z2w4Ly81OXhoZ0JxSnJtOVhyanRoL090WUFpSXhNNUlJYWRCZnRCTTVJaW9xYXFvOUV1STFCVmxZejRFZ2RqTEhOaTV2dU5qWklzYzRQN09qdk41cUd2cnk4a1M3dmRIbi9VWmFLL1F5SWVqc0RSTVJrWWlxS05VVWpyd0JIUmxBQU5qcktET2xoQ1FBS01lMlBvY3JrSXdDQUNJSEdBSVllL2hBZ0FqUGpUTCtkYzUxdzNEQllPZFFqQlV3RGlGTGtEemcyVVpRS3plK2VhaG94eHpzMG1GMkJvT2pTSUFFRGpCbysvajFRVXhXeTVFWVZNWlFCd3U5MmlqN2JKTnArdkk5NUZFOTJKNVV1WDJ1MTJJR0lqaHk0Q0lNNkJxTDYrWGxDcG12cmM0aVVNTVhiT0Y4SlFORFV0UFMzZVdOM2IyOGNReFZGa1NuS0tDVHhsNmhUaGZreGlyYTF0anp3SGl4b1pHUm5Iamg4YmJmUFEyL05rVWJFZG1LallkKzJ1U2s1SndWR2JhRnpBaG1HMHQ3Y0RZd2pBR0V0TFR6ZUI4L01MRUJHSm1DVGR2M2ZQTUF4Wmx1UENqbU5tNUdrbEFVTmtZOStibU9vMWROM2YxWVdJUU9Td083dzVYck8wbkRHak1OSGxFaWRhN2UzdHZiMjlZOVhLZkk1VkJ5SzJ0TFkrZlBoUXhDWlBwaWMxTlJVSUdBRzRrNUt5dlY1QjJPWDN2eGRzcHNicENLbnE3ZlBuRlVVUi9FWEZ4ZUdZRHdBbEMwczU1NGdvQSt6WXNYTzhWOUhpMEdkL1RZM0Raa01BVmRQbWxjd1hIc1hFNWNPU0pVdkZBU0tUcFBlYm1pNWR2RFRlbVUrZityUGYzODBZNDBUY01KNWJ2RGhZRFFBZ1lrbkovR3l2MXpBTUFMRGI3YnVycXNhN1ZkZlUxTmhsbVlpNFlaU1hsM3V6czRWdGh4UGdMeXNyRFNJUk5xODJOUHppOWRlandzQjRDVmVjYVAzNjliZHUzbVNNRVpIa2NMenk2cXZoZTQvUTdOSUZwVVZGUlFiblJKVG9jcjExNkszcXZYcy9YUUw4SEdrQjRPZmJmbnIrcitlY1RpZm5YTlAxUldWbHVkTnloN2xxa1dWNVYxV1ZhR2c0NXpaWjJ2NnJ5bGQrK0tPdXJxN3hZc2FkSFIzcjFuNzc4SUVEdG1ERGw1eWNYTFY3ZDJRbE4raHVhV2JSekQxdlZxdWFLcGpkYm5kdGJXM0puTG1IRHg0TUtNcFliVXNjaHB0Zk9rYTI0L2Y3cTNic1hEQy9wSzZ1TGlFeFVmU1ltcTRmUG5va09TVTUwaVhENTlJVXZMRFp0V1BuM2oxN0VsMHVrYWlJS0JBSUpLZE1lT3FwSjR1TGl6TXlNMU1ucE1vMmFkak81aEhkSVpDaUtEOSsrV1dKTVVRTUtNck9YYnNjVG1mOFhrTkVvR3VheitkNzhPQkJZMVBqOWFicmZiMjlyb1FFOHhBUFVWWFZIVHQzdnZqMUZ6bm5rUnFPdmhBWDJEWDdmdlBHOXUxMm15M1k0bkNSc1hSZDU0YkJpWUJ6Q04xM1VxaFNwS0haUDNROXp3Q0ljeVpKZHJ2ZERKaU1CUUlCMFNmekljSUxYVGpSU0UwU29zU1l4RmlJSjZRekRsRDladlh5RlNzaW53OFBIQnIvdUhwMTA2Wk4vNzc3a1RzeFVmUm9adEViWERXc0VoeG1SMGdZRlV0dzBGOE1ERkhaS0JTTUZObDdpVjJZQ0tMWkpNNTcrbnBuUC8zMDN1cnE2ZE9uRDN0M09UeXdXRUxYOWVvOTFYODhVZHZXMW9ZQWtpU1pmNU1RVml3Tjd2RWo4SWJBNGVnT2IyT2t3RUZtVHdBWXZ0TTJkRjJTNWFsWldSVnIxNjZ1V0JOVGFpTURRL0FDdGZHZmpTZHFhK3ZxTHZoOFBsM1Z6TXZ4Q0NNWlp0OXhwaFFjZW13ZG96R0ltR3l6MlNaUG5yeHMyWmRYUGI4cXY2REFack9GZGo1c1hNRFlSVVdVVlhSMmR2cTcvSUZBQUlDRzM5bG9GZnFvaTRNWVIremhuV0dDMDVtYWxwb1N1bzRiVERrc00xci9NODBDdG9BdFlBdllBcmFBTFdBTDJBSzJnQzFnQzlnQ3RvQXRZQXZZQXJhQUxlRC9xZkVmYm1NY1ZDcDhiRzhBQUFBQVNVVk9SSzVDWUlJPSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzEiLCJGSURPXzJfMV9QUkUiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkQmxvYiIsImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJsYXJnZUJsb2JLZXkiLCJtaW5QaW5MZW5ndGgiXSwiYWFndWlkIjoiN2E1M2M2NDM5ZGVjNDIxOWIzYTRmOWQyNGFjYTRlMTIiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjp0cnVlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImxhcmdlQmxvYnMiOnRydWUsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjp0cnVlLCJhbHdheXNVdiI6ZmFsc2V9LCJtYXhNc2dTaXplIjoyMDQ4LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjYsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6OTYsInRyYW5zcG9ydHMiOlsibmZjIiwidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN31dLCJtYXhTZXJpYWxpemVkTGFyZ2VCbG9iQXJyYXkiOjEwMjQsIm1pblBJTkxlbmd0aCI6NCwibWF4Q3JlZEJsb2JMZW5ndGgiOjMyLCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6MywicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjEyOH19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTEyLTA5IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiU3RhcktleSBGSURPIE5GQyIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjUxMjA5MDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25Qcm9maWxlcyI6WyJjb25zdW1lciJdLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTEyLTA5IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjF9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjYtMDMtMjAifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyIyYmQ5MTVlYzQzNmZkYWU0NzZhZmY0MGM1MTI1NmNkNjFlMGYyZTRlIl0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjJiZDkxNWVjNDM2ZmRhZTQ3NmFmZjQwYzUxMjU2Y2Q2MWUwZjJlNGUiXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlNlY3VyaXR5IEtleSBORkMgYnkgWXViaWNvIn0sImRlc2NyaXB0aW9uIjoiU2VjdXJpdHkgS2V5IE5GQyBieSBZdWJpY28iLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDczLCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjJ9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50IiwicmVtb3RlX2hhbmRsZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJREhqQ0NBZ2FnQXdJQkFnSUVHMEJUOXpBTkJna3Foa2lHOXcwQkFRc0ZBREF1TVN3d0tnWURWUVFERXlOWmRXSnBZMjhnVlRKR0lGSnZiM1FnUTBFZ1UyVnlhV0ZzSURRMU56SXdNRFl6TVRBZ0Z3MHhOREE0TURFd01EQXdNREJhR0E4eU1EVXdNRGt3TkRBd01EQXdNRm93TGpFc01Db0dBMVVFQXhNaldYVmlhV052SUZVeVJpQlNiMjkwSUVOQklGTmxjbWxoYkNBME5UY3lNREEyTXpFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUUMvandZdWhCVmxxYWlZV0VNc3JXRmlzZ0orUHRNOTFlU3JwSTRUSzdVNTNtd0NJYXdTREh5OHZVbWs1TjJLQWo5YWJ2VDlOUDVTTVMxaFFpM3VzeG9ZR29uWFFnZk82Wlh5VUE5YStLQWtxZEZuQm5seXVnU2VDT2VwOEVkWkZmc2FSRnRNamt3ejVHY3oyUHk0dklZdkNkTUhQdHdhejBiVnV6bmV1ZUlFejZUblFqRTYzUmR0Mnpid25lYndURzVaeWJlV1N3Ynp5K0JKMzRaSGNVaFBBWTg5eUpRWHVFMEl6TVpGY0VCYlBOUmJXRUNSS2dqcS8vcVQ5bm1ET0ZWbFNSQ3Qyd2lxUFN6bHV3bit2K3N1UUVCc1VqVEdNRWQyNXRLWFhUa05XMjF3SVdieGVTeVVvVFh3THZHUzZ4bHdRU2dOcGsycVhZd2Y4aVhnN1ZXWkFnTUJBQUdqUWpCQU1CMEdBMVVkRGdRV0JCUWdJdnowYk5HSmhqZ3BUb2tzeUtwUDl4djlvREFQQmdOVkhSTUVDREFHQVFIL0FnRUFNQTRHQTFVZER3RUIvd1FFQXdJQkJqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFqdmp1T01EU2ErSlhGQ0x5QktzeWNYdEJWWnNKNFVlM0xiYUVzUFk0TVlOL2hJUTVaTTVwN0VqZmNuTUc0Q3RZa05zZk5IYzBBaEJMZHE0NXJuVDg3cS82TzN2VUV0Tk1hZmJoVTZrdGhYN1krOVhGTjlOcG1ZeHIrZWtWWTV4T3hpOGg5SkRJZ29NUDRWQjF1UzBhdW5MMUlHcXJOb29MOW1tRm5MMmtMVlZlZTYvVlI2QzUrS1NUQ01DV3BwTXVKSVpJSTJ2OW80ZGtvWjhZN1FSalFsTGZZemQzcUd0S2J3N3hhRjFVc0cvNXhVYi9CdHdiMlgyZzRJbnBpQi95dC8zQ3BRWHBpV1gvSzRtQnZVS2lHbjA1WnNxZVkxZ3g0ZzB4TEJxY1U5cHNteVB6SytWc2d3MmplUlE1SmxLRHlxRTBoZWJmQzF0dkZ1MENDckpGY3c9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFmQ0FZQUFBQ0dWcytNQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUhZWUFBQjJHQVYyaUU0RUFBQWJOU1VSQlZGaEhwVmQ3VE5WMUZELzNkNTl3ZVFTSWdTOUFRQVhjRkxBUVppOWZwZVZ6MXRZL1dUWnI1V3hwYzdXNWtuTGE1akkzWjg1c3JTMm5NMnNqdFd3WlM3SVVINEg0eENuRVF4NERBWkY3NFY3dXM4ODV2OS9sSW5CdlZKL0I0UHY5bnUvNW51LzVudk01NTZmekEvUXYwSGIvSXJYM1ZGS1BvNDVjbm00aW5VSVdZd0xGUm1aUVV1d2pGRy9OMWlSSGgxRVowTlJWUnVkcXQxQmQrMm5TS3lTL09oeXMwK2xrM2UvM2tROXF2RDRaVXRhNFZWU1V1WTBlaXB5aVRoQWZvY29PUlZnRHV1dzNxS1JpQWQzcmJjRXRqVGpZSW9mNldhSHNDbXpWUFdDTXgrY2doOHRMcVdNS2FNV3NVakxxbzJSdEpJUTBvT3ptZXJwUXU0ZXNaZ3NPTmtHeEg3ZDBrZHZUVDE3czRPTVU3Vkk4WmhqZ0dhTStBcTlpRU51OFBpZjF1ZHowN013dktXZjhHbFZvQ0VZMDRQQzVXZFRhWFlGYlI4dk52TDUrM0tnZmI1eE5NeWE5UmFtSml5bmFNbEdUVnRGbHI2YmE5dStwcW5FWDR1TXVSUmdqU1lFaHJON3V0RkZlNmxxYWw3TmZrdzVpbUFHSHluUHBiazhWbVkweHN0bnB0bEZDVkNZdHpUdUJOODNRcE1MalR0ZXZkUHpTVW5KN2U4bWtqeFozOWZYYktEZmxkWnFidlUrVFVnR25CVkY2ZlEyaVBIZzRXMTZVV1V3dnpiazE2c01aRStQbjBwdno3SlNldUF5ZXM4bGNwQ21hS3VvL3ArcVdyMlVjd0lBSFdydlAwWUV6aFhBdExBYnNzSGhwN2lHYW12eWlqUDhyeXFyWFVXWDlYb293eHlBdWZOQnJwNDNQT0JGWFpsa2Y4TURSaXFjcHlvd0F3cHV6MngrZld2ei9EdGRlOXNtc3p5Z3RjUjZDMXdiZHpCbDZPbHE1V05ZWTRvR2F0aEpNcmtURXgwakFSU0hBVnMrNXJZa1FOWGIrUWdmUExzUTZnWHlJbnNyZVFmbXBtN1JWRllmTDg2bjFmaVVPa1l2U2hrVVB4dmJ1a3pveTZLMWloTTFobzNYelc2RXZTZlhBK2RwaVdHYVdkK2RvWHpMem1Hd0tZRkxDQXNSQWxQQkFoTWxDRlhVN3RCVVZQcjhIZ1ZjSkhXcStGMDBwbHIrRE1UZHJQNHp2eFkxMWtOTWh4VCtTZVRHZytkNFY1TFFKaXR5VUdKTkI4VkZac2pnWUJaTS9JSS9YQ1RrajBxeURPcEYyQVZRMTdDSWpVcC9EblQxVWtMNUY1Z2RqK3NTMXdnMWdFM2dpZ202MGZDWHpTblBYYnlBUGJJWHYrSURwRTE2VGhhSElTOXNreWhsbU1FNUYzY2ZxQUtocTJDMEU1UEgxZ1lhWGFMUERrWkcwSERKT25LV0hwNTFJMHo1U091eDhlMVdBdVp6ZEhRclRrcDhUbWpYb0krbGEwd0dac3p1YnFiTzNpZlE2QS9XN3ZWU1lzVjNtUjBKS3drS2M0V0hpQmttUjhJM0NDZ0k4N29PTDRxelQ1UCtSVUpCZWpFT2dBUEs4aFlQemF0TStlSVRwMklPOXlUUW1lcm9tUFJ4eDFxeEFjc2lsZS91YlNlRWJjV1FHWUVDZ2hjTFkySHlLam9nakgyNWhNcGpwVXYxT3VnbGk0ZWgyZVJ3ME8zMmJKamt5dUNnTnpnMHZ6bFlNU2lTczB1b280TUc3aE1PakNFYVgxeUZFMG5TdmpCenVUbkVwSzg2WjhJb3FGQUl1Ync4a2c5QXJFYVJFV1NaSStqSDRYYnA2ZzlFOUVuSlQzb2FSekROK01VSkJRREhuNTZhOG9VbUVCdXNPeEJzL041K3RKRWJQa0FGRGo4VUd2T3MvSVd2Y1NnbEdCaHZTNy9GVFlmcFdHWWREWThmUEF4V1NBMzVzVEM0cDQrTG00QWFxSW9QZVF0ZnVmSzZKaDBaaHhsYnNVWE9TbVhOaWZENVpUQWt5RG9mYmJjY2x4bkE4V05BcXhDYlJOeWtoWHhRcGFEdzY3ZlhVWWJzaUcwS2h0djJvZUl2aDhyaFFNWU9jRUFxWEcvZUkrem5nT2M1eXhyOHE4MklBTTFjL0ZMRk9wbHF1NWVGUVhyTVp6R2NWQ2pZYkxXRzVJNEJUMWV1UnJsYnh0Tk90TWl0RERFaExYSUl5bkFBdnVPRVdFM1gzTmRBZnQ5NFZnYUc0MlhJUXQwWlg2UGVDRS9xUUZlOXJLNkh4N1lVNTBLdkg3Zlc0ZlMrcTdLS0JKeHNnZ0JYNXBTQUdoMWpJclZoNXpRNnczUmZhYWhCWG0vYUNiQ1pUakNVRlVUeVdacVc5cDYyTWpKUFhWcU9yUGdNTzROdjc0R2tmK293ZnROVkJEUW5qRkpxSFN3MTdwWHZoV1c1S1pxZS9RNDlOL1VTVENBVldvUVhGSUhCSFhYZTNGUHJVRHN1R0RtdEYvaEhLVEhwZWt4aGlBT1BJK1NKcTZTNkhGNEk5WVd6a0JKVG80NmlVTXpXcDhQaXIvUmlkdUx4S1lzU2tzVjh2TGxPUXZoR1gyWWxSME9CaEJqQyt1L2dFY3ZZMEFwSzdZazQxTnhqUFNRbldGSFRGNjZVcmpnZXZCOEN1NWErbDJ2WVNSUHR1VkRvNzNoaGRNU0huVVg3dFRqc1ZaR3hBbC9XcHRpT0lFUTFnbkwyOW1YNi90UjF0bWxrWWo4VzRYK0NTaldjVURHWTFOcFMvQzdoU0txaU1MTS9sMlFtU1daNzNEZHorZ2lvOEJDRU5ZUFE0NnFua3p3WFVicXZCa3hqVVFzV2ZaRmdidW8zckFmK3dON2pPTzkwK3lueDRQaTNMKzBuWUwxU2NoRFVnQVA0Z1BWLzdJZDFxKzFIU2htdUdrSXFXUlBneXhNRnFQOEhmalRualh3WTViUWZiSmN0Nk9JektnTUhvdEYvSGUxZWdzYXhIU3FHNndmZG1RNXg4TnlURkZxQmNwMmlTb3dIUjN5azUrMzZoRjd2WEFBQUFBRWxGVGtTdVFtQ0MifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMC0xMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzMsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiU2VjdXJpdHkgS2V5IE5GQyBieSBZdWJpY28iLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlUyRjEwMDAyMDI0MTAxMjAwNCIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTA2LTA0IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3MywiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJTZWN1cml0eSBLZXkgTkZDIGJ5IFl1YmljbyIsImNlcnRpZmljYXRlTnVtYmVyIjoiVTJGMTAwMDIwMjQwNjA0MDAyIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMDYtMDQiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDczfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI0LTExLTEyIn0seyJhYWd1aWQiOiJkZWY4YWIxYS05ZjkxLTQ0ZjEtYTEwMy0wODhkOGRjN2Q2ODEiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6ImRlZjhhYjFhLTlmOTEtNDRmMS1hMTAzLTA4OGQ4ZGM3ZDY4MSIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJJREVNSUEgU09MVk8gRmx5IDgwIFIzIEZJRE8gQ2FyZCBlIn0sImRlc2NyaXB0aW9uIjoiSURFTUlBIFNPTFZPIEZseSA4MCBSMyBGSURPIENhcmQgZSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxMTA3NDQ4ODMxLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX0seyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDeERDQ0FpV2dBd0lCQWdJR0FPckFBQUFCTUFvR0NDcUdTTTQ5QkFNRU1JR0VNUXN3Q1FZRFZRUUdFd0pHVWpFTU1Bb0dBMVVFQ0F3RFNVUkdNUk13RVFZRFZRUUhEQXBEYjNWeVltVjJiMmxsTVNNd0lRWURWUVFLREJwSlJFVk5TVUVnVTJWamRYSmxJRlJ5WVc1ellXTjBhVzl1Y3pFdE1Dc0dBMVVFQXd3a1NVUkZUVWxCSUZObFkzVnlaU0JVY21GdWMyRmpkR2x2Ym5NZ0xTQlNiMjkwSUVOQk1DQVhEVEkxTURneU9ESXlNREF3TUZvWUR6SXdOalV3T0RJNU1qRTFPVFU1V2pDQmhERUxNQWtHQTFVRUJoTUNSbEl4RERBS0JnTlZCQWdNQTBsRVJqRVRNQkVHQTFVRUJ3d0tRMjkxY21KbGRtOXBaVEVqTUNFR0ExVUVDZ3dhU1VSRlRVbEJJRk5sWTNWeVpTQlVjbUZ1YzJGamRHbHZibk14TFRBckJnTlZCQU1NSkVsRVJVMUpRU0JUWldOMWNtVWdWSEpoYm5OaFkzUnBiMjV6SUMwZ1VtOXZkQ0JEUVRDQm16QVFCZ2NxaGtqT1BRSUJCZ1VyZ1FRQUl3T0JoZ0FFQUNlOGpkU25WVEt0emtnc0NLSkZ1aXBXTDl1VWl6c1JyNi9pVENlK0RLcm4wMlNucHNQSFp5bzRXWjU4cFV1NjZUNmt2ZkI4YUdBNWk3ZXFVSlNnaFF0R0FFYmZsZFN6R0lidFd2WFBoQWpFUmV5ZlNuM2J4b0VCUmZwdDF4aDJsMUdKV3RnRXE2WUk5U3FrQ0lYV0JwMVIzeDZpYWJFOUhXM09ZRlFJRHJtSlV1RTBvend3T2pBZEJnTlZIUTRFRmdRVXorb2RFUndWRUtNNFZmK3NQVVBDcHpWZXlTNHdDd1lEVlIwUEJBUURBZ0QvTUF3R0ExVWRFd1FGTUFNQkFmOHdDZ1lJS29aSXpqMEVBd1FEZ1l3QU1JR0lBa0lCTy9sZWpqdHBmYXIwcWwwM1NoR2ZNUE9QRFR4SEVaZFVyUFNpd2RJOGtvSWtxdFhnQi9xYm84UnYrT0NCKzB2ZUJzc2k2SlA5ckhJaGVzZlhlUkM1RGNJQ1FnR3ljam9ydUt3MUM4czRYM2psZFdLQlIrRFVjOFRXMGl4RWdKMVdTcm02SjN1bFN3dzZjRjUxemVmQjBPQWh2Ri9oQTRKODduejN4dWNGTDFLYnFqSWNuUT09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQURJQUFBQXlDQUlBQUFDUlhSL21BQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRmlVQUFCWWxBVWxTSlBBQUFBb3JTVVJCVkZoSHpWaHBjRlBYR2RYeW5tUXRYaVhMKzBJYXNNSEdPd1liRWxKS2dFa0NBYVlNMDB5Yk1tbExLQU5objhuQ1pnZ3A1QS9VaEk0emhORFNhV2NLSkd5Rk1LR0JOSEh4Z28xdEdiTWJiL0sreUpZbFdjdVQxSE4xaFZCa1c5SVBZbkxHNHpudjNpdmQ4Nzd0ZmxkOGg4UEJHNFhHZTExMWxacmV6bUhPWnVmelhZTlBFdzRld3dwakVrS3laeVhGSnlsY2d4N3dsblg4OEhmSEQxMDM2aTBTS1NzUUNuNFVUVTVnV3h0bkh6RmFJMVRTOVR0K3ZtUmxybXZDaVNleUJyWERLK2FVR0hUVzRGQXhCTkhCQ1lETlpoL3NOeVpQaVRqNTN6VThucEFPdW1SMXR2Y3ZTaTlXeFFURHRuUmlnbUUyY1VhanViUjVHeU1VNDVIS3NzOU8zaStUaVlYTXhCbHBOQ3htVGhiTW5yK3hFWnpvK0dEdGFTSHdURFVCSWpIVDIyVTRmdmdhT045Z01NeE8vRGdxTm9ULzQ0VjN3TERiSGJyQmtiSzJEd1FYVDZsbDhxQ2ZnaVpBSU9EYjdieks3KzhMcDhRczdHelRQWE1QUG9IREVhNlNDam8xdXNETEFZeU1mTVlmelYvODkzeDBMd0RvbytPSDZ3TUJ4SFJwaGdSV0N4ZWdBN0Vsa2dVVlZpeG1lSHlTd3B6VkxnQVFBYzVITEJBS3lhUER3U2RTN0E1RU1aNnh4RFRDQmFnTVgyV3hZQmRlUUtMd3BUMmR1clBsNnkvWGI3NVF2V0Y0Y01ScXNUMlhvcnlzM29RUmhVcUdrbTBZTm0vWnN4Q1BYOS9hck8wemNKdzlQam44c25vejFpeDlJOGVnTjd1K3l4LzRlQkVYOVFmVGlQVzFsUm1oRVJMd05VdFBpSU1ZbUdwNlhqeWRmWFN2RjNaaVJjSnZ2N3BEUjhJVVVxR1FYMW5hVlBiTlF6eHVMSnB2NDRnNTZheGZDQUpaQ0ZQMTl4aUxpcGVCTnovc3F5aDlKQTVpclZZdUxUTU9JMjJQK3ExV0cxL0FaMWhCUTEySDh4Tzh5ZE9pWUswSWhheG80M2s2OHNkM1g5THJUSlQ3Z3owZ2ErSGsvdTI2QW9HUXVIdjcyMmNVa1RLUUVZTTF0ekFaUkYybEVZa1lFQmlzbzJVSUJFalBqb05XSlBqZ2dQR3JMK294OHB1MWhmaThPeHQ4d2NGRGJQa0JpWFFMdDNYZkl2RHEwcFk3OVIyc2lNR2dQRGdvVkVGOFduMjlGZTREUWJRaXpoL2U3Z2JQbVpXTTRBTUpDWmZzMzNZSkJOaDVhTW5nd0FqbHZ1SGZpYkQ4NnMwdlViNW55N2tJSlRFVng5bFNNNkxwNE8yYjdlempBeDVtVTkvUWdHVE9USUE1UVdCQ0syZjdSMGtaK0lKbDZRcWxITTRsUzMzQ2p4UHROanUrOTYzTmM4Q3ZuR3ZvYXRQUkZvT3oyTE5tSmppWDhPN1dkd2xaMS9mQWJEVVZyU0FTR2F0VXlmQng4T0RRb0UvMlhYWE84M1lYdjQ0a3Bkd0gvTWdhR2pSdCt4TnhIN0JudzRVd1p5WUNjQ3ROdzVZSEE0em9TWldCMldyTGlTeGdhbVlzTlF4S0Y3TGg0STRyNFBsekowMUppNkwrOVFGZnNsQVNaVExSNHBWWjRDYy9yMFQxcHVjQi9NNVpiSEFUZUUxRlU1Q0VKYXVkUUl5M05nMVFucG1mNE41ZUpoZWZPRkpLZWRIaHBmMDl3NVNQQjEreXRIM0dQVWRJVVFBTzdiNENYMUJPeW5jUUV4b21CYitqN29JbDZEZ0ZwdTQzZElGTXo0dURVZWtnc2lGVUlkMjEvaXo0NUxTbzNNSkpPRERvMUpnWVZ4YlNPM215WXZiODU4RS8rZkFiMkFtK29GTTJ6cGFTRmtONVRYbUxPOTRwVUducmJyU0JaT1Fub09TNnp4d1k5Y0kvYXdlNlNXRHRQN29jaGNQSGNUU3VySUZlZmRHZmwxSis0c2gxZVREcFpTbXMxaWZ4amtLRm5LQ2NBaXJWbFVTV1JDTENuM3RyR0N4TUtkMjFnUmhNR1IweTc3VnBhSlRwMUdpTUxRc1d4bFZwV2s0cytKNTN6aU90OEtWMENzQnNWbjRpU1BPRFBwUEppdnBPeHluZzA5czFuWlJuNXNGZ1Q2SWJKL2YxcXc5Ykd2dkI5LzFsR1c0VzR4bHNERmxZaVZwMTRMTmZndmYxNkUrZnFKSklSWFFLY1BBY05xczk3NFVrOE9yU1pzOTRwNER4TkMxYVdocXlDeElSREhRY3dMdUZLMlRiVnAwRVJ3aitZZXNMdUpEUktTK01hUzBIUHErTUNnYnJhTkhTem9WT0VEaDRmQUY1YjFDRDNnSStHdWdtME1tQXlFUEZYdmJBQ1laMml2TDQ1QWdrTytWZUdPTmJJU0pJeXU1WWV3WThZMFpDL3B4SlpvK3NvUkxWbGFTVTV4WW1tWXplOFlGektUbytSQ29uQnE0cWJmWktDR1QzL3FQRUQ4QkhXeStpY0ZEdWhiRmpDNjc1OTc5cUIzcEoxbncwS212RUVyYnFmODBnYWJseDZGNjg3SUhzUXdtZ3ZMYWl6ZlBpQ1lkT1NsRVdPck83dU9nL3JKZzBqWFRLQzJQTElrR2dsTzFjUnd3R2J5NVlra2FkUW9HZGJsVzNVNjZLQ2JIWmZpQUxlK2NVa01pRFhPMkEzbk5qdk9mdWc2K0RvSlA5ZTBrWmJxWjBmRFRHbGdVZ2VzcXVOaUxYd0ZHWDBZNjZyY0t5QXZWTjRrUWdNei9PTTljQXE1bEx6eVhuVWtOTnU1QVJ1dU1TK1p0YjRNcnV2WnN1U21VaXJ4VDJ4TGl5cU1IZSsvMXBjTEdFZVdQTlRLUEI0cDVDcXFJTkJFL044SmFGNU1xZVNjcEhYVVdieU5ud0FIaWwvaDQ5NGdIY29ET2YvdXNORkIwNk5TYkdsUVdnSGJoL3A3dW1vZ1Y4eTk1Rncxb1ROUmhrTVl3QWNRT09xUGVzaXFnTFNoVkpZUUFkRHUzREFLeVo5OHJVeUtnUThCM3J6aWlqNUw3dkVMNWtBUkdSc3FMMTV5amZzSE8rYnNqVjljTEZOTHhTTTJJOGt4R0JsVDNMZFFEY3FtbW44WTZYd1YzNXd4Snl2R3FhdE5jdTNxWDF4UWY4eUdJWVlVZmIwTmRmTm9DdjJqaEh4QXBwcFdIUVZ6MXVZSEIwb2xCUmpuTUpOWVh5anRaQmVpNk5HQ3dyM3BvaGRkYUM5OS8rSWtJbGN3ZmNlUEFqQzhBZDVzQjJWOWY3enM2WGRZUEVZSERpM1ZyWGJTSTlLdzc5SitVV0U1ZnRQQzVyeXpXaUlKZXBVSFhmM2Y4S09KS2dvYTVkeFBveEZlQmZGdDdZT0d3NWRhd0tmUG1iT2FHaEV0Z0dnejNkdzFZelVaTXpPNUVTS0FCU3MwaXUxZDFvRllsSlVPdDE1dFZiNTRJQVNDRGNoUUs1bVBxWEJZU0VTVDUrMzJXd1hZY1hhd2RJbWNWSmNMT00rSEY2WGdMdHErdzJoekphVHN1NnVxb1ZkUVFWSDBtd2VodVI5ZTJsdTEwZHJwN2JMd0tTaFpJSUVTVUh5QzlQaGZNbXg4YUZveWdnYk5YVkpCbFRwa2RqQWV6a3ZIZTQrckI3dDdvUmwwUGFrVTI3RjlLUkErOWRDb3NnbldNZ0NFZ1dnTVByMk1IdktmLzA3SnR3RFhadHFIRVYxZGpFTUpnS2FmamlMMUxvU0UrSERyVWtMakZzeGUveThQamwzNnExL2NiQWZ4ZmkvM3BoU2JkRzc5WEtqUWswNWdxVlBEbzJCTlcxdnJvZERnTFNTQ1R4bXgvMkdnMVdKR25TenhSb0dGRlJHKy8yUUlRcUpoaG5GL0t1dmtxRHgvRk9RRTlZekxZWkw4YnpWNzE2dEwxcEtNRDNnSnRnRlJEVVNXd0dXZlFTZ1lpaFc4SzVrSXNwV2tnaGxOWU85d0svd0JsVk1DOUpvSXlTZVoyMVBnREhJYVR3UndzUC90Tkg5NWJZSG8vdTRnNG5lQzN3Qzd5Mklrb21tSm9WNWRsQVBuUGdtRXJMalJYTVg1eHFHRGJESGE3aFp3cWF6bk1YVGhFa0pzZG16WXBHb0xsbW5pbU1ldXVydjBvVnN6SVN0aHBOeDlLOHo1U1JjaDhOMEFTQTNBQk1sc3NONjZSQndTakU5dmo0MkwyZkx1aHFIMFlTdVpaTU9KQ3pmVDJHNGxQTG9Ba3lVQmY0eU9wRlMvTDNIVnVnMHhvUmNSTWNaOWh1eEdBMW15d2xGNVpuWktWQURCOVhMNXhaS0RXNEYyQytzYkdsdU9pYXVyd1BGM2JjUXVIVHgwNTl1czRscjQxM2gxVlE5bXljcldCQjNQcnQ4MVdSa1FLR3p3akpUOVBPWDZwNURqdG5SOVJqa2RsaWJueWdxZnl1cWZtQlZqOWtocitkcG51cTluTVdQWlRBa0hEeDgxT1ZNK2MrbDVBWXc0cFlkTmlzbU1GVmlzZmoveC94cU9jUFJkU3Zhd0FBQUFCSlJVNUVya0pnZ2c9PSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzEiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6ImRlZjhhYjFhOWY5MTQ0ZjFhMTAzMDg4ZDhkYzdkNjgxIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6dHJ1ZSwidXAiOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJlcCI6dHJ1ZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwiYWx3YXlzVXYiOnRydWV9LCJtYXhNc2dTaXplIjoxNTUwLCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjE2LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjIwOCwidHJhbnNwb3J0cyI6WyJuZmMiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fV0sIm1pblBJTkxlbmd0aCI6NCwiZmlybXdhcmVWZXJzaW9uIjoxMTA3NDQ4ODMxLCJjZXJ0aWZpY2F0aW9ucyI6eyJGSURPIjoxfSwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjU5fX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDgtMjciLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MTEwNzQ0ODgzMSwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJJREVNSUEgU09MVk8gRmx5IDgwIFIzIEZJRE8gQ2FyZCBlIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNTA4MjcwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wOC0yNyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxMTA3NDQ4ODMxfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTA5LTExIn0seyJhYWd1aWQiOiI5OTU1YTFjZC01NjRjLWQzODgtYWQ2OC05ODc4YTI3YmU5ZjEiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6Ijk5NTVhMWNkLTU2NGMtZDM4OC1hZDY4LTk4NzhhMjdiZTlmMSIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJTdGFyU2lnbiBDaGFzZSBGSURPIENhcmQifSwiZGVzY3JpcHRpb24iOiJTdGFyU2lnbiBDaGFzZSBGSURPIENhcmQiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsic29mdHdhcmUiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQnFUQ0NBVStnQXdJQkFnSUJBakFLQmdncWhrak9QUVFEQWpCRU1Rc3dDUVlEVlFRR0V3SkVSVEViTUJrR0ExVUVDZ3dTUnl0RUlHVlFZWGx0Wlc1MGN5QkhiV0pJTVJnd0ZnWURWUVFEREE5R1NVUlBJRkp2YjNRZ1EwRWdNREl3SGhjTk1qVXdNVEF4TURBd01EQXdXaGNOTkRBeE1qTXhNREF3TURBd1dqQkVNUXN3Q1FZRFZRUUdFd0pFUlRFYk1Ca0dBMVVFQ2d3U1J5dEVJR1ZRWVhsdFpXNTBjeUJIYldKSU1SZ3dGZ1lEVlFRRERBOUdTVVJQSUZKdmIzUWdRMEVnTURJd1dUQVRCZ2NxaGtqT1BRSUJCZ2dxaGtqT1BRTUJCd05DQUFUOEt3Y1FMOEFrNXhmL1ZTSHY5RERQSHVLODlmVE9XenhScFdYQ0FqLzVkYmQzRVhVSEc0S2tGYk52cHVzZUk0cVNNSEVuRXlqR1Rpc2YrMDZ4Q3RoY296SXdNREFQQmdOVkhSTUJBZjhFQlRBREFRSC9NQjBHQTFVZERnUVdCQlNyQ1FSbEN2MkUvUzV0QTFaeDRjUndYa0hxNkRBS0JnZ3Foa2pPUFFRREFnTklBREJGQWlCZ1RXVzZBS2dLN2tZcU1yaS9Jendmdk41YUs3aEVURkE5VEx6SHV0c2xIQUloQU1QTEE2WFBaZ1NuTlo0ZWtLbUdKb05qZUtZWG9EZjk2YjRtend6VS94WjkiXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBRkFBQUFCUUNBSUFBQUFCYzJYNkFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFBQjNSSlRVVUg0d0lVREMwRm9PVUhJQUFBQ2NkSlJFRlVlTnJ0bTJ0UVZOY2R3UC8vYys4K1dKYUNQQlkxQ2dzQ29wRE1hRDc0QU1Va2ltT25XbTN5SVoxcHE5aXBvN1pXbmFaTk0wMXNtN2JVcUtoa0xOWkhmTXkwSDRxdFZ1MVVNeU0wMGM0b2RzeE13VkNOR2xPRndRQnJXSjU3WCtmZkQrZnVnd1ZXTnNHbU5QY01IOWJMdVdmUDcvLytuNE5JUlBCRkdneStZTU1DdG9BdFlBdllBcmFBTFdBTDJBSzJnQzFnQzlnQ3RvQXRZQXVZQU1icUJJaUlIdE54a2xpV1FoOWlmZ3ZHK0xYNEZTSUNRQ0FRNk96b2FHdDcwTkhlM3RmZmp3Q0FHQ0VXSFB3QkRNUElMOGlmTldzV2hxY0JBQ2lxZXZyVUtZWU1CajhQdmh0ZVlmRG5JWE1CaUhqU2w1SW1aazd5WkhvOEhvOXNrOFdlRVRFR3NCeGJlSWg0NjlhdC9UVTE5UmZxZW5wNllNUXRSQTlWMDFaWFZNeWVQVHRLZ3FxaXZQU0RsK3l5L05rVml3Q0VLTlNTbHBiMmxSWEx2N051M2FSSmsrSTI2WkRHMzd0MmJmVTN2dm5jb21kTy9LRzJ0NmRIWW93aEN2a1JJdUNJQTBZUXNuak1JcWFKcHpHV0duRjlSQXIra3lFKzlQa083UDl0NmJ6NTM5dTQ4Y1BiZDJCa1QyVFJua0NFQUp6emZmdjJyVnp4MWI5ZnV1UjBPQngyT3lLYVRraUVpQ3kycW9saW1CWmgwRmtBeEhZUkFPSnhieFM3RlQ5Qk9ib1NFb0RvN1hQbm5uM20yWk1uVCtJSXppeEhpVitNaXRWci9sWmY3M0E0SWw4YkdCalFORTJTWlZtUzRGSEJURkZWWGRlRzkwSUt5MWRWVmZnVWNaRklLRURYZGNNd25FNm53K0VBSXNZWUFNZ1MyN3A1eTlXR3E5dmYyUDRJSHlZaVZWVXJ2clg2MHNXTFRxZVRpQUJSMWJSRWx5dG4yclNTK2ZQbnpKMlRsWk9UNUhhYkhqU3ltb2tvd1pVUU96cjBCd2JldVhneEtTa0pSeHNaUWhJalFBUWl2OTkvNTlidHk1Y3ZYN2x5NWFPN2R6Vk5zMGtTWTh5T2VQem9VUVNvM1A3cmFFT2o0T0NjRTlHMjE3YmxabVhuZVhPbVpYdnp2RGxUSmszKzdvYU5MUzB0dXE3VFdJenU3dTZzS1ZQRjRoTXpQRjFkWFdPeXJLWnBkMjdkL3RyS1ZWbVRuOGp6NW9pZm5LbFp4NDhlSXlJZU1STWlYenQ3K293bkxWM1FUc3Yyemlnb1BIUDZkSlJFeGhqNGswL0dCRGkwdDBNSERtWlBtUnBDbURyNWlldE4xeU5uaHZOd1lHQmdVZG1paDUyZDRva3N5NmZQbmlrb0xCU0dqV05VSlBUMDlCVFBMTEpKRWlMMjl2WGQrT0JtY2tyS1o2dzZ4TzQ0a1VnaEY5OTlkKzNxTmNKcmlLaWdzUERNWDg3S3dVUVlqdEovcWozUjF0b3FhQlZWUFhUa1NFRmhvWGdOeDdvMkVrdU95Y0toUlZqdzA4S3lzcDlzMjlZL01DQmswZHpjZk8zYXRaQjBUR0JGVVNvcksyMDJtM2o2L0FzdmxDNG9IYjhGYzhYYWlybno1akZFa1dWLzl0cTI2RHhjVjFmWDNkTnQycmFpZm4velpzNzVPS1VWTHJwMTY5YWUvbjVFbENXcHFhbXB1Ymw1RVBBN2RmVU91d01RRlUxYnZuSkZUbTZPeUdtUFk0UU0rVEgxRW1MNUJXVUw4L1B6UkRDenkzTGRoUXNBZ0lBbVZVTkRnM0FCU1pJMnJOL3cvOUVKYnQ2eVJkZDFSSlJrdWVIS0ZTRmpCZ0ErbjYrbHBVWElKaTB0TFM4LzcvR0ovNzlrMVVRQU1HL3VQSmZMSlo3ODY4WU5ZVjB5QUh4dzgyWWdFRWhJU0VBQVQ2Ykg0WERFRlVJTmJ2aTcvSStjTDhyTXZyNStJSE1tTXV6eWQvUFJTSllBRU54dXR3aXJvd3pkNlo2TWxOUUp2dllPQW5qWTZXdC84TEZuWXFZTUFIYy92Q3RDbEtIcnVUbTVraVRGSmM3V2x0YXlzaktudzRuUmpvUm1HUmlNRmdibmpER2JiSzd2Y2lZc0t5OG5BbVFZZW9zSCs0cVFyNHRxSWFBb3gzLy91d1dsY2VRT1NaTFMwek02UCs3Z3hEVk51M2YvdmdsOC8vNTl4aGdCcUpybTlYcmp0aC9PdFlBaUl4TTVJSWFkQmZ0Qk01SWlvcWFxbzlFdUkxQlZsWXo0RWdkakxITmk1dnVOalpJc2M0UDdPanZONXFHdnJ5OGtTN3ZkSG4vVVphSy9ReUllanNEUk1Sa1lpcUtOVVVqcndCSFJsQUFOanJLRE9saENRQUtNZTJQb2Nya0l3Q0FDSUhHQUlZZS9oQWdBalBqVEwrZGM1MXczREJZT2RRakJVd0RpRkxrRHpnMlVaUUt6ZStlYWhveHh6czBtRjJCb09qU0lBRURqQm8rL2oxUVV4V3k1RVlWTVpRQnd1OTJpajdiSk5wK3ZJOTVGRTkySjVVdVgydTEySUdJamh5NENJTTZCcUw2K1hsQ3BtdnJjNGlVTU1YYk9GOEpRTkRVdFBTM2VXTjNiMjhjUXhWRmtTbktLQ1R4bDZoVGhma3hpcmExdGp6d0hpeG9aR1JuSGpoOGJiZlBRMi9Oa1ViRWRtS2pZZCsydVNrNUp3VkdiYUZ6QWhtRzB0N2NEWXdqQUdFdExUemVCOC9NTEVCR0ptQ1RkdjNmUE1BeFpsdVBDam1ObTVHa2xBVU5rWTkrYm1PbzFkTjNmMVlXSVFPU3dPN3c1WHJPMG5ER2pNTkhsRWlkYTdlM3R2YjI5WTlYS2ZJNVZCeUsydExZK2ZQaFF4Q1pQcGljMU5SVUlHQUc0azVLeXZWNUIyT1gzdnhkc3BzYnBDS25xN2ZQbkZVVVIvRVhGeGVHWUR3QWxDMHM1NTRnb0ErellzWE84VjlIaTBHZC9UWTNEWmtNQVZkUG1sY3dYSHNYRTVjT1NKVXZGQVNLVHBQZWJtaTVkdkRUZW1VK2YrclBmMzgwWTQwVGNNSjVidkRoWURRQWdZa25KL0d5djF6QU1BTERiN2J1cnFzYTdWZGZVMU5obG1ZaTRZWlNYbDN1enM0VnRoeFBnTHlzckRTSVJOcTgyTlB6aTlkZWp3c0I0Q1ZlY2FQMzY5YmR1M21TTUVaSGtjTHp5NnF2aGU0L1E3TklGcFVWRlJRYm5SSlRvY3IxMTZLM3F2WHMvWFFMOEhHa0I0T2ZiZm5yK3IrZWNUaWZuWE5QMVJXVmx1ZE55aDdscWtXVjVWMVdWYUdnNDV6WloydjZyeWxkKytLT3VycTd4WXNhZEhSM3Ixbjc3OElFRHRtRERsNXljWExWN2QyUWxOK2h1YVdiUnpEMXZWcXVhS3BqZGJuZHRiVzNKbkxtSER4NE1LTXBZYlVzY2hwdGZPa2EyNC9mN3EzYnNYREMvcEs2dUxpRXhVZlNZbXE0ZlBub2tPU1U1MGlYRDU5SVV2TERadFdQbjNqMTdFbDB1a2FpSUtCQUlKS2RNZU9xcEo0dUxpek15TTFNbnBNbzJhZGpPNWhIZElaQ2lLRDkrK1dXSk1VUU1LTXJPWGJzY1RtZjhYa05Fb0d1YXorZDc4T0JCWTFQajlhYnJmYjI5cm9RRTh4QVBVVlhWSFR0M3Z2ajFGem5ua1JxT3ZoQVgyRFg3ZnZQRzl1MTJteTNZNG5DUnNYUmQ1NGJCaVlCekNOMTNVcWhTcEtIWlAzUTl6d0NJY3laSmRydmRESmlNQlFJQjBTZnpJY0lMWFRqUlNFMFNvc1NZeEZpSUo2UXpEbEQ5WnZYeUZTc2ludzhQSEJyL3VIcDEwNlpOLzc3N2tUc3hVZlJvWnRFYlhEV3NFaHhtUjBnWUZVdHcwRjhNREZIWktCU01GTmw3aVYyWUNLTFpKTTU3K25wblAvMzAzdXJxNmRPbkQzdDNPVHl3V0VMWDllbzkxWDg4VWR2VzFvWUFraVNaZjVNUVZpd043dkVqOEliQTRlZ09iMk9rd0VGbVR3QVl2dE0yZEYyUzVhbFpXUlZyMTY2dVdCTlRhaU1EUS9BQ3RmR2ZqU2RxYSt2cUx2aDhQbDNWek12eENDTVpadDl4cGhRY2Vtd2RvekdJbUd5ejJTWlBucnhzMlpkWFBiOHF2NkRBWnJPRmRqNXNYTURZUlVXVVZYUjJkdnE3L0lGQUFJQ0czOWxvRmZxb2k0TVlSK3pobldHQzA1bWFscG9TdW80YlREa3NNMXIvTTgwQ3RvQXRZQXZZQXJhQUxXQUwyQUsyZ0MxZ0M5Z0N0b0F0WUF2WUFyYUFMZUQvcWZFZmJtTWNWQ3A4Ykc4QUFBQUFTVVZPUks1Q1lJST0iLCJzdXBwb3J0ZWRFeHRlbnNpb25zIjpbeyJpZCI6ImhtYWMtc2VjcmV0IiwiZmFpbF9pZl91bmtub3duIjpmYWxzZX1dLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCJdLCJleHRlbnNpb25zIjpbImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6Ijk5NTVhMWNkNTY0Y2QzODhhZDY4OTg3OGEyN2JlOWYxIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6dHJ1ZSwidXAiOnRydWV9LCJmaXJtd2FyZVZlcnNpb24iOjF9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiTk9UX0ZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjYtMDQtMTQifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI2LTA0LTE0In0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiZjUyNGNjYTM1ZTVlZWI0M2Y1Y2JlZDRhMDcxODI0MTllNWRmYTM0MCJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyJmNTI0Y2NhMzVlNWVlYjQzZjVjYmVkNGEwNzE4MjQxOWU1ZGZhMzQwIl0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJTSTBYIEZJRE8gQ0wgV1JJU1QgdjEuMCJ9LCJkZXNjcmlwdGlvbiI6IlNJMFggRklETyBDTCBXUklTVCB2MS4wIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsic29mdHdhcmUiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQnRqQ0NBVnVnQXdJQkFnSUJBVEFLQmdncWhrak9QUVFEQWpCS01Rc3dDUVlEVlFRR0V3SkVSVEVoTUI4R0ExVUVDZ3dZUnl0RUlFMXZZbWxzWlNCVFpXTjFjbWwwZVNCSGJXSklNUmd3RmdZRFZRUUREQTlHU1VSUElGSnZiM1FnUTBFZ01ERXdIaGNOTWpBeE1URXlNREF3TURBd1doY05OREF4TVRFeU1EQXdNREF3V2pCS01Rc3dDUVlEVlFRR0V3SkVSVEVoTUI4R0ExVUVDZ3dZUnl0RUlFMXZZbWxzWlNCVFpXTjFjbWwwZVNCSGJXSklNUmd3RmdZRFZRUUREQTlHU1VSUElGSnZiM1FnUTBFZ01ERXdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUXc2Y3krem5NeVE2cHRkNEpqcXZtYTRlOFJlK1pwcGI5MEdxS3ZzUkJuRjhXbU01eVpXSU9LalFnai84KzNqOWF2VytTeUFhLzFNYXl3UUQ2QjBnOWFvekl3TURBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUIwR0ExVWREZ1FXQkJTc2VwV3V1eG1EMG84ajFZMjc4YkxUR0NaTnZqQUtCZ2dxaGtqT1BRUURBZ05KQURCR0FpRUF1MzNTcDBFN0JFZEhvekVHQUNsTnNhMHlQQjZzRURvUTdXNGtpeTBEWjE0Q0lRQ0pMRFRKREFuV3hvMzF6enZyV3VJTnRCcXkwNDQrR2dGUDYrd2xxRzY2Tnc9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFGQUFBQUJRQ0FJQUFBQUJjMlg2QUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUFCM1JKVFVVSDR3SVVEQzBGb09VSElBQUFDY2RKUkVGVWVOcnRtMnRRVk5jZHdQLy9jKzgrV0phQ1BCWTFDZ3NDb3BETWFENzRBTVVraW1PbldtM3lJWjFwcTlpcG83WlduYVpOTTAxc203YlVxS2hrTE5aSGZNeTBINHF0VnUxVU15TTAwYzRvZHN4TXdWQ05HbE9Gd1FCcldKNTdYK2ZmRCtmdWd3VldOc0dtTlBjTUg5Ykx1V2ZQNy8vK240TklSUEJGR2d5K1lNTUN0b0F0WUF2WUFyYUFMV0FMMkFLMmdDMWdDOWdDdG9BdFlBdVlBTWJxQklpSUh0TnhrbGlXUWg5aWZndkcrTFg0RlNJQ1FDQVE2T3pvYUd0NzBOSGUzdGZmandDQUdDRVdIUHdCRE1QSUw4aWZOV3NXaHFjQkFDaXFldnJVS1lZTUJqOFB2aHRlWWZEbklYTUJpSGpTbDVJbVprN3laSG84SG85c2s4V2VFVEVHc0J4YmVJaDQ2OWF0L1RVMTlSZnFlbnA2WU1RdFJBOVYwMVpYVk15ZVBUdEtncXFpdlBTRGwreXkvTmtWaXdDRUtOU1NscGIybFJYTHY3TnUzYVJKaytJMjZaREczN3QyYmZVM3Z2bmNvbWRPL0tHMnQ2ZEhZb3doQ3ZrUkl1Q0lBMFlRc25qTUlxYUpwekdXR25GOVJBcitreUUrOVBrTzdQOXQ2Yno1Mzl1NDhjUGJkMkJrVDJUUm5rQ0VBSnp6ZmZ2MnJWengxYjlmdXVSME9CeDJPeUthVGtpRWlDeTJxb2xpbUJaaDBGa0F4SFlSQU9KeGJ4UzdGVDlCT2JvU0VvRG83WFBubm4zbTJaTW5UK0lJeml4SGlWK01pdFZyL2xaZjczQTRJbDhiR0JqUU5FMlNaVm1TNEZIQlRGRlZYZGVHOTBJS3kxZFZWZmdVY1pGSUtFRFhkY013bkU2bncrRUFJc1lZQU1nUzI3cDV5OVdHcTl2ZjJQNElIeVlpVlZVcnZyWDYwc1dMVHFlVGlBQlIxYlJFbHl0bjJyU1MrZlBuekoyVGxaT1Q1SGFiSGpTeW1va293WlVRT3pyMEJ3YmV1WGd4S1NrSlJ4c1pRaElqUUFRaXY5OS81OWJ0eTVjdlg3bHk1YU83ZHpWTnMwa1NZOHlPZVB6b1VRU28zUDdyYUVPajRPQ2NFOUcyMTdibFptWG5lWE9tWlh2enZEbFRKazMrN29hTkxTMHR1cTdUV0l6dTd1NnNLVlBGNGhNelBGMWRYV095cktacGQyN2QvdHJLVlZtVG44ano1b2lmbktsWng0OGVJeUllTVJNaVh6dDcrb3duTFYzUVRzdjJ6aWdvUEhQNmRKUkV4aGo0azAvR0JEaTB0ME1IRG1aUG1ScENtRHI1aWV0TjF5Tm5odk53WUdCZ1VkbWloNTJkNG9rc3k2ZlBuaWtvTEJTR2pXTlVKUFQwOUJUUExMSkpFaUwyOXZYZCtPQm1ja3JLWjZ3NnhPNDRrVWdoRjk5OWQrM3FOY0pyaUtpZ3NQRE1YODdLd1VRWWp0Si9xajNSMXRvcWFCVlZQWFRrU0VGaG9YZ054N28yRWt1T3ljS2hSVmp3MDhLeXNwOXMyOVkvTUNCazBkemNmTzNhdFpCMFRHQkZVU29ySzIwMm0zajYvQXN2bEM0b0hiOEZjOFhhaXJuejVqRkVrV1YvOXRxMjZEeGNWMWZYM2ROdDJyYWlmbi96WnM3NU9LVVZMcnAxNjlhZS9uNUVsQ1dwcWFtcHVibDVFUEE3ZGZVT3V3TVFGVTFidm5KRlRtNk95R21QWTRRTStUSDFFbUw1QldVTDgvUHpSREN6eTNMZGhRc0FnSUFtVlVORGczQUJTWkkyck4vdy85RUpidDZ5UmRkMVJKUmt1ZUhLRlNGakJnQStuNitscFVYSUppMHRMUzgvNy9HSi83OWsxVVFBTUcvdVBKZkxKWjc4NjhZTllWMHlBSHh3ODJZZ0VFaElTRUFBVDZiSDRYREVGVUlOYnZpNy9JK2NMOHJNdnI1K0lITW1NdXp5ZC9QUlNKWUFFTnh1dHdpcm93emQ2WjZNbE5RSnZ2WU9BbmpZNld0LzhMRm5ZcVlNQUhjL3ZDdENsS0hydVRtNWtpVEZKYzdXbHRheXNqS253NG5Sam9SbUdSaU1GZ2JuakRHYmJLN3ZjaVlzS3k4bkFtUVllb3NIKzRxUXI0dHFJYUFveDMvL3V3V2xjZVFPU1pMUzB6TTZQKzdneERWTnUzZi92Z2w4Ly81OXhoZ0JxSnJtOVhyanRoL090WUFpSXhNNUlJYWRCZnRCTTVJaW9xYXFvOUV1STFCVmxZejRFZ2RqTEhOaTV2dU5qWklzYzRQN09qdk41cUd2cnk4a1M3dmRIbi9VWmFLL1F5SWVqc0RSTVJrWWlxS05VVWpyd0JIUmxBQU5qcktET2xoQ1FBS01lMlBvY3JrSXdDQUNJSEdBSVllL2hBZ0FqUGpUTCtkYzUxdzNEQllPZFFqQlV3RGlGTGtEemcyVVpRS3plK2VhaG94eHpzMG1GMkJvT2pTSUFFRGpCbysvajFRVXhXeTVFWVZNWlFCd3U5MmlqN2JKTnArdkk5NUZFOTJKNVV1WDJ1MTJJR0lqaHk0Q0lNNkJxTDYrWGxDcG12cmM0aVVNTVhiT0Y4SlFORFV0UFMzZVdOM2IyOGNReFZGa1NuS0tDVHhsNmhUaGZreGlyYTF0anp3SGl4b1pHUm5Iamg4YmJmUFEyL05rVWJFZG1LallkKzJ1U2s1SndWR2JhRnpBaG1HMHQ3Y0RZd2pBR0V0TFR6ZUI4L01MRUJHSm1DVGR2M2ZQTUF4Wmx1UENqbU5tNUdrbEFVTmtZOStibU9vMWROM2YxWVdJUU9Td083dzVYck8wbkRHak1OSGxFaWRhN2UzdHZiMjlZOVhLZkk1VkJ5SzJ0TFkrZlBoUXhDWlBwaWMxTlJVSUdBRzRrNUt5dlY1QjJPWDN2eGRzcHNicENLbnE3ZlBuRlVVUi9FWEZ4ZUdZRHdBbEMwczU1NGdvQSt6WXNYTzhWOUhpMEdkL1RZM0Raa01BVmRQbWxjd1hIc1hFNWNPU0pVdkZBU0tUcFBlYm1pNWR2RFRlbVUrZityUGYzODBZNDBUY01KNWJ2RGhZRFFBZ1lrbkovR3l2MXpBTUFMRGI3YnVycXNhN1ZkZlUxTmhsbVlpNFlaU1hsM3V6czRWdGh4UGdMeXNyRFNJUk5xODJOUHppOWRlandzQjRDVmVjYVAzNjliZHUzbVNNRVpIa2NMenk2cXZoZTQvUTdOSUZwVVZGUlFiblJKVG9jcjExNkszcXZYcy9YUUw4SEdrQjRPZmJmbnIrcitlY1RpZm5YTlAxUldWbHVkTnloN2xxa1dWNVYxV1ZhR2c0NXpaWjJ2NnJ5bGQrK0tPdXJxN3hZc2FkSFIzcjFuNzc4SUVEdG1ERGw1eWNYTFY3ZDJRbE4raHVhV2JSekQxdlZxdWFLcGpkYm5kdGJXM0puTG1IRHg0TUtNcFliVXNjaHB0Zk9rYTI0L2Y3cTNic1hEQy9wSzZ1TGlFeFVmU1ltcTRmUG5va09TVTUwaVhENTlJVXZMRFp0V1BuM2oxN0VsMHVrYWlJS0JBSUpLZE1lT3FwSjR1TGl6TXlNMU1ucE1vMmFkak81aEhkSVpDaUtEOSsrV1dKTVVRTUtNck9YYnNjVG1mOFhrTkVvR3VheitkNzhPQkJZMVBqOWFicmZiMjlyb1FFOHhBUFVWWFZIVHQzdnZqMUZ6bm5rUnFPdmhBWDJEWDdmdlBHOXUxMm15M1k0bkNSc1hSZDU0YkJpWUJ6Q04xM1VxaFNwS0haUDNROXp3Q0ljeVpKZHJ2ZERKaU1CUUlCMFNmekljSUxYVGpSU0UwU29zU1l4RmlJSjZRekRsRDladlh5RlNzaW53OFBIQnIvdUhwMTA2Wk4vNzc3a1RzeFVmUm9adEViWERXc0VoeG1SMGdZRlV0dzBGOE1ERkhaS0JTTUZObDdpVjJZQ0tMWkpNNTcrbnBuUC8zMDN1cnE2ZE9uRDN0M09UeXdXRUxYOWVvOTFYODhVZHZXMW9ZQWtpU1pmNU1RVml3Tjd2RWo4SWJBNGVnT2IyT2t3RUZtVHdBWXZ0TTJkRjJTNWFsWldSVnIxNjZ1V0JOVGFpTURRL0FDdGZHZmpTZHFhK3ZxTHZoOFBsM1Z6TXZ4Q0NNWlp0OXhwaFFjZW13ZG96R0ltR3l6MlNaUG5yeHMyWmRYUGI4cXY2REFack9GZGo1c1hNRFlSVVdVVlhSMmR2cTcvSUZBQUlDRzM5bG9GZnFvaTRNWVIremhuV0dDMDVtYWxwb1N1bzRiVERrc00xci9NODBDdG9BdFlBdllBcmFBTFdBTDJBSzJnQzFnQzlnQ3RvQXRZQXZZQXJhQUxlRC9xZkVmYm1NY1ZDcDhiRzhBQUFBQVNVVk9SSzVDWUlJPSJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMS0xMi0xMyJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjEtMTItMTMifSx7ImFhZ3VpZCI6IjlkZDhkNTkzLTIyMTMtNDM4YS05N2Y4LWQ2YjgxM2Q1MWMyNyIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiOWRkOGQ1OTMtMjIxMy00MzhhLTk3ZjgtZDZiODEzZDUxYzI3IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlNlY3VyaXR5IEtleSBTZXJpZXMgd2l0aCBORkMgKENvbnN1bWVyIFByb2ZpbGUpIn0sImRlc2NyaXB0aW9uIjoiWXViaUtleSBCaW8gRmlkbyBFZGl0aW9uIChDb25zdW1lciBQcm9maWxlKSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk3MjgsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjozfSx7Im1ham9yIjoxLCJtaW5vciI6MX0seyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AzODRyMV9lY2RzYV9zaGEzODRfcmF3IiwiZWQyNTUxOV9lZGRzYV9zaGE1MTJfcmF3Iiwic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwiLCJiYURlc2MiOnsic2VsZkF0dGVzdGVkRlJSIjowLjAsInNlbGZBdHRlc3RlZEZBUiI6MC4wLCJpQVBBUlRocmVzaG9sZCI6MC4wLCJtYXhUZW1wbGF0ZXMiOjUsIm1heFJldHJpZXMiOjMsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCIsImJhRGVzYyI6eyJzZWxmQXR0ZXN0ZWRGUlIiOjAuMCwic2VsZkF0dGVzdGVkRkFSIjowLjAsImlBUEFSVGhyZXNob2xkIjowLjAsIm1heFRlbXBsYXRlcyI6NSwibWF4UmV0cmllcyI6MywiYmxvY2tTbG93ZG93biI6MH19LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsInNtYXJ0LWNhcmQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURTakNDQWpLZ0F3SUJBZ0lVVG5iYkdJUjJOSHZ6cUlLRkFlUXdHMVhCaXMwd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JCSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVFZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU9zWGozazA0QmFuNFRZZHRaS3FEL09QSnh5RHlhUG1DQlVGVWlhWklnVHRlWm5qM1gyNURoZ3BaWlhzQzREMHlkSWNybEE2d05VSW5PUkwvTDl6QmJURUlNQVZNR282ZzdVS0FtYjJNRjZBSGJuaFlKZDllaWt1cFZOV1NoSE5ZTmM0R0JkTzFZTjZBZlVxdkpoSGJlM1Y0U05NUG1CUkVLSlBWejdUaHdnbWdnVGU4V3MySzAvd3NxdjJ3U0U3cGJDQnNVWmhJWDUxYlpNM3BxRHdKUFRtUkZFdnQwLzZ0RzVlTzhGM2oxNE9YcWZFaG1qbjFWdnhLRFlRT0xaQXhDd3dnQzBQNENkZld2M3k4UFNSOEkzNTRoTzFZK0d6Tmp2SXFYMzhOS0x5d3VJWUhGZXJPeE5seEVNQnZGaFlCdVJ1WUFra2dVYVBxTjZVQmhzSUxyc0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ0NvUkhoaXlObmJuWFJXSUw2WkJYb0JYOVlUTUI4R0ExVWRJd1FZTUJhQUZDQW9VQ0VicEZwYjZGUExuWjNGNVB4c0wzb2ZNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUNRRmFmSkkxLzVXZzlDRUVpbUUxUlA1NFJnUXdUTlRPT1FzTEFDVGUrckl0bEZRekM5WkRoclY4Mjh5WDdqenkrQUFzcDNpeks3VDF0aDJkbDdtK3R1MHN3MlBhL29sYzAybnQ2UHlJdzM0OGdhSHpoSTErMEtFNDVxeHZGRGVMMmxNeGJQZkNZdnlFRWFZemppUUVMVTU5NTFwWEdXeUtNYS80Zkx0TytaS09YaE11VmVxNHJYRFBJNTRXNkpIT2lBYWlLZGl3KzVlM2Mya3QvakZJUXRNNnZNWGc5TE5GemRqRVROdDIwVlg5UWV2UnBGWmZ1Y01HOXdDYVFEb0ZsUHpwVE1KS2hQZXYvaW1KbVpZaEtmcjBsTGNlbXRxakl4TEFvcVpkT1lmSEJnNit2QWNkUEkvaWF1R3BVQXY3WCtVS05tRHdqWjJCYUg0c0x3aEIybSIsIk1JSURTRENDQWpDZ0F3SUJBZ0lVRHFFUncrNFJuR1NnZ3hnVWV3SkZFUERSWjNZd0RRWUpLb1pJaHZjTkFRRUxCUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURJN1huSCtadkR3TUNRVThNOFplVjVxc2N1Ymx2VllhYVJ0M1liYXhuOWdvZEx4NXN3SDBsWHJkZ2poNWg3RnBWZ0NnWVlYN0U0YmwxdmJ6VUxlbXJNV1Q4TjNXTUdVZThRQUpiQmVpb1Y3Vy9FK2hUWlAvMFNLSlZhM2V3S0JvNlVMZU1uZlFaRHJWT1JBazh3VExxMnY1TGxqNXZNajdKdE9vdEthOUo3bkhTOGtMbXpYWFNhajBTd0VQaDVPQVpVVE5WNHpzMWJ2b1RBUVFXckw0L0o5UXVLdDZXQ0ZFNW5VTmlSUWNFYlZGOG1scUsyYngyejZva1ZsdHlEVkxDeFlicFVURUx2WTF1c1IzRFRHUFVvSUNsT200Y3Jwd25EUkxWSHZqWWVQR0JCLy9wRXl6eEEvZ2NTY3hqd2FIMVpVdzliblNiSHl1cktxYlRhMUt2akFnTUJBQUdqWmpCa01CMEdBMVVkRGdRV0JCVHF0MEtRbmd4N1pIcmJWSHdEdW54T245aWhZVEFmQmdOVkhTTUVHREFXZ0JUUzd1OWFJbzA2YlZ3amx6M3loZFVtOFNWN2tqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQTRHQTFVZER3RUIvd1FFQXdJQmhqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFxUWFDV014VEdxVlZYN1NrN2trSm1VdWVUU1lLdVU2K0tCQlNnd0lSbmx3OUs3SGUxSXB4WjBoZHdwUE5pa0tqbWN5RmdGUHpoSW13SEpneHh1VDkwUHczdllPZGNKSk5rdERnMzVQWE9melNuMTVjRkF4MVJPMG1QVG1JYjhkWGlFV09wem9YdmR3WERNNDFaYUNEWU1UN3c0SVF0TXl2RTd4VUJacTJianRBbnEvTkRVQTdiZTRIOEgzaXBDKy8rTktsVXJjVWgrajQ4SzY3V0kwdTFtNkZlUXVlQkE3bjA2ajgyNXJxRHFzYUxzOVRiN0tBSEF3OFBtcldhTlBHMmtqS2VyeFBFZmVjaXZsRmF3cDJSV1p2eHJWdG4zVFYyU0J4eUNKQ2tYc05EMDVkQ0VyVkhTSklzK0JkdFRWTlk5QXd0eVBtbnliMHY0bVNUenZXZHc9PSIsIk1JSURTRENDQWpDZ0F3SUJBZ0lVVWNtTVh6UklGT2dHVEswVGIzZ0V1Wllaa0JJd0RRWUpLb1pJaHZjTkFRRUxCUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JCSURFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURtNTU1YldZOVdXK3RPWTBySVdIbGRoK2FOYW5vQ1pDRmg3R2szWVpyUW1QVXcwaGtTRzZxWUhRdFArZlp5UzMzVkVydmcrQlFxbm11bWdOaGZ4RnJrd0VaRUxlaWRCY0M4QzRBZzRucXFpUFdwenN2STE3TmN4WWxJbkxOTEZjWlkvK2dPaU42Wk9UaWhPNS92QlpNYmo5cmlhQWNxbGlZbU5HSlBnVGNNR2FFQXlNekVNTnkybm02RXArcGpQNWFGNmdpMjF0L1VRRnN1SjFqMlJqL3luTS9TZFJ0K2VjYWw1T1lvdHhIa0ZiTDl2dnYyQTJPdjVJVFpDbHc0Yk9TOW5weXBRaW1PWjVRQVl5dG1ZYVFwV2wvcE1ZejZ6U2o4UnFrVkRORUpHcU5mVEtBMml2TFl3WDZsU3R0TVBhcGcwSjg0bDlYMHZvVk4vRnBTNFZDVkFnTUJBQUdqWmpCa01CMEdBMVVkRGdRV0JCUWdLRkFoRzZSYVcraFR5NTJkeGVUOGJDOTZIekFmQmdOVkhTTUVHREFXZ0JUUzd1OWFJbzA2YlZ3amx6M3loZFVtOFNWN2tqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQTRHQTFVZER3RUIvd1FFQXdJQmhqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFZTXpnTHJKTElyME9vdlFuQVpyUklHdWFiaUhTVUtTbWJMUldwUmtXZUF0c0NoREVIcFhjSi9iZ0ROS1lXb0hxUTh4UlVqQjRDeWVwWWV2YzNZbHJHOG83ekh4cGZWY2FvTDVTZXVKa3pIeEtuNGJUYVNwOStNdndhbW5wNjRrWk1pTmJGTGtuZlA5a1lLb1JIa01XaGVSSjFVc1AxejRTY21rQ2VJTGZzTXM2dnFvdnFqV0NsRnNKcEJjc2x1WUhXRjdiQkoxbjRSd2crQVRFb3BZNElnR3Y2WnZ3YytBOXIrQVQyaHFwb1NrWW9BbCtBTll3Z3NsT2Y5c0plMFYrVEE5WVkvVWxhQm1QUFRkMC8vcjl3dmNlUFdaa1BqS29BQy96VU5oZkRiaDRMVjhHSHMzbHlYMlhvbUwvTE5jOEpZenlJYURFaEdRdmVvUGhoL3RyMWc9PSIsIk1JSURQakNDQWlhZ0F3SUJBZ0lVWHplaUVESkVPVHQxNEY1bjBvNlpmL2JCd2lVd0RRWUpLb1pJaHZjTkFRRU5CUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTVo2L1R4TThySVQrRWFvUHZHODFvbnRNT28vMm1RMlJCd0pIUzBRWmN4VmFOWHZsMTJMVWhCWjVMbWlCU2NJWmQxUm54MW9kNTg1aCsvZGhLN2hFbTdKQUFMa0tLdHMxZk81M0tHTkxadWp6NWgzd0duY3I0aHlLRjBHNzRiL1UzSzloRTVtR05ENnpxWWNoQ1JBSGZyWU1ZUkRGNFlMMFg0RDVuR2R4dnBwQXk2bmtFbXRXbU1ud08zaTBUQXVjc3JiRTQ4NUh2R000cjBWcGdWZEpwdmdRamlUSkNUSXErRDM1aHd0VDhRREl2K25HdnBjeWk1d2NJZkNrenlDaW1KdWtoWXk2S29xTk1LUUVkcE5pU092V3lETVRNdDFid0N2RXpwdzkxdSttc1V0NHJqMGVmbk85czBaT3dkd01SRG5INHhnVWw1Wkx3cnJQa2ZDMS8wQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQjhHQTFVZEl3UVlNQmFBRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRTXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJEUVVBQTRJQkFRQzNJVy9zZ0I5cFo4YXBKTmp4dUdvWCtGa0lMa3Mwd01OcmRYTC9jb1V2c3JoenN2bDZtZVBNcmJHSkJ5SjFYbnF1QjVzZ2NSRU5GeGRRRm1hM21pbzhVcGYxb3dNMVpyZVhySjBtQURHMkJwbHFiSm54aXlZYStSMTFyZUlGVFdlSWhNTmNaS3NEWnJGQXlQdUZqQ1dTUXZKbU5XZTltRlJZRmdOaFhKS2tYSWI1SDFYZ0VEbHdpZWRZUk03Vm9sQk5sbGQ2cFJGS2xYOHVzdDZPVE1PZUFEbDJ4TkYwbTFMVGhTZGV1WHZEeUMxZzkrSUxmejNTNk9JWWdjM2lyb1JjRkQzNTRnN3JLZnU2N3FGQXc5Z0M0eWkweEJUUHJZOTVyaDQvSHFhVVlDQS9MOGxkUms2SDdYazM1RCtXVnBtcTJTaC94VDVIaUZ1aGY0d0piMGJLIiwiTUlJRFNqQ0NBaktnQXdJQkFnSVVSMzhtcTI2U2Yyc3pWVjJCZEc2V0VON2t1V1V3RFFZSktvWklodmNOQVFFTEJRQXdMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3SUJjTk1qUXhNakF4TURBd01EQXdXaGdQT1RrNU9URXlNekV5TXpVNU5UbGFNQ1l4SkRBaUJnTlZCQU1NRzFsMVltbGpieUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRUlnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTlkwV2I5b1BvUm9Lb1F5V1BhSnB6MTF2cldUZzZ6VHRtTmoyVm9LUm55dktHUnFwemI4M3c1bDZZQTk2VVlrWUJEUVAwaWxPMkRQZTZ3V3FWUjV6RGZSemRjSDhiaCtMN2RHR3ZhZTZoUlRaaGtGa0NwWERzNEhjY2tuckRmOEZDbEo3SGUzOUpmNDIvRzFRbTJ6ejlXV21yUFh0Z2lLL3gwNUdqc1FmR3VERzF6ZjVRVFVVaWU4bHd5bUszVGZkT3ZOZWVKQUFQZTJwbjdJdGZSYityVnJOV2lEemxSbjJ2Tm5aMndQbzR3SC9XSjZkaFhaRytyTVdUK2E2Qm9jZzFVZkl3NmtkdW5HNGJUcFp6c3ZhY0ZZeVIwbXBmK0RlT25wU1dBbXl3SldIdlRsZjJZWHhGeWVYY1RBQ2RRbGNNTkdKMlZoWlE0OHh0UDUvUkJQLzhrQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZDaHk0Mm9raXFjVFMxaXFhL0hSV2prQm40SC9NQjhHQTFVZEl3UVlNQmFBRk9xM1FwQ2VESHRrZXR0VWZBTzZmRTZmMktGaE1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQW4rUkhJUGJ0TUVETmRUMWc4SC9SaXRBa1VkTGdBdDF0V0dXbmxqOWtuYnY0LzRHbFg3QzlwNDVlZlBPOS9hWkw2T1YxWFJLQmk2S210Qlc1SzdudVlFbk14LzVCcUJTYkxUN3JoZHVDNDlUQmVNYjlQSGRYc1RsU1ZOWWVmcjFkR2lkcjRqMHhWQlFMYjFya25EQWJkV0R6S2Z2bmF5S084RnJ3ZTdIeDg0M01HL3JKK2MwWHJ1VXZiZlZUQ0hMaUlXaE03b05EaEw4eG9iNnhVbzlLTEtjU0wrSXRZc08zLzlXYjhROUdqc3FMNEZYc0RjRzFTYVloN0twZnVNbU9peHF6SlpPMm5JaWNQWVJnMUkyU3VpVWZZTzcwdG1kSGNibCtrU1FtU1l0N3JxNHZpSUxnMkd4M2o5cklUdVdUamJhVWFTU1F4Z09tTVNIdXl6TUFDIiwiTUlJRFJ6Q0NBakdnQXdJQkFnSVVleDluVDl2d1pOWFM0ODNMZGlZR2Z3MlNqU293Q3dZSktvWklodmNOQVFFTE1DNHhMREFxQmdOVkJBTU1JMWwxWW1samJ5QkJkSFJsYzNSaGRHbHZiaUJKYm5SbGNtMWxaR2xoZEdVZ1FpQXhNQ0FYRFRJMU1EZ3dNVEF3TURBd01Gb1lEems1T1RreE1qTXhNak0xT1RVNVdqQW5NU1V3SXdZRFZRUUREQnhaZFdKcFkyOGdSa2xFVHlCQmRIUmxjM1JoZEdsdmJpQkNNaUF4TUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUF1MU1ldm55OWR5TzlaVUMzOVNvTWhMY1IvRFhydEYvY2lNMTJ0Y2l5MkVYQVo2TWtyaXZWdENmRVZNOVg2SVNURW5CUDZ1U1lZb3Y2cHB2Nk82SmgyTkhtWW00dytKblM0Vm5DUFU3bUhBTWZWSTJNR1RUTVZPZXcweFVzRzdzSVNJa0lEVUJtdWs4WUs5YzV6aWM5K3ZGUUdMSWtzZFhPNWlWRklnTkc1M2NHWEQ0Wkxab0FQaXUwUEVvenhBcVlJYUk0Z3hLaE9BM1M4L1c4bUlXc3U2b2Z5ajRHdmtGRzZaN2t5RjMxMDdQN213RkhMckkzRU5hUFdNT0ZjVGFHYTBkdysvdlZSd2pSY0VaQlZzdXVULzg3Y2tTczBhNXBrdDN2WkJsYVllVDhwelNyZVY3bW93Y0lNOTBMMmlhQVRsUDBueG1hRTZuT3lUYm9qRlZsMndJREFRQUJvMll3WkRBZEJnTlZIUTRFRmdRVVNYRWgzc2EzYnREdXJtNE1NL0M3UzFsUnV1WXdId1lEVlIwakJCZ3dGb0FVNnJkQ2tKNE1lMlI2MjFSOEE3cDhUcC9Zb1dFd0VnWURWUjBUQVFIL0JBZ3dCZ0VCL3dJQkFEQU9CZ05WSFE4QkFmOEVCQU1DQVlZd0N3WUpLb1pJaHZjTkFRRUxBNElCQVFCNUdjM2hhZnRwN2hLc0Vac28raS9aNW5SdXFkbXpHMldDbFVvUlVxYmFQeWdsbkpEaktSL2tmZ09sNmliYkYvenRobTNLbVhRN0hjRElQMnhNZEc3VTJMMmltYkpRSHFQZi9oMkhxb2piNHJaZ3VlKzZXNGt0U1I1ZWxSOUwxcllxRS9TR1lNNGlFS29WUVN2N1JUMXJ4SWVXaUtzdy9WeHhpL1FPbnN4M0Y3eDgwQ0NZZ0I0RTN5UXg4VlRXNDQwaFRFd1RBMWVNSE9peDMydFB0eXlISWE4UFZWSWZWcEhRSkJhTVZ2djUwOFVFandrYlUycm5qZnpvU1ROUzlBNWpVUThtQlN2ZTk1cmpCMGRvOThFVStEeGRCcVgyK0g2aTV3bElDRmd6aGR6Y3NuZTloR0tUNmx6VFg0Y0lkSnNyWTIreGxlSzBGRlF5NmxHRVZMRWUiXSwiaWNvbiI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsImljb25EYXJrIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwicHJvdmlkZXJMb2dvTGlnaHQiOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJwcm92aWRlckxvZ29EYXJrIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiRklET18yXzAiLCJGSURPXzJfMV9QUkUiLCJGSURPXzJfMSIsIkZJRE9fMl8zIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsImxhcmdlQmxvYktleSIsImNyZWRCbG9iIiwibWluUGluTGVuZ3RoIiwiaG1hYy1zZWNyZXQtbWMiLCJ0aGlyZFBhcnR5UGF5bWVudCIsInByZXZpZXdTaWduIl0sImFhZ3VpZCI6IjlkZDhkNTkzMjIxMzQzOGE5N2Y4ZDZiODEzZDUxYzI3Iiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJ1diI6ZmFsc2UsInBpblV2QXV0aFRva2VuIjp0cnVlLCJsYXJnZUJsb2JzIjp0cnVlLCJiaW9FbnJvbGwiOmZhbHNlLCJ1c2VyVmVyaWZpY2F0aW9uTWdtdFByZXZpZXciOmZhbHNlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJwZXJDcmVkTWdtdFJPIjp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6ZmFsc2UsImFsd2F5c1V2Ijp0cnVlfSwibWF4TXNnU2l6ZSI6MTUzNiwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0Ijo4LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjEyOCwidHJhbnNwb3J0cyI6WyJ1c2IiLCJzbWFydC1jYXJkIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN30seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTh9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi0zNX1dLCJtYXhTZXJpYWxpemVkTGFyZ2VCbG9iQXJyYXkiOjQwOTYsImZvcmNlUElOQ2hhbmdlIjpmYWxzZSwibWluUElOTGVuZ3RoIjo0LCJmaXJtd2FyZVZlcnNpb24iOjMyOTcyOCwibWF4Q3JlZEJsb2JMZW5ndGgiOjMyLCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6MSwicHJlZmVycmVkUGxhdGZvcm1VdkF0dGVtcHRzIjozLCJ1dk1vZGFsaXR5IjoyLCJyZW1haW5pbmdEaXNjb3ZlcmFibGVDcmVkZW50aWFscyI6MTAwLCJhdHRlc3RhdGlvbkZvcm1hdHMiOlsicGFja2VkIl0sInV2Q291bnRTaW5jZUxhc3RQaW5FbnRyeSI6MCwiZW5jSWRlbnRpZmllciI6IiIsInRyYW5zcG9ydHNGb3JSZXNldCI6WyJ1c2IiLCJzbWFydC1jYXJkIl0sInBpbkNvbXBsZXhpdHlQb2xpY3kiOmZhbHNlLCJtYXhQSU5MZW5ndGgiOjYzLCJlbmNDcmVkU3RvcmVTdGF0ZSI6IiIsImF1dGhlbnRpY2F0b3JDb25maWdDb21tYW5kcyI6WzIsM119fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNi0wNC0yNSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk3MjgsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWXViaUtleSBCaW8gRmlkbyBFZGl0aW9uIChDb25zdW1lciBQcm9maWxlKSIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjYwNDI1MDE3IiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25Qcm9maWxlcyI6WyJjb25zdW1lciJdLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI2LTA0LTI1IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTcyOH1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNi0wNS0wMSJ9LHsiYWFndWlkIjoiOTcwYzhkOWMtMTlkMi00NmFmLWFhMzItM2Y0NDhkYjQ5ZTM1IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI5NzBjOGQ5Yy0xOWQyLTQ2YWYtYWEzMi0zZjQ0OGRiNDllMzUiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiV2luTWFnaWMgRklETyBFYXp5IC0gVFBNIn0sImRlc2NyaXB0aW9uIjoiV2luTWFnaWMgRklETyBFYXp5IC0gVFBNIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJyc2Fzc2FfcGtjc3YxNV9zaGEyNTZfcmF3Iiwic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciLCJyc2Fzc2FfcGtjc3YxNV9zaGExX3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbInNvZnR3YXJlIl0sImNyeXB0b1N0cmVuZ3RoIjoxMTIsImF0dGFjaG1lbnRIaW50IjpbImludGVybmFsIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlFclRDQ0E1V2dBd0lCQWdJUVJUZmNnbzZ4d0lGR2ZtdHprMUJTblRBTkJna3Foa2lHOXcwQkFRc0ZBREJFTVJVd0V3WUtDWkltaVpQeUxHUUJHUllGYkc5allXd3hHREFXQmdvSmtpYUprL0lzWkFFWkZnaDNhVzV0WVdkcFl6RVJNQThHQTFVRUF4TUlWMmx1YldGbmFXTXdIaGNOTURneE1USTBNVGd6TkRRNVdoY05Namd3TnpFek1UY3pNak0zV2pCRU1SVXdFd1lLQ1pJbWlaUHlMR1FCR1JZRmJHOWpZV3d4R0RBV0Jnb0praWFKay9Jc1pBRVpGZ2gzYVc1dFlXZHBZekVSTUE4R0ExVUVBeE1JVjJsdWJXRm5hV013Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRRFFDa21RL0s4RG4zOXFTQ1c1dEtMdnZETEgzQ2xTY2dRckRnNyt1WTQ0akhsSVkxL0xsNnYycnBqN25sbVZNbEl6b2dkM3lYakNGQnZHcjR6aUdRMlFjOFVwa2FVOTZFWnhFdEh3WlN0dzZZUTBqZG5na1NMUHZPcDhUOFlpSnBjdnNWdFF0aVEwT3NUVHVpTzJFaTRMdUxoN0tSKzh4NGJBUnZ6a0JXc3ROQlRxVlNBWlFZZXNxbmw4SDVTZndiM0lvdThMU2lBc3VPWHl4dDJtczkxMVlyeFd2aC9Lbk9lbDNPZDNoK0s1ZFFZUDUzK2ZQVXpnejU2VFRqOFI0WTZ6UnV6ZGtiblI2eFdYZHJLNDE0aVg5RDZ4NXE4VzJYSkpwVE1LN0VuU1hHMHE3WEY3cDY4akRLQW54QUY4a2ZoM3VpbmMydWxtVk9aYlRSenhGOEIzQWdNQkFBR2pnZ0daTUlJQmxUQVRCZ2tyQmdFRUFZSTNGQUlFQmg0RUFFTUFRVEFMQmdOVkhROEVCQU1DQVlZd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBZEJnTlZIUTRFRmdRVWpNc1RiWTB3WFFCUjI5YldISXZiRmZVQUZmVXdnZ0VHQmdOVkhSOEVnZjR3Z2Zzd2dmaWdnZldnZ2ZLR2diVnNaR0Z3T2k4dkwwTk9QVmRwYm0xaFoybGpLRElwTEVOT1BYQm9iMlZ1YVhnc1EwNDlRMFJRTEVOT1BWQjFZbXhwWXlVeU1FdGxlU1V5TUZObGNuWnBZMlZ6TEVOT1BWTmxjblpwWTJWekxFTk9QVU52Ym1acFozVnlZWFJwYjI0c1JFTTlkMmx1YldGbmFXTXNSRU05Ykc5allXdy9ZMlZ5ZEdsbWFXTmhkR1ZTWlhadlkyRjBhVzl1VEdsemREOWlZWE5sUDI5aWFtVmpkRU5zWVhOelBXTlNURVJwYzNSeWFXSjFkR2x2YmxCdmFXNTBoamhvZEhSd09pOHZjR2h2Wlc1cGVDNTNhVzV0WVdkcFl5NXNiMk5oYkM5RFpYSjBSVzV5YjJ4c0wxZHBibTFoWjJsaktESXBMbU55YkRBU0Jna3JCZ0VFQVlJM0ZRRUVCUUlEQWdBRE1DTUdDU3NHQVFRQmdqY1ZBZ1FXQkJUZlFRNVdyV01SVzc4dmtXaDJuaURUM1Y5N3JEQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFpTHBMdG5hRTBBYklpU21tajRFTFJUUk1HdWVkeGQ2WlRZMnlVaTFRTnN3YUkyT0ZuaC9ORFdMV09nRjM2SE92REVMWEJZWk02K0FzUGlWSFU3MnN2bFlqN1k1SHpadm9Va00zZHZieHI2VTJCSjg5SkVFVFJJV3FVbFlPcTQ3QmU4NE9SMlh2bW5pVXVKckZPenNBWWN0clpYMlRGWDNBYlZQczRMU1ROYzBkYTB1cTBDcW9PU09JQ2Z6ejFYN3VmN1R3OU8wS2NLZXJGZ3plVWNtR3RLdjVvSzdSWTlXa0R4ZGkyMlJ5MEdFYjYwdG5hdjdxazlqYTQ1V0JqTjEweHVOcE5zbENhbFJuTllPR1Z0WTFtNG95MmcrMXhkMWIwdnhnMHhKc1c0azJvdlRkWlFTNUhDa21lMDVNNUx5MFNGU1ZHL1JIeE1zNkl4NDNDY3RDSVE9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFMUUFBQUMwQ0FNQUFBQUtFL1lBQUFBQjFGQk1WRVVBQUFELy8vOFJCZmNTQ2ZNU0N2SVRDL0VUQy9BVERPOFREZTRWRXVrV0UrZ1hGT2dYRmVZQUFNOEFBTTRZRitVYUhPQUFCODhBQk00QkI4OEJDTThDQ2M4RUNjOElEOUFhSHQwYkg5d2JJTndiSU5zYklkb2NJZHdjSXRvY0k5a3FNTmNCQzlBREM5QUVEZEFGRWRFTkY5TU5GOUlQR05NUEdOSVBHZElSR3RNUkc5TVRIZE1VSHRNVkg5UVZIdE1XSDlNV0lOTVhJTlFZSWRRWkl0UWFJOVFhSk5RYkpkVWJKTlFjSk5jY0pkVWRKZGNkSnRVZUp0Y2RKdFFlSjlVZUtOVWVKOVFlS05NZUtkTWZLTlVmS2RRZktkTWZLdElnS2RZZ0t0WWdLZFVoS3RZaEs5VWlLOVlpTE5ZakxkY2pMTllrTE5Za0xkWW5NTmNuTDlZcE10Y3FNOWdzTk5ndU50Z3hPZGt4T3RsRlROeE5WTjVSVjk1VFdkOVZXOTlkWStGa2F1SmlhTjU0ZmVhRml1T0VpZUtGaXVLR2l1T0dpK09zc09nblByOHJTTFV0VHE4N2NJMDlkWWxFaG5kSmsycEtsV2xNbTJKTm5XQk5uV0ZWc1U1VnNrdFdzMHhXc2t4WHRVcFd0RXBXczBwV3RFdFdzMHRZdDBoV3RVaFh0VWhYdGtsWHRVbFl1VVpZdUVWWXVFWmF2VUpadTBSYXZqOWF2VUZid0Q1YnZ6OWV5RGhleHpsZHhqbGR4VGxmeVRWZXlEWmV4emRleHpoZXhqaGZ5ak5qMVNwajB5dGkwaXhpMGkxbDF5aGsxaWtWcWlFaUFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFGK21sVVdIUllUVXc2WTI5dExtRmtiMkpsTG5odGNBQUFBQUFBUEQ5NGNHRmphMlYwSUdKbFoybHVQU0x2dTc4aUlHbGtQU0pYTlUwd1RYQkRaV2hwU0hweVpWTjZUbFJqZW10ak9XUWlQejRnUEhnNmVHMXdiV1YwWVNCNGJXeHVjenA0UFNKaFpHOWlaVHB1Y3pwdFpYUmhMeUlnZURwNGJYQjBhejBpUVdSdlltVWdXRTFRSUVOdmNtVWdOUzQyTFdNeE5EVWdOemt1TVRZek5EazVMQ0F5TURFNEx6QTRMekV6TFRFMk9qUXdPakl5SUNBZ0lDQWdJQ0FpUGlBOGNtUm1PbEpFUmlCNGJXeHVjenB5WkdZOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6RTVPVGt2TURJdk1qSXRjbVJtTFhONWJuUmhlQzF1Y3lNaVBpQThjbVJtT2tSbGMyTnlhWEIwYVc5dUlISmtaanBoWW05MWREMGlJaUI0Yld4dWN6cDRiWEE5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM4aUlIaHRiRzV6T21SalBTSm9kSFJ3T2k4dmNIVnliQzV2Y21jdlpHTXZaV3hsYldWdWRITXZNUzR4THlJZ2VHMXNibk02Y0dodmRHOXphRzl3UFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzQm9iM1J2YzJodmNDOHhMakF2SWlCNGJXeHVjenA0YlhCTlRUMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzk0WVhBdk1TNHdMMjF0THlJZ2VHMXNibk02YzNSRmRuUTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl6Vkhsd1pTOVNaWE52ZFhKalpVVjJaVzUwSXlJZ2VHMXdPa055WldGMGIzSlViMjlzUFNKQlpHOWlaU0JRYUc5MGIzTm9iM0FnUTBNZ01qQXhPU0FvVjJsdVpHOTNjeWtpSUhodGNEcERjbVZoZEdWRVlYUmxQU0l5TURJd0xUQTNMVEl4VkRFNE9qRTBPakEwS3pBek9qQXdJaUI0YlhBNlRXOWthV1o1UkdGMFpUMGlNakF5TUMwd09DMHpNVlF4TmpveE9Eb3hOQ3N3TXpvd01DSWdlRzF3T2sxbGRHRmtZWFJoUkdGMFpUMGlNakF5TUMwd09DMHpNVlF4TmpveE9Eb3hOQ3N3TXpvd01DSWdaR002Wm05eWJXRjBQU0pwYldGblpTOXdibWNpSUhCb2IzUnZjMmh2Y0RwRGIyeHZjazF2WkdVOUlqSWlJSEJvYjNSdmMyaHZjRHBKUTBOUWNtOW1hV3hsUFNKelVrZENJRWxGUXpZeE9UWTJMVEl1TVNJZ2VHMXdUVTA2U1c1emRHRnVZMlZKUkQwaWVHMXdMbWxwWkRvd1lqRXdOakUyWXkweE9XRTBMV1UwTkRZdE9UQmxaUzAzTnpBek0yRmtNR1F6WVdVaUlIaHRjRTFOT2tSdlkzVnRaVzUwU1VROUltRmtiMkpsT21SdlkybGtPbkJvYjNSdmMyaHZjRG81TjJNNE5HRTJOeTAzWkRKbExUQmxORGN0WWpBek5TMWxOMlU0TldJeFpEazBaVFlpSUhodGNFMU5Pazl5YVdkcGJtRnNSRzlqZFcxbGJuUkpSRDBpZUcxd0xtUnBaRG95TW1VeE5HUmtaQzA1WmpBekxUaGtOR0l0WVRjMk5pMDFNbUU0TWpoak1EZGhOamNpUGlBOGVHMXdUVTA2U0dsemRHOXllVDRnUEhKa1pqcFRaWEUrSUR4eVpHWTZiR2tnYzNSRmRuUTZZV04wYVc5dVBTSmpjbVZoZEdWa0lpQnpkRVYyZERwcGJuTjBZVzVqWlVsRVBTSjRiWEF1YVdsa09qSXlaVEUwWkdSa0xUbG1NRE10T0dRMFlpMWhOelkyTFRVeVlUZ3lPR013TjJFMk55SWdjM1JGZG5RNmQyaGxiajBpTWpBeU1DMHdOeTB5TVZReE9Eb3hORG93TkNzd016b3dNQ0lnYzNSRmRuUTZjMjltZEhkaGNtVkJaMlZ1ZEQwaVFXUnZZbVVnVUdodmRHOXphRzl3SUVORElESXdNVGtnS0ZkcGJtUnZkM01wSWk4K0lEeHlaR1k2YkdrZ2MzUkZkblE2WVdOMGFXOXVQU0p6WVhabFpDSWdjM1JGZG5RNmFXNXpkR0Z1WTJWSlJEMGllRzF3TG1scFpEb3dZakV3TmpFMll5MHhPV0UwTFdVME5EWXRPVEJsWlMwM056QXpNMkZrTUdRellXVWlJSE4wUlhaME9uZG9aVzQ5SWpJd01qQXRNRGd0TXpGVU1UWTZNVGc2TVRRck1ETTZNREFpSUhOMFJYWjBPbk52Wm5SM1lYSmxRV2RsYm5ROUlrRmtiMkpsSUZCb2IzUnZjMmh2Y0NCRFF5QXlNREU1SUNoWGFXNWtiM2R6S1NJZ2MzUkZkblE2WTJoaGJtZGxaRDBpTHlJdlBpQThMM0prWmpwVFpYRStJRHd2ZUcxd1RVMDZTR2x6ZEc5eWVUNGdQQzl5WkdZNlJHVnpZM0pwY0hScGIyNCtJRHd2Y21SbU9sSkVSajRnUEM5NE9uaHRjRzFsZEdFK0lEdy9lSEJoWTJ0bGRDQmxibVE5SW5JaVB6NVhCZWFsQUFBTzFrbEVRVlI0MnUxZDU1OGtWUldkWjA2WUE2SmlEcGdEbUZpdExWeXptSFBPWWxaUUVXUTlBWE1XelA2emZyaXY4cXZ1cXA3dW5zSGY5S2VkN2Q2WnM3ZnV1K0hjYzkrY3BBZmc2K1FDOUFYb0M5QVhvQzlBWDRDK0FIMEIrZ0wwQmVqL0Y5QTB1UDB6UGtlZ0RVdWlOb0FpYk1HMGNRNUFTeElzMEJRRnFQZ1ppcFlnUTVKNXRxQmh5ellsU29JZ3l4TWp3N0pKVTdZb1VqNUQwSlJ0MDVabFVhSTk5bTZEa0NYRGxFQUpwdllBKzJSSHlCSXMyYklBV0xSZ3FlY2p0a1Jac2czSkZHRUFPRDNxblVDVERqRE1XRXpabEhvdVFvbEMvTDhvRVdvOHhkSVpnTFpwVzVZRXdKWWtJbnRDOWhESklHM1RFa3lMdGlISVBMV3Rkd0N0Q0dLa1FadEt5U1poVzRZait0bVNiRUsyWUtSRUNhUkVpeUNQRFJxeVRGRHFoVjRpSXJZbEtpSmR1RVl2T2x1QWJCbytuYTFQZHNBc0dyWkhDVVd3TFVHU0xNbmtKQXFLcGt4TDFqRkJtNUNNUWFEb0hvRWxBTFFoMEdJaHZFT2tUMmZxOWFBZGpzR2l0OU1tbUFOaEVaaXRNTGFQQjFxUjNJUzVkd0ZadEd4NkpzYkR4dHk3QndGdHlVWVhhaEhwc1BlbGFXbndMQnhSdmU5Z3RFNVIrSjJzTmJUa3ppTURjQTgxZ0p4MDNQeVZiVUpVZTNBUnVSODRIbWdUUlA3NWRBWXBFKzJUaUtxdS9YOUZXV3FyOVFoSFJ0V3hRRWZhYXdFaFFwODc0N2NJTXlhS3pTZlE0QlFScWZJNG9EVUlIWkxzdTV4U1lHSm5hcXF4UEd3YnpXZmNOREtFVG1IcWxhQ2p1R1ByS3cyTURwSERwYlBoWmR1dGM2dDFxd2d2eHdGdFdXaU9HTlU5WWR1T2dpSkhrMnhHZCtjdm9mMnpaQXJIY2c5RzFhYnVpMzZtYTA4bjFaaVhabGQ4Z0wxbnBGT2tsNVh1UVVGZ0I4aWQ0M1QrSWJGNTlGSXZEN250SXgwdHpaSGNJNkpBKzVEVlN5QW9nYkNIU1dZL1RNTGE2RUViT1MzUWJHSkVvbDNNRnBiUTlqSW1kQmFnYy9mVVJROU8vampwZjl2VXFIMVJIMnZkUXlRYTQwRUNuUE9reThIQVJqd1BtZG9YWGJNMmpjdGlHK2xrVWdJNDMvZkowUjB5dXRzekFRMklYZnd3YmREYVZFbkFGZ0VUM0JzdnRrUHQ0VjVabVF1aFRXRkJqR0xXMkJzSnVicWVkalNJdlZRNEtpUENUempvMEU1VkhwMGVOQjNKdzVzYTM1VDJ4NUR1cVVjTVpnWWI2aE1MT20rZ0FkcWNJMXpJZmtZNUg2QVREWnJXSEdzYkJNUDVzblJLUVI1bGZycEVqRmdXemh0b0JJVVVVd0FWVUVzNlorNFJZUzg2UWRtYTFrbmdZUTI5R3ovZGtZdUtUbmVTTjlQNUE1MkMxeUljR2RKT1IzM3RPblBKcFZKZ0xsbjdQSUpPYW9vT3hTVGdtS2hQTVVkMExxTWxPaVpZSzVLcWpJajNsQlR6UEVtRWtHY0ZJQ25Ba2pYdWVFNDFzWTB3QWptR0Ywc3ppbXdLaHZKWUQ1SnBJTS9MRkErUkZtTUV5VEhUZmNveGM0emhFS2xHWEFZNzVqQ1VRZVNoSGdWYWlBeVFneEtpZitBMCs1NTJvQitoMnNIUGFGbWhwQWlXc0drQ2hnMExtZlVMMTdFTmtTU01TYkk2dlFyQmtjL1JQRzB1OFNvRnMrNllQdWRabVl5SXBXQk1vV0o4RS8rbC9ZTHVxRlJGODdVMXMxQ2dtSWVoRkJ3MFBVMENOZ1haa0FYRzlCUWpKY0IrUkNwcXB2dkJQWHJiUVFqeU5UdDJNTm9pREVlMVpSaUlQdDdPd1dYL29GT2lMU0YwQnRveVQyRjIyMXdvdWt0UWNhVERJMktzRjJOMzR5Q2dVMkpFTEVyUTRwQmR6TFZpcnpCZ1VOaytET2dZdUFBaGxORHVuaWFqcDNnaDFIQkNCd0VkdkhNY29KMmI3eWJERGhxaFViYmRzMW9zNXpydlhrRTExVXlQVnpOSExlZStKVzZ5OCtCOFI3L094MUtkUzRNYXphdjNyOHR6Q0xLd1c1OFl2VnJuMHFITHNROE1PaytUdUp1dGhWSHdrTWx4TkRxRUFqSVNNSGNTdE9XRXFGNzlTd29IdDNSd1o5TXp2OHc3OG9Ib05jblRtZEpodEthSWljRjYxcEUyaUk0SmpMSmdIUFVQSkpDTjBGZFNxV3hqcjBKb05HUitqZ1NhamhKK1piUU83UmI2U1R4a2lFY0JuWXh3RDNCVjZJaE9ncjNHS0ZMVmNVRG5RZGc2VXpPa0liMWpHRG9ScHlPQlRoSDExaFI4VVdiME1ndm9hQldQQnpxck5iSGNvYzFoNjJQbDE5RkFKemVKY1RubzZNUDczUUpLaC9tQW9OdkdaREViRWJKVTlZK0ZWZWlERHJuSWtBbW9aVU9qY0NiM0o5RzBWS3pNRHdsYTBWWXZpbnFXSEpyT05NaUdSZFhRUVZkR1FsSy9wUFd5b3pUc3Q5MG00R0pXUFN6b2FIUzNpeDFoVzREWW01NW5MckpVQ1J6WTBua1hZS3MvaDNmMHJXcEJFRndTQVJ4Mm95Z2s3VnVHaWlKQUVjUG9TRGxveUhSMDBNRUNheVB2RUtKSkREWFZJVmZ0cEZwSEJCM0pZUU5QUm1mK2IwVG5PaForWm9MOGdSZk9ndUtiOHcrTGJJaXY0WEZ0TjVYU0dZRE9DeGd1dlNPQnpLeXZNTWoyRWFGbjlVT0h0alNDVUpnbUVvVUlRMEk4Q3c3c0hCT05PYTU3SFdoNDBrZUVvbDZEajNTU2xOaG1HSlU4T1pOQURGM09tS3BEUzlLbmZZQVc2RkV3SUlZL2xHRkdkbWx0TXZlbmhCZ05NYmgrVHZZNFpCbXpwZmhhMlNaSEQ5c2FkOTBLYnIzTGRaTWRzeGdDV1hsOVpEU25hZDdjMFBTc0ZNaHF6Snd3THo5MXo1WWdPK1VzWStvMjducmprZEhUYVVlekpiTkplTGhTVE1pUkJXSVRqdWl2RGNWK1Z1dWZNa2ZHREUxY3FNRTU2WGRpRnJOeEIzYWxwVWtNTktXSzlhSmVkYUdJQlI0OTdGSDBBTXVhU1VwNVdMUXBpNjUxRDZDL0xjWm1rWEw0TUhvTVl0NHdXZHBXeG9oTTNOd09yOVdhMHYxdnFOenlxOTl0c0o5OXcyMlhkVndFMlV6YTB4NUJjMURVeDliTFlIR1cwZlZyUTVDY2hXeVRBS2h0SGZ4YS9YUmZUMnd3ejk4SHljdzlYaXQydUJaUWVqRSt6UXFqYlE5bVpVYUUySklwRE9uRTRNeUlzUTJxamhhUXQ4NEVZdWZaSXN1aXFOTW1GeWlycW16Q0FqWG9MZkk2bW52c25LWE44M0k0TkI2eUFTMVo1bC9wMDhnRWYreXlrTUx3ME9RRnVZN1lpbFNoRGY0V3lVaHM5dFFXd0ZpL01xSXNFWWlSNGRCZkxZQTlUaWpJbWpHM1RnaGdqbTE1RzlmTnptRGFPMmhaaURZamdHTWsxQW1oU20rTEwrYnhRL094WWNxZG4wTmU1NGFYeHZQVkcwVzJGY29SVEN3VEM4MDlLU0ZwWU1KY05FUmpJMjNKNUJJWHErOVhMekxrT29jSWdjYW9HU0hVNXptaWFSMm5pcnpWREJnTVBRMWdyQkFDRjBGWFZWVlZNMDJkcE5peWx6RXlZYmpsWUJ0SHdOZzdZa3FBR09veUw4T3YwMXVmRkFGWGRWVlZWVjFLNDZBSW9kRDVJZmlXM2w4amRpODA2ZEZ0TVRxeFhPMnRhK0pPcHBEcnFudE5DcWJzMGdYTmQ5QkVZUDhZRmd0anRrM0FlaHVYUUZmVDE3aUZ6aysxUklrcml2dCthQk01SmJaeTZNRE9FdFdUelpCSHFKdnF2UlRCcWF5YkdyU0MxRDdYTHFhZ3E4dGJVUWZyelhMV1lZai8rbDFWa0JzSEJEMTA1akpxMktVOXdoaG9qMjZBQ1dIZ1FZU3pKMXVjWTRnNnltZE15MHFRZ3k2cm1RUG9JTXNqTGVpcG5lc3Bhb3NlcnpNUnpDTFhnU2NFMzBJZVFyUitzdDNPVlZWWFhWckFjTVptQWFGOUdlYjBMR25VUVVUc1pkRDErS3RldHVpZnRTeXBaTnl4NUNGTFpPeDNZMnNDZW91aEc5U2hNR0tQNXJjaGtmSndJVEZ1bmdEb3c0R2VCenYwNnVDTEVCclgzQjdabURTdnVSbzgxQXJYU1RGN3owVVFxYjM3SmQvaWt1VTd3eTRRbEVFZmJCbXFiT254WHpWZUhacEtSZEVzUldObmpFclVYTDE1WDFlSmxVR1hUMTNCMUlFMHk4bEZ5QlRIcTdPeEF6T3pTTDV2MFBVNGxVeEJSMGVYTHhNVHM3WjhYQzJIeUo4ODJCTEp4TkxWWEFXVmVWeG55VDZ5NmxqVDlNaUkwWWRiZkRucFlhdTNnbzZ0aGFaT0xreFQ0MFl4eS9UUDBsRkFUK3ZuL2hzM3A1VHVqTlpac1FwZUluT1VFK0hWMzZhekJsMVhWWFVwcGZTYnF3WTRwMHZLRFIvbG4venFuK21Jb05Pc3BhK2tsUDU4cnoycjc0RVFOMTdkZGMvZi81VE9EblRxUjhKYm52N0kyKzhyaEl1MmxwSmtRWGYvL044Ly90YURIbjM1bG8xMXdjSlhYZUlGVGpLd2Vndm9xcnBjUGZ2YTIvOHdzMXZScnNyWlYzLzczeDg4L2hIVkxUTTRMeStGT212SUR2U29CaTNHait1dis5SDkwSlR5UnZTMGhtbGZ2ZTlmMzN2NDQ5NDVCNlJvNU11Ykg4SVcwTlZtME0rNjQzNXBQSkVLNWo4dmg5MzlpMy9jKyswSFgvdU9hdmRYUFFGZUJsMVBVbmlCdXFtcTY1OXh4OStHTTVkUXRNWlZjcmJ1dXVlUC8vNys5UTk5eTl0TEpxc25YOVRETitycDA2ajNZT25yZm5TLzJrWXdydzA2SnR5Q2ZPZnYvblBuZHg3eW1IZHVkOWhMbHpZZnl1RUoyREY2aEJGdWZ0UVAveElKMm5GdFl0eXdtVGxiNnRlLy9PNHpIL2FtdDIyUEZ1OS8wUXR2bmY5UVBkZWhyZzU1OFJaK0R6TVgwWERRa1hFVkllbGYzcmM5d2xaVlhWZlZpNzljK3VidFQ2dzNPblFEdXQ2Y1hPcjJyYjllUmI1aWhGMHhuVzkrWEZRN3gzZDY3RGNiQXFDZS9PQzNibzBkeTJ1UENJWS9WU3k4ZGxFWjJVTVc1cklNK3F0cHJyaDg5Wlh0RVc5YW1tN3lqbVFEV1Y0WmR3ZEhXYjI4Q0kxdmRjM1hadXIxOUtVbmoyUEtJdEFiUzFPYlVMNWdsUmFYVG1QSG9MOHgvZmFYVWtvcGZlU2xDNVBMQ3RETXR3Z1E0dEw1V2NrOWVxQ2JpUDNlRzFOSzZibHZMS1RMQmFDcjJXTVlTMGx4Ky9XT2JVbDh2MnZDcDl2c1hkZFY5YUZYcEpTKytNUXJoU0M0cUJ1ZmJSRWJSZlB1UldWMmo4SkJmT1dIVTBwZmVFcTEyRDNTT0w2WFdZV1FZVzRZVURvekRMdUF2dUZqS2FYUHZHQlJiVHBMaTlVbEJoS2hPOWcwc052OEpPWkQza3MrbmxMNjNQT0tJSmFBTHRVNmJhdnQyZkY4SGdCcEYwdlgxYVUzcDVRKy82UlN2Ym9iMWR2K084Mk5YREpuQm00NW94bjAxNmMvODRPdlNTbDk1UWxYbHZ2MHJLbEh6MmVpU1JsQURxbmxSaTRzdThjVWRCMXgrdm12WHdNNmJXamN1bjRtTGhZcmdXN282QzA3aVBYbHVZTVlQK096VDF2UWJSVm5McGRuLzFrdTlxZEhNTlN1M2pxQW16bUlYZmZ4MUN1VFI3NTVKTGQxVHBUS1Z6VExVRE4zV1FUNm10dW1CekYvNE4zYm02Mlo0V2M5MSt2bWZZUFJwTlpxN2pUWXF2UEtscjZ0V0VNV1RQZXVWOTIwYmN4Y1BJa2poQmhOTXpQYXVHNWhhL1UwRi9MbUNwNDNmR0tYMmZnNEZIT2tqR3B1dllpT2NaYzBmdVdtRzRZLzVhMGZlUG5MYnEzcTk3ejJodmRWaTFRSWFYTXVDalVRQnZ3ZDRtSWphc2s5VnhsMC80dlhmWHJ5cWVkODZzYXFldk5IUDdsTWhUQTBkeUZSQi9QVm43emwrOXdvSHU4aXB0V1hzZmF2c1VqS2Q0aVFZRXJuRmJTSEM0YU11czQ2N3VWaXF5OFk3a3VTWWhmaElKS09mWUpHL3lyaytGMDR0cG5PTTJoQ1JIdFJmWjRWNHNnWHo2MjNkTHRqNWVhQzArTWJldjFGOEZGUE8wUnVvV0ZMNXh4MFpKR1FYOFV2emVIeE1hL1dta0pnM0xFUWltODZuWC9RSVFETUZCT2xzOEM4Vmw0dmgzUWkvM3FjUTErcnViZU1pSHlEc0U1MUdkY3gzWU9RM2R3T2RWYVkxOGZwSUI3bHM0Tzh5L1pGM0l1WHp2SzErcGNiYkdCcnppbm9jL0o2UUlMK0gxOXRoZE93T2c2Q0FBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCJdLCJhYWd1aWQiOiI5NzBjOGQ5YzE5ZDI0NmFmYWEzMjNmNDQ4ZGI0OWUzNSIsIm9wdGlvbnMiOnsicGxhdCI6dHJ1ZSwicmsiOnRydWUsInVwIjp0cnVlLCJ1diI6dHJ1ZX0sInRyYW5zcG9ydHMiOlsiaW50ZXJuYWwiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotMjU3fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotNjU1MzV9XX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0wMS0yNiJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjQtMDEtMjYifSx7ImFhZ3VpZCI6ImM1NzAzMTE2LTk3MmItNDg1MS1hM2U3LWFlMTI1OTg0MzM5OSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiYzU3MDMxMTYtOTcyYi00ODUxLWEzZTctYWUxMjU5ODQzMzk5IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ik5FT1dBVkUgQmFkZ2VvIEZJRE8yIn0sImRlc2NyaXB0aW9uIjoiTkVPV0FWRSBCYWRnZW8gRklETzIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MiwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNIVENDQWNLZ0F3SUJBZ0lDZGRVd0NnWUlLb1pJemowRUF3SXdlekVMTUFrR0ExVUVCaE1DUmxJeEV6QVJCZ05WQkFvVENrTmxjblJGZFhKdmNHVXhGekFWQmdOVkJBc1REakF3TURJZ05ETTBNakF5TVRnd01TUXdJZ1lEVlFRREV4dERaWEowUlhWeWIzQmxJRVZzYkdsd2RHbGpJRkp2YjNRZ1EwRXhHREFXQmdOVkJHRVREMDVVVWtaU0xUUXpOREl3TWpFNE1EQWVGdzB4T0RBeE1qSXlNekF3TURCYUZ3MHlPREF4TWpJeU16QXdNREJhTUhzeEN6QUpCZ05WQkFZVEFrWlNNUk13RVFZRFZRUUtFd3BEWlhKMFJYVnliM0JsTVJjd0ZRWURWUVFMRXc0d01EQXlJRFF6TkRJd01qRTRNREVrTUNJR0ExVUVBeE1iUTJWeWRFVjFjbTl3WlNCRmJHeHBjSFJwWXlCU2IyOTBJRU5CTVJnd0ZnWURWUVJoRXc5T1ZGSkdVaTAwTXpReU1ESXhPREF3V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVR6MmpOYUtPSy9NS2RXMmZtZTF0cTZHUkV1UHV1S1c5SGdXWWdNUnJqdlpVVE9xTEFOSjNNZDVIcXYxRU4xek1kNGxXdHlmelJsYTdydjVBUkJvT29Ub3pZd05EQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01CRUdBMVVkRGdRS0JBaE5uVFcwYTRFOHVqQU9CZ05WSFE4QkFmOEVCQU1DQVFZd0NnWUlLb1pJemowRUF3SURTUUF3UmdJaEFNcmhiOFNtZk5MZUxOZ2FBVm1RNkFPTWlMTkxWSFgwa0ZVTzgwQ25UMzhFQWlFQXpOQWd2NGRIK0hEaFpTZ1pXSmlhUHUvbmZaVGV1R3k0TXlkUE1xNXVyczQ9IiwiTUlJRU9EQ0NBOTJnQXdJQkFnSURBSW5CTUFvR0NDcUdTTTQ5QkFNQ01Ic3hDekFKQmdOVkJBWVRBa1pTTVJNd0VRWURWUVFLRXdwRFpYSjBSWFZ5YjNCbE1SY3dGUVlEVlFRTEV3NHdNREF5SURRek5ESXdNakU0TURFa01DSUdBMVVFQXhNYlEyVnlkRVYxY205d1pTQkZiR3hwY0hScFl5QlNiMjkwSUVOQk1SZ3dGZ1lEVlFSaEV3OU9WRkpHVWkwME16UXlNREl4T0RBd0hoY05NVGd3TWpJeU1qTXdNREF3V2hjTk1qZ3dNVEl4TWpNd01EQXdXakIwTVFzd0NRWURWUVFHRXdKR1VqRVRNQkVHQTFVRUNoTUtRMlZ5ZEVWMWNtOXdaVEVYTUJVR0ExVUVDeE1PTURBd01pQTBNelF5TURJeE9EQXhIVEFiQmdOVkJBTVRGRU5sY25SRmRYSnZjR1VnU1dSbFkzbHpJRU5CTVJnd0ZnWURWUVJoRXc5T1ZGSkdVaTAwTXpReU1ESXhPREF3V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVNMVkwrMVNUSnZhRVJPNVdDUitqR2NBeEx2bVBCRGlaWTFOZ0ZGSWhwWDZPQVpBcFFZbXQ2eFNoNzRTd00rbWpnbnNTRWNjNEEyVWYxMzlGZ1o0cnBZbzRJQ1ZUQ0NBbEV3RXdZRFZSMGpCQXd3Q29BSVRaMDF0R3VCUExvd1NnWUlLd1lCQlFVSEFRRUVQakE4TURvR0NDc0dBUVVGQnpBQ2hpNW9kSFJ3T2k4dmQzZDNMbU5sY25SbGRYSnZjR1V1Wm5JdmNtVm1aWEpsYm1ObEwyVmpYM0p2YjNRdVkzSjBNRk1HQTFVZElBUk1NRW93U0FZSktvRjZBV2twQVFFQU1Ec3dPUVlJS3dZQkJRVUhBZ0VXTFdoMGRIQnpPaTh2ZDNkM0xtTmxjblJsZFhKdmNHVXVabkl2WTJoaGFXNWxMV1JsTFdOdmJtWnBZVzVqWlRDQ0FXQUdBMVVkSHdTQ0FWY3dnZ0ZUTUQrZ1BhQTdoamxvZEhSd09pOHZkM2QzTG1ObGNuUmxkWEp2Y0dVdVpuSXZjbVZtWlhKbGJtTmxMMk5sY25SbGRYSnZjR1ZmWldOZmNtOXZkQzVqY213d2dZYWdnWU9nZ1lDR2ZteGtZWEE2THk5c1kzSXhMbU5sY25SbGRYSnZjR1V1Wm5JdlkyNDlRMlZ5ZEVWMWNtOXdaU1V5TUVWc2JHbHdkR2xqSlRJd1VtOXZkQ1V5TUVOQkxHOTFQVEF3TURJbE1qQTBNelF5TURJeE9EQXNiejFEWlhKMFJYVnliM0JsTEdNOVJsSS9ZMlZ5ZEdsbWFXTmhkR1ZTWlhadlkyRjBhVzl1VEdsemREQ0JocUNCZzZDQmdJWitiR1JoY0RvdkwyeGpjakl1WTJWeWRHVjFjbTl3WlM1bWNpOWpiajFEWlhKMFJYVnliM0JsSlRJd1JXeHNhWEIwYVdNbE1qQlNiMjkwSlRJd1EwRXNiM1U5TURBd01pVXlNRFF6TkRJd01qRTRNQ3h2UFVObGNuUkZkWEp2Y0dVc1l6MUdVajlqWlhKMGFXWnBZMkYwWlZKbGRtOWpZWFJwYjI1TWFYTjBNQkVHQTFVZERnUUtCQWhEYVFiaFRGdGpjakFPQmdOVkhROEJBZjhFQkFNQ0FRWXdFZ1lEVlIwVEFRSC9CQWd3QmdFQi93SUJBREFLQmdncWhrak9QUVFEQWdOSkFEQkdBaUVBb0VlcEhNQzVYOWpCS2FHcGhjS2ppZGhpTitabno3djNTM2hjMzEvQXVuc0NJUURLcW9nSzJTWk9YWmN2dkhDQjZVUVNhQTBuTG40UlV3eTFndURpdmJaYndnPT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZ0NBSUFBQUQ4R08yakFBQUNxVWxFUVZSSXgyUDgvLzgvQXkwQkV3T053YWdGcEZsdzhjS0Zpckl5UjN0N1MxT3owS0RnQmZQbS8vejVrM2l6dm4zOWxwK1RhMnRsdFdUUklvVG9meGhZdFhLbGxwcTZzcndDQWlrb1JJVkh2SDM3OWo5eDROU3BVMEF0UUkxVzVoWndRYWdQenA4N1YxMVppWEF2SXhqOVp6aDU0a1JOWlJXUlB2ajk2eGNET00wek1US2lCOUc4dVhQLy9mc0hORlJBU0xDK3NYSG03Tmx1YnU0UW0zYnQzTGx1N1ZwaUxHQ0VtY3VJYWNHWlU2ZkI0Y1dRWDFBUUd4L243T0l5YWVvVWJWMGRpSXZhbWx1ZVBYdEdVU1QvK2czMkhTT0Rob1lHUklTRmhhV3BwWVdWbFJVbytPSGpoNmI2Qm9vc2dIdnF6NTgvY0RsOWZmM003Q3dJZTgrZTNhdFhycVFnbWVJb2tES3pzL1gxOUVHeS94azZPem9mUDNwRVdVYkRzQVlZUkMzdGJSd2NIRUQyaC9mdjYycHFDUmVPakNUbVpFMHRyWnk4WEFqNzhLRkR5NVl1SmQ1MFZBc1ljZXBLVFU4M05qV0JxT251N0h4dy93RStPLzdqc2dDMzE1bVptUnVibTluWjJZRnF2bnorMGxCZmh6T2cvcU83bFFtL0IrRUFtSHdMaW9vZ0NvNGNPcnhrMFdJaVBVRWdrcEZCVW5LeW1aazVoTjNUMVhYM3poMWlZb0tKY0RUQkE0cUZ1Ym10bFl1YkM4aisrdlZyVFZVMXFIUWh6UWVNQkh5aHJLeGNXRndNVVhuNjFLbjVjK2RTdjhKSlNFeTB0ckdHc0NmMDk5KzZkUXN1eGNMQ0NySDdQNUlyU1lnRGVLRlMzOVRFeDhzSFpILy85cjJ1R2hGUU42NWZoMlZQTm9xcVRDVWxwZUt5VW1neGZQcE1TV0VSTUFNdVg3YXN2N2NYSXFpbHJZWHdGcnhlZy9xT3VHWlNkRXpNM3QxN0RoMDZDUFQwcGswYk4yM2NDSTlGWUtaSno4aEU5OEhmZjM4aEREWTJkaUw5MGRIZHBhdXJpeGF3ckN5c3JlM3R1bnE2aUxUWDBOQUFUb0lzVHg0L3RuZHdpSXlPQXRZRXhGakF6YzN0NCtzTEpMOTkvUW9zRTBWRlJlM3M3UnRibW9HVkZVcWNqVFlkaDc4RkFJaEJMbE5kN2p1MUFBQUFBRWxGVGtTdVFtQ0MiLCJzdXBwb3J0ZWRFeHRlbnNpb25zIjpbeyJpZCI6ImhtYWMtc2VjcmV0IiwiZmFpbF9pZl91bmtub3duIjpmYWxzZX1dLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCJdLCJleHRlbnNpb25zIjpbImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6ImM1NzAzMTE2OTcyYjQ4NTFhM2U3YWUxMjU5ODQzMzk5Iiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6dHJ1ZSwidXAiOmZhbHNlfSwibWF4TXNnU2l6ZSI6NjQwLCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxXSwidHJhbnNwb3J0cyI6WyJuZmMiLCJ1c2IiXSwiZmlybXdhcmVWZXJzaW9uIjoyfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIxLTA5LTIxIn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMS0wOS0yMSJ9LHsiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjYyODc1NjEyNWUyZjIyNDJhZGJlOTc5Y2YzNDI5OTJlZmMyMWM2ZGUiXSwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiNjI4NzU2MTI1ZTJmMjI0MmFkYmU5NzljZjM0Mjk5MmVmYzIxYzZkZSJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiWXViaUtleSA1IFNlcmllcyB3aXRoIExpZ2h0bmluZyJ9LCJkZXNjcmlwdGlvbiI6Ill1YmlLZXkgNSBTZXJpZXMgd2l0aCBMaWdodG5pbmciLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDczLCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjJ9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50IiwicmVtb3RlX2hhbmRsZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURIakNDQWdhZ0F3SUJBZ0lFRzBCVDl6QU5CZ2txaGtpRzl3MEJBUXNGQURBdU1Td3dLZ1lEVlFRREV5TlpkV0pwWTI4Z1ZUSkdJRkp2YjNRZ1EwRWdVMlZ5YVdGc0lEUTFOekl3TURZek1UQWdGdzB4TkRBNE1ERXdNREF3TURCYUdBOHlNRFV3TURrd05EQXdNREF3TUZvd0xqRXNNQ29HQTFVRUF4TWpXWFZpYVdOdklGVXlSaUJTYjI5MElFTkJJRk5sY21saGJDQTBOVGN5TURBMk16RXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFDL2p3WXVoQlZscWFpWVdFTXNyV0Zpc2dKK1B0TTkxZVNycEk0VEs3VTUzbXdDSWF3U0RIeTh2VW1rNU4yS0FqOWFidlQ5TlA1U01TMWhRaTN1c3hvWUdvblhRZ2ZPNlpYeVVBOWErS0FrcWRGbkJubHl1Z1NlQ09lcDhFZFpGZnNhUkZ0TWprd3o1R2N6MlB5NHZJWXZDZE1IUHR3YXowYlZ1em5ldWVJRXo2VG5RakU2M1JkdDJ6YnduZWJ3VEc1WnliZVdTd2J6eStCSjM0WkhjVWhQQVk4OXlKUVh1RTBJek1aRmNFQmJQTlJiV0VDUktnanEvL3FUOW5tRE9GVmxTUkN0MndpcVBTemx1d24rditzdVFFQnNValRHTUVkMjV0S1hYVGtOVzIxd0lXYnhlU3lVb1RYd0x2R1M2eGx3UVNnTnBrMnFYWXdmOGlYZzdWV1pBZ01CQUFHalFqQkFNQjBHQTFVZERnUVdCQlFnSXZ6MGJOR0poamdwVG9rc3lLcFA5eHY5b0RBUEJnTlZIUk1FQ0RBR0FRSC9BZ0VBTUE0R0ExVWREd0VCL3dRRUF3SUJCakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBanZqdU9NRFNhK0pYRkNMeUJLc3ljWHRCVlpzSjRVZTNMYmFFc1BZNE1ZTi9oSVE1Wk01cDdFamZjbk1HNEN0WWtOc2ZOSGMwQWhCTGRxNDVyblQ4N3EvNk8zdlVFdE5NYWZiaFU2a3RoWDdZKzlYRk45TnBtWXhyK2VrVlk1eE94aThoOUpESWdvTVA0VkIxdVMwYXVuTDFJR3FyTm9vTDltbUZuTDJrTFZWZWU2L1ZSNkM1K0tTVENNQ1dwcE11SklaSUkydjlvNGRrb1o4WTdRUmpRbExmWXpkM3FHdEtidzd4YUYxVXNHLzV4VWIvQnR3YjJYMmc0SW5waUIveXQvM0NwUVhwaVdYL0s0bUJ2VUtpR24wNVpzcWVZMWd4NGcweExCcWNVOXBzbXlQeksrVnNndzJqZVJRNUpsS0R5cUUwaGViZkMxdHZGdTBDQ3JKRmN3PT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZkNBWUFBQUNHVnMrTUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFIWVlBQUIyR0FWMmlFNEVBQUFiTlNVUkJWRmhIcFZkN1ROVjFGRC8zZDU5d2VRU0lnUzlBUUFYY0ZMQVFaaTlmcGVWejF0WS9XVFpyNVd4cGM3VzVrbkxhNWpJM1o4NXNyUzJuTTJzanRXd1pTN0lVSDRINHhDbkVReDREQVpGNzRWN3VzODg1djkvbEluQnZWSi9CNFB2OW51LzVudS81bnZNNTU2ZnpBL1F2MEhiL0lyWDNWRktQbzQ1Y25tNGluVUlXWXdMRlJtWlFVdXdqRkcvTjFpUkhoMUVaME5SVlJ1ZHF0MUJkKzJuU0t5Uy9PaHlzMCtsazNlLzNrUTlxdkQ0WlV0YTRWVlNVdVkwZWlweWlUaEFmb2NvT1JWZ0R1dXczcUtSaUFkM3JiY0V0alRqWUlvZjZXYUhzQ216VlBXQ014K2NnaDh0THFXTUthTVdzVWpMcW8yUnRKSVEwb096bWVycFF1NGVzWmdzT05rR3hIN2Qwa2R2VFQxN3M0T01VN1ZJOFpoamdHYU0rQXE5aUVOdThQaWYxdWR6MDdNd3ZLV2Y4R2xWb0NFWTA0UEM1V2RUYVhZRmJSOHZOdkw1KzNLZ2ZiNXhOTXlhOVJhbUppeW5hTWxHVFZ0RmxyNmJhOXUrcHFuRVg0dU11UlJnalNZRWhyTjd1dEZGZTZscWFsN05ma3c1aW1BR0h5blBwYms4Vm1ZMHhzdG5wdGxGQ1ZDWXR6VHVCTjgzUXBNTGpUdGV2ZFB6U1VuSjdlOG1ranhaMzlmWGJLRGZsZFpxYnZVK1RVZ0duQlZGNmZRMmlQSGc0VzE2VVdVd3Z6YmsxNnNNWkUrUG4wcHZ6N0pTZXVBeWVzOGxjcENtYUt1by9wK3FXcjJVY3dJQUhXcnZQMFlFemhYQXRMQWJzc0hocDdpR2FtdnlpalA4cnlxclhVV1g5WG9vd3h5QXVmTkJycDQzUE9CRlhabGtmOE1EUmlxY3B5b3dBd3B1ejJ4K2ZXdnovRHRkZTlzbXN6eWd0Y1I2QzF3YmR6Qmw2T2xxNVdOWVk0b0dhdGhKTXJrVEV4MGpBUlNIQVZzKzVyWWtRTlhiK1FnZlBMc1E2Z1h5SW5zcmVRZm1wbTdSVkZZZkw4Nm4xZmlVT2tZdlNoa1VQeHZidWt6b3k2SzFpaE0xaG8zWHpXNkV2U2ZYQStkcGlXR2FXZCtkb1h6THptR3dLWUZMQ0FzUkFsUEJBaE1sQ0ZYVTd0QlVWUHI4SGdWY0pIV3ErRjAwcGxyK0RNVGRyUDR6dnhZMTFrTk1oeFQrU2VUR2crZDRWNUxRSml0eVVHSk5COFZGWnNqZ1lCWk0vSUkvWENUa2owcXlET3BGMkFWUTE3Q0lqVXAvRG5UMVVrTDVGNWdkaitzUzF3ZzFnRTNnaWdtNjBmQ1h6U25QWGJ5QVBiSVh2K0lEcEUxNlRoYUhJUzlza3lobG1NRTVGM2NmcUFLaHEyQzBFNVBIMWdZYVhhTFBEa1pHMEhESk9uS1dIcDUxSTB6NVNPdXg4ZTFXQXVaemRIUXJUa3A4VG1qWG9JK2xhMHdHWnN6dWJxYk8zaWZRNkEvVzd2VlNZc1YzbVIwSkt3a0tjNFdIaUJrbVI4STNDQ2dJODdvT0w0cXpUNVArUlVKQmVqRU9nQVBLOGhZUHphdE0rZUlUcDJJTzl5VFFtZXJvbVBSeHgxcXhBY3NpbGUvdWJTZUViY1dRR1lFQ2doY0xZMkh5S2pvZ2pIMjVoTXBqcFV2MU91Z2xpNGVoMmVSdzBPMzJiSmpreXVDZ056ZzB2emxZTVNpU3MwdW9vNE1HN2hNT2pDRWFYMXlGRTBuU3ZqQnp1VG5FcEs4Nlo4SW9xRkFJdWJ3OGtnOUFyRWFSRVdTWkkrakg0WGJwNmc5RTlFbkpUM29hUnpETitNVUpCUURIbjU2YThvVW1FQnVzT3hCcy9ONSt0SkViUGtBRkRqOFVHdk9zL0lXdmNTZ2xHQmh2UzcvRlRZZnBXR1lkRFk4ZlBBeFdTQTM1c1RDNHA0K0xtNEFhcUlvUGVRdGZ1Zks2SmgwWmh4bGJzVVhPU21YTmlmRDVaVEFreURvZmJiY2NseG5BOFdOQXF4Q2JSTnlraFh4UXBhRHc2N2ZYVVlic2lHMEtodHYyb2VJdmg4cmhRTVlPY0VBcVhHL2VJK3puZ09jNXl4cjhxODJJQU0xYy9GTEZPcGxxdTVlRlFYck1aekdjVkNqWWJMV0c1STRCVDFldVJybGJ4dE5PdE1pdERERWhMWElJeW5BQXZ1T0VXRTNYM05kQWZ0OTRWZ2FHNDJYSVF0MFpYNlBlQ0UvcVFGZTlySzZIeDdZVTUwS3ZIN2ZXNGZTK3E3S0tCSnhzZ2dCWDVwU0FHaDFqSXJWaDV6UTZ3M1JmYWFoQlhtL2FDYkNaVGpDVUZVVHlXWnFXOXA2Mk1qSlBYVnFPclBnTU80TnY3NEdrZitvd2Z0TlZCRFFuakZKcUhTdzE3cFh2aFdXNUtacWUvUTQ5Ti9VU1RDQVZXb1FYRklIQkhYWGUzRlByVURzdUdEbXRGL2hIS1RIcGVreGhpQU9QSStTSnE2UzZIRjRJOVlXemtCSlRvNDZpVU16V3A4UGlyL1JpZHVMeEtZc1Nrc1Y4dkxsT1F2aEdYMllsUjBPQmhCakMrdS9nRWN2WTBBcEs3WWs0MU54alBTUW5XRkhURjY2VXJqZ2V2QjhDdTVhK2wydllTUlB0dVZEbzczaGhkTVNIblVYN3RUanNWWkd4QWwvV3B0aU9JRVExZ25MMjltWDYvdFIxdG1sa1lqOFc0WCtDU2pXY1VER1kxTnBTL0M3aFNLcWlNTE0vbDJRbVNXWjczRGR6K2dpbzhCQ0VOWVBRNDZxbmt6d1hVYnF2Qmt4alVRc1dmWkZnYnVvM3JBZit3TjdqT085MCt5bng0UGkzTCswbllMMVNjaERVZ0FQNGdQVi83SWQxcSsxSFNobXVHa0lxV1JQZ3l4TUZxUDhIZmpUbmpYd1k1YlFmYkpjdDZPSXpLZ01Ib3RGL0hlMWVnc2F4SFNxRzZ3ZmRtUTV4OE55VEZGcUJjcDJpU293SFIzeWs1KzM2aEY3dlhBQUFBQUVsRlRrU3VRbUNDIn0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMTAtMTIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDczLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ill1YmlLZXkgNSBTZXJpZXMgd2l0aCBMaWdodG5pbmciLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlUyRjEwMDAyMDI0MTAxMjAwOCIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTA2LTA0IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3MywiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZdWJpS2V5IDUgU2VyaWVzIHdpdGggTGlnaHRuaW5nIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVMkYxMDAwMjAyNDA2MDQwMDMiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0wNi0wNCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzN9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjQtMTEtMTIifSx7ImFhZ3VpZCI6ImM4MGRiZDlhLTUzM2YtNGExNy1iOTQxLTFhMmYxYzdjZWRmZiIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiYzgwZGJkOWEtNTMzZi00YTE3LWI5NDEtMWEyZjFjN2NlZGZmIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkhJRCBDcmVzY2VuZG8gQzMwMDAifSwiZGVzY3JpcHRpb24iOiJISUQgQ3Jlc2NlbmRvIEMzMDAwIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMwLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUMrekNDQXFHZ0F3SUJBZ0lVZEhrWnFvajYyMzlFLzhGUWIrSUpTdUhDYUZVd0NnWUlLb1pJemowRUF3SXdhekVMTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFvTUNraEpSQ0JIYkc5aVlXd3hJakFnQmdOVkJBc01HVUYxZEdobGJuUnBZMkYwYjNJZ1FYUjBaWE4wWVhScGIyNHhJekFoQmdOVkJBTU1Ha1pKUkU4Z1FYUjBaWE4wWVhScGIyNGdVbTl2ZENCRFFTQXlNQjRYRFRJeU1URXdOREl4TURrek5Gb1hEVFEzTVRFd05ESXhNRGt6TkZvd1pqRUxNQWtHQTFVRUJoTUNWVk14RXpBUkJnTlZCQW9NQ2toSlJDQkhiRzlpWVd3eElqQWdCZ05WQkFzTUdVRjFkR2hsYm5ScFkyRjBiM0lnUVhSMFpYTjBZWFJwYjI0eEhqQWNCZ05WQkFNTUZVWkpSRThnUVhSMFpYTjBZWFJwYjI0Z1EwRWdOREJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCSmxVL3R4K0FRa0RlcnN3M3BKMlRDcnNyaW9WV2cvcDNJMTg1ODgzUlBSbzN5dWRkOThqVm5OdHA3RGlHRjdzSnpBaloyaTJYYjN2UFVZSCt1OTBmTG1qZ2dFbU1JSUJJakFPQmdOVkhROEJBZjhFQkFNQ0FZWXdFZ1lEVlIwVEFRSC9CQWd3QmdFQi93SUJBREFmQmdOVkhTTUVHREFXZ0JTNzZEcGw5M3ZCMmg1RkRMdnlNTXZVQnlqM2l6QWRCZ05WSFE0RUZnUVVETCt6cGZyTHVkM3FwalZUK285YzVDMERYNVV3UkFZRFZSMGZCRDB3T3pBNW9EZWdOWVl6YUhSMGNEb3ZMMk55YkM1b2VXUnlZVzUwYVdRdVkyOXRMMFpKUkU5QmRIUmxjM1JoZEdsdmJsSnZiM1JEUVRJdVkzSnNNSFlHQ0NzR0FRVUZCd0VCQkdvd2FEQS9CZ2dyQmdFRkJRY3dBb1l6YUhSMGNEb3ZMMk55YkM1b2VXUnlZVzUwYVdRdVkyOXRMMFpKUkU5QmRIUmxjM1JoZEdsdmJsSnZiM1JEUVRJdWNEZGpNQ1VHQ0NzR0FRVUZCekFCaGhsb2RIUndPaTh2YjJOemNDNW9lV1J5WVc1MGFXUXVZMjl0TUFvR0NDcUdTTTQ5QkFNQ0EwZ0FNRVVDSUJ1Vzlack5yaE5JeFFzZHlFZ05DeG5KbHlyWUdCdTYxSzJ4QSt6QW9weU9BaUVBcHdTM1hSZVBRQVZWR25URGFFMmw5ZnpPSHYwUDJEUFRBODUzOTJWRGJqcz0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBVk1BQUFDc0NBWUFBQURHK0U4TUFBQUFJR05JVWswQUFIb2xBQUNBZ3dBQStmOEFBSURwQUFCMU1BQUE2bUFBQURxWUFBQVhiNUpmeFVZQUFBQUpjRWhaY3dBQUQyQUFBQTlnQVhwNFJZMEFBQXlnU1VSQlZIaGU3WjEvYkpUbEhjQnZqaGpOY0M0TytkWGVYVnRVVE16aVA3b1lYWlk1MUlrS2QxZk5uRkhqNW9oQm1BN2oyTVJzWm9sbXhoaE5Kb3J0MjRLZ3NpRnNpbTdUQWRNWVJGUUVGVGNWeHcvcndBRUZSQ2hRK3V1ZVBjLzFxUVAzVE5zKzMzdmV1K3ZuazN6UzQyZ2ZudmU5dDU4Kzc3M1hJd0VBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFVRXBrRzYvWFBwbklSUjhnSWg1dDQxcjljWWF0QmZ3UDlRM242eDIwVFp0UDFEY3BSTVRQTmRlVTE0dXVWdDJNcTIxRkJreHRNam1yTHBWcTBSODMxMVpYMzJydkxtTUtQMjMwanFtUDNEc05FZkh6ekVXN0V4Zk9HV21MOG9Xa2s4a2YxcVhTUFhYVnFhWEpVYVBPcUttcU9yTXVtZnByYlRMVm5VcWxMcmVmVmtaTW1QMTEvWk9sdzdsekVCRUhvam1yelVaVGJWMytMM1ZqeDA0d0lSMDlldlRKNDFLcEtkb2JqQ05Iamh3MWR1elk1TGgwamRLcjFMUHRwNWNCSnFTc1JoRlIwdDZnenJTVmNYR01EcW1xU1NZeit2WXdFODZhcXRTMXRkWHA2ODN0dWpGalVqVmprNVAxS3JXOTk5UExnVnpVNWR3WmlJZyttcUJlT3FmT2x1WW8wdW4wY1RxbVhmYVB3OHdLMWQ1TzZGUDh0MnJUNlZ2MHpTK2JzUGJlVytya29vK2NPd0VSVWNKY2RNRFc1aWlxcTZ1UEg1ZXE2VnQxRmxhbU9xSTc2MUkxMjA5SjEvUkY5a3ZsRWRQNmhtODdOeDRSVWRKc3d6MjJPcDlpWXFwWG81MzJqMlpsbWovcHBKTytxajkycDhlTU9kM2VmMHg1eERUWHRNKzU0WWlJa3VhaURsdWRJK2s5aFU4bmp0TzNDekUxZDQ0WU1XS012bjNRM0I0K2V2akorbmJmS3JXRTRYV2tpQmpLeTV2UHN1WDVsTHBVYW1adE1yM2YzSzZ0VHI1VHVGTlRsMHcrV3BOSzNhei9ycU8yT2ozTjNsMmlUSTZtT2pjWUViRVk1cHFldGZVNWlycnExRE8xeWRTQmNWV3BHK3hkaWJxcTVBeXpPdFgzTDdSM2xURDEwWExuQmlNaUZzTmNVK0hVM1VWeVZQSU1IZFdWcDlYV3FWTnJhdlA2OXZLcUVWV24ycjh1Y2Vxai9jNE5Sa1FzaHJtb2pGNHZPaENJS1NLRzFIMFJxZ0lncG9nWVVtS0tpQ2dnTVVWRUZKQ1lJaUlLU0V3UkVRVWtwb2lJQWhKVFJFUUJpU2tpb29ERUZCRlJRR0tLaUNnZ01VVkVGSkNZSWlJS1NFd1JFUVVrcG9pSUFoSlRRUzk3V0NVdWVFQWxMcHdkVnZOdjVpTDNuQWJyOXg1MC8xdkY5aUt0YXo0RE1hN0h3RHorcnZuMHg2eCsvT0tZZHpFMDIzR1JQbjdNTVhTcDNpZVRHOTNiWEdrU1V6bHZudnV5aW92anJwem5uTk9nMUFmL3VzMjc3TWhoMmZuSm9kNXZRTmU4K3FQK0pvNkxhZEVxOTV6NjRkZXVYV0JIcVF3NnUzdFVXM3VuMnJ4am4xcTlZYWRhc25xenVxbjVaWFh5TlF0VTR1S0hWQ0pUZ1lFbHBuS2FiNmE0cUpTWWZyVG5RTm5HOUlhSFgzTFBxUitlcUNNelZOaXovN0JhOGRaV2RlVjl6NnZFQkwyS3JaU3dFbE01aWFrL3hIUm8wZG5WbzU1ZDk2RWFmK01pdjZkSlNrRmlLaWN4OVllWURsM2VidG1qenB1MTFPL3hqMU5pS2ljeDlZZVl3aHRiZHFsVHB1cVZxcmtvNTloWEpTc3hsWk9ZK2tOTXd6UHJzVFhxenNWdnFMdVd2S0V5ZHk5VHVYdVdxMTh1ZkwxdzM3MUwxNnNWNjdjVkxpYUZwQ2VmVjQrKytFK1Z1R0MyYzMrVnBNUlVUbUxxRHpFTlQyTENiL1Vxc0ZFbE1nMy9uWk81S0ZTNFR6dEpQeDZYemxGVlV4YXFLWE5XcW8vYkR0dXZMRDY3MjlyVk4zNjZ4SVRxcVAxVmtoSlRPWW1wUDhRMFBJWFhoanJtNUZSSDdaakpEZXFPMzYrMVgxMTh1bnQ2MUMyUHJOYkg1Ukd4TDBXSnFaekUxQjlpR3A0QnhiUlBIYlpKZHkrekk0UmgvZ3Z2RjFiSXp2bVVnc1JVVG1McUR6RU56NkJpYXN3MHFoL3IwLzZRUFBucUIzN0hSekVscG5JU1UzK0lhWGdHSFZOak5sSi8vM0NQSFNrTVQ3L1dVcHBCSmFaeUVsTi9pR2w0dkdLcUhmK1R4WGFrY1B6eEZiMUNMYlhuVUltcG5NVFVIMklhSHQrWW1xaTl0MjJ2SFMwY1AxdndxbnMrY1VsTTVTU20vaERUOEhqSE5CZXA4MjUvMm80V2pudytyOFpQWCt5ZVV4d1NVem1KcVQvRU5EemVNZFYrNWFwSDdHaGgyWGV3UTJUK0loSlRPWW1wUDhRMFBDSXhtbVJPOVQreEk0YmxtVFV0aGRXeGMxNGhKYVp5RWxOL2lHbDRSR0thamRRdDgxNnhJNFpuK0ZXQ3gvOWdKYVp5RWxOL2lHbDRwRTZUejV5eHhJNFludmMvMnR2NzY2K09lUVdUbU1wSlRQMGhwdUdSaXVubzZ4KzNJOGJEaU9zZWRjNHJtTVJVVG1McUR6RU5qMVJNaDEzUmJFZU1CM1BNeHZyY0tUR1ZrNWo2UTB6REl4VlRjeEdxcTd2YmpocWVydTRldVcwWmpNUlVUbUxxRHpFTmoxaUE5SEd6ZGxPckhUVWVicDBmNHd2NWlhbWN4TlFmWWhvZXNaaG1HdFhDbFJ2dHFQR3diYmMrZnVKNmgzNWlLaWN4OVllWWhrY3NwanBpdHoyMnhvNGFEKzBkWFNveE1hYTM2U09tY2hKVGY0aHBlQ1JqR3VkclRmdUk3YW8rTVpVenpwaCs1MWQvVXVmT2VsckViLzc4S2JVaGhqZXVNQkRUOElqRk5LYmYwZjhzdHoyK3hqMi9Za3RNNVl3enBwVUNNUTJQV0V5MTU5eTIxSTRhSDZ2ZTNlNmNXOUVscG5JU1UzK0lhWGdxTGFaYjQ3b0lSVXpsSktiK0VOUHdWRnBNdCs4OTJQdS9xanJtVjFTSnFaekUxQjlpR3A1S2krbXVmZTBxbG5maEo2WnlFbE4vaUdsNEtpMm1oZmM0dmN6akdCcXN4RlJPWXVvUE1RMVB4WjNtZjh4cHZpekV0Q3docHVHcHRKanUySHVJbUlwQ1RNc1NZaHFlU292cEJ6djNtN0E1NTFkVWlhbWNjY2JVdk1IRTYwS3UyYmhUSFdqdnNpT0hoWmlHcDlKaXVtVDFadWZjaWk0eGxUUE9tQjVyZmhLYko5MGx2UGdoOWZyR2VONzloNWlHUnl5bUpmSWJVUFgzTEhmUHI5Z1NVem5qakNtL20yOGxwZ05HTEtZbDhydjVzWnppRzRtcG5NVFVIMklhSHNtWVRvLzV1c0grUTUyOVoxZXUrUlZiWWlvbk1mV0htSVpITEthWlJyWG9wVTEyMUhoWTM3S2JsYWs0eEhUd0V0TkJRVXdiMVlyMTIreW84WEQyektYdXVZV1FtTXBKVFAwaHB1RVJpK25rQnRYNnlTRTdhbmphMnZVcC9pVXh2VEcwa1pqS1NVejlJYWJoa1h6T05FNmVXTFhKUGE5UUVsTTVpYWsveERROFVqRTk4WnI1ZHNUdzlQVGs0M25idlNNbHBuSVNVMytJYVhpa1lucnE5Q2ZzaU9INXk3cC9tWmc1NXhWTVlpb25NZldIbUlaSEpLWTZaSmZjK1p3ZE1TeUhPN3YxTVJQamM2VjlFbE01aWFrL3hEUThJakhOTktvbHE3ZllFY015clhHVmUwNmhKYVp5RWxOL2lHbDRSR0lhMDhXblRkdjN4ZmNpL2M5S1RPVWtwdjRRMC9CSXhIVDh0RVYydEhDMGQralRlMzJzdXVZVGk4UlVUbUxxRHpFTmozZE05U24rM09jMzJOSENZSzdlbnpYelNmZDg0cEtZeWtsTS9TR200ZkdONmZBZnpMTWpoV1BHdkplZGM0bFZZaW9uTWZXSG1JYkhLNmFURzlUY3Y0VmRsZDYrY0kwSmwzcytjVXBNNVNTbS9oRFQ4QXc2cHRsSW5YL0huKzBvWWJpcGVWVTgveVZKZnlTbWNoSlRmNGhwZUFZVjAweURPdmYyWit3SXhhZTdKNjkrTlB2RjBseVI5a2xNNVNTbS9oRFQ4UFE3cGlaaytyVGVIR3YzUHJYZWZuWHhPZGplcWNaTlhlU2VVeWxKVE9Va3B2NFEwL0Frdm5WLzc3c3RmZGFKRDZsaFZ6U3JFNitlcjA2L2FiSEszTDFjL1NId0MvT1h2Ym0xTUEvWFBpczVpYW1jeE5RZllncUdnNGM3MVZYM1AxOVlDYnYyVjBsS1RPVWtwdjRRMDZGTlIxZTNlbmpadXlyeDNRZWMrNm1rSmFaeUVsTi9pT25RcEwyelN6V3QyTkI3U2wvS0Y1aytUMklxSnpIMWg1Z09IZkw1dkhxN1pZK2FNbWVsU2x5Z1Y2TGxHdEUraWFtY3hOUWZZbHJaZk54MldLMTZiNGU2MGJ6VFU3WlJKU1o1UE5hbEpqR1ZjOUp2bHFubGIyNHRYSUVNNmNwMy9xMk8vZjVjNTV3R1phWlJQZmpzUDV6L1ZySDkzY3FOK2h2TTQ2TER4RG5xcFhlM084Y3VwaXZlMnFZdXVlczU5NXo2NFFsWHoxZTc5N2VybHRhMml2RE5MYnZWMmsydGhYM3o2eWZXcW9sM1BxZE9NRC93TDlhbjhmcUh0V3NmbEwzRUZMRUVOS2U0NXVWSVpsVmU3cHJ0TUZmaHkrbEt2SVRFRkJGUlFHS0tpQ2dnTVVWRUZKQ1lJaUlLU0V3UkVRVWtwb2lJQWhKVFJFUUJpU2tpb29ERUZCRlJRR0tLaUNnZ01VVkVGSkNZSWlJS1NFd1JFUVVrcG9pSUFoSlRSRVFCS3phbXVhalZ1Y0dJaU1YeG9LMVBoWkZ0YUhKc0xDSmljY3hGdTJ4OUtvd3Jtc2M3TnhnUnNSaG1vbC9ZK2xRZzVqa00xMFlqSWtxYWkvSzJPaFZLcnVrRjU0WWpJa3FhaTNiWTZsUXd1YWpidWZHSWlCTG10T2ZjZDd3dFRnV1RpNlk3ZHdBaW9vUzVhSm10elJDZ1Buck51Uk1RRVgzTVJxMjJNa09JYk9ORzU4NUFSQnlNdWFZS2ZTbFVmOGhGaS9RT3lPdVZxbnZuSUNKK2tlYktmWDNUV2x1VklVdzJPazJ2VWx1SktpSU8yRnkwTjVGdHVzN1dCQXFZcU5aSDYvVEhmVHFzblluNlpyMnpFQkdQMEt4Q3MxR2Jic1NXUktaaGdxMEhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQnBrVWo4QjRBb20rTWJUKzNKQUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiJjODBkYmQ5YTUzM2Y0YTE3Yjk0MTFhMmYxYzdjZWRmZiIsIm9wdGlvbnMiOnsicmsiOnRydWUsImNsaWVudFBpbiI6dHJ1ZX0sInBpblV2QXV0aFByb3RvY29scyI6WzFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjUsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6ODB9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMy0wMS0yMCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMCwidXJsIjoiaHR0cHM6Ly93d3cuaGlkZ2xvYmFsLmNvbS8iLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IkhJRCBDcmVzY2VuZG8gQzMwMDAiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDIzMDEyMDAwMiIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIzLTAxLTIwIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMwfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIzLTAxLTI0In0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiMDBjNDNmZmNjOGE5Nzc4OGYyOGFlYzA4NjRjMDljZGQzN2FhMzdmOCJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyIwMGM0M2ZmY2M4YTk3Nzg4ZjI4YWVjMDg2NGMwOWNkZDM3YWEzN2Y4Il0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IDUgU2VyaWVzIHdpdGggTGlnaHRuaW5nIChFbnRlcnByaXNlIFByb2ZpbGUpIn0sImRlc2NyaXB0aW9uIjoiWXViaUtleSA1IFNlcmllcyB3aXRoIExpZ2h0bmluZyAoRW50ZXJwcmlzZSBQcm9maWxlKSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzMsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6Mn1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiLCJyZW1vdGVfaGFuZGxlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRE16Q0NBaHVnQXdJQkFnSVVTT0VqVGYvL3lxUmZQVzdRcThxdEl5Q3JBZzh3RFFZSktvWklodmNOQVFFTEJRQXdMekV0TUNzR0ExVUVBd3drV1hWaWFXTnZJRVpKUkU4Z1VtOXZkQ0JEUVNCVFpYSnBZV3dnTkRVd01qQXpOVFUyTUNBWERUSTBNRFV3TVRBd01EQXdNRm9ZRHpJd05qQXdORE13TURBd01EQXdXakF2TVMwd0t3WURWUVFERENSWmRXSnBZMjhnUmtsRVR5QlNiMjkwSUVOQklGTmxjbWxoYkNBME5UQXlNRE0xTlRZd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUUNkdmwyN3cyZ3UxZlBYZUVGYklkcXgwQmFsdlZEVldyUVBKN0hxdml1RXRaSGx4U0x4U0Z0Y1hwVG9sdkx2b2Y4ZjR0TWVyUVRrVkd6Y21Zem0xRUJUNElKdU1tb0VxZmtFRWhXcHNBRE1Gcmpaa3FsWlk5RXF4UXpMb1ZFRW9uRTVvR3hTZFZDeENjTElhY2tweVIvQ0NYdmoxQnQvaFRnRTloVGxGNHBScXhNa3gzcGxGN3k4ZERabFJIV3M3dmJuaG1CQ0dlSTBaUEVRNm5sMm1DZzJyNzRhZEYydTZLOXJyTGZoQkMzUUxFOEVQcmdxVXNJK2hrdXEydEs0TTJTTU9wOHVVVlZrcVVldTNoMGtyM1dWSTBXMDJwa2dyT2dpRktMRk5rU3JiWWhkak1CRGo1aXptcWZjOXhKUktvRFg2MTJxZDhaR1ZIcFQ1QVlGWCsxaEFnTUJBQUdqUlRCRE1CMEdBMVVkRGdRV0JCVFp5VTVEaVEvYTJVRWdFN3FCSzB6aElzUk5SakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VBTUE0R0ExVWREd0VCL3dRRUF3SUJCakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBWHZuQjRTTHVVSmZZTVNWR0Foc3NML1NtV2xpM0ZTY2NneHlkdktsQUNjaWRJSVdLUXFhM3EvUVNVRVF6QzlEZ0VmTWdyN2lDMUJrVFpiSUxib1Y2VVo1a25Oc3ZqRVpXdU1lb2dKOHRnWnMxaFZ2S3daaXp3SittRWNtc2poSXJCWXVvTDFUNnlyT0p2S0ZnMWp2K0N5NFp3QTlCcGsvVjNVT2lyMVZ5SzhkQ3R5SHU2dmZvc290QWRZeDhGQXVSMjQzZ1JUTVY2Sng4SmRpZzJKRElBUU1selZlRHBTVUhYL0sySFhSSHhId2ZnamJnVWpqQnUvNzJyOE9mZWh5aHpIWEkzSzhDRkZkZmxPKzhuRU9KSzN5OEYxaXZnUzV1Ti84U21jWXcvU1RRWXdocnhQdXd6M25QOGJhTXVtNEJCMm5uWW1wQjYwc1gzYmw1azhRVVN3PT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZkNBWUFBQUNHVnMrTUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFIWVlBQUIyR0FWMmlFNEVBQUFiTlNVUkJWRmhIcFZkN1ROVjFGRC8zZDU5d2VRU0lnUzlBUUFYY0ZMQVFaaTlmcGVWejF0WS9XVFpyNVd4cGM3VzVrbkxhNWpJM1o4NXNyUzJuTTJzanRXd1pTN0lVSDRINHhDbkVReDREQVpGNzRWN3VzODg1djkvbEluQnZWSi9CNFB2OW51LzVudS81bnZNNTU2ZnpBL1F2MEhiL0lyWDNWRktQbzQ1Y25tNGluVUlXWXdMRlJtWlFVdXdqRkcvTjFpUkhoMUVaME5SVlJ1ZHF0MUJkKzJuU0t5Uy9PaHlzMCtsazNlLzNrUTlxdkQ0WlV0YTRWVlNVdVkwZWlweWlUaEFmb2NvT1JWZ0R1dXczcUtSaUFkM3JiY0V0alRqWUlvZjZXYUhzQ216VlBXQ014K2NnaDh0THFXTUthTVdzVWpMcW8yUnRKSVEwb096bWVycFF1NGVzWmdzT05rR3hIN2Qwa2R2VFQxN3M0T01VN1ZJOFpoamdHYU0rQXE5aUVOdThQaWYxdWR6MDdNd3ZLV2Y4R2xWb0NFWTA0UEM1V2RUYVhZRmJSOHZOdkw1KzNLZ2ZiNXhOTXlhOVJhbUppeW5hTWxHVFZ0RmxyNmJhOXUrcHFuRVg0dU11UlJnalNZRWhyTjd1dEZGZTZscWFsN05ma3c1aW1BR0h5blBwYms4Vm1ZMHhzdG5wdGxGQ1ZDWXR6VHVCTjgzUXBNTGpUdGV2ZFB6U1VuSjdlOG1ranhaMzlmWGJLRGZsZFpxYnZVK1RVZ0duQlZGNmZRMmlQSGc0VzE2VVdVd3Z6YmsxNnNNWkUrUG4wcHZ6N0pTZXVBeWVzOGxjcENtYUt1by9wK3FXcjJVY3dJQUhXcnZQMFlFemhYQXRMQWJzc0hocDdpR2FtdnlpalA4cnlxclhVV1g5WG9vd3h5QXVmTkJycDQzUE9CRlhabGtmOE1EUmlxY3B5b3dBd3B1ejJ4K2ZXdnovRHRkZTlzbXN6eWd0Y1I2QzF3YmR6Qmw2T2xxNVdOWVk0b0dhdGhKTXJrVEV4MGpBUlNIQVZzKzVyWWtRTlhiK1FnZlBMc1E2Z1h5SW5zcmVRZm1wbTdSVkZZZkw4Nm4xZmlVT2tZdlNoa1VQeHZidWt6b3k2SzFpaE0xaG8zWHpXNkV2U2ZYQStkcGlXR2FXZCtkb1h6THptR3dLWUZMQ0FzUkFsUEJBaE1sQ0ZYVTd0QlVWUHI4SGdWY0pIV3ErRjAwcGxyK0RNVGRyUDR6dnhZMTFrTk1oeFQrU2VUR2crZDRWNUxRSml0eVVHSk5COFZGWnNqZ1lCWk0vSUkvWENUa2owcXlET3BGMkFWUTE3Q0lqVXAvRG5UMVVrTDVGNWdkaitzUzF3ZzFnRTNnaWdtNjBmQ1h6U25QWGJ5QVBiSVh2K0lEcEUxNlRoYUhJUzlza3lobG1NRTVGM2NmcUFLaHEyQzBFNVBIMWdZYVhhTFBEa1pHMEhESk9uS1dIcDUxSTB6NVNPdXg4ZTFXQXVaemRIUXJUa3A4VG1qWG9JK2xhMHdHWnN6dWJxYk8zaWZRNkEvVzd2VlNZc1YzbVIwSkt3a0tjNFdIaUJrbVI4STNDQ2dJODdvT0w0cXpUNVArUlVKQmVqRU9nQVBLOGhZUHphdE0rZUlUcDJJTzl5VFFtZXJvbVBSeHgxcXhBY3NpbGUvdWJTZUViY1dRR1lFQ2doY0xZMkh5S2pvZ2pIMjVoTXBqcFV2MU91Z2xpNGVoMmVSdzBPMzJiSmpreXVDZ056ZzB2emxZTVNpU3MwdW9vNE1HN2hNT2pDRWFYMXlGRTBuU3ZqQnp1VG5FcEs4Nlo4SW9xRkFJdWJ3OGtnOUFyRWFSRVdTWkkrakg0WGJwNmc5RTlFbkpUM29hUnpETitNVUpCUURIbjU2YThvVW1FQnVzT3hCcy9ONSt0SkViUGtBRkRqOFVHdk9zL0lXdmNTZ2xHQmh2UzcvRlRZZnBXR1lkRFk4ZlBBeFdTQTM1c1RDNHA0K0xtNEFhcUlvUGVRdGZ1Zks2SmgwWmh4bGJzVVhPU21YTmlmRDVaVEFreURvZmJiY2NseG5BOFdOQXF4Q2JSTnlraFh4UXBhRHc2N2ZYVVlic2lHMEtodHYyb2VJdmg4cmhRTVlPY0VBcVhHL2VJK3puZ09jNXl4cjhxODJJQU0xYy9GTEZPcGxxdTVlRlFYck1aekdjVkNqWWJMV0c1STRCVDFldVJybGJ4dE5PdE1pdERERWhMWElJeW5BQXZ1T0VXRTNYM05kQWZ0OTRWZ2FHNDJYSVF0MFpYNlBlQ0UvcVFGZTlySzZIeDdZVTUwS3ZIN2ZXNGZTK3E3S0tCSnhzZ2dCWDVwU0FHaDFqSXJWaDV6UTZ3M1JmYWFoQlhtL2FDYkNaVGpDVUZVVHlXWnFXOXA2Mk1qSlBYVnFPclBnTU80TnY3NEdrZitvd2Z0TlZCRFFuakZKcUhTdzE3cFh2aFdXNUtacWUvUTQ5Ti9VU1RDQVZXb1FYRklIQkhYWGUzRlByVURzdUdEbXRGL2hIS1RIcGVreGhpQU9QSStTSnE2UzZIRjRJOVlXemtCSlRvNDZpVU16V3A4UGlyL1JpZHVMeEtZc1Nrc1Y4dkxsT1F2aEdYMllsUjBPQmhCakMrdS9nRWN2WTBBcEs3WWs0MU54alBTUW5XRkhURjY2VXJqZ2V2QjhDdTVhK2wydllTUlB0dVZEbzczaGhkTVNIblVYN3RUanNWWkd4QWwvV3B0aU9JRVExZ25MMjltWDYvdFIxdG1sa1lqOFc0WCtDU2pXY1VER1kxTnBTL0M3aFNLcWlNTE0vbDJRbVNXWjczRGR6K2dpbzhCQ0VOWVBRNDZxbmt6d1hVYnF2Qmt4alVRc1dmWkZnYnVvM3JBZit3TjdqT085MCt5bng0UGkzTCswbllMMVNjaERVZ0FQNGdQVi83SWQxcSsxSFNobXVHa0lxV1JQZ3l4TUZxUDhIZmpUbmpYd1k1YlFmYkpjdDZPSXpLZ01Ib3RGL0hlMWVnc2F4SFNxRzZ3ZmRtUTV4OE55VEZGcUJjcDJpU293SFIzeWs1KzM2aEY3dlhBQUFBQUVsRlRrU3VRbUNDIn0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMTAtMTIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDczLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ill1YmlLZXkgNSBTZXJpZXMgd2l0aCBMaWdodG5pbmcgKEVudGVycHJpc2UgUHJvZmlsZSkiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlUyRjEwMDAyMDI0MTAxMjAwOSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTEwLTEyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3M31dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNC0xMS0xMiJ9LHsiYWFndWlkIjoiMGI4YjA1YTQtZWJkNC00YjBiLThmNWYtMzNkN2I2ZTYwNmFiIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiIwYjhiMDVhNC1lYmQ0LTRiMGItOGY1Zi0zM2Q3YjZlNjA2YWIiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiSElEIENyZXNjZW5kbyA0MDAwIn0sImRlc2NyaXB0aW9uIjoiSElEIENyZXNjZW5kbyA0MDAwIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjI2MjY1NiwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9LHsibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQy9EQ0NBcUdnQXdJQkFnSVVZdkNhL3RRdE1BSFg3NXFWUDlRaVZua1YvYTh3Q2dZSUtvWkl6ajBFQXdJd2F6RUxNQWtHQTFVRUJoTUNWVk14RXpBUkJnTlZCQW9NQ2toSlJDQkhiRzlpWVd3eElqQWdCZ05WQkFzTUdVRjFkR2hsYm5ScFkyRjBiM0lnUVhSMFpYTjBZWFJwYjI0eEl6QWhCZ05WQkFNTUdrWkpSRThnUVhSMFpYTjBZWFJwYjI0Z1VtOXZkQ0JEUVNBeU1CNFhEVEkwTURVd01qRTVNVE15TUZvWERUUTVNRFV3TWpFNU1UTXlNRm93WmpFTE1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBb01Da2hKUkNCSGJHOWlZV3d4SWpBZ0JnTlZCQXNNR1VGMWRHaGxiblJwWTJGMGIzSWdRWFIwWlhOMFlYUnBiMjR4SGpBY0JnTlZCQU1NRlVaSlJFOGdRWFIwWlhOMFlYUnBiMjRnUTBFZ05qQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJMUjBzU2FDVWlRelgwWXZOYnN4alpQcTJvUktrMXBmT2VsREw2QXNMdVp2WWtrUEt3bHlSejhsTlByU21hVmVWM2dSeXBKbDliRGY0ZHRtdjBNbjVZeWpnZ0VtTUlJQklqQU9CZ05WSFE4QkFmOEVCQU1DQVlZd0VnWURWUjBUQVFIL0JBZ3dCZ0VCL3dJQkFEQWZCZ05WSFNNRUdEQVdnQlM3NkRwbDkzdkIyaDVGREx2eU1NdlVCeWozaXpBZEJnTlZIUTRFRmdRVWtjek9NQ3c3aFBuNDB6WnNoQ2Fhc0dRS3ZXTXdSQVlEVlIwZkJEMHdPekE1b0RlZ05ZWXphSFIwY0RvdkwyTnliQzVvZVdSeVlXNTBhV1F1WTI5dEwwWkpSRTlCZEhSbGMzUmhkR2x2YmxKdmIzUkRRVEl1WTNKc01IWUdDQ3NHQVFVRkJ3RUJCR293YURBL0JnZ3JCZ0VGQlFjd0FvWXphSFIwY0RvdkwyTnliQzVvZVdSeVlXNTBhV1F1WTI5dEwwWkpSRTlCZEhSbGMzUmhkR2x2YmxKdmIzUkRRVEl1Y0Rkak1DVUdDQ3NHQVFVRkJ6QUJoaGxvZEhSd09pOHZiMk56Y0M1b2VXUnlZVzUwYVdRdVkyOXRNQW9HQ0NxR1NNNDlCQU1DQTBrQU1FWUNJUURhRWNGSW03bDdicHZ0UVF2WHZkRVkvK0c0R0hZVGRybkJDWWY5am1Pc293SWhBSkl5RnJUTWI1Tkl6QUkvL1dET3NZcmxrRFBwZlVQTGl4WjBhK29lQ21SUCJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFWTUFBQUNzQ0FZQUFBREcrRThNQUFBQUlHTklVazBBQUhvbEFBQ0Fnd0FBK2Y4QUFJRHBBQUIxTUFBQTZtQUFBRHFZQUFBWGI1SmZ4VVlBQUFBSmNFaFpjd0FBRDJBQUFBOWdBWHA0UlkwQUFBeWdTVVJCVkhoZTdaMS9iSlRsSGNCdmpoak5jQzRPK2RYZVhWdFVUTXppUDdvWVhaWTUxSWtLZDFmTm5GSGo1b2hCbUE3ajJNUnNab2xteGhoTkpvcnQyNEtnc2lGc2ltN1RBZE1ZUkZRRUZUY1Z4dy9yd0FFRlJDaFErdXVlUGMvMXFRUDNUTnMrMzN2ZXUrdm5rM3pTNDJnZm52ZTl0NTgrNzczWEl3RUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVVFcGtHNi9YUHBuSVJSOGdJaDV0NDFyOWNZYXRCZndQOVEzbjZ4MjBUWnRQMURjcFJNVFBOZGVVMTR1dVZ0Mk1xMjFGQmt4dE1qbXJMcFZxMFI4MzExWlgzMnJ2TG1NS1AyMzBqcW1QM0RzTkVmSHp6RVc3RXhmT0dXbUw4b1drazhrZjFxWFNQWFhWcWFYSlVhUE9xS21xT3JNdW1mcHJiVExWblVxbExyZWZWa1pNbVAxMS9aT2x3N2x6RUJFSG9qbXJ6VVpUYlYzK0wzVmp4MDR3SVIwOWV2VEo0MUtwS2RvYmpDTkhqaHcxZHV6WTVMaDBqZEtyMUxQdHA1Y0JKcVNzUmhGUjB0Nmd6clNWY1hHTURxbXFTU1l6K3ZZd0U4NmFxdFMxdGRYcDY4M3R1akZqVWpWams1UDFLclc5OTlQTGdWelU1ZHdaaUlnK21xQmVPcWZPbHVZbzB1bjBjVHFtWGZhUHc4d0sxZDVPNkZQOHQyclQ2VnYwelMrYnNQYmVXK3Jrb28rY093RVJVY0pjZE1EVzVpaXFxNnVQSDVlcTZWdDFGbGFtT3FJNzYxSTEyMDlKMS9SRjlrdmxFZFA2aG04N054NFJVZEpzd3oyMk9wOWlZcXBYbzUzMmoyWmxtai9wcEpPK3FqOTJwOGVNT2QzZWYweDV4RFRYdE0rNTRZaUlrdWFpRGx1ZEkrazloVThuanRPM0N6RTFkNDRZTVdLTXZuM1EzQjQrZXZqSituYmZLcldFNFhXa2lCakt5NXZQc3VYNWxMcFVhbVp0TXIzZjNLNnRUcjVUdUZOVGwwdytXcE5LM2F6L3JxTzJPajNOM2wyaVRJNm1PamNZRWJFWTVwcWV0ZlU1aXJycTFETzF5ZFNCY1ZXcEcreGRpYnFxNUF5ek90WDNMN1IzbFREMTBYTG5CaU1pRnNOY1UrSFUzVVZ5VlBJTUhkV1ZwOVhXcVZOcmF2UDY5dktxRVZXbjJyOHVjZXFqL2M0TlJrUXNocm1vakY0dk9oQ0lLU0tHMUgwUnFnSWdwb2dZVW1LS2lDZ2dNVVZFRkpDWUlpSUtTRXdSRVFVa3BvaUlBaEpUUkVRQmlTa2lvb0RFRkJGUlFHS0tpQ2dnTVVWRUZKQ1lJaUlLU0V3UkVRVWtwb2lJQWhKVFFTOTdXQ1V1ZUVBbExwd2RWdk52NWlMM25BYnI5eDUwLzF2RjlpS3RhejRETWE3SHdEeitydm4weDZ4Ky9PS1lkekUwMjNHUlBuN01NWFNwM2llVEc5M2JYR2tTVXpsdm52dXlpb3ZqcnB6bm5OT2cxQWYvdXMyNzdNaGgyZm5Kb2Q1dlFOZTgrcVArSm82TGFkRXE5NXo2NGRldVhXQkhxUXc2dTN0VVczdW4ycnhqbjFxOVlhZGFzbnF6dXFuNVpYWHlOUXRVNHVLSFZDSlRnWUVscG5LYWI2YTRxSlNZZnJUblFObkc5SWFIWDNMUHFSK2VxQ016Vk5pei83QmE4ZFpXZGVWOXo2dkVCTDJLclpTd0VsTTVpYWsveEhSbzBkblZvNTVkOTZFYWYrTWl2NmRKU2tGaUtpY3g5WWVZRGwzZWJ0bWp6cHUxMU8veGoxTmlLaWN4OVllWXdodGJkcWxUcHVxVnFya281OWhYSlNzeGxaT1kra05Nd3pQcnNUWHF6c1Z2cUx1V3ZLRXlkeTlUdVh1V3ExOHVmTDF3MzcxTDE2c1Y2N2NWTGlhRnBDZWZWNCsrK0UrVnVHQzJjMytWcE1SVVRtTHFEekVOVDJMQ2IvVXFzRkVsTWczL25aTzVLRlM0VHp0SlB4Nlh6bEZWVXhhcUtYTldxby9iRHR1dkxENjcyOXJWTjM2NnhJVHFxUDFWa2hKVE9ZbXBQOFEwUElYWGhqcm01RlJIN1pqSkRlcU8zNisxWDExOHVudDYxQzJQck5iSDVSR3hMMFdKcVp6RTFCOWlHcDRCeGJSUEhiWkpkeSt6STRSaC9ndnZGMWJJenZtVWdzUlVUbUxxRHpFTno2Qmlhc3cwcWgvcjAvNlFQUG5xQjM3SFJ6RWxwbklTVTMrSWFYZ0dIVk5qTmxKLy8zQ1BIU2tNVDcvV1VwcEJKYVp5RWxOL2lHbDR2R0txSGYrVHhYYWtjUHp4RmIxQ0xiWG5VSW1wbk1UVUgySWFIdCtZbXFpOXQyMnZIUzBjUDF2d3FucytjVWxNNVNTbS9oRFQ4SGpITkJlcDgyNS8ybzRXam53K3I4WlBYK3llVXh3U1V6bUpxVC9FTkR6ZU1kVis1YXBIN0doaDJYZXdRMlQrSWhKVE9ZbXBQOFEwUENJeG1tUk85VCt4STRibG1UVXRoZFd4YzE0aEphWnlFbE4vaUdsNFJHS2FqZFF0ODE2eEk0Wm4rRldDeC85Z0phWnlFbE4vaUdsNHBFNlR6NXl4eEk0WW52Yy8ydHY3NjYrT2VRV1RtTXBKVFAwaHB1R1JpdW5vNngrM0k4YkRpT3NlZGM0cm1NUlVUbUxxRHpFTmoxUk1oMTNSYkVlTUIzUE14dnJjS1RHVms1ajZRMHpESXhWVGN4R3FxN3ZiamhxZXJ1NGV1VzBaak1SVVRtTHFEekVOajFpQTlIR3pkbE9ySFRVZWJwMGY0d3Y1aWFtY3hOUWZZaG9lc1pobUd0WENsUnZ0cVBHd2JiYytmdUo2aDM1aUtpY3g5WWVZaGtjc3BqcGl0ejIyeG80YUQrMGRYU294TWFhMzZTT21jaEpUZjRocGVDUmpHdWRyVGZ1STdhbytNWlV6enBoKzUxZC9VdWZPZWxyRWIvNzhLYlVoaGpldU1CRFQ4SWpGTktiZjBmOHN0ejIreGoyL1lrdE01WXd6cHBVQ01RMlBXRXkxNTl5MjFJNGFINnZlM2U2Y1c5RWxwbklTVTMrSWFYZ3FMYVpiNDdvSVJVemxKS2IrRU5Qd1ZGcE10Kzg5MlB1L3Fqcm1WMVNKcVp6RTFCOWlHcDVLaSttdWZlMHFsbmZoSjZaeUVsTi9pR2w0S2kybWhmYzR2Y3pqR0Jxc3hGUk9ZdW9QTVExUHhaM21mOHhwdml6RXRDd2hwdUdwdEpqdTJIdUltSXBDVE1zU1locWVTb3ZwQnp2M203QTU1MWRVaWFtY2NjYlV2TUhFNjBLdTJiaFRIV2p2c2lPSGhaaUdwOUppdW1UMVp1ZmNpaTR4bFRQT21CNXJmaEtiSjkwbHZQZ2g5ZnJHZU43OWg1aUdSeXltSmZJYlVQWDNMSGZQcjlnU1V6bmpqQ20vbTI4bHBnTkdMS1lsOHJ2NXNaemlHNG1wbk1UVUgySWFIc21ZVG8vNXVzSCtRNTI5WjFldStSVmJZaW9uTWZXSG1JWkhMS2FaUnJYb3BVMTIxSGhZMzdLYmxhazR4SFR3RXROQlFVd2IxWXIxMit5bzhYRDJ6S1h1dVlXUW1NcEpUUDBocHVFUmkrbmtCdFg2eVNFN2FuamEydlVwL2lVeHZURzBrWmpLU1V6OUlhYmhrWHpPTkU2ZVdMWEpQYTlRRWxNNWlhay94RFE4VWpFOThacjVkc1R3OVBUazQzbmJ2U01scG5JU1UzK0lhWGlrWW5ycTlDZnNpT0g1eTdwL21aZzU1eFZNWWlvbk1mV0htSVpISktZNlpKZmMrWndkTVN5SE83djFNUlBqYzZWOUVsTTVpYWsveERROElqSE5OS29scTdmWUVjTXlyWEdWZTA2aEphWnlFbE4vaUdsNFJHSWEwOFduVGR2M3hmY2kvYzlLVE9Va3B2NFEwL0JJeEhUOHRFVjJ0SEMwZCtqVGUzMnN1dVlUaThSVVRtTHFEekVOajNkTTlTbiszT2MzMk5IQ1lLN2Vuelh6U2ZkODRwS1l5a2xNL1NHbTRmR042ZkFmekxNamhXUEd2SmVkYzRsVllpb25NZldIbUliSEs2YVRHOVRjdjRWZGxkNitjSTBKbDNzK2NVcE01U1NtL2hEVDhBdzZwdGxJblgvSG4rMG9ZYmlwZVZVOC95VkpmeVNtY2hKVGY0aHBlQVlWMDB5RE92ZjJaK3dJeGFlN0o2OStOUHZGMGx5UjlrbE01U1NtL2hEVDhQUTdwaVprK3JUZUhHdjNQclhlZm5YeE9kamVxY1pOWGVTZVV5bEpUT1VrcHY0UTAvQWt2blYvNzdzdGZkYUpENmxoVnpTckU2K2VyMDYvYWJISzNMMWMvU0h3Qy9PWHZibTFNQS9YUGlzNWlhbWN4TlFmWWdxR2c0YzcxVlgzUDE5WUNidjJWMGxLVE9Va3B2NFEwNkZOUjFlM2Vualp1eXJ4M1FlYys2bWtKYVp5RWxOL2lPblFwTDJ6U3pXdDJOQjdTbC9LRjVrK1QySXFKekgxaDVnT0hmTDV2SHE3WlkrYU1tZWxTbHlnVjZMbEd0RStpYW1jeE5RZllsclpmTngyV0sxNmI0ZTYwYnpUVTdaUkpTWjVQTmFsSmpHVmM5SnZscW5sYjI0dFhJRU02Y3AzL3EyTy9mNWM1NXdHWmFaUlBmanNQNXovVnJIOTNjcU4raHZNNDZMRHhEbnFwWGUzTzhjdXBpdmUycVl1dWVzNTk1ejY0UWxYejFlNzk3ZXJsdGEyaXZETkxidlYyazJ0aFgzejZ5Zldxb2wzUHFkT01EL3dMOWFuOGZxSHRXc2ZsTDNFRkxFRU5LZTQ1dVZJWmxWZTdwcnRNRmZoeStsS3ZJVEVGQkZSUUdLS2lDZ2dNVVZFRkpDWUlpSUtTRXdSRVFVa3BvaUlBaEpUUkVRQmlTa2lvb0RFRkJGUlFHS0tpQ2dnTVVWRUZKQ1lJaUlLU0V3UkVRVWtwb2lJQWhKVFJFUUJLemFtdWFqVnVjR0lpTVh4b0sxUGhaRnRhSEpzTENKaWNjeEZ1Mng5S293cm1zYzdOeGdSc1JobW9sL1krbFFnNWprTTEwWWpJa3FhaS9LMk9oVktydWtGNTRZaklrcWFpM2JZNmxRd3VhamJ1ZkdJaUJMbXRPZmNkN3d0VGdXVGk2WTdkd0Fpb29TNWFKbXR6UkNnUG5yTnVSTVFFWDNNUnEyMk1rT0liT05HNTg1QVJCeU11YVlLZlNsVWY4aEZpL1FPeU91VnFudm5JQ0ora2ViS2ZYM1RXbHVWSVV3Mk9rMnZVbHVKS2lJTzJGeTBONUZ0dXM3V0JBcVlxTlpINi9USGZUcXNuWW42WnIyekVCR1AwS3hDczFHYmJzU1dSS1poZ3EwSEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVCcGtVajhCNEFvbStNYlQrM0pBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiMGI4YjA1YTRlYmQ0NGIwYjhmNWYzM2Q3YjZlNjA2YWIiLCJvcHRpb25zIjp7InJrIjp0cnVlLCJjbGllbnRQaW4iOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOnRydWUsImFsd2F5c1V2IjpmYWxzZX0sIm1heE1zZ1NpemUiOjUxMCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0IjoxLCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjk0LCJ0cmFuc3BvcnRzIjpbIm5mYyJdLCJmb3JjZVBJTkNoYW5nZSI6ZmFsc2UsIm1pblBJTkxlbmd0aCI6NCwiZmlybXdhcmVWZXJzaW9uIjoyNjI2NTYsInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjozMH19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDI2LTAxLTE0IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjI2MjY1NiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJISUQgQ3Jlc2NlbmRvIDQwMDAiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI2MDExNDAwMiIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUHJvZmlsZXMiOlsiY29uc3VtZXIiXSwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNi0wMS0xNCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyNjI2NTZ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjYtMDItMTMifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyI4ZDhlY2M0ZGFmNDMyNDQwNmE0ZDdlMGNmODVmNWU3ZGFjNjVlMjA1IiwiOGE2NTg3ODc2ZTIyNTRhN2VkOTM2ZmFlN2U4NjRiNjBhOWExNzBlNyJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyI4ZDhlY2M0ZGFmNDMyNDQwNmE0ZDdlMGNmODVmNWU3ZGFjNjVlMjA1IiwiOGE2NTg3ODc2ZTIyNTRhN2VkOTM2ZmFlN2U4NjRiNjBhOWExNzBlNyJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiRmVpdGlhbiBlUGFzcyBGSURPLU5GQyhDVEFQMi4xLCBDVEFQMi4wLCBVMkYpIn0sImRlc2NyaXB0aW9uIjoiRmVpdGlhbiBlUGFzcyBGSURPLU5GQyhDVEFQMi4xLCBDVEFQMi4wLCBVMkYpIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6Mn1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiLCJyZW1vdGVfaGFuZGxlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDWERDQ0FiMmdBd0lCQWdJUUdnSHRVVnVubWlPdTIxcUpMeXhpb0RBS0JnZ3Foa2pPUFFRREF6QkxNUXN3Q1FZRFZRUUdFd0pWVXpFZE1Cc0dBMVVFQ2d3VVJtVnBkR2xoYmlCVVpXTm9ibTlzYjJkcFpYTXhIVEFiQmdOVkJBTU1GRVpGU1ZSSlFVNGdSa2xFVHlCU2IyOTBJRU5CTUNBWERUSTFNREV3TVRBd01EQXdNRm9ZRHpJeE1EQXhNak14TWpNMU9UVTVXakJKTVFzd0NRWURWUVFHRXdKVlV6RWRNQnNHQTFVRUNnd1VSbVZwZEdsaGJpQlVaV05vYm05c2IyZHBaWE14R3pBWkJnTlZCQU1NRWtaRlNWUkpRVTRnUmtsRVR5QkRRU0F3TWpCMk1CQUdCeXFHU000OUFnRUdCU3VCQkFBaUEySUFCRzBPWjY5S3RacXdtRG9oQlNHS290MGZZUmpGckVxWTM0VlpwclBBV3FXaklFUWh6ZnVBNTRmRkdRaTRHckFjTFQ3U2Z0MGJMZWJuK3FhQTVhTHRRY0lHSlA2djlOU0kvK0FNSlN1Ny96MEhYVVlUSklycVZwRmpSeStNeXd2aXNLTm1NR1F3SFFZRFZSME9CQllFRkNqQXpnVG1nUGRmQ3pVRUZ0dVVpNk5WeTNCSU1COEdBMVVkSXdRWU1CYUFGSk84WnJnemtSNnNMbGVCMGpIV0N5M1NlZDdQTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0VHTUFvR0NDcUdTTTQ5QkFNREE0R01BRENCaUFKQ0FYQ1lDR01XSFYycTZ3dkcycGxlR2VzSWNQZlV3ajZrMWN6Z3Irbkhjbk13YUxkcUFEMC8rcGZNRXJKcEhqTGFDaGhSZHpxTW1jRFRzSVNqamtrOGJTZHpBa0lCMkFTcTlkdk5MbWRWSTZKYVB4L1ltQUJ1endIdDh0Q2lGek5uKzU4OWJGK0JDOXp0UDN4M3pNNGVnQ3dQSzh2MDZTN2JNcGhQRHp1MkJyT1hQNllTa0dRPSIsIk1JSUNYekNDQWNHZ0F3SUJBZ0lRWmxyZ1g3aHVmdmxsaVUvekdYaGl4REFLQmdncWhrak9QUVFEQkRCTE1Rc3dDUVlEVlFRR0V3SlZVekVkTUJzR0ExVUVDZ3dVUm1WcGRHbGhiaUJVWldOb2JtOXNiMmRwWlhNeEhUQWJCZ05WQkFNTUZFWkZTVlJKUVU0Z1JrbEVUeUJTYjI5MElFTkJNQ0FYRFRJMU1ERXdNVEF3TURBd01Gb1lEekl4TWpReE1qTXhNak0xT1RVNVdqQkxNUXN3Q1FZRFZRUUdFd0pWVXpFZE1Cc0dBMVVFQ2d3VVJtVnBkR2xoYmlCVVpXTm9ibTlzYjJkcFpYTXhIVEFiQmdOVkJBTU1GRVpGU1ZSSlFVNGdSa2xFVHlCU2IyOTBJRU5CTUlHYk1CQUdCeXFHU000OUFnRUdCU3VCQkFBakE0R0dBQVFBTTNLNFJsYmdLeEJzZkNqR1VRdFNLNjFKQ2FvTStabFhCYThTeE9Id0FJcWJIYTEraTdFbzIzUkd4cmZCeDhlVUJEZUV3U0xZNnlOaE1zWU1jbmh6WDhBQmVhMkdBeTVBeWQvMG8weVRYdDROS09nUlZrdHVXN2ZiQUtwT29iQWVyRGs3ck5PRmo1S0lhZmNYeW00eEFmRHBYRVBJTGlxWEZweXlSclJNay9NRGF5T2pRakJBTUIwR0ExVWREZ1FXQkJTVHZHYTRNNUVlckM1WGdkSXgxZ3N0MG5uZXp6QVBCZ05WSFJNQkFmOEVCVEFEQVFIL01BNEdBMVVkRHdFQi93UUVBd0lCQmpBS0JnZ3Foa2pPUFFRREJBT0Jpd0F3Z1ljQ1FnRmVSQ1hJeEk0bGhzSnM3NksrWlZGV2gzYlRtY3JZRTR5MzZYZGE4OUxHMVdqY3htS3YxQVF1cUZOM1BRbG94UmpmeGZoRk9xTGtxNWtHd0hSMlNhc2M4QUpCU2VVTlNqc0dVdE9PYkw2RTlsMVpmOXdrN1JTV3hIdGxzSDBHalNyRjBDYjJHV0kwMlZLTFdXUHdlWFpTSW5acHdsTnpyQ0JFTnBjRG0xNC9PeVVQV1VnPSIsIk1JSUIyVENDQVg2Z0F3SUJBZ0lRRlFOS1crN3piZy83ZCtsVHlySVd3REFLQmdncWhrak9QUVFEQWpCTE1Rc3dDUVlEVlFRR0V3SlZVekVkTUJzR0ExVUVDZ3dVUm1WcGRHbGhiaUJVWldOb2JtOXNiMmRwWlhNeEhUQWJCZ05WQkFNTUZFWmxhWFJwWVc0Z1JrbEVUeUJTYjI5MElFTkJNQ0FYRFRJeU1EWXdPREF3TURBd01Gb1lEekl3TlRJd05qQTNNak0xT1RVNVdqQkxNUXN3Q1FZRFZRUUdFd0pWVXpFZE1Cc0dBMVVFQ2d3VVJtVnBkR2xoYmlCVVpXTm9ibTlzYjJkcFpYTXhIVEFiQmdOVkJBTU1GRVpsYVhScFlXNGdSa2xFVHlCU2IyOTBJRU5CTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFc0ZZRUVoaUp1cXFuTWdRalNpaXZCalY3REdDVGY0WEJCSC9CN3V2WnNLeFhTaEYwTDh1RElTV1V2Y0V4aXhSczZnQjNvbGRTcmpveDZMOFQ5NE5PenFOQ01FQXdIUVlEVlIwT0JCWUVGRXU5aHlZUnJSeUp6d1JZdm5EU0NJeHJGaU8zTUE4R0ExVWRFd0VCL3dRRk1BTUJBZjh3RGdZRFZSMFBBUUgvQkFRREFnRUdNQW9HQ0NxR1NNNDlCQU1DQTBrQU1FWUNJUUNCME5GUVNOMHo0bFd6L3ljMzZld3JUQ3p0dEsvcUZ2bGFQT0toK1QxbzZ3SWhBUDBvS0tBK2NpY3NEeTNZM24rVmxQOGVCM1BCek1raHZXLzlJU1hDdytWQiJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFGQUFBQUFVQ0FNQUFBQXRCa3JsQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUJIWnBWRmgwV0UxTU9tTnZiUzVoWkc5aVpTNTRiWEFBQUFBQUFEdy9lSEJoWTJ0bGRDQmlaV2RwYmowaTc3dS9JaUJwWkQwaVZ6Vk5NRTF3UTJWb2FVaDZjbVZUZWs1VVkzcHJZemxrSWo4K0lEeDRPbmh0Y0cxbGRHRWdlRzFzYm5NNmVEMGlZV1J2WW1VNmJuTTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlrRmtiMkpsSUZoTlVDQkRiM0psSURVdU5pMWpNREUwSURjNUxqRTFOamM1Tnl3Z01qQXhOQzh3T0M4eU1DMHdPVG8xTXpvd01pQWdJQ0FnSUNBZ0lqNGdQSEprWmpwU1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJajRnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJZ2VHMXNibk02ZUcxd1BTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGh0Ykc1ek9uQm9iM1J2YzJodmNEMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzl3YUc5MGIzTm9iM0F2TVM0d0x5SWdlRzFzYm5NNmVHMXdUVTA5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5dGJTOGlJSGh0Ykc1ek9uTjBVbVZtUFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdmMxUjVjR1V2VW1WemIzVnlZMlZTWldZaklpQjRiWEE2UTNKbFlYUnZjbFJ2YjJ3OUlrRmtiMkpsSUZCb2IzUnZjMmh2Y0NCRFF5QXlNREUwSUNoTllXTnBiblJ2YzJncElpQjRiWEE2UTNKbFlYUmxSR0YwWlQwaU1qQXhOaTB4TWkwek1GUXhORG96TXpvd09Dc3dPRG93TUNJZ2VHMXdPazF2WkdsbWVVUmhkR1U5SWpJd01UWXRNVEl0TXpCVU1EYzZNekU2TlRrck1EZzZNREFpSUhodGNEcE5aWFJoWkdGMFlVUmhkR1U5SWpJd01UWXRNVEl0TXpCVU1EYzZNekU2TlRrck1EZzZNREFpSUdSak9tWnZjbTFoZEQwaWFXMWhaMlV2Y0c1bklpQndhRzkwYjNOb2IzQTZTR2x6ZEc5eWVUMGlNakF4TmkweE1pMHpNRlF4TlRvek1Eb3lOeXN3T0Rvd01DWWplRGs3NXBhSDVMdTJJT2FjcXVhZ2grbWltQzB4SU9XM3N1YUprK1c4Z0NZamVFRTdJaUI0YlhCTlRUcEpibk4wWVc1alpVbEVQU0o0YlhBdWFXbGtPakpGTnpGQ1JrWkRRelkzUmpFeFJUWTVOemhFUVRsRFFrSTJORFl6Umprd0lpQjRiWEJOVFRwRWIyTjFiV1Z1ZEVsRVBTSjRiWEF1Wkdsa09qSkZOekZDUmtaRVF6WTNSakV4UlRZNU56aEVRVGxEUWtJMk5EWXpSamt3SWo0Z1BIaHRjRTFOT2tSbGNtbDJaV1JHY205dElITjBVbVZtT21sdWMzUmhibU5sU1VROUluaHRjQzVwYVdRNk1rVTNNVUpHUmtGRE5qZEdNVEZGTmprM09FUkJPVU5DUWpZME5qTkdPVEFpSUhOMFVtVm1PbVJ2WTNWdFpXNTBTVVE5SW5odGNDNWthV1E2TWtVM01VSkdSa0pETmpkR01URkZOamszT0VSQk9VTkNRalkwTmpOR09UQWlMejRnUEM5eVpHWTZSR1Z6WTNKcGNIUnBiMjQrSUR3dmNtUm1PbEpFUmo0Z1BDOTRPbmh0Y0cxbGRHRStJRHcvZUhCaFkydGxkQ0JsYm1ROUluSWlQejQ3N0pYRkFBQUFZRkJNVkVYLy8vOEVWcUlYWmF2RzJPb3FjTEcyek9Pa3d0MEJTSnRxbGNYVjR1K2F1dGxXaGJ6azdQVUFNWTlIY3JLanROYnE4ZmVBbDhhQm9zeno5dnBkanNHR3F0RjNuOHVUc05TWnBjNkpzTlQ1K3YweFlLbnU4UGZmNS9MNDhmZy9mcmljekpnWUFBQURBRWxFUVZSNDJrUlVDWmJESUFqRlhaT1kxVGF0TmMzOWJ6a3NTWWMzcjRNRTRmTUJBYUQ2emw4eS85VE9nZXQ4ZDVqZk43OGJ3TS9kRENScFI1MjF6WGZvakhKMDVJSXloQkFVU1ZBT05kR3pCWXQyZjdLRnJma0phQWtIaDlGWmhjRFhIUmtUS285TUxpaEdhYXZJbW5WM3F5RVgwRXByZ3ovNER3VUQ3a0NIUm5kOFFGTjQzR280VVZtRERnemE0dzI3b2l6ZEEyK2NLK3V1VXBqam8yK3h3Yy80Mlc1MHg1TEdZZURCc1IwSFZJeDV4OGlGNjBDYmxiVEVFa0ZyMjdiTkRCVVZTcTFPS1ZQYkU2MmIzRUg4RnFCZzVPT09FdWMydDhaSmlxTU91R3ArY0tqZzd3VkdjZW96cU40cHhnVlBRa2pGWWdiVkpLRFVoRENqWXJhd1A1cTRFVGdDOWZJTVJIdGl0cFFjQ3ZKT0VMY2JNc1FnbmNpUmtsanB5UWp2RzQ0anFCVUVURmlCaTFQRUl5ZWtPenNXK1R5NWNMSG9zNVIrZE1TMUx0U1N4ZjNnUUhjelIyQ0k0Z01OcFc0SVJBMVFNYTZ0SjQrQzZ1SHVHRThtTkRJeUZxZy9PUC9NTVV1ZVM2SXE4UzkwZEFlQkpTRXkvcUtrSytCTnd6OGNZWTRqYjVKNnU0aVdDSTJCMVo1NkxXNWtFYzRoa2RNcHN2VUM1NTg1U1gwUXViY2dOcXlmZ0RGRWNUdCs0MC8wUzVOeDB3YUN3M09La2NPYkE1SW4wQVlwMDFwamp3Mm42MjZVRGp0SHdhMjhpSHVUS3F0cnYrcmVXNDFOWjZpR2xyN3V1TEpDZmtGdGN0Y0cwNHNnbTFlTlMrWmFEbnBhVEVyR295WDVKSzJpTXo4eHMwbk93V0djUERONDlxYUNkNGJ6Sm96RFptL2FCSytFb3pMdytYaE5CaVl3SGYwc2lPdTFYUGtHL3pLd3ZxWUtjZlN3REVjSC9vVWUwN2VzL1dROHJJeWcyRE9Yajh0amtaZHVEQi9iOGh6RGxsTU1PQ1M1QkVuZDUzNGY4dGkzVVpjNGtNczN4THlhZk1Tc0poZEc4WFBxak5rNXRBZ08yNWZlS0NoblZkRGovSjBGTWtPc1UveE1CdjB3RmhZZUVHZlZIMTNmdURVMHlERkxhNGZjN1JuV0hCZnVURlYydEVtTndhZGM3YWMzVVkyamZCbDdIVDM2ZmUzNGlRTzVtTkNGRkJXMDdLalBncWhPTFUwMXZaOFB1ZVoySkNsRlpOOGprVXM2OXVrYTllUHA2K0VmTDRBRjUrTnl3U2Jpckh0Y0I4TWwvZ2t3QUVqa0s2NEtqSFBlQUFBQUFFbEZUa1N1UW1DQyJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTAzLTIwIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiZVBhc3MgRklETy1ORkMgU2VyaWVzIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVMkYxMDAwMjAyNTAzMjAwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wMy0yMCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTA0LTA5In0seyJhYWd1aWQiOiI1YjBlNDZiYS1kYjAyLTQ0YWMtYjk3OS1jYTliODRmNWUzMzUiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjViMGU0NmJhLWRiMDItNDRhYy1iOTc5LWNhOWI4NGY1ZTMzNSIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IDUgRklQUyBTZXJpZXMgd2l0aCBMaWdodG5pbmcgUHJldmlldyJ9LCJkZXNjcmlwdGlvbiI6Ill1YmlLZXkgNSBGSVBTIFNlcmllcyB3aXRoIExpZ2h0bmluZyBQcmV2aWV3IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3MiwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9LHsibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyIsImVkMjU1MTlfZWRkc2Ffc2hhNTEyX3JhdyIsInNlY3AzODRyMV9lY2RzYV9zaGEzODRfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6OCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6OCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJREtqQ0NBaEtnQXdJQkFnSVVlZitWdkhrY1RRbkVEKyt3Sk0vSXh6U1VMazB3RFFZSktvWklodmNOQVFFTEJRQXdKakVrTUNJR0ExVUVBd3diV1hWaWFXTnZJREl3TWpNZ1JrbEVUeUJRY21WMmFXVjNJRU5CTUI0WERUSXpNRGt5TlRFeE16STBNVm9YRFRJME1USXpNVEV4TXpJME1Wb3dKakVrTUNJR0ExVUVBd3diV1hWaWFXTnZJREl3TWpNZ1JrbEVUeUJRY21WMmFXVjNJRU5CTUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUFvdUZNVE9LYUUwWXRleE9vaXNTeHArRWJpNUlBNGVzRVNjeDE2bHpRZHFWNi9lWjgyS3RKZU5YRXVOa0JWWkRwYzMyZ1N0dXhMQkg4bWdzb0hCRmFpMkRramZCbjVxYndSL2M1K3NubHdadmpnVkEwaHpLdzlDd0FlQXdSRDVrcld0ODgvQ1Z5Q2tNY2dMU0d3WnMvcmo3Ri9MczNFYmc3TXFMYmJRSjlDb3piYkxkSlVZSUhjUHBTWlB0b01yWmI0R3ZuaTZpVlM5VXZDS2dwcWM2TEdSbW9ZR0c0WlIzbEdKL1hRWmZ1K0dlSlc2N2lpbU1qL3lvWE93eHVjeGl2WkhGazZjUVNnd3V3aW9lTm00d3ZrODNMaFN1V2N0ZjJrQXlRY1o3a1VucE5lZStkNE1ncm1HVTRYTUZMaVRndXRhQitlOVY4ZDVKVGtVT0hpTHp0a1FJREFRQUJvMUF3VGpBZEJnTlZIUTRFRmdRVU01U0I1YkhyVitqcElPTWRKbDd1N2JjblRZOHdId1lEVlIwakJCZ3dGb0FVTTVTQjViSHJWK2pwSU9NZEpsN3U3YmNuVFk4d0RBWURWUjBUQkFVd0F3RUIvekFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBQ293UjNLVExmaWRKeVFGTnFFRmZVcmZaOWFhOWVncE9RdE5SSmRMU3RKNnh1MldmTHd2RzRvakdKbEJLTm5mYTVESWN5UVlmLzhxSjRlbGlBVmVOWHVZbWVNbWdOZ1paeXVZNkcxeVdDRDJWM3NENlo0dWozU2JhRE9IajNnSHZzemdRaHJoVDFoL3B1SFFrbjYraFlLQXA3N2tNN0ljNkFaL1JGYmpwbUxMazJEMHNFMWx6VC8wMmkrQmg3TThzbWFpRFo5KytKR3p4ZVN1bjhXMUhsZVpVbTJxS0dtUmE0WFBkcnlUN3g2S0dVR25VNGEzYnBVbVZlWTlyUS9zZk1kNVpUb28rM3VuRldEem9WVjJ2TnU4KytWTEM5em80MEZhS1FMcjlWQUpESjR5TEVOUjdLcm1WOEwwY0NYS0pHWldBV3RHNVJHVG1ISWhkK25CNDFnPT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZkNBWUFBQUNHVnMrTUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFIWVlBQUIyR0FWMmlFNEVBQUFiTlNVUkJWRmhIcFZkN1ROVjFGRC8zZDU5d2VRU0lnUzlBUUFYY0ZMQVFaaTlmcGVWejF0WS9XVFpyNVd4cGM3VzVrbkxhNWpJM1o4NXNyUzJuTTJzanRXd1pTN0lVSDRINHhDbkVReDREQVpGNzRWN3VzODg1djkvbEluQnZWSi9CNFB2OW51LzVudS81bnZNNTU2ZnpBL1F2MEhiL0lyWDNWRktQbzQ1Y25tNGluVUlXWXdMRlJtWlFVdXdqRkcvTjFpUkhoMUVaME5SVlJ1ZHF0MUJkKzJuU0t5Uy9PaHlzMCtsazNlLzNrUTlxdkQ0WlV0YTRWVlNVdVkwZWlweWlUaEFmb2NvT1JWZ0R1dXczcUtSaUFkM3JiY0V0alRqWUlvZjZXYUhzQ216VlBXQ014K2NnaDh0THFXTUthTVdzVWpMcW8yUnRKSVEwb096bWVycFF1NGVzWmdzT05rR3hIN2Qwa2R2VFQxN3M0T01VN1ZJOFpoamdHYU0rQXE5aUVOdThQaWYxdWR6MDdNd3ZLV2Y4R2xWb0NFWTA0UEM1V2RUYVhZRmJSOHZOdkw1KzNLZ2ZiNXhOTXlhOVJhbUppeW5hTWxHVFZ0RmxyNmJhOXUrcHFuRVg0dU11UlJnalNZRWhyTjd1dEZGZTZscWFsN05ma3c1aW1BR0h5blBwYms4Vm1ZMHhzdG5wdGxGQ1ZDWXR6VHVCTjgzUXBNTGpUdGV2ZFB6U1VuSjdlOG1ranhaMzlmWGJLRGZsZFpxYnZVK1RVZ0duQlZGNmZRMmlQSGc0VzE2VVdVd3Z6YmsxNnNNWkUrUG4wcHZ6N0pTZXVBeWVzOGxjcENtYUt1by9wK3FXcjJVY3dJQUhXcnZQMFlFemhYQXRMQWJzc0hocDdpR2FtdnlpalA4cnlxclhVV1g5WG9vd3h5QXVmTkJycDQzUE9CRlhabGtmOE1EUmlxY3B5b3dBd3B1ejJ4K2ZXdnovRHRkZTlzbXN6eWd0Y1I2QzF3YmR6Qmw2T2xxNVdOWVk0b0dhdGhKTXJrVEV4MGpBUlNIQVZzKzVyWWtRTlhiK1FnZlBMc1E2Z1h5SW5zcmVRZm1wbTdSVkZZZkw4Nm4xZmlVT2tZdlNoa1VQeHZidWt6b3k2SzFpaE0xaG8zWHpXNkV2U2ZYQStkcGlXR2FXZCtkb1h6THptR3dLWUZMQ0FzUkFsUEJBaE1sQ0ZYVTd0QlVWUHI4SGdWY0pIV3ErRjAwcGxyK0RNVGRyUDR6dnhZMTFrTk1oeFQrU2VUR2crZDRWNUxRSml0eVVHSk5COFZGWnNqZ1lCWk0vSUkvWENUa2owcXlET3BGMkFWUTE3Q0lqVXAvRG5UMVVrTDVGNWdkaitzUzF3ZzFnRTNnaWdtNjBmQ1h6U25QWGJ5QVBiSVh2K0lEcEUxNlRoYUhJUzlza3lobG1NRTVGM2NmcUFLaHEyQzBFNVBIMWdZYVhhTFBEa1pHMEhESk9uS1dIcDUxSTB6NVNPdXg4ZTFXQXVaemRIUXJUa3A4VG1qWG9JK2xhMHdHWnN6dWJxYk8zaWZRNkEvVzd2VlNZc1YzbVIwSkt3a0tjNFdIaUJrbVI4STNDQ2dJODdvT0w0cXpUNVArUlVKQmVqRU9nQVBLOGhZUHphdE0rZUlUcDJJTzl5VFFtZXJvbVBSeHgxcXhBY3NpbGUvdWJTZUViY1dRR1lFQ2doY0xZMkh5S2pvZ2pIMjVoTXBqcFV2MU91Z2xpNGVoMmVSdzBPMzJiSmpreXVDZ056ZzB2emxZTVNpU3MwdW9vNE1HN2hNT2pDRWFYMXlGRTBuU3ZqQnp1VG5FcEs4Nlo4SW9xRkFJdWJ3OGtnOUFyRWFSRVdTWkkrakg0WGJwNmc5RTlFbkpUM29hUnpETitNVUpCUURIbjU2YThvVW1FQnVzT3hCcy9ONSt0SkViUGtBRkRqOFVHdk9zL0lXdmNTZ2xHQmh2UzcvRlRZZnBXR1lkRFk4ZlBBeFdTQTM1c1RDNHA0K0xtNEFhcUlvUGVRdGZ1Zks2SmgwWmh4bGJzVVhPU21YTmlmRDVaVEFreURvZmJiY2NseG5BOFdOQXF4Q2JSTnlraFh4UXBhRHc2N2ZYVVlic2lHMEtodHYyb2VJdmg4cmhRTVlPY0VBcVhHL2VJK3puZ09jNXl4cjhxODJJQU0xYy9GTEZPcGxxdTVlRlFYck1aekdjVkNqWWJMV0c1STRCVDFldVJybGJ4dE5PdE1pdERERWhMWElJeW5BQXZ1T0VXRTNYM05kQWZ0OTRWZ2FHNDJYSVF0MFpYNlBlQ0UvcVFGZTlySzZIeDdZVTUwS3ZIN2ZXNGZTK3E3S0tCSnhzZ2dCWDVwU0FHaDFqSXJWaDV6UTZ3M1JmYWFoQlhtL2FDYkNaVGpDVUZVVHlXWnFXOXA2Mk1qSlBYVnFPclBnTU80TnY3NEdrZitvd2Z0TlZCRFFuakZKcUhTdzE3cFh2aFdXNUtacWUvUTQ5Ti9VU1RDQVZXb1FYRklIQkhYWGUzRlByVURzdUdEbXRGL2hIS1RIcGVreGhpQU9QSStTSnE2UzZIRjRJOVlXemtCSlRvNDZpVU16V3A4UGlyL1JpZHVMeEtZc1Nrc1Y4dkxsT1F2aEdYMllsUjBPQmhCakMrdS9nRWN2WTBBcEs3WWs0MU54alBTUW5XRkhURjY2VXJqZ2V2QjhDdTVhK2wydllTUlB0dVZEbzczaGhkTVNIblVYN3RUanNWWkd4QWwvV3B0aU9JRVExZ25MMjltWDYvdFIxdG1sa1lqOFc0WCtDU2pXY1VER1kxTnBTL0M3aFNLcWlNTE0vbDJRbVNXWjczRGR6K2dpbzhCQ0VOWVBRNDZxbmt6d1hVYnF2Qmt4alVRc1dmWkZnYnVvM3JBZit3TjdqT085MCt5bng0UGkzTCswbllMMVNjaERVZ0FQNGdQVi83SWQxcSsxSFNobXVHa0lxV1JQZ3l4TUZxUDhIZmpUbmpYd1k1YlFmYkpjdDZPSXpLZ01Ib3RGL0hlMWVnc2F4SFNxRzZ3ZmRtUTV4OE55VEZGcUJjcDJpU293SFIzeWs1KzM2aEY3dlhBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiRklET18yXzAiLCJGSURPXzJfMV9QUkUiLCJGSURPXzJfMSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJsYXJnZUJsb2JLZXkiLCJjcmVkQmxvYiIsIm1pblBpbkxlbmd0aCJdLCJhYWd1aWQiOiI1YjBlNDZiYWRiMDI0NGFjYjk3OWNhOWI4NGY1ZTMzNSIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImxhcmdlQmxvYnMiOnRydWUsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjpmYWxzZSwiYWx3YXlzVXYiOnRydWV9LCJtYXhNc2dTaXplIjoxMjgwLCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0Ijo4LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjEyOCwidHJhbnNwb3J0cyI6WyJ1c2IiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotOH0seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTM1fV0sIm1heFNlcmlhbGl6ZWRMYXJnZUJsb2JBcnJheSI6NDA5NiwibWluUElOTGVuZ3RoIjo4LCJmaXJtd2FyZVZlcnNpb24iOjMyOTQ3MiwibWF4Q3JlZEJsb2JMZW5ndGgiOjMyLCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6MSwiY2VydGlmaWNhdGlvbnMiOnsiRklQUy1DTVZQLTIiOjIsIkZJUFMtQ01WUC0yLVBIWSI6M30sInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjoxMDB9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiTk9UX0ZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMDQtMDcifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI0LTA0LTA3In0seyJhYWd1aWQiOiIxMjc1NWMzMi04YWQxLTQ2ZWItODgxYy1lMGIzOGQ4NDhiMDkiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjEyNzU1YzMyLThhZDEtNDZlYi04ODFjLWUwYjM4ZDg0OGIwOSIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJGZWl0aWFuIGVQYXNzIEZJRE8gQXV0aGVudGljYXRvciAoQ1RBUDIuMSwgQ1RBUDIuMCwgVTJGKSJ9LCJkZXNjcmlwdGlvbiI6IkZlaXRpYW4gZVBhc3MgRklETyBBdXRoZW50aWNhdG9yIChDVEFQMi4xLCBDVEFQMi4wLCBVMkYpIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfSx7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUIyVENDQVg2Z0F3SUJBZ0lRRlFOS1crN3piZy83ZCtsVHlySVd3REFLQmdncWhrak9QUVFEQWpCTE1Rc3dDUVlEVlFRR0V3SlZVekVkTUJzR0ExVUVDZ3dVUm1WcGRHbGhiaUJVWldOb2JtOXNiMmRwWlhNeEhUQWJCZ05WQkFNTUZFWmxhWFJwWVc0Z1JrbEVUeUJTYjI5MElFTkJNQ0FYRFRJeU1EWXdPREF3TURBd01Gb1lEekl3TlRJd05qQTNNak0xT1RVNVdqQkxNUXN3Q1FZRFZRUUdFd0pWVXpFZE1Cc0dBMVVFQ2d3VVJtVnBkR2xoYmlCVVpXTm9ibTlzYjJkcFpYTXhIVEFiQmdOVkJBTU1GRVpsYVhScFlXNGdSa2xFVHlCU2IyOTBJRU5CTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFc0ZZRUVoaUp1cXFuTWdRalNpaXZCalY3REdDVGY0WEJCSC9CN3V2WnNLeFhTaEYwTDh1RElTV1V2Y0V4aXhSczZnQjNvbGRTcmpveDZMOFQ5NE5PenFOQ01FQXdIUVlEVlIwT0JCWUVGRXU5aHlZUnJSeUp6d1JZdm5EU0NJeHJGaU8zTUE4R0ExVWRFd0VCL3dRRk1BTUJBZjh3RGdZRFZSMFBBUUgvQkFRREFnRUdNQW9HQ0NxR1NNNDlCQU1DQTBrQU1FWUNJUUNCME5GUVNOMHo0bFd6L3ljMzZld3JUQ3p0dEsvcUZ2bGFQT0toK1QxbzZ3SWhBUDBvS0tBK2NpY3NEeTNZM24rVmxQOGVCM1BCek1raHZXLzlJU1hDdytWQiIsIk1JSUIyRENDQVgrZ0F3SUJBZ0lSQU1zOFlYVkJvQk51WFVqcWZDb1g3eTR3Q2dZSUtvWkl6ajBFQXdJd1N6RUxNQWtHQTFVRUJoTUNWVk14SFRBYkJnTlZCQW9NRkVabGFYUnBZVzRnVkdWamFHNXZiRzluYVdWek1SMHdHd1lEVlFRRERCUkdaV2wwYVdGdUlFWkpSRThnUlVFZ1VtOXZkREFnRncweU16QXhNREV3TURBd01EQmFHQTh5TURVeU1USXpNVEl6TlRrMU9Wb3dTekVMTUFrR0ExVUVCaE1DVlZNeEhUQWJCZ05WQkFvTUZFWmxhWFJwWVc0Z1ZHVmphRzV2Ykc5bmFXVnpNUjB3R3dZRFZRUUREQlJHWldsMGFXRnVJRVpKUkU4Z1JVRWdVbTl2ZERCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQkQyTEhIQVFxWWJkUjFXWmx1ZXJ0TTMwcldob3JZYXZXbU1WYTRuZFg5UFp3dVJFcExRNG0xbkVscVFLTW5SRTgvNEMrUnF3aWF2K21wSTRreGQ1ZTV1alFqQkFNQjBHQTFVZERnUVdCQlMzWlpqeUdsaFo5OU4xdkxvVFBYVlVhNFpFWURBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUE0R0ExVWREd0VCL3dRRUF3SUJCakFLQmdncWhrak9QUVFEQWdOSEFEQkVBaUFvRCtSNmtvbElXYU5KejRoejAzRDNnZXMzR2JNQmpBV3BrT1VnOWF5Rmd3SWdiRXc3QVlTeWs2OE92eGdYZXpnbmRUUlRFdVNXVCtmZFJuTGFCTnNhVHcwPSIsIk1JSUIyRENDQVg2Z0F3SUJBZ0lRQlRtazNad2lsRlhqc1p5d0hEbk1nREFLQmdncWhrak9QUVFEQWpCTE1Rc3dDUVlEVlFRR0V3SkRUakVkTUJzR0ExVUVDZ3dVUm1WcGRHbGhiaUJVWldOb2JtOXNiMmRwWlhNeEhUQWJCZ05WQkFNTUZFWmxhWFJwWVc0Z1JrbEVUeUJTYjI5MElFTkJNQ0FYRFRJeU1EWXdPREF3TURBd01Gb1lEekl3TlRJd05qQTNNak0xT1RVNVdqQkxNUXN3Q1FZRFZRUUdFd0pEVGpFZE1Cc0dBMVVFQ2d3VVJtVnBkR2xoYmlCVVpXTm9ibTlzYjJkcFpYTXhIVEFiQmdOVkJBTU1GRVpsYVhScFlXNGdSa2xFVHlCU2IyOTBJRU5CTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFbmZBS2Jqdk1YMUV5MWI2aytXUVFkTlZNdDlKZ0dXeUozUHZNNEJTSzVYcVRmbysrMG9Bai80dG53eUlMMEhGQlI5U3Qra3RqcVNYRGZqaVhBdXJzODZOQ01FQXdIUVlEVlIwT0JCWUVGTkdobUUyQmY4TzVhL1lIWjcxUUV2NlFSZkZVTUE4R0ExVWRFd0VCL3dRRk1BTUJBZjh3RGdZRFZSMFBBUUgvQkFRREFnRUdNQW9HQ0NxR1NNNDlCQU1DQTBnQU1FVUNJQnlSejRPQWxSWjlIejlLVjdnMlFOdEMwQzhKeEgveExKWThGWkVtdEozc0FpRUFzcmVUMCtlTmtOY1VqSTloNU9QQ29INk5tc09rZ3ZFQUJKWnJGMDdBRGtZPSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFGQUFBQUFVQ0FNQUFBQXRCa3JsQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUJIWnBWRmgwV0UxTU9tTnZiUzVoWkc5aVpTNTRiWEFBQUFBQUFEdy9lSEJoWTJ0bGRDQmlaV2RwYmowaTc3dS9JaUJwWkQwaVZ6Vk5NRTF3UTJWb2FVaDZjbVZUZWs1VVkzcHJZemxrSWo4K0lEeDRPbmh0Y0cxbGRHRWdlRzFzYm5NNmVEMGlZV1J2WW1VNmJuTTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlrRmtiMkpsSUZoTlVDQkRiM0psSURVdU5pMWpNREUwSURjNUxqRTFOamM1Tnl3Z01qQXhOQzh3T0M4eU1DMHdPVG8xTXpvd01pQWdJQ0FnSUNBZ0lqNGdQSEprWmpwU1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJajRnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJZ2VHMXNibk02ZUcxd1BTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGh0Ykc1ek9uQm9iM1J2YzJodmNEMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzl3YUc5MGIzTm9iM0F2TVM0d0x5SWdlRzFzYm5NNmVHMXdUVTA5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5dGJTOGlJSGh0Ykc1ek9uTjBVbVZtUFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdmMxUjVjR1V2VW1WemIzVnlZMlZTWldZaklpQjRiWEE2UTNKbFlYUnZjbFJ2YjJ3OUlrRmtiMkpsSUZCb2IzUnZjMmh2Y0NCRFF5QXlNREUwSUNoTllXTnBiblJ2YzJncElpQjRiWEE2UTNKbFlYUmxSR0YwWlQwaU1qQXhOaTB4TWkwek1GUXhORG96TXpvd09Dc3dPRG93TUNJZ2VHMXdPazF2WkdsbWVVUmhkR1U5SWpJd01UWXRNVEl0TXpCVU1EYzZNekU2TlRrck1EZzZNREFpSUhodGNEcE5aWFJoWkdGMFlVUmhkR1U5SWpJd01UWXRNVEl0TXpCVU1EYzZNekU2TlRrck1EZzZNREFpSUdSak9tWnZjbTFoZEQwaWFXMWhaMlV2Y0c1bklpQndhRzkwYjNOb2IzQTZTR2x6ZEc5eWVUMGlNakF4TmkweE1pMHpNRlF4TlRvek1Eb3lOeXN3T0Rvd01DWWplRGs3NXBhSDVMdTJJT2FjcXVhZ2grbWltQzB4SU9XM3N1YUprK1c4Z0NZamVFRTdJaUI0YlhCTlRUcEpibk4wWVc1alpVbEVQU0o0YlhBdWFXbGtPakpGTnpGQ1JrWkRRelkzUmpFeFJUWTVOemhFUVRsRFFrSTJORFl6Umprd0lpQjRiWEJOVFRwRWIyTjFiV1Z1ZEVsRVBTSjRiWEF1Wkdsa09qSkZOekZDUmtaRVF6WTNSakV4UlRZNU56aEVRVGxEUWtJMk5EWXpSamt3SWo0Z1BIaHRjRTFOT2tSbGNtbDJaV1JHY205dElITjBVbVZtT21sdWMzUmhibU5sU1VROUluaHRjQzVwYVdRNk1rVTNNVUpHUmtGRE5qZEdNVEZGTmprM09FUkJPVU5DUWpZME5qTkdPVEFpSUhOMFVtVm1PbVJ2WTNWdFpXNTBTVVE5SW5odGNDNWthV1E2TWtVM01VSkdSa0pETmpkR01URkZOamszT0VSQk9VTkNRalkwTmpOR09UQWlMejRnUEM5eVpHWTZSR1Z6WTNKcGNIUnBiMjQrSUR3dmNtUm1PbEpFUmo0Z1BDOTRPbmh0Y0cxbGRHRStJRHcvZUhCaFkydGxkQ0JsYm1ROUluSWlQejQ3N0pYRkFBQUFZRkJNVkVYLy8vOEVWcUlYWmF2RzJPb3FjTEcyek9Pa3d0MEJTSnRxbGNYVjR1K2F1dGxXaGJ6azdQVUFNWTlIY3JLanROYnE4ZmVBbDhhQm9zeno5dnBkanNHR3F0RjNuOHVUc05TWnBjNkpzTlQ1K3YweFlLbnU4UGZmNS9MNDhmZy9mcmljekpnWUFBQURBRWxFUVZSNDJrUlVDWmJESUFqRlhaT1kxVGF0TmMzOWJ6a3NTWWMzcjRNRTRmTUJBYUQ2emw4eS85VE9nZXQ4ZDVqZk43OGJ3TS9kRENScFI1MjF6WGZvakhKMDVJSXloQkFVU1ZBT05kR3pCWXQyZjdLRnJma0phQWtIaDlGWmhjRFhIUmtUS285TUxpaEdhYXZJbW5WM3F5RVgwRXByZ3ovNER3VUQ3a0NIUm5kOFFGTjQzR280VVZtRERnemE0dzI3b2l6ZEEyK2NLK3V1VXBqam8yK3h3Yy80Mlc1MHg1TEdZZURCc1IwSFZJeDV4OGlGNjBDYmxiVEVFa0ZyMjdiTkRCVVZTcTFPS1ZQYkU2MmIzRUg4RnFCZzVPT09FdWMydDhaSmlxTU91R3ArY0tqZzd3VkdjZW96cU40cHhnVlBRa2pGWWdiVkpLRFVoRENqWXJhd1A1cTRFVGdDOWZJTVJIdGl0cFFjQ3ZKT0VMY2JNc1FnbmNpUmtsanB5UWp2RzQ0anFCVUVURmlCaTFQRUl5ZWtPenNXK1R5NWNMSG9zNVIrZE1TMUx0U1N4ZjNnUUhjelIyQ0k0Z01OcFc0SVJBMVFNYTZ0SjQrQzZ1SHVHRThtTkRJeUZxZy9PUC9NTVV1ZVM2SXE4UzkwZEFlQkpTRXkvcUtrSytCTnd6OGNZWTRqYjVKNnU0aVdDSTJCMVo1NkxXNWtFYzRoa2RNcHN2VUM1NTg1U1gwUXViY2dOcXlmZ0RGRWNUdCs0MC8wUzVOeDB3YUN3M09La2NPYkE1SW4wQVlwMDFwamp3Mm42MjZVRGp0SHdhMjhpSHVUS3F0cnYrcmVXNDFOWjZpR2xyN3V1TEpDZmtGdGN0Y0cwNHNnbTFlTlMrWmFEbnBhVEVyR295WDVKSzJpTXo4eHMwbk93V0djUERONDlxYUNkNGJ6Sm96RFptL2FCSytFb3pMdytYaE5CaVl3SGYwc2lPdTFYUGtHL3pLd3ZxWUtjZlN3REVjSC9vVWUwN2VzL1dROHJJeWcyRE9Yajh0amtaZHVEQi9iOGh6RGxsTU1PQ1M1QkVuZDUzNGY4dGkzVVpjNGtNczN4THlhZk1Tc0poZEc4WFBxak5rNXRBZ08yNWZlS0NoblZkRGovSjBGTWtPc1UveE1CdjB3RmhZZUVHZlZIMTNmdURVMHlERkxhNGZjN1JuV0hCZnVURlYydEVtTndhZGM3YWMzVVkyamZCbDdIVDM2ZmUzNGlRTzVtTkNGRkJXMDdLalBncWhPTFUwMXZaOFB1ZVoySkNsRlpOOGprVXM2OXVrYTllUHA2K0VmTDRBRjUrTnl3U2Jpckh0Y0I4TWwvZ2t3QUVqa0s2NEtqSFBlQUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzEiLCJGSURPXzJfMV9QUkUiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkQmxvYiIsImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJsYXJnZUJsb2JLZXkiLCJtaW5QaW5MZW5ndGgiXSwiYWFndWlkIjoiMTI3NTVjMzI4YWQxNDZlYjg4MWNlMGIzOGQ4NDhiMDkiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJub01jR2FQZXJtaXNzaW9uc1dpdGhDbGllbnRQaW4iOmZhbHNlLCJsYXJnZUJsb2JzIjp0cnVlLCJhdXRobnJDZmciOnRydWUsInV2QWNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjp0cnVlLCJhbHdheXNVdiI6ZmFsc2V9LCJtYXhNc2dTaXplIjoyMDQ4LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjEwLCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjk2LCJ0cmFuc3BvcnRzIjpbInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5IjoyMDQ4LCJmb3JjZVBJTkNoYW5nZSI6ZmFsc2UsIm1pblBJTkxlbmd0aCI6NCwibWF4Q3JlZEJsb2JMZW5ndGgiOjMyLCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6MiwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjEyOH19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIyLTA3LTE4IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiRmVpdGlhbiBlUGFzcyBGSURPIEF1dGhlbnRpY2F0b3IgKENUQVAyLjEsIENUQVAyLjAsIFUyRikiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDIyMDcxODAwMiIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIyLTA3LTE4IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjF9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjQtMTEtMTkifSx7ImFhZ3VpZCI6IjJhNTVhZWU2LTI3Y2ItNDJjMC1iYzZlLTA0ZWZlOTk5ZTg4YSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiMmE1NWFlZTYtMjdjYi00MmMwLWJjNmUtMDRlZmU5OTllODhhIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkhJRCBDcmVzY2VuZG8gNDAwMCJ9LCJkZXNjcmlwdGlvbiI6IkhJRCBDcmVzY2VuZG8gNDAwMCIsImFsdGVybmF0aXZlRGVzY3JpcHRpb25zIjp7ImVuLVVTIjoiSElEIENyZXNjZW5kbyA0MDAwIn0sImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyNjIxNDQsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfSx7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUMvRENDQXFHZ0F3SUJBZ0lVWXZDYS90UXRNQUhYNzVxVlA5UWlWbmtWL2E4d0NnWUlLb1pJemowRUF3SXdhekVMTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFvTUNraEpSQ0JIYkc5aVlXd3hJakFnQmdOVkJBc01HVUYxZEdobGJuUnBZMkYwYjNJZ1FYUjBaWE4wWVhScGIyNHhJekFoQmdOVkJBTU1Ha1pKUkU4Z1FYUjBaWE4wWVhScGIyNGdVbTl2ZENCRFFTQXlNQjRYRFRJME1EVXdNakU1TVRNeU1Gb1hEVFE1TURVd01qRTVNVE15TUZvd1pqRUxNQWtHQTFVRUJoTUNWVk14RXpBUkJnTlZCQW9NQ2toSlJDQkhiRzlpWVd3eElqQWdCZ05WQkFzTUdVRjFkR2hsYm5ScFkyRjBiM0lnUVhSMFpYTjBZWFJwYjI0eEhqQWNCZ05WQkFNTUZVWkpSRThnUVhSMFpYTjBZWFJwYjI0Z1EwRWdOakJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCTFIwc1NhQ1VpUXpYMFl2TmJzeGpaUHEyb1JLazFwZk9lbERMNkFzTHVadllra1BLd2x5Uno4bE5QclNtYVZlVjNnUnlwSmw5YkRmNGR0bXYwTW41WXlqZ2dFbU1JSUJJakFPQmdOVkhROEJBZjhFQkFNQ0FZWXdFZ1lEVlIwVEFRSC9CQWd3QmdFQi93SUJBREFmQmdOVkhTTUVHREFXZ0JTNzZEcGw5M3ZCMmg1RkRMdnlNTXZVQnlqM2l6QWRCZ05WSFE0RUZnUVVrY3pPTUN3N2hQbjQwelpzaENhYXNHUUt2V013UkFZRFZSMGZCRDB3T3pBNW9EZWdOWVl6YUhSMGNEb3ZMMk55YkM1b2VXUnlZVzUwYVdRdVkyOXRMMFpKUkU5QmRIUmxjM1JoZEdsdmJsSnZiM1JEUVRJdVkzSnNNSFlHQ0NzR0FRVUZCd0VCQkdvd2FEQS9CZ2dyQmdFRkJRY3dBb1l6YUhSMGNEb3ZMMk55YkM1b2VXUnlZVzUwYVdRdVkyOXRMMFpKUkU5QmRIUmxjM1JoZEdsdmJsSnZiM1JEUVRJdWNEZGpNQ1VHQ0NzR0FRVUZCekFCaGhsb2RIUndPaTh2YjJOemNDNW9lV1J5WVc1MGFXUXVZMjl0TUFvR0NDcUdTTTQ5QkFNQ0Ewa0FNRVlDSVFEYUVjRkltN2w3YnB2dFFRdlh2ZEVZLytHNEdIWVRkcm5CQ1lmOWptT3Nvd0loQUpJeUZyVE1iNU5JekFJLy9XRE9zWXJsa0RQcGZVUExpeFowYStvZUNtUlAiXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBVk1BQUFDc0NBWUFBQURHK0U4TUFBQUFJR05JVWswQUFIb2xBQUNBZ3dBQStmOEFBSURwQUFCMU1BQUE2bUFBQURxWUFBQVhiNUpmeFVZQUFBQUpjRWhaY3dBQUQyQUFBQTlnQVhwNFJZMEFBQXlnU1VSQlZIaGU3WjEvYkpUbEhjQnZqaGpOY0M0TytkWGVYVnRVVE16aVA3b1lYWlk1MUlrS2QxZk5uRkhqNW9oQm1BN2oyTVJzWm9sbXhoaE5Kb3J0MjRLZ3NpRnNpbTdUQWRNWVJGUUVGVGNWeHcvcndBRUZSQ2hRK3V1ZVBjLzFxUVAzVE5zKzMzdmV1K3ZuazN6UzQyZ2ZudmU5dDU4Kzc3M1hJd0VBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFVRXBrRzYvWFBwbklSUjhnSWg1dDQxcjljWWF0QmZ3UDlRM242eDIwVFp0UDFEY3BSTVRQTmRlVTE0dXVWdDJNcTIxRkJreHRNam1yTHBWcTBSODMxMVpYMzJydkxtTUtQMjMwanFtUDNEc05FZkh6ekVXN0V4Zk9HV21MOG9Xa2s4a2YxcVhTUFhYVnFhWEpVYVBPcUttcU9yTXVtZnByYlRMVm5VcWxMcmVmVmtaTW1QMTEvWk9sdzdsekVCRUhvam1yelVaVGJWMytMM1ZqeDA0d0lSMDlldlRKNDFLcEtkb2JqQ05Iamh3MWR1elk1TGgwamRLcjFMUHRwNWNCSnFTc1JoRlIwdDZnenJTVmNYR01EcW1xU1NZeit2WXdFODZhcXRTMXRkWHA2ODN0dWpGalVqVmprNVAxS3JXOTk5UExnVnpVNWR3WmlJZyttcUJlT3FmT2x1WW8wdW4wY1RxbVhmYVB3OHdLMWQ1TzZGUDh0MnJUNlZ2MHpTK2JzUGJlVytya29vK2NPd0VSVWNKY2RNRFc1aWlxcTZ1UEg1ZXE2VnQxRmxhbU9xSTc2MUkxMjA5SjEvUkY5a3ZsRWRQNmhtODdOeDRSVWRKc3d6MjJPcDlpWXFwWG81MzJqMlpsbWovcHBKTytxajkycDhlTU9kM2VmMHg1eERUWHRNKzU0WWlJa3VhaURsdWRJK2s5aFU4bmp0TzNDekUxZDQ0WU1XS012bjNRM0I0K2V2akorbmJmS3JXRTRYV2tpQmpLeTV2UHN1WDVsTHBVYW1adE1yM2YzSzZ0VHI1VHVGTlRsMHcrV3BOSzNhei9ycU8yT2ozTjNsMmlUSTZtT2pjWUViRVk1cHFldGZVNWlycnExRE8xeWRTQmNWV3BHK3hkaWJxcTVBeXpPdFgzTDdSM2xURDEwWExuQmlNaUZzTmNVK0hVM1VWeVZQSU1IZFdWcDlYV3FWTnJhdlA2OXZLcUVWV24ycjh1Y2Vxai9jNE5Sa1FzaHJtb2pGNHZPaENJS1NLRzFIMFJxZ0lncG9nWVVtS0tpQ2dnTVVWRUZKQ1lJaUlLU0V3UkVRVWtwb2lJQWhKVFJFUUJpU2tpb29ERUZCRlJRR0tLaUNnZ01VVkVGSkNZSWlJS1NFd1JFUVVrcG9pSUFoSlRRUzk3V0NVdWVFQWxMcHdkVnZOdjVpTDNuQWJyOXg1MC8xdkY5aUt0YXo0RE1hN0h3RHorcnZuMHg2eCsvT0tZZHpFMDIzR1JQbjdNTVhTcDNpZVRHOTNiWEdrU1V6bHZudnV5aW92anJwem5uTk9nMUFmL3VzMjc3TWhoMmZuSm9kNXZRTmU4K3FQK0pvNkxhZEVxOTV6NjRkZXVYV0JIcVF3NnUzdFVXM3VuMnJ4am4xcTlZYWRhc25xenVxbjVaWFh5TlF0VTR1S0hWQ0pUZ1lFbHBuS2FiNmE0cUpTWWZyVG5RTm5HOUlhSFgzTFBxUitlcUNNelZOaXovN0JhOGRaV2RlVjl6NnZFQkwyS3JaU3dFbE01aWFrL3hIUm8wZG5WbzU1ZDk2RWFmK01pdjZkSlNrRmlLaWN4OVllWURsM2VidG1qenB1MTFPL3hqMU5pS2ljeDlZZVl3aHRiZHFsVHB1cVZxcmtvNTloWEpTc3hsWk9ZK2tOTXd6UHJzVFhxenNWdnFMdVd2S0V5ZHk5VHVYdVdxMTh1ZkwxdzM3MUwxNnNWNjdjVkxpYUZwQ2VmVjQrKytFK1Z1R0MyYzMrVnBNUlVUbUxxRHpFTlQyTENiL1Vxc0ZFbE1nMy9uWk81S0ZTNFR6dEpQeDZYemxGVlV4YXFLWE5XcW8vYkR0dXZMRDY3MjlyVk4zNjZ4SVRxcVAxVmtoSlRPWW1wUDhRMFBJWFhoanJtNUZSSDdaakpEZXFPMzYrMVgxMTh1bnQ2MUMyUHJOYkg1Ukd4TDBXSnFaekUxQjlpR3A0QnhiUlBIYlpKZHkrekk0UmgvZ3Z2RjFiSXp2bVVnc1JVVG1McUR6RU56NkJpYXN3MHFoL3IwLzZRUFBucUIzN0hSekVscG5JU1UzK0lhWGdHSFZOak5sSi8vM0NQSFNrTVQ3L1dVcHBCSmFaeUVsTi9pR2w0dkdLcUhmK1R4WGFrY1B6eEZiMUNMYlhuVUltcG5NVFVIMklhSHQrWW1xaTl0MjJ2SFMwY1AxdndxbnMrY1VsTTVTU20vaERUOEhqSE5CZXA4MjUvMm80V2pudytyOFpQWCt5ZVV4d1NVem1KcVQvRU5EemVNZFYrNWFwSDdHaGgyWGV3UTJUK0loSlRPWW1wUDhRMFBDSXhtbVJPOVQreEk0YmxtVFV0aGRXeGMxNGhKYVp5RWxOL2lHbDRSR0thamRRdDgxNnhJNFpuK0ZXQ3gvOWdKYVp5RWxOL2lHbDRwRTZUejV5eHhJNFludmMvMnR2NzY2K09lUVdUbU1wSlRQMGhwdUdSaXVubzZ4KzNJOGJEaU9zZWRjNHJtTVJVVG1McUR6RU5qMVJNaDEzUmJFZU1CM1BNeHZyY0tUR1ZrNWo2UTB6REl4VlRjeEdxcTd2YmpocWVydTRldVcwWmpNUlVUbUxxRHpFTmoxaUE5SEd6ZGxPckhUVWVicDBmNHd2NWlhbWN4TlFmWWhvZXNaaG1HdFhDbFJ2dHFQR3diYmMrZnVKNmgzNWlLaWN4OVllWWhrY3NwanBpdHoyMnhvNGFEKzBkWFNveE1hYTM2U09tY2hKVGY0aHBlQ1JqR3VkclRmdUk3YW8rTVpVenpwaCs1MWQvVXVmT2VsckViLzc4S2JVaGhqZXVNQkRUOElqRk5LYmYwZjhzdHoyK3hqMi9Za3RNNVl3enBwVUNNUTJQV0V5MTU5eTIxSTRhSDZ2ZTNlNmNXOUVscG5JU1UzK0lhWGdxTGFaYjQ3b0lSVXpsSktiK0VOUHdWRnBNdCs4OTJQdS9xanJtVjFTSnFaekUxQjlpR3A1S2krbXVmZTBxbG5maEo2WnlFbE4vaUdsNEtpMm1oZmM0dmN6akdCcXN4RlJPWXVvUE1RMVB4WjNtZjh4cHZpekV0Q3docHVHcHRKanUySHVJbUlwQ1RNc1NZaHFlU292cEJ6djNtN0E1NTFkVWlhbWNjY2JVdk1IRTYwS3UyYmhUSFdqdnNpT0hoWmlHcDlKaXVtVDFadWZjaWk0eGxUUE9tQjVyZmhLYko5MGx2UGdoOWZyR2VONzloNWlHUnl5bUpmSWJVUFgzTEhmUHI5Z1NVem5qakNtL20yOGxwZ05HTEtZbDhydjVzWnppRzRtcG5NVFVIMklhSHNtWVRvLzV1c0grUTUyOVoxZXUrUlZiWWlvbk1mV0htSVpITEthWlJyWG9wVTEyMUhoWTM3S2JsYWs0eEhUd0V0TkJRVXdiMVlyMTIreW84WEQyektYdXVZV1FtTXBKVFAwaHB1RVJpK25rQnRYNnlTRTdhbmphMnZVcC9pVXh2VEcwa1pqS1NVejlJYWJoa1h6T05FNmVXTFhKUGE5UUVsTTVpYWsveERROFVqRTk4WnI1ZHNUdzlQVGs0M25idlNNbHBuSVNVMytJYVhpa1lucnE5Q2ZzaU9INXk3cC9tWmc1NXhWTVlpb25NZldIbUlaSEpLWTZaSmZjK1p3ZE1TeUhPN3YxTVJQamM2VjlFbE01aWFrL3hEUThJakhOTktvbHE3ZllFY015clhHVmUwNmhKYVp5RWxOL2lHbDRSR0lhMDhXblRkdjN4ZmNpL2M5S1RPVWtwdjRRMC9CSXhIVDh0RVYydEhDMGQralRlMzJzdXVZVGk4UlVUbUxxRHpFTmozZE05U24rM09jMzJOSENZSzdlbnpYelNmZDg0cEtZeWtsTS9TR200ZkdONmZBZnpMTWpoV1BHdkplZGM0bFZZaW9uTWZXSG1JYkhLNmFURzlUY3Y0VmRsZDYrY0kwSmwzcytjVXBNNVNTbS9oRFQ4QXc2cHRsSW5YL0huKzBvWWJpcGVWVTgveVZKZnlTbWNoSlRmNGhwZUFZVjAweURPdmYyWit3SXhhZTdKNjkrTlB2RjBseVI5a2xNNVNTbS9oRFQ4UFE3cGlaaytyVGVIR3YzUHJYZWZuWHhPZGplcWNaTlhlU2VVeWxKVE9Va3B2NFEwL0Frdm5WLzc3c3RmZGFKRDZsaFZ6U3JFNitlcjA2L2FiSEszTDFjL1NId0MvT1h2Ym0xTUEvWFBpczVpYW1jeE5RZllncUdnNGM3MVZYM1AxOVlDYnYyVjBsS1RPVWtwdjRRMDZGTlIxZTNlbmpadXlyeDNRZWMrNm1rSmFaeUVsTi9pT25RcEwyelN6V3QyTkI3U2wvS0Y1aytUMklxSnpIMWg1Z09IZkw1dkhxN1pZK2FNbWVsU2x5Z1Y2TGxHdEUraWFtY3hOUWZZbHJaZk54MldLMTZiNGU2MGJ6VFU3WlJKU1o1UE5hbEpqR1ZjOUp2bHFubGIyNHRYSUVNNmNwMy9xMk8vZjVjNTV3R1phWlJQZmpzUDV6L1ZySDkzY3FOK2h2TTQ2TER4RG5xcFhlM084Y3VwaXZlMnFZdXVlczU5NXo2NFFsWHoxZTc5N2VybHRhMml2RE5MYnZWMmsydGhYM3o2eWZXcW9sM1BxZE9NRC93TDlhbjhmcUh0V3NmbEwzRUZMRUVOS2U0NXVWSVpsVmU3cHJ0TUZmaHkrbEt2SVRFRkJGUlFHS0tpQ2dnTVVWRUZKQ1lJaUlLU0V3UkVRVWtwb2lJQWhKVFJFUUJpU2tpb29ERUZCRlJRR0tLaUNnZ01VVkVGSkNZSWlJS1NFd1JFUVVrcG9pSUFoSlRSRVFCS3phbXVhalZ1Y0dJaU1YeG9LMVBoWkZ0YUhKc0xDSmljY3hGdTJ4OUtvd3Jtc2M3TnhnUnNSaG1vbC9ZK2xRZzVqa00xMFlqSWtxYWkvSzJPaFZLcnVrRjU0WWpJa3FhaTNiWTZsUXd1YWpidWZHSWlCTG10T2ZjZDd3dFRnV1RpNlk3ZHdBaW9vUzVhSm10elJDZ1Buck51Uk1RRVgzTVJxMjJNa09JYk9ORzU4NUFSQnlNdWFZS2ZTbFVmOGhGaS9RT3lPdVZxbnZuSUNKK2tlYktmWDNUV2x1VklVdzJPazJ2VWx1SktpSU8yRnkwTjVGdHVzN1dCQXFZcU5aSDYvVEhmVHFzblluNlpyMnpFQkdQMEt4Q3MxR2Jic1NXUktaaGdxMEhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQnBrVWo4QjRBb20rTWJUKzNKQUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzEiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6IjJhNTVhZWU2MjdjYjQyYzBiYzZlMDRlZmU5OTllODhhIiwib3B0aW9ucyI6eyJyayI6dHJ1ZSwiY2xpZW50UGluIjp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjp0cnVlLCJhbHdheXNVdiI6ZmFsc2V9LCJtYXhNc2dTaXplIjo1MTAsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6MSwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjo5NCwidHJhbnNwb3J0cyI6WyJuZmMiXSwibWluUElOTGVuZ3RoIjo0LCJmaXJtd2FyZVZlcnNpb24iOjI2MjE0NCwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjMwfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMDgtMjkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MjYyMTQ0LCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IkhJRCBDcmVzY2VuZG8gNDAwMCIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjQwODI5MDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25Qcm9maWxlcyI6WyJjb25zdW1lciJdLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTA4LTI5IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjI2MjE0NH1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNC0xMC0wMiJ9LHsiYWFndWlkIjoiODIwZDg5ZWQtZDY1YS00MDllLTg1Y2ItZjczZjA1NzhmODJhIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI4MjBkODllZC1kNjVhLTQwOWUtODVjYi1mNzNmMDU3OGY4MmEiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiSURtZWxvbiBBdXRoZW50aWNhdG9yIn0sImRlc2NyaXB0aW9uIjoiSURtZWxvbiBBdXRoZW50aWNhdG9yIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiaGFuZHByaW50X2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJ2b2ljZXByaW50X2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZXllcHJpbnRfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibG9jYXRpb25faW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXR0ZXJuX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmFjZXByaW50X2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUJ5ekNDQVhHZ0F3SUJBZ0lKQU5tTU5LNmpWcHV1TUFvR0NDcUdTTTQ5QkFNQ01FRXhKREFpQmdOVkJBb01HMVpoYm1OdmMzbHpJRVJoZEdFZ1UyVmpkWEpwZEhrZ1NXNWpMakVaTUJjR0ExVUVBd3dRVm1GdVkyOXplWE1nVW05dmRDQkRRVEFnRncweU1qRXlNVFF4T0RReE1EbGFHQTh5TURjeU1USXdNVEU0TkRFd09Wb3dRVEVrTUNJR0ExVUVDZ3diVm1GdVkyOXplWE1nUkdGMFlTQlRaV04xY21sMGVTQkpibU11TVJrd0Z3WURWUVFEREJCV1lXNWpiM041Y3lCU2IyOTBJRU5CTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFYWxZZ0VvcG5LU2NBbStkOWYxWHBHQjN6YmtaQ0QzaFpFS3V4VGNscEJZbGo0eXBOUmcwZ01TYTdnZUJnZDZuY2s1MFlhVmhkeTc1dUljMndiV1g4dDZOUU1FNHdIUVlEVlIwT0JCWUVGT3h5ZjBjRHM4WWwrVm5XU1oxdVlKQUtrRmVWTUI4R0ExVWRJd1FZTUJhQUZPeHlmMGNEczhZbCtWbldTWjF1WUpBS2tGZVZNQXdHQTFVZEV3UUZNQU1CQWY4d0NnWUlLb1pJemowRUF3SURTQUF3UlFJaEFPMlh1aVJEWHh5L1VrV2hzdVpRWU5VWGVPajA4QWVUV0FEQXFYdmNBMzBoQWlCaTJjZEdkNjFQTndIRFRZalhQZW5QY0Q4UzByRlREbmNOV2ZzM0UvV0RYQT09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQWZRQUFBSDBDQVlBQUFETDF0K0tBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFCUDZTVVJCVkhnQjdkM2RibHpYZFFmd2RTakpMcG8yb05NRy9ValIwRVZTOUs3cUUwUUM4b2xldExuTFhhMFhxSzBuaVB3RWNaNGdNbEFFdmJRdmlsNEZvVitncFlNVU5md2hqMng5bUtFc01Zb2xTNXc1NS9Sc3lwUEtNa25Oa0ROejlqbm45d05zVVFSOVlVdm1YMnZ2dGRhT0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRmlXSWlBamQzNzBvNDIxMDZkZktPcjRWaDNGUmtTOUVTeEFNWHIwWTczYi9FKy8rK2pEZWhURjJtNWQxN3RWRkZlamFuNitWdTNHTTgrTW5ydDhlVGVBVGhIb1pPSE8yYi9iaUQvNjBzK0t2L2liYzhVenp3WXRLNHJkRlBqTkg2eWEwQzlHZGZOWE5hbmVqRDg0dlNYc0lVOENuZGFsTUsrait1VzBHaS9XL3pTS3IvNVZDUFpNTldGZjFQVlc4OEZXV2RWdlJGR05udnY1ejdjQ2FKVkFwM1czei83dCt3Y2RyUXYyRG5rODVNdjZkWlU4cko1QXAxVjN6bjdqWEhOWC9zdWp2a2F3ZDlaV0VjVm1DdmpuL3YzZk5nTllLb0ZPcSs2Yy9lYlA2b2dYWnZsYXdkNXR6VGViellpMXkrV1p0VGVhNm4wVXdFSUpkRnAxKyt3My83djU0ZXc4LzR4Zzc0V3RLTll1VjZmWFhoZnVzQmdDblZZMWdYNm4rV0U5amtHdzk0UEtIUlpEb05PcUp0RHJPQ0hCM2crVHlTVGVmK2ZLNVozYmQxLzl3ZWl0elFEbUl0QnAxU0lDZlVxd2QxTUs4bzl1ZkJUYk43ZWpuSlNmZmJiWUxLSysvTzNSMjY4R01CT0JUcXRPY3VSK0dNSGVIU25JcjM5NC9iRWcvNEt0T3VvTDN4MjlZODRkbmtLZzA2ckRadEFYUWJEbjYrNXY3OGFWZDY3RTNzTzltYjQrVmV1bll2enkrZEZvRk1DQkJEcXRXbWFnVHduMmZLUWd2LzdCOWZqZDNkL0YvT3JkTXVxWHZ6OTY5NVVBdmtDZzA2cFZCUHFVWUcvUHlZTDg4NXB2V3FOVHNYZGV0UTZmSjlCcDFTb0RmVXF3cjg3REJ3L2pnOUVIY2Vmak83Rm9WY1RMM3h1OWZTbUFmUUtkVnJVUjZMLzN4OC9GMnAvOGVSUmYrbkt3V0tselBWWGtxWE45dWVyTjB6RytvRm9IZ1U3TFdnMzBxU2JRMTc3Nk5jRytBQWVQb0MxWE9vSWZSM1hoQjZOM053TUdUS0RUcWl3Q2ZVcXdIMXNiUWY0a1IvQU1uVUNuVlZrRitwUmduOHZPOXM3K1BYbGJRZjY0ejhiYkxqWkg4SjV1WlhBRU9xM0tNdENuQlB1UjVwMGxYeFZkOEF5VlFLZFZXUWY2VkFyMnIveFpGRi8rU3JEWUViUmxFZW9Na1VDblZaMEk5S2t6ejBiUlZPeHJ6MzAxaHFnTFFmNTU5VzRkY2Q3YVdJWkNvTk9xVGdYNjFNQ0NQYzJTcDMzcnQzNXpLN3FuM3EyaXV2QzkwWHV2QmZTY1FLZFZuUXowcVo0SCsrcG15WmV2aVBLRmI0L2U4M0lidlNiUWFWV25BMzJxWjhHZXd3amFNZ2gxK2s2ZzA2cGVCUHBVeDRPOXIwSCt1RWxVNXkyZ29hOEVPcTNxVmFCUGRURFkweXg1dWlmUGJRUnQ4ZXJkMHpIK0I5M3Y5SkZBcDFXOURQU3BEZ1I3Nmx5Lyt2N1YrUFRlcHpFVVJ0cm9xOU1CTE1mNFlkUTNya1M1Y3oyN1lPL2VDTnJpMUJFYmt6anpzK2JEOHdFOW9rS25WYjJ1MEorVVFjVSs1Q0Qvb3ZxVjc0emV1UmpRRXdLZFZnMHEwS2RhQ1BadXo1SXZUeFhsRDgybzB4Y0NuVllOTXRDblZoRHNRK2hjUHhsTmN2U0hPM1JveXhMdjJBWDVySXAxOStuMGhRcWRWZzI2UW4vU2dpcjJheDljRStSektxTzYrUDNSdTY4RWRKaEFwMVVDL1FESERQYmh6Skl2ZzZOM3VzK1JPK1JtenFONG5ldUw0T2lkN2xPaDB5b1YrZ3crcTlpTEwzMDVpbWVlL2YybkJmbmlPWHFueXdRNnJSTG9jMGpCM2xUckQ1Nzk0N2g2VlpBdngvN1IrL1BOMGZ0dVFNZXNCZEFONlNqK045ZGk4ODFmQ2ZPbDJUOTYvM0ZBQndsMDZKRDNIcFN4VTVaeHY2NkNaU2xlK3MrTmI1d0w2QmlCRGgzeXEzdVQvUiszUzUzc3kzUTZDbFU2blNQUW9TT3VQaXgzNzFYMS9zY1A2anB1VjVOZ1dZcHpxblM2UnFCRFI3ejlhYm4rK005dmxaT29vZzZXUTVWTzF3aDA2SUM3WlRYYUhuLyszcnhzd255blZLVXZqeXFkYmhIbzBBRy92bGR1SFBUNWRPeitzRmFsTDRzcW5TNFI2SkM1VDhvNnJqdzhmQy83Unhya2xraVZUbmNJZE1qY3RMUDlNR21FN1Y1VldvU3lKS3AwdWtLZ1E4YjJxL085NnFsaGZiTWNyMnVRV3haVk90MGcwQ0ZqTi9lYXlydXUxNS8yZGVNd3hyWk1xblM2UUtCRHhuNTl2M3hxbUUvZExzc1lhNUJia3VMY0x6YzJadjYxZ0RZSWRNaFVXdk02WFNReml6VEc5cHRxN0M1OVNTYnh6SXNCR1JQb2tLbW5OY01kNUc1VnJ0dnp2aXoxU3dFWkUraVFvY2ZYdk01cnB4d0h5MUNzYTQ0alp3SWRNdlRrbXRkNXBBcGRnOXh5YUk0alp3SWRNbk43VXNXVGExN25aYy83MHB6VkhFZXVCRHBrNXEzN1paeFVhcEJyUWwyRDNNSVY2K000OHk4QkdSTG9rSkduclhtZHg4ZlZaTjBZMitJVkVmOGNrQ0dCRGhrNVRtZjdVVzdZODc0TWp0M0pra0NIVEN5eU9wOUtEWExHMkJhdFdDL2ptWDhLeUl4QWgweDh1TGZZTUorNk1kbXYwdDJuTDFBVjlibUF6QWgweU1RaW11RU9rdmE4MzZyR2pvZ1h5RDA2T1JMb2tJRjUxN3pPSysxNU44YTJTTVg2ZjJ4ODgyeEFSZ1E2WkdEUnpYQlBTbU5zMjZVOTc0dDBKdUpiQVJrUjZOQ3laVmZuVTd2MnZDOVljUzRnSXdJZFduYmx3WEx1emc5aXovdmlGQnJqeUl4QWh4WXRZczNyUEZLRjNsVHF3U0lVNjc5NC92bXZCMlJDb0VPTGx0WFpmcFQwWnJvR3VjV282elBuQWpJaDBLRWx5MWdrTTR1eXJ0ZTl4cllZZGRRNjNjbUdRSWVXTEx1ei9TaHBqTTJlOTVPck5jYVJFWUVPTFdpck9wOUtZMnoydko5Y1lhODdHUkhvMElKVmRyWWZ4cDczeGJnZlp6WUNNaURRb1FYdlpSRG9TVk9sV3paelFzOUc4ZmNCR1JEb3NHS3JXaVF6aTdFR3VSUFRHRWN1QkRxc1dKdk5jQWU1VlU3c2VUOFpnVTRXQkRxc1VFN1YrVlJxa05zcFZla25JTkRKZ2tDSEZjcWhHZTRnNmRqOVFWMjVUeitXWWwybk96a1E2TEFpMjN1clhmTTZyKzNTbStuSHBkT2RIQWgwV0pGY090c1BrMGJZN2xXbEt2MFlkTHFUQTRFT0s5RDJJcGxaM1d5cWRBMXk4MnYraTIwRXRFeWd3d3JrMXRsK21IRVRUY2JZNWxkSHZSSFFNb0VPUzlhVjZuektudmZqS0hTNjB6cUJEa3VXYTJmN1lkSVlXM3BpTlppSGhrSmFKOUJoeVhKdmhqdkkzYXBjdCtkOWRvVTdkRElnMEdHSmNsd2tNNnVkY2h6TTdoZlBQLy8xZ0JZSmRGaWlyalRESFNSVjZCcmtabGZXcHpZQ1dpVFFZVW02WEoxUDJmTSt1N1ZZMndob2tVQ0hKZWxhTTl4QlVvTmNFK29hNUdiUS9NRkhZeHl0RXVpd0JMbXZlWjNIeDlWazNSamIweFZSQ0hSYUpkQmhDYnJZMlg2VUcrVmVjRFRMWldpYlFJY0Y2OW9pbVZta0JqbGpiSkEzZ1E0TDF1WE85cVBjbU94WDZlN1REMkVXbmJZSmRGaWdQbGJuVTJuUCs2M0tFNnVRSzRFT0M5U0h6dmFqcEQzdnh0Z09Wa2V4RWRBaWdRNEwxTGRtdUNlbE1iYnQwcDUzeUpGQWh3WHB3eUtaV2V6YTh3NVpFdWl3SUgxdGhqdUlQZTlmcENtT3RnbDBXSUNoVk9kVHFVSnZLdlVBOGlIUVlRSDYzZ3gza1BSbXVnWTV5SWRBaHhQcTA1clhlWlIxdmU0MU5zaUhRSWNUNm50bisxSFNHSnM5NzVBSGdRNG4wT2RGTXJOSVkyejJ2RU1lQkRxY3dKQTYydzlqenp2a1FhRERNUTI5T245Y1U2VmJOZ010RStod1RHOTlxanFmR211UWc5WUpkRGltRHg4NlpuN2NyWEppenp1MFNLRERNUXh0a2N3c1VvUGNUam5rS3IxMjdVQ3JCRG9jZzJhNGc2Vmo5d2QxTmNoZ3E2TVE2TFJLb01PY1ZPZEgyeTY5bVE1dEVPZ3dKODF3UjBzamJQZXFjb2pWcWdxZFZnbDBtRU5hODNwbm9qcC9tcHRObFQ2MEJybkNIVG90RStnd2h5R3ZlWjNIdUFselkyeXdXZ0lkWm1TUnpIeUd0dWU5K1RjZEJiUklvTU9NZExiUEo0MnhwU2RXQTFnSmdRNHpVSjBmejkycVhCL0tudmNpaWxGQWl3UTZ6RUJuKy9IdGxPTVlnbHBUSEMwVDZEQURhMTZQTDFYb1EyaVFLMkp0Rk5BaWdRNVBZWkhNeVExaHozc2RnNXk5SnlNQ0haNUNNOXpKcFFhNUp0UjdIWGpqS0g0YjBDS0JEa2RRblMvT3g5Vmt2YzlqYkg4WTQxRkFpd1E2SEVGMXZsZzN5cjNvcDNyMy9Hamt5SjFXQ1hRNFJGcnpxanBmck5RZzE4Y3h0dHJJR2hrUTZIQ0kveldxdGhRM0p2dFZlcStxV1h2Y3lZRkFod09rUlRMWDlveXFMVVBhODM2cjZ0MFRxMXNCTFJQb2NBQjM1OHVWOXJ6M2FZek5IbmR5SU5EaENkYThMbDhhWTlzdSs3UG4zVklaY2lEUTRRbXE4OVhZN2RHZTk3Mm9yZ2EwVEtERFkvYnFwbkljdXp0ZmxiN3NlZi9IMFR2dTBHbWRRSWZIcEozdFJ0VldKMVhvVGFVZVhWWnJpQ01UQWgwZTQ3aDk5ZEtiNlIxdmtCc0ZaRUNndzJlc2VXMUhXZGZyWFg2TnJWQ2hrd21CRHA5Um5iY25qYkYxZDg5N0lkREpna0NIc09hMWJXbU1yYXQ3M25XNGt3dUJEbzFmM1ZlZHQ2MmJlOTdyWFIzdTVFS2dNM2hwa1l4UnRUdzBWWHJYbHMwSWM3SWgwQms4ZCtmNUdIZXZRVTZna3cyQnpxQlo4NXFmVytXa1EzdmUxellETWlIUUdUVFZlWDVTZzl4TzJZMWZsOVB4OEkyQVRBaDBCc3ZkZWI3U3NmdUR1c3I2UGoxdGlEcy9HbmtIbld3SWRBWXJoYmxSdFh4dGw3bS9tVjY3UHljckFwM0JjdHlldHpUQ2RxOHFzNjJBaTFoN0xTQWpBcDFCc3VhMUcyNDJWWHF1RFhLVGVQaG1RRVlFT29Pa091K0djUlBtT1k2eHBmdnpINHhHbzRDTUNIUUd4NXJYYnNseHozc1I5V1pBWmdRNmcyUE5hN2VrTWJiMHhHcGtwSTdhL1RuWkVlZ01pbEcxYnJwYmxldjU3SG12ZDc4N2V0ZjhPZGtSNkF5S3UvUHUyaW5Ia1lNNmlzMkFEQWwwQnNPYTEyNUxGWG9PRFhMTk4wM0g3V1JKb0RNWXF2UHV5MkhQKzZuWWV6MGdRd0tkUVhCMzNnK3BRYTRKOWRZYTVKby9TcnhtM1N1NUV1Z01nald2L2ZGeE5WbHZhNHpOY1RzNUUrZ01ndVAyZnJsUjdzWHExYnVPMjhtWlFLZjNySG50bjlRZ3Qrb3hOc2Z0NUU2ZzAzdXE4MzY2TWRtdjBsY1lzUFhsZ0l3SmRIck5tdGYrU252ZWIxV3JlV0sxK1IwMHNreUczQWwwZXMyYTEzNUxlOTVYTWNaV1JGd095SnhBcDdlTXF2VmZHbVBiTHBlLzUzMFNlNjhHWkU2ZzAxdnV6b2RoZDhsNzN1dm03dHhUcVhTQlFLZVhySGtkbHVYdWVkY01SemNJZEhwSmRUNHNxVUp2S3ZWWU5NMXdkSWxBcDNmY25ROVRlak45MFExeXpUZklTd0VkSWREcEhXdGVoNm1zNi9WRnZzYVdxdk52ajk3V0RFZG5DSFI2eDNIN2NLVXh0a1h0ZVZlZDB6VUNuVjZ4NW5YWTBoamJJdmE4cTg3cElvRk9yNmpPV2NTZWQ5VTVYU1RRNlkwUEg2ck9lYVNwMG8rOWJFWjFUbGNKZEhyanJVL05uZlBJK0FRTmNxcHp1a3FnMHd0RzFYalNyWEl5OTU1MzFUbGRKdERwQlhmblBDazF5TzJVOC8yK1VKM1RaUUtkenJQbWxjT2tZL2NIZFRYamZYcTlxVHFueXdRNm5hYzY1eWpiNVd4dnBrOWlmQ0dnd3dRNm5aYXE4MnQ3N3M0NVhCcGh1MWVWVDZuU3ExZThxRWJYQ1hRNkxUWEM3ZFZHMVRqYXphWktQNnhCTGpYQ1RXTHkwNENPRStoMG11TjJaakZ1WXZ1d01iYlVDS2M2cHc4RU9wMWx6U3Z6T0dqUGV4MzFaWTF3OUlWQXA3TlU1OHdqamJHbEoxYW5QMDlIN1UzRXZ4elFFd0tkVHJMbWxlTzRXNVhyMHozdmRaUVhIYlhUSndLZFRyTG1sZVBhS2NmTjM2dEwzeHU5OTFwQWp3aDBPc2VhVjA3aVhsV052ak42MTFFN3ZTUFE2UngzNXh4WFhjZW9xc2JuQTNwSW9OTXAxcnh5RWxVOXVYanhvNDlHQVQwazBPa1UxVG5IVmRmMXBZczNiN28zcDdjRU9wMmhPdWU0cWlwZWVmSEdOZmZtOU5ycGdJNzRjRStZTTcrbU10OTY2ZWExaXdFOXAwS25NOTY2TDlDWno2TW11TWtQQXdaQW9OTUoxcnd5cjJsSHV5WTRoa0tnMHdtYTRaaUhNR2VJQkRyWlU1MHpEMkhPVUFsMHNuZmxnYnR6WmlQTUdUS0JUdFp1VHlwclhwbUpNR2ZvQkRwWjA5bk9MTkpvbWpCbjZBUTYyYkpJaGxsVWRWeXU3bjhpekJrOGkyWElsczUybmlhdGMzM0pCampZSjlESmt1cWNvOVFSdTFVMXVXQTNPL3cvZ1U2V3JIbmxNSS91eXljL2RNUU9ueWZReVpKbU9BNlNIbG14bHgwT0p0QnBXYjMrNUdjc2t1RkphU1N0cU9vWFh2cm8yaHNCSEVpZzA3WXZCTHBtT0I2WEd0K3ErNS84OU9MdTdtNEFoeExvWkVWMXpsUWQ5V1pWVGk2NEs0ZlpDSFN5WXMwcktjaUxNaTY5NkhnZDVpTFF5Y2IybmpXdlE1YnV5YU9vTHIxNC9mcXJBY3hOb05PeVl0UjhLOTlJSDcybk9oK2tWSkUzZjcvODRnMUJEaWNoMEdsWnZkL29aSkhNOERoYWg4VVM2TFNxaU5pcUk4N3FiQitHdE9HdE9WdC9SZGM2TEo1QXAyMWJxdk4rU3lGZVZIRzVDZkxYVk9Pd1BFVkFpKzZjM1ZqL3IwK0s5Ly9uMDhsNjBCdk5jZnBXVVJXYktjVC9WWWpEU2doMFd2ZVRyMzN0cFZPeDlwT2dzNllCWHRmVlZ2WGczdXVPMDJIMUJEcForT2xmL3ZXUGk2SytGR1J0L3c0ODZsRVJ4VlpkTkNFK2lhM3l3U2R2Q25Cb24wQW5HMDJsZnZaVXZmWmlFeFJubThBNEc2ekVvMGExZUJUSVJZeUs0ck9mVjdGYm42cEhNYWwzcTFObjNveDd1eVBCRFFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkQ5SC9FRGptS2lsSmJhZ0FBQUFCSlJVNUVya0pnZ2c9PSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIkZJRE9fMl8wIl0sImV4dGVuc2lvbnMiOlsiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiODIwZDg5ZWRkNjVhNDA5ZTg1Y2JmNzNmMDU3OGY4MmEiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwidXAiOnRydWUsInV2Ijp0cnVlfSwibWF4TXNnU2l6ZSI6MjA0OH19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDE5LTAyLTA4IiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJWYW5jb3N5cyBpT1MgQXV0aGVudGljYXRvciIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMTkwMTA5MDAyIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjAuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4wLjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMTktMDItMDgifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDE5LTAyLTA4In0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiYzU1Zjc0YzcwYzY4ZThkY2U1YjdmZGI0Y2RkYTc3MmFkOTI5NGM2NyIsImZkMzY1NzNkMjRiZTNmN2YzMmFkNTA0MDI3MWFiNjEwMzVhMWZjYWQiXSwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiYzU1Zjc0YzcwYzY4ZThkY2U1YjdmZGI0Y2RkYTc3MmFkOTI5NGM2NyIsImZkMzY1NzNkMjRiZTNmN2YzMmFkNTA0MDI3MWFiNjEwMzVhMWZjYWQiXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkdvVHJ1c3QgSWRlbSBDYXJkIFUyRiBBdXRoZW50aWNhdG9yIn0sImRlc2NyaXB0aW9uIjoiR29UcnVzdCBJZGVtIENhcmQgVTJGIEF1dGhlbnRpY2F0b3IiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MiwicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCIsInJlbW90ZV9oYW5kbGUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVsZXNzIiwibmZjIiwiYmx1ZXRvb3RoIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlCcURDQ0FVK2dBd0lCQWdJQkFUQUtCZ2dxaGtqT1BRUURBakE3TVNBd0hnWURWUVFEREJkSGIxUnlkWE4wSUVaSlJFOHlJRkp2YjNRZ1EwRWdNakVYTUJVR0ExVUVDZ3dPUjI5VWNuVnpkRWxFSUVsdVl5NHdJQmNOTWpFd016QXlNRFl5TXpFM1doZ1BNakExTVRBeU1qTXdOakl6TVRkYU1Ec3hJREFlQmdOVkJBTU1GMGR2VkhKMWMzUWdSa2xFVHpJZ1VtOXZkQ0JEUVNBeU1SY3dGUVlEVlFRS0RBNUhiMVJ5ZFhOMFNVUWdTVzVqTGpCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQkE3Nlp5RzNlK0Rab1cvS3ZNMzZYSkFKNkJMOWtYTU5qRXY0cUdJRDVsQThaOHVSZU0xWWZNaW81bkVITFUyU1pMUTNxWFJSdnhHTjRJK0g1KzZmVncyalFqQkFNQThHQTFVZEV3UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdFR01CMEdBMVVkRGdRV0JCUnMrVWttTTV4VWs2L3o1UU50V0IyNmk0dzc3REFLQmdncWhrak9QUVFEQWdOSEFEQkVBaUJBK0lYNUYvODdXL2VtWmtpSlRIcXJpTEZaT2E3OTd6c0UvMEtQN0FVNVFnSWdCNjR4RnFQU0JDNEtpMVVyck5YOVYydGhiKzQ1UmJ0U1ZtaTY2V1YrZ2xFPSIsIk1JSUJ6akNDQVhPZ0F3SUJBZ0lKQU1oVi92UVl1NEtBTUFvR0NDcUdTTTQ5QkFNQ01Ec3hJREFlQmdOVkJBTU1GMGR2VkhKMWMzUWdSa2xFVHpJZ1VtOXZkQ0JEUVNBeU1SY3dGUVlEVlFRS0RBNUhiMVJ5ZFhOMFNVUWdTVzVqTGpBZUZ3MHhPVEV5TURRd056QXpNREZhRncwME9URXhNall3TnpBek1ERmFNRHN4SURBZUJnTlZCQU1NRjBkdlZISjFjM1FnUmtsRVR6SWdVbTl2ZENCRFFTQXlNUmN3RlFZRFZRUUtEQTVIYjFSeWRYTjBTVVFnU1c1akxqQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJKSGdLOWZOcU5FV0lZVHNaL2dOaTE3enBFcks3RkMxWW8rRnpxUlZNWUdVSmdBSjl2ZzMxaVRDSjFWWXhiQUtNUWJsTEdrVm4vZGZQNzNnZVRLZWQ5T2pZREJlTUF3R0ExVWRFd0VCL3dRQ01BQXdEZ1lEVlIwUEFRSC9CQVFEQWdFR01CMEdBMVVkRGdRV0JCUmdMWFdkV2VyMWtTR3BwZ1BsaVppMUhzWVBoREFmQmdOVkhTTUVHREFXZ0JSZ0xYV2RXZXIxa1NHcHBnUGxpWmkxSHNZUGhEQUtCZ2dxaGtqT1BRUURBZ05KQURCR0FpRUF1anJLV1p3K1MwVGZHMWJKSmNzcW1HdTVXTGJCMkVnb3JEMmhBMnE2Qm9JQ0lRQ2l5eG52QW42TWkrRGRSbnczU1FHUVpvTEtGS3dIcjRYR05JTzVwQUhBSEE9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFqQ0FZQUFBRDE3Z2hhQUFBQUJHZEJUVUVBQUxHT2ZQdFJrd0FBQUNCalNGSk5BQUNIRHdBQWpBOEFBUDFTQUFDQlFBQUFmWGtBQU9tTEFBQTg1UUFBR2N4elBJVjNBQUFLTDJsRFExQkpRME1nVUhKdlptbHNaUUFBU01lZGxuZFVWTmNXaDgrOWQzcWh6VERTR1hxVExqQ0E5QzRnSFFSUkdHWUdHTW9Bd3d4TmJJaW9RRVFSRVFGRmtLQ0FBYU9oU0t5SVlpRW9xR0FQU0JCUVlqQ0txS2hrUnRaS2ZIbDU3K1hsOThlOTM5cG43M1AzMlh1ZnRTNEFKRThmTGk4RmxnSWdtU2ZnQjNvNDAxZUZSOUN4L1FBR2VJQUJwZ0F3V2VtcHZrSHV3VUFrTHpjWGVycklDZnlMM2d3QlNQeStaZWpwVDZlRC8wL1NyRlMrQUFESVg4VG1iRTQ2UzhUNUlrN0tGS1NLN1RNaXBzWWtpaGxHaVprdlNsREVjbUtPVytTbG4zMFcyVkhNN0dRZVc4VGluRlBaeVd3eDk0aDRlNGFRSTJMRVI4UUZHVnhPcG9odmkxZ3pTWmpNRmZGYmNXd3loNWtPQUlva3RnczRySGdSbTRpWXhBOE9kQkh4Y2dCd3BMZ3ZPT1lMRm5DeUJPSkR1YVNrWnZPNWNmRUN1aTVMajI1cWJjMmdlM0l5a3pnQ2dhRS9rNVhJNUxQcExpbkpxVXhlTmdDTFovNHNHWEZ0NmFJaVc1cGFXMW9hbWhtWmZsR28vN3I0TnlYdTdTSzlDdmpjTTRqVzk0ZnRyL3hTNmdCZ3pJcHFzK3NQVzh4K0FEcTJBaUIzL3crYjVpRUFKRVY5YTcveHhYbG80bm1KRndoU2JZeU5Nek16amJnY2xwRzRvTC9yZnpyOERYM3hQU1B4ZHIrWGgrN0tpV1VLa3dSMGNkMVlLVWtwUWo0OVBaWEo0dEFOL3p6RS96andyL05ZR3NpSjVmQTVQRkZFcUdqS3VMdzRVYnQ1Yks2QW04S2pjM24vcVluL01PeFBXcHhya1NqMW53QTF5Z2hJM2FBQzVPYytnS0lRQVJKNVVOejEzL3ZtZ3c4RjRwc1hwanF4T1BlZkJmMzdybkNKK0pIT2pmc2M1eElZVEdjSitSbUxhK0pyQ2RDQUFDUUJGY2dERmFBQmRJRWhNQU5Xd0JZNEFqZXdBdmlCWUJBTzFnSVdpQWZKZ0E4eVFTN1lEQXBBRWRnRjlvSktVQVBxUVNOb0FTZEFCemdOTG9ETDREcTRDZTZBQjJBRWpJUG5ZQWE4QWZNUUJHRWhNa1NCNUNGVlNBc3lnTXdnQm1RUHVVRStVQ0FVRGtWRGNSQVBFa0s1MEJhb0NDcUZLcUZhcUJINkZqb0ZYWUN1UWdQUVBXZ1Vtb0oraGQ3RENFeUNxYkF5ckEwYnd3ellDZmFHZytFMWNCeWNCdWZBK2ZCT3VBS3VnNC9CN2ZBRitEcDhCeDZCbjhPekNFQ0lDQTFSUXd3UkJ1S0MrQ0VSU0N6Q1J6WWdoVWc1VW9lMElGMUlMM0lMR1VHbWtYY29ESXFDb3FNTVViWW9UMVFJaW9WS1EyMUFGYU1xVVVkUjdhZ2UxQzNVS0dvRzlRbE5SaXVoRGRBMmFDLzBLblFjT2hOZGdDNUhONkRiMEpmUWQ5RGo2RGNZRElhRzBjRllZVHd4NFpnRXpEcE1NZVlBcGhWekhqT0FHY1BNWXJGWWVhd0IxZzdyaDJWaUJkZ0M3SDdzTWV3NTdDQjJIUHNXUjhTcDRzeHc3cmdJSEErWGh5dkhOZUhPNGdaeEU3aDV2QlJlQzIrRDk4T3o4ZG40RW53OXZndC9BeitPbnlkSUUzUUlkb1JnUWdKaE02R0MwRUs0UkhoSWVFVWtFdFdKMXNRQUlwZTRpVmhCUEU2OFFod2x2aVBKa1BSSkxxUklrcEMwazNTRWRKNTBqL1NLVENacmt4M0pFV1FCZVNlNWtYeVIvSmo4Vm9JaVlTVGhKY0dXMkNoUkpkRXVNU2p4UWhJdnFTWHBKTGxXTWtleVhQS2s1QTNKYVNtOGxMYVVpeFJUYW9OVWxkUXBxV0dwV1dtS3RLbTBuM1N5ZExGMGsvUlY2VWtackl5MmpKc01XeVpmNXJETVJaa3hDa0xSb0xoUVdKUXRsSHJLSmNvNEZVUFZvWHBSRTZoRjFHK28vZFFaV1JuWlpiS2hzbG15VmJKblpFZG9DRTJiNWtWTG9wWFFUdENHYU8rWEtDOXhXc0pac21OSnk1TEJKWE55aW5LT2NoeTVRcmxXdVR0eTcrWHA4bTd5aWZLNzVUdmtIeW1nRlBRVkFoUXlGUTRxWEZLWVZxUXEyaXF5RkFzVlR5amVWNEtWOUpVQ2xkWXBIVmJxVTVwVlZsSDJVRTVWM3E5OFVYbGFoYWJpcUpLZ1VxWnlWbVZLbGFKcXI4cFZMVk05cC9xTUxrdDNvaWZSSytnOTlCazFKVFZQTmFGYXJWcS8ycnk2am5xSWVwNTZxL29qRFlJR1F5TldvMHlqVzJOR1UxWFRWek5YczFuenZoWmVpNkVWcjdWUHExZHJUbHRITzB4N20zYUg5cVNPbkk2WFRvNU9zODVEWGJLdWcyNmFicDN1YlQyTUhrTXZVZStBM2sxOVdOOUNQMTYvU3YrR0FXeGdhY0ExT0dBd3NCUzkxSG9wYjJuZDBtRkRrcUdUWVlaaHMrR29FYzNJeHlqUHFNUG9oYkdtY1lUeGJ1TmU0MDhtRmlaSkp2VW1EMHhsVEZlWTVwbDJtZjVxcG0vR01xc3l1MjFPTm5jMzMyamVhZjV5bWNFeXpyS0R5KzVhVUN4OExiWlpkRnQ4dExTeTVGdTJXRTVaYVZwRlcxVmJEVE9vREg5R01lT0tOZHJhMlhxajlXbnJkemFXTmdLYkV6YS8yQnJhSnRvMjJVNHUxMW5PV1Y2L2ZNeE8zWTVwVjJzM1lrKzNqN1kvWkQvaW9PYkFkS2h6ZU9LbzRjaDJiSENjY05KelNuQTY1dlRDMmNTWjc5em1QT2RpNDdMZTVid3I0dXJoV3VqYTd5YmpGdUpXNmZiWVhkMDl6cjNaZmNiRHdtT2R4M2xQdEtlMzUyN1BZUzlsTDVaWG85Zk1DcXNWNjFmMGVKTzhnN3dydlovNDZQdndmYnA4WWQ4VnZudDhINjdVV3NsYjJlRUgvTHo4OXZnOTh0ZnhUL1AvUGdBVDRCOVFGZkEwMERRd043QTNpQklVRmRRVTlDYllPYmdrK0VHSWJvZ3dwRHRVTWpReXRERjBMc3cxckRSc1pKWHhxdldycm9jcmhIUERPeU93RWFFUkRSR3pxOTFXNzEwOUhta1JXUkE1dEVablRkYWFxMnNWMWlhdFBSTWxHY1dNT2htTmpnNkxib3Ird1BSajFqRm5ZN3hpcW1ObVdDNnNmYXpuYkVkMkdYdUtZOGNwNVV6RTJzV1d4azdHMmNYdGladUtkNGd2ajUvbXVuQXJ1UzhUUEJOcUV1WVMvUktQSkM0a2hTVzFKdU9TbzVOUDhXUjRpYnllRkpXVXJKU0JWSVBVZ3RTUk5KdTB2V2t6Zkc5K1F6cVV2aWE5VTBBVi9VejFDWFdGVzRXakdmWVpWUmx2TTBNelQyWkpaL0d5K3JMMXMzZGtUK1M0NTN5OURyV090YTQ3VnkxM2MrN29lcWYxdFJ1Z0RURWJ1amRxYk16Zk9MN0pZOVBSellUTmladC95RFBKSzgxN3ZTVnNTMWUrY3Y2bS9MR3RIbHViQ3lRSytBWEQyMnkzMVd4SGJlZHU3OTlodm1QL2prK0Y3TUpyUlNaRjVVVWZpbG5GMTc0eS9hcmlxNFdkc1R2N1N5eExEdTdDN09MdEd0cnRzUHRvcVhScFR1bllIdDg5N1dYMHNzS3kxM3VqOWw0dFgxWmVzNCt3VDdodnBNS25vbk8vNXY1ZCt6OVV4bGZlcVhLdWFxMVdxdDVSUFhlQWZXRHdvT1BCbGhybG1xS2E5NGU0aCs3V2V0UzIxMm5YbFIvR0hNNDQvTFErdEw3M2E4YlhqUTBLRFVVTkg0L3dqb3djRFR6YTAyalYyTmlrMUZUU0REY0xtNmVPUlI2NytZM3JONTB0aGkyMXJiVFdvdVBndVBENHMyK2p2eDA2NFgyaSt5VGpaTXQzV3Q5VnQxSGFDdHVoOXV6Mm1ZNzRqcEhPOE02QlV5dE9kWGZaZHJWOWIvVDlrZE5xcDZ2T3lKNHBPVXM0bTM5MjRWek91ZG56cWVlbkw4UmRHT3VPNm41d2NkWEYyejBCUGYyWHZDOWR1ZXgrK1dLdlUrKzVLM1pYVGwrMXVYcnFHdU5heDNYTDYrMTlGbjF0UDFqODBOWnYyZDkrdytwRzUwM3JtMTBEeXdmT0Rqb01YcmpsZXV2eWJhL2IxKytzdkRNd0ZESjBkemh5ZU9RdSsrN2t2YVI3TCs5bjNKOS9zT2toK21IaEk2bEg1WStWSHRmOXFQZGo2NGpseUpsUjE5RytKMEZQSG95eHhwNy9sUDdUaC9IOHArU241Uk9xRTQyVFpwT25wOXluYmo1Yi9XejhlZXJ6K2VtQ242Vi9ybjZoKytLN1h4eC82WnRaTlRQK2t2OXk0ZGZpVi9LdmpyeGU5cnA3MW4vMjhadmtOL056aFcvbDN4NTl4M2pYK3o3cy9jUjg1Z2ZzaDRxUGVoKzdQbmwvZXJpUXZMRHdHL2VFOC9zM0JDa2VBQUFBQ1hCSVdYTUFBQTdFQUFBT3hBR1ZLdzRiQUFBQUlYUkZXSFJEY21WaGRHbHZiaUJVYVcxbEFESXdNVGc2TURVNk1qZ2dNVFk2TkRJNk1UVDlod3JmQUFBSUhVbEVRVlJZUjUxWEMxQlU1eFgrZGxsZ1FkNFBVUkFmaVNoYU5HMWk3Qmh0bTA1S1VrblRXQitOUWEwWUcyT0Rsam9PR2sxaU81MXFOR1Fjazlva1JKczA0SXc2cHVOMFRFeFRhT3NZUzdTU3BocGYxS0FWQlJaaFdSNHJJTHQ3YjcvejM3dnNRaGFDL1M3L3N2ejN2TS81ei9teDZBU0dDWjJQL0ZnczhwZjY2SU5mak1WNE9XeFl6ZC9EZytaWFlFSGxKNS9qdmdXYjhPanFIV2hzY2FuOU8xVXVHRjRFaE1RVTN0cmhSdDdxbDNHcXNocElpQUY4UHFEck5wWVY1T0gxRjFjZ0pqb3FLRkxDSStJSE4yeDRFVENWLzN6Ykg1QThjUkZPVlY4Q1JpY0RVWkZBTkpmVml2SURGYWo2OXhlS1Rpa2tqNmJSRkgxdzVZSkJJdERmNmo5Vm5zYThaM2JRV3k4UVM2K3Q1anQzdDRyQTFzMEYyTHpxY1dPUDZMMWFwNHlLR0RmRzNDRUdDNFFZRUF5Tmp4KzExNXYwS1krdTE1R1dweU1uWDhjMFdVdDFaRCtoSStsaGZXSFJUdDNyOVpuVUJocFhiZFRQSVZ3L2p4RzZZODBXYzVkeWZRRzV3UmkwQnZLTGQyTi8yUWZNY3l4Z1o1Z0ZrdStXZG95Y09BWlYrMytOdXpQVGpIM0N0ZnNkT05ZVzAxRWZ3cERBSFkxUEIvKzJJV05mS2VLWHpEY0lCOENpTVZIQjFmdjJINDloWldFSk1NSU94SXpnRHUzVFdQNGRYVFRFaHZKWGlyRDBzVGtHTWRGVGZRWjEzMTRBWDNjakZiTXUrQ2xRaGFoaTd1WFRnc2praVJoejdCRHNPZG5xRFZnZkZxYXlMd0pmWEcvQzdDVy93czNMekY5S29sR2U4cWFuVnlsZnUzWWhYbnUrUUVnVnZNMnRhSmozRkRxcmp0TEhWTzdZMUw1RXdJZDJxclpRUkx6Nk5QWTkzRzlHYk80aVpCNHRKM21ZTXEvUEFNdTRIOUhEQ0s1d1E3R1BYamUxWXNhRDk2TGluUmVZaVdnaFUzQ3NmZzdPMHRmb2F3eUZSQ3RCdWdxNUMySFdSR1JXSFlidTlURXk4NkZyN2FSTDRuc3hpV0pwbkMwcEExbk9jMHFXTXErK3ljV3ozQU5FbXNwN2JzTVdic1hISCszQzZmZTI5U2x2ZS9jUUxsamk0Q3A5aS82bWtGbVVpODl1cmphTTNMb2RrM3gxaVBybWZZaWVQUlBadmhzWXViMkVLV2dtdDRlVU9ubGk0V210ZytabVNna1ZBWWV6RGFOemxnSnBTVHhEWHFTUFRrTDlYM2NyQWtIM3ljOXc0NGNyNEdtdVVlRVdNWVkzM2FyUUVuOWNnUFNEYnhqRVJBZUZoOW1zTENQV2tZbmFqQm53TlRTUkw0d0d0V055VnlPc1VYWXpRU0pPTXFHV3h2N0NWSmk0Tm1zZXJzeWFCYTM1SnBWTDFRdUxGNzFvZ0gzYTF6Q3BycmFmOHBLM2p5QithajVpNk5EcmJFNSsyTWFtMDFpdmlvSlJuTExNRkNpb1BXUFRMQXNGOTBrcHNsSDhKa2RSd3UxVVFpYjhwUUlUenY0TjRabnBpdTVFOVVWRTVPUmp3NWE5UUJ4VEZoR093azBCdytRSUc5TDdJMkNBNkF4UzdFY1k3R1NVRXBJaTYwYnE5aDNJMXVzeEl2Yzc2djMxbXk1TW03Y0IzM3FrQ0I1aFQ0NGpFNDhpajVoTkRQa0tCQXdZQk1vdXRYZ3E2RlhLeG1mVnZxQjljU0hHM3JNTTV5NWVBektZbnJCUVBnYndaZmNHU2NGQXlBRlNqOFVnYjMxMUR5NWFZdUErZUFqVzlCVGo5SWlCYnA2a0xzNEh2eVpwWUVFWU9nWHNUQU1aQk1JazNpdVoxa2hjdWVzQk5QNWlIVk9UeUhuRHdTUkdkN05aT1Z3b0xseUFqVDliUUNONHhDZ3FNdHhvVG41STdSaEZHRURBQUU0dnRRWkFUTExLWTJIbjZ2YkF3MGtuUFVCMmRhMFhXa01MN3YxNkZ0cHEzOFBMNi9QWmlHaVFNUEdYUFZ3aUU0Q1N3eWNZUVJFZ1Y0Z2lORG9jUDNrOGpXNG12VjVUcDhFZGw0REtEM2JpMDBOYkVXODJLMWNudlRmSGRiQTArUzZTNUFsRy93aUVxQUdibW15R2Fqa05HanBWMTB2NzdXNU1haitIaDc2UnBlamFlVGVZdGZnRnZQSDdJN3lrUkNtZVlJamtyNDVBaUJxUXJxV2hoK0o2MkV3YmtMQnlKYWJxSFVoYUV4aE1ULzl5RHhMR1BZNlQvNnBoRCtBRUZXMnNxYzViUnJzVkRCMEJDWDFRRGRnNHFmeklkckczVDc4SEVWT21ZSEp6RTBidDVhZzI4ZGJCU2xnbXpNZmVzZytCZEU1RXVUZElGQ1VObkNjbHhjdE1TbTVUdGhIRi9sRldHbFhxbVdQMWhVM2s4alVIL256aWpMeENXRUlpeHA5aDE3dndkOWhTT0N1STA1OWZRY29EcS9ETXVsMjhNekRjZnE5djh6VGNhTWFTUmQrRmZ2VXdpcGJuS1hxQnQxRUdFZ3QzUUdxVUFaR1I5RmpHcjRBRnBETVZjeGMraHlrL0tFYWR3Mm5zRTIyOEY4eGMvQ0ptUGxRSVoxdUhlVytnQ0M5NUcxdVJNM2s4NmkvdHg3NGRhMHdPOHJ4Wnpna2FEMi9kTmRvWXJpS2dNN0hRZUxzaSttNUV1U3QrdzRyK0I1QnFDcFZLRm8rYTIvRFRaK2NqbFMzMnBhM3ZBb2xCVnpTcG1YWTM1M3NjanY1dUEzTG5URGYyaWE0VHAxRC95Rko0dWhwWXlNbFVha3hRTDBlM0xUNEZrOXA0c3laTUE5UlhsQjA1Z2VVYk9JYWxveVdhVFVad2k5MU5HbFdNakZkelQvSk1iTnU4SEp1ZUR0eUl2YzFPM0ppN0RMYytyZUNCVFNPMVRYR0kxeDdjUk95TTd5SHo0OE93MEFuWlZ3WUlZL0M5c0xoa0gxNTVxWXlEaFVjd2lxTlp2ZU9TT3VuMXNPczU4Y1JUaitIQXppS0R3VVRqVDliQlZWNUt4WEdrdGxPcDhQbW91aFVSOWpSa1ZCN2dSZVYrZzFqcVRlVEtoU1FVdkpwUG4vM2tGbDdKNXhyWDhLbFBxdTlaMzErbk8xcmFUQ29EemxmMzhDcHU1MVU4VWE5Qkp0ZFkvUkxYQmY1OUhyRzZzN1RNcEpScmYvOXIvSmNNa0lqd3B3L1Y1MnYxMURtcmRRdi9MM2ovK0dmbXJvSE9pdVA2ZjJLenFDUmFLYXpCZUs1eCtrV2tjUzlLYnloWWIxSUtSSzZ4Z2pIby93VkR3Y09yVmIzaytleHhoanVGZ1phaEkySWt6MDJJdVQ4WFk5N2ZCOXRJS1Q2VnZFRmhkSjRoSVNJQ05qYXRmUjQxR2FQUWZmWXMxWTd1VTY0eHo5WUlPKzZxK2dUai8vbWhvVng4QzdDR2hrVGdUbkQ3OG4vMXE5TWZaczRqR2VwVWhqcWV1VTdTbmJ2Mm1oUjNoanN5UUdOaCtqUG8vdWlZWHBlWHJ6dUt0Z1Q5TnhuNi83K2g4SC9WUUNpSWtLRnlIUnJBL3dDNGUrTytaMWNuNFFBQUFBQkpSVTVFcmtKZ2dnPT0ifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMC0wOS0wMiIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiR29UcnVzdCBJZGVtIENhcmQgVTJGMTEwMDIwMTcwNDAzMDAxIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVMkYxMTAwMjAxNzA0MDMwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMi41IiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjMuMCJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjAtMDktMDIifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyIwOTZiZmM4YmRiYWFhNzQwYjllZDhmNzRiMDU0YjVlOGE4MTg0MWQyIl0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjA5NmJmYzhiZGJhYWE3NDBiOWVkOGY3NGIwNTRiNWU4YTgxODQxZDIiXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlRydXN0S2V5IFQxMjAgVTJGIEF1dGhlbnRpY2F0b3IifSwiZGVzY3JpcHRpb24iOiJUcnVzdEtleSBUMTIwIFUyRiBBdXRoZW50aWNhdG9yIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX0seyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInJlbW90ZV9oYW5kbGUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MjU2LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQ2dqQ0NBaWlnQXdJQkFnSUJBVEFLQmdncWhrak9QUVFEQWpDQm5URUxNQWtHQTFVRUJoTUNTMUl4RGpBTUJnTlZCQWdNQlZObGIzVnNNUkF3RGdZRFZRUUhEQWRIWVc1bmJtRnRNUmN3RlFZRFZRUUtEQTVsVjBKTklFTnZMaXdnVEhSa0xqRVpNQmNHQTFVRUN3d1FRMlZ5ZEdsbWFXTmhkR1VnVlc1cGRERVpNQmNHQTFVRUF3d1FaVmRDVFNCRFpYSjBhV1pwWTJGMFpURWRNQnNHQ1NxR1NJYjNEUUVKQVJZT2FXNW1iMEJsTFhkaWJTNWpiMjB3SUJjTk1qTXdOekV4TURNME5qRTBXaGdQTWpBM016QTJNamd3TXpRMk1UUmFNSUdkTVFzd0NRWURWUVFHRXdKTFVqRU9NQXdHQTFVRUNBd0ZVMlZ2ZFd3eEVEQU9CZ05WQkFjTUIwZGhibWR1WVcweEZ6QVZCZ05WQkFvTURtVlhRazBnUTI4dUxDQk1kR1F1TVJrd0Z3WURWUVFMREJCRFpYSjBhV1pwWTJGMFpTQlZibWwwTVJrd0Z3WURWUVFEREJCbFYwSk5JRU5sY25ScFptbGpZWFJsTVIwd0d3WUpLb1pJaHZjTkFRa0JGZzVwYm1adlFHVXRkMkp0TG1OdmJUQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJBaCtvZUt5TFNnNzk3STZwSm9PdXYySzBiWWpLWUdRZWRJTVpBZ2hpWlA2K29Ed0NBN3pXYWlaell0M2s4YWtRM3FhNFRuakE4ZENPOXovSUtLSHk3YWpWVEJUTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0hRWURWUjBPQkJZRUZMY245L0dJQy9iYUt0MEd6M3hJNE9FWHVSVCtNQXNHQTFVZER3UUVBd0lCQmpBUkJnbGdoa2dCaHZoQ0FRRUVCQU1DQUFjd0NnWUlLb1pJemowRUF3SURTQUF3UlFJaEFOVm5KZGUvL3RCTHE4TUREaStTQWQ2VWRZSVpTbmc0UE1xbXlOcnZaajY0QWlBWDB4U3pBaEZhQ0NwL3VocFZnbmxGK1hCZ3J3QUlzb3RaR1RCNnJrQjMxQT09IiwiTUlJQ3BUQ0NBa3FnQXdJQkFnSUJBVEFLQmdncWhrak9QUVFEQWpDQnJ6RUxNQWtHQTFVRUJoTUNTMUl4RVRBUEJnTlZCQWdNQ0ZObGIzVnNMVk5wTVJNd0VRWURWUVFIREFwSFlXNW5ibUZ0TFVkMU1SY3dGUVlEVlFRS0RBNWxWMEpOSUVOdkxpd2dUSFJrTGpFaU1DQUdBMVVFQ3d3WlFYVjBhR1Z1ZEdsallYUnZjaUJCZEhSbGMzUmhkR2x2YmpFY01Cb0dBMVVFQXd3VFpWZENUU0JEUVNCRFpYSjBhV1pwWTJGMFpURWRNQnNHQ1NxR1NJYjNEUUVKQVJZT2FXNW1iMEJsTFhkaWJTNWpiMjB3SGhjTk1UZ3dOekF5TURVek1UTTVXaGNOTWpNd056QXhNRFV6TVRNNVdqQ0JyekVMTUFrR0ExVUVCaE1DUzFJeEVUQVBCZ05WQkFnTUNGTmxiM1ZzTFZOcE1STXdFUVlEVlFRSERBcEhZVzVuYm1GdExVZDFNUmN3RlFZRFZRUUtEQTVsVjBKTklFTnZMaXdnVEhSa0xqRWlNQ0FHQTFVRUN3d1pRWFYwYUdWdWRHbGpZWFJ2Y2lCQmRIUmxjM1JoZEdsdmJqRWNNQm9HQTFVRUF3d1RaVmRDVFNCRFFTQkRaWEowYVdacFkyRjBaVEVkTUJzR0NTcUdTSWIzRFFFSkFSWU9hVzVtYjBCbExYZGliUzVqYjIwd1dUQVRCZ2NxaGtqT1BRSUJCZ2dxaGtqT1BRTUJCd05DQUFRSWZxSGlzaTBvTy9leU9xU2FEcnI5aXRHMkl5bUJrSG5TREdRSUlZbVQrdnFBOEFnTzgxbW9tYzJMZDVQR3BFTjZtdUU1NHdQSFFqdmMveUNpaDh1Mm8xVXdVekFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VBTUIwR0ExVWREZ1FXQkJTM0ovZnhpQXYyMmlyZEJzOThTT0RoRjdrVS9qQUxCZ05WSFE4RUJBTUNBUVl3RVFZSllJWklBWWI0UWdFQkJBUURBZ0FITUFvR0NDcUdTTTQ5QkFNQ0Ewa0FNRVlDSVFEYzQxTEZLNExKQ0JVMlZWS0l6N1o2c3hQaFVFa2g4bkxTTEs2SVhka1A1d0loQUllS1ZPWmNoYVZPNWFGN2ZiZFhvU3JjeXkxWVllVWVQTG9qY0tJOWZYODQiXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBK2dBQUFFeENBWUFBQUR2RFlncUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFFblFBQUJKMEFkNW1IM2dBQUZpY1NVUkJWSGhlN2QwSGVCWEYyc0R4TjczUUNUVkE2RklGRktrQ1V1eUFFdW1LWWtGVWJJQ0NJaUtDVWdRRTdMMGdkbFFzS0NwU3JJZ2dTQytoSm5SQ0o0SDBiMmZ2ZUQvMGtoQ1NuYzJlay8vdnVYbVlkNDZYa0pOejlzeTdNL05PUUpaRkFBQUFBQUJBZ1FyVWZ3SUFBQUFBZ0FKRWdnNEFBQUFBZ0FlUW9BTUFBQUFBNEFFazZBQUFBQUFBZUFBSk9nQUFBQUFBSGtDQ0RnQUFBQUNBQjVDZ0F3QUFBQURnQVNUb0FBQUFBQUI0QUFrNkFBQUFBQUFlUUlJT0FBQUFBSUFIa0tBREFBQUFBT0FCSk9nQUFBQUFBSGdBQ1RvQUFBQUFBQjVBZ2c0QUFBQUFnQWVRb0FNQUFBQUE0QUVrNkFBQUFBQUFlRUJBbGtXM1BTc3pOVlhTRHlUS3FhMWI1ZFNhZFpLNmU0K2tIejltOTRuMy8vbUFjUUVob1JKY3VwUUVSMFZKV0pWS0V0Nmd2b1JYcnlaQnBVcEpRQ0QzNFFBQUFBQmY0TmtFUFNzalEwNXQzaUtIUHZwRWp2K3dRTkwzN1pPczFEVDlLSUN6Q1l5TWxOQWExYVRFTloybFpKZk9FbHFodlBXT0Q5Q1BBZ0FBQVBBYXp5WG9LakUvTXZjN1NYeHpocHhhc1ZMM0FzaVBnTkFRS2RxeHZaUzlZNEFVYWRKWTl3SUFBQUR3RWs4bDZNZC8rMTMyakh0S1V0YXQxejBBbkZhODY5VlNZZGdRQ2F0U1JmY0FBQUFBOEFKUEpPZ1pKMDdJbm9sVDVQQUhINHRrWnVwZUFLWUVoSWRMaFZFakpLcFhkd2tJRHRhOUFBQUFBQXBTZ1Nmb3A3WnNsUjBEQjBucTF1MjZCNEFyQWdLazJCV1hTcFhKRXlTb2FGSGRDUUFBQUtDZ0ZHaUNmdUxQNVJJL1lKQmtIRG1pZXdDNExieFJRNm4yNWlzU0VoV2xld0FBQUFBVWhBSkwwRThzWFNZN2JybERNcE9TZEErQWdoSmFxNGJVL09oZENTNWRXdmNBQUFBQWNGdUJISkNzbHJYSDMza3Z5VG5nRWFtYnQ4cjJnWU1rZy9ja0FBQUFVR0JjVDlEVGp4NlQ3YmZkSVJtSER1c2VBRjV3OHMrL1pPY2pqMGtXaFJvQkFBQ0FBdUhxRW5kMXhubjhBdy9Kc1MvbTZKNXpGeGdaSVVHbFNrbElqZW9TVktLNDdnVUtPZXR0bkw1dnY2VHRpSmVNSTBjbEt5MU5QM0R1S2s0WUsyWDY5TklSQUFBQUFMZTRtcUFmWGJqSUxncDN6a2VwQlFaSytQa05KS3AvUHluV3VxVUVseWtqQVVGQitrRUFmOHRNVFpYVVhidms2TGZ6NU5ETTl5Vjl6MTc5U080Rmxpd2g1LzN3RFVYakFBQUFBSmU1bHFCbkpDVkwzRlhYU0ZyQ1R0MlRPNkUxcTB2RlVTT2tlTnMyZHFJT0lIY3lUNTZVZ3g5OExQdWZlVjR5angzWHZibFRvbHRYaVprNnlicENCT2dlQUFBQUFLYTVsdkVlbWZQMXVTWG5WbUpRb21lczFKNHpXNHBmMG83a0hEaEhnUkVSVXZiVy9sTExlZytwbzlUT3hiRnZ2NWRUOFFrNkFnQUFBT0FHVjdKZXRleDIvL012NlNnWHJHUThhdEJBaVhscXZBU0doK3RPQUhrUlZxV3lmWVJhNU1VdGRjL1paWjFLa2YzUHZxQWpBQUFBQUc1d0pVRS9zWGlKcE8vYW82T3pDQWlRMGpmM2sraWg5N084Rm5DSXV0RlY3ZFVYejJrbS9jU0NSWkorNUtpT0FBQUFBSmpteWg1MFZibjk2R2RmNkNobktvR28rZkg3RWhnV3Fudnl5ZnJ4c3RMVEpmM0VDY2s0Zmx5eVV2TmUzUnB3aXpxdElMaFlNWHVadWwwUTBhR2JWYWUyNzVETlYxNGpXU2twdWlkbmxaNlpJcVd2NmFJakFBQUFBQ1laVDlCVmNyeXVlUnZKUEh4RTkrUWdPRmlxejNwUGlqWnByRHZ5TG5uZGVqazJmNkVrL2JwWVVyWnNsWXpFZy9vUndIY0V4MVNSaU5xMXBHaUhkbEtzWTNzSnExaFJQNUozKzE1NlZmWlBtcXFqbkJXOXJLTlVmL1ZGSFFFQUFBQXd5WGlDbnJ4bXJXenAybDFIT1N2YThSS3AvdnJMZVo0dHpEeVZJa2UrL1U0U1gzdFRVdFp0MEwyQW53Z01sS0tkMmt1WlcvdExzUmJOOC93K1NUOTZWRFoxdkZJeURoM1dQZGtMS2w1YzZ2N3hzd1NHaGVrZUFBQUFBS1lZMzRPZS9OZEszVHE3MG4xNjVTM3B5TXFTNDR0L2w3ak8zV1RYa09FazUvQlBtWmx5WXQ0QzJYN0RMYkp0NENCSnlXT1Y5ZUFTSmFURXRWMTFsRE4xVkZ2cXpsMDZBZ0FBQUdDUzhRVDk1UHJjSmNzQmtSRlM3SksyT3NvOVZTRis5OFRKc3VPbUFaSzZkWnZ1QmZ5WVN0Ui9XQ2lidTE0bmgrZDhZOGZucWtTWHEzUXJaMWxwYVpMQyt3b0FBQUJ3aGRrRVBTdEwwclp1MTBIT3dodlVsOERRY3lzTXA0cStiYi9qSGpuNDZwdjJYbmVnTU1rOGRseDJEaDRtZTZZK1k3L1h6a1ZFelJvU1dMU29qbktXc2llWEp6QUFBQUFBeUJlakNicmEzcDZSbkt5am5LbXptcytGU3M2MzNUcFFraGI5cEh1QVFpZ2pReEpmZU1WZVJYSXVTWHBBUklRRWw0M1NVYzdTZDVPZ0F3QUFBRzR3TzRPZW1TbVp1VHpPS2FoQ2VkMDZPN1hzTm43WUNEbTViSVh1QVFvM3RZcmt3RnN6ZEhSMjZ1aTJnTkRjRlg3TDJMZGZ0d0FBQUFDWVpId1B1Z243WDN0VFRuejNnNDRBS1BzbVRaT2tGWC9wQ0FBQUFJQ3ZNWHJNbXRvWHZxbExyS1J1ak5NOTJZc2FORkNpaHczVlVmWk9ib3FUTFYydXMyZlJjeTB3ME41dkcxd21TZ0tqU3VsT3dLT3NkMlRHemwyU2NlS0VaSjVJMHAyNUUxcXJodFQrOGxNSmpJalFQV2VXbFpFaGNaMWpKV1hqSnQyVHZaTGR1a3FWYVpOMUJBQUFBTUFVMzByUXJYL3F0dHZ1a0JNTGM3bnYzRDQzdW9PVUhYQ3poTmVySzhIRml1a0hBSS9MekpTMHc0Zmx4TzkveUlIblg3SVNhZXM5bEp1M2FrQ0FsQjh4VE1yZGZxdnVPRE1TZEFBQUFNQjdmR3FKZTlLcTFibE96a05pcWtqMWoyWks5VmRma0tMTm01R2N3N2NFQmtwSVZKU1U2bnlWMUo0eld5bytPVm9Dd3NQMWd6bXdrdmpFbDErVGpLUnptM2tIQUFBQVVQQjhKMEczRW84RHI3NmhnNXlGbjk5QWFzNytTSXBlMUZUM0FMNUxGWFFyYzMwZis0WlRVTWtTdWpkN0dZY095eEYxUGpvQUFBQUFuK0l6Q1hyNmthT1M5TXR2T3NwZWNNWHlVdTMxbHlXa2RHbmRBL2lISW8zT2w4clBUYlZlNUVHNkozdEhQdnRDdHdBQUFBRDRDcDlKMEpOV3JwTE1ZOGQxbEkzQVFLazRkclNFbEN1ck93RC9VcnpOeFZMcWhqNDZ5bDd5bnlzazQvZ0pIUUVBQUFEd0JiNlRvUC8ydTI1bEw3eGVIU25SNFJJZEFmNnA3SUJiSlNBNFdFZlp5TWlRcEpVcmRRQUFBQURBRi9oTWdwNjhicDF1WmE5RWw2dnQvYnFBUHd1clhFa2lXalhYVWZaT3JWNnJXd0FBQUFCOGdVOGs2RmtabVpLMmFiT09zbGZzc2s2NkJmaTNZbTNiNkZiMlV2ZnYxeTBBQUFBQXZzQkhFdlIwTzBrL203QUtGWFFMOEcraDFhdnBWdll5VDNEVUdnQUFBT0JMZkdhSmU2NEU2RDhCZjhkckhRQUFBUEE3L3BXZ0F3QUFBQURnbzBqUUFRQUFBQUR3QUJKMEFBQUFBQUE4Z0FRZEFBQUFBQUFQSUVFSEFBQUFBTUFEU05BQkFBQUFBUEFBRW5RQUFBQUFBRHlBQkIwQUFBQUFBQThnUVFjQUFBQUF3QU5JMEFFQUFBQUE4QUFTZEFBQUFBQUFQSUFFSFFBQUFBQUFEeUJCQndBQUFBREFBMGpRQVFBQUFBRHdBQkowQUFBQUFBQThnQVFkQUFBQUFBQVBJRUVIQUFBQUFNQURTTkFCQUFBQUFQQUFFblFBQUFBQUFEeUFCQjBBQUFBQUFBOGdRUWNBQUFBQXdBTkkwQUVBQUFBQThBQVNkQUFBQUFBQVBJQUVIUUFBQUFBQUR5QkJCd0FBQUFEQUEwalFBUUFBQUFEd0FCSjBBQUFBQUFBOGdBUWRBQUFBQUFBUElFRUhBQUFBQU1BRFNOQUJBQUFBQVBBQUVuUUFBQUFBQUR5QUJCMEFBQUFBQUE4Z1FRY0FBQUFBd0FOSTBBRUFBQUFBOEFBU2RBQUFBQUFBUElBRUhRQUFBQUFBRHlCQkJ3QUFBQURBQTBqUUFRQUFBQUR3QUJKMEFBQUFBQUE4Z0FRZEFBQUFBQUFQQ01peTZMYmpzdExUWlZPWFdFbmRHS2Q3c2hjMWFLQkVEeHVxbzMvS1RFMlZEYTNhUzhhaFE3cm56QnFzWFM2QmtaRTZNaWMxUGtGT3JkK2dJL2l6MEpnWUNhOVhSMGZlY1dUK0Fra1lNRWhIWjFhaVI2ekVUSjZnbzMvS3lzaVF1TTZ4a3JKeGsrN0pYc2x1WGFYS3RNazZBZ0FBQUdBS0NYb2VISno1dnV4K2JLeU80TStpK3ZlVDZNY2YxWkYza0tBREFBQUEvb2NsN2dBQUFBQUFlQUFKT2dBQUFBQUFIa0NDRGdBQUFBQ0FCNUNnQXdBQUFBRGdBU1RvQUFBQUFBQjRBQWs2QUFBQUFBQWVRSUlPQUFBQUFJQUhrS0FEQUFBQUFPQUJKT2dBQUFBQUFIZ0FDVG9BQUFBQUFCNUFnZzRBQUFBQWdBZVFvQU1BQUFBQTRBRWs2QUFBQUFBQWVBQUpPZ0FBQUFBQUhrQ0NEZ0FBQUFDQUJ3UmtXWFRiY1ZucDZiS3BTNnlrYm96VFBkbUxHalJRb29jTjFkRS9aYWFteW9aVzdTWGowQ0hkYzJZTjFpNlh3TWhJSFpsemN2VWFPZjdqenpyeXZ1US9WOGp4UlQvcHlGbmxCOThyRXVTLzkza2lHcDB2eGRxMTBaRjNISm0vUUJJR0ROTFJtWlhvRVNzeGt5Zm82Sit5TWpJa3JuT3NwR3pjcEh1eVY3SmJWNmt5YmJLT0FBQUFBSmhDZ2w0SUpMNDVRL1k4Y2VaRUxiOGF4cTJSZ09CZ0hjRXQvcHlnWjZXbFNWYW1zY3RTNFJNZ0VoZ1NZdjFwTlFBQS8wT05NOFdGajUyQTRDQUpDQXJTVWNGejlmT1d6eUlnMTBqUUN3RVNkUC9qenduNnRxSEQ1TlNLbFRwQ2ZnV1ZLQzYxUG41ZkFrTkRkUThBNEhSeDNmdEkrbG5HbUU0b1Avd0JLWDNWRlRvcVdCbEpTYkxseGxzazQvQVIzV05XWkl0bUVqUCtDUWtJWkhjdGNEWWs2SVVBQ2JyLzhlY0VQYTdmelhKeThSSWRJYjlDYTFTWHV2TyswUkVBNE4vV3RXd242UWNPNk1pYzZFbmpwVXozV0IwVm9NeE0yVDUwbUJ6N3lwM1BodUFLNWFYMjdJOGxwRnc1M1FNZ0o5ekdBZ0EvRmxhcnBtNEJBQ0NTK05FczE1THpnTEF3cVRKMUVzazVjQTVJMEFIQWo0V1dMNjliQUlEQ0xubmRldGt6N2lrZG1WZHV5TDFTckVWekhRSElEUkowQVBCallZMGE2aFlBb0RETE9INWM0Z2MvS0ZrblQrb2VzNHBkY1ptVXUrMFdIUUhJTFJKMEFQQmo0VFZyNkJZQW9OREt5cExkazU2VzFDMWJkWWRaSVpXaXBjcjRzUlNGQS9LQWR3MEErS3VnSUFtclVFRUhBSURDNnZBMzM4cmhEejdXa1ZtQmtSRVM4OEl6RWx5eXBPNEJjQzVJMEFIQVR3V1ZLaVdCeFlycUNBQlFHS1hFeDh1dWthUHRXWFRqZ29La3dxaEhwTWo1Yks4Qzhvb0VIUUQ4VkZEUkloSVlGcVlqQURBck16TlRUcDQ4S1ljT0haS3QyN2JKMHFWTEpUVTFWVCtLZ3BCNUtrVjJESDVRTW84ZjF6MW1xYU5aeS9Uc3JpTUFlVUdDRGdCK0txUnlKUWtJQ3RJUkFPU05TcnpUMHRJa09UbFpFaE1UWmZQbXpiSjQ4V0o1Ny8zM1pkejQ4VEo0eUJDNU5qWldhdGV0SytmVnF5ZDFySzk2RFJwSTY3WnQ1YmhMaVNIT1FPMDdmMnF5bkZxNVduZVlGZDZvb1ZRZU8xb2tJRUQzQU1nTEVuUUE4Rk9oVldOMEN3QnlwaEx3QXdjT3lOcTFhMlgyN05ueTRrc3Z5V09qUjB1L20yNlNpOXUxazZiTm10bEpkNldZR0tuWHNLRzA2OUJCYnI3MVZubDg3Rmg1d2ZwdnY1azdWK0xqNDJYdjNyMXk1T2hSTzZsSHdUcTY2Q2M1L1A1SE9qSXJzR2hSaVprK1JRTER3M1VQZ0x3aVFRY0FQeFZLZ1RnQU9UaDI3SmhjZXZubFVyZCtmWWtzVmt5aXExU1JKazJiU3ErK2ZlWCtJVU5rd2xOUHlVY2ZmeXpMbGkyVDlSczJ5TzQ5ZTBpOGZVVHE3ajJ5Yy9nSXlVcFAxejBHQlFSSTlKT1BTM2pWcXJvRFFINlFvQU9BbndxL29KRnVBY0QvVXZ2REYvLyt1MnpaNnM3UlczQkhwdlY3algvb0VjazRkRmozR0dRbDUxRURicGJTWFR2ckRnRDVSWUlPQUg0cXZFb1YzUUlBRkJiN1gzMWRrbi83WFVkbVJWN1VWQ29PSGF3akFFNGdRUWNBUHhRUUVTRWhaY3JxQ0FCUUdCeGZzbFQyUC9lU2pzd0tybGhCcWo0M1ZRSkRRM1VQQUNlUW9BT0FId291WDA0Q1FvSjFCQUR3ZCtsSGprakNzSWVzaHZsOTV3R2hJVko1OGdRSktjdU5ZTUJwSk9nQTRJZENTcGFVZ0VBdThRQlFHS2hpY1BIREg1SDBYWHQwajFsbDdycERpcmRxcVNNQVRtTDBCZ0IrS0tSR05jNmlCWUJDNHNEYjc4aUorUXQxWkZiUjl1Mms0cjJEZEFUQWFTVG9BRHdscEZ4WkNhMVMyYld2a0lvVjNVbGtyZThSVWluNmpQOEdFMThSOWV2cmJ3d0E4R2RKSzFmSnZxblA2TWlzRU92ekpXYktSRzRBQXdZRlpGbDAyM0ZxdWMybUxyR1N1akZPOTJRdmF0QkFpUjQyVkVmL3BJNkwyTkNxdldRY09xUjd6cXpCMnVVU0dCbXBJL3d0OGMwWnN1ZUpDVHB5VnNPNE5SSVF6RDVYdHgyWnYwQVNCdVI4OTdwRWoxaUptWHptMzN0V1JvYkVkWTZWbEkyYmRFLzJTbmJyS2xXbVRkYVIvemtWSHk5eGwzVTJmbFpzWUpFaVVtZkJkeEpTSmtyM0FFREJTa3hNbEtvMWF0akhyWm15ZDljdWlZcnk5blZ2WGN0MmtuN2dnSTdNaVo0MFhzcDBqOVdSTTlLUEhaTzRiajBsYlVlODdqRW5NQ0pDcW4vd2poUTV2Nkh1QVdBQ00rZ0FBQUNBRDlyMXhIaFhrbk1KREpUeWp6NUVjZzY0Z0FRZEFBQUE4REVIUDUwdFJ6LzdRa2RtbGVqYVdjcjA2cWtqQUNhUm9BTUFBQUErNUdUY1p0a3pacHlPekFxcmM1NVVHVGVHazBFQWwvQk9nMDlSOVFpMjlydFoxbDNRd3ZoWDNMVTlKT05Fa3Y3T0FBQUFCUy9qeEFtSnYvOEJ5VXd5UDBZSkxGWk1ZcDZmWnU4L0IrQU9FblQ0anF3czJUZjllVW42OVhmSk9ITFU2RmRtOGttcE9IcWtCQlV0b3I4NUFLQ3d5TXpNbFBUMDlETitaV1JrV0I5SHh1cnJBam5Lc2w2YnV5ZE15bFdSMTN3TENwVG9NYU1rb2tZTjNWRjRxZmQ4VHRjRjlSamdGS3E0RndMK1VzWDkyTSsveUk1Yjd4VHJTcWg3ekNsNy85MVNZZkM5T3ZJZXFyZzdoeXJ1dmk4bEpVWFdybDByZjYxY0tmdjM3NWNEaVluNkVaR3cwRkFwV2JLa2xDMWJWbXJYcmkzMTZ0YjFmRVZwdUNjcEtVbTJidDBxcTFhdmxqMTc5c2kyN2R0bDQ4YU5jdXJVS1RsNTh1UVpCOTBSRVJFU0VoSWlwVXFWa2diMTYwdWxTcFdrYXRXcWRydHk1Y29TN0VNbm0xREYvVDk4cVlyN2tlKytsL2g3aHFpN1NMckhuTkw5KzBubFVZOFV1aVBWMHRMU0pONGFHeXhmc1VJU0VoSWtMaTVPTmxsZjZycVFuSnlzLzZ2L3A5N3pZV0ZoVXJ4NGNXbllvSUY5SGFoV3JabzBidFRJdmo3NDBqVUIza0NDWGdqNFE0S2V1bnVQYkxaZVN4bUhqK2dlY3lKYnQ1UWFNOS8wOUY0ckVuVG5rS0Q3cHFOSGo4cmNiNytWRHo3OFVINzg2U2M3MGNxdE91ZWRKNDgvOXBqMDZORkQ5NkF3VU1uMnRtM2JaUEh2djh1aUgzK1V2Lzc2UzFhdVdxVWZkVVo0ZUxnMGI5Wk1McmpnQW1uVnNxVzBiTkhDSHFCN0ZRbjZmL2hLZ3A2U3NGUGlydWt1bWNlTzZSNXpJaTVzSWpWbnZpMkI0V0c2eDMrcDE3KzZ3ZnZMTDcvSS9BVUw1UGNsUytTWVE4OXhwSldYdEczVFJ0cGZjb20wc0s0SHpTNjZ5TDVPQURraFFTOEVmRDFCejB4SmthM1g5NWVUeS8vU1BlWUVsUzBqdGIrZUxTRmx5K29lYnlKQmR3NEpldTc4YmlVMTY5YXYxNUV6THJJR0tvM09QMTlIdVhQQUdrUy8vT3FyTXVYcHA4ODRrNUZic3o3NlNMcGRlNjJPenQyc1R6NlI0OGVQNjhoNVYxNXhoVVJIUit2SUdaOTk5cGtjT1hwVVI4Njd4QnFBMXZUWVVsaTFISDNUcGszeTJlelo4c21ubjhyNkRSdnNQcmNFQlFYWk40UjY5ZXdwVjExNXBUUm8wTUNlYVROcDFhcFZzdXpQUDNXVXN4TW5Uc2hESTBiWVMzUk5lWHJ5WkNsYXRLaU84cTU4K2ZMUytlcXJkZVFzWDBqUXM5TFNaSE8vbStYa3N1VzZ4NXpnY21XbDF1eFpFbHFodk83eFArbzFyMjdRZldoOUZyejczbnR5OE9CQjQxdFhBZ0lDcEZpeFl0S2plM2ZwZC8zMTByeDVjK1BYZ3pOUk55cy8vK0lMT1hMRTdLUlg2ZEtsOC9VNW0xZnE1M3RuNXN3enJvQnlpcnJKMHJ0WEwvc2Fid0lKZWlIZzB3bTY5ZkxjODh6emt2anNDMVpiOXhrU1lGMGtxNzc5bWhScjJWejNlQmNKdW5OSTBIUG4vaUZENU1XWFh0S1JNKzY3NXg1NWVzb1VIZVZNRGFabXpab2xReDk4VUJLdGdWUitxT1dHZi83eGg5U3ZYMS8zbkJ2MXNkbW9TUlBac0hHajduSGV0OTk4STUwNmR0U1JNNW8yYTJZdjVUYmxuYmZmbHI1OSt1aW9ZS2tWRmQ5Ly83MU1zbDVmYWhDdWxxd1dORFdRVTB0ZkI5eDZxLzA4eGNURTJBTjJwMDJkTnMxT3V2Mk5TbW8rc0JJcEV6eWZvRnZYbkYwVEpzdkJOOTdTSGVhb01WM1YxMStTNG0zYjZCNy9vbTdzZmo5dm5qdzFhWktzK09zdlYyL1luVTY5OTZ0WHF5YUQ3Ny9mVHZSVU11dW0yd2NPbExmZmVVZEhacWliRWJzVEVseGZNYUMyTGRVLy8zeWp2OXNPN2R2TGQzUG5Hcm1HS3hTSmc2Y2QrMjJ4SEh6aEZlUEp1ZlVPa3pLREJ2cEVjZzc0aTRTZE8zVXJaNGNQSDVicmI3aEJicjd0dG53bjU0cWF6Vk9KRXZ5UFdxcjYzdnZ2MnpjamV2WHRhODhrZXlFNVY5UmdjY2VPSFRKcTlHajdCcysxc2JHeWRObXlBa3NRZkUzclZxMTBxL0JSTlhnT3pqQ2JUUDJ0ekYyMysyVnlybTd5ZnZubGw5S2thVlBwMmJ1M2ZXMG95UGVldXRHN2RkczJ1Vy93WUtuWHNLRThQWFZxdmxhRm5hdGV2WHJwbGpscWxabXFEK08ySlV1V0dQL2Q5ckZlUTZhU2M0VUVIWjZWZGlCUmRqM3dzUEdaVFNXeVdWTXBmOWRBSFFGd3d4cnJnL3RzaTdqVW51RzI3ZHZMN0MrK2NHeTVXcGt5WmV3NysvQWY2blgwODg4L1M1dDI3ZVRtVzIrVkxWdTM2a2U4S2Zua1NidUdndnIzWG5IVlZmWVdFdVNzUmlHdEpKNjZiNzhrREgvRXlqRE5KNU5GMmw0c0ZlNjlXMGYrUTIzUHVycExGK2x1SmFYcU04VnJEaDA2SkE4LzhvaDlZL0dMTDc4ODYrZWlFeTZ4cmoycTBLVnBjNy83VHJmY00zL2hRdDB5UTYwSXVDNDJmOFVlejRZRUhaNms5bG9sUFBpUXBGc2ZUS2FwdlZZeHowK1hnSkFRM1FQQURjZU9IclVyWldkSFZjN3RlT21sZGxWdEoxMTR3UVZHNzN6RFhXb2Y5ZEFISHBETHJyelNYckxxUzlSTkoxWGtVTjJFNnQ2enAyemM1TUxSV1Q1STdkTlZWZklMRzdYRk0rSGhSeVRqd1ArZlRHRktjTVVLRWpONW9nUVkybE5iRU5TS21zbFBQeTB0V3JXU2hZc1c2Vjd2MnJ4bGl6MjczKyttbSt4Nkt5YUZob1pLZDhOSnBySjQ4V0xkY29lNnBxb2lvQ2FwbXh2cWRCaVRTTkRoUFZsWnN1K2xWeVhwcDE5MWh6a3FLYTgwYVp5RWxDMmpld0M0NWRqeDQvYnk5VFBadlh1M1hHNGxYRHQzN2RJOXppbU1BMzEvcFdiRDJuZnNLTSsvK0tMUEx4WC84cXV2NUtMbXpXWHNFMC9ZTngzdy8wS0NnNlZDaFFvNktqejJ2L0cyTzJPaGlBaXArdngwdnhvTHFXTVR1MTV6alR3eWNxUjlQSnF2VUxQbkg4K2FaYyttLzdGMHFlNDE0N3JycmpOK3Mxb3RjVGQ1U3NTL3FhTXkxVllpazI3czEwKzN6Q0ZCaCtjYy8zMkpKRDcvc283TWlocHdpeFMvcEoyT0FMaEp6WjZyczJiL1RSWDQ2dFduajVIa1hGSFZ4dUg3bGxxRFY3VkUzT21qMGdxU1NpU2VHRGRPV2w1OHNheFlzVUwzb203ZHVvWHVhS3JqZnl5VkE5T2YwNUZCZ1lGU1lmaFFLZEtrc2U3d2ZTdFhyclN2RFF0OFlOWThPM3YyN3JWdlVzOTg5MTFqUzk1VlhRZDFESnhKdTNidk5wNHduMjdldkhtNlpVWkVSSVI5eW9wcEpPandsTFQ5K3lYaC9nZnRKZTZtUlRTL1NDb012VTlIQUFxQ3V0dDlPclU4YmNnREQ4aVNQLzdRUGM0S0N3MHR0SHRaL1lrNnIvaUtxNitXL1M1VTNpNElhbHRIMzM3OVhKMTU4ckthTld2cVZ1R1FmdXk0N0J6K2lDczFlSXBmZVptVTZYZTlqbnlmV2xMZHZsTW5pVTlJMEQyK1M5MnNIbmpublRKdCtuUWpTWHFSSWtXazJ6WFg2TWljYjEzYWg2NmVvM2svL0tBak05VHBLaVZLbE5DUk9TVG84QXoxUWFRS29iaXgxeW9vcXJURVRKMWsvQXgzQURuNzdWLzcwOVR4TjJyR3dKU3laY3RLS2NON3gyRFcrdlhyN1JVV0pzK2g5NExKVHoxbDd4T0ZTTE9MTHRJdC82ZU9RVTBZT1VyU0VuSjN5a1YraE5hdUtWVW1qcE9BUVA5SUIzNzg4VWU1cWtzWHY5b2lvcXJQanhnNVVwNTU5bG5kNHl4VmpkeTB4UzRWd1R5VmtpSi9HTHE1LzdjQnQ5Mm1XMmFSb01NejlyLytwaVQ5K0l1T3pMSDNuVThlTDZHVm9uVVBnSUp5K2hMM28wZVAya2ZPcUFHSktlWExsN2NMVHNFM3FXckhzVDE2eUlGRTh6ZHlDOUtkQXdkS1Z5dlJ3SDgwYmRwVXQveGY0cnZ2eS9GdnpNODRCaGFKbEpqcFV5U29TQkhkNDl2VXFxdHUzYnZiczg3K1JxMHNHL2JRUS9MZWUrL3BIdWUwYk5sU2loY3ZyaU16MUxGbktWYnliTnJtdURqWnUyK2ZqcHluenFwdjE3YXRqc3dpUVljbm5QaGpxZXlmUEYxSFpwVWVjTE9VNk5CZVJ3QUtrcG9OL2RzYmI3NXAvQWljcGhkZVNBVjNINldXTDZxQ1QxdTJiTkU5L2trVk1ad3dmcnlPb1BhZVY2dGFWVWYrTFhuTld0azdlYXFPREFvTWtJcGpSa2xrM2JxNnc3ZHQzNzVkdXZmbzRmZkZGZSs4KzI3SHQzK3BhdVJYWDNXVmpzell0MysvN0xlK1RQdG03bHpkTWtNdGIzZnJpRllTZEJTNDlFT0hKR0hJY0hXTFVQZVlFOW1pbVZRY3dyNXp3Q3ZVSG1LMVZEa3hNVkhHakIycmU4MVJ4YWJnbXhZdFdpUnZ6WmloSS8razlvUysvZWFiVXJSb1VkMkRraVZLU0ZSVWxJNzhWL3F4WTdKajhJT1NkZEp3eGZHQUFDbmQ3M3FKNm5hdDd2QnRhc2E4ZDkrK2RoTG83MVFSeVJ2NjliTlhFam5KZEZWeU5Ydis3KzFzVGxPckRFenVkVmMzOXUrNC9YWWRtVWVDamdKbG4zYytiSVNrNzk2amU4d0pLbFZLcWt5ZnpIbm5nSWVvNWV6Nzl1MlQ5OTUvWDVKek9CUGRLZXI4VXZnZTlUb1pOWHEwUFFqelYyb0FPT0toaDZSSmt5YTZCMHI1Q2hYc3lzbCtMU3RMZGowNVFkSzIvYk5vcGduaDlldEo5RU1QMm9tNlB4ajc1Sk95M01VVEQ0S0NndXhpbzJwbGgvcFNXNlpDckhHbFd5dXpkc1RIeTUyREJqbDZMV3plckptVUtXUDJpTDF2di8xV3Q4dzRldXlZckR0dFJaN1RvaXRXbEdiVzgrUVdFblFVcVAxdnpaQVRDMzdVa1VIV2hUTjYvQmdKTFlUbnFBSmVwcXBVcjkrd1FWNTYyZnpSaW1vZ1ZhMWFOUjNCbDZpcTdhWXErM3VGT3ZKbzZKQWhPc0xmR2pkcXBGdis2OUNYYytUb1oxL295SnlnTWxGUzlhWG5KTkJQanF6NytlZWZaZXEwYVRveVJ4VnJ2T0x5eStXRjU1NlRYMy82U2JadDJTSjdkKzJ5di9iczNDa2IxcTZWYitiTXNXK3cxYTlYVC8rL3pQbksrbDVPemhhcnF1UWREQjgvK3JOMURjL0l5TkNSODlUSkYwNnZMRGhkKy9idGpSOUpkem9TZEJTWUUzOHNrd05UbnRHUlFWWnlYdnEyL2xMeXlzdDFCd0F2ZWZPdHQyVEwxcTA2TXFkcTFhcXVmc0RDR1dyditiUFBQNjhqODZwVXFTSTMzM1NUUEQxNXNzeXpCc0ViMTYyVHJYRnhzbS8zYnRtMGZyMnNXNzFhNW4vL3ZUejN6RE15Y3NRSXVhWnJWNmxYdDY0RTUrTlVrS2pTcGVXZEdUUHNtVGo4VSszYXRYWExQNTNhdmtOMmp4NXJ6NktiRkJBU0xKVW5QQ0ZoZmxJZ1YrMDNIekJ3b0k3TVVMUGl2WHIydE4vemM3NzhVZ2JlZnJ0ZHNGQ2RCcUsybzZndnRTYzVKaVpHTHUzVVNjYU9HU1BMbHkyVDJaOStLdWMzYktqL0Z1ZXBGVVgzRHg3czJKNTc5WFBlY0wzWm8vWlVZYys5ZS9mcXlIbmZXZGRrazl4YzNxNlFvS05BcENVZWxJVDdIM0RudlBNTG0wakZCNW1WQUx4cXp0ZGY2NVpabGFLajg1VkVvV0FjUEhoUWZ2cjVaeDJaVTcxNmRYbHY1a3c3SVgvdDFWZmx2bnZ2bGZhWFhHS2ZtNitTZGxYQlYvMDNLbUZzMTY2ZDNIbkhIZkw0Nk5IeTZheFpzdUxQUDJWWGZMeDgvT0dIOWtDM1N1WEsrbS9OblNtVEprbU05VDN3di94NVcwcEdjckxFVzJPaHpPUG1pNXRGM1hhTGxPallRVWUrYjlLVUtiTFZZRkhSNGxiaVBYUEdESG4zblhmc203dTVwWmJBZCtuY1dSYi8rcXVkMEp1eWZjY09lZjZGRjNTVWY1ZFkxenBWTU02VVpPdTEvcWQxblRSQjNjVDk0Z3R6SzFEVTcvOGlsNDk2SkVHSDY3SXlNMlhYNkxHU3Z0ZmNVUWgvVTh1NVlwNmRLb0VjcXdRVWVtNS93TUlacTFldnRvL2dNK25pMXEzbGo4V0w3ZG15dk14aXEwRzVTdUJqdTNXemk3eXRXN05HZmxxNFVIcjI2SEhXSTR4dTZOdFhicmpoQmgzbG43cHhzTk1hdk9mbWE5V0tGY2JQV2wvMTExOW4vTjY1L1ZMN1kvMlJHZ3Z0Zm1xS25GcXpWdmVZVTZSTmE2azQ5SDRkK1Q2MUQ5dko1UFRmMUVxckQ5OS9YM3IzNm1YUEx1ZUYybEwxN1BUcGN2Kzk5K2I1N3ppYnFkYmY3OVMxVWEwR3VMUmpSeDJaTVgvQkF0MXlscW9RYi9KMGo4c3Z2ZFQxMVUwazZIQmQ0dHN6WFRualU0S0RKSHJDRXhJYVhWRjNBQ2pNYXRlcXBWdndKYVpuejFWaS9jRjc3ems2ZTZTS1I3VnExVXJlZi9kZGUzbnN4UEhqN1JVYy94Nm9xNW4ycDU5KzJ0RUJ2RW91MUhuL3VmbFNTM1ZOSzJkOWp6Tjk3OXgrcVpzZi91am9Ed3ZrOEFjZjY4aWM0SExsSkdieVJBbndvK2R4aXZXZVVhZC9tREo2MUNpNTdMTExkSlIzNnJVN2Z0dzRZNnRBRGg4K0xLKys5cHFPOGtkZGc5UU5TcE4rK2ZWWDNYTFdYeXRYR2kweWE3cksvWm1Rb01OVlNTdFh5YjRwNWd0NktLWDY5cGFTbmZ4bk9SZUEvRkd6cFBBOUppdnpLcGRiQS9HS0ZjM2R5RlZKNWdORGg5cXo2bXJmdXRxdnFxaEswRysrL3JxOS94eUZTOHF1WGJKenhDZ1JnMFd6bElDd01JbDVmcXFFbEROL0k4WXRPM2Z1bExjTkhyZllvbmx6ZTN1TFU5UUtsUmVmZjE0aURaMUU4SnAxRFZGNzBwMmdia29VTVZpblpjM2F0ZlpOQmFjdE1EUXpyNml0UjgydDE0VGJTTkRobXZSRGh5WGgzcUhtei9pMGhEZW9KOUdQUHF4dUNlb2VBSVdaV200WWN3NzdDT0VkYTlldDB5MHpxcnRVMlYvTmJOOHhjS0M5ckh6VXlKRXllUEJnZTk4bkNwZE1mYnhzNXBFanVzZWN3S0pGSk16UFRxNlkrZTY3OW5uZ3Bvd1pQZHJ4V2lXcWJzV3R0OXlpSTJkdDI3NWRGaTVjcUtQOEtWcTBxSFRwMGtWSHpsTkh3NmxxN2s1Uys4OU5Gb2pyMnJWcmdhemlJVUdISzdMUzB5WGhvVWNrTFdHbjdqRkhmU0JWZVg2YUJCcmVWd2VnWUtnallhNis4a29aLytTVDlwRTNDZFlBNWVqaHczTE0ranA2NkpCczM3SkZmck1HQVdyLzMxMTMzR0dmSzkzbTRvdnRHVXY0bnNURVJOMHlJODJGWXFXblUzczlIeHMxU3A0WU04YlkzbFI0MS82WFg1UGtKVXQxWkZiR3dVT3k4L0VuN2YzdS91RGt5WlB5bk1HOTU2MWF0cFNPaHZaaDMzUDMzY2IyTWIvbDRJb0NWVGZEcENWTGx1aVdNL2JzMlNNYk4yM1NrYk9DQWdQbCtyNTlkZVF1RW5TNEl2SERqK1hFL0VVNk1pY2dPRWdxVFo0ZzRaeDFEUGlkcUtnb2VmeXh4K3dxMjE5OC9ya01lL0JCZStsWmhRb1Y3T1dERWRhWG1xV3NWS21TTkx2b0lybnJ6anZsMldlZXNZdC9mVEY3TnNrUXppaHU4Mlo3RnNadHZCNExwK0F5VWJybGp1Tnp2NU5EbjMrcEk5LzJ3L3o1Y3VEQUFSMDU3NWFiYnpiMnZxeG1qVXNiblgrK2pweWw2blFrSlNYcEtIL2F0VzFyZjVhYW92NnRUbDV2ZjdjU2ZxZVcrUDliNWNxVnBlbUZGK3JJWFNUb01DNTV6VnJaTjI2U1dvZWllOHdwcWZhZFg1SC93aDRBdkVNTmw5U3hOU3VXTFpPUmp6eGlKK3JuUWcyNDFCSjMrQ2JUaWV5Q2hRdGxtOEhqbW9EVFJmWHNMcEhObXVySUJkYllhOCtURXlUTllHTHJsbG16WnVtVzg5UUtxNjRHbDNlclpkTFh4Y2JxeUZuNzl1MlRwVXVkV1pWUnFsUXB1MnE1S1dvZmVtcHFxbzd5YjlFaWM1Ti8zYnQzTDdBaWxTVG9NQ3JqeEFsSkdEcGNzZ3p1Ri9wYldQMjZFdjNJY0RXYTB6MEFmSjM2Y0x6Ly92dGwxa2NmR1Mza0JlOHlmY3lXcWdaOWRkZXVrcENRb0hzQWN3S0NnNlhTRTQ5TGdJdkhObVVlUFNZN1I0MXhaYUxFbEpTVUZKbnp6VGM2Y2w0ejZ6cFRwa3daSFpseG1jSEU5K05QUHRHdC9PdlZxNWR1T2UrRWxSY3NYNzVjUi9tbmJyQ2FvRzdZOUwvcEpoMjVqd1FkeG1SbFpNak9rYU1sTmM3YzJZUi9DeXhXVkdKZW1DNkI0ZUc2QjRBL0dIVG5uVEpwNGtUSGkvYkFkMVJ6b2JpZk9rTzNXY3VXOHNHSEh6bzZ1d09jU1VUdFdsTDJ2cnQxNUk3ajgrYkxRUjllNnY3cmI3OFpQVnF0aytFendKVzZkZXZxbHZOVThUVlZoTTBKNmxnNFZTdkRGTFZWd1FtN2R1ODJ0dis4WnExYWNsN3QyanB5SHdrNnpNaktrc1QzUDVSalg1bTcyL2xmZ1FGU2NleGo3RHNIL0V6bnE2NlN5Wk1tR1YvaURHOXIxS2lSYnBsMThPQkI2WC9MTGRLMGVYT1o5Y2tuY3ZUb1VmMEk0THh5dC9hWHNMcDFkT1NPdmVNbVN1cWV2VHJ5TFY5Ly9iVnVPVTk5eG5SbzMxNUg1b1NIaDh2NURSdnF5Rm03cldUMTBLRkRPc29mZFRSa0c0UEhrcXJ6MEozWWh6NTM3bHpkY2w3MzJOZ0NuUmdnUVljUnllczN5TDZKVTl6WmQ5Nnp1NVMrdHF1T0FQaUQwcVZMeXlzdnYxeGcrNy9nSGVwY1lyZHUwcWhCNDRZTkcrVDZmdjJrYm9NR2N1Lzk5OHV5WmN2czViV0FrOVNLdjhxVHhrdUFpNmRMWkJ3K0lnbVBqTEpYT1BvU1ZRVHN4NTkrMHBIejFQRmk2aWcwMDlSMXJHS0ZDanB5MXJGangreUNsMDdwMzcrL2JqbHYwNlpOanF4VU1yYThQU3hNYnI3NVpoMFZEQkowT0M3aitIRkp1R2V3WkNXZjFEM21oTmFxSVpWR2oyVGZPZUJIMUNEbXliRmo3YnY0UUkwYTFuVStPbHBIN2xISHU3Mzh5aXZTcWswYmFkU2tpVHd3YkpoZGlNbnRZOW5ndjRyVXJ5ZWwrL2ZUa1R1U2Z2bE5EczMrUWtlK1FTMXRYNzkrdlk2Y3AwNy9LRm15cEk3TUttSHcrNnhaczBhMzhxLzlKWmRJOGVMRmRlU3NuYnQyeWZidDIzV1VOK3FtNmRKbHkzVGtyQWIxNnhmSVo4N3BTTkRockt3czJmWDRrNUs2YllmdU1FZnRPNi82OHZNU2FQQTRDQUR1VS92MGJ1em43cUFWM3FVR3o3SGR1dW1vWUd6ZHRrMmVmZTQ1YWQyMnJkU29WVXY2M1hTVGZEeHJsbDA5R2Nnek5hTTYrRjRKcVJxak8xeVFtV2xYZFUvWmJuNmM1aFNWektVYXZER205aHFIdXJTU29WelpzcnJsdk44V0w5YXQvRk9ucGJSczBVSkh6cHY3N2JlNmxUZnhDUW41VHZLejArM2Fhd3Q4OVI0Sk9oeDFjTmFuY25TMkMwVklyRGRPeGRFakpieG1EZDBCd0IrbzJmT0hodyszOStvQmY3dm43cnM5YzFUZVhpc3AvK2pqaitXR0cyK1VLdFdxU1l0V3JXVE0yTEd5Nk1jZmpSYXhnbit5bDdwUGVNTFZsWUNaeDA5SXdxT2pmV2FwdXlxQVpsTFZHUGR1a0pRclYwNjNuTGRueng3ZHlyL0F3RUM1eWVDTjh2eHVXZmpoaHg5MHkxbWhJU0ZHbC9mbkZnazZISE55NHliWk0vcEpWL2FkbDRpOVJrcGZWN0F6S2dDY1Y3bFNKZnZ1TlhDNjZ0V3JTNC91M1hYa0hXclArdklWSytUSjhlUGw4aXV2bEVyV1FMOVhuejd5c1pYQXE4R3lFNFdRNFArS3RXZ3VwYTd2clNOM0pDOWVJZ2RtdnFjamIxT25MSmhVcW5ScDNmSnRjWEZ4dXVXTUs2NjR3dGpLZ3BVclYrYTV0b2U2cm41ajZNaTlwazJiR3FzVGNDNUkwT0dJaktRa2liLzdmbmZPTzY5N25sUitZalQ3emdFLzFLZDNiM3RKTTNBNnRiSml6T2pSVXF4WU1kM2pQV3JRZVBMa1NabjkrZWR5dzAwM1NmMkdEZVdLcTY2U3p6NzdqSmwxbkZXRndmZEtrT0Z6dVA5dC85Um41SlFQTEhWWE44Rk1lbnZHREtsZXE1WXJYMDlQbTZhL3EvTU9Iam9rcHh3Y2g1Y29VVUxhdG1takkyZXBsVWpxbUxTOFVOZlRQdzI5SnE2OTVocjc4NmFna2FBajM3SXlNLyt6NzN6TE50MWpUa0JFaEZSNTVtbk9Pd2Y4a0ZwYU51QzIyM1FFL0ZQVnFsWGxpVEZqUERGNHlvMFRTVW15Y05FaTZYMzk5Vkt2UVFPN3lOeU9IVHVZVmNjWmhaUXVMWldlZkZ5dExkWTk1bVVtSmN2T2gwZEtWbnE2N3ZFZVZaVFJ5YVhiWjZJU3ZwMDdkN3J5cGFxdG02TE9RVmMzQ1oyaXJyVTllL1RRa2JQVTcxVVYzY3lMelpzM3k0RURCM1RrSFBYejNtQmRyNzJBQkIzNWR2aUxyK1RvcDUvcnlDRHJqVlB4c1JFU2NaNzVvekFBdUs5Ky9mcDJFZ1prNTQ2QkErWHFxNjdTa2UvWXQzKy9YV1N1VnAwNjB2ZUdHMlRGWDMvcFI0RC9WNkpqZXluV3FZT08zSkc4OUU4NThQNkhPdklldFF6NkZNY2M1azVXbHVPblRKaWNVZjVxemh6ZE9qZnpETzAvdjdoMWE2bmdnZVh0Q2drNjhrWHRPOTg5WXBSOVVUQ3RlTGV1RXRXN3A0NEErSnRPblRweDdqbHlGQndjTERQZWVrc3VhTkpFOS9pZVR6Lzd6QzRzcHhKMWRSNHc4TGNBNi9wWGVleG9DU3JsenBGZmY5cy9hYXFjM09Ucy9tV25xUE95ODdwWHViREp5TXgwZklhK1RKa3ljdmxsbCtuSVdVdisrRU15OGxDbzhMdnZ2OWN0Wi9YdDAwZTNDaDRKT3ZJbC90NGhrcFdTcWlOelF1dlV0ajYwSHJObjBRSDRwK3M5OU9FSTcxTDdJci8rNml0cDByaXg3dkU5YXBuN0o1OStLazJiTjdjcndDY25KK3RIVU5pRmxDc3JGUjU5V0VmdXlEeDVVaEllZkZneXJXVFlhMVRDZWZUb1VSMmhJUFRwMVV1M25MVnY3MTU3MmYrNU9IandvUHk1ZkxtT25CTVJFZUdwQXJVazZNaVhOSmZPTzQ5NWRxb0VGUzJxZXdENG0wclIwVkt2WGowZEFUa3JXN2FzelB2dU83bjgwa3QxajI5U0JaMVVCZmlMMjdhMTkxVUNTdFExMTBqUkR1MTA1STVUYTlmSi9sZGYxNUYzcUp0WjFHMG9XQjA3ZHBTUWtCQWRPZWVrZGYwNzErMCthOWF1ZFhTZi9kL2FYSHl4MFNQd3poVUpPanl2L01NUHN1OGM4SE5ObWpReE1nQ0EveXBac3FSODl1bW5NdVQrKyswemUzMlpHblMydmVRU21mdnR0N29IaFZwZ2dFU1BHaWtCTHAvOWYrREZWeVhaU3RTOUpOMUh6bXIzWjlIUjBYSnhxMVk2Y3RiWFgzK3RXN216YU5FaUl6ZHNialI0NW50ZWtLREQ4OUpVOVU3dW5nSityUnJGNFpBSFlWWUNNK21wcDJUV1J4OUpsY3FWZGE5dlNqeDRVSHIwNmlYdnZmKys3a0ZoRmw0MVJzb1BHK0xxMXI2c2xCVFpPZkl4eVhLNDBGaCtzUDNERy9yMjdhdGJ6anJYNWVyejU4L1hMZWVvYlZPbTl0bm5GUWs2UE8vZ3EyL0tzWjkvMFJFQUFQOTBUZGV1c3VxdnYrelpkRFhZOGxXcUlOYUFnUU5sMWllZjZCNFVabVZ1NkN2aERkemQrbk5xOVZyWis4SkxPaXA0eGRqZW1HdHFKVkZrWktTT25OV2hmWHY3aHFqVDFPcWgvZnYzNnlobmlZbUpzdlRQUDNYa0hIWFdlMVJVbEk2OGdRUWQrUkxab3BsdW1aT1ZtaVk3SHh3aHFidk5ub01KQVBCZFJhMkJ2SnBOLzhzYXdQWHUxY3ZZUU5XMDlQUjB1ZjJPTzJUNWloVzZCNFZWWUdpb1ZKazBRUUxDM1YzcW52ajYyNUswYXJXT0NwYXBJNzc4a1hxbTFFa1hKcWdqVUJzMmFLQWo1NmpsNnI4dFhxeWpuQzMrL1hmNyt1aTAvamZkcEZ2ZVFZS09mS2t5OVNrSkttUCtybFBHZ1VTSkgveUFKeXVNQWdDOG8zTGx5akp6eGd4WnVYeTUzSHZQUFJKVnVyUit4SGNrSlNWSi81dHZabmt2N0JvOFpXNi9UVWZ1eUZKVjNZYy9ZbGQzTDJpcU5nbjFTWElud09BTXVwcWR2N2wvZngwNTY3ZmZmdE90blAzMDAwKzY1Wnp5NWNySnBaMDY2Y2c3U05DUkx5SFdDN3ZLTTFNa0lNVE1IYnZUblZ5NlhQWTkrNEtPQUFBNE16WHJWcTFhTlprNlpZcHMyckJCM25yakRXblZzcVZQemNadDJMaFJKa3ljcUNNVVd0WnJ0dnlkdDB0b3JacTZ3eDJwY1p0bDc0c3Y2NmpncUlTelNKRWlPa0pPVkJJZEdocXFJK2QxdnZwcUNUUHc5NnVaOGR3VWZ2czFsNG44dVZEVjI5WHFLNjhoUVVlK0ZXdmRTcUtzRHc4M0pMNzh1aHo3MWZrM0tBREFQeFV2WGx6NjNYQ0QvTFJva1d4Y3QwNG1qQnRuRDhwTUREU2Q5dElycjhpK2ZmdDBoTUlxTUR4Y0trOTRVaVFvU1BlNFE0MjVUaGc0Yy9wY3FIM1A0UzVYcy9kVjVjcVdOWnFncTJydWpSczMxcEZ6VnExYVpSODVtUk43Ly9teVpUcHlUdS9ldlhYTFd3S3lEQjR1bUpXZUxwdTZ4RXJxeGpqZGs3Mm9RUU1sZXRoUUhmMlRXdGE4b1ZWN3lUaDBTUGVjV1lPMXl5WFFSL2VjbVpUNDVnelo4OFFFSFRtcllkd2FDUWdPdG4vWDIyNjlRNUorL2xVL1lrNXd1YkpTNjZ2UEpNVDZzN0E2TW4rQkpBd1lwS016SzlFalZtSW1uL24zbnBXUklYR2RZeVZsNHliZGs3MlMzYnBLbFdtVGRlUi9Uc1hIUzl4bG5lM1hzRW1CUllwSW5RWGZTWWdMVzBKTXVIL0lFSG54SlhPRmcrNis2eTZaUG0yYWpyeE5mV3cyYXRMRW51RTA1ZHR2dnBGT0hUdnF5QmxObXpXVFZhdk43U3Q5NSsyM3BXK2ZQanJ5TnZVN1BIYnNtSHd6ZDY0c3RCSjN0Y1J5eTlhdFJ2WTM1dGV3Qng2UThlUEc2Y2haYXRCYnRVWU51emlkS1h0MzdmSmNBYVovVzlleW5hUWZPS0FqYzZJbmpaY3kzV04xZE81MlRYaEtEcjcrdG83Y0VWSTFSczZiTTF1Q0NtaDhyZDZUZFJzMGtCMDdkdWdlNTZuVk51M2F0dFdSN3pxdmRtMTVhUGh3SFpueDBzc3Z5MzJEQit2SU9RdC8rRUhhdEdtam8vLzF5YWVmU3Q4YmJ0Q1JNOVM1NTFzMmJaTHc4SERkNHgwazZJV0FHd202a25id29NUmQzVTB5OXB2L2tJdHMzVkpxdlAyYUJCVFNmVWtrNk00aFFjOGRFdlQvUjRKK1pyNlVvUCtiU2dMVVRMVksyTldYbXFsUmxZVU5EcEZ5VGMxYXFabC9FNE5JRXZULzhKVUVQZVA0Y2RsNDliV1M3bkxSM05MOStrcmx4MGZaeSswTHdpVWRPdVM2a0ZoZVhIWGxsZkxsNTUvckNEbFIxOFZxTld0S21zTkg4WTE0NkNFWk8yYU1qdjdYZ050dmx4a3paK3JJR1gxNjk3YnJsWGdSUzl6aG1CRHJBN2p5bEltdUxNRktYcnhFOXI3d3Nob3A2eDRBQVBKR1ZUNnVWS21TM0Q1Z2dNeis5RlBac0hhdC9QempqM0xYSFhkSTFaZ1lZNVdSYzJQdjNyMnljdFVxSGFFd0N5cFdUQ285YVNVeGdlNE8zdzkvT0V1Ty8xbHdTOTJiWFhTUmJwbXhlczBheWNqSTBCRnlVclpzV1duWm9vV09uSlBUUG5SMUEzSHhraVU2Y2s2UDd0MTF5M3RJME9HbzRtMHZsakozdWJBZjNYb1RIM3p4VlRuK3gxTGRBUUNBTTFUUm9CYk5tOHV6enp3ajY2MWsvYWVGQzJYUVhYY1ZTRVg0ek14TStmcnJyM1dFd2s2TnMwcGMwMWxIN2xBcnpIWU9mMFF5a2dybVZJSGF0V3ZybGhrblRweXd0N3pnN0ZTaHpXdTZkdFdSYzlTS3RKU1VGQjM5MDU0OWUyVExsaTA2Y2tiNTh1WHRsUk5lUllJT3g1Vy9aNUJFTkRkN3QxUEpTa3VUbmZjOUlHa3VMS2tIQUJSTzZvaW5aczJheVRQVHBzbld6WnZscFJkZWtOcTFhdWxIM2JIa2p6OTBDNFdkT2tvcit1RmhFaFRsN3MyaXRCM3hzbnZpNUFKWnVkakN3SXp0NlZSeXZpbnU3TnR4OFIvWFhudXQ0eWRpcUpWQzI3ZHYxOUUvcVRvaFRxOXc2Tks1czlHQ2V2bEZnZzdIQllhRlNzd3pVeVNvYkJuZFkwNjZsWnduREh0WXN0SlptZ1FBTUVzZCtUVGd0dHRrNVlvVjh1VFlzUklSRWFFZk1VdnRpV2NKTHY0V1VyYXNSSThlNmZwUzl5TWZmeUxIZmpPM0Z6dzcxYXRWTTNyVW1scWw4c01QUCtnSVo2TitIODJiTmRPUmMrWmtzMUxJNlJWRTZqaTYzajE3NnNpYlNOQmhSR2lGQ2xMNTZZbi9MU0JuVXRKUHY4cSs1MS9VRVFBQVpxbFpkVlV0K2ZOUFA1VWlMaFNuVlVYc2ZIVUpyaGNyNC91RGtsZGVJY1V1ZGJhUTVObllTOTJIalpEMHc0ZDFqenZVbHBQNjllcnB5QXlWSEhxaEtLU3ZNRkVROUV5RkFKT1NraHpmZjE3UnlsRmF0MjZ0STI4aVFZY3h4ZHRjTEtYdnVFMUhaaVdxL2VpL3N3UVFBT0NlRGgwNnlQQmh3M1JranByaFUvdGtuYWFLM3ptOVZQWGYyTnRyUmtCUWtGUjYvRkVKTEZGYzk3Z2pmZDkrMlRWK2txdEwzWU9zbi9YU1RwMTBaTVpmSzFmS3RtM2JkSVN6dWVMeXl4MHZucmw4eFlyL09ROWRIWCtwS3NjN3FWdTNidmI1K2w1R2dnNXpyQS85aXZmZkl4RXRuVjhHODIvMmZ2UUhIbkw5cmk0QW1LQVNNaWVwbVNHbmo4WEJmd29tM1hiYmJjYVh1cXZmMzc4SHJrNVFnMVRUQ2JySkk5d0t1OUR5NWFYOGcwTjA1SjZqbjM4cFJ4ZjlxQ04zWEhIRkZicGxobHJwOFpaSGo5enlvaG8xYWtqREJnMTA1QXgxMU9XdTNidDE5QitMRnk5MmRHV0R1dG5UeitIejFFMGdRWWRSNnB6eUtwTW5TbENwa3JySEhIVXVhTUpESTQyZlp3MEFwaDAvZmx5M25QSEpwNS9LK2cwYmRBUW5sUzVWeXQ2VDZZdE1KK2ZLWm9lckwrT2Z5dlRxS1JGTkw5Q1JTekl6WmRkall5WDk2RkhkWVo0NlZVRWQ4V1hTakhmZXNaZFU0K3pVUHU0YisvWFRrVFBVVFpMZmZ2dE5SLzh4Wjg0YzNYSkcxYXBWcGRINTUrdkl1MGpRWVZ4WTVVcFNhZXBUOW5JczAwN01XeUQ3MzNoYlJ3RGdtNXhjMGhjZkh5LzNEUjZzSS85eThPQkJPWENnWUUveVVBTlZ0U2ZkTkRYejQ3VHc4SEFKTkp5a3EyV3JNQ2NnT0VncWozOUNBaUxDZFk4NzFLVEl6a2RIMjhtNkc5Unk2bDZHQzN1cDQ3ekdQdkdFamdxZTB5dXBuS2FPS1hPNkV2cmNiNy9WcmYvY3FQN2xYd2w3ZmwxN3pUV2VydDcrTnhKMHVLTEVKZTJrMUswMzZjaXNBMU9teS9IRnpoYVVBQUEzclhBb3FWSDdmL3ZkZUtNa0ppYnFIditoa3ZPdTExNHJ6VnEwc0Nzd0YrUmcxdlJ1WEpXY0Z5OXVacTl4NDhhTmRjc01OU05HOFMyekltclZsSEwzRHJLM0ZycnAyTGZmeTVINUMzUmtucXE4YlhyVng2dXZ2U1pyMTYzVFVjRlEyNUhlZmZkZHVlbm1tejFkWkxGYXRXcFN2WHAxSFRsREZZcjcrMmRldFdxVm95c2ExTTNVVy9yMzE1RzNrYURESGRZRnRlS1EreVM4U1NQZFljNS9xb3crTE9tSGorZ2VBSENPR2lDV0tsVktSMmFvWTdYeW05U2twS1RJTGJmZTZuZ0ZYQzlRTXl2WHhzYmF6NVBhczlqRlN0VDczM0tMN1A3WC9rVTNxTDNocG0rQWhBUUhTNGtTSlhUa3JNcVZLdW1XR2N2Ky9OTSs0eGhtbGUxL280VFZxNk1qbDJSbXlhNlJveVhOcFZVc3paczNOMTdOL1lTVkVLcWJta2RkWEw3L04zWE5YN2x5cFZ4NitlVnl5NEFCOHZHc1dmTHNjODk1OWdhWFdqblU3L3JyZGVRTWRlTjExNjVkZGxzbDYwNys3T2ZWcmkyMXJTOWZRSUlPMXdSR1JFak1jMU1sME5Bc3dPblNkKzM1ei9ub0hsOGVCTUEzbVM0S3Ruck5HbG03ZHEyT3p0M0preWZsWmlzNS85TGgvWHRlb0txWjkrN2JWNWI4OGY4bmQ2Z3p3ai84NkNOcGZPR0Y4dFNrU1VZcW5tZm5wNTkvTm41am9FbVRKc2FXMFZjeW5LQ3IzOFhqWThia2VhRE5NVzI1RXhnZUxsVW1QR25YL25GVHhzRkRzdk94c1NxNzFEM21xSlVrUTF6WXJyUEd1dmIyNnRQSDhWb2dPVkZKNlcyMzN5NHRMNzc0djhlTnFmZk1xTkdqWmY3OCtYYnNSZGZGeGpxNi9VYmQ4RlEzOVJTbno2YnYwcVdMNDVYblRTRkJoNnZDS2xlV1NsTW02TWlzRS9NWHlZRjMzdE1SQURqSDFHem02Y1pQbkppbnBFWU45R0s3ZDdjTHcva2JOV0R1ZThNTk1pK2JnZHVSSTBmazBjY2VrenIxNjh1MDZkT056MnlyL2UrRGg1aXZvbjNoaFJmcWx2TmF0MnFsVytiTWZPODllZU9OTjg3cDlieHAweVlaUEhTb3RHdmZua3J3dVJUWm9MNUUzZUxPZHNMVEhaODNYdzU5OFpXT3pGSUpZYVhvYUIyWnMyRGhRbW5UcnAyc1c3OWU5NWl4ZGRzMkdUWjh1TlJyMEVCbXZ2dnUvOXlRVXE5OXRUcG8rL2J0dXNkYjFCTDNlblhyNnNnWjM4K2JaMi9QK3ZIbm4zV1BNMjZ6bmtkZlFZSU8xNVc4ckpORTNUbEFSMmJ0bnpSVmtsYXQxaEVBT01QcDQyWE9SQ1hZTDczOGNxNlRHalh6OE43Nzc4dEZ6WnZML0FYdTdRdDFpMXF5UDJEZ1FQbjJ1KzkwVC9aVWtiM2hEejhzTld2WHRndmtMVjI2MVBGajVyWlpBK2JPWGJ2YUEyeVQxTDVKazhXeGF0V3FaWDhQazlSemY4OTk5OW1KeHVyVnE4K1ljS3ZYNzBZcktYL25uWGZreXF1dmxrWVhYQ0F2dlBpaXZZMUJKUzdJaFlBQXFYRC9QUkphdmFydWNJbDFqZG96N2lsSmRXRXJRN0ZpeGVUUmtTTjFaSlpLemx1MmJtMnZ5am5zNERHK2FvV1RtaFZYSzRIcU4yd28wNTk5Vms3bWNJemkvZ01INU5ycnJuTjFaVkJ1cVpVOXZYdjEwcEV6Vk4wS2RjMTJzcTdJQmRiMVJCME41eXRJMEZFZ0tneStUOElhbU4xSHBHUlpGOEdFK3g3Z2ZIUUFqbExGY1V4VGlmblFCeDZRSVVPSDJyTW5haG4zdjZrK2RYYXNLaWpVdEZrenVlVzIyeVR4NEVIOXFQOVF5WnY2MlQ2YlBWdjM1RTZ5OVJtZ2JuSzBiZDllNmpab0lJODkvcmdzc3hJK05UdVRsOVVKYXNDb0tqMVBmT29wYVhMaGhiTGlyNy8wSStaVXJseFp6cmNHOGFhb0diQ1NKYzBmaFpwaFBYY2ZmUGloTkcvVlNpckZ4TmhKdU5xRzBjZEtVbHBkZkxGVXJscFZMckNlMDlzR0RyUnZNSjMrZWxlL043VTNGV2VubHJwWEdqZFdyUWZYUGU3SU9IUklkbzRjTFZrWjVyY1dYbi85OVViZkU2ZFR5YlJhbFZPM2ZuMTVjUGh3V2I1OCtUa255dXExckZienFPMHdhbFZJblhyMTVLb3VYZXpyMlptdTYyZXlidDA2dWVPdXV6eFoyVjBsNkU3ZTVOdXdjYU44OXZubmVicEdaMGRWYnpkOUk5SkpBZFlQNzl4UC95K3FXTmVtTHJHU3VqRk85MlF2YXRCQWlSNDJWRWYvbEptYUtodGF0YmZmL0RscHNIYTVCRVpHNmdoL1MzeHpodXg1d3N5eThvWnhheVFnai9zNVRtM2JMbHU2WGllWlNjbTZ4NXlpVjE0bTFaNmY3c3BSYjI1UVZWTVRCZ3pTMFptVjZCRXJNWlBQL0h2UHNqNFE0anJIU3NyR1Rib25leVc3ZFpVcTB5YnJ5UCtjaW8rWHVNczZHejgvUDdCSUVhbXo0RHNKS1JPbGUzekwvVU9HeUlzdnZhUWo1OTF0RFR5bVQ1dW1JKy83YStWS2FkNnlwYU1EaUp5bzQ3QnFXSW1VT2d2NDcyUktMZWYrZmNrUzJibHJsNnQ3SmJQenp0dHZTOTgrZlhUa0hEVnpyaEk1cDVic3F5Si9aYUtpN0pzc0hUdDBrUFBQUDk4dVBGVzZkR203VXJyYVQ2bSsxTUJaZmFtWk0xV0k3cGRmZnBIdnZ2OWUvc3pEQUQwL0huM2tFUmx0SlFnbVhkdXRtM3h6MnZGR1hqVDR2dnRrOHFSSk9uTFd1cGJ0Sk4yRlFtZlJrOFpMbWU2eE9qTEl1aTRsUERaR0RyLy9rZTV3aWZYZXF2VFVPSWx5NFdmODJYby9xbUpxQlpHd2xpOWYzaTQ0MXJKRkM2bFFzYUo5YlZiWGpyRFFVRW0zcmhscW1icTZxYXFLSThiRnhjbXZpeGZMZ2YzNzVlaXhZL3B2eUx1bkpreVFvUzVzcXprWDZuZlF1azBiKzlyb2xMK3Z3VTVRMS95MXExYjVUSUU0aFJsMEZKanc2dFVrMnJxUWl3dDN0RTU4TzA4T3pKaXBJd0RJSHpVNGk3Q1NacmVvR1dTMTNQS3RHVE5rMmpQUDJGK3F2WDdEQms4azU2YW9nYTdhNCsza2ZucDFVK1ZBWXFLOWRQcXB5Wk9sMzAwM3lZWE5ta20xbWpXbGRObXlVclZHRFh2WmFZeVZ3S3U0NW5ubjJmdWdIM24wVWZueHA1OWNUYzdWVFlONzc3bEhSK2IwTVhCanhXa3Z2ZktLYkxLU0hlU0NXdW8rK0Y0SktsZFdkN2pFZW0vdG5UaFpVdmZ0MHgzbVhOeTZkWUVkbWFWV0xha2JCSk9mZmxvZWVQQkJ1K1pIcDhzdWt6YVhYQ0x0TzNhMGJ4eW83VGhxNW4zR3pKbXllZk5tUjVKelpmVGpqOXY3NDcxRXpVeDM2OVpOUjg1d0tqbFhMbWpTeEtlU2M0VUVIUVdxMUZWWFNLbSt6dTVkeWM3K3lkTWxlVzNCbm0wSndEOUVSa1pLaHc0ZGRBUVRWSEorLytEQjh2cWJiK29lZDZpVkNmRUpDWTROcVBOajBKMTMya202YVpkMjZpVEZpeFhUa1RlcGxSUVBQZnl3YTZ0V2ZGMUlWSlJVR2pQS2xVbVEwMlVjT2l3Snd4OHh2eXJOK3JtZW5qTEY4UUpsWG5mS2VoL2MxTCsvN05peFEvZDR3NVdYWDI3UFZIdlJEUTRmQmVjR0VuUVVMT3NDR3oxcWhJU2ZiNzdnVXRhcFU1Snc3MURKT082OUloc0FmRS9QSGoxMEMwNVRTeVlmSERaTVhuMzlkZDFUK0RTb1gxOGVmdWdoSFpsVnBrd1p1ZXl5eTNUa1hWOS84NDBzK3ZGSEhlRnNTbHphU1lwZDNrbEg3a242ZGJFY25HWCtGSWtpUllySXpCa3o3TUp4aGNtKy9mdnRXWHN2clo1cTFLaVJKNHV3aFlhR1N0ZXVYWFhrTzBqUVVlQUN3OElrNW9WbkpMQllVZDFqVHVxMjdaTHcwRWg3RHpZQTVJZWFkVlFEUkRoTExXMThjdHc0ZWZIbGwzVlA0YU1HbGE5YVAzK1k5Zm5vQmpYejljakREenQ2bnJFSmF2WjgrRU1QY2V4YUxnVUVCa3Jsc2FNbEtNcjhLb3gvc0g1UGU4WlBrbE03NG5XSE9ZMGJONVkzWDMvZGZzOFVKcXZYckpGQjk5emo2Rkx3L0ZBckdrelVJTW12cGhkZUtOV3F1bnlxZ1FOSTBPRUpZVlVxUy9TVGo5c3o2cVlkLzI2ZUhQendZeDBCUU42b1FrR3hEdSs3TXkwcUtrb3VhZGRPUjk2akVyQkpreWZMdUFrVEN1MVNacFVrUHpOdG1qUnYzbHozdUVNVnkrdmFwWXVPdkVzVmFIeG5KalZsY2tzdGRhL3cwSVAydm5RM1pTVW55ODdoSXlUTGhTSnVxa0wzK0NlZjlPd1NhMU0rL09nam1mTDAwem9xZUYwN2Q3WVRkUy9wZitPTlB2bTZJRUdIWjVUcTJsbEs5cnBPUndaWkh4Wjd4MCtTNUhYcmRRY0E1TTJ3Qng3d21aa2I5ZTk4N2VXWDdVcndYcVVHVWwyc1FWNnRtalYxVCtHaUJyY1BEeDh1dDkxNnErNXhqM3J1eHo3K3VHdXo5dm54eExoeGRxMEE1RTVVN0xWU3BPM0ZPbkpQOHJMbGN1Q3RHVG95UjcxMlZUSEZ4dzJmZHVCRlU2ZFA5OHdSaE9vbVg2WG9hQjBWdktKRmk4cFZWMTJsSTk5Q2dnN3ZzQzZ3MFNOSFNGZ2Q4NVVXczVKUFN2eGQ5MG1HSDFjL0JtQmV2WHIxN0R2MHZrQU5YdFZldkppWUdOM2pUV3FROS92aXhmYlp1b1ZwUml3NE9GaEdQUFNRUERacVZJSDkzT3Ixckk1MTgvcnp2bnYzYmhrL2NhS09jRmFCZ1ZKcDlFZ0ppSWpRSGU3Wi8reUxraEp2ZnFtN3VyazE0dUdINVpXWFhwTElBdmc1QzRKYXZyMXcvbng3WlpRWGhJU0V5STM5K3VtbzRGM1V0S2xVckZoUlI3NkZCQjJlRWxTMGlNUzgrS3dFRmpkZjhDTXRQa0Yyamh4dDc1VUNnTHhRaWN5VFR6d2hWU3BYMWozZW8vNk5JMGVNa0FjZmVNQ082NXgzbnYybmx4VXJXdFF1L3ZUQnUrOUt4UW9WZEsvL1V1ZmNQenQ5dW4zZWVVRXZFWDFnNkZEcDBMNjlqcnpyUlNzUjI3aHhvNDV3TnVIVnFrbjVZVVBzeVJBM1paNDRJZkZEaDB1bUMzVUQxTFh1MWx0dWtkbWZmU1pseTdwOHhKeUxTcFFvSVUrT0hTcy9MVm9rOWV2VjA3M2VjRjFzckdkcVdWemZ0Ni9uYnpabWh3UWRuaE5lbzdwVWZNSktuRjBZcEJ5Yk0xY1NQL2hJUndCdzd0UXhXSysvK3Fvbmw3cXJXVmsxSTNyNnJHeTVjdVhzUDcxTy9YdTdkKzh1Znk1ZEtqZjE2K2NUUzYvem9tclZxdkxObkRseSs0QUJuaGhNcWxtdzkyYk9sRWJubjY5N3ZNaytkbTNFaUVKYnF5QXZ5dlRwTGVFTjYrdklQU2YvV2lVSDNucEhSK1oxN05CQmZ2LzFWL3VzZEY5TjBNNUVKYjZYWFhxcC9QbkhIL0xROE9HZS9NeFJxM0M4TUd1dEt2dXIyZ1MraWdRZG5sU3F5OVZTc3FjTCs5R3REL1o5NDU2U2szR2JkUWNBbkx1T0hUdksxQ2xUQ256MjgzUnFtZWNMeno0cmo0NGMrWTkvVjZsU3BYeHEwS3Btd2w1LzdUWDUrY2NmcFhXclZwNTZqdk5ESmNLMzlPOHZTMzc3VGRxMmFhTjd2VUVkdS9iRjdObWVUOUxWc1d2ejVzM1RFYzRtTUN4VXFqdzFYZ0xjdnRsbGpiVU9QUCtTcTJNdHRaWG51N2x6WmR3VFQ5aDdrWDJadWw0M2FOQkF2dmpzTTVuejVaZjJUVDJ2VWpjTmVuYnZycU9DbzY2cDZyUE9WNUdndzVQVTBTRHFmUFN3dXVhWFltYXEvZWlEN3BlTXBHVGRBd0RuYnVEdHQ5dVZoTDJRUUtvbDkzTysra3B1dmZYVy8vbjNxSmtGVllIZWw2Z0I2Z1ZObXNpQ0gzNlFMNjNFVVNYcXZrenRqZnplU2g1ZWVmbGx6K3dmL2JmSzFtdElKVGhxTnRLTDFHdENuVWhReWNQYlM3d280cnphVW1hZyswVUlNNU9USldIWXc1S1pscVo3ekZPcmJvWTkrS0Q4c1hpeGRMdm1HcCtjVGE5YnA0NjgvY1liOW8yOEs2NjR3aWR1VUhyaHVEVmZyMkZDZ2c3UENpcFNSS3BNbXl5Qkxwd3puTHA1aSt4NmJJeGQ0UjBBOGtJTkJ0VCszYmRlZjkzZVExMFExTCtoMy9YWDI4dkNzNXVWVlRNY0JmWHZ5eSsxeEZNTlVoY3RXQ0FMNXMyVFhqMTcrc3haOU9wM294THo5OTk5VjM3OStXZHBZLzErdkQ2QVZEUHBhc1pPRmE4TDk5QVdBMVVjNjRQMzNwUHZ2LzFXR3RSM2Y4bTJUN05lYytYdnVsUENyRVRkYmFkV3I1Vjl6NzJvSS9mVXJsMWJabjM4c2Z5NGNLRmNjZm5sbmovdlgxSEw4ejk4LzMxWjhlZWZjcjExVGZlbExUNXFtWHYxNnRWMTVMN2l4WXY3eEpHUk9TRkJoNmRGMUswakZjZU9zbDZwNWwrcVJ6Ly9TZzdPL2tKSEFKQTNhakMxZE1rU1Y4OGJWM3ZOMjdWdEt6OHZXaVJ2dnZGR2prdjcxTkpxTll2dXkxUmkyOWI2ZWRWZTZhMXhjZkxVeElseTRRVVgyTStEMTZpQ1RqMnV1MDUrWExEQVRzeDc5dWpoVTh2MDFldGw3Smd4c21UeFl1blVzV09CUGNlcWtKNzYvcDk5OG9uOVBIYTNubE4vMmU3Z05yWFV2ZEs0TWVyQ29YdmNrL2pxRzVLOHZtQ091VzNWc3FWODljVVhzbHpYdFNqanNkVXJhdSsyT21MeEx5c3BWNnVGMUd2Y2k5ZTBzMUh2MWRodTNYVGtQbldkOFBuUHVDeUQxVFd5MHRObFU1ZFlTZDBZcDN1eUZ6Vm9vRVFQRzZxamYxS1ZIemUwYWk4Wmh3N3Buak5yc0hhNUJFWkc2Z2gvUzN4emh1eDVZb0tPbk5Vd2JvMEVHTDU0WkdWbVNzS0lSK1hveDUvcEhuTUNySUZJemE4K2tZZzZkWFNQTngyWnYwQVNCZ3pTMFptVjZCRXJNWlBQL0h2UHlzaVF1TTZ4a3JKeGsrN0pYc2x1WGUyVkRQNHE3Y0FCMlRWdW92V2NtRjA5WVErSUhudFVnbDA0b2NDRUdlKzhJL09zQVlNcGwzYnFKRGYzNzY4ai81Qmh2YysrbWpOSHhvd2RLK3MzYkxCanB4V3hQdk5Vb3ZySXd3OUw4K2JOY3owenBDcGcvMllsWEU0YWRPZWQwcnAxYXgyNVR6Mi9PK0xqNVF0ckFQNjU5YlYyM1RvNWV2U29mdFE5NnVaQnlaSWxwZGxGRjltSmVUZHJvT3JMZXlGUGwybDlIcTlZc2NJKzRtekJ3b1Z5NHNRSi9ZZ1phdGF3Um8wYTlwN1cvamZkWkMrN041R1VKNHdjTGVuSGp1bkluS2pyKzBqeFZpMTBWUEQydi9tMkpLMVlxU1AzaEo5WFd5cmVjNWM5bTErUTFQVmg3dHk1TW1QbVRQbHorWEk1ZlBpd2ZzUWQ2bnF0aW94MnVPUVNPekZ2MmJLbFJQcEpIcU0rODhhTkg2K2ovM1V5T1ZtK3RwNTdFNStMNnNhdFdsM2x5MGpRQ3dGZlQ5Q1ZET3VEYy9OMXZTVjF5emJkWTA1WTdWcFM2OHRQSkRBOFhQZDREd2s2NER2UzB0TGtqNlZMNVpWWFhwRzUzMzRyeDYya0pxK0Rra0JyUUt0bU5GVXlyZ1lnbmErKzJrNWF2TDVVMm0xcWFIUHc0RUZadlhxMWZQdmRkL2JnZThrZmYwaTZOUzVSWDA1U00xeHFvSzBTOGhiVzcrVnE2M2VpaXF1cEpOMmZxYlBJdjdFRzJMTSsrY1IrYmsrZVBHa244UG1oWHR0cXhVRnJLMUZSUzFUYnRXdG5GOFR5aFNYSjhHMUhqaHl4cnhPcThPRGl4WXRsOVpvMTlyWEN5UVJTWFN2VWxoeDFyYmo4c3N1a2ZmdjI5aDd6aUVKeWJ2dnBQcHM5VzNyMzdhc2o1NmpuZDFkOHZNOXNmY29PQ1hvaDRBOEp1cEs4YnIxczdYbURaQ1diTCtaV3NuY1BxVExoaVFLL3U1c2RFblRBTjUwNmRVcldXQU0vbGJELy92dnZFcCtRSUlsV0lobHZEU2hVZ25NNnRmKzNmTGx5ZGhFeFZmU3RXYk5tMHJCaFEybmNxSkhmSjM4bXBGcGppWjA3ZDhxYXRXdnRQemZGeGNuV3JWdnRnYm1hU1V0S1NySm40TTlFL1E2aVNwZTJuM2UxdjdHYWxUVFdxMXRYcXNURTJMK1R5cFVxRmNwQjl0L1VjN2ZXZWw1WHJsb2w2OWV2dDJmUDFHeWtlbDYzYk5raS94NW9Wb3FPdG1jTzFaYzY1LzZDQ3k2UW1qVnJTaVBydFIxVHBRb0pPUXFjV2gyeWJkczJleVdPdWw2b20xREhqaDJ6djlRMVkvZWVQWko4aHZHb1NneWpLMWEwYnpTcDY0VzZnYXB1MkttcTh1ZGIxNG9xMXV0YjNZZ3F6TlJuWFl2V3JlMXJoZFA2M1hDRHZQWEdHenJ5WFNUb2hZQy9KT2lLT3JOOHp5T2pkV1JXcFdjbVMrbHJ1dXJJVzBqUUFmOXh0bzloWnNmTnkrMVFpTi9GdWNucGVlVzVoSy9LemZXQzEzZjJYbnY5ZFJsMHp6MDZjbzY2c2ZmRGQ5L1pCVGg5SFFsNklYQms5aGR5NE9YWGRlU3NXbDkvYmlYb0x0N3B0bDZ1dTZjOUt5bWJ6djZheXEvQVlzV2s4cGhSRXVUQjF4UUpPZ0FBQUh6SnZuMzdwUEVGRjhqQnMrUjBlYUcyQy95MWZMbGZyTUFoUVFkOEVBazZBQUFBZklWS09XKzU5Vlo1NzRNUGRJOXoxSXFGMTE1NXhTNG02UTg0bndJQUFBQUFZTXo3Vm1KdUlqbFh5cFVySjlmRnh1ckk5NUdnQXdBQUFBQ00rUFhYWDQzc08vL2JuUU1IK3Z6WjU2Y2pRUWNBQUFBQU9HN1Y2dFhTcTArZk0xYTlkMExGaWhYbHZudnYxWkYvSUVFSEFBQUFBRGhxL29JRmN2a1ZWOGorQXdkMGovT0dQL2lnZmZ5bFB5RkJCd0FBQUFBNElpMHRUWjUvNFFXNU5qYldTTVgydjlXdFcxY0czbjY3anZ3SENUb0FBQUFBSUY5VXBmYjE2OWZMMVYyNnlKQUhIcENVbEJUOWlQTlU1Zllwa3laSmFHaW83dkVmSk9nQUFBQUFnRHpic0dHRDNEbG9rRnpZckprcyt2RkgzV3RPcng0OTVJckxMOWVSZnlGQkJ3QUFBQUNjazBPSERzbnN6eitYemwyNlNLTUxMcEEzMzNwTDB0UFQ5YVBtUkZlc0tNOU1uNjRqLzBPQ0RnQUFBQURJVVZKU2txeGJ0MDdlZXZ0dGliM3VPcWxlcTVaZG9mMzdIMzZ3bDdlN0lUdzhYRDU0N3oySmlvclNQZjZIQkIwQUFBQUFJSm1abVhMcTFDbDdkbnpEeG8zeTFadzVNdXF4eCtUeUs2K1VXblhxMkV2WUI5NTVwOHo1NWh0alI2ZGxKekF3VUI1NzlGRnAzYnExN3ZGUEpPZ0FBQUFBVU1pZE9IRkNXcmRwSTQyYU5KRWF0V3ZMK1kwYnkzVTllc2pFU1pOazRhSkZrcGlZS0JrWkdmcS9kbCtmWHIxazZKQWhPdkpmSk9nQUFBQUFVTWdWS1ZKRWR1N2FKZHUyYjdlWHMzdEoyelp0NU9XWFhwS2dvQ0RkNDc5STBBRUFBQUNna0ZOSGw3VnUxVXBIM3RIMHdndmwwMW16SkNJaVF2ZjROeEowQUFBQUFJRFVPZTg4M2ZLR2kxdTNscm5mZkNPbFNwWFNQZjZQQkIwQUFBQUFJTTJhTmRPdGdxVm04Ni9wMGtXK25qTkhTcFVzcVhzTEJ4SjBBQUFBQUlCVXFWeFp0d3FPU3M2SDNIKy9mUGpCQjFJa01sTDNGaDRrNkFBQUFBQUFpWW1Ka1dMRml1bklmU1ZLbEpCM1o4eVFweVpPbEpDUUVOMWJ1SkNnQXdBQUFBQ2tlUEhpRWg0V3BpUDNCQVlFeUdXWFhpckxseTZWWHIxNjZkN0NpUVFkQUFBQUFHRFBXcnU5RHoyNllrVjU2Y1VYNWFzdnZyQm44QXM3RW5RQUFBQUFnSzFCZ3dhNlpWWmtSSVRjUFdpUXJGeXhRbTY5NVpaQ2NjWjVicENnQXdBQUFBQnNGelpwb2x0bWhJZUh5eDBEQjhyS3YvNlM2Vk9uU3NsQ1ZxWDliRWpRQVFBQUFBQzJPblhxNkphenFzYkV5TmpISDVmTkd6Zks4ODgrSzlXcVZ0V1A0SFFrNkFBQUFBQUFXM1IwdEJRdFVrUkgrVlBKK3J2NlhYKzlmRDkzcm14Y3YxNUdQUHl3bEM5ZlhqK0tNeUZCQndBQUFBRFlpaFl0S3VYeW1FU3IvMitkODg2VE8rKzRReGJObnk4YjFxMlR0OTU4VXpwMDZNQWU4MXdpUVFjQUFBQUEyTUxDd2lTbVNoVWRuVmxBUUlCZDVFM3RIMjkveVNWeTM3MzN5dHl2djVZTmE5ZmFSZCtlZStZWnVmamlpKzM5NWpnM0pPZ0FBQUFBZ1A5cTJhS0YvV2U1c21XbGNlUEcwckZEQjdrdU50WmVvajV6eGd5WlAyK2VyTGVTOFYzeDhUTHZ1Ky9rNmNtVDVkSk9uZXpsNjh5VTV3OEpPZ0FBQUFEZ3YwWTkrcWlrblRvbHV4SVNaTm1TSmZMZDNMbnkwUWNmMkVYZSt2VHVMVzNidExIM3FvZUdodXIvQjV4Q2dnNEFBQUFBK0M4Uzc0SkRnZzRBQUFBQWdBZVFvQU1BQUFBQTRBRWs2QUFBQUFBQWVBQUpPZ0FBQUFBQUh1QWpDWHFBL2IrenlUeDFTcmNBLzVhWmZGSzNjaERFL1RjQUFBREFsL2pFQ0Q0d05FU0NpaFhUVWZhU1ZxM1JMY0MvblZ5MlhMZXlGeEpWUnJjQUFBQUErQUtmbVdJTHY2Q3hibVh2Nk5kemRRdndYMWxwYVhMc2gvazZ5bDVvNVdqZEFnQUFBT0FMZkNaQmp6eS9vVzVsNzhTOEJaSis2SkNPQVA5MDdKZGZKWDNQUGgxbEw3SkZNOTBDQUFBQTRBdDhKa0V2ZW5FcjYxK2I4MGIwaktOSFpmZFRUNHRrWnVvZXdMOWtKQ2ZMM3ZHVFJMS3lkTStaQlpVdkorSFZxdWtJQUFBQWdDL3dtUVE5ckZwVkNhMWVYVWZaTy9ycDU1TDR5V2M2QXZ4SFZucTY3Qm81V2xJM2I5VTkyU3ZlcVlNRUJQck0yeHNBQUFDQXhXZEc4SUdob1ZLcVYzY2Q1U0FqUS9hT2ZGd092UE91WkZsdHdCOWtKQ1ZKL0lNUHk5RXY1dWllSEZpSmVhbmVQWFFBQUFBQXdGZjQxQlJiVk4vZUVsU3FwSTZ5cDJZYTl6NCtUcmJmZnBlYzJycU5KZS93V2VxMWZPeW5YMlR6dFQzbG1Fck96N0swWFlsc2NaRVV5VVhOQmdBQUFBRGVFcEJsMFczSHFlUmlVNWRZU2QwWXAzdXlGelZvb0VRUEc2cWo3TzEvNVhYWk4zR0tqczR1SURoWUlwbzFsYUx0MjBsRXJSb1NWTGFzZmdUd3FLeE1TWXZmSlNjM2JwVGozLzhnS1pzMjZ3Zk9MaUEwUkdwOCtvRkVOc3c1UVZlclMrSTZ4MHJLeGsyNkozc2x1M1dWS3RNbTZ3Z0FBQUNBS1Q2WG9HZW1wc25tMko2U3NtNkQ3Z0h3dDFJM1hTK1Z4enltbyt5Um9BTUFBQURlNDNOVnBBSkRRNlRLMUVrU1dLU0k3Z0dnaE5Xdks5RWpodXNJQUFBQWdLOHhtNkFIQkZqL3kvbG90UDlLVDllTnM0dW9jNTVVbWo1SkFrSkNkQTlRdUFWWEtDL1ZYbjlKQXNQRGRjOVpxSFV6dVZ3OG83YUpBQUFBQUREUGVJSWVHSm03bWU3Y0hCMTF1cEtkT2tyRjhXUHNQYmRBWVJZVVZWcXF2ZjJhaEZhc3FIdk9MaXN0VlRLT0g5ZFJ6b0tyVjlVdEFBQUFBQ1laVGREVk9jekJ1YWk2cnB6YXNVTzNjc2xLL3FONlhDZFZYbmxCQW9zWDA1MUE0UkphcDdiVStPUjllMVhKdVVnL2RGalM5eC9RVWM1Q0tsVFFMUUFBQUFBbUdkK0RIblorZmQzS1dkcVdiWkt5YzZlT2NxOUUrM1pTNjh0UEpLSjVVOTBEK0QrMTdMeGszMTVTNjdPUEpMeGFOZDJiZThjWC95NlNrYUdqSEFRRVNGaVZ5am9BQUFBQVlKTHhCRDNpdk56UDdCMysrRFBkT2pkaFZhdEt6ZmZma2VoSjR5U2thaFhkQy9paG9DQ0phSGFoVlAvNFhha3lib3dFUlVicUIzSlBWWEEvL1BFbk9zcFpZRVM0aEZVLzl4c0FBQUFBQU02ZDBXUFdsTFRFZzdLaFJWdVJ6RXpkazcyUXlwWGt2Ty9uV0VsQmhPNDVkNWtwS1hMc3g1L2w0RHZ2eXFuVmF5WHpXTzcyMlFLZXBiYUtSSldXeU5ZdHBjeUFteVd5WGowSnNCTDF2RXBhdFZxMmRlOXJINE40TnFFMXFrdWRINzZ4WjlJQkFBQUFtR1U4UVZjMlhkdERVbGF0MFZIT3lnNjVWeXJjZDdlTzhpZjl5QkU1dVhHVEpDOWZJU21iTmt2NnNXT1NsWnFtSHdXOEt5Z3lRb0tLRjVmd0N4cExrU2FOSmF4YU5ic3Z2MVJTdnFYdlRYSnkyWExkazdQU3QvV1hTbytPMEJFQUFBQUFrMXhKMFBlOS9KcnNmK3BwSGVVc01ESlNxbi95bmoxTENNQlpCOTU1VC9ZKy9tVHVqbGdMQ3BTYVgzNHFrZlY1THdJQUFBQnVNTDRIWFNuWithcGNMOG5OVEU2VytEdnZ5MVBCT0FEWk83cndSOWszYm1LdXp6OFBxMVZUSXM2cnJTTUFBQUFBcHJtU29Lc3EwRVd2dmtKSFo1Y1dueUJiKzl3b0p6ZHYwVDBBOHN4S3lJOTgrNzBrM0hYdk9XM3hpTHJsSnJ0YVBBQUFBQUIzdUpLZ0srWHV2UDJjQnZ2cHUvYkkxdGplY3VqekwzTlZ6QXJBLzhvNGNVSjJUWmdrQ2ZjTWtheVVWTjE3ZGlIVnFrcXAyR3QxQkFBQUFNQU5yaVhva2ZYcVN2SFlyanJLblV5VlhBeDlTTGJjY0xPY1dMcU1SQjNJcGN4VHArVGdwN01sN29xdWN1aTF0M0ozNXZuZkFnS2szSDJESkRBMFZIY0FBQUFBY0lNclJlTCtsbllnVWVJNmQ1TU02ODl6WmlVTm9UVnJTTkYyRjB1UkM1clk3YUFTSmZTRFFDR1hsU25wK3cvSXFVMXhrclJrcVp6NGRiRmtXSEZlRkxIZVk5WGZlazBDQWwyN2Z3Y0FBQURBNG1xQ3JoejVZWUc5RjFiU3oyRkdMenVjelF6OFB3ZmV5b0VsaWt1dE9iTWxySElsM1FNQUFBREFMYTRuNkNxSjJEUHBhVWw4K1hYZEFjQUxBc0pDSmViVkY2VjR1emE2QndBQUFJQ2IzRi9ER2hBZ0ZSNGNJaVd1b3dBVjRCbEJnVkpoOUVpU2N3QUFBS0FBRmNnbVUzVW1ldVZ4WTZUb3BSMTBENEFDRXhnbzVSNFlMR1g2OU5JZEFBQUFBQXFDKzB2Y1Q1T1ZtaW83SHhzclJ6NzZSUGNBY0pOYTFsNXh6Q2lKNnQxVDl3QUFBQUFvS0FXYW9OdXNiNS80M2dleWI4SVV5VXhPMXAwQVRBdUpxU3lWcDB5VW9zMHUwajBBQUFBQUNsTEJKK2phcWUzYlplZURJK1RrOGhWVzBxNDdBVGd1SURSVVNsemJSYUlmZTBTQ2loYlZ2UUFBQUFBS21tY1NkQ1VyUFYyT2ZQK0Q3SnM4VGRKMnhOdXo2d0NjRVJBU0xCRk5HdHRMMmlQcjFyRTZPS1lRQUFBQThCSlBKZWgveTB4SmtlTy9McGJFTjk2V2szOHNzeE4zQUhsZ0plR0JSU0tsMkdXZHBNeXROMGxrL2ZwMlVUZ0FBQUFBM3VQSkJQMTBxZnYzeS9GRlAwblNiNy9MeVkyYkpHM0xOc2xLUzlPUEF2aTNBQ3NoRDZ0VlV5SWJueTlGMjdhUm9xMWFTRkNSSXZwUkFBQUFBRjdsK1FUOUg2eC9xcHBOVHp0OFJESk9ISmYwZzRja0t6TlRQd2dVWG9IaFlSSlV2SVFFbHl3cHdTV0tTd0N6NUFBQUFJRFA4YTBFSFFBQUFBQUFQOFUwR3dBQUFBQUFIa0NDRGdBQUFBQ0FCNUNnQXdBQUFBRGdBU1RvQUFBQUFBQjRBQWs2QUFBQUFBQWVRSUlPQUFBQUFJQUhrS0FEQUFBQUFPQUJKT2dBQUFBQUFIZ0FDVG9BQUFBQUFCNUFnZzRBQUFBQWdBZVFvQU1BQUFBQTRBRWs2QUFBQUFBQWVBQUpPZ0FBQUFBQUhrQ0NEZ0FBQUFDQUI1Q2dBd0FBQUFEZ0FTVG9BQUFBQUFCNEFBazZBQUFBQUFBRlR1VC9BRWk0UGhzV0RwQ2hBQUFBQUVsRlRrU3VRbUNDIn0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjAtMTItMjEiLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IlRydXN0S2V5IFNvbHV0aW9ucyBUMTIwIFUyRiBBdXRoZW50aWNhdG9yIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVMkYxMTAwMjAyMDA4MTQwMDIiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMy43IiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjAuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMC0xMi0yMSJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjAtMTItMjEifSx7ImFhZ3VpZCI6IjAxOTYxNGEzLTI3MDMtN2UzNS1hNDUzLTI4NWZkMDZjNWQyNCIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiMDE5NjE0YTMtMjcwMy03ZTM1LWE0NTMtMjg1ZmQwNmM1ZDI0IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkFUTEtleSBBdXRoZW50aWNhdG9yIn0sImRlc2NyaXB0aW9uIjoiQVRMS2V5IEF1dGhlbnRpY2F0b3IiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9LHsibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyIsImVkMjU1MTlfZWRkc2Ffc2hhNTEyX3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUJuVENDQVVTZ0F3SUJBZ0lVZUN0Tk53VGkrVW1MZ251UzAwRENqeFowYUZRd0NnWUlLb1pJemowRUF3SXdQVEVhTUJnR0ExVUVBd3dSUVhSc1lXNWpkV0psSUVaSlJFOGdRMEV4RWpBUUJnTlZCQW9NQ1VGMGJHRnVZM1ZpWlRFTE1Ba0dBMVVFQmhNQ1ZGY3dJQmNOTWpVd05qRTVNVFV4T1RJeldoZ1BNakV5TkRBMU1qY3hOVEU1TWpOYU1EMHhHakFZQmdOVkJBTU1FVUYwYkdGdVkzVmlaU0JHU1VSUElFTkJNUkl3RUFZRFZRUUtEQWxCZEd4aGJtTjFZbVV4Q3pBSkJnTlZCQVlUQWxSWE1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRUVSS3ozL3pQbjlQbjd6WkdQeWFjU2JqWTBDQUxkUEhQSEVEMnczV2MrbVUrSzdwb1lXenZqdUk5TTNQeWE5aUpySjAwbHREQTAvVlpXMjhscmErdzRhTWdNQjR3RHdZRFZSMFRCQWd3QmdFQi93SUJBREFMQmdOVkhROEVCQU1DQVFZd0NnWUlLb1pJemowRUF3SURSd0F3UkFJZ0xadkdaR2xlcHhpRkJiVThXZGtuWHVjbG9XNnNITm8wWUtETUM3Y1F1RzRDSUQvcTdhTFdrcHJ0SHlaSkVhc3ZlMVBrNzk2UWExR29oWE9YSFhNRENSWHUiXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBUzBBQUFFdENBSUFBQURTZ2FHNUFBQVJUa2xFUVZSNG5PM2RUNHpjNW5rRzhFZHJDNUJjcDV5MWk4SzFEdVJhQXRvZ0FXYUFxS2RhSFM2QzZOQ0R0RGtVYWs5REFUcllwNlVDOUZCZGxuc3BHcUNBS2VSUXRHa3duRnNGSHpSeVVRUlFVeXpIOGpHdXVFQ0FCa1hrNWNaUXFoaFFad1lvWktkcmFYcWdyT3pmMmZsRDhuMUpQcitiVnhiNWFialA4dVA3OHZ2MnhHZzBBaEdKV3BBZUFCRXhoMFFLTUlkRThwaERJbm5NSVpFODVwQklIbk5JSkk4NUpKTEhIQkxKWXc2SjVER0hSUEtZUXlKNXpDR1JQT2FRU0I1elNDU1BPU1NTeHh3U3lXTU9pZVF4aDBUeW1FTWllY3doa1R6bWtFZ2VjMGdranpra2tzY2NFc2xqRG9ua01ZZEU4cGhESW5uTUlaRTg1cEJJSG5OSUpJODVKSkxISEJMSll3Nko1REdIUlBKZWxoNEFUU2NNd3pBTTR6aU80eGhBRkVYRDRkQTBUY3V5QURSMmtSMG5UZVhFYURTU0hnTWRZekFZZEx2ZGJyZDc1ODZkQ2YrS1lSZ3JLeXVPNDlpMm5lWFFLQjNNb1dweEhQdStId1RCY0RpYzdRaW1hWHFlNXpoT3F1T2lsREdIU2cwR0E5LzMxOWZYVXprYTA2Z2NjNmhSRUFTdTY4NThEenhLczluMFBJOHpWWVdZUTEzQ01QUThyOWZyWlhlS1ZxdmwrMzZ0VnN2dUZEUXQ1bENMd1dEZ3VtNm4wOG5oWElaaHVLN3JlVjRPNTZKSk1JY3FlSjduKzM3cUU5SHhUTk1NZ29EVFZBMllRMkZoR0RxT3M3MjlMVFdBWnJNWkJFSFNmaVFwZko5R1RCekh0bTB2THk4TGhoQkFyOWRiV2xyeVBHOHdHQWdPbytKNFB4U1FiazhpTFlaaCtMN1Azb1lJNWpCdkdmVWswc0xlaGdqbU1EODU5Q1RTd3Q1R3pwakRQT1RaazBnTGV4dDVZZzR6SjlLVFNBdDdHL2xnRGpNazNwTklDM3NiV1dQZkloTktlaEpwWVc4amE3d2Zwa3huVHlJdDdHMWtaVVRwYWJmYmhtRklYOUxNTlp2TmpZME42USs3VkpqRGRHeHNiRFNiVGVtQTVLclZhdlg3ZmVrUHZpU1l3M24xKy8xV3F5VWRDaG1HWWF5dHJVbGZnVExnOCtGY0N0MlRTQXQ3Ry9OakRtZFVtcDVFV3RqYm1BZjdGbE1yV1U4aUxleHR6RVY2WWx3ay9YNS9iVzFOK29wcFp4aEd1OTJXdmxZRnd4eE9xaUk5aWJTd3R6RVY1dkI0RmV4SnBJVzlqUW14VGpPTzZuVVNpeGJPMm5qTmV2NmZ2NHJ3SU1UbjZwN051RzVqRXN6aGtmVDJKTjVzNEtLSGIxemUvL1V2aHJqbjQ1NnZNSTNzYll6SEhCNUNiMDlpMGNKRkQrZkh2amJ3eFJCM1Bkeno4eHJURk5qYk9BcHp1RWNjeDQ3amFGd3lmN3FHQ3k0dXVEZzFXYTJvdjQwUFhQeXNtL0d3WnJHMnR1YTZMaGY3NzhZY1BxZDZuY1I1QnhjOUxKcFQvOFZQZXJqcjRVR1kvcERtdzNVYit6Q0hnT2E5bTg3YXVPVGp6ZnBjQi9scEIzYzk5T04waHBRZTdrbjFRdFZ6cUhmdnBrVUxmeEhncmZUNkpmKzJyck9Fd3oycFVPVWM2dTFKbks3aGtuOU1NV1kyV2tzNDdHMVVOSWRLZXhMVEZtTm1vN1dFVStYZVJ1VnlxTGNuTVhNeFpqWmFTempWN0cxVUtJZXFleEx2aFBNV1kyWno3eVkrY0FYT2U1eXE5VFlxa1VQVlBRa0E3NFpwMW1PbWRlc3FmaHFJbmYxb2xlcHRsSC85WVRMSjBSdkNSVXN5aEFBdWVwSm5QOXB3T0x4NjlhcHQyMkVZU284bGMyWE9ZUmlHdG0xZnZYcFZYVDFtdHhjdmFrdko3WWwwSnIxZWIzbDUyWEdjY2k4dkxtY09CNE9CNHpqTHk4c2Fud1pwZXAxT3g3S3NFamMyU3BoRHovTXN5OUxZR0tRNURJZkQ5ZlYxeTdKS09VMHRWUTdETUV3ZUJWVlBSR2tPMjl2Ynk4dkx0bTNIY1N3OWxqU1ZKSWZjdTZsU3lyY25WZUZ6T0JnTVBNOWJXbHJpbzJEVkpOUFVJQWlrQjVLQ1l1ZFFlMCtDTWxhYTNrWlJjMWlNbmdUbG9nUzlqZUxsa0QwSk9sU2hleHNGeTZIdisreEowRkdLMjlzb1RBNEhnNEZ0MjlldlgrZEVsTVpMZWh2RnVqRVdJNGRSRkZtV3hZa29UVzU5ZmQyMjdhSThNUllnaDFFVTJiYk4yeUJOcTlmckZTV0tMMHNQNEJpNlFwaHNINXE4bWYwd3dqMWY0ZVpMWXM3YXVPRGlkQTBBSG9SSzlzTFozTnhNdWhyS2x6S3FYbitvS0lTSDdobnp4UkIvYitOWDBWeEhQbXZqblkyNWpqQy92em94N3hIT083alMzdk1WVFh2aDFPdjFLSnJ2TW1WTTc3dzA2VS9JaC9CMERSYzkzSWdQMmJqcGxBRkgzUzR2QWhhdC9TRUVjTXJBcGZkd0k4WTNWeVRHdE1mbTVxYnk5Y1I2YytpNjd1Ym1wdkFnemp1NEh1RTdhMGR1M0xSbzRxeWQ2NUFVK21QbnlEOWFOTkc2alhkRDhVK3AwK2wwdTNwL2FDck5ZUmlHd2szQ3N6YXVSN2pTVnI1TVZvVmpNL1pXRSs5czRFcUFSU3VINFJ4Rjh3czNTbk1vT1l0NHM0RjNRN3l6SWJOeFU0bWRiK0hHRmk1NnoyczV1UnNPaDJxYmlocHpHQVNCelBLbFJRdFhBbHkvTDd4aFRMbDladzAzWWx5UTJTVHU1czJiT2hjdWFzeWh3QSt0cEJqenZTaVRYYlJwSDlFU2pzNWJvcm9jQ3R3TXp6dTRFWThyeGxBV2hFbzRuVTVINFZPaXVoem1XdFE2YStOR2pDdHRKbEJNVXNKeHVubVdjQlF1SGRhVnc4RmdjT2ZPblR6TzlLSVl3M0tvQnQrNGpCdGJ1T1RuVThKUjJNRFFsY004UGlBV1k5UzZzSW9iY1E3N0d2ZDZQVzFUVTEwNXpIYlpHSXN4K3AweW5oZFV6enVabmtmYkFrVmRPY3p3SlVBV1l3cGswY1NWZHFZbEhHMnZtK3JLWVNZdnNpMWF6OStNWVFLTEpTbmhYTXJrVFhIbThFaVpUTm5mYk9CN0VkK01LYkFMcTNnM1RQMm9mRDQ4VWlZL29xNEV2QTBXM2x2TjFPK0t2Qi9tNk05RFBLM2ppZlF3YUU1RDRNd3F6cnlkNWlIRjE5UHRWZW9jdnZZbmVBSjhDandDZHFRSFF6TjRBc1JmWGI3bUQ2UkhreUh0KzJMTTdvK3U0T2xYLzdvaE1BUmVCMTRyK1UrZTh0Z0JIbUhQWE9acjN4UWJUUGJLbThQZitZUDlYM2tNOUlIZkF4WWx4a01UZWdaOEJoeWNOajR0Ny9kcW1YUDQxbUh2OGlmWHVBLzhQdkJxN2tPaThaNEIvd1AwZ1dmU0k4bGRlWE00eGc3d0VIZ0ZlQjE0Ulhvd2xCZ0NqNnY3R0YvSkhDYWVBRThBQTNnZE9DazltQ3A3QW53Ry9FWjZHS0lxbk1NRVN6aUNEaFpqcXFyeU9VeXdoSk96bzRveFZjVWNmb1Vsbkh4VXVCZ3pCbk80RjBzNG1hcDJNV1lNNXZBd0xPR2tqc1dZc1pqRG83R0Vrd29XWXliQUhCNkhKWnlac1Jnek1lWndBaXpoVEl2Rm1Da3hoeE5qQ1dkQ0xNWk1qem1jRWtzNFk3QVlNeXZtY0NhN1N6Z0VGbVBteFRyZ0hCNERENEJYejBtUFE5cFRDNTh3aEhOaER1ZnpESGk1OHFXYkVYY0FtaGR6U0NTUE9TU1N4eHdTeVdNT2llUXhoMFR5bUVNaWVjd2hrVHpta0VnZWMwZ2tqemtra3NjY1NqdjFodkNibVZ5bnF3RFhXMGc3OVFZK0ZWcEl4V1ZLYWpDSE91UzhGdzZYS1NuREhHcVN3MTQ0M0ROR0plWlFtZXoyd3VHZU1Zb3hoeXFsdmhjTzk0elJqVGxVTEpXOWNGaU1LUUxtVUwyWlN6Z3N4aFFIYzFnUVU1VndXSXdwR3Vhd09DWXA0YkFZVTB6TVlkRzhLT0g4THZDMVhUUFZIZUIvZ1Q2TE1ZWEVIQlpUVXNKNUJKd0VUZ0pmOEFaWWJNeGh3ZTN3QmxnR2ZNK2JTQjV6U0NTUE9TU1N4eHdTeVdNT2llUXhoMFR5bUVNaWVjd2hrVHpta0VnZWMwZ2tqemtra3NjY0VzbGpEb25rTVlkRThwaERJbm5NSVpFODVwQklIbk5JSkk4NUpKTEhIQkxKWXc2SjVER0hSUEtZUXlKNXpDR1JQT2FRU0I1elNDU1BPU1NTeHh3U3lXTU9pZVF4aDBUeW1FTWllY3doa1R6bWtFZ2VjMGdranpra2tzY2NFc2xqRG9ua01ZZEU4cGhESW5uTUlaRTg1cEJJSG5OSUpLKzhPUnorUW5vRVJKTXFidzRmLzB4NkJFU1RLbThPUC9hbFIwQ3BHajJTSGtHR3lwdERBRHNQcEVkQTZmbjBYNlZIa0tGUzUvQW5qdlFJS0NVTG4rUHVOZWxCWkVoUkRtdTFXc3BIZlBnUmZ2bWpsSTlKK1ZzWTRjT3I2UjZ5Mld5bWU4QTVLY3BobzlGSS82QjNyekdLeGJZd3dvZC9pWi9ma2g1SHRoVGxFSUJwbXVrZjlPNDEzTCtPaGMvVFB6SmxiZWNCYmkxbEVjSk1mdWpQUVZjT3MvcDBQdmJ4ajYvZ2x6L0NTMTltY254SzNZa0I3bDlINXh5RzIxa2NuamtjeDdidERJOSs5eHIrK1J5R1BTeU1NandMemVtbEwvRmZmNHNmTG1iYWVkS1d3NWVsQjdCSHRqa0VNTnpHK3pZTUV5di9qcE5uc3owWFRXdGhoRWQzOE1GM3N6NlBhWnJhY3FqcmZ0aG9OREo1Uk54bnVJM09PZno0QWs0TU1qOFhUV2pZdzYybEhFSUlZR1ZsSlllelRFVlhEZ0U0anBQVG1SNStoQjh1c29RamIrY0JmbndCNzlzWlBRb2VsTi8zMk1RcW5NTUVTemlDWGhSakhuNlUyem5yOWJxMlNTa1U1dEN5ckZhcmxmZFpXY0xKV1M3Rm1FTzVycHZ6R1NlaExvY0FQTThUT0d0U3dybTF4TGRTczdVd3dtZGQvTU5KZlBqWCtaKzhYcThybkpSQ1p3NHR5MXBkWFpVNU4wczRtY3F4R0hNbzMxZTZDa2RqRGdGNG5wZEg0ZlFvTE9GTTVmOGVILy8vNUY2TU9XaDFkVFh6eHRpc2xPYXdWcXNGUVNBOGlBbExPTCs0bmRlQXRQcnZjTnlmU2hSakRqSk5VK1o1WnpKS2N3akF0dTMzM250UGVoVEhsWENHUGNFZjhGcmN2WGI0eEVHdUdMT1BZUmpkYmpmOUJUM3AwWnREQUs3ckN0Uk9EenEwaExNd3dyQ0g5MjJ4VWFseTYrdjdQeHk1WXN4QnZ1OHI3RlhzcHV1OXRvT1MyV21uMDVFZXlGY2xITVBFdWU4QzNIZGpyK1RET2ZNMjNqZ1A2UHB3MnUyMnpocnBidHB6Q0ZWUkJERGNWdlZOcHN2RGoyUWZBdmN4RE1QM2ZmMGhoUEo1NlF0QkVMVGJiZWxSVUpHWXBobUdZU0ZDaUtMa0VJRGpPUGZ2MzYvWDY5SURvUUs0ZlBseUZFWEtud2wzSzB3T0FUUWFqU2lLMXRiV0RNT1FIZ3NwWlpybTdkdTNsVmRIRHlwU0RoT2U1MFZScEtLT1Nwb1lockcydGhiSHNjSmxUY2NxWGc0QldKWVZCTUhHeGdhbnFaUm90VnBSRkdudTFJOVh5QndtYk51T29xamRibk9hV21YMWVuMWpZeU1JQXN1eXBNY3l1d0xuTU9FNFRoekhZdStGa3h6RE1OcnRkaFJGYXQ4YW5Wemhjd2lnVnF2NXZyKzF0YVZ0YzFqS3p1cnFhaHpIUldsTEhLc01PVXhZbGhXRzRlM2J0eVVYYWxEMm1zM20xdGFXNy92RnFvaU9WNTRjSmxaV1Z1STRabStqbEpLZVJCaUdoWDRVUEZUWmNwaGdiNk5rQ3QyVG1FUTVjd2oyTmlhbmZrdWVvdmNrSmxIYUhDWUswTnY0MkJkT3dtOCtrVHo3V09Yb1NVeWk1RGxNYU85dC9QejdZcWRlR0tIN2JiR3pINjFNUFlsSm5CaU50RTlMVXBSVXVudTludlJBRHZpV2kyLzlEWjZkenZXa093L1EvYmJDL1FSV1YxYzl6eXRUT2ZSWTFjcGhvdHZ0dXE2N3ZhM3UrdzhYL3dsTExUek5mbEhvaVFIK1kxM2hRc3BtczFtRldlaEJWY3hod3ZNODMvZUh3NkgwUVBZeVRGenNZUEZQOGV4RUpzZC82VXY4NTk4cDJhNWlOOU0wZmQ4dmF6bjBXTlhOSVlBNGpqM1AwN0xTZjdjc2ZpTlZYcjlOYVZxR1liaXVXKzV5NkxFcW5jTkVHSWF1NjI1dWJrb1A1SUF6YitQUC9nV2pOQjZUaGozY2JTbDhGR3kxV3A3blZYQWl1Zzl6K0Z3UUJLN3JxcHVtWXU0U3pzNEQvTVJSdFcxTW9sNnYrNzVma1hMb3NaakQzeG9NQnA3bjNieDVVM29naDVtaGhLTzFHRk9nN1p0eXd4enVwN2UzTVhrSlIyc3hCcFhzU1V5Q09UeWMzdDdHK0JLTzFtSU1LdHlUbUFSek9JN1MzZ2FBTTIraitRTzgrb2ZQbnhzWFJoZ044ZXNRUFZkaE1hYmlQWW1Kakdpc3JhMHRydHVZV2JKT1F2b2FGZ0J6T0JHdTI1aEJxOVhhMnRxU3ZuVEZ3QnhPUWZXNkRVMlNkUkxTbDZ0SW1NUHA5UHQ5dmVzMkZFaldTVWhmcGVKaERtZkJQYWtPdGJxNjJ1LzNwUzlPSWJGZU9qdTl2WTNjc1NjeHAwcXNBODRJOTZSQ3FmZHV5cFgwRGJrTXF0bmJZRThpUmN4aGFpclYyMkJQSWwxOFBreVozblViS2VFNmlTencrVEJsMnZla21rUFY5bTdLRSsrSFdkRzdibU1tWENlUktlWXdXeVhvYmJBbmtRUE9TN05WNk40R2V4TDVFYTRUVlVheGVodnNTZVNNODlKYzZkMlRhaGZ1M1pRLzVsQ0EydDRHZXhKUytId29RR0Z2Z3owSldid2ZTbExTMjJCUFFoeHpLRSt3dDhHZWhCS2NsOG9UNlcyd0o2RUs3NGVLNVBQN052ajdKQlJpRHRYSnRMZkJub1JPektGU3FmYzIySlBRak0rSFNpVzlqVlFlR2szVFpFOUNPZDRQdFJzTUJrRVFCRUV3dzB6MTh1WExqdU53STIzOW1NUENpT080MisyR1lSaEYwWmdtUjcxZWJ6UWF0bTJ2ckt5d0pWZ1V6R0ZSaFdHNDd5dTFXcTNSYUVpTWhlYkZIQkxKWTUyR1NCNXpTQ1NQT1NTU3h4d1N5V01PaWVReGgwVHltRU1pZWN3aGtUem1rRWdlYzBna2p6a2trc2NjRXNsakRvbmtNWWRFOHBoRElubk1JWkU4NXBCSUhuTklKSTg1SkpMSEhCTEpZdzZKNURHSFJQS1lReUo1ekNHUlBPYVFTQjV6U0NTUE9TU1N4eHdTeVdNT2llUXhoMFR5bUVNaWVjd2hrVHpta0VnZWMwZ2s3LzhCc09pNFdldkM5NWdBQUFBQVNVVk9SSzVDWUlJPSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzFfUFJFIiwiRklET18yXzEiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6IjAxOTYxNGEzMjcwMzdlMzVhNDUzMjg1ZmQwNmM1ZDI0Iiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJsYXJnZUJsb2JzIjpmYWxzZSwiY3JlZE1nbXQiOmZhbHNlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWUsInNldE1pblBJTkxlbmd0aCI6ZmFsc2UsIm1ha2VDcmVkVXZOb3RScWQiOnRydWV9LCJtYXhNc2dTaXplIjozMDcyLCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0IjoxMCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoyNTUsInRyYW5zcG9ydHMiOlsidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN30seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTh9XSwiZmlybXdhcmVWZXJzaW9uIjoxfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDgtMjgiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJBVExLZXkiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI1MDgyODAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUHJvZmlsZXMiOlsiY29uc3VtZXIiXSwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wOC0yOCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI2LTAyLTExIn0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiMjgwNmRmNmM2MGIxNjU2YTc4Zjk3YTI4ZTE2OGU1ZWM4ZDI5MzdiNCIsIjI4MDZkZjZjNjBiMTY1NmE3OGY5N2EyOGUxNjhlNWVjOGQyOTM3YjQiXSwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiMjgwNmRmNmM2MGIxNjU2YTc4Zjk3YTI4ZTE2OGU1ZWM4ZDI5MzdiNCIsIjI4MDZkZjZjNjBiMTY1NmE3OGY5N2EyOGUxNjhlNWVjOGQyOTM3YjQiXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlJTQSBEUzEwMCJ9LCJkZXNjcmlwdGlvbiI6IlJTQSBEUzEwMCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjJ9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQ0xEQ0NBYytnQXdJQkFnSUVaUC9nTnpBTUJnZ3Foa2pPUFFRREFnVUFNSGN4Q3pBSkJnTlZCQVlUQWxWVE1Rc3dDUVlEVlFRSUV3Sk5RVEVRTUE0R0ExVUVCeE1IUW1Wa1ptOXlaREVaTUJjR0ExVUVDaE1RVWxOQklGTmxZM1Z5YVhSNUlFeE1RekVUTUJFR0ExVUVDeE1LVDNCbGNtRjBhVzl1Y3pFWk1CY0dBMVVFQXhNUVVsTkJJRVpKUkU4Z1EwRWdVbTl2ZERBZ0Z3MHlNakExTVRFd01ERTNNVGRhR0E4eU1EVXlNRFV4TURBd01UY3hOMW93ZHpFTE1Ba0dBMVVFQmhNQ1ZWTXhDekFKQmdOVkJBZ1RBazFCTVJBd0RnWURWUVFIRXdkQ1pXUm1iM0prTVJrd0Z3WURWUVFLRXhCU1UwRWdVMlZqZFhKcGRIa2dURXhETVJNd0VRWURWUVFMRXdwUGNHVnlZWFJwYjI1ek1Sa3dGd1lEVlFRREV4QlNVMEVnUmtsRVR5QkRRU0JTYjI5ME1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRUxmMmg2OEd6U0VXRW9wMjJSTHZLQzF3TkF0VUl0bXY0VGYyT3hJcEIxWFFlOUpQMm5SUENta3p6ZlFVWW5PazlKOVBndmpFaTY0YnVVS1BycWQwM01hTkZNRU13RWdZRFZSMFRBUUgvQkFnd0JnRUIvd0lCQURBT0JnTlZIUThCQWY4RUJBTUNBUVl3SFFZRFZSME9CQllFRkxoUm80dUUybW5KL1Z0R2ZCK09OMHJBUXpRWk1Bd0dDQ3FHU000OUJBTUNCUUFEU1FBd1JnSWhBTDcxOUswbFM2amRvbGxpSThoNGx5STh0Z0ZGanY0TlBnMWRkSUYrYkhtU0FpRUEwdGkxYVAwU2Nwcm1Cb0xhR1B4ZHVUaGY3TXdtaVFiVG0yN05nYWhSdktnPSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFIc0FBQUF2Q0FZQUFBREQyTFdlQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUN4TUFBQXNUQVFDYW5CZ0FBQUFUZEVWWWRGTnZablIzWVhKbEFFZEpUVkFnTWk0NExqZ3hnY3RpQUFBY0gwbEVRVlI0WHNWY2lYdFd4Ym4zaittdHlwb1FFcklaWlJGQkZLdTRWRzJ0VlduMTZsT2ZlaXRZYmRWYmJhdGRyTGJ1eXVKR3JVb3JkYUdWN0J1QkVQWUlDR1FoZ1pDd0U3Si95WHZmMysrZG1YTytzT1NMaWIzdmsvbG16cHlaZDk1OWxuTk9McEloRVNSa0FaSXV2aDRNRFNVajRaWCtETHJCL1BXb0lON1BseFdJMDVXU0FHMUFoNyt0RUs0SFk1VUFkeGxxaDkzKzJxQjRnTXJRT1VvOWJwK1Rsb0hBaC8yQ0YwMjg4TG1EWVplcHdrWERPdzI1SVljcjYydURvaUVtWlloNUV0b0JsMThJQnJTTEtUSGVQNVJkR3BSRVZIY2VhWGlXZ2xCZFJjU3I0eDNKRzhVWXdlTWp1SUx4NDVNQzZ4M05VTHlYbFlMUDQvd1p1YkgrS1VLU3NxMDhDZ1FjT0k3QndGZDVmRjY0M3B1aUhpbU1oY2F1bWUvSFhIK2k2eGdlVm1KRVN3VFhFQm1MK0hFQ0JmMlc0NGEyWjY2Z09jeHM3QkREcVVDYTNGZ0oxc1JvRHhDclN5TEJTOUlvTzVmc0x3UVd4aDF5OXRYa2thU0tMTFJENWhScTRJblRmTWhZSTM2TWgzYnhwdWNCMTR2QTV1aW00MFZkVFdpNE5qcThNQldZeDVST1FOblRoU1l4V2h5TmdmK1VJcytGQWZqakNnN2dDR0FXTDNOSU9BaG9pZWdNb0JYRW1hSnU0dUE4MnhNRHNJSDZUaHlYcnYxN3BidGgzNGlwcDNFL2M3VHZhbXFVMHczN05UVktvcU5EQm9IYUt5RUF5dWRnNUx5ZzdXTkdsTUMxS2lZdzdMS0I5blpwKyt4ejJmdkM4N0p6eWM5a3kzMzNTTzJpRzZUbXBodGs0eDIzeS9hZjNpLzFULzVTbWxjdWw4UGxaZEo5K0NEN2VvTXl4V0EwWHhPbitXdUNJalE2YlU1MnBCck5Qa0hEbXR1b0pwdm9IbnBGZExDS0ZqRjYyaTVDSDI5RlNKN2RwbmVXUzFIYXhWS1NtM25CVk13OEkwclowNlEwSjBQS2NxY3pMOC9PbE1yNXMyVDNrb2ZsNEtkclpXQ3dIK002b2tjRzN5NVNpQUd2Y2RIZEl5MGZyNlpDUzJla2s0YlN2T2xTbktOMGFBNGFqTFpNTFdkS1diN1NqSHVnVVdtdFhqQlg5dnptVjNKODAwWkZGdkdmTW9FamdpbHlZR0JBWmJxUzQxWGZ2RURUMWJKaDBYV3ljZEcxVW4zTmZHbithSlVPYTJQN29XSFVLQjhwL1VMMnZmaVNOQzUvVXcxSE9YZUdQOXJJRStac0dGL2NzcHBXcnBTeXRNa1V5b1ZTdVV0MkhUT0F2Q3dweXBudWhKOGxKZE9uU3NtMFM2VzhJRithWG41SitqcmFPTnJJWUJZY3dob0kxYitCL2k3cCtPSUxxVnB3aFJSTm0wekZsZVZtQlJvNEpsSnVPdWtybXdGYWpEWXFYYThyY3JLbytPS01LVkk0N1JLcG1EdEhtbGE4SmdPblRsTElYalpqQmxWUXo2R2pzbjdobFZLYW1TWmxXV3FVa0lmU1hKS1RKc1daVTJYRHpZdWs5L0JoYld5Y1d0QXkzbHRXdkNuMXYxZ2llNS8vblJ5clhzODYzaDRsZ1JjWlFrTWFJVkJscjNwYmlxZGVUQS8xaVo0eUxFRll3YXZQa1NEUW9seGxrSjZ1d3M1V0p0TW15TVliRmtsNzhiOHcyQVVCNUVRUjNPanM3VHdwZTU1OVJrb3pKcWczSzc0d1hqbzlGNFlYNnJKQk81U2UzQWFLTDhtYklhVjZYWktUYmJrS3YrcktPWEppNjJhT0ZmblkyS0gxZy9lbFpPTEZVcHluTktpQ0lZOFNsUTJOVTJrc25QcHRPZno1djYyeEc5WlBLNGMrZWw5YTNubUhTdTlwUDhUNy90NW9RSlY5Ympqdzlrb3BUcDlBNFVCSUNNY1FFTU5nWG5vUUtCUWVDVEtxOC9Yd0t1UmtUb1ZabnFOOWdUTXpRNnBtNVVyTFgxZVI4SWp5eVBnSXJBZGovYmFPVXBQSHZGdVVwbEVDMFVSeFZXU0RIbFd5VTF4UnR0Wm5USkpDcFIrcGFNb2xLc3hMeUErOEdKN2s2U0pQYWd6d2VPUjcvL2dzeHhzMU9BVUVpUEV6ME5ldlhqMlhobTVHWlZFRk1xeFFXa0ZIMFl3cDZnRFhTMkt3MTNWVlkvTzg5L2RJNTQ0dnBhK3RqYUhkeHJKN280RVJsUTBsTXd6bTZUeVhyeFk1ZmJLc20zeXBGRStHQUw4ZEJCbFBVQVFGTy9WU2VuRWhoSy9LcUtCM200S0tFYjQwS3BUbHo1Q093bUkzcWtLZzMrWTY0emZhSHJXdGVwZktRb2kyYU9HRXBkRURoclF1L2R0U2VmV1ZzdXNKWFlpdFdDa0hQL3RFamhaK0lZYysrVmlhMzFvaHU1NTVXamJlZllmU01JTzBBeGVVREI3TFoxL0dFRzQwcExqeGNvMHNjOTdHL2lnYk0yMXIxdWhVTTFISG1jSHBwanhQRFNzN0xjaWlQQXVPcER4TW55QkgxcTFqSHhnM2tDR2ttNEp0VVVhcU1JakxSZ01qS3RzcmhvU3BZblkvK1lTY1dGOGpIZVhsY3F5c1hJNlVGNStWamxhVVNFZFprYlN1VzB0UHFWTGh3MGo4dkFtY0RLME9iOVhNZkJub1B1MTRBR05HUXhBZWY1VFIvbDZwbUZPZ2hxZUdva1pJbXVEUkxxK2NWeUR0bi85VGhqcDdaRkM5YVNpaHVHQW9zQkxORXdsZHdmZjN5VURQR1JrNGMxeE9ycStWTDU5NlFpb0tjcVE0YlpJY2VPOXRHOTlEb09QOEFOeG9Sa3A5ZXhZalBtb1d6aWZQbENXbUQxVXNqVXVORStzYWk0SXFFeldFbXVzWFdDZlM0V2h4R2RBaE9ha0UvS25DeU1xR0lKVVlFQUpsTjYxWXh2dURhbmxKZ25GQTVpSGNZZENxNFJxZUE2YTRlRktHR2RySmZLWjg5ZXl2QSsyV3h6M0xCSGZ3SDZ1bDlESk1JNlpjUnB4OGxMT2s4cXFaMHRWeDJORmtYaER3Y1p2bUZuZ09GNVhQdTNvNTJLZjh2czB5V3JBZldUdWJ2M01CMitQSERSam4vL0RhVHloRFRoVnEzT0M3NURLTlFtcXNVSFJGTG5ZR21MYzFWOTZRSHlvdWptZ0RyZ2hkTkViNFNSMVNtTFBWQXYzS3RTQlRHcDJ5VXhVRUFBTEdHdk5FWFMwVnpxbEJReGtXS0pnZVN2SnlwSGJCUEJuczZYRWRETGNKelNsSS8rb2ZlOVFNVCttcGhFZEFTQkNlUm8wakdxN0p2Q2EwcHh4czByTjZENzdzMnVFUFc1aElRWDQ3WXpTTURJYURlUDEwZzJyK0RFcnQzYmZSR0dIZ21MWWd4MElZcVBKUlBrT25NVlV1cDBnMUNNemxhTFA1anU5WmR5SjJxM09YckJBWjhtZ2dKYytHUUl0ZHVEbncxaklWREZwUVNrbHdMbzhta0VBVUJ1WGczeitVMG5TZDkvMXFGTXBXL0pWelprckhodktBZzVsRDU5RnVXbnluR1llMjkzUWhZUkUyMk9jWE5sQ2NlVEZCSzRtS1B5NEJhQWdtVE44MjhpSVZwaDkwQlBCN1lTOStqdTI2SHRGcHJtb21vbGxFSzZlZHJBelpldDg5VW5udFZhWnNUYmdITDBjcW01VW5IY1U2ZHp0YUFIRjZRam1xU2dsR1hxQ3BVSDFDS05xLzhnMDNoaEtCZ2s4eENFSmp2UkdMSERhYU9OMHBaYk94VU5INVdrTTZRamptcnNxWk9kS3k2ajIyODc3bDhWaElHNVFOdHkyaWwyQXFvUEZ4U2xCdjBJVWdoZTNIbzdKZGZ3ZjBZclRTT3RhNnRsRUxBSzZqT2g4WUxnaG5OWEw5aC9wazUyTVBVN2xjbnppRllnckM0dmI0bGszUzlOZVZVamhsRW5jM1pUTTBTdVZONVNJV2FlZkREeXFtaUEvZ1pJcnhORnBJTFl5cm9qbnY1R1h6cUJGZ1pGd1lQR0gyNjVUZTNTTjE5L3lRaHdzMmw5bUt1cndnVi9ZdmY4MXg1RmFnTGdFTmxMRDUvc1ZVdGpjK2VqZWlnMjZ6T3NwS0ltSG9Id3dHMXdIOEJSczUralduYWpRc2VvT3labTVjbGtjQTE4aU1pUVhDc1MxYnBPYTZPVlF5cGkzUUN1TXN5cG9tZFhkOVQvcFZEb09uVDBycG5GeDN3S043Zm5nOWpGZEQrWWI1YytYNHhvMkdqajllSGdZMlRIU2RDcVMyUUhNSjJ5U3Y3Q1RBQWdoNUdGc0xXb0U2SklyU3FPTkt1TzdPMjNWZk9jbVkwd1RGbFJTb0lTMHozTFkwYzhnY0hzRGU1Myt2Y3pWQ3Y4NTMyaWNJVVhGVVhUMWJ0MDJuZ3hGNnBkdEZsSGtEaENxajJ6WldkTjhwMmpjWUVheTlOZGV5THZnYVhueEJDblZiWjhvemI0VlhGMDYrV05vL1dhT04xWndUL2RMNDJoczh2Q3JOdG9NZFc3Um15THJNQ2RMdzNCOVZHT0FJK0UybUVVMk94bEhBbUpWdDQrdkFLcVJnM1I0UTRraVJJMVNoOStSeEtTc3c3L1I0RWNvWnh2LytnZlZCYzljZXdLTCtISytyVWFQSXNaVnJyQy9DZWxGMnVsVFB2MUtPVmxaS1FnM0s5NEhwZUwrTllKamdOSS9hK3p3MVlZWTJLTGlMenVabXFmM3VUVHpjd1FvY1lSelRGbExWcmRkSnowRjdBSVA1dmJOcGoxUmVlYmtVejhEaGtQS2t2R0R4V2FUek9zN091L2J2TjByMEx4aXkrMkUrQ2hpN1owTy9RWmQrdGxVWWRNSlM1UTBvbVNnandYdGh5VkFTNTF3cVRCV2xXNmN6WCs1RUQrMEtwQWJla0R4cy92RmRVcHc1MFR4Qit6SXFZT0ZEaFUvVmxYbTZiUHZKdmRMK3IwL2x6TjRHNmV0eEQxNWdqQjZQTTBKY01hSGVSeWZXTzlyNWt3S3dEM0wxVnFYOThEOC8xcm5ZMWpzOEhnVjlXRmhtcFVualMzOE9Za0lmR09iZTMvNWF5cVlyVDVDeGVqYjMzbHBlbHpaUkRyei9ydEpuN1ExTTJNbDFxY0U0aEhIL09rMnlnUHljYTVjZ01DR0hQdituYnIxeXFXaC9nc1N3cGFHNTl2WmIyRFl3b1FyeFJTdm9BbTl3UUxwYVdxVG0ybmthSW5Ic2FIdFU0TUNSYVJIMnJCbzI4WkNoT0hNeVBXUFg0NDlLNjhvVmNyUm1vL1NmUE9YUW1URVpXb3RJOFRJaVFSaDdSSERDMXhJOE5kSGJJeHR1dlVuS3NqU0VVMjVLbjl0YVZTMllLeWMzYjdHMjZPZDRQRnBSWnQ2dFNnWlBQcFJEUmh1dXV5WThtT0ZZcE03QTZsS0g4Wm16Rld5NzR3bUl6bldSdWc2MHl1NWZQeUdWdXNjRzg1aS93QXhETUZiWFdWUGs4Q2YvUUljWUl5WkVsdFVDQW1OYU9MNXRoNnovenRWU05IMUtiQ3RtWjgyV2JQOE5id2R1MUZVdm1DMmJ2bit6MUM5OVdOclhmQ3o5UjNBQVkvaUN4eVBETllabUZlaS9NQVE2MFU5bGNLeWtoSExERG9PSFB6QStWU0FVdVgzcFE5cElPVVJiSnh1a29kNStSaU1lWERrZWpDZU5ESXFyN2RPUGJRZ25ZeHNMTmFPRGNWRTJqaUZQYjk3S3ZlSFIwaklOb1o5STYxL2ZsYS8rOER1cHUvMDI3aHVyOG5XZWpxMUtXVlpGbFU5UGs2My92Vml4T0tFcFdCYVBDaXdRL0xsYVQydVRiTC8zWGluT1FJUXdveW5TSE1LbGtIUTdnNlBKcEZEcVFuM1ZGWGxTT25lMjdIam9BVG14eWExNENlWTFRUkh1Y09kQzRHbEUrRWEvamJmZHpQbVhmR0p4Um9WUGs4bzVlWXhzZnJDZ09JNGowcnBtdFVhOWZOS0lPZDRXZG1uRVZUVnZibWlMN29IZVVFZ054a0haSURZaGh6OWJ3d2NMMkZvVVowL21vOGRDdFc0SUdROEFHS0x5emFPaEhPNlgxWkx4TUwvN3RJYlhRTGhPYUZyR0plWjZZeThTdXZja2hreHRnU1BVcW12bWtEWjdHcWU0ODdPNW5lRkpuU2FFUlQ2S2RTRVNaUWdUQzZMQ3JNbFNxd3JxMUsxU0loRUw2YVJoWkdVRGNIU005aDIxMVh3R0FCbzRCbVRtb3RpbUd4ZHBFMXMvR0RnK1hKNFk2SkdhVzY1WDJuUFpqOGxIQmQxYXRzRlFYRnVtcndIakZzWXhIKzU0K0g3dW43SGc4cDdyd3hIUHc1VndLbC9uTXh3TlFzamREUTBPZzRlWWdDa015NW5SRzd6SEc2Q01CeDZ0SDYyV3VzVjNTZlhDYTZYb2N2VmtYUXpoc2FFWE9yZHE0RUZwWU82bkVqVTZQSHJFMDdwZFR6d21DWjZ2RzhUSE9UOUUzcmJsUjNjSEhzT1pOL2pYeFdUanFoVU9ZVEw5MUo4THljM3ZyTkwyNWlBK0NvSlc1RFUzTEhSVG5POGZrMU9LTUQ3S2R0UmpvVkV4ZDVZU2lCY0tYR2pOdFRCYk5RTTRWTEJxcFFqcnU1OStXcnJhV3Ezam1BQ1JJQXEvWFh0MlMvTjc3OHF1SjM4dXRYZmNJaFVhUGd2VEozSFJ4Z1VjK0ZCRjh5MmFmQ2pHTGZUVWl3b3pMdFdGNHExeWVrKzlvYVpBNDhxSkN4aGFja1hOVDJ5dE0wOVVuT1haV0Q5a2tuY1lkZVc4S3lUUmJkNVBmSnFIZFlpckF3ejBkRXZsVmJPNU1BdktkazREcGJldFhlc1VidDNZZFJRd0xtR2NZVXdCZzlmLzZuRXk3UVZySVEzUHJuV2ZxWFBscmhlZWxSTlYxWHdFT1I1QXI0aHhqV3NFZjRURm51WldQbzQ5K0xmM3BYN0pRMUo1ZWE2c216YUorMThMNXhiU3NjakRRd2tZSS9ick9PSHFibTBOYUozaktaaFNURkhlbzYwT0N6OUVML0JMSmJsVU91MFMyZnZLaTJ4ck94UUhNWnE1YUVPbTl3OHNYeWJyTXRVNHNUV0Z6RUduT2dybThXMGF1YXlkMjd0NXphY0lZMWMyaVFZVHRnTHZPdFFpMWJxTnFNcko1UnpLY0ttZWcrTkFFSDE2L3o1MGNCQmovbXVDRFk5ZkNCOWVFNU9BYlFsNEI5c1gwTmIwM2dvK0RpMmFIcDNnNGJtNmhVdVVwMGhoOWlUWi81Yy9jeHRsS2pVZ2JuY1phbldNbnZvdnBmcTZxMElJOTRxQ0lXR0JsVGh6T2hnTXNtU3Z4clhoeGVWZ1Y2ZFVYSDRaYWVMVXB6bmZwZE84WXQ1TU9SSjdRT0s2cHd6ak5tZWJoWnZ5WUowUjA3WWl4aW9UNVMwL3VwUHR5UHhvcVIwQkFqcml4bDQ1MlpNZ1ZBaDZZS0JQR2w1L2hjYkgrVkhwODY5TFlWdUloeExsTS9Pa3Q3WEZkZlpnK0lLWVhiYjMrVDh5WFB2OU5QRFJ5S2RObEQyLy82MDE0dmpXd1hYanRka2pvcU1XY0tGL29LMUlweFFzTWprMVlLclJ4UzNvM2ZYNEk5YU9NRHBuR1JkbGUxOEtGcXV3L3J2WG0xVXFvWngzUURDRW1aL0RWNFRRenJjZEt3UkRVNFFlYjRUYlZNUGtoYTBaUXVxeGRZWDBJaW9HeG9ubnlicFZ3cFlOQzdaVzdQMVZzTDRma0hnZW1hdng5RFEyeXNZZjNFcEZrRWQ2TjNoVm50V3J1NXVidExYU0JqeXVIeURnOU9BdXNmcm9PWHBZS2d0MGUrand3QUQ5Q3g5VkMrZkpxYm82WnhmL0Q4b0dlQ0hncDE4WFRHZTJiN1gzdUZXQW9iL09PM2g0WDNQckRkSjcvR2hnY0V3d0RFY1FJckpZRVQveDZHUHo1S0EwdnZvaXB4c0lsUWM4akVpNlI5ZUY1RmUvZllvcmZmWnh1QWhhaGdsaDdzVFdyMGhYL3VnUG83Yit5cS8yMy83TFIyU2dxNGZ2OUNUMTl6UW9nQ1ovaXlYODlmYkx2dWQreDllYmJhR21kT1hab2hldlRlOTc2UVZKOU1lT3BsT0VjVk8yUDhRTEFsWFQrK3BQZjVDaXFYYm15OFdMaGlRdWlBcXlwUEdWVjdYdDZBa2VEa2x6dEpNYU1uOWNheW5XenVSSm80QjNuTnF5V2RaL1o1N1NhQjVrb1ZQbjJzekpzdlduOTd0emVrMnVINEZlcXFvNWVVSTIzM3VQdlYrSGd4REY0VS9Cb0hDY3B0bGdMZ0hpWlVDc0RBcTlzWjdjWENlVnM2NmdzNWdScVVGcUtBZCtITHQydHg3UVZzWmJxakFPQ3pSbFd1bWpLQ0U5Q01FSnRsdTNWalczWE9lKzFERHZvVkJ3S3JSd3JwemV2WWZ0eGd4T1lFRnVvYURBY3FSMFFyZy9LSjJORFZKNzAwMVVEZzFSRmM2RjFmUjAyZm9US051ajhKSExHNWRPQXh0cXBTekRQa0x3SG8yNXZ5UnJFdDlFNmUxb1owdjBveE5vd2NxV2dJTTU1YVoxVkRUcWRBN3Y2Wkg2eDVmeUFRbW1GdEFGSFVEeDJFb2UwTzJsZDdCVVlkdzgrM3pRdHZvamhqbHN2YmpQVm9WakxzSXg1NjVubnRLOVpTL2JtUUQ4WWFncHhwY3BCUDdGRkFhQmFBM2JXRU9mV1NGY3VLSVRxQk52QUJqY2hoc1hrQ1k4SzJlbzFHMWpTZnBrcVg5MGFmaGNDUkRHQndyRlYvZmdZaW5OaElHb0FXdC9MdlIwancybE42N3doeWdqZ0xaaHMrRzV5Z0tuWm5oZGk5RkNvNkl0Sk5Xb3NES2ZlNFY3RlN0Wkp1anIrMXNld1RldTdJRmp4MlRyZy9jeEhDRk1ocENFcE41emN0c20xeEpnMWs4SVZKdWxzK1RxQm52UDhHaVRGV3lEK3VneEtzQnk5SXRTbU04VktCYjlhMTM5Z2E2OGNTYU5OMFhBcHp0alQ1OG9qVy9qZlR2MGNTYWlQNzdmcVgxN3BHVHFGSG9jREFUS1FCbWY5dFRldUpBbmc2bDRIdkI3M01hbkpodENoblRMVm52UDkvbDhHL0xqT0tCUng0SjN0MzZ3Q2ozRE9BRVg4U2pZUllCdlhOa1krRWhKc1ZUTXVZd2V3ekNwUlBQaFJOWVUyZlNEMjl3Qmk1Mkpld0tST1JFN2NQTzdLbmpia3AvSzVzVS9rSk9iTmttQzUrcVJNcXhYZE1nVHoxa3dXZktudTZtRno4ZHh0TXA5TGZtMHMzUjg2TkM1Y3p0YUtoaCt3Mk9Dckgva2Y2UjBHcFJ0TDJLWTBqT2tLRDlMZHY3dlk5bzQ5UkJyZUJWWU1QeDRCZ01NVGUrK3c0ZEl3STB4T0UxQTZUb1ZycjkybnJhQVhKeHlBM2dtaytFL29teU11L01YZUEwWTJ4SmR0ZksweW5EaXF4TE1QMFpiRk1acDVYR2FuZkFPcmwzTHIwc3hwMkwxdlAxbkQ4bkJUMWZMcVQyNytINmJXYmRqWGp0ekVlaVEwRXYxRDUvakhLc3BsMjMzLzBnVnBpSFJuZmJCR0JGOXNCTGYrdU1mMnRjaEFORGhQQnpRMmRxbzQwK2dvcWtFRGJQNExBcUtxSmlWTDZkaEpCelQwWkVDc0RsK05JV0lnUEtaTHFuNnpud3V6ckRJOWVzRGJnOHpwK28wK2FHMWpmRnNaZWNBTWZqbWxlMFk2RHZZS3VWWFhVNlByblI3V1JBTnZIaTBkK1lBVnBjR0psZ1VMTGtyNlcxdnRhOUxWQ0VJWlZBUzNobkhlKzBiYnI1ZXR2enNRV2w0L2pscCtmQURPVkpWS2FkMmJKT3V2Vi9SRUxEcWJ2LzNXbWw2L1ZYWjl0QUQvRVNvU05jTjVwSDJTQkxLSzhMTGZ3VTUwdmJGMmlBdW1pQ0xWclByNTBzcGRIOGs3UHRqajQxdnd0bVVYVWFuYlBZam1MR3p2MVkydlBxeXZhQ1ptMk5STWJhUXhKTXl0UFI5UXorM1JvbkRONjVzczFFTHdmaUlyeVJUVjVkS1pKSGlncks1RDFkaGJYL2d4eVFZanpXOVVJZVR1K09ScFVvSHJGc1hRM25hbjQ5TTNaU2dnc2JSSkhEaWM2TEsrVFA1RWlJK3FGdC83ZFhjcnBUTkxiQStPaVllaEtDZlA3aXcxM2x0YS9QVmI1Nld4RUJmVEFNUlBkM05EVkkxYjFZa0U3ZDRRaGtQVzQ3VjRqdHYxM2hVNE1id0F6bEFNZEhieGVjS2tKcy9ZTUY0S0ZjVXpKQzJUNk1QSk9McmhCZ2F3bjhzalB2Rnc2YWJiK1REQmpzc3dGZU1idEV4SjFjNlB2VVA5K01lb2YyMTc0bjZuVkoxelV4VnpsUXB4R21TQzUzZXEzZ3M2M0Q1aUlFNlRCMG8rM3RJL0hJU0MwYXV2bzBXZnI2cjdYY3NlVkRITTRQRHJ3bk0welBJc3dNOEwrY0NFK053ZklzSU5iZmdtYlcxc3k1eFBzNEQxaUdNNlM2dDNuZlg4dDRYbnpOSFVRTTFYaHl2S2dkczgvQU5XemhiOEVnQ01vUC9nTElCUmpYRzd0eTFrMXN4ZUpiZlJ0RER0YTV1OFQzU2YveDRhRXZtVmRGZTZQaGt0ZjdKeDZSS3R4M2wrWGpMMUR3cW5peGFPQVc3T2x2WW9Cd0pDVUxEVXk5L0g2OU03Zm5UYnpncUJ1UDRSZ1J6eEtZZUhSL1A0T0hOZk04N0dKcmlTcHNrYmZ6ZTNLMDdmTjhSd0lmcVVIWmc0UmhnQ2t4MG5tRUlwM09vd1hOdGdjZ0UrcStlSmUzbFJXenRjWjBMVk5sdU1DYTgvUUhBdjlsUVpVK2RhSitYSWx4b3dydmRUVys5eVJZUklTT0JLY3d6Z3ZMZVB6ekRoUm1PQXdzekp2UFFIdzhOTUljMkxIL0pyTndJSWVEYUg5Umc0TjZXQTdMN2xiL0lscnZ2VkcrZnpaVnB1ZUxCV3llSUd0NElvSGd2RUhxdktnbUd4cGNuTU5kcmZjMzE4Mlg3MGlXNkJkeWlwQ3B5TWphY0wvUHlBKyt0bEVLOEVKRXhoZSsvRldaTUpBL0ZhZC9TcWVJYTlTNWJHWU5INXVnNkRtQWtEY24rdnp3di81N3dMWDd1aEUrQWtTaTN5ZjhsT3gvOXVmVHBsalRBT1FZLzYvK2dHUXpxb3FhZXI3RWUvUEJ2bWo1Z3dwNzB6TzU2SWpLR1JvWmt5elhvUHRFdVRXOHU0OU94NW1XdlMrdXkxL1Q2RFduV3hkUGh6eitUb1c3ZFIycy9QLytnSDhlTDQxSGxEM1Nla2hNYmFuUS8vSmJzZnVwSnZzdFdjOU5DYnZQd0FrQ2hDZ0dDd0l2NTYzUXJoVWVGMWRkY0piVjMzU0U3ZnZXNEhGejFscTZjZHlvK1cxTUFzWldnS0tQYlZLYTFpVUU1V2xxaU5MN00vMjNTdlB4Vk9mRG02M3cxR2d1b0l6V1ZWRWlTWEdMRnNZRlIwZDNlSXZ0ZmVVbmw5b2JTOERySDM3ZnlWV2w4ODJWcFhmT3hiVU1Wemo1T01UQmw2dytJakJLRUhGZVNEWlpzcTlIOWtZQUxRN1pWREY0WW1pVnRpeXd6d0lWUDV4Z25oRGo5c1Z0cUZycUlPZFBlSmwzN0dsV0JYOHJ4TFhWOG1mREVobXBMV29iM2R1N1pMZjJIMmpRc2RrZU9yQkJYVWxUbkNncXhZaGd6QWwvMnRIb3pIVHNBM1FET0RUQ0VYa1FSMG5RVTZLS1E0elNkRGRHY3pjWUdYcGlzY2RVMEFpc1MvS0NwUWtTY0p2VVNFNjRqSEhWT3NqYXlsVkRFVlZDRTE0NjdCSGk2QWoyeGUzNDhncXVQYnFQZWpUK010MmlyQldNME90QVdIT0FoV0tBZG1idm5oYzJIWkE2djNSczdESW51REVDTEg1TWxqMXdqNElDbjN6bVBKbjgzRHZ5bmQrNytNQURCVUlLL0gyTWdOSFoxRndLMk5Wd0JpRFBlMSs1SERQajdybzNENGU4RzNic2FDai9XSm9ReDdlN2JBa0k3VjJmRmlBNldrNE5heUFIUk9CakJ4dklKM1NLakFjNDROMk1BUDRBYUU4WkFtWGlISTBlOUc5OXU2Zmh4NWhXNFFJc2FBSXhRUUtqekJlWm9yL2RqQXJrUWNEdWdEVzBVTjVZbndtZkRpTEpHSmtDakpSck0zZEkrcHBWZ0ZQNEdJSlJ4RDIzajNtOTFBRkxqK3Jnc1ZvamFBWXhHRzQ5bCs0dmFPeEw4dGE4ZUs4VERkWnhYdzIvWHcvbmlOZnNsUTVpelhXK0ZxQk9BekxreXdLNlQyNHdJU2JnOVBoQ2tXUng1REZpdFArZHNNcXdpZmhsbUk1ZWZaVWh4aU45Q1dWT2dqcG5SYUpFQzVVaUFIaTFsb1kydGhTbkdvZkRaR0VFcGl2R1FoQk1Yd3dkUldzQUQ2VXE2Si9KL1VWYldPaE5LZ0F3QUFBQUFTVVZPUks1Q1lJST0ifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMy0wNS0wMSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IlJTQSBEUzEwMCIsImNlcnRpZmljYXRlTnVtYmVyIjoiVTJGMTAwMDIwMjMwNTAxMDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjMtMDUtMDEiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MX1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNC0wOS0xMCJ9LHsiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjRhNzYyYmRjZmI1N2I2ZDk0MjMyN2QyMjc3ODk4MTNhZGU0OTFiZjMiXSwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiNGE3NjJiZGNmYjU3YjZkOTQyMzI3ZDIyNzc4OTgxM2FkZTQ5MWJmMyJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiWXViaUtleSA1IFNlcmllcyB3aXRoIE5GQyBFbmhhbmNlZCBQSU4gKENvbnN1bWVyIFByb2ZpbGUpIn0sImRlc2NyaXB0aW9uIjoiWXViaUtleSA1IFNlcmllcyB3aXRoIE5GQyBFbmhhbmNlZCBQSU4gKENvbnN1bWVyIFByb2ZpbGUpIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTcyOCwicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoyfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCIsInJlbW90ZV9oYW5kbGUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURSekNDQWpHZ0F3SUJBZ0lVZXg5blQ5dndaTlhTNDgzTGRpWUdmdzJTalNvd0N3WUpLb1pJaHZjTkFRRUxNQzR4TERBcUJnTlZCQU1NSTFsMVltbGpieUJCZEhSbGMzUmhkR2x2YmlCSmJuUmxjbTFsWkdsaGRHVWdRaUF4TUNBWERUSTFNRGd3TVRBd01EQXdNRm9ZRHprNU9Ua3hNak14TWpNMU9UVTVXakFuTVNVd0l3WURWUVFEREJ4WmRXSnBZMjhnUmtsRVR5QkJkSFJsYzNSaGRHbHZiaUJDTWlBeE1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBdTFNZXZueTlkeU85WlVDMzlTb01oTGNSL0RYcnRGL2NpTTEydGNpeTJFWEFaNk1rcml2VnRDZkVWTTlYNklTVEVuQlA2dVNZWW92NnBwdjZPNkpoMk5IbVltNHcrSm5TNFZuQ1BVN21IQU1mVkkyTUdUVE1WT2V3MHhVc0c3c0lTSWtJRFVCbXVrOFlLOWM1emljOSt2RlFHTElrc2RYTzVpVkZJZ05HNTNjR1hENFpMWm9BUGl1MFBFb3p4QXFZSWFJNGd4S2hPQTNTOC9XOG1JV3N1Nm9meWo0R3ZrRkc2WjdreUYzMTA3UDdtd0ZITHJJM0VOYVBXTU9GY1RhR2EwZHcrL3ZWUndqUmNFWkJWc3V1VC84N2NrU3MwYTVwa3QzdlpCbGFZZVQ4cHpTcmVWN21vd2NJTTkwTDJpYUFUbFAwbnhtYUU2bk95VGJvakZWbDJ3SURBUUFCbzJZd1pEQWRCZ05WSFE0RUZnUVVTWEVoM3NhM2J0RHVybTRNTS9DN1MxbFJ1dVl3SHdZRFZSMGpCQmd3Rm9BVTZyZENrSjRNZTJSNjIxUjhBN3A4VHAvWW9XRXdFZ1lEVlIwVEFRSC9CQWd3QmdFQi93SUJBREFPQmdOVkhROEJBZjhFQkFNQ0FZWXdDd1lKS29aSWh2Y05BUUVMQTRJQkFRQjVHYzNoYWZ0cDdoS3NFWnNvK2kvWjVuUnVxZG16RzJXQ2xVb1JVcWJhUHlnbG5KRGpLUi9rZmdPbDZpYmJGL3p0aG0zS21YUTdIY0RJUDJ4TWRHN1UyTDJpbWJKUUhxUGYvaDJIcW9qYjRyWmd1ZSs2VzRrdFNSNWVsUjlMMXJZcUUvU0dZTTRpRUtvVlFTdjdSVDFyeEllV2lLc3cvVnh4aS9RT25zeDNGN3g4MENDWWdCNEUzeVF4OFZUVzQ0MGhURXdUQTFlTUhPaXgzMnRQdHl5SElhOFBWVklmVnBIUUpCYU1WdnY1MDhVRWp3a2JVMnJuamZ6b1NUTlM5QTVqVVE4bUJTdmU5NXJqQjBkbzk4RVUrRHhkQnFYMitINmk1d2xJQ0ZnemhkemNzbmU5aEdLVDZselRYNGNJZEpzclkyK3hsZUswRkZReTZsR0VWTEVlIiwiTUlJRFBqQ0NBaWFnQXdJQkFnSVVYemVpRURKRU9UdDE0RjVuMG82WmYvYkJ3aVV3RFFZSktvWklodmNOQVFFTkJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNWjYvVHhNOHJJVCtFYW9Qdkc4MW9udE1Pby8ybVEyUkJ3SkhTMFFaY3hWYU5YdmwxMkxVaEJaNUxtaUJTY0laZDFSbngxb2Q1ODVoKy9kaEs3aEVtN0pBQUxrS0t0czFmTzUzS0dOTFp1ano1aDN3R25jcjRoeUtGMEc3NGIvVTNLOWhFNW1HTkQ2enFZY2hDUkFIZnJZTVlSREY0WUwwWDRENW5HZHh2cHBBeTZua0VtdFdtTW53TzNpMFRBdWNzcmJFNDg1SHZHTTRyMFZwZ1ZkSnB2Z1FqaVRKQ1RJcStEMzVod3RUOFFESXYrbkd2cGN5aTV3Y0lmQ2t6eUNpbUp1a2hZeTZLb3FOTUtRRWRwTmlTT3ZXeURNVE10MWJ3Q3ZFenB3OTF1K21zVXQ0cmowZWZuTzlzMFpPd2R3TVJEbkg0eGdVbDVaTHdyclBrZkMxLzBDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01COEdBMVVkSXdRWU1CYUFGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFNd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkRRVUFBNElCQVFDM0lXL3NnQjlwWjhhcEpOanh1R29YK0ZrSUxrczB3TU5yZFhML2NvVXZzcmh6c3ZsNm1lUE1yYkdKQnlKMVhucXVCNXNnY1JFTkZ4ZFFGbWEzbWlvOFVwZjFvd00xWnJlWHJKMG1BREcyQnBscWJKbnhpeVlhK1IxMXJlSUZUV2VJaE1OY1pLc0RackZBeVB1RmpDV1NRdkptTldlOW1GUllGZ05oWEpLa1hJYjVIMVhnRURsd2llZFlSTTdWb2xCTmxsZDZwUkZLbFg4dXN0Nk9UTU9lQURsMnhORjBtMUxUaFNkZXVYdkR5QzFnOStJTGZ6M1M2T0lZZ2MzaXJvUmNGRDM1NGc3cktmdTY3cUZBdzlnQzR5aTB4QlRQclk5NXJoNC9IcWFVWUNBL0w4bGRSazZIN1hrMzVEK1dWcG1xMlNoL3hUNUhpRnVoZjR3SmIwYksiLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVIzOG1xMjZTZjJzelZWMkJkRzZXRU43a3VXVXdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFSWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFOWTBXYjlvUG9Sb0tvUXlXUGFKcHoxMXZyV1RnNnpUdG1OajJWb0tSbnl2S0dScXB6YjgzdzVsNllBOTZVWWtZQkRRUDBpbE8yRFBlNndXcVZSNXpEZlJ6ZGNIOGJoK0w3ZEdHdmFlNmhSVFpoa0ZrQ3BYRHM0SGNja25yRGY4RkNsSjdIZTM5SmY0Mi9HMVFtMnp6OVdXbXJQWHRnaUsveDA1R2pzUWZHdURHMXpmNVFUVVVpZThsd3ltSzNUZmRPdk5lZUpBQVBlMnBuN0l0ZlJiK3JWck5XaUR6bFJuMnZObloyd1BvNHdIL1dKNmRoWFpHK3JNV1QrYTZCb2NnMVVmSXc2a2R1bkc0YlRwWnpzdmFjRll5UjBtcGYrRGVPbnBTV0FteXdKV0h2VGxmMllYeEZ5ZVhjVEFDZFFsY01OR0oyVmhaUTQ4eHRQNS9SQlAvOGtDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNoeTQyb2tpcWNUUzFpcWEvSFJXamtCbjRIL01COEdBMVVkSXdRWU1CYUFGT3EzUXBDZURIdGtldHRVZkFPNmZFNmYyS0ZoTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBbitSSElQYnRNRUROZFQxZzhIL1JpdEFrVWRMZ0F0MXRXR1dubGo5a25idjQvNEdsWDdDOXA0NWVmUE85L2FaTDZPVjFYUktCaTZLbXRCVzVLN251WUVuTXgvNUJxQlNiTFQ3cmhkdUM0OVRCZU1iOVBIZFhzVGxTVk5ZZWZyMWRHaWRyNGoweFZCUUxiMXJrbkRBYmRXRHpLZnZuYXlLTzhGcndlN0h4ODQzTUcvckorYzBYcnVVdmJmVlRDSExpSVdoTTdvTkRoTDh4b2I2eFVvOUtMS2NTTCtJdFlzTzMvOVdiOFE5R2pzcUw0RlhzRGNHMVNhWWg3S3BmdU1tT2l4cXpKWk8ybklpY1BZUmcxSTJTdWlVZllPNzB0bWRIY2JsK2tTUW1TWXQ3cnE0dmlJTGcyR3gzajlySVR1V1RqYmFVYVNTUXhnT21NU0h1eXpNQUMiLCJNSUlEU0RDQ0FqQ2dBd0lCQWdJVVVjbU1YelJJRk9nR1RLMFRiM2dFdVpZWmtCSXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFEbTU1NWJXWTlXVyt0T1kwcklXSGxkaCthTmFub0NaQ0ZoN0drM1laclFtUFV3MGhrU0c2cVlIUXRQK2ZaeVMzM1ZFcnZnK0JRcW5tdW1nTmhmeEZya3dFWkVMZWlkQmNDOEM0QWc0bnFxaVBXcHpzdkkxN05jeFlsSW5MTkxGY1pZLytnT2lONlpPVGloTzUvdkJaTWJqOXJpYUFjcWxpWW1OR0pQZ1RjTUdhRUF5TXpFTU55Mm5tNkVwK3BqUDVhRjZnaTIxdC9VUUZzdUoxajJSai95bk0vU2RSdCtlY2FsNU9Zb3R4SGtGYkw5dnZ2MkEyT3Y1SVRaQ2x3NGJPUzlucHlwUWltT1o1UUFZeXRtWWFRcFdsL3BNWXo2elNqOFJxa1ZETkVKR3FOZlRLQTJpdkxZd1g2bFN0dE1QYXBnMEo4NGw5WDB2b1ZOL0ZwUzRWQ1ZBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlFnS0ZBaEc2UmFXK2hUeTUyZHhlVDhiQzk2SHpBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBWU16Z0xySkxJcjBPb3ZRbkFaclJJR3VhYmlIU1VLU21iTFJXcFJrV2VBdHNDaERFSHBYY0ovYmdETktZV29IcVE4eFJVakI0Q3llcFlldmMzWWxyRzhvN3pIeHBmVmNhb0w1U2V1Smt6SHhLbjRiVGFTcDkrTXZ3YW1ucDY0a1pNaU5iRkxrbmZQOWtZS29SSGtNV2hlUkoxVXNQMXo0U2Nta0NlSUxmc01zNnZxb3ZxaldDbEZzSnBCY3NsdVlIV0Y3YkJKMW40UndnK0FURW9wWTRJZ0d2Nlp2d2MrQTlyK0FUMmhxcG9Ta1lvQWwrQU5Zd2dzbE9mOXNKZTBWK1RBOVlZL1VsYUJtUFBUZDAvL3I5d3ZjZVBXWmtQaktvQUMvelVOaGZEYmg0TFY4R0hzM2x5WDJYb21ML0xOYzhKWXp5SWFERWhHUXZlb1BoaC90cjFnPT0iLCJNSUlEU0RDQ0FqQ2dBd0lCQWdJVURxRVJ3KzRSbkdTZ2d4Z1Vld0pGRVBEUlozWXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFESTdYbkgrWnZEd01DUVU4TThaZVY1cXNjdWJsdlZZYWFSdDNZYmF4bjlnb2RMeDVzd0gwbFhyZGdqaDVoN0ZwVmdDZ1lZWDdFNGJsMXZielVMZW1yTVdUOE4zV01HVWU4UUFKYkJlaW9WN1cvRStoVFpQLzBTS0pWYTNld0tCbzZVTGVNbmZRWkRyVk9SQWs4d1RMcTJ2NUxsajV2TWo3SnRPb3RLYTlKN25IUzhrTG16WFhTYWowU3dFUGg1T0FaVVROVjR6czFidm9UQVFRV3JMNC9KOVF1S3Q2V0NGRTVuVU5pUlFjRWJWRjhtbHFLMmJ4Mno2b2tWbHR5RFZMQ3hZYnBVVEVMdlkxdXNSM0RUR1BVb0lDbE9tNGNycHduRFJMVkh2alllUEdCQi8vcEV5enhBL2djU2N4andhSDFaVXc5Ym5TYkh5dXJLcWJUYTFLdmpBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlRxdDBLUW5neDdaSHJiVkh3RHVueE9uOWloWVRBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBcVFhQ1dNeFRHcVZWWDdTazdra0ptVXVlVFNZS3VVNitLQkJTZ3dJUm5sdzlLN0hlMUlweFowaGR3cFBOaWtLam1jeUZnRlB6aEltd0hKZ3h4dVQ5MFB3M3ZZT2RjSkpOa3REZzM1UFhPZnpTbjE1Y0ZBeDFSTzBtUFRtSWI4ZFhpRVdPcHpvWHZkd1hETTQxWmFDRFlNVDd3NElRdE15dkU3eFVCWnEyYmp0QW5xL05EVUE3YmU0SDhIM2lwQysvK05LbFVyY1VoK2o0OEs2N1dJMHUxbTZGZVF1ZUJBN24wNmo4MjVycURxc2FMczlUYjdLQUhBdzhQbXJXYU5QRzJraktlcnhQRWZlY2l2bEZhd3AyUldadnhyVnRuM1RWMlNCeHlDSkNrWHNORDA1ZENFclZIU0pJcytCZHRUVk5ZOUF3dHlQbW55YjB2NG1TVHp2V2R3PT0iLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVRuYmJHSVIyTkh2enFJS0ZBZVF3RzFYQmlzMHdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFRWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPc1hqM2swNEJhbjRUWWR0WktxRC9PUEp4eUR5YVBtQ0JVRlVpYVpJZ1R0ZVpuajNYMjVEaGdwWlpYc0M0RDB5ZEljcmxBNndOVUluT1JML0w5ekJiVEVJTUFWTUdvNmc3VUtBbWIyTUY2QUhibmhZSmQ5ZWlrdXBWTldTaEhOWU5jNEdCZE8xWU42QWZVcXZKaEhiZTNWNFNOTVBtQlJFS0pQVno3VGh3Z21nZ1RlOFdzMkswL3dzcXYyd1NFN3BiQ0JzVVpoSVg1MWJaTTNwcUR3SlBUbVJGRXZ0MC82dEc1ZU84RjNqMTRPWHFmRWhtam4xVnZ4S0RZUU9MWkF4Q3d3Z0MwUDRDZGZXdjN5OFBTUjhJMzU0aE8xWStHek5qdklxWDM4TktMeXd1SVlIRmVyT3hObHhFTUJ2RmhZQnVSdVlBa2tnVWFQcU42VUJoc0lMcnNDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNDb1JIaGl5Tm5iblhSV0lMNlpCWG9CWDlZVE1COEdBMVVkSXdRWU1CYUFGQ0FvVUNFYnBGcGI2RlBMblozRjVQeHNMM29mTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFDUUZhZkpJMS81V2c5Q0VFaW1FMVJQNTRSZ1F3VE5UT09Rc0xBQ1RlK3JJdGxGUXpDOVpEaHJWODI4eVg3anp5K0FBc3AzaXpLN1QxdGgyZGw3bSt0dTBzdzJQYS9vbGMwMm50NlB5SXczNDhnYUh6aEkxKzBLRTQ1cXh2RkRlTDJsTXhiUGZDWXZ5RUVhWXpqaVFFTFU1OTUxcFhHV3lLTWEvNGZMdE8rWktPWGhNdVZlcTRyWERQSTU0VzZKSE9pQWFpS2Rpdys1ZTNjMmt0L2pGSVF0TTZ2TVhnOUxORnpkakVUTnQyMFZYOVFldlJwRlpmdWNNRzl3Q2FRRG9GbFB6cFRNSktoUGV2L2ltSm1aWWhLZnIwbExjZW10cWpJeExBb3FaZE9ZZkhCZzYrdkFjZFBJL2lhdUdwVUF2N1grVUtObUR3aloyQmFINHNMd2hCMm0iXSwiaWNvbiI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsImljb25EYXJrIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwicHJvdmlkZXJMb2dvTGlnaHQiOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJwcm92aWRlckxvZ29EYXJrIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09In0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjYtMDQtMjUiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NzI4LCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ill1YmlLZXkgNSBTZXJpZXMgd2l0aCBORkMgRW5oYW5jZWQgUElOIChDb25zdW1lciBQcm9maWxlKSIsImNlcnRpZmljYXRlTnVtYmVyIjoiVTJGMTAwMDIwMjYwNDI1MDE0IiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25Qcm9maWxlcyI6WyJjb25zdW1lciJdLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI2LTA0LTI1IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTcyOH1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNi0wNS0wMSJ9LHsiYWFndWlkIjoiMzEyNGUzMDEtZjE0ZS00ZTM4LTg3NmQtZmJlZWIwOTBlN2JmIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiIzMTI0ZTMwMS1mMTRlLTRlMzgtODc2ZC1mYmVlYjA5MGU3YmYiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiWXViaUtleSA1IFNlcmllcyB3aXRoIExpZ2h0bmluZyBQcmV2aWV3In0sImRlc2NyaXB0aW9uIjoiWXViaUtleSA1IFNlcmllcyB3aXRoIExpZ2h0bmluZyBQcmV2aWV3IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3MiwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9LHsibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMzg0cjFfZWNkc2Ffc2hhMzg0X3JhdyIsInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3IiwiZWQyNTUxOV9lZGRzYV9zaGE1MTJfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJREtqQ0NBaEtnQXdJQkFnSVVlZitWdkhrY1RRbkVEKyt3Sk0vSXh6U1VMazB3RFFZSktvWklodmNOQVFFTEJRQXdKakVrTUNJR0ExVUVBd3diV1hWaWFXTnZJREl3TWpNZ1JrbEVUeUJRY21WMmFXVjNJRU5CTUI0WERUSXpNRGt5TlRFeE16STBNVm9YRFRJME1USXpNVEV4TXpJME1Wb3dKakVrTUNJR0ExVUVBd3diV1hWaWFXTnZJREl3TWpNZ1JrbEVUeUJRY21WMmFXVjNJRU5CTUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUFvdUZNVE9LYUUwWXRleE9vaXNTeHArRWJpNUlBNGVzRVNjeDE2bHpRZHFWNi9lWjgyS3RKZU5YRXVOa0JWWkRwYzMyZ1N0dXhMQkg4bWdzb0hCRmFpMkRramZCbjVxYndSL2M1K3NubHdadmpnVkEwaHpLdzlDd0FlQXdSRDVrcld0ODgvQ1Z5Q2tNY2dMU0d3WnMvcmo3Ri9MczNFYmc3TXFMYmJRSjlDb3piYkxkSlVZSUhjUHBTWlB0b01yWmI0R3ZuaTZpVlM5VXZDS2dwcWM2TEdSbW9ZR0c0WlIzbEdKL1hRWmZ1K0dlSlc2N2lpbU1qL3lvWE93eHVjeGl2WkhGazZjUVNnd3V3aW9lTm00d3ZrODNMaFN1V2N0ZjJrQXlRY1o3a1VucE5lZStkNE1ncm1HVTRYTUZMaVRndXRhQitlOVY4ZDVKVGtVT0hpTHp0a1FJREFRQUJvMUF3VGpBZEJnTlZIUTRFRmdRVU01U0I1YkhyVitqcElPTWRKbDd1N2JjblRZOHdId1lEVlIwakJCZ3dGb0FVTTVTQjViSHJWK2pwSU9NZEpsN3U3YmNuVFk4d0RBWURWUjBUQkFVd0F3RUIvekFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBQ293UjNLVExmaWRKeVFGTnFFRmZVcmZaOWFhOWVncE9RdE5SSmRMU3RKNnh1MldmTHd2RzRvakdKbEJLTm5mYTVESWN5UVlmLzhxSjRlbGlBVmVOWHVZbWVNbWdOZ1paeXVZNkcxeVdDRDJWM3NENlo0dWozU2JhRE9IajNnSHZzemdRaHJoVDFoL3B1SFFrbjYraFlLQXA3N2tNN0ljNkFaL1JGYmpwbUxMazJEMHNFMWx6VC8wMmkrQmg3TThzbWFpRFo5KytKR3p4ZVN1bjhXMUhsZVpVbTJxS0dtUmE0WFBkcnlUN3g2S0dVR25VNGEzYnBVbVZlWTlyUS9zZk1kNVpUb28rM3VuRldEem9WVjJ2TnU4KytWTEM5em80MEZhS1FMcjlWQUpESjR5TEVOUjdLcm1WOEwwY0NYS0pHWldBV3RHNVJHVG1ISWhkK25CNDFnPT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZkNBWUFBQUNHVnMrTUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFIWVlBQUIyR0FWMmlFNEVBQUFiTlNVUkJWRmhIcFZkN1ROVjFGRC8zZDU5d2VRU0lnUzlBUUFYY0ZMQVFaaTlmcGVWejF0WS9XVFpyNVd4cGM3VzVrbkxhNWpJM1o4NXNyUzJuTTJzanRXd1pTN0lVSDRINHhDbkVReDREQVpGNzRWN3VzODg1djkvbEluQnZWSi9CNFB2OW51LzVudS81bnZNNTU2ZnpBL1F2MEhiL0lyWDNWRktQbzQ1Y25tNGluVUlXWXdMRlJtWlFVdXdqRkcvTjFpUkhoMUVaME5SVlJ1ZHF0MUJkKzJuU0t5Uy9PaHlzMCtsazNlLzNrUTlxdkQ0WlV0YTRWVlNVdVkwZWlweWlUaEFmb2NvT1JWZ0R1dXczcUtSaUFkM3JiY0V0alRqWUlvZjZXYUhzQ216VlBXQ014K2NnaDh0THFXTUthTVdzVWpMcW8yUnRKSVEwb096bWVycFF1NGVzWmdzT05rR3hIN2Qwa2R2VFQxN3M0T01VN1ZJOFpoamdHYU0rQXE5aUVOdThQaWYxdWR6MDdNd3ZLV2Y4R2xWb0NFWTA0UEM1V2RUYVhZRmJSOHZOdkw1KzNLZ2ZiNXhOTXlhOVJhbUppeW5hTWxHVFZ0RmxyNmJhOXUrcHFuRVg0dU11UlJnalNZRWhyTjd1dEZGZTZscWFsN05ma3c1aW1BR0h5blBwYms4Vm1ZMHhzdG5wdGxGQ1ZDWXR6VHVCTjgzUXBNTGpUdGV2ZFB6U1VuSjdlOG1ranhaMzlmWGJLRGZsZFpxYnZVK1RVZ0duQlZGNmZRMmlQSGc0VzE2VVdVd3Z6YmsxNnNNWkUrUG4wcHZ6N0pTZXVBeWVzOGxjcENtYUt1by9wK3FXcjJVY3dJQUhXcnZQMFlFemhYQXRMQWJzc0hocDdpR2FtdnlpalA4cnlxclhVV1g5WG9vd3h5QXVmTkJycDQzUE9CRlhabGtmOE1EUmlxY3B5b3dBd3B1ejJ4K2ZXdnovRHRkZTlzbXN6eWd0Y1I2QzF3YmR6Qmw2T2xxNVdOWVk0b0dhdGhKTXJrVEV4MGpBUlNIQVZzKzVyWWtRTlhiK1FnZlBMc1E2Z1h5SW5zcmVRZm1wbTdSVkZZZkw4Nm4xZmlVT2tZdlNoa1VQeHZidWt6b3k2SzFpaE0xaG8zWHpXNkV2U2ZYQStkcGlXR2FXZCtkb1h6THptR3dLWUZMQ0FzUkFsUEJBaE1sQ0ZYVTd0QlVWUHI4SGdWY0pIV3ErRjAwcGxyK0RNVGRyUDR6dnhZMTFrTk1oeFQrU2VUR2crZDRWNUxRSml0eVVHSk5COFZGWnNqZ1lCWk0vSUkvWENUa2owcXlET3BGMkFWUTE3Q0lqVXAvRG5UMVVrTDVGNWdkaitzUzF3ZzFnRTNnaWdtNjBmQ1h6U25QWGJ5QVBiSVh2K0lEcEUxNlRoYUhJUzlza3lobG1NRTVGM2NmcUFLaHEyQzBFNVBIMWdZYVhhTFBEa1pHMEhESk9uS1dIcDUxSTB6NVNPdXg4ZTFXQXVaemRIUXJUa3A4VG1qWG9JK2xhMHdHWnN6dWJxYk8zaWZRNkEvVzd2VlNZc1YzbVIwSkt3a0tjNFdIaUJrbVI4STNDQ2dJODdvT0w0cXpUNVArUlVKQmVqRU9nQVBLOGhZUHphdE0rZUlUcDJJTzl5VFFtZXJvbVBSeHgxcXhBY3NpbGUvdWJTZUViY1dRR1lFQ2doY0xZMkh5S2pvZ2pIMjVoTXBqcFV2MU91Z2xpNGVoMmVSdzBPMzJiSmpreXVDZ056ZzB2emxZTVNpU3MwdW9vNE1HN2hNT2pDRWFYMXlGRTBuU3ZqQnp1VG5FcEs4Nlo4SW9xRkFJdWJ3OGtnOUFyRWFSRVdTWkkrakg0WGJwNmc5RTlFbkpUM29hUnpETitNVUpCUURIbjU2YThvVW1FQnVzT3hCcy9ONSt0SkViUGtBRkRqOFVHdk9zL0lXdmNTZ2xHQmh2UzcvRlRZZnBXR1lkRFk4ZlBBeFdTQTM1c1RDNHA0K0xtNEFhcUlvUGVRdGZ1Zks2SmgwWmh4bGJzVVhPU21YTmlmRDVaVEFreURvZmJiY2NseG5BOFdOQXF4Q2JSTnlraFh4UXBhRHc2N2ZYVVlic2lHMEtodHYyb2VJdmg4cmhRTVlPY0VBcVhHL2VJK3puZ09jNXl4cjhxODJJQU0xYy9GTEZPcGxxdTVlRlFYck1aekdjVkNqWWJMV0c1STRCVDFldVJybGJ4dE5PdE1pdERERWhMWElJeW5BQXZ1T0VXRTNYM05kQWZ0OTRWZ2FHNDJYSVF0MFpYNlBlQ0UvcVFGZTlySzZIeDdZVTUwS3ZIN2ZXNGZTK3E3S0tCSnhzZ2dCWDVwU0FHaDFqSXJWaDV6UTZ3M1JmYWFoQlhtL2FDYkNaVGpDVUZVVHlXWnFXOXA2Mk1qSlBYVnFPclBnTU80TnY3NEdrZitvd2Z0TlZCRFFuakZKcUhTdzE3cFh2aFdXNUtacWUvUTQ5Ti9VU1RDQVZXb1FYRklIQkhYWGUzRlByVURzdUdEbXRGL2hIS1RIcGVreGhpQU9QSStTSnE2UzZIRjRJOVlXemtCSlRvNDZpVU16V3A4UGlyL1JpZHVMeEtZc1Nrc1Y4dkxsT1F2aEdYMllsUjBPQmhCakMrdS9nRWN2WTBBcEs3WWs0MU54alBTUW5XRkhURjY2VXJqZ2V2QjhDdTVhK2wydllTUlB0dVZEbzczaGhkTVNIblVYN3RUanNWWkd4QWwvV3B0aU9JRVExZ25MMjltWDYvdFIxdG1sa1lqOFc0WCtDU2pXY1VER1kxTnBTL0M3aFNLcWlNTE0vbDJRbVNXWjczRGR6K2dpbzhCQ0VOWVBRNDZxbmt6d1hVYnF2Qmt4alVRc1dmWkZnYnVvM3JBZit3TjdqT085MCt5bng0UGkzTCswbllMMVNjaERVZ0FQNGdQVi83SWQxcSsxSFNobXVHa0lxV1JQZ3l4TUZxUDhIZmpUbmpYd1k1YlFmYkpjdDZPSXpLZ01Ib3RGL0hlMWVnc2F4SFNxRzZ3ZmRtUTV4OE55VEZGcUJjcDJpU293SFIzeWs1KzM2aEY3dlhBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMV9QUkUiLCJGSURPXzJfMSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJsYXJnZUJsb2JLZXkiLCJjcmVkQmxvYiIsIm1pblBpbkxlbmd0aCJdLCJhYWd1aWQiOiIzMTI0ZTMwMWYxNGU0ZTM4ODc2ZGZiZWViMDkwZTdiZiIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImxhcmdlQmxvYnMiOnRydWUsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjp0cnVlLCJhbHdheXNVdiI6ZmFsc2V9LCJtYXhNc2dTaXplIjoxMjgwLCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjgsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4LCJ0cmFuc3BvcnRzIjpbInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi04fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotMzV9XSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5Ijo0MDk2LCJtaW5QSU5MZW5ndGgiOjQsImZpcm13YXJlVmVyc2lvbiI6MzI5NDcyLCJtYXhDcmVkQmxvYkxlbmd0aCI6MzIsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjoxLCJyZW1haW5pbmdEaXNjb3ZlcmFibGVDcmVkZW50aWFscyI6MTAwfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTA0LTA3In1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNC0wNC0wNyJ9LHsiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjQ0NTYxYTk1ZDlhMjY2NGQzMmEyNjdkYmZlODZjZTBiYjE5ZTU5MjYiLCI0MmRiMjRjMjY0NGJkMGMzMDk0OGEzM2NjYzI2NjM1ZDkxZGJlNDBmIl0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjQ0NTYxYTk1ZDlhMjY2NGQzMmEyNjdkYmZlODZjZTBiYjE5ZTU5MjYiLCI0MmRiMjRjMjY0NGJkMGMzMDk0OGEzM2NjYzI2NjM1ZDkxZGJlNDBmIl0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJFeGNlbHNlY3UgZVNlY3UgRklETyBTZWN1cml0eSBLZXkifSwiZGVzY3JpcHRpb24iOiJFeGNlbHNlY3UgZVNlY3UgRklETyBTZWN1cml0eSBLZXkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MywicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCIsInJlbW90ZV9oYW5kbGUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDa2pDQ0FqbWdBd0lCQWdJSkFMbGlLdnFHSHdPeE1Bb0dDQ3FHU000OUJBTUNNSUdsTVFzd0NRWURWUVFHRXdKRFRqRVNNQkFHQTFVRUNBd0pSM1ZoYm1ka2IyNW5NUkV3RHdZRFZRUUhEQWhUYUdWdWVtaGxiakV6TURFR0ExVUVDZ3dxVTJobGJucG9aVzRnUlhoalpXeHpaV04xSUVSaGRHRWdWR1ZqYUc1dmJHOW5lU0JEYnk0Z1RIUmtNUjR3SEFZRFZRUUxEQlZGZUdObGJITmxZM1VnUm1sa2J5QlRaWEoyWlhJeEdqQVlCZ05WQkFNTUVVVjRZMlZzYzJWamRTQkdhV1J2SUVOQk1CNFhEVEUzTURNd01qQTVNVFV4TUZvWERUSTNNREl5T0RBNU1UVXhNRm93Z2FVeEN6QUpCZ05WQkFZVEFrTk9NUkl3RUFZRFZRUUlEQWxIZFdGdVoyUnZibWN4RVRBUEJnTlZCQWNNQ0ZOb1pXNTZhR1Z1TVRNd01RWURWUVFLRENwVGFHVnVlbWhsYmlCRmVHTmxiSE5sWTNVZ1JHRjBZU0JVWldOb2JtOXNiMmQ1SUVOdkxpQk1kR1F4SGpBY0JnTlZCQXNNRlVWNFkyVnNjMlZqZFNCR2FXUnZJRk5sY25abGNqRWFNQmdHQTFVRUF3d1JSWGhqWld4elpXTjFJRVpwWkc4Z1EwRXdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBVG1uOTFFSVlWZjVEVDBwOWlwYzNNb2Jmd0thcm5QOWRNOGNyTVNaTlBYeVl2MEg3Mzh1S2pCbm5sQ3JxMzNJVER3Q09EU2xVYUR3NTBJbmpudTV5UENvMUF3VGpBZEJnTlZIUTRFRmdRVXJJa3ZENnpMaUR1Y2RoTm5BcWxtckluTm41c3dId1lEVlIwakJCZ3dGb0FVcklrdkQ2ekxpRHVjZGhObkFxbG1ySW5ObjVzd0RBWURWUjBUQkFVd0F3RUIvekFLQmdncWhrak9QUVFEQWdOSEFEQkVBaUFEZFpCU3k1OUYzZHpjK0V2VTlKQ3YzZUhKdytBaXZCWFU4SDQ2ZTZlcDlBSWdVdDkvQWcvdlRBaklrS3RJSnMvemJIYWZEY0ptcm55VS9aUDExNU9iZW4wPSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFJd0FBQUFZQ0FZQUFBQW9OeFZyQUFBQUNYQklXWE1BQUI3Q0FBQWV3Z0Z1MEhVK0FBQUZJR2xVV0hSWVRVdzZZMjl0TG1Ga2IySmxMbmh0Y0FBQUFBQUFQRDk0Y0dGamEyVjBJR0psWjJsdVBTTHZ1NzhpSUdsa1BTSlhOVTB3VFhCRFpXaHBTSHB5WlZONlRsUmplbXRqT1dRaVB6NGdQSGc2ZUcxd2JXVjBZU0I0Yld4dWN6cDRQU0poWkc5aVpUcHVjenB0WlhSaEx5SWdlRHA0YlhCMGF6MGlRV1J2WW1VZ1dFMVFJRU52Y21VZ05TNDJMV014TkRJZ056a3VNVFl3T1RJMExDQXlNREUzTHpBM0x6RXpMVEF4T2pBMk9qTTVJQ0FnSUNBZ0lDQWlQaUE4Y21SbU9sSkVSaUI0Yld4dWN6cHlaR1k5SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpFNU9Ua3ZNREl2TWpJdGNtUm1MWE41Ym5SaGVDMXVjeU1pUGlBOGNtUm1Pa1JsYzJOeWFYQjBhVzl1SUhKa1pqcGhZbTkxZEQwaUlpQjRiV3h1Y3pwNGJYQTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzhpSUhodGJHNXpPbVJqUFNKb2RIUndPaTh2Y0hWeWJDNXZjbWN2WkdNdlpXeGxiV1Z1ZEhNdk1TNHhMeUlnZUcxc2JuTTZjR2h2ZEc5emFHOXdQU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNCb2IzUnZjMmh2Y0M4eExqQXZJaUI0Yld4dWN6cDRiWEJOVFQwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOTRZWEF2TVM0d0wyMXRMeUlnZUcxc2JuTTZjM1JGZG5ROUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXpWSGx3WlM5U1pYTnZkWEpqWlVWMlpXNTBJeUlnZUcxd09rTnlaV0YwYjNKVWIyOXNQU0pCWkc5aVpTQlFhRzkwYjNOb2IzQWdRME1nS0ZkcGJtUnZkM01wSWlCNGJYQTZRM0psWVhSbFJHRjBaVDBpTWpBeE9DMHdOUzB5TTFReE5EbzBNRG8xTlNzd09Eb3dNQ0lnZUcxd09rMXZaR2xtZVVSaGRHVTlJakl3TVRrdE1EVXRNRFZVTURrNk16TTZORGNyTURnNk1EQWlJSGh0Y0RwTlpYUmhaR0YwWVVSaGRHVTlJakl3TVRrdE1EVXRNRFZVTURrNk16TTZORGNyTURnNk1EQWlJR1JqT21admNtMWhkRDBpYVcxaFoyVXZjRzVuSWlCd2FHOTBiM05vYjNBNlEyOXNiM0pOYjJSbFBTSXpJaUJ3YUc5MGIzTm9iM0E2U1VORFVISnZabWxzWlQwaWMxSkhRaUJKUlVNMk1UazJOaTB5TGpFaUlIaHRjRTFOT2tsdWMzUmhibU5sU1VROUluaHRjQzVwYVdRNk1qRTROV1l5WW1ZdE9EVm1PUzFqWmpRM0xXRmlPRGN0T1RGak0ySXpaakJpTnpobElpQjRiWEJOVFRwRWIyTjFiV1Z1ZEVsRVBTSmhaRzlpWlRwa2IyTnBaRHB3YUc5MGIzTm9iM0E2WldNeFpUZzNNakV0TnpNM1lTMHdOVFJsTFdFellUa3ROVEZrTVRNek5EWmxaVEk1SWlCNGJYQk5UVHBQY21sbmFXNWhiRVJ2WTNWdFpXNTBTVVE5SW5odGNDNWthV1E2TWpFNE5XWXlZbVl0T0RWbU9TMWpaalEzTFdGaU9EY3RPVEZqTTJJelpqQmlOemhsSWo0Z1BIaHRjRTFOT2tocGMzUnZjbmsrSUR4eVpHWTZVMlZ4UGlBOGNtUm1PbXhwSUhOMFJYWjBPbUZqZEdsdmJqMGlZM0psWVhSbFpDSWdjM1JGZG5RNmFXNXpkR0Z1WTJWSlJEMGllRzF3TG1scFpEb3lNVGcxWmpKaVppMDROV1k1TFdObU5EY3RZV0k0TnkwNU1XTXpZak5tTUdJM09HVWlJSE4wUlhaME9uZG9aVzQ5SWpJd01UZ3RNRFV0TWpOVU1UUTZOREE2TlRVck1EZzZNREFpSUhOMFJYWjBPbk52Wm5SM1lYSmxRV2RsYm5ROUlrRmtiMkpsSUZCb2IzUnZjMmh2Y0NCRFF5QW9WMmx1Wkc5M2N5a2lMejRnUEM5eVpHWTZVMlZ4UGlBOEwzaHRjRTFOT2tocGMzUnZjbmsrSUR3dmNtUm1Pa1JsYzJOeWFYQjBhVzl1UGlBOEwzSmtaanBTUkVZK0lEd3ZlRHA0YlhCdFpYUmhQaUE4UDNod1lXTnJaWFFnWlc1a1BTSnlJajgrLzBWeFJRQUFHZlZKUkVGVWFBWFZ3WGZjbjNWOTcvSFg1L3Y5WHRkdjNEczdKSkFJQVVMWUJabUNpbURWRGxmdHcyM0hxWXVxUFYwV3RkYldSNjNuVkcycm5yYU90c2hEclJVZlBSM1dXUzNLVmhBWllRb0VRa0xXbmR6ek42N3IrbjdlNTA0aUtOV084NTgrbjJudWlzUy9KM0c4WVplWjJaVEVJbUQ4NStST08wWlNVZmlISlA2Rkh5SUVXQmpBd3pOdzZvYkkzQ3lrQ0dhR0pOeWhMTVd3Z25yb3BOSklDQk5VY29vaTBPOGIreGZGNlBMQXFJTWNHb2QyVyt6WUQ5Rmc0OXJBZ2IxaTBUSlRIV0dDdW82VWhlRUpkaTltVnJTTjhjS1lxNDJkKzhTS0NTTzJnQXdkSUJRUVRQeDdabERWZGtrV2J6VFpjS1RJM2RodnZyR2x1ZU05ZDhVVFgwUnIram1veVlDUU9NU3NCTHBBQWpMUVJ4cGd4bytSQW1scjRvY0laaGVHa0Y1bEJwTDRyd2hJQ1hMRGZIK2dEeGVGa0hnQ0NlU3dmNzhoRXovS2pNUEVENUlnUlh1UnVmMjBwWUJaUTcyZjdTdEdIM1ltVHZ4Rk1oY2dBd2xpQVJMZ0dXd0dOQWZXUXF3bWhzaEJjbjRzR09BK2w4cUN4eG1RQlUzRFNaSWo4VjhUWUZDMGpZVUZiZTMxZFAyeTVaQXpUeEFTNU1aQWdQR2p6UUJCMVlEeEE5WlowS2ttY0VISW1jOTNMdmkzSGZISWtxWmVqVElnTUVBTzdsOG54azhoM1lMbjNZUTBqdXNNMUx5T0VNNUU0c2VDZ096L2xQWWNFSTl4UVR0eHhIZzNudWtZSUw1ckVkZ09DQ2o0ZmdZU3NSNXFSYWVqcTBKaXVxcDRnaFFOTHcxVjRzZUZBSzlGTXI1SFFMVGpRZ3liTWNpTmc3SG4xcFdYZk9PaDZzU0w4UGtqTVFkTFlHR2F3ZDdmSlhZdlIwV2ZFTUFDMUJXRTRsWjZDLzlNbWY2T2N1VHBTSUQ0a1dVRzBtN0V2ZW0yYmM1amhvMVlPeG1QT25NVHAyYUo3SUNCaVk4Si9UN1FBa1lBY1pBQVE4RW9jME8yeUxiUlVVTUNNNUNNZGh2MnpUbGtJL0pqUkdBUlFoSElqWGlNR2NkS0duZU0waktJT3g2cFYrL0xadWNqN3hBTVNQdm82eFY0OVFYU09Nek53OGdFZEZvd013TWpZNURTWHBybXJSVDZCNHhWaUI5ZEVrdHVKTnFPdEhjKzhKaitFRHBkMnhUYWpHZ0FHZU1nZC85bllFOEk0SUlRUUN3SmdJTUxYQkFObWd5U2tSMks0Tno5SUR3Nkx6WWZMUXJqeDRZWk5EWDBlazUzTENCeFNBcDJqcGxoZ2hZMXN6WngwMVhOQlhNRXRoQXFRQlc5NWgwMDZRdkVFYWhKdE11WFVNUVgwRlJYMDJwOWhDTE5vd0NlcnNmOFByQlYvS2ZFWWNaL256ak0rQUh1RUFML0lUbGdZTVpoQnE2YkVRdnBTVWRHSGxQVnhCVmpkbzZ5NFJJZ0VOc0VPNkpCbHBFQ1ZMVVRnaEZMUVRZY0l5TUtRWk1oRzFRTkZLWDQ1ajFpWXRKb0pVT1YrQ0VNR0FFQ01BK0kvdzhDWEdDQU8xamt2ODFZSXNnT0VvZUl3eXhBWFltNS9jNnFsWVpuYURKSDVjekpoSUJNbU9BaDMvamxnWFZXUXo2UllEQVlYc3RDL1JkMGxrTTVBdkkzVUhUZlJ3QnFmeDRqbzF1QkwySVI2Z0RaRzBJQUJPNFFJMkRnRGlZT3NRUnlrSU1aUDBqZ0dVTGljUllBZ1F2TU9FUUNNeWhhNEJua1BJRUVGcUJvUWE3QUhVSUVCRG5maWNqcHBFbHhpSURJbXM2WW5aa2JhREpZTUR6NzNjZ2ZtV2tDUllMSkNQMCtXQUFLSG1lQVpFZ1FBZ1Rqa05FMnBBZ1Nod2pJQW96amdaOUJPayt3enNCYzdBTytndmlreEtQOEp3UzRHREc0S0VYT0VxenF0UEFBM3pIakM0S3QvQmNFeTRKeDhXaWJNMkprS29vYWVBRDRDdUxiR0JRbHhCRWpaa0dmOVhWdG00aGdDSXpaditYRkR6MFlOcDZOTGF4RURtWG5zMHlaRXlvbzB4bkkvb2ljb2FraFJNQmVnM3dUVWtuMjFSZ25FOFFoclE0b2cyY0hiUWYyNHF3aTJIcVNCUnFCQURNZTV3NnBnTTRZREhxUUd6Q0RrQ0FWTU95QkhDd0FBZ0d4QURsNEJvc2NacUFNQ0dJTHdqaFVQYUZzd0E2QzdtRkptbmxVSE9RWldsMVdqNHl5UlVFZ2tCdGx5VDJ0cUFONzU0VzVzV1JDY0tyZ0RMRGpnT1VHQ29HZEdMY0MveXA0aEI5R0VPQ1lxWFo0Ylc3c1JkRjBGR2FHSUFNcFFzQ2VaWUZmTTdOM0NQN2FRSHdmQVRtclJQWkxyY2l2WUd5V1dWZUN0Wk1nbDVySzNwU2lQb2J6aDhDQTd5TWdpMUdaWGVwdXI0ekdwZzJyWWxuWEFqZVVoRHNQV2VUUExmTEgxVURhZm0rbUxveVJ0djNFWk5jbXF5eGFOQ0J1dlQ2ZXV3UHhNdFJ2NCtyUkc5eElNdWcwTU5RQkxOeFBhMlFMdVlGcUFNVG5BOC9ub0NJQXhpRWhndWNETFBZK1RqUDRFdU5qOStEV0o0UkFOWE02ZE4vQ3lMS3pXSndGYnlCRVFCQkxVSURGbVFkeFhVY3E3c1RDZ0dIL0tQcHp6NkF6ZWhJR05BMmtObmpld2ZiYlBzclk2dnRvVHo0ZmExNklCY2daV2lPUTYwZllmditIbUZoeEI5M1JuOFB6eTNEZGpyR2RKYW03TVhDUUJFWGtERFBHY2dVV3dYQUdmVjFmVzBCdWF5M3k4N2c5djkyMkV3MWJJVGN3Z1NBRlE4Smo0SDZaWFZGTEh3Qm0rUzRIQXJ4NDlUSjdSOWtLeHc4V3dRS1BrNkJzUVFHV3pkWVhvL0dqZFpPak1oODJEcE1nSmp0cDlVVDgzOTFrRitlR29rakNKYklNbHhCWXJuVmt1MnR2TXc5SG12SnJCUU9XT0ZBRVRsblZEaDlzV2JpZ2NjTk0xQm5Fa2lBa2tMRWhCSHQzR1d3Vm1kKzhkNXZ6eGUvRTlNeXo3Y3lMejRmcUVTaVYyVmxzK1B5ZVltMlBQay9GTXNnSERQb3pXSUNxZ203bkFUeS9nTms5cjZFb24wZDc5RWswRlljSUNBSEVFb0VQdjhxakQ3eVRWY2RkdzhSNFF6V0FMQkJnK1dGbUZyL0tiSE1GVStYekNBbXlnd1VvMHg3MlBmU1hQSERuMzdMbEtROWgxaWRFd0dGbTF5bzZ4N3lWc3Z0RzZoa3dvRFA2TmhabUxtZlp4aFlwWFl6WElBR0NhQ0M5aTE3OUZ6VFhRVHJoUXNwTjRJdmZBdVpaa3JwZGNaQ2dFMlZuZXpaY0ltSzBPbngxZHRiK0xqZTZlTlVLKzJEQ2pxOWRoQkMwNUFEU2lBWEtWalNhUmpRaXhHREhncjNUNEZuQXIwcDgyd1dkeUZ0YkkrRzNUVGJldUJBUWdCQU41UE1qTFQ1M3g0TzZldHNDKzg0L3dkWk9ZaTl0aU84eXk3Y2kzY2hCNHR4V3l6NFM0Y1FpUU9nNnZSNTdURnlWZ2p5WVhTUlkxUUFPZEdKOHFhUnJKUHRvVTNQUXVTbllGYVBSTm1XRGpERFlXZFYrdlJuWjRHd3oyMkJBTlpTVm5maXFvNDdsczVQT1ZmUExiTzJLVWR0TVgyQUdCUXc2RTljMGQrMWR4ZHJqTnRGT29EaENaLzk1N0hoZ0swZWZDNkVHNXg0R2k3OU9TaDhncEtjUi9kY291NmZRbjRmc2tDSlEvejNVYjJCcXpVNmFQb3dzTzViaDRBSmN1L0RtcTdRbkJ2U1paL3ZXdHpOMjdHbDBKemN5V0FUWjlWUnpiNmJkdm9iTjU0cWlCV3FnR29JaXRFZjNzT2ZBbXhpM1NMZDlLVlYvRjYzdVZ6ajZMSWpGT2xSZGdBVVFFQU1NcTN2SmRoVnIxa0p1TGNNbW40b3FvTDRaUElPUkdIQ0lHVk5FVGhKZ0J0bjl5OE1Ccng4ZHM3Y0ZoWGQyb2hnMmZtUE8rblNRM1F5MkQ5TmtVOWtwaTQyL29HeUZpOHBJa0F0dnhNU1luUitLK0FrTHpZdEcyM1pCdXd4dnl6MjE2MGFZUVpGQVVQVjcvcW1pc0Q5blZMZjErdlNuZTQ0c1FOWVZqZXp0cGZIVVJuNFRzTTRzdk0vRWlTSEJURi85aFVYNzA3S3RqNDYwMklYSU45elZiSjRhaSsvZmNuUzRzQnFJeGxXMFkzemR2Z1UrdW0zYWp6anRLUDRNYkZNdGtHbk9zNzgzaFBESkVPeFJTUmdjaVhnYnhrc0ZscUt0YUtmNHd2NVFWNTE2cko2MHlqbWgybTlZRUpUc2ZvOWUvOGg5QnphZXdSSHpVNFFDRkZxRThBYTh1b21pdUlXbUQ1NmhMTURpZzdSSEh1U1dhNy9Fc1A5UlRubjZzNGdHaS9XMXlONUlIT3lrTTdHTWhZVTNzN2o0VXNScWlsQWdQazZPdjA2NzNzdFI2MjhuaHh2STJraDMvQ2JtRjErTHVJM3hOZURoNlZUOVZ5R09SUGxtR3Y5VEpsYnR4SUQ1NFYvU2FqOFhmQ2R6ZXhleE50VFZXVVRmZ0JtWVFURG9EWGZRMHpZbVdwQTJub1A3Q2ZoZ0h5SGZqb21Ea2pqTXhQcEFPQTREejl3ZzhYN1YrcjJSVG56NVlxMEhkcy9sUHh3cDdUUEJtT083Z2tIbFhIdjN3LzZ4aVNuLytWTTJwYmRYcy9Za2oySTRFS0VLVzU1NlV2SGxtSmlvZW1vcmMwZ3JRUU9QSGhqNlcybnNiOHFDeDhVSU1SaTQ5dGRaZjFBVVhEQldwb21GU3I5bEZzNEpDQXZNN1pyMVMvdnpmSHpEZXNNTUVEUnV0ODczbXJjb3AvY0VXQjhEelhSUDkzL3FPaS9PUHpuOWFtdlVucnd3QzVnZTh0cGZCWHlOSjdvYjlEdVluV2pZYVo3RllyWk5NY05LMkpLQ2pWZG1kQm5BZ0JzZjBoSGIyTEx1ZGFRREkxUVZ5S0N6Nm1TT21mb2s3bitNL0V0NC9RaXRVZWlPZ3pjZzdXRFkrejF5UG9taVhFOWpmNGhwQjZiMXBIZzU0eXVmd1hBQVpoQU5YQytuYW00bDhCNjY0OUJLQjhnTE1OZDdKNVZ1bzRxUkVidU13Y0p2WTJFTWkxQ01Yb1NxRHRobHhBQWR6ZEkwZXlrNzMySTRuT091dTJIOTZ0Tlp0VHd4ckNBWXhBUUwrMi9Dck0vb2F1aFZUNlpWZEpodXJxZXRBM1FpT0tRVWplODZ4WXdwd1U3SHIyMG5lMHYyZEc0LzYrdnUvaXBnRzk5bGdGaGlITkk0dlVhNkhQZHY3aHZ3aWJGT09EVUJ1UkhqSXh5Ukhlb0dna0VNc0d0RzM4N0IzMWgyN0dvSkVPRFFiVU8zTXU3ZG5sblpFV1hCVkxzZE81WTVYaDVlb0NpS0NETnorVVBUKy96anJaU1F3SUE2dzlwSlp6RDBhd2Z6K2VlU2FTd21jcFhaTlRWcXA2OVpZYjhpQjgrT1I5NmRVdnhhTUVZbEdXQkxXSktCQTNKOTI0elRXT0tvWERTbks5dVlKQVFFZ3dQTjZOVzdlMnVnemRtUVFTd1I0TkR1Yk1iOXI4akZWcUkrQWZZWm90K0grbkQwYVN6NUJzcTMwQnZzZ3ZBTm1qM2dmaFJoK1RTaHVSSjVCWWlHQWhnaDZCNktCQWFzV0g0Nlg3L3ljMWpySyt4N0FEWSs4K1hFK0FjSXd3UmlTWVoyK1V0SVoxQTNNeFJoQW1remxuNmZiZHNhUkllaU9KV0RESkJEdzREMjJMY1k5bUIyRGtKNk1yUmdxbk16VFgyQWJCeVVrRmpTd3V4MENReWZqbTdQRGVOaDA2RFVGMXA5dlp6R3B1V0FRQVlaTU1BTTNDRUEzVFpRc0hXdTFzL1VNZi9WVWQxd1NiK0dRUTBHbUVHSVFBcGZmM1IvZnUzS0ZkemxBak5RZ0dZSUoyMkFacHY0ME9maHdqTUR6ejNkTHQyNXgrUm80K3JsdGl3UElYUzRwMTN5SjFQelJyc0ZxUVYxQXdaMFMyTTRCRWs3REpGbHJCaU54WXZQNTRWa1Zpek9pWkJzRWVtbmdMTUU0NEQ0bmhvb0RNN2lJQU9EeFdnVTBUaEpBdHdnd1pmakpYZHNEU2UyQ1BrSVZBTUJNQkRRRERra2RVN0V1dStpSHJ3YWVBbVRvemZnd0dJRnFJZjRCS1ZQMHg5QzVqcTh1WTVROEQzR0ljcFFsTkNkV01uZXZjdjQ5cmMreXJMT0lpdlhybUN5dUl6S0RSTmdQSzdKWGVCY3pNQWRzUHN4dTQyTlI0SDc4WlRoRk9vS01FRGc3R0IwZkNzUjJMdi9CSTVZdHhrTDhKMGJyNk8zUHhNTERrcGtEcHFrME9rZ1lyQ2pyV01qOSszUlRkTUxldlU0VEs4ZWc3SUZicEFOaEFoQldBTm1jTVJ5WTZTQS9vTFl2TXkzMXpsZTJXdTRoQ1hHWVdaUU5mNzMvWXBMeTVaMmxRRktqTkFDQmVoVjBDbUVBQWRpeVhuZGJucnAxdW5tajhwUnpsN2ZzbmJkd001NXYzcmRsdkRveVJzTUdqSFlBVFBUMEVxd2NzS3dFRkV3M0NDSFFJVFYwZXlpV3VBR0VVYktFSDdhQVFuTURBUU9HR0FzQ1lZQUE1UjlheWZZNlFsN3VtU1U3UnJtZUhCNy9hVGJCMVBkNTVCN0czRExZTHM1ckEwMkFVVFVnQXRTc1pIc0wyYlBnUnRvSEN4dkFGdERzSzBZTUhsY0MwOHJ5TDJFNmhxTDRxQVF1cmdtaVVYQnNQOHd2ZFlycVBiTXNuN2wxWno2SEZpMjVrSnkzc2hnSGtMZ0NRd1FJQ0FWc0RCN0xiM2VibGF0aFJCUFlYYmZDZzZ5Q0ZaQS81RTdHZTYrbmRGVFlNMkcweGxySDBOdjVnQlgvZU85UEh3M2RFWTVLQ2x3MExHQmNDb1lvSkZPUyt6Y21UKzlZNWUycjE1aGREdkcybkZqVUlFQkJwaGdVSXQyYVJ5NXlyaDl1NWp0aVJQVzhSeXY3SGZkaklCNFRERERHM3Y0emwzRGZXdW5qTkZXb2gyTUprTHRFSUVBOUlZd1ZqSys2YWo0ZitncW5MWkpOMlhGMXd6bWhSVlVETm5hVEFNbTZnWFJ6Qm10MHBBN1ZRMnJsaGMwYm1RWE1RblByT2tOT2M2Q2lJWUhXQkNxQk1rTVk0bUV4WUFsbzE5bDlUbXM3V2JUOWRBL1ZyVHQ5Qml0VzFYUXNReUo2NjVaUEhVSHpzOWlneEx4Qm95cmdRSTRIdlFCektad1FWbUE1RHk4NnlZcXdmSVdkT0lGTUhJQ3NkMERRVFZZaHpWWGdFMUJtQVZ6ekVhQUk0RWFZei9ZREtrNkZ6cFhjTUhQUGt6bktDQ3RwOW9mZVp5QXdDRnlpQWtDbWV5UjFMcWRYUFdZMlFObUo1REtoRHRZZ1BiWWtNWFovNHRGaUN1QUF6OUJNNFIrLzBZMm43T0xkY2RCS2prb3lRQmpNOUExUkJiVWl5eXVuN0M3amw0TFQxcGp6QzdBWUFobVBFRXdrS0JxSURzRUM3OEk5cWMxakVlRStCNTMwV21GWDE0Mm11NnFjLzZ3QXhsd0FRWUlxZ3hqSFZhODhxSnd4VW1yd21tUFBseS9lcW9kRHlTejVYVWpZbTNGaXJhV3orNFdRU0taRVZxZ2lzTUVUYU9Pakd5b2FIZkZjTkZHbEJrTExERUxnK3gvSGN3L1VnUTdLcnNpUWc0cVpIbTIwZTZXMlp4eFNMZHB2SjJkK3dyczlUbERMQTBHa1VVMWR6UVR1NkRpR0pMTlkzd1d0QTBNcFB1QlM4SE9CWUVFODR0L1F0SDZPS3VYUWY5UjhQWlRhWStzWXZiK0JZWXpNUEtrZlJUbFBtSThIeHpNUUFiMTRNc0V1NUpRM0lMN3k0aUQ4MGhqczdoVlRPOEI5MXRvdDJwU1RNaEFCalNRL1hNVTVWZkJkN000MkVJSWw3Rm01UnlqSlh6aXo2Q3V0dlBjTjJSNi9VVFRoOFg5SDZmVitSdXFHYUEvVHE1K2dsNEZxZlVOTHZ6NS9hUUNKQTVLSmxvVzdHUXpReEltWStqNjFvWWp1TmJOMkRjTEdKaUJlSndCSlRCMFFRclczYkRDL3FBc3dwdUd0U1hNT2NqRWZoa2RvQ1BBWFdQSExFdnZuZTlqY2o1aUFlZTdoS2hxZThieGE4TDdXdXZpS2ZmZG5SLys1ajM2MG5PZVRwaE1pZ3hBWUpWNGFveFdGb1RLbFVFR0JuSUkwWDdaakpjSFZBbWIyRC9qZnpiUnN1OG9XZCt6dXNrZ2kvWWcrNTJqSWQ2SkdXWVFnZXlCUFpYTzNkQU5Gd2ZSZFRFbStUdGFwUjhSeko2UjNlaDB3ZlkzZkdiZmViZGRjK3pMVmxGckk0T3FEV3FEd0FLZ0E4QmJ3ZjhuS1FWQzYxTlVNNTloMVNTME90QWZ2WmlpOVFKTXNMaHRHY2tnTm5OUS9qTEtkMEE4aDVBWHFQdC9EOTFQRUZPbUdYWUpjUmxpaVRhalpncjNhYkpkaC9ST3hHK2hQRVdJY3lpOEg1cDNJMStrYnFBLy9CM1dyb1U3YnpqQW8vZkQxQkd3N2JaUE02eU9wQ2pPb2FuK2xmN3NCMmxQUVFSNnUwOWdaT1JrSEREN0p0VVFxaUdQU1JhWURHWlBGb2Nad2t5cit4Vy9HUXdyakVJOHJoV01aWUtWd09kZGZNaGQ1OFRDM3JscU1weGZ1MmdhVVFTamN0MFdzRmNYMGl1YWFKZktSUmEwSXFObE4zNWc2UDZ6TG4wTzdDR0RvOEdlRVlNOW5SREc2TG5QenVjM2JaemlvZVpBWHFieHNLMVZoT1hEU3BqWkJhWENSOHowQm9jNWxyaXpQSnE5dlN6dDBpb1RPeTFqVUduMjBXbS91NzNCdHJmYTNEK1l0Wk96WURUWmEzcFZtQnMyOXJ1dGtzck1rQmhQUWIrNHZoMStUekJsQmxtNnk0eTNKMk9GMEJhTFJyMllTU1YzUGJqcUtWK2JtVnYzVThUZWtaZ0Q4ZG00MzAzT0VBT1kvUnVSNjJtMUN0QTgxWDRJVTlCVW15bGI3OGZLWmVRK0xIL3laUlREVzZtYi9lRFRpTGVUMnFNTUZvYk03eDZ5K2hUSWZqVFcvemd4bllzREZpNmlHWjZDNmQ5b3BZenh4elM2aW1ad0JHT2o5MU9IMi9EZ1pJZFcrZnNVNmUyME9yRG5vUk9wZFNXblBnM1diTnBIdHJleHNEQkNxelhIeUNRMERpSEIvUFJHeGlaWFlQVmVjdk1RTXI1ZkdoblYrb1Y1T3kxRURuRkEySEdsd2x1aUFjWmh4aUV1N1RYWmZVTEhoRUtYRTNoYTVheWlobWhHQTlSWi8rVEdiN2puNzhqOUVTeGVIQ3djRDJLWVJUQXJrb1hudVBqSkFIMkR0b0tsZ2lVeVdQUkxKenY2aDFnRUZxZlovOGgyL2MwSngzTnFVWkp5QTJaNmhkQVdJL3lyUkxkVDhFekhOc3VnMHpLaWFXZUtlZ25HTFFNcERPYTVjaVRZeWJVTGkyYmRNdjVHblhXaFlWZUR1bVoydHN4T0c0MUsyYUdXM1NEcEpSWTBJTmg1WUFnREJ3TDNySXI3RnFrNERVdGdCakcrbWV4M0luMFJNOGlDZmpOZ2NHREE3Q09RYTVDOWlGaThEMXRZajljZ1FXZmlFdXJwOStMVkg1SEN2Wmc1K0J6OVBpejBsN0dPWDREOEZocGJqc1FoUmlJVzc2WVovZ0lwM29YVVlNMzFwQkxtNTJGUVFYdHFQYTN3djVDL0ZET1ltWWJUbnYzYnhQWU9lZ3NmWWQyeE1Ld3lnMnFlbGoyYk9oK0w2eTlvdDBSYWZSRzVCdVZ2NEhvWXhQZEx1dzl3M25oYkhYY3dRSUlpUXBGZ1dBbDNzTUFROFlqZzlpYjdya1FZaVlVOUg3TjFMaEVFalhEUTlZdERmMzgwUHROcUJjOUFJKzBJMlg4cHBYQzVzR01kSVFseFNCU01HbENZTVdnMGJkYTh2b1UrN2Rud0RKMElldzdvWTJzYWY5cnFrZmh6dlZrbm04emd6R0RoVEFFUkVZTlJaZEVmYXV0WWwxZW54SFdHeUFmY0xkdGZ4ekY3VnRtMjgvcDlzU1NtWk9lNGN3NFlCemxHUHd0My81Y1F3cHN3dGcxckptSVJuaG1DZ2FBVEttWTBkZHZuOVR3b09Rdm1PVVJhVFF5WEkvOFk4RlZjRHpCMEdNNnZZemc0aGJYSFA1TW1QNU84V0JJVGg1aEJOUTkwZm9HeWZTR2V2d2kyQzI5RWQveEl5dllGREJlUEJrcENBbkdZWjdCNEZtWDdNOERsb09zdzdTYW1rcm4rTVhqOUZMcnBlZURIMFRpWWdXZG9qWGFvNi9jU2VEYkQzcTFrYjJpWHgrUDJYRktNaUo4bTJEaXhQQTAxNE54TXRsbU1KMGpiOXRuWlp4eG5ET2ZrQkJRQ3cyR2poY1ZLMDJXeW5nVmx5ZVl4VEhCY0N1RUNDNHpXV1ZuaTNtUzZyd2pjT1plNXZzcTZPc3IyU2VJeEJwaTRidUQ1eFFHN0xKbTkwTUZTTUNSd2lTTFNtNm4xand1VjNydXl4YzBza1VSck10RHBHaWRNc1pDQy9hcXl6d3E5TWtVcnpJMUdBb3hhMEU3YTQ1V3U3QS8xSjJQZGNEOENCS3BFdTlTT25NUEw5ODN6NXhOdFBTc1JHR1lvQWtqZ0VnbS9aOTlRSHk0amwzZUQ3UjlVam1BQ09CV0pROFRpUGx2KzJmdDEzQmJFNllRYUNEWHVodGthaXVMTm9OZVF3bjVHQ3FOWVBzbXlJOGFJUmFMdVE2NGJRaUVRaHhsZ0VleG9USy9qb0p5aDFZR1JTUmpNQzFFVEFrK2tRRXhiVUg0WGhCa0lzN2hLcHBZdncyd0VyMW5pbURXQUVTSU1lbUEyU296UFIvNThZb1FFdUFDRFlKY2dCM09XT0hBZFFmeDdhZlBxOE1GcVVaL0VhRUFLd1JaN2ZlWVhLeTBldWRLeUdwc2FWa3pHU050Z0JPVElwcHRHTTJBTEtYRUFtSGZSdUtCZ2lmRkVCbG42bHNQL2tPdUtZUGFVb2V1b0VHd1lwSHZxeHI5ZUs5emtNRFMrVHpTc01Eb0pBdXoyckRjT2gvbnZLc1ZuV05EeExRaVlwdDExaXpKZms3VFZ6REtQTVNBQUJpSHc0TjQ1dmVUaFBmNlRXOWJ5bExKZ3c2REN6TmlaVE5lWStIcVdIaExHOUVKTjNZaVU3TUJJYWE4UmdTQWxFb3RmcUo5MTgxMzk0MWZRN2IrU1FNWlZBWVprbUxXUnVoaHR5Z1FoMUJpTFZJc0RqRXhJZ1BORURRZ0RFcEFJQnJsdXlFMkRtVENXaUIrZ0pnQWRqQkhNRXBLSWNRajBhT29oWmc0WWp6R1d5SkFpVUNBSFVRTU5CMGtSY0VRYmJCYTRpUi9pL3dIM0Q1UE1wZDJ0NVFBQUFBQkpSVTVFcmtKZ2dnPT0ifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAxOS0wOS0wNCIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiRXhjZWxzZWN1IGVTZWN1IEZJRE8gU2VjdXJpdHkgS2V5IiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVMkYxMDAwMjAxNjA2MDcwMDUiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMC4xIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjAuMSJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMTktMDktMDQifSx7ImFhZ3VpZCI6ImI2ZWRlMjljLTM3NzItNDEyYy04YTc4LTUzOWMxZjRjNjJkMiIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiYjZlZGUyOWMtMzc3Mi00MTJjLThhNzgtNTM5YzFmNGM2MmQyIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkZlaXRpYW4gQmlvUGFzcyBGSURPMiBQbHVzIEF1dGhlbnRpY2F0b3IifSwiZGVzY3JpcHRpb24iOiJGZWl0aWFuIEJpb1Bhc3MgRklETzIgUGx1cyBBdXRoZW50aWNhdG9yIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUIyRENDQVg2Z0F3SUJBZ0lRR0JVclFiZERybTIwRlpuRHNYMkNCVEFLQmdncWhrak9QUVFEQWpCTE1Rc3dDUVlEVlFRR0V3SlZVekVkTUJzR0ExVUVDZ3dVUm1WcGRHbGhiaUJVWldOb2JtOXNiMmRwWlhNeEhUQWJCZ05WQkFNTUZFWmxhWFJwWVc0Z1JrbEVUeUJTYjI5MElFTkJNQ0FYRFRFNE1EUXdNVEF3TURBd01Gb1lEekl3TkRnd016TXhNak0xT1RVNVdqQkxNUXN3Q1FZRFZRUUdFd0pWVXpFZE1Cc0dBMVVFQ2d3VVJtVnBkR2xoYmlCVVpXTm9ibTlzYjJkcFpYTXhIVEFiQmdOVkJBTU1GRVpsYVhScFlXNGdSa2xFVHlCU2IyOTBJRU5CTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFc0ZZRUVoaUp1cXFuTWdRalNpaXZCalY3REdDVGY0WEJCSC9CN3V2WnNLeFhTaEYwTDh1RElTV1V2Y0V4aXhSczZnQjNvbGRTcmpveDZMOFQ5NE5PenFOQ01FQXdIUVlEVlIwT0JCWUVGRXU5aHlZUnJSeUp6d1JZdm5EU0NJeHJGaU8zTUE4R0ExVWRFd0VCL3dRRk1BTUJBZjh3RGdZRFZSMFBBUUgvQkFRREFnRUdNQW9HQ0NxR1NNNDlCQU1DQTBnQU1FVUNJREhTYjJtYk5EQVVOWHZwUFUwb1dLZU55ZTBmUTJsOUQwMUFSMitzTFpkaEFpRUFvM3d6Njg0SUZNVnNDQ1JtdUpxeEg2RlFSRVNOcWV6dW8xRStLa0d4V3VNPSIsIk1JSUIyRENDQVg2Z0F3SUJBZ0lRRlo5N3dzMkpHUEVvYTVOSStwOHoxakFLQmdncWhrak9QUVFEQWpCTE1Rc3dDUVlEVlFRR0V3SkRUakVkTUJzR0ExVUVDZ3dVUm1WcGRHbGhiaUJVWldOb2JtOXNiMmRwWlhNeEhUQWJCZ05WQkFNTUZFWmxhWFJwWVc0Z1JrbEVUeUJTYjI5MElFTkJNQ0FYRFRFNE1EUXdNVEF3TURBd01Gb1lEekl3TkRnd016TXhNak0xT1RVNVdqQkxNUXN3Q1FZRFZRUUdFd0pEVGpFZE1Cc0dBMVVFQ2d3VVJtVnBkR2xoYmlCVVpXTm9ibTlzYjJkcFpYTXhIVEFiQmdOVkJBTU1GRVpsYVhScFlXNGdSa2xFVHlCU2IyOTBJRU5CTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFbmZBS2Jqdk1YMUV5MWI2aytXUVFkTlZNdDlKZ0dXeUozUHZNNEJTSzVYcVRmbysrMG9Bai80dG53eUlMMEhGQlI5U3Qra3RqcVNYRGZqaVhBdXJzODZOQ01FQXdIUVlEVlIwT0JCWUVGTkdobUUyQmY4TzVhL1lIWjcxUUV2NlFSZkZVTUE4R0ExVWRFd0VCL3dRRk1BTUJBZjh3RGdZRFZSMFBBUUgvQkFRREFnRUdNQW9HQ0NxR1NNNDlCQU1DQTBnQU1FVUNJUUMzc1QxbEJqR2VGK3hLVHB6VjFLWVUyY2thaFRkNG1MSnl6WU9oYUh2NGlnSWdEMkpZa2Z5SDVRNEJwbzhycm9PMEl0N29ZakYya2d5L2VTWjNVOUdsYXF3PSIsIk1JSUJmakNDQVNXZ0F3SUJBZ0lCQVRBS0JnZ3Foa2pPUFFRREFqQVhNUlV3RXdZRFZRUUREQXhHVkNCR1NVUlBJREF5TURBd0lCY05NVFl3TlRBeE1EQXdNREF3V2hnUE1qQTFNREExTURFd01EQXdNREJhTUJjeEZUQVRCZ05WQkFNTURFWlVJRVpKUkU4Z01ESXdNREJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCTkJtclJxVk94enRUSlZOMTl2dGRxY0w3dEtRZW9sMm5uTTIveVlndmtzWm5yNTBTS2JWZ0lFa3pIUVZPdTgwTFZFRTNsVmhlTzFIamdneEFsVDZvNFdqWURCZU1CMEdBMVVkRGdRV0JCUkpGV1F0MWJ2RzNqTTZYZ21WL0ljak50Ty9DekFmQmdOVkhTTUVHREFXZ0JSSkZXUXQxYnZHM2pNNlhnbVYvSWNqTnRPL0N6QU1CZ05WSFJNRUJUQURBUUgvTUE0R0ExVWREd0VCL3dRRUF3SUJCakFLQmdncWhrak9QUVFEQWdOSEFEQkVBaUF3ZlBxZ0lXSVVCK1FCQmFWR3NkSHkwczVSTXhsa3pwU1gvelN5VFptVXBRSWdCMndKNm5aUk04b1gvbkE0M1JoNlNKb3ZNMlh3Q0NILy8rTGlyQkFiQjBNPSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFGQUFBQUFVQ0FNQUFBQXRCa3JsQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUJIWnBWRmgwV0UxTU9tTnZiUzVoWkc5aVpTNTRiWEFBQUFBQUFEdy9lSEJoWTJ0bGRDQmlaV2RwYmowaTc3dS9JaUJwWkQwaVZ6Vk5NRTF3UTJWb2FVaDZjbVZUZWs1VVkzcHJZemxrSWo4K0lEeDRPbmh0Y0cxbGRHRWdlRzFzYm5NNmVEMGlZV1J2WW1VNmJuTTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlrRmtiMkpsSUZoTlVDQkRiM0psSURVdU5pMWpNREUwSURjNUxqRTFOamM1Tnl3Z01qQXhOQzh3T0M4eU1DMHdPVG8xTXpvd01pQWdJQ0FnSUNBZ0lqNGdQSEprWmpwU1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJajRnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJZ2VHMXNibk02ZUcxd1BTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGh0Ykc1ek9uQm9iM1J2YzJodmNEMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzl3YUc5MGIzTm9iM0F2TVM0d0x5SWdlRzFzYm5NNmVHMXdUVTA5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5dGJTOGlJSGh0Ykc1ek9uTjBVbVZtUFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdmMxUjVjR1V2VW1WemIzVnlZMlZTWldZaklpQjRiWEE2UTNKbFlYUnZjbFJ2YjJ3OUlrRmtiMkpsSUZCb2IzUnZjMmh2Y0NCRFF5QXlNREUwSUNoTllXTnBiblJ2YzJncElpQjRiWEE2UTNKbFlYUmxSR0YwWlQwaU1qQXhOaTB4TWkwek1GUXhORG96TXpvd09Dc3dPRG93TUNJZ2VHMXdPazF2WkdsbWVVUmhkR1U5SWpJd01UWXRNVEl0TXpCVU1EYzZNekU2TlRrck1EZzZNREFpSUhodGNEcE5aWFJoWkdGMFlVUmhkR1U5SWpJd01UWXRNVEl0TXpCVU1EYzZNekU2TlRrck1EZzZNREFpSUdSak9tWnZjbTFoZEQwaWFXMWhaMlV2Y0c1bklpQndhRzkwYjNOb2IzQTZTR2x6ZEc5eWVUMGlNakF4TmkweE1pMHpNRlF4TlRvek1Eb3lOeXN3T0Rvd01DWWplRGs3NXBhSDVMdTJJT2FjcXVhZ2grbWltQzB4SU9XM3N1YUprK1c4Z0NZamVFRTdJaUI0YlhCTlRUcEpibk4wWVc1alpVbEVQU0o0YlhBdWFXbGtPakpGTnpGQ1JrWkRRelkzUmpFeFJUWTVOemhFUVRsRFFrSTJORFl6Umprd0lpQjRiWEJOVFRwRWIyTjFiV1Z1ZEVsRVBTSjRiWEF1Wkdsa09qSkZOekZDUmtaRVF6WTNSakV4UlRZNU56aEVRVGxEUWtJMk5EWXpSamt3SWo0Z1BIaHRjRTFOT2tSbGNtbDJaV1JHY205dElITjBVbVZtT21sdWMzUmhibU5sU1VROUluaHRjQzVwYVdRNk1rVTNNVUpHUmtGRE5qZEdNVEZGTmprM09FUkJPVU5DUWpZME5qTkdPVEFpSUhOMFVtVm1PbVJ2WTNWdFpXNTBTVVE5SW5odGNDNWthV1E2TWtVM01VSkdSa0pETmpkR01URkZOamszT0VSQk9VTkNRalkwTmpOR09UQWlMejRnUEM5eVpHWTZSR1Z6WTNKcGNIUnBiMjQrSUR3dmNtUm1PbEpFUmo0Z1BDOTRPbmh0Y0cxbGRHRStJRHcvZUhCaFkydGxkQ0JsYm1ROUluSWlQejQ3N0pYRkFBQUFZRkJNVkVYLy8vOEVWcUlYWmF2RzJPb3FjTEcyek9Pa3d0MEJTSnRxbGNYVjR1K2F1dGxXaGJ6azdQVUFNWTlIY3JLanROYnE4ZmVBbDhhQm9zeno5dnBkanNHR3F0RjNuOHVUc05TWnBjNkpzTlQ1K3YweFlLbnU4UGZmNS9MNDhmZy9mcmljekpnWUFBQURBRWxFUVZSNDJrUlVDWmJESUFqRlhaT1kxVGF0TmMzOWJ6a3NTWWMzcjRNRTRmTUJBYUQ2emw4eS85VE9nZXQ4ZDVqZk43OGJ3TS9kRENScFI1MjF6WGZvakhKMDVJSXloQkFVU1ZBT05kR3pCWXQyZjdLRnJma0phQWtIaDlGWmhjRFhIUmtUS285TUxpaEdhYXZJbW5WM3F5RVgwRXByZ3ovNER3VUQ3a0NIUm5kOFFGTjQzR280VVZtRERnemE0dzI3b2l6ZEEyK2NLK3V1VXBqam8yK3h3Yy80Mlc1MHg1TEdZZURCc1IwSFZJeDV4OGlGNjBDYmxiVEVFa0ZyMjdiTkRCVVZTcTFPS1ZQYkU2MmIzRUg4RnFCZzVPT09FdWMydDhaSmlxTU91R3ArY0tqZzd3VkdjZW96cU40cHhnVlBRa2pGWWdiVkpLRFVoRENqWXJhd1A1cTRFVGdDOWZJTVJIdGl0cFFjQ3ZKT0VMY2JNc1FnbmNpUmtsanB5UWp2RzQ0anFCVUVURmlCaTFQRUl5ZWtPenNXK1R5NWNMSG9zNVIrZE1TMUx0U1N4ZjNnUUhjelIyQ0k0Z01OcFc0SVJBMVFNYTZ0SjQrQzZ1SHVHRThtTkRJeUZxZy9PUC9NTVV1ZVM2SXE4UzkwZEFlQkpTRXkvcUtrSytCTnd6OGNZWTRqYjVKNnU0aVdDSTJCMVo1NkxXNWtFYzRoa2RNcHN2VUM1NTg1U1gwUXViY2dOcXlmZ0RGRWNUdCs0MC8wUzVOeDB3YUN3M09La2NPYkE1SW4wQVlwMDFwamp3Mm42MjZVRGp0SHdhMjhpSHVUS3F0cnYrcmVXNDFOWjZpR2xyN3V1TEpDZmtGdGN0Y0cwNHNnbTFlTlMrWmFEbnBhVEVyR295WDVKSzJpTXo4eHMwbk93V0djUERONDlxYUNkNGJ6Sm96RFptL2FCSytFb3pMdytYaE5CaVl3SGYwc2lPdTFYUGtHL3pLd3ZxWUtjZlN3REVjSC9vVWUwN2VzL1dROHJJeWcyRE9Yajh0amtaZHVEQi9iOGh6RGxsTU1PQ1M1QkVuZDUzNGY4dGkzVVpjNGtNczN4THlhZk1Tc0poZEc4WFBxak5rNXRBZ08yNWZlS0NoblZkRGovSjBGTWtPc1UveE1CdjB3RmhZZUVHZlZIMTNmdURVMHlERkxhNGZjN1JuV0hCZnVURlYydEVtTndhZGM3YWMzVVkyamZCbDdIVDM2ZmUzNGlRTzVtTkNGRkJXMDdLalBncWhPTFUwMXZaOFB1ZVoySkNsRlpOOGprVXM2OXVrYTllUHA2K0VmTDRBRjUrTnl3U2Jpckh0Y0I4TWwvZ2t3QUVqa0s2NEtqSFBlQUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzFfUFJFIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiJiNmVkZTI5YzM3NzI0MTJjOGE3ODUzOWMxZjRjNjJkMiIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOnRydWUsInVwIjp0cnVlLCJ1diI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlfSwicGluVXZBdXRoUHJvdG9jb2xzIjpbMV0sImZpcm13YXJlVmVyc2lvbiI6MX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDE4LTA5LTI5IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiRmVpdGlhbiBCaW9QYXNzIEZJRE8yIEF1dGhlbnRpY2F0b3IiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDE4MDkyOTAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4yIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjIifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMTgtMDktMjkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MX1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMS0wNy0zMSJ9LHsiYWFndWlkIjoiZWQwNDJhM2EtNGIyMi00NDU1LWJiNjktYTI2N2I2NTJhZTdlIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiJlZDA0MmEzYS00YjIyLTQ0NTUtYmI2OS1hMjY3YjY1MmFlN2UiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiU2VjdXJpdHkgS2V5IE5GQyBieSBZdWJpY28gLSBFbnRlcnByaXNlIEVkaXRpb24ifSwiZGVzY3JpcHRpb24iOiJTZWN1cml0eSBLZXkgTkZDIGJ5IFl1YmljbyAtIEVudGVycHJpc2UgRWRpdGlvbiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzYsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfSx7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsiZWQyNTUxOV9lZGRzYV9zaGE1MTJfcmF3Iiwic2VjcDM4NHIxX2VjZHNhX3NoYTM4NF9yYXciLCJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjYsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NiwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRFNEQ0NBakNnQXdJQkFnSVVVY21NWHpSSUZPZ0dUSzBUYjNnRXVaWVprQkl3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRRG01NTViV1k5V1crdE9ZMHJJV0hsZGgrYU5hbm9DWkNGaDdHazNZWnJRbVBVdzBoa1NHNnFZSFF0UCtmWnlTMzNWRXJ2ZytCUXFubXVtZ05oZnhGcmt3RVpFTGVpZEJjQzhDNEFnNG5xcWlQV3B6c3ZJMTdOY3hZbEluTE5MRmNaWS8rZ09pTjZaT1RpaE81L3ZCWk1iajlyaWFBY3FsaVltTkdKUGdUY01HYUVBeU16RU1OeTJubTZFcCtwalA1YUY2Z2kyMXQvVVFGc3VKMWoyUmoveW5NL1NkUnQrZWNhbDVPWW90eEhrRmJMOXZ2djJBMk92NUlUWkNsdzRiT1M5bnB5cFFpbU9aNVFBWXl0bVlhUXBXbC9wTVl6NnpTajhScWtWRE5FSkdxTmZUS0EyaXZMWXdYNmxTdHRNUGFwZzBKODRsOVgwdm9WTi9GcFM0VkNWQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJRZ0tGQWhHNlJhVytoVHk1MmR4ZVQ4YkM5Nkh6QWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQVlNemdMckpMSXIwT292UW5BWnJSSUd1YWJpSFNVS1NtYkxSV3BSa1dlQXRzQ2hERUhwWGNKL2JnRE5LWVdvSHFROHhSVWpCNEN5ZXBZZXZjM1lsckc4bzd6SHhwZlZjYW9MNVNldUprekh4S240YlRhU3A5K012d2FtbnA2NGtaTWlOYkZMa25mUDlrWUtvUkhrTVdoZVJKMVVzUDF6NFNjbWtDZUlMZnNNczZ2cW92cWpXQ2xGc0pwQmNzbHVZSFdGN2JCSjFuNFJ3ZytBVEVvcFk0SWdHdjZadndjK0E5citBVDJocXBvU2tZb0FsK0FOWXdnc2xPZjlzSmUwVitUQTlZWS9VbGFCbVBQVGQwLy9yOXd2Y2VQV1prUGpLb0FDL3pVTmhmRGJoNExWOEdIczNseVgyWG9tTC9MTmM4Sll6eUlhREVoR1F2ZW9QaGgvdHIxZz09IiwiTUlJRFBqQ0NBaWFnQXdJQkFnSVVYemVpRURKRU9UdDE0RjVuMG82WmYvYkJ3aVV3RFFZSktvWklodmNOQVFFTkJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNWjYvVHhNOHJJVCtFYW9Qdkc4MW9udE1Pby8ybVEyUkJ3SkhTMFFaY3hWYU5YdmwxMkxVaEJaNUxtaUJTY0laZDFSbngxb2Q1ODVoKy9kaEs3aEVtN0pBQUxrS0t0czFmTzUzS0dOTFp1ano1aDN3R25jcjRoeUtGMEc3NGIvVTNLOWhFNW1HTkQ2enFZY2hDUkFIZnJZTVlSREY0WUwwWDRENW5HZHh2cHBBeTZua0VtdFdtTW53TzNpMFRBdWNzcmJFNDg1SHZHTTRyMFZwZ1ZkSnB2Z1FqaVRKQ1RJcStEMzVod3RUOFFESXYrbkd2cGN5aTV3Y0lmQ2t6eUNpbUp1a2hZeTZLb3FOTUtRRWRwTmlTT3ZXeURNVE10MWJ3Q3ZFenB3OTF1K21zVXQ0cmowZWZuTzlzMFpPd2R3TVJEbkg0eGdVbDVaTHdyclBrZkMxLzBDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01COEdBMVVkSXdRWU1CYUFGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFNd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkRRVUFBNElCQVFDM0lXL3NnQjlwWjhhcEpOanh1R29YK0ZrSUxrczB3TU5yZFhML2NvVXZzcmh6c3ZsNm1lUE1yYkdKQnlKMVhucXVCNXNnY1JFTkZ4ZFFGbWEzbWlvOFVwZjFvd00xWnJlWHJKMG1BREcyQnBscWJKbnhpeVlhK1IxMXJlSUZUV2VJaE1OY1pLc0RackZBeVB1RmpDV1NRdkptTldlOW1GUllGZ05oWEpLa1hJYjVIMVhnRURsd2llZFlSTTdWb2xCTmxsZDZwUkZLbFg4dXN0Nk9UTU9lQURsMnhORjBtMUxUaFNkZXVYdkR5QzFnOStJTGZ6M1M2T0lZZ2MzaXJvUmNGRDM1NGc3cktmdTY3cUZBdzlnQzR5aTB4QlRQclk5NXJoNC9IcWFVWUNBL0w4bGRSazZIN1hrMzVEK1dWcG1xMlNoL3hUNUhpRnVoZjR3SmIwYksiLCJNSUlEU0RDQ0FqQ2dBd0lCQWdJVURxRVJ3KzRSbkdTZ2d4Z1Vld0pGRVBEUlozWXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFESTdYbkgrWnZEd01DUVU4TThaZVY1cXNjdWJsdlZZYWFSdDNZYmF4bjlnb2RMeDVzd0gwbFhyZGdqaDVoN0ZwVmdDZ1lZWDdFNGJsMXZielVMZW1yTVdUOE4zV01HVWU4UUFKYkJlaW9WN1cvRStoVFpQLzBTS0pWYTNld0tCbzZVTGVNbmZRWkRyVk9SQWs4d1RMcTJ2NUxsajV2TWo3SnRPb3RLYTlKN25IUzhrTG16WFhTYWowU3dFUGg1T0FaVVROVjR6czFidm9UQVFRV3JMNC9KOVF1S3Q2V0NGRTVuVU5pUlFjRWJWRjhtbHFLMmJ4Mno2b2tWbHR5RFZMQ3hZYnBVVEVMdlkxdXNSM0RUR1BVb0lDbE9tNGNycHduRFJMVkh2alllUEdCQi8vcEV5enhBL2djU2N4andhSDFaVXc5Ym5TYkh5dXJLcWJUYTFLdmpBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlRxdDBLUW5neDdaSHJiVkh3RHVueE9uOWloWVRBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBcVFhQ1dNeFRHcVZWWDdTazdra0ptVXVlVFNZS3VVNitLQkJTZ3dJUm5sdzlLN0hlMUlweFowaGR3cFBOaWtLam1jeUZnRlB6aEltd0hKZ3h4dVQ5MFB3M3ZZT2RjSkpOa3REZzM1UFhPZnpTbjE1Y0ZBeDFSTzBtUFRtSWI4ZFhpRVdPcHpvWHZkd1hETTQxWmFDRFlNVDd3NElRdE15dkU3eFVCWnEyYmp0QW5xL05EVUE3YmU0SDhIM2lwQysvK05LbFVyY1VoK2o0OEs2N1dJMHUxbTZGZVF1ZUJBN24wNmo4MjVycURxc2FMczlUYjdLQUhBdzhQbXJXYU5QRzJraktlcnhQRWZlY2l2bEZhd3AyUldadnhyVnRuM1RWMlNCeHlDSkNrWHNORDA1ZENFclZIU0pJcytCZHRUVk5ZOUF3dHlQbW55YjB2NG1TVHp2V2R3PT0iLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVRuYmJHSVIyTkh2enFJS0ZBZVF3RzFYQmlzMHdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFRWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPc1hqM2swNEJhbjRUWWR0WktxRC9PUEp4eUR5YVBtQ0JVRlVpYVpJZ1R0ZVpuajNYMjVEaGdwWlpYc0M0RDB5ZEljcmxBNndOVUluT1JML0w5ekJiVEVJTUFWTUdvNmc3VUtBbWIyTUY2QUhibmhZSmQ5ZWlrdXBWTldTaEhOWU5jNEdCZE8xWU42QWZVcXZKaEhiZTNWNFNOTVBtQlJFS0pQVno3VGh3Z21nZ1RlOFdzMkswL3dzcXYyd1NFN3BiQ0JzVVpoSVg1MWJaTTNwcUR3SlBUbVJGRXZ0MC82dEc1ZU84RjNqMTRPWHFmRWhtam4xVnZ4S0RZUU9MWkF4Q3d3Z0MwUDRDZGZXdjN5OFBTUjhJMzU0aE8xWStHek5qdklxWDM4TktMeXd1SVlIRmVyT3hObHhFTUJ2RmhZQnVSdVlBa2tnVWFQcU42VUJoc0lMcnNDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNDb1JIaGl5Tm5iblhSV0lMNlpCWG9CWDlZVE1COEdBMVVkSXdRWU1CYUFGQ0FvVUNFYnBGcGI2RlBMblozRjVQeHNMM29mTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFDUUZhZkpJMS81V2c5Q0VFaW1FMVJQNTRSZ1F3VE5UT09Rc0xBQ1RlK3JJdGxGUXpDOVpEaHJWODI4eVg3anp5K0FBc3AzaXpLN1QxdGgyZGw3bSt0dTBzdzJQYS9vbGMwMm50NlB5SXczNDhnYUh6aEkxKzBLRTQ1cXh2RkRlTDJsTXhiUGZDWXZ5RUVhWXpqaVFFTFU1OTUxcFhHV3lLTWEvNGZMdE8rWktPWGhNdVZlcTRyWERQSTU0VzZKSE9pQWFpS2Rpdys1ZTNjMmt0L2pGSVF0TTZ2TVhnOUxORnpkakVUTnQyMFZYOVFldlJwRlpmdWNNRzl3Q2FRRG9GbFB6cFRNSktoUGV2L2ltSm1aWWhLZnIwbExjZW10cWpJeExBb3FaZE9ZZkhCZzYrdkFjZFBJL2lhdUdwVUF2N1grVUtObUR3aloyQmFINHNMd2hCMm0iLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVIzOG1xMjZTZjJzelZWMkJkRzZXRU43a3VXVXdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFSWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFOWTBXYjlvUG9Sb0tvUXlXUGFKcHoxMXZyV1RnNnpUdG1OajJWb0tSbnl2S0dScXB6YjgzdzVsNllBOTZVWWtZQkRRUDBpbE8yRFBlNndXcVZSNXpEZlJ6ZGNIOGJoK0w3ZEdHdmFlNmhSVFpoa0ZrQ3BYRHM0SGNja25yRGY4RkNsSjdIZTM5SmY0Mi9HMVFtMnp6OVdXbXJQWHRnaUsveDA1R2pzUWZHdURHMXpmNVFUVVVpZThsd3ltSzNUZmRPdk5lZUpBQVBlMnBuN0l0ZlJiK3JWck5XaUR6bFJuMnZObloyd1BvNHdIL1dKNmRoWFpHK3JNV1QrYTZCb2NnMVVmSXc2a2R1bkc0YlRwWnpzdmFjRll5UjBtcGYrRGVPbnBTV0FteXdKV0h2VGxmMllYeEZ5ZVhjVEFDZFFsY01OR0oyVmhaUTQ4eHRQNS9SQlAvOGtDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNoeTQyb2tpcWNUUzFpcWEvSFJXamtCbjRIL01COEdBMVVkSXdRWU1CYUFGT3EzUXBDZURIdGtldHRVZkFPNmZFNmYyS0ZoTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBbitSSElQYnRNRUROZFQxZzhIL1JpdEFrVWRMZ0F0MXRXR1dubGo5a25idjQvNEdsWDdDOXA0NWVmUE85L2FaTDZPVjFYUktCaTZLbXRCVzVLN251WUVuTXgvNUJxQlNiTFQ3cmhkdUM0OVRCZU1iOVBIZFhzVGxTVk5ZZWZyMWRHaWRyNGoweFZCUUxiMXJrbkRBYmRXRHpLZnZuYXlLTzhGcndlN0h4ODQzTUcvckorYzBYcnVVdmJmVlRDSExpSVdoTTdvTkRoTDh4b2I2eFVvOUtMS2NTTCtJdFlzTzMvOVdiOFE5R2pzcUw0RlhzRGNHMVNhWWg3S3BmdU1tT2l4cXpKWk8ybklpY1BZUmcxSTJTdWlVZllPNzB0bWRIY2JsK2tTUW1TWXQ3cnE0dmlJTGcyR3gzajlySVR1V1RqYmFVYVNTUXhnT21NU0h1eXpNQUMiLCJNSUlEUnpDQ0FqR2dBd0lCQWdJVWV4OW5UOXZ3Wk5YUzQ4M0xkaVlHZncyU2pTb3dDd1lKS29aSWh2Y05BUUVMTUM0eExEQXFCZ05WQkFNTUkxbDFZbWxqYnlCQmRIUmxjM1JoZEdsdmJpQkpiblJsY20xbFpHbGhkR1VnUWlBeE1DQVhEVEkxTURnd01UQXdNREF3TUZvWUR6azVPVGt4TWpNeE1qTTFPVFU1V2pBbk1TVXdJd1lEVlFRRERCeFpkV0pwWTI4Z1JrbEVUeUJCZEhSbGMzUmhkR2x2YmlCQ01pQXhNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXUxTWV2bnk5ZHlPOVpVQzM5U29NaExjUi9EWHJ0Ri9jaU0xMnRjaXkyRVhBWjZNa3JpdlZ0Q2ZFVk05WDZJU1RFbkJQNnVTWVlvdjZwcHY2TzZKaDJOSG1ZbTR3K0puUzRWbkNQVTdtSEFNZlZJMk1HVFRNVk9ldzB4VXNHN3NJU0lrSURVQm11azhZSzljNXppYzkrdkZRR0xJa3NkWE81aVZGSWdORzUzY0dYRDRaTFpvQVBpdTBQRW96eEFxWUlhSTRneEtoT0EzUzgvVzhtSVdzdTZvZnlqNEd2a0ZHNlo3a3lGMzEwN1A3bXdGSExySTNFTmFQV01PRmNUYUdhMGR3Ky92VlJ3alJjRVpCVnN1dVQvODdja1NzMGE1cGt0M3ZaQmxhWWVUOHB6U3JlVjdtb3djSU05MEwyaWFBVGxQMG54bWFFNm5PeVRib2pGVmwyd0lEQVFBQm8yWXdaREFkQmdOVkhRNEVGZ1FVU1hFaDNzYTNidER1cm00TU0vQzdTMWxSdXVZd0h3WURWUjBqQkJnd0ZvQVU2cmRDa0o0TWUyUjYyMVI4QTdwOFRwL1lvV0V3RWdZRFZSMFRBUUgvQkFnd0JnRUIvd0lCQURBT0JnTlZIUThCQWY4RUJBTUNBWVl3Q3dZSktvWklodmNOQVFFTEE0SUJBUUI1R2MzaGFmdHA3aEtzRVpzbytpL1o1blJ1cWRtekcyV0NsVW9SVXFiYVB5Z2xuSkRqS1Iva2ZnT2w2aWJiRi96dGhtM0ttWFE3SGNESVAyeE1kRzdVMkwyaW1iSlFIcVBmL2gySHFvamI0clpndWUrNlc0a3RTUjVlbFI5TDFyWXFFL1NHWU00aUVLb1ZRU3Y3UlQxcnhJZVdpS3N3L1Z4eGkvUU9uc3gzRjd4ODBDQ1lnQjRFM3lReDhWVFc0NDBoVEV3VEExZU1IT2l4MzJ0UHR5eUhJYThQVlZJZlZwSFFKQmFNVnZ2NTA4VUVqd2tiVTJybmpmem9TVE5TOUE1alVROG1CU3ZlOTVyakIwZG85OEVVK0R4ZEJxWDIrSDZpNXdsSUNGZ3poZHpjc25lOWhHS1Q2bHpUWDRjSWRKc3JZMit4bGVLMEZGUXk2bEdFVkxFZSJdLCJpY29uIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwiaWNvbkRhcmsiOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJwcm92aWRlckxvZ29MaWdodCI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsInByb3ZpZGVyTG9nb0RhcmsiOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xX1BSRSIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsImxhcmdlQmxvYktleSIsImNyZWRCbG9iIiwibWluUGluTGVuZ3RoIl0sImFhZ3VpZCI6ImVkMDQyYTNhNGIyMjQ0NTViYjY5YTI2N2I2NTJhZTdlIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibGFyZ2VCbG9icyI6dHJ1ZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOnRydWUsImFsd2F5c1V2IjpmYWxzZX0sIm1heE1zZ1NpemUiOjE1MzYsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6OCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoxMjgsInRyYW5zcG9ydHMiOlsibmZjIiwidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN30seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTh9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi0zNX1dLCJtYXhTZXJpYWxpemVkTGFyZ2VCbG9iQXJyYXkiOjQwOTYsIm1pblBJTkxlbmd0aCI6NiwiZmlybXdhcmVWZXJzaW9uIjozMjk0NzYsIm1heENyZWRCbG9iTGVuZ3RoIjozMiwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjEsInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjoxMDB9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMi0yMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzYsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiU2VjdXJpdHkgS2V5IE5GQyBieSBZdWJpY28gLSBFbnRlcnByaXNlIEVkaXRpb24iLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI0MTIyMjAwOSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTEyLTIyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3Nn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wMS0xMCJ9LHsiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbImFjNGYwMzgzZDFlOWZhNmFmNTI0OWNmMTQ4Yzk2MWY2OGU2YzdmZDUiXSwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiYWM0ZjAzODNkMWU5ZmE2YWY1MjQ5Y2YxNDhjOTYxZjY4ZTZjN2ZkNSJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiWXViaUtleSA1IFNlcmllcyB3aXRoIExpZ2h0bmluZyAoQ29uc3VtZXIgUHJvZmlsZSkifSwiZGVzY3JpcHRpb24iOiJZdWJpS2V5IDUgU2VyaWVzIHdpdGggTGlnaHRuaW5nIChDb25zdW1lciBQcm9maWxlKSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk3MjgsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6Mn1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiLCJyZW1vdGVfaGFuZGxlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRFNqQ0NBaktnQXdJQkFnSVVSMzhtcTI2U2Yyc3pWVjJCZEc2V0VON2t1V1V3RFFZSktvWklodmNOQVFFTEJRQXdMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3SUJjTk1qUXhNakF4TURBd01EQXdXaGdQT1RrNU9URXlNekV5TXpVNU5UbGFNQ1l4SkRBaUJnTlZCQU1NRzFsMVltbGpieUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRUlnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTlkwV2I5b1BvUm9Lb1F5V1BhSnB6MTF2cldUZzZ6VHRtTmoyVm9LUm55dktHUnFwemI4M3c1bDZZQTk2VVlrWUJEUVAwaWxPMkRQZTZ3V3FWUjV6RGZSemRjSDhiaCtMN2RHR3ZhZTZoUlRaaGtGa0NwWERzNEhjY2tuckRmOEZDbEo3SGUzOUpmNDIvRzFRbTJ6ejlXV21yUFh0Z2lLL3gwNUdqc1FmR3VERzF6ZjVRVFVVaWU4bHd5bUszVGZkT3ZOZWVKQUFQZTJwbjdJdGZSYityVnJOV2lEemxSbjJ2Tm5aMndQbzR3SC9XSjZkaFhaRytyTVdUK2E2Qm9jZzFVZkl3NmtkdW5HNGJUcFp6c3ZhY0ZZeVIwbXBmK0RlT25wU1dBbXl3SldIdlRsZjJZWHhGeWVYY1RBQ2RRbGNNTkdKMlZoWlE0OHh0UDUvUkJQLzhrQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZDaHk0Mm9raXFjVFMxaXFhL0hSV2prQm40SC9NQjhHQTFVZEl3UVlNQmFBRk9xM1FwQ2VESHRrZXR0VWZBTzZmRTZmMktGaE1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQW4rUkhJUGJ0TUVETmRUMWc4SC9SaXRBa1VkTGdBdDF0V0dXbmxqOWtuYnY0LzRHbFg3QzlwNDVlZlBPOS9hWkw2T1YxWFJLQmk2S210Qlc1SzdudVlFbk14LzVCcUJTYkxUN3JoZHVDNDlUQmVNYjlQSGRYc1RsU1ZOWWVmcjFkR2lkcjRqMHhWQlFMYjFya25EQWJkV0R6S2Z2bmF5S084RnJ3ZTdIeDg0M01HL3JKK2MwWHJ1VXZiZlZUQ0hMaUlXaE03b05EaEw4eG9iNnhVbzlLTEtjU0wrSXRZc08zLzlXYjhROUdqc3FMNEZYc0RjRzFTYVloN0twZnVNbU9peHF6SlpPMm5JaWNQWVJnMUkyU3VpVWZZTzcwdG1kSGNibCtrU1FtU1l0N3JxNHZpSUxnMkd4M2o5cklUdVdUamJhVWFTU1F4Z09tTVNIdXl6TUFDIiwiTUlJRFBqQ0NBaWFnQXdJQkFnSVVYemVpRURKRU9UdDE0RjVuMG82WmYvYkJ3aVV3RFFZSktvWklodmNOQVFFTkJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNWjYvVHhNOHJJVCtFYW9Qdkc4MW9udE1Pby8ybVEyUkJ3SkhTMFFaY3hWYU5YdmwxMkxVaEJaNUxtaUJTY0laZDFSbngxb2Q1ODVoKy9kaEs3aEVtN0pBQUxrS0t0czFmTzUzS0dOTFp1ano1aDN3R25jcjRoeUtGMEc3NGIvVTNLOWhFNW1HTkQ2enFZY2hDUkFIZnJZTVlSREY0WUwwWDRENW5HZHh2cHBBeTZua0VtdFdtTW53TzNpMFRBdWNzcmJFNDg1SHZHTTRyMFZwZ1ZkSnB2Z1FqaVRKQ1RJcStEMzVod3RUOFFESXYrbkd2cGN5aTV3Y0lmQ2t6eUNpbUp1a2hZeTZLb3FOTUtRRWRwTmlTT3ZXeURNVE10MWJ3Q3ZFenB3OTF1K21zVXQ0cmowZWZuTzlzMFpPd2R3TVJEbkg0eGdVbDVaTHdyclBrZkMxLzBDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01COEdBMVVkSXdRWU1CYUFGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFNd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkRRVUFBNElCQVFDM0lXL3NnQjlwWjhhcEpOanh1R29YK0ZrSUxrczB3TU5yZFhML2NvVXZzcmh6c3ZsNm1lUE1yYkdKQnlKMVhucXVCNXNnY1JFTkZ4ZFFGbWEzbWlvOFVwZjFvd00xWnJlWHJKMG1BREcyQnBscWJKbnhpeVlhK1IxMXJlSUZUV2VJaE1OY1pLc0RackZBeVB1RmpDV1NRdkptTldlOW1GUllGZ05oWEpLa1hJYjVIMVhnRURsd2llZFlSTTdWb2xCTmxsZDZwUkZLbFg4dXN0Nk9UTU9lQURsMnhORjBtMUxUaFNkZXVYdkR5QzFnOStJTGZ6M1M2T0lZZ2MzaXJvUmNGRDM1NGc3cktmdTY3cUZBdzlnQzR5aTB4QlRQclk5NXJoNC9IcWFVWUNBL0w4bGRSazZIN1hrMzVEK1dWcG1xMlNoL3hUNUhpRnVoZjR3SmIwYksiLCJNSUlEU0RDQ0FqQ2dBd0lCQWdJVURxRVJ3KzRSbkdTZ2d4Z1Vld0pGRVBEUlozWXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFESTdYbkgrWnZEd01DUVU4TThaZVY1cXNjdWJsdlZZYWFSdDNZYmF4bjlnb2RMeDVzd0gwbFhyZGdqaDVoN0ZwVmdDZ1lZWDdFNGJsMXZielVMZW1yTVdUOE4zV01HVWU4UUFKYkJlaW9WN1cvRStoVFpQLzBTS0pWYTNld0tCbzZVTGVNbmZRWkRyVk9SQWs4d1RMcTJ2NUxsajV2TWo3SnRPb3RLYTlKN25IUzhrTG16WFhTYWowU3dFUGg1T0FaVVROVjR6czFidm9UQVFRV3JMNC9KOVF1S3Q2V0NGRTVuVU5pUlFjRWJWRjhtbHFLMmJ4Mno2b2tWbHR5RFZMQ3hZYnBVVEVMdlkxdXNSM0RUR1BVb0lDbE9tNGNycHduRFJMVkh2alllUEdCQi8vcEV5enhBL2djU2N4andhSDFaVXc5Ym5TYkh5dXJLcWJUYTFLdmpBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlRxdDBLUW5neDdaSHJiVkh3RHVueE9uOWloWVRBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBcVFhQ1dNeFRHcVZWWDdTazdra0ptVXVlVFNZS3VVNitLQkJTZ3dJUm5sdzlLN0hlMUlweFowaGR3cFBOaWtLam1jeUZnRlB6aEltd0hKZ3h4dVQ5MFB3M3ZZT2RjSkpOa3REZzM1UFhPZnpTbjE1Y0ZBeDFSTzBtUFRtSWI4ZFhpRVdPcHpvWHZkd1hETTQxWmFDRFlNVDd3NElRdE15dkU3eFVCWnEyYmp0QW5xL05EVUE3YmU0SDhIM2lwQysvK05LbFVyY1VoK2o0OEs2N1dJMHUxbTZGZVF1ZUJBN24wNmo4MjVycURxc2FMczlUYjdLQUhBdzhQbXJXYU5QRzJraktlcnhQRWZlY2l2bEZhd3AyUldadnhyVnRuM1RWMlNCeHlDSkNrWHNORDA1ZENFclZIU0pJcytCZHRUVk5ZOUF3dHlQbW55YjB2NG1TVHp2V2R3PT0iLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVRuYmJHSVIyTkh2enFJS0ZBZVF3RzFYQmlzMHdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFRWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPc1hqM2swNEJhbjRUWWR0WktxRC9PUEp4eUR5YVBtQ0JVRlVpYVpJZ1R0ZVpuajNYMjVEaGdwWlpYc0M0RDB5ZEljcmxBNndOVUluT1JML0w5ekJiVEVJTUFWTUdvNmc3VUtBbWIyTUY2QUhibmhZSmQ5ZWlrdXBWTldTaEhOWU5jNEdCZE8xWU42QWZVcXZKaEhiZTNWNFNOTVBtQlJFS0pQVno3VGh3Z21nZ1RlOFdzMkswL3dzcXYyd1NFN3BiQ0JzVVpoSVg1MWJaTTNwcUR3SlBUbVJGRXZ0MC82dEc1ZU84RjNqMTRPWHFmRWhtam4xVnZ4S0RZUU9MWkF4Q3d3Z0MwUDRDZGZXdjN5OFBTUjhJMzU0aE8xWStHek5qdklxWDM4TktMeXd1SVlIRmVyT3hObHhFTUJ2RmhZQnVSdVlBa2tnVWFQcU42VUJoc0lMcnNDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNDb1JIaGl5Tm5iblhSV0lMNlpCWG9CWDlZVE1COEdBMVVkSXdRWU1CYUFGQ0FvVUNFYnBGcGI2RlBMblozRjVQeHNMM29mTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFDUUZhZkpJMS81V2c5Q0VFaW1FMVJQNTRSZ1F3VE5UT09Rc0xBQ1RlK3JJdGxGUXpDOVpEaHJWODI4eVg3anp5K0FBc3AzaXpLN1QxdGgyZGw3bSt0dTBzdzJQYS9vbGMwMm50NlB5SXczNDhnYUh6aEkxKzBLRTQ1cXh2RkRlTDJsTXhiUGZDWXZ5RUVhWXpqaVFFTFU1OTUxcFhHV3lLTWEvNGZMdE8rWktPWGhNdVZlcTRyWERQSTU0VzZKSE9pQWFpS2Rpdys1ZTNjMmt0L2pGSVF0TTZ2TVhnOUxORnpkakVUTnQyMFZYOVFldlJwRlpmdWNNRzl3Q2FRRG9GbFB6cFRNSktoUGV2L2ltSm1aWWhLZnIwbExjZW10cWpJeExBb3FaZE9ZZkhCZzYrdkFjZFBJL2lhdUdwVUF2N1grVUtObUR3aloyQmFINHNMd2hCMm0iLCJNSUlEU0RDQ0FqQ2dBd0lCQWdJVVVjbU1YelJJRk9nR1RLMFRiM2dFdVpZWmtCSXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFEbTU1NWJXWTlXVyt0T1kwcklXSGxkaCthTmFub0NaQ0ZoN0drM1laclFtUFV3MGhrU0c2cVlIUXRQK2ZaeVMzM1ZFcnZnK0JRcW5tdW1nTmhmeEZya3dFWkVMZWlkQmNDOEM0QWc0bnFxaVBXcHpzdkkxN05jeFlsSW5MTkxGY1pZLytnT2lONlpPVGloTzUvdkJaTWJqOXJpYUFjcWxpWW1OR0pQZ1RjTUdhRUF5TXpFTU55Mm5tNkVwK3BqUDVhRjZnaTIxdC9VUUZzdUoxajJSai95bk0vU2RSdCtlY2FsNU9Zb3R4SGtGYkw5dnZ2MkEyT3Y1SVRaQ2x3NGJPUzlucHlwUWltT1o1UUFZeXRtWWFRcFdsL3BNWXo2elNqOFJxa1ZETkVKR3FOZlRLQTJpdkxZd1g2bFN0dE1QYXBnMEo4NGw5WDB2b1ZOL0ZwUzRWQ1ZBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlFnS0ZBaEc2UmFXK2hUeTUyZHhlVDhiQzk2SHpBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBWU16Z0xySkxJcjBPb3ZRbkFaclJJR3VhYmlIU1VLU21iTFJXcFJrV2VBdHNDaERFSHBYY0ovYmdETktZV29IcVE4eFJVakI0Q3llcFlldmMzWWxyRzhvN3pIeHBmVmNhb0w1U2V1Smt6SHhLbjRiVGFTcDkrTXZ3YW1ucDY0a1pNaU5iRkxrbmZQOWtZS29SSGtNV2hlUkoxVXNQMXo0U2Nta0NlSUxmc01zNnZxb3ZxaldDbEZzSnBCY3NsdVlIV0Y3YkJKMW40UndnK0FURW9wWTRJZ0d2Nlp2d2MrQTlyK0FUMmhxcG9Ta1lvQWwrQU5Zd2dzbE9mOXNKZTBWK1RBOVlZL1VsYUJtUFBUZDAvL3I5d3ZjZVBXWmtQaktvQUMvelVOaGZEYmg0TFY4R0hzM2x5WDJYb21ML0xOYzhKWXp5SWFERWhHUXZlb1BoaC90cjFnPT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsImljb25EYXJrIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwicHJvdmlkZXJMb2dvTGlnaHQiOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJwcm92aWRlckxvZ29EYXJrIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09In0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjYtMDQtMjUiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NzI4LCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ill1YmlLZXkgNSBTZXJpZXMgd2l0aCBMaWdodG5pbmcgKENvbnN1bWVyIFByb2ZpbGUpIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVMkYxMDAwMjAyNjA0MjUwMTEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblByb2ZpbGVzIjpbImNvbnN1bWVyIl0sImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjYtMDQtMjUiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NzI4fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI2LTA1LTAxIn0seyJhYWd1aWQiOiJiMmMxYTUwYi1kYWQ4LTRkYzctYmE0ZC0wY2U5NTk3OTA0YmMiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6ImIyYzFhNTBiLWRhZDgtNGRjNy1iYTRkLTBjZTk1OTc5MDRiYyIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IDUgU2VyaWVzIHdpdGggTkZDIC0gRW5oYW5jZWQgUElOIChFbnRlcnByaXNlIFByb2ZpbGUpIn0sImRlc2NyaXB0aW9uIjoiWXViaUtleSA1IFNlcmllcyB3aXRoIE5GQyAtIEVuaGFuY2VkIFBJTiAoRW50ZXJwcmlzZSBQcm9maWxlKSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzYsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfSx7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsiZWQyNTUxOV9lZGRzYV9zaGE1MTJfcmF3Iiwic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciLCJzZWNwMzg0cjFfZWNkc2Ffc2hhMzg0X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NiwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo2LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRFBqQ0NBaWFnQXdJQkFnSVVYemVpRURKRU9UdDE0RjVuMG82WmYvYkJ3aVV3RFFZSktvWklodmNOQVFFTkJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNWjYvVHhNOHJJVCtFYW9Qdkc4MW9udE1Pby8ybVEyUkJ3SkhTMFFaY3hWYU5YdmwxMkxVaEJaNUxtaUJTY0laZDFSbngxb2Q1ODVoKy9kaEs3aEVtN0pBQUxrS0t0czFmTzUzS0dOTFp1ano1aDN3R25jcjRoeUtGMEc3NGIvVTNLOWhFNW1HTkQ2enFZY2hDUkFIZnJZTVlSREY0WUwwWDRENW5HZHh2cHBBeTZua0VtdFdtTW53TzNpMFRBdWNzcmJFNDg1SHZHTTRyMFZwZ1ZkSnB2Z1FqaVRKQ1RJcStEMzVod3RUOFFESXYrbkd2cGN5aTV3Y0lmQ2t6eUNpbUp1a2hZeTZLb3FOTUtRRWRwTmlTT3ZXeURNVE10MWJ3Q3ZFenB3OTF1K21zVXQ0cmowZWZuTzlzMFpPd2R3TVJEbkg0eGdVbDVaTHdyclBrZkMxLzBDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01COEdBMVVkSXdRWU1CYUFGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFNd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkRRVUFBNElCQVFDM0lXL3NnQjlwWjhhcEpOanh1R29YK0ZrSUxrczB3TU5yZFhML2NvVXZzcmh6c3ZsNm1lUE1yYkdKQnlKMVhucXVCNXNnY1JFTkZ4ZFFGbWEzbWlvOFVwZjFvd00xWnJlWHJKMG1BREcyQnBscWJKbnhpeVlhK1IxMXJlSUZUV2VJaE1OY1pLc0RackZBeVB1RmpDV1NRdkptTldlOW1GUllGZ05oWEpLa1hJYjVIMVhnRURsd2llZFlSTTdWb2xCTmxsZDZwUkZLbFg4dXN0Nk9UTU9lQURsMnhORjBtMUxUaFNkZXVYdkR5QzFnOStJTGZ6M1M2T0lZZ2MzaXJvUmNGRDM1NGc3cktmdTY3cUZBdzlnQzR5aTB4QlRQclk5NXJoNC9IcWFVWUNBL0w4bGRSazZIN1hrMzVEK1dWcG1xMlNoL3hUNUhpRnVoZjR3SmIwYksiLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVIzOG1xMjZTZjJzelZWMkJkRzZXRU43a3VXVXdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFSWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFOWTBXYjlvUG9Sb0tvUXlXUGFKcHoxMXZyV1RnNnpUdG1OajJWb0tSbnl2S0dScXB6YjgzdzVsNllBOTZVWWtZQkRRUDBpbE8yRFBlNndXcVZSNXpEZlJ6ZGNIOGJoK0w3ZEdHdmFlNmhSVFpoa0ZrQ3BYRHM0SGNja25yRGY4RkNsSjdIZTM5SmY0Mi9HMVFtMnp6OVdXbXJQWHRnaUsveDA1R2pzUWZHdURHMXpmNVFUVVVpZThsd3ltSzNUZmRPdk5lZUpBQVBlMnBuN0l0ZlJiK3JWck5XaUR6bFJuMnZObloyd1BvNHdIL1dKNmRoWFpHK3JNV1QrYTZCb2NnMVVmSXc2a2R1bkc0YlRwWnpzdmFjRll5UjBtcGYrRGVPbnBTV0FteXdKV0h2VGxmMllYeEZ5ZVhjVEFDZFFsY01OR0oyVmhaUTQ4eHRQNS9SQlAvOGtDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNoeTQyb2tpcWNUUzFpcWEvSFJXamtCbjRIL01COEdBMVVkSXdRWU1CYUFGT3EzUXBDZURIdGtldHRVZkFPNmZFNmYyS0ZoTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBbitSSElQYnRNRUROZFQxZzhIL1JpdEFrVWRMZ0F0MXRXR1dubGo5a25idjQvNEdsWDdDOXA0NWVmUE85L2FaTDZPVjFYUktCaTZLbXRCVzVLN251WUVuTXgvNUJxQlNiTFQ3cmhkdUM0OVRCZU1iOVBIZFhzVGxTVk5ZZWZyMWRHaWRyNGoweFZCUUxiMXJrbkRBYmRXRHpLZnZuYXlLTzhGcndlN0h4ODQzTUcvckorYzBYcnVVdmJmVlRDSExpSVdoTTdvTkRoTDh4b2I2eFVvOUtMS2NTTCtJdFlzTzMvOVdiOFE5R2pzcUw0RlhzRGNHMVNhWWg3S3BmdU1tT2l4cXpKWk8ybklpY1BZUmcxSTJTdWlVZllPNzB0bWRIY2JsK2tTUW1TWXQ3cnE0dmlJTGcyR3gzajlySVR1V1RqYmFVYVNTUXhnT21NU0h1eXpNQUMiLCJNSUlEUnpDQ0FqR2dBd0lCQWdJVWV4OW5UOXZ3Wk5YUzQ4M0xkaVlHZncyU2pTb3dDd1lKS29aSWh2Y05BUUVMTUM0eExEQXFCZ05WQkFNTUkxbDFZbWxqYnlCQmRIUmxjM1JoZEdsdmJpQkpiblJsY20xbFpHbGhkR1VnUWlBeE1DQVhEVEkxTURnd01UQXdNREF3TUZvWUR6azVPVGt4TWpNeE1qTTFPVFU1V2pBbk1TVXdJd1lEVlFRRERCeFpkV0pwWTI4Z1JrbEVUeUJCZEhSbGMzUmhkR2x2YmlCQ01pQXhNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXUxTWV2bnk5ZHlPOVpVQzM5U29NaExjUi9EWHJ0Ri9jaU0xMnRjaXkyRVhBWjZNa3JpdlZ0Q2ZFVk05WDZJU1RFbkJQNnVTWVlvdjZwcHY2TzZKaDJOSG1ZbTR3K0puUzRWbkNQVTdtSEFNZlZJMk1HVFRNVk9ldzB4VXNHN3NJU0lrSURVQm11azhZSzljNXppYzkrdkZRR0xJa3NkWE81aVZGSWdORzUzY0dYRDRaTFpvQVBpdTBQRW96eEFxWUlhSTRneEtoT0EzUzgvVzhtSVdzdTZvZnlqNEd2a0ZHNlo3a3lGMzEwN1A3bXdGSExySTNFTmFQV01PRmNUYUdhMGR3Ky92VlJ3alJjRVpCVnN1dVQvODdja1NzMGE1cGt0M3ZaQmxhWWVUOHB6U3JlVjdtb3djSU05MEwyaWFBVGxQMG54bWFFNm5PeVRib2pGVmwyd0lEQVFBQm8yWXdaREFkQmdOVkhRNEVGZ1FVU1hFaDNzYTNidER1cm00TU0vQzdTMWxSdXVZd0h3WURWUjBqQkJnd0ZvQVU2cmRDa0o0TWUyUjYyMVI4QTdwOFRwL1lvV0V3RWdZRFZSMFRBUUgvQkFnd0JnRUIvd0lCQURBT0JnTlZIUThCQWY4RUJBTUNBWVl3Q3dZSktvWklodmNOQVFFTEE0SUJBUUI1R2MzaGFmdHA3aEtzRVpzbytpL1o1blJ1cWRtekcyV0NsVW9SVXFiYVB5Z2xuSkRqS1Iva2ZnT2w2aWJiRi96dGhtM0ttWFE3SGNESVAyeE1kRzdVMkwyaW1iSlFIcVBmL2gySHFvamI0clpndWUrNlc0a3RTUjVlbFI5TDFyWXFFL1NHWU00aUVLb1ZRU3Y3UlQxcnhJZVdpS3N3L1Z4eGkvUU9uc3gzRjd4ODBDQ1lnQjRFM3lReDhWVFc0NDBoVEV3VEExZU1IT2l4MzJ0UHR5eUhJYThQVlZJZlZwSFFKQmFNVnZ2NTA4VUVqd2tiVTJybmpmem9TVE5TOUE1alVROG1CU3ZlOTVyakIwZG85OEVVK0R4ZEJxWDIrSDZpNXdsSUNGZ3poZHpjc25lOWhHS1Q2bHpUWDRjSWRKc3JZMit4bGVLMEZGUXk2bEdFVkxFZSIsIk1JSURTRENDQWpDZ0F3SUJBZ0lVVWNtTVh6UklGT2dHVEswVGIzZ0V1Wllaa0JJd0RRWUpLb1pJaHZjTkFRRUxCUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JCSURFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURtNTU1YldZOVdXK3RPWTBySVdIbGRoK2FOYW5vQ1pDRmg3R2szWVpyUW1QVXcwaGtTRzZxWUhRdFArZlp5UzMzVkVydmcrQlFxbm11bWdOaGZ4RnJrd0VaRUxlaWRCY0M4QzRBZzRucXFpUFdwenN2STE3TmN4WWxJbkxOTEZjWlkvK2dPaU42Wk9UaWhPNS92QlpNYmo5cmlhQWNxbGlZbU5HSlBnVGNNR2FFQXlNekVNTnkybm02RXArcGpQNWFGNmdpMjF0L1VRRnN1SjFqMlJqL3luTS9TZFJ0K2VjYWw1T1lvdHhIa0ZiTDl2dnYyQTJPdjVJVFpDbHc0Yk9TOW5weXBRaW1PWjVRQVl5dG1ZYVFwV2wvcE1ZejZ6U2o4UnFrVkRORUpHcU5mVEtBMml2TFl3WDZsU3R0TVBhcGcwSjg0bDlYMHZvVk4vRnBTNFZDVkFnTUJBQUdqWmpCa01CMEdBMVVkRGdRV0JCUWdLRkFoRzZSYVcraFR5NTJkeGVUOGJDOTZIekFmQmdOVkhTTUVHREFXZ0JUUzd1OWFJbzA2YlZ3amx6M3loZFVtOFNWN2tqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQTRHQTFVZER3RUIvd1FFQXdJQmhqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFZTXpnTHJKTElyME9vdlFuQVpyUklHdWFiaUhTVUtTbWJMUldwUmtXZUF0c0NoREVIcFhjSi9iZ0ROS1lXb0hxUTh4UlVqQjRDeWVwWWV2YzNZbHJHOG83ekh4cGZWY2FvTDVTZXVKa3pIeEtuNGJUYVNwOStNdndhbW5wNjRrWk1pTmJGTGtuZlA5a1lLb1JIa01XaGVSSjFVc1AxejRTY21rQ2VJTGZzTXM2dnFvdnFqV0NsRnNKcEJjc2x1WUhXRjdiQkoxbjRSd2crQVRFb3BZNElnR3Y2WnZ3YytBOXIrQVQyaHFwb1NrWW9BbCtBTll3Z3NsT2Y5c0plMFYrVEE5WVkvVWxhQm1QUFRkMC8vcjl3dmNlUFdaa1BqS29BQy96VU5oZkRiaDRMVjhHSHMzbHlYMlhvbUwvTE5jOEpZenlJYURFaEdRdmVvUGhoL3RyMWc9PSIsIk1JSURTakNDQWpLZ0F3SUJBZ0lVVG5iYkdJUjJOSHZ6cUlLRkFlUXdHMVhCaXMwd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JCSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVFZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU9zWGozazA0QmFuNFRZZHRaS3FEL09QSnh5RHlhUG1DQlVGVWlhWklnVHRlWm5qM1gyNURoZ3BaWlhzQzREMHlkSWNybEE2d05VSW5PUkwvTDl6QmJURUlNQVZNR282ZzdVS0FtYjJNRjZBSGJuaFlKZDllaWt1cFZOV1NoSE5ZTmM0R0JkTzFZTjZBZlVxdkpoSGJlM1Y0U05NUG1CUkVLSlBWejdUaHdnbWdnVGU4V3MySzAvd3NxdjJ3U0U3cGJDQnNVWmhJWDUxYlpNM3BxRHdKUFRtUkZFdnQwLzZ0RzVlTzhGM2oxNE9YcWZFaG1qbjFWdnhLRFlRT0xaQXhDd3dnQzBQNENkZld2M3k4UFNSOEkzNTRoTzFZK0d6Tmp2SXFYMzhOS0x5d3VJWUhGZXJPeE5seEVNQnZGaFlCdVJ1WUFra2dVYVBxTjZVQmhzSUxyc0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ0NvUkhoaXlObmJuWFJXSUw2WkJYb0JYOVlUTUI4R0ExVWRJd1FZTUJhQUZDQW9VQ0VicEZwYjZGUExuWjNGNVB4c0wzb2ZNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUNRRmFmSkkxLzVXZzlDRUVpbUUxUlA1NFJnUXdUTlRPT1FzTEFDVGUrckl0bEZRekM5WkRoclY4Mjh5WDdqenkrQUFzcDNpeks3VDF0aDJkbDdtK3R1MHN3MlBhL29sYzAybnQ2UHlJdzM0OGdhSHpoSTErMEtFNDVxeHZGRGVMMmxNeGJQZkNZdnlFRWFZemppUUVMVTU5NTFwWEdXeUtNYS80Zkx0TytaS09YaE11VmVxNHJYRFBJNTRXNkpIT2lBYWlLZGl3KzVlM2Mya3QvakZJUXRNNnZNWGc5TE5GemRqRVROdDIwVlg5UWV2UnBGWmZ1Y01HOXdDYVFEb0ZsUHpwVE1KS2hQZXYvaW1KbVpZaEtmcjBsTGNlbXRxakl4TEFvcVpkT1lmSEJnNit2QWNkUEkvaWF1R3BVQXY3WCtVS05tRHdqWjJCYUg0c0x3aEIybSIsIk1JSURTRENDQWpDZ0F3SUJBZ0lVRHFFUncrNFJuR1NnZ3hnVWV3SkZFUERSWjNZd0RRWUpLb1pJaHZjTkFRRUxCUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURJN1huSCtadkR3TUNRVThNOFplVjVxc2N1Ymx2VllhYVJ0M1liYXhuOWdvZEx4NXN3SDBsWHJkZ2poNWg3RnBWZ0NnWVlYN0U0YmwxdmJ6VUxlbXJNV1Q4TjNXTUdVZThRQUpiQmVpb1Y3Vy9FK2hUWlAvMFNLSlZhM2V3S0JvNlVMZU1uZlFaRHJWT1JBazh3VExxMnY1TGxqNXZNajdKdE9vdEthOUo3bkhTOGtMbXpYWFNhajBTd0VQaDVPQVpVVE5WNHpzMWJ2b1RBUVFXckw0L0o5UXVLdDZXQ0ZFNW5VTmlSUWNFYlZGOG1scUsyYngyejZva1ZsdHlEVkxDeFlicFVURUx2WTF1c1IzRFRHUFVvSUNsT200Y3Jwd25EUkxWSHZqWWVQR0JCLy9wRXl6eEEvZ2NTY3hqd2FIMVpVdzliblNiSHl1cktxYlRhMUt2akFnTUJBQUdqWmpCa01CMEdBMVVkRGdRV0JCVHF0MEtRbmd4N1pIcmJWSHdEdW54T245aWhZVEFmQmdOVkhTTUVHREFXZ0JUUzd1OWFJbzA2YlZ3amx6M3loZFVtOFNWN2tqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQTRHQTFVZER3RUIvd1FFQXdJQmhqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFxUWFDV014VEdxVlZYN1NrN2trSm1VdWVUU1lLdVU2K0tCQlNnd0lSbmx3OUs3SGUxSXB4WjBoZHdwUE5pa0tqbWN5RmdGUHpoSW13SEpneHh1VDkwUHczdllPZGNKSk5rdERnMzVQWE9melNuMTVjRkF4MVJPMG1QVG1JYjhkWGlFV09wem9YdmR3WERNNDFaYUNEWU1UN3c0SVF0TXl2RTd4VUJacTJianRBbnEvTkRVQTdiZTRIOEgzaXBDKy8rTktsVXJjVWgrajQ4SzY3V0kwdTFtNkZlUXVlQkE3bjA2ajgyNXJxRHFzYUxzOVRiN0tBSEF3OFBtcldhTlBHMmtqS2VyeFBFZmVjaXZsRmF3cDJSV1p2eHJWdG4zVFYyU0J4eUNKQ2tYc05EMDVkQ0VyVkhTSklzK0JkdFRWTlk5QXd0eVBtbnliMHY0bVNUenZXZHc9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwiaWNvbkRhcmsiOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJwcm92aWRlckxvZ29MaWdodCI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsInByb3ZpZGVyTG9nb0RhcmsiOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xX1BSRSIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsImxhcmdlQmxvYktleSIsImNyZWRCbG9iIiwibWluUGluTGVuZ3RoIl0sImFhZ3VpZCI6ImIyYzFhNTBiZGFkODRkYzdiYTRkMGNlOTU5NzkwNGJjIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibGFyZ2VCbG9icyI6dHJ1ZSwiZXAiOmZhbHNlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6dHJ1ZSwiYWx3YXlzVXYiOnRydWV9LCJtYXhNc2dTaXplIjoxNTM2LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjgsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4LCJ0cmFuc3BvcnRzIjpbIm5mYyIsInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi04fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotMzV9XSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5Ijo0MDk2LCJtaW5QSU5MZW5ndGgiOjYsImZpcm13YXJlVmVyc2lvbiI6MzI5NDc2LCJtYXhDcmVkQmxvYkxlbmd0aCI6MzIsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjoxLCJyZW1haW5pbmdEaXNjb3ZlcmFibGVDcmVkZW50aWFscyI6MTAwfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDYtMjEiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2LCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ill1YmlLZXkgNSBTZXJpZXMgd2l0aCBORkMgLSBFbmhhbmNlZCBQSU4gKEVudGVycHJpc2UgUHJvZmlsZSkiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI1MDYyMTAwMiIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTA2LTIxIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3Nn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wNi0xOSJ9LHsiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbImZmZjk0MGQzNTc5YmM0NDA0MDU1NzQ3YjM2NzBkNDNhMWU5N2QwNTQiXSwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiZmZmOTQwZDM1NzliYzQ0MDQwNTU3NDdiMzY3MGQ0M2ExZTk3ZDA1NCJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiQmx1aW5rIEtleSBVMkYgQXV0aGVudGljYXRvciJ9LCJkZXNjcmlwdGlvbiI6IkJsdWluayBLZXkgVTJGIEF1dGhlbnRpY2F0b3IiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MiwicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVsZXNzIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDelRDQ0FuT2dBd0lCQWdJSkFNK2ExMlZ6bkN0R01Ba0dCeXFHU000OUJBRXdlekVMTUFrR0ExVUVCaE1DUTBFeEVEQU9CZ05WQkFnVEIwOXVkR0Z5YVc4eER6QU5CZ05WQkFjVEJrOTBkR0YzWVRFVE1CRUdBMVVFQ2hNS1FteDFhVzVySUV4MFpERVRNQkVHQTFVRUF4TUtRbXgxYVc1cklFdGxlVEVmTUIwR0NTcUdTSWIzRFFFSkFSWVFiR2hoYldsa1FHSnNkV2x1YXk1allUQWVGdzB4TnpBMU1URXhORFEzTlRkYUZ3MHlNREExTVRBeE5EUTNOVGRhTUhzeEN6QUpCZ05WQkFZVEFrTkJNUkF3RGdZRFZRUUlFd2RQYm5SaGNtbHZNUTh3RFFZRFZRUUhFd1pQZEhSaGQyRXhFekFSQmdOVkJBb1RDa0pzZFdsdWF5Qk1kR1F4RXpBUkJnTlZCQU1UQ2tKc2RXbHVheUJMWlhreEh6QWRCZ2txaGtpRzl3MEJDUUVXRUd4b1lXMXBaRUJpYkhWcGJtc3VZMkV3V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVRtQkFJQ1NMYm5SQWZtYWdiN0dMc0RKUWtIUFM0czI2RDhyTndpZ3RHOWhVYy9uQzZkeDFNejI3ZmFobnhrbXU3cTVURHdzWnI3Wlo2UGdBc1dVWnZZbzRIZ01JSGRNQjBHQTFVZERnUVdCQlQvK1VEVFY1dkVRRUJWZEhzMmNOUTZIcGZRVkRDQnJRWURWUjBqQklHbE1JR2lnQlQvK1VEVFY1dkVRRUJWZEhzMmNOUTZIcGZRVktGL3BIMHdlekVMTUFrR0ExVUVCaE1DUTBFeEVEQU9CZ05WQkFnVEIwOXVkR0Z5YVc4eER6QU5CZ05WQkFjVEJrOTBkR0YzWVRFVE1CRUdBMVVFQ2hNS1FteDFhVzVySUV4MFpERVRNQkVHQTFVRUF4TUtRbXgxYVc1cklFdGxlVEVmTUIwR0NTcUdTSWIzRFFFSkFSWVFiR2hoYldsa1FHSnNkV2x1YXk1allZSUpBTSthMTJWem5DdEdNQXdHQTFVZEV3UUZNQU1CQWY4d0NRWUhLb1pJemowRUFRTkpBREJHQWlFQTVnZjQxelFKQ2hjRFpmRXBqMHhTcGJndlhVeUxwaDJTdFJFekVLZDNSeGtDSVFDNmlTbWpLQ0srT3ZwQWR3bjFVa29MTjQzbnZZN0R0QVRWRGM0UGtXMDR2dz09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUhnQUFBQjRDQVlBQUFBNVpEYlNBQUFBQm1KTFIwUUEvd0QvQVArZ3ZhZVRBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBUUZrbEVRVlI0MnUyZGVYUVVWYnJBZjdYMG1rNDZJUW5MZ0d5eUNnU01LRkVFbnd2d2RNWlJSRUY5S2lMRGUvcGNSa2JrZ2FLamdxaU1Db3JqT0lJZ3VEOUFSTnhHa0cxRVZqa0lBV1NSVlFJa2dheWQzcXJyemg5SnhqV2Q2cEIwMGtWOW5NUGhrSHNxZGU3dmZ1djk3aTFKQ0NHd3hMUWlXMU5nQWJiRUFteUpCZGdTQzdBbEZtQkxMTUNXV0lBdHdKWllnR01Vbno5b3piYVpBZC85NUN6OHdaQTE0MllGdkg3N1hxYk5YV0xOdUZrQjIyMHFqLzMxSGVaL3VNcWFkVE1DRmtLUWtwekVINmZONGRzRFI2MlpOeHRnWFlDdUN6Uk41NXI3bmlhaTY5YnNteXROcXR4MlZoU1pnM2tGREwzL0dheXRhRE9aYUYyQVZQbHZ0OVBPOG5YYmVPR3RqeTBDcGdHTStJa3UyKzAyeGo3OUdpczI1bG9VekJKay9WeFNVanpjTW5FR0JVVmxGb25FQi96TC81TWtpZEp5ditXUHphckJBS3Fxc0RGM0g3Yys5Q0lXWTVQNDRKOUxrc3ZCd3VYcldMaDh2VVVrWWRNa1BicDJPMngyYnBrd25YWGY3TEdvbUUyREsvMHh1SndPYmh6L0hBVkZwUmFaUkFPc1k4ekJGaGFWczJQZllZdE13cGxvZ3dHVUpFbm9WclJsbmlqNjExYUNybHVBRTFDRFJYV2xzblp6Ym1sd0F2cGdBUmhCTEZYVnJTMHhwNGtXbGdZbnFJazJHbVVKMElXMVY1eUFHaHlyT2JmRXRGRzBzTG85RWhTd29SaExzdEtreFBUQnhqMjF0WFdZaUJxTWNXZ1JTNE1URUxCdVBJcTJORGdoTmRpZ1NNSktrOHdkUlZ0cFVuMktHamZ0amFXUzFZQnAwdkhDWWhSRlJsVVVISFlWaDgyR29zZ1c0Tk1sYkJTWkJBM2FtOVY3K0Roc3Nvek5wdUoyMnNsTTg5TCtONWxrZCsvQXhkbm5rTjI5Z3dXNFFWTWYwWkFhTEFnRXdnUWxnUlNBNGpJNGZMeVE5ZHYzTU8vRGxhQUxtbWVtTWlpbk56ZGRPWURzY3pyUUtpUE5BbXpJL3phUjdVSlJHYVpUWFhWUlpCbkZMdU8wMndEd0I4TXNYckdCeFNzMjRuRTV1YUJYSng0WStYditvMjhQSzhpS3JzSEd4emRtSlV1V0pHeXFpazFWQ0drYVgyemN6cVVqSjNIeHlJZFp1L1ZiZ3FHd0JmalhOTmhvb2FNcFZiS0VFTmhWRlc5cU1sdDNIMkx3blpNWk9PcFJ0dXphYndIKzZVVEZvTUZTMDl3UFZoVVp1Nkt3ODdzam5IZkRPQ2JNZUpOU245OENISE1lTEdpeW13MkN5dU92WHErSEY5LytoTDRqSG1SajdsNExjS3htTnhFNk91dzJsUk5GSlZ3OGNoSUxscTAvd3pVNEJoOU1BeGM2NmxNa0pGd09CN2RNbU03ZFQ4NDZjd0hyMVdxY0FGRjB6SkFsY0x1Y3ZMcG9HZmRQbTl2a3JFLzhORmcwRFEwV1FpQkVaWU85SkVuMTlzd2tsNU9YMy91TW04WlBiMUtRNHhaRng1SUlSeHB3Z2pxMWJVbWJGczN3ZWx6WVZKbUlyaFBTTkxSSWhOUDlyVWt1SngrczJNamt2eTlvT3RGL2ZJSXNnUzVBTmxETGtocFVneVhXdlRHVlNFUW5GQTdqOHdjcExDN2pxMjkyczJqWmVsWi92UU9oQzVLVFhIWFdaSmZUemhOL1gwQ1N5OG00a2I4L013QlhiU2MxQ1JOZFhaSk1jamxJUy9IUXBrVTZmYnEyNTMrSEQrRjRZVEV2dnYwSjczMzJKY2NLaTdHcFNwM011RGZKeldOL2U0L0wrL1hpM0c2TnUzblJOTk9rUmdxeVdtYWtNdlcrbTlueTNyUE1mdnd1VkVYQkh3d1JLMkpkQ0NSSll1ajl6eENPNkdjQVlCRlRFTjNvbDZSNWs5M2NmT1VBRHYzakZZWmVkZ0VoVFl1NWZLcklNa2Z6aXhqMXlNd3pKSXJXRXk4UDlyaWR2RHZ0VDh4LzhqNzhnVkRNbHNYamRySms1U2ErM3JuZjVCcGNGV2dadFhWTkxROGVka1VPbTkrZGhzZnRpTW02aUtyMDhKNnBzOHdPT0RZYlhkOG0rbVJKR1R2MkhXSFRqbjFzMzN1WS9GTWxNVDhqcTBzN3ZucnpLWncyVzB6dnB5b0s2Ny9adzV3UFZwZzNpdFoxNDlwYkh4cGNWT3BqNis0RHZQWFJHcjdZbEV0ZS9pbENnUkRvT3NnU3F0MU9pM1F2QTg4N2g1dXZHa0JPcjg1a3BLWFUrdHoyclRKWk0yOHlBMjZiaEJZRFpHOUtFcysrdm9RYi83TS9icWZEaEhsd1ZmVW9Iajc0cWRudjgrcWlaUlNjS2tVZ2tHVVpwOE9PeTJIL3lialNjajlMVm01a3ljcE5wSHJjREI5eUVkUEhqNnIxK2QwN3RPR3ZrOFp3NDUrZXhadWFiUGk5RGg4dlpQT083eGg0M2psbWpLSmowOGk2bU9nZDN4MmgxN0N4UFBUQ1d4U1YrbEJWQlp1cW9zaS9YbDZSNVI4Nk55cUNJV2ErOHlsdEIvOFBYMjNkWGV2dkdqR2tQL2ZkOWp0Q1lTMm1UT0w1TjVhYTB3ZkhWSnVWWWpmUjg1ZXVJdWVXaVJ3OFdvQTNKYWxPQzlEamRsSlU1bVBJWFUvdy9QemFRVHg2NXdneTAxSU1leDZicXJCMDFXYU81cDh5cHdZMzFIYmh4MnUyTVByUEwyTlRsZFB1YjFaa0dVVldlT0NwMlR6OTJ1S29ZOU85SGlhTUhrcHhtUyttZVpnYjUyQXJmaWE2QVh6dzZxOTNNSFRzTTdpZGpucE5yYnpOdkV4K2RTRWZydG9jZGR4ZHc0ZlE0K3l6aUJpc1ZubVMzSHl5WmpOaExXSXl3UG9QYmFxR2ZMQUJrMTVjNW1Qa3d5L2hkanJxYmR2dnArbU56TTNqbjZld09QcFZ4NC9jT2R6d2dsUmtpZjE1QlJRV2w1b0xjRXcrV0JnTHNtYSs4Mm1kOGxuRG9ZQWtvUU8zVDVvWjFUcGMwdmNja2owdVE0dE1DSUhQSCtUNzQ2ZE1wc0ZWZnd6cG1RUjZKUHFDS1BVRm1EcHJJVFpWYWREM2R0aHQvSFBMTG5ZZnlxdHhUSXRtcWZUcDBzNncyWTFFZERiRnNWRXZUaWI2MzhwcFVPT2phL0J6ODVZUUNtc05ZcHAvcm5GaExjS2N4U3VpYURwY05iQXZ2Z3EvUWNzQUczTDNtVE1QTm9vajJnbi9RQ2pNaDZzMjRrbHl4NmNTcENpODgvSHFxR01HNVdRWm4zQkpKbmZmRWJQNVlMM2VLbGtuaTB2Snl5OUNibUR0L1hGQjVHaitLYlorZTZER01kMDZ0aUhkNnpGVTBKRWtpV1A1SjgybXdURXVpQ2lBQzB0OCtBT2h1Qjl2V2I5OWI3U3dnYk5hWlJoSzFTUUpTc3JMOFFVME13RVdNUUt1ZWZ5eC9GTng3MXBVVlpYOTMrZEhIZE82ZWJxeDk1SWtncUV3cFJVVlppdDB4SExMVHMwYTdLdnd4MVFWcXg4ekxWUHFpdzRreGVNMkZFWldIM0FQeHVsVHUvSHh3YnBBU1BXajhZcWlRTno3QVFTcW90VHFXMk12L3BnRXNNMm14akFCVXRRenVNMVNrNUZsS2E1NHcxcUVsdW1wVWNmNC9BRkRlWUtvOHNOMmg4MDhnRk9TM0NpU1pFanhKQW55VHhiWCtQUGZaS1NoS2dwU0hCa0xMVUt2em1kRkhYT2lzTmpZSWhaZ1V4UlM0cFRteFFXdzErTWt4Wk5rS05pU0pabURSMC9Vck1GZVQ1Vy9pdzloQWRnY2R2cG5kNDg2N2xEZUNVT3BtMENRN0hHVDdMS2JCN0FzUVhxYTF4aGdXU0x2WkNuSENvdHFCTnk3YTN0Q29maWtHWkZJaEl2NmRDSERXM1AzeHZjblRuTDhWSmtoMXlGMFFXWjYvQzUyaWRzQjhPNGRXaHZlMHRQRFlWWnYybG5qeisrOFlUQVZjVW96aEM2NCs2YmZSaDJ6Y2xNdVFqTzI0SFFoNk5hK3Rma0FuOS96Yk1QNXNOUHRaT25xVFRYKy9Lb0IyZlRyM1JVdDByRDdxaElTNlduSkRNcnBGWFhjeDJzMjQzUWJPODhraE03NVBjNDJIK0IrV1YwTmx4Y2RkanZydnRsTmNWbk5XanBqd21pa09xUW5zVWh4V1RualIxMUxhbkxOYlVCRnBUNDJiTnVMdzI0c0twWmttWDVaWGN3SHVIUGJsamdjTm1QUnJ4RGtGNVdTRytVTGFEbTlPblBENElzb0tXOFlVeDBLUjdqdWloenV1ZkhLcU9PMjd6MUVRWEdab1VLT0pJSExidWZzczFxWUQzQkdhZ3F0MGxNTkY3U0VnR2ZtUk8rTG12UEUzZVJrZFk2cHU5R0lhSkVJclZ1a01mZUplMnBON1o2YS9iN2h3b3N1b0hWbUtwa0dlckFURG5DU3k4SEF2ajJvQ0FTTkZVZFVoWTlXYldMMTVoMVJ4MzMwMGtOMDc5Z0duejlZTDdseFdOTm9udVpsN2J5cHBIaGNVWk94THpaczU3TXZ0NkFhYkR6dyt3TmNjbjdQWC9Sb213SXd3QjNYWGtvNGFQeW11R1NQbTNIUHpZK3FvYzFTUEh6OTdqU3VHbkF1d2FCVzUrWTdJUVRCVUpqZVhkcXo3ZjNwTkcrV1Vvc0oxeGcvL1EyU1BjWUxGdUdReGgzWFhoN1BLWTh2NEw0OU9wSGRvNlBoTGtSWmx0bjUzUkhlL3VTZnRZNWRQT1AvbUQvMVBwd09sZEp5ZjFVVWJFektLZ0xvdXM3TWlYOWd4V3VQNDNIVmZyemtqWS9Xc0d2L1VXVFoyQlJxRVozemUzZW1UN2YyY1FVc2lUaHZyTDc3MlZydWVQUmw3RGJGc0dZRmdpRnlGNzlBNTdZdGEvZHp1bURLcXd0NCs5UEtVL3BhV0t1cS8wcVZPem44c0psaFV4VXkwbEs0K3BMeitQT2RJMGd6MkRTLysyQWVQYSs3UDZhT3puQllZKzZVZXhrKytFSnpBejVaWEVidkd4N0E1dzhhem90MVhhZGxSaHBiM3ZzTFNTNm5JVi9yOHdmSXl5L2k2MTNmc1dYbmZnNGNMY0RuRCtCeTJtbmJLcE0rWGR0eGZzL090RzdlREs5Qk15dEU1WE96UjR6amVHR0o0VTBQU1pMd3VCeDhzL0I1bW5rOTVnWU1NR0hHR3p3N2J5a2V0OU80L3dwSDZKZlZpVS8vTmdtSHpVWmpTREFVWnNoZFU5aVV1eSttanM0eW41K0pvNGN5NWQ2YjQvN09qUUpZSUdoMTZXZ3FBdUdZdHY1Q0lZMnNMbTFaUFhleTRjSkNmY0lkT0dvUzIvY2N3VzQzZmloVDEzVThiaWQ1WDh4dWxFWFpLQjhya0pDWU9YRk16S1ZHdTExbDI5N0RuRGZpUVk0Y0w0emIreDQrVmtEMjhISGs3b3NOYm5WdzlkSkRZMmdzYWJTdlVWeDcyUVZrZFdrWE8yU2J5c0ZqQldTUGVKQlhGbnplNE8vNXlvTFB5YjV4UEllT244U214Z2hYaTNCdXQvWmNmVW5mUmdQY0tDYTZXdlllT2tiVzlXT3gyMngxcWltWGxKUXgrT0pzcGo4NGl1NGRXOWZyMVlRNzkzL1AyTCs4enJJdnQrRDFKdGZwR1dGTlk5dkM2WFF5RVAyYkVqREFvdVViK0s4SjAzRTVIWFZxaGRVaUVSUlpvWCtmTGp3ODVucjZuOXZ0dE43bnl5MjdtRHA3RVd1MzdpR2lSMnJ0eGFvcGFnNEVncncxYlN6WFhkYXZNYWUzOFFFTEliaDE0Z3Y4LzdKMWRiNi9RcElrUW1HTkNwK2ZubDNiTWVxYXl4aDBZVzlhcEh0SlRuTGhkTmgvVWZRUVFDQVlvcXpjei9GVHhTeGZ2NDI1SDZ3a2QvY0IzRWx1N0RhMXpyM1hGWUVRSTRaY3lQeXBmMFNDTXhzd1ZHNkNYMzN2VkZadTNJSGRkbnJYaGtSMG5VaEVSMVVWUEM0bm1Xa3B0TWp3MHJ5WmwyU1hxNnB5NVNmL1ZBa25UcFpRVUZSS3VUK0Fwa1ZRRkJsRlByMndKQmpXdUx4ZlQ1YStPTEhCejA0bERHQUIrUDFCTHJydElmWWNPbmJha0grczJib3UwSFVkTFJMNWQ1MWFsaVZVUlVHV1pXUlpxcmRURXFHd1J0ZjJyVmc3ZnlvdXA0UEd4OXRFQVA5ZzJvSmNjc2VqN05oM3BONGd4eTFQRG10a2RXckx5am1QeC8ycXBDYVpKdjJhdUJ3T3ZueDlDbjI2ZFNBWVRKenZFd1dEWWJLN2RXRDE2NU54T1J4TjZ0MmFGR0JKcWp4MHZYTDJZNHdaZGdXbHZvcTRuU0tzMCtSSkVxVytDc1pjZndVclpqK0cwMjZqcWIxdWt6TFJQNWRuWDEvQzVGY1gxVGxkYVVpcFRzOG0vZmN3SHJ6OW1pYTdDSnMwWUlCdkR4emw5a2RlWXNQVzNYamp2Qk5UYzRHbG5BdDZkMkhlbEh2cDFxRjFVNTYrcGcrNFdxYk4vWUFaYjM1TVVaa1BleDF2WWovZGZEMmtSVWhMVHVMK1czL0wrTnV2VFlqNElHRUFBeFFXbFRMci9lVThPV3NSRllFUUtYWDh0a0tzVXViejQzTGFlWGpNTVA1dzNSVnhiWm83b3dEL2VNS2Zudk1CQy82eGxtT0ZSVVIwVVpYWDFvOVc2N3FvOHJFU0xUUFN1SDVRRGhOSER5UEY0MHEwcVVwTXdOVlNXdTVuNytFODN2eG9EWXVXcitkSVhnRW9NbTZuNDBjZjFCRDgyblhWMG8vK3FyNU5weUlRaEloTzYxYVpYRDhvaDF0K041RE9iVnNaN3Zpd0FEZXdiTm0xbjgrLzJzcjY3ZnM0ZURTZmt5VmwrQU1oTkYxSDEvVWZidnVScEtwN0tTc1hRMnF5bTQ1dFdwQ1QxWVVoL2ZzMCtwZFNMTUFHeEI4TTRmTUg4UWVDaE1JYS9tQUlyYXFiVTFWbFhIWUhkcHVDeStrZ3llV0lhNit5QmRpUytpdkdXRk5nQWJiRUFteUpCZGdTQzdBbEZtQkxMTUNXV0lBdHdKYVlSZjRGME1NbDY1M0lZS3dBQUFBQVNVVk9SSzVDWUlJPSJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDE5LTAxLTA3IiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJCbHVpbmsgTHRkLCBJbmplY3RvciwgVTJGIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVMkYxMDAwMjAxNTA4MTEwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4wIn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAxOS0wMS0wNyJ9LHsiYWFndWlkIjoiODUyMDM0MjEtNDhmOS00MzU1LTliYzgtOGE1Mzg0NmU1MDgzIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI4NTIwMzQyMS00OGY5LTQzNTUtOWJjOC04YTUzODQ2ZTUwODMiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiWXViaUtleSA1IEZJUFMgU2VyaWVzIHdpdGggTGlnaHRuaW5nIn0sImRlc2NyaXB0aW9uIjoiWXViaUtleSA1IEZJUFMgU2VyaWVzIHdpdGggTGlnaHRuaW5nIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyODcwNiwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3IiwiZWQyNTUxOV9lZGRzYV9zaGE1MTJfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo2LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo2LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJREhqQ0NBZ2FnQXdJQkFnSUVHMEJUOXpBTkJna3Foa2lHOXcwQkFRc0ZBREF1TVN3d0tnWURWUVFERXlOWmRXSnBZMjhnVlRKR0lGSnZiM1FnUTBFZ1UyVnlhV0ZzSURRMU56SXdNRFl6TVRBZ0Z3MHhOREE0TURFd01EQXdNREJhR0E4eU1EVXdNRGt3TkRBd01EQXdNRm93TGpFc01Db0dBMVVFQXhNaldYVmlhV052SUZVeVJpQlNiMjkwSUVOQklGTmxjbWxoYkNBME5UY3lNREEyTXpFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUUMvandZdWhCVmxxYWlZV0VNc3JXRmlzZ0orUHRNOTFlU3JwSTRUSzdVNTNtd0NJYXdTREh5OHZVbWs1TjJLQWo5YWJ2VDlOUDVTTVMxaFFpM3VzeG9ZR29uWFFnZk82Wlh5VUE5YStLQWtxZEZuQm5seXVnU2VDT2VwOEVkWkZmc2FSRnRNamt3ejVHY3oyUHk0dklZdkNkTUhQdHdhejBiVnV6bmV1ZUlFejZUblFqRTYzUmR0Mnpid25lYndURzVaeWJlV1N3Ynp5K0JKMzRaSGNVaFBBWTg5eUpRWHVFMEl6TVpGY0VCYlBOUmJXRUNSS2dqcS8vcVQ5bm1ET0ZWbFNSQ3Qyd2lxUFN6bHV3bit2K3N1UUVCc1VqVEdNRWQyNXRLWFhUa05XMjF3SVdieGVTeVVvVFh3THZHUzZ4bHdRU2dOcGsycVhZd2Y4aVhnN1ZXWkFnTUJBQUdqUWpCQU1CMEdBMVVkRGdRV0JCUWdJdnowYk5HSmhqZ3BUb2tzeUtwUDl4djlvREFQQmdOVkhSTUVDREFHQVFIL0FnRUFNQTRHQTFVZER3RUIvd1FFQXdJQkJqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFqdmp1T01EU2ErSlhGQ0x5QktzeWNYdEJWWnNKNFVlM0xiYUVzUFk0TVlOL2hJUTVaTTVwN0VqZmNuTUc0Q3RZa05zZk5IYzBBaEJMZHE0NXJuVDg3cS82TzN2VUV0Tk1hZmJoVTZrdGhYN1krOVhGTjlOcG1ZeHIrZWtWWTV4T3hpOGg5SkRJZ29NUDRWQjF1UzBhdW5MMUlHcXJOb29MOW1tRm5MMmtMVlZlZTYvVlI2QzUrS1NUQ01DV3BwTXVKSVpJSTJ2OW80ZGtvWjhZN1FSalFsTGZZemQzcUd0S2J3N3hhRjFVc0cvNXhVYi9CdHdiMlgyZzRJbnBpQi95dC8zQ3BRWHBpV1gvSzRtQnZVS2lHbjA1WnNxZVkxZ3g0ZzB4TEJxY1U5cHNteVB6SytWc2d3MmplUlE1SmxLRHlxRTBoZWJmQzF0dkZ1MENDckpGY3c9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFmQ0FZQUFBQ0dWcytNQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUhZWUFBQjJHQVYyaUU0RUFBQWJOU1VSQlZGaEhwVmQ3VE5WMUZELzNkNTl3ZVFTSWdTOUFRQVhjRkxBUVppOWZwZVZ6MXRZL1dUWnI1V3hwYzdXNWtuTGE1akkzWjg1c3JTMm5NMnNqdFd3WlM3SVVINEg0eENuRVF4NERBWkY3NFY3dXM4ODV2OS9sSW5CdlZKL0I0UHY5bnUvNW51LzVudk01NTZmekEvUXYwSGIvSXJYM1ZGS1BvNDVjbm00aW5VSVdZd0xGUm1aUVV1d2pGRy9OMWlSSGgxRVowTlJWUnVkcXQxQmQrMm5TS3lTL09oeXMwK2xrM2UvM2tROXF2RDRaVXRhNFZWU1V1WTBlaXB5aVRoQWZvY29PUlZnRHV1dzNxS1JpQWQzcmJjRXRqVGpZSW9mNldhSHNDbXpWUFdDTXgrY2doOHRMcVdNS2FNV3NVakxxbzJSdEpJUTBvT3ptZXJwUXU0ZXNaZ3NPTmtHeEg3ZDBrZHZUVDE3czRPTVU3Vkk4WmhqZ0dhTStBcTlpRU51OFBpZjF1ZHowN013dktXZjhHbFZvQ0VZMDRQQzVXZFRhWFlGYlI4dk52TDUrM0tnZmI1eE5NeWE5UmFtSml5bmFNbEdUVnRGbHI2YmE5dStwcW5FWDR1TXVSUmdqU1lFaHJON3V0RkZlNmxxYWw3TmZrdzVpbUFHSHluUHBiazhWbVkweHN0bnB0bEZDVkNZdHpUdUJOODNRcE1MalR0ZXZkUHpTVW5KN2U4bWtqeFozOWZYYktEZmxkWnFidlUrVFVnR25CVkY2ZlEyaVBIZzRXMTZVV1V3dnpiazE2c01aRStQbjBwdno3SlNldUF5ZXM4bGNwQ21hS3VvL3ArcVdyMlVjd0lBSFdydlAwWUV6aFhBdExBYnNzSGhwN2lHYW12eWlqUDhyeXFyWFVXWDlYb293eHlBdWZOQnJwNDNQT0JGWFpsa2Y4TURSaXFjcHlvd0F3cHV6MngrZld2ei9EdGRlOXNtc3p5Z3RjUjZDMXdiZHpCbDZPbHE1V05ZWTRvR2F0aEpNcmtURXgwakFSU0hBVnMrNXJZa1FOWGIrUWdmUExzUTZnWHlJbnNyZVFmbXBtN1JWRllmTDg2bjFmaVVPa1l2U2hrVVB4dmJ1a3pveTZLMWloTTFobzNYelc2RXZTZlhBK2RwaVdHYVdkK2RvWHpMem1Hd0tZRkxDQXNSQWxQQkFoTWxDRlhVN3RCVVZQcjhIZ1ZjSkhXcStGMDBwbHIrRE1UZHJQNHp2eFkxMWtOTWh4VCtTZVRHZytkNFY1TFFKaXR5VUdKTkI4VkZac2pnWUJaTS9JSS9YQ1RrajBxeURPcEYyQVZRMTdDSWpVcC9EblQxVWtMNUY1Z2RqK3NTMXdnMWdFM2dpZ202MGZDWHpTblBYYnlBUGJJWHYrSURwRTE2VGhhSElTOXNreWhsbU1FNUYzY2ZxQUtocTJDMEU1UEgxZ1lhWGFMUERrWkcwSERKT25LV0hwNTFJMHo1U091eDhlMVdBdVp6ZEhRclRrcDhUbWpYb0krbGEwd0dac3p1YnFiTzNpZlE2QS9XN3ZWU1lzVjNtUjBKS3drS2M0V0hpQmttUjhJM0NDZ0k4N29PTDRxelQ1UCtSVUpCZWpFT2dBUEs4aFlQemF0TStlSVRwMklPOXlUUW1lcm9tUFJ4eDFxeEFjc2lsZS91YlNlRWJjV1FHWUVDZ2hjTFkySHlLam9nakgyNWhNcGpwVXYxT3VnbGk0ZWgyZVJ3ME8zMmJKamt5dUNnTnpnMHZ6bFlNU2lTczB1b280TUc3aE1PakNFYVgxeUZFMG5TdmpCenVUbkVwSzg2WjhJb3FGQUl1Ync4a2c5QXJFYVJFV1NaSStqSDRYYnA2ZzlFOUVuSlQzb2FSekROK01VSkJRREhuNTZhOG9VbUVCdXNPeEJzL041K3RKRWJQa0FGRGo4VUd2T3MvSVd2Y1NnbEdCaHZTNy9GVFlmcFdHWWREWThmUEF4V1NBMzVzVEM0cDQrTG00QWFxSW9QZVF0ZnVmSzZKaDBaaHhsYnNVWE9TbVhOaWZENVpUQWt5RG9mYmJjY2x4bkE4V05BcXhDYlJOeWtoWHhRcGFEdzY3ZlhVWWJzaUcwS2h0djJvZUl2aDhyaFFNWU9jRUFxWEcvZUkrem5nT2M1eXhyOHE4MklBTTFjL0ZMRk9wbHF1NWVGUVhyTVp6R2NWQ2pZYkxXRzVJNEJUMWV1UnJsYnh0Tk90TWl0RERFaExYSUl5bkFBdnVPRVdFM1gzTmRBZnQ5NFZnYUc0MlhJUXQwWlg2UGVDRS9xUUZlOXJLNkh4N1lVNTBLdkg3Zlc0ZlMrcTdLS0JKeHNnZ0JYNXBTQUdoMWpJclZoNXpRNnczUmZhYWhCWG0vYUNiQ1pUakNVRlVUeVdacVc5cDYyTWpKUFhWcU9yUGdNTzROdjc0R2tmK293ZnROVkJEUW5qRkpxSFN3MTdwWHZoV1c1S1pxZS9RNDlOL1VTVENBVldvUVhGSUhCSFhYZTNGUHJVRHN1R0RtdEYvaEhLVEhwZWt4aGlBT1BJK1NKcTZTNkhGNEk5WVd6a0JKVG80NmlVTXpXcDhQaXIvUmlkdUx4S1lzU2tzVjh2TGxPUXZoR1gyWWxSME9CaEJqQyt1L2dFY3ZZMEFwSzdZazQxTnhqUFNRbldGSFRGNjZVcmpnZXZCOEN1NWErbDJ2WVNSUHR1VkRvNzNoaGRNU0huVVg3dFRqc1ZaR3hBbC9XcHRpT0lFUTFnbkwyOW1YNi90UjF0bWxrWWo4VzRYK0NTaldjVURHWTFOcFMvQzdoU0txaU1MTS9sMlFtU1daNzNEZHorZ2lvOEJDRU5ZUFE0NnFua3p3WFVicXZCa3hqVVFzV2ZaRmdidW8zckFmK3dON2pPTzkwK3lueDRQaTNMKzBuWUwxU2NoRFVnQVA0Z1BWLzdJZDFxKzFIU2htdUdrSXFXUlBneXhNRnFQOEhmalRualh3WTViUWZiSmN0Nk9JektnTUhvdEYvSGUxZWdzYXhIU3FHNndmZG1RNXg4TnlURkZxQmNwMmlTb3dIUjN5azUrMzZoRjd2WEFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xX1BSRSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiODUyMDM0MjE0OGY5NDM1NTliYzg4YTUzODQ2ZTUwODMiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZX0sIm1heE1zZ1NpemUiOjEyMDAsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6OCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoxMjgsInRyYW5zcG9ydHMiOlsidXNiIiwibGlnaHRuaW5nIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN30seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTh9XSwibWluUElOTGVuZ3RoIjo2LCJmaXJtd2FyZVZlcnNpb24iOjMyODcwNiwiY2VydGlmaWNhdGlvbnMiOnsiRklQUy1DTVZQLTIiOjIsIkZJUFMtQ01WUC0yLVBIWSI6M319fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMy0wMy0yOCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjg3MDYsInVybCI6Imh0dHBzOi8vd3d3Lnl1Ymljby5jb20vcHJvZHVjdHMvIiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZdWJpS2V5IDUgRklQUyBTZXJpZXMgd2l0aCBMaWdodG5pbmciLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDIzMDMyODAwNSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4zIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjMifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjEtMDItMTgiLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IllLIDVDaSBGSVBTIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyMTAxMTgwMDUiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMy43IiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjMifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjEtMDItMTgifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIzLTAzLTI5In0seyJhYWlkIjoiMDAyNCMxNTMxIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWlkIjoiMDAyNCMxNTMxIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkcrRFZvaWNlS2V5c3RvcmVBbmRyb2lkIn0sImRlc2NyaXB0aW9uIjoiRytEIFZvaWNlS2V5c3RvcmVBbmRyb2lkIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoidWFmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH0seyJtYWpvciI6MSwibWlub3IiOjJ9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfZGVyIl0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9kZXIiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InZvaWNlcHJpbnRfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbInNvZnR3YXJlIl0sImF0dGFjaG1lbnRIaW50IjpbImludGVybmFsIl0sInRjRGlzcGxheSI6WyJhbnkiLCJwcml2aWxlZ2VkX3NvZnR3YXJlIl0sInRjRGlzcGxheUNvbnRlbnRUeXBlIjoiaW1hZ2UvcG5nIiwidGNEaXNwbGF5UE5HQ2hhcmFjdGVyaXN0aWNzIjpbeyJ3aWR0aCI6NTQwLCJoZWlnaHQiOjk2MCwiYml0RGVwdGgiOjE2LCJjb2xvclR5cGUiOjIsImNvbXByZXNzaW9uIjowLCJmaWx0ZXIiOjAsImludGVybGFjZSI6MH1dLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQm1EQ0NBVDBDQkdRZFBSMHdDZ1lJS29aSXpqMEVBd0l3VmpFTE1Ba0dBMVVFQmhNQ1NVNHhDekFKQmdOVkJBZ01BazFJTVEwd0N3WURWUVFIREFSUVZVNUZNUXN3Q1FZRFZRUUtEQUpIUkRFTE1Ba0dBMVVFQ3d3Q1JGTXhFVEFQQmdOVkJBTU1DRUZWVkVoU1QwOVVNQjRYRFRJek1ETXlOREEyTURNd09Wb1hEVFF6TURNeU5EQTJNRE13T1Zvd1ZqRUxNQWtHQTFVRUJoTUNTVTR4Q3pBSkJnTlZCQWdNQWsxSU1RMHdDd1lEVlFRSERBUlFWVTVGTVFzd0NRWURWUVFLREFKSFJERUxNQWtHQTFVRUN3d0NSRk14RVRBUEJnTlZCQU1NQ0VGVlZFaFNUMDlVTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFU0lwSS9kS1lDRFloendEMndTZllBT2Ivbk5haVBjV0YyMXZ4WmsvVGdEME9KdGNEK09QbTY0bndaZEZXU0VZU1c3aU9xbnBtSnlkZThtZ3IvdG5BaXpBS0JnZ3Foa2pPUFFRREFnTkpBREJHQWlFQTNidmhhelFGUHdteVhseEsveENYZmg3ZzFYMUVvYkxDM0wrMkdPUnhwN2dDSVFDZk5FVFgvbTJCZWJSTFhJNExNUDFFUUdQWEZEZjdPazc0VTd4YmlNNFZrQT09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsLzlqLzRBQVFTa1pKUmdBQkFRQUFBUUFCQUFELzJ3QkRBQU1DQWdNQ0FnTURBd01FQXdNRUJRZ0ZCUVFFQlFvSEJ3WUlEQW9NREFzS0N3c05EaElRRFE0UkRnc0xFQllRRVJNVUZSVVZEQThYR0JZVUdCSVVGUlQvMndCREFRTUVCQVVFQlFrRkJRa1VEUXNORkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCVC93Z0FSQ0FESUFNZ0RBU0lBQWhFQkF4RUIvOFFBSEFBQkFBTUFBd0VCQUFBQUFBQUFBQUFBQUFjSUNRUUZCZ0lELzhRQUd3RUJBQUlEQVFFQUFBQUFBQUFBQUFBQUFBRURBZ1VHQkFmLzJnQU1Bd0VBQWhBREVBQUFBYXlqNkY1d0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFZ2QzZURUNXhMSjM2eEZvYzVsOGxHUFNYS3N6TkRNMDlOVmROKzhQOFpkTEtCSHBpZSt2aFR1b2ZOWE5Bdm0rTXlVbVJuMWRRWmdBSE00Y3cxTGljUDFWTGVRdWpUekoyZEpNMzM1cGhhYVVqZWFiS1VSdmRWN1NaMWRUUzZTdUZrd1EvYkhyNzY1dDJGMW1kazg3TlBxRStTWXlIUjFnQUxCMThsdnlUZWpQWFFxbXVnc2dZZFZWcDF5YUhmWExXM3ZVUWsycGFJcWQ1TXJZcUlQZmpkTE5tVFl5MitDVG94c2I2SXR0U3U2bEE5QlpIQTZxb0FCeU9PTkhQMnBQZW5qcnMvOEF4bW5jWWJMQ2lhNnoweFNtYVp0OUhSTWxVUnZkRitxem9ZdXMzbGRLVjF1NmlhbTN0N1BydEpuMEdlbnUvQTlEV0d4eEFBQWV2OGd4WEtrL09acWM5Sm1iS2xwTXpaR2t6TmthVE0yUnBOd002RXJoMWo4dzJPSWV5QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUC84UUFLQkFBQVFNREF3UUJCUUVBQUFBQUFBQUFCUUFFQmdJREJ4VVhJQUVRRXpZUkVoWXdOSEExLzlvQUNBRUJBQUVGQXY2YkdJU1JsTlliRmdVWlMzRk1tbFBndEtXMmJmU0xyRTFQU3VXK0MwdkJhWGd0THdXbDRMU2NpR0x5azFpZ09ScGtzUUl4ZTkrR0FRbXFVUEc3ZTAwc1BuN1lhM2U1ZEJ0cTk1eGFPWllIRkF5eEo3Y3BCa3hoSGkyODR0YnppMXZPTFRITFFKM1cxZDJIMWg2eXNFV3M1aDF5S0VPYlJyY2ZPZ1lpeUJGU1dRdDR5S1BTRjdJM3ZERW50eXlmN3R3amNvZlJoNENOTjVBTWxBSzNJd2x5M1ZadWNzVk1PajJYTExSbXA5SSsxR0pqMWRPMGg1YlNIbEFvQ1ZqcDlUWEhoWTlKZHBEeTJrUEp6aXc0MGJkc09tYW01ZFpIWWRCOHc1WVkrTmVVNCtycEx1emI5Ym1lL3dBUHRqWDZ2dlZaZitQdXZsaTRoMFlTOVpkQ1ZNejNhbkpzam9wM1BraTNQa2l4NU5UQjZSS2RUbzJGbEc1OGtXNThrVi9KRWhkV08ySEFsVjRnc2hrT2hLWDhyRit0cmZqUnkxSXd4NEcya1F5U1JSL0YzWERFbnR5eWY3dHdpc05mU2x5SUZOd2crWVNHaU5BNnF1dGRYT0VURzdFMzdCKzNLTkw3ZTA2dFBjWHg5NVh0Q0NXMElKYlFna0JnQXVPUDBheDBKUEV0b1FTMmhCTGFFRW1PTTQreHJ0V3FMRnNvVmFobVV4bGw2V0V2d3g2VWtJemZDNWVHUEtXOHFET3FkZEdyWFJxMTBhdGRHclhScTEwYXRkR3JYUnExMGFuTXRDdEtUZVlCN1drOUpIOGtjLzAzLzhRQUhSRUFBZ0lDQXdFQUFBQUFBQUFBQUFBQUFBRVJFZ0lRSUNFeFVQL2FBQWdCQXdFQlB3SDZ5eGs2UktGN3FVU2g0enlmUzFERW1aRVBXTE11QzlNdFdSWWJnc2h1UmVtWG5GT1NwVml4WTFKVmxXSlFOenlzV0xGaXhZYm43SC8veEFBdUVRQUJBd0VGQmdVRkFRQUFBQUFBQUFBQ0FBRURCQVVSRlNGU0VoUWdNVUZSRXlJeVlZRVFKRkJ4OERQLzJnQUlBUUlCQVQ4Qi9MVmxkNFBrajVyN2lwenpkUjBsUXhzN2lxci9BQVA5S09NNVgyUXpXNTFPbGJyVWpuc3VvSytXRjdqelpSbU1nc1k4dUNVL0NqYyt5cFl0Nm11TDl1aEZoYTRWdlVHdGxVMU1KUWt6RXJPa0dPVjNON3NsdmNHdGtFb1MraDcxYUZNeGc4cmMyVmxTdmU4WHp3Vlk3VUJzeXNzMkdaMmZyOU1MbTd0L2ZDa3M2V01YTjNiSlFRRlVGc0FzTG03dC9mQ29hWTZablkrcXF6WUlDZDFaWTN6WCszRFZVNVVzbTBQTG9vYlVHNjZWbGljSHVwN1Foa2lJRzZxaG5DbmtjajdMRTRQZFBha0hTOVZOVWRXVjNUc3FLbTNlUHpjMzRTRmpiWkpIWmNSWmk5eXdrZGF3a2Rhd2tkYXdrZGF3a05TaHBJb1BTMmY1ai8vRUFFTVFBQUVEQWdBSEN3b0VCUVVBQUFBQUFBRUNBd1FBRVJBU0V5RXhRWk1GSUNJak16VlJZWkdoMFJRd01qUlNZbkdCd2VGQ2M3R3lVM0NTcy9CVWNuU0N3di9hQUFnQkFRQUdQd0wrWnQyRVpLTUR3cERuby9McG9GOXM3b1BlMDk2UDlOV1lpTU1qb1EyQlhKcDdLM1dJUWtIeVZ6Vjd1QUFnRVpCZW41VnlhZXl1VFQyVnlhZXl1VFQyVnlhZXlyUHdvN3c5OW9HbEtpaFc1NzNTM25SL1NmcFZwVGVNeW84Qjl2T2hYbWk5SXVuYzVrOE1qOFo5a1VobGx0TFRTQlpLRWl3RkYrVStpTzBQeHVLdFJTMEpFcjNtMjdEdklyMUtaMko4YW13MjRrcEszMlZOZ3F4YkM0K09BZmtMK21CNkE5RmtPT05XdXBHTGJPTDlQWFhxVXpzVDQxNmxNN0UrTmVwVE94UGpRUzRYNG5XNjNtN3IwbDZPOGg5cFdoYmFyaW5JOGxwTHpMZ3NwQ3E0RjNJTDJkbHc2dmRQWDVobU95TVoxMVlRa2RacVBCWTlGcE5pZmFPczA1TWY0WDRXMjlhMWRGR1JNZHh2WlFQUlFPZ0RlajhoZjB3VC9nMy9BRzA3MFBSWE9MUEtNcTlGWS96WFRNMk1lQXZTazZVbldEVWlFdTJNb1hiVjdLOVJwVGF4aXJTYkVIVWQrMHRRdUk3YW5mcDljSGtRUEV3MGdXOTQ1ejlNSVVCSHNjL0sxb2piV3RFYmEwSmNzTTVISnFUd0YzT0NWTmlobklPWW1ManVXT1pJRmFJMjFyUkcydE92dUNQaU5wSzFXYzFEQy91Y284VklSanBIdmo3ZnBnbkJJc2wwaDRmTVorKysvbTlQazMvb1lOMWNiVGx6aGEvMmp6RzZQL0hjL2FjTzV1TDByL1lyQW0zK21SZnRPL2pwVWJKa0lVejlSM2dZRWJvSlR4TXRPYysrTTM2V3doSW5pd3pjaTM0VnpnTmczNFZ6Z05nMzRVSXMyWGxtTWtwV0xrMHB6L0lZSmNTSE15VWRHSmlweVNEcFFEckZjNERZTitGYzREWU4rRk9NdVRncHR4SlNvWkZHZy9MREozVVduaW1VNUpCNlZIVDNmcmczUVdrM1EyckpEL3FMSHZ2djIzbWxZamphZ3BLaHFJcVBOYXRkWXN0UHNyMWluWVVrY0JlaFEwb1ZxSW90eW03dEU4VytuMEYvNTBiMGZrTCttQ2Y4Ry83YWQ2QXlndFJRZU1rcUhCSHc2VFRNT0tuRlphRnVzOVpwK1VTTXNSaU1wNlY2dkdpcFJ1bzV5VDVnNDEzSUx2TE5EOXc2NmJreFhVdk1MRjBxVFNtbm0wdXRxMG9XTGcwVkNLcU9UL0JjSTdxMHl0cjlxMHl0cjlxMHl0cjlxOHNpRi9LNHBUeGk3ajlNRHM2U1g4czVhK0l1d3pDM1IxVnBsYlg3VnBsYlg3VnBsYlg3VUZlUm1Rb2Z4MWxYZG9wS0cwSmJRbk1FcEZnS2NsVEhReXlqV2RmVUt5eXJ0eG04ekxYc2pwK1Btc2VFOVpCOU5sZWRDdmxRVFBiWEFkMW0yT2p1ejFkdmRTSWVvdkFHdWNJdTJUWE9FWGJKcm5DTHRrMXpoRjJ5YTV3aTdaTmM0UmRzbXVjSXUyVFhPRVhiSnJuQ0x0azFkM2RTSU9vT2hSN0JSVHVjeXVhN3FXdmdJOGF5MDU3SHQ2TFl6SVI4Qi9NNy84UUFLQkFCQUFFQkJRZ0RBUUVBQUFBQUFBQUFBUkVBSVRGQlVXRVFjWUdSb2NIdzhTQXcwYkZ3LzlvQUNBRUJBQUUvSWY4QVRZam80YURUTTBPTVVZNjN2RXRCWkcrYUJGdUQraFhxOUc1RUNITnN1NWFCTlBWNjlYcjFldlY2OVhwYzVZZjJ5bVpPMFJaMVQraWdaNFRnaE9Eby9VVEJ1Nk4vTi9YQTMwYTQwU09RVmVxckFkMi9Tb01IZ3VyT214R0VobnBDQXVXMzRVU0xxaGxoTVNQZ1JvMGJwdHN0M082WGFhb2JpVkNFSk1pZVkwREUwM2htMEhVNHg4OWRxWEpCUm1FU0RiaXVxeTFicGl3TUx1SDlYQUdsM09XN2NzdjY0L1pSd1Zzb1N1T00rWXFmdWVRZk5GQ3FKdnd2VTZMVCsyNytCaFBuWmtIM093OVo4TmhaZWhhWW5KSERiQTVvUEJYblB5dk9mbEUyREc4eEZrYWJIbVJHSUdzak1hODUrVjV6OHEvVVBGZ2x3MDJwTmtaZkozejVObkh2SUNmbUZCM1c2MzdiRGFQTTVZZEkyK1d5K3RRRmJKdE4xdHNXYmN4NmZuUEFwWE5Pb0xqc1RCREJ1QkVjUXVlMG9ZSUdGdG9VSjJyQkxNaUxRZGhuQXBZTWxhamV1MUNoaUZnWGtJU3pMdFNnSmRrckc3WXd3ZzRaMEh6TkF2UmlKSG5TaENDMjY3L1JHc2N1WFljMGZwalRsTE1kaHZ3ZFZ2MlVjSU5CckNjVCtBNHhWajFsTjVqbUsyMWF0RVdNZEJlMEtmdzJRbFg2SElPaGVETFJkYnNrbkRxS3gvSFNpSjlCWnRScTB5OHhQTkljQ3ZTcWVsVTlLb2JRTmhJRyt5R3pEZGY3QUVHZ1Y2VlQwcW5wVk1OSUVqdWNTZ0RGRGdaQVVTV3JieFlCaXVWTFFsbnZFYXNlQmg5UytZWjVoNXRTR3NEZEZMeHNPWEdqVTUvQkZtdlB1OWVmZDY4KzcxNTkzcno3dlhuM2V2UHU5ZWZkNjgrNzB5aW42NExXQnVRUjF0dGJvTjlTVTZWR1dCdnYvd0JPLzlvQURBTUJBQUlBQXdBQUFCRDc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nm9Namc0eHZQMzc3Nm1wenl5dnplcHI3NzczajVUL3o1ZS96Nzc2NHB2OEF2cS82SUcrKysrdmMvd0QvQVA4QXRmOEF2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2L3hBQWVFUUVBQWdFRkFRRUFBQUFBQUFBQUFBQUJBQkV4RUNBaFVXRkJVUC9hQUFnQkF3RUJQeEQ5Yk1kQnF6TUVVTXoybG4yQmhFUnAyQmJVV0NabmhMQnhBcHhQS0ltWlExRDkyY1JEeHJBV29BdDBpd2hzYm9EVEhycEFSakNqV2htNXRHb016TDlTL1V2MUw5Uy9VWEw5ai8vRUFDZ1JBUUFCQVFVSUF3RUJBQUFBQUFBQUFBRUFFU0ZCWVhIaElERlJnWkdoc2RIQjhQRlFFUC9hQUFnQkFnRUJQeEQrc2IzMTl1TllEbzd0UFJGVTBFODV6dmtvZFZ2bU43ZTQrS3RKVSszdzd6SitHS3pWYkdHUll0VnFXL1RGZ1lxQmRQM0lDOVVhRllYUVZGdVpQMUlVbzBjSVhOTjlpWTVRRG15bEhoK09tdzNCSGkyWEFTek94OGY0dTE3akZIa0ZiRjlSK2dJVnQ1Rnc4Wis0d3BnMUc2dnlFdkJCT2JaRVViaGVUWVFTak54MnFxNFlabmVVVmRlSmZ5dW4xR3NyUTFDRm1zcUZVVVdabnFmVWF3QlVMa2U0TUpTNExiZmxqWnljT0J5ODdMMEtqY3hxcXdienZiM21LNmF6RmROWml1bXN4WFRXRlMxOUNXM25HMTA1ZjJQL3hBQW1FQUVBQVFNREJBTUFBd0VBQUFBQUFBQUJFUUFoTVJCQllTQlJjWUV3d2ZCd2thSFIvOW9BQ0FFQkFBRS9FUDVOdmNVNFpraTUrQXRLUTBIckJaN3FlZUp2bWppdEFOZWdyOU45VXpHTUFqc3NhU0dreEI2TmZwdnF2MDMxWDZiNnI5TjlWK20rcVBNVUpyL1NpeDgrbm9nNG9xbUJQYmtzREdOc2JLU0UvRVMweFRIQTJGa1N1Z0VJUVNXWGhjQXNGV1ZmVFIyQ3QxRmhLN0ZUSnRBcGVIU0RDekozZnVoTUVUQXZIUTBPTG05bG8xZ0RKa2VoZ3dZTkQreEUrV0RsQTcwYnA1N29jSWttNWtwdDNmdHJDTUlJUkJFUWFQMEtVd1hXV3VrT0lrdkQ0SEZkd2RQZ2xMMWpBdUpWK1krQ1lMQlUvaXdPQVYyeFpnTWhEQU1ZUGoxQnRJZ1lsdkJLVy95TkZKQkcycHNtMURBOWdvcXdoMkdPQVlUMGtKWkduaWtKdzFCMkp3WkJ2UmliZWhBZzdpSjFsdGlra2lMOGdqa2FNQkZRL3dCbmZ3Yys3cmRQYVlzSkovdlhQTmxnZDhCaGE3UjlzUkozVkpIS3hHdWVaRmIxZERFWnNLMnJMejBaQ2lvMmttNzhlaENUNEVTdCsrdktxSk43ditrNkJMSlRkT0hXZmg5dngzc2JSV2U0OWFOT0VRaCtkdXNhTlMwRUkvUU9Sb3lJU2wzbjJoWGQ0dW9HSHlxQVFHdVRKYUZHemE3WVpMYVkwbVdmdGR3MGwxMXpCYldUSnYxRHNzbkNrcEpFZFNJQ0phV1M0NGZIUXlyK0dURW50TTk5ZU01ZEREY2dIMVF4RVM1S0NiMnVKenVGTXFTRFM4U25DTHdpbGxUQWJDcnNvN1BOaHlRdnh0RkJLQlFobnNMZUczSkM5Wno4SVYzZEJMS2U3WUNDcHJMUmF2Rm05M2tUS1VnWE1rSmxWM1ZaK0IrNnNURllEWUZiV0RkRkFiQXBNRzRtUWJLQkVSQks0Rm51aUVpZVNtQUZkSzhKNFFIUXpac3pOVnl5L0Jjc2I2RW1tQ1BKOEpNaStaNkdiTm5QTTAreGN6MkZEVUtCZGdBQTRLa2FDZk93QzhhQVN0WHFZNlN0NGJNWW94QVNCK0o5Z3dURjVpSVdtQXRNU1ZEWW9LSjNDdWRtSjNab0VlSmdieVllejR2L0FQOEEvd0QvQVA4QS93RC9BUGdnUkw2eFFlaW9iMFJWL0JiOGpzb0EzYkVtTWpZd0pVcUNWaitUdi8vWiJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wNC0xNiJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDQtMTYifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyJkMDAyZjRjMGE4OGE3YzI3ZDUyMDFjNmE1MWEwZTA1NDZiNmQ4Zjc1IiwiNjdlZjBmNGMzNmI1MTc4MGEzZmFjYzBhOTIzMjQ1OTNhYjE5NjY4NSIsImI5NTIwNjIyOGVhZDQ5MmI5ZTE0NTA0YWJlZmNiMjA1NDZiMGU1M2IiLCI5YmU4Yzg2ZjNiN2RhOWY1MDI2YTU2NjA3YjJiOTNmMGZmZDA1OGFlIiwiNzI5NTQ5OTUzMWMwZmIwNTlkNmM4OGQxYjI5NjY1NTQ3NzU3YzZjNiIsImVhNTQ0MmM5Y2M1NmY2NDU2ZGI1MzQ0YjM2OTY4OWM2NDdhN2ExZTEiLCIwN2U0NGE3YzJlN2UwYjYwNTRjMDI5MmZiYTY5MWVlYmZkYjQ4MWJkIiwiNzVkOTI2NmE3OTU5OWU5Y2FjNjA0YWMyYmUzZjAzYTBmMDQ0NGQ3NCJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyJkMDAyZjRjMGE4OGE3YzI3ZDUyMDFjNmE1MWEwZTA1NDZiNmQ4Zjc1IiwiNjdlZjBmNGMzNmI1MTc4MGEzZmFjYzBhOTIzMjQ1OTNhYjE5NjY4NSIsImI5NTIwNjIyOGVhZDQ5MmI5ZTE0NTA0YWJlZmNiMjA1NDZiMGU1M2IiLCI5YmU4Yzg2ZjNiN2RhOWY1MDI2YTU2NjA3YjJiOTNmMGZmZDA1OGFlIiwiNzI5NTQ5OTUzMWMwZmIwNTlkNmM4OGQxYjI5NjY1NTQ3NzU3YzZjNiIsImVhNTQ0MmM5Y2M1NmY2NDU2ZGI1MzQ0YjM2OTY4OWM2NDdhN2ExZTEiLCIwN2U0NGE3YzJlN2UwYjYwNTRjMDI5MmZiYTY5MWVlYmZkYjQ4MWJkIiwiNzVkOTI2NmE3OTU5OWU5Y2FjNjA0YWMyYmUzZjAzYTBmMDQ0NGQ3NCJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiWXViaUtleSA1IFNlcmllcyB3aXRoIE5GQyJ9LCJkZXNjcmlwdGlvbiI6Ill1YmlLZXkgNSBTZXJpZXMgd2l0aCBORkMiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MiwicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCIsInJlbW90ZV9oYW5kbGUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURIakNDQWdhZ0F3SUJBZ0lFRzBCVDl6QU5CZ2txaGtpRzl3MEJBUXNGQURBdU1Td3dLZ1lEVlFRREV5TlpkV0pwWTI4Z1ZUSkdJRkp2YjNRZ1EwRWdVMlZ5YVdGc0lEUTFOekl3TURZek1UQWdGdzB4TkRBNE1ERXdNREF3TURCYUdBOHlNRFV3TURrd05EQXdNREF3TUZvd0xqRXNNQ29HQTFVRUF4TWpXWFZpYVdOdklGVXlSaUJTYjI5MElFTkJJRk5sY21saGJDQTBOVGN5TURBMk16RXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFDL2p3WXVoQlZscWFpWVdFTXNyV0Zpc2dKK1B0TTkxZVNycEk0VEs3VTUzbXdDSWF3U0RIeTh2VW1rNU4yS0FqOWFidlQ5TlA1U01TMWhRaTN1c3hvWUdvblhRZ2ZPNlpYeVVBOWErS0FrcWRGbkJubHl1Z1NlQ09lcDhFZFpGZnNhUkZ0TWprd3o1R2N6MlB5NHZJWXZDZE1IUHR3YXowYlZ1em5ldWVJRXo2VG5RakU2M1JkdDJ6YnduZWJ3VEc1WnliZVdTd2J6eStCSjM0WkhjVWhQQVk4OXlKUVh1RTBJek1aRmNFQmJQTlJiV0VDUktnanEvL3FUOW5tRE9GVmxTUkN0MndpcVBTemx1d24rditzdVFFQnNValRHTUVkMjV0S1hYVGtOVzIxd0lXYnhlU3lVb1RYd0x2R1M2eGx3UVNnTnBrMnFYWXdmOGlYZzdWV1pBZ01CQUFHalFqQkFNQjBHQTFVZERnUVdCQlFnSXZ6MGJOR0poamdwVG9rc3lLcFA5eHY5b0RBUEJnTlZIUk1FQ0RBR0FRSC9BZ0VBTUE0R0ExVWREd0VCL3dRRUF3SUJCakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBanZqdU9NRFNhK0pYRkNMeUJLc3ljWHRCVlpzSjRVZTNMYmFFc1BZNE1ZTi9oSVE1Wk01cDdFamZjbk1HNEN0WWtOc2ZOSGMwQWhCTGRxNDVyblQ4N3EvNk8zdlVFdE5NYWZiaFU2a3RoWDdZKzlYRk45TnBtWXhyK2VrVlk1eE94aThoOUpESWdvTVA0VkIxdVMwYXVuTDFJR3FyTm9vTDltbUZuTDJrTFZWZWU2L1ZSNkM1K0tTVENNQ1dwcE11SklaSUkydjlvNGRrb1o4WTdRUmpRbExmWXpkM3FHdEtidzd4YUYxVXNHLzV4VWIvQnR3YjJYMmc0SW5waUIveXQvM0NwUVhwaVdYL0s0bUJ2VUtpR24wNVpzcWVZMWd4NGcweExCcWNVOXBzbXlQeksrVnNndzJqZVJRNUpsS0R5cUUwaGViZkMxdHZGdTBDQ3JKRmN3PT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZkNBWUFBQUNHVnMrTUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFIWVlBQUIyR0FWMmlFNEVBQUFiTlNVUkJWRmhIcFZkN1ROVjFGRC8zZDU5d2VRU0lnUzlBUUFYY0ZMQVFaaTlmcGVWejF0WS9XVFpyNVd4cGM3VzVrbkxhNWpJM1o4NXNyUzJuTTJzanRXd1pTN0lVSDRINHhDbkVReDREQVpGNzRWN3VzODg1djkvbEluQnZWSi9CNFB2OW51LzVudS81bnZNNTU2ZnpBL1F2MEhiL0lyWDNWRktQbzQ1Y25tNGluVUlXWXdMRlJtWlFVdXdqRkcvTjFpUkhoMUVaME5SVlJ1ZHF0MUJkKzJuU0t5Uy9PaHlzMCtsazNlLzNrUTlxdkQ0WlV0YTRWVlNVdVkwZWlweWlUaEFmb2NvT1JWZ0R1dXczcUtSaUFkM3JiY0V0alRqWUlvZjZXYUhzQ216VlBXQ014K2NnaDh0THFXTUthTVdzVWpMcW8yUnRKSVEwb096bWVycFF1NGVzWmdzT05rR3hIN2Qwa2R2VFQxN3M0T01VN1ZJOFpoamdHYU0rQXE5aUVOdThQaWYxdWR6MDdNd3ZLV2Y4R2xWb0NFWTA0UEM1V2RUYVhZRmJSOHZOdkw1KzNLZ2ZiNXhOTXlhOVJhbUppeW5hTWxHVFZ0RmxyNmJhOXUrcHFuRVg0dU11UlJnalNZRWhyTjd1dEZGZTZscWFsN05ma3c1aW1BR0h5blBwYms4Vm1ZMHhzdG5wdGxGQ1ZDWXR6VHVCTjgzUXBNTGpUdGV2ZFB6U1VuSjdlOG1ranhaMzlmWGJLRGZsZFpxYnZVK1RVZ0duQlZGNmZRMmlQSGc0VzE2VVdVd3Z6YmsxNnNNWkUrUG4wcHZ6N0pTZXVBeWVzOGxjcENtYUt1by9wK3FXcjJVY3dJQUhXcnZQMFlFemhYQXRMQWJzc0hocDdpR2FtdnlpalA4cnlxclhVV1g5WG9vd3h5QXVmTkJycDQzUE9CRlhabGtmOE1EUmlxY3B5b3dBd3B1ejJ4K2ZXdnovRHRkZTlzbXN6eWd0Y1I2QzF3YmR6Qmw2T2xxNVdOWVk0b0dhdGhKTXJrVEV4MGpBUlNIQVZzKzVyWWtRTlhiK1FnZlBMc1E2Z1h5SW5zcmVRZm1wbTdSVkZZZkw4Nm4xZmlVT2tZdlNoa1VQeHZidWt6b3k2SzFpaE0xaG8zWHpXNkV2U2ZYQStkcGlXR2FXZCtkb1h6THptR3dLWUZMQ0FzUkFsUEJBaE1sQ0ZYVTd0QlVWUHI4SGdWY0pIV3ErRjAwcGxyK0RNVGRyUDR6dnhZMTFrTk1oeFQrU2VUR2crZDRWNUxRSml0eVVHSk5COFZGWnNqZ1lCWk0vSUkvWENUa2owcXlET3BGMkFWUTE3Q0lqVXAvRG5UMVVrTDVGNWdkaitzUzF3ZzFnRTNnaWdtNjBmQ1h6U25QWGJ5QVBiSVh2K0lEcEUxNlRoYUhJUzlza3lobG1NRTVGM2NmcUFLaHEyQzBFNVBIMWdZYVhhTFBEa1pHMEhESk9uS1dIcDUxSTB6NVNPdXg4ZTFXQXVaemRIUXJUa3A4VG1qWG9JK2xhMHdHWnN6dWJxYk8zaWZRNkEvVzd2VlNZc1YzbVIwSkt3a0tjNFdIaUJrbVI4STNDQ2dJODdvT0w0cXpUNVArUlVKQmVqRU9nQVBLOGhZUHphdE0rZUlUcDJJTzl5VFFtZXJvbVBSeHgxcXhBY3NpbGUvdWJTZUViY1dRR1lFQ2doY0xZMkh5S2pvZ2pIMjVoTXBqcFV2MU91Z2xpNGVoMmVSdzBPMzJiSmpreXVDZ056ZzB2emxZTVNpU3MwdW9vNE1HN2hNT2pDRWFYMXlGRTBuU3ZqQnp1VG5FcEs4Nlo4SW9xRkFJdWJ3OGtnOUFyRWFSRVdTWkkrakg0WGJwNmc5RTlFbkpUM29hUnpETitNVUpCUURIbjU2YThvVW1FQnVzT3hCcy9ONSt0SkViUGtBRkRqOFVHdk9zL0lXdmNTZ2xHQmh2UzcvRlRZZnBXR1lkRFk4ZlBBeFdTQTM1c1RDNHA0K0xtNEFhcUlvUGVRdGZ1Zks2SmgwWmh4bGJzVVhPU21YTmlmRDVaVEFreURvZmJiY2NseG5BOFdOQXF4Q2JSTnlraFh4UXBhRHc2N2ZYVVlic2lHMEtodHYyb2VJdmg4cmhRTVlPY0VBcVhHL2VJK3puZ09jNXl4cjhxODJJQU0xYy9GTEZPcGxxdTVlRlFYck1aekdjVkNqWWJMV0c1STRCVDFldVJybGJ4dE5PdE1pdERERWhMWElJeW5BQXZ1T0VXRTNYM05kQWZ0OTRWZ2FHNDJYSVF0MFpYNlBlQ0UvcVFGZTlySzZIeDdZVTUwS3ZIN2ZXNGZTK3E3S0tCSnhzZ2dCWDVwU0FHaDFqSXJWaDV6UTZ3M1JmYWFoQlhtL2FDYkNaVGpDVUZVVHlXWnFXOXA2Mk1qSlBYVnFPclBnTU80TnY3NEdrZitvd2Z0TlZCRFFuakZKcUhTdzE3cFh2aFdXNUtacWUvUTQ5Ti9VU1RDQVZXb1FYRklIQkhYWGUzRlByVURzdUdEbXRGL2hIS1RIcGVreGhpQU9QSStTSnE2UzZIRjRJOVlXemtCSlRvNDZpVU16V3A4UGlyL1JpZHVMeEtZc1Nrc1Y4dkxsT1F2aEdYMllsUjBPQmhCakMrdS9nRWN2WTBBcEs3WWs0MU54alBTUW5XRkhURjY2VXJqZ2V2QjhDdTVhK2wydllTUlB0dVZEbzczaGhkTVNIblVYN3RUanNWWkd4QWwvV3B0aU9JRVExZ25MMjltWDYvdFIxdG1sa1lqOFc0WCtDU2pXY1VER1kxTnBTL0M3aFNLcWlNTE0vbDJRbVNXWjczRGR6K2dpbzhCQ0VOWVBRNDZxbmt6d1hVYnF2Qmt4alVRc1dmWkZnYnVvM3JBZit3TjdqT085MCt5bng0UGkzTCswbllMMVNjaERVZ0FQNGdQVi83SWQxcSsxSFNobXVHa0lxV1JQZ3l4TUZxUDhIZmpUbmpYd1k1YlFmYkpjdDZPSXpLZ01Ib3RGL0hlMWVnc2F4SFNxRzZ3ZmRtUTV4OE55VEZGcUJjcDJpU293SFIzeWs1KzM2aEY3dlhBQUFBQUVsRlRrU3VRbUNDIn0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjAtMDUtMTIiLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ill1YmlLZXkgNSBORkMiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlUyRjExMDAyMDE5MTAxNzAwNiIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4xLjEiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMyJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMC0wNS0xMiJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjAtMDUtMTIifSx7ImFhZ3VpZCI6ImZjYzAxMThmLWNkNDUtNDM1Yi04ZGExLTk3ODJiMmRhMDcxNSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiZmNjMDExOGYtY2Q0NS00MzViLThkYTEtOTc4MmIyZGEwNzE1IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ill1YmlLZXkgNSBGSVBTIFNlcmllcyB3aXRoIE5GQyJ9LCJkZXNjcmlwdGlvbiI6Ill1YmlLZXkgNSBGSVBTIFNlcmllcyB3aXRoIE5GQyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzYsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfSx7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsiZWQyNTUxOV9lZGRzYV9zaGE1MTJfcmF3Iiwic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciLCJzZWNwMzg0cjFfZWNkc2Ffc2hhMzg0X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6OCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo4LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRFJ6Q0NBakdnQXdJQkFnSVVleDluVDl2d1pOWFM0ODNMZGlZR2Z3MlNqU293Q3dZSktvWklodmNOQVFFTE1DNHhMREFxQmdOVkJBTU1JMWwxWW1samJ5QkJkSFJsYzNSaGRHbHZiaUJKYm5SbGNtMWxaR2xoZEdVZ1FpQXhNQ0FYRFRJMU1EZ3dNVEF3TURBd01Gb1lEems1T1RreE1qTXhNak0xT1RVNVdqQW5NU1V3SXdZRFZRUUREQnhaZFdKcFkyOGdSa2xFVHlCQmRIUmxjM1JoZEdsdmJpQkNNaUF4TUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUF1MU1ldm55OWR5TzlaVUMzOVNvTWhMY1IvRFhydEYvY2lNMTJ0Y2l5MkVYQVo2TWtyaXZWdENmRVZNOVg2SVNURW5CUDZ1U1lZb3Y2cHB2Nk82SmgyTkhtWW00dytKblM0Vm5DUFU3bUhBTWZWSTJNR1RUTVZPZXcweFVzRzdzSVNJa0lEVUJtdWs4WUs5YzV6aWM5K3ZGUUdMSWtzZFhPNWlWRklnTkc1M2NHWEQ0Wkxab0FQaXUwUEVvenhBcVlJYUk0Z3hLaE9BM1M4L1c4bUlXc3U2b2Z5ajRHdmtGRzZaN2t5RjMxMDdQN213RkhMckkzRU5hUFdNT0ZjVGFHYTBkdysvdlZSd2pSY0VaQlZzdXVULzg3Y2tTczBhNXBrdDN2WkJsYVllVDhwelNyZVY3bW93Y0lNOTBMMmlhQVRsUDBueG1hRTZuT3lUYm9qRlZsMndJREFRQUJvMll3WkRBZEJnTlZIUTRFRmdRVVNYRWgzc2EzYnREdXJtNE1NL0M3UzFsUnV1WXdId1lEVlIwakJCZ3dGb0FVNnJkQ2tKNE1lMlI2MjFSOEE3cDhUcC9Zb1dFd0VnWURWUjBUQVFIL0JBZ3dCZ0VCL3dJQkFEQU9CZ05WSFE4QkFmOEVCQU1DQVlZd0N3WUpLb1pJaHZjTkFRRUxBNElCQVFCNUdjM2hhZnRwN2hLc0Vac28raS9aNW5SdXFkbXpHMldDbFVvUlVxYmFQeWdsbkpEaktSL2tmZ09sNmliYkYvenRobTNLbVhRN0hjRElQMnhNZEc3VTJMMmltYkpRSHFQZi9oMkhxb2piNHJaZ3VlKzZXNGt0U1I1ZWxSOUwxcllxRS9TR1lNNGlFS29WUVN2N1JUMXJ4SWVXaUtzdy9WeHhpL1FPbnN4M0Y3eDgwQ0NZZ0I0RTN5UXg4VlRXNDQwaFRFd1RBMWVNSE9peDMydFB0eXlISWE4UFZWSWZWcEhRSkJhTVZ2djUwOFVFandrYlUycm5qZnpvU1ROUzlBNWpVUThtQlN2ZTk1cmpCMGRvOThFVStEeGRCcVgyK0g2aTV3bElDRmd6aGR6Y3NuZTloR0tUNmx6VFg0Y0lkSnNyWTIreGxlSzBGRlF5NmxHRVZMRWUiLCJNSUlEU0RDQ0FqQ2dBd0lCQWdJVVVjbU1YelJJRk9nR1RLMFRiM2dFdVpZWmtCSXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFEbTU1NWJXWTlXVyt0T1kwcklXSGxkaCthTmFub0NaQ0ZoN0drM1laclFtUFV3MGhrU0c2cVlIUXRQK2ZaeVMzM1ZFcnZnK0JRcW5tdW1nTmhmeEZya3dFWkVMZWlkQmNDOEM0QWc0bnFxaVBXcHpzdkkxN05jeFlsSW5MTkxGY1pZLytnT2lONlpPVGloTzUvdkJaTWJqOXJpYUFjcWxpWW1OR0pQZ1RjTUdhRUF5TXpFTU55Mm5tNkVwK3BqUDVhRjZnaTIxdC9VUUZzdUoxajJSai95bk0vU2RSdCtlY2FsNU9Zb3R4SGtGYkw5dnZ2MkEyT3Y1SVRaQ2x3NGJPUzlucHlwUWltT1o1UUFZeXRtWWFRcFdsL3BNWXo2elNqOFJxa1ZETkVKR3FOZlRLQTJpdkxZd1g2bFN0dE1QYXBnMEo4NGw5WDB2b1ZOL0ZwUzRWQ1ZBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlFnS0ZBaEc2UmFXK2hUeTUyZHhlVDhiQzk2SHpBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBWU16Z0xySkxJcjBPb3ZRbkFaclJJR3VhYmlIU1VLU21iTFJXcFJrV2VBdHNDaERFSHBYY0ovYmdETktZV29IcVE4eFJVakI0Q3llcFlldmMzWWxyRzhvN3pIeHBmVmNhb0w1U2V1Smt6SHhLbjRiVGFTcDkrTXZ3YW1ucDY0a1pNaU5iRkxrbmZQOWtZS29SSGtNV2hlUkoxVXNQMXo0U2Nta0NlSUxmc01zNnZxb3ZxaldDbEZzSnBCY3NsdVlIV0Y3YkJKMW40UndnK0FURW9wWTRJZ0d2Nlp2d2MrQTlyK0FUMmhxcG9Ta1lvQWwrQU5Zd2dzbE9mOXNKZTBWK1RBOVlZL1VsYUJtUFBUZDAvL3I5d3ZjZVBXWmtQaktvQUMvelVOaGZEYmg0TFY4R0hzM2x5WDJYb21ML0xOYzhKWXp5SWFERWhHUXZlb1BoaC90cjFnPT0iLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVIzOG1xMjZTZjJzelZWMkJkRzZXRU43a3VXVXdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFSWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFOWTBXYjlvUG9Sb0tvUXlXUGFKcHoxMXZyV1RnNnpUdG1OajJWb0tSbnl2S0dScXB6YjgzdzVsNllBOTZVWWtZQkRRUDBpbE8yRFBlNndXcVZSNXpEZlJ6ZGNIOGJoK0w3ZEdHdmFlNmhSVFpoa0ZrQ3BYRHM0SGNja25yRGY4RkNsSjdIZTM5SmY0Mi9HMVFtMnp6OVdXbXJQWHRnaUsveDA1R2pzUWZHdURHMXpmNVFUVVVpZThsd3ltSzNUZmRPdk5lZUpBQVBlMnBuN0l0ZlJiK3JWck5XaUR6bFJuMnZObloyd1BvNHdIL1dKNmRoWFpHK3JNV1QrYTZCb2NnMVVmSXc2a2R1bkc0YlRwWnpzdmFjRll5UjBtcGYrRGVPbnBTV0FteXdKV0h2VGxmMllYeEZ5ZVhjVEFDZFFsY01OR0oyVmhaUTQ4eHRQNS9SQlAvOGtDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNoeTQyb2tpcWNUUzFpcWEvSFJXamtCbjRIL01COEdBMVVkSXdRWU1CYUFGT3EzUXBDZURIdGtldHRVZkFPNmZFNmYyS0ZoTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBbitSSElQYnRNRUROZFQxZzhIL1JpdEFrVWRMZ0F0MXRXR1dubGo5a25idjQvNEdsWDdDOXA0NWVmUE85L2FaTDZPVjFYUktCaTZLbXRCVzVLN251WUVuTXgvNUJxQlNiTFQ3cmhkdUM0OVRCZU1iOVBIZFhzVGxTVk5ZZWZyMWRHaWRyNGoweFZCUUxiMXJrbkRBYmRXRHpLZnZuYXlLTzhGcndlN0h4ODQzTUcvckorYzBYcnVVdmJmVlRDSExpSVdoTTdvTkRoTDh4b2I2eFVvOUtMS2NTTCtJdFlzTzMvOVdiOFE5R2pzcUw0RlhzRGNHMVNhWWg3S3BmdU1tT2l4cXpKWk8ybklpY1BZUmcxSTJTdWlVZllPNzB0bWRIY2JsK2tTUW1TWXQ3cnE0dmlJTGcyR3gzajlySVR1V1RqYmFVYVNTUXhnT21NU0h1eXpNQUMiLCJNSUlEU0RDQ0FqQ2dBd0lCQWdJVURxRVJ3KzRSbkdTZ2d4Z1Vld0pGRVBEUlozWXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFESTdYbkgrWnZEd01DUVU4TThaZVY1cXNjdWJsdlZZYWFSdDNZYmF4bjlnb2RMeDVzd0gwbFhyZGdqaDVoN0ZwVmdDZ1lZWDdFNGJsMXZielVMZW1yTVdUOE4zV01HVWU4UUFKYkJlaW9WN1cvRStoVFpQLzBTS0pWYTNld0tCbzZVTGVNbmZRWkRyVk9SQWs4d1RMcTJ2NUxsajV2TWo3SnRPb3RLYTlKN25IUzhrTG16WFhTYWowU3dFUGg1T0FaVVROVjR6czFidm9UQVFRV3JMNC9KOVF1S3Q2V0NGRTVuVU5pUlFjRWJWRjhtbHFLMmJ4Mno2b2tWbHR5RFZMQ3hZYnBVVEVMdlkxdXNSM0RUR1BVb0lDbE9tNGNycHduRFJMVkh2alllUEdCQi8vcEV5enhBL2djU2N4andhSDFaVXc5Ym5TYkh5dXJLcWJUYTFLdmpBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlRxdDBLUW5neDdaSHJiVkh3RHVueE9uOWloWVRBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBcVFhQ1dNeFRHcVZWWDdTazdra0ptVXVlVFNZS3VVNitLQkJTZ3dJUm5sdzlLN0hlMUlweFowaGR3cFBOaWtLam1jeUZnRlB6aEltd0hKZ3h4dVQ5MFB3M3ZZT2RjSkpOa3REZzM1UFhPZnpTbjE1Y0ZBeDFSTzBtUFRtSWI4ZFhpRVdPcHpvWHZkd1hETTQxWmFDRFlNVDd3NElRdE15dkU3eFVCWnEyYmp0QW5xL05EVUE3YmU0SDhIM2lwQysvK05LbFVyY1VoK2o0OEs2N1dJMHUxbTZGZVF1ZUJBN24wNmo4MjVycURxc2FMczlUYjdLQUhBdzhQbXJXYU5QRzJraktlcnhQRWZlY2l2bEZhd3AyUldadnhyVnRuM1RWMlNCeHlDSkNrWHNORDA1ZENFclZIU0pJcytCZHRUVk5ZOUF3dHlQbW55YjB2NG1TVHp2V2R3PT0iLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVRuYmJHSVIyTkh2enFJS0ZBZVF3RzFYQmlzMHdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFRWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPc1hqM2swNEJhbjRUWWR0WktxRC9PUEp4eUR5YVBtQ0JVRlVpYVpJZ1R0ZVpuajNYMjVEaGdwWlpYc0M0RDB5ZEljcmxBNndOVUluT1JML0w5ekJiVEVJTUFWTUdvNmc3VUtBbWIyTUY2QUhibmhZSmQ5ZWlrdXBWTldTaEhOWU5jNEdCZE8xWU42QWZVcXZKaEhiZTNWNFNOTVBtQlJFS0pQVno3VGh3Z21nZ1RlOFdzMkswL3dzcXYyd1NFN3BiQ0JzVVpoSVg1MWJaTTNwcUR3SlBUbVJGRXZ0MC82dEc1ZU84RjNqMTRPWHFmRWhtam4xVnZ4S0RZUU9MWkF4Q3d3Z0MwUDRDZGZXdjN5OFBTUjhJMzU0aE8xWStHek5qdklxWDM4TktMeXd1SVlIRmVyT3hObHhFTUJ2RmhZQnVSdVlBa2tnVWFQcU42VUJoc0lMcnNDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNDb1JIaGl5Tm5iblhSV0lMNlpCWG9CWDlZVE1COEdBMVVkSXdRWU1CYUFGQ0FvVUNFYnBGcGI2RlBMblozRjVQeHNMM29mTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFDUUZhZkpJMS81V2c5Q0VFaW1FMVJQNTRSZ1F3VE5UT09Rc0xBQ1RlK3JJdGxGUXpDOVpEaHJWODI4eVg3anp5K0FBc3AzaXpLN1QxdGgyZGw3bSt0dTBzdzJQYS9vbGMwMm50NlB5SXczNDhnYUh6aEkxKzBLRTQ1cXh2RkRlTDJsTXhiUGZDWXZ5RUVhWXpqaVFFTFU1OTUxcFhHV3lLTWEvNGZMdE8rWktPWGhNdVZlcTRyWERQSTU0VzZKSE9pQWFpS2Rpdys1ZTNjMmt0L2pGSVF0TTZ2TVhnOUxORnpkakVUTnQyMFZYOVFldlJwRlpmdWNNRzl3Q2FRRG9GbFB6cFRNSktoUGV2L2ltSm1aWWhLZnIwbExjZW10cWpJeExBb3FaZE9ZZkhCZzYrdkFjZFBJL2lhdUdwVUF2N1grVUtObUR3aloyQmFINHNMd2hCMm0iLCJNSUlEUGpDQ0FpYWdBd0lCQWdJVVh6ZWlFREpFT1R0MTRGNW4wbzZaZi9iQndpVXdEUVlKS29aSWh2Y05BUUVOQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU1aNi9UeE04cklUK0Vhb1B2Rzgxb250TU9vLzJtUTJSQndKSFMwUVpjeFZhTlh2bDEyTFVoQlo1TG1pQlNjSVpkMVJueDFvZDU4NWgrL2RoSzdoRW03SkFBTGtLS3RzMWZPNTNLR05MWnVqejVoM3dHbmNyNGh5S0YwRzc0Yi9VM0s5aEU1bUdORDZ6cVljaENSQUhmcllNWVJERjRZTDBYNEQ1bkdkeHZwcEF5Nm5rRW10V21NbndPM2kwVEF1Y3NyYkU0ODVIdkdNNHIwVnBnVmRKcHZnUWppVEpDVElxK0QzNWh3dFQ4UURJdituR3ZwY3lpNXdjSWZDa3p5Q2ltSnVraFl5NktvcU5NS1FFZHBOaVNPdld5RE1UTXQxYndDdkV6cHc5MXUrbXNVdDRyajBlZm5POXMwWk93ZHdNUkRuSDR4Z1VsNVpMd3JyUGtmQzEvMENBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUI4R0ExVWRJd1FZTUJhQUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUU13RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCRFFVQUE0SUJBUUMzSVcvc2dCOXBaOGFwSk5qeHVHb1grRmtJTGtzMHdNTnJkWEwvY29VdnNyaHpzdmw2bWVQTXJiR0pCeUoxWG5xdUI1c2djUkVORnhkUUZtYTNtaW84VXBmMW93TTFacmVYckowbUFERzJCcGxxYkpueGl5WWErUjExcmVJRlRXZUloTU5jWktzRFpyRkF5UHVGakNXU1F2Sm1OV2U5bUZSWUZnTmhYSktrWEliNUgxWGdFRGx3aWVkWVJNN1ZvbEJObGxkNnBSRktsWDh1c3Q2T1RNT2VBRGwyeE5GMG0xTFRoU2RldVh2RHlDMWc5K0lMZnozUzZPSVlnYzNpcm9SY0ZEMzU0ZzdyS2Z1NjdxRkF3OWdDNHlpMHhCVFByWTk1cmg0L0hxYVVZQ0EvTDhsZFJrNkg3WGszNUQrV1ZwbXEyU2gveFQ1SGlGdWhmNHdKYjBiSyJdLCJpY29uIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwiaWNvbkRhcmsiOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJwcm92aWRlckxvZ29MaWdodCI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsInByb3ZpZGVyTG9nb0RhcmsiOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJGSURPXzJfMCIsIkZJRE9fMl8xX1BSRSIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsImxhcmdlQmxvYktleSIsImNyZWRCbG9iIiwibWluUGluTGVuZ3RoIl0sImFhZ3VpZCI6ImZjYzAxMThmY2Q0NTQzNWI4ZGExOTc4MmIyZGEwNzE1Iiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibGFyZ2VCbG9icyI6dHJ1ZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOmZhbHNlLCJhbHdheXNVdiI6dHJ1ZX0sIm1heE1zZ1NpemUiOjE1MzYsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6OCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoxMjgsInRyYW5zcG9ydHMiOlsibmZjIiwidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN30seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTh9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi0zNX1dLCJtYXhTZXJpYWxpemVkTGFyZ2VCbG9iQXJyYXkiOjQwOTYsIm1pblBJTkxlbmd0aCI6OCwiZmlybXdhcmVWZXJzaW9uIjozMjk0NzYsIm1heENyZWRCbG9iTGVuZ3RoIjozMiwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjEsImNlcnRpZmljYXRpb25zIjp7IkZJUFMtQ01WUC0zIjoyLCJGSVBTLUNNVlAtMy1QSFkiOjN9LCJyZW1haW5pbmdEaXNjb3ZlcmFibGVDcmVkZW50aWFscyI6MTAwfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMTItMjEiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2LCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ill1YmlLZXkgNSBGSVBTIFNlcmllcyB3aXRoIE5GQyIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjQxMjIxMDAyIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMTItMjEiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTAxLTEwIn0seyJhYWd1aWQiOiJkODIxYTdkNC1lOTdjLTRjYjYtYmQ4Mi00MjM3NzMxZmQ0YmUiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6ImQ4MjFhN2Q0LWU5N2MtNGNiNi1iZDgyLTQyMzc3MzFmZDRiZSIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJIeXBlciBGSURPIEJpbyBTZWN1cml0eSBLZXkifSwiZGVzY3JpcHRpb24iOiJIeXBlciBGSURPIEJpbyBTZWN1cml0eSBLZXkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUJ4ekNDQVd5Z0F3SUJBZ0lDRUFzd0NnWUlLb1pJemowRUF3SXdPakVMTUFrR0ExVUVCaE1DUTBFeEVqQVFCZ05WQkFvTUNVaFpVRVZTVTBWRFZURVhNQlVHQTFVRUF3d09TRmxRUlZKR1NVUlBJREF5TURBd0lCY05NVGd3TVRBeE1EQXdNREF3V2hnUE1qQTBOekV5TXpFeU16VTVOVGxhTURveEN6QUpCZ05WQkFZVEFrTkJNUkl3RUFZRFZRUUtEQWxJV1ZCRlVsTkZRMVV4RnpBVkJnTlZCQU1NRGtoWlVFVlNSa2xFVHlBd01qQXdNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVyS1VJMUcwUzdhNklPTGxtSGlwTGxCdXhUWWpzRUVTUXZ6UWgzZEI3ZHZ4eFdXbTdrV0w5MXJxNlM3YXlaRzBnWlBSK3pZcWRGendBWURjRzQrYVg2Nk5nTUY0d0hRWURWUjBPQkJZRUZMWlljZk1Nd2tRQUdidDNyeXpaRlBGeXBtc0lNQjhHQTFVZEl3UVlNQmFBRkxaWWNmTU13a1FBR2J0M3J5elpGUEZ5cG1zSU1Bd0dBMVVkRXdRRk1BTUJBZjh3RGdZRFZSMFBBUUgvQkFRREFnRUdNQW9HQ0NxR1NNNDlCQU1DQTBrQU1FWUNJUUNHMi9wcE1HdDdwa2NSaWU1WUlvaFMzdURQSXJtaVJjVGpxRGNsS1ZXZzBnSWhBTmNQTkRaSEUyL3paK3VCNVRoRzlPWnVzK3hTYjRrbmtyYkF5WEtYMnptLyJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFJMEFBQUFXQ0FZQUFBRDkveDhsQUFBQUJITkNTVlFJQ0FnSWZBaGtpQUFBQjNGSlJFRlVhSUh0bWsxeTI5Z1J4MzhOSXRMU3pBbk1uTURNTmttVjZhcXB5bko0QTlNbk1DU1NWYUcwTUx3UXNSQmx3U2NRZFlLUlZsbWxSRzVtRytvRVE1MGcxQzVVU0hRV2ovaCsvTkJFdG1jbStxOEl2RWEvZmtEM3YvdjFZNFZOT0F4YS9QbTdLai8rWTFvYTgvd3FmL25yMy9uVGQzZlc4V2Y4WnVHdUhXbjNtd2dYd0J2cmVHVXZCQnBBZzhQZ0haOTZ3eTlpNFRPK0xkcjlKaUt2VmxkakJyMlJZeFhzbnRTQml3Mktob2k4VGE0ZExqZ01XazlvNmpOK0NlajBQVVJtd0JpSnJvbW8wUWthWmFmcG50U0o1QWFSNmdaRmIwdjNueDNuTndpcE11aU5VQjJpRWxLSkpxRDFmSHJ5L0NvcUYyc2R4ampGK2RvNWpPT3dNVlZsNlU2aWEwNlBKN254VHRBQVhxK3V4aXlZNHBJNjZXTCttZENmNVo3cG50UlI1L3RVaGt0K0YxV0o1QlVpdFpJTnFsT1dNaWJzcGJWWXArK0J2RmhyZDZ3MzdFMU5ZRlZlSTJwNVR6Smg4ZTl4eWNaNGJTcXZjcytKanZpUDNDVzJQTWFPR0Y1UW82S3ZTMnNWSFhGNk5NYnpxN2o3NzgzYVpjYlozejduNUx5Z2xyemppTHZrKzBXWU9VU3FxTllZSEUvb0JNMjgwN2g3VnlEMXpKMXJCcjFSc3VCU3l0SURWRm9JcjVKYkRoZTArelBPanE2c0N4WThZcWRRUjRCSlFhSUJmRmo5L2dqekVQWVBBUE1pSzN0L0FQS01Gb21ISkk1MUQvUFA2TjRRa2RmWUlHS3F1Vnd0SnV1RElZYkxHSmlpRWlKcTE0MUNaVy9HWVhDUTZPNmUxSW1jSDRBYW9nVnhBVmZIcTNVL3pnNkFkaEFpdkFleG1DTFFDZUthMURmcUZTRHZOQzYxWk56Uk1XRHNGdXFySlExQmpIT2hzelE5dGZ0RHlMeGs1WmJGdkpVc1d2V0hna2tmR1J5RkxPY05sTnZDMk1XcUx2cmZZU0kyVEs1RjNocmpWL0NDV2k1ZFJualdLTGZCNFNLbjY2a2dVa1gwSE04M2pCTEpGY0xUejlNSmZPTXdYd2hMUXRwQkNQSVR5RSs0dEZnOERBM1RIQWF0VEtRYWgxbk9HNFQrRE0rdmxtb2MxVXZPam94bkdwa0dsZjFSd2pnaVZaUUw0STlQWXZ5ZzU5UHV0eEI1Q1VBRkQvRE1iL1dUS0ZPOTQ5TlJPVFdxWGlJU1UyNE5KOE9ZRGczaXlFb2ZPQUFwTWlBczV1VjdXZDFabGhTcDR1N1hnVkZpOXpyZG9tdWNmSXNkU2pNaEdOVTdJQzVjODdMR2pzZkRwRUN2ZU5zMWthcm5HWHE3WjBremlWWjNmd2hrYy9jMVowY3BBNTBlVDZ5T2c5VHBCRDZEbnYrekRDNUN4VisxQUFCOWkrZjdzRi9OT2J1SXZSQVhtU1pwRnFEVGJ5V3M2dGdZUUNZNStVM0k2eDdSRHBxNWRGM0VRcTV5OWNobTVadnR5TTRqMGxvcjJ3bDJtMjVIdUZUVXo3RkloSmRmbEZiVFNPYVc1U3BseFVWenpDYWhQNk43MGtLZGY2YVA2bnZpWEdtRDhwSnVQMThiUkx5MHBXYys5WWJKeHpaUjdLRmFTNTFkeHd5T2R2dlEzeElWYm1qM2ZaWVAxenVuVVJ1NkozV3k1ZEd1VHY0RWNCRnBacTd2MSs1OGlpbkwzYnNwRk0xd2VqeWgweDhuVVN4U3hRdHFheU5MYUtFRmRyQTVURHJvQXpmR0huMmYzK1hKYnM0WlVjdlZidkVPSVkrYlVuU3F6amc3K3YxRzNTb05zTENNU1dHR0VZVWF5QkIzSDlyQkVPRnl3d2N2MjJHQ280RTY5aDN1VjRCRHZDc0JVUDYxUnM2U3NzU2VKN1ZBOXp0VDhRNHdML2Nhb0ZSamJhYnhGaW9qVkVhWitnUGdubWh1MytXVmRLeHBRMlIxWjFsVjlTNnhhZm5nb1hwcGZkWTR4dE9rOEs4RUZ6VERETlE0REZwNXRwRVpFalVJajFkYnZQNFErTjZpSys0eFpJdSs4Y2JaVmUrUVFxUXJ0WHpoV01BQ0Q3Y3cvM0lEeTZ5ZG0xdWNxR1ZORVlZWkNzNitybGkxNGhwSFU1dk1IQzI4d01mVkpvcFhXT01IdkdCWUNqQ2JIVkhScnE4UEZ5VkVTT2xhOUp6dXlTUnB1aTNtNllzMVBZRnNOL2crK1dYNk9JVWV3NWFQS1RJc0Zjb202ajdZSDhBd1Y3dWYwcjN5ZVN1YlpYYzR1K1IrWTlldU5jSWJWS3VJWkZzU1lhbHBHZHR1MmdmaDZuMWRFVE85NlpYazE3SEpEck1yU3E4M2xRRmJaYlcrcFM3SXdWazE0YTR6aHBvdGR0eG5pUjNHYk12elBRR0pURVBLMXNkUlBuK3g0aXdiZmNKMkJvaDNPRi9LbnVJN1JMYzM2QWE5RVpweGt1aVJmUnp6WGRLZ3JXd0t0SUtzbTJtT21sNVNwdDFpMmVJWFlQbzBpM21MeXQ0a29VeVJLaEUzZEUvZWNIbzg0VEJvNVhvYkFCSHYrSFE4c1o1VktiZWM5VXI3KzE4UDlKeE9VSFpHaVE2c0RBTG1IYnI3VStCRnJ0MWdqampLVHFUVWNnMi9TbVRSdThVTzFhdE1nZDFhSGRGTXJMSXdJaTByUHRBTzNpSk1VYTFEdGw3VHJZRmxuTVpzbDV1cllzN1FaZXc0N2I1bklpZERYeEZwK3oxeWhnalpvdlNPNVVOajI4Uy9iS3dyOGpmc1dFSi9ScWZ2SjhjQXF1L3hnaUZLbGVTSUlEdEZWcTllTXJBNTR4WTdsdUxqMGlUN3pZcHp4YklTK2FqVFNHV3BBVFVrWTRoeXUvYjRKNFAwN09uMGVFTDNwSUU2ZWNjcGRrdFZMM05kMTN3ajZ4NUhtNXh0NkQrb1RKTHpGMXRSRnpGZG5YK3NML3Aya2RrMlQvbUJ6VVU3cEozYnJPNXNOM2R3Rk5MdTF4RnFDQ1lOTEJqaThoRTBQbHVxQXk5V0c1QVpFVmY1THZZajdBaDdVN3lnVGdVUDBYcXFHK01Bd3BURktnV2VIaytNclBvZzlmeDMwekhJaU9VOExFNWxuYjUweDlCcDZqaFptT09EZkYrbEUyUmJURysrWnBQcEdkOEc1Zi9UbkI1UFZnWHVmWDVBeHlXSHlTTGkzYlBEL0gvQS9zKzlvdU1vdHl3ZW1sWlpJM0R3L0hmUFp4aDBUK3AwK3FQa2lOK0dUdjlYdkV0NnhzL0Jmd0doaG1uWWNheWRnUUFBQUFCSlJVNUVya0pnZ2c9PSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzFfUFJFIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiJkODIxYTdkNGU5N2M0Y2I2YmQ4MjQyMzc3MzFmZDRiZSIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwidXYiOmZhbHNlLCJ1c2VyVmVyaWZpY2F0aW9uTWdtdFByZXZpZXciOmZhbHNlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWV9LCJtYXhNc2dTaXplIjoyMDQ4LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0IjoxMCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjo5NiwidHJhbnNwb3J0cyI6WyJ1c2IiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fV19fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMS0wMi0wOSIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiSHlwZXIgRklET8KuIEJpbyBTZWN1cml0eSBLZXkiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDIxMDIwODAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4zLjciLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMyJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMS0wMi0wOSJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjEtMDItMDkifSx7ImFhZ3VpZCI6Ijk4NzY2MzFiLWQ0YTAtNDI3Zi01NzczLTBlYzcxYzllMDI3OSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiOTg3NjYzMWItZDRhMC00MjdmLTU3NzMtMGVjNzFjOWUwMjc5IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlNvbXUgU2VjcDI1NlIxIEZJRE8yIENUQVAyIEF1dGhlbnRpY2F0b3IifSwiZGVzY3JpcHRpb24iOiJTb211IFNlY3AyNTZSMSBGSURPMiBDVEFQMiBBdXRoZW50aWNhdG9yIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlCOURDQ0Fab0NDUURFUjJPU2ovUytqREFLQmdncWhrak9QUVFEQWpDQmdERUxNQWtHQTFVRUJoTUNWVk14RVRBUEJnTlZCQWdNQ0UxaGNubHNZVzVrTVJJd0VBWURWUVFLREFsVGIyeHZJRXRsZVhNeEVEQU9CZ05WQkFzTUIxSnZiM1FnUTBFeEZUQVRCZ05WQkFNTURITnZiRzlyWlhsekxtTnZiVEVoTUI4R0NTcUdTSWIzRFFFSkFSWVNhR1ZzYkc5QWMyOXNiMnRsZVhNdVkyOXRNQ0FYRFRFNE1URXhNVEV5TlRFME1sb1lEekl3TmpneE1ESTVNVEkxTVRReVdqQ0JnREVMTUFrR0ExVUVCaE1DVlZNeEVUQVBCZ05WQkFnTUNFMWhjbmxzWVc1a01SSXdFQVlEVlFRS0RBbFRiMnh2SUV0bGVYTXhFREFPQmdOVkJBc01CMUp2YjNRZ1EwRXhGVEFUQmdOVkJBTU1ESE52Ykc5clpYbHpMbU52YlRFaE1COEdDU3FHU0liM0RRRUpBUllTYUdWc2JHOUFjMjlzYjJ0bGVYTXVZMjl0TUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFV0hBTjBDQ0pWWmRNczBva3RaNW05M3V4bUIxaXlxOEVMUkx0cVZGTFNPaUhRRWFiNTZxUlRCL1F6cnBHQVkrK1kybXcrdlJ1UU1OaEJpVTBLendqQmpBS0JnZ3Foa2pPUFFRREFnTklBREJGQWlFQXo5U2xyQVhJbEV1ODd2cmE1NHJJQ1BzKzRiMHFocDNQZHpjVGc3cnZuUDBDSUdqeHpsdGVRUXgralFHZDdyd1NadUU1UldVUFZ5Z1loVXN0UU85ek5VT3MiXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBTFFBQUFDMENBTUFBQUFLRS9ZQUFBQUFCR2RCVFVFQUFMR1BDL3hoQlFBQUFDQmpTRkpOQUFCNkpnQUFnSVFBQVBvQUFBQ0E2QUFBZFRBQUFPcGdBQUE2bUFBQUYzQ2N1bEU4QUFBQytsQk1WRVgvLy8vdzhQRFgxOWUrdmIybHBLU2tvNk8vdnI3YTJkbjE5UFg2K3ZxN3VycDZlSGhmWEZ4R1FrTXNLU29qSHlBekx6Qk5Ta3RvWldhS2lJalMwZExZMTlpRGdZSDgrL3paMk5sNGRuY3hMUzZYbFpXNnVibjQrUGpvNStkNGRYWWxJU0k1TlRhdXJLMysvdjY0dDdjc0tDbFpWbGZ2Nysram9hSGs1T1E1TmpmcjYrdmczK0JsWW1KV1UxU29wcWZIeHNZbUl5TTlPVHBTVDFBL1BEMDRORFY4ZVhyVzFkWDgvUHplM3Q2SGhZVXRLaXE4dXJzdkt5emo0K1B2N3U1ZlhGMW5aR1hSME5Fbkl5VGg0T0QwOVBRckp5aGFWMWptNXVaK2ZIMUVRRUhGeE1US3ljcTN0YmFpb0tHTmk0eTJ0TFh1N2U3R3hjV3hzTENlbkp5Umo1Q21wYVhRejgrUmo0OC9PenpFdzhTV2xKUlZVbE1tSWlOVFVGR1VrcFA5L2YzSXg4ZUlob1pIUkVWa1lXS2tvcUtlblozVTA5TmhYbC9UMHRKS1IwZDdlWGtrSUNHQ2dJQnNhbXByYVduVjFOUXFKaWRyYUdubDVlVzBzN05YVkZUczdPeEZRVUwyOXZZK09qdDJjM1FvSkNWY1dWcWFtSm5NeTh2TnpNeWJtWm82TnpqbjV1YzNNelRwNmVsWVZWWDcrL3RtWkdSaVgyRE96YzFTVGsrVms1T1BqWTNxNnVvME1URnRhMnVCZjM5TVNVcUdoSVZlVzF2THlzdXdyNitxcUtpM3RyWTFNVEx5OHZMajR1SmJXRm5LeWNsQ1B6OHBKU2FxcWFsSVJVYmMzTnlzcTZ1eXNiR3pzckoxY25QZjN0OHpNREV1S2l1Wmw1aWhuNkNjbXByMjlmWEp5TWhQVEUyTGlJbjM5L2RkV2xzOE9EbHpjWEZ5Y0hDQWZuNVVVVktYbHBaTFIwaDBjbkpZVlZhNXVMaERRRUNRam82Zm5aNUpSa1p4Ym05allHRXdMQzFNU0VsbFkyUHo4L05CUGo5UlRrN2IydHJEd3NKUVRVMnBwNmh3Ylc1T1MweUxpWXBnWFY3UHpzNzUrZmxxWjJneUxpODdPRGpDd2NHZG01dUpoNGVycXFwQVBUNm5wYWJRME5DRWdZSitlM3p4OGZHdHJLekF2Nzl5YjNDRmc0U1NrSkZ1YTJ5MXM3Uzl1N3l3cnEvRHdzT01pb3VFZ29QYzI5dVlscGU5dkwxOWVudnQ3ZTNkM2QwMk1qT3ZyYTdwNk9pZ25wOXBabWQzZEhYQndNRGk0ZUZHUTBSL2ZYNk9qSXh2YkczVzF0YWMxMlY0QUFBQUFXSkxSMFFBaUFVZFNBQUFBQWQwU1UxRkIrSUpHaGM2SEkwdDhtQUFBQTJUU1VSQlZIamE3Vng1ZkJSRkZpN0NIVWthUkF5M3dVQzR4SkFBUzdqQ0VRZ29rVlBrVEJpeWlrQ0d5NFVWQ1VIT29JYVFjQ2NZZ3NncHl4RkFFVGNDSWdSdzVVZ011QXJveGd0V0ZQQllWMTEzZjcvTjFPdWVldFZkM1RNMUVTWi85UGRQcHQ1Ui9hVzd1dnBWMWFzaXhJWU5HelpzMkxCaHc0WU5HelpzMkxCaHc0WU5HelpzU0tOU1FPVXFWYXRWcitGdkhsNmladUE5dFlLQ0ZSVzE2OXhiOXo1ZnE2cDNQMFBJSGFSY3YwRkR4WUNnUnI3ZDhjYW9qaVozakhMVEIwSVZJWm85R0ZaUlNUZHZvWmdpdkdYRkpOMHFWTEZBVU91S1NMcUtZbzAyYlNzZTZZZGFlQ0N0dEt0d3BNTWU5c1JaVVNJcUd1bjJPb0tSVVIwNlJ1cGtuU1E3Mnp0TytnSE1MdmdQbmFQTFpDRmR1bmJqV0hldldLU2I5RUFYaUlweHkzdjJ3cVI3Vnl6U2ZWRDlzWDJSb2w4ZHBJbVQrOFRjYWRLQnFQNytuS1lldnRVREtoVHBxcWorUjNqVm8wZzEwT2paTXY2eFFZTUhEeG9TUDFTUzlJQmh3eCt2TytLSndKRSsveitqVVAyamVWVkViNFl4T3JlQXNlTVNOTGZReFBHZHZTWHRtSkQwUjlib25ueEs3Z2xxbUlnYndXTmVPajA5U2QrVDE1cnNGZW51VS9RZGJISlRIMGczeDFVNHAzcnp4TnBPY3lvR09LZWpqNzBKNlJtSlJqOWxabEpOYWRKOStDb2FQaFB4Snc4ZW5hTVVJYUpZR3hHVG5tVVNMOHorc3l6cEdzYWFucDFhYlk2NVErTmd4UVRCalMxSkR6YnpVNTZyTDh0NnJxaWFsSG1wOWNUbTgyTk5yNjJrUEc5QmVvRzVuN0pRTm82Y2IxWlRtd2VHVkRKWUwxcHNjVzJsMlJKVDBnTVRyQnlYcGtteVhtWmVWOElMTC9LMmpwZXd1bHV2OU9YaE03RmtkcGdKNll3VjJLeFQ1dU5aSzdtUnh5cEowcFZNWGl6QTZqWFlkaTNTUks2anNWL05WTnlYckRjaC9RaVNaTU9keUptT1pMRWJKRm5mdDBLeHdzdTVic3VRalV5Y0Y2aEpONkVuLzRwRFNIb0RlaE1XYmxiOW9oc2dzN21TcEVucmxaYXNsZkdhNGF0SXVJWDU0dy9VVmlIcGJlZ0JiV2VPOXpKeHdrT3lyT2VNMkdISk90a0JkaWhjallwRzdtaktwTGVJZE5wT1ZzNUUxMzBSMmIwbVM3cnN1cnRHVzdIK0N6WGFuY2NramJEM0tpYmZtU1lndlFlVnVYZGtMNU92bGlkZDFsNkhXelNTdk9vdWsrN29hWEpmc2I3SWRJK0E5RDVXbk1KZGRCMjZSTDR2ckFtSmlaaGUyNFQxZnBjK2laVVA4SjdvOGFjTFNNOW14WU9jM3d4a09OODMwbVZ3OUVsL2VhYUF0Tk1WUTc3T3lvbThXeERUdkNFZ2pUcWRmWnpmVUdTNDNtZlNMalJwdi95UUlZNTdzMHhSaXhXZjRWMzJNODAwQVduMElBYnhqbkZNODFTNVNMdlFPajJJSiswYWloMW14YW04K1Z0TTgxY2o2WHhVTE9BZDMyYWFJK1VtWFlhalhHajBOdDhJa25qYmUvaUdveU9kZzRyVmVNZGpaZzNIVjh6SGpidEZtU0NjRmQvaFRZOHpUVzhqYVlLNlN0MWsxYnRNTTlGYlh0RjFUakRzMFd0UDRsdGRTRWdtM3dnUVVNTkpGcEJHMFEzZkNQb2h3eTNFV3l4RVhsbDY1U2FrZEpZTmlySlk4UlJ2aVQ2b3l3V2tUN05pQTg3dkRESWM1alhwcGNpcm8xNDVIQ2s3RVM3MDREOEZMWkZoZ1lCME1pc3U1YTVRZ083S1VPSXQwR3V2S08vcGxLaGZWdjVXVm02TE9zSk4yRENWeVdNTEJhUlIyZGtGTzZKM1lhL1huTW43bUhURDZwd3VCbjhlenhMK01aOURoZzRVdDRRVEFlbCtxQ1BLUW81OTBWMDQ3ejNwSE83ekY0V2ptYzZkc0lvT1doc2hBUnJUWUk0VFJhVEpCVmJ1VWNnYzcwZDJSZDZUeGoyQ0MzVmUzVkRzRXM4cCtDQVB5MnZUeVltY0VpYTVlRWFyb2dnOWtlemRRdEo0SURvN1IzT3Nna1pjOHlRNGsxekZnQldIbjMxWEwxTWY2bGdrMmpFU1pKZnduTUtIUkVnYU4xNWxwUm9oanNjWGtBdVhraFV2c0ZoZGw2dUJtMHhrNHQ4ck43Ly9IQjZnWHN3M0lUMEREOFozVG1yVS9xTzVIK01MUENuRm1mU3pITmVxY0UveXhjZGFtYVVVRVJQUzVFUEwraS9LVGpLTkxGRThBWDBScWxyWlhTYW1wTWxaQzcrOEs1S2NDYW5meGdQbnEzZ2RJTW5jemgxRmlValA2Vy8rZ0xaS2N5N3JrTTlaVVk1c3hGdEhtTFNRV0JZTENlZnkwajR4dVVEMkdxK1pZamdpc2swNWp3dlFXK2NlRU5rZFlOTWpabE85VCt3VU9YYVFYOFpXOGVrUjhXajgzRDhFUzBURnV6cnA3UllmTFVZR1pwUHFQWk1NYzdSVEdudWlab1d3K09UbmRCV2VXbVUyQjV0LytTUzZmTnlUVlhaejZwRm80WU9mV3N4NGN5bnEvTElQTnZZbE00Tkh5NEVMN3NtYzlQQ1VPdjE3Ynh0VjJ0UFN0dmhTNnFyUDl1Ly83UFBVVXJrRm4wcER4bVpsaGsrYXUrL29TRWU1R2R1d1ljT0dEUnMyYk5pd1ljTkdoY1hsY0JlK01ORnVvZHJ3L3I2dlRONFIxS1ZEekMvRnlxM3FLSFNYdjFsS2tQNUs1ZHpLM3lRbFNLK0hQR3BuVlg5emxDQmRvSEord3Q4VUpVZ0h3cHlkODMxL001UWdmUTA0aDI3eW9VNS9rYTZjQXB4ZjlUYy9DZEtsc0V3VStxQy82VW1RdmdTY0U2NzdtNTBFNlgvQzZtTENjSCtUa3lBOUVQSmRFbnhaVmZBWDZmYkFPZklyZjFPVElMMEhwc3NqVFhQdHc5WWtUUjgzdXMzZWRzbHIwWkl4Y1RSeFFaeWVXMHgxckR4ZzJMcXZ6NDQ3bmpYeFd2WDgzNE4wTGl6QXhqWTNzYys0Z1hKRThrNnlIUTdmVUVtVVErQ3ppQzZRdWxQeTRsRUdseEo4dmhLUmhvNzBHdGovRkd1eUZCSjlGTzlBY3VGMWQ1NEc1STZNRVhoOWkwUEZDZUc2R2hxTzNVMGt3Wk4rSGppbm1Held5dGlyR0xCRGk3VWhUL2tkZ1J2ZEpSTDNLZjFkV2JCak0wcDJ3WllqWFFTTFppazN4Yll4cDdSbWNmcFcwb1ZtYW1Hbm1rVlJUSk9DNG5JTWJwT3BHZVErZGxGekJmTGVycld0M1dFdHMzWmVOSkVDSmowU25uMWVOYkhwQm1qTm9lYzd3K3QyK3pva1RmU1lBZnJQYWNrWUZFSmFSN3pyWnlHa3lZMityTzRUdWJJTThsUys5cGwwSDdnTGVhVml5K2hEVkwwUVpaVTFuVWRGaDJHLzRuZTAwRUh2Ri9LOVN4eEVmLzlBVFdhalBtWVBEY3ljN3hFWk1OS1QxWWVWTWtOc09ZSnFlM0VyZFE1d2gxUmxBc3ZmMytqOGJpSVRldE5MZnNUcWYxRjFKcEdCbS9UVDdteUVSNFZ2OHhrNkp2aitVOTF0cEM5WnR3eGEyRXJkZGRtUlpCcTlFOURKMEwyeFAvSDZEaTVaYlljdnBEdWpwSjV0SXNOL1U5VVBldkY3VkF5TC9qWHBFcnR1Y3l1a1NjRkw0NkFmZ1JGOERWL1FHcVN5SjFUU0FWeUN2U0JTV2tJRDdIQ2pvcDFMdmhGK1ExNEYzL2RFVUJuc0RReWgvZDFadmdKSXNoOVBKQUNrejhFT2pMeXhNQzdjMmRkZ2Q4VHNmbHlpQ3NoQmVJajJCUjl3ZXByeGZVcGRBNmZkNVBmOGduaklWaGVrWmxicW9odWM5N09XV25YYUVFUFFiVGtsRG1NRmJYRkRwb25Vc1RpWjhSY25hejZFUUFjMFZiSmJ0aUx0NnVzYzBJa1ozcVpDT2dVaTNDQzhHTFdiSWRUNUtOTFNGaHVab1piVUhWekhxNU55Z1pHR2I4b1N5RmZSZDV6WHFQUnhVUTEwSTBrM2VBWnA5RDg0Z2JRYnVmNGlROHYyTzVaK1JYYS9sb2gwU21VUVZJTnYxR0krSG9Ea3gwdHRCYmhGVmVxOTIwY0xNOXgrejlOeXFidU1EbDZZT1c1VndlM3lrZFk0RTNJREJCZTQxK1dxNGdFcUwyakNXVzQvK2gvaGVQVnozdTNYNU92V2VTVldwRkdNVkZQTncxcUF6VDd6UkZvYm05SEdza1BiZ2xwY1l1aVl0elRUZWJiNHBBdVJCSkJPdVlaRTI5V1lHcDlaYzhFVGFTMU9nazI3MnJCbnZhdVFzSWk3WXRxc3BUcGY1N0lBSWdVZ3pYLzZJYXhSVHZWam9wT2VTR3Q3cjBMb2pUeXVsdWhtUjJOT1prQlNJcDhvRjN5TnlFQTQ3M0VRcW5xZFNlaXUxdENZREZPNDQ1WEI5T2JDSHRDaGxGcWc2THI1RThiM1FxZEVKTHhJSkNBa1hVUGRBOFFtbUdCUG1UZUhITFdtbitwdjZlOUJycC9OVEEvYUNMbVNXa3ZMKys0b00rWVNUNHROaHFtOGJ1N05nL0JWOE9wMGtoZGNsaEErMDlSMjZ3RC9sNlFTL1EzeWxiU1doWHRPNndiVzBPSW4zdFFJWjBLNG9wVHQ5QzN6dEJOMU02UW15bVFqbTVBT2V3RlkzMURMTmVrTVRxSTNOVWJUVWRsVm9xWjExL0xvc0ptMi9CM2xKMDF1UTNmcUxGWExOQ1pKRWQyMVdSUExnSWVWTkNCczR5Q0Vubnd3aENuKzQzNEdQR0NNWDB5OGh1bEt3RUFZNjJlcnNRNGtUazh6MnYxSW8xbThYakNBQmxjVFlQb21HeDExUU45TDVUZERGWkR2SzVFb2E3N21jaDRheUdyNG5NK0I5OFdZTnZ3Yi9hcjF3eUk2TGtpR1FXVlhKQjlEcXpoaHFBSUNCNGs0eEp4MENBUy9kQ3VpMi9DMFBxTjFOeDFydjhYSjZGQzJkdHF2cmovNEU1M2ZUWHhMNlJjeVZpSlgxbUpKTGdhbUZDSmhtMFVHRE1oMEhWZ2E3SENld0FrZE5NT2FUb2J4NHpQWW8zUklkejdFQURybGVjeDd6cGFMbjBQVWZoOG1SOVdzNkt2NFcrSDRrc3ArMWQwbEd2blRscjJXazZ2N1hZNXpuNXRpMktpVS9qdVIxalpIL2hkSzZ1NlNZKzdiR3JiK0JKV3MySzd6YTZvbFNaZm8wcFRWTXk3bVhXTC81WnFYcVdpbXAzTkZ2Q2Fkcng0d0ErdHl4ZHBaRHg5MzNUTGhmejlYcWZzS0ZPT0tESTY5VlV2ZHRsYlNVOXVnc25IOFYvRjlseFJ0ZlZNN0pTeFZnck0xYVZJUFZsK0N2Nk9sRU9HK2oxQkJRRlNxNmd5cDduMU50bm9za3hycldwUFc5cldzaEo3Zk1TTE9jTGsyc3dSdTZzYTVRMGJOZHRIQk5Vb0R1Zkc1QjlMa0ovNDV0NTdHWDIzSGdueWgyMVNxL1VqMC83VFNIMnlTa0NsN1JPWk5laWFtZVloVjZRWTF1T3FleTlpYzdqN0FxOFd4STRVbWJzKzY5RDNFWjkra0ZTejdtQjBVVi9LRzdOa2V2bUZSN3F5am96YmxOalgvSEVCUWVNdThpdWlZOXB0KzY3cXJlMEFPcVRDQXJ1MXBmOU9Rd28rMDAzbkozelRrQUVmVUJKYS9vcnVJWEJyVkh5Ny9icUc3Z2R1MDZ3cTdDVkZzQlY2bXhpaFNObDU0NnlkMTNTN0k0Vzg2M3BKbWlKUGZ6ZWwzMGs1dno5N3pPeGpwRks4UHZ2QTdma21FT0RyMFlFejVLN3Q3S0x3eXB2bkFMdm4rcG1IRGhnMGJObXpZc0dIRGhnMGJkdy8vQjJaSElKNkRtNlQ4QUFBQUpYUkZXSFJrWVhSbE9tTnlaV0YwWlFBeU1ERTRMVEE1TFRJMlZESXpPalU0T2pJNEt6QXlPakF3ZnpQWWRRQUFBQ1YwUlZoMFpHRjBaVHB0YjJScFpua0FNakF4T0Mwd09TMHlObFF5TXpvMU9Eb3lPQ3N3TWpvd01BNXVZTWtBQUFCWGVsUllkRkpoZHlCd2NtOW1hV3hsSUhSNWNHVWdhWEIwWXdBQWVKemo4Z3dJY1ZZb0tNcFB5OHhKNVZJQUF5TUxMbU1MRXlNVFM1TVVBeE1nUklBMHcyUURJN05VSU12WTFNakV6TVFjeEFmTGdFaWdTaTRBNmhjUmRQSkNOWlVBQUFBQVNVVk9SSzVDWUlJPSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIl0sImV4dGVuc2lvbnMiOlsiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiOTg3NjYzMWJkNGEwNDI3ZjU3NzMwZWM3MWM5ZTAyNzkiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWV9LCJtYXhNc2dTaXplIjoxMjAwLCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxXX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIwLTA0LTAzIiwidXJsIjoiaHR0cHM6Ly9zb2xva2V5cy5jb20iLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IlNvbXUgRklETzIgQXV0aGVudGljYXRvciIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMTkxMjA2MDA0IiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjMuNyIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4wLjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjAtMDQtMDMifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIwLTA0LTAzIn0seyJhYWd1aWQiOiI1MjJhM2Y5MS01ZjVkLTQ4MGQtYmUzNy02Y2VjZmFkNWEyN2IiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjUyMmEzZjkxLTVmNWQtNDgwZC1iZTM3LTZjZWNmYWQ1YTI3YiIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJQcmVjaXNpb24gSW5uYUlUIEtleSBGSURPIDIgTGV2ZWwgMiBjZXJ0aWZpZWQifSwiZGVzY3JpcHRpb24iOiJQcmVjaXNpb24gSW5uYUlUIEtleSBGSURPIDIgTGV2ZWwgMiBjZXJ0aWZpZWQiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjowLCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjowLCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCIsImJhRGVzYyI6eyJzZWxmQXR0ZXN0ZWRGUlIiOjAuMCwic2VsZkF0dGVzdGVkRkFSIjoyRS0wNiwiaUFQQVJUaHJlc2hvbGQiOjAuMCwibWF4VGVtcGxhdGVzIjoxMCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRGd6Q0NBbXVnQXdJQkFnSVFhWWpueE91azQ3QkdjK0VpaDI3Ym1qQU5CZ2txaGtpRzl3MEJBUXNGQURCSE1STXdFUVlLQ1pJbWlaUHlMR1FCR1JZRFkyOXRNUmt3RndZS0NaSW1pWlB5TEdRQkdSWUpVSEpsWTJsemFXOXVNUlV3RXdZRFZRUURFd3hRY21WamFYTnBiMjR0UTBFd0lCY05NVGt3T0RFek1USXpNRFUzV2hnUE1qRXhPVEE0TVRNeE1qUXdOVGRhTUVjeEV6QVJCZ29Ka2lhSmsvSXNaQUVaRmdOamIyMHhHVEFYQmdvSmtpYUprL0lzWkFFWkZnbFFjbVZqYVhOcGIyNHhGVEFUQmdOVkJBTVRERkJ5WldOcGMybHZiaTFEUVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBT3M1YXZSeGJ0Uk56YlFEcHZXZ0NNRkNXRVJBRjdKUzliVW0xSEpNemJnMVAzOVVUSnQ0TXJVR3phMTQzT1crVDJDdExhNll3dU9zdkVmb1ZBUm5DZjVRSHV1U3NDMlNTMWduZzEyR0NPYkdCYXNJQkhDMjFSOUhWc0kwVzR1eGY1a2NHTmg4WXlTdHBseFhQY0t4aWcydHJNRDFVNGl6bTRMZU51RlNxY1hmMXhrL2pySW9nZ252TUlWVVlLMFdNM3BSOTFsZWJuaWhzWG5SOEd0V2pBRmRwUUhBT1VZOTRSak45cThueEd1TXVOY2YrMkVaMFZMZVYzdEczaVFaeEp5bDN4OWRaQ3dLNzBXWGozR3RLZHBSL0ZTdWNyaURSTHFiVUZXdU1nS0FYaWZrNG9ranprNWZkNU9GbmV6UGlsN2gwalkzcStIS0tsSGpNOWI0N3dVQ0F3RUFBYU5wTUdjd0V3WUpLd1lCQkFHQ054UUNCQVllQkFCREFFRXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0hRWURWUjBPQkJZRUZQMnJqdzNjTHB3VXpoWjJsdFB0ditjdmRDT2dNQkFHQ1NzR0FRUUJnamNWQVFRREFnRUFNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUNWdVhuZWc1MjZCY1BRakJhdlg5UDYwZzBKSUpLYUowQ1JvUFVHODNJbE01cWx5S1FPcm1HNGZwL1BIbmhQRC9tQTdPNGNYTFZ1eERCKzJXK2duaExEaVZFSnBjanlwQjFHWGlWNWhxZmMwWHBtSFQ0OENhOURpdG4xRWVWZUIxdDhyV0NLMThYbzZ4NXhYTVQ5b1RVRHBQNDEwblZDMndmVlEyMUlYQTZia3pnUU1pSzdCQ0pnZ1dKOEhva2dQaG1QYjRSL3BQTndMdUNsdlJ4cHBuMjBaY0pxcFlRSGVJMDJyMExLaHdjZStrWnBqSkQraFVueXJvMjYyUktyT2Y5KzN5OHpyRllDMTBjYnNMVW1VSnM1cEp4eWdqNGZWR2JrQjlqdnNHMXhUdTYya284cVVYNW1YSk50ejNkUlBDRWNHeDR5MnJvbTZ1c2hBUHRxcjFJayIsIk1JSUVSekNDQXkrZ0F3SUJBZ0lUZHdBQUFDUW9oTk9SUGIwMFJnQUFBQUFBSkRBTkJna3Foa2lHOXcwQkFRc0ZBREJITVJNd0VRWUtDWkltaVpQeUxHUUJHUllEWTI5dE1Sa3dGd1lLQ1pJbWlaUHlMR1FCR1JZSlVISmxZMmx6YVc5dU1SVXdFd1lEVlFRREV3eFFjbVZqYVhOcGIyNHRRMEV3SGhjTk1qTXdNekE1TURjeU16QTRXaGNOTXpNd016QTVNRGN6TXpBNFdqQ0JzVEVMTUFrR0ExVUVCaE1DU1U0eEV6QVJCZ05WQkFnVENsUmhiV2xzSUU1aFpIVXhFREFPQmdOVkJBY1RCME5vWlc1dVlXa3hLakFvQmdOVkJBb1RJVkJ5WldOcGMybHZiaUJDYVc5dFpYUnlhV01nU1c1a2FXRWdVRlpVSUV4VVJERVNNQkFHQTFVRUN4TUpRbWx2YldWMGNtbGpNUkl3RUFZRFZRUURFd2x3Y21WamFYTnBiMjR4SnpBbEJna3Foa2lHOXcwQkNRRVdHR1JsZG05d2MwQndjbVZqYVhOcGIyNXBkQzVqYnk1cGJqQ0JuekFOQmdrcWhraUc5dzBCQVFFRkFBT0JqUUF3Z1lrQ2dZRUFrSzZVa1JlT3ltUDZ1OHJaY24xdkdsUEV6SnpkdTA3Z1Mwc053b2d6ZHE4enBBUnFWaERzd3ZSdThJMnFVdGxHQk1lb3hDelkxY0xNYnpBREpjOEx1ZHR5b202dEZNdEgxaSs5dG5yQ2paUzlqL0picThJcGY1S0xVb0w4VVBkREUrTFFYZnVxWXFwa1NicHU0dEVIQ21hNW13dHJGSTRoUjlVaXVhT1pZNmNDQXdFQUFhT0NBVU13Z2dFL01CMEdBMVVkRGdRV0JCVEVwU1BJKy9Qdm54WXluQXpWejhxb2N2TkFVakFmQmdOVkhTTUVHREFXZ0JUOXE0OE4zQzZjRk00V2RwYlQ3Yi9uTDNRam9EQlFCZ05WSFI4RVNUQkhNRVdnUTZCQmhqOW1hV3hsT2k4dkx5OUNkV2xzWkZOeWRpNVFSMU5QVEZWVVNVOU9VeTVNVDBOQlRDOURaWEowUlc1eWIyeHNMMUJ5WldOcGMybHZiaTFEUVM1amNtd3dkZ1lJS3dZQkJRVUhBUUVFYWpCb01HWUdDQ3NHQVFVRkJ6QUNobHBtYVd4bE9pOHZMeTlDZFdsc1pGTnlkaTVRUjFOUFRGVlVTVTlPVXk1TVQwTkJUQzlEWlhKMFJXNXliMnhzTDBKMWFXeGtVM0oyTGxCSFUwOU1WVlJKVDA1VExreFBRMEZNWDFCeVpXTnBjMmx2YmkxRFFTNWpjblF3SlFZSkt3WUJCQUdDTnhRQ0JCZ2VGZ0JEQUc4QVpBQmxBRk1BYVFCbkFHNEFhUUJ1QUdjd0RBWURWUjBUQVFIL0JBSXdBREFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBbGNJcWpzYTRPU2pxQkl1M2orMDFuczRyUFZwRU5xUiswKy9MMWt6bjN6dmFpWDVZam5Jd21QTUV0Zk04bFdCV0oxeThNeHE2YTN6alB6MDFHQTVDczVBQmhDNHRyR2EyZW1oTmdhaHdmTzkxejg5MUxjZDhNVklieXUwUDRDQnB5MWpERW1lT2ZnZzMzM2FVcHBva3JzdVEwMU9FRkdvbTdUV2cvRHduQlpqb0N3MG9ubklyMnYwemxEVTBKd0pEMjJhaHB4Ykp0d2dobzZsRVVPbStrZDY5K0VvT3Z5SXp2UXZtaldzM3JNdmhudDVkTnc3S1ltVXp5R1dFYUJIbENxT2k2V3NHKzNOVFZtMzhjQVFOVmJmMHJGMU9pRE5hM0dYd1A1bWlIQmVJa1dpbjVvRHk5OUF4aDJ5SnpiRVcxeEVidWFjbzU5eCs0WVlMNmpIL1NRPT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBZ1VBQUFEVENBWUFBQUFSWkdBV0FBQUFDWEJJV1hNQUFCY1JBQUFYRVFIS0p2TS9BQUFnQUVsRVFWUjRuTzJkL1hYYk9OYUhtZmZzLzlKVVlFMEYxbFpnVFFWUktyQlNRWlFLb2xRUXU0TElGWXhjUWVRS0lsY1F1WUtWS3RCN3hMazRnOEVBSUFDQ0ZFVSt6em5jN01nU1AwQVMrT0hpZnJ3N25VNEZBQUFBd1A4TnZnVUFBQUNnQkZFQUFBQUFKWWdDQUFBQUtFRVVBQUFBUUFtaUFBQUFBRW9RQlFBQUFGQ0NLQUFBQUlBU1JBRUFBQUNVSUFvQUFBQ2dCRkVBQUFBQUpZZ0NBQUFBS0VFVUFBQUFRQW1pQUFBQUFFb1FCUUFBQUZDQ0tBQUFBSUFTUkFFQUFBQ1VJQW9BQUFDZ0JGRUFBQUFBSllnQ0FBQUFLRUVVQUFBQVFBbWlBQUFBQUVvUUJRQUFBRkNDS0FBQUFJQVNSQUVBQUFDVUlBb0FBQUNnQkZFQUFBQUFKWWdDQUFBQUtFRVVBQUFBUUFtaUFBQUFBRW9RQlFBQUFGQ0NLQUFBQUlBU1JBRUFBQUNVSUFvQUFBQ2dCRkVBQUFBQUpZZ0NBQUFBS0VFVUFBQUFRQW1pQUFBQUFFb1FCUUFBQUZDQ0tPZ2VrNkUzQUFBQVhBWkVRYmVZRmtXeEs0cGlYUlRGZU9pTkFRQUE3Zkx1ZERyUjVOM2dMQWkyUlZHTTVHeGVpNktZRlVWeEdIckRBQUJBTzJBcDZBYW1JRGh6SzU5aE1RQUFnRlpBRkZ5ZVJWRVVQdzFCb0ZEQ1lEckFkZ0VBZ0paQkZGeVdWVkVVMzQwemVKS2xBNFVTQnZNQnRRc0FBRndBUk1GbEdNdEEvOFU0K21leEhKeDlDWjYxejg5V2hEOUZSQUFBQURRQ2pvYnRjeDd3TjhaeXdiRW9pcVZFSGVpYy8vdmUrT3hGaE1PK3ArMERBQUFYQWt0QmU1eXRBdzlGVWZ3d0JNR2JDQVZURUJReStIODBQcnVUc01WRkh4b0ZBQUM2QTVhQ2RsQ0QvbzF4dEdjWjNLdkNEcWRpWFRCL2o5VUFBQUN5Z2FXZ1dTYmlPL0RER05DUDRqOHdEOHhEc0JOaDhHUjhmcllhL0JKZkEwSVhBUUNnRmxnS21tRWlBN1hwRDFCa21OM1BaUm5DdEJvYzVmTUhFaDRCQUVBS2lJSzgrTVNBeTVrd2hiRWM1NVBqT0lnREFBQ0lCbEdRaDRWc2Q0NjlQY29nSGpKSUwyUzVZQmZ3M1ltSUROZHhuK1R2MnlZdkhnQUErZ0dpSUoyNXR0bXlFUll5S0s4aWxnck9sb1J2TXR1ZkJRcURRcjY3OG9pRE4zRlVYRWZzRXdBQUJnYWlJSnlKREw1eitkY2xCSTR5QU1lSWdjS1JrK0JqNUhMRFRJVEZlODkzbEVEWXlzWVNBd0FBbENBSzdFdzBFVENWelhUc00zbVZBWHdkT2RDT1paQjJ6ZksvSm1ReW5JZzRXSGpFaStKVlc2NVFHMElCQUdDQTlGMFVqRDNGaFBTL3FmOC9sbG9Eb2RRMXk3dnlENWk4UklRdm1vUXNjN2lPV1JqK0NDN2ZoQVBMRWdBQTEwL2ZSY0ZNY2dUazVFVUd4MDNOZ1hCbHFYM2c0eWd6LzAyTlk2cWxqMW1rK0tuaVJmYlpGTXB5VXlCQUFJSXdKMFE0RzBNUS82R1p2THhwSnZWdHBoZHJLcGFGMkVGWkZVVUt6WUpvWTZPSmlyRzJQS0wramJFa3RNRkNsa0hNdGtyMTJ3RG9PejYvb21jSlZVWWdnSk1oV3dxT3hveFR2U2hxVFQzM2k2TnFIOWh5R01SeWxBSHhvWUZ6bkdvemMzTzI0Zko3eUcwcHFQS3owSWwxeGdUb0t3K08zQ1VtVHdtMVU5UVM1S1NqRTRpak5ubGJNMWxJWjJpaTROMEZ6bUVzeW4zWndJdjBKdUxnRW9PaXZ2eVJVeFNvc3RJeGxwUVVaMHlBUG1HTFh2SVIrczZtV2pZdnpaUDB1VGhOUjBMdGcrYVlhSXIxUzBQSyt1eWcrRjJPc2V4Si9ZTk5RZ2YwcFdHZkJvQXU0OHFpNnVNdVFFaFBFd1I2VjdpWGM2Y21UQ1NJZ3J5TXhTeTNsVUpGOXkyWjJXNGs2ZEZlaE1pOGhXTTJzUzdweXdwWkJaWUNHQ0tUU0lkbG5hcUp4S2FEeXdReDNOSXZ4SU1vcUkvS0NYQitnZjRuTS9mVWdlMUZ0dGZFMzQ5RWlQd3Baak1sRUpwV3k2blhhMUpIek54cEVRb0FRNkhPT3pQeS9INFJFQ3A5RFh5aVg0aUQ2SU00cGhhdi9WQWwvU0l6K2IzRnFiRUtQWS9DVkhQMjhabjFsRUJRWnNWclNGTGt5OFFZd2d5blF4Z1lkYTJDcm5jbTFoR3h5OHdiY01ydUxZaUN2ekhOVExybi9TUkJOVDlyWVl4MTQrcjFhQWd6VDhGTTIzd3o5bHZaekxYSFYwMGNtRXNDK3hZSFdWZVNxUmlZRWNEUXFQdmV1TjZaWE5hL0xvQW9pSURvZzcrcDJ4QkhMUTlBblFSRGRSaHI5Umx5aEQ3NlBKUnpSM2JrU0RUVmRCSWxnSzZSb3dPM3ZidDlHaGplbURDRWcwOUJmVjRrVm42Y0llTmdYUTV5L1BONS9DYm5sZXFmQUFEUUI0aEFpSURsZzNSaXl5SXJkTCtFd2tqaGEyT3ZIV05yL0xlUGcxYWdhU1pDSVlmMUFBRDZ6MXRQSEEwTDBxTEhnU2lJSjBZTWpNV1VQNjFSYjBCZjI5TkRqMTZNOU1zK3AwSDFuVlZpVERNQURJdHRqL29KUkVFRUxCK0VjM1ljL0YxbTNENUJNSldCZDZlRktINXFJQUhJbmV6M1R6bk9Ua0lqcTZ3TzUvUC9RNnVDQ0FCZzBwZjQvaU5PaG5FZ0NxcDVrMEYwN2hFREtwWHhlV0QrS1RQNnRyT0EzVW9DbzE5eUhndlBXdHBXTEJjZjVhVUJBTkRaUy85dzdTeXBneEFIb3NEUG81YnEwNGFleXZoYmg5S0IzbXJwajFjZWNiQ1dhM2h1K2Z3QW9QdXNyM3ppUUxHMEJCQUZkczR2d1FkUFFRMGxCdHBNWlp6Q1NLd1dQbkZ3RUN2SVo2d0dBR0N3bG9uUjB4WDFEK2R6L1MrQ0lBMGNEZi9OcTJlcG9NbUtoMDJpeE1IU1UzSloxVm5mOU1qckdBRHFzOWN5SE9vWlZhdklrU3I1SmJET3l0YjRGeElaa2lnSWNhenpsZHRVNlVEclBPUkhMY09oU2pOY2xXNVlUMjg4RFVodjdHTWt5eHdMMlV5djNOMlZWMGJyTWlvRXRZdnBwWE9pWndLOTFnN2FOL0FkdEtpZklhTDZycEI4TExNTW9tQkxVYU4yd1ZMd04wK09mTjlqZVNnL0plNzNXWnVCcHppOHFJRmI3NFRHV21yamVjS0xkeXNPa1Y4dEw5eEJxNkUrcEN4Z1kyTVFDTTBIWVRLVmU2THFZL2dzU2k5R0o5dVdXTGprdFlhRTBMYU5DaDJlUjlZemVkWXNiS0h0cFNLRVZLaXhxa255UU9nY2RJSnptdU1lYjdQVDMyd1Rybk42T3AxMnAzak92MW1jVHFkeFMyMTdQcy8xNlhRNkpKenIxbk9lQzg4eFo4Wis2bDZEdWI4VVV1N3grYmdieDdITzkzRWV1Sjl6Vysxcm52OG00bmlwYmV5NjFxMzh2V29mNTJkbG1lbGFRNDdYeG50VGw2M3N5M2VzaDRCalBDVDBHVGxvcW4yM0djNXRkZUZuWkhBYmpvWnU1Z2xtZE9YZ29tYmFiYzJHVkFqaVJHYi9ieEcvdlpOWm9zMVUybmRIblpYVVczQlZaN3lWUEJDK2RsQjVLNzVuTUpXK2wrUHRHNmpoOEZCeHJYZnlkMTlNdDFweStwYnBXbjlvNGJGdE1wSGovc3lVb09kTzl1VXljNjhETFkyZjVMeEl5d3NYWTBqTEJ6RlZ2eGJTeVljU20vSllwVFpXbmVIVTBSR285V2V6NUxLTGc1YTFjQlhoRURtU2ZTOEg1TEg3RUxFa3BBWU9mWGxKUmFBMFVVM3VSZ2JNWnpsbVhYRzVqaGo4Vkpzc3RjK20wbDVOWEtzU0k0L3l6RFl0cEZkR1p0Q2NmTkdXOU5SMXhMUjlJVUwwb1dlbGkrR0tvRXJpdjRrUkJLL1NlVllOMWhPdHM0aFpzM1FkVS9rb1ZCMDN4UjhpTkxiM21xc2t6bVZHSG90cUd4WEYwVVlFeXB1Y2IrcDZjNDVyL1paNDdGaGVIUTZ3T1pqSU85T0dBNjI2WjVQRXRpOGtZVnFJcjBKVFZSSnpzTTBnSkcxK1R5WlR6VG0wQ1FibFhJb28rQ2N4Z3FEcVlWWE9TOHNHT3lKVnJybktTV2ttM3drOWp4QmhjTTJpWUo5by9qNUtPN2RkYS80bzE1VXlXQTdwV2wyb2lKbzJ3NGhWVEgvcU1aK2wvNmhpeUtKZ0xQMWZXODlvWFlGK0ZlQlQ4RGVoZ3VCVi9BWmNEK3BFQm1DMXp0emt6R1FrcHNtZjhnSzZUSTVxM2ZZcGNML2ZlMnkrbk5aWUR4OWRZSkFzdE9XZGtOaHduWlRJRlAyWWw3eldYT3ZxbHhBRWhSeXZ6akhiOXJPNFJ0b1VCSVc4UzczMytVQVUvTVVrVUJBOGVXWXhZeEVEdjhSYzMzWW5kQ2ZYc0hOMEtBY1o2RVB6bVg5UEdJU3VnWkRaVnhjWmlmVW1wa082MW9GbGxNbFVleWxCa0lQUndFS0NZNWxlVUxUMjJ0OERVZkFYSVE2Q2p4Nm5MMVYwSXpXWFFVNXV4UXkvY1hRcWE3RjBoS1FzN1dOMXNXc1dPcmVSaVZ5R2RLMG1reXNXQkFwRWdadExDdDVyblZnRWdTZ0k0NlBoamExUUhjKzNEblkrNzdWUVJSTmxUUmhpcllOck4vMTlpaGdzcnYxYXEwcUIrOWhjdVNBQVA0UnROZ1FaRGF0eE9kM041ZlBVamtkbE10dDdVdDlPdEhTcktXdmhJMWtHbUZuU055dGhrRHFiMGp2cjE0VGZYNG8rTEltc0FrMlkxNTZxV3BscVl5MEdNVTYxMEQvZVJCVFc4YWtaTEgwWEJlYmEvelRTYy9TelF4REU1akZRUE12RG1wclNkaUlQK2lLeTA3dVhhNTlsRkFhNktMaW1YUDU5bUQzMjJueHBFQ3NLcGgxWnhvUExjSlJuNEtDRkRqZVZsNktYOUgzNXdCeXNZa3hPVDQ0MTlYV2tJRGhLV00xdm1uVWhkUkRkeXptZEgvcmZJNklKQ2hFUk5nOTJsMk1pZEpkUlQ1MUFiZHhFTGlIMDBROEd3amtZL2V0S2NqN0VaSGtkTlBnVTJIbHhtR2Rqc3BNcE1UQnBLRk9iS21jYUl3NlVNREE3MlowaktvRUNMZDFsU0VJdTlGcG5GL0pJaCs1d1kvSC9VcE9oWis1VE5VTVRCVDVMZ1NxdGZIU1laMWNSZ3VBNVFneE10VFYvUFVYeFFqNnZzbTRvY2ZEZndMWDlrU3hmbVB0ZFcxNmFxcExPQ3NURFg4THNnNGkwZC9MdkIvbThDWWZPUzFvSzJyN1dVRXNCSlhhaEVNZHYwMkowa0g3OXcwQWRySU1aZ3FQaGl6WjdtQWJVQWJlRkhTNEMxNldPQWZVREpscTY0OUNVeDI5YXlWbVhQOEpPeTFGZnRhYnFXa3BRS1daRG5ITjBVWEZOUGdXNWVaWDdhWWExcW5vVm13emx0MjFjSWx6dFJTc0FwV05lNjBPbVFrT0tFRXRCRTNIclI4MEhTQy8zUE5OS0xlUEkxazAreVgweTAyWnZ0SDdTTitFYXJNV0o1WU4vOG13UkRkUEFkVXFWbnRVbENHYXk3MStpWk45SE9MM2RTQ2Y3WFRyZnRXZFFXQVltS0xxMW5PdkJXRFpKcWJFL0pKN2srYWhxcDROMlgzTE5VdG9XQlNweFY4aTF4aVRKeW9VdFpMZ09hdWx2WVJIaVd5MWM4bXZMMXduaDNEcXFWKzZOaVpsdCsyMm9mZ2hERUFYNnkrd3p1VzRzZmdUandIam5WK2tnYkdaMGxWWE5WN1kyQnBYYStKY253MTFvZ3FKN3kxTEpWbHRHOEEwQXVwSWU0dkxCVTBKbXMzWEd3YXZOR1dycXRlWVNCaUd6dGx3UkdVZHhUQXYxQTFwRkpBT0R5L0Fsb1k4NkRLaGk3RDhZZ2lqUUh3YWZ1ZWpCMGdtc0FqcmZWMHVvbi83N253MmFvdTQxMVdzU0dsVmdFeGF4QTlmUWxnK09OUWIzZFdUVXlLVjVxM210THdIZnEwdmR5cU9Lb3hhaUc4T1FrNEZkQTYrSnFZa0htVkZ5Q0Q0RitvQVZjNU5ENHAyUERoK0VzWFFzYlNSUUdVbDVWdHRzVGtVVitFSW9SNWI2N1h2Wm42dHpOTVhHMEpZWmJBSXk5dmM1MXR3bkxiUjkzY2laVllicWwxWGtzaExVS2R1c3NvZW1sa3FHWm5oMFBNUHpDc3Z4SkxOZnpOVXdCRkdnditReEp0Y1FQd0piR2MycHpKRGF6cWltSG1BemMrRTZRT0RjVzhvdnh5anJvWW1DdW1iRm5jekE2eTRCdENFS3FoeHpxOWlLZUc0eWFWU09TQXliUDFFc0d4SFRneHhNT3NhYjlHSG14R1lzNzIrT3BkeGVNZ1JSWUhhYUlWa05RK0tkSHgwUDNDYWhzMy9SUExqMWM1aEU3dXRlenNHY09TMWxmejZoOGhBWkQ2NjRwaFRIT1hqTE5CRHZyOEJ6L1RYVDB0Q3VZVy91SFB2TzVlc1JFN29NemZEc3NPRE9xSWxSelJCRmdjc2hVS2NxM3ZuTjhoMjFaQkRhMGIvSVFGdzFPMUVlME12QWgvbTlLR0Z6cHI4US93WVhkeEV6ejJ0TmNaeURYRFB6N1JXRVBlVzYxaWFma1J4Sm5GNHlYdXNlYThIRk1hMmxSV0NvOXVBcEJoU1NxTTltcTB5Tms0RE8ydlhRaFN3WnZJaDM4eXpRWExrWEFhTENuMEtjbWU0ZC9nV1BGYjhMVGY2aWk0SWNkZSt2aVNGRld1UzYxaWJiTEVlMXZMckxCazN2RDhKNU5RU2VzZ3dqQ0FJWmlpZ3dIeElmVlU1TEw1Wk9aQjQ0TS9pYTZOMWNpQWhaeWU5RFRQWVBGc2ZLVllXb21BZDJzcnBvR3BvL3daQVROWFdSSFA0RXVZVXRvdUJ5M0dyOTVLcEZoKy9lTUJSUm9NOVVxanFSS2djN201TlppRlBpeDB4cFdIZUJ3bUJrT2Q2aG9zTWFCWWdpVzBFbGdFdVJ3MUxReERQY1JpZ20yUGtpRVM5ZkV2MEhodVluOVErR0lncjBtY0JOUlVmaVU1VnZGbEd3Q1BBaitPZ1FFMk5aaWppZjM4bllWT1pDMjVycElWQVkzRHVzQlQ2cTFtZ1JCZEFsNmxvS0JqMEE5QlJWbGZhejVmS084cmtydStobmVhWitHMnJlaVNGYUNvcUtnYytYMnRJMnk2NGFaQjhkZ21BcEEvODNodytEU20zOHcxSEFTQlg0cUhwd2JTaytmUjFobGFWQWJ6dG1RM0R0TkxVY05EUmZteTZoOGhJOFdQcW90WHp1eWk2cXJMNWtOT3c1QjJNZzlJa0NuM25kVmhmQlp5V3dSU2tVOHJCOWl6QnR2WmZCM0p3VjdRTkVpVzJRcjFwQzhNMis5TGJEU2dBQTE0UXVBa1BxZUF5T0lSVkUwZ2N3bnlqd0tYenpiMVgrQjdaTVdxblo3RVp5ZkhNNTRLSEN1bUh6RTZpYXhiaGVGak52QXJNaEFEdVhMRzBOa015UVJJRStnTjE2L0FwY3MyaWJxZHduTG80Vzg5T3NabWpNS05IUjBUeFAzMkQrN0ZISU1mc0JHREk1SENBQldtZElvc0FXUnVqaTJmSzV6VlR1YzBxMGlZdVFLSVVxN2l5RGMxVUlsRzNXNHZJcjhPMUxiN05jMmU0QUxrbFRNM29zQlhDVkRDR2pvVUw1RmFpQmZPNXhKTEhseHJhbHpQUmhxNGxRRlM5N2xPTlVSVE9ZT2IzM0ZibjBiUjJVYTBEM2lZSlo0UGNBMnFKdVpzaVJ6T3B6Q3R3cHFYUTd3OXJvSzgxKzgrdEEyOFhKa0VSQm9UbjRGVExvdXpxRGphV0lTNnhUblUwVStOQ3JIQzRxS2h2YUJJa3ZsNzZ0ZzlwYk90TW5UK2M0Ti9hREtJQys0SnNncEpBajlUTGt3WGRmUXh5MUI4ZVFsZzhLeXhxNGJ3bkJmSmpxemlTcXlqYnI0VEhyaXJEQkhJVjBiTTZFdmhkSWI2czNJZytnSStUd2E4bFZlbG1SVXJzZnVzY2dsNENHSmdwMmhxZStyelBJc2Y0Zmd5azZZa1ZJVlhpTktVck1CLzdWMDhHYWxSZXhFa0JYeUpGbSszMkFhQStscWhvcE5FOE9VVFlkcXNWbmFNc0hoUXoyK2hLQ3F6TGdwYXVkNVJZRkczbklEL0xTbUQ0VFBoRmtMaDBNTXFrSGRKSzlaYWt2aFlkTUZnUE0wWmZudTZOb1hReGRyMkRhR0VNVUJSdE5GQlF5UUxwZVpMMDJlcTZaUkNnN3k4Q3RZeFpXcWpMbm4yY3YvM000Sk5yU04rdm95dnVWcFFQb0dOdUtkeVdFOXlJSzZsakJsa01lVERwR3FyWG1LUGRSWlQwY25NUG8wSllQQ3BsWjZDR0hQbE9Uc2hZVUdVUkIxZHFuYWFxcW12bmJ3aEo5U1l3VU5uOEUzK3htYW5SMGJTK3JBRlNSYXpsclhXTWRlV3BNTnVCeW5Pc1gvSjZRaHYzYzEwL2tPZGlRNW5oWTZEZjdwa0lZdU1vTlY4MldZOWVqVE5GUnRYK2JxVFBGZFBsUzhmRHJEcEJIL0FtZ2crUjZKbFhXMEZoaGtGb09IZkx6S2hPWHZkd1hXMUVrR3lyNlMxOXlHS1JQd1ZCRmdUbXI5ZzJtZTNuSXpJNmlhcjNLekdnV2F5bllWUlE3dXJYOFp1MUl2T1REVmhSRU1URjhLdFlrTElJT2NraDQ3bDJjaGNGUDZST3FzaEtPcFcvNFFWNkN6bkJyVExBZXBDS2lqeWZMeEhBNVZJZlJvWXFDd2hBQ0lkWUNtem5mRnpZWWswV3djS2pTcWhtUVRjd3NJc3htanhVV0NYUC9MQjFBVjhsdDZ2MGk3NFk1SVJocmVRMzJOZE9XUXpPWS9kVGFJd3hzZ21BeDVLV2dJWXVDZFlTMXdQVjMzN3EvemVISVp5MjRzUWlKcWtINHpqTFRQNGpBK0ZwaGFYQlZjRlNZVm9LblRPRmZBRTBRNmxNVHc0ME0rbWZMd1VtMnM3UHVuL0p1WUIzb0p1K2xyOVV0UFRaaDRCSUV2c1J4dldmSW9xQ0l0QmJZek9heGZnVlZTd2ptOFhjQnMvNXZEcXZFU2o3LzZyQlF6Q3VXQXN5WkY2RlcwSFY0UmtGeFZ5RU12aUlJN0F4ZEZKaldnb2ZJNm1aVmczeHN5ZUtGNWZnaEhaM0xPV3F2aVlOM3h1WVRORFBEMG9HVkFLNkJxa3lnTUN4dUhjTGdkMHUvdWtZUS9NWFFSVUZobU45SGtiT05XT2ZCZ3hiaWFHTmtXUTdZQmpoUkthL3BYT2xWZFN2QnNjSVpFYUJMOEt5Q2prMFltQk9jOVFXVDFIVU9STUZmYTVHNmlmNVRaQ2lLYjhDK3RjemdxeHlpbGhacndhTENQNkFRWWZCZHJxZE9Ub1dWa2N0Z1JjUUJYQkZiY2FBRlVOeUtFTEJaVXhFRUJvaUN2ekJuMk91SVpZU3FDQUZ6MzlzS0U2Zk5XbkdJRUNwbko1dGZjZzJ4YVZ1bjRuV3RlQ1hpQUs2UUpjc0luU0RIa21PdUNZa3RCOFVPUWZCdkVBVi9ZZGJWdm9rWURFTkVnU2t3cXZiOXlhSnFkd0h4dGpyMzRpVjlDbHdTR1Z1dXBZL1YzcW9zTG0yUkkxVjAweGFjYTA1blBldlF2UjRxT1VSQnlqUDQyZUpEOVU3Nk9IMS9ObDhydGYweDFPY0hVZkEzSzJOMmNSODRLSWI0Q1pnejluVkFWTUhHSWlaODhiWXVRbWY3YTJQWjRPc1ZEZ29oV2VYcVhsTXVoOHNjQTNyVnRkUU4wY3NsT2k2UjdlL1FBMkhRUnJ2RnBnTHVPcm1zbTF2U0hFTWhnN2ZlaWRneUdkb3dCWVdKTFR0YTFlejl4dkZRcmlOVTdKT2NmMVhudmpRS3lyeGVJTHlyclpsejNZRXVseWhvSTVxakt4RWpkZHM4VmR6c3JsZ1loSjV6M1dXU0pxMU5PZllkdTQrWTZMRTI5M1UxSUFyK3lkNndEb3dzbnF1dTM4MDhUb2MzanFpQ0tvZW85dzVoc0JWblFwL0t0OFhoMnBnYjJidU9tVXJJeG5MSU1MTU5tVm5WelpPZlV4VFV1ZDZRR1Y3ZGE4MDFVNjFLMlIzeSt6cS92WVF3YU9OWkxqS0k2U2F0RVhYUDdaaXdqeHV0VEh5ZGJUVllmNFBUNmNUMjcrM2g5RTkycDlOcEhOaE9xNU9kdytsMG1oamZIY3UrcTFoN2pqYy9uVTU3N2ZmbjQ4d0N6M1VxMzljSi9XMFQyenFnTFZ6c0E4OW5iTG5tVUhhWnI5bDh6bUpZQnV4L1VtUC9tOHpYV3VmZUxqSWNQL1JkeThGV2psZm4vb2EraDR1YTUydjJTYm0zMUhmdFZOSHZ1ZnJaTnRoZXNJOXNmT3Z0aFdYWU5zYkRGU01NcHNaQXJiQjF0TGFCMmZXQytJNC9reGNsNWh6TjQrYm9mT3RzZFFheG1ITlA3VkJ5dDg4a3NkTThaQkNwVmVRV2g2bjNObFRzaFc1MUJ1b1E5SUVzVllqRUNqSmJYeE43cmsxdGRkcmJKMWdRQlExdHZiMndESnZ0aFk0UkJxNlpnbTFnbVFVK2pEc1p6T3RlbjAwUXRORkJoR3dwTDN2S1N4bzdjMjJxZlZKbWVyRURkdXpBMU5TMUxoT3VOY2Z6Ym52ZnRnbm5Vc1VxOEYzekVkUEg2TmNUUzR5d3JMT05FMFZMbFFCUHVlWmNQTFRRYmhmYmVudGhHUi9vT3NLZ2tFNUI3NEFPam80dWRIQTRPRHFmbVBQcHFpQlFXOHpzWWx1amN3czlUdFB0RTNQdlU2d1Y0d2dSMVBTMWhvcSttR1d3T3UyZVF4eHNLOFRMTkZDWVBkUjRsaGNSNG1QZmtOaXFlLzJLMEdlOHJlVWdrNmFYWEM2NjlmYkNNbTQ1aEVGaHJQMjdmaDh6YTB4UnE3TXJFQVQ2dWZwbUdIWEZrWDRjMThDd2JkSEhvbXIydXNuUUdjMDlIV25iMStxN3QrdVdPOTZwdkU4eGc4eEJ6ak5tY0YxYWpwR3lIOWMyQ1JBNVZjdVFUVzFqZVY5OXdxVktYTm51VytyU1NRcXBvdnlxdG5mbi80Rkt4dUtsZTZ0OThTaWVyYkhlc1FzdGRiQXQzRkhWYW5lVlpYMlIzOGQ2RGRzcWdObEtoM2FOcVNVYVlwZkJzOTVrSXR0VTlyKy9VRWlmZWIxN3VkYzV6MlZJMXhyTFdNNXI2b2c2VXUzVjVSd2VFMmxYTTkvL3BpTXB5K2RHMzNlUWMwdTU3MlBaWDUzVTdpSFVPY2VyQWxFUWprc1lMQk9UWEN5MEI4MWtLcC9yeVlTZTVEZ3BJVVFQa2lWUjV4b0VBUUFBdEFpaUlBNlZDdmpPK05WakE5WFp4aktZNzBVTXBDalVpWnp2cmZINVoyb2FBQUNBQ2FJZ0Rkdk0rMVZtM2wweEs5cVdJZXBZTmdBQW9PZVEwVENOcGRRZzBMT2tuV2ZqUHkrUUh0aEVXVFArTkFUQnEvaEFJQWdBQU1BS2xvSjZ6R1h3TmJtVTFXQWhWZ3liaytKdkhYRXlBZ0NBam9LbG9CNnVRVlpaRGRhWkMzUzRtSW9ENG5kUDFBS0NBQUFBdkNBSzhtSVdRYmtYQjBGYmxjUWNURVI0L0xRNFA5YXRuZ1lBQUFNRFVaQ1hpVlFuMURuUDNMOWtGZ2RLRFB5eVZQSTZDNU1QRFVSREFBQkF6MEVVNU9jODhQOXVLYU9jUXh6NHhNQlJCTW0wZ2NRK0FBQXdBQkFGemJBWEo4US9MSFh2ZFhHd0RzekVOUmVmQVpzWUtDUVIwVlRMbEFnQUFCQU5vcUJadGhJRzZCSUg5ekxRYnlWeVFMY2VUR1NRMzB1RWcra3pVSWdZK0YxKzI0ZjBteWR0ODRWMnJvenYramFWRXRsczN4ejdOcmVaWTU5YitkN0I4eDJUbWJGdkhmTnZPYzdWMS9iYm1zZmFXdmJoU3ZPdHM3RDhwazQ2MjVVOEQ2SG52UThJTWE3enZMaVlKN1Q1MXBJT1hNZDhaa0tlUS9QYWZLUmMveTd5bkdNMjEzMkxhZGVkVE53R2xma1ZVZEFPU2h3OE9vNTJKNUVEeW5xd0ViSHd4VWgxclBPaFIyS2dTYzZSSU8rMTl2VjFRazF6Rm9JL0JwcGVlbTQ0djQ3a09YY0p0YW1SZFZQVkdrbDkzdWZ5UHBuWlBYM2N5Ry9hdkY5anp5VEF4MTJMMFU2NXVKVnJiYnB1UVNxM01uRlRmVWVWaU8wRi94bkNSUW9MbzBqSVFUcWRsRm9DcWVpbWZaWDRTQThoSERtV0I5VDM5ZSsydlV5d01EckhmWTFhRExreHJUQ0tzVEVJaktRVCtoaVJ4TW0xYnh1aDkrUzdESENwZzgzQmMxNVQ3VGs1ZW5KbHhEdy9ybjJZN2Z2cTJPOU9zNUxvOVVOdU5NR3MvMDZGMk9yWGtWSjhURWZ2ME44Q3hNVkVFK1F4ZzBITTgyTERQSmFyVFJYNlBSaHBiWGRKcXM1NWF2UmxrMEN4VjdWZm5aRDkrZDZQaVRFaHU1RW9yejg2MHVjMXhoQkVnYTJRa2VMOUJRc0RLZFBaWENJRlhET1lKNjI2MlkrV3o3SHd0TitkQ0pnbTZqN0U0ak9GanVYOHZtaWZQVVJVNHdzMTk4ZHlMK2UyU0JCNHU0cWxpcnVBNzhYZ3VyOHo0NWxjVm5TWU5tRndLLyt0QnNOeEE0TEFaQjI0TFBERnlGb2FRdTducGFwTnpYdlFCYXJPZVNvRGJPNjJpS1hxL1pqSU1mV1U5cUYrWUZmTEVKWVBiQVdCZE80dldCem9JQS9aVkh3REhtVVc4eXF6MmQ5azBMaGtOSUZMVUNrK2RTQzFzNCtEbk45bjdUdWpDeThqS041TCsvYTZrekZRd2tEUDZYR3JtYjZiRmdTaG5NL252NXFvaEh4MHVleTB6bDd1dlI1SmR0UDM1YisrV3dvV3h0cmNtOWI1TExUTzU1TldrZkJTcUFld1N4M1F3aEFFcnZaYlN2dDFPZkxoZk43ZnRQK2VCNHBCbjhOU3lxemxzN1NYTWszZWFqT1dhK2tzNjNMUW5PblVNM1F2bitsbTVXVkRiVElMRkxJSDJXTDZoZHpQU3hWN2VhWjIyakpOMTBrVndRdkh6SDdmY0UyWHBRaDRSYTk5Qy9vdUN2VFo0SnZjVFBYU3JBMFQxaWJoaGJvbXA1NlVEc2xjaDlYYmI2T1pMVWRhVmNhdW90YmhZeDI0dm5qK2x0S21PMjNkVjE4TC9obnA2M0R0N0xTbEJDVUVkRUdRdXkzMGQvc3U0am40Sms2OW9kYTYzTTlMRmZzT2xrRjNEZDZGQ0lMVUpSYVh2OVZMdysrTktRb1JCVmVNUG1pdmpZNWhad3dTTVY3SjEwanNZR2hpdHQ5V2xqbFV1dzNKQkY0WFpVSi9NRHE2NzlMaERNVmNiUk1HUlVQaWFDT3plRmR0RUI5TEVvSkY0UnE4WFpCYnBVTU1LZnJBTm1qbG5PbC96TGl2SEd6RlNUSDJCWFZoYTZ0cnNwUVVpY0xvRDhmbmRaZWFEbHBJcVQ2Ny9DVHRPaVNMd2M2NE4wMWMrMTc2Z0htZ2dKMGt2anROUFM4dUp2SWNOYlU4MFNUSHlDV2l6NDd2TmkwcXpPZWwxMkhnZlJjRmVtZHpiNFRRbVI3L1R6VnU5cTZqTXdsVnZqbDE4SjVwN2JlUTlsTXY1ZG9JMmVuNmVyZzUrdzQ5MzZZNzJwVm1BamJYMXlFdmg4aW9reFJSMFBiQVBCRlJxWVJsRjBMbTlITllpQVZNY2RUOFNXTFpYZWphVE1mQ1h2dis5RjBVUEJqaEpEL0U1RDAyQmpTbFdQdG94cXF6M2pnei9BWitPdHJ2cmVQbTFhWEZBYXhMTS9HMTF1SFoxdGVoSGhNdHl1ZmNydTlvejlaWWl3amJTTnVyQkY2Zk8rZ0xZV05sOFJQcHRSV3Y3NkpnTDBXQzlKdHE4eDFJaVJVZkFyWWxDRnY3WFhwVzYvTDRubGtTcFJSeVRhRnFQeWJjc280SmR5ZURWMVVJS01Sek1KWW5Rc3V1WVJZQUFBUENTVVJCVk81cHFvOU16UE95RHJCYStKejJpZ1k4K1hWeTVWellXbnhIdnNtN0dSUGVGM0xPK2pHcjNzV0o0MzZONWR4c2ZjZlh2bzhWUS9BcFdHbXg2dVlOZnNPSnFCTGJ1cmZpVFFUQnBjMXBQbzl2azVkSVI3NllmUmMxelp2S0FYRnRoRUJCUFE1R1J0RFlleG96Q01UczI3YVVZUjRybDlPZStWekc3cmR1cGthYlUrbTlETHhtUmtzWHNlZGM5UzdlUk42dnA0N25aTW5DVUdvZlBJZ3EvQ2hLNzZ1RUdVMFFCRUdzSkpHU3JmMnVaWDFOSllRSzdZQXVoWXJoZDlYSmdEUlNUYjdIbHMzY08wdlo5VkNxTEdCMW5xa2NiYUNFZ1o0bDhsWUwwKzBxcjFxdG1kN3o3blNxS240RkdkSFhwMTRpelhObU90TSs1dURXMjJQdk1hMU9JczJtTVVsZFl2ZXQ0enJucWVic0dYTXUrdTlDNy9YVXFPOFJLdHBDMjE1bmJIVG1xY2x6cG9ZemJGUFBkY3E5cmJxbU9zK0xiOTltbTFRUmVxOVR6amZrZWRDZm42bzJNNStid25IK3R1K0ZFdkl1aHREck9nYzJFQVh0Z2lnQUFJRE9RdW5rOWxnWURubFRFUWtocXRXVzBHWTVsRktlQUFEUURsZ0sybUZkVVJMWmwvZmVqUE0xR1ZKcVhBQUFhQkJFUWZPWXVSSnNIR1dkejF5SEN5Mkx5bElDQUFEVWh1V0RacGtZZ3VBb1NUcytHQ0UrSTBlWW5Cbis4aWdDd1BRaTduMllEQUFBTk0rUWFoOWNBdE9SVUY4bTJNanMvazc3bTg3WVNManlWUnY4Vlh5ektnVjhKOThuQVJNQUFDU0RwYUJaOU5DZlY0dmZnSjRqd1N6V1l6b1JtbkhDcGg4QlRvY0FBRkFMUkVGNzJHS0RUZEdnWTg3NnpVSGZGdWNMQUFDUURLS2dXWFJMd0VobTl5b0VjVzc0RzVoV2hKMlIrZXRCRXhFVHczSnc3SHZsTGdBQWFCNUVRYlBzRElmQ2MxamkvOFFmNEUvanlMYXdRbjNnUDZjRC9TVy8vV1VVemJtR2FtTUFBTkJ4Q0Vsc25xbFJCTVRHbzZkSXo2NmlhdDRyL2dRQUFKQURMQVhObzRxQTJLcU1IU1g1a0s5cTM4eFR5T1F4WTNsVEFBQVlPRmdLMmtYVjZKNGsxTjRmaXdDWWl0RFk0bHdJQUFBNVFSUUFBQUJBQ2NzSEFBQUFVSUlvQUFBQWdCSkVBUUFBQUpRZ0NnQUFBS0FFVVFBQUFBQWxpQUlBQUFBb1FSUUFBQUJBQ2FJQUFBQUFTaEFGQUFBQVVJSW9BQUFBZ0JKRUFRQUFBSlFnQ2dBQUFLQUVVUUFBQUFBbGlBSUFBQUFvUVJRQUFBQkFDYUlBQUFBQVNoQUZBQUFBVUlJb0FBQUFnQkpFQVFBQUFKUWdDZ0FBQUtBRVVRQUFBQUFsaUFJQUFBQW9RUlFBQUFCQUNhSUFBQUFBU2hBRkFBQUFVSUlvQUFBQWdCSkVBUUFBQUpRZ0NnQUFBS0FFVVFBQUFBQWxpQUlBQUFBb1FSUUFBQUJBQ2FJQUFBQUFTaEFGQUFBQVVJSW9BQUFBZ0JKRUFRQUFBSlFnQ2dBQUFLQUVVUUFBQUFBbGlBSUFBQUFvaXFJby9oOWdOOFp5enlpV1d3QUFBQUJKUlU1RXJrSmdnZz09IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiXSwiZXh0ZW5zaW9ucyI6WyJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiI1MjJhM2Y5MTVmNWQ0ODBkYmUzNzZjZWNmYWQ1YTI3YiIsIm9wdGlvbnMiOnsicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJ1diI6dHJ1ZX0sIm1heE1zZ1NpemUiOjIyMDAsInBpblV2QXV0aFByb3RvY29scyI6WzFdfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIzLTExLTA2In1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMy0xMS0wNiJ9LHsiYWFndWlkIjoiZjU2ZjU4YjMtZDcxMS00YWZjLWJhN2QtNmFjMDVmODhjYjE5IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiJmNTZmNThiMy1kNzExLTRhZmMtYmE3ZC02YWMwNWY4OGNiMTkiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiV2luTWFnaWMgRklETyBFYXp5IC0gUGhvbmUifSwiZGVzY3JpcHRpb24iOiJXaW5NYWdpYyBGSURPIEVhenkgLSBQaG9uZSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZhY2VwcmludF9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJzb2Z0d2FyZSJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJpbnRlcm5hbCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRXJUQ0NBNVdnQXdJQkFnSVFSVGZjZ282eHdJRkdmbXR6azFCU25UQU5CZ2txaGtpRzl3MEJBUXNGQURCRU1SVXdFd1lLQ1pJbWlaUHlMR1FCR1JZRmJHOWpZV3d4R0RBV0Jnb0praWFKay9Jc1pBRVpGZ2gzYVc1dFlXZHBZekVSTUE4R0ExVUVBeE1JVjJsdWJXRm5hV013SGhjTk1EZ3hNVEkwTVRnek5EUTVXaGNOTWpnd056RXpNVGN6TWpNM1dqQkVNUlV3RXdZS0NaSW1pWlB5TEdRQkdSWUZiRzlqWVd3eEdEQVdCZ29Ka2lhSmsvSXNaQUVaRmdoM2FXNXRZV2RwWXpFUk1BOEdBMVVFQXhNSVYybHViV0ZuYVdNd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURRQ2ttUS9LOERuMzlxU0NXNXRLTHZ2RExIM0NsU2NnUXJEZzcrdVk0NGpIbElZMS9MbDZ2MnJwajdubG1WTWxJem9nZDN5WGpDRkJ2R3I0emlHUTJRYzhVcGthVTk2RVp4RXRId1pTdHc2WVEwamRuZ2tTTFB2T3A4VDhZaUpwY3ZzVnRRdGlRME9zVFR1aU8yRWk0THVMaDdLUis4eDRiQVJ2emtCV3N0TkJUcVZTQVpRWWVzcW5sOEg1U2Z3YjNJb3U4TFNpQXN1T1h5eHQybXM5MTFZcnhXdmgvS25PZWwzT2QzaCtLNWRRWVA1MytmUFV6Z3o1NlRUajhSNFk2elJ1emRrYm5SNnhXWGRySzQxNGlYOUQ2eDVxOFcyWEpKcFRNSzdFblNYRzBxN1hGN3A2OGpES0FueEFGOGtmaDN1aW5jMnVsbVZPWmJUUnp4RjhCM0FnTUJBQUdqZ2dHWk1JSUJsVEFUQmdrckJnRUVBWUkzRkFJRUJoNEVBRU1BUVRBTEJnTlZIUThFQkFNQ0FZWXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QWRCZ05WSFE0RUZnUVVqTXNUYlkwd1hRQlIyOWJXSEl2YkZmVUFGZlV3Z2dFR0JnTlZIUjhFZ2Y0d2dmc3dnZmlnZ2ZXZ2dmS0dnYlZzWkdGd09pOHZMME5PUFZkcGJtMWhaMmxqS0RJcExFTk9QWEJvYjJWdWFYZ3NRMDQ5UTBSUUxFTk9QVkIxWW14cFl5VXlNRXRsZVNVeU1GTmxjblpwWTJWekxFTk9QVk5sY25acFkyVnpMRU5PUFVOdmJtWnBaM1Z5WVhScGIyNHNSRU05ZDJsdWJXRm5hV01zUkVNOWJHOWpZV3cvWTJWeWRHbG1hV05oZEdWU1pYWnZZMkYwYVc5dVRHbHpkRDlpWVhObFAyOWlhbVZqZEVOc1lYTnpQV05TVEVScGMzUnlhV0oxZEdsdmJsQnZhVzUwaGpob2RIUndPaTh2Y0dodlpXNXBlQzUzYVc1dFlXZHBZeTVzYjJOaGJDOURaWEowUlc1eWIyeHNMMWRwYm0xaFoybGpLRElwTG1OeWJEQVNCZ2tyQmdFRUFZSTNGUUVFQlFJREFnQURNQ01HQ1NzR0FRUUJnamNWQWdRV0JCVGZRUTVXcldNUlc3OHZrV2gybmlEVDNWOTdyREFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBaUxwTHRuYUUwQWJJaVNtbWo0RUxSVFJNR3VlZHhkNlpUWTJ5VWkxUU5zd2FJMk9GbmgvTkRXTFdPZ0YzNkhPdkRFTFhCWVpNNitBc1BpVkhVNzJzdmxZajdZNUh6WnZvVWtNM2R2YnhyNlUyQko4OUpFRVRSSVdxVWxZT3E0N0JlODRPUjJYdm1uaVV1SnJGT3pzQVljdHJaWDJURlgzQWJWUHM0TFNUTmMwZGEwdXEwQ3FvT1NPSUNmenoxWDd1ZjdUdzlPMEtjS2VyRmd6ZVVjbUd0S3Y1b0s3Ulk5V2tEeGRpMjJSeTBHRWI2MHRuYXY3cWs5amE0NVdCak4xMHh1TnBOc2xDYWxSbk5ZT0dWdFkxbTRveTJnKzF4ZDFiMHZ4ZzB4SnNXNGsyb3ZUZFpRUzVIQ2ttZTA1TTVMeTBTRlNWRy9SSHhNczZJeDQzQ2N0Q0lRPT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBTFFBQUFDMENBTUFBQUFLRS9ZQUFBQUIxRkJNVkVVQUFBRC8vLzhSQmZjU0NmTVNDdklUQy9FVEMvQVRETzhURGU0VkV1a1dFK2dYRk9nWEZlWUFBTThBQU00WUYrVWFIT0FBQjg4QUJNNEJCODhCQ004Q0NjOEVDYzhJRDlBYUh0MGJIOXdiSU53YklOc2JJZG9jSWR3Y0l0b2NJOWtxTU5jQkM5QURDOUFFRGRBRkVkRU5GOU1ORjlJUEdOTVBHTklQR2RJUkd0TVJHOU1USGRNVUh0TVZIOVFWSHRNV0g5TVdJTk1YSU5RWUlkUVpJdFFhSTlRYUpOUWJKZFViSk5RY0pOY2NKZFVkSmRjZEp0VWVKdGNkSnRRZUo5VWVLTlVlSjlRZUtOTWVLZE1mS05VZktkUWZLZE1mS3RJZ0tkWWdLdFlnS2RVaEt0WWhLOVVpSzlZaUxOWWpMZGNqTE5Za0xOWWtMZFluTU5jbkw5WXBNdGNxTTlnc05OZ3VOdGd4T2RreE90bEZUTnhOVk41UlY5NVRXZDlWVzk5ZFkrRmthdUppYU41NGZlYUZpdU9FaWVLRml1S0dpdU9HaStPc3NPZ25QcjhyU0xVdFRxODdjSTA5ZFlsRWhuZEprMnBLbFdsTW0ySk5uV0JObldGVnNVNVZza3RXczB4V3NreFh0VXBXdEVwV3MwcFd0RXRXczB0WXQwaFd0VWhYdFVoWHRrbFh0VWxZdVVaWXVFVll1RVphdlVKWnUwUmF2ajlhdlVGYndENWJ2ejlleURoZXh6bGR4amxkeFRsZnlUVmV5RFpleHpkZXh6aGV4amhmeWpOajFTcGoweXRpMGl4aTBpMWwxeWhrMWlrVnFpRWlBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBRittbFVXSFJZVFV3NlkyOXRMbUZrYjJKbExuaHRjQUFBQUFBQVBEOTRjR0ZqYTJWMElHSmxaMmx1UFNMdnU3OGlJR2xrUFNKWE5VMHdUWEJEWldocFNIcHlaVk42VGxSamVtdGpPV1FpUHo0Z1BIZzZlRzF3YldWMFlTQjRiV3h1Y3pwNFBTSmhaRzlpWlRwdWN6cHRaWFJoTHlJZ2VEcDRiWEIwYXowaVFXUnZZbVVnV0UxUUlFTnZjbVVnTlM0MkxXTXhORFVnTnprdU1UWXpORGs1TENBeU1ERTRMekE0THpFekxURTJPalF3T2pJeUlDQWdJQ0FnSUNBaVBpQThjbVJtT2xKRVJpQjRiV3h1Y3pweVpHWTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5MekU1T1Rrdk1ESXZNakl0Y21SbUxYTjViblJoZUMxdWN5TWlQaUE4Y21SbU9rUmxjMk55YVhCMGFXOXVJSEprWmpwaFltOTFkRDBpSWlCNGJXeHVjenA0YlhBOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOGlJSGh0Ykc1ek9tUmpQU0pvZEhSd09pOHZjSFZ5YkM1dmNtY3ZaR012Wld4bGJXVnVkSE12TVM0eEx5SWdlRzFzYm5NNmNHaHZkRzl6YUc5d1BTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM0JvYjNSdmMyaHZjQzh4TGpBdklpQjRiV3h1Y3pwNGJYQk5UVDBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5NFlYQXZNUzR3TDIxdEx5SWdlRzFzYm5NNmMzUkZkblE5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5elZIbHdaUzlTWlhOdmRYSmpaVVYyWlc1MEl5SWdlRzF3T2tOeVpXRjBiM0pVYjI5c1BTSkJaRzlpWlNCUWFHOTBiM05vYjNBZ1EwTWdNakF4T1NBb1YybHVaRzkzY3lraUlIaHRjRHBEY21WaGRHVkVZWFJsUFNJeU1ESXdMVEEzTFRJeFZERTRPakUwT2pBMEt6QXpPakF3SWlCNGJYQTZUVzlrYVdaNVJHRjBaVDBpTWpBeU1DMHdPQzB6TVZReE5qb3hPRG94TkNzd016b3dNQ0lnZUcxd09rMWxkR0ZrWVhSaFJHRjBaVDBpTWpBeU1DMHdPQzB6TVZReE5qb3hPRG94TkNzd016b3dNQ0lnWkdNNlptOXliV0YwUFNKcGJXRm5aUzl3Ym1jaUlIQm9iM1J2YzJodmNEcERiMnh2Y2sxdlpHVTlJaklpSUhCb2IzUnZjMmh2Y0RwSlEwTlFjbTltYVd4bFBTSnpVa2RDSUVsRlF6WXhPVFkyTFRJdU1TSWdlRzF3VFUwNlNXNXpkR0Z1WTJWSlJEMGllRzF3TG1scFpEb3dZakV3TmpFMll5MHhPV0UwTFdVME5EWXRPVEJsWlMwM056QXpNMkZrTUdRellXVWlJSGh0Y0UxTk9rUnZZM1Z0Wlc1MFNVUTlJbUZrYjJKbE9tUnZZMmxrT25Cb2IzUnZjMmh2Y0RvNU4yTTROR0UyTnkwM1pESmxMVEJsTkRjdFlqQXpOUzFsTjJVNE5XSXhaRGswWlRZaUlIaHRjRTFOT2s5eWFXZHBibUZzUkc5amRXMWxiblJKUkQwaWVHMXdMbVJwWkRveU1tVXhOR1JrWkMwNVpqQXpMVGhrTkdJdFlUYzJOaTAxTW1FNE1qaGpNRGRoTmpjaVBpQThlRzF3VFUwNlNHbHpkRzl5ZVQ0Z1BISmtaanBUWlhFK0lEeHlaR1k2YkdrZ2MzUkZkblE2WVdOMGFXOXVQU0pqY21WaGRHVmtJaUJ6ZEVWMmREcHBibk4wWVc1alpVbEVQU0o0YlhBdWFXbGtPakl5WlRFMFpHUmtMVGxtTURNdE9HUTBZaTFoTnpZMkxUVXlZVGd5T0dNd04yRTJOeUlnYzNSRmRuUTZkMmhsYmowaU1qQXlNQzB3TnkweU1WUXhPRG94TkRvd05Dc3dNem93TUNJZ2MzUkZkblE2YzI5bWRIZGhjbVZCWjJWdWREMGlRV1J2WW1VZ1VHaHZkRzl6YUc5d0lFTkRJREl3TVRrZ0tGZHBibVJ2ZDNNcElpOCtJRHh5WkdZNmJHa2djM1JGZG5RNllXTjBhVzl1UFNKellYWmxaQ0lnYzNSRmRuUTZhVzV6ZEdGdVkyVkpSRDBpZUcxd0xtbHBaRG93WWpFd05qRTJZeTB4T1dFMExXVTBORFl0T1RCbFpTMDNOekF6TTJGa01HUXpZV1VpSUhOMFJYWjBPbmRvWlc0OUlqSXdNakF0TURndE16RlVNVFk2TVRnNk1UUXJNRE02TURBaUlITjBSWFowT25OdlpuUjNZWEpsUVdkbGJuUTlJa0ZrYjJKbElGQm9iM1J2YzJodmNDQkRReUF5TURFNUlDaFhhVzVrYjNkektTSWdjM1JGZG5RNlkyaGhibWRsWkQwaUx5SXZQaUE4TDNKa1pqcFRaWEUrSUR3dmVHMXdUVTA2U0dsemRHOXllVDRnUEM5eVpHWTZSR1Z6WTNKcGNIUnBiMjQrSUR3dmNtUm1PbEpFUmo0Z1BDOTRPbmh0Y0cxbGRHRStJRHcvZUhCaFkydGxkQ0JsYm1ROUluSWlQejVYQmVhbEFBQU8xa2xFUVZSNDJ1MWQ1NThrVlJXZFowNllBNkppRHBnRG1GaXRMVnl6bUhQT1lsWlFFV1E5QVhNV3pQNnpmcml2OHF2dXFwN3Vuc0hmOUtlZDdkNlpzN2Z1dStIY2M5K2NwQWZnNitRQzlBWG9DOUFYb0M5QVg0QytBSDBCK2dMMEJlai9GOUEwdVAwelBrZWdEVXVpTm9BaWJNRzBjUTVBU3hJczBCUUZxUGdaaXBZZ1E1SjV0cUJoeXpZbFNvSWd5eE1qdzdKSlU3WW9VajVEMEpSdDA1WmxVYUk5OW02RGtDWERsRUFKcHZZQSsyUkh5QklzMmJJQVdMUmdxZWNqdGtSWnNnM0pGR0VBT0QzcW5VQ1REakRNV0V6WmxIb3VRb2xDL0w4b0VXbzh4ZElaZ0xacFc1WUV3SllrSW50QzloREpJRzNURWt5THRpSElQTFd0ZHdDdENHS2tRWnRLeVNaaFc0WWordG1TYkVLMllLUkVDYVJFaXlDUERScXlURkRxaFY0aUlyWWxLaUpkdUVZdk9sdUFiQm8rbmExUGRzQXNHclpIQ1VXd0xVR1NMTW5rSkFxS3BreEwxakZCbTVDTVFhRG9Ib0VsQUxRaDBHSWh2RU9rVDJmcTlhQWRqc0dpdDlNbW1BTmhFWml0TUxhUEIxcVIzSVM1ZHdGWnRHeDZKc2JEeHR5N0J3RnR5VVlYYWhIcHNQZWxhV253TEJ4UnZlOWd0RTVSK0oyc05iVGt6aU1EY0E4MWdKeDAzUHlWYlVKVWUzQVJ1Ujg0SG1nVFJQNzVkQVlwRSsyVGlLcXUvWDlGV1dxcjlRaEhSdFd4UUVmYWF3RWhRcDg3NDdjSU15YUt6U2ZRNEJRUnFmSTRvRFVJSFpMc3U1eFNZR0puYXFxeFBHd2J6V2ZjTkRLRVRtSHFsYUNqdUdQckt3Mk1EcEhEcGJQaFpkdXRjNnQxcXdndnh3RnRXV2lPR05VOVlkdU9naUpIazJ4R2QrY3ZvZjJ6WkFySGNnOUcxYWJ1aTM2bWEwOG4xWmlYWmxkOGdMMW5wRk9rbDVYdVFVRmdCOGlkNDNUK0liRjU5Rkl2RDdudEl4MHR6WkhjSTZKQSs1RFZTeUFvZ2JDSFNXWS9UTUxhNkVFYk9TM1FiR0pFb2wzTUZwYlE5akltZEJhZ2MvZlVSUTlPL2pqcGY5dlVxSDFSSDJ2ZFF5UWE0MEVDblBPa3k4SEFSandQbWRvWFhiTTJqY3RpRytsa1VnSTQzL2ZKMFIweXV0c3pBUTJJWGZ3d2JkRGFWRW5BRmdFVDNCc3Z0a1B0NFY1Wm1RdWhUV0ZCakdMVzJCc0p1YnFlZGpTSXZWUTRLaVBDVHpqbzBFNVZIcDBlTkIzSnc1c2EzNVQyeDVEdXFVY01aZ1liNmhNTE9tK2dBZHFjSTF6SWZrWTVINkFURFpyV0hHc2JCTVA1c25SS1FSNWxmcnBFakZnV3podG9CSVVVVXdBVlVFczZaKzRSWVM4NlFkbWExa25nWVEyOUd6L2RrWXVLVG5lU045UDVBNTJDMXlJY0dkSk9SMzN0T25QSnBWSmdMbG43UElKT2Fvb094U1RnbUtoUE1VZDBMcU1sT2laWUs1S3FqSWozbEJUelBFbUVrR2NGSUNuQWtqWHVlRTQxc1kwd0FqbUdGMHN6aW13S2h2SllENUpwSU0vTEZBK1JGbU1FeVRIVGZjb3hjNHpoRUtsR1hBWTc1akNVUWVTaEhnVmFpQXlRZ3hLaWYrQTArNTUyb0IraDJzSFBhRm1ocEFpV3NHa0NoZzBMbWZVTDE3RU5rU1NNU2JJNnZRckJrYy9SUEcwdThTb0ZzKzZZUHVkWm1ZeUlwV0JNb1dKOEUvK2wvWUx1cUZSRjg3VTFzMUNnbUllaEZCdzBQVTBDTmdYWmtBWEc5QlFqSmNCK1JDcHFwdnZCUFhyYlFRanlOVHQyTU5vaURFZTFaUmlJUHQ3T3dXWC9vRk9pTFNGMEJ0b3lUMkYyMjF3b3VrdFFjYVRESTJLc0YyTjM0eUNnVTJKRUxFclE0cEJkekxWaXJ6QmdVTmsrRE9nWXVBQWhsTkR1bmlhanAzZ2gxSEJDQndFZHZITWNvSjJiN3liRERocWhVYmJkczFvczV6cnZYa0UxMVV5UFZ6TkhMZWUrSlc2eTgrQjhSNy9PeDFLZFM0TWF6YXYzcjh0ekNMS3dXNThZdlZybjBxSExzUThNT2srVHVKdXRoVkh3a01seE5EcUVBaklTTUhjU3RPV0VxRjc5U3dvSHQzUndaOU16djh3NzhvSG9OY25UbWRKaHRLYUlpY0Y2MXBFMmlJNEpqTEpnSFBVUEpKQ04wRmRTcVd4anIwSm9OR1IramdTYWpoSitaYlFPN1JiNlNUeGtpRWNCbll4d0QzQlY2SWhPZ3IzR0tGTFZjVURuUWRnNlV6T2tJYjFqR0RvUnB5T0JUaEgxMWhSOFVXYjBNZ3ZvYUJXUEJ6cXJOYkhjb2MxaDYyUGwxOUZBSnplSmNUbm82TVA3M1FKS2gvbUFvTnZHWkRFYkViSlU5WStGVmVpRERybklrQW1vWlVPamNDYjNKOUcwVkt6TUR3bGEwVll2aW5xV0hKck9OTWlHUmRYUVFWZEdRbEsvcFBXeW96VHN0OTBtNEdKV1BTem9hSFMzaXgxaFc0RFltNTVuTHJKVUNSelkwbmtYWUtzL2gzZjByV3BCRUZ3U0FSeDJveWdrN1Z1R2lpSkFFY1BvU0Rsb3lIUjAwTUVDYXlQdkVLSkpERFhWSVZmdHBGcEhCQjNKWVFOUFJtZitiMFRuT2haK1pvTDhnUmZPZ3VLYjh3K0xiSWl2NFhGdE41WFNHWURPQ3hndXZTT0J6S3l2TU1qMkVhRm45VU9IdGpTQ1VKZ21Fb1VJUTBJOEN3N3NIQk9OT2E1N0hXaDQwa2VFb2w2RGozU1NsTmhtR0pVOE9aTkFERjNPbUtwRFM5S25mWUFXNkZFd0lJWS9sR0ZHZG1sdE12ZW5oQmdOTWJoK1R2WTRaQm16cGZoYTJTWkhEOXNhZDkwS2JyM0xkWk1kc3hnQ1dYbDlaRFNuYWQ3YzBQU3NGTWhxekp3d0x6OTF6NVlnTytVc1krbzI3bnJqa2RIVGFVZXpKYk5KZUxoU1RNaVJCV0lUanVpdkRjVitWdXVmTWtmR0RFMWNxTUU1NlhkaUZyTnhCM2FscFVrTU5LV0s5YUplZGFHSUJSNDk3RkgwQU11YVNVcDVXTFFwaTY1MUQ2Qy9MY1pta1hMNE1Ib01ZdDR3V2RwV3hvaE0zTndPcjlXYTB2MXZxTnp5cTk5dHNKOTl3MjJYZFZ3RTJVemEweDVCYzFEVXg5YkxZSEdXMGZWclE1Q2NoV3lUQUtodEhmeGEvWFJmVDJ3d3o5OEh5Y3c5WGl0MnVCWlFlakUrelFxamJROW1aVWFFMkpJcERPbkU0TXlJc1EycWpoYVF0ODRFWXVmWklzdWlxTk1tRnlpcnFtekNBalhvTGZJNm1udnNuS1hOODNJNE5CNnlBUzFaNWwvcDA4Z0VmK3l5a01MdzBPUUZ1WTdZaWxTaERmNFd5VWhzOXRRV3dGaS9NcUlzRVlpUjRkQmZMWUE5VGlqSW1qRzNUZ2hnam0xNUc5Zk56bURhTzJoWmlEWWpnR01rMUFtaFNtK0xMK2J4US9PeFljcWRuME5lNTRhWHh2UFZHMFcyRmNvUlRDd1RDODA5S1NGcFlNSmNORVJqSTIzSjVCSVhxKzlYTHpMa09vY0lnY2FvR1NIVTV6bWlhUjJuaXJ6VkRCZ01QUTFnckJBQ0YwRlhWVlZWTTAyZHBOaXlsekV5WWJqbFlCdEh3Tmc3WWtxQUdPb3lMOE92MDF1ZkZBRlhkVlZWVlYxSzQ2QUlvZEQ1SWZpVzNsOGpkaTgwNmRGdE1UcXhYTzJ0YStKT3BwRHJxbnROQ3FiczBnWE5kOUJFWVA4WUZndGp0azNBZWh1WFFGZlQxN2lGemsrMVJJa3JpdnQrYUJNNUpiWnk2TURPRXRXVHpaQkhxSnZxdlJUQnFheWJHclNDMUQ3WExxYWdxOHRiVVFmcnpYTFdZWWovK2wxVmtCc0hCRDEwNWpKcTJLVTl3aGhvajI2QUNXSGdRWVN6SjF1Y1k0ZzZ5bWRNeTBxUWd5NnJtUVBvSU1zakxlaXBuZXNwYW9zZXJ6TVJ6Q0xYZ1NjRTMwSWVRclIrc3QzT1ZWVlhYVnJBY01abUFhRjlHZWIwTEduVVFVVHNaZEQxK0t0ZXR1aWZ0U3lwWk55eDVDRkxaT3gzWTJzQ2VvdWhHOVNoTUdLUDVyY2hrZkp3SVRGdW5nRG93NEdlQnp2MDZ1Q0xFQnJYM0I3Wm1EU3Z1Um84MUFyWFNURjd6MFVRcWIzN0pkL2lrdVU3d3k0UWxFRWZiQm1xYk9ueFh6VmVIWnBLUmRFc1JXTm5qRXJVWEwxNVgxZUpsVUdYVDEzQjFJRTB5OGxGeUJUSHE3T3hBek96U0w1djBQVTRsVXhCUjBlWEx4TVRzN1o4WEMySHlKODgyQkxKeE5MVlhBV1ZlVnhueVQ2eTZsalQ5TWlJMFlkYmZEbnBZYXUzZ282dGhhWk9Ma3hUNDBZeHkvVFAwbEZBVCt2bi9oczNwNVR1ak5aWnNRcGVJbk9VRStIVjM2YXpCbDFYVlhVcHBmU2Jxd1k0cDB2S0RSL2xuL3pxbittSW9OT3NwYStrbFA1OHJ6MnI3NEVRTjE3ZGRjL2YvNVRPRG5UcVI4SmJudjdJMis4cmhJdTJscEprUVhmLy9OOC8vdGFESG4zNWxvMTF3Y0pYWGVJRlRqS3dlZ3ZvcXJwY1BmdmEyLzh3czF2UnJzclpWMy83M3g4OC9oSFZMVE00THkrRk9tdklEdlNvQmkzR2ordXYrOUg5MEpUeVJ2UzBobWxmdmU5ZjMzdjQ0OTQ1QjZSbzVNdWJIOElXME5WbTBNKzY0MzVwUEpFSzVqOHZoOTM5aTMvYysrMEhYL3VPYXZkWFBRRmVCbDFQVW5pQnVxbXE2NTl4eDkrR001ZFF0TVpWY3JidXV1ZVAvLzcrOVE5OXk5dExKcXNuWDlURE4rcnAwNmozWU9ucmZuUy8ya1l3cncwNkp0eUNmT2Z2L25QbmR4N3ltSGR1ZDloTGx6WWZ5dUVKMkRGNmhCRnVmdFFQL3hJSjJuRnRZdHl3bVRsYjZ0ZS8vTzR6SC9hbXQyMlBGdTkvMFF0dm5mOVFQZGVocmc1NThSWitEek1YMFhEUWtYRVZJZWxmM3JjOXdsWlZYVmZWaTc5Yyt1YnRUNnczT25RRHV0NmNYT3IycmI5ZVJiNWloRjB4blc5K1hGUTd4M2Q2N0RjYkFxQ2UvT0MzYm8wZHkydVBDSVkvVlN5OGRsRVoyVU1XNXJJTStxdHBycmg4OVpYdEVXOWFtbTd5am1RRFdWNFpkd2RIV2IyOENJMXZkYzNYWnVyMTlLVW5qMlBLSXRBYlMxT2JVTDVnbFJhWFRtUEhvTDh4L2ZhWFVrb3BmZVNsQzVQTEN0RE10d2dRNHRMNVdjazllcUNiaVAzZUcxTks2Ymx2TEtUTEJhQ3IyV01ZUzBseCsvV09iVWw4djJ2Q3A5dnNYZGRWOWFGWHBKUysrTVFyaFNDNHFCdWZiUkViUmZQdVJXVjJqOEpCZk9XSFUwcGZlRXExMkQzU09MNlhXWVdRWVc0WVVEb3pETHVBdnVGakthWFB2R0JSYlRwTGk5VWxCaEtoTzlnMHNOdjhKT1pEM2tzK25sTDYzUE9LSUphQUx0VTZiYXZ0MmZGOEhnQnBGMHZYMWFVM3A1USsvNlJTdmJvYjFkditPODJOWERKbkJtNDVveG4wMTZjLzg0T3ZTU2w5NVFsWGx2djByS2xIejJlaVNSbEFEcW5sUmk0c3U4Y1VkQjF4K3Ztdlh3TTZiV2pjdW40bUxoWXJnVzdvNkMwN2lQWGx1WU1ZUCtPelQxdlFiUlZuTHBkbi8xa3U5cWRITU5TdTNqcUFtem1JWGZmeDFDdVRSNzU1SkxkMVRwVEtWelRMVUROM1dRVDZtdHVtQnpGLzROM2JtNjJaNFdjOTErdm1mWVBScE5acTdqVFlxdlBLbHI2dFdFTVdUUGV1VjkyMGJjeGNQSWtqaEJoTk16UGF1RzVoYS9VMEYvTG1DcDQzZkdLWDJmZzRGSE9rakdwdXZZaU9jWmMwZnVXbUc0WS81YTBmZVBuTGJxM3E5N3oyaHZkVmkxUUlhWE11Q2pVUUJ2d2Q0bUlqYXNrOVZ4bDAvNHZYZlhyeXFlZDg2c2FxZXZOSFA3bE1oVEEwZHlGUkIvUFZuN3psKzl3b0h1OGlwdFdYc2ZhdnNVaktkNGlRWUVybkZiU0hDNGFNdXM0Njd1VmlxeThZN2t1U1loZmhJSktPZllKRy95cmsrRjA0dHBuT00yaENSSHRSZlo0VjRzZ1h6NjIzZEx0ajVlYUMwK01iZXYxRjhGRlBPMFJ1b1dGTDV4eDBaSkdRWDhVdnplSHhNYS9XbWtKZzNMRVFpbTg2blgvUUlRRE1GQk9sczhDOFZsNHZoM1FpLzNxY1ExK3J1YmVNaUh5RHNFNTFHZGN4M1lPUTNkd09kVmFZMThmcElCN2xzNE84eS9aRjNJdVh6dksxK3BjYmJHQnJ6aW5vYy9KNlFJTCtIMTl0aGRPd09nNkNBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiXSwiYWFndWlkIjoiZjU2ZjU4YjNkNzExNGFmY2JhN2Q2YWMwNWY4OGNiMTkiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwidXAiOnRydWUsInV2Ijp0cnVlfSwidHJhbnNwb3J0cyI6WyJpbnRlcm5hbCJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0wMS0yNiJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjQtMDEtMjYifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyJhODY3Nzk3ZWVkMTQ0NmVjMTg0ZTNiNTYwMGFlMDBiNDlhYmE2MjE0Il0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbImE4Njc3OTdlZWQxNDQ2ZWMxODRlM2I1NjAwYWUwMGI0OWFiYTYyMTQiXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlNlY3VyaXR5IEtleSBORkMgYnkgWXViaWNvIC0gRW50ZXJwcmlzZSBFZGl0aW9uIn0sImRlc2NyaXB0aW9uIjoiU2VjdXJpdHkgS2V5IE5GQyBieSBZdWJpY28gLSBFbnRlcnByaXNlIEVkaXRpb24iLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDczLCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjJ9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50IiwicmVtb3RlX2hhbmRsZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJREhqQ0NBZ2FnQXdJQkFnSUVHMEJUOXpBTkJna3Foa2lHOXcwQkFRc0ZBREF1TVN3d0tnWURWUVFERXlOWmRXSnBZMjhnVlRKR0lGSnZiM1FnUTBFZ1UyVnlhV0ZzSURRMU56SXdNRFl6TVRBZ0Z3MHhOREE0TURFd01EQXdNREJhR0E4eU1EVXdNRGt3TkRBd01EQXdNRm93TGpFc01Db0dBMVVFQXhNaldYVmlhV052SUZVeVJpQlNiMjkwSUVOQklGTmxjbWxoYkNBME5UY3lNREEyTXpFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUUMvandZdWhCVmxxYWlZV0VNc3JXRmlzZ0orUHRNOTFlU3JwSTRUSzdVNTNtd0NJYXdTREh5OHZVbWs1TjJLQWo5YWJ2VDlOUDVTTVMxaFFpM3VzeG9ZR29uWFFnZk82Wlh5VUE5YStLQWtxZEZuQm5seXVnU2VDT2VwOEVkWkZmc2FSRnRNamt3ejVHY3oyUHk0dklZdkNkTUhQdHdhejBiVnV6bmV1ZUlFejZUblFqRTYzUmR0Mnpid25lYndURzVaeWJlV1N3Ynp5K0JKMzRaSGNVaFBBWTg5eUpRWHVFMEl6TVpGY0VCYlBOUmJXRUNSS2dqcS8vcVQ5bm1ET0ZWbFNSQ3Qyd2lxUFN6bHV3bit2K3N1UUVCc1VqVEdNRWQyNXRLWFhUa05XMjF3SVdieGVTeVVvVFh3THZHUzZ4bHdRU2dOcGsycVhZd2Y4aVhnN1ZXWkFnTUJBQUdqUWpCQU1CMEdBMVVkRGdRV0JCUWdJdnowYk5HSmhqZ3BUb2tzeUtwUDl4djlvREFQQmdOVkhSTUVDREFHQVFIL0FnRUFNQTRHQTFVZER3RUIvd1FFQXdJQkJqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFqdmp1T01EU2ErSlhGQ0x5QktzeWNYdEJWWnNKNFVlM0xiYUVzUFk0TVlOL2hJUTVaTTVwN0VqZmNuTUc0Q3RZa05zZk5IYzBBaEJMZHE0NXJuVDg3cS82TzN2VUV0Tk1hZmJoVTZrdGhYN1krOVhGTjlOcG1ZeHIrZWtWWTV4T3hpOGg5SkRJZ29NUDRWQjF1UzBhdW5MMUlHcXJOb29MOW1tRm5MMmtMVlZlZTYvVlI2QzUrS1NUQ01DV3BwTXVKSVpJSTJ2OW80ZGtvWjhZN1FSalFsTGZZemQzcUd0S2J3N3hhRjFVc0cvNXhVYi9CdHdiMlgyZzRJbnBpQi95dC8zQ3BRWHBpV1gvSzRtQnZVS2lHbjA1WnNxZVkxZ3g0ZzB4TEJxY1U5cHNteVB6SytWc2d3MmplUlE1SmxLRHlxRTBoZWJmQzF0dkZ1MENDckpGY3c9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFmQ0FZQUFBQ0dWcytNQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUhZWUFBQjJHQVYyaUU0RUFBQWJOU1VSQlZGaEhwVmQ3VE5WMUZELzNkNTl3ZVFTSWdTOUFRQVhjRkxBUVppOWZwZVZ6MXRZL1dUWnI1V3hwYzdXNWtuTGE1akkzWjg1c3JTMm5NMnNqdFd3WlM3SVVINEg0eENuRVF4NERBWkY3NFY3dXM4ODV2OS9sSW5CdlZKL0I0UHY5bnUvNW51LzVudk01NTZmekEvUXYwSGIvSXJYM1ZGS1BvNDVjbm00aW5VSVdZd0xGUm1aUVV1d2pGRy9OMWlSSGgxRVowTlJWUnVkcXQxQmQrMm5TS3lTL09oeXMwK2xrM2UvM2tROXF2RDRaVXRhNFZWU1V1WTBlaXB5aVRoQWZvY29PUlZnRHV1dzNxS1JpQWQzcmJjRXRqVGpZSW9mNldhSHNDbXpWUFdDTXgrY2doOHRMcVdNS2FNV3NVakxxbzJSdEpJUTBvT3ptZXJwUXU0ZXNaZ3NPTmtHeEg3ZDBrZHZUVDE3czRPTVU3Vkk4WmhqZ0dhTStBcTlpRU51OFBpZjF1ZHowN013dktXZjhHbFZvQ0VZMDRQQzVXZFRhWFlGYlI4dk52TDUrM0tnZmI1eE5NeWE5UmFtSml5bmFNbEdUVnRGbHI2YmE5dStwcW5FWDR1TXVSUmdqU1lFaHJON3V0RkZlNmxxYWw3TmZrdzVpbUFHSHluUHBiazhWbVkweHN0bnB0bEZDVkNZdHpUdUJOODNRcE1MalR0ZXZkUHpTVW5KN2U4bWtqeFozOWZYYktEZmxkWnFidlUrVFVnR25CVkY2ZlEyaVBIZzRXMTZVV1V3dnpiazE2c01aRStQbjBwdno3SlNldUF5ZXM4bGNwQ21hS3VvL3ArcVdyMlVjd0lBSFdydlAwWUV6aFhBdExBYnNzSGhwN2lHYW12eWlqUDhyeXFyWFVXWDlYb293eHlBdWZOQnJwNDNQT0JGWFpsa2Y4TURSaXFjcHlvd0F3cHV6MngrZld2ei9EdGRlOXNtc3p5Z3RjUjZDMXdiZHpCbDZPbHE1V05ZWTRvR2F0aEpNcmtURXgwakFSU0hBVnMrNXJZa1FOWGIrUWdmUExzUTZnWHlJbnNyZVFmbXBtN1JWRllmTDg2bjFmaVVPa1l2U2hrVVB4dmJ1a3pveTZLMWloTTFobzNYelc2RXZTZlhBK2RwaVdHYVdkK2RvWHpMem1Hd0tZRkxDQXNSQWxQQkFoTWxDRlhVN3RCVVZQcjhIZ1ZjSkhXcStGMDBwbHIrRE1UZHJQNHp2eFkxMWtOTWh4VCtTZVRHZytkNFY1TFFKaXR5VUdKTkI4VkZac2pnWUJaTS9JSS9YQ1RrajBxeURPcEYyQVZRMTdDSWpVcC9EblQxVWtMNUY1Z2RqK3NTMXdnMWdFM2dpZ202MGZDWHpTblBYYnlBUGJJWHYrSURwRTE2VGhhSElTOXNreWhsbU1FNUYzY2ZxQUtocTJDMEU1UEgxZ1lhWGFMUERrWkcwSERKT25LV0hwNTFJMHo1U091eDhlMVdBdVp6ZEhRclRrcDhUbWpYb0krbGEwd0dac3p1YnFiTzNpZlE2QS9XN3ZWU1lzVjNtUjBKS3drS2M0V0hpQmttUjhJM0NDZ0k4N29PTDRxelQ1UCtSVUpCZWpFT2dBUEs4aFlQemF0TStlSVRwMklPOXlUUW1lcm9tUFJ4eDFxeEFjc2lsZS91YlNlRWJjV1FHWUVDZ2hjTFkySHlLam9nakgyNWhNcGpwVXYxT3VnbGk0ZWgyZVJ3ME8zMmJKamt5dUNnTnpnMHZ6bFlNU2lTczB1b280TUc3aE1PakNFYVgxeUZFMG5TdmpCenVUbkVwSzg2WjhJb3FGQUl1Ync4a2c5QXJFYVJFV1NaSStqSDRYYnA2ZzlFOUVuSlQzb2FSekROK01VSkJRREhuNTZhOG9VbUVCdXNPeEJzL041K3RKRWJQa0FGRGo4VUd2T3MvSVd2Y1NnbEdCaHZTNy9GVFlmcFdHWWREWThmUEF4V1NBMzVzVEM0cDQrTG00QWFxSW9QZVF0ZnVmSzZKaDBaaHhsYnNVWE9TbVhOaWZENVpUQWt5RG9mYmJjY2x4bkE4V05BcXhDYlJOeWtoWHhRcGFEdzY3ZlhVWWJzaUcwS2h0djJvZUl2aDhyaFFNWU9jRUFxWEcvZUkrem5nT2M1eXhyOHE4MklBTTFjL0ZMRk9wbHF1NWVGUVhyTVp6R2NWQ2pZYkxXRzVJNEJUMWV1UnJsYnh0Tk90TWl0RERFaExYSUl5bkFBdnVPRVdFM1gzTmRBZnQ5NFZnYUc0MlhJUXQwWlg2UGVDRS9xUUZlOXJLNkh4N1lVNTBLdkg3Zlc0ZlMrcTdLS0JKeHNnZ0JYNXBTQUdoMWpJclZoNXpRNnczUmZhYWhCWG0vYUNiQ1pUakNVRlVUeVdacVc5cDYyTWpKUFhWcU9yUGdNTzROdjc0R2tmK293ZnROVkJEUW5qRkpxSFN3MTdwWHZoV1c1S1pxZS9RNDlOL1VTVENBVldvUVhGSUhCSFhYZTNGUHJVRHN1R0RtdEYvaEhLVEhwZWt4aGlBT1BJK1NKcTZTNkhGNEk5WVd6a0JKVG80NmlVTXpXcDhQaXIvUmlkdUx4S1lzU2tzVjh2TGxPUXZoR1gyWWxSME9CaEJqQyt1L2dFY3ZZMEFwSzdZazQxTnhqUFNRbldGSFRGNjZVcmpnZXZCOEN1NWErbDJ2WVNSUHR1VkRvNzNoaGRNU0huVVg3dFRqc1ZaR3hBbC9XcHRpT0lFUTFnbkwyOW1YNi90UjF0bWxrWWo4VzRYK0NTaldjVURHWTFOcFMvQzdoU0txaU1MTS9sMlFtU1daNzNEZHorZ2lvOEJDRU5ZUFE0NnFua3p3WFVicXZCa3hqVVFzV2ZaRmdidW8zckFmK3dON2pPTzkwK3lueDRQaTNMKzBuWUwxU2NoRFVnQVA0Z1BWLzdJZDFxKzFIU2htdUdrSXFXUlBneXhNRnFQOEhmalRualh3WTViUWZiSmN0Nk9JektnTUhvdEYvSGUxZWdzYXhIU3FHNndmZG1RNXg4TnlURkZxQmNwMmlTb3dIUjN5azUrMzZoRjd2WEFBQUFBRWxGVGtTdVFtQ0MifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMC0xMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzMsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiU2VjdXJpdHkgS2V5IE5GQyBieSBZdWJpY28gLSBFbnRlcnByaXNlIEVkaXRpb24iLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlUyRjEwMDAyMDI0MTAxMjAwNSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTA2LTA0IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3MywiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJTZWN1cml0eSBLZXkgTkZDIGJ5IFl1YmljbyAtIEVudGVycHJpc2UgRWRpdGlvbiIsImNlcnRpZmljYXRlTnVtYmVyIjoiVTJGMTAwMDIwMjQwNjA0MDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMDYtMDQiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDczfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI0LTExLTEyIn0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiNDkwNzk5NWM4NzNhZjk0YjEwMjc3ZWJhNmIxM2I4MzYxNGFjYjcwNyJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyI0OTA3OTk1Yzg3M2FmOTRiMTAyNzdlYmE2YjEzYjgzNjE0YWNiNzA3Il0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IDUgU2VyaWVzIHdpdGggTGlnaHRuaW5nIChFbnRlcnByaXNlIFByb2ZpbGUpIn0sImRlc2NyaXB0aW9uIjoiWXViaUtleSA1IFNlcmllcyB3aXRoIExpZ2h0bmluZyAoRW50ZXJwcmlzZSBQcm9maWxlKSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk3MjgsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6Mn1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiLCJyZW1vdGVfaGFuZGxlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRFNEQ0NBakNnQXdJQkFnSVVVY21NWHpSSUZPZ0dUSzBUYjNnRXVaWVprQkl3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRRG01NTViV1k5V1crdE9ZMHJJV0hsZGgrYU5hbm9DWkNGaDdHazNZWnJRbVBVdzBoa1NHNnFZSFF0UCtmWnlTMzNWRXJ2ZytCUXFubXVtZ05oZnhGcmt3RVpFTGVpZEJjQzhDNEFnNG5xcWlQV3B6c3ZJMTdOY3hZbEluTE5MRmNaWS8rZ09pTjZaT1RpaE81L3ZCWk1iajlyaWFBY3FsaVltTkdKUGdUY01HYUVBeU16RU1OeTJubTZFcCtwalA1YUY2Z2kyMXQvVVFGc3VKMWoyUmoveW5NL1NkUnQrZWNhbDVPWW90eEhrRmJMOXZ2djJBMk92NUlUWkNsdzRiT1M5bnB5cFFpbU9aNVFBWXl0bVlhUXBXbC9wTVl6NnpTajhScWtWRE5FSkdxTmZUS0EyaXZMWXdYNmxTdHRNUGFwZzBKODRsOVgwdm9WTi9GcFM0VkNWQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJRZ0tGQWhHNlJhVytoVHk1MmR4ZVQ4YkM5Nkh6QWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQVlNemdMckpMSXIwT292UW5BWnJSSUd1YWJpSFNVS1NtYkxSV3BSa1dlQXRzQ2hERUhwWGNKL2JnRE5LWVdvSHFROHhSVWpCNEN5ZXBZZXZjM1lsckc4bzd6SHhwZlZjYW9MNVNldUprekh4S240YlRhU3A5K012d2FtbnA2NGtaTWlOYkZMa25mUDlrWUtvUkhrTVdoZVJKMVVzUDF6NFNjbWtDZUlMZnNNczZ2cW92cWpXQ2xGc0pwQmNzbHVZSFdGN2JCSjFuNFJ3ZytBVEVvcFk0SWdHdjZadndjK0E5citBVDJocXBvU2tZb0FsK0FOWXdnc2xPZjlzSmUwVitUQTlZWS9VbGFCbVBQVGQwLy9yOXd2Y2VQV1prUGpLb0FDL3pVTmhmRGJoNExWOEdIczNseVgyWG9tTC9MTmM4Sll6eUlhREVoR1F2ZW9QaGgvdHIxZz09IiwiTUlJRFBqQ0NBaWFnQXdJQkFnSVVYemVpRURKRU9UdDE0RjVuMG82WmYvYkJ3aVV3RFFZSktvWklodmNOQVFFTkJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNWjYvVHhNOHJJVCtFYW9Qdkc4MW9udE1Pby8ybVEyUkJ3SkhTMFFaY3hWYU5YdmwxMkxVaEJaNUxtaUJTY0laZDFSbngxb2Q1ODVoKy9kaEs3aEVtN0pBQUxrS0t0czFmTzUzS0dOTFp1ano1aDN3R25jcjRoeUtGMEc3NGIvVTNLOWhFNW1HTkQ2enFZY2hDUkFIZnJZTVlSREY0WUwwWDRENW5HZHh2cHBBeTZua0VtdFdtTW53TzNpMFRBdWNzcmJFNDg1SHZHTTRyMFZwZ1ZkSnB2Z1FqaVRKQ1RJcStEMzVod3RUOFFESXYrbkd2cGN5aTV3Y0lmQ2t6eUNpbUp1a2hZeTZLb3FOTUtRRWRwTmlTT3ZXeURNVE10MWJ3Q3ZFenB3OTF1K21zVXQ0cmowZWZuTzlzMFpPd2R3TVJEbkg0eGdVbDVaTHdyclBrZkMxLzBDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01COEdBMVVkSXdRWU1CYUFGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFNd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkRRVUFBNElCQVFDM0lXL3NnQjlwWjhhcEpOanh1R29YK0ZrSUxrczB3TU5yZFhML2NvVXZzcmh6c3ZsNm1lUE1yYkdKQnlKMVhucXVCNXNnY1JFTkZ4ZFFGbWEzbWlvOFVwZjFvd00xWnJlWHJKMG1BREcyQnBscWJKbnhpeVlhK1IxMXJlSUZUV2VJaE1OY1pLc0RackZBeVB1RmpDV1NRdkptTldlOW1GUllGZ05oWEpLa1hJYjVIMVhnRURsd2llZFlSTTdWb2xCTmxsZDZwUkZLbFg4dXN0Nk9UTU9lQURsMnhORjBtMUxUaFNkZXVYdkR5QzFnOStJTGZ6M1M2T0lZZ2MzaXJvUmNGRDM1NGc3cktmdTY3cUZBdzlnQzR5aTB4QlRQclk5NXJoNC9IcWFVWUNBL0w4bGRSazZIN1hrMzVEK1dWcG1xMlNoL3hUNUhpRnVoZjR3SmIwYksiLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVRuYmJHSVIyTkh2enFJS0ZBZVF3RzFYQmlzMHdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFRWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPc1hqM2swNEJhbjRUWWR0WktxRC9PUEp4eUR5YVBtQ0JVRlVpYVpJZ1R0ZVpuajNYMjVEaGdwWlpYc0M0RDB5ZEljcmxBNndOVUluT1JML0w5ekJiVEVJTUFWTUdvNmc3VUtBbWIyTUY2QUhibmhZSmQ5ZWlrdXBWTldTaEhOWU5jNEdCZE8xWU42QWZVcXZKaEhiZTNWNFNOTVBtQlJFS0pQVno3VGh3Z21nZ1RlOFdzMkswL3dzcXYyd1NFN3BiQ0JzVVpoSVg1MWJaTTNwcUR3SlBUbVJGRXZ0MC82dEc1ZU84RjNqMTRPWHFmRWhtam4xVnZ4S0RZUU9MWkF4Q3d3Z0MwUDRDZGZXdjN5OFBTUjhJMzU0aE8xWStHek5qdklxWDM4TktMeXd1SVlIRmVyT3hObHhFTUJ2RmhZQnVSdVlBa2tnVWFQcU42VUJoc0lMcnNDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNDb1JIaGl5Tm5iblhSV0lMNlpCWG9CWDlZVE1COEdBMVVkSXdRWU1CYUFGQ0FvVUNFYnBGcGI2RlBMblozRjVQeHNMM29mTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFDUUZhZkpJMS81V2c5Q0VFaW1FMVJQNTRSZ1F3VE5UT09Rc0xBQ1RlK3JJdGxGUXpDOVpEaHJWODI4eVg3anp5K0FBc3AzaXpLN1QxdGgyZGw3bSt0dTBzdzJQYS9vbGMwMm50NlB5SXczNDhnYUh6aEkxKzBLRTQ1cXh2RkRlTDJsTXhiUGZDWXZ5RUVhWXpqaVFFTFU1OTUxcFhHV3lLTWEvNGZMdE8rWktPWGhNdVZlcTRyWERQSTU0VzZKSE9pQWFpS2Rpdys1ZTNjMmt0L2pGSVF0TTZ2TVhnOUxORnpkakVUTnQyMFZYOVFldlJwRlpmdWNNRzl3Q2FRRG9GbFB6cFRNSktoUGV2L2ltSm1aWWhLZnIwbExjZW10cWpJeExBb3FaZE9ZZkhCZzYrdkFjZFBJL2lhdUdwVUF2N1grVUtObUR3aloyQmFINHNMd2hCMm0iLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVIzOG1xMjZTZjJzelZWMkJkRzZXRU43a3VXVXdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFSWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFOWTBXYjlvUG9Sb0tvUXlXUGFKcHoxMXZyV1RnNnpUdG1OajJWb0tSbnl2S0dScXB6YjgzdzVsNllBOTZVWWtZQkRRUDBpbE8yRFBlNndXcVZSNXpEZlJ6ZGNIOGJoK0w3ZEdHdmFlNmhSVFpoa0ZrQ3BYRHM0SGNja25yRGY4RkNsSjdIZTM5SmY0Mi9HMVFtMnp6OVdXbXJQWHRnaUsveDA1R2pzUWZHdURHMXpmNVFUVVVpZThsd3ltSzNUZmRPdk5lZUpBQVBlMnBuN0l0ZlJiK3JWck5XaUR6bFJuMnZObloyd1BvNHdIL1dKNmRoWFpHK3JNV1QrYTZCb2NnMVVmSXc2a2R1bkc0YlRwWnpzdmFjRll5UjBtcGYrRGVPbnBTV0FteXdKV0h2VGxmMllYeEZ5ZVhjVEFDZFFsY01OR0oyVmhaUTQ4eHRQNS9SQlAvOGtDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNoeTQyb2tpcWNUUzFpcWEvSFJXamtCbjRIL01COEdBMVVkSXdRWU1CYUFGT3EzUXBDZURIdGtldHRVZkFPNmZFNmYyS0ZoTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBbitSSElQYnRNRUROZFQxZzhIL1JpdEFrVWRMZ0F0MXRXR1dubGo5a25idjQvNEdsWDdDOXA0NWVmUE85L2FaTDZPVjFYUktCaTZLbXRCVzVLN251WUVuTXgvNUJxQlNiTFQ3cmhkdUM0OVRCZU1iOVBIZFhzVGxTVk5ZZWZyMWRHaWRyNGoweFZCUUxiMXJrbkRBYmRXRHpLZnZuYXlLTzhGcndlN0h4ODQzTUcvckorYzBYcnVVdmJmVlRDSExpSVdoTTdvTkRoTDh4b2I2eFVvOUtMS2NTTCtJdFlzTzMvOVdiOFE5R2pzcUw0RlhzRGNHMVNhWWg3S3BmdU1tT2l4cXpKWk8ybklpY1BZUmcxSTJTdWlVZllPNzB0bWRIY2JsK2tTUW1TWXQ3cnE0dmlJTGcyR3gzajlySVR1V1RqYmFVYVNTUXhnT21NU0h1eXpNQUMiLCJNSUlEUnpDQ0FqR2dBd0lCQWdJVWV4OW5UOXZ3Wk5YUzQ4M0xkaVlHZncyU2pTb3dDd1lKS29aSWh2Y05BUUVMTUM0eExEQXFCZ05WQkFNTUkxbDFZbWxqYnlCQmRIUmxjM1JoZEdsdmJpQkpiblJsY20xbFpHbGhkR1VnUWlBeE1DQVhEVEkxTURnd01UQXdNREF3TUZvWUR6azVPVGt4TWpNeE1qTTFPVFU1V2pBbk1TVXdJd1lEVlFRRERCeFpkV0pwWTI4Z1JrbEVUeUJCZEhSbGMzUmhkR2x2YmlCQ01pQXhNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXUxTWV2bnk5ZHlPOVpVQzM5U29NaExjUi9EWHJ0Ri9jaU0xMnRjaXkyRVhBWjZNa3JpdlZ0Q2ZFVk05WDZJU1RFbkJQNnVTWVlvdjZwcHY2TzZKaDJOSG1ZbTR3K0puUzRWbkNQVTdtSEFNZlZJMk1HVFRNVk9ldzB4VXNHN3NJU0lrSURVQm11azhZSzljNXppYzkrdkZRR0xJa3NkWE81aVZGSWdORzUzY0dYRDRaTFpvQVBpdTBQRW96eEFxWUlhSTRneEtoT0EzUzgvVzhtSVdzdTZvZnlqNEd2a0ZHNlo3a3lGMzEwN1A3bXdGSExySTNFTmFQV01PRmNUYUdhMGR3Ky92VlJ3alJjRVpCVnN1dVQvODdja1NzMGE1cGt0M3ZaQmxhWWVUOHB6U3JlVjdtb3djSU05MEwyaWFBVGxQMG54bWFFNm5PeVRib2pGVmwyd0lEQVFBQm8yWXdaREFkQmdOVkhRNEVGZ1FVU1hFaDNzYTNidER1cm00TU0vQzdTMWxSdXVZd0h3WURWUjBqQkJnd0ZvQVU2cmRDa0o0TWUyUjYyMVI4QTdwOFRwL1lvV0V3RWdZRFZSMFRBUUgvQkFnd0JnRUIvd0lCQURBT0JnTlZIUThCQWY4RUJBTUNBWVl3Q3dZSktvWklodmNOQVFFTEE0SUJBUUI1R2MzaGFmdHA3aEtzRVpzbytpL1o1blJ1cWRtekcyV0NsVW9SVXFiYVB5Z2xuSkRqS1Iva2ZnT2w2aWJiRi96dGhtM0ttWFE3SGNESVAyeE1kRzdVMkwyaW1iSlFIcVBmL2gySHFvamI0clpndWUrNlc0a3RTUjVlbFI5TDFyWXFFL1NHWU00aUVLb1ZRU3Y3UlQxcnhJZVdpS3N3L1Z4eGkvUU9uc3gzRjd4ODBDQ1lnQjRFM3lReDhWVFc0NDBoVEV3VEExZU1IT2l4MzJ0UHR5eUhJYThQVlZJZlZwSFFKQmFNVnZ2NTA4VUVqd2tiVTJybmpmem9TVE5TOUE1alVROG1CU3ZlOTVyakIwZG85OEVVK0R4ZEJxWDIrSDZpNXdsSUNGZ3poZHpjc25lOWhHS1Q2bHpUWDRjSWRKc3JZMit4bGVLMEZGUXk2bEdFVkxFZSIsIk1JSURTRENDQWpDZ0F3SUJBZ0lVRHFFUncrNFJuR1NnZ3hnVWV3SkZFUERSWjNZd0RRWUpLb1pJaHZjTkFRRUxCUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURJN1huSCtadkR3TUNRVThNOFplVjVxc2N1Ymx2VllhYVJ0M1liYXhuOWdvZEx4NXN3SDBsWHJkZ2poNWg3RnBWZ0NnWVlYN0U0YmwxdmJ6VUxlbXJNV1Q4TjNXTUdVZThRQUpiQmVpb1Y3Vy9FK2hUWlAvMFNLSlZhM2V3S0JvNlVMZU1uZlFaRHJWT1JBazh3VExxMnY1TGxqNXZNajdKdE9vdEthOUo3bkhTOGtMbXpYWFNhajBTd0VQaDVPQVpVVE5WNHpzMWJ2b1RBUVFXckw0L0o5UXVLdDZXQ0ZFNW5VTmlSUWNFYlZGOG1scUsyYngyejZva1ZsdHlEVkxDeFlicFVURUx2WTF1c1IzRFRHUFVvSUNsT200Y3Jwd25EUkxWSHZqWWVQR0JCLy9wRXl6eEEvZ2NTY3hqd2FIMVpVdzliblNiSHl1cktxYlRhMUt2akFnTUJBQUdqWmpCa01CMEdBMVVkRGdRV0JCVHF0MEtRbmd4N1pIcmJWSHdEdW54T245aWhZVEFmQmdOVkhTTUVHREFXZ0JUUzd1OWFJbzA2YlZ3amx6M3loZFVtOFNWN2tqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQTRHQTFVZER3RUIvd1FFQXdJQmhqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFxUWFDV014VEdxVlZYN1NrN2trSm1VdWVUU1lLdVU2K0tCQlNnd0lSbmx3OUs3SGUxSXB4WjBoZHdwUE5pa0tqbWN5RmdGUHpoSW13SEpneHh1VDkwUHczdllPZGNKSk5rdERnMzVQWE9melNuMTVjRkF4MVJPMG1QVG1JYjhkWGlFV09wem9YdmR3WERNNDFaYUNEWU1UN3c0SVF0TXl2RTd4VUJacTJianRBbnEvTkRVQTdiZTRIOEgzaXBDKy8rTktsVXJjVWgrajQ4SzY3V0kwdTFtNkZlUXVlQkE3bjA2ajgyNXJxRHFzYUxzOVRiN0tBSEF3OFBtcldhTlBHMmtqS2VyeFBFZmVjaXZsRmF3cDJSV1p2eHJWdG4zVFYyU0J4eUNKQ2tYc05EMDVkQ0VyVkhTSklzK0JkdFRWTlk5QXd0eVBtbnliMHY0bVNUenZXZHc9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwiaWNvbkRhcmsiOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJwcm92aWRlckxvZ29MaWdodCI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsInByb3ZpZGVyTG9nb0RhcmsiOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0ifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNi0wNC0yNSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk3MjgsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWXViaUtleSA1IFNlcmllcyB3aXRoIExpZ2h0bmluZyAoRW50ZXJwcmlzZSBQcm9maWxlKSIsImNlcnRpZmljYXRlTnVtYmVyIjoiVTJGMTAwMDIwMjYwNDI1MDA0IiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25Qcm9maWxlcyI6WyJlbnRlcnByaXNlIl0sImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjYtMDQtMjUiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NzI4fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI2LTA1LTAxIn0seyJhYWd1aWQiOiI2ZWM1Y2ZmMi1hMGY5LTQxNjktOTQ1Yi1mMzNiNTYzZjdiOTkiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjZlYzVjZmYyLWEwZjktNDE2OS05NDViLWYzM2I1NjNmN2I5OSIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IEJpbyBTZXJpZXMgLSBNdWx0aS1wcm90b2NvbCBFZGl0aW9uIChFbnRlcnByaXNlIFByb2ZpbGUifSwiZGVzY3JpcHRpb24iOiJZdWJpS2V5IEJpbyBTZXJpZXMgLSBNdWx0aS1wcm90b2NvbCBFZGl0aW9uIChFbnRlcnByaXNlIFByb2ZpbGUpIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NiwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9LHsibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyIsImVkMjU1MTlfZWRkc2Ffc2hhNTEyX3JhdyIsInNlY3AzODRyMV9lY2RzYV9zaGEzODRfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo2LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCIsImJhRGVzYyI6eyJzZWxmQXR0ZXN0ZWRGUlIiOjAuMCwic2VsZkF0dGVzdGVkRkFSIjowLjAsImlBUEFSVGhyZXNob2xkIjowLjAsIm1heFRlbXBsYXRlcyI6NSwibWF4UmV0cmllcyI6NSwiYmxvY2tTbG93ZG93biI6MH19LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjYsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIiwiYmFEZXNjIjp7InNlbGZBdHRlc3RlZEZSUiI6MC4wLCJzZWxmQXR0ZXN0ZWRGQVIiOjAuMCwiaUFQQVJUaHJlc2hvbGQiOjAuMCwibWF4VGVtcGxhdGVzIjo1LCJtYXhSZXRyaWVzIjo1LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURTakNDQWpLZ0F3SUJBZ0lVVG5iYkdJUjJOSHZ6cUlLRkFlUXdHMVhCaXMwd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JCSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVFZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU9zWGozazA0QmFuNFRZZHRaS3FEL09QSnh5RHlhUG1DQlVGVWlhWklnVHRlWm5qM1gyNURoZ3BaWlhzQzREMHlkSWNybEE2d05VSW5PUkwvTDl6QmJURUlNQVZNR282ZzdVS0FtYjJNRjZBSGJuaFlKZDllaWt1cFZOV1NoSE5ZTmM0R0JkTzFZTjZBZlVxdkpoSGJlM1Y0U05NUG1CUkVLSlBWejdUaHdnbWdnVGU4V3MySzAvd3NxdjJ3U0U3cGJDQnNVWmhJWDUxYlpNM3BxRHdKUFRtUkZFdnQwLzZ0RzVlTzhGM2oxNE9YcWZFaG1qbjFWdnhLRFlRT0xaQXhDd3dnQzBQNENkZld2M3k4UFNSOEkzNTRoTzFZK0d6Tmp2SXFYMzhOS0x5d3VJWUhGZXJPeE5seEVNQnZGaFlCdVJ1WUFra2dVYVBxTjZVQmhzSUxyc0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ0NvUkhoaXlObmJuWFJXSUw2WkJYb0JYOVlUTUI4R0ExVWRJd1FZTUJhQUZDQW9VQ0VicEZwYjZGUExuWjNGNVB4c0wzb2ZNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUNRRmFmSkkxLzVXZzlDRUVpbUUxUlA1NFJnUXdUTlRPT1FzTEFDVGUrckl0bEZRekM5WkRoclY4Mjh5WDdqenkrQUFzcDNpeks3VDF0aDJkbDdtK3R1MHN3MlBhL29sYzAybnQ2UHlJdzM0OGdhSHpoSTErMEtFNDVxeHZGRGVMMmxNeGJQZkNZdnlFRWFZemppUUVMVTU5NTFwWEdXeUtNYS80Zkx0TytaS09YaE11VmVxNHJYRFBJNTRXNkpIT2lBYWlLZGl3KzVlM2Mya3QvakZJUXRNNnZNWGc5TE5GemRqRVROdDIwVlg5UWV2UnBGWmZ1Y01HOXdDYVFEb0ZsUHpwVE1KS2hQZXYvaW1KbVpZaEtmcjBsTGNlbXRxakl4TEFvcVpkT1lmSEJnNit2QWNkUEkvaWF1R3BVQXY3WCtVS05tRHdqWjJCYUg0c0x3aEIybSIsIk1JSURTRENDQWpDZ0F3SUJBZ0lVVWNtTVh6UklGT2dHVEswVGIzZ0V1Wllaa0JJd0RRWUpLb1pJaHZjTkFRRUxCUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JCSURFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURtNTU1YldZOVdXK3RPWTBySVdIbGRoK2FOYW5vQ1pDRmg3R2szWVpyUW1QVXcwaGtTRzZxWUhRdFArZlp5UzMzVkVydmcrQlFxbm11bWdOaGZ4RnJrd0VaRUxlaWRCY0M4QzRBZzRucXFpUFdwenN2STE3TmN4WWxJbkxOTEZjWlkvK2dPaU42Wk9UaWhPNS92QlpNYmo5cmlhQWNxbGlZbU5HSlBnVGNNR2FFQXlNekVNTnkybm02RXArcGpQNWFGNmdpMjF0L1VRRnN1SjFqMlJqL3luTS9TZFJ0K2VjYWw1T1lvdHhIa0ZiTDl2dnYyQTJPdjVJVFpDbHc0Yk9TOW5weXBRaW1PWjVRQVl5dG1ZYVFwV2wvcE1ZejZ6U2o4UnFrVkRORUpHcU5mVEtBMml2TFl3WDZsU3R0TVBhcGcwSjg0bDlYMHZvVk4vRnBTNFZDVkFnTUJBQUdqWmpCa01CMEdBMVVkRGdRV0JCUWdLRkFoRzZSYVcraFR5NTJkeGVUOGJDOTZIekFmQmdOVkhTTUVHREFXZ0JUUzd1OWFJbzA2YlZ3amx6M3loZFVtOFNWN2tqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQTRHQTFVZER3RUIvd1FFQXdJQmhqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFZTXpnTHJKTElyME9vdlFuQVpyUklHdWFiaUhTVUtTbWJMUldwUmtXZUF0c0NoREVIcFhjSi9iZ0ROS1lXb0hxUTh4UlVqQjRDeWVwWWV2YzNZbHJHOG83ekh4cGZWY2FvTDVTZXVKa3pIeEtuNGJUYVNwOStNdndhbW5wNjRrWk1pTmJGTGtuZlA5a1lLb1JIa01XaGVSSjFVc1AxejRTY21rQ2VJTGZzTXM2dnFvdnFqV0NsRnNKcEJjc2x1WUhXRjdiQkoxbjRSd2crQVRFb3BZNElnR3Y2WnZ3YytBOXIrQVQyaHFwb1NrWW9BbCtBTll3Z3NsT2Y5c0plMFYrVEE5WVkvVWxhQm1QUFRkMC8vcjl3dmNlUFdaa1BqS29BQy96VU5oZkRiaDRMVjhHSHMzbHlYMlhvbUwvTE5jOEpZenlJYURFaEdRdmVvUGhoL3RyMWc9PSIsIk1JSURTakNDQWpLZ0F3SUJBZ0lVUjM4bXEyNlNmMnN6VlYyQmRHNldFTjdrdVdVd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVJZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU5ZMFdiOW9Qb1JvS29ReVdQYUpwejExdnJXVGc2elR0bU5qMlZvS1JueXZLR1JxcHpiODN3NWw2WUE5NlVZa1lCRFFQMGlsTzJEUGU2d1dxVlI1ekRmUnpkY0g4YmgrTDdkR0d2YWU2aFJUWmhrRmtDcFhEczRIY2NrbnJEZjhGQ2xKN0hlMzlKZjQyL0cxUW0yeno5V1dtclBYdGdpSy94MDVHanNRZkd1REcxemY1UVRVVWllOGx3eW1LM1RmZE92TmVlSkFBUGUycG43SXRmUmIrclZyTldpRHpsUm4ydk5uWjJ3UG80d0gvV0o2ZGhYWkcrck1XVCthNkJvY2cxVWZJdzZrZHVuRzRiVHBaenN2YWNGWXlSMG1wZitEZU9ucFNXQW15d0pXSHZUbGYyWVh4RnllWGNUQUNkUWxjTU5HSjJWaFpRNDh4dFA1L1JCUC84a0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ2h5NDJva2lxY1RTMWlxYS9IUldqa0JuNEgvTUI4R0ExVWRJd1FZTUJhQUZPcTNRcENlREh0a2V0dFVmQU82ZkU2ZjJLRmhNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUFuK1JISVBidE1FRE5kVDFnOEgvUml0QWtVZExnQXQxdFdHV25sajlrbmJ2NC80R2xYN0M5cDQ1ZWZQTzkvYVpMNk9WMVhSS0JpNkttdEJXNUs3bnVZRW5NeC81QnFCU2JMVDdyaGR1QzQ5VEJlTWI5UEhkWHNUbFNWTlllZnIxZEdpZHI0ajB4VkJRTGIxcmtuREFiZFdEektmdm5heUtPOEZyd2U3SHg4NDNNRy9ySitjMFhydVV2YmZWVENITGlJV2hNN29ORGhMOHhvYjZ4VW85S0xLY1NMK0l0WXNPMy85V2I4UTlHanNxTDRGWHNEY0cxU2FZaDdLcGZ1TW1PaXhxekpaTzJuSWljUFlSZzFJMlN1aVVmWU83MHRtZEhjYmwra1NRbVNZdDdycTR2aUlMZzJHeDNqOXJJVHVXVGpiYVVhU1NReGdPbU1TSHV5ek1BQyIsIk1JSURTRENDQWpDZ0F3SUJBZ0lVRHFFUncrNFJuR1NnZ3hnVWV3SkZFUERSWjNZd0RRWUpLb1pJaHZjTkFRRUxCUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURJN1huSCtadkR3TUNRVThNOFplVjVxc2N1Ymx2VllhYVJ0M1liYXhuOWdvZEx4NXN3SDBsWHJkZ2poNWg3RnBWZ0NnWVlYN0U0YmwxdmJ6VUxlbXJNV1Q4TjNXTUdVZThRQUpiQmVpb1Y3Vy9FK2hUWlAvMFNLSlZhM2V3S0JvNlVMZU1uZlFaRHJWT1JBazh3VExxMnY1TGxqNXZNajdKdE9vdEthOUo3bkhTOGtMbXpYWFNhajBTd0VQaDVPQVpVVE5WNHpzMWJ2b1RBUVFXckw0L0o5UXVLdDZXQ0ZFNW5VTmlSUWNFYlZGOG1scUsyYngyejZva1ZsdHlEVkxDeFlicFVURUx2WTF1c1IzRFRHUFVvSUNsT200Y3Jwd25EUkxWSHZqWWVQR0JCLy9wRXl6eEEvZ2NTY3hqd2FIMVpVdzliblNiSHl1cktxYlRhMUt2akFnTUJBQUdqWmpCa01CMEdBMVVkRGdRV0JCVHF0MEtRbmd4N1pIcmJWSHdEdW54T245aWhZVEFmQmdOVkhTTUVHREFXZ0JUUzd1OWFJbzA2YlZ3amx6M3loZFVtOFNWN2tqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQTRHQTFVZER3RUIvd1FFQXdJQmhqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFxUWFDV014VEdxVlZYN1NrN2trSm1VdWVUU1lLdVU2K0tCQlNnd0lSbmx3OUs3SGUxSXB4WjBoZHdwUE5pa0tqbWN5RmdGUHpoSW13SEpneHh1VDkwUHczdllPZGNKSk5rdERnMzVQWE9melNuMTVjRkF4MVJPMG1QVG1JYjhkWGlFV09wem9YdmR3WERNNDFaYUNEWU1UN3c0SVF0TXl2RTd4VUJacTJianRBbnEvTkRVQTdiZTRIOEgzaXBDKy8rTktsVXJjVWgrajQ4SzY3V0kwdTFtNkZlUXVlQkE3bjA2ajgyNXJxRHFzYUxzOVRiN0tBSEF3OFBtcldhTlBHMmtqS2VyeFBFZmVjaXZsRmF3cDJSV1p2eHJWdG4zVFYyU0J4eUNKQ2tYc05EMDVkQ0VyVkhTSklzK0JkdFRWTlk5QXd0eVBtbnliMHY0bVNUenZXZHc9PSIsIk1JSURSekNDQWpHZ0F3SUJBZ0lVZXg5blQ5dndaTlhTNDgzTGRpWUdmdzJTalNvd0N3WUpLb1pJaHZjTkFRRUxNQzR4TERBcUJnTlZCQU1NSTFsMVltbGpieUJCZEhSbGMzUmhkR2x2YmlCSmJuUmxjbTFsWkdsaGRHVWdRaUF4TUNBWERUSTFNRGd3TVRBd01EQXdNRm9ZRHprNU9Ua3hNak14TWpNMU9UVTVXakFuTVNVd0l3WURWUVFEREJ4WmRXSnBZMjhnUmtsRVR5QkJkSFJsYzNSaGRHbHZiaUJDTWlBeE1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBdTFNZXZueTlkeU85WlVDMzlTb01oTGNSL0RYcnRGL2NpTTEydGNpeTJFWEFaNk1rcml2VnRDZkVWTTlYNklTVEVuQlA2dVNZWW92NnBwdjZPNkpoMk5IbVltNHcrSm5TNFZuQ1BVN21IQU1mVkkyTUdUVE1WT2V3MHhVc0c3c0lTSWtJRFVCbXVrOFlLOWM1emljOSt2RlFHTElrc2RYTzVpVkZJZ05HNTNjR1hENFpMWm9BUGl1MFBFb3p4QXFZSWFJNGd4S2hPQTNTOC9XOG1JV3N1Nm9meWo0R3ZrRkc2WjdreUYzMTA3UDdtd0ZITHJJM0VOYVBXTU9GY1RhR2EwZHcrL3ZWUndqUmNFWkJWc3V1VC84N2NrU3MwYTVwa3QzdlpCbGFZZVQ4cHpTcmVWN21vd2NJTTkwTDJpYUFUbFAwbnhtYUU2bk95VGJvakZWbDJ3SURBUUFCbzJZd1pEQWRCZ05WSFE0RUZnUVVTWEVoM3NhM2J0RHVybTRNTS9DN1MxbFJ1dVl3SHdZRFZSMGpCQmd3Rm9BVTZyZENrSjRNZTJSNjIxUjhBN3A4VHAvWW9XRXdFZ1lEVlIwVEFRSC9CQWd3QmdFQi93SUJBREFPQmdOVkhROEJBZjhFQkFNQ0FZWXdDd1lKS29aSWh2Y05BUUVMQTRJQkFRQjVHYzNoYWZ0cDdoS3NFWnNvK2kvWjVuUnVxZG16RzJXQ2xVb1JVcWJhUHlnbG5KRGpLUi9rZmdPbDZpYmJGL3p0aG0zS21YUTdIY0RJUDJ4TWRHN1UyTDJpbWJKUUhxUGYvaDJIcW9qYjRyWmd1ZSs2VzRrdFNSNWVsUjlMMXJZcUUvU0dZTTRpRUtvVlFTdjdSVDFyeEllV2lLc3cvVnh4aS9RT25zeDNGN3g4MENDWWdCNEUzeVF4OFZUVzQ0MGhURXdUQTFlTUhPaXgzMnRQdHl5SElhOFBWVklmVnBIUUpCYU1WdnY1MDhVRWp3a2JVMnJuamZ6b1NUTlM5QTVqVVE4bUJTdmU5NXJqQjBkbzk4RVUrRHhkQnFYMitINmk1d2xJQ0ZnemhkemNzbmU5aEdLVDZselRYNGNJZEpzclkyK3hsZUswRkZReTZsR0VWTEVlIiwiTUlJRFBqQ0NBaWFnQXdJQkFnSVVYemVpRURKRU9UdDE0RjVuMG82WmYvYkJ3aVV3RFFZSktvWklodmNOQVFFTkJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNWjYvVHhNOHJJVCtFYW9Qdkc4MW9udE1Pby8ybVEyUkJ3SkhTMFFaY3hWYU5YdmwxMkxVaEJaNUxtaUJTY0laZDFSbngxb2Q1ODVoKy9kaEs3aEVtN0pBQUxrS0t0czFmTzUzS0dOTFp1ano1aDN3R25jcjRoeUtGMEc3NGIvVTNLOWhFNW1HTkQ2enFZY2hDUkFIZnJZTVlSREY0WUwwWDRENW5HZHh2cHBBeTZua0VtdFdtTW53TzNpMFRBdWNzcmJFNDg1SHZHTTRyMFZwZ1ZkSnB2Z1FqaVRKQ1RJcStEMzVod3RUOFFESXYrbkd2cGN5aTV3Y0lmQ2t6eUNpbUp1a2hZeTZLb3FOTUtRRWRwTmlTT3ZXeURNVE10MWJ3Q3ZFenB3OTF1K21zVXQ0cmowZWZuTzlzMFpPd2R3TVJEbkg0eGdVbDVaTHdyclBrZkMxLzBDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01COEdBMVVkSXdRWU1CYUFGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFNd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkRRVUFBNElCQVFDM0lXL3NnQjlwWjhhcEpOanh1R29YK0ZrSUxrczB3TU5yZFhML2NvVXZzcmh6c3ZsNm1lUE1yYkdKQnlKMVhucXVCNXNnY1JFTkZ4ZFFGbWEzbWlvOFVwZjFvd00xWnJlWHJKMG1BREcyQnBscWJKbnhpeVlhK1IxMXJlSUZUV2VJaE1OY1pLc0RackZBeVB1RmpDV1NRdkptTldlOW1GUllGZ05oWEpLa1hJYjVIMVhnRURsd2llZFlSTTdWb2xCTmxsZDZwUkZLbFg4dXN0Nk9UTU9lQURsMnhORjBtMUxUaFNkZXVYdkR5QzFnOStJTGZ6M1M2T0lZZ2MzaXJvUmNGRDM1NGc3cktmdTY3cUZBdzlnQzR5aTB4QlRQclk5NXJoNC9IcWFVWUNBL0w4bGRSazZIN1hrMzVEK1dWcG1xMlNoL3hUNUhpRnVoZjR3SmIwYksiXSwiaWNvbiI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsImljb25EYXJrIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwicHJvdmlkZXJMb2dvTGlnaHQiOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJwcm92aWRlckxvZ29EYXJrIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiRklET18yXzAiLCJGSURPXzJfMV9QUkUiLCJGSURPXzJfMSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJsYXJnZUJsb2JLZXkiLCJjcmVkQmxvYiIsIm1pblBpbkxlbmd0aCJdLCJhYWd1aWQiOiI2ZWM1Y2ZmMmEwZjk0MTY5OTQ1YmYzM2I1NjNmN2I5OSIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwidXYiOmZhbHNlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibGFyZ2VCbG9icyI6dHJ1ZSwiZXAiOnRydWUsImJpb0Vucm9sbCI6ZmFsc2UsInVzZXJWZXJpZmljYXRpb25NZ210UHJldmlldyI6ZmFsc2UsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjpmYWxzZSwiYWx3YXlzVXYiOnRydWV9LCJtYXhNc2dTaXplIjoxNTM2LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjgsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4LCJ0cmFuc3BvcnRzIjpbInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi04fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotMzV9XSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5Ijo0MDk2LCJtaW5QSU5MZW5ndGgiOjYsImZpcm13YXJlVmVyc2lvbiI6MzI5NDc2LCJtYXhDcmVkQmxvYkxlbmd0aCI6MzIsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjoxLCJwcmVmZXJyZWRQbGF0Zm9ybVV2QXR0ZW1wdHMiOjMsInV2TW9kYWxpdHkiOjIsInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjoxMDB9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wMi0wMSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzYsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWXViaUtleSBCaW8gU2VyaWVzIC0gTXVsdGktcHJvdG9jb2wgRWRpdGlvbiAoRW50ZXJwcmlzZSBQcm9maWxlKSIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjUwMjAxMDA0IiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDItMDEiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTAyLTA2In0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiM2M2MDkyMzc0YzBkMDg2MmJhZGUxODc4Yjg2NDdmNzIwMDUxOWMyMyJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyIzYzYwOTIzNzRjMGQwODYyYmFkZTE4NzhiODY0N2Y3MjAwNTE5YzIzIl0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJBcmN1bHVzIEZJRE8yL1UyRiBLZXkgQ2FyZCBbUDcxXSJ9LCJkZXNjcmlwdGlvbiI6IkFyY3VsdXMgRklETzIvVTJGIEtleSBDYXJkIFtQNzFdIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEwMCwicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfSx7Im1ham9yIjoxLCJtaW5vciI6Mn1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjYsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NiwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUMrakNDQXFDZ0F3SUJBZ0lVVFhKeTI4bHBRVmxoSXA3RVRCaStVNGJjYUQ4d0NnWUlLb1pJemowRUF3SXdnWUF4Q3pBSkJnTlZCQVlUQWxWVE1STXdFUVlEVlFRSURBcE9aWGNnU21WeWMyVjVNUkV3RHdZRFZRUUhEQWhUYjIxbGNuTmxkREVVTUJJR0ExVUVDZ3dMUTI5dGNHOVRaV04xY21VeEVEQU9CZ05WQkFzTUIwRnlZM1ZzZFhNeElUQWZCZ05WQkFNTUdFTnZiWEJ2VTJWamRYSmxMVVpKUkU4dFEwRXRVbTl2ZERBZ0Z3MHlNekEwTVRneE5UUTFOVEJhR0E4eU1EVXpNRFF4TURFMU5EVTFNRm93Z1lBeEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlEQXBPWlhjZ1NtVnljMlY1TVJFd0R3WURWUVFIREFoVGIyMWxjbk5sZERFVU1CSUdBMVVFQ2d3TFEyOXRjRzlUWldOMWNtVXhFREFPQmdOVkJBc01CMEZ5WTNWc2RYTXhJVEFmQmdOVkJBTU1HRU52YlhCdlUyVmpkWEpsTFVaSlJFOHRRMEV0VW05dmREQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJDZ0c3cjZWQS9oK0J5blVueURaTUQwVlprWVc2UkducGgwdzI1Z1FEV01vcUFhaVVhRkc1TUNsa2hha0lCcExGKzZ4SkJoTzFncys3QzFrL2p1VnV2MmpnZk13Z2ZBd0hRWURWUjBPQkJZRUZKejFnRnRUVEJOZmZmREt2ZGpwVUV5cDcwenRNSUhBQmdOVkhTTUVnYmd3Z2JXQUZKejFnRnRUVEJOZmZmREt2ZGpwVUV5cDcwenRvWUdHcElHRE1JR0FNUXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0F3S1RtVjNJRXBsY25ObGVURVJNQThHQTFVRUJ3d0lVMjl0WlhKelpYUXhGREFTQmdOVkJBb01DME52YlhCdlUyVmpkWEpsTVJBd0RnWURWUVFMREFkQmNtTjFiSFZ6TVNFd0h3WURWUVFEREJoRGIyMXdiMU5sWTNWeVpTMUdTVVJQTFVOQkxWSnZiM1NDRkUxeWN0dkphVUZaWVNLZXhFd1l2bE9HM0dnL01Bd0dBMVVkRXdRRk1BTUJBZjh3Q2dZSUtvWkl6ajBFQXdJRFNBQXdSUUlnY2dYR01EUDJyZmg0RVRZOUVKTHd1WG8xUzlVaXF0RW1QaHE5L2RpUzBuQUNJUURveUxab3N4OHJSQUYxdnBSWGNzVlFERFNIb0VzL1BibUYzRXIvbUoweDZ3PT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBK2dBQUFQb0NBWUFBQUJObzlUa0FBQUFCR2RCVFVFQUFMR1BDL3hoQlFBQUFDQmpTRkpOQUFCNkpnQUFnSVFBQVBvQUFBQ0E2QUFBZFRBQUFPcGdBQUE2bUFBQUYzQ2N1bEU4QUFBQWhHVllTV1pOVFFBcUFBQUFDQUFGQVJJQUF3QUFBQUVBQVFBQUFSb0FCUUFBQUFFQUFBQktBUnNBQlFBQUFBRUFBQUJTQVNnQUF3QUFBQUVBQWdBQWgya0FCQUFBQUFFQUFBQmFBQUFBQUFBQUFFZ0FBQUFCQUFBQVNBQUFBQUVBQTZBQkFBTUFBQUFCQUFFQUFLQUNBQVFBQUFBQkFBQUQ2S0FEQUFRQUFBQUJBQUFENkFBQUFBRHJFZUtrQUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUN6R2xVV0hSWVRVdzZZMjl0TG1Ga2IySmxMbmh0Y0FBQUFBQUFQSGc2ZUcxd2JXVjBZU0I0Yld4dWN6cDRQU0poWkc5aVpUcHVjenB0WlhSaEx5SWdlRHA0YlhCMGF6MGlXRTFRSUVOdmNtVWdOaTR3TGpBaVBnb2dJQ0E4Y21SbU9sSkVSaUI0Yld4dWN6cHlaR1k5SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpFNU9Ua3ZNREl2TWpJdGNtUm1MWE41Ym5SaGVDMXVjeU1pUGdvZ0lDQWdJQ0E4Y21SbU9rUmxjMk55YVhCMGFXOXVJSEprWmpwaFltOTFkRDBpSWdvZ0lDQWdJQ0FnSUNBZ0lDQjRiV3h1Y3pwMGFXWm1QU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNScFptWXZNUzR3THlJS0lDQWdJQ0FnSUNBZ0lDQWdlRzFzYm5NNlpYaHBaajBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5bGVHbG1MekV1TUM4aVBnb2dJQ0FnSUNBZ0lDQThkR2xtWmpwWlVtVnpiMngxZEdsdmJqNDNNand2ZEdsbVpqcFpVbVZ6YjJ4MWRHbHZiajRLSUNBZ0lDQWdJQ0FnUEhScFptWTZVbVZ6YjJ4MWRHbHZibFZ1YVhRK01qd3ZkR2xtWmpwU1pYTnZiSFYwYVc5dVZXNXBkRDRLSUNBZ0lDQWdJQ0FnUEhScFptWTZXRkpsYzI5c2RYUnBiMjQrTnpJOEwzUnBabVk2V0ZKbGMyOXNkWFJwYjI0K0NpQWdJQ0FnSUNBZ0lEeDBhV1ptT2s5eWFXVnVkR0YwYVc5dVBqRThMM1JwWm1ZNlQzSnBaVzUwWVhScGIyNCtDaUFnSUNBZ0lDQWdJRHhsZUdsbU9sQnBlR1ZzV0VScGJXVnVjMmx2Ymo0ek1EQXdQQzlsZUdsbU9sQnBlR1ZzV0VScGJXVnVjMmx2Ymo0S0lDQWdJQ0FnSUNBZ1BHVjRhV1k2UTI5c2IzSlRjR0ZqWlQ0eFBDOWxlR2xtT2tOdmJHOXlVM0JoWTJVK0NpQWdJQ0FnSUNBZ0lEeGxlR2xtT2xCcGVHVnNXVVJwYldWdWMybHZiajR6TURBd1BDOWxlR2xtT2xCcGVHVnNXVVJwYldWdWMybHZiajRLSUNBZ0lDQWdQQzl5WkdZNlJHVnpZM0pwY0hScGIyNCtDaUFnSUR3dmNtUm1PbEpFUmo0S1BDOTRPbmh0Y0cxbGRHRStDbDlFSzM4QUFFQUFTVVJCVkhnQjdOMS9qR1ZaUWgvMmUrNnI3cG5wMzlWZFBUMWRWZDB6dXd3THc5aUUwUHhZMnlSdVNJUkRMTEJqNU1nRVFndzQvaUd3SEFLSkk1d2ZzbVhGaW1VbFZtSkhTcFJFVGtpa1NMRWk1YTlFaW1OR09KRWNkb2Rka05kcjBBSkRkanpzN0E0c0M3c3owMTMxN3NrNTU3N3FxZjVkVmUvWC9mRjVVRjJ2M3J2MzNITStwN2Fxdm5QT1BhZXFQQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQUFBRUNCQWdRSUVDQXdJb0V3b3F1NHpJRUNCQWdRSUJBdndYeTN3ejFyQWt4Zlc3NjNSeTFKMENBQUFFQ0JBZ1FJRUNBQUFFQy9SUHdIL1Q3MTJkcVRJQUFBUUk5RlBBTHQ0ZWRwc29FQ0JBZ1FHQ0ZBbm5VdkhuK3hvMnZtamJOWDZwQ2VDYjk4ZkRMNzd6NTVsOWVZUjFjaWdBQkFnUUlqRUpnWXhTdDFFZ0NCQWdRSUVEZ3BBSWxvTytINllmcnllU0hRZ2hWMDhSUHBjSUU5Sk9LT284QUFRSUVDRHhHUUVCL0RJeVhDUkFnUUlBQWdROEU2ampaaXJHcDhzM25JZFMvL2NFN25oRWdRSUFBQVFLTEVqaFk3R1ZSNVNtSEFBRUNCQWdRR0tCQVV6WFg4K2g1U3VlcGRkRi80QjlnSDJzU0FRSUVDS3hmUUVCZmZ4K29BUUVDQkFnUTZMeEFIY0xGTnB4M3Zxb3FTSUFBQVFJRWVpc2dvUGUyNjFTY0FBRUNCQWlzVGlETmJyOVl4VHpCM1lNQUFRSUVDQkJZbG9DQXZpeFo1UklnUUlBQWdXRUlsUDNPUTRqWGh0RWNyU0JBZ0FBQkF0MFZFTkM3MnpkcVJvQUFBUUlFdWlCUWhzM1Q0UGtMWGFpTU9oQWdRSUFBZ1NFTENPaEQ3bDF0STBDQUFBRUM4d3ZrZ0o1dVFRL255d3J1ODVlbkJBSUVDQkFnUU9BeEFnTDZZMkM4VElBQUFRSUVDRlI1eWZacWQzZjNtUmpqT2ZlZys0NGdRSUFBQVFMTEZSRFFsK3VyZEFJRUNCQWcwR2VCRXREdmJHeWtGZHlyUzMxdWlMb1RJRUNBQUlFK0NBam9mZWdsZFNSQWdBQUJBbXNVYU9LZHpTcVdnRzRaOXpYMmcwc1RJRUNBd1BBRkJQVGg5N0VXRWlCQWdBQ0Jrd3FVRWZTcTJUaVg5a0EvbmFhNGx4WGRUMXFZOHdnUUlFQ0FBSUVuQ3dqb1QvYnhMZ0VDQkFnUUdMTkFHOURyNW54NkVtSUlBdnFZdnh1MG5RQUJBZ1NXTGlDZ0w1M1lCUWdRSUVDQVFMOEZRbk52RDNSVDNQdmRsV3BQZ0FBQkFoMFhFTkE3M2tHcVI0QUFBUUlFMWkzUVZPRjZtdUtlbDNRWDBOZmRHYTVQZ0FBQkFvTVdFTkFIM2IwYVI0QUFBUUlFNWhkSW02QmZuTDhVSlJBZ1FJQUFBUUpQRXhEUW55YmtmUUlFQ0JBZ01IS0J0RFNjZ0Q3eTd3SE5KMENBQUlIVkNBam9xM0YyRlFJRUNCQWcwRGVCdkVCY1dSUXVoSHYzb1BldERlcExnQUFCQWdSNkpTQ2c5NnE3VkpZQUFRSUVDS3hVb0FUMEdLc1gwaFpySzcyd2l4RWdRSUFBZ1RFS0NPaGo3SFZ0SmtDQUFBRUNSeGVZaEJETzU4TlRSRyszWFR2NnVZNGtRSUFBQVFJRWppRWdvQjhEeTZFRUNCQWdRR0JFQWlXTTcrN3VubzR4bmgxUnV6V1ZBQUVDQkFpc1RVQkFYeHU5Q3hNZ1FJQUFnZTRMdkQrWlhFcGJyRjJhelhBM2d0NzlMbE5EQWdRSUVPaXhnSURlNDg1VGRRSUVDQkFnc0VTQkVzYWJlR2N6M1grZVZuR1A1cmN2RVZ2UkJBZ1FJRUFnQ3dqb3ZnOElFQ0JBZ0FDQnh3cUVadU5jZXZPWmNrQ01SdEFmSytVTkFnUUlFQ0F3djRDQVByK2hFZ2dRSUVDQXdHQUZZbDFmVEl2RTViOFhyQkUzMkY3V01BSUVDQkRvaW9DQTNwV2VVQThDQkFnUUlOQXRnVEphSHBybTJxeGE5bG5yVnYrb0RRRUNCQWdNVUVCQUgyQ25haElCQWdRSUVGaVVRQXp4V2xva0xvK2ZOK2ttZEZQY0Z3V3JIQUlFQ0JBZzhBZ0JBZjBSS0Y0aVFJQUFBUUlFV29HNnF0TUNjZmxoQUwxMThDOEJBZ1FJRUZpZWdJQytQRnNsRXlCQWdBQ0IzZ3VrRWZSTHZXK0VCaEFnUUlBQWdaNElDT2c5NlNqVkpFQ0FBQUVDS3habzh2VkNURlBjeThQczl0YkJ2d1FJRUNCQVlIa0NBdnJ5YkpWTWdBQUJBZ1Q2TEZEbXREY3h2cEQyUVU5SjNmM25mZTVNZFNkQWdBQ0JmZ2dJNlAzb0o3VWtRSUFBQVFLckZzZ0JmVktIU2Q0SDNZTUFBUUlFQ0JCWWdZQ0F2Z0prbHlCQWdBQUJBajBUS1BQWnQ3ZTNuMG1qNStkbnk4T1o0OTZ6VGxSZEFnUUlFT2lmZ0lEZXZ6NVRZd0lFQ0JBZ3NHeUJFc2J2VGlhWFloVXZsaW51ZVpLN0J3RUNCQWdRSUxCVUFRRjlxYndLSjBDQUFBRUMvUlZvUXNncnVNKzJXZXR2TzlTY0FBRUNCQWowUlVCQTcwdFBxU2NCQWdRSUVGaWRRQmt0RDAxenJncmg5T3l5UnRCWDUrOUtCQWdRSURCU0FRRjlwQjJ2MlFRSUVDQkE0QWtDYlJpdm13dnBTWDVldGx4N3d2SGVJa0NBQUFFQ0JCWWdJS0F2QUZFUkJBZ1FJRUJnaUFLaHFXZDdvRmV6ZGVLRzJFcHRJa0NBQUFFQzNSRVEwTHZURjJwQ2dBQUJBZ1E2SmRDRXRBZDZTQVBvYWFXNFRsVk1aUWdRSUVDQXdFQUZCUFNCZHF4bUVTQkFnQUNCZVFYcXFwNHRFQ2VmejJ2cGZBSUVDQkFnY0JRQkFmMG9TbzRoUUlBQUFRTGpFaWlKUE1hWVYzSDNJRUNBQUFFQ0JGWWtJS0N2Q05wbENCQWdRSUJBVHdUeW9uQWxvSWNRWi9lZzU1YzhDQkFnUUlBQWdXVUxDT2pMRmxZK0FRSUVDQkRvbjBCWnRiMko2UjcwYUhwNy83cFBqUWtRSUVDZ3J3SUNlbDk3VHIwSkVDQkFnTUJTQmY3NHBBNlRzK1VTb1d5MXR0U3JLWndBQVFJRUNCQ29LZ0hkZHdFQkFnUUlFQ0J3V0tETVo3OTI3V2VmamJFNWIvejhNSTNuQkFnUUlFQmd1UUlDK25KOWxVNkFBQUVDQkhvcE1EMTkrbUlhTjc4NG0rTHVKdlJlOXFKS0V5QkFnRURmQkFUMHZ2V1kraElnUUlBQWdlVUtsREErcmFyTGFhazRxN2d2MTFycEJBZ1FJRURnUGdFQi9UNE9YeEFnUUlBQUFRSlpvSjdFczFVSXAyY2FSdEI5V3hBZ1FJQUFnUlVJQ09nclFIWUpBZ1FJRUNEUU40RTREUmRUS3MvQjNHM29mZXM4OVNWQWdBQ0IzZ29JNkwzdE9oVW5RSUFBQVFKTEVTaWo1YUZwWHBpVlhyWmNXOHFWRkVxQUFBRUNCQWpjSnlDZzM4ZmhDd0lFQ0JBZ1FDQUxoQkN2cFgveStIa2VRUytoblF3QkFnUUlFQ0N3WEFFQmZibStTaWRBZ0FBQkFyMFVpR0Z5b2EyNEdlNjk3RUNWSmtDQUFJRmVDZ2pvdmV3MmxTWkFnQUFCQXNzV2lGWndYemF4OGdrUUlFQ0F3QU1DQXZvRElMNGtRSUFBQVFJakYyanZPWS94NEI3MGtYTm9QZ0VDQkFnUVdKMkFnTDQ2YTFjaVFJQUFBUUo5RUNoejJtTVZybFhSN2VkOTZEQjFKRUNBQUlIaENBam93K2xMTFNGQWdBQUJBb3NReUtsOFV0ZlZ1VkpZc0VEY0lsQ1ZRWUFBQVFJRWppSWdvQjlGeVRFRUNCQWdRR0FjQW1XMTltdlhyajJiMW00L04xc2V6Z3J1NCtoN3JTUkFnQUNCRGdnSTZCM29CRlVnUUlBQUFRSWRFU2hoZlAvVXFVdHBldnRtTzhYZENIcEgra1kxQ0JBZ1FHQUVBZ0w2Q0RwWkV3a1FJRUNBd0JFRlNrQnZRdGhNSzhYTnRsazc0cGtPSTBDQUFBRUNCT1lXRU5EbkpsUUFBUUlFQ0JBWWxrQWQ0OWtRd3VsWnEweHhIMWIzYWcwQkFnUUlkRmhBUU85dzU2Z2FBUUlFQ0JCWXNVQUo0N0d1TDh4U2Vidmwyb29yNFhJRUNCQWdRR0NzQWdMNldIdGV1d2tRSUVDQXdHTUV3blI2ZmZiV2JKMjR4eHpvWlFJRUNCQWdRR0NoQWdMNlFqa1ZSb0FBQVFJRStpOFFRcnhXaFRTR0hzdEc2UDF2a0JZUUlFQ0FBSUdlQ0Fqb1Bla28xU1JBZ0FBQkFxc1NpR0ZpZ2JoVllic09BUUlFQ0JBNEpDQ2dIOEx3bEFBQkFnUUlqRnhnTnFVOWJiSG1RWUFBQVFJRUNLeGNRRUJmT2JrTEVpQkFnQUNCVGdya2RlSGFnQjdURlBmeWJMWlVYQ2VycTFJRUNCQWdRR0I0QWdMNjhQcFVpd2dRSUVDQXdFa0Z5cXJ0c1FyWERyTDZTUXR5SGdFQ0JBZ1FJSEI4QVFIOStHYk9JRUNBQUFFQ1F4YVkxQ0djTFEwTWxTSDBJZmUwdGhFZ1FJQkE1d1FFOU01MWlRb1JJRUNBQUlHMUNKUXdmdlhxMWVmUzZ1M243SysybGo1d1VRSUVDQkFZdVlDQVB2SnZBTTBuUUlBQUFRS0hCYWFuVHFVRjR1TGxGTkx6eTBiUUQrTjRUb0FBQVFJRWxpd2dvQzhaV1BFRUNCQWdRS0FuQWlXTXg3cStsS0s1YmRaNjBtbXFTWUFBQVFMREVoRFFoOVdmV2tPQUFBRUNCT1lTQ0J2eGJCWENxVmtoUnREbjBuUXlBUUlFQ0JBNG5vQ0Fmand2UnhNZ1FJQUFnYUVLdEdGOFdsOU1UL0p6dDZFUHRhZTFpd0FCQWdRNkt5Q2dkN1pyVkl3QUFRSUVDS3hlSURUTjlkbFY4NVpyUnRCWDN3V3VTSUFBQVFJakZoRFFSOXo1bWs2QUFBRUNCQjRTQ09INU5NVTlqWiszcThROTlMNFhDQkFnUUlBQWdhVUpDT2hMbzFVd0FRSUVDQkRvb1VBSUZvanJZYmVwTWdFQ0JBZ01RMEJBSDBZL2FnVUJBZ1FJRUZpUVFKTzJXZk1nUUlBQUFRSUUxaUd3c1k2THVpWUJBZ1FJRUNEUU9ZRjh6M21hMmg0TzdrSHZYQVZWaUFBQkFnUUlERjNBQ1ByUWUxajdDQkFnUUlEQTBRVEtxdTBoeHF2dEF1N1doenNhbTZNSUVDQkFnTURpQkFUMHhWa3FpUUFCQWdRSTlGa2dCL1JKTlFublNpT0NGZHo3M0pucVRvQUFBUUw5RkJEUSs5bHZhazJBQUFFQ0JCWXBVSWJMcjE2OStselZWT2RuRzZBYlFsK2tzTElJRUNCQWdNQVJCQVQwSXlBNWhBQUJBZ1FJREZ5Z2hQSHBxVk9ic1lxWDBoWnJ1YmtDK3NBN1hmTUlFQ0JBb0hzQ0FucjMra1NOQ0JBZ1FJREFxZ1ZLR0k5MWZTbmxjdHVzclZyZjlRZ1FJRUNBd0V4QVFQZXRRSUFBQVFJRUNCU0I5RWZCbVRSdWZpcDlrWWZRamFEN3ZpQkFnQUFCQWlzV0VOQlhETzV5QkFnUUlFQ2dnd0x0Q0hvSWwyYXBmSFliZWdkcnFrb0VDQkFnUUdEQUFnTDZnRHRYMHdnUUlFQ0F3SEVFUXRNYzdJRXVvQjhIenJFRUNCQWdRR0JCQWdMNmdpQVZRNEFBQVFJRWVpOFF3dk5WU0dQb3NWMGxydmZ0MFFBQ0JBZ1FJTkF6QVFHOVp4Mm11Z1FJRUNCQVlHa0N3UUp4UzdOVk1BRUNCQWdRT0lLQWdINEVKSWNRSUVDQUFJR0JDOHltdERlYkEyK241aEVnUUlBQWdVNExiSFM2ZGlwSGdBQUJBZ1FJTEZzZ3J3dlhsSXZFa081QnQ0RDdzc0dWVDRBQUFRSUVIaWRnQlAxeE1sNG5RSUFBQVFMakVTZ2o2Q0hHcStOcHNwWVNJRUNBQUlIdUNRam8zZXNUTlNKQWdBQUJBdXNRMktnbTRXeTVjTEFIK2pvNndEVUpFQ0JBZ0lDQTdudUFBQUVDQkFpTVc2QnNmYjYxdGZWY211aCszdjVxNC81bTBIb0NCQWdRV0srQWdMNWVmMWNuUUlBQUFRS2RFTmcvZGVweXJPSm0ybUl0MTZlRTlrNVVUQ1VJRUNCQWdNQ0lCQVQwRVhXMnBoSWdRSUFBZ1VjSWxEQWVKcE9MYVEvMEM0OTQzMHNFQ0JBZ1FJREFpZ1FFOUJWQnV3d0JBZ1FJRU9peVFKakVmUC81cVZrZGphQjN1YlBValFBQkFnUUdLeUNnRDdack5Zd0FBUUlFQ0J4Sm9JVHh5VFJjbXFWeXQ2RWZpYzFCQkFnUUlFQmc4UUlDK3VKTmxVaUFBQUVDQkhvbk1BMU4yZ085UFBLZTZFYlFaeGcrRVNCQWdBQ0JWUW9JNkt2VWRpMENCQWdRSU5CUmdSRHJxK2tlOUNvdEVtY0V2YU45cEZvRUNCQWdNSHdCQVgzNGZheUZCQWdRSUVEZzZRSVdpSHU2a1NNSUVDQkFnTUNTQlFUMEpRTXJuZ0FCQWdRSWRGeGdObUxlWE81NFBWV1BBQUVDQkFnTVhtQmo4QzNVUUFJRUNCQWdRT0JKQW0xQWp6SGRnMjUyKzVPZ3ZFZUFBQUVDQkpZdFlBUjkyY0xLSjBDQUFBRUMzUllvcVR5RXNOVldNOStJN2tHQUFBRUNCQWlzUTBCQVg0ZTZheElnUUlBQWdlNEk1SUErU1F2RTVYM1FyZDllRVB4RGdBQUJBZ1RXSXlDZ3I4ZmRWUWtRSUVDQVFCY0V5bWo1MXRiV21UUzcvY0pzZ3JzUjlDNzBqRG9RSUVDQXdDZ0ZCUFJSZHJ0R0V5QkFnQUNCSWxEQytQVDA2YzIwdTlwbTJtSXR2eWlnKytZZ1FJQUFBUUpyRWhEUTF3VHZzZ1FJRUNCQW9BTUNiUml2NjB1cEx1YzdVQjlWSUVDQUFBRUNveFlRMEVmZC9ScFBnQUFCQWdUU2tQbEdQSlB1UWM4N3UrUWhkQ1BvdmlrSUVDQkFnTUNhQkFUME5jRzdMQUVDQkFnUTZJQkFDZU9UL2JBNVMrV3oyOUE3VUROVklFQ0FBQUVDSXhRUTBFZlk2WnBNZ0FBQkFnUU9DMHhEay9aQVQ0OW9JL1RETHA0VElFQ0FBSUZWQ3dqb3F4WjNQUUlFQ0JBZzBER0JFT3ZuMHhUM1ZLdDJsYmlPVlU5MUNCQWdRSURBYUFRRTlORjB0WVlTSUVDQUFJSEhDSVJnZ2JqSDBIaVpBQUVDQkFpc1VrQkFYNlcyYXhFZ1FJQUFnVzRKelBaVmF5NTNxMXBxUTRBQUFRSUV4aWtnb0krejM3V2FBQUVDQkFqa09lMU5aa2g3b0Y5dlo3ZlBsb3BqUTRBQUFRSUVDS3hGUUVCZkM3dUxFaUJBZ0FDQlRnaTBJK2doYkpYYXlPZWQ2QlNWSUVDQUFJSHhDZ2pvNCsxN0xTZEFnQUFCQWxWMXU5cElDOFNkblZHSTZMNG5DQkFnUUlEQUdnVUU5RFhpdXpRQkFnUUlFRmlqUUFuam03L3c0Yk5wYzdVTE5rQmZZMCs0TkFFQ0JBZ1FtQWtJNkw0VkNCQWdRSURBaUFXYUMxKzVuTzVCMzV6dHNHWUVmY1RmQzVwT2dBQUJBdXNYRU5EWDN3ZHFRSUFBQVFJRTFpRlF3dmd6K3hzWDBoVDNjK3VvZ0dzU0lFQ0FBQUVDOXdzSTZQZDcrSW9BQVFJRUNJeExZR01qMzM5K2F0Wm9JK2pqNm4ydEpVQ0FBSUdPQ1Fqb0hlc1ExU0ZBZ0FBQkFpc1NLR0c4MmQvZm5LVnl0Nkd2Q041bENCQWdRSURBNHdRRTlNZkplSjBBQVFJRUNJeEFvQW5oK3F5WmVVOTBJK2dqNkhOTkpFQ0FBSUh1Q2dqbzNlMGJOU05BZ0FBQkFrc1hDSFc4bXU1QnI5SWljVWJRbDY3dEFnUUlFQ0JBNE1rQ0F2cVRmYnhMZ0FBQkFnU0dMUkRyODhOdW9OWVJJRUNBQUlIK0NBam8vZWtyTlNWQWdBQUJBb3NVS0NQbUljWXJpeXhVV1FRSUVDQkFnTURKQlFUMGs5czVrd0FCQWdRSTlGbWdCUFFZNHZYWkh1aDlib3U2RXlCQWdBQ0JRUWdJNklQb1JvMGdRSUFBQVFMSEZtanZPWS9WVm50bXZoSGRnd0FCQWdRSUVGaW5nSUMrVG4zWEprQ0FBQUVDNnhPSTFlMXFJNFJ3cGxSQlBGOWZUN2d5QVFJRUNCQ1lDUWpvdmhVSUVDQkFnTUQ0QkVvY3YveUxMK2R3Zm1HMmZMdUlQcjd2QXkwbVFJQUFnWTRKQ09nZDZ4RFZJVUNBQUFFQ0t4QW9ZYnk1OE9YTGFYZTF6ZGs5NkFMNkN1QmRnZ0FCQWdRSVBFbEFRSCtTanZjSUVDQkFnTUF3QlVvWUQvc2JGMUx6emcyemlWcEZnQUFCQWdUNkp5Q2c5Ni9QMUpnQUFRSUVDQ3hFNE5Sa2NxNEtZU01WbG1lNUcwRmZpS3BDQ0JBZ1FJREF5UVVFOUpQYk9aTUFBUUlFQ1BSVm9KM2l2cisvT1V2bHM5dlErOW9jOVNaQWdBQUJBc01RRU5DSDBZOWFRWUFBQVFJRWppM1FoSEM5bkJUTENQcXh6M2NDQVFJRUNCQWdzRmdCQVgyeG5rb2pRSUFBQVFLOUVRaDF2SnFtdUtmNlJpUG92ZWsxRlNWQWdBQ0JJUXNJNkVQdVhXMGpRSUFBQVFKUEVtaENYaVRPZ3dBQkFnUUlFT2lJZ0lEZWtZNVFEUUlFQ0JBZ3NFS0JNbUtleHM0dnIvQ2FMa1dBQUFFQ0JBZzhSVUJBZndxUXR3a1FJRUNBd01BRThwejJKcmNwaG5pOW5kMCtXeXB1WUEzVkhBSUVDQkFnMERjQkFiMXZQYWErQkFnUUlFQmdmb0gybnZOWVhTbEZCVnVzelUrcUJBSUVDQkFnTUwrQWdENi9vUklJRUNCQWdFRC9CRzdkT2hWQ09OZS9pcXN4QVFJRUNCQVlyb0NBUHR5KzFUSUNCQWdRSVBBb2dUS2YvZUlYdnBERCtYbkx0eitLeUdzRUNCQWdRR0E5QWh2cnVheXJFaUJBZ0FBQkFtc1NPTGpoZkRQR3VEbXJ3OEZyYTZxU3l4SWdRSUFBQVFKWndBaTY3d01DQkFnUUlEQkNnZFAxTkcreFpvcjdDUHRla3drUUlFQ2d1d0lDZW5mN1JzMElFQ0JBZ01EU0JFSXpPVnVGY0RDVHpnajYwcVFWVElBQUFRSUVqaTRnb0IvZHlwRUVDQkFnUUdBSUFpV01OOVgrNVZrcWR4djZFSHBWR3dnUUlFQmdFQUlDK2lDNlVTTUlFQ0JBZ01BeEJacjYrdXlNdkNlNkVmUmo4am1jQUFFQ0JBZ3NRMEJBWDRhcU1na1FJRUNBUU1jRllvaGJhWXA3VmFXVjRqcGVWZFVqUUlBQUFRS2pFUkRRUjlQVkdrcUFBQUVDQkE0SmhIRCswRmVlRWlCQWdBQUJBaDBRRU5BNzBBbXFRSUFBQVFJRVZpaFFSc3hEVTIydDhKb3VSWUFBQVFJRUNCeEJRRUEvQXBKRENCQWdRSURBZ0FSS1FHK3FlRDFOYng5UXN6U0ZBQUVDQkFqMFgwQkE3MzhmYWdFQkFnUUlFRGlPUUY0VUxxMEtGNjYwSitVYjBUMElFQ0JBZ0FDQkxnZ0k2RjNvQlhVZ1FJQUFBUUtyRVRnSTR4c3BscDhwbHp4NFpUWFhkeFVDQkFnUUlFRGdDUUlDK2hOd3ZFV0FBQUVDQklZb2NPbWxsODdGS2w2WVRYQVgwWWZZeWRwRWdBQUJBcjBVRU5CNzJXMHFUWUFBQVFJRVRpUlF3bmlNNzIxV01hU1BkcjI0RTVYa0pBSUVDQkFnUUdEaEFnTDZ3a2tWU0lBQUFRSUVPaXRRQXZycHNIRXhiWUIrcnJPMVZERUNCQWdRSURCU0FRRjlwQjJ2MlFRSUVDQXdYb0VRTjg1VUlVeVNRQjVDTjhWOXZOOEtXazZBQUFFQ0hSTVEwRHZXSWFwRGdBQUJBZ1NXS0ZEQ2VCUDNyc3hTdVgzV2xvaXRhQUlFQ0JBZ2NGd0JBZjI0WW80blFJQUFBUUo5RjJqcTY2VUpzU3BicnZXOU9lcFBnQUFCQWdTR0lpQ2dENlVudFlNQUFRSUVDQnhSSUlhNGxhYTRwNk1Ob0IrUnpHRUVDQkFnUUdBbEFnTDZTcGhkaEFBQkFnUUlkRWVnRHVGOGQycWpKZ1FJRUNCQWdNQ0JnSUIrSU9FekFRSUVDQkFZdmtBWk1vOU50VFg4cG1vaEFRSUVDQkRvbjRDQTNyOCtVMk1DQkFnUUlIQVNnVHludmR4ejNsVHhlcnNIK215cHVKT1U1aHdDQkFnUUlFQmc0UUlDK3NKSkZVaUFBQUVDQkRvclVMWlZDMVc0VW1xWW5uUzJwaXBHZ0FBQkFnUkdLQ0NnajdEVE5aa0FBUUlFUml4dzY5WkdXaC91eklnRk5KMEFBUUlFQ0hSV1FFRHZiTmVvR0FFQ0JBZ1FXS2hBR1MyLzhQYmI1Mk9NRjYzZnZsQmJoUkVnUUlBQWdZVUlDT2dMWVZRSUFRSUVDQkRvdkVBSjZNK0dzSm0yVjl0czcwRTN4YjN6dmFhQ0JBZ1FJREFxQVFGOVZOMnRzUVFJRUNBd2RvRlkxeGVxS3BqaVB2WnZCTzBuUUlBQWdVNEtDT2lkN0JhVklrQ0FBQUVDeXhFSU1aNnBRdGlZbFc2UnVPVXdLNVVBQVFJRUNKeElRRUEvRVp1VENCQWdRSUJBN3dSS0dKL0d1RFZMNVdYTHRkNjFRb1VKRUNCQWdNQ0FCUVQwQVhldXBoRWdRSUFBZ1FjRlF0TmNuNzFXdGx4NzhIMWZFeUJBZ0FBQkF1c1RFTkRYWisvS0JBZ1FJRUJnNVFMcEh2UXJhWXA3V2ljdVdzaDk1Zm91U0lBQUFRSUVuaXdnb0QvWng3c0VDQkFnUUdCUUFuV0k1d2ZWSUkwaFFJQUFBUUlERWhEUUI5U1pta0tBQUFFQ0JKNGdVRWJNbTZhNitvUmp2RVdBQUFFQ0JBaXNVZUJnRmRjMVZzR2xDUkFnUUlBQWdSVUlsSUFlcW5pOW1qMWJ3VFZkZ2dBQkFnUUlFRGlHZ0JIMFkyQTVsQUFCQWdRSTlGaWdyTm9lcTNDNXRDRlV0bGpyY1dlcU9nRUNCQWdNVTBCQUgyYS9haFVCQWdRSUVEZ3NNQXZqdHpkU0xEOXorQTNQQ1JBZ1FJQUFnZTRJQ09qZDZRczFJVUNBQUFFQ1N4VzRlUE5YejZmVjJ5L08xbTgzZ3I1VWJZVVRJRUNBQUlIakN3am94emR6QmdFQ0JBZ1E2SnZBUVJqZlRQZWZiNlk5MW5MOUQxN3JXMXZVbHdBQkFnUUlERlpBUUI5czEyb1lBUUlFQ0JDNEoxREMrT202dm1DSyt6MFRUd2dRSUVDQVFPY0VCUFRPZFlrS0VTQkFnQUNCNVFpRXBqbGJoVEJKcGVjaGRDUG95MkZXS2dFQ0JBZ1FPTEdBZ0g1aU9pY1NJRUNBQUlIZUNKUXdQbzM3VzdOVVh1YTQ5NmIyS2txQUFBRUNCRVlpSUtDUHBLTTFrd0FCQWdRSWhDWmNMd3F4S2x1dUVTRkFnQUFCQWdTNkpTQ2dkNnMvMUlZQUFRSUVDQ3hOSU5iMWxUVEZQWlZ2QUgxcHlBb21RSUFBQVFKekNBam9jK0E1bFFBQkFnUUk5RW1nRHZGOG4rcXJyZ1FJRUNCQVlHd0NBdnJZZWx4N0NSQWdRR0NNQW1YSXZHbXFxd2JQeDlqOTJreUFBQUVDZlJIWTZFdEYxWk1BQVFJRUNCQTRrVUNlMDE3dU9ROVZiTzlCdDREN2lTQ2RSSUFBQVFJRWxpMWdCSDNad3NvblFJQUFBUUxyRnlqYnFzVVFMcGVxQkFsOS9WMmlCZ1FJRUNCQTRHRUJBZjFoRTY4UUlFQ0FBSUVoQ1pTZDFWNTk5ZFZUcVZGbmh0UXdiU0ZBZ0FBQkFrTVRFTkNIMXFQYVE0QUFBUUlFSGlIdy8zM3hpeGVxR0M5YXYvMFJPRjRpUUlBQUFRSWRFUkRRTzlJUnFrR0FBQUVDQkpZa1VFYlFuNjNyUzJtQnVNMFUwdk5seW10THVwNWlDUkFnUUlBQWdSTUtDT2duaEhNYUFRSUVDQkRvazBDY1RDNmtXRzZLZTU4NlRWMEpFQ0JBWUhRQ0F2cm91bHlEQ1JBZ1FHQ01BcUZwemxZaFRHWnRONEkreG04Q2JTWkFnQUNCemdzSTZKM3ZJaFVrUUlBQUFRSnpDWlF3M3NTNE5VdmxaY3UxdVVwME1nRUNCQWdRSUxBVUFRRjlLYXdLSlVDQUFBRUNIUk5vbXRrZTZPbE9kUGVnZDZ4elZJY0FBUUlFQ0xRQ0FycnZCQUlFQ0JBZ01BS0Jlaks1bkthNFYybVJPQXU1ajZDL05aRUFBUUlFK2lrZ29QZXozOVNhQUFFQ0JBZ2NTeUNHZVA1WUp6aVlBQUVDQkFnUVdMbUFnTDV5Y2hja1FJQUFBUUlyRlNnajVtbmcvUG1WWHRYRkNCQWdRSUFBZ1dNTGJCejdEQ2NRSUVDQUFBRUNmUkpvcDdUSG1PNUJkL3Q1bnpwT1hRa1FJRUJnZkFKRzBNZlg1MXBNZ0FBQkF1TVNhRmR0RC9WbWFYWkl1NkY3RUNCQWdBQUJBcDBVRU5BNzJTMHFSWUFBQVFJRUZpTFFodkZidDA2bDBzNHNwRVNGRUNCQWdBQUJBa3NUTU1WOWFiUUtKa0NBQUFFQzNSQTQvN25QWFVqajVoZGpHOWVOb0hlalc5U0NBQUVDQkFnOEpHQUUvU0VTTHhBZ1FJQUFnY0VJbEREK2JBaWI2ZmJ6L0pFZkF2cGd1bGREQ0JBZ1FHQm9BZ0w2MEhwVWV3Z1FJRUNBd0FjQ2JSaWZOT2RUTERmRi9RTVh6d2dRSUVDQVFDY0ZCUFJPZG90S0VTQkFnQUNCQlFyRWpiTlZDUGwzdm1YY0Y4aXFLQUlFQ0JBZ3NHZ0JBWDNSb3NvalFJQUFBUUxkRVNnajZFM1RYSjNOYTI4bnVYZW5mbXBDZ0FBQkFnUUlIQklRMEE5aGVFcUFBQUVDQkFZcEVKcTBCM3A2eEtyZGNtMlFqZFFvQWdRSUVDRFFmd0VCdmY5OXFBVUVDQkFnUU9DSkFyR2FYRWxUM05NeEJ0Q2ZDT1ZOQWdRSUVDQ3daZ0VCZmMwZDRQSUVDQkFnUUdEWkFuV0k1NVo5RGVVVElFQ0FBQUVDOHdzSTZQTWJLb0VBQVFJRUNIUlZvRXhwanpFKzMxWndkaWQ2VjJ1clhnUUlFQ0JBWU9RQ0F2ckl2d0UwbndBQkFnUUdLL0RCblBhbTJxbWk2ZTJEN1drTkkwQ0FBSUhCQ0Fqb2crbEtEU0ZBZ0FBQkFnOEp0TnVxMWVGaWVTZWszZEE5Q0JBZ1FJQUFnYzRLQ09pZDdSb1ZJMENBQUFFQ2N3bTBZZnpsbDArblVzN09WWktUQ1JBZ1FJQUFnWlVJQ09ncllYWVJBZ1FJRUNDd0hvRnpYLzd5aFRTOS9lSnNncnNSOVBWMGc2c1NJRUNBQUlFakNRam9SMkp5RUFFQ0JBZ1E2SjFBQ2VQUFRpYWJxZWFYM0lQZXUvNVRZUUlFQ0JBWW9ZQ0FQc0pPMTJRQ0JBZ1FHSkhBWkhJK3RmYTVFYlZZVXdrUUlFQ0FRRzhGQlBUZWRwMktFeUJBZ0FDQnB3dUVHTTlXSVV4bVI1cmkvblF5UnhBZ1FJQUFnYlVKQ09ocm8zZGhBZ1FJRUNDd1ZJRVN4cWN4WHAybDhySW4rbEt2cUhBQ0JBZ1FJRUJnTGdFQmZTNCtKeE1nUUlBQWdXNExoS3E1WG1vWXF4elFqYUIzdTd2VWpnQUJBZ1JHTGlDZ2ovd2JRUE1KRUNCQVlOZ0NhWGI3WnByaW5obzVXOGQ5Mk0zVk9nSUVDQkFnMEdzQkFiM1gzYWZ5QkFnUUlFRGdhUUx4d3RPTzhENEJBZ1FJRUNEUURRRUJ2UnY5b0JZRUNCQWdRR0RSQW1YSVBGYngrVVVYckR3Q0JBZ1FJRUJnT1FJQytuSmNsVXFBQUFFQ0JOWXQwQzRLMTFUWDJ6M1EzWDYrN2c1eGZRSUVDQkFnOERRQkFmMXBRdDRuUUlBQUFRTDlGR2h2T3EvRHhWTDlZSUc0Zm5haldoTWdRSURBbUFRRTlESDF0cllTSUVDQXdGZ0UydUh5VjE4OW5ScDhkaXlOMWs0Q0JBZ1FJTkIzQVFHOTd6Mm8vZ1FJRUNCQTRERUM1Ny80eFF0cGV2dWwySTZsbStQK0dDY3ZFeUJBZ0FDQnJnZ0k2RjNwQ2ZVZ1FJQUFBUUtMRXloaC9ObTYza3hGWHBwdHNTYWdMODVYU1FRSUVDQkFZQ2tDQXZwU1dCVktnQUFCQWdUV0pwQ0RlUG45SGtPNS8veTVXVTBFOUxWMWlRc1RJRUNBQUlHakNRam9SM055RkFFQ0JBZ1E2S0xBUVJpZlZMZHZiNlFLVG1hVm5PYlBNY1pKRlVMK1hkOU9jcCs5NlJNQkFnUUlFQ0RRVFlIOHk5eURBQUVDQkFnUTZMN0FRUmcvR0FuUG9Uc0g4VFo4di9iYXZSWnNiMitmK2QwUW5nc2gvb0VxTGQ2ZURzakhISngzN3poUENCQWdRSUFBZ1c0SkNPamQ2ZysxSVVDQUFBRUNCd0p0SUwrZGd2VnJKV0RuTUY1R3hnOE9TSjlQWFhycGhaMk52Y21IWWwxOWJUcmhxMU1PZitWT1ZlMmNqdkZHV2h6dXdpeS9tekYzQ00xVEFnUUlFQ0RRVlFFQnZhczlvMTRFQ0JBZ01EYUJIS0p6S004ZkI2UGoweFRPRHg2VGF6ZHZ2aml0OWwrTk1YeDlGY00vbXdONTNJOGZqblU0RjBJK0xUMVNLajhvb0gzQnZ3UUlFQ0JBZ0VCZkJBVDB2dlNVZWhJZ1FJREFFQVZ5S0QrNFIveSswZkZyMTY2ZGJaNmRmQ1NGOFc5Sm1mdGJVMlQvaHYzWWZGV282Z3R0R0c5bnRwY29uMjQyajAzVG50OEc5WnpSRDM4TTBVNmJDQkFnUUlEQTRBUUU5TUYxcVFZUklFQ0FRSWNGY21nK0dDbHYwdk9EaitybGwxOSs1a3Z2dmZkS1U5ZS9QMVROUHorTjRadmlOTDRVNm5yU1p1NllGMzNMZWJ5cG1pYWZseUo0ZWFjdEx3Uy8wd3VLZndnUUlFQ0FRSDhGL0RMdmI5K3BPUUVDQkFqMFJ5Q3ZycDdEK1g3NnVEZFN2blhqeG5ZSzNSOU5pN2w5NXhmdnZQOEgwaEZmbXlKMyt0MWNweUNlb25qKy8razBuM01ReHR0UmNXRzhrUGlIQUFFQ0JBZ01UVUJBSDFxUGFnOEJBZ1FJZEVIZzhFaDVEdVQzUXZtVkYxOThwWnBPLzRWMHdIZWxlZWtwbklmTFZkb0pMYlNqNHltUU55bVFwMlRlYm84VzBtZS9xN3ZRbytwQWdBQUJBZ1JXSU9DWC9ncVFYWUlBQVFJRVJpT1FnM2tlTGI4dmxGKytlZlBWdW1uKzVUUkMvdDF4dXYvTmFkcjZzM2t4dHpKQ0h1TTBUVmxQSzd1VjZlb3BrT2NSOUZ5TUJ3RUNCQWdRSURBMkFRRjliRDJ1dlFRSUVDQ3dhSUhEbytWNU9ucVprbjUxZC9mbEdPTDNwSy8vV0JvcC8rYXFEcWRMS0U4dnROUFcwMm1oaFBsSkN1ZUxycFB5Q0JBZ1FJQUFnUjRLQ09nOTdEUlZKa0NBQUlGT0NPUlVuVWZMY3lBdlU5Z3Yzcnk1dWRFMGZ6aFU4VTgwVmJ5ZFpxbWZiVWZLMHgzbFRacTZmbStVM0xUMVR2U2dTaEFnUUlBQWdZNEpDT2dkNnhEVklVQ0FBSUhPQ3h4ZThLMk1sbC9lMmZsb3VvMzhCOU5VOWU5SmcrRTdaWXA2dnFlOExQQTJHeWwzTDNubk8xWUZDUkFnUUlEQXVnVUU5SFgzZ09zVElFQ0FRRjhFOHUvTXZMMVpHUzIvc0x0NytYUlZmVzlhM2UwSFV4Yi90cnltVzVyS25rYkt5L3ZwbnZLMEZMdFEzcGUrVlU4Q0JBZ1FJTkFKQVFHOUU5MmdFZ1FJRUNEUVVZR0RhZXc1bExlajVYbkJ0emo5b1JUS3Z5L2RWNzZkRjNyTHE3MlYwZktjMHR2N3lqdmFITlVpUUlBQUFRSUV1aXdnb0hlNWQ5U05BQUVDQk5ZbEVLcmI2Zjd5MTBvb0w4SDh5czdPZDZRUjhUOFhtdWE3cTdwKzVsNG9UeThhTFY5WE43a3VBUUlFQ0JBWWxvQ0FQcXorMUJvQ0JBZ1FtRStnVHFmbmovMVpPQStYZDNmL1dIcmh6OGRRL2NHOHhsdGE3QzFOZEk5NzZaaTgrcnJmby9ONU81c0FBUUlFQ0JBNEpPQVBpME1ZbmhJZ1FJREFhQVUrQ09ZcGZsKzdkdTFzYytyVW4yaEM5ZWZTSFBkYlJTWGRZSjdDZVpOQ2VUNzIxR2lsTkp3QUFRSUVDQkJZbW9DQXZqUmFCUk1nUUlCQUR3VHVDK2JiMjl0YmQrcjZSOUlONS85bXVyLzhxMEplaWIycy9KWVdod3ZWeGl5Yzk2Qlpxa2lBQUFFQ0JBajBVVUJBNzJPdnFUTUJBZ1FJekN0d1h6RGZldkhGNjdIWi85RTdWZmpoTkkzOWVncmxhYTMyNmNHKzVYbmhONzh2NXhWM1BnRUNCQWdRSVBCVUFYOXdQSlhJQVFRSUVDQXdJSUc2dXAzdU1XOFhmMnRtd2Z6SDRuVC96NFM2dnBJbXNhZDd6RXN3dDBYYWdEcGRVd2dRSUVDQVFGOEVCUFMrOUpSNkVpQkFnTUI4QXJmVEtIZ081cTlWVGRuRFBNWi9Ld1h6SDAzQi9ISzdmM2xqNGJmNWhKMU5nQUFCQWdRSXpDa2dvTThKNkhRQ0JBZ1E2THhBL2wwM3plSDhwWmRlZXZiTDA3MGZUUlBZZnlKdGxYYTlTbXUrcFlYZjJtQnU0YmZPZDZRS0VpQkFnQUNCb1FzSTZFUHZZZTBqUUlEQWVBWHlmZVpwRWZheWwzbDFaWGYzQjM1M2YrL2ZUeVBtWDFPQ2VaeHRsU2FZai9jN1JNc0pFQ0JBZ0VESEJQSWZMeDRFQ0JBZ1FHQklBcUc2ZFN0dmc1WTJMSyttVzd1N2YzRHJ4dTdQcHNYZmZqcDlmRTNNaTcrMTcrVmovQjVNQ0I0RUNCQWdRSUJBTndTTW9IZWpIOVNDQUFFQ0JCWWprSCt2N1ZldnY3NTNlWHY3UnBpRXY1S21zLy9KUEl5ZXByS25WZG56L3dXLyt4WmpyUlFDQkFnUUlFQmd3UUwrU0Zrd3FPSUlFQ0JBWUMwQ2VTUThmK1RSOFdwclorZkhZeDMrb3pSaWZqRUY4N3hyMmpSRmM3L3pNbzRIQVFJRUNCQWcwRmtCZjZ4MHRtdFVqQUFCQWdTT0tKQi9sNVZwNjVkM2RuNWZDTlhmVEF2QWZjdWgrOHczaFBNalNqcU1BQUVDQkFnUVdLdUFnTDVXZmhjblFJQUFnVGtFN28yYWIyOXZuN2xUaC84NGxmVVgwcWg1VmU0ekR5Ry9uKzh6OXlCQWdBQUJBZ1FJOUVKQVFPOUZONmtrQVFJRUNEd2djRy9VL01yTjdYL3hUaFArZGxxZC9TTmxPbnNUMDNSMjk1ay80T1ZMQWdRSUVDQkFvQWNDZVhUQmd3QUJBZ1FJOUVYZ1lJWDIvZDNkM2VmUzFtbi9lUlhyL3pPTm11ZHdudmN6enh1citZL1BmZWxOOVNSQWdBQUJBZ1R1RS9CSHpIMGN2aUJBZ0FDQkRndE1VdDJtZVlYMnF6ZTN2KzI5R1Avck5JdjlsUlRNMHlwd2FVdTFZRHA3aC90TzFRZ1FJRUNBQUlFakNCaEJQd0tTUXdnUUlFQmd6UUx0dnViVFhJdkxOM2IrZzZhcC8wSGFMKzJWbE0zenFIbmVQTTEvY0Y1ekY3azhBUUlFQ0JBZ01MK0FQMmptTjFRQ0FRSUVDQ3hQSUc5aFBybTNyM2tkL2s0YU5mK09HSnUwcjNtMW45YURzd2pjOHV5VlRJQUFBUUlFQ0t4WXdBajZpc0ZkamdBQkFnU09MSkNudE9mSC90YU43ZThKZGZpRmRLLzVkNVFWMnFzcUdqVnZjZnhMZ0FBQkFnUUlERWRBUUI5T1gyb0pBUUlFaGlTUVozamxLZTN4eW8yZHYxcFY5ZitXbm0vR0dQZG1LN1Rua1hVUEFnUUlFQ0JBZ01DZ0JFeHhIMVIzYWd3QkFnUUdJUERxcTZlclQzM3E3c1diTnpkUE5jMy9sQUw1ZCtYdDAxTExtdlJoU3ZzQXVsZ1RDQkFnUUlBQWdVY0xDT2lQZHZFcUFRSUVDS3hlb0wzZlBJWHpTenM3MzdBUm0vKzFxc09IOGtKdzZZMzgrK3BneXZ2cWErYUtCQWdRSUVDQUFJRVZDSmppdmdKa2x5QkFnQUNCcHdyazMwZjVZLy95N3U3M2JvVHdEOVB6RCtXOXpWTTR6NlBtcHJRbkJBOENCQWdRSUVCZzJBSUMrckQ3VitzSUVDRFFCNEU4TXA2bnIwK3Y3T3o4VkIycXZ4dXIrRXdLNS92cE5WUGErOUNENmtpQUFBRUNCQWdzUk1BVTk0VXdLb1FBQVFJRVRpaVFmdy9sSUY1dDdlNytWMmxLKzUrZTNXK2VWbWtQZmtlZEVOVnBCQWdRSUVDQVFEOEYvUEhUejM1VGF3SUVDUFJmNEhhNnIveTFGTTVmZXVuWnJmMzlmTDk1WGd4dUx6VXMvMjR5dzZ2L1Bhd0ZCQWdRSUVDQXdERUYvQUYwVERDSEV5QkFnTUFDQkc3ZE9wWEQrYzdPenBVcisvdi85NkZ3N243ekJmQXFnZ0FCQWdRSUVPaW5nSURlejM1VGF3SUVDUFJYSUlmejExL2YyOXpldm5rblZQOVBDTld0dEZMNzNkUWc5NXYzdDFmVm5BQUJBZ1FJRUZpQWdDbnVDMEJVQkFFQ0JBZ2NVU0R2Y2Y3NjYzZTN0cmUvSms3cW4wbG5YWTh4NXBYYVR4K3hCSWNSSUVDQUFBRUNCQVlyWUFSOXNGMnJZUVFJRU9pWVFCNDVUM3VjYjEyL2ZpdE5hZjhIS1pTWGNKNXFhZVM4WTEybE9nUUlFQ0JBZ01CNkJJeWdyOGZkVlFrUUlEQXVnZG0wOWl1N3U5K2F0bEQ3bWJSQyszTlYza1l0Qk9GOFhOOEpXa3VBQUFFQ0JBZzhRY0FJK2hOd3ZFV0FBQUVDQ3hBNEZNNnJHUDkrVmFWd25xYTEyMFp0QWJhS0lFQ0FBQUVDQkFZbElLQVBxanMxaGdBQkFoMFRtSVh6U3pzNy8weFZwWEFld3BuME9lOTdidVM4WTEybE9nUUlFQ0JBZ01ENkJVeHhYMzhmcUFFQkFnU0dLVEFMNTJWQnVEcjhINm1SWjhySXVYQSt6UDdXS2dJRUNCQWdRR0J1QVNQb2N4TXFnQUFCQWdRZUliQ1J0MUpMOTV6dnhEcjh2YlFnM0F2bG5uUGgvQkZVWGlKQWdBQUJBZ1FJdEFJQ3V1OEVBZ1FJRUZpMFFKNmR0WC94NXMzTk5KMzk3NFVRZGh2M25DL2FXSGtFQ0JBZ1FJREFBQVVFOUFGMnFpWVJJRUJnalFLVGRPMXlqL2xHTS8zZlV6ai8ydGsrNSs0NVgyT251RFFCQWdRSUVDRFFEd0VCdlIvOXBKWUVDQkRvZzBEK25UTE5GYjF5WS9kL0NYWDlyV25rL0c3NlVqalBLQjRFQ0JBZ1FJQUFnYWNJQ09oUEFmSTJBUUlFQ0J4WklOMXFuc0w1N3U1L2tVYk8vMGhzbXIzMHd1a2puKzFBQWdRSUVDQkFnTURJQlFUMGtYOERhRDRCQWdRV0luQzd5dmVkVDdkdTdQeEVxTU9QeGVuVVZtb0xnVlVJQVFJRUNCQWdNQ1lCQVgxTXZhMnRCQWdRV0liQXE2K2VybDZyOXJkdWJuOTNWWVcva1ViT1k5cnYzTytYWlZncmt3QUJBZ1FJRUJpMGdIM1FCOTI5R2tlQUFJR2xDMnhVbi9yVTNTdlhyNzhTbS9BL3AxWGI4d1diOUpFWGkvTWdRSUFBQVFJRUNCQTRob0FSam1OZ09aUUFBUUlFN2hNb0s3WmZ1M2J0YkxVeCtidnB2dk16Vll4NWFydHdmaCtUTHdnUUlFQ0FBQUVDUnhNUTBJL201Q2dDQkFnUWVGaWdESmZ2bjlyNDcxTTQvN3F5WW5zSVptWTk3T1FWQWdRSUVDQkFnTUNSQkFUMEl6RTVpQUFCQWdUdUU3aDFLMitkMXFRVjIvKzl0SjNhOTFxeC9UNGRYeEFnUUlBQUFRSUVUaVFnb0orSXpVa0VDQkFZc1VBTzU2Ky92cmUxcy9QdFZhaitXZ3JuR2NPMDloRi9TMmc2QVFJRUNCQWdzQmdCQVgweGprb2hRSURBV0FRbU9aeWYzOW01RWtQNDZWbWpwK216M3lkaitRN1FUZ0lFQ0JBZ1FHQnBBdjZnV2hxdGdna1FJREE0Z1pCYVZJYkxUOWZodjAzN25lL0VHUGZTYTBiUEI5ZlZHa1NBQUFFQ0JBaXNRMEJBWDRlNmF4SWdRS0NQQXJkdTVRWGc0cFViTzM4cExRcjNSK0owdXA4U2U3NFgzWU1BQVFJRUNCQWdRR0FCQWdMNkFoQVZRWUFBZ2NFTHpPNDd2M3pqeGgrcXF2QlgwMzNuc1FyQnlQbmdPMTREQ1JBZ1FJQUFnVlVLQ09pcjFIWXRBZ1FJOUZPZzNIZWVWbXpmcVdQelA4NmFrS2U2NXludkhnUUlFQ0JBZ0FBQkFnc1NFTkFYQktrWUFnUUlERlFnaC9DOENGeDZ4UDhoalpwdlZlNDdiem44UzRBQUFRSUVDQkJZc0lDQXZtQlF4UkVnUUdCUUFyZXFmTjk1dGJXNys1ZlRmdWZmTVZzVXpuM25nK3BralNGQWdBQUJBZ1M2SWxEKzhPcEtaZFNEQUFFQ0JEb2tjQ3N0QVBkNlZmWTdqNkg2RDZ0ODMzblZCdllPMVZKVkNCQWdRSUFBQVFLREVUQ0NQcGl1MUJBQ0JBZ3NWS0RPNFh6end4KytHT3ZxdjV1VjdMN3poUklyakFBQkFnUUlFQ0J3djRDQWZyK0hyd2dRSUVDZ0ZTZ0x3TlYzNy95dEVPcVg3SGZ1MjRJQUFRSUVDQkFnc0h3QkFYMzV4cTVBZ0FDQmZnbmtMZFhTd25CWGRuYis5VkNISDRqVFpwclN1bHVpK3RXTGFrdUFBQUVDQkFqMFVFQkE3MkducVRJQkFnU1dLSkNtdHIrK2w3ZFVTNXVvL1djeDMzWWV5blpxdGxSYklycWlDUkFnUUlBQUFRSlpRRUQzZlVDQUFBRUNCd0lmaFBBUS84dTBhdnVWOU1aZSt2Qzc0a0RJWndJRUNCQWdRSURBRWdYODBiVkVYRVVUSUVDZ1Z3SzNidVZwN0UyYTJ2NkQ2Yjd6NzhsVDI5UFh0bFRyVlNlcUxBRUNCQWdRSU5CbkFRRzl6NzJuN2dRSUVGaWNRSm5hdm5YanhuYWEwUDZmeGlZdDJONU9iVi9jRlpSRWdBQUJBZ1FJRUNEd1JBRUIvWWs4M2lSQWdNQm9CTnJwN1RIK2RWUGJSOVBuR2txQUFBRUNCQWgwVEVCQTcxaUhxQTRCQWdSV0xuQ3JUR09mYnQzWS9wNDBhdjc5YWZRODczZHUxZmFWZDRRTEVpQkFnQUFCQW1NWEVOREgvaDJnL1FRSWpGMGdWSzlYZTl2YjIyZGlESDhqcmRtZUgvblRCd3ZHbFpmOFE0QUFBUUlFQ0JBZ3NHd0JBWDNad3NvblFJQkF0d1VtdVhwM0p1R24wdFQycjY1aXpLdTJsOWU2WFcyMUkwQ0FBQUVDQkFnTVQwQkFIMTZmYWhFQkFnU09LcENEK1A3bG16ZGZUUVBtLzA1WkdFNDRQNnFkNHdnUUlFQ0FBQUVDQ3hjUTBCZE9xa0FDQkFqMFJxRE1hSy9qOUsrbEJkdFBwOUh6L1ZSenZ4ZDYwMzBxU29BQUFRSUVDQXhOd0I5aVErdFI3U0ZBZ01EUkJObzl6Mi9jK0tOcDlQeTdZMHg3bm9kZ1liaWoyVG1LQUFFQ0JBZ1FJTEFVQVFGOUthd0tKVUNBUUtjRjhnSndhYlQ4MXFrMGF2NVhPbDFUbFNOQWdBQUJBZ1FJakVoQVFCOVJaMnNxQVFJRWlzQ3RXMldrZk92bTUzNDAxT0gzcG52UDg5UjJDOFA1OWlCQWdBQUJBZ1FJckZuQWRNWTFkNERMRXlCQVlNVUNkZlg2NjN2bnQ3ZTMwclpxZjdHS2FjdnpFUHpIMmhWM2dzc1JJRUNBQUFFQ0JCNGw0SSt5UjZsNGpRQUJBc01WS0QvM1Q5ZjFUNFFRWGtqTnpOdXErVjB3M1A3V01nSUVDQkFnUUtCSEF2NG82MUZucVNvQkFnVG1GQ2picWwyN2VmUERWUlYvekxacWMybzZuUUFCQWdRSUVDQ3dZQUVCZmNHZ2lpTkFnRUNIQmZMaWNOVzBhZjVpcU90ejZhblI4dzUzbHFvUklFQ0FBQUVDNHhNUTBNZlg1MXBNZ01BNEJjcm8rWlVYcjc4U1EvVW5aNlBuMWlFWjUvZUNWaE1nUUlBQUFRSWRGUkRRTzlveHFrV0FBSUZsQ0lUcEpOOTdmanB0cjVaWGJpOGo2c3U0ampJSkVDQkFnQUFCQWdTT0wyRDA1UGhtemlCQWdFRGZCUExvK1hSemQvZnJZeFgvamFxSlZtN3ZXdytxTHdFQ0JBZ1FJREFLQVNQb28raG1qU1JBWU9RQ1phUThwZlFmUy9lZWI4eEd6LzM4SC9rM2hlWVRJRUNBQUFFQzNSUHdCMXIzK2tTTkNCQWdzRWlCZS9lZXB3bnRQMWp1UFE4aHYrWkJnQUFCQWdRSUVDRFFNUUVCdldNZG9qb0VDQkJZc0VCN24za3orZEVxaEdmY2U3NWdYY1VSSUVDQUFBRUNCQllvSUtBdkVGTlJCQWdRNkpoQUdUMi9kUDM2aTZsZVB6QWJQZmR6djJPZHBEb0VDQkFnUUlBQWdRTUJmNmdkU1BoTWdBQ0I0UW1VMGZPTmpmcEgwc3J0RjkxN1Byd08xaUlDQkFnUUlFQmdXQUlDK3JENlUyc0lFQ0J3SUpERCtmN0ZtemMzWXd3L0hLM2NmdURpTXdFQ0JBZ1FJRUNnc3dJQ2VtZTdSc1VJRUNBd2g4RHRxaXdFdHhIM3Z5L1VZYWVLVGQ3MzNNLzhPVWlkU29BQUFRSUVDQkJZdG9BLzFwWXRySHdDQkFpc1hpQlVyMVVsa0ljcS9FaWEycDczUFc4WGkxdDlYVnlSQUFFQ0JBZ1FJRURnaUFJQytoR2hIRWFBQUlFZUNaVFI4NnU3dS85U1N1YmZHR05zVXQzOXZPOVJCNm9xQVFJRUNCQWdNRTRCZjdDTnM5KzFtZ0NCWVF1a0lmT3FTcW44VDZXUjh5cU5vT2VBYmdSOTJIMnVkUVFJRUNCQWdNQUFCQVQwQVhTaUpoQWdRT0NRUUI0OW4xN1ozdjdhOVBtN1psdXJsUkgxUThkNFNvQUFBUUlFQ0JBZzBFRUJBYjJEbmFKS0JBZ1FtRU9nSFNtZmhPOVBpOE05Tzl0YXplajVIS0JPSlVDQUFBRUNCQWlzU2tCQVg1VzA2eEFnUUdENUF2bG4rdjcyOXZhWktsYi9hcnIzM09Kd3l6ZDNCUUlFQ0JBZ1FJREF3Z1FFOUlWUktvZ0FBUUpyRnlnLzArOU1KdCtaRm0zL3lPemVjei9uMTk0dEtrQ0FBQUVDQkFnUU9KcUFQOXlPNXVRb0FnUUk5RUdnTEE0WHF1YjdMQTdYaCs1U1J3SUVDQkFnUUlEQS9RSWI5My9wS3dJRUNCRG9xVUQrRDY3VHplM3RtN0VLZjZocTBzTHRJVmdjcnFlZHFkb0VDQkFnUUlEQU9BV01vSSt6MzdXYUFJR2hDZHh1OXptdko1UHZUdFBiTDFvY2JtZ2RyRDBFQ0JBZ1FJREFHQVNNb0kraGw3V1JBSUdoQzRUcXRXcS9ORExHUDk0Mk5tK0E3a0dBQUFFQ0JBZ1FJTkFuQVNQb2Zlb3RkU1ZBZ01DakJjclA4czBiTjM1UEZhcmYxNjdlbnA1NUVDQkFnQUFCQWdRSTlFcEFRTzlWZDZrc0FRSUVIaWxRd25nZG1qeTkvZlJzZXJ1Zjc0K2s4aUlCQWdRSUVDQkFvTHNDL29EcmJ0K29HUUVDQkk0cTBFNXZiOElmVGVIYzN1ZEhWWE1jQVFJRUNCQWdRS0JqQWdKNnh6cEVkUWdRSUhCTWdiSlMrOVdkblcrb3FuaXJURyt2MmdYampsbU93d2tRSUVDQUFBRUNCTllzSUtDdnVRTmNuZ0FCQW5NS2xPbnRUUWpmR2VwNll2WDJPVFdkVG9BQUFRSUVDQkJZbzRDQXZrWjhseVpBZ01DY0FqbWNsK250YVdMN0h5N1QyNjBOTnllcDB3a1FJRUNBQUFFQzZ4TVEwTmRuNzhvRUNCQ1lWNkQ4REwrNnUvdlZvWXJmT0Z1OTNjLzFlVldkVDRBQUFRSUVDQkJZazRBLzVOWUU3N0lFQ0JCWWdFQ1ozcDVHejc4OWhQcGNGYXRwS3RQUDlRWEFLb0lBQVFJRUNCQWdzQTRCZjhpdFE5MDFDUkFnc0JpQmxNM1QwbkJWL003OGIvb29YeSttYUtVUUlFQ0FBQUVDQkFpc1drQkFYN1c0NnhFZ1FHQXhBbm4wZkhyeDVzM050Sy9hUjBzMFQ4UG9peWxhS1FRSUVDQkFnQUFCQXVzUThNZmNPdFJka3dBQkF2TUxsTzNWSmpGK1N3alZUaG85YjFLUmZxYlA3Nm9FQWdRSUVDQkFnTURhQlB3eHR6WjZGeVpBZ01EOEFpRk9iMWNwb2FmWjdUbWdleEFnUUlBQUFRSUVDUFJZUUVEdmNlZXBPZ0VDb3hXNHQ3MXZSQ2xvQUFCQUFFbEVRVlJhQ09IYnlxM242Y2xvTlRTY0FBRUNCQWdRSURBUUFRRjlJQjJwR1FRSWpFcWcvT3krZFAzNmk3RUt2N2RzcjVadVJCK1ZnTVlTSUVDQUFBRUNCQVlvSUtBUHNGTTFpUUNCd1F1VU1GNVBKdCtVbmx4TXJjM1Qyd1gwd1hlN0JoSWdRSUFBQVFKREZ4RFFoOTdEMmtlQXdHQUY2aEIvLzZIN3p3WDB3ZmEwaGhFZ1FJQUFBUUpqRVJEUXg5TFQya21Bd0pBRXBya3hhV3UxajdaYm43di9mRWlkcXkwRUNCQWdRSURBZUFVRTlQSDJ2WllUSU5CUGdmeHpPMTdlMmRsTnM5cGZLZmVmQjl1cjliTXIxWm9BQVFJRUNCQWdjTCtBZ0g2L2g2OElFQ0RRZFlIMjUzWmR2NXJHelRkVFpkMS8zdlVlVXo4Q0JBZ1FJRUNBd0JFRkJQUWpRam1NQUFFQ1hSSklONXgvODZIN3o3dFVOWFVoUUlBQUFRSUVDQkE0b2NER0NjOXpHZ0VDQkFpc1hpQXZCSmRIelBNTjZOOVlQbHU4dldYd0x3RUNCQWdRSUVCZ0FBSkcwQWZRaVpwQWdNQm9CRXBBdjNidDJ0bVUwTCt1dERwSTZLUHBmUTBsUUlBQUFRSUVCaThnb0ErK2l6V1FBSUVCQ1pTdDFQYWZtOXhJQzhTOVdCYUlzLy81Z0xwWFV3Z1FJRUNBQUlHeEN3am9ZLzhPMEg0Q0JQb2tVQUo2M0M4THhEMmJLbTZCdUQ3MW5yb1NJRUNBQUFFQ0JKNGlJS0EvQmNqYkJBZ1E2SnBBQ1BGckR5MFFWMEo3MStxb1BnUUlFQ0JBZ0FBQkFzY1hFTkNQYitZTUFnUUlyRXNnNWd1blJQNzFhWkc0ZGRYQmRRa1FJRUNBQUFFQ0JKWWtJS0F2Q1ZheEJBZ1FXSUxBTkpXWjhubjRjQ2s3cEozUVBRZ1FJRUNBQUFFQ0JBWWpZSnUxd1hTbGhoQWcwRkdCZ3hDZFB4ODh6OFBmN1hacFI2OTAvZytxelpYZDNlMjBPTnlIWnFmNWo2eEg5M01rQVFJRUNCQWdRS0R6QWdKNjU3dElCUWtRNkxuQXdWejBnODhIemNsaC9jSFhEdDU3MU9jUzdzTmtjaTFPOXpkbkJ4d0Uva2NkN3pVQ0JBZ1FJRUNBQUlHZUNRam9QZXN3MVNWQW9CY0NaYlQ3K2VlZnZ6WTlkZXEvU2VQbTUwS3NQaGREMkV1MXY1QlM5ZDk4NTgwM1gwdlBKK2tqVDFzL3lxTU40OVBwSzJsbWU1MUcwZk41K1h3UEFnUUlFQ0JBZ0FDQmdRZ0k2QVBwU00wZ1FLQjdBczF6ejlYVmRQL2JRMTJmell1NjVZU2RubGZOdE5sTlQ3OHBmY3p1S1QvQ1NQcnQyMVgxMm10VnJLdmRrRXRxbWxSZ205bFRPUjRFQ0JBZ1FJQUFBUUlERUhELzRnQTZVUk1JRU9pbXdIUXllVGRGNkxkaTA2UjhIdStrei92TmRIb25qWURmMnRyZC9mNVpyWTgyQ3Y3YWErMTArS2I2U0RkYnExWUVDQkFnUUlBQUFRTHpDZ2pvOHdvNm53QUJBbzhST1AyVnIreW5WTjNNUnJvMzB1YzhheWw5NUt3ZGZ6TDlrOFA1ZnZwNDJsQjRmdjlnS3Z5SDJpM1dublpLT3NPREFBRUNCQWdRSUVDZ1Z3SUNlcSs2UzJVSkVPaUpRQm50ZnZ2dHQ5OUxvZngzSDRqU2t6eVNYdFgxTjF6ZTNmMmhXWHVlTm9wZWluanBwWmVlVFZIK2FqbW56SFB2aVlacUVpQkFnQUFCQWdRSUhFbEFRRDhTazRNSUVDQndJb0c4bGRyQnlQY0hCZVQ5eS9NOTZhSDY4ZXJsbDU5SmJ4eGxGTDM2bmJ0M3I2Yno4alpydWF3SGN2OEh4WHRHZ0FBQkFnUUlFQ0RRVHdFQnZaLzlwdFlFQ1BSRUlJWHdyenlpcW1rVVBlNm5uUDUxVis2OCt5T3o5NTgwaWw3Q2VKeE1McVpVZis0UjVYbUpBQUVDQkFnUUlFQmdBQUlDK2dBNlVSTUlFT2lrUUJ1cVk4aWo2UG0yOHpMc2ZhK21hWXA2SGdrUFZmMlQxNjVkTzV0ZWYrb29ldDAwMTFJcHAwdHBSdER2VVhwQ2dBQUJBZ1FJRUJpS2dJQStsSjdVRGdJRXVpYlFUa0Z2bXZjZVU3RkoyaXB0UDQySWYyanYxS2svTlR2bWNhUG9iZGl2NDR0cFJENC9jdWh2bjVVdi9VT0FBQUVDQkFnUUlEQUVBUUY5Q0wyb0RRUUlkRmNneER3eS91aEhtdVBlanFMSG43eDQ4K1ptT2lnZis5aWZ5M1UxMmN3M3J1YzkyeDVkb0ZjSkVDQkFnQUFCQWdUNkxQRFlQd1Q3M0NoMUowQ0F3Sm9GY29BdUk5enBuM2ZhcDQvTTFHVVVQZFQxN3NaMCttZExuVytWcmRjZVdmMlV5OXNWM0IvNXJoY0pFQ0JBZ0FBQkFnVDZMaUNnOTcwSDFaOEFnVzRMaFBEd0t1NkhheHhDbmJaZFN4aysvUG56Mjl0YjFldlZYbnI3d1ovTmJib1A4Zm9EZDdJZkxzbHpBZ1FJRUNCQWdBQ0JuZ3M4K0VkZ3o1dWorZ1FJRU9pTVFCbEJUOG42bmFmY0xaNS9EdStGT2x3L0hjSmZtTlgrd1ovTkphQ24rZkRQNTlYbVBBZ1FJRUNBQUFFQ0JJWXA4T0FmZ2NOc3BWWVJJRUJnVFFJaFBtVUV2YTFYMm5hdHliZVgvOW1yTDczMFFucnB3WHZSWnlQbzlabjI4Skw5MTlRaWx5VkFnQUFCQWdRSUVGaVdnSUMrTEZubEVpQXdib0hidDl2MmgvQ2xJMERrbjhWN1ZWMXZUZmYzZjJKMi9NSFA1NXpHYzBDdjAwNXQ3UjdvYVl1MjJURStFU0JBZ0FBQkFnUUlERWpnNEEvQUFUVkpVd2dRSU5BZGdiUlFlN3NQK3RPcnRERWJSZi9UbTl2Yk45UGg5NDJpYjIxdG5VMmo4UmRtRTl3RjlLZDdPb0lBQVFJRUNCQWcwRHNCQWIxM1hhYkNCQWowUXVDMTEwbzFwMDN6YnRvV0xUMS9hcWJPQit5bFFIOWhNZ2svWGs1dUY0c3JKOVoxZlNhVmNxNHRhL2F1VHdRSUVDQkFnQUFCQW9NU0VOQUgxWjBhUTRCQTV3UkM4K1JWM08rdmNMa1hQZVg1UDdPMXMvT1I5TlorTmR0MmJXOWo0NW1xYW1iM29EODk3ZDlmcks4SUVDQkFnQUFCQWdUNklDQ2c5NkdYMUpFQWdkNEtoRmgvc1ZRK1BMUjEycVBhbEg4bXB4WGQ2K2RpWGJXajZPKy9Xa2JRTitvNkJmUnc2bEVuZVkwQUFRSUVDQkFnUUdBWUFnTDZNUHBSS3dnUTZLaEEyaHJ0N2pHclZ1NUZyMkw0NGNzM2I3NWFmZXBUNWZ4NHFxblQ5UGVuenBNLzVyVWNUb0FBQVFJRUNCQWcwQ0VCQWIxRG5hRXFCQWdNU3FDczU1Wkd3MzhubG52UWp6d3R2YjBYdlE2blE1eit1d2NpOVY3OVRDcHdjdkMxendRSUVDQkFnQUFCQXNNVEVOQ0gxNmRhUklCQWh3UlNxSDR2VlNlSDllT01mczlHMGF0L2JldkdqVy9LemRtZk5IbUJ1SU1wN3NjcEs1L3VRWUFBQVFJRUNCQWcwQU1CQWIwSG5hU0tCQWowVnlDdEVQZCtGVUxlTWkwL3lxaDYrL1NKLzRZVXh2ZlQ2UHRHR24zL3FmYklrTTg5NnZsUExOeWJCQWdRSUVDQUFBRUMzUlFRMEx2WkwycEZnRUQvQlVxWW5weHE3cWJoN3VPczVONjJQSVE4aWg3VHVQdS9jdm1GRjc2dWlwUGZTVUUvajV3TDZmMy8zdEFDQWdRSUVDQkFnTUFqQlFUMFI3SjRrUUFCQW9zUm1PeFA5dE1vK1BFRGVyNThPaTluOHJDeDhWTXByQi84dkRhOWZURmRveFFDQkFnUUlFQ0FRT2NFTmpwWEl4VWlRSURBZ0FUMjl2ZlR0bWw1QlAwRXVUcUVzaTk2T3ZON0o2SCtSS3ppN3lTYUMra2pqNktmb01BQndXb0tBUUlFQ0JBZ1FHQ0FBZ2NqTWdOc21pWVJJRUJnL1FJYisvdDMwNVpwZWFHNC9EanU5UFFjd3ZNYThNL0cyUHg0ZW5id0gxV0Y4OExwSHdJRUNCQWdRSURBc0FRRTlHSDFwOVlRSU5BZGdSTEc5ODd0dlorbXFiODd4NEIzQ2VtcFdUdnA0MHgzbXFjbUJBZ1FJRUNBQUFFQ2l4WVEwQmN0cWp3Q0JBZ2NFamo5bGRQN2FXcjYzVGtucEIrRTlFTWxlMHFBQUFFQ0JBZ1FJREEwQVFGOWFEMnFQUVFJZEVXZ2pLQy8vZmJiNzZiVjE3ODhtNU4rM0NudWg5dGlXdnRoRGM4SkVDQkFnQUFCQWdNVUVOQUgyS21hUklCQXB3UnlLRC9ZQjcxVEZWTVpBZ1FJRUNCQWdBQ0JiZ2tJNk4zcUQ3VWhRR0JZQW1YVU8rMlU5cFhTckRUWGZWak4weG9DQkFnUUlFQ0FBSUZGQ2dqb2k5UlVGZ0VDQk80WEtBRTl4dERjLzdLdkNCQWdRSUFBQVFJRUNEd3NJS0EvYk9JVkFnUUlMRmFnYVdiYnJCbEFYeXlzMGdnUUlFQ0FBQUVDd3hJUTBJZlZuMXBEZ0VBWEJVSjBEM29YKzBXZENCQWdRSUFBQVFJZEV4RFFPOVlocWtPQXdLQUUybnZRcStvMzU5Z0hmVkFnR2tPQUFBRUNCQWdRSVBCNEFRSDk4VGJlSVVDQXdHSUVRakNDdmhoSnBSQWdRSUFBQVFJRUJpMGdvQSs2ZXpXT0FJRTFDN1NMeEZYVk8xVjV0dWJhdUR3QkFnUUlFQ0JBZ0VDbkJRVDBUbmVQeWhFZ01BU0JFTU4wQ08zUUJnSUVDQkFnUUlBQWdlVUtDT2pMOVZVNkFRSUUwdTNuNFVzWUNCQWdRSUFBQVFJRUNEeE5RRUIvbXBEM0NSQWdNS2RBQ1BaQm41UFE2UVFJRUNCQWdBQ0JVUWdJNktQb1pvMGtRR0NkQXRPbWViZUtlUS8wNEU3MGRYYUVheE1nUUlBQUFRSUVPaTRnb0hlOGcxU1BBSUVCQ0lTbXZRZGRQQjlBWjJvQ0FRSUVDQkFnUUdCNUFnTDY4bXlWVElBQWdTSVFZdjNiTTRvYzBmTlF1Z2NCQWdRSUVDQkFnQUNCaHdRRTlJZEl2RUNBQUlIRkNvUVk3ODVpdVRIMHhkSXFqUUFCQWdRSUVDQXdLQUVCZlZEZHFURUVDSFJNb0l5V2g3citVbXdUdW9EZXNRNVNIUUlFQ0JBZ1FJQkFsd1FFOUM3MWhyb1FJREJJZ2FhcTNrOE5TNTg4Q0JBZ1FJQUFBUUlFQ0R4ZVFFQi92STEzQ0JBZ3NCQ0JqUmpmVHd1NDc4OEtjdy82UWxRVlFvQUFBUUlFQ0JBWW5vQ0FQcncrMVNJQ0JEb21NRDExNm02YTI5NnU1TjZ4dXFrT0FRSUVDQkFnUUlCQWR3UUU5TzcwaFpvUUlEQlFnWHAvZnovR0tLQVB0SDgxaXdBQkFnUUlFQ0N3S0FFQmZWR1N5aUZBZ01EREFtVTYrOTUwdXBmZUV0QWY5dkVLQVFJRUNCQWdRSURBSVFFQi9SQ0dwd1FJRUZpR3dNYmUzdDJxQ3UrbGoyVVVyMHdDQkFnUUlFQ0FBSUdCQ0Fqb0ErbEl6U0JBb0xzQ2UyZlB2cCtpK2J1emZHNlJ1TzUybFpvUklFQ0FBQUVDQk5ZcUlLQ3ZsZC9GQ1JBWWc4QXo3NzIzbC9aQlQ2UG9IZ1FJRUNCQWdBQUJBZ1FlTHlDZ1A5N0dPd1FJRUpoWG9JeVd2LzMyMisrbGJkYStZb0w3dkp6T0owQ0FBQUVDQkFnTVcwQkFIM2IvYWgwQkF0MFFhRkkxRHZaQjcwYU4xSUlBQVFJRUNCQWdRS0J6QWdKNjU3cEVoUWdRR0tKQUNOVlhodGd1YlNKQWdBQUJBZ1FJRUZpY2dJQytPRXNsRVNCQTRGRUNaV1o3YktwMmNiaDBNL3FqRHZJYUFRSUVDQkFnUUlBQUFRSGQ5d0FCQWdTV0s5RGVlaDdqdTh1OWpOSUpFQ0JBZ0FBQkFnVDZMaUNnOTcwSDFaOEFnWDRJaE9nZTlINzBsRm9TSUVDQUFBRUNCTlltSUtDdmpkNkZDUkFZZ1VDZXpsNUcwTk0vNzdSUHpYQWZRYjlySWdFQ0JBZ1FJRURnUkFJQytvblluRVNBQUlGakNvUXdQZVlaRGlkQWdBQUJBZ1FJRUJpWmdJQStzZzdYWEFJRVZpN1FMaEtYUjlEYnU5RlhYZ0VYSkVDQUFBRUNCQWdRNkllQWdONlBmbEpMQWdSNkxoQ2lFZlNlZDZIcUV5QkFnQUFCQWdTV0xpQ2dMNTNZQlFnUUdMWEE3ZHR0ODBQNDBxZ2ROSjRBQVFJRUNCQWdRT0NwQWdMNlU0a2NRSUFBZ2ZrRlFnak4vS1VvZ1FBQkFnUUlFQ0JBWU1nQ0F2cVFlMWZiQ0JCWXY4QnJyNVU2VEp2bTNTcmVXOVI5L2ZWU0F3SUVDQkFnUUlBQWdjNEpDT2lkNnhJVklrQmdrQUtoc1lyN0lEdFdvd2dRSUVDQUFBRUNpeE1RMEJkbnFTUUNCQWc4VmlERStvdmx6VkQ1dWZ0WUpXOFFJRUNBQUFFQ0JNWXQ0QS9GY2ZlLzFoTWdzQ0tCRU9QZWlpN2xNZ1FJRUNCQWdBQUJBajBWRU5CNzJuR3FUWUJBYndUeWplZFZtRXgrTzVaNzBPMkczcHVlVTFFQ0JBZ1FJRUNBd0lvRkJQUVZnN3NjQVFMakZHaGl2Sk5hYnBXNGNYYS9WaE1nUUlBQUFRSUVqaVFnb0IrSnlVRUVDQkNZVDJDanF0NnJRdGlmbFZKRzFlY3IwZGtFQ0JBZ1FJQUFBUUpERXhEUWg5YWoya09BUU5jRVNoaWZubXJ1aHFxeWtudlhla2Q5Q0JBZ1FJQUFBUUlkRWhEUU85UVpxa0tBd0hBRkp2dVQvWFFQdW9BKzNDN1dNZ0lFQ0JBZ1FJREEzQUlDK3R5RUNpQkFnTURUQmZiMjkvTXE3Z2RUM0o5K2dpTUlFQ0JBZ0FBQkFnUkdKeUNnajY3TE5aZ0FnWFVJYk96djMwMUx4TDAvdTdaNzBOZlJDYTVKZ0FBQkFnUUlFT2k0Z0lEZThRNVNQUUlFZWk5UXd2amV1YjMzUXdqdnBnM1hldDhnRFNCQWdBQUJBZ1FJRUZpT2dJQytIRmVsRWlCQTRENkI1OTUvYmk5VzhhNThmaCtMTHdnUUlFQ0FBQUVDQkE0SkNPaUhNRHdsUUlEQUVnVEtDUHBiYjcyVnQxbjc4bXo4M0JUM0pVQXJrZ0FCQWdRSUVDRFFkd0VCdmU4OXFQNEVDUFJGSUlkeWk4VDFwYmZVa3dBQkFnUUlFQ0N3QmdFQmZRM29Ma21Bd09nRXlzQjVDTlZYU3N2VFhQZlJDV2d3QVFJRUNCQWdRSURBVXdVRTlLY1NPWUFBQVFKekM1U0FIbU5vNWk1SkFRUUlFQ0JBZ0FBQkFvTVZFTkFIMjdVYVJvQkE1d1NhWnJiTm1nSDB6dldOQ2hFZ1FJQUFBUUlFT2lBZ29IZWdFMVNCQUlIQkM3UnJ3NFc4RC9wc21iakJOMWtEQ1JBZ1FJQUFBUUlFamlzZ29COVh6UEVFQ0JBNHZzQkJRUCtFZkg1OFBHY1FJRUNBQUFFQ0JNWWlJS0NQcGFlMWt3Q0J0UXZFRUQ4V1k1cmVIc0lrVmNZODk3WDNpQW9RSUVDQUFBRUNCTG9sSUtCM3F6L1VoZ0NCWVFxMGk4Tk53NmVyR0g4ck5UR1BxQXZvdyt4cnJTSkFnQUFCQWdRSW5GaEFRRDh4blJNSkVDQndaSUVTeG4vcm4vN1ROOU1aL3lTay9kYlNRMEEvTXA4RENSQWdRSUFBQVFMakVCRFF4OUhQV2ttQXdIb0ZjaGpQMDlyVEkveDhtdUtlNG5tZTYrNUJnQUFCQWdRSUVDQkE0QU1CQWYwREM4OElFQ0N3UElIYnMrWGg2dmp4Rk03VGRkcGg5T1ZkVU1rRUNCQWdRSUFBQVFKOUV4RFErOVpqNmt1QVFEOEZYbXVudERkTitQa1V6L2RTWExkUVhEOTdVcTBKRUNCQWdBQUJBa3NURU5DWFJxdGdBZ1FJM0NkUUZvbzdXMVdmU1NQb3Z6b2JRRzhYajd2dk1GOFFJRUNBQUFFQ0JBaU1WVUJBSDJ2UGF6Y0JBcXNXS1BlaHYvbm1tKytsNmUzL0tPUVo3KzVEWDNVZnVCNEJBZ1FJRUNCQW9OTUNBbnFudTBmbENCQVltRUJadmoyMTZXT3pPOUlIMWp6TklVQ0FBQUVDQkFnUW1FZEFRSjlIejdrRUNCQTRua0M3Y250YUtLNE1ub2ZnUHZUaitUbWFBQUVDQkFnUUlEQm9BUUY5ME4ycmNRUUlkRXlnQlBRUTYwK0hHTjlKZGNzajZtMW83MWhGVlljQUFRSUVDQkFnUUdEMUFnTDY2czFka1FDQjhRcVVNUDdPWnovN1Zvcm12eFRhbmRZRTlQRitQMmc1QVFJRUNCQWdRT0ErQVFIOVBnNWZFQ0JBWUtrQ09Zem5hZTFwZmJqdzhiS1N1NFhpbGdxdWNBSUVDQkFnUUlCQW53UTIrbFJaZFNWQWdNQUFCTnFGNHVyNGVqdTV2UjFHSDBDN05JRUFBUUlFQ0JBZ1FHQk9BU1BvY3dJNm5RQUJBc2NVS0ZQYW15WjhNajNaUzFQZExSUjNURUNIRXlCQWdBQUJBZ1NHS2lDZ0Q3Vm50WXNBZ2E0S05MbGlaNnZxTTJtZSs2K1dhZTRXaXV0cVg2a1hBUUlFQ0JBZ1FHQ2xBZ0w2U3JsZGpBQUJBbVZpKytUTk45OThMeTNpL285Q1hzZzl4aExhMlJBZ1FJQUFBUUlFQ0l4YlFFQWZkLzlyUFFFQzZ4Rm83ME92cW8rVmpkYldVd2RYSlVDQUFBRUNCQWdRNkppQWdONnhEbEVkQWdSR0lkQnVyUmJqeDhzaTdpRzREMzBVM2E2UkJBZ1FJRUNBQUlFbkN3am9UL2J4TGdFQ0JKWWhVQUo2cU90UGh4amZTUmZJSStwdGFGL0cxWlJKZ0FBQkFnUUlFQ0RRQ3dFQnZSZmRwSklFQ0F4TW9JVHhkejc3MmJkU05QK2wwTzYwSnFBUHJKTTFod0FCQWdRSUVDQndYQUVCL2JoaWppZEFnTUQ4QWptTTUybnRhWDI0OEhwWnliM01kWisvWUNVUUlFQ0FBQUVDQkFqMFYwQkE3Mi9mcVRrQkF2MFdLQXZGcFg5K0xxWDAxSkoyR0wzZlRWSjdBZ1FJRUNCQWdBQ0JlUVFFOUhuMG5FdUFBSUdUQzVRcDdVMWRmekk5MlV0VDNTMFVkM0pMWnhJZ1FJQUFBUUlFQmlFZ29BK2lHeldDQUlFZUNwUzl6eS9VOWEra0VmUmZtZDJIYmovMEhuYWtLaE1nUUlBQUFRSUVGaVVnb0M5S1Vqa0VDQkE0bmtDNUQvMk5OOTU0UDAxdS84V3lrTHY3MEk4bjZHZ0NCQWdRSUVDQXdNQUVCUFNCZGFqbUVDRFFLNEZ5SDNvVnc4ZkxSbXU5cXJyS0VpQkFnQUFCQWdRSUxGcGdZOUVGS284QUFRSUVqaXhRN2tOUEErZXZsMTNRUXppNEQ3ME43a2N1eG9FRUNCQWdRSUFBQVFKREVEQ0NQb1JlMUFZQ0JQb3FVQUo2ZmVyVVB3NHhmajQxSWdmejhscGZHNlRlQkFnUUlFQ0FBQUVDSnhjUTBFOXU1MHdDQkFqTUsxREMrQmZlZU9Oektaci84bXloT0FGOVhsWG5FeUJBZ0FBQkFnUjZLaUNnOTdUalZKc0FnVUVJNURBK3U5V29UdmVocHdGMEM4VU5vbU0xZ2dBQkFnUUlFQ0J3RWdIM29KOUV6VGtFQ0JCWXRFQ01IeTlGem9iUkYxMjg4Z2dRSUVDQUFBRUNCTG92WUFTOSszMmtoZ1FJREZ1Z1RHbHY2dnFUNmNsZWF1ckJRbkhEYnJYV0VTQkFnQUFCQWdRSVBDUWdvRDlFNGdVQ0JBaXNWS0RKVjd0UTE3K1NwcmYveW13QXZieTIwbHE0R0FFQ0JBZ1FJRUNBd05vRkJQUzFkNEVLRUNBd2NvRThnajU1NDQwMzNrKzNvUDlpV2NqZGZlZ2ovNWJRZkFJRUNCQWdRR0NzQWdMNldIdGV1d2tRNkpKQTJmYzh4dkI2MldpdFN6VlRGd0lFQ0JBZ1FJQUFnWlVKQ09ncm8zWWhBZ1FJUEZhZzNJZWVwcmgvdkF5ZWgrQSs5TWRTZVlNQUFRSUVDQkFnTUZ3QkFYMjRmYXRsQkFqMFI2QUU5TEN4OGVrUTQrZFR0Zk9JZWh2YSs5TUdOU1ZBZ0FBQkFnUUlFSmhUUUVDZkU5RHBCQWdRV0lCQUNlUHYvUHF2LzBhSzVyODhXeWhPUUY4QXJDSUlFQ0JBZ0FBQkFuMFNFTkQ3MUZ2cVNvREFVQVZ5R045b0cxZC92RXFyeGFYcDdnTDZVSHRidXdnUUlFQ0FBQUVDanhHWS9VSDRtSGU5VElBQUFRS3JGWWp4WSswRmMwcjNJRUNBQUFFQ0JBZ1FHSk9BRWZReDliYTJFaURRWllFeVloNG4wMCtrSjNmVFZIY0x4WFc1dDlTTkFBRUNCQWdRSUxBRUFRRjlDYWlLSkVDQXdBa0VtbnpPK2ZETXI2WDU3Yjh5dXcrOXZIYUNzcHhDZ0FBQkFnUUlFQ0RRUXdFQnZZZWRwc29FQ0F4U0lJK2dUOTU0NDQzM1ExUDlRbW1oKzlBSDJkRWFSWUFBQVFJRUNCQjRuSUNBL2pnWnJ4TWdRR0QxQXUxOTUzWDFzYkpRM09xdjc0b0VDQkFnUUlBQUFRSnJGQkRRMTRqdjBnUUlFSGhBb055SFhqWFZKOHJnZVFoNUljLzJ0UWNPOUNVQkFnUUlFQ0JBZ01Ed0JBVDA0ZldwRmhFZzBGK0JFc2JyMDN2L09EWGhjN05tQ09qOTdVODFKMENBQUFFQ0JBZ2NTMEJBUHhhWGd3a1FJTEJVZ1JMR1AvOXJuMzg3elhYL3BkbENjUUw2VXNrVlRvQUFBUUlFQ0JEb2pvQ0EzcDIrVUJNQ0JBamtNSjZudGFkSGZMM2NoMjZodUpiRHZ3UUlFQ0JBZ0FDQkVRZ0k2Q1BvWkUwa1FLQ1BBdkZqVlV4NWZUYU0zc2NXcURNQkFnUUlFQ0JBZ01EeEJBVDA0M2s1bWdBQkFzc1dLRlBhWXgzelZtdDMwc2NrZlpqbXZteDE1Uk1nUUlBQUFRSUVPaUFnb0hlZ0UxU0JBQUVDaHdTYS9QeDhlT2JYWWhWL2RUYUFYbDQ3ZEl5bkJBZ1FJRUNBQUFFQ0F4UVEwQWZZcVpwRWdFQ3ZCZkpvK2VTTk45NTRQOFR3eWRJUzk2SDN1a05WbmdBQkFnUUlFQ0J3VkFFQi9haFNqaU5BZ01EcUJOSWk3dWtSWmd2RnJlNjZya1NBQUFFQ0JBZ1FJTEJHQVFGOWpmZ3VUWUFBZ2NjSXRQZWN4L0I2R1R3UElhL3M3ajcweDJCNW1RQUJBZ1FJRUNBd0ZBRUJmU2c5cVIwRUNBeEpvSVR4K3RUZFQ2ZFkvcmxad3dUMElmV3d0aEFnUUlBQUFRSUVIaUVnb0Q4Q3hVc0VDQkJZczBBSjQ1Ly90YysvbmVhNi85SnNvVGdCZmMyZDR2SUVDQkFnUUlBQWdXVUxDT2pMRmxZK0FRSUVqaStRdzNpZTFwN3ZRLy81dEJkNm11Q2VOMFgzSUVDQUFBRUNCQWdRR0xLQWdEN2szdFUyQWdRR0lCQi9Mb1h6Rk5SelN2Y2dRSUFBQVFJRUNCQVlzb0NBUHVUZTFUWUNCUG9zVVBZK2o5UHFreW1nMzBrTm1hUVBvK2g5N2xGMUowQ0FBQUVDQkFnOFJVQkFmd3FRdHdrUUlMQW1nUkxHZi9QTW1WK0xJWHhtTm9CZVF2dWE2dU95QkFnUUlFQ0FBQUVDU3hZUTBKY01ySGdDQkFpY1VDQUg5RW4xbWMvY1NlUG12K0ErOUJNcU9vMEFBUUlFQ0JBZzBDTUJBYjFIbmFXcUJBaU1UcURjZHg3citMR090enltYWZqNzVhT3FwcW11ZWFUZmRQeU9kNXJxRVNCQWdBQUJBdDBUYUZjSjdsNjkxSWdBQVFJRVppRzNic0luVWdMT0M4WGxuOWs1K0habndiZ1E5bEl3UHhVbWsvYjNTVnJRN3Q2Qzg3SGF2MWZkVU9YL0lKenIzWjI2cDhwNEVDQkFnQUFCQWdTNkpHQUV2VXU5b1M0RUNCQzRYNkNNUWsvMjlqNmRZdTF2ekxKdE4rNURUK0U3M3hjZll2Vi9wWHA5YXhXYmZ6czI4YWRUSVAvNTlQVVhjMTNEcE43SXdUM1U2VDhzaEhBUTBQTi9hMmhIMjB1QUx5UHVSdDN2NzNkZkVTQkFnQUFCQWlNVk1JSSswbzdYYkFJRWVpRlFBdnJiYjcvOStTdTd1LzhrNWVIcjNka05QWS9vMTNtMC9MZCs4ODAzZnk1cDVvLzhtRnplM3Q2ZVRDWWZhbUx6YWhYREt5bkZ2NUpDK1kzMDNzMFUxSjhyZ1QwZk9XdE1hZVFIRFp0K01BU2ZCdHRUems5SEh2N0laM29RSUVDQUFBRUNCQVlwSUtBUHNsczFpZ0NCZ1FqazdKcC9UcWZSNmpReUhlcHZyNW9tbGdYak90TEFsSnkva3F0eTdkcTFzK2svSkx5Zm5rNS82NjIzUHBzKzU0K2ZUUi9sa1RMN21iMjYzazZqN0Ntb3g0L0V1bjR4aGZZVTNxdnJLWkJ2cHh5K0ZVUDFYQ3B2VXRXenlWMEhBYjVOOEFkRlBSamc4K3M1d09mSDRjOEh6OXQzL0V1QXdMd0NCN05nY2psNTFvc0hBUUlFQ0N4QlFFQmZBcW9pQ1JBZ3NHaUJOSHIrYytYZTd0bCthNHN1LzdqbHBhM2ZVcDVPajFCOUtYOUs0VHdIOVZDOSt1cnAvSFgxcVU4ZFRNWFA4VHErOWRaYjc2YlBuNWw5L0V6NmZPK1J3dnZXM1NwZUNYWDlRanJwNVZUdUN5bTBmemlWdHB1ZVgwbHJ6dTJrR2ZLWFVsNS9OamtjQ3ZDNWlKTGUyMzgvR0lYUGJ4d0s4dm5ML0VpbDNUOGlQM3V4dk9rZkFnUWVGc2loUEgvay82RUo1US83ZUlVQUFRSUxGeWgvWHkyOFZBVVNJRUNBd0tJRThoL0h6ZGIyOXRla2tlVlBwaHU0bjAxZjV6K1cxLzN6dTBuL3JhQk8vOUhnSDZZcDdQL0pkRDkrNHJkLzR6ZCsvWUZHVDJiMVBBanIrZTFRM1U0ZnIrV25aYlgzdysrVkZ4LzRwMDZqODF2VGpZMUw2Y0RMYVVYN2x5WWh2SkN5K0pVVTRqK1VaaE5jUzBWZVNpUmJTV1VyZmYxTStud3FCZm4wOGlHaVErRzlmZG9HKzNSVWZwTHZpMC9GSDd4Mjc3dzJ6cmNWdXZkaUxybDlxZng3K1BtaGx3ZjdkSnI2UGZmci8vdk9aOS84NkdCYk9jNkc1ZS9sd3g4NWtCLzhqNkxNa3BtZU92WE42WVhmVTkrNTgzZSs4SVV2ZkhsMi9MMWp4c21tMVFRSUVGaXN3Tmorc0Zpc250SUlFQ0N3ZklIOGN6cSsvUExMejN6eHp2cy9uNzc0dWhTSzh4L09PU1N0KzVFRzB0c1VuRUx2YjZkcXZwNyt2UCtaMkZSLy8wd0luM3p6elRmZmU2Q0NlZFpXL21NK2gvTDgrZUIzVVA1OCtIbjZzcngvY0d6KytrbVArdUxObXhmVGY3bllqRTF6YmhyajFYVHdUajBKbTZtQXkrbTJnTzJtQ3RmckVDNmtVaSttTkg0NXZiK1pBdnlwRlBKUHo1cVFhakNyUXI1cXVYeitmT2pab1pBL2U3bEpoNldqeXdubDJQYWZXVGtmak5ibmx3L2E5K0R6OXBUKy9DdWc5NmV2amxyVHcvOGg3YjcvWVBiOGpSdGZOYTJhZnk0VjlPM3AyL3lqNlg4ckg4bi9XNy9iTkYvOS83ZDNKL0NWWFBXWjk2dnFYcWxYZGJzMzI3U2tqdU9Ra05Bc2hvWWtMTVp0WTJBeW1UZXpKSUY1RThneU1IbDVtUXpEZk1KbUlEUHZPMkVOVG5nSldaaGhHVExKUUJJbWsyU1NNUFBpclkwTkdCdDVBUnBzTUUyM2RLL3Nka3ZxUlhTM3U2VmJaNTcvcVZ2U2xheHVhN2xMTGIreTFicTZTOVU1MzFQU3ZVK2RVNmVteDhjbmRMOC9nTGpjRGZFOEJCQkFBSUVuRjJqOXdQRGt6K1laQ0NDQUFBSzlFTEFQMEExTkZQZGZOY0hhTDdoR1kxWmhNaXVuS0tWaFd4M2Jla3ZSbDBLeUdYMUhrZlJMbWlUdTVtcGw1b3RIanh6OTNpSzROQlJZdWszWHNlZ3Bjei9hZTlYODEvNzlRWERnZ0QyWXZtNXhRcmJIbGw3Mjdlc2JlUFRSTFZHMXVxWGkzQVpOSkw4dGlxUEx0UEtkUVNVYzBNR0Y3YUZyWEtvVjd0S1Erd0dGa1UwSzRCYnMxVXNmYkZZZCszU0FaSjFWMU9mNU5OVGIxdVpLTVhjanVjdi9PSDlmczJCMng4VUR2ajJ4dFE4L2VhRTV0QzVQOW5QcmM5dHhtNERlRHNYZXJXUCs5eWo1bmRLbEVPZVhMVU5EMjdXRFAwZXgyd0w1Uy9YSU0vVjdvTjhCN2Q1MmdFcGYrbmNpaU4xem0zTk5FTkRuK2JpRkFBSUl0RVZnOFJ0N1cxYktTaEJBQUFFRTJpcmdKNHJidVdmd1RlcXcrbERHQXJwVjFNTG0vREJ4RFlIMjhkWENhL0tCL3BRZXZVOC8zYWJuSFFqUG5SdHBEbysxMTZaTGVzQmh3YkRhOU1HTGZFL2Z4K3g3ZXR1ZTNubzdLVjlhem91c2JLbUhiSUs3MmRuWmdYUHIxMi9TVVlYMW9YcnBkV1JnUnlWb2JOY1FncTA2TFg2alJzaHYxV3UzaDdHRzNvZHVxeWIwVzYrTmJsTDlCM1QvWm4wTktHdjM2OFQ5cXU3VEVQeVc0clhldGdKWUVGcGltYnQzNmNmbjYraWZ1UFNUNWxmYjNQN0NBd0Jwb2RMdjgwOVBidG45QlBURkt2bjRPVDBnWmdlMTdHdHUyYjVuejk2bzBYaXhoWEx0TlMvVXNhZGh2My9xaHlTVTI3bm4ra0h6VHVoRmZmbzZvYmtxbjMxOGZIeFV0d25vYzVMY1FBQUJCTm9qa0g0Z2FzL2FXQXNDQ0NDQVFDY0VmT1FLWFhSdmJMa3I2VDIzK3k0VXBEcFJob3V0MDhwaFVVOGYxcE1pNllOOXJLSGxHbG51MCtjV2ZidEd0Ni94SC9qWHJ6dWswUUJmRENKM1N4U0hYenBXcTMxSHIyL3R5VXZEaE5VeDdTVy8wUGE5alI1TXYxL29lZW45cVZsUzV1VGU1TDc5KzlPZWVWdlgzRmR6Z2p1YjVHN0Z5OURRMElhVHptMVVyK1RHS0FyWE5ZSnd2WkEyQ21hYmZMWlltTmVwL0J1MDRnMmhjNXVkMC9uMG9YcnNZdzNCajhMMUtsaS9DckpSMGNodWIxWmtzamtJckVlektsT2JBOEFtNWFzSTMveVRldGkvL3JMeitwNHVjenB6TjlKSDVyN2JydVhYNEcvTTNiM3dSckwvYVdERXdwQzM4RW44MUdNQnZ3ZW9EQmFlYmJIZkxUdnc1WmZObDErK2EwTzErbndYdXBkcWY3dGFRMTZlSFZTaVpISkgyKzIxVTJrVWpKN3Y5NmxJKzRSK0gvMnV0U0RZcCt2ak93SUlJSUJBZXdXU04vUDJycE8xSVlBQUFnaTBWOEErYU1lYUxPM1MyZjYrKzNYYkxrMW1INWJURCtEdDNWcDcxMmF4ejNyWC9TZC9mZWF2Nk1zV0g0RlZEWnY5L1FFOWVxdnV1NlhSMzMvZjhVT0gvTXp3TGNWSUR5YXZ0SGU5WlJVcnZ0bjYvcGplVHIvYnlscHZweXUzdXRxUzFEbjVudHl6MW44MU8vNGxwMDl2WEhmMmJQKzVLTnJRVjZuMHg5VnFSYjM1bStKR28xOURGclpwaDFpbm52enRVYUN6Ny9VY3hheXFoWDJGc0w3UXhUdlVCV3E5OTVwSVQ5RS9DamVxU0RvbUVPaTdVNjlvMks5aHk5YlRield6MFFDMmI5bEJBTE8zeU5adnIxUE5aclZ1Vzg4RG1pVHVLajNHa2cwQjJ4K3R6ZXo3d3Q4VG5kYXg2OUZIOTJwV3g2dlY0aS9UVTU2bkp6M0Y4cmZhMFJyWHZpY0h5UHd2NXR4NkZ0Y3MvWnRERC9waUdYNUdBQUVFMmloZ2Y4aFpFRUFBQVFTeUxXQi9xMzM0VTgremdxeUdvc2FhS003M2JHVzc0QmNvbmM2OTFnR0dKQXpNbjd1ZUJJVlI5YzUrS1hMaExlcGh2bU5pZlB5aFJldFlTZS82b3BmMjVNZjBmZlpDMzROZy8vNmtZTWw1OVdtNHQvdGFieWZQNmN5L2RubThQanNBb05ITFFUU3phYlBhSit5clZ2dG1vNmcvakdiaW9LSGUvWWFDdVYxZXI5RzRYRmNVT0RWUnE5M2VtZUt3MW1VSTJQNWtYeGJLYlQrWjZ5SFg3V0RuOFBCdWpiWjVnWjV3alg3Y3I2ZnMxWUVWTzhDaS8rMGYrMlh6UGV2MmV2dXlkVDNaUWtCL01pRWVSd0FCQk5vZ3NKdy95RzNZREt0QUFBRUVFRmlqZ1BWa3p1NGNIcnhSdzVkL0k0UG5vYSttZWhZU2x1NWR0d2ZpMklhVmYxMDl2MTlRTUx4Wkp6L2ZjM0owOVBpaURmV2lkMzFSRVRyeTQxTHZ6K2w5NmZmV0RTOTFYK3ZqWm0zTGhiNG5qL0p2bGdXc2pkTXczWHBLU0JCY2NjWDZIWTNHTXhXOHI5T1Q5cXVabjZmZkdidnNvRzYyOXBMclozOHFpZy9rdHI2VkxBVDBsV2p4WEFRUVFHQ1ZBdWtIbTFXK25KY2hnQUFDQ0hSVFFKKzM3MDQ2dit5VGR5WVcrOUJ1aXdXSGxTNVdoK2FaMDgzcXFHZGR3VnpyVlAxQ25Yc2RoajloWHdvWmJ3bGpWOTh4TlBobDNYOXJIRVIzSEI4Yis2WmUzeHBVckF6MlpTSFV5cFdHVWQzTTNiSlUyWmU2cjEwVmE5MmZXbStuNjIrOXoyNWJXUmIwMnFaUDVIdmJCTXpaOXVkVzd6bnpyVDl3MlEvMnhSWDlia1RYdTltWkYrdDVUMU12ZVRPUTZ5Y2JwWkpja2pINXZXamZsUjhhS2xBbjkwVVZuZ1VCQkJBb3I0RDkwV2RCQUFFRUVNaStnSDNJam5mdTN2MDBuVUY4bno0ZDI4Umk5aUc1bDMvSGJXWm5YVmZOZjFhZlVWbnNvRzg3eTVOZWhzeTJvOG1xZE9aMDg3aUVZdng1YmVscjZodTh2ZUxDV3l1enMvYzgrdWlqeDdUOTFpVTlDTDN3bk56V1ozQWJnV3dKMk8rUG5jWmhTK3ZCcDJEWHJsMmJnL1hybjl0d2JyOSs2YTdSNzRPZFM2NkpCdlZ2KzNySmt5MHY4YTkreTJlMEpadkZmYVl4Mi9pUkU0OCtlbGkzcmF4ekJ3MTBtd1VCQkJCQVlJMEM5a2JBZ2dBQ0NDQ1FmUUg3ZSsyQ2ZVSGZqcU5EOStveitUUFVrMjRmak5NUDg5MnVnVDg0b0VJOW9BMC9SZWNrWCtxdmYyNlRUZGxFY08wTjZtbmRrblBYTFpIby9Ic2YxdE53RXJpam1scjhMajN4Wm5XZGYrRjRyWGF4M25VcmU5cnpuNjZiN3dqMFFzQityeGYza3MrVlk5ZlEwQS9Ib1h1Ujl1M3J0YXUvUUR2dWxYNi9Ud081aFdNYlVwTWN1VXJYTS9mNk50M3cyL0NUQTlydlcreitaL0Q0NDYrYW1KaVkxdnFUdjB0dDJoQ3JRUUFCQkJEb3pBY29YQkZBQUFFRU9pUGdlNnMwVWR5ZnFDLzUxVDA5RDExQlBLeFVOSnQzOEZ2bkdvM2ZXeGRGNzFkdjlpL2JoL2lXb0o3MllIZENJeG5Dbm9RVFA0VFhPdGt0THVpdUdYMGRWSXIvZ25MTExaWHo1Kzg2ZXZUb1k0c0trUjVFc1BVUTFoZmg4R05IQlN6VXBnZldGdlNTYjkyeloxdDFkbmFmRGovdDErL1dkWHJlcy9RN1paZlY4em5jLytNUHpHa1ZxeitYM0ZhM25NVWZFRXVEdVg2blJsU205MDdXYXYrOStXTEMrWElVZVE0Q0NDQ3dRZ0g3NDhxQ0FBSUlJSkFQQVF1OHN3cm8vMW9CL2ZkNkdkQnR1S3NtaGRibHZZUDNUSTZOdmN2NHRnMFBQNk1TeE8vVWZmL2NPdlQwZ2Q2R3FHdTJkaDlHT3YxK2svYXVXM0N4eTRQcHU3NlNuc2JIZE90dTNYOWJFTWEzVHd4cy8zcHc4T0Q1bGliM0FWOC9XODg2dmVzdE1OeHNpNER0KzdhUDJmZkZCNFNpN1h2Mi9GamtHbGZyc1d1MXU3NVErKzVReTc1cmU2Ukd5dWdSZndUS3IwZFA3ZWlTL0M2RlVWVi9aN1RsK0Z2YTJtOVBqdFUvMWJKVnE0djlyckFnZ0FBQ0NMUlp3UDdBc2lDQUFBSUk1RVBBOTZEdkdoNitXcGRRK2tMejg3RjlTTzcrMzNLRkJuMTRyeWlFM3pKWnE3OWNaVWpEYmFBRENKcll6YjFUaWVMLzhKL2lMYWduajZlOWhwM1dUcmFud3FXaFJyMkFmcHZxM2RmbDZVSUxITGVyeExmcSsxZlVJMWhmVkNBcnB4VjljWmhhOURSK1JPQ0NBcTBIZlJhY28zM1paWmRkR3ZmMVBjK0Y3bnJ0b0Zmcll2VFAxQ2tpNjJ4TnRzdGFJdlpmbHRMdHYyUmY3TWJ2dUUzM2JyOGZDdWE2SWxzY0g5R21ieHlvVmo5KytQRGh4NXMxdFlPRVZoL0NlUk9FYndnZ2dFQzdCYnJ4QjcvZFpXWjlDQ0NBUUZrRjdFTi9QTEI3OTg3K0tIcEFIOTEzK3cvVTg4Tmx1K3ZpQWcxenR5SHQ3cThWY3YrcDMvamV2ZjFwNy9TT1BidXZEK0x3QnZVSVhtZVBOYS9kYmplN0ZkUnRXN1kwQTQ5dVdmaFkyTHMrcFF4MHQ5TEdiWHJzdGczT2ZhTldxNTMxcjByK3NmZEpLMjk2QU1KQ093c0Npd1hzZDlQMkZmdGFlR0JIdnhPN2poL2ZHMGZSMVlGQ3VmWWt1ekxCcFphLzlmdXIveTJVMjRSdyt0NjlYdkxXOGx0NUxYVDMrUU5aTGo3cXd1RERybi9ESDB3OS9QQXAvMFROZlJHTUJEWVJKQXNDQ0NDQVFJY0Y3STJFQlFFRUVFQWdId0xwMzJ5M1kzandKZ1hMNi9YaDNqNVlkenZ3em1zMXowVmZJcVRidWJVK3pPNFlIdjRuU2lIdlVCNTV2cjFRUFhNMmtWemF3emkvcnU3Y3NxQnRnZDE2MTgxemJySTVsY3NlZTBpdWQyaUV3czE2enBlbnhzZkhGaFhMck8xMUMwUFlvaWZ4WXlrRTBuM1k5cHNGdmVRN2g0ZDNheDk2Z1VhU1hLZmNmYlVlZjdyQ3IvODkxWDVtT00xaDVINGZ0UDNKMXRYdFpXR1B1WE1LNCtFZjlNM01mR2p1aWdqNzlpbVlqMWpkZktHN1hVQzJod0FDQ0pSUklQMndWOGE2VTJjRUVFQWdqd0xwZWVnZjBCRHp0L2J5UFBRVVQra2tPUis5dFNkOS9xQ0JmYkMzQUJQc0hCcjZCZlhNS2FpSGUzMnZZVytEK256eGs0TWMxbnU1cUhjOU9LR2lqeWlPMytZYTdyYjFRWEQvK1BqNG1mU0YrdTREdnI1Yi9leUxFQ09FQWkrdHZlUVdXdjErYmZYZHZYdjN4c2ZEOEZuYXQxK2l2ZUtsT3JqelBOM2VybjFLejBwN3lYV0ZBMXQ2ZDNES2IxNy9MQXptY2F6aDYrRW40amorN2VQajQ2UE5KekdVUGRYaU93SUlJTkJsQVFKNmw4SFpIQUlJSUxCR0FSL1F0dzhPL2x3VWhaL3RlUTk2c3pKS0trdUZkQXMwRmxwOW1mMVQ3VEp4aiszK2w1cUErczBLS2orb25uZmQ3VHB4RFhXL3VSWCtrNFRzcFh2WGJWVVBLWHg5U1plOHVyVlJuYjN6eEdGL0hlaldUZEM3M3FwUmpOdTJEOXVYN1JzTGVza3Z1Znp5SzZwOWZTL1E3bks5SG42UkhuOWFNa1M4R2NqdCtmUDdrcTJqOTUrNWJDaTl2MFJocEZQZjljc1hCbjhTek1idm4zemtFWnVYd1JiN1hiWGZXUTQybVFZTEFnZ2cwQU9CM3I5WjlLRFNiQklCQkJESXNZQVB2Zjc2eUlHN1gvWFlxQzhMRHozL2U2NUNORU42L0tlYU9PNDFUV05mWGwrKy9ScUtmOERPdFEyQ1hidDJiWTdYclh1RFN2MXYxTk80dXpuczE0SzZoVng3VFJZV0pTMExaYXJaRTNyWG5hNEJIZDZyaWI1dXFRVFI3WTNUcCsrZm1wcEt6dGROU203dFlYV3h0ckV2QW84UU1yNVltN1YrSlQzZXpVSnYzNzU5UzJYVHBxc2F6bDJySFhTL2RvNTkybmNITXRwTDNrcWQ3TWM2S3FieVJyWXphby84eTdBU3YzZml5UGk5elNjU3pGdkZ1STBBQWdqMFVLRG5IK2g2V0hjMmpRQUNDT1JSd1A1dXUwQVRUKzA0ZVhKRUkyaWZrWlZlZEY4dVhRWk92WWg5NnB6N3BDYU9lMjBUT0EzcDltTVl0QVIxRFEzZWVUNE0zK2pDMEM0ZGQ0a1A2anF2WGFFbjdZMXVycUxuMzVLUWJUMmlsc2g4TDZTYVFqZDlSMlFZSE5KRFgxVEwzRktKb2pzZkd4djc3cUlTbTBIcVFGaGZoTlBqSDlOOTdRazl4M1lnckJIR0x3NWRlSjNDN1F2VitGZnF1MzREbTczazg1ZEFzOTlMYTEvN25xVkZ2ZmdxbEs2NFlJVlNxVytLZytpM2pvK04zZEVzcEw5ZnR4ZU1EbWcreGpjRUVFQUFnUjRJWk8yTnBBY0ViQklCQkJESW5ZQjlxRzdvY21aL29nL2VyODdDZWVnTEJPY25qcnRRU0xlbmg4RytmVlZOUU9Wbmh0YVEvU0hsbmpmci9sOVR3TitRNGFDZVZqWHBsZlRwSjZ6NnpPNkRtMlczMk01VGZ5QjB3YzM2Zmx0ajNicDdqeDg2ZERKOVlmTzc5VmhhNkcvOVd2UVVmdXlBZ0gzdVNjTzByWDVCTC9uV1BYdTJWWUxaNXltUTcxZkxYS2ZIZFY1NXRORmU0WS9OMlBFWk80QmtkK2dnVFhOZHRwNnNMWDU0dlg2WGJEL1Q0cjZvT3IzM1dLMzJ1ZVRudVlNSkJQTW1DTjhRUUFDQnJBallteFFMQWdnZ2dFQytCT3hEOTZ3Qytoc1YwRCtjdVlDdU5LQVEwd2dybFdvUXUwOU0xR3F2YS9LbVBjaXQycEdDZWlVTjZuN29mdWh1MEJwK1NlR2lvcUR1MTZVQTNBd2FyUy9OekcwTDJjbk04SXQ3MTVOQWQwVFovY3M2ZC8wV3VYeGhvbDcvOXFLU200dDkyWG9JVEl0dzJ2QmpHc2p0KytKZThuRDduajFQajF6amFqWFZTL1g0VDZnSmh4ZjFraXVRcTJuOG5YUEJ0ZzNGNnNncWt0bmhGY3l0dUpyNDdmNUtGTHp2MkdqOUw1cGJTL2UxQlFjbU9sSVNWb29BQWdnZ3NDb0JBdnFxMkhnUkFnZ2cwRk1CMzRPK2E4L3VGOGR4ZUVlekpCYnVzdlEzZlNVaDNhcXdJRGhjTWpoNFZUVUtibEJvZXFVRkRmVmVLbmdvWEdXNzE3TFpGQ3FwbFZXbFZxaXJXTEN6T3ZnbGpzK3FvUjVRVXgzUXNQN2JadUo0WkxwZW4weGYyUHh1QnlPc1BWdS9GajJGSHk4aVlOajJaZnVVTFF2QzZHVS9kTm1samNlclA2NUhyMU1EdlVTUFAxUHQwMjlQYlBhU0p3ZUYxSEJhaTYwalM3OVhWc3lsRmp2dzBGQ1IrMnhmMDJrWEQydi9ldC9VMk5pbmRMODlab3Mvc0pmYzVGOEVFRUFBZ2F3SzVPRk5KNnQybEFzQkJCRG9sWUNGaG5qejVaZnZXbGV0M3EvNHNGdkp3bnBlTGJobmFWbHBTTGV5V3gzc3ZjbUhxa3YzN0g1UkhFZnYxRDAvWlE4cVFLVTl6Rm1ycXhWdnFjVkNkck4zWGJlZU9ObGNUZmZlWmNQaDQwcmx6cW5SVVp0Tk93MVV1amwzNE1MV2s5YmQ3bWRaS0pBR2N2dHVUdWFWTEpxdllkZUpFMDl2VklMOWNyNU9qZkI4UGVseXk5OTJES1VaeXJXLzZXZUw1SW01ZmMvRFl2VzAzNVUralRoUk1JL3JxdEtONjUzN1R5MlhCTFJndnRBa0R6V2pqQWdnZ0VCSkJmTHlCbFRTNXFIYUNDQ0F3SklDNmQ5dXQyTjQ4Q1psaXV2VlkyYVhUN0lQNGxsYlZoUFNyUTVwQVBlaGRQdnc3cGRIemdkMTYvRzBJR0lUeVpsRCtqeTdPdytMUEpidVhWZFFQSzhLZkYxUE9GRFJjUGpINC9pZTZmSHhpVVdWU3R2WVFyeUZzL2tndXVpSkJmL1IydDYrN0dDVkdTdzRlTEY5OSs3aElJcCtYTmNTdTA1emwxK2pGUDZqZHNxRW51Y245Yk4vbTYreDE5dFgranVsbTdsWUZnUnpqV1UvRm9mQlIrSkszMGRPSEQ1OHd0ZGd2LzRlSENDWTU2STFLU1FDQ0NEUUlwQzNONlNXb25NVEFRUVFLTFdBQlRVN0QvMERPZy85clJrOEQ3MjFjZVpDK2tWbWQyOTlmdXR0cTZlRktmc0t0ZzhOL2F6NkNkV2pIajdIZm00RzlUUmsyVjE1V2l4azJkQjlmZGYvaTN2WGcyQmM5MzlWNTY1cjV1M2dDOGRydFcvNDU4L1gwTjdETFhRbTYwbSt6ejlhdkZ0cElMZnZDNGF0QjFkY3NYNzd6TXhWT21helgxSDdXZ1h5NStuMjlndjBrcWVCUEkrZmdmenZrdDlYa2g3ejB4cW0vNGRScGZLaGlTTkhIdkZObmdUenVkK1o0dTBHMUFnQkJCQW90a0FlMzV5SzNTTFVEZ0VFRUZpZWdBL29tdjM4NTZJby9HeHo2SGVXZTVQWEV0Sk54TmMzcGRteFovQ1hGVXZmcGhtMmY2dzVSRGxyMTFCUGk3cVM3Mm5RdG5CbE04UGI0bDl2QnlKMFM3M3I0UjFoR044U1ZkZDk1Ykh2ZmUvb29wV2JrUzMyZWx1WGZlVjVzY3FuWWRycXNxQ1gvSkxMTDcraTJ0ZjNBZzFJZUpscStrSTkvalFiNWowM2JEMXhzTmVrQjNEeS9KbG5ZVEIzVHZ1NyswUTFySHp3Nk9qb0lkVXhDT2d4OXd6OGd3QUNDT1JkSU05dlZubTNwL3dJSUlEQVdnUXNkTVNhOWZ5cDZvTFZwR1BCUm4xWmlNbnkzL1c1a0w2TTJkMVZsU2NzVmpjN0NPRjdUNjlRcituMDdPeS9WTFhmckdDMlJ5SFd3bGtXcjZIK2hJb3M0NDRrWUNmRDRaL1l1KzdjWTFySDNTNE1ibzBpZC92RXpxZDhQWjBKdjdudTFNcldrd2IyWld5MjUwOUp5MjBGV2RCTHZuMzc5aTJWVFp1dWFqaDNyWGIrNjFUM3EvVGtMUzI5NUVtSXRWK0IrY25kYkgzNVhwd2NORG1pRGtacHhMNDFaZmhwRjBYdjFYd0ZCNXNWV3pES0pOK1ZwZlFJSUlBQUF2bC80NklORVVBQWdYSUsyTjl2QzEvVm5VT0RJd29wejhwQkw3cTFsSlY1Vm9HNkw0Z2JINXVvamYrYWZyYTYySmVsaitVdFNXK2hEM0RicnJ4eWEzVHUzQnZVMmZ4dmRkN3hMaC9VZzZBSVBlcXRGbW5RTmlNZHBGQmFzOTUxL2EvNjZyN1FKcGM3b0s5YnRCL2NNMVd2MTNTN2RiRURHNm14cmN1K3NyQlltZXhnazMyM01pM29KZDg1T1BnamNlUmVyR3Q0WDZ0bnZGaFB1OExYTzUzY3paNXZReWlVWHZWYSt5cktvb01OK24yUWl1cGJhVGJXMytpKzkwN1dhbmMzSzBrd0wwcHJVdzhFRUVDZ1JjRGVFRmtRUUFBQkJQSXBZS0dyc1dObzhMOG84TDRtNCtlaHR3clA5YVRyblBUZlZ1QjRteDYwY0xYUzRCanFHdXJWdE9mNHNzc3V1M1Mydi85TlNxeS9MbytCbHFCdVFhWkk3M2VKMDRWNzF5YzFjZUE5ZXRKdENuZTNUcXhiOS9YZzRZZlB0VFNBV2RpK1krdXh3Ry9mdTdtazI3ZHRMdWdsM3pJMHRMMHZpcDhieE5GTDlkaTFLdG96MUphYjdJbk5VeG1LMlV0dUZaeGYvRUVLQytaMmwrcDlpMXJvZlpQMStpM05wL2o3ZFh2QndZem1ZM3hEQUFFRUVNaTVRSkUrc09TOEtTZytBZ2dnc0dJQkM1NnpPNGFILzVVNlUzOC9Sd0hkS21vOWhJMndFbFVWMGorZ2tQNTIzWmYyZ0M2L0o5M1daT0Y3dndMbmdTVHNYZktVcC94QXBScTlWWk9yL1F2MU02OHYyTkQzcE1ZTC8wMkRkck4zWGZPVys5NTF1eDUyYkk4OXBNQitoM3FpYjNLejdpdkh4OGRIRjc3Y2gzWDdQSkN1cDkyQjNkclYxbTlmVnNiVzlxMXNHeHJhV3duZEM5VVBmcjJlOGdJVmZiZTZqUzJaTmtPNUJkRkM5cEtMWXNIaVJ3UG9nSVQ5WGx1TnZ4Skc4WHNtUnNmL3R2bXMxSkZndm9DTkh4QkFBSUZpQ2RpYkpRc0NDQ0NBUUQ0RnJDZXRzVzMzN2hkcG9yZzdtMVd3Y0pXWHYrMFcwbU9GOUlwQyt2c1YwbTlRMlMyRVdCMVdFeEx0dGZibGUyVzM3OW56OU5BMTNxWTEvWkpDVHhKV2RWQkFPajRBNlhsRlhCSzdDL2F1QjhlRFVEUERCOEh0T3AzNTFvMWhlSCt0Vmp1N0NNSjhiRDBXcEZmVERyYTZ0QzNzOVFzQzVlV1hYNzVydGxMNUNaMURmcjJDdUlhdEI4L1NBWVUrZTFHemw5eXVHNjl0SzZYYmY4bituSmQ5MnFxeDBpV3ByNEs1SFZqUjc4STNOQkhnZXlmR3hqL1RYRkZxYVk2cmJZK1Zsb25uSTRBQUFnajBTS0RJYjNnOUltV3pDQ0NBUU5jRTdJTjdQTEI3OTg3K0tMeGZlV1pRd2NZK3hLZERZTHRXa0RWczZFSWgzVmJaMnRPNmtrMmtnY1lIOVoxNzl1eHpjZU1HK2Z5c3Zla3BCTnFsemV6OFhuTXErdnRnR3JUTjB1cmIycnV1SDRQdktBTi9RVGEzVktMb3JxTkhqbnpQN214WlVxTjBQUmNLaUdadWx2WmwyNXB2dTZjK2RkM09tVE43WXhlK0pJcUQ2N1dDNXl1SVhtcjVXNDFoN1dHeFUyMmw3OFU3bDF3VUYxek15SDVmKyt3QWtpWk8vSzRPbnR3NE1WYi9XUE4rZTZFZExQSDdzZjNBZ2dBQ0NDQlFmSUdpZnpBcGZndFNRd1FRS0xOQStqZmM3UmdlL0x5QzFzdlUrMll6UHVldGgvaENJZDNDb0gydGRrbkRaUkxVaDRhdWNhRjdsNXl1dHhVcUdLWTl1L2E4TWl5SjUzenZ1bVlHdDE3cVpsQU9nbFBTdms5R3QxVEN5bTNCMmJQM0h6dDI3UHVMWU5KOXkreHMvN05nYnV0TkxYVlQxNnNmSEJ6U3Q1L1VFNjdWSVlGcmhQMmpDcUhldVRrM1FOSnJiTnVmWDQrOXRBeUxlZGsrNllPNWZtY2ZFY0tId25Qbi9xakYyNXpOZEMzN3YxN09nZ0FDQ0NDUU53RjdZMlJCQUFFRUVNaXZnSDJRbjkweHRQdDlZVlI1ZTg3T1EyOVZ2MUJJdCtmTTk4YTJ2bUw1dHkwWVd0RHg2OUdsNmY2aDB1RTdsUTN0MnRrMjlOMHV6V2J2aDJVSjZsYnRkR2tOeWhiWXJSZmJobG5idDBQcTNQNml3clgxcnQvNTJOallkOU1YTGY2K2UvZnVqWS9yU2dKNnRRWHkvWHFOOVpKdm13di92cGRjQjQ5c0tWY3ZlU3ZWb21BZUg5ZlJrZDg3NTl4SHB1djFTZjlFcm1YZTZzVnRCQkJBb0pRQ0JQUlNOanVWUmdDQkFnbjRnTDU5YU9obm96RDRiODFlNGJ3R3pRdUZkQXMyN2VoSk5Dc0w2VWxRSDk3OUt1ZkNHM1JwdG1mN1lkWkpVRStIeHhkb0YxbFdWUkxqbHQ1MUJXbGJKSzltY1c1YU54L1FrMjRQNCtDVytPelprWGpkdW0zVlN1VkY2bkYvbVZySERuYjhpQitxblR6Zk5wcGVBczArYTZSRDRPMytNaTUyMmI5bWozbXNjLzdELzZTZlA2aDVGK29lWTkrK1BsMk53SHJNMTNvd3lxK09meEJBQUFFRThpdEFRTTl2MjFGeUJCQkF3QVFzK01TWERnLy9VTVBGRCtpMlhaTEt3bFplLzc1ZktLU3JTbTBMTC82Z2hxMVFTMFU5NnIraWJ1UzNLVnorc1BVY3EvdllldFRMR3RRVGxlVGZwWHZYazk3d0l6TGFxZ0IvaVg5cUdzcmRYQys1SFNUSzZ6N1lhckNXMjNaa1E1TVNoaFh0VzZHTjFGQ1ArUjhMNWYzSGFyV0hteXRlY05Cb0xSdmp0UWdnZ0FBQ3hSRElheTlMTWZTcEJRSUlJTkFtZ2RPblRuMS8wNVl0UDYvQWRKbFdhYjF3RmpEenVDakQ2TC9ZMmV6dUw5a3dzR1g5MlZPbmJsWkYyaG4yek1mV1orR29jZWJVcWZ1MmJOajRTUmVHeDNUdk04Tks1UklGSzN2Y2VqM0wzUE9ybHZBSEtzekNEcHlvUnp4TzdDeVlPN2RlN1pUZWx4d1VzbXQzejc5R0x5dnBZcFBlZVQwNzc5N0dJYmcvcitocUFzZnE5WTlwZjV1U2l1MTd0bkNlZWVMQXZ3Z2dnQUFDVFFFQ09yc0NBZ2dna0g4Qisxcyt1MkhyRmwxRE9ucDJFQ3RFSlNFcHJ6VzdVRWh2OTBHSEpHenVDL3BPZitmMDQyZW1wKzlhdDMzSEo2TkcvTGdTNlRQVTZ6bEFVUGU3a0FWMGE1T29KWHlibmQyYjNsZm1BeG1ld3YrVFhNYlBoVkZZdFZ5dVV3UCtYZ2MyZm1XeVZ2Ly9UazlQSDlWekNPYnpXdHhDQUFFRUVGaENnSUMrQkFwM0lZQUFBamtUc0wvbDhjYXRsd3lxcSs0ZktsVG1QYUFiZnpPa3h3M3JTZDg0c0NWVXorTnR1ci85NzF1UE5FY2M3QXVxajMvcnhCbHQ1L2FOMjdiL2FaQk04djRzQmZVTlBxamI4TzE4SC9ndzEzWXRTV2h2MTlyeXZ4Nk5KQWdzbU50RWU1RnUzKzZpK05lbXhzYmZmWFo2dXFicTJYNXJCekhvTWM5L1cxTURCQkJBb0tNQzdmK2cwOUhpc25JRUVFQUFnU1VFL0JEa0RaczM5K214MXpaRFpKN1BRMCtyYUlPRTArSHUxMjdZUEhCZVllY0xlckFUNzEwdVNJSjZHR2dtN1RNUG5EeDE1dFQwNTdkY3N1M1BkVzcvZWhYajJRcnFmUXJxNlhuRkJOUzBsY3I5M1NiQ2k3VnZWQzJZNjVkdVJPSDgxelg1Mjl2UG5wdytKQm9MNWJhL0Vzekx2WjlRZXdRUVFHRFpBcDM0a0xQc2pmTkVCQkJBQUlHMkNQaUFYaDBZT0Z1SndsOVVxTjJpdGRvUVpBc0hlVitzSjkxbUVuZnFTYisrd3lFOXNUbzhaMWM1ZmZMazVObFQwMyszZnV2V3Y0cWMyNlluUEZOaExIRk5oak1Yd1RqdiswZ3Z5bThUNkRWMEJZQ3E3UTg2YXZNdDdUVnYwVkQyZjZVNUV4NVVnV3l2dGVIczludVluQTZnR3l3SUlJQUFBZ2c4bVFBQi9jbUVlQndCQkJESWgwQjRmbnI2ek1hdFcvNkJFdTBQcVJkUHc5d0xFZEJOMzhKT2QwTzZUWW8yZjVDajh2aXBVNDlxNlB0ZjZqU0N6Mm5Dcjh0MUVPUnB6YUhNeWFXeGtzTUlTVGw5WWZtbm9BSVd0dTE2N2xWTkpxaURNKzZ3ZHM5M1RhNWIvMytkUFhKa3BGbG5nbmtUZ204SUlJQUFBaXNYSUtDdjNJeFhJSUFBQWxrVThLRmc0NWFCcDZ0SDc4Vit0dTFpblMvdCs5SG5ldEszYXJqN3lZNE5kMjl0M3pTbzIvdGxwTjdSbW9hK2YyYmp3TUFkK25tUHpqbStzaG5VN1lDSVBaY2U5VmE5NHR5MnRrMkNlUlJWTlB2Yll6clo0ZDF1L1liWFRoMCtmR2N3TmRVSWRHcEVjSGp1d0U1eGFrNU5FRUFBQVFTNktrQkE3eW8zRzBNQUFRUTZKbURCTU42d1plc2xTckt2VkV4d0JlcEJUOUhtZTlMRExnMTNUN2VjOUtoYk1RcGZmQUFBTjg5SlJFRlVTTFAzelZEbndoL1MwUGMvM3JoMTgzMGFmSCtsZ3Zwd0V0VDlSSElFOVhtM3ZOOUtnN2xkeTl6YS9xUjJoZDlkRjd2WFBGYXZmLzdzMU5TNVlOKyt2dUNSUjV6Q09VUFo4OTdhbEI4QkJCRElnQUFCUFFPTlFCRVFRQUNCTmdtNGdhMWJ6OGZPYWFLNFlKM1dhZUdpYU1PdUYvYWtkM2JpdUtXYXhVeHRzUkVMZ1hyVEgxU3Yrc2MzYnQzNmJUM3dOSVc0eTNXM1p2SDJRZDJlVWpSL3ExTTVscVFOZlRCWGovazU5WmgvVkZjd2ZNMVVmZnl2cG5VNlNiUEhQRkE0dDlNY1dCQkFBQUVFRUdpTEFCOGMyc0xJU2hCQUFJSE1DRlIyRGczZW8zT2tuNk41MVN3NEZQVkFyQVZsWGRaS0UzUTE0bmRNMXV2dmE5YlZlakhURUsyYkhWOHNxTnZRWjF1cU80Y0hYNmRNL2hiNVgrbGlYOFFaM1c5dHdOQjNFOHIrWW1OUEdqcXNZcGRMcyt1WTIwaVVQdzRhN2dPVDQrTTIrWnN0L25RU2ZhZkgzSFB3RHdJSUlJQkFPd1dLK3NHdG5VYXNDd0VFRU1pTGdQMU5iMnpZdXVVRk92Mzhxa0RkZlFxS1JRMkd2ZTVKVC9jSkMybiswbXdhNGp5ckh2V3ZEbXpZOEFsWHFSelgvVGJqKzFiMXBsdFpMYWhiVzNCZ1hBaVpYSndPdE5pRi9YUXRjLzJyNi91NXo0WVY5MHVUbytNZjFTa05FeXF6QlhOclB5Nlpsc2tHcEZBSUlJQkFNUVFJNk1Wb1IycUJBQUlJbUlEOVRZODEwL2hUbEM1K1dqMkJSVHdQdmJXbGs3RGJ6VXV3dFc2OTlYWnkvckdWcDNyNjlPbHptdkg5UzdyczNhZXFHaHF0c0dmWFVOOUVVRzhGeTlSdFhjdmNSbU9FZGkzelVEZHZpb0xvVnlmR2FyOXo1dVQwSXlxcC9WN1p3UldDZWFhYWpjSWdnQUFDeFJRZ29CZXpYYWtWQWdpVVU4QUNvdHN3TUtDZVB2YzY5ZlZacUxCeDFrbVFMYWFKci9QYzdPNERXODdwblBBN1ZOVjBHSEszYTIwOTZwRW1EcXVlZitpaDc1K1pucjV0dytiTm45WUJFeXZuVlFycTYzeFFUODV2THVyb2htNmJyM1o3YVRDMzRleHFDM2RuNk1MWFQ5VHEvMTRIV0VhMVVvTDVhbVY1SFFJSUlJREFxZ1dLL0tGdDFTaThFQUVFRU1pcGdBVytlR0J3Y0VkL0dOeW5udHRoaGNFaW40ZmUya3p6NTZTN3hxOVBqbzMvZ1I2MGtON0xYazlyRC92eTU2anZHaHI2WVJYeWJlcWgvUlVGOVlxTGRaSzZ0VStvSWRYRlBvaWk2bVZxVVREWHVlVlJaRDNtdWhuZnE1TVFQakExV3YrTFppbnRzNUcxU1RxM1FLWUtUMkVRUUFBQkJJb3RRRUF2ZHZ0U093UVFLSmRBK2pmZDdSZ2ErbC9LSHEvUVJHVjJYcTBGMVRJcy9uenc1akRsTjB5TzFmOUlsYmE2OXpwb3BRRThDZXFEZzFlNUtMaEJFZkdWU1VCMHNjWTUySFhVeTlKT3Zkb1g1U3pyTkpqSDhjTlJHTDN2Mk5qWXAxU2daQzZCSkpqMzhxQk9yMnpZTGdJSUlJQkFSZ1RzeUQ0TEFnZ2dnRUF4Qkt3WDJjS2crbVBkVjlVenF4dDJWMmtXZTA5clRyd2QvcUZtVkgrOWZyWlFiTUUzUFhpaG0xMWZMUEJaT2F4dEtzZnE5ZnNueHVxdnFrVHV4U3J0Mzl2d2Fqdi9XWS9aOCt5THBiMENGcjc5SkgxaHBWS1YrWmdHTDd4cG9OcjNUSVh6VCtxeE9OanY5eEg3WmJGMkt0VXZqZXJMZ2dBQ0NDQ1FJWUhrZzF5R0NrUlJFRUFBQVFUV0pHQWhOZDY0WmV0V0pkSlg2YmFGalRJZGpMVWdiaUUzVXZEOVJ4dTNEaHpWek9wMzYyY0x3QmJVZXJsWVc5aVh2ZmRHcDA5T0gxSFpQcjErNjlZdmEyYXlIMUI1ZjlEQ3VwNWhsL2txVzd0MW9sM21UaUd3VXdwMHpiUUozZkcrdUgvZHJ4dy9jdVQyRXlkT3pBYjdncjdnRVZrZjd2bSswWW42czA0RUVFQUFnUndLOUxKSElZZGNGQmtCQkJESXZJQVA2SmZ0MlhQbGJOeDRRS1hkckM4TGUyWDdlMjloM0VLNlZmLy9Wby8xUjNVajdhVTJqeXdzNlVFRGYrQkFweVg4TTQxOGVLZm1rM3V1TDJBYzYvUUVYd0VPcHErc3RkSmdYbFV3RDNTdS83UXVaL0RSU3JYNnU4Y09IMzYwdWFxczdRc3JxeUhQUmdBQkJCQW9yRURaUHJBVnRpR3BHQUlJSUxCSW9MSnphTkNHdVYrbE1kL1dvMXpHa09mcnZVUkk5K2VDTC9McTFZLzJQbXh0WTJYMXVYekhuc0ZmVW4vdURRcVhQMnB6bWVsNjloYlU3Y0JMbVVaQ3FMcXJXSkxaOFpOZzdweUd0YnVQVjhQS2pVZEhSdy81dFZtUCtZaTM3dlZvaWxWVWpwY2dnQUFDQ0pSQm9Jd2YyTXJRcnRRUkFRVEtMZUFEMzRhdFczNVN1ZTRxQlR4TlFPWURYdGxVL0dnQ1ZWb1ovUW5EM2JQU2kyNXRrb1pGMzZOKzl1VDBBMmVIOTN4c3crT1BQNlllOWFlSFVXVzd6cHUySUcvblVkdDNEcTRMb1dWUmo3ay9MU0RRT2VZVm00VkFQMy9HUmRFdlRvM1ZQblg2NU1uamVxN1pCaHJPUG5jZ3hQL01Qd2dnZ0FBQ0NHUk1nSUNlc1FhaE9BZ2dnRUFiQk94dmU3eHg2NWJkQ3FZL3JiQmlNNFNYdGZmVndxeUZzaXllazc2NHFTMm9XM21yd2JGak03cWUrOTBiTHIzc1B3Y3pzNmQwMzdQVm96N1FFdFN0UFFucXpVbjFOTWxleFE3RHlPUnZkQ3pxTlpPMTJ1K2ZQWG55bUxkTW5Bam13bUJCQUFFRUVNaStBQUU5KzIxRUNSRkFBSUdWQ2xoUWNSc0d0cWpYMEwxV01jNysxbHVQY1ZrRFhWNTYwdE4yVG9MNnZuMTladzhlUEt1Z2Z1ZldqWnMrMVlqQ0dZVlFDK29iQ2VvNjZLSitjZ3ZtTmp4Q25lYTNhS0s5MTAzVzZ1OC9jK3JVdUNCdG43ZDJKNWluZXhYZkVVQUFBUVJ5SVZEV0QydTVhQndLaVFBQ0NLeFN3QWZTZ2NIQkhmMWhlTDlpK1pBQ25RV1ZzaCtVOVFaSlIrdUNpZU95ZEU3NjRpYVBOTk40UmVkTjIvRDJZTnZ1M1hzMEZPQnQ2aXYrRjdxZTkzcE5nS1pETDNhdGUzK1p0c1d2TGVMUGFURDNROVlWekw4U1J1NDlFNlBqZjl1c2JMcVBXMXV6SUlBQUFnZ2drRHVCOUkwc2R3V253QWdnZ0FBQ0Z4VUl6MDlQbjltMFpjdkxGZWFlV3ZKaDdpblV3cDcwTFZ2cTZtMzlhcUNlNnVDUlI5THp3TlBuWnVXNzAzblRWallyZStYeDZlbmpaNmVuUDdkaDg4QmY2c0RMZ081N1Z2Tzg2MWh0YkpkbnN3UHZSVHo0YmdiK1FJUkdFRVE2eS96cllSaS9hYkkyL3FZeko2ZS8zYXl6aFhaNnpJWEFnZ0FDQ0NDUVh3RUNlbjdianBJamdBQUNGeE93c0JKdjJEcndZem9uOXlWMnJTbjFzbHJJSy90aTRkVkNYQ1NQbjltOGRmT0RaeDc4OXRlYTE4UE9ha2kzTnJOVEZLeDg5cjVkVVVoLzdPeXA2Yi9lZE1ubXYzZHhzRk4xZWJwR0JsajdwaE9tRmFXdHJkNXBNSzhvbUIvU2dQWWJKc2ZxcjljMTVMK214Mnl4ZlQzMThYZndEd0lJSUlBQUFua1ZLTW9iZUY3OUtUY0NDQ0RRV1FFWGptZ0l0UHBVL1FSYW5kMVdmdFp1SVZkRHBXMzJ2T2pQZHUwWmZLVWZRbTZYNE1yK1lnY1hiRWkrRCtvVG80K002THpybjlYUmhwY29tZDlrSVYzL1ZYMXZlbklnSXZzMVdycUVkakRDejFxdkh2TSt0VlZkQjVuZXZENk9uemt4V3YrUGVtdzIyTitjbVQzeHNJRE9nZ0FDQ0NDQVFPNEZpamdNTHZlTlFnVVFRQUNCTmdqWUFkaDQ2NTQ5VjFianhnTzZ2VmxmRm1MNHV5K0U1bUpoVjdOLzJ4VHZ3YXVPamRiL3d2ZWtOOC8zVHArVThlL3BTRGlyUzdCdGFPaW5vc0M5UzBIOWhmYXpCazVZNzdPMWVmbzh1enZMaSsyamRnQ2lUOEhjeW45Y28vWS9mTTY1MzUrdTF5ZDl3Wk5ybWR0ekNPVWVoSDhRUUFBQkJJb2t3QWUxSXJVbWRVRUFBUVNlS0JEdEdCNjhSeUhudVpwUUt3bWtUM3hPbWU5cGhuUmRoeTUwZVEzcDFuNEx6ci9lUHJ6N1ZaRUwzNmFKNUo1amx3VVBrcUJ1QjIyeU9uSnVjVEEvbzhNSzZpbVBicHdZRzdOWjJRTS9WOERJQ01IY1kvQVBBZ2dnZ0VCUkJmSnlSTDJvL3RRTEFRUVE2S1NBL1kyMzY2SC9wRVkrUDBjaGpmUFFuNmh0Z2RWQ2VxU0UrUE9iTDlueXJUTVBUbjg5Qitla0w2NkpEUW0zZys3K2ZHeWRuLzRObmFQOThmVURXMGJWRC8xam1raHVsMzg4bWZIZFhwdWRBL1JKbVNycU1hL1lqUFM2WE5vbk5XVC8xUk8xK21jMGlkOTBjeEsvUUJQNStWRUNWbmdXQkJCQUFBRUVpaXBBUUM5cXkxSXZCQkJBSUJuV0hHOGEySEs1dW9mL2tRWUVPOFd5clBhZzlySzlXa0o2cUpBK2tOZVFib2JKUkhkMmZ2YmhvS0ZycU4rM2ZjdldqNTkzd2JFd2NNOVFVTDlFSWRqQ3VUKy9XOTk3RmRUVHlld0NIOHl0SUxIN3N6Z01YejFWcTMxY3dYeEtkOW5CaGpTWU01emRZL0FQQWdnZ2dFRFJCWHIxeGx4MFYrcUhBQUlJWkVIQURzSTJkZ3dOL2JoTzE3MUx0KzF2dmdVZC92WUxZWW1sT2R3OTErZWt0MVlyMUVpQWFub045VXV1dU9LU2FIYjJqUXJxYjFRbzN1R3ZvWjRFZFF2QzNkd256RmxueGlkWEZkQVEvTC9US1B6M1R0WHJYMjRXM284QzBHMTZ6SnNnZkVNQUFRUVFLSTlBTjkrUXk2TktUUkZBQUlGc0NGalBzRTBVdDAwVHhkMnZTTFJIdmFkSkNNMUcrYkpZaW1aSXovMDU2YTIyWWJCZms4UWQ4Sk92QlpmKzRLV1h6YzcwLzRhQyt1c1YxQWVhUWIxYkIyNmNKWE1ybklMNUFaMVk4SjdKMGZHYm00Vk5SL1VSekZ0Ymo5c0lJSUFBQXFVU0lLQ1hxcm1wTEFJSWxFd2cvUnZ2ZGc0TmZVNTlwRC9sWXFkWnZadERoMHVHc1lMcU5rTjZTMDk2TXR6YUppakw4eElwcUVkcFVMOU1NL3czWE9PdDZyMytWVldxWDErZER1bnArdTlUQi9wdlRkWnFmOVhFdEFOSjlwVjMzMloxK0lZQUFnZ2dnTURxQmV3TmtRVUJCQkJBb0pnQ0ZvaVNYc2tvdUVjOTZQclI3bUo1RWdGL2FvQlJ4Uzc4YzMrZGRBdVArL2JsNFRycEY2dGEzQXpuOXQ1ZlBUbzZlbWhpclA1Nm5ReitGZCtwN1RvNnBEd0o1MkVZVjRQd2w1dmgzSnh0T0x1ZE4wODRGd0lMQWdnZ2dBQUNCSFQyQVFRUVFLQUVBcG9YN0Y2TktiWXpmL203djd6MmJvWjBwNUFlL0xsZFh6d1lHWmtKOXU2MW51YThMMmtnOXBPdzZSSjgzUnRTN2pTZ3ZsTHgyeFdpSFRFaW1PZDliNkw4Q0NDQUFBSnRGZUNEV2xzNVdSa0NDQ0NRT1FFL3EzYzFpcjZtYzM2blZUcjd1MDgzK3ZLYWFhNG5YWmNxK3g4N0J3ZXZEUTRlUEYrQW52UzA5bWt3VDArRlNPL3Z4UGY1YllTNmtGcXlwTjg3c1QzV2lRQUNDQ0NBUUM0RkNPaTViRFlLalFBQ0NDeGJ3QWYwbzBlT0hORUk5KzgwNStmeTl5MTdEZVYrb3E3TjdYdDVxN280MmVkOVNMZWU5UHdQZDI5dDFXNEU1VzVzbzdWTzNFWUFBUVFRUUNDWEFnVDBYRFliaFVZQUFRUldKR0E5d2JHR3VkdE03bjc2N0JXOXV1eFB0a24xNWtQNlRRVU42V1Z2WmVxUEFBSUlJSUJBSmdRSTZKbG9CZ3FCQUFJSWRGVEFEeS9XeU9KN2txMGtsN25xNkJhTHR2TDVrRjRwY0U5NkoxdHRmb2g3SjdmQ3VoRkFBQUVFRU1pNUFBRTk1dzFJOFJGQUFJRmxDUGpoeFRaUm5LYm9palUxbC9Xb00rUjRHWEFMbmpJZjBtMjRPejNwQzNDZTlBZjJ0eWNsNGdrSUlJQUFBZ2dra3dYaGdBQUNDQ0JRYkFFZmptYUM0R0ZWczVaY2JzMWYycXJZdGU1RTdlWkRPajNwSy9PbEIzMWxYandiQVFRUVFLQ2tBdlNnbDdUaHFUWUNDSlJLd0FKNmVLcFdtOUlsdFE3NnBLU0xYNWRLb0oyVm5RL3BSWms0cmh2aG1mMnRuZnNnNjBJQUFRUVFLS3dBQWIyd1RVdkZFRUFBZ1RrQkMwYzJyRjB4M1gwMTZVRW5MM21QMWY1VHJKRGVqWjJoR3djQlZ0dWF2QTRCQkJCQUFJSE1DQkRRTTlNVUZBUUJCQkRvdklBNnprY0NwendXaHZ6OVh5djN3cERPT2VrWDkrekdRWUNMbDRCSEVVQUFBUVFReUlFQUg5QnkwRWdVRVFFRUVHaURnTC8yZVRYcSs1cHo3dnRhbi8zOUp6U3RGWFkrcENmbnBBOE43US9zT3VsNzkvYXZkZFZkZkgwM2VyZTdzWTB1a3JFcEJCQkFBQUVFT2lOQVFPK01LMnRGQUFFRXNpYmdBL3JSSTBjT3EvZjh3VEM1MHBxL0wyc0Z6VjE1MHBBZWhsV05VUGlmTzRZdmYzNXc4T0Q1SElYMGJoeW82Y1kyY3JmclVHQUVFRUFBQVFRV0N4RFFGNHZ3TXdJSUlGQmNBWDk1dGRBRjkvdnowTldWWHR5cWRybG1QcVM3R2JtdUQxemwxcDNEVDNsZXprSjZwOEhvUWUrME1PdEhBQUVFRUNpRUFBRzlFTTFJSlJCQUFJRmxDYVFoNlo3azJVazMrckpleVpPV0k5QVh4UEdzUXZwbTU2SURoUFFGWkJ3TVdzREJEd2dnZ0FBQ0NDd3RRRUJmMm9WN0VVQUFnU0lLSkNFcERPOTFjUndIb1ovWm5XSHU3V3hwRFhQWEpIeldrNzZKa0w0QU5qMDR0T0JPZmtBQUFRUVFRQUNCaFFJRTlJVWUvSVFBQWdnVVdjQUg5TmxLNVdHRjgxRS96SjJKNGpyUjNtbFBlbDVDZWpmQ016M29uZGpUV0NjQ0NDQ0FRT0VFQ09pRmExSXFoQUFDQ0Z4UXdFSlNlT0x3NFJNNkQvMmdUMldhMWV5Q3orYUIxUXZrcXllOUcvdEFOdzRDckw2OWVDVUNDQ0NBQUFJWkVTQ2daNlFoS0FZQ0NDRFFCUUVMWWpaUm5KYnducVFIdlJ2WkxObGlDZi9OVzA5Nko1dUlIYTJUdXF3YkFRUVFRS0F3QWdUMHdqUWxGVUVBQVFSV0lCREY5K3BjYWVYMGtQZUJGYkN0K0tuNTZrbGZjZlZXOEFKNjBGZUF4Vk1SUUFBQkJNb3J3QWV6OHJZOU5VY0FnWElLK0VuaFpxUDQ2NHJucDBSZzd3UDBibloyWDFpNkozM2Z2cjdPYmpaVGEyY2Z5MVJ6VUJnRUVFQUFnYXdLRU5DejJqS1VDd0VFRU9pTWdBL29KdzQvZWtTci8zYVlYR21ObWR3N1l6Mi8xcVY2MGtkR1pvTHloSFI2ME9mM0JtNGhnQUFDQ0NCd1FRRUMrZ1ZwZUFBQkJCQW9ySUNkaCs0MFVkeDkvangwWjJQZFdib2dzS0FuZmR2UTBMT0M4b1IwOXJFdTdHQnNBZ0VFRUVBZy93SUU5UHkzSVRWQUFBRUVWaXFROW1aK05YbGgwbzIrMHBYdy9GVUlOSHZTTlhKaFV4UzRtM2JzM3YyakpRbnA2VDYzQ2pSZWdnQUNDQ0NBUUhrRUNPamxhV3RxaWdBQ0NLUUNTVzltR043cjRqaldOZEY5ajNyNklOODdMdEFuOTFtRjlFdkRLTHc5QXlHOUcrR1pIdlNPNzFac0FBRUVFRUNnQ0FJRTlDSzBJblZBQUFFRVZpYmd3OUpzcGZLd3d2bG9jcm0xZ1BQUVYyYTR0bWVySnoxMmJrYjJsNGFWOEVDUFEzbzN3bk0zRGdLc3JVMTROUUlJSUlBQUFoa1FJS0Jub0JFb0FnSUlJTkJsQVF0azRZbkRoMC9vUFBTRFBqazVabkx2Y2h2bzJFalFwOVAvWjlRVWwyV2tKNzJUQk4wNENOREo4ck51QkJCQUFBRUV1aUpBUU84S014dEJBQUVFTWlWZ1ljbUd0V3NKNzBsNjBNbFBpVWZYLyszTFVFOTZKeXRQRDNvbmRWazNBZ2dnZ0VCaEJBam9oV2xLS29JQUFnaXNRaUJ5STRGTjRoNkd2QitzZ3E4ZEx5bEpUenBIZ05xeHM3QU9CQkJBQUlIQ0MvQ0JyUEJOVEFVUlFBQ0JKUVg4T2VlelVlTWJTazZuOUF4N1B5QkVMVW5WbFR1WDdrbWZHK25RbFRKMGNpUDBvSGRTbDNVamdBQUNDQlJHZ0lCZW1LYWtJZ2dnZ01DS0JIeEFQM0g0MGNPSzVROXFSbkY3TVJQRnJZaXd2VTllMEpPdWllTzJEUTgvUTF0bzZLc0k3OVVjL0dudjdzTGFFRUFBQVFRS0tsQ0VOLzJDTmczVlFnQUJCRG91NE05RGQ2Rzd6NStIcmhuTE9yNUZOdkJrQWpaeDNEbWRjWENacnBQKyt1YVRPLzFlM1kzZTdXNXM0OGxzZVJ3QkJCQkFBSUhNQzNUNlRUL3pBQlFRQVFRUUtMRkFFcHBjK05YRUlPbEdMN0ZITnFydVhNV09sSVJCcUJuZXU3SjA0OEJNTjdiUkZTdzJnZ0FDQ0NDQVFDY0ZDT2lkMUdYZENDQ0FRTFlGZkdpS0t2RzlMbzRiU29UV284NHc5MnkzV1Y1TFJ3OTZYbHVPY2lPQUFBSUlkRldBZ041VmJqYUdBQUlJWkVyQUIvUkdaZjEzMVZ0N0pMbmNHaFBGWmFXRk5OUzlTS0dXSHZTczdGaVVBd0VFRUVBZzB3SUU5RXczRDRWREFBRUVPaXBnb1NrOGZ1alFTUmU0Yi9vMHFCc2QzU0lyUndBQkJCQkFBQUVFRUxpZ0FBSDlnalE4Z0FBQ0NCUmV3TUs0bnloT1o1L2ZuZlNnazg4TDMrcFVFQUVFRUVBQUFRUXlLMEJBejJ6VFVEQUVFRUNnZXdLaEMwY0NtOFJkMDRkM2I2dHNLU01DM1J4S0gycm9QdnRZUmhxZVlpQ0FBQUlJWkUrQU44bnN0UWtsUWdBQkJMb3A0Q2VGbTJrMERpcWVuOVNHN1gyQmJ2UnV0a0R2dHRYOERCRFdiZlNFem5qditBU0JZUmpPQnJPejMyOVdtZjJzZDIzUGxoRkFBQUVFTWlwQVFNOW93MUFzQkJCQW9Fc0NQcFNkZU9TUkk0cmxEeWxBMldZN0h0UzZWRGMyc3h5QktQN1BObnBDTGQvZndiWS9IMGIrMk05ZlQ5VHIzOVoyN0FmMnMrVzBEODlCQUFFRUVDaVZBQUc5Vk0xTlpSRkFBSUVsQmZ4NTZDNTA5L256MERVR2VjbG5jV2ZSQkJxcVVHVnlkUHptd01WdmJaN2RZRzNmMXVDc0ZWbzRYNmRMK2QxVk9ULzcycUloVWg4RUVFQUFBUVRhS1VCQWI2Y202MElBQVFUeUtlQzd6U003RDkwdlNUZDZQcXRDcVZjb1lDRTltcWlOZjFBQitoMGFRZUVQMXVpK2RvWDBtU2dNKzdYdUF4dUM4THFqUjQrZTFycHRHKzFhdjFiRmdnQUNDQ0NBUUhFRXFzV3BDalZCQUFFRUVGaWxRTkpqWG9sSFhDTnNhS3h6R3FBNGlMdEswSnk5ek5xL01sbXZ2Mi9INEdBUVJ1RjdOWWpDQXJSOXJYb2ZzSjd6Skp5N203WHVWelRYWjU4N1p2WEZnZ0FDQ0NDQUFBSkxDS3o2alhlSmRYRVhBZ2dnZ0VBK0JYeEFiMVRXZnpjTXd0SGtjbXRNRkpmUHBseFZxYTM5TFl6N2tPNWlaejNwNmVlRDFmWjBOM3ZPQ2VlcmFoRmVoQUFDQ0NCUVdvSDBEYmkwQUZRY0FRUVFRTUNIOGZENG9VTW5YZUFPK3ZIdXVvRkxxUVRhRnRLMW92TUsrSDBLK3ZTY2wyb1hvcklJSUlBQUF1MFFJS0MzUTVGMUlJQUFBdmtXc0hEbXp6MVd4K25kU1E4NitUemZUYnFxMHJjanBNOUVVYVJ6emdubnEyb0JYb1FBQWdnZ1VIb0JBbnJwZHdFQUVFQUFnWG1CMExrUlA0bjcvQkRuK1FlNVZRYUJWWWQwdlhCR3M3VmJ6L2xmY2M1NUdYWVY2b2dBQWdnZzBBa0JBbm9uVkZrbkFnZ2drRDhCZjY3eFRLTnhVRVUvcFM5N2Y2QWJQWC90Mkk0U3J6eWtPemVybnZPK29CSC8yV1N0OXM5VUNIOU91NzR6SVZ3N1dvUjFJSUFBQWdpVVJvQ0FYcHFtcHFJSUlJREFSUVY4UUQveHlDTkhGTXUvcVhPSUxaNnZkb0t3aTI2SUIzTWg4R1FoM1I3M1gvcG5KcXhVcWtIc1BqTlJyLytmemRyWktSTjJDVGNXQkJCQUFBRUVFRmlCQUFGOUJWZzhGUUVFRUNpNGdEOFBQUWpkdmMzejBDMkFzWlJYd05yZjk0VGJKZGhhWm5kdkhWMFIrNTV6QytlMTJpODBxUWpuNWQxbnFEa0NDQ0NBd0JvRkNPaHJCT1RsQ0NDQVFJRUVtaE80UnlPQnMyeG0zZWdzSlJkWUtxU0x4RitHVFFNdHdvcUMrNmNKNXlYZlM2ZytBZ2dnZ0VEYkJLcHRXeE1yUWdBQkJCREl1NER2TWE4MEd2ZkZVVGdiaElHOVIxZ1BLZ2R6ODk2eWF5dC9HdEpENjBuZlBqaDRJSWlpZ1RCMkRadFFVUGNkYUs2ZW52TzFPZk5xQkJCQUFBRUUvSWN2R0JCQUFBRUVFREFCSDlEZCtmTVBoK3ZYSFhaaCtGVDFwUHY3NENtOVFMb2ZSRlAxK3BlWDBMQ0RPSnh6dmdRTWR5R0FBQUlJSUxBU0FYcEZWcUxGY3hGQUFJRmlDMWdJQ3ljbUpxWmRxSW5pcks0dUNlM0ZyamExVzRHQVB5ZGR6N2ZSRmRaamJ0OXRWMkZDUVNHd0lJQUFBZ2dnc0ZZQkF2cGFCWGs5QWdnZ1VCd0JDK2dXdW15NXV6bFJYUElUL3lJd0wyQTk1WGI1dFBSNzJycysvd3h1SVlBQUFnZ2dnTUNxQkFqb3EyTGpSUWdnZ0VDeEJWd1FmZFZQRkJmNnljQ0tYVmxxaHdBQ0NDQ0FBQUlJWkVTQWdKNlJocUFZQ0NDQVFFWUVrcUhLamNZM2RmYjVDWlhKM2lmb0ljMUk0MUFNQkJCQUFBRUVFQ2kyQUFHOTJPMUw3UkJBQUlHVkN2aUFQalUrUHFZWFBxVExhRms4NS96aWxTcnlmQVFRUUFBQkJCQkFZQlVDQlBSVm9QRVNCQkJBb09BQ3lYbm9vUnRwbm9kT0QzckJHNXpxSVlBQUFnZ2dnRUEyQkFqbzJXZ0hTb0VBQWdoa1NjQlA0QjRGMFlnL0R6MUo2VmtxSDJWQkFBRUVFRUFBQVFRS0tVQkFMMlN6VWlrRUVFQmdUUUpKajNtamNaOHVnejZyaTJoWmp6ckQzTmRFeW9zUlFBQUJCQkJBQUlFbkZ5Q2dQN2tSejBBQUFRVEtKdUFEK3Jvb2VsQVZmOWlmaDg1RWNXWGJCNmd2QWdnZ2dBQUNDUFJBZ0lEZUEzUTJpUUFDQ0dSY3dIckxxN1ZhN2F4NnovK3JIK0d1cnZTTWw1bmlJWUFBQWdnZ2dBQUN1UmNnb09lK0Nha0FBZ2dnMEJFQlA2UTlicmovb214K1NpRzlxcTBRMGp0Q3pVb1JRQUFCQkJCQUFJRkVnSURPbm9BQUFnZ2dzSlNBNzBVL1BqNCtHcnJnTDhMSXYxM01MdlZFN2tNQUFRUVFRQUFCQkJCb2p3QUJ2VDJPckFVQkJCQW9va0RTWXg0MVB1cml1S0VLOXVtTFh2UWl0alIxUWdBQkJCQkFBSUZNQ0JEUU05RU1GQUlCQkJESXBJRDFva2NUbzQrTUJFSDROMzZ5T09jc3FMTWdnQUFDQ0NDQUFBSUlkRUNBZ040QlZGYUpBQUlJRkVUQWVzdjkrNFF1alA0UjMzVWVocnh2RktSeHFRWUNDQ0NBQUFJSVpFK0FEMXJaYXhOS2hBQUNDR1JKd000N2p5WnF0UU1hM1g2VGV0R2p3SzZOem9JQUFnZ2dnQUFDQ0NEUWRnRUNldHRKV1NFQ0NDQlFPQUgvWHVGQzkwRmZzekNzNkR2bm9oZXVtYWtRQWdnZ2dBQUNDUFJhZ0lEZTZ4Wmcrd2dnZ0VEMkJleTg4M0JxZFB3bXBmTFBxeGM5VkR6blhQVHN0eHNsUkFBQkJCQkFBSUdjQ1JEUWM5WmdGQmNCQkJEb2dZRDFsbHV2ZWVEQytFYS8vVEE1TjkzZjVoOEVFRUFBQVFRUVFBQ0J0Z2dRME52Q3lFb1FRQUNCd2d2NGM5R3RGMTNub0grT2M5RUwzOTVVRUFFRUVFQUFBUVI2SUVCQTd3RTZtMFFBQVFSeUt1RGZNMklYdk50Wm4zb1lWdlV2NTZMbnRERXBOZ0lJSUlBQUFnaGtUNENBbnIwMm9VUUlJSUJBVmdXc0Y3MHlWYTkvV1pkZCswd1k2UzJFNjZKbnRhMG9Gd0lJSUlBQUFnamtVSUNBbnNOR284Z0lJSUJBcndYaUtIcTN3dms1ZXRGNzNSSnNId0VFRUVBQUFRU0tKRUJBTDFKclVoY0VFRUNnOHdJMmUzdDFhblQwbStvKy8wUGZpeDRFWEJlOTgrNXNBUUVFRUVBQUFRUktJRUJBTDBFalUwVUVFRUNnelFLeHJhOXlmdmI5TG80ZjA4bm9mZnJSMzlmbTdiQTZCQkJBQUFFRUVFQ2dWQUlFOUZJMU41VkZBQUVFMmlKZ1lieDY5T2hSQytmdkNTT2RrZTRjQWIwdHRLd0VBUVFRUUFBQkJNb3NRRUF2Yyt0VGR3UVFRR0QxQWpiVVBaaXMxVDZpYkg2dmhycFhOWis3djIvMXErU1ZDQ0NBQUFJSUlJQkF1UVVJNk9WdWYycVBBQUlJckZiQUxxL21MN1BtZ3VnZC9scHJZYUN1ZEM2N3RscFFYb2NBQWdnZ2dBQUNDQkRRMlFjUVFBQUJCRllya0Z4MmJXenMvdytkdit5YXZhY3dZZHhxTlhrZEFnZ2dnQUFDQ0pSZWdJQmUrbDBBQUFRUVFHQk5Bcjd6dkJISGIzZk9uZENhbURCdVRaeThHQUVFRUVBQUFRVEtMRUJBTDNQclUzY0VFRUJnN1FKeHNHOWYzL0h4OGRFd2NQL0JYM2FOQ2VQV3Jzb2FFRUFBQVFRUVFLQ1VBZ1QwVWpZN2xVWUFBUVRhS0RBeTRvZTFUNHpWUDZUTHJ0MlZUQmpuR09yZVJtSldoUUFDQ0NDQUFBTGxFQ0NnbDZPZHFTVUNDQ0RRU1lGMHdqaGRiUzM0dHhycXJxdXZoWDRDdVU1dWxIVWpnQUFDQ0NDQUFBSkZFeUNnRjYxRnFROENDQ0RRR3dIck1hOU8xZXQzaFdGNG94L3F6b1J4dldrSnRvb0FBZ2dnZ0FBQ3VSVWdvT2UyNlNnNEFnZ2drRG1CMkVxMDNnWC9UcWVoZjB0QnZVOFhYV09vZSthYWlRSWhnQUFDQ0NDQVFGWUZDT2haYlJuS2hRQUNDT1JQd0FKNnRWYXJuUTFDOTBaZi9EQ3c5eGsvMDN2K3FrT0pFVUFBQVFRUVFBQ0I3Z29RMEx2cnpkWVFRQUNCb2d2NG9lNlRvK00zdThEOW9ZYTYyL3NNdmVoRmIzWHFod0FDQ0NDQUFBSnRFU0NndDRXUmxTQ0FBQUlJdEFqNG9lN3JHdTR0bXRYOVFZYTZ0OGh3RXdFRUVFQUFBUVFRdUlnQUFmMGlPRHlFQUFJSUlMQXFBVC9VZlh4OC9Fem9namY0OGUxaFVOR2FHT3ErS2s1ZWhBQUNDQ0NBQUFKbEVTQ2dsNldscVNjQ0NDRFFYUUUvMUgyaVhyL05oY0VITmRROTFPWVo2dDdkTm1CckNDQ0FBQUlJSUpBekFRSjZ6aHFNNGlLQUFBSTVFdkJEM2FkR2ErOElYSHh2TXRUZEVkSnoxSUFVRlFFRUVFQUFBUVM2SzBCQTc2NDNXME1BQVFUS0pPQ0h1cXZDczJIa1h1ZWNhd1JoV05YUERIVXYwMTVBWFJGQUFBRUVFRUJnMlFJRTlHVlQ4VVFFRUVBQWdWVUl6QWI3OXZVZE96SitYeGdHYjlWUWQ4VnpCWFVXQkJCQUFBRUVFRUFBZ1NjSUVOQ2ZRTUlkQ0NDQUFBSnRGUmdac1dIdDRjUlkvWGVET1A1Y1dLbFUxWVUrMDladHNESUVFRUFBQVFRUVFLQUFBZ1QwQWpRaVZVQUFBUVF5TG1CRDJ2MzdUVmp0ZTYxQyttTmhFUGJwUG5yU005NXdGQThCQkJCQUFBRUV1aXRBUU8rdU4xdERBQUVFeWlyUThFUGREeDkrVkdlZ3YxYkQzVzJ4ZnprZjNWUHdEd0lJSUlBQUFnZ2cwT3pSQUFJQkJCQkFBSUdPQzR5TTJMRDJxaTY5OW5mT0JlL1grZWgya0poWjNUc096d1lRUUFBQkJCQkFJQzhDOUtEbnBhVW9Kd0lJSUZBTUFUK3NmYkpXdThIRjduWi82VFhPUnk5R3kxSUxCQkJBQUFFRUVGaXpBQUY5ellTc0FBRUVFRUJnQlFJMnBOMHV0YVpMbzhldjBhWFhKalhTbmZQUlZ3RElVeEZBQUFFRUVFQ2d1QUlFOU9LMkxUVkRBQUVFc2lyZ0w3MDJOVDQrcHV1ai95cm5vMmUxbVNnWEFnZ2dnQUFDQ0hSYmdJRGViWEcyaHdBQ0NDQVFCSFkrdXE2UFBqRTYvcmN1Y08vMjU2TnpmWFQyREFRUVFBQUJCQkFvdVFBQnZlUTdBTlZIQUFFRWVpYVFYQjg5bUJ5ci8yWVFOLzVYOC9ybzUzdFdIamFNQUFJSUlJQUFBZ2owV0lDQTN1TUdZUE1JSUlCQWlRWHNmUFNLMWYrY0MxK3RjOUxITkdsY3YzNWtabmREWVVFQUFRUVFRQUNCMGdrUTBFdlg1RlFZQVFRUXlKU0F2ejc2ZEwxdWs4WDlmT0NjaFhPYlJDN09WQ2twREFJSUlJQUFBZ2dnMEFVQkFub1hrTmtFQWdnZ2dNQkZCSnJubyt2U2ExOEpnL0FOT2g5ZFU3enJQeFlFRUVBQUFRUVFRS0JrQWdUMGtqVTQxVVVBQVFReUtXQWhYVDNuRTdYYXgzUjk5TjhMSzFGRkNkM3VZMEVBQVFRUVFBQUJCRW9qUUVBdlRWTlRVUVFRUUNEekFuNVl1M3JTLzQzT1I3OHRpaUs3UGpvaFBmUE5SZ0VSUUFBQkJCQkFvRjBDQlBSMlNiSWVCQkJBQUlHMUNsaEE5NVBHelFUaHp6a1hIOWFrY1gwYTdNNmtjV3VWNWZVSUlJQUFBZ2dna0FzQkFub3Vtb2xDSW9BQUFxVVI4SlBHbmFyVnBxSTQrS2VhTk81Y0VQcEo0eHFsRWFDaUNDQ0FBQUlJSUZCYUFRSjZhWnVlaWlPQUFBSVpGV2hPR25lc1hyL2ZCZUV2cUJmZENtcnZWMHdjbDlFbW8xZ0lJSUFBQWdnZzBCNEJBbnA3SEZrTEFnZ2dnRUE3QmVabmR2L3ZtalR1WFpyWlBWUThweGU5bmNhc0N3RUVFRUFBQVFReUowQkF6MXlUVUNBRUVFQUFBUzh3TW1Mbm5rZVQ5ZnA3Rk5JL3FabmRxK3BDUDQ4T0FnZ2dnQUFDQ0NCUVZBRUNlbEZibG5vaGdBQUMrUmVZRzlLdW1kMWZHOFR4N1pyWnZWL1ZZbWIzL0xjdE5VQUFBUVFRUUFDQkpRUUk2RXVnY0JjQ0NDQ0FRR1lFNW1aMmIvU3YrOGU2L05xMy9jenVoUFRNTkJBRlFRQUJCQkJBQUlIMkNSRFEyMmZKbWhCQUFBRUVPaVBRQ1BZSDFlT0hEcDBNWS9jenpnV25BcnY4V3NBNTZaM2hacTBJSUlBQUFnZ2cwQ3NCQW5xdjVOa3VBZ2dnZ01EeUJRN29XdWo3OXZWTmpJOC9wRG5kZjBhWFgwdDcxcGs0YnZtS1BCTUJCQkJBQUFFRU1pNUFRTTk0QTFFOEJCQkFBSUdtUUhObTk0bGE3Zll3akY3TjVkZllNeEJBQUFFRUVFQ2dhQUlFOUtLMUtQVkJBQUVFaWl4Z0lUMElxaE5qWTU5UkovcmJtcGRmczk3MHVRbmxpbHg5Nm9ZQUFnZ2dnQUFDeFJZZ29CZTdmYWtkQWdnZ1VFUUJHOVplbWF5Ti8zYmc0dC9WNWRjcSt0a3V5Y2FDQUFJSUlJQUFBZ2prV29DQW51dm1vL0FJSUlCQUtRV3N0OXg2emNPSnNmcHY2QnJwbjFaUGVoL1hTQy9sdmtDbEVVQUFBUVFRS0pRQUFiMVF6VWxsRUVBQWdkSUlXRWozNzJHNlJ2b3Y2dkpydDlvMTBnbnBwV2wvS29vQUFnZ2dnRUFoQlFqb2hXeFdLb1VBQWdpVVFzQVBkYmVhRGxUN2Z0bzVOeEtGWWI5K3RQUFVXUkJBQUFFRUVFQUFnZHdKRU5CejEyUVVHQUVFRUVDZ1JjQkNldlh3NGNPUHIydkUvMERYU1ArT1puZTNhNlFUMGx1UXVJa0FBZ2dnZ0FBQytSQWdvT2VqblNnbEFnZ2dnTUNGQld5Q3VPcjQrUGpFYktYeUN2V2tId3NzcER2SHhIRVhOdU1SQkJCQUFBRUVFTWlnQUFFOWc0MUNrUkJBQUFFRVZpd3dHK3piMTNmeXlKSHZSUzU0dWNMNW1TQ01xcnI0R2lGOXhaUzhBQUVFRUVBQUFRUjZKVUJBNzVVODIwVUFBUVFRYUsrQVhTTmRJZjFZdlg1L0hMdVg2OUxvczBFWVZMVVJHd2JQZ2dBQ0NDQ0FBQUlJWkY2QWdKNzVKcUtBQ0NDQUFBTExGckNRdm5kdi8vSHg4Uys2TVBwcHZjNW1lN2ZycEJQU2w0M0lFeEZBQUFFRUVFQ2dWd0lFOUY3SnMxMEVFRUFBZ2M0SUhEeDQzbnJTcDhiR1B1K2k0RlU2SDkyMll5SGRycDNPZ2dBQ0NDQ0FBQUlJWkZhQWdKN1pwcUZnQ0NDQUFBS3JGbWdPZDU4YXJYOVduZWkvcXBuZGJWWDJua2RJWHpVcUwwUUFBUVFRUUFDQlRnc1EwRHN0elBvUlFBQUJCSG9qWUNGZHM3dFBqdFUvcGN1dnZiRVowcTBzaFBUZXRBaGJSUUFCQkJCQUFJRW5FU0NnUHdrUUR5T0FBQUlJNUZyQVh5ZDlzbGI3U0J5NE40ZFJsTDd2RWRKejNhd1VIZ0VFRUVBQWdXSUtwQjlVaWxrN2FvVUFBZ2dnVUhZQm15VE9RbnBsYXF6K083R0wvMTB6cE52OTlzV0NBQUlJSUlBQUFnaGtSb0NBbnBtbW9DQUlJSUFBQWgwU3NDQnVQZVlXMG44cmpodi9YaUU5blRTT2tONGhkRmFMQUFJSUlJQUFBaXNYSUtDdjNJeFhJSUFBQWdqa1R5QU42ZEZVYmZ3L0tLVC9QejZrTzJlOTY0VDAvTFVuSlVZQUFRUVFRS0NRQWdUMFFqWXJsVUlBQVFRUVdFTEFncmg5VlJUUy85L0F1UnZEU3FXcWU2eDNuWkMrQkJoM0lZQUFBZ2dnZ0VCM0JRam8zZlZtYXdnZ2dBQUN2Uld3SUc2QlBKd1lxNzBsQ2VrYTdrNVBlbTliaGEwamdBQUNDQ0NBZ0JjZ29MTWpJSUFBQWdpVVRjQkN1bDBZdlJuUzQ5OUpldElkUGVsbDJ4T29Md0lJSUlBQUFoa1RJS0JuckVFb0RnSUlJSUJBVndSOEw3cTJwSkJlZjNOenVMdDYwaG51M2hWOU5vSUFBZ2dnZ0FBQ1N3b1EwSmRrNFU0RUVFQUFnUklJdElUMDJsdGM3TjRmVnZ6czd0YkR6am5wSmRnQnFDSUNDQ0NBQUFKWkV5Q2daNjFGS0E4Q0NDQ0FRRGNGNWtMNlpLMTJROHQxMHUxKysySkJBQUVFRUVBQUFRUzZKa0JBN3hvMUcwSUFBUVFReUtoQUdzUVhYeWZkaXBzK2x0R2lVeXdFRUVBQUFRUVFLSklBQWIxSXJVbGRFRUFBQVFSV0s1RE83dTZ2ays1Yy9KdWhMcFRlWEJraGZiV3F2QTRCQkJCQUFBRUVWaVNRZnZoWTBZdDRNZ0lJSUlBQUFnVVVTTTg5cjB5TzFkOGRPL2VtVUNsZDliUXZRbm9CRzV3cUlZQUFBZ2dna0RVQkFucldXb1R5SUlBQUFnajBVaUR0U2E5TTFXb2ZkaTc0MXdycFZoNTd2Mnowc21Cc0d3RUVFRUFBQVFTS0wwQkFMMzRiVTBNRUVFQUFnWlVKcENHOXFvbmpmbDhoL1RWQkV0SXJXZzBoZldXV1BCc0JCQkJBQUFFRVZpQkFRRjhCRms5RkFBRUVFQ2lOZ0lWMEMrTVcwdi9VaGU3bmRkdUd1ZHUxMG1mMW5RVUJCQkJBQUFFRUVHaTdBQUc5N2FTc0VBRUVFRUNnSUFJVzBtZUR2WHY3cDBici84MkYwVS81bjhPd0dqaEhTQzlJSTFNTkJCQkFBQUVFc2lSQVFNOVNhMUFXQkJCQUFJSHNDUnc4ZUQ3WXQ2OXZhbXpzOHk1MjF3U0JPeHRFVVZVRm5jbGVZU2tSQWdnZ2dBQUNDT1JaZ0lDZTU5YWo3QWdnZ0FBQzNSRVlHWm54UGVuajQxK0tYUEJDNTl5a0pvL3IwOFlKNmQxcEFiYUNBQUlJSUlCQUtRUUk2S1ZvWmlxSkFBSUlJTEJtZ1daUCtyRjYvZjVxR1AyRTFuZklRcnJHd1o5Zjg3cFpBUUlJSUlBQUFnZ2dJQUVDT3JzQkFnZ2dnQUFDeXhWbzlxUS9OamIyM1VyL3pBdDBMdnI5VVJUMUU5S1hDOGp6RUVBQUFRUVFRT0JpQWdUMGkrbndHQUlJSUlBQUFvc0ZtajNwUjc5NzlMSCsyTDBvYnNSM1dralgweGp1dnRpS254RkFBQUVFRUVCZ1JRSUU5QlZ4OFdRRUVFQUFBUVFrWUQzcG1qaHVmSHo4ekZTOWZvMXJ4UDhqaktLKzV1enVOdnM3Q3dJSUlJQUFBZ2dnc0dJQkF2cUt5WGdCQWdnZ2dBQUNFckNRYnRkRjEvWFJKK3YxZnh5NzREK0dsWXJON203WFM3Y3ZGZ1FRUUFBQkJCQkFZRVVDQlBRVmNmRmtCQkJBQUFFRUZnZzA5Sk9GOUVDWFlYdTljL0c3MVpOdVA0ZjZJcVFiREFzQ0NDQ0FBQUlJTEZ1QWdMNXNLcDZJQUFJSUlJREFrZ0lXMHUzOU5Kb2NxLzltSExzM2FYWjNDK2hSNElMWkpWL0JuUWdnZ0FBQ0NDQ0F3QklDQlBRbFVMZ0xBUVFRUUFDQkZRcFliN21kZTE2WnF0VStyT0h1UDZmYmpTQUtxODN6MGxlNE9wNk9BQUlJSUlBQUFtVVVJS0NYc2RXcE13SUlJSUJBSndRc29EZHM4amlGOUwrTUkzZU5JdnRKRFhtdmNobTJUbkN6VGdRUVFBQUJCSW9uUUVBdlhwdFNJd1FRUUFDQlhnbzByNVYrZkhUOGk2RnpQKzVjOEYwdXc5YkxCbUhiQ0NDQUFBSUk1RWVBZ0o2ZnRxS2tDQ0NBQUFKNUVXaGVLMzJpWHY5Mm8xcDlub3ZqTC9uTHNDWFhTdWN5YkhscFI4cUpBQUlJSUlCQWx3VUk2RjBHWjNNSUlJQUFBaVVSYUY0ci9jVGh3eWNtYS9XckF4ZC90aG5TdVF4YlNYWUJxb2tBQWdnZ2dNQktCUWpvS3hYaitRZ2dnQUFDQ0N4WElMbFd1cjgyK3NSWS9aVXVkaDlvWG9iTjNuOXQ5bmNXQkJCQUFBRUVFRUJnVG9DQVBrZkJEUVFRUUFBQkJEb2lZSmRhODlkR242elYzcTVycGI4aDhGZGgwMzNPY1JtMmpwQ3pVZ1FRUUFBQkJQSXBRRURQWjd0UmFnUVFRQUNCZkFta3ZlVVZYU3Y5ajF3UXZrTEZQM094R2Q1MUtYWE9WYzlYRzFOYUJCQkFBQUVFMWl4QVFGOHpJU3RBQUFFRUVFQmdXUUxKWmRqMjd1MmZHaHY3dklzYXozZk9mY2RtZU5jRE00dlhvTWVzMTUwRkFRUVFRQUFCQkVva1FFQXZVV05UVlFRUVFBQ0JEQWcwWjNpZkduMzBtK0dtYy9zMHcvc3RDdWw5dW1hNjliTFBhUGo3ckI4Qkh3WGpHU2d0UlVBQUFRUVFRQUNCTGdxRVhkd1dtMElBQVFRUVFBQ0JWR0RmdnI0Z21VUXUyREU4K0FkaEVMN0JIdExROWlCMjdwNjQ3L1RMamg4NmZ0THUwaGZEM1EySEJRRUVFRUFBZ1lJTEVOQUwzc0JVRHdFRUVFQWcwd0kyak4yZm43NTllUGdWbWpUdWVyMHhqMVZuWmo1eDlPalIwM3JNUnJyWlpkbFlFRUFBQVFRUVFBQUJCQkJBQUFFRUVFQ2d3d0lXd3BjNjVXeXArenBjRkZhUEFBSUlJSUFBQXIwVW9BZTlsL3BzR3dFRUVFQUFnWGtCdTE1NnVsaXZPc1BhVXcyK0k0QUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0xSWDRIOEQ3ZHVUUy9ENCt2MEFBQUFBU1VWT1JLNUNZSUk9In0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjMtMDgtMTYiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MTAwLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IkFyY3VsdXMgRklETzIvVTJGIEtleSBDYXJkIFtQNzFdIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVMkYwMDAwMjAyMzA4MTYwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMy0wOC0xNiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxMDB9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjMtMDktMTIifSx7ImFhZ3VpZCI6Ijg4MmFkYWY1LTNhYTktNDcwOC04ZTdkLTM5NTcxMDM3NzViNCIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiODgyYWRhZjUtM2FhOS00NzA4LThlN2QtMzk1NzEwMzc3NWI0IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlQtU2hpZWxkIFRydXN0U2VjIEZJRE8yIEJpbyBhbmQgY2xpZW50IFBJTiB2ZXJzaW9uIn0sImRlc2NyaXB0aW9uIjoiVC1TaGllbGQgVHJ1c3RTZWMgRklETzIgQmlvIGFuZCBjbGllbnQgUElOIHZlcnNpb24iLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MiwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9LHsibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSIsImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwiLCJiYURlc2MiOnsic2VsZkF0dGVzdGVkRlJSIjowLjAsInNlbGZBdHRlc3RlZEZBUiI6MkUtMDUsImlBUEFSVGhyZXNob2xkIjowLjAsIm1heFRlbXBsYXRlcyI6NSwibWF4UmV0cmllcyI6NSwiYmxvY2tTbG93ZG93biI6MzB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjAsImJsb2NrU2xvd2Rvd24iOjB9fSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQ1dEQ0NBZitnQXdJQkFnSVVaa29oR1U2QStGMkJLYkc1OVdKeWRhUE5vMWN3Q2dZSUtvWkl6ajBFQXdJd2dZQXhDekFKQmdOVkJBWVRBa1ZITVE0d0RBWURWUVFJREFWRFlXbHliekVSTUE4R0ExVUVDZ3dJVkhKMWMzUnpaV014RURBT0JnTlZCQXNNQjFKdmIzUWdRMEV4RlRBVEJnTlZCQU1NREhSeWRYTjBjMlZqTG01bGRERWxNQ01HQ1NxR1NJYjNEUUVKQVJZV2JTNW5hR0YwZEdGelFIUnlkWE4wYzJWakxtNWxkREFnRncweU5EQTVNRGt3TnpRM01UWmFHQTh5TURjME1EZ3lPREEzTkRjeE5sb3dnWUF4Q3pBSkJnTlZCQVlUQWtWSE1RNHdEQVlEVlFRSURBVkRZV2x5YnpFUk1BOEdBMVVFQ2d3SVZISjFjM1J6WldNeEVEQU9CZ05WQkFzTUIxSnZiM1FnUTBFeEZUQVRCZ05WQkFNTURIUnlkWE4wYzJWakxtNWxkREVsTUNNR0NTcUdTSWIzRFFFSkFSWVdiUzVuYUdGMGRHRnpRSFJ5ZFhOMGMyVmpMbTVsZERCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQkdRNE94eFRJQW1RYnJ6aDk4QzYyb3lrN0h3TkFGbVAzY0RxOG9tSEV1UWJ5M21UcVc2cWtET1lzQWYxSllDc01EK0FBbS94YzhVMEJjaml2c2RCODhXalV6QlJNQjBHQTFVZERnUVdCQlI1YjhkdWpOMmhpMXQyWVBvamxUVkpUR0t0ZWpBZkJnTlZIU01FR0RBV2dCUjViOGR1ak4yaGkxdDJZUG9qbFRWSlRHS3RlakFQQmdOVkhSTUJBZjhFQlRBREFRSC9NQW9HQ0NxR1NNNDlCQU1DQTBjQU1FUUNJSC9VUkJ2bTJhZTJjM1I5WXFONzBkRElwMkMvbjR4NWF3TnBleTRyU3NZbUFpQmtRN1Q2Y3crZFp5ZVp3RGFsS1MxOFRiQUozUWd3Y3pvL21HYUxqL055ckE9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUNYa0FBQWNrQ0FZQUFBQVRBSlZyQUFBQUNYQklXWE1BQUM0akFBQXVJd0Y0cFQ5MkFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUJGNmxKUkVGVWVOcnMzVTJJWGVkNXdQSFh4aVdPYVpoQkdFSXdSaE1xS2RDbXVZTVd4MTRVZTFEd3Frb2xNQTdaNU9wcVk3d3BIa05Lc3dpSkRBN1p1YU9sblpxTUZOZHBxTUVqS05RT2hoeDVsNC9lYUpiR0FvOFFGazBDeVV3RXFaVkRtSjdqTTJOTlpVbnpkZWZPYzg3NS9lRGxnTDdtM3VkZTdmNDg3ejJycTZzSkFBQUFBQUFBQUFDQW1PNDFBZ0FBQUFBQUFBQUFnTGhFWGdBQUFBQUFBQUFBQUlHSnZBQUFBQUFBQUFBQUFBSVRlUUVBQUFBQUFBQUFBQVFtOGdJQUFBQUFBQUFBQUFoTTVBVUFBQUFBQUFBQUFCQ1l5QXNBQUFBQUFBQUFBQ0F3a1JjQUFBQUFBQUFBQUVCZ0lpOEFBQUFBQUFBQUFJREFSRjRBQUFBQUFBQUFBQUNCaWJ3QUFBQUFBQUFBQUFBQ0Uza0JBQUFBQUFBQUFBQUVKdklDQUFBQUFBQUFBQUFJVE9RRkFBQUFBQUFBQUFBUW1NZ0xBQUFBQUFBQUFBQWdNSkVYQUFBQUFBQUFBQUJBWUNJdkFBQUFBQUFBQUFDQXdFUmVBQUFBQUFBQUFBQUFnWW04QUFBQUFBQUFBQUFBQWhONUFRQUFBQUFBQUFBQUJDYnlBZ0FBQUFBQUFBQUFDRXprQlFBQUFBQUFBQUFBRUpqSUN3QUFBQUFBQUFBQUlEQ1JGd0FBQUFBQUFBQUFRR0FpTHdBQUFBQUFBQUFBZ01CRVhnQUFBQUFBQUFBQUFJR0p2QUFBQUFBQUFBQUFBQUlUZVFFQUFBQUFBQUFBQUFRbThnSUFBQUFBQUFBQUFBaE01QVVBQUFBQUFBQUFBQkNZeUFzQUFBQUFBQUFBQUNBd2tSY0FBQUFBQUFBQUFFQmdJaThBQUFBQUFBQUFBSURBUkY0QUFBQUFBQUFBQUFDQmlid0FBQUFBQUFBQUFBQUNFM2tCQUFBQUFBQUFBQUFFSnZJQ0FBQUFBQUFBQUFBSVRPUUZBQUFBQUFBQUFBQVFtTWdMQUFBQUFBQUFBQUFnTUpFWEFBQUFBQUFBQUFCQVlDSXZBQUFBQUFBQUFBQ0F3RVJlQUFBQUFBQUFBQUFBZ1ltOEFBQUFBQUFBQUFBQUFoTjVBUUFBQUFBQUFBQUFCQ2J5QWdBQUFBQUFBQUFBQ0V6a0JRQUFBQUFBQUFBQUVKaklDd0FBQUFBQUFBQUFJRENSRndBQUFBQUFBQUFBUUdBaUx3QUFBQUFBQUFBQWdNQkVYZ0FBQUFBQUFBQUFBSUdKdkFBQUFBQUFBQUFBQUFJVGVRRUFBQUFBQUFBQUFBUW04Z0lBQUFBQUFBQUFBQWhNNUFVQUFBQUFBQUFBQUJDWXlBc0FBQUFBQUFBQUFDQXdrUmNBQUFBQUFBQUFBRUJnSWk4QUFBQUFBQUFBQUlEQVJGNEFBQUFBQUFBQUFBQ0JpYndBQUFBQUFBQUFBQUFDRTNrQkFBQUFBQUFBQUFBRUp2SUNBQUFBQUFBQUFBQUlUT1FGQUFBQUFBQUFBQUFRbU1nTEFBQUFBQUFBQUFBZ01KRVhBQUFBQUFBQUFBQkFZQ0l2QUFBQUFBQUFBQUNBd0VSZUFBQUFBQUFBQUFBQWdZbThBQUFBQUFBQUFBQUFBaE41QVFBQUFBQUFBQUFBQkNieUFnQUFBQUFBQUFBQUNFemtCUUFBQUFBQUFBQUFFSmpJQ3dBQUFBQUFBQUFBSURDUkZ3QUFBQUFBQUFBQVFHQWlMd0FBQUFBQUFBQUFnTUJFWGdBQUFBQUFBQUFBQUlHSnZBQUFBQUFBQUFBQUFBSVRlUUVBQUFBQUFBQUFBQVFtOGdJQUFBQUFBQUFBQUFoTTVBVUFBQUFBQUFBQUFCQ1l5QXNBQUFBQUFBQUFBQ0F3a1JjQUFBQUFBQUFBQUVCZ0lpOEFBQUFBQUFBQUFJREFSRjRBQUFBQUFBQUFBQUNCaWJ3QUFBQUFBQUFBQUFBQ0Uza0JBQUFBQUFBQUFBQUVKdklDQUFBQUFBQUFBQUFJVE9RRkFBQUFBQUFBQUFBUW1NZ0xBQUFBQUFBQUFBQWdNSkVYQUFBQUFBQUFBQUJBWUNJdkFBQUFBQUFBQUFDQXdFUmVBQUFBQUFBQUFBQUFnWW04QUFBQUFBQUFBQUFBQWhONUFRQUFBQUFBQUFBQUJDYnlBZ0FBQUFBQUFBQUFDRXprQlFBQUFBQUFBQUFBRUpqSUN3QUFBQUFBQUFBQUlEQ1JGd0FBQUFBQUFBQUFRR0FpTHdBQUFBQUFBQUFBZ01CRVhnQUFBQUFBQUFBQUFJR0p2QUFBQUFBQUFBQUFBQUlUZVFFQUFBQUFBQUFBQUFRbThnSUFBQUFBQUFBQUFBaE01QVVBQUFBQUFBQUFBQkNZeUFzQUFBQUFBQUFBQUNBd2tSY0FBQUFBQUFBQUFFQmdJaThBQUFBQUFBQUFBSURBUkY0QUFBQUFBQUFBQUFDQmlid0FBQUFBQUFBQUFBQUNFM2tCQUFBQUFBQUFBQUFFSnZJQ0FBQUFBQUFBQUFBSVRPUUZBQUFBQUFBQUFBQVFtTWdMQUFBQUFBQUFBQUFnTUpFWEFBQUFBQUFBQUFCQVlDSXZBQUFBQUFBQUFBQ0F3RVJlQUFBQUFBQUFBQUFBZ1ltOEFBQUFBQUFBQUFBQUFoTjVBUUFBQUFBQUFBQUFCQ2J5QWdBQUFBQUFBQUFBQ0V6a0JRQUFBQUFBQUFBQUVKaklDd0FBQUFBQUFBQUFJRENSRndBQUFBQUFBQUFBUUdBaUx3QUFBQUFBQUFBQWdNQkVYZ0FBQUFBQUFBQUFBSUdKdkFBQUFBQUFBQUFBQUFJVGVRRUFBQUFBQUFBQUFBUW04Z0lBQUFBQUFBQUFBQWhNNUFVQUFBQUFBQUFBQUJDWXlBc0FBQUFBQUFBQUFDQXdrUmNBQUFBQUFBQUFBRUJnSWk4QUFBQUFBQUFBQUlEQVJGNEFBQUFBQUFBQUFBQ0JpYndBQUFBQUFBQUFBQUFDRTNrQkFBQUFBQUFBQUFBRUp2SUNBQUFBQUFBQUFBQUlUT1FGQUFBQUFBQUFBQUFRbU1nTEFBQUFBQUFBQUFBZ01KRVhBQUFBQUFBQUFBQkFZQ0l2QUFBQUFBQUFBQUNBd0VSZUFBQUFBQUFBQUFBQWdZbThBQUFBQUFBQUFBQUFBaE41QVFBQUFBQUFBQUFBQkNieUFnQUFBQUFBQUFBQUNFemtCUUFBQUFBQUFBQUFFSmpJQ3dBQUFBQUFBQUFBSURDUkZ3QUFBQUFBQUFBQVFHQWlMd0FBQUFBQUFBQUFnTUJFWGdBQUFBQUFBQUFBQUlHSnZBQUFBQUFBQUFBQUFBSVRlUUVBQUFBQUFBQUFBQVFtOGdJQUFBQUFBQUFBQUFoTTVBVUFBQUFBQUFBQUFCQ1l5QXNBQUFBQUFBQUFBQ0F3a1JjQUFBQUFBQUFBQUVCZ0lpOEFBQUFBQUFBQUFJREFSRjRBQUFBQUFBQUFBQUNCaWJ3QUFBQUFBQUFBQUFBQ0Uza0JBQUFBQUFBQUFBQUVKdklDQUFBQUFBQUFBQUFJVE9RRkFBQUFBQUFBQUFBUW1NZ0xBQUFBQUFBQUFBQWdNSkVYQUFBQUFBQUFBQUJBWUNJdkFBQUFBQUFBQUFDQXdFUmVBQUFBQUFBQUFBQUFnWW04QUFBQUFBQUFBQUFBQWhONUFRQUFBQUFBQUFBQUJDYnlBZ0FBQUFBQUFBQUFDRXprQlFBQUFBQUFBQUFBRUpqSUN3QUFBQUFBQUFBQUlEQ1JGd0FBQUFBQUFBQUFRR0FpTHdBQUFBQUFBQUFBZ01CRVhnQUFBQUFBQUFBQUFJR0p2QUFBQUFBQUFBQUFBQUlUZVFFQUFBQUFBQUFBQUFRbThnSUFBQUFBQUFBQUFBaE01QVVBQUFBQUFBQUFBQkNZeUFzQUFBQUFBQUFBQUNBd2tSY0FBQUFBQUFBQUFFQmdJaThBQUFBQUFBQUFBSURBUkY0QUFBQUFBQUFBQUFDQmlid0FBQUFBQUFBQUFBQUNFM2tCQUFBQUFBQUFBQUFFSnZJQ0FBQUFBQUFBQUFBSVRPUUZBQUFBQUFBQUFBQVFtTWdMQUFBQUFBQUFBQUFnTUpFWEFBQUFBQUFBQUFCQVlDSXZBQUFBQUFBQUFBQ0F3RVJlQUFBQUFBQUFBQUFBZ1ltOEFBQUFBQUFBQUFBQUFoTjVBUUFBQUFBQUFBQUFCQ2J5QWdBQUFBQUFBQUFBQ0V6a0JRQUFBQUFBQUFBQUVKaklDd0FBQUFBQUFBQUFJRENSRndBQUFBQUFBQUFBUUdBaUx3QUFBQUFBQUFBQWdNQkVYZ0FBQUFBQUFBQUFBSUdKdkFBQUFBQUFBQUFBQUFJVGVRRUFBQUFBQUFBQUFBUW04Z0lBQUFBQUFBQUFBQWhNNUFVQUFBQUFBQUFBQUJDWXlBc0FBQUFBQUFBQUFDQXdrUmNBQUFBQUFBQUFBRUJnSWk4QUFBQUFBQUFBQUlEQVJGNEFBQUFBQUFBQUFBQ0JpYndBQUFBQUFBQUFBQUFDRTNrQkFBQUFBQUFBQUFBRUp2SUNBQUFBQUFBQUFBQUlUT1FGQUFBQUFBQUFBQUFRbU1nTEFBQUFBQUFBQUFBZ01KRVhBQUFBQUFBQUFBQkFZQ0l2QUFBQUFBQUFBQUNBd0VSZUFBQUFBQUFBQUFBQWdZbThBQUFBQUFBQUFBQUFBaE41QVFBQUFBQUFBQUFBQkNieUFnQUFBQUFBQUFBQUNFemtCUUFBQUFBQUFBQUFFSmpJQ3dBQUFBQUFBQUFBSURDUkZ3QUFBQUFBQUFBQVFHQWlMd0FBQUFBQUFBQUFnTUJFWGdBQUFBQUFBQUFBQUlHSnZBQUFBQUFBQUFBQUFBSVRlUUVBQUFBQUFBQUFBQVFtOGdJQUFBQUFBQUFBQUFoTTVBVUFBQUFBQUFBQUFCQ1l5QXNBQUFBQUFBQUFBQ0F3a1JjQUFBQUFBQUFBQUVCZ0lpOEFBQUFBQUFBQUFJREFSRjRBQUFBQUFBQUFBQUNCaWJ3QUFBQUFBQUFBQUFBQ0Uza0JBQUFBQUFBQUFBQUVKdklDQUFBQUFBQUFBQUFJVE9RRkFBQUFBQUFBQUFBUW1NZ0xBQUFBQUFBQUFBQWdNSkVYQUFBQUFBQUFBQUJBWUNJdkFBQUFBQUFBQUFDQXdFUmVBQUFBQUFBQUFBQUFnWW04QUFBQUFBQUFBQUFBQWhONUFRQUFBQUFBQUFBQUJDYnlBZ0FBQUFBQUFBQUFDRXprQlFBQUFBQUFBQUFBRUpqSUN3QUFBQUFBQUFBQUlEQ1JGd0FBQUFBQUFBQUFRR0FpTHdBQUFBQUFBQUFBZ01CRVhnQUFBQUFBQUFBQUFJR0p2QUFBQUFBQUFBQUFBQUlUZVFFQUFBQUFBQUFBQUFRbThnSUFBQUFBQUFBQUFBaE01QVVBQUFBQUFBQUFBQkNZeUFzQUFBQUFBQUFBQUNBd2tSY0FBQUFBQUFBQUFFQmdJaThBQUFBQUFBQUFBSURBUkY0QUFBQUFBQUFBQUFDQmlid0FBQUFBQUFBQUFBQUNFM2tCQUFBQUFBQUFBQUFFSnZJQ0FBQUFBQUFBQUFBSVRPUUZBQUFBQUFBQUFBQVFtTWdMQUFBQUFBQUFBQUFnTUpFWEFBQUFBQUFBQUFCQVlDSXZBQUFBQUFBQUFBQ0F3RVJlQUFBQUFBQUFBQUFBZ1ltOEFBQUFBQUFBQUFBQUFoTjVBUUFBQUFBQUFBQUFCQ2J5QWdBQUFBQUFBQUFBQ0V6a0JRQUFBQUFBQUFBQUVKaklDd0FBQUFBQUFBQUFJRENSRndBQUFBQUFBQUFBUUdBaUx3QUFBQUFBQUFBQWdNQkVYZ0FBQUFBQUFBQUFBSUdKdkFBQUFBQUFBQUFBQUFJVGVRRUFBQUFBQUFBQUFBUW04Z0lBQUFBQUFBQUFBQWhNNUFVQUFBQUFBQUFBQUJDWXlBc0FBQUFBQUFBQUFDQXdrUmNBQUFBQUFBQUFBRUJnSWk4QUFBQUFBQUFBQUlEQVJGNEFBQUFBQUFBQUFBQ0JpYndBQUFBQUFBQUFBQUFDRTNrQkFBQUFBQUFBQUFBRUp2SUNBQUFBQUFBQUFBQUlUT1FGQUFBQUFBQUFBQUFRbU1nTEFBQUFBQUFBQUFBZ01KRVhBQUFBQUFBQUFBQkFZQ0l2QUFBQUFBQUFBQUNBd0VSZUFBQUFBQUFBQUFBQWdZbThBQUFBQUFBQUFBQUFBaE41QVFBQUFBQUFBQUFBQkNieUFnQUFBQUFBQUFBQUNFemtCUUFBQUFBQUFBQUFFSmpJQ3dBQUFBQUFBQUFBSURDUkZ3QUFBQUFBQUFBQVFHQWlMd0FBQUFBQUFBQUFnTUJFWGdBQUFBQUFBQUFBQUlHSnZBQUFBQUFBQUFBQUFBSVRlUUVBQUFBQUFBQUFBQVFtOGdJQUFBQUFBQUFBQUFoTTVBVUFBQUFBQUFBQUFCQ1l5QXNBQUFBQUFBQUFBQ0F3a1JjQUFBQUFBQUFBQUVCZ0lpOEFBQUFBQUFBQUFJREFSRjRBQUFBQUFBQUFBQUNCaWJ3QUFBQUFBQUFBQUFBQ0Uza0JBQUFBQUFBQUFBQUVKdklDQUFBQUFBQUFBQUFJVE9RRkFBQUFBSHZrM1I4ZFBmNkh0N0tmbUFRQUFBQUF1eUh5QWdBQUFJQTlVT1RaNU5Sbjc1dGJYVjE5WXZIODBZR0pBQUFBQUxCVElpOEFBQUFBR0xFcThDb2YrYjMzcHI5YSs2VWZDTDBBQUFBQTJDbVJGd0FBQUFDTTBIcmdWWjdlTGI5VmhWN3pKZ1FBQUFEQWRvbThBQUFBQUdCRTdoSjRyVHNsOUFJQUFBQmd1MFJlQUFBQUFEQUNSWjVObDQrbGRPZkFhNTNRQ3dBQUFJQnR1V2QxZGRVVUFBQUFBR0FYMWdLdnZEd1R0LzdlSHo5Y1RVdS8rZlB0L3RwaWVXWjYvZUd5Q1FJQUFBQndOelo1QVFBQUFNQXVGSGsyU0hjSXZEWlJiZnpLRjg4Zm5USkZBQUFBQU81RzVBVUFBQUFBTzFUazJXejUrRUhhZnVDMXJncTlMaTJlUHpwdG1nQUFBQURjaWNnTEFBQUFBSGFneUxQNTh2RXZJL2lucWtDczJ1ZzFNRlVBQUFBQWJ1ZWUxZFZWVXdBQUFBQ0FMU3J5YkxKOExKVG44YTM4K1Q5K3VKcVdmdlBucmY3enovWDZ3emxUQmdBQUFHQWprUmNBQUFBQWJGR1JaOVcxaXZPcHZtWnhTN1laZVZYT2xXZTIxeDh1bXpnQUFBQUFGZGMxQWdBQUFNQVdGSGwyc256a2FSdUIxdzZkU3ZYMWpaT21EZ0FBQUVCRjVBVUFBQUFBbXlqeTdFejVlS004RTJQNmtWVkl0clI0L3VpMDZRTUFBQURndWtZQUFBQUF1SU1pejZwdFd2UGxPYkhUZjJNSDF6WGU2blN2UDV6M2FRQUFBQUIwbDhnTEFBQUFBRzZqeUxOcWk5WjgydVgxakNPSXZDcm55alBiNncrWGZUSUFBQUFBM2VPNlJnQUFBQUM0UlpGbko4dEhubllaZUkzUXFlcjFMSjQvT3VYVEFRQUFBT2dla1JjQUFBQUFiRkRrMlZ6NWVLTThFOEZlV2hXY1hWbzhmL1NrVHdrQUFBQ2dXMXpYQ0FBQUFBRHBvN2hycW53c3BCRnY3eHJSZFkyM090dnJEMmQ5YWdBQUFBRGRJUElDQUFBQW9QUFdybWVjVDN1d3ZXdVBJcS9LWW5sTzl2ckRKWjhnQUFBQVFMdTVyaEVBQUFDQVRndDhQZU5tWE44SUFBQUEwQkUyZVFFQUFBRFFTWHQxUGVPdDluQ1QxMGF1YndRQUFBQm9NWkVYQUFBQUFKMVQ1Tm1nZkZRYnZQWjhlOWVZSXE5S2RYM2pvTmNmWHZJSkF3QUFBTFNMeUFzQUFBQ0F6aWp5YkxKOHpKZm54TGgrNWhnanI4cEtlYzcwK3NNNW56WUFBQUJBZTRpOEFBQUFBT2lFSXM5bVVoMTRIUnpuengxejVMWHVRcXEzZWkzNzVBRUFBQUNhNzE0akFBQUFBS0R0aWp5ck5sdjlOSTA1OE5wSDFhYXlwY1h6UjAvNjlBRUFBQUNhenlZdkFBQUFBRnFyeUxQcFZHL3Y2dTNYYTlpblRWNGJuVTMxRlk2MmVnRUFBQUEwbEUxZUFBQUFBTFJTa1dkbnlzZXYwajRHWGtFOFc1NUxpK2VQenZoV0FBQUFBRFNUVFY0QUFBQUF0RXFFN1YwYkJkamt0Wkd0WGdBQUFBQU5aSk1YQUFBQUFLMVI1TmxzK2NpVDdWMTNZcXNYQUFBQVFBUFo1QVVBQUFCQTQwWGIzclZSc0UxZUc5bnFCUUFBQU5BUU5ua0JBQUFBMEdoRm5wMHBINzlLdG5kdGw2MWVBQUFBQUExaGt4Y0FBQUFBalJSNWU5ZEdnVGQ1YldTckZ3QUFBRUJnSWk4QUFBQUFHcVhJczhueU1WdWU3elRoOVRZazhxcXNsR2ZRNnc4WGZNc0FBQUFBWWhGNUFRQUFBTkFZUlo3TnBIcDcxOEdtdk9ZR1JWN3JMcFJudHRjZkx2bkdBUUFBQU1RZzhnSUFBQUFndkxYdFhmUGxPZEcwMTk3QXlLdFNiZldxcm0rYzgrMERBQUFBMkg4aUx3QUFBQUJDSy9Lc3VwcnhUSGttbXZqNkd4cDVyVnRNOVJXT2wzd1RBUUFBQVBhUHlBc0FBQUNBa0lvOG15NGYxU2FweDV2OFBob2VlYTA3bStyTlhzdSttUUFBQUFEakovSUNBQUFBSUpTMXF4blBsT2ZaTnJ5ZmxrUmVsZW9LeDlsZWZ6anZXd29BQUFBd1hpSXZBQUFBQU1JbzhteVE2dTFkRTIxNVR5Mkt2TlpkVEhYczVRcEhBQUFBZ0RFUmVRRUFBQUN3NzlweU5lUHR0RER5V3VjS1J3QUFBSUF4RVhrQkFBQUFzRy9hZGpYajdiUTQ4cXE0d2hFQUFBQmdERVJlQUFBQUFPeUxJczltVXgxNFRiVDVmYlk4OGxwWFhlRlliZlhLZmJNQkFBQUFSay9rQlFBQUFNQllGWGsyaytxckdYdGRlTDhkaWJ6V25VdDE3TFhrbXc0QUFBQXdPaUl2QUFBQUFNYWl5TE9wVk1kZEo3cjB2anNXZVZWVzFqN251VjUvdU95YkR3QUFBTEI3SWk4QUFBQUE5bFNSWjVPcHZwYngyUzYrL3c1R1h1dXVwSHFyMTd6L0JRQUFBQUM3SS9JQ0FBQUFZTThVZVRhYjZzQnJvcXN6NkhEa3RXNnhQTE85L2pEM1B3SUFBQUJnWjBSZUFBQUFBSXhja1dlRFZNZGRCN3MrQzVIWHh5NldaOURyRDVlTUFnQUFBR0I3UkY0QUFBQUFqRXlSWnpPcGpyc2VONDJheU9zVHpxWDZHc2Nsb3dBQUFBRFlHcEVYQUFBQUFMdFc1TmxVK1poUDRxNVBFSG5kMWtwNTVxclQ2dytYalFNQUFBRGc3a1JlQUFBQUFPellXdHgxcGp5blRPUDJSRjUzOVZIczFlc1B6eGdGQUFBQXdKMkp2QUFBQUFEWXRpTFBKbE1kZHoxckduY244dHFTSzZtK3duSGVLQUFBQUFBK1NlUUZBQUFBd0phdHhWMnphMmZDUkRZbjh0b1dzUmNBQUFEQWJZaThBQUFBQU5pVXVHdm5SRjQ3VXNWZWcxNS9tQnNGQUFBQWdNZ0xBQUFBZ0xzUWQrMmV5R3RYTHFaNnMxZHVGQUFBQUVDWGlid0FBQUFBK0FSeDEraUl2RVpDN0FVQUFBQjBtc2dMQUFBQWdJK0p1MFpQNURWU1lpOEFBQUNnazBSZUFBQUFBSWk3OXBESWEwK0l2UUFBQUlCT0VYa0JBQUFBZEppNGErK0p2UFpVRlh2TjlmckRCYU1BQUFBQTJremtCUUFBQU5CQjRxN3hFWG1OeFpWVWIvYWFOd29BQUFDZ2pVUmVBQUFBQUIxUzVObFVxc091UVJKM2pZWElhNnpFWGdBQUFFQXJpYndBQUFBQU9tQXQ3anBUbmxPbU1WNGlyMzFSeFY1ejVabnY5WWZMeGdFQUFBQTBuY2dMQUFBQW9NV0tQSnRKOWRZdWNkYytFWG50cTVWVXgxNXpZaThBQUFDZ3lVUmVBQUFBQUMyMEZuZWRLYy9qcHJHL1JGNGhWTEhYUXFxdmNsd3lEZ0FBQUtCcFJGNEFBQUFBTFZMazJTRFZjZGRCMDRoQjVCWE91VlJmNDVnYkJRQUFBTkFVSWk4QUFBQ0FoaXZ5YkxKOHpLYjZXa1p4VnpBaXI3QXVwdm9heHdXakFBQUFBS0lUZVFFQUFBQTBWSkZuVTZuZTJuV3lQQk1tRXBQSUs3d3JhLytQRm5yOTRiSnhBQUFBQUJHSnZBQUFBQUFhcHNpem1WUnY3anBoR3ZHSnZCcGpwVHp6cWQ3dXRXUWNBQUFBUUNRaUx3QUFBSUNHS1BKc2tPcU5RNjVrYkJDUlZ5T2RLODk4cnovTWpRSUFBQUNJUU9RRkFBQUFFTmphbFl5RFZHL3VjaVZqQTRtOEdtMHgxWnU5NW8wQ0FBQUEyRThpTHdBQUFJQ0FYTW5ZSGlLdlZuQ1ZJd0FBQUxDdlJGNEFBQUFBUVJSNU5wbHVidTF5SldOTGlMeGE1MEtxcjNKY01Bb0FBQUJnWEVSZUFBQUFBUHVzeUxQcFZJZGRKNU1yR1Z2bjJ1Ly9JaTFmLzErRGFKOHI1WmxMZGZDMWJCd0FBQURBWGhKNUFRQUFBT3lUSXM4R3FZNjdlcWJSUHRkdlBKQmVmUE56NmNmLytkL3BHNE8vVFk4Ky9MNmh0TmU1Vk1kZXVWRUFBQUFBZTBIa0JRQUFBREJHUlo1TnBUcnNHaVJidTFycjNkOCtsTDd4OHUvVFcyOWYvUGpYbmpsOU1nMys3bi9TL2ZmZE1LRDJzdDBMQUFBQTJCTWlMd0FBQUlBOVZ1VFpaS3F2WXJTMXF3TmVldWRJK3Nmdi9OdHRmKytKWTQrbHA3L3ltWFQ0d0RXRGFqL2J2UUFBQUlDUkVYa0JBQUFBN0pFaXo2WlRIWFpWZ1pldFhTMzN3Y3FENlovT3JhYlgzM2h6MHovN3JlZWVTc2UvZU5WV3IyNnczUXNBQUFEWU5aRVhBQUFBd0FpdGJlMGFyQjFidXpyaXRWOThJYjN3OHMvUzVjdnZiZm52Mk9yVlNSZFNIWHN0R0FVQUFBQ3dIU0l2QUFBQWdCRW84cXphMWxXZFU2YlJIZFgycmhkZS8xUjY1ZFdkTnp1MmVuVlN0ZDJyK3RMTTlmckRKZU1BQUFBQU5pUHlBZ0FBQU5paElzK20wczNyR0ErYVNMZTg5TTZSZFBhSFA5L1c5cTQ3c2RXcjB4WlRmWjNqZ3VzY0FRQUFnRHNSZVFFQUFBQnNnK3NZZWZlM0Q2WG5mL1JoZXYyTk4wZitiOXZxMVhublVoMTd1YzRSQUFBQStIOUVYZ0FBQUFCYlVPVFpJTlVidTA2WVJqZGR2L0ZBK3Y3Rmg5STN2L2ZhbnY2Y1E0Y09wMjgvL1RmcFM1KzlZdWpkdFZLZStlcjArc05MeGdFQUFBQ0l2QUFBQUFEdW9NaXptVlJ2N0tyaXJna1Q2YTZmWGo2VVh2enh0ZlRXMnhmSDlqTy8vclhqNmZUTUg5S0JUMS8zQVhSYlZmdXRYK2U0WkJ3QUFBRFFUU0l2QUFBQWdBMktQSnRPTjhPdWd5YlNiUitzUEpqTy90ZGZwcm1YL21OZmZuNjExZXYwazlQcDcvLzZzZytEeW1LNnVlRnIyVGdBQUFDZ08wUmVBQUFBUU9jVmVUYVY2ckNyT3NJdVB2TFNPMGZTMlIvK1BGMisvTjYrdjVZbmpqMldudjdLWjlMaEE5ZDhNS3k3VUo2RlZHLzRFbndCQUFCQXk0bThBQUFBZ0U1YUM3dXFiVjJEOHZSTWhIVy92UHI1OVB6NVg0LzFhc2F0ZXViMHlmVFZSMzduQ2tkdUpmZ0NBQUNBbGhONUFRQUFBSjBoN09KdXFxc1pYM2o5VSttVlZ4ZkN2OWJ2L3ZOVDZjdEhycWI3Nzd2aGcrTldWZkJWWGVlNFlCUUFBQURRSGlJdkFBQUFvTldFWFd6bStvMEgwdmN2UHBTKytiM1hHdlc2cXlzY256ejJZSHIwNGZkOWlOek9TbHJiN2xXZTNJWXZBQUFBYURhUkZ3QUFBTkE2d2k2MjZyVmZmQ0c5OFBMUDB1WEw3elgyUFh6OWE4ZlRQenl5bWc0ZnVPWUQ1VzVjNlFnQUFBQU5KdklDQUFBQVdxSElzK255TVpPRVhXekJMNjkrUGoxLy90ZnByYmN2dHVZOVBYUDZaUHJxSTc5TEJ6NTkzUWZNWmdSZkFBQUEwREFpTHdBQUFLQ3gxc0t1UWFxM2RoMDBFVFpUeFYydi9PUlA2WlZYRjFyN0hyLzEzRlBwK0JldnB2dnZ1K0VEWnl1cTBuRTkrRm95RGdBQUFJaEo1QVVBQUFBMFNwRm5WZEMxZmlaTWhLMzRZT1hCOUsvNVJQcnUzTDkzNHYwZU9uUTRuWDV5T24zNWlOaUxiVmxNTjRPdlM4WUJBQUFBY1lpOEFBQUFnTkNLUEp0TU42T3VtU1RzWWh1dTMzZ2d2ZmptNXpvVGQ5M3FpV09QcFNlUFBaZ2VmZmo5LzJQdmJvQ3J1czk3VWI5MkVFaUFaQ1B4TGVsZ2pDU0luVmhLYkxBNXFRMGhKamdOeGRqR1BZeGRhRk5QcnBPWk0yT243WjNlenZFazUyYlNTVTk3MHFhVDZianBxY2U5SlVsSmpUOUt5ZGdVQndUdTFBbGdMTks0d1VnR3VYeC9HaERtd3dyeDFSTElDSXd4a3ZhVzl0N3JlV1lXMHBhYjZmNy8xcktOWi85NFh3OERQZlZtbkMxOE5kWXYzdlNjT0FBQUFHQmdLWGtCQUFBQU9lZmNHc2FaY1hZVlk3MUU2S21rM1BXRG4xYkZYeTVaSHkwdHphblBROW1MUGpyYWNUWEcrU2xmUjBRQ0FBQUEvVXZKQ3dBQUFNZ0o1OVl3em95ekU3c21TSVRlVU82NnZLVHM5WC85Um1uVWx1OFdCbjFoclNNQUFBRDBNeVV2QUFBQVlFQzBOMDY3THM2dllMeGJJdlNGY2xmUExGbzROK2JkK3E2eUY1bVFySFZzalBPckhVMzVBZ0FBZ0N4UThnSUFBQUQ2aldsZFpKcHlWOThvZTVFRmErTjg0Y3VVTHdBQUFNZ1FKUzhBQUFBZ2E5b2JwelhFK1ZMWERJbVFLY3BkbWFYc1JaWWNqWE9GcnppNzJ0R1VMd0FBQU9nbEpTOEFBQUFnWTg2dFlKelo3VEt0aTR4Uzdzb3VaUyt5YkhPY0wzdzFpZ01BQUFDdW5KSVhBQUFBMEd2dGpkT3VqUXRMWGZWU0lSdVV1L3BYVXZiNjFNY0d4MjNWMjRWQk5sbnRDQUFBQUZkSXlRc0FBQURva2ZiR2FUUGpmS25MQ2theVNybHJZTTJlZFVmY04ydWtzaGY5SVZudDJOaDFLWDBCQUFEQWhaUzhBQUFBZ010UzZtSWc3RG82TXY2MjhacjQ0WXBYbEx0eWdMSVhBK0ROdUxEMDFTb1NBQUFBMGt6SkN3QUFBTGlBVWhjRHFhdmM5Y2ZmWGlxTUhGUlRVeHRmdUs4aFBsTzNJNG9IblJZSS9VbnBDd0FBZ0ZSVDhnSUFBSUNVVStvaUYyemNNVEdlK0pkMzRvbnZQU2VNUE5CVjlwbytjVitVbDdRSmhJR1FsTDZTbFk2TlliMGpBQUFBS2FEa0JRQUFBQ25TM2pqdDJqaGY2R29JcFM0RzJQSi9yNHZuMTcrdDNKWEhmdS9MOThYYytnUEtYZ3kwbzNGKzBsZFQvZUpOalNJQkFBQ2drQ2g1QVFBQVFBRnJiNXgyWFZ4WTZxcVhDZ090N2ZUUVdMTzFLdjdQOHAyeDhzVzFBaWtRaXhiT2pYbTN2aHUxNWJ1RlFhNUkvZ0hUR09jbWZ0VXYzblJFSkFBQUFPUXJKUzhBQUFBb0lOMVdMemFjKzNxTlZNZ1Z1NDZPakJXYnkrTXZsNnlQbHBabWdSU28yYlB1aVB0bWpZemJxcmNMZzF5ek9jNnZlR3l5NGhFQUFJQjhvdVFGQUFBQWVhcmJsSzZ1UXBjcFhlU2tqVHNteG84MlhSMS8vTzJsd2tpUm1wcmErTUo5RGZHWnVoMVJQT2kwUU1oRnlZckhydEpYY2pXWjlnVUFBRUN1VXZJQ0FBQ0FQTkRlT08zYU9GL21tbm51ZTFPNnlHbkwvNzB1bmwvL2Rqenh2ZWVFa1hLLzkrWDc0ak0zdGtWbDZRRmhrT3ZlalBNckhwUFNWNk5JQUFBQXlBVktYZ0FBQUpDRExscTdtRndUcEVJK2FEczlOSDd3MDZwWThkTE9XUG5pV29Gd2dVVUw1OGFuUGpiWUtrZnlUYkxtc1RIT0Y3K3NlUVFBQUtEZktYa0JBQURBQUR0WDZHcm9kbG03U042eGtwR2VtRDNyanBnNWRVeE1uN2d2eWt2YUJFSStTbHFzVGFINEJRQUFRRDlSOGdJQUFJQitjdEhLUlJPNktBakpTc2FsYXc3RnNtZGZFQWE5a3F4eW5GNTNLbXJMZHd1RGZOZTkrTlZxMVNNQUFBQ1pwT1FGQUFBQVdkRGVPTzI2T0Yva210bHhKYThWdWlnSXU0Nk9qQi8rZEVUODdWTWJvcVdsV1NCa1JETGQ2NzVaSTZOaDNPNG9IblJhSUJTS1pOVmpaK2tyenExOHJGKzg2WWhZQUFBQTZDa2xMd0FBQU9pamJ1c1dyenYzZFlaVUtFUnJXbXJpSDllZWpDZSs5NXd3eUpxYW10cVlOL3VtK015TmJWRlpla0FnRktJM28xdnBLODVPL2JMdUVRQUFnTXRTOGdJQUFJQXIxTjQ0cldzeTEzVmhPaGNwa1V6dFdyRzVQRmE4dEROV3ZyaFdJUFNyZStmTmljOU9HeGEzVlc4WEJtbHc4ZFN2cFB6VktoWUFBQUFTU2w0QUFBQndrWE5scnV2aS9MckY1UHQ2eVpBbXlkU3U1emYrTXI3OTNhZUV3WUJMcG5zdC9JMkdtRDdwcU9sZXBGSFNzRzBONVM4QUFJQlVVL0lDQUFBZ3RjNnRXYnd1VE9hQ1RxWjJrUSs2cG5zMWpOc2R4WU5PQzRRMDYxNytzdllSQUFDZ3dDbDVBUUFBVU5ET1RlVzZOczZXdUpLdlhkTzVycEVPbkxYODMrdmkrZlZ2eHhQZmUwNFk1STFrdXRlODJUZkZaMjVzTTkwTExwU3NmVHdTWjZkK0pWK1Q0bGRUL2VKTlIwUURBQUNRdjVTOEFBQUF5SHZ0amRPdWkvUHJGYnNYdXF4WWhBL3crb0hLK05HclErTnZuOW9RTFMzTkFpR3ZKZE85Ym04b2kra1RkcGp1QlplWFRQL3FLbjYxbnJzVXdBQUFBUEtBa2hjQUFBQjU0UU1tY2lseVFRKzBuUjRhYTdaV3hkSTFoMkxac3k4SWhJTDBlMSsrTHhvbW5vbWJ4cndwRE9pWjdnV3c5NHBnOVlzM3RZb0dBQUJnNENsNUFRQUFrQk82VGVQcXVycEtYRllyUWgrdGFhbUpkYSs5RzMvODdhWENJRFZtejdvamJxMGZFN01tNzR2eWtqYUJRTjhrcmNuV3VMQUExdm5WRkRBQUFJRCtvZVFGQUFCQXYyaHZuRGJ6M0xmZHkxdkoxK3M2cmdrU2dzemFkWFJrL1BDbkkyTE5obDJ4OHNXMUFpSFZrbldPbjUwMkxCckc3YmJPRWJKamMxeFkvbXJ0dWt3Q0F3QUF5QXdsTHdBQUFQcXNXNEhydW5OWFY0a3JNVU5DMEQrU2RZei8vTFBxV1BIeVFlc1ljMHhOVFcwODl2QzArSjMvKy92Q0dHRFdPY0tBT0JwbkMyQ0p4bk5mM3l1RUtZSUJBQUI4T0NVdkFBQUFQbEI3NDdTdWFWdmRTMXZkZjFZdkpSaDR5VHJHNXpmK01yNzkzYWVFa1lPU2d0Y3ozN3d4Mms0VnhhY1d1VWU1ZEY4Vy9rWkRUSjkwTkNwTER3Z0Vja1BYNk1tdUFsalhkTERPbjFrTkNRQUFwSm1TRndBQVFNcTBOMDY3THM1TzIwcDBGYllTTTg5OVZkNkNQTEJ4eDhUNDBhYXI0NGNyWG9tV2xtYUI1S2l1Z3RlVVVUdGl3NDdybGJ4eTFPeFpkOFN2LzlxWXFCKy9MOHBMMmdRQ3VhK3JETmE5Qk5aNjdrb29oQUVBQUFWSHlRc0FBQ0RQZFZ1Vm1PaGUycm91enBlNWtxOFRwQVg1N2ZVRGxmR2pWNGZHbWcyN1l1V0xhd1dTNHhiY2MxZDg5MHNubzNUSThjN1hTbDc1NGQ1NWMrS3owNFpGdzdqZFVUem90RUFnLzIyT3MyV3dSRk8zNzF2amZDbnNTUDNpVFUyaUFnQUFjcG1TRndBQVFBNjRxS2lWdU56cjYwSmhDMUpqMTlHUnNYWnJSYXg0K1dBc2UvWUZnZVNKaXd0ZUNTV3YvUE9sTDh5UGhrbFh4MjNWMjRVQjZkSzlHTlo5V2xpaU5jNlh3enBmMXkvZTFDb3lBQUFnMjVTOEFBQUFNdWpjS3NUZnVlakgzYWRyUlZpSENIeUl0dE5EWTgzV3FsaTY1cEJpVng1NjVPSDc0NnYzN3IrZzRKVlE4c3BmeWRyTmViTnZpb2FKWitLbU1XOEtCTGljbzNGaEtTelJHaGNXdzZKKzhhYi9LU29BQUtBbkJva0FBQUFnbzY3cnVMNG1CcUNudW9wZC8vcmFPL0h0N3lvQzVhdkhIbDBZWDUzZkxJZ0MwOUxTSEgvZWN2YStkaFcrcHRlZGl0cnkzY0lCTG5aTnh6WGpvcC9OdU1ULzNmOFVGUUFBMEJOS1hnQUFBSmwxblFpQUs2WFlWVmkrOC9VSDQrRTd0Z2lpd0hVdmZNMmVkVWZjV2o4bXBrODZHcFdsQjRRREFBQUFaSTJTRndBQVFHWmRKd0xndzZ4cHFZbDFyNzBiUDF6eFNyUzByQlZJQVZqMm5RZGozc2NWdk5KbTFlcDFIZGZaN3hXK0FBQUFnR3hTOGdJQUFBRG9CeGNXdS81QklBVWlXZDMzekRkdmpDbWpGTHpTVHVFTDZJbk5mLy9KaHZyRm01b2tBUUFBWENrbEx3QUFBSUFzVWV3cWJBdnV1U3UrK2tCeFRCbTFReGhjUU9FTHVBTFhpZ0FBQU9nSkpTOEFBQUNBREZMc1NvZUhGczJQUC8ydHQ2SjBpTklPbDZmd0JRQUFBR1NDa2hjQUFFQm0rUlA1a0RKdHA0ZkdtcTFWOGErdnZSUGYvdTVUSFQvWklKUUM5OWlqQytPcjg1c0ZRWThwZkFFQUFBQzlwZVFGQUFDUVdRMGlnTUwzL21JWGFiSHNPdy9Hdkk5dkVRUjlkbkhoNitPVFIwWER4RE54MDVnM2hRTUFBQUM4ajVJWEFBQUF3QlhZZFhSa3JOMWFFVTF2bkZic1NxR2FtdHA0NXBzM3hwUlJDbDVrWHZmQ1YvS3N6WnQ5azhJWEFBQUFjQUVsTHdBQUFJQVAwRlhzV3ZIeXdWajI3UE1DU2FrRjk5d1YzLzNTeVNnZHNrTVlaRjFMUzNQOGVjdjVkYUJmK3NMOGFKaDBkVFNNMngzRmcwNExDQXBITWdHNFVRd0FBTUNWVXZJQ0FBQUE2T2IxQTVYeG8xZUh4cG9OdTJMbGk0cGRhZmZZb3d2anEvT2JCY0dBK2Vzbm4zdnYrNlR3TmJtNktPckg3NHZ5a2piaFFINjdWZ1FBQUVCUEtIa0JBQUFBcWJlbXBTYld2Zlp1YlB6NW5sajU0bk1Db2RPeTd6d1k4ejV1UFNPNW8zdmg2OTU1YytMbWo1WkZRL1hScUN3OUlCd0FBQUFvY0VwZUFBQUFRT3EwblI0YWE3Wld4YisrOWs2cytIRlR0TFQ4ZzFCNHo1dzdaOFNmUFR3aXBveFM4Q0ozUGJOOFpjZDE5dnZacys2SVcrdkhSTjI0OXJocHpKdkNBUUFBZ0FLazVBVUFBQUNrUXJLRzhaWFc0YkhpNVlPeDdOa1hCTUlsUGJSb2Z2enBiNzBWcFVOMkNJTzhzV3IxdW83cjdQYzFOYlZ4NSswM1JzT2txNk5oM080b0huUmFRQUFBQUZBQWxMd0FBQUF5NnpvUlFPNUkxakMrdXUycVdMTmhseldNZktqdmZQM0JlUGdPMDd2SWJ5MHR6WjFYbDBVTDU4WW42MHFpZnZ5K0tDOXBFeEFBQUFEa0tTVXZBQUNBekpvZ0FoZzQxakRTRzhua28vL3ZhdzB4dFZyQmk4S3paT21LV0hMdWUyc2RBUUFBSUg4cGVRRUFBQUI1TFZuRDJQaUxZYkcyNlpBMWpQVFkrZldNMjRSQndmdWd0WTUxSXcrYThnVUFBQUE1VHNrTEFBQUF5Q3ZKdEs2Tk84Ykh1dGZlalkwLzMyTU5JNzFtUFNOcGR2RmF4M3ZuelltYlAxb1dEZFZIbzdMMGdJQUFBQUFneHloNUFRQUFBRGt2bWRiMVN1dndlT2xueCtPSjd5bDEwVGZXTThMN1BiTjhaY2QxL3UrUmViTnZpcnJLZDZOaDNPNG9IblJhUUFBQUFEREFsTHdBQUFDQW5HTmFGOWxpUFNOOHVHVEMxNStiOGdYWk5sTUVBQUJBVHloNUFRQUFBRG5CdEM2eTdlLys3TUY0WUtycFhkQlRwbndCQUFEQXdGUHlBZ0FBQUFaRU1xMXJ6ZGFxZUhYYkdkTzZ5S29GOTl3VlgzMmdPS2FNVXZDQ3ZyclVsSzhiSnBWRi9YODVFYlhsdXdVRUFBQUFXYUxrQlFBQUFQU2JqVHNteGl2YmkySnQwNkZZOXV3TEFpSHIvdVNQSG9ndnp0d1ZwVU9zbUlOczZKenlkZTc3Wk1yWG5iZmZHSk9yaTZKKy9MNG9MMmtURUFBQUFHU0lraGNBQUFDUU5idU9qb3kxV3l1aTZZM1RzZUxIVGRIUzhvOUNvVjhrWlpPLytzTmI0dE8xcndzRCtra3k1YXVsMjVTdjJiUHVpSTlQSGhVTkU4OUVYY1ZlcXgwQkFBQ2dENVM4QUFBQWdJeEpWakJ1M0RFKzFyMzI3cmtWak04TGhYNzN5TVAzeDFmdjNSK2xRN1lLQXdiUXF0WHJPcTd6cjVQVmpqZC90Q3pxeGxydENBQUFBRDJsNUFVQUFBRDBpUldNNUlwa2V0ZGpEMCtMQjZadUVRYmtvTTdWanN2UC8vM2F0ZHF4YnZUUnFDeTFVaFVBQUFBdVI4a0xBQUFBNkpIWEQxVEdLNjNETzFjd2Z2dTdUM1g4WklOUUdIQVBMWm9majkxL01pckxGTHdnSDN6UWFzZTZ5bmVqYnVUQktDOXBFeElBQUFCMG8rUUZBQUFBWE5hdW95UGpsZjhzajM5OTdaMVk4ZU9tYUdsUjZpSzMvTjJmUFdoNkYrUzVTNjEydkdGU1dkU05hNCs2aXIxUlBPaTBrQUFBQUVnMUpTOEFBQURnQWwybHJsZTNuWW1OUDk4VEsxOThYaWprcEFYMzNCVmZmYUE0cG94UzhJSkMwN25hc2R2cnBQUjE4MGZMb203c2lhZ3QzeTBnQUFBQVVrZkpDd0FBQUZLdTdmVFEyTGhqZkx5Njdhcll1T1Z3TEh0V3FZdmM5NTJ2UHhnUDM2SGNCV25SV2ZwYWZ2NzFvb1Z6WThxRUVxVXZBQUFBVWtQSkN3QUFBRkxtL2FXdUY0UkMzakM5QzBnc1dicmlndGRKNmV1VGRTVlJOL3BvVkpZZUVCQUFBQUFGUjhrTEFBQUFDcHhTRjRXZ3BxWTJIbGs4emZRdTRKS1MwdGVTYnYrOHVQUDJHMk55ZFpIU0Z3QUFBQVZEeVFzQUFBQUtqRklYaGVhaFJmUGpzZnRQUm1XWmdoZnc0VnBhbWp1dkxrcGZBQUFBRkFJbEx3QUFBTWh6U2wwVXFxU1k4ZGpEMCtLQnFjcGRRTzhwZlFFQUFGQUlsTHdBQUFBZ3p5aDFrUWFQUEh4L1BQcjVZNlozQVJsM2Nla3JzV2poM0pneW9TVHF4cDZJMnZMZFFnSUFBQ0RuS0hrQkFBQkFqdHQxZEdTODhwL2wwYkxuWGFVdUN0NmNPMmZFNy8yMzhmSHAycTNDQVByTmtxVXJMbml0OUFVQUFFQ3VVZklDQUFDQUhOTlY2bnAxMjVuWStQTTlzZkxGNTRWQ0t2ekpIejBRWDV5NUswcUhLSGdCQSt2aTB0ZTk4K2JFRFpQS29tNWNlOVJWN0kzaVFhZUZCQUFBUUw5UzhnSUFBSUFCOXZxQnluaWxkWGcwdlhFNlZ2eTRLVnBhTmdpRlZGbHd6MTN4MVFlS1k4cW8xNFVCNUtSbmxxK01aN3E5VGtwZjExVU9qN3JLZDZOdTVNRW9MMmtURWdBQUFGbWw1QVVBQUFEOWJPT09pZkhLOXFKb2FuNDdudmplY3gwL1Vlb2luV3BxYXVPeGg2ZkZBMU8zQ0FQSUswbnBxN3Zacys2SVNSUEtZM0oxVWRTTlBocVZwUWVFQkFBQVFFWXBlUUVBQUVBV0phc1h0eDY0Tmw3ZGRsVnMzSEk0bGozN1FpaDFRY1FqRDk4Zlg3MTNmNVFPVWZBQzh0K3ExZXRpVmJmWFNZbDEraTJUWThxRWtxZ2JleUpxeTNjTENRQUFnRDVSOGdJQUFJQU02bHE5Mkx6N2w3SHg1M3RpNVl2UEN3VzZtWFBualBqcWI0K09xZFhiaEFFVXJKYVc1czZydTJURjR3MlR5cUp1WEh0VWxSMjI0aEVBQUlBZVVmSUNBQUNBWG1vN1BUUmUzei9HNmtXNEFzbFVtMGNXVDR1SDcwZ21keDBYQ0pBNnlZckhaN3E5dHVJUkFBQ0FubER5QWdBQWdDdVVUT2w2ZmUrd2VIWGJtWGo5elNQblZpOENIK2F4UnhmR1Z6NjN4MnJHQXZmM2Z6by92djQzcjcxdmVoRndhUmV2ZUV3c1dqaTNjOFZqZFVWNzFGWHNqZUpCcHdVRkFBQkFKeVV2QUFBQXVJU0xwM1N0L1VsU1hEQ2xDM3Bpd1QxM3hWZnVMWTJwMVVvL2FWQS9abnY4NVZldWl5ZFdYdDg1c1Fqb3VTVkxWMXp3T3BuMjlmSEpvNko2MU5XbWZSV2VSaEVBQUFBOW9lUUZBQUFBY1haSzF5dXR3Nk41OXk5TjZZSStTbFl6L3NrajAyTGV4NVBKWFFvSmFWSTFmSC84NGQzRk1hWmlmanorNUhNQ2dUN3FuUGExK3NLZkpkTytKb3dyaWJweDdWRlZkampLUzlvRUJRQUFrQUpLWGdBQUFLVE9ycU1qWSt1QmEyUHI3cXM3cDNROThiMmtpR0JLRjJUQ2Q3NytZRHh3NjA2ckdWT3NlTkNwK05MTTdWRlh2U0MrOHZWbEFvRU11OVMwcjBrVHlxTjZkRkhValQwUnRlVzdoUVFBQUZDQWxMd0FBQUFvZUJ0M1RPeGN1L2pHN25maUYyL3NqNVV2UGk4VXlMQkhIcjQvSHYzOHNhZ3NVKzdpckZtVG11TkhmelU3dnYzMDZjNXBSRUIyZEU3N3V1aG45ODZiRTlkVkRvKzZ5bmVqK3RyajFqd0NBQUFVQUNVdkFBQUFDa3BTNk5xNmQvQkZheGRONllKc2VXalIvUGpkenhiRjFPcHR3dUI5a3ZXTjMzaXdPRzZhZkY5ODYvR25CUUw5NUpubEs5LzNNMnNlQVFBQThwdVNGd0FBUUdadDdyanF4ZEEvWGo5UUdhL3ZIUll0ZTk2TjVoMG5yRjJFZmpUbnpobnh4YnVyWXQ3SFRlN2k4cEwxall0dmE0bjZpZlBqNjMveldyUzBOQXNGQnNERmF4NXJhbXBqK2kyVFk4cUVrcWl1YUkrNmlyMGRmNytlRmhRQUFFQ09VdklDQUFESXJDTWl5STVkUjBmR0svOVpydEFGQXl3cEJUeXllRm84ZkVkUzdsTHc0c3JWajlrZTMvK2o4dmk3ZjUwZmp6LzVuRUJnZ0NXRnk0dExsN05uM1JHVEpwUkg5ZWlpcUJ0N0lxckxEaWwrQVFBQTVBZ2xMd0FBQUhKT1V1amFldURhMkxyNzZtaHFmanZXL2lTWi9LTFFCUVB0TzE5L01CNjRkV2VVRGxIdW9uZVNxVjVmbXJrOTZxb1h4Ri85WUxPcFhwQmpWcTFlRjZzdStwbmlGd0FBUUc1UThnSUFBR0JBZGExYzNQTldLSFJCam5yczBZWHgwS3kzb3JKTXVZdk1tRFdwT2Y2cnFWNlFGeFMvQUFBQWNvT1NGd0FBQVAybXE5Qmw1U0xraDRjV3pZL0g3ajhabFdXbUxaRjVYVk85cG45MGZuejliMTR6MVF2eXlJY1Z2Nm9yMnFPcTdIQ1VsN1FKQ3dBQUlFT1V2QUFBQU1pS2pUc214dGE5ZzZONTl5OWo3OEZUQ2wyUVI1SnkxKzkrdGlpbVZtOFRCbGxYUDJaN2ZQK1B5dU9mZjM1L2ZPTXZuaElJNUtsTEZiOXFhbXBqK2kyVFk4cUVrcWdvUFJQVjF4NlB5dElEd2dJQUFPZ0ZKUzhBQUFENlpOZlJrYkhuV0dtOHNyMG8zdGo5VHZ6aWpmMng4c1cxb2RBRitVZTVpNEdTVFBXNnYyRnJUUCtyMmJIMHBTR3haT2tLb1VBQlNDYjBYV3BLMzZLRmMyUFVpQ0ZSUGVycXFCcVIybldQVFo0UUFBQ2dKNVM4QUFBQTZKVS8vNWZhK0grKytRTkJRQUdZYytlTStPTGRWVEh2NDF1RXdZQ3FHcjQvL3VCekVaLzYyTDN4di8vdTM2MXdoQUoxcVNKbnN1N3h2bGtqNDdicTdXbUo0WWduQVFBQTZJbXJSUUFBQUVCdk5PODRJUVRJYzBtNWE5bDNIb3gvZnV5NGdoYzVaWHIxRzUwckhQLzREKzhYQnFSRXN1N3hVTnRIQkFFQUFQQUJUUElDQUFESXJHVHR5Z3d4QUxuc3dzbGR5bDNrcG1TRjQ5d2J0c2Iwdjc0OW52cHBSVHorNUhOQ0FRQUFBRkpMeVFzQUFDQ3pyRjBCY3BaeUYvbW9vdVJZZkdubXNmaE0vZWZqbjM1eTFTWFh2QUVBQUFBVU9pVXZBQUFBZ0FLbjNFVWhxQjJ4TS83Z2N4R2YrdGk5OGZUcWc1MnIzWURDVWpmV09uQUFBSUFQb3VRRkFBQUFVS0NVdXloRTA2dmZpT20vSGZIeUxHVXZBQUFBSUQyVXZBQUFBQUFLekVPTDVzZnZmcllvcGxadkMrVXVDbFZTOXZyRWc4VXhjK3I5OGVUVFRkSFMwaXdVSUo5WTh3NEFBUFNJa2hjQUFBQkFnYml3M0FXRnIzalFxWmg3dzlhNHM2NDhYdHlxN0FYa2ovckZtNXFrQUFBQTlJU1NGd0FBQUwzU1VEdE1DSkFqSG50MFlYenU1alBLWGFTV3NoY0FBQUJRNkpTOEFBQUFNc3VmeUFmNlRWTHVlbWpXVzFGWnBzd0NpWXZMWG8wYjlzV3ExZXNFQXdBQUFPUTlKUzhBQUlETU9pSUNJSnRxYW1yamtjWFQ0b0ZiZDBicEVPVXV1SlN1c3RmY0d5SmVublZ2UEwzNm9MSVhBQUFBa05lVXZBQUFBQUR5d0p3N1o4UVg3NjZLVDljbDVhNHRBb0VyTkwzNmpaaisyMmZMWHYreS91MTRadmxLb1FBQUFBQjVSOGtMQUFBQUlJYzl0R2grZkc3YXNKajM4YVRZcGR3RnZkVlo5cXFPZUdEVzUrT2ZmbkpWTEZtNlFpakFRRGtxQWdBQW9LZVV2QUFBQUFCeTBHT1BMb3pmL05TcG1ESnFoekFnZzJwSDdJdy8rRnpFd3R0bngrcWZsOFczSG45YUtKQWpxc3NPcGVXb1RlNDJBQURRVTBwZUFBQUFBRG1pcHFZMkhsazhMZVkySEl6S3NtYUJRQlpWRGQ4ZmkyL2JINSt2dnoxZTNqNDJubnk2S1ZwYS9IMEhBNmw0MEdraEFBQUFmQUFsTHdBQWdBd3Ftcm0rc2IxeG1pQ0FIbGx3ejEyeGNGYUZsWXd3QUNwS2pzWGNHNUpyYUx5ODQ5NzRsL1Z2eHpQTFZ3b0dBQUFBeUNsS1hnQUFBUFJLM2ZoZkNRSDZLRm5KK0xtYno4VFU2bTBkcnc0SUJBYlk5T28zT3E2SUIyWjlQbDUrdmRncVJ3QUFBQ0JuS0hrQkFBRFFLNlZEemdnQmVtSE9uVE5pN2gxVjhjQ3RPenYrUHJJYURuSlI3WWlkVVh0YnhHL2VjbXU4dVBXL1JPT0dmYkZxOVRyQkFBQUFBQU5HeVFzQUFBQ2dIenp5OFAzeDY3Y01pay9YYmcwckdTRS9GQTg2RlhOdjJOcHhSV3krYTM2OC9JdUl4NTk4VGpCQVh6V0tBQUFBNkNrbEx3QUFBSUFzNlpyYU5iZmhZRlNXYlJNSTVMSDZNZHM3cm9qN2I3MDlYdDQrMW5RdkFBQUFvRjhwZVFFQUFHVGUybzVyaGhnZ3ZVenRnc0pWVVhJczV0NXd6SFF2eUxCNzU4M3ArSFcvSUFBQUFENkFraGNBQUFCQUJwamFCZW5UTmQzcmQzN3QxdmkzTjZ2anBhYTJlR2I1U3NGQUx3d2JXaVFFQUFDQXkxRHlBZ0FBb0ZkS2k5OFJBblI0N05HRjhibWJ6OFRVNnFUWVpXb1hwRkh4b0ZNeGExSnp4eFh4MEp6WjhYTEx0YkgwbjV1aXBhVlpPTUNsSEJFQkFBRFFVMHBlQUFBQTlNcmtVYnVFUUdvdHVPZXVXRGlySWo1ZHR6TktoeWh4QU9kVkRkOGY5emNrMTlEWXZNODZSK0NTbWtRQUFBRDBsSklYQUFCQTVyVjJYRFBFQUlVbFdjZjQ2YW1WOGQrbUg0cktzZ01kUHprZ0ZPQ3l1cTl6ZkhWUFpmekwrcmV0Y3dRQUFBQjZSY2tMQUFBZzgxcEZBSVdocHFZMkZzNjlPVzYvOGFyNGRPM1dqcCs4TGhTZ3g1SjFqdE9yMytpNEl2NzdyOThlbTNlUGlaZWEyaFMrQUFBQWdDdW01QVVBQUFCd2tVY2V2ajl1LzlqZ21QZnhMUjJ2ckdNRU1xZWk1RmpNbXBSY0VRL05tUjB2dDF3YlA5MjhMMWF0WGljY1VtM0N1QkloQUFBQVhJYVNGd0FBQUVDSEJmZmNGUXRuVmNTbjYzWkc2WkJ0QWdHeXJtcjQvcmkvSWJraWR0Nm44RVc2bFF4T3oxbnJGMjlxZE1jQkFJQ2VVdklDQUFESXZOYTBIRFFweFN4NzlnVjNuTHgraHVmKzE0cVlNZmxnVkpZZDZQakpBYUVBQTBMaEN3QUFBTGdjSlM4QUFJRE1hMDNMUWE4WlZ1eHVrM2NVdTRCY3AvQUZBQUFBWEV6SkN3QUFBQ2g0aWwxQXZsTDRBZ0FBQUJKS1hnQUFBRUJCVXV3Q0NrMzN3dGVoMzd3OU51OGVFeTgxdGNVenkxY0toN3hYVVhvbUxVZGQ2MjREQUFDOW9lUUZBQUNRZWEwaWdJSHh5TVAzeCswZkd4eWZydHNacFVNVXU0RENWVkZ5TEdaTlNxNkkvLzdydDhmV2c2Tmk4eHUvaXNlZmZFNDQ1T2N6UGV5MEVBQUFBQzVEeVFzQUFDRERpbWF1YjIxdm5KYUtzOVpXRDNYREdWQTFOYld4Y083TjBURHBJK2VLWGR1RUFxUk9VdmlhWHAxY0ViL3phN2ZHNjRmR3hlYnRINGwvV3ZXemFHbHBGaEFBQUFBVUFDVXZBQUFBZW0xWThWVkNvTi9OdVhOR2ZIcHFaZHgrUTN0TXJVNUtYUW9NQUYyS0I1MksrakhiTzY2SXhiY05qWjNIWjhmTExkZkdmN3h4ekZwSHlBMUhSQUFBQVBTR2toY0FBQUNROHg1YU5EOXV2MmxZekpoOE1DckxEbmI4NUhXaEFGeUJxdUg3NC82Ry9SRU5GNjUxWFBYU2E2Wjh3Y0JvRWdFQUFOQWJTbDRBQUFEWnNibmpxaGNEOUU0eXJXdnF4OGJGN1RkZUZiZjhsOTFST21TSFVBRDZxUHRheHkvTkhCck5iMzArbXQ0Y2Fzb1hPYUcyZkxjUUFBQUFMa1BKQ3dBQUlEdFNzWWFsdE1TNlJqTG5rWWZ2ajAvVURJNVBYdmQyVEJtVmxMcE1tQUhJcHRvUk96dXVNT1VMQUFBQThvQ1NGd0FBQUwxV04vWWRJZEJyQys2NUsyNlpVaDYzMzlBZVU2dTNkZnhrbTFBQUJzaWxwbnk5dm1kb3ZQSUxVNzRndzZ4ckJBQUFla1hKQ3dBQUlEdGFPNjRaWW9EejNyK0M4VURIVHc4SUJpQUhkVTM1bW50RHhCL2VmV3U4Zm1oY2JOMVRGRC9kdkM5V3JWNG5JT2k5SXlJQUFBQjZROGtMQUFBZ08xcEZRTnAxbGJvYUpuMGticDV3TUNyTERvWVZqQUQ1cDNqUXFhZ2ZzNzNqaXJpL0llTFFiNTVkN2RpODY2cjRwMVUvczlxUlBydDMzcHlPWC9jTEFnQUE0REtVdkFBQUFPaTEwbUxyR2psUHFRc2dIYnF2ZGx4ODI5RFllWHgyYk4xM1RXemQ4Y3RZOWRKclNsLzAyTENoUldrNnJrbGVBQUJBcnloNUFRQUEwR3VUUiswU1Fvb3R1T2V1dUdWS2VYemkrbmVqYnN4aHBTNkFsS29hdnIvem1qVXA0a3N6bGI3Z2N1b1hiMnFTQWdBQTBCdEtYZ0FBQU5uUjJIRjlUUXdVaXBxYTJwZ3gvY1pvcUIwV241ejRUa3dadlQ5S2h4em8rQ3NIaEFQQUJaUytBQUFBSVBPVXZBQUFBSUQzU2FaMFRabHdiZWZxeGJxeGI4ZVVVVHM2ZnJwRE1BRDBtTklYSDJiQ3VKSzBIUFdvdXcwQUFQU1draGNBQUFCOWtreDQ4dUZzZnB0ejU0eVlNbWwwMUZRTzdwelNOYlY2VzV5ZDBHVktGd0NaZDZuUzE0NjNTcU41MTFYeHM5Y1B4S3JWNjRTVU1pV0RVM05VcXhvQkFJQmVVL0lDQUFESWdxS1o2eHZiRzZlbDRxd3picnRSeVN1UFhGem9PcnQyOFhqSFh6a3VIQUFHUkZmcGEzcDF4NHZiSWc3OTV1Mng4MWhGYk4xVEZQL3h4ckY0WnZsS0lRRUFBSkI2U2w0QUFBQlFvTHBXTHRaVWZpUnF4eXAwQVpBZktrcU9kVjcxWXpwZU5FUjg3Yjc2YUg2cktsN2ZNelMydkhreVh0NzR1b0k1QUFBQXFhUGtCUUFBQUhrdW1jNVZOVzVFTk5RT2k0NHZVVGYyN1pneWFrZFl1UWhBb2FnZHNiUGppcGg3UThlTHoxMjQ0bkg3cnVPbWZlVzV1ckVuMG5MVVJuY2JBQURvTFNVdkFBQ0E3Rm5iY2MwbzlFUFdWZzkxcC92SnhXV3VjZGUrRTFPcnQ4WFp5VnltY3dHUUhoZXNlT3p3aDNmZkdqdmFSblpPKzlxNXZ6MVd2ZlNhYVY4QUFBQVVGQ1V2QUFBQSttUlk4VlZDeUxDSEZzMlA0VU9Mb3FaeXNESVhBRnlCNGtHbjNwdjJGVGRFZkdubTBEaDA4dmJZZWF3aXR1NHBpamYzbkl3bFMxY0lDZ0FBZ0x5bDVBVUFBQUFEb0h1UnE3UWtvbmJzT3pIK21tTlJXWGF3NDYvdUVCQUE5RkZGeWJIT3EzNU14NHVHaUQvNFhIM3NQRDdhbXNlY3ZGZHRhVGxxbzdzTkFBRDBscElYQUFCQTlqUkdDdFkxbHBhWTVIVXBDKzY1SzY0WlhoeTFWVU5qV0VkR2RlTitGY09MZnhsVFJ1K1AwaUhKTkM1RkxnRG9ieGV2ZWZ6YWZmWFIvRlpWN0RoY0Vqc1B2S3Y0TlVESzAxUHlBZ0FBNkRVbEx3QUFBUHFrYnV3N3FUdHpWNEZyWEVWeGpDbi95SHVUdUJKbjF5b21Ebmc0QUNBUHZMZm1jZExaMTRwZlpORVJFUUFBQUwybDVBVUFBSkE5UHNUSkkzUHVuQkZWNDBaMGZ0ODFmU3Z4eVlsbnkxdWx4ZTB4WlZUWDlDMEZMZ0FvWkpjcWZuV3RldHg1NkNQeDVwNlRzV1RwQ2tGbFFFMU5iV3JPV3I5NFU1TTdEZ0FBOUphU0Z3QUFRUGI0RUNlSFBMUm9malRVRG51dnRKVTR2em94Y2Z6Y0JRRHdmbDJySGlOWjlkZ1E4UWVmcTQ5REo4dGk1N0dLMkhHb0tMYThlVEwyN2o4V3ExYXZFMVlQVEw5bGNzZXZ1d1FCQUFEd0laUzhBQUFBNkpOYnFyZm54ZnRNQ2w0UDM3SEZEUU1BTXFhaTVGam5WVDhtWXU0TlozOTI2c0ZiWTBmYnlQZldQZTUvNjdTcFh5VGVGQUVBQU5BWFNsNEFBQURaMHlxQzNMSHY4QmtoQUFCWlZ6em8xUHZXUFY0ODlXdm4vdmJZZCtoa1BMTjhwY0Q4dHdFQUFNQVZVZklDQUFESWtxS1o2MXZiRzZjSklrZnNPWFJLQ0FEQWdPays5U3ZPVGYzNjJuMzFzZlA0NkRqMDlyRFVscittVENqeGNBQUFBRndCSlM4QUFBRDZiTUU5ZDhXeVoxL0k2ZmQ0OUxpU0Z3Q1FlNnFHNysrNDRyTGxyOFBIZm1YdFkvNXJFZ0VBQU5BWFNsNEFBQURadGJuanFpLzBRMTR6ckRqbjMyTlNRdnZCSXpkN0lnR0F2SEJCK2V1Y3JyV1BoMCtWeFk3REpYSGk5Rld4NWMyVDhmYUpkcXNmYzk4UkVRQUFBSDJoNUFVQUFKQmRQc3dCQUNCanV0WSsxbzQ0KzNydXVlbGZEOHo2ZkN4NDlFZDVkNTY2c1NmOGR3RUFBTUFWdUZvRUFBQUFXWldLRDNNYWFvZmx4ZnZjc09ONlR5UUFBQVBCdWtZQUFLQlBsTHdBQUFDeXk0YzVBQUFBQUFCQW55aDVBUUFBa0JyTmV3Y0xBUUFnaDlTVzcwN0xVZjNoRHdBQW9FK1V2QUFBQUxJckZSL20zRHl4UFMvZVo5dEpEeVFBQVAydmZ2R21JMUlBQUFENlFza0xBQUFndTN5WWswUDJIVDRqQkFDQUhGRlRVNXVXb3g1MXR3RUFnTDVTOGdJQUFNaXVWSlM4U292ZnlZdjN1ZWZRS1U4a0FFQ09tSDdMNUxRYzFhcEdBQUNnejVTOEFBQUFzcWhvNXZwVWZLQXplZFN1dkhpZlI0OHJlUUVBQUFBQWtIK1V2QUFBQUVpTlpjKytJQVFBZ0J3eGFzU1F0QnpWSkM4QUFLRFBsTHdBQUFDeWIyMGFEam5uemhudU5BQUFWNnlpTERVZlVSeHh0d0VBZ0w1UzhnSUFBQ0FqcXNhT3lJdjN1V0hIOVc0V0FBRDlxVlVFQUFCQVh5bDVBUUFBWkYrckNBQUE0RUoxWTAvNDd3RUFBSUFycE9RRkFBQ1FmYTFwT0dSRDdiQzhlSi9OZXdkN0lnRUE2RS9XTlFJQUFIMm01QVVBQUpCOVB0VEpJVzBuWlFDUURhdmZxQlVDMENNVkpXMnBPR2Y5NGsxTjdqWUFBTkJYU2w0QUFBRFpsNG9QZGNhTnlJLzN1ZS93R1U4a1FCWjg1ZXZMNHE4Yko4YXBYeFlMQTdnaTVTa3BlUUVBQUdTQ2toY0FBQUFaTWY3YTlyeDRuM3NPblhLekFMTGs4U2VmaXdlL2VUaWEzNm9TQnNCWmEwVUFBQUJrZ3BJWEFBQkFsaFhOWE44b2hkeHg5TGlTRjBBMnRiUTB4NEpIZnhSUE5kV1o2Z1Y4b0VVTDV3b0JBQUNnQjVTOEFBQUF5SWhicXJmbnhmdGM5dXdMYmhaQVAvakdYendWajMxL2lLbGVRTm8xaVFBQUFNZ0VKUzhBQUlEK1lVMExBS216YXZXNnpxbGVmOTA0MFZRdjRBS2pSZ3hKeTFHUHVOc0FBRUFtS0hrQkFBQ1FNUXZ1dVNzdjN1ZUdIZGU3V1FEOTZQRW5uNHNIdjNrNFZyOVJLd3lnVTBWWmFqNmVhSFczQVFDQVRGRHlBZ0FBNkIrcFdOTnl6VEJUV2dDNHRKYVc1dmpLMTVmRi8vdjBXQ3NjZ1JpYW1rRmVTbDRBQUVCbUtIa0JBQUQwajFTc2FTa2RWcFFYNzdONTcyQlBKTUFBZVdiNXlzNFZqbi8va3hvckhDSEZxa2FjU010Ulc5MXRBQUFnRTVTOEFBQUEra2NxSm5sTkdwOGY1YW0ya3g1SWdJSDJyY2VmN2x6aHVPSS82cFM5Z0lKVnYzaFRxeFFBQUlCTVVQSUNBQURvSDBkRWtEdjJIVDRqQklBY2tLeHcvQi8vNjZsNDdQdEQ0dVVka3dRQ0tWSmJ2anNOeDN6VG5RWUFBREpsa0FnQUFBRDZSU29tZWQwOHNUMHYzdWVlUTZjOGtRQTVaTlhxZFIxWHhMM3o1c1FEc3daRjdZaWRRZ0VLUWFzSUFBQ0FUREhKQ3dBQW9COFV6Vnh2a2xjT09YcGN5UXNnRnoyemZHVXNlUFJIOGIrZnI0N210Nm9FQWdVcUtYU21SS3U3RFFBQVpJcVNGd0FBUVA4cCtIVXRrMGZ2eTR2M3VlelpGenlOa0FGcm11dUVRRllzV2JxaXMrejE5eitwaVVNbnl3UUNCV2JZMEtLMEhMWFYzUVlBQURKRnlRc0FBS0QvdEJiNkFVdUhuSENYSVFXU2N0ZHZmR040L09PNms4SWdxNzcxK05NeDYwc3ZLWHRCZ1JrMVlvamYvd01BQVBTUWtoY0FBRUQvYVVyRElSZmNjMWRldk04Tk82NzNSRUlQYlRsUUhWOStvanJtZlBFZll1V0xhd1ZDdjFIMmdzSlNVWmFhanlaYTNXMEFBQ0JUQm9rQUFBQ2czeHhKd3lHdkdWYnNUa09CMlhWc1pEeXhla1I4NDl0TGhjR0FTc3BlMytyNCt2dGZ2aTgrWDc4L0trcU9DUVh5VUVYcG1iUWN0ZFhkQmdBQU1rWEpDd0FBb1Ara1lwTFgySkg1VWZKcTNqczRwbFo3S09GeWxMdklWZDNMWHJNK2RpeXFodThYQ3VTUmltR25VM0hPK3NXYld0MXRBQUFnVTVTOEFBQUErazhxSm5tTkhmR1J2SGlmYlNjOWtQQkJ1c3BkUzFlOEVpMHR6UUloWjNXVnZSWXRuQnQzMy9adTFJN1lLUlRJQTBPTDJ0Tnd6RGZkYVFBQUlKT1V2QUFBQVBwUEtpWjVqUnVSSCs5ejMrRXpua2k0aU1sZDVLc2xTMWQwWEdmTFhwLzYyT0NZWHYyR1VDQ0hWWlllU01NeFc5MXBBQUFnazVTOEFBQUEra25SelBWSDJodW5GZnc1eDErYkg1TVo5aHc2NWFHRWN6YnN1RDZlZitVanlsM2t2YzZ5VjhmWDJiUHVpUHRtall4UGpOc1Z4WVA4OHg1eVNVMU5iVnFPMnVwdUF3QUFtYVRrQlFBQTBMODJkMXoxaFh6QWNXVnRlZkUrang3M29UOHMvL2NwOGZ6NnQrT0pKVThKZzRLeWF2VzZqdXRzbWVRTDl6WEU5SWw3bzZMa21HQWdCMHkvWlhMSHI3dlNjTlJXZHhzQUFNZ2tKUzhBQUlEK2RhVFFEMWg1emNHOGVKL0xubjBoZnZESXpaNUlVcWZ0OVBENHdVK3JZc1c2bmJIeXhlOExoSUxXMHRJYy8rTi9OWGQrLy90ZnZpK21UejRWdFNOMkNnWUcwTENTMUh3czBlUnVBd0FBbWFUa0JRQUEwTDhhTzY0WmhYN0lPWGZPaUpVdnJuVzNJWWRZeVVqYWZldnhwenUvM2p0dlRueDIyckNZWHYyR1VHQUFWSTh1U3N0Umo3amJBQUJBSmlsNUFRQUE5SzlVZk5oVE5YWkVYcnpQcFBReXRYcWJwNUtDbFV6dCt1ZWZWY1UvckV5bWRsbkpDSWxubHEvc3VNNnVjbHo0R3cweGE3SlZqdENmaGc1Snh6bnJGMjlxZExjQkFJQk1VdklDQUFEb1g2bFkyekoyWkxFN0RRTm9UWE5kdlBUYXU2WjJ3V1VrcXh5LzhSY2RWOGYzWC83Qy9KaiswWWo2TWRzRkExbFdOZUtFRUFBQUFIcEJ5UXNBQUtCL3BXS1MxOWdSSDhtTDk5bThkM0JNcmZaUVVoaDJIUnNaUDN5NUl0WnMyQlVyWC93SGdVQVBQUDdrYy9GNHg5ZlpzKzZJbVZQSHhQU0pwbnRCdGxTVXRLWGhtUGFXQXdBQUdhZmtCUUFBMEkrS1pxNXZhbStjVnZEbnJCdi9xN3g0bjIwblBaUGt0NlRZdGZiMWtiSGkzdzdGc21kZkVBajAwYXJWNnpxdXM5OHZXamczUHZXeHdURzkrZzNCUUFhVnA2UGtkY1NkQmdBQU1rM0pDd0FBb1ArOTJYRk5LT1FEbGc0NWt4ZnZjOS9oTTU1RzhrN2I2ZUd4Wm10VnZQVHpkK0l2di91VVFDQkxsaXhkRVVzNnZ0YlUxTWJkczIrS1dSODdGbFhEOXdzRytpQ1psdGZ4YjdJMEhMWEozUVlBQURKTnlRc0FBS0QvdFVhQmw3d21qOTZYRis5eno2RlRua2J5Z21JWERKeVdsdWI0Vm5MRjJZTEtyLy9hNktnZnY4ODZSK2lGc2FQTElpVWxyMVozR3dBQXlEUWxMd0FBZ1A2WC9NbitHWVY4d05JaEovTGlmUjQ5cnVSRjdsTHNndHpUZlozamw3OHdQK29uWFIyZkdMY3JpZ2Y1OXdsY2lRbmpTdEp5MUZaM0d3QUF5RFFsTHdBQWdQNTNKQTJIZk9pMzVzY1QzM3N1cDkvanNtZGZpQjg4Y3JNbmtweXg2OWpJV1B2NnlIaTFSYkVMY3QzalQ1Ny9kOXp2Zi9tK3FKOTRKdXJIYkJjTVhFYko0TlFjMWJwR0FBQWc0NVM4QUFBQStsOWp4L1cxUWo5azZiQWlkeHF1d0pZRDFiR3BkVmlzK0xkRG5jVkRJUDk4Ni9Hbk83L1cxTlRHM2JOdlV2aUNEMUJkMFo2S2M5WXYzblRFM1FZQUFESk55UXNBQUtEL3BlSkRuMG5qODJOVXc0WWQxOGZVNm0yZVN2cjl1WHZwUDRwaXpZWmRzZkxGNXdRQ0JhS2xwVG0rMVhFbEZMN2cvVXFLVWxIeVd1dE9Bd0FBMmFEa0JRQUEwTStLWnE1dmFtK2NWdkRuTEMyNXlzMkdjOXBPRDQ4MVc2dmlwWisvRXovNmNWTzB0RmpGQ0lWTzRRdmVyN1o4ZHhxT2FZb1hBQUNRRlVwZUFBQUFBMk56eDFWZnlBZXNHL3RPWHJ6UDVyMkRZMnExQjVMTVM5WXdydjNGc0ZqN3FqV01rSFlLWDNEMjJVK0pKbmNiQUFESUJpVXZBQUNBZ1ZId2Y4Si9YRmxiWHJ6UHRwTWVSakpqMTdHUjhjcWJJNlBwalRPeGRNVXIwZEppRFNQd2ZoY1h2bWJmZm1QVVQ3bzZQakZ1VnhRUE9pVWdDdGIwV3lZbi83Wk13MUdWdkFBQWdLeFE4Z0lBQUJnWWpSM1hqRUkrWU9VMUIvUGlmZTQ3Zk1iVFNLK3RhYTZMVjdkZEZSdTNIRGF0QytpeHBQRFZjcTd3bFZpMGNHNThzcTQ0NnNmdmk0cVNZd0tpb0l3YU1TUXRSN1d1RVFBQXlBb2xMd0FBZ0lHUmlnOS9GdHh6Vjg0WFgvWWNNaldGSzllMWdyR3ArZTE0WWtreXFlc1ZvUUFaczJUcGlsaHk3dnZacys2SVcrdkhSTU9FRTFFN1lxZHd5SHNWWlZlbjRwejFpemMxdXRzQUFFQTJLSGtCQUFBTWpGU3NjYWthWFpyejcvSG9jU1V2UGxoUzZ0clVPaXhlYlhrbmZ2VGpKaXNZZ1g2emF2VzZqdXZzOTkzWE90YU5QR0RLRjNtcHVxSTlEY2M4Nms0REFBRFpvdVFGQUFBd01GSlI4cG8wZm5ET3Y4ZGswdGdQSHJuWkUwa25wUzRnRjEyODF2SGVlWFBpaGtsbFVUZXVQZXJIYkJjUWVhR2tLQlVscnlaM0dnQUF5QllsTHdBQWdBRlFOSFA5a2ZiR2FRVi96bkVqM0d0eW0xSVhrSStlV2I0eW51bjJldEhDdWZISnV1S29HM00wcW9idkZ4QTVxYlo4ZHhxT3FlUUZBQUJralpJWEFBREF3Rm5iY2MwbzVBT092elkvSmpaczJIRjlUSzNlNW9sTUFhVXVvQkF0V2JvaWxwejd2bXUxWTEzMW9LZ2Z2ODlxUjNMQzdGbDNkUHphbG9hakhuRzNBUUNBYkZIeUFnQUFHRGl0VWVBbHI4bWo5N25MREtpa3dMZHArK0JvYW40N25saVNGTHBlRVFwUTBDNWU3WmlVYTI2YVBDcHFLOStOdXBFSGxMNFlFR05IbDBWS1NsNk43allBQUpBdFNsNEFBQUFEcDdYUUQxZzY1RVRuUkpIdUh6Ym5vdWE5ZzJOcXRRY3kzKzA2TmpLMjdpdVBWN2RkRlJ1M0hJNWx6NzRRU2wxQTJxMWF2YTdqT3YrNmUrbXJla1NiOVk3MGl3bmpTdnorSGdBQW9JK1V2QUFBQUFaT1k4ZjF0VUkvNUl6YmJzejVrbGZiU1E5alB1cGF2ZGl5NjB4cytQbWVXUG5pU3FFQWZJaUxTMS9kMXp0V2w1K00yaEU3aFVUR1ZaU200NXoxaXplMXV0c0FBRUMyS0hrQkFBQU1uQ05wT09UWWtjVTUveDczSFQ3amFjeHhiYWVIeDhiL0hCOWI5MXh0OVNKQUJsMjgzakd4YU9IY21ES2hKS29yMm1OeXhaNG9IblJLVVBSSjFZZ1RhVGptV25jYUFBRElKaVV2QUFDQUFWSTBjMzFUZStPMGdqL24yQkVmeWZuM3VPZVFENjl6ellZZDEzZXUwWHkxNVozWThzYitXUG1pejAwQitzdVNwU3N1ZU4yMTRyRnExRldtZmRFckZTVnRhVGhtcXpzTkFBQmtrNUlYQUFEQXdOcmNjZFVYOGdGdm50aWU4Ky94NkhFbHI0R1VyRjNjdW5kWXRPeCtOelp1T1J6TG5uMGhUT2tDeUIwWHIzaE1KTk8rSm93cmlhcUtNMUU5b2kycWh1OFhGQitvWE1rTEFBQ2d6NVM4QUFBQUJsWnJGSGpKYTF4WjduK29sNVNLZnZESXpaN0dmckRyMk1qWXVxODhYdDEyVlRUdlBHSHRJa0NldW5qYVYwTHhpMHRKbm91TzN3R2s0YWlON2pZQUFKQk5TbDRBQUFBRHE2bmp1cnVRRDFoNXpVRjNPYVc2Q2wxYjkxd2RUYzF2eDlxWFg0dVdGb1V1Z0VMMVljV3ZrY05QVy9XWVFxTkdERW5MVVkrNDJ3QUFRRFlwZVFFQUFBeXNwalFjY3NFOWQ1MWJ3WmU3TnV5NFBxWldiL05FOXBKQ0Z3Q1hjcW5pMTczejVzU1lpcEtvR2wwVWs4ZWRpUExpWTFGUmNreFlCYXFpN09wVW5MTis4YVltZHhzQUFNZ21KUzhBQUlDQjFacUdRMWFOTG5XbkM4aVdBOVd4ZGUrd2FObjlicmVWaXdCd1paNVp2dko5UDZ1cHFZM3B0MHp1blBwVlVmcHVWSmVmak9yU2cxRTg2SlRBOGx6ZDJCTnBPT1ptZHhvQUFNZzJKUzhBQUlBQlZEUnpmVk43NDdTQ1ArZWs4WU56L2owMjd4MGNVNnM5a3hkTEpwd2wyYlRzT2hON0RwMDZWK2d5b1F1QXpHcHBhZTY4THRhOS9GWFM4ZHNKazcveXo5Q2k5alFjczlXZEJnQUFzazNKQ3dBQVlPQWxmL0svdnBBUFdEZitWem4vSHR0T3B2c2hUTll0N2o1YUZwdTJKNFd1ZDJMTEcvdGo1WXRyUTZFTGdJSDBRZVd2eEtLRmMyTjR5YURPdFk4VnBXZGk1UERUVVR0aXA5QnlUR1hwZ1RRYzA2cEdBQUFnNjVTOEFBQUFCbDVyRkhqSmEvdzF1ZCtnMm5mNFRHb2V1SzdwWEhzUG4xMjN1UGJsMTZLbFJaa0xnUHl5Wk9tS1MvNjhhL3JYNkJGRG9yenM2dmNLWU5ZLzlyOTc1ODNwK0hWL0dvN2E2RzREQUFEWnB1UUZBQUF3OEpJLytYOTNJUjl3OHFoZE9mOGVrMVdFaFdiTGdlclljNlFrdHU2NTJuUXVBRkxqY3RPL0VrbnhhTmpRb3BneW9lVHM3MVBHbmVqOGFncFk1bDFYT1R4U1V2SnFkYmNCQUlCc1UvSUNBQUFZZUtsWTc3TGducnRpMmJNdjVPejdPM284ZjB0ZTNWY3RKaFBKa3NMYUUwdWVDMlV1QUhpL1o1YXZ2T3hmVDlaQUppYU1LNG1Td1JIVkZlMHhkSEI3bEJjZmk0cVNZd0xzZ1lxeXExTnh6dnJGbTFyZGJRQUFJTnVVdkFBQUFBWmVLa3BlVmFOTGMvcjlKUVcwSHp4eWMwNi94dzh1Y3dFQW1mSkJheUM3dTdnSU5uVEl1MUZkZm5ZOXRiV1E1OVdOUFpHR1k2NTFwd0VBZ1A2ZzVBVUFBRERBaW1hdWIyMXZuRmJ3NTV3MGZyQ2JmWVdVdVFBZ3QxMUpFYXltcGphbTN6SzU4L3ZSSTRaRStibXBWaFdsWjJMazhOT2QzeGY2ZExDS2tyWTBQQTZ0L280QUFBRDZnNUlYQUFCQWJrZ21BTXdvNUFQZVBMRTk1OS9qaGgzWHg5VHFiZjMyLzIvTGdlclljNlFrdHU2NVdwa0xBQXBNUzB0ejUzV2xacys2SThhT0xudnY5WlFKSmU5OTM3MFlsc2lYYVdIbFNsNEFBQUFabytRRkFBQ1FHMXFqd0V0ZTQ4cmFVbmxqMjA0UGp5MzdSOGVlSTROanoxc1JUYzF2eDlIanB6clhRMGE4NHNrSEFEcXRXcjJ1MS8vYmUrZk42ZmoxbHpsMW5yTXJMWGVsNGRZMWVub0JBSUQrb09RRkFBQ1FHNW82cnQ4dTVBTldYbk13NTk5ajg5N0JNYlc2ZC8vYlMwM2xXdnZ5YTlIU29zZ0ZBR1RYTTh0WDV0eDdHalZpU0pwK0h3OEFBSkIxU2w0QUFBQzVJUlVmRGozMFcvUGppZS9sN2pyQ3RwT1gvK3RKa2F2dFZGRnMyajQ0M2o3NWJqVHZQQkU3OTd3VksxOU10bTBxY3dFQWRLa2VkWFVham5tMGZ2R21JKzQyQUFEUUg1UzhBQUFBY2tNcVNsNjExVU56K3YwbEU3ZzI3TGkrODN0RkxnQ0EzcXNhY2NMdjRRRUFBREpJeVFzQUFDQUhGTTFjZjZTOWNkcWJIZDlPS09SempoMlIyeE1kdnZIdHBmRU5qeU1BUUo5Vmx4MUt3ekViM1drQUFLQy9YQzBDQUFDQW5ORmE2QWVzRy91T3V3d0FVT0JtejdvamlnZWQ5dnQzQUFDQURGTHlBZ0FBeUIyTmhYN0FXNnEzdThzQUFBVnU3T2l5dEJ6VnVrWUFBS0RmS0hrQkFBRGtqbFI4U0RUbnpobnVOQUJBQVpzeW9TUVY1NnhmdkVuSkN3QUE2RGRLWGdBQUFMbWpOUTJIL09pazBlNDBBRUFCcTY1b1Q4TXhON3ZUQUFCQWYxTHlBZ0FBeUJGRk05ZW5ZaExBcFBHRDNXd0FnQUpXTWZSRUdvNXBpaGNBQU5DdmxMd0FBQUJ5eTlwQ1AyRGQrRis1eXdBQUJheXk5RUFhanFua0JRQUE5Q3NsTHdBQWdOeFM4QjhXMVkwNjRpNERBQlNvUlF2bituMDdBQUJBRmloNUFRQUE1SmJXUWo5ZzVUVUhvNmFtMXAwR0FDaEFFOGFWcE9Xb1NsNEFBRUMvVXZJQ0FBRElMZjgvZTNmVEc5ZDVwZ240QkZIcFk5S1VNcFJsUmFacHQ2MGlsVmlXaW81b1MwNHNzVVNMcGhMVGhMNGNjeFNyMElMY3NZTUFNVWVZblh2QjdMSWtrRDlRK2dmVVB6amExcUpBTHNjUVFCS3lsUmhpYThoUmhoaTFZWHVxN1BTMDAvN1NCOGs2NXp6WEJSQm5mWi9uWFJSNGJqeHZpSTlGUTBmMm16UUFRQUU5dnZPVENERVhLN1dtOWJRQUFNQ0dVdklDQUFESWtGSzFrVWJJT2REM0E4TUdBQ2lnM2gvK05VSk1XN3dBQUlBTnArUUZBQUNRUFhORkQ5ai8yS2VtREFCUVFEMWR0eUxFVlBJQ0FBQTJuSklYQUFCQTloVCtvMUgvTHJmYkFBQVV6Wm54MFNoUlU5TUdBQUEybXBJWEFBQkE5aFMrNU5Xell5a3BsL3RNR2dDZ1FQNng1eC84WGdjQUFGZ25TbDRBQUFEWkUrS2owZENSL1NZTkFGQWd2YnRDZkhKWXJOU2ExdElDQUFBYlRza0xBQUFnWTByVlJob2g1MERmRHd3YkFLQkFIdit2cXhGaTJ1SUZBQUIwaEpJWEFBQkFOczBWUFdEL1k1K2FNZ0JBZ2ZSMTM0d1FVOGtMQUFEb0NDVXZBQUNBYkNyOHg2UCtYVzY1QVFBb2lqUGpvMUdpcHFZTkFBQjBncElYQUFCQU5oVys1Tld6WXlrcGwvdE1HZ0NnQUo3WnU5M3ZkQUFBZ0hXazVBVUFBSkJOSVQ0ZURSM1piOUlBQUFYdytNNVBJc1Jjck5TYTF0RUNBQUFkb2VRRkFBQ1FRYVZxSTQyUWM2RHZCNFlOQUZBQXZULzhhNFNZdG5nQkFBQWRvK1FGQUFDUVhYTkZEOWovMktlbURBQlFBRDFkdHlMRVZQSUNBQUE2UnNrTEFBQWd1d3IvRWFsL2w5dHVBQUR5N3NMRVdKU29xV2tEQUFDZG91UUZBQUNRWFlVdmVmWHNXRXBHVHd5Wk5BQkFqajI1WjV2ZjV3QUFBT3RNeVFzQUFDQzcwZ2doZjdMM1VaTUdBTWl4L2owZlI0aTVXS2sxcmFFRkFBQTZSc2tMQUFBZ28wclZSb2hOQVhzZjIyellBQUE1OXZqMjJ4RmlwaVlOQUFCMGtwSVhBQUJBdGwwcmVzQkRUMzFzeWdBQU9WVXU5eVhkMis1RWlPcXFSZ0FBb0tPVXZBQUFBTEt0OEIrVEJudm5UUmtBSUtkT0hOM3ZkemtBQU1BR1VQSUNBQURJdGhBZms4NmRQbW5TQUFBNTFQdG9LVVRPU3EyWm1qWUFBTkJKU2w0QUFBRFpsa1lJT2ZqamJwTUdBTWloL2grdFJvaDV6YVFCQUlCT1UvSUNBQURJc0ZLMXNkQjZyQlE5WjNuUDl3d2JBQ0NIK3JwdlJvanBxa1lBQUtEamxMd0FBQUN5THkxNndFTlAzRFpsQUlDY09UTStHaVdxa2hjQUFOQnhTbDRBQUFEWlYvaVBTajA3bHBKeXVjK2tBUUJ5NUptOTI2TkVUVTBiQUFEb05DVXZBQUNBN0VzamhCeDdlY0NrQVFCeTVQR2RuMFNJdVZLcE5SZE1Hd0FBNkRRbEx3QUFnT3dMY1QzTTNzYzJtelFBUUk3MFA3SVVJV1pxMGdBQVFCWW9lUUVBQUdSY3FkcFliajNtaXA3ejBGTWZHellBUUU2TURCOUx1cmZkaVJCMTFyUUJBSUFzVVBJQ0FBREloOEovWEJyc25UZGxBSUNjMlB0a2Q1U29xV2tEQUFCWm9PUUZBQUNRRDJtRWtKZmVQR1hTQUFBNXNLKzNGQ0pucGRaTVRSc0FBTWdDSlM4QUFJQjhTQ09FN092OUx5WU5BSkFEL1krdVJJZzVaOUlBQUVCV0tIa0JBQURrUUtuYVdHZzlDdjhsN2JtblB6TnNBSUFjNk9tNkZTRm1hdElBQUVCV0tIa0JBQURrUjFyMGdJTzlOMDBaQUNEakxreU1SWWs2YTlvQUFFQldLSGtCQUFEa1IrRS9NblZ0V1UzT25UNXAwZ0FBR2Ziako3ZEZpWnFhTmdBQWtCVktYZ0FBQVBtUlJnaTU3OGtmbWpRQVFJYjEvMmcxUXN6RlNxMjVZTm9BQUVCV0tIa0JBQURrUktuYVNDUGtmTzdwN3hzMkFFQ0c5WFdIdUdMYlZZMEFBRUNtS0hrQkFBRGt5N1dpQnp6MHhHMVRCZ0RJcUFzVFkxR2lwcVlOQUFCa2laSVhBQUJBdmhSK28wRFBqcVZrOU1TUVNRTUFaTkNUZTdaRmlacWFOZ0FBa0NWS1hnQUFBUG1TUmdnNStPd2Vrd1lBeUtEK1BSOUhpTGxTcVRWZDF3Z0FBR1NLa2hjQUFFQytwQkZDUHZmMDkwMGFBQ0NEK25mK0pVSk1CUzhBQUNCemxMd0FBQUJ5cEZSdExMY2VjMFhQZWVpSjI0WU5BSkF4WjhaSGs2MmI3a2FJbXBvMkFBQ1FOVXBlQUFBQStaTVdQV0RQanFWazlNU1FTUU1BWk1nemU3Zjd2UTBBQU5BaFNsNEFBQUQ1RStMNm1NRm45NWcwQUVDRzlPLzVPRVRPU3EyWm1qWUFBSkExU2w0QUFBRDVrMFlJK2R6VDN6ZHBBSUFNNmQvNWx3Z3hyNWswQUFDUVJVcGVBQUFBT1ZPcU5oWmFqOFdpNXp6MHhHM0RCZ0RJaURQam84bldUWGNqUkUxTkd3QUF5Q0lsTHdBQWdIeEtpeDZ3WjhkU01ucGl5S1FCQURMZ21iM2IvYzRHQUFEb0lDVXZBQUNBZkVvamhCeDhkbzlKQXdCa1FQK2VqNk5FblRWdEFBQWdpNVM4QUFBQThpbU5FUEs1cDc5djBnQUFHWEJ3OTJLRW1IT1ZXblBadEFFQWdDeFM4Z0lBQU1paFVyV3gwSG9VL2t2Ym9TZHVHellBUUlkZG1CaUxFalUxYlFBQUlLdVV2QUFBQVBJckxYckFuaDFMeWVpSklaTUdBT2lnSHorNXplOXJBQUNBRGxQeUFnQUF5SzgwUXNqanovZVlOQUJBQi9YL2FOWHZhd0FBZ0E1VDhnSUFBTWl2TkVMSTU1Nyt6S1FCQURxa1hPNUwrcnB2Um9nNlY2azFsMDBjQUFESUtpVXZBQUNBbkNwVkd3dXR4MkxSY3c3MjNqUnNBSUFPT1hGMGY1U29xV2tEQUFCWnB1UUZBQUNRYjJuUkEzWnRXVTNPblQ1cDBnQUFIYkN2dCtSM05RQUFRQVlvZVFFQUFPUmJHaUhrME1CT2t3WUE2SUQrUjFmOHJnWUFBTWdBSlM4QUFJQjhTeU9FUFBUVXh5WU5BTERCUm9hUEpUMWR0eUpFdlZhcE5aZE5IQUFBeURJbEx3QUFnQndyVlJzTHJjZGkwWE1POXM0bjVYS2ZnUU1BYktBRCszWkZpWnFhTmdBQWtIVktYZ0FBQVBtWFJnZzU5dktBU1FNQWJLRCtucy84bmdZQUFNZ0lKUzhBQUlEOFN5T0VITmk3eGFRQkFEYnk5OWVlbXlGeVZtck4xTFFCQUlDc1UvSUNBQURJdjVrSUlZZjYvOVdrQVFBMnlKbngwV1RycHJzUm9sNHpiUUFBSUErVXZBQUFBSEt1Vkcwc3R4NXpSYy9aczJNcEdUMHhaT0FBQUJ2Z21iM2JvMFJOVFJzQUFNZ0RKUzhBQUlCaVNDT0VQUDU4ajBrREFHeUF5aE9yVWFMT21EWUFBSkFIU2w0QUFBREZrRVlJK2R6VG41azBBTUE2SzVmN2tyN3VteEdpcmxScXpWa1RCd0FBOGtESkN3QUFvQmpTQ0NFSGUyK2FOQURBT2p0eGRML2YwQUFBQUJtajVBVUFBRkFBcFdwanVmVzRWdlNjWFZ0V2swdHZuakp3QUlCMU5MQTN6S2VEMUxRQkFJQzhVUElDQUFBb2pqUkN5S01ILzhHa0FRRFdVZjhqUzFHaXpwZzJBQUNRRjBwZUFBQUF4UkhpSTlXaGYveXJTUU1BckpNejQ2Tko5N1k3RWFJdVZtck5CUk1IQUFEeVFza0xBQUNnSUVyVnhtenJzVkwwblB0MmZaaU1uaGd5Y0FDQWRmRE0zdTFSb3FhbURRQUE1SW1TRndBQVFMR2tFVUlPUHJ2SHBBRUExa0hsaWRVb1VWM1ZDQUFBNUlxU0Z3QUFRTEdFK0ZoMWJQLzNUQm9BWUkyVnkzMUpYL2ZOS0hGVEV3Y0FBUEpFeVFzQUFLQlkwZ2doajVldm16UUF3Qm9iSHprWUplcGNwZFpjTm5FQUFDQlBsTHdBQUFBS3BGUnRMTFFlaXhHeVRyNzl1b0VEQUt5aC9wN1Bva1IxVlNNQUFKQTdTbDRBQUFERkUrS2oxVXY3TjVzMEFNQWFHdGdUNXFwR0pTOEFBQ0IzbEx3QUFBQ0tKNDBROHRBVHQwMGFBR0NObkJrZlRiWnV1aHNoNmtxbDFwdzFjUUFBSUcrVXZBQUFBQXFtVkcyRTJFelFzMk1wT1hmNnBJRURBS3lCb3dQYm8wUk5UUnNBQU1nakpTOEFBSUJpdWhZaDVOREFUcE1HQUZnRC9ZK3VSSW5xcWtZQUFDQ1hsTHdBQUFDS0tjVEhxK3BQL285SkF3QThwSkhoWTBsUDE2MG9jVk1UQndBQThrakpDd0FBb0pqU0NDSDM3Zm93R1QweFpOb0FBQS9oY0dWM2xLaHpsVnB6d2NRQkFJQThVdklDQUFBb29GSzFNZHQ2TEViSU92anNIZ01IQUhnSWxTZFdvMFJOVFJzQUFNZ3JKUzhBQUlEaVNpT0VQTGIvZXlZTkFQQ0F5dVcrcEsvN1pwUzRNeVlPQUFEa2xaSVhBQUJBY1lYNGlIVzhmUDN6ajVNQUFOeS84WkdEVWFLdVZHck4xTVFCQUlDOFV2SUNBQUFvcUZLMUVXWlR3UnRqaHd3Y0FPQUJERHoxU1pTb3FXa0RBQUI1cHVRRkFBQlFiRmNqaEh6dTZlK2JOQURBQXppNGV6RktWRmMxQWdBQXVhYmtCUUFBVUd4cGhKREgrejh3YVFDQSsvVE94Vk9SNGlwNUFRQUF1YWJrQlFBQVVHd2hQbVoxYlZsTkp0OSszYlFCQU83RHdONHdud2ptS3JYbXNva0RBQUI1cHVRRkFBQlFZS1ZxWTZIMUNIRUh6MHY3TnhzNEFNQjlHTmh6TTBwVVc3d0FBSURjVS9JQ0FBQW92aEFmdFZ6WkNBQnc3OXBYTlc3ZGROZnZZUUFBZ0p4UThnSUFBQ2krTUZjMm5qdDkwclFCQU83QnZ0NVNsS2lMbFZwejFzUUJBSUM4VS9JQ0FBQW91Rksxa2JZZUt4R3lqcjM0aUlFREFOeUR5bU1mUlltYW1qWUFBRkFFU2w0QUFBQXhoTmptTmRUL3J5WU5BUEFkem95UEp0M2I3dmdkREFBQWtDTktYZ0FBQURHa0VVTDI3Rmh5WlNNQXdIYzRPckE5VE5aS3JhbmtCUUFBRklLU0Z3QUFRQXhoUG02NXNoRUE0TnNGdXFyeHFta0RBQUJGb2VRRkFBQVFRS25hV0U2Q2ZPUnlaU01Bd0RkelZTTUFBRUErS1hrQkFBREVrVVlJNmNwR0FJQnZGdW1xeGtUSkN3QUFLQkFsTHdBQWdEaGMyUWdBRUZ5Z3F4cm5Lclhtc29rREFBQkZvZVFGQUFBUVJLbmFXR2c5NWlKa2RXVWpBTUJYQmJ1cXNXN2lBQUJBa1NoNUFRQUF4QkppbTVjckd3RUF2c3BWalFBQUFQbWw1QVVBQUJDTEt4c0JBSUlLZEZYallxWFdYREJ4QUFDZ1NKUzhBQUFBQWlsVkc3T3R4MktFcks1c0JBRDREOEd1YXJURkN3QUFLQndsTHdBQWdIaGMyUWdBRUV5d3F4cnJKZzRBQUJTTmtoY0FBRUE4cm13RUFBZ20yRldOc3lZT0FBQVVqWklYQUFCQU1LVnFJMjA5VmlKa2ZlM2dEUU1IQU1KNzUrSXBWelVDQUFEa25KSVhBQUJBVENFK2ZuVnRXVTBtMzM3ZHRBR0EwQWIyaHZvVWtKbzRBQUJRUkVwZUFBQUFNWVhaY1BEUy9zMm1EUUNFTnJEblpwU29LNVZhMHlZdkFBQ2drSlM4QUFBQUFpcFZHKzJQWHlHdWJEemUvNEdCQXdCaHRhOXEzTHJwYnBTNENsNEFBRUJoS1hrQkFBREU1Y3BHQUlDQ0MzWlZvNUlYQUFCUVdFcGVBQUFBY1lYNUNQYUx3VTJtRFFDRVV5NzNKVWQ2NTZQRWRWVWpBQUJRYUVwZUFBQUFRZjN0eXNZUWpwZXZmLzZSRXdBZ2t2R1JnNUhpS25nQkFBQ0ZwdVFGQUFBUTI5VW9RZDhZTzJUYUFFQW9BMDk5RWltdWtoY0FBRkJvU2w0QUFBQ3hoZmtZOXVwUFB6VnRBQ0NNa2VGanljSGRpMUhpdXFvUkFBQW9QQ1V2QUFDQTJNSjhEQnZzblU5R1R3eVpPQUFRd3VISzdraHhVeE1IQUFDS1Rza0xBQUFnc0ZLMXNad0V1ckx4K1BNOWhnNEFoUERpM3BWSWNXM3hBZ0FBQ2svSkN3QUFnREFmeGQ0NC9MOU1Hd0FvdkRQam8wbFAxeTIvWndFQUFBcEV5UXNBQUlBd0g4VjZkaXdsNTA2Zk5IRUFvTkNPRG15UEZQZHFwZFpjTm5VQUFLRG9sTHdBQUFDQ2kzWmw0OWlManhnNkFGQm9sY2MraWhUWEZpOEFBQ0FFSlM4QUFBRGF3bndjZSszZ0RkTUdBQXJybll1bmt1NXRkNkxFWGFuVW1uVlRCd0FBSWxEeUFnQUFvQzFNeWF0cnkyb3krZmJySmc0QUZOTEEzbEQvOXJmRkN3QUFDRVBKQ3dBQWdIKy9zdkZLbEx5L0dOeGs2QUJBNFpUTGZjbVIzdmxJa1pXOEFBQ0FNSlM4QUFBQStIZGhQcElkTDEvLy9DTW9BRUNSakk4Y2pCUzNmVldqa2hjQUFCQ0draGNBQUFDZksxVWI3WTlrSzFIeXZ2WDY4NFlPQUJUS3kvdnZSSXFyNEFVQUFJU2k1QVVBQU1DWGhmbFk5dXB6cTZZTkFCVEd5UEN4cEtmcmx0K3RBQUFBQmFYa0JRQUF3SmVGK1ZpMmI5ZUh5Ym5USjAwY0FDaUVYNzYwTzFKY1Z6VUNBQURoS0hrQkFBRHcvMFc3c25IaStFNURCd0FLNGNVbmIwU0txK0FGQUFDRW8rUUZBQURBZnhibW85bngvZzlNR3dESXZYY3Vua3EyYnJvYktYTGQxQUVBZ0dpVXZBQUFBUGpQcHFNRTdkcXltcnczT1dIaUFFQ3UvZXdub2VJdVZtck4xTlFCQUlCb2xMd0FBQUQ0TzZWcVk3YjFXSXlTOTlXZmZtcm9BRUJ1alF3ZlN3N3VYb3dVMlZXTkFBQkFTRXBlQUFBQWZKMHdIODhHZStlVDBSTkRKZzRBNU5MaHl1NW9rZXVtRGdBQVJLVGtCUUFBd05lcFJ3bzdkdlJ4RXdjQWNtbDQzMGVSNHJhdmFwdzFkUUFBSUNJbEx3QUFBTDdpYjFjMnprWEpPMWE1YmVnQVFPNWNtQmhMdXJmZGlSUjUydFFCQUlDb2xMd0FBQUQ0SnZVb1FYdDJMQ1dUYjc5dTRnQkFydno4MmMzUklzK1lPZ0FBRUpXU0Z3QUFBTjhrMUVlMFh3eHVNbkVBSURmSzViN2tTTzk4cE1oemxWcHp3ZVFCQUlDb2xMd0FBQUQ0V3FWcVk2SDF1QllsNy9IeTlXVDB4SkRCQXdDNU1QSGFRTFRJcm1vRUFBQkNVL0lDQUFEZzI5UWpoUjA3K3JpSkF3QzVNTHp2bzJpUlhkVUlBQUNFcHVRRkFBREF0d24xTVcyc2N0dkVBWURNdXpBeGxuUnZ1eE1wOHRWS3JibHM4Z0FBUUdSS1hnQUFBSHlqVXJYUi9waDJKVXJlbmgxTHllVGJyeHM4QUpCcFAzOTJjN1RJZFZNSEFBQ2lVL0lDQUFEZ3U0VGE1dldybjMvUHhBR0F6Q3FYKzVJanZmT1JJcTlVYWsxWE5RSUFBT0VwZVFFQUFQQ3RTdFZHKzZQYVlwUzhnNzN6eWVpSklZTUhBRExwNHRtQmFKSHJwZzRBQUtEa0JRQUF3TDBKdFQzaHY3M1NhK0lBUUNhOStOUkgwU0xYVFIwQUFFREpDd0FBZ0h0VGp4VDJ0WU0zVEJ3QXlKeDNMcDVLdXJmZGlSUjVzVkpyenBvOEFBQ0FraGNBQUFEM29GUnR0RCt1elVYSjI3VmxOWGx2Y3NMZ0FZQk0rZGxQd2tXZU5uVUFBSUF2S0hrQkFBQndyK3FSd2s3ODdQK2FPQUNRR1NQRHg1S0R1eGVqeFo0eGVRQUFnQzhvZVFFQUFIQ3Y2cEhDN3R2MVlYTHU5RWxUQndBeTRaY3Y3WTRXK1dxbDFsd3dlUUFBZ0M4b2VRRUFBSEJQU3RYR2N1dHhOVkxtaWVNN0RSNEE2TGh5dVM5NThja2IwV0xYVFI0QUFPQS9LSGtCQUFCd1ArcVJ3bzRmZVAvemo2b0FBQjM5VFRKeU1ObTY2VzZreUN1Vld0TlZqUUFBQUYraTVBVUFBTUE5SzFVYjdZOXRpNUV5djN2aEJZTUhBRHJxNWYxM29rV3Vtem9BQU1EZlUvSUNBQURnZm9YYXFqQld1VzNpQUVESFhKZ1lTM3E2YmtXTFhUZDVBQUNBdjZma0JRQUF3UDJhamhTMlo4ZFM4dDdraEtrREFCM3g4MmMzUjRzOFY2azFaMDBlQUFEZzd5bDVBUUFBY0Y5SzFjWkM2M0V0VXVaWGYvcXB3UU1BRzI1aytGaHlwSGMrV3V4cGt3Y0FBUGdxSlM4QUFBQWVSRDFTMk1IZStlVGM2Wk9tRGdCc3FGKyt0RHRpN0JtVEJ3QUErQ29sTHdBQUFCNUUrK1BiU3FUQUU4ZDNtam9Bc0dISzViN2t4U2R2Ukl0OXBWSnJMcHMrQUFEQVZ5bDVBUUFBY045SzFVYjc0MXVvTFF2akI5Ny8vR01yQU1DRy9QWVlPWmhzM1hRM1d1eTZ5UU1BQUh3OUpTOEFBQUFlMUhTMHdPOWVlTUhVQVlBTk1WYTVGUzN5WXFYV1RFMGVBQURnNnlsNUFRQUE4RUJLMWNaczZ6RVhLZlA1d3g4WVBBQ3c3aTVNakNYZDIrNUVpejF0OGdBQUFOOU15UXNBQUlDSEVlcGpYTmVXMWVTOXlRbFRCd0RXMWZqaHp5TEdycHM4QUFEQU4xUHlBZ0FBNEdITXRQNVdJZ1YrcTdwaTZnREF1aGtaUHBiMGRkK01GdnRLcGRaY05uMEFBSUJ2cHVRRkFBREFBeXRWRysyUGNUT1JNdmZzV0VvdXZYbks4QUdBZFhGMitKR0lzZXNtRHdBQThPMlV2QUFBQUhoWTA5RUNYM3BsczZrREFHdXV2Y1hyU085OHROaUxsVm96TlgwQUFJQnZwK1FGQUFEQVF5bFZHN090eDF5a3pJTzk4OG5vaVNIREJ3RFdWUFg1M1JGalQ1czhBQURBZDFQeUFnQUFZQzJFK3pqM3orT1Btem9Bc0diSzViN2s1ZjRiRWFQWFRSOEFBT0M3S1hrQkFBQ3dGbVphZnl1UkFvOGZlTjgyTHdCZzdYNWJqQnhNdG02Nkd5MzJsVXF0dVd6NkFBQUEzMDNKQ3dBQWdJZFdxamJhSCtkbW91VWVPMnFiRndDd1JyOHJLcmNpeHE2YlBBQUF3TDFSOGdJQUFHQ3RoTHV5OGZ6aER6Ni9XZ2tBNEdGYy91M1pwSHZibldpeEZ5dTFabXI2QUFBQTkwYkpDd0FBZ0RWUnFqWm1XNDlya1RKM2JWbE4zcjN3Z3VFREFBL2w1ZjEzSXNhZU5ua0FBSUI3cCtRRkFBREFXcXBIQ3p4V3VXM3FBTUFEdXpBeGx2UjBoYnVxY1NWeFZTTUFBTUI5VWZJQ0FBQmd6WlNxalhyeXhVZTdNSHAyTENYdlRVNFlQZ0R3UU1ZUGZ4WXg5a3lsMWx3MmZRQUFnSHVuNUFVQUFNQmFxMGNML0ZaMXhkUUJnUHQyWm53MDZldStHVEc2cXhvQkFBRHVrNUlYQUFBQWF5M2NSenZidkFDQUIvSEtDeitJR1B0YXBkYWNOWDBBQUlEN28rUUZBQURBbWlwVkd3dXR4OVZvdVYvOTZhZUdEd0RjczVIaFk4bVIzdm1JMGV1bUR3QUFjUCtVdkFBQUFGZ1A0Ylo1RGZiT0o1ZmVQR1h5QU1BOU9UdjhTTVRZSzVWYXMyNzZBQUFBOTAvSkN3QUFnRFZYcWpiUzFtTXhXdTVMcjJ3MmZBRGdPd1hlNGpWdCtnQUFBQTlHeVFzQUFJRDFZcHNYQU1EWENMckZxNjF1K2dBQUFBOUd5UXNBQUlEMVVtLzlyVVFMYlpzWEFQQnR5dVcrWkdEUHpZalJyMVJxelFVbkFBQUE0TUVvZVFFQUFMQXVTdFhHY3VzeEV5MTNlNXZYNklraEJ3QUErRm9Yenc0a1d6ZmRqUmk5YnZvQUFBQVBUc2tMQUFDQTlUUVZNZlEvano5dThnREFWN1MzZUwzY2Z5Tmk5TGxLclprNkFRQUFBQTlPeVFzQUFJQjFVNm8yRmxxUGE5RnlqeDk0M3pZdkFPQXJBbS94bWpaOUFBQ0FoNlBrQlFBQXdIcWJpaGphTmk4QTRNc0NiL0ZhcWRTYWRTY0FBQURnNFNoNUFRQUFzSzVLMVViYWVpeEd5MjJiRndEd1piWjRBUUFBOERDVXZBQUFBTmdJVXhGRDIrWUZBTFFGM3VMVnB1UUZBQUN3QnBTOEFBQUEyQWd6cmIrVmFLRnQ4d0lBMmdKdjhicFNxVFdYblFBQUFJQ0hwK1FGQUFEQXVpdFZHKzJQZXlHM09Oam1CUUN4MmVJRkFBREFXbER5QWdBQVlLUFVJNGEyelFzQVlndTh4ZXRhcGRhY2RRSUFBQURXaHBJWEFBQUFHNkpVYlN5MEhsY2lacmZOQ3dCaXNzVUxBQUNBdGFMa0JRQUF3RVlLK2JIUE5pOEFpQ253RnEvRlNxMDU0d1FBQUFDc0hTVXZBQUFBTmt5cDJtaGYyWE10WW5iYnZBQWdsdUJidkthY0FBQUFnTFdsNUFVQUFNQkdzODBMQUNpOHdGdThWbHAvdG5nQkFBQ3NNU1V2QUFBQU5sU3AybWgvOUZ1TW1OMDJMd0NJSWZnV3IrbEtyYm5zRkFBQUFLd3RKUzhBQUFBNllTcGlhTnU4QUNDR3dGdTgycWFkQUFBQWdMV241QVVBQU1DR0sxVWI5ZVNMcTN6Q3NjMExBSW90K0Jhdks3WjRBUUFBckE4bEx3QUFBRG9sNUphSDlqYXZTMitlTW4wQUtLamdXN3ltbkFBQUFJRDFvZVFGQUFCQXA3UkxYaUczZVYxNlpiUHBBMEFCQmQvaWRiVlNheTQ0QlFBQUFPdER5UXNBQUlDT0tGVWI3YXQ4WmlKbUgreWR0ODBMQUFyb2YvelRnY2hidkthZEFBQUFnUFdqNUFVQUFFQW5UVVVOYnBzWEFCVEx5UEN4NUVqdmZOVDQxeXExWnVvVUFBQUFyQjhsTHdBQUFEcW1WRzBzdEI1WEltYTN6UXNBaXVYczhDT1I0OXZpQlFBQXNNNlV2QUFBQU9pMHNCOEZKOGNOSHdDS0lQZ1dyOFZLclRuakZBQUFBS3d2SlM4QUFBQTZxbFJ0ekxZZTF5Sm0zN2ZydytTOXlRbUhBQUJ5N3NMSjdzanhwNXdBQUFDQTlhZmtCUUFBUUJaTVJRMytWblhGOUFFZ3h5NU1qQ1VIZHk5R2pkL2U0bFYzQ2dBQUFOYWZraGNBQUFBZFY2bzIwaVRvTnErZUhVdTJlUUZBam8wZi9peHkvR2tuQUFBQVlHTW9lUUVBQUpBVllUOFNYajc1NTZSYzduTUNBQ0JuMmx1OCtycHZSbzNmWGtkYWR3b0FBQUEyaHBJWEFBQUFtVkNxTm1aYWo1QjNIWFZ0V1UzZXZmQ0NRd0FBT1hPeCtyOGp4NSt1MUpyTFRnRUFBTURHVVBJQ0FBQWdTNmFpQmo5LytBUGJ2QUFnUnk3LzltelN2ZTFPMVBqdExWNnVhZ1FBQU5oQVNsNEFBQUJrUnFuYXFDZUJ0M245OGZlMmVRRkFIclNMMldPVlc1RmZnUzFlQUFBQUcwekpDd0FBZ0t5WmlocDgvTUQ3eWVpSklTY0FBREx1NHRrQlc3d0FBQURZVUVwZUFBQUFaRXJrYlY1dGw5OTR6Q0VBZ0F4cmIvRjZ1ZjlHNUZjd1k0c1hBQURBeGxQeUFnQUFJSXVtb2dZL1hyNmVYSHJ6bEJNQUFCbjF1L01EeWRaTmQvMU9Bd0FBWUVNcGVRRUFBSkJGTThrWFZ3R0ZkT21WelU0QUFHVFF5UEN4NVBqZTY1RmZ3WlZLcmJuZ0pBQUFBR3c4SlM4QUFBQXlwMVJ0dEs4QW1vNmFmN0IzUG5sdmNzSkJBSUNNdVhDeU8vb3JtSElLQUFBQU9rUEpDd0FBZ0t4cWw3ekNidk42cTdyaUJBQkFobHlZR0VzTzdsNk0vQXBzOFFJQUFPZ2dKUzhBQUFBeUtmbzJyNTRkUzhtZi92QnJCd0VBTW1MaXBYK0wvZ3FtbkFJQUFJRE9VZklDQUFBZ3kwSnY4enAvK0lPa1hPNXpDZ0Nnd3k3LzltelMwM1VyOGl1d3hRc0FBS0REbEx3QUFBRElyT2pidkxxMnJDWi8vUDBMRGdJQWRGQzdjRDFXdVJYOU5VdzVDUUFBQUoybDVBVUFBRURXaGQ3bU5YN2cvZVRjNlpOT0FRQjB5TVd6QTBuM3RqdVJYNEV0WGdBQUFCbWc1QVVBQUVDbVJkL20xWGI1OUhZSEFRQTZZR1Q0V1BKeS80M29yMkhLU1FBQUFPZzhKUzhBQUFEeUlQUTJyOEhlK1dUeTdkZWRBZ0RZWUdlSEgwbTJicm9iK1JYWTRnVUFBSkFSU2w0QUFBQmtubTFlU2ZMdUwvN3FJQURBQnJvd01aWWM2WjJQL2hxbW5BUUFBSUJzVVBJQ0FBQWdMMEp2OCtyWnNaVDg2USsvZGdvQVlJTk12UFJ2MFYrQkxWNEFBQUFab3VRRkFBQkFMdGptbFNUbkQzK1FsTXQ5RGdNQXJMUEx2ejJiOUhUZGl2NGFwcHdFQUFDQTdGRHlBZ0FBSUU5Q2IvUHEyckthL1BIM0x6Z0ZBTENPMm9YcVh3MStHUDAxMk9JRkFBQ1FNVXBlQUFBQTVJWnRYa2t5ZnVEOTVOS2JweHdHQUZnbnZ6cy9rR3pkZERmNmE1aHlFZ0FBQUxKRnlRc0FBSUJjS1ZVYlU2M0hZdVIzTURudUhBREFlaGdaUHBZYzMzczkrbXV3eFFzQUFDQ0RsTHdBQUFESW82bkk0ZmZ0K2pCNWIzTENLUUNBTmZhYjE3cThCRnU4QUFBQU1rbkpDd0FBZ053cFZSdjFKUGcycjhzbi81eVV5MzBPQXdDc2tYY3Vua3I2dW05R2Z3MS9zTVVMQUFBZ201UzhBQUFBeUt1cHlPRzd0cXdtLy9LYncwNEJBS3lCZG5INlY0ZHZSMzhOSzYyL2FhY0JBQUFnbTVTOEFBQUF5Q1hidkpMay9QUC9NemwzK3FUREFBQVA2ZUxaZ2FSNzI1M29yMkc2VW1zdU93MEFBQURacE9RRkFBQkFuazFGZndHWFQyOTNDZ0RnSVl3TUgwdGVmZVo2OU5kZ2l4Y0FBRURHS1hrQkFBQ1FXMy9iNW5VdDhqc1k3SjFQM3B1Y2NCZ0E0QUg5NXJVdUw4RVdMd0FBZ014VDhnSUFBQ0R2cHFLL2dNc24vNXlVeTMxT0FnRGNwM2N1bmtyNnVtOUdmdzN0NjY5dDhRSUFBTWc0SlM4QUFBQnlyVlJ0cEVud2JWNWRXMWFUUC83K0JZY0JBTzVEdXlEOVR5Lzl4WXRJa2lsYnZBQUFBTEpQeVFzQUFJQWltSXIrQXNZUHZKOWNldk9Va3dBQTkraDM1d2VTclp2dVJuOE5pNVZhcys0MEFBQUFaSitTRndBQUFMbjN0MjFlVjZPL2g4bHhad0VBN3NXWjhkSGsrTjdyWG9TaVBBQUFRRzRvZVFFQUFGQVVrOUZmd0w1ZEh5Wi8rc092blFRQStBNlhYdm5NUzBpU2E3WjRBUUFBNUllU0Z3QUFBSVZRcWpZV1dvOHIwZC9EK2NNZkpLTW5oaHdJQVBnRy8vTGZYMDk2dW01NUViWjRBUUFBNUlxU0Z3QUFBRVV5MWZwYmlmd0N1cmFzSnBmZmVNeEpBSUN2VVM3M0pXUFAzdkFpdnRqaWxYb05BQUFBK2ZIL0JHRHYvbVBzcXU4Ny83OWIrY29tbXduVUd6ZEtYQ3RReGppQ2t1dElNRmphQ0YreitFZUtNeDRiTytzWWZCbXZGUXh5VThZT0RVRlFQRTRoWVdtVWpFbWk0a1NvWTVMUWFJT0VRZC9xRzNZajlUcGY2U3ZsSnJxMWxYOEtUTEF0WXBLTjZXWUdWNmJ1cU11ZTQrc0VITnZqK1hGL25IdnY0eUVkSGFYaXg1M1hIUnFrUFBYNWlMd0FBQUJvRzJkTzh4cnE5QjJXZFkvRXdMWU5maUVBNEhjOGRPYzFNV2ZXS1VORTlKc0FBQUNndFlpOEFBQUFhRGRwNURYVzZTUDg1ZHBmblQ2dEJBQ291bXRMWDN6NGZVY05FYkV2WDZ3Y01RTUFBRUJyRVhrQkFBRFFWbktGOG1oVXIyM3NhT20xalEvZWVZTmZDQUNJNmpXTm43amhmeHVpR3NJUG1nRUFBS0QxaUx3QUFBQm9PN2xDT1QzTnErT1A2dGgwL1l1eDlmWSt2eEFBZEx6dG14YkgzRXRPR0NKaXlDbGVBQUFBclVua0JRQUFRTHNhTUVFeVFxOE5BT2hzNjNwWHhySXJSd3hSUGNWcnlBd0FBQUN0U2VRRkFBQkFXOG9WeXZ1VDE0Rk8zMkhSdkdQeDFkMjMrWVVBb0dOdFhmR1dFYW9HODhYS3FCa0FBQUJhazhnTEFBQ0FkalpvZ29odE43NFU2OWV1TWdRQUhlZVIremJFL0s3amhvZzRtaTlXbk9JRkFBRFF3a1JlQUFBQXRLMWNvVnhLWHZzc0ViRno3WHVNQUVCSFdYN1RqWEhMMWE1cFBLUGZCQUFBQUsxTjVBVUFBRUM3R3pSQnhIVUxEc2VqOTI4eUJBQWQ0ODZQZHhtaDZrQytXQ21aQVFBQW9MV0p2QUFBQUdocnVVTDVTUExhYlltSVR5MDlGaXR2WG1vSUFOcmVnenMyeE1LNXJ4bWlhc0FFQUFBQXJVL2tCUUFBUUNjWVNwNnhUaCtoYS9iSjJGVjhuOThHQU5wYWVrM2o2ajk1MVJCVisvTEZ5a0V6QUFBQXRENlJGd0FBQUcwdlZ5aVBobE1zVG5OdEl3RHRMcjJtY2M2c1U0YW9CdTcrL1FjQUFLQk5pTHdBQUFEb0NMbENlVGg1SGJLRWF4c0JhRit1YVR6TFVMNVlHVFVEQUFCQWV4QjVBUUFBMEVtY1poR3ViUVNnUGJtbThTeEg4OFhLb0JrQUFBRGFoOGdMQUFDQWpwRXJsRXZKNnpsTHVMWVJnUGJqbXNhekNOc0JBQURhak1nTEFBQ0FUdU4vOUR6RHRZMEF0QXZYTko3bFFMNVkyVzhHQUFDQTlpTHlBZ0FBb0tQa0N1VWp5V3UzSlZ6YkNFQjdjRTNqT1FUdEFBQUFiVWprQlFBQVFDY2FTcDZqWm5CdEl3Q3R6eldOWjltVEwxWU9tZ0VBQUtEOWlMd0FBQURvT0xsQ2VUUjVEVnFpeXJXTkFMUXExelNlWmN5LzN3QUFBTFF2a1JjQUFBQWRLVmNvRHlldkE1WndiU01BcmNrMWplY1l6QmNybzJZQUFBQm9UeUl2QUFBQU90bUFDYXBjMndoQXEzRk40MWtPNVl1VklUTUFBQUMwTDVFWEFBQUFIU3RYS0I5TVhuc3NVZVhhUmdCYWhXc2F6eUZjQndBQWFITWlMd0FBQURyZFlQS01tYUY2YmVPWDd2d0RRd0NRYWV0NlY4YjZ4U09HZU51K2ZMRlNNZ01BQUVCN0Uza0JBQURRMFhLRjhtZzQvZUszRnMwN0ZsL2RmWnNoQU1pc3JTdmVNc0xiMGxCOTBBd0FBQUR0VCtRRkFBQkF4OHNWeXNQSjY0QWxxcmJkK0ZLc1g3dktFQUJremlQM2JZajVYY2NOOGJhaGZMRnl4QXdBQUFEdFQrUUZBQUFBVlU3emVvZGRuNXdUM2QwTERRRkFabXpldURwdXVkbzFqZTl3TkYrc0RKb0JBQUNnTTRpOEFBQUFJRTZmNW5Vd2VlMnhSRlY2YmVPRGQ5NWdDQUF5SVEyUHR4VGVNTVRaK2swQUFBRFFPVVJlQUFBQThMYkI1Qmt6UTlXbTYxK01yYmYzR1FLQXBydTMvOXFZZThrSlE3eHRYNzVZS1prQkFBQ2djNGk4QUFBQTRJeGNvVHdhcm0wOHkyTzMvOXExalFBMDFWMWIrbUxKZ3NPR2VOdVlmMThCQUFEb1BDSXZBQUFBZUlkY29UeWN2QTVZb3FwcjlzbjQrbjNYR1FLQXBsaCswNDNSLzlGZkd1SnNnL2xpWmRRTUFBQUFuVVhrQlFBQUFPZHlPc1k3TE9zZWlVZnYzMlFJQUJydXpvOTN4WnhacHd6eHRrUDVZbVhJREFBQUFKMUg1QVVBQUFDL0kxY29IMHhldXkzeHRrOHRQUmJyMTY0eUJBQU44OGg5RzJMaDNOY01jYlorRXdBQUFIUW1rUmNBQUFDY1gzcEt4bEV6VktYWE51NzY1QnhEQU5BUTYzcFh4aTFYanhqaWJIdnl4Y3BCTXdBQUFIUW1rUmNBQUFDY1I2NVFIZzNYTnA1bDBieGpNZnpZN1lZQW9LNjZ1eGZHbi8zcG00WTQyMWp5REpvQkFBQ2djNG04QUFBQTRBSnloZkwrNVBXY0pkNjI2Zm9YWTJEYkJrTUFVRGYzOWw4YmN5ODVZWWl6OWVlTGxWRXpBQUFBZEM2UkZ3QUFBRXdzUGMxcnpBeHYrOHUxdnpwOXlnb0ExTnJPdTIrTkpRc09HK0pzQi9MRnluNHpBQUFBZERhUkZ3QUFBRXdnVnlnZkNkY2puYVZyOXNsNDZxR1BHQUtBbWxwKzA0M3hpZXVPR2VKc2FXamVid1lBQUFCRVhnQUFBSEFSdVVKNUtIa2Rzc1Ricmx0d09MNjYrelpEQUZBekErdm14SnhacHd4eHRzRjhzWExFREFBQUFJaThBQUFBWUhMNlRYQzJiVGUrRkZ0djd6TUVBRFAybFljMnhQeXU0NFk0MjZGOHNUSmtCZ0FBQUZJaUx3QUFBSmlFWEtGOE1IbnR0c1RaSGx4L0tycTdGeG9DZ0dtN2EwdGZMTHR5eEJEbjZqY0JBQUFBdnlIeUFnQUFnTWxMVDlNNGFvYTN6Yi8wOWZqNmZkY1pBb0JwV1g3VGpkSC8wVjhhNGx4NzhzWEtRVE1BQUFEd0d5SXZBQUFBbUtSY29Ud2FUdFU0eDdMdWtYajAvazJHQUdES0J0Yk5pVG16VGhuaWJHbFFQbWdHQUFBQTNrbmtCUUFBQUZPUUs1Ukx5V3VQSmM2MmM4WExzWDd0S2tNQU1HbGZlV2hEek84NmJvaHo5ZWVMbFZFekFBQUE4RTRpTHdBQUFKaTZ3ZVFaTThQWi92cU8zNHZ1N29XR0FPQ2k3dHJTRjh1dUhESEV1ZEpyR2t0bUFBQUE0SGVKdkFBQUFHQ0tYTnQ0ZnZNdmZUMitmdDkxaGdCZ1FzdHZ1akg2UC9wTFE1d3JEY2dIelFBQUFNRDVpTHdBQUFCZ0duS0Y4djdrOVp3bHpyYXNleVFldlgrVElRQzRvSUYxYzJMT3JGT0dPSmRyR2dFQUFMZ2drUmNBQUFCTVgzKzR0dkVjTzFlOEhGdHY3ek1FQU9mNHlrTWJZbjdYY1VPYzY3bDhzYkxmREFBQUFGeUl5QXNBQUFDbXliV05GL2JZN2IrTzd1NkZoZ0RndDNiZWZXc3N1M0xFRU9jYTgrOFRBQUFBWEl6SUN3QUFBR2JBdFkzbjF6WDdaRHoxMEVjTUFjQnA2M3BYeGlldU8yYUk4M05OSXdBQUFCY2w4Z0lBQUlDWjZ3L1hOcDdqdWdXSFkvaXgydzBCME9IU2t4MjNybmdyNXN3NlpZeHp1YVlSQUFDQVNSRjVBUUFBd0F5NXR2SENObDMvWWd4czIyQUlnQTUyYi8rMU1iL3J1Q0hPNVpwR0FBQUFKazNrQlFBQUFEWGcyc1lMKzh1MXY0cjFhMWNaQXFBRFBiaGpReXhaY05nUTUrZWFSZ0FBQUNaTjVBVUFBQUMxMHgrdWJUeEgxK3lUc2V1VGMwNWYxd1ZBNTlpOGNYV3NYenhpaVBOelRTTUFBQUJUSXZJQ0FBQ0FHbkZ0NDRVdG1uY3N2bjdmZFlZQTZCQnAyTHQ5K2V1R09EL1hOQUlBQURCbElpOEFBQUNvSWRjMlh0aXk3cEY0OVA1TmhnRG9BSHNHcm9nNXMwNFo0dnhjMHdnQUFNQ1VpYndBQUFDZzl2ckR0WTNudFhQRnk3SDE5ajVEQUxTeEp4NWVGL083amh2aS9GelRDQUFBd0xTSXZBQUFBS0RHWE5zNHNjZHUvM1dzdkhtcElRRGEwTTY3YjQwbEN3NGI0dnhjMHdnQUFNQzBpYndBQUFDZ0RsemJlR0ZkczAvR2wrNzhnK2p1WG1nTWdEYXlybmRsRkplOFlvZ0xjMDBqQUFBQTB5YnlBZ0FBZ1BycFQ1NmpaampYb25uSDR0RS83ekVFUUp0SXc5M1BybkZUOFFUMnVLWVJBQUNBbVJCNUFRQUFRSjI0dG5GaXZkZStGSS9ldjhrUUFHMWd6OEFWTVdmV0tVT2NYeHA4RDVvQkFBQ0FtUkI1QVFBQVFCM2xDdVZTOHRwamlmUGJ1ZUxsR05pMndSQUFMZXlKaDlmRi9LN2pocmd3MXpRQ0FBQXdZeUl2QUFBQXFML0I1RGxraHZQN3k3Vy9pdlZyVnhrQ29BVTl1R05ETEZsdzJCQVh0anRmckpUTUFBQUF3RXlKdkFBQUFLRE9YTnM0c2E3WkoyUFhKK2RFZC9kQ1l3QzBrTTBiVjhmNnhTT0d1TEJEK1dKbDBBd0FBQURVZ3NnTEFBQUFHaUJYS0I5TVhyc3RjWDZMNWgyTHB4NzZpQ0VBV3NTNjNwV3hmZm5yaHJpd3NSQjRBd0FBVUVNaUx3QUFBR2lRWEtFOG1Md09XT0w4cmx0d09JWWZ1OTBRQUJtWG5yeTRkY1ZiTVdmV0tXTmMyR0MrV0Rsb0JnQUFBR3BGNUFVQUFBQ04xUi9WMHowNGowM1h2eGdQREd3MEJFQ0dmWEg3VlRHLzY3Z2hMdXhBdmxnWk1nTUFBQUMxSlBJQ0FBQ0FCc29WeWtmQzlVMFQyclhtWjdGKzdTcERBR1RRRXcrdmk0VnpYelBFaGFVaGQ1OFpBQUFBcURXUkZ3QUFBRFJZcmxEZW43ejJXZUxDOW01N1UrZ0ZrREU3Nzc0MWxpdzRiSWlKOWVlTGxWRXpBQUFBVUdzaUx3QUFBR2lPZ2VRNWFvYno2NXA5TW5aOWNrNTBkeTgwQmtBR2JONjRPb3BMWGpIRXhQYmtpNVg5WmdBQUFLQWVSRjRBQUFEUUJMbENPVDNsdzNWT0UxZzA3MWc4OWRCSERBSFFaT3Q2VjhiMjVhOGJZbUtIa21mUURBQUFBTlNMeUFzQUFBQ2FKRmNvSDB4ZXV5MXhZZGN0T0J6UFBINmJJUUNhSkQxUmNldUt0MkxPckZQR3VMQ3hjRTBqQUFBQWRTYnlBZ0FBZ0NiS0ZjcUR5ZXVBSlM2czk5cVg0dEg3TnhrQ29BbjJERndSODd1T0cySmlnL2xpNWFBWkFBQUFxQ2VSRndBQUFEUmZlbTNqbUJrdWJPZUtsK09CZ1kyR0FHaWdKeDVlSi9DNnVPZnl4Y3FRR1FBQUFLZzNrUmNBQUFBMFdhNVFUcTkzNnJmRXhIYXUra1dzWDd2S0VBQU44TWg5RzJMSmdzT0dtTmhSLy8wTkFBQkFvNGk4QUFBQUlBTnloZkwrNUxYSEVoZldOZnRrN04zMlpxeThlYWt4QU9wbzU5MjN4aTFYanhqaTR2cnp4Y3FvR1FBQUFHZ0VrUmNBQUFCa1JLNVFIa2hlaHl4eFlXbm85YVU3L3lDNnV4Y2FBNkFPTm05Y0hjVWxyeGppNG5ibmk1V1NHUUFBQUdnVWtSY0FBQUJrUzEveWpKbmh3aGJOT3hiUGZ1RWFRd0RVMkxyZWxiRjkrZXVHdUxnRCtXSmwwQXdBQUFBMGtzZ0xBQUFBTWlSWEtCOUpYdjJXbUZnYWVqM3orRzJHQUtpUjlJVEV6NjRaaXptelRobGpZbW1JM1djR0FBQUFHazNrQlFBQUFCbVRLNVQzSjY4OWxwaFk3N1V2eGZCanR4c0NZSWJTd0d2UHdCVUNyOG5weXhjcm8yWUFBQUNnMFVSZUFBQUFrRTJEeVhQSURCUGJkUDJMOGNEQVJrTUF6TUFYdDE4Vjg3dU9HK0xpZHVlTGxaSVpBQUFBYUFhUkZ3QUFBR1JRcmxCT1R3bEpyNE1hczhiRWRxMzVtZEFMWUpxZWVIaGRMSno3bWlFdTdrQytXQmswQXdBQUFNMGk4Z0lBQUlDTXloWEtSNUpYdnlVdWJ1ZXFYOFQ2dGFzTUFUQUZhZUMxWk1GaFExeGNHbHozbVFFQUFJQm1FbmtCQUFCQWh1VUs1ZjNKYTQ4bEp0WTErMlRzM2ZhbTBBdGdrbmJlZmF2QWEvTDY4c1hLcUJrQUFBQm9KcEVYQUFBQVpGeXVVQjVJWG9jc01iSGZoRjdkM1F1TkFUQ0JOUEFxTG5uRkVKT3pJMStzbE13QUFBQkFzNG04QUFBQW9EV2sxMFNObVdGaWFlajE3QmV1RVhvQlhNRG1qYXNGWHBQM1hMNVlHVElEQUFBQVdTRHlBZ0FBZ0JhUUs1U1BKSzkrUzF6Y29ubkhoRjRBNTdHdWQyVnNYLzY2SVNibnFQL2VCUUFBSUV0RVhnQUFBTkFpY29YeS91UzEyeElYbDRaZVg3L3ZPa01BbkpFR1hwOWRNeFp6WnAweXhzV2xKMmYyNVl1VlVWTUFBQUNRRlNJdkFBQUFhQ0c1UW5rd2VSMnd4TVV0Nng2Slp4Ni96UkJBeDB0UE52eXpQMzFUNERWNUEvbGk1YUFaQUFBQXlCS1JGd0FBQUxTZXZxaGVJOFZGOUY3N2t0QUw2R2hwNExWbjRJcVllOGtKWTB6T3ZueXhNbXdHQUFBQXNrYmtCUUFBQUMwbVZ5aW4xMGYxV1dKeTB0RHIwZnMzR1FMb09MOEp2T1ozSFRmRzVCektGeXY5WmdBQUFDQ0xSRjRBQUFEUWduS0ZjbnFOMUJaTFRNN09GUy9IQXdNYkRRRjBGSUhYbEl5RmdCb0FBSUFNRTNrQkFBQkFpOG9WeXNQSmE1OGxKbWZYbXA4SnZZQ084Y1RENndSZVU5T1hMMWFPbUFFQUFJQ3NFbmtCQUFCQUM4c1Z5djNKNjVBbEprZm9CWFNDTlBCYXN1Q3dJU1p2Ujc1WUtaa0JBQUNBTEJONUFRQUFRT3NyUlBXYUtTWWhEYjNXcjExbENLQXRDYnltYkYrK1dCa3lBd0FBQUZrbjhnSUFBSUFXbHl1VVI2TWFlakZKZTdlOUtmUUMybzdBYThyU2t6QUh6QUFBQUVBckVIa0JBQUJBRzhnVnlnZVQxeFpMVEU3WDdKTkNMNkN0N0x6N1ZvSFgxS1FuWVBibGk1VlJVd0FBQU5BS1JGNEFBQURRSm5LRjhuRHkybWVKeVJGNkFlMGlEYnlLUzE0eHhOU2tnZGNSTXdBQUFOQXFSRjRBQUFEUVJuS0ZjbjlVcjU5aUVvUmVRS3NUZUUzTGpueXhVaklEQUFBQXJVVGtCUUFBQU8ybmtEeEh6VEE1UWkrZ1ZRbThwbVZmdmxnWk1nTUFBQUN0UnVRRkFBQUFiU1pYS0k4bXI3N2tHYlBHNUtTaDExL2Y4WHZSM2IzUUdFQkxFSGhOeTZGOHNkSnZCZ0FBQUZxUnlBc0FBQURhVUs1UVBwaThCaXd4ZWZNdmZUMmUvY0kxUWk4Zzh3UmUwNUtHendVekFBQUEwS3BFWGdBQUFOQ21jb1h5Y1BMYWJZbkpXelR2bU5BTHlEU0IxN1NjRHJ6eXhjcW9LUUFBQUdoVklpOEFBQUJvWTdsQ2VUQjU3YlBFNUFtOWdLd1NlRTNiUUw1WU9XZ0dBQUFBV3BuSUN3QUFBTnBmZW0zaklUTk1udEFMeUJxQjE3VHR6aGNydzJZQUFBQ2cxWW04QUFBQW9NM2xDdVgwZXFwQ1ZLK3JZcEtFWGtCV0NMeW1iVisrV0JrMEF3QUFBTzFBNUFVQUFBQWRRT2cxUFVJdm9Oa0VYdE9Xbm1BNVlBWUFBQURhaGNnTEFBQUFPa1N1VUQ0WS9nZnZLUk42QWMwaThKcTJOR2d1NUl1VlVWTUFBQURRTGtSZUFBQUEwRUZ5aGZKdzh0cHRpYWtSZWdHTkp2Q2FOb0VYQUFBQWJVbmtCUUFBQUIwbVZ5Z1BKcTk5bHBnYW9SZlFLQUt2R2VuUEZ5c0h6UUFBQUVDN0VYa0JBQUJBQjhvVnl2M0o2NUFscGtib0JkU2J3R3RHdHVTTGxmMW1BQUFBb0IySnZBQUFBS0J6RlVMb05XVkNMNkJlQkY0enNpOWZyQXliQVFBQWdIWWw4Z0lBQUlBT2xTdVVSNU5YZi9LTVdXTnEwdERyUjEvN1FLeGZ1OG9ZUUUwSXZHYmt1WHl4MG04R0FBQUEycG5JQ3dBQUFEcFlybEErR05VVHZaaWlydGtuWSsrMk40VmV3SXdKdkdZa1BaR3kzd3dBQUFDME81RVhBQUFBZExnem9kY1dTMHlkMEF1WUtZSFhqS1FuVVJieXhjcW9LUUFBQUdoM0lpOEFBQUFnRGIyR2s5Y09TMHlkMEF1WUxvSFhqQWk4QUFBQTZDZ2lMd0FBQU9DMFhLRThsTHoyV1dMcWhGN0FWRDN4OERxQjE4ejA1WXVWZzJZQUFBQ2dVNGk4QUFBQWdOL0tGY3I5SWZTYWx0K0VYbHR2N3pNR01LRTA4RnF5NExBaHBtOUx2bGdwbVFFQUFJQk9JdklDQUFBQWZ0ZEE4aHd5dzlTbG9kZmZiRDBXRHd4c05BWndYZ0t2R2R1UkwxYUd6UUFBQUVDbkVYa0JBQUFBWjhrVnlxUEpxeEJDcjJuYnRlWm5RaS9nSEFLdkdkdVhMMWFHekFBQUFFQW5FbmtCQUFBQTV6Z1RlcVgzRG81WlkzcUVYc0J2ZEhjdmpMLy8yZ3FCMTh5a2dWZS9HUUFBQU9oVUlpOEFBQURndkhLRjhwR29udWdsOUpxbU5QUWFmdXgyUTBBSFN3T3ZQUU5YeFB5dTQ4YVl2dlJreVFFekFBQUEwTWxFWGdBQUFNQUY1UXJsZzFFOTBZdHAyblQ5aS9ITTQ3Y1pBanFRd0tzbTBzQ3JrQzlXUmswQkFBQkFKeE41QVFBQUFCUEtGY3FsNUxYRkV0UFhlKzFMUWkvb01PdDZWOFkzN24yL3dHdG0wcE1rQlY0QUFBQVFJaThBQUFCZ0VuS0Y4bkFJdldZa0RiMysvNmMrY2Zwa0g2QzlwWUhYWjllTXhkeExUaGhqK2dSZUFBQUE4QTRpTHdBQUFHQlN6b1JlZXl3eGZkY3RPQnpQZnVFYW9SZTBzYzBiVjU4T3ZPYk1PbVdNNmZ0TjRIWFFGQUFBQUZBbDhnSUFBQUFtTFZjb0R5U3ZmWmFZdmtYempwME92VmJldk5RWTBHWjIzbjFyZk9aanh3UmVNOWNuOEFJQUFJQ3ppYndBQUFDQUtja1Z5djBoOUpxUk5QUjYrdDZJOVd0WEdRUGFSQnA0RlplOFlvaVoyNUl2VmtwbUFBQUFnTE9KdkFBQUFJQXBPeE42SGJERTlIWE5QaGw3dDcwWlcyL3ZNd2EwdUNjZVhpZndxbzAwOEJvMkF3QUFBSnhMNUFVQUFBQk1WMW9uSFRMRDlLV2gxOTlzUFJZUERHdzBCclNvTlBCYXN1Q3dJV1pPNEFVQUFBQVRFSGtCQUFBQTA1SXJsRWVUVnlHRVhqTzJhODNQNHRIN054a0NXa2gzOThMNCs2K3RFSGpWeGo2QkZ3QUFBRXhNNUFVQUFBQk1tOUNyZG5hdWVEbWVlZncyUTBBTFNBT3ZQUU5YeFB5dTQ4YVl1VFR3NmpjREFBQUFURXprQlFBQUFNeklPMEt2TVd2TVRPKzFMOFVMMy96azZZQUV5S1oxdlN2ajIvZi9SNEZYYlFpOEFBQUFZSkpFWGdBQUFNQ01DYjFxWjFuM1NEejdoV3VFWHBCQm16ZXVqcyt1R1lzNXMwNFpZK1lFWGdBQUFEQUZJaThBQUFDZ0puS0Y4c0VRZXRYRW9ubkg0bjkrcVR2V3IxMWxETWlJblhmZkdwLzUyREdCVjIwY0VIZ0JBQURBMUlpOEFBQUFnSm9SZXRYTy9FdGZqNzNiM295dHQvY1pBNXJzS3c5dGlPS1NWd3hSRzRlU3gvOWpBd0FBZ0NrU2VRRUFBQUExSmZTcW5hN1pKK052dGg2TEJ3WTJHZ09hSUwwMjlZbUgxOFd5SzBlTVVSdHA0RlhJRnl1anBnQUFBSUNwRVhrQkFBQUFOU2YwcXExZGEzNFd3NC9kYmdob29EVHcyak53UlN4WmNOZ1l0U0h3QWdBQWdCa1FlUUVBQUFCMThZN1FpeHJZZFAyTDhjemp0NTBPVDRENld0ZTdNcjV4Ny90amZ0ZHhZOVNHd0FzQUFBQm1TT1FGQUFBQTFNMlowR3VMSldxajk5cVg0dGt2WEpPWjBHdnNYLzdWbDBMYnVXdExYM3gyelZqTXZlU0VNV3BENEFVQUFBQTFJUElDQUFBQTZpcFhLQStIMEt0bUZzMDdGai82MmdkaS9kcFZUZjhzenp6Ny9kaTBaMTc4K05VLzlzWFFGaDdjc1NIdUtoeU5PYk5PR2FNMkJGNEFBQUJRSXlJdkFBQUFvTzZFWHJYVk5mdGs3TjMyWmp3d3NMSHBueVVOdmY3VDV1L0ZYL3pkSDhleE45N3J5NkZsUGZId3VsaS9lTVFRdFNQd0FnQUFnQm9TZVFFQUFBQU5JZlNxclRUMDJyWG1aL0hWM2JkbDR2UHMyZnU5V0w3emxkajd3dy9GaVZQdjlnWFJNdExyVC8vK2F5dGl5WUxEeHFnZGdSY0FBQURVbU1nTEFBQUFhQmloVisxdHUvR2xlT2J4MjA2SEtzMDJNdkp5ZlBxaDc4U212NDc0aDVldjh1V1FlZXQ2VjhZMzduMS96Tzg2Ym96YUVYZ0JBQUJBSFlpOEFBQUFnSVlTZXRWZTc3VXZ4Yk5mdUNaVzNydzBFNS9uaFI4Y2lKV2YrcnU0KzhrRnJuQWtzKzdhMGhlZlhUTVdjeTg1WVl6YUVYZ0JBQUJBbllpOEFBQUFnSVlUZXRYZW9ubkg0dWw3STlhdlhaV1p6L1RrdC9iSEZiMHZ4SmRmV09RS1J6TGxrZnMyeEYyRm96Rm4xaWxqMUk3QUN3QUFBT3BJNUFVQUFBQTBoZENyOXJwbW40eW4vL3lmNDRHQmpabjZYSi83NHROeHcvYlg0dm1mZnNpWFJGT2wxNW8rOVZoZjNITDFpREZxUytBRkFBQUFkU2J5QWdBQUFKcEc2RlVmdTliOExKNTUvTFpNZmFhUmtaZGovYWUvRTV2MnpJc2Z2L3JIdmlRYWJ2bE5OOGFlZ1N2aXcrODdhb3phRW5nQkFBQkFBNGk4QUFBQWdLWVNldFZINzdVdnhVLy9lOS9wazR1eTVKbG52eC8vYWZQMzR2UDdGOGF4Tjk3cmk2SWhObTljSFg5MTI3L0YvSzdqeHFndGdSY0FBQUEwaU1nTEFBQUFhTHAzaEY1ajFxaWRSZk9PeFkrKzlvRll2M1pWNWo3YncwUGZqZVU3WDRtOVAzU0ZJL1gxeUgwYjRqTWZPeFp6WnAweVJtMEp2QUFBQUtDQlJGNEFBQUJBSnB3SnZRb2g5S3FwcnRrbjQray8vK2Q0WUdCajVqNWJlb1hqcHgvNlRuejg0WGU3d3BHYVMwK3hlK3F4dnJqbDZoRmoxSjdBQ3dBQUFCcnM5OTU2NnkwckFBQUFBSmt4WHVwWm5MeEt5WE9wTldycitaOWVGWjk3dkh3NnJzcWlyWnY3NHNFTmI4Yjg5N3plbHZ1bklWdDZWU1gxdDY1M1pXeGQ4WmJyR2V0RDRBVUFBQUJONENRdkFBQUFJRk55aGZMQmNLSlhYZlJlKzFJOCs0VnJZdVhOU3pQNStaNzgxdjY0b3ZlRjAxYzRuamoxYmw4WTAzTFhscjc0N0pveGdWZDlDTHdBQUFDZ1NVUmVBQUFBUU9ZSXZlcG4wYnhqOGZTOUVRUGJObVQyTTZaWE9ONncvYlY0L3FjZjhvVXhKVjk1YUVQY1ZUZ2FjMmFkTWtidEhRaUJGd0FBQURTTjZ4b0JBQUNBekhKMVkzM3QvZUZWOGVsZDM4bjBaMHl2Y1B5dkszSngvWUpYV241djF6WFdUM2Yzd3ZqaTlxdGk0ZHpYakZFZisvTEZTcjhaQUFBQW9IbEVYZ0FBQUVDbW5RbTk5aWZQQjYxUmV6OTU5WW9vZnY0ZlkyVGs1VXgvemdjSE5zYU9qLzBpdW1iL1M4dHVMZktxajgwYlY4ZjI1YTg3dmF0K0JGNEFBQUNRQWE1ckJBQUFBREx0ek5XTmFlaDF5QnExZDkyQ3cvR2pyMzBnMXE5ZGxlblArZkRRZDA5ZjRmajBqMTNoeU5zZXVXOURmT1pqeHdSZTlTUHdBZ0FBZ0l3UWVRRUFBQUNabHl1VVI1TlhJWVJlZGRFMSsyUTgvZWYvSEkvZXZ5blRuek05YmF6L0w3NFRIMy80M2FkUHhhSnpwZGN6UHZWWVg5eHk5WWd4NmtmZ0JRQUFBQm5pdWtZQUFBQ2daWXlYZWk1TFhxWGt5VnVqUHY1aHBEdTIvN2VmWlA3Nnh0UTkyemJFd0MxdnhQejN2TjRTMjdxdXNUYlc5YTZNUC92VE4yUHVKU2VNVVQ5YjhzWEtzQmtBQUFBZ081emtCUUFBQUxTTWQ1em90YzhhOWJHc2V5VCs1NWU2TTM5OVkyclAzdS9GRmIwdnhONGZmaWhPbkhxM0w2OERQTGhqUXp4MDY2OEVYdlVsOEFJQUFJQU1jcElYQUFBQTBKTEdTejNEeWVzT1M5VFBsLy9Id3ZqY0Y1OXVpYys2OHVhbDhhazFmeFM5MS81VFpqK2prN3ltTDcyZThhRTdyNGtQdisrb01lcEw0QVVBQUFBWkpmSUNBQUFBV3BiUXEvNSs4dW9WVWZ6OFA3YkU5WTJwclp2NzRwN2VpQS9OZXpWem4wM2tOVDJiTjY2TzdjdGZqem16VGhtamZzYVNweTlmckpSTUFRQUFBTm5rdWtZQUFBQ2daZVVLNWY3a3RjTVM5WFBkZ3NQeG82OTlJTGJlM3RjU24vZkpiKzJQRDIvWUgxOStZWkVySE52QUkvZHRpTTk4N0pqQXE3N1N3S3NnOEFJQUFJQnNFM2tCQUFBQUxTMVhLQThscnkyV3FKK3UyU2ZqYjdZZWk2L3V2cTFsUG5ONnplUU4yMStMcDMvOElWOWdDMXArMDQzeHZhL2NFcmRjUFdLTStrcnZ2MHdEcjRPbUFBQUFnR3h6WFNNQUFBRFFGc1pMUGYzSkt3MitMclZHL2J4NGZIN2MrNDFmeHdzL09OQXluM245MmxXeFkxMVhYTC9nbGFaK0R0YzFUczVkVy9xaS82Ty9kSHBYL1IyS2F1QTFhZ29BQUFESVBwRVhBQUFBMERiR1N6MkxrMWNwaEY1MWRlTFV1K0t2bnYzREdOcmJXc0hTUGRzMnhNQXRiOFQ4OTd6ZWxMKy95R3RpM2QwTFkvdW14YkhzU3FkM05ZREFDd0FBQUZxTXlBc0FBQUJvSzBLdnhubitwMWZGNXg0dng4akl5eTN6bWRPUTZKNWlUMnk2NGVmUk5mdGZHdnIzRm5sZDJMcmVsYkYxeFZzeHYrdTRNZXB2WC9JTUNMd0FBQUNndFlpOEFBQUFnTFl6WHVxNUxLcWhWOTRhOVhWczdMM3g4RE96NDhsdjcyK3B6NzN5NXFXeDg3OThJSll0ZktsaGYwK1IxL2s5dUdORHJGL3M5SzRHMlpjdlZ2ck5BQUFBQUsxSDVBVUFBQUMwSmFGWFkrMzk0Vlh4NlYzZmFiblB2WFZ6WHp5NDRjMkdYT0VvOGpyYjhwdHVqRHMvM2hVTDU3NW1qTWJZa1M5V2hzd0FBQUFBclVua0JRQUFBTFMxOFZMUGNQSzZ3eEwxOStMeCtYSHZOMzRkTC96Z1FNdDk5a2Z2M3hTZktoeXI2eFdPSXErMzNiV2xML28vK3N1WU0rdVVNUnBqUzc1WUdUWURBQUFBdEs3Zk53RUFBQURRem5LRmNuL3kybU9KK2xzMDcxZzhmVzgxbUdvMW4vdmkwM0hEOXRmaStaOSt5QmRaUjkzZEMrT3B4L3JpcnNKUmdWZGpqQ1hQUndSZUFBQUEwUHFjNUFVQUFBQjBoUEZTVDMveStsdExOTVpQWHIwaWlwLy94eGdaZWJubFB2djZ0YXRpeDdxdXVIN0JLelg5NjNiNlNWNmJONjZPTFlVM1l1NGxKL3dEMGhoSGs2Y3ZYNndjTkFVQUFBQzBQcEVYQUFBQTBESEdTejE5eVdzNGVTNjFSdjJkT1BXdStLdG4vekNHOXJabTJQVGd3TWJZZXRPdlkvNTdYcS9KWDY5VEk2LzA5Szd0bXhiSHNpdEgvRVBST0llU3A1QXZWa1pOQVFBQUFPMUI1QVVBQUFCMGxQRlN6K0xrVlFxaFY4UDh3MGgzYlA5dlAybkpVNzNTUU9tZVlrOXN1L0dmWnZ6WDZzVEl5K2xkVGZGYzh2UUx2QUFBQUtDOWlMd0FBQUNBampOZTZya3NxcUZYM2hxTjBlcW5lcTI4ZVdrOGRNY2Z6dWdLeDA2THZMN3kwQWFuZHpYZXZueXgwbThHQUFBQWFEOGlMd0FBQUtBam5RbTlocE5ualRVYXA1VlA5VXB0M2R3WEQyNTRjMXBYT0haSzVMV3VkMlZzWGZGV3pPODY3aGUrc2Jia2k1VmhNd0FBQUVCN0Vua0JBQUFBSFcyODFET2N2TzZ3Uk9PMCtxbGVxYTkrL3JiWWRNUFBvMnYydjB6NnorbUV5T3VSK3piRUxWYzd2YXZCeHFKNlBlTitVd0FBQUVEN0Vua0JBQUFBSFcrODFOT2Z2UDdXRW8zVjZxZDZkWGN2akVmdjZZbmVhLzlwVW45OE8wZGVtemV1amkyRk4yTHVKU2Y4WWpmVzBlVHB5eGNyQjAwQkFBQUE3VTNrQlFBQUFCQ25RNjlDOGtwUHdyblVHbzNURHFkNnBWYzQvdGNWdWJoK3dTc1Qvbkh0R0htbG9kdjJUWXRqMlpWTzcycUNROGxUeUJjcm82WUFBQUNBOWlmeUFnQUFBRGhqdk5Tek9Ia05KMC9lR28zVjZxZDZwUjRjMkJnN1B2YUxDMTdoMkc2Umw5TzdtbXBmOGd3SXZBQUFBS0J6aUx3QUFBQUEzbUc4MUhOWlZFLzBXbXFOeGtwUDlmcm1nZm54dVM4KzNiSS9RM3F5MVlQYmVtTFQ5ZWRlNGRndWtaZlR1NXB1ZDc1WUdUUURBQUFBZEJhUkZ3QUFBTUI1akpkNmhwUFhIWlpvdkorOGVrWHNmdXAveFFzL09OQ3lQOFBLbTVmR1EzZjg0VmxYT0xaRDVIWFhscjdvLytndlk4NnNVMzVSRzI4c2Vmcnp4Y3ArVXdBQUFFRG5FWGtCQUFBQVhNQjRxYWMvZWYydEpacGo3dyt2aWsvditrNUwvd3ozYk5zUUE3ZThFZlBmODNwTFIxN0xiN294TnErYUd4OSszMUcvbU0yUkR0K1hMMVlPbWdJQUFBQTZrOGdMQUFBQVlBTGpwWjVDVks5dnZOUWFqZmZpOGZreDlIekVrOTl1N2NPTHZ2cjUyK0txOS8rZldQbXB2MnU1ei83Z2pnMngrazllZFhwWDh4eEtua0srV0JrMUJRQUFBSFF1a1JjQUFBREFSWXlYZWk2UGF1aVZ0MFp6UFAzalJmSHdOMzRVSXlNdkc2TkIxdld1akswcjNvcjVYY2VOMFR6NzhzVkt2eGtBQUFBQWtSY0FBQURBSkl5WGVpNUxYa1BKYzRjMW11UEVxWGZGbDcvLy9uaGs2THZHcUtQdTdvV3hmZFBpV0hibGlER2FhMHUrV0JrMkF3QUFBSkFTZVFFQUFBQk13WGlwWnpCNTdiSkU4L3prMVN0aTkxUC9LMTc0d1FGajFOaGRXL3FpLzZPL2REVmpjNDFGOVhyR2c2WUFBQUFBZmtQa0JRQUFBREJGNDZXZXZ1UTFuRHlYV3FONTl2N3dxdGp6cmJJckhHdGcrVTAzeHAwZjc0cUZjMTh6Um5NZGltcmdOV29LQUFBQTRKMUVYZ0FBQUFEVE1GN3FXUnpWMEN0dmplWTVOdmJlMlBQL3ZqdUc5bjdQR05PUVhzMjQ1ZGJGY2N2VnJtYk1nSDM1WXFYZkRBQUFBTUQ1aUx3QUFBQUFwbW04MUhOWjhocEtuanVzMFZ5dWNKeTY5R3JHVDl6d3YyUHVKU2VNMFh4YjhzWEtzQmtBQUFDQUN4RjVBUUFBQU16UWVLbG5JSGw5eFJMTjV3ckhpMXZYdXpJK3VXeVdxeG16NFdqeTlPV0xsWU9tQUFBQUFDWWk4Z0lBQUFDb2dmRlNUeUY1N1UrZVM2M1JYQ2RPdlN1Ky9QMzN4eU5EM3pYR082UlhNMjdmdERpV1hlbHF4b3hJajUxTEE2OVJVd0FBQUFBWEkvSUNBQUFBcUpFejF6ZVdraWR2amVaTHIzQjg4bi84V3p6NTdmMGR2OFdET3piRTZqOTVOZWJNT3VVWEl4djI1SXVWQVRNQUFBQUFreVh5QWdBQUFLaXg4VkxQVVBLNnh4TFo4UHhQcjRwdlB2L3plT0VIQnpydVo5KzhjWFZzL09pL3hmeXU0MzRSc21Fc2Vmcnp4WXJ5RUFBQUFKZ1NrUmNBQUFCQUhZeVhldnFUVnhwN3ViNHhBOUlySEovKzBSL0ZubStWWTJUazViYi9lWmZmZEdQYytmR3VXRGozTlY5K2RoeUs2dldNUjB3QkFBQUFUSlhJQ3dBQUFLQk94a3M5aTVQWGNMaStNVFBTMk92TDMzOS9QREwwM2JiOCticTdGOGIyVFl0ajJaVWp2dXhzMlpjOEEvbGlaZFFVQUFBQXdIU0l2QUFBQUFEcWFMelVjMWxVVC9TNnd4clo4ZUx4K1RIMGZNU1QzMjZmVy9NZXVXOUQvT2VyWG8wNXMwNzVnck1qdlo0eGpidUdUUUVBQUFETWhNZ0xBQUFBb0FGYzM1aE5QM24xaXZqeXMyL0VNODkrdjJWL2hwMTMzeHFyODhkajdpVW5mS0haa2w3UDJKOHZWZzZhQWdBQUFKZ3BrUmNBQUFCQWc3aStNYnVlLytsVjhjM25meDR2L09CQXkzem16UnRYeDViQ0crS3ViSEk5SXdBQUFGQlRJaThBQUFDQUJuSjlZN2Fsc2RmbkhpL0h5TWpMbWYyTWFkelZlOE5ic1hEdWE3Nnc3SEU5SXdBQUFGQVhJaThBQUFDQUpuQjlZM2FkT1BXdWVQcEhmeFI3dnBXdDJHdjVUVGZHblIvdkVuZGxsK3NaQVFBQWdMb1JlUUVBQUFBMGllc2JzeTByc1ZjYWQ5MTYwM3RqeVlMRHZwVHNjajBqQUFBQVVGY2lMd0FBQUlBbU9uTjk0MkR5M0dPTmJHcFc3Q1h1YWducDlZenA2VjM3VFFFQUFBRFVrOGdMQUFBQUlBUEdTejE5VVQzVnkvV05HZFdvMkV2YzFUTFM2eG43OHNYS0VWTUFBQUFBOVNieUFnQUFBTWlJOFZMUDVWRU52WlphSTd2cUZYdUp1MXJLN255eE1tZ0dBQUFBb0ZGRVhnQUFBQUFaTTE3cUdVeGV1eXlSYmJXS3ZjUmRMU1c5bmpFOXZhdGtDZ0FBQUtDUlJGNEFBQUFBR1RSZTZsbWN2UFluendldGtXMi9pYjMrbi8vdjUvSENEdzVNK3MvYnZIRjE5Tjd3Vml5Yys1b1JXOE56eWRPZkwxWkdUUUVBQUFBMG1zZ0xBQUFBSUtQR1N6MlhKYStoNUxuREdxM2grWjllRmQ5OGZ1TFk2NjR0ZmZHZlB6d3U3bW9kNmVsZGcvbGlaY2dVQUFBQVFMT0l2QUFBQUFBeWJyelUwNWU4aHBQblVtdTBobjhZNlk3L2Z1RE5lUExiKzAvLzUrN3VoZEc3L01PeE9uODg1bDV5d2tDdDQxQlVyMmM4WWdvQUFBQ2dtVVJlQUFBQUFDMWd2TlJ6ZVZSRHI2WFdhQjIvZU9NL1J1WG91K1A5LytIbk1XZldLWU8wbHQzNVltWFFEQUFBQUVBV2lMd0FBQUFBV3NoNHFXY2dlWDNGRXEzajVMKytGVWQrOWUrR2FCMUhrNmMvWDZ5VVRBRUFBQUJreGUrYkFBQUFBS0IxNUFybG9lVDFrYWhlSXdmVTFwN2tXU3p3QWdBQUFMTEdTVjRBQUFBQUxXcTgxRE9ZdkhaWkl0dWM1TlVTeHFKNmV0ZCtVd0FBQUFCWjVDUXZBQUFBZ0JhVks1UUhrOWV5cUY0dkIwelBjOGx6dWNBTEFBQUF5REluZVFFQUFBQzB1UEZTejJYSmF6QjU3ckZHOWpqSks3T2MzZ1VBQUFDMERKRVhBQUFBUUpzWUwvVVVrdGR3OG56UUd0a2g4c3FrOVBTdU5QQWFOUVVBQUFEUUNrUmVBQUFBQUczRXFWN1pJL0xLbFBUMHJzRjhzVEprQ2dBQUFLQ1ZpTHdBQUFBQTJwQlR2YkpENUpVWkI2SjZldGNSVXdBQUFBQ3RSdVFGQUFBQTBLYWM2cFVOSXErbWMzb1hBQUFBMFBKRVhnQUFBQUJ0enFsZXpTWHlhcXJub25wNjE2Z3BBQUFBZ0ZZbThnSUFBQURvQUU3MWFoNlJWMU9rcDNlbGNkZCtVd0FBQUFEdFFPUUZBQUFBMEVHYzZ0VjRJcStHYzNvWEFBQUEwSFpFWGdBQUFBQWRhTHpVTTVpOGRsbWkva1JlRFhNMGVRYWMzZ1VBQUFDMG85ODNBUUFBQUVEbnlSWEtnOG5ySThsenlCcTBnVDNKczFqZ0JRQUFBTFFySjNrQkFBQUFkTGp4VXM5QThocE1ua3V0VVh0TzhxcXI5UFN1OUdyR2tpa0FBQUNBZGlieUFnQUFBQ0FOdlM1UFhzUEpzOVFhdFNYeXFwdmQrV0psMEF3QUFBQkFKeEI1QVFBQUFQQmI0NldldnFqR1hrNzFxaEdSVjgwZGlPcnBYVWRNQVFBQUFIUUtrUmNBQUFBQVp4a3Y5VndXMWVzYjc3SEd6SW04YW1Zc2VRYnl4Y3F3S1FBQUFJQk9JL0lDQUFBQTRMekdTejJGNURXVVBIbHJUSi9JcXliMlJUWHdHalVGQUFBQTBJbEVYZ0FBQUFCTWFMelVNeERWazcxYzRUZ05JcThaT1JUVnVLdGtDZ0FBQUtDVGlid0FBQUFBdUtqeFVzL2xVVDNWYTQwMXBrYmtOUzNwMVl4RCtXSmwwQlFBQUFBQUlpOEFBQUFBcHVETUZZN0R5Zk5CYTB5T3lHdktub3ZxNlYxSFRBRUFBQUJRSmZJQ0FBQUFZTXJHU3oyRHlTdTl4dEVWamhjaDhwcTBvOG5UNzJwR0FBQUFnSE9KdkFBQUFBQ1lGbGM0VG83STY2SmN6UWdBQUFCd0VTSXZBQUFBQUdiRUZZNFRFM2xOeU5XTUFBQUFBSk1nOGdJQUFBQ2dKbHpoZUg0aXIvTnlOU01BQUFEQUZJaThBQUFBQUtpWjhWTFBaVkc5d3ZFT2ExU0p2TTZTWHMwNG1DOVdoa3dCQUFBQU1Ia2lMd0FBQUFCcTdzd1Zqb1BKczdUVHR4QjUvZGErcUY3Tk9Hb0tBQUFBZ0trUmVRRUFBQUJRTitPbG52Nm9udXpWc1ZjNGlyemlRRlRqcm9QK2lRQUFBQUNZSHBFWEFBQUFBSFYxNWdySGdlVFoxWWsvZndkSFhrZWpHbmZ0OTA4QkFBQUF3TXlJdkFBQUFBQm9pUEZTeitWUnZjTHhqazc2dVRzdzhocExucUY4c1RMb3R4NEFBQUNnTmtSZUFBQUFBRFRVZUttbkVOWFlhMmtuL0x3ZEZubnRpK3JwWGFOKzB3RUFBQUJxUitRRkFBQUFRRk9NbDNyNm94cDdmYkNkZjg0T2lid09KRTkvdmxnNTRqY2JBQUFBb1BaRVhnQUFBQUEwMVhpcFp6QjVEU1RQcGUzNDg3VjU1SFVvcWlkM2xmd21Bd0FBQU5TUHlBc0FBQUNBcGhzdjlWd1cxZEJyVjd2OWJHMGFlUjFObnNGOHNUTHN0eGNBQUFDZy9rUmVBQUFBQUdUR2VLbm44cWhlNFhoSHUveE1iUlo1alNYUFVMNVlHZlRiQ2dBQUFOQTRJaThBQUFBQU1tZTgxTE00ZVEwbHo5SlcvMW5hS1BMYUhkWEFhOVJ2S0FBQUFFQmppYndBQUFBQXlLenhVazhocWlkN3RXenMxUWFSMTc2b1hzMTR4RzhrQUFBQVFIT0l2QUFBQUFESXZQRlNUMzlVWTY4UHR0cG5iK0hJNjdua0dSQjNBUUFBQURTZnlBc0FBQUNBbHRHS3NWY0xSbDRIb25weVY4bHZIQUFBQUVBMmlMd0FBQUFBYURuanBaN0I1RFdRUEpkbS9iTzJVT1FsN2dJQUFBRElLSkVYQUFBQUFDMXB2TlJ6V1ZSRHIwekhYaTBRZVIyTjZyV00rLzFXQVFBQUFHU1R5QXNBQUFDQWxwYjEyQ3ZEa1ZjYWQ2VW5kdzM3TFFJQUFBRElOcEVYQUFBQUFHMGhxN0ZYQmlNdmNSY0FBQUJBaXhGNUFRQUFBTkJXM2hGNzdjckM1OGxRNUNYdUFnQUFBR2hSSWk4QUFBQUEydEo0cWVmeTVEV1lQSGMwODNOa0lQSVNkd0VBQUFDME9KRVhBQUFBQUczdFRPeVZudXpWSDAyNHhyR0prWmU0Q3dBQUFLQk5pTHdBQUFBQTZBanZ1TVl4ZlJvV2V6VWg4aEozQVFBQUFMUVprUmNBQUFBQUhhWFJzVmNESXk5eEZ3QUFBRUNiRW5rQkFBQUEwSkVhRlhzMUlQSVNkd0VBQUFDME9aRVhBQUFBQUIydDNyRlhIU092QTFHTnUwcStSUUFBQUlEMkp2SUNBQUFBZ0RQR1N6Mzl5V3N3ZVQ1WXE3OW1IU0l2Y1JjQUFBQkFoeEY1QVFBQUFNRHZxR1hzVmNQSWExL3lESXU3QUFBQUFEcVB5QXNBQUFBQUxtQzgxRk9JYXV5MWRMcC9qUnBFWG1uY2xaN2NkY1EzQWdBQUFOQ1pSRjRBQUFBQWNCRm5ZcStCNUZrejFUOTNtcEhYV1BJTVJmWGtyaU8rQVFBQUFJRE9KdklDQUFBQWdFa2FML1ZjSHRXVHZlNlk3Sjh6eGNqcmFMd2RkNDFhSEFBQUFJQ1V5QXNBQUFBQXBtaTgxSE5aVkUvMlNwOUxKL3BqSnhsNUhVcWVvWHl4TW14ZEFBQUFBSDZYeUFzQUFBQUFwdWxNN05VWDFkTzlQbmkrUCtZaWtkZUI5TS9ORnlzbGF3SUFBQUJ3SVNJdkFBQUFBS2lCOFZKUEdudWxKM3N0ZmVmLy9UeVIxMWp5N0k5cTNIWEVjZ0FBQUFCY2pNZ0xBQUFBQUdwb3ZOU3pPS3F4MXgzcGYzNUg1SFUwZVlhamVpM2pxS1VBQUFBQW1DeVJGd0FBQUFEVVFYcVY0Ny8rMjF0RC8vNS80cGFqdi9yM3Y4Z1hLOE5XQVFBQUFHQTZSRjRBQUFBQUFBQUFBQUFaOXZzbUFBQUFBQUFBQUFBQXlDNlJGd0FBQUFBQUFBQUFRSWFKdkFBQUFBQUFBQUFBQURKTTVBVUFBQUFBQUFBQUFKQmhJaThBQUFBQUFBQUFBSUFNRTNrQkFBQUFBQUFBQUFCa21NZ0xBQUFBQUFBQUFBQWd3MFJlQUFBQUFBQUFBQUFBR1NieUFnQUFBQUFBQUFBQXlEQ1JGd0FBQUFBQUFBQUFRSWFKdkFBQUFBQUFBQUFBQURKTTVBVUFBQUR3ZjltNzIrTTBrdlZ2d00ycFF4WGZyQ2NDY3lLUS9rb0FOZ0xyUkdBMkFtc2pNSTVndFJFWVI3RGFDRHdrb0pValdCekJrYjlSeFFlZWJ0T3NXVm1TZWRlOFhGZFYxK0I5a2VHZVlYclEvTGdiQUFBQUFLREVoTHdBQUFBQUFBQUFBQUJLVE1nTEFBQUFBQUFBQUFDZ3hJUzhBQUFBQUFBQUFBQUFTa3pJQ3dDT3FOVnFuYWtDQUFBQUFBQUFBSnNROGdLQUkybTFXcU80dVZBSkFBQUFBQUFBQURZaDVBVUFSNUFEWHE5VkFnQUFBQUFBQUlCTi9Wc0pBT0J3V3EzV1Nkd1VjWnlxQmdBQUFBQUFBQURiME1rTEFBNUV3QXNBQUFBQUFBQ0FmUkR5QW9BRGFMVmFaM0V6Q1FKZUFBQUFBQUFBQU94SXlBc0E5cXpWYWwyRVJRZXZGNm9CQUFBQUFBQUF3SzZFdkFCZ2oxcXQxbVhjL0I0RXZBQUFBQUFBQUFEWWszOHJBUURzUjZ2VkdzWE5hNVVBQUFBQUFBQUFZSitFdkFCZ1I2MVc2eVFzbG1jOFZRMEFBQUFBQUFBQTlzMXlqUUN3ZzFhcmRSWTNreURnQlFBQUFBQUFBTUNCQ0hrQndKWmFyZFpsM1B3Wnh3dlZBQUFBQUFBQUFPQlFMTmNJQUJ2S3l6TmV4ZkZhTlFBQUFBQUFBQUE0TkNFdkFOaEFYcDV4RkN6UENBQUFBQUFBQU1DUldLNFJBTmJVYXJVR2NWTUVBUzhBQUFBQUFBQUFqa2duTHdENGdidzg0eWlPVjZvQkFBQUFBQUFBd0xFSmVRSEFFL0x5ak5keHZGUU5BQUFBQUFBQUFKNkQ1Um9CNEJHdFZtc1lOMzhHQVM4QUFBQUFBQUFBbnBGT1hnQndUNnZWNm9iRjhvdzkxUUFBQUFBQUFBRGd1ZW5rQlFBcldxM1daZHpjQmdFdkFBQUFBQUFBQUVwQ0p5OEFDRi9EWFNkaDBiM3JsV29BQUFBQUFBQUFVQ1k2ZVFIUWVLMVc2eUp1SmtIQUN3QUFBQUFBQUlBUzBza0xnTWJTdlFzQUFBQUFBQUNBS3RESkM0QkdhclZhbDZHQjNidmk2KzdhK3dBQUFBQUFBQURWSXVRRlFLT2trRk1jUlh6NGF4d3ZHbGlDMjd3OEpRQUFBQUFBQUFBVkllUUZRR08wV3ExaDNQd1ZSNi9CWlVqQnR0OWpMYTRjRVFBQUFBQUFBQURWSU9RRlFPMjFXcTErSEpQNDhLMXEvTzFOck1tdDVSc0JBQUFBQUFBQXlrL0lDNERhYXJWYUozR000c09QY2J4VWtlK2Noc1h5alpkS0FRQUFBQUFBQUZCZVFsNEExRklPTGszaWVLMGFUMHJMTi80YTYxWG82Z1VBQUFBQUFBQlFUa0plQU5SS1hwcnhOajc4TlN3Q1RLeW5GM1QxQWdBQUFBQUFBQ2dsSVM4QWFpRjFvVnBabXZGVVJiYXk3T3FWd2w1OTVRQUFBQUFBQUFBb0J5RXZBQ3F0MVdxZHhER01EMVAzTGtzejdrY0t5WDFNb1RsTE9BSUFBQUFBQUFBOFB5RXZBQ3FyMVdvTndpTGM5VFpZbXZFUVVtZ3VkZlVhcGpDZGNnQUFBQUFBQUFBOER5RXZBQ29uTFNXWWxoU01EOS9IOFZKRkRpcUY1MUtJYnBJN3BnRUFBQUFBQUFCd1pFSmVBRlJHcTlVNmk2T0lEeitHeFpLQ0hNL1hzRmVzL3lSM1VBTUFBQUFBQUFEZ1NJUzhBQ2k5VnF2VmpXTVVILzRaUjA5Rm5sWHFuUForR2ZheWpDTUFBQUFBQUFEQTRRbDVBVkJhSytHdXYrSjRyU0tsOGpYc0ZmSXlqc0plQUFBQUFBQUFBSWNqNUFWQTZRaDNWY3JYWlJ6REl1eDFsZmFka2dBQUFBQUFBQURzbDVBWEFLV1J1a0dscmxEeDRXMFE3cXFhRlBaNkU4ZGZLYUFYUjE5SkFBQUFBQUFBQVBaRHlBdUFaN2ZTdVdzU0ZsMmhYcWhLcGFXQTNzZTRUMi9qR0NnSEFBQUFBQUFBd0c2RXZBQjROZzhzeXlqY1ZTK25jYnlQKy9qT1VvNEFBQUFBQUFBQTJ4UHlBdURvSGdoM1VXK3JTemtXcWJ0WFdwcFRXUUFBQUFBQUFBRFdJK1FGd05HMFdxMStITmRCdUt2SmVuRzhqMk9TZ241eG5Da0pBQUFBQUFBQXdOT0V2QUE0dU55NXFZZ1BQOGJ4U2tVSWkrNWVLZWozWnp3MlV1QnJhRGxIQUFBQUFBQUFnSWNKZVFGd0VHazV2amd1VTRBbkxEbzM5VlNGUjd5TTQyMVlMT2Q0bTQ4Ynl6a0NBQUFBQUFBQVpFSmVBT3hWNnNZVXgxVjhPSW5qMTdBSThNQzZUdk54ODcrMHRHZnVBaWZ3QlFBQUFBQUFBRFNha0JjQWU5RnF0UzVTS0NjKy9DdU9OMkd4SEIvc0lpM3RtYnJBclFhK3Vzb0NBQUFBQUFBQU5NMi9sUUNBYmVVT1M0TTRMb09PWFJ6V3F6elNjZmNwYmtaeFhNL244NG5TQUFBQUFBQUFBSFdua3hjQUcydTFXdjA0UnZIaC80SWxHVG0rNVpLT2Y4WGo4RFl0RHhySG1iSUFBQUFBQUFBQWRhV1RGd0JyMGJXTGtqck40MDA4UnIvRWJWb3l0QWlMTGw5M3lnTUFBQUFBQUFEVVFXcytuNnNDQUk5UEZLM1dSVmlFdTE2cHhsNjhpM1B2OEJuM1o1TW0vbkg0RnZpNmRlZ0JBQUFBQUFBQVZhV1RGd0RmeVV2ZkRmSjRvU0pVVkMrUHQvZTZmQlh6K1h5aVBBQUFBQUFBQUVCVkNIa0I4RldyMWVyR1RlcmFaVGxHNmlpRkZWL25rWTczeitHZm9TOUxPd0lBQUFBQUFBQ2xKZVFGMEdDdFZ1c2tmT3ZZZGFvaU5FZ0tNcjdKSTcwWFBvVWMrQXBDWHdBQUFBQUFBRURKQ0hrQk5Fd09kbDNrOFVwRjRLdlRQSVMrQUFBQUFBQUFnTklSOGdKb2dKV2xHTlBvcVFqODBFT2hyOXZ3TGZRMVVTSUFBQUFBQUFEZ1dJUzhBR3FxMVdxZHhVMC9XSW9SOW1FWitucWQzMTlmd2lMdzlUWDROWi9QQ3lVQ0FBQUFBQUFBRHFVMW44OVZBYUF1Si9WV0szWHE2b2RGeDY2WEtsSks3K0xjTzN6R1k4VEVmempMSlI1VDhPczI3dWRiSlFFQUFBQUFBQUQyUVNjdmdBckx5ekQyd3lMVWxiWXZWQVdlemJMYjEvTDltYnA5TFpkNFhBYS9Kc29FQUFBQUFBQUFiRXJJQzZCQ1dxM1dTVmlFdWRMUXJRdktMWVV1ZTNrczM4UDNnMThUSGI4QUFBQUFBQUNBSHhIeUFpaTVWcXZWRDkrQ1hUMFZnVXA3S1BpVk51T1FRMTloMGZHclVDb0FBQUFBQUFCZ1NjZ0xvR1NFdXFDUkhncCtmUTU1bWNlZzZ4Y0FBQUFBQUFBMG1wQVh3RE5xdFZyZHVEa0xpMEJYMmdwMUFVc3Y4M2kxY3M1SW0wOGhkL3pLNDA3bkx3QUFBQUFBQUtnM0lTK0FJOHBkdWxaRFhTOVZCZGpRYVI3M3cxK3A4OWNranF2NWZINnRUQUFBQUFBQUFGQWZRbDRBQjdJUzZGcU9VMVVCRG1qWithdUlROGdMQUFBQUFBQUFha1RJQzJCSEswc3VyZzRkdWdBQUFBQUFBQUNBdlJEeUFsaFRxOVZLNGExdVdJUzR1bm4wVkFZQUFBQUFBQUFBT0NRaEw0QVZlWW5GSkcxUHdyZEFsODVjQUFBQUFBQUFBTUN6RVBJQ0dpTXZxNWpHTXJ5VjlQTldSeTRBQUFBQUFBQUFvSlNFdklCS2E3VmFEd1cyVmgrbmYzK3FVZ0FBQUFBQUFBQkFWUWw1QVZXWFFsd2ZsUUhXOWlXT0Y4b0FBQUFBQUFBQVVCMy9VZ0tneXVieitVUVZZQ1BkT01iS0FBQUFBQUFBQUZBZFFsNUFIWHhSQWxqUGZENi9pNk1mSC83aXZRTUFBQUFBQUFCUURVSmVRQjNjS2dGc1pqNmZYOFhOV1J4L3FBWUFBQUFBQUFCQXVRbDVBVUJEcGVWTzQ3aUlEMytLNDdPS0FBQUFBQUFBQUpTVGtCZFFCNFVTd1BibTgza1JSemMrZkJjczRRZ0FBQUFBQUFCUU9rSmVBTUJYOC9sOEdEZmRPRDZvQmdBQUFBQUFBRUI1Q0hrQmRYQ3JCTEFmOC9uOExvNUJmUGlmSU93RkFBQUFBQUFBVUFwQ1hrQWQzQ2tCN05kOFBwOElld0VBQUFBQUFBQ1VnNUFYVUFjVEpZRERFUFlDQUFBQUFBQUFlSDVDWGtEbHBSQ0tLc0RoMzJmQ1hnQUFBQUFBQUFEUFE4Z0xxSXN2U2dDSHR4TDIrbjl4dlBQZUF3QUFBQUFBQURnOElTK2dMbTZWQUk1blBwL2Z4VEdNRDd0eC9CekhaMVVCQUFBQUFBQUFPQXdoTHdCZ2F6bnNOWXFqRy8vNFU3Q1VJd0FBQUFBQUFNRGVDWGtCZFZFb0FUeXYrWHhlNUtVYy94TVdTem5xN2dVQVFHM054dWRkVlFBQUFBRGdXUDZ0QkFEQVBzM244MG5jRE5Ob3RWcjl1QjNFOFZwbEFBQ29vdG40UEYzVGR2TklqMC9pT0kxam5QOE1BQUFBQUFjbjVBWFV4YTBTUVBtazdsNXhVN1JhcmN1NHZZZ2piVTlWQmdDQU1wbU56MU53Nnl5UDlMZ2ZGcUd1bDZvREFBQUFRQmtJZVFGMWNhY0VVRjd6K1R5OVIwZHB0RnF0YmxnRXZnWkI0QXNBZ0NQS1N5eW1jYmF5VGVPRjZnQUFBQUJRWmtKZVFGMU1sQUNxSVMvbmVKVkdxOVZLTjlRR1lSSDYwaVVCQUlDOVdBbHo5Y08zcFJaN0tnTUFBQUJBVlFsNUFiV1FRaU90VmtzaG11TnpXQ3o3bDRZYk5kVis3OTR1OTJVT2ZQV0REbDhBQUt4cE5qNi8zNUdyNjFvU0FBQUFnRG9TOGdMcTVFdXd4RVlUOXZIVmZENGZwaiswV3ExTEphbVBIUGhLNDJwbFNjZCtISzlVQndDZzJXYmo4M1JkMkEzZnVuT2RCR0V1QUFBQUFCcEV5QXVva3hRTzBkV3BucjZHdThJaTRIV25IUFYzYjBuSGRBT3ZINzZGdml6ckNBQlFRN1B4ZWJydVczYmtXbDREZGwzL0FRQUFBSUNRRndEbEp0eEZ5UHYrT28rd3NxeGpHcnA4QVFCVXpHeDgzZzMvN01pMURIYnB6QXdBQUFBQWp4RHlBdXFrQ0RwNTFjWG5PSWJ6K1h5a0ZOeTN1cXhqK25PcjFlcUhiNkV2NXdBQWdKS1lqYy92ZCtUcXVsNERBQUFBZ08wSWVRRlFKbitFUmRldVFpbFlWejVlL2o1bWhMNEFBSTRyaDdtNjRWdEhydlQ0VkdVQUFBQUFZSCtFdklBNnVWV0NTa3BkdTBacHpPZnppWEt3cTBkQ1g4c2xIdFAycFNvQkFPekhiSHllcnJFK3FnUUFBQUFBSEphUUYxQW5kMHBRR1YvaXVBNkxZRmVoSEJ6U1N1aHJ1YnhqTjN6ck10SFAyeGNxQlFBQUFBQUFBSlNWa0JkUUp4TWxLTDIwSEdNS2QxM1A1M09oUEo1RjdoZzN5Y2ZpVjRKZkFBQUFBQUFBUUprSmVRRzFrWUliclZaTEljcEhzSXRLbkQvQzk4R3ZrL0F0OU5YTm82ZGFBQUFBQUFBQXdMRUplUUYxazVZQjFIM24rUWwyVVhuNTJDM3krRnZ1K3BWR1A0NWxFQ3o5K2FXcUFRQUFBQUFBQUljZzVBWFV6VzNRYWVjNXBIRGRkUjZGWUJkMXR0TDFxN2ovNzFxdFZqOC9UTnRsQUN4dFQxVU9BQUFBQUFBQTJKYVFGd0RiK2hRV0laZlJmRDYvVlE3NEdnQXI4c1BpL3I5YldmNXh1VTM2ZWRzTk9vRUJBQUFBQUFBQWp4RHlBdXFtQ0RwNUhjcXlXMWVxY1pHN0dRRnJXbG4rTWVUMzBvTld1b0YxODdqL1dHY3dBQUFBQUFBQWFCZ2hMd0NlTWc3ZmxtRFVyUXVPWUtVYjJGcGFyZGF5TzlqU1JCVUJBQUFBQUFDZ1hvUzhnTG9SUk5wTkNuVVZZUkhxS3BRRHlrOEFFd0FBQUFBQUFPcFB5QXVvbXpzbDJNamZvYTQ0YnZOeWNnQUFBQUFBQUFCQWlRaDVBWFV6VVlJbjZkUUZBQUFBQUFBQUFCVWo1QVhVeW53K243UmFMWVZZK0J3V3kxY1dZUkhxc3FRYkFBQUFBQUFBQUZTUWtCZFFSMS9pZU5IQTE1MjZkQzFEWFducHhZbERBUUFBQUFBQUFBQ3FUOGdMcUtNVWRPclYvRFYreXEvemE2aExseTRBQUFBQUFBQUFxQzhoTDREeVd5Njd1TnFsNjA1WkFBQUFBQUFBQUtBWmhMeUFPaXBDZFR0NUNYUUJBQUFBbEVDNzArbkdUUnI5L0kvTzRqako0M1NMSC9rbExIN25rOXl0UEM3U24yZlRxVTd0QVBDOGMvNUpudTlYNS8yd3c5eC8zM2psOFcyK0hsaGVDNFI0TFZEWUd3QThSY2dMNFBtc0xybVl3bHd1M2dFQUFBQ2VRYnZUU1RkeSsyRnhRN2NiRHZNRndoZjNmdTZydkgyYm4wUGFwTjhYVGNMS0Z3Qm4wNmt2QUFMQTduTjlOM3dMYjUrc3pQa3ZqL2cwZW84OFhyMFdTRklZYkJrSXY4M1hBeE43RVFBaEw2Q095dmF0eCtXM05JdVFmMGszbjg5OU14TUFBQURnbWVRYnZSZGhjYU0zalJjbGVXcW5lYVFBMlBLR2IrcjhYaXlIbTd3QXNOWThuK2IzczVYeG9rSXZZUmtBZTdYeW10SW1oYjlXZytDdUNRQWFSc2dMcUtQbi9IWmp1c0NlNVBIMUl0dHlpd0FBQUFEUEwzZnJHb1JGdU90bGhaNTZlcTZ2ODBpdkkzWDdLdUlZV2VJUkFMN09qZjN3TGRTVnRpOXErbEo3ZWJ6SnIxc1FIS0JoaEx5QU9qckdSZXhxNi96bGNvc3VuZ0VBQUFCS1pLVmoxMldvVnJEcktjdHVYMi9pNjBzZDVLL1RtRTJuMXhYWUY5MGYvR2VOV0o0eTFtSzVUQmpVV253L0Y2ckFnYzZqeXpCWEdxOGFYSXI3UWZEUCticWdLUHQxd1RQUHNST0JPS0NxaEx5QTJrbGhxMWFydGE4ZnQ5cVpLNFc1SnBaYUJBQUFBQ2kzM05GakVQSk56eHA3a1YvajY1VWJ1MWNsdlhHWjlzZmJIL3czUDRWRk41SzZTemVmUDNxbjBnQXRKV0NQYzNzS2JTK1hXbjZwSWc5S2RVbGR2dDdrNVIzL0NOL0M0RTFaZFNaZGIvejZnLy9tWFJ4RGh3dFFSVUplUUYybGJ6R3UyNDQzL1FKc0VuS0lLM3dMYzAyVUVRQUFBS0E2MnAzT0lDeHU3dlVhK1BKWGIreW1tN3BYSmV1aW8zTVZOTytjZk5LZ1lBbUhPWWFXd2E0MFhxakl4bDdsOFQ1Zkc2U3cxNmptci9uRWJnZnFUTWdMcUtzVTFGcjlaZDZYOEMzRU5jbVA3K2J6ZWFGVUFBQUFBTldXYndKZkJaMDlscjdlMUkxMVNWM3FoeVVKZTNYdEZtaWNGTzRzbElFdDVuVEJyc05kRzZUcnBXWG56enF1WE9ONkE2ZzFJUytncmtaaDhZczlRUzRBQUFDQW1zckxNZzVETXp0M3JTUFY1V05Kd2w2bmRnY0FqOHpuM2JpNURJdGdsOEQyWWEwdTlmd3BMTUplb3hxOXZxNWRETlNaa0JkUVMvUDVmS1FLQUFBQUFQV1VsZ0FMaXkvNHZUN3lYLzA1Zk9zVVA4bi9yTmpnLysrR2J6Y2YrMkd4cE5BeHdrL0xzTmVIdUwwODl2SnA4ZSsxVkNNMFUxY0orTUg4TUFqTlhXYTVETkkxeVB2YzNTdU5VYnhHbUZUOE5ibm1BR3BOeUFzQUFBQUFnTXJJTjRUVGpjaERMK0dVQWwxRkhHa3BvOXREZHNIS0lhamw2SWZEQmI5U0tPNGkvbjJwcTlmVkVYZGIzNUVMamRSVkFoNlk4OUp4a2VieXkxQ3Q1UmkvNUd1Q1NSNTMrYy9KM2FaTEgrYkErdGtEYzJYNlo4dC9kNno2cEwvbmJSbzVFRDZzWXRncjE5UVNuMEN0Q1hrQkFBQUFBRkI2K2NiZGRUaHN0NCswYk5Fby9UM0h2TG1aYnd6ZjNudXQvYkJZdGlwdDk3bDBWYnI1K1d2OE85TFBIaHpwZGZZZHdRQ05uOGU3WWJIRTh1c0tQTjFQZVY3K2UreTdDMmIrZWNYS1B5b2V1ZlpaaHNDN2VYdm9ybWZMcFJ5ckdQYlN4UXVvUFNFdkFBQUFBQUJLTFFlU1J1RXczUmxTeDY3VTFlcTZMRGN5ODQzZjZ6eVduYjRHZWV5ckJ1a204VzM4MlduNXh0RUI5MTI2UWYzS1VReU4xRmNDNGp5UWpvTmhLUGVTakNuVVZTekhzWmMxL3NIMXdQSjVyZFowMmZsenVYMTVnTCsraW1FdklTK2c5b1M4QUFBQUFBQW9yWGFua3dKWWJ3N3dvOGR4WE0ybTArdXkxeUIzK2tyTFdsMHVPM0NGL1FTblVtRHNmYjRCZjNtZ205b1hqdUx2M09Yajd5SEhYSjZyckQ3bEdsVk5OeHdtYUFGVm5iL1QzRElNNVExMy9SRVdZZXFpYWtzVFB0QUJkQm4yNm9mOUI2dXJGUFlTOGdKcVQ4Z0xBQUFBQUlEU3lSMmdpamhPOS95alU0QWtCWnFLS3RZbGg5S3VWNWE5U2lHcVhVTkI2UWJ1V2Z5WmczemplSitFdkw3Zmg2bkcvVFhmQittRzlVbitZMzlsbS9aL1hRTkZsWDEvUHJFZnUzbWZMUzJYWUZ0YTd1ZVRBNXp6bnRPSmQzd2o1KzkrS0crNEt3VnNSMkhSdmZPdUxqVmZDWDFkM1Z2eWVSL1hDS3ZYQ2hjNWZIOVYwdnF0Ry9KeWJnSXFTOGdMQUFBQUFJQlN5Y0dXRkdiYVo0amxTMWgwb0xpcVE0MXlKNDFCdnBsN21jY3VOM0pUc0tUSVFhL3JQZTNIYnJCVTQ2NzdlVFYwVjl5cjd6SW9sRzdpOTBPOXdrRjEyNC9wL1RxNTk0K3YxemdQTHNNYXkzM2REZFVLOXprbW16VjNwK056R0JaaG9ESkp5ektQMHFoYXg2NHR6emYzbDN6ZWR3ZlF0MkhSV2JTTTExVHJubk4wL0FJcVM4Z0xBQUFBQUlEU3lCMUEwbzNKZlM1Wmx6cDNYTlNwYThkU2ZrM0RaV2VOc052TjlWVHozK1BQZWhkLzduQVBUMi9naUQ3NHZpL3lXQVlzVXMwdmd5VWY2N0IvbHdHLzR0NDVjaG40NnVkaGlVK2VlOTVPeDJTYU05NlU3S21senAycDQ5U280ZWVTWlFmUWs1VTVZdGV3YURybi9CcC9adnBaZ3pKMFg4elhqd0MxOXk4bEFBQUFBQUNnREZJWHFiajVHUFliV0VpQnBYNGRBMTZyMHV1TEk5WHZQMkVSYXR2RjI3Z3ZSanZ1eTJXSE1ZNTNERXh5T0s4YngyOHFVdXYzZXBIMmRUNjNwZmZhZitQNEVCWWRDOHQyWHUvYWE3V2V0OU41ZmhMS0ZmQktjK0JQOGIxeDF2U0Exd1BuamhSNlMrL0puL0k1WTFjcExQWXhIZ2ZYSlhpdjkrMWxvQW1FdkFBQUFBQUFlSFk1NFBWK2p6OHloUjMrdTZlT1ZKV1Jnejc5c0FoOTdCTDRlQjMzU1pIRFd0dlFUZXI1am9GMEkvOXlEOGNBMWRubjF5bmttUU5mUDRmZGc1NzcxTFdIYWpsbjkrTkkzZVorTGRHNWZobnU2cGVoczFUSnp4bkZTakQ4dHozTUZXa3B5TnUwaE9NenZxeStQUXMwZ1pBWEFBQUFBQURQNmtBQnIzNWVvcWlSOG12dnh2SEhEaittRjhmR1FTOWR2RXAxRFBTRG9GZlQ5dnNvQnoxVHA1NnhpckRuK2Zva0x3K2N1bTZlbHVScGZRNkxVTGR3MStibmkwa09CYWZyaFhjN3poY3A3SmM2Z2FhdzE5a3p2SnllUFFvMGdaQVhBQUFBQUFEUDVvQUJyOXVtMXpaM2RMb0l1M1YwU2pmeE53MTY2ZUpWbm1NZ3ZROEdLdEhJZlYrc2hMMCtQK05UNmRzYnRabXYwNzVNNTVTeUxNMlk1clcwSkhPM3lhSHVQVjR2RE1OK3dsN3B1dUhQMU5WcmgyNmdteDZiRi9ZaTBCUkNYZ0FBQUFBQVBJc0RCTHdTQWE5NzhzM3YxRlhqMDVZL0l0MnduYXpUbVNQK045MjRlYXZxcGR2LzcxU2lzZnMvaGIyNmpnRjJtS3RYdTNlOUxNblRTbDBxejVxMkpQTVJ6aGVyWWE4UE8vNjRkQzFRSEttclY5L2VBNXBDeUFzQUFBQUFnS1BMTi8zMkhmRDZXY0RyWVhsSnBsVHpiVy9hcHM1YzY5eXNIYWwyS2FXQXhtZGxhUFE1WUJnMy8vY014OEdKNmxkK3JpNWI5NjYwTk9ORm10ZnNvWU9kTDFMWWF4QWYvaWZzdHV6cjMxMjlEdnlVZGZJQ0drUElDd0FBQUFDQW84bzNqWXM5LzlqZlp0UHBTSFdmbG0vYS9yemwvLzVrMEN2Kzg3Uk1ZMCtWUzduZjcrSm1xQktOUHc1U1dDZTlmLzg0NGw5N3B2S1ZuYXZUT2VQUFVKN3VYU2xzWkduRzQ1NHpKbm5aMTdUczh5NEIwYmZ4ZUxyTjNUNFBjVTM1MHQ0Q21rTElDd0FBQUFDQW8wbkxQb1ZGdDZjWGUveXhuMmJUNmFYcXJpZUg0VkpIbnk5Yi9POFBCcjN5amR1aDZwWit2K3ZtNVRoSUhYcFMxNXZmVklQSDV1azRpbEN1cFhkL1NXR2pIRmpsK09lTjViTFB1eXo3bXJwNnBhRFh2cnR1OWUwaG9FbUV2QUFBQUFBQU9LWlJXTnpvMjVjVVZMSk16NFp5UjU5KzJDNzBrNEplb3h6WVc3b08rdzN1Y2JqM0g0UWNqUDM1Q0grVlRsNFZzckk4WTFtNk1xWTUvdi9pOFhwbDd6ejdPZU51WmRuWFQxdittSFNkOEhzOHp2YTVQd2RiL0Q5ZGV4U29LaUV2QUFBQUFBQ09JaS9uOTJyUFAzYVFsaE5TM2MydExOMjJ6YzNhRk5RcmNzZVhVZGh2Y0kvREdTa0JLK2VBZER3Y091Z2wvRm1kT1hvUXlyVThZNXFidW5tdW9rVFhEbkhzMnRYclRlb1dkeThzdnMweGU3Ymw5WWZsSFlIS0V2SUNBQUFBQU9EZzhvMjRYL2Y4WThkNUNTRzJsSmUrNm9mdGcxN3A1dnRybGF6TS9wNEVTemJ5ejJOaUZJN1QwWXR5ejlHcHM5TDdFajJsRHlsSVpIbkdVcDg3aG1HM3JsNnBXOXp0L2VXZk56U3dKNENtRWZJQ0FBQUFBT0NnY3FlR2ZZZXgwaEpPQTlYZDNZNUJMOTB3cWtjd2t2dm5nRkhjL0hMQU9hQ3Z5dVdkbjNNM3hqY2xlbHJ2NGpGcGZxL0d1V081OVBOdlcvNklkQTJST25wdHUreTI1YnFCeGhIeUFnQUFBQURnMElaaC8yR2dLOHMwN3MrT1FTK3F4ZEpuUEhRT1NKMmNQcWhFYytRQWRoSEsxWTN4NTl3aGlncGRQOFNSbHVQK2IxZ0U4RGVWbG5UOVBTOFh1c254ZXhFRXpZRUdFdklDQUFBQUFPQmdjZ2VYZlhjSVNUY1JyMVIzdjFhQ1hwYnpxemNoTHg0N0J3emlabnlBSDkxVjNkTE56Y3VBMTJtSm50YlB1YXNjMVR4L3BDNlJhZW5GYmNQaTcrTnhPZHpndngrb090QkVRbDRBQUFBQUFCelNJY0pZbHptUXhKN2x1cWJ1R0Y5VW83YjdXTWlMcHh6aS9kOVYxdkpvZHpvcGlETUo1UWw0cGVOTndLc2U4MHM2cnZwaCs2NkFiL1B5b1Q4Nmh0TTU1WldLQTAwazVBVUFBQUFBd0VHME81MjBmTSsrYnlKL2NTUDRzSElJcUI4RXZlck1zcHc4OXY1ZkJqMnA1N3ljQWw1RldDeVJWeFlYNXZWNm5VTnlWOEIzVy82STEyc0V2UVlxRFRUVnY1VUFBQUFBMk5Wc2ZONWYrV082Y1hDeTh1ZVQvTSsya1c0eVBkUnRvbGg1UEduM2JpYjJBa0M1NUtXZ2hnZjQwWlpwUE1iY1BwM2U1cERlZTlXb0paM3dlT3I5WDhUMy8yOWhmMHZ0bnFscUtlYmxNZ2E4VWdldnd0NnA1WGxrR0krNXlaYlhFU25vdFZ4QzlpR1hLZ3cwbFpBWEFBRHJmVEFmbjNmRHcrMzF0NzF4bjI3WXIvNVMrYmJkdS9GTFpvRHl6Z1A5UEEvY0h5K1A4TmMvdEF6RDIzdlBiL253YzFnc1BaSVU5K1ljWVRDQTQwbzM0QTV4STFuSTYxanovM1E2eWtzaXZWV04ya25YUkQxbDRBbkRzT2pvdFkvci9SUGxmRjRsRG5pTjdKM2FYMGVraDNzTGVzVi9OaWpaY1F4d1ZFSmVBQUJOL0lBOVBsOE5acTEyVyttdi9HZG54LzdBL0lNYjlKTTg3dHE5bTF0N0VlQmc1K0t6UEFkMDg3eHc5UGxnUnkvRHR4dFJ2VWZtbXJRODBWMmVZNWFkd29TTkFmWW9kL0U2UkplRlAvSlNZaHpyMm1EUmlhTWZCSUxxWnFJRS9PQzlmNWZERkIvMzhPT0V2SjUzVGhidzRqblBKU25vZGJ2bE1aaUNYc1c5WTJXb3FrQ1RDWGtCQU5UeHcvTzNybHZMc1F4eXBjY3ZLL0FTMXJsQi95Vjg2OHlTdHBNODNLUUgyR3pPNklkRm1Lc2ZtblB6OXZTaE9TYldZam0zTEVmcS9GVTRTZ0MyY3FndVhpT2xmUllYK2ZPV3poblFwTThLaTJVYngzdjRuSENxbXM4amg2NkxrcDIvZnhQd2F0eTU1RFlIeHYvYzRuOS9uenQ2alhMdzlPV2UzaHRuNlhuWk8wRFZDSGtCQUZUNUEvS2kyMG8zTEVKY3l5QlhVMjdRdjFoNXJhL3UxU1Z0MGk4aEoza1V3UkpkQUt0elI3cFIydzg2Y2p3MnQvVHV6U21wODlmZjRTL0JMNENuSGJDTDE1ZlpkSHF0d3M5dy9iRG82Sk91SHo2cVJtMjRzYzI2Qm5IOHBReVZuWStMVUs2QTE0YzRwMXphTzQyOGxraEJyNS9EZGtzM3ZzL2R3UFo1N09nd0NGU1NrQmNBUUZVK0NDODZyYXd1b2VYRy9OTldiOUsvelRXODM2SGwxdEtQUUVQbWtIUlRkamwwNE5qY2FSNnZjejNUWnB6bmtpTFBKeE5sQXZqYjRFRHpUYUcwejNnOXNlam84Mjc1K1lySzB3R2JkZC83ay9qZS83QzhGdDVXL0JuZDlMTlU5RGhXQWw1bDZxS1d2andqNE5YczgwbnF4cFVlYmhQMEtvTGZad0FJZVFFQWxQSUQ3Mks1eFg1WUJMclNWbHY3L1hpcVEwc1I4czM2NTdwUkg1L0xWZDduVFhUWjlNQmQ3cTUwMWRDWG53SXlmdEc3LzJOS3NPdXdsdlBKbTF6dnoza3VLWUlRY1ZPY3hmMWVLSU81bm9mMzk0RitydmZjYzE5ZlRLZkQzTkhMWjFSb2xtSFlNZVFWRmw5WW5DamwwVnlWN0Z5ZHZuaDVrVHBEMmpXTnY1WklRYTkwUHRnME5PNzNHZ0JCeUFzQW9Cd2ZiaGZoanY3SzhLSDF1SllkV3BiN0kvM2lxWWdqTFFWenpOQlhPZzZhMnFGTmkvUm1MYmZLNGVhVGJsamNXQitZUzQ3dVpWamMrRnAyKzFvTmZSVTZmZFhTQytkdGN6M2ZhM2M2L1h4T1BJUkNoVXNoWFdmOHFReVZKMmpCK3A4ejl0VE5pNlBOeFZjbDNGY1hPcm14Y2s0WjVxQ1hjd3JBaG9TOEFBQ2U0NFBzWXVuRjVVakJIamZpeXlYdGoxZDVwUDIxN1BRMTBvRUNLT204TWdpTEc2NENKK1h4VU9ockdSNitWaDZneGdZSG0rK21VOWZpWmJqdWlQdkJzbzIxMlk4S3dTYUdZYmRBUnZyOVY2R01oeFhmMTJrZWZsT3lwL1V1TGZscjczQnZIaHJFNHpXZEYzUUhCZGlBa0JjQXdERSt0UDR6MU9VR2ZQVXNPMzI5eVlHdlVWZ0V2bnp6R1hqT3VTVjF4VW5MSlEzRDRUcW1zRDlwSDczSmM4bHF4OGhyOHdsUU14Y0grcmxqcFMzUmRjaWlBOGZBTlFnMDZuMmZ1bm1sYy9HMnY5ZlMxZlBBY21EbWZjbWUxampOR2ZZT2oraUh4VEt1dmdBTnNDWWhMd0NBQTdEOFlxMmxzTmV2WWJHMHhVZzVnR2VZWTlMTmtjczh6Qy9WdE5veDhuM2NwMzhFZ1MrZ0J0cWR6c1VCNTZhSkNwZk9JSTZQeWdDTk10emhmUy9rZGRnNU9OVzNLTm5UU2w5dXViQjNlTXhzT3IzTDE0K3VKd0RXSk9RRkFMQ1BENlRqODI3NEZ1ZzY1STBOeXNOU01jQnp6RGNwMkRVMHo5VE9NdkIxRmZkeENuc04yNzJiaWJJQUZYVElHN25PaTJXN0xwbE9pM2FuOHlIc3Rud2JVTDMzZlZxR2ZKc3VmbWNxZUZEWEpmeWNPRWdoSHJ1R05jNHJsb0VHV0pPUUZ3REF0aDlBRjBzd3Bwc1lhWHVxSXMzUzd0MEllUUhIbkhQU2ZITVZMSWxVZCttbXpPczR4d3lVQXFnb0lhL21HUVpmZElLbVNaOUxmbFdHOG1oM091bGMzQ3ZaMC9vd20wNnY3UjNXa1plQlR0Y1Rmc2NPOEFOQ1hnQUE2MzdZWEN5UGRSRytCYnY4RXJ1NXhrb0FIR251NlliRjByQTkxVERIQUpSWnU5TTVPL0JucElrcWwvQmFaVHFkeEgyZkFoKzZiMVQzdXNOMUpwdEtuMCsyQ1hsMWxlNGc4MisvaE9mZzFPM3QwdDVoUStsMzdyZkI3OXdCbnZRdkpRQUFlRnk2dVo2V3hvb2pmY0Q4WHh6dncySTVKUjgybTAwWEwrQVljOUF3YnY0S2JyeVpZd0NxNFVJSkdpdUZ2TDRvQXpUa2M4cGkrYjBQVy95dnVoTHZXYnZUU1Y5SUxXTzNyRXZMTkxMRnVXVVNGaDFDajZXdjZrQVY2ZVFGQUhEL0ErWDRQSDBEZlJBV055bjhBb3FIdUFFUEhIb2VHZ1hMRkRSVm9RUkFSZldWb0tIWEx0UHBuVzVlMERncFdQUmFHWjVkK3R4WXRpK2kvbUdaUm5hNHByakt5emI2c2h2QUk0UzhBQUNDWUJjYks1UUFPTkI4TkF4dWtEYWRJREZRVlc3R05Wc0tlYVdsdVhTOWhpWjhicGxPcjl1ZHpwZE4zL05wYWNINC94WXF1THRZeTBGWXJEWlFKdW1ZR05nNzdDaGRUL3lwREFBUEUvSUNBQnBMc0lzdGZXbjNiaWJLQU94NVRsb3VzK0VHZWJOOU5zY0FWZFR1ZE01VW9lSFhNcnA1UVJQcDV2Vjg4MjQzTE1LMVpUTzBUQ043dUthNGpjZjRPOWNVQUEvN2x4SUFBQTJXdmhIMEpnaDRzUmtkVm9DOW1vM1ArM0V6Q1FKZW1HT0E2aEx5SWttQmd5L0tBSTE2ejIvcVJObjJZaFRLMXpueGMxcHF6NjVoaitlWHo4b0E4RDBoTHdBQTJFeWhCTUMrek1ibmc3ajVHQ3h0aERrR3FMYXVFcEM3dDdqQkQ4MTV6NmN2S0d3YXdoQUszbEZlcHJHTVh4QWEyRHZzK1pwaXFCSUEzeFB5QWdDQXplaXlBdXpGYkh3K2lwdjNLb0U1QnFpQmZrMytEbmFubXhjMHk3VVNIRSs3MHprSjVRelRqbWZUYVdFUHNVL3htQnFsWTBzbEFQNUp5QXNBQURiakJqeXdrOW40L0NRSHZGNnJCcXZhdlp0Q0ZZQ0s2aW9CWDY5ekZwMDNoRDZnT1RhOWZ0WEphemZwYzJRWnUwQmYyalVjeUZBSkFQNUp5QXNBQU5iM3BkMjdtU2dEc0swVThBcUxHeUVDWHR6bkc4cEFsYjA4d3Q4aEdGQWRReVdvakVJSjJPbnp6WFNhUXAyYmRPODdVYlh0dER1ZGZ0eThLdUZUKzVDWDdvUkRuR01LbjVVQi9rbklDd0FBMXVlWFZzRFdWZ0plcDZxQk9RYW9pM2FuMHozU1g5VlY3WXBjODB5bmsrQ0dMRFNKN24zSE1TcnA4eHJhTlJ6WVFBa0F2aEh5QWdDQTlSVktBR3hEd0F0ekRGQmozU1A5UGViUWFoa3BBYmlPZlVCUHVUYlg3blNHNFRoZE16ZjFJUWQ3NFdEeU1mYmhBRDlhWjBHZ2tvUzhBQUJnZmJxc0FOdEszMjUzY3hwekRNQU84bEpWVk1Cc09oMkZ6Wlp3QTZyOVdZZkR6WDBwaUhKWjBxYzN0SWVvOExGbUtYQ2drb1M4QUFCZ2ZXN0FBeHViamM5SHdUZldlZHJuZHU5bW9neEFSUjN6QmxsZnVTdEY4QU9hOEhsbk9yMkxtMC9yL3ZjNXRNVDZydUo0VWNMbnBZc1h4enpQcEdQdEQ1VUFFUElDQUlCMWZYRURIdGpVYkh3K2pKdlhLc0VQRkVvQVZOZ3hiOWIzbGJ0U3JwUUFHbU9UVUtmdU9XdHFkenJkRW4rZUhObER1SzRBT0Q0aEx3QUFXSTh1WHNCR1p1UHpRZHk4VlFuTU1RQjcwOU1CcGtMWFF0TnBtdDgrcXdRMFFxRUVCMUhXVU1zNG51UHRjNDU5WFpHT3ViRktBRTBuNUFVQUFPc3BsQUJZMTJ4OG5yNmQ3bHVtbUdNQTl1OUNDU3JGa28zUWhNOC9td1YrZFBKYVE3dlQ2Y2ZOcTVJK1BaOTFjZXdCUEJNaEx3QUFXSTh1SzhCYVp1UHoxR0ZrRk1jTDFXQWQ3ZDZOT1FaZ2ZVSmUxVEpTQW1pTWRUdnM2TWk0bm1GSm45Zm4yWFFxd011enlNZWVMcUZBb3dsNUFRREFldHlBQjlZMWpPTlVHVmlUNVNZQU52T3EzZWwwbGFFYUxOa0lqVklvd1g3a0xsNjlrajQ5blpSd0RBSThJeUV2QUFENHNjL3QzczFFR1lBZm1ZM1ArM0h6UmlYWVFLRUVBQnU3VklKSzBmRUZYTmV1Nml2VkR3MUwvTnhHZGcrT1FZRG5JK1FGQUFBL3Bvc1g4RU1yeXpTQ09RYmdzQWJ0VHNkeVg5WGgrZ2lhOEhsb09pMVVZWGNsNytMMUllN25PM3VKWno3WHBHUHdnMG9BVFNYa0JRQUFQK1lHUExDTzFGWGtwVEt3b1VJSkFEYjJJdWptVlJsNXljWXZLZ0dOc001UzVGMWxldEt3eE05TlowYktZcVFFUUZNSmVRRUF3SThWU2dBOFpUWSs3OGJOVzVWZ1EyazVZTitFQjlqT3BXNWVsU0lZQU0xUXJQSGYrR0xNSTByZXhldnpiRHAxTHFjVWN1ZkF6enYrbUs1S0FsWDBieVVBQUlBZjBza0wrSkdSRXJDRlFna0F0cGE2ZVYzRk1WQ0t5c3g1cjVVQmFpK0ZnUHJLc0xYTGt1OWJLSk5SMk8zTGRnS25RQ1VKZVFFQXdOTjBXUUdlTkJ1ZjkwTjV2MjFOdVFrUkE4NWx1M25kN25SR3Vac0Q1WmJDQWUrVkFXcisyV2l4UEd0ZkpUWVg1N051M0x3cThWTzhzcGNvbVZIUVVSMW9JTXMxQWdEQTA5eUFCMzVrcUFSc3FWQUNvQWFlK3dzUmJqcFh3R3c2VGNmSko1VUFxT1RueWsveFBENnhpeWpadGNYRXRRWFFSRUplQUFEd05DRXY0Rkc2ZUxHTGR1L0dIQU93dTlOMnB5UG9WUTJGRWdBODhMbWcwem1KbTRzU1A4V1J2VVJKdVFZRUdrZklDd0FBbmxZb0FmQ0VTeVZnUzJNbEFPcWdKRXNsdm1sM09oZjJSdW1QbGNzNFdqOFlQbjhCVGYxYythTEV6Ky9hTHNLeENWQU9RbDRBQVBBMFhWYUFCODNHNTkyNGVhVVNiS2xRQW9DOUdyVTduVE5sQUtDQ0JpViticFpxcExUeWN0Qi9xQVRRSkVKZUFBRHd1TS90M3MyZE1nQ1AwTVdMWFJSS0FOUklHYm9UcGc0b283emtGUUJVUXB5M0JuSHpzc1JQY1dRdlVYSzZlUUdOSXVRRkFBQ1AwOFVMZU1wQUNUREhBSHcxS2Nuek9JMmpFUFFDd09mS3ZTbnNJaHlqQU9VaDVBVUFBSTl6QXg1NDBHeDhQZ2lMamlHd2pVODZSUUkxTXluUmN4SDBBcUFTNGx6VmpadGVpWi9pNTlsMDZuZGpsRnBlVHZTVFNnQk5JZVFGQUFDUEs1UUFlTVNGRXJBRE4wb0ExODJISmVnRlFCVmNsdno1V1FhUHFoZ3BBZEFVUWw0QUFQQTROK0dCNzh6RzUrbUc4U3VWWUFlRkVnQ3VtdzlPMEF1QXNodjQzQUxQZDZ6RzY4UXpwUU9xUnNnTEFBQWVaaWt0NERGOUpXQkhRc1JBcmN5bTAzVGQvTG1FVDAzUUM0QlNpbk5UNmc3OW91VHp1MDVlVk9WYTlIYkxhMUhYaUVEbENIa0JBTUREM0lBSEhtT3BSbmJ4cGQyN01jY0FkVlNVOUhtbG9OZEVwd1lBU21aUTh1YzN0b3R3TFFwUVBrSmVBQUR3TURmZ2djZjBsUUR6QzhCM2loSS90OVFwcGNoZFV3RGdXZVVPazYvTTY3QlhPczhCamZCdkpRQUFnQWU1Q1E5OFp6WSs3OGJOUzVWZ0I0VVNBTTV2enlJRnZYNXZkenJ2WnRQcDBPNEN5aTZlcjlKbmorNFAvck83dkV3WjFUSXdyNE5qRm1BYlFsNEFBUENBZHUrbVVBWGdBWDBsMk1xWHNBalBUdkpJaWszT3U3UHgrVU8xNzRadk43N1N0K0dYUzNHbDdZdVMxc0w4QXRUU2JEcE5TeUorQ292bEVjdnNiWHllYVU2NWlNLzV6cDREU215UXpsay8rRy9HUHFOVWR0K1dmVjczdVlXcVhZdmVWZVJhRkdBblFsNEFBUEM5VDBvQVBLS3ZCR3VmUjRzOGJ0dTltOG11UDNDYjhHM3V2SlpHQ24yZDVQMlgvdnljM2RoMFdnRHFMSjJycTNCanJSZEhDcVZkdUlrTndESGxEbTFsbnl2SDloU3VSUUhLU2NnTEFBQys1d1k4OEpnekpYaFV1aEV3aXVPNjNic3BSV2VVSEM1TG8xajk1N1B4K2JMcjEzTDB3M0dDWDUvS1VodUFBMG56d0p1S1BOZlU4ZkZqdTlQNWJUYWRYdHAxQUJ6SlJRV2VZMkUzVVZGRmhhNUZBYllpNUFVQUFOOFQ4Z0llNHh1aDMvc1F4M0FmM2JxT0pRZXRpckJ5OHlJSHYvb3I0eEQ3MnZ3QzFOcHNPcjF0ZHpxZncvTjJUTnpVbTd4ODR5QTlmM3NSZ0FNYlZPQTVGbllURmVYWUJXcFB5QXNBZ0cya0d6ZVRCejQ4VDFiKytWUDY5LzdjelNOSkhWVmVQUFByYzNNSCtNNXNmSzZMMXorbHpsMkRLb1c3bnBLRFg5ZDVIQ3IwVlRoc2dBWkk1OUdxZFZCSTUvZy8yNTNPdTlsME9yUUxBVGpJWjQ1cUxOV1krTDBZbFJTdjQrN2krK3hUOEFVOW9NYUV2QUFBZU1pWHNQaUZUaHAzcTlzOUxUTlYvUEJEK2JlbHRMcjNSdS9RTHo2K3hzSWhBRHlncXdSLyt5V2VLNi9xL0FLZkNIMWRoTzJYZDNTekJHaUNVYWp1TWpsdjI1MU9PczlmenFaVG53a0EyTGNxTE5YNEtRVmw3Q29xTEYzRENYa0J0U1hrQlFCQTZzU3lESFJOeWhKd1dsbEs2enV6OFhrM0xBSmdhZlREZnJ0L2ZYSklBSS9ReVdzUkF1N0hjM1Rqd2tvUGhMN1NYTFFNZkwxYXAzWk5yQnZRUEhuSnhpcDNVRWpQKzJOOERiL0Y3ZENOYmdEMnFBb2hMNTlacUxvaXJQK0ZnMzdRY1J1b0dDRXZBSUJtU2pjc3JxdmFzU292RFpiRzlmS2ZyUVMvK25tN2JjY3Z2OHdDSHROVmdtWUd2SjZZaTFJM3M2dDdYYjdTZUNoNFhLaGE3WHh4M2JBUlFabG1TZWZIOXhWL0Rlbm00S0RkNmFTdVhpTzdGSGdHSjBwUW84OFBuVTdhbjcwS1BGWFh0MVNkWXhpb05TRXZBSUFHYXZkdUxtdjRtaWJoKytEWGF1Z3JiZGRaV3NzdkFvREhkQnYrK244UjhIcDBEcnJmNVdzWjlsb05mS2xkL2FSbHJQdktBQTlLNThPcnNMOXV1ODhsUGYvMzdVNW5FQlpMT0RxWEE4ZWtrM0M5WEZUa2VacnJxTFI0dlRhSjEyNWZhbkFkQ3ZBZ0lTOEFBR29yaHhIKy91WFVTcWVWTkI3cjl1V1hXUURmRzhkejZwVXlyRDMvUEJUNHVsWVpvQ25TRW9mdFRtY1UxbDhxcCt6UzU0WS9MZUVJd0E3NkZabkRDN3VLR2tqSDhTdGxBT3BJeUFzQWdNYTQzMmtsbVkzUCsrRmI4S3RYMVNVc2dhUG9OZmkxRCszK3JlZWVmOHc3QUEyU3dzRnZhdmFhbGtzNHBxQ1g4RE1BbTZoQ0o2OVBkaE0xa2I3RUsrUUYxSktRRndBQWpaWkRYWVZLQUR6cXN3QXNBSnZLUytWOGlBOWYxK3lscGFWL2ZvMnY3VElzbG5BVTVBWGdTWEhPT0F2VldEcHVZbTlSRTBVY2I1VUJxS04vS1FFQUFBRHdCRGV2QWRqV3NNYXY3V1VjdjdjN25TS092bDBOd0JPcU1rL2MybFhVaEdNWnFDMGhMd0FBQU9BcGhSSUFzSTNVelN0dVB0VDhaYWJsbkQvbXNOZVp2UTdzK2Z4Q1BmUjk5b09qWG9QZXhjMW5sUURxU01nTEFBQUFmbUEyUGo5cDhNdWZPQUlBMk1Hd0lhOHpoVEgrYkhjNm96aTZkanNBSzE3NTdBZU9aNEI5RVBJQ0FBQ0FIMnRzWjQ1Mjc4WXlCd0JzTFhmemV0ZWdsL3c2anIrRXZRRDQrbm1xUWt2NjVqa2I2cUpRQXFDT2hMd0FBQUFBQURpa3F6aStOT3cxQzNzQlc2dFNNSWdmcXNxKy9HUlhVVFByZkdIdFJKbUFxaEh5QWdBQUFBRGdZR2JUNlYzY1hEYjA1UXQ3QVRSYlZicEMzOWxWMU15a1J1OVBnTDhKZVFFQUFBQ1BtbzNQL2RJVGdOM25rK2wwRkRmakJwZEEyQXZZaEd2dyt1aFg1SGtXZGhVMXUvYThWUVdnanY2dEJBQUFBUEMwZHUrbW1JM1BtL3J5TFY4QXdMNmtibDUvTnJ3R0tlejF1dDNwZklqYkt6Y2dBZGZnTmY0Y3VRajF2cWpJMDlYSml6cjY1UWZuMDRrU0FWVWo1QVVBQUFBOHBSOThxeHVBUFVpQnBuYW44eTQrZktzYWY0ZTlVbmV6WWF5TnVSYTRmdzJPL1hoTVFzZlU4ZHJ6U2hXQXVyRmNJd0FBQVBDVUN5VUFZRjltMCtrd2JqNnB4Tjk2Y1h4c2R6cEZIQVBsQUxLdUV0UkNsWmJkbk5oZEFGQitRbDRBQUFEQVUwNW40L091TWdDd1I0TTR2aWpEUDZTdzEvdDJwek1SOW9KbWkrZUF0TFRZUzVXb2hjcUV2R2JUNmNUdUFvRHlFL0lDQUFBQWZtU2dCQURzUzFxMk1XNHVWZUpCS2RpUndsNTNjUXh6MkFOb2xyNFMxRWF2SXM5VDhCb0FLa0xJQ3dBQUFOYlQ1S1dsM3M3RzUyY09BUUQyWlRhZGp1TG1nMG84NmtXYWYrUDRYN3ZUR2NYUlZSSm9qTDRTVkY4OGIxZnA4OU90UFFZQTFTRGtCUUFBQU91NWEvanJIODNHNTdxSkFMQlBxWnZYSjJYNG9kZHgvTlh1ZEs3ajZDc0gxTjZGRXRSQ1Z3a0FnSDBUOGdJQUFBRFdjUnBISWVnRndMN01wdE1Vb0U1aEJzdEVyZWRWSEIvYm5jNXRIQVBsZ1BySlFjNlhLbEVMVmVya1ZkaGRBRkFOUWw0QUFBQ3dIa3RZQ0hvQnNHZXo2WFFTRmt1VENYcHROaCsvYjNjNmt6Z3U0ekF2UTMwTWxhQTJMSGNQQU95ZGtCY0FBQUNzNTA0SnZrbzNsbTluNC9PK1VnQ3dEN1BwTkFXcEwxVmlZNm5iejY5eHBMRFhNSTZ1a2tCMXhmZHc2bXpZVTRuYXFOSTVlV0ozQVVBMUNIa0JBQURBZW5UeStpYmRWUDQ0RzU4UGxRS0FmWmhOcDZPNCtWa2x0dklpanJkeC9OWHVkRWJDWGxBOXVTUGZTQ1ZxNWJSQ3ozVmlkd0ZBTlFoNUFRQUF3SHAwOHZyZTI5bjRmS0tyRndEN0lPaTFGNi9ESXV4MUhZZjVHU29nQjd5S3NBaHNVbzk5YXFsR0FPQWdoTHdBQUFCZ0RlM2VUYUVLRDFwMjlicU9vNnNjQU94QzBHdHZYcVg1dWQzcEZNSmVVT0xQR044Q1hxZXFVU3NuRlh1K3VsWURRRVVJZVFFQUFNRDZQaXZCbzlMTjVML1NFbzV4bkNnSEFOc1M5TnFyWGxpRXZTWnhESlFEeWlNdnJWb0VBYTg2NmxkczN0VzFHZ0FxUXNnTEFBQUExdWNiemovMk5vNkpzQmNBdXhEMDJydlVlZk85c0JlVVEzd2ZYdVRQRmdKZUFBQ3NUY2dMQUFBQTFpZmt0WjRYUWRnTGdCM2xvTmRQY1h4UmpiMVpEWHNOODFKeHdKR2s1VlBUTXFyeDRlLzVtcGw2Nmxmb3VlcFdEUUFWSXVRRkFBQUE2eXVVWUNQM3cxNWRKUUZnRTdQcE5NMjkvZUFtOUw2OVhNN1J3bDV3ZUtselZ3NTNmUXlMWlZTaExDWktBQURWSWVRRkFBQUFhMnIzYmdwVjJNb3k3UFhYYkh3K2l1Tk1TUUJZMTJ3NlRaMDAwOXd4Vm8yRHpkSENYckRQencyZFRqY3RqUnJIS0k2N3NPamNKZHpWSFBZMUFIQVFRbDRBQUFDd0dUZVlkL002amo5bjQvTWlqZ3ZsQUdBZHMrbjBMbzUrZlBpYmFoeUVzQmRzSWIxWDhoS01nL3plS1hLbzY2ODQzdWRyWDhzeUFnQ3dGLzlXQWdBQUFOaElFWHd6ZXg5U0RYdXo4WGxhZm1zVXgxVzdkM09uTEFBOFpUYWRYdVlsejlMY0lUaXhmOHV3VjZyelZacWZVOEJPV1RpeXMzajhQZWZmMzgzanUrY1Z4OG5LWStjZ3ZoT1AzYXAxTFo3WWF3QlFIVUplQUFBQXNKbnJzTGo1eVg2OHpQVjhPeHVmZjRqYmtXVXhBWGpLYkRxOVRrdWg1VGxaOFBvd2hMMTRUcjhxQVJWV3RVNklFN3NNQUtyRGNvMEFBQUN3Z1hidjVqWnVQcXZFUWFUbGJEN094dWVUT0M3ajZDb0pBQTlaV2I3eGx6aStxTWpCV01ZUkFBQ2dKSVM4QUFBQVlIUFhTbkJRcWJ0WDZ1RHcxMng4ZmgzSGhaSUE4SkRaZEpxNlRLV2xzY2FxY1ZEQ1hnRHI2U3NCQUhBb1FsNEFBQUN3dVpFU0hNMnJPSDZmamMvdjRoakZjYVlrQUt5YVRhZVQzTlhydjBHM3pVTmJEWHRkS2djQUFNRHhDSGtCQUFEQWhpelorQ3pTVGVXMG5PT2ZzL0g1YlY3T1VSY1JBUDQybTA1VHA4MFVCbjZuR2tlWmwzOXRkem9wN0RWUURnQUFnTU1UOGdJQUFJRHRYQ25Cc3prTmkrVWMvNWU3ZS9XVkJJQmtOcDNleFRHTUQvOFRMT0Y0REdtSjVmZnRUdWMyRHZNeFFBamRpajNmVzdzTUFLcER5QXNBQUFDMk00cmppekk4dTlUZDYrTnNmRDdSM1F1QXBaVWxISDhLdW04ZVF3cGdmMngzT2tVY2xsWUdtcXhic2VkN1o1Y0JRSFVJZVFFQUFNQVcycjJiOU12d2E1VW9qZFJKUkhjdkFQNWhOcDBXY1hUancxK0NjUFl4OU9MNHM5M3BqT0lRdkFZQUFOZ2pJUzhBQUFEWTNsQUpTbW5aM2VzMmpvRnlBRENiVHRNeXk5MDQzZ1ZocjJQTnhaTjJwM09wRkFBQUFQdnhieVVBQUFDQTdiUjdOMm1Kd0E5aGNTT1Q4a2xMUjcyUCt5amQyRTlqbFBhWnNnQTAwMnc2VFYwNGg2bkxWRmdFdGMzZmgvVWlqbDlqdlFkeGU1bTZxaWtKYTBxZDkyNUwrTHpTVXFTckhlcjZlZHNOaTY2eUFBQndVRUplQUFBQXNKdGhjSk80N05KTjVyZHA1RkJlQ25zVnlnTFFUTFBwZEJJM2czYW5NelNQSDBVS1hYK005ZjR0MVR1SDdlQXB0eVVOQlQ3NW5PSXgzZzJMd0ZjL0xBSmhhUWgvTlkrbGFnR0FnN0ZjSXdBQUFPd2dkNGI2b0JLVnNWektzWWpqUWprQW1pdUZ2ZUlZeElmL2llTVBGVG00TjNIY3RqdWR2bEpRNDNOS0VVY0tNMTdFMGMzbmw5U1o3Sk1LTmNhcEVnQUFoeUxrQlFBQUFMdTdqT09MTWxSS0w0N2ZaK1B6dE9UbVFEa0FtaXNITTFMdzk2YzR4aXB5VUttcjBjZmNSUTJhY242NWl1UE1PUVlBZ0YwSmVRRUFBTUNPMnIyYnRPelFVQ1VxS2Qxc2ZpL3NCVUR1d05NUGdoakg4TGJkNlJSeFdOYU1KcDVqVW1jdlh4QUJBR0JqUWw0QUFBQ3dCKzNlelZXd0RFdVZDWHNCOE5XOXNKY2xtUThuZGRXY3REdWRNNldnWWVlWTlMa2huV00rcXdZQUFKc1E4Z0lBQUlEOUdTaEI1UWw3QWZCVkRudWx1ZUEvUWRqclVGN0VrVHA2bVhOcDJ2bmxObTVTd05HWFJBQUFXSnVRRndBQUFPeEp1M2VUYnRhOFU0bGFFUFlDNEt2WmREb1I5anFvRlBSNkwraEZBODh0YWNuM2kyRHBSZ0FBMWlUa0JRQUFBSHZVN3QwTWcyL2sxOGt5N0hVYlIxODVBSnJyWHRqcnR5Q1lzVzhwNkRWU0JwcDJYZ21Mb0JjQUFQeVFrQmNBQUFEc24yL2sxODlwSEI5bjQvTWlqcTV5QURSWERudGR4b2RwUG5obnp0K3IxNEplTlBDY1VnVGRnQUVBV0lPUUZ3QUFBT3hadTNjemladUJTdFJTTDQ2L1p1UHpxemhPbEFPZ3VkSlNhM0VNd3lMczlYTWNuMVZsTHdTOWFLSXI1eEFBQUg1RXlBc0FBQUFPb04yN3VRNitrVjluYitLWXpNYm5sdGNCYUxnYzlockYwUTJMc05kWVZYWW02RVhqemlOeE0xUUpBQUNlSXVRRkFBQUFCOUx1M1F6ajVvTksxTmFMT0g2M2hDTUFTem5zMVk4UGY0cmpEeFhaU1FwNkRaV0JKcDAvZ201ZUFBQThRY2dMQUFBQURxamR1eG5FelNlVnFMVzBoT1B0Ykh4K3FSUUFKTFBwdElnamRYdjhUMWdFdnIrb3lsYmV0anVkZ1RMUUlDTWxxRHpuZXdEZ1lJUzhBQUFBNFBENlFkQ3I3bEpYcjE5MTlRSmcxV3c2bmNReGlBL1QzUEJMMEtWbkcrL2JuVTVmR1dpSWtSSlUzbTNGbnUrSlhRWUExU0hrQlFBQUFBZlc3dDNjQlVHdnBsaDI5YnBRQ2dDV1p0UHBYUnhYY1hUakgzK09ZNndxRzdsdWR6cGRaYUFCNTRxSnp3d2MyWmtTQUVCMUNIa0JBQURBRVFoNk5VcnE2dlg3Ykh4K3BSUUEzRGViVGtkeHBHdUMvd3VMcFJ4WmIyNU5RUzhkWjJpQ1Fna0FBSGlJa0JjQUFBQWN5VXJRNncvVmFJUTNzL0g1cmVVYkFYakliRHE5elVzNS9yODQzZ1ZMT2Y3SWFSd0MxRFJCb1FRQUFEeEV5QXNBQUFDT0tBVzk0a2hMK2VuYzBRenBoblFLZWxrR0JZQUg1YVVjaHl0TE9lcjYrYmpYN1U3SGtzalUzYTBTQUFEd0VDRXZBQUFBZUFidDNzMGdibjVSaVVaSVMwejlPUnVmRDVRQ2dLZmtwUnhUTVBpbm9QUG5ZMGJ0VHFlckROVDRQRENKbXk4cVVWbUZFZ0FBaHlMa0JRQUFBTStrM2J0SlN3NzlON2lKMHhUdlorUHpTMlVBNEVkbTAya1JSK3BZOVordzZQN3BXdUdiRko0ZUtRTTFwNXNYeDlKWEFnQ29EaUV2QUFBQWVFYnQzczExM0tTT0haWm1hb1pmWitQemtUSUFzSTdVMFNlT1FYellqZU5kRVBaYTZyVTdIY0ZwNmt6SUN3Q0E3d2g1QVFBQXdETnI5MjRtY2FTZzEyK3EwUWl2QmIwQTJNUnNPcjJMWXhnV1lhK2Y0L2lzS21IWTduUk9sSUdhdWxPQ3lwb29BUUJ3S0VKZUFBQUFVQkx0M2szcVNQRlQwS1dqQ1FTOUFOaFlEbnVONHVnR1lTL0xObEpuT25sVjE2Uml6MWRZRmdBcVJNZ0xBQUFBU3FUZHV5bkNva3ZIQjlXb3ZSVDB1bElHQUxZaDdQWFZxM2FuMDNjMFVFTTZlWEVzcDBvQUFOVWg1QVVBQUFBbDArN2QzTVV4Q0l1dVhwWmpxcmMzcy9INVFCa0EySmF3VnhDWXBvNG1TbEJadXJBQkFBY2o1QVVBQUFBbGxidDZuY1h4TGxqQ3NjN2V6OGJuZldVQVlCY05EbnVkdGp1ZGdTT0FtcjJmSjZwUTJYMVh1UzVzOFJ4cXlVWUFxQWdoTHdBQUFDaXgzTlZyR0JaaEwwczQxdGYxYkh6ZVZRWUFkdFhRc05mUW5nZEtwR3BmMERtenl3Q2dHb1M4QUFBQW9BTGF2WnZKeWhLT1l4V3BuUmRoRWZUeUxYb0E5bUlsN1BWTHFIOUgwSmU2ZVZGRGxtMnZMa3MyQWdBSEllUUZBQUNVZ1crTndwclNFbzV4OUlPd1Z4MmRCcDFJQU5pejJYUjZGVGZkVVAvbG44MmgxTTFFQ1NxcmFrczIrcDBNQUZTRWtCY0FBRkFHT3RmQWhvUzlhdXZOYkh6ZVZ3WUE5bWsybmQ3Rk1RejFYdjVaTnkrZ0xLcld5Y3Z2WkFDZ0lvUzhBQUFBb01LRXZXcHBaTmxHQUE1aE5wMU80aGpFaC85WDArdUdvYjBNbE1Da1lzKzNhNWNCUURVSWVRRUFBRUFOcklTOS9oUHEyNkdqS1Y0R042a0JPS0RaZEhvYlI3cHUrRG5VYXduSDFNMnJidzhEejJ4U3NlZmJ0Y3NBb0JxRXZBQUFBS0JHMnIyYlNSeURzQWg3L1JicWRlTzJTZEt5aldmS0FNQWh6YWJUVVZqYzNQK3RSaTlyWU05U0V4TWxxS3lxTGRmWXRjc0FvQnFFdkFBQWdES3dMQm5zV1E1N1hZYkZMK3gvaWVPenFsVE9sUklBY0dpejZmOW43MjZQbkxpMnRnRTNUejJxMGo5NEl4aWRDTUNUZ09RSXdCRWdJakNPQURrQ2p5T3dpT0FNRVZpVHdIaUl3Q0tDWi9pbkt2Mll0emZhQWpITXB6N1g3cjZ1cWk2QkR3YzBxN3YzN2xiZldudDJXVy9wbWlFdDRmaXhBVC9TNjA2MzYvNkNKcGdxUWJuamFtRnYrY2hlQTRBeUNIa0JBQUFSNkZZRE85THBuMS9XMjBtOTllcmYvbEp2WjZwU2pQNzg3SGlnREFEc1ExN0NNVjJYLzk2QUgyZG9qd0lIVnRSOVY2ZmI3ZGxsTkUxOVhJL3JiWExINW90VlFIR0V2QUFBQUtBbE92M3owM29iVkl1bEhOOVhsbklzd1VnSkFOaW4rV3lXNXA3U3Uzb043VW5nd0N6WkNJZjN1dDc2ZDJ5K2RBb1VSOGdMQUFBQVdpWXY1VGlzRmgva3Y2bWFzVFJUVStubUJjRGVOYUNyMTNOZGFZQURteGIyZm9WZEFLQUFRbDRBQUJESFJZdC9kaDhtd2dIa3BSekg5WmJPd2RTeFEzZXZtRVpLQU1BaHJIVDErbFRnMjM5bER3SUhwSk1YSEZDbjJ4Mm9BdEJFUWw0QUFCREhaWXQvOXFkMlB4eFdwMzkrb2J0WFdLbWJWMDhaQURpRTFOV3JXbndwNDBOaGIxM0lDemprMkRrcDdDMzc4aDFOODB3SmdDWVM4Z0lBQUFDK3V0YmQ2ei8xOW1kVlp2ZU9wbm1yQkFBY3ludzJ1NnkzRkpyNnJhQzMzZTkwdXg3d0FvZFUwaGRuaEx4b0dzYzAwRWhDWGdBQVFBanpzK09CS2tBc25mNzV0TjdlMWx1di91MHYxV0k1Unc1RE54SUFEbi9OUHB1ZDFDOC9WK1VzNyt3ZWc1TFB0MUc5UGJsbmM0ekhWdEtTalU4Rlkya1lJUytna1lTOEFBQUFnSHQxK3VlbmVUbkgvMWN0dW5oWXpuRy9qdVpueDRKZXNYaG9BTFJTWG9Kc1VNaTF3TUFlQXc3b29yRDM2L3FXSnVrcEFkQkVRbDRBQUJESHRPVS92dzhUb1FCNU9jZVR2SnpqVDlXaXU5ZG5sZGtMSWE5WW5pb0IwRmJ6MlN3RkZ3WlYvS0RYd040Q0RtaFMyUHMxWnRJa3o1VUFhQ0loTHdBQWlHUGE4cC9mc2dCUW1FNy8vQ0ozOStyVjI1dDYrNlFxT3pWUUFnQ2ltTTltbDFYOG9KY0h2TUFoeDhuU09ubjE3RFdhb05QdCtpSXAwRmhDWGdBQVFCUURKWUF5NWU1ZTQzcnIxYi85dVZwMDkyTDcwcEtOUHF3R0lJd1NnbDZkYnRkOUJuQklad1c5Vi9jYU5JVmpHV2lzLzFVQ0FBQWdDSjI4b0FFNi9mTkovVEtabngyUDZ0ZGh2YjJ0TEd1M1RZTjZpOVFSWU5ybW5WRWY1NE44ekVQN3h2dEZjR2J3Z0Q4Nm1jOW16cE1tajRXejJXVStIdEoranRnNTYwVlYzcEpwUUhPazhhZGZ5SHZWL1pDbUVQSUNHa3ZJQ3dBQWdrZ1BpZWRueDIwdWdROFRvVmxqMnJSK0dhV3RIdHVHK2RkSEtyT3hRYjJkUk5yUExaKzdvTzNqMGJzSC9Ma1U1SjhvVjdNRkQzcDUwQXNjMHVTQjgyV002L3Q2TEJmT3BpSFhxUUNOWkxsR0FBQWdETXVRUVROZFc4cnhURVUyWXB5MFA4QjVRc3hyK2NYU2pjTjYreHpzcmZYc0hlQ0FZK01rNExoNGw0RzlSZ1A0SWluUVdFSmVBQUJBSkQwbGdPWktIUXZyYlZBSmUyM2lhSDUyYkt5TXcxTERjTCsrRXJUSGZEWkxTd29QSFlNQTM1a1U5RjZGc3lsYTdpd0swRmhDWGdBQUVFdmJRdzgrVElRV1dBbDcvYWZlM3F1SXNkSytnSWFQKzkydWM2VkY1clBaYWYzeWU3QmpVQ2dYT0tSSlFlOTFZSGRST01jdzBHaENYZ0FBUUNRREpZRDI2UFRQcC9VMnJIVDJlcXhvWVlsUExkNFhRZ1BnR284YnpHZXpVZjN5MGR3SjhNVnBRZS8xcVhBMnJqc0I0aEx5QWdDQVdLWXQvL2t0cFFJdFpCbkhSNHYyMEtYTmM1ZDVDOG9jdDlpUFlhRDNJcFFMVGJodjZIWXY2KzNxbm0wYzdYM1BaN04wdmZ5eG9GSVBIRzBVT2tZOGM0OEdOSjJRRndBQXhESnRld0htWjhjZUFrSkxyWVM5M3RUYlp4VzVsUWZWNWkwb3pVQUpXamcrem1ZWFZaeGxHNDNWVVBxOXdxSzcxTk1IL05GcDBCOWhZdDRHeHk3QXBvUzhBQUFnbHFrUytFQUcycTdUUHgvWEw3MTYrMU0xYnVTYnliRUlEc0Q5ampyZGJrOFpXdW1rYXZleXZzRDJEQXAvLzJPMUJzY3V3S2FFdkFBQUlKYXBFdmhBQnZnUzlMcXN0N2ZWWWdsSEQ0ZXZtWjhkUitybU5XbjU3aER5QXRkNDNEWmZ6V2FYOWNzb3dGdnAyUnRnSGpud2VIaFIwSDNOMDl3NURVcnpTZ21BcGhQeUFnQ0FXS1pLVUwxVUFtQXBMZUZZTFVJMFo2cnhIUTlkNGhnb0FUaFh1TjE4Tmh0WGh3ODI5T3dKYU0wOGNoSDRaemd0cU43Q01oUWxCeE9QVkFKb09pRXZBQUFJcE5NL242ckNsdzQxUGt3RVZzZkcxTlZyVVAveXZXb1EwUE5nbmRVZ3FvRVN0TnBJQ1lDMTd3Y1c0WTJuRC96amw0Ri9sSEZCWmZlNURLNDFBUUlTOGdJQWdIZytLb0VQRTRFZmRmcm53MHJRYTJrUTZMMU03QTd6Rmp6QVVhZmI3U2xET3dYcDVnVzQxanIwV0ZqU2tvM1A2M25iRnhrb3lWQUpnRFlROGdJQWdIZ3VsY0REY3VCbU9laGw2VWFpR1NnQk9GZTQxNGtTQUd0cTBtY0VZM1dIN2NwZkpIaXVFa0FiQ0hrQkFFQThFeVdvbmxxeUViaERHaDgrSzBNWUYwcmdBUmc4MEVBSldtMTh3SDliTnhvb1ZPNG05ZUR3eG53Mm14Z0xYZVBpZmd5Z3FZUzhBQUFnbnFrU2ZERlVBdUFtbmY1NTZuajR0dVZsR0FUYkgyMG5uQXdQNHp4cHNmbHNsdWFMRHdmNjUzWDNBSE5IbExGd1dwWFRtZmlsSlJzcHhGQUpnTFlROGdJQWdIaW1TdkRGeS9uWmNVOFpnSnQwK3Vmait1V1RTb1JoWHdpdndFTTg3WFM3TDVTaDFjWktBRHpTd0Zqb0doZHUvV3hnY1cwcHpBMjBocEFYQUFBRTArbWZUMVRocTZFU0FIYzRVWUl3cGtwUXZaNmZIZXQwQVBmenNMamQzT3NBdTV3M2l2aml3WHcyRzFmbExEOXYzaWE2b1JJQWJTTGtCUUFBTVgxVWdpL2VlbUFPM09GVUNjS1lLc0ZpM2xJQ3VKZUh4UzEyd0NVYmRaeUVBblc2M1VIOThyU2gxNlRqUXQ2bkpSdHhiUWtRaUpBWEFBREVORldDTDlLSHVSNllBemZxOU0rTmxlYXRhSVpLQVBkNjdtRng2MDNNVThBRE5UbThjV0kvd0lhZkNYUzc2ZGc4VWdtZ1RZUzhBQUFncGdzbCtDcDE4K29wQTNDTE15VXdid1Z5Vk05WlEyV0FlM2xZYk00QWFQVjhNWi9OcHRWaE9odXV3NWZ2aU1xOUY5QTZRbDRBQUJEVFJBbStTdDI4VHBRQklMUkxKZmhxcEFSd0x5R3ZGcHZQWnU1MWdIdDF1dDBYMWVNNzlKUVdJaTNsczQ3VWhiUG5xQ1RZR0pHT3laY3FBYlNOa0JjQUFNVGsyKzNmZTZrekNrQmNuZjc1UkJXK1N0MjhSc29BZDEvYldiS3g5VDRxQVhDUGRUNERLT3FMQnpuMFdrcG5ZdDI4YU1JWUFWQThJUzhBQUFpbzB6OVBIMHg2OFBHOWsvblo4UXRsQUs3cEtVRVluNVRnSzBzTncvMTA4MnEzZlgrcFJjZEpNRTlFTlM3a2ZRNGRramdtQVE1UHlBc0FBT0xTemV0N2Fkbkc4ZnpzV05jSFFxaVB4UlRpR0FseUhOeVJFb1F4VllMdjV5eGxnRHNKZVprejNGc0JOK3AwdTRNMXIvT0xDM1RPWjdOMHpWakNseVdlMXZ0bDZPZ2t5Qmd4OUZrQTBGWkNYZ0FBRU5kRUNYN3dQTlZGMElzZzBzUHBkL1gyYjMxTW5scFNkUDkwOXpOdkJkZTNiQ1BjeVpLTjdTWjBCZHhsM1h1clVzZVdVcTRaTGRsSTZXTUVRUEdFdkFBQUlLNkpFdHhJMElzbytpdS9mbGx2ZjlYSDVXVzlwWTV6QStYWkMzV094UVA3SDcwVEFJVTc2ZWJWWHZ2dXRqTlZjakEvUkZWUU42L251Y3NhSEV4OURLWXZlL1ZWQW1ncklTOEFBQWlxMHorZlZtVjh5SGNJS2VoMW9Zc1BoM0xIc1plV2FIdGRiMy9YZjJaYWJ5ZU8wNTBhS0VFb1FsNDMrNnZ0UWE4VWZMVzBMYmNZS2dGN01sVUNLRU5laHUxcEMzLzBVU0h2VXpjdkhJTUFCeVRrQlFBQXNVMlU0RlpIOWZiUC9PelloenNjd3VDQngraXYrVGdWK05xeUhCaDUyZUlTVEtPOW9SeE8vdXpvdkZFS2VwMjA3Qng5a2NlOWRGejhYVy9HUDI3UzczUzdQV1ZvNFR3K20rMzdQdWRTMWFFWXd5WmRJejlpWEJ6WEx4OExlS3N2emQwYzdKNXpjZXk5VmdtZ3pZUzhBQUFndG9rUzNPdVArZG54UkhpR1BYdnM4WFk5OEpXV2RMUkUxV1pHTGYvNXAwSGZsMjVldC9zMXoxZTlwdjZBMTRKZC8rUng3MmpOY1pQMkdDb0JPeCtmWmpQekV4UWdCemo2RzV6cjA4SkxVTXFYMkVhT1ZoeDdBSWNoNUFVQUFMR2RLc0dEcEErQi84bkJtWjV5c0FlYmhCVlM0Q0Y5OC9TLzlmRjZXVytuYVNrM3grN0RwYVhmS3QvZWpXcWlCUGZPVi8vV3gvQ28zcDQxNEZ6czVmRXJ6YitwUzg3MVlOZXFnZDNQTFlaS3dJNTlVZ0lvUnFzN2RlY3VoMmNGdk5YWHVubXhiL1V4bCs2ZmZGa09hTDMvVlFJQUFJaXIwejlQQVpEVXJ2KzVhanhJQ24yOHJtdVdQaFE5cWVzbkpNZXViT3VjZkZvdGxoejhzdXhnUHQ4bnl5Mk5BVXI5dmR5MXo3a2R0Mk9XVGlrUDg2N2UzdVlsSE1kNXFjdFN6ciswRGZKMjlJai9lODl1NXhaSG5XNzMxWHcyTTdheksxTWxLTTZMU25DOHJZWks4S1VHL3hid1BrZjJGM3VXUXFCUGxRRm9PeUV2QUFDSWIxeHZmeWpEbzZST0tmMzUyZkhuYWhFR21hVFhLSUdaM0xFcGJlbGJpQy95cnkxalZZamNSV3BYbnVmdDEveHZuVlhmUWw4WGJROTk1WUJKcW9VUGRxc3E2ckV3c1dzZUxCM0hLZXoxcmo2MlArVDVLdEpjdFF4MExiZitobi9sVWVwZUpyektMWWFWQUMvbUpyNTVwZ1R0MCtsMmh4dGU1NTgxb1E1cHljbTZGbjh1N3drRFM5MjhSZzFZSXBNeXhvYzBMN3hWQ1FBaEx3QUFLRUY2NENYa3RaNzBBZkhydlAyVnV5U2xMalBUYXZHdzU3TFRQOTlLMTVtODdOWnFVR3VRWDFmLys0dEtPS1VKOWhuSTYrZnRYVDdPVmp0OVhaVFMvV2RMNTlpbzhzM2RWU0U3WnVsQXViWmxSNysvOWhudVhBa2RMN2RCbnJkMnRmOTBadUhXY3lBdCsrUkJNVzJhTTRFZkNIQjhrKzU5aGdYYyt5emZKK3hqZlBCWkFFQWw1QVVBQU9HbEVJY0g1bHZ6ZktXT3k5RE04bjk3N0xkK245a25yZlVpd0RHODdQU1Z1dFZOcXNYRHkvUTZiVkx3SzRjblgxV0xod2RIRHIzdjVvYkkzWkFteHNlTlhBOTNmczduK0dYMUxhaXcrdXZiOUtydmwwaGMvZjJoUXNkQ1h0eGxtTWQ3MkRZaEw0aCtiZHZ0RGx3L3J0d0h6V2FYZFUxU3FPV3Y0RzgxZGZNYTErL1g5UjI3SEI5MDhRSllJZVFGQUFCbEdGZTZlZTFhWHdsNG9FR2c5NUpDR3NzT1FOY0RJY3V1ZFY5K1hjb1NhYm16VUtyeHEveHo4YVBvUzlGTXF2akx5NVRrNmNvY1ZmbzVZV2xpN3ZLMjArMmVwQWZiU3RGODliN2UxM2p3V1llNE8xa1drVEJ6d0JiK2prYk5IL1hZTmM1TFdFYi9yR0lVN0I2WlpvNFB1bmdCWkVKZUFBQlFCa3MyUWdDNXMxVDBqbExMUUVqLzJudFBMeWtjdE93QTlMVVRVS2QvUGpsUVBkTUQzbFRUUWJVSWY3eW9kT3g2aU9nZFNTWjJFYmZvS1FIM3pGOHA0RHRXaWxiWVY3akluSFEzNFZzT0xpM1hXMjBueU43RXJuM0RldnMzK0h2czEvdncxWHcyTzNVMHM2UHg0WjFLQUh3ajVBVUFBQVhJU3phbWNJWnVVM0JZcFQ4SXU3RWIwTXF5cGNzdVlFdVRHLzZPWlVEc0xyM3F4ekRITXRDMS9MVnY0cTR2OUFPczFEWE9uTVU5WXhEY1psUUplYldGa0Jld092WnpnOVNKc05QdC9sN0ZEN21jMU85em9oc254Z2VBM1JQeUFnQ0Fjb3dyRDBmaDBBWU4vL21lWGh0bmpEa3hsZENsNE5UeHcwMVNCNzlPLy94Q0piakZVVnFhS2kxUnBSU050Ni9nL0VTcFhYTVRWKzdTODFvbDdyaDJtczFHcVZOVy9jdm5rZWZ2YXJHazNzZ2VZNHZqd3d2akE4Q1Ava2NKQUFDZ0dPbUIrV2RsZ0lPeXBBMkg5cm1RZ0l6bFdyaE5Ud200eDFzbE1CWnN5YWY1YkNaVUNyR050dmgzTmZsOEh4YndIdC9sVUE1c3k0a1NBUHhJeUFzQUFBcVJscitxTEY4RGgrWkRhdzV0VXNpY05hMWZQdHBkR0VkWncvTk90enRRQm1OQlcrWk1hS3NkZFBGcTdGS0JPYkQ2V3dGdmRleklaa3ZqUStwZXB6TTB3QTJFdkFBQW9DeSt4UVlITWo4N2ZsWXRscUdBUTVvVTlGN0hkaGMzR0NnQkR6QlNnc2JieDdKanVrcENiRDdmZU16OTZHeVc2blVXZld6dmRMczZjcktSK2hoNlpud0F1SjJRRndBQUZDUjNSdm1nRW5BUUF5VWdnSkllV0kvdExtN1FVd0llb04vcGRvZkswTkI3bXYxMGF2czhuODJFdk1yMVRBbGFNUTY4VklsSFM5Mk5QZ2QvajM5WXRwRU5wYUNnTDlnQjNFTElDd0FBeXVQYmJIQVlQcWptMEQ3bXNHOFI4akxEZ3NsY2Q1UTdJOEo5UmtyUVdJTTkvQnNDWG1WN3JnVEcrTWVhejJhVHBoZXQvaG5UOWZXckF0N3EyQ0hPV3ZlUWk0RGdPNVVBdUoyUUZ3QUFGS2JUUDU5VThWdjBReE1ObElBREczdlBOSVRRTEE5eHBKdFhZKzBqb0NEa0JVSGxzYjJ2RXV2SlliYmZnNy9OdEd5akx5amkvaEZnQjRTOEFBQ2dUQ01sZ0wwVFN1RFFpbnRnM2VtZnAvZjh5YTdEZU1xYVRqcmRyczV2RFpMMzU2NjdOSDJ5VktQeG1OQmpnUERQaHVveGJsVEYvL0xmci9YK2ZtVnY4WWp4WVZUcDVBaHdMeUV2QUFBb2tHNWVzRi96cytOZS9mSlVKVGlnb3BacXZNYURQSzRUS3VDaDB0ejdWaGthWlI4UC9NZksvS2h6TE9ZOWI3ZmJzM3NhYWJTajQrNXpTOGZUNkYrbUdEdVhlZUNZYjVsR2dBY1M4Z0lBZ0hLTmxBRDJSaUNCUXlzNUtEV3Uydm5namR2MWxJQkhlT2NCY2FNTTl6VHZZSzRnbUhvc0g5UXZ2Kzdvcjc5b1d6M25zOWxsdFFoNlJiN09Ub0crVTEwNXVXZHNTTWVIRHB3QUR5VGtCUUFBaGRMTkMvWkt5SXREU2c5dWl2M1F1NTZ2MGdNbzNieFkxVmNDSG1tc0JBMjRmMW1FOVhaOS9yK2Z6MlpUMVladzUvOHpZL24yMWVOZENyY05nNy9ONSs0RmVNQjEzcEV5QUR5TWtCY0FBSlJ0cUFTd0Z3TWw0SUJPY2xDcTZKK2gwczJMRmZPelkrRlpIcVBmNlhaZktZTjdsd2NZSzNOajlKU2dVVWFWRU1kdXJxbG1zL1Jsa0RmQjMrYnJlaDYzL0RJL3lNZkZTNVVBZURnaEx3QUFLRmluZno2dFgvNVVDZGc1WVFRT2FkeUErVW8zTDY3cktRR1BIUXN0OTFTOFhUL2dQNXZQWmhObGZ1RGNIUDk4TWs4MDUxZ2JWTHRicG5IcG9zMDFyc2UrZEwvd1B2amIvS00rRm9iT0NGYkdodlE1eXg4cUFmQTRRbDRBQUZDK1ViMTlVZ2JZamR4dDVxbEtjQ0R2YzZDM0NYVHpZcFh3TEkrVjV1S3hNcFFwUDlqZjlmWFVTS1dOdzRRNzkxT1ljQi9MamwrMnZkYnoyU3lOczlHRFhpYzUySU94b1ZlL1RGUUM0UEdFdkFBQW9IQzVPNHEyOTdBN1BvVG1VRklnYXRTdytXcGt0MkpzWlFNdkxkdFlyRjJQLzdwNE5jOUFDUm9oQmJ4OFlXWlBjdERyWStDM21JNkZpYUJYdTYyRVA0ME5BR3NROGdJQWdBYm85TS9UaHlNZlZBSjJ3Z2ZRSE1wSmc3cDRMZWVyMU0xTDkwbU1yV3pDc28ybGpmMkxMbDVITy81blJpb040Yzc5ZEY3MlZXTHZCbFVaUVM5emVYdWx6ekNmci9IL1M1M3FkSVlHV2svSUN3QUFtbU5ZK2JBRGRrRVFnVU5JNC9sSmcrY3JPRklDMXBRZURwOHFReG55US96Ump2K1pEN3A0TmZJYVZ6aW83SE0vZFYxOHQ4ZC8waGlRMWVOaDZwNDdxQVM5aURrMmpOY2MzODl5cHpyM2trRHJDWGtCVUxKTEpRRDRKaStETlZRSjJEb1BtRGlFWVI3WG16aGZUU3JkSjZuTno0NEhxc0M2YzNQdUVFTjhhVm41b3ozOEd6eWVjQVc3dWRaYkxNVTNWb2tEWG1PVkVmUktuWndFdmRvMU5xUng0ZlVhLzlkMEhML0t4M1lLK3YrcG1rQ2JDWGtCVUt5cnE2dDBZZittMHJVRzRLdThiT043bFlEdG1KOGQ2K0xGSVp6bDhiekpocTdqcVhSS1pEUHZPdDN1UUJrQzM1dDB1NzFxOTUxOGZwL1BabFBWYnV3eDVCd3ZiNStsd0U2NmpuMnFHZ2UrbHhYMEl0YllNSzdXRDNnTjh2RzhOS3EzVDZvS3RKV1FGd0JGdTdxNlNqY0h2Y3EzTndCV3BXK3lmMVFHMkFvQkJQWXRCWitHVGY4aGRaOGs2eWtCR3pyTlFTSmlHdS80Ny84MG44MUd5cnkyUVFIdlVmQ2pwT3U3UlZCblVoMW1TZWFwUGZBalFTK0NqQTNwZW1CYkFhL2xjZTFlRW1ndElTOEFpbmQxZFhWWmJ5blE4Rk85bmFrSTBIWXJEODUxU0lITkRaU0FQVXZMTkU1Yk1sL3BQb2tnTFp0S25XSk9QUmdPT01aM3UrbHptbDB2ZVQxVTZZMlVjTjZZSjhweVVpMENPM3VubzkrZHRTa3A2T1djYjk3MXdMamFZc0JyNWJpZXVKY0Uya3JJQzRER3VMcTZ1cWkzZE1QNlM2VmRMOUJ5bmY3NVJlV2hCMnlERDVuWnAvY3RXS2J4T3QwbjI2MnZCQ3pIdjJyOUx5aWtCOE9uU2hqb1htVFJYVzIwNDMvbXoveUFsL1U5TCtBOXVoWXY1N3dmVitzRk9kaURsYUJYNUM5SUMzbzFhMHg0dHF1QTE3VjdTVjl3QlZwSHlBdUF4cm02dWtvZjdxYWJ3ZDlkNUFOdGxvTUN2NnNFYk9TNUVyQW5IK3R4ZTlqQ3VVcjN5WmFibngzM1ZNSDRONS9OMGpqd2FvTy9vNThmSkJKRHVnOTV1dU5qNXEweWJ6RC9saE9pRVBZbzQzaEs0NitBVi9ScnJ0bnNzdDRHVmV6dVIybnVTRUd2Z1QxVzlKaXdYTHAxbHdHdlpYaHhwT0pBMndoNUFkQkllUW5IZElHZlBnejZvQ0pBVzNYNjUya3MxTDRjMWpBL094Nm9BbnVTQWs2dFBkNXk5MGtQNjl2TEEzeStuUCs1SzlPYkRmNmUxNEplQWNiMHhUN1laVWcrelpsRGxkNVlLZGNkUjVaakxlS2NQM1RBUzFmWXg5em5Mb0xWMFlOZWY5ZkhsckcrekRFaFhkdGZySGt0OE9DQTE4cnhuSmFKdGFvTDBDcENYZ0EwMnRYVjFiVGUwcmVCZjNiREQ3UlY3Z3dqNkFXUEozakFQbndKZU9XT1ZtMmVxOGIxeTU4T0IyTXRyZk4rZGNtOSt0ZHBMTmcwNkNVMGVxaXhmUEZBZnRkaGo3ZjFjWEtoMmhzYmVLOXM0WndmVnpFNmVGM2FHNCtUZzE1dmdyL052NFMzaTd3T1NOZDFSMnY4M3g4ZDhGb3hVbjJnVFlTOEFHaUZxNnVyU2IybGh3ZS9WWmFDQWRvcFBld1Nkb1hIRVR4Z0gxN2xUbGF0VjljaHpWVkN5Y1phMm1WMC9UOXNJZWoxaCs0ZkJ4akRGNTA3L3RyeFAvTStIeDlzdHE5U1o2eVhCYjNsZ2IwVzhqaEs1NklsR2d1V3g5TmZxdGlmbGFmdzlrUkh2L2p6U3IyZDVPdUFkWlpyVHZQN2l6VURYc3RqV1Rjdm9EV0V2QUJvbGF1cnEzU3owYXM4UEFKYUpuZUlHVlNDWHZBWWdnZnMycHQ2Zko0b3czZnoxZEJjWmF5bE5kSUR2ZWxOLzhNV2dsNjZmK3h6N0Y0RXZIWTluNTNsempOc3JyUTZEdXl5VU9kN0NuT2NWckVDWGpwNXJha2VWMC96T1JZNUlOT3Z0Mmw5M0JrTFlsOEQvTHJCOWVBMjVxV1J2UUcwaFpBWEFLMXpkWFYxV1cvcHh1R25lanRURWFBdFZvSmV4ajY0eC96c09IMVQrTGxLc0VOdjhoS0YvQ2pOVllKZTdYR2tCSzAxdW5NdTNzN1NqY2JaWGQ5akxMcXJwSkRBMHgzK00ybE9lS1hhVzFQYWtxYlA2K09zWjdlRk9OL1RmcGhVOFRyQjZZcTd5YjN2WWduY0ZOU0ovRmxSbW1QK3JvL0JrVDBXYWt4SSsrT2ZhdjNQVHQ1c0s4Q3RteGZRSmtKZUFMVFcxZFhWUmIwTnFzV0h4bTRBZ0ZaSVFhOTZTMk9mam9ad041MWwySlcwSE1vdkFsNTN6MVdWb0ZlcnpNK09CNnJRT3JkMjhmcnUyTmhTME1zeVR6c2FyeGQxblZTN0RXdW1lWE80N2hKTy9MRFBobFdaNFZvaHY4TWZPMm11VG1FZ1g0UnA0clZZUGNiV1c5ckh2d2QvcSsveThvMDllKzJ3NDBHOXBmSGczUVp6Kzg4N1dJSjVaTzhBYlNEa0JVRHJYVjFkcFp1SkZ3WGN4QUpzVFY0T1M5QUxiamRRQW5ZZ2ZaZzlxTWZnVTZXNGQ1NFM5R29Yd2RyMkdULzBEMjRqNkZWdkUwR3ZMWS9UM3dKZXV3eDhmSmszYzVjWnRtTlU2UHQrYTljZDlIeFB4ODNmMVc0NzloRkFQZDZtZmYxekhuK2pTc3MzWHRUSHBYSGhBSE4vN3BMNjl3YnovOGM4dDA5MjhCWlBneCs3QUZzaDVBVUExZGNsSE5OTjdIOHF5NWdCTFpHRFhtOVVBbTRrY01DMmZma3d1eDU3UGFoKytEeTFESG9KSlRkZlR3bmFOUjQrOXNIZVN0QnIzUWQzNlVIa05IZWlZZFB4V2NDcjFQMDJxc3BkSXZmSStYdVFZNmEzWWJlZWZabmFXOXVUNStoMGJSWjkrY1kvY2xjdjkrNTdtUGZ6SEpMT3RkY2IvRlVmZGptMzU2NmZZM3NNYURvaEx3QlljWFYxTmMxTE9LWnZMRm5DRVdpOHZGellUNVZ2dXNGMVBpaG1tNzU4bUMzZ3RkWThkYW43cERHWHhqbFo1LytVZzE2RERhNWIwd1BodjNYKzJIQmNYanhNbjFZQ1hpWHV0M2VGL3hnbjl1UmVqNWxSL2ZKdlZjYnlqRk43YkxzS1dyNHhkZlg2Sngydk9uYnViQ3hJOTJMTHNPY20zZngrcTQrcFYzdFlmdGxjQVRTZWtCY0EzT0RxNm1wU2I3MThJeXY0QURSYURoMmtNVThuUTZqTno0N1RoOE5IS3NHVy9GYVBzNjl5VnlyV242dUdsZTZUVGRaWGdsWlplOG5hSFBvWlZKc3Q1YnJzL09GaDhHUEg0bTczVmJYbzRMWExKZHNFdkxhLzM1YWQxMHIzUEM4VHhvN1A4M3FiVnVXSEF0bkd2ZkZpK2NhZnF2aExxS2ZqZFpvRFNXeGgza2loK0R3Vy9GVnQ5dmxJK2lMOVQvV3hkTEtuWTNaYXdQRUtzQkVoTHdDNFExN0NzVmZwSEFBMFhPNlVNcWppZjBzVDlrRkhHYmJoeTRmWjlkanFtOFRibTZ2RzFlSWhrNDY3RFRRL08rNnBRaXQ4MkxTRHcwclFhNU12S0tSZzRUU0hsbmpJR0x6bzZ2UGZTc0NydFAyMkRIZzliY2lQOUZyUWEyZkh5aUFGWVBONTdnc3ZmRGZ2MWx1NlI0NytlVkVhNS81S3dTVHorOXJqUUc5bFdjWS90akFXcEdjcUx3NHdyNXNuZ0VZVDhnS0FlMXhkWFYzVzI3QmFMT0dveXczUWFKMysrYWdxNDF1YXNFc0RKV0JEZjliYkM4c3o3bVNlU2pWTkQ1aytxRWJqQ05pMncrazIvcEtWWmFUKzNPQ3ZTUStELzV1N2V2WHNtbHZHM2NVRDMrVXlUYnVVN2o4RXZMYTc3NVlCcitjTis5RmVPMiszZDR5a3prZTVXOC9mVmFHZE5ldHhZMkp2N3FYT282cU16NHVPVnVaMzkvWVBHd3NHT1VEN2I3WDVzb3hKQ20zL1VoOHp3ejBzejNpVHNiMEtOSm1RRndBOFVGN0NNZDBZdnFrczRRZzBXSHFBWG04bGZFc1Rka1hRZ0hXbERsTS8xMlBvVzhzejduU2VTdDBuMDdmemYzTmRidXlsT0tmYi9Ndm1zOW5iK3VXWERjZUNGR3I0TjNXdXNJVGp0ZkcyMjAzMVRhR3JYWWVFQkx5MnYrL1NtRHFwbWhmd1dqMXZMNXkzYXg4ZnIzS2dZMXB0dmhRYkxiTFMxYXVFNi9BMFR2eWRPM3NON2IwZnhvSFZKUmxUeVBQMWx2N3E5R1djWG4yY25CN3dPTDJzZkNrSWFEQWhMd0I0cEt1cnEzRzFXTUx4VDlVQW1peDM5ZnBQcFlzaDdUTlFBaDRwUGVENHZSNDNlL1UyVVk2OXpWTnBLY3dYNXFuR0VQSnF2Zys3Nk9hUUh5S200MmZUemlLcGM0VUh3ZFhYamg0cGNKV1dhdHIxTW4vdlUyRGdRSjArbXJqdm51V2x0djZwbWh2d1ducTZjdDZPZFBhNjk3ajRFdXlxdDNTdXBTVVpYMWZOV2NhVFBhdkg3SFFkbnM2NTl3VzgzUlJpWEM3ajJQcXhJbzhGNmRycC82cnRMTW00ZWsrY3VuZTlDaktudXk4SEdrdklDd0RXa0pkd1ROOW9GWDRBR3EzVFA1L1cyNkJhZEVqNHBDTHNRSG9nZXhyc1BVM3NGaDRoUGRoNGtZT3hIRzZlMG0yM2ZFSmV6YmV6K1hVK20wMXpaNUZOTzlHbXdNTmZiZTM2a1pkbUhGZUxqaDc3Q0FpOVNVczVPVFcyc3UrV25ablNRL3QzTGZ2eGwyR3YxSkh2SW5lbTZiWDhlRmlHdWs1eVlETWRGMDBOZHJuK081QzhkSElhdzMrdXl2aDgvR2hsckRoTjUwamI1b2lWa09mTExmOFQ2Y3Z3QiszZWRZTlRaeW5RVkUrdXJxNVVBUUEyblZDZlBFazNoU2ZWL2Q5OCtiMmVlMGNxRnNQODdMaTFGMEtkL3ZrVFJ3QnJuamNwNEpyR01kLzRaVjBwTERqSjIyblVKZTNxWTcxWHZ3enpadmtTYnBJZVpBeFR5RWdwd3B5M3ovSWM5YXRxbERrL3BHNTR5bERRUGNXaVc5Qmp3aVEvN1dNNXZ0U0ZxbjRaYjJuKy9wVC9ycE1tZDVyS2daaTBQMS92Nlo5TUlmK2g1UmszUHM1VHNIR1FOL2RuTjUrL0YzbEw5eDRYVFR5UDg3SHdiT1Y0NkxYcy91V3MzcThEaDN1SVkzR1k1NUtTanI4VUVreGhvTk5nQWFWTjk4V3pQQjY4eXR1dTVvaDBUenlxYXpjSldvZUhMRGx0REFHS0krUUZBTnVjV0o4OFNUZXliKys0Y1JMeUNrVElDOVkrZDU3bHNlNnU4UTZXVmtOZGt4SURNZlV4L3lJZjc2OGM4MVQ1ZzJ6TE1vWStaM3ZWSXBUUlY0MGlmRWo3cXo2bmZOdSt0SHVLeDRXOFBzMW5zOTRlMzlzdVFwK3BjK000Nm9QTU5ldjBLbC9qN0hPOFROMCtScFpudkhPL3BHdlBaL20zeS9CT01zaS9mNjVLRzEvTHBlTnZHVEs4eUw5ZlhFY0VPTWR6OEhKMXpGdzlKZ1lyLzgyOWlZQkd4REdzMUM4SGZzNmZXNlJyMGtucUVscmczUEVxanhHN250Yy81Ymw4SEx3bUp3KzRGalNHQU1VUjhnS0FiVSt1VDU3MHF0dS9BU3ZrRllpUUYyeDhEaTNEWHNOS3B5TytTWjBabHQrV256U3R5MUY5M0MrL0NUdHczTGRPZXJnLzBybXJxUE4xa0svTGhiM2lTUStHMGtPWFUrZFV3ZmNVand0NXZUL0Vzbno1Z2VlNDJtNG9KaDIvNlFId3VNUk9WTGttdzN3OWM3VG44MzdZcEpEY0kybytNUmZCemdob3hCejNtdkRsd1BUWlJocS92M3krRVNuMGxldTcyczF4WDZIUHova2F2b2dPcHpuTS9sOWpDTkEwUWw0QXNLdEo5c21UUWI3cFdmMHdXY2dyRUNFdjJPcjVOS3dXSDk3NVZubTdwQS80dmdhNjBxK2pMcis0bytOKytaQjA0Tmh2OURHZXJ1ZkdnaWhGbjZ1RFBFZTlWSTJEK2hxTXFjOG5TN1ExNFo3aWNTR3YzK2F6MmNrQjMrdXV1b29zaitzdjEwSlJIM2ptNWR5V1FmVkRoTlJiM2IxTHlBdDI2aUFoWWg0OC9qM0w5OHh2cS9LL0pMWDgvQ050MCtXdmR6MjM1VG04bDdmbHI0OE84TE1YRSs2NmR2ejkzejEvVE1nTEtJNlFGd0RzZXJKOThtVDF3MlFocjBDRXZHQW41NVZsN1pwck5kRDE1Y05Nb1pmdmp2MWU5YTNEbHlCSitkTHljYW5EMEZncEduZWVqc3hSZXlYWTFlUjdpc2VGdkg0NmROZXJIUzNoZU4zWjZ2WFNJYnArM05EZDQ1RGhvbFNQdHlWMlBOdnlQcGxVUWw2d0s3L1hZOHhJR1lvWUM0ZFZjNzhjbUxwK1hWYmZMd1ZiVmRlV2c3M0ZZT1hYdmVyYlVxMFI1bzBpdzEzWGpydDB6RDI3NDQ5TW95ODdDWENka0JjQTdHUENmZkprK1dIeXBaQlhIRUplc05Qeks0MTc2U0g2c1BKQW8wVHBvZnpGNmliUTllaHpZQm40U3BzdVgyVklIOHlQSzh2SHRXbU8wb0Z5ZCtmU2FUNlhCTHVhZkUveDhKRFg1L2xzOWl6USsrN2wrL1BYZS9vblU5QnBXbjNyK3BFZWtrNDNDWUN0QkxtcWZLMngvUDIrbG10NnlMWGt5RVBUci90cjRwNElka2JJcTd3eGNWRHBzaHRkOGVFdWdDWVQ4Z0lBV2t2SUMvWjJydldxYjh2RGVMZ1J5NDNMRGJScHljVTluZ09Edk9rZ0ZJdGdsL056dWV6cW9aWXdhOHBjTXFueWtuWE9wUmJkVXp3ODVCVnlHWno2L2FmelAvME1Md09jUXc4SlJQWUtHS2ZTenpJNjVOS2NRYytWaWZzZzJCa2hyM0xIeGw2K0RoKzZEZzkxZjN3aXBBMFFtNUFYQUFDd055dmRVd2FWc01zK0xSOGVUdk0yU2E4ZXhCL3NQRmhkUW1uZ1BOajd1WkNPZjJFVWJqczNoNVVPZkE5eGxzK2xkQjVObEtPZEhoSHlDdjBBL2dDZHZab29kZTVLd2E2eGpoODNIbU5wbkJUeWd0MzR1UjUzWEl1VVAwNHV2eGhvTGo2TTkza09keTRCRkVESUN3QUFPSmhyWVpmMGE5L2UzRXo2MW1WNnNEYkpyenB6bFhjZXBFM29hM3VXb2E0dm02WGplTVI1MmJ0MlhyWjlmaExxNGdkNXVhWEJBLzdvNlh3MnV5amc1MG5uZlZvK2FtZ3VmdFMxcDQ0Zjl4OWJhZHdVOG9MZEVQSnExbmk1L0dKZzJpem51UHM1UE0zZkF0b0FoUkh5QWdBQXdzZ1AxVi9rYlZDVnNTek5QcVV1Q2RPYk5oMkpHbjBlcEZjUG14OG1mVkNkZ2dTVGFoRndGT3JDZWJuK2ViUU1DazhjQWJSTnA5c2RWb3V3bDJET2oxS0FPblhFUENraHZCZmtlSm80bG1CbmhMeWFPM1lLZkczZnA1VTVmS29jQUdVUzhnSUFBTUtibngwUHFrWGdLMjNwd1hyNnNLOUpEMHFXSGJpU1NYNWRkdUtxUEdBbkwzWDZZdVg0SCtUWHRpNHB0d3c4VHZLclFCZUhPQytYODlMeWZIeFJsUk5Pdmg0YS9yS2tyL01JdnJmUzNldFY1WXNISDZyRmcrRlRIVDhlZlJ4TktpRXYySldmQkU1Yk01WXVBMThEYy9LamZGeVp2NTByQUEwZzVBVUFBQlF0TDNYM3JQcjJnTDI2OXV1bFhUMVlPYnZsdjArdS9YNmF0eThFdDlqaU9kQ3J2b1VnZTllTy8vVDdFajhBVDExQ0xxNmRTK24xVWdpRndzN0x1K2FtYlFZMVY4UENWYlVTRkw1Mkh1bjhDR3ZxZEx2cC9CMVc3UXA4Q1hZQkVIRk83bFhmQWw5cDAvbjYrM3ZwU1o2L0p6cDJBVFNQa0JjQUFBQzB3RW9nc3FwdURrTDI4bmFieHdSU3p1NzQzeWEzL1Y3NEVZQVNOUGpoOG5JWnB6UWZUd1M3QUNob1hoNVUzNVpXYjFQSDYyV29hemwzKzFJVVFNTUplUUVBQUFBQXdKcHlsNjlCOWUwQmN5bWR2bElvT3owTW5xUlgzVDRBYU5EY3ZKeVRlL2sxYmFXSHNqK3Z6dHZtYm9CMkV2SUNBQUFBQUlBdDZYUzd5NDZaZytwYnA4eitBZDlTQ25NdGwzRk4yMVNuRHdCYVBEOHY1K1psdCt0b0FiQ1BLL1AydFBvVzZOSmhFd0FoTHdBQUFBQUEySWZjV1NRWnJQem53YlUvZHRjU3ljc3VIcXN1Vi83YjExL1BaN09KaWdQQWcrZm9YclVJZnlYTEFOaHRjL1hTZlNIdXN4disyelJ2MStkd1FTNEE3aVhrQlFBQUFBQUFBQUFBRU5qL0tBRUFBQUFBQUFBQUFFQmNRbDRBQUFBQUFBQUFBQUNCQ1hrQkFBQUFBQUFBQUFBRUp1UUZBQUFBQUFBQUFBQVFtSkFYQUFBQUFBQUFBQUJBWUVKZUFBQUFBQUFBQUFBQWdRbDVBUUFBQUFBQUFBQUFCQ2JrQlFBQUFBQUFBQUFBRUppUUZ3QUFBQUFBQUFBQVFHQkNYZ0FBQUFBQUFBQUFBSUVKZVFFQUFBQUFBQUFBQUFRbTVBVUFBQUFBQUFBQUFCQ1lrQmNBQUFBQUFBQUFBRUJnUWw0QUFBQUFBQUFBQUFDQkNYa0JBQUFBQUFBQUFBQUVKdVFGQUFBQUFBQUFBQUFRbUpBWEFBQUFBQUFBQUFCQVlFSmVBQUFBQUFBQUFBQUFnUWw1QVFBQUFBQUFBQUFBQkNia0JRQUFBQUFBQUFBQUVKaVFGd0FBQUFBQUFBQUFRR0JDWGdBQUFBQUFBQUFBQUlFSmVRRUFBQUFBQUFBQUFBUW01QVVBQUFBQUFBQUFBQkNZa0JjQUFBQUFBQUFBQUVCZ1FsNEFBQUFBQUFBQUFBQ0JDWGtCQUFBQUFBQUFBQUFFSnVRRkFBQUFBQUFBQUFBUW1KQVhBQUFBQUFBQUFBQkFZRUplQUFBQUFBQUFBQUFBZ1FsNUFRQUFBQUFBQUFBQUJDYmtCUUFBQUFBQUFBQUFFSmlRRndBQUFBQUFBQUFBUUdCQ1hnQUFBQUFBQUFBQUFJRUplUUVBQUFBQUFBQUFBQVFtNUFVQUFBQUFBQUFBQUJDWWtCY0FBQUFBQUFBQUFFQmdRbDRBQUFBQUFBQUFBQUNCQ1hrQkFBQUFBQUFBQUFBRUp1UUZBQUFBQUFBQUFBQVFtSkFYQUFBQUFBQUFBQUJBWUVKZUFBQUFBQUFBQUFBQWdRbDVBUUFBQUFBQUFBQUFCQ2JrQlFBQUFBQUFBQUFBRUppUUZ3QUFBQUFBQUFBQVFHQkNYZ0FBQUFBQUFBQUFBSUVKZVFFQUFBQUFBQUFBQUFRbTVBVUFBQUFBQUFBQUFCQ1lrQmNBQUFBQUFBQUFBRUJnUWw0QUFBQUFBQUFBQUFDQkNYa0JBQUFBQUFBQUFBQUVKdVFGQUFBQUFBQUFBQUFRbUpBWEFBQUFBQUFBQUFCQVlFSmVBQUFBQUFBQUFBQUFnUWw1QVFBQUFBQUFBQUFBQkNia0JRQUFBQUFBQUFBQUVKaVFGd0FBQUFBQUFBQUFRR0JDWGdBQUFBQUFBQUFBQUlFSmVRRUFBQUFBQUFBQUFBUW01QVVBQUFBQUFBQUFBQkNZa0JjQUFBQUFBQUFBQUVCZ1FsNEFBQUFBQUFBQUFBQ0JDWGtCQUFBQUFBQUFBQUFFSnVRRkFBQUFBQUFBQUFBUW1KQVhBQUFBQUFBQUFBQkFZRUplQUFBQUFBQUFBQUFBZ1FsNUFRQUFBQUFBQUFBQUJDYmtCUUFBQUFBQUFBQUFFSmlRRndBQUFBQUFBQUFBUUdCQ1hnQUFBQUFBQUFBQUFJRUplUUVBQUFBQUFBQUFBQVFtNUFVQUFBQUFBQUFBQUJDWWtCY0FBQUFBQUFBQUFFQmdRbDRBQUFBQUFBQUFBQUNCQ1hrQkFBQUFBQUFBQUFBRUp1UUZBQUFBQUFBQUFBQVFtSkFYQUFBQUFBQUFBQUJBWUVKZUFBQUFBQUFBQUFBQWdRbDVBUUFBQUFBQUFBQUFCQ2JrQlFBQUFBQUFBQUFBRUppUUZ3QUFBQUFBQUFBQVFHQkNYZ0FBQUFBQUFBQUFBSUVKZVFFQUFBQUFBQUFBQUFRbTVBVUFBQUFBQUFBQUFCQ1lrQmNBQUFBQUFBQUFBRUJnUWw0QUFBQUFBQUFBQUFDQkNYa0JBQUFBQUFBQUFBQUVKdVFGQUFBQUFBQUFBQUFRbUpBWEFBQUFBQUFBQUFCQVlFSmVBQUFBQUFBQUFBQUFnUWw1QVFBQUFBQUFBQUFBQkNia0JRQUFBQUFBQUFBQUVKaVFGd0FBQUFBQUFBQUFRR0JDWGdBQUFBQUFBQUFBQUlFSmVRRUFBQUFBQUFBQUFBUW01QVVBQUFBQUFBQUFBQkNZa0JjQUFBQUFBQUFBQUVCZ1FsNEFBQUFBQUFBQUFBQ0JDWGtCQUFBQUFBQUFBQUFFSnVRRkFBQUFBQUFBQUFBUW1KQVhBQUFBQUFBQUFBQkFZRUplQUFBQUFBQUFBQUFBZ1FsNUFRQUFBQUFBQUFBQUJDYmtCUUFBQUFBQUFBQUFFSmlRRndBQUFBQUFBQUFBUUdCQ1hnQUFBQUFBQUFBQUFJRUplUUVBQUFBQUFBQUFBQVFtNUFVQUFBQUFBQUFBQUJDWWtCY0FBQUFBQUFBQUFFQmdRbDRBQUFBQUFBQUFBQUNCQ1hrQkFBQUFBQUFBQUFBRUp1UUZBQUFBQUFBQUFBQVFtSkFYQUFBQUFBQUFBQUJBWUVKZUFBQUFBQUFBQUFBQWdRbDVBUUFBQUFBQUFBQUFCQ2JrQlFBQUFBQUFBQUFBRUppUUZ3QUFBQUFBQUFBQVFHQkNYZ0FBQUFBQUFBQUFBSUVKZVFFQUFBQUFBQUFBQUFRbTVBVUFBQUFBQUFBQUFCQ1lrQmNBQUFBQUFBQUFBRUJnUWw0QUFBQUFBQUFBQUFDQkNYa0JBQUFBQUFBQUFBQUVKdVFGQUFBQUFBQUFBQUFRbUpBWEFBQUFBQUFBQUFCQVlFSmVBQUFBQUFBQUFBQUFnUWw1QVFBQUFBQUFBQUFBQkNia0JRQUFBQUFBQUFBQUVKaVFGd0FBQUFBQUFBQUFRR0JDWGdBQUFBQUFBQUFBQUlFSmVRRUFBQUFBQUFBQUFBUW01QVVBQUFBQUFBQUFBQkNZa0JjQUFBQUFBQUFBQUVCZ1FsNEFBQUFBQUFBQUFBQ0JDWGtCQUFBQUFBQUFBQUFFSnVRRkFBQUFBQUFBQUFBUW1KQVhBQUFBQUFBQUFBQkFZRUplQUFBQUFBQUFBQUFBZ1FsNUFRQUFBQUFBQUFBQUJDYmtCUUFBQUFBQUFBQUFFSmlRRndBQUFBQUFBQUFBUUdCQ1hnQUFBQUFBQUFBQUFJRUplUUVBQUFBQUFBQUFBQVFtNUFVQUFBQUFBQUFBQUJDWWtCY0FBQUFBQUFBQUFFQmdRbDRBQUFBQUFBQUFBQUNCQ1hrQkFBQUFBQUFBQUFBRUp1UUZBQUFBQUFBQUFBQVFtSkFYQUFBQUFBQUFBQUJBWUVKZUFBQUFBQUFBQUFBQWdRbDVBUUFBQUFBQUFBQUFCQ2JrQlFBQUFBQUFBQUFBRUppUUZ3QUFBQUFBQUFBQVFHQkNYZ0FBQUFBQUFBQUFBSUVKZVFFQUFBQUFBQUFBQUFRbTVBVUFBQUFBQUFBQUFCQ1lrQmNBQUFBQUFBQUFBRUJnUWw0QUFBQUFBQUFBQUFDQkNYa0JBQUFBQUFBQUFBQUVKdVFGQUFBQUFBQUFBQUFRbUpBWEFBQUFBQUFBQUFCQVlFSmVBQUFBQUFBQUFBQUFnUWw1QVFBQUFBQUFBQUFBQkNia0JRQUFBQUFBQUFBQUVKaVFGd0FBQUFBQUFBQUFRR0JDWGdBQUFBQUFBQUFBQUlFSmVRRUFBQUFBQUFBQUFBUW01QVVBQUFBQUFBQUFBQkNZa0JjQUFBQUFBQUFBQUVCZ1FsNEFBQUFBQUFBQUFBQ0JDWGtCQUFBQUFBQUFBQUFFSnVRRkFBQUFBQUFBQUFBUW1KQVhBQUFBQUFBQUFBQkFZRUplQUFBQUFBQUFBQUFBZ1FsNUFRQUFBQUFBQUFBQUJDYmtCUUFBQUFBQUFBQUFFSmlRRndBQUFBQUFBQUFBUUdCQ1hnQUFBQUFBQUFBQUFJRUplUUVBQUFBQUFBQUFBQVFtNUFVQUFBQUFBQUFBQUJDWWtCY0FBQUFBQUFBQUFFQmdRbDRBQUFBQUFBQUFBQUNCQ1hrQkFBQUFBQUFBQUFBRUp1UUZBQUFBQUFBQUFBQVFtSkFYQUFBQUFBQUFBQUJBWUVKZUFBQUFBQUFBQUFBQWdRbDVBUUFBQUFBQUFBQUFCQ2JrQlFBQUFBQUFBQUFBRUppUUZ3QUFBQUFBQUFBQVFHQkNYZ0FBQUFBQUFBQUFBSUVKZVFFQUFBQUFBQUFBQUFRbTVBVUFBQUFBQUFBQUFCQ1lrQmNBQUFBQUFBQUFBRUJnUWw0QUFBQUFBQUFBQUFDQkNYa0JBQUFBQUFBQUFBQUVKdVFGQUFBQUFBQUFBQUFRMlA4WG9GMDdGZ0FBQUFBWTVHODlqUjNGa2VRRkFBQUFBQUFBQUFBd0pua0JBQUFBQUFBQUFBQ01TVjRBQUFBQUFBQUFBQUJqa2hjQUFBQUFBQUFBQU1DWTVBVUFBQUFBQUFBQUFEQW1lUUVBQUFBQUFBQUFBSXhKWGdBQUFBQUFBQUFBQUdPU0Z3QUFBQUFBQUFBQXdKamtCUUFBQUFBQUFBQUFNQ1o1QVFBQUFBQUFBQUFBakVsZUFBQUFBQUFBQUFBQVk1SVhBQUFBQUFBQUFBREFtT1FGQUFBQUFBQUFBQUF3Sm5rQkFBQUFBQUFBQUFDTVNWNEFBQUFBQUFBQUFBQmpraGNBQUFBQUFBQUFBTUNZNUFVQUFBQUFBQUFBQURBbWVRRUFBQUFBQUFBQUFJeEpYZ0FBQUFBQUFBQUFBR09TRndBQUFBQUFBQUFBd0pqa0JRQUFBQUFBQUFBQU1DWjVBUUFBQUFBQUFBQUFqRWxlQUFBQUFBQUFBQUFBWTVJWEFBQUFBQUFBQUFEQW1PUUZBQUFBQUFBQUFBQXdKbmtCQUFBQUFBQUFBQUNNU1Y0QUFBQUFBQUFBQUFCamtoY0FBQUFBQUFBQUFNQ1k1QVVBQUFBQUFBQUFBREFtZVFFQUFBQUFBQUFBQUl4SlhnQUFBQUFBQUFBQUFHT1NGd0FBQUFBQUFBQUF3SmprQlFBQUFBQUFBQUFBTUNaNUFRQUFBQUFBQUFBQWpFbGVBQUFBQUFBQUFBQUFZNUlYQUFBQUFBQUFBQURBbU9RRkFBQUFBQUFBQUFBd0pua0JBQUFBQUFBQUFBQ01TVjRBQUFBQUFBQUFBQUJqa2hjQUFBQUFBQUFBQU1DWTVBVUFBQUFBQUFBQUFEQW1lUUVBQUFBQUFBQUFBSXhKWGdBQUFBQUFBQUFBQUdPU0Z3QUFBQUFBQUFBQXdKamtCUUFBQUFBQUFBQUFNQ1o1QVFBQUFBQUFBQUFBakVsZUFBQUFBQUFBQUFBQVk1SVhBQUFBQUFBQUFBREFtT1FGQUFBQUFBQUFBQUF3Sm5rQkFBQUFBQUFBQUFDTVNWNEFBQUFBQUFBQUFBQmpraGNBQUFBQUFBQUFBTUNZNUFVQUFBQUFBQUFBQURBbWVRRUFBQUFBQUFBQUFJeEpYZ0FBQUFBQUFBQUFBR09TRndBQUFBQUFBQUFBd0pqa0JRQUFBQUFBQUFBQU1DWjVBUUFBQUFBQUFBQUFqRWxlQUFBQUFBQUFBQUFBWTVJWEFBQUFBQUFBQUFEQW1PUUZBQUFBQUFBQUFBQXdKbmtCQUFBQUFBQUFBQUNNU1Y0QUFBQUFBQUFBQUFCamtoY0FBQUFBQUFBQUFNQ1k1QVVBQUFBQUFBQUFBREFtZVFFQUFBQUFBQUFBQUl4SlhnQUFBQUFBQUFBQUFHT1NGd0FBQUFBQUFBQUF3SmprQlFBQUFBQUFBQUFBTUNaNUFRQUFBQUFBQUFBQWpFbGVBQUFBQUFBQUFBQUFZNUlYQUFBQUFBQUFBQURBbU9RRkFBQUFBQUFBQUFBd0pua0JBQUFBQUFBQUFBQ01TVjRBQUFBQUFBQUFBQUJqa2hjQUFBQUFBQUFBQU1DWTVBVUFBQUFBQUFBQUFEQW1lUUVBQUFBQUFBQUFBSXhKWGdBQUFBQUFBQUFBQUdPU0Z3QUFBQUFBQUFBQXdKamtCUUFBQUFBQUFBQUFNQ1o1QVFBQUFBQUFBQUFBakVsZUFBQUFBQUFBQUFBQVk1SVhBQUFBQUFBQUFBREFtT1FGQUFBQUFBQUFBQUF3Sm5rQkFBQUFBQUFBQUFDTVNWNEFBQUFBQUFBQUFBQmpraGNBQUFBQUFBQUFBTUNZNUFVQUFBQUFBQUFBQURBbWVRRUFBQUFBQUFBQUFJeEpYZ0FBQUFBQUFBQUFBR09TRndBQUFBQUFBQUFBd0pqa0JRQUFBQUFBQUFBQU1DWjVBUUFBQUFBQUFBQUFqRWxlQUFBQUFBQUFBQUFBWTVJWEFBQUFBQUFBQUFEQW1PUUZBQUFBQUFBQUFBQXdKbmtCQUFBQUFBQUFBQUNNU1Y0QUFBQUFBQUFBQUFCamtoY0FBQUFBQUFBQUFNQllMWEtyVGN4Y2dBRUFBQUFBU1VWT1JLNUNZSUk9IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiRklET18yXzEiLCJGSURPXzJfMCIsIlUyRl9WMiJdLCJleHRlbnNpb25zIjpbImhtYWMtc2VjcmV0IiwiY3JlZFByb3RlY3QiXSwiYWFndWlkIjoiODgyYWRhZjUzYWE5NDcwODhlN2QzOTU3MTAzNzc1YjQiLCJvcHRpb25zIjp7InJrIjp0cnVlLCJjbGllbnRQaW4iOnRydWUsInV2Ijp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwiYmlvRW5yb2xsIjp0cnVlLCJ1dkJpb0Vucm9sbCI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImFsd2F5c1V2IjpmYWxzZX0sIm1heE1zZ1NpemUiOjIyMDAsInBpblV2QXV0aFByb3RvY29scyI6WzEsMl19fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wMS0wNiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IlQtU2hpZWxkIEZJRE8yIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNTAxMDYwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wMS0wNiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTAzLTA2In0seyJhYWd1aWQiOiI0OWExNWMxYy0zZjYzLTNmNTEtMjNhNy1iOWUwMDA5NmVkZDEiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjQ5YTE1YzFjLTNmNjMtM2Y1MS0yM2E3LWI5ZTAwMDk2ZWRkMSIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJJREVYIENUQVAyLjEgQmlvbWV0cmljcyJ9LCJkZXNjcmlwdGlvbiI6IklERVggQ1RBUDIuMSBCaW9tZXRyaWNzIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjI1MDcsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfSx7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjAsImJsb2NrU2xvd2Rvd24iOjB9fV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUJ2akNDQVdPZ0F3SUJBZ0lJRGExRVRtRlByYUV3Q2dZSUtvWkl6ajBFQXdJd1N6RUxNQWtHQTFVRUJoTUNUazh4SERBYUJnTlZCQW9URTBsRVJWZ2dRbWx2YldWMGNtbGpjeUJCVTBFeEhqQWNCZ05WQkFNVEZVbEVSVmd0UmtsRVR5MVNiMjkwTFVOQklFVkRRekFnRncweU5UQTRNamd3TURBd01EQmFHQTh5TURVMU1EZ3lOekl6TlRrMU9Wb3dTekVMTUFrR0ExVUVCaE1DVGs4eEhEQWFCZ05WQkFvVEUwbEVSVmdnUW1sdmJXVjBjbWxqY3lCQlUwRXhIakFjQmdOVkJBTVRGVWxFUlZndFJrbEVUeTFTYjI5MExVTkJJRVZEUXpCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQkVuK1lGUlBWemYvRjIyTlNrZytLcVF2bGhhMVg0R29BdWt0bjg5d1puRW9TRVNBZlluWFZCVVZRQ1R0c2M4UVRkZzhuQTlZSmFPdVVHQ2ZacmgrUGllakx6QXRNQXdHQTFVZEV3UUZNQU1CQWY4d0hRWURWUjBPQkJZRUZOTzMvTEdqb254WHJsV0ZhZDhwNGNlOVo4cXdNQW9HQ0NxR1NNNDlCQU1DQTBrQU1FWUNJUURQNWZQNEFQOTlTOHR3NzN6VHJJbFdld203MDBNZEdDS0FpN0NFWjhvZTJ3SWhBSzZVK2JOWTE4TG1lR1hQQWpSK3FvR0hwWlZuK3NLUFA1K3BRZzVab3NpdCJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFNMEFBQUROQ0FNQUFBQXNZZ1JiQUFBQW5GQk1WRVgvLy84Y1UyQWZYVzB5dXQwY1ZtVXFrcTcrL3Y0d3J0QWZZWEVoWm5jaWI0RWtkNHd4c2RRZVdtb3JtcmN3cTh3enZlRWhhbjB2cDhjdG5ic2pjb2NwamFneXR0Y2JVRjBsZTVFbmlxTW1nSmduaEowdW9jQXVwTU1tZnBVcmxySW5oNkF5dE5ZeXVOcnordnFOeE0vczlmWitxTEhENGVpNTE5MkJ0c0xnNy9HbXp0YlU2T3RmdU05VnFyOVRsNmRob0s5S2lwcEFnSTg5azZlV0F1TlBBQUFaTlVsRVFWUjQydXhhNjQ2cnVnNk9OSUwxWjhTTWloZ0pIU3E2U3JLNEJOSktmZjkzTy9FbEliUzAwRm50N0hObWo2a0t1VGoyRnp1T1F5dmV2eE9KSHpULzgyaGVYbDRtOTdQcVdacm4rUnFXOTFrVzhVSkUzY2Y3V2ZVc3pmTjhEY3ZMTElmQSt2ZEpsL2ZnYzFFeDF6anQ5RVNXYWZWbFYvR3lSTzh2ZDlNL3hpSmU5a0ZwdjJxWS9mMlM5NS9xdjM5Zjd2WitIYzI1MUQxVjdIM0JYVUdYdFN6N0paYUE1K1ZTekpscVhzeWVCcVJMVExyZDVMa0M1Nkt3SDIvVWRlK0xWOFI0L2E5UHdJVjE5K2ZDQ00xM29uOGJtby9KYlQ5WHVzYjNNZmI5V0NGaWRmM1ZudUxqYTJqL0pWSytDczNIRDVvZk5OOEp6ZS9mdno4KzNOZElIL2dKS3k3YVA4UHkrNUpscHROTmxvOGJMT0wzZHlMeCtwM29CODBQbWg4MG4wSHp5OUdyL3dEaEUzL2hneU40UEdOaG5uT1dDYzlZRjRyaHdXNnp6R3IyT3FlWitQV2Q2Qy9RdkQ1SWhkY0g4TDMrTlpydlpac2ZOTTlIOC9adHJsL2k3VHZSRDVyL2J6Uy9oa1g2OVhkYUxBdDRmUmlhb1ZQVlRWTGQ4SGRvNm1xSjVPWXhhRFp2ZzRvWFNQMGxtbDRzQ0JBcjBXeVc2RzB6S0JIZkVDY0F6YzBSM2pZYm5oaDRuR252eFcwNEF0QnNsa2xZRVF2WFpxanNjRGVJME53Y1lqSTdGNjJBWm9Ia1pyTlpWbFdzUUx5RVJvaHF1RDJBMUZwTE9WeWIzcFZvVnRobURSb0ZhRlI5ZzM3ZDlMUWFmRVhZWU5ISVdkaHYrc2JRM1dQUmJNazI5WFVMTDdtMFZMQzYwQ203V3BydDNPSzg2cVNTMEd3ZmdHWUxsMFB6U2JJanlJN1F3SUt1T2oxc3R1dlpINGdHZFNGUFcwQ3o5VFEzaHRGOWhXZ1FrS3FIdCsxMkhhVHRYV2kyaTFRNDIxeHB4L3FOMzgvTjJ5YW9kNDhiTStoYVVhQ0hOVlRMelhhelhVSGVObXRvQlJyd3RQZ0dtbTN4WmpYbGZFR3BycXRyTFFlenVjQnNZMXVQUTJFWTdPVXFOTnRIb3pHMzBZQVgrZDNWYlVGVjEwTUFLNHJ6bWE0cjJxTGl1S3FIZndCTndiYTVacm4rMm00VVYxTkU5bDRVRzluSGdrTmMxWmhpVVRxaktlNUQ0NFRpM1g3eDNkNk1SOE45Q3FxbngxcGMzMXV0MHFxMmdMYUJMaFpQNTJ3WWQ1SmxlbUdCSmpUK2lPWlNNOGU1WlFHaVdDYklPaEdOcnpGMmQyOGFiZUJaM3dCRGFSd0FtZ3hvZE9YUWdubHVrME96aGxhZ1NSbU5LOXVGMHBIem80aU5iT3E2dDV0MkE5bUxSVm4zSFFUQk1TZU5JWkdRRytUbElheDc4ZzRrdXNGWGZ3V2F3akFhbGpsMHRLM0hRanQ4N0MwZXJqVmRyU3BHNHRhUURLMWdtb29hYmNxcWI0RkpuMnNicVZqSldGMFZrU0lrakhYZTZXQ1JCSGkybU82Z0Nhdm1uN0FORlRweUlGZ00yMUg1V1V6YkFWT0EyT1BwUTZXR1RzUnM1V2F6Ykp0MERacDBtU2EyMFJoZnEyWW8wdFIrVXBRQ3ZjamxpckdFYldab01BTncvbFliNUVMR29YZHd3RHBYaEJjU3U4aTBXS0dwQUpFM3J6UjF0b0grcG9PNXJLUlhDUWdYQ3NRQ1N4QU5iQ1pBRFFqSkJvMTQ5TGRPdW1IdFlEMzZMTmk2MlY0VHo3WkpGeFcxMXoyMmdRRk5oV0JHS0lXUlRhK0M4eHh1ODEydEIrUDc0STVKRVJuc1lOeE1GS1oybVNqQW1TZVBacFZ0bGltMERlWUZ0YmU2a1hVWHoyeWFzTkhiekQvbzE3Ty9XY1ZyTXc1ZHU5cXFLYTZoaVIrSkptSGIwSE5sMVJ5Y0xyb2YxOFRNMXFuczZrbzhIcGNCd0JiakI5ODBGV09NZGZFVmFNQTJndEdraFc1YTV5bXltMmFhWnprTlpmNmo0a1lyM2xLRmF2MVVGYnJpMmtyUHppV2pTUjZOSnFFUkUrY2s4ZFFTSVJCWEJBOGE3VFBVdEtFQ25NU3JCeHRQTE1ibCtGdzB5UmthckV2OGJqR2VBVEMzMGRvR2hkQmlrUG5iR2JCWGtveGJyNFhqaDZKOUZEeXp4WTRUNGZlaFNSWXBzSTJ2U2xxZkVkQ0tiNlF4cmdPRXVjNjN4ZVJ2aUNZQmk1THFha2dTeDlDcW1NUDNjQ25lbzFuV05GbUJKcmxFZzRHQmR3cWJzVFNEOFRBZER4ekxZcDhIcU1iMUtMU2k2bEJ6V2JFMWUzTVZUZkpZTkNHWXpvT0JiTEtjTlNsa0FUNEpnS1RPV1lLRFcyZENPTnl0U1dmUnhMSjhHaHJUK1ZWdU02OWtYbEJacG1FV1lMczZZeGg2V3hnYUl1VlRrbzBFVjJ6elNEUnhnS1kwUFNpSHkxWVhONlNVNEhEK1RacGQrYnJnQVJveWJGMzR2a1hOWHRtZFcvckJ0aWtkbXRLQmNXNW1aN3U4c0FnUTNMbFVJQjZmQlJES3RLRVI5TWptN0gzdWErV0RiV01GS2FXcWhqUXZNU3FoM05xVVpZakRSaXd6dFBiOEtWdWJkZ0lVQklmMmNUbG5pMmpLRkRNYTYxY2xsV0U1OGN1cHFpMm5hQlRRTlRUVGFsRXVVMktRcUZEVTdueGNGNnd1ZDZMc2svYk9TdG04c3pXTUNMSUEzbEx0dXNEdXB1Y2Zma29IT3RGc3diNllTRTlSZUZxdUlWRW1pNWRYR0s3R3VWbHR4bHJyVDdXNnlOY3FlNkxqVGtNZHV4Y0JtaFJyTVNqSG5SL0Yyb3ZQYnRySnVwUytjSW55UHBJVmk3UnFSSzRTWTlkRjlvbW9PNDNxUmpaL0VUNElJNk9tN0t3ZVo5MzBITXhOK1VtNkQwMWtYRDVqdmR1N2d1NkNuL1RHcElienRVNFhrZk10ZGxIVU51M3BiS1BkOUVlbG9kOXFiT2orR2pUU0dVQTdEY3FoRDJ4eDlqS05ONXEyakNKckh1MTIvTnBZdnFnbE05dEk0SWR2MlYyYjVKTm9JaEFVVURrdGNnMWRVVm16cXAxeDNTQ1BkUHFydnNGWGF2WlUzWTJacDEzNk9rVnUvNW9HNEVTbGp0bG5Jd0NIamtzNUFjUTZKM0pXc1hLcUZ4Y2pSQk9GaUM2eEJKU3lLOFRTMWJlVlUxclpnNC9yREpHbzFiVnlSd1ZRSDNzcnRscHpzcVdDZm9xMkdlQW9UUXZLU1UxMFFlV2xjbUVydElub0hxSWN4MjRiVHY2ZytMU3Z0TGtRWlhlYTJtV25QYWszdUswSHA2TmxXOG1SNWNnNWRoTjlodTVEMC9LeDE0a3ZldUZkWjQ0eUcrNHFsNVN4ZFVqYkh1ZUR0aGloaG5EQ2NFaGxubzRtay95UzB6aS9pTjFDdmpFREhXYzFCdzhIeWkwVWtwNXoxOERYSk0yUGZyNXROSm1pQ1JjTkhCblBVZVBIenpabllNeUZPNVpkTEZES1dqNEpOT04wUU9RT25mbDVhQnFLWHkzcFNqTWJWeE13NWRIbWFwQ3N0ZWJrckVQbXFNZy95eWJrYWppYWowc25raFFIMit6SmFNbys5T21NTnA5UWtjam92blBKbWozSG5kQlFtZWJZWVRLeUZaWnFiRFQ4UzQ1WFBvT1ZneW5EeE1CcjBXVCtJdEdSZStaNzhIMms3QVNjeEpaVE1nMXFSU01jdFpydW5uVjdBdVpUVFhzcGRNM2M2clA2UTF2TmNVUVpFa085SVNjNitISFBkSm5ld29LM1RUWWl5c2JuOER0ekU2a0pNeWtGV21UQUErdjlJaDJvR29NV1VQU0NWcUtZQTYzOS9nQ2p0RDZMUFRubDZHeFFHYS9uT0x0WmRvR0lsY2VieUJ4RndkUDRuSVh0TGVuWVl2bEVicWM5Zkh5TmM1N2NpS281Mm1hSkNzWU12ZVd6MnNtMkdPVzZTaWZwaEdjNUllZDBtTk5zVkY3Z0UzMkNwK0E1cU5UazRvYWdZUllBQldybDhEUjUzWWxYMTBaT1FldHJQQkVVMk1kbjI5cWZlT2F6STZZY2RUU3J4RXhsNUtwRmRnZFJBT29PdmhDemVqREhuY2ZRUWJZR3YwTzVQenBZSXh4N0Roa290L1ZySll0cWZ4eHF2YUFXRjg0cHU1ZldvNGxvR21PY3d5dzdVR1NTM2p1Y1JlcldvczN6N05UMi92VlRjMkxUeFIzNFhjYXhIWlpPNWhsRjQyV2greW56UkRSVzR5NFFhdWhmUUR5Zk9hZjMxbnRPdWU5UEw4eHhxOGtCTHZpZHhpYkphOStXYXY5TElodmRTYXJhL0lsbzhpT2xtS2hQTG1rUFBMTGhtZ3R2UVkvcCtReW5UUDZIRWpZeXpwSERuenBtNHp1UTJLdFBYdkJjTkdRT0lYTWZFV0oxeUVlZ2NPaWZjdVRIaHBQT3JqMzFuREJiamp4enJ6UnM2ZGcyZkVqVHVlUER5ZmtNbW56dE5VWGpJZ0toSWMrQkluVE5tTVhlVHpicHBCTkwwL0dmVVlBbGQyZUwvcFJiRmc0aHZmUFNIRjZpb1czeXV5NlJyNlpkUzJHcGhjS0lKaWpGT3VpOTR3ZHZIaGNTSk14TTVsMlRocWFqaG5ITThOY2VFblFYclVkalYzcUFobnhCS0VMak5oRGpJQnhNMjVwRFJveHQrQzhwTmtmdXRpZU5uU2liRVg0MlR2YlFWcGtub3JHZVJxNGVvSW5Wa1pUdlFtejVTWGNWdkNHczVaRjBsZDNFT0JiejdzVDdERm1YN1U1QTBUaWQ2RTdQUkxOelFSa053SG5CRVFvN0RnSXNmOXg3aEdyK1pORGpFTDV4Nnc4N2NpNmNIUnh1Ui9NeEduZjNwNWY1VTIxenJPaGdBaEwvUXovalYzOTJ2Z1YyYjFCekYrUTQrSmV0ZkdldncvaXZOQnRIZG1BY2ZwdWRCU3R2WEhpN1U3WjdxbTBPYXJUTnp2QWlJdHRVYkJ1NzluZTc1cis4WE5sdXBMd1M1Z29OK0FySmtRaElxQ1UycytoZ3lQdS8yKy9hYk5QcDduVFBTWTh6aytDMTZuT1Y3ZkthcExIZDJTL2J4VG5BSXl0VkZnTFlPdWhKdkJOTmdiNDhCS2lDbDlGY25uYWZaQXM0QU1nYktkZHkwalJrbXcwZ2Y5Z083TTVQaEduRndqUmZrRzdrRlFDS280WDNDYjZSd09VdjNBdG9MaC9FekZSSFBJOUlsYUcxRnFLK1pqcW41UmNJWVhrUWs5VWJyelMzVUViTkdrbDE4REVTenN2LzQxNUFVMTlJdHp0RVV4dFdEZUFMcFFaaVE4OUttLzlmRzNmTkFJcXFvSjU0cTNyZWFnYUFmWnlMNFlhSUVmOEN6YVdtZm13UnhuQ2p4dGExdzhuZGJWYzc5NGs3VGVPbis5d1dQaTlNZFY0emJOUlFGQTV1ZzZ4ZmtNM2lRaHJEZHBIV21PbkRaWGtKVGYyc2N3VlByQXpvdGRURFRrQ3Y1cVdwRlNDQVIxTHRIUnNDQ0s0R2lWSVBNVHVsckQvNDhzZUFjVHlBQ3JVT2JZdjZKWmU4a3RqaVFjQVIrWVJxeGxVeXFMNTY0aE1hRm1Kd291eFVCcVhHR3o3ekYvRm9lKzZubDR1azVHLzJPRUdocitwd05DRFBXOUJBWXhmRnFEK3Btc20za1pxa29HclZCamp4RXdEUThwUGppN3hUU3pzN2lKWXRvbG5LOEJYaTNBQktPSDY4VHpZZmVIU3gzOGpINDZldFNFM0lCa1BxaHRpcU1ObHVzR3ViLzhlRmdGRU5Eb0h6a2h5cEdobExVeVZWQjhzTzluMW9RT3VoNFZkU2VkanlLMktMUkRDQWIyaUQxT3JxQzNPbFBVbW5xaTFONFVBZ0ZSdDQyRmdxNnZBNlJuUEJSVGpCOXJkb3FycnlYOWNST08xSWlFTEZnOHo2V1hrUE5mN3FFdzg0cHRRY0hKeVJscXU3QzJkRUVTT2oxVUlpZGEyOW9qSlN3OVNBV0NxZHdwbWZxcjZETWFsZWNBMDExQVZvVmRVbktiM1RLT2RxSTBZTCtJWVdEK1oyTmVWRDlzRmsreUsveGFtYWdXSnNTOG9MUlZ4V3NxT1pHazY5VGYwS2d5K2hxY2dlV3kva1czaVFpYUlBS3RRY0taZHIrbFFMbHZkNXh3Mzl4UFlNYkY5SWpJTXZNTzAzSm9ZTjU0MW9HaHI4K3ExQkx3L3NJNEtyZVFBbDRXelUxTnRPNnBtdlJhMjJhaHFTald0L3JwaW1veTZCQ3FTRkU4NkRROEJTdlU4MnhISTZOYkU0aUh6RGF6SmNtenpNdHhQbkpEOFkxTk5FSjZOU0xLYWhNV3loSW5CbmgwdHZVRFpkOHo0MERmWEtMUDZkVGVLbG9aYkRhMmRRNVM0bDdWUUpuTG9MUjlYNEVCR3hUZDBIbHRqUUJJckZRVGluZDZJWldqSU5tN2pockR0VFo4M2JvYzdyanFUUkU1eW1YdEpvbXVCbHcxVXlPalFOb1VtTXI3bVVxK1o1Tk0wTFRocU80Nk5wZkJlSEZRZ0JDeC9nUUc5MWRMS1BpRG1iZlRrdjNiam1EaEhZSTZTRVpxTk9aaWRxWU83Sjk1UHVKVFNPT0hYRVk0MitUWTVlc0pjTjVINHJNYTNmRnEwd2VtZnB5Q1Jod1dDU2pZSHZrclJ1L2lKYWtMMXIzb21tSkRPNnRjUXZyeUgzNUcwbVp0WlFqVmJEektlNEVHMjVkOUdtU0VxSkdNRkMzeTExMFVUcjZQcHhMOStLaGcwQWtrYkoyMVBFVE5Pd3ZROVZDbHlValIxWkRJNnJFdUVKbUw0alJrdnFDcnZTK1Vwczl5bUwxdjNhWGdUVEpPVnJyakc4Vm9NKzBxMFVkU3Z5TzNPTi9PVk9KNFhjT0FQY2xlVVgzbDl0MTJXaitMSkNteFNMYzJqb3lQb214TlNMekpXdm9pbloxblE2QUF3c1hqZ1VPOUdTV3pwYlRsN3hNWEFuQytKdHQ4Tmc5OFlYaHp0MDgwNmVoR1h6dCs1bE5Ec3ZWRXhZZWJiM3dpa1pIdFp2c2dwTFNrN09yTlArclRBRnl4NHUwaUE2MVJHYS9kK2hLVHZlL044aTRiZzJYVEZZdmxBVDRJQzI4Zm1UYjNoMm1VcVRsdzNxZjRoR1NWdEI1Vkk4TTA2Rm9YS2IrUjVua0U0enpMSWp1dGpBcW1yc0tzWVFCaHk4Q01WcWVOajkvYklwV1J5dFZjRUhNMk1GclZhVmc1eUFXSzF2eWR2SWU5U0o2d0NHRFpwTmM4QlppWlRISjRYMVJIdDNuV0tsYmNkZHZZcEdLV0RDLy9aL3BRYkpMNUVLaWRMWm9RWjlzeHlnT3hCTXFXUUxOSmtINTZjOFJ4ZE9lYVQ5T2hwalZyazYwRTZZcWxUVXdiaGFRbkpnUkUxS2xkODQ4NHhkYzFhcWhOTUxXZndveFU5aDZoU3BTajd6ajJTVmtpRXo3U1FMcmY3anNIa29LWEV6N1hsNVdqWnYyMGxLcDNXQjhVQXFPQlFzZ1dqZ0xHYnN6Qm1ndWUvS201OWFtb1pCTXNjbzE0a21LYnlUTmNIVWJLRUVhL3JvTXJnZzZ5Y3BtdXlrZEJLZlVMalBXWG5tckh5TTVwN2piZzJFNDhxeXJQNXBQMGl4YkhEaVFZNG1VTnY0dXJpOEx3Q1NzRkdwdUE2M3F5RHl1Mmp1dUw5Q2M2eThITnN3WVRieEVZNWpRQjl5S1FCT1B0aUlwWDFZMWo2YzBUWEQ0YU0ydXJQYk1RbVRQSkxOYjZMQkZnckNHUUpsR2tTOWRLWSs3SzkxZTlCU2wzb2JwbVV4eXpJTmV4UGhwSXVzSXBxZGpGSDFEOUJvdFpDdXJFUjc5eGVlUFJ4dHc1MXVwMjY3MWxGdTdhRkZZTEJma0ZiRC9WdW4zNEJHZXNTSXVFeWlTKzRYL0dNQkhzNW1vdHZHemd6NFZpTXhnWUdPaHlXamFCNE5ZNU8rU2YwK0dxb3ByZVN2MEltK2R1UEdoN0VMRmV0K3NZSEd1cVlINlFuYzNFd3lIK0VpQkQ0dXNDdXRZK0ZvVHdrMlJuaWl4R3pzTklxQjE4TGdaS3hXc1VpakFtTFdrMnZSNnlnWkp5VWROdWRxN2ZqTkRVczhEdjdldCt1b0pUOGQ0NUxYWWZyRkhvUkhCMWhhQlpzQTlJempCN3JqdXJzVU5JY2F0STdyUVYxckt3VWxPamdrbzdYUzhSLzNJV2gwRko4ZnZCTXpXd3p5RmdBc29qRzdHc1VUclFhMGE3Y2R2dHdjb0d6VDZQc0xwN2RjdnVMRGI4NmZlelJhcXpOaldzaElCS0FoQVZBSWNhek9mejJhVUo3N0s2c0E4MFlsVGEzY1ZtMlh3MU1ERXlDK2tPUHN0TW51aDNNNzlHMXJIR3Q4TnA3aGR2QTljQXZ5SEJGZXo2UU9RVHFTemJWTXZOdHB0VnNKWUhaREszTUQ4dk9WQjF4UDkzemxNTDhKbDR0b3hhMmZWenhvZkxvcXpuV0FWUGhJTklnOWtzMHQwWnlERXYyanl5UFpuRXFTdWMzS2NIeFhBT3NjSWQweHJMZHU3Wi9EMG5WUVZ3U1RGZURsUTlDMEg5MFRhSUpzcnNOWDRXVFBNY0RPNFdqUXBtTThZL3ZnUlNJeUNrTHlrdmNiSmhMNTc2SVIyWHlQc0d5a09JMUhPUGtXN2tuTk1mMjh0RXU0Sm5sMVY4KzFwRjNsVVdwZTVFWFIvTHBzY3BhTmppbm0rRzhTM2tEbklXZ1ByMEs1Z1Nka3lITU5KdHI1T1VaOHZtUFlEb2dOS1pYc2pFNTVqQ1ovQ1UyZSt6S2p6NU5zVGdVQzc3bE1kWnhSb0JDZjY3akR5d0tMazFoY3FIWW1XcmZneXlwdXZ1YnNOTmRkNTJlNnJvQk9sck1QSkJqUTVEcS80b3hZalFJVDc4LzFqVTkwWGpheDAvZ3ZtdHhRSmVUSEVsWm54ejMvN3B6ZGVUaExoWk5mT2IwYjNrRG9OdzRTTkxjNHc0QW9NTWwvZGw0MnQrTFl3SEltQUFVVXVtdjlPd3F1OGR6S1ZOeWpkRXl6RE1HRHBHVTB4Uk9NUG84bU5UZmpDcG1JT2dOTndxWSt2QzIwSEUreGdSQVBmeTRuWVZGSHN2bGROSW01RTh2OUdKalBub0U1dXJTeVBRZEZiZUd5dTVOcGlQbGxOTVVqMlFCWXVRa2djSXJDOTlRSVVwOGxzRHZEUnJ0RUVsSzQ3c0YyK1B3VndVbE4zTjdlZ3NiSnB2aGVvL2pERFIvV2tud1dFNzJaMHFtUWMzY3o2UjVlV0J4MlozOHFOTmM2TTdmUk9PU3Nnb2pTYTdJcDh2cy96TEhJcHZCdDJDZWdiMitpT1hYbndNTS94b2RMYmI3TTNTdGhPNi9qeU9aYWRMbDY3ZzRVbTgvaDBkemdUSmlnb01LaEtTQXovc1ovL0V2K1FsU1FUZUhkT1V0aFYxcE5kMk1NeHdMQ1ZNelFkU1BGd3BScFpJS202Zm5LK3pvZHZ2Q0NVQW1hYTVmbkp6N1FKY1Jqem93RlgvQmtYalpSN2NSWjNMOE1WOU9CTzdOTDJYWk5vOGFqcElaY3o5VmVQYlRFTnMvc3BuUENtVkFwYnNzbWNIQmlPU2wrZGw0Mmo1dzNBbGJyZzViVzc2cW5adlA1M1JSdEdlZVRsWlAyNnpJY3JsYStGM3hQTnJmY0UyZ2kyVHhLcFdUUHVlME9EdE5oWnhEbWNCNVBsaFZrNVJnd2M4YWxjeE00ZlF0SmhDYjdWVFEveWFiSXRIOWlaOXk4V0UzMDNGVnJyQTdKblN2SXJrVFAzV0xmZ2lZMXhROEZac1VnZXpkOXB6aXhEdGNtOFdsYmJqOGhUL1pEc2RtYlpQTk1TdFA2VGpralpqUFpXcE5lYXlDZ0dhUDVzWTVlUXBPaHlMTkg3c0FYL0EweEorNVdsaUxMQittQXh5UEx1T3B4cGNPdlN6czhPZVdYZjQrcEM1cG5YTUtsRlE5K2RodzVUS3pkeU1hM2FvUmlYQWRNZzZIUkFXTjhvd2hPM2UwWnQ1V3NLTExIUHdGTjhmTlA4Z1Jpa2MwUGxVanVUM2J3aXdKREZpbys5NXMzUEZNb3NxZEtlMWsyVDZKSmpHUFVNZnZuRC96L2cxL2t2bWVncGpMbU1jaGl4MmN1V1EvYksrNytuSnozUTh4YjBEaDFmK0R5cXdhMExldnNWYzJYWS8xcVlHcUtVL0lIUmRNNjEvRG52L2JPSmNkaEVBYkRnRmlRR1hudEMweXIyVTJWK3g5dWFJQUU4ekt0b3FoQ09Da1B3d2YrZ1hRUlZlcEphc3g2RTh4Zlg5elc3THg5cjlsSnNtdjlmTmZ4ZkVuKzh5RGlmNXVqbjZwbWVVUE5GbnJsdWRxK0FVeS9HdmY3Nyt2MlJ0eFdRK0pOQ3Jaa1hMVWNFNittZjI4TWQvWHNUUXdVQy90ZHVEcjNoZzNVcWpFRlcwaDV2WEdUV1RVSnZpUmpMTTRaVFIwMzl1eE5IbGxlRjRaVmJMNGVkOFllWDNTWUk4bnJtU3g3L1hFVDNGY1REeFd2U1Z3VHByZzVpWHlsN04yeTVvcFI1MUxxb1RnemZKeHViMDZ4cGJOOXlYVDF4ZGszejFscVBzT21tcW5tS2pWcW9FdW9rV3lxbVdxdVZBUFE2QUo3UXQxUWIzOFhVWFdrSFY2aUJod1o4dUFEZ0ZBTEhVRlJSRUhjVEJCUWNlN2hnS2hvNE1CVWtDeXlNZ0pLUUdxK0kvRzR2bEExVlJsRnFaY1F4U0JzWkFKR3NxbG1xcmxJalI3SnJCcG8zZEJ1cmpDdkUrY3d3KzNOVkRQVlhLTkdTbWsvZWl0c3VkNnJvYUNEMTNkeGlmWU1SWFNDZU1aejhUUVUwUjdSUFVnbE1oSGFndWxvTEVsb1NkWEl5QkovamtoK21yU3o3SXNzZGtvaFI3S3A1cVBWSU9KV2ZLYUl2bmE0ZHNNamp4R1pJTWdneUNCNDVDV2tFTm1CaUtoU0NPME5OUldFeEx5SEpuT21GS1puYXNnK3piRFBUWEdGTUZzVktUc1FpZHg2bDVCWHBzRlNaSUkrTUZ1S3ptSWZKcWVsaVFTblAvdjBpT1B1eEdUOEFsS2VKa0dPeUZEZ1NEYlZmSzc5QTZjWUR6SGdWTzlkQUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIkZJRE9fMl8wIiwiRklET18yXzEiLCJGSURPXzJfMV9QUkUiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImNyZWRCbG9iIiwibGFyZ2VCbG9iS2V5IiwiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiNDlhMTVjMWMzZjYzM2Y1MTIzYTdiOWUwMDA5NmVkZDEiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjp0cnVlLCJ1cCI6dHJ1ZSwidXYiOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJsYXJnZUJsb2JzIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwiYWx3YXlzVXYiOnRydWV9LCJtYXhNc2dTaXplIjoxMDI0LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxLDJdLCJ0cmFuc3BvcnRzIjpbIm5mYyJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5IjoyMDQ4LCJtaW5QSU5MZW5ndGgiOjQsImZpcm13YXJlVmVyc2lvbiI6MjUwNywibWF4Q3JlZEJsb2JMZW5ndGgiOjEyOCwicHJlZmVycmVkUGxhdGZvcm1VdkF0dGVtcHRzIjozLCJ1dk1vZGFsaXR5IjoyLCJyZW1haW5pbmdEaXNjb3ZlcmFibGVDcmVkZW50aWFscyI6NTB9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNi0wMS0xNiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyNTA3LCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IklERVggQ1RBUDIuMSBCaW9tZXRyaWNzIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNjAxMTYwMDIiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblByb2ZpbGVzIjpbImNvbnN1bWVyIl0sImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjYtMDEtMTYiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MjUwN31dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNi0wMi0wMiJ9LHsiYWFndWlkIjoiZjRjNjNlZmYtZDI2Yy00MjQ4LTgwMWMtMzczNmM3ZWFhOTNhIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiJmNGM2M2VmZi1kMjZjLTQyNDgtODAxYy0zNzM2YzdlYWE5M2EiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiRklETyBLZXlQYXNzIFMzIn0sImRlc2NyaXB0aW9uIjoiRklETyBLZXlQYXNzIFMzIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQ1VUQ0NBZmVnQXdJQkFnSUpBTnI1QUpaekFrcUFNQW9HQ0NxR1NNNDlCQU1DTUlHRU1Rc3dDUVlEVlFRR0V3SldUakVMTUFrR0ExVUVDQXdDVGxNeER6QU5CZ05WQkFjTUJraGhJRTV2YVRFUU1BNEdBMVVFQ2d3SFRVdEhjbTkxY0RFUE1BMEdBMVVFQ3d3R1VtOXZkRU5CTVJJd0VBWURWUVFEREFsdGF5NWpiMjB1ZG00eElEQWVCZ2txaGtpRzl3MEJDUUVXRVhOMWNIQnZjblJBYldzdVkyOXRMblp1TUI0WERUSXdNRFV5TURBNE1ESXhNMW9YRFRNd01EVXhPREE0TURJeE0xb3dnWVF4Q3pBSkJnTlZCQVlUQWxaT01Rc3dDUVlEVlFRSURBSk9VekVQTUEwR0ExVUVCd3dHU0dFZ1RtOXBNUkF3RGdZRFZRUUtEQWROUzBkeWIzVndNUTh3RFFZRFZRUUxEQVpTYjI5MFEwRXhFakFRQmdOVkJBTU1DVzFyTG1OdmJTNTJiakVnTUI0R0NTcUdTSWIzRFFFSkFSWVJjM1Z3Y0c5eWRFQnRheTVqYjIwdWRtNHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUnhTbE81MWphYWNyVVFuejBPS214SjYwdytiQlFJUG55bUViMm4xZW1nQUFpaGZweWFlSkhUMHJVb0RCT3hNeUZ4NWdlMlNlbmNsN3FFM2xwR1FwZ09vMUF3VGpBZEJnTlZIUTRFRmdRVVdwRllRTkwveVZwaDJkaXJuN2M4VFlKSTZnQXdId1lEVlIwakJCZ3dGb0FVV3BGWVFOTC95VnBoMmRpcm43YzhUWUpJNmdBd0RBWURWUjBUQkFVd0F3RUIvekFLQmdncWhrak9QUVFEQWdOSUFEQkZBaUFoUzBkeDR0TzIrYk8vaW5IdncyM29RQjNLdkxJajhuWmNtcnBsU0YrTHFRSWhBT2xWT1ZYZm1CMGhSSTZxVFI2Wk80T01lcTIwSGtXUTFiYkxOTDAyZXlNbyJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFoWUFBQURmQkFNQUFBQllFWWUxQUFBQUcxQk1WRVVBVEpoQWViS0Fwc3kvMHVYZXUxem16SVh2M2E3Mzd0Yi8vLy9MWm42U0FBQVB5RWxFUVZSNDJ1MmRUWktqT2hMSEFXKzhWRlJ0V0ZMMGhpWDJiRGhBZGI4TDlHSU84R0ptRGpBeDhaWklldDNOc2NjSUJQcElTU2tNMWVDeUYxM1JHQXZwUnlyL3FRK1NKTkUrcHk3OCtmV3VmNzZCWjlIRS9LaGw4K0oySUd1NlhYM01DaU9xOXdQRm9yWlk1QW9LSW82a3phNVpJQXpqTzRvRnNWZ29YOTZzb2l6ZmNHYjQrMWlrMFdZQnMrQVdpa3p0UDhJaW1HWXIrMk1ScnQyZktCYXRWZkJadFpscVpKTHRta1VhNlRrZExJckU3WW5ZMURmcXBOa3ppNUJoL0JmSHdzZjRSb0NYdDA5MW8zTGVOWXNzMGl4QUZsNUZKVm52S2dRZWt1MmFoZDlzZitCWWVCWDFaZ3hNNkVoMU8yL2ZMRTR4Z3VwZzRWTlVsdlNkb3ovcGZMT2ZadGNzZk5VRHpBSml3WHc5citjZ1dCUm53V1hYTEU0eG5oTmswZnE2U0R1eTRQM0J2Yk5JWWp3bnlNS25xRjJiU2NOcGhPL1lONHM4eGl3QUZ0d2J0VXdzWHJzRHNIREdXKzg0RnY0eDZzQ2lMSVN0N0o2Rnl6QitJRm5ZaWxwMXRyOFFnSGJ2TDF5RzhSM0p3anRHdlZuTndLSk8rOTYwZXhhd3JQNTh4N0ZnL2xoV3hoZkQzMmIzTEU1b3p3bXdhUDE5cnRkU0VWL2NydEx1UE81MEdjYXZkeVFMRWlpTm5BWVd0MDVTWkFkZ2NVS2JoY1dDaDl5UEdLZjJuYVhrT3grbk9nM2pPNUlGOVUzakRDZmtFNVhxQ0N4eW5LQUNMUHlLT25TaVpyU2d0RHNDaXhSckZoYUxjRXhmRDhMQ3ljN25PMTJHOGZNZHlZSWhmQTlKMHFxN2tuMlpoWWRGaXZPY0Zvc1dFY1V5L0dyTUxsam92ZnpYTzVZRndlanpNTWRYZFVkaG9abjIzMWdXSEJuUWwyWFpkWWRob2QzUDcxZ1dRVVhkN3lmQkdjYVBkeXlMSXFpb2gyU2hHTWFmYUJaSi9LcmtJVmprQ0JVeFdMQzRhZlhqc0VqaiswZ2R2MEI3REJaS083QytrOFF0UFIySUJjb3d2bmtWTmVzZWhJVmlHRGdXQjFiVUlJdFRaQXgrWUVVTnNwaDcreThVaXdNcmFwZ0Z3akMrK2JySTZZRll6SWJ4RThIaXlJcUtZSEdPbWVNaitLWFovYk1nQzJUMTIyTW9xc1hpeTRKNDY1dG5HdWQ4WUJaVjdUR000RnBSY2VDZ0UyREJQWVl4eXVyWFAxMHNEcTJvTmd2QS9abXkrazhYaTJNcktzQ0NodUt0cjUyTHhiRVZGV0RoTll6ZWUvN2haSEZzUllWWStBeWpsOVcvWEN6WXNSVVZZc0VUcjJIODBibFl0QWZ2SWdDTHppZXJmNy8veDhuaTRJb0tzdkRLNnRmT3hZSWZYRkZCRmw3RDZKd3NqcTZvTUFzYVdHaUdXZFJIbnNaeHNnREVNUXV6T0xxaU9saFEvM29peU9Md2l1cGc0WTIzSEN3T3I2Z3VGclhYTUVBVzVPaUs2bUxoamJkQUZzZFhWQmNMdjZ4Q0xPaXhwM0Y4TEh6eEZzamkrSXJxWk5INUpqNGhGc25oRmRYTndoZHZBU3pZNFlOT0R3dkFNTTRlRnZYeEZkWERncm9kQU1EaUFSVFZ3NExIK0l0SFVGUVBDOHZzZlRyeUVPN0N3NEpIeEJlUGJoZUdZZmpqenVLaC9ZWHBQZjNqa2ZhaGRjUVFoOEE0OVFGRzdINFcxUEVGRkhlU0I0NDdEY05JUS9OYWp6d2VNYnhuY0w3enZwbGYxcWVNS1J2L0NYcmRydjB2dml4dnVNaFNvNWZwWmNIeDgrRDNxQ3FUOW1ja1l1T1NrTWpTcGswQ1hPVlZ5akJVaUJxVHdxYyt3K0kzN0JxOHgrQzgxbkpWZlhOZG40Mkh4aXh0TXd1dVhFem4xd0t0S0d4WGZsVXUrWXBrd2NGbXJUdmZXVGdyd1BSdEVCTUxyamxxTFpFZGpzVUZWcnpnMDVOQTExOTFIdnppcnNISWdwcmpaRU96VkJnb0ZxWnZlOFd4b05EUk5kZEhMSitydEd4a1FRd1d0UWM2aGdWM1NWNUlDQW5nQmJIclpvaE80cDFrSGxpOEdmTW53Q3pUYXhRTDU1UmRpQVVGMnJUaWVtcnRlLzZSZ1hOSnhMY2hGOEdDT25jM2gxaHdRQnpYVzJmbjNnYzFRQmExZDZjMmdnVng3bTRPQm91MWZYdlgyMzlSZXgrTWhWaHcvMDd0TUF2cTN2WWVaTUh0RnFIMzVaeVhtTVY4bHlFV3JmOG5ZUllrY2FiUkNnOGkvdEVoV2NUdmdKNGFsdDNDUXZabTNtV1ZSV2syNWFXQ2ZoSmtNVmV5ajA1TG92cjVKUU9xMWZieEVWMEhyb1lBTVZ0b3FWRlJadndreUtJMVNpeVUyN1ltaTFoVjVhWWtVdDJlbU8xNGFwZldaRWdXeEl4aWl2a1NhN0tJVmRYVzZrbTFaay9NUm1vRkZOTkZHeFFMYnQ4a01oMVprMFhzZnZEQ1ZodWlWb05acFRDZ1dLSzJMc1NDMm82TVRiZHRWUmFScWdyWURsVUZpRmx5MUFKZGo2ckZoRmpVUUxWcXlYZFZGbkdxeWlCYzZuMnpNNFlVa0xVUjVXQ0lCUUVLb1BJcXE3S0lVOVVXempjMU93eTdSempTTXMzRUFpdzQ2TkxKZUhCVkZuR3FXb2NheHVEQm10bnh1RkwxQUF1NEFGbVJkVmxFcVNvQnI2alVnNWxGVU5naEYyWlk2bVRSZ3NiS3hxUHJzb2hTVmRod2xJWXhzMDR0WEtSeU9NQ2locDNZaUhoZEZqR3F5bUdIMGxvc1RFNTU1N2l2WVJZRjNNamg4Tm9zSWxTVndUZFphWmlEUlFWVFRSRXNDRnlsOFZjcnM0aFFWUXAvelUwV1dhaFhxY2NETEJ3RjBFMVlSS2hxNjdqZ0FoWkZGSXZNWWFMNXlpd2lOaXU1V0pDcFlWWXZjc0dkKzQ2ZkJmT3lPSy9OQXErcXJZTlVZYkE0UTY3a0hoWm5SeWRiblFWZVZldWd3YU5adFB0a2dWZlZZbThzVHF1elFHZUpXY3JpZkMrTHlzRWlXNTBGZXBPOGkwWDdPQ3pRcXJxVVJYWWNGbWhWL1F3c3NLcGFSN1BnNjJqcUI3TEE3Z0Z1bzFsMFc3SGdHMmtxV2xWZHNWYUlSZEo1UXRWbExOaG1MSkNxNm9yQkY3RHdqODJTSUF1NkdRdWtxbEtITC9Hd1dEWm1EN05vdHhtYjRWWFZNWDhSWm5HR3FTcXR6U05aRkp1TTJTTlUxYVVLSGhhT09iNTZQZ3lFWTh5Y0tITU5qWnN0V0NCVjFkSDdQU3djYzcvRWJPM0pNV2ZFZkgxczlUbStHRlYxekY1NldERGZ4c3ZLY0IzNm5jazlMT2dtOCtCUnFscjdaclZoZ3dmSnRxcUJ1WlpvS3crTFlpeDFFeFk0VmFXd0wvR3hLS0IrcGEwTEV0UFl1TFg0Vk1GZEpOK0dCVTVWT2R4L2ZDeUNhOHYyaW10ckxVcFdzSHRydG1HQjNOSkhiTVBndVpkRmNNK0JiSHBqZkoxcExMUnQwenpaWkowOVVsVnJLL3JnNU94bDBkbSsrS0l2M0RLalRNMXFKQXROeVl0dDlsOUVxaW96UXpGT2tnQ0wyaXlPT1RhNDU3cUY1am9MQmNZbDJXWmZUcXlxRW1OL0ZrbENMS2FDeCtkQnJoYnJRbTNKOUVSQlk3Q1luaHQ1VXpZRWJNTUNtZlpnTnAvK1BkUnZROHU5TE9iZWw1VTNFb1ZkL0xSeTk5SjBaUUp0aHF1RzJyMTg2Zmk4cC9HMEhRdmM0MmZBWHRjUUMrcmY2K3JZUDVzRExPenFiY1FDT1ZhdG8xazQ5dTAyL2hPYUVJdTAyNDRGVWxWNVBBdnFOd3Z3QkgxVGRlVjZLZjFHTExBendIVTBDK2krYS9HQzU5Sk9GbW0zSlF2azQyZWNSTE5nU2FCbzZyUWFKNHRtVXhiWUdXQVd6Y0sycFZOZ09OU0VXTHgybTdKQUp4TzZSTE13MjVvR3ZGRGVtU3dJUE8yMkdRdWNxcG93c2c3QlFvZVJObjVqZSswc0ZuclB4RDZUdVp3RlB2bllWYTgzZ29YNmVHOFc2SG12bmMxQ296a1hrSlRhcDhHdytOKy90TSsvd1pONGFYNmNENS9MeDVDemFycnA2VndFZUh2a1k5L3BGMytSK21zR2xUSDc5Tnk0VXNCT1VqTW9qUzR3VHlTTm9LcTQ3N1g1QzI3ZG4vMmxxVUN5V1BKaGZqL3daTEZuRnFnbkdKOHNQaHNMaG4wVS9oT3dvUGc0NStGWjFPaDBFWS9QZ3VDeUFud0dGalRaVGxLUHhxTGVVRVlPeG9JbEc3ck9nN0VneVlhdWMrOHNTbWhpSXZ1Y0xMUlJkNEhNSWZLWUxMaVM1K05LMExsbEhwS0ZuSUFxeTlCVTFlT3pvSjRWdjgvR292WGxsUHBrTE9xUE5JdWRzeWcrMGl4MnpzSy9aUDdaV2VUZEoyVmg3emw0N1Q0ckN5MWI3ZVlvZGo4Mll3cU50TnFZdkg5dGNBZmpWRjRXY2pQWmIzWmUzZlB6WlBGazhXVHhaUEZrOFdUeFpQRms4V1R4WlBGazhXVHhaUEZrOFdUeFpQSGdMSzVsR2RpUDdmbXc4cTczdE9temRER2IramRoY2JscmMwRHJmUEFEVjJYMTdiOGtXVzhuenlJV05GbUR4ZEpsSWJYaGRmSzdXWkNWV0l6TGhSem9McXpDc09ESkloYlhaalVXUEZtSnhiZ2NRZ0FESVFtR1JidUlCWE04QjVnczZ5SlpyRm1mZFJaeVhjUXkraGwzSmRaMi9DeUtSYXRMclRESXdtcEVzdXkrTm5lekdCeHdmaDhMc21oVmZrMFdkZlNtUTVCRmYxZXo0YStqandSWkxIdjMrZEJIMW1GUlJPK29nbG53VVVvNDBObDVnMk94eUdPeGJrVVc2U29zZWdQTC9UZHdHeFpkdDJZZmFmUXdzaHBDVVRXd25NN2d0K01PRnRTd2NXWkVveXFMT1ZMVldHUm1PUHdsRlBOV3E3Sm90U2F3UWRLS09WNjR6QTkrM3Y2UUtidmIyV1RCNVh2Rmh2cTlhUm1QS3ZYbENrTjhtZG0rVTNPNyttTjdmWEZuTnIya0pldUxvK05UNHZKa2tXMU5uckJRVTJjcEcycVowdmtwZTZxbEdpR0ptMFhmbHJseGwwVExNYWl4SU5wckN5dkZRcFZJdnJZemJaa3N5Tm9zdUxwcmhGcWJyWWdTVldwWi8yd1d0Y0tDcTJVWUxHcjFPNFVGVlljMVdnRXlKYUhCSWxtYnhWQzFWd1cvdXR1S3F2OEpzR2pIOTgxVjZ0RGlaTE5JOUJRL2xUWWFrREMwQW1UeXhzMVpjR1dYbWFnTEVXd3VvaHFGT05JL0x6Nm03NnFFajFORytCcUxTamJ1OW9PWG9aT3JMUHJ4dU1CYkRiVTNXTkI1d011SCszTVpESU9LVkV0bFpiTElwdXZmMUZENDR6dFpLQThMTW5HNzZkQWpTSDhwR1RUSXRHNjVXMVA3MzBrVzhxVzFSRkpRNHM1NnRFS2lvRlBkcFlBaFJ3WkVYTEtZVTdscUxCcUZoZWFLRjdNWS9Wd2pyOFdUS1pSajBublZvM0UzSGhac2Jod2REVTE0ZW9NRkdmOE8zK25hTVFsTVBSeW5VejY1Qm1CeDZ0Wm5NY0E0aVd2TmplMHZTR1ZWcVpMdHpjVkM2U1AxbklFek0xbE0yZ0N3R0hRc2x4SGdxUEJNU2NHbnNqaHZ3V0tBVWNucXppelU0S0hxSmhrTXNwaENuOEppd2FlZkY4TXQxMkoyQVNNZGdiSFpnVmNRaTJvVEZnTEdDV0tSS3JIeTJBb1BpMjVpY1pKeWtCb3MyTlQ2WW5CSSt2aEZ3TWpGTlRpWms2czBIOGhDQ0FiRUlzT3pLRlFXWjNWMkk0S0ZJTkMvd2U4OG9aZ3ZZYkRvTm1MUlgvbE9GbVFNeUNybEZKQkY1Mk14U01pdEFLSys3TzlEV1FqUGZSY0xkVHhDbHR2RklPYkRTM1p1MzlPMC9IZ1dGR2FCOXhmdGNQemVQakpvaUxDTGRDemd3MWt3bUVXQ1prSGtBRTdWRVp0Rk4wMXorRm1jYWhGMDllcnMwaEdReFhrcnU1aHZZcEFGVGVTUHExRStuQ3hPSVJaWno0TTEwZ2xOOFFVZk9SWWhGc1Y5TEhyaHNsaU1JV2pIcXlBTG9nN0NXOWxFZ0VVeC9yMzYvRVU5cDQ0L2pjTWtoV1BpWkVIa1dHNTlIZWxiS0N3MXlLS1F5eHF5M2FKdVY1MUZNLzZnVjBxZXVYWGtOSTFIYW5HeFFockdFTCtMNkYxblVjL3ZFVzJHZUc0SmkzRmhtU2lzRlJiRC9NbzFVVmtVWXNDcGpGTzUrUG1VTjNNZXAxNFNuVVUvdmhYUlpKOUZ6Mkl4VkVSTVlNbHg2bFVmcC9iVnljUnRxd3dXdDM5ZituRnFMVWZYK2JLNTMzbmR6R1l4VFdzcExHcHova0xMN2FEUFh5Z3NwbGRSak5OREZndHRFcWxXbHlhNXJDQ2QwMFRxTEdUV2tlbUU1ajRXRGNCaWV0Kzh3b0xDTEY3VnlWd09zSkR2L2FJaEZxazZyNVhQSSttem1sNWRaekc5LzBTbTl1dnVZakdYcjdKZ05vdmhlaWFMVEova3Y5Z3NxRDdmZVhLeXFGenpuZW9ySEhRV3crbXpJZWQzc1hqcFFCWkRvMTVWVFIzNEdDeSttQXNlb3R5WGRoNmJqVVZOZzlIR3hhSnl6b1BMbzFWbnNlQXlaQzlHRzkxa2p4SmJ1T3ZtMmp1N0ZseVY0Nmk5Ti9ENnlEVzBnZWh0dURINzI2L1ZicGZ6SWJBK3Q4YzhqVThXYTZ5UlBoZ0x1dTBqN1FkaGNSMFh6TGJNZEhBVUZrVWZFMitaTHVkQUxNZ0haSDA0Q292dDg2SWNqa1h6Wk5HSGxyMnphSDdMbGNXV292OER3aWZFektwNHJVZ0FBQUFBU1VWT1JLNUNZSUk9IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiRklET18yXzAiLCJVMkZfVjIiXSwiZXh0ZW5zaW9ucyI6WyJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiJmNGM2M2VmZmQyNmM0MjQ4ODAxYzM3MzZjN2VhYTkzYSIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZX0sInBpblV2QXV0aFByb3RvY29scyI6WzFdfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjEtMDMtMTAiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDIwMDcxNzAwMSJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMS0wMy0xMCJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjEtMDMtMTAifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyJjYzA2MTIyYTAwYzI4N2Y2OWU2NzZlY2EwZTAyOTI3MTNmNWNkYjNiIl0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbImNjMDYxMjJhMDBjMjg3ZjY5ZTY3NmVjYTBlMDI5MjcxM2Y1Y2RiM2IiXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ik5FT1dBVkUgQmFkZ2VvIEZJRE8yIChDVEFQIDEuMikifSwiZGVzY3JpcHRpb24iOiJORU9XQVZFIEJhZGdlbyBGSURPMiAoQ1RBUCAxLjIpIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH0seyJtYWpvciI6MSwibWlub3IiOjJ9LHsibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJpc0tleVJlc3RyaWN0ZWQiOnRydWUsImlzRnJlc2hVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZWQiOnRydWUsIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDZERDQ0FobWdBd0lCQWdJVVJwUUxXUXJtR0RTTUdnL283eDd4LzdvVWlaVXdDZ1lJS29aSXpqMEVBd0l3UERFTE1Ba0dBMVVFQmhNQ1EwZ3hFREFPQmdOVkJBb01CMWRKVTJWTFpYa3hHekFaQmdOVkJBTU1FbE5sWVd4VFVTQkpUMVFnVWs5UFZDQkhRVEFlRncweU5EQTRNRGt4TVRFd01UZGFGdzAwT1RBNE1ETXhNVEV3TVRaYU1Eb3hDekFKQmdOVkJBWVRBa05JTVJBd0RnWURWUVFLREFkWFNWTmxTMlY1TVJrd0Z3WURWUVFEREJCVFpXRnNVMUVnU1U5VUlFbERRU0F4TUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFQjM0YkU5eVBmUVJjRW9JMFlGQjhlYzBDU0UwdWptR2VDUkZkZEJCQlVKSis2M1pydVZ1b3J3UGNvcGQxTlZRWkhmVFZoM2RWNEpwN1Y3bVNySDZodnFPQitqQ0I5ekFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VBTUI4R0ExVWRJd1FZTUJhQUZNVTdIMHludVNiUi9iU0ZLVDkwZGNuVGxzeUpNRTBHQ0NzR0FRVUZCd0VCQkVFd1B6QTlCZ2dyQmdFRkJRY3dBb1l4YUhSMGNEb3ZMM0IxWW14cFl5NTNhWE5sYTJWNUxtTnZiUzlqY25RdmMyVmhiSE54YVc5MGNtOXZkR2RoTG1ObGNqQkNCZ05WSFI4RU96QTVNRGVnTmFBemhqRm9kSFJ3T2k4dmNIVmliR2xqTG5kcGMyVnJaWGt1WTI5dEwyTnliQzl6WldGc2MzRnBiM1J5YjI5MFoyRXVZM0pzTUIwR0ExVWREZ1FXQkJTb01hT0s5bGxaeU1Ma3N3WjhPWHgxOHh6RjdEQU9CZ05WSFE4QkFmOEVCQU1DQVlZd0NnWUlLb1pJemowRUF3SURTUUF3UmdJaEFMc0I2ekJiVVZYdXlqMG4yRE13SGQ4RngxbXpQMHBSM245U0h4UDJhZlM4QWlFQXp6YXdieXpZL29pOGgxQjE0bjlocUIzbnpCZVRuazZqSDVUeFk2ZVNTaWs9IiwiTUlJRElqQ0NBc2VnQXdJQkFnSVVQcjExdm1BNWpyLysxRFlWbmJEdWxMQzI1Nkl3Q2dZSUtvWkl6ajBFQXdJd09qRUxNQWtHQTFVRUJoTUNRMGd4RURBT0JnTlZCQW9NQjFkSlUyVkxaWGt4R1RBWEJnTlZCQU1NRUZObFlXeFRVU0JKVDFRZ1NVTkJJREV3SGhjTk1qUXhNREl4TVRNek56STBXaGNOTXpReE1ERTVNVE16TnpJeldqQ0J5akVMTUFrR0ExVUVCaE1DUmxJeERUQUxCZ05WQkFnTUJGQkJRMEV4RVRBUEJnTlZCQWNNQ0VkaGNtUmhibTVsTVJBd0RnWURWUVFLREFkT1JVOVhRVlpGTVNJd0lBWURWUVFMREJsQmRYUm9aVzUwYVdOaGRHOXlJRUYwZEdWemRHRjBhVzl1TVVBd1BnWURWUVFERERkT1JVOVhRVlpGSUVKaFpHZGxieUJHU1VSUE1pQXRJRVpKUkU4Z1ZUSkdJRUYwZEdWemRHRjBhVzl1SUVObGNuUnBabWxqWVhSbE1TRXdId1lKS29aSWh2Y05BUWtCRmhKamIyNTBZV04wUUc1bGIzZGhkbVV1Wm5Jd1dUQVRCZ2NxaGtqT1BRSUJCZ2dxaGtqT1BRTUJCd05DQUFUUVI4a2MzYlhsWnZyZUNYT1M5Y0EyaCtUVkNUbHZBekhJVFlGU2k2d2hBZnRYeDAwR3M2Q0tGYUZiYUxVaHRrb09pTkUxQjdGOEFkajNqMHpHNDUwbW80SUJHRENDQVJRd0NRWURWUjBUQkFJd0FEQWZCZ05WSFNNRUdEQVdnQlNvTWFPSzlsbFp5TUxrc3daOE9YeDE4eHpGN0RCTEJnZ3JCZ0VGQlFjQkFRUS9NRDB3T3dZSUt3WUJCUVVITUFLR0wyaDBkSEE2THk5d2RXSnNhV011ZDJselpXdGxlUzVqYjIwdlkzSjBMM05sWVd4emNXbHZkR2xqWVRFdVkyVnlNQk1HQTFVZEpRUU1NQW9HQ0NzR0FRVUZCd01DTUVBR0ExVWRId1E1TURjd05hQXpvREdHTDJoMGRIQTZMeTl3ZFdKc2FXTXVkMmx6Wld0bGVTNWpiMjB2WTNKc0wzTmxZV3h6Y1dsdmRHbGpZVEV1WTNKc01CMEdBMVVkRGdRV0JCVE1CaElxQU1LSDlwNW5ic29PQXBKeFAxemJPekFPQmdOVkhROEJBZjhFQkFNQ0I0QXdFd1lMS3dZQkJBR0M1UndDQVFFRUJBTUNBQU13Q2dZSUtvWkl6ajBFQXdJRFNRQXdSZ0loQVBPYkZzbDNVYW1US3dVOFJSbHNmSEpBRkdOMnlvODVaTjh4OEtDU3pIN09BaUVBdkxhaVNjeE9lTWdYWUlmUllmVnRjWi9ta0svMksvcThiWmhFOXdxVEZnZz0iLCJNSUlCM2pDQ0FZV2dBd0lCQWdJVUt5VURHcmhSUWJVM3JtbGwrcmUxdFliUnM5NHdDZ1lJS29aSXpqMEVBd0l3UERFTE1Ba0dBMVVFQmhNQ1EwZ3hFREFPQmdOVkJBb01CMWRKVTJWTFpYa3hHekFaQmdOVkJBTU1FbE5sWVd4VFVTQkpUMVFnVWs5UFZDQkhRVEFnRncweU5EQTRNRGt4TVRBME1UUmFHQTh5TURZME1EY3pNREV4TURReE0xb3dQREVMTUFrR0ExVUVCaE1DUTBneEVEQU9CZ05WQkFvTUIxZEpVMlZMWlhreEd6QVpCZ05WQkFNTUVsTmxZV3hUVVNCSlQxUWdVazlQVkNCSFFUQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJGeVk2T05EbHVobmozODNNUnc1SmZ3Z01rSnJuVzArSXRsT1RoNDJuREx0ZlprcnpSREZoOUtGRGFPRisyMVoybTlLU05xcjFNS2txak9pUnoyczROaWpZekJoTUE4R0ExVWRFd0VCL3dRRk1BTUJBZjh3SHdZRFZSMGpCQmd3Rm9BVXhUc2ZUS2U1SnRIOXRJVXBQM1IxeWRPV3pJa3dIUVlEVlIwT0JCWUVGTVU3SDB5bnVTYlIvYlNGS1Q5MGRjblRsc3lKTUE0R0ExVWREd0VCL3dRRUF3SUJoakFLQmdncWhrak9QUVFEQWdOSEFEQkVBaUJSSkRINDBpeThhN0xOZ1pmTFVkdXc4YkxEemtUOWkwb0l2VmplVmVMa1VnSWdXNXIzQjg0eDZ0OGNvTENKTG9GTGlwWjc1bitOKzNtOTl6RkxkUmx2SWRNPSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFnQ0FJQUFBRDhHTzJqQUFBQ3FVbEVRVlJJeDJQOC8vOC9BeTBCRXdPTndhZ0ZwRmx3OGNLRmlySXlSM3Q3UzFPejBLRGdCZlBtLy96NWszaXp2bjM5bHArVGEydGx0V1RSSW9Ub2Z4aFl0WEtsbHBxNnNyd0NBaWtvUklWSHZIMzc5ajl4NE5TcFUwQXRRSTFXNWhad1FhZ1B6cDg3VjExWmlYQXZJeGo5WnpoNTRrUk5aUldSUHZqOTZ4Y0RPTTB6TVRLaUI5Rzh1WFAvL2ZzSE5GUkFTTEMrc1hIbTdObHVidTRRbTNidDNMbHU3VnBpTEdDRW1jdUlhY0daVTZmQjRjV1FYMUFRR3gvbjdPSXlhZW9VYlYwZGlJdmFtbHVlUFh0R1VTVC8rZzMySFNPRGhvWUdSSVNGaGFXcHBZV1ZsUlVvK09Iamg2YjZCb29zZ0h2cXo1OC9jRGw5ZmYzTTdDd0llOCtlM2F0WHJxUWdtZUlva0RLenMvWDE5RUd5L3hrNk96b2ZQM3BFV1ViRHNBWVlSQzN0YlJ3Y0hFRDJoL2Z2NjJwcUNSZU9qQ1RtWkUwdHJaeThYQWo3OEtGRHk1WXVKZDUwVkFzWWNlcEtUVTgzTmpXQnFPbnU3SHh3L3dFK08vN2pzZ0MzMTVtWm1SdWJtOW5aMllGcXZueiswbEJmaHpPZy9xTzdsUW0vQitFQW1Id0xpb29nQ280Y09yeGswV0lpUFVFZ2twRkJVbkt5bVprNWhOM1QxWFgzemgxaVlvS0pjRFRCQTRxRnVibXRsWXViQzhqKyt2VnJUVlUxcUhRaHpRZU1CSHlockt4Y1dGd01VWG42MUtuNWMrZFN2OEpKU0V5MHRyR0dzQ2YwOTkrNmRRc3V4Y0xDQ3JIN1A1SXJTWWdEZUtGUzM5VEV4OHNIWkgvLzlyMnVHaEZRTjY1ZmgyVlBOb3FxVENVbHBlS3lVbWd4ZlBwTVNXRVJNQU11WDdhc3Y3Y1hJcWlscllYd0ZyeGVnL3FPdUdaU2RFek0zdDE3RGgwNkNQVDBwazBiTjIzY0NJOUZZS1pKejhoRTk4SGZmMzhoRERZMmRpTDkwZEhkcGF1cml4YXdyQ3lzcmUzdHVucTZpTFRYME5BQVRvSXNUeDQvdG5kd2lJeU9BdFlFeEZqQXpjM3Q0K3NMSkw5OS9Rb3NFMFZGUmUzczdSdGJtb0dWRlVxY2pUWWRoNzhGQUloQkxsTmQ3anUxQUFBQUFFbEZUa1N1UW1DQyJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wMy0xMyJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDMtMTMifSx7ImFhZ3VpZCI6ImQzODRkYjIyLTRkNTAtZWJkZS0yZWFjLTU3NjVjZjFlMmE0NCIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiZDM4NGRiMjItNGQ1MC1lYmRlLTJlYWMtNTc2NWNmMWUyYTQ0IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkV4Y2Vsc2VjdSBlU2VjdSBGSURPMiBGaW5nZXJwcmludCBTZWN1cml0eSBLZXkifSwiZGVzY3JpcHRpb24iOiJFeGNlbHNlY3UgZVNlY3UgRklETzIgRmluZ2VycHJpbnQgU2VjdXJpdHkgS2V5IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwiLCJiYURlc2MiOnsic2VsZkF0dGVzdGVkRlJSIjowLjAsInNlbGZBdHRlc3RlZEZBUiI6MC4wLCJpQVBBUlRocmVzaG9sZCI6MC4wLCJtYXhUZW1wbGF0ZXMiOjAsIm1heFJldHJpZXMiOjAsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2ludGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQ1NEQ0NBZTJnQXdJQkFnSUpBTTlSell1NEVJSWxNQW9HQ0NxR1NNNDlCQU1DTUg4eEN6QUpCZ05WQkFZVEFrTk9NU3d3S2dZRFZRUUtEQ05GZUdObGJITmxZM1VnUkdGMFlTQlVaV05vYm05c2IyZDVJRU52TGl3Z1RIUmtMakVlTUJ3R0ExVUVDd3dWUlhoalpXeHpaV04xSUVacFpHOGdVMlZ5ZG1WeU1TSXdJQVlEVlFRRERCbEZlR05sYkhObFkzVWdSbWxrYnlCU2IyOTBJRU5CSURBeU1DQVhEVEU1TVRBeU16QTVOVEEwTTFvWUR6SXdOVGt4TURFek1EazFNRFF6V2pCL01Rc3dDUVlEVlFRR0V3SkRUakVzTUNvR0ExVUVDZ3dqUlhoalpXeHpaV04xSUVSaGRHRWdWR1ZqYUc1dmJHOW5lU0JEYnk0c0lFeDBaQzR4SGpBY0JnTlZCQXNNRlVWNFkyVnNjMlZqZFNCR2FXUnZJRk5sY25abGNqRWlNQ0FHQTFVRUF3d1pSWGhqWld4elpXTjFJRVpwWkc4Z1VtOXZkQ0JEUVNBd01qQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJIbHEyalVRTWFsSGovQlJlUWVmR2l6NEV2WUp5RkxXUHo0UmZoSkdLcXFsKzhuOTZoVDFtNWdYb1R2b0xyalNVN1gwY0Jlb1RzZ2h5aDIyK3lyczQrU2pVREJPTUIwR0ExVWREZ1FXQkJRKzhTR1cyQlhicWIyZGNBT2lXSk9VK0dDc1BqQWZCZ05WSFNNRUdEQVdnQlErOFNHVzJCWGJxYjJkY0FPaVdKT1UrR0NzUGpBTUJnTlZIUk1FQlRBREFRSC9NQW9HQ0NxR1NNNDlCQU1DQTBrQU1FWUNJUURxOHhJVzBaSzV5ejNFQXptdXg4OExDVFlPMTU3ZlRmeU9pT3pDMkFEeWF3SWhBTzFQV1lsZUZnSC8zbXVEOGNCQU1yMTFmRUtkRi9BYUMxNmZ0eGFlek5YSCJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFJd0FBQUFZQ0FZQUFBQW9OeFZyQUFBQUNYQklXWE1BQUI3Q0FBQWV3Z0Z1MEhVK0FBQUZJR2xVV0hSWVRVdzZZMjl0TG1Ga2IySmxMbmh0Y0FBQUFBQUFQRDk0Y0dGamEyVjBJR0psWjJsdVBTTHZ1NzhpSUdsa1BTSlhOVTB3VFhCRFpXaHBTSHB5WlZONlRsUmplbXRqT1dRaVB6NGdQSGc2ZUcxd2JXVjBZU0I0Yld4dWN6cDRQU0poWkc5aVpUcHVjenB0WlhSaEx5SWdlRHA0YlhCMGF6MGlRV1J2WW1VZ1dFMVFJRU52Y21VZ05TNDJMV014TkRJZ056a3VNVFl3T1RJMExDQXlNREUzTHpBM0x6RXpMVEF4T2pBMk9qTTVJQ0FnSUNBZ0lDQWlQaUE4Y21SbU9sSkVSaUI0Yld4dWN6cHlaR1k5SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpFNU9Ua3ZNREl2TWpJdGNtUm1MWE41Ym5SaGVDMXVjeU1pUGlBOGNtUm1Pa1JsYzJOeWFYQjBhVzl1SUhKa1pqcGhZbTkxZEQwaUlpQjRiV3h1Y3pwNGJYQTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzhpSUhodGJHNXpPbVJqUFNKb2RIUndPaTh2Y0hWeWJDNXZjbWN2WkdNdlpXeGxiV1Z1ZEhNdk1TNHhMeUlnZUcxc2JuTTZjR2h2ZEc5emFHOXdQU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNCb2IzUnZjMmh2Y0M4eExqQXZJaUI0Yld4dWN6cDRiWEJOVFQwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOTRZWEF2TVM0d0wyMXRMeUlnZUcxc2JuTTZjM1JGZG5ROUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXpWSGx3WlM5U1pYTnZkWEpqWlVWMlpXNTBJeUlnZUcxd09rTnlaV0YwYjNKVWIyOXNQU0pCWkc5aVpTQlFhRzkwYjNOb2IzQWdRME1nS0ZkcGJtUnZkM01wSWlCNGJYQTZRM0psWVhSbFJHRjBaVDBpTWpBeE9DMHdOUzB5TTFReE5EbzBNRG8xTlNzd09Eb3dNQ0lnZUcxd09rMXZaR2xtZVVSaGRHVTlJakl3TVRrdE1EVXRNRFZVTURrNk16TTZORGNyTURnNk1EQWlJSGh0Y0RwTlpYUmhaR0YwWVVSaGRHVTlJakl3TVRrdE1EVXRNRFZVTURrNk16TTZORGNyTURnNk1EQWlJR1JqT21admNtMWhkRDBpYVcxaFoyVXZjRzVuSWlCd2FHOTBiM05vYjNBNlEyOXNiM0pOYjJSbFBTSXpJaUJ3YUc5MGIzTm9iM0E2U1VORFVISnZabWxzWlQwaWMxSkhRaUJKUlVNMk1UazJOaTB5TGpFaUlIaHRjRTFOT2tsdWMzUmhibU5sU1VROUluaHRjQzVwYVdRNk1qRTROV1l5WW1ZdE9EVm1PUzFqWmpRM0xXRmlPRGN0T1RGak0ySXpaakJpTnpobElpQjRiWEJOVFRwRWIyTjFiV1Z1ZEVsRVBTSmhaRzlpWlRwa2IyTnBaRHB3YUc5MGIzTm9iM0E2WldNeFpUZzNNakV0TnpNM1lTMHdOVFJsTFdFellUa3ROVEZrTVRNek5EWmxaVEk1SWlCNGJYQk5UVHBQY21sbmFXNWhiRVJ2WTNWdFpXNTBTVVE5SW5odGNDNWthV1E2TWpFNE5XWXlZbVl0T0RWbU9TMWpaalEzTFdGaU9EY3RPVEZqTTJJelpqQmlOemhsSWo0Z1BIaHRjRTFOT2tocGMzUnZjbmsrSUR4eVpHWTZVMlZ4UGlBOGNtUm1PbXhwSUhOMFJYWjBPbUZqZEdsdmJqMGlZM0psWVhSbFpDSWdjM1JGZG5RNmFXNXpkR0Z1WTJWSlJEMGllRzF3TG1scFpEb3lNVGcxWmpKaVppMDROV1k1TFdObU5EY3RZV0k0TnkwNU1XTXpZak5tTUdJM09HVWlJSE4wUlhaME9uZG9aVzQ5SWpJd01UZ3RNRFV0TWpOVU1UUTZOREE2TlRVck1EZzZNREFpSUhOMFJYWjBPbk52Wm5SM1lYSmxRV2RsYm5ROUlrRmtiMkpsSUZCb2IzUnZjMmh2Y0NCRFF5QW9WMmx1Wkc5M2N5a2lMejRnUEM5eVpHWTZVMlZ4UGlBOEwzaHRjRTFOT2tocGMzUnZjbmsrSUR3dmNtUm1Pa1JsYzJOeWFYQjBhVzl1UGlBOEwzSmtaanBTUkVZK0lEd3ZlRHA0YlhCdFpYUmhQaUE4UDNod1lXTnJaWFFnWlc1a1BTSnlJajgrLzBWeFJRQUFHZlZKUkVGVWFBWFZ3WGZjbjNWOTcvSFg1L3Y5WHRkdjNEczdKSkFJQVVMWUJabUNpbURWRGxmdHcyM0hxWXVxUFYwV3RkYldSNjNuVkcycm5yYU90c2hEclJVZlBSM1dXUzNLVmhBWllRb0VRa0xXbmR6ek42N3IrbjdlNTA0aUtOV084NTgrbjJudWlzUy9KM0c4WVplWjJaVEVJbUQ4NStST08wWlNVZmlISlA2Rkh5SUVXQmpBd3pOdzZvYkkzQ3lrQ0dhR0pOeWhMTVd3Z25yb3BOSklDQk5VY29vaTBPOGIreGZGNlBMQXFJTWNHb2QyVyt6WUQ5Rmc0OXJBZ2IxaTBUSlRIV0dDdW82VWhlRUpkaTltVnJTTjhjS1lxNDJkKzhTS0NTTzJnQXdkSUJRUVRQeDdabERWZGtrV2J6VFpjS1RJM2RodnZyR2x1ZU05ZDhVVFgwUnIram1veVlDUU9NU3NCTHBBQWpMUVJ4cGd4bytSQW1scjRvY0laaGVHa0Y1bEJwTDRyd2hJQ1hMRGZIK2dEeGVGa0hnQ0NlU3dmNzhoRXovS2pNUEVENUlnUlh1UnVmMjBwWUJaUTcyZjdTdEdIM1ltVHZ4Rk1oY2dBd2xpQVJMZ0dXd0dOQWZXUXF3bWhzaEJjbjRzR09BK2w4cUN4eG1RQlUzRFNaSWo4VjhUWUZDMGpZVUZiZTMxZFAyeTVaQXpUeEFTNU1aQWdQR2p6UUJCMVlEeEE5WlowS2ttY0VISW1jOTNMdmkzSGZISWtxWmVqVElnTUVBTzdsOG54azhoM1lMbjNZUTBqdXNNMUx5T0VNNUU0c2VDZ096L2xQWWNFSTl4UVR0eHhIZzNudWtZSUw1ckVkZ09DQ2o0ZmdZU3NSNXFSYWVqcTBKaXVxcDRnaFFOTHcxVjRzZUZBSzlGTXI1SFFMVGpRZ3liTWNpTmc3SG4xcFdYZk9PaDZzU0w4UGtqTVFkTFlHR2F3ZDdmSlhZdlIwV2ZFTUFDMUJXRTRsWjZDLzlNbWY2T2N1VHBTSUQ0a1dVRzBtN0V2ZW0yYmM1amhvMVlPeG1QT25NVHAyYUo3SUNCaVk4Si9UN1FBa1lBY1pBQVE4RW9jME8yeUxiUlVVTUNNNUNNZGh2MnpUbGtJL0pqUkdBUlFoSElqWGlNR2NkS0duZU0waktJT3g2cFYrL0xadWNqN3hBTVNQdm82eFY0OVFYU09Nek53OGdFZEZvd013TWpZNURTWHBybXJSVDZCNHhWaUI5ZEVrdHVKTnFPdEhjKzhKaitFRHBkMnhUYWpHZ0FHZU1nZC85bllFOEk0SUlRUUN3SmdJTUxYQkFObWd5U2tSMks0Tno5SUR3Nkx6WWZMUXJqeDRZWk5EWDBlazUzTENCeFNBcDJqcGxoZ2hZMXN6WngwMVhOQlhNRXRoQXFRQlc5NWgwMDZRdkVFYWhKdE11WFVNUVgwRlJYMDJwOWhDTE5vd0NlcnNmOFByQlYvS2ZFWWNaL256ak0rQUh1RUFML0lUbGdZTVpoQnE2YkVRdnBTVWRHSGxQVnhCVmpkbzZ5NFJJZ0VOc0VPNkpCbHBFQ1ZMVVRnaEZMUVRZY0l5TUtRWk1oRzFRTkZLWDQ1ajFpWXRKb0pVT1YrQ0VNR0FFQ01BK0kvdzhDWEdDQU8xamt2ODFZSXNnT0VvZUl3eXhBWFltNS9jNnFsWVpuYURKSDVjekpoSUJNbU9BaDMvamxnWFZXUXo2UllEQVlYc3RDL1JkMGxrTTVBdkkzVUhUZlJ3QnFmeDRqbzF1QkwySVI2Z0RaRzBJQUJPNFFJMkRnRGlZT3NRUnlrSU1aUDBqZ0dVTGljUllBZ1F2TU9FUUNNeWhhNEJua1BJRUVGcUJvUWE3QUhVSUVCRG5maWNqcHBFbHhpSURJbXM2WW5aa2JhREpZTUR6NzNjZ2ZtV2tDUllMSkNQMCtXQUFLSG1lQVpFZ1FBZ1Rqa05FMnBBZ1Nod2pJQW96amdaOUJPayt3enNCYzdBTytndmlreEtQOEp3UzRHREc0S0VYT0VxenF0UEFBM3pIakM0S3QvQmNFeTRKeDhXaWJNMkprS29vYWVBRDRDdUxiR0JRbHhCRWpaa0dmOVhWdG00aGdDSXpaditYRkR6MFlOcDZOTGF4RURtWG5zMHlaRXlvbzB4bkkvb2ljb2FraFJNQmVnM3dUVWtuMjFSZ25FOFFoclE0b2cyY0hiUWYyNHF3aTJIcVNCUnFCQURNZTV3NnBnTTRZREhxUUd6Q0RrQ0FWTU95QkhDd0FBZ0d4QURsNEJvc2NacUFNQ0dJTHdqaFVQYUZzd0E2QzdtRkptbmxVSE9RWldsMVdqNHl5UlVFZ2tCdGx5VDJ0cUFONzU0VzVzV1JDY0tyZ0RMRGpnT1VHQ29HZEdMY0MveXA0aEI5R0VPQ1lxWFo0Ylc3c1JkRjBGR2FHSUFNcFFzQ2VaWUZmTTdOM0NQN2FRSHdmQVRtclJQWkxyY2l2WUd5V1dWZUN0Wk1nbDVySzNwU2lQb2J6aDhDQTd5TWdpMUdaWGVwdXI0ekdwZzJyWWxuWEFqZVVoRHNQV2VUUExmTEgxVURhZm0rbUxveVJ0djNFWk5jbXF5eGFOQ0J1dlQ2ZXV3UHhNdFJ2NCtyUkc5eElNdWcwTU5RQkxOeFBhMlFMdVlGcUFNVG5BOC9ub0NJQXhpRWhndWNETFBZK1RqUDRFdU5qOStEV0o0UkFOWE02ZE4vQ3lMS3pXSndGYnlCRVFCQkxVSURGbVFkeFhVY3E3c1RDZ0dIL0tQcHp6NkF6ZWhJR05BMmtObmpld2ZiYlBzclk2dnRvVHo0ZmExNklCY2daV2lPUTYwZllmditIbUZoeEI5M1JuOFB6eTNEZGpyR2RKYW03TVhDUUJFWGtERFBHY2dVV3dYQUdmVjFmVzBCdWF5M3k4N2c5djkyMkV3MWJJVGN3Z1NBRlE4Smo0SDZaWFZGTEh3Qm0rUzRIQXJ4NDlUSjdSOWtLeHc4V3dRS1BrNkJzUVFHV3pkWVhvL0dqZFpPak1oODJEcE1nSmp0cDlVVDgzOTFrRitlR29rakNKYklNbHhCWXJuVmt1MnR2TXc5SG12SnJCUU9XT0ZBRVRsblZEaDlzV2JpZ2NjTk0xQm5Fa2lBa2tMRWhCSHQzR1d3Vm1kKzhkNXZ6eGUvRTlNeXo3Y3lMejRmcUVTaVYyVmxzK1B5ZVltMlBQay9GTXNnSERQb3pXSUNxZ203bkFUeS9nTms5cjZFb24wZDc5RWswRlljSUNBSEVFb0VQdjhxakQ3eVRWY2RkdzhSNFF6V0FMQkJnK1dGbUZyL0tiSE1GVStYekNBbXlnd1VvMHg3MlBmU1hQSERuMzdMbEtROWgxaWRFd0dGbTF5bzZ4N3lWc3Z0RzZoa3dvRFA2TmhabUxtZlp4aFlwWFl6WElBR0NhQ0M5aTE3OUZ6VFhRVHJoUXNwTjRJdmZBdVpaa3JwZGNaQ2dFMlZuZXpaY0ltSzBPbngxZHRiK0xqZTZlTlVLKzJEQ2pxOWRoQkMwNUFEU2lBWEtWalNhUmpRaXhHREhncjNUNEZuQXIwcDgyd1dkeUZ0YkkrRzNUVGJldUJBUWdCQU41UE1qTFQ1M3g0TzZldHNDKzg0L3dkWk9ZaTl0aU84eXk3Y2kzY2hCNHR4V3l6NFM0Y1FpUU9nNnZSNTdURnlWZ2p5WVhTUlkxUUFPZEdKOHFhUnJKUHRvVTNQUXVTbllGYVBSTm1XRGpERFlXZFYrdlJuWjRHd3oyMkJBTlpTVm5maXFvNDdsczVQT1ZmUExiTzJLVWR0TVgyQUdCUXc2RTljMGQrMWR4ZHJqTnRGT29EaENaLzk1N0hoZ0swZWZDNkVHNXg0R2k3OU9TaDhncEtjUi9kY291NmZRbjRmc2tDSlEvejNVYjJCcXpVNmFQb3dzTzViaDRBSmN1L0RtcTdRbkJ2U1paL3ZXdHpOMjdHbDBKemN5V0FUWjlWUnpiNmJkdm9iTjU0cWlCV3FnR29JaXRFZjNzT2ZBbXhpM1NMZDlLVlYvRjYzdVZ6ajZMSWpGT2xSZGdBVVFFQU1NcTN2SmRoVnIxa0p1TGNNbW40b3FvTDRaUElPUkdIQ0lHVk5FVGhKZ0J0bjl5OE1Ccng4ZHM3Y0ZoWGQyb2hnMmZtUE8rblNRM1F5MkQ5TmtVOWtwaTQyL29HeUZpOHBJa0F0dnhNU1luUitLK0FrTHpZdEcyM1pCdXd4dnl6MjE2MGFZUVpGQVVQVjcvcW1pc0Q5blZMZjErdlNuZTQ0c1FOWVZqZXp0cGZIVVJuNFRzTTRzdk0vRWlTSEJURi85aFVYNzA3S3RqNDYwMklYSU45elZiSjRhaSsvZmNuUzRzQnFJeGxXMFkzemR2Z1UrdW0zYWp6anRLUDRNYkZNdGtHbk9zNzgzaFBESkVPeFJTUmdjaVhnYnhrc0ZscUt0YUtmNHd2NVFWNTE2cko2MHlqbWgybTlZRUpUc2ZvOWUvOGg5QnphZXdSSHpVNFFDRkZxRThBYTh1b21pdUlXbUQ1NmhMTURpZzdSSEh1U1dhNy9Fc1A5UlRubjZzNGdHaS9XMXlONUlIT3lrTTdHTWhZVTNzN2o0VXNScWlsQWdQazZPdjA2NzNzdFI2MjhuaHh2STJraDMvQ2JtRjErTHVJM3hOZURoNlZUOVZ5R09SUGxtR3Y5VEpsYnR4SUQ1NFYvU2FqOFhmQ2R6ZXhleE50VFZXVVRmZ0JtWVFURG9EWGZRMHpZbVdwQTJub1A3Q2ZoZ0h5SGZqb21Ea2pqTXhQcEFPQTREejl3ZzhYN1YrcjJSVG56NVlxMEhkcy9sUHh3cDdUUEJtT083Z2tIbFhIdjN3LzZ4aVNuLytWTTJwYmRYcy9Za2oySTRFS0VLVzU1NlV2SGxtSmlvZW1vcmMwZ3JRUU9QSGhqNlcybnNiOHFDeDhVSU1SaTQ5dGRaZjFBVVhEQldwb21GU3I5bEZzNEpDQXZNN1pyMVMvdnpmSHpEZXNNTUVEUnV0ODczbXJjb3AvY0VXQjhEelhSUDkzL3FPaS9PUHpuOWFtdlVucnd3QzVnZTh0cGZCWHlOSjdvYjlEdVluV2pZYVo3RllyWk5NY05LMkpLQ2pWZG1kQm5BZ0JzZjBoSGIyTEx1ZGFRREkxUVZ5S0N6Nm1TT21mb2s3bitNL0V0NC9RaXRVZWlPZ3pjZzdXRFkrejF5UG9taVhFOWpmNGhwQjZiMXBIZzU0eXVmd1hBQVpoQU5YQytuYW00bDhCNjY0OUJLQjhnTE1OZDdKNVZ1bzRxUkVidU13Y0p2WTJFTWkxQ01Yb1NxRHRobHhBQWR6ZEkwZXlrNzMySTRuT091dTJIOTZ0Tlp0VHd4ckNBWXhBUUwrMi9Dck0vb2F1aFZUNlpWZEpodXJxZXRBM1FpT0tRVWplODZ4WXdwd1U3SHIyMG5lMHYyZEc0LzYrdnUvaXBnRzk5bGdGaGlITkk0dlVhNkhQZHY3aHZ3aWJGT09EVUJ1UkhqSXh5Ukhlb0dna0VNc0d0RzM4N0IzMWgyN0dvSkVPRFFiVU8zTXU3ZG5sblpFV1hCVkxzZE81WTVYaDVlb0NpS0NETnorVVBUKy96anJaU1F3SUE2dzlwSlp6RDBhd2Z6K2VlU2FTd21jcFhaTlRWcXA2OVpZYjhpQjgrT1I5NmRVdnhhTUVZbEdXQkxXSktCQTNKOTI0elRXT0tvWERTbks5dVlKQVFFZ3dQTjZOVzdlMnVnemRtUVFTd1I0TkR1Yk1iOXI4akZWcUkrQWZZWm90K0grbkQwYVN6NUJzcTMwQnZzZ3ZBTm1qM2dmaFJoK1RTaHVSSjVCWWlHQWhnaDZCNktCQWFzV0g0Nlg3L3ljMWpySyt4N0FEWSs4K1hFK0FjSXd3UmlTWVoyK1V0SVoxQTNNeFJoQW1remxuNmZiZHNhUkllaU9KV0RESkJEdzREMjJMY1k5bUIyRGtKNk1yUmdxbk16VFgyQWJCeVVrRmpTd3V4MENReWZqbTdQRGVOaDA2RFVGMXA5dlp6R3B1V0FRQVlaTU1BTTNDRUEzVFpRc0hXdTFzL1VNZi9WVWQxd1NiK0dRUTBHbUVHSVFBcGZmM1IvZnUzS0ZkemxBak5RZ0dZSUoyMkFacHY0ME9maHdqTUR6ejNkTHQyNXgrUm80K3JsdGl3UElYUzRwMTN5SjFQelJyc0ZxUVYxQXdaMFMyTTRCRWs3REpGbHJCaU54WXZQNTRWa1Zpek9pWkJzRWVtbmdMTUU0NEQ0bmhvb0RNN2lJQU9EeFdnVTBUaEpBdHdnd1pmakpYZHNEU2UyQ1BrSVZBTUJNQkRRRERra2RVN0V1dStpSHJ3YWVBbVRvemZnd0dJRnFJZjRCS1ZQMHg5QzVqcTh1WTVROEQzR0ljcFFsTkNkV01uZXZjdjQ5cmMreXJMT0lpdlhybUN5dUl6S0RSTmdQSzdKWGVCY3pNQWRzUHN4dTQyTlI0SDc4WlRoRk9vS01FRGc3R0IwZkNzUjJMdi9CSTVZdHhrTDhKMGJyNk8zUHhNTERrcGtEcHFrME9rZ1lyQ2pyV01qOSszUlRkTUxldlU0VEs4ZWc3SUZicEFOaEFoQldBTm1jTVJ5WTZTQS9vTFl2TXkzMXpsZTJXdTRoQ1hHWVdaUU5mNzMvWXBMeTVaMmxRRktqTkFDQmVoVjBDbUVBQWRpeVhuZGJucnAxdW5tajhwUnpsN2ZzbmJkd001NXYzcmRsdkRveVJzTUdqSFlBVFBUMEVxd2NzS3dFRkV3M0NDSFFJVFYwZXlpV3VBR0VVYktFSDdhQVFuTURBUU9HR0FzQ1lZQUE1UjlheWZZNlFsN3VtU1U3UnJtZUhCNy9hVGJCMVBkNTVCN0czRExZTHM1ckEwMkFVVFVnQXRTc1pIc0wyYlBnUnRvSEN4dkFGdERzSzBZTUhsY0MwOHJ5TDJFNmhxTDRxQVF1cmdtaVVYQnNQOHd2ZFlycVBiTXNuN2wxWno2SEZpMjVrSnkzc2hnSGtMZ0NRd1FJQ0FWc0RCN0xiM2VibGF0aFJCUFlYYmZDZzZ5Q0ZaQS81RTdHZTYrbmRGVFlNMkcweGxySDBOdjVnQlgvZU85UEh3M2RFWTVLQ2x3MExHQmNDb1lvSkZPUyt6Y21UKzlZNWUycjE1aGREdkcybkZqVUlFQkJwaGdVSXQyYVJ5NXlyaDl1NWp0aVJQVzhSeXY3SGZkaklCNFRERERHM3Y0emwzRGZXdW5qTkZXb2gyTUprTHRFSUVBOUlZd1ZqSys2YWo0ZitncW5MWkpOMlhGMXd6bWhSVlVETm5hVEFNbTZnWFJ6Qm10MHBBN1ZRMnJsaGMwYm1RWE1RblByT2tOT2M2Q2lJWUhXQkNxQk1rTVk0bUV4WUFsbzE5bDlUbXM3V2JUOWRBL1ZyVHQ5Qml0VzFYUXNReUo2NjVaUEhVSHpzOWlneEx4Qm95cmdRSTRIdlFCektad1FWbUE1RHk4NnlZcXdmSVdkT0lGTUhJQ3NkMERRVFZZaHpWWGdFMUJtQVZ6ekVhQUk0RWFZei9ZREtrNkZ6cFhjTUhQUGt6bktDQ3RwOW9mZVp5QXdDRnlpQWtDbWV5UjFMcWRYUFdZMlFObUo1REtoRHRZZ1BiWWtNWFovNHRGaUN1QUF6OUJNNFIrLzBZMm43T0xkY2RCS2prb3lRQmpNOUExUkJiVWl5eXVuN0M3amw0TFQxcGp6QzdBWUFobVBFRXdrS0JxSURzRUM3OEk5cWMxakVlRStCNTMwV21GWDE0Mm11NnFjLzZ3QXhsd0FRWUlxZ3hqSFZhODhxSnd4VW1yd21tUFBseS9lcW9kRHlTejVYVWpZbTNGaXJhV3orNFdRU0taRVZxZ2lzTUVUYU9Pakd5b2FIZkZjTkZHbEJrTExERUxnK3gvSGN3L1VnUTdLcnNpUWc0cVpIbTIwZTZXMlp4eFNMZHB2SjJkK3dyczlUbERMQTBHa1VVMWR6UVR1NkRpR0pMTlkzd1d0QTBNcFB1QlM4SE9CWUVFODR0L1F0SDZPS3VYUWY5UjhQWlRhWStzWXZiK0JZWXpNUEtrZlJUbFBtSThIeHpNUUFiMTRNc0V1NUpRM0lMN3k0aUQ4MGhqczdoVlRPOEI5MXRvdDJwU1RNaEFCalNRL1hNVTVWZkJkN000MkVJSWw3Rm01UnlqSlh6aXo2Q3V0dlBjTjJSNi9VVFRoOFg5SDZmVitSdXFHYUEvVHE1K2dsNEZxZlVOTHZ6NS9hUUNKQTVLSmxvVzdHUXpReEltWStqNjFvWWp1TmJOMkRjTEdKaUJlSndCSlRCMFFRclczYkRDL3FBc3dwdUd0U1hNT2NqRWZoa2RvQ1BBWFdQSExFdnZuZTlqY2o1aUFlZTdoS2hxZThieGE4TDdXdXZpS2ZmZG5SLys1ajM2MG5PZVRwaE1pZ3hBWUpWNGFveFdGb1RLbFVFR0JuSUkwWDdaakpjSFZBbWIyRC9qZnpiUnN1OG9XZCt6dXNrZ2kvWWcrNTJqSWQ2SkdXWVFnZXlCUFpYTzNkQU5Gd2ZSZFRFbStUdGFwUjhSeko2UjNlaDB3ZlkzZkdiZmViZGRjK3pMVmxGckk0T3FEV3FEd0FLZ0E4QmJ3ZjhuS1FWQzYxTlVNNTloMVNTME90QWZ2WmlpOVFKTXNMaHRHY2tnTm5OUS9qTEtkMEE4aDVBWHFQdC9EOTFQRUZPbUdYWUpjUmxpaVRhalpncjNhYkpkaC9ST3hHK2hQRVdJY3lpOEg1cDNJMStrYnFBLy9CM1dyb1U3YnpqQW8vZkQxQkd3N2JaUE02eU9wQ2pPb2FuK2xmN3NCMmxQUVFSNnUwOWdaT1JrSEREN0p0VVFxaUdQU1JhWURHWlBGb2Nad2t5cit4Vy9HUXdyakVJOHJoV01aWUtWd09kZGZNaGQ1OFRDM3JscU1weGZ1MmdhVVFTamN0MFdzRmNYMGl1YWFKZktSUmEwSXFObE4zNWc2UDZ6TG4wTzdDR0RvOEdlRVlNOW5SREc2TG5QenVjM2JaemlvZVpBWHFieHNLMVZoT1hEU3BqWkJhWENSOHowQm9jNWxyaXpQSnE5dlN6dDBpb1RPeTFqVUduMjBXbS91NzNCdHJmYTNEK1l0Wk96WURUWmEzcFZtQnMyOXJ1dGtzck1rQmhQUWIrNHZoMStUekJsQmxtNnk0eTNKMk9GMEJhTFJyMllTU1YzUGJqcUtWK2JtVnYzVThUZWtaZ0Q4ZG00MzAzT0VBT1kvUnVSNjJtMUN0QTgxWDRJVTlCVW15bGI3OGZLWmVRK0xIL3laUlREVzZtYi9lRFRpTGVUMnFNTUZvYk03eDZ5K2hUSWZqVFcvemd4bllzREZpNmlHWjZDNmQ5b3BZenh4elM2aW1ad0JHT2o5MU9IMi9EZ1pJZFcrZnNVNmUyME9yRG5vUk9wZFNXblBnM1diTnBIdHJleHNEQkNxelhIeUNRMERpSEIvUFJHeGlaWFlQVmVjdk1RTXI1ZkdoblYrb1Y1T3kxRURuRkEySEdsd2x1aUFjWmh4aUV1N1RYWmZVTEhoRUtYRTNoYTVheWlobWhHQTlSWi8rVEdiN2puNzhqOUVTeGVIQ3djRDJLWVJUQXJrb1hudVBqSkFIMkR0b0tsZ2lVeVdQUkxKenY2aDFnRUZxZlovOGgyL2MwSngzTnFVWkp5QTJaNmhkQVdJL3lyUkxkVDhFekhOc3VnMHpLaWFXZUtlZ25HTFFNcERPYTVjaVRZeWJVTGkyYmRNdjVHblhXaFlWZUR1bVoydHN4T0c0MUsyYUdXM1NEcEpSWTBJTmg1WUFnREJ3TDNySXI3RnFrNERVdGdCakcrbWV4M0luMFJNOGlDZmpOZ2NHREE3Q09RYTVDOWlGaThEMXRZajljZ1FXZmlFdXJwOStMVkg1SEN2Wmc1K0J6OVBpejBsN0dPWDREOEZocGJqc1FoUmlJVzc2WVovZ0lwM29YVVlNMzFwQkxtNTJGUVFYdHFQYTN3djVDL0ZET1ltWWJUbnYzYnhQWU9lZ3NmWWQyeE1Ld3lnMnFlbGoyYk9oK0w2eTlvdDBSYWZSRzVCdVZ2NEhvWXhQZEx1dzl3M25oYkhYY3dRSUlpUXBGZ1dBbDNzTUFROFlqZzlpYjdya1FZaVlVOUg3TjFMaEVFalhEUTlZdERmMzgwUHROcUJjOUFJKzBJMlg4cHBYQzVzR01kSVFseFNCU01HbENZTVdnMGJkYTh2b1UrN2Rud0RKMElldzdvWTJzYWY5cnFrZmh6dlZrbm04emd6R0RoVEFFUkVZTlJaZEVmYXV0WWwxZW54SFdHeUFmY0xkdGZ4ekY3VnRtMjgvcDlzU1NtWk9lNGN3NFlCemxHUHd0My81Y1F3cHN3dGcxckptSVJuaG1DZ2FBVEttWTBkZHZuOVR3b09Rdm1PVVJhVFF5WEkvOFk4RlZjRHpCMEdNNnZZemc0aGJYSFA1TW1QNU84V0JJVGg1aEJOUTkwZm9HeWZTR2V2d2kyQzI5RWQveEl5dllGREJlUEJrcENBbkdZWjdCNEZtWDdNOERsb09zdzdTYW1rcm4rTVhqOUZMcnBlZURIMFRpWWdXZG9qWGFvNi9jU2VEYkQzcTFrYjJpWHgrUDJYRktNaUo4bTJEaXhQQTAxNE54TXRsbU1KMGpiOXRuWlp4eG5ET2ZrQkJRQ3cyR2poY1ZLMDJXeW5nVmx5ZVl4VEhCY0N1RUNDNHpXV1ZuaTNtUzZyd2pjT1plNXZzcTZPc3IyU2VJeEJwaTRidUQ1eFFHN0xKbTkwTUZTTUNSd2lTTFNtNm4xand1VjNydXl4YzBza1VSck10RHBHaWRNc1pDQy9hcXl6d3E5TWtVcnpJMUdBb3hhMEU3YTQ1V3U3QS8xSjJQZGNEOENCS3BFdTlTT25NUEw5ODN6NXhOdFBTc1JHR1lvQWtqZ0VnbS9aOTlRSHk0amwzZUQ3UjlVam1BQ09CV0pROFRpUGx2KzJmdDEzQmJFNllRYUNEWHVodGthaXVMTm9OZVF3bjVHQ3FOWVBzbXlJOGFJUmFMdVE2NGJRaUVRaHhsZ0VleG9USy9qb0p5aDFZR1JTUmpNQzFFVEFrK2tRRXhiVUg0WGhCa0lzN2hLcHBZdncyd0VyMW5pbURXQUVTSU1lbUEyU296UFIvNThZb1FFdUFDRFlKY2dCM09XT0hBZFFmeDdhZlBxOE1GcVVaL0VhRUFLd1JaN2ZlWVhLeTBldWRLeUdwc2FWa3pHU050Z0JPVElwcHRHTTJBTEtYRUFtSGZSdUtCZ2lmRkVCbG42bHNQL2tPdUtZUGFVb2V1b0VHd1lwSHZxeHI5ZUs5emtNRFMrVHpTc01Eb0pBdXoyckRjT2gvbnZLc1ZuV05EeExRaVlwdDExaXpKZms3VFZ6REtQTVNBQUJpSHc0TjQ1dmVUaFBmNlRXOWJ5bExKZ3c2REN6TmlaVE5lWStIcVdIaExHOUVKTjNZaVU3TUJJYWE4UmdTQWxFb3RmcUo5MTgxMzk0MWZRN2IrU1FNWlZBWVprbUxXUnVoaHR5Z1FoMUJpTFZJc0RqRXhJZ1BORURRZ0RFcEFJQnJsdXlFMkRtVENXaUIrZ0pnQWRqQkhNRXBLSWNRajBhT29oWmc0WWp6R1d5SkFpVUNBSFVRTU5CMGtSY0VRYmJCYTRpUi9pL3dIM0Q1UE1wZDJ0NVFBQUFBQkpSVTVFcmtKZ2dnPT0iLCJzdXBwb3J0ZWRFeHRlbnNpb25zIjpbeyJpZCI6ImhtYWMtc2VjcmV0IiwiZmFpbF9pZl91bmtub3duIjpmYWxzZX1dLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJGSURPXzJfMCJdLCJhYWd1aWQiOiJkMzg0ZGIyMi00ZDUwLWViZGUtMmVhYy01NzY1Y2YxZTJhNDQifX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMTktMDktMDQiLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IkV4Y2Vsc2VjdSBlU2VjdSBGSURPMiBGaW5nZXJwcmludCBLZXkiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDE5MDcwODAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4zLjYiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMyJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAxOS0wOS0wNCJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMTktMDktMDQifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyI4NWY0NGY5ZmYwZjNiZTZjMzczYzIxMWUzNDZlMmU2YmM0ZWIyZDVjIl0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjg1ZjQ0ZjlmZjBmM2JlNmMzNzNjMjExZTM0NmUyZTZiYzRlYjJkNWMiXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkFDUyBGSURPIEF1dGhlbnRpY2F0b3IgQ2FyZCJ9LCJkZXNjcmlwdGlvbiI6IkFDUyBGSURPIEF1dGhlbnRpY2F0b3IgQ2FyZCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxMDAwMCwicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfSx7Im1ham9yIjoxLCJtaW5vciI6Mn0seyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQ1FUQ0NBZWVnQXdJQkFnSVVGLzB3VFBQNkZFcXhwc2liSmlMRnREajRxaHd3Q2dZSUtvWkl6ajBFQXdJd2RURUxNQWtHQTFVRUJoTUNTRXN4RWpBUUJnTlZCQWdNQ1VodmJtY2dTMjl1WnpFU01CQUdBMVVFQnd3SlNHOXVaeUJMYjI1bk1TTXdJUVlEVlFRS0RCcEJaSFpoYm1ObFpDQkRZWEprSUZONWMzUmxiWE1nVEhSa0xqRVpNQmNHQTFVRUF3d1FRVU5USUVaSlJFOGdVbTl2ZENCRFFUQWdGdzB5TWpBMU16QXdPVEl6TXpWYUdBOHlNRFV5TURVeU1qQTVNak16TlZvd2RURUxNQWtHQTFVRUJoTUNTRXN4RWpBUUJnTlZCQWdNQ1VodmJtY2dTMjl1WnpFU01CQUdBMVVFQnd3SlNHOXVaeUJMYjI1bk1TTXdJUVlEVlFRS0RCcEJaSFpoYm1ObFpDQkRZWEprSUZONWMzUmxiWE1nVEhSa0xqRVpNQmNHQTFVRUF3d1FRVU5USUVaSlJFOGdVbTl2ZENCRFFUQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJCd1lnS1Z3akNWNitsdjdnbnBGRVJ6VTJ1TkQ4Z2RFa1BDTmNzL3ZGRHMyc0s0Mkp1eG5oRm5JZ01CMkR5VTBJclhJTGpmLzJYVDBZU1RkMXNQaVRTYWpVekJSTUIwR0ExVWREZ1FXQkJUblFhcnBkU3Q0c2lkN1ZqZk5JTElIcmIyUG9EQWZCZ05WSFNNRUdEQVdnQlRuUWFycGRTdDRzaWQ3VmpmTklMSUhyYjJQb0RBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUFvR0NDcUdTTTQ5QkFNQ0EwZ0FNRVVDSVFEY29YSjNyek5NQS9mWmtoMDhQb0ZyTXg0M0dZTWhaTWZMUHcvM01mSnBHQUlnZWN0S3dtSllNOUo4U1g4eC9hUVY0aUd2S1dvQmZyMVhQVEFNWE9oVkVZRT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBREFBQUFBd0NBWUFBQUJYQXZtSEFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFEc1FBQUE3RUFaVXJEaHNBQUFpY1NVUkJWR2hEMVpqUGk1VlZHTWY5QzlvYjZESm9JUWkxaURCd0k1UWdFVUVsdEJKMFlTQUdFdVJDRkJNeElrbENheUZJUWlhS0JaVW9sWTdRTkpNNjNuR2FjYTZqNDB3MDA0ekJNQk82TEU3bjg5ejdQZk84NXozdnRkcTUrSEx1ZlgrYzgvays1em5QT2ZldStQdXZ2OExqTERQUUdoNE83Zkh4MEdvTnA4OVZ0YTJkbkp5c2FYcDZLbWx1Ymo2MTB2ejhYRmhZV0NocWNXblJ0TFM0RkI0K2ZCZ2VQSHhnNHJNWGpMNlZEaDQ4MkRYUUJVOUdZanZlYmljMXdRdTRCQSs0UHMvT3pqYkNtd0ZuNHI4b0dSQjBKOW9kSmZoMkhYNHFnaUlQN3dVODBLWG9lM0NEZndSNEhuV0ptZXBwb0tOMkRYNTZxcHd5dEFEUHozVWkzd3NlNlA4TDdsVXhrQ3NIUjNuVUJjMW5xUVR1NGIySkV0Uy9rUUpRTnhEVGhiUXB3UU5INitIVkNwcnZ0TXhDRGsrZUx5NVZvWHVaS00yQW5pOGFhTXAzZzQ1cFkyMEdqNEJWdnVmUjk5R1dQRWhKdlZMSDkwTXdzaG5vSFhrQmUzZ3ZENTdETTFndmFOUUxIRlhoRjIyTVpDQ0hSb0I2QVZtQ3o5TkZzdExZTlZDQ3lhK1ZwT2NFVG45K2pFWURPVGlMOTkrQ2w5SUc1WENLZUsvSVYvcm85dXZIS2hwUW1RU3lHSEdYNTdNLy9CQm1QdnNzM051MUs5emJ2RG5jV2JldXByc3Z2SkEwOGVKTFlXYjM3dkQ3b1VOaDRjS0Y4T2ZNVEJHNkJPL0JwWm9CYlZDK1hHcHhvdGxyMThMMC92MEdNdnJFRTJGMHhZb3crdVNUQmpyNjhzdGhkUHYycEYvMnZ4ZHVmZnh4NVJvYWYrNjVNUGIwMDUxM285cXJWNXY1KzZkT21TRVBMZkNTQVFwSHhRRFJWVnVKZUV5Vlg4K2VUZEMwZC9ic0NhMVBQN1VqU0g5L3Y3V3FaRDRJRERJM1R3cE9tK2lQNjlybGh6Ny9QQXp2M2RzeEh3T0JvZWszM3d6M3YvMjJZcUFFVDFzeDROT0dCeERndDU5L1B0eDk0L1V3OGNreGd4dzhjc1FpT2ZMc001WTY5Ni8wZFFhTFVmTXA0TVVZWEtmTjc1SFhqQVVEaHE2Kytxb0Y2dGFxVldFbXpxQ2dsYnEwQklWM2tnR0Iwd3JlOGpvSzZOWTMzNFNibXpaWng3ZlhyQWwzUHZnZ1RBeGR0M3NNVEtlYStnNVUzWVNYRE9tNzNrVkFEcmRhWVhqclZodVBsSnNmR3JMclloTm5NcEJISDBCZXV2WGRkK0hXSzYvWTFKTG5ZeWRPZEUrdUxYdWVUajJJNUFFVmRWM3o5Mmh6MGFjMEV0TnpaUDE2TXdJVDF4Z1hrWXFWR1pBd3dJTzI2Q0k0RVNEZkJ3WUhESno3eWs4R0ZBaXRwTzhlTnIvdnhYaE4rUTdUelpnSnNJd2RPSkJtQUJVTkxJNk5wUVU3L3U2N3RraEpGYnNYQjFHTkoyMm0zM2tubFVoS284b2lmZDZQcGxWYUtaMUxzVjhCczBoL2pRSFNQY2JNd2VsZllteXFtaTN5ano2eTcyUkx4UUFQOHFLVnVGZ1JicDQrSFFaajFNbHhyaWY0S0VCWkMzVG94VFVBUy9jSUNBc2VVN1Y3VVVvUndWc2JLeUJzQXJhc2lQMndSdGl2S2daNG9iMWxpejB3MU5kbnVjNTFIM1hnaVRDUjE4QTNObTRNd3c2SzZxVFByYlZyTy9kaW4zYXRXeXJUUFJhcXJzVm5WQkM4WkNDWmlNOFB2dldXUFpzTUFNOG1SVWZ0a3ljdDhsd1R2RGVCQWFhZnRVRkVXQmQwWnVhN2NHamtxYWZTL3NDMG16RUhhOFVnaXBuR0NDSmRjK0M4dFQwb211ZmRpZ0dtbHR4WEo4dmduZE9rRnFEMDI4eHZkdnhtVVpWU0NtRGdGN3Q1VDU4VUE5Mm41ak11NGg3UGFxMTVDWjZxUTZBbXZ6aGw3OE5aTVVCMFdPVTJxSXU0b3A2TFJjbXVtZElqVXpMUVBVcWpoUWpobjJlOUViVGZ2L3FxQ0M3eEhYaGFNb1IzTDEyNmxCbUlGNGtRRC9sMFVkN244RTNnRXRPTUFmcTJXY1JBL013QjBLOEZpVVVzZU9UQlUvU2pPQkh3L3ZuejU1Y05BRXduMTQ4ZXM1UXd5SWJJODd4Rm5vRXh3VHFJeG0ybmRrQ2FBYUJ6QWNhUjVPZFlwbGtyNmtzcHBHajdWbUpqWmF6S0RHQ0FtbnpqN2JjN0cxVUR2RVRkWjFBcURQOW1jRkRqMkZFeEVNRms0SSs0NEVnVGlUTVcxeW1GN081Nmg3d20ya0F6QS9UcjRaVSttTDk4dVcvWkFHbGlwVEZPRFMrWERQQ2NQays4OWxwbjBQajg1SlVydGhHbHRIQ3BSWVVCdnJRdmtESVlTSDFGRVZVZjhhbXBaUU9jdlJoamZNTUdTNTlLRlFLWVNzTGdiTnVQbWdGK2pIZ1lMOUtpYVgzb3BObDBEd01HbmtVZWVCWThzL3I5dVhQMkhMTmJNUUFZMnorZFRaODVVd0gyMFpmNEpaYWlIald5Y3FYQkU1a0pOc0s0aUhVUGFBQkpFV1lsdjBjcUFzVzdIaHhaMnNSeE1DQjRuaU4xYXdiUTVMWnQxakdiandjdWlmVkNKQUN6VHJzQVdxaDg1NTZrVXl6UDhCMFlxUVlmVTFNbllVdWJhUHppeFlzR3pwaVZHY2pCeUU5ZXBFYVQzL2w5aEdtSklxQUtrNnZwU0tDV2RhQmZiRGs0bFl3RkMveFA4YWNzMEFTQmRqaTJ4UmxBWEtOZTIzRWhUakVMdlBKNzFZa2FYNE9PY0VBelE1TGdVNVhoendPbmUvdjJwZkV3SUhEU2k3TEpid05tVFNZcUJqeTROMEprMlowdDEyUEg5dU9iMzZzTjRCTHd0SUwyRWFmMWFjSVppQlNaMkxuVDloTkxxYU5IN1pESXVCeWpsVzRHSDFNTmVOckdGTXBGQkc4ZS9yRHo2Nmk3OERERGIxYU95QjZlWnkxdDNGRllBanB2MGRVdnoxa0JFRFRDV04vWFgxdkp4QURRRXZBMUE3Mk1LRjBZbEttOGZ1aDlHeXp0b2xGc2hLd1ovWlltSmRpd3ZEaEpFbWxFMU8yRTJuMmZ2a2lYL3VQSERWcmdnT2FSTHhvb1FhdE5jb3VWeUtsakhRdUltdVZyQkpQSWEvOWQ0dG1yTzNhRUh3OGZ0bHdIbUNyRERpdkFsTy94QjR5dVNSejVINWxDVGZCZVdxd3lwQ2dSdlpMSVpTRFJ3T0NnaWVjVkRGcEpzRjZBNjNNeUFLRGFHbmhVTDNCYTVUalNRa1Y1cm52WjMva08xZ3U0UEYyUTRBbEVaUVlFbmtlZUt0UlU0L05LZy9JcWt4OEpKUDB6VjRIdWJsQUczZ01lWVlDMlprRGdncytoVTRYcGl1K29aTUFiRWJSYUQ5NkJYOTZjZXNFcjh2cGNNZkFvZUVtd0F2YzFYdktuU0s4NitITE9HM2dCM3Y2UDZnS3J4UVRYaXdieURVcXBvcWpMZ0lkSEFLck4xVFBmSXpTUkwxV2FFcnhhRm4vTmdBZjNLbTFLT1R6ZmMzQ1U1N3VpVGl2UWtwb2lUeXRWREpUQWdiUElad1lFRDJBVHVJQ2JCSlRhWEwzZ3VWY3prSU1yYlpBSHorSHoxZ3M0dFFhcXlFY2crL2M1U3hzdFRyOUkxUTRNRENab3IwWURBczl6SGxXaTMzT3hsdk1lS0xVbCtlaVQ1NTIybWpwU01zQ0h4MU1Id3o4Y2VIeTdFaFJ6NVFBQUFBQkpSVTVFcmtKZ2dnPT0ifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMy0wNy0yMCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxMDAwMCwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJBQ1MgRklETyBBdXRoZW50aWNhdG9yIENhcmQiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlUyRjEwMDAyMDIzMDcyMDAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIzLTA3LTIwIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEwMDAwfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIzLTEwLTAzIn0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiNzFlZGU4YjU2NDU0ZWZlY2ViNjVjMDljYTU5MWMwN2JiZTQ4MDcyYSJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyI3MWVkZThiNTY0NTRlZmVjZWI2NWMwOWNhNTkxYzA3YmJlNDgwNzJhIl0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IDUgU2VyaWVzIHdpdGggTkZDIChDb25zdW1lciBQcm9maWxlKSJ9LCJkZXNjcmlwdGlvbiI6Ill1YmlLZXkgNSBTZXJpZXMgd2l0aCBORkMgKENvbnN1bWVyIFByb2ZpbGUpIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTcyOCwicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoyfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCIsInJlbW90ZV9oYW5kbGUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURTakNDQWpLZ0F3SUJBZ0lVUjM4bXEyNlNmMnN6VlYyQmRHNldFTjdrdVdVd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVJZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU5ZMFdiOW9Qb1JvS29ReVdQYUpwejExdnJXVGc2elR0bU5qMlZvS1JueXZLR1JxcHpiODN3NWw2WUE5NlVZa1lCRFFQMGlsTzJEUGU2d1dxVlI1ekRmUnpkY0g4YmgrTDdkR0d2YWU2aFJUWmhrRmtDcFhEczRIY2NrbnJEZjhGQ2xKN0hlMzlKZjQyL0cxUW0yeno5V1dtclBYdGdpSy94MDVHanNRZkd1REcxemY1UVRVVWllOGx3eW1LM1RmZE92TmVlSkFBUGUycG43SXRmUmIrclZyTldpRHpsUm4ydk5uWjJ3UG80d0gvV0o2ZGhYWkcrck1XVCthNkJvY2cxVWZJdzZrZHVuRzRiVHBaenN2YWNGWXlSMG1wZitEZU9ucFNXQW15d0pXSHZUbGYyWVh4RnllWGNUQUNkUWxjTU5HSjJWaFpRNDh4dFA1L1JCUC84a0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ2h5NDJva2lxY1RTMWlxYS9IUldqa0JuNEgvTUI4R0ExVWRJd1FZTUJhQUZPcTNRcENlREh0a2V0dFVmQU82ZkU2ZjJLRmhNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUFuK1JISVBidE1FRE5kVDFnOEgvUml0QWtVZExnQXQxdFdHV25sajlrbmJ2NC80R2xYN0M5cDQ1ZWZQTzkvYVpMNk9WMVhSS0JpNkttdEJXNUs3bnVZRW5NeC81QnFCU2JMVDdyaGR1QzQ5VEJlTWI5UEhkWHNUbFNWTlllZnIxZEdpZHI0ajB4VkJRTGIxcmtuREFiZFdEektmdm5heUtPOEZyd2U3SHg4NDNNRy9ySitjMFhydVV2YmZWVENITGlJV2hNN29ORGhMOHhvYjZ4VW85S0xLY1NMK0l0WXNPMy85V2I4UTlHanNxTDRGWHNEY0cxU2FZaDdLcGZ1TW1PaXhxekpaTzJuSWljUFlSZzFJMlN1aVVmWU83MHRtZEhjYmwra1NRbVNZdDdycTR2aUlMZzJHeDNqOXJJVHVXVGpiYVVhU1NReGdPbU1TSHV5ek1BQyIsIk1JSURTRENDQWpDZ0F3SUJBZ0lVRHFFUncrNFJuR1NnZ3hnVWV3SkZFUERSWjNZd0RRWUpLb1pJaHZjTkFRRUxCUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURJN1huSCtadkR3TUNRVThNOFplVjVxc2N1Ymx2VllhYVJ0M1liYXhuOWdvZEx4NXN3SDBsWHJkZ2poNWg3RnBWZ0NnWVlYN0U0YmwxdmJ6VUxlbXJNV1Q4TjNXTUdVZThRQUpiQmVpb1Y3Vy9FK2hUWlAvMFNLSlZhM2V3S0JvNlVMZU1uZlFaRHJWT1JBazh3VExxMnY1TGxqNXZNajdKdE9vdEthOUo3bkhTOGtMbXpYWFNhajBTd0VQaDVPQVpVVE5WNHpzMWJ2b1RBUVFXckw0L0o5UXVLdDZXQ0ZFNW5VTmlSUWNFYlZGOG1scUsyYngyejZva1ZsdHlEVkxDeFlicFVURUx2WTF1c1IzRFRHUFVvSUNsT200Y3Jwd25EUkxWSHZqWWVQR0JCLy9wRXl6eEEvZ2NTY3hqd2FIMVpVdzliblNiSHl1cktxYlRhMUt2akFnTUJBQUdqWmpCa01CMEdBMVVkRGdRV0JCVHF0MEtRbmd4N1pIcmJWSHdEdW54T245aWhZVEFmQmdOVkhTTUVHREFXZ0JUUzd1OWFJbzA2YlZ3amx6M3loZFVtOFNWN2tqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQTRHQTFVZER3RUIvd1FFQXdJQmhqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFxUWFDV014VEdxVlZYN1NrN2trSm1VdWVUU1lLdVU2K0tCQlNnd0lSbmx3OUs3SGUxSXB4WjBoZHdwUE5pa0tqbWN5RmdGUHpoSW13SEpneHh1VDkwUHczdllPZGNKSk5rdERnMzVQWE9melNuMTVjRkF4MVJPMG1QVG1JYjhkWGlFV09wem9YdmR3WERNNDFaYUNEWU1UN3c0SVF0TXl2RTd4VUJacTJianRBbnEvTkRVQTdiZTRIOEgzaXBDKy8rTktsVXJjVWgrajQ4SzY3V0kwdTFtNkZlUXVlQkE3bjA2ajgyNXJxRHFzYUxzOVRiN0tBSEF3OFBtcldhTlBHMmtqS2VyeFBFZmVjaXZsRmF3cDJSV1p2eHJWdG4zVFYyU0J4eUNKQ2tYc05EMDVkQ0VyVkhTSklzK0JkdFRWTlk5QXd0eVBtbnliMHY0bVNUenZXZHc9PSIsIk1JSURTRENDQWpDZ0F3SUJBZ0lVVWNtTVh6UklGT2dHVEswVGIzZ0V1Wllaa0JJd0RRWUpLb1pJaHZjTkFRRUxCUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JCSURFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURtNTU1YldZOVdXK3RPWTBySVdIbGRoK2FOYW5vQ1pDRmg3R2szWVpyUW1QVXcwaGtTRzZxWUhRdFArZlp5UzMzVkVydmcrQlFxbm11bWdOaGZ4RnJrd0VaRUxlaWRCY0M4QzRBZzRucXFpUFdwenN2STE3TmN4WWxJbkxOTEZjWlkvK2dPaU42Wk9UaWhPNS92QlpNYmo5cmlhQWNxbGlZbU5HSlBnVGNNR2FFQXlNekVNTnkybm02RXArcGpQNWFGNmdpMjF0L1VRRnN1SjFqMlJqL3luTS9TZFJ0K2VjYWw1T1lvdHhIa0ZiTDl2dnYyQTJPdjVJVFpDbHc0Yk9TOW5weXBRaW1PWjVRQVl5dG1ZYVFwV2wvcE1ZejZ6U2o4UnFrVkRORUpHcU5mVEtBMml2TFl3WDZsU3R0TVBhcGcwSjg0bDlYMHZvVk4vRnBTNFZDVkFnTUJBQUdqWmpCa01CMEdBMVVkRGdRV0JCUWdLRkFoRzZSYVcraFR5NTJkeGVUOGJDOTZIekFmQmdOVkhTTUVHREFXZ0JUUzd1OWFJbzA2YlZ3amx6M3loZFVtOFNWN2tqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQTRHQTFVZER3RUIvd1FFQXdJQmhqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFZTXpnTHJKTElyME9vdlFuQVpyUklHdWFiaUhTVUtTbWJMUldwUmtXZUF0c0NoREVIcFhjSi9iZ0ROS1lXb0hxUTh4UlVqQjRDeWVwWWV2YzNZbHJHOG83ekh4cGZWY2FvTDVTZXVKa3pIeEtuNGJUYVNwOStNdndhbW5wNjRrWk1pTmJGTGtuZlA5a1lLb1JIa01XaGVSSjFVc1AxejRTY21rQ2VJTGZzTXM2dnFvdnFqV0NsRnNKcEJjc2x1WUhXRjdiQkoxbjRSd2crQVRFb3BZNElnR3Y2WnZ3YytBOXIrQVQyaHFwb1NrWW9BbCtBTll3Z3NsT2Y5c0plMFYrVEE5WVkvVWxhQm1QUFRkMC8vcjl3dmNlUFdaa1BqS29BQy96VU5oZkRiaDRMVjhHSHMzbHlYMlhvbUwvTE5jOEpZenlJYURFaEdRdmVvUGhoL3RyMWc9PSIsIk1JSURTakNDQWpLZ0F3SUJBZ0lVVG5iYkdJUjJOSHZ6cUlLRkFlUXdHMVhCaXMwd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JCSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVFZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU9zWGozazA0QmFuNFRZZHRaS3FEL09QSnh5RHlhUG1DQlVGVWlhWklnVHRlWm5qM1gyNURoZ3BaWlhzQzREMHlkSWNybEE2d05VSW5PUkwvTDl6QmJURUlNQVZNR282ZzdVS0FtYjJNRjZBSGJuaFlKZDllaWt1cFZOV1NoSE5ZTmM0R0JkTzFZTjZBZlVxdkpoSGJlM1Y0U05NUG1CUkVLSlBWejdUaHdnbWdnVGU4V3MySzAvd3NxdjJ3U0U3cGJDQnNVWmhJWDUxYlpNM3BxRHdKUFRtUkZFdnQwLzZ0RzVlTzhGM2oxNE9YcWZFaG1qbjFWdnhLRFlRT0xaQXhDd3dnQzBQNENkZld2M3k4UFNSOEkzNTRoTzFZK0d6Tmp2SXFYMzhOS0x5d3VJWUhGZXJPeE5seEVNQnZGaFlCdVJ1WUFra2dVYVBxTjZVQmhzSUxyc0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ0NvUkhoaXlObmJuWFJXSUw2WkJYb0JYOVlUTUI4R0ExVWRJd1FZTUJhQUZDQW9VQ0VicEZwYjZGUExuWjNGNVB4c0wzb2ZNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUNRRmFmSkkxLzVXZzlDRUVpbUUxUlA1NFJnUXdUTlRPT1FzTEFDVGUrckl0bEZRekM5WkRoclY4Mjh5WDdqenkrQUFzcDNpeks3VDF0aDJkbDdtK3R1MHN3MlBhL29sYzAybnQ2UHlJdzM0OGdhSHpoSTErMEtFNDVxeHZGRGVMMmxNeGJQZkNZdnlFRWFZemppUUVMVTU5NTFwWEdXeUtNYS80Zkx0TytaS09YaE11VmVxNHJYRFBJNTRXNkpIT2lBYWlLZGl3KzVlM2Mya3QvakZJUXRNNnZNWGc5TE5GemRqRVROdDIwVlg5UWV2UnBGWmZ1Y01HOXdDYVFEb0ZsUHpwVE1KS2hQZXYvaW1KbVpZaEtmcjBsTGNlbXRxakl4TEFvcVpkT1lmSEJnNit2QWNkUEkvaWF1R3BVQXY3WCtVS05tRHdqWjJCYUg0c0x3aEIybSIsIk1JSURSekNDQWpHZ0F3SUJBZ0lVZXg5blQ5dndaTlhTNDgzTGRpWUdmdzJTalNvd0N3WUpLb1pJaHZjTkFRRUxNQzR4TERBcUJnTlZCQU1NSTFsMVltbGpieUJCZEhSbGMzUmhkR2x2YmlCSmJuUmxjbTFsWkdsaGRHVWdRaUF4TUNBWERUSTFNRGd3TVRBd01EQXdNRm9ZRHprNU9Ua3hNak14TWpNMU9UVTVXakFuTVNVd0l3WURWUVFEREJ4WmRXSnBZMjhnUmtsRVR5QkJkSFJsYzNSaGRHbHZiaUJDTWlBeE1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBdTFNZXZueTlkeU85WlVDMzlTb01oTGNSL0RYcnRGL2NpTTEydGNpeTJFWEFaNk1rcml2VnRDZkVWTTlYNklTVEVuQlA2dVNZWW92NnBwdjZPNkpoMk5IbVltNHcrSm5TNFZuQ1BVN21IQU1mVkkyTUdUVE1WT2V3MHhVc0c3c0lTSWtJRFVCbXVrOFlLOWM1emljOSt2RlFHTElrc2RYTzVpVkZJZ05HNTNjR1hENFpMWm9BUGl1MFBFb3p4QXFZSWFJNGd4S2hPQTNTOC9XOG1JV3N1Nm9meWo0R3ZrRkc2WjdreUYzMTA3UDdtd0ZITHJJM0VOYVBXTU9GY1RhR2EwZHcrL3ZWUndqUmNFWkJWc3V1VC84N2NrU3MwYTVwa3QzdlpCbGFZZVQ4cHpTcmVWN21vd2NJTTkwTDJpYUFUbFAwbnhtYUU2bk95VGJvakZWbDJ3SURBUUFCbzJZd1pEQWRCZ05WSFE0RUZnUVVTWEVoM3NhM2J0RHVybTRNTS9DN1MxbFJ1dVl3SHdZRFZSMGpCQmd3Rm9BVTZyZENrSjRNZTJSNjIxUjhBN3A4VHAvWW9XRXdFZ1lEVlIwVEFRSC9CQWd3QmdFQi93SUJBREFPQmdOVkhROEJBZjhFQkFNQ0FZWXdDd1lKS29aSWh2Y05BUUVMQTRJQkFRQjVHYzNoYWZ0cDdoS3NFWnNvK2kvWjVuUnVxZG16RzJXQ2xVb1JVcWJhUHlnbG5KRGpLUi9rZmdPbDZpYmJGL3p0aG0zS21YUTdIY0RJUDJ4TWRHN1UyTDJpbWJKUUhxUGYvaDJIcW9qYjRyWmd1ZSs2VzRrdFNSNWVsUjlMMXJZcUUvU0dZTTRpRUtvVlFTdjdSVDFyeEllV2lLc3cvVnh4aS9RT25zeDNGN3g4MENDWWdCNEUzeVF4OFZUVzQ0MGhURXdUQTFlTUhPaXgzMnRQdHl5SElhOFBWVklmVnBIUUpCYU1WdnY1MDhVRWp3a2JVMnJuamZ6b1NUTlM5QTVqVVE4bUJTdmU5NXJqQjBkbzk4RVUrRHhkQnFYMitINmk1d2xJQ0ZnemhkemNzbmU5aEdLVDZselRYNGNJZEpzclkyK3hsZUswRkZReTZsR0VWTEVlIiwiTUlJRFBqQ0NBaWFnQXdJQkFnSVVYemVpRURKRU9UdDE0RjVuMG82WmYvYkJ3aVV3RFFZSktvWklodmNOQVFFTkJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNWjYvVHhNOHJJVCtFYW9Qdkc4MW9udE1Pby8ybVEyUkJ3SkhTMFFaY3hWYU5YdmwxMkxVaEJaNUxtaUJTY0laZDFSbngxb2Q1ODVoKy9kaEs3aEVtN0pBQUxrS0t0czFmTzUzS0dOTFp1ano1aDN3R25jcjRoeUtGMEc3NGIvVTNLOWhFNW1HTkQ2enFZY2hDUkFIZnJZTVlSREY0WUwwWDRENW5HZHh2cHBBeTZua0VtdFdtTW53TzNpMFRBdWNzcmJFNDg1SHZHTTRyMFZwZ1ZkSnB2Z1FqaVRKQ1RJcStEMzVod3RUOFFESXYrbkd2cGN5aTV3Y0lmQ2t6eUNpbUp1a2hZeTZLb3FOTUtRRWRwTmlTT3ZXeURNVE10MWJ3Q3ZFenB3OTF1K21zVXQ0cmowZWZuTzlzMFpPd2R3TVJEbkg0eGdVbDVaTHdyclBrZkMxLzBDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01COEdBMVVkSXdRWU1CYUFGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFNd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkRRVUFBNElCQVFDM0lXL3NnQjlwWjhhcEpOanh1R29YK0ZrSUxrczB3TU5yZFhML2NvVXZzcmh6c3ZsNm1lUE1yYkdKQnlKMVhucXVCNXNnY1JFTkZ4ZFFGbWEzbWlvOFVwZjFvd00xWnJlWHJKMG1BREcyQnBscWJKbnhpeVlhK1IxMXJlSUZUV2VJaE1OY1pLc0RackZBeVB1RmpDV1NRdkptTldlOW1GUllGZ05oWEpLa1hJYjVIMVhnRURsd2llZFlSTTdWb2xCTmxsZDZwUkZLbFg4dXN0Nk9UTU9lQURsMnhORjBtMUxUaFNkZXVYdkR5QzFnOStJTGZ6M1M2T0lZZ2MzaXJvUmNGRDM1NGc3cktmdTY3cUZBdzlnQzR5aTB4QlRQclk5NXJoNC9IcWFVWUNBL0w4bGRSazZIN1hrMzVEK1dWcG1xMlNoL3hUNUhpRnVoZjR3SmIwYksiXSwiaWNvbiI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsImljb25EYXJrIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwicHJvdmlkZXJMb2dvTGlnaHQiOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJwcm92aWRlckxvZ29EYXJrIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09In0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjYtMDQtMjUiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NzI4LCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ill1YmlLZXkgNSBTZXJpZXMgd2l0aCBORkMgKENvbnN1bWVyIFByb2ZpbGUpIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVMkYxMDAwMjAyNjA0MjUwMDkiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblByb2ZpbGVzIjpbImNvbnN1bWVyIl0sImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjYtMDQtMjUiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NzI4fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI2LTA1LTAxIn0seyJhYWd1aWQiOiIwZGIwMWNkNi01NjE4LTQ1NWItYmI0Ni0xZWMyMDNkMzIxM2UiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjBkYjAxY2Q2LTU2MTgtNDU1Yi1iYjQ2LTFlYzIwM2QzMjEzZSIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJHb2xkS2V5IFNlY3VyaXR5IFRva2VuIn0sImRlc2NyaXB0aW9uIjoiR29sZEtleSBTZWN1cml0eSBUb2tlbiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxMiwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfc3Vycm9nYXRlIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo2LCJtYXhSZXRyaWVzIjowLCJibG9ja1Nsb3dkb3duIjowfX0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUJ2VENDQVdPZ0F3SUJBZ0lDRUFBd0NnWUlLb1pJemowRUF3SXdYekVMTUFrR0ExVUVCaE1DVlZNeEhEQWFCZ05WQkFvTUUwZHZiR1JMWlhrZ1EyOXljRzl5WVhScGIyNHhJakFnQmdOVkJBc01HVUYxZEdobGJuUnBZMkYwYjNJZ1FYUjBaWE4wWVhScGIyNHhEakFNQmdOVkJBTU1CVVpKUkU4eU1DQVhEVEkxTURJeE1USXhNREkwTUZvWUR6SXdOek13TVRNd01qRXdNalF3V2pCZk1Rc3dDUVlEVlFRR0V3SlZVekVjTUJvR0ExVUVDZ3dUUjI5c1pFdGxlU0JEYjNKd2IzSmhkR2x2YmpFaU1DQUdBMVVFQ3d3WlFYVjBhR1Z1ZEdsallYUnZjaUJCZEhSbGMzUmhkR2x2YmpFT01Bd0dBMVVFQXd3RlJrbEVUekl3V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVM2blR0SUl1YVV4dlh6cDBJQmtlSXprbVF5S1VaNnlxdldGa3JRZEI3SEVnSm42NjRNc3djNnI0V1NMNkRyNzNkb0xLRVJDVGhmd1NjeStRR1hmZDdob3cwd0N6QUpCZ05WSFJNRUFqQUFNQW9HQ0NxR1NNNDlCQU1DQTBnQU1FVUNJQyswQk16K01lQUU3dlAvdjFuOEEzTnNUTFBMU0YrQnhjaklNbFV4NzNqVEFpRUFvOW1lM3pYTmhqZXBPNEcxdXZ3SUVpOGozUmNoN0pWeERnek5LY0NOZGFvPSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFFQUFBQUJBQ0FZQUFBQ3FhWEhlQUFBQUJHZEJUVUVBQUxHUEMveGhCUUFBQUNCalNGSk5BQUI2SmdBQWdJUUFBUG9BQUFDQTZBQUFkVEFBQU9wZ0FBQTZtQUFBRjNDY3VsRThBQUFBaEdWWVNXWk5UUUFxQUFBQUNBQUZBUklBQXdBQUFBRUFBUUFBQVJvQUJRQUFBQUVBQUFCS0FSc0FCUUFBQUFFQUFBQlNBU2dBQXdBQUFBRUFBZ0FBaDJrQUJBQUFBQUVBQUFCYUFBQUFBQUFBQUdBQUFBQUJBQUFBWUFBQUFBRUFBNkFCQUFNQUFBQUJBQUVBQUtBQ0FBUUFBQUFCQUFBQVFLQURBQVFBQUFBQkFBQUFRQUFBQUFCYU5zTjBBQUFBQ1hCSVdYTUFBQTdFQUFBT3hBR1ZLdzRiQUFBQ3ltbFVXSFJZVFV3NlkyOXRMbUZrYjJKbExuaHRjQUFBQUFBQVBIZzZlRzF3YldWMFlTQjRiV3h1Y3pwNFBTSmhaRzlpWlRwdWN6cHRaWFJoTHlJZ2VEcDRiWEIwYXowaVdFMVFJRU52Y21VZ05pNHdMakFpUGdvZ0lDQThjbVJtT2xKRVJpQjRiV3h1Y3pweVpHWTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5MekU1T1Rrdk1ESXZNakl0Y21SbUxYTjViblJoZUMxdWN5TWlQZ29nSUNBZ0lDQThjbVJtT2tSbGMyTnlhWEIwYVc5dUlISmtaanBoWW05MWREMGlJZ29nSUNBZ0lDQWdJQ0FnSUNCNGJXeHVjenAwYVdabVBTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM1JwWm1Zdk1TNHdMeUlLSUNBZ0lDQWdJQ0FnSUNBZ2VHMXNibk02WlhocFpqMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzlsZUdsbUx6RXVNQzhpUGdvZ0lDQWdJQ0FnSUNBOGRHbG1aanBaVW1WemIyeDFkR2x2Ymo0NU5qd3ZkR2xtWmpwWlVtVnpiMngxZEdsdmJqNEtJQ0FnSUNBZ0lDQWdQSFJwWm1ZNlVtVnpiMngxZEdsdmJsVnVhWFErTWp3dmRHbG1aanBTWlhOdmJIVjBhVzl1Vlc1cGRENEtJQ0FnSUNBZ0lDQWdQSFJwWm1ZNldGSmxjMjlzZFhScGIyNCtPVFk4TDNScFptWTZXRkpsYzI5c2RYUnBiMjQrQ2lBZ0lDQWdJQ0FnSUR4MGFXWm1Pazl5YVdWdWRHRjBhVzl1UGpFOEwzUnBabVk2VDNKcFpXNTBZWFJwYjI0K0NpQWdJQ0FnSUNBZ0lEeGxlR2xtT2xCcGVHVnNXRVJwYldWdWMybHZiajR4TWpFOEwyVjRhV1k2VUdsNFpXeFlSR2x0Wlc1emFXOXVQZ29nSUNBZ0lDQWdJQ0E4WlhocFpqcERiMnh2Y2xOd1lXTmxQakU4TDJWNGFXWTZRMjlzYjNKVGNHRmpaVDRLSUNBZ0lDQWdJQ0FnUEdWNGFXWTZVR2w0Wld4WlJHbHRaVzV6YVc5dVBqRXlNVHd2WlhocFpqcFFhWGhsYkZsRWFXMWxibk5wYjI0K0NpQWdJQ0FnSUR3dmNtUm1Pa1JsYzJOeWFYQjBhVzl1UGdvZ0lDQThMM0prWmpwU1JFWStDand2ZURwNGJYQnRaWFJoUGdwaTU4Z1NBQUFQVDBsRVFWUjRBZDFiQ1hSVTFSbSs5NzczWmlhTFZDa3Fva0ltRTZFdXAxWkxoVWx3QVJJQ1NHbkxFZWpSZW1vOTFsYU9DNXJKc0xUS3VCS1NBRnFPUzdYYTRqbHRQVkJiOTRVbFVTRUxDQzZ0Vk5Ga0Fpb3FSVVZKSnNrczc5MSsvNTE1eVNTQVpKa1pPRjRQa3pjemQ5NjczM2YvL2I4eWRrd055VmtnSUk2cEpXVnNNUkxndTBieWRkZUgzK0tMeEs0WDNQQ0IwMTFXZDFFbWtSNTljU1B3Z1lCRm9FM1g1NnM1RjljcEFtYXYwVEpCeE5FbElBbDhmbm45dmNaM1Rwbkx1UHdxRThEdForajJSY2IvSm9GMyt4dnVFN3JyUnF2amF3WkRrR1FMMHIrcW8wTUFHVHpPSkdNQmxsL2VzRUk0Y202MHdtMWg0VHpPbVg3SVBaK1FlUldJZzhjcXVIU1gxMWNKWjg3TkFHL2lQZFlpbVpRc281dVNXUUtTd09mN0dpbzBaNDZ2R3p5VFhIY3l6dm0zMVFiWXZwMUxUM25kM2R5UnZjQUt0OFA2cTUwM0lmNE9NL1JsTFJOdGR5b2hYVHRiZVlhZUFwdjZkeG1TQUlBUDNBNjloOWo3NisvZ2p0ekZWb1RBSzRNWEU4NWMzUXEzYmhLZHc2WUZsNVY4cldBR01tTU1NMEJBQWp4OFBjUitpV1prMzlvVGZJNWhodHNhUk9lSkpVMnJ6Z2puK3hzZUxGalljQWtMY091U1FHM2E3VUdhWFE2QngwNENETVQrOTl5UmN5ZkVYa0lTYUpPeDh6a0diTUNXa0d5ZHZMZTZOSVJZNEZFdForalZVSVg5M0JJbHpjdkhiLy9odGR1TTdRK1BqU3FwU01OTEdpV2dHM3krcjM0Uk43SVQ0QlVLRy96ckJyZEtDTHpIMy9BdzdBQ0JqM0ROY1lJVTFvYUNoZlhuRVhnaUlRM1kxUzNUSkFIZDREM2xEWDVtdUpiSmFLZnljWkFIR0x3YzZIem9EU1ljazRMTHhuNE5zYjhmc2NBOHF4UHVrRE1OaTRveHphRkxNN0xmWW5MU3JxcWl0OUlsQ1dtUUFJQ2Z2UmJ4UGJlUTJKUXh3OWtUdkVPQmZ5dW1tY1VFM3UydnUwK0JwMWdBaVFCdEMySUJEZUJqWEhlY0lDVGY2UFkxZmo5ZGtwQmlBaExnMTg0eDgvMzE4NFVqcXhvN3J4Q3BuU2Z3a2ZaL08zU3QrTU9LQy9kN0VBaHBSaTVGZ1hZZ2hNMkhzOUIwK2l0a0RDUVl6cUZ3SGhzOXZycHppSVJVRzhaVUVoRGZlWUIzbHpmY3dEWFhTaGtqOFBpUHhGNkJiOXNoZEdmeGUwdkhmUUdDN29GUjlNVTlnb29GeUUwU1dWRnB4VDdFN21OdFJFS1lKR0dZNUx5bW9LenhyRmNDRTJPcEpDRjFCTXhlSTVqYSticDVRbmY4b1RkNE14SjYxMktSNHFhbDUrK0R0YjlkR05tTEZIaFZDSUhrSURTbTdBQWtHSkpiTjJEM245U3loc1RYcDBod25tZ0pxL1lNZjhPWnFTUWhOUVJRN2c3d0hsLzliN0R6OTJQeFNUdWZEYkVQN1l4eHEzaFgxY1RQbERzMHNtNVQ3akFlR2dNOERTSUJ3aUkwSmkxNUlGamx2Y3pzT0ZBTHo2QVRMMHlSNERySmxLekc3WDk5VEtwSUdEd0JzNlVDN3k3ZmZBM1RIUThwOEl4WlN1d05BdC8rZ2VDaStLUEtDWi9rKytvV01MaEQ1UkVJRk9XRXZZYVVGQjFyTHZvNEVwT1h3ajUwa1FDcGdqbzRoek1yV3B1L2FOUG9WSkF3T0FMV0VIaHV3dFZkSlRUbkk5SlM4UW9RU0VzWVdib1ZiVy9HYnBZMFZZNy9HR252emR6SXFwRFJEc0pHZHVFZzhQU0ZZb1VMR0VYR1BsNVoyR0hsREo5dVJWcGZvM0NaUGlNU2hPRTZoY1gwR3MvQytvTEJrakJ3QWloTW5jUE5Bbi9qbFV6VC95d3RyRmxpNXdFZVFBRytzOFdRV2tuTDhxTGRibC85OVRCa0syRFFBSUhUbkQ0OTkrekFEc2V1Z0x1ek05c3hEWkpRbDB3Q3ZNT3AwbVMxQmVWMW5zR1EwS2VGRVBQSlExbGhXR05FZUpkTExoNlBneWZaSmZBdUhidThtMnR5eXM3cWNTMGVmK08xUWpkV2RhbEdIOEhUODNhd3MySU1VdlpKWUd4N2F5ZzgxUXkzTm5hUkVJVTZHSzdUb0dzMVkzeGIzQU1sb2Q4RUVIaDZHTVIrTHRPMHZ5cWR4UXNLUEFudzRZOWd4VXViS3dxYjh2Mk52NEpWK3lQY0d1SHA4ODdUWkRWMnJPVWtaVVRDdmdjbXRqbTRuQUpKMk5xTGhKRlJZZFhrelcvSUd3Z0ovU0xBQnUvMk4xNkduWCtDUWpiOFE3U0tDN1h6NFQwbVo2VXRsUk4ySXNLN0VpN3RzVGhCQXdCdmswQi9FeVRzckp6UXlrUm9Da0xtN1QxSTBGMTV3bUExK1FzMmord3ZDWDBtd0FhZlg3WjVGcXpYV3JVK2FTbndFRVVOeHVsVEliVFMzWlhlZDBrNkVOSS9IaWNJYy9vaDlzbTRlMXduU0tCNlFVdzNTOHpPdGpjcHVLSTVVRGxTQnplelJJM25sbGRQN3c4SmZTTEFCcC9ucS9zSkU5cVQ4WWpOQkhnNGI4TUo4T0c5c09tbFRjc3UySUhFWmhiazRnbXk1dEFLc3VaOWVrWVBzSWQ3a3lDQnd1aW95WW9SUzd5ZFRBSThqMGNLbzJiMHpmV245cFdFSXk3T0JvL29iWWJnL0NrdThCT3JCL2g5RnJPbUJwY1Yvc2Z0M3p5VFdmSWZhbzQwS2I1UGZYT0RTSUFkZ292OFVwY0dTQWk5SXh6WlNoSXNTQUt1QzJJYXJ4bTFlTnNwZlNIaEd3bXd3WHZLR3FZQnpOTmM2TFNwaVoxM2FGWXM4b1ZnZkNxbHE1Nnl6ZE5ReFBnbkpUS1lrd0N2WXJqRDdlZkFQNGNSSmhMZVh6NzJjeGtWeFRMUzhkOXVFdHBSYThnYXJVVWpOYVBtdjNaRUVnNUxnQTNlWGQ0NFJRcjVMRUpVQVd0T0lvM3FyUU5pSDlrdk5GN2FWT1Y5QTZXdVlpbTBwd0JlUzh6QnpxY0p2RTFiSWlscXVXLzgzbGcwV214Rk90NVRKQ0RFUXZSSmt2QTlZZWdiM1RjMW5reVNRSVRaUDAzK2UyZ0NFTnZUajVDQ1R1TE1laDQ3bndDR29yVU9uVGNqQjVDeHc5V04zMTdnUS8yT3M2Y0IzaUZOSWlnTllwKzg0cVJyVzhSMzMzdlJwM3BNZ29UMlp1N0lJclVUUklMbXlENlRPNnlObzh1MkRXTkV3aUg2alFjVEVFQ1Voc1FtcjZ5K0ZDbm9Pa3JPMWE1S0dETUJBMEJpcjdGTGdoVkZyM3R1MlhxNnhlVXprSWhzZ0kvQ09LWi81NU1Jb0V1YmhQZFhGdTZSRVZFRU94RGttZ0ZjWEpFQTczQjJURVEya1dFa1hMM1BIeHhNUU9JQk1IZ2s3ckhlRVRzRW0xdFJxY1NwZWNnTGV4RFNWeXF2d05EUm9YamdLQTZoV1I0RVpFTmdxS0NCbEYxaXhGZmtpb3I0bW5zdjcyQUNVTW9pVVFsV2V6Y2d0QzloVml6TWhhR0JDQmg3eStLNk1aUUovbXFCcjg1TGJlM21LdTlkeU82V29Qb0RMbFJPbjFFU2JGdFZVRjUvc2RSNExkZGR3eENlSkxMUkxKM0ZPb042akUyZ25FU3BRS0lWYnhOeE1BSDBEVVNGYnR4U05XR1RrR0lxVkNCQ2RvQm9oZkV6VWJYTnNqaC9PYyszYVJ4TkQxWVYzZ0ZMZkJjTUQ1d0NTS0RpUmdaR0YzallJZXo1eThvT3hjSUlSbGtpSWV2WWJXcDhNcW1ITW9La0FyM0dvUW5BSkZ1M21xcTlyd0RQZExpMmFKd0UwQkFuNFRqQnRIWDUvaTFqNlo2UWhGc1JtQ3dUVHBBQW90Sk5nZzNlNDk4OEVYYm9KZWk5VTVvSWo0aDZ3MGtKMlI0ZVk4VzdLcnk3YUs0eWdyVFFYdU93Qk5BOG00UmdaZUZHcU1NTXN2S0tCQWk3SWtGM1FOL005UVhsRGVmVGZLak5RbGpmRllqVGlRUnNTbm9rb1FzOHZKU1VXZy93S2pLTmhqOURpRHE1ZVdWaGt6MlgxbmVvOFkwRTBBOXNFbHFxaXRhaFpqbERCVUtJQ1dBVEVpUTRqd2ZTOVhubGRUK2crY0ZLYnhuUzFsVWdBYld0MUpOZ0EwSlJkVEpjUHNDVCs0M3ZmQ0lzMzRlY3BMaWw4a2M3N2JtMHJzT05JeEpBUDdSSmFLNHFmQWtiaTNEWGdsTk1rQkNGenVtT29lQmpBOVh2YVQ3SW9sTDNROEtWUzAyT2cvU081Z3hrMklBSVBFVDlSWWk5MFFWZUJXZGhhcVJNb1p6RW5udWs1L1NKQUxxSlRVS3d1dWg1eWMyZmdnUkllRGNKS0hkL2wzTnJQZFh2YVQ0TTQzVklXeC9sOFZLV0tnalE1d01kTmlDS09oR0x2Z2hWTkZDQ1UrU3F5TlNNNG55Tk5jWHVJdEY2Ky9Lc1BoTkFON05KUUw3L0RJejl6NkRuQ1JMd1RrbUM4eVRVQ2RaVDZacm1CNnNMcnpFamJhdXBzb3UzZlZvUS9hNzNzTUdqRGxFQ3hRTjREZUJWV0k0OU1CQ2xSdG9zblpVR0t5ZHM2MjhMclY4RTBNSnNFcG9yQzUrQ0Fid3NUZ0lhRzRpUzQ2VnI1M0JMeWczSURNZlEvSlpLNzFYby9mOU51QVpHUWhmNDhyb3B5TEpld003SEkxUGNtK0lUcUVBSGwwaklsbnEzOUJjOHJhL2ZCTkNQYkJLQ1ZVVlBvdW83VjdYMDhFSlZmYXJhTXQwMWdrdHRRMzU1NHhrMEgrcndDOW5adXJhL0pCUU16MVhsTndyTFlXTW9KN0hCNDJtVW4wVERRcHJUNFlMckJnS2UxallnQXVpSE5na3QxZDQxRU1mTGJSSm9YMVQ5M25DZWhuaGtBMVZ0TVYwMjUzaC9iblcyL3FzL0pEU3RtaDVHLzNDcTRLdzNlSUVJTlFaYk1LT3Arc0pYQmdxZWNBeVlBUG94a2NBUVpHQ0gvNDQ0NlVycTZrQVZjRStRb0txMldTTVJNVzRZaGFvdGRZdEg1b1RuZ0lUbmprU0M0UEc0UFgvQmxrdGhaWjZEcSt2S1JzbjdJQjZoY09mSEZLNlRpZ3ptQUVVOFlTQTBneG5VSUVHbEJvV1RYekxEK0l0cWtQVG9FWFFFVVNtYVJQRTQxZnJiUXdlZTFweTVVK0VxMFVtUmljTVBGRFFoLzBUUnhaS3hjY3lVTGxTV1hvMjN5bFNhRFMxQU5vcG1BUEtjbVpDOFoyMzdNSmlsRDBvQ3VoNU1aU3EweUpxWGUxZERIYTZHWmFhdkVwTFFFZE9Nckh5c2ZiM25kMXRQM3hFNE94S055Vmt3akJzUkxHRWlUeHgvUWZZR080cmY0ejIvQXZPZnBmdkVyVDIrVUpJRkt5UFpyRlNCcDBXbVJnTG9UalFTVFZLMHg2OUJoL2dSaE12MEtRSUd1MVhXc1pQNmhOUXFPOW4zZGs0dUR6MlBPT0hpdUNRd1d4SXNWWDFTSlhjS05qQUFucHdNcW5GenllYWtZdWZWZmZHU0dnbXc3N1oyamtxbFc2cThmMkxSOEc4Um9PQWJhb09oT0JFdldJNUJkTHh1akgvemlMM1Y1NFo0cDVnSjhOVHlJdkMySk1SMTNFSWZtQVpIOG8wNmkyVG1GYWtHSDcrOWVrcEtYM0JRd2o0cjBEZ1BKTndmUHlVQ0RPcWdoT29ZdjJNeHZXUlgxUVdmNWMxLzgzaGhkTDZFYzBQalVPRk50Z20wKzBLcGt4Vzlxcm5TdTVvTUx1dGpoTmRYUkttVmdQaFRKYU5UbmxSVXFSei9BSXQwM0lSbUtlMGtIWS9XRWdYTGN3UXpYM1l2Ymp4NTE3M25mZVhReGFVNFE3QWQ5UVNTQkVTTTFFQUZlRWdRdk11djB3V2VscHRhRzBCMzdCb3dhblJZQ2tXSWVHdmN0VUsxeHBPT3pKalIwSnVhNWlxbFV5UElJVTZTUXF4RGMrTmNrR1NxYmxPMFl4NkNyUWVwTjZqYVkxMzNUdDFGT2lRZ3NUcllhNUlFRkZseDJtTWxLbXMrZ0V1U2hCQzhRODU1bGhsK2NVUlo3YkRtNnFML1dWS2JDdkE3dEt6ak5iVFhyMWZneWJET1VSS1JPdFJKZDBxakJOaFBnU1FFSUdrSWhPaUVDRnBaRlRDSWtBUFl1SzdEVTZHdGtSaWJSdDBlT3Y2Q3pLb0l3ZFZqNVBEak1wcWV3Z3F0TUFNRTBHT0loTnZ4TDJEQlJTNUdTZkZ1ZFVZb3ZnSWNuTXpWNmJ5d1lUbG1VcmVIUHNaY1FmUFZkUnBmMHFnQ3lhdkdEZ2FXNEY5QXdFWGVJOFB0dDZGMlNNRU5XUVFOMWoraVp3LzFvbjRmb0Y5UmJKOEo4UFNzREJGQWowcVFBTEZ1cmk2OEU3cCtCMHJwaVNveXZzVHhHU2pGY1RSeis0am5VbFpGb3Z0OTA4Z2dBYlNNaEM2REJPajRFdE11cFpNOW9HOFJNYXFMREw1a21BQkMyVTBDMUFILzcwQ29nanRjOFA5a0ZGRlN5UERJUEFFRTBDWUJ4aEdTc0FqMWc2VW9tNEdEaENoa2tJU2pRNEJOQW5rRzBJRyt3K0xZZ2IyUFFnZUdaQkQ3TWZJb2NuYzBFRERoL05FRTVmdVBrYVZsYmhrVThIU1A1T3Z1VDlOMDlYOGZQWVlDSlZjNEtRQUFBQUJKUlU1RXJrSmdnZz09IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiRklET18yXzAiXSwiZXh0ZW5zaW9ucyI6WyJobWFjLXNlY3JldCIsImNyZWRQcm90ZWN0Il0sImFhZ3VpZCI6IjBkYjAxY2Q2NTYxODQ1NWJiYjQ2MWVjMjAzZDMyMTNlIiwib3B0aW9ucyI6eyJyayI6dHJ1ZSwiY2xpZW50UGluIjp0cnVlfSwibWF4TXNnU2l6ZSI6MTcwMCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0IjoxNiwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoxMjgsInRyYW5zcG9ydHMiOlsibmZjIiwidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN31dLCJtaW5QSU5MZW5ndGgiOjYsImZpcm13YXJlVmVyc2lvbiI6MTIsIm1heENyZWRCbG9iTGVuZ3RoIjozMiwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjI1Nn19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTAyLTEwIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEyLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IkdvbGRLZXkgU2VjdXJpdHkgVG9rZW4iLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI1MDIxMDAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUHJvZmlsZXMiOlsiY29uc3VtZXIiXSwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wMi0xMCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxMn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTAyLTEwIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEyfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI2LTA0LTEwIn0seyJhYWd1aWQiOiJiOTNmZDk2MS1mMmU2LTQ2MmYtYjEyMi04MjAwMjI0N2RlNzgiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6ImI5M2ZkOTYxLWYyZTYtNDYyZi1iMTIyLTgyMDAyMjQ3ZGU3OCIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJBbmRyb2lkIEF1dGhlbnRpY2F0b3IifSwiZGVzY3JpcHRpb24iOiJBbmRyb2lkIEF1dGhlbnRpY2F0b3IiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZhY2VwcmludF9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGF0dGVybl9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJ0ZWUiXSwiaXNLZXlSZXN0cmljdGVkIjpmYWxzZSwibWF0Y2hlclByb3RlY3Rpb24iOlsidGVlIl0sImF0dGFjaG1lbnRIaW50IjpbImludGVybmFsIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlGM2pDQ0E4YWdBd0lCQWdJUUFmMXRNUHlqeWxHb0c3eGtEalVETFRBTkJna3Foa2lHOXcwQkFRd0ZBRENCaURFTE1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBZ1RDazVsZHlCS1pYSnpaWGt4RkRBU0JnTlZCQWNUQzBwbGNuTmxlU0JEYVhSNU1SNHdIQVlEVlFRS0V4VlVhR1VnVlZORlVsUlNWVk5VSUU1bGRIZHZjbXN4TGpBc0JnTlZCQU1USlZWVFJWSlVjblZ6ZENCU1UwRWdRMlZ5ZEdsbWFXTmhkR2x2YmlCQmRYUm9iM0pwZEhrd0hoY05NVEF3TWpBeE1EQXdNREF3V2hjTk16Z3dNVEU0TWpNMU9UVTVXakNCaURFTE1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBZ1RDazVsZHlCS1pYSnpaWGt4RkRBU0JnTlZCQWNUQzBwbGNuTmxlU0JEYVhSNU1SNHdIQVlEVlFRS0V4VlVhR1VnVlZORlVsUlNWVk5VSUU1bGRIZHZjbXN4TGpBc0JnTlZCQU1USlZWVFJWSlVjblZ6ZENCU1UwRWdRMlZ5ZEdsbWFXTmhkR2x2YmlCQmRYUm9iM0pwZEhrd2dnSWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUNEd0F3Z2dJS0FvSUNBUUNBRW1VWE5nN0Qyd2l6MEt4WERYYnR6U2ZUVEsxUWcySGlxaUJOQ1Mxa0Nkek9pWi9NUGFuczlzL0IzUEhUc2RaN055Z1JLMGZhT2NhOE9obTBYNmE5ZloyalkwSzJkdktwT3l1UitPSnYwT3dXSUpBSlB1TG9kTWtZdEpIVVltVGJmNk1HOFlnWWFwQWlQTHorRS9DSEZIdjI1QitPMU9SUnhoRm5SZ2hSeTRZVVZEKzhNLzUrYkp6L0ZwMFl2VkdPTmFhblpzaHlaOXNoWnJIVW0zZ0R3RkE2Nk16dzNMeWVUUDZ2QlpZMUgxZGF0Ly9PK1QyM0xMYjJWTjNJNXhJNlRhNU1pcmRjbXJTM0lEM0tmeUkwcm40N2FHWUJST2NCVGtaVG16Tmc5NVMrVXplUWMwUHpNc05UNzl1cS9uUk9hY2RyakdDVDNzVEhETi9oTXE3TWt6dFJlSlZuaSs0OVZ2NE0wR2tQR3cvekpTWnJNMjMzYmtmNmMwUGxmZzZsWnJFcGZES0VZMVdKeEEzQmsxUXdHUk9zMDMwM3ArdGRPbXcxWE50QjF4TGFxVWtMMzlpQWlnbVRZbzYxWnM4bGlNMkV1TEUvcERrUDJRS2U2eEpNbFh6emF3V3BYaGFEekxobjR1Z1RuY3hiZ3ROTXMrMWIvOTdsYzZ3ak95MEF2elZWZEFsSjJFbFlHbitTTnVaUmtnN3pKbjBjVFJlOHlleERKdEMvUVY5QXFVUkU5Sm5uVjRlZVVCOVhWS2crL1hSakw3RlFaUW5tV0VJdVF4cE10UEFsUjFuNkJCNlQxQ1pHU2xDQnN0NitlTGY4WnhYaHlWZUVIZzlqMXVsaXV0WmZWUzdxWE1Zb0NBUWxPYmdPSzZueVRKY2NCejhOVXZYdDd5K0NEd0lEQVFBQm8wSXdRREFkQmdOVkhRNEVGZ1FVVTNtL1dxb3JTczlVZ09IWW04Q2Q4cklEWnNzd0RnWURWUjBQQVFIL0JBUURBZ0VHTUE4R0ExVWRFd0VCL3dRRk1BTUJBZjh3RFFZSktvWklodmNOQVFFTUJRQURnZ0lCQUZ6VWZBM1A5d0Y5UVpsbERIUEZVcC9MK00rWkJuOGIya01WbjU0Q1ZWZVdGUEZTUENlSGxDanRIem9CTjZKMi9GTlF3SVNieG10T3Vvd2hUNktPVldLUjgya1YyTHlJNDhTcUMvM3ZxT2xMVlNvR0lHMVZlQ2taN2w4d1hFc2tFVlgvSkpwdVhpb3I3Z3RObjMvM0FUaVVGSlZEQnduN1lLbnVIS3NTaktDYVhxZVlhbGx0aXo4SSs4alJSYThZRldTUUVnOXpLQzdGNGlSTy9GanM4UFJGL2lLejZ5K08wdGxGWVFYQmwyK29kbktQaTR3MnI3OE5CYzV4amVhbWJ4OXNwbkZpeGRqUWczSU04V2NSaVF5Y0UweHlOTis4MVhIZnFuSGQ0YmxzakR3U1hXWGF2VmNTdGtOci8rWGVUV1lSVWMrWnJ1d1h0dWh4a1l6ZVNmN2ROWEdpRlNlVUhNOWg0eWE3YjZObkpTRmQ1dDBkQ3k1b0d6dUNyK3lEWjRYVW1GRjBzYm1aZ0luL2YzZ1pYSGxLWUM2U1FLNU1OeW9zeWNkaXlBNWQ5elpieXVBbEpRRzAzUm9IbkhjQVA5RGMxZXc5MVBxN1A4eUYxbTkvcVMzZnVRTDM5WmVhdFRYYXcyZXdoMHFwS0o0amp2OWNKMnZoc0UvekIrNEFMdFJaaDh0U1FaWHE5RWZYN21SQlZYeU5XUUtWM1dLZHdybnVXaWgwaEtXYnQ1REhEQWZmOVlrMmRETFdLTUd3c0F2Z25FekRITmI4NDJtMVIwYUJMNktDcTlOalJIREVqZjh0TTdxdGozdTFjSWl1UGhuUFFDalkvTWlRdTEyWkl2VlM1bGpGSDRneFErNklIZGZHamp4RGFoMm5HTjU5UFJieFl2bktrS2o5IiwiTUlJRDNUQ0NBc1dnQXdJQkFnSUJBREFOQmdrcWhraUc5dzBCQVFzRkFEQ0JqekVMTUFrR0ExVUVCaE1DVlZNeEVEQU9CZ05WQkFnVEIwRnlhWHB2Ym1FeEV6QVJCZ05WQkFjVENsTmpiM1IwYzJSaGJHVXhKVEFqQmdOVkJBb1RIRk4wWVhKbWFXVnNaQ0JVWldOb2JtOXNiMmRwWlhNc0lFbHVZeTR4TWpBd0JnTlZCQU1US1ZOMFlYSm1hV1ZzWkNCU2IyOTBJRU5sY25ScFptbGpZWFJsSUVGMWRHaHZjbWwwZVNBdElFY3lNQjRYRFRBNU1Ea3dNVEF3TURBd01Gb1hEVE0zTVRJek1USXpOVGsxT1Zvd2dZOHhDekFKQmdOVkJBWVRBbFZUTVJBd0RnWURWUVFJRXdkQmNtbDZiMjVoTVJNd0VRWURWUVFIRXdwVFkyOTBkSE5rWVd4bE1TVXdJd1lEVlFRS0V4eFRkR0Z5Wm1sbGJHUWdWR1ZqYUc1dmJHOW5hV1Z6TENCSmJtTXVNVEl3TUFZRFZRUURFeWxUZEdGeVptbGxiR1FnVW05dmRDQkRaWEowYVdacFkyRjBaU0JCZFhSb2IzSnBkSGtnTFNCSE1qQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQUwzdHdRUDg5by84QXJGdlc1OUkyWjE1NHFLM0EyRldHTU5IdHRmS1BUVXVpVVAzb1dtYjNvb2EvUk1nbkxSSmR6SXBWdjI1N0l6ZEl2cHkzQ2RobCs3MldvVHNiaG01aVN6Y2hGdlZkUHRyWDhXSnBSQlNpVVpWOUxoMUhPWi81RlN1Uy9oVmNsY0NHZmdYY1ZuckhpZ0hkTVdkU0w1c3RQU2tzUE5rTjNtU3dPeEdYbi9oYlZOTVlxL05Id3RqdXpxZCsveDVBSmhoZE04bWdrQmo4N0p5YWhrTm1jclVEblhNTi91TGljRlo4V0ovWDdOZlpURDRwN2ROZGxvZWRsNDB3T2lXVnBtS3MvQi9wTTI5M0RJeGZKSFA0RjhSK0d1cVNWelJtWlRSb3VOald3bDJ0VlppNFV0MEhaYlVKdFFJQkZuUW1BNE81dDc4dyt3ZmtQRUNBd0VBQWFOQ01FQXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QU9CZ05WSFE4QkFmOEVCQU1DQVFZd0hRWURWUjBPQkJZRUZId01NaCtuMlRCL3hIMW9vMktvb2M2ckIxc25NQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUFSV2ZvbFR3TnZsSms3bWgrQ2hUblVkZ1dVWHVFb2syMWlYUW5Db0tqVXNIVTQ4VFJxbmVTZmlvWW1VZVlzMGNZdGJwVWdTcElCN0xpS1ozc3g0bWN1akpVREppNURuVW94OWc2MURMdTM0amQvSXJvQW93NTdVdnRydXp2RTAzbFJUczJROUdjSEdjZzhSbm9OQVgzRldPZHQ1b1V3RjVva3hCRGdCUGZnOG4vVXFnci9RaDAzN1pUbFpGa1NJSGM0MHpJK09JRjFsblA2YUkreHk4NGZ4ZXo2bkg3UGZySHhCeTIyL0wvS3BML1Fsd1ZLdk9vWUtBS1F2VlI0Q1NGeDA5RjlIZGtXc0tsaFBkQUtBQ0w4eDN2TENXUkZDenRBZ2ZkOWZETDFtTXBZam4wcTdwQlpjMlQ1Tm5SZUphSDFaZ1V1ZnprVnFTcjdVSXVPaFduMCIsIk1JSUZSakNDQXk2Z0F3SUJBZ0lJYll3VVJyR21DdTR3RFFZSktvWklodmNOQVFFTUJRQXdRVEVMTUFrR0ExVUVCaE1DVlZNeEZEQVNCZ05WQkFvTUMwRm1abWx5YlZSeWRYTjBNUnd3R2dZRFZRUUREQk5CWm1acGNtMVVjblZ6ZENCUWNtVnRhWFZ0TUI0WERURXdNREV5T1RFME1UQXpObG9YRFRRd01USXpNVEUwTVRBek5sb3dRVEVMTUFrR0ExVUVCaE1DVlZNeEZEQVNCZ05WQkFvTUMwRm1abWx5YlZSeWRYTjBNUnd3R2dZRFZRUUREQk5CWm1acGNtMVVjblZ6ZENCUWNtVnRhWFZ0TUlJQ0lqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FnOEFNSUlDQ2dLQ0FnRUF4QkxmcVYvK1FkM2Q5WitLNC9hczRUeDRtcnpZOEg5Nm9ETXEzSTBnVzY0dGIrZVQyVFp3YW1qUGpsR2poVnRuQktBUUpHOWRLSUxCbDFmWVNDa1R0dUcra1UzZmhReFRHSm9lSktKUGovQ2loUXZMOUNsLzBxUlk3aVpOeWFxb2U1cloramplUkZjVjVmaU15TmxJNGcwV0p4MGV5SU9GSmJlNnFsVkJ6QU1pU3kyUmpZdm1pYTlteCtuL0srazhyTnJTczhQaGFKeUorSG9BVnQ3MFZaVnMrN3BrM1dLTDN3dDNNdXRpekNhYW03dXFZb05NdEFaNk1NZ3B2KzBHVFplNUhNUXhLOVZmdkZNU0Y1eVpWeWxtZDJFaE1RY3VKVW1kR1BMdTh5dHhqTFc2T1FkSmQvenZMcEtRQlkwdEwzZDc3ME8vTmJ1YTJQbHpweXp5MEZmdUtFNG1YNCtRYUFrdnVQamNCdWt1bWo1UnA5RWl4QXFuT0Voc3Mvbi9mYXVHVitPNjFvVjRkN3BENmtoLzl0aStJMjBldjlFMmJGaGM4ZTZrR1ZRYTlRUFNkdWJoakwwOHM5TklTK0xJK0grU3FIWkduRUpsUHFRZXdRY0RXa1l0dUpmenQ5V3lWU0h2dXR4TUFKZjdGSlVuTTcvb1EwZEcwZ2laRm1BN21uN1M1dTA0NnV3QkhqeElWa2tKeDB3M0FKNklEc0J6NFc5bTZYSkhNRDRRNVFzRHlacENBR3pGbEg1aHhJcmZmNElhQzFuRVdUSjNzN3hnYVZZNS9iUUdleXpXWkRiWnZVanRoQjkrcFNLUEtyaEM5SUszMUZPUWVFNHRHdjJCYjBUWE93RjBsa0xnQU9JdWErckY3bktzdTcvKzZxcW8rTnoyc25tS3RtY0NBd0VBQWFOQ01FQXdIUVlEVlIwT0JCWUVGSjNBWjZZTUl0a205VVdycG1WU0VTZllSYXhqTUE4R0ExVWRFd0VCL3dRRk1BTUJBZjh3RGdZRFZSMFBBUUgvQkFRREFnRUdNQTBHQ1NxR1NJYjNEUUVCREFVQUE0SUNBUUN6VjAwUVlrNDY1S3pxdUJ5dk1pUElzMGxhVVp4MktJMTVxbGRHRjlYMVV2YTNST2dJUkw4WWhOSUxnTTNGRXYwQVZRVmhoMEhjdFNTZVBNVFl5UHR3bmk5NGxvTWdOdDU4RDJrVGlLVjFOcGdJcHNiZnJNN2pXTmEzUHQ2NjgrczBRTmlpZ2ZWNFB5L1ZwZnpab3RSZUJBNFhyZjVCOE9XeWN2cEVnak5DNkMxWTkxYU1Zais2UXJDY0RGeCtMbVVtWEZOUEFMSjRmcUVObVMyTnVCMk9vc1N3L1dEUU1LU095QVJpcWNUdE5kNTZsKzBPT0Y2U0w1TndwYW1jYjZkOUV4MSt4Z2hJc1Y1bjYxRUlKZW5tSld0U0taR2Mwamx6Q0ZmZW1RYTBXNTBRQnVIQ0FLaTRIRW9DQ2hUUXdVSEsrNHcxSVgyQ09QS3BWSkVaTlpPVWJXbzZ4YkxRdTRtR2sraWJ5UTg2cDNxNG9mQjRSdnI4TnkvbGlvVHozLzRFMmFGb29DOGs0Z21WQnRXVnl1RWtsdXQ4OXBNRnUrMXo2UzNSZFRuWDV5VGIyRTVmUTQrZTBCUTV2MVZ3U0psWE1iU2M3a3FZQTVZd0gyQUc3aHNqL29GZ0l4cEhZb1dsekJrMGdHK3pyQnJqbi9CN1NLM1ZBZGxudHFseWsrb3Racld5dU9ROVBMTHZUSXpxNndlL3F6V2FWWWE4R0thMXFGNjBnMnhyYVVEVG45enh3MmxydWVGdENmVHhxbEIyQ25wOWVoZWhWWlpDbVRFSjNXQVJqUVV3ZnVhT1J0R2RGTnJIRitRRmxvekVKTFVienhRSHNrRDRvNTVCaHJ3RTBHdVd5Q3FBTlAyLzd3YWozVmpGaFQwK2ovNmVLZUMydUFsb0dSd1lRdz09IiwiTUlJRHhUQ0NBcTJnQXdJQkFnSVFBcXhjSm1vTFFKdVBDM255cmtZbGR6QU5CZ2txaGtpRzl3MEJBUVVGQURCc01Rc3dDUVlEVlFRR0V3SlZVekVWTUJNR0ExVUVDaE1NUkdsbmFVTmxjblFnU1c1ak1Sa3dGd1lEVlFRTEV4QjNkM2N1WkdsbmFXTmxjblF1WTI5dE1Tc3dLUVlEVlFRREV5SkVhV2RwUTJWeWRDQklhV2RvSUVGemMzVnlZVzVqWlNCRlZpQlNiMjkwSUVOQk1CNFhEVEEyTVRFeE1EQXdNREF3TUZvWERUTXhNVEV4TURBd01EQXdNRm93YkRFTE1Ba0dBMVVFQmhNQ1ZWTXhGVEFUQmdOVkJBb1RERVJwWjJsRFpYSjBJRWx1WXpFWk1CY0dBMVVFQ3hNUWQzZDNMbVJwWjJsalpYSjBMbU52YlRFck1Da0dBMVVFQXhNaVJHbG5hVU5sY25RZ1NHbG5hQ0JCYzNOMWNtRnVZMlVnUlZZZ1VtOXZkQ0JEUVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTWJNNVhQbSs5Uzc1UzB0TXFiZjVZRS95YzBsU2JaeEtzUFZsRFJub2dvY3NGOXBwa0N4eExleWo5Q1lwS2xCV1RyVDNKVFdQTnQwT0tSS3pFMGxndmRLcFZNU09PN3pTVzF4a1g1anRxdW1YOE9raFBoUFlsRysrTVhzMnppUzR3YmxDSkVNeENoQlZmdkxXb2tWZm5Ib05iOU5jZ2s5dmpvNFVGdDNNUnVOczhja1JacW5yRzBBRkZvRXQ3b1Q2MUVLbUVGQklrNWxZWWVCUVZDbWVWeUozaGxLVjlVdTVsMGNVeXgrbU0wYUJoYWthSFBRTkFRVFhLRngwMXA4VmR0ZVpPRTNoekJXQk9VUnRDbUFFdkY1T1lpaUFoRjhKMmEzaUxkNDhzb0txRGlyQ21UQ3YyWmRsWVRCb1NVZWgxMGFVQXNnRXN4QnUyNExVVGk0UzhzQ0F3RUFBYU5qTUdFd0RnWURWUjBQQVFIL0JBUURBZ0dHTUE4R0ExVWRFd0VCL3dRRk1BTUJBZjh3SFFZRFZSME9CQllFRkxFK3cya0QrTDlIQWRTWUpob0lBdTlqWkN2RE1COEdBMVVkSXdRWU1CYUFGTEUrdzJrRCtMOUhBZFNZSmhvSUF1OWpaQ3ZETUEwR0NTcUdTSWIzRFFFQkJRVUFBNElCQVFBY0dnYVgzTmVjbnp5SVpnWUlWeUhiSVVmNEttZXF2eGd5ZGtBUVY4R0s4M3JaRVdXT05mcWUvRVcxbnRsTU1VdTRrZWhETEk2emVNN2I0MU41Y2RibElaUUIybFdIbWlSazlvcG16TjZjTjgyb05MRnBteVBJbm5naUszQkQ0MVZITVdFWjcxakZoUzlPTVBhZ01SWWp5T2ZpWlJZenk3OGFHNkE5K01wZWl6R0xZQWlKTFF3R1hGSzN4UGtLbU5FVlg1OFN2bncyWXppOVJLUi81Q1lyQ3NTWGFRM3BqT0xBRUZlNHlIWVNrVlh5U0duWXZDb0NXdzlFMUNBeDIvUzZjQ1pka0dDZXZFc1hDUysweXg1RGFNa0hKOEhTWFBmcUlibG9FcHc4bkwrZS9JQmNtMlBON0VlcUpTZG5vRGZ6QUlKOVZOZXArT2t1RTZOMzZCOUsiLCJNSUlFQURDQ0F1aWdBd0lCQWdJQkFEQU5CZ2txaGtpRzl3MEJBUVVGQURCak1Rc3dDUVlEVlFRR0V3SlZVekVoTUI4R0ExVUVDaE1ZVkdobElFZHZJRVJoWkdSNUlFZHliM1Z3TENCSmJtTXVNVEV3THdZRFZRUUxFeWhIYnlCRVlXUmtlU0JEYkdGemN5QXlJRU5sY25ScFptbGpZWFJwYjI0Z1FYVjBhRzl5YVhSNU1CNFhEVEEwTURZeU9URTNNRFl5TUZvWERUTTBNRFl5T1RFM01EWXlNRm93WXpFTE1Ba0dBMVVFQmhNQ1ZWTXhJVEFmQmdOVkJBb1RHRlJvWlNCSGJ5QkVZV1JrZVNCSGNtOTFjQ3dnU1c1akxqRXhNQzhHQTFVRUN4TW9SMjhnUkdGa1pIa2dRMnhoYzNNZ01pQkRaWEowYVdacFkyRjBhVzl1SUVGMWRHaHZjbWwwZVRDQ0FTQXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRU5BRENDQVFnQ2dnRUJBTjZkMStwWEdFbWhXK3ZYWDBpRzZyN2QvK1R2Wnh6MFpXaXpWM0dnWG5lNzdadEo2WENBUFZZWVl3aHYydkxNMEQ5L0FsUWlWQkRZc29IVXdIVTlTMy9IZDhNK2VLc2FBN1VnYXk5cUs3SEZpSDdFdXg2d3dkaEZKMitxTjFqM2h5YlgyQzMycVJlM0gzSTJUcVlYUDJXWWt0c3FibDJpL29qZ0M5NS81WTBWNGV2TE90WGlFcUlUTGRpT3IxOFNQYUFJQlFpMlhLVmxPQVJGbVI2allHQjB4VUdsY21JYllzVWZiMThhUXI0Q1VXV29yaU1ZYXZ4NEE2bE5mNEREK3F0YS9LRkFwTW9aRnY2eXlPOWVjdzN1ZDcyYTlubVl2TEVIWjZJVkRkMmdXTVpFZXdvK1lpaGZ1a0VIVTFqUEVYNDRkTVg0LzdWcGtJK0VkT3FYRzY4Q0FRT2pnY0F3Z2Iwd0hRWURWUjBPQkJZRUZOTEVzTktSMUV3UmNiTmh5ejJoL3Qyb2F0VGpNSUdOQmdOVkhTTUVnWVV3Z1lLQUZOTEVzTktSMUV3UmNiTmh5ejJoL3Qyb2F0VGpvV2VrWlRCak1Rc3dDUVlEVlFRR0V3SlZVekVoTUI4R0ExVUVDaE1ZVkdobElFZHZJRVJoWkdSNUlFZHliM1Z3TENCSmJtTXVNVEV3THdZRFZRUUxFeWhIYnlCRVlXUmtlU0JEYkdGemN5QXlJRU5sY25ScFptbGpZWFJwYjI0Z1FYVjBhRzl5YVhSNWdnRUFNQXdHQTFVZEV3UUZNQU1CQWY4d0RRWUpLb1pJaHZjTkFRRUZCUUFEZ2dFQkFESkw4N0xLUHBIOEVzYWhCNHlPZDZBekJoUmNrQjRZOXdpbVBRb1orWWVBRVc1cDVKWVhNUDgwa1dOeU9PN01IQUdqSFpRb3BESDJlc1JVMS9ibE1WZ0Rvc3pPWXR1VVJYTzF2MFhKSkxYVmdnS3RJM2xwamJpMlRjN1BUTW96SStnY2lLcWRpMEZ1RnNrZzVZbWV6VHZhY1BkK21TWWdGRlFscTI1emhlYWJJWjBLYklJT3FQakNEUG9RSG15Vzc0Y054QTloaTYzdWd5dVYrSTZTaEhJNTZ5RHFnKzJEelpkdUNMenJUaWEyY3l2azAvWk0vaVp4NG1FUmRFci9WeHFIRDNWSUxzOVJhUmVnQWhKaGxkWFJRTElRVE83RXJCQkRwcVdlQ3RXVllwb056NGlDeFRJTTVDdWZSZVlObnlpY3Nia3FXbGV0TncrdkhYL2J2Wjg9IiwiTUlJRGxqQ0NBbjZnQXdJQkFnSVFDNU1jT3RZNVorcG5JNy9EcjVyMFN6QU5CZ2txaGtpRzl3MEJBUXNGQURCbE1Rc3dDUVlEVlFRR0V3SlZVekVWTUJNR0ExVUVDaE1NUkdsbmFVTmxjblFnU1c1ak1Sa3dGd1lEVlFRTEV4QjNkM2N1WkdsbmFXTmxjblF1WTI5dE1TUXdJZ1lEVlFRREV4dEVhV2RwUTJWeWRDQkJjM04xY21Wa0lFbEVJRkp2YjNRZ1J6SXdIaGNOTVRNd09EQXhNVEl3TURBd1doY05Nemd3TVRFMU1USXdNREF3V2pCbE1Rc3dDUVlEVlFRR0V3SlZVekVWTUJNR0ExVUVDaE1NUkdsbmFVTmxjblFnU1c1ak1Sa3dGd1lEVlFRTEV4QjNkM2N1WkdsbmFXTmxjblF1WTI5dE1TUXdJZ1lEVlFRREV4dEVhV2RwUTJWeWRDQkJjM04xY21Wa0lFbEVJRkp2YjNRZ1J6SXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFEWjV5Z3ZVajgyY2ttSWt6VHorR29lTVZTQW42MVVRYlZIMzVhbzFLK0FMYmtLejNYOWlhVjlKUHJqSWd3cnZKVVhDek8vR1UxQkJwQUF2UXhORVA0SHRlY2NiaUpWTVdXWHZkTVgwaDVpODl2cWJGQ01QNFFNbHMrM3l3UGd5bTJoRkV3YmlkM3RBTEJTZksrUmJMRTRFOUhwRWdqQUFMQWNLeEhhZDNBMm02N09lWWZjZ25EbUNYUndWV212bzJpZnY5MjJlYlB5blhBcFZmU3IvNVZoODhsQWJ4M1J2cE83MDRncXU1Mi9jbHBXY1RzLzFQUFJDdjRvNzZQdTJabXZBOU9QWUxmeWtxR3h2WW1KSHpETnc2WXVZak91RmdKM1JGcm5nUW84cDBRdWViZy9CTHhjb0lmaEc2OVJqczNzTFByNC9tM3dPbnlxaStSbmxUR05BZ01CQUFHalFqQkFNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdEZ1lEVlIwUEFRSC9CQVFEQWdHR01CMEdBMVVkRGdRV0JCVE93MHE1bVZYeXVOdGd2NmwrdlZhMWx6YW4xakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBeXFWVmpPUElRVzVwSjZkMUVlODhoalp2MHAzR2VEZ2RhWmFpa21rdU9HeWJmUVRVaWFXeE1UZUt5U0hNcTJ6Tml4eWExcjlJMGpKbXdZckE4eTg2NzhEajFKR0cwVkRqQTl0emQyOUtPVlB0M2liSHRYMnZLMExSZFdMalNpc0N4MUJMNEduaWxtd09SR1lRUkkrdEJldjRlYXltRytnM05KMVR5V0dxb2xLdlNuQVdoc0k2eUxFVGNEYll6KzcwQ2pUVlcwejlCNXlpdXRrQmNsenpUY0hkRHJFY0RjUmp2cTMwRlB1SjdLSkJEa3pNeUZkQTBHNERxczBNam9tWm1XendQREN2T045dnZLTytLU0FucTNUL0V5SjQzcGRTVlI2RHRWUWdBKzZ1d0U5VzNqZk13MytxQkNlNzAzZTRZdHNYZkp3b0loTnpiTThtOVlvcDV3PT0iLCJNSUlDSGpDQ0FhU2dBd0lCQWdJUllGbEo0Q1l1dTFYNUNuZUtjZmxLMkd3d0NnWUlLb1pJemowRUF3TXdVREVrTUNJR0ExVUVDeE1iUjJ4dlltRnNVMmxuYmlCRlEwTWdVbTl2ZENCRFFTQXRJRkkxTVJNd0VRWURWUVFLRXdwSGJHOWlZV3hUYVdkdU1STXdFUVlEVlFRREV3cEhiRzlpWVd4VGFXZHVNQjRYRFRFeU1URXhNekF3TURBd01Gb1hEVE00TURFeE9UQXpNVFF3TjFvd1VERWtNQ0lHQTFVRUN4TWJSMnh2WW1Gc1UybG5iaUJGUTBNZ1VtOXZkQ0JEUVNBdElGSTFNUk13RVFZRFZRUUtFd3BIYkc5aVlXeFRhV2R1TVJNd0VRWURWUVFERXdwSGJHOWlZV3hUYVdkdU1IWXdFQVlIS29aSXpqMENBUVlGSzRFRUFDSURZZ0FFUjBVT2x2dDlYYi9wT2RFaCtKOEx0dFY3SHBJNlNGa2M4R0l4TGNCNktQNGFwMXl6dHN5WDUwWFVXUHJSZDIxRG9zQ0haVFFLSDNyZDZ6d3pvY1dkVGFSdlFaVTRmOGtlaE92Um5rbVNoNVNIRERxRlNtYWZuVm1UVFpkaEJvWktvMEl3UURBT0JnTlZIUThCQWY4RUJBTUNBUVl3RHdZRFZSMFRBUUgvQkFVd0F3RUIvekFkQmdOVkhRNEVGZ1FVUGVZcFNKdnFCOG9oUkVvbTNtN2Uwb1BRbjFrd0NnWUlLb1pJemowRUF3TURhQUF3WlFJeEFPVnBFc2x1MjhZeHVnbEI0WmY0Ky8yYTRuMFN5ZTE4Wk5QTEJTV0xWdG1nNTE1ZFRndURuRnQyS2FBSkppRnFZZ0l3Y2RLMWoxenFPK0Y0Q1lXb2RaSTd5Rno5U084TmRDS29DT0p1eFVuT3h3eThwMkZwOGZjNzRTckwrU3Z6WnBBMyIsIk1JSUNJakNDQWFpZ0F3SUJBZ0lSQUlTcDBDbDdEcldLNS84T2dONTJCZ1V3Q2dZSUtvWkl6ajBFQXdNd1VqRWNNQm9HQTFVRUF3d1RTMlY1SUVGMGRHVnpkR0YwYVc5dUlFTkJNVEVRTUE0R0ExVUVDd3dIUVc1a2NtOXBaREVUTUJFR0ExVUVDZ3dLUjI5dloyeGxJRXhNUXpFTE1Ba0dBMVVFQmhNQ1ZWTXdIaGNOTWpVd056RTNNakl6TWpFNFdoY05NelV3TnpFMU1qSXpNakU0V2pCU01Sd3dHZ1lEVlFRRERCTkxaWGtnUVhSMFpYTjBZWFJwYjI0Z1EwRXhNUkF3RGdZRFZRUUxEQWRCYm1SeWIybGtNUk13RVFZRFZRUUtEQXBIYjI5bmJHVWdURXhETVFzd0NRWURWUVFHRXdKVlV6QjJNQkFHQnlxR1NNNDlBZ0VHQlN1QkJBQWlBMklBQkNQYUkzRk8zejViQlFvOGN1aUVhczRIanFDdEcvbUxGZlJUME1zSXNzUEJFRVU1Q2ZidDZzSDV5T0F4cUVpNVFhZ3BVMXlYNEh3bkdiN090QllwRFRCNTd1SDVFY3ptMzRBNUZOaWpWM3MwL2YwVVBsN3piSmNUeDZ4d3FNSVJxNk5DTUVBd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBT0JnTlZIUThCQWY4RUJBTUNBUVl3SFFZRFZSME9CQllFRkZJeXV5ejdSa09iM05hQnFRNWxadUEwUWVwQU1Bb0dDQ3FHU000OUJBTURBMmdBTUdVQ01FVGZqUE8vSHdxUmVSMkNTN3AwWldvRC9MSHM2aERpNDIyb3BpZkhFVWFZTHh3R2xUOVNMZGprVnB6MFVVT1I1d0l4QUlvR3l4R0tSSFZUcHFwR1JGaUp0UUVPT1RwLytzMUdjeGVZdVIyemgvODBsUXl1OXZBRkNqNkU0QVhjK29zbVJnPT0iLCJNSUlGV2pDQ0EwS2dBd0lCQWdJUWJrZXB4bHF6NXlERk1Kby9hRkx5YnpBTkJna3Foa2lHOXcwQkFRd0ZBREJITVFzd0NRWURWUVFHRXdKVlV6RWlNQ0FHQTFVRUNoTVpSMjl2WjJ4bElGUnlkWE4wSUZObGNuWnBZMlZ6SUV4TVF6RVVNQklHQTFVRUF4TUxSMVJUSUZKdmIzUWdVakl3SGhjTk1UWXdOakl5TURBd01EQXdXaGNOTXpZd05qSXlNREF3TURBd1dqQkhNUXN3Q1FZRFZRUUdFd0pWVXpFaU1DQUdBMVVFQ2hNWlIyOXZaMnhsSUZSeWRYTjBJRk5sY25acFkyVnpJRXhNUXpFVU1CSUdBMVVFQXhNTFIxUlRJRkp2YjNRZ1VqSXdnZ0lpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElDRHdBd2dnSUtBb0lDQVFETzN2Mm0rK3pzRkRROEJ3WmFiRm4zR1RYZDk4R2RWYXJUelR1a2szTHZDdnB0bmZid2hZQmJvVWhTbnpuRnQrNG9yTy9MZG1nVXVkK3RBV3laSDhRaUhaLytjbmZnTEZ1djVBUy9UM0tnR2pTWTZEbG83SlVsZTNhaDVtbTVoUm05aVl6K3JlMDI2bk84LzRQaXkzM0IwczVLczQwRm5vdEprOS9CVzlCdVh2QXVNQzZDL1BxOHRCY0tTT1dJbThXYmE5Nnd5clFEOE5yMGtMaGxaUGRjVEszb2ZtWmVtZGU0d2o3STBCT2RyZTdrUlh1SlZmZUtIMkpTaEJLendrQ1g0NG9mUjVHbWRGclMrTEZqS0JDNHN3bTRWbmRBb2lhWWVjYiszeVh1UHVXZ2Y5UmhEMUZMUEQrTTJ1RndkTmpDYUtINXdRenBvZUovdTFVOGRnYnVhazdNa29nd1RacTlUd3RJbW9TMW1LUFYrM1BCVjJIZEtGWjFFNjZIanVjTVVRa1FkWWhNdkkzNWV6elVJa2dmS3R6cmE3dEVzY3N6Y1RKR3I2MUs4WXpvZERxczV4b2ljNERTTVBjbFFzY2lPenNTclpZdXhzTjJCNm9ndHpWSlYrbVNTZWgyRm5JeFp5dVdmb3FqeDVSV0lyOXFTMzRCSWJJak10L2tta1J0V1Z0ZDlRQ2dISnZHZUplTmtQK2J5S3EwcnhGUk9WN1orMmV0MVZzUm5US2FHNzNWdWx1bHljc2xhVk5WSjF6Z3lqYkxpR0g3SHJmUXkrNFcrOU9tVE42U3BkVGkzL1VHVk40dW5VdTBrekNxZ2M3ZEd0eFJjdzFQY09ubHRoWWhHWG15NW9rTGRXVEsxYXU4Q2NFWW9mL1VWS0dGUFAwVUpBT3loOU9rdHdJREFRQUJvMEl3UURBT0JnTlZIUThCQWY4RUJBTUNBUVl3RHdZRFZSMFRBUUgvQkFVd0F3RUIvekFkQmdOVkhRNEVGZ1FVdS8vS2ppT2ZUNW5LMitKb3BxVVZKeGNlMlE0d0RRWUpLb1pJaHZjTkFRRU1CUUFEZ2dJQkFMWnA4S1ozL3A3dUM0R3Q0Y0NweC9rMUhVQ0NxK1lFdE4vTDl4MFBnL0IrRTAyTmpPN2pNeUxET2Z4QTMyNUJTMEpUdmhhSThkSTRYc1JvbVJ5WVVwT001Mmp0RzJwemVnVkFUWDlsTzlaWThjNkRSMkRqLzVlcG5HQjNHRlcxZmdpVHo5RDJQR2NERldFSitZRjU5ZXhUcEovSmp3R0xjOFIzZHR5RG92VU1TUnFvZHQ2U20yVDRzeXpGSjlNSHdBaUFwSmlTNHdHV0Fxb0M3bzg3eGRGdENqTXdjM2k1VDFRV3Z3c0hvYVJjNXN2SlhJU1BEK0FWZHl4K0puN2F4RXZicHhaM0I3RE5kZWh5UXRhVmhKMkdnL0xra00wSlI5U0xBM0RhV3NZRFF2VHRONkx3RzFCVVN3N1loTjRaS0ptQlI2NEpHejlJMGNOdjRyQmdGL1h1SXdLbDJnQmJiWkNyN3FMcEd6dnB4MFFuUlk1cm4vV2toTHgzK1d1WHJENVJSYUlScHN5RjdncG84ajVRT0hva1loNFhJRGR0YWsyM0NadkovS1JZOWJiN25FNFl1NVVDNTZHdG13ZnVObXNrMGptR3daT0RVTktCUnFoZllsY3N1MnhraUFodTd4TlVYOTB0eEdkajA4K0pONytkSVBUN2VvT2JvQjZCQUZEQzVBd2lXVklRN1VOV2h3RDRGRktuSFl1VGpLSk5SbjhueG5HYkpON2syb2FMRFg1cklNSEFudUZsMkdxanB1aUZpem9IQ0J5NjlZOVZtaGgxZnVYc2dXYlJJWE9oTlVRTGdEMWJuRjV2S2hlVzBZTWppR1p0NW9iaWNESXZVaUxueU9kL3hDeGdYUy9EcjU1RkJjT0VBcmY5TEFoU1Q0TGRvL0RVaGdrQyIsIk1JSURURENDQWpTZ0F3SUJBZ0lJZkU4RU9SelVtUzB3RFFZSktvWklodmNOQVFFRkJRQXdSREVMTUFrR0ExVUVCaE1DVlZNeEZEQVNCZ05WQkFvTUMwRm1abWx5YlZSeWRYTjBNUjh3SFFZRFZRUUREQlpCWm1acGNtMVVjblZ6ZENCT1pYUjNiM0pyYVc1bk1CNFhEVEV3TURFeU9URTBNRGd5TkZvWERUTXdNVEl6TVRFME1EZ3lORm93UkRFTE1Ba0dBMVVFQmhNQ1ZWTXhGREFTQmdOVkJBb01DMEZtWm1seWJWUnlkWE4wTVI4d0hRWURWUVFEREJaQlptWnBjbTFVY25WemRDQk9aWFIzYjNKcmFXNW5NSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXRJVE1NeGN1YTVSc2EyRlNvT3VqejNtVVRPV1VnSm5MVldSRVpZOW5aT0lHNDF3M1NmWXZtNFNFSGkzeVlKMHdUc3lFaGVJc3p4NmUvamFyTTNjMVJOZzFsaG85TnVoNkR0alZSNkZxYVl2Wi9MczZybmxhMWZUV2NidWFrQ05ybXJlSWRJY01IbCs1bmkzNnExTXIzTHQyUHBOTUNBaU1IcUlqSE5ScXJTSzZtUUV1YldYTHZpUm1WU1JMUUVTeEc5Zmh3b1hBM2hBL1BlMjQvUEh4STFQY3YyV1hiOW41UUhHTmZiMlYxTTYrb0Y0bkk5NzlwdEFtRGdBcDZ6eEc4RDFndno5UTB0d21RVkdlRkRkQ0JLTndWNmdiaCswdCtudnVqQXJqcVdhSkdjdEIrZDFFTm1IUDRuZEd5SDMyOUpLQk52M2JOUEZ5ZnZNTUZyMjBGUUlEQVFBQm8wSXdRREFkQmdOVkhRNEVGZ1FVQngvUzU1emF3bTZpUUxTd2VsQVFVSFRFeUwwd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBT0JnTlZIUThCQWY4RUJBTUNBUVl3RFFZSktvWklodmNOQVFFRkJRQURnZ0VCQUlsWHNoWjZxTUw5MXRtYm16VENuTFF5RkUybnBOL3N2cWUrK0VQYmtUZk90REl1VUZVYU5VNTJRM0VnNzVOM1RoVndMb2ZEd1IxdDNNdTFKOVFzVnRGU1V6cEUwblBJeEJzRlpWcGlrcHp1UVkweDIrYzA2bGtoMVFGNjEyUzRaRG5OeWUydjdVc0RTS2VnbVFHQTNHV2pOcTVsV1VoUGdrdklaZkZYSGVWWkxnby9iTmpSOWVVSnRHeFVBQXJnRlUySGRXMjNXSlphM1czU0FLRDBtMGkrd3pla3VqYmdmSWVGbHhvVm90NHVvbHU5cnhqNWtGRE5jRm40SjJkSHk4ZWdCenA5MFN4ZGJCazZaclY5L1pGdmdyRytDSlBiRkVmeG9qZkhSWjQ4eDNldlpLaVQzL1pwZzRKZzhrbENOTzFhQUZTRkhCWTJrZ3hjK3FhdHY5cz0iLCJNSUlEcnpDQ0FwZWdBd0lCQWdJUUNEdmdWcEJDUnJHaGRXckpXWkhIU2pBTkJna3Foa2lHOXcwQkFRVUZBREJoTVFzd0NRWURWUVFHRXdKVlV6RVZNQk1HQTFVRUNoTU1SR2xuYVVObGNuUWdTVzVqTVJrd0Z3WURWUVFMRXhCM2QzY3VaR2xuYVdObGNuUXVZMjl0TVNBd0hnWURWUVFERXhkRWFXZHBRMlZ5ZENCSGJHOWlZV3dnVW05dmRDQkRRVEFlRncwd05qRXhNVEF3TURBd01EQmFGdzB6TVRFeE1UQXdNREF3TURCYU1HRXhDekFKQmdOVkJBWVRBbFZUTVJVd0V3WURWUVFLRXd4RWFXZHBRMlZ5ZENCSmJtTXhHVEFYQmdOVkJBc1RFSGQzZHk1a2FXZHBZMlZ5ZEM1amIyMHhJREFlQmdOVkJBTVRGMFJwWjJsRFpYSjBJRWRzYjJKaGJDQlNiMjkwSUVOQk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBNGp2aEVYTGVxS1RUbzFlcVVLS1BDM2VReWFLbDdoTE9sbHNCQ1NETUFaT25UakMzVS9kRHhHa0FWNTNpalNMZGh3WkFBSUVKenM0Ymc3L2Z6VHR4UnVMV1pzY0ZzM1luRm85N25oNlZmZTYzU0tNSTJ0YXZlZ3c1Qm1WL1NsMGZ2QmY0cTc3dUtOZDBmM3A0bVZtRmFHNWNJekpMdjA3QTZGcHQ0M0MvZHhDLy9BSDJoZG1vUkJCWU1xbDFHTlhSb3I1SDRpZHE5Sm96K0VrSVlJdlVYN1E2aEwraHFrcE1mVDdQVDE5c2RsNmdTemVSbnR3aTVtM09GQnFPYXN2K3piTVVaQmZIV3ltZU1yL3k3dnJUQzBMVXE3ZEJNdG9NMU8vNGdkVzdqVmcvdFJ2b1NTaWljTm94Qk4zM3NoYnlUQXBPQjZqdFNqMWV0WCtqa01Pdkp3SURBUUFCbzJNd1lUQU9CZ05WSFE4QkFmOEVCQU1DQVlZd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBZEJnTlZIUTRFRmdRVUE5NVFOVmJSVEx0bThLUGlHeHZEbDdJOTBWVXdId1lEVlIwakJCZ3dGb0FVQTk1UU5WYlJUTHRtOEtQaUd4dkRsN0k5MFZVd0RRWUpLb1pJaHZjTkFRRUZCUUFEZ2dFQkFNdWNONnBJRXhJSyt0MUVuRTlTc1BUZnJnVDFlWGtJb3lRWS9Fc3JoTUF0dWRYSC92VEJIMWpMdUcyY2VuVG5tQ21yRWJYamNLQ2h6VXlJbVpPTWtYRGlxdzhjdnBPcC8yUFY1QWRnMDZPL25Wc0o4ZFdPNDFQMGptUDZQNmZidEdiZlltYlcwVzVCamZJdHRlcDNTcCtkV09JcldjQkFJKzB0S0lKRlBubFVraWFZNElCSXFEZnY4Tlo1WUJiZXJPZ096VzZzUkJjNEwwbmE0VVUrS3JrMlU4ODZVQWIzTHVqRVYwbHNZU0VZMVFTdGVEd3NPb0JycCt1dkZSVHAySW5CdVRoczRwRnNpdjlrdVhjbFZ6REFHeVNqNGR6cDMwZDh0YlFrQ0FVdzdDMjlDNzlGdjFDNXFmUHJtQUVTcmNpSXhwZzBYNDBLUE1icDFaV1ZiZDQ9IiwiTUlJRHVqQ0NBcUtnQXdJQkFnSUxCQUFBQUFBQkQ0WW01ZzB3RFFZSktvWklodmNOQVFFRkJRQXdUREVnTUI0R0ExVUVDeE1YUjJ4dlltRnNVMmxuYmlCU2IyOTBJRU5CSUMwZ1VqSXhFekFSQmdOVkJBb1RDa2RzYjJKaGJGTnBaMjR4RXpBUkJnTlZCQU1UQ2tkc2IySmhiRk5wWjI0d0hoY05NRFl4TWpFMU1EZ3dNREF3V2hjTk1qRXhNakUxTURnd01EQXdXakJNTVNBd0hnWURWUVFMRXhkSGJHOWlZV3hUYVdkdUlGSnZiM1FnUTBFZ0xTQlNNakVUTUJFR0ExVUVDaE1LUjJ4dlltRnNVMmxuYmpFVE1CRUdBMVVFQXhNS1IyeHZZbUZzVTJsbmJqQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQUtiUEpBNitMbThvbVVWQ3hLcytJVlNiQzlOL2hIRDZFclBMdjRkZnhuK0cwN0l3WE5iOXJmRjczT1g0WUpZSmtoRDEwRlBlKzN0K2M0aXNVb2g3U3FiS1NhWmVxS2VNV2hHOGVvTHJ2b3pwczZ5V0pRZVhTcGtxQnkrMEhuZS9pZysxQW53YmxyakZ1VG9zdk5ZU3VldFpmZUxRQm9aZlhrbHF0VGxlaURUc3ZIZ01DSmlFYktqTlM3U2dmUXg1VGZDNExjc2h5dFZzVzMzaG9DbUVvZm5UbEVuTEpHS1JJTHpkQzlYWnpQbnFKd29yYzVIR25SdXN5TXZvNEtEMEw1Q0xUZnV3Tmh2MkdYcUY0RzN5WVJPSVhKL2drd3BSbDRwYXpxK3IxZmVxQ2FwZ3ZkelpYOTl5cVdBVFhnQUJ5VXI2UDZUcUJ3TWhBbzZDeWdQQ200OENBd0VBQWFPQm5EQ0JtVEFPQmdOVkhROEJBZjhFQkFNQ0FRWXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QWRCZ05WSFE0RUZnUVVtK0lIVjJjY0hzQnFCdDVadEpvdDM5d1poaTR3TmdZRFZSMGZCQzh3TFRBcm9DbWdKNFlsYUhSMGNEb3ZMMk55YkM1bmJHOWlZV3h6YVdkdUxtNWxkQzl5YjI5MExYSXlMbU55YkRBZkJnTlZIU01FR0RBV2dCU2I0Z2RYWnh3ZXdHb0czbG0wbWkzZjNCbUdMakFOQmdrcWhraUc5dzBCQVFVRkFBT0NBUUVBbVlGVGh4eG9sNGFSN09CS3VFUUxxNEdzSjAvV3diZ2NRM2l6REpyODZpdzhibUViVFVzcDlaOEZIU2JCdU9tREFHSkZ0cWtJazdtcE0wc1ltc0w0aDRoTzI5MXhOQnJCVk5wR1ArRFRLcXR0VkNMMU9tTE5JRys2S1luWDNaSHUwMXlpUHFGYlFmWGY1V1JETGVuVk9hdlNvdCszaTlEQWdCa2NSY0F0ak9qNExhUjBWa25GQmJWUEZkNXVSSGc1aDZoK3UvTjVHSkc3OUcrZHdmQ01OWXhkQWZ2RGJibnZSRzE1UmpGK0N2NnBnc0gvNzZ0dUlNUlF5VitkVFpzWGpBemxBY21nUVdwelUvcWxVTFJ1SlEvN1RCajAvVkxaam1teDZCRVAzb2pZK3gxSjk2cmVsYzhnZU1KZ0V0c2xRSXhxL0g1Q09FQmtFdmVlZ2VHVExnPT0iLCJNSUlFUGpDQ0F5YWdBd0lCQWdJRVNsT01LREFOQmdrcWhraUc5dzBCQVFzRkFEQ0J2akVMTUFrR0ExVUVCaE1DVlZNeEZqQVVCZ05WQkFvVERVVnVkSEoxYzNRc0lFbHVZeTR4S0RBbUJnTlZCQXNUSDFObFpTQjNkM2N1Wlc1MGNuVnpkQzV1WlhRdmJHVm5ZV3d0ZEdWeWJYTXhPVEEzQmdOVkJBc1RNQ2hqS1NBeU1EQTVJRVZ1ZEhKMWMzUXNJRWx1WXk0Z0xTQm1iM0lnWVhWMGFHOXlhWHBsWkNCMWMyVWdiMjVzZVRFeU1EQUdBMVVFQXhNcFJXNTBjblZ6ZENCU2IyOTBJRU5sY25ScFptbGpZWFJwYjI0Z1FYVjBhRzl5YVhSNUlDMGdSekl3SGhjTk1Ea3dOekEzTVRjeU5UVTBXaGNOTXpBeE1qQTNNVGMxTlRVMFdqQ0J2akVMTUFrR0ExVUVCaE1DVlZNeEZqQVVCZ05WQkFvVERVVnVkSEoxYzNRc0lFbHVZeTR4S0RBbUJnTlZCQXNUSDFObFpTQjNkM2N1Wlc1MGNuVnpkQzV1WlhRdmJHVm5ZV3d0ZEdWeWJYTXhPVEEzQmdOVkJBc1RNQ2hqS1NBeU1EQTVJRVZ1ZEhKMWMzUXNJRWx1WXk0Z0xTQm1iM0lnWVhWMGFHOXlhWHBsWkNCMWMyVWdiMjVzZVRFeU1EQUdBMVVFQXhNcFJXNTBjblZ6ZENCU2IyOTBJRU5sY25ScFptbGpZWFJwYjI0Z1FYVjBhRzl5YVhSNUlDMGdSekl3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRQzZoTFp5MjU0TWErS1o2VEFCcDNicU1yaVZRUnJKMm1GT1dITFAvdmFDZWI5ellRWUtwU2ZZczEvVFJVNGNjdFpPTXZKeWlnLzNneG5RYW9DQUFFVWVzTWZubXI4U1Z5Y2NvMmd2Q29lOWFtc09YbVh6SEhmVjFJV05jQ0cwc3pMbmk2TFZoamtDc2JqU1I4N2t5VW5FTzZmZSsxUjlWNzd3Nkc3Q2ViSTZDMVhpVUpnV01oTmNMM2hXd2NLVXMvSmE1Q2VhbnlUWHh1elFteVdDNDh6Q3hFWEZqSmQ2Qm1zcUVaK3BDbTVJTzIvYjFCRVpRdmVQQjcvMVUxK2NQdlFYTE9acHJFNHlUR0ozNnJmbzViczB2Qm1McnB4UjU3ZCt0Vk94TXlMbGJjOXdQQnI2NHB0bnRvUDBqYVd2WWt4TjRGaXNaRFFTQS9pMmpaUmpKS1J4QWdNQkFBR2pRakJBTUE0R0ExVWREd0VCL3dRRUF3SUJCakFQQmdOVkhSTUJBZjhFQlRBREFRSC9NQjBHQTFVZERnUVdCQlJxY2laNjBCN3ZmZWM3YVZIVWJJMmZrQkptcXpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQWVaOGRsc2EyZVQ4aWpZZlRod01FWUdwcm1pNVppWE1SckVQUjlSUC9qVGtyd1BLOVQzQ01xUy9xRjhRTFZKN1VHNWFZTXp5b3JXS2lBSGFyV1dsdUJoMSt4TGxFalppdkV0Umgyd29aUmtmejYvZGp3VUFGUUtYU3QvUzFtamEvcVloMmlBUlZCQ3VjaDM4YU56eCtMYVVhMk5TSlhzcTlyRDFzMkcydjFmTjJEODA3aURnaW5XeVRtc1E5djRJYlpUK21EMTJxL09XeUZjcTFyY2E4UGRDRTZPb0djckJOT1RKNHZ6NFJuQXVrblpvaDgvQ2JDekI0MjhIY2gwUCt2R09heXNYQ0hNbkhqZjg3RWxnSTVyWTk3SG9zVHZ1RGxzNE1QR21IVkhPa2M4S1QvMUVRckJWVUFkajhCYkdKb1g5MGc1cEoxOXhPZTRwSWI0dEY5Zz09IiwiTUlJQ0REQ0NBWkdnQXdJQkFnSVFia2VweDJ5cGN5UkFpUThEVmQyTkhUQUtCZ2dxaGtqT1BRUURBekJITVFzd0NRWURWUVFHRXdKVlV6RWlNQ0FHQTFVRUNoTVpSMjl2WjJ4bElGUnlkWE4wSUZObGNuWnBZMlZ6SUV4TVF6RVVNQklHQTFVRUF4TUxSMVJUSUZKdmIzUWdVak13SGhjTk1UWXdOakl5TURBd01EQXdXaGNOTXpZd05qSXlNREF3TURBd1dqQkhNUXN3Q1FZRFZRUUdFd0pWVXpFaU1DQUdBMVVFQ2hNWlIyOXZaMnhsSUZSeWRYTjBJRk5sY25acFkyVnpJRXhNUXpFVU1CSUdBMVVFQXhNTFIxUlRJRkp2YjNRZ1VqTXdkakFRQmdjcWhrak9QUUlCQmdVcmdRUUFJZ05pQUFRZlR6T0hNeW1Lb1lUZXk4Y2hXRUdKNmxhZEswdUZ4aDFNSjd4L0psRnliK0tmMXFQS3pFVVVSb3V0NzM2R2pPeXhmaS8vcVhHZEdJUkZCRUZWYml2cUpuKzdrQUhqU3htNjVGU1dSUW14MVd5UlJLMkVFNDZhakEyQURETDI0Q2VqUWpCQU1BNEdBMVVkRHdFQi93UUVBd0lCQmpBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUIwR0ExVWREZ1FXQkJUQjhTYTZvQzJ1aFlIUDAvRXFFcjI0Q21mOXZEQUtCZ2dxaGtqT1BRUURBd05wQURCbUFqRUFnRnVrZkNQQWxhVXMzTDZKYnlPNW85MWxBRkpla2F6SW5YSjBnbE1MZmFsQXZXaGd4ZUc0VkR2Qk5oY2wyTUc5QWpFQW5qV1NkSVVsVWZVazdHUlNKRkNsSDl2b3k4bDI3T3lDYnZXRkdGUG91T09hS2FxVzA0TWp5YVI3WWJQTUF1aGQiLCJNSUlGMkRDQ0E4Q2dBd0lCQWdJUVRLcjV5dHRqYitBZjkwN1lXd09HblRBTkJna3Foa2lHOXcwQkFRd0ZBRENCaFRFTE1Ba0dBMVVFQmhNQ1IwSXhHekFaQmdOVkJBZ1RFa2R5WldGMFpYSWdUV0Z1WTJobGMzUmxjakVRTUE0R0ExVUVCeE1IVTJGc1ptOXlaREVhTUJnR0ExVUVDaE1SUTA5TlQwUlBJRU5CSUV4cGJXbDBaV1F4S3pBcEJnTlZCQU1USWtOUFRVOUVUeUJTVTBFZ1EyVnlkR2xtYVdOaGRHbHZiaUJCZFhSb2IzSnBkSGt3SGhjTk1UQXdNVEU1TURBd01EQXdXaGNOTXpnd01URTRNak0xT1RVNVdqQ0JoVEVMTUFrR0ExVUVCaE1DUjBJeEd6QVpCZ05WQkFnVEVrZHlaV0YwWlhJZ1RXRnVZMmhsYzNSbGNqRVFNQTRHQTFVRUJ4TUhVMkZzWm05eVpERWFNQmdHQTFVRUNoTVJRMDlOVDBSUElFTkJJRXhwYldsMFpXUXhLekFwQmdOVkJBTVRJa05QVFU5RVR5QlNVMEVnUTJWeWRHbG1hV05oZEdsdmJpQkJkWFJvYjNKcGRIa3dnZ0lpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElDRHdBd2dnSUtBb0lDQVFDUjZGU1MwZ3BXc2F3TkpOM0Z6MFJuZEprck42TjlJM0FBY2J4VDM4VDZLaEtQUzM4UVZyMmZjSEszWVgvSlN3OFhwejNqc0FSaDd2OFJsOGYwaGo0SytqNWMrWlBtTkhyWkZHdm5uTE9Gb0lKNmRxOXhrTmZzL1EzNm5HejYzN0NDOUJSKytiN0VwaTlQZjVsL3RmeG5RM0s5REFEV2lldHJMTlB0ajVnY0ZLdCs1ZU51L05pbzVKSWsya05yWXJoVi9lckJ2R3kyaS9NT2pacmttMnhwbWZoNFNEQkYxYTNoRFR4RllQd3lsbEVudkdmRHlpNjJhK3BHeDhjZ29MRWZaZDVJQ0xxa1RxbnlnMFkzaE92b3pJRklRMmRPY2lxYlhMMU1HeWlLWENKN3RLdVkyZTdnVVlQRENVWk9iVDZaK3BVWDJud3pWMEU4alZIdEM3WmNyeXhqR3Q5WHlEKzg2VjNFbTY5Rm1lS2pXaVMwdXFsV1BjOXZxdjlKV0w3d3FQLzB1SzNwTi91NnVQUUxPdm5vUTBJZWlkaUV5eFB4MmJ2aGlXQzRqQ2hXckJRZG5Bcm5jZXZQRHQwOXFaYWhTTDA4OTYrMURTSk13QkdCN0ZZNzl0T2k0bHUzc2dRaVVwV0FrMm5vamt4bDhaRURMWEIwQXVxTFp4VXBhVklDdTlmZlVHcFZScitnb3loaGYzRFF3NktxTENHcVI4NG9uQVpGZHIrQ0dDZTAxYTYweTFEbWEvUk1obkV3NmFiZkZvYmcyUDlBM2Z2UVFvaC9vek02TGx3ZVFSR0JZODRZY1dzcjdLYUt0ekZjT21wSDRNTjVXZFlnR3EveWFwaXFjcnhYU3RKTG5ic1EvTEJNUWVYdEhUMWVLSjJjekwrelVkcW5SK1dFVXdJREFRQUJvMEl3UURBZEJnTlZIUTRFRmdRVXU2OStBajM2cHZFOGhJNnQ3amlZN05reU10UXdEZ1lEVlIwUEFRSC9CQVFEQWdFR01BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0RRWUpLb1pJaHZjTkFRRU1CUUFEZ2dJQkFBcngxVWFFdDY1UnUyeXlUVUVVQUpOTW5Ndmx3RlRQb0NXT0F2bjlzS0lOOVNDWVBCTXRyRmFpc05aK0VaTHBMcnFlTHBweXNiMFpSR3hoTmFLYXRCWVNhVnFNNGRjK3BCcm9Md1Awcm1FZEVCc3FwSXQ2eGY0RnB1SEExc2orbnE2UEs3bzltZmpZY3dsWVJtNm1uUFRYSjlPVjJqZURjaHpUYytDaVI1a0RPRjNWU1hrQUtSekg3SnNnSEFja2FWZDRzam44T29TZ3RaeDhqYjh1azJJbnR6bmFGeGl1dlR3SmFQK0VtenpWMWdzRDQxZWVGUGZSNjAvSXZZY2p0N1pKUTNtRlhMcnJrZ3VoeHVob3FFd1dzUnFaQ3VoVExKSzdvUWtZZFF4bHFIdkxJN2Nhd2lpRnd4di8wQ3RpNzZSN0NaR1laNHdVQWMxb0JtcGpJWFVEZ0lpS2JvSEdoZktwcEMzbjlLVWtFRWVEeXMzMGpYbFlzUWFiNXhvcTJaMEIxNVI5N1FOS3l2RGI2S2tCUHZWV21ja2Vqa2s5dStVSnVlQlBTWkk5Rm9KQXpNeFp4dVk2N1JJdWFUeHNsYkg5cWgxN2Y0YStIZzR5UnZ2N0U0OTFmMHlMUzBaai9nQTBRSERCdzdtaDNhWnc0Z1N6UWJ6cGdKSHFaSng2NFNJRHFaeHVidzVsVDJ5SGgxN3picUQ1ZGFXYlFPaFRzaWVkU3JuQWR5R04vNGZ5M3J5TTd4ZmZ0MGtMMGZKdU1Bc2FEazUyN1JIODllbFdzbjIveDIwS2s0eWwwTUMySGI0NlRwU2kxMjVzQzhLS2ZQb2c4OFRrNWMwTnFNdVJrckY4aGV5MUZHbG1Eb0xuemM3SUxhWlJmeUhCTlZPRkJrcGRuNjI3RzE5MCIsIk1JSUVIVENDQXdXZ0F3SUJBZ0lRVG9FdGlvSmw0QXNDN2o0MUFrYmxQVEFOQmdrcWhraUc5dzBCQVFVRkFEQ0JnVEVMTUFrR0ExVUVCaE1DUjBJeEd6QVpCZ05WQkFnVEVrZHlaV0YwWlhJZ1RXRnVZMmhsYzNSbGNqRVFNQTRHQTFVRUJ4TUhVMkZzWm05eVpERWFNQmdHQTFVRUNoTVJRMDlOVDBSUElFTkJJRXhwYldsMFpXUXhKekFsQmdOVkJBTVRIa05QVFU5RVR5QkRaWEowYVdacFkyRjBhVzl1SUVGMWRHaHZjbWwwZVRBZUZ3MHdOakV5TURFd01EQXdNREJhRncweU9URXlNekV5TXpVNU5UbGFNSUdCTVFzd0NRWURWUVFHRXdKSFFqRWJNQmtHQTFVRUNCTVNSM0psWVhSbGNpQk5ZVzVqYUdWemRHVnlNUkF3RGdZRFZRUUhFd2RUWVd4bWIzSmtNUm93R0FZRFZRUUtFeEZEVDAxUFJFOGdRMEVnVEdsdGFYUmxaREVuTUNVR0ExVUVBeE1lUTA5TlQwUlBJRU5sY25ScFptbGpZWFJwYjI0Z1FYVjBhRzl5YVhSNU1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBMEVDTGkzTGprUnYzVWNFYlZBU1kwNm0vd2VhS1hUdUgrN3VJemczakx6OEdsdkNpS1ZDWnJ0czdvVmV3ZEZGeHplMUNrVTFCL3FuSTJHcUdkMFM3V1dhWFVGNjAxQ3h3Uk0vYU41VkNhVHd3eEhHelV2QWhUYUhZdWpsOEhKNmpKSjN5Z3hhWXFoWjhRNXNWVzdldU5KSCsxR0ltR0VhYVArdkIrZkdRVit1c2VnMkwyM0l3YW1iVjRFYWpjTnhvMmY4RVNJbDMzclhwKzJkdFFlbThPYjB5MldJQzhiR29QVzQzbk9JdjR0T2lKb3ZHdUZWRGlPRWpQcVhTSkRscVI2c0ExS0d6cVNYK0RUK25IYnJUVWNFTHBOcXNPTzlWVUNRRlpVYVRORTh0amEzRzFDRVowbzdLQldGeEIzTkg1WW9aRXIwRVRjNU9uS1ZJckxzbTl3SURBUUFCbzRHT01JR0xNQjBHQTFVZERnUVdCQlFMV09XTHhrd1ZONlJBcVRDcEliNUhObHBXL3pBT0JnTlZIUThCQWY4RUJBTUNBUVl3RHdZRFZSMFRBUUgvQkFVd0F3RUIvekJKQmdOVkhSOEVRakJBTUQ2Z1BLQTZoamhvZEhSd09pOHZZM0pzTG1OdmJXOWtiMk5oTG1OdmJTOURUMDFQUkU5RFpYSjBhV1pwWTJGMGFXOXVRWFYwYUc5eWFYUjVMbU55YkRBTkJna3Foa2lHOXcwQkFRVUZBQU9DQVFFQVBwaWVtL1liNmRjNXQzaXVIWElZU2RPSDVFT0M2ei9KcXZXb3RlOVZmQ0ZTWmZuVkRlRnM5RDZNazNPUkxnTEVUZ2R4YjhDUE9HRUlxQjZCQ3NBdklDOUJpNUhjU0VXODhjYmV1blpyTThnQUxURkdUTzNubmMrSWxQOHp3RmJvSklZbXVOZzRPTjhxYTkwU3pNYy9SeGRNb3NJR2xnblcyLzQvUEVaQjMxamlWZzg4TzhFY2t6WFpPRktzN3Nqc0xqQk9sRFcwSkI5TGVHbmE4Z0k0ekpWU2svQndKVm1jSUdmRTd2bUxWMkgwa25aOVA0U05WYmZvNWF6VjhmVVpWcVphKzVBY3I1UHI1UnpVWjVkZEJBNitDNE9tRjRPNU1CS2d4VE1WQmJrTis4Y0ZkdVBZU28zOE5CZWp4aUVvdmpCRk1SN0hlTDVZWVRpc08rSUJaUT09IiwiTUlJRU1qQ0NBeHFnQXdJQkFnSUJBVEFOQmdrcWhraUc5dzBCQVFVRkFEQjdNUXN3Q1FZRFZRUUdFd0pIUWpFYk1Ca0dBMVVFQ0F3U1IzSmxZWFJsY2lCTllXNWphR1Z6ZEdWeU1SQXdEZ1lEVlFRSERBZFRZV3htYjNKa01Sb3dHQVlEVlFRS0RCRkRiMjF2Wkc4Z1EwRWdUR2x0YVhSbFpERWhNQjhHQTFVRUF3d1lRVUZCSUVObGNuUnBabWxqWVhSbElGTmxjblpwWTJWek1CNFhEVEEwTURFd01UQXdNREF3TUZvWERUSTRNVEl6TVRJek5UazFPVm93ZXpFTE1Ba0dBMVVFQmhNQ1IwSXhHekFaQmdOVkJBZ01Fa2R5WldGMFpYSWdUV0Z1WTJobGMzUmxjakVRTUE0R0ExVUVCd3dIVTJGc1ptOXlaREVhTUJnR0ExVUVDZ3dSUTI5dGIyUnZJRU5CSUV4cGJXbDBaV1F4SVRBZkJnTlZCQU1NR0VGQlFTQkRaWEowYVdacFkyRjBaU0JUWlhKMmFXTmxjekNDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFMNUFuZlJ1NGVwMmh4eE5SVVNPdmtiSWd3YWR3U3IrR0IrTzVBTDY4NnRkVUlvV01RdWFCdERGY0NMTlNTMVVZOHkyYm1oR0MxUHF5MHdrd0x4eVR1cnhGYTcwVkpvU0NzTjZzak5nNHRxSlZmTWlXUFBlM00vdmc0YWlqSlJQbjJqeW1KQkdoQ2ZIZHIvanpEVXNpMTRIWkdXQ3dFaXdxSkg1WVo5MklGQ29rY2RtdGV0NFlnTlc4SW9hRStveG94NmdtZjA0OXZZbk1saHZCL1ZydVBzVUs2KzNxc3pXWTE5empOb0ZtYWc0cU1zWGVEWlJyT21lOUhnNmpjOFAyVUxpbUF5ckw1OE9BZDd2bjVsSjhTM2ZySFJORzVpMVI4WGxLZEg1a0JqSFlweStnOGNtZXo2S0pjZkEzWjNtTldnUUlKMlAyTjdTdzRTY0RWN29MOGtDQXdFQUFhT0J3RENCdlRBZEJnTlZIUTRFRmdRVW9CRUtJejZXOFFmczRxOHA3NEtsZjlBd3BMUXdEZ1lEVlIwUEFRSC9CQVFEQWdFR01BOEdBMVVkRXdFQi93UUZNQU1CQWY4d2V3WURWUjBmQkhRd2NqQTRvRGFnTklZeWFIUjBjRG92TDJOeWJDNWpiMjF2Wkc5allTNWpiMjB2UVVGQlEyVnlkR2xtYVdOaGRHVlRaWEoyYVdObGN5NWpjbXd3TnFBMG9ES0dNR2gwZEhBNkx5OWpjbXd1WTI5dGIyUnZMbTVsZEM5QlFVRkRaWEowYVdacFkyRjBaVk5sY25acFkyVnpMbU55YkRBTkJna3Foa2lHOXcwQkFRVUZBQU9DQVFFQUNGYjhBdkNiNlArayt0Wjd4a1NBemsvRXhmWUFXTXltdHJ3VVNXZ0VkdWptN2wzc0FnOWcxbzFRR0U4bVRnSGo1ckNsN3IrOGRGUkJ2LzM4RXJqSFQxcjBpV0FGZjJDM0JVcno5dkhDdjhTNWRJYTJMWDFyek5MelJ0MHZ4dUJxdzhNMEF5eDlsdDFhd2c2bkNwbkJCWXVyREMvelhEclBiRGRWQ1lmZVUwQnNXTy84dHF0bGJnVDJHOXc4NEZvVnhwN1o4VmxJTUNGbEEyenM2U0Z6N0pzRG9lQTNyYUFWR0kvNnVnTE9weXlwRUJNczFPVUlKcXNpbDJENGtGNTAxS0thVTczeXFXamdvbTdDMTJ5eG93K2V2K3RvNTFieXJ2TGpLemc2Q1lHMWE0WFh2aTN0UHhxM3NtUGk5V0lzZ3RScUFFRlE4VG1EbjVYcE5wYVliZz09IiwiTUlJRFREQ0NBalNnQXdJQkFnSUlkM2NHSnlhcHNYd3dEUVlKS29aSWh2Y05BUUVMQlFBd1JERUxNQWtHQTFVRUJoTUNWVk14RkRBU0JnTlZCQW9NQzBGbVptbHliVlJ5ZFhOME1SOHdIUVlEVlFRRERCWkJabVpwY20xVWNuVnpkQ0JEYjIxdFpYSmphV0ZzTUI0WERURXdNREV5T1RFME1EWXdObG9YRFRNd01USXpNVEUwTURZd05sb3dSREVMTUFrR0ExVUVCaE1DVlZNeEZEQVNCZ05WQkFvTUMwRm1abWx5YlZSeWRYTjBNUjh3SFFZRFZRUUREQlpCWm1acGNtMVVjblZ6ZENCRGIyMXRaWEpqYVdGc01JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBOWh0UFp3Y3JvUlgxQmlMTEh3R3k0M05GQmtSSkxMdEpKUlRXenNPM3F5eFB4a0V5bEZmNkVxZGJEdUtQSHg2R0dhZXF0UzI1WHcyS3dxK0ZOWGt5TGJzY1lqZnlzVnRLUGNyTmNWL3BRcjZVNk1qZStTSklaTWJscThZcmJhMEY4UHJWQzgrYTVmQlFwSXM3UjZValczcDYrRE0vdU8rWmwrTWd3ZFlvaWMrVSs3bEY3ZU5BRnhIVWRQQUxNZUlySm1xYlRGZXVyQ0ErdWtWNkJmTzltMmtWcm4xT0lHUEVOWFk2QndMSk4vM0hSKzdvOFhZZGN4WHlsNlMxeUhwNTJVS3FLMzljL3M0bVQ2Tm1nVFd2UkxwVUhod3dNbVdkNWp5VFhsQk9ldU02MUc3TUd2djUwamV1SkNxclZ3TWlLQTFKZFgrM0tOcDF2NDdqM0E1NU1RSURBUUFCbzBJd1FEQWRCZ05WSFE0RUZnUVVuWlBHVTR0ZXlxOC9ueDRQNVptVnZDVDJsSTh3RHdZRFZSMFRBUUgvQkFVd0F3RUIvekFPQmdOVkhROEJBZjhFQkFNQ0FRWXdEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBRmlzOUFRT3pjQU4vd3I5MUxvV1h5bTllMmlaV0VuU3RCMDNUWDhuZlVZR1hVUEdoaTQrYzdJbWZVK1RxYmJFS3BxcklaY1VzZDZNMDZ1SkZkaHJKTlR4RnE3WXBGelVmMUdPN1JnQnNaTmp2Yno0WVlDYW5ySE9RbkRpcVgwR0pYMG5vZjV2N0xNZUpOcmpTMVVhQURzMXREdloxMTB3L1lFVGlmTENCaXZ0WjhTT3lVT3lYR3NWaVFLOFl2eE84clV6cXJKdjB3cWlVT1AyTytndVJNTGJaamlwTTFaSThXMGJNNDBOakQ5Z041M1R5bTErTkg0Tm4zSjJpeHVmY3YxU05VRkZBcFl2SExLYWMwa2hzVWxIUlVlMDcybzBFY2xObXN4WnQ5WUNubHBPWmJXVXJodmZLYkFXOGI4QW5nYzZGMlMxQkxVaklaa0tsVHVYZk84PSIsIk1JSUIvakNDQVlXZ0F3SUJBZ0lJZEpjbGlzYy9lbFF3Q2dZSUtvWkl6ajBFQXdNd1JURUxNQWtHQTFVRUJoTUNWVk14RkRBU0JnTlZCQW9NQzBGbVptbHliVlJ5ZFhOME1TQXdIZ1lEVlFRRERCZEJabVpwY20xVWNuVnpkQ0JRY21WdGFYVnRJRVZEUXpBZUZ3MHhNREF4TWpreE5ESXdNalJhRncwME1ERXlNekV4TkRJd01qUmFNRVV4Q3pBSkJnTlZCQVlUQWxWVE1SUXdFZ1lEVlFRS0RBdEJabVpwY20xVWNuVnpkREVnTUI0R0ExVUVBd3dYUVdabWFYSnRWSEoxYzNRZ1VISmxiV2wxYlNCRlEwTXdkakFRQmdjcWhrak9QUUlCQmdVcmdRUUFJZ05pQUFRTk1GNGJGWjBEMEtGNU5iYzZQSko2eWhVY3pXTHpuQ1pjQnozbFZQcWoxc3dTNnZRVVgraU9HYXN2TGtqbXJCaERlS3pRTjhPOXNzMHM1a2ZpR3VaanVEMHVMM2pFVDl2MEQ2Um9URlZ5YTVVZFRoaENsWGpNTnp5UjRwdGxLeW1qUWpCQU1CMEdBMVVkRGdRV0JCU2FyeWw2d0JFMU5TWlJNQUREYXY1QTFhN1dQREFQQmdOVkhSTUJBZjhFQlRBREFRSC9NQTRHQTFVZER3RUIvd1FFQXdJQkJqQUtCZ2dxaGtqT1BRUURBd05uQURCa0FqQVhDZk9IaUZCYXI4akFRcjlIWC9Wc2FvYmd4Q2QwNURoVDF3Vi9HelRqeGkrenlnazhONTNYNTdoRzhmMmg0bkVDTUVKWmgwUFVVZCs2MHdreVdzNklmbGM5bkY5Q2EvVUhMYlh3Z3BQNVdXK3VaUHBZNVlzZTQyTyt0WUhOYndLTWVRPT0iLCJNSUlCNFRDQ0FZZWdBd0lCQWdJUktqaWtISllLQk41Q3NpaWxDK2cwbUFJd0NnWUlLb1pJemowRUF3SXdVREVrTUNJR0ExVUVDeE1iUjJ4dlltRnNVMmxuYmlCRlEwTWdVbTl2ZENCRFFTQXRJRkkwTVJNd0VRWURWUVFLRXdwSGJHOWlZV3hUYVdkdU1STXdFUVlEVlFRREV3cEhiRzlpWVd4VGFXZHVNQjRYRFRFeU1URXhNekF3TURBd01Gb1hEVE00TURFeE9UQXpNVFF3TjFvd1VERWtNQ0lHQTFVRUN4TWJSMnh2WW1Gc1UybG5iaUJGUTBNZ1VtOXZkQ0JEUVNBdElGSTBNUk13RVFZRFZRUUtFd3BIYkc5aVlXeFRhV2R1TVJNd0VRWURWUVFERXdwSGJHOWlZV3hUYVdkdU1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRXVNWjUwNDlzSlE2Zkxqa1pIQU9rcnBybE9RY0pGc3Bqc2JtRytJcFh3VmZPUXZwem9mZGxRdjhld1FDeWJuTU8vOGNoNVJpa3F0bHhQNmpVdWM2TUhhTkNNRUF3RGdZRFZSMFBBUUgvQkFRREFnRUdNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdIUVlEVlIwT0JCWUVGRlN3ZTYxRnVPSkFmL3NLYnZ1K004azhvNFRWTUFvR0NDcUdTTTQ5QkFNQ0EwZ0FNRVVDSVFEY2txR2dFNmJQQTdEbXhDR1hrUG9VVnkwRDdPNDgwMjdLcUd4MnZLTGV1d0lnSjZpRkp6V2JWc2FqOGtmU3QyNGJBZ0FYcW1lbUZaSGUrcFRzZXd2NG40UT0iLCJNSUlGWURDQ0EwaWdBd0lCQWdJSkFPajZHV01VMHZvWU1BMEdDU3FHU0liM0RRRUJDd1VBTUJzeEdUQVhCZ05WQkFVVEVHWTVNakF3T1dVNE5UTmlObUl3TkRVd0hoY05NVFl3TlRJMk1UWXlPRFV5V2hjTk1qWXdOVEkwTVRZeU9EVXlXakFiTVJrd0Z3WURWUVFGRXhCbU9USXdNRGxsT0RVellqWmlNRFExTUlJQ0lqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FnOEFNSUlDQ2dLQ0FnRUFyN2JIZ2l1eHB3SHNLN1F1aTh4VUZtT3I3NWd2TXNkL2RURURESmRTU3h0ZjZBbjd4eXFwUlI5MFBMMmFieE0xZEVxbFhuZjJ0cXcxTmU0WHdsNWpsUmZkbkpMbU4wcFR5LzRsajQvN3R2MFNrM2lpS2t5cG5FVXRSNldmTWdIMFFaZktITTErZGkreTlURlJ0djZ5Ly8wcmIrVCtXOGE5bnNOTC9nZ2puYXI4NjQ2MXFPMHJPczJjWGpwM2tPRzFGRUo1TVZtRm1CR3RucktwYTczWHBYeVRxUnhCL00wbjFuL1c5bkdxQzRGU1lhMDRUNk41UklaR0JOMnoyTVQ1SUtHYkZsYkM4VXJXMER4VzdBWUltUVFjSHRHbC9tMDBRTFZXdXRIUW9WSlluRlBsWFRjSFl2QVNMdStSaGhzYkRteE1nSkowbWNEcHZzQzRQanZCK1R4eXdFbGdTNzB2RTBYbUxEK09KdHZzQnNsSFp2UEJLQ09kVDBNUyt0Z1NPSWZnYSt6MVoxZzcrRFZhZ2Y3cXV2bWFnOGpmUGlveUt2eG5LL0Vnc1RVVmkyZ2h6cTh3bTI3dWQvbUlNN0FZMnFFT1JSOEdvM1RWQjRIeldRZ3BacnQzaTVNSWxDYVk1MDRMelNSaWlnSEN6QVBsSHdzK1cwckI1TitlcjUvMnBKS25mQlNEaUNpRkFWdENMT1o3Z0xpTW0wamhPMkI2dFVYSEkvK01SUGp5MDJpNTlsSU5NUlJldjU2R0t0Y2Q5cU8vMGtVSldkWlRkQTJYb1M4Mml4UHZadFhRcFVwdUwxMmFiKzlFYURLOFo0UkhKWVlmQ1QzUTV2TkFYYWlXUSs4UFRXbTJRZ0JSL2Jrd1NXYytOcFVGZ05QTjlQdlFpOFdFZzVVbUFHTUNBd0VBQWFPQnBqQ0JvekFkQmdOVkhRNEVGZ1FVTm1IaEFIeUlCUWxSaTBSc1IvOGFUTW5xVHhJd0h3WURWUjBqQkJnd0ZvQVVObUhoQUh5SUJRbFJpMFJzUi84YVRNbnFUeEl3RHdZRFZSMFRBUUgvQkFVd0F3RUIvekFPQmdOVkhROEJBZjhFQkFNQ0FZWXdRQVlEVlIwZkJEa3dOekExb0RPZ01ZWXZhSFIwY0hNNkx5OWhibVJ5YjJsa0xtZHZiMmRzWldGd2FYTXVZMjl0TDJGMGRHVnpkR0YwYVc5dUwyTnliQzh3RFFZSktvWklodmNOQVFFTEJRQURnZ0lCQUNESXc0MUwzS2xYRzBhTWlTLy9jcXJHK0VTaEhVR284SE5zdzMwVzFrSnRqbjZVQndSTTZqbm1pd2ZCUGI4VkE5MWNoYjJ2c3NBdFgyemJUdnFCSjkrTEJQR0Nkdy9FNTNSYmY4NnFoeEthaUFIT2pwdkF5NVkzbTAwbXFDMHcvWnd2anUxdHdiNHZoTGFKNU5rVUpZc1VTN3JtSktISEJuRVRMaThHRnFpRXNxVFdwRy82aWJZQ3Y3cllEQkpEY1I5VzYyQlc5amZJb0JRY3hVQ1VKb3VNUEgyNWxMTmNEYzFzc3F2QzJ2N2lVZ0k5TGVvTTFzTm92cVBtUVVpRzlySGxpMXZYeHpDeWFNVGp3ZnRrSkxrZjY3MjRERmh1S3VnMmpJVFYwUWtYdmFKV0Y0blVhSE9UTkE0dUpVOVdEdlpMSTFqODNBKy94bkFKVXVjSXYvekdKMUFNSDJib0hxRjhDWTE2THBzWWdCdDZ0S3h4V0gwMFhjeURDZFcyS2xCQ2VxYlFQY3NGbVd5V3VneGRjZWtoWXNBV3lvU2Y4MThOVXNaZEJXQmFSL091a1hyTkxma1E3OUl5Wm9oWmJ2YWJPL1grTVZUM3JyaUFvS2M4b0UyVXdzNkRGKzYwUFY3L1dJUGpOdlh5U2Rxc3BJbVNONzhtZmx4RHF3THFSQllrQTNJNzVxcHBMR0c5cnA3VUNkUmp4TWw4WkRCbGQrN3l2SFZndDFjVnpKeDl4bnlHQ0MyM1VhaWNNRFNYWXJCNEk0V0hYUEdqeGhadUN1UEJMVGRPTFU4WVJ2TVlkRXZZZWJXSE1wdndHQ0Y2YkF4M0pCcEllT1Exd0RCNXkwVVNpY1YzWWdZR21pK05aZmhBNFVSU2g3N1lkNnV1Sk9KRU5SYU5WVHprIiwiTUlJRmd6Q0NBMnVnQXdJQkFnSU9SZWE3QTRNenc0VmxTT2IvUlZFd0RRWUpLb1pJaHZjTkFRRU1CUUF3VERFZ01CNEdBMVVFQ3hNWFIyeHZZbUZzVTJsbmJpQlNiMjkwSUVOQklDMGdVall4RXpBUkJnTlZCQW9UQ2tkc2IySmhiRk5wWjI0eEV6QVJCZ05WQkFNVENrZHNiMkpoYkZOcFoyNHdIaGNOTVRReE1qRXdNREF3TURBd1doY05NelF4TWpFd01EQXdNREF3V2pCTU1TQXdIZ1lEVlFRTEV4ZEhiRzlpWVd4VGFXZHVJRkp2YjNRZ1EwRWdMU0JTTmpFVE1CRUdBMVVFQ2hNS1IyeHZZbUZzVTJsbmJqRVRNQkVHQTFVRUF4TUtSMnh2WW1Gc1UybG5iakNDQWlJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dJUEFEQ0NBZ29DZ2dJQkFKVUg2SFBLWnZuc0ZNcDdQUGNOQ1BHMFJRc3NnclJJeHV0YlBLNkR1RUdTTXhTa2IzL3BLc3pHc0locnhiYUowY2F5L3hUT1VSUWg3RXJkRzFyRzFvZnVUVG9WQnUxa1pndVNnTXBFM25PVVR2T25pWDlQZUdNSXlCSlFiVUptTDAyNWVTaE5VaHFLR29DM0dZRU9mc1NLdkdSTUlSeERhTmM5UElyRnNtYlZrSnEzTVFiRnZ1SnRNZ2FtSHZtNTY2cWp1TCsrZ21OUTBQQVlpZC9rRDNuMTZxSWZLdEp3TG52bnZKTzdiVlBpU0h5TUVBYzQvMmF5ZDJGKzRPcU1QS3EwcFBiemxVb1NCMjM5akxLSno5Q2dZWGZJV0hTdzFDTTY5MTA2eXFMYm5RbmVYVVF0a1BHQnpWZVMrbjY4VUFSak5OOXJreGkrYXpheU9lU3NKRGEzOE8rMkhCTlhrN2Jlc3ZqaWhiZHpvcmcxcWtYeTRKMDJvVzlVaXZGeVZtNHVpTVZSUWtRVmxPNmp4VGlXbTA1T1dndEg4d1kyU1hjd3ZIRTM1YWJzSVFoMS9PWmhGajkzMWRtUmw0UUtiTlFDVFhUQUZPMzlPZnVEOGw0VW9RU3dDK24rN28vaGJndXlDTE5oWmdscXNRWTZaWlpad1BBMS9jbmFLSTBhRVlkd2dRcW9tblVkbmpxR0JRQ2UyNERXSmZuY0JaNG5XVXgyT1Z2cSthV2gySU1QMGYvZk1CSDVoYzh6U1BYS2JXUVVMSHBZVDlOTENFbkZsV1FhWXc1NVBmV3pqTXBZclp4Q1JYbHVEb2NaWEZTeFpiYS9qSnZjRStrTmI3Z3UzR2R1eVlzUnRZUVVpZ0FaY0lONWtaZVIxQm9udnpjZU1nZllGR004S0V5dkFnTUJBQUdqWXpCaE1BNEdBMVVkRHdFQi93UUVBd0lCQmpBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUIwR0ExVWREZ1FXQkJTdWJBV2preFBpb3VmaTF4eld4L0IveUdkVG9EQWZCZ05WSFNNRUdEQVdnQlN1YkFXamt4UGlvdWZpMXh6V3gvQi95R2RUb0RBTkJna3Foa2lHOXcwQkFRd0ZBQU9DQWdFQWd5WHQ2Tkg5bFZMTm5zQUVvSkZwNWx6UWhON2NyYUpQNkVkNDFtV1lxVnVvUElkOEFvclJicmNXYytaZndGU1kxWFMrd2MzaUVaR3RJeGc5M2VGeVJKYTBsVjdBZTQ2WmVCWkRFMVpYczZLek83VjMzRUJ5cktQcm16VStzUWdob2VmRVF6ZDVNcjYxNTV3c1RMeERLWm1PTU5Pc0llRGpIZnJZQnpOMlZBQWlLcmxOSUM1d2FOcmxVL3lEWE5PZDh2OUVERVJtOHRManZVWUFHbTBDdWlWZGphRXhVZDFVUmh4TjI1bVc3eG9jQkZ5bUZlOTQ0SG4rWGRzK3FreFYvWm9WcVcvaHB2dmZjRERwdys1Q1J1M0Nrd1dKK24xamV6L1FjWUY4QU9pWXJnNTROTU1sKzY4S255QnIzVHNUanhLTTRrRWFTSHB6b0hkcHg3WmNmNExJSHY1WUd5Z3JxR3l0WG0zQUJkSjd0K3VBL2lVMy9nS2JhS3hDWGNQdTljemM4RkIxMGpacG5PWjdCTjl1Qm1tMjNnb0pTRm1INjNzVVlIcGtxbWxENzVISFRPd1kzV3p2VXkyTW1lRmU4bkkrejFUSXZXZnNwQTlNUmYvVHVUQWpCMHlQRUwrR2x0bVpXclNaVnh5a3pMc1ZpVk82TEFVUDVNU2VHYkVZTk5WTW5icnQ5eCt2SkpVRWVLZ0R1KzZCNWRwZmZJdEtvWkIwSmFlelBrdklMRmE5eDhqdk9PSmNrdkI1OTV5RXVuUXRZUUVnZm43UjhrOEhXVitMTFVOUzYwWU1sT0gxWmtkNWQ5VlVXeCt0SkRmTFJWcE9vRVJJeU5pd21jVVZoQW4yMWtsSndHVzQ1aHB4YnFDbzhZTG9SVDVzMWdMWENtZURCVnJKcEJBPSIsIk1JSUNQekNDQWNXZ0F3SUJBZ0lRQlZWV3ZQSmVwRFUxdzZRUDFhdEZjakFLQmdncWhrak9QUVFEQXpCaE1Rc3dDUVlEVlFRR0V3SlZVekVWTUJNR0ExVUVDaE1NUkdsbmFVTmxjblFnU1c1ak1Sa3dGd1lEVlFRTEV4QjNkM2N1WkdsbmFXTmxjblF1WTI5dE1TQXdIZ1lEVlFRREV4ZEVhV2RwUTJWeWRDQkhiRzlpWVd3Z1VtOXZkQ0JITXpBZUZ3MHhNekE0TURFeE1qQXdNREJhRncwek9EQXhNVFV4TWpBd01EQmFNR0V4Q3pBSkJnTlZCQVlUQWxWVE1SVXdFd1lEVlFRS0V3eEVhV2RwUTJWeWRDQkpibU14R1RBWEJnTlZCQXNURUhkM2R5NWthV2RwWTJWeWRDNWpiMjB4SURBZUJnTlZCQU1URjBScFoybERaWEowSUVkc2IySmhiQ0JTYjI5MElFY3pNSFl3RUFZSEtvWkl6ajBDQVFZRks0RUVBQ0lEWWdBRTNhZlp1NHE0Qy9zTGZ5SFM4TDYrYy9NelhScThOT3JleHB1ODBKWDI4TXpRQzdwaFcxRkdmcDR0bis2T1l3d1g3QWR3OWMrRUxrQ0RuT2cvUVcwN3JkT2tGRmsyZUowRFErNFFFMnh5M3E2SXA2RnJ0VVBPWjl3ai93TWNvK0krbzBJd1FEQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01BNEdBMVVkRHdFQi93UUVBd0lCaGpBZEJnTlZIUTRFRmdRVXM5dElwUG1oeGRpdU5rSE1FV05wWWltOFM4WXdDZ1lJS29aSXpqMEVBd01EYUFBd1pRSXhBSzI4OG13L0VrclJMVG5EQ2dtWGMvU0lOb3lJSjd2bWlJMVFoYWRqK1o0eTNtYVREL0hNc1FtUDNXeXIrbXQvb0FJd09XWmJ3bVNOdUo1UTNLalZTYUx0eDl6UlNYOFhBYmpJaG85T2pJZ3JxSnFwaXNYUkFMMzRWT0thNVZ0OHN5Y1giLCJNSUlDaVRDQ0FnK2dBd0lCQWdJUUgwZXZxbUlBY0ZCVVRBR2VtMk9aS2pBS0JnZ3Foa2pPUFFRREF6Q0JoVEVMTUFrR0ExVUVCaE1DUjBJeEd6QVpCZ05WQkFnVEVrZHlaV0YwWlhJZ1RXRnVZMmhsYzNSbGNqRVFNQTRHQTFVRUJ4TUhVMkZzWm05eVpERWFNQmdHQTFVRUNoTVJRMDlOVDBSUElFTkJJRXhwYldsMFpXUXhLekFwQmdOVkJBTVRJa05QVFU5RVR5QkZRME1nUTJWeWRHbG1hV05oZEdsdmJpQkJkWFJvYjNKcGRIa3dIaGNOTURnd016QTJNREF3TURBd1doY05Nemd3TVRFNE1qTTFPVFU1V2pDQmhURUxNQWtHQTFVRUJoTUNSMEl4R3pBWkJnTlZCQWdURWtkeVpXRjBaWElnVFdGdVkyaGxjM1JsY2pFUU1BNEdBMVVFQnhNSFUyRnNabTl5WkRFYU1CZ0dBMVVFQ2hNUlEwOU5UMFJQSUVOQklFeHBiV2wwWldReEt6QXBCZ05WQkFNVElrTlBUVTlFVHlCRlEwTWdRMlZ5ZEdsbWFXTmhkR2x2YmlCQmRYUm9iM0pwZEhrd2RqQVFCZ2NxaGtqT1BRSUJCZ1VyZ1FRQUlnTmlBQVFEUjNzdmRjbUNGWVg3ZGVTUkZ0U3JZcG4xUGxJTEJzNUJBSCtYNFFva1BCMEJCTzQ5MG8wSmx3emdkZVQ2KzNlS0t2VURZRXMyaXhZakZxMEpjZlJLOUNoUXRQNklIRzQvYkM4dkNWbGJwVnNMTTVuaXd6MkorV29zNzdMVEJ1bWpRakJBTUIwR0ExVWREZ1FXQkJSMWNhY1pTQm04blozcVFVZmZsTVJJZDVuVGVUQU9CZ05WSFE4QkFmOEVCQU1DQVFZd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBS0JnZ3Foa2pPUFFRREF3Tm9BREJsQWpFQTd3TmJlcXkzZUFweXQ0amYvN1ZHRkFrSytxRG1mUWpHR29lOUdLaHp2U2JLWUF5ZHpwbWZ6MXdQTU9HK0ZESHFBakFVOUpNOFNhY3plcEJHUjdOamZST2JUcmR2R0RlQVUvN2RJT0ExbWpiUnh3RzU1dHpkOC84ZExEb1dWOW1TT2RZPSIsIk1JSURYekNDQWtlZ0F3SUJBZ0lMQkFBQUFBQUJJVmhUQ0tJd0RRWUpLb1pJaHZjTkFRRUxCUUF3VERFZ01CNEdBMVVFQ3hNWFIyeHZZbUZzVTJsbmJpQlNiMjkwSUVOQklDMGdVak14RXpBUkJnTlZCQW9UQ2tkc2IySmhiRk5wWjI0eEV6QVJCZ05WQkFNVENrZHNiMkpoYkZOcFoyNHdIaGNOTURrd016RTRNVEF3TURBd1doY05Namt3TXpFNE1UQXdNREF3V2pCTU1TQXdIZ1lEVlFRTEV4ZEhiRzlpWVd4VGFXZHVJRkp2YjNRZ1EwRWdMU0JTTXpFVE1CRUdBMVVFQ2hNS1IyeHZZbUZzVTJsbmJqRVRNQkVHQTFVRUF4TUtSMnh2WW1Gc1UybG5iakNDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNd2xkcEI1Qm5naUZ2WEFnN2FFeWlpZS9RVjJFY1d0aUhMOFJnSkR4N0tLblFSZkpNc3VTK0ZnZ2tiaFVxc01nVWR3Yk4xazBldjFMS01QZ2owTUs2NlgxN1lVaGhCNXV6c1RnSGVNQ09GSjBtcGlMeDllK3BabzM0a25sVGlmQnRjK3ljc21XUTF6M3JESTZTWU9neFhHNzF1TDBnUmd5a21tS1BacE8vYkx5Q2lSNVoyS1lWYzNySFFVM0hUZ091NXlMeTZjKzlDN3YvVTlBT0VHTStpQ0s2NVRwam9XYzR6ZFFRNGdPc0MwcDZIcHNrK1FMakpnNlZmTHVRU1NhR2psT0NaZ2RiS2ZkLytSRk8rdUlFbjhyVUFWU05FQ01XRVpYcmlYNzYxM3QyU2Flcjlmd1JQdm0yTDdEV3pnVkdrV3FRUGFidW1EazNGMnhtbUZnaGNDQXdFQUFhTkNNRUF3RGdZRFZSMFBBUUgvQkFRREFnRUdNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdIUVlEVlIwT0JCWUVGSS93UzMrb0xrVWtyazFRK21PYWk5N2kzUnU4TUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFCTFFOdkFVS3IreUF6djk1WlVSVW03bGdBSlFheXpFNGFHS0Fjenltdm1kTG02QUMydXBBclQ5Zkh4RDRxL2MyZEtnOGRFZTNqZ3IyNXNid01wampNNVJjT081TGxYYktyOEVwYnNVOFl0NUNSc3VaUmorOXhUYUdkV1BvTzR6elVodzhsby9zN2F3bE9xekpDSzZmQmRSb3lWM1hwWUtCb3ZIZDdOQURkQmorMUViZGRUS0pkKzgyY0VIaFhYaXBhMDA5NU1KNlJNRzNOemR2UVhtY0lmZWc3akxRaXRDaHdzL3p5clZRNFBrWDQyNjhOWFNiN2hMaTE4WUl2RFFWRVRJNTNPOXpKcmxBR29tZWNzTXg4Nk95WFNoa0RPT3l5R2VNbGhMeFM2N3R0VmI5K0U3Z1VKVGIwbzJITE8wMkpRWlI3cmtwZURNZG16dGNwSFdEOWYiLCJNSUlEeFRDQ0FxMmdBd0lCQWdJQkFEQU5CZ2txaGtpRzl3MEJBUXNGQURDQmd6RUxNQWtHQTFVRUJoTUNWVk14RURBT0JnTlZCQWdUQjBGeWFYcHZibUV4RXpBUkJnTlZCQWNUQ2xOamIzUjBjMlJoYkdVeEdqQVlCZ05WQkFvVEVVZHZSR0ZrWkhrdVkyOXRMQ0JKYm1NdU1URXdMd1lEVlFRREV5aEhieUJFWVdSa2VTQlNiMjkwSUVObGNuUnBabWxqWVhSbElFRjFkR2h2Y21sMGVTQXRJRWN5TUI0WERUQTVNRGt3TVRBd01EQXdNRm9YRFRNM01USXpNVEl6TlRrMU9Wb3dnWU14Q3pBSkJnTlZCQVlUQWxWVE1SQXdEZ1lEVlFRSUV3ZEJjbWw2YjI1aE1STXdFUVlEVlFRSEV3cFRZMjkwZEhOa1lXeGxNUm93R0FZRFZRUUtFeEZIYjBSaFpHUjVMbU52YlN3Z1NXNWpMakV4TUM4R0ExVUVBeE1vUjI4Z1JHRmtaSGtnVW05dmRDQkRaWEowYVdacFkyRjBaU0JCZFhSb2IzSnBkSGtnTFNCSE1qQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQUw5eFlnangrbGswOXh2SkdLUDNnRWxZNlNLREU2YkZJRU1CTzRUeDVvVkpueWZxOW9RYlRxQzAyM0NZeHpJQnNRVStCMDd1OVBwUEwxa3dJdWVyR1ZacjRvQUgvUE1XZFlBNVVYdmwrVFcyZEU2cGpZSVQ1TFkvcVFPRCtxSytpaFZxZjk0THc3WVpGQVhLNnNPb0JKUTdSbnd5RGZNQVppTElqV2x0Tm93UkdMZlRzaHhndERqNkFvek8wOTFHQjk0S1B1dGRmTWg4KzdBclU2U1NZbWxSSlFWaEdrU0JqQ3lwUTVZajM2dzZnWm9PS2NVY3FlbGRIcmFlbmpBS09jN3hpSUQ3UzEzTU11eUZZa01sTkFKV0p3R1J0RHR3S2o5dXNlaWNpQUY5bjlUNTIxTnRZSjIvTE9kWXE3aGZSdnpPeEJzRFBBbnJTVEZjYVVhejRFY0NBd0VBQWFOQ01FQXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QU9CZ05WSFE4QkFmOEVCQU1DQVFZd0hRWURWUjBPQkJZRUZEcWFoUWNRWnlpMjcvYTlCVUZ1SU1HVTJnL2VNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUNaMjExNTFmbVhXV2NEWWZGK093WXhkUzJoSUk1UFpZZTA5NmFjdk5qcEw5RGJXdTdQZEl4enREaEMyZ1Y3K0FKMXVQMmxzZGV1OXRmZUU4dFRFSDZLUnRHWCtyY3VLeEdya0xBbmdQbm9uMXJwTjUrcjVOOXNzNFVYblQzWkpFOTVrVFhXWHdUcmdJT3JtZ0l0dFJEMDJKREhCSE5BN1hJbG9LbWY3SjZyYUJLWlY4YVBFam9KcEwxRS9RWVZOOEdiNURLajdUam8yR1R6TEg0VS9BTHFuODMvQjJnWDJ5S1FPQzE2amRGVThXbmpYelBLZWoxN0N1UEtmMTg1NWVKMXVzVjJHRFBPTFBBdlRLMzNzZWZPVDZqRW0wcFVCc1YvZmRVSUQrSWMvbjRYdUt4ZTl0UVdza01KREUzMnAydTBtWVJseW5xSTR1SkV2bHozNmh6MSIsIk1JSUVrVENDQTNtZ0F3SUJBZ0lFUld0UVZEQU5CZ2txaGtpRzl3MEJBUVVGQURDQnNERUxNQWtHQTFVRUJoTUNWVk14RmpBVUJnTlZCQW9URFVWdWRISjFjM1FzSUVsdVl5NHhPVEEzQmdOVkJBc1RNSGQzZHk1bGJuUnlkWE4wTG01bGRDOURVRk1nYVhNZ2FXNWpiM0p3YjNKaGRHVmtJR0o1SUhKbFptVnlaVzVqWlRFZk1CMEdBMVVFQ3hNV0tHTXBJREl3TURZZ1JXNTBjblZ6ZEN3Z1NXNWpMakV0TUNzR0ExVUVBeE1rUlc1MGNuVnpkQ0JTYjI5MElFTmxjblJwWm1sallYUnBiMjRnUVhWMGFHOXlhWFI1TUI0WERUQTJNVEV5TnpJd01qTTBNbG9YRFRJMk1URXlOekl3TlRNME1sb3dnYkF4Q3pBSkJnTlZCQVlUQWxWVE1SWXdGQVlEVlFRS0V3MUZiblJ5ZFhOMExDQkpibU11TVRrd053WURWUVFMRXpCM2QzY3VaVzUwY25WemRDNXVaWFF2UTFCVElHbHpJR2x1WTI5eWNHOXlZWFJsWkNCaWVTQnlaV1psY21WdVkyVXhIekFkQmdOVkJBc1RGaWhqS1NBeU1EQTJJRVZ1ZEhKMWMzUXNJRWx1WXk0eExUQXJCZ05WQkFNVEpFVnVkSEoxYzNRZ1VtOXZkQ0JEWlhKMGFXWnBZMkYwYVc5dUlFRjFkR2h2Y21sMGVUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQUxhVnRrTkMrc1p0S205STM1Uk1PVmNGN3NONUVVRm9OdTNzL3BvQmo2RTRLUHozRUVabUxrMGVHckVhVHNiUndKV0lzTW4vTVlzekE5dTNnM3MrSUlSZTdiSldLS2Y0NExsQWNUZkZ5MGNPbHlwb3dDS1ZZaFhiUjluMTBDdi9na3ZKclQ3ZVROdVFnRkEvQ1lxRUFPd3dDajBZemZ2OUtsbWFJNVVYTEVXZUgyNURlVzBNWEpqK1NLZkZJMGRjWHYxdTV4NjA5bWhGMFlhRFc2S0tqYkhqS1lEK0pYR0lyYjY4ajZ4U2xrdXFVWTNrRXpFWjZFNU5uOXVzczJyVnZEbFVjY3A2ZW4rUTNYMGRnTm1CdTFrbXdoSCs1cFBpOTREa1pmczBOdzRwZ0hCTnJ6aUdMcDUvVjYrZUY2N3JITXNvSVYrMkhOam5vZ1FpK2RQYTJNc0NBd0VBQWFPQnNEQ0JyVEFPQmdOVkhROEJBZjhFQkFNQ0FRWXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXJCZ05WSFJBRUpEQWlnQTh5TURBMk1URXlOekl3TWpNME1scUJEekl3TWpZeE1USTNNakExTXpReVdqQWZCZ05WSFNNRUdEQVdnQlJva09SbnBLWlRnTWVHWnFUeDkwdEQrNFM5YlRBZEJnTlZIUTRFRmdRVWFKRGtaNlNtVTRESGhtYWs4ZmRMUS91RXZXMHdIUVlKS29aSWh2WjlCMEVBQkJBd0Roc0lWamN1TVRvMExqQURBZ1NRTUEwR0NTcUdTSWIzRFFFQkJRVUFBNElCQVFDVDFEQ3cxd01nS3RENVkraVJEQVVncVY4WnludHlUdFN4MjlDVysxUmFHU3dNQ1BleXZJV29uWDl0TzFLekt0dm4xSVNNWS9ZUHl5WUJrVkJzOUY4VTRwTjB3Qk9lTURwUTQ3Umd4Unp3SWtTTmNVZXN5QnJKNlp1YUFHQVQvM0IrWHhGTlNSdXpGVko3eVZUYXY1MlZyMnVhMko3cDhlUkRqZUlSUkRxL3I3MkRRbk5TaTZxN3B5blA5V1FjQ2szUnZLcXNueXJRLzM5LzJuM3FzZTB3SmNHRTJqVFNXM2lEVnV5Y05zTW00aEgyWjBrZGtxdU0rK3YvZXU2RlNxZFFnUENuWEVxVUxsOEZtVHhTUWVETnRHUFBBVU82bklQY2oyQTc4MXEwdEh1dTJndVFPSFh2Z1IxbTB2ZFhjRGF6di93b3IzRWxoVnNUL2g1L1dyUTgiLCJNSUlDQ2pDQ0FaR2dBd0lCQWdJUWJrZXB5SXVVdHVpN095cllvckxCbVRBS0JnZ3Foa2pPUFFRREF6QkhNUXN3Q1FZRFZRUUdFd0pWVXpFaU1DQUdBMVVFQ2hNWlIyOXZaMnhsSUZSeWRYTjBJRk5sY25acFkyVnpJRXhNUXpFVU1CSUdBMVVFQXhNTFIxUlRJRkp2YjNRZ1VqUXdIaGNOTVRZd05qSXlNREF3TURBd1doY05Nell3TmpJeU1EQXdNREF3V2pCSE1Rc3dDUVlEVlFRR0V3SlZVekVpTUNBR0ExVUVDaE1aUjI5dloyeGxJRlJ5ZFhOMElGTmxjblpwWTJWeklFeE1RekVVTUJJR0ExVUVBeE1MUjFSVElGSnZiM1FnVWpRd2RqQVFCZ2NxaGtqT1BRSUJCZ1VyZ1FRQUlnTmlBQVR6ZEhPbmFJdGdya080TmNXQk1IdExTWjM3d1dITzV0NUd2V3ZWWVJnMXJrRGRjL2VKa1RCYTZ6enVoWHlpUUhZN3FjYTRSOWdxNTVLUmFuUHBzWEk1bnltZm9walRYMTVZaG1VUG9ZUmxCdEhjaThuSGM4aU1haS9seEt2UkhZcWpRakJBTUE0R0ExVWREd0VCL3dRRUF3SUJCakFQQmdOVkhSTUJBZjhFQlRBREFRSC9NQjBHQTFVZERnUVdCQlNBVE5icmRQOUpOcVBWMlB5MVBzVnE4SlFkakRBS0JnZ3Foa2pPUFFRREF3Tm5BREJrQWpCcVVGSjBDTVJ3M0o1UWRDSG9qWG9odzArV2JoWFJJalZoTGZvSU4rNFpiYTNic3N4OUJ6VDFZQmtzdFRUWmJ5QUNNQU54c2JxallBdUc3Wm9JYXBWb24rS3o0Wk5rZkY2VHB0OTVMWTJGNDVUUEkxMXh6UEt3VGRiK21jaVVxWFdpNHc9PSIsIk1JSURWRENDQWp5Z0F3SUJBZ0lEQWpSV01BMEdDU3FHU0liM0RRRUJCUVVBTUVJeEN6QUpCZ05WQkFZVEFsVlRNUll3RkFZRFZRUUtFdzFIWlc5VWNuVnpkQ0JKYm1NdU1Sc3dHUVlEVlFRREV4SkhaVzlVY25WemRDQkhiRzlpWVd3Z1EwRXdIaGNOTURJd05USXhNRFF3TURBd1doY05Nakl3TlRJeE1EUXdNREF3V2pCQ01Rc3dDUVlEVlFRR0V3SlZVekVXTUJRR0ExVUVDaE1OUjJWdlZISjFjM1FnU1c1akxqRWJNQmtHQTFVRUF4TVNSMlZ2VkhKMWMzUWdSMnh2WW1Gc0lFTkJNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQTJzd1lZekQ5OUJjakdsWitXOTg4YkRqa2NiZDRrZFM4b2RoTStLaER0Z1BwVFNFSENJamFXQzltT1NtOUJYaUxuVGpvQmJkcWZuR2s1c1JncHJEdmdPU0pLQStlSmRidGcvT3RwcEhIbU1sQ0dEVVVuYTJZUnBJdVQ4cnhoMFBCRnBWWExWRHZpUzJBZWxldDh1NWZhOUlBamJrVStCUVZOZG5BUnFON2NzaVJ2OGxWSzgzUWx6NmNKbVRNMzg2REdYSEtUdWJVMVh1cEdjMVYzc2pzMGw0NFUrVmNUNHd0L2xBak52eG01c3VPcERrWkFMZVZBam1SQ3c3K09DN1JIUVdhOWswK2J3OEhIYThzSG85Z09lTDZObE1UT2RSZUppdmJQYWdVdlRMckdBTW9VZ1J4NWFzelBlRTR1d2MyaEdLY2Vlb1dNUFJmd0N2b2NXdmsrUUlEQVFBQm8xTXdVVEFQQmdOVkhSTUJBZjhFQlRBREFRSC9NQjBHQTFVZERnUVdCQlRBZXBob2pZbjdxd1ZrREJGOXFuMWx1TXJNVGpBZkJnTlZIU01FR0RBV2dCVEFlcGhvalluN3F3VmtEQkY5cW4xbHVNck1UakFOQmdrcWhraUc5dzBCQVFVRkFBT0NBUUVBTmVNcGF1VXZYVlNPS1ZDVW41a2FGT1NQZUNwaWxLSW5aNTdRenhwZVIrbkJzcVRQM1VFYUJVNmJTKzVLYjFWU3N5U2hOd3JyWkhZcUxpenovVHQxa0wvNmNkakhQVGZTdFFXVllybW0zb2s5Tm5zNGQwaVhyS1lnank2bXlRekNzcGxGQU1mT0VWRWlJdUNsNnJZVlNBbGs2bDVQZFBjRlBzZUtVZ3piRmJTOWJadmx4ckZVYUtuamFaQzJtcVVQdUxrL0lIMnVTclc0bk9RZHRxdm1sS1hCeDRPdDIvVW5odzRFYk5YLzNhQmQ3WWRTdHlzVkFxNDVwbXAwNmRyRTU3eE5OQjZwWEUwelg1SUpMNGhtWFhlWHh4MTJFNm5WNWZFV0NSRTExYXpiSkhGd0xKaFdDOWtYdE5IalVTdGVkZWpWME54UE5PM0NCV2FBb2N2bU13PT0iLCJNSUlEZHpDQ0FsK2dBd0lCQWdJRUFnQUF1VEFOQmdrcWhraUc5dzBCQVFVRkFEQmFNUXN3Q1FZRFZRUUdFd0pKUlRFU01CQUdBMVVFQ2hNSlFtRnNkR2x0YjNKbE1STXdFUVlEVlFRTEV3cERlV0psY2xSeWRYTjBNU0l3SUFZRFZRUURFeGxDWVd4MGFXMXZjbVVnUTNsaVpYSlVjblZ6ZENCU2IyOTBNQjRYRFRBd01EVXhNakU0TkRZd01Gb1hEVEkxTURVeE1qSXpOVGt3TUZvd1dqRUxNQWtHQTFVRUJoTUNTVVV4RWpBUUJnTlZCQW9UQ1VKaGJIUnBiVzl5WlRFVE1CRUdBMVVFQ3hNS1EzbGlaWEpVY25WemRERWlNQ0FHQTFVRUF4TVpRbUZzZEdsdGIzSmxJRU41WW1WeVZISjFjM1FnVW05dmREQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQUtNRXV5S3JtRDFYNkNaeW1yVjUxQ25pNGVpVmdMR3c0MXVPS3ltYVpOK2hYZTJ3Q1FWdDJ5Z3V6bUtpWXY2MGlOb1M2empySVozQVFTc0JVbnVJZDlNY2o4ZTZ1WWkxYWdubmMrZ1JRS2ZSek1waWpTM2xqd3VtVU5Lb1VNTW82dldySlllS21wWWNxV2U0UHd6VjkvbFNFeS9DRzlWd2NQQ1B3QkxLQnN1YTRkbktNM3AzMXZqc3VmRm9SRUpJRTlMQXdxU3VYbUQrdHFZRi9MVGRCMWtDMUZrWW1HUDFwV1Bna0F4OVhiSUdldk9GNnV2VUE2NWVoRDVmL3hYdGFiejVPVFp5ZGM5M1VrM3p5WkFzdVQzbHlTTlRQeDhrbUNGY0I1a3B2Y1k2N09kdWhqcHJsM1JqTTcxb0dESHdlSTEydi95ZWpsMHFocWROa053bkdqa0NBd0VBQWFORk1FTXdIUVlEVlIwT0JCWUVGT1dkV1RDQ1Ixak1yUG9JVkRhR2V6cTFCRTN3TUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFNd0RnWURWUjBQQVFIL0JBUURBZ0VHTUEwR0NTcUdTSWIzRFFFQkJRVUFBNElCQVFDRkRGMk81RzlSYUVJRm9OMjdUeWNsaEFPOTkyVDlMZGN3NDZRUUYrdmFLU20yZVQ5Mjloa1RJN2dRQ3ZsWXBOUmhjTDBFWVdvU2loZlZDcjNGdkRCODF1a01KWTJHUUUvc3pLTitPTVkzRVUvdDNXZ3hqa3pTc3dGMDdyNTFYZ2RJR245dy94WmNoTUI1aGJnRi9YKytaUkdqRDhBQ3RQaFNOemtFMWFreGVoaS9vQ3IwRXBuM28wV0M0enhlOVoyZXRjaWVmQzdJcEo1T0NCUkxiZjF3YldzYVk3MWs1aCszenZEeW55NjdHN2Z5VUloemtzTGk0eGFObWpJQ3E0NFkzZWtRRWU1K05hdVFyejR3bEhyUU16Mm5aUS8xL0k2ZVlzOUhSQ3dCWGJzZHRUTFNSOUk0THREK2dkd3lhaDYxN2p6Vi9PZUJIUm5ESkVMcVl6bXAiLCJNSUlDK1RDQ0FvQ2dBd0lCQWdJTkFLYUxlU2tBQUFBQVVOQ1IrVEFLQmdncWhrak9QUVFEQXpDQnZ6RUxNQWtHQTFVRUJoTUNWVk14RmpBVUJnTlZCQW9URFVWdWRISjFjM1FzSUVsdVl5NHhLREFtQmdOVkJBc1RIMU5sWlNCM2QzY3VaVzUwY25WemRDNXVaWFF2YkdWbllXd3RkR1Z5YlhNeE9UQTNCZ05WQkFzVE1DaGpLU0F5TURFeUlFVnVkSEoxYzNRc0lFbHVZeTRnTFNCbWIzSWdZWFYwYUc5eWFYcGxaQ0IxYzJVZ2IyNXNlVEV6TURFR0ExVUVBeE1xUlc1MGNuVnpkQ0JTYjI5MElFTmxjblJwWm1sallYUnBiMjRnUVhWMGFHOXlhWFI1SUMwZ1JVTXhNQjRYRFRFeU1USXhPREUxTWpVek5sb1hEVE0zTVRJeE9ERTFOVFV6Tmxvd2diOHhDekFKQmdOVkJBWVRBbFZUTVJZd0ZBWURWUVFLRXcxRmJuUnlkWE4wTENCSmJtTXVNU2d3SmdZRFZRUUxFeDlUWldVZ2QzZDNMbVZ1ZEhKMWMzUXVibVYwTDJ4bFoyRnNMWFJsY20xek1Ua3dOd1lEVlFRTEV6QW9ZeWtnTWpBeE1pQkZiblJ5ZFhOMExDQkpibU11SUMwZ1ptOXlJR0YxZEdodmNtbDZaV1FnZFhObElHOXViSGt4TXpBeEJnTlZCQU1US2tWdWRISjFjM1FnVW05dmRDQkRaWEowYVdacFkyRjBhVzl1SUVGMWRHaHZjbWwwZVNBdElFVkRNVEIyTUJBR0J5cUdTTTQ5QWdFR0JTdUJCQUFpQTJJQUJJUVR5ZEM2YlVGNzRtelE2MVZmWmdJYUpQUmJpV2xINDdqQ2ZmSHlBc1dmb1BaYjFZc0dHWVpQVXhCdEJ5UW5vYUQ0MVVjWllVeDl5cE1uNm5RTTcyK1dDZjVqN0hCZE5xMW5kNjdKblh4VlJEcWlZMUVmOWVOaTFLbEhCejdNSUtOQ01FQXdEZ1lEVlIwUEFRSC9CQVFEQWdFR01BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0hRWURWUjBPQkJZRUZMZGo1eHJkamVrSXBsV0RwT0JxVUVGbEVVSkpNQW9HQ0NxR1NNNDlCQU1EQTJjQU1HUUNNR0Y1Mk9WQ1I5OGNybE9aRjdadkhIM2h2eEdVMFFPSWRlU05pYVNLZDBiZWJXSHZBdlg3dGQvTS9rNy8vcW5tcHdJd1c1blhoVGNHdFhzSS9lc25pMHFVK2VINnA0NG1DT2g4a21odGM5aHZKcXdoQXJpWnR5WkJXeVZncnRCSUd1NEciLCJNSUlEampDQ0FuYWdBd0lCQWdJUUF6cng1cWNScWFDN0tHU3hIUW42NVRBTkJna3Foa2lHOXcwQkFRc0ZBREJoTVFzd0NRWURWUVFHRXdKVlV6RVZNQk1HQTFVRUNoTU1SR2xuYVVObGNuUWdTVzVqTVJrd0Z3WURWUVFMRXhCM2QzY3VaR2xuYVdObGNuUXVZMjl0TVNBd0hnWURWUVFERXhkRWFXZHBRMlZ5ZENCSGJHOWlZV3dnVW05dmRDQkhNakFlRncweE16QTRNREV4TWpBd01EQmFGdzB6T0RBeE1UVXhNakF3TURCYU1HRXhDekFKQmdOVkJBWVRBbFZUTVJVd0V3WURWUVFLRXd4RWFXZHBRMlZ5ZENCSmJtTXhHVEFYQmdOVkJBc1RFSGQzZHk1a2FXZHBZMlZ5ZEM1amIyMHhJREFlQmdOVkJBTVRGMFJwWjJsRFpYSjBJRWRzYjJKaGJDQlNiMjkwSUVjeU1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBdXpmTk5OeDdhOG15YUpDdFNuWC9Scm9oQ2dpTjlSbFV5ZnVJMi9PdThqcUprVHg2NXFzR0dtdlByQzNvWGdra1JMcGltbjdXbzZoKzRGUjFJQVdzVUxlY1l4cHNNTnphSHhteDF4N2UvZGZneTVTRE42N3NIME5PM1hzczByMHVwUy9rcWJpdE90U1pwTFlsNlp0ckFHQ1NZUDlQSVVrWTkyZVFxMkVHbkkveXV1bTA2Wkl5YTdYelYraGRHODJNSGF1VkJKVko4elV0bHVOSmJkMTM0L3RKUzdTc1ZRZXBqNVd6dENPN1RHMUY4UGFwc3BVd3RQMU1WWXduU2xjVWZJS2R6WE9TMHhaS0JneU1VTkdQSGdtK0Y2SG1JY3I5ZytVUXZJT2xDc1JuS1BaekZCUTlSbmJEaHhTSklUUk5ydzlGREtaSm9icTduTVd4TTRNcGhRSURBUUFCbzBJd1FEQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01BNEdBMVVkRHdFQi93UUVBd0lCaGpBZEJnTlZIUTRFRmdRVVRpSlVJQmlWNXVOdTVnLzYrcmtTN1FZWGp6a3dEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBR0JuS0pSdkRraGo2ekhkNm1jWTFZbDlQTVdMU24vcHZ0c3JGOSt3WDNOM0tqSVRPWUZuUW9RajhrVm5OZXlJdi9pUHNHRU1OS1N1SUV5RXh0djROZUYyMmQrbVFydkhSQWlHZnpaMEpGcmFiQTBVV1RXOThrbmR0aC9Kc3cxSEtqMlpMN3RjdTdYVUlPR1pYMU5HRmR0b20vRHpNTlUrTWVLTmhKN2ppdHJhbGo0MUU2VmY4UGx3VUhCSFFSRlhHVTdBajY0R3hKVVRGeThiSlo5MThyR09tYUZ2RTdGQmNmNklLc2hQRUNCVjEvTVVSZVhnUlBUcWg1VXlrdzcrVTBiNkxKMy9peUs1UzlrSlJhVGVwTGlhV04wYmZWS2ZqbGxEaUlHa25pYlZiNjNkRGNZM2ZlMERraHZsZDE5MjdqeU54RjFXVzZMWlptNnpOVGZsTXJZPSIsIk1JSUZrRENDQTNpZ0F3SUJBZ0lRQlpzYlY1Nk9JVExpT1FlOXAzZDFYREFOQmdrcWhraUc5dzBCQVF3RkFEQmlNUXN3Q1FZRFZRUUdFd0pWVXpFVk1CTUdBMVVFQ2hNTVJHbG5hVU5sY25RZ1NXNWpNUmt3RndZRFZRUUxFeEIzZDNjdVpHbG5hV05sY25RdVkyOXRNU0V3SHdZRFZRUURFeGhFYVdkcFEyVnlkQ0JVY25WemRHVmtJRkp2YjNRZ1J6UXdIaGNOTVRNd09EQXhNVEl3TURBd1doY05Nemd3TVRFMU1USXdNREF3V2pCaU1Rc3dDUVlEVlFRR0V3SlZVekVWTUJNR0ExVUVDaE1NUkdsbmFVTmxjblFnU1c1ak1Sa3dGd1lEVlFRTEV4QjNkM2N1WkdsbmFXTmxjblF1WTI5dE1TRXdId1lEVlFRREV4aEVhV2RwUTJWeWRDQlVjblZ6ZEdWa0lGSnZiM1FnUnpRd2dnSWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUNEd0F3Z2dJS0FvSUNBUUMvNXBCemFONjc1RjFLUERBaU1Ha3o3TUtuSlM3SklUM3lpdGhad3VFcHB6MVlxM2FhemE1N0c0UU54REFmOHh1a09CYnJWc2FYYlIycnNubnl5aEhTNUYvV0JUeFNEMUlmeHA0VnBYNituNmxYRmxsVmNxOW9rM0RDc3JwMW1XcHpNcFRSRUVRUUx0K0M4d2VFNW5RN2JYSGlMUXdiN2lEVnlTQWRZeWt0enV4ZVRzaVQrQ0ZobXpUckJjWmU3RnNhdk92Sno4MnNORUJmc1hwbTduZklTS2htVjFlZlZGaU9EQ3UzVDZjdzJWYnV5bnRkNDYzSlQxN2xOZWN4eTlxVFh0eU9qNERhdHBHWVFKQjV3M2pIdHJIRXRXb1lPQU1RamRqVU42UXVCWDJJOVlJK0VKRndxMVdDUVRMWDJ3UnpLbTZSQVh3aFROUzhyaHNEZFYxNFp0azZNVVNhTTBDL0NOZGFTYVRDNXFtZ1o5MmtKN3loVHptMUVWZ1g5eVJjUm85azk4RnBpSGFZZGoxWlhVSjJoNG1YYVhwSThPQ2lFaHRtbW5USzNrc2U1dzVqcnViVTc1S1NPcDQ5M0FEa1JTV0p0cHBFR1N0K3dKUzAwbUZ0NnpQWnhkOUxCQURNZlJ5Vnc0LzNJYkt5RWJlN2YvTFZqSEFzUVdDcXNXTVlSSlVhZG1KKzlvQ3crK2hrcGpQUmlRZmh2YmZtUTZRWXVLWjNBZUVQbEF3aEhiSlVLU1dKYk9VT1VsRkhkTDRtckxaQmRkNTZyRitOUDhtODAwRVJFbHZsRUZEck1jWEtjaFlpQ2Q5OFRIVS9ZK3doWDhRZ1VXdHZzYXVHaTAvQzFrVmZuU0Q4b1I3RndJK2lzWDRLSnBuMTVHa3ZtQjB0OWRtcHNoM2xHd0lEQVFBQm8wSXdRREFQQmdOVkhSTUJBZjhFQlRBREFRSC9NQTRHQTFVZER3RUIvd1FFQXdJQmhqQWRCZ05WSFE0RUZnUVU3TmZqZ3RKeFhXUk0zeTVuUCtlNm1LNGNEMDh3RFFZSktvWklodmNOQVFFTUJRQURnZ0lCQUx0aDJYMnBiTDRYeEpFYnc2R2lBSTNqWkdnUFZzOTNybkQ1L1pwS21ibkplRndNREYvazVoUXBWZ3MyU1YxRVkrQ3RuSllZWmhzakRUMTU2VzFyMWxUNDBqekJRMEN1SFZEMVV2eVFPN3VZbVdscng4R25xR2lrSjl5ZCtTZXVNSVc1OW1kTk9qNlBXVGtpVTBUcnlGMER5dTFRZW4xaUlRcUF5SE5tMGFBRllGL29wYlNucjZqM2JUV2NmRnFLMXFJNG1mTjRpL1JOMGlBTDNnVHVqSnRIZ1hJTndCUXk3ekJaTHE3Z2NmSlc1R3FYYjVKUWJaYU5hSHFhc2pZVWVnYnlKTGtKRVZEWENMRzRpWHFFSTJGQ0tlV2p6YUlnUWRmUm5HVFo2aWFoaXhUWFRCbXlVRUZ4UFQ5TmNDT0dERXJjZ2RMTU1wU0VEUWdKbHh4UHdPNXJJSFF3MHVBNU5CQ0ZJUlVCQ09oVk10NXhTZGtvRjFCTjVyNU4wWFdzME1yN1FiaERwYXJUd3dWRVR5dzJtK0w2NGtXNEkxTnNCbTluVlg5R3RVdy9iaWhhZVNiU3BLaGlsOUllNHUxS2k3d2IvVWRLRGQ5blpuNnlXMEhRTytUME8vUUVZK252d2xRQVVhQ0tLc25PZU16VjZvY0VHTFBPcjBtSXIvT1NtYmF6NW1FUDBvVUE1MUFhNUJ1Vm5SbWh1Wnl4bTdFQUh1L1FEMDlDYk1rS3ZPNUQranB4cGNoTkpxVTEvWWxkdklWaUhUTFNvQ3RVN1pwWHdkdjZFTThadDR0S0c0OEJ0aWVWVStpMmlXMWJ2R2pVSStpTFVhSlcrZkNtZ0tEV0hyTzhEdzlUZFNtcTZoTjM1TjZNZ1NHdEJ4QkhFYTJIUFFmUmRielA4MlorIiwiTUlJRG9UQ0NBb21nQXdJQkFnSUxCQUFBQUFBQkQ0V3FMVWd3RFFZSktvWklodmNOQVFFRkJRQXdPekVZTUJZR0ExVUVDaE1QUTNsaVpYSjBjblZ6ZEN3Z1NXNWpNUjh3SFFZRFZRUURFeFpEZVdKbGNuUnlkWE4wSUVkc2IySmhiQ0JTYjI5ME1CNFhEVEEyTVRJeE5UQTRNREF3TUZvWERUSXhNVEl4TlRBNE1EQXdNRm93T3pFWU1CWUdBMVVFQ2hNUFEzbGlaWEowY25WemRDd2dTVzVqTVI4d0hRWURWUVFERXhaRGVXSmxjblJ5ZFhOMElFZHNiMkpoYkNCU2IyOTBNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQStNaTh2UlJRWmhQLzhOTjU3Q1B5dHhySGpvWHhFbk9tR2FvUTI1eWlaWFJhZHo1UmZWYjIzQ08yMU8xZldMRTNUZFZKRG03MWFvZlcwb3pTSjhiaS96YWZtR1dnRTA3R0ttU2IxWkFTenhRRzlEdmoxQ2krNkE3NHEwNUlsRzJPbFRFUVhPMmlMYjNWT20yeUhMdGd3RVpMQWZWSnJuNUdpdEIwamFFTUFzN3UvT2VQdUd0bTgzOUVBTDltSlJRcjNSQXdIUWVXUDAzMmE3aVB0M3NNcFRqcjNrZmIxVjA1L0lpbjg5Y3FkUEhvV3FJN24xQzZwb3hGTmNKUVpaWGNZNEx2M2I5M1RaeGl5V056RnRBcEQwbXBTUEN6cXJkc3hhY3dPVUJkcnNUaVhTWlQ4TTRjSXdoaHFKUVp1Z1JpUU93Zk9IQjNFZ1p4cHpBWVhTVW5wUUlEQVFBQm80R2xNSUdpTUE0R0ExVWREd0VCL3dRRUF3SUJCakFQQmdOVkhSTUJBZjhFQlRBREFRSC9NQjBHQTFVZERnUVdCQlMyQ0hzTmVzeXNJRXlHVmpKZXo2dHVoUzF3VnpBL0JnTlZIUjhFT0RBMk1EU2dNcUF3aGk1b2RIUndPaTh2ZDNkM01pNXdkV0pzYVdNdGRISjFjM1F1WTI5dEwyTnliQzlqZEM5amRISnZiM1F1WTNKc01COEdBMVVkSXdRWU1CYUFGTFlJZXcxNnpLd2dUSVpXTWw3UHEyNkZMWEJYTUEwR0NTcUdTSWIzRFFFQkJRVUFBNElCQVFCVzd3b2pvRlJPbFpmSitJbmFSY0hVb3dBbDlCOFRxN2VqaFZocHdqQ3QyQldLTGVQSnpZRmErSE1qV3FkOEJmUDlJanNPMFFiRTJ6Wk1jd1NPNWJBaTVNWHpMcVhaSStPNFRrb2dwMjRDSko4aVlHZDdpeDF5Q2NVeFhPbDVuNEJIUGEyaEN3Y1VQVWYvQTJrYURBdEU1Mk1scDMreXliaDJoTzBqOW4wSHEwViswOSt6dittS3RzMm9vbWNyVXRXM1pmQTVUR09na1htVFVnOVUzWU83bjlHUHAxTnp3OHYvTU94OEJMallSQitUWDNFSklyZHVQdW9jQTA2ZEdpQmgrNEUzN0Y3OENrV3IxK2NYVmRDZzZtQ2JwdmJqakZzcHdnWmdGSjB0bDB5cGt4V2RZY1FCWDBqV1dMMVdNUkpPRWNnaDRMTVJrV1hidEthSU9NNVYiLCJNSUlDanpDQ0FoV2dBd0lCQWdJUVhJdVp4VnFVeGRKeFZ0N05pWURNSmpBS0JnZ3Foa2pPUFFRREF6Q0JpREVMTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrNWxkeUJLWlhKelpYa3hGREFTQmdOVkJBY1RDMHBsY25ObGVTQkRhWFI1TVI0d0hBWURWUVFLRXhWVWFHVWdWVk5GVWxSU1ZWTlVJRTVsZEhkdmNtc3hMakFzQmdOVkJBTVRKVlZUUlZKVWNuVnpkQ0JGUTBNZ1EyVnlkR2xtYVdOaGRHbHZiaUJCZFhSb2IzSnBkSGt3SGhjTk1UQXdNakF4TURBd01EQXdXaGNOTXpnd01URTRNak0xT1RVNVdqQ0JpREVMTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrNWxkeUJLWlhKelpYa3hGREFTQmdOVkJBY1RDMHBsY25ObGVTQkRhWFI1TVI0d0hBWURWUVFLRXhWVWFHVWdWVk5GVWxSU1ZWTlVJRTVsZEhkdmNtc3hMakFzQmdOVkJBTVRKVlZUUlZKVWNuVnpkQ0JGUTBNZ1EyVnlkR2xtYVdOaGRHbHZiaUJCZFhSb2IzSnBkSGt3ZGpBUUJnY3Foa2pPUFFJQkJnVXJnUVFBSWdOaUFBUWFyRlJhcWZsb0krZDYxU1J2VThaYTJFdXJ4dFcyMGVaemNhN2RuTllNWWYzYm9Ja0R1QVVVN0ZmTzdsMC80aUd6enZmVWlubmdvNE4rTFpmUVljVHhtZHdsa1dPcmZ6Q2p0SERpeDZFem5QTy9MbHhUc1YremZUSi9palRqZVhtalFqQkFNQjBHQTFVZERnUVdCQlE2NFFtRzFNOFp3cFoyZEVsMjNPQTF4bU5qbWpBT0JnTlZIUThCQWY4RUJBTUNBUVl3RHdZRFZSMFRBUUgvQkFVd0F3RUIvekFLQmdncWhrak9QUVFEQXdOb0FEQmxBakEyWjZFV0NOemtsd0JCSFU2KzRXTUJ6enVxUWhGa29KMlVPUUlSZVZ4N0hmcGt1ZTRXUXJPL2lzSUp4T3prc1UwQ01RRHBLbUZIakZKS1MwNFljUGJXUk5adTlZTzZiVmk5Sk5sV1NPcnZ4S0pHZ1locU9rYlJxWnROeVdIYTBWMVhhaGc9IiwiTUlJRUtqQ0NBeEtnQXdJQkFnSUVPR1BlK0RBTkJna3Foa2lHOXcwQkFRVUZBRENCdERFVU1CSUdBMVVFQ2hNTFJXNTBjblZ6ZEM1dVpYUXhRREErQmdOVkJBc1VOM2QzZHk1bGJuUnlkWE4wTG01bGRDOURVRk5mTWpBME9DQnBibU52Y25BdUlHSjVJSEpsWmk0Z0tHeHBiV2wwY3lCc2FXRmlMaWt4SlRBakJnTlZCQXNUSENoaktTQXhPVGs1SUVWdWRISjFjM1F1Ym1WMElFeHBiV2wwWldReE16QXhCZ05WQkFNVEtrVnVkSEoxYzNRdWJtVjBJRU5sY25ScFptbGpZWFJwYjI0Z1FYVjBhRzl5YVhSNUlDZ3lNRFE0S1RBZUZ3MDVPVEV5TWpReE56VXdOVEZhRncweU9UQTNNalF4TkRFMU1USmFNSUcwTVJRd0VnWURWUVFLRXd0RmJuUnlkWE4wTG01bGRERkFNRDRHQTFVRUN4UTNkM2QzTG1WdWRISjFjM1F1Ym1WMEwwTlFVMTh5TURRNElHbHVZMjl5Y0M0Z1lua2djbVZtTGlBb2JHbHRhWFJ6SUd4cFlXSXVLVEVsTUNNR0ExVUVDeE1jS0dNcElERTVPVGtnUlc1MGNuVnpkQzV1WlhRZ1RHbHRhWFJsWkRFek1ERUdBMVVFQXhNcVJXNTBjblZ6ZEM1dVpYUWdRMlZ5ZEdsbWFXTmhkR2x2YmlCQmRYUm9iM0pwZEhrZ0tESXdORGdwTUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUFyVTFMcVJLR3N1cWpJQWNWRm1RcUswdlJ2d3RLVFk3dGdIYWxaN2Q0UU1CelFzaG93TnRUSzkxZXVIYVlOWk9MR3AxOEV6b09IMXUzSHMvbEpCUWVzWUdwalgyNHpHdExBL0VDRE55cnBVQWtBSDkwbEtHZENDbXppQXYxaDNlZFZjM2t3MzdYYW1TcmhSU0dsVnVYTWxCdlBjaTZaZ3pqL0wyNFNjRjJpVWtaL2NDb3ZZbWpaeS9Hbjd4eEdXQzRMZWtzeVpCMlpudVU0cTk0MW1WVFhUelduTExQS1FQNUw2UlFzdFJJemdVeVZZcjlzbVJNRHVTWUIzWGJmOSs1Q0ZWZ2hUQXArWHRJcEdtRzR6VS9Ib1pkZW5vVnZlOEFqaFVpVkJjQWtDYVR2QTVKYUpHLytFZlRuWlZDd1E1TjMyOG16OE1ZSVdKbVEzRFcxY0FINFFJREFRQUJvMEl3UURBT0JnTlZIUThCQWY4RUJBTUNBUVl3RHdZRFZSMFRBUUgvQkFVd0F3RUIvekFkQmdOVkhRNEVGZ1FVVmVTQjBSR0F2dGlKdVFpak1mbWhKQWtXdVhBd0RRWUpLb1pJaHZjTkFRRUZCUUFEZ2dFQkFEdWJqMWFiTU9kVG1YeDZlYWRObDljWmxaRDdCaC9LTTN4R1k0K1daaVQ2UUJzaEo4cm1jblB5VC80eG1mM0lERXhvVThhQWdoT1krcmF0MmwwOThjNXU5aFVSbElJTTdqK1ZyeEdyRDljdjNoOERqMWNzSHNtN21ocEVsZXNZVDZZZnpYMVhFQytiQkFsYWhMVnUyQjA2NGRhZTBXeDVYbmtjRk1YajBFeVRPMlU4N2Q4OXZxYmxsUnJEdFJuRHZWNWJ1LzhqNzJnWnl4S1RKMXdETFc4dzBCNjJHcXplV3ZmUnFxZ25wdjU1Z2NSNW1UTlh1aEt3cWVCQ2JKUEtWdDcrYllRTENJdCtqZXJYbUNIRzgrYzhlUzllbk5GTUZZM2g3Q0kzekpwREM1ZmNnSkNOczJlYmIwZ0lGVmJQdi9FcmZGNmFkdWxaa01WOGd6VVJaVkU9IiwiTUlJRGRUQ0NBbDJnQXdJQkFnSUxCQUFBQUFBQkZVdGF3NVF3RFFZSktvWklodmNOQVFFRkJRQXdWekVMTUFrR0ExVUVCaE1DUWtVeEdUQVhCZ05WQkFvVEVFZHNiMkpoYkZOcFoyNGdibll0YzJFeEVEQU9CZ05WQkFzVEIxSnZiM1FnUTBFeEd6QVpCZ05WQkFNVEVrZHNiMkpoYkZOcFoyNGdVbTl2ZENCRFFUQWVGdzA1T0RBNU1ERXhNakF3TURCYUZ3MHlPREF4TWpneE1qQXdNREJhTUZjeEN6QUpCZ05WQkFZVEFrSkZNUmt3RndZRFZRUUtFeEJIYkc5aVlXeFRhV2R1SUc1MkxYTmhNUkF3RGdZRFZRUUxFd2RTYjI5MElFTkJNUnN3R1FZRFZRUURFeEpIYkc5aVlXeFRhV2R1SUZKdmIzUWdRMEV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRRGFEdWFaamM2ajQwK0tmdnZ4aTRNbGErcElIL0Vxc0xtVkVRUzk4R1BSNG1kbXp4emR6eHRJSys2TmlZNmFyeW1BWmF2cHh5MFN5NnNjVEhBSG9UMEtNTTBWalUvNDNkU01VQlVjNzFEdXhDNzMvT2xTOHBGOTRHM1ZOVENPWGtOejhrSHAxV3Jqc29rNlZqazRid1k4aUdsYktrM0ZwMVM0YkluTW0vazh5dVg5aWZVU1BKSjRsdGJjZEc2VFJHSFJqY2RHc25VT2h1Z1ppdFZ0Yk5WNEZwV2k2Y2dLT092eUpCTlBjMVNURTRVNkc3d2VOTFdMQll5NWQ0dXgyeDhna2FzSlUyNlF6bnMzZExsd1I1RWlVV01XZWE2eHJrRW1DTWdaSzlGR3FraldaQ3JYZ3pUL0xDckJiQmxEU2dlRjU5Tjg5aUZvNytyeVVwOS9rNURQQWdNQkFBR2pRakJBTUE0R0ExVWREd0VCL3dRRUF3SUJCakFQQmdOVkhSTUJBZjhFQlRBREFRSC9NQjBHQTFVZERnUVdCQlJnZTJZYVJRMlh5b2xRTDMwRXpUU28vL3o5U3pBTkJna3Foa2lHOXcwQkFRVUZBQU9DQVFFQTFuUG5mRTkyMEkyLzdMcWl2alRGS0RLMWZQeHNuQ3dydlFtZVU3OXJYcW9SU0xibENLT3p5ajFoVGROR0NiTSt3NkRqWTFVYjhycnZyVG5oUTdrNG8rWXZpaVk3NzZCUVZ2bkdDdjA0emNRTGNGR1VsNWdFMzhOZmxOVVZ5UlJCbk1SZGRXUVZEZjlWTU95R2ovOE43eXk1WTBiMnF2emZ2R245TGhKSVpKcmdsZkNtN3ltUEFiRVZ0UXdkcGY1cExHa2tlQjZ6cHh4eFl1N0t5SmVzRjEyS3d2aEhobTRxeEZZeGxkQm5pWVVyK1d5bVhVYWRES3FDNUpsUjNYQzMyMVk5WWVScTRWelc5djQ5M2tITUI2NWpVcjlUVS9RcjZjZjl0dmVDWDRYU1FSamJnYk1FSE1VZnBJQnZGU0RKM2d5SUNoM1dabFhpL0VqSktTWnA0QT09IiwiTUlJRldqQ0NBMEtnQXdJQkFnSVFia2VweFV0SERBM3NNOUNKdVJ6MDRUQU5CZ2txaGtpRzl3MEJBUXdGQURCSE1Rc3dDUVlEVlFRR0V3SlZVekVpTUNBR0ExVUVDaE1aUjI5dloyeGxJRlJ5ZFhOMElGTmxjblpwWTJWeklFeE1RekVVTUJJR0ExVUVBeE1MUjFSVElGSnZiM1FnVWpFd0hoY05NVFl3TmpJeU1EQXdNREF3V2hjTk16WXdOakl5TURBd01EQXdXakJITVFzd0NRWURWUVFHRXdKVlV6RWlNQ0FHQTFVRUNoTVpSMjl2WjJ4bElGUnlkWE4wSUZObGNuWnBZMlZ6SUV4TVF6RVVNQklHQTFVRUF4TUxSMVJUSUZKdmIzUWdVakV3Z2dJaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQ0R3QXdnZ0lLQW9JQ0FRQzJFUUtMSHVPaGQ1czczTCtVUHJlVnAwQThvZjJDK1gweUJvSng5dmFNZi92bzI3eHFMcGVYbzR4TCtTdjJzZm5PaEIyeCtjV1gzdSs1OHFQcHZCS0pYcWVxVXF2NEl5ZkxwTEdjWTl2WG1YN3dDbDdyYUtiMHhscEhEVTBRTStOT3NST2p5QmhzUyt6OENaRGZuV1FwSlNNSG9iVFNQUzVnNE0vU0NZZTd6VWp3VGNMQ2VvaUt1N3JQV1JuV3I0K3dCN0NlTWZHQ3djRGZMcVp0YkJrT3RkaCtKaHBGQXoyd2VhU1VLSzBQZnlibHFBaitsdWc4YUpSVDdvTTZpQ3NWbGdteTRIcU1MblhXbk91blZtU1BsazlvcmoyWHdvU1B3THhBd0F0Y3ZmYUhzelZzckJoUWY0VGdUTTJTMHlEcE03eFNtYTh5dFNtekpTcTBTUGx5NGNwazkrYUNFSTNvbmNLS2lQbzRab3I4WS9rQitYajllMXgzK25hSCt1emZzUTU1bFZlMHZTYnYxZ0hSNnhZS3U0NEx0Y1hGaWxXcjA2enFrVXNwekJta01pVk9LdkZsUk5BQ3pxck9TYlRxbjN5RHNFQjc1ME9ycDJ5amozMkpnZnBNcGYvVmpzUE9TK0MxMkxPT1JjOTJ3TzFBSy8xVEQ3Q24xVHNOc1lxaUE5NHhyY3gzNm05N1B0YmZrU0lTNXI3NjJETDhFR01VVVhMZVhkWVdrNzBwYURQdk9tYnNCNG9tM3hQWFYyVjRKOTVlU1JRQW9nQi9tcWdodHFteGxiQ2x1UTBXRWRySGJFZzhRT0IrRFZyTlZqelJsd1c1eTB2dE9VdWN4RC9TVlJOdUpMRFdjZnIwd2JyTTdSdjEvb0ZCMkFDWVBUcklybnFZTnhnRmxRSURBUUFCbzBJd1FEQU9CZ05WSFE4QkFmOEVCQU1DQVFZd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBZEJnTlZIUTRFRmdRVTVLOHJKbkVhSzBnbmhTOVNaaXp2OElrVGNUNHdEUVlKS29aSWh2Y05BUUVNQlFBRGdnSUJBRGlXQ3U0OXRKWWVYKytkbkFzem55dmd5djNTamdvZlFYU2xmS3FFMU9YeUh1WTNVaktjQzlGaEhiOG93YlpFS1RWMWQ1aXlmTm05ZEt5S2FPT3BNUWtwQVdCejQwZDhVNmlRU2lmdlM5ZWZrK2VDTnM2YWFBeUM1OC9VRUJadlh3NlpYUFlmY1gzdjczc3ZmdW8yMXBkd0N4WHUxMXhXYWpPbDQwazRETGg5KzQyRnBMRlpYdlJxNGQyaDltUkVydVpSZ3lGbXhoRSs4ODVIN3B3b0h5WGEvNnhtbGQwMUQxenZJQ3hpL1pHNnFjejhXcHlUZ1lNcGwwcDhXbkswT2RDM2Q4dDUvV2s2a2pmdGJqaGxSbjdwWUwxNWlKZGZPQkwwN3E5YmdzaUcxZUdaYll3RThuYTZTZlp1NlcwZVg2RHZKNEoyUVBpbTAxaGNEeXhDMmtMR2U0ZzB4OEhZUlp2QlBzVmhIZGxqVUVuMk5JVnE0QmpGYmtlclFVSXBtL1pnRGRJeDAyT1lJNU5hQUlGSXRPL05pczNKejVudTJaNnFOdUZvUzNGSkZEWW9PajBkenBxUEplYUFjV0VydFh2TStTVVdnZUV4WDZHamZoYWtuQlpxbHhpOWRuS2xDNTRkTnVZdm9TKytjSkVQcU9iYStNU1NRR3dsZm51ekNkeXlGNjJBUlBCb3BZK1VkZjkwV3Vpb0Fud01DZUtwU3d1Z2hRdGl1ZStoTVpMNzcvWlJCSWxzNktsMG9ic1hzN1g5U1E5OFBPeURHQ0JEVHRXVHVyUTBzUjhXTmg4TTVtUTVGa3pjNFA0ZHlLbGlQVURxeXNVMEFyU3VpWWd6TmR3c0UzUFlKL0hRY3U1MU95TGVtR2htVy9IR1kwZFZITHFsQ0ZGMXBrZ2wiLCJNSUlDUmpDQ0FjMmdBd0lCQWdJUUM2RmEraDNmb0xWSlJLL05KS0JzN0RBS0JnZ3Foa2pPUFFRREF6QmxNUXN3Q1FZRFZRUUdFd0pWVXpFVk1CTUdBMVVFQ2hNTVJHbG5hVU5sY25RZ1NXNWpNUmt3RndZRFZRUUxFeEIzZDNjdVpHbG5hV05sY25RdVkyOXRNU1F3SWdZRFZRUURFeHRFYVdkcFEyVnlkQ0JCYzNOMWNtVmtJRWxFSUZKdmIzUWdSek13SGhjTk1UTXdPREF4TVRJd01EQXdXaGNOTXpnd01URTFNVEl3TURBd1dqQmxNUXN3Q1FZRFZRUUdFd0pWVXpFVk1CTUdBMVVFQ2hNTVJHbG5hVU5sY25RZ1NXNWpNUmt3RndZRFZRUUxFeEIzZDNjdVpHbG5hV05sY25RdVkyOXRNU1F3SWdZRFZRUURFeHRFYVdkcFEyVnlkQ0JCYzNOMWNtVmtJRWxFSUZKdmIzUWdSek13ZGpBUUJnY3Foa2pPUFFJQkJnVXJnUVFBSWdOaUFBUVo1N3lzUkdYdHpiZy9XUHVOc1ZlcFJDMEZGZkx2Qy84UWRKKzFZbEpmWm40ZjVkd2JSWGtMek1aVENwMk5YUUxacVZuZUFscjJsU29PalRoS2lrbkd2TVlET0FkZlZkcCtDVzdpZjE3UVJTQVBXWFlRMXFBazhDM2VOdkpzS1RtalFqQkFNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdEZ1lEVlIwUEFRSC9CQVFEQWdHR01CMEdBMVVkRGdRV0JCVEwwTDJwNFpnRlVhRk5ONktEZWM2TkhTcmtoREFLQmdncWhrak9QUVFEQXdObkFEQmtBakFscElGRkFtc1NTM1YwVDhnajQzRHlkWExlZklud3o1RnlZWjVlRUpKWlZybUR4eERuT09sWUpqWjkxZVEwaGprQ01IdzJVL0F3NVdKak9wbml0cU03bXpUNkh0b1FrbkZla1JPbjNhUnVrc3d5MXZVaFpzY3Y2cFpqYW1WRmtwVUJ0QT09IiwiTUlJRHR6Q0NBcCtnQXdJQkFnSVFET2ZnNVJmWVJ2NlA1V0Q4Ry9Bd09UQU5CZ2txaGtpRzl3MEJBUVVGQURCbE1Rc3dDUVlEVlFRR0V3SlZVekVWTUJNR0ExVUVDaE1NUkdsbmFVTmxjblFnU1c1ak1Sa3dGd1lEVlFRTEV4QjNkM2N1WkdsbmFXTmxjblF1WTI5dE1TUXdJZ1lEVlFRREV4dEVhV2RwUTJWeWRDQkJjM04xY21Wa0lFbEVJRkp2YjNRZ1EwRXdIaGNOTURZeE1URXdNREF3TURBd1doY05NekV4TVRFd01EQXdNREF3V2pCbE1Rc3dDUVlEVlFRR0V3SlZVekVWTUJNR0ExVUVDaE1NUkdsbmFVTmxjblFnU1c1ak1Sa3dGd1lEVlFRTEV4QjNkM2N1WkdsbmFXTmxjblF1WTI5dE1TUXdJZ1lEVlFRREV4dEVhV2RwUTJWeWRDQkJjM04xY21Wa0lFbEVJRkp2YjNRZ1EwRXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFDdERoWE81RU9BWExHSDg3ZGcrWEVTcGE3Y0pwU0lxdlRPOVNBNUtGaGdEUGlBMnFrVmxUSmhQTFd4S0lTS2l0eWZDZ3lERjNxUGtLeUs1M2xUWERHRUt2WVBtREkyZHN6ZTNUeW9vdTlxK3lIeVVtSGZueURYSCtLeDJmNFlaTklTVzEvNVdCZzF2RWZOb1RiNWEzL1VzRGcrd1J2RGpEUFoyQzhZL2lnUHM2ZUQxc051Uk1CaE5aWVcvbG1jaTNadDEvR2lTdzByL3d0eTJwNWcwSTZRTmNaNFZZY2dvYy9sYlFySVNYd3htRE5zSXVtSDBESmFvcm9UZ2hIdE9SZWRtVHB5b2ViNnBOblZGekYxcm9WOUlxNC9BVWFHOWloNXlMSGE1RmNYeEg0Y0RyQzBrcVpXczcyeWwrMnFwL0MzeGFnL2xSYlEvNkdXNndoZkdIZFBBZ01CQUFHall6QmhNQTRHQTFVZER3RUIvd1FFQXdJQmhqQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01CMEdBMVVkRGdRV0JCUkY2Nkt2OUpMTGdqRXRVWXVucHlHZDgyM0lEekFmQmdOVkhTTUVHREFXZ0JSRjY2S3Y5SkxMZ2pFdFVZdW5weUdkODIzSUR6QU5CZ2txaGtpRzl3MEJBUVVGQUFPQ0FRRUFvZzY4MytMdDhPTnljM3BrbEwvM2NtYllNdVJDZFdLdWgrdnkxZG5lVnJPZnpNNFVLTGtObDJCY0VreFk1Tk05ZzBsRldKYzFhUnFvUitwV3hubXJFdGhuZ1lUZmZ3azhsT2E0Sml3Z3ZUMnpLSW4zWC84aTRwZUVIK2xsNzRmZzM4Rm5TYk5kNjdJSkt1c203WGkrZlQ4cjg3Y21OVzFmaVFHMlNWdWZBUVdicXowbHdjeTJmOEx4YjRiRyttUm82NEV0bE90Q3QvcU1IdDFpOGI1UVo3ZHN2ZlB4SDJzTU5nY1dmemQ4cVZ0dGV2RVNSbUNEMXljRXZrdk9sNzdEWnlwb0VkK0E1d3d6WnI4VERSUnU4MzhmWXhBZStvMGJKVzFzajZXM1lRR3gwcU1tb1JCeG5hM2l3L25EbVZHM0t3Y0l6aTdtVUxLbitncEZMNkx3OGc9PSIsIk1JSUVEekNDQXZlZ0F3SUJBZ0lCQURBTkJna3Foa2lHOXcwQkFRVUZBREJvTVFzd0NRWURWUVFHRXdKVlV6RWxNQ01HQTFVRUNoTWNVM1JoY21acFpXeGtJRlJsWTJodWIyeHZaMmxsY3l3Z1NXNWpMakV5TURBR0ExVUVDeE1wVTNSaGNtWnBaV3hrSUVOc1lYTnpJRElnUTJWeWRHbG1hV05oZEdsdmJpQkJkWFJvYjNKcGRIa3dIaGNOTURRd05qSTVNVGN6T1RFMldoY05NelF3TmpJNU1UY3pPVEUyV2pCb01Rc3dDUVlEVlFRR0V3SlZVekVsTUNNR0ExVUVDaE1jVTNSaGNtWnBaV3hrSUZSbFkyaHViMnh2WjJsbGN5d2dTVzVqTGpFeU1EQUdBMVVFQ3hNcFUzUmhjbVpwWld4a0lFTnNZWE56SURJZ1EyVnlkR2xtYVdOaGRHbHZiaUJCZFhSb2IzSnBkSGt3Z2dFZ01BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkRRQXdnZ0VJQW9JQkFRQzNNc2orNlhHbUJJV3REQkZrMzg1Tjc4Z0RHSWMvb2F2N1BLYWY4TU9oMnRUWWJpdFRrUHNrcEQ2RThKN29YK3psSjBUMUtLWS9lOTdnS3ZESXIxTXZuc29GQVpNZWoyWWNPYWROK2xxMmN3UWxadXQzZitkWnhrcVpKUlJVNnliSDgzOFoxVEJ3ajYrd1Jpci9yZXNwN2RlZnFnU0hvOVQ1aWFVMFg5dERrWUkyMldZOHNiaTVndjJjT2o0UXlEdnZCbVZtZXBzWkdEMy9jVkU4TUM1ZnZqMTNjN0pkQm16REkxYWFLNFVta2h5bkFyUGtQdzJ2Q0htQ3VEWTk2cHpUTmJPOGFjcjF6SjNvL1dTTkY0QXpibDVLWFpuSkhvZTBuUnJBMVc0VE5TTmUzNXRmUGUvVzkzYkM2ajY3ZUEwY1FtZHJCTmo0MXRwdmkvSkVvQUdyQWdFRG80SEZNSUhDTUIwR0ExVWREZ1FXQkJTL1g3ZlJ6dDBmaHZSYlZhemMxeERDRHFtSTV6Q0JrZ1lEVlIwakJJR0tNSUdIZ0JTL1g3ZlJ6dDBmaHZSYlZhemMxeERDRHFtSTU2RnNwR293YURFTE1Ba0dBMVVFQmhNQ1ZWTXhKVEFqQmdOVkJBb1RIRk4wWVhKbWFXVnNaQ0JVWldOb2JtOXNiMmRwWlhNc0lFbHVZeTR4TWpBd0JnTlZCQXNUS1ZOMFlYSm1hV1ZzWkNCRGJHRnpjeUF5SUVObGNuUnBabWxqWVhScGIyNGdRWFYwYUc5eWFYUjVnZ0VBTUF3R0ExVWRFd1FGTUFNQkFmOHdEUVlKS29aSWh2Y05BUUVGQlFBRGdnRUJBQVdkUDRpZDBja2FWYUdzYWZQeldkcWJBWWNhVDFlcG9Ya0pLdHYzTDdJZXpNZGVhdGlEaDZHWDcwazFQbmNHUVZoaXY0NVl1QXBuUCt5ejNTRm1IOGxVK25MTVBVeEEySUd2ZDU2RGVydWl4L1UwRjQ3WkVVRDAvQ3dxVFJWL3AySmRMaVhUQUFzZ0doMW8rUmU0OUwyTDdTaFozVTBXaXhlRHlMSmx4eTE2cGFxOFU0WnQzVmVreXZnZ1FRdG84UFQ3ZEw1V1hYcDU5ZmtkaGVNdGxiNzFjWkJEekkwZm1nQUtoeW5wVlNKWUFDUHE0eEpES1Z0SENOMk1RV3BsQnFqbElhcEJ0SlVobGJsOTBUU3JFOWF0dk56aVBUbk52VDUxY0tFWVdRUEpJclNQbk5WZUt0ZWx0dFFLYmZpM1FCRkdtaDk1RG1LL0Q1ZnM0QzhmRjVRPSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQ0FZQUFBQWY4LzloQUFBQjdrbEVRVlI0QWFXUFAyc1VRUmlIbjVtZHZleGQvcGxFY3ZsRENpMUUvRU1hYlVXSTlqYUtXUG9WL0E3QlFoQWJHN3Q4Q0NVSUtRUUx1d2hDVUJzTEJTVW1Ha0x1ZG05bjVuV0h6TUFlZ28zUDhPeTlzOHZ2ZmQranpjdFB6MllhK1pkYnU0OG1HMG1hOEVoOC9iRjN5V0dHd1B2VjgxZDcrOS8ybHB5M01ydHk3anN3UFB6OFliMjBsUUoyaWFpbjJ3OW9rMDJhTFVSV3N0eHVpSGdrbm5yRUszR0VSZzlwb1o3czNDVXhsL2R2VmZybnRtUmFnOUJ1SUNKZ3JYZkhuUnZBV3lKYUR4WEIrZXpDV3FYM3Q2ZTZpL3JpL0UxQWtkQm9MaS9jWnJMNXBxZUhiMnl2dTlSSVVLZmlXSDk1SVZtbVY2ZXVjSzEvajhKTUl3Um82ak5jWDc3UDJ2UTZaRVo3T1hyZVNGQTkzcm5EM014NnI3WWZUeFFLR2tONFdQOGVXNytiejRaM2VIRUU5RkZaQUpYdWxpWFZ5VUVmaWY5WkhJTlcrQlE1ZlNjKzNvVGp6dFRaUmt4NExFaHRmaDFhdkJNU0lrQnJBK0p2T0FvaG0xQUZnSkdScGJPb1hTL1gxS1hnSFpFNFgxU3N4cHQxOGlZSW1HSmlSRldXS0NYa0JkaVI0TDBRVUVLYW1JS3hob1FabTZmQWRNRFZqVDdjUXdCRVloM0RTc2w0QSt0clFUd0piVUNzVDVQK0NvZFRadFlEbU5KWWNyRURRU0NoSU1zVnpvVlEya0xGTUNDUUZXNEFvRGJmYlJESTdmSWk1YUFMNDFqdFZOaVFpUFVqbVVCT2dBTUNtNjgzL3NzL1RhVlh0eDRxS01vQUFBQUFTVVZPUks1Q1lJST0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJGSURPXzJfMCJdLCJhYWd1aWQiOiJiOTNmZDk2MWYyZTY0NjJmYjEyMjgyMDAyMjQ3ZGU3OCIsIm9wdGlvbnMiOnsicGxhdCI6dHJ1ZSwicmsiOnRydWUsInV2Ijp0cnVlfSwidHJhbnNwb3J0cyI6WyJpbnRlcm5hbCJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIwLTA4LTIwIiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJBbmRyb2lkIFNhZmV0eU5ldCBBdXRoZW50aWNhdG9yIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAxOTAyMjUwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMy42IiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjEuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMC0wOC0wNSIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiQW5kcm9pZCBTYWZldHlOZXQgQXV0aGVudGljYXRvciIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMTkwMjI1MDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjMuNiIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4xLjAifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIwLTEyLTE3In0seyJhYWd1aWQiOiJhYTc5ZjQ3Ni1lYTAwLTQxN2UtOTYyOC0xZTgzNjUxMjM5MjIiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6ImFhNzlmNDc2LWVhMDAtNDE3ZS05NjI4LTFlODM2NTEyMzkyMiIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJISUQgQ3Jlc2NlbmRvIDQwMDAgRklETyJ9LCJkZXNjcmlwdGlvbiI6IkhJRCBDcmVzY2VuZG8gNDAwMCBGSURPIiwiYWx0ZXJuYXRpdmVEZXNjcmlwdGlvbnMiOnsiZW4tVVMiOiJISUQgQ3Jlc2NlbmRvIDQwMDAgRklETyJ9LCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MjYyNDAwLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH0seyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDL3pDQ0FxU2dBd0lCQWdJVVRSbFdZTUtjQm5QRTYxSDlGMFE3UHdQWStIWXdDZ1lJS29aSXpqMEVBd0l3YXpFTE1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBb01Da2hKUkNCSGJHOWlZV3d4SWpBZ0JnTlZCQXNNR1VGMWRHaGxiblJwWTJGMGIzSWdRWFIwWlhOMFlYUnBiMjR4SXpBaEJnTlZCQU1NR2taSlJFOGdRWFIwWlhOMFlYUnBiMjRnVW05dmRDQkRRU0F5TUNBWERUSTFNRFV4TXpFMk5UY3dNVm9ZRHpJd05UQXdOVEV6TVRZMU56QXhXakJuTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNnd0tTRWxFSUVkc2IySmhiREVpTUNBR0ExVUVDd3daUVhWMGFHVnVkR2xqWVhSdmNpQkJkSFJsYzNSaGRHbHZiakVmTUIwR0ExVUVBd3dXUmtsRVR5QkJkSFJsYzNSaGRHbHZiaUJEUVNBeE1UQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJNeUQxTG9NdDZwNnoxWGUvRXFhUGVFQk1waGRaSEN5RGlHZk5RbVVyUk96SW9EWFB5eVRFbllaUzdpR3NGREo1RWtBS2cwSTJsazJVVTFLUjdMY2wzQ2pnZ0VtTUlJQklqQU9CZ05WSFE4QkFmOEVCQU1DQVlZd0VnWURWUjBUQVFIL0JBZ3dCZ0VCL3dJQkFEQWZCZ05WSFNNRUdEQVdnQlM3NkRwbDkzdkIyaDVGREx2eU1NdlVCeWozaXpBZEJnTlZIUTRFRmdRVWx2cUUxREFMRFRXMjVnRmhIVS9nTWxyNkoxRXdSQVlEVlIwZkJEMHdPekE1b0RlZ05ZWXphSFIwY0RvdkwyTnliQzVvZVdSeVlXNTBhV1F1WTI5dEwwWkpSRTlCZEhSbGMzUmhkR2x2YmxKdmIzUkRRVEl1WTNKc01IWUdDQ3NHQVFVRkJ3RUJCR293YURBL0JnZ3JCZ0VGQlFjd0FvWXphSFIwY0RvdkwyTnliQzVvZVdSeVlXNTBhV1F1WTI5dEwwWkpSRTlCZEhSbGMzUmhkR2x2YmxKdmIzUkRRVEl1Y0Rkak1DVUdDQ3NHQVFVRkJ6QUJoaGxvZEhSd09pOHZiMk56Y0M1b2VXUnlZVzUwYVdRdVkyOXRNQW9HQ0NxR1NNNDlCQU1DQTBrQU1FWUNJUUNFeW4wMGc3dVBaYzRtcDAyZExub2thbHlrTU5vTWFiRnJXL25qbzVlanVBSWhBTHFpOVZ4dkR2UnZ6eXRuak9qc2xtdjBJejVSczhlZzFMUy85amtxc1dQbiJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFWTUFBQUNzQ0FZQUFBREcrRThNQUFBQUlHTklVazBBQUhvbEFBQ0Fnd0FBK2Y4QUFJRHBBQUIxTUFBQTZtQUFBRHFZQUFBWGI1SmZ4VVlBQUFBSmNFaFpjd0FBRDJBQUFBOWdBWHA0UlkwQUFBeWdTVVJCVkhoZTdaMS9iSlRsSGNCdmpoak5jQzRPK2RYZVhWdFVUTXppUDdvWVhaWTUxSWtLZDFmTm5GSGo1b2hCbUE3ajJNUnNab2xteGhoTkpvcnQyNEtnc2lGc2ltN1RBZE1ZUkZRRUZUY1Z4dy9yd0FFRlJDaFErdXVlUGMvMXFRUDNUTnMrMzN2ZXUrdm5rM3pTNDJnZm52ZTl0NTgrNzczWEl3RUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVVFcGtHNi9YUHBuSVJSOGdJaDV0NDFyOWNZYXRCZndQOVEzbjZ4MjBUWnRQMURjcFJNVFBOZGVVMTR1dVZ0Mk1xMjFGQmt4dE1qbXJMcFZxMFI4MzExWlgzMnJ2TG1NS1AyMzBqcW1QM0RzTkVmSHp6RVc3RXhmT0dXbUw4b1drazhrZjFxWFNQWFhWcWFYSlVhUE9xS21xT3JNdW1mcHJiVExWblVxbExyZWZWa1pNbVAxMS9aT2x3N2x6RUJFSG9qbXJ6VVpUYlYzK0wzVmp4MDR3SVIwOWV2VEo0MUtwS2RvYmpDTkhqaHcxZHV6WTVMaDBqZEtyMUxQdHA1Y0JKcVNzUmhGUjB0Nmd6clNWY1hHTURxbXFTU1l6K3ZZd0U4NmFxdFMxdGRYcDY4M3R1akZqVWpWams1UDFLclc5OTlQTGdWelU1ZHdaaUlnK21xQmVPcWZPbHVZbzB1bjBjVHFtWGZhUHc4d0sxZDVPNkZQOHQyclQ2VnYwelMrYnNQYmVXK3Jrb28rY093RVJVY0pjZE1EVzVpaXFxNnVQSDVlcTZWdDFGbGFtT3FJNzYxSTEyMDlKMS9SRjlrdmxFZFA2aG04N054NFJVZEpzd3oyMk9wOWlZcXBYbzUzMmoyWmxtai9wcEpPK3FqOTJwOGVNT2QzZWYweDV4RFRYdE0rNTRZaUlrdWFpRGx1ZEkrazloVThuanRPM0N6RTFkNDRZTVdLTXZuM1EzQjQrZXZqSituYmZLcldFNFhXa2lCakt5NXZQc3VYNWxMcFVhbVp0TXIzZjNLNnRUcjVUdUZOVGwwdytXcE5LM2F6L3JxTzJPajNOM2wyaVRJNm1PamNZRWJFWTVwcWV0ZlU1aXJycTFETzF5ZFNCY1ZXcEcreGRpYnFxNUF5ek90WDNMN1IzbFREMTBYTG5CaU1pRnNOY1UrSFUzVVZ5VlBJTUhkV1ZwOVhXcVZOcmF2UDY5dktxRVZXbjJyOHVjZXFqL2M0TlJrUXNocm1vakY0dk9oQ0lLU0tHMUgwUnFnSWdwb2dZVW1LS2lDZ2dNVVZFRkpDWUlpSUtTRXdSRVFVa3BvaUlBaEpUUkVRQmlTa2lvb0RFRkJGUlFHS0tpQ2dnTVVWRUZKQ1lJaUlLU0V3UkVRVWtwb2lJQWhKVFFTOTdXQ1V1ZUVBbExwd2RWdk52NWlMM25BYnI5eDUwLzF2RjlpS3RhejRETWE3SHdEeitydm4weDZ4Ky9PS1lkekUwMjNHUlBuN01NWFNwM2llVEc5M2JYR2tTVXpsdm52dXlpb3ZqcnB6bm5OT2cxQWYvdXMyNzdNaGgyZm5Kb2Q1dlFOZTgrcVArSm82TGFkRXE5NXo2NGRldVhXQkhxUXc2dTN0VVczdW4ycnhqbjFxOVlhZGFzbnF6dXFuNVpYWHlOUXRVNHVLSFZDSlRnWUVscG5LYWI2YTRxSlNZZnJUblFObkc5SWFIWDNMUHFSK2VxQ016Vk5pei83QmE4ZFpXZGVWOXo2dkVCTDJLclpTd0VsTTVpYWsveEhSbzBkblZvNTVkOTZFYWYrTWl2NmRKU2tGaUtpY3g5WWVZRGwzZWJ0bWp6cHUxMU8veGoxTmlLaWN4OVllWXdodGJkcWxUcHVxVnFya281OWhYSlNzeGxaT1kra05Nd3pQcnNUWHF6c1Z2cUx1V3ZLRXlkeTlUdVh1V3ExOHVmTDF3MzcxTDE2c1Y2N2NWTGlhRnBDZWZWNCsrK0UrVnVHQzJjMytWcE1SVVRtTHFEekVOVDJMQ2IvVXFzRkVsTWczL25aTzVLRlM0VHp0SlB4Nlh6bEZWVXhhcUtYTldxby9iRHR1dkxENjcyOXJWTjM2NnhJVHFxUDFWa2hKVE9ZbXBQOFEwUElYWGhqcm01RlJIN1pqSkRlcU8zNisxWDExOHVudDYxQzJQck5iSDVSR3hMMFdKcVp6RTFCOWlHcDRCeGJSUEhiWkpkeSt6STRSaC9ndnZGMWJJenZtVWdzUlVUbUxxRHpFTno2Qmlhc3cwcWgvcjAvNlFQUG5xQjM3SFJ6RWxwbklTVTMrSWFYZ0dIVk5qTmxKLy8zQ1BIU2tNVDcvV1VwcEJKYVp5RWxOL2lHbDR2R0txSGYrVHhYYWtjUHp4RmIxQ0xiWG5VSW1wbk1UVUgySWFIdCtZbXFpOXQyMnZIUzBjUDF2d3FucytjVWxNNVNTbS9oRFQ4SGpITkJlcDgyNS8ybzRXam53K3I4WlBYK3llVXh3U1V6bUpxVC9FTkR6ZU1kVis1YXBIN0doaDJYZXdRMlQrSWhKVE9ZbXBQOFEwUENJeG1tUk85VCt4STRibG1UVXRoZFd4YzE0aEphWnlFbE4vaUdsNFJHS2FqZFF0ODE2eEk0Wm4rRldDeC85Z0phWnlFbE4vaUdsNHBFNlR6NXl4eEk0WW52Yy8ydHY3NjYrT2VRV1RtTXBKVFAwaHB1R1JpdW5vNngrM0k4YkRpT3NlZGM0cm1NUlVUbUxxRHpFTmoxUk1oMTNSYkVlTUIzUE14dnJjS1RHVms1ajZRMHpESXhWVGN4R3FxN3ZiamhxZXJ1NGV1VzBaak1SVVRtTHFEekVOajFpQTlIR3pkbE9ySFRVZWJwMGY0d3Y1aWFtY3hOUWZZaG9lc1pobUd0WENsUnZ0cVBHd2JiYytmdUo2aDM1aUtpY3g5WWVZaGtjc3BqcGl0ejIyeG80YUQrMGRYU294TWFhMzZTT21jaEpUZjRocGVDUmpHdWRyVGZ1STdhbytNWlV6enBoKzUxZC9VdWZPZWxyRWIvNzhLYlVoaGpldU1CRFQ4SWpGTktiZjBmOHN0ejIreGoyL1lrdE01WXd6cHBVQ01RMlBXRXkxNTl5MjFJNGFINnZlM2U2Y1c5RWxwbklTVTMrSWFYZ3FMYVpiNDdvSVJVemxKS2IrRU5Qd1ZGcE10Kzg5MlB1L3Fqcm1WMVNKcVp6RTFCOWlHcDVLaSttdWZlMHFsbmZoSjZaeUVsTi9pR2w0S2kybWhmYzR2Y3pqR0Jxc3hGUk9ZdW9QTVExUHhaM21mOHhwdml6RXRDd2hwdUdwdEpqdTJIdUltSXBDVE1zU1locWVTb3ZwQnp2M203QTU1MWRVaWFtY2NjYlV2TUhFNjBLdTJiaFRIV2p2c2lPSGhaaUdwOUppdW1UMVp1ZmNpaTR4bFRQT21CNXJmaEtiSjkwbHZQZ2g5ZnJHZU43OWg1aUdSeXltSmZJYlVQWDNMSGZQcjlnU1V6bmpqQ20vbTI4bHBnTkdMS1lsOHJ2NXNaemlHNG1wbk1UVUgySWFIc21ZVG8vNXVzSCtRNTI5WjFldStSVmJZaW9uTWZXSG1JWkhMS2FaUnJYb3BVMTIxSGhZMzdLYmxhazR4SFR3RXROQlFVd2IxWXIxMit5bzhYRDJ6S1h1dVlXUW1NcEpUUDBocHVFUmkrbmtCdFg2eVNFN2FuamEydlVwL2lVeHZURzBrWmpLU1V6OUlhYmhrWHpPTkU2ZVdMWEpQYTlRRWxNNWlhay94RFE4VWpFOThacjVkc1R3OVBUazQzbmJ2U01scG5JU1UzK0lhWGlrWW5ycTlDZnNpT0g1eTdwL21aZzU1eFZNWWlvbk1mV0htSVpISktZNlpKZmMrWndkTVN5SE83djFNUlBqYzZWOUVsTTVpYWsveERROElqSE5OS29scTdmWUVjTXlyWEdWZTA2aEphWnlFbE4vaUdsNFJHSWEwOFduVGR2M3hmY2kvYzlLVE9Va3B2NFEwL0JJeEhUOHRFVjJ0SEMwZCtqVGUzMnN1dVlUaThSVVRtTHFEekVOajNkTTlTbiszT2MzMk5IQ1lLN2Vuelh6U2ZkODRwS1l5a2xNL1NHbTRmR042ZkFmekxNamhXUEd2SmVkYzRsVllpb25NZldIbUliSEs2YVRHOVRjdjRWZGxkNitjSTBKbDNzK2NVcE01U1NtL2hEVDhBdzZwdGxJblgvSG4rMG9ZYmlwZVZVOC95VkpmeVNtY2hKVGY0aHBlQVlWMDB5RE92ZjJaK3dJeGFlN0o2OStOUHZGMGx5UjlrbE01U1NtL2hEVDhQUTdwaVprK3JUZUhHdjNQclhlZm5YeE9kamVxY1pOWGVTZVV5bEpUT1VrcHY0UTAvQWt2blYvNzdzdGZkYUpENmxoVnpTckU2K2VyMDYvYWJISzNMMWMvU0h3Qy9PWHZibTFNQS9YUGlzNWlhbWN4TlFmWWdxR2c0YzcxVlgzUDE5WUNidjJWMGxLVE9Va3B2NFEwNkZOUjFlM2Vualp1eXJ4M1FlYys2bWtKYVp5RWxOL2lPblFwTDJ6U3pXdDJOQjdTbC9LRjVrK1QySXFKekgxaDVnT0hmTDV2SHE3WlkrYU1tZWxTbHlnVjZMbEd0RStpYW1jeE5RZllsclpmTngyV0sxNmI0ZTYwYnpUVTdaUkpTWjVQTmFsSmpHVmM5SnZscW5sYjI0dFhJRU02Y3AzL3EyTy9mNWM1NXdHWmFaUlBmanNQNXovVnJIOTNjcU4raHZNNDZMRHhEbnFwWGUzTzhjdXBpdmUycVl1dWVzNTk1ejY0UWxYejFlNzk3ZXJsdGEyaXZETkxidlYyazJ0aFgzejZ5Zldxb2wzUHFkT01EL3dMOWFuOGZxSHRXc2ZsTDNFRkxFRU5LZTQ1dVZJWmxWZTdwcnRNRmZoeStsS3ZJVEVGQkZSUUdLS2lDZ2dNVVZFRkpDWUlpSUtTRXdSRVFVa3BvaUlBaEpUUkVRQmlTa2lvb0RFRkJGUlFHS0tpQ2dnTVVWRUZKQ1lJaUlLU0V3UkVRVWtwb2lJQWhKVFJFUUJLemFtdWFqVnVjR0lpTVh4b0sxUGhaRnRhSEpzTENKaWNjeEZ1Mng5S293cm1zYzdOeGdSc1JobW9sL1krbFFnNWprTTEwWWpJa3FhaS9LMk9oVktydWtGNTRZaklrcWFpM2JZNmxRd3VhamJ1ZkdJaUJMbXRPZmNkN3d0VGdXVGk2WTdkd0Fpb29TNWFKbXR6UkNnUG5yTnVSTVFFWDNNUnEyMk1rT0liT05HNTg1QVJCeU11YVlLZlNsVWY4aEZpL1FPeU91VnFudm5JQ0ora2ViS2ZYM1RXbHVWSVV3Mk9rMnZVbHVKS2lJTzJGeTBONUZ0dXM3V0JBcVlxTlpINi9USGZUcXNuWW42WnIyekVCR1AwS3hDczFHYmJzU1dSS1poZ3EwSEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVCcGtVajhCNEFvbStNYlQrM0pBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiYWE3OWY0NzZlYTAwNDE3ZTk2MjgxZTgzNjUxMjM5MjIiLCJvcHRpb25zIjp7InJrIjp0cnVlLCJjbGllbnRQaW4iOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOnRydWUsImFsd2F5c1V2IjpmYWxzZX0sIm1heE1zZ1NpemUiOjUxMCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0IjoxLCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjk0LCJ0cmFuc3BvcnRzIjpbIm5mYyJdLCJmb3JjZVBJTkNoYW5nZSI6ZmFsc2UsIm1pblBJTkxlbmd0aCI6NCwiZmlybXdhcmVWZXJzaW9uIjoyNjI0MDAsInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjozMH19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTA3LTI4IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjI2MjQwMCwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJISUQgQ3Jlc2NlbmRvIEZJRE8gIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNTA3MjgwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wNy0yOCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyNjI0MDB9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDgtMDEifSx7ImFhZ3VpZCI6IjFlOTA2ZTE0LTc3YWYtNDZiYy1hZTlmLWZlNmVmMTgyNTdlNCIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiMWU5MDZlMTQtNzdhZi00NmJjLWFlOWYtZmU2ZWYxODI1N2U0IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlZlcmlkaXVtSUQgUGFzc2tleSBpT1MgU0RLIn0sImRlc2NyaXB0aW9uIjoiVmVyaWRpdW1JRCBQYXNza2V5IGlPUyBTREsiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9LHsibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZXllcHJpbnRfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImhhbmRwcmludF9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGF0dGVybl9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJ2b2ljZXByaW50X2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmYWNlcHJpbnRfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJsb2NhdGlvbl9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwidGVlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbInNvZnR3YXJlIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWxlc3MiLCJibHVldG9vdGgiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNHRENDQWI2Z0F3SUJBZ0lVTHVMSnlsdkpxSzhKRXp6ZWFXVFlvY0hhZXVNd0NnWUlLb1pJemowRUF3SXdmREVMTUFrR0ExVUVCaE1DVlZNeEVUQVBCZ05WQkFnTUNFNWxkeUJaYjNKck1SRXdEd1lEVlFRSERBaE9aWGNnV1c5eWF6RVZNQk1HQTFVRUNnd01WbVZ5YVdScGRXMGdURlJFTVJNd0VRWURWUVFMREFwV1pYSnBaR2wxYlVsRU1Sc3dHUVlEVlFRRERCSldaWEpwWkdsMWJVbEVJRkpQVDFRZ1EwRXdJQmNOTWpFd09ERXlNVEl3TmpNMVdoZ1BNakExTVRBek1EZ3hNakEyTXpWYU1JR0hNUXN3Q1FZRFZRUUdFd0pWVXpFUk1BOEdBMVVFQ0F3SVRtVjNJRmx2Y21zeEVUQVBCZ05WQkFjTUNFNWxkeUJaYjNKck1SVXdFd1lEVlFRS0RBeFdaWEpwWkdsMWJTQk1WRVF4RXpBUkJnTlZCQXNNQ2xabGNtbGthWFZ0U1VReEpqQWtCZ05WQkFNTUhWWmxjbWxrYVhWdFNVUWdRWFIwWlhOMFlYUnBiMjRnU1hOemRXVnlNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVGVjdDVDFZNTBZVXREczVuQ2Z2cFkzOEw3SUt3SGhoMUVDRXR6RkdnSnFNcldjOU9DeEVSdXJiamx3MWVueWNjcjRZRFBuRHYreXZzNmNJOFlSWjNTcU1RTUE0d0RBWURWUjBUQkFVd0F3RUIvekFLQmdncWhrak9QUVFEQWdOSUFEQkZBaUVBaUp2M3dIVXF5dUowY0F0OTI5bXFBYVB6RmhqaG5heXNxak50eEtwVXpCY0NJRVFYUjdzODZPNkJuQkgzMElXdVdMeHV0L3RzaGlhVDZFdTBOa2g2SGQ2MSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFnQ0FZQUFBRUVmVXBpQUFBQUJHZEJUVUVBQUxHUEMveGhCUUFBQUNCalNGSk5BQUI2SmdBQWdJUUFBUG9BQUFDQTZBQUFkVEFBQU9wZ0FBQTZtQUFBRjNDY3VsRThBQUFBZUdWWVNXWk5UUUFxQUFBQUNBQUZBUklBQXdBQUFBRUFBUUFBQVJvQUJRQUFBQUVBQUFCS0FSc0FCUUFBQUFFQUFBQlNBU2dBQXdBQUFBRUFBZ0FBaDJrQUJBQUFBQUVBQUFCYUFBQUFBQUFBQUVnQUFBQUJBQUFBU0FBQUFBRUFBcUFDQUFRQUFBQUJBQUFBSUtBREFBUUFBQUFCQUFBQUlBQUFBQUFRZElkQ0FBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFDWm1sVVdIUllUVXc2WTI5dExtRmtiMkpsTG5odGNBQUFBQUFBUEhnNmVHMXdiV1YwWVNCNGJXeHVjenA0UFNKaFpHOWlaVHB1Y3pwdFpYUmhMeUlnZURwNGJYQjBhejBpV0UxUUlFTnZjbVVnTmk0d0xqQWlQZ29nSUNBOGNtUm1PbEpFUmlCNGJXeHVjenB5WkdZOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6RTVPVGt2TURJdk1qSXRjbVJtTFhONWJuUmhlQzF1Y3lNaVBnb2dJQ0FnSUNBOGNtUm1Pa1JsYzJOeWFYQjBhVzl1SUhKa1pqcGhZbTkxZEQwaUlnb2dJQ0FnSUNBZ0lDQWdJQ0I0Yld4dWN6cDBhV1ptUFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzUnBabVl2TVM0d0x5SUtJQ0FnSUNBZ0lDQWdJQ0FnZUcxc2JuTTZaWGhwWmowaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOWxlR2xtTHpFdU1DOGlQZ29nSUNBZ0lDQWdJQ0E4ZEdsbVpqcFBjbWxsYm5SaGRHbHZiajR4UEM5MGFXWm1Pazl5YVdWdWRHRjBhVzl1UGdvZ0lDQWdJQ0FnSUNBOGRHbG1aanBTWlhOdmJIVjBhVzl1Vlc1cGRENHlQQzkwYVdabU9sSmxjMjlzZFhScGIyNVZibWwwUGdvZ0lDQWdJQ0FnSUNBOFpYaHBaanBRYVhobGJGbEVhVzFsYm5OcGIyNCtPVFk4TDJWNGFXWTZVR2w0Wld4WlJHbHRaVzV6YVc5dVBnb2dJQ0FnSUNBZ0lDQThaWGhwWmpwUWFYaGxiRmhFYVcxbGJuTnBiMjQrT1RZOEwyVjRhV1k2VUdsNFpXeFlSR2x0Wlc1emFXOXVQZ29nSUNBZ0lDQWdJQ0E4WlhocFpqcERiMnh2Y2xOd1lXTmxQakU4TDJWNGFXWTZRMjlzYjNKVGNHRmpaVDRLSUNBZ0lDQWdQQzl5WkdZNlJHVnpZM0pwY0hScGIyNCtDaUFnSUR3dmNtUm1PbEpFUmo0S1BDOTRPbmh0Y0cxbGRHRStDck90bGxFQUFBYk9TVVJCVkZnSnRSZHJiSk5WOU43N2ZWKzc3Z25iU0Z5YzRPam1nMmlNRGpGS29zQVlCSHlCWTJEOFlXS016aEIrT0Y5cysyTXh5akFpR3Y5TlF3d3hNWEVQRWd6dkRZckFFalFib0FNeHROMFlRNTNRdGQycmEvczlydWZjOWl2dDFxNlF3RzNTNzk1N252ZWNjODg1bDVEWmhuMTdtMGFYSCtrYUlKejhlUFdzdndtUjVhQXZIUEVPQkp1WTFVWmM3NzlBa3poVXZ0Mml4SGRLZDdYYXJDRWFwTXNQZC9Kcmx6UmlURTBReW1pamZQWGNLQ2VjVTA5VGJSdzdpVS9pb256SFhnNXFkTHFjcTZzcllnQmF2cVBqQ0RlTWFoTlJKb1RLVloxZGZMQTNRTGdCM0EwRFlGejFORzIwSUJKenJsNVpOdGpqL3hLQmxMRitUK1NpWkFKTkxyTiswMnBhc2FQOUN5NVpQZ0Fka2tkbFM0OHlOdmxmeEFnRkNaVTRZU3RQbk9LVkxTMktpUllZR1FnalVBeFFtSzQ0M0trVFNXSlh6dmtlb0JyL0N3QU1nVlNTaVh2cmVzbzQ1MlRvbkc4TWdKZE5JS0ZVZFplcFFydzgwQlBna2tUemtRb0FuRkhqUlZkRDdRR3hOdi9zelIwY3ZCc3gxNG5mdE1kTVJKbytYK1p3eWtNNS9vZGtXMEdmVUhnNlFzcDFiYXVFKytYTjdkZUdGTzhVVWZVK0hVS0VWWFVlZHdvQ2h5TXRNempDcG9xbmJCb2NBMnpDN3lXVXhPMFBBWWRCYTh5WDgvS1lPanIrT01sV0xwQmZDRG5oV0s3Wm05c3g5bFFRRVBlREVJWi9uR2dRb0c0UjlaVHorUnpzVHlWR0FsZUQvNDU1dFJLdWEzSGMrSVFTbmRseUpSNE8zbGM2VlRpTVFtUUMzdVNVVHZYLzVzK1NGY1pBWWttY3dKeFFrRWZwUGsvRGh2WG1sanMyWWM0MXE4cUd6bzRPeXpJRlRqelJLeHJMeWlhZXhnMXN6b0RQbWtoc01zSHZUUUtIUTY2d1BGSkpzblBQOEZEd0UzZkRLeDhuSXQ2VnVYMTcrN3Ewcmtzck1lWnU4TkFmbEpLRzIySWdycFhEWVZUcy9KbUQ4UjhFWDhvM2JaQldaQXdBa3UyMlI1OWpTdFp4SXh3RXJ4TURpTSt6MmxZdVFqUVRmWG4yWTN1SWJod1hseG1jYW5xTStRcVBQYlBNNll5SFpoS2pWalArTzhhNXBtNUtnc1VXakREbEpJc1l6ZE9CZU40eWwxWmM4ZFVoQ0g4OUd6dytNNXlCaUlsSTVNYTdLNDUyWWNZQXUwU0RhY3hmdEZsU2NvWXhLUVB4ZEdNYkVOS3daM25MQk1pUU9NdXFuQ2N4WkRuazVQTVE0VHU1bGpLSHFKUkp6RlcvbHBhRzgvdG9WWmVURzVvR2dpRUZTaXcwZUg0aWkyZ3EzcVFVZHVHUUJsazNoUGV6cUJicUc5VUFJa0lONnI2QlgvMVpSTmZRUlRPSXFXTEY2L3BtakJoUTRJSWhJcFVsNHZPTTNaajBhZk1ZT2pUNVFpR091TUlzRXNuUExmU0djQ054eUZmT1hOZGhZeDRlSWNWUUthSGpydm8xUlFSVFdsc2Q0aVlOSmtua0NXb0ZMOFZVaWtQUjhKVHVkamR0S0JKN2JSdG5FT00rSzVrcytoTXRDbVVYallMRzQ4eVdRMlRHbi9UWWpTMklsSG5Fem0xdjNuc0Z5eW9TWU9yT1RCaDF4YTNnM1JFYzdDTjZ2NjFUeTc4NWFDV1RVNjJRc1I4MkEvR09DRWpKSkhZZkVUYTJvTGdXOGxDUWhOVVErT2NsaUw3UnU2WUFuaGFGbHJtc3hTRFVXZkgxSVc1US9RZHdzWVdyRVFNNkFoR3lXRVZ1UGFjaHgxbEdvdC85QzRzMll6eElDaG1HdXJuVUNNWnlBaWNvT2M2RkxlM3V6c1ZWMnBRV1IwMHp3UVBFelB5UFphUWM2c1R2bU1HZ3h1M2tobTVFODBucVRJWWNtVFVZZHEwNGVveExxdjZxS2FJMndXL20zdlN2YVdKTVhuWTMzWTVsd21Ec0VweHVVVFFEY3J3RnFWME1OSUlmdGxQUVY0cjBZQmo4KzFYZFozalYwYTc5L3JsemhWVXFlM3FTY3pBV05FYzBmd1h1TDE0Q3ZoMnEySFVBbVBGNkl4TG1jR0xrbS9uNlFWdkNJTGRoUjhId0JOQy9ZbXBrNnZnNHBIZGVUWlNzQURUcXdUa2pnWmVGcGdRRXd5Z2ZXYUxZclIyN2hWREtUMFA4M0JQdE40V0pNOFdTMEU2eTVZSkl1dDhJZUF2Y2pUV0xVMmxyMFVQQ0tBcG5ySzM2MUdrU0dCejl5ZHZmdHBUbGtWSjl5bERqVFc2bTA2S3BvVmd3YTQ3QzFiQVAwdTNybCt2WEhDWm95WXVMaE1JekZRQ0RNa1VpV2tRUGV0M2prVW5mU0pFazAxcW1FSzVQVFlJZDBnZFUxRnJpWDRPNkl6T0xsVUl0L3M3MTN0b3RhR2xzNFFVVVdnc1RWeWdnS2dHNEEzN3F4STFRNEVaL01BZmNrZy85TmdIaGlJdnRYYWFCR0ZCNmNtUm9Pd1k0bFYrREoxV1B1Q0hidGlFVDNsdTNHRnZWcENFekNZcmhsRDUrM1RXdWhpYTBRdG5Dc0s2aDZjREZTYmpwRmlvOEtSUjBMQVRoTmlnc255SmkvSlpzVEYyRlRHYk1kWHJrdzc4dmpGbDBReTZFcDRtS2p5b1FueW1nMElSWWFQRUIxaXN4YWFIN28zVjBUci8zY3pPeFljNDNoY3oyWmZOSy9QczhqVFZaV1NvcmhPTGFpVXhCQXhRUTkxTUNBNVVxOEFxa1ZLY3lld2NLTlhVMzFEeGRNcGszaERoQ0tBYmViUXpXV3hmVnRNOGVISE50clhrZW1STFo4Z1pZVkJmQ09CZXRrVkNNMFlNMmJhSVEraEpMUVlGM0Q4Z1Jsc0tYd20zSXpJeHF2aTBYZk5aUkFnK2svZmhJRWxRSmFUY3psMXZEK0I5Y01BN2d5cXZ1VFFBQUFBQkpSVTVFcmtKZ2dnPT0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJGSURPXzJfMCIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsiaG1hYy1zZWNyZXQiLCJjcmVkUHJvdGVjdCJdLCJhYWd1aWQiOiIxZTkwNmUxNDc3YWY0NmJjYWU5ZmZlNmVmMTgyNTdlNCIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJ1cCI6dHJ1ZSwidXYiOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjp0cnVlfSwibWF4TXNnU2l6ZSI6MTIwMCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMl0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6NTEyLCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjEyOCwidHJhbnNwb3J0cyI6WyJibGUiLCJ3aXJlbGVzcyJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XSwiZmlybXdhcmVWZXJzaW9uIjoxfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDctMTQiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJWZXJpZGl1bUlEIFBhc3NrZXkgaU9TIFNESyIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjUwNzE0MDAyIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDctMTQiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MX1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wNy0yOCJ9LHsiYWFndWlkIjoiMmZjMDU3OWYtODExMy00N2VhLWIxMTYtYmI1YThkYjkyMDJhIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiIyZmMwNTc5Zi04MTEzLTQ3ZWEtYjExNi1iYjVhOGRiOTIwMmEiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiWXViaUtleSA1IFNlcmllcyB3aXRoIE5GQyJ9LCJkZXNjcmlwdGlvbiI6Ill1YmlLZXkgNSBTZXJpZXMgd2l0aCBORkMiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI4NzA2LCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciLCJlZDI1NTE5X2VkZHNhX3NoYTUxMl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURIakNDQWdhZ0F3SUJBZ0lFRzBCVDl6QU5CZ2txaGtpRzl3MEJBUXNGQURBdU1Td3dLZ1lEVlFRREV5TlpkV0pwWTI4Z1ZUSkdJRkp2YjNRZ1EwRWdVMlZ5YVdGc0lEUTFOekl3TURZek1UQWdGdzB4TkRBNE1ERXdNREF3TURCYUdBOHlNRFV3TURrd05EQXdNREF3TUZvd0xqRXNNQ29HQTFVRUF4TWpXWFZpYVdOdklGVXlSaUJTYjI5MElFTkJJRk5sY21saGJDQTBOVGN5TURBMk16RXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFDL2p3WXVoQlZscWFpWVdFTXNyV0Zpc2dKK1B0TTkxZVNycEk0VEs3VTUzbXdDSWF3U0RIeTh2VW1rNU4yS0FqOWFidlQ5TlA1U01TMWhRaTN1c3hvWUdvblhRZ2ZPNlpYeVVBOWErS0FrcWRGbkJubHl1Z1NlQ09lcDhFZFpGZnNhUkZ0TWprd3o1R2N6MlB5NHZJWXZDZE1IUHR3YXowYlZ1em5ldWVJRXo2VG5RakU2M1JkdDJ6YnduZWJ3VEc1WnliZVdTd2J6eStCSjM0WkhjVWhQQVk4OXlKUVh1RTBJek1aRmNFQmJQTlJiV0VDUktnanEvL3FUOW5tRE9GVmxTUkN0MndpcVBTemx1d24rditzdVFFQnNValRHTUVkMjV0S1hYVGtOVzIxd0lXYnhlU3lVb1RYd0x2R1M2eGx3UVNnTnBrMnFYWXdmOGlYZzdWV1pBZ01CQUFHalFqQkFNQjBHQTFVZERnUVdCQlFnSXZ6MGJOR0poamdwVG9rc3lLcFA5eHY5b0RBUEJnTlZIUk1FQ0RBR0FRSC9BZ0VBTUE0R0ExVWREd0VCL3dRRUF3SUJCakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBanZqdU9NRFNhK0pYRkNMeUJLc3ljWHRCVlpzSjRVZTNMYmFFc1BZNE1ZTi9oSVE1Wk01cDdFamZjbk1HNEN0WWtOc2ZOSGMwQWhCTGRxNDVyblQ4N3EvNk8zdlVFdE5NYWZiaFU2a3RoWDdZKzlYRk45TnBtWXhyK2VrVlk1eE94aThoOUpESWdvTVA0VkIxdVMwYXVuTDFJR3FyTm9vTDltbUZuTDJrTFZWZWU2L1ZSNkM1K0tTVENNQ1dwcE11SklaSUkydjlvNGRrb1o4WTdRUmpRbExmWXpkM3FHdEtidzd4YUYxVXNHLzV4VWIvQnR3YjJYMmc0SW5waUIveXQvM0NwUVhwaVdYL0s0bUJ2VUtpR24wNVpzcWVZMWd4NGcweExCcWNVOXBzbXlQeksrVnNndzJqZVJRNUpsS0R5cUUwaGViZkMxdHZGdTBDQ3JKRmN3PT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZkNBWUFBQUNHVnMrTUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFIWVlBQUIyR0FWMmlFNEVBQUFiTlNVUkJWRmhIcFZkN1ROVjFGRC8zZDU5d2VRU0lnUzlBUUFYY0ZMQVFaaTlmcGVWejF0WS9XVFpyNVd4cGM3VzVrbkxhNWpJM1o4NXNyUzJuTTJzanRXd1pTN0lVSDRINHhDbkVReDREQVpGNzRWN3VzODg1djkvbEluQnZWSi9CNFB2OW51LzVudS81bnZNNTU2ZnpBL1F2MEhiL0lyWDNWRktQbzQ1Y25tNGluVUlXWXdMRlJtWlFVdXdqRkcvTjFpUkhoMUVaME5SVlJ1ZHF0MUJkKzJuU0t5Uy9PaHlzMCtsazNlLzNrUTlxdkQ0WlV0YTRWVlNVdVkwZWlweWlUaEFmb2NvT1JWZ0R1dXczcUtSaUFkM3JiY0V0alRqWUlvZjZXYUhzQ216VlBXQ014K2NnaDh0THFXTUthTVdzVWpMcW8yUnRKSVEwb096bWVycFF1NGVzWmdzT05rR3hIN2Qwa2R2VFQxN3M0T01VN1ZJOFpoamdHYU0rQXE5aUVOdThQaWYxdWR6MDdNd3ZLV2Y4R2xWb0NFWTA0UEM1V2RUYVhZRmJSOHZOdkw1KzNLZ2ZiNXhOTXlhOVJhbUppeW5hTWxHVFZ0RmxyNmJhOXUrcHFuRVg0dU11UlJnalNZRWhyTjd1dEZGZTZscWFsN05ma3c1aW1BR0h5blBwYms4Vm1ZMHhzdG5wdGxGQ1ZDWXR6VHVCTjgzUXBNTGpUdGV2ZFB6U1VuSjdlOG1ranhaMzlmWGJLRGZsZFpxYnZVK1RVZ0duQlZGNmZRMmlQSGc0VzE2VVdVd3Z6YmsxNnNNWkUrUG4wcHZ6N0pTZXVBeWVzOGxjcENtYUt1by9wK3FXcjJVY3dJQUhXcnZQMFlFemhYQXRMQWJzc0hocDdpR2FtdnlpalA4cnlxclhVV1g5WG9vd3h5QXVmTkJycDQzUE9CRlhabGtmOE1EUmlxY3B5b3dBd3B1ejJ4K2ZXdnovRHRkZTlzbXN6eWd0Y1I2QzF3YmR6Qmw2T2xxNVdOWVk0b0dhdGhKTXJrVEV4MGpBUlNIQVZzKzVyWWtRTlhiK1FnZlBMc1E2Z1h5SW5zcmVRZm1wbTdSVkZZZkw4Nm4xZmlVT2tZdlNoa1VQeHZidWt6b3k2SzFpaE0xaG8zWHpXNkV2U2ZYQStkcGlXR2FXZCtkb1h6THptR3dLWUZMQ0FzUkFsUEJBaE1sQ0ZYVTd0QlVWUHI4SGdWY0pIV3ErRjAwcGxyK0RNVGRyUDR6dnhZMTFrTk1oeFQrU2VUR2crZDRWNUxRSml0eVVHSk5COFZGWnNqZ1lCWk0vSUkvWENUa2owcXlET3BGMkFWUTE3Q0lqVXAvRG5UMVVrTDVGNWdkaitzUzF3ZzFnRTNnaWdtNjBmQ1h6U25QWGJ5QVBiSVh2K0lEcEUxNlRoYUhJUzlza3lobG1NRTVGM2NmcUFLaHEyQzBFNVBIMWdZYVhhTFBEa1pHMEhESk9uS1dIcDUxSTB6NVNPdXg4ZTFXQXVaemRIUXJUa3A4VG1qWG9JK2xhMHdHWnN6dWJxYk8zaWZRNkEvVzd2VlNZc1YzbVIwSkt3a0tjNFdIaUJrbVI4STNDQ2dJODdvT0w0cXpUNVArUlVKQmVqRU9nQVBLOGhZUHphdE0rZUlUcDJJTzl5VFFtZXJvbVBSeHgxcXhBY3NpbGUvdWJTZUViY1dRR1lFQ2doY0xZMkh5S2pvZ2pIMjVoTXBqcFV2MU91Z2xpNGVoMmVSdzBPMzJiSmpreXVDZ056ZzB2emxZTVNpU3MwdW9vNE1HN2hNT2pDRWFYMXlGRTBuU3ZqQnp1VG5FcEs4Nlo4SW9xRkFJdWJ3OGtnOUFyRWFSRVdTWkkrakg0WGJwNmc5RTlFbkpUM29hUnpETitNVUpCUURIbjU2YThvVW1FQnVzT3hCcy9ONSt0SkViUGtBRkRqOFVHdk9zL0lXdmNTZ2xHQmh2UzcvRlRZZnBXR1lkRFk4ZlBBeFdTQTM1c1RDNHA0K0xtNEFhcUlvUGVRdGZ1Zks2SmgwWmh4bGJzVVhPU21YTmlmRDVaVEFreURvZmJiY2NseG5BOFdOQXF4Q2JSTnlraFh4UXBhRHc2N2ZYVVlic2lHMEtodHYyb2VJdmg4cmhRTVlPY0VBcVhHL2VJK3puZ09jNXl4cjhxODJJQU0xYy9GTEZPcGxxdTVlRlFYck1aekdjVkNqWWJMV0c1STRCVDFldVJybGJ4dE5PdE1pdERERWhMWElJeW5BQXZ1T0VXRTNYM05kQWZ0OTRWZ2FHNDJYSVF0MFpYNlBlQ0UvcVFGZTlySzZIeDdZVTUwS3ZIN2ZXNGZTK3E3S0tCSnhzZ2dCWDVwU0FHaDFqSXJWaDV6UTZ3M1JmYWFoQlhtL2FDYkNaVGpDVUZVVHlXWnFXOXA2Mk1qSlBYVnFPclBnTU80TnY3NEdrZitvd2Z0TlZCRFFuakZKcUhTdzE3cFh2aFdXNUtacWUvUTQ5Ti9VU1RDQVZXb1FYRklIQkhYWGUzRlByVURzdUdEbXRGL2hIS1RIcGVreGhpQU9QSStTSnE2UzZIRjRJOVlXemtCSlRvNDZpVU16V3A4UGlyL1JpZHVMeEtZc1Nrc1Y4dkxsT1F2aEdYMllsUjBPQmhCakMrdS9nRWN2WTBBcEs3WWs0MU54alBTUW5XRkhURjY2VXJqZ2V2QjhDdTVhK2wydllTUlB0dVZEbzczaGhkTVNIblVYN3RUanNWWkd4QWwvV3B0aU9JRVExZ25MMjltWDYvdFIxdG1sa1lqOFc0WCtDU2pXY1VER1kxTnBTL0M3aFNLcWlNTE0vbDJRbVNXWjczRGR6K2dpbzhCQ0VOWVBRNDZxbmt6d1hVYnF2Qmt4alVRc1dmWkZnYnVvM3JBZit3TjdqT085MCt5bng0UGkzTCswbllMMVNjaERVZ0FQNGdQVi83SWQxcSsxSFNobXVHa0lxV1JQZ3l4TUZxUDhIZmpUbmpYd1k1YlFmYkpjdDZPSXpLZ01Ib3RGL0hlMWVnc2F4SFNxRzZ3ZmRtUTV4OE55VEZGcUJjcDJpU293SFIzeWs1KzM2aEY3dlhBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMV9QUkUiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6IjJmYzA1NzlmODExMzQ3ZWFiMTE2YmI1YThkYjkyMDJhIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWV9LCJtYXhNc2dTaXplIjoxMjAwLCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjgsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4LCJ0cmFuc3BvcnRzIjpbIm5mYyIsInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi04fV0sIm1pblBJTkxlbmd0aCI6NCwiZmlybXdhcmVWZXJzaW9uIjozMjg3MDZ9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMC0wNS0xMiIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWXViaUtleSA1IE5GQyBTZXJpZXMiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDE5MDgyNjAwMiIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4xLjEiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMyJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMC0wNS0xMiJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjAtMDUtMTIifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyJhYWZiNWVjZjRiM2MzNmZjZDdiOGFmOTlhYjE4ZjZiMTQ4ZTUxNTY2IiwiZTdmYzkwODcxNzYwNzIyZWU2MjVhMTliYjM4YmJiODQ3NzU3ODYzNSJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyJhYWZiNWVjZjRiM2MzNmZjZDdiOGFmOTlhYjE4ZjZiMTQ4ZTUxNTY2IiwiZTdmYzkwODcxNzYwNzIyZWU2MjVhMTliYjM4YmJiODQ3NzU3ODYzNSJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiWXViaUtleSA1IFNlcmllcyB3aXRoIE5GQyBLVlpSNTcifSwiZGVzY3JpcHRpb24iOiJZdWJpS2V5IDUgU2VyaWVzIHdpdGggTkZDIEtWWlI1NyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzYsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6Mn1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiLCJyZW1vdGVfaGFuZGxlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlEU0RDQ0FqQ2dBd0lCQWdJVURxRVJ3KzRSbkdTZ2d4Z1Vld0pGRVBEUlozWXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFESTdYbkgrWnZEd01DUVU4TThaZVY1cXNjdWJsdlZZYWFSdDNZYmF4bjlnb2RMeDVzd0gwbFhyZGdqaDVoN0ZwVmdDZ1lZWDdFNGJsMXZielVMZW1yTVdUOE4zV01HVWU4UUFKYkJlaW9WN1cvRStoVFpQLzBTS0pWYTNld0tCbzZVTGVNbmZRWkRyVk9SQWs4d1RMcTJ2NUxsajV2TWo3SnRPb3RLYTlKN25IUzhrTG16WFhTYWowU3dFUGg1T0FaVVROVjR6czFidm9UQVFRV3JMNC9KOVF1S3Q2V0NGRTVuVU5pUlFjRWJWRjhtbHFLMmJ4Mno2b2tWbHR5RFZMQ3hZYnBVVEVMdlkxdXNSM0RUR1BVb0lDbE9tNGNycHduRFJMVkh2alllUEdCQi8vcEV5enhBL2djU2N4andhSDFaVXc5Ym5TYkh5dXJLcWJUYTFLdmpBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlRxdDBLUW5neDdaSHJiVkh3RHVueE9uOWloWVRBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBcVFhQ1dNeFRHcVZWWDdTazdra0ptVXVlVFNZS3VVNitLQkJTZ3dJUm5sdzlLN0hlMUlweFowaGR3cFBOaWtLam1jeUZnRlB6aEltd0hKZ3h4dVQ5MFB3M3ZZT2RjSkpOa3REZzM1UFhPZnpTbjE1Y0ZBeDFSTzBtUFRtSWI4ZFhpRVdPcHpvWHZkd1hETTQxWmFDRFlNVDd3NElRdE15dkU3eFVCWnEyYmp0QW5xL05EVUE3YmU0SDhIM2lwQysvK05LbFVyY1VoK2o0OEs2N1dJMHUxbTZGZVF1ZUJBN24wNmo4MjVycURxc2FMczlUYjdLQUhBdzhQbXJXYU5QRzJraktlcnhQRWZlY2l2bEZhd3AyUldadnhyVnRuM1RWMlNCeHlDSkNrWHNORDA1ZENFclZIU0pJcytCZHRUVk5ZOUF3dHlQbW55YjB2NG1TVHp2V2R3PT0iLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVIzOG1xMjZTZjJzelZWMkJkRzZXRU43a3VXVXdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFSWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFOWTBXYjlvUG9Sb0tvUXlXUGFKcHoxMXZyV1RnNnpUdG1OajJWb0tSbnl2S0dScXB6YjgzdzVsNllBOTZVWWtZQkRRUDBpbE8yRFBlNndXcVZSNXpEZlJ6ZGNIOGJoK0w3ZEdHdmFlNmhSVFpoa0ZrQ3BYRHM0SGNja25yRGY4RkNsSjdIZTM5SmY0Mi9HMVFtMnp6OVdXbXJQWHRnaUsveDA1R2pzUWZHdURHMXpmNVFUVVVpZThsd3ltSzNUZmRPdk5lZUpBQVBlMnBuN0l0ZlJiK3JWck5XaUR6bFJuMnZObloyd1BvNHdIL1dKNmRoWFpHK3JNV1QrYTZCb2NnMVVmSXc2a2R1bkc0YlRwWnpzdmFjRll5UjBtcGYrRGVPbnBTV0FteXdKV0h2VGxmMllYeEZ5ZVhjVEFDZFFsY01OR0oyVmhaUTQ4eHRQNS9SQlAvOGtDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNoeTQyb2tpcWNUUzFpcWEvSFJXamtCbjRIL01COEdBMVVkSXdRWU1CYUFGT3EzUXBDZURIdGtldHRVZkFPNmZFNmYyS0ZoTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBbitSSElQYnRNRUROZFQxZzhIL1JpdEFrVWRMZ0F0MXRXR1dubGo5a25idjQvNEdsWDdDOXA0NWVmUE85L2FaTDZPVjFYUktCaTZLbXRCVzVLN251WUVuTXgvNUJxQlNiTFQ3cmhkdUM0OVRCZU1iOVBIZFhzVGxTVk5ZZWZyMWRHaWRyNGoweFZCUUxiMXJrbkRBYmRXRHpLZnZuYXlLTzhGcndlN0h4ODQzTUcvckorYzBYcnVVdmJmVlRDSExpSVdoTTdvTkRoTDh4b2I2eFVvOUtMS2NTTCtJdFlzTzMvOVdiOFE5R2pzcUw0RlhzRGNHMVNhWWg3S3BmdU1tT2l4cXpKWk8ybklpY1BZUmcxSTJTdWlVZllPNzB0bWRIY2JsK2tTUW1TWXQ3cnE0dmlJTGcyR3gzajlySVR1V1RqYmFVYVNTUXhnT21NU0h1eXpNQUMiLCJNSUlEUnpDQ0FqR2dBd0lCQWdJVWV4OW5UOXZ3Wk5YUzQ4M0xkaVlHZncyU2pTb3dDd1lKS29aSWh2Y05BUUVMTUM0eExEQXFCZ05WQkFNTUkxbDFZbWxqYnlCQmRIUmxjM1JoZEdsdmJpQkpiblJsY20xbFpHbGhkR1VnUWlBeE1DQVhEVEkxTURnd01UQXdNREF3TUZvWUR6azVPVGt4TWpNeE1qTTFPVFU1V2pBbk1TVXdJd1lEVlFRRERCeFpkV0pwWTI4Z1JrbEVUeUJCZEhSbGMzUmhkR2x2YmlCQ01pQXhNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXUxTWV2bnk5ZHlPOVpVQzM5U29NaExjUi9EWHJ0Ri9jaU0xMnRjaXkyRVhBWjZNa3JpdlZ0Q2ZFVk05WDZJU1RFbkJQNnVTWVlvdjZwcHY2TzZKaDJOSG1ZbTR3K0puUzRWbkNQVTdtSEFNZlZJMk1HVFRNVk9ldzB4VXNHN3NJU0lrSURVQm11azhZSzljNXppYzkrdkZRR0xJa3NkWE81aVZGSWdORzUzY0dYRDRaTFpvQVBpdTBQRW96eEFxWUlhSTRneEtoT0EzUzgvVzhtSVdzdTZvZnlqNEd2a0ZHNlo3a3lGMzEwN1A3bXdGSExySTNFTmFQV01PRmNUYUdhMGR3Ky92VlJ3alJjRVpCVnN1dVQvODdja1NzMGE1cGt0M3ZaQmxhWWVUOHB6U3JlVjdtb3djSU05MEwyaWFBVGxQMG54bWFFNm5PeVRib2pGVmwyd0lEQVFBQm8yWXdaREFkQmdOVkhRNEVGZ1FVU1hFaDNzYTNidER1cm00TU0vQzdTMWxSdXVZd0h3WURWUjBqQkJnd0ZvQVU2cmRDa0o0TWUyUjYyMVI4QTdwOFRwL1lvV0V3RWdZRFZSMFRBUUgvQkFnd0JnRUIvd0lCQURBT0JnTlZIUThCQWY4RUJBTUNBWVl3Q3dZSktvWklodmNOQVFFTEE0SUJBUUI1R2MzaGFmdHA3aEtzRVpzbytpL1o1blJ1cWRtekcyV0NsVW9SVXFiYVB5Z2xuSkRqS1Iva2ZnT2w2aWJiRi96dGhtM0ttWFE3SGNESVAyeE1kRzdVMkwyaW1iSlFIcVBmL2gySHFvamI0clpndWUrNlc0a3RTUjVlbFI5TDFyWXFFL1NHWU00aUVLb1ZRU3Y3UlQxcnhJZVdpS3N3L1Z4eGkvUU9uc3gzRjd4ODBDQ1lnQjRFM3lReDhWVFc0NDBoVEV3VEExZU1IT2l4MzJ0UHR5eUhJYThQVlZJZlZwSFFKQmFNVnZ2NTA4VUVqd2tiVTJybmpmem9TVE5TOUE1alVROG1CU3ZlOTVyakIwZG85OEVVK0R4ZEJxWDIrSDZpNXdsSUNGZ3poZHpjc25lOWhHS1Q2bHpUWDRjSWRKc3JZMit4bGVLMEZGUXk2bEdFVkxFZSIsIk1JSURTRENDQWpDZ0F3SUJBZ0lVVWNtTVh6UklGT2dHVEswVGIzZ0V1Wllaa0JJd0RRWUpLb1pJaHZjTkFRRUxCUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JCSURFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURtNTU1YldZOVdXK3RPWTBySVdIbGRoK2FOYW5vQ1pDRmg3R2szWVpyUW1QVXcwaGtTRzZxWUhRdFArZlp5UzMzVkVydmcrQlFxbm11bWdOaGZ4RnJrd0VaRUxlaWRCY0M4QzRBZzRucXFpUFdwenN2STE3TmN4WWxJbkxOTEZjWlkvK2dPaU42Wk9UaWhPNS92QlpNYmo5cmlhQWNxbGlZbU5HSlBnVGNNR2FFQXlNekVNTnkybm02RXArcGpQNWFGNmdpMjF0L1VRRnN1SjFqMlJqL3luTS9TZFJ0K2VjYWw1T1lvdHhIa0ZiTDl2dnYyQTJPdjVJVFpDbHc0Yk9TOW5weXBRaW1PWjVRQVl5dG1ZYVFwV2wvcE1ZejZ6U2o4UnFrVkRORUpHcU5mVEtBMml2TFl3WDZsU3R0TVBhcGcwSjg0bDlYMHZvVk4vRnBTNFZDVkFnTUJBQUdqWmpCa01CMEdBMVVkRGdRV0JCUWdLRkFoRzZSYVcraFR5NTJkeGVUOGJDOTZIekFmQmdOVkhTTUVHREFXZ0JUUzd1OWFJbzA2YlZ3amx6M3loZFVtOFNWN2tqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQTRHQTFVZER3RUIvd1FFQXdJQmhqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFZTXpnTHJKTElyME9vdlFuQVpyUklHdWFiaUhTVUtTbWJMUldwUmtXZUF0c0NoREVIcFhjSi9iZ0ROS1lXb0hxUTh4UlVqQjRDeWVwWWV2YzNZbHJHOG83ekh4cGZWY2FvTDVTZXVKa3pIeEtuNGJUYVNwOStNdndhbW5wNjRrWk1pTmJGTGtuZlA5a1lLb1JIa01XaGVSSjFVc1AxejRTY21rQ2VJTGZzTXM2dnFvdnFqV0NsRnNKcEJjc2x1WUhXRjdiQkoxbjRSd2crQVRFb3BZNElnR3Y2WnZ3YytBOXIrQVQyaHFwb1NrWW9BbCtBTll3Z3NsT2Y5c0plMFYrVEE5WVkvVWxhQm1QUFRkMC8vcjl3dmNlUFdaa1BqS29BQy96VU5oZkRiaDRMVjhHSHMzbHlYMlhvbUwvTE5jOEpZenlJYURFaEdRdmVvUGhoL3RyMWc9PSIsIk1JSURTakNDQWpLZ0F3SUJBZ0lVVG5iYkdJUjJOSHZ6cUlLRkFlUXdHMVhCaXMwd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JCSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVFZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU9zWGozazA0QmFuNFRZZHRaS3FEL09QSnh5RHlhUG1DQlVGVWlhWklnVHRlWm5qM1gyNURoZ3BaWlhzQzREMHlkSWNybEE2d05VSW5PUkwvTDl6QmJURUlNQVZNR282ZzdVS0FtYjJNRjZBSGJuaFlKZDllaWt1cFZOV1NoSE5ZTmM0R0JkTzFZTjZBZlVxdkpoSGJlM1Y0U05NUG1CUkVLSlBWejdUaHdnbWdnVGU4V3MySzAvd3NxdjJ3U0U3cGJDQnNVWmhJWDUxYlpNM3BxRHdKUFRtUkZFdnQwLzZ0RzVlTzhGM2oxNE9YcWZFaG1qbjFWdnhLRFlRT0xaQXhDd3dnQzBQNENkZld2M3k4UFNSOEkzNTRoTzFZK0d6Tmp2SXFYMzhOS0x5d3VJWUhGZXJPeE5seEVNQnZGaFlCdVJ1WUFra2dVYVBxTjZVQmhzSUxyc0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ0NvUkhoaXlObmJuWFJXSUw2WkJYb0JYOVlUTUI4R0ExVWRJd1FZTUJhQUZDQW9VQ0VicEZwYjZGUExuWjNGNVB4c0wzb2ZNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUNRRmFmSkkxLzVXZzlDRUVpbUUxUlA1NFJnUXdUTlRPT1FzTEFDVGUrckl0bEZRekM5WkRoclY4Mjh5WDdqenkrQUFzcDNpeks3VDF0aDJkbDdtK3R1MHN3MlBhL29sYzAybnQ2UHlJdzM0OGdhSHpoSTErMEtFNDVxeHZGRGVMMmxNeGJQZkNZdnlFRWFZemppUUVMVTU5NTFwWEdXeUtNYS80Zkx0TytaS09YaE11VmVxNHJYRFBJNTRXNkpIT2lBYWlLZGl3KzVlM2Mya3QvakZJUXRNNnZNWGc5TE5GemRqRVROdDIwVlg5UWV2UnBGWmZ1Y01HOXdDYVFEb0ZsUHpwVE1KS2hQZXYvaW1KbVpZaEtmcjBsTGNlbXRxakl4TEFvcVpkT1lmSEJnNit2QWNkUEkvaWF1R3BVQXY3WCtVS05tRHdqWjJCYUg0c0x3aEIybSIsIk1JSURQakNDQWlhZ0F3SUJBZ0lVWHplaUVESkVPVHQxNEY1bjBvNlpmL2JCd2lVd0RRWUpLb1pJaHZjTkFRRU5CUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTVo2L1R4TThySVQrRWFvUHZHODFvbnRNT28vMm1RMlJCd0pIUzBRWmN4VmFOWHZsMTJMVWhCWjVMbWlCU2NJWmQxUm54MW9kNTg1aCsvZGhLN2hFbTdKQUFMa0tLdHMxZk81M0tHTkxadWp6NWgzd0duY3I0aHlLRjBHNzRiL1UzSzloRTVtR05ENnpxWWNoQ1JBSGZyWU1ZUkRGNFlMMFg0RDVuR2R4dnBwQXk2bmtFbXRXbU1ud08zaTBUQXVjc3JiRTQ4NUh2R000cjBWcGdWZEpwdmdRamlUSkNUSXErRDM1aHd0VDhRREl2K25HdnBjeWk1d2NJZkNrenlDaW1KdWtoWXk2S29xTk1LUUVkcE5pU092V3lETVRNdDFid0N2RXpwdzkxdSttc1V0NHJqMGVmbk85czBaT3dkd01SRG5INHhnVWw1Wkx3cnJQa2ZDMS8wQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQjhHQTFVZEl3UVlNQmFBRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRTXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJEUVVBQTRJQkFRQzNJVy9zZ0I5cFo4YXBKTmp4dUdvWCtGa0lMa3Mwd01OcmRYTC9jb1V2c3JoenN2bDZtZVBNcmJHSkJ5SjFYbnF1QjVzZ2NSRU5GeGRRRm1hM21pbzhVcGYxb3dNMVpyZVhySjBtQURHMkJwbHFiSm54aXlZYStSMTFyZUlGVFdlSWhNTmNaS3NEWnJGQXlQdUZqQ1dTUXZKbU5XZTltRlJZRmdOaFhKS2tYSWI1SDFYZ0VEbHdpZWRZUk03Vm9sQk5sbGQ2cFJGS2xYOHVzdDZPVE1PZUFEbDJ4TkYwbTFMVGhTZGV1WHZEeUMxZzkrSUxmejNTNk9JWWdjM2lyb1JjRkQzNTRnN3JLZnU2N3FGQXc5Z0M0eWkweEJUUHJZOTVyaDQvSHFhVVlDQS9MOGxkUms2SDdYazM1RCtXVnBtcTJTaC94VDVIaUZ1aGY0d0piMGJLIl0sImljb24iOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJpY29uRGFyayI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsInByb3ZpZGVyTG9nb0xpZ2h0IjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwicHJvdmlkZXJMb2dvRGFyayI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTA2LTIxIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZdWJpS2V5IDUgU2VyaWVzIHdpdGggTkZDIEtWWlI1NyIsImNlcnRpZmljYXRlTnVtYmVyIjoiVTJGMTAwMDIwMjUwNjIxMDAzIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDYtMjEiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTA2LTE5In0seyJhYWd1aWQiOiIzMWMzZjdmZi1iZjE1LTQzMjctODNlYy05MzM2YWJjYmNkMzQiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjMxYzNmN2ZmLWJmMTUtNDMyNy04M2VjLTkzMzZhYmNiY2QzNCIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJXaW5NYWdpYyBGSURPIEVhenkgLSBTb2Z0d2FyZSJ9LCJkZXNjcmlwdGlvbiI6Ildpbk1hZ2ljIEZJRE8gRWF6eSAtIFNvZnR3YXJlIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJyc2Fzc2FfcGtjc3YxNV9zaGExX3JhdyIsInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3IiwicnNhc3NhX3BrY3N2MTVfc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJzb2Z0d2FyZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJzb2Z0d2FyZSJdLCJjcnlwdG9TdHJlbmd0aCI6MTEyLCJhdHRhY2htZW50SGludCI6WyJpbnRlcm5hbCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRXJUQ0NBNVdnQXdJQkFnSVFSVGZjZ282eHdJRkdmbXR6azFCU25UQU5CZ2txaGtpRzl3MEJBUXNGQURCRU1SVXdFd1lLQ1pJbWlaUHlMR1FCR1JZRmJHOWpZV3d4R0RBV0Jnb0praWFKay9Jc1pBRVpGZ2gzYVc1dFlXZHBZekVSTUE4R0ExVUVBeE1JVjJsdWJXRm5hV013SGhjTk1EZ3hNVEkwTVRnek5EUTVXaGNOTWpnd056RXpNVGN6TWpNM1dqQkVNUlV3RXdZS0NaSW1pWlB5TEdRQkdSWUZiRzlqWVd3eEdEQVdCZ29Ka2lhSmsvSXNaQUVaRmdoM2FXNXRZV2RwWXpFUk1BOEdBMVVFQXhNSVYybHViV0ZuYVdNd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURRQ2ttUS9LOERuMzlxU0NXNXRLTHZ2RExIM0NsU2NnUXJEZzcrdVk0NGpIbElZMS9MbDZ2MnJwajdubG1WTWxJem9nZDN5WGpDRkJ2R3I0emlHUTJRYzhVcGthVTk2RVp4RXRId1pTdHc2WVEwamRuZ2tTTFB2T3A4VDhZaUpwY3ZzVnRRdGlRME9zVFR1aU8yRWk0THVMaDdLUis4eDRiQVJ2emtCV3N0TkJUcVZTQVpRWWVzcW5sOEg1U2Z3YjNJb3U4TFNpQXN1T1h5eHQybXM5MTFZcnhXdmgvS25PZWwzT2QzaCtLNWRRWVA1MytmUFV6Z3o1NlRUajhSNFk2elJ1emRrYm5SNnhXWGRySzQxNGlYOUQ2eDVxOFcyWEpKcFRNSzdFblNYRzBxN1hGN3A2OGpES0FueEFGOGtmaDN1aW5jMnVsbVZPWmJUUnp4RjhCM0FnTUJBQUdqZ2dHWk1JSUJsVEFUQmdrckJnRUVBWUkzRkFJRUJoNEVBRU1BUVRBTEJnTlZIUThFQkFNQ0FZWXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QWRCZ05WSFE0RUZnUVVqTXNUYlkwd1hRQlIyOWJXSEl2YkZmVUFGZlV3Z2dFR0JnTlZIUjhFZ2Y0d2dmc3dnZmlnZ2ZXZ2dmS0dnYlZzWkdGd09pOHZMME5PUFZkcGJtMWhaMmxqS0RJcExFTk9QWEJvYjJWdWFYZ3NRMDQ5UTBSUUxFTk9QVkIxWW14cFl5VXlNRXRsZVNVeU1GTmxjblpwWTJWekxFTk9QVk5sY25acFkyVnpMRU5PUFVOdmJtWnBaM1Z5WVhScGIyNHNSRU05ZDJsdWJXRm5hV01zUkVNOWJHOWpZV3cvWTJWeWRHbG1hV05oZEdWU1pYWnZZMkYwYVc5dVRHbHpkRDlpWVhObFAyOWlhbVZqZEVOc1lYTnpQV05TVEVScGMzUnlhV0oxZEdsdmJsQnZhVzUwaGpob2RIUndPaTh2Y0dodlpXNXBlQzUzYVc1dFlXZHBZeTVzYjJOaGJDOURaWEowUlc1eWIyeHNMMWRwYm0xaFoybGpLRElwTG1OeWJEQVNCZ2tyQmdFRUFZSTNGUUVFQlFJREFnQURNQ01HQ1NzR0FRUUJnamNWQWdRV0JCVGZRUTVXcldNUlc3OHZrV2gybmlEVDNWOTdyREFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBaUxwTHRuYUUwQWJJaVNtbWo0RUxSVFJNR3VlZHhkNlpUWTJ5VWkxUU5zd2FJMk9GbmgvTkRXTFdPZ0YzNkhPdkRFTFhCWVpNNitBc1BpVkhVNzJzdmxZajdZNUh6WnZvVWtNM2R2YnhyNlUyQko4OUpFRVRSSVdxVWxZT3E0N0JlODRPUjJYdm1uaVV1SnJGT3pzQVljdHJaWDJURlgzQWJWUHM0TFNUTmMwZGEwdXEwQ3FvT1NPSUNmenoxWDd1ZjdUdzlPMEtjS2VyRmd6ZVVjbUd0S3Y1b0s3Ulk5V2tEeGRpMjJSeTBHRWI2MHRuYXY3cWs5amE0NVdCak4xMHh1TnBOc2xDYWxSbk5ZT0dWdFkxbTRveTJnKzF4ZDFiMHZ4ZzB4SnNXNGsyb3ZUZFpRUzVIQ2ttZTA1TTVMeTBTRlNWRy9SSHhNczZJeDQzQ2N0Q0lRPT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBTFFBQUFDMENBTUFBQUFLRS9ZQUFBQUIxRkJNVkVVQUFBRC8vLzhSQmZjU0NmTVNDdklUQy9FVEMvQVRETzhURGU0VkV1a1dFK2dYRk9nWEZlWUFBTThBQU00WUYrVWFIT0FBQjg4QUJNNEJCODhCQ004Q0NjOEVDYzhJRDlBYUh0MGJIOXdiSU53YklOc2JJZG9jSWR3Y0l0b2NJOWtxTU5jQkM5QURDOUFFRGRBRkVkRU5GOU1ORjlJUEdOTVBHTklQR2RJUkd0TVJHOU1USGRNVUh0TVZIOVFWSHRNV0g5TVdJTk1YSU5RWUlkUVpJdFFhSTlRYUpOUWJKZFViSk5RY0pOY2NKZFVkSmRjZEp0VWVKdGNkSnRRZUo5VWVLTlVlSjlRZUtOTWVLZE1mS05VZktkUWZLZE1mS3RJZ0tkWWdLdFlnS2RVaEt0WWhLOVVpSzlZaUxOWWpMZGNqTE5Za0xOWWtMZFluTU5jbkw5WXBNdGNxTTlnc05OZ3VOdGd4T2RreE90bEZUTnhOVk41UlY5NVRXZDlWVzk5ZFkrRmthdUppYU41NGZlYUZpdU9FaWVLRml1S0dpdU9HaStPc3NPZ25QcjhyU0xVdFRxODdjSTA5ZFlsRWhuZEprMnBLbFdsTW0ySk5uV0JObldGVnNVNVZza3RXczB4V3NreFh0VXBXdEVwV3MwcFd0RXRXczB0WXQwaFd0VWhYdFVoWHRrbFh0VWxZdVVaWXVFVll1RVphdlVKWnUwUmF2ajlhdlVGYndENWJ2ejlleURoZXh6bGR4amxkeFRsZnlUVmV5RFpleHpkZXh6aGV4amhmeWpOajFTcGoweXRpMGl4aTBpMWwxeWhrMWlrVnFpRWlBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBRittbFVXSFJZVFV3NlkyOXRMbUZrYjJKbExuaHRjQUFBQUFBQVBEOTRjR0ZqYTJWMElHSmxaMmx1UFNMdnU3OGlJR2xrUFNKWE5VMHdUWEJEWldocFNIcHlaVk42VGxSamVtdGpPV1FpUHo0Z1BIZzZlRzF3YldWMFlTQjRiV3h1Y3pwNFBTSmhaRzlpWlRwdWN6cHRaWFJoTHlJZ2VEcDRiWEIwYXowaVFXUnZZbVVnV0UxUUlFTnZjbVVnTlM0MkxXTXhORFVnTnprdU1UWXpORGs1TENBeU1ERTRMekE0THpFekxURTJPalF3T2pJeUlDQWdJQ0FnSUNBaVBpQThjbVJtT2xKRVJpQjRiV3h1Y3pweVpHWTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5MekU1T1Rrdk1ESXZNakl0Y21SbUxYTjViblJoZUMxdWN5TWlQaUE4Y21SbU9rUmxjMk55YVhCMGFXOXVJSEprWmpwaFltOTFkRDBpSWlCNGJXeHVjenA0YlhBOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOGlJSGh0Ykc1ek9tUmpQU0pvZEhSd09pOHZjSFZ5YkM1dmNtY3ZaR012Wld4bGJXVnVkSE12TVM0eEx5SWdlRzFzYm5NNmNHaHZkRzl6YUc5d1BTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM0JvYjNSdmMyaHZjQzh4TGpBdklpQjRiV3h1Y3pwNGJYQk5UVDBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5NFlYQXZNUzR3TDIxdEx5SWdlRzFzYm5NNmMzUkZkblE5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5elZIbHdaUzlTWlhOdmRYSmpaVVYyWlc1MEl5SWdlRzF3T2tOeVpXRjBiM0pVYjI5c1BTSkJaRzlpWlNCUWFHOTBiM05vYjNBZ1EwTWdNakF4T1NBb1YybHVaRzkzY3lraUlIaHRjRHBEY21WaGRHVkVZWFJsUFNJeU1ESXdMVEEzTFRJeFZERTRPakUwT2pBMEt6QXpPakF3SWlCNGJYQTZUVzlrYVdaNVJHRjBaVDBpTWpBeU1DMHdPQzB6TVZReE5qb3hPRG94TkNzd016b3dNQ0lnZUcxd09rMWxkR0ZrWVhSaFJHRjBaVDBpTWpBeU1DMHdPQzB6TVZReE5qb3hPRG94TkNzd016b3dNQ0lnWkdNNlptOXliV0YwUFNKcGJXRm5aUzl3Ym1jaUlIQm9iM1J2YzJodmNEcERiMnh2Y2sxdlpHVTlJaklpSUhCb2IzUnZjMmh2Y0RwSlEwTlFjbTltYVd4bFBTSnpVa2RDSUVsRlF6WXhPVFkyTFRJdU1TSWdlRzF3VFUwNlNXNXpkR0Z1WTJWSlJEMGllRzF3TG1scFpEb3dZakV3TmpFMll5MHhPV0UwTFdVME5EWXRPVEJsWlMwM056QXpNMkZrTUdRellXVWlJSGh0Y0UxTk9rUnZZM1Z0Wlc1MFNVUTlJbUZrYjJKbE9tUnZZMmxrT25Cb2IzUnZjMmh2Y0RvNU4yTTROR0UyTnkwM1pESmxMVEJsTkRjdFlqQXpOUzFsTjJVNE5XSXhaRGswWlRZaUlIaHRjRTFOT2s5eWFXZHBibUZzUkc5amRXMWxiblJKUkQwaWVHMXdMbVJwWkRveU1tVXhOR1JrWkMwNVpqQXpMVGhrTkdJdFlUYzJOaTAxTW1FNE1qaGpNRGRoTmpjaVBpQThlRzF3VFUwNlNHbHpkRzl5ZVQ0Z1BISmtaanBUWlhFK0lEeHlaR1k2YkdrZ2MzUkZkblE2WVdOMGFXOXVQU0pqY21WaGRHVmtJaUJ6ZEVWMmREcHBibk4wWVc1alpVbEVQU0o0YlhBdWFXbGtPakl5WlRFMFpHUmtMVGxtTURNdE9HUTBZaTFoTnpZMkxUVXlZVGd5T0dNd04yRTJOeUlnYzNSRmRuUTZkMmhsYmowaU1qQXlNQzB3TnkweU1WUXhPRG94TkRvd05Dc3dNem93TUNJZ2MzUkZkblE2YzI5bWRIZGhjbVZCWjJWdWREMGlRV1J2WW1VZ1VHaHZkRzl6YUc5d0lFTkRJREl3TVRrZ0tGZHBibVJ2ZDNNcElpOCtJRHh5WkdZNmJHa2djM1JGZG5RNllXTjBhVzl1UFNKellYWmxaQ0lnYzNSRmRuUTZhVzV6ZEdGdVkyVkpSRDBpZUcxd0xtbHBaRG93WWpFd05qRTJZeTB4T1dFMExXVTBORFl0T1RCbFpTMDNOekF6TTJGa01HUXpZV1VpSUhOMFJYWjBPbmRvWlc0OUlqSXdNakF0TURndE16RlVNVFk2TVRnNk1UUXJNRE02TURBaUlITjBSWFowT25OdlpuUjNZWEpsUVdkbGJuUTlJa0ZrYjJKbElGQm9iM1J2YzJodmNDQkRReUF5TURFNUlDaFhhVzVrYjNkektTSWdjM1JGZG5RNlkyaGhibWRsWkQwaUx5SXZQaUE4TDNKa1pqcFRaWEUrSUR3dmVHMXdUVTA2U0dsemRHOXllVDRnUEM5eVpHWTZSR1Z6WTNKcGNIUnBiMjQrSUR3dmNtUm1PbEpFUmo0Z1BDOTRPbmh0Y0cxbGRHRStJRHcvZUhCaFkydGxkQ0JsYm1ROUluSWlQejVYQmVhbEFBQU8xa2xFUVZSNDJ1MWQ1NThrVlJXZFowNllBNkppRHBnRG1GaXRMVnl6bUhQT1lsWlFFV1E5QVhNV3pQNnpmcml2OHF2dXFwN3Vuc0hmOUtlZDdkNlpzN2Z1dStIY2M5K2NwQWZnNitRQzlBWG9DOUFYb0M5QVg0QytBSDBCK2dMMEJlai9GOUEwdVAwelBrZWdEVXVpTm9BaWJNRzBjUTVBU3hJczBCUUZxUGdaaXBZZ1E1SjV0cUJoeXpZbFNvSWd5eE1qdzdKSlU3WW9VajVEMEpSdDA1WmxVYUk5OW02RGtDWERsRUFKcHZZQSsyUkh5QklzMmJJQVdMUmdxZWNqdGtSWnNnM0pGR0VBT0QzcW5VQ1REakRNV0V6WmxIb3VRb2xDL0w4b0VXbzh4ZElaZ0xacFc1WUV3SllrSW50QzloREpJRzNURWt5THRpSElQTFd0ZHdDdENHS2tRWnRLeVNaaFc0WWordG1TYkVLMllLUkVDYVJFaXlDUERScXlURkRxaFY0aUlyWWxLaUpkdUVZdk9sdUFiQm8rbmExUGRzQXNHclpIQ1VXd0xVR1NMTW5rSkFxS3BreEwxakZCbTVDTVFhRG9Ib0VsQUxRaDBHSWh2RU9rVDJmcTlhQWRqc0dpdDlNbW1BTmhFWml0TUxhUEIxcVIzSVM1ZHdGWnRHeDZKc2JEeHR5N0J3RnR5VVlYYWhIcHNQZWxhV253TEJ4UnZlOWd0RTVSK0oyc05iVGt6aU1EY0E4MWdKeDAzUHlWYlVKVWUzQVJ1Ujg0SG1nVFJQNzVkQVlwRSsyVGlLcXUvWDlGV1dxcjlRaEhSdFd4UUVmYWF3RWhRcDg3NDdjSU15YUt6U2ZRNEJRUnFmSTRvRFVJSFpMc3U1eFNZR0puYXFxeFBHd2J6V2ZjTkRLRVRtSHFsYUNqdUdQckt3Mk1EcEhEcGJQaFpkdXRjNnQxcXdndnh3RnRXV2lPR05VOVlkdU9naUpIazJ4R2QrY3ZvZjJ6WkFySGNnOUcxYWJ1aTM2bWEwOG4xWmlYWmxkOGdMMW5wRk9rbDVYdVFVRmdCOGlkNDNUK0liRjU5Rkl2RDdudEl4MHR6WkhjSTZKQSs1RFZTeUFvZ2JDSFNXWS9UTUxhNkVFYk9TM1FiR0pFb2wzTUZwYlE5akltZEJhZ2MvZlVSUTlPL2pqcGY5dlVxSDFSSDJ2ZFF5UWE0MEVDblBPa3k4SEFSandQbWRvWFhiTTJqY3RpRytsa1VnSTQzL2ZKMFIweXV0c3pBUTJJWGZ3d2JkRGFWRW5BRmdFVDNCc3Z0a1B0NFY1Wm1RdWhUV0ZCakdMVzJCc0p1YnFlZGpTSXZWUTRLaVBDVHpqbzBFNVZIcDBlTkIzSnc1c2EzNVQyeDVEdXFVY01aZ1liNmhNTE9tK2dBZHFjSTF6SWZrWTVINkFURFpyV0hHc2JCTVA1c25SS1FSNWxmcnBFakZnV3podG9CSVVVVXdBVlVFczZaKzRSWVM4NlFkbWExa25nWVEyOUd6L2RrWXVLVG5lU045UDVBNTJDMXlJY0dkSk9SMzN0T25QSnBWSmdMbG43UElKT2Fvb094U1RnbUtoUE1VZDBMcU1sT2laWUs1S3FqSWozbEJUelBFbUVrR2NGSUNuQWtqWHVlRTQxc1kwd0FqbUdGMHN6aW13S2h2SllENUpwSU0vTEZBK1JGbU1FeVRIVGZjb3hjNHpoRUtsR1hBWTc1akNVUWVTaEhnVmFpQXlRZ3hLaWYrQTArNTUyb0IraDJzSFBhRm1ocEFpV3NHa0NoZzBMbWZVTDE3RU5rU1NNU2JJNnZRckJrYy9SUEcwdThTb0ZzKzZZUHVkWm1ZeUlwV0JNb1dKOEUvK2wvWUx1cUZSRjg3VTFzMUNnbUllaEZCdzBQVTBDTmdYWmtBWEc5QlFqSmNCK1JDcHFwdnZCUFhyYlFRanlOVHQyTU5vaURFZTFaUmlJUHQ3T3dXWC9vRk9pTFNGMEJ0b3lUMkYyMjF3b3VrdFFjYVRESTJLc0YyTjM0eUNnVTJKRUxFclE0cEJkekxWaXJ6QmdVTmsrRE9nWXVBQWhsTkR1bmlhanAzZ2gxSEJDQndFZHZITWNvSjJiN3liRERocWhVYmJkczFvczV6cnZYa0UxMVV5UFZ6TkhMZWUrSlc2eTgrQjhSNy9PeDFLZFM0TWF6YXYzcjh0ekNMS3dXNThZdlZybjBxSExzUThNT2srVHVKdXRoVkh3a01seE5EcUVBaklTTUhjU3RPV0VxRjc5U3dvSHQzUndaOU16djh3NzhvSG9OY25UbWRKaHRLYUlpY0Y2MXBFMmlJNEpqTEpnSFBVUEpKQ04wRmRTcVd4anIwSm9OR1IramdTYWpoSitaYlFPN1JiNlNUeGtpRWNCbll4d0QzQlY2SWhPZ3IzR0tGTFZjVURuUWRnNlV6T2tJYjFqR0RvUnB5T0JUaEgxMWhSOFVXYjBNZ3ZvYUJXUEJ6cXJOYkhjb2MxaDYyUGwxOUZBSnplSmNUbm82TVA3M1FKS2gvbUFvTnZHWkRFYkViSlU5WStGVmVpRERybklrQW1vWlVPamNDYjNKOUcwVkt6TUR3bGEwVll2aW5xV0hKck9OTWlHUmRYUVFWZEdRbEsvcFBXeW96VHN0OTBtNEdKV1BTem9hSFMzaXgxaFc0RFltNTVuTHJKVUNSelkwbmtYWUtzL2gzZjByV3BCRUZ3U0FSeDJveWdrN1Z1R2lpSkFFY1BvU0Rsb3lIUjAwTUVDYXlQdkVLSkpERFhWSVZmdHBGcEhCQjNKWVFOUFJtZitiMFRuT2haK1pvTDhnUmZPZ3VLYjh3K0xiSWl2NFhGdE41WFNHWURPQ3hndXZTT0J6S3l2TU1qMkVhRm45VU9IdGpTQ1VKZ21Fb1VJUTBJOEN3N3NIQk9OT2E1N0hXaDQwa2VFb2w2RGozU1NsTmhtR0pVOE9aTkFERjNPbUtwRFM5S25mWUFXNkZFd0lJWS9sR0ZHZG1sdE12ZW5oQmdOTWJoK1R2WTRaQm16cGZoYTJTWkhEOXNhZDkwS2JyM0xkWk1kc3hnQ1dYbDlaRFNuYWQ3YzBQU3NGTWhxekp3d0x6OTF6NVlnTytVc1krbzI3bnJqa2RIVGFVZXpKYk5KZUxoU1RNaVJCV0lUanVpdkRjVitWdXVmTWtmR0RFMWNxTUU1NlhkaUZyTnhCM2FscFVrTU5LV0s5YUplZGFHSUJSNDk3RkgwQU11YVNVcDVXTFFwaTY1MUQ2Qy9MY1pta1hMNE1Ib01ZdDR3V2RwV3hvaE0zTndPcjlXYTB2MXZxTnp5cTk5dHNKOTl3MjJYZFZ3RTJVemEweDVCYzFEVXg5YkxZSEdXMGZWclE1Q2NoV3lUQUtodEhmeGEvWFJmVDJ3d3o5OEh5Y3c5WGl0MnVCWlFlakUrelFxamJROW1aVWFFMkpJcERPbkU0TXlJc1EycWpoYVF0ODRFWXVmWklzdWlxTk1tRnlpcnFtekNBalhvTGZJNm1udnNuS1hOODNJNE5CNnlBUzFaNWwvcDA4Z0VmK3l5a01MdzBPUUZ1WTdZaWxTaERmNFd5VWhzOXRRV3dGaS9NcUlzRVlpUjRkQmZMWUE5VGlqSW1qRzNUZ2hnam0xNUc5Zk56bURhTzJoWmlEWWpnR01rMUFtaFNtK0xMK2J4US9PeFljcWRuME5lNTRhWHh2UFZHMFcyRmNvUlRDd1RDODA5S1NGcFlNSmNORVJqSTIzSjVCSVhxKzlYTHpMa09vY0lnY2FvR1NIVTV6bWlhUjJuaXJ6VkRCZ01QUTFnckJBQ0YwRlhWVlZWTTAyZHBOaXlsekV5WWJqbFlCdEh3Tmc3WWtxQUdPb3lMOE92MDF1ZkZBRlhkVlZWVlYxSzQ2QUlvZEQ1SWZpVzNsOGpkaTgwNmRGdE1UcXhYTzJ0YStKT3BwRHJxbnROQ3FiczBnWE5kOUJFWVA4WUZndGp0azNBZWh1WFFGZlQxN2lGemsrMVJJa3JpdnQrYUJNNUpiWnk2TURPRXRXVHpaQkhxSnZxdlJUQnFheWJHclNDMUQ3WExxYWdxOHRiVVFmcnpYTFdZWWovK2wxVmtCc0hCRDEwNWpKcTJLVTl3aGhvajI2QUNXSGdRWVN6SjF1Y1k0ZzZ5bWRNeTBxUWd5NnJtUVBvSU1zakxlaXBuZXNwYW9zZXJ6TVJ6Q0xYZ1NjRTMwSWVRclIrc3QzT1ZWVlhYVnJBY01abUFhRjlHZWIwTEduVVFVVHNaZEQxK0t0ZXR1aWZ0U3lwWk55eDVDRkxaT3gzWTJzQ2VvdWhHOVNoTUdLUDVyY2hrZkp3SVRGdW5nRG93NEdlQnp2MDZ1Q0xFQnJYM0I3Wm1EU3Z1Um84MUFyWFNURjd6MFVRcWIzN0pkL2lrdVU3d3k0UWxFRWZiQm1xYk9ueFh6VmVIWnBLUmRFc1JXTm5qRXJVWEwxNVgxZUpsVUdYVDEzQjFJRTB5OGxGeUJUSHE3T3hBek96U0w1djBQVTRsVXhCUjBlWEx4TVRzN1o4WEMySHlKODgyQkxKeE5MVlhBV1ZlVnhueVQ2eTZsalQ5TWlJMFlkYmZEbnBZYXUzZ282dGhhWk9Ma3hUNDBZeHkvVFAwbEZBVCt2bi9oczNwNVR1ak5aWnNRcGVJbk9VRStIVjM2YXpCbDFYVlhVcHBmU2Jxd1k0cDB2S0RSL2xuL3pxbittSW9OT3NwYStrbFA1OHJ6MnI3NEVRTjE3ZGRjL2YvNVRPRG5UcVI4SmJudjdJMis4cmhJdTJscEprUVhmLy9OOC8vdGFESG4zNWxvMTF3Y0pYWGVJRlRqS3dlZ3ZvcXJwY1BmdmEyLzh3czF2UnJzclpWMy83M3g4OC9oSFZMVE00THkrRk9tdklEdlNvQmkzR2ordXYrOUg5MEpUeVJ2UzBobWxmdmU5ZjMzdjQ0OTQ1QjZSbzVNdWJIOElXME5WbTBNKzY0MzVwUEpFSzVqOHZoOTM5aTMvYysrMEhYL3VPYXZkWFBRRmVCbDFQVW5pQnVxbXE2NTl4eDkrR001ZFF0TVpWY3JidXV1ZVAvLzcrOVE5OXk5dExKcXNuWDlURE4rcnAwNmozWU9ucmZuUy8ya1l3cncwNkp0eUNmT2Z2L25QbmR4N3ltSGR1ZDloTGx6WWZ5dUVKMkRGNmhCRnVmdFFQL3hJSjJuRnRZdHl3bVRsYjZ0ZS8vTzR6SC9hbXQyMlBGdTkvMFF0dm5mOVFQZGVocmc1NThSWitEek1YMFhEUWtYRVZJZWxmM3JjOXdsWlZYVmZWaTc5Yyt1YnRUNnczT25RRHV0NmNYT3IycmI5ZVJiNWloRjB4blc5K1hGUTd4M2Q2N0RjYkFxQ2UvT0MzYm8wZHkydVBDSVkvVlN5OGRsRVoyVU1XNXJJTStxdHBycmg4OVpYdEVXOWFtbTd5am1RRFdWNFpkd2RIV2IyOENJMXZkYzNYWnVyMTlLVW5qMlBLSXRBYlMxT2JVTDVnbFJhWFRtUEhvTDh4L2ZhWFVrb3BmZVNsQzVQTEN0RE10d2dRNHRMNVdjazllcUNiaVAzZUcxTks2Ymx2TEtUTEJhQ3IyV01ZUzBseCsvV09iVWw4djJ2Q3A5dnNYZGRWOWFGWHBKUysrTVFyaFNDNHFCdWZiUkViUmZQdVJXVjJqOEpCZk9XSFUwcGZlRXExMkQzU09MNlhXWVdRWVc0WVVEb3pETHVBdnVGakthWFB2R0JSYlRwTGk5VWxCaEtoTzlnMHNOdjhKT1pEM2tzK25sTDYzUE9LSUphQUx0VTZiYXZ0MmZGOEhnQnBGMHZYMWFVM3A1USsvNlJTdmJvYjFkditPODJOWERKbkJtNDVveG4wMTZjLzg0T3ZTU2w5NVFsWGx2djByS2xIejJlaVNSbEFEcW5sUmk0c3U4Y1VkQjF4K3Ztdlh3TTZiV2pjdW40bUxoWXJnVzdvNkMwN2lQWGx1WU1ZUCtPelQxdlFiUlZuTHBkbi8xa3U5cWRITU5TdTNqcUFtem1JWGZmeDFDdVRSNzU1SkxkMVRwVEtWelRMVUROM1dRVDZtdHVtQnpGLzROM2JtNjJaNFdjOTErdm1mWVBScE5acTdqVFlxdlBLbHI2dFdFTVdUUGV1VjkyMGJjeGNQSWtqaEJoTk16UGF1RzVoYS9VMEYvTG1DcDQzZkdLWDJmZzRGSE9rakdwdXZZaU9jWmMwZnVXbUc0WS81YTBmZVBuTGJxM3E5N3oyaHZkVmkxUUlhWE11Q2pVUUJ2d2Q0bUlqYXNrOVZ4bDAvNHZYZlhyeXFlZDg2c2FxZXZOSFA3bE1oVEEwZHlGUkIvUFZuN3psKzl3b0h1OGlwdFdYc2ZhdnNVaktkNGlRWUVybkZiU0hDNGFNdXM0Njd1VmlxeThZN2t1U1loZmhJSktPZllKRy95cmsrRjA0dHBuT00yaENSSHRSZlo0VjRzZ1h6NjIzZEx0ajVlYUMwK01iZXYxRjhGRlBPMFJ1b1dGTDV4eDBaSkdRWDhVdnplSHhNYS9XbWtKZzNMRVFpbTg2blgvUUlRRE1GQk9sczhDOFZsNHZoM1FpLzNxY1ExK3J1YmVNaUh5RHNFNTFHZGN4M1lPUTNkd09kVmFZMThmcElCN2xzNE84eS9aRjNJdVh6dksxK3BjYmJHQnJ6aW5vYy9KNlFJTCtIMTl0aGRPd09nNkNBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiXSwiYWFndWlkIjoiMzFjM2Y3ZmZiZjE1NDMyNzgzZWM5MzM2YWJjYmNkMzQiLCJvcHRpb25zIjp7InBsYXQiOnRydWUsInJrIjp0cnVlLCJ1cCI6dHJ1ZSwidXYiOnRydWV9LCJ0cmFuc3BvcnRzIjpbImludGVybmFsIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN30seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTI1N30seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTY1NTM1fV19fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiTk9UX0ZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMDEtMjYifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI0LTAxLTI2In0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiZTA3NzkyNjUwNGNkNzVlYjQwNWE0NWJlMTYwZjc4MzA0NGUzZjVhMiJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyJlMDc3OTI2NTA0Y2Q3NWViNDA1YTQ1YmUxNjBmNzgzMDQ0ZTNmNWEyIl0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJBVEtleS5IZWxsbyBUeXBlQyJ9LCJkZXNjcmlwdGlvbiI6IkFUS2V5LkhlbGxvIFR5cGVDIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwiLCJiYURlc2MiOnsic2VsZkF0dGVzdGVkRlJSIjowLjAsInNlbGZBdHRlc3RlZEZBUiI6MC4wLCJpQVBBUlRocmVzaG9sZCI6MC4wLCJtYXhUZW1wbGF0ZXMiOjAsIm1heFJldHJpZXMiOjAsImJsb2NrU2xvd2Rvd24iOjB9fV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVsZXNzIiwiYmx1ZXRvb3RoIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlCU1RDQjc2QURBZ0VDQWhEeUZNWHFPZi9uRVllRGdHNXZibWxqTUFvR0NDcUdTTTQ5QkFNQ01DZ3hKakFrQmdOVkJBTVRIVVZuYVhOVVpXTWdSbWx1WjJWeWNISnBiblFnVlRKR0lGWkVJRU5CTUI0WERURTRNREV5TXpBd01EQXdNRm9YRFRJek1ERXlNekExTlRrMU9Wb3dKVEVqTUNFR0ExVUVBeE1hUldkcGMxUmxZeUJHYVc1blpYSndjbWx1ZENCVk1rWWdWa1F3V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVNqNi9FOUM0Y1RGc0VIdk9KR0VWdmtEZ0hSd0pXUXI0dUN0VmNiS3NGVUttOWx1TDZhUlI1MkZSR1RJZHpialVNazFpZUR5Ukh1N0tLV1JORjE0TStOTUFvR0NDcUdTTTQ5QkFNQ0Ewa0FNRVlDSVFDUWhqb2xxWnZlQURiMHc3dmRzOCsxcEZ5M1dCVWlKc0RMdmtXRDZ1UC9xUUloQUtLSHU0TGFpWkRxdFJUcTkvYUZLNEw0b1NwYVFWRzdoenZaY1ZQMllXeUoiXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBTWdBQUFCcUNBWUFBQUQ1akI1N0FBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFEc0lBQUE3Q0FSVW9Tb0FBQUJ6WlNVUkJWSGhlN1owSFlGUkZHc2YvNmIwSFFraWpTSkVpZ2hwQWxONmJJQkE2eWlrSW5BVVZEanp1UEUrOXBsaG9LaXJxSVVWQUZGQzZpQ2pGQStsSWs2YVVRSUJBRXRLem0vdStlZTlsYTVMZHpTYlpsZm5wc0p2WnQ3UHo1czEvdnZubXpjenpLQ1lna1VpczRxbStTaVFTSzBpQlNDUmxJQVVpa1pTQkZJaEVVZ1pTSU5XSUhCMXhmVW9keGNvNWZ4NnBxOVpDbjU4UER3OFBOVmJpRExqSVBieThrUGpJS1BoR2hxdXhFbGVrVklGYysyRW45ajgyQVlVWm1lSmlTcHhIc1U0UEx6OC9QTEIxTFlMcTExZGpKYTVJNlYwc05ocHNPV1J3ZnZCVVh5VXVUeGsraUhJUlBUdzg0ZUVwZzFPRHNWZ2tMbzNkVGpyM3lHU3dQMGpjazlKOWtPMjdzUC94aVNqS3lJS0h0K0tEaUVQNWdoY1ZvVml2RjNHU2NpQXI0ZW5ycTc1VkxFYXhUa2R4NUlOOCt6V0M2dFVUY1JMWHhENkJrQ2k4QWdNUjJxUXhmTUxEcFVoc2dVcjMycmJ2UmVNaUJlSisyQ1VRZldFaEF1c2tvY1dzbVFpN3R5V0s4d3RFdk1RS0plNkZCelkxdkFzZ1VXaWpnVklnN29QOUFxbFhGeTNuejBaWTgyWWlUbEkrRzVJYW9iaXdTQXJFRGJIL1RqckxTWGF0YklLTFNyUS9WcHNnaVRzZ3A1cElKR1VnQlNLUmxJSDlQa2hkOGtIZWV4dGhMY2p4TktJb054ZFpQeCtEdnFDQTNOTGI2d1pZTWYzbjRlMk5pUHZ1S1JtcFlrVEJVdkZ1VEdvc2hzYWxEK0orT0UwZzJXZk9ZdStqNDVGM0pRMmVubVNZYmhlTlVPbnB5U2Z6all4RXgxMWIxVWdGS1JEM3gya0N1WFhxRFA0M2FBVHlVbE52djhtTlZPRjlvNlBSNWVoZWszWkJDc1Q5Y1o0UFFqWER3OHVUZ2pjOHFTSjRVcGZqZGdoYzZibDdKVjdWb3BEOGZwQk91a1JTQmxJZ0Vra1p1TFZBMkgwcUswZ2tGY1Z0QlNJRW9OZERuNWRQSVE4Nk5mQjdQYzhSbzgra1NDUVZ4VDBGd2haQ3A0TlBSRGdhL25rcUdyNHdGWTJtVDBHakY2YUk5M2RNL2lOOG9pTEZNWHlzUk9Jb2Jpa1Fydkw2b2lMRXB3eEJnK2VlUW9Qbm4wYURLYy9RSzRlbjBXakduMUQ3NFlmRTZqMXBSU1FWd2YwRVFoV2U3OGNFSlNVaWFkd2phcVFsaVdOR3dDYzhWTFVpYXFSRVlpZHVKeEMyQ0o3ZVhvZ2JPaGdCdFdQVldFdUM2OWREVEk5dVFpRFVJVk5qSlJMN2NDK0JzTzlCWGF1QXVEalVmcWl2R2xrNmRTYzhydmdpOUIySnhCSGNSeUFzRG43UkY2TkdsNDRJYm5pSEVsOEdRUTBiSU83aEFlQjE0WEo1c01RUjNNcUNjSGZKbHl4Qy9JaWhhb3daWmowcG52b1JOMlFnL0dwRUs3NklSR0luYmlNUVVmZkpDc1NuUEl5dzVrMUZuREZwbTdjZ2RkMTY5UzhENFMxYklPcitOc0tDeUJFdGliMjRqMERJaitEN0h2SERocWd4Qm5UNStUZzk2eDJjWDdpRUxJVmxWeXArUkFxOC9QeVZicFlVaWNRTzNFSWczUExyQzRzUTI3OHZRcG8wVm1NTlhQMW1LNjV2MzRYMC8vMkVHM3QrVW1NTlJMVzdIN1VIOWhNaWsvS1EySVByQzRTZGMvSWYvR3BHaTBwdUR0OFRPYjlrR1R4OGZhREx5Y0c1ano2bDc1aGFFWjZHejhQQ1BzRkIwaGVSMklYTEM0UmJmTzRheFhUcmpQQldMWlZJSTY1OTl6M1NkL3hZc2o0amRkVnFYTisxVy8zVVFHVGJaTlRvMmhuNmdrTHBpMGhzeHJVRndoVlpYMHorZ3k5aUJ6NEVUM28xaGljbVhsanhKWFM1dVhRbWRDcnF4dEFYbHF4UWp6REEwMDVpQi9TRFQxaUljUGFsTHlLeEJaY1dDRmRoWFg0ZVlucDJSNDFPN1pWSUl6S1BIa2ZhdW8xaVJWOEpYdDVJMi9RTjBuZGIraUxSSGRvaHVtTjc2bVpKWDBSaUc2NHJFUFk5cUtYM0RncEMwdVBXNTF5ZGZlOUQ2UEx5eFkxQXRoeDgzNE10QlQvMEozWGxhZ3Qvd3pzb0dMVjY5NlN6SmtHeEZaRkl5c0ZsQlNKYWVLcmd0ZnIwUkdpekppTE9tS3ZmL1lDMHpkL0NrNXp6RXJRdGQ4Z3B2N0Q4YytTY09hZjhiVVRjNEFHSWF0dGFPUGZTRjVHVWgyc0toQ3N1Qlg1c1FLMytmZUFkR0tSK29NQ1c0ZkxxcjZETFVYd1A0NzJvaENXaHVLTE1MUHo2MzBWcXJDbHNrY1FPSStydlNDU2w0WklDNFNyTElvaG9rNHlZN2wyVlNDTnU3RCtJeStzMkNVdFJHcDUrZnVUQWY0R2JCdzZxTVFhaTJyVkZ6YTZkeEwwVktROUpXYmlzQmVHNzQ0bVBqaEwzTU15NXZHWXQ4dFBTaEtWZ3VLdGtIQVRzaTl6TXdLVlZYMWxZQ1ord1VNVDA2azdmSjh0ajlwbEVZb3pMQ1VSVWNtcloyWExVNk54QmpUV1F2bnNQTGk1ZExycEk0czU0R1lFZDhVdkx2MFRXMFJQcXR3M0VEdXlQME9aTnlWTEpPVnFTMG5FOUM2SW5nZEIvQ2FPR3dqc2dRSTAwa1B2cmVZUzBhSTZhTEtBdUhjc01OYnQxUVhEakJzaTllRkg5dGdIdndFRDZqZUhRNTVFZkl3VWlLUVhuYlQxNitneDJEeG1Gdk5RcjhPUnVrWkhqYkN2Q2V1aUtFSm1jalB1V0x4VFBFamVGcytwWXV1SmJabmtxdUhFVGU0YU5Kai9sTUR4OWZFeWNmVnNSeFVlV3lqY3FDbDBPbTk3QkZ3VkxuOHV0UjkwWDE3SWdYTm1LUFZDcmYyOHI0bURzcjhDTXFQaFdLcjh2enc0ZVBsU0lVdnkyUkdLR3l3aEVXQTlxaVVPYk5rYjhrSUZxYk9YRHU1K0VObTlHdjAyL0wwVWlNY04xTEFoVlR1cnZJVDVsRUx4RFE5WEl5c2NuTkFTeGZYb3BkOWFsUUNSbXVJUkFOT3NSM0tnaDZqenhtQnBiZFNTT0hZbWcrblVwSDNKRVMyS0tTempwSWd2a3VFWjFiSStFa1VQRisvSmFjKzRTZVFiNm8wYjdCOFN6MjQzaENZN1h0KzFBMGExYkpmZEtTb1h5eWI5MC91TkZ1TDU3anpqZUhtZGQ1RjA2NmI5YlhFY2dGUGp4YmJ6b1NhbFpLaUlaeTdRNEwwRjFFdEYyMHhvRTE2bWp4aXJrcFY3R2pwNFBJZXZvY1RGZHhSTCtQZlV0UTNsbGtZbDVYZlJlQ2tTaVVlMWRMS1dDVVJlTG55Tk9yVGZQdVBVT3BoQkNJU3dFdmhFUllpMjZiMlNFUmZBT0N4VVA2ekhIdzlPTC9CajZycFh2Y0ZvKzlNcHBpOS9nM3dvS29wSWdTOEtXaXlwN0tXMkc1RGFrV2dXaXRiN2U0YUZvOXRhL2NkZXMxOUY4MW1zaTNEVjdwdGlJMmlzd1FBaklhZER2K1ZGcjMzRDZGUHFOTjBwK3I4V3NtYmp6bFJmaEYxdUxoQ0pGSWxHb2RndkNjNjU0NUNweDVEQ3hZMG5DOEJRUjRvY09SbUJjYlJUZXlyYld3Nm9RdkFJeE1DR09mbU9RNGZlR0RVYmRjV01SMDYwTEhVSGlrQUtSRU5VbUVHNmh1Vi9PSTFmMW5weWd4aHJnWjMyY2Vuc2V2ZEVMdjhCcFVEZU83NkNmKytBVEZHV1QrTXlvTzNFOGZLanJ4WU1BVWlTUzZyTWdhdVdMNmQ0WmZ0RlI0cjB4RjVhdFJQYXY1OFVBZ1RNTkNEdmd2TGxEeHNFanVMN3pSelhXUUdCU1BLSTdkU1NmcU5ERWo1ZmNubFRQS0JiOXBMNUlCLy9ZR0NTdldJVGdPK3FySHlnVVptVmhWODhCSWszeEJGa3JhWEZlQXFpYjFQcUxwZFJkU2xCakZmS3ZYTVdQZzRjaisrUXBxNk5ZZk1vOFloYVJmQS9hcmxtcFRIczNJdnZNT2V3YWtJS0N0R3VLUU1zNEYxRjhsVFNLZFpNczNZOTdkaU1yTTRzTW45S1c4VFBaUTBOQzBhSERnL0QzOXhkeHRsQkE1N3ZsMisrUWsyTnFOVG43UmJvaTNOV3NHWm8wdVZPTkJVNmMvQVdYVXkvQnkwdFo3MC8yWGxqVnBrMmFJTXFvUWN2SXpNVDJIN1lqaHl5K1p3VXN2WTU2Q3Z6N3pab2FWbzhlUFhvTVI0NGVoWmZaVUwxT3I4Tjk5OXlMdW5WTlJ5L3RKVGMzajhya1crUlIzclZyek5kTVI5ZW5iZXRrSkNZbVZvOUFSQVZsMzRQNi9TM212S25HR2toZHV4RUhKendsS3BKV3FjeXBpRUM0VnZDTlNVLy9BSExPWDBPdGZyM1ZEMVRvczhOVFhzQ0ZKY3NBNzdJbk1WYW1RSTRlTzRieEV5Ymk3TmxmNFUzNVlBb0xDOUN3WVVNc1c3b0lNVFZyaWpoYldQTFpNa3liL21kVmFOcjVGQ09mcmtPVE81dGczcHhadVBQT1JtbzhNT092TCtLelpTc1F5SU1rQko4bWkreTllWFBRdVhNbkVjZWNKQ0VOR3prYWFXbHBKV0t5SHlVZms1OTVHdFAvTkVXTkF6WnMzSXduSms0U1pheGNBdzdGVkFhRkdEUndJT2JNNXJwVCtyVXBqMisyZkl2SHgwOFFqWTZIaHlKQ0hWMm5nS0JBYk5tNFRnakVWSnBWQVZkT3FpRDhiSSs2azhhcmtRYUtzbk53N3YwRjBOSEZZSCtoVXVEQ3ByUjExSnFlbmI5QVdCTVQ2TE9FVWNQZ0U4bVBUcWpPamVhSzRlWHRTOEdiQk9LbEJub3ZoR1o3eFZpNGVERmVmdVVmUWh6aSsycGFuQWEzd3ZQZm5Xc2lEaVl2cndDM2J0MUNObDBQSldUVDM5a29vQXBrRE5jcmJ4S0dhUjd0RGNyM3pTMUZ6eDdkMExMVjNmVE9ReHlqSGV0TGpkNk9uVHV4ZDk4QjVVQUh5TW5KeGNKRmk0VzE4UEh4RVdsN2NmbyszdWpmcDQ4UUIxUGxBdUZXbFIrZnh1czFRdSswM0VZMGZkZVB5TmgvVU56ZmNMeHRLQjl1a2JqVnlEenlNMjVZMlNLSU42a0xiZEZjaUxrVUkxc0ZLRGN0dWV2Q2xadURrbS9iYjJZZVBIZ0lNMmUrSlZwb3JnaGFHdHhxK3ZuN1llcVU1OUNnZ2VXakpEeXAyK2xGMThBMFdKdGxZSmxIZTRQMmZXdm5OSGJNR0JRVkZZcjM0amc2bnZOeTQrWk5iUDVtaTRoM0JMYk9lL2Z1RTRMVDhzQzlpdkR3Y0hUdnppT1pDbFV2RUJLSFAzVU42b3ovZ3hwalFFLzkwRk52ekJGRHY1UnJMaEgxazBxQ0xyZ3VPeGZuRml3a0lWZytaS2YrVXhQRjhseXhJWGExaWNSeHVBOC83Yzh6a0o2ZUxpcVZxQVIwSGl3T1Bwc1haN3lBaHdjTVVBNnVFTlFyNEo2QmcwRkpRZnZIbFBZUFBvaTJiZHFRU0F6WFJ4UFNpaFdmaTY2ZEk3dys4MDFra2EvTDVhTEJYYmUyclZ1alMrZk9ha3dWQzBRVUJsVzJHcDNiSTZTeHFVbG4wbmZ1d3MxOSs4VW9VeVZMb3dRUE1xblhkK3pFalo4c3pYVmttMlJoNlZqVVZxNmRTMU5ZVUlpWFhuNFZKMDc4QWo4L1AxTngwT3VvRWNNeGF1UUk5V2pINGZUWU9yR2o2MmpJNVZkeW1BdFZTMkZNZUhnWWVuVHZWcEp2RG53dVhMRXZYa3JGMXEzYjFDTnQ1L1NwMHpodzRJRG8xbW5sd3FHSWVndERVd1lMcTZKUmRRTGhURkFHL0dKcUluNTRpaHBwZ085N25KbnpyaUlNYmlIVVZxSXlFUzBSV2FxQ0d4azQvZlljTmRZQVQzMUplblEwdkVQY2E5TnJyblRQUGo4VjI3ZnZvTk5UdWlWYUplQStkOS9ldlRGaitqVDE2SW9SR2hxQzNyMTdZZENnaC9Id3dBRU9oVUVVQmc5K0dFMnQ3SC9HMTZoZnZ6Nm9YYnUyeUw4eGZuNitXUER4SjhqTXpGSmp5b2ZUK0hUSlV1U1JxSTE5SHJaUWQ5OTFGenAyTk4wSG9jb0V3cWZHbFN3aXVaWEZDQmlUdm1zM2J1NC9SQjZmb3lNaGpzRXk5Q0lyY25YYmRtVCtmRXlKTkNJeStWNUV0VzBqbkhYekMrU3F2UHZlKzlpeTlUdjRCL2lYdEpCTUVYVWgyTitZTVdNNkF0VFJxWW9TV3lzV3I3N3lkOHlaOVJiZWZ1c05od09Qb3ZVajU5Z2FzYlZxb1hPbkRrTGN4bkJMZi9iY09YeXo1UnMxcG54NFJIRGJ0dTlGbzZIQjVjT08vK2pSSTlVWUExVm5RY2hFOG16WnVwT2VnSGVRNmZSMEZzNzV4WitoS0NORFdBN1JzbGNWcWhXaEpnUm41czYzdEJUa3A0Z05KS2lsNUhPZzBsUS9jRTFXclY2RDJYUG5JVGMzUjFRQ3JTeTVoYXhYdno3bXpuNGJ0V0ppUkp5ekVBNTZCUU8zNW1WZDl4SERoeUVvTUxDa3E4WEhjbUMvWWNuUzVhS2Jad3RyMTY4VG9pcHh6Q2t0SHI1dTJmSnVkT3hndVl0T2xRaUVNNkhMTHlEZm94TWk3bTJseGhySVBuTVdWelpzSm4vQWFCdlJxb1phbzJ2ZmIwZkdvY05xaElHSTF2Y2h2RVZ6TWZybXl2TDRZY2QyL1BOZi94SHZ1WFhWS2dEZmhBc0pEcVp1MVovUXVKR2w3K2NPTkdyWVVIUi9qSjExaG4yUkkwZU80TkRoSTJwTTJTeGU4cGtRcEZZMkRLZlpsUnp6T0N1UEZhOThnWEFtU1BVOHY2bU9sVTJvZVJYZmlYLzhSenpLZ0hJdE1sN1Y4Ryt5djFGdzlhclZSeWY0UmtaUzNoOVZMSTFhcUs3R2I3LzlobW5UWnVEeWxTc1dJMVk4dlB2czVNbm8ydFV3Zk9sdWNCZG83S05qeEgwS1BpOE80cnBSdUVFOWo5VmtPYmtoS0l0RjVIdWN2M0JCWEd1dG5uSDUxS2haQXdNSDloZC9tMVBwQXVIcUpPNTdVQitTTjJvejU4YWVmVWpmOFQreFZXaDF3OU5hTHE1Y2hYd1Npamt4dlhzSWYwUlBsbEJyZVZ3Rm5wTHkxNy85SFJjdVhoSVZTWU12UHZmYng0OTdESStNR2FYR3VpK3RXcllVVTJLTWZSR3U2QUgrL3NLdk9ISFNjb05BamN5c1cxaXo1aXY0cUpaVm82Q2dFUDM3OVVXTjZCcHFqQ21WS3hDdVNCUzh5UGVJSHpsVUxINHlodTg5WEZ6MnVaaDdSYmsyeVhoVkkzNmJXaGIyZzA2KzlwWWFhMHFkY1dPVmgvaW81K1VhRkdQNmpMOElwOXhYM2VtZXowVVRSOTgrdlRIbHVjbGtWYXFrTjEycHNHVWNscElpS3JuZXFQeUZzMDRXOUt1dnZsWmpMTm0yYlJzT0hqb2swdERncmhWM3EwYVNmMU1hbFZwcWZBcnM5SWFTNnEwOUFDZnJ4Q2xjL21xOTBuVnhKaFhRbVFkWnNyVDFtNUI1eEhKRUsrS2VsbUpEYlY3OVdOM3k0SDQwODk3N0M3QjIzWHI0cVphRHhjRVdMcDhzWGRzMnJURnR5dk1pL3ZkQ3A4NGRrSlNVQkQzVksyTkw3a3ZkeU9VclZ1THExV3RxakNrcnYvaFNXQXN1SDYyTWVEaThlNCt1cUYvUGRMS3NNWlZ2UVlqNlQwKzBPdW53L0tLbHlGTTNvUll0dU4ydzcyQ1pMbTk0N1VoNld1RVZYRXNYenpvMHg1OWFtMFRlVkVKcmpZMHVVTlhpQVIreUZqeGlOV3YySE9GamFIbm5DeTlHck9yVndac3pYMGRpa2pLbnFMTEl6YzBWTGZPZW4zNFNVemNjQ1QvdDNTdStmOEhLRnJIbXhOU01RYytlUGVpZHdjbG1lRlRxOHBYTCtIcmRXalhHQU05TTN2THRWbkVNbzMyUHU2TkRCZzB1c2J6V3FEeUJVQ1o0Ymt0STB6dmhIUmxPMXVJWGNaK0JBNzlQMjd3VmFSczJ3NHY2ajQ1VVp2b1MrUEVGV2NkUFVEaUp6S09VTm9Xc1l5ZkVvOW1LOHd2Rk1YYkRsWXkrZG1uMTE3aTJiVHZsbGRJMnlyZC9YQng4b3lMcHdPb1JCNWVWbDdjbmpsQitYbjcxVlhFWDJuZzRsN3RXMFZIUmVPbkZ2NksybFZFWlozUHgwaVU4TS9sNVBETDJjWXg5Zkp4ajRiSHhHRFZtTEZaOC9vV2FhdG1NSGpVQ1FVRUI0bHk1c212bjdrbU41YWJOVzVCMjFYVDZ5ZUxGUzhXeGZKeDJMSGMvNzcrL0xab2FUZkczUnVVSmhETkRGNDQzbXo0dzdrbnNIalFDdTRlT1ZzTGdFVGo0NUROa1BhNEt4OWdSMkNJVnBxZmowTlBQaS9SMnAxQzZISWFNeElFSlR5TW5OZFdodEVVaFV0cDVGeTlqLzRTbktOOGpEZmtlTkJ6N3gwMUNFVGw4ZEtUeWhTcUcrOUJYcWR5bVQ1K09HemN5eE14ZTdhSnI1QmZraTNsdFZRRlhQR1dtN3kweDI5ZXhjRXZNaXlvMG4xVmRDanpOdjIrZlBtUXBUWjExdHFTSERoMFdNd2cwamh6NUdXdStXcU1PWGloV2h3UFAzaDJhTXNURUo3RkdwWGF4V0NDOC9qdi8yblhrWDcrT2d1dnBJdkRmUlZuS3doM3ppMnNyL0QyMlVJWHBHWlMya3E1SW0wSmgrazIrY2hWS216cjU1TEJubXVhYkEvVngyYThTS1R1WWZrWGd2TjNNeU1DbDFNdFdMeTViRTY1d2YzdjVaUkxRRFRXMjh1RDhjTXZOZWFsbzBMcEF0akNNS2pjdjNHSkxvSFdaK1B1Wm1abjRlaTM1dFNvclZxN0VqWnNaSW4zdGNuRVhsQmQrZFd4djZSZWJVNmtDWVZnazJqUE1qUU8zMG81V1lBMytQaS9tc2tpYjRweVNObDgwczdSRitweDJCZE4zRkpFdk5XaG9yU0lIanVjSys5dHY1L0h5Sy85RU5qK21ydEl4L0w0alFVbEIrOGMybWpadElsYjk2WTEydk9Gelp5dXk5YnR0T0hQbXJHZ2d2bDYzUVl4eUdjUE8rWmpSb3hFUkVhN0dsRTZsQzBUaWZNd0Z3aTBpZDNVWXJuRDhFVmVVRFpzMll0bXk1U0src3VEZjQ2NE81OEhSd05ORmVKNFlMNlcxRmU0eThmMkxnQUEvY2U2YTBOaUs2SFJGZUh2MkhLeGR2NTY2bzJrbFpjWEhzTVhoS1RlOWhLTmZQcFVnRUZYUm5PSGJJWWh6TGZtbnl1Q0x6UldENXlCMTc5WVZDUW54b3JJeGloWHhGTmJqblhmbjQreFp5NmY5T290QS93QzBhblUzMmxCcjNqcjVQb2RDR3dvOEpKMWd0blM2UEhnYWZFSjhRa25qd1BDNTgvTGs3N1o5ajduejNoTmRLeTFlRTlHd2xNRWtMTnZXOHp0M1RmcmdVY2k3ZkZsMFRXNHJxRlh5cGY1d2w4TjcxQWdGUlRjVlc1TSs2YW5KT0hmMnJMQUlHbnpKbE12bWdiNTllMkhtZi82TjlSczI0cm1wMDhUOUFSYUhWaUc0ZGU3VXNRUGVuUGthSWlONTlNMDJwazU3QVl1WExFVVE3enBKY0Zvc3hnOC9tSThlSkVnTnJwenNwUE9OTzYybGRnVGVFTUxmMzArc1hiR0hCUjk5akZmKzhXOFNnckk2a2RIS2g0TnhXYkQxNElia2cvbnZpcmxkdHVBMEM4S3I3bmdqQnA1VHhXczdicmNncHFDb1pWSFo4TVhtZm5Udm50M3hLam5qTEI3dWJuVHIwdG5FYWVXS3dSc3BjR3Y2enZ6M1JaeXo0UW9ZRWhLQ3NOQlFoTktyb3lFc0xOUnVjVEE4Ulo2bjhITkRZSHplSERSeGFMQ0Z2Yjl0RzV2RndUak5naFJjdjQ0TGk1ZWg0RmEyU2FadUM2Z0l2UUlDY01lelQ2b1JDcUpnNlRObldoQytYQnp1YWRVU0gzMzRBWUtERGMrUVAzZnVIQ1k5K1F4K1BucFVITS9YZ1k5bDBRU0hCT085dVhQUXJ0Mzk2dEZsWTZzRmNRWDRadWxicythVU9oS21WSEhLZjBFaHZ0KzZCWFhySkNrZjJJRFRCQ0t4cERJRXdpMWxmRndjRm42eUFQV3NmSmNuN1QzK3hDUnFMUXZWb1UxRFY2dDU4K2I0NUtNUEVCMWx1VkdmT2U0a2tMTlVQa09HamNLMWExZE51cUlhbkhkZTg5R0ZMT3pISDlwblNlVW9scHZCRnpzZ0lCQWhvV0ZxakNrZE9yUVhkNXE1SlRWdSszaW84L0NSSTJLZCt1K051dFJvUC9oQVcvS0hETVBHR3Z3MyswbmNqWHRzck9WeWkvS1FBbkZMTEN1Q01ZLzk0VkhjZlhjTHNocksxSHkySWh4NDFkNjZkZXZ4OWJwMTZwRy9IL3IwN29Yd2lEQWhCdk95NFdIb2xpMWJvbFVyeThWNjVlR2dRRzR6SDZNaVZJTS9GbGU3Tmw3OHl3dmtuNFNRLzJHWXI4UldoU3ZRNjYrL2lXUEhqNnRIL3o1NHNOMERhTk82ZGNsUXR3YWZPMDhyU1JreUNJRlducnRmSG5ZTGhLOTN0UzZOZFNOWUd0WFZsTFM0cXdYK09Ha0NYUy9EVmo4c0VyRjI0dGRmeGI1UXJrbnBsckVzZUJPODJyR3hKdGFEMy9NQUJjZjM3TkZkamJVUHU1eDBkaTU5SWlKUXExOHZCTVRWRmp0OVNFcUh4Y0dGZStyTjJXTGVHRSs3WVNyaXBMT3oyYkJCQXl4ZXRCQTFhMFNMdU5MZ1RhK24vK1ZGckZxMWl2d1dRK3ZKbDV4Yld0NEhkK0tFSjlSWVUyeDEwcStucCtQTEwxY2pPeWZiNmdpU3JYQitXaWNuaTJGWVJ6aDkrZ3llbVBoSG5EcDlXalFDM0Jnb0RRUHc3RE5QNGFrbko2bEgyb2Q5QWxFUDVRVkQ5Sy80WDFJR3BCQXVNeTgvUC9IS0Y0MnBLb0V3eDQrZlJNcUlFU1NXVytKbUd1ZUI4OEticEVXRWgySCtPL09Rbkh5ZmVyUUJXd1Z5NHVSSkRCOHhHbGZTMGtURmRBVHlxSkNmbDQ5bkovUG0xVlBWV1B1WVAvOER2UGFHWWhXMUFRb2V1VXRNVE1Cbml6OUZYRnljK014ZTdKSzhkb0Y1TjBMdVpubjR5bEJtb0RMaTNlV054VkhWTkc3Y0VOT25UaFg5Y0c1UkdjNExUNU5QVDcrQlYvLzVMMlR3ZGtzT3dwV1JwM2F3Z0IwTzZ2ZTlyQ3grc3dXZXZieDY3Vm9TUkpGSk9mT28xckFoUXh3V0IrT0FEMktZVFNxRDdjRmgyRkNUd0xRZ291eTAzT3lnY3VDMUY4YnBjSXUvNzhBQkxQam9FL0czbzFnN1gwZURJK3pZOVNOK09mbUxhQVMwTkxqTEZoa1pnVDU5elI1dFlTZU9keG9sVllEaVlKc0gzaXBKcStTMndFSjRjdEpFTkd2V1JGUWNRenJGNHRFRnMrZStRMzZLNVJKamQ0Q24zUENNWmU3K2FUNFFueGV2MmUvY3NTUHFKTmwrMTl3YXBRcUUrOG42M0R3VTVlYWdLRWNHWndaZFRxNll2OFdPZTFuNCt2aWhWa3hOSk1USElUNnV0aHJpRUVOeDVzL1NLSS9ZMkZqaHJQS0dCN3pQclpaZVFudzhZbXZGWU9ueUZjTGgxdUMxNXZ6MEtPNSthWUgzd09WK3ZURThTblRyVnBiSmNYWUgvaDBLWE5udFplKysvZGkrYzZkb0JEVHJ3WGtLRFF0RDMzN1d0eksxaDFLZGRGN2JmWHJlZk9oSUlOcm9pOFE1OE14VkQrcDNOM2xwaG5nTVhXa1VVR1hNek1nVXJiNTI4Zmx5OFlOZW9pSWpIUm8xU3VNVmtXdzk2TDNXb1dFbm1aZm9Sa1ZGbGt3WS9HN2JEemgyL0pqd0R4ZytYcThyUXMvdTNaQlV4L0RvTTE2VXRIYjlCdVNROEQzVnB6VFpDNmZOVDNiaWFmUEo5MWtPR0pURm1FZkhVbDYzaTQwWHVJeTRmQXJJbW5TamZIN3c3anlyejlHM2gxSUZ3bzhwMEJYWXR0K3B4REY0c3p4M2JIeTR5ampxTHppVDR5ZE9JR1hvU0dTUkJkTkcwTGpyeU05aFhMSDhNenh3djIwVE04dWlkSUZJSkM0TUMrRnZMNzJDUlV1V21Feks1R0h3MW0yU3NXTHBFdlhJaWlIN1RoSzNKUFZ5S25iczJrbENNYlR2L0o2M0llM1RzNWNhVTNHa1FDUnV5ZWRmZkNtZXNPdkQ5K1JVNjhHVE01czJiNDVldlJ5YlZtSU5LUkNKMjFGSUR2MnlaWitMbTR1TTVoUHg2RlduOWcrSzNSZWRoUlNJeE8zNDc4SlBjZW5TSlpOUlBCWkhqZWhvREI5bStYaS9paUFGSW5FcmVGckp4bzJieFh0dEpFMTByOGc1SC9CUWYwU1RTSnlKRklqRXJkaTArUnZzM2JjUE9yMWUzQi9pd0hmUjR4TVRNTHlNeHhnNGloem1sYmdWL0lEUzdUdDJ3Sk5uSnF1M092UEplanpRcmgyZUdQY0grUG82OTBGTVVpQVNTUm5JTHBaRVVpckEvd0ZBenJnV1duZDBqQUFBQUFCSlJVNUVya0pnZ2c9PSJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDE5LTAyLTI2IiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJBdXRoZW5UcmVuZCBUZWNobm9sb2d5IEluYy4gQVRLZXkuSGVsbG8gVHlwZUMiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlUyRjEwMDAyMDE4MDIyODAwNCIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4zLjMiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMC4wIn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAxOS0wMi0yNiJ9LHsiYWFpZCI6IjRlNGUjNDAwYiIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFpZCI6IjRlNGUjNDAwYiIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJUb3VjaCBJRCBvciBGYWNlIElEIn0sImRlc2NyaXB0aW9uIjoiVG91Y2ggSUQgb3IgRmFjZSBJRCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyNTYsInByb3RvY29sRmFtaWx5IjoidWFmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH0seyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19zdXJyb2dhdGUiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwiLCJiYURlc2MiOnsic2VsZkF0dGVzdGVkRlJSIjowLjAsInNlbGZBdHRlc3RlZEZBUiI6MC4wLCJpQVBBUlRocmVzaG9sZCI6MC4wLCJtYXhUZW1wbGF0ZXMiOjAsIm1heFJldHJpZXMiOjUsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZhY2VwcmludF9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJhdHRhY2htZW50SGludCI6WyJpbnRlcm5hbCJdLCJ0Y0Rpc3BsYXkiOlsiYW55Il0sInRjRGlzcGxheUNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbiIsImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6W10sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUVnQUFBQklDQVlBQUFCVjdiTkhBQUFBQVhOU1IwSUFyczRjNlFBQUFCeHBSRTlVQUFBQUFnQUFBQUFBQUFBa0FBQUFLQUFBQUNRQUFBQWtBQUFGSmJ1SjJFa0FBQVR4U1VSQlZIZ0I3Sll4YmlOSEVFVUZKMTRZQzVqSkFnc25Ic09PSFBFQUMyaHlCK0lOTktFek1uU211Y0JpZVFQeUJtTGduTHlCZUFQU0oxamVnSDZmNmhxVXk5UGFYZzBKTytBQVg5MWRWVjM5LzUvbVFEZkg0L0htaXJ3SFYzTytjRUd1QmwwTnl2OThTajR0MXh0MHZVSFhHM1RSWDhHZzVqY0RuNTkvckw0REg4QU1iQnhXekZ2d0czZy84SmhoR2tzK1ZMbWExeEpIOUFUSWhHTWhaRjd6MnZOeS9Fdml3OXo5U3NhSXJNRyswSlErODdSMzhwWEhEdE5ZNG1LdXBwUW9va1pnSG94WnMvNEVwdUQyQlNpdk90V2JhYnA5bzlMemMveEw0c1BjTFdDSWtBcHN3V2Nnb2JkOTI0aXJybllZeHpweU12b09MTUJmNEY4MWNZL1dKVWJrYW9adDdtUGpZaElBL2dSM0xuekRXbWJNd0Fyc2dkMk12bEg1RFdoQlp3aHptZlU3K05YMzdwdm54SmZFTDJZUXhOK0REMGFZdVFUSmxDM29NNkkwZG1EL0hGU3U5enViOTQwbFJ1UnFMbUlRNUw4MW9oSUM5UFlsck5TRTBqcmRyRnBuTVg1alo4WXhKNzRrZmhHRGpDQ2taeUJuekk3Y0FrekJMYWhzbjQwcHJtK092bDFQSUdmY2l0d1B0aStPSlVia2FpNWlFR1RIWU5zajZETXhpZTIrSlZITVMydjI2VFpPZ2N5Tlp1bEY5UGJOaVMrSm45MGdTT28vWTVIMUFtVE1BeGg1QTdRR05aaUJGc3pCQnF6U1dyRUpxUHcrelluZGd4MDRCdndVYTB1TXlOV2MxU0NJeXB4SStKRllaYVNaajBBRFpFU3NmV205cDM0SmF1dWxrYlZ1bEY2QTdkMzR2T1k1OFNYeFlac2RFd2krZFNSRlZxUWJWeUl4TFRnQUUvUGFjZTk3TTYvQWsrdGIrM05Mak1qVm5OT2dwU01vYzdydmdlWmc2L0xSbURVNTRjSGhNY1hVNjVpQmpPck1ZUDRwMVczK1Z3WkI2dnRFVEVJa3lKdlRzSTYzUmpVTDBQdGZ0UmVudWZxQktYZ0NmV2JOaVorK2I0dzZUelcxOWNuZGpwTDRXVzRRWkdhSlZKODVVWkNNK2NmSDJvUm9sRENEajl1Y25NeGFnOWgzUzh5YnRMUTlKVWJrYXM1bGtNaUpjR09rTkU4eEV5THphc3RyWkQxS2RTdkdQYkJhUHg2SUs2OStuYkhNYTdBRHNYYWNlbmYxT2ZFbDhjRUdRWENjU0Q2YWVOWWk1NG5IbTFXUlg0WWFYNStieXl6dHE1SUpJK2FMMEVjMVp0SXZxaXN4SWxjemJET0hRMllHOUcydzZ6MW03Z1ZHYzFRdkViN21OZk5XNHZYUTZ5SDAyN1B1Ymx0T2ZFbjhIQWJOalF5anpQSGlvemw2KzlFTTFTekFIVGk5K1dmWkorRlZpaXV2dXJoM1E4eGVUQlB5Ryt0VFlrU3VackJCUmtKRXdUYVE3QVFUbHhndlVJTHZRZmVtbWN2Z0dXZ1RhdXV2a1pqcW8xRTYwMHhhTVBkbnROcVhFMThTSDdaWnA2Y0hZdEdjeHVXV2dmaWppVklOOHduWWh4b3ZWUHVyVkR0aXJ2MCs3MDFhaDl6YkVpTnlOV2N4Q0VMUmdGWmk5SkNiQmNLTDU4enozNTY5WG5pY3oyMHYrNmFoNzBZNVlqTFEzN0ltSjc0a1BzZ2dpTHdCSytDRmRBWVFiMEx1aWJYOUhDUmtHL0xxbzVwMWdoZHFaMmlQOVlqOVR3YVM5L0ZOaVJHNW1xRUdmWVNNRWRmb3pSbUgzSmZNVVg1c044UkdZdmRnRjNwNWt4WWhkK3BCYkozaS82bEJHMGN1bW5Od09kMkVUanh6Q1R3NitMMFY4U1ZRN3puUWVnU2lFVnRub3N5MWZxYzQ2N0hGY3JlakpENzBCa21FaUQwNHNpSjJNSEtNMFJ5Sk56RWF2VGx0eUZsZG8vNnFEZmw1aW5kbXBMelZyN1V1TVNKWE05U2dQeUJRaWFRZTVnM3c1a2hnYzBvKzU1ZXNUYlJHYjA3TSticXVqL2FFSHJYNkUvUDc5eWxXcXpZbnZpUSt5Q0NSc0FjaTgwQmNOMmZpOGw1QU5LY05lL1dUZVFDN0VCK3JIN0crbjFRVmFrOW5xN2JFaUZ6TjN3QUFBUC8vWDlMbFB3QUFCUE5KUkVGVTdWcTdqaU5WRkJ3a0pCQ3N0QjBRRWV5MklHU0R6cGFNRHNuV01jbDJTTENTSFJCc052NEF4RGdpUW5ML3dYUkFQaTN4QVRiOGdQMEgyMzh3VkxWUG1kb3J6NE54MEczSlY2bzU5OVk1NS9wVXpaMVphVFVYdDdlM0YwL0ZCZGEzTC9NQ1dBTzNoZy9rbWVmQ2ZtWTUxcTJBTEhMVlBia3NhblgzbG4xQWtmUlVjVmR0ZkJQYzdLbjYyUGRrYzlpTVlkN1pRQkpCOFRtSDQ4TGVoMDdOb2RETzd0Z2J0K3ZlZndOb3VPNWZITGgzRzF4cVhJNitmRWlEV2h1Y0FxNkEvbVVjRVBHUU9UU0JnaVlBN3lYbVFCVlJCakhtQWVjbThaazBXZnlNM0pBR05USE1CckhrTUZ6WVowQWJPUTNMd1h2ekVQbWQ3cEo4R2IycXZ5L1dVVnZiSFUxd00rTmFja01hOUI3RFhISUlMWnhMSUJYdjVsUUg4cFgxOHlYZFo0NXllWHlXem93WlVDVDl6NFkwNkRNVHhvR2JaRGdPdlFUMGNtaU9DNklaRTkzQmlEUHZtUUtYd0JXd0FieEgrMFhVZTc2L0srbDVQWmhCSnFqR1VPbXJvWkFwYTdpd1o0M0VNZEtjWXBlOS95dnFTbUFGZVArV1hlRDhYcG5tWERtWVFSanV5MlJvQ2FDWVhqeGlEcXlUdW8vTVFXNENVRlJyNEd1c2dFejJZYjhFOUJuNE43ZzNpRFhpMXNITmpDc0dNeWlHMmRnd0ZQNldQQmYySExTelBJWFF2RjQwWWdsc0FRbThLeTZzWnhuMXEvaU0zUHVENDcyNkt4dmFJQTYvQWR3WUR0amFrQnIyaWdLNGtHT2YrTWZFTmVyN1Y3bTc0Yit2eVQxOVRYQzlpVU1iOUZ5allxaTdqT0hMbWxoZG5ZanFEUWFYc3dZeEE5NEFTOERONjVqVFBZcmcrQ3BWVjVJUGJzSDlvQWJGTUQ5aElINkhOYVRISmZpOUtPeFRjL2F2aW5lbEMvVWxRSU4xWjN1Z3ByVjh5VHpPNUFydXgyQlFiUU5LeUEyNGtnTnlZYzlYd2FHVlo2ejY1QzVmNGR4RURlUEVjZ1hPYnRLK2p6WFJvM3Rud2ZXUit6RVlWR0pJRFhpTmZjbkJ0SENlQUozVjdNMEJsd0dwY2JxcllaNzNJUElPOFZ2ZEhUbnZud2RYTW5JTmJoQ0h3UEMvQURuM1dqaVhnQTlQZ1h3SkZXc1FhYzRha1BCRHNXWXRGK3B1ck5aZm1IOUdGYlhQR0xsR1lkQnVsRjVFQVJFTFlHdGlKSHdGcm1BdFltb09qWnNDZVVUMU1KYlJVMkV2ZmtHT0MxeHJmTm1UOW1VMEJtSElmMnhRQ1dIc3hXdG1uR25pMm1xWjc0MnptcG5sRy9JNDU4YTFWcnMxdmhTdk9DYURTaHVVeG13QXZvcE13MkkvQVRwQUJ1N05BY2QrcjJXdXI3Tis5WFVIT09ZK0Y2ODRHb000RUFiOERiZ0NDZzBZUE1XM2dBUXl1amwxNUZ5NDErZHh6NzdmN2hYM043bDBqY29nSHc2Q0M0QS9LdXNRTHlHTUt5Qm5QU0pyUE5lL0luQnVVSVl6b2JvMmV1Zkd2U0tYcnRFWmhJRmZBVnNiWEtJWStXcW1Fb0Y5bGRUTm1RUG5abndJYm1LMVRYRHI0Qlk4SDFxak00aERZdWhVK0FiY0pkQy9qcWlaaFRnYVJ5d2xFUHU1NWVxb3I0MWpieDduYS9VZGlxTTBLQVQ5REFIOGZmVEdCOGM1QXhwQXhxVG1GRW11ako3T2VKb3pCL2lqdWpmZFAwZjcwUnFrQVJVcEpFUzUwTlFjMW13Qm1kZS9EcHdYeGpYWXMrNVBSdDEvVnh5OVFSRHhBdmdkNkFBSlY1eEtHSElVdmJhYVRYQ0ZjZXpqaS9wUmZRL0YwUnRFQVJDVUF6ZUFqT0UrbHpqc2FVSm5lZjR5SjVjQmErTi94ZjRMOVQwbW5vUkJFZ0p4cjRIdmRXYkVlUWJJT0VZM3A0MGN1ZWszTDE1KzRyMlAyWitVUVM0SWdyOEMvZ2dEWk5BR1o3MmN2N0MvQnQ0Q3o3MzMvK3hQMWlDSmhIaitHUDBBZkFkOEd2aGErV1BqWUFZZDg4R24wbnZVLzVXY2lzaGo1andiOU1DZi81d05PaHYwOUQ4UTQ0L20rUVdkWDlCeEwraGZVd1RZeVJDYXJaOEFBQUFBU1VWT1JLNUNZSUk9In0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDE4LTA1LTE5In1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAxOC0wNS0xOSJ9LHsiYWFndWlkIjoiY2I0Zjc5NmMtYTIwYS1hZjllLWQ2MzktMjEzYzFlYzI0N2YzIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiJjYjRmNzk2Yy1hMjBhLWFmOWUtZDYzOS0yMTNjMWVjMjQ3ZjMiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiQUNTIFBvY2tldEtleSsgQmlvIn0sImRlc2NyaXB0aW9uIjoiQUNTIFBvY2tldEtleSsgQmlvIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEwMDAwLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH0seyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCIsImJhRGVzYyI6eyJzZWxmQXR0ZXN0ZWRGUlIiOjAuMCwic2VsZkF0dGVzdGVkRkFSIjowLjAsImlBUEFSVGhyZXNob2xkIjowLjAsIm1heFRlbXBsYXRlcyI6MTAsIm1heFJldHJpZXMiOjE1LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDUVRDQ0FlZWdBd0lCQWdJVUYvMHdUUFA2RkVxeHBzaWJKaUxGdERqNHFod3dDZ1lJS29aSXpqMEVBd0l3ZFRFTE1Ba0dBMVVFQmhNQ1NFc3hFakFRQmdOVkJBZ01DVWh2Ym1jZ1MyOXVaekVTTUJBR0ExVUVCd3dKU0c5dVp5QkxiMjVuTVNNd0lRWURWUVFLREJwQlpIWmhibU5sWkNCRFlYSmtJRk41YzNSbGJYTWdUSFJrTGpFWk1CY0dBMVVFQXd3UVFVTlRJRVpKUkU4Z1VtOXZkQ0JEUVRBZ0Z3MHlNakExTXpBd09USXpNelZhR0E4eU1EVXlNRFV5TWpBNU1qTXpOVm93ZFRFTE1Ba0dBMVVFQmhNQ1NFc3hFakFRQmdOVkJBZ01DVWh2Ym1jZ1MyOXVaekVTTUJBR0ExVUVCd3dKU0c5dVp5QkxiMjVuTVNNd0lRWURWUVFLREJwQlpIWmhibU5sWkNCRFlYSmtJRk41YzNSbGJYTWdUSFJrTGpFWk1CY0dBMVVFQXd3UVFVTlRJRVpKUkU4Z1VtOXZkQ0JEUVRCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQkJ3WWdLVndqQ1Y2K2x2N2ducEZFUnpVMnVORDhnZEVrUENOY3MvdkZEczJzSzQySnV4bmhGbklnTUIyRHlVMElyWElMamYvMlhUMFlTVGQxc1BpVFNhalV6QlJNQjBHQTFVZERnUVdCQlRuUWFycGRTdDRzaWQ3VmpmTklMSUhyYjJQb0RBZkJnTlZIU01FR0RBV2dCVG5RYXJwZFN0NHNpZDdWamZOSUxJSHJiMlBvREFQQmdOVkhSTUJBZjhFQlRBREFRSC9NQW9HQ0NxR1NNNDlCQU1DQTBnQU1FVUNJUURjb1hKM3J6Tk1BL2Zaa2gwOFBvRnJNeDQzR1lNaFpNZkxQdy8zTWZKcEdBSWdlY3RLd21KWU05SjhTWDh4L2FRVjRpR3ZLV29CZnIxWFBUQU1YT2hWRVlFPSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFEQUFBQUF3Q0FZQUFBQlhBdm1IQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQURzUUFBQTdFQVpVckRoc0FBQWljU1VSQlZHaEQxWmpQaTVWVkdNZjlDOW9iNkRKb0lRaTFpREJ3STVRZ0VVRWx0QkowWVNBR0V1UkNGQk14SWtsQ2F5RklRaWFLQlpVb2xZN1FOSk02M25HYWNhNmo0MHcwMDR6Qk1CTzZMRTduODl6N1BmTzg1ejN2dGRxNStITHVmWCtjOC9rKzV6blBPZmV1K1B1dnY4TGpMRFBRR2g0TzdmSHgwR29OcDg5VnRhMmRuSnlzYVhwNkttbHViajYxMHZ6OFhGaFlXQ2hxY1duUnRMUzRGQjQrZkJnZVBIeGc0ck1Yakw2VkRoNDgyRFhRQlU5R1lqdmViaWMxd1F1NEJBKzRQcy9PempiQ213Rm40cjhvR1JCMEo5b2RKZmgySFg0cWdpSVA3d1U4MEtYb2UzQ0Rmd1I0SG5XSm1lcHBvS04yRFg1NnFwd3l0QURQejNVaTN3c2U2UDhMN2xVeGtDc0hSM25VQmMxbnFRVHU0YjJKRXRTL2tRSlFOeERUaGJRcHdRTkg2K0hWQ3BydnRNeENEaytlTHk1Vm9YdVpLTTJBbmk4YWFNcDNnNDVwWTIwR2o0QlZ2dWZSOTlHV1BFaEp2VkxIOTBNd3Nobm9IWGtCZTNndkQ1N0RNMWd2YU5RTEhGWGhGMjJNWkNDSFJvQjZBVm1DejlORnN0TFlOVkNDeWErVnBPY0VUbjkrakVZRE9UaUw5OStDbDlJRzVYQ0tlSy9JVi9ybzl1dkhLaHBRbVFTeUdIR1g1N00vL0JCbVB2c3MzTnUxSzl6YnZEbmNXYmV1cHJzdnZKQTA4ZUpMWVdiMzd2RDdvVU5oNGNLRjhPZk1UQkc2Qk8vQnBab0JiVkMrWEdweG90bHIxOEwwL3YwR012ckVFMkYweFlvdyt1U1RCanI2OHN0aGRQdjJwRi8ydnhkdWZmeHg1Um9hZis2NU1QYjAwNTEzbzlxclY1djUrNmRPbVNFUExmQ1NBUXBIeFFEUlZWdUplRXlWWDgrZVRkQzBkL2JzQ2ExUFA3VWpTSDkvdjdXcVpENElEREkzVHdwT20raVA2OXJsaHo3L1BBenYzZHN4SHdPQm9lazMzd3ozdi8yMllxQUVUMXN4NE5PR0J4RGd0NTkvUHR4OTQvVXc4Y2t4Z3h3OGNzUWlPZkxzTTVZNjk2LzBkUWFMVWZNcDRNVVlYS2ZONzVIWGpBVURocTYrK3FvRjZ0YXFWV0VtenFDZ2xicTBCSVYza2dHQjB3cmU4am9LNk5ZMzM0U2JtelpaeDdmWHJBbDNQdmdnVEF4ZHQzc01US2VhK2c1VTNZU1hET203M2tWQURyZGFZWGpyVmh1UGxKc2ZHckxyWWhObk1wQkhIMEJldXZYZGQrSFdLNi9ZMUpMbll5ZE9kRSt1TFh1ZVRqMkk1QUVWZFYzejkyaHowYWMwRXROelpQMTZNd0lUMXhnWGtZcVZHWkF3d0lPMjZDSTRFU0RmQndZSERKejd5azhHRkFpdHBPOGVOci92eFhoTitRN1R6WmdKc0l3ZE9KQm1BQlVOTEk2TnBRVTcvdTY3dGtoSkZic1hCMUdOSjIybTMza25sVWhLbzhvaWZkNlBwbFZhS1oxTHNWOEJzMGgvalFIU1BjYk13ZWxmWW15cW1pM3lqejZ5NzJSTHhRQVA4cUtWdUZnUmJwNCtIUVpqMU1seHJpZjRLRUJaQzNUb3hUVUFTL2NJQ0FzZVU3VjdVVW9Sd1ZzYkt5QnNBcmFzaVAyd1J0aXZLZ1o0b2IxbGl6MHcxTmRudWM1MUgzWGdpVENSMThBM05tNE13dzZLNnFUUHJiVnJPL2RpbjNhdFd5clRQUmFxcnNWblZCQzhaQ0NaaU04UHZ2V1dQWnNNQU04bVJVZnRreWN0OGx3VHZEZUJBYWFmdFVGRVdCZDBadWE3Y0dqa3FhZlMvc0MwbXpFSGE4VWdpcG5HQ0NKZGMrQzh0VDBvbXVmZGlnR21sdHhYSjh2Z25kT2tGcUQwMjh4dmR2eG1VWlZTQ21EZ0Y3dDVUNThVQTkybjVqTXU0aDdQYXExNUNaNnFRNkFtdnpobDc4TlpNVUIwV09VMnFJdTRvcDZMUmNtdW1kSWpVekxRUFVxamhRamhuMmU5RWJUZnYvcXFDQzd4SFhoYU1vUjNMMTI2bEJtSUY0a1FEL2wwVWQ3bjhFM2dFdE9NQWZxMldjUkEvTXdCMEs4RmlVVXNlT1RCVS9Tak9CSHcvdm56NTVjTkFFd24xNDhlczVRd3lJYkk4N3hGbm9FeHdUcUl4bTJuZGtDYUFhQnpBY2FSNU9kWXBsa3I2a3NwcEdqN1ZtSmpaYXpLREdDQW1uemo3YmM3RzFVRHZFVGRaMUFxRFA5bWNGRGoyRkV4RU1GazRJKzQ0RWdUaVRNVzF5bUY3TzU2aDd3bTJrQXpBL1RyNFpVK21MOTh1Vy9aQUdsaXBURk9EUytYRFBDY1BrKzg5bHBuMFBqODVKVXJ0aEdsdEhDcFJZVUJ2clF2a0RJWVNIMUZFVlVmOGFtcFpRT2N2UmhqZk1NR1M1OUtGUUtZU3NMZ2JOdVBtZ0YrakhnWUw5S2lhWDNvcE5sMER3TUdua1VlZUJZOHMvcjl1WFAySExOYk1RQVkyeitkVFo4NVV3SDIwWmY0SlphaUhqV3ljcVhCRTVrSk5zSzRpSFVQYUFCSkVXWWx2MGNxQXNXN0hoeFoyc1J4TUNCNG5pTjFhd2JRNUxadDFqR2Jqd2N1aWZWQ0pBQ3pUcnNBV3FoODU1NmtVeXpQOEIwWXFRWWZVMU1uWVV1YmFQeml4WXNHenBpVkdjakJ5RTllcEVhVDMvbDloR21KSXFBS2s2dnBTS0NXZGFCZmJEazRsWXdGQy94UDhhY3MwQVNCZGppMnhSbEFYS05lMjNFaFRqRUx2UEo3MVlrYVg0T09jRUF6UTVMZ1U1WGh6d09uZS92MnBmRXdJSERTaTdMSmJ3Tm1UU1lxQmp5NE4wSmsyWjB0MTJQSDl1T2IzNnNONEJMd3RJTDJFYWYxYWNJWmlCU1oyTG5UOWhOTHFhTkg3WkRJdUJ5amxXNEdIMU1OZU5yR0ZNcEZCRzhlL3JEejY2aTc4REREYjFhT3lCNmVaeTF0M0ZGWUFqcHYwZFV2ejFrQkVEVENXTi9YWDF2SnhBRFFFdkExQTcyTUtGMFlsS204ZnVoOUd5enRvbEZzaEt3Wi9aWW1KZGl3dkRoSkVtbEUxTzJFMm4yZnZraVgvdVBIRFZyZ2dPYVJMeG9vUWF0TmNvdVZ5S2xqSFF1SW11VnJCSlBJYS85ZDR0bXJPM2FFSHc4ZnRsd0htQ3JERGl2QWxPL3hCNHl1U1J6NUg1bENUZkJlV3F3eXBDZ1J2WkxJWlNEUndPQ2dpZWNWREZwSnNGNkE2M015QUtEYUduaFVMM0JhNVRqU1FrVjVybnZaMy9rTzFndTRQRjJRNEFsRVpRWUVua2VlS3RSVTQvTktnL0lxa3g4SkpQMHpWNEh1YmxBRzNnTWVZWUMyWmtEZ2dzK2hVNFhwaXUrb1pNQWJFYlJhRDk2Qlg5NmNlc0VyOHZwY01mQW9lRW13QXZjMVh2S25TSzg2K0hMT0czZ0IzdjZQNmdLcnhRVFhpd2J5RFVxcG9xakxnSWRIQUtyTjFUUGZJelNSTDFXYUVyeGFGbi9OZ0FmM0ttMUtPVHpmYzNDVTU3dWlUaXZRa3BvaVR5dFZESlRBZ2JQSVp3WUVEMkFUdUlDYkJKVGFYTDNndVZjemtJTXJiWkFIeitIejFnczR0UWFxeUVjZysvYzVTeHN0VHI5STFRNE1EQ1pvcjBZREFzOXpIbFdpMzNPeGx2TWVLTFVsK2VpVDU1MjJtanBTTXNDSHgxTUh3ejhjZUh5N0VoUno1UUFBQUFCSlJVNUVya0pnZ2c9PSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzEiLCJGSURPXzJfMV9QUkUiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkQmxvYiIsImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJtaW5QaW5MZW5ndGgiXSwiYWFndWlkIjoiY2I0Zjc5NmNhMjBhYWY5ZWQ2MzkyMTNjMWVjMjQ3ZjMiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsInV2IjpmYWxzZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImJpb0Vucm9sbCI6ZmFsc2UsInVzZXJWZXJpZmljYXRpb25NZ210UHJldmlldyI6ZmFsc2UsInV2QmlvRW5yb2xsIjp0cnVlLCJhdXRobnJDZmciOnRydWUsInV2QWNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjp0cnVlfSwibWF4TXNnU2l6ZSI6MjA0OCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0Ijo1LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjEwNCwidHJhbnNwb3J0cyI6WyJ1c2IiLCJuZmMiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fV0sImZvcmNlUElOQ2hhbmdlIjpmYWxzZSwibWluUElOTGVuZ3RoIjo0LCJmaXJtd2FyZVZlcnNpb24iOjEwMDAwLCJtYXhDcmVkQmxvYkxlbmd0aCI6NjQsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjozLCJ1dk1vZGFsaXR5IjoyfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjYtMDItMTMiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MTAwMDAsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiUG9ja2V0S2V5KyBCaW8iLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI2MDIxMzAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUHJvZmlsZXMiOlsiY29uc3VtZXIiXSwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNi0wMi0xMyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxMDAwMH1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNi0wNS0wNiJ9LHsiYWFpZCI6IjAwMjQjMjMzMSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFpZCI6IjAwMjQjMjMzMSIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJHK0RWb2ljZUtleWNoYWluaU9TIn0sImRlc2NyaXB0aW9uIjoiRytEIFZvaWNlS2V5Y2hhaW5pT1MiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJ1YWYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfSx7Im1ham9yIjoxLCJtaW5vciI6Mn1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9kZXIiXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoidm9pY2VwcmludF9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsic29mdHdhcmUiXSwiYXR0YWNobWVudEhpbnQiOlsiaW50ZXJuYWwiXSwidGNEaXNwbGF5IjpbImFueSIsInByaXZpbGVnZWRfc29mdHdhcmUiXSwidGNEaXNwbGF5Q29udGVudFR5cGUiOiJpbWFnZS9wbmciLCJ0Y0Rpc3BsYXlQTkdDaGFyYWN0ZXJpc3RpY3MiOlt7IndpZHRoIjo1NDAsImhlaWdodCI6OTYwLCJiaXREZXB0aCI6MTYsImNvbG9yVHlwZSI6MiwiY29tcHJlc3Npb24iOjAsImZpbHRlciI6MCwiaW50ZXJsYWNlIjowfV0sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlCbURDQ0FUMENCR1FkUFIwd0NnWUlLb1pJemowRUF3SXdWakVMTUFrR0ExVUVCaE1DU1U0eEN6QUpCZ05WQkFnTUFrMUlNUTB3Q3dZRFZRUUhEQVJRVlU1Rk1Rc3dDUVlEVlFRS0RBSkhSREVMTUFrR0ExVUVDd3dDUkZNeEVUQVBCZ05WQkFNTUNFRlZWRWhTVDA5VU1CNFhEVEl6TURNeU5EQTJNRE13T1ZvWERUUXpNRE15TkRBMk1ETXdPVm93VmpFTE1Ba0dBMVVFQmhNQ1NVNHhDekFKQmdOVkJBZ01BazFJTVEwd0N3WURWUVFIREFSUVZVNUZNUXN3Q1FZRFZRUUtEQUpIUkRFTE1Ba0dBMVVFQ3d3Q1JGTXhFVEFQQmdOVkJBTU1DRUZWVkVoU1QwOVVNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVTSXBJL2RLWUNEWWh6d0Qyd1NmWUFPYi9uTmFpUGNXRjIxdnhaay9UZ0QwT0p0Y0QrT1BtNjRud1pkRldTRVlTVzdpT3FucG1KeWRlOG1nci90bkFpekFLQmdncWhrak9QUVFEQWdOSkFEQkdBaUVBM2J2aGF6UUZQd215WGx4Sy94Q1hmaDdnMVgxRW9iTEMzTCsyR09SeHA3Z0NJUUNmTkVUWC9tMkJlYlJMWEk0TE1QMUVRR1BYRkRmN09rNzRVN3hiaU00VmtBPT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCwvOWovNEFBUVNrWkpSZ0FCQVFBQUFRQUJBQUQvMndCREFBTUNBZ01DQWdNREF3TUVBd01FQlFnRkJRUUVCUW9IQndZSURBb01EQXNLQ3dzTkRoSVFEUTRSRGdzTEVCWVFFUk1VRlJVVkRBOFhHQllVR0JJVUZSVC8yd0JEQVFNRUJBVUVCUWtGQlFrVURRc05GQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJUL3dnQVJDQURJQU1nREFTSUFBaEVCQXhFQi84UUFIQUFCQUFNQUF3RUJBQUFBQUFBQUFBQUFBQWNJQ1FRRkJnSUQvOFFBR3dFQkFBSURBUUVBQUFBQUFBQUFBQUFBQUFFREFnVUdCQWYvMmdBTUF3RUFBaEFERUFBQUFheWo2RjV3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVnZDNlRFQ1eExKMzZ4Rm9jNWw4bEdQU1hLc3pORE0wOU5WZE4rOFA4WmRMS0JIcGllK3ZoVHVvZk5YTkF2bStNeVVtUm4xZFFaZ0FITTRjdzFMaWNQMVZMZVF1alR6SjJkSk0zMzVwaGFhVWplYWJLVVJ2ZFY3U1oxZFRTNlN1Rmt3US9iSHI3NjV0MkYxbWRrODdOUHFFK1NZeUhSMWdBTEIxOGx2eVRlalBYUXFtdWdzZ1lkVlZwMXlhSGZYTFczdlVRazJwYUlxZDVNcllxSVBmamRMTm1UWXkyK0NUb3hzYjZJdHRTdTZsQTlCWkhBNnFvQUJ5T09OSFAycFBlbmpycy84QXhtbmNZYkxDaWE2ejB4U21hWnQ5SFJNbFVSdmRGK3F6b1l1czNsZEtWMXU2aWFtM3Q3UHJ0Sm4wR2VudS9BOURXR3h4QUFBZXY4Z3hYS2svT1pxYzlKbWJLbHBNelpHa3pOa2FUTTJScE53TTZFcmgxajh3Mk9JZXlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQLzhRQUtCQUFBUU1EQXdRQkJRRUFBQUFBQUFBQUJRQUVCZ0lEQnhVWElBRVFFellSRWhZd05IQTEvOW9BQ0FFQkFBRUZBdjZiR0lTUmxOWWJGZ1VaUzNGTW1sUGd0S1cyYmZTTHJFMVBTdVcrQzB2QmFYZ3RMd1dsNExTY2lHTHlrMWlnT1Jwa3NRSXhlOStHQVFtcVVQRzdlMDBzUG43WWEzZTVkQnRxOTV4YU9aWUhGQXl4SjdjcEJreGhIaTI4NHRiemkxdk9MVEhMUUozVzFkMkgxaDZ5c0VXczVoMXlLRU9iUnJjZk9nWWl5QkZTV1F0NHlLUFNGN0kzdkRFbnR5eWY3dHdqY29mUmg0Q05ONUFNbEFLM0l3bHkzVlp1Y3NWTU9qMlhMTFJtcDlJKzFHSmoxZE8waDViU0hsQW9DVmpwOVRYSGhZOUpkcER5MmtQSnppdzQwYmRzT21hbTVkWkhZZEI4dzVZWStOZVU0K3JwTHV6YjlibWUvd0FQdGpYNnZ2VlpmK1B1dmxpNGgwWVM5WmRDVk16M2FuSnNqb3AzUGtpM1BraXg1TlRCNlJLZFRvMkZsRzU4a1c1OGtWL0pFaGRXTzJIQWxWNGdzaGtPaEtYOHJGK3RyZmpSeTFJd3g0RzJrUXlTUlIvRjNYREVudHl5Zjd0d2lzTmZTbHlJRk53ZytZU0dpTkE2cXV0ZFhPRVRHN0UzN0IrM0tOTDdlMDZ0UGNYeDk1WHRDQ1cwSUpiUWdrQmdBdU9QMGF4MEpQRXRvUVMyaEJMYUVFbU9NNCt4cnRXcUxGc29WYWhtVXhsbDZXRXZ3eDZVa0l6ZkM1ZUdQS1c4cURPcWRkR3JYUnExMGF0ZEdyWFJxMTBhdGRHclhScTEwYW5NdEN0S1RlWUI3V2s5Skg4a2MvMDMvOFFBSFJFQUFnSUNBd0VBQUFBQUFBQUFBQUFBQUFFUkVnSVFJQ0V4VVAvYUFBZ0JBd0VCUHdINnl4azZSS0Y3cVVTaDR6eWZTMURFbVpFUFdMTXVDOU10V1JZYmdzaHVSZW1YbkZPU3BWaXhZMUpWbFdKUU56eXNXTEZpeFlibjdILy94QUF1RVFBQkF3RUZCZ1VGQVFBQUFBQUFBQUFDQUFFREJBVVJGU0ZTRWhRZ01VRlJFeUl5WVlFUUpGQng4RFAvMmdBSUFRSUJBVDhCL0xWbGQ0UGtqNXI3aXB6emRSMGxReHM3aXFyL0FBUDlLT001WDJRelc1MU9sYnJVam5zdW9LK1dGN2p6WlJtTWdzWTh1Q1UvQ2pjK3lwWXQ2bXVMOXVoRmhhNFZ2VUd0bFUxTUpRa3pFck9rR09WM043c2x2Y0d0a0VvUytoNzFhRk14ZzhyYzJWbFN2ZThYendWWTdVQnN5c3MyR1oyZnI5TUxtN3QvZkNrczZXTVhOM2JKUVFGVUZzQXNMbTd0L2ZDb2FZNlpuWStxcXpZSUNkMVpZM3pYKzNEVlU1VXNtMFBMb29iVUc2NlZsaWNIdXA3UWhraUlHNnFobkNua2NqN0xFNFBkUGFrSFM5Vk5VZFdWM1RzcUttM2VQemMzNFNGamJaSkhaY1JaaTl5d2tkYXdrZGF3a2Rhd2tkYXdrTlNocElvUFMyZjVqLy9FQUVNUUFBRURBZ0FIQ3dvRUJRVUFBQUFBQUFFQ0F3UUFFUkFTRXlFeFFaTUZJQ0lqTXpWUllaR2gwUlF3TWpSU1luR0J3ZUZDYzdHeVUzQ1NzL0JVY25TQ3d2L2FBQWdCQVFBR1B3TCtadDJFWktNRHdwRG5vL0xwb0Y5czdvUGUwOTZQOU5XWWlNTWpvUTJCWEpwN0szV0lRa0h5VnpWN3VBQWdFWkJlbjVWeWFleXVUVDJWeWFleXVUVDJWeWFleXJQd283dzk5b0dsS2loVzU3M1MzblIvU2ZwVnBUZU15bzhCOXZPaFhtaTlJdW5jNWs4TWo4WjlrVWhsbHRMVFNCWktFaXdGRitVK2lPMFB4dUt0UlMwSkVyM20yN0R2SXIxS1oySjhhbXcyNGtwSzMyVk5ncXhiQzQrT0Fma0wrbUI2QTlGa09PTld1cEdMYk9MOVBYWHFVenNUNDE2bE03RStOZXBUT3hQalFTNFg0blc2M203cjBsNk84aDlwV2hiYXJpbkk4bHBMekxnc3BDcTRGM0lMMmRsdzZ2ZFBYNWhtT3lNWjExWVFrZFpxUEJZOUZwTmlmYU9zMDVNZjRYNFcyOWExZEZHUk1keHZaUVBSUU9nRGVqOGhmMHdUL2czL0FHMDcwUFJYT0xQS01xOUZZL3pYVE0yTWVBdlNrNlVuV0RVaUV1Mk1vWGJWN0s5UnBUYXhpclNiRUhVZCswdFF1STdhbmZwOWNIa1FQRXcwZ1c5NDV6OU1JVUJIc2MvSzFvamJXdEViYTBKY3NNNUhKcVR3RjNPQ1ZOaWhuSU9ZbUxqdVdPWklGYUkyMXJSRzJ0T3Z1Q1BpTnBLMVdjMURDL3VjbzhWSVJqcEh2ajdmcGduQklzbDBoNGZNWisrKy9tOVBrMy9vWU4xY2JUbHpoYS8yanpHNlAvSGMvYWNPNXVMMHIvWXJBbTMrbVJmdE8vanBVYkprSVV6OVIzZ1lFYm9KVHhNdE9jKytNMzZXd2hJbml3emNpMzRWemdOZzM0VnpnTmczNFVJczJYbG1Na3BXTGswcHovSVlKY1NITXlVZEdKaXB5U0RwUURyRmM0RFlOK0ZjNERZTitGT011VGdwdHhKU29aRkdnL0xESjNVV25pbVU1SkI2VkhUM2ZyZzNRV2szUTJySkQvcUxIdnZ2MjNtbFlqamFncEtocUlxUE5hdGRZc3RQc3IxaW5ZVWtjQmVoUTBvVnFJb3R5bTd0RThXK24wRi81MGIwZmtMK21DZjhHLzdhZDZBeWd0UlFlTWtxSEJIdzZUVE1PS25GWmFGdXM5WnArVVNNc1JpTXA2VjZ2R2lwUnVvNXlUNWc0MTNJTHZMTkQ5dzY2Ymt4WFV2TUxGMHFUU21ubTB1dHEwb1dMZzBWQ0txT1QvQmNJN3EweXRyOXEweXRyOXEweXRyOXE4c2lGL0s0cFR4aTdqOU1EczZTWDhzNWErSXV3ekMzUjFWcGxiWDdWcGxiWDdWcGxiWDdVRmVSbVFvZngxbFhkb3BLRzBKYlFuTUVwRmdLY2xUSFF5eWpXZGZVS3l5cnR4bTh6TFhzanArUG1zZUU5WkI5TmxlZEN2bFFUUGJYQWQxbTJPanV6MWR2ZFNJZW92QUd1Y0l1MlRYT0VYYkpybkNMdGsxemhGMnlhNXdpN1pOYzRSZHNtdWNJdTJUWE9FWGJKcm5DTHRrMWQzZFNJT29PaFI3QlJUdWN5dWE3cVd2Z0k4YXkwNTdIdDZMWXpJUjhCL003LzhRQUtCQUJBQUVCQlFnREFRRUFBQUFBQUFBQUFSRUFJVEZCVVdFUWNZR1JvY0h3OFNBdzBiRncvOW9BQ0FFQkFBRS9JZjhBVFlqbzRhRFRNME9NVVk2M3ZFdEJaRythQkZ1RCtoWHE5RzVFQ0hOc3U1YUJOUFY2OVhyMWV2VjY5WHBjNVlmMnltWk8wUloxVCtpZ1o0VGdoT0RvL1VUQnU2Ti9OL1hBMzBhNDBTT1FWZXFyQWQyL1NvTUhndXJPbXhHRWhucENBdVczNFVTTHFobGhNU1BnUm8wYnB0c3QzTzZYYWFvYmlWQ0VKTWllWTBERTAzaG0wSFU0eDg5ZHFYSkJSbUVTRGJpdXF5MWJwaXdNTHVIOVhBR2wzT1c3Y3N2NjQvWlJ3VnNvU3VPTStZcWZ1ZVFmTkZDcUp2d3ZVNkxUKzI3K0JoUG5aa0gzT3c5WjhOaFplaGFZbkpIRGJBNW9QQlhuUHl2T2ZsRTJERzh4RmthYkhtUkdJR3NqTWE4NStWNXo4cS9VUEZnbHcwMnBOa1pmSjN6NU5uSHZJQ2ZtRkIzVzYzN2JEYVBNNVlkSTIrV3krdFFGYkp0TjF0c1diY3g2Zm5QQXBYTk9vTGpzVEJEQnVCRWNRdWUwb1lJR0Z0b1VKMnJCTE1pTFFkaG5BcFlNbGFqZXUxQ2hpRmdYa0lTekx0U2dKZGtyRzdZd3dnNFowSHpOQXZSaUpIblNoQ0MyNjcvUkdzY3VYWWMwZnBqVGxMTWRodndkVnYyVWNJTkJyQ2NUK0E0eFZqMWxONWptSzIxYXRFV01kQmUwS2Z3MlFsWDZISU9oZURMUmRic2tuRHFLeC9IU2lKOUJadFJxMHk4eFBOSWNDdlNxZWxVOUtvYlFOaElHK3lHekRkZjdBRUdnVjZWVDBxbnBWTU5JRWp1Y1NnREZEZ1pBVVNXcmJ4WUJpdVZMUWxudkVhc2VCaDlTK1laNWg1dFNHc0RkRkx4c09YR2pVNS9CRm12UHU5ZWZkNjgrNzE1OTNyejd2WG4zZXZQdTllZmQ2OCs3MHlpbjY0TFdCdVFSMXR0Ym9OOVNVNlZHV0J2di93Qk8vOW9BREFNQkFBSUFBd0FBQUJENzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc2b01qZzR4dlAzNzc2bXB6eXl2emVwcjc3NzNqNVQvejVlL3o3NzY0cHY4QXZxLzZJRysrKyt2Yy93RC9BUDhBdGY4QXZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnYveEFBZUVRRUFBZ0VGQVFFQUFBQUFBQUFBQUFBQkFCRXhFQ0FoVVdGQlVQL2FBQWdCQXdFQlB4RDliTWRCcXpNRVVNejJsbjJCaEVScDJCYlVXQ1puaExCeEFweFBLSW1aUTFEOTJjUkR4ckFXb0F0MGl3aHNib0RUSHJwQVJqQ2pXaG01dEdvTXpMOVMvVXYxTDlTL1VYTDlqLy9FQUNnUkFRQUJBUVVJQXdFQkFBQUFBQUFBQUFFQUVTRkJZWEhoSURGUmdaR2hzZEhCOFBGUUVQL2FBQWdCQWdFQlB4RCtzYjMxOXVOWURvN3RQUkZVMEU4NXp2a29kVnZtTjdlNCtLdEpVKzN3N3pKK0dLelZiR0dSWXRWcVcvVEZnWXFCZFAzSUM5VWFGWVhRVkZ1WlAxSVVvMGNJWE5OOWlZNVFEbXlsSGgrT213M0JIaTJYQVN6T3g4ZjR1MTdqRkhrRmJGOVIrZ0lWdDVGdzhaKzR3cGcxRzZ2eUV2QkJPYlpFVWJoZVRZUVNqTngycXE0WVpuZVVWZGVKZnl1bjFHc3JRMUNGbXNxRlVVV1pucWZVYXdCVUxrZTRNSlM0TGJmbGpaeWNPQnk4N0wwS2pjeHFxd2J6dmIzbUs2YXpGZE5aaXVtc3hYVFdGUzE5Q1czbkcxMDVmMlAveEFBbUVBRUFBUU1EQkFNQUF3RUFBQUFBQUFBQkVRQWhNUkJCWVNCUmNZRXd3ZkJ3a2FIUi85b0FDQUVCQUFFL0VQNU52Y1U0WmtpNStBdEtRMEhyQlo3cWVlSnZtaml0QU5lZ3I5TjlVekdNQWpzc2FTR2t4QjZOZnB2cXYwMzFYNmI2cjlOOVYrbStxUE1VSnIvU2l4OCtub2c0b3FtQlBia3NER05zYktTRS9FUzB4VEhBMkZrU3VnRUlRU1dYaGNBc0ZXVmZUUjJDdDFGaEs3RlRKdEFwZUhTREN6SjNmdWhNRVRBdkhRME9MbTlsbzFnREprZWhnd1lORCt4RStXRGxBNzBicDU3b2NJa201a3B0M2Z0ckNNSUlSQkVRYVAwS1V3WFdXdWtPSWt2RDRIRmR3ZFBnbEwxakF1SlYrWStDWUxCVS9pd09BVjJ4WmdNaERBTVlQajFCdElnWWx2QktXL3lORkpCRzJwc20xREE5Z29xd2gyR09BWVQwa0paR25pa0p3MUIySndaQnZSaWJlaEFnN2lKMWx0aWtraUw4Z2prYU1CRlEvd0JuZndjKzdyZFBhWXNKSi92WFBObGdkOEJoYTdSOXNSSjNWSkhLeEd1ZVpGYjFkREVac0syckx6MFpDaW8ya203OGVoQ1Q0RVN0Kyt2S3FKTjd2K2s2QkxKVGRPSFdmaDl2eDNzYlJXZTQ5YU5PRVFoK2R1c2FOUzBFSS9RT1JveUlTbDNuMmhYZDR1b0dIeXFBUUd1VEphRkd6YTdZWkxhWTBtV2Z0ZHcwbDExekJiV1RKdjFEc3NuQ2twSkVkU0lDSmFXUzQ0ZkhReXIrR1RFbnRNOTllTTVkRERjZ0gxUXhFUzVLQ2IydUp6dUZNcVNEUzhTbkNMd2lsbFRBYkNyc283UE5oeVF2eHRGQktCUWhuc0xlRzNKQzlaejhJVjNkQkxLZTdZQ0NwckxSYXZGbTkza1RLVWdYTWtKbFYzVlorQis2c1RGWURZRmJXRGRGQWJBcE1HNG1RYktCRVJCSzRGbnVpRWllU21BRmRLOEo0UUhRelpzek5WeXkvQmNzYjZFbW1DUEo4Sk1pK1o2R2JOblBNMCt4Y3oyRkRVS0JkZ0FBNEtrYUNmT3dDOGFBU3RYcVk2U3Q0Yk1Zb3hBU0IrSjlnd1RGNWlJV21BdE1TVkRZb0tKM0N1ZG1KM1pvRWVKZ2J5WWV6NHYvQVA4QS93RC9BUDhBL3dEL0FQZ2dSTDZ4UWVpb2IwUlYvQmI4anNvQTNiRW1Nall3SlVxQ1ZqK1R2Ly9aIn0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTA0LTE2In1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wNC0xNiJ9LHsiYWFndWlkIjoiOWRkZDE4MTctYWY1YS00NjcyLWEyYjktM2UzZGQ5NTAwMGE5IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI5ZGRkMTgxNy1hZjVhLTQ2NzItYTJiOS0zZTNkZDk1MDAwYTkiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiV2luZG93cyBIZWxsbyBWQlMgSGFyZHdhcmUgQXV0aGVudGljYXRvciJ9LCJkZXNjcmlwdGlvbiI6IldpbmRvd3MgSGVsbG8gVkJTIEhhcmR3YXJlIEF1dGhlbnRpY2F0b3IiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MTkwNDIsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJyc2Fzc2FfcGtjc3YxNV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYXR0Y2EiLCJiYXNpY19zdXJyb2dhdGUiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImV5ZXByaW50X2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmFjZXByaW50X2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInRlZSJdLCJpc0tleVJlc3RyaWN0ZWQiOmZhbHNlLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJ0ZWUiXSwiYXR0YWNobWVudEhpbnQiOlsiaW50ZXJuYWwiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUY5VENDQTkyZ0F3SUJBZ0lRWGJZd1RneS9KNzlKdU1ocFVCNWR5ekFOQmdrcWhraUc5dzBCQVFzRkFEQ0JqREVMTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENsZGhjMmhwYm1kMGIyNHhFREFPQmdOVkJBY1RCMUpsWkcxdmJtUXhIakFjQmdOVkJBb1RGVTFwWTNKdmMyOW1kQ0JEYjNKd2IzSmhkR2x2YmpFMk1EUUdBMVVFQXhNdFRXbGpjbTl6YjJaMElGUlFUU0JTYjI5MElFTmxjblJwWm1sallYUmxJRUYxZEdodmNtbDBlU0F5TURFME1CNFhEVEUwTVRJeE1ESXhNekV4T1ZvWERUTTVNVEl4TURJeE16a3lPRm93Z1l3eEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BYWVhOb2FXNW5kRzl1TVJBd0RnWURWUVFIRXdkU1pXUnRiMjVrTVI0d0hBWURWUVFLRXhWTmFXTnliM052Wm5RZ1EyOXljRzl5WVhScGIyNHhOakEwQmdOVkJBTVRMVTFwWTNKdmMyOW1kQ0JVVUUwZ1VtOXZkQ0JEWlhKMGFXWnBZMkYwWlNCQmRYUm9iM0pwZEhrZ01qQXhORENDQWlJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dJUEFEQ0NBZ29DZ2dJQkFKK24rYm5LdC9KSElSQy9vSS94Z2tnc1lkUHpQMGdwdmR1REEyR2JSdHRoK0w0V1V5b1pLR0J3N3V6NWJqalA4QXFsNFlFeHlqUjNFWlE0THFuWkNoTXBvQ29mYmVEUjRNakNFMVRHd1dnaEdwUzBtTTNHdFdEOVhpTUU0ckUySzBWVzNwZE4wQ0x6a1lidlpiczJ3UVRGZkU2MnlOUWlEanlIRldBWjRCUUg0ZVdhOHdyRE1VeElBbmVVQ3BVNnpDd00rbDZRaDRvaFgwNjNCSHpYbFRTVGMxZkRzaVBhS3VNTWpXaks5dnA1VUhGUGErZE1BV3I2T2xqUVpQRklnM2FaNGNVZnpTOXkrbjc3SHMxTlhQQm42RTREYjY3OXo0RFRoSVh5b0tlWlR2MWFhV09XbC9leHNETEd0Mm1UTVR5eWtWVjh1RDFlUmpZcmlGcG1vUkR3SktBRU1PZmFVUmFyenA3aGthOVRPRWxHeUQyZ09WNEZzY3IyTXhBWUN5d0xtT0x6QTRWRFNZTHVLQWhQU3A3eWF3RVQzMEF2WTFIUmZNd0J4ZXRTcVdQMit5WlJOWUpsSHBvcjVRVHVSRGd6UitaZWorYVd4NnJXTll4NDNrTHRob3plVkozUUNzRDVpRUkvT1psbVduNVdZZjdPOExCLzFBN3Njcll2NDRGRDhjazNaK2h4WHBra2xBc2pKTXNIWmE5bUJxaCtWUjFBaWNYNHVaRzhtMTZ4NjVaVTJ1VXBCYTNybjhDVE5tdzE3WkhPaXVTV0p0UzkrUHJaVkE4bGpnZjRRZ0ExZzZOUE9FaUxHMmZuOEdtK3I1QWsrOXRxdjcyS0RkMkZQQko3WHg0c3RZai9Xak5QdEVVaFc0cmNMSzNrdExmY3k2ZWE3Um9jdzV5NUFnTUJBQUdqVVRCUE1Bc0dBMVVkRHdRRUF3SUJoakFQQmdOVkhSTUJBZjhFQlRBREFRSC9NQjBHQTFVZERnUVdCQlI2akFyT0wwaGlGK0tVMGE1VndWTHNjWFNrVmpBUUJna3JCZ0VFQVlJM0ZRRUVBd0lCQURBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQWdFQVc0aW9vMStKOVZXQzBVbnRTQlhjWFJtMWVQVFZhbXRzeFZ5L0dwUDRFbUpkM1ViNTNKek5CZllkZ2ZVTDUxQ3BwUzNaWTZCb2FnQitEcW9BMkdiU0wrN3NGR0hCbDVrYTZGTmVscndzSDZWVnc0eFYvOGtsSWptcU95ZmF0UFlzejBzVWRaZXYrcmVlaUdwS1ZvWHJLNkJEblVVMjcvbWdQdGVtNVlLV3ZIQi9zb29mVXJMS3paVjNXZkdkeDl6QnI4VjB4VzZ2TzNDS2Fxa3FVOXk2RXNRdzM0bjdlSkNiRVZWUThWZEZkOWlWMXBtWHdhQkFmQndrdmlQVEtFUDlDbSt6YkZJT0xyM1YzQ0w5aEpqK2drVFV1WFdsSko2d1ZYRUc1aTRySWJMQVY1OVVyVzRMb25QK3NlcXZXTUpZVUZ4dS9uaUYwUjNmU0dNK05VMTFEdEJWa2hSWnQxdTBrRmhacWpEejFkV3lmVC9ON0hrZTNXc0RxVUZzQmkrOFNFdzkwcld4MmFVa0x2S284M29VNE14NG5hKzJJM2w5RjJhMlZOR2s0SzdsM2EwMGc1MW1pUGlxMERhMGpxdzMwUGFMbHVUTVRHWTUrUm5aVmg1MEpENm5rK0VhM3dSa1U4YWlZRm5wSXhmS0JaNzJ3aG1ZWWEvZWdqOUlLZXFwUjB2dUxlYmJVMGZKQmY4ODBLMWpXRDNaNVNGeUpYbzA1N012ME9QdzVtdHR5dEU1ODVaSXk1SnNhUlhsc09vV0dSWEUza1VUL01LUjFVb0FnUjU0YzhCc2grOURxMndxSUs5bVJuMTV6dkJEZXlIRzYrY3p1ckxvcHppT1VlV29reFpOMXN5ckVkS2xoRm9QWWF2bTZ0K1B6SWNwZHhad0hBK1YzakxKUGZJPSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFFZ0FBQUJJQ0FZQUFBQlY3Yk5IQUFBQ2tVbEVRVlI0MnV5YWkzR0RNQXlHUXllZ0d6QUNuYUNNa0JIb0Joa2huU0FqMEEyU0RhQVQwRTZRYkVBM2NPWFc2WEVwQnRuSW1Ndjl1dE9sbHhqRi9xS0hMVGRSU20wZ2Rua0FBZ0FDSUFBQ0lBQUNJQUFDSUFnQUFSQUFBUkFBQVJBQUFSQkVBRkNTSklOS2twTHVTVHRTWmJRejc2VzI1emhLa3BGV1BidGF6NlE3NXZQdW9sdXVQbXF4bFpLMnlpNzZzOVJ6bmpscE4ySzdDckZXYVVBSE5TMEhUMEF0dzNZcERTanhiZG9QdWF6aUczdWs1NzljdklkZVdzYlFEN0w3TkFZb1dwS21MeThjaHVlTzVyZUI3S0tLclFuUUpkRFluOUFKWkhjNVFCVDdlbklOWTJoanhycUl0c3ZKV1NkeEZ4S3VZbE9sV0ptRTZ6UFBjc0p1TjdXRmlGN21lNURPQXdzNE95WnlHNlRPc3IvS1F6aURhSm0vbWN5MlYxVjArVDBKZVh4cXFscldDOW1HR3kzTzZ3d0ZhSTBTZFIrRU1nOUFFQUFDSUFCeXFWaVpiKy9wcmdGZE42cWIzMDZqM2xUV3MwQko3NlFqdzBrdE8rM2FkNjBQUWhNcmZNOVl3cUs3bFVQZTRqKy9PUjQwY0RhcUplSit4bzgwSnNXaWgxV1RCQWNiOHlzS3JiK1Rmb3dRS3kzdjU1d2JCa2s0OUZKYlF1c3FyNHNuYWRMOWhFdFhDM25PMUcxSEc2VWZ4SWo1b0RuSmxIUE9WVkFlcldHbXZZUXh3YzcwaGlUaDdCaWR5My8zWkZFNmlzeGY4ZXBOaFVDbDRuNWZ0WXFXS3pNUDNJSXF1YUZucXVYTzBzWjF5bi9SV3E2OVN1SzZHZFBYT1JmU3o0SFBuazFiTlhPMCtVWnplNUhxS0lvZE5Zd25IVlZjT1Vpdk5jU3R4ajRDR0ZZaFdBV2dYZ211RjRKemRNaG42d0RVbTFEcG1GeVZZN0l2UXFlVFJkb2QydjJGOGxObi9nY3BXK3JVc09pOW1BbUZ3bFNvM1B3OUpRM3ArOGJoZ25BTWtQTTYxM0J4T0JRcWMyRkVCNFNtUFFTQUFBaUFBQWlBQUFpQUFBaUFJQUFFUUFBRVFBQUVRUGNvM3dJTUFET1hnRmhPVGdodUFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJGSURPXzJfMCJdLCJhYWd1aWQiOiI5ZGRkMTgxN2FmNWE0NjcyYTJiOTNlM2RkOTUwMDBhOSIsIm9wdGlvbnMiOnsicGxhdCI6dHJ1ZSwicmsiOnRydWUsInVwIjp0cnVlfSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0IjoxMDAsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MzIsInRyYW5zcG9ydHMiOlsiaW50ZXJuYWwiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi0yNTd9XSwibWluUElOTGVuZ3RoIjo0LCJmaXJtd2FyZVZlcnNpb24iOjE5MDQyfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjAtMDgtMDUiLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IldpbmRvd3MgSGVsbG8gVkJTIEhhcmR3YXJlIEF1dGhlbnRpY2F0b3IiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDE5MDQxODAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4zLjYiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIwLTA4LTA1In1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMC0wOC0wNSJ9LHsiYWFndWlkIjoiZDg1MjJkOWYtNTc1Yi00ODY2LTg4YTktYmE5OWZhMDJmMzViIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiJkODUyMmQ5Zi01NzViLTQ4NjYtODhhOS1iYTk5ZmEwMmYzNWIiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiWXViaUtleSBCaW8gU2VyaWVzIn0sImRlc2NyaXB0aW9uIjoiWXViaUtleSBCaW8gU2VyaWVzIC0gRklETyBFZGl0aW9uIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyODk2NSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9LHsibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyIsImVkMjU1MTlfZWRkc2Ffc2hhNTEyX3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwiLCJiYURlc2MiOnsic2VsZkF0dGVzdGVkRlJSIjowLjAsInNlbGZBdHRlc3RlZEZBUiI6MC4wLCJpQVBBUlRocmVzaG9sZCI6MC4wLCJtYXhUZW1wbGF0ZXMiOjUsIm1heFJldHJpZXMiOjUsImJsb2NrU2xvd2Rvd24iOjB9fSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwiLCJiYURlc2MiOnsic2VsZkF0dGVzdGVkRlJSIjowLjAsInNlbGZBdHRlc3RlZEZBUiI6MC4wLCJpQVBBUlRocmVzaG9sZCI6MC4wLCJtYXhUZW1wbGF0ZXMiOjUsIm1heFJldHJpZXMiOjUsImJsb2NrU2xvd2Rvd24iOjB9fV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlESGpDQ0FnYWdBd0lCQWdJRUcwQlQ5ekFOQmdrcWhraUc5dzBCQVFzRkFEQXVNU3d3S2dZRFZRUURFeU5aZFdKcFkyOGdWVEpHSUZKdmIzUWdRMEVnVTJWeWFXRnNJRFExTnpJd01EWXpNVEFnRncweE5EQTRNREV3TURBd01EQmFHQTh5TURVd01Ea3dOREF3TURBd01Gb3dMakVzTUNvR0ExVUVBeE1qV1hWaWFXTnZJRlV5UmlCU2IyOTBJRU5CSUZObGNtbGhiQ0EwTlRjeU1EQTJNekV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRQy9qd1l1aEJWbHFhaVlXRU1zcldGaXNnSitQdE05MWVTcnBJNFRLN1U1M213Q0lhd1NESHk4dlVtazVOMktBajlhYnZUOU5QNVNNUzFoUWkzdXN4b1lHb25YUWdmTzZaWHlVQTlhK0tBa3FkRm5Cbmx5dWdTZUNPZXA4RWRaRmZzYVJGdE1qa3d6NUdjejJQeTR2SVl2Q2RNSFB0d2F6MGJWdXpuZXVlSUV6NlRuUWpFNjNSZHQyemJ3bmVid1RHNVp5YmVXU3dienkrQkozNFpIY1VoUEFZODl5SlFYdUUwSXpNWkZjRUJiUE5SYldFQ1JLZ2pxLy9xVDlubURPRlZsU1JDdDJ3aXFQU3psdXduK3Yrc3VRRUJzVWpUR01FZDI1dEtYWFRrTlcyMXdJV2J4ZVN5VW9UWHdMdkdTNnhsd1FTZ05wazJxWFl3ZjhpWGc3VldaQWdNQkFBR2pRakJBTUIwR0ExVWREZ1FXQkJRZ0l2ejBiTkdKaGpncFRva3N5S3BQOXh2OW9EQVBCZ05WSFJNRUNEQUdBUUgvQWdFQU1BNEdBMVVkRHdFQi93UUVBd0lCQmpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQWp2anVPTURTYStKWEZDTHlCS3N5Y1h0QlZac0o0VWUzTGJhRXNQWTRNWU4vaElRNVpNNXA3RWpmY25NRzRDdFlrTnNmTkhjMEFoQkxkcTQ1cm5UODdxLzZPM3ZVRXROTWFmYmhVNmt0aFg3WSs5WEZOOU5wbVl4citla1ZZNXhPeGk4aDlKRElnb01QNFZCMXVTMGF1bkwxSUdxck5vb0w5bW1Gbkwya0xWVmVlNi9WUjZDNStLU1RDTUNXcHBNdUpJWklJMnY5bzRka29aOFk3UVJqUWxMZll6ZDNxR3RLYnc3eGFGMVVzRy81eFViL0J0d2IyWDJnNElucGlCL3l0LzNDcFFYcGlXWC9LNG1CdlVLaUduMDVac3FlWTFneDRnMHhMQnFjVTlwc215UHpLK1ZzZ3cyamVSUTVKbEtEeXFFMGhlYmZDMXR2RnUwQ0NySkZjdz09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWZDQVlBQUFDR1ZzK01BQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBSFlZQUFCMkdBVjJpRTRFQUFBYk5TVVJCVkZoSHBWZDdUTlYxRkQvM2Q1OXdlUVNJZ1M5QVFBWGNGTEFRWmk5ZnBlVnoxdFkvV1RacjVXeHBjN1c1a25MYTVqSTNaODVzclMybk0yc2p0V3daUzdJVUg0SDR4Q25FUXg0REFaRjc0Vjd1czg4NXY5L2xJbkJ2VkovQjRQdjludS81bnUvNW52TTU1NmZ6QS9RdjBIYi9JclgzVkZLUG80NWNubTRpblVJV1l3TEZSbVpRVXV3akZHL04xaVJIaDFFWjBOUlZSdWRxdDFCZCsyblNLeVMvT2h5czArbGszZS8za1E5cXZENFpVdGE0VlZTVXVZMGVpcHlpVGhBZm9jb09SVmdEdXV3M3FLUmlBZDNyYmNFdGpUallJb2Y2V2FIc0NtelZQV0NNeCtjZ2g4dExxV01LYU1Xc1VqTHFvMlJ0SklRMG9Pem1lcnBRdTRlc1pnc09Oa0d4SDdkMGtkdlRUMTdzNE9NVTdWSThaaGpnR2FNK0FxOWlFTnU4UGlmMXVkejA3TXd2S1dmOEdsVm9DRVkwNFBDNVdkVGFYWUZiUjh2TnZMNSszS2dmYjV4Tk15YTlSYW1KaXluYU1sR1RWdEZscjZiYTl1K3BxbkVYNHVNdVJSZ2pTWUVock43dXRGRmU2bHFhbDdOZmt3NWltQUdIeW5QcGJrOFZtWTB4c3RucHRsRkNWQ1l0elR1Qk44M1FwTUxqVHRldmRQelNVbko3ZThta2p4WjM5ZlhiS0RmbGRacWJ2VStUVWdHbkJWRjZmUTJpUEhnNFcxNlVXVXd2emJrMTZzTVpFK1BuMHB2ejdKU2V1QXllczhsY3BDbWFLdW8vcCtxV3IyVWN3SUFIV3J2UDBZRXpoWEF0TEFic3NIaHA3aUdhbXZ5aWpQOHJ5cXJYVVdYOVhvb3d4eUF1Zk5CcnA0M1BPQkZYWmxrZjhNRFJpcWNweW93QXdwdXoyeCtmV3Z6L0R0ZGU5c21zenlndGNSNkMxd2JkekJsNk9scTVXTllZNG9HYXRoSk1ya1RFeDBqQVJTSEFWcys1cllrUU5YYitRZ2ZQTHNRNmdYeUluc3JlUWZtcG03UlZGWWZMODZuMWZpVU9rWXZTaGtVUHh2YnVrem95NksxaWhNMWhvM1h6VzZFdlNmWEErZHBpV0dhV2QrZG9Yekx6bUd3S1lGTENBc1JBbFBCQWhNbENGWFU3dEJVVlByOEhnVmNKSFdxK0YwMHBscitETVRkclA0enZ4WTExa05NaHhUK1NlVEdnK2Q0VjVMUUppdHlVR0pOQjhWRlpzamdZQlpNL0lJL1hDVGtqMHF5RE9wRjJBVlExN0NJalVwL0RuVDFVa0w1RjVnZGorc1Mxd2cxZ0UzZ2lnbTYwZkNYelNuUFhieUFQYklYditJRHBFMTZUaGFISVM5c2t5aGxtTUU1RjNjZnFBS2hxMkMwRTVQSDFnWWFYYUxQRGtaRzBIREpPbktXSHA1MUkwejVTT3V4OGUxV0F1WnpkSFFyVGtwOFRtalhvSStsYTB3R1pzenVicWJPM2lmUTZBL1c3dlZTWXNWM21SMEpLd2tLYzRXSGlCa21SOEkzQ0NnSTg3b09MNHF6VDVQK1JVSkJlakVPZ0FQSzhoWVB6YXRNK2VJVHAySU85eVRRbWVyb21QUnh4MXF4QWNzaWxlL3ViU2VFYmNXUUdZRUNnaGNMWTJIeUtqb2dqSDI1aE1wanBVdjFPdWdsaTRlaDJlUncwTzMyYkpqa3l1Q2dOemcwdnpsWU1TaVNzMHVvbzRNRzdoTU9qQ0VhWDF5RkUwblN2akJ6dVRuRXBLODZaOElvcUZBSXVidzhrZzlBckVhUkVXU1pJK2pINFhicDZnOUU5RW5KVDNvYVJ6RE4rTVVKQlFESG41NmE4b1VtRUJ1c094QnMvTjUrdEpFYlBrQUZEajhVR3ZPcy9JV3ZjU2dsR0JodlM3L0ZUWWZwV0dZZERZOGZQQXhXU0EzNXNUQzRwNCtMbTRBYXFJb1BlUXRmdWZLNkpoMFpoeGxic1VYT1NtWE5pZkQ1WlRBa3lEb2ZiYmNjbHhuQThXTkFxeENiUk55a2hYeFFwYUR3NjdmWFVZYnNpRzBLaHR2Mm9lSXZoOHJoUU1ZT2NFQXFYRy9lSSt6bmdPYzV5eHI4cTgySUFNMWMvRkxGT3BscXU1ZUZRWHJNWnpHY1ZDalliTFdHNUk0QlQxZXVScmxieHROT3RNaXREREVoTFhJSXluQUF2dU9FV0UzWDNOZEFmdDk0VmdhRzQyWElRdDBaWDZQZUNFL3FRRmU5cks2SHg3WVU1MEt2SDdmVzRmUytxN0tLQkp4c2dnQlg1cFNBR2gxaklyVmg1elE2dzNSZmFhaEJYbS9hQ2JDWlRqQ1VGVVR5V1pxVzlwNjJNakpQWFZxT3JQZ01PNE52NzRHa2Yrb3dmdE5WQkRRbmpGSnFIU3cxN3BYdmhXVzVLWnFlL1E0OU4vVVNUQ0FWV29RWEZJSEJIWFhlM0ZQclVEc3VHRG10Ri9oSEtUSHBla3hoaUFPUEkrU0pxNlM2SEY0STlZV3prQkpUbzQ2aVVNeldwOFBpci9SaWR1THhLWXNTa3NWOHZMbE9RdmhHWDJZbFIwT0JoQmpDK3UvZ0VjdlkwQXBLN1lrNDFOeGpQU1FuV0ZIVEY2NlVyamdldkI4Q3U1YStsMnZZU1JQdHVWRG83M2hoZE1TSG5VWDd0VGpzVlpHeEFsL1dwdGlPSUVRMWduTDI5bVg2L3RSMXRtbGtZajhXNFgrQ1NqV2NVREdZMU5wUy9DN2hTS3FpTUxNL2wyUW1TV1o3M0RkeitnaW84QkNFTllQUTQ2cW5rendYVWJxdkJreGpVUXNXZlpGZ2J1bzNyQWYrd043ak9POTAreW54NFBpM0wrMG5ZTDFTY2hEVWdBUDRnUFYvN0lkMXErMUhTaG11R2tJcVdSUGd5eE1GcVA4SGZqVG5qWHdZNWJRZmJKY3Q2T0l6S2dNSG90Ri9IZTFlZ3NheEhTcUc2d2ZkbVE1eDhOeVRGRnFCY3AyaVNvd0hSM3lrNSszNmhGN3ZYQUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIkZJRE9fMl8wIiwiRklET18yXzFfUFJFIiwiRklET18yXzEiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwibGFyZ2VCbG9iS2V5IiwiY3JlZEJsb2IiLCJtaW5QaW5MZW5ndGgiXSwiYWFndWlkIjoiZDg1MjJkOWY1NzViNDg2Njg4YTliYTk5ZmEwMmYzNWIiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsInV2IjpmYWxzZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImxhcmdlQmxvYnMiOnRydWUsImJpb0Vucm9sbCI6ZmFsc2UsInVzZXJWZXJpZmljYXRpb25NZ210UHJldmlldyI6ZmFsc2UsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjpmYWxzZSwiYWx3YXlzVXYiOnRydWV9LCJtYXhNc2dTaXplIjoxMjAwLCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjgsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4LCJ0cmFuc3BvcnRzIjpbInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi04fV0sIm1heFNlcmlhbGl6ZWRMYXJnZUJsb2JBcnJheSI6MTAyNCwibWluUElOTGVuZ3RoIjo0LCJmaXJtd2FyZVZlcnNpb24iOjMyODk2NSwibWF4Q3JlZEJsb2JMZW5ndGgiOjMyLCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6MSwicHJlZmVycmVkUGxhdGZvcm1VdkF0dGVtcHRzIjozLCJ1dk1vZGFsaXR5IjoyLCJyZW1haW5pbmdEaXNjb3ZlcmFibGVDcmVkZW50aWFscyI6MjV9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMS0wOC0wNiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjg5NjQsInVybCI6Ind3dy55dWJpY28uY29tIiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZdWJpS2V5IEJpbyIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjEwODA2MDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjMiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMS0wOC0wNiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjg5NjR9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjEtMDgtMTAifSx7ImFhZ3VpZCI6IjA1MGRkMGJjLWZmMjAtNDI2NS04ZDVkLTMwNWM0YjIxNTE5MiIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiMDUwZGQwYmMtZmYyMC00MjY1LThkNWQtMzA1YzRiMjE1MTkyIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6ImVUb2tlbiBGdXNpb24gRklQUyJ9LCJkZXNjcmlwdGlvbiI6ImVUb2tlbiBGdXNpb24gRklQUyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjo1LCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH0seyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sImlzS2V5UmVzdHJpY3RlZCI6dHJ1ZSwiaXNGcmVzaFVzZXJWZXJpZmljYXRpb25SZXF1aXJlZCI6dHJ1ZSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlEZFRDQ0FsMmdBd0lCQWdJSkFJQ1VUdmtndGo1Q01BMEdDU3FHU0liM0RRRUJDd1VBTUZFeEN6QUpCZ05WQkFZVEFrWlNNUXd3Q2dZRFZRUUtEQU5FU1ZNeEN6QUpCZ05WQkFzTUFrTlRNU2N3SlFZRFZRUUREQjVIWlcxaGJIUnZJRTExYkhScFFYQndJRVpKUkU4Z1UzVmlZMkVnUTBFd0hoY05NakF3TnpBM01UUXpOekU0V2hjTk16QXdOekExTVRRek56RTRXakJSTVFzd0NRWURWUVFHRXdKR1VqRU1NQW9HQTFVRUNnd0RSRWxUTVFzd0NRWURWUVFMREFKRFV6RW5NQ1VHQTFVRUF3d2VSMlZ0WVd4MGJ5Qk5kV3gwYVVGd2NDQkdTVVJQSUZOMVltTmhJRU5CTUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUF2QUtPZXFDNS9wMEQxaXNDWUtRSmxWVU9yQjZJN0RMb2N1bkUvUm04ZHVHVGJ5eFFodDNDYkZWVHYzTjJMcDJmYmp4bEkrM3NPU0drMzNGVFlrVHF4Y2RKSXJKN1Nza0JjVVNOcmZLT2FRVC82S1FjUDRDbTdWKzY1NVRxK1RXeHl4V1FoRHlndDE1cW9QN011SzZiVDlTd3BDanBmS2hhTVNteVFhTW9VY1JBYkxxZHpCQ2FjMGh6QitaZStncUpsbldWOVVhU0kyckZzVnVINFpFMGNSTytNT3BhTGdNL3MyNDhuR0dIcDIyZXdTUWZiblBhQmJiOGlxeUFQK2N1NTJHTHNVcEtSSmViRStSNitQTVE5SkNkV2VRWlIzRGtmU2lka3YzbWNiNGpxMWlJdGErTXFLaFJud3JmWGg5MTFLV0xuWUFsOUVOQ2hMWDBjNlNqMVFJREFRQUJvMUF3VGpBZEJnTlZIUTRFRmdRVVdMdmhSQlVQbjh1TElmNjgrZ3YvTlpJd0dTSXdId1lEVlIwakJCZ3dGb0FVV0x2aFJCVVBuOHVMSWY2OCtndi9OWkl3R1NJd0RBWURWUjBUQkFVd0F3RUIvekFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBRkxyRGhhZWdlS0h4WWpIM0VQM3ZVQktobnpNMjA2QVN4Z2VZQ08yRWM5cE9sWUphZXFGRStzVWFtVVYvcHdqRGxxTmFTZ0ZneTdUd2VZa3ZPbU1uNHFTY3NIcXZKM3pHT0FpYWZ3YWgxdlVIZkNsWFI4K2F4TzJpR09VRjBKS3JaOVlZamJBYTUvNEhDbHY3akZQT2RNV1RPUXluZ29pSEFzM2prdVlqcENMRmxCNFZPaTNkMXdqQTFwblRkQktrQWI3dDhuVHZ3Ky9YYkZ2Y1FhNzNWSDdzanZvQnFEM2ZkTWZSY3VWcTRxVVp0WlQ2Y0dhZ1RIRDYxVHRxaDlvTUNaWGNEYlIxUEdabk5icXljc1dQRElLMG5wbUszLzNsZlY4Yytac3J5NmUxNzBtZkpNWnA3TzhtNkNTejYvVkxLK3lESmQ3ODQxd3BtZUtUZjZJblpBPT0iLCJNSUlDNlRDQ0FkR2dBd0lCQWdJSkFKYlR5cnUxWC9JUE1BMEdDU3FHU0liM0RRRUJDd1VBTUNNeElUQWZCZ05WQkFNTUdFZGxiV0ZzZEc4Z1RYVnNkR2xCY0hBZ1JrbEVUeUJEUVRBZUZ3MHhPREEyTVRJeE5EUTFOVEJhRncweU9EQTJNRGt4TkRRMU5UQmFNQ014SVRBZkJnTlZCQU1NR0VkbGJXRnNkRzhnVFhWc2RHbEJjSEFnUmtsRVR5QkRRVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNVmpLSFdwYkQ3VFNsTXhvY2pUbDZuSWY3eDMyUG1zUTl6R3VMR0dxQTBVUVpvSXEzWEx6TDZMWVV2SjVBNWcwdXlGR2xsSEVmR0FLckVhQ1E4RlZ2UFMvVWgwRnlmeldoUkF6aVRTaWpqTUlJVmpqalV2OW05dkZtY1hTY2dIaWc3T2R6ODg1OFYwa3JOSDk5cUdtM3dqZ2FPZXJUV210K2pYQ1VmbjAxSWtUUHd4RzJIbGdFZDQ1ak5MU1Y3Vm9vbCtLZThFMmtpNGxFa1RlSHpib3VsUjVHVWJwM25NaTdFNDdWTVFhM2JOd256V0Jic2FCU1NRaExrM201SGFLaGh4YTZ3SkRLNDdOaU1Da0NrZElIdVdTUUxWQWZtODVVQU9OdEVPUHdpME91SzNxYmU4eUtPRkdmMEtoQjVNTWVBeW03TVYvTTRXMGE0OW9nUEQ5cE1DQXdFQUFhTWdNQjR3REFZRFZSMFRCQVV3QXdFQi96QU9CZ05WSFE4QkFmOEVCQU1DQW9Rd0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFKV3o1eExNazVXTlliQWI2eU94RUNCb1oyV2VCL3FsNFZKM08vMy90TnN4T1luekxlV281NDB6UWg5ckFtYXh6N2V1bUJsc2tNcTR5R1BTTlhCOXljV0dIZ2tjQ2VTek4yd3Y4Q0l6REJzMm9CWmpUTms2NUxCWkRzc1RPQnRNVy8rdVRGSFFmYnVPM0lTTGhJMERYZlJFaTlORE0zamZrMTF4SGNzZmgyUk1WK1FkTmZ3VmFaWnJDcStvdUcrRXZrdjdLcXErb3l1MFZGTS90ejY4VEdsNnlsaFBGUjFxaDl3dHRwVmpBT09DRVFDTHFQMmRQMjhsd1lCeUNxSFFxVkh3YnVqdi9MWmpabktXM0xZbmRaaXhQUFNSQ0pzc0REd0p2aC9mNm5UeGc5WkUrL0pjWXJlNUNhSThuelZIYVNPQ2pOSjdGelVMRzY0SmlXT3ZRNTA9Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQVF3QUFBQWdDQVlBQUFEbmxVWnFBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRW5RQUFCSjBBZDVtSDNnQUFBQVpkRVZZZEZOdlpuUjNZWEpsQUhCaGFXNTBMbTVsZENBMExqQXVNakh4SUdtVkFBQUsxRWxFUVZSNFh1MWREWEFjWlJtK05PQWZLb2c2V08wUWNyZVgzTzcxUjQxb0hkU3FxREFPZzMrY1lFWEJvbFhSVEVuMjIwdGFLVGM2NG1nQnF6QmlFVVZwQmRxaXd3aHFTZElTMnVwWVNndlJ0cFRTY2tsald6SGFnanBTUmRyNHZMdHZqcnZrMjd2ZHZkMUxqbjdQekROM3QvZCs3L3QrZjgvKzc4YUswTkRhYXIycU9kWFpvcVd5SDlSMGEwRmN0NjdXZEhHVFpvalZDY1BxU2VqVzFvUXVIc095L2VCVHNEbU0vNTRaVDlqK0xXR0lnN0RmQi9zQmNEUHNmNFhmUDhYM2IydUcxWkhRelU4bVV1S2R5V1RIbTVxYWNpL2pIQUtCeWlmMGJCcitMd2FYSVBZUGtNZHFmTDhYZFdwbHMxQUEzMS9Rak93OThMOFM5YjhCWElSMituRGM2RG96bHNrMHNsbmtRTXhrUEdYTzlFSnRWbllHRjRzVXlWbmQ4VVRhZXA4YncrNkxha0JqNWl6ZGJOSlMxcnhFV255V3hnMzZFbVBkV29QUERlamY3ZUFUR01zSGFEelR1QzZoYmowTi9wWG1Bc3J1Z3MwV0xQOE51QkpqWkptV0VsY2wwOW1QSjFKbVcwdEw1K3VpSEJ1R2tYc2xqWDg3bmk0RXpWbms5QXZrc1FuNTdFU2RockI4Qk11UGpPV1AvLzRPSHNSL2U3RDhZZFRsZnRSaEZmZ2RMRzlIdTF3QWZ6cjU1akFPa2lRS2h2VmJHQjZDMC8vaSsyaU5lUng4RmdudlJmeGZhaW56U2s3TkUwaUlVUGJmNDN3V21OVE5kN0JwS0VBN0xaZkZBWTl6cDN5WlRTTURpUVZpL1UrU2c1UVlBSWZPbUcyZXdzVWpBL3JoVzdMNEJlcm1qOWgwVW9CMk9CK1RaVFc0Qi9rOE95Ry95Q2lPb1cxSVlINkg4WFB6OUxiY0t6aWxRR2hwTVp2aFp5SEd3RzNnNDJCazg1WjhvOTBHOFgwTmlTczFJdjJRR2s4S2RXc3p0NHNuSVA4UnFSOW1EUVhESWRaU2JCb1owSWwzUzJPWFpYWXBGNDhNVTE0d25LMWJlVzQxcEwzRkVRQ0psUFZXdERHMmZ1eVZyTlIzdEJUZFNqQjhZcklGb3lWdG5vMk9DekJneEROQkI2cFhLTUh3eGlEOWdLM0tjNlBja3ZCR0pSaStNY21DMFlENGZkSzRYb2g5Vy9ZVENaUmdlS052d2Noa0d0RzJlMlcrYWtzbEdMNHhtWUpCYXhscFRJK2tOUlFkbUdSM29VTUpoamY2RlF3NmNDcnpVM3RDTUxEV3VRc2QzUitBdzNLbkJRNUt5bmpoamR4T25uRGlDRVp1R2pyc1lXbE1KdHBpV1VLM0JtVC9GZkV1ZGhnNlVQZTZGZ3owYlI2ZmE2TW1uWTNrbER3aGFZakxVVTZlczI3dDBnenptN1ZnVXU5NkQ2ZmtIeENhNjJVVkdDTXE4ZzAyalJRbmltQm9SdllpYVR3bTJudGZXOXZDazdXMGRZSHMvd0oxNjNrNmVNWnVRMFc5Q3diRzlLMXNPcVdBdklVMFg1dGlEWnROYlNqQmNHRUVndEhXZHN2SjhFMm5BdVV4aWJwNWhXTTkyb0RmMnliOFgwS3gzckVORjBvd29nSG0waEpwdmphVllQakNpU0FZaWJUMWVXa3NKaWJDay9QbTVVNWljOHJ4UXBsZE1SUHA3SGxzSGhxVVlFUURKUmdoNHNVdUdIU1JEK3BJVitUSjR4SDFMRzlkakNIVGlNbFI0VmlHMkU3SFJiaEFLRkNDRVEyVVlJU0lGN3Rnb0oyejBqaE10SE9lamwyd2VRRlkvbEdaZlNuRmZEWVBCVW93b2tIQ01CZEw4N1dwQk1NWEtncUdJUzV2VHB0bmgwWFUrMDVabkFKREZBekQ2RGdkL3A2V3htSEdEZkZGTmgrSDBRYjB3YU95TW1PRStPVU5JL2NTTGxBMTZsMHcwRjY3NDdxNHBScEdjZHFhN2t1UjVVdEVINDVnRG13S2kvRFpqOC83SUVTMzRyT3plYWFZeldsVWgzb1JqSm96Uk1Hb09BRU5hMGkyZFRHR2VFcDhURkptUER2WXZHclV1MkNFUWJxaGtzT0ZCc3lsaTJXeGFzVGo2TmQxMnBzWHY1N1RDUVlsR0M0TVNUQmFXNjAzb28xZGI2cXpxVnRmWW5NNTZBcEJ3OW94b1Z3Uk1ZbEdOSzM5MVZ5aUtpakJpRVl3bWxQZExiSll0U1RhN3FIaUErdStvUVREaFNFSkJ0cHZoZFQvR0hXeHY5eld4UmkwdFBpRXRId0p4YlZzWGhXVVlFUWpHSFJ3R3VPaDBnVjVrVE9lTWkvaGhQeERDWVlMUXhDTXMxcXRWZ3p1OHJldnB5eVBqd0h3c3BWaC9TdVZXaktkQ3dTR0VveW9CQU81cDgzM29wK2VrOFdzRmRGK3dhOFNWb0xod2hBRUEzN1dUUEJiUkhUY0FleEd2SlROSGZRTU5jZjZCcytQOWVibnhmcWVQSldYMmtDWnpIZ2ZFeGpDR1FJbEdORUpCc0YrRUpFdWRzdmkxb2JpVDV5S2Y5U05ZT2pXWmpUeWZhSFJ1ZDlBSG90WXBXQTROeHFKWTFMZlROVDVLMndlaTYwZk1pQVVENEtqQmZibWo4YjY4c3RqMnc3YUQycWhmVS8weHk2WnJ6SFMycXVscFRObCt3eUl1aGNNakJVNjYxUU5tMmN1UG9QRFJZVFJCanBiUjJNQU9WOUhaek9ROTgvdy9mWXdpUEh0ZmplMGJ2MkZrL0NQZWhHTU9yc09vL0x0NjdvMVhEZ1Z1aUUvQndMeGp4S3hLT1hHMk02ZHRpMzZ3OE9SZG5HUDdUY2drRnVkQzhiVXZBNmpsa2lrTzgrVHRnMklNWFNZemZ4RENZWUxxeEFNTDdldm83N3R0bkYvLzBuWWt0Z2hFWWx4SExxYXpKMnRqRXFiczlpeVNXWG4ydjREUUFsRy9hT3NZQmpXQVRiekR5VVlMZ3dzR0xscEtMdFY2cE5KSFZaNFlITGYvbmZKQldJQ2gySGRRRVhpNmV3bE1yOGxkSjVIWXR2N2hSS00ra2M1d1VENzdHVXovMUNDNGNLQWd1SHA5R2RLWE1YbUVJeDh1MFFjWFBqWWErMHltVXdqMnV0eHFlOGlvbzRYMnZZK29RU2ovbEZobCtTUGJPWWZTakJjR0VBdzZIb0s3QTZVbmNpbzU4R21wc3RlZUIxRDc5Qlg1ZUlnNGYzRHAzT3BHT0xNbC9rZnh4Mnh6RnJmajhWWGdsSC9xTEJMc29YTi9FTUpoZ3NEQ0VZaVZmNzJkV2JwSmR3OSs4NlJpc040OWc3dWgzVmhGNFBGNlFtSi8xTHExZ0l1NGhtVkJBTVQ5dTd4NzB3SmcvVFlmVTZoTEpSZ1ZFYUZYWklIMk13L2xHQzQwS2Rneko1dG5nS2ZCNlMrbVBqLzBJd1pIUy9uSWc1R1J4c2hCZ05Ta1NqbFlpNVJBUHJ1VWxtY1ltSnkvWG5HM0hFeEs2RGlGa1pFeEJqWXlDbVVSU1hCUUR1UG9BNWJvMmJTeUw2ZFUvSUUzaXFVbmdZTm0yZ0QxN04wK0c4VnArUWZTakJjNkZNdzRycGxTZjBVRVRGTk5pOUZ6L0RNV0cvK2lFUWtIUGJtTjhTMmJadDQrYmh6ajBuNUozaUJkRnMxbC9BRTFMMnVCYU5XVE9yaUE1eVNKeUR2NzhyODFKeWVyeTZXUUFtR0MzMElSdE9jM0dsb3A4TlNQMlBVeFZObDEvVHI4cTJ4dnZ4NjhQa2lzZmduZmw4ZjZ4OTBmUVVsNG41R0dxK1l1amh5NXF6dTEzQ1JpbENDNFkxMUtSajBXa2d0Ri93bVJTVVlMdlFoR0Y0bUdBYUxZUFB5MkRnMFBkWXo5SDdzcHN5TjlReFVmQzBpWGZ5RlB0b25pMWxNR3F4Y3BDS1VZSGhqM1FrR3hDS3BXKy9tZElKQkNZWUxQUW9HdllRYTl1WGY3MWxwNjZKS2xIdDgvUXNVUiswWFRYdUFFZ3h2ckEvQm9MZnIyUWZIci9HemxlbUtLU01ZdW5rSFRTekVsTDQrc0ZhQ2dmbytCKzdXak96bjJMUXNuTmNHaUQxVVR1YlBvZG5GNXBHQXpwZ2d2dXRXQnVyNkg3dE91cmlVaTVRRlhTV0tNdC9IQk41RWF5WFVyK3c5TWNFcGp2R0s0dmZJYndWZHc4SXBsQVdOQlpTNUR2V2hONVhuNGVkb3FkOG9pRnl4MndrK2l1LzBJdWlsOUt3VFRza1Q0bWx4RHRyelJtNVhqUFVvMnBYZTZHNDlnanh2dytmQ2hOR2hjZmh3UUM5amFUTEVHOXhvR0ZlV3ZpWStVdVNtMlErY29YZHk2TllpTk93eVZQckhHQmgzSm96dVVDc2VUNW1YUWZGL2poZy94T2ZYTmQyOGdqbzBhSDNwTEFsTk5HZHRMNVlpNTV2UWdiZWo0KzZnLzlnc01xQU9IM0hhU2Z3RWJYY0R2bWVUaHZVcFRlOTZ5NFF6TTc2UW05WTBaOUZwZFBjbTZ2TnBzQXQ5c3R4cE8rdlg0RWJFMjBvVENjc0dTb25sK0IvZjZXYS9WY1Y1MGFTUHg3dE9EZUVCeGcxMHh5K2Rrb1hnZkFneEZpRGUxOUFPMzBNL3JFUU85eUxtQTRpL0JiKzNsK2Jua1BJSE40UHJVTCsxK0Z3QjIydmhveDFpZjFHODFYcGJ2QTI1WmpLK3IybHhSMjRhMWQ4UlB6RWZ1d29XY3NFV2lKTXpZaitJM3crVnRLc2hIZ0gvQVBaU25xalR6Zmk4eGg2N3VuVXVQZHJBMjhOeFlySC9BejN0STRqNStUT0xBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMSIsIkZJRE9fMl8xX1BSRSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJtaW5QaW5MZW5ndGgiXSwiYWFndWlkIjoiMDUwZGQwYmNmZjIwNDI2NThkNWQzMDVjNGIyMTUxOTIiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjp0cnVlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsIm5vTWNHYVBlcm1pc3Npb25zV2l0aENsaWVudFBpbiI6ZmFsc2UsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjp0cnVlLCJhbHdheXNVdiI6ZmFsc2V9LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjk2LCJ0cmFuc3BvcnRzIjpbInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XSwiZm9yY2VQSU5DaGFuZ2UiOmZhbHNlLCJtaW5QSU5MZW5ndGgiOjQsImZpcm13YXJlVmVyc2lvbiI6NSwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjQsInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjoxMDB9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMC0yMyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjo1LCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6ImVUb2tlbiBGdXNpb24gRklQUyIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjQxMDIzMDAyIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMTAtMjMiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6NX1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNC0xMS0yNyJ9LHsiYWFpZCI6IjAwMjQjMTUyMiIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFpZCI6IjAwMjQjMTUyMiIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJHK0RGYWNlS2V5c3RvcmVBbmRyb2lkIn0sImRlc2NyaXB0aW9uIjoiRytEIEZhY2VLZXlzdG9yZUFuZHJvaWQiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJ1YWYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoyfSx7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9kZXIiXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX2RlciJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmFjZXByaW50X2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJzb2Z0d2FyZSJdLCJhdHRhY2htZW50SGludCI6WyJpbnRlcm5hbCJdLCJ0Y0Rpc3BsYXkiOlsiYW55IiwicHJpdmlsZWdlZF9zb2Z0d2FyZSJdLCJ0Y0Rpc3BsYXlDb250ZW50VHlwZSI6ImltYWdlL3BuZyIsInRjRGlzcGxheVBOR0NoYXJhY3RlcmlzdGljcyI6W3sid2lkdGgiOjU0MCwiaGVpZ2h0Ijo5NjAsImJpdERlcHRoIjoxNiwiY29sb3JUeXBlIjoyLCJjb21wcmVzc2lvbiI6MCwiZmlsdGVyIjowLCJpbnRlcmxhY2UiOjB9XSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUJtRENDQVQwQ0JHUWRQUjB3Q2dZSUtvWkl6ajBFQXdJd1ZqRUxNQWtHQTFVRUJoTUNTVTR4Q3pBSkJnTlZCQWdNQWsxSU1RMHdDd1lEVlFRSERBUlFWVTVGTVFzd0NRWURWUVFLREFKSFJERUxNQWtHQTFVRUN3d0NSRk14RVRBUEJnTlZCQU1NQ0VGVlZFaFNUMDlVTUI0WERUSXpNRE15TkRBMk1ETXdPVm9YRFRRek1ETXlOREEyTURNd09Wb3dWakVMTUFrR0ExVUVCaE1DU1U0eEN6QUpCZ05WQkFnTUFrMUlNUTB3Q3dZRFZRUUhEQVJRVlU1Rk1Rc3dDUVlEVlFRS0RBSkhSREVMTUFrR0ExVUVDd3dDUkZNeEVUQVBCZ05WQkFNTUNFRlZWRWhTVDA5VU1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRVNJcEkvZEtZQ0RZaHp3RDJ3U2ZZQU9iL25OYWlQY1dGMjF2eFprL1RnRDBPSnRjRCtPUG02NG53WmRGV1NFWVNXN2lPcW5wbUp5ZGU4bWdyL3RuQWl6QUtCZ2dxaGtqT1BRUURBZ05KQURCR0FpRUEzYnZoYXpRRlB3bXlYbHhLL3hDWGZoN2cxWDFFb2JMQzNMKzJHT1J4cDdnQ0lRQ2ZORVRYL20yQmViUkxYSTRMTVAxRVFHUFhGRGY3T2s3NFU3eGJpTTRWa0E9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LC85ai80QUFRU2taSlJnQUJBUUFBQVFBQkFBRC8yd0JEQUFNQ0FnTUNBZ01EQXdNRUF3TUVCUWdGQlFRRUJRb0hCd1lJREFvTURBc0tDd3NORGhJUURRNFJEZ3NMRUJZUUVSTVVGUlVWREE4WEdCWVVHQklVRlJULzJ3QkRBUU1FQkFVRUJRa0ZCUWtVRFFzTkZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlQvd2dBUkNBRElBTWdEQVNJQUFoRUJBeEVCLzhRQUhBQUJBQU1BQXdFQkFBQUFBQUFBQUFBQUFBY0lDUVFGQmdJRC84UUFHd0VCQUFJREFRRUFBQUFBQUFBQUFBQUFBQUVEQWdVR0JBZi8yZ0FNQXdFQUFoQURFQUFBQWF5ajZGNXdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRWdkM2VEVDV4TEozNnhGb2M1bDhsR1BTWEtzek5ETTA5TlZkTis4UDhaZExLQkhwaWUrdmhUdW9mTlhOQXZtK015VW1SbjFkUVpnQUhNNGN3MUxpY1AxVkxlUXVqVHpKMmRKTTMzNXBoYWFVamVhYktVUnZkVjdTWjFkVFM2U3VGa3dRL2JIcjc2NXQyRjFtZGs4N05QcUUrU1l5SFIxZ0FMQjE4bHZ5VGVqUFhRcW11Z3NnWWRWVnAxeWFIZlhMVzN2VVFrMnBhSXFkNU1yWXFJUGZqZExObVRZeTIrQ1RveHNiNkl0dFN1NmxBOUJaSEE2cW9BQnlPT05IUDJwUGVuanJzLzhBeG1uY1liTENpYTZ6MHhTbWFadDlIUk1sVVJ2ZEYrcXpvWXVzM2xkS1YxdTZpYW0zdDdQcnRKbjBHZW51L0E5RFdHeHhBQUFldjhneFhLay9PWnFjOUptYktscE16Wkdrek5rYVRNMlJwTndNNkVyaDFqOHcyT0lleUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVAvOFFBS0JBQUFRTURBd1FCQlFFQUFBQUFBQUFBQlFBRUJnSURCeFVYSUFFUUV6WVJFaFl3TkhBMS85b0FDQUVCQUFFRkF2NmJHSVNSbE5ZYkZnVVpTM0ZNbWxQZ3RLVzJiZlNMckUxUFN1VytDMHZCYVhndEx3V2w0TFNjaUdMeWsxaWdPUnBrc1FJeGU5K0dBUW1xVVBHN2UwMHNQbjdZYTNlNWRCdHE5NXhhT1pZSEZBeXhKN2NwQmt4aEhpMjg0dGJ6aTF2T0xUSExRSjNXMWQySDFoNnlzRVdzNWgxeUtFT2JScmNmT2dZaXlCRlNXUXQ0eUtQU0Y3STN2REVudHl5Zjd0d2pjb2ZSaDRDTk41QU1sQUszSXdseTNWWnVjc1ZNT2oyWExMUm1wOUkrMUdKajFkTzBoNWJTSGxBb0NWanA5VFhIaFk5SmRwRHkya1BKeml3NDBiZHNPbWFtNWRaSFlkQjh3NVlZK05lVTQrcnBMdXpiOWJtZS93QVB0alg2dnZWWmYrUHV2bGk0aDBZUzlaZENWTXozYW5Kc2pvcDNQa2kzUGtpeDVOVEI2UktkVG8yRmxHNThrVzU4a1YvSkVoZFdPMkhBbFY0Z3Noa09oS1g4ckYrdHJmalJ5MUl3eDRHMmtReVNSUi9GM1hERW50eXlmN3R3aXNOZlNseUlGTndnK1lTR2lOQTZxdXRkWE9FVEc3RTM3QiszS05MN2UwNnRQY1h4OTVYdENDVzBJSmJRZ2tCZ0F1T1AwYXgwSlBFdG9RUzJoQkxhRUVtT000K3hydFdxTEZzb1ZhaG1VeGxsNldFdnd4NlVrSXpmQzVlR1BLVzhxRE9xZGRHclhScTEwYXRkR3JYUnExMGF0ZEdyWFJxMTBhbk10Q3RLVGVZQjdXazlKSDhrYy8wMy84UUFIUkVBQWdJQ0F3RUFBQUFBQUFBQUFBQUFBQUVSRWdJUUlDRXhVUC9hQUFnQkF3RUJQd0g2eXhrNlJLRjdxVVNoNHp5ZlMxREVtWkVQV0xNdUM5TXRXUlliZ3NodVJlbVhuRk9TcFZpeFkxSlZsV0pRTnp5c1dMRml4WWJuN0gvL3hBQXVFUUFCQXdFRkJnVUZBUUFBQUFBQUFBQUNBQUVEQkFVUkZTRlNFaFFnTVVGUkV5SXlZWUVRSkZCeDhEUC8yZ0FJQVFJQkFUOEIvTFZsZDRQa2o1cjdpcHp6ZFIwbFF4czdpcXIvQUFQOUtPTTVYMlF6VzUxT2xiclVqbnN1b0srV0Y3anpaUm1NZ3NZOHVDVS9DamMreXBZdDZtdUw5dWhGaGE0VnZVR3RsVTFNSlFrekVyT2tHT1YzTjdzbHZjR3RrRW9TK2g3MWFGTXhnOHJjMlZsU3ZlOFh6d1ZZN1VCc3lzczJHWjJmcjlNTG03dC9mQ2tzNldNWE4zYkpRUUZVRnNBc0xtN3QvZkNvYVk2Wm5ZK3FxellJQ2QxWlkzelgrM0RWVTVVc20wUExvb2JVRzY2VmxpY0h1cDdRaGtpSUc2cWhuQ25rY2o3TEU0UGRQYWtIUzlWTlVkV1YzVHNxS20zZVB6YzM0U0ZqYlpKSFpjUlppOXl3a2Rhd2tkYXdrZGF3a2Rhd2tOU2hwSW9QUzJmNWovL0VBRU1RQUFFREFnQUhDd29FQlFVQUFBQUFBQUVDQXdRQUVSQVNFeUV4UVpNRklDSWpNelZSWVpHaDBSUXdNalJTWW5HQndlRkNjN0d5VTNDU3MvQlVjblNDd3YvYUFBZ0JBUUFHUHdMK1p0MkVaS01Ed3BEbm8vTHBvRjlzN29QZTA5NlA5TldZaU1Nam9RMkJYSnA3SzNXSVFrSHlWelY3dUFBZ0VaQmVuNVZ5YWV5dVRUMlZ5YWV5dVRUMlZ5YWV5clB3bzd3OTlvR2xLaWhXNTczUzNuUi9TZnBWcFRlTXlvOEI5dk9oWG1pOUl1bmM1azhNajhaOWtVaGxsdExUU0JaS0Vpd0ZGK1UraU8wUHh1S3RSUzBKRXIzbTI3RHZJcjFLWjJKOGFtdzI0a3BLMzJWTmdxeGJDNCtPQWZrTCttQjZBOUZrT09OV3VwR0xiT0w5UFhYcVV6c1Q0MTZsTTdFK05lcFRPeFBqUVM0WDRuVzYzbTdyMGw2TzhoOXBXaGJhcmluSThscEx6TGdzcENxNEYzSUwyZGx3NnZkUFg1aG1PeU1aMTFZUWtkWnFQQlk5RnBOaWZhT3MwNU1mNFg0VzI5YTFkRkdSTWR4dlpRUFJRT2dEZWo4aGYwd1QvZzMvQUcwNzBQUlhPTFBLTXE5RlkvelhUTTJNZUF2U2s2VW5XRFVpRXUyTW9YYlY3SzlScFRheGlyU2JFSFVkKzB0UXVJN2FuZnA5Y0hrUVBFdzBnVzk0NXo5TUlVQkhzYy9LMW9qYld0RWJhMEpjc001SEpxVHdGM09DVk5paG5JT1ltTGp1V09aSUZhSTIxclJHMnRPdnVDUGlOcEsxV2MxREMvdWNvOFZJUmpwSHZqN2ZwZ25CSXNsMGg0Zk1aKysrL205UGszL29ZTjFjYlRsemhhLzJqekc2UC9IYy9hY081dUwwci9ZckFtMyttUmZ0Ty9qcFViSmtJVXo5UjNnWUVib0pUeE10T2MrK00zNld3aEluaXd6Y2kzNFZ6Z05nMzRWemdOZzM0VUlzMlhsbU1rcFdMazBwei9JWUpjU0hNeVVkR0ppcHlTRHBRRHJGYzREWU4rRmM0RFlOK0ZPTXVUZ3B0eEpTb1pGR2cvTERKM1VXbmltVTVKQjZWSFQzZnJnM1FXazNRMnJKRC9xTEh2dnYyM21sWWpqYWdwS2hxSXFQTmF0ZFlzdFBzcjFpbllVa2NCZWhRMG9WcUlvdHltN3RFOFcrbjBGLzUwYjBma0wrbUNmOEcvN2FkNkF5Z3RSUWVNa3FIQkh3NlRUTU9LbkZaYUZ1czlacCtVU01zUmlNcDZWNnZHaXBSdW81eVQ1ZzQxM0lMdkxORDl3NjZia3hYVXZNTEYwcVRTbW5tMHV0cTBvV0xnMFZDS3FPVC9CY0k3cTB5dHI5cTB5dHI5cTB5dHI5cThzaUYvSzRwVHhpN2o5TURzNlNYOHM1YStJdXd6QzNSMVZwbGJYN1ZwbGJYN1ZwbGJYN1VGZVJtUW9meDFsWGRvcEtHMEpiUW5NRXBGZ0tjbFRIUXl5aldkZlVLeXlydHhtOHpMWHNqcCtQbXNlRTlaQjlObGVkQ3ZsUVRQYlhBZDFtMk9qdXoxZHZkU0llb3ZBR3VjSXUyVFhPRVhiSnJuQ0x0azF6aEYyeWE1d2k3Wk5jNFJkc211Y0l1MlRYT0VYYkpybkNMdGsxZDNkU0lPb09oUjdCUlR1Y3l1YTdxV3ZnSThheTA1N0h0NkxZeklSOEIvTTcvOFFBS0JBQkFBRUJCUWdEQVFFQUFBQUFBQUFBQVJFQUlURkJVV0VRY1lHUm9jSHc4U0F3MGJGdy85b0FDQUVCQUFFL0lmOEFUWWpvNGFEVE0wT01VWTYzdkV0QlpHK2FCRnVEK2hYcTlHNUVDSE5zdTVhQk5QVjY5WHIxZXZWNjlYcGM1WWYyeW1aTzBSWjFUK2lnWjRUZ2hPRG8vVVRCdTZOL04vWEEzMGE0MFNPUVZlcXJBZDIvU29NSGd1ck9teEdFaG5wQ0F1VzM0VVNMcWhsaE1TUGdSbzBicHRzdDNPNlhhYW9iaVZDRUpNaWVZMERFMDNobTBIVTR4ODlkcVhKQlJtRVNEYml1cXkxYnBpd01MdUg5WEFHbDNPVzdjc3Y2NC9aUndWc29TdU9NK1lxZnVlUWZORkNxSnZ3dlU2TFQrMjcrQmhQblprSDNPdzlaOE5oWmVoYVluSkhEYkE1b1BCWG5QeXZPZmxFMkRHOHhGa2FiSG1SR0lHc2pNYTg1K1Y1ejhxL1VQRmdsdzAycE5rWmZKM3o1Tm5IdklDZm1GQjNXNjM3YkRhUE01WWRJMitXeSt0UUZiSnROMXRzV2JjeDZmblBBcFhOT29ManNUQkRCdUJFY1F1ZTBvWUlHRnRvVUoyckJMTWlMUWRobkFwWU1sYWpldTFDaGlGZ1hrSVN6THRTZ0pka3JHN1l3d2c0WjBIek5BdlJpSkhuU2hDQzI2Ny9SR3NjdVhZYzBmcGpUbExNZGh2d2RWdjJVY0lOQnJDY1QrQTR4VmoxbE41am1LMjFhdEVXTWRCZTBLZncyUWxYNkhJT2hlRExSZGJza25EcUt4L0hTaUo5Qlp0UnEweTh4UE5JY0N2U3FlbFU5S29iUU5oSUcreUd6RGRmN0FFR2dWNlZUMHFucFZNTklFanVjU2dERkRnWkFVU1dyYnhZQml1VkxRbG52RWFzZUJoOVMrWVo1aDV0U0dzRGRGTHhzT1hHalU1L0JGbXZQdTllZmQ2OCs3MTU5M3J6N3ZYbjNldlB1OWVmZDY4KzcweWluNjRMV0J1UVIxdHRib045U1U2VkdXQnZ2L3dCTy85b0FEQU1CQUFJQUF3QUFBQkQ3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3NzZvTWpnNHh2UDM3NzZtcHp5eXZ6ZXByNzc3M2o1VC96NWUvejc3NjRwdjhBdnEvNklHKysrK3ZjL3dEL0FQOEF0ZjhBdnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2di94QUFlRVFFQUFnRUZBUUVBQUFBQUFBQUFBQUFCQUJFeEVDQWhVV0ZCVVAvYUFBZ0JBd0VCUHhEOWJNZEJxek1FVU16MmxuMkJoRVJwMkJiVVdDWm5oTEJ4QXB4UEtJbVpRMUQ5MmNSRHhyQVdvQXQwaXdoc2JvRFRIcnBBUmpDaldobTV0R29Nekw5Uy9VdjFMOVMvVVhMOWovL0VBQ2dSQVFBQkFRVUlBd0VCQUFBQUFBQUFBQUVBRVNGQllYSGhJREZSZ1pHaHNkSEI4UEZRRVAvYUFBZ0JBZ0VCUHhEK3NiMzE5dU5ZRG83dFBSRlUwRTg1enZrb2RWdm1ON2U0K0t0SlUrM3c3ekorR0t6VmJHR1JZdFZxVy9URmdZcUJkUDNJQzlVYUZZWFFWRnVaUDFJVW8wY0lYTk45aVk1UURteWxIaCtPbXczQkhpMlhBU3pPeDhmNHUxN2pGSGtGYkY5UitnSVZ0NUZ3OForNHdwZzFHNnZ5RXZCQk9iWkVVYmhlVFlRU2pOeDJxcTRZWm5lVVZkZUpmeXVuMUdzclExQ0Ztc3FGVVVXWm5xZlVhd0JVTGtlNE1KUzRMYmZsalp5Y09CeTg3TDBLamN4cXF3Ynp2YjNtSzZhekZkTlppdW1zeFhUV0ZTMTlDVzNuRzEwNWYyUC94QUFtRUFFQUFRTURCQU1BQXdFQUFBQUFBQUFCRVFBaE1SQkJZU0JSY1lFd3dmQndrYUhSLzlvQUNBRUJBQUUvRVA1TnZjVTRaa2k1K0F0S1EwSHJCWjdxZWVKdm1qaXRBTmVncjlOOVV6R01BanNzYVNHa3hCNk5mcHZxdjAzMVg2YjZyOU45VittK3FQTVVKci9TaXg4K25vZzRvcW1CUGJrc0RHTnNiS1NFL0VTMHhUSEEyRmtTdWdFSVFTV1hoY0FzRldWZlRSMkN0MUZoSzdGVEp0QXBlSFNEQ3pKM2Z1aE1FVEF2SFEwT0xtOWxvMWdESmtlaGd3WU5EK3hFK1dEbEE3MGJwNTdvY0lrbTVrcHQzZnRyQ01JSVJCRVFhUDBLVXdYV1d1a09Ja3ZENEhGZHdkUGdsTDFqQXVKVitZK0NZTEJVL2l3T0FWMnhaZ01oREFNWVBqMUJ0SWdZbHZCS1cveU5GSkJHMnBzbTFEQTlnb3F3aDJHT0FZVDBrSlpHbmlrSncxQjJKd1pCdlJpYmVoQWc3aUoxbHRpa2tpTDhnamthTUJGUS93Qm5md2MrN3JkUGFZc0pKL3ZYUE5sZ2Q4QmhhN1I5c1JKM1ZKSEt4R3VlWkZiMWRERVpzSzJyTHowWkNpbzJrbTc4ZWhDVDRFU3QrK3ZLcUpON3YrazZCTEpUZE9IV2ZoOXZ4M3NiUldlNDlhTk9FUWgrZHVzYU5TMEVJL1FPUm95SVNsM24yaFhkNHVvR0h5cUFRR3VUSmFGR3phN1laTGFZMG1XZnRkdzBsMTF6QmJXVEp2MURzc25Da3BKRWRTSUNKYVdTNDRmSFF5citHVEVudE05OWVNNWRERGNnSDFReEVTNUtDYjJ1Snp1Rk1xU0RTOFNuQ0x3aWxsVEFiQ3JzbzdQTmh5UXZ4dEZCS0JRaG5zTGVHM0pDOVp6OElWM2RCTEtlN1lDQ3ByTFJhdkZtOTNrVEtVZ1hNa0psVjNWWitCKzZzVEZZRFlGYldEZEZBYkFwTUc0bVFiS0JFUkJLNEZudWlFaWVTbUFGZEs4SjRRSFF6WnN6TlZ5eS9CY3NiNkVtbUNQSjhKTWkrWjZHYk5uUE0wK3hjejJGRFVLQmRnQUE0S2thQ2ZPd0M4YUFTdFhxWTZTdDRiTVlveEFTQitKOWd3VEY1aUlXbUF0TVNWRFlvS0ozQ3VkbUozWm9FZUpnYnlZZXo0di9BUDhBL3dEL0FQOEEvd0QvQVBnZ1JMNnhRZWlvYjBSVi9CYjhqc29BM2JFbU1qWXdKVXFDVmorVHYvL1oifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiTk9UX0ZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDQtMTYifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTA0LTE2In0seyJhYWd1aWQiOiI1MGE0NWIwYy04MGU3LWY5NDQtYmYyOS1mNTUyYmZhMmUwNDgiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjUwYTQ1YjBjLTgwZTctZjk0NC1iZjI5LWY1NTJiZmEyZTA0OCIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJBQ1MgRklETyBBdXRoZW50aWNhdG9yIn0sImRlc2NyaXB0aW9uIjoiQUNTIEZJRE8gQXV0aGVudGljYXRvciIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxMDAwMCwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9LHsibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjAsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MTAsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6MCwiYmxvY2tTbG93ZG93biI6MH19XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNRVENDQWVlZ0F3SUJBZ0lVRi8wd1RQUDZGRXF4cHNpYkppTEZ0RGo0cWh3d0NnWUlLb1pJemowRUF3SXdkVEVMTUFrR0ExVUVCaE1DU0VzeEVqQVFCZ05WQkFnTUNVaHZibWNnUzI5dVp6RVNNQkFHQTFVRUJ3d0pTRzl1WnlCTGIyNW5NU013SVFZRFZRUUtEQnBCWkhaaGJtTmxaQ0JEWVhKa0lGTjVjM1JsYlhNZ1RIUmtMakVaTUJjR0ExVUVBd3dRUVVOVElFWkpSRThnVW05dmRDQkRRVEFnRncweU1qQTFNekF3T1RJek16VmFHQTh5TURVeU1EVXlNakE1TWpNek5Wb3dkVEVMTUFrR0ExVUVCaE1DU0VzeEVqQVFCZ05WQkFnTUNVaHZibWNnUzI5dVp6RVNNQkFHQTFVRUJ3d0pTRzl1WnlCTGIyNW5NU013SVFZRFZRUUtEQnBCWkhaaGJtTmxaQ0JEWVhKa0lGTjVjM1JsYlhNZ1RIUmtMakVaTUJjR0ExVUVBd3dRUVVOVElFWkpSRThnVW05dmRDQkRRVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCQndZZ0tWd2pDVjYrbHY3Z25wRkVSelUydU5EOGdkRWtQQ05jcy92RkRzMnNLNDJKdXhuaEZuSWdNQjJEeVUwSXJYSUxqZi8yWFQwWVNUZDFzUGlUU2FqVXpCUk1CMEdBMVVkRGdRV0JCVG5RYXJwZFN0NHNpZDdWamZOSUxJSHJiMlBvREFmQmdOVkhTTUVHREFXZ0JUblFhcnBkU3Q0c2lkN1ZqZk5JTElIcmIyUG9EQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lRRGNvWEozcnpOTUEvZlpraDA4UG9Gck14NDNHWU1oWk1mTFB3LzNNZkpwR0FJZ2VjdEt3bUpZTTlKOFNYOHgvYVFWNGlHdktXb0JmcjFYUFRBTVhPaFZFWUU9Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQURBQUFBQXdDQVlBQUFCWEF2bUhBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNRQUFBN0VBWlVyRGhzQUFBaWNTVVJCVkdoRDFaalBpNVZWR01mOUM5b2I2REpvSVFpMWlEQndJNVFnRVVFbHRCSjBZU0FHRXVSQ0ZCTXhJa2xDYXlGSVFpYUtCWlVvbFk3UU5KTTYzbkdhY2E2ajQwdzAwNHpCTUJPNkxFN244OXo3UGZPODV6M3Z0ZHE1K0hMdWZYK2M4L2srNXpuUE9mZXUrUHV2djhMakxEUFFHaDRPN2ZIeDBHb05wODlWdGEyZG5KeXNhWHA2S21sdWJqNjEwdno4WEZoWVdDaHFjV25SdExTNEZCNCtmQmdlUEh4ZzRyTVhqTDZWRGg0ODJEWFFCVTlHWWp2ZWJpYzF3UXU0QkErNFBzL096amJDbXdGbjRyOG9HUkIwSjlvZEpmaDJIWDRxZ2lJUDd3VTgwS1hvZTNDRGZ3UjRIbldKbWVwcG9LTjJEWDU2cXB3eXRBRFB6M1VpM3dzZTZQOEw3bFV4a0NzSFIzblVCYzFucVFUdTRiMkpFdFMva1FKUU54RFRoYlFwd1FOSDYrSFZDcHJ2dE14Q0RrK2VMeTVWb1h1WktNMkFuaThhYU1wM2c0NXBZMjBHajRCVnZ1ZlI5OUdXUEVoSnZWTEg5ME13c2hub0hYa0JlM2d2RDU3RE0xZ3ZhTlFMSEZYaEYyMk1aQ0NIUm9CNkFWbUN6OU5Gc3RMWU5WQ0N5YStWcE9jRVRuOStqRVlET1RpTDk5K0NsOUlHNVhDS2VLL0lWL3JvOXV2SEtocFFtUVN5R0hHWDU3TS8vQkJtUHZzczNOdTFLOXpidkRuY1diZXVwcnN2dkpBMDhlSkxZV2IzN3ZEN29VTmg0Y0tGOE9mTVRCRzZCTy9CcFpvQmJWQytYR3B4b3RscjE4TDAvdjBHTXZyRUUyRjB4WW93K3VTVEJqcjY4c3RoZFB2MnBGLzJ2eGR1ZmZ4eDVSb2FmKzY1TVBiMDA1MTNvOXFyVjV2NSs2ZE9tU0VQTGZDU0FRcEh4UURSVlZ1SmVFeVZYOCtlVGRDMGQvYnNDYTFQUDdValNIOS92N1dxWkQ0SURESTNUd3BPbStpUDY5cmxoejcvUEF6djNkc3hId09Cb2VrMzN3ejN2LzIyWXFBRVQxc3g0Tk9HQnhEZ3Q1OS9QdHg5NC9Vdzhja3hneHc4Y3NRaU9mTHNNNVk2OTYvMGRRYUxVZk1wNE1VWVhLZk43NUhYakFVRGhxNisrcW9GNnRhcVZXRW16cUNnbGJxMEJJVjNrZ0dCMHdyZThqb0s2TlkzMzRTYm16Wlp4N2ZYckFsM1B2Z2dUQXhkdDNzTVRLZWErZzVVM1lTWERPbTcza1ZBRHJkYVlYanJWaHVQbEpzZkdyTHJZaE5uTXBCSEgwQmV1dlhkZCtIV0s2L1kxSkxuWXlkT2RFK3VMWHVlVGoySTVBRVZkVjN6OTJoejBhYzBFdE56WlAxNk13SVQxeGdYa1lxVkdaQXd3SU8yNkNJNEVTRGZCd1lIREp6N3lrOEdGQWl0cE84ZU5yL3Z4WGhOK1E3VHpaZ0pzSXdkT0pCbUFCVU5MSTZOcFFVNy91Njd0a2hKRmJzWEIxR05KMjJtMzNrbmxVaEtvOG9pZmQ2UHBsVmFLWjFMc1Y4QnMwaC9qUUhTUGNiTXdlbGZZbXlxbWkzeWp6Nnk3MlJMeFFBUDhxS1Z1RmdSYnA0K0hRWmoxTWx4cmlmNEtFQlpDM1RveFRVQVMvY0lDQXNlVTdWN1VVb1J3VnNiS3lCc0FyYXNpUDJ3UnRpdktnWjRvYjFsaXowdzFOZG51YzUxSDNYZ2lUQ1IxOEEzTm00TXd3Nks2cVRQcmJWck8vZGluM2F0V3lyVFBSYXFyc1ZuVkJDOFpDQ1ppTThQdnZXV1Bac01BTThtUlVmdGt5Y3Q4bHdUdkRlQkFhYWZ0VUZFV0JkMFp1YTdjR2prcWFmUy9zQzBtekVIYThVZ2lwbkdDQ0pkYytDOHRUMG9tdWZkaWdHbWx0eFhKOHZnbmRPa0ZxRDAyOHh2ZHZ4bVVaVlNDbURnRjd0NVQ1OFVBOTJuNWpNdTRoN1BhcTE1Q1o2cVE2QW12emhsNzhOWk1VQjBXT1UycUl1NG9wNkxSY211bWRJalV6TFFQVXFqaFFqaG4yZTlFYlRmdi9xcUNDN3hIWGhhTW9SM0wxMjZsQm1JRjRrUUQvbDBVZDduOEUzZ0V0T01BZnEyV2NSQS9Nd0IwSzhGaVVVc2VPVEJVL1NqT0JIdy92bno1NWNOQUV3bjE0OGVzNVF3eUliSTg3eEZub0V4d1RxSXhtMm5ka0NhQWFCekFjYVI1T2RZcGxrcjZrc3BwR2o3Vm1KalphektER0NBbW56ajdiYzdHMVVEdkVUZFoxQXFEUDltY0ZEajJGRXhFTUZrNEkrNDRFZ1RpVE1XMXltRjdPNTZoN3dtMmtBekEvVHI0WlUrbUw5OHVXL1pBR2xpcFRGT0RTK1hEUENjUGsrODlscG4wUGo4NUpVcnRoR2x0SENwUllVQnZyUXZrRElZU0gxRkVWVWY4YW1wWlFPY3ZSaGpmTU1HUzU5S0ZRS1lTc0xnYk51UG1nRitqSGdZTDlLaWFYM29wTmwwRHdNR25rVWVlQlk4cy9yOXVYUDJITE5iTVFBWTJ6K2RUWjg1VXdIMjBaZjRKWmFpSGpXeWNxWEJFNWtKTnNLNGlIVVBhQUJKRVdZbHYwY3FBc1c3SGh4WjJzUnhNQ0I0bmlOMWF3YlE1TFp0MWpHYmp3Y3VpZlZDSkFDelRyc0FXcWg4NTU2a1V5elA4QjBZcVFZZlUxTW5ZVXViYVB6aXhZc0d6cGlWR2NqQnlFOWVwRWFUMy9sOWhHbUpJcUFLazZ2cFNLQ1dkYUJmYkRrNGxZd0ZDL3hQOGFjczBBU0JkamkyeFJsQVhLTmUyM0VoVGpFTHZQSjcxWWthWDRPT2NFQXpRNUxnVTVYaHp3T25lL3YycGZFd0lIRFNpN0xKYndObVRTWXFCank0TjBKazJaMHQxMlBIOXVPYjM2c040Qkx3dElMMkVhZjFhY0laaUJTWjJMblQ5aE5McWFOSDdaREl1QnlqbFc0R0gxTU5lTnJHRk1wRkJHOGUvckR6NjZpNzhERERiMWFPeUI2ZVp5MXQzRkZZQWpwdjBkVXZ6MWtCRURUQ1dOL1hYMXZKeEFEUUV2QTFBNzJNS0YwWWxLbThmdWg5R3l6dG9sRnNoS3daL1pZbUpkaXd2RGhKRW1sRTFPMkUybjJmdmtpWC91UEhEVnJnZ09hUkx4b29RYXROY291VnlLbGpIUXVJbXVWckJKUElhLzlkNHRtck8zYUVIdzhmdGx3SG1DckREaXZBbE8veEI0eXVTUno1SDVsQ1RmQmVXcXd5cENnUnZaTElaU0RSd09DZ2llY1ZERnBKc0Y2QTYzTXlBS0RhR25oVUwzQmE1VGpTUWtWNXJudlozL2tPMWd1NFBGMlE0QWxFWlFZRW5rZWVLdFJVNC9OS2cvSXFreDhKSlAwelY0SHVibEFHM2dNZVlZQzJaa0RnZ3MraFU0WHBpdStvWk1BYkViUmFEOTZCWDk2Y2VzRXI4dnBjTWZBb2VFbXdBdmMxWHZLblNLODYrSExPRzNnQjN2NlA2Z0tyeFFUWGl3YnlEVXFwb3FqTGdJZEhBS3JOMVRQZkl6U1JMMVdhRXJ4YUZuL05nQWYzS20xS09UemZjM0NVNTd1aVRpdlFrcG9pVHl0VkRKVEFnYlBJWndZRUQyQVR1SUNiQkpUYVhMM2d1VmN6a0lNcmJaQUh6K0h6MWdzNHRRYXF5RWNnKy9jNVN4c3RUcjlJMVE0TURDWm9yMFlEQXM5ekhsV2kzM094bHZNZUtMVWwrZWlUNTUyMm1qcFNNc0NIeDFNSHd6OGNlSHk3RWhSejVRQUFBQUJKUlU1RXJrSmdnZz09IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMSIsIkZJRE9fMl8xX1BSRSJdLCJleHRlbnNpb25zIjpbImNyZWRCbG9iIiwiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsIm1pblBpbkxlbmd0aCJdLCJhYWd1aWQiOiI1MGE0NWIwYzgwZTdmOTQ0YmYyOWY1NTJiZmEyZTA0OCIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsIm5vTWNHYVBlcm1pc3Npb25zV2l0aENsaWVudFBpbiI6ZmFsc2UsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjp0cnVlfSwibWF4TXNnU2l6ZSI6MjA0OCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMSwyXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0IjoyMCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoxMDQsInRyYW5zcG9ydHMiOlsidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN31dLCJtaW5QSU5MZW5ndGgiOjQsImZpcm13YXJlVmVyc2lvbiI6MTAwMDAsIm1heENyZWRCbG9iTGVuZ3RoIjoxMjgsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjoyMH19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIyLTExLTE3IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEwMDAwLCJ1cmwiOiJodHRwczovL3d3dy5hY3MuY29tLmhrLyIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiQUNTIEZJRE8gQXV0aGVudGljYXRvciIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjIxMTE3MDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjItMTEtMTciLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MTAwMDB9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjMtMDEtMTgifSx7ImFhZ3VpZCI6ImY3YzU1OGEwLWY0NjUtMTFlOC1iNTY4LTA4MDAyMDBjOWE2NiIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiZjdjNTU4YTAtZjQ2NS0xMWU4LWI1NjgtMDgwMDIwMGM5YTY2IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IktPTkFJIFNlY3AyNTZSMSBGSURPMiBDb25mb3JtYW5jZSBUZXN0aW5nIENUQVAyIEF1dGhlbnRpY2F0b3IifSwiZGVzY3JpcHRpb24iOiJLT05BSSBTZWNwMjU2UjEgRklETzIgQ29uZm9ybWFuY2UgVGVzdGluZyBDVEFQMiBBdXRoZW50aWNhdG9yIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCIsImJhRGVzYyI6eyJzZWxmQXR0ZXN0ZWRGUlIiOjAuMCwic2VsZkF0dGVzdGVkRkFSIjowLjAsImlBUEFSVGhyZXNob2xkIjowLjAsIm1heFRlbXBsYXRlcyI6MSwibWF4UmV0cmllcyI6MSwiYmxvY2tTbG93ZG93biI6MzB9fSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJpc0tleVJlc3RyaWN0ZWQiOnRydWUsIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDSkRDQ0FjbWdBd0lCQWdJQkFUQU1CZ2dxaGtqT1BRUURBZ1VBTUhFeEN6QUpCZ05WQkFZVEFrdFNNUTB3Q3dZRFZRUUtFd1JMYjI1aE1TSXdJQVlEVlFRTEV4bEJkWFJvWlc1MGFXTmhkRzl5SUVGMGRHVnpkR0YwYVc5dU1TOHdMUVlEVlFRREV5WkdTVVJQTWk0d0lFRjFkR2hsYm5ScFkyRjBiM0lnVW05dmRDQkRaWEowYVdacFkyRjBaVEFlRncwd01UQXhNREV3TURBd01EQmFGdzB6TURFeU16RXlNelU1TlRsYU1IRXhDekFKQmdOVkJBWVRBa3RTTVEwd0N3WURWUVFLRXdSTGIyNWhNU0l3SUFZRFZRUUxFeGxCZFhSb1pXNTBhV05oZEc5eUlFRjBkR1Z6ZEdGMGFXOXVNUzh3TFFZRFZRUURFeVpHU1VSUE1pNHdJRUYxZEdobGJuUnBZMkYwYjNJZ1VtOXZkQ0JEWlhKMGFXWnBZMkYwWlRCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQkp1NUVDNGphNm1MdnRQVzJ1RHV2eFVkMUh2RHpwdU5oVFhFelJIdEI0b2YzQjF3ZHZhY3F2SytkRHNqd3ArOFJCaHUwdHpXeCsxVTRPSmFMUGMyOFYralVEQk9NQXdHQTFVZEV3UUZNQU1CQWY4d0hRWURWUjBPQkJZRUZON2lMWTFEQU9kb2NXbFNwOWptci9mbEhQMXlNQjhHQTFVZEl3UVlNQmFBRk43aUxZMURBT2RvY1dsU3A5am1yL2ZsSFAxeU1Bd0dDQ3FHU000OUJBTUNCUUFEUndBd1JBSWdGL3REcXh0WGNLSEJBcS9OQlpEMk5MUHpFNjBVNXNrZGpFWWZmcEdyTjJZQ0lHK3hJcjk1aXA3NC9tYmlGa1JuemkvaXBrK1F1dVlDL2FGUWU5cENBam5jIl0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQVNNQUFBQXdDQVlBQUFCYUZSeXNBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRW5RQUFCSjBBZDVtSDNnQUFFRzJTVVJCVkhoZTdYMEhlSnhubGE3YXFCZVhWRUxZd0ExMUx5eGtsMlhoaGtBb0NRVENMcnRQbHVmQ2hjdmVKZHdBUzlnc3NQQXNnWkRFWGJaNmNTOUpYT01TSjI2SjQ3ajNKbHUydWpUU1NKclJqRVpsZWxFNTkzM1BQNzg4Vm15TkYrYythK2ZSZWZUcEwvUC8zM2UrY3Q3dm5QT1ZQMGttYVpKdVlocU9oYVpXbTd5MjYwM1p1SFc3ck4zeXF1emNlMEI2Qm4xanY0ZUhSMlI0ZEVSR2NTNHlFaGNtNlVhaFNUQ2FwSnVhQ0RRbno5VEtzaGZXU0ZGNXRjeXZxSmE1cFJVeXE2aFVpaGN0a1hNWDYyUW85aHlCaUdGa2hIZEdZc2RKdWxGb0Vvd202YVltaDJ0QUZxOTRVWjZkTlUvQnFMQzhTb3FxRnNuOHFvVXl1N1JjbHE1Y0phNytBUVdqb1pIaHk4Qm9hQ2pDS0NicEJxRkpNSnFrbTVvT256Z2pDOHFxcExDa1FpcVhyVFMwb3BJeW1WTldJZk1xcW1UTy9BVlMxOVFzVWFCUU9Cb0JCQ2tjYVJnZWptb2NrM1JqMENRWVRkSk5UV3MzdmlLemk4c1VoTlJFSzY5VXJlajVvaEtaQ3pBcUtpdVg0NmZQWEdhbVhkS0tKbjFHTnhKTmd0RWszZFMwYWZzdUtWbTRSSUdJWnRtQzZrVlN0bXlGekNndWxmazRuMWRVTEllT0hYOGJHRVVpSVQxTzBvMURrMkEwU1RjMW5UaC9VY0dJcHRsTUFCQTFvbm1WMVlabVZMMVFOYVA2NWhZMTB6aWFSak9OUHFQUlVjTFRKQmpkU0RRSlJwTjBVeE9OcldWcjE2dC9pS05uczZBZFVTT2FXVjRoc3lvcTVZVTFhdzBnd25QUllZQVFqaVlRVFk2bTNWaVU1SktveU5DZ1NHZ0E5ZE1uUVJsRUJhT1MwR2tNWDhOZ3c5QkltSDJOQm4ySnRUMkNmOGFBaFVTanJIaURSdmd6ZjQ5Uk9CelZSaExHUDMyTlVlQWtFZ0pQT0k1RW9uby9pS0N4b0djYlJxUUJSQjdDTWNTN3czaHBBUHhmdkNDZTFhdWxhOFpNR1pnMVR3Wm16SmZlWnd2Ris4ZG5KUENIUDRyMzk4K0x0N3hhaHZidmsrR2VEalJNRC9JWmxuWkVHMkQ4dzRockNLcjdTRlFidUovcHhmazNSOEY0ZkRESmp6Z2tncklUajhGTGVBUjMvT0FROGJBTXd1QitlRlQ1RCtBMUdnZDRBM255NEprQlBaY2hsS0cxVlNKSERvdm45VjBTT1hsU1pMQVA4ZUxkY0JqbEVBUlB6RHVJWlJSaDc4NTBXTzVSQ1F6N2tZY1I4ZUtuSUg1VHZ2RndHQ253bHpEUzRuTlJaQXl4NG9jQStBRFB3M3lERVY0OWpGSmdSMkxseklEb3lZZDNOS3JwaFpHVEVOTFJPbUt4YU9FeHYwUGkwcEpGSFlPL0lUenBSUWl3WEdnaXNZcmZBU3hnRkFPQmdHeDQ1UlVwcmE2VytXVmxNcWVvU0lvcksyWGQ1czFvZjFFWkdybzhJZFoxQU85TTBvMUZTYTU3UGlrMnkrM1NuWGFibk11WUxtYy84a2tKUGp0YnBMa0JEWmxOYkdJaUNBWFJ1SWRqTFl1VnJ3aUNFQTVHdE9FTytrTnl0clpPTnI3eW1oU1hWOG1NT1lVeWQwR0psTkRPbjE4c0paVlVweXZseGJYcnhPc0xHTUpPUU1PZmh6RWc2bUZQQ055TWFzTWZIZ1g0ZExXSUZDOFYvOE5mbGd0MzNTYTFtY25TbVpVa0E1bEo0azVOa3E2a0pIR21KVWtuanJic0pHbktUWko2WERmanVqMDNSM28rOVZFSmZQZHJJbXRlZzRRNmtGNVFoa04rQlF1Zkh4Q0JOQUV2bDlHVndHZ0VVdFgvekJ5cCs3dHZ5OG12ZkUzT2YrUGJNcnBxRVRMdGtsNCtZR1JEUEZIa0M4SW9vVUVaM3J4UnZJOC9LWUg3dnlYdG1YblNuWjRsOXBSVWNTYURWL0RYUnA3ejg2UWhPMWQ2LytKaDZYM2lTWEcvc2xvQ1hSZFF3T0JxQ0tDQVB3V3lHQVhEQ3MxR1lpRURPQlRLOWFFd2ZzT0pENWs2VmllMUtYZEllMDZCT0pKenhJWjBKd3AyUzVaMEpLVkxhMHE2WEVpeHlQbjhBbW4reUwzaWZPanpJbzkvRDNWUUtXS3RSM3A5RVBvWUlMTXBCUEZQT3pQeWdqWUJVSXVnRE5pWktKRlBodXNrZjlob1k1elUyTjdWTFNmT25KV2FDeGZGN3VwVk5saFgydEdBQ09BbXhkZmhKTjBZbE5SWGtJTEdsaVRkQ0lNSW9hUk1hVWtxa05wdi9TMEV2aWIyMk5XSllFUWdpcS9jSVFwTGpHd3V0Mng3OHkwcGhRbzlqOE90c1ZCWVhta2NLNnRrTm16OWVlVmxzdXV0dDdSaE1TWUZOY1N0V2xBSXZWaVVjVWJGMzM1Uk9uNzBVMm1ZY3JjY3UzV0t0RU5nMjlQU3BDY3RWWHJBdnhPQllFUWc2c0t4Q2RjVWNHZFNzdlFucGVHWXBzTGVpR0ROVEpkakdablM4ZUg3UkZhdVFuS0FYNjhQd21QSXNHcUljV1FDVVh5ZzVQVi85cHZTaS9qNlVwTEVqbVBidEtsaWYrSm4rQ21nR2xZVVIrbnJFbGZoYkRsODcwZWxMVzg2K0FNQTRWa1BBdDlWOEV4UEVnZkF0QnU4dTlMUzhYdXlIQVNJMnNDbkU0RFFYSENYMlA3bFh5UmNlMXJMaVhGRGVUUUtqS3d5cVBaaWxEL3huQStPUXJzYVZXVEF3MGYyU0RQU2RpQzlLSUlMUEU4VU9zQ0xEVWQzUm9xNDhUemZNOG81VFR3V0FGTnF2alNtVEpYYWozOUt1a3BtaWpnQlRPZzJ5SjhUL05CRVV2eGhnUklNY2M3ZkdFYUcrUC82aWRXZ1ZSRWp0ci80YTVNdTFabEI4ZUEwU2YvMWxGU0wzcmdoQjFyRE5BZ1Jqa09aK1NxNHB6T25pVHo5bTloakU5R2xDbVUxeHpSNVBYcDlJVm4xOGthWlUxWXV6eGJPVitDWlgxVU4rNzVTNXNLbW4xbGNJbk1xeW5DdlVsNC9lRUQ2Z2o2Vkp6OTZlWUljRFJOZWovTC9zRnZjcFVYUy9kNVBpQTNDZkNIZm9zSnNoNURZa0lkT0NFeTNCWUlENFduQmVUT0FxRGtEV3RBVUNMVWxWZnJ3YkQveTVRVDRkR1ZuYXE5UEFHWndaV1pKRGJTRU13ODhMSEwycEVSRC9VaDFSUHdCNmttWFV6d1FNVVNoUy9tLy9LajRFRTh2MGcyUUQ1eGZ5Snd1c21RRnRDdVBqTHk2UmJydi9ReUVPVjM2a3BPbERocGNNOHE3QVR5MlFXdHJBQWpWZ3U4NkhKc0JSdFowYUhtcDVDOFZuWU1CVU5UcTJuSGVqODdDOFlHL0VuZEpLYmloK1FYUlo1bnpoSVVGazQ5YWtJbzUva0dIVkROUFlGYkJZSkdPTjE2VHhsdmVKeTFNRy9FMXBhVk1HTnBRaG8zVTJNQkRGODVadmwzcHFkS1dtaXl0eUVzYnlyOFo5NmpadFNOL1p6LzA1OUs5Rk5wU0ZGQUpmbWpLK1dtL2tUY0Q0ZlVRR0kzSUtQbTZUaG9aUWt0QjBJSkFpSWFSVU94OEtES3NkUlFQT2p4bm9MWmtkSGlUZEtOUUV0WHdkZ2lwTlNkRHprQ1FMcUtCdXBNczBtWEpsTmE3NzRnOU5nR3hBY1FxbFFBVWlRNnJJRGo3UGJKMjR4YVpBdzFvWmttWnp2a29yRnFvRGtZR1h2TzNPV1dsc21QZlhobEV3MlI3amFKWEQrR2NZRVRmUW9EdGFOZ25Bei8vaGJTQ04yb1E3UkFNYWtDZWxFeHhRYWdvL0ZiZUIvL3RGZ2dJN25VZ2RBS2NLSEN0RVA1V2FJQnRCQ3RjczNlM0o2ZUxOU3RIZ2lrcGNoN1hQWGcraUh5Zm5uS2JoTmF1aEJUM0dnSjlCWW9ISTNUMzB2emdnd29pRFV3ZmNRM2s1SW9qTFVjaTkzOUpJcVd6NVBoZGR3TU1rMlVVdjNWQnNDL21HUURVajdUSmV5L3VEU1pEMDRDMjRZVkFEeVpuaUF2bmpxUVU1RFBGTURVUmR4ODZpMTRBd2psY1g3enpkb2s4OWc5SW5yNG5BM1RvZTZPbzB6TkRIeE1WSVEyb0dHcDVmdWJvOUJua04xMWNXUm5TbXAyc0lESlJNTFdoYnZESXZCR0VPdmt1QUtrMXc2S0E2Z0J2YmdScWVLeVhscFJwNHZqWno4RktKM2daa1g0RWdwSlJ3ZFNieUNYNGV5Y2N5S2lDMnZQMWN1amdNZG0zOTVDY09sa2pYWjA5NGhtRU5zcnFBUkY0NHYxR1JyMU4wbzFHU2MyNTZkS0JodWEwd0Z5RFFMVkJTTG9wekdoY3JUQVJFbExNdDZPcU1TNHBEejE5ZzdKeDIwNlpNYjlZSjZCeElocUhYaGs0NnNHNUlJV1YxVHBMZHMvQmcrS0JHY2IzUWtQMGNwaWpITEV3NGhIdmQzOENRY2dRTy9qemdDYzIrQTZFbnBSY0ZZQkJtREhkbG5ScFNjdUE2VlVndHF5cDZNWHo4WTVGaFp3Q1R5QmpJRmgxNWtLWWNpMVNBM0N5cGxyVVYwT3RrTC9UYk9xMzNDWEJaU3NnTUFERk1kQjVPK245cUUvcVB2ZDVBSjVGL05uVFljTEFiSUgyVllkNG5PKzVCVUFDRGE0Z1YyckJlMGMrZ0FwZ1FpMHRBZzNIbndUUVNrNkZScFV1N3VSTVBKc0NVQVdZUWlPaGxsU0h2RFlnMzg3c1BLMGZnZ0hycFJ2Z1NxQWxRRG5uellGMGU5Vy9aYmhrb3dEd2ZnT01vSUlFd1NMTGxzNWpoUzJ2VGR5Zi9iVFVJNjRCOHNnNEpnamRBRVU3ZUhPa1owdDdNdmdEYjdhMFpKanloajh1Q0o0ZDZlQVhQRGxRamlQUVFxbVpIcm5yRmhuNDNuZEVYRTR0UnlkcVZ1RUFtaEh4a2RyUk8rSEI5a01UV3JoMGhTd29yWkNLaFV2ME9MdXdTRjVjdTBGYzZCQk51cElqZXhLVWJpeEtvbUFMR3B3ZlJ3cTRDNDE4QUdaQ054cFVQYzRURXVzM1ZxZlVqS2dSRVlpZUxWeWdRNnl6aXlwa2Z2a2lEWVZsQUthU0twbFJXQ3JsaTFmSzFsMXZqUTIza29haWFLTDBkN0NSUm8yUkxmblJEK1hJbmROZ0N0RG5ZMmhCenR3MDlmazA1dVJJRTRUMlluYXFuTDJsUURydSt3c1plUGdoY1g3aEM5TDcrZnZGOTRVSHhQUEE1NlQ3eis2Qk5wVWpIUkNhRmdJdUFJRTlQazJyamhTTHRHYW1TU2RNRFRlRTM0TWVuNzZ6bG1udms1RTlMMm12U3JYK3FnM1hIeEQ3VjcraFppS0Z1d2ZnMDV5ZERoQUJmK0N0UGNlaXdPUkdXZllpRFRyUU84QzNOV3M2QUdHS05BTDRhWUkxUUpndmdMY1c4TkNKME1YNGNFM05pRnBmSFFTOUFYeTM0UjVCU2YxTkFJZTY2WGVLYkhwWkFVZjl4V0dLdVY4MUlVNHk3c1lWOVNSa0lsWlAwRXMycjVYYSt6NGkzb3pieEVwQW5pQzBBelM3b1VHMlphVEpCYVRKenNwT01BUS9YcGlZZFh5R29BVXdyOFYxRFRzelhBK0NiMTlTanZpZm00OWV4aTE5Z0I4RklQNUQ5UnF3Y0RrNC9DbEV6WmxyMFRnRG0rdlNHRGp2aUxPeUt3QlNQVDA5c1NlUjJqanRhTkpuZEdOUmtnMk5pWUxZQkVHdG40WWVITUxKeHU5Sm5RSUJ5NHc5TmdHaFBqbHFScUtQaUthWmFrUUFJcHBpODB1cnBZaGdGRHVhWWRlZWcyTk5rYjNXQ0VkY0NFUTArYWdaUmNMU1ZITldiQkRBRnZCSDhIR2xacUdSNTZod1g1eVNLWU9mL0cvU3ZlRWxFV3N6R2p5RURHZzRORHlxSXlzcWVJaUxROWs2VEQ4TUtUaDFTdHcvLzVYVXZPZkRBSUo4Y2FWUFZ6T09tZ2lkNEFRNkI3U2FJMU5TNWRTMGRKRnBkMmdESmlCZFZUdEM2SHpvVWJIR3dFTkh3eUNRL2RRdWNkNUFyUk5tVFYrcUVYOUxta1U2UHZGUjhUNytQZkUvLzBzWitjTk1DVHo5UE01bjYvUUQzMCtmQXBBK0pNMVp0OEFraFZhRi9EY2kxQ1B1cnN4TUNIaWVCQkNjQ0UxcHVVSk5ydmwvZmsvRUF5MkF6UFQ1VUg1QkNRd2IycWFFVVo0UkdFbFJtRW9ENkN4NEQzbmkwTDYvdmxIOCs0OU1IQTRka0pFakJ5VzhkWk40aXVkTDlMZS9GZCtqMzVhR1crK0dXWnF2QXdYVWt0cVI1eTZjMjVIdmJuUm1yVERuMmpPelpHL0J2YkNqVHFJT2ZCTGhGQUdxYjJndVJ0MWZQeGdRMnpqejJ0UzRlVjYwY1BIWXZmMzc5MHNvWlBqK3pGRzFTYm94S2FtVFBvQUpRcUo1UkJ6TllSVzdQUUhkUjRZbUdYMURNOHJLeHdKbnhMS0J6SmhmSlBPS1NtWC9nVU1HZ0NFYXpuaGhsT0xudkptbytCR1p6bGNaNkpiK2U5RnpReEJ0ME55NjhxQk5vTkdQSU5EMGFmelYwMmlKRUx3RTFCUHJrUmtsNWNCUHBudHNFbng2dGh4TnVndG1YcklNMEV3RG1OQ1pYSXY0TzdMeU5TMk9Hc2tUdjhIN2JpTy80STFLRzZjWFNBVENSUzFqTkNJRER6Nml3a2lmRkVlOWFNb1E0TzBweWRJNHpmQnoxZWZjSytlZStxVU1kYlF6QXZYczZ1d2NMVWVPZFJsenAzVG9tejE0dTBQT0xGMG5wOTczRVdoY1UxV1RPNmNDbndZQW9wOFA4U09ORHQ1TFNSUFpzUllSUllXdWQ4UFJGbFVUTFJFUlkzWFVqYS9nU05DbG81dDE0U09qcUg4WnBwZUhUTWZPcWNHNkI2Ump4eDVwdm0ySzh0YkJ3UThjcVQwMVoyVXJRQTJtcEFCTU02WC9tMTlIakM1VmRIVytJWjNwQUV6TiszVVNvMWhRaGphSGRxY2p0UUFndWdBS0t4YkpuUEpxV2ZFaXROdlljOHltVVNTbUs0Q1pucGhNYmNvOHhuZEtWN28zdnRNeTB6RVc1VEk5STVqTFVjem50ZHhqdnRkNE1yVTNwaFdmM3J0UnEwc0lSZ1NoUlBPSXJEYUhiSHAxaDZyS25KSlBqWWhPNnNKRml4V0k2S2ltMlZZRWtOcDc4SWo0L0d6Y1JoeWNIS2d4QTV0Q0twSXNiTWpUcWhYU0FIRGcwTExMa2l1TkFJc3VDRHQ5Uks3N1BpZHk5aHllTlhpYWlDaGFzQVdOTGhUMVovU1JTTCt6VldUZFdxbTVmUnFFQ1QwNVRBOGRNVXJOa1Bvc2FHREo2V3B1MkQ3MjF3QUdMclJrWTlBSURjQ0FaQmtBRFIwakJrWXRDRzhESS9EcmVOK0hSRW9YaTlpUjVpZ1lZWnREWFBTbGFBRnFPYkFJUmlSRURRNm1xNFFRbklPcVZYUi84U0dZWlJuaXpjelFBWWFXWEpoT3VkQzJjRTR0aE5xZDZ4ZFBnS2RRYkZJak93OWp3bWdpZ3Q2SHVvMUFLYVVwUjVVRmdUd014UUt5U0VVVFowWmdsaG53bUxpUmtiWVdxWHYwTVlCUGxqUkQrMnZPenhFWHlvQW1jRmNCMmhES3R1VVRINWVoZ1VZamszd1hZS1Qxd3J4Zkp6SEtpY0NvRW0yUXlVU0F1Q3dQbzB6TVREQmNHNWxBUUJBWWI3YnpQQkpoZ1Z4T1lUV1o0OU82VWtoTTQ5T0tQNzZiNkpyQWFLSjVSTlNJQ0VTekNvdGw1b0lTMVlDb0xuT2hvcTZheGpXQmlBM2xMUUJSSURhcmVvd1FONmNEc2xVRlZVcEJROFBTL3JYSFZFdWhodUt3WktnUGhxTkpOSHM4YzJhZ0lVZDFCQ2tob2VFTFozUVQvOUEyd2hIT1hXSUk0dElqdlRPZWtxN2tYS21EZWRHVGxpeWV0R3lwc1NUREhFeFZzK01NdExCb2VSRWd4NjhLaC9MTzdNZEFKQkVZY1pxRTQ1Ly9TYVRYaHZSODRodUJmb2E4OG5WTzR6UUxnK3VtNkQyTEFBQkdZS0lxSUVFQXlLYzBuWlg2RDM5TVI3VUdDM0xrRkhodEJRZ05KQ1B1MUJScEJtaGVlUCtIa2NjQmRXUXpjczYrdnFhMnptZkFBL25oUE1VUXppbFdPRFdBQjNYQ0RpT0U0RWZ3Z0Ivdk1EVlMxaFVDeStSOExUU2k2UkxJdmxNY3ljWThMbllhOUk5UnU2ekpMeEQzcmcxR3BKb2VJWkNtT2M2dmt4amxSR0Mwb0xSTWdlaFBCYU1yYVNza3lnUERlQTJGOXk2ZjNYMHBMZTRVUUEzcDBpSmQ0OTM0T0pqZWVMZUFhV2FTVE5DTC8vM2RRa2tja1prb21BVkdZdlpOZHd5UDZpT2lhVWFOQ0VDMG9IS2gwUkFRT0hJMm82aEVUYk1GdU41ejRMQjRBc1prT0hQQm9oWW9JdUxTQWlZVFZMOFJIbWhwRUZ2Mis5VlpTeDdvZSttQTBQVURKQzZrWjh2bzJjUHFCK3EveE5wVmlZSVVabyt2VENQZ2RDZ3lDcEVhaFJhQkc1NG1zWC82ODlLY25DSk9nSkVMYVhGK0RkUGxhQkpIakJ6M2Z3WEM3WVJBeGdRMDF1SFI3SmdZaktDeHBFMFYzNVkxS3NnRENMNWh4SUozS2M0eEdOYXl2T1RQTUV4aWltc0U1ZUtFRUhFbWZIaFZ0VFNrWnFtVG5KTVI2WnRxeWJSQTJGT2tCYWFzTlNsYnBLdlZZQTJSMHVSVFNVMUVSRmptZzhualZCbmlNVlpXR2dmc1pnb01UNDB3cW5Wb21KZCs1S3RiN0QvOGpvSVFoL25Qb2h3NFN0aWZtcTJnM2dBenN2czVtTlZSYWhXSUFBSkh6Y2pNOGZYUXRZQVIwMkZnMWpUQVZyeTBXSFppNHZPY3JtSytHd29ibldsOFlIa0hRd0FhNUczOC9ZaU9FTE1JT1dXRkxnOFdyd0dNM095TkZBOUc1amxsUXdQTytSemY1N2s1NEdQSzBMdUpFb01SOG12MkRpenM4Zk9JNkNPaWFVWU5pTnM0Y0x0UEhnbE1QTkpIUk5PTUdoSGZDNFNDV3JoR2dhSXA0WStycDdnR2loTnloNEkrNlZ1K1dMV0FEZ2laZytZVHpudlNLSGpRakRKdlJZdm80L0lzbzRVbElBbzJtd0NCUkI5bjZ6V0ZESEdNQWhaR3lzdkZsbFlBTGNOSXk1MldKazFUTTdSM0R3QUVtMUtueVhCSERlS2hkb0FYV1J4c005cHVKZ2FqK3RTcElvNFduV2REWlVlZDlQaFRyUTRtRzUzdFkwMHFka0krMVdUamcyQzhnM2Q4TnJGKzVqT0lIendoREtTbVNsMTZtbW9pclNnbkR6UzQ0ZDNiTlZ1NmtSZ2o0a1VDQ29FeitxN29KUXFOK0NRQ3JXZDBsQm9iTWttMDVZSTIrb2dpNkVnaU9wLzg4Z0NUTHV5ekFpeEx4QXRBN0VNWjBKL0ZDYWJuTE9rQXoxUnhwbHJFL28vL2lNUUN4b3hzYU5ZanlMdE9QN2hPWWhZbkFxUGk4Z290VHdZbXJVQUFFTHJXVmZ2NkR2N3hHQTg0VWVUQkRPYTllRERpcytZNWc5bm1HVXd3SXJERTAvajFjcW9oNGNoQXVUSFArWjRKVHU4bVNtaW1tVFZ4dFhsRWRGYlRIRFBuRGlrUWxWWEpuQVdsVWx5eFVKM1Y5QkhwdXloQW8xSVlseEg0eHpWYjlGdndQSW9HMy9tRC82MGFBR2Y4VXNqdDZQMDU2WTRha3JYZ3p4QVI5QXJLZ2twY0FpTHdnR21tejlNbzY5OE1pRU1WWUVlYjFPYmNab3ltWmFmb3NQbjVhUlpqMWpiU3BUOUV0bTVSUHRXVVJLdmpURi9HT1RFWWNiYjFGT1NyVDVNVER6TElGaHNlTmlZQjRoeFdveFl4aVl1SzZXZGdHWVVBemlxc2tIL0Q5Qm9RMTQ5L0pQYUNQT1d2RjNWRC94WURuZTkwSXJ1SzUrbWtVYU5NamZ3bUpETEdCMk5sUWhsbHpnaUVYa2FFUDQwTVFTMUgvTTQyUUZCaG9BWEJDWXl1WTIrSkwvVWU1WU1hWlc5bWlwem5TQzJ1UFp4Ti9zbFA0d1YxaVdzRUJMeUlWdUwxRWRtZUNJeTRoUWo1WldBMmpGYk1USmxoWWpwMjZxelk3TTZ4T0JnR2ZFRTVjT1M0bkQ1M1FZTFE5bmlQOWNqMWwxdGUyeUhyTjcwaU85N1lJeGNhbXZFN2RkeEw3NTZxT2FmQnRCSk1JaEFkTzNaTWZENTJCdVNSWldRc3NHN3Y2Z1FmSnhGZi9XVnhtUzN3M1VLSndZaTFIY3N6NVdqOFBDS09sdEZaVFI4UlRUTnFSQVNpQlNXVnNtM25tMlBEL2lSVDdTUUlCWWU0c05Qb1ZkQ1A0QndKb1lTSGNXNzcySDA2Tk40Tk00M0xGbHdBSXh1T0RWbkowdi9CVDh0d2xDdmE4VmJrR3J4R3BxQ3g5cEE0Qlp6QkJFS3VKS0RFTjl6L2VaMGw3U2hJa3pvSTAwVUFpeHRnd3FIcXBnd0F5ci9OUkJ3ZVBFa0JncFlYNXFvNTBzUmdaRS9QeHpNdUF6ZkJnMDc5ZzYxSEZ4WUZuOG5UajBWQU1udGdKWjR3Z1A5ZVA4QjMxQzhqaXl2bFZFcUtER1FiODZ5Nm9DMjJwV2ZGVERZQTU5Ty9BMmVJMzJEUkFMRUV4R2NHNmVCWGRDRnZnQXVBQm44WkdYVXIzOVJDV1h6eGdYblgvSTk2OE13QW1HeVd3M20zcTluWUJtMlc4NmM0azV6MXg0NmxmZXFkeUNETEQ4UUlSdW1GVW1pNkxpSVAxMnFtbVYyZ0FVSm1tSmptb01QZHRtdTN6bTVuSEo1QVdONTRhNzhzV2ZHQ0hENStTdTk1MGNaMzduNUxxcGNzbDBYTFZzcmk1YXRrNmNvWGRmSDN2a09IOGJ1eGlKbGg5Zm9ONmxUZmYvaUlYcHRrdDl0bDBhSkYwdFhWZFptUGlJQ3orZFd0aUcrRnZMaDJEZExYZWZRYWRLckV1NGl1UVROQys1eGdIaEhCaUtObWVsNVVvcG9STlNJQ0VhdGQvK2tKRGtSNk9zTVJLWUdJbTNWb3NZOVF4R2tLQUdCR2ZUQTdwb3VOd3MxR25KVUdNRXFXanN4a09abVhKTVAzZngyUEFZU0MzT3drc2JnUnJsUm9XRy9xOXpDY3NkUTdPSjlwQkF4NGNXZDA1dThsbkdJNHltdW1RZ3NESU5rdHlUckNWZ1B0SnZEQTk4SGZJSVFKbWd0NHBENmdUdUlFWU9STnlrRGEzY29IdVZVd0MwTHJBQUFZd215QWtkbkFWRXRpNEJvclBvQWJMUDIrU0svSXZwMXlNVE5QdFkrTDBEbzRlNzR4TFYxYzBON09UWWRKL2N3ZnRGeFpsT0lkTm5ZTlNFVDJjeks0YnJGWW4zeEMyajcvSmJrSVFHbE95Z1FRNXdCWTBzU09Eb0F6MDNYK0VJNE12YkZ6VGxuZ290dUdsRnkwcER2a2JKWXhBa2x6dXRPU0lxM0pPZEthbDZ6OE5ySWNBRnJjYk1YSWFBZ2xwL3JoZFJHTDZFOEZvMnZaQTVzenVxbnBNQjFxUDNRNWNMZUpWOUFobS9HMmR6bWtyR3FSYk5pOFZZR0o5N2hUeFV2clhwYTVDNHAwQndIOVZCTHViOWk4UldiT25TY1ZDeGZwZmROSFJEQ2FOMitlT0ozT3NaRTdFalhkeWtVTDhUenpVaUl0N1ZZSlJOanlESzNwM1VRSndVakZuWWlCcm56cEM1dmwrZXJsTXJkc2lacGl6NWVXeXJMU0pWSmNCTzJvckV4bUxrUmpXRklwYng3ZEQxTURFa0dmVUNKQ1hZUjBXTm1vV0RsOVdCelFKampSa2VZSWZTUzJ6QXhkakduTlRKWCt2L2tLZUlKdHpYWmsyamZYUTJ3TGFDaSt2ZHVrT1QxYjdEUUhJV3cyQUNBQmtXWFFrWjBwOHFsUG9mcHBwc0hNeER0Yy82V3BKNWhueEhsU2ZGNHpoMmYxd0thTmV5TTBUYStCZEJnY2lZWDM3SldPakhUcGdjQzNwYVVhaTRQSkw4MmgxRFFaZkc0bTRqVG1oV2tDS25kUSt6bkVUQlJBTkM0YzZJd2YycnRXNU11UFNCTUhDWEtONlFFNmR5a2xWV2RVTnlNL2pmbEo2bythS0hUZytiTUFSVGVBeXdWTmlEc2o5RU03dW9EODkyc1pJSDd3WmtVNnpMeGFJQ2dRZGtUdlFPMGxCS1B4WnBxUkppRHBHbjFHWmFYVjh0TGFqWXJ2cHhzYlpYWjV1V3pmdlZ0L0d5VTZnVjUvZmJkVVZTMFVqOGZIL202TXZGNi83cXUwZWRzMjVUT016TCs4ZGF0VUxWMHFSUlVWc3ZybGwvVTVtdWRkWFhhcEJOODJXNWZHTWF5VDdVUnE2dXBrWGttSkFsZFpGVUJ3NjJ1YUIvcXEzb255dTVFb0lSalJHT0hzNkExVks2UjZWb2xxUGIrcktKRzVTeGVpaDRCNU5uT3VWRlF2aFlxNVNrb0xLK1hNb2ROYXg5U0FETTBoQWVGWmRXM2pqMDhQSDkwcjNXbTVPb3ZabFp5bXZXeDdPc3dSQ0J4WHMzdit4OE9Yd09nZHFBMFZEb0NSZjk5MkJTT09CbDBHUnJodTVVamVuWGRCMERrZEFBempqMU1VUjlYR25GZ3ptaGlNMk1RVDA3V0FFUVgrU21DRXZsZmo4RWVRTWx0NWQ2L1lmdlViMll2OHRHUVZ5RUNxUlRVY1cwYXE5S1JuaUFmYUlaZHljQURCbWN5cENha1RCcjdibEpPcXp2NTJTNnBZd1U5UGhrWE9jYTBmekxXcmdWRkUrYngrK2xQQTZEL2p3QzRxcnBBdHIrNlVFeGN1U3VteVpZaTdTaHg5T3B0TEUyZDhHemR0a1JVclg3Z1VQNEpwY2hONHR1N2NLVjUwQ01IaFlkbjQ2cXNLU0NmUG5WT2dPblAybkQ1bmJiY2hyVkxwNm5aY0ZzK20xMTZURmF0WHk0RFBMMXRlMnliTFZyMXdtWFA4M1VTSnpUVGtlSC9OU2RWNEZpNWNMTS9ObVNQUHZiaFlubGxhTGZNWGxNcC9yRnNpODJIUGJsdS9VNkpPVkREK2ZPR1lDbm1ObWhIZ1RvL1VFeUtIM3BTdTFCd1ZZaE9NS0hoV0NEcFg0MGUrOElqNDNrRXdVcG9BaktpZGNmRnFzNFZtQnVGVkdkWno5ZWJlNEdERUdkbUQwU0Z4VUxYdGFwZldQMzlRYkRsM0EzQ3lkVURBUzFPTWVjMUpWMjFHbDkxd2l4VUFTaVBxdnhYM0pncE9BRTRYZ0VaM1UwQmVtM0NQUGlKcVdtdy9OejBZbFZiSmtwVXZTZm1TWmJyOVRYSDFJbW50N05SbFI0eU0vZEhMR3pmTHBzMnZhTnk4YjZaRFFLSlo5dHJPWFdPTzdEVWJYcGFYdDd3aUliU2Q1Uys4S0pYUXFEaGRvTnZlQTNrcWxrNW9TT2E3Z1dCWUFXdmZFY08veEwyOFN3R0dEWTNOK296MmhlOGlTankwRHhPTlRzZUxBWmMwOVhhSXkrMFFhMGVicXBWdW0wc2NFYWNNNGlFT1NwcUJvS0oxZlMybEZhVm80am44RVY5TU1LSm01SUNRRUJ5NHpvbkxIdG9oZUpFSHZnNStmRVlpMTlDWXJva21BQ01YdC9td2NPRXJnWmxnaEl5cG93dEF3anhPQ0VZQXN2OWlNS0o1eGpxSjl0ZEozZjBQQU54emhTdnh1Y2pXRG43dDZlazY0c1dONkRpVmdtWWJGKzV5NWIwck0xdG52VThVdkhpWFdoRjlTSDBFcG14akFiTHVrSkFHb0VNOFZ3YWoyREtnNjZULzcyQ0VPRGloZHlFMG4vTk5MYkw4cFpkazhmSVZ4bzZrK0oyeEVIRG9tQ1l2bkZ4cHBrYy8wZnBObTNVSFUvUGVTK3ZXS3lEeHZMWERKdk5MU3RYSmJiTTcxTC9WWnV2VTN3aFcvQm91d2FpNVF5ZDM2QWpjb21YTDViVnRPNHkwRTdOL1UxRkNNRks1NnhzUTM0RzN4UHY2WnBHRDIwUzJieFRadVUxRzl1d1JlUlgyODFtWVp0RStQQnVieU1aYVFiZ21VVXNBUm16TVRSQ1VMcGhvRkJydmZaOUhIMjhNN1J0Qzl3N1FPRERpRmhtZEVOWjNCUmlocUx4ZWx3ejgyNVBHak9pOExKMngzUWxlZWMzMWJycFRBODUxalZsdXVsek01aTRHbkdDWm9ldmVKZ3BXbU5UZGVLN3R6aWtLU0Z6Znh5a1IzQ3p1L0pTTW14Nk11T0MyZE5GU09WL2ZwSEVjT1hGU25wMDVTODdXWGpBR0lCRTJ2ckpWelNjem5VRy9zVWlaZ1k3cWRSczNLWjhNbTE5OVRhOU5UV25uN2pmVkYzVGd5RkVwcWFnVWEyZlgyTHNFcmJuRnhXcldNUTJhYVh5MkF2bWoxdlJPbE4rTlJJbk50R0MvUkdlVVNXZjJCOUVENXVvMnJ1N2NQQVVNYmpuYWxuYXJIRTZaSWtmLzZuT29sWFdBYjdzTWhRZU1nbUxwSnlLMEJ4T002T0FMSFhnRFFwYXRRdHliWXRFZW04NXI5c0kwMmV3ZitBUmdBTHFheXVlMUpIQU5CREFLN044aExSazVsNEZSSjNpNDJjMDBUZUgwVVdpVytlTEI4eWVuMDdkamFETGNNc1VGL2xpdTFwUXNzWDNpVStMNDV4OUk3N08va3NpTTM0djgrdGZpZldiR2hNRTY0eGtaZlBZL3hEN3ZLVGtQVGFnZWFlaFFQdExnaU5yVndlam1NTk00YmVVRm1HRUI3aHFKNjBnWTJzNkdqVks5WktuNmpoakxXd2NPcWxaenNkRUFMQVpxUmRSeVpzMmVxMzRobWwxME9sT3I0ZnVtQTdySDNhZmFEdVBqQk0xT1I0L3U2ODFKd3RTYVhsaTNUajhzUUpPTzRFUlFtanR2dnRUVk43NGo1WGNqVVVJd2NySENPcTNTK09XdlNnT1hTNmdKZzhaTVlVdXpxUEFHSWF6MFBaekx6aFBIdno4SlRhb1Q5V3dJWEVMQ002YUEwL0tLSHQ0enBobTVVMkZDSUIydXd5SW9jVnZYdWlsMzR6bkRUT013L1R0Q2NXREVIUi9qd1lnQ2Z6TTdzUG50anY2ZlBLbkxYRmh2OWZuZ000bHpsUXAwR2dPMW9SUFFDSHQvOFF1UjVucGtqRVk1MThmMUl3cE9ZYUM0WHozb0RnYWpIbFJjb3pST2ZhOTBKS1hxM2xnY2xhUUpkN09EMGV6S0tsbTlaYXNPNncreHVTRUNPcHRuRmhiSzdrUEdOamdkRG9jNnFwZXNXaVhuNnV0bE1CaVUwN1cxc25ENWNubnhwVFhTMXorb0poWFRwbStKUGlhVEY3NVBaL2FDOG5JTnRwNGVDWTJNeU5IVHAvVzYwK2xVdVREelFLMXI4WkpsNmpSWHY5VzdpQktQcHFFRVdBaGl1eUJuSHZoTE5DcGo0L3N1Tk9oT3FPY1VCQXB0TDlSek9qRnJrclBFODVOZkE1QzgraG1naElSS0NuUHBBUkpoeGNqSmcySzM1RWtyNHVVRU9nbzE5MW5tL0JWT2hEeHRtV0tBRVY3aDhQQTdRaE9CRWNwZ3dxSDlHeHlNeE44dmJYZjl1ZnJCZWxCSDNEaXVOWGVxbklIV3llMDliRW5RY0IvOXBraC9sODVMYWtGU2FvV1NVUVQyNkJNRjdyR3Z6NG9iV3ZNZE1LM1RkU1R1ZkE1TjYzY0hHSzNkK3BxUlJid2M4QmwxOXRLR0RiS2d1a3FCaUR4Y2JHNldpc1dMWmZhQ0JWSythSkVPeDVjdFhDZzl6bDVOMDNSc3IxMjNRVFlEM0hoT2dPSzd0QWhXcmxtajRHUHQ3dFo3akdQeHlwWGEzZkthWmgxTlF2S3hmY2N1cVY2NFdIcmR1bUhNdTRZU2dwRXU4QnoyNlFvbWFiTkt4Ly80QjRERUZEVmYyaUJ3UFFnK2FBNGNQYkhtRzErODZFZURERHorSTVSaXU5aVpDdXVjczN4NXdsbStvME9BRTBNd3RXcEh1TWdDd0lJTHJ2N3F6cnREL1JuY1lKK2pNOXdBdmpzN0h6MXR1alJrM3lKeWVBczBJL1EyckNueXhjV24vT2FaK2lFWUU5ZDFHWTdiUk1SUElZV1FjT2l0N1hKbTZxMDZ3c1N2WnB5YXptSHRQTjJuK2dUNGNELzBFTkxFazJSYUo0RUdqUWw4QUJnVGpHN0VlVWFCampwb0tiZnBqcGh0ZWVtb215eHB6QWNJRVRqeDdua2NJNlZ6OEtCWGVkTjFhT0ZCdkc3NE5FelMyZk54WVl3NFlxcFY1NVBXcEtucXdLNUIrWEduaFY2VXhkWEE2R2FaWjlUWjJTbHV0MXNuSjhhdjRPZTZzVzRBeCtEZzROakV4U0Ewb25wb1JseldZYlZhZGZKaS9DSllYak11bDh0MWVSbUNQQjZQN2tySkk0bHg4OXFrK0wyTXVHVElaclBwVEczOXdncWlVaTA5bGtIejNQajZDb0Qvc2wwQ2pNQWRCSGcwdGptNVJNeVhTY29qZTV4WXZFUGN2SXlYc2ZqajAwd1lFQStmTjRQR3kzdHg1WkRZWjBTbTBYaTRKU3lYYW9pclRTNTg1Z0VKcEJZbzhOUkNFRHFnTGZIYlgxVDc3Ymp1dHFUS2dYU0xBVWhoUUVJWXFqOFhGQ0pCQ3ZCUUFIR2lmQlNRV0RZUUlKMlBqTnMwaFZydi9aamhUSVd3c0hGek1sNW5jcXJ1azlOaEtaRCs1MytINS9Yemlab1pDcDh1TFVFY1VRQ1Ric0ZCdlpybG5ZQzA2Q0ZRd3dmZmdHWXpUZndaeWRxenR5TGREbWgrNU1PV2x5R2p2M29Lak1lMlRsV21BV0E4eC84YldUUHFQM1ZBM01uVGRQNVBJM2hpUjFHWFkxRUhOaWVVV2hIazBIYlVSWlMxcXdBZTVQL2hJUWtHTGdtZmxuTXNYRVo4QkVteGUzR2szYTZEREowRmFlcGI3TGRrM3RTYWtablhlQUVsOFpxL21lREU4L2o5akV6Z2lBZXY4YUFVZjR3bk02MzR1RTJLUHg5Yk1oTEwxREE2ZVZQUUZUUWc2THdYWmVjU2F3K1hOcFF6d0NnY1pvMGJaS1pyOGpTV1o4UnRnZ2ZqdTFTSUNER0E0ZkZ0OTJMWEpsOWp2NDhMOUp3eGNEMW1ZakR5aEpWQnFva3NiaGRucnRndktpQlJRK0tRTy9jWTBvM3RMZWs2cE11WnVRUWtOdnkrSHoySjFnMDdHRTJjS3h4WU5JeEhBWW05S3ZMTVhmK1VKWllEQkxiMXNjZWduUmo3Q1ZFN1lnT253NVg3UlBkeFV0N0QzOEtESG1OWFEwYUlUUEZWeHFzVnhuTGtKRDl1VUphSVdPZGh2TG4vRGFTVEt6NllhTnpiaUNZaHQ5M1Z5WDlwT1NKcmxzdG9OR0pvVzRvdWVKRUZlb09EMFNBMHZyN2tBZ1VlQlFnQTdNVXM4QWRlbVRkUGNyNE03bDZ2bTdMNTBHY3dmN3BiUUt5SFpubU9ENWNSK3hvY3ZINjdPTlB2MUpFMEcrSzNabHBVVzc1WndHaDh2Z2dlcG1EeXQzak5LQjVZelBmaU5ReFRrQWxRNW5sODJjVy9UeG9UZkpDWjFwVm9mSHlrTVlDSUI0UzRZTzR3YVlJU1FlaFMzaS9YOWtqeCtkRDhNOTV4Y2I4TlhNYUIwWlhlZVZ2QTc0eEhUL0dmSWVIUXZxSFBHSlVaVlFkQkRKQ2dJZEZrWStQakJ3ZXB2ZERoVEgrU3JtV0NnRkJ6YWtqS2tjNG4vaGtSdUNWQXFZVGNNN3RxNHJBZzhhZkxDTUVWODRqU0ZlZkNDcGhrV2VyallIejA0N1FqOEFzVUZLcjJLWGVMSEQ5czdHcG9sRFVLUGZaK0xMUGNCZEpZMUpxQWtMNmZTMWUyYjRYbVZhQ2cxNWhyakFoMUEyQzVMcTQ5OVJZWnJqbXNqM00xbGRFUWtKaEdQeEVZQWFUL3EzMUdSL2VqYnRKMXIyd0NVRzh5dEpiMEZHTzdXcFlseWptd3FscWZWejVaeFZ3Wmk0YklkRTBoTXNQYkNPOW9wekRTSzFiTGRFMkhlNVQzVEM5UXJldnFZSFRqRE8welgxY0NDQXEveTkwN3RnL1IrRzFBOUN1K3NXSWVmelNEdWRVSDM0M2ZCc1M4UnpMTGxjSlBQa3hleG5ad2lLVnZCc1pvdmg4UFpDYnhuaG1uK1k2NUQ1SVp6THlRdkY2dnJvMGptV25IZzU0WkNGd01WMHJUVEkvRU9QaU0rUnlQNXJ2eDVjeHpmZ1dZYzZyNFpFSXdzclBDK0Q3VkRyeEJRREpPb2VLMVdjWDcyYi9TNzNoeFpiMHZEV1lOQUlrYUVrMDIrcEFhQ0VycFUyWHdoeitGM1BvVWtLZ2hHV3dpWXB4VDRSd054N2FmWlJxMVovRCtkQWllTVdmRkFjSG1STHhlTkdnMmJxWVgrS2VmNDJHUGZ2Q1J5cWFLTmN1REFCRWRGYzlvd0Z3clB5R0ZrQmt2RFpQL2VGcmFMVG1xMWZFejJRUzliZ0FSUDZib3VPL0wwQUNNNlFyVUhCVDBTTHFwMGcwT1JtMU5jall0MjVoSEJIRHZRcDZzWExZQi9qcHdYcHVjSXVFZi93U0ZNS0RyMW5vSHdCUFlJNC9Cd09CbGpmRks1RU1QMTAvK3VtcWxNVE5IdjZyYllrblJiWUlkeVB2TkRrYkZwU1Z5OFBBaDhRZU5BUXNLTllNSkNBemh5T1dDenZiUllldlM4L0VnWUFiZUp5REVhMSttOE1hWGRmdzdacG9td0RHUXpQcmgrMlkrekRqaTMvRUYvTkp1NjlEck1MUjh2WTkzZHU3Y0tTdFhycnhzUHlYNnYwaG1QRHlPTHlQeWZxWDcveG5pZEFadXFlSUxoUk9iYVZ5WFJvV2QrN1lRaFZoY05Obm9RMUtuZHVOUnVmak5oNlRKa3FXQVJBMkpKaHQ5U0ZUVDIvajVINWdHZlVuVERFQ0NocVR3TVlUNG9tZ1VzR05WSkwwUlJJOTd6RHNLNHV4ZmZsSHFJV2cwSmZpSm9ZdG8xQnd5NWlkeFd1alhtZjUraVc1ZWljZTVSdzU1TVVCTmtSSVJjbkdvQVZNVGt4WTFlR3I5eTcvV2oxaDI1S1dveHVCT3NlZ2kwRE00SDN4KzFsaGpOcG9MaUtDbmxYQ0RqNlo1L1hMK281L1FjaVFZVVZ2cFFyMXlNU3pmYWMxT2xmcjgyMFRlMkNKT2xDVWQrdVN4ZHhnMkc2VEtiSXpqaWZlTjM1Q0hzRWNjdjMxS0Y5ZHlCTElsTTBPMVk1YmoxY0hJNk8ydmw5NEpNQ0tOenljRmpNSjI1TVJ4c1hiYWRMc092c0ZWOUdaOFBLZHJrdWM4Y25zUm5yZDJkRW5sb3FYaTdCdlU2ekNBaCs4VGxoaUNBQUlHL21hU0NVb21tVDRvdm12RWI2UWZIdyt2Q1RZbU9NYURsQUpkN0Ixelk4T09icnVVVnk5VWJZVFgxRWlZNzVhV0ZqbCsvRGp1SUM4eFFEVEpCRE1HbnBzZ1psN0hIODNBWnhoNG56eU0vOTNjMTR6SHd1SXlPWDY2UnZsSjdEUHljWHhyUkFFSkJ5VXRPRVRFVVRZQ3dGRE5jUVVrMVpCZ3N0R0hSS2MyUjlrNEQ0bHFPd0dKR3BLYWJNRWVjSXpHanZoWVRGb042bnRBd1RNTmhQNnFDckhtd1l4QVhQeXVXVmVTTWFXQW8wSmNDMFhONjhJSDd4RTVmQkFDNTBZbXd6SXdpbDZMa2FsMmhFaU1mV0VucGlId3NYNk5PQXB1a1RvSWtodHgwMGZsQjZqVVpjR2tlZThVQ1YwOHJvMU56V3ZrVzBzVTU4Ym5BMjVzTUdMOWVKNzhwZWFKMjRCMEpITnJYZkRGOXhBWEJ3bDBxNWF2UWZzNzlqcnFaa0NHd2h3OU5hSzRFckVCVTFpMTRRNDRSYmJ0a3VacDc5WFJPZnJiR3RBWkRhVGwzRlJnZENWaVBzMTNUZUgzd2RReTd6bDZYZExqSHRDMllkNWphR252aE5BdmxzYldkcjNteDBuTjMvaStlM0FBUU9YVzgvR2pXWDQvMmlQSTFITE05M29IK3ZWSVM2RGY2MEc2eGhlUDR3V2RBdDZQdVB2d3JNZm4xWHQ4eHB3U3dFbVluTUhOTlc2OFpqREpCRU9PRHBwRVRha1hmQTU0QnNjMHcvaTBOSDdVSmRPejl6alE3L2t1ZTRaYjd2SzVRZkxyY29xN3YrOHlUWkh2RmxkVXk5NURSM1U3NThSZ3hEbEFBQ1JxU0RUWnRIZzhLTUFoN240Y0ZRZVVEOVZJb0NIUlpLTlpSWDhFUjlrNDdNOEdTVUNpaGtTVGpUNGtkV3FIQXpyc1QyZXBnakdpNU5kQlFqalhCdXV5U3Y4OTA4UUtrNm5Pa2l5QnBBSnhwbVhwOS9QcGkzSkFRNkovWXU4OTkwbXdiREVBcVY4RmlLQ3B4Y280K0hXTEJPU3RPU3FuUC9SSjVadEQ4elJuT0prem1KUW1KM1BUUlA3dVFiRFdKd0hrVS9sQ1lXb2JSckVNa09rYkhJejBPMm5yTjBOVHpkQnBDL3d1SERlUkl4aTFaOEdzQnA4RGlJZVRGZXZlOHhIeC83RlFwSWRmZ1kzVjZ4VkloUlNWeGdiY09uK3U3TGpqUTZpTFZQMk0xQVdVUVhmQlZKUURPZytrY1RPREVhbXd1RWhPbnVYWFlhaGhoT1hWSGR0MWs3T1ZMNzJvdTFhVVZpNlVGOWFzMXkvYjhwazFHemJwbDIyNUtSc0JxYlN5UWc0ZE82cGFWTGV6UnpaczNxVDdFakhlNmlXTFZTdmh5QmpMczYydFRaWXVYU283ZHV5UTVjdVhTMmxwcWNiWjFOWXF5MWF0MUUzV0dOL011WE0wN1pvTHRXTjVvdi9xNlBGalVsbGRKVE5telpTU3NsTFovTXFXTWEySWkzTTVTM3pPL0FVNjIzdkduTG02dElWMDZOQWhXYjE2OVJnd0VnU1BIajJxNmM4dG5DZmxTUE8xN2RzVTZKZ1dmVjlNYTlPV3pmTFNtdFV5djJpQnpKazNWOVByc25mck13UWFQdi9pNnBka0FmTDYzSXpuWmRtSzVYS3U5dndZSVBHWm92SXFPWHJxTEZ1NEpQRzc5WFVRYktyWTNES0NEYll1RzJvOHpCVUtaaUpLTkErcGxwUGZJQ3o4WkRiVDZzRjVSMnErMkwvL09FclFiYlFITDk0bE53cmhhS2k4R0VhdnNYV3ZlTk9Nb1hZSEdqVEJxQjJtSUxVdVI1NnhlVDQvWVYyZlBWVXVmdkl6RXZ6RGJKR0RSOEFVWWNrSGp2eklNTlZkT2dVaFhQeWdJWkdCeVBMNlh1bis5Yk5pTDhpV3B2d01BRytxaEFFa2ZZaS9FZUJublpJdHp2eGNGVGcybFBGcS9DWHl5SVZISGxHaG81K0o0TnVTRHVGRHZrTTRyOHZNUlY2UXJybkxHMDFkcUcrNnZ1NXFVY1lSSGZGOGpVWFNjMnkzUkZKdTFYdzdrVjRUekNGcWk5eWd2eWNwVzZJem5zT0RQc1J0ekxNYXdMbVY3enJjWW52MGIrVVlCd1FLT0tKbThOcVFOUldhcGtYYU1pelNrNTZKK2s1WC9odno4c1gydFFjaytPd3Z4TG1rV0VMYjE0dWNlRk1pQjNkS1pQMExNdnFIWnlUd2xXOUp6NjMzU2x0bUp0Sk9sbUJLcm9KT1kzYUtuQWNBTjZPdStRRkttbTNjcFpOZ09EcmtCVWZHVk5XaGtRSGtpWlYrZmNTeU1ZR0lHL3NSaUdhWDRMcHlrY3l2WGdJd01nU2F3VFFaU0tyVlhRTnhvZXJldzRjMUhXNEJ3cjJKT0xGeC9aWXQwbTYzcTcranNMaEVsNFF3eGk0QStmSFRaL1FlZitOcS9QNEJqNmE2Nm9XWEZBanFtcHFscmF0TDQyRDh6Z0ZvVi9qZDduYkxmTzRMVmxnb2IremJKNGRPbk5CMEc2MVduVkJaVWxVbEoycHFkSUxsaSt2WDY4Ukt4a3VoYm11MzZoWWtYT05HUHM1ZXFKY3lnT0hoNHlkVXJMZ2ZVbTE5Zy9KVmMrR2ltbXJtR3JxRFI0L3BmWjdUQmRNRU9lWTZPYTZiNjNhNjVNU1pzN283NWRidE8vUVpCdDRqMEs5YzlhTHVOSEMyNXJ5VWxKYkxqcDJ2SzA4TW5OeFp2WFNGdE1CczVhWnpyKzdZS2NVbFpRcWNwak4vRHE0UG5EaWwrVS9pQ210cUJkeFRtUnRrdWJtdk1yOTZtcHdpZlduWDhFWFpCUE9RUWtsWkFKTjBxYzlNVWNEekFqd284SFYzM1NiV3g3OGwwYUJQelVDeXhreHkrUWtaVTN0ck9DVCtMMzFKYXUrWUxuWUw5ODh4UGhMWUJDMkwvaWdDRTdXalB2VEFIQVhqL3RXdDZhblNnbWY1TFhtdTltY1B6ZWtBZlFEQXp2UUNDSENPTkVLN29HWkEvbXhjY29Kakl3VDFETUF6Qk5PU2NlM0pteUpTTVY4YkxYdUtxNEpSd0NkdG4vc3F6Tk0wc2NPczdNbE1GMGR5ams3OEl5QzFackVNZzJPcU1vdUlwSjhnMGhzVDB6QjNsU1JnKzBmRWNXU25OS1praXczcGNIQ2hFM2xyUzBtUmRrc1dUSzA4NmYvOU0zZ0J6N01GVTg1amZnbXRsd1BiNU1MMDJ4VElock96ZE4wWVYrOXpXUS9ONkJvQUJyVk9kaFpzRDI2VWJYOHl3UitkUUhJK3lwRGFUZ0U2cXl4cHRhQStrYmNhaEFEcWs1L2x2Z0FObHVYcFFibXlFK3ZQU3BlejdJQndUckJ5UXlNR3Nxdkd4ZnlFQUVidnhBeDZadFVBb2lyakF4QTRNc3dzcVpEbkZwVEsvQktBYWN4TVlnMVNjQ2VzejNIRVRkQU9uenlwczZSWnBHczNiWkxLSlVzVVFMU1lFUTBYeVc3YStxcW13Vlg3OU0zUUhPS3FmTG9kbUpMVDVaYXF4VXZrelBsYWZZN3Y5dlQzSzZBMFFDUGlOV2R6RjBJYjJYUHdvQUlmN3pFUXBPWVVGY21PTjk4Y3UzZWhxVWw1Nit3MkhPVVg2K3MwYnZMRGlibkJvVkY1WWUwR1hjdkc5SGpmM0NXQU93U1lJMWdFSHdJTHdZang4aDVCaDF1VmNJMGM3ekZQdkxkdzZiS3g5M2J2M2Fmdm1Mc1hjT0h1UzZ2WDZ1WnZkT2h6N1YxalU0czB3RlNsQ2NaM21QNjhvbUpwdGJicE94d2w1SmVEanB6aHh5NDRtc1k1SVd3d1VQdDVaT0RleGYxb1pHeXNDU25CUENTM0pVZG5VMXNCU053MGpaODh2b0JHU2ovRkVBUXE5Q1I2ODk1MkdFSm9tcWh0dGhHdWlHTFBUaCtTK0R1azZXKytiRXdYUU9PM1QwRURoOUR3WTRaT3l5MjZURVMzdjRBUWRBSkV5WDgzZ0pSYTNpQjZmWDRYbnIwOU5ZaStaSmdPMEFKb2p0SDN4SytndXBJQnZCRElIbXFHQURtdWFHOUZ2SUVuZjQ4QzlHdWp2VnJEMWZzamZtbDkrTzkxM2RkRjhFRy8yWUJsaXZqeWJwY0d4TVdQQ2Zpa2w5K2tCUUFoZ3loMW1sRWN3YnVxSFhRWmdZY29Ia1JsUnk4ZWxob0FIYitCei9UczBJem9TK3RNejVQbTVHbmlldTU1UEk4RUNGNnNmV2dDTE1MZUlPcGtHSnJJa2tWeUttVUtBQ1JISjNQNjh5eTZmb3dBUlEybUEvbHZSNWswSTM2T1hySURxUWZ3blVNWm5zRzlXanpUbG9VeXhEa0JoeDFCRjhxZFJ3NDJOT1FiSTZyVXJqdHpzM1VMRVlKeEgzaDJKZ0dVUjZrUm9zd1VrSFc1ODNVVDJ4eUZrb0EwRnowenY3SFB2ZGdaaXFxNStMUnN6SUhNV2pUQmlHUWVKeUthTmtkUEdudGRNM0NyRVBNcnRXWlkrL0pHWFlsdlhsUFlaeGZPVjYyQ2FYSXp0RFpyaHdvdnR4K2hvQ3ZQQUNLZUh6cDJYTUdDV2hYQnd0eEdoSUg3Wi9NK2hmaENRNlBlNHlKY2FqWWNpZXJvdEdrYUROdGZmME0xR0c2Qlc3Vmt1UlNXbE9zV0pueUg4WE1STHJVWjhtVUNEOE94VTZjMVhmT2FlZVJXSitZMUEwMDZicUdyQUl0cmFuOTBoaE4wektVdVhIZTM1WlZYeC9ocGJXdVhsYXZYcVliMjNLeTVDc2JVREswZDdXTmE2dHlpVWpYVDZKNUpzai8ySlRtWGs2bXpaZnZ5QVJSb1NCeHA2VVNENDZiMGljaHdzUmtNWDJrZVVnZDZ6VFpxSVdqSUZDTDJ3cDNaTUxPeVlNcmduTVBuZzAvOVZQeWhKZ2dzV2luazFRL1pvKzluMUJkQmo0UWV3dEVpOVk4K2lnWk5iWTBPVWdoQUZrd3J2TS9QQ2psaFl1bVdId1JVQytMTlRrY3ZuMnI0cUNCTUxkQjY2Tk5SSDB0YzRPZWhhYkp3NmdDM3VlVytQTDBwdDB2UHM4K2hzdnk2Ti9XVnlBUW9CbTZjNHYzZHMrQWxUYnpncStjV2FBU01FNkJIVFNFSW5qa1RoeTUybmRsTXh6cEtUWGVyTkV6MGlRa05qd091SEpzWWJqZ2x0dnk3VmZpRHlOc0Y1SUhhSXN1NEFhRHZuUE1zK0E1cWJ4eU9HSnFtdWtaUXB0UmNvd0Nrd09aMWNqQjdHclNmVk8wa0dtQm1xYWtHTFpLTFd3bFNCQnArNzR5RERsM0lWeWNBdXlzMUMrWTJBQ1kxVTFwVDBsRmVGdTFZUE1nenRaL216QUx4L2VDNzR2N3g5OUZ4WkNQZjRBOWxYNDk2NXllZ21GWUFzTnpQVERORDZNQzBLSzZUcUVHc1dydFd6UnRxUjZXTGxrRDFMemZBYUNGTW13ckRaMlNDa1dtbWthN0ZWQ01ZbVNZWVd6YzFJRzREWW1vSTVwNUZYRkhQM3hrbzlCUmNnb2dwcUs3ZVBnVUNtajdjditqTkF3ZDBNUzJGM0JSd1I2OWJBWXZ2TVY0VE1BaHVCQzF6Rkl5QjJoZE5LWWV6UjRmc2QreUNDUVJ3b3NuRnI1azBXVzJ5YXMxNkJVcHpqeVh1RU1CMytDN0J5WXlMNzhTREVmTklIeFBQeVFmZkoyQ1NCd0laNzFPYm92L0ovS1ljSHRIZENCalkvdmhGSUpwd2ExN2VMTFVOemRMbjhjdWUvUWUwREV3QXBZTzdwSEtoSERvT013MDNrbVRqY2puN252Y2JqUVdDNDBMdjJEMFZBSUlqVjNnbm9rVHprTHEvOW1XeFptUnJEeHlrOWdHaFowL000ZVhhS2ZuYXk5b3pJYmovK21NSXR4MFFnQ3FneHNCSUtFUTRLRVU4MHZhcmY1ZVc1RnYxNDRBMHc2Sm81R2Rqb0VrVHNCWEN5VjY1Ry9ubzVYUUM5TWgybUJWZHlaazZURS9UanI4NzhSdzNzYWNnRTR3NEo2WVoyb0x0QTUrRlliOGV3b0krT3hnZ3BMNk40b0dJUWZIazhFbnB2TzJEcXEwTTVXWklQWGppVnpIOEFJbEJhcGN3bll5RzVXVU5JRi9jakI1dmptVnVBa0k1VUlOUVhpSjQvNmUvbENia2p3dGV2WWpmQzAybUEyQmJuNTRzZmJOL2g0ZWdWN0xzcUgyZ1hxaUZzZUtaRkhrTkI5d3lkSENiblByQ3A2VWxKMFBMaDJaMFR3ck16QXdBT2pzUGxLV1ZaUmtETzRLMCtxa1FxR0Z5SFp3VnBoby9Cc0N5YjVwNmwzUTg4MGVrQysxcjgrc3dUeitnejNaQm8vSWhEZ0tjRmVVUkZDZEFHTG1oNmtzei9KbzB3NG5KRUl6VFVscGRMYy9PbnExcVB6V2tZdlRHaGVWVkFBV1kyckhuVkdqMC83V1R1ZGNRM3ljQVVVamp3WWhDVFZNb1huZ0pHdFFhV3RxTk9UME1YTGxQZ05yMTVoNTlqdlhoR2h4VWphcloycTRDejcyTXFBRVJMUGc3bjJQZzd3UXAvbTZDQ0FFcTN1UjVlZE5HM2UvSWZLZXpwMWZLRnk2NTdCNzVJUmlSUHpNZUhrK2VyVkhRNVRYVDNiYnJkUVVubW1ubVBXNGd4N0l3NHlLQUVWaVlOZ05CaVVCazduakpCY0l6WjgyUmMzV05ZM2toQ0hPN2xIaHRqdDlWUEhMaXRQNE9GY011OXQvOFhocHYvU2hNcHd4b0s4bTZ4U3ZOS0RhOFJKUndIbElvS042ZlBRMU42ejFxYWpGdUZTUUVKM3BRNXhURFFkMmJkS2Y0ZnpNVGIvT1Rqb2pMYjFTMm56a2gyUG5BZWlRaTNvTzd4ZmJWYjRvckxWOU9vNEZUczlJNU5EaFhnQUhZMlhEc3NCZzlOLzFFM0RTTjY3RmFwMmJxT2pPdXl1Y1FOMzFqaDNPenBEbnROdkU4L20rbzRUWmtBSWxSa0hIMFJ5ZzFsMmc4RURGUTdtbXFSVkF4WGJkL0NHQUhRT2VhTFBCRWNLckpuS2JnUTJCVmxZRHpSMUEyOUo3ZzljUUVCS0cxeGV6cktGelRSVG44allma1JGYTJhb1lFQ1M3emFBRGc5ai8zREZvT0FDc0c0b01vdUVGYzhIUGVlaU9takhucFRiZWRrNkUvUEMzTnQ5d3BWbWcxRG9BbVFZY21iVFBLa3JQZEd3cHd4SGtyNm95enR6bXJucU9FMUhBSi9nMlphZEwveE9NaTU0OGpYNGlaK1VGV20zLzhDNm1CdWRZR3JZajdhYk10ZGQyYUorRW9SMW9JOUhpT0RHbVpYQit4alhDVWE4LytmUXBJTkgxbXp5K1dvcXFGTXF1b0JLQlFCWUV6OUhleXArWUJ6TE5yZFdBWHppK1MwMmRxOUYzMi9tdldydGNlbjlkc0tnUWZDcXBwRGpGUTJDbjBOSGNPSFQ0cTUyc3Y2ck52dkxWWHpSUnFSL1FMMGYvRTdVRGNmY1lvbGEyelcxZmpqOThIbXhNb3k2SDEyUjFPdmFiZ3E2WlZYS3JENWZTOTdIeDlsd0lXUWFLK3VVMi80dk1zVENQNmVhaXBzZm9KWU5TZXFDMVIyNk1qbmZ4UzZ5RVlxZHppbXM5VEN5TC8vS1JTUE45OG5rQk0wNVdBRzgvbnV2VXZYd1pHekJ2OVZ2UWJ2Ym52b0c0MDkvenNPZkxHbTd2MUdack04NkhGcmw2L1ViOHhsMFRMVFR5OUV0MnhYYnFmL0ZkcCtQbzNwTzRyRDB2SEkvOGd2bS8vRUs4a29BVHprUFJ6T2R4MjRVeXQ5TStaSlEzZmZGVGM5ejhrL1Y5OFJGb2Uvb2EwUHZoVmNYNzlNUm40NHZlbDVic0FCSjhmTWtQWHByR2h2d3A3Q0dJSVZHSkJxVGdGWElqdm1NalBmeXVCVys4V0p3U1RTMFlvU0M0SUM3VWZEbmV6aHlmd2FjK08reHpHcG5PYXd0RTZkWnJZLy92SFJXWXVFbkhhRVMxeUVEVmNxdllodzlOdkpINko0a0hJSk1xVmt4a0hJTWtSbUZFL2UwcDlTTjBQZmxOTnkvYWZQeUdPMklNd1RIQ0NYQURBUjVITFlLeThKaUpPb1dmMFVaU0JQOENKb1hqZmJaZlFzcVhTOXRqL2t2YXZQaXB0ai82OU9MLzFBeG5Zc0VrQ3NmVitCQjNPUU9kbm1IVFJIL0pDazQxYWxwWmpDTWdVd2xPaGR0VDlldWwrL0VmUzl2RlBTMnZCWGRBZzgxQ1d1ZEFhcDhDVW5RTEF5MGZJZ1dtYkoyMTMzaU5kZi9jdGtSWGxRSjJUUnJtRmRGZWpTMjBnQkJEZnYxdjZ2dmU0MUgvOU8zTDZPOStSNEwvOEJJQ0t2RkFxd1FmcldOY2lYaWRSMDJGdGNCSmhiWDJkamtKeHhHdkRsbGRsRFFUajRGRmovMmdHUGtmVGdIU3RZTVM5aDVwYjJwUnR2bi9zK0VuWnQvK2duak13RmdJQUJkWTBod2hRTzk3WXJSdWlMVit4U3VvYm12Ulpta2wwL05KdlJMTnl3eXV2U0h0SDUxaGNISlhpUGtVOGFqRWhFQUFKVGh5WjRzZ2NueU1ZRWNBMnZMeEovUys4eHhHcVY3WnRWMjJGRXk1ZjI3VmJSOVNZVnZ5bWJ3UVUrbTVlV0xOV1RwODdyL2M0NnNkMzQwMURqcnpSTjBiQVlSdzBzZmc3ZnlNWWNhNlNtcVp4ZTM3dmVXdWZIRGg0V00vSk56ZUFXN0x5UmZVWkxYOWh0ZnFtcUFsU2l6TW5haDQ5ZVFiZ3VCbnhINEptaExiS2dmQStGU3VvMlg3QUIwd2lycVEzWmhBbW9BVHprUHFSUFYxNHFTVUdZUThiWHhJZEhZVlkwT3hndWhFT01ZYlJYK005VGxUMGV2QkdDTm84ZmdzRVZBRDVsUkorL29qYmJ1aVhSeUJaNUpndDJtOXRFdmZPcldLYi9adzQvdStQcE9Pclg1T0JCeDZTOFAyUHlNQ0RYeEw3ZzErUUxtZ1RnNC8vSHhHb3lySm5ud3k1bldyNmNNU2Rna3R0ak9seG55SUNOSEhJRDdaTmlnZWllREFpRTN4L0lCVFJJelVSSGRFS2NBSVlZaDlza2ViWWN6UkI5ZE9QS0N2dWhua3RWZ3IzYnVKbnA3WDhFSFUvR0dPRE1BQ0dPU0RZb0N6dGJuMkdTem9VY1VKc3plUURYSUVYQWp0dnE1K0c4b2hJNkxvaGdHajlrTUZSOU5EQkR1bHJQaXg5UjNaS2RPOU9HZDE3VEFiZjNDZjlKMkdxOUhib2N6VDl5QU0vZ01rNEdGaGVYdjBXR2lOSGZQalQvREc3TEJtM1E3cHdPZXFGd09JOStvNkczd0duRVhuUk5XSTRad2h3eEE3MXc2K2hzUFdhTTVnSlZpeENhaEVtWFlzRFc0dWRPMDR3UzdqZ3RYbVBSOFpONFRRRjFUUnRHSGpQZkk0alRMeG5BaFo1NHlacS9JMVRUc3dsSmViWGx4bk05SmkyR2MrVmdqbmIyWXpYUEhKRWplY004VDRpL1EyeWJWNHptSHh6WHBMSkl3UGZpNytPTjA4MUxmQkdIc2hyZkY1NUpGRHhHWTZtbVIvQjFEaFFCL3pkZU1iTWg4ai9BOHlQSXBPUzV5NGVBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiRklET18yXzAiXSwiYWFndWlkIjoiZjdjNTU4YTAtZjQ2NS0xMWU4LWI1NjgtMDgwMDIwMGM5YTY2In19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIwLTA0LTI5IiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJLT05BIEZJRE8yIEJJT1BBU1MiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDE5MDQwMjAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4zLjciLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMC4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIwLTA0LTI5In1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMC0wNC0yOSJ9LHsiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbImRkNjZhMDlhNDZhMWI3YWQ1NGNhMzM1ZWZkYWRhMmZjYWJmODRiY2IiXSwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiZGQ2NmEwOWE0NmExYjdhZDU0Y2EzMzVlZmRhZGEyZmNhYmY4NGJjYiJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiU0hBTE8gQVVUSCJ9LCJkZXNjcmlwdGlvbiI6IlNIQUxPIEFVVEgiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MTMxMDgxLCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjJ9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInJlbW90ZV9oYW5kbGUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlCbURDQ0FUNmdBd0lCQWdJVUJJZ2ZYcGQ1d2tNcXhoS1d0aFhqNXJwNHd6OHdDZ1lJS29aSXpqMEVBd0l3S1RFbk1DVUdBMVVFQXd3ZVFWaEZURXdnVlRKR0lFTkJJRk5sY21saGJDQXhOREl5TkRVME1UYzFNQjRYRFRJd01ESXdNekEwTlRnd05sb1hEVFEzTURZeU1UQTBOVGd3Tmxvd0tURW5NQ1VHQTFVRUF3d2VRVmhGVEV3Z1ZUSkdJRU5CSUZObGNtbGhiQ0F4TkRJeU5EVTBNVGMxTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFZXNjTUpKOERPRW0zNmR1U3pleW0rRUhNZTczRk9vTUpTaHYxam1QcjRQM0tvbWRVQXkrMTNyL2VueXdMNkQwYTQxSDZmb1JTVnUwQkk4V25zeHhEY2FORU1FSXdEQVlEVlIwVEJBVXdBd0VCL3pBVEJnTlZIU1VFRERBS0JnZ3JCZ0VGQlFjREF6QWRCZ05WSFE0RUZnUVUyUmU0SXUySS8rS1h1d0g2RU1KazNxck0vV0F3Q2dZSUtvWkl6ajBFQXdJRFNBQXdSUUloQVBSQ3FyRHNJQU1vRjliU1JOSjlqaWVTekVEU1VNUWsvLzRrVEdMYjNHZUZBaUJkZzU1TVF1NHJTN1RQcURVWWhsS1JQeDh1eHp4QUJjMFFGNGVDOCtFckRRPT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBUUFBQUFFQUNBWUFBQUJjY3FobUFBQUFDWEJJV1hNQUFBc1NBQUFMRWdIUzNYNzhBQUFBRzNSRldIUlRiMlowZDJGeVpRQkRaV3h6ZVhNZ1UzUjFaR2x2SUZSdmIyekJwK0Y4QUFBTTJFbEVRVlI0bk8zZGZkQm1kVm5BOGU4Rmk0SmhFQ3BJRGxOa05VNmFNbUpESTBORGpZaTRJS0FUWnBOTitRNkNDRkpaRTdia0M1RXZsUEZtMmg5TjJhejVncENocHBOL0NDb0t1cUtEU2tzeXhiVENzcnhZcUN5N2UvWEhPV3ZieWo3UHM4OTk3dnQzenUvMy9jd3crTmQ1cmhtOHZ2YzU1ejczZlVkbUlxbE5ZUUNrZGhrQXFXRUdRR3FZQVpBYVpnQ2toaGtBcVdFR1FHcVlBWkFhWmdDa2hoa0FxV0VHUUdxWUFaQWFaZ0NraGhrQXFXRUdRR3FZQVpBYVpnQ1dFUkg3QXI4Qi9BNXdSTmxwMUxBRWJnZXVCSzdMZ1JiWEFDd2hJdllETGdOZVZYb1dxYmNEdUJDNGVJZ0lHSUE5NkpmL0N1QVZwV2VSZHZNdzhFdVorZFZaRDJRQUhrRkVyS0U3MVhMNU5WWVhaZWE2V1E5aUFIYlRMLzlWd010THp5SXQ0YXJNUEhQV2d4aUFYZlNuL1ZmaThtdjhETUNRWEg1TmpBRVl5aTdML3pJZ0NvOGpyWVFCR0VKL3piL3pici9McjZrd0FMUHFsLzl5Zko5ZjAyTUFadEV2LzJYQXEwdlBJcTJDQVZpdC9wci8zY0JyU3M4aXJaSUJXQTJYWDVVd0FIdXJQKzMvSzF4K1RaOEIyQnRlODZzeUJtQ2x2TnV2Q2htQWxmQzBYNVV5QU12cGwzL25EVDhmOGxGTkRNQlNYSDVWemdEc1NmODFYanRQKzExKzFjZ0FQSkorK2Q4Tm5GVjZGbW1PRE1EdSt0UCt2d0JlVzNvV2FjNE13SzVjZmpYR0FPems4cXRCQmdCK2VNMS9LWEJPNlZta0JUSUEvZksvQzNoZDZWbWtCV3M3QUw3eXEzSHRCbUNYNVQ4YjMrZFhtOW9NZ01zdkFTMEd3T1dYZnFpdEFMajgwdi9UVGdDODJ5LzlpRFlDMEMvLzI0SHpTczhpalVqOUFlaVgvOCtCODB2UElvMU0zUUZ3K2FVbFhabVpNMy9pZFpRQmNQbWxaVjJZbVcrWjlTQ2pDNERYL05LeWZnQWNsWm5mbXZWQW93cEF2L3p2QU03RnQvcWtSL0l3OExyTXZHcUlnNDBtQUM3L1FtMEZOZ1AzQTk4SEhnSjJGSjFJeTBsZ0kvRFhtWG5qVUFjZFJRQmMvcmw2R1BnNmNBTndJM0FMOEI5MGkvOXdacnI0RFNzZWdJalloLys3NGVmeUQyTTc4QVZnUGZCUHdKMlp1YjNzU0Jxam9nSG9sLzhTNEEyNC9FTjRFUGdBM1RjaTMrS3J1NVpUTEFEOWFmL0Z3TzhWR2FBdUR3Ri9EMXljbWJlWEhrYlRVU1FBL2ZLL0RmajloZi94dWlUZGRmMjVtZm5GMHNOb2VoWWVBSmQvTUQ4QTNneThNek1mS2oyTXBtbWhBWEQ1Qi9PZndHOW01dldsQjlHMExTd0EvUTIvUDhOci9sbmRESnlXbVhlV0hrVFR0NUFBN0hLMy80SzUvN0c2L1N0d2VtWit0L1FncXNQY0E5QXYvODdUZnQvcVc3M1BBS2RrNW9PbEIxRTk1aG9BbDM4d0c0QmZ6Y3o3U3craXVzd3RBQzcvWURZQno4N01PMG9Qb3ZyTUpRQXUvMkMyQWlkbjVxZEtENkk2RFI2QWZ2bmZDdndCTHYrc0xzN01QeW85aE9vMWFBRDY1WDhMOEllREhiUmR0OUNkK252VFQzTXpXQUQ2aDN6ZURMd1JYL2xudFEwNEtUTS9YWG9RMVczSUFMeVI3cnJmNVovZDFjQ0xzdlJudFZXOVFRSVFFVWNBM3dRZU0vUEJ0Qlg0NWN6OFN1bEJWTCtoQXZCYndOL05QbzdvdnNEalZGLzl0UWhEQmVBczRQTFp4eEZ3Z3RmK1doUURNQzYzQVUvMzQ3MWFGQU13THI3dnI0VXlBT055ak4vc28wVXlBT1B4WDhEUFp1YjNTdytpZGhpQThiZ21NMDhyUFlUYVlnREc0NDh6ODYybGgxQmJETUI0bkpxWjE1WWVRbTB4QU9QeDFNeTh0ZlFRYW9zQkdJY2R3Q0daK1VEcFFkUVdBekFPRHdDSCt3NkFGczBBak1OM2dKLzJDVUF0bWdFWWh6dUJKMmZtMXRLRHFDMEdZQnc4QTFBUkJtQWN2Z3M4MFhzQVdqUURNQTRKUEM0ejd5czlpTnBpQU1iajZabjV0ZEpEcUMwR1lEeGVtSmxYbHg1Q2JURUE0N0V1TXk4cVBZVGFZZ0RHNDdyTVhGdDZDTFhGQUl6SDNjQ1JtZm05MG9Pb0hRWmdYSDRsTXo5YmVnaTF3d0NNeTZXWmVYN3BJZFFPQXpBdWR3Qy80QU5CV2hRRE1ENStNWWdXeGdDTXo2ZUJFek56UitsQlZEOERNRDdiZ09Nejg0YlNnNmgrQm1DY1BnbXN6Y3p0cFFkUjNRekFPTzJnZXpUNG10S0RxRzRHWUx3MkFzL3lld0kxVHdaZzNLN0l6TmVXSGtMMU1nRGp0aDA0SXpNL1Vub1ExY2tBak4vOXdMSCtab0Rtd1FCTXcwYmd1TXo4VHVsQlZCY0RNQjFmQnA2Ym1WdEtENko2R0lCcHVRbDRRV1p1S2oySTZtQUFwdWRiZE04SWVFOUFNek1BMDNRUDhBcmcyaHppUDZDYVpRQ21heHR3R2ZDbXpQenYwc05vbWd6QTlIMERPQS80bEo4ZzFONHlBSFhZQVh3TVdBZHM4TEpBSzJVQTZySWR1QTc0UytBem5oRm9PUWFnWGh1QjljRFZkR2NGeGtBL3dnRFVMNEZOd1BYQWpjRFhnRzhEbXpMendaS0RxVHdEMEtadC9UL2ZBLzZuLzkvZU54aTM3Y0J0d0h1QWZ4N3FQbzhCa0tabEIvQW00RzFEUk1BQVNOT3pGVGdtTXpmTWVpQURJRTNUUlptNWJ0YURHQUJwbXE3S3pETm5QWWdCa0tiSkFFZ05Nd0JTd3d5QTFEQURJRFhNQUVnTk13QlN3d3lBMURBRElEVnNWQUY0RWZDaG1ROGthYVZHRllCRGdGdUJ3MlkrbUtTVkdFOEFBQ0xpZE9EOXdBR0RIRkRTVXNZVkFJQ0llQ1p3THZBTVlNMWdCMVlKYTREOWdZUDdmNjhCOWkwNmtYWTF2Z0NvVGhGeEVQQWs0T2VBbzRCamdHY0RQdzVFd2RGYVpnQlVUa1E4Q2pnV09CMzRkZUNKWlNkcWpnSFFPUFF4T0JrNEd6Z2V6d29Xd1FCb1hDSmlIN3JMZzR1QTUyQUk1c2tBYUp6NkVLd0YzZ0g4Zk9GeGFtVUFORzRSOFZpNnM0R3pnZjBLajFNYkE2RHhpNGdBVGdMZUJ4eGVlSnlhR0FCTlIwUThHZmdBY0hUcFdTcGhBRFF0L1NQajY0RVRTczlTQVFPZzZZbUlBNEYvcExzczBPb1pBRTFUSDRIcmdPTkt6ekpoQmtEVEZSR1BCejVIOTNpeDlwNEIwTFJGeEZQcGZyTDh4MHJQTWtFR1FOTVhFUzhIM290UERlNHRBNkRwNjU4VHVBWTRwZlFzRTJNQVZJZUlPQkxZUVBmeFlxMk1BVkE5SW1JZDhDZWw1NWdRQTZCNlJNUlAwSDJ2cE44cnNESUdRSFdKaUF1QlB5MDl4MFFZQU5VbEluNFMrQ2J3Mk5LelRJQUJVSDBpNGgrQWw1U2VZd0lNZ09vVEVXdUJqNVdlWXdJTWdPclRmNG5JdndPUEx6M0x5QmtBMVNraVBncWNXbnFPa1RNQXFsTkVuQWU4cS9RY0kyY0FWS2VJT0JhNHZ2UWNJMmNBVktlSU9BejROdjdPNUZJTWdPb1VFWThHL2cwNG92UXNJMllBVksrSXVBbS9RSFFwQmtEMWlvaFBBczh0UGNlSUdRRFZLeUkrREx5dzlCd2paZ0JVcjRoWUQ3eTQ5QndqWmdCVUw4OEFsbVVBVksrSStBUndZdWs1UnN3QXFGNFJjVFB3ek5KempKZ0JVSjBpNGxIQVJud09ZQ2tHUUhYcW53UzhBOWkvOENoalpnQlVKejhMc0NJR1FIV0tpTmNEbDVhZVkrUU1nT29VRVZjRHA1V2VZK1FNZ09yVGZ5UFFSdURRMHJPTW5BRlFmU0xpUk9BVHBlZVlBQU9nK2tURTN3Sy9YWHFPQ1RBQXFrdEVQQUc0RFRpNDlDd1RZQUJVbDRpNEFIaDc2VGttd2dDb0hoRnhJTjF2QS9yMDM4b1lBTlVqSXM0SDNsbDZqZ2t4QUtwRFJCd0tmQjE0UXVsWkpzUUFxQTRSOFRmQXkwclBNVEVHUU5NWEVjOEhyZ1gyTFQzTHhCZ0FUVnYvYytBM0FZZVhubVdDRElDbUt5TDJCejRPSEY5NGxLa3lBSnFtaU5nWGVDL3d1NlZubVRBRG9PbUppSDJBUzRBTFNzOHljUVpBMDlLLzhsOEN2S0gwTEJVd0FKcU9pRGdBZUEvdzB0S3pWT0t5ekR4bjFvTVlBTTFkUlB3VThIN2cyTkt6Vk9TVm1mbStXUTlpQURRM0VSRjBQKzV4T1hCWTRYRnFjanR3ZEdZK01PdUJESURtSWlLT29MdmVQd01mOGhuU0p1QjVtWG5MRUFjekFCcFVSQndDbkFPOEhqL1hQN1M3Z0JNejg2dERIZEFBYUJBUmNTVGQ4L3l2d3Uvem00ZTc2Rjc1Tnd4NVVBT2dWZW12N3c4Rm5nTzhCUGcxNElDaVE5WHJMdUNrelB6SzBBYzJBRnBTLytET2ZzQ2pnU2NCVHdPT0JvNERqZ0llVTI2NkpzeHQrV0hnQUVURVUraXUvNDZpK3orTnBtME4zZUlmQkR3T2Y2cHIwZWE2L0RCZ0FDTGllY0FIZ1FNSE9hRFV0cmt2UHd3VWdJZzRDUGdHZnF4VEdzSkNsaCtHQzhEcHdFZG1IMGRxM2x6dTl1L0pVQUU0aSs1cEwwbXJkemZkOHMvOWxYOG5BeUNOdzkzQTJzeThhWkYvMUFCSTVSVlpmakFBVW1tYjZXNzQzVnppanhzQXFaeWl5dzhHUUNxbCtQS0RBWkJLMkF3OHY4UTEvKzRNZ0xSWW8xbCtNQURTSW0yaGU1OS9GTXNQQmtCYWxIdm9Ydm0vVkhxUVhSa0FhZjd1b1h1Zi80dWxCOW1kQVpEbWF6Tnc4aGlYSHd5QU5FK2pYbjR3QU5LOGpQYTBmMWNHUUJyZUpKWWZESUEwdEMxMFQvaU42bTcvbmhnQWFUajMwcjNWZDJQcFFWYktBRWpEdUpmdWh0L25Tdyt5Tnd5QU5MdEpMajhZQUdsVzk5TGQ4UHRDNlVGV3d3QklxN2VGN3BWL2tzc1BCa0JhcmNrdlB4Z0FhVFcyQUtkTThacC9kd1pBMmp2VkxEOFlBR2x2M0VkMzJ2KzUwb01NeFFCSUszTWYzU3YvRGFVSEdaSUJrSlpYNWZLREFaQ1dVKzN5Z3dHUWxsTDE4b01Ca1Bhayt1V0g0UUp3Sm5ERjdPTklvOURFOHNOd0FUZ0IrSmZaeDVHS2EyYjVZYmdBN0E5OENYamF6QWVUeXJrZmVFRm1mcmIwSUlzeVNBQUFJdUlYZ1k4Q1B6UElBYVhGMmdTY2tablhseDVra1FZTEFFQkVIQXk4R0hnR3NOOWdCNWJtWnh0d0s3QStNemVYSG1iUkJnMkFwR2t4QUZMRERJRFVNQU1nTmN3QVNBMHpBRkxERElEVU1BTWdOY3dBU0EwekFGTERESURVTUFNZ05jd0FTQTB6QUZMRERJRFVNQU1nTmN3QVNBMzdYM0VRNldvSE92TFVBQUFBQUVsRlRrU3VRbUNDIn0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjMtMDEtMTciLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwidXJsIjoiaHR0cHM6Ly93d3cuYXhlbGwuY28uanAvZW4vIiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJTSEFMTyBBVVRIIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVMkYxMDAwMjAyMzAxMTcwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMy0wMS0xNyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIzLTAxLTI3In0seyJhYWd1aWQiOiIzZjU5NjcyZi0yMGFhLTRhZmUtYjZmNC03ZTVlOTE2YjZkOTgiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjNmNTk2NzJmLTIwYWEtNGFmZS1iNmY0LTdlNWU5MTZiNmQ5OCIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJBcmN1bHVzIEZJRE8gMi4xIEtleSBDYXJkIFtQNzFdIn0sImRlc2NyaXB0aW9uIjoiQXJjdWx1cyBGSURPIDIuMSBLZXkgQ2FyZCBbUDcxXSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxMDAsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfSx7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjYsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NiwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDK2pDQ0FxQ2dBd0lCQWdJVVRYSnkyOGxwUVZsaElwN0VUQmkrVTRiY2FEOHdDZ1lJS29aSXpqMEVBd0l3Z1lBeEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlEQXBPWlhjZ1NtVnljMlY1TVJFd0R3WURWUVFIREFoVGIyMWxjbk5sZERFVU1CSUdBMVVFQ2d3TFEyOXRjRzlUWldOMWNtVXhFREFPQmdOVkJBc01CMEZ5WTNWc2RYTXhJVEFmQmdOVkJBTU1HRU52YlhCdlUyVmpkWEpsTFVaSlJFOHRRMEV0VW05dmREQWdGdzB5TXpBME1UZ3hOVFExTlRCYUdBOHlNRFV6TURReE1ERTFORFUxTUZvd2dZQXhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJREFwT1pYY2dTbVZ5YzJWNU1SRXdEd1lEVlFRSERBaFRiMjFsY25ObGRERVVNQklHQTFVRUNnd0xRMjl0Y0c5VFpXTjFjbVV4RURBT0JnTlZCQXNNQjBGeVkzVnNkWE14SVRBZkJnTlZCQU1NR0VOdmJYQnZVMlZqZFhKbExVWkpSRTh0UTBFdFVtOXZkREJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCQ2dHN3I2VkEvaCtCeW5VbnlEWk1EMFZaa1lXNlJHbnBoMHcyNWdRRFdNb3FBYWlVYUZHNU1DbGtoYWtJQnBMRis2eEpCaE8xZ3MrN0Mxay9qdVZ1djJqZ2ZNd2dmQXdIUVlEVlIwT0JCWUVGSnoxZ0Z0VFRCTmZmZkRLdmRqcFVFeXA3MHp0TUlIQUJnTlZIU01FZ2Jnd2diV0FGSnoxZ0Z0VFRCTmZmZkRLdmRqcFVFeXA3MHp0b1lHR3BJR0RNSUdBTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNBd0tUbVYzSUVwbGNuTmxlVEVSTUE4R0ExVUVCd3dJVTI5dFpYSnpaWFF4RkRBU0JnTlZCQW9NQzBOdmJYQnZVMlZqZFhKbE1SQXdEZ1lEVlFRTERBZEJjbU4xYkhWek1TRXdId1lEVlFRRERCaERiMjF3YjFObFkzVnlaUzFHU1VSUExVTkJMVkp2YjNTQ0ZFMXljdHZKYVVGWllTS2V4RXdZdmxPRzNHZy9NQXdHQTFVZEV3UUZNQU1CQWY4d0NnWUlLb1pJemowRUF3SURTQUF3UlFJZ2NnWEdNRFAycmZoNEVUWTlFSkx3dVhvMVM5VWlxdEVtUGhxOS9kaVMwbkFDSVFEb3lMWm9zeDhyUkFGMXZwUlhjc1ZRRERTSG9Fcy9QYm1GM0VyL21KMHg2dz09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQStnQUFBUG9DQVlBQUFCTm85VGtBQUFBQkdkQlRVRUFBTEdQQy94aEJRQUFBQ0JqU0ZKTkFBQjZKZ0FBZ0lRQUFQb0FBQUNBNkFBQWRUQUFBT3BnQUFBNm1BQUFGM0NjdWxFOEFBQUFoR1ZZU1daTlRRQXFBQUFBQ0FBRkFSSUFBd0FBQUFFQUFRQUFBUm9BQlFBQUFBRUFBQUJLQVJzQUJRQUFBQUVBQUFCU0FTZ0FBd0FBQUFFQUFnQUFoMmtBQkFBQUFBRUFBQUJhQUFBQUFBQUFBRWdBQUFBQkFBQUFTQUFBQUFFQUE2QUJBQU1BQUFBQkFBRUFBS0FDQUFRQUFBQUJBQUFENktBREFBUUFBQUFCQUFBRDZBQUFBQURyRWVLa0FBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFDekdsVVdIUllUVXc2WTI5dExtRmtiMkpsTG5odGNBQUFBQUFBUEhnNmVHMXdiV1YwWVNCNGJXeHVjenA0UFNKaFpHOWlaVHB1Y3pwdFpYUmhMeUlnZURwNGJYQjBhejBpV0UxUUlFTnZjbVVnTmk0d0xqQWlQZ29nSUNBOGNtUm1PbEpFUmlCNGJXeHVjenB5WkdZOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6RTVPVGt2TURJdk1qSXRjbVJtTFhONWJuUmhlQzF1Y3lNaVBnb2dJQ0FnSUNBOGNtUm1Pa1JsYzJOeWFYQjBhVzl1SUhKa1pqcGhZbTkxZEQwaUlnb2dJQ0FnSUNBZ0lDQWdJQ0I0Yld4dWN6cDBhV1ptUFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzUnBabVl2TVM0d0x5SUtJQ0FnSUNBZ0lDQWdJQ0FnZUcxc2JuTTZaWGhwWmowaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOWxlR2xtTHpFdU1DOGlQZ29nSUNBZ0lDQWdJQ0E4ZEdsbVpqcFpVbVZ6YjJ4MWRHbHZiajQzTWp3dmRHbG1aanBaVW1WemIyeDFkR2x2Ymo0S0lDQWdJQ0FnSUNBZ1BIUnBabVk2VW1WemIyeDFkR2x2YmxWdWFYUStNand2ZEdsbVpqcFNaWE52YkhWMGFXOXVWVzVwZEQ0S0lDQWdJQ0FnSUNBZ1BIUnBabVk2V0ZKbGMyOXNkWFJwYjI0K056SThMM1JwWm1ZNldGSmxjMjlzZFhScGIyNCtDaUFnSUNBZ0lDQWdJRHgwYVdabU9rOXlhV1Z1ZEdGMGFXOXVQakU4TDNScFptWTZUM0pwWlc1MFlYUnBiMjQrQ2lBZ0lDQWdJQ0FnSUR4bGVHbG1PbEJwZUdWc1dFUnBiV1Z1YzJsdmJqNHpNREF3UEM5bGVHbG1PbEJwZUdWc1dFUnBiV1Z1YzJsdmJqNEtJQ0FnSUNBZ0lDQWdQR1Y0YVdZNlEyOXNiM0pUY0dGalpUNHhQQzlsZUdsbU9rTnZiRzl5VTNCaFkyVStDaUFnSUNBZ0lDQWdJRHhsZUdsbU9sQnBlR1ZzV1VScGJXVnVjMmx2Ymo0ek1EQXdQQzlsZUdsbU9sQnBlR1ZzV1VScGJXVnVjMmx2Ymo0S0lDQWdJQ0FnUEM5eVpHWTZSR1Z6WTNKcGNIUnBiMjQrQ2lBZ0lEd3ZjbVJtT2xKRVJqNEtQQzk0T25odGNHMWxkR0UrQ2w5RUszOEFBRUFBU1VSQlZIZ0I3TjEvakdWWlFoLzJlKzZyN3BucDM5VmRQVDFkVmQwenV3d0x3OWlFMFB4WTJ5UnVTSVJETExCajVNZ0VRZ3c0L2lHd0hBS0pJNXdmc21YRmltVWxWbUpIU3BSRVRraWtTTEVpNWE5RWltTkdPSkVjZG9kZGtOZHIwQUpEZGp6czdBNHNDN3N6MDEzMTdzazU1NzdxcWY1ZFZlL1gvZkY1VUYydjNydjMzSE0rcDdhcXZuUE9QYWVxUEFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0FBQUVDQkFnUUlFQ0F3SW9Fd29xdTR6SUVDQkFnUUlCQXZ3WHkzd3oxckFreGZXNzYzUnkxSjBDQUFBRUNCQWdRSUVDQUFBRUMvUlB3SC9UNzEyZHFUSUFBQVFJOUZQQUx0NGVkcHNvRUNCQWdRR0NGQW5uVXZIbit4bzJ2bWpiTlg2cENlQ2I5OGZETDc3ejU1bDllWVIxY2lnQUJBZ1FJakVKZ1l4U3QxRWdDQkFnUUlFRGdwQUlsb08rSDZZZnJ5ZVNIUWdoVjA4UlBwY0lFOUpPS09vOEFBUUlFQ0R4R1FFQi9ESXlYQ1JBZ1FJQUFnUThFNmpqWmlyR3A4czNuSWRTLy9jRTduaEVnUUlBQUFRS0xFamhZN0dWUjVTbUhBQUVDQkFnUUdLQkFVelhYOCtoNVN1ZXBkZEYvNEI5Z0gyc1NBUUlFQ0t4ZlFFQmZmeCtvQVFFQ0JBZ1E2THhBSGNMRk5weDN2cW9xU0lBQUFRSUVlaXNnb1BlMjYxU2NBQUVDQkFpc1RpRE5icjlZeFR6QjNZTUFBUUlFQ0JCWWxvQ0F2aXhaNVJJZ1FJQUFnV0VJbFAzT1E0alhodEVjclNCQWdBQUJBdDBWRU5DNzJ6ZHFSb0FBQVFJRXVpQlFoczNUNFBrTFhhaU1PaEFnUUlBQWdTRUxDT2hEN2wxdEkwQ0FBQUVDOHd2a2dKNXVRUS9ueXdydTg1ZW5CQUlFQ0JBZ1FPQXhBZ0w2WTJDOFRJQUFBUUlFQ0ZSNXlmWnFkM2YzbVJqak9mZWcrNDRnUUlBQUFRTExGUkRRbCt1cmRBSUVDQkFnMEdlQkV0RHZiR3lrRmR5clMzMXVpTG9USUVDQUFJRStDQWpvZmVnbGRTUkFnQUFCQW1zVWFPS2R6U3FXZ0c0Wjl6WDJnMHNUSUVDQXdQQUZCUFRoOTdFV0VpQkFnQUNCa3dxVUVmU3EyVGlYOWtBL25hYTRseFhkVDFxWTh3Z1FJRUNBQUlFbkN3am9UL2J4TGdFQ0JBZ1FHTE5BRzlEcjVueDZFbUlJQXZxWXZ4dTBuUUFCQWdTV0xpQ2dMNTNZQlFnUUlFQ0FRTDhGUW5OdkQzUlQzUHZkbFdwUGdBQUJBaDBYRU5BNzNrR3FSNEFBQVFJRTFpM1FWT0Y2bXVLZWwzUVgwTmZkR2E1UGdBQUJBb01XRU5BSDNiMGFSNEFBQVFJRTVoZEltNkJmbkw4VUpSQWdRSUFBQVFKUEV4RFFueWJrZlFJRUNCQWdNSEtCdERTY2dEN3k3d0hOSjBDQUFJSFZDQWpvcTNGMkZRSUVDQkFnMERlQnZFQmNXUlF1aEh2M29QZXREZXBMZ0FBQkFnUjZKU0NnOTZxN1ZKWUFBUUlFQ0t4VW9BVDBHS3NYMGhacks3MndpeEVnUUlBQWdURUtDT2hqN0hWdEprQ0FBQUVDUnhlWWhCRE81OE5UUkcrM1hUdjZ1WTRrUUlBQUFRSUVqaUVnb0I4RHk2RUVDQkFnUUdCRUFpV003Kzd1bm80eG5oMVJ1eldWQUFFQ0JBaXNUVUJBWHh1OUN4TWdRSUFBZ2U0THZEK1pYRXBickYyYXpYQTNndDc5TGxOREFnUUlFT2l4Z0lEZTQ4NVRkUUlFQ0JBZ3NFU0JFc2FiZUdjejNYK2VWbkdQNXJjdkVWdlJCQWdRSUVBZ0N3am92ZzhJRUNCQWdBQ0J4d3FFWnVOY2V2T1pja0NNUnRBZksrVU5BZ1FJRUNBd3Y0Q0FQcitoRWdnUUlFQ0F3R0FGWWwxZlRJdkU1YjhYckJFMzJGN1dNQUlFQ0JEb2lvQ0EzcFdlVUE4Q0JBZ1FJTkF0Z1RKYUhwcm0ycXhhOWxuclZ2K29EUUVDQkFnTVVFQkFIMkNuYWhJQkFnUUlFRmlVUUF6eFdsb2tMbytmTitrbWRGUGNGd1dySEFJRUNCQWc4QWdCQWYwUktGNGlRSUFBQVFJRVdvRzZxdE1DY2ZsaEFMMTE4QzhCQWdRSUVGaWVnSUMrUEZzbEV5QkFnQUNCM2d1a0VmUkx2VytFQmhBZ1FJQUFnWjRJQ09nOTZTalZKRUNBQUFFQ0t4Wm84dlZDVEZQY3k4UHM5dGJCdndRSUVDQkFZSGtDQXZyeWJKVk1nQUFCQWdUNkxGRG10RGN4dnBEMlFVOUozZjNuZmU1TWRTZEFnQUNCZmdnSTZQM29KN1VrUUlBQUFRS3JGc2dCZlZLSFNkNEgzWU1BQVFJRUNCQllnWUNBdmdKa2x5QkFnQUFCQWowVEtQUFp0N2UzbjBtajUrZG55OE9aNDk2elRsUmRBZ1FJRU9pZmdJRGV2ejVUWXdJRUNCQWdzR3lCRXNidlRpYVhZaFV2bGludWVaSzdCd0VDQkFnUUlMQlVBUUY5cWJ3S0owQ0FBQUVDL1JWb1FzZ3J1TSsyV2V0dk85U2NBQUVDQkFqMFJVQkE3MHRQcVNjQkFnUUlFRmlkUUJrdEQwMXpyZ3JoOU95eVJ0Qlg1KzlLQkFnUUlEQlNBUUY5cEIydjJRUUlFQ0JBNEFrQ2JSaXZtd3ZwU1g1ZXRseDd3dkhlSWtDQUFBRUNCQllnSUtBdkFGRVJCQWdRSUVCZ2lBS2hxV2Q3b0ZlemRlS0cyRXB0SWtDQUFBRUMzUkVRMEx2VEYycENnQUFCQWdRNkpkQ0V0QWQ2U0FQb2FhVzRUbFZNWlFnUUlFQ0F3RUFGQlBTQmRxeG1FU0JBZ0FDQmVRWHFxcDR0RUNlZnoydnBmQUlFQ0JBZ2NCUUJBZjBvU280aFFJQUFBUUxqRWlpSlBNYVlWM0gzSUVDQUFBRUNCRllrSUtDdkNOcGxDQkFnUUlCQVR3VHlvbkFsb0ljUVovZWc1NWM4Q0JBZ1FJQUFnV1VMQ09qTEZsWStBUUlFQ0JEb24wQlp0YjJKNlI3MGFIcDcvN3BQalFrUUlFQ2dyd0lDZWw5N1RyMEpFQ0JBZ01CU0JmNzRwQTZUcytVU29XeTF0dFNyS1p3QUFRSUVDQkNvS2dIZGR3RUJBZ1FJRUNCd1dLRE1aNzkyN1dlZmpiRTViL3o4TUkzbkJBZ1FJRUJndVFJQytuSjlsVTZBQUFFQ0JIb3BNRDE5K21JYU43ODRtK0x1SnZSZTlxSktFeUJBZ0VEZkJBVDB2dldZK2hJZ1FJQUFnZVVLbERBK3JhckxhYWs0cTdndjExcnBCQWdRSUVEZ1BnRUIvVDRPWHhBZ1FJQUFBUUpab0o3RXMxVUlwMmNhUnRCOVd4QWdRSUFBZ1JVSUNPZ3JRSFlKQWdRSUVDRFFONEU0RFJkVEtzL0IzRzNvZmVzODlTVkFnQUNCM2dvSTZMM3RPaFVuUUlBQUFRSkxFU2lqNWFGcFhwaVZYclpjVzhxVkZFcUFBQUVDQkFqY0p5Q2czOGZoQ3dJRUNCQWdRQ0FMaEJDdnBYL3krSGtlUVMraG5Rd0JBZ1FJRUNDd1hBRUJmYm0rU2lkQWdBQUJBcjBVaUdGeW9hMjRHZTY5N0VDVkprQ0FBSUZlQ2dqb3ZldzJsU1pBZ0FBQkFzc1dpRlp3WHpheDhna1FJRUNBd0FNQ0F2b0RJTDRrUUlBQUFRSWpGMmp2T1kveDRCNzBrWE5vUGdFQ0JBZ1FXSjJBZ0w0NmExY2lRSUFBQVFKOUVDaHoybU1WcmxYUjdlZDk2REIxSkVDQUFJSGhDQWpvdytsTExTRkFnQUFCQW9zUXlLbDhVdGZWdVZKWXNFRGNJbENWUVlBQUFRSUVqaUlnb0I5RnlURUVDQkFnUUdBY0FtVzE5bXZYcmoyYjFtNC9OMXNlemdydTQraDdyU1JBZ0FDQkRnZ0k2QjNvQkZVZ1FJQUFBUUlkRVNoaGZQL1VxVXRwZXZ0bU84WGRDSHBIK2tZMUNCQWdRR0FFQWdMNkNEcFpFd2tRSUVDQXdCRUZTa0J2UXRoTUs4WE50bGs3NHBrT0kwQ0FBQUVDQk9ZV0VORG5KbFFBQVFJRUNCQVlsa0FkNDlrUXd1bFpxMHh4SDFiM2FnMEJBZ1FJZEZoQVFPOXc1NmdhQVFJRUNCQllzVUFKNDdHdUw4eFNlYnZsMm9vcjRYSUVDQkFnUUdDc0FnTDZXSHRldXdrUUlFQ0F3R01Fd25SNmZmYldiSjI0eHh6b1pRSUVDQkFnUUdDaEFnTDZRamtWUm9BQUFRSUUraThRUXJ4V2hUU0dIc3RHNlAxdmtCWVFJRUNBQUlHZUNBam9QZWtvMVNSQWdBQUJBcXNTaUdGaWdiaFZZYnNPQVFJRUNCQTRKQ0NnSDhMd2xBQUJBZ1FJakZ4Z05xVTliYkhtUVlBQUFRSUVDS3hjUUVCZk9ia0xFaUJBZ0FDQlRncmtkZUhhZ0I3VEZQZnliTFpVWENlcnExSUVDQkFnUUdCNEFnTDY4UHBVaXdnUUlFQ0F3RWtGeXFydHNRclhEckw2U1F0eUhnRUNCQWdRSUhCOEFRSDkrR2JPSUVDQUFBRUNReGFZMUNHY0xRME1sU0gwSWZlMHRoRWdRSUJBNXdRRTlNNTFpUW9SSUVDQUFJRzFDSlF3ZnZYcTFlZlM2dTNuN0srMmxqNXdVUUlFQ0JBWXVZQ0FQdkp2QU0wblFJQUFBUUtIQmFhblRxVUY0dUxsRk5MenkwYlFEK040VG9BQUFRSUVsaXdnb0M4WldQRUVDQkFnUUtBbkFpV014N3ErbEtLNWJkWjYwbW1xU1lBQUFRTERFaERRaDlXZldrT0FBQUVDQk9ZU0NCdnhiQlhDcVZraFJ0RG4wblF5QVFJRUNCQTRub0NBZmp3dlJ4TWdRSUFBZ2FFS3RHRjhXbDlNVC9KenQ2RVB0YWUxaXdBQkFnUTZLeUNnZDdaclZJd0FBUUlFQ0t4ZUlEVE45ZGxWODVaclJ0Qlgzd1d1U0lBQUFRSWpGaERRUjl6NW1rNkFBQUVDQkI0U0NPSDVOTVU5alorM3E4UTk5TDRYQ0JBZ1FJQUFnYVVKQ09oTG8xVXdBUUlFQ0JEb29VQUlGb2pyWWJlcE1nRUNCQWdNUTBCQUgwWS9hZ1VCQWdRSUVGaVFRSk8yV2ZNZ1FJQUFBUUlFMWlHd3NZNkx1aVlCQWdRSUVDRFFPWUY4ejNtYTJoNE83a0h2WEFWVmlBQUJBZ1FJREYzQUNQclFlMWo3Q0JBZ1FJREEwUVRLcXUwaHhxdnRBdTdXaHpzYW02TUlFQ0JBZ01EaUJBVDB4VmtxaVFBQkFnUUk5RmtnQi9SSk5Rbm5TaU9DRmR6NzNKbnFUb0FBQVFMOUZCRFErOWx2YWsyQUFBRUNCQllwVUliTHIxNjkrbHpWVk9kbkc2QWJRbCtrc0xJSUVDQkFnTUFSQkFUMEl5QTVoQUFCQWdRSURGeWdoUEhwcVZPYnNZcVgwaFpydWJrQytzQTdYZk1JRUNCQW9Ic0NBbnIzK2tTTkNCQWdRSURBcWdWS0dJOTFmU25sY3R1c3JWcmY5UWdRSUVDQXdFeEFRUGV0UUlBQUFRSUVDQlNCOUVmQm1UUnVmaXA5a1lmUWphRDd2aUJBZ0FBQkFpc1dFTkJYRE81eUJBZ1FJRUNnZ3dMdENIb0lsMmFwZkhZYmVnZHJxa29FQ0JBZ1FHREFBZ0w2Z0R0WDB3Z1FJRUNBd0hFRVF0TWM3SUV1b0I4SHpyRUVDQkFnUUdCQkFnTDZnaUFWUTRBQUFRSUVlaThRd3ZOVlNHUG9zVjBscnZmdDBRQUNCQWdRSU5BekFRRzlaeDJtdWdRSUVDQkFZR2tDd1FKeFM3TlZNQUVDQkFnUU9JS0FnSDRFSkljUUlFQ0FBSUdCQzh5bXREZWJBMituNWhFZ1FJQUFnVTRMYkhTNmRpcEhnQUFCQWdRSUxGc2dyd3ZYbEl2RWtPNUJ0NEQ3c3NHVlQ0QUFBUUlFSGlkZ0JQMXhNbDRuUUlBQUFRTGpFU2dqNkNIR3ErTnBzcFlTSUVDQUFJSHVDUWpvM2VzVE5TSkFnQUFCQXVzUTJLZ200V3k1Y0xBSCtqbzZ3RFVKRUNCQWdJQ0E3bnVBQUFFQ0JBaU1XNkJzZmI2MXRmVmNtdWgrM3Y1cTQvNW0wSG9DQkFnUVdLK0FnTDVlZjFjblFJQUFBUUtkRU5nL2RlcHlyT0ptMm1JdDE2ZUU5azVVVENVSUVDQkFnTUNJQkFUMEVYVzJwaElnUUlBQWdVY0lsREFlSnBPTGFRLzBDNDk0MzBzRUNCQWdRSURBaWdRRTlCVkJ1d3dCQWdRSUVPaXlRSmpFZlAvNXFWa2RqYUIzdWJQVWpRQUJBZ1FHS3lDZ0Q3WnJOWXdBQVFJRUNCeEpvSVR4eVRSY21xVnl0NkVmaWMxQkJBZ1FJRUJnOFFJQyt1Sk5sVWlBQUFFQ0JIb25NQTFOMmdPOVBQS2U2RWJRWnhnK0VTQkFnQUNCVlFvSTZLdlVkaTBDQkFnUUlOQlJnUkRycStrZTlDb3RFbWNFdmFOOXBGb0VDQkFnTUh3QkFYMzRmYXlGQkFnUUlFRGc2UUlXaUh1NmtTTUlFQ0JBZ01DU0JRVDBKUU1ybmdBQkFnUUlkRnhnTm1MZVhPNTRQVldQQUFFQ0JBZ01YbUJqOEMzVVFBSUVDQkFnUU9CSkFtMUFqekhkZzI1Mis1T2d2RWVBQUFFQ0JKWXRZQVI5MmNMS0owQ0FBQUVDM1JZb3FUeUVzTlZXTTkrSTdrR0FBQUVDQkFpc1EwQkFYNGU2YXhJZ1FJQUFnZTRJNUlBK1NRdkU1WDNRcmQ5ZUVQeERnQUFCQWdUV0l5Q2dyOGZkVlFrUUlFQ0FRQmNFeW1qNTF0YldtVFM3L2NKc2dyc1I5QzcwakRvUUlFQ0F3Q2dGQlBSUmRydEdFeUJBZ0FDQklsREMrUFQwNmMyMHU5cG0ybUl0dnlpZysrWWdRSUFBQVFKckVoRFExd1R2c2dRSUVDQkFvQU1DYlJpdjYwdXBMdWM3VUI5VklFQ0FBQUVDb3hZUTBFZmQvUnBQZ0FBQkFnVFNrUGxHUEpQdVFjODd1K1FoZENQb3Zpa0lFQ0JBZ01DYUJBVDBOY0c3TEFFQ0JBZ1E2SUJBQ2VPVC9iQTVTK1d6MjlBN1VETlZJRUNBQUFFQ0l4UVEwRWZZNlpwTWdBQUJBZ1FPQzB4RGsvWkFUNDlvSS9URExwNFRJRUNBQUlGVkN3am9xeFozUFFJRUNCQWcwREdCRU92bjB4VDNWS3QybGJpT1ZVOTFDQkFnUUlEQWFBUUU5TkYwdFlZU0lFQ0FBSUhIQ0lSZ2diakgwSGlaQUFFQ0JBaXNVa0JBWDZXMmF4RWdRSUFBZ1c0SnpQWlZheTUzcTFwcVE0QUFBUUlFeGlrZ29JK3ozN1dhQUFFQ0JBamtPZTFOWmtoN29GOXZaN2ZQbG9walE0QUFBUUlFQ0t4RlFFQmZDN3VMRWlCQWdBQ0JUZ2kwSStnaGJKWGF5T2VkNkJTVklFQ0FBSUh4Q2dqbzQrMTdMU2RBZ0FBQkFsVjF1OXBJQzhTZG5WR0k2TDRuQ0JBZ1FJREFHZ1VFOURYaXV6UUJBZ1FJRUZpalFBbmptNy93NGJOcGM3VUxOa0JmWTArNE5BRUNCQWdRbUFrSTZMNFZDQkFnUUlEQWlBV2FDMSs1bk81QjM1enRzR1lFZmNUZkM1cE9nQUFCQXVzWEVORFgzd2RxUUlBQUFRSUUxaUZRd3Zneit4c1gwaFQzYyt1b2dHc1NJRUNBQUFFQzl3c0k2UGQ3K0lvQUFRSUVDSXhMWUdNajMzOSthdFpvSStqajZuMnRKVUNBQUlHT0NRam9IZXNRMVNGQWdBQUJBaXNTS0dHODJkL2ZuS1Z5dDZHdkNONWxDQkFnUUlEQTR3UUU5TWZKZUowQUFRSUVDSXhBb0FuaCtxeVplVTkwSStnajZITk5KRUNBQUlIdUNnam8zZTBiTlNOQWdBQUJBa3NYQ0hXOG11NUJyOUlpY1ViUWw2N3RBZ1FJRUNCQTRNa0NBdnFUZmJ4TGdBQUJBZ1NHTFJEcjg4TnVvTllSSUVDQUFJSCtDQWpvL2Vrck5TVkFnQUFCQW9zVUtDUG1JY1lyaXl4VVdRUUlFQ0JBZ01ESkJRVDBrOXM1a3dBQkFnUUk5Rm1nQlBRWTR2WFpIdWg5Ym91NkV5QkFnQUNCUVFnSTZJUG9SbzBnUUlBQUFRTEhGbWp2T1kvVlZudG12aEhkZ3dBQkFnUUlFRmluZ0lDK1RuM1hKa0NBQUFFQzZ4T0kxZTFxSTRSd3BsUkJQRjlmVDdneUFRSUVDQkNZQ1Fqb3ZoVUlFQ0JBZ01ENEJFb2N2L3lMTCtkd2ZtRzJmTHVJUHI3dkF5MG1RSUFBZ1k0SkNPZ2Q2eERWSVVDQUFBRUNLeEFvWWJ5NThPWExhWGUxemRrOTZBTDZDdUJkZ2dBQkFnUUlQRWxBUUgrU2p2Y0lFQ0JBZ01Bd0JVb1lEL3NiRjFMenpnMnppVnBGZ0FBQkFnVDZKeUNnOTYvUDFKZ0FBUUlFQ0N4RTROUmtjcTRLWVNNVmxtZTVHMEZmaUtwQ0NCQWdRSURBeVFVRTlKUGJPWk1BQVFJRUNQUlZvSjNpdnIrL09VdmxzOXZRKzlvYzlTWkFnQUFCQXNNUUVOQ0gwWTlhUVlBQUFRSUVqaTNRaEhDOW5CVExDUHF4ejNjQ0FRSUVDQkFnc0ZnQkFYMnhua29qUUlBQUFRSzlFUWgxdkpxbXVLZjZSaVBvdmVrMUZTVkFnQUNCSVFzSTZFUHVYVzBqUUlBQUFRSlBFbWhDWGlUT2d3QUJBZ1FJRU9pSWdJRGVrWTVRRFFJRUNCQWdzRUtCTW1LZXhzNHZyL0NhTGtXQUFBRUNCQWc4UlVCQWZ3cVF0d2tRSUVDQXdNQUU4cHoySnJjcGhuaTluZDArV3lwdVlBM1ZIQUlFQ0JBZzBEY0JBYjF2UGFhK0JBZ1FJRUJnZm9IMm52TllYU2xGQlZ1c3pVK3FCQUlFQ0JBZ01MK0FnRDYvb1JJSUVDQkFnRUQvQkc3ZE9oVkNPTmUvaXFzeEFRSUVDQkFZcm9DQVB0eSsxVElDQkFnUUlQQW9nVEtmL2VJWHZwREQrWG5MdHorS3lHc0VDQkFnUUdBOUFodnJ1YXlyRWlCQWdBQUJBbXNTT0xqaGZEUEd1RG1ydzhGcmE2cVN5eElnUUlBQUFRSlp3QWk2N3dNQ0JBZ1FJREJDZ2RQMU5HK3hab3I3Q1B0ZWt3a1FJRUNndXdJQ2VuZjdSczBJRUNCQWdNRFNCRUl6T1Z1RmNEQ1R6Z2o2MHFRVlRJQUFBUUlFamk0Z29CL2R5cEVFQ0JBZ1FHQUlBaVdNTjlYKzVWa3FkeHY2RUhwVkd3Z1FJRUJnRUFJQytpQzZVU01JRUNCQWdNQXhCWnI2K3V5TXZDZTZFZlJqOGptY0FBRUNCQWdzUTBCQVg0YXFNZ2tRSUVDQVFNY0ZZb2hiYVlwN1ZhV1Y0anBlVmRValFJQUFBUUtqRVJEUVI5UFZHa3FBQUFFQ0JBNEpoSEQrMEZlZUVpQkFnQUFCQWgwUUVOQTcwQW1xUUlBQUFRSUVWaWhRUnN4RFUyMnQ4Sm91UllBQUFRSUVDQnhCUUVBL0FwSkRDQkFnUUlEQWdBUktRRytxZUQxTmJ4OVFzelNGQUFFQ0JBajBYMEJBNzM4ZmFnRUJBZ1FJRURpT1FGNFVMcTBLRjY2MEorVWIwVDBJRUNCQWdBQ0JMZ2dJNkYzb0JYVWdRSUFBQVFLckVUZ0k0eHNwbHA4cGx6eDRaVFhYZHhVQ0JBZ1FJRURnQ1FJQytoTnd2RVdBQUFFQ0JJWW9jT21sbDg3RktsNllUWEFYMFlmWXlkcEVnQUFCQXIwVUVOQjcyVzBxVFlBQUFRSUVUaVJRd25pTTcyMVdNYVNQZHIyNEU1WGtKQUlFQ0JBZ1FHRGhBZ0w2d2trVlNJQUFBUUlFT2l0UUF2cnBzSEV4YllCK3JyTzFWREVDQkFnUUlEQlNBUUY5cEIydjJRUUlFQ0F3WG9FUU44NVVJVXlTUUI1Q044Vjl2TjhLV2s2QUFBRUNIUk1RMER2V0lhcERnQUFCQWdTV0tGRENlQlAzcnN4U3VYM1dsb2l0YUFJRUNCQWdjRndCQWYyNFlvNG5RSUFBQVFKOUYyanE2NlVKc1NwYnJ2VzlPZXBQZ0FBQkFnU0dJaUNnRDZVbnRZTUFBUUlFQ0J4UklJYTRsYWE0cDZNTm9CK1J6R0VFQ0JBZ1FHQWxBZ0w2U3BoZGhBQUJBZ1FJZEVlZ0R1RjhkMnFqSmdRSUVDQkFnTUNCZ0lCK0lPRXpBUUlFQ0JBWXZrQVpNbzlOdFRYOHBtb2hBUUlFQ0JEb240Q0EzcjgrVTJNQ0JBZ1FJSEFTZ1R5bnZkeHozbFR4ZXJzSCtteXB1Sk9VNWh3Q0JBZ1FJRUJnNFFJQytzSkpGVWlBQUFFQ0JEb3JVTFpWQzFXNFVtcVlublMycGlwR2dBQUJBZ1JHS0NDZ2o3RFROWmtBQVFJRVJpeHc2OVpHV2gvdXpJZ0ZOSjBBQVFJRUNIUldRRUR2Yk5lb0dBRUNCQWdRV0toQUdTMi84UGJiNTJPTUY2M2Z2bEJiaFJFZ1FJQUFnWVVJQ09nTFlWUUlBUUlFQ0JEb3ZFQUo2TStHc0ptMlY5dHM3MEUzeGIzenZhYUNCQWdRSURBcUFRRjlWTjJ0c1FRSUVDQXdkb0ZZMXhlcUtwamlQdlp2Qk8wblFJQUFnVTRLQ09pZDdCYVZJa0NBQUFFQ3l4RUlNWjZwUXRpWWxXNlJ1T1V3SzVVQUFRSUVDSnhJUUVBL0VadVRDQkFnUUlCQTd3UktHSi9HdURWTDVXWEx0ZDYxUW9VSkVDQkFnTUNBQlFUMEFYZXVwaEVnUUlBQWdRY0ZRdE5jbjcxV3RseDc4SDFmRXlCQWdBQUJBdXNURU5EWForL0tCQWdRSUVCZzVRTHBIdlFyYVlwN1dpY3VXc2g5NWZvdVNJQUFBUUlFbml3Z29EL1p4N3NFQ0JBZ1FHQlFBbldJNXdmVklJMGhRSUFBQVFJREVoRFFCOVNabWtLQUFBRUNCSjRnVUViTW02YTYrb1JqdkVXQUFBRUNCQWlzVWVCZ0ZkYzFWc0dsQ1JBZ1FJQUFnUlVJbElBZXFuaTltajFid1RWZGdnQUJBZ1FJRURpR2dCSDBZMkE1bEFBQkFnUUk5Rmlnck5vZXEzQzV0Q0ZVdGxqcmNXZXFPZ0VDQkFnTVUwQkFIMmEvYWhVQkFnUUlFRGdzTUF2anR6ZFNMRDl6K0EzUENSQWdRSUFBZ2U0SUNPamQ2UXMxSVVDQUFBRUNTeFc0ZVBOWHo2ZlYyeS9PMW04M2dyNVViWVVUSUVDQUFJSGpDd2pveHpkekJnRUNCQWdRNkp2QVFSamZUUGVmYjZZOTFuTDlEMTdyVzF2VWx3QUJBZ1FJREZaQVFCOXMxMm9ZQVFJRUNCQzRKMURDK09tNnZtQ0srejBUVHdnUUlFQ0FRT2NFQlBUT2RZa0tFU0JBZ0FDQjVRaUVwamxiaFRCSnBlY2hkQ1BveTJGV0tnRUNCQWdRT0xHQWdINWlPaWNTSUVDQUFJSGVDSlF3UG8zN1c3TlVYdWE0OTZiMktrcUFBQUVDQkVZaUlLQ1BwS00xa3dBQkFnUUloQ1pjTHdxeEtsdXVFU0ZBZ0FBQkFnUzZKU0NnZDZzLzFJWUFBUUlFQ0N4TklOYjFsVFRGUFpWdkFIMXB5QW9tUUlBQUFRSnpDQWpvYytBNWxRQUJBZ1FJOUVtZ0R2RjhuK3FycmdRSUVDQkFZR3dDQXZyWWVseDdDUkFnUUdDTUFtWEl2R21xcXdiUHg5ajkya3lBQUFFQ2ZSSFk2RXRGMVpNQUFRSUVDQkE0a1VDZTAxN3VPUTlWYk85QnQ0RDdpU0NkUklBQUFRSUVsaTFnQkgzWndzb25RSUFBQVFMckZ5amJxc1VRTHBlcUJBbDkvVjJpQmdRSUVDQkE0R0VCQWYxaEU2OFFJRUNBQUlFaENaU2QxVjU5OWRWVHFWRm5odFF3YlNGQWdBQUJBa01URU5DSDFxUGFRNEFBQVFJRUhpSHcvMzN4aXhlcUdDOWF2LzBST0Y0aVFJQUFBUUlkRVJEUU85SVJxa0dBQUFFQ0JKWWtVRWJRbjYzclMybUJ1TTBVMHZObHltdEx1cDVpQ1JBZ1FJQUFnUk1LQ09nbmhITWFBUUlFQ0JEb2swQ2NUQzZrV0c2S2U1ODZUVjBKRUNCQVlIUUNBdnJvdWx5RENSQWdRR0NNQXFGcHpsWWhUR1p0TjRJK3htOENiU1pBZ0FDQnpnc0k2SjN2SWhVa1FJQUFBUUp6Q1pRdzNzUzROVXZsWmN1MXVVcDBNZ0VDQkFnUUlMQVVBUUY5S2F3S0pVQ0FBQUVDSFJOb210a2U2T2xPZFBlZ2Q2eHpWSWNBQVFJRUNMUUNBcnJ2QkFJRUNCQWdNQUtCZWpLNW5LYTRWMm1ST0F1NWo2Qy9OWkVBQVFJRStpa2dvUGV6MzlTYUFBRUNCQWdjU3lDR2VQNVlKemlZQUFFQ0JBZ1FXTG1BZ0w1eWNoY2tRSUFBQVFJckZTZ2o1bW5nL1BtVlh0WEZDQkFnUUlBQWdXTUxiQno3RENjUUlFQ0FBQUVDZlJKb3A3VEhtTzVCZC90NW56cE9YUWtRSUVCZ2ZBSkcwTWZYNTFwTWdBQUJBdU1TYUZkdEQvVm1hWFpJdTZGN0VDQkFnQUFCQXAwVUVOQTcyUzBxUllBQUFRSUVGaUxRaHZGYnQwNmwwczRzcEVTRkVDQkFnQUFCQWtzVE1NVjlhYlFLSmtDQUFBRUMzUkE0LzduUFhVamo1aGRqRzllTm9IZWpXOVNDQUFFQ0JBZzhKR0FFL1NFU0x4QWdRSUFBZ2NFSWxERCtiQWliNmZiei9KRWZBdnBndWxkRENCQWdRR0JvQWdMNjBIcFVld2dRSUVDQXdBY0NiUmlmTk9kVExEZkYvUU1YendnUUlFQ0FRQ2NGQlBST2RvdEtFU0JBZ0FDQkJRckVqYk5WQ1BsM3ZtWGNGOGlxS0FJRUNCQWdzR2dCQVgzUm9zb2pRSUFBQVFMZEVTZ2o2RTNUWEozTmEyOG51WGVuZm1wQ2dBQUJBZ1FJSEJJUTBBOWhlRXFBQUFFQ0JBWXBFSnEwQjNwNnhLcmRjbTJRamRRb0FnUUlFQ0RRZndFQnZmOTlxQVVFQ0JBZ1FPQ0pBckdhWEVsVDNOTXhCdENmQ09WTkFnUUlFQ0N3WmdFQmZjMGQ0UElFQ0JBZ1FHRFpBbldJNTVaOURlVVRJRUNBQUFFQzh3c0k2UE1iS29FQUFRSUVDSFJWb0V4cGp6RSszMVp3ZGlkNlYydXJYZ1FJRUNCQVlPUUNBdnJJdndFMG53QUJBZ1FHSy9EQm5QYW0ycW1pNmUyRDdXa05JMENBQUlIQkNBam9nK2xLRFNGQWdBQUJBZzhKdE51cTFlRmllU2VrM2RBOUNCQWdRSUFBZ2M0S0NPaWQ3Um9WSTBDQUFBRUNjd20wWWZ6bGwwK25VczdPVlpLVENSQWdRSUFBZ1pVSUNPZ3JZWFlSQWdRSUVDQ3dIb0Z6WC83eWhUUzkvZUpzZ3JzUjlQVjBnNnNTSUVDQUFJRWpDUWpvUjJKeUVBRUNCQWdRNkoxQUNlUFBUaWFicWVhWDNJUGV1LzVUWVFJRUNCQVlvWUNBUHNKTzEyUUNCQWdRR0pIQVpISSt0ZmE1RWJWWVV3a1FJRUNBUUc4RkJQVGVkcDJLRXlCQWdBQ0Jwd3VFR005V0lVeG1SNXJpL25ReVJ4QWdRSUFBZ2JVSkNPaHJvM2RoQWdRSUVDQ3dWSUVTeHFjeFhwMmw4ckluK2xLdnFIQUNCQWdRSUVCZ0xnRUJmUzQrSnhNZ1FJQUFnVzRMaEtxNVhtb1lxeHpRamFCM3U3dlVqZ0FCQWdSR0xpQ2dqL3diUVBNSkVDQkFZTmdDYVhiN1pwcmluaG81VzhkOTJNM1ZPZ0lFQ0JBZzBHc0JBYjNYM2FmeUJBZ1FJRURnYVFMeHd0T084RDRCQWdRSUVDRFFEUUVCdlJ2OW9CWUVDQkFnUUdEUkFtWElQRmJ4K1VVWHJEd0NCQWdRSUVCZ09RSUMrbkpjbFVxQUFBRUNCTll0MEM0SzExVFgyejNRM1g2KzdnNXhmUUlFQ0JBZzhEUUJBZjFwUXQ0blFJQUFBUUw5Rkdodk9xL0R4Vkw5WUlHNGZuYWpXaE1nUUlEQW1BUUU5REgxdHJZU0lFQ0F3RmdFMnVIeVYxODluUnA4ZGl5TjFrNENCQWdRSU5CM0FRRzk3ejJvL2dRSUVDQkE0REVDNTcvNHhRdHBldnVsMkk2bG0rUCtHQ2N2RXlCQWdBQ0JyZ2dJNkYzcENmVWdRSUFBQVFLTEV5aGgvTm02M2t4RlhwcHRzU2FnTDg1WFNRUUlFQ0JBWUNrQ0F2cFNXQlZLZ0FBQkFnVFdKcENEZVBuOUhrTzUvL3k1V1UwRTlMVjFpUXNUSUVDQUFJR2pDUWpvUjNOeUZBRUNCQWdRNktMQVFSaWZWTGR2YjZRS1RtYVZuT2JQTWNaSkZVTCtYZDlPY3ArOTZSTUJBZ1FJRUNEUVRZSDh5OXlEQUFFQ0JBZ1E2TDdBUVJnL0dBblBvVHNIOFRaOHYvYmF2UlpzYjIrZitkMFFuZ3NoL29FcUxkNmVEc2pISEp4Mzd6aFBDQkFnUUlBQWdXNEpDT2pkNmcrMUlVQ0FBQUVDQndKdElMK2RndlZySldEbk1GNUd4ZzhPU0o5UFhYcnBoWjJOdmNtSFlsMTliVHJocTFNT2YrVk9WZTJjanZGR1doenV3aXkvbXpGM0NNMVRBZ1FJRUNEUVZRRUJ2YXM5bzE0RUNCQWdNRGFCSEtKektNOGZCNlBqMHhUT0R4NlRhemR2dmppdDlsK05NWHg5RmNNL213TjUzSThmam5VNEYwSStMVDFTS2o4b29IM0J2d1FJRUNCQWdFQmZCQVQwdnZTVWVoSWdRSURBRUFWeUtEKzRSL3krMGZGcjE2NmRiWjZkZkNTRjhXOUptZnRiVTJUL2h2M1lmRldvNmd0dEdHOW50cGNvbjI0MmowM1RudDhHOVp6UkQzOE0wVTZiQ0JBZ1FJREE0QVFFOU1GMXFRWVJJRUNBUUljRmNtZytHQ2x2MHZPRGorcmxsMTkrNWt2dnZmZEtVOWUvUDFUTlB6K040WnZpTkw0VTZuclNadTZZRjMzTGVieXBtaWFmbHlKNGVhY3RMd1MvMHd1S2Z3Z1FJRUNBUUg4Ri9ETHZiOStwT1FFQ0JBajBSeUN2cnA3RCtYNzZ1RGRTdm5YanhuWUszUjlOaTdsOTV4ZnZ2UDhIMGhGZm15SjMrdDFjcHlDZW9uaisvK2swbjNNUXh0dFJjV0c4a1BpSEFBRUNCQWdNVFVCQUgxcVBhZzhCQWdRSWRFSGc4RWg1RHVUM1F2bVZGMTk4cFpwTy80VjB3SGVsZWVrcG5JZkxWZG9KTGJTajR5bVFOeW1RcDJUZWJvOFcwbWUvcTd2UW8rcEFnQUFCQWdSV0lPQ1gvZ3FRWFlJQUFRSUVSaU9RZzNrZUxiOHZsRisrZWZQVnVtbis1VFJDL3QxeHV2L05hZHI2czNreHR6SkNIdU0wVFZsUEs3dVY2ZW9wa09jUjlGeU1Cd0VDQkFnUUlEQTJBUUY5YkQydXZRUUlFQ0N3YUlIRG8rVjVPbnFaa241MWQvZmxHT0wzcEsvL1dCb3AvK2FxRHFkTEtFOHZ0TlBXMDJtaGhQbEpDdWVMcnBQeUNCQWdRSUFBZ1I0S0NPZzk3RFJWSmtDQUFJRk9DT1JVblVmTGN5QXZVOWd2M3J5NXVkRTBmemhVOFU4MFZieWRacW1mYlVmSzB4M2xUWnE2Zm0rVTNMVDFUdlNnU2hBZ1FJQUFnWTRKQ09nZDZ4RFZJVUNBQUlIT0N4eGU4SzJNbGwvZTJmbG91bzM4QjlOVTllOUpnK0U3WllwNnZxZThMUEEyR3lsM0wzbm5PMVlGQ1JBZ1FJREF1Z1VFOUhYM2dPc1RJRUNBUUY4RTh1L012TDFaR1MyL3NMdDcrWFJWZlc5YTNlMEhVeGIvdHJ5bVc1cktua2JLeS92cG52SzBGTHRRM3BlK1ZVOENCQWdRSU5BSkFRRzlFOTJnRWdRSUVDRFFVWUdEYWV3NWxMZWo1WG5CdHpqOW9SVEt2eS9kVjc2ZEYzckxxNzJWMGZLYzB0djd5anZhSE5VaVFJQUFBUUlFdWl3Z29IZTVkOVNOQUFFQ0JOWWxFS3JiNmY3eTEwb29MOEg4eXM3T2Q2UVI4VDhYbXVhN3E3cCs1bDRvVHk4YUxWOVhON2t1QVFJRUNCQVlsb0NBUHF6KzFCb0NCQWdRbUUrZ1RxZm5qLzFaT0ErWGQzZi9XSHJoejhkUS9jRzh4bHRhN0MxTmRJOTc2Wmk4K3JyZm8vTjVPNXNBQVFJRUNCQTRKT0FQaTBNWW5oSWdRSURBYUFVK0NPWXBmbCs3ZHUxc2MrclVuMmhDOWVmU0hQZGJSU1hkWUo3Q2VaTkNlVDcyMUdpbE5Kd0FBUUlFQ0JCWW1vQ0F2alJhQlJNZ1FJQkFEd1R1QytiYjI5dGJkK3I2UjlJTjUvOW11ci84cTBKZWliMnMvSllXaHd2VnhpeWM5NkJacWtpQUFBRUNCQWowVVVCQTcyT3ZxVE1CQWdRSXpDdHdYekRmZXZIRjY3SFovOUU3VmZqaE5JMzllZ3JsYWEzMjZjRys1WG5oTjc4djV4VjNQZ0VDQkFnUUlQQlVBWDl3UEpYSUFRUUlFQ0F3SUlHNnVwM3VNVzhYZjJ0bXdmekg0blQvejRTNnZwSW1zYWQ3ekVzd3QwWGFnRHBkVXdnUUlFQ0FRRjhFQlBTKzlKUjZFaUJBZ01COEFyZlRLSGdPNXE5VlRkbkRQTVovS3dYekgwM0IvSEs3ZjNsajRiZjVoSjFOZ0FBQkFnUUl6Q2tnb004SjZIUUNCQWdRNkx4QS9sMDN6ZUg4cFpkZWV2YkwwNzBmVFJQWWZ5SnRsWGE5U211K3BZWGYybUJ1NGJmT2Q2UUtFaUJBZ0FDQm9Rc0k2RVB2WWUwalFJREFlQVh5ZmVacEVmYXlsM2wxWlhmM0IzNTNmKy9mVHlQbVgxT0NlWnh0bFNhWWovYzdSTXNKRUNCQWdFREhCUElmTHg0RUNCQWdRR0JJQXFHNmRTdHZnNVkyTEsrbVc3dTdmM0RyeHU3UHBzWGZmanA5ZkUzTWk3KzE3K1ZqL0I1TUNCNEVDQkFnUUlCQU53U01vSGVqSDlTQ0FBRUNCQllqa0grdjdWZXZ2NzUzZVh2N1JwaUV2NUttcy8vSlBJeWVwcktuVmRuei93Vy8reFpqclJRQ0JBZ1FJRUJnd1FMK1NGa3dxT0lJRUNCQVlDMENlU1E4ZitUUjhXcHJaK2ZIWXgzK296UmlmakVGODd4cjJqUkZjNy96TW80SEFRSUVDQkFnMEZrQmY2eDB0bXRVakFBQkFnU09LSkIvbDVWcDY1ZDNkbjVmQ05YZlRBdkFmY3VoKzh3M2hQTWpTanFNQUFFQ0JBZ1FXS3VBZ0w1V2ZoY25RSUFBZ1RrRTdvMmFiMjl2bjdsVGgvODRsZlVYMHFoNVZlNHpEeUcvbis4ejl5QkFnQUFCQWdRSTlFSkFRTzlGTjZra0FRSUVDRHdnY0cvVS9Nck43WC94VGhQK2RscWQvU05sT25zVDAzUjI5NWsvNE9WTEFnUUlFQ0JBb0FjQ2VYVEJnd0FCQWdRSTlFWGdZSVgyL2QzZDNlZlMxbW4vZVJYci96T05tdWR3bnZjenp4dXIrWS9QZmVsTjlTUkFnQUFCQWdUdUUvQkh6SDBjdmlCQWdBQ0JEZ3RNVXQybWVZWDJxemUzdisyOUdQL3JOSXY5bFJUTTB5cHdhVXUxWURwN2gvdE8xUWdRSUVDQUFJRWpDQmhCUHdLU1F3Z1FJRUJnelFMdHZ1YlRYSXZMTjNiK2c2YXAvMEhhTCsyVmxNM3pxSG5lUE0xL2NGNXpGN2s4QVFJRUNCQWdNTCtBUDJqbU4xUUNBUUlFQ0N4UElHOWhQcm0zcjNrZC9rNGFOZitPR0p1MHIzbTFuOWFEc3dqYzh1eVZUSUFBQVFJRUNLeFl3QWo2aXNGZGpnQUJBZ1NPTEpDbnRPZkgvdGFON2U4SmRmaUZkSy81ZDVRVjJxc3FHalZ2Y2Z4TGdBQUJBZ1FJREVkQVFCOU9YMm9KQVFJRWhpU1FaM2psS2UzeHlvMmR2MXBWOWYrV25tL0dHUGRtSzdUbmtYVVBBZ1FJRUNCQWdNQ2dCRXh4SDFSM2Fnd0JBZ1FHSVBEcXE2ZXJUMzNxN3NXYk56ZFBOYzMvbEFMNWQrWHQwMUxMbXZSaFN2c0F1bGdUQ0JBZ1FJQUFnVWNMQ09pUGR2RXFBUUlFQ0t4ZW9MM2ZQSVh6U3pzNzM3QVJtLysxcXNPSDhrSnc2WTM4KytwZ3l2dnFhK2FLQkFnUUlFQ0FBSUVWQ0pqaXZnSmtseUJBZ0FDQnB3cmszMGY1WS8veTd1NzNib1R3RDlQekQrVzl6Vk00ejZQbXByUW5CQThDQkFnUUlFQmcyQUlDK3JEN1Yrc0lFQ0RRQjRFOE1wNm5yMCt2N096OFZCMnF2eHVyK0V3SzUvdnBOVlBhKzlDRDZraUFBQUVDQkFnc1JNQVU5NFV3S29RQUFRSUVUaWlRZncvbElGNXQ3ZTcrVjJsSys1K2UzVytlVm1rUGZrZWRFTlZwQkFnUUlFQ0FRRDhGL1BIVHozNVRhd0lFQ1BSZjRIYTZyL3kxRk01ZmV1blpyZjM5Zkw5NVhneHVMelVzLzI0eXc2di9QYXdGQkFnUUlFQ0F3REVGL0FGMFREQ0hFeUJBZ01BQ0JHN2RPcFhEK2M3T3pwVXIrL3YvOTZGdzduN3pCZkFxZ2dBQkFnUUlFT2luZ0lEZXozNVRhd0lFQ1BSWElJZnoxMS9mMjl6ZXZua25WUDlQQ05XdHRGTDczZFFnOTV2M3QxZlZuQUFCQWdRSUVGaUFnQ251QzBCVUJBRUNCQWdjVVNEdmNmNzY2M2UzdHJlL0prN3FuMGxuWFk4eDVwWGFUeCt4QkljUklFQ0FBQUVDQkFZcllBUjlzRjJyWVFRSUVPaVlRQjQ1VDN1Y2IxMi9maXROYWY4SEtaU1hjSjVxYWVTOFkxMmxPZ1FJRUNCQWdNQjZCSXlncjhmZFZRa1FJREF1Z2RtMDlpdTd1OSthdGxEN21iUkMrM05WM2tZdEJPRjhYTjhKV2t1QUFBRUNCQWc4UWNBSStoTnd2RVdBQUFFQ0N4QTRGTTZyR1A5K1ZhVnducWExMjBadEFiYUtJRUNBQUFFQ0JBWWxJS0FQcWpzMWhnQUJBaDBUbUlYelN6czcvMHhWcFhBZXdwbjBPZTk3YnVTOFkxMmxPZ1FJRUNCQWdNRDZCVXh4WDM4ZnFBRUJBZ1NHS1RBTDUyVkJ1RHI4SDZtUlo4ckl1WEErelA3V0tnSUVDQkFnUUdCdUFTUG9jeE1xZ0FBQkFnUWVJYkNSdDFKTDk1enZ4RHI4dmJRZzNBdmxublBoL0JGVVhpSkFnQUFCQWdRSXRBSUN1dThFQWdRSUVGaTBRSjZkdFgveDVzM05OSjM5NzRVUWRodjNuQy9hV0hrRUNCQWdRSURBQUFVRTlBRjJxaVlSSUVCZ2pRS1RkTzF5ai9sR00vM2ZVemovMnRrKzUrNDVYMk9udURRQkFnUUlFQ0RRRHdFQnZSLzlwSllFQ0JEb2cwRCtuVExORmIxeVkvZC9DWFg5clduay9HNzZVampQS0I0RUNCQWdRSUFBZ2FjSUNPaFBBZkkyQVFJRUNCeFpJTjFxbnNMNTd1NS9rVWJPLzBoc21yMzB3dWtqbisxQUFnUUlFQ0JBZ01ESUJRVDBrWDhEYUQ0QkFnUVdJbkM3eXZlZFQ3ZHU3UHhFcU1PUHhlblVWbW9MZ1ZVSUFRSUVDQkFnTUNZQkFYMU12YTJ0QkFnUVdJYkFxNitlcmw2cjlyZHVibjkzVllXL2tVYk9ZOXJ2M08rWFpWZ3Jrd0FCQWdRSUVCaTBnSDNRQjkyOUdrZUFBSUdsQzJ4VW4vclUzU3ZYcjc4U20vQS9wMVhiOHdXYjlKRVhpL01nUUlBQUFRSUVDQkE0aG9BUmptTmdPWlFBQVFJRTdoTW9LN1pmdTNidGJMVXgrYnZwdnZNelZZeDVhcnR3ZmgrVEx3Z1FJRUNBQUFFQ1J4TVEwSS9tNUNnQ0JBZ1FlRmlnREpmdm45cjQ3MU00LzdxeVluc0labVk5N09RVkFnUUlFQ0JBZ01DUkJBVDBJekU1aUFBQkFnVHVFN2gxSzIrZDFxUVYyLys5dEozYTkxcXgvVDRkWHhBZ1FJQUFBUUlFVGlRZ29KK0l6VWtFQ0JBWXNVQU81NisvdnJlMXMvUHRWYWorV2dybkdjTzA5aEYvUzJnNkFRSUVDQkFnc0JnQkFYMHhqa29oUUlEQVdBUW1PWnlmMzltNUVrUDQ2Vm1qcCttejN5ZGorUTdRVGdJRUNCQWdRR0JwQXY2Z1docXRnZ2tRSURBNGdaQmFWSWJMVDlmaHYwMzduZS9FR1BmU2EwYlBCOWZWR2tTQUFBRUNCQWlzUTBCQVg0ZTZheElnUUtDUEFyZHU1UVhnNHBVYk8zOHBMUXIzUitKMHVwOFNlNzRYM1lNQUFRSUVDQkFnUUdBQkFnTDZBaEFWUVlBQWdjRUx6TzQ3djN6anhoK3FxdkJYMDMzbnNRckJ5UG5nTzE0RENSQWdRSUFBZ1ZVS0NPaXIxSFl0QWdRSTlGT2czSGVlVm16ZnFXUHpQODZha0tlNjV5bnZIZ1FJRUNCQWdBQUJBZ3NTRU5BWEJLa1lBZ1FJREZRZ2gvQzhDRng2eFA4aGpacHZWZTQ3YnpuOFM0QUFBUUlFQ0JCWXNJQ0F2bUJReFJFZ1FHQlFBcmVxZk45NXRiVzcrNWZUZnVmZk1Wc1V6bjNuZytwa2pTRkFnQUFCQWdTNklsRCs4T3BLWmRTREFBRUNCRG9rY0NzdEFQZDZWZlk3ajZINkQ2dDgzM25WQnZZTzFWSlZDQkFnUUlBQUFRS0RFVENDUHBpdTFCQUNCQWdzVktETzRYenp3eCsrR092cXY1dVY3TDd6aFJJcmpBQUJBZ1FJRUNCd3Y0Q0FmcitIcndnUUlFQ2dGU2dMd05WMzcveXRFT3FYN0hmdTI0SUFBUUlFQ0JBZ3NId0JBWDM1eHE1QWdBQ0JmZ25rTGRYU3duQlhkbmIrOVZDSEg0alRacHJTdWx1aSt0V0xha3VBQUFFQ0JBajBVRUJBNzJHbnFUSUJBZ1NXS0pDbXRyKytsN2RVUzV1by9XY3gzM1lleW5acXRsUmJJcnFpQ1JBZ1FJQUFBUUpaUUVEM2ZVQ0FBQUVDQndJZmhQQVEvOHUwYXZ1VjlNWmUrdkM3NGtESVp3SUVDQkFnUUlEQUVnWDgwYlZFWEVVVElFQ2dWd0szYnVWcDdFMmEydjZENmI3ejc4bFQyOVBYdGxUclZTZXFMQUVDQkFnUUlOQm5BUUc5ejcybjdnUUlFRmljUUpuYXZuWGp4bmFhMFA2ZnhpWXQyTjVPYlYvY0ZaUkVnQUFCQWdRSUVDRHdSQUVCL1lrODNpUkFnTUJvQk5ycDdUSCtkVlBiUjlQbkdrcUFBQUVDQkFoMFRFQkE3MWlIcUE0QkFnUldMbkNyVEdPZmJ0M1kvcDQwYXY3OWFmUTg3M2R1MWZhVmQ0UUxFaUJBZ0FBQkFtTVhFTkRIL2gyZy9RUUlqRjBnVks5WGU5dmIyMmRpREg4anJkbWVIL25UQnd2R2xaZjhRNEFBQVFJRUNCQWdzR3dCQVgzWndzb25RSUJBdHdVbXVYcDNKdUduMHRUMnI2NWl6S3UybDllNlhXMjFJMENBQUFFQ0JBZ01UMEJBSDE2ZmFoRUJBZ1NPS3BDRCtQN2xtemRmVFFQbS8wNVpHRTQ0UDZxZDR3Z1FJRUNBQUFFQ0N4Y1EwQmRPcWtBQ0JBajBScURNYUsvajlLK2xCZHRQcDlIei9WUnp2eGQ2MDMwcVNvQUFBUUlFQ0F4TndCOWlRK3RSN1NGQWdNRFJCTm85ejIvYytLTnA5UHk3WTB4N25vZGdZYmlqMlRtS0FBRUNCQWdRSUxBVUFRRjlLYXdLSlVDQVFLY0Y4Z0p3YWJUODFxazBhdjVYT2wxVGxTTkFnQUFCQWdRSWpFaEFRQjlSWjJzcUFRSUVpc0N0VzJXa2ZPdm01MzQwMU9IM3BudlA4OVIyQzhQNTlpQkFnQUFCQWdRSXJGbkFkTVkxZDRETEV5QkFZTVVDZGZYNjYzdm50N2UzMHJacWY3R0thY3Z6RVB6SDJoVjNnc3NSSUVDQUFBRUNCQjRsNEkreVI2bDRqUUFCQXNNVktELzNUOWYxVDRRUVhrak56TnVxK1YwdzNQN1dNZ0lFQ0JBZ1FLQkhBdjRvNjFGbnFTb0JBZ1RtRkNqYnFsMjdlZlBEVlJWL3pMWnFjMm82blFBQkFnUUlFQ0N3WUFFQmZjR2dpaU5BZ0VDSEJmTGljTlcwYWY1aXFPdHo2YW5SOHc1M2xxb1JJRUNBQUFFQzR4TVEwTWZYNTFwTWdNQTRCY3JvK1pVWHI3OFNRL1VuWjZQbjFpRVo1L2VDVmhNZ1FJQUFBUUlkRlJEUU85b3hxa1dBQUlGbENJVHBKTjk3ZmpwdHI1WlhiaThqNnN1NGpqSUpFQ0JBZ0FBQkFnU09MMkQwNVBobXppQkFnRURmQlBMbytYUnpkL2ZyWXhYL2phcUpWbTd2V3crcUx3RUNCQWdRSURBS0FTUG9vK2htalNSQVlPUUNaYVE4cGZRZlMvZWViOHhHei8zOEgvazNoZVlUSUVDQUFBRUMzUlB3QjFyMytrU05DQkFnc0VpQmUvZWVwd250UDFqdVBROGh2K1pCZ0FBQkFnUUlFQ0RRTVFFQnZXTWRvam9FQ0JCWXNFQjduM2t6K2RFcWhHZmNlNzVnWGNVUklFQ0FBQUVDQkJZb0lLQXZFRk5SQkFnUTZKaEFHVDIvZFAzNmk2bGVQekFiUGZkenYyT2RwRG9FQ0JBZ1FJQUFnUU1CZjZnZFNQaE1nQUNCNFFtVTBmT05qZnBIMHNydEY5MTdQcndPMWlJQ0JBZ1FJRUJnV0FJQytyRDZVMnNJRUNCd0lKREQrZjdGbXpjM1l3dy9ISzNjZnVEaU13RUNCQWdRSUVDZ3N3SUNlbWU3UnNVSUVDQXdoOER0cWl3RXR4SDN2eS9VWWFlS1RkNzMzTS84T1VpZFNvQUFBUUlFQ0JCWXRvQS8xcFl0ckh3Q0JBaXNYaUJVcjFVbGtJY3EvRWlhMnA3M1BXOFhpMXQ5WFZ5UkFBRUNCQWdRSUVEZ2lBSUMraEdoSEVhQUFJRWVDWlRSODZ1N3UvOVNTdWJmR0dOc1V0Mzl2TzlSQjZvcUFRSUVDQkFnTUU0QmY3Q05zOSsxbWdDQllRdWtJZk9xU3FuOFQ2V1I4eXFOb09lQWJnUjkySDJ1ZFFRSUVDQkFnTUFBQkFUMEFYU2lKaEFnUU9DUVFCNDluMTdaM3Y3YTlQbTdabHVybFJIMVE4ZDRTb0FBQVFJRUNCQWcwRUVCQWIyRG5hSktCQWdRbUVPZ0hTbWZoTzlQaThNOU85dGF6ZWo1SEtCT0pVQ0FBQUVDQkFpc1NrQkFYNVcwNnhBZ1FHRDVBdmxuK3Y3Mjl2YVpLbGIvYXJyMzNPSnd5emQzQlFJRUNCQWdRSURBd2dRRTlJVlJLb2dBQVFKckZ5Zy8wKzlNSnQrWkZtMy95T3plY3ovbjE5NHRLa0NBQUFFQ0JBZ1FPSnFBUDl5TzV1UW9BZ1FJOUVHZ0xBNFhxdWI3TEE3WGgrNVNSd0lFQ0JBZ1FJREEvUUliOTMvcEt3SUVDQkRvcVVEK0Q2N1R6ZTN0bTdFS2Y2aHEwc0x0SVZnY3JxZWRxZG9FQ0JBZ1FJREFPQVdNb0krejM3V2FBSUdoQ2R4dTl6bXZKNVB2VHRQYkwxb2NibWdkckQwRUNCQWdRSURBR0FTTW9JK2hsN1dSQUlHaEM0VHF0V3EvTkRMR1A5NDJObStBN2tHQUFBRUNCQWdRSU5BbkFTUG9mZW90ZFNWQWdNQ2pCY3JQOHMwYk4zNVBGYXJmMTY3ZW5wNTVFQ0JBZ0FBQkFnUUk5RXBBUU85VmQ2a3NBUUlFSGlsUXduZ2Rtank5L2ZSc2VydWY3NCtrOGlJQkFnUUlFQ0JBb0xzQy9vRHJidCtvR1FFQ0JJNHEwRTV2YjhJZlRlSGMzdWRIVlhNY0FRSUVDQkFnUUtCakFnSjZ4enBFZFFnUUlIQk1nYkpTKzlXZG5XK29xbmlyVEcrdjJnWGpqbG1Pd3drUUlFQ0FBQUVDQk5Zc0lLQ3Z1UU5jbmdBQkFuTUtsT250VFFqZkdlcDZZdlgyT1RXZFRvQUFBUUlFQ0JCWW80Q0F2a1o4bHlaQWdNQ2NBam1jbCtudGFXTDdIeTdUMjYwTk55ZXAwd2tRSUVDQUFBRUM2eE1RME5kbjc4b0VDQkNZVjZEOERMKzZ1L3ZWb1lyZk9GdTkzYy8xZVZXZFQ0QUFBUUlFQ0JCWWs0QS81TllFNzdJRUNCQllnRUNaM3A1R3o3ODloUHBjRmF0cEt0UFA5UVhBS29JQUFRSUVDQkFnc0E0QmY4aXRROTAxQ1JBZ3NCaUJsTTNUMG5CVi9NNzhiL29vWHkrbWFLVVFJRUNBQUFFQ0JBaXNXa0JBWDdXNDZ4RWdRR0F4QW5uMGZIcng1czNOdEsvYVIwczBUOFBvaXlsYUtRUUlFQ0JBZ0FBQkF1c1E4TWZjT3RSZGt3QUJBdk1MbE8zVkpqRitTd2pWVGhvOWIxS1JmcWJQNzZvRUFnUUlFQ0JBZ01EYUJQd3h0elo2RnlaQWdNRDhBaUZPYjFjcG9hZlo3VG1nZXhBZ1FJQUFBUUlFQ1BSWVFFRHZjZWVwT2dFQ294VzR0NzF2UkNsb0FBQkFBRWxFUVZSYUNPSGJ5cTNuNmNsb05UU2NBQUVDQkFnUUlEQVFBUUY5SUIycEdRUUlqRXFnL095K2RQMzZpN0VLdjdkc3I1WnVSQitWZ01ZU0lFQ0FBQUVDQkFZb0lLQVBzRk0xaVFDQndRdVVNRjVQSnQrVW5seE1yYzNUMndYMHdYZTdCaElnUUlBQUFRSkRGeERRaDk3RDJrZUF3R0FGNmhCLy82SDd6d1gwd2ZhMGhoRWdRSUFBQVFKakVSRFF4OUxUMmttQXdKQUVwcmt4YVd1MWo3WmJuN3YvZkVpZHF5MEVDQkFnUUlEQWVBVUU5UEgydlpZVElOQlBnZnh6TzE3ZTJkbE5zOXBmS2ZlZkI5dXI5Yk1yMVpvQUFRSUVDQkFnY0wrQWdINi9oNjhJRUNEUWRZSDI1M1pkdjVyR3pUZFRaZDEvM3ZVZVV6OENCQWdRSUVDQXdCRUZCUFFqUWptTUFBRUNYUkpJTjV4Lzg2SDd6N3RVTlhVaFFJQUFBUUlFQ0JBNG9jREdDYzl6R2dFQ0JBaXNYaUF2QkpkSHpQTU42TjlZUGx1OHZXWHdMd0VDQkFnUUlFQmdBQUpHMEFmUWlacEFnTUJvQkVwQXYzYnQydG1VMEwrdXREcEk2S1BwZlEwbFFJQUFBUUlFQmk4Z29BKytpeldRQUlFQkNaU3QxUGFmbTl4SUM4UzlXQmFJcy8vNWdMcFhVd2dRSUVDQUFJR3hDd2pvWS84TzBINENCUG9rVUFKNjNDOEx4RDJiS202QnVENzFucm9TSUVDQUFBRUNCSjRpSUtBL0JjamJCQWdRNkpwQUNQRnJEeTBRVjBKNzErcW9QZ1FJRUNCQWdBQUJBc2NYRU5DUGIrWU1BZ1FJckVzZzVndW5SUDcxYVpHNGRkWEJkUWtRSUVDQUFBRUNCSllrSUtBdkNWYXhCQWdRV0lMQU5KV1o4bm40Y0NrN3BKM1FQUWdRSUVDQUFBRUNCQVlqWUp1MXdYU2xoaEFnMEZHQmd4Q2RQeDg4ejhQZjdYWnBSNjkwL2crcXpaWGQzZTIwT055SFpxZjVqNnhIOTNNa0FRSUVDQkFnUUtEekFnSjY1N3RJQlFrUTZMbkF3VnowZzg4SHpjbGgvY0hYRHQ1NzFPY1M3c05rY2kxTzl6ZG5CeHdFL2tjZDd6VUNCQWdRSUVDQUFJR2VDUWpvUGVzdzFTVkFvQmNDWmJUNytlZWZ2elk5ZGVxL1NlUG01MEtzUGhkRDJFdTF2NUJTOWQ5ODU4MDNYMHZQSitralQxcy95cU1ONDlQcEsybG1lNTFHMGZONStYd1BBZ1FJRUNCQWdBQ0JnUWdJNkFQcFNNMGdRS0I3QXMxeno5WFZkUC9iUTEyZnpZdTY1WVNkbmxmTnRObE5UNzhwZmN6dUtUL0NTUHJ0MjFYMTJtdFZyS3Zka0V0cW1sUmdtOWxUT1I0RUNCQWdRSUFBQVFJREVIRC80Z0E2VVJNSUVPaW13SFF5ZVRkRjZMZGkwNlI4SHUra3ovdk5kSG9uallEZjJ0cmQvZjVaclk4MkN2N2FhKzEwK0tiNlNEZGJxMVlFQ0JBZ1FJQUFBUUx6Q2dqbzh3bzZud0FCQW84Uk9QMlZyK3luVk4zTVJybzMwdWM4YXlsOTVLd2Rmekw5azhQNWZ2cDQybEI0ZnY5Z0t2eUgyaTNXbm5aS09zT0RBQUVDQkFnUUlFQ2dWd0lDZXErNlMyVUpFT2lKUUJudGZ2dnR0OTlMb2Z4M0g0alNrenlTWHRYMU4xemUzZjJoV1h1ZU5vcGVpbmpwcFplZVRWSCtham1uekhQdmlZWnFFaUJBZ0FBQkFnUUlIRWxBUUQ4U2s0TUlFQ0J3SW9HOGxkckJ5UGNIQmVUOXkvTTk2YUg2OGVybGw1OUpieHhsRkwzNm5idDNyNmJ6OGpacnVhd0hjdjhIeFh0R2dBQUJBZ1FJRUNEUVR3RUJ2Wi85cHRZRUNQUkVJSVh3cnp5aXFta1VQZTZublA1MVYrNjgreU96OTU4MGlsN0NlSnhNTHFaVWYrNFI1WG1KQUFFQ0JBZ1FJRUJnQUFJQytnQTZVUk1JRU9pa1FCdXFZOGlqNlBtMjh6THNmYSttYVlwNkhna1BWZjJUMTY1ZE81dGVmK29vZXQwMDExSXBwMHRwUnREdlVYcENnQUFCQWdRSUVCaUtnSUErbEo3VURnSUV1aWJRVGtGdm12Y2VVN0ZKMmlwdFA0MklmMmp2MUtrL05Udm1jYVBvYmRpdjQ0dHBSRDQvY3Vodm41VXYvVU9BQUFFQ0JBZ1FJREFFQVFGOUNMMm9EUVFJZEZjZ3hEd3kvdWhIbXVQZWpxTEhuN3g0OCtabU9pZ2YrOWlmeTNVMTJjdzNydWM5Mng1ZG9GY0pFQ0JBZ0FBQkFnVDZMUERZUHdUNzNDaDFKMENBd0pvRmNvQXVJOXpwbjNmYXA0L00xR1VVUGRUMTdzWjArbWRMblcrVnJkY2VXZjJVeTlzVjNCLzVyaGNKRUNCQWdBQUJBZ1Q2TGlDZzk3MEgxWjhBZ1c0TGhQRHdLdTZIYXh4Q25iWmRTeGsrL1BuejI5dGIxZXZWWG5yN3daL05iYm9QOGZvRGQ3SWZMc2x6QWdRSUVDQkFnQUNCbmdzOCtFZGd6NXVqK2dRSUVPaU1RQmxCVDhuNm5hZmNMWjUvRHUrRk9sdy9IY0pmbU5YK3daL05KYUNuK2ZEUDU5WG1QQWdRSUVDQUFBRUNCSVlwOE9BZmdjTnNwVllSSUVCZ1RRSWhQbVVFdmExWDJuYXR5YmVYLzltckw3MzBRbnJwd1h2Ulp5UG85Wm4yOEpMOTE5UWlseVZBZ0FBQkFnUUlFRmlXZ0lDK0xGbmxFaUF3Ym9IYnQ5djJoL0NsSTBEa244VjdWVjF2VGZmM2YySjIvTUhQNTV6R2MwQ3YwMDV0N1I3b2FZdTIyVEUrRVNCQWdBQUJBZ1FJREVqZzRBL0FBVFZKVXdnUUlOQWRnYlJRZTdzUCt0T3J0REViUmYvVG05dmJOOVBoOTQyaWIyMXRuVTJqOFJkbUU5d0Y5S2Q3T29JQUFRSUVDQkFnMERzQkFiMTNYYWJDQkFqMFF1QzExMG8xcDAzemJ0b1dMVDEvYXFiT0IreWxRSDloTWdrL1hrNXVGNHNySjlaMWZTYVZjcTR0YS9hdVR3UUlFQ0JBZ0FBQkFvTVNFTkFIMVowYVE0QkE1d1JDOCtSVjNPK3ZjTGtYUGVYNVA3TzFzL09SOU5aK05kdDJiVzlqNDVtcWFtYjNvRDg5N2Q5ZnJLOElFQ0JBZ0FBQkFnVDZJQ0NnOTZHWDFKRUFnZDRLaEZoL3NWUStQTFIxMnFQYWxIOG1weFhkNitkaVhiV2o2TysvV2tiUU4rbzZCZlJ3NmxFbmVZMEFBUUlFQ0JBZ1FHQVlBZ0w2TVBwUkt3Z1E2S2hBMmhydDdqR3JWdTVGcjJMNDRjczNiNzVhZmVwVDVmeDRxcW5UOVBlbnpwTS81clVjVG9BQUFRSUVDQkFnMENFQkFiMURuYUVxQkFnTVNxQ3M1NVpHdzM4bmxudlFqend0dmIwWHZRNm5RNXordXdjaTlWNzlUQ3B3Y3ZDMXp3UUlFQ0JBZ0FBQkFzTVRFTkNIMTZkYVJJQkFod1JTcUg0dlZTZUg5ZU9NZnM5RzBhdC9iZXZHalcvS3pkbWZOSG1CdUlNcDdzY3BLNS91UVlBQUFRSUVDQkFnMEFNQkFiMEhuYVNLQkFqMFZ5Q3RFUGQrRlVMZU1pMC95cWg2Ky9TSi80WVV4dmZUNlB0R0duMy9xZmJJa004OTZ2bFBMTnliQkFnUUlFQ0FBQUVDM1JRUTBMdlpMMnBGZ0VEL0JVcVlucHhxN3FiaDd1T3M1TjYyUElROGloN1R1UHUvY3ZtRkY3NnVpcFBmU1VFL2o1d0w2ZjMvM3RBQ0FnUUlFQ0JBZ01BakJRVDBSN0o0a1FBQkFvc1JtT3hQOXRNbytQRURlcjU4T2k5bjhyQ3g4Vk1wckIvOHZEYTlmVEZkb3hRQ0JBZ1FJRUNBUU9jRU5qcFhJeFVpUUlEQWdBVDI5dmZUdG1sNUJQMEV1VHFFc2k5Nk92TjdKNkgrUkt6aTd5U2FDK2tqajZLZm9NQUJ3V29LQVFJRUNCQWdRR0NBQWdjak1nTnNtaVlSSUVCZy9RSWIrL3QzMDVacGVhRzQvRGp1OVBRY3d2TWE4TS9HMlB4NGVuYndIMVdGODhMcEh3SUVDQkFnUUlEQXNBUUU5R0gxcDlZUUlOQWRnUkxHOTg3dHZaK21xYjg3eDRCM0NlbXBXVHZwNDB4M21xY21CQWdRSUVDQUFBRUNpeFlRMEJjdHFqd0NCQWdjRWpqOWxkUDdhV3I2M1RrbnBCK0U5RU1sZTBxQUFBRUNCQWdRSURBMEFRRjlhRDJxUFFRSWRFV2dqS0MvL2ZiYjc2YlYxNzg4bTVOKzNDbnVoOXRpV3Z0aERjOEpFQ0JBZ0FBQkFnTVVFTkFIMkttYVJJQkFwd1J5S0QvWUI3MVRGVk1aQWdRSUVDQkFnQUNCYmdrSTZOM3FEN1VoUUdCWUFtWFVPKzJVOXBYU3JEVFhmVmpOMHhvQ0JBZ1FJRUNBQUlGRkNnam9pOVJVRmdFQ0JPNFhLQUU5eHREYy83S3ZDQkFnUUlBQUFRSUVDRHdzSUtBL2JPSVZBZ1FJTEZhZ2FXYmJyQmxBWHl5czBnZ1FJRUNBQUFFQ3d4SVEwSWZWbjFwRGdFQVhCVUowRDNvWCswV2RDQkFnUUlBQUFRSWRFeERRTzlZaHFrT0F3S0FFMm52UXErbzM1OWdIZlZBZ0drT0FBQUVDQkFnUUlQQjRBUUg5OFRiZUlVQ0F3R0lFUWpDQ3ZoaEpwUkFnUUlBQUFRSUVCaTBnb0ErNmV6V09BSUUxQzdTTHhGWFZPMVY1dHViYXVEd0JBZ1FJRUNCQWdFQ25CUVQwVG5lUHloRWdNQVNCRU1OMENPM1FCZ0lFQ0JBZ1FJQUFnZVVLQ09qTDlWVTZBUUlFMHUzbjRVc1lDQkFnUUlBQUFRSUVDRHhOUUVCL21wRDNDUkFnTUtkQUNQWkJuNVBRNlFRSUVDQkFnQUNCVVFnSTZLUG9abzBrUUdDZEF0T21lYmVLZVEvMDRFNzBkWGFFYXhNZ1FJQUFBUUlFT2k0Z29IZThnMVNQQUlFQkNJU212UWRkUEI5QVoyb0NBUUlFQ0JBZ1FHQjVBZ0w2OG15VlRJQUFnU0lRWXYzYk00b2MwZk5RdWdjQkFnUUlFQ0JBZ0FDQmh3UUU5SWRJdkVDQUFJSEZDb1FZNzg1aXVUSDB4ZElxalFBQkFnUUlFQ0F3S0FFQmZWRGRxVEVFQ0hSTW9JeVdoN3IrVW13VHVvRGVzUTVTSFFJRUNCQWdRSUJBbHdRRTlDNzFocm9RSURCSWdhYXEzazhOUzU4OENCQWdRSUFBQVFJRUNEeGVRRUIvdkkxM0NCQWdzQkNCalJqZlR3dTQ3ODhLY3cvNlFsUVZRb0FBQVFJRUNCQVlub0NBUHJ3KzFTSUNCRG9tTUQxMTZtNmEyOTZ1NU42eHVxa09BUUlFQ0JBZ1FJQkFkd1FFOU83MGhab1FJREJRZ1hwL2Z6L0dLS0FQdEg4MWl3QUJBZ1FJRUNDd0tBRUJmVkdTeWlGQWdNRERBbVU2Kzk1MHVwZmVFdEFmOXZFS0FRSUVDQkFnUUlEQUlRRUIvUkNHcHdRSUVGaUd3TWJlM3QycUN1K2xqMlVVcjB3Q0JBZ1FJRUNBQUlHQkNBam9BK2xJelNCQW9Mc0NlMmZQdnAraStidXpmRzZSdU81Mmxab1JJRUNBQUFFQ0JOWXFJS0N2bGQvRkNSQVlnOEF6NzcyM2wvWkJUNlBvSGdRSUVDQkFnQUFCQWdRZUx5Q2dQOTdHT3dRSUVKaFhvSXlXdi8zMjIrK2xiZGErWW9MN3ZKek9KMENBQUFFQ0JBZ01XMEJBSDNiL2FoMEJBdDBRYUZJMUR2WkI3MGFOMUlJQUFRSUVDQkFnUUtCekFnSjY1N3BFaFFnUUdLSkFDTlZYaHRndWJTSkFnQUFCQWdRSUVGaWNnSUMrT0VzbEVTQkE0RkVDWldaN2JLcDJjYmgwTS9xakR2SWFBUUlFQ0JBZ1FJQUFBUUhkOXdBQkFnU1dLOURlZWg3anU4dTlqTklKRUNCQWdBQUJBZ1Q2TGlDZzk3MEgxWjhBZ1g0SWhPZ2U5SDcwbEZvU0lFQ0FBQUVDQk5ZbUlLQ3ZqZDZGQ1JBWWdVQ2V6bDVHME5NLzc3UlB6WEFmUWI5cklnRUNCQWdRSUVEZ1JBSUMrb25ZbkVTQUFJRmpDb1F3UGVZWkRpZEFnQUFCQWdRSUVCaVpnSUErc2c3WFhBSUVWaTdRTGhLWFI5RGJ1OUZYWGdFWEpFQ0FBQUVDQkFnUTZJZUFnTjZQZmxKTEFnUjZMaENpRWZTZWQ2SHFFeUJBZ0FBQkFnU1dMaUNnTDUzWUJRZ1FHTFhBN2R0dDgwUDQwcWdkTko0QUFRSUVDQkFnUU9DcEFnTDZVNGtjUUlBQWdma0ZRZ2pOL0tVb2dRQUJBZ1FJRUNCQVlNZ0NBdnFRZTFmYkNCQll2OEJycjVVNlRKdm0zU3JlVzlSOS9mVlNBd0lFQ0JBZ1FJQUFnYzRKQ09pZDZ4SVZJa0Jna0FLaHNZcjdJRHRXb3dnUUlFQ0FBQUVDaXhNUTBCZG5xU1FDQkFnOFZpREUrb3ZselZENXVmdFlKVzhRSUVDQUFBRUNCTVl0NEEvRmNmZS8xaE1nc0NLQkVPUGVpaTdsTWdRSUVDQkFnQUFCQWowVkVOQjcybkdxVFlCQWJ3VHlqZWRWbUV4K081WjcwTzJHM3B1ZVUxRUNCQWdRSUVDQXdJb0ZCUFFWZzdzY0FRTGpGR2hpdkpOYWJwVzRjWGEvVmhNZ1FJQUFBUUlFamlRZ29CK0p5VUVFQ0JDWVQyQ2pxdDZyUXRpZmxWSkcxZWNyMGRrRUNCQWdRSUFBQVFKREV4RFFoOWFqMmtPQVFOY0VTaGlmbm1ydWhxcXlrbnZYZWtkOUNCQWdRSUFBQVFJZEVoRFFPOVFacWtLQXdIQUZKdnVUL1hRUHVvQSszQzdXTWdJRUNCQWdRSURBM0FJQyt0eUVDaUJBZ01EVEJmYjI5L01xN2dkVDNKOStnaU1JRUNCQWdBQUJBZ1JHSnlDZ2o2N0xOWmdBZ1hVSWJPenYzMDFMeEwwL3U3WjcwTmZSQ2E1SmdBQUJBZ1FJRU9pNGdJRGU4UTVTUFFJRWVpOVF3dmpldWIzM1F3anZwZzNYZXQ4Z0RTQkFnQUFCQWdRSUVGaU9nSUMrSEZlbEVpQkE0RDZCNTk1L2JpOVc4YTU4ZmgrTEx3Z1FJRUNBQUFFQ0JBNEpDT2lITUR3bFFJREFFZ1RLQ1BwYmI3MlZ0MW43OG16ODNCVDNKVUFya2dBQkFnUUlFQ0RRZHdFQnZlODlxUDRFQ1BSRklJZHlpOFQxcGJmVWt3QUJBZ1FJRUNDd0JnRUJmUTNvTGttQXdPZ0V5c0I1Q05WWFNzdlRYUGZSQ1dnd0FRSUVDQkFnUUlEQVV3VUU5S2NTT1lBQUFRSnpDNVNBSG1ObzVpNUpBUVFJRUNCQWdBQUJBb01WRU5BSDI3VWFSb0JBNXdTYVpyYk5tZ0gwenZXTkNoRWdRSUFBQVFJRU9pQWdvSGVnRTFTQkFJSEJDN1JydzRXOEQvcHNtYmpCTjFrRENSQWdRSUFBQVFJRWppc2dvQjlYelBFRUNCQTR2c0JCUVArRWZINThQR2NRSUVDQUFBRUNCTVlpSUtDUHBhZTFrd0NCdFF2RUVEOFdZNXJlSHNJa1ZjWTg5N1gzaUFvUUlFQ0FBQUVDQkxvbElLQjNxei9VaGdDQllRcTBpOE5OdzZlckdIOHJOVEdQcUF2b3creHJyU0pBZ0FBQkFnUUluRmhBUUQ4eG5STUpFQ0J3WklFU3huL3JuLzdUTjlNWi95U2svZGJTUTBBL01wOERDUkFnUUlBQUFRTGpFQkRReDlIUFdrbUF3SG9GY2hqUDA5clRJL3g4bXVLZTRubWU2KzVCZ0FBQkFnUUlFQ0JBNEFNQkFmMERDODhJRUNDd1BJSGJzK1hoNnZqeEZNN1RkZHBoOU9WZFVNa0VDQkFnUUlBQUFRSjlFeERRKzlaajZrdUFRRDhGWG11bnREZE4rUGtVei9kU1hMZFFYRDk3VXEwSkVDQkFnQUFCQWtzVEVOQ1hScXRnQWdRSTNDZFFGb283VzFXZlNTUG92em9iUUc4WGo3dnZNRjhRSUVDQUFBRUNCQWlNVlVCQUgydlBhemNCQXFzV0tQZWh2L25tbSsrbDZlMy9LT1FaNys1RFgzVWZ1QjRCQWdRSUVDQkFvTk1DQW5xbnUwZmxDQkFZbUVCWnZqMjE2V096TzlJSDFqek5JVUNBQUFFQ0JBZ1FtRWRBUUo5SHo3a0VDQkE0bmtDN2NudGFLSzRNbm9mZ1B2VGorVG1hQUFFQ0JBZ1FJREJvQVFGOTBOMnJjUVFJZEV5Z0JQUVE2MCtIR045SmRjc2o2bTFvNzFoRlZZY0FBUUlFQ0JBZ1FHRDFBZ0w2NnMxZGtRQ0I4UXFVTVA3T1p6LzdWb3JtdnhUYW5kWUU5UEYrUDJnNUFRSUVDQkFnUU9BK0FRSDlQZzVmRUNCQVlLa0NPWXpuYWUxcGZianc4YktTdTRYaWxncXVjQUlFQ0JBZ1FJQkFud1EyK2xSWmRTVkFnTUFBQk5xRjR1cjRlanU1dlIxR0gwQzdOSUVBQVFJRUNCQWdRR0JPQVNQb2N3STZuUUFCQXNjVUtGUGFteVo4TWozWlMxUGRMUlIzVEVDSEV5QkFnQUFCQWdTR0tpQ2dEN1ZudFlzQWdhNEtOTGxpWjZ2cU0ybWUrNitXYWU0V2l1dHFYNmtYQVFJRUNCQWdRR0NsQWdMNlNybGRqQUFCQW1WaSsrVE5OOTk4THkzaS9vOUNYc2c5eGhMYTJSQWdRSUFBQVFJRUNJeGJRRUFmZC85clBRRUM2eEZvNzBPdnFvK1ZqZGJXVXdkWEpVQ0FBQUVDQkFnUTZKaUFnTjZ4RGxFZEFnUkdJZEJ1clJiang4c2k3aUc0RDMwVTNhNlJCQWdRSUVDQUFJRW5Dd2pvVC9ieExnRUNCSlloVUFKNnFPdFBoeGpmU1JmSUkrcHRhRi9HMVpSSmdBQUJBZ1FJRUNEUUN3RUJ2UmZkcEpJRUNBeE1vSVR4ZHo3NzJiZFNOUCtsME82MEpxQVBySk0xaHdBQkFnUUlFQ0J3WEFFQi9iaGlqaWRBZ01EOEFqbU01Mm50YVgyNDhIcFp5YjNNZForL1lDVVFJRUNBQUFFQ0JBajBWMEJBNzIvZnFUa0JBdjBXS0F2RnBYOStMcVgwMUpKMkdMM2ZUVko3QWdRSUVDQkFnQUNCZVFRRTlIbjBuRXVBQUlHVEM1UXA3VTFkZnpJOTJVdFQzUzBVZDNKTFp4SWdRSUFBQVFJRUJpRWdvQStpR3pXQ0FJRWVDcFM5enkvVTlhK2tFZlJmbWQySGJqLzBIbmFrS2hNZ1FJQUFBUUlFRmlVZ29DOUtVamtFQ0JBNG5rQzVELzJOTjk1NFAwMXUvOFd5a0x2NzBJOG42R2dDQkFnUUlFQ0F3TUFFQlBTQmRham1FQ0RRSzRGeUgzb1Z3OGZMUm11OXFycktFaUJBZ0FBQkFnUUlMRnBnWTlFRktvOEFBUUlFaml4UTdrTlBBK2V2bDEzUVF6aTRENzBON2tjdXhvRUVDQkFnUUlBQUFRSkRFRENDUG9SZTFBWUNCUG9xVUFKNmZlclVQdzR4Zmo0MUlnZno4bHBmRzZUZUJBZ1FJRUNBQUFFQ0p4Y1EwRTl1NTB3Q0JBak1LMURDK0JmZWVPTnpLWnIvOG15aE9BRjlYbFhuRXlCQWdBQUJBZ1I2S2lDZzk3VGpWSnNBZ1VFSTVEQSt1OVdvVHZlaHB3RjBDOFVOb21NMWdnQUJBZ1FJRUNCd0VnSDNvSjlFelRrRUNCQll0RUNNSHk5RnpvYlJGMTI4OGdnUUlFQ0FBQUVDQkxvdllBUzkrMzJraGdRSURGdWdUR2x2NnZxVDZjbGVhdXJCUW5IRGJyWFdFU0JBZ0FBQkFnUUlQQ1Fnb0Q5RTRnVUNCQWlzVktESlY3dFExNytTcHJmL3ltd0F2YnkyMGxxNEdBRUNCQWdRSUVDQXdOb0ZCUFMxZDRFS0VDQXdjb0U4Z2o1NTQ0MDMzayszb1A5aVdjamRmZWdqLzViUWZBSUVDQkFnUUdDc0FnTDZXSHRldXdrUTZKSkEyZmM4eHZCNjJXaXRTelZURndJRUNCQWdRSUFBZ1pVSkNPZ3JvM1loQWdRSVBGYWczSWVlcHJoL3ZBeWVoK0ErOU1kU2VZTUFBUUlFQ0JBZ01Gd0JBWDI0ZmF0bEJBajBSNkFFOUxDeDhla1E0K2RUdGZPSWVodmErOU1HTlNWQWdBQUJBZ1FJRUpoVFFFQ2ZFOURwQkFnUVdJQkFDZVB2L1Bxdi8wYUs1cjg4V3loT1FGOEFyQ0lJRUNCQWdBQUJBbjBTRU5ENzFGdnFTb0RBVUFWeUdOOW9HMWQvdkVxcnhhWHA3Z0w2VUh0YnV3Z1FJRUNBQUFFQ2p4R1kvVUg0bUhlOVRJQUFBUUtyRllqeFkrMEZjMHIzSUVDQUFBRUNCQWdRR0pPQUVmUXg5YmEyRWlEUVpZRXlZaDRuMDAra0ozZlRWSGNMeFhXNXQ5U05BQUVDQkFnUUlMQUVBUUY5Q2FpS0pFQ0F3QWtFbW56TytmRE1yNlg1N2I4eXV3Kzl2SGFDc3B4Q2dBQUJBZ1FJRUNEUVF3RUJ2WWVkcHNvRUNBeFNJSStnVDk1NDQ0MzNRMVA5UW1taCs5QUgyZEVhUllBQUFRSUVDQkI0bklDQS9qZ1pyeE1nUUdEMUF1MTk1M1gxc2JKUTNPcXY3NG9FQ0JBZ1FJQUFBUUpyRkJEUTE0anYwZ1FJRUhoQW9OeUhYalhWSjhyZ2VRaDVJYy8ydFFjTzlDVUJBZ1FJRUNCQWdNRHdCQVQwNGZXcEZoRWcwRitCRXNicjAzdi9PRFhoYzdObUNPajk3VTgxSjBDQUFBRUNCQWdjUzBCQVB4YVhnd2tRSUxCVWdSTEdQLzlybjM4N3pYWC9wZGxDY1FMNlVza1ZUb0FBQVFJRUNCRG9qb0NBM3AyK1VCTUNCQWprTUo2bnRhZEhmTDNjaDI2aHVKYkR2d1FJRUNCQWdBQ0JFUWdJNkNQb1pFMGtRS0NQQXZGalZVeDVmVGFNM3NjV3FETUJBZ1FJRUNCQWdNRHhCQVQwNDNrNW1nQUJBc3NXS0ZQYVl4M3pWbXQzMHNja2Zaam12bXgxNVJNZ1FJQUFBUUlFT2lBZ29IZWdFMVNCQUFFQ2h3U2EvUHg4ZU9iWFloVi9kVGFBWGw0N2RJeW5CQWdRSUVDQUFBRUNBeFFRMEFmWXFacEVnRUN2QmZKbytlU05OOTU0UDhUd3lkSVM5NkgzdWtOVm5nQUJBZ1FJRUNCd1ZBRUIvYWhTamlOQWdNRHFCTklpN3VrUlpndkZyZTY2cmtTQUFBRUNCQWdRSUxCR0FRRjlqZmd1VFlBQWdjY0l0UGVjeC9CNkdUd1BJYS9zN2o3MHgyQjVtUUFCQWdRSUVDQXdGQUVCZlNnOXFSMEVDQXhKb0lUeCt0VGRUNmRZL3JsWnd3VDBJZld3dGhBZ1FJQUFBUUlFSGlFZ29EOEN4VXNFQ0JCWXMwQUo0NS8vdGMrL25lYTYvOUpzb1RnQmZjMmQ0dklFQ0JBZ1FJQUFnV1VMQ09qTEZsWStBUUlFamkrUXczaWUxcDd2US8vNXRCZDZtdUNlTjBYM0lFQ0FBQUVDQkFnUUdMS0FnRDdrM3RVMkFnUUdJQkIvTG9YekZOUnpTdmNnUUlBQUFRSUVDQkFZc29DQVB1VGUxVFlDQlBvc1VQWStqOVBxa3ltZzMwa05tYVFQbytoOTdsRjFKMENBQUFFQ0JBZzhSVUJBZndxUXR3a1FJTEFtZ1JMR2YvUE1tVitMSVh4bU5vQmVRdnVhNnVPeUJBZ1FJRUNBQUFFQ1N4WVEwSmNNckhnQ0JBaWNVQ0FIOUVuMW1jL2NTZVBtditBKzlCTXFPbzBBQVFJRUNCQWcwQ01CQWIxSG5hV3FCQWlNVHFEY2R4N3IrTEdPdHp5bWFmajc1YU9xcHFtdWVhVGZkUHlPZDVycUVTQkFnQUFCQXQwVGFGY0o3bDY5MUlnQUFRSUVaaUczYnNJblVnTE9DOFhsbjlrNStIWm53YmdROWxJd1B4VW1rL2IzU1ZyUTd0NkM4N0hhdjFmZFVPWC9JSnpyM1oyNnA4cDRFQ0JBZ0FBQkFnUzZKR0FFdlV1OW9TNEVDQkM0WDZDTVFrLzI5ajZkWXUxdnpMSnROKzVEVCtFNzN4Y2ZZdlYvcFhwOWF4V2JmenMyOGFkVElQLzU5UFVYYzEzRHBON0l3VDNVNlQ4c2hIQVEwUE4vYTJoSDIwdUFMeVB1UnQzdjczZGZFU0JBZ0FBQkFpTVZNSUkrMG83WGJBSUVlaUZRQXZyYmI3LzkrU3U3dS84azVlSHIzZGtOUFkvbzEzbTAvTGQrODgwM2Z5NXA1by84bUZ6ZTN0NmVUQ1lmYW1MemFoWERLeW5GdjVKQytZMzAzczBVMUo4cmdUMGZPV3RNYWVRSERadCtNQVNmQnR0VHprOUhIdjdJWjNvUUlFQ0FBQUVDQkFZcElLQVBzbHMxaWdDQmdRams3SnAvVHFmUjZqUXlIZXB2cjVvbWxnWGpPdExBbEp5L2txdHk3ZHExcytrL0pMeWZuazUvNjYyM1Bwcys1NCtmVFIvbGtUTDdtYjI2M2s2ajdDbW94NC9FdW40eGhmWVUzcXZyS1pCdnB4eStGVVAxWENwdlV0V3p5VjBIQWI1TjhBZEZQUmpnOCtzNXdPZkg0YzhIejl0My9FdUF3THdDQjdOZ2NqbDUxb3NIQVFJRUNDeEJRRUJmQXFvaUNSQWdzR2lCTkhyK2MrWGU3dGwrYTRzdS83amxwYTNmVXA1T2oxQjlLWDlLNFR3SDlWQzkrdXJwL0hYMXFVOGRUTVhQOFRxKzlkWmI3NmJQbjVsOS9FejZmTytSd3Z2VzNTcGVDWFg5UWpycDVWVHVDeW0wZnppVnRwdWVYMGxyenUya0dmS1hVbDUvTmprY0N2QzVpSkxlMjM4L0dJWFBieHdLOHZuTC9FaWwzVDhpUDN1eHZPa2ZBZ1FlRnNpaFBIL2svNkVKNVEvN2VJVUFBUUlMRnloL1h5MjhWQVVTSUVDQXdLSUU4aC9IemRiMjl0ZWtrZVZQcGh1NG4wMWY1eitXMS8zenUwbi9yYUJPLzlIZ0g2WXA3UC9KZEQ5KzRyZC80emQrL1lGR1QyYjFQQWpyK2UxUTNVNGZyK1duWmJYM3crK1ZGeC80cDA2ajgxdlRqWTFMNmNETGFVWDdseVlodkpDeStKVVU0aitVWmhOY1MwVmVTaVJiU1dVcmZmMU0rbndxQmZuMDhpR2lRK0c5ZmRvRyszUlVmcEx2aTAvRkg3eDI3N3cyenJjVnV2ZGlMcmw5cWZ4NytQbWhsd2Y3ZEpyNlBmZnIvL3ZPWjkvODZHQmJPYzZHNWUvbHd4ODVrQi84ajZMTWtwbWVPdlhONllYZlU5KzU4M2UrOElVdmZIbDIvTDFqeHNtbTFRUUlFRmlzd05qK3NGaXNudElJRUNDd2ZJSDhjenErL1BMTHozenh6dnMvbjc3NHVoU0s4eC9PT1NTdCs1RUcwdHNVbkVMdmI2ZHF2cDcrdlArWjJGUi8vMHdJbjN6enpUZmZlNkNDZWRaVy9tTStoL0w4K2VCM1VQNTgrSG42c3J4L2NHeisra21QK3VMTm14ZlRmN25ZakUxemJocmoxWFR3VGowSm02bUF5K20yZ08ybUN0ZnJFQzZrVWkrbU5INDV2YitaQXZ5cEZQSlB6NXFRYWpDclFyNXF1WHorZk9qWm9aQS9lN2xKaDZXanl3bmwyUGFmV1RrZmpOYm5sdy9hOStEejlwVCsvQ3VnOTZldmpsclR3LzhoN2I3L1lQYjhqUnRmTmEyYWZ5NFY5TzNwMi95ajZYOHJIOG4vVzcvYk5GLzkvN2QzSi9DVlhQV1o5NnZxWHFsWGRiczMyN1NranVPUWtOQXNob1lrTE1adFkyQXltVGV6SklGNUU4Z3lNSGw1bVF6RGZNSm1JRFB2TzJFTlRuZ0pXWmhoR1RMSlFCSW1rMlNTTVBQaXJZME5HQnQ1QVJwc01FMjNkSy9zZGt2cVJYUzN1NlZiWjU3L3FWdlNsYXh1YTdsTExiK3kxYnE2UzlVNTMxUFN2VStkVTZlbXg4Y25kTDgvZ0xqY0RmRThCQkJBQUlFbkYyajl3UERreitZWkNDQ0FBQUs5RUxBUDBBMU5GUGRmTmNIYUw3aEdZMVpoTWl1bktLVmhXeDNiZWt2UmwwS3lHWDFIa2ZSTG1pVHU1bXBsNW90SGp4ejkzaUs0TkJSWXVrM1hzZWdwY3ovYWU5WDgxLzc5UVhEZ2dEMll2bTV4UXJiSGxsNzI3ZXNiZVBUUkxWRzF1cVhpM0FaTkpMOHRpcVBMdFBLZFFTVWMwTUdGN2FGclhLb1Y3dEtRK3dHRmtVMEs0QmJzMVVzZmJGWWQrM1NBWkoxVjFPZjVOTlRiMXVaS01YY2p1Y3YvT0g5ZnMyQjJ4OFVEdmoyeHRROC9lYUU1dEM1UDluUHJjOXR4bTREZURzWGVyV1ArOXlqNW5kS2xFT2VYTFVORDI3V0RQMGV4MndMNVMvWElNL1Y3b044QjdkNTJnRXBmK25jaWlOMXptM05ORU5EbitiaUZBQUlJdEVWZzhSdDdXMWJLU2hCQUFBRUUyaXJnSjRyYnVXZndUZXF3K2xER0FycFYxTUxtL0RCeERZSDI4ZFhDYS9LQi9wUWV2VTgvM2FibkhRalBuUnRwRG8rMTE2Wkxlc0Jod2JEYTlNR0xmRS9meCt4N2V0dWUzbm83S1Y5YXpvdXNiS21IYklLNzJkblpnWFByMTIvU1VZWDFvWHJwZFdSZ1J5Vm9iTmNRZ3EwNkxYNmpSc2h2MVd1M2g3R0czb2R1cXliMFc2K05ibEw5QjNUL1puME5LR3YzNjhUOXF1N1RFUHlXNHJYZXRnSllFRnBpbWJ0MzZjZm42K2lmdVBTVDVsZmIzUDdDQXdCcG9kTHY4MDlQYnRuOUJQVEZLdm40T1QwZ1pnZTE3R3R1MmI1bno5Nm8wWGl4aFhMdE5TL1VzYWRodjMvcWh5U1UyN25uK2tIelR1aEZmZm82b2JrcW4zMThmSHhVdHdub2M1TGNRQUFCQk5vamtINGdhcy9hV0FzQ0NDQ0FRQ2NFZk9RS1hYUnZiTGtyNlQyMyt5NFVwRHBSaG91dDA4cGhVVThmMXBNaTZZTjlyS0hsR2xudTArY1dmYnRHdDYveEgvalhyenVrMFFCZkRDSjNTeFNIWHpwV3EzMUhyMi90eVV2RGhOVXg3U1cvMFBhOWpSNU12MS9vZWVuOXFWbFM1dVRlNUw3OSs5T2VlVnZYM0ZkemdqdWI1RzdGeTlEUTBJYVR6bTFVcitUR0tBclhOWUp3dlpBMkNtYWJmTFpZbU5lcC9CdTA0ZzJoYzV1ZDAvbjBvWHJzWXczQmo4TDFLbGkvQ3JKUjBjaHViMVprc2prSXJFZXpLbE9iQThBbTVhc0kzL3lUZXRpLy9yTHorcDR1Y3pwek45Skg1cjdicnVYWDRHL00zYjN3UnJML2FXREV3cEMzOEVuODFHTUJ2d2VvREJhZWJiSGZMVHZ3NVpmTmwxKythME8xK253WHVwZHFmN3RhUTE2ZUhWU2laSEpIMisyMVUya1VqSjd2OTZsSSs0UitILzJ1dFNEWXArdmpPd0lJSUlCQWV3V1NOL1AycnBPMUlZQUFBZ2kwVjhBK2FNZWFMTzNTMmY2KyszWGJMazFtSDViVEQrRHQzVnA3MTJheHozclgvU2QvZmVhdjZNc1dINEZWRFp2OS9RRTllcXZ1dTZYUjMzL2Y4VU9IL016d0xjVklEeWF2dEhlOVpSVXJ2dG42L3BqZVRyL2J5bHB2cHl1M3V0cVMxRG41bnR5ejFuODFPLzRscDA5dlhIZjJiUCs1S05yUVY2bjB4OVZxUmIzNW0rSkdvMTlERnJacGgxaW5udnp0VWFDejcvVWN4YXlxaFgyRnNMN1F4VHZVQldxOTk1cElUOUUvQ2plcVNEb21FT2k3VTY5bzJLOWh5OWJUYnpXejBRQzJiOWxCQUxPM3lOWnZyMVBOWnJWdVc4OERtaVR1S2ozR2tnMEIyeCt0emV6N3d0OFRuZGF4NjlGSDkycFd4NnZWNGkvVFU1Nm5KejNGOHJmYTBSclh2aWNIeVB3djV0eDZGdGNzL1p0REQvcGlHWDVHQUFFRTJpaGdmOGhaRUVBQUFRU3lMV0IvcTMzNFU4K3pncXlHb3NhYUtNNzNiR1c3NEJjb25jNjkxZ0dHSkF6TW43dWVCSVZSOWM1K0tYTGhMZXBodm1OaWZQeWhSZXRZU2UvNm9wZjI1TWYwZmZaQzM0TmcvLzZrWU1sNTlXbTR0L3RhYnlmUDZjeS9kbm04UGpzQW9OSExRVFN6YWJQYUoreXJWdnRtbzZnL2pHYmlvS0hlL1lhQ3VWMWVyOUc0WEZjVU9EVlJxOTNlbWVLdzFtVUkyUDVrWHhiS2JUK1o2eUhYN1dEbjhQQnVqYlo1Z1o1d2pYN2NyNmZzMVlFVk84Q2kvKzBmKzJYelBldjJldnV5ZFQzWlFrQi9NaUVlUndBQkJOb2dzSncveUczWURLdEFBQUVFRUZpamdQVmt6dTRjSHJ4Unc1ZC9JNFBub2ErbWVoWVNsdTVkdHdmaTJJYVZmMTA5djE5UU1MeFpKei9mYzNKMDlQaWlEZldpZDMxUkVUcnk0MUx2eitsOTZmZldEUzkxWCt2alptM0xoYjRuai9KdmxnV3NqZE13M1hwS1NCQmNjY1g2SFkzR014VzhyOU9UOXF1Wm42ZmZHYnZzb0c2MjlwTHJaMzhxaWcva3RyNlZMQVQwbFdqeFhBUVFRR0NWQXVrSG0xVytuSmNoZ0FBQ0NIUlRRSiszNzA0NnYreVRkeVlXKzlCdWl3V0hsUzVXaCthWjA4M3FxR2Rkd1Z6clZQMUNuWHNkaGo5aFh3b1pid2xqVjk4eE5QaGwzWDlySEVSM0hCOGIrNlplM3hwVXJBejJaU0hVeXBXR1VkM00zYkpVMlplNnIxMFZhOTJmV20rbjYyKzl6MjViV1JiMDJxWlA1SHZiQk16Wjl1ZFc3em56clQ5dzJRLzJ4Ulg5YmtUWHU5bVpGK3Q1VDFNdmVUT1E2eWNicFpKY2tqSDV2V2pmbFI4YUtsQW45MFVWbmdVQkJCQW9yNEQ5MFdkQkFBRUVFTWkrZ0gzSWpuZnUzdjAwblVGOG56NGQyOFJpOWlHNWwzL0hiV1puWFZmTmYxYWZVVm5zb0c4N3k1TmVoc3kybzhtcWRPWjA4N2lFWXZ4NWJlbHI2aHU4dmVMQ1d5dXpzL2M4K3Vpang3VDkxaVU5Q0wzd25OeldaM0FiZ1d3SjJPK1BuY1poUyt2QnAyRFhybDJiZy9Ycm45dHdicjkrNmE3Ujc0T2RTNjZKQnZWdiszckpreTB2OGE5K3kyZTBKWnZGZmFZeDIvaVJFNDgrZWxpM3JheHpCdzEwbXdVQkJCQkFZSTBDOWtiQWdnQUNDQ0NRZlFIN2UrMkNmVUhmanFORDkrb3orVFBVazI0ZmpOTVA4OTJ1Z1Q4NG9FSTlvQTAvUmVja1grcXZmMjZUVGRsRWNPME42bW5ka25QWExaSG8vSHNmMXROd0VyaWptbHI4TGozeFpuV2RmK0Y0clhheDNuVXJlOXJ6bjY2Yjd3ajBRc0IrcnhmM2tzK1ZZOWZRMEEvSG9YdVI5dTNydGF1L1FEdnVsWDYvVHdPNWhXTWJVcE1jdVVyWE0vZjZOdDN3Mi9DVEE5cnZXK3orWi9ENDQ2K2FtSmlZMXZxVHYwdHQyaENyUVFBQkJCRG96QWNvWEJGQUFBRUVPaVBnZTZzMFVkeWZxQy81MVQwOUQxMUJQS3hVTkp0MzhGdm5HbzNmV3hkRjcxZHY5aS9iaC9pV29KNzJZSGRDSXhuQ25vUVRQNFRYT3RrdEx1aXVHWDBkVklyL2duTExMWlh6NSs4NmV2VG9ZNHNLa1I1RXNQVVExaGZoOEdOSEJTelVwZ2ZXRnZTU2I5MnpaMXQxZG5hZkRqL3QxKy9XZFhyZXMvUTdaWmZWOHpuYy8rTVB6R2tWcXorWDNGYTNuTVVmRUV1RHVYNm5SbFNtOTA3V2F2KzkrV0xDK1hJVWVRNENDQ0N3UWdINzQ4cUNBQUlJSUpBUEFRdThzd3JvLzFvQi9mZDZHZEJ0dUtzbWhkYmx2WVAzVEk2TnZjdjR0ZzBQUDZNU3hPL1VmZi9jT3ZUMGdkNkdxR3UyZGg5R092MStrL2F1VzNDeHk0UHB1NzZTbnNiSGRPdHUzWDliRU1hM1R3eHMvM3B3OE9ENWxpYjNBVjgvVzg4NnZlc3RNTnhzaTREdCs3YVAyZmZGQjRTaTdYdjIvRmprR2xmcnNXdTF1NzVRKys1UXk3NXJlNlJHeXVnUmZ3VEtyMGRQN2VpUy9DNkZVVlYvWjdUbCtGdmEybTlQanRVLzFiSlZxNHY5cnJBZ2dBQUNDTFJad1A3QXNpQ0FBQUlJNUVQQTk2RHZHaDYrV3BkUStrTHo4N0Y5U083KzMzS0ZCbjE0cnlpRTN6SlpxNzljWlVqRGJhQURDSnJZemIxVGllTC84Si9pTGFnbmo2ZTlocDNXVHJhbndxV2hScjJBZnB2cTNkZmw2VUlMSExlcnhMZnErMWZVSTFoZlZDQXJweFY5Y1poYTlEUitST0NDQXEwSGZSYWNvMzNaWlpkZEd2ZjFQYytGN25ydG9GZnJZdlRQMUNraTYyeE50c3RhSXZaZmx0THR2MlJmN01idnVFMzNicjhmQ3VhNklsc2NIOUdtYnh5b1ZqOSsrUERoeDVzMXRZT0VWaC9DZVJPRWJ3Z2dnRUM3QmJyeEI3L2RaV1o5Q0NDQVFGa0Y3RU4vUExCNzk4NytLSHBBSDkxMyt3L1U4OE5sdSt2aUFnMXp0eUh0N3E4VmN2K3AzL2pldmYxcDcvU09QYnV2RCtMd0J2VUlYbWVQTmEvZGJqZTdGZFJ0VzdZMEE0OXVXZmhZMkxzK3BReDB0OUxHYlhyc3RnM09mYU5XcTUzMXIwcitzZmRKSzI5NkFNSkNPd3NDaXdYc2Q5UDJGZnRhZUdCSHZ4TzdqaC9mRzBmUjFZRkN1ZllrdXpMQnBaYS85ZnVyL3kyVTI0UncrdDY5WHZMVzhsdDVMWFQzK1FOWkxqN3F3dUREcm4vREgwdzkvUEFwLzBUTmZSR01CRFlSSkFzQ0NDQ0FRSWNGN0kyRUJRRUVFRUFnSHdMcDMyeTNZM2p3SmdYTDYvWGgzajVZZHp2d3ptczF6MFZmSXFUYnViVSt6TzRZSHY0blNpSHZVQjU1dnIxUVBYTTJrVnphd3ppL3J1N2NzcUJ0Z2QxNjE4MXpickk1bGNzZWUwaXVkMmlFd3MxNnpwZW54c2ZIRmhYTHJPMTFDMFBZb2lmeFl5a0UwbjNZOXBzRnZlUTdoNGQzYXg5NmdVYVNYS2ZjZmJVZWY3ckNyLzg5MVg1bU9NMWg1SDRmdFAzSjF0WHRaV0dQdVhNSzQrRWY5TTNNZkdqdWlnajc5aW1ZajFqZGZLRzdYVUMyaHdBQ0NKUlJJUDJ3VjhhNlUyY0VFRUFnandMcGVlZ2YwQkR6dC9ieVBQUVVUK2trT1IrOXRTZDkvcUNCZmJDM0FCUHNIQnI2QmZYTUthaUhlMzJ2WVcrRCtuenhrNE1jMW51NXFIYzlPS0dpanlpTzMrWWE3cmIxUVhELytQajRtZlNGK3U0RHZyNWIvZXlMRUNPRUFpK3R2ZVFXV3YxK2JmWGR2WHYzeHNmRDhGbmF0MStpdmVLbE9yanpQTjNlcm4xS3owcDd5WFdGQTF0NmQzREtiMTcvTEF6bWNhemg2K0VuNGpqKzdlUGo0NlBOSnpHVVBkWGlPd0lJSU5CbEFRSjZsOEhaSEFJSUlMQkdBUi9RdHc4Ty9sd1VoWi90ZVE5NnN6SktLa3VGZEFzMEZscDltZjFUN1RKeGorMytsNXFBK3MwS0tqK29ubmZkN1RweERYVy91UlgrazRUc3BYdlhiVlVQS1h4OVNaZTh1clZSbmIzenhHRi9IZWpXVGRDNzNxcFJqTnUyRDl1WDdSc0xlc2t2dWZ6eUs2cDlmUy9RN25LOUhuNlJIbjlhTWtTOEdjanQrZlA3a3Eyajk1KzViQ2k5djBSaHBGUGY5Y3NYQm44U3pNYnZuM3prRVp1WHdSYjdYYlhmV1E0Mm1RWUxBZ2dnMEFPQjNyOVo5S0RTYkJJQkJCRElzWUFQdmY3NnlJRzdYL1hZcUM4TER6My9lNjVDTkVONi9LZWFPTzQxVFdOZlhsKysvUnFLZjhET3RRMkNYYnQyYlk3WHJYdURTdjF2MU5PNHV6bnMxNEs2aFZ4N1RSWVdKUzBMWmFyWkUzclhuYTRCSGQ2cmliNXVxUVRSN1kzVHArK2ZtcHBLenRkTlNtN3RZWFd4dHJFdkFvOFFNcjVZbTdWK0pUM2V6VUp2Mzc1OVMyWFRwcXNhemwyckhYUy9kbzU5Mm5jSE10cEwza3FkN01jNktxYnlScll6YW8vOHk3QVN2M2ZpeVBpOXpTY1N6RnZGdUkwQUFnajBVS0RuSCtoNldIYzJqUUFDQ09SUndQNXV1MEFUVCswNGVYSkVJMmlma1pWZWRGOHVYUVpPdlloOTZwejdwQ2FPZTIwVE9BM3A5bU1ZdEFSMURRM2VlVDRNMytqQzBDNGRkNGtQNmpxdlhhRW43WTF1cnFMbjM1S1FiVDJpbHNoOEw2U2FRamQ5UjJRWUhOSkRYMVRMM0ZLSm9qc2ZHeHY3N3FJU20wSHFRRmhmaE5Qakg5Tjk3UWs5eDNZZ3JCSEdMdzVkZUozQzdRdlYrRmZxdTM0RG03M2s4NWRBczk5TGExLzducVZGdmZncWxLNjRZSVZTcVcrS2craTNqbytOM2RFc3BMOWZ0eGVNRG1nK3hqY0VFRUFBZ1I0SVpPMk5wQWNFYkJJQkJCREluWUI5cUc3b2NtWi9vZy9lcjg3Q2VlZ0xCT2NuanJ0UVNMZW5oOEcrZlZWTlFPVm5odGFRL1NIbG5qZnIvbDlUd04rUTRhQ2VWalhwbGZUcEo2ejZ6TzZEbTJXMzJNNVRmeUIwd2MzNmZsdGozYnA3ang4NmRESjlZZk83OVZoYTZHLzlXdlFVZnV5QWdIM3VTY08wclg1QkwvbldQWHUyVllMWjV5bVE3MWZMWEtmSGRWNTV0TkZlNFkvTjJQRVpPNEJrZCtnZ1RYTmR0cDZzTFg1NHZYNlhiRC9UNHI2b09yMzNXSzMydWVUbnVZTUpCUE1tQ044UVFBQ0JyQWpZbXhRTEFnZ2dnRUMrQk94RDk2d0MraHNWMEQrY3VZQ3VOS0FRMHdncmxXb1F1MDlNMUdxdmEvS21QY2l0MnBHQ2VpVU42bjdvZnVodTBCcCtTZUdpb3FEdTE2VUEzQXdhclMvTnpHMEwyY25NOEl0NzE1TkFkMFRaL2NzNmQvMFd1WHhob2w3LzlxS1NtNHQ5MlhvSVRJdHcydkJqR3NqdCsrSmU4bkQ3bmoxUGoxemphalhWUy9YNFQ2Z0poeGYxa2l1UXEybjhuWFBCdGczRjZzZ3FrdG5oRmN5dHVKcjQ3ZjVLRkx6djJHajlMNXBiUy9lMUJRY21PbElTVm9vQUFnZ2dzQ29CQXZxcTJIZ1JBZ2dnMEZNQjM0TythOC91RjhkeGVFZXpKQmJ1c3ZRM2ZTVWgzYXF3SURoY01qaDRWVFVLYmxCb2VxVUZEZlZlS25nb1hHVzcxN0xaRkNxcGxWV2xWcWlyV0xDek92Z2xqcytxb1I1UVV4M1FzUDdiWnVKNFpMcGVuMHhmMlB4dUJ5T3NQVnUvRmoyRkh5OGlZTmoyWmZ1VUxRdkM2R1UvZE5tbGpjZXJQNjVIcjFNRHZVU1BQMVB0MDI5UGJQYVNKd2VGMUhCYWk2MGpTNzlYVnN5bEZqdncwRkNSKzJ4ZjAya1hEMnYvZXQvVTJOaW5kTDg5Wm9zL3NKZmM1RjhFRUVBQWdhd0s1T0ZOSjZ0MmxBc0JCQkRvbFlDRmhuano1WmZ2V2xldDNxLzRzRnZKd25wZUxiaG5hVmxwU0xleVd4M3N2Y21IcWt2MzdINVJIRWZ2MUQwL1pROHFRS1U5ekZtcnF4VnZxY1ZDZHJOM1hiZWVPTmxjVGZmZVpjUGg0MHJsenFuUlVadE5PdzFVdWpsMzRNTFdrOWJkN21kWktKQUdjdnR1VHVhVkxKcXZZZGVKRTA5dlZJTDljcjVPamZCOFBlbHl5OTkyREtVWnlyVy82V2VMNUltNWZjL0RZdlcwMzVVK2pUaFJNSS9ycXRLTjY1MzdUeTJYQkxSZ3Z0QWtEeldqakFnZ2dFQkpCZkx5QmxUUzVxSGFDQ0NBd0pJQzZkOXV0Mk40OENabGl1dlZZMmFYVDdJUDRsbGJWaFBTclE1cEFQZWhkUHZ3N3BkSHpnZDE2L0cwSUdJVHlabEQrank3T3crTFBKYnVYVmRRUEs4S2ZGMVBPRkRSY1BqSDQvaWU2Zkh4aVVXVlN0dllRcnlGcy9rZ3V1aUpCZi9SMnQ2KzdHQ1ZHU3c0ZUxGOTkrN2hJSXArWE5jU3UwNXpsMStqRlA2amRzcUVudWNuOWJOL202K3gxOXRYK2p1bG03bFlGZ1J6aldVL0ZvZkJSK0pLMzBkT0hENTh3dGRndi80ZUhDQ1k1NkkxS1NRQ0NDRFFJcEMzTjZTV29uTVRBUVFRS0xXQUJUVTdELzBET2cvOXJSazhENzIxY2VaQytrVm1kMjk5ZnV0dHE2ZUZLZnNLdGc4Ti9hejZDZFdqSGo3SGZtNEc5VFJrMlYxNVdpeGsyZEI5ZmRmL2kzdlhnMkJjOTM5VjU2NXI1dTNnQzhkcnRXLzQ1OC9YME43RExYUW02MG0reno5YXZGdHBJTGZ2QzRhdEIxZGNzWDc3ek14Vk9tYXpYMUg3V2dYeTUrbjI5Z3Ywa3FlQlBJK2ZnZnp2a3Q5WGtoN3oweHFtLzRkUnBmS2hpU05ISHZGTm5nVHp1ZCtaNHUwRzFBZ0JCQkFvdGtBZTM1eUszU0xVRGdFRUVGaWVnQS9vbXYzODU2SW8vR3h6NkhlV2U1UFhFdEpOeE5jM3BkbXhaL0NYRlV2ZnBobTJmNnc1UkRscjExQlBpN3FTNzJuUXRuQmxNOFBiNGw5dkJ5SjBTNzNyNFIxaEdOOFNWZGQ5NWJIdmZlL29vcFdia1MzMmVsdVhmZVY1c2NxbllkcnFzcUNYL0pMTEw3K2kydGYzQWcxSWVKbHEra0k5L2pRYjVqMDNiRDF4c05la0IzRHkvSmxuWVRCM1R2dTcrMFExckh6dzZPam9JZFV4Q09neDl3ejhnd0FDQ09SZElNOXZWbm0zcC93SUlJREFXZ1FzZE1TYTlmeXA2b0xWcEdQQlJuMVppTW55My9XNWtMNk0yZDFWbFNjc1ZqYzdDT0Y3VDY5UXIrbjA3T3kvVkxYZnJHQzJSeUhXd2xrV3I2SCtoSW9zNDQ0a1lDZkQ0Wi9ZdSs3Y1kxckgzUzRNYm8waWQvdkV6cWQ4UFowSnY3bnUxTXJXa3diMlpXeTI1MDlKeTIwRldkQkx2bjM3OWkyVlRadXVhamgzclhiKzYxVDNxL1RrTFMyOTVFbUl0VitCK2NuZGJIMzVYcHdjTkRtaURrWnB4TDQxWmZocEYwWHYxWHdGQjVzVld6REtKTitWcGZRSUlJQUFBdmwvNDZJTkVVQUFnWElLMk45dkMxL1ZuVU9ESXdvcHo4cEJMN3ExbEpWNVZvRzZMNGdiSDV1b2pmK2FmcmE2MkplbGorVXRTVytoRDNEYnJyeHlhM1R1M0J2VTJmeHZkZDd4TGgvVWc2QUlQZXF0Rm1uUU5pTWRwRkJhczk1MS9hLzY2cjdRSnBjN29LOWJ0Qi9jTTFXdjEzUzdkYkVERzZteHJjdStzckJZbWV4Z2szMjNNaTNvSmQ4NU9QZ2pjZVJlckd0NFg2dG52RmhQdThMWE81M2N6WjV2UXlpVVh2VmEreXJLb29NTituMlFpdXBiYVRiVzMraSs5MDdXYW5jM0swa3dMMHByVXc4RUVFQ2dSY0RlRUZrUVFBQUJCUElwWUtHcnNXTm84TDhvOEw0bTQrZWh0d3JQOWFUcm5QVGZWdUI0bXg2MGNMWFM0QmpxR3VyVnRPZjRzc3N1dTNTMnYvOU5TcXkvTG8rQmxxQnVRYVpJNzNlSjA0VjcxeWMxY2VBOWV0SnRDbmUzVHF4YjkvWGc0WWZQdFRTQVdkaStZK3V4d0cvZnU3bWsyN2R0THVnbDN6STB0TDB2aXA4YnhORkw5ZGkxS3RvejFKYWI3SW5OVXhtSzJVdHVGWnhmL0VFS0MrWjJsK3A5aTFyb2ZaUDEraTNOcC9qN2RYdkJ3WXptWTN4REFBRUVFTWk1UUpFK3NPUzhLU2crQWdnZ3NHSUJDNTZ6TzRhSC81VTZVMzgvUndIZEttbzloSTJ3RWxVVjBqK2drUDUyM1pmMmdDNi9KOTNXWk9GN3Z3TG5nU1RzWGZLVXAveEFwUnE5VlpPci9RdjFNNjh2Mk5EM3BNWUwvMDJEZHJOM1hmT1crOTUxdXg1MmJJODlwTUIraDNxaWIzS3o3aXZIeDhkSEY3N2NoM1g3UEpDdXA5MkIzZHJWMW05ZlZzYlc5cTFzR3hyYVd3bmRDOVVQZnIyZThnSVZmYmU2alMyWk5rTzVCZEZDOXBLTFlzSGlSd1BvZ0lUOVhsdU52eEpHOFhzbVJzZi90dm1zMUpGZ3ZvQ05IeEJBQUlGaUNkaWJKUXNDQ0NDQVFENEZyQ2V0c1czMzdoZHBvcmc3bTFXd2NKV1h2KzBXMG1PRjlJcEMrdnNWMG05UTJTMkVXQjFXRXhMdHRmYmxlMlczNzluejlOQTEzcVkxL1pKQ1R4SldkVkJBT2o0QTZYbEZYQks3Qy9hdUI4ZURVRFBEQjhIdE9wMzUxbzFoZUgrdFZqdTdDTUo4YkQwV3BGZlREcmE2dEMzczlRc0M1ZVdYWDc1cnRsTDVDWjFEZnIyQ3VJYXRCOC9TQVlVK2UxR3psOXl1RzY5dEs2WGJmOG4rbkpkOTJxcXgwaVdwcjRLNUhWalI3OEkzTkJIZ2V5Zkd4ai9UWEZGcWFZNnJiWStWbG9ubkk0QUFBZ2owU0tESWIzZzlJbVd6Q0NDQVFOY0U3SU43UExCNzk4NytLTHhmZVdaUXdjWSt4S2REWUx0V2tEVnM2RUloM1ZiWjJ0TzZrazJrZ2NZSDlaMTc5dXh6Y2VNRytmeXN2ZWtwQk5xbHplejhYbk1xK3Z0Z0dyVE4wdXJiMnJ1dUg0UHZLQU4vUVRhM1ZLTG9ycU5Iam56UDdteFpVcU4wUFJjS2lHWnVsdlpsMjVwdnU2YytkZDNPbVRON1l4ZStKSXFENjdXQzV5dUlYbXI1VzQxaDdXR3hVMjJsNzhVN2wxd1VGMXpNeUg1Zisrd0FraVpPL0s0T250dzRNVmIvV1BOK2U2RWRMUEg3c2YzQWdnQUNDQ0JRZklHaWZ6QXBmZ3RTUXdRUUtMTkEramZjN1JnZS9MeUMxc3ZVKzJZelB1ZXRoL2hDSWQzQ29IMnRka25EWlJMVWg0YXVjYUY3bDV5dXR4VXFHS1k5dS9hOE1peUo1M3p2dW1ZR3QxN3FabEFPZ2xQU3ZrOUd0MVRDeW0zQjJiUDNIenQyN1B1TFlOSjl5K3hzLzdOZ2J1dE5MWFZUMTZzZkhCelN0NS9VRTY3VklZRnJoUDJqQ3FIZXVUazNRTkpyYk51Zlg0Kzl0QXlMZWRrKzZZTzVmbWNmRWNLSHduUG4vcWpGMjV6TmRDMzd2MTdPZ2dBQ0NDQ1FOd0Y3WTJSQkFBRUVFTWl2Z0gyUW45MHh0UHQ5WVZSNWU4N09RMjlWdjFCSXQrZk05OGEydm1MNXR5MFlXdER4NjlHbDZmNmgwdUU3bFEzdDJ0azI5TjB1eldidmgyVUo2bGJ0ZEdrTnloYllyUmZiaGxuYnQwUHEzUDZpd3JYMXJ0LzUyTmpZZDlNWExmNitlL2Z1alkvclNnSjZ0UVh5L1hxTjlaSnZtd3YvdnBkY0I0OXNLVmN2ZVN2Vm9tQWVIOWZSa2Q4NzU5eEhwdXYxU2Y5RXJtWGU2c1Z0QkJCQW9KUUNCUFJTTmp1VlJnQ0JBZ240Z0w1OWFPaG5vekQ0YjgxZTRid0d6UXVGZEFzMjdlaEpOQ3NMNlVsUUg5NzlLdWZDRzNScHRtZjdZZFpKVUUrSHh4ZG9GMWxXVlJMamx0NTFCV2xiSks5bWNXNWFOeC9RazI0UDQrQ1crT3paa1hqZHVtM1ZTdVZGNm5GL21WckhEbmI4aUIrcW5UemZOcHBlQXMwK2E2UkQ0TzMrTWk1MjJiOW1qM21zYy83RC82U2ZQNmg1RitvZVk5KytQbDJOd0hyTTEzb3d5cStPZnhCQUFBRUU4aXRBUU05djIxRnlCQkJBd0FRcytNU1hEZy8vVU1QRkQraTJYWkxLd2xaZS83NWZLS1NyU20wTEwvNmdocTFRUzBVOTZyK2lidVMzS1Z6K3NQVWNxL3ZZZXRUTEd0UVRsZVRmcFh2WGs5N3dJekxhcWdCL2lYOXFHc3JkWEMrNUhTVEs2ejdZYXJDVzIzWmtRNU1TaGhYdFc2R04xRkNQK1I4TDVmM0hhcldIbXl0ZWNOQm9MUnZqdFFnZ2dBQUN4UkRJYXk5TE1mU3BCUUlJSU5BbWdkT25UbjEvMDVZdFA2L0FkSmxXYWIxd0ZqRHp1Q2pENkwvWTJlenVMOWt3c0dYOTJWT25ibFpGMmhuMnpNZldaK0dvY2ViVXFmdTJiTmo0U1JlR3gzVHZNOE5LNVJJRkszdmNlajNMM1BPcmx2QUhLc3pDRHB5b1J6eE83Q3lZTzdkZTdaVGVseHdVc210M3o3OUdMeXZwWXBQZWVUMDc3OTdHSWJnL3IraHFBc2ZxOVk5cGY1dVNpdTE3dG5DZWVlTEF2d2dnZ0FBQ1RRRUNPcnNDQWdnZ2tIOEIrMXMrdTJIckZsMURPbnAyRUN0RUpTRXByelc3VUVodjkwR0hKR3p1Qy9wT2YrZjA0MmVtcCs5YXQzM0hKNk5HL0xnUzZUUFU2emxBVVBlN2tBVjBhNU9vSlh5Ym5kMmIzbGZtQXhtZXd2K1RYTWJQaFZGWXRWeXVVd1ArWGdjMmZtV3lWdi8vVGs5UEg5VnpDT2J6V3R4Q0FBRUVFRmhDZ0lDK0JBcDNJWUFBQWprVHNML2w4Y2F0bHd5cXErNGZLbFRtUGFBYmZ6T2t4dzNyU2Q4NHNDVlV6K050dXIvOTcxdVBORWNjN0F1cWozL3J4Qmx0NS9hTjI3Yi9hWkJNOHY0c0JmVU5QcWpiOE8xOEgvZ3cxM1l0U1dodjE5cnl2eDZOSkFnc21OdEVlNUZ1Mys2aStOZW14c2JmZlhaNnVxYnEyWDVyQnpIb01jOS9XMU1EQkJCQW9LTUM3ZitnMDlIaXNuSUVFRUFBZ1NVRS9CRGtEWnMzOStteDF6WkRaSjdQUTArcmFJT0UwK0h1MTI3WVBIQmVZZWNMZXJBVDcxMHVTSUo2R0dnbTdUTVBuRHgxNXRUMDU3ZGNzdTNQZFc3L2VoWGoyUXJxZlFycTZYbkZCTlMwbGNyOTNTYkNpN1Z2VkMyWTY1ZHVST0g4MXpYNTI5dlBucHcrSkJvTDViYS9Fc3pMdlo5UWV3UVFRR0RaQXAzNGtMUHNqZk5FQkJCQUFJRzJDUGlBWGgwWU9GdUp3bDlVcU4yaXRkb1FaQXNIZVYrc0o5MW1FbmZxU2IrK3d5RTlzVG84WjFjNWZmTGs1TmxUMDMrM2Z1dld2NHFjMjZZblBGTmhMSEZOaGpNWHdUanYrMGd2eW04VDZEVjBCWUNxN1E4NmF2TXQ3VFZ2MFZEMmY2VTVFeDVVZ1d5dnRlSHM5bnVZbkE2Z0d5d0lJSUFBQWdnOG1RQUIvY21FZUJ3QkJCREloMEI0Zm5yNnpNYXRXLzZCRXUwUHFSZFB3OXdMRWRCTjM4Sk9kME82VFlvMmY1Q2o4dmlwVTQ5cTZQdGY2alNDejJuQ3I4dDFFT1JwemFITXlhV3hrc01JU1RsOVlmbW5vQUlXdHUxNjdsVk5KcWlETSs2d2RzOTNUYTViLzMrZFBYSmtwRmxuZ25rVGdtOElJSUFBQWlzWElLQ3YzSXhYSUlBQUFsa1U4S0ZnNDVhQnA2dEg3OFYrdHUxaW5TL3QrOUhuZXRLM2Fyajd5WTROZDI5dDN6U28yL3RscE43Um1vYStmMmJqd01BZCtubVB6am0rc2huVTdZQ0lQWmNlOVZhOTR0eTJ0azJDZVJSVk5QdmJZenJaNGQxdS9ZYlhUaDArZkdjd05kVUlkR3BFY0hqdXdFNXhhazVORUVBQUFRUzZLa0JBN3lvM0cwTUFBUVE2Sm1EQk1ONndaZXNsU3JLdlZFeHdCZXBCVDlIbWU5TERMZzEzVDdlYzlLaGJNUXBmZkFBQU44OUpSRUZVU0xQM3pWRG53aC9TMFBjLzNyaDE4MzBhZkgrbGd2cHdFdFQ5UkhJRTlYbTN2TjlLZzdsZHk5emEvcVIyaGQ5ZEY3dlhQRmF2Zi83czFOUzVZTisrdnVDUlI1ekNPVVBaODk3YWxCOEJCQkRJZ0FBQlBRT05RQkVRUUFDQk5nbTRnYTFiejhmT2FhSzRZSjNXYWVHaWFNT3VGL2FrZDNiaXVLV2F4VXh0c1JFTGdYclRIMVN2K3NjM2J0MzZiVDN3TklXNHkzVzNadkgyUWQyZVVqUi9xMU01bHFRTmZUQlhqL2s1OVpoL1ZGY3dmTTFVZmZ5dnBuVTZTYlBIUEZBNHQ5TWNXQkJBQUFFRUVHaUxBQjhjMnNMSVNoQkFBSUhNQ0ZSMkRnM2VvM09rbjZONTFTdzRGUFZBckFWbFhkWktFM1ExNG5kTTF1dnZhOWJWZWpIVEVLMmJIVjhzcU52UVoxdXFPNGNIWDZkTS9oYjVYK2xpWDhRWjNXOXR3TkIzRThyK1ltTlBHanFzWXBkTHMrdVkyMGlVUHc0YTdnT1Q0K00yK1pzdC9uUVNmYWZIM0hQd0R3SUlJSUJBT3dXSytzR3RuVWFzQ3dFRUVNaUxnUDFOYjJ6WXV1VUZPdjM4cWtEZGZRcUtSUTJHdmU1SlQvY0pDMm4rMG13YTRqeXJIdld2RG16WThBbFhxUnpYL1RiaisxYjFwbHRaTGFoYlczQmdYQWlaWEp3T3ROaUYvWFF0Yy8ycjYvdTV6NFlWOTB1VG8rTWYxU2tORXlxekJYTnJQeTZabHNrR3BGQUlJSUJBTVFRSTZNVm9SMnFCQUFJSW1JRDlUWTgxMC9oVGxDNStXajJCUlR3UHZiV2xrN0RielV1d3RXNjk5WFp5L3JHVnAzcjY5T2x6bXZIOVM3cnMzYWVxR2hxdHNHZlhVTjlFVUc4Rnk5UnRYY3ZjUm1PRWRpM3pVRGR2aW9Mb1Z5Zkdhcjl6NXVUMEl5cXAvVjdad1JXQ2VhYWFqY0lnZ0FBQ3hSUWdvQmV6WGFrVkFnaVVVOEFDb3Rzd01LQ2VQdmM2OWZWWnFMQngxa21RTGFhSnIvUGM3TzREVzg3cG5QQTdWTlYwR0hLM2EyMDk2cEVtRHF1ZWYraWg3NStabnI1dHcrYk5uOVlCRXl2blZRcnE2M3hRVDg1dkx1cm9obTZicjNaN2FUQzM0ZXhxQzNkbjZNTFhUOVRxLzE0SFdFYTFVb0w1YW1WNUhRSUlJSURBcWdXSy9LRnQxU2k4RUFFRUVNaXBnQVcrZUdCd2NFZC9HTnlubnR0aGhjRWluNGZlMmt6ejU2Uzd4cTlQam8zL2dSNjBrTjdMWGs5ckQvdnk1Nmp2R2hyNllSWHliZXFoL1JVRjlZcUxkWks2dFUrb0lkWEZQb2lpNm1WcVVURFh1ZVZSWkQzbXVobmZxNU1RUGpBMVd2K0xaaW50czVHMVNUcTNRS1lLVDJFUVFBQUJCSW90UUVBdmR2dFNPd1FRS0pkQStqZmQ3UmdhK2wvS0hxL1FSR1YyWHEwRjFUSXMvbnp3NWpEbE4weU8xZjlJbGJhNjl6cG9wUUU4Q2VxRGcxZTVLTGhCRWZHVlNVQjBzY1k1MkhYVXk5Sk92ZG9YNVN6ck5Kakg4Y05SR0wzdjJOallwMVNnWkM2QkpKajM4cUJPcjJ6WUxnSUlJSUJBUmdUc3lENExBZ2dnZ0VBeEJLd1gyY0tnK21QZFY5VXpxeHQyVjJrV2UwOXJUcndkL3FGbVZIKzlmclpRYk1FM1BYaWhtMTFmTFBCWk9heHRLc2ZxOWZzbnh1cXZxa1R1eFNydDM5dndhanYvV1kvWjgreUxwYjBDRnI3OUpIMWhwVktWK1pnR0w3eHBvTnIzVElYelQrcXhPTmp2OXhIN1piRjJLdFV2amVyTGdnQUNDQ0NRSVlIa2cxeUdDa1JSRUVBQUFRVFdKR0FoTmQ2NFpldFdKZEpYNmJhRmpUSWRqTFVnYmlFM1V2RDlSeHUzRGh6VnpPcDM2MmNMd0JiVWVybFlXOWlYdmZkR3AwOU9IMUhaUHIxKzY5WXZhMmF5SDFCNWY5REN1cDVobC9rcVc3dDFvbDNtVGlHd1V3cDB6YlFKM2ZHK3VIL2RyeHcvY3VUMkV5ZE96QWI3Z3I3Z0VWa2Y3dm0rMFluNnMwNEVFRUFBZ1J3SzlMSkhJWWRjRkJrQkJCREl2SUFQNkpmdDJYUGxiTng0UUtYZHJDOExlMlg3ZTI5aDNFSzZWZi8vVm8vMVIzVWo3YVUyanl3czZVRURmK0JBcHlYOE00MThlS2ZtazN1dUwyQWM2L1FFWHdFT3BxK3N0ZEpnWGxVd0QzU3UvN1F1Wi9EUlNyWDZ1OGNPSDM2MHVhcXM3UXNycXlIUFJnQUJCQkFvckVEWlByQVZ0aUdwR0FJSUlMQklvTEp6YU5DR3VWK2xNZC9XbzF6R2tPZnJ2VVJJOStlQ0wvTHExWS8yUG14dFkyWDF1WHpIbnNGZlVuL3VEUXFYUDJwem1lbDY5aGJVN2NCTG1VWkNxTHFyV0pMWjhaTmc3cHlHdGJ1UFY4UEtqVWRIUncvNXRWbVArWWkzN3ZWb2lsVlVqcGNnZ0FBQ0NKUkJvSXdmMk1yUXJ0UVJBUVRLTGVBRDM0YXRXMzVTdWU0cUJUeE5RT1lEWHRsVS9HZ0NWVm9aL1FuRDNiUFNpMjV0a29aRjM2Tis5dVQwQTJlSDkzeHN3K09QUDZZZTlhZUhVV1c3enB1MklHL25VZHQzRHE0TG9XVlJqN2svTFNEUU9lWVZtNFZBUDMvR1JkRXZUbzNWUG5YNjVNbmplcTdaQmhyT1BuY2d4UC9NUHdnZ2dBQUNDR1JNZ0lDZXNRYWhPQWdnZ0VBYkJPeHZlN3h4NjViZENxWS9yYkJpTTRTWHRmZlZ3cXlGc2l5ZWs3NjRxUzJvVzNtcndiRmpNN3FlKzkwYkxyM3NQd2N6czZkMDM3UFZvejdRRXRTdFBRbnF6VW4xTk1sZXhRN0R5T1J2ZEN6cU5aTzEydStmUFhueW1MZE1uQWptd21CQkFBRUVFTWkrQUFFOSsyMUVDUkZBQUlHVkNsaFFjUnNHdHFqWDBMMVdNYzcrMWx1UGNWa0RYVjU2MHROMlRvTDZ2bjE5Wnc4ZVBLdWdmdWZXalpzKzFZakNHWVZRQytvYkNlbzY2S0orY2d2bU5qeENuZWEzYUtLOTEwM1c2dTgvYytyVXVDQnRuN2QySjVpbmV4WGZFVUFBQVFSeUlWRFdEMnU1YUJ3S2lRQUNDS3hTd0FmU2djSEJIZjFoZUw5aStaQUNuUVdWc2grVTlRWkpSK3VDaWVPeWRFNzY0aWFQTk5ONFJlZE4yL0QyWU52dTNYczBGT0J0Nml2K0Y3cWU5M3BOZ0taREwzYXRlMytadHNXdkxlTFBhVEQzUTlZVnpMOFNSdTQ5RTZQamY5dXNiTHFQVzF1eklJQUFBZ2dna0R1QjlJMHNkd1dud0FnZ2dBQUNGeFVJejA5UG45bTBaY3ZMRmVhZVd2Smg3aW5Vd3A3MExWdnE2bTM5YXFDZTZ1Q1JSOUx6d05Qblp1VzcwM25UVmpZcmUrWHg2ZW5qWjZlblA3ZGg4OEJmNnNETGdPNTdWdk84NjFodGJKZG5zd1B2UlR6NGJnYitRSVJHRUVRNnkvenJZUmkvYWJJMi9xWXpKNmUvM2F5emhYWjZ6SVhBZ2dBQ0NDQ1FYd0VDZW43YmpwSWpnQUFDRnhPd3NCSnYyRHJ3WXpvbjl5VjJyU24xc2xySUsvdGk0ZFZDWENTUG45bThkZk9EWng3ODl0ZWExOFBPYWtpM05yTlRGS3g4OXI1ZFVVaC83T3lwNmIvZWRNbm12M2R4c0ZOMWVicEdCbGo3cGhPbUZhV3RyZDVwTUs4b21CL1NnUFliSnNmcXI5YzE1TCtteDJ5eGZUMzE4WGZ3RHdJSUlJQUFBbmtWS01vYmVGNzlLVGNDQ0NEUVdRRVhqbWdJdFBwVS9RUmFuZDFXZnRadUlWZERwVzMydk9qUGR1MFpmS1VmUW02WDRNcitZZ2NYYkVpK0Qrb1RvNCtNNkx6cm45WFJocGNvbWQ5a0lWMy9WWDF2ZW5JZ0l2czFXcnFFZGpEQ3oxcXZIdk0rdFZWZEI1bmV2RDZPbnpreFd2K1BlbXcyMk4rY21UM3hzSURPZ2dBQ0NDQ0FRTzRGaWpnTUx2ZU5RZ1VRUUFDQk5nallBZGg0NjU0OVYxYmp4Z082dlZsZkZtTDR1eStFNW1KaFY3Ti8yeFR2d2F1T2pkYi93dmVrTjgvM1RwK1U4ZS9wU0RpclM3QnRhT2lub3NDOVMwSDloZmF6Qms1WTc3TzFlZm84dXp2TGkrMmpkZ0NpVDhIY3luOWNvL1kvZk02NTM1K3UxeWQ5d1pOcm1kdHpDT1VlaEg4UVFBQUJCSW9rd0FlMUlyVW1kVUVBQVFTZUtCRHRHQjY4UnlIbnVacFFLd21rVDN4T21lOXBoblJkaHk1MGVRM3AxbjRMenIvZVByejdWWkVMMzZhSjVKNWpsd1VQa3FCdUIyMnlPbkp1Y1RBL284TUs2aW1QYnB3WUc3TloyUU0vVjhESUNNSGNZL0FQQWdnZ2dFQlJCZkp5Ukwyby90UUxBUVFRNktTQS9ZMjM2NkgvcEVZK1AwY2hqZlBRbjZodGdkVkNlcVNFK1BPYkw5bnlyVE1QVG44OUIrZWtMNjZKRFFtM2crNytmR3lkbi80Tm5hUDk4ZlVEVzBiVkQvMWpta2h1bDM4OG1mSGRYcHVkQS9SSm1TcnFNYS9ZalBTNlhOb25OV1QvMVJPMSttYzBpZDkwY3hLL1FCUDUrVkVDVm5nV0JCQkFBQUVFaWlwQVFDOXF5MUl2QkJCQUlCbldIRzhhMkhLNXVvZi9rUVlFTzhXeXJQYWc5cks5V2tKNnFKQStrTmVRYm9iSlJIZDJmdmJob0tGcnFOKzNmY3ZXajU5M3diRXdjTTlRVUw5RUlkakN1VCsvVzk5N0ZkVFR5ZXdDSDh5dElMSDdzemdNWHoxVnEzMWN3WHhLZDluQmhqU1lNNXpkWS9BUEFnZ2dnRURSQlhyMXhseDBWK3FIQUFJSVpFSEFEc0kyZGd3Ti9iaE8xNzFMdCsxdnZnVWQvdllMWVltbE9kdzkxK2VrdDFZcjFFaUFhbm9OOVV1dXVPS1NhSGIyalFycWIxUW8zdUd2b1o0RWRRdkMzZHduekZsbnhpZFhGZEFRL0wvVEtQejNUdFhyWDI0VzNvOEMwRzE2ekpzZ2ZFTUFBUVFRS0k5QU45K1F5Nk5LVFJGQUFJRnNDRmpQc0UwVXQwMFR4ZDJ2U0xSSHZhZEpDTTFHK2JKWWltWkl6LzA1NmEyMlliQmZrOFFkOEpPdkJaZis0S1dYemM3MC80YUMrdXNWMUFlYVFiMWJCMjZjSlhNcm5JTDVBWjFZOEo3SjBmR2JtNFZOUi9VUnpGdGJqOXNJSUlBQUFxVVNJS0NYcXJtcExBSUlsRXdnL1J2dmRnNE5mVTU5cEQvbFlxZFp2WnREaDB1R3NZTHFOa042UzA5Nk10emFKaWpMOHhJcHFFZHBVTDlNTS93M1hPT3Q2cjMrVlZXcVgxK2REdW5wK3U5VEIvcHZUZFpxZjlYRXRBTko5cFYzMzJaMStJWUFBZ2dnZ01EcUJld05rUVVCQkJCQW9KZ0NGb2lTWHNrb3VFYzk2UHJSN21KNUVnRi9hb0JSeFM3OGMzK2RkQXVQKy9ibDRUcnBGNnRhM0F6bjl0NWZQVG82ZW1oaXJQNTZuUXorRmQrcDdUbzZwRHdKNTJFWVY0UHdsNXZoM0p4dE9MdWROMDg0RndJTEFnZ2dnQUFDQkhUMkFRUVFRS0FFQXBvWDdGNk5LYll6Zi9tN3Y3ejJib1owcDVBZS9MbGRYendZR1prSjl1NjFudWE4TDJrZzlwT3c2Uko4M1J0UzdqU2d2bEx4MnhXaUhURWltT2Q5YjZMOENDQ0FBQUp0RmVDRFdsczVXUmtDQ0NDUU9RRS9xM2MxaXI2bWMzNm5WVHI3dTA4Myt2S2FhYTRuWFpjcSt4ODdCd2V2RFE0ZVBGK0FudlMwOW1rd1QwK0ZTTy92eFBmNWJZUzZrRnF5cE44N3NUM1dpUUFDQ0NDQVFDNEZDT2k1YkRZS2pRQUNDQ3hid0FmMG8wZU9ITkVJOSs4MDUrZnk5eTE3RGVWK29xN043WHQ1cTdvNDJlZDlTTGVlOVB3UGQyOXQxVzRFNVc1c283Vk8zRVlBQVFRUVFDQ1hBZ1QwWERZYmhVWUFBUVJXSkdBOXdiR0d1ZHRNN243NjdCVzl1dXhQdGtuMTVrUDZUUVVONldWdlplcVBBQUlJSUlCQUpnUUk2SmxvQmdxQkFBSUlkRlRBRHkvV3lPSjdrcTBrbDducTZCYUx0dkw1a0Y0cGNFOTZKMXR0Zm9oN0o3ZkN1aEZBQUFFRUVNaTVBQUU5NXcxSThSRkFBSUZsQ1BqaHhUWlJuS2JvaWpVMWwvV29NK1I0R1hBTG5qSWYwbTI0T3ozcEMzQ2U5QWYydHljbDRna0lJSUFBQWdna2t3WGhnQUFDQ0NCUWJBRWZqbWFDNEdGVnM1WmNiczFmMnFyWXRlNUU3ZVpET2ozcEsvT2xCMzFsWGp3YkFRUVFRS0NrQXZTZ2w3VGhxVFlDQ0pSS3dBSjZlS3BXbTlJbHRRNzZwS1NMWDVkS29KMlZuUS9wUlprNHJodmhtZjJ0bmZzZzYwSUFBUVFRS0t3QUFiMndUVXZGRUVBQWdUa0JDMGMyckYweDNYMDE2VUVuTDNtUDFmNVRySkRlaloyaEd3Y0JWdHVhdkE0QkJCQkFBSUhNQ0JEUU05TVVGQVFCQkJEb3ZJQTZ6a2NDcHp3V2h2ejlYeXYzd3BET09la1g5K3pHUVlDTGw0QkhFVUFBQVFRUXlJRUFIOUJ5MEVnVUVRRUVFR2lEZ0wvMmVUWHErNXB6N3Z0YW4vMzlKelN0RlhZK3BDZm5wQThON1Evc091bDc5L2F2ZGRWZGZIMDNlcmU3c1kwdWtyRXBCQkJBQUFFRU9pTkFRTytNSzJ0RkFBRUVzaWJnQS9yUkkwY09xL2Y4d1RDNTBwcS9MMnNGelYxNTBwQWVobFdOVVBpZk80WXZmMzV3OE9ENUhJWDBiaHlvNmNZMmNyZnJVR0FFRUVBQUFRUVdDeERRRjR2d013SUlJRkJjQVg5NXRkQUY5L3Z6ME5XVlh0eXFkcmxtUHFTN0dibXVEMXpsMXAzRFQzbGV6a0o2cDhIb1FlKzBNT3RIQUFFRUVDaUVBQUc5RU0xSUpSQkFBSUZsQ2FRaDZaN2syVWszK3JKZXlaT1dJOUFYeFBHc1F2cG01NklEaFBRRlpCd01Xc0RCRHdnZ2dBQUNDQ3d0UUVCZjJvVjdFVUFBZ1NJS0pDRXBETzkxY1J3SG9aL1puV0h1N1d4cERYUFhKSHpXazc2SmtMNEFOajA0dE9CT2ZrQUFBUVFRUUFDQmhRSUU5SVVlL0lRQUFnZ1VXY0FIOU5sSzVXR0Y4MUUvekoySjRqclIzbWxQZWw1Q2VqZkNNejNvbmRqVFdDY0NDQ0NBUU9FRUNPaUZhMUlxaEFBQ0NGeFF3RUpTZU9MdzRSTTZELzJnVDJXYTFleUN6K2FCMVF2a3F5ZTlHL3RBTnc0Q3JMNjllQ1VDQ0NDQUFBSVpFU0NnWjZRaEtBWUNDQ0RRQlFFTFlqWlJuSmJ3bnFRSHZSdlpMTmxpQ2YvTlcwOTZKNXVJSGEyVHVxd2JBUVFRUUtBd0FnVDB3alFsRlVFQUFRUldJQkRGOStwY2FlWDBrUGVCRmJDdCtLbjU2a2xmY2ZWVzhBSjYwRmVBeFZNUlFBQUJCTW9yd0FlejhyWTlOVWNBZ1hJSytFbmhacVA0NjRybnAwUmc3d1AwYm5aMlgxaTZKMzNmdnI3T2JqWlRhMmNmeTFSelVCZ0VFRUFBZ2F3S0VOQ3oyaktVQ3dFRUVPaU1nQS9vSnc0L2VrU3IvM2FZWEdtTm1kdzdZejIvMXFWNjBrZEdab0x5aEhSNjBPZjNCbTRoZ0FBQ0NDQndRUUVDK2dWcGVBQUJCQkFvcklDZGgrNDBVZHg5L2p4MFoyUGRXYm9nc0tBbmZkdlEwTE9DOG9SMDlyRXU3R0JzQWdFRUVFQWcvd0lFOVB5M0lUVkFBQUVFVmlxUTltWitOWGxoMG8yKzBwWHcvRlVJTkh2U05YSmhVeFM0bTNiczN2MmpKUW5wNlQ2M0NqUmVnZ0FDQ0NDQVFIa0VDT2psYVd0cWlnQUNDS1FDU1c5bUdON3I0ampXTmRGOWozcjZJTjg3THRBbjkxbUY5RXZES0x3OUF5RzlHK0daSHZTTzcxWnNBQUVFRUVDZ0NBSUU5Q0swSW5WQUFBRUVWaWJndzlKc3BmS3d3dmxvY3JtMWdQUFFWMmE0dG1lckp6MTJia2IybDRhVjhFQ1BRM28zd25NM0RnS3NyVTE0TlFJSUlJQUFBaGtRSUtCbm9CRW9BZ0lJSU5CbEFRdGs0WW5EaDAvb1BQU0RQams1Wm5MdmNodm8yRWpRcDlQL1o5UVVsMldrSjcyVEJOMDRDTkRKOHJOdUJCQkFBQUVFdWlKQVFPOEtNeHRCQUFFRU1pVmdZY21HdFdzSjcwbDYwTWxQaVVmWC8rM0xVRTk2Snl0UEQzb25kVmszQWdnZ2dFQmhCQWpvaFdsS0tvSUFBZ2lzUWlCeUk0Rk40aDZHdkIrc2dxOGRMeWxKVHpwSGdOcXhzN0FPQkJCQUFJSENDL0NCclBCTlRBVVJRQUNCSlFYOE9lZXpVZU1iU2s2bjlBeDdQeUJFTFVuVmxUdVg3a21mRytuUWxUSjBjaVAwb0hkU2wzVWpnQUFDQ0JSR2dJQmVtS2FrSWdnZ2dNQ0tCSHhBUDNINDBjT0s1UTlxUm5GN01SUEZyWWl3dlU5ZTBKT3VpZU8yRFE4L1ExdG82S3NJNzlVYy9HbnY3c0xhRUVBQUFRUUtLbENFTi8yQ05nM1ZRZ0FCQkRvdTRNOURkNkc3ejUrSHJobkxPcjVGTnZCa0FqWngzRG1kY1hDWnJwUCsrdWFUTy8xZTNZM2U3VzVzNDhsc2VSd0JCQkJBQUlITUMzVDZUVC96QUJRUUFRUVFLTEZBRXBwYytOWEVJT2xHTDdGSE5xcnVYTVdPbElSQnFCbmV1N0owNDhCTU43YlJGU3cyZ2dBQ0NDQ0FRQ2NGQ09pZDFHWGRDQ0NBUUxZRmZHaUtLdkc5TG80YlNvVFdvODR3OTJ5M1dWNUxSdzk2WGx1T2NpT0FBQUlJZEZXQWdONVZiamFHQUFJSVpFckFCL1JHWmYxMzFWdDdKTG5jR2hQRlphV0ZOTlM5U0tHV0h2U3M3RmlVQXdFRUVFQWcwd0lFOUV3M0Q0VkRBQUVFT2lwZ29TazhmdWpRU1JlNGIvbzBxQnNkM1NJclJ3QUJCQkJBQUFFRUVMaWdBQUg5Z2pROGdBQUNDQlJld01LNG55aE9aNS9mbmZTZ2s4OEwzK3BVRUFFRUVFQUFBUVF5SzBCQXoyelRVREFFRUVDZ2V3S2hDMGNDbThSZDA0ZDNiNnRzS1NNQzNSeEtIMnJvUHZ0WVJocWVZaUNBQUFJSVpFK0FOOG5zdFFrbFFnQUJCTG9wNENlRm0yazBEaXFlbjlTRzdYMkJidlJ1dGtEdnR0WDhEQkRXYmZTRXpuanYrQVNCWVJqT0JyT3ozMjlXbWYyc2QyM1BsaEZBQUFFRU1pcEFRTTlvdzFBc0JCQkFvRXNDUHBTZGVPU1JJNHJsRHlsQTJXWTdIdFM2VkRjMnN4eUJLUDdQTm5wQ0xkL2Z3YlkvSDBiKzJNOWZUOVRyMzlaMjdBZjJzK1cwRDg5QkFBRUVFQ2lWQUFHOVZNMU5aUkZBQUlFbEJmeDU2QzUwOS9uejBEVUdlY2xuY1dmUkJCcXFVR1Z5ZFB6bXdNVnZiWjdkWUczZjF1Q3NGVm80WDZkTCtkMVZPVC83MnFJaFVoOEVFRUFBQVFUYUtVQkFiNmNtNjBJQUFRVHlLZUM3elNNN0Q5MHZTVGQ2UHF0Q3FWY29ZQ0U5bXFpTmYxQUIraDBhUWVFUDF1aStkb1gwbVNnTSs3WHVBeHVDOExxalI0K2UxcnB0RysxYXYxYkZnZ0FDQ0NDQVFIRUVxc1dwQ2pWQkFBRUVFRmlsUU5KalhvbEhYQ05zYUt4ekdxQTRpTHRLMEp5OXpOcS9NbG12djIvSDRHQVFSdUY3TllqQ0FyUjlyWG9mc0o3ekpKeTdtN1h1VnpUWFo1ODdadlhGZ2dBQ0NDQ0FBQUpMQ0t6NmpYZUpkWEVYQWdnZ2dFQStCWHhBYjFUV2Z6Y013dEhrY210TUZKZlBwbHhWcWEzOUxZejdrTzVpWnozcDZlZUQxZlowTjN2T0NlZXJhaEZlaEFBQ0NDQlFXb0gwRGJpMEFGUWNBUVFRUU1DSDhmRDRvVU1uWGVBTyt2SHV1b0ZMcVFUYUZ0SzFvdk1LK0gwSyt2U2NsMm9Yb3JJSUlJQUFBdTBRSUtDM1E1RjFJSUFBQXZrV3NIRG16ejFXeCtuZFNRODYrVHpmVGJxcTByY2pwTTlFVWFSenpnbm5xMm9CWG9RQUFnZ2dVSG9CQW5ycGR3RUFFRUFBZ1htQjBMa1JQNG43L0JEbitRZTVWUWFCVllkMHZYQkdzN1Ziei9sZmNjNTVHWFlWNm9nQUFnZ2cwQWtCQW5vblZGa25BZ2dna0Q4QmY2N3hUS054VUVVL3BTOTdmNkFiUFgvdDJJNFNyenlrT3plcm52TytvQkgvMldTdDlzOVVDSDlPdTc0eklWdzdXb1IxSUlBQUFnaVVSb0NBWHBxbXBxSUlJSURBUlFWOFFEL3h5Q05IRk11L3FYT0lMWjZ2ZG9Ld2kyNklCM01oOEdRaDNSNzNYL3BuSnF4VXFrSHNQak5Sci8rZnpkclpLUk4yQ1RjV0JCQkFBQUVFRUZpQkFBRjlCVmc4RlFFRUVDaTRnRDhQUFFqZHZjM3owQzJBc1pSWHdOcmY5NFRiSmRoYVpuZHZIVjBSKzU1ekMrZTEyaTgwcVFqbjVkMW5xRGtDQ0NDQXdCb0ZDT2hyQk9UbENDQ0FRSUVFbWhPNFJ5T0JzMnhtM2Vnc0pSZFlLcVNMeEYrR1RRTXR3b3FDKzZjSjV5WGZTNmcrQWdnZ2dFRGJCS3B0V3hNclFnQUJCQkRJdTREdk1hODBHdmZGVVRnYmhJRzlSMWdQS2dkejg5NnlheXQvR3RKRDYwbmZQamg0SUlpaWdUQjJEWnRRVVBjZGFLNmVudk8xT2ZOcUJCQkFBQUVFL0ljdkdCQkFBQUVFRURBQkg5RGQrZk1QaCt2WEhYWmgrRlQxcFB2NzRDbTlRTG9mUkZQMStwZVgwTENET0p4enZnUU1keUdBQUFJSUlMQVNBWHBGVnFMRmN4RkFBSUZpQzFnSUN5Y21KcVpkcUluaXJLNHVDZTNGcmphMVc0R0FQeWRkejdmUkZkWmpidDl0VjJGQ1FTR3dJSUFBQWdnZ3NGWUJBdnBhQlhrOUFnZ2dVQndCQytnV3VteTV1emxSWFBJVC95SXdMMkE5NVhiNXRQUjcycnMrL3d4dUlZQUFBZ2dnZ01DcUJBam9xMkxqUlFnZ2dFQ3hCVndRZmRWUEZCZjZ5Y0NLWFZscWh3QUNDQ0NBQUFJSVpFU0FnSjZSaHFBWUNDQ0FRRVlFa3FIS2pjWTNkZmI1Q1pYSjNpZm9JYzFJNDFBTUJCQkFBQUVFRUNpMkFBRzkyTzFMN1JCQUFJR1ZDdmlBUGpVK1BxWVhQcVRMYUZrODUvemlsU3J5ZkFRUVFBQUJCQkJBWUJVQ0JQUlZvUEVTQkJCQW9PQUN5WG5vb1J0cG5vZE9EM3JCRzV6cUlZQUFBZ2dnZ0VBMkJBam8yV2dIU29FQUFnaGtTY0JQNEI0RjBZZy9EejFKNlZrcUgyVkJBQUVFRUVBQUFRUUtLVUJBTDJTelVpa0VFRUJnVFFKSmozbWpjWjh1Z3o2cmkyaFpqenJEM05kRXlvc1JRQUFCQkJCQUFJRW5GeUNnUDdrUnowQUFBUVRLSnVBRCtyb29lbEFWZjlpZmg4NUVjV1hiQjZndkFnZ2dnQUFDQ1BSQWdJRGVBM1EyaVFBQ0NHUmN3SHJMcTdWYTdheDZ6LytySCtHdXJ2U01sNW5pSVlBQUFnZ2dnQUFDdVJjZ29PZStDYWtBQWdnZzBCRUJQNlE5YnJqL29teCtTaUc5cXEwUTBqdEN6VW9SUUFBQkJCQkFBSUZFZ0lET25vQUFBZ2dnc0pTQTcwVS9QajQrR3JyZ0w4TEl2MTNNTHZWRTdrTUFBUVFRUUFBQkJCQm9qd0FCdlQyT3JBVUJCQkFvb2tEU1l4NDFQdXJpdUtFSzl1bUxYdlFpdGpSMVFnQUJCQkJBQUlGTUNCRFFNOUVNRkFJQkJCRElwSUQxb2tjVG80K01CRUg0TjM2eU9PY3NxTE1nZ0FBQ0NDQ0FBQUlJZEVDQWdONEJWRmFKQUFJSUZFVEFlc3Y5KzRRdWpQNFIzM1VlaHJ4dkZLUnhxUVlDQ0NDQUFBSUlaRStBRDFyWmF4TktoQUFDQ0dSSndNNDdqeVpxdFFNYTNYNlRldEdqd0s2TnpvSUFBZ2dnZ0FBQ0NDRFFkZ0VDZXR0SldTRUNDQ0JRT0FIL1h1RkM5MEZmc3pDczZEdm5vaGV1bWFrUUFnZ2dnQUFDQ1BSYWdJRGU2eFpnK3dnZ2dFRDJCZXk4ODNCcWRQd21wZkxQcXhjOVZEem5YUFRzdHhzbFJBQUJCQkJBQUlHY0NSRFFjOVpnRkJjQkJCRG9nWUQxbGx1dmVlREMrRWEvL1RBNU45M2Y1aDhFRUVBQUFRUVFRQUNCdGdnUTBOdkN5RW9RUUFDQndndjRjOUd0RjEzbm9IK09jOUVMMzk1VUVBRUVFRUFBQVFSNklFQkE3d0U2bTBRQUFRUnlLdURmTTJJWHZOdFpuM29ZVnZVdjU2TG50REVwTmdJSUlJQUFBZ2hrVDRDQW5yMDJvVVFJSUlCQVZnV3NGNzB5VmE5L1daZGQrMHdZNlMyRTY2Sm50YTBvRndJSUlJQUFBZ2prVUlDQW5zTkdvOGdJSUlCQXJ3WGlLSHEzd3ZrNWV0RjczUkpzSHdFRUVFQUFBUVNLSkVCQUwxSnJVaGNFRUVDZzh3STJlM3QxYW5UMG0rbysvMFBmaXg0RVhCZTk4KzVzQVFFRUVFQUFBUVJLSUVCQUwwRWpVMFVFRUVDZ3pRS3hyYTl5ZnZiOUxvNGYwOG5vZmZyUjM5Zm03YkE2QkJCQUFBRUVFRUNnVkFJRTlGSTFONVZGQUFFRTJpSmdZYng2OU9oUkMrZnZDU09ka2U0Y0FiMHR0S3dFQVFRUVFBQUJCTW9zUUVBdmMrdFRkd1FRUUdEMUFqYlVQWmlzMVQ2aWJINnZocnBYTlorN3YyLzFxK1NWQ0NDQUFBSUlJSUJBdVFVSTZPVnVmMnFQQUFJSXJGYkFMcS9tTDdQbWd1Z2QvbHByWWFDdWRDNjd0bHBRWG9jQUFnZ2dnQUFDQ0JEUTJRY1FRQUFCQkZZcmtGeDJiV3pzL3crZHYreWF2YWN3WWR4cU5Ya2RBZ2dnZ0FBQ0NKUmVnSUJlK2wwQUFBUVFRR0JOQXI3enZCSEhiM2ZPbmRDYW1EQnVUWnk4R0FFRUVFQUFBUVRLTEVCQUwzUHJVM2NFRUVCZzdRSnhzRzlmMy9IeDhkRXdjUC9CWDNhTkNlUFdyc29hRUVBQUFRUVFRS0NVQWdUMFVqWTdsVVlBQVFUYUtEQXk0b2UxVDR6VlA2VExydDJWVEJqbkdPcmVSbUpXaFFBQ0NDQ0FBQUxsRUNDZ2w2T2RxU1VDQ0NEUVNZRjB3amhkYlMzNHR4cnFycXV2aFg0Q3VVNXVsSFVqZ0FBQ0NDQ0FBQUpGRXlDZ0Y2MUZxUThDQ0NEUUd3SHJNYTlPMWV0M2hXRjRveC9xem9SeHZXa0p0b29BQWdnZ2dBQUN1UlVnb09lMjZTZzRBZ2dna0RtQjJFcTAzZ1gvVHFlaGYwdEJ2VThYWFdPb2UrYWFpUUloZ0FBQ0NDQ0FRRllGQ09oWmJSbktoUUFDQ09SUHdBSjZ0VmFyblExQzkwWmYvREN3OXhrLzAzditxa09KRVVBQUFRUVFRQUNCN2dvUTBMdnJ6ZFlRUUFDQm9ndjRvZTZUbytNM3U4RDlvWWE2Mi9zTXZlaEZiM1hxaHdBQ0NDQ0FBQUp0RVNDZ3Q0V1JsU0NBQUFJSXRBajRvZTdyR3U0dG10WDlRWWE2dDhod0V3RUVFRUFBQVFRUXVJZ0FBZjBpT0R5RUFBSUlJTEFxQVQvVWZYeDgvRXpvZ2pmNDhlMWhVTkdhR09xK0trNWVoQUFDQ0NDQUFBSmxFU0NnbDZXbHFTY0NDQ0RRWFFFLzFIMmlYci9OaGNFSE5kUTkxT1laNnQ3ZE5tQnJDQ0NBQUFJSUlKQXpBUUo2emhxTTRpS0FBQUk1RXZCRDNhZEdhKzhJWEh4dk10VGRFZEp6MUlBVUZRRUVFRUFBQVFTNkswQkE3NjQzVzBNQUFRVEtKT0NIdXF2Q3MySGtYdWVjYXdSaFdOWFBESFV2MDE1QVhSRkFBQUVFRUVCZzJRSUU5R1ZUOFVRRUVFQUFnVlVJekFiNzl2VWRPekorWHhnR2I5VlFkOFZ6QlhVV0JCQkFBQUVFRUVBQWdTY0lFTkNmUU1JZENDQ0FBQUp0RlJnWnNXSHQ0Y1JZL1hlRE9QNWNXS2xVMVlVKzA5WnRzRElFRUVBQUFRUVFRS0FBQWdUMEFqUWlWVUFBQVFReUxtQkQydjM3VFZqdGU2MUMrbU5oRVBicFBuclNNOTV3RkE4QkJCQkFBQUVFdWl0QVFPK3VOMXREQUFFRXlpclE4RVBkRHg5K1ZHZWd2MWJEM1cyeGZ6a2YzVlB3RHdJSUlJQUFBZ2dnME96UkFBSUJCQkJBQUlHT0M0eU0yTEQycWk2OTluZk9CZS9YK2VoMmtKaFozVHNPendZUVFBQUJCQkJBSUM4QzlLRG5wYVVvSndJSUlGQU1BVCtzZmJKV3U4SEY3blovNlRYT1J5OUd5MUlMQkJCQUFBRUVFRml6QUFGOXpZU3NBQUVFRUVCZ0JRSTJwTjB1dGFaTG84ZXYwYVhYSmpYU25mUFJWd0RJVXhGQUFBRUVFRUNndUFJRTlPSzJMVFZEQUFFRXNpcmdMNzAyTlQ0K3B1dWoveXJubzJlMW1TZ1hBZ2dnZ0FBQ0NIUmJnSURlYlhHMmh3QUNDQ0FRQkhZK3VxNlBQakU2L3JjdWNPLzI1Nk56ZlhUMkRBUVFRQUFCQkJBb3VRQUJ2ZVE3QU5WSEFBRUVlaWFRWEI4OW1CeXIvMllRTi81WDgvcm81M3RXSGphTUFBSUlJSUFBQWdqMFdJQ0EzdU1HWVBNSUlJQkFpUVhzZlBTSzFmK2NDMSt0YzlMSE5HbGN2MzVrWm5kRFlVRUFBUVFRUUFDQjBna1EwRXZYNUZRWUFRUVF5SlNBdno3NmRMMXVrOFg5Zk9DY2hYT2JSQzdPVkNrcERBSUlJSUFBQWdnZzBBVUJBbm9Ya05rRUFnZ2dnTUJGQkpybm8rdlNhMThKZy9BTk9oOWRVN3pyUHhZRUVFQUFBUVFRUUtCa0FnVDBralU0MVVVQUFRUXlLV0FoWFQzbkU3WGF4M1I5OU44TEsxRkZDZDN1WTBFQUFRUVFRQUFCQkVvalFFQXZUVk5UVVFRUVFDRHpBbjVZdTNyUy80M09SNzh0aWlLN1Bqb2hQZlBOUmdFUlFBQUJCQkJBb0YwQ0JQUjJTYkllQkJCQUFJRzFDbGhBOTVQR3pRVGh6emtYSDlha2NYMGE3TTZrY1d1VjVmVUlJSUFBQWdnZ2tBc0JBbm91bW9sQ0lvQUFBcVVSOEpQR25hclZwcUk0K0tlYU5PNWNFUHBKNHhxbEVhQ2lDQ0NBQUFJSUlGQmFBUUo2YVp1ZWlpT0FBQUlaRldoT0duZXNYci9mQmVFdnFCZmRDbXJ2VjB3Y2w5RW1vMWdJSUlBQUFnZ2cwQjRCQW5wN0hGa0xBZ2dnZ0VBN0JlWm5kdi92bWpUdVhaclpQVlE4cHhlOW5jYXNDd0VFRUVBQUFRUXlKMEJBejF5VFVDQUVFRUFBQVM4d01tTG5ua2VUOWZwN0ZOSS9xWm5kcStwQ1A0OE9BZ2dnZ0FBQ0NDQlFWQUVDZWxGYmxub2hnQUFDK1JlWUc5S3VtZDFmRzhUeDdaclp2Vi9WWW1iMy9MY3ROVUFBQVFRUVFBQ0JKUVFJNkV1Z2NCY0NDQ0NBUUdZRTVtWjJiL1N2KzhlNi9OcTMvY3p1aFBUTU5CQUZRUUFCQkJCQUFJSDJDUkRRMjJmSm1oQkFBQUVFT2lQUUNQWUgxZU9IRHAwTVkvY3p6Z1duQXJ2OFdzQTU2WjNoWnEwSUlJQUFBZ2dnMENzQkFucXY1Tmt1QWdnZ2dNRHlCUTdvV3VqNzl2Vk5qSTgvcERuZGYwYVhYMHQ3MXBrNGJ2bUtQQk1CQkJCQUFBRUVNaTVBUU05NEExRThCQkJBQUlHbVFITm05NGxhN2ZZd2pGN041ZGZZTXhCQUFBRUVFRUNnYUFJRTlLSzFLUFZCQUFFRWlpeGdJVDBJcWhOalk1OVJKL3JibXBkZnM5NzB1UW5saWx4OTZvWUFBZ2dnZ0FBQ3hSWWdvQmU3ZmFrZEFnZ2dVRVFCRzlaZW1heU4vM2JnNHQvVjVkY3ErdGt1eWNhQ0FBSUlJSUFBQWdqa1dvQ0FudXZtby9BSUlJQkFLUVdzdDl4NnpjT0pzZnB2NkJycG4xWlBlaC9YU0MvbHZrQ2xFVUFBQVFRUUtKUUFBYjFRelVsbEVFQUFnZElJV0VqMzcyRzZSdm92NnZKcnQ5bzEwZ25wcFdsL0tvb0FBZ2dnZ0VBaEJRam9oV3hXS29VQUFnaVVRc0FQZGJlYURsVDdmdG81TnhLRlliOSt0UFBVV1JCQUFBRUVFRUFBZ2R3SkVOQnoxMlFVR0FFRUVFQ2dSY0JDZXZYdzRjT1ByMnZFLzBEWFNQK09abmUzYTZRVDBsdVF1SWtBQWdnZ2dBQUMrUkFnb09lam5TZ2xBZ2dnZ01DRkJXeUN1T3I0K1BqRWJLWHlDdldrSHdzc3BEdkh4SEVYTnVNUkJCQkFBQUVFRU1pZ0FBRTlnNDFDa1JCQUFBRUVWaXd3Ryt6YjEzZnl5Skh2UlM1NHVjTDVtU0NNcXJyNEdpRjl4WlM4QUFFRUVFQUFBUVI2SlVCQTc1VTgyMFVBQVFRUWFLK0FYU05kSWYxWXZYNS9ITHVYNjlMb3MwRVlWTFVSR3diUGdnQUNDQ0NBQUFJSVpGNkFnSjc1SnFLQUNDQ0FBQUxMRnJDUXZuZHYvL0h4OFMrNk1QcHB2YzVtZTdmcnBCUFNsNDNJRXhGQUFBRUVFRUNnVndJRTlGN0pzMTBFRUVBQWdjNElIRHg0M25yU3A4YkdQdStpNEZVNkg5MjJZeUhkcnAzT2dnQUNDQ0NBQUFJSVpGYUFnSjdacHFGZ0NDQ0FBQUtyRm1nT2Q1OGFyWDlXbmVpL3FwbmRiVlgybmtkSVh6VXFMMFFBQVFRUVFBQ0JUZ3NRMERzdHpQb1JRQUFCQkhvallDRmRzN3RQanRVL3BjdXZ2YkVaMHEwc2hQVGV0QWhiUlFBQkJCQkFBSUVuRVNDZ1B3a1FEeU9BQUFJSTVGckFYeWQ5c2xiN1NCeTRONGRSbEw3dkVkSnozYXdVSGdFRUVFQUFnV0lLcEI5VWlsazdhb1VBQWdnZ1VIWUJteVRPUW5wbGFxeitPN0dMLzEwenBOdjk5c1dDQUFJSUlJQUFBZ2hrUm9DQW5wbW1vQ0FJSUlBQUFoMFNzQ0J1UGVZVzBuOHJqaHYvWGlFOW5UU09rTjRoZEZhTEFBSUlJSUFBQWlzWElLQ3YzSXhYSUlBQUFnamtUeUFONmRGVWJmdy9LS1QvUHo2a08yZTk2NFQwL0xVbkpVWUFBUVFRUUtDUUFnVDBRallybFVJQUFRUVFXRUxBZ3JoOVZSVFMvOS9BdVJ2RFNxV3FlNngzblpDK0JCaDNJWUFBQWdnZ2dFQjNCUWpvM2ZWbWF3Z2dnQUFDdlJXd0lHNkJQSndZcTcwbENla2E3azVQZW05YmhhMGpnQUFDQ0NDQWdCY2dvTE1qSUlBQUFnaVVUY0JDdWwwWXZSblM0OTlKZXRJZFBlbGwyeE9vTHdJSUlJQUFBaGtUSUtCbnJFRW9EZ0lJSUlCQVZ3UjhMN3EycEpCZWYzTnp1THQ2MGhudTNoVjlOb0lBQWdnZ2dBQUNTd29RMEpkazRVNEVFRUFBZ1JJSXRJVDAybHRjN040ZlZ2enM3dGJEempucEpkZ0JxQ0lDQ0NDQUFBSlpFeUNnWjYxRktBOENDQ0NBUURjRjVrTDZaSzEyUTh0MTB1MSsrMkpCQUFFRUVFQUFBUVM2SmtCQTd4bzFHMElBQVFRUXlLaEFHc1FYWHlmZGlwcytsdEdpVXl3RUVFQUFBUVFRS0pJQUFiMUlyVWxkRUVBQUFRUldLNURPN3U2dmsrNWMvSnVoTHBUZVhCa2hmYldxdkE0QkJCQkFBQUVFVmlTUWZ2aFkwWXQ0TWdJSUlJQUFBZ1VVU004OXIweU8xZDhkTy9lbVVDbGQ5YlF2UW5vQkc1d3FJWUFBQWdnZ2tEVUJBbnJXV29UeUlJQUFBZ2owVWlEdFNhOU0xV29mZGk3NDF3cnBWaDU3djJ6MHNtQnNHd0VFRUVBQUFRU0tMMEJBTDM0YlUwTUVFRUFBZ1pVSnBDRzlxb25qZmw4aC9UVkJFdElyV2cwaGZXV1dQQnNCQkJCQUFBRUVWaUJBUUY4QkZrOUZBQUVFRUNpTmdJVjBDK01XMHYvVWhlN25kZHVHdWR1MTBtZjFuUVVCQkJCQUFBRUVFR2k3QUFHOTdhU3NFQUVFRUVDZ0lBSVcwbWVEdlh2N3AwYnIvODJGMFUvNW44T3dHamhIU0M5SUkxTU5CQkJBQUFFRXNpUkFRTTlTYTFBV0JCQkFBSUhzQ1J3OGVEN1l0Njl2YW16czh5NTIxd1NCT3h0RVVWVUZuY2xlWVNrUkFnZ2dnQUFDQ09SWmdJQ2U1OWFqN0FnZ2dBQUMzUkVZR1pueFBlbmo0MStLWFBCQzU5eWtKby9yMDhZSjZkMXBBYmFDQUFJSUlJQkFLUVFJNktWb1ppcUpBQUlJSUxCbWdXWlArckY2L2Y1cUdQMkUxbmZJUXJyR3daOWY4N3BaQVFJSUlJQUFBZ2dnSUFFQ09yc0JBZ2dnZ0FBQ3l4Vm85cVEvTmpiMjNVci96QXQwTHZyOVVSVDFFOUtYQzhqekVFQUFBUVFRUU9CaUFnVDBpK253R0FJSUlJQUFBb3NGbWozcFI3OTc5TEgrMkwwb2JzUjNXa2pYMHhqdXZ0aUtueEZBQUFFRUVFQmdSUUlFOUJWeDhXUUVFRUFBQVFRa1lEM3Btamh1Zkh6OHpGUzlmbzFyeFA4ampLSys1dXp1TnZzN0N3SUlJSUFBQWdnZ3NHSUJBdnFLeVhnQkFnZ2dnQUFDRXJDUWJ0ZEYxL1hSSit2MWZ4eTc0RCtHbFlyTjdtN1hTN2N2RmdRUVFBQUJCQkJBWUVVQ0JQUVZjZkZrQkJCQUFBRUVGZ2cwOUpPRjlFQ1hZWHU5Yy9HNzFaTnVQNGY2SXFRYkRBc0NDQ0NBQUFJSUxGdUFnTDVzS3A2SUFBSUlJSURBa2dJVzB1MzlOSm9jcS85bUhMczNhWFozQytoUjRJTFpKVi9CblFnZ2dBQUNDQ0NBd0JJQ0JQUWxVTGdMQVFRUVFBQ0JGUXBZYjdtZGUxNlpxdFUrck9IdVA2ZmJqU0FLcTgzejBsZTRPcDZPQUFJSUlJQUFBbVVVSUtDWHNkV3BNd0lJSUlCQUp3UXNvRGRzOGppRjlMK01JM2VOSXZ0SkRYbXZjaG0yVG5DelRnUVFRQUFCQklvblFFQXZYcHRTSXdRUVFBQ0JYZ28wcjVWK2ZIVDhpNkZ6UCs1YzhGMHV3OWJMQm1IYkNDQ0FBQUlJNUVlQWdKNmZ0cUtrQ0NDQUFBSjVFV2hlSzMyaVh2OTJvMXA5bm92akwvbkxzQ1hYU3VjeWJIbHBSOHFKQUFJSUlJQkFsd1VJNkYwR1ozTUlJSUFBQWlVUmFGNHIvY1Rod3ljbWEvV3JBeGQvdGhuU3VReGJTWFlCcW9rQUFnZ2dnTUJLQlFqb0t4WGorUWdnZ0FBQ0NDeFhJTGxXdXI4MitzUlkvWlV1ZGg5b1hvYk4zbjl0OW5jV0JCQkFBQUVFRUVCZ1RvQ0FQa2ZCRFFRUVFBQUJCRG9pWUpkYTg5ZEduNnpWM3E1cnBiOGg4RmRoMDMzT2NSbTJqcEN6VWdRUVFBQUJCUElwUUVEUFo3dFJhZ1FRUUFDQmZBbWt2ZVVWWFN2OWoxd1F2a0xGUDNPeEdkNTFLWFhPVmM5WEcxTmFCQkJBQUFFRTFpeEFRRjh6SVN0QUFBRUVFRUJnV1FMSlpkajI3dTJmR2h2N3ZJc2F6M2ZPZmNkbWVOY0RNNHZYb01lczE1MEZBUVFRUUFBQkJFb2tRRUF2VVdOVFZRUVFRQUNCREFnMFozaWZHbjMwbStHbWMvczB3L3N0Q3VsOXVtYTY5YkxQYVBqN3JCOEJId1hqR1NndFJVQUFBUVFRUUFDQkxncUVYZHdXbTBJQUFRUVFRQUNCVkdEZnZyNGdtVVF1MkRFOCtBZGhFTDdCSHRMUTlpQjI3cDY0Ny9UTGpoODZmdEx1MGhmRDNRMkhCUUVFRUVBQWdZSUxFTkFMM3NCVUR3RUVFRUFnMHdJMmpOMmZuNzU5ZVBnVm1qVHVlcjB4ajFWblpqNXg5T2pSMDNyTVJyclpaZGxZRUVBQUFRUVFRQUFCQkJCQUFBRUVFRUNnd3dJV3dwYzY1V3lwK3pwY0ZGYVBBQUlJSUlBQUFyMFVvQWU5bC9wc0d3RUVFRUFBZ1hrQnUxNTZ1bGl2T3NQYVV3MitJNEFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NDQ0FBQUlJSUlBQUFnZ2dnQUFDQ0NDQUFBSUlJSUFBQWdnZ2dBQUNDQ0NBQUFJSUlJQUFBZ2dnZ0FBQ0NMUlg0SDhEN2R1VFMvRDQrdjBBQUFBQVNVVk9SSzVDWUlJPSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzEiXSwiZXh0ZW5zaW9ucyI6WyJobWFjLXNlY3JldCIsImNyZWRQcm90ZWN0IiwiY3JlZEJsb2IiLCJtaW5QaW5MZW5ndGgiXSwiYWFndWlkIjoiM2Y1OTY3MmYyMGFhNGFmZWI2ZjQ3ZTVlOTE2YjZkOTgiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJlcCI6ZmFsc2UsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZX0sIm1heE1zZ1NpemUiOjEwMjQsInBpblV2QXV0aFByb3RvY29scyI6WzEsMl0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6MTAsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4LCJ0cmFuc3BvcnRzIjpbIm5mYyJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XSwiZm9yY2VQSU5DaGFuZ2UiOmZhbHNlLCJtaW5QSU5MZW5ndGgiOjQsIm1heENyZWRCbG9iTGVuZ3RoIjozMiwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjF9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMy0wOC0xNiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxMDAsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiQXJjdWx1cyBGSURPIDIuMSBLZXkgQ2FyZCBbUDcxXSIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjMwODE2MDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjMtMDgtMTYiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MTAwfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIzLTA5LTEyIn0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiMzNlMjVmNGFjMWE0MzFlYTliZGEzN2RiZGQzZmViZWIxZTBkODhhYyJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyIzM2UyNWY0YWMxYTQzMWVhOWJkYTM3ZGJkZDNmZWJlYjFlMGQ4OGFjIl0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJJREVNSUEgSUQtT05FIENhcmQifSwiZGVzY3JpcHRpb24iOiJJREVNSUEgSUQtT05FIENhcmQiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6ODIsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX0seyJtYWpvciI6MSwibWlub3IiOjJ9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNVekNDQWZtZ0F3SUJBZ0lKQUwxZi92dTJYV3VSTUFvR0NDcUdTTTQ5QkFNQ01JR0VNUXN3Q1FZRFZRUUdFd0pWVXpFUk1BOEdBMVVFQ0F3SVZtbHlaMmx1YVdFeER6QU5CZ05WQkFjTUJsSmxjM1J2YmpFUE1BMEdBMVVFQ2d3R1NVUkZUVWxCTVNJd0lBWURWUVFMREJsQmRYUm9aVzUwYVdOaGRHOXlJRUYwZEdWemRHRjBhVzl1TVJ3d0dnWURWUVFEREJOSlJFVk5TVUVnUmtsRVR5QlNiMjkwSUVOQk1DQVhEVEl6TURreE5EQTFNemd3TTFvWUR6SXdOVE13T1RBMk1EVXpPREF6V2pDQmhERUxNQWtHQTFVRUJoTUNWVk14RVRBUEJnTlZCQWdNQ0ZacGNtZHBibWxoTVE4d0RRWURWUVFIREFaU1pYTjBiMjR4RHpBTkJnTlZCQW9NQmtsRVJVMUpRVEVpTUNBR0ExVUVDd3daUVhWMGFHVnVkR2xqWVhSdmNpQkJkSFJsYzNSaGRHbHZiakVjTUJvR0ExVUVBd3dUU1VSRlRVbEJJRVpKUkU4Z1VtOXZkQ0JEUVRCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQkhiVCtScGtBbzlFY0wrT2VsQ2o4aGlobmZGVUtET3BOc3Nkckh3c2UrcXVGWVYwSEw5andRWE8zNTVta0k0ZGhwM1RzbmJNSjBBSjlqcjZvN0JvQ0VtalVEQk9NQjBHQTFVZERnUVdCQlFuczZhaHhzLy9ncGJhN1hEWkJOc2dERzBsRURBZkJnTlZIU01FR0RBV2dCUW5zNmFoeHMvL2dwYmE3WERaQk5zZ0RHMGxFREFNQmdOVkhSTUVCVEFEQVFIL01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lRRGJWTVFxV3puemIwZUVZV1FhUUluMGRsWURvV1FBYlVJNDZiOWpzQzF1RmdJZ2QreEUwcnVmVy83bmpLYzFxa3NpM1VoTW9qY0ZaQyszY0xUUmhXZ0t4alU9Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWdDQUlBQUFEOEdPMmpBQUFBQ1hCSVdYTUFBQzRqQUFBdUl3RjRwVDkyQUFBS1QybERRMUJRYUc5MGIzTm9iM0FnU1VORElIQnliMlpwYkdVQUFIamFuVk5uVkZQcEZqMzMzdlJDUzRpQWxFdHZVaFVJSUZKQ2k0QVVrU1lxSVFrUVNvZ2hvZGtWVWNFUlJVVUVHOGlnaUFPT2pvQ01GVkVzRElvSzJBZmtJYUtPZzZPSWlzcjc0WHVqYTlhODkrYk4vclhYUHVlczg1Mnp6d2ZBQ0F5V1NETlJOWUFNcVVJZUVlQ0R4OFRHNGVRdVFJRUtKSEFBRUFpelpDRnovU01CQVBoK1BEd3JJc0FIdmdBQmVOTUxDQURBVFp2QU1CeUgvdy9xUXBsY0FZQ0VBY0Iwa1RoTENJQVVBRUI2amtLbUFFQkdBWUNkbUNaVEFLQUVBR0RMWTJMakFGQXRBR0FuZitiVEFJQ2QrSmw3QVFCYmxDRVZBYUNSQUNBVFpZaEVBR2c3QUt6UFZvcEZBRmd3QUJSbVM4UTVBTmd0QURCSlYyWklBTEMzQU1ET0VBdXlBQWdNQURCUmlJVXBBQVI3QUdESUl5TjRBSVNaQUJSRzhsYzg4U3V1RU9jcUFBQjRtYkk4dVNRNVJZRmJDQzF4QjFkWExoNG96a2tYS3hRMllRSmhta0F1d25tWkdUS0JOQS9nODh3QUFLQ1JGUkhnZy9QOWVNNE9yczdPTm82MkRsOHQ2cjhHL3lKaVl1UCs1YytyY0VBQUFPRjBmdEgrTEMrekdvQTdCb0J0L3FJbDdnUm9YZ3VnZGZlTFpySVBRTFVBb09uYVYvTncrSDQ4UEVXaGtMbloyZVhrNU5oS3hFSmJZY3BYZmY1bndsL0FWLzFzK1g0OC9QZjE0TDdpSklFeVhZRkhCUGpnd3N6MFRLVWN6NUlKaEdMYzVvOUgvTGNMLy93ZDB5TEVTV0s1V0NvVTQxRVNjWTVFbW96ek1xVWlpVUtTS2NVbDB2OWs0dDhzK3dNKzN6VUFzR28rQVh1UkxhaGRZd1AyU3ljUVdIVEE0dmNBQVBLN2I4SFVLQWdEZ0dpRDRjOTMvKzgvL1VlZ0pRQ0Faa21TY1FBQVhrUWtMbFRLc3ovSENBQUFSS0NCS3JCQkcvVEJHQ3pBQmh6QkJkekJDL3hnTm9SQ0pNVENRaEJDQ21TQUhISmdLYXlDUWlpR3piQWRLbUF2MUVBZE5NQlJhSWFUY0E0dXdsVzREajF3RC9waENKN0JLTHlCQ1FSQnlBZ1RZU0hhaUFGaWlsZ2pqZ2dYbVlYNEljRklCQktMSkNESmlCUlJJa3VSTlVneFVvcFVJRlZJSGZJOWNnSTVoMXhHdXBFN3lBQXlndnlHdkVjeGxJR3lVVDNVRExWRHVhZzNHb1JHb2d2UVpIUXhtbzhXb0p2UWNyUWFQWXcyb2VmUXEyZ1AybzgrUThjd3dPZ1lCelBFYkRBdXhzTkNzVGdzQ1pOank3RWlyQXlyeGhxd1Zxd0R1NG4xWTgreGR3UVNnVVhBQ1RZRWQwSWdZUjVCU0ZoTVdFN1lTS2dnSENRMEVkb0pOd2tEaEZIQ0p5S1RxRXUwSnJvUitjUVlZakl4aDFoSUxDUFdFbzhUTHhCN2lFUEVOeVFTaVVNeUo3bVFBa214cEZUU0V0SkcwbTVTSStrc3FaczBTQm9qazhuYVpHdXlCem1VTENBcnlJWGtuZVRENURQa0crUWg4bHNLbldKQWNhVDRVK0lvVXNwcVNobmxFT1UwNVFabG1ESkJWYU9hVXQyb29WUVJOWTlhUXEyaHRsS3ZVWWVvRXpSMW1qbk5neFpKUzZXdG9wWFRHbWdYYVBkcHIraDB1aEhkbFI1T2w5Qlgwc3ZwUitpWDZBUDBkd3dOaGhXRHg0aG5LQm1iR0FjWVp4bDNHSytZVEtZWjA0c1p4MVF3TnpIcm1PZVpENWx2VlZncXRpcDhGWkhLQ3BWS2xTYVZHeW92VkttcXBxcmVxZ3RWODFYTFZJK3BYbE45cmtaVk0xUGpxUW5VbHF0VnFwMVE2MU1iVTJlcE82aUhxbWVvYjFRL3BINVovWWtHV2NOTXcwOURwRkdnc1YvanZNWWdDMk1aczNnc0lXc05xNFoxZ1RYRUpySE4yWHgyS3J1WS9SMjdpejJxcWFFNVF6TktNMWV6VXZPVVpqOEg0NWh4K0p4MFRnbm5LS2VYODM2SzNoVHZLZUlwRzZZMFRMa3haVnhycXBhWGxsaXJTS3RScTBmcnZUYXU3YWVkcHIxRnUxbjdnUTVCeDBvblhDZEhaNC9PQlozblU5bFQzYWNLcHhaTlBUcjFyaTZxYTZVYm9idEVkNzl1cCs2WW5yNWVnSjVNYjZmZWViM24raHg5TC8xVS9XMzZwL1ZIREZnR3N3d2tCdHNNemhnOHhUVnhiendkTDhmYjhWRkRYY05BUTZWaGxXR1g0WVNSdWRFOG85VkdqVVlQakduR1hPTWs0MjNHYmNhakpnWW1JU1pMVGVwTjdwcFNUYm1tS2FZN1REdE14ODNNemFMTjFwazFtejB4MXpMbm0rZWIxNXZmdDJCYWVGb3N0cWkydUdWSnN1UmFwbG51dHJ4dWhWbzVXYVZZVlZwZHMwYXRuYTBsMXJ1dHU2Y1JwN2xPazA2cm50Wm53N0R4dHNtMnFiY1pzT1hZQnR1dXRtMjJmV0ZuWWhkbnQ4V3V3KzZUdlpOOXVuMk4vVDBIRFlmWkRxc2RXaDErYzdSeUZEcFdPdDZhenB6dVAzM0Y5SmJwTDJkWXp4RFAyRFBqdGhQTEtjUnBuVk9iMDBkbkYyZTVjNFB6aUl1SlM0TExMcGMrTHBzYnh0M0l2ZVJLZFBWeFhlRjYwdldkbTdPYnd1Mm8yNi91TnU1cDdvZmNuOHcwbnltZVdUTnowTVBJUStCUjVkRS9DNStWTUd2ZnJINVBRMCtCWjdYbkl5OWpMNUZYcmRld3Q2VjNxdmRoN3hjKzlqNXluK00rNHp3MzNqTGVXVi9NTjhDM3lMZkxUOE52bmwrRjMwTi9JLzlrLzNyLzBRQ25nQ1VCWndPSmdVR0JXd0w3K0hwOEliK09QenJiWmZheTJlMUJqS0M1UVJWQmo0S3RndVhCclNGb3lPeVFyU0gzNTVqT2tjNXBEb1ZRZnVqVzBBZGg1bUdMdzM0TUo0V0hoVmVHUDQ1d2lGZ2EwVEdYTlhmUjNFTnozMFQ2UkpaRTNwdG5NVTg1cnkxS05TbytxaTVxUE5vM3VqUzZQOFl1WmxuTTFWaWRXRWxzU3h3NUxpcXVObTVzdnQvODdmT0g0cDNpQytON0Y1Z3Z5RjF3ZWFIT3d2U0ZweGFwTGhJc09wWkFUSWhPT0pUd1FSQXFxQmFNSmZJVGR5V09Dbm5DSGNKbklpL1JOdEdJMkVOY0toNU84a2dxVFhxUzdKRzhOWGtreFRPbExPVzVoQ2Vwa0x4TURVemRtenFlRnBwMklHMHlQVHE5TVlPU2taQnhRcW9oVFpPMlorcG41bVoyeTZ4bGhiTCt4VzZMdHk4ZWxRZkphN09RckFWWkxRcTJRcWJvVkZvbzF5b0hzbWRsVjJhL3pZbktPWmFybml2TjdjeXp5dHVRTjV6dm4vL3RFc0lTNFpLMnBZWkxWeTBkV09hOXJHbzVzanh4ZWRzSzR4VUZLNFpXQnF3OHVJcTJLbTNWVDZ2dFY1ZXVmcjBtZWsxcmdWN0J5b0xCdFFGcjZ3dFZDdVdGZmV2YzErMWRUMWd2V2QrMVlmcUduUnMrRlltS3JoVGJGNWNWZjlnbzNIamxHNGR2eXIrWjNKUzBxYXZFdVdUUFp0Sm02ZWJlTFo1YkRwYXFsK2FYRG00TjJkcTBEZDlXdE8zMTlrWGJMNWZOS051N2c3WkR1YU8vUExpOFphZkp6czA3UDFTa1ZQUlUrbFEyN3RMZHRXSFgrRzdSN2h0N3ZQWTA3TlhiVzd6My9UN0p2dHRWQVZWTjFXYlZaZnRKKzdQM1A2NkpxdW40bHZ0dFhhMU9iWEh0eHdQU0EvMEhJdzYyMTduVTFSM1NQVlJTajlZcjYwY094eCsrL3AzdmR5ME5OZzFWalp6RzRpTndSSG5rNmZjSjMvY2VEVHJhZG94N3JPRUgweDkySFdjZEwycENtdkthUnB0VG12dGJZbHU2VDh3KzBkYnEzbnI4UjlzZkQ1dzBQRmw1U3ZOVXlXbmE2WUxUazJmeXo0eWRsWjE5Zmk3NTNHRGJvclo3NTJQTzMyb1BiKys2RUhUaDBrWC9pK2M3dkR2T1hQSzRkUEt5MitVVFY3aFhtcTg2WDIzcWRPbzgvcFBUVDhlN25MdWFycmxjYTdudWVyMjFlMmIzNlJ1ZU44N2Q5TDE1OFJiLzF0V2VPVDNkdmZONmIvZkY5L1hmRnQxK2NpZjl6c3U3MlhjbjdxMjhUN3hmOUVEdFFkbEQzWWZWUDF2KzNOanYzSDlxd0hlZzg5SGNSL2NHaFlQUC9wSDFqdzlEQlkrWmo4dUdEWWJybmpnK09UbmlQM0w5NmZ5blE4OWt6eWFlRi82aS9zdXVGeFl2ZnZqVjY5Zk8wWmpSb1pmeWw1Ty9iWHlsL2VyQTZ4bXYyOGJDeGg2K3lYZ3pNVjcwVnZ2dHdYZmNkeDN2bzk4UFQrUjhJSDhvLzJqNXNmVlQwS2Y3a3htVGsvOEVBNWp6L0dNekxkc0FBQUFnWTBoU1RRQUFlaVVBQUlDREFBRDUvd0FBZ09rQUFIVXdBQURxWUFBQU9wZ0FBQmR2a2wvRlJnQUFBdGhKUkVGVWVOcnNsdDlMazFFWXg3L3ZOdGUwdlhPazd5UzdxeVdCWXZuaklrdEdVMHZEQ3drdFY0S1hwdjN3Qi80QkJpSWEvUUMxd2prVlV4TnNVdXV1emQxazZpQkxDeElGemNEWE9UWndZOHIyc3IxcnA0dVhadW9nZ3J5SmZTOGVlTDZjNTN3NDUrRTVISW9RZ29PVUNBZXNHQ0FHaUFFQXlYNkxaZG4xOVhXR1lkUnE5VDhna04xcWEyMFZEbFZaY1pVUVlwdVpLUzB0SFRjYTl5d3o2SHVycTZzL3pzNlNQMmtYd0dJMkF6aktxSFE2M2Z0M2s0U1Fwb1lHQU1XRlJYdktMbW9MQUF3T0RQd2RvTGRIRDJCa2FPaDM4NDNKNUhLNTlwVFYxZHdFOEdwOGZQK09TNHRMNXJmbUg2R1FrTzcwb0x1emMyand1U29wMmRCck9DeW5rNUtPOVBYM1oyWmtNQ2twcXl2ZkdJWUJjTCs5dzJxZEtDb3FDZ1FDQUhpZUYyb2ZQM3hrTXIxVzBJcmF1bHB0UVlIUDd3TkY3ZTJCTmw4RElPMzRDUUFOZCt1N3U3b0FTRUFCcUt1cEpZUlU2YTREb0dYeHFhb1VwWndXQTlhSkNVSkk0UVV0Z0ZQcWt3blNRd0Q2OVByb1Z4UU1CdHZiMmlpS2V0RFJ3Zk44S0JUaU9PN1prNmNBK25vTkxNc0N5TW84emZuOUhNZmxuTWtDc0xTNE9EMDFEVUIzOVJvaHhPbDB5aE1TNGlpUjNXNlBiTHN6QjNGeGNiUkNRUWhSSkNaS0pCS3hXQ3lUeWVSeUdvQlVLdjB5L3htQVRsY3BpNCtYeVdRYWpRYUF6K2VibXB3RVVGNVJEa0NsVWhWcUMzZ1NucCtiaXo0SG5OOFB3Ty8zUjV4QWdNdk56azVta2tXVUNNRHE2bmZCZHpnMkJEQ3RVQUJ3T2wyL2ZJZEFpZzRJQm9PUktJam5lUVZOYjNtM2lpK1hpRUhwK3d6cEdlbHV0L3VsMFFnZ0VBaVVYU203ZGVmMnZaYVd0TFMwaFlXdkgrWSs1Wi9OeThuTmpmNVVTQ1NTU0l3NDRYRFk0ZGhRS3BYRHc4TmlpcXB2YkJ3ZGVWRjFvd29BdTdhV21uck0wS1BmM3Q2K1ZGTGMxTng4UHUvYzZOaVlTQ1NLUHNrZXQyZDVlZG5qOFVRY3I5ZHJYN2U3M1p0Q3lySnJWcXMxSEE0VFFwWlhWcnhlcitDN045MFdpOFZtcyswZkN5cjJxNGdCWW9EL0FQQnpBSTZWTnFHUVBVcW5BQUFBQUVsRlRrU3VRbUNDIn0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjMtMTAtMTkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6ODIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiSURFTUlBIElELU9ORSBDYXJkIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVMkYxMDAwMjAyMzEwMTkwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMy0xMC0xOSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjo4Mn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMy0xMi0wOCJ9LHsiYWFndWlkIjoiNDJiNGZiNGEtMjg2Ni00M2IyLTliZjctNmM2NjY5YzJlNWQzIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI0MmI0ZmI0YS0yODY2LTQzYjItOWJmNy02YzY2NjljMmU1ZDMiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiR29vZ2xlIFRpdGFuIFNlY3VyaXR5IEtleSB2MiJ9LCJkZXNjcmlwdGlvbiI6Ikdvb2dsZSBUaXRhbiBTZWN1cml0eSBLZXkgdjIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciLCJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjAsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjowLCJibG9ja1Nsb3dkb3duIjowfX1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDSWpDQ0FjaWdBd0lCQWdJQkFqQUtCZ2dxaGtqT1BRUURBakJrTVFzd0NRWURWUVFHRXdKVlV6RVBNQTBHQTFVRUNnd0dSMjl2WjJ4bE1TSXdJQVlEVlFRTERCbEJkWFJvWlc1MGFXTmhkRzl5SUVGMGRHVnpkR0YwYVc5dU1TQXdIZ1lEVlFRRERCZFVhWFJoYmlCVFpXTjFjbWwwZVNCTFpYa2dVbTl2ZERBZ0Z3MHlNVEV5TURFeE5USTJNekZhR0E4eU1USXhNVEl3TWpFMU1qWXpNVm93WnpFTE1Ba0dBMVVFQmhNQ1ZWTXhEekFOQmdOVkJBb01Ca2R2YjJkc1pURWlNQ0FHQTFVRUN3d1pRWFYwYUdWdWRHbGpZWFJ2Y2lCQmRIUmxjM1JoZEdsdmJqRWpNQ0VHQTFVRUF3d2FWR2wwWVc0Z1UyVmpkWEpwZEhrZ1MyVjVJRk5wWjI1cGJtY3dXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUkdTWC8wV21vU3RZZmhtbHpTUEI0U0FSaG1UQnBQaTBvM3lZeWdTNHNtbi80T0ZkR05KZHNQeGt1YjYycE9sV2UwSTZjSlNoOVczRUFIQTJaUE8rUytvMll3WkRBT0JnTlZIUThCQWY4RUJBTUNBUVl3RWdZRFZSMFRBUUgvQkFnd0JnRUIvd0lCQURBZEJnTlZIUTRFRmdRVVJUcVFZT3NQSjg5N1g0MHZhditYb1crUzZzZ3dId1lEVlIwakJCZ3dGb0FVMmQ2SnJGQ29FWkFlL0xVcElNeWJsdERzTWgwd0NnWUlLb1pJemowRUF3SURTQUF3UlFJZ1NyM04xNEhkdENmajdRWjBSN2tXZzZJMzE3UUVOYjhxK2ZiTmtvNm5LNG9DSVFENUpoMTRnckRjNkY3Z0hpYjlRVHY4c1VzNnc4Z0YxSllLTUsrTERPWVBZZz09IiwiTUlJQ01qQ0NBZG1nQXdJQkFnSUJBVEFLQmdncWhrak9QUVFEQWpCa01Rc3dDUVlEVlFRR0V3SlZVekVQTUEwR0ExVUVDZ3dHUjI5dloyeGxNU0l3SUFZRFZRUUxEQmxCZFhSb1pXNTBhV05oZEc5eUlFRjBkR1Z6ZEdGMGFXOXVNU0F3SGdZRFZRUUREQmRVYVhSaGJpQlRaV04xY21sMGVTQkxaWGtnVW05dmREQWdGdzB5TVRFeU1ERXhOVEl6TlRGYUdBOHlNVEl4TVRJd01qRTFNak0xTVZvd1pERUxNQWtHQTFVRUJoTUNWVk14RHpBTkJnTlZCQW9NQmtkdmIyZHNaVEVpTUNBR0ExVUVDd3daUVhWMGFHVnVkR2xqWVhSdmNpQkJkSFJsYzNSaGRHbHZiakVnTUI0R0ExVUVBd3dYVkdsMFlXNGdVMlZqZFhKcGRIa2dTMlY1SUZKdmIzUXdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUnFtTld6Y0ROSDYzbzhUem9kQjJqazliNDlWUHNmSXZYcGRoYVd4ZkxheW80TEJiRHJYeXhGM0pSMVA2VzZac3FXQ0VZclgwb1lJeEFvZzNoQ0U0eWRvM293ZURBT0JnTlZIUThCQWY4RUJBTUNBUVl3RHdZRFZSMFRBUUgvQkFVd0F3RUIvekFkQmdOVkhRNEVGZ1FVMmQ2SnJGQ29FWkFlL0xVcElNeWJsdERzTWgwd0h3WURWUjBqQkJnd0ZvQVUyZDZKckZDb0VaQWUvTFVwSU15Ymx0RHNNaDB3RlFZTEt3WUJCQUdDNVJ3Q0FRRUVCZ1FFQXdJQUFEQUtCZ2dxaGtqT1BRUURBZ05IQURCRUFpQU5JUTQ4L25NcDJLZllOaW92Y3l4V1hKTGl1bDRTdit6Y1JKZXpyZC9XV0FJZ1Z1Y1E1MzFmcXpZN09Eb0srZElEeWtSdWR2bFcveUJxemEvQWRTMFNxNlE9Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQURBQUFBQXdDQVlBQUFCWEF2bUhBQUFEMUVsRVFWUjRBZXlYVTVnY1RSU0c2Mkw5MjdiL2FKTHBudDI0MXpHbWQyUGJ4bDFzMjlZb3RtM2JkcVkzbk41b1Vha1RxNDNsZVo1djJYaS9xb01hbEJraU84NHhUTkQxcU5Bd2J5VGRrc2hCdE00YlpUdEZ2cDk3VGR1NFNIbzZVVnU0RnU1SmMzQUE0YUtvMFFUdU5oRldLSTVvUER6RGRIQUN6Y0NLQW9nK2doMnpGakljL0NZVCtpTjUyVElpYklRZ3hXNHpsazhOU2hlcTdQTnR4d2Jya3U1cDVZMmd1OFBEVGRRRExzcFdVaC80S0hxd3FmQ2dDUHFZbDZHL05YTGwwei84alNpSzFRaHorN1Vad0prS254QmovZGNiYWZNcEJFNTZQc1FxdnErVHdOK2VMNG9EcmpVTUhvS0xwRmNwaEorczVPWFhtTEJmeVFKNURJR0hkcWxrbWw2UHBpT1J5b0NqQjRFL3BCczhYb2Y4K0VIZm51Q0tXVk5rd0YrRFZOUDhUb2J4UTNwRjhxb0FObW0xUDM3by9BZ254T2NSZ2JmNXJzZFFPVkY2aTZUVkFjdkFBT2p4MGtCOHAvSGZRaVlxcGpkMlNKOHZDWGdTd0w4dXZ1Y1AyQnROdlE2L0RLWEhTRjRkVUJHQTM2Y0hrejdEQ1dVdEFJKzVhQnVWUGcyczhoOE9zRUo2TkQ4RVV1b29TcTlCSUxjQnFMajgyaUtGRWRHVHgzb3F2QWUvVEtpQXIwa1plTHpTbjBwakE2QnpRanVBcFVRSy9jTjBZQ0JKdFFFRWtmWUdjSlkxQUNrVWxKNE5jREtLMkpLZURleVNOTERhdjJFNk1IQkpZQkw3anhlRDUxY0ZKZmVlbDIrcENnT1Q1UXA2dk9RYzZNV3ZFakpRVXdqKzlJclBjQVZQREthY0xMYk9ZdjlGQmtWa1Q3NnQ1QTcwU2h3dWNKZ0wvdkY5OEN1Vy9JeUx1TW9DL0RNNTJPbkdHZkJ0a3pJUTJjTlhVZXc0c2VrRitNUFZBYmpmZ3J3QS9ZNW9SMXlrM3ZEaFBSTEx5cWtCcGgvL0xZSVFTNlByS3ovQ2RXY3pBQ3VrYTZFejdEL3FCYzkwOFg1STRJNUo1bi9QeEUxU253bUNOaTc5L2thc3V5UkFTdWtZN1k3WDViTnNSRS9mUERtclQxS3NLWklLeW1HdkM0QXlkWXB5bHMrcGFlVjc4SXRrdHMvYlRCY3NiNUFTc0YwS1REeWdYUGJPek9SYWlxWjBQaGNiR3pheDY1SHdQbDZaL1QreHMveUhPKzFoQkN3SkFPWEx6dEZPdGpmY0svaGNkL3lmbElOdFNxN2I5dUkrMi9UR21CbHdWUElJTGJENndnRXZnaGVvMUcyaWZVVHJRQUFNQm9XdXAyZFZ3WVdHTFJjcFhqNFdxUW1yazUwTUx6QkxCY2FPSklQcTdwc0dldmk2cTI5djZ4Zy95aFhuTWRPRWJXbzdITjczM0l1ODk1RFU4UU1XVFNaZytwcHBncDVWN1hIUndWdGZ3T3NUSkk5YlFzY3h4MFRjWUZnNHBIZVF3V1VoTHpoa0dEZ1V1b3Rsa1pFQksyTjFzVFZKZ1ovVEVmNEJlV1oveTd4eW55S3pBZ1lYN2JCWEpFVytUSHBtQ09xVTFSSFgwVHFyOHBjb0xRTU9kbUFHY2hkNi92UGRTWG9uUFdEQ1B4bXdRQURpYkhDL1loaUFVUUFBMFMwS1dTVkdBMDRBQUFBQVNVVk9SSzVDWUlJPSIsInN1cHBvcnRlZEV4dGVuc2lvbnMiOlt7ImlkIjoiY3JlZFByb3RlY3QiLCJmYWlsX2lmX3Vua25vd24iOmZhbHNlfSx7ImlkIjoiaG1hYy1zZWNyZXQiLCJmYWlsX2lmX3Vua25vd24iOmZhbHNlfV0sImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIkZJRE9fMl8wIiwiVTJGX1YyIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiI0MmI0ZmI0YTI4NjY0M2IyOWJmNzZjNjY2OWMyZTVkMyIsIm9wdGlvbnMiOnsicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2V9LCJtYXhNc2dTaXplIjoyMjAwLCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxXX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIzLTA2LTEyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiR29vZ2xlIFRpdGFuIFNlY3VyaXR5IEtleSB2MiIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjMwNjEyMDAyIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjMtMDYtMTIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MX1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMy0wOS0wMyJ9LHsiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbImYyODQwZTMxMWE5NWU1ZWZiMGRjMGNmNjliMjMxNmFkOWI5NTVhYTIiLCI3MTk4YjEwZDQxMzk2MmYyYzkxY2Y4MzZjOTU2OGJjYjcyNTdkZmJmIiwiYWJhNDcwNjIzY2Y4ODk0MjUzMDcyNDZiNTgyYjFjYTE5ZDIwODhjMyIsIjVlMjRmMGViMzQ5YTcwN2IzYWM0ZGU1MzZiOTA1ZTU5ZjViY2I4NDUiXSwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiZjI4NDBlMzExYTk1ZTVlZmIwZGMwY2Y2OWIyMzE2YWQ5Yjk1NWFhMiIsIjcxOThiMTBkNDEzOTYyZjJjOTFjZjgzNmM5NTY4YmNiNzI1N2RmYmYiLCJhYmE0NzA2MjNjZjg4OTQyNTMwNzI0NmI1ODJiMWNhMTlkMjA4OGMzIiwiNWUyNGYwZWIzNDlhNzA3YjNhYzRkZTUzNmI5MDVlNTlmNWJjYjg0NSJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiWXViaUtleSA1IEZJUFMgU2VyaWVzIn0sImRlc2NyaXB0aW9uIjoiWXViaUtleSA1IEZJUFMgU2VyaWVzIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyODcwNywicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCIsInJlbW90ZV9oYW5kbGUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlESGpDQ0FnYWdBd0lCQWdJRUcwQlQ5ekFOQmdrcWhraUc5dzBCQVFzRkFEQXVNU3d3S2dZRFZRUURFeU5aZFdKcFkyOGdWVEpHSUZKdmIzUWdRMEVnVTJWeWFXRnNJRFExTnpJd01EWXpNVEFnRncweE5EQTRNREV3TURBd01EQmFHQTh5TURVd01Ea3dOREF3TURBd01Gb3dMakVzTUNvR0ExVUVBeE1qV1hWaWFXTnZJRlV5UmlCU2IyOTBJRU5CSUZObGNtbGhiQ0EwTlRjeU1EQTJNekV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRQy9qd1l1aEJWbHFhaVlXRU1zcldGaXNnSitQdE05MWVTcnBJNFRLN1U1M213Q0lhd1NESHk4dlVtazVOMktBajlhYnZUOU5QNVNNUzFoUWkzdXN4b1lHb25YUWdmTzZaWHlVQTlhK0tBa3FkRm5Cbmx5dWdTZUNPZXA4RWRaRmZzYVJGdE1qa3d6NUdjejJQeTR2SVl2Q2RNSFB0d2F6MGJWdXpuZXVlSUV6NlRuUWpFNjNSZHQyemJ3bmVid1RHNVp5YmVXU3dienkrQkozNFpIY1VoUEFZODl5SlFYdUUwSXpNWkZjRUJiUE5SYldFQ1JLZ2pxLy9xVDlubURPRlZsU1JDdDJ3aXFQU3psdXduK3Yrc3VRRUJzVWpUR01FZDI1dEtYWFRrTlcyMXdJV2J4ZVN5VW9UWHdMdkdTNnhsd1FTZ05wazJxWFl3ZjhpWGc3VldaQWdNQkFBR2pRakJBTUIwR0ExVWREZ1FXQkJRZ0l2ejBiTkdKaGpncFRva3N5S3BQOXh2OW9EQVBCZ05WSFJNRUNEQUdBUUgvQWdFQU1BNEdBMVVkRHdFQi93UUVBd0lCQmpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQWp2anVPTURTYStKWEZDTHlCS3N5Y1h0QlZac0o0VWUzTGJhRXNQWTRNWU4vaElRNVpNNXA3RWpmY25NRzRDdFlrTnNmTkhjMEFoQkxkcTQ1cm5UODdxLzZPM3ZVRXROTWFmYmhVNmt0aFg3WSs5WEZOOU5wbVl4citla1ZZNXhPeGk4aDlKRElnb01QNFZCMXVTMGF1bkwxSUdxck5vb0w5bW1Gbkwya0xWVmVlNi9WUjZDNStLU1RDTUNXcHBNdUpJWklJMnY5bzRka29aOFk3UVJqUWxMZll6ZDNxR3RLYnc3eGFGMVVzRy81eFViL0J0d2IyWDJnNElucGlCL3l0LzNDcFFYcGlXWC9LNG1CdlVLaUduMDVac3FlWTFneDRnMHhMQnFjVTlwc215UHpLK1ZzZ3cyamVSUTVKbEtEeXFFMGhlYmZDMXR2RnUwQ0NySkZjdz09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWZDQVlBQUFDR1ZzK01BQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBSFlZQUFCMkdBVjJpRTRFQUFBYk5TVVJCVkZoSHBWZDdUTlYxRkQvM2Q1OXdlUVNJZ1M5QVFBWGNGTEFRWmk5ZnBlVnoxdFkvV1RacjVXeHBjN1c1a25MYTVqSTNaODVzclMybk0yc2p0V3daUzdJVUg0SDR4Q25FUXg0REFaRjc0Vjd1czg4NXY5L2xJbkJ2VkovQjRQdjludS81bnUvNW52TTU1NmZ6QS9RdjBIYi9JclgzVkZLUG80NWNubTRpblVJV1l3TEZSbVpRVXV3akZHL04xaVJIaDFFWjBOUlZSdWRxdDFCZCsyblNLeVMvT2h5czArbGszZS8za1E5cXZENFpVdGE0VlZTVXVZMGVpcHlpVGhBZm9jb09SVmdEdXV3M3FLUmlBZDNyYmNFdGpUallJb2Y2V2FIc0NtelZQV0NNeCtjZ2g4dExxV01LYU1Xc1VqTHFvMlJ0SklRMG9Pem1lcnBRdTRlc1pnc09Oa0d4SDdkMGtkdlRUMTdzNE9NVTdWSThaaGpnR2FNK0FxOWlFTnU4UGlmMXVkejA3TXd2S1dmOEdsVm9DRVkwNFBDNVdkVGFYWUZiUjh2TnZMNSszS2dmYjV4Tk15YTlSYW1KaXluYU1sR1RWdEZscjZiYTl1K3BxbkVYNHVNdVJSZ2pTWUVock43dXRGRmU2bHFhbDdOZmt3NWltQUdIeW5QcGJrOFZtWTB4c3RucHRsRkNWQ1l0elR1Qk44M1FwTUxqVHRldmRQelNVbko3ZThta2p4WjM5ZlhiS0RmbGRacWJ2VStUVWdHbkJWRjZmUTJpUEhnNFcxNlVXVXd2emJrMTZzTVpFK1BuMHB2ejdKU2V1QXllczhsY3BDbWFLdW8vcCtxV3IyVWN3SUFIV3J2UDBZRXpoWEF0TEFic3NIaHA3aUdhbXZ5aWpQOHJ5cXJYVVdYOVhvb3d4eUF1Zk5CcnA0M1BPQkZYWmxrZjhNRFJpcWNweW93QXdwdXoyeCtmV3Z6L0R0ZGU5c21zenlndGNSNkMxd2JkekJsNk9scTVXTllZNG9HYXRoSk1ya1RFeDBqQVJTSEFWcys1cllrUU5YYitRZ2ZQTHNRNmdYeUluc3JlUWZtcG03UlZGWWZMODZuMWZpVU9rWXZTaGtVUHh2YnVrem95NksxaWhNMWhvM1h6VzZFdlNmWEErZHBpV0dhV2QrZG9Yekx6bUd3S1lGTENBc1JBbFBCQWhNbENGWFU3dEJVVlByOEhnVmNKSFdxK0YwMHBscitETVRkclA0enZ4WTExa05NaHhUK1NlVEdnK2Q0VjVMUUppdHlVR0pOQjhWRlpzamdZQlpNL0lJL1hDVGtqMHF5RE9wRjJBVlExN0NJalVwL0RuVDFVa0w1RjVnZGorc1Mxd2cxZ0UzZ2lnbTYwZkNYelNuUFhieUFQYklYditJRHBFMTZUaGFISVM5c2t5aGxtTUU1RjNjZnFBS2hxMkMwRTVQSDFnWWFYYUxQRGtaRzBIREpPbktXSHA1MUkwejVTT3V4OGUxV0F1WnpkSFFyVGtwOFRtalhvSStsYTB3R1pzenVicWJPM2lmUTZBL1c3dlZTWXNWM21SMEpLd2tLYzRXSGlCa21SOEkzQ0NnSTg3b09MNHF6VDVQK1JVSkJlakVPZ0FQSzhoWVB6YXRNK2VJVHAySU85eVRRbWVyb21QUnh4MXF4QWNzaWxlL3ViU2VFYmNXUUdZRUNnaGNMWTJIeUtqb2dqSDI1aE1wanBVdjFPdWdsaTRlaDJlUncwTzMyYkpqa3l1Q2dOemcwdnpsWU1TaVNzMHVvbzRNRzdoTU9qQ0VhWDF5RkUwblN2akJ6dVRuRXBLODZaOElvcUZBSXVidzhrZzlBckVhUkVXU1pJK2pINFhicDZnOUU5RW5KVDNvYVJ6RE4rTVVKQlFESG41NmE4b1VtRUJ1c094QnMvTjUrdEpFYlBrQUZEajhVR3ZPcy9JV3ZjU2dsR0JodlM3L0ZUWWZwV0dZZERZOGZQQXhXU0EzNXNUQzRwNCtMbTRBYXFJb1BlUXRmdWZLNkpoMFpoeGxic1VYT1NtWE5pZkQ1WlRBa3lEb2ZiYmNjbHhuQThXTkFxeENiUk55a2hYeFFwYUR3NjdmWFVZYnNpRzBLaHR2Mm9lSXZoOHJoUU1ZT2NFQXFYRy9lSSt6bmdPYzV5eHI4cTgySUFNMWMvRkxGT3BscXU1ZUZRWHJNWnpHY1ZDalliTFdHNUk0QlQxZXVScmxieHROT3RNaXREREVoTFhJSXluQUF2dU9FV0UzWDNOZEFmdDk0VmdhRzQyWElRdDBaWDZQZUNFL3FRRmU5cks2SHg3WVU1MEt2SDdmVzRmUytxN0tLQkp4c2dnQlg1cFNBR2gxaklyVmg1elE2dzNSZmFhaEJYbS9hQ2JDWlRqQ1VGVVR5V1pxVzlwNjJNakpQWFZxT3JQZ01PNE52NzRHa2Yrb3dmdE5WQkRRbmpGSnFIU3cxN3BYdmhXVzVLWnFlL1E0OU4vVVNUQ0FWV29RWEZJSEJIWFhlM0ZQclVEc3VHRG10Ri9oSEtUSHBla3hoaUFPUEkrU0pxNlM2SEY0STlZV3prQkpUbzQ2aVVNeldwOFBpci9SaWR1THhLWXNTa3NWOHZMbE9RdmhHWDJZbFIwT0JoQmpDK3UvZ0VjdlkwQXBLN1lrNDFOeGpQU1FuV0ZIVEY2NlVyamdldkI4Q3U1YStsMnZZU1JQdHVWRG83M2hoZE1TSG5VWDd0VGpzVlpHeEFsL1dwdGlPSUVRMWduTDI5bVg2L3RSMXRtbGtZajhXNFgrQ1NqV2NVREdZMU5wUy9DN2hTS3FpTUxNL2wyUW1TV1o3M0RkeitnaW84QkNFTllQUTQ2cW5rendYVWJxdkJreGpVUXNXZlpGZ2J1bzNyQWYrd043ak9POTAreW54NFBpM0wrMG5ZTDFTY2hEVWdBUDRnUFYvN0lkMXErMUhTaG11R2tJcVdSUGd5eE1GcVA4SGZqVG5qWHdZNWJRZmJKY3Q2T0l6S2dNSG90Ri9IZTFlZ3NheEhTcUc2d2ZkbVE1eDhOeVRGRnFCY3AyaVNvd0hSM3lrNSszNmhGN3ZYQUFBQUFFbEZUa1N1UW1DQyJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMy0wMi0wOCJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjMtMDItMDgifSx7ImFhZ3VpZCI6IjM2MWEzMDgyLTAyNzgtNDU4My1hMTZmLTcyYTUyN2Y5NzNlNCIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiMzYxYTMwODItMDI3OC00NTgzLWExNmYtNzJhNTI3Zjk3M2U0IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6ImVXQk0gZUZBNTAwIEZJRE8yIEF1dGhlbnRpY2F0b3IifSwiZGVzY3JpcHRpb24iOiJlV0JNIGVGQTUwMCBGSURPMiBBdXRoZW50aWNhdG9yIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X2RlciJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoyNTYsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDcFRDQ0FrcWdBd0lCQWdJQkFUQUtCZ2dxaGtqT1BRUURBakNCcnpFTE1Ba0dBMVVFQmhNQ1MxSXhFVEFQQmdOVkJBZ01DRk5sYjNWc0xWTnBNUk13RVFZRFZRUUhEQXBIWVc1bmJtRnRMVWQxTVJjd0ZRWURWUVFLREE1bFYwSk5JRU52TGl3Z1RIUmtMakVpTUNBR0ExVUVDd3daUVhWMGFHVnVkR2xqWVhSdmNpQkJkSFJsYzNSaGRHbHZiakVjTUJvR0ExVUVBd3dUWlZkQ1RTQkRRU0JEWlhKMGFXWnBZMkYwWlRFZE1Cc0dDU3FHU0liM0RRRUpBUllPYVc1bWIwQmxMWGRpYlM1amIyMHdIaGNOTVRnd056QXlNRFV6TVRNNVdoY05Nak13TnpBeE1EVXpNVE01V2pDQnJ6RUxNQWtHQTFVRUJoTUNTMUl4RVRBUEJnTlZCQWdNQ0ZObGIzVnNMVk5wTVJNd0VRWURWUVFIREFwSFlXNW5ibUZ0TFVkMU1SY3dGUVlEVlFRS0RBNWxWMEpOSUVOdkxpd2dUSFJrTGpFaU1DQUdBMVVFQ3d3WlFYVjBhR1Z1ZEdsallYUnZjaUJCZEhSbGMzUmhkR2x2YmpFY01Cb0dBMVVFQXd3VFpWZENUU0JEUVNCRFpYSjBhV1pwWTJGMFpURWRNQnNHQ1NxR1NJYjNEUUVKQVJZT2FXNW1iMEJsTFhkaWJTNWpiMjB3V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVFJZnFIaXNpMG9PL2V5T3FTYURycjlpdEcySXltQmtIblNER1FJSVltVCt2cUE4QWdPODFtb21jMkxkNVBHcEVONm11RTU0d1BIUWp2Yy95Q2loOHUybzFVd1V6QVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUFNQjBHQTFVZERnUVdCQlMzSi9meGlBdjIyaXJkQnM5OFNPRGhGN2tVL2pBTEJnTlZIUThFQkFNQ0FRWXdFUVlKWUlaSUFZYjRRZ0VCQkFRREFnQUhNQW9HQ0NxR1NNNDlCQU1DQTBrQU1FWUNJUURjNDFMRks0TEpDQlUyVlZLSXo3WjZzeFBoVUVraDhuTFNMSzZJWGRrUDV3SWhBSWVLVk9aY2hhVk81YUY3ZmJkWG9TcmN5eTFZWWVVZVBMb2pjS0k5Zlg4NCIsIk1JSUNnakNDQWlpZ0F3SUJBZ0lCQVRBS0JnZ3Foa2pPUFFRREFqQ0JuVEVMTUFrR0ExVUVCaE1DUzFJeERqQU1CZ05WQkFnTUJWTmxiM1ZzTVJBd0RnWURWUVFIREFkSFlXNW5ibUZ0TVJjd0ZRWURWUVFLREE1bFYwSk5JRU52TGl3Z1RIUmtMakVaTUJjR0ExVUVDd3dRUTJWeWRHbG1hV05oZEdVZ1ZXNXBkREVaTUJjR0ExVUVBd3dRWlZkQ1RTQkRaWEowYVdacFkyRjBaVEVkTUJzR0NTcUdTSWIzRFFFSkFSWU9hVzVtYjBCbExYZGliUzVqYjIwd0lCY05Nak13TnpFeE1ETTBOakUwV2hnUE1qQTNNekEyTWpnd016UTJNVFJhTUlHZE1Rc3dDUVlEVlFRR0V3SkxVakVPTUF3R0ExVUVDQXdGVTJWdmRXd3hFREFPQmdOVkJBY01CMGRoYm1kdVlXMHhGekFWQmdOVkJBb01EbVZYUWswZ1EyOHVMQ0JNZEdRdU1Sa3dGd1lEVlFRTERCQkRaWEowYVdacFkyRjBaU0JWYm1sME1Sa3dGd1lEVlFRRERCQmxWMEpOSUVObGNuUnBabWxqWVhSbE1SMHdHd1lKS29aSWh2Y05BUWtCRmc1cGJtWnZRR1V0ZDJKdExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCQWgrb2VLeUxTZzc5N0k2cEpvT3V2MkswYllqS1lHUWVkSU1aQWdoaVpQNitvRHdDQTd6V2FpWnpZdDNrOGFrUTNxYTRUbmpBOGRDTzl6L0lLS0h5N2FqVlRCVE1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdIUVlEVlIwT0JCWUVGTGNuOS9HSUMvYmFLdDBHejN4STRPRVh1UlQrTUFzR0ExVWREd1FFQXdJQkJqQVJCZ2xnaGtnQmh2aENBUUVFQkFNQ0FBY3dDZ1lJS29aSXpqMEVBd0lEU0FBd1JRSWhBTlZuSmRlLy90QkxxOE1ERGkrU0FkNlVkWUlaU25nNFBNcW15TnJ2Wmo2NEFpQVgweFN6QWhGYUNDcC91aHBWZ25sRitYQmdyd0FJc290WkdUQjZya0IzMUE9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUErZ0FBQUV4Q0FZQUFBRHZEWWdxQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUVuUUFBQkowQWQ1bUgzZ0FBRmljU1VSQlZIaGU3ZDBIZUJYRjJzRHhONzNRQ1RWQTZGSUZGS2tDVXV5QUV1bUtZa0ZVYklDQ0lpS0NVZ1FFN0wwZ2RsUXNLQ3BTcklnZ1NDK2hKblJDSjRIMGIyZnZlRC8wa2hDU25jMmVrLy92dVhtWWQ0NlhrSk56OXN5N00vTk9RSlpGQUFBQUFBQkFnUXJVZndJQUFBQUFnQUpFZ2c0QUFBQUFnQWVRb0FNQUFBQUE0QUVrNkFBQUFBQUFlQUFKT2dBQUFBQUFIa0NDRGdBQUFBQ0FCNUNnQXdBQUFBRGdBU1RvQUFBQUFBQjRBQWs2QUFBQUFBQWVRSUlPQUFBQUFJQUhrS0FEQUFBQUFPQUJKT2dBQUFBQUFIZ0FDVG9BQUFBQUFCNUFnZzRBQUFBQWdBZVFvQU1BQUFBQTRBRWs2QUFBQUFBQWVFQkFsa1czUFNzek5WWFNEeVRLcWExYjVkU2FkWks2ZTQra0h6OW05NG4zLy9tQWNRRWhvUkpjdXBRRVIwVkpXSlZLRXQ2Z3ZvUlhyeVpCcFVwSlFDRDM0UUFBQUFCZjROa0VQU3NqUTA1dDNpS0hQdnBFanYrd1FOTDM3Wk9zMURUOUtJQ3pDWXlNbE5BYTFhVEVOWjJsWkpmT0VscWh2UFdPRDlDUEFnQUFBUEFhenlYb0tqRS9NdmM3U1h4emhweGFzVkwzQXNpUGdOQVFLZHF4dlpTOVk0QVVhZEpZOXdJQUFBRHdFazhsNk1kLysxMzJqSHRLVXRhdDF6MEFuRmE4NjlWU1lkZ1FDYXRTUmZjQUFBQUE4QUpQSk9nWkowN0lub2xUNVBBSEg0dGtadXBlQUtZRWhJZExoVkVqSktwWGR3a0lEdGE5QUFBQUFBcFNnU2ZvcDdac2xSMERCMG5xMXUyNkI0QXJBZ0trMkJXWFNwWEpFeVNvYUZIZENRQUFBS0NnRkdpQ2Z1TFA1UkkvWUpCa0hEbWlld0M0TGJ4UlE2bjI1aXNTRWhXbGV3QUFBQUFVaEFKTDBFOHNYU1k3YnJsRE1wT1NkQStBZ2hKYXE0YlUvT2hkQ1M1ZFd2Y0FBQUFBY0Z1QkhKQ3NsclhIMzNrdnlUbmdFYW1idDhyMmdZTWtnL2NrQUFBQVVHQmNUOURUang2VDdiZmRJUm1IRHVzZUFGNXc4cysvWk9jamowa1doUm9CQUFDQUF1SHFFbmQxeG5uOEF3L0pzUy9tNko1ekZ4Z1pJVUdsU2tsSWplb1NWS0s0N2dVS09ldHRuTDV2djZUdGlKZU1JMGNsS3kxTlAzRHVLazRZSzJYNjlOSVJBQUFBQUxlNG1xQWZYYmpJTGdwM3prZXBCUVpLK1BrTkpLcC9QeW5XdXFVRWx5a2pBVUZCK2tFQWY4dE1UWlhVWGJ2azZMZno1TkRNOXlWOXoxNzlTTzRGbGl3aDUvM3dEVVhqQUFBQUFKZTVscUJuSkNWTDNGWFhTRnJDVHQyVE82RTFxMHZGVVNPa2VOczJkcUlPSUhjeVQ1NlVneDk4TFB1ZmVWNHlqeDNYdmJsVG9sdFhpWms2eWJwQ0JPZ2VBQUFBQUthNWx2RWVtZlAxdVNYblZtSlFvbWVzMUo0elc0cGYwbzdrSERoSGdSRVJVdmJXL2xMTGVnK3BvOVRPeGJGdnY1ZFQ4UWs2QWdBQUFPQUdWN0pldGV4Mi8vTXY2U2dYckdROGF0QkFpWGxxdkFTR2grdE9BSGtSVnFXeWZZUmE1TVV0ZGMvWlpaMUtrZjNQdnFBakFBQUFBRzV3SlVFL3NYaUpwTy9hbzZPekNBaVEwamYzaytpaDk3TzhGbkNJdXRGVjdkVVh6MmttL2NTQ1JaSis1S2lPQUFBQUFKam15aDUwVmJuOTZHZGY2Q2huS29HbytmSDdFaGdXcW52eXlmcnhzdExUSmYzRUNjazRmbHl5VXZOZTNScHdpenF0SUxoWU1YdVp1bDBRMGFHYlZhZTI3NUROVjE0aldTa3B1aWRubFo2WklxV3Y2YUlqQUFBQUFDWVpUOUJWY3J5dWVSdkpQSHhFOStRZ09GaXF6M3BQaWpacHJEdnlMbm5kZWprMmY2RWsvYnBZVXJac2xZekVnL29Sd0hjRXgxU1JpTnExcEdpSGRsS3NZM3NKcTFoUlA1SjMrMTU2VmZaUG1xcWpuQlc5cktOVWYvVkZIUUVBQUFBd3lYaUNucnhtcld6cDJsMUhPU3ZhOFJLcC92ckxlWjR0ekR5VklrZSsvVTRTWDN0VFV0WnQwTDJBbndnTWxLS2Qya3VaVy90THNSYk44L3crU1Q5NlZEWjF2Rkl5RGgzV1Bka0xLbDVjNnY3eHN3U0doZWtlQUFBQUFLWVkzNE9lL05kSzNUcTcwbjE2NVMzcHlNcVM0NHQvbDdqTzNXVFhrT0VrNS9CUG1abHlZdDRDMlg3RExiSnQ0Q0JKeVdPVjllQVNKYVRFdFYxMWxETjFWRnZxemwwNkFnQUFBR0NTOFFUOTVQcmNKY3NCa1JGUzdKSzJPc285VlNGKzk4VEpzdU9tQVpLNmRadnVCZnlZU3RSL1dDaWJ1MTRuaCtkOFk4Zm5xa1NYcTNRcloxbHBhWkxDK3dvQUFBQndoZGtFUFN0TDByWnUxMEhPd2h2VWw4RFFjeXNNcDRxK2JiL2pIam40NnB2MlhuZWdNTWs4ZGx4MkRoNG1lNlkrWTcvWHprVkV6Um9TV0xTb2puS1dzaWVYSnpBQUFBQUF5QmVqQ2JyYTNwNlJuS3lqbkttem1zK0ZTczYzM1RwUWtoYjlwSHVBUWlnalF4SmZlTVZlUlhJdVNYcEFSSVFFbDQzU1VjN1NkNU9nQXdBQUFHNHdPNE9lbVNtWnVUek9LYWhDZWQwNk83WHNObjdZQ0RtNWJJWHVBUW8zdFlya3dGc3pkSFIyNnVpMmdORGNGWDdMMkxkZnR3QUFBQUNZWkh3UHVnbjdYM3RUVG56M2c0NEFLUHNtVFpPa0ZYL3BDQUFBQUlDdk1Yck1tdG9YdnFsTHJLUnVqTk05MllzYU5GQ2lodzNWVWZaT2JvcVRMVjJ1czJmUmN5MHcwTjV2RzF3bVNnS2pTdWxPd0tPc2QyVEd6bDJTY2VLRVpKNUkwcDI1RTFxcmh0VCs4bE1KaklqUVBXZVdsWkVoY1oxakpXWGpKdDJUdlpMZHVrcVZhWk4xQkFBQUFNQVUzMHJRclgvcXR0dnVrQk1MYzdudjNENDN1b09VSFhDemhOZXJLOEhGaXVrSEFJL0x6SlMwdzRmbHhPOS95SUhuWDdJU2FlczlsSnUzYWtDQWxCOHhUTXJkZnF2dU9ETVNkQUFBQU1CN2ZHcUplOUtxMWJsT3prTmlxa2oxajJaSzlWZGZrS0xObTVHY3c3Y0VCa3BJVkpTVTZueVYxSjR6V3lvK09Wb0N3c1AxZ3ptd2t2akVsMStUaktSem0za0hBQUFBVVBCOEowRzNFbzhEcjc2aGc1eUZuOTlBYXM3K1NJcGUxRlQzQUw1TEZYUXJjMzBmKzRaVFVNa1N1amQ3R1ljT3l4RjFQam9BQUFBQW4rSXpDWHI2a2FPUzlNdHZPc3BlY01YeVV1MzFseVdrZEduZEEvaUhJbzNPbDhyUFRiVmU1RUc2SjN0SFB2dEN0d0FBQUFENENwOUowSk5XcnBMTVk4ZDFsSTNBUUtrNGRyU0VsQ3VyT3dEL1Vyek54VkxxaGo0NnlsN3lueXNrNC9nSkhRRUFBQUR3QmI2VG9QLzJ1MjVsTDd4ZUhTblI0UklkQWY2cDdJQmJKU0E0V0VmWnlNaVFwSlVyZFFBQUFBREFGL2hNZ3A2OGJwMXVaYTlFbDZ2dC9icUFQd3VyWEVraVdqWFhVZlpPclY2cld3QUFBQUI4Z1U4azZGa1ptWksyYWJPT3NsZnNzazY2QmZpM1ltM2I2RmIyVXZmdjF5MEFBQUFBdnNCSEV2UjBPMGsvbTdBS0ZYUUw4RytoMWF2cFZ2WXlUM0RVR2dBQUFPQkxmR2FKZTY0RTZEOEJmOGRySFFBQUFQQTcvcFdnQXdBQUFBRGdvMGpRQVFBQUFBRHdBQkowQUFBQUFBQThnQVFkQUFBQUFBQVBJRUVIQUFBQUFNQURTTkFCQUFBQUFQQUFFblFBQUFBQUFEeUFCQjBBQUFBQUFBOGdRUWNBQUFBQXdBTkkwQUVBQUFBQThBQVNkQUFBQUFBQVBJQUVIUUFBQUFBQUR5QkJCd0FBQUFEQUEwalFBUUFBQUFEd0FCSjBBQUFBQUFBOGdBUWRBQUFBQUFBUElFRUhBQUFBQU1BRFNOQUJBQUFBQVBBQUVuUUFBQUFBQUR5QUJCMEFBQUFBQUE4Z1FRY0FBQUFBd0FOSTBBRUFBQUFBOEFBU2RBQUFBQUFBUElBRUhRQUFBQUFBRHlCQkJ3QUFBQURBQTBqUUFRQUFBQUR3QUJKMEFBQUFBQUE4Z0FRZEFBQUFBQUFQSUVFSEFBQUFBTUFEU05BQkFBQUFBUEFBRW5RQUFBQUFBRHlBQkIwQUFBQUFBQThnUVFjQUFBQUF3QU5JMEFFQUFBQUE4QUFTZEFBQUFBQUFQSUFFSFFBQUFBQUFEeUJCQndBQUFBREFBMGpRQVFBQUFBRHdBQkowQUFBQUFBQThnQVFkQUFBQUFBQVBDTWl5NkxianN0TFRaVk9YV0VuZEdLZDdzaGMxYUtCRUR4dXFvMy9LVEUyVkRhM2FTOGFoUTdybnpCcXNYUzZCa1pFNk1pYzFQa0ZPcmQrZ0kvaXowSmdZQ2E5WFIwZmVjV1QrQWtrWU1FaEhaMWFpUjZ6RVRKNmdvMy9LeXNpUXVNNnhrckp4ays3SlhzbHVYYVhLdE1rNkFnQUFBR0FLQ1hvZUhKejV2dXgrYkt5TzRNK2krdmVUNk1jZjFaRjNrS0FEQUFBQS9vY2w3Z0FBQUFBQWVBQUpPZ0FBQUFBQUhrQ0NEZ0FBQUFDQUI1Q2dBd0FBQUFEZ0FTVG9BQUFBQUFCNEFBazZBQUFBQUFBZVFJSU9BQUFBQUlBSGtLQURBQUFBQU9BQkpPZ0FBQUFBQUhnQUNUb0FBQUFBQUI1QWdnNEFBQUFBZ0FlUW9BTUFBQUFBNEFFazZBQUFBQUFBZUFBSk9nQUFBQUFBSGtDQ0RnQUFBQUNBQndSa1dYVGJjVm5wNmJLcFM2eWtib3pUUGRtTEdqUlFvb2NOMWRFL1phYW15b1pXN1NYajBDSGRjMllOMWk2WHdNaElIWmx6Y3ZVYU9mN2p6enJ5dnVRL1Y4anhSVC9weUZubEI5OHJFdVMvOTNraUdwMHZ4ZHExMFpGM0hKbS9RQklHRE5MUm1aWG9FU3N4a3lmbzZKK3lNaklrcm5Pc3BHemNwSHV5VjdKYlY2a3liYktPQUFBQUFKaENnbDRJSkw0NVEvWThjZVpFTGI4YXhxMlJnT0JnSGNFdC9weWdaNldsU1ZhbXNjdFM0Uk1nRWhnU1l2MXBOUUFBLzBPTk04V0ZqNTJBNENBSkNBclNVY0Z6OWZPV3p5SWcxMGpRQ3dFU2RQL2p6d242dHFIRDVOU0tsVHBDZmdXVktDNjFQbjVmQWtORGRROEE0SFJ4M2Z0SStsbkdtRTRvUC93QktYM1ZGVG9xV0JsSlNiTGx4bHNrNC9BUjNXTldaSXRtRWpQK0NRa0laSGN0Y0RZazZJVUFDYnIvOGVjRVBhN2Z6WEp5OFJJZEliOUNhMVNYdXZPKzBSRUE0Ti9XdFd3bjZRY082TWljNkVuanBVejNXQjBWb014TTJUNTBtQno3eXAzUGh1QUs1YVgyN0k4bHBGdzUzUU1nSjl6R0FnQS9GbGFycG00QkFDQ1MrTkVzMTVMemdMQXdxVEoxRXNrNWNBNUkwQUhBajRXV0w2OWJBSURDTG5uZGV0a3o3aWtkbVZkdXlMMVNyRVZ6SFFISURSSjBBUEJqWVkwYTZoWUFvRERMT0g1YzRnYy9LRmtuVCtvZXM0cGRjWm1VdSswV0hRSElMUkowQVBCajRUVnI2QllBb05ES3lwTGRrNTZXMUMxYmRZZFpJWldpcGNyNHNSU0ZBL0tBZHcwQStLdWdJQW1yVUVFSEFJREM2dkEzMzhyaER6N1drVm1Ca1JFUzg4SXpFbHl5cE80QmNDNUkwQUhBVHdXVktpV0J4WXJxQ0FCUUdLWEV4OHV1a2FQdFdYVGpnb0trd3FoSHBNajViSzhDOG9vRUhRRDhWRkRSSWhJWUZxWWpBREFyTXpOVFRwNDhLWWNPSFpLdDI3YkowcVZMSlRVMVZUK0tncEI1S2tWMkRINVFNbzhmMXoxbXFhTlp5L1RzcmlNQWVVR0NEZ0IrS3FSeUpRa0lDdElSQU9TTlNyelQwdElrT1RsWkVoTVRaZlBtemJKNDhXSjU3LzMzWmR6NDhUSjR5QkM1TmpaV2F0ZXRLK2ZWcXlkMXJLOTZEUnBJNjdadDViaExpU0hPUU8wN2YycXluRnE1V25lWUZkNm9vVlFlTzFva0lFRDNBTWdMRW5RQThGT2hWV04wQ3dCeXBoTHdBd2NPeU5xMWEyWDI3Tm55NGtzdnlXT2pSMHUvbTI2U2k5dTFrNmJObXRsSmQ2V1lHS25Yc0tHMDY5QkJicjcxVm5sODdGaDV3ZnB2djVrN1YrTGo0Mlh2M3IxeTVPaFJPNmxId1RxNjZDYzUvUDVIT2pJcnNHaFJpWmsrUlFMRHczVVBnTHdpUVFjQVB4VktnVGdBT1RoMjdKaGNldm5sVXJkK2ZZa3NWa3lpcTFTUkprMmJTcSsrZmVYK0lVTmt3bE5QeVVjZmZ5ekxsaTJUOVJzMnlPNDllMGk4ZlVUcTdqMnljL2dJeVVwUDF6MEdCUVJJOUpPUFMzalZxcm9EUUg2UW9BT0Fud3Evb0pGdUFjRC9VdnZERi8vK3Uyelo2czdSVzNCSHB2VjdqWC9vRWNrNGRGajNHR1FsNTFFRGJwYlNYVHZyRGdENVJZSU9BSDRxdkVvVjNRSUFGQmI3WDMxZGtuLzdYVWRtUlY3VVZDb09IYXdqQUU0Z1FRY0FQeFFRRVNFaFpjcnFDQUJRR0J4ZnNsVDJQL2VTanN3S3JsaEJxajQzVlFKRFEzVVBBQ2VRb0FPQUh3b3VYMDRDUW9KMUJBRHdkK2xIamtqQ3NJZXNodmw5NXdHaElWSjU4Z1FKS2N1TllNQnBKT2dBNElkQ1NwYVVnRUF1OFFCUUdLaGljUEhESDVIMFhYdDBqMWxsN3JwRGlyZHFxU01BVG1MMEJnQitLS1JHTmM2aUJZQkM0c0RiNzhpSitRdDFaRmJSOXUyazRyMkRkQVRBYVNUb0FEd2xwRnhaQ2ExUzJiV3ZrSW9WM1Vsa3JlOFJVaW42alA4R0UxOFI5ZXZyYnd3QThHZEpLMWZKdnFuUDZNaXNFT3Z6SldiS1JHNEFBd1lGWkZsMDIzRnF1YzJtTHJHU3VqRk85MlF2YXRCQWlSNDJWRWYvcEk2TDJOQ3F2V1FjT3FSN3pxekIydVVTR0JtcEkvd3Q4YzBac3VlSkNUcHlWc080TlJJUXpENVh0eDJadjBBU0J1Ujg5N3BFajFpSm1Yem0zM3RXUm9iRWRZNlZsSTJiZEUvMlNuYnJLbFdtVGRhUi96a1ZIeTl4bDNVMmZsWnNZSkVpVW1mQmR4SlNKa3IzQUVEQlNreE1sS28xYXRqSHJabXlkOWN1aVlyeTluVnZYY3Qya243Z2dJN01pWjQwWHNwMGo5V1JNOUtQSFpPNGJqMGxiVWU4N2pFbk1DSkNxbi93amhRNXY2SHVBV0FDTStnQUFBQ0FEOXIxeEhoWGtuTUpESlR5ano1RWNnNjRnQVFkQUFBQThERUhQNTB0UnovN1FrZG1sZWphV2NyMDZxa2pBQ2FSb0FNQUFBQSs1R1RjWnRrelpweU96QXFyYzU1VUdUZUdrMEVBbC9CT2cwOVI5UWkyOXJ0WjFsM1F3dmhYM0xVOUpPTkVrdjdPQUFBQUJTL2p4QW1Kdi84QnlVd3lQMFlKTEZaTVlwNmZadTgvQitBT0VuVDRqcXdzMlRmOWVVbjY5WGZKT0hMVTZGZG04a21wT0hxa0JCVXRvcjg1QUtDd3lNek1sUFQwOUROK1pXUmtXQjlIeHVyckFqbktzbDZidXlkTXlsV1IxM3dMQ3BUb01hTWtva1lOM1ZGNHFmZDhUdGNGOVJqZ0ZLcTRGd0wrVXNYOTJNKy95STViN3hUclNxaDd6Q2w3LzkxU1lmQzlPdkllcXJnN2h5cnV2aThsSlVYV3JsMHJmNjFjS2Z2Mzc1Y0RpWW42RVpHdzBGQXBXYktrbEMxYlZtclhyaTMxNnRiMWZFVnB1Q2NwS1VtMmJ0MHFxMWF2bGoxNzlzaTI3ZHRsNDhhTmN1clVLVGw1OHVRWkI5MFJFUkVTRWhJaXBVcVZrZ2IxNjB1bFNwV2thdFdxZHJ0eTVjb1M3RU1ubTFERi9UOThxWXI3a2UrK2wvaDdocWk3U0xySG5OTDkrMG5sVVk4VXVpUFYwdExTSk40YUd5eGZzVUlTRWhJa0xpNU9ObGxmNnJxUW5KeXMvNnYvcDk3ellXRmhVcng0Y1duWW9JRjlIYWhXclpvMGJ0VEl2ajc0MGpVQjNrQ0NYZ2o0UTRLZXVudVBiTFplU3htSGorZ2VjeUpidDVRYU05LzA5RjRyRW5UbmtLRDdwcU5IajhyY2I3K1ZEejc4VUg3ODZTYzcwY3F0T3VlZEo0OC85cGowNk5GRDk2QXdVTW4ydG0zYlpQSHZ2OHVpSDMrVXYvNzZTMWF1V3FVZmRVWjRlTGcwYjlaTUxyamdBbW5Wc3FXMGJOSENIcUI3RlFuNmYvaEtncDZTc0ZQaXJ1a3VtY2VPNlI1eklpNXNJalZudmkyQjRXRzZ4MytwMTcrNndmdkxMNy9JL0FVTDVQY2xTK1NZUTg5eHBKV1h0RzNUUnRwZmNvbTBzSzRIelM2NnlMNU9BRGtoUVM4RWZEMUJ6MHhKa2EzWDk1ZVR5Ly9TUGVZRWxTMGp0YitlTFNGbHkrb2VieUpCZHc0SmV1NzhiaVUxNjlhdjE1RXpMcklHS28zT1AxOUh1WFBBR2tTLy9PcXJNdVhwcDg4NGs1RmJzejc2U0xwZGU2Mk96dDJzVHo2UjQ4ZVA2OGg1VjE1eGhVUkhSK3ZJR1o5OTlwa2NPWHBVUjg2N3hCcUExdlRZVWxpMUhIM1RwazN5MmV6WjhzbW5uOHI2RFJ2c1ByY0VCUVhaTjRSNjlld3BWMTE1cFRSbzBNQ2VhVE5wMWFwVnN1elBQM1dVc3hNblRzaERJMGJZUzNSTmVYcnlaQ2xhdEtpTzhxNTgrZkxTK2VxcmRlUXNYMGpRczlMU1pITy9tK1hrc3VXNng1emdjbVdsMXV4WkVscWh2Tzd4UCtvMXIyN1FmV2g5RnJ6NzNudHk4T0JCNDF0WEFnSUNwRml4WXRLamUzZnBkLzMxMHJ4NWMrUFhnek5STnlzLy8rSUxPWExFN0tSWDZkS2w4L1U1bTFmcTUzdG41c3d6cm9CeWlyckowcnRYTC9zYWJ3SUplaUhnMHdtNjlmTGM4OHp6a3Zqc0MxWmI5eGtTWUYwa3E3NzltaFJyMlZ6M2VCY0p1bk5JMEhQbi9pRkQ1TVdYWHRLUk0rNjc1eDU1ZXNvVUhlVk1EYVptelpvbFF4OThVQkt0Z1ZSK3FPV0dmLzd4aDlTdlgxLzNuQnYxc2Rtb1NSUFpzSEdqN25IZXQ5OThJNTA2ZHRTUk01bzJhMll2NVRibG5iZmZscjU5K3Vpb1lLa1ZGZDkvLzcxTXNsNWZhaEN1bHF3V05EV1FVMHRmQjl4NnEvMDh4Y1RFMkFOMnAwMmROczFPdXYyTlNtbytzQklwRXp5Zm9GdlhuRjBUSnN2Qk45N1NIZWFvTVYzVjExK1M0bTNiNkI3L29tN3Nmajl2bmp3MWFaS3MrT3N2VjIvWW5VNjk5NnRYcXlhRDc3L2ZUdlJVTXV1bTJ3Y09sTGZmZVVkSFpxaWJFYnNURWx4Zk1hQzJMZFUvLzN5anY5c083ZHZMZDNQbkdybUdLeFNKZzZjZCsyMnhISHpoRmVQSnVmVU9rektEQnZwRWNnNzRpNFNkTzNVclo0Y1BINWJyYjdoQmJyN3R0bnduNTRxYXpWT0pFdnlQV3FyNjN2dnYyemNqZXZYdGE4OGtleUU1VjlSZ2NjZU9IVEpxOUdqN0JzKzFzYkd5ZE5teUFrc1FmRTNyVnExMHEvQlJOWGdPempDYlRQMnR6RjIzKzJWeXJtN3lmdm5sbDlLa2FWUHAyYnUzZlcwb3lQZWV1dEc3ZGRzMnVXL3dZS25Yc0tFOFBYVnF2bGFGbmF0ZXZYcnBsamxxbFptcUQrTzJKVXVXR1AvZDlyRmVRNmFTYzRVRUhaNlZkaUJSZGozd3NQR1pUU1d5V1ZNcGY5ZEFIUUZ3d3hycmcvdHNpN2pVbnVHMjdkdkw3QysrY0d5NVdwa3laZXc3Ky9BZjZuWDA4ODgvUzV0MjdlVG1XMitWTFZ1MzZrZThLZm5rU2J1R2d2cjNYbkhWVmZZV0V1U3NSaUd0Sko2NmI3OGtESC9FeWpETko1TkYybDRzRmU2OVcwZitRMjNQdXJwTEYrbHVKYVhxTThWckRoMDZKQTgvOG9oOVkvR0xMNzg4NitlaUV5NnhyajJxMEtWcGM3LzdUcmZjTTMvaFF0MHlRNjBJdUM0MmY4VWV6NFlFSFo2azlsb2xQUGlRcEZzZlRLYXB2Vll4ejArWGdKQVEzUVBBRGNlT0hyVXJaV2RIVmM3dGVPbWxkbFZ0SjExNHdRVkc3M3pEWFdvZjlkQUhIcERMcnJ6U1hyTHFTOVJOSjFYa1VOMkU2dDZ6cDJ6YzVNTFJXVDVJN2ROVlZmSUxHN1hGTStIaFJ5VGp3UCtmVEdGS2NNVUtFak41b2dRWTJsTmJFTlNLbXNsUFB5MHRXcldTaFlzVzZWN3YycnhsaXoyNzMrK21tK3g2S3lhRmhvWktkOE5KcHJKNDhXTGRjb2U2cHFvaW9DYXBteHZxZEJpVFNORGhQVmxac3UrbFZ5WHBwMTkxaHprcUthODBhWnlFbEMyamV3QzQ1ZGp4NC9ieTlUUFp2WHUzWEc0bFhEdDM3ZEk5emltTUEzMS9wV2JEMm5mc0tNKy8rS0xQTHhYLzhxdXY1S0xteldYc0UwL1lOeDN3LzBLQ2c2VkNoUW82S2p6MnYvRzJPMk9oaUFpcCt2eDB2eG9McVdNVHUxNXpqVHd5Y3FSOVBKcXZVTFBuSDgrYVpjK20vN0YwcWU0MTQ3cnJyak4rczFvdGNUZDVTc1MvcWFNeTFWWWlrMjdzMTArM3pDRkJoK2NjLzMySkpENy9zbzdNaWhwd2l4Uy9wSjJPQUxoSnpaNnJzMmIvVFJYNDZ0V25qNUhrWEZIVnh1SDdsbHFEVjdWRTNPbWowZ3FTU2lTZUdEZE9XbDU4c2F4WXNVTDNvbTdkdW9YdWFLcmpmeXlWQTlPZjA1RkJnWUZTWWZoUUtkS2tzZTd3ZlN0WHJyU3ZEUXQ4WU5ZOE8zdjI3clZ2VXM5ODkxMWpTOTVWWFFkMURKeEp1M2J2TnA0d24yN2V2SG02WlVaRVJJUjl5b3BwSk9qd2xMVDkreVhoL2dmdEplNm1SVFMvU0NvTXZVOUhBQXFDdXR0OU9yVThiY2dERDhpU1AvN1FQYzRLQ3cwdHRIdFovWWs2ci9pS3E2K1cvUzVVM2k0SWFsdEgzMzc5WEoxNThyS2FOV3ZxVnVHUWZ1eTQ3QnoraUNzMWVJcGZlWm1VNlhlOWpueWZXbExkdmxNbmlVOUkwRDIrUzkyc0huam5uVEp0K25RalNYcVJJa1drMnpYWDZNaWNiMTNhaDY2ZW8zay8vS0FqTTlUcEtpVktsTkNST1NUbzhBejFRYVFLb2JpeDF5b29xclRFVEoxay9BeDNBRG43N1YvNzA5VHhOMnJHd0pTeVpjdEtLY043eDJEVyt2WHI3UlVXSnMraDk0TEpUejFsN3hPRlNMT0xMdEl0LzZlT1FVMFlPVXJTRW5KM3lrVitoTmF1S1ZVbWpwT0FRUDlJQjM3ODhVZTVxa3NYdjlvaW9xclBqeGc1VXA1NTlsbmQ0eXhWamR5MHhTNFZ3VHlWa2lKL0dMcTUvN2NCdDkybVcyYVJvTU16OXIvK3BpVDkrSXVPekxIM25VOGVMNkdWb25VUGdJSnkraEwzbzBlUDJrZk9xQUdKS2VYTGw3Y0xUc0UzcVdySHNUMTZ5SUZFOHpkeUM5S2RBd2RLVnl2UndIODBiZHBVdC94ZjRydnZ5L0Z2ek04NEJoYUpsSmpwVXlTb1NCSGQ0OXZVcXF0dTNidmJzODcrUnEwc0cvYlFRL0xlZSsvcEh1ZTBiTmxTaWhjdnJpTXoxTEZuS1ZieWJOcm11RGpadTIrZmpweW56cXB2MTdhdGpzd2lRWWNublBoanFleWZQRjFIWnBVZWNMT1U2TkJlUndBS2twb04vZHNiYjc1cC9BaWNwaGRlU0FWM0g2V1dMNnFDVDF1MmJORTkva2tWTVp3d2ZyeU9vUGFlVjZ0YVZVZitMWG5OV3RrN2VhcU9EQW9Na0lwalJrbGszYnE2dzdkdDM3NWR1dmZvNGZmRkZlKzgrMjdIdDMrcGF1UlhYM1dWanN6WXQzKy83TGUrVFB0bTdsemRNa010YjNmcmlGWVNkQlM0OUVPSEpHSEljSFdMVVBlWUU5bWltVlFjd3I1endDdlVIbUsxVkRreE1WSEdqQjJyZTgxUnhhYmdteFl0V2lSdnpaaWhJLytrOW9TKy9lYWJVclJvVWQyRGtpVktTRlJVbEk3OFYvcXhZN0pqOElPU2RkSnd4ZkdBQUNuZDczcUo2bmF0N3ZCdGFzYThkOSsrZGhMbzcxUVJ5UnY2OWJOWEVqbkpkRlZ5Tlh2KzcrMXNUbE9yREV6dWRWYzM5dSs0L1hZZG1VZUNqZ0psbjNjK2JJU2s3OTZqZTh3SktsVktxa3lmekhubmdJZW81ZXo3OXUyVDk5NS9YNUp6T0JQZEtlcjhVdmdlOVRvWk5YcTBQUWp6VjJvQU9PS2hoNlJKa3lhNkIwcjVDaFhzeXNsK0xTdExkajA1UWRLMi9iTm9wZ25oOWV0SjlFTVAyb202UHhqNzVKT3kzTVVURDRLQ2d1eGlvMnBsaC9wU1c2WkNySEdsV3l1emRzVEh5NTJEQmpsNkxXemVySm1VS1dQMmlMMXZ2LzFXdDh3NGV1eVlyRHR0Ulo3VG9pdFdsR2JXOCtRV0VuUVVxUDF2elpBVEMzN1VrVUhXaFRONi9CZ0pMWVRucUFKZXBxcFVyOSt3UVY1NjJmelJpbW9nVmExYU5SM0JsNmlxN2FZcSszdUZPdkpvNkpBaE9zTGZHamRxcEZ2KzY5Q1hjK1RvWjEvb3lKeWdNbEZTOWFYbkpOQlBqcXo3K2VlZlplcTBhVG95UnhWcnZPTHl5K1dGNTU2VFgzLzZTYlp0MlNKN2QrMnl2L2JzM0NrYjFxNlZiK2JNc1crdzFhOVhULysvelBuSytsNU96aGFycXVRZERCOC8rck4xRGMvSXlOQ1I4OVRKRjA2dkxEaGQrL2J0alI5SmR6b1NkQlNZRTM4c2t3TlRudEdSUVZaeVh2cTIvbEx5eXN0MUJ3QXZlZk90dDJUTDFxMDZNcWRxMWFxdWZzRENHV3J2K2JQUFA2OGo4NnBVcVNJMzMzU1RQRDE1c3N5ekJzRWIxNjJUclhGeHNtLzNidG0wZnIyc1c3MWE1bi8vdlR6M3pETXljc1FJdWFaclY2bFh0NjRFNStOVWtLalNwZVdkR1RQc21UajhVKzNhdFhYTFA1M2F2a04yang1cno2S2JGQkFTTEpVblBDRmhmbElnViswM0h6QndvSTdNVUxQaXZYcjJ0Ti96Yzc3OFVnYmVmcnRkc0ZDZEJxSzJvNmd2dFNjNUppWkdMdTNVU2NhT0dTUExseTJUMlo5K0t1YzNiS2ovRnVlcEZVWDNEeDdzMko1NzlYUGVjTDNaby9aVVljKzllL2ZxeUhuZldkZGtrOXhjM3E2UW9LTkFwQ1VlbElUN0gzRG52UE1MbTBqRkI1bVZBTHhxenRkZjY1WlpsYUtqODVWRW9XQWNQSGhRZnZyNVp4MlpVNzE2ZFhsdjVrdzdJWC90MVZmbHZudnZsZmFYWEdLZm02K1NkbFhCVi8wM0ttRnMxNjZkM0huSEhmTDQ2Tkh5NmF4WnN1TFBQMlZYZkx4OC9PR0g5a0MzU3VYSyttL05uU21USmttTTlUM3d2L3g1VzBwR2NyTEVXMk9oek9QbWk1dEYzWGFMbE9qWVFVZStiOUtVS2JMVllGSFI0bGJpUFhQR0RIbjNuWGZzbTd1NXBaYkFkK25jV1JiLytxdWQwSnV5ZmNjT2VmNkZGM1NVZjVkWTF6cFZNTTZVWk91MS9xZDFuVFJCM2NUOTRndHpLMURVNy84aWw0OTZKRUdINjdJeU0yWFg2TEdTdnRmY1VRaC9VOHU1WXA2ZEtvRWNxd1FVZW01L3dNSVpxMWV2dG8vZ00rbmkxcTNsajhXTDdkbXl2TXhpcTBHNVN1Qmp1M1d6aTd5dFc3TkdmbHE0VUhyMjZISFdJNHh1Nk50WGJyamhCaDNsbjdweHNOTWF2T2ZtYTlXS0ZjYlBXbC8xMTE5bi9ONjUvVkw3WS8yUkdndnRmbXFLbkZxelZ2ZVlVNlJOYTZrNDlINGQrVDYxRDl2SjVQVGYxRXFyRDk5L1gzcjM2bVhQTHVlRjJsTDE3UFRwY3YrOTkrYjU3emlicWRiZjc5UzFVYTBHdUxSalJ4MlpNWC9CQXQxeWxxb1FiL0owajhzdnZkVDExVTBrNkhCZDR0c3pYVG5qVTRLREpIckNFeElhWFZGM0FDak1hdGVxcFZ2d0phWm56MVZpL2NGNzd6azZlNlNLUjdWcTFVcmVmL2RkZTNuc3hQSGo3UlVjL3g2b3E1bjJwNTkrMnRFQnZFb3UxSG4vdWZsU1MzVk5LMmQ5anpOOTc5eCtxWnNmL3Vqb0R3dms4QWNmNjhpYzRITGxKR2J5UkFud28rZHhpdldlVWFkL21ESjYxQ2k1N0xMTGRKUjM2clU3ZnR3NFk2dEFEaDgrTEsrKzlwcU84a2RkZzlRTlNwTisrZlZYM1hMV1h5dFhHaTB5YTdySy9abVFvTU5WU1N0WHliNHA1Z3Q2S0tYNjlwYVNuZnhuT1JlQS9GR3pwUEE5Sml2ektwZGJBL0dLRmMzZHlGVko1Z05EaDlxejZtcmZ1dHF2cXFoSzBHKysvcnE5L3h5RlM4cXVYYkp6eENnUmcwV3psSUN3TUlsNWZxcUVsRE4vSThZdE8zZnVsTGNOSHJmWW9ubHplM3VMVTlRS2xSZWZmMTRpRFoxRThKcDFEVkY3MHAyZ2Jrb1VNVmluWmMzYXRmWk5CYWN0TURRenI2aXRSODJ0MTRUYlNORGhtdlJEaHlYaDNxSG16L2kwaERlb0o5R1BQcXh1Q2VvZUFJV1pXbTRZY3c3N0NPRWRhOWV0MHkwenFydFUyVi9OYk44eGNLQzlySHpVeUpFeWVQQmdlOThuQ3BkTWZieHM1cEVqdXNlY3dLSkZKTXpQVHE2WStlNjc5bm5ncG93WlBkcnhXaVdxYnNXdHQ5eWlJMmR0Mjc1ZEZpNWNxS1A4S1ZxMHFIVHAwa1ZIemxOSHc2bHE3azVTKzg5TkZvanIyclZyZ2F6aUlVR0hLN0xTMHlYaG9VY2tMV0duN2pGSGZTQlZlWDZhQkJyZVZ3ZWdZS2dqWWE2Kzhrb1ovK1NUOXBFM0NkWUE1ZWpodzNMTStqcDY2SkJzMzdKRmZyTUdBV3IvMzExMzNHR2ZLOTNtNG92dEdVdjRuc1RFUk4weUk4MkZZcVduVTNzOUh4czFTcDRZTThiWTNsUjQxLzZYWDVQa0pVdDFaRmJHd1VPeTgvRW43ZjN1L3VEa3laUHluTUc5NTYxYXRwU09odlpoMzNQMzNjYjJNYi9sNElvQ1ZUZkRwQ1ZMbHVpV00vYnMyU01iTjIzU2tiT0NBZ1BsK3I1OWRlUXVFblM0SXZIRGorWEUvRVU2TWljZ09FZ3FUWjRnNFp4MURQaWRxS2dvZWZ5eHgrd3EyMTk4L3JrTWUvQkJlK2xaaFFvVjdPV0RFZGFYbXFXc1ZLbVNOTHZvSXJucnpqdmwyV2Vlc1l0L2ZURjdOc2tRemlodTgyWjdGc1p0dkI0THArQXlVYnJsanVOenY1TkRuMytwSTkvMncvejVjdURBQVIwNTc1YWJiemIydnF4bWpVc2JuWCsranB5bDZuUWtKU1hwS0gvYXRXMXJmNWFhb3Y2dFRsNXZmN2NTZnFlVytQOWI1Y3FWcGVtRkYrcklYU1RvTUM1NXpWclpOMjZTV29laWU4d3BxZmFkWDVIL3doNEF2RU1ObDlTeE5TdVdMWk9Sanp4aUorcm5RZzI0MUJKMytDYlRpZXlDaFF0bG04SGptb0RUUmZYc0xwSE5tdXJJQmRiWWE4K1RFeVROWUdMcmxsbXpadW1XODlRS3E2NEdsM2VyWmRMWHhjYnF5Rm43OXUyVHBVdWRXWlZScWxRcHUycTVLV29mZW1wcXFvN3liOUVpYzVOLzNidDNMN0FpbFNUb01Dcmp4QWxKR0RwY3NnenVGL3BiV1AyNkV2M0ljRFdhMHowQWZKMzZjTHovL3Z0bDFrY2ZHUzNrQmU4eWZjeVdxZ1o5ZGRldWtwQ1FvSHNBY3dLQ2c2WFNFNDlMZ0l2SE5tVWVQU1k3UjQxeFphTEVsSlNVRkpuenpUYzZjbDR6NnpwVHBrd1pIWmx4bWNIRTkrTlBQdEd0L092VnE1ZHVPZStFbFJjc1g3NWNSL21uYnJDYW9HN1k5TC9wSmgyNWp3UWR4bVJsWk1qT2thTWxOYzdjMllSL0N5eFdWR0plbUM2QjRlRzZCNEEvR0hUbm5USnA0a1RIaS9iQWQxUnpvYmlmT2tPM1djdVc4c0dISHpvNnV3T2NTVVR0V2xMMnZydDE1STdqOCtiTFFSOWU2djdyYjc4WlBWcXRrK0V6d0pXNmRldnFsdk5VOFRWVmhNMEo2bGc0VlN2REZMVlZ3UW03ZHU4MnR2KzhacTFhY2w3dDJqcHlId2s2ek1qS2tzVDNQNVJqWDVtNzIvbGZnUUZTY2V4ajdEc0gvRXpucTY2U3laTW1HVi9pREc5cjFLaVJicGwxOE9CQjZYL0xMZEswZVhPWjlja25jdlRvVWYwSTRMeHl0L2FYc0xwMWRPU092ZU1tU3VxZXZUcnlMVjkvL2JWdU9VOTl4blJvMzE1SDVvU0hoOHY1RFJ2cXlGbTdyV1QxMEtGRE9zb2ZkVFJrRzRQSGtxcnowSjNZaHo1MzdsemRjbDczMk5nQ25SZ2dRWWNSeWVzM3lMNkpVOXpaZDk2enU1Uyt0cXVPQVBpRDBxVkx5eXN2djF4Zys3L2dIZXBjWXJkdTBxaEI0NFlORytUNmZ2Mmtib01HY3UvOTk4dXlaY3ZzNWJXQWs5U0t2OHFUeGt1QWk2ZExaQncrSWdtUGpMSlhPUG9TVlFUc3g1OSswcEh6MVBGaTZpZzAwOVIxckdLRkNqcHkxckZqeCt5Q2wwN3AzNysvYmpsdjA2Wk5qcXhVTXJhOFBTeE1icjc1WmgwVkRCSjBPQzdqK0hGSnVHZXdaQ1dmMUQzbWhOYXFJWlZHajJUZk9lQkgxQ0RteWJGajdidjRRSTBhMW5VK09scEg3bEhIdTczOHlpdlNxazBiYWRTa2lUd3diSmhkaU1udFk5bmd2NHJVcnllbCsvZlRrVHVTZnZsTkRzMytRa2UrUVMxdFg3OSt2WTZjcDA3L0tGbXlwSTdNS21Idys2eFpzMGEzOHEvOUpaZEk4ZUxGZGVTc25idDJ5ZmJ0MjNXVU4rcW02ZEpseTNUa3JBYjE2eGZJWjg3cFNORGhyS3dzMmZYNGs1SzZiWWZ1TUVmdE82LzY4dk1TYVBBNENBRHVVL3YwYnV6bjdxQVYzcVVHejdIZHV1bW9ZR3pkdGsyZWZlNDVhZDIycmRTb1ZVdjYzWFNUZkR4cmxsMDlHY2d6TmFNNitGNEpxUnFqTzF5UW1XbFhkVS9aYm42YzVoU1Z6S1VhdkRHbTlocUh1clNTb1Z6WnNycmx2TjhXTDlhdC9GT25wYlJzMFVKSHpwdjc3YmU2bFRmeENRbjVUdkt6MCszYWF3dDg5UjRKT2h4MWNOYW5jblMyQzBWSXJEZE94ZEVqSmJ4bURkMEJ3QitvMmZPSGh3KzM5K29CZjd2bjdyczljMVRlWGlzcC8rampqK1dHRzIrVUt0V3FTWXRXcldUTTJMR3k2TWNmalJheGduK3lsN3BQZU1MVmxZQ1p4MDlJd3FPamZXYXB1eXFBWmxMVkdQZHVrSlFyVjA2M25MZG56eDdkeXIvQXdFQzV5ZUNOOHZ4dVdmamhoeDkweTFtaElTRkdsL2ZuRmdrNkhITnk0eWJaTS9wSlYvYWRsNGk5UmtwZlY3QXpLZ0NjVjdsU0pmdnVOWEM2NnRXclM0L3UzWFhrSFdyUCt2SVZLK1RKOGVQbDhpdXZsRXJXUUw5WG56N3lzWlhBcThHeUU0V1E0UCtLdFdndXBhN3ZyU04zSkM5ZUlnZG12cWNqYjFPbkxKaFVxblJwM2ZKdGNYRnh1dVdNSzY2NHd0aktncFVyVithNXRvZTZybjVqNk1pOXBrMmJHcXNUY0M1STBPR0lqS1FraWIvN2ZuZk9PNjk3bmxSK1lqVDd6Z0UvMUtkM2IzdEpNM0E2dGJKaXpPalJVcXhZTWQzalBXclFlUExrU1puOStlZHl3MDAzU2YyR0RlV0txNjZTeno3N2pKbDFuRldGd2ZkS2tPRnp1UDl0LzlSbjVKUVBMSFZYTjhGTWVudkdES2xlcTVZclgwOVBtNmEvcS9NT0hqb2tweHdjaDVjb1VVTGF0bW1qSTJlcGxVanFtTFM4VU5mVFB3MjlKcTY5NWhyNzg2YWdrYUFqMzdJeU0vK3o3M3pMTnQxalRrQkVoRlI1NW1uT093ZjhrRnBhTnVDMjIzUUUvRlBWcWxYbGlURmpQREY0eW8wVFNVbXljTkVpNlgzOTlWS3ZRUU83eU55T0hUdVlWY2NaaFpRdUxaV2VmRnl0TGRZOTVtVW1KY3ZPaDBkS1ZucTY3dkVlVlpUUnlhWGJaNklTdnAwN2Q3cnlwYXF0bTZMT1FWYzNDWjJpcnJVOWUvVFFrYlBVNzFVVjNjeUx6WnMzeTRFREIzVGtIUFh6M21CZHI3MkFCQjM1ZHZpTHIrVG9wNS9yeUNEcmpWUHhzUkVTY1o3NW96QUF1SzkrL2ZwMkVnWms1NDZCQStYcXE2N1NrZS9ZdDMrL1hXU3VWcDA2MHZlR0cyVEZYMy9wUjREL1Y2SmpleW5XcVlPTzNKRzg5RTg1OFA2SE92SWV0UXo2Rk1jYzVrNVdsdU9uVEppY1VmNXF6aHpkT2pmekRPMC92N2gxYTZuZ2dlWHRDZ2s2OGtYdE85ODlZcFI5VVRDdGVMZXVFdFc3cDQ0QStKdE9uVHB4N2pseUZCd2NMRFBlZWtzdWFOSkU5L2llVHovN3pDNHNweEoxZFI0dzhMY0E2L3BYZWV4b0NTcmx6cEZmZjlzL2FhcWMzT1RzL21XbnFQT3k4N3BYdWJESnlNeDBmSWErVEpreWN2bGxsK25JV1V2KytFTXk4bENvOEx2dnY5Y3RaL1h0MDBlM0NoNEpPdklsL3Q0aGtwV1NxaU56UXV2VXRqNjBIck5uMFFINHArczk5T0VJNzFMN0lyLys2aXRwMHJpeDd2RTlhcG43SjU5K0trMmJON2Nyd0NjbkordEhVTmlGbENzckZSNTlXRWZ1eUR4NVVoSWVmRmd5cldUWWExVENlZlRvVVIyaElQVHAxVXUzbkxWdjcxNTcyZis1T0hqd29QeTVmTG1PbkJNUkVlR3BBclVrNk1pWE5KZk9PNDk1ZHFvRUZTMnFld0Q0bTByUjBWS3ZYajBkQVRrclc3YXN6UHZ1TzduODBrdDFqMjlTQloxVUJmaUwyN2ExOTFVQ1N0UTExMGpSRHUxMDVJNVRhOWZKL2xkZjE1RjNxSnRaMUcwb1dCMDdkcFNRa0JBZE9lZWtkZjA3MSswK2E5YXVkWFNmL2QvYVhIeXgwU1B3emhVSk9qeXYvTU1Qc3U4YzhITk5talF4TWdDQS95cFpzcVI4OXVtbk11VCsrKzB6ZTMyWkduUzJ2ZVFTbWZ2dHQ3b0hoVnBnZ0VTUEdpa0JMcC85ZitERlZ5WFpTdFM5Sk4xSHptcjNaOUhSMFhKeHExWTZjdGJYWDMrdFc3bXphTkVpSXpkc2JqUjQ1bnRla0tERDg5SlU5VTd1bmdKK3JSckY0WkFIWVZZQ00rbXBwMlRXUng5SmxjcVZkYTl2U2p4NFVIcjA2aVh2dmYrKzdrRmhGbDQxUnNvUEcrTHExcjZzbEJUWk9mSXh5WEs0MEZoK3NQM0RHL3IyN2F0Ynpqclg1ZXJ6NTgvWExlZW9iVk9tOXRubkZRazZQTy9ncTIvS3NaOS8wUkVBQVA5MFRkZXVzdXF2dit6WmREWFk4bFdxSU5hQWdRTmwxaWVmNkI0VVptVnU2Q3ZoRGR6ZCtuTnE5VnJaKzhKTE9pcDR4ZGplbUd0cUpWRmtaS1NPbk5XaGZYdjdocWpUMU9xaC9mdjM2eWhuaVltSnN2VFBQM1hrSEhYV2UxUlVsSTY4Z1FRZCtSTFpvcGx1bVpPVm1pWTdIeHdocWJ2Tm5vTUpBUEJkUmEyQnZKcE4vOHNhd1BYdTFjdllRTlcwOVBSMHVmMk9PMlQ1aWhXNkI0VlZZR2lvVkprMFFRTEMzVjNxbnZqNjI1SzBhcldPQ3BhcEk3NzhrWHFtMUVrWEpxZ2pVQnMyYUtBajU2amw2cjh0WHF5am5DMysvWGY3K3VpMC9qZmRwRnZlUVlLT2ZLa3k5U2tKS21QK3JsUEdnVVNKSC95QUp5dU1BZ0M4bzNMbHlqSnp4Z3hadVh5NTNIdlBQUkpWdXJSK3hIY2tKU1ZKLzV0dlpua3Y3Qm84Wlc2L1RVZnV5RkpWM1ljL1lsZDNMMmlxTmduMVNYSW53T0FNdXBxZHY3bC9meDA1NjdmZmZ0T3RuUDMwMDArNjVaenk1Y3JKcFowNjZjZzdTTkNSTHlIV0M3dktNMU1rSU1UTUhidlRuVnk2WFBZOSs0S09BQUE0TXpYclZxMWFOWms2WllwczJyQkIzbnJqRFduVnNxVlB6Y1p0MkxoUkpreWNxQ01VV3RacnR2eWR0MHRvclpxNnd4MnBjWnRsNzRzdjY2amdxSVN6U0pFaU9rSk9WQklkR2hxcUkrZDF2dnBxQ1RQdzk2dVo4ZHdVZnZzMWw0bjh1VkRWMjlYcUs2OGhRVWUrRld2ZFNxS3NEdzgzSkw3OHVoejcxZmszS0FEQVB4VXZYbHo2M1hDRC9MUm9rV3hjdDA0bWpCdG5EOHBNRERTZDl0SXJyOGkrZmZ0MGhNSXFNRHhjS2s5NFVpUW9TUGU0UTQyNVRoZzRjL3BjcUgzUDRTNVhzL2RWNWNxV05acWdxMnJ1alJzMzFwRnpWcTFhWlI4NW1STjcvL215WlRweVR1L2V2WFhMV3dLeURCNHVtSldlTHB1NnhFcnF4ampkazcyb1FRTWxldGhRSGYyVFd0YThvVlY3eVRoMFNQZWNXWU8xeXlYUVIvZWNtWlQ0NWd6Wjg4UUVIVG1yWWR3YUNRZ090bi9YMjI2OVE1SisvbFUvWWs1d3ViSlM2NnZQSk1UNnM3QTZNbitCSkF3WXBLTXpLOUVqVm1JbW4vbjNucFdSSVhHZFl5Vmw0eWJkazcyUzNicEtsV21UZGVSL1RzWEhTOXhsbmUzWHNFbUJSWXBJblFYZlNZZ0xXMEpNdUgvSUVIbnhKWE9GZys2KzZ5NlpQbTJhanJ4TmZXdzJhdExFbnVFMDVkdHZ2cEZPSFR2cXlCbE5teldUVmF2TjdTdDk1KzIzcFcrZlBqcnlOdlU3UEhic21Id3pkNjRzdEJKM3RjUnl5OWF0UnZZMzV0ZXdCeDZROGVQRzZjaFphdEJidFVZTnV6aWRLWHQzN2ZKY0FhWi9XOWV5bmFRZk9LQWpjNklualpjeTNXTjFkTzUyVFhoS0RyNyt0bzdjRVZJMVJzNmJNMXVDQ21oOHJkNlRkUnMwa0IwN2R1Z2U1Nm5WTnUzYXR0V1I3enF2ZG0xNWFQaHdIWm54MHNzdnkzMkRCK3ZJT1F0LytFSGF0R21qby8vMXlhZWZTdDhiYnRDUk05UzU1MXMyYlpMdzhIRGQ0eDBrNklXQUd3bTZrbmJ3b01SZDNVMHk5cHYva0l0czNWSnF2UDJhQkJUU2ZVa2s2TTRoUWM4ZEV2VC9SNEorWnI2VW9QK2JTZ0xVVExWSzJOV1htcWxSbFlVTkRwRnlUYzFhcVpsL0U0TklFdlQvOEpVRVBlUDRjZGw0OWJXUzduTFIzTkw5K2tybHgwZlp5KzBMd2lVZE91UzZrRmhlWEhYbGxmTGw1NS9yQ0RsUjE4VnFOV3RLbXNOSDhZMTQ2Q0VaTzJhTWp2N1hnTnR2bHhrelorcklHWDE2OTdicmxYZ1JTOXpobUJEckE3anlsSW11TE1GS1hyeEU5cjd3c2hvcDZ4NEFBUEpHVlQ2dVZLbVMzRDVnZ016KzlGUFpzSGF0L1B6amozTFhIWGRJMVpnWVk1V1JjMlB2M3IyeWN0VXFIYUV3Q3lwV1RDbzlhU1V4Z2U0TzN3OS9PRXVPLzFsd1M5MmJYWFNSYnBteGVzMGF5Y2pJMEJGeVVyWnNXV25ab29XT25KUFRQblIxQTNIeGtpVTZjazZQN3QxMXkzdEkwT0dvNG0wdmxqSjN1YkFmM1hvVEgzenhWVG4reDFMZEFRQ0FNMVRSb0JiTm04dXp6endqNjYxay9hZUZDMlhRWFhjVlNFWDR6TXhNK2ZycnIzV0V3azZOczBwYzAxbEg3bEFyekhZT2YwUXlrZ3JtVklIYXRXdnJsaGtuVHB5d3Q3emc3RlNoeld1NmR0V1JjOVNLdEpTVUZCMzkwNTQ5ZTJUTGxpMDZja2I1OHVYdGxSTmVSWUlPeDVXL1o1QkVORGQ3dDFQSlNrdVRuZmM5SUdrdUxLa0hBQlJPNm9pblpzMmF5VFBUcHNuV3padmxwUmRla05xMWF1bEgzYkhrano5MEM0V2RPa29yK3VGaEVoVGw3czJpdEIzeHNudmk1QUpadWRqQ3dJenQ2VlJ5dmludTdOdHg4Ui9YWG51dDR5ZGlxSlZDMjdkdjE5RS9xVG9oVHE5dzZOSzVzOUdDZXZsRmdnN0hCWWFGU3N3elV5U29iQm5kWTA2Nmxad25ESHRZc3RKWm1nUUFNRXNkK1RUZ3R0dGs1WW9WOHVUWXNSSVJFYUVmTVV2dGlXY0pMdjRXVXJhc1JJOGU2ZnBTOXlNZmZ5TEhmak8zRnp3NzFhdFZNM3JVbWxxbDhzTVBQK2dJWjZOK0g4MmJOZE9SYytaa3MxTEk2UlZFNmppNjNqMTc2c2liU05CaFJHaUZDbEw1NlluL0xTQm5VdEpQdjhxKzUxL1VFUUFBWnFsWmRWVXQrZk5QUDVVaUxoU25WVVhzZkhVSnJoY3I0L3VEa2xkZUljVXVkYmFRNU5uWVM5MkhqWkQwdzRkMWp6dlVscFA2OWVycHlBeVZISHFoS0tTdk1GRVE5RXlGQUpPU2toemZmMTdSeWxGYXQyNnRJMjhpUVljeHhkdGNMS1h2dUUxSFppV3EvZWkvc3dRUUFPQ2VEaDA2eVBCaHczUmtqcHJoVS90a25hYUszem05VlBYZjJOdHJSa0JRa0ZSNi9GRUpMRkZjOTdnamZkOSsyVFYra3F0TDNZT3NuL1hTVHAxMFpNWmZLMWZLdG0zYmRJU3p1ZUx5eXgwdm5ybDh4WXIvT1E5ZEhYK3BLc2M3cVZ1M2J2YjUrbDVHZ2c1enJBLzlpdmZmSXhFdG5WOEc4Mi8yZnZRSEhuTDlyaTRBbUtBU01pZXBtU0duajhYQmZ3b20zWGJiYmNhWHVxdmYzNzhIcms1UWcxVFRDYnJKSTl3S3U5RHk1YVg4ZzBOMDVKNmpuMzhwUnhmOXFDTjNYSEhGRmJwbGhscnA4WlpIajl6eW9obzFha2pEQmcxMDVBeDExT1d1M2J0MTlCK0xGeTkyZEdXRHV0blR6K0h6MUUwZ1FZZFI2cHp5S3BNblNsQ3BrcnJISEhVdWFNSkRJNDJmWncwQXBoMC9mbHkzblBISnA1L0srZzBiZEFRbmxTNVZ5dDZUNll0TUorZktab2VyTCtPZnl2VHFLUkZOTDlDUlN6SXpaZGRqWXlYOTZGSGRZWjQ2VlVFZDhXWFNqSGZlc1pkVTQrelVQdTRiKy9YVGtUUFVUWkxmZnZ0TlIvOHhaODRjM1hKRzFhcFZwZEg1NSt2SXUwalFZVnhZNVVwU2FlcFQ5bklzMDA3TVd5RDczM2hiUndEZ201eGMwaGNmSHkvM0RSNnNJLzl5OE9CQk9YQ2dZRS95VUFOVnRTZmRORFh6NDdUdzhIQUpOSnlrcTJXck1DY2dPRWdxajM5Q0FpTENkWTg3MUtUSXprZEgyOG02RzlSeTZsNkdDM3VwNDd6R1B2R0VqZ3FlMHl1cG5LYU9LWE82RXZyY2I3L1ZyZi9jcVA3bFh3bDdmbDE3elRXZXJ0NytOeEowdUtMRUplMmsxSzAzNmNpc0ExT215L0hGemhhVUFBQTNyWEFvcVZIN2YvdmRlS01rSmlicUh2K2hrdk91MTE0cnpWcTBzQ3N3RitSZzF2UnVYSldjRnk5dVpxOXg0OGFOZGNzTU5TTkc4UzJ6SW1yVmxITDNEckszRnJycDJMZmZ5NUg1QzNSa25xcThiWHJWeDZ1dnZTWnIxNjNUVWNGUTI1SGVmZmRkdWVubW16MWRaTEZhdFdwU3ZYcDFIVGxERllyNysyZGV0V3FWb3lzYTFNM1VXL3IzMTVHM2thRERIZFlGdGVLUSt5UzhTU1BkWWM1L3FvdytMT21IaitnZUFIQ09HaUNXS2xWS1IyYW9ZN1h5bTlTa3BLVElMYmZlNm5nRlhDOVFNeXZYeHNiYXo1UGFzOWpGU3RUNzMzS0w3UDdYL2tVM3FMM2hwbStBaEFRSFM0a1NKWFRrck1xVkt1bVdHY3YrL05NKzR4aG1sZTEvbzRUVnE2TWpsMlJteWE2Um95WE5wVlVzelpzM04xN04vWVNWRUtxYm1rZGRYTDcvTjNYTlg3bHlwVng2K2VWeXk0QUI4dkdzV2ZMc2M4OTU5Z2FYV2puVTcvcnJkZVFNZGVOMTE2NWRkbHNsNjA3KzdPZlZyaTIxclM5ZlFJSU8xd1JHUkVqTWMxTWwwTkFzd09uU2QrMzV6L25vSGw4ZUJNQTNtUzRLdG5yTkdsbTdkcTJPenQzSmt5ZmxaaXM1LzlMaC9YdGVvS3FaOSs3YlY1Yjg4ZjhuZDZnendqLzg2Q05wZk9HRjh0U2tTVVlxbm1mbnA1OS9ObjVqb0VtVEpzYVcwVmN5bktDcjM4WGpZOGJrZWFETk1XMjVFeGdlTGxVbVBHblgvbkZUeHNGRHN2T3hzU3E3MUQzbXFKVWtRMXpZcnJQR3V2YjI2dFBIOFZvZ09WRko2VzIzM3k0dEw3NzR2OGVOcWZmTXFOR2paZjc4K1hic1JkZkZ4anE2L1ViZDhGUTM5UlNuejZidjBxV0w0NVhuVFNGQmg2dkNLbGVXU2xNbTZNaXNFL01YeVlGMzN0TVJBRGpIMUd6bTZjWlBuSmlucEVZTjlHSzdkN2NMdy9rYk5XRHVlOE1OTWkrYmdkdVJJMGZrMGNjZWt6cjE2OHUwNmRPTnoyeXIvZStEaDVpdm9uM2hoUmZxbHZOYXQycWxXK2JNZk84OWVlT05OODdwOWJ4cDB5WVpQSFNvdEd2Zm5rcnd1UlRab0w1RTNlTE9kc0xUSFo4M1h3NTk4WldPekZJSllhWG9hQjJaczJEaFFtblRycDJzVzc5ZTk1aXhkZHMyR1RaOHVOUnIwRUJtdnZ2dS85eVFVcTk5dFRwbysvYnR1c2RiMUJMM2VuWHI2c2daMzgrYloyL1ArdkhubjNXUE0yNnpua2RmUVlJTzE1VzhySk5FM1RsQVIyYnRuelJWa2xhdDFoRUFPTVBwNDJYT1JDWFlMNzM4Y3E2VEdqWHo4Tjc3Nzh0RnpadkwvQVh1N1F0MWkxcXlQMkRnUVBuMnUrOTBUL1pVa2IzaER6OHNOV3ZYdGd2a0xWMjYxUEZqNXJaWkErYk9YYnZhQTJ5VDFMNUprOFd4YXRXcVpYOFBrOVJ6Zjg5OTk5bUp4dXJWcTgrWWNLdlg3MFlyS1gvbm5YZmt5cXV2bGtZWFhDQXZ2UGlpdlkxQkpTN0loWUFBcVhEL1BSSmF2YXJ1Y0lsMWpkb3o3aWxKZFdFclE3Rml4ZVRSa1NOMVpKWkt6bHUyYm0ydnlqbnM0REcrYW9XVG1oVlhLNEhxTjJ3bzA1OTlWazdtY0l6aS9nTUg1TnJycm5OMVpWQnVxWlU5dlh2MTBwRXpWTjBLZGMxMnNxN0lCZGIxUkIwTjV5dEkwRkVnS2d5K1Q4SWFtTjFIcEdSWkY4R0UreDdnZkhRQWpsTEZjVXhUaWZuUUJ4NlFJVU9IMnJNbmFobjN2NmsrZFhhc0tpalV0Rmt6dWVXMjJ5VHg0RUg5cVA5UXladjYyVDZiUFZ2MzVFNnk5Um1nYm5LMGJkOWU2alpvSUk4OS9yZ3NzeEkrTlR1VGw5VUphc0NvS2oxUGZPb3BhWExoaGJMaXI3LzBJK1pVcmx4WnpyY0c4YWFvR2JDU0pjMGZoWnBoUFhjZmZQaWhORy9WU2lyRnhOaEp1TnFHMGNkS1VscGRmTEZVcmxwVkxyQ2UwOXNHRHJSdk1KMytlbGUvTjdVM0ZXZW5scnBYR2pkV3JRZlhQZTdJT0hSSWRvNGNMVmtaNXJjV1huLzk5VWJmRTZkVHliUmFsVk8zZm4xNWNQaHdXYjU4K1Rrbnl1cTFyRmJ6cU8wd2FsVkluWHIxNUtvdVhlenIyWm11NjJleWJ0MDZ1ZU91dXp4WjJWMGw2RTdlNU51d2NhTjg5dm5uZWJwR1owZFZiemQ5STlKSkFkWVA3OXhQL3krcVdOZW1MckdTdWpGTzkyUXZhdEJBaVI0MlZFZi9sSm1hS2h0YXRiZmYvRGxwc0hhNUJFWkc2Z2gvUzN4emh1eDV3c3l5OG9aeGF5UWdqL3M1VG0zYkxsdTZYaWVaU2NtNng1eWlWMTRtMVo2ZjdzcFJiMjVRVlZNVEJnelMwWm1WNkJFck1aUFAvSHZQc2o0UTRqckhTc3JHVGJvbmV5VzdkWlVxMHlicnlQK2NpbytYdU1zNkd6OC9QN0JJRWFtejREc0pLUk9sZTN6TC9VT0d5SXN2dmFRajU5MXREVHltVDV1bUkrLzdhK1ZLYWQ2eXBhTURpSnlvNDdCcVdJbVVPZ3Y0NzJSS0xlZitmY2tTMmJscmw2dDdKYlB6enR0dlM5OCtmWFRrSERWenJoSTVwNWJzcXlKL1phS2k3SnNzSFR0MGtQUFBQOTh1UEZXNmRHbTdVcnJhVDZtKzFNQlpmYW1aTTFXSTdwZGZmcEh2dnY5ZS9zekRBRDAvSG4za0VSbHRKUWdtWGR1dG0zeHoydkZHWGpUNHZ2dGs4cVJKT25MV3VwYnRKTjJGUW1mUms4WkxtZTZ4T2pMSXVpNGxQRFpHRHIvL2tlNXdpZlhlcXZUVU9JbHk0V2Y4MlhvL3FtSnFCWkd3bGk5ZjNpNDQxckpGQzZsUXNhSjliVmJYanJEUVVFbTNyaGxxbWJxNnFhcUtJOGJGeGNtdml4ZkxnZjM3NWVpeFkvcHZ5THVuSmt5UW9TNXNxemtYNm5mUXVrMGIrOXJvbEwrdndVNVExL3kxcTFiNVRJRTRoUmwwRkpqdzZ0VWsycnFRaXd0M3RFNThPMDhPekppcEl3RElIelU0aTdDU1pyZW9HV1MxM1BLdEdUTmsyalBQMkYrcXZYN0RCazhrNTZhb2dhN2E0KzNrZm5wMVUrVkFZcUs5ZFBxcHlaT2wzMDAzeVlYTm1rbTFtaldsZE5teVVyVkdEWHZaYVl5VndLdTQ1bm5uMmZ1Z0gzbjBVZm54cDU5Y1RjN1ZUWU43NzdsSFIrYjBNWEJqeFdrdnZmS0tiTEtTSGVTQ1d1bysrRjRKS2xkV2Q3akVlbS90blRoWlV2ZnQweDNtWE55NmRZRWRtYVZXTGFrYkJKT2ZmbG9lZVBCQnUrWkhwOHN1a3phWFhDTHRPM2EwYnh5bzdUaHE1bjNHekpteWVmTm1SNUp6WmZUamo5djc0NzFFelV4MzY5Wk5SODV3S2psWExtalN4S2VTYzRVRUhRV3ExRlZYU0ttK3p1NWR5YzcreWRNbGVXM0JubTBKd0Q5RVJrWktodzRkZEFRVFZISisvK0RCOHZxYmIrb2VkNmlWQ2ZFSkNZNE5xUE5qMEoxMzJrbTZhWmQyNmlURml4WFRrVGVwbFJRUFBmeXdhNnRXZkYxSVZKUlVHalBLbFVtUTAyVWNPaXdKd3g4eHZ5ck4rcm1lbmpMRjhRSmxYbmZLZWgvYzFMKy83Tml4US9kNHc1V1hYMjdQVkh2UkRRNGZCZWNHRW5RVUxPc0NHejFxaElTZmI3N2dVdGFwVTVKdzcxREpPTzY5SWhzQWZFL1BIajEwQzA1VFN5WWZIRFpNWG4zOWRkMVQrRFNvWDE4ZWZ1Z2hIWmxWcGt3WnVleXl5M1RrWFY5Lzg0MHMrdkZISGVGc1NsemFTWXBkM2tsSDdrbjZkYkVjbkdYK0ZJa2lSWXJJekJrejdNSnhoY20rL2Z2dFdYc3ZyWjVxMUtpUko0dXdoWWFHU3RldVhYWGtPMGpRVWVBQ3c4SWs1b1ZuSkxCWVVkMWpUdXEyN1pMdzBFaDdEellBNUllYWRWUURSRGhMTFcxOGN0dzRlZkhsbDNWUDRhTUdsYTlhUDMrWTlmbm9Calh6OWNqRER6dDZuckVKYXZaOCtFTVBjZXhhTGdVRUJrcmxzYU1sS01yOEtveC9zSDVQZThaUGtsTTc0bldIT1kwYk41WTNYMy9kZnM4VUpxdlhySkZCOTl6ajZGTHcvRkFyR2t6VUlNbXZwaGRlS05XcXVueXFnUU5JME9FSllWVXFTL1NUajlzejZxWWQvMjZlSFB6d1l4MEJRTjZvUWtHeER1KzdNeTBxS2tvdWFkZE9SOTZqRXJCSmt5Zkx1QWtUQ3UxU1pwVWtQek50bWpSdjNsejN1RU1WeSt2YXBZdU92RXNWYUh4bkpqVmxja3N0ZGEvdzBJUDJ2blEzWlNVbnk4N2hJeVRMaFNKdXFrTDMrQ2VmOU93U2ExTSsvT2dqbWZMMDB6b3FlRjA3ZDdZVGRTL3BmK09OUHZtNklFR0haNVRxMmxsSzlycE9Sd1paSHhaN3gwK1M1SFhyZFFjQTVNMndCeDd3bVprYjllOTg3ZVdYN1Vyd1hxVUdVbDJzUVY2dG1qVjFUK0dpQnJjUER4OHV0OTE2cSs1eGozcnV4ejcrdUd1ejl2bnh4TGh4ZHEwQTVFNVU3TFZTcE8zRk9uSlA4ckxsY3VDdEdUb3lSNzEyVlRIRnh3MmZkdUJGVTZkUDk4d1JoT29tWDZYb2FCMFZ2S0pGaThwVlYxMmxJOTlDZ2c3dnNDNncwU05IU0ZnZDg1VVdzNUpQU3Z4ZDkwbUdIMWMvQm1CZXZYcjE3RHYwdmtBTlh0VmV2SmlZR04zalRXcVE5L3ZpeGZiWnVvVnBSaXc0T0ZoR1BQU1FQRFpxVklIOTNPcjFySTUxOC9yenZudjNiaGsvY2FLT2NGYUJnVkpwOUVnSmlJalFIZTdaLyt5TGtoSnZmcW03dXJrMTR1R0g1WldYWHBMSUF2ZzVDNEphdnIxdy9ueDdaWlFYaElTRXlJMzkrdW1vNEYzVXRLbFVyRmhSUjc2RkJCMmVFbFMwaU1TOCtLd0VGamRmOENNdFBrRjJqaHh0NzVVQ2dMeFFpY3lUVHp3aFZTcFgxajNlby82TkkwZU1rQWNmZU1DTzY1eDNudjJubHhVcld0UXUvdlRCdSs5S3hRb1ZkSy8vVXVmY1B6dDl1bjNlZVVFdkVYMWc2RkRwMEw2OWpyenJSU3NSMjdoeG80NXdOdUhWcWtuNVlVUHN5UkEzWlo0NElmRkRoMHVtQzNVRDFMWHUxbHR1a2RtZmZTWmx5N3A4eEp5TFNwUW9JVStPSFNzL0xWb2s5ZXZWMDczZWNGMXNyR2RxV1Z6ZnQ2L25ielptaHdRZG5oTmVvN3BVZk1KS25GMFlwQnliTTFjU1AvaElSd0J3N3RReFdLKy8rcW9ubDdxcldWazFJM3I2ckd5NWN1WHNQNzFPL1h1N2QrOHVmeTVkS2pmMTYrY1RTNi96b21yVnF2TE5uRGx5KzRBQm5oaE1xbG13OTJiT2xFYm5uNjk3dk1rK2RtM0VpRUpicXlBdnl2VHBMZUVONit2SVBTZi9XaVVIM25wSFIrWjE3TkJCZnYvMVYvdXNkRjlOME01RUpiNlhYWHFwL1BuSEgvTFE4T0dlL014UnEzQzhNR3V0S3Z1cjJnUytpZ1FkbmxTcXk5VlNzcWNMKzlHdEQvWjk0NTZTazNHYmRRY0FuTHVPSFR2SzFDbFRDbnoyODNScW1lY0x6ejRyajQ0YytZOS9WNmxTcFh4cTBLcG13bDUvN1RYNStjY2ZwWFdyVnA1Nmp2TkRKY0szOU84dlMzNzdUZHEyYWFON3ZVRWR1L2JGN05tZVQ5TFZzV3Z6NXMzVEVjNG1NQ3hVcWp3MVhnTGN2dGxsamJVT1BQK1NxMk10dFpYbnU3bHpaZHdUVDloN2tYMlp1bDQzYU5CQXZ2anNNNW56NVpmMlRUMnZVamNOZW5idnJxT0NvNjZwNnJQT1Y1R2d3NVBVMFNEcWZQU3d1dWFYWW1hcS9laUQ3cGVNcEdUZEF3RG5idUR0dDl1VmhMMlFRS29sOTNPKytrcHV2ZlhXLy9uM3FKa0ZWWUhlbDZnQjZnVk5tc2lDSDM2UUw2M0VVU1hxdmt6dGpmemVTaDVlZWZsbHord2YvYmZLMW10SUpUaHFOdEtMMUd0Q25VaFF5Y1BiUzd3bzRyemFVbWFnKzBVSU01T1RKV0hZdzVLWmxxWjd6Rk9yYm9ZOStLRDhzWGl4ZEx2bUdwK2NUYTlicDQ2OC9jWWI5bzI4SzY2NHdpZHVVSHJodURWZnIyRkNnZzdQQ2lwU1JLcE1teXlCTHB3em5McDVpK3g2Ykl4ZDRSMEE4a0lOQnRUKzNiZGVmOTNlUTEwUTFMK2gzL1hYMjh2Q3M1dVZWVE1jQmZYdnl5KzF4Rk1OVWhjdFdDQUw1czJUWGoxNytzeFo5T3Azb3hMejk5OTlWMzc5K1dkcFkvMSt2RDZBVkRQcGFzWk9GYThMOTlBV0ExVWM2NFAzM3BQdnYvMVdHdFIzZjhtMlQ3TmVjK1h2dWxQQ3JFVGRiYWRXcjVWOXo3Mm9JL2ZVcmwxYlpuMzhzZnk0Y0tGY2Nmbmxuai92WDFITDh6OTgvMzFaOGVlZmNyMTFUZmVsTFQ1cW1YdjE2dFYxNUw3aXhZdjd4SkdST1NGQmg2ZEYxSzBqRmNlT3NsNnA1bCtxUnovL1NnN08va0pIQUpBM2FqQzFkTWtTVjg4YlYzdk4yN1Z0S3o4dldpUnZ2dkZHamt2NzFOSnFOWXZ1eTFSaTI5YjZlZFZlNmExeGNmTFV4SWx5NFFVWDJNK0QxNmlDVGoydXUwNStYTERBVHN4Nzl1amhVOHYwMWV0bDdKZ3hzbVR4WXVuVXNXT0JQY2Vxa0o3Ni9wOTk4b245UEhhM25sTi8yZTdnTnJYVXZkSzRNZXJDb1h2Y2svanFHNUs4dm1DT3VXM1ZzcVY4OWNVWHNselh0U2pqc2RVcmF1KzJPbUx4THlzcFY2dUYxR3ZjaTllMHMxSHYxZGh1M1hUa1BuV2Q4UG5QdUN5RDFUV3kwdE5sVTVkWVNkMFlwM3V5RnpWb29FUVBHNnFqZjFLVkh6ZTBhaThaaHc3cG5qTnJzSGE1QkVaRzZnaC9TM3h6aHV4NVlvS09uTlV3Ym8wRUdMNTRaR1ZtU3NLSVIrWG94NS9wSG5NQ3JJRkl6YTgra1lnNmRYU1BOeDJadjBBU0JnelMwWm1WNkJFck1aUFAvSHZQeXNpUXVNNnhrckp4ays3SlhzbHVYZTJWRFA0cTdjQUIyVFZ1b3ZXY21GMDlZUStJSG50VWdsMDRvY0NFR2UrOEkvT3NBWU1wbDNicUpEZjM3NjhqLzVCaHZjKyttak5IeG93ZEsrczNiTEJqcHhXeFB2TlVvdnJJd3c5TDgrYk5jejB6cENwZy8yWWxYRTRhZE9lZDBycDFheDI1VHoyL08rTGo1UXRyQVA2NTliVjIzVG81ZXZTb2Z0UTk2dVpCeVpJbHBkbEZGOW1KZVRkcm9PckxleUZQbDJsOUhxOVlzY0krNG16QndvVnk0c1FKL1lnWmF0YXdSbzBhOXA3Vy9qZmRaQys3TjVHVUo0d2NMZW5IanVuSW5LanIrMGp4VmkxMFZQRDJ2L20ySksxWXFTUDNoSjlYV3lyZWM1YzltMStRMVBWaDd0eTVNbVBtVFBseitYSTVmUGl3ZnNRZDZucXRpb3gydU9RU096RnYyYktsUlBwSkhxTSs4OGFOSDYrai8zVXlPVm0rdHA1N0U1K0w2c2F0V2wzbHkwalFDd0ZmVDlDVkRPdURjL04xdlNWMXl6YmRZMDVZN1ZwUzY4dFBKREE4WFBkNER3azY0RHZTMHRMa2o2Vkw1WlZYWHBHNTMzNHJ4NjJrSnErRGtrQnJRS3RtTkZVeXJnWWduYSsrMms1YXZMNVUybTFxYUhQdzRFRlp2WHExZlB2ZGQvYmdlOGtmZjBpNk5TNVJYMDVTTTF4cW9LMFM4aGJXNytWcTYzZWlpcXVwSk4yZnFiUEl2N0VHMkxNKytjUitiaytlUEdrbjhQbWhYdHRxeFVGcksxRlJTMVRidFd0bkY4VHloU1hKOEcxSGpoeXhyeE9xOE9EaXhZdGw5Wm8xOXJYQ3lRUlNYU3ZVbGh4MXJiajhzc3VrZmZ2MjloN3ppRUp5YnZ2cFBwczlXM3IzN2FzajU2am5kMWQ4dk05c2Zjb09DWG9oNEE4SnVwSzhicjFzN1htRFpDV2JMK1pXc25jUHFUTGhpUUsvdTVzZEVuVEFONTA2ZFVyV1dBTS9sYkQvL3Z2dkVwK1FJSWxXSWhsdkRTaFVnbk02dGYrM2ZMbHlkaEV4VmZTdFdiTm0wckJoUTJuY3FKSGZKMzhtcEZwamlaMDdkOHFhdFd2dFB6ZkZ4Y25XclZ2dGdibWFTVXRLU3JKbjRNOUUvUTZpU3BlMm4zZTF2N0dhbFRUV3ExdFhxc1RFMkwrVHlwVXFGY3BCOXQvVWM3ZldlbDVYcmxvbDY5ZXZ0MmZQMUd5a2VsNjNiTmtpL3g1b1ZvcU90bWNPMVpjNjUvNkNDeTZRbWpWclNpUHJ0UjFUcFFvSk9RcWNXaDJ5YmRzMmV5V091bDZvbTFESGpoMnp2OVExWS9lZVBaSjhodkdvU2d5aksxYTBielNwNjRXNmdhcHUyS21xOHVkYjE0b3ExdXRiM1lncXpOUm5YWXZXcmUxcmhkUDYzWENEdlBYR0d6cnlYU1RvaFlDL0pPaUtPck44enlPamRXUldwV2NtUytscnV1cklXMGpRQWY5eHRvOWhac2ZOeSsxUWlOL0Z1Y25wZWVXNWhLL0t6ZldDMTNmMlhudjlkUmwwenowNmNvNjZzZmZEZDkvWkJUaDlIUWw2SVhCazloZHk0T1hYZGVTc1dsOS9iaVhvTHQ3cHRsNnV1NmM5S3ltYnp2NmF5cS9BWXNXazhwaFJFdVRCMXhRSk9nQUFBSHpKdm4zN3BQRUZGOGpCcytSMGVhRzJDL3kxZkxsZnJNQWhRUWQ4RUFrNkFBQUFmSVZLT1crNTlWWjU3NE1QZEk5ejFJcUYxMTU1eFM0bTZRODRud0lBQUFBQVlNejdWbUp1SWpsWHlwVXJKOWZGeHVySTk1R2dBd0FBQUFDTStQWFhYNDNzTy8vYm5RTUgrdnpaNTZjalFRY0FBQUFBT0c3VjZ0WFNxMCtmTTFhOWQwTEZpaFhsdm52djFaRi9JRUVIQUFBQUFEaHEvb0lGY3ZrVlY4aitBd2Qwai9PR1AvaWdmZnlsUHlGQkJ3QUFBQUE0SWkwdFRaNS80UVc1TmpiV1NNWDJ2OVd0VzFjRzNuNjdqdndIQ1RvQUFBQUFJRjlVcGZiMTY5ZkwxVjI2eUpBSEhwQ1VsQlQ5aVBOVTVmWXBreVpKYUdpbzd2RWZKT2dBQUFBQWdEemJzR0dEM0Rsb2tGellySmtzK3ZGSDNXdE9yeDQ5NUlyTEw5ZVJmeUZCQndBQUFBQ2NrME9IRHNuc3p6K1h6bDI2U0tNTExwQTMzM3BMMHRQVDlhUG1SRmVzS005TW42NGovME9DRGdBQUFBRElVVkpTa3F4YnQwN2VldnR0aWIzdU9xbGVxNVpkb2YzN0gzNndsN2U3SVR3OFhENTQ3ejJKaW9yU1BmNkhCQjBBQUFBQUlKbVptWExxMUNsN2RuekR4bzN5MVp3NU11cXh4K1R5SzYrVVduWHEyRXZZQjk1NXA4ejU1aHRqUjZkbEp6QXdVQjU3OUZGcDNicTE3dkZQSk9nQUFBQUFVTWlkT0hGQ1dyZHBJNDJhTkpFYXRXdkwrWTBieTNVOWVzakVTWk5rNGFKRmtwaVlLQmtaR2ZxL2RsK2ZYcjFrNkpBaE92SmZKT2dBQUFBQVVNZ1ZLVkpFZHU3YUpkdTJiN2VYczN0SjJ6WnQ1T1dYWHBLZ29DRGQ0NzlJMEFFQUFBQ2drRk5IbDdWdTFVcEgzdEgwd2d2bDAxbXpKQ0lpUXZmNE54SjBBQUFBQUlEVU9lODgzZktHaTF1M2xybmZmQ09sU3BYU1BmNlBCQjBBQUFBQUlNMmFOZE90Z3FWbTg2L3Awa1crbmpOSFNwVXNxWHNMQnhKMEFBQUFBSUJVcVZ4WnR3cU9TczZIM0grL2ZQakJCMUlrTWxMM0ZoNGs2QUFBQUFBQWlZbUprV0xGaXVuSWZTVktsSkIzWjh5UXB5Wk9sSkNRRU4xYnVKQ2dBd0FBQUFDa2VQSGlFaDRXcGlQM0JBWUV5R1dYWGlyTGx5NlZYcjE2NmQ3Q2lRUWRBQUFBQUdEUFdydTlEejI2WWtWNTZjVVg1YXN2dnJCbjhBczdFblFBQUFBQWdLMUJnd2E2WlZaa1JJVGNQV2lRckZ5eFFtNjk1WlpDY2NaNWJwQ2dBd0FBQUFCc0Z6WnBvbHRtaEllSHl4MERCOHJLdi82UzZWT25Tc2xDVnFYOWJFalFBUUFBQUFDMk9uWHE2SmF6cXNiRXlOakhINWZOR3pmSzg4OCtLOVdxVnRXUDRIUWs2QUFBQUFBQVczUjB0QlF0VWtSSCtWUEorcnY2WFgrOWZEOTNybXhjdjE1R1BQeXdsQzlmWGorS015RkJCd0FBQUFEWWloWXRLdVh5bUVTci8yK2Q4ODZUTysrNFF4Yk5ueThiMXEyVHQ5NThVenAwNk1BZTgxd2lRUWNBQUFBQTJNTEN3aVNtU2hVZG5WbEFRSUJkNUUzdEgyOS95U1Z5MzczM3l0eXZ2NVlOYTlmYVJkK2VlK1ladWZqaWkrMzk1amczSk9nQUFBQUFnUDlxMmFLRi9XZTVzbVdsY2VQRzByRkRCN2t1TnRaZW9qNXp4Z3laUDIrZXJMZVM4VjN4OFRMdnUrL2s2Y21UNWRKT25lemw2OHlVNXc4Sk9nQUFBQURndjBZOStxaWtuVG9sdXhJU1pObVNKZkxkM0xueTBRY2YyRVhlK3ZUdUxXM2J0TEgzcW9lR2h1ci9CNXhDZ2c0QUFBQUErQzhTNzRKRGdnNEFBQUFBZ0FlUW9BTUFBQUFBNEFFazZBQUFBQUFBZUFBSk9nQUFBQUFBSHVBakNYcUEvYit6eVR4MVNyY0EvNWFaZkZLM2NoREUvVGNBQUFEQWwvakVDRDR3TkVTQ2loWFRVZmFTVnEzUkxjQy9uVnkyWExleUZ4SlZScmNBQUFBQStBS2ZtV0lMdjZDeGJtWHY2TmR6ZFF2d1gxbHBhWExzaC9rNnlsNW81V2pkQWdBQUFPQUxmQ1pCanp5L29XNWw3OFM4QlpKKzZKQ09BUDkwN0pkZkpYM1BQaDFsTDdKRk05MENBQUFBNEF0OEprRXZlbkVyNjErYjgwYjBqS05IWmZkVFQ0dGtadW9ld0w5a0pDZkwzdkdUUkxLeWRNK1pCWlV2SitIVnF1a0lBQUFBZ0Mvd21RUTlyRnBWQ2ExZVhVZlpPL3JwNTVMNHlXYzZBdnhIVm5xNjdCbzVXbEkzYjlVOTJTdmVxWU1FQlByTTJ4c0FBQUNBeFdkRzhJR2hvVktxVjNjZDVTQWpRL2FPZkZ3T3ZQT3VaRmx0d0I5a0pDVkovSU1QeTlFdjV1aWVIRmlKZWFuZVBYUUFBQUFBd0ZmNDFCUmJWTi9lRWxTcXBJNnlwMllhOXo0K1RyYmZmcGVjMnJxTkplL3dXZXExZk95blgyVHp0VDNsbUVyT3o3SzBYWWxzY1pFVXlVWE5CZ0FBQUFEZUVwQmwwVzNIcWVSaVU1ZFlTZDBZcDN1eUZ6Vm9vRVFQRzZxajdPMS81WFhaTjNHS2pzNHVJRGhZSXBvMWxhTHQyMGxFclJvU1ZMYXNmZ1R3cUt4TVNZdmZKU2MzYnBUajMvOGdLWnMyNndmT0xpQTBSR3A4K29GRU5zdzVRVmVyUytJNngwckt4azI2SjNzbHUzV1ZLdE1tNndnQUFBQ0FLVDZYb0dlbXBzbm0ySjZTc202RDdnSHd0MUkzWFMrVnh6eW1vK3lSb0FNQUFBRGU0M05WcEFKRFE2VEsxRWtTV0tTSTdnR2doTld2SzlFamh1c0lBQUFBZ0s4eG02QUhCRmoveS9sb3RQOUtUOWVOczR1b2M1NVVtajVKQWtKQ2RBOVF1QVZYS0MvVlhuOUpBc1BEZGM5WnFIVXp1Vnc4bzdhSkFBQUFBRERQZUlJZUdKbTdtZTdjSEIxMXVwS2RPa3JGOFdQc1BiZEFZUllVVlZxcXZmMmFoRmFzcUh2T0xpc3RWVEtPSDlkUnpvS3JWOVV0QUFBQUFDWVpUZERWT2N6QnVhaTZycHphc1VPM2NzbEsvcU42WENkVlhubEJBb3NYMDUxQTRSSmFwN2JVK09SOWUxWEp1VWcvZEZqUzl4L1FVYzVDS2xUUUxRQUFBQUFtR2QrREhuWitmZDNLV2RxV2JaS3ljNmVPY3E5RSszWlM2OHRQSktKNVU5MEQrRCsxN0x4azMxNVM2N09QSkx4YU5kMmJlOGNYL3k2U2thR2pIQVFFU0ZpVnlqb0FBQUFBWUpMeEJEM2l2TnpQN0IzKytEUGRPamRoVmF0S3pmZmZrZWhKNHlTa2FoWGRDL2lob0NDSmFIYWhWUC80WGFreWJvd0VSVWJxQjNKUFZYQS8vUEVuT3NwWllFUzRoRlUvOXhzQUFBQUFBTTZkMFdQV2xMVEVnN0toUlZ1UnpFemRrNzJReXBYa3ZPL25XRWxCaE80NWQ1a3BLWExzeDUvbDREdnZ5cW5WYXlYeldPNzIyUUtlcGJhS1JKV1d5Tll0cGN5QW15V3lYajBKc0JMMXZFcGF0VnEyZGU5ckg0TjROcUUxcWt1ZEg3NnhaOUlCQUFBQW1HVThRVmMyWGR0RFVsYXQwVkhPeWc2NVZ5cmNkN2VPOGlmOXlCRTV1WEdUSkM5ZklTbWJOa3Y2c1dPU2xacW1Id1c4S3lneVFvS0tGNWZ3Q3hwTGtTYU5KYXhhTmJzdnYxUlN2cVh2VFhKeTJYTGRrN1BTdC9XWFNvK08wQkVBQUFBQWsxeEowUGU5L0pyc2YrcHBIZVVzTURKU3FuL3luajFMQ01CWkI5NTVUL1krL21UdWpsZ0xDcFNhWDM0cWtmVjVMd0lBQUFCdU1MNEhYU25aK2FwY0w4bk5URTZXK0R2dnkxUEJPQURaTzdyd1I5azNibUt1eno4UHExVlRJczZyclNNQUFBQUFwcm1Tb0tzcTBFV3Z2a0pIWjVjV255QmIrOXdvSnpkdjBUMEE4c3hLeUk5OCs3MGszSFh2T1czeGlMcmxKcnRhUEFBQUFBQjN1SktnSytYdXZQMmNCdnZwdS9iSTF0amVjdWp6TDNOVnpBckEvOG80Y1VKMlRaZ2tDZmNNa2F5VVZOMTdkaUhWcWtxcDJHdDFCQUFBQU1BTnJpWG9rZlhxU3ZIWXJqcktuVXlWWEF4OVNMYmNjTE9jV0xxTVJCM0lwY3hUcCtUZ3A3TWw3b3F1Y3VpMXQzSjM1dm5mQWdLazNIMkRKREEwVkhjQUFBQUFjSU1yUmVMK2xuWWdVZUk2ZDVNTTY4OXpaaVVOb1RWclNORjJGMHVSQzVyWTdhQVNKZlNEUUNHWGxTbnArdy9JcVUxeGtyUmtxWno0ZGJGa1dIRmVGTEhlWTlYZmVrMENBbDI3ZndjQUFBREE0bXFDcmh6NVlZRzlGMWJTejJGR0x6dWN6UXo4UHdmZXlvRWxpa3V0T2JNbHJISWwzUU1BQUFEQUxhNG42Q3FKMkRQcGFVbDgrWFhkQWNBTEFzSkNKZWJWRjZWNHV6YTZCd0FBQUlDYjNGL0RHaEFnRlI0Y0lpV3Vvd0FWNEJsQmdWSmg5RWlTY3dBQUFLQUFGY2dtVTNVbWV1VnhZNlRvcFIxMEQ0QUNFeGdvNVI0WUxHWDY5TklkQUFBQUFBcUMrMHZjVDVPVm1pbzdIeHNyUno3NlJQY0FjSk5hMWw1eHpDaUo2dDFUOXdBQUFBQW9LQVdhb051c2I1LzQzZ2V5YjhJVXlVeE8xcDBBVEF1SnFTeVZwMHlVb3MwdTBqMEFBQUFBQ2xMQkoramFxZTNiWmVlREkrVGs4aFZXMHE0N0FUZ3VJRFJVU2x6YlJhSWZlMFNDaWhiVnZRQUFBQUFLbW1jU2RDVXJQVjJPZlArRDdKczhUZEoyeE51ejZ3Q2NFUkFTTEJGTkd0dEwyaVByMXJFNk9LWVFBQUFBOEJKUEplaC95MHhKa2VPL0xwYkVOOTZXazM4c3N4TjNBSGxnSmVHQlJTS2wyR1dkcE15dE4wbGsvZnAyVVRnQUFBQUEzdVBKQlAxMHFmdjN5L0ZGUDBuU2I3L0x5WTJiSkczTE5zbEtTOU9QQXZpM0FDc2hENnRWVXlJYm55OUYyN2FSb3ExYVNGQ1JJdnBSQUFBQUFGN2wrUVQ5SDZ4L3FwcE5UenQ4UkRKT0hKZjBnNGNrS3pOVFB3Z1VYb0hoWVJKVXZJUUVseXdwd1NXS1N3Q3o1QUFBQUlEUDhhMEVIUUFBQUFBQVA4VTBHd0FBQUFBQUhrQ0NEZ0FBQUFDQUI1Q2dBd0FBQUFEZ0FTVG9BQUFBQUFCNEFBazZBQUFBQUFBZVFJSU9BQUFBQUlBSGtLQURBQUFBQU9BQkpPZ0FBQUFBQUhnQUNUb0FBQUFBQUI1QWdnNEFBQUFBZ0FlUW9BTUFBQUFBNEFFazZBQUFBQUFBZUFBSk9nQUFBQUFBSGtDQ0RnQUFBQUNBQjVDZ0F3QUFBQURnQVNUb0FBQUFBQUI0QUFrNkFBQUFBQUFGVHVUL0FFaTRQaHNXRHBDaEFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJGSURPXzJfMCJdLCJhYWd1aWQiOiIzNjFhMzA4Mi0wMjc4LTQ1ODMtYTE2Zi03MmE1MjdmOTczZTQifX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMTktMDctMTgiLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6ImVXQk0gZUZBNTAwIEZJRE8yIEF1dGhlbnRpY2F0b3IiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDE5MDcwOTAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4zLjQiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMC4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDE5LTA3LTE4In1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAxOS0wNy0xOCJ9LHsiYWFpZCI6IjAwMjQjMjMwMCIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFpZCI6IjAwMjQjMjMwMCIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJHK0RGaW5nZXJwcmludEtleWNoYWluaU9TIn0sImRlc2NyaXB0aW9uIjoiRytEIEZpbmdlcnByaW50S2V5Y2hhaW5pT1MiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJ1YWYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoyfSx7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9kZXIiXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiYXR0YWNobWVudEhpbnQiOlsiaW50ZXJuYWwiXSwidGNEaXNwbGF5IjpbImFueSIsInByaXZpbGVnZWRfc29mdHdhcmUiXSwidGNEaXNwbGF5Q29udGVudFR5cGUiOiJpbWFnZS9wbmciLCJ0Y0Rpc3BsYXlQTkdDaGFyYWN0ZXJpc3RpY3MiOlt7IndpZHRoIjo1NDAsImhlaWdodCI6OTYwLCJiaXREZXB0aCI6MTYsImNvbG9yVHlwZSI6MiwiY29tcHJlc3Npb24iOjAsImZpbHRlciI6MCwiaW50ZXJsYWNlIjowfV0sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlCbURDQ0FUMENCR1FkUFIwd0NnWUlLb1pJemowRUF3SXdWakVMTUFrR0ExVUVCaE1DU1U0eEN6QUpCZ05WQkFnTUFrMUlNUTB3Q3dZRFZRUUhEQVJRVlU1Rk1Rc3dDUVlEVlFRS0RBSkhSREVMTUFrR0ExVUVDd3dDUkZNeEVUQVBCZ05WQkFNTUNFRlZWRWhTVDA5VU1CNFhEVEl6TURNeU5EQTJNRE13T1ZvWERUUXpNRE15TkRBMk1ETXdPVm93VmpFTE1Ba0dBMVVFQmhNQ1NVNHhDekFKQmdOVkJBZ01BazFJTVEwd0N3WURWUVFIREFSUVZVNUZNUXN3Q1FZRFZRUUtEQUpIUkRFTE1Ba0dBMVVFQ3d3Q1JGTXhFVEFQQmdOVkJBTU1DRUZWVkVoU1QwOVVNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVTSXBJL2RLWUNEWWh6d0Qyd1NmWUFPYi9uTmFpUGNXRjIxdnhaay9UZ0QwT0p0Y0QrT1BtNjRud1pkRldTRVlTVzdpT3FucG1KeWRlOG1nci90bkFpekFLQmdncWhrak9QUVFEQWdOSkFEQkdBaUVBM2J2aGF6UUZQd215WGx4Sy94Q1hmaDdnMVgxRW9iTEMzTCsyR09SeHA3Z0NJUUNmTkVUWC9tMkJlYlJMWEk0TE1QMUVRR1BYRkRmN09rNzRVN3hiaU00VmtBPT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCwvOWovNEFBUVNrWkpSZ0FCQVFBQUFRQUJBQUQvMndCREFBTUNBZ01DQWdNREF3TUVBd01FQlFnRkJRUUVCUW9IQndZSURBb01EQXNLQ3dzTkRoSVFEUTRSRGdzTEVCWVFFUk1VRlJVVkRBOFhHQllVR0JJVUZSVC8yd0JEQVFNRUJBVUVCUWtGQlFrVURRc05GQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJUL3dnQVJDQURJQU1nREFTSUFBaEVCQXhFQi84UUFIQUFCQUFNQUF3RUJBQUFBQUFBQUFBQUFBQWNJQ1FRRkJnSUQvOFFBR3dFQkFBSURBUUVBQUFBQUFBQUFBQUFBQUFFREFnVUdCQWYvMmdBTUF3RUFBaEFERUFBQUFheWo2RjV3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVnZDNlRFQ1eExKMzZ4Rm9jNWw4bEdQU1hLc3pORE0wOU5WZE4rOFA4WmRMS0JIcGllK3ZoVHVvZk5YTkF2bStNeVVtUm4xZFFaZ0FITTRjdzFMaWNQMVZMZVF1alR6SjJkSk0zMzVwaGFhVWplYWJLVVJ2ZFY3U1oxZFRTNlN1Rmt3US9iSHI3NjV0MkYxbWRrODdOUHFFK1NZeUhSMWdBTEIxOGx2eVRlalBYUXFtdWdzZ1lkVlZwMXlhSGZYTFczdlVRazJwYUlxZDVNcllxSVBmamRMTm1UWXkyK0NUb3hzYjZJdHRTdTZsQTlCWkhBNnFvQUJ5T09OSFAycFBlbmpycy84QXhtbmNZYkxDaWE2ejB4U21hWnQ5SFJNbFVSdmRGK3F6b1l1czNsZEtWMXU2aWFtM3Q3UHJ0Sm4wR2VudS9BOURXR3h4QUFBZXY4Z3hYS2svT1pxYzlKbWJLbHBNelpHa3pOa2FUTTJScE53TTZFcmgxajh3Mk9JZXlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQLzhRQUtCQUFBUU1EQXdRQkJRRUFBQUFBQUFBQUJRQUVCZ0lEQnhVWElBRVFFellSRWhZd05IQTEvOW9BQ0FFQkFBRUZBdjZiR0lTUmxOWWJGZ1VaUzNGTW1sUGd0S1cyYmZTTHJFMVBTdVcrQzB2QmFYZ3RMd1dsNExTY2lHTHlrMWlnT1Jwa3NRSXhlOStHQVFtcVVQRzdlMDBzUG43WWEzZTVkQnRxOTV4YU9aWUhGQXl4SjdjcEJreGhIaTI4NHRiemkxdk9MVEhMUUozVzFkMkgxaDZ5c0VXczVoMXlLRU9iUnJjZk9nWWl5QkZTV1F0NHlLUFNGN0kzdkRFbnR5eWY3dHdqY29mUmg0Q05ONUFNbEFLM0l3bHkzVlp1Y3NWTU9qMlhMTFJtcDlJKzFHSmoxZE8waDViU0hsQW9DVmpwOVRYSGhZOUpkcER5MmtQSnppdzQwYmRzT21hbTVkWkhZZEI4dzVZWStOZVU0K3JwTHV6YjlibWUvd0FQdGpYNnZ2VlpmK1B1dmxpNGgwWVM5WmRDVk16M2FuSnNqb3AzUGtpM1BraXg1TlRCNlJLZFRvMkZsRzU4a1c1OGtWL0pFaGRXTzJIQWxWNGdzaGtPaEtYOHJGK3RyZmpSeTFJd3g0RzJrUXlTUlIvRjNYREVudHl5Zjd0d2lzTmZTbHlJRk53ZytZU0dpTkE2cXV0ZFhPRVRHN0UzN0IrM0tOTDdlMDZ0UGNYeDk1WHRDQ1cwSUpiUWdrQmdBdU9QMGF4MEpQRXRvUVMyaEJMYUVFbU9NNCt4cnRXcUxGc29WYWhtVXhsbDZXRXZ3eDZVa0l6ZkM1ZUdQS1c4cURPcWRkR3JYUnExMGF0ZEdyWFJxMTBhdGRHclhScTEwYW5NdEN0S1RlWUI3V2s5Skg4a2MvMDMvOFFBSFJFQUFnSUNBd0VBQUFBQUFBQUFBQUFBQUFFUkVnSVFJQ0V4VVAvYUFBZ0JBd0VCUHdINnl4azZSS0Y3cVVTaDR6eWZTMURFbVpFUFdMTXVDOU10V1JZYmdzaHVSZW1YbkZPU3BWaXhZMUpWbFdKUU56eXNXTEZpeFlibjdILy94QUF1RVFBQkF3RUZCZ1VGQVFBQUFBQUFBQUFDQUFFREJBVVJGU0ZTRWhRZ01VRlJFeUl5WVlFUUpGQng4RFAvMmdBSUFRSUJBVDhCL0xWbGQ0UGtqNXI3aXB6emRSMGxReHM3aXFyL0FBUDlLT001WDJRelc1MU9sYnJVam5zdW9LK1dGN2p6WlJtTWdzWTh1Q1UvQ2pjK3lwWXQ2bXVMOXVoRmhhNFZ2VUd0bFUxTUpRa3pFck9rR09WM043c2x2Y0d0a0VvUytoNzFhRk14ZzhyYzJWbFN2ZThYendWWTdVQnN5c3MyR1oyZnI5TUxtN3QvZkNrczZXTVhOM2JKUVFGVUZzQXNMbTd0L2ZDb2FZNlpuWStxcXpZSUNkMVpZM3pYKzNEVlU1VXNtMFBMb29iVUc2NlZsaWNIdXA3UWhraUlHNnFobkNua2NqN0xFNFBkUGFrSFM5Vk5VZFdWM1RzcUttM2VQemMzNFNGamJaSkhaY1JaaTl5d2tkYXdrZGF3a2Rhd2tkYXdrTlNocElvUFMyZjVqLy9FQUVNUUFBRURBZ0FIQ3dvRUJRVUFBQUFBQUFFQ0F3UUFFUkFTRXlFeFFaTUZJQ0lqTXpWUllaR2gwUlF3TWpSU1luR0J3ZUZDYzdHeVUzQ1NzL0JVY25TQ3d2L2FBQWdCQVFBR1B3TCtadDJFWktNRHdwRG5vL0xwb0Y5czdvUGUwOTZQOU5XWWlNTWpvUTJCWEpwN0szV0lRa0h5VnpWN3VBQWdFWkJlbjVWeWFleXVUVDJWeWFleXVUVDJWeWFleXJQd283dzk5b0dsS2loVzU3M1MzblIvU2ZwVnBUZU15bzhCOXZPaFhtaTlJdW5jNWs4TWo4WjlrVWhsbHRMVFNCWktFaXdGRitVK2lPMFB4dUt0UlMwSkVyM20yN0R2SXIxS1oySjhhbXcyNGtwSzMyVk5ncXhiQzQrT0Fma0wrbUI2QTlGa09PTld1cEdMYk9MOVBYWHFVenNUNDE2bE03RStOZXBUT3hQalFTNFg0blc2M203cjBsNk84aDlwV2hiYXJpbkk4bHBMekxnc3BDcTRGM0lMMmRsdzZ2ZFBYNWhtT3lNWjExWVFrZFpxUEJZOUZwTmlmYU9zMDVNZjRYNFcyOWExZEZHUk1keHZaUVBSUU9nRGVqOGhmMHdUL2czL0FHMDcwUFJYT0xQS01xOUZZL3pYVE0yTWVBdlNrNlVuV0RVaUV1Mk1vWGJWN0s5UnBUYXhpclNiRUhVZCswdFF1STdhbmZwOWNIa1FQRXcwZ1c5NDV6OU1JVUJIc2MvSzFvamJXdEViYTBKY3NNNUhKcVR3RjNPQ1ZOaWhuSU9ZbUxqdVdPWklGYUkyMXJSRzJ0T3Z1Q1BpTnBLMVdjMURDL3VjbzhWSVJqcEh2ajdmcGduQklzbDBoNGZNWisrKy9tOVBrMy9vWU4xY2JUbHpoYS8yanpHNlAvSGMvYWNPNXVMMHIvWXJBbTMrbVJmdE8vanBVYkprSVV6OVIzZ1lFYm9KVHhNdE9jKytNMzZXd2hJbml3emNpMzRWemdOZzM0VnpnTmczNFVJczJYbG1Na3BXTGswcHovSVlKY1NITXlVZEdKaXB5U0RwUURyRmM0RFlOK0ZjNERZTitGT011VGdwdHhKU29aRkdnL0xESjNVV25pbVU1SkI2VkhUM2ZyZzNRV2szUTJySkQvcUxIdnZ2MjNtbFlqamFncEtocUlxUE5hdGRZc3RQc3IxaW5ZVWtjQmVoUTBvVnFJb3R5bTd0RThXK24wRi81MGIwZmtMK21DZjhHLzdhZDZBeWd0UlFlTWtxSEJIdzZUVE1PS25GWmFGdXM5WnArVVNNc1JpTXA2VjZ2R2lwUnVvNXlUNWc0MTNJTHZMTkQ5dzY2Ymt4WFV2TUxGMHFUU21ubTB1dHEwb1dMZzBWQ0txT1QvQmNJN3EweXRyOXEweXRyOXEweXRyOXE4c2lGL0s0cFR4aTdqOU1EczZTWDhzNWErSXV3ekMzUjFWcGxiWDdWcGxiWDdWcGxiWDdVRmVSbVFvZngxbFhkb3BLRzBKYlFuTUVwRmdLY2xUSFF5eWpXZGZVS3l5cnR4bTh6TFhzanArUG1zZUU5WkI5TmxlZEN2bFFUUGJYQWQxbTJPanV6MWR2ZFNJZW92QUd1Y0l1MlRYT0VYYkpybkNMdGsxemhGMnlhNXdpN1pOYzRSZHNtdWNJdTJUWE9FWGJKcm5DTHRrMWQzZFNJT29PaFI3QlJUdWN5dWE3cVd2Z0k4YXkwNTdIdDZMWXpJUjhCL003LzhRQUtCQUJBQUVCQlFnREFRRUFBQUFBQUFBQUFSRUFJVEZCVVdFUWNZR1JvY0h3OFNBdzBiRncvOW9BQ0FFQkFBRS9JZjhBVFlqbzRhRFRNME9NVVk2M3ZFdEJaRythQkZ1RCtoWHE5RzVFQ0hOc3U1YUJOUFY2OVhyMWV2VjY5WHBjNVlmMnltWk8wUloxVCtpZ1o0VGdoT0RvL1VUQnU2Ti9OL1hBMzBhNDBTT1FWZXFyQWQyL1NvTUhndXJPbXhHRWhucENBdVczNFVTTHFobGhNU1BnUm8wYnB0c3QzTzZYYWFvYmlWQ0VKTWllWTBERTAzaG0wSFU0eDg5ZHFYSkJSbUVTRGJpdXF5MWJwaXdNTHVIOVhBR2wzT1c3Y3N2NjQvWlJ3VnNvU3VPTStZcWZ1ZVFmTkZDcUp2d3ZVNkxUKzI3K0JoUG5aa0gzT3c5WjhOaFplaGFZbkpIRGJBNW9QQlhuUHl2T2ZsRTJERzh4RmthYkhtUkdJR3NqTWE4NStWNXo4cS9VUEZnbHcwMnBOa1pmSjN6NU5uSHZJQ2ZtRkIzVzYzN2JEYVBNNVlkSTIrV3krdFFGYkp0TjF0c1diY3g2Zm5QQXBYTk9vTGpzVEJEQnVCRWNRdWUwb1lJR0Z0b1VKMnJCTE1pTFFkaG5BcFlNbGFqZXUxQ2hpRmdYa0lTekx0U2dKZGtyRzdZd3dnNFowSHpOQXZSaUpIblNoQ0MyNjcvUkdzY3VYWWMwZnBqVGxMTWRodndkVnYyVWNJTkJyQ2NUK0E0eFZqMWxONWptSzIxYXRFV01kQmUwS2Z3MlFsWDZISU9oZURMUmRic2tuRHFLeC9IU2lKOUJadFJxMHk4eFBOSWNDdlNxZWxVOUtvYlFOaElHK3lHekRkZjdBRUdnVjZWVDBxbnBWTU5JRWp1Y1NnREZEZ1pBVVNXcmJ4WUJpdVZMUWxudkVhc2VCaDlTK1laNWg1dFNHc0RkRkx4c09YR2pVNS9CRm12UHU5ZWZkNjgrNzE1OTNyejd2WG4zZXZQdTllZmQ2OCs3MHlpbjY0TFdCdVFSMXR0Ym9OOVNVNlZHV0J2di93Qk8vOW9BREFNQkFBSUFBd0FBQUJENzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc2b01qZzR4dlAzNzc2bXB6eXl2emVwcjc3NzNqNVQvejVlL3o3NzY0cHY4QXZxLzZJRysrKyt2Yy93RC9BUDhBdGY4QXZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnYveEFBZUVRRUFBZ0VGQVFFQUFBQUFBQUFBQUFBQkFCRXhFQ0FoVVdGQlVQL2FBQWdCQXdFQlB4RDliTWRCcXpNRVVNejJsbjJCaEVScDJCYlVXQ1puaExCeEFweFBLSW1aUTFEOTJjUkR4ckFXb0F0MGl3aHNib0RUSHJwQVJqQ2pXaG01dEdvTXpMOVMvVXYxTDlTL1VYTDlqLy9FQUNnUkFRQUJBUVVJQXdFQkFBQUFBQUFBQUFFQUVTRkJZWEhoSURGUmdaR2hzZEhCOFBGUUVQL2FBQWdCQWdFQlB4RCtzYjMxOXVOWURvN3RQUkZVMEU4NXp2a29kVnZtTjdlNCtLdEpVKzN3N3pKK0dLelZiR0dSWXRWcVcvVEZnWXFCZFAzSUM5VWFGWVhRVkZ1WlAxSVVvMGNJWE5OOWlZNVFEbXlsSGgrT213M0JIaTJYQVN6T3g4ZjR1MTdqRkhrRmJGOVIrZ0lWdDVGdzhaKzR3cGcxRzZ2eUV2QkJPYlpFVWJoZVRZUVNqTngycXE0WVpuZVVWZGVKZnl1bjFHc3JRMUNGbXNxRlVVV1pucWZVYXdCVUxrZTRNSlM0TGJmbGpaeWNPQnk4N0wwS2pjeHFxd2J6dmIzbUs2YXpGZE5aaXVtc3hYVFdGUzE5Q1czbkcxMDVmMlAveEFBbUVBRUFBUU1EQkFNQUF3RUFBQUFBQUFBQkVRQWhNUkJCWVNCUmNZRXd3ZkJ3a2FIUi85b0FDQUVCQUFFL0VQNU52Y1U0WmtpNStBdEtRMEhyQlo3cWVlSnZtaml0QU5lZ3I5TjlVekdNQWpzc2FTR2t4QjZOZnB2cXYwMzFYNmI2cjlOOVYrbStxUE1VSnIvU2l4OCtub2c0b3FtQlBia3NER05zYktTRS9FUzB4VEhBMkZrU3VnRUlRU1dYaGNBc0ZXVmZUUjJDdDFGaEs3RlRKdEFwZUhTREN6SjNmdWhNRVRBdkhRME9MbTlsbzFnREprZWhnd1lORCt4RStXRGxBNzBicDU3b2NJa201a3B0M2Z0ckNNSUlSQkVRYVAwS1V3WFdXdWtPSWt2RDRIRmR3ZFBnbEwxakF1SlYrWStDWUxCVS9pd09BVjJ4WmdNaERBTVlQajFCdElnWWx2QktXL3lORkpCRzJwc20xREE5Z29xd2gyR09BWVQwa0paR25pa0p3MUIySndaQnZSaWJlaEFnN2lKMWx0aWtraUw4Z2prYU1CRlEvd0JuZndjKzdyZFBhWXNKSi92WFBObGdkOEJoYTdSOXNSSjNWSkhLeEd1ZVpGYjFkREVac0syckx6MFpDaW8ya203OGVoQ1Q0RVN0Kyt2S3FKTjd2K2s2QkxKVGRPSFdmaDl2eDNzYlJXZTQ5YU5PRVFoK2R1c2FOUzBFSS9RT1JveUlTbDNuMmhYZDR1b0dIeXFBUUd1VEphRkd6YTdZWkxhWTBtV2Z0ZHcwbDExekJiV1RKdjFEc3NuQ2twSkVkU0lDSmFXUzQ0ZkhReXIrR1RFbnRNOTllTTVkRERjZ0gxUXhFUzVLQ2IydUp6dUZNcVNEUzhTbkNMd2lsbFRBYkNyc283UE5oeVF2eHRGQktCUWhuc0xlRzNKQzlaejhJVjNkQkxLZTdZQ0NwckxSYXZGbTkza1RLVWdYTWtKbFYzVlorQis2c1RGWURZRmJXRGRGQWJBcE1HNG1RYktCRVJCSzRGbnVpRWllU21BRmRLOEo0UUhRelpzek5WeXkvQmNzYjZFbW1DUEo4Sk1pK1o2R2JOblBNMCt4Y3oyRkRVS0JkZ0FBNEtrYUNmT3dDOGFBU3RYcVk2U3Q0Yk1Zb3hBU0IrSjlnd1RGNWlJV21BdE1TVkRZb0tKM0N1ZG1KM1pvRWVKZ2J5WWV6NHYvQVA4QS93RC9BUDhBL3dEL0FQZ2dSTDZ4UWVpb2IwUlYvQmI4anNvQTNiRW1Nall3SlVxQ1ZqK1R2Ly9aIn0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTA0LTE2In1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wNC0xNiJ9LHsiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjE4YzA4ZDgyM2UyOTQyOWM5OTNkNDZlYzM3YmVkYjcxNDM0ZWZjZmYiXSwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiMThjMDhkODIzZTI5NDI5Yzk5M2Q0NmVjMzdiZWRiNzE0MzRlZmNmZiJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiRW50ZXJwcmlzZSBTZWN1cml0eSBLZXkgU2VyaWVzIHdpdGggTkZDIChFbnRlcnByaXNlIFByb2ZpbGUpIn0sImRlc2NyaXB0aW9uIjoiRW50ZXJwcmlzZSBTZWN1cml0eSBLZXkgU2VyaWVzIHdpdGggTkZDIChFbnRlcnByaXNlIFByb2ZpbGUpIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTcyOCwicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoyfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCIsInJlbW90ZV9oYW5kbGUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURQakNDQWlhZ0F3SUJBZ0lVWHplaUVESkVPVHQxNEY1bjBvNlpmL2JCd2lVd0RRWUpLb1pJaHZjTkFRRU5CUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTVo2L1R4TThySVQrRWFvUHZHODFvbnRNT28vMm1RMlJCd0pIUzBRWmN4VmFOWHZsMTJMVWhCWjVMbWlCU2NJWmQxUm54MW9kNTg1aCsvZGhLN2hFbTdKQUFMa0tLdHMxZk81M0tHTkxadWp6NWgzd0duY3I0aHlLRjBHNzRiL1UzSzloRTVtR05ENnpxWWNoQ1JBSGZyWU1ZUkRGNFlMMFg0RDVuR2R4dnBwQXk2bmtFbXRXbU1ud08zaTBUQXVjc3JiRTQ4NUh2R000cjBWcGdWZEpwdmdRamlUSkNUSXErRDM1aHd0VDhRREl2K25HdnBjeWk1d2NJZkNrenlDaW1KdWtoWXk2S29xTk1LUUVkcE5pU092V3lETVRNdDFid0N2RXpwdzkxdSttc1V0NHJqMGVmbk85czBaT3dkd01SRG5INHhnVWw1Wkx3cnJQa2ZDMS8wQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQjhHQTFVZEl3UVlNQmFBRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRTXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJEUVVBQTRJQkFRQzNJVy9zZ0I5cFo4YXBKTmp4dUdvWCtGa0lMa3Mwd01OcmRYTC9jb1V2c3JoenN2bDZtZVBNcmJHSkJ5SjFYbnF1QjVzZ2NSRU5GeGRRRm1hM21pbzhVcGYxb3dNMVpyZVhySjBtQURHMkJwbHFiSm54aXlZYStSMTFyZUlGVFdlSWhNTmNaS3NEWnJGQXlQdUZqQ1dTUXZKbU5XZTltRlJZRmdOaFhKS2tYSWI1SDFYZ0VEbHdpZWRZUk03Vm9sQk5sbGQ2cFJGS2xYOHVzdDZPVE1PZUFEbDJ4TkYwbTFMVGhTZGV1WHZEeUMxZzkrSUxmejNTNk9JWWdjM2lyb1JjRkQzNTRnN3JLZnU2N3FGQXc5Z0M0eWkweEJUUHJZOTVyaDQvSHFhVVlDQS9MOGxkUms2SDdYazM1RCtXVnBtcTJTaC94VDVIaUZ1aGY0d0piMGJLIiwiTUlJRFNqQ0NBaktnQXdJQkFnSVVUbmJiR0lSMk5IdnpxSUtGQWVRd0cxWEJpczB3RFFZSktvWklodmNOQVFFTEJRQXdMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3SUJjTk1qUXhNakF4TURBd01EQXdXaGdQT1RrNU9URXlNekV5TXpVNU5UbGFNQ1l4SkRBaUJnTlZCQU1NRzFsMVltbGpieUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRUVnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBT3NYajNrMDRCYW40VFlkdFpLcUQvT1BKeHlEeWFQbUNCVUZVaWFaSWdUdGVabmozWDI1RGhncFpaWHNDNEQweWRJY3JsQTZ3TlVJbk9STC9MOXpCYlRFSU1BVk1HbzZnN1VLQW1iMk1GNkFIYm5oWUpkOWVpa3VwVk5XU2hITllOYzRHQmRPMVlONkFmVXF2SmhIYmUzVjRTTk1QbUJSRUtKUFZ6N1Rod2dtZ2dUZThXczJLMC93c3F2MndTRTdwYkNCc1VaaElYNTFiWk0zcHFEd0pQVG1SRkV2dDAvNnRHNWVPOEYzajE0T1hxZkVobWpuMVZ2eEtEWVFPTFpBeEN3d2dDMFA0Q2RmV3YzeThQU1I4STM1NGhPMVkrR3pOanZJcVgzOE5LTHl3dUlZSEZlck94Tmx4RU1CdkZoWUJ1UnVZQWtrZ1VhUHFONlVCaHNJTHJzQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZDQ29SSGhpeU5uYm5YUldJTDZaQlhvQlg5WVRNQjhHQTFVZEl3UVlNQmFBRkNBb1VDRWJwRnBiNkZQTG5aM0Y1UHhzTDNvZk1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQ1FGYWZKSTEvNVdnOUNFRWltRTFSUDU0UmdRd1ROVE9PUXNMQUNUZStySXRsRlF6QzlaRGhyVjgyOHlYN2p6eStBQXNwM2l6SzdUMXRoMmRsN20rdHUwc3cyUGEvb2xjMDJudDZQeUl3MzQ4Z2FIemhJMSswS0U0NXF4dkZEZUwybE14YlBmQ1l2eUVFYVl6amlRRUxVNTk1MXBYR1d5S01hLzRmTHRPK1pLT1hoTXVWZXE0clhEUEk1NFc2SkhPaUFhaUtkaXcrNWUzYzJrdC9qRklRdE02dk1YZzlMTkZ6ZGpFVE50MjBWWDlRZXZScEZaZnVjTUc5d0NhUURvRmxQenBUTUpLaFBldi9pbUptWlloS2ZyMGxMY2VtdHFqSXhMQW9xWmRPWWZIQmc2K3ZBY2RQSS9pYXVHcFVBdjdYK1VLTm1Ed2paMkJhSDRzTHdoQjJtIiwiTUlJRFNqQ0NBaktnQXdJQkFnSVVSMzhtcTI2U2Yyc3pWVjJCZEc2V0VON2t1V1V3RFFZSktvWklodmNOQVFFTEJRQXdMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3SUJjTk1qUXhNakF4TURBd01EQXdXaGdQT1RrNU9URXlNekV5TXpVNU5UbGFNQ1l4SkRBaUJnTlZCQU1NRzFsMVltbGpieUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRUlnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTlkwV2I5b1BvUm9Lb1F5V1BhSnB6MTF2cldUZzZ6VHRtTmoyVm9LUm55dktHUnFwemI4M3c1bDZZQTk2VVlrWUJEUVAwaWxPMkRQZTZ3V3FWUjV6RGZSemRjSDhiaCtMN2RHR3ZhZTZoUlRaaGtGa0NwWERzNEhjY2tuckRmOEZDbEo3SGUzOUpmNDIvRzFRbTJ6ejlXV21yUFh0Z2lLL3gwNUdqc1FmR3VERzF6ZjVRVFVVaWU4bHd5bUszVGZkT3ZOZWVKQUFQZTJwbjdJdGZSYityVnJOV2lEemxSbjJ2Tm5aMndQbzR3SC9XSjZkaFhaRytyTVdUK2E2Qm9jZzFVZkl3NmtkdW5HNGJUcFp6c3ZhY0ZZeVIwbXBmK0RlT25wU1dBbXl3SldIdlRsZjJZWHhGeWVYY1RBQ2RRbGNNTkdKMlZoWlE0OHh0UDUvUkJQLzhrQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZDaHk0Mm9raXFjVFMxaXFhL0hSV2prQm40SC9NQjhHQTFVZEl3UVlNQmFBRk9xM1FwQ2VESHRrZXR0VWZBTzZmRTZmMktGaE1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQW4rUkhJUGJ0TUVETmRUMWc4SC9SaXRBa1VkTGdBdDF0V0dXbmxqOWtuYnY0LzRHbFg3QzlwNDVlZlBPOS9hWkw2T1YxWFJLQmk2S210Qlc1SzdudVlFbk14LzVCcUJTYkxUN3JoZHVDNDlUQmVNYjlQSGRYc1RsU1ZOWWVmcjFkR2lkcjRqMHhWQlFMYjFya25EQWJkV0R6S2Z2bmF5S084RnJ3ZTdIeDg0M01HL3JKK2MwWHJ1VXZiZlZUQ0hMaUlXaE03b05EaEw4eG9iNnhVbzlLTEtjU0wrSXRZc08zLzlXYjhROUdqc3FMNEZYc0RjRzFTYVloN0twZnVNbU9peHF6SlpPMm5JaWNQWVJnMUkyU3VpVWZZTzcwdG1kSGNibCtrU1FtU1l0N3JxNHZpSUxnMkd4M2o5cklUdVdUamJhVWFTU1F4Z09tTVNIdXl6TUFDIiwiTUlJRFNEQ0NBakNnQXdJQkFnSVVVY21NWHpSSUZPZ0dUSzBUYjNnRXVaWVprQkl3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRRG01NTViV1k5V1crdE9ZMHJJV0hsZGgrYU5hbm9DWkNGaDdHazNZWnJRbVBVdzBoa1NHNnFZSFF0UCtmWnlTMzNWRXJ2ZytCUXFubXVtZ05oZnhGcmt3RVpFTGVpZEJjQzhDNEFnNG5xcWlQV3B6c3ZJMTdOY3hZbEluTE5MRmNaWS8rZ09pTjZaT1RpaE81L3ZCWk1iajlyaWFBY3FsaVltTkdKUGdUY01HYUVBeU16RU1OeTJubTZFcCtwalA1YUY2Z2kyMXQvVVFGc3VKMWoyUmoveW5NL1NkUnQrZWNhbDVPWW90eEhrRmJMOXZ2djJBMk92NUlUWkNsdzRiT1M5bnB5cFFpbU9aNVFBWXl0bVlhUXBXbC9wTVl6NnpTajhScWtWRE5FSkdxTmZUS0EyaXZMWXdYNmxTdHRNUGFwZzBKODRsOVgwdm9WTi9GcFM0VkNWQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJRZ0tGQWhHNlJhVytoVHk1MmR4ZVQ4YkM5Nkh6QWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQVlNemdMckpMSXIwT292UW5BWnJSSUd1YWJpSFNVS1NtYkxSV3BSa1dlQXRzQ2hERUhwWGNKL2JnRE5LWVdvSHFROHhSVWpCNEN5ZXBZZXZjM1lsckc4bzd6SHhwZlZjYW9MNVNldUprekh4S240YlRhU3A5K012d2FtbnA2NGtaTWlOYkZMa25mUDlrWUtvUkhrTVdoZVJKMVVzUDF6NFNjbWtDZUlMZnNNczZ2cW92cWpXQ2xGc0pwQmNzbHVZSFdGN2JCSjFuNFJ3ZytBVEVvcFk0SWdHdjZadndjK0E5citBVDJocXBvU2tZb0FsK0FOWXdnc2xPZjlzSmUwVitUQTlZWS9VbGFCbVBQVGQwLy9yOXd2Y2VQV1prUGpLb0FDL3pVTmhmRGJoNExWOEdIczNseVgyWG9tTC9MTmM4Sll6eUlhREVoR1F2ZW9QaGgvdHIxZz09IiwiTUlJRFNEQ0NBakNnQXdJQkFnSVVEcUVSdys0Um5HU2dneGdVZXdKRkVQRFJaM1l3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRREk3WG5IK1p2RHdNQ1FVOE04WmVWNXFzY3VibHZWWWFhUnQzWWJheG45Z29kTHg1c3dIMGxYcmRnamg1aDdGcFZnQ2dZWVg3RTRibDF2YnpVTGVtck1XVDhOM1dNR1VlOFFBSmJCZWlvVjdXL0UraFRaUC8wU0tKVmEzZXdLQm82VUxlTW5mUVpEclZPUkFrOHdUTHEydjVMbGo1dk1qN0p0T290S2E5SjduSFM4a0xtelhYU2FqMFN3RVBoNU9BWlVUTlY0enMxYnZvVEFRUVdyTDQvSjlRdUt0NldDRkU1blVOaVJRY0ViVkY4bWxxSzJieDJ6Nm9rVmx0eURWTEN4WWJwVVRFTHZZMXVzUjNEVEdQVW9JQ2xPbTRjcnB3bkRSTFZIdmpZZVBHQkIvL3BFeXp4QS9nY1NjeGp3YUgxWlV3OWJuU2JIeXVyS3FiVGExS3ZqQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJUcXQwS1FuZ3g3WkhyYlZId0R1bnhPbjlpaFlUQWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQXFRYUNXTXhUR3FWVlg3U2s3a2tKbVV1ZVRTWUt1VTYrS0JCU2d3SVJubHc5SzdIZTFJcHhaMGhkd3BQTmlrS2ptY3lGZ0ZQemhJbXdISmd4eHVUOTBQdzN2WU9kY0pKTmt0RGczNVBYT2Z6U24xNWNGQXgxUk8wbVBUbUliOGRYaUVXT3B6b1h2ZHdYRE00MVphQ0RZTVQ3dzRJUXRNeXZFN3hVQlpxMmJqdEFucS9ORFVBN2JlNEg4SDNpcEMrLytOS2xVcmNVaCtqNDhLNjdXSTB1MW02RmVRdWVCQTduMDZqODI1cnFEcXNhTHM5VGI3S0FIQXc4UG1yV2FOUEcya2pLZXJ4UEVmZWNpdmxGYXdwMlJXWnZ4clZ0bjNUVjJTQnh5Q0pDa1hzTkQwNWRDRXJWSFNKSXMrQmR0VFZOWTlBd3R5UG1ueWIwdjRtU1R6dldkdz09IiwiTUlJRFJ6Q0NBakdnQXdJQkFnSVVleDluVDl2d1pOWFM0ODNMZGlZR2Z3MlNqU293Q3dZSktvWklodmNOQVFFTE1DNHhMREFxQmdOVkJBTU1JMWwxWW1samJ5QkJkSFJsYzNSaGRHbHZiaUJKYm5SbGNtMWxaR2xoZEdVZ1FpQXhNQ0FYRFRJMU1EZ3dNVEF3TURBd01Gb1lEems1T1RreE1qTXhNak0xT1RVNVdqQW5NU1V3SXdZRFZRUUREQnhaZFdKcFkyOGdSa2xFVHlCQmRIUmxjM1JoZEdsdmJpQkNNaUF4TUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUF1MU1ldm55OWR5TzlaVUMzOVNvTWhMY1IvRFhydEYvY2lNMTJ0Y2l5MkVYQVo2TWtyaXZWdENmRVZNOVg2SVNURW5CUDZ1U1lZb3Y2cHB2Nk82SmgyTkhtWW00dytKblM0Vm5DUFU3bUhBTWZWSTJNR1RUTVZPZXcweFVzRzdzSVNJa0lEVUJtdWs4WUs5YzV6aWM5K3ZGUUdMSWtzZFhPNWlWRklnTkc1M2NHWEQ0Wkxab0FQaXUwUEVvenhBcVlJYUk0Z3hLaE9BM1M4L1c4bUlXc3U2b2Z5ajRHdmtGRzZaN2t5RjMxMDdQN213RkhMckkzRU5hUFdNT0ZjVGFHYTBkdysvdlZSd2pSY0VaQlZzdXVULzg3Y2tTczBhNXBrdDN2WkJsYVllVDhwelNyZVY3bW93Y0lNOTBMMmlhQVRsUDBueG1hRTZuT3lUYm9qRlZsMndJREFRQUJvMll3WkRBZEJnTlZIUTRFRmdRVVNYRWgzc2EzYnREdXJtNE1NL0M3UzFsUnV1WXdId1lEVlIwakJCZ3dGb0FVNnJkQ2tKNE1lMlI2MjFSOEE3cDhUcC9Zb1dFd0VnWURWUjBUQVFIL0JBZ3dCZ0VCL3dJQkFEQU9CZ05WSFE4QkFmOEVCQU1DQVlZd0N3WUpLb1pJaHZjTkFRRUxBNElCQVFCNUdjM2hhZnRwN2hLc0Vac28raS9aNW5SdXFkbXpHMldDbFVvUlVxYmFQeWdsbkpEaktSL2tmZ09sNmliYkYvenRobTNLbVhRN0hjRElQMnhNZEc3VTJMMmltYkpRSHFQZi9oMkhxb2piNHJaZ3VlKzZXNGt0U1I1ZWxSOUwxcllxRS9TR1lNNGlFS29WUVN2N1JUMXJ4SWVXaUtzdy9WeHhpL1FPbnN4M0Y3eDgwQ0NZZ0I0RTN5UXg4VlRXNDQwaFRFd1RBMWVNSE9peDMydFB0eXlISWE4UFZWSWZWcEhRSkJhTVZ2djUwOFVFandrYlUycm5qZnpvU1ROUzlBNWpVUThtQlN2ZTk1cmpCMGRvOThFVStEeGRCcVgyK0g2aTV3bElDRmd6aGR6Y3NuZTloR0tUNmx6VFg0Y0lkSnNyWTIreGxlSzBGRlF5NmxHRVZMRWUiXSwiaWNvbiI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsImljb25EYXJrIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwicHJvdmlkZXJMb2dvTGlnaHQiOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJwcm92aWRlckxvZ29EYXJrIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09In0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjYtMDQtMjUiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NzI4LCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IkVudGVycHJpc2UgU2VjdXJpdHkgS2V5IFNlcmllcyB3aXRoIE5GQyAoRW50ZXJwcmlzZSBQcm9maWxlKSIsImNlcnRpZmljYXRlTnVtYmVyIjoiVTJGMTAwMDIwMjYwNDI1MDA1IiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25Qcm9maWxlcyI6WyJlbnRlcnByaXNlIl0sImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjYtMDQtMjUiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NzI4fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI2LTA1LTAxIn0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiZDk0N2E1NjNhNWU4OGVjMmNkMjYzMDQzMTQ1NjdhOTE5ODlmMTU1MSIsIjM1NWY3YzBhZDUyNDkzMDIzZDc1MjFiYzUxMGEwOTY2OGQ0YTYwNTEiLCI2ZDFlMmZiZDFmZWQ3Mzc3MWIwMzlhOGJhNDQ0NDU2MDIxYjJlNDg0IiwiZDc1ZTdiZjliMjQ0NGI0NjY5ODgyN2QxYmUyZTFiOGY3ODFjYzRhNCJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyJkOTQ3YTU2M2E1ZTg4ZWMyY2QyNjMwNDMxNDU2N2E5MTk4OWYxNTUxIiwiMzU1ZjdjMGFkNTI0OTMwMjNkNzUyMWJjNTEwYTA5NjY4ZDRhNjA1MSIsIjZkMWUyZmJkMWZlZDczNzcxYjAzOWE4YmE0NDQ0NTYwMjFiMmU0ODQiLCJkNzVlN2JmOWIyNDQ0YjQ2Njk4ODI3ZDFiZTJlMWI4Zjc4MWNjNGE0Il0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IDUgRklQUyBTZXJpZXMgd2l0aCBORkMifSwiZGVzY3JpcHRpb24iOiJZdWJpS2V5IDUgRklQUyBTZXJpZXMgd2l0aCBORkMiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI4NzA3LCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50IiwicmVtb3RlX2hhbmRsZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJREhqQ0NBZ2FnQXdJQkFnSUVHMEJUOXpBTkJna3Foa2lHOXcwQkFRc0ZBREF1TVN3d0tnWURWUVFERXlOWmRXSnBZMjhnVlRKR0lGSnZiM1FnUTBFZ1UyVnlhV0ZzSURRMU56SXdNRFl6TVRBZ0Z3MHhOREE0TURFd01EQXdNREJhR0E4eU1EVXdNRGt3TkRBd01EQXdNRm93TGpFc01Db0dBMVVFQXhNaldYVmlhV052SUZVeVJpQlNiMjkwSUVOQklGTmxjbWxoYkNBME5UY3lNREEyTXpFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUUMvandZdWhCVmxxYWlZV0VNc3JXRmlzZ0orUHRNOTFlU3JwSTRUSzdVNTNtd0NJYXdTREh5OHZVbWs1TjJLQWo5YWJ2VDlOUDVTTVMxaFFpM3VzeG9ZR29uWFFnZk82Wlh5VUE5YStLQWtxZEZuQm5seXVnU2VDT2VwOEVkWkZmc2FSRnRNamt3ejVHY3oyUHk0dklZdkNkTUhQdHdhejBiVnV6bmV1ZUlFejZUblFqRTYzUmR0Mnpid25lYndURzVaeWJlV1N3Ynp5K0JKMzRaSGNVaFBBWTg5eUpRWHVFMEl6TVpGY0VCYlBOUmJXRUNSS2dqcS8vcVQ5bm1ET0ZWbFNSQ3Qyd2lxUFN6bHV3bit2K3N1UUVCc1VqVEdNRWQyNXRLWFhUa05XMjF3SVdieGVTeVVvVFh3THZHUzZ4bHdRU2dOcGsycVhZd2Y4aVhnN1ZXWkFnTUJBQUdqUWpCQU1CMEdBMVVkRGdRV0JCUWdJdnowYk5HSmhqZ3BUb2tzeUtwUDl4djlvREFQQmdOVkhSTUVDREFHQVFIL0FnRUFNQTRHQTFVZER3RUIvd1FFQXdJQkJqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFqdmp1T01EU2ErSlhGQ0x5QktzeWNYdEJWWnNKNFVlM0xiYUVzUFk0TVlOL2hJUTVaTTVwN0VqZmNuTUc0Q3RZa05zZk5IYzBBaEJMZHE0NXJuVDg3cS82TzN2VUV0Tk1hZmJoVTZrdGhYN1krOVhGTjlOcG1ZeHIrZWtWWTV4T3hpOGg5SkRJZ29NUDRWQjF1UzBhdW5MMUlHcXJOb29MOW1tRm5MMmtMVlZlZTYvVlI2QzUrS1NUQ01DV3BwTXVKSVpJSTJ2OW80ZGtvWjhZN1FSalFsTGZZemQzcUd0S2J3N3hhRjFVc0cvNXhVYi9CdHdiMlgyZzRJbnBpQi95dC8zQ3BRWHBpV1gvSzRtQnZVS2lHbjA1WnNxZVkxZ3g0ZzB4TEJxY1U5cHNteVB6SytWc2d3MmplUlE1SmxLRHlxRTBoZWJmQzF0dkZ1MENDckpGY3c9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFmQ0FZQUFBQ0dWcytNQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUhZWUFBQjJHQVYyaUU0RUFBQWJOU1VSQlZGaEhwVmQ3VE5WMUZELzNkNTl3ZVFTSWdTOUFRQVhjRkxBUVppOWZwZVZ6MXRZL1dUWnI1V3hwYzdXNWtuTGE1akkzWjg1c3JTMm5NMnNqdFd3WlM3SVVINEg0eENuRVF4NERBWkY3NFY3dXM4ODV2OS9sSW5CdlZKL0I0UHY5bnUvNW51LzVudk01NTZmekEvUXYwSGIvSXJYM1ZGS1BvNDVjbm00aW5VSVdZd0xGUm1aUVV1d2pGRy9OMWlSSGgxRVowTlJWUnVkcXQxQmQrMm5TS3lTL09oeXMwK2xrM2UvM2tROXF2RDRaVXRhNFZWU1V1WTBlaXB5aVRoQWZvY29PUlZnRHV1dzNxS1JpQWQzcmJjRXRqVGpZSW9mNldhSHNDbXpWUFdDTXgrY2doOHRMcVdNS2FNV3NVakxxbzJSdEpJUTBvT3ptZXJwUXU0ZXNaZ3NPTmtHeEg3ZDBrZHZUVDE3czRPTVU3Vkk4WmhqZ0dhTStBcTlpRU51OFBpZjF1ZHowN013dktXZjhHbFZvQ0VZMDRQQzVXZFRhWFlGYlI4dk52TDUrM0tnZmI1eE5NeWE5UmFtSml5bmFNbEdUVnRGbHI2YmE5dStwcW5FWDR1TXVSUmdqU1lFaHJON3V0RkZlNmxxYWw3TmZrdzVpbUFHSHluUHBiazhWbVkweHN0bnB0bEZDVkNZdHpUdUJOODNRcE1MalR0ZXZkUHpTVW5KN2U4bWtqeFozOWZYYktEZmxkWnFidlUrVFVnR25CVkY2ZlEyaVBIZzRXMTZVV1V3dnpiazE2c01aRStQbjBwdno3SlNldUF5ZXM4bGNwQ21hS3VvL3ArcVdyMlVjd0lBSFdydlAwWUV6aFhBdExBYnNzSGhwN2lHYW12eWlqUDhyeXFyWFVXWDlYb293eHlBdWZOQnJwNDNQT0JGWFpsa2Y4TURSaXFjcHlvd0F3cHV6MngrZld2ei9EdGRlOXNtc3p5Z3RjUjZDMXdiZHpCbDZPbHE1V05ZWTRvR2F0aEpNcmtURXgwakFSU0hBVnMrNXJZa1FOWGIrUWdmUExzUTZnWHlJbnNyZVFmbXBtN1JWRllmTDg2bjFmaVVPa1l2U2hrVVB4dmJ1a3pveTZLMWloTTFobzNYelc2RXZTZlhBK2RwaVdHYVdkK2RvWHpMem1Hd0tZRkxDQXNSQWxQQkFoTWxDRlhVN3RCVVZQcjhIZ1ZjSkhXcStGMDBwbHIrRE1UZHJQNHp2eFkxMWtOTWh4VCtTZVRHZytkNFY1TFFKaXR5VUdKTkI4VkZac2pnWUJaTS9JSS9YQ1RrajBxeURPcEYyQVZRMTdDSWpVcC9EblQxVWtMNUY1Z2RqK3NTMXdnMWdFM2dpZ202MGZDWHpTblBYYnlBUGJJWHYrSURwRTE2VGhhSElTOXNreWhsbU1FNUYzY2ZxQUtocTJDMEU1UEgxZ1lhWGFMUERrWkcwSERKT25LV0hwNTFJMHo1U091eDhlMVdBdVp6ZEhRclRrcDhUbWpYb0krbGEwd0dac3p1YnFiTzNpZlE2QS9XN3ZWU1lzVjNtUjBKS3drS2M0V0hpQmttUjhJM0NDZ0k4N29PTDRxelQ1UCtSVUpCZWpFT2dBUEs4aFlQemF0TStlSVRwMklPOXlUUW1lcm9tUFJ4eDFxeEFjc2lsZS91YlNlRWJjV1FHWUVDZ2hjTFkySHlLam9nakgyNWhNcGpwVXYxT3VnbGk0ZWgyZVJ3ME8zMmJKamt5dUNnTnpnMHZ6bFlNU2lTczB1b280TUc3aE1PakNFYVgxeUZFMG5TdmpCenVUbkVwSzg2WjhJb3FGQUl1Ync4a2c5QXJFYVJFV1NaSStqSDRYYnA2ZzlFOUVuSlQzb2FSekROK01VSkJRREhuNTZhOG9VbUVCdXNPeEJzL041K3RKRWJQa0FGRGo4VUd2T3MvSVd2Y1NnbEdCaHZTNy9GVFlmcFdHWWREWThmUEF4V1NBMzVzVEM0cDQrTG00QWFxSW9QZVF0ZnVmSzZKaDBaaHhsYnNVWE9TbVhOaWZENVpUQWt5RG9mYmJjY2x4bkE4V05BcXhDYlJOeWtoWHhRcGFEdzY3ZlhVWWJzaUcwS2h0djJvZUl2aDhyaFFNWU9jRUFxWEcvZUkrem5nT2M1eXhyOHE4MklBTTFjL0ZMRk9wbHF1NWVGUVhyTVp6R2NWQ2pZYkxXRzVJNEJUMWV1UnJsYnh0Tk90TWl0RERFaExYSUl5bkFBdnVPRVdFM1gzTmRBZnQ5NFZnYUc0MlhJUXQwWlg2UGVDRS9xUUZlOXJLNkh4N1lVNTBLdkg3Zlc0ZlMrcTdLS0JKeHNnZ0JYNXBTQUdoMWpJclZoNXpRNnczUmZhYWhCWG0vYUNiQ1pUakNVRlVUeVdacVc5cDYyTWpKUFhWcU9yUGdNTzROdjc0R2tmK293ZnROVkJEUW5qRkpxSFN3MTdwWHZoV1c1S1pxZS9RNDlOL1VTVENBVldvUVhGSUhCSFhYZTNGUHJVRHN1R0RtdEYvaEhLVEhwZWt4aGlBT1BJK1NKcTZTNkhGNEk5WVd6a0JKVG80NmlVTXpXcDhQaXIvUmlkdUx4S1lzU2tzVjh2TGxPUXZoR1gyWWxSME9CaEJqQyt1L2dFY3ZZMEFwSzdZazQxTnhqUFNRbldGSFRGNjZVcmpnZXZCOEN1NWErbDJ2WVNSUHR1VkRvNzNoaGRNU0huVVg3dFRqc1ZaR3hBbC9XcHRpT0lFUTFnbkwyOW1YNi90UjF0bWxrWWo4VzRYK0NTaldjVURHWTFOcFMvQzdoU0txaU1MTS9sMlFtU1daNzNEZHorZ2lvOEJDRU5ZUFE0NnFua3p3WFVicXZCa3hqVVFzV2ZaRmdidW8zckFmK3dON2pPTzkwK3lueDRQaTNMKzBuWUwxU2NoRFVnQVA0Z1BWLzdJZDFxKzFIU2htdUdrSXFXUlBneXhNRnFQOEhmalRualh3WTViUWZiSmN0Nk9JektnTUhvdEYvSGUxZWdzYXhIU3FHNndmZG1RNXg4TnlURkZxQmNwMmlTb3dIUjN5azUrMzZoRjd2WEFBQUFBRWxGVGtTdVFtQ0MifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiTk9UX0ZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjMtMDItMDcifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIzLTAyLTA3In0seyJhYWd1aWQiOiIyZmZkNjQ1Mi0wMWRhLTQ3MWYtODIxYi1lYTRiZjZjODY3NmEiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjJmZmQ2NDUyLTAxZGEtNDcxZi04MjFiLWVhNGJmNmM4Njc2YSIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJJRFByaW1lIDk0MSBGaWRvIn0sImRlc2NyaXB0aW9uIjoiSURQcmltZSA5NDEgRmlkbyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MTAsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6MCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjAsImJsb2NrU2xvd2Rvd24iOjB9fV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlEZFRDQ0FsMmdBd0lCQWdJSkFJQ1VUdmtndGo1Q01BMEdDU3FHU0liM0RRRUJDd1VBTUZFeEN6QUpCZ05WQkFZVEFrWlNNUXd3Q2dZRFZRUUtEQU5FU1ZNeEN6QUpCZ05WQkFzTUFrTlRNU2N3SlFZRFZRUUREQjVIWlcxaGJIUnZJRTExYkhScFFYQndJRVpKUkU4Z1UzVmlZMkVnUTBFd0hoY05NakF3TnpBM01UUXpOekU0V2hjTk16QXdOekExTVRRek56RTRXakJSTVFzd0NRWURWUVFHRXdKR1VqRU1NQW9HQTFVRUNnd0RSRWxUTVFzd0NRWURWUVFMREFKRFV6RW5NQ1VHQTFVRUF3d2VSMlZ0WVd4MGJ5Qk5kV3gwYVVGd2NDQkdTVVJQSUZOMVltTmhJRU5CTUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUF2QUtPZXFDNS9wMEQxaXNDWUtRSmxWVU9yQjZJN0RMb2N1bkUvUm04ZHVHVGJ5eFFodDNDYkZWVHYzTjJMcDJmYmp4bEkrM3NPU0drMzNGVFlrVHF4Y2RKSXJKN1Nza0JjVVNOcmZLT2FRVC82S1FjUDRDbTdWKzY1NVRxK1RXeHl4V1FoRHlndDE1cW9QN011SzZiVDlTd3BDanBmS2hhTVNteVFhTW9VY1JBYkxxZHpCQ2FjMGh6QitaZStncUpsbldWOVVhU0kyckZzVnVINFpFMGNSTytNT3BhTGdNL3MyNDhuR0dIcDIyZXdTUWZiblBhQmJiOGlxeUFQK2N1NTJHTHNVcEtSSmViRStSNitQTVE5SkNkV2VRWlIzRGtmU2lka3YzbWNiNGpxMWlJdGErTXFLaFJud3JmWGg5MTFLV0xuWUFsOUVOQ2hMWDBjNlNqMVFJREFRQUJvMUF3VGpBZEJnTlZIUTRFRmdRVVdMdmhSQlVQbjh1TElmNjgrZ3YvTlpJd0dTSXdId1lEVlIwakJCZ3dGb0FVV0x2aFJCVVBuOHVMSWY2OCtndi9OWkl3R1NJd0RBWURWUjBUQkFVd0F3RUIvekFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBRkxyRGhhZWdlS0h4WWpIM0VQM3ZVQktobnpNMjA2QVN4Z2VZQ08yRWM5cE9sWUphZXFGRStzVWFtVVYvcHdqRGxxTmFTZ0ZneTdUd2VZa3ZPbU1uNHFTY3NIcXZKM3pHT0FpYWZ3YWgxdlVIZkNsWFI4K2F4TzJpR09VRjBKS3JaOVlZamJBYTUvNEhDbHY3akZQT2RNV1RPUXluZ29pSEFzM2prdVlqcENMRmxCNFZPaTNkMXdqQTFwblRkQktrQWI3dDhuVHZ3Ky9YYkZ2Y1FhNzNWSDdzanZvQnFEM2ZkTWZSY3VWcTRxVVp0WlQ2Y0dhZ1RIRDYxVHRxaDlvTUNaWGNEYlIxUEdabk5icXljc1dQRElLMG5wbUszLzNsZlY4Yytac3J5NmUxNzBtZkpNWnA3TzhtNkNTejYvVkxLK3lESmQ3ODQxd3BtZUtUZjZJblpBPT0iLCJNSUlDNlRDQ0FkR2dBd0lCQWdJSkFKYlR5cnUxWC9JUE1BMEdDU3FHU0liM0RRRUJDd1VBTUNNeElUQWZCZ05WQkFNTUdFZGxiV0ZzZEc4Z1RYVnNkR2xCY0hBZ1JrbEVUeUJEUVRBZUZ3MHhPREEyTVRJeE5EUTFOVEJhRncweU9EQTJNRGt4TkRRMU5UQmFNQ014SVRBZkJnTlZCQU1NR0VkbGJXRnNkRzhnVFhWc2RHbEJjSEFnUmtsRVR5QkRRVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNVmpLSFdwYkQ3VFNsTXhvY2pUbDZuSWY3eDMyUG1zUTl6R3VMR0dxQTBVUVpvSXEzWEx6TDZMWVV2SjVBNWcwdXlGR2xsSEVmR0FLckVhQ1E4RlZ2UFMvVWgwRnlmeldoUkF6aVRTaWpqTUlJVmpqalV2OW05dkZtY1hTY2dIaWc3T2R6ODg1OFYwa3JOSDk5cUdtM3dqZ2FPZXJUV210K2pYQ1VmbjAxSWtUUHd4RzJIbGdFZDQ1ak5MU1Y3Vm9vbCtLZThFMmtpNGxFa1RlSHpib3VsUjVHVWJwM25NaTdFNDdWTVFhM2JOd256V0Jic2FCU1NRaExrM201SGFLaGh4YTZ3SkRLNDdOaU1Da0NrZElIdVdTUUxWQWZtODVVQU9OdEVPUHdpME91SzNxYmU4eUtPRkdmMEtoQjVNTWVBeW03TVYvTTRXMGE0OW9nUEQ5cE1DQXdFQUFhTWdNQjR3REFZRFZSMFRCQVV3QXdFQi96QU9CZ05WSFE4QkFmOEVCQU1DQW9Rd0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFKV3o1eExNazVXTlliQWI2eU94RUNCb1oyV2VCL3FsNFZKM08vMy90TnN4T1luekxlV281NDB6UWg5ckFtYXh6N2V1bUJsc2tNcTR5R1BTTlhCOXljV0dIZ2tjQ2VTek4yd3Y4Q0l6REJzMm9CWmpUTms2NUxCWkRzc1RPQnRNVy8rdVRGSFFmYnVPM0lTTGhJMERYZlJFaTlORE0zamZrMTF4SGNzZmgyUk1WK1FkTmZ3VmFaWnJDcStvdUcrRXZrdjdLcXErb3l1MFZGTS90ejY4VEdsNnlsaFBGUjFxaDl3dHRwVmpBT09DRVFDTHFQMmRQMjhsd1lCeUNxSFFxVkh3YnVqdi9MWmpabktXM0xZbmRaaXhQUFNSQ0pzc0REd0p2aC9mNm5UeGc5WkUrL0pjWXJlNUNhSThuelZIYVNPQ2pOSjdGelVMRzY0SmlXT3ZRNTA9Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQVF3QUFBQWdDQVlBQUFEbmxVWnFBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRW5RQUFCSjBBZDVtSDNnQUFBQVpkRVZZZEZOdlpuUjNZWEpsQUhCaGFXNTBMbTVsZENBMExqQXVNakh4SUdtVkFBQUsxRWxFUVZSNFh1MWREWEFjWlJtK05PQWZLb2c2V08wUWNyZVgzTzcxUjQxb0hkU3FxREFPZzMrY1lFWEJvbFhSVEVuMjIwdGFLVGM2NG1nQnF6QmlFVVZwQmRxaXd3aHFTZElTMnVwWVNndlJ0cFRTY2tsald6SGFnanBTUmRyNHZMdHZqcnZrMjd2ZHZkMUxqbjdQekROM3QvZCs3L3QrZjgvKzc4YUswTkRhYXIycU9kWFpvcVd5SDlSMGEwRmN0NjdXZEhHVFpvalZDY1BxU2VqVzFvUXVIc095L2VCVHNEbU0vNTRaVDlqK0xXR0lnN0RmQi9zQmNEUHNmNFhmUDhYM2IydUcxWkhRelU4bVV1S2R5V1RIbTVxYWNpL2pIQUtCeWlmMGJCcitMd2FYSVBZUGtNZHFmTDhYZFdwbHMxQUEzMS9Rak93OThMOFM5YjhCWElSMituRGM2RG96bHNrMHNsbmtRTXhrUEdYTzlFSnRWbllHRjRzVXlWbmQ4VVRhZXA4YncrNkxha0JqNWl6ZGJOSlMxcnhFV255V3hnMzZFbVBkV29QUERlamY3ZUFUR01zSGFEelR1QzZoYmowTi9wWG1Bc3J1Z3MwV0xQOE51QkpqWkptV0VsY2wwOW1QSjFKbVcwdEw1K3VpSEJ1R2tYc2xqWDg3bmk0RXpWbms5QXZrc1FuNTdFU2RockI4Qk11UGpPV1AvLzRPSHNSL2U3RDhZZFRsZnRSaEZmZ2RMRzlIdTF3QWZ6cjU1akFPa2lRS2h2VmJHQjZDMC8vaSsyaU5lUng4RmdudlJmeGZhaW56U2s3TkUwaUlVUGJmNDN3V21OVE5kN0JwS0VBN0xaZkZBWTl6cDN5WlRTTURpUVZpL1UrU2c1UVlBSWZPbUcyZXdzVWpBL3JoVzdMNEJlcm1qOWgwVW9CMk9CK1RaVFc0Qi9rOE95Ry95Q2lPb1cxSVlINkg4WFB6OUxiY0t6aWxRR2hwTVp2aFp5SEd3RzNnNDJCazg1WjhvOTBHOFgwTmlTczFJdjJRR2s4S2RXc3p0NHNuSVA4UnFSOW1EUVhESWRaU2JCb1owSWwzUzJPWFpYWXBGNDhNVTE0d25LMWJlVzQxcEwzRkVRQ0psUFZXdERHMmZ1eVZyTlIzdEJUZFNqQjhZcklGb3lWdG5vMk9DekJneEROQkI2cFhLTUh3eGlEOWdLM0tjNlBja3ZCR0pSaStNY21DMFlENGZkSzRYb2g5Vy9ZVENaUmdlS052d2Noa0d0RzJlMlcrYWtzbEdMNHhtWUpCYXhscFRJK2tOUlFkbUdSM29VTUpoamY2RlF3NmNDcnpVM3RDTUxEV3VRc2QzUitBdzNLbkJRNUt5bmpoamR4T25uRGlDRVp1R2pyc1lXbE1KdHBpV1VLM0JtVC9GZkV1ZGhnNlVQZTZGZ3owYlI2ZmE2TW1uWTNrbER3aGFZakxVVTZlczI3dDBnenptN1ZnVXU5NkQ2ZmtIeENhNjJVVkdDTXE4ZzAyalJRbmltQm9SdllpYVR3bTJudGZXOXZDazdXMGRZSHMvd0oxNjNrNmVNWnVRMFc5Q3diRzlLMXNPcVdBdklVMFg1dGlEWnROYlNqQmNHRUVndEhXZHN2SjhFMm5BdVV4aWJwNWhXTTkyb0RmMnliOFgwS3gzckVORjBvd29nSG0waEpwdmphVllQakNpU0FZaWJUMWVXa3NKaWJDay9QbTVVNWljOHJ4UXBsZE1SUHA3SGxzSGhxVVlFUURKUmdoNHNVdUdIU1JEK3BJVitUSjR4SDFMRzlkakNIVGlNbFI0VmlHMkU3SFJiaEFLRkNDRVEyVVlJU0lGN3Rnb0oyejBqaE10SE9lamwyd2VRRlkvbEdaZlNuRmZEWVBCVW93b2tIQ01CZEw4N1dwQk1NWEtncUdJUzV2VHB0bmgwWFUrMDVabkFKREZBekQ2RGdkL3A2V3htSEdEZkZGTmgrSDBRYjB3YU95TW1PRStPVU5JL2NTTGxBMTZsMHcwRjY3NDdxNHBScEdjZHFhN2t1UjVVdEVINDVnRG13S2kvRFpqOC83SUVTMzRyT3plYWFZeldsVWgzb1JqSm96Uk1Hb09BRU5hMGkyZFRHR2VFcDhURkptUER2WXZHclV1MkNFUWJxaGtzT0ZCc3lsaTJXeGFzVGo2TmQxMnBzWHY1N1RDUVlsR0M0TVNUQmFXNjAzb28xZGI2cXpxVnRmWW5NNTZBcEJ3OW94b1Z3Uk1ZbEdOSzM5MVZ5aUtpakJpRVl3bWxQZExiSll0U1RhN3FIaUErdStvUVREaFNFSkJ0cHZoZFQvR0hXeHY5eld4UmkwdFBpRXRId0p4YlZzWGhXVVlFUWpHSFJ3R3VPaDBnVjVrVE9lTWkvaGhQeERDWVlMUXhDTXMxcXRWZ3p1OHJldnB5eVBqd0h3c3BWaC9TdVZXaktkQ3dTR0VveW9CQU81cDgzM29wK2VrOFdzRmRGK3dhOFNWb0xod2hBRUEzN1dUUEJiUkhUY0FleEd2SlROSGZRTU5jZjZCcytQOWVibnhmcWVQSldYMmtDWnpIZ2ZFeGpDR1FJbEdORUpCc0YrRUpFdWRzdmkxb2JpVDV5S2Y5U05ZT2pXWmpUeWZhSFJ1ZDlBSG90WXBXQTROeHFKWTFMZlROVDVLMndlaTYwZk1pQVVENEtqQmZibWo4YjY4c3RqMnc3YUQycWhmVS8weHk2WnJ6SFMycXVscFRObCt3eUl1aGNNakJVNjYxUU5tMmN1UG9QRFJZVFJCanBiUjJNQU9WOUhaek9ROTgvdy9mWXdpUEh0ZmplMGJ2MkZrL0NQZWhHTU9yc09vL0x0NjdvMVhEZ1Z1aUUvQndMeGp4S3hLT1hHMk02ZHRpMzZ3OE9SZG5HUDdUY2drRnVkQzhiVXZBNmpsa2lrTzgrVHRnMklNWFNZemZ4RENZWUxxeEFNTDdldm83N3R0bkYvLzBuWWt0Z2hFWWx4SExxYXpKMnRqRXFiczlpeVNXWG4ydjREUUFsRy9hT3NZQmpXQVRiekR5VVlMZ3dzR0xscEtMdFY2cE5KSFZaNFlITGYvbmZKQldJQ2gySGRRRVhpNmV3bE1yOGxkSjVIWXR2N2hSS00ra2M1d1VENzdHVXovMUNDNGNLQWd1SHA5R2RLWE1YbUVJeDh1MFFjWFBqWWErMHltVXdqMnV0eHFlOGlvbzRYMnZZK29RU2ovbEZobCtTUGJPWWZTakJjR0VBdzZIb0s3QTZVbmNpbzU4R21wc3RlZUIxRDc5Qlg1ZUlnNGYzRHAzT3BHT0xNbC9rZnh4Mnh6RnJmajhWWGdsSC9xTEJMc29YTi9FTUpoZ3NEQ0VZaVZmNzJkV2JwSmR3OSs4NlJpc040OWc3dWgzVmhGNFBGNlFtSi8xTHExZ0l1NGhtVkJBTVQ5dTd4NzB3SmcvVFlmVTZoTEpSZ1ZFYUZYWklIMk13L2xHQzQwS2Rneko1dG5nS2ZCNlMrbVBqLzBJd1pIUy9uSWc1R1J4c2hCZ05Ta1NqbFlpNVJBUHJ1VWxtY1ltSnkvWG5HM0hFeEs2RGlGa1pFeEJqWXlDbVVSU1hCUUR1UG9BNWJvMmJTeUw2ZFUvSUUzaXFVbmdZTm0yZ0QxN04wK0c4VnArUWZTakJjNkZNdzRycGxTZjBVRVRGTk5pOUZ6L0RNV0cvK2lFUWtIUGJtTjhTMmJadDQrYmh6ajBuNUozaUJkRnMxbC9BRTFMMnVCYU5XVE9yaUE1eVNKeUR2NzhyODFKeWVyeTZXUUFtR0MzMElSdE9jM0dsb3A4TlNQMlBVeFZObDEvVHI4cTJ4dnZ4NjhQa2lzZmduZmw4ZjZ4OTBmUVVsNG41R0dxK1l1amh5NXF6dTEzQ1JpbENDNFkxMUtSajBXa2d0Ri93bVJTVVlMdlFoR0Y0bUdBYUxZUFB5MkRnMFBkWXo5SDdzcHN5TjlReFVmQzBpWGZ5RlB0b25pMWxNR3F4Y3BDS1VZSGhqM1FrR3hDS3BXKy9tZElKQkNZWUxQUW9HdllRYTl1WGY3MWxwNjZKS2xIdDgvUXNVUiswWFRYdUFFZ3h2ckEvQm9MZnIyUWZIci9HemxlbUtLU01ZdW5rSFRTekVsTDQrc0ZhQ2dmbytCKzdXak96bjJMUXNuTmNHaUQxVVR1YlBvZG5GNXBHQXpwZ2d2dXRXQnVyNkg3dE91cmlVaTVRRlhTV0tNdC9IQk41RWF5WFVyK3c5TWNFcGp2R0s0dmZJYndWZHc4SXBsQVdOQlpTNUR2V2hONVhuNGVkb3FkOG9pRnl4MndrK2l1LzBJdWlsOUt3VFRza1Q0bWx4RHRyelJtNVhqUFVvMnBYZTZHNDlnanh2dytmQ2hOR2hjZmh3UUM5amFUTEVHOXhvR0ZlV3ZpWStVdVNtMlErY29YZHk2TllpTk93eVZQckhHQmgzSm96dVVDc2VUNW1YUWZGL2poZy94T2ZYTmQyOGdqbzBhSDNwTEFsTk5HZHRMNVlpNTV2UWdiZWo0KzZnLzlnc01xQU9IM0hhU2Z3RWJYY0R2bWVUaHZVcFRlOTZ5NFF6TTc2UW05WTBaOUZwZFBjbTZ2TnBzQXQ5c3R4cE8rdlg0RWJFMjBvVENjc0dTb25sK0IvZjZXYS9WY1Y1MGFTUHg3dE9EZUVCeGcxMHh5K2Rrb1hnZkFneEZpRGUxOUFPMzBNL3JFUU85eUxtQTRpL0JiKzNsK2Jua1BJSE40UHJVTCsxK0Z3QjIydmhveDFpZjFHODFYcGJ2QTI1WmpLK3IybHhSMjRhMWQ4UlB6RWZ1d29XY3NFV2lKTXpZaitJM3crVnRLc2hIZ0gvQVBaU25xalR6Zmk4eGg2N3VuVXVQZHJBMjhOeFlySC9BejN0STRqNStUT0xBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiXSwiZXh0ZW5zaW9ucyI6WyJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiIyZmZkNjQ1MjAxZGE0NzFmODIxYmVhNGJmNmM4Njc2YSIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOnRydWUsInVwIjp0cnVlfSwicGluVXZBdXRoUHJvdG9jb2xzIjpbMV0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN31dfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjItMDUtMTQiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJJRFByaW1lIDk0MSBGaWRvIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyMjAzMTQwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMi0wNS0xNCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI0LTA2LTE4In0seyJhYWd1aWQiOiI5ODA2YTJjOC1jMGRhLTQ3OGUtYjRjYS02MjAwMDVkMzQxODIiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6Ijk4MDZhMmM4LWMwZGEtNDc4ZS1iNGNhLTYyMDAwNWQzNDE4MiIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IEJpbyBNdWx0aS1wcm90b2NvbCBFZGl0aW9uIChDb25zdW1lciBQcm9maWxlKSAxVkRKU04tMiJ9LCJkZXNjcmlwdGlvbiI6Ill1YmlLZXkgQmlvIE11bHRpLXByb3RvY29sIEVkaXRpb24gKENvbnN1bWVyIFByb2ZpbGUpIDFWREpTTi0yIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTcyOCwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjN9LHsibWFqb3IiOjEsIm1pbm9yIjoxfSx7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsiZWQyNTUxOV9lZGRzYV9zaGE1MTJfcmF3Iiwic2VjcDM4NHIxX2VjZHNhX3NoYTM4NF9yYXciLCJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwiLCJiYURlc2MiOnsic2VsZkF0dGVzdGVkRlJSIjowLjAsInNlbGZBdHRlc3RlZEZBUiI6MC4wLCJpQVBBUlRocmVzaG9sZCI6MC4wLCJtYXhUZW1wbGF0ZXMiOjUsIm1heFJldHJpZXMiOjMsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwiLCJiYURlc2MiOnsic2VsZkF0dGVzdGVkRlJSIjowLjAsInNlbGZBdHRlc3RlZEZBUiI6MC4wLCJpQVBBUlRocmVzaG9sZCI6MC4wLCJtYXhUZW1wbGF0ZXMiOjUsIm1heFJldHJpZXMiOjMsImJsb2NrU2xvd2Rvd24iOjB9fSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwic21hcnQtY2FyZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRFNqQ0NBaktnQXdJQkFnSVVUbmJiR0lSMk5IdnpxSUtGQWVRd0cxWEJpczB3RFFZSktvWklodmNOQVFFTEJRQXdMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3SUJjTk1qUXhNakF4TURBd01EQXdXaGdQT1RrNU9URXlNekV5TXpVNU5UbGFNQ1l4SkRBaUJnTlZCQU1NRzFsMVltbGpieUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRUVnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBT3NYajNrMDRCYW40VFlkdFpLcUQvT1BKeHlEeWFQbUNCVUZVaWFaSWdUdGVabmozWDI1RGhncFpaWHNDNEQweWRJY3JsQTZ3TlVJbk9STC9MOXpCYlRFSU1BVk1HbzZnN1VLQW1iMk1GNkFIYm5oWUpkOWVpa3VwVk5XU2hITllOYzRHQmRPMVlONkFmVXF2SmhIYmUzVjRTTk1QbUJSRUtKUFZ6N1Rod2dtZ2dUZThXczJLMC93c3F2MndTRTdwYkNCc1VaaElYNTFiWk0zcHFEd0pQVG1SRkV2dDAvNnRHNWVPOEYzajE0T1hxZkVobWpuMVZ2eEtEWVFPTFpBeEN3d2dDMFA0Q2RmV3YzeThQU1I4STM1NGhPMVkrR3pOanZJcVgzOE5LTHl3dUlZSEZlck94Tmx4RU1CdkZoWUJ1UnVZQWtrZ1VhUHFONlVCaHNJTHJzQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZDQ29SSGhpeU5uYm5YUldJTDZaQlhvQlg5WVRNQjhHQTFVZEl3UVlNQmFBRkNBb1VDRWJwRnBiNkZQTG5aM0Y1UHhzTDNvZk1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQ1FGYWZKSTEvNVdnOUNFRWltRTFSUDU0UmdRd1ROVE9PUXNMQUNUZStySXRsRlF6QzlaRGhyVjgyOHlYN2p6eStBQXNwM2l6SzdUMXRoMmRsN20rdHUwc3cyUGEvb2xjMDJudDZQeUl3MzQ4Z2FIemhJMSswS0U0NXF4dkZEZUwybE14YlBmQ1l2eUVFYVl6amlRRUxVNTk1MXBYR1d5S01hLzRmTHRPK1pLT1hoTXVWZXE0clhEUEk1NFc2SkhPaUFhaUtkaXcrNWUzYzJrdC9qRklRdE02dk1YZzlMTkZ6ZGpFVE50MjBWWDlRZXZScEZaZnVjTUc5d0NhUURvRmxQenBUTUpLaFBldi9pbUptWlloS2ZyMGxMY2VtdHFqSXhMQW9xWmRPWWZIQmc2K3ZBY2RQSS9pYXVHcFVBdjdYK1VLTm1Ed2paMkJhSDRzTHdoQjJtIiwiTUlJRFNqQ0NBaktnQXdJQkFnSVVSMzhtcTI2U2Yyc3pWVjJCZEc2V0VON2t1V1V3RFFZSktvWklodmNOQVFFTEJRQXdMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3SUJjTk1qUXhNakF4TURBd01EQXdXaGdQT1RrNU9URXlNekV5TXpVNU5UbGFNQ1l4SkRBaUJnTlZCQU1NRzFsMVltbGpieUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRUlnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTlkwV2I5b1BvUm9Lb1F5V1BhSnB6MTF2cldUZzZ6VHRtTmoyVm9LUm55dktHUnFwemI4M3c1bDZZQTk2VVlrWUJEUVAwaWxPMkRQZTZ3V3FWUjV6RGZSemRjSDhiaCtMN2RHR3ZhZTZoUlRaaGtGa0NwWERzNEhjY2tuckRmOEZDbEo3SGUzOUpmNDIvRzFRbTJ6ejlXV21yUFh0Z2lLL3gwNUdqc1FmR3VERzF6ZjVRVFVVaWU4bHd5bUszVGZkT3ZOZWVKQUFQZTJwbjdJdGZSYityVnJOV2lEemxSbjJ2Tm5aMndQbzR3SC9XSjZkaFhaRytyTVdUK2E2Qm9jZzFVZkl3NmtkdW5HNGJUcFp6c3ZhY0ZZeVIwbXBmK0RlT25wU1dBbXl3SldIdlRsZjJZWHhGeWVYY1RBQ2RRbGNNTkdKMlZoWlE0OHh0UDUvUkJQLzhrQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZDaHk0Mm9raXFjVFMxaXFhL0hSV2prQm40SC9NQjhHQTFVZEl3UVlNQmFBRk9xM1FwQ2VESHRrZXR0VWZBTzZmRTZmMktGaE1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQW4rUkhJUGJ0TUVETmRUMWc4SC9SaXRBa1VkTGdBdDF0V0dXbmxqOWtuYnY0LzRHbFg3QzlwNDVlZlBPOS9hWkw2T1YxWFJLQmk2S210Qlc1SzdudVlFbk14LzVCcUJTYkxUN3JoZHVDNDlUQmVNYjlQSGRYc1RsU1ZOWWVmcjFkR2lkcjRqMHhWQlFMYjFya25EQWJkV0R6S2Z2bmF5S084RnJ3ZTdIeDg0M01HL3JKK2MwWHJ1VXZiZlZUQ0hMaUlXaE03b05EaEw4eG9iNnhVbzlLTEtjU0wrSXRZc08zLzlXYjhROUdqc3FMNEZYc0RjRzFTYVloN0twZnVNbU9peHF6SlpPMm5JaWNQWVJnMUkyU3VpVWZZTzcwdG1kSGNibCtrU1FtU1l0N3JxNHZpSUxnMkd4M2o5cklUdVdUamJhVWFTU1F4Z09tTVNIdXl6TUFDIiwiTUlJRFNEQ0NBakNnQXdJQkFnSVVEcUVSdys0Um5HU2dneGdVZXdKRkVQRFJaM1l3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRREk3WG5IK1p2RHdNQ1FVOE04WmVWNXFzY3VibHZWWWFhUnQzWWJheG45Z29kTHg1c3dIMGxYcmRnamg1aDdGcFZnQ2dZWVg3RTRibDF2YnpVTGVtck1XVDhOM1dNR1VlOFFBSmJCZWlvVjdXL0UraFRaUC8wU0tKVmEzZXdLQm82VUxlTW5mUVpEclZPUkFrOHdUTHEydjVMbGo1dk1qN0p0T290S2E5SjduSFM4a0xtelhYU2FqMFN3RVBoNU9BWlVUTlY0enMxYnZvVEFRUVdyTDQvSjlRdUt0NldDRkU1blVOaVJRY0ViVkY4bWxxSzJieDJ6Nm9rVmx0eURWTEN4WWJwVVRFTHZZMXVzUjNEVEdQVW9JQ2xPbTRjcnB3bkRSTFZIdmpZZVBHQkIvL3BFeXp4QS9nY1NjeGp3YUgxWlV3OWJuU2JIeXVyS3FiVGExS3ZqQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJUcXQwS1FuZ3g3WkhyYlZId0R1bnhPbjlpaFlUQWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQXFRYUNXTXhUR3FWVlg3U2s3a2tKbVV1ZVRTWUt1VTYrS0JCU2d3SVJubHc5SzdIZTFJcHhaMGhkd3BQTmlrS2ptY3lGZ0ZQemhJbXdISmd4eHVUOTBQdzN2WU9kY0pKTmt0RGczNVBYT2Z6U24xNWNGQXgxUk8wbVBUbUliOGRYaUVXT3B6b1h2ZHdYRE00MVphQ0RZTVQ3dzRJUXRNeXZFN3hVQlpxMmJqdEFucS9ORFVBN2JlNEg4SDNpcEMrLytOS2xVcmNVaCtqNDhLNjdXSTB1MW02RmVRdWVCQTduMDZqODI1cnFEcXNhTHM5VGI3S0FIQXc4UG1yV2FOUEcya2pLZXJ4UEVmZWNpdmxGYXdwMlJXWnZ4clZ0bjNUVjJTQnh5Q0pDa1hzTkQwNWRDRXJWSFNKSXMrQmR0VFZOWTlBd3R5UG1ueWIwdjRtU1R6dldkdz09IiwiTUlJRFBqQ0NBaWFnQXdJQkFnSVVYemVpRURKRU9UdDE0RjVuMG82WmYvYkJ3aVV3RFFZSktvWklodmNOQVFFTkJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNWjYvVHhNOHJJVCtFYW9Qdkc4MW9udE1Pby8ybVEyUkJ3SkhTMFFaY3hWYU5YdmwxMkxVaEJaNUxtaUJTY0laZDFSbngxb2Q1ODVoKy9kaEs3aEVtN0pBQUxrS0t0czFmTzUzS0dOTFp1ano1aDN3R25jcjRoeUtGMEc3NGIvVTNLOWhFNW1HTkQ2enFZY2hDUkFIZnJZTVlSREY0WUwwWDRENW5HZHh2cHBBeTZua0VtdFdtTW53TzNpMFRBdWNzcmJFNDg1SHZHTTRyMFZwZ1ZkSnB2Z1FqaVRKQ1RJcStEMzVod3RUOFFESXYrbkd2cGN5aTV3Y0lmQ2t6eUNpbUp1a2hZeTZLb3FOTUtRRWRwTmlTT3ZXeURNVE10MWJ3Q3ZFenB3OTF1K21zVXQ0cmowZWZuTzlzMFpPd2R3TVJEbkg0eGdVbDVaTHdyclBrZkMxLzBDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01COEdBMVVkSXdRWU1CYUFGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFNd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkRRVUFBNElCQVFDM0lXL3NnQjlwWjhhcEpOanh1R29YK0ZrSUxrczB3TU5yZFhML2NvVXZzcmh6c3ZsNm1lUE1yYkdKQnlKMVhucXVCNXNnY1JFTkZ4ZFFGbWEzbWlvOFVwZjFvd00xWnJlWHJKMG1BREcyQnBscWJKbnhpeVlhK1IxMXJlSUZUV2VJaE1OY1pLc0RackZBeVB1RmpDV1NRdkptTldlOW1GUllGZ05oWEpLa1hJYjVIMVhnRURsd2llZFlSTTdWb2xCTmxsZDZwUkZLbFg4dXN0Nk9UTU9lQURsMnhORjBtMUxUaFNkZXVYdkR5QzFnOStJTGZ6M1M2T0lZZ2MzaXJvUmNGRDM1NGc3cktmdTY3cUZBdzlnQzR5aTB4QlRQclk5NXJoNC9IcWFVWUNBL0w4bGRSazZIN1hrMzVEK1dWcG1xMlNoL3hUNUhpRnVoZjR3SmIwYksiLCJNSUlEU0RDQ0FqQ2dBd0lCQWdJVVVjbU1YelJJRk9nR1RLMFRiM2dFdVpZWmtCSXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFEbTU1NWJXWTlXVyt0T1kwcklXSGxkaCthTmFub0NaQ0ZoN0drM1laclFtUFV3MGhrU0c2cVlIUXRQK2ZaeVMzM1ZFcnZnK0JRcW5tdW1nTmhmeEZya3dFWkVMZWlkQmNDOEM0QWc0bnFxaVBXcHpzdkkxN05jeFlsSW5MTkxGY1pZLytnT2lONlpPVGloTzUvdkJaTWJqOXJpYUFjcWxpWW1OR0pQZ1RjTUdhRUF5TXpFTU55Mm5tNkVwK3BqUDVhRjZnaTIxdC9VUUZzdUoxajJSai95bk0vU2RSdCtlY2FsNU9Zb3R4SGtGYkw5dnZ2MkEyT3Y1SVRaQ2x3NGJPUzlucHlwUWltT1o1UUFZeXRtWWFRcFdsL3BNWXo2elNqOFJxa1ZETkVKR3FOZlRLQTJpdkxZd1g2bFN0dE1QYXBnMEo4NGw5WDB2b1ZOL0ZwUzRWQ1ZBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlFnS0ZBaEc2UmFXK2hUeTUyZHhlVDhiQzk2SHpBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBWU16Z0xySkxJcjBPb3ZRbkFaclJJR3VhYmlIU1VLU21iTFJXcFJrV2VBdHNDaERFSHBYY0ovYmdETktZV29IcVE4eFJVakI0Q3llcFlldmMzWWxyRzhvN3pIeHBmVmNhb0w1U2V1Smt6SHhLbjRiVGFTcDkrTXZ3YW1ucDY0a1pNaU5iRkxrbmZQOWtZS29SSGtNV2hlUkoxVXNQMXo0U2Nta0NlSUxmc01zNnZxb3ZxaldDbEZzSnBCY3NsdVlIV0Y3YkJKMW40UndnK0FURW9wWTRJZ0d2Nlp2d2MrQTlyK0FUMmhxcG9Ta1lvQWwrQU5Zd2dzbE9mOXNKZTBWK1RBOVlZL1VsYUJtUFBUZDAvL3I5d3ZjZVBXWmtQaktvQUMvelVOaGZEYmg0TFY4R0hzM2x5WDJYb21ML0xOYzhKWXp5SWFERWhHUXZlb1BoaC90cjFnPT0iLCJNSUlEUnpDQ0FqR2dBd0lCQWdJVWV4OW5UOXZ3Wk5YUzQ4M0xkaVlHZncyU2pTb3dDd1lKS29aSWh2Y05BUUVMTUM0eExEQXFCZ05WQkFNTUkxbDFZbWxqYnlCQmRIUmxjM1JoZEdsdmJpQkpiblJsY20xbFpHbGhkR1VnUWlBeE1DQVhEVEkxTURnd01UQXdNREF3TUZvWUR6azVPVGt4TWpNeE1qTTFPVFU1V2pBbk1TVXdJd1lEVlFRRERCeFpkV0pwWTI4Z1JrbEVUeUJCZEhSbGMzUmhkR2x2YmlCQ01pQXhNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXUxTWV2bnk5ZHlPOVpVQzM5U29NaExjUi9EWHJ0Ri9jaU0xMnRjaXkyRVhBWjZNa3JpdlZ0Q2ZFVk05WDZJU1RFbkJQNnVTWVlvdjZwcHY2TzZKaDJOSG1ZbTR3K0puUzRWbkNQVTdtSEFNZlZJMk1HVFRNVk9ldzB4VXNHN3NJU0lrSURVQm11azhZSzljNXppYzkrdkZRR0xJa3NkWE81aVZGSWdORzUzY0dYRDRaTFpvQVBpdTBQRW96eEFxWUlhSTRneEtoT0EzUzgvVzhtSVdzdTZvZnlqNEd2a0ZHNlo3a3lGMzEwN1A3bXdGSExySTNFTmFQV01PRmNUYUdhMGR3Ky92VlJ3alJjRVpCVnN1dVQvODdja1NzMGE1cGt0M3ZaQmxhWWVUOHB6U3JlVjdtb3djSU05MEwyaWFBVGxQMG54bWFFNm5PeVRib2pGVmwyd0lEQVFBQm8yWXdaREFkQmdOVkhRNEVGZ1FVU1hFaDNzYTNidER1cm00TU0vQzdTMWxSdXVZd0h3WURWUjBqQkJnd0ZvQVU2cmRDa0o0TWUyUjYyMVI4QTdwOFRwL1lvV0V3RWdZRFZSMFRBUUgvQkFnd0JnRUIvd0lCQURBT0JnTlZIUThCQWY4RUJBTUNBWVl3Q3dZSktvWklodmNOQVFFTEE0SUJBUUI1R2MzaGFmdHA3aEtzRVpzbytpL1o1blJ1cWRtekcyV0NsVW9SVXFiYVB5Z2xuSkRqS1Iva2ZnT2w2aWJiRi96dGhtM0ttWFE3SGNESVAyeE1kRzdVMkwyaW1iSlFIcVBmL2gySHFvamI0clpndWUrNlc0a3RTUjVlbFI5TDFyWXFFL1NHWU00aUVLb1ZRU3Y3UlQxcnhJZVdpS3N3L1Z4eGkvUU9uc3gzRjd4ODBDQ1lnQjRFM3lReDhWVFc0NDBoVEV3VEExZU1IT2l4MzJ0UHR5eUhJYThQVlZJZlZwSFFKQmFNVnZ2NTA4VUVqd2tiVTJybmpmem9TVE5TOUE1alVROG1CU3ZlOTVyakIwZG85OEVVK0R4ZEJxWDIrSDZpNXdsSUNGZ3poZHpjc25lOWhHS1Q2bHpUWDRjSWRKc3JZMit4bGVLMEZGUXk2bEdFVkxFZSJdLCJpY29uIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwiaWNvbkRhcmsiOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJwcm92aWRlckxvZ29MaWdodCI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsInByb3ZpZGVyTG9nb0RhcmsiOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJGSURPXzJfMCIsIkZJRE9fMl8xX1BSRSIsIkZJRE9fMl8xIiwiRklET18yXzMiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwibGFyZ2VCbG9iS2V5IiwiY3JlZEJsb2IiLCJtaW5QaW5MZW5ndGgiLCJobWFjLXNlY3JldC1tYyIsInRoaXJkUGFydHlQYXltZW50IiwicHJldmlld1NpZ24iXSwiYWFndWlkIjoiOTgwNmEyYzhjMGRhNDc4ZWI0Y2E2MjAwMDVkMzQxODIiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsInV2IjpmYWxzZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImxhcmdlQmxvYnMiOnRydWUsImJpb0Vucm9sbCI6ZmFsc2UsInVzZXJWZXJpZmljYXRpb25NZ210UHJldmlldyI6ZmFsc2UsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsInBlckNyZWRNZ210Uk8iOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjpmYWxzZSwiYWx3YXlzVXYiOnRydWV9LCJtYXhNc2dTaXplIjoxNTM2LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjgsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4LCJ0cmFuc3BvcnRzIjpbInVzYiIsInNtYXJ0LWNhcmQiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotOH0seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTM1fV0sIm1heFNlcmlhbGl6ZWRMYXJnZUJsb2JBcnJheSI6NDA5NiwiZm9yY2VQSU5DaGFuZ2UiOmZhbHNlLCJtaW5QSU5MZW5ndGgiOjYsImZpcm13YXJlVmVyc2lvbiI6MzI5NzI4LCJtYXhDcmVkQmxvYkxlbmd0aCI6MzIsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjoxLCJwcmVmZXJyZWRQbGF0Zm9ybVV2QXR0ZW1wdHMiOjMsInV2TW9kYWxpdHkiOjIsInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjoxMDAsImF0dGVzdGF0aW9uRm9ybWF0cyI6WyJwYWNrZWQiXSwidXZDb3VudFNpbmNlTGFzdFBpbkVudHJ5IjowLCJlbmNJZGVudGlmaWVyIjoiIiwidHJhbnNwb3J0c0ZvclJlc2V0IjpbInVzYiIsInNtYXJ0LWNhcmQiXSwicGluQ29tcGxleGl0eVBvbGljeSI6ZmFsc2UsIm1heFBJTkxlbmd0aCI6OCwiZW5jQ3JlZFN0b3JlU3RhdGUiOiIiLCJhdXRoZW50aWNhdG9yQ29uZmlnQ29tbWFuZHMiOlsyLDNdfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjYtMDQtMjUiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NzI4LCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ill1YmlLZXkgQmlvIE11bHRpLXByb3RvY29sIEVkaXRpb24gKENvbnN1bWVyIFByb2ZpbGUpIDFWREpTTi0yIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNjA0MjUwMTkiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblByb2ZpbGVzIjpbImNvbnN1bWVyIl0sImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjYtMDQtMjUiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NzI4fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI2LTA1LTAxIn0seyJhYWd1aWQiOiIwMzAxMmNiNy00ZmIyLTQyZTctOWU4ZC1hODFmMTBlMmE1ZTkiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjAzMDEyY2I3LTRmYjItNDJlNy05ZThkLWE4MWYxMGUyYTVlOSIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IDUgU2VyaWVzIHdpdGggTGlnaHRuaW5nIChDb25zdW1lciBQcm9maWxlKSJ9LCJkZXNjcmlwdGlvbiI6Ill1YmlLZXkgNSBTZXJpZXMgd2l0aCBMaWdodG5pbmcgKENvbnN1bWVyIFByb2ZpbGUpIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTcyOCwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9LHsibWFqb3IiOjEsIm1pbm9yIjoxfSx7Im1ham9yIjoxLCJtaW5vciI6M31dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsiZWQyNTUxOV9lZGRzYV9zaGE1MTJfcmF3Iiwic2VjcDM4NHIxX2VjZHNhX3NoYTM4NF9yYXciLCJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJzbWFydC1jYXJkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlEU2pDQ0FqS2dBd0lCQWdJVVRuYmJHSVIyTkh2enFJS0ZBZVF3RzFYQmlzMHdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFRWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPc1hqM2swNEJhbjRUWWR0WktxRC9PUEp4eUR5YVBtQ0JVRlVpYVpJZ1R0ZVpuajNYMjVEaGdwWlpYc0M0RDB5ZEljcmxBNndOVUluT1JML0w5ekJiVEVJTUFWTUdvNmc3VUtBbWIyTUY2QUhibmhZSmQ5ZWlrdXBWTldTaEhOWU5jNEdCZE8xWU42QWZVcXZKaEhiZTNWNFNOTVBtQlJFS0pQVno3VGh3Z21nZ1RlOFdzMkswL3dzcXYyd1NFN3BiQ0JzVVpoSVg1MWJaTTNwcUR3SlBUbVJGRXZ0MC82dEc1ZU84RjNqMTRPWHFmRWhtam4xVnZ4S0RZUU9MWkF4Q3d3Z0MwUDRDZGZXdjN5OFBTUjhJMzU0aE8xWStHek5qdklxWDM4TktMeXd1SVlIRmVyT3hObHhFTUJ2RmhZQnVSdVlBa2tnVWFQcU42VUJoc0lMcnNDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNDb1JIaGl5Tm5iblhSV0lMNlpCWG9CWDlZVE1COEdBMVVkSXdRWU1CYUFGQ0FvVUNFYnBGcGI2RlBMblozRjVQeHNMM29mTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFDUUZhZkpJMS81V2c5Q0VFaW1FMVJQNTRSZ1F3VE5UT09Rc0xBQ1RlK3JJdGxGUXpDOVpEaHJWODI4eVg3anp5K0FBc3AzaXpLN1QxdGgyZGw3bSt0dTBzdzJQYS9vbGMwMm50NlB5SXczNDhnYUh6aEkxKzBLRTQ1cXh2RkRlTDJsTXhiUGZDWXZ5RUVhWXpqaVFFTFU1OTUxcFhHV3lLTWEvNGZMdE8rWktPWGhNdVZlcTRyWERQSTU0VzZKSE9pQWFpS2Rpdys1ZTNjMmt0L2pGSVF0TTZ2TVhnOUxORnpkakVUTnQyMFZYOVFldlJwRlpmdWNNRzl3Q2FRRG9GbFB6cFRNSktoUGV2L2ltSm1aWWhLZnIwbExjZW10cWpJeExBb3FaZE9ZZkhCZzYrdkFjZFBJL2lhdUdwVUF2N1grVUtObUR3aloyQmFINHNMd2hCMm0iLCJNSUlEUGpDQ0FpYWdBd0lCQWdJVVh6ZWlFREpFT1R0MTRGNW4wbzZaZi9iQndpVXdEUVlKS29aSWh2Y05BUUVOQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU1aNi9UeE04cklUK0Vhb1B2Rzgxb250TU9vLzJtUTJSQndKSFMwUVpjeFZhTlh2bDEyTFVoQlo1TG1pQlNjSVpkMVJueDFvZDU4NWgrL2RoSzdoRW03SkFBTGtLS3RzMWZPNTNLR05MWnVqejVoM3dHbmNyNGh5S0YwRzc0Yi9VM0s5aEU1bUdORDZ6cVljaENSQUhmcllNWVJERjRZTDBYNEQ1bkdkeHZwcEF5Nm5rRW10V21NbndPM2kwVEF1Y3NyYkU0ODVIdkdNNHIwVnBnVmRKcHZnUWppVEpDVElxK0QzNWh3dFQ4UURJdituR3ZwY3lpNXdjSWZDa3p5Q2ltSnVraFl5NktvcU5NS1FFZHBOaVNPdld5RE1UTXQxYndDdkV6cHc5MXUrbXNVdDRyajBlZm5POXMwWk93ZHdNUkRuSDR4Z1VsNVpMd3JyUGtmQzEvMENBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUI4R0ExVWRJd1FZTUJhQUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUU13RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCRFFVQUE0SUJBUUMzSVcvc2dCOXBaOGFwSk5qeHVHb1grRmtJTGtzMHdNTnJkWEwvY29VdnNyaHpzdmw2bWVQTXJiR0pCeUoxWG5xdUI1c2djUkVORnhkUUZtYTNtaW84VXBmMW93TTFacmVYckowbUFERzJCcGxxYkpueGl5WWErUjExcmVJRlRXZUloTU5jWktzRFpyRkF5UHVGakNXU1F2Sm1OV2U5bUZSWUZnTmhYSktrWEliNUgxWGdFRGx3aWVkWVJNN1ZvbEJObGxkNnBSRktsWDh1c3Q2T1RNT2VBRGwyeE5GMG0xTFRoU2RldVh2RHlDMWc5K0lMZnozUzZPSVlnYzNpcm9SY0ZEMzU0ZzdyS2Z1NjdxRkF3OWdDNHlpMHhCVFByWTk1cmg0L0hxYVVZQ0EvTDhsZFJrNkg3WGszNUQrV1ZwbXEyU2gveFQ1SGlGdWhmNHdKYjBiSyIsIk1JSURTRENDQWpDZ0F3SUJBZ0lVVWNtTVh6UklGT2dHVEswVGIzZ0V1Wllaa0JJd0RRWUpLb1pJaHZjTkFRRUxCUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JCSURFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURtNTU1YldZOVdXK3RPWTBySVdIbGRoK2FOYW5vQ1pDRmg3R2szWVpyUW1QVXcwaGtTRzZxWUhRdFArZlp5UzMzVkVydmcrQlFxbm11bWdOaGZ4RnJrd0VaRUxlaWRCY0M4QzRBZzRucXFpUFdwenN2STE3TmN4WWxJbkxOTEZjWlkvK2dPaU42Wk9UaWhPNS92QlpNYmo5cmlhQWNxbGlZbU5HSlBnVGNNR2FFQXlNekVNTnkybm02RXArcGpQNWFGNmdpMjF0L1VRRnN1SjFqMlJqL3luTS9TZFJ0K2VjYWw1T1lvdHhIa0ZiTDl2dnYyQTJPdjVJVFpDbHc0Yk9TOW5weXBRaW1PWjVRQVl5dG1ZYVFwV2wvcE1ZejZ6U2o4UnFrVkRORUpHcU5mVEtBMml2TFl3WDZsU3R0TVBhcGcwSjg0bDlYMHZvVk4vRnBTNFZDVkFnTUJBQUdqWmpCa01CMEdBMVVkRGdRV0JCUWdLRkFoRzZSYVcraFR5NTJkeGVUOGJDOTZIekFmQmdOVkhTTUVHREFXZ0JUUzd1OWFJbzA2YlZ3amx6M3loZFVtOFNWN2tqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQTRHQTFVZER3RUIvd1FFQXdJQmhqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFZTXpnTHJKTElyME9vdlFuQVpyUklHdWFiaUhTVUtTbWJMUldwUmtXZUF0c0NoREVIcFhjSi9iZ0ROS1lXb0hxUTh4UlVqQjRDeWVwWWV2YzNZbHJHOG83ekh4cGZWY2FvTDVTZXVKa3pIeEtuNGJUYVNwOStNdndhbW5wNjRrWk1pTmJGTGtuZlA5a1lLb1JIa01XaGVSSjFVc1AxejRTY21rQ2VJTGZzTXM2dnFvdnFqV0NsRnNKcEJjc2x1WUhXRjdiQkoxbjRSd2crQVRFb3BZNElnR3Y2WnZ3YytBOXIrQVQyaHFwb1NrWW9BbCtBTll3Z3NsT2Y5c0plMFYrVEE5WVkvVWxhQm1QUFRkMC8vcjl3dmNlUFdaa1BqS29BQy96VU5oZkRiaDRMVjhHSHMzbHlYMlhvbUwvTE5jOEpZenlJYURFaEdRdmVvUGhoL3RyMWc9PSIsIk1JSURTakNDQWpLZ0F3SUJBZ0lVUjM4bXEyNlNmMnN6VlYyQmRHNldFTjdrdVdVd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVJZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU5ZMFdiOW9Qb1JvS29ReVdQYUpwejExdnJXVGc2elR0bU5qMlZvS1JueXZLR1JxcHpiODN3NWw2WUE5NlVZa1lCRFFQMGlsTzJEUGU2d1dxVlI1ekRmUnpkY0g4YmgrTDdkR0d2YWU2aFJUWmhrRmtDcFhEczRIY2NrbnJEZjhGQ2xKN0hlMzlKZjQyL0cxUW0yeno5V1dtclBYdGdpSy94MDVHanNRZkd1REcxemY1UVRVVWllOGx3eW1LM1RmZE92TmVlSkFBUGUycG43SXRmUmIrclZyTldpRHpsUm4ydk5uWjJ3UG80d0gvV0o2ZGhYWkcrck1XVCthNkJvY2cxVWZJdzZrZHVuRzRiVHBaenN2YWNGWXlSMG1wZitEZU9ucFNXQW15d0pXSHZUbGYyWVh4RnllWGNUQUNkUWxjTU5HSjJWaFpRNDh4dFA1L1JCUC84a0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ2h5NDJva2lxY1RTMWlxYS9IUldqa0JuNEgvTUI4R0ExVWRJd1FZTUJhQUZPcTNRcENlREh0a2V0dFVmQU82ZkU2ZjJLRmhNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUFuK1JISVBidE1FRE5kVDFnOEgvUml0QWtVZExnQXQxdFdHV25sajlrbmJ2NC80R2xYN0M5cDQ1ZWZQTzkvYVpMNk9WMVhSS0JpNkttdEJXNUs3bnVZRW5NeC81QnFCU2JMVDdyaGR1QzQ5VEJlTWI5UEhkWHNUbFNWTlllZnIxZEdpZHI0ajB4VkJRTGIxcmtuREFiZFdEektmdm5heUtPOEZyd2U3SHg4NDNNRy9ySitjMFhydVV2YmZWVENITGlJV2hNN29ORGhMOHhvYjZ4VW85S0xLY1NMK0l0WXNPMy85V2I4UTlHanNxTDRGWHNEY0cxU2FZaDdLcGZ1TW1PaXhxekpaTzJuSWljUFlSZzFJMlN1aVVmWU83MHRtZEhjYmwra1NRbVNZdDdycTR2aUlMZzJHeDNqOXJJVHVXVGpiYVVhU1NReGdPbU1TSHV5ek1BQyIsIk1JSURTRENDQWpDZ0F3SUJBZ0lVRHFFUncrNFJuR1NnZ3hnVWV3SkZFUERSWjNZd0RRWUpLb1pJaHZjTkFRRUxCUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURJN1huSCtadkR3TUNRVThNOFplVjVxc2N1Ymx2VllhYVJ0M1liYXhuOWdvZEx4NXN3SDBsWHJkZ2poNWg3RnBWZ0NnWVlYN0U0YmwxdmJ6VUxlbXJNV1Q4TjNXTUdVZThRQUpiQmVpb1Y3Vy9FK2hUWlAvMFNLSlZhM2V3S0JvNlVMZU1uZlFaRHJWT1JBazh3VExxMnY1TGxqNXZNajdKdE9vdEthOUo3bkhTOGtMbXpYWFNhajBTd0VQaDVPQVpVVE5WNHpzMWJ2b1RBUVFXckw0L0o5UXVLdDZXQ0ZFNW5VTmlSUWNFYlZGOG1scUsyYngyejZva1ZsdHlEVkxDeFlicFVURUx2WTF1c1IzRFRHUFVvSUNsT200Y3Jwd25EUkxWSHZqWWVQR0JCLy9wRXl6eEEvZ2NTY3hqd2FIMVpVdzliblNiSHl1cktxYlRhMUt2akFnTUJBQUdqWmpCa01CMEdBMVVkRGdRV0JCVHF0MEtRbmd4N1pIcmJWSHdEdW54T245aWhZVEFmQmdOVkhTTUVHREFXZ0JUUzd1OWFJbzA2YlZ3amx6M3loZFVtOFNWN2tqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQTRHQTFVZER3RUIvd1FFQXdJQmhqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFxUWFDV014VEdxVlZYN1NrN2trSm1VdWVUU1lLdVU2K0tCQlNnd0lSbmx3OUs3SGUxSXB4WjBoZHdwUE5pa0tqbWN5RmdGUHpoSW13SEpneHh1VDkwUHczdllPZGNKSk5rdERnMzVQWE9melNuMTVjRkF4MVJPMG1QVG1JYjhkWGlFV09wem9YdmR3WERNNDFaYUNEWU1UN3c0SVF0TXl2RTd4VUJacTJianRBbnEvTkRVQTdiZTRIOEgzaXBDKy8rTktsVXJjVWgrajQ4SzY3V0kwdTFtNkZlUXVlQkE3bjA2ajgyNXJxRHFzYUxzOVRiN0tBSEF3OFBtcldhTlBHMmtqS2VyeFBFZmVjaXZsRmF3cDJSV1p2eHJWdG4zVFYyU0J4eUNKQ2tYc05EMDVkQ0VyVkhTSklzK0JkdFRWTlk5QXd0eVBtbnliMHY0bVNUenZXZHc9PSIsIk1JSURSekNDQWpHZ0F3SUJBZ0lVZXg5blQ5dndaTlhTNDgzTGRpWUdmdzJTalNvd0N3WUpLb1pJaHZjTkFRRUxNQzR4TERBcUJnTlZCQU1NSTFsMVltbGpieUJCZEhSbGMzUmhkR2x2YmlCSmJuUmxjbTFsWkdsaGRHVWdRaUF4TUNBWERUSTFNRGd3TVRBd01EQXdNRm9ZRHprNU9Ua3hNak14TWpNMU9UVTVXakFuTVNVd0l3WURWUVFEREJ4WmRXSnBZMjhnUmtsRVR5QkJkSFJsYzNSaGRHbHZiaUJDTWlBeE1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBdTFNZXZueTlkeU85WlVDMzlTb01oTGNSL0RYcnRGL2NpTTEydGNpeTJFWEFaNk1rcml2VnRDZkVWTTlYNklTVEVuQlA2dVNZWW92NnBwdjZPNkpoMk5IbVltNHcrSm5TNFZuQ1BVN21IQU1mVkkyTUdUVE1WT2V3MHhVc0c3c0lTSWtJRFVCbXVrOFlLOWM1emljOSt2RlFHTElrc2RYTzVpVkZJZ05HNTNjR1hENFpMWm9BUGl1MFBFb3p4QXFZSWFJNGd4S2hPQTNTOC9XOG1JV3N1Nm9meWo0R3ZrRkc2WjdreUYzMTA3UDdtd0ZITHJJM0VOYVBXTU9GY1RhR2EwZHcrL3ZWUndqUmNFWkJWc3V1VC84N2NrU3MwYTVwa3QzdlpCbGFZZVQ4cHpTcmVWN21vd2NJTTkwTDJpYUFUbFAwbnhtYUU2bk95VGJvakZWbDJ3SURBUUFCbzJZd1pEQWRCZ05WSFE0RUZnUVVTWEVoM3NhM2J0RHVybTRNTS9DN1MxbFJ1dVl3SHdZRFZSMGpCQmd3Rm9BVTZyZENrSjRNZTJSNjIxUjhBN3A4VHAvWW9XRXdFZ1lEVlIwVEFRSC9CQWd3QmdFQi93SUJBREFPQmdOVkhROEJBZjhFQkFNQ0FZWXdDd1lKS29aSWh2Y05BUUVMQTRJQkFRQjVHYzNoYWZ0cDdoS3NFWnNvK2kvWjVuUnVxZG16RzJXQ2xVb1JVcWJhUHlnbG5KRGpLUi9rZmdPbDZpYmJGL3p0aG0zS21YUTdIY0RJUDJ4TWRHN1UyTDJpbWJKUUhxUGYvaDJIcW9qYjRyWmd1ZSs2VzRrdFNSNWVsUjlMMXJZcUUvU0dZTTRpRUtvVlFTdjdSVDFyeEllV2lLc3cvVnh4aS9RT25zeDNGN3g4MENDWWdCNEUzeVF4OFZUVzQ0MGhURXdUQTFlTUhPaXgzMnRQdHl5SElhOFBWVklmVnBIUUpCYU1WdnY1MDhVRWp3a2JVMnJuamZ6b1NUTlM5QTVqVVE4bUJTdmU5NXJqQjBkbzk4RVUrRHhkQnFYMitINmk1d2xJQ0ZnemhkemNzbmU5aEdLVDZselRYNGNJZEpzclkyK3hsZUswRkZReTZsR0VWTEVlIl0sImljb24iOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJpY29uRGFyayI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsInByb3ZpZGVyTG9nb0xpZ2h0IjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwicHJvdmlkZXJMb2dvRGFyayI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzFfUFJFIiwiRklET18yXzEiLCJGSURPXzJfMiIsIkZJRE9fMl8zIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsImxhcmdlQmxvYktleSIsImNyZWRCbG9iIiwibWluUGluTGVuZ3RoIiwiaG1hYy1zZWNyZXQtbWMiLCJ0aGlyZFBhcnR5UGF5bWVudCIsInByZXZpZXdTaWduIl0sImFhZ3VpZCI6IjAzMDEyY2I3NGZiMjQyZTc5ZThkYTgxZjEwZTJhNWU5Iiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibGFyZ2VCbG9icyI6dHJ1ZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwicGVyQ3JlZE1nbXRSTyI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOnRydWUsImFsd2F5c1V2IjpmYWxzZX0sIm1heE1zZ1NpemUiOjE1MzYsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6OCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoxMjgsInRyYW5zcG9ydHMiOlsidXNiIiwic21hcnQtY2FyZCJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi04fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotMzV9XSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5Ijo0MDk2LCJmb3JjZVBJTkNoYW5nZSI6ZmFsc2UsIm1pblBJTkxlbmd0aCI6NCwiZmlybXdhcmVWZXJzaW9uIjozMjk3MjgsIm1heENyZWRCbG9iTGVuZ3RoIjozMiwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjEsInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjoxMDAsImxvbmdUb3VjaEZvclJlc2V0IjpmYWxzZSwiZW5jSWRlbnRpZmllciI6IiIsInRyYW5zcG9ydHNGb3JSZXNldCI6WyJVU0IiLCJORkMiLCJzbWFydC1jYXJkIl0sInBpbkNvbXBsZXhpdHlQb2xpY3kiOmZhbHNlLCJtYXhQSU5MZW5ndGgiOjYzLCJlbmNDcmVkU3RvcmVTdGF0ZSI6IiIsImF1dGhlbnRpY2F0b3JDb25maWdDb21tYW5kcyI6WzIsM119fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNi0wNC0yNSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk3MjgsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWXViaUtleSA1IFNlcmllcyB3aXRoIExpZ2h0bmluZyAoQ29uc3VtZXIgUHJvZmlsZSkiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI2MDQyNTAxMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUHJvZmlsZXMiOlsiY29uc3VtZXIiXSwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNi0wNC0yNSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk3Mjh9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjYtMDUtMDEifSx7ImFhZ3VpZCI6IjMwYjUwMzVlLWQyOTctNGZmNy1iMDBiLWFkZGM5NmJhNmE5OCIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiMzBiNTAzNWUtZDI5Ny00ZmY3LWIwMGItYWRkYzk2YmE2YTk4IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ik9uZVNwYW4gRElHSVBBU1MgRlg3In0sImRlc2NyaXB0aW9uIjoiT25lU3BhbiBESUdJUEFTUyBGWDciLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9LHsibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sImlzRnJlc2hVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZWQiOnRydWUsIm1hdGNoZXJQcm90ZWN0aW9uIjpbInNvZnR3YXJlIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsImJsdWV0b290aCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQ0RUQ0NBYlNnQXdJQkFnSUVlS1JLaFRBS0JnZ3Foa2pPUFFRREFqQmxNUXN3Q1FZRFZRUUdFd0pWVXpFUU1BNEdBMVVFQ2hNSFQyNWxVM0JoYmpFaU1DQUdBMVVFQ3hNWlFYVjBhR1Z1ZEdsallYUnZjaUJCZEhSbGMzUmhkR2x2YmpFZ01CNEdBMVVFQXhNWFQyNWxVM0JoYmlCRVNVZEpVRUZUVXlCR1dEY2dRMEV3SUJjTk1qUXdNekk1TVRFek5qVTVXaGdQTWpBMU5EQXpNekF4TVRNMk5UbGFNR1V4Q3pBSkJnTlZCQVlUQWxWVE1SQXdEZ1lEVlFRS0V3ZFBibVZUY0dGdU1TSXdJQVlEVlFRTEV4bEJkWFJvWlc1MGFXTmhkRzl5SUVGMGRHVnpkR0YwYVc5dU1TQXdIZ1lEVlFRREV4ZFBibVZUY0dGdUlFUkpSMGxRUVZOVElFWllOeUJEUVRCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQk1PVGFZZE5QbFdVVnZVNk82aDlFeWJPRGtOQTBZbS8xTWJHdU94TDJTenpPdGFVc1hkTnpla3VISm5LVjVYa0I3bzFNeGZiY0t6VTg2ZU41WTR5eFgralVEQk9NQjBHQTFVZERnUVdCQlMrTUZ6UEtTRnRlZkVISDhkK2pvamRIV3BnN3pBZkJnTlZIU01FR0RBV2dCUytNRnpQS1NGdGVmRUhIOGQram9qZEhXcGc3ekFNQmdOVkhSTUVCVEFEQVFIL01Bb0dDQ3FHU000OUJBTUNBMGNBTUVRQ0lFTXJxQWN3THVBYUtTVTQwNUJ5TERnK3V0Wis5aFh1dVhIeTJFSjBQVzMyQWlCcGkrbVZTZHVwWjkweWFDOG5EcjVwVE9QVlVZbmF5N2pMU2JjaDgwV3Fsdz09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQVFBQUFBQjdDQVlBQUFDYjRGN1FBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBTGlNQUFDNGpBWGlsUDNZQUFHMW5TVVJCVkhoZTdiMEpsR1pYZFI1Ni9ybkdydXA1bm1mTnNrQkNhQUtNQkFhQkpQd2liR0x6REg3RThVdGlPMzZ4MzBySWlwL2plSzNZV1hhZXM1N2pyQ1NlMW9vWE5ySkJJQWtKTUFpRVFBZ2hOSGVydTlYelhOVmQxVVBOLy9TKzc5dm4zT0VmcXFwYnJZRjJmVlg3UC9PNVo5cjc3SFB1dWZlNk9jeGhEdjl3a2ZIbUhPWXdod3ZFcWxXck92djYraGJSUGw2dmk1YzZNNWs2VGFDWXkrVTJ1WHhlRHYzbWNpNEhJMU1vMUd0VGxTdXkrU3g5aGF6QzRNWi90VnJkbnMwd3U2eERacGxzTmx2UEttckcxV3ExalFncDBVWHV6U0JPWmN2MlhIYlppdTN3T2VEcTlmUDFXdjNFMVBqWTRjSDlKMzduNEpmKzhveml0c0djQUpqRDJ3cDMzSEZIL3NpUkkrdEtwWktibkp3MFR3ejNFdjdBQ0hrd3dKWjhQbDhITXVTcWZDNFB4c25WYWE5TjFiWmxjam5qRlFEeCtVT2VjdFZhYlIwNHFkTkN3RlJnVkxnUmxrVllaVVhHWmZxZG1MZWVBUmlGbkZldjEycExjSzFsOUlPSktQQlhPRFBKSXB0TTBidjhmekRUQ0ZLQllCaXlhZzhFdGcxbUNZUEZvM3IxOWE2d2JxTmw2bW55N0JrMzhPcXVmN3YzQzMvMXV6NWFTelNXY3c0L3ZzaUFlVGpCTkdGd2NKQThzTWxjTVlyRm9zeXFxMjRHRXhYQ0RNVWYyc2hvNVhKNUxaaW9XMHhGZnRJUGZrR1lxWlpoU2xwQXQ0TEpIR1luNDh3SHd5ejNiZ0J6RlJuREdLbTdXZ1ZEQmthaXdiU01reVVUWmdybUh6T2JnWFlPL0dBR3hPNkxaU3hMMXpxVWpOOE96VUV0NGpaNG1iTk5udDY3VFdoTFpHKzZ4WlUyYlVVaW56UE04dkNRTy83Q2MwY3FQWVhOQi8veUx5Y1UwQUxKMXAxREM5eHd3dzBGd1BTNEJwdzdkMjQ5d295TDlGczBBOE8zV3E2dWdtMGUxRUF4VTJDcVRENVRyMWFxbkZVV2tZbU1vUUpqb2ZPcTliNXF2Ym95bXlIaldQZlFDdFpBa25vZlpzQ1ZTYVl3QmlQcjFEc3d5NjJsVGY0eXlFQWNTMklrOFhZcUxhanRRRU9BSDA3NlRTRUtJeExoS2Y4QTgwejdKMXhOWVI0cHorbG54SURZMmlaMjIweGl6Q0pLR2hlYzRQVWk3citBM0szdmNSMWJyNEFOaFZGNTZtN3E5Q2wzL0ljL2dIeDJIOXYzeGIvNkluMWJvVG0zT1FocjE2N3RXTEJvMFIvMGRIZjlESmhtdmpFUlE2ekpQQ1A1OWd0aGdCOFFac1NqSXoxVFlFQ24zSURjTFFhNjkyZ0tnZE44bXYwRDBpSGUxVDU2YTh3WWY4WWNERE5HWXdPR1NOYVlzOHo1TWtJWVJBUnJuM1MzUituOUgzVEZqZEFBSWtBQURBNjQ0MDkvejlYcXRVZjJmdUZ6ZC91QUpzenVDdjhBY2ZYVlYzOW0wZUxGLzMxcXFpeVZTcEJoOXJhRHMwMUErL2h0UTFLWVhhd0dUSnZvQXJ0KzF0Ri9qSWJVUlRYcTJ3ODlQL2RwbCsxZjRGMEE2alU1ZU5LZC9ONFRybHl2VFk1UG5WOXcvT0dIeDN4b0N0UWY1OUFDUGIwOTEyQ2Q2aW9WckpBck5TTzRxOVc2cU5hT2FxMnAzbzdRV1duaUdybVpYRVFvbktpVlh3TkZRSndtdWtDMHlyK1JoT1lBMUNCeDVlQU9ma2wzOEx1MDFCSlJlZDlzdENwaGdxaEtYaUJsZSthNVRDNFB3aEl6RUplWERLdTdVbWVoNXdQSXZDWG1CRUFiWU8zZVJlWVhnN1hxcURlTVprSWlucmR5T1RJOU1ZNVJsSHdHU3FhSnFWWGVDV3J6aDVTZ2dPQU9ma2wzOEx1MGFMeUNDRDlKYWgwSjFCYXRJamRRNDBWRXJhTkdkQkhJNU1IOFlQaE1sb3h2aEI5ZHp1T0QzbXpDbkFCb2d5eHZBWEZLYnV5Z1FBR3R3bHBRMHpnUWdUMWVEL2svNURScm11MWZxN1NYTTFyVlZpM1JxdDFGQ0orSkVua0ZKUDFpZXAxL25QM0Y4Tnd0Qm5GakdBWFFYUmxxVmZVNUFYRGg4QnBzMU1pTmYyeGNOZkRzL2tKWHAya09GNDlXN1htcGFUcTBpdCtlTG40Y0pPSkpxclFnenZoa2Vta0JudUFmWDgrdDJuVHZ4emZTMG9nNUFkQUcxV3IxTW1rYkRZQUV3cUJvcGlEVU9LZ2lBZmUySUp2ZDB0UXEzcHRKYXFZR3Z6ZUN3blZBY1UrbC9uZzd1YkZ0RkpQL1pzM1dzdTQyMkpyQTRNc1NtemF0ZlZkdmI5L0hjb1c4N24vWHF2WHRma0V2cUdFZy8yaEExZDlRcTljNlFuT2dQZXZaYkdGWkxsY3F6VzZ6cUVVemVxOFdJVzhpa2xlZlRVWGUydEplZXJ3WjlYbnIyNnovMXo5ckdrQUM0OGVPdUtFbnYra215MU91V3F1N21uUC9jOStEZi8wWkh4emhjdXR4WWMyYU5lK2J2N0R2YXhCOE9idUY1d2QvMmdCZ1MvbVpteEswcTZzSGJxNnRMclNKTHNzbWJZTWY5N3ErVGN2Zm9salRsYlQvMS85dGt3QVlPd29COE4xdnVLbXBLVmVwMVRpc1g5ejc0TjljNjRNalhKWkxnTzZlem8va3M3bmMxT1NrR29EMzhrV1FoblNYSXlxN2N0bW9JcXJxdGwrNVV1RUJDcThsOE9kQ2FEYTQySFRUNFVMeWJCWDNZbWdtSUE0YmNSWVVxN3h2SmlXTDBDcjhFbEkyVGRucENQRWJxV1dlbnZCamJkMmliNElMOCtDMnRmZjg3LzN5VE9DeUZBRFpYSFp6dVV3bTVuMzJCRUVQZ3BFbXhEZmlmcW0zNDRmMzd0UHJxdGRKWEtlQmRQeTNWYWRIWWJtTHBKQStTYTNpa1ZyRmZTTUk5Y0xnYkV1KzdybW9EUUsxeXV1TnBzWXlYR0pxcUhzclJyNTRBcE0za0NGMndDaG1zK09iNVVnZ2lubzU0WnBycm55NFdxMS91QWJWNTJMUjA5UHJpc1V1Q0pPOFNZVkxBbllJRE9iWDBQSnR2T2N3aHhodHhtSHZyLzBiREp6MHlCazllZ2hMZ01laDFVTFRyVmE1QjBEOEVwWUIvOTJzaHN0eXZGMTczZFVQbGFjcWQ5djYvK0xRM2Qzak9qdDdYYUZRa2tidytuRkpNcm04MGRCRWI3c1dtNkZBYjFWNWUzN2xOL0hyV2RrYm8wY091OVBmZTl6VklnR2dVNmYvWmUrWFB2K3JGc053bVFxQXE3NDhOVlg1eU92cGthNnViamR2M256WDBkR3Q1VUF6M3JqdVRndWNTM3dkbjkwbEwzMURocTg3L3haUzk1S1hPWW5YbWZrYldyYUFOaGZwL0dlLzNzVEpFZ0JQZlNzV0FHalBlaWJ6OTlBQTd2UlJoTXRUQUZ6ckJVQ0VXVllUMFJnekI3Vy9XQ3k1aFF1WFFBajBhMlBRMEw2YnA5TTJMR2ptSVRJYnhwL21Nc0tNMS9KQk0yUVRveUhpck5JMUZITEdORE5FbU5VMUx3SVhNdmhibG1HbXpyZ0FOT1VrajlubFgvZ24veUo1Z3h0VXh4TGdzQnVDQUtoWHlxN001MWxRVnNRNXNQZkJ6NiszZUlZTGFZTWZHMnpidnVYTDgvc1hmR1RwMHVWdWNuS2lpU2xTL1FZN21pWnlNSXd2eWpoeDhvUmJzM3E5VzdSb2ladVlpTituRUJnOW1XZnIvSk5oaE9VZEFZNjBNK0dDMVZ6K054a1JhQkkyRGZGVFNIaTFDUFdlY1VqN09ESFNUcmhhSm1xUGFhTXJzSDJNS0tUWjhvWWpYYlRtNjg0VTNncHhtdG5GYndSVDVUNzl5K0RrTkN1UFFBQlFBM0RWaEFDb3U3T2xVbjNKamdjZW1QTFJMazhCc0c3RDJvYzZTeDEzeit2cnM5MThlcUtCK05lK3hncU53TmRSTFZxODFNM3ZYNmhiaDJIM25PM01uVmZiT1E1K1RFbS9zQ3NiL05CQmFuanIzRWJoMGRxTTR4RWhUSUFSaGNnZXVSSUJhYlQybmo1ZDJndXVWbkVTWlNUa2F2QUxhQmRtL3RGUGhLYVlMZUtrNGRzNjhUdHRkR0RHTEJPQmJhclZBTjhiVFhHYkUwYytzNGdib0pBMndabGYrQXdIWlNxWUdzRHA3Mzg3TFFEZ242dm1GdTkrK0hPbkxGWm91Y3NNNnphc2ZxaWoySGwzWDE4L0JBRHY1eHVER2svT3JzcGpZMlB1M1BrUlMrdGJWdmR3NGVZZjh6WG1adjY4eFdmNWNyRG9hb2duSVpHRGtQRGhFaGplUDU4dnhISGd6MXVFZkp1ZHhhV0pxOERVOWVBWDNEbkU1UVZDUEw1eEtKdEJlcnVveXFBU3dzcWxUQ3VvT3Y0bmFZK3Q2Y0VzbDdjVFBqVGxsMFNUOXl3NHFHV01scDVXeHhtQnRKYThWU1pwUDdtYW92blVyWkszaEkrdjN4YVlkVDZHS0hxenBRbjFUMzRLditsMkdlRkp3S2NoQUNvVjdRRlVNVTZaUTdaU1g3WG5rYjg5YXJGbTNaby9YbGkzRGdLZ0l4WUE1QVpWTkppenFQYkF3SUNySWluM0FqZ0lDZ1V3TEppWVRNODh5WUJrTURJb2hZQUVBZ2xweGNnZytvbDRBTUg3ODlyVkdoOHpaa3dJZ0p6bHc3UlQ1VW05STBCNU1TZkdRVkZaNm9nSmNUMEtBenVvQkgvR1ovNk1tdEJBQ0taak9Wam1mRDd2aFkyVmdTYmpGb3Nkcmxnb3dxNFQwOGlyRXRXTndrc3RobmdFNDVWS0hTZ2ZTb1BycVF6d3B4QXlnV1oxWm5zUTRWcEVyREdZcVYvL2s3U25mdTAvc3BzdHRudVhkNXRuSEJUWjRwRFlDOWJnamtJVDRRay93dWVWOG8wTVdMeWQ4Q1dLSVdmczEyUkxHWEZvQ3JoK3l4RHYzLzFMdnhMMVVjRG84YU1RQU4rQkJsQnhGUzhBMkN2VmV1YU9BMS8rL0JNV0svVE9OT0E3OGNybHNyMzNyZ1dXZ2s1Nk0vRXplMHk1OWVQVjhSSlU3cWF5bExCZzRkc2hKMnMxaFpXeTJYcVpsakord1pDTk1LK0NPM1JvLzMvR2dMeXRyMysrR0l2VnRQYkJqLzFIRFNwdkliWVJSNDhkbFFEbzdPanlQajZ0b21WY0RnTStsODI3S2xRc01tRklydmZLaHR5alFXaHBEYlJrWEFtTVZ5cDFnVWx5aWw5RlI0MlBqN2p6NTRmZHhNUzRtSndYQzhrWWh3ekx0K0RTWDIvRDlVeE5acVdiR2tFWUZFeEg0VUxVVUJFeUpZc1RoSVFFR1FhR3RCajg1Y25zWU9CeUJXMUx2d1F4TThibHRiaWJ6SERtRVFraGVTRi9McmZnWnZ3QzJvZXZTMlR6MStxOGpzWE42OTJqcUhOSUF3dmRFTmk2ZmdYWFo3NFVRaFJhUVlzeHdZSkVLQ3VGRVAxNWdqTUlHK1pCUCtaQnZ4cUVMRTBUZEJSdWlmcWtFTnlocFFNUTE5dGl5NFdpT2VHRjVkaytVakprM2kvL1gvaE5sMy9zeEhFMzlJTWdBQ3BhQW5DWVZ0MHNCY0RQL2R3bi8vM3BVd00vbjh0bGVvdWw0a0swSFAvVmlYd3pqcjNOaGg0K2diZW8vL0ZqRFkrQ050UWhmVUZHOWxhQTFtUjBycW5ac2V4OERtYWJIUnM3TWM2QU5nN3dQYS90Y1dQajQ2NmZHZ0RpV295RUVKZ0ZZZ0hBTjBrbjBvQ255SllVQUdTNkt0WlhpYUhpSytEZHlYTGF4VDJ5TFFSQUZRTGdmQ1FBT0lBRlpKSE1uOWRtKytieU9UR1lCajJGQVBLaGxtS3pibFNDRm1BT2JaQU1nTjJXSzZZWldKdGJCUGFKdEJEMmhiK1N4VFZ0UXdKSC9tQnVMVm1DbGdRL2hETWtsTE1LRlpWcGpGbnRldXh2Q2tUV016QytqVHRyRTExVjVURm9mQ1Rpc3BocUorUkhnYU0yUnY1TXh6Nmp0c0wyTDBDN1kxMlFWUGtuODJ5UG1lUE1LaHZCSWtiUlo1MHVqZDUveXR1QXljNkRBRGdKQVJCcEFCY2hBUDdQZi9FckQ1OFpIUHB3WjJmUmRYWGE2OVJEUTBWb216cU4rRGFhUVFNWURUOGRVbG0zZDZRUVFwNTYraWszTkR6cytxRUJjTkJaa2NrNFpzNEdSNDhlUWNQVk5Oc29UU0laR1k0RGl3T0pnMDRkRjhMUjBFbW5Sa05vczhoT0RhQ3poUUNnQmpEa0JRQm5Oc1JuWm9vUjh2UUNBTzBuQWNBUFQ5Q05mRGhqYW9aWEhFbXFDSkUxbEdVNk5FVUpIbWJ5TjRyU0ZQZEN3SklHV3hzZ1FQc2RLSGZFV1BTajBBTXpzMlVpRFF4R3ptczltcVRBOUFGc0x6STQyNW1uNDZhbUppSGdHUWNDSE9uWnozMTlDNlNKd0VOcHd1V21SL3RZVVhsbmhFWFU3NnpUR0hKTGxybXVqMzBDOVUrM0lKY0F3ODg4NlFVQWxnQ29JMnZWS0FDc3RWcWdBNE96dTZzYlppY2FwVVBFUnVLYU9LTEM3S2lyc3l0Rm5GVzVucHlPT0xnanlwTktub0s3bWZLZXlLREdNa1N3eGVac1lMRXhRSkZYdkxZMnhnb0RrcFFDa2pUbHpqajBES01oR2hWTk1TOEt5Z1Y1VW1PZ3BLOWdScldCN1FVVGtDcmxSVjJXaVVoZUtJR0NENnNUS1BaTTBMUmdQaGF4N1I4eTVwNkpackZhb0txV0tyekZ5d2UreWp6c3dvZTdZRTdBajFTdVRGbDdlSm9Fdy9OaE1LYmxPL05LbmQydXE3dlh6WnUzMEMxWXVOUjF3RDAwUE9nT0hkNExJWHdlOFd3WndyWnI2T1VHaEJpTmhGOFlUYVNRUnRBWDQ0bC9pTlNlUWo3ZWpyRlp1dU5PdFpIMm55TENaSEpxd0RRbWRRelJ1a09tRVFBZDlhN09IdGZUMCtOS1dBZDN6SnE2WFNjYU15SzZrNVR3WTF3MnZNeUxvQktwUk9wS2tkUlcxRFdxYnJJTkJGcVMxQUx3WmtOemh6MU5aSDRqOWhzN1Fndi9CcVRhWFZCRVQrbEEraGpTK2FSZENjUUpFTWtZaGV0bUNnRnFEbVlhOHpDVHBsenBrZmE4Q0lSTVlySy90Ry9hY2FsZ21jVlh2QmhZb1NnUXVQbEtrMk94ZDk1OExCOUhzUVE4NUU2Y1BDcmh3ZlkyeHBzbElXZXdhT292K0RKQ1UveEFjYXcybE13dDR3cFhYKyt5OHhlaUdxaUxCRDdOdXB1Q0FEdS9mN2VyUVVoU0NHUVJCdjBKcVpyYmlubTF4Ty84aDk5L2FQVHMyTjJyVnkxeml4YnA4MmNldUhRcVZac3NFS2x0NWlrMHgwcjd3RFZ0UnMyQmYvb1hmK0wyN04zbDV2Y3ZNQ1pBSEN2enRCbDVXQnd1QWRoc1hSZ1VBWllUQ015dmI3bEI1YTVoZ0lSck1FSTBJR0drcnRad2FTNEJxR1Zsc3R6a3FtT2dOZXdCb05PWXI4bVdlSml6VmFtUlVNalpIa0JZU3RWdDF4NFZaUmlKZHgwaVFlVmpHUm9LRXhDODJ3UWJwdXRYaHNRbGpYOWJJRVNGMlRaT0N6Q0p0VGZTY1l6NXdkaXlWQmVTY1FPMFJ3RWhldjc4R1MwTnVKOFVyanM5NGpodFl6Y0VtSE0yZWNmSVFCdnZ1UDhYWU5wbkFnT29BUXo4NlB0dTdOQStqQjJNWUk0aDVNMmlZNlJXYXE2d2NkL0REeHp5MGRzMzBSLy95Zjk0YVBqaytidnZ1ZTh1dC8yS2JkNjNGVjVISzc5dXRHZzBlUDNpWno3dHZ2dmRKOTM4K1FzdWZoUHc2RkZrbFpIR0VpTWVjQklBV0lQV29KSkdBNk91cGpZN0FXdDB0WWJMU2dCQVk4cGtMbDRBY0tuRWNoZ1FWMHNWM3VwajJVd0k2RzRDTDU2NmZrTmhQR1lSQldBSlpGd0VtaE0xK2t5WExkdkFOQjFibzNQZlE0eDZnUVdhZlV3VEJLT2o1M1N0eFl1WFlxbHBkeVhhSWRINzB6a2FYRUNUeC9RbzNIQ1R5MTkvazNmRkdOUDNBQjUzbVdyWm1CL3RSZTRuSDBBYy9PbWVSeDc4UDN4VW9lMFNJRHlqUFRJeXJoM245cFI5QzZsRmVRcVlCVkdyNUV4OGNRZzVjTGlBRXJOTkNzbjh3YTJlUGJ3L2Z6eFJTSkFpbU4xVXMvWmdhSWpSZVBVb0pmS2xzQWhrMTBGc2I1Vy9YeExFRk1KaVFoUWp5N0kxTVd5NmNGQWNLUkRMWXVVUnpRalcxQlBiUEFneElNby9BbHVjYS9YRW4rK3JaZ29hVVRPMUMyTjdkSFhOa3pEbHNtQmt4QTZINFYrRXk2VVF2RVQ0aWNuS0VEemsxaCtjVFhGbm9JNE9sN3Z5T3FSS2c3ZHFoM2UrcUkwL01yODFsaG1veDhucVpJSDNDMU5BZHEzeGgzLzRSdy90ZkhubjNSLzc2WHZjN1hmY0lqOE5ITFBJenA2UUNkTFRSbzNFUWVmamtKaFlkZ3d4Y3pPUGdMZ29haFk1cllGWWEvM1I5SzBRM0dhM3VBRy8rdXUvNnI3Ly9lKzcrUXV3QkdBUCt2aUUwc3dDdWcxWXJidnVubmx5aC9RQmtRWVFsZ0FobU5YeXB2OXBTQW1nRER5QTAxbnExc0JpckpRR01HbDNBVUtieGZuNE9rUkxBTjVUejFzOHhORVNBSDgwN2ZZWEJyRVN3TGV6QzFFUUQ5cUY5L1FFdjFadEFxOG1YeDh2S29kK1d5QUthSTdSNkJOSFRZWllmU040cDBZTzZoQjIvYVhoY0ptajBNYWNad0VraWRLRzVBMlhqb3ZGdXhCVk56cHlWZytJY1Vrd2UzRDhlK3MwVUpRb1h2c0UrUnZlNWZMWDNlaGRNYzRkMk90T1AvYzAxdnkyK2NmWm4yUERlRFB6aVQxZmVmQnpQbXFFcUhxTitEZWYvWGNQUGZQMFUzZi96UDMzdXF1dXVsSVp6WTV3VVRJKzdDMkZnc2dQYmtodU96OXZKOVM0d1NhVG5acHlXMGRMNWN2RmJxVURhYWVlZjZwTnh2M1c3L3cvN3RubmZ1UVdZQWxnMTRuRCtCL0RIQ2t2RHdxQUNsWk1QYjE5Y2pmR2xBQ0FDczQ2Z2dzdENOWlV0K25hQ0VMNVhLWHM2bFArR1F3VXBsaUFBTUFTSUp2bHJhenBCUUREcVNsRWpOY2dBT1NIUEhVYWoyMER1N1doV3NWbDBRNzVLNitSdlhyb2dLdFBUcWdNbXZGMDI4em5pM3JVK1NtMDRTR1ZOMVVieHZmeENOb3kzVDB1RXhpQjE4SzFmV0VOTEQvU0NhaGY5ZGdSc3l0YnkxdDU2dC9pV1g4WldRd1BPRFJ4ZUR0aE03YWxiUlRzRmkrSzZIT1BvZlpDbVhuYk1POXZIUkxKTVJzRDZUWEdFSTUrT1RVMDRCYk9YK3g2ZS9uZXlEWklKRS9tbEFaQzdILzJ3QktrOVBGUE9hd2Z2WWVoT2pubGpqNytxS3VOblhjWmxORTBnSnEvLzE5LzlMV3ZmSm5mQjdTMVV3Snh6UnNRR29FSE1yaVRPSHZDUlZFQWt1MUlKeWtSQjlRYzNrQlcrSVNiSnNvRmlreVdFMkVVS3RIT3Q1b1VkbThqNUMxTGt2REQ5QkZGWG9iR1VaTUNCdENtTFM2M2FvM0xMbHNSVVU2MDNNeWx5MTEyOFJLWFhia2F0RWFwbExVdVlPVXptTHNkckJqdEMyTU1ZSUl4WGhjYlUwaFk5Sm9LcTBIY0JVMkFnbWhxMHRVbkpseDlaTlJoV25QUWJWMzl6TEJ6NDJPdXVPMEtMS2Q0TzVXYmlrakR2SGtIaE1KR2pNWjhjYTFWYTExOWZOelZ6NTZCMERqajNQQ3doRWQ5YU5qVmhrNGJuVDdscWdNbjFVZTVaU3VSbk1JeVdSZlVPOUhnN0FmcmIrc1Q4MFY4L012Rkh5c0N3djI0NEYwUFRTcXdlei9lQ3RORW8vd3RUSDFzdVFBOEhwMTFIY1djNis0c2lycEtCZGNKZDZtUWRTV0VGVDJWc0t6c0tJTHhRRFFYTDFqb1RwMCs2Y2JHSjFTMmxuKysvVmxYYnhqaHlvSDBxL0JBY3FiaU5GSnU3Y1ltNWlmT0hkenJhdU9qWElVcUh1dUhKaVIvak5jcm1WK0NSeFB6RTIwRlFOaUVJc055YlJFUkd6dWkwQUZ0U015ZXBNWTQ3Zk9RRmlFVGJsK1dNQ2hDWjRzVW5nenpIVXlEZGptOVgyUzJneEtsclcyUzVGYXNkRFV3VEJWcVYzVy9KOWdyQjE0RHdZUzdjbkNmcXg0K2lEeHMyR1VYTGJiRVFEcGI2N0paWVpxb0dFSWFRSUl2Ty9VRzE5M3JLaWVPdWZMeG8yNXF6NnV1TW5RS2ROcFZoays3NmxuVUFReE1xcHc3NjZybllEODE2TEpMbGxwNmxwM3R5SXhoaEw1M0VHeEtOelRvcWlQblhFMEVJVEk2Nm1vUUtMVFRYMkZqSTdwMlp2NThOSnd0V1VJL0J0STFXR1R2SHpFc1NTRUcyZmtEQ3VHcFNTSXhYdlNuL0JONUlweXFQQ3lvRWs4cThoQ1ZFZDArWTVuVXV1dzBLb1VnMjlmY1BSQ2lpeUFFVHA0ODVpWWhUQ1BHYlVmSlAzaVlZRWlHQi9LMktLQ1pjbHV2akdJSDRzbkwwU01ITmV1empDeS82a3k3eS96MjNxOTk2VEFzTGRGZUE2RDRBSkl6dXNqUDNrYU5ETjVBN0l5TG9uU0gyb3h2SFJqYzBleFBvdHRYT3BTYmJnUDhnaTFZWmdRYWtydTlWTzBqc0xFOW9IcG5NS3ZXQmdlOFJ5dll4Yko4SHFGY2R0V0QrMTFtMFJLcGNNbGlwSXNVcnBHNFZnSnRpeDlGaitzcU95cWNXYmpZVlU0UHVxbGRPMXg1OTA2VWhTOUxSU2piS2trK1BxbENabDJ3U1BWTWdvelBjRmVFZHNBN0xCQXFVWG9SSnhsZm1LUS9TNFcwRlN3L2NtdldLb3dNR2NYeC9aY2t5eVlSWmxuNm54aUt5L0JvckhoU0NrWmdNSzlsY2ZWSE80SjRDVEswb3RFektycWxwL1prZDFQQUpnd21BMG9yeXJqZTdtN1gyOVByVGtBSWNMd0d4bzVJbVprSlo0b1k1RVBzVHdIZVAwbm1GVkVXMTh3c1h3VmJHbE1RNGhVSWJvSDE4SFZFc1E2NTJ1VC9hd0d0TVkwR3dJd2dBTkJ4all3ZGF3TXhrMTRzcFlRRUdSelhsU2svTWo3SisvdkJZSEZnWnhoTnVYM0hzN005NE8wdDBRK2J4djhGbjliSWNkMjhHb08xQlhKUTZibWUxVHByT2tCMXppMWY2U3FRemxSSm1TYTNOdlZDbGdSQ2lkalZGNGRRbXBBVGRIYVh3VXhlUFhGY2JVUlBNOWxtakFEUWpQek5KSlgzditheWE5WXBDcGNBOU5QTUQ1TjFxaDA5REtzeEZ2MzRwejdBSHdjMVRmbUxsSTJyblQ5SGp1TzJlcHpPcDZWcE1OUFMrVEM1N1NmOVJ6OExDK09BOXRqZi9BeVdJdktUUHhuWDR0bVlZeDB0UHZlVzlNQVZ5d3VRU1cxcHhVbVJyNCt2dUhrOVhUd3c1NGF3N0FsTUdoRitZakltRjZNanRER2NIdlJOLzZYamtMTHJtbDdxSzR3Y09SVFAvZ0Nyd0dQaC8reW5mNmJ2OTMvbFh6L3o0S05QZnUyLy9kbmYvRGFDbUcwS2JRVUFtWW5nWjdGajFkOFlNOVlHR29WRElzeFRVeHBQd2I4dGhVN2hvSUpkRWw2ZFpFeHV6RS9UeDRIYk9wS21pZzdBSG15UkpSQitGTmZpcHdqQlZheGROZE0xckxjeWtQclVEdXJuTUpnYndZUVJ3Q2hMbDdrS3RRUzBqWHlnWXFPQUxqdXZyeUh1NjBGRG55Ynl6YTdiNENyN1hvT2ZlY2F0NGRIazlCN01jZ3pyU2JSdFpsNi9SaDhGR052WmRYVzdPdXBmTzR1NmVEQlY2Q090dmVtRC84Q1V2TDVNZ0p1UStmV2JsTXJhM3NJSnBxUE52SUk5amtORFVBREpVcWhjSVF4Z3ZPamFRS3FGNEdWNVd4aC9VV3Fsb1QrWmxNekQrLzE2cmdDSkF3TnlqT3NiRWpBdFhzSDF6K3QxSTZQbjNSUTBxNGpKUFpsYldVUmxzQ0FmNW4wVkx2L2dpSHdqVXZ4MXpaLzM0Mm0vOGVPSEVVTVZFTEVlOTc3dmcrNzJtKzdvVzcxNjA5VXJWNjI3czFEcytIZi8vRjkrTm5VR2dHZ3JBTmdvekN5Y0xXOVMrY2w0VGVRMWd3UUZ3ZEFZdDNWNlN1RFliUVBLKzdGaWdjbnBGd21CaEwrM1c3ZnlsM1V3bXlHWWphQi9vR0N0WTdBZXhJeTl3WHZSRXlyZ2lsVlkxMGNIcVpyaHMzRGNrVis0eU5WT3hjc0VCbFdQSG5MWkZhczV4WGlmUUVUUzNneU5pd1kwK3lFOS9qUDhzaEhiWStROG5IR2V0TXVsYVBGZkN0NVpQckRYNVZhdmsxUDlBVXNXV2hIM09peURrTmFJZmFKbGd1SXluRkdzWHhoWGczUnkwdFhPWU1iRUVvT3BGRWVHWE9ZUXJHWk1MNUlMaUN3K25jOWJMaVh4ZGcrVk1CSEY0UE1VVVhod0w0QXpmZzZNVCtJVGc5ejR0RzRpaWZuNWNnMFEyNEozb3dxRnZPdUdOdFBWMmVGT0Q1KzI2NFBFekdZRkdmUFNNK2t2eU51SGU5OWc4MGtpMG5oYXNweFJVaGcvTmVocTQyT3FBN1VBdHZVYWpLOVBmUFIrMTllL3dQWFBYK2o2NWk5eWk1ZXNjSVZTOFE5Ky9iTy9nOEVYbzcwR1FBYURhY3hQaGdkRGt4RURKWmg3NWhtZHdnQm1rbHJHQzRTTzhhWUdGVHZLTTd2QzZQYVZUZGw5bUxVWWUxMDFnUjlOdGRFc3dFaElnNy9heExpcll5Yk1vaUdKTE04VndLM2JhRE1nRDhGUmdScmRoS2twVjhPYVBOZGlMUmZBMGdkcUQ2c015MmtXSzNkQWJ0MTZWemw4SVBieGxpaFBXRGc0SThSSllXV2JnZEMvbFdPSG5WdXlUUDJkd1dDcVFkMnRUYUlPRE9jMVpkSXdleVFFTkg1OFByNWZyTzh3WHJnVVdvbjZlNVU2aGdvVnBjTVBiQ0VrR1pHK0ljUzdHRGZFeDQrbDkzYitSZUdLWVdIZVRnYmtyVk9HODJFalRuOGhqTEF4YVZvYzQxSXowTjBXMkRuVStxSFJqWStQdWdtMEM4dXBQMWFGUmZiRk5pdjlMVUNHOXlmTTI4TGp2emhPaGh2SWpOU0FNVXdvRkt3a2xwK3QvdkVQMytmNiszcGRaMWZKcUxQa3VydTczWkxGeTNvckU1UC90MDhxdEJVQWFnTWFnU25KNklIcGc1OXZHQk1HSmdqYUN3TUtrQVloa2lJT0VMTnprSWpaTlpoUU1mcHpRSVV3SDE4ZHluVGVWQVBRcms1dmhQa2d0RVZZTTBMZTFlTkhNV092MUlaWWR0bHl6T0J0TjFTVmI3YXYzMlVYTDFNNUtTd2F3VGpVQ2pMb0VNZVhZSmkzeXB3RSs5cnU1MmRjcVZUU3NlYisrWHhOZVFmUytGUWhUU0t0eW9DbEI2OFJuVHNnb2lUSlFSUW5ESzBpazFZTnhxeXJEWjF5bWY3NVdrNlFhZGtlYWtPMWMyaHZraVV6dXg4OGhMS040NHNvV0toZHJlS3RVVVVRRUJLaUt4NzdHQmFYUWR2bmVYM1VLeURFTXdzTk1yQ2l3ODdyb0oxRG1JNW9XeGd0c1J0MWhNV2VtVUM3aERhblhWRlpCb3haM2c3OGlYZTRqbHR2ZDEwd0M1M29OL1FMOCtONHowTnI0Q1B6Mmd0Z05zcUtlZkNYN1doKzh2S0d3bjFBSXNnUVBFSkMwaklJek1qZmlNdXRTV2hUQWdyRFZ1K0I1bmZYYmJkZ3pQQ0ZPa1pjeFJaTEJhemVlbER1N0tmLzVXLzlnYzFvUUhLYk80V2Izblh6SndaT250aXlmdDBhcUE5UVpYR0JxQU05QTZiOElnWTEvMEJ4ZUlMNEI5TVFhbVJRUjVqTi85SHFiZDQwU2VsVEJSTlFqdmo1N3ZlZWRNZVBId2Qvb2Vic1pCOHh6anNKNzVjMjNIbmV2a0lkU3dXMElEdDUweFl3MWFEdW5XdHpEV3BpRmxSbm5oZ01HWjdMaDVUT2I3dkNaYW42RDU2VStoM25HSU0rMmZLVUszRlRaM2hZZmh4b2VzUjFhZ0xDdE93V0xwanYzbkhETzkwZHQ3L0h2Zk1kTjdvcnJyaktYUW02OXRycjNkWFhYQXRwdmxUMTRhT3JCTzI2MXc4MU5yZG1uYXNlUEFCZnNBVXVadFZ1TGdjRDFKWU1RN3ZWL1ZGbU1qN2Zka1NUL3BsVnEzV1lLSU9CanRHdU94czVhQU84RTVEcG13OEJzVUJha21qaFlyc1N0Q2RyNzlEUFZrWmpISXlOOFhFSmxHeFByNlZEWHNvVEFqVFRUNExRSVNHL3dvWk5McjlvQ1pZTjBFQk9RN0R4alZEb1Y0SmpTUmNFc2V6aGFncWxIL1YzSUF3M2pUM1dFMlVwRk1EWXhid3JVcmhURzhFWVpwVVp4bmhoTXNzc1grbHlpeGNyVGg1TVZGaTR4T1ZRbHN3aUxHTlE3aHJibzdmUG5ZTm0wOXN6TDlvNE5NVDFiNDNaaFdldnZjRTVmeWd0b0lxeGVHN1BEbGlndGJCTlVkWVB2ZWNuM1oyMzNLZ2JXRWs2UFRqc1RwNDQ2VVpIemhjeTFja2QzL3ZPNHk4d2o3WWFBS3B1Smh0QmFudXJtYi9GcksrNHNUdWRKazBXbHRZS2t2c0ZVZHFFWDVLU2VTZnRFUnJhVm9PbENmUURjWVFFQXdSMkFsOGJBL0JBQzJldExEb2dCMllRcmNEZ0JXa1FZODJWWGJwY2d4YWp4N0tOYnFFaGd4YW9qNDJKV2NsUVlYRFN3bGVTMzNIN2U5MTk5OTBQcHI5UzcyU0lZUkg1RU5ENjlSdmMrKy84Z1B2b1IrOXpDemtRRmNiQ292NDhDOTRCd1VVZmVDbC9id1loYkdGbWovNFNkakdyWndRSmQvelZ1QVkrY3RoVmpoN1IrUVp1NlBIV1h1WFFmbGNtSFFUdGUwMGFTTWEvNG90NXhMRHJDbVFTQ0t3Szh6dHl5RldQSEhFMU1CQTFMSkxaZVIwc1l5RGtsSkxscHNVenY5bzZsVDlCSVFaNDcxQlhSUXRSbVEzOFRZdGtHR2Q5Rk1jVEl3U05VK01KeERpOEpValZ2d2ExdTd6ekpUZjF5b3R1YXNkTHJycDdoOHNjT2FDN0Jud1RsUlZUQldWbWdvb1JPK053N3hjSDBTOUo1bFh0dGlQcFZnbWpNc1lReDZVVjJYSzg4NVozMDlVRVpzVTY4SVVuVStYS2U3MzNORXNBWDREQVZDSXZCR0ptTXlGQWU4b3ZzcytDbEo3NUJnSEQ1VVFnZTV1Slh1cUF3ZGVPdURFamU5bnNWSmxqV0NlcmVWUWwycXl4U0drRVgxQm9ad0d6d2I0OWNNTThzTStJaDN3dzRGTzBhNmVyN3QwanhxaGlZTGNEcjBCdG9YYjJqRDl5YTU3ZFBUM3VveCs1MTIzZXNrM1hacm1sUlZtTXlFeGl5ZEtsN2tNZitvaGJ2ZHBPR2hMYXZPUkdJeE9BUXAyWklYZTQrL3I2c0M2MHR6d3BqRUZ5QWJCWXRXMm1sbGFIMlp3SG0ycmMvNERtd2owUXpzTDg2SVNJZGhDL1FrTTM2MDRoeVFHM0FEUGx1blhyM2ZMbEt5RGM0bjdocmRRS2hFaWRKeEpKZkNFcWxpektQMEY4LzJObHo2dkdhTHd6UTZGTW9KQms2bEJXUTZpRjFaVVVsb2I4bzcvUzhJY3VIMGN1Mm4yNlNKc0Y2ZllhaFRBUFIzSHZnOExwOUtER0tWWHdEQ1pLbG9nUG9oVkJmQm1KOHZId2wvQ3djcWdzOVBQK2NiRDNwelZKZkhVWjc4WkU5VFNVejU5VitSaUx2K3pibTdadmRMMllleHFwczRUSmhuRXdNYUZlMFVhZytiYkFqVGZlOUluQmdaTmJWcTllNlJZdlRpd0IyREF3WS9YZTNMTWpGRFhoRHBBdGRqWkFpYUk0WnNiWEQzc0JFaWErNDNhL3R0dTlocG1JOTJqVmFQcTN4Z3VkUHhOR01PdlVxbGdDS0E4QUE1dUhmeUNWZEl5V0E1RXFvUVlZL2t6OXhCL1VmakUyeXVRdjZVRUhTNCtZZkp2U21nMHV5L3UzZmtCVFZYM2ZlMy9TOWM2YkIwSElwN21ZaFdycklRK1ZYM1VBaFVkKzJmRnJJQUQ0L01Ja2x5aGdtbkJHbjh4TGNBL2hGcXhoYndWcEdYSDFOVzdMNXExcXM2RmhhRGd3bFQvS3dlY1ROTk54UTR6TEdlVEJ1eGRrVko0UXJKL0Z3T1Bzam56WkR5cWEvV0FHUlhvSTRiN0ZTOXdIN25pUHUvR2RON3VOR3plN0xWdTNhZW5DaDVST1FLUEtZQWxUUFhKUVpTUFlsdGFlZmp3bDh1TzFhcGp0cWxqdmNpK0EreElJc25ZZ1dHN2YyTjdIbDBuTkZQbUZPRFNZbHM4Q2NBbkFOYnlOWTA1QVh2WEh4TVJ5WkNIQXN0QzQ2bHhTblRpbU94Z3NJOGViU3NuNk0wdmtSNzl4Q0xGNUhDZUVCUUZtYVhER2J0cnN2elhBL05udDEzaEhqSkhEMExqUWQ3eGR5M0l2d3pMbDUrKzkxM0c3RWtQWFZRS2hhMCtjSEhaSG9HVk5RVUNOaloyZmV2cDdUL3d4ODJpckFTQS9GWWdaYythUFpteFNvMHJlcEFXa0tlV3ZSbzdKR2p0b0FJMnpQMmQyYWdCMjhNS0lIenFJWjN0cEFKd2w2QStUNjJqbUd4QUdra3k2T2JqYWt0VTVKa3NUUEhqN0w3dG1QYXdZUVFyeU1mQWprMEFtWWNDMUF6ZS9xTm95bGNXdHU2dXV1a2F6dVRFaXZEUnlNMjd3MUlEN3puZSs1ZjcyN3o3dlB2L0FYN3RISDMzWUhlWnRTQlhXRTBDdDU2YWJibVpDSk1jZzVxazdMRkhBVmRvdnVPZWVqN2xWbUpWZmVlVmw5OFFUait0OUNlTmc3TnR1dmNPOUYrdkdJRlNZWHFmZFdESUlHSzY3ZVpCSVlSQnMyYzR1UFUvQW1QVHpTUVRMZ240WmR5c1l2Z2ZDN08rLzhUWDMxNS83WCs3QkwvNmQyL1hxcSs3NjYzL0M5VjUxcmF0UW8yTFJyZmdweU12N2g3Wm1lYWdSMU02ZGxmYkVTMUlFaGV1RmEwZVFPMWprWTFtR0tHZzNqajJPTFk0Wm1oeWI4dU9ITk9oR05EN2ZVZWZKU1B5eFhVM0Q1Uk9nTnRsSVlQanh6K3ViQm12QzFLNW9ZMFRYaml6QjhCNzIzeDU4YndTTVVIUUIrWmZQbjFPcG1KcC82MVlzYzEyWTBqdkIxUjJnb2pjNzRRY1JpaVROVjJtckFXQXdmZUxVNE1DV1ZhdVd1OFdMRmxwbGtVRXowOHlXV09hMFh3b001MDlrTjFPK0RXbG9xaXdVVHI0VHJHT3NJM2JzMk9IMjc5OGZ6OTVBMUhpd3BCcXl3UlV3d3BrYy9aaDZLU2c5WU1sQVZkZEJHY3hNTWNPQ21vQ0FCbjgrbUpQcGd2cDk2cFRqRzMwNGFIaGI2ZmJiMzRQNlZOelUxSVFFSDZ1Nlo4OHU5N1d2UCtaT0RweDA0MWhiOG10RjU5SHBlMS9iNDBaR1I5ejY5UnV4akRabTVXRHY3MS9nVHB3NFlSdURLRmVHTHk3dDdYTWZ1TzAyVjRMVzhkQkREN3E5V0tLY2hpbzlPRGpnZHU5KzFmWDI5cnJObTdaQTR4bUJzQm1FeXI3SWJkcXcxWjA1YzhadHZBWmF3ckpsYm1sL254c2RIZFdMTk1tQStZMWJYQVl6NGJadDI3VlBzWGJ0T3UxVkRQTkJJQlM4dTd2WDNmeXVkN3ZkSjArNEhjZVB1YW5UUTBoL0hvTHJvRHMrTnU2R29VRlFqWDRQQk04cGxHWFowdVh1bHB0dmRWZGVlWTJiQjZFeFBEU2s5L2NSM08vZ0J1aU43N3hKR3NTcStmT2hoU3gzUThpTDZ1K0tsU3ZkZGRCb0J0R2UxRzZvY1d6ZHNsME1mSnFhUnFMOWt3S0NOam9MMUFJSzFIamc0TGhDSDdQdHFZMFV1SytEZk5DZ2ltdmp6aGdwakVIRjF4aTEvQ2VueW1wcm5pWGdzQkFpUzdDbVBSS3VCR0xmK3BKbExyZU9oNmQ4dWVtSDY1N2JzeFBMTVg1THduanpQZTk4aDd2amh1c1ZqMkFPSVQ0MWdNTkhqdWs5aXVpTFV6TnFBTjA5Zk9jZVB3SmhUTldLMnMzNGJRbU5GN3V0OFVqTVIrY01JRGwxT3hHTkhvZ3p2TFNCeEd3ZmlJTWttUHg4VnpDWkYyRWRvOStvMDBMSHhXNTJhQ1BCWHprRXNKZm9nN1NESisyaEhuUndRQ28yVzF0STUyQnVNUHU2amE0Q2RaSnBlQjNteTFldTFlc1ZQUWJNdXRML0ZHWit6dFNzcytXRWpKVTNmK3B1OTY1WE1adS9SQSs1dzlYVzhLeTlkOVZPSG5PcjE2L1hPdnk1NTM4RUJ1VWRCeXVnQmpUTTczMy91MnJuVFpzMnd5OHJacno5OWp2Y2h6LzhFWGZEbG0xdVVXZW51K2FhNjl4UGYrd2Z1Zm5jNUVRYjUwYk91WHQrK3VPWUpONnRzakxIZDkzOGJ2Y2hwT0d5aElLQ0wrRmNBMlplaWV0bklmQzRWT0dtMytsOHdWV1BIWmJnb3VENXFROSsyTjJCcGNJb3Y4UUU0WExWbFZlN2ozemtYdGZKOXhjQTczdmYreVZNcUswY1FydnhoYkx2MmJEZXJkdDJCYTVkYzMzeit0ejI3VmVpZlBlRDhUcmNnUVA3dGIveDN2ZSszMjFZdjBGTVNkSmo0eXlwbXB4dGI5b3QzNWJMWGZ0U3NhajFNUVVPRC9aMDl2UzZUajdGT1hEQ2xpWW9pMXBaRnRpUWpubDRwMzU0eTdZVFBNTzYwOHNDYVNHWU91SGhyVkd3UUk5QTVpVGxVaHZCQmpKOUhXUEZ1L1MvYVhYcWpJL3ZhUVA3TzREWkJyUVZBSmxzVHJuR0ROdE1wZ0tCMEJHTllVbUtaK3FrWDlwTlNpMEJwUHFENlJQTVR6VS9VdlZUUXNDWW4yK0cxU3psQllEYUJZMlpJbmFjeWpNZEJSV3VCVkJYcWRlTlovcERkTFZhQWduL0hOYnBUQXRKNXozcHpSbXowdzZTakdPZGk3b3o3czVYZDBndFRlVUZKRHZWQkVBeVJsMHp1bnp3dy9yT2g4UW5Bd3dPRHNadG9MaEUzZkhEcDV3cCtSVWxlNXlZcnpuRDdJSkIvL2tILzg0OStLVXZ1Rzk4OCt2YVo5aThlYXVhNVFZc0plYjM5YmtISC9vaWxpZmZGajM2bFlmZHloVXJzWlM1V25YNDduZS9vMlhKWFZnS2ZQTGpud0JUMytldXdTeWZ3N1hRaVNvZnh3M3ZlbkJwODUwbm4zRGZmdUpiN3RISEhrRWQ1bW1wd01wU3EvajYzMy9WUGY2dGI3Z2YvdkFIN3VHSEg4UU1OdUt1d0pKSng1SjlUWjUvL2xuMzJGY2ZjVDk0NXZ2dWthODhKTCt0VzdmTEpPT3oxbEg5RThUSmgyMUs1czF6MWtjOXRSK3hiTG1ySEQvaUc1eU42U2VHeUtTZjVjMzRGSHc4R3F3ekJTQXJHSDhRVjM4ZTVoVlpZOEJsLzAyVWFiajlaMUNJTHgvcUIzTVJOTFYyb0lJVGdVazkyZ3FBUXFHZzBjZUtKcGwwWmtMOGxFRHc2UnY5SWpkbmZpT3RwV1NTTVBOekxVWkJRT2IzZ3FDc3RUK1ozeGhmekEvR2p6UUJrSmdJaUR2S3pHVG56VVFDR28yMmlKZ1ZURDNVUW1DbVVWeW1ZWWhNd241bEJPS3VPNVlUZklRNEJBZDBZVTJ0OWdqbHc5KzVwbWNOa25zTFpoc2RHVkViS2p0LzdUQnpocEtFTkhSRktyQ0NhTGZaa2RmVUFNN1pkd1hZVGhRdUZRZ2t4dUtld3dSVVRYNXNsVmlKbVhFSVM0WVZFQWpid0dSa05HNHljdTI4QW1ITWQ5L2V2ZTV6V1B0LzYxdmZkSzhkM084V0xGM21ib1dxL2lGb0NyWTVDNkFjZS9lK0JyVVU2ajdMQk9MNURTNC9GbUlwa2dWRC9SQ2F5M25VazVyQnU5OTlLNVlONzBkWk1WTmpMT1FoaE1Wc3VONnhZOGVVSmZPZ0prRlZseTlNa1JmYnhyZXJxaTdRejdRQUVzY1pQVGgyeW1pVFduZTNxM0t6RVg1UjM3Q3QvWGkyL0hCbFBqQUVvWkhEdGZMY0xFVDcyY2F1aFVmWFN6aGlhN0JaV2N5dkdYWDBUVE9zN3doTGwzRnJsamNmRlo0SmJRVUExcHg1Wmh3emJZTFlJSkhiTXppbzFhd3V2NGI0SEdEQlR0T1dBSFNENFJOYVFLUUJpUG5COUVFTDRPeWYwZ1JNQ0FSaW5nUzdRTTNMenJwQUNyQk9ieWJlOTg2c1dlZnFmTEt0cDBkdng1RUpKb2tPc1hqaXdSWStBRk5GR2lGd3BZZHRHc0VTWDFZem85RGdyN1ErdlhZa05OaG9NUU9GTndJNFByaVh3YkJGUE0zby9jeGlkbDVuSVpZSUZLeFVrMWszcHVmWkIxNllmNkh2d29Eam5rVVhCdnE2Vld1MEQ4SGJmR3ZCakVlT0hCWURFNHpMbDV2dTJyM1RmUnNheE4rOCtJSjdlZDgrdHhUcjJSVytMQUxpV1pHdHpIVXdkQVdYNlVBN0ZpQmdidnZvZlZwK3JGeXp4cDFIM1AwUWpCUFVJTVQ0TUhoQWlNWENELy84ditVWDhzWWZIK0xpM2tWKzQyWlI0WXFyWFdIN1ZYcStQcnRsdTh0U3U0Ri9EWFhKUW12UkxVcWsxYmpFV0F5TWI3ZWxPVjZoOGlQUDB0WFh1Ukx5S202N0VyVGRGZmlDR0pUTmFnUFE0aDFtRFI3ZUUvQlZ2eUN3cnRabXJLM2gyRUQ4M0Vuc203eFNNOW9LQUtneUVxa1JnK05pWVNDa3FGRVl6T0NPbWIrWkF1TlRDTENoSTdjWVB3aUJKT09IV2QrRVFDQ21VVU96NWloM1lHb2pNUEFzaUFPWVpScWZHSXRvZ2labVJkckh3Rmg4ZjN5WmpNbzFXayszdlNLTEIyQTR3NUY0QnBOSGR6dTZrQ2V1cmJWaEtCZGIxM0NPdHcyRjJIUEY4Z1NUQ01rdU5hekcyamNGSk9kYU9VWUdhK0lEYm54czNGMnpmYnZyd2ZJZ3ZnUXRHWGNOQnpCVTlkMjdkOG1IN2NrK1l6aUtMSVMyRTR1aFhiakpPSVgrK09hT1Y5eGpVTmxKWDRYNi9jd3pQM0N2dlB3aU5KcHU5NDUzM3VnM0tIRVZ6S2FWeVhFM0FDMkNNN2ErdmlQVVVjOFZZaGhGQkhwV3JYSUxzUnc1ZjJyUWRaMDQ2cll2WHV4ZTJmR1MreHF1OGZKVFQ3cER6ejNqaW1SczFMUDg2c3ZTV09DVVBLQXNsSkFLRkFDNzdyendjSkUvczhGM0k1UjM3M0RsWFR2YzFLdXZ1TW1kcjdoeEh1elpzOU5WOXU3UjI1dzQ1am1XeFBBY2h4cW4xaFlFTlJCM1lLK3JJUzhlQmlvakR4NXg1bTFGTlNhSS9SMyt6Tk1qaENlOERDRmVURlcrc1luVmFTVDFVd3lXcnhVWU5ZMzRvbTBGQU5aRWV0NlR6QkFZbExOREVBaXlvL1J4V0tPQVFKVVRhVnU1WTdzMWNEQmo4b3dQdXdrQWtMLzlGMmIrMWhwQWVnbHdNY1RCeTN3bU1kQUNjVWFUT1k3Qmh6WGl1WmVmZHhNOENYZjhxS3NlUCthcUo5b1F6OCtmTzZOanJTcVgvdzNkTURESXo2dlNCMTNsUFRkdjJlcVc4SzA4UkxJSGZYZ0JndWZtcXhQM2h1VmYxeXlzbkZFSDhrQVpiZmlEQS90ZEY1anU3ZzkvMUYwSlZYbzVWTVhWcTllNjIyNjd3LzNFOVRkbzF0NkJ3YXMrUlZ0YkcrQ3kvcnFhV1VuOEIrM0E4bUFCbVBUV0ZTdGNQN1NiM25sOXVzLy8wWHZ2Yyt2V2I5QUc4blhYM2VEdXZlZGpiaE5tMVZXWWFUZldLdTc2MVN2Vlh3TjZrWXJOemx3NmZPQ3VEK29XNVZyTXZqOTEyM3QwdXUzWkh6MGp3Yzh4UVEyRmJiRU1iZjZUUDNtWEs1YUNkb1F4TklDMlE2R0N1cy95aVdDM0Q1NWlNbHUyUXJjd2RUd1pmYXFkZlZBR1l4Q2xZRWFXQmxKRWRlV0JKNDdYemg0ek5YYk50TGdaVjhTU0pvZjhzaGh2cG9YeHE4Lzh2cUd4RkdMckx3VkxybnA3cTRlNVFyc0hDc2o1OFd4Z3pWaFlrTXJydllEaGMzWXNuRWdrRjFobUh3MkliVzBGZ0FtWFJxWUdSVXljWlA3bXNKbVlYKzZVMy9SQ0lHZ0IxQUNpelVCcEEvSE1IKzhCQkVrWUd2WENDVDlXTHBwSjRpRGdtcDJERTVJWnNmV25Ka2Q0Ty9CWWE1Ym45d3U4ZTVDT3gvVStiL1hGL25aaTc2NDdQeWoxV2tqMDlDSUlrbzk4OUY3WHk5dVJDZkEySVc4ZEpzSEJ2eGV6KzFlLytxamE4MVl3L1QwZi9aajcwQWZ2ZGh2V2JjVHMrckkyM3RTZmRheC8wWDZzUHo4bnpVZFFlVTJXaW10cTVzOHFIangxMm4wYnMvOHlNTUhIUC82UDNTYys4VW4zN2x0dWQzdDI3M2I3OXUvVkxjYXZmZTFSVlllMytuN3EydXZjTGUrOHlVMUNhL3I2QzgvcjFwL1Z0UzdOWXhRTTk4RVBmQWlDNEtmRVVGLzcrcU82VmNsYmo0OC8vZzAwZDQvNzhJZnVjYmZkK2g2M0gvay8rK3d6N3B6Zmh6a3pQT1FHUVJQb2M3YU9XZ2lGUEhic3FEdHg0cmpMY0dPT2g1a2dpTGtSUnRKaEo4OFFSbmIySVE4eUJzNjRNcTdESlo3YVJXT1NtcUZFdE4wdHdESW1nenlsY2FBZUdzOW9YNm9oR2o4QlZrMjFtN2ZHbnA3MGF3RXBLQTJJcjJvTEpZMkE2K3JPaXJ3czdIVERPeHFJa0VMRmxNV2JIZzNPR0wvNXJ6LzcreTgrOSt4dmJObTB6bTNidXNXS2lkSXdZMk1RL3JQaWFUdWRjc25lNklaTkh1YU8wYW9Zc1Y5VWVPL24yNXovZEptRDhINVBmZi83N3ZrWFgzVGRHRGltenJhQVQ5SU9aOUhvbzZQY0JNT0FDQVZnbVdITlljMVhnZXJJbVlTM1N2bVpNNzA4QW9HS0dmK2trSmszeitXd1p1V3gyb0srbWRpalhXTitGRFJiS3JnUHZQOHVPd0hJSDZiM1pUeHpkaGdEZlZodDFvMWx4dEtsUy8ydU16ZWcrRjErWHFzT3h2aWhlL21sRjJHSEczNTVxT0tGVFZ0ZEJTcXU1WlZ4QzY3N0NkZUxKY3dVWmtUT3hCellPZW5PV1F4MHZ0VEM2VDcrRkw5WWhFRk85WmdNb0F4d2ZWNkw2K2NhNmdCMVN4dVlMTWM1bnB6ME14WHZKUEJ5L0toN045ZmFoL2REZTVvVWxkWnVjRFcrOVJoYXp5ZC8vbFB1MVZkM3V1OCs5UjJYNHlmak5tMXpFenRlVkRrQ09MdXlyaXk3dllMZCtoTWpTTXpLbWp0b1EvbU5yT2ZMbW95aXNjVTIySUIxL2NDSmVPTVdZQjNEakZnc1pOM0NlZDE2NFNmM21waVN5Ym1oV1Z1d0dIWEl1cW1qZk9FR2hZZWQyU2h0M09KeUVJajJJQmVFSlNjS0VMWFRzY21LZlpDR3drRHdaV21CVU13MDZLbGFSY2h0dThybGJuMi9keGxZenhOUGZ0TlZoZ2IxVXBBSzNKLzU2WHZkYjN6eUh5dmM5MWcwdzcrMFk3OTc0c21uTWE2SDNlbFRBeE4vK0I5L3F4dHRVQXZoeldCREl3Zk5nZzFrNm4rd2MrWm9DSXVJakI3YkZTNjN6YVF4aFRoR2JOQ2tGcURUZ09GdUFMV0F4Q25Bc0Rtb3BZQTBBbjhTVUkyTEg1cXRDRCtwUC9SR2t1QUZjUGFUSlFLUHNHcUR6SGR3MUluSmFPa2tFZW9jaEJoRWVpTlFBNFo3Kzl3UGZ2UkQ3eUo4SmhnTC9Ncnh1blViM1BvTkc4WDhoTXBwTmpyY2dkT24zWXN2dnVEOUdRSUdXYkhhYmp2Q3lVRlB5eEJtL0NOd0g4V1NoVzBWNXNGdy9vRDFHYU1LUEQ2bUp4KzVpWmtFMzNKY0gwRTlvQ2t3S1dmcHN6elk0NW1mak1Yck0xZWVSQnpEOVllSGhuV1FpZGZuT3B4UDl1VktIY2JBWkVSUUFldHBicEphT2ZHaktsZzlETEdwK3ZrZ1JabENuMk9KeFhjdTBoM0lZUUxncG1LTkI2TlM0UEtERWRCR3ZDRCtRLzJaa015cnNUaDRRdlhWK3lFdG1jdEI2OHJ6ZlpEUVVNS210ZDZXcEhGYXh0SVJBa0ozT1N6L0pFSzVBcVZCRCt1NVlEZEMyYVF4cGNIbENzdEJ3VzJObG5FNzl2cE5ac0JTbXNsUWc5bFF6OXdERHp3Z1Ixc0JJQW1DMUtiNkJ1WU16R3BtVWhESTNSQTN4Znl3eDh3UE01R09sTno5WjJPYTJ3NEJCWXJ2Q0FReXBrL2RGYWdrN2dLZy9EYW9XeEVqQkRKTDlFYzNtc2NHbzRVSW1JbjBFTS9KRTVZT2lCdlg0TDB0eitnaUhyRHl5Ymx3UkpkdWhmYUJ5YUJldi9UY0Q5M1RQM2dxTVh0NGhDd1NXVVdBMzZ1N2RycHZQdm1FeS9pTks1WmZkeVZRT0w2ZE53ayt5RU1CbG9kdzRPektzL24yK204RWdrTDdFSHdpancvdFpEQ29GVXlOZ3dJUXdvT2c4TkFtSEVlUmI0aW9yYUFaY1plOGZnYU1xWTA2VDhpN0J0VTh2M3FkR3hvYXdveDB4dVVvRU5GM2RXZ21VUjE5ZVNMQW4zbXJhSW9qRDduWjMzeXFrTUlaNmdnRGxUYTNkcDBkT2ZZZXZINmNLZDNVTHZqVUo0UXkreFo5d3Z5NHd4K3VVOTI3QzFyVUZxVmxuQ0kwR0c0aWt2bEpiS3N3dmxrT25tRW9UMDNhSlJxZ3k4K0FWbEc0ZjJRRlNxUFlhNjlyczdiRjB1d0V4cVZIcUNsSlZVRjY5WTJ5aWZOcXJ3R2dVb1JtZUZRc01IdmFER0ZzTUxNYjQ1UE1ibTRmbjI3YTVUYTdwV2wyTjVMVUxDOGNndVJOYWdsSllqNEdWYjJKVW44cUszeVRVV2pRejZ3K0VBTnExV294QlFwZ2pZc0JaSU1xalNnZFFVZVVPUURCVlJzK3JWMW0rWkVKK1pxdEk1eXA2NWpGbjNkZit0SVgzRkUrSGh2cWtlek5CSGk0NTZ0Zi9Zcjd6aFBmY3VXVHh5RkkrdTFqa1NoVEZnekcyWi9GU3hhUmRzNXNQTS9QWjlqdFBucXl4S0ZOUUN6cnlXTXFIK3ZKL1FTOTRneENPS29UNC9uMFNxUCtydXVkQkdVd24wSVZiTXNIbW5wWUN2VisrTnZmMU9aamJ1VWFWejErV0dPRVl5UGthNGJsbCtuczFIbytyb3JONGhwTGlvdDhEeC9VWVNzbTVFTkxQRzdNOW1ZWUlVTnBaQkdSK1ZGazdmU1R5dFEwWWZLclVCcXZJOUNHb0dId1FUQytyNkFHZTNuRTNnRklUWlFUa1drQk5Td0h1MXdQaEI3SElNdlhFbTI4cHdNZnJxcE9KTy91R0FvVW5PaS9NQTVQbkRydHpvMk91ekl1UDFsMjd2eDQzWjA2VjNQSGg2dHVlSVJmQ2pZdEIyWGVkLy85OTJ1V2FYWENRSGpYTGJmZU9YamkrQzM5L2IxdXdZTDVTbWpFTm94Tld2VG4vZGlvVVRqK0ZCN2lLc3pzRnNiNDhyVncvUWU3WWpTN2FjNUF4MCtjZEtkT25iSkhIK0VXdk5FYUZwaU13czB3TGp1Q0p4bUdyd1NySGoxcWJwQk9qMkZRNm9zODZJQ2tNR2paeno2Yzc4NHZna0h6NkxnQ3RJSEpvNGZjT0lRQ0J4TkJkZmsxUHRINDJoNTNGalBvS0dhZWM1aTF6MkxHNU1iV3dZTUgzRk5QZmRlOUJKWC92RDh3eEt3em95T3VnUFdwSEh5OFZwdEh1RjZxZll6SnFsRGJDK3MzNmtNZUZjYXQyeUJXZStHZmRaR2dIUnZSNjZqNG1DKzFIejRHclNiRmp3bG5DbVFLY0pzTitSRVVsb0hIVk10WU95dFBOYUsvUG9yRzY5ZkFSTmxWYTJUbm84QTExSTBRTTlIUC83RXVoYTNiZFE4L3V4d2FEcGNuWTlBVUJNV3d1ak5mYURjNVBxMEliU0svWXFXcjd0OW4wUUFFQzVaQ0Z0VXhwM3JXM0JUNmVncWNVNjd3WVNBS0F6QUsvQ2tJS21qandqWFhZeTIyd0Uzc2VBVXpmTVVFUUlnTG92Wlo3T3h5aTdGa0NIMWlWdzFYTnFSZE04Rmk4eE5mMmZXYm9OWDF5aDBCNDJmazRGNUlkUFlkeWduQnRXWDlkZkNlNTg2TVZOM0lXTlZOVE5hNVZlT0dzRVFjZ0REbnVKNFlHenY1OVBlZStLL01vcTBBdVBsbUNJQ1R4Mi9wNit2UjIyblViT3hBMmxJbURkcjVqei82MFROaHB6OHR3ZDRZdjlrT2twMStaby9JaHhrMWhIbmltMDlPUVJvV3dKaDBweEc3VXlFTjBjaU0zRnRRZXZRRDN3amtlR0t0V0pSNm5TVmhWaWowOTBFUzkyTnQyT3Y0a0pCVWIzUUVNdkE1TlVDakZRM1BNK2RYWHkvMWR4S3o5emcvMXBGS2s5RWRqZE9uQnQxUnpMcUhjZTI5UC9xaE8zTGtrRHVKSmNnVWxneWN2YWhlaDFHbHQvaFM5UVlUOEwwRUtMeHZFeklvaUNhSW1odEdOcGdVMHdSZmZjN3pBZlBuUTRWZUlpYlhzdzRMRnpxM0FFUVRkYzR1WDJIUDZQTmNBK3FyTi9md3MvRVFpaGtTMythRCtIeGx1Q3NXbEVhdlE5YzFyWEZSRXJzK0J5enp5a01GaHhDcWdxa2QycEp2R01ycWJVRCs3VUowTDFqa01rdVdJU1h5WWR1aDNXb0RkdGdvUU5YMy9jZTNGUmV2dm81VHVyMmViU0hyNCt1Rjh2RnRUU1RlR2NpaHZyVkN5VTBPbndGamNQWVBSR2JpR1FCdThLSE1DNWVnSFphNlNpYm5Lc1ZPVisyWjUycDlmQk1RaUdiZlFqZVZMN3JGSFNVOWo4QVRtbW13aEw2VEFBMkIyT25SNkdGdS9lSW51M1NGeTdBY0NYREp3bGVDMTdIc1JhT3FmZWREcTl2R1pZclhoam1tU0tjSEI5d3BhSDdqRU9qajQyTi8vNE9udnZNRjV0RmVBTHo3M1hjT25EaHhTOSs4SG93RCs4WWUrMUVtSTNoVG5hdC9DemQvczF2SHgzYis2VDlwdHhnTmR2Mm03WmFKcFoyQlRnNmdzaFFBQmI1dGg2bVpWd0lwUnhKeFhMdTFTQUdBaHU2ZkQ5VnlMZGF6UTVwZDVBbGk1MlJoNXNsNEdOUlNqY0g4dWZVYk1FZ0htcnBVb0NkNm54dGhwVVY4clZmV1RaMC80OFlnbmJtbkVjSDNQQTArOFVWbTBNWWJLR2diNGJ1SUdrMitubVJDYWl0MTNtdW5YMk1oZkw0RVArdFY0NWQ5dUtIRmwxeEEwUEJqSjFVUWQrbXJJTHE1ZWFuWkg5b0gxKy9VTFBoVUlJODE4M05pU2FKZ3BMcXV6NEloUDlaQW1sRlVEcmFiTHl1WnZyc2J5NnFqZXNjQU54ZjE5aDlvQnlKdTNrRTQ4Rk5yVmtlTWM3NnFqU2ZlMlA3S05zcFk0TXM3eU9nOGU4RVhvMml6TGhES1ZQZEVleFZhWW1ZWk5JWHpJNjdLalVTcS9OYTFhZUpWdVBlQjhURDV5c3V1Z2paZzJrQmx0Rk4zcllMWmY3R09NY2RMMEVZMGxKWGxUM2tGaDlWS3J1QUZ3WmYxVHdRR3NPOG5VWThLMmtvQ0FJVTljWHJBdmVjbmJyYmI1dHdURTAyNUlmVHpFTUxPOFR4S052OUhUejM1K0hQTWd3dkFscUJhSkJPWm1vckhtWU9tVi8yQ1AwMUpkVEtmeFluVy9kNnVkQ1J2ai9LUkdleElNNDFkMTB2WTQvVE5acExwQTZVZFNjUUJ5V0NmQmNXc1BSakNXMm5Ga3Q0TEdJamZ2S3RDdGVJdHBoclVQaklHdjVOWE8zblNaa3drVCtZcHlBUFhBbE56dHVMNlVnTmFTSTBHZ2VWZ2ZmamFMS3JNNW1kMURQbUdleFYxclAvcldQWlVkdTkwdVExaHNDU3Vuc2plckVoSHJRUHRacUJ2Q0RGSVRWNjczbFZlZXQ3ZUN3Zy9wUkZCWUltQ0cxclR6cGZkMURQZmQyVzJsekx3NUJGWlVVN2VEYW5zZnRVT1NHR05xKzhNMGd3MENjS3locmRjdVVTb1FsUGkyNEhDT0F2OUhBRmx6YTlaNXlxdnZLVGJyUmxvSVkxSXA4QU1mK2lBaEx1NVlrcUNXczNVQzgrNnFlZWYxZHVXa3pGVkZzeTA4K2YzNndRa0dTOElQVEYzb3U2R1prL0dTL3BHb1lsb1ZhcjZSTUtQNklDMnB3Tk1KR1IwQ2tMNDZaZWUxYmNLUmtiUFFSczU1MFpBUE1YS0NXWmljbng4UVUvdnd6NzVOSnVBZ0twSWhoSnpCZE1hUG1KK3o2Z1JzN2V3S3gzSjI2TjhaQWE3TVhiS3Jyek5Mak5waitLRmZCSW00c1FWOEpSQ0hKQ0trbkNvQTZGZTU2aCtVcXFqWVpHeDFNbzBFRm5YSXhFb0EyYStyTDZERnl0WUlWVEk1YVhhbG5lODVDcXY3YkpiYS9DMjBoQ3dxWjZ4V1p1WTBCdHgrS1dmdU0wUkgvK2hUYmp4eGxlUmErY2ZnOUp1TnphTW1BZ2FwZzEvRmp0SlpIb3lJUm0weGxkOXJWa3JmNmdmaUJBb0pPQVBrTndGOTE2RVJiTS9mVjNJYXhPOE14QmV2UjZndU5vd1FQMGdiQ3V2dk9pcUVCWmFPcWlkckszMDY4dkJkcFJXTW9tMk9ucElkekFzbzBiQ1R5RFVpeDlFemZPUUZ2TWc4YTZGcHh5ZjdhQjJ4MlVLNDBKdzg2dFJ0dkZHOXFtN0ZTdVd1eVZMbHJqQmswR1FCL2phK2t1bDBlQkJKK1BaVHlxWTFoeVl0enJNMjRFTWo2bHp5WEk3ZXM2SmltV0c5eVBmZmR3TkR3K0NUb25PZ01iUWgzemFGR1BtZjM3MnM3OW1SMCtCNlRVQURpd3dWQk96Y1FENlFVZVQvaEd6cCt5TWErRVd2OUh1ODJoanA1bTB5MHphSXpQNDB3d0R3OHdZWWRCWVNLQzBJd2w0Y0hPUDZpUjMyQUcrckpJemU2bzNFK2xRSEo5WFRTL05ERE5MUUFqbWw0S3JKNC9weUdzVktoeS8zWitGMnE3TzkzRUVPZ01CdlAyb0Y0LzZZNjhFNHpLZFpsSE1vRm1vZkJ6SXRZUDdYWEhqWnNpYUl1UlEzaWliMTIwL0VnL1g4Q1FaMTVFeTZRWXBuajlneEtmYnVGbVpPWDRNWVhtWEdZVTZqdnp5WEJJaERmTVRLWC83VkhrcjRsT0dnZVRHR3BxVWdZcFB0OE1Tb0FqdGh2c2lkanN1QitZTDVTTWhIVTJXRC9iZ3IveFJWdmwzZE9nRkhnNUxGdnBsUnNIVXBVNVhnR0JSbmYxbXJSN1pSVGhOSGg4dWxZcXVNSFRLZGE1YTVVcWRIWEFYWENmVzhwMThKMEJYcCt2WnNzMFZzSGJtK3dMME9mWVRSMTBudEN1bHk3TWNXYzMrZkJzd1ZlM1dzQTcwUEJ1NkU0aHRFUnE4SWljVDhnNVVBL0tvdDVhU2FBc0tKQXF3UXhoYnorOTZoUWQrM09uVDNBOGJnQlp3MXAwNU8zU3VzNmZ2UC9xa1F0czlnSnZlZGZPZHB3WUdidW5wN1hJTE1adUpiZlR2aHllWlQ0YTV4ZFN5MGpTN1lxVHNkTkptZmdwVGlxUmRrV0svcEoybXJHWlBtc0VmdjI1Z2NOQ2Roc3FvdDdLRU1QMTZwQnhKeEFGOHdLaUdXVXF2dytLcEwzWUFUNmhoa0hLZHFWa1I0S0RtWnFQTkNQSUNZTUVzS08xQnN6SFNlWEROcThNMVlLbzhtSWtkTmptTTlTaVdHZVdCRXloQnNuQlJobVpqWFZBdXZxWUtZbDJEai9leGVaOCt2MzZqY3hBNm5KakYxTWdYdWJzT1BwMkdOYUlZbnN5SDh2TVVJdU53aGd1TUx5YnpERVdHWVp6Q0tqQS9samNaYUI4S1E3d01oRXhwOHphWFFmdktqNHdZbUZFbUNlcTlaNDZRTHJvKzJxb0lCcXBqTUdlclBEdHZqeUhuQ3gwdVAzK2hjenF4Witwc05DTWpuSG1GQnVZdlZWNmRoRVNZN0d1Z21sT1lvdDFOUUNDUHNSSGQ2Y2dNRDVrZlAzR3VNSmFGWnlENDJXOElnVUxPRmRDMkhTdFd1Z0ptU1o0ZzVTbk43clViSFJaVnJnZy9QZWZQa3VFbjcycXV5TmUzblIxMksxZXRkRXVXTG5FbmptTjV3bVdRbFE3VWlJUS9ERmJGZkx4ZkF5ek1ReGI4c0c1YnI1SlhCR2FFc2sxZzdQQnVBTWNJUjlDUndaTnVHY2JwR01iZktOcjAzTGxoeksyVlgvN0QzLzEzMzdHRWhyWWFBR2RXTWdRWlNMTzJuMkhGZE5IczY4TzlHV1ovaFNsTmd6M2tvZmcrRDdsamU1USs4a3ZZYVlMc211M05BRFpFSUNIbENJaGp4VFowTXRTcUFnWkl1SlVtSUlBQ1FSdHlHSHp5UXBsNTZ5cmNEak95SGRncEhwZUZ5cXhkYjlZVEF5ZTdjcFVPQS9IRm4rWEtwQnNiSDNIajU0YTFqMEExdEIxWUpwbit5VUVlS3c0REpMdDhsUjFPZ3FEaGdJb0dGY3JPOTlqejlKb3hJNDhQbDhTRWdTbGpwazBRWjBkb0pRVnFGVmorTUswWWlrSU9xbWo5OUNtWFg3SEsvQ21BRklhclNnV0ZYWWRyZUxpSWJqS3hwZGUxK0lKTENJZ01WR25HUndTbHdYVGw4Z3pqSnA1UEp5aTl4WXRhUWU3WVZQMHdPL09GblJiRk5najFWdUZ6NTdRMFVBQ2pVK2lSRUFGRlFwa2dLQ0dzQ2xndkZ6dUtycU8vSHhvQUJFRGZZdGV6Zkwwcm5obUZOdERqK0VaakNnd0pBZ2pzQWxUK0l2cUEzNTZvbEt0UXI4ZWpJcVV0alVqNGVTdHFLMnNJYVU3bHc2R0poSWtuaVE1K3A0Q2JyeFNHYkd0YysrelltSHR5MXlzRDU4OE4vY1h3MmNIZnJreVYvK2tmL2Q1LytBdWZKRUo3RGVDbWQ5MDVTQTJndTlNdENCb0FRVWFVeVgvOXlJUzNHRkN1S0N6Mk4zZXdoM3k4SDkxMG1jV0h5ZElRMzJEWGFXL3kvWEJEUThPYXlZSmZNM3dhL1NiZ1BUaGdvVGRoOHVkcm5nRjFLSUVJM09sZnZOaVlrZjd5NGozajVNbkZxcXRBYzZoRGplUlpiVGMxb1oxMEhSc2Q0dHQ1ZUsrNXpGc3kraGhJR1hsbE1GdHJEWXUwY2NFU3d5RllvWXJyVVZUTWJMbk9UdTJTMS9oOWVKUWxTYm9OQ3NHUzNiaEZPL3RrU3FyUUxESWYvQ0Vzcm1kZ1QyVFl3Z2FrNFgxODFrRmxRWmlZQjFiT2lOeVFSRGxVS05RbElKa1BpeHVZVjlkQTRzTG03YTY2ZncvQ2tLbnk1V0VjRHRxc05nR3ozQnNBZ3hFcUM2NFp5bWV3TWNITXBWMVFZMW0vU2Q4bjBGTitQbHFJejJQQTFJNTRoNEszU1JuT0VHU3J0d0lYSUt4SzBBTEkzRzRTMnMwVlY3bmlvaVZnOEdWNmRWa2RBcHFDbTg4aFVKQXpIU2NpenY3OFN0TlM5Q2tQYlVVWEJtZ1RSVCtOU1BpRnlCNnAyQXF6ZGd5b29iNzZ0bVFDYk5mcTFKU3JvRXdvcFBxRFRUczhNZDc1eXNEcFgvenFuLzNYdjM3cXljZWZ0ZGhwdE5VQUFqanp0cDc1L1l4TE0ra09kczdrbXMxRFd0b1pSbnVjai9seDFtd0lhK1ZIRTJUWGFXKzJCNXZGS05pRTJEdENVR3RiUVFNVU13S1hBcnllbmtMRWpNYW41ZmhLTW5zc21lYUVHOXYzbXF1dFhldXlWMTdsc2pDcng0K2duS3dIRDVPQThjdVRFaFljWUx4dnpvTTBhVFFVRE9CN0JmaU5QdTVINkdPZFVLZFpkejlpb3RoS2liTHdGbDloM1VhWDdaNEhQN1pSa3ZuajRjVXc1ZFBWcFlGbkx6NjFPR0htTkZVZkRJbXc0ZzN2Y3NVYmI5YkhVUmhkL3VRUXBiRXNpR0JxUTVFcXZuYktLV1NacDJrS3VMQjloeEZoZVo1SFlGNUs1NjlQZ2wrVW1RRGhzWENSQkZJV1F0YVdNcVp0S0w2UHd4T0NlYjRyVVdtdGJEbVNzbE90VlpZaW1EbmYyK3R5QzNuT29ST0J2T1VMTGFKZVVkeFNBY3M5SktUV3NBQ3ovd3FVazh3ZkY4bnlOekxJeGJMQUV2c1NhVmNpRTRPUG4vUlZsTjMrN2tvRHVxaVJRV3ZqeDJiWVR0SndJRG16MmRyL2grQ0d6R08wMVFEZWVlT05kNTRhSExpRjc2dmpTVUIxa0ErTDdQaFI4OUh0UFdqYVlQUjJiL0pIOFdSVkpObERQTFBPenMveWIyOXkvVDg4ZEFhcUx0LzM3aE1Cc1ExSU9aTHdlWUhZa0dPYTVlandQZUxCMlVwSGc4R0lETk9HTmVMemxWRGdFcGdnek1BT25aSmZ2ZHJsdWNtSEFjU2p1dnJFR1A0b1BIallCSVZVT2ZYd0RXOWY4ZGdyWHl6UzJXMTJwaFYxUTRXRzZzOERSN2lNanVoeWhzYjZqOE5kRE9CblM4NmFQQWxKbFo0ellHN0pjcGZuam5GbHltVzZrUmVYQnIzelhKWnFOKy9IZytTbXlSbUdUOENCR1VOcmNFQkpDREIvNUZtNDRscTFqd2hsNHUxQWZlYUw2V242ZzFFNU1oVHpSWnc4bHlvSDlrbVFxem1abHhwVnJRMDMyZ3pDTGI5NXErTG53SkRVdExnMDBvRWVubkVnUWYybVdzOU52OEw4aGRBb1hsTzVJc1puNXI3a2NwZkxlbE5QRG5sUXVCU1hMSFVsck5zN2xpMkRIZW96Wm5zZW5tSjRqZ2U5a0FaemoxN0V3YVVaM1dUNlVvSExHS2pjdmYxUS9idjFHSGQ0YmtPWEpFVklPUUM0N2IrSklnUUhUTFBHb2NxZkpvVW52eEtNZmt1QzVlWXRTTDRxSElNSzFZOG13dFg5VzY4Y09MUHJsV2U4TzRXMkF1REdtMjZDQUJpOHBidXJBMHVBZnQrY0FBZHFaSVZOL3h6QTNoM3NGaUEva1NXSTdCYlgreVZOV1Z1RVJWNW1tYzZrQUJnYUhwWjZHUHlGaERXTk9DRFlOSWd3cUZJQ0lOVmRkYW5lSE9UWnZ2ajFYemxRT09DaTNYMHl3YncrTUtJTmRoNG1xZnFIaWNKK0IrMnFLZjc1em9ENitiTjI0RWlNa3JnbUJqZ3FKT0tET2ZuK0JSamNZRkpxSkloR1pyY1psWXpBYlFyYklDdENxOGlXTUtOUjh6aDVWT3Q0RGlTSHROeFU1RmxSTWtrR1N4SU5NQW9PTWlOdmZmRmF2TFNtU3lzR0xieU54ekpRS0RCTjlkaFJPNmpFNVk3eUJVSFlaS0haWktGeFpDcFZ0UTFmNEVFZGhXVVZjL29jalhuQllDZ3I3NUR3Q3p6MTRWT3VqcjdrUG9RT0ZrR1RxWndhVVB2eG9CTFg0dEpJMk43VUFwQ2VDSDJ1THNRUGhWSVdBcFdmTFhObm9EbWR4ZExwekNtWGc4bGxWSlhuT25od2kvc3cvQUFweWxLZW1IU2p1M2ZyekFQTG04OXlETEp0SUlTNXRFTGY4ZVV3QnRiQzE4V3NIcEhGQSs0VzRjRkxMdnpFdm9iZ2IwQnBSaUNVdGpTOERRb29kUGU2U2RTSGV4OWM3a1E4NGR3dEM3ZHYrYXVoVjE4Tlo1UWp0QlVBNzdqcHhqdFBEd3pld3RzaEN4WjRhY094eDUrRTNhNUIwK3dLNXovZDhtZndkSGJDdTJtTExXM0RaaktsQVF4REE4RGdVQzdtM1lDMFo4b0Zod1luQm9JRVFMb0hCRDdSeDhNcFBNVkdMWUJuNmtuNmNnelg4VmpUNjFBUWlPZjljendlQzBhWWVuV256ZlRVRkZEZXBBREl6b2M2Q3liVWhoN3ZQR0JKa1RvWXd6UHdJSnJjTE9PT1BEOVFxZ3dRbnp2NVpDS0NnNS9mSFJCaFpxdWZPZXNxUncrNnpMbGhVNWZKOEdKV1hBT3pyb1FBQlFNR0QrOGE1TmR0c3YwSUNncmt6MnpWSnNoWDJnRC9zQXppdXBrek1IZnZsUjc1NkxRaTg2R2IxeUlUd2MxYmlEelB6bzJzYUZjZHB1M013OTBGWVFxaFpsOWdOcTFENGJ3byt3US90bnppV2g3cmQ5UXRSNDFoM1FZSUNwU1YreXQrREZoWmtTZlNGelp1MXFsQUNpb08rRHpVZm9oaW56Yy9tWUdja1l6ZkNPQW01UlJmOFlYVjhSVDZ2c0psQ1YrVXdpVmRsVm9WNzl4a3Nlcmc4d2k4QmttWEJOUXE5a2RQK2lzd2lnQjRkK1NkRHVOZjBpK09Zdjc2NWZNWlhDcEN5N0l3QThjQ2hmSVVENlJCQzhod253Y1ZBMTkwMU9xNTFjTzdYbm5BUjQxZ282VVZ1SmVBdjNnZGJvMHZPeWhhMjZ0RGZCejZhVmJ6WVQ2TnJkOGI3VGI0WlliMFhtcWwxL3dNcHprOWhaY3ljRDJkZ28ySEJPaGhuc0VXUlVrNWtraTBNaUIxSENvMFo2V0FWQjRKY0kzS3dUZjE5Rk9ZdFFZeHk0SVprdGtoUG1xS1RESFlvWjd5NVJYVFFVblJ5VndxNkxncm1DVUgxZHBDZVBHNEFOellLdkhzZXdYdGNuQy9CSlROdEdRc3J1ZEp2RHRBSmpRN2wwMU14N2ZkNUtFMlJ3TVpQN3AxaG11VENmSlF6OHN2L0VnbkJEbHo4dHQ0SVQzM1Q1ak84aVdqSXdPc2tYZ0h4VTdvbGRRR0ROTVNoZldCc002dlhZZjErZ0V3bU8yL01FOHJieWl6bWFGSWRGTjRhSTNQalQ0Mm8wSklCdDJLUFF2aEJJRVhuUU5nK1RqMDJmYWVtQ2tma2E2ZU9PcW1vSEZNb0wzNFRBS1AwNDVERUZOMGRQRmhuR3BORzhOV0RpT3lVZEl0UDVsV2QvTkx4RW4rZVQvOHNCQXNjb1JHZjdQNk9NLzlnQTZqRUEvRWcwRkZMSXQ0TG9LZk5HUDdVTmlpZS8rM2pmZmNmNi9TSnVCemE4YW5mdkV6di8vcWpwZCtnenVrQ3hiMDJiQWlVOHBncS9HZlA2Mzh6SlNmSmVOdmsybi93UTE3YkdGUWsxdXhaV2xPa3pSSFJrWjFGNEF2WnFCUVlQd2swaTZneVFNTmc0WmpxK2wwVjJoMEF2bm50bXpURVZMTzVPekVBTm5VRVhJeUU2eVZyM0oxekNnOE5KTEhlajYvZVl1cjduaVpOWUJDWUErZlVOanBnUmZNWURwM0VDRnhYWUF1VWhhTTRqQ29zNlBudGN6SkwxMkI2UXRNeENQSVlDakc0cXpaMDl2bmVxNi8wVlZlMiswcVVHbXJsVW5FTjZha01BNkRUMjJIZnpKamdiZm93SUNRdXk2RG1iVjg4cGlybklHcUxjRkFEUU5wVnE5elpaNkJIenFsNmpLTXBqTGhQNWlkZ2x0YURqMVFIblVQTjBxNExJSmdxYjltUjNyRDJ0MHRoRUREMG9PZlgrUDFzMUM1MlFYaGlVenIzN3FiZ3NiQzd6L3dnbndGZXZpNkVoL1c0bnNaZVFyU05xYlI3MmliNHBidHVOWnVacUMyeTBQb2RlVFphNGpESFBIRHVwWjZ1bDNudGl2YzVJdlB1Y2t5TkFtRTZaMkVZRzYrZjdFSHpGK2U4bmVFQWxndWIyMkVScXdDRXpGVUIwTVkwUXFQdk0xWFRaa0MrOGxiQVZuaFVYL2ZoMTFtN1ViNUpjRzNQWjNaOFlLclFqRHo3VXNWYUY5NjNMbFdPNUlwMXEvYTk4QUQwYjN0NW10NTNQK3pQL3VmZHI3ODByL2l0K3JaNkJGUWliZ2FIc2s2QkZzaVVpcEZjM0F6ZkVOTkd5ZWdLV3VzMXpCUStTUmZpV2YzSlFBTXFmeW16WnlEbHh0NTJTWUJ3Q2ZoK01SYUJUT0U5NGthTVhTTUFJTm42TGtNeUtJamloQ2ttaUZYWXJaR2gxU2hEVkJyMFJPSEdUQXYxTlNwblh4MWx5OXZWTDQ0UDlyNHRGOE9qTWt2RWJPZU9USSt5cHJmdXQwT0FrR2dFQlFBL2R1dmNVWGtyWWQ2T0FDd0pzOVRBSUFKOUI1OHh1TjJPQmhUek05VGZqbW85WURlcXdpR3pLeGJqMlhMUzVwRmRGY0UxNjh0Vys3R1hubEpUQWIrUlRRVEROSUEyWGYxck9wbVRVRTNUUTVpZStGR0Z1VjNXTDl6aWNFNDJuTUFvMDYrL0tLNFVlL2FwL2FRNGExU0V3QVVrclJJRmVmeUJhNU9hR0o4clRtdm5lVjkraTFYdVBJckwwajRzQ3pVQ2pMKytReVdpL0tJdC80Nmk1d1ZUZk9rQUdiWXZIZmU1S29RU3VYekkrN3NHRDh1VTNlbGpwTHUvM2VVU2xpWllibmtZYUprZXFpNFZuRXp2VHY0K0FpMDJHL2tib2ExSStISG1uZlhPUmJ2K3prMGFGcVJaMDduOXUxeFl3ZGUwNE5DRlgxdXppK1A2cGxQN0h2b2djOVpUSXhSYnpaaDY3WXI3anA5YXZEZEhMam56cDEzZkRLT2c0S1BSL0tydWVRckZsb21TNlR5V3lkVHZkSlJUa2h5bW5aY2xBekErNjAwTWRDZ2l2RStkVkRMZEVJTkExQlVzSVl2RmpyRXhNVmloNmhVNmtSbmRKclowUVY3bDJZQjJqdjVUamtRSDhqZ3VvKzM0VGhnbXhxMmZUc0RpVUNPYkpEdEFmZ1dSNzZjYVNwN01LTkVjVnNMQU83ZWMxT1FhcnBVVlF4b2xzdGgvVnZZc0VsUDRHbUpnemJseVQ0K0dNU1hqRGJENXc2RE51NlFWL25DU3FaTHFOaGN4L1BZYmwzdnFVTmNETnF1TldDMFk3aStHSTk5aFpXdEx3dTZVWU9jd2dQczcvdURxam1HaE5vTXZRaEd6cUJmcUZMbUo4QjA2TWY4NW0xdVlzOHVWK1grQk9PaFVEcWVpMnRRMk5JcnREbUZrRjFYZ3dRd2Y3N2hwclFObWhHZm1VQWNNbXFGVHdSQ1MwR0xNRXZraTdTS2JFeWpmS2toY1NEREpLenVGc2k5aWlvZFdCZHozeVhmMTY4eisveCtRNFV6T1pkZUNJWlloeENnSUlBRDErQjQ1VmtBZmdSay9PeDVOekxKdlFvZUVlNTBYYnlEZ3pncVA4eEEwb0ptSUVUMGR0bjQ0OU9hMjZKNC82VGJvekd2ZEJ6WStjYytnQUIwaTVmQkx3M2VxVG0vYnpjMGdBblRaTlEzRkl6dTFUTjdkbjdUUjFQT0xmR1BQdjZ6dnpjMGVQbzN4OGJPdVRWcjFvTVo3ZmlvQ0kzR3djek9TNjV0V0RnWnl0YnNTZFArNVlnZ2Q5ckxJNlJMSXZhSWJNMFd0K1BWRjBVc005VkJ3Y1plRzhTQndhYTEwOUxsN3NTdVYzWGZtdUFPTlY5SWtWejdoK3Z5VnpaZjZEelVTYTI3eDhmQVhEa0lNTk1BMkU1OG9DaXpZSkdib21wT1FibGhpNXZDakJvR3RoQVZDZmxabHZZUUNnWTRuek5nSDJqZHpmVXo3SXhUMnJRTlN3T2I4ZmhSalc3TVpDWE1jTHdtRHlkeDlnenJhakVGcmtjaHlmUjhqcjFZN0ZSY1kxcUlkZml6L2ZqaEMwZlZ2SGVlcTJUcWJuVGZMaDFlNG1qaXBVMXo0TEtCQTZ5T3ZQbG9yV2tBYW4vVXhWY0I0TmpKdUs2VjYreHB3TUhqTHJOaWxSdDcvb2ZNRHVuWTFoQkpFQ3JNZ0M4cW9WdGxncjJDWlF6WDVZUTJBVkYvcnVrRjJFdlhYTyttWHZpUjY3anVIVzVxMXc3ZHlxTTJRSEM4OHRodmJ5Zlh4bUI2YUQ1OEVRanJXa2RGdUh6cUJPUGJlLzI5SUVxVVBJYjNTd1dsNDdHODN1Yi92ZHY3eXkycmR5ZmpONkNSUjJSbDR4S29jLzN1KzUxcitIeFlCY3ZUWTk5NFdKdkhmSTJlM211Z2tNeC8yZi9JRjM1VlZtQWFEV0RyWFZqTDNjSkhDcGN1WGFaT1U3SFJNT3dVZGhRSEZVK3pWYXBUVUtWSVdKOWh1YUJETU9VSkhZU2h5Y0V5T1RYZWdpYmNCRXgrRkpNMG1hSXgrTFdncVJaK1NoKzc3YzJucHpDNEllK2Iyek9CT0RBVkRRNTdUMTdHVFVJSWtLSFkwTG5sSzdSR2JZYUp0ZEF4dkYrTkVhYjcvZVpsZ3BOZ2ViUjNzR2dKMUxNUjNkUGxNL2VVMUtteUtrUDhLRk96YXplYng0c1JVWUtFUXBqNXdxN280K091d01kVk9kTjNkTHJDbWJOaUVqSTR0UTB5UFllQk5tb1JoOFNCeC9McDRGUFdubW5nUmNPTXdUamNQUytzM3l5TlpuTFBUbGRHRzFmUjMxcG5JejlxY2hRQzFQaXlXSEp3cWNHeG9YQUpBTk1DQWlQeVd2eTBGdzhHOGVUZitNdlBTOFZtZk52RXBick9vV21DaTgzQXZsUTlrQmMzRGZrd0R2ZDQyQTYyTVFrdEV2bFdCMDdvTFQvWjgyZjFYQUN2elNVSzFYZ0tPMVRkUWV5NU1vcENGbWMvVStNazQxUGJ6T2tPQVp1VUV4Qkp6WnR3SnlqNm95YUN2NFl3L2N1dURHWFM3WU1pTzM5b0RmWWtKZVBFYm5uUTVmaHRBMmtBRFU5VFV1TTV6MWV5UVJnYnovb0FsM2thR3NCajN0RmVBS3pmdUhGTHRWejVFUG0rcDVjZllUVEdGL08vbGVRSGJwbzRtOFhFVDFHZlBzMTd4SzBFUU93eFRSQUdCaGdCZzNSa1lFRFAxbXMzbjRkWUVtdkJHT3dLL2dLNEpoL0xaVndPZm1XSkFER1RsazYyNlZmQitqZUxHWnNxTmgrelJZQVlJQ292TEpvVlBQRWtHMS9DVVlYNkxIL2tyQUhBd2NBb1NLdjc3VkFKZVRTMnZHdW42OENBTDRJNW1aNTdPZHdNc3V5WW5qTWkxRjh3THUvNUUvYUtjZHNndEZkek1WLzhRTlhrWVp6SkUwZmQ1T21UYW1QR1VWMFFqOHUxRWdRTzNWWGUrZ01UOGNrNW5VTkErZmhRVmhFTUdMdlJSam5NdnFkT3VNbGpCMTBlL2NxbjhNaW9lY3pRdlBWY0xNR2VCM1BEVFdiWDNRVzRDOUNrK0lWZ01yL2R1YUIyWlhteklaZy9uOXpUd2daOXlQZ00xM0tUN2NHeUlxMitCb3kwQmZneER6YWprZTlMT3N4bUZFZndUbXQ3dGxkTE8xTEJ3bi9ZZlJwNUtVVCtDay82ZVh1U3ZHOGlYbkREREU0dTlmZ2dGY005MWFEWm5JZW14cVhSUlFtQXRldFdYNDAxMXoyVTV2TjZ1OUMweHZ3UmFZQmNQSkdaVy9rM0VhL1RSSnhkakZMTUQ2bEhrOS9ENDBFZzdZaEhGWThzQ1p0SGt3Y25jREFDekpIaElXMVNaYmxMelMvOFlJQXJBQzFLUmdwTWFpWWFtbzJQbVZqdnJoT1RzTHpHTExaK2hSMG16MjdyOVdHSXF6Y04wWSt6SDFXMWhueEozTjNXMjNMb0Q2anZVY1l3Nkt4UXVQYllpQjRDeWtLajRMNEptVHpjNG1OYXhpenFrZGNPTUEzRHFOeHdENERxUG84bjg1bnhNdVVZNUIrMU5HZ3BHV2g2cDQ2NDJ2blR1QXEwQWNRbnd4YUxZQ0F1YlpCL0ZWcGdyY2JkK1pwblZnNHRIdml4MTJSVElMQ2NaRlFKQXpBZVorMFNCRkFSNGR6djRUNEVUYzdJdXRXWTV6NFFtZGZJSHV1bFB4aWMreEVNWTF3eHNXa2hqRytQUUVOamdIL1VOcHpaWVkvYkNsNnd5bzkvTUxsRVlBTUZ2OGd1TjUzaHo3UXVVaFRPZmdoLzNtNy9kQ3V4N1A1ZmFRaHZSRzRMRGFhUndrSjhVdVJXN2hJQWRRcUFCRGkrenUvZERRczFLNHdoNzQ4MEtRRmd1YmJBTGJmZi91bUI0OGYrbE04NDgxTk1VZm5pbkdEMURobmVsYlFUc0tUakdScjk1TFovdWRLR3R4REpPRW03TnhoWHFpS2NIQkJrd2dBZkswYVRSd3hURit2dUpOVHowclUzdU1yUnd6cDZPL25TYzY3T2R3TTJRSDBTTEFHK1BPd3cyeEF6Yjd1ZmpzR01tYXdEMmtYbTBBRU1ZcXJlWkZJTEQydDdNcTBOWnFybzFHaTRjV2ZyZnc0MENoZmRDa1I1SmJSOE9HSGFrZTBCMkxWOVdaQVB6WEJlZzR4Rnh1TmFrYkM4d01DSVExQWRWM3RRbUNFZnBtV1pmSTFWVHFyU0RMY0l0cVFnR05kYmZIdnJSOWUxUGsrYUNvakNhTktOSHlRM1FXZW1MWDFpditEdkdTSnA4dkxJZ2t0VVc1cHdmNEpyWXI0bEYwSVk0YmFYWldrc3IxQnVFa0VQL2lmY01zeE0vZ1kvS3pjTks3ODVmWjFtZE1mWkdCSlhpUHg5YWZCVHYrVjlyb1lsV2hKVG1BU1BmK01SYlE1ellxa2lYN3RTNXRjT1BQS0ZQN0pZaWV3YWNjMmRkM2FQN3R2emZxN25pMTJsZXV2SFltSlVLdHlEdFU0UEtKV1FUaHZ4eFRNakk5QWRwMFZKLzFRM014MGRhZ1c3SVRVOUppWW1mQjI0Z3cweEQyU3p0ZnNtcDhxL1I3WFBiaDhsME9Cc0RUQVJHUTZNTVlxWnB0UTN6Mld3bnMvMTl0c0RMY2NPaXlGaUJqV0c1cURoNWN6dE43RWdmV2szTlJQeG1UZE1JakNvZFlNVkxCN2NYSWQ3aGlORHd4TGN4dUJXYlY2ZmNaVW5ld0RsSXZOcFY1K3pLTnlhV1l1ZHNOT2Z3c0xDK0VXamtMZitXQVRaZ3dtYi91V2phNWtwWTlaZ2ROV1FlU290VFZxU1p1eXZQNXBCZUN2TWR6UHFxcUVQazM3bVM3ZVprVHRBOFdJa1hieEd1VExocGlaSG9lbU0yZjVWZVVKQzFRUUFrNGNVM2d6WE40Zi9iNDVqRmJKNkVIRTlXL3VaS1YvK05DRXVSM1FWYjhFNGVmZDdYWDFEV2dCTURKMTJKNS80R3Bhc2s5RXRRSXdVVjh2VWYvbmd3dy8rTng4dHp1dHl3dHExcTM4QnM5dWZjK0NIeG03VHJnMklJekh0c21Xcm81a21ERWE2eVdUTWx4dFU3R3pPSUZMdFFjeUJBOExVZjdvc1Q4YlhialBkN0F5NWJRWU9jWmtmNzU5cjNZMmVZZWRZZnJ5TWZxT0JRRE5wRCtYU1pwNlkzb1NPN1BRWG1kdE0zZzNnU3RuSzFvaklwMFVZb1hxWUpZSlpXL25Eb1grcnQyeDBSM1p6eDNhakFGOU5JRjNuQU5YQnJCRVVxZ0Q4eEZFaldIZzZ3QmlaaDQxTVc2REFOYUVKNGM1eDRHUHBWMmw5ZXRndHJSem03Y3Vmcm1Pd0s2VEJMeGsvUmtNUjdUb0pQMW9yTjkvaEhGOEhINEFzUm80ZGNhZCs4Q1FDWXdIZ3hlay9PZkRJZy8vRHJLbXNMaDlJQU5RZ0FMREdGRE5OaTNSNGNIR3ppTHZpL0JZZlQ2T0pPZjA2UGR6YTRvODNaa2FyanB3SlRWRm1sVXBvTGhKOW1IcW13czcyQ204czNoNmxNRkJZOG53Snp3WHcxVis4VzJBbFJIK29vSTEyUTVxNWt3eHZZU2wvOWt2d1F4WnhMb1M1R3JJSGJEeVViN3JWWlhnTE9JR3orL2E0NFJlZmhRWXdnVEZic3lVQUk5ZXpkeHo0eWhlZXNGaU4xN2xNc0hiRDZsK29URmIrWEQxaTdYM0I2T0lHSGRKcTFsWkh0Y01GTnVFMDBXZlAzZzBJeVdaWlZ3MjJscmpvRXJ3NVNCV3V1YVJ2UnRuWmNyeURNQS9Md2I1NTgxMVBONWFIMHFRb0FJeXNKRFp1VWt3ZWlMbEVibXFOd2EyWWlKL0dUUFdhZXVmTnp2RzdGUW53Sk9Ed2l6L1VIa0NGUzAzbWpZeWd4MXk5NzVFdnZ1eWp2U2x0OXFaajgrWU52ekF5TXZyblZIZTFtWFVoOEMxQ0RZQ2R5dWYxclJObmlVU0x2aDUyU2c2RXR2bWt2T2xvS09jRkZQdHRnMWszV1RKaXU0ck9Pck1JczBtUjdKdFNzZE10V2J6Q0xWdTZWdThSREp1Uk1jUEh5N3lrYVJ1d3dTLzJWMTNBcWMwMU1oOUZTWURPOGV1dWRmVU5HOHpENCt5KzNlNk1OQUFLQUN3eEVSRlhtQ3JVZWhhLzl0aGZSWThGWDNnTC9SaUFBdUQ4eU1pZjIrdXZHcXM0dXlyejVKN2VYUWVaU1VGaVNMZCt5cFYwK0V2UVNLZG9nU2hDSEZPMkdSTVN6WkhpdE9td2R2N1RJWTZaU0RQNzVHMlJMc2JGWnNoMG9ZVm4xNmZ4bGRwYzgyS0xBbkFQWnVtU05XN0R1dTJ1RjlxQmJ2MTZ4cmE5SGpQRitEU1Rkcy84SmdSOGhnbWt2QklPV1pGZy9McHJJQUQ0dllJWUZBRERMLzBJTEQ4QkFjRDFQMk5uamg3NHlvTjhkRFRDN0ZydXh3d2JOcTM5MU9qNXNUL1R3UmJ2ZDZIZy9lMThqczhsOEJrRWZ1NzVVcU81WkpIUG05b3J5ZUdWdkhCcTJLWFFORWlSTEtSc05ZQXZESTNsZWQwWnRvVnlqbjlTc05rNFJuQ2JFWWVGV1R2MnJydmx5OWE1VlNzMjZrNExsNURHNkhiSEp6QitMQlJDT04waDMwU0RwdEJLRjh5NDhXdXZjclVXQXVBTUJVRFFBT0NIM0w5MjhDdGYrb0RGTUZ5Z2Z2empnWG45dmRlWHk1Vjd3cTJ4WnJUMFRJRTcrM29ld0M4alRFSmZJdkovZnNSNE0vWnZtZVpTazEzNGJRajJqU2YrKzNYMW0wZDIxNGN6ZXByc3JrbTRneEpUUGpxSG9WdXNtSFRHSjBiZDRPbGphR2NlZk9yUUpySjljWmduTEQzVGk5RHI2QWpyQzF5YjErQnhhbS9xSVN2bW4rVms1QittOHdlaDdPM09QQWhWZEpPTDU3dDZmL3BaZ01taFUyNWk4TGpqUjFwdGRLa3R2M3htejZ0ZlZRU1B5MUlBOU0rYnQ3NWFxWHljSGRrYW9VbmFFenMzdkdHSEE2QWxFMTB3SWVla20zL21tZlovUTZtaERFbGkzVnY1ejRxbXlmZjEwa1dWUzBrdWdscmxGUk5pTkZNTGY4N3U1ODRQdVluSlVkYzNiNUVZT0JZd1NkTklRb1orTWtONGJOZjJIZXlTaWtJd25SdWIxK25xL0lockF1T25CdHdrWHlQdU53Qjk5RDg1czJmWGk3SjV4TGxjUmxpN2R1VzdKcWZLVC9FenpwVE8wMVpTamRvTXZnaWxVT3d3cVJ2dEFjd1dsNmhaRzdLWlhhNlg2Tm9YREZ6M29zcjdabU9hVXZtZzlqR2FROW9NSDRGOFIrSFEwZEh0dG05OVIzUXlOUllvdEN1cUljb3JtV21yQzhEUE1wZjE1TXJGcnJvbGZSRG96SjZkN3R6T0YxMk43NTdndFZEUWFpNS8xZUdIL2k3MVd1Rld1Zi9ZWStYS2xadnJyckw3L0xsUnltTHZPeDBnWmIwdFlGNWZyK3NvZFV2Rm8wbzJPN1Jvemd0bzRVdlhHVzlndDg2UTlZVmYrUTBzNjhVaVVTU3p6cUtNaUJMSGpjZWM4V25kZFhmMXV1dXZmVGVFUU1IOFBlY0hUWURwVEJ0SWFnWUp1eTdRWUZjT3p1M3N6cnJSMVd0Z2kwZjdXUXFBWFMrNXFnUUFQREtaa2E3dTRzSWREenlRT3NjZThyamNrRnV4Y3RrREV4TVQ5K21WVXRPZ2RRUHdkVm85ZXZsSUZ1c3ZxbWR2T2xTd2krdWV0MCtuWG1CSjNvQ0N6ejdMaXl2cjlLa1k2cGtTRE4vUjBlbldyTFROdXNDb3FmUmc2aVNNMFJQMkNMU0hISndiWHJmT1phKzYxcnNBQkozWi9Zb2IyYk5EajFuYkE5YVp2ei80NkpmdXRBZ3gwbGU4ekxCaXpZcTdYYTEyZ3h4K0p6U0NkNWhodjVDMy9abGNiamwzWkRzN081ZTdldloydmNtMm9XT1N1TkFHVEhaODNJVnZMSnJMT010U1gwRGwwZ1AwN1FaZnRsa1VjZmExU01Sc2JZMFF6Y3N3K0ZRa2x3S3pRM3FFeUJWbEZlZVp1ZklhMTMvNys4M3RjZWJWVjl6bzNwMnVVcW5ZSFlCczV0OGZmT1JMdjJXaE1XWmYzMzlnMkxadDI0ZkhKeVllbHNvMmpRQ1lIcFl1bVRyZHBhMHdjNHhMZy9aMXVyRGFYa1RiWEVTU05Cb3pZSnZGZnJQSlBwMWlHaWpTTFBPT0FzMFN4NDFWYzZyK2ZCK2p2YnoxMHFDMC9XcTM2QU1mOVM3RG1aMHZ1OUg5dXlRQTlJaTZxOTk2Nk5HSHZ1dURJN3dGdXUyUEIycTFLYjU1UXgwWGI5cGNLSEdUSjAxdVJzSVZtNGlGdU5TRW56WVVsWDlXZjZqWGpOVHdsN3pHUlZCam01bC8wdDFNZHRqR3pFWjdJeVhUNmY1OGdwcmpKc3BXQytUamFnZmU0dUJIeExtRXIwd0w3a3RGeVRJYTJhUFpDQ1hHYTkybEg1azFqY3Z5TnVDbHdJSUZpd3JsU3ZsWGRRdW1vYkV2bEZLRHBKRlNmNGpla3Q2WXYxWlhTaEhLTjN0cVNKNUNZK0RybzhZLythTU1MZHRYak5yZ1J5YU4zQ0U4S1V3OEtWOW03ZTBFN0VSeWRrOVJGQUM3dkJKcEVjWmd6c3B5WHJSbW1RWS9hZGE1WVl1dUZXaDg0SVFybngxUzNYQ2hyeC82OGhmLzBrZFA0ZEtVNERMRTVzMmJOMHhNVHV5dFZtcGF0eGw4YzdWb3RiVFhqQkhlVkx5eGw1NG05MHQxWWM4L3lrLzJpS1UwMk0wcm1JblFoRi9DTi9adlFGUmNNS2JaWWRKQ3QveThtZldtQWhVcmtkZ2d2eVJDRktUaGR3MTRLSWpQbTF3S2xMWnNkd3VTU3dCVTdzd3JMN2l4SS90MEI2Q1d5Znp6UTQ5KytZOTlhQW9OcFp4RHdLcFZxeFpnOGg4Y0hSMXZYaVlsUjArYkZrd09pbFlEUkFqNU1JejJZQkpLMGlvUjRmMFZwd0hSb0V4QWpuYTV3ZGNIcE1OYitjZCtSTUxxRVlmSFliRmZFdWFWRExDSzZ4Yy9ZbEh2b01GWnVKblphZUpQam1ha0xoczVtcTg4YTVEcFpmaURPd215MTdQRnVjYVhhL0NEbTlyRytQaTRYc2d5YS9ock55UGpDdXMydUFVZnVzKzdBYlRIbVplZmMyUEhEbUlCbHFsbENtN0Yvb2NlYXZsQ250WjV6a0ZZczNiVkV4TVRVN2Z4MkdZS2ZzUzFHWGNBUXV5L05SSWp0bjBlczBlN2dkRWFsK0tLTVM1dGJzMndXaVRxQW11S0ZidzE4bXNSTG5mU2Z4cDc1UEplQWlxWjdERjFINFVQQ1ZieXVMMkZpVWQzZVl5WHdvQUJqRzhabVRYT2UyS2M3MnprY2Q1aWlBTERXd0xnYlBJTFNJVHhFL0Y5ZDMxRWRnR0ZPdk1LQmNBaFY4OWt2M1hnc1lmZTYwT2EwQ2IzT1JCYnQyN3RIWjhjLzZWNnRYbzlWb2d0Z2M1ZWhWYnNrYU5lenhodjIzQ3hYNCtVdy9WaHRsaEJpODFnQ09UN211VG1UeHhaUXl3NE02NFk0Z1drd2h1Z2ZGc2g0UjFiMjhSdFJNdTBBZFBrTWN2c1o0UEdyRUtEekh3Skg2Tk54T0FkTmJDNG1FWnNhcmIzSmhuZFJBRFViS2owZk1DSFlCaVhqVHFGR2pGOXpQeTBZWG1wMjRGZFhUWjBtaEN1cWQ5VzhDSE1iOFZxMS92K0Q1a2I0Q2JnbVplZWMrTW5qNkF3K2Z2M1AvYmxwbytDQnJUUGZ3NXZPMnphdEdrVkJwYzJKQ2J3aC84Mi9SZC93dzdSRjJjeXVVVlZuWWVxMnFHUVNxVXBYY054cVV3aFg5aUtFWjBKZ28rdkNXK0N2R0xSbU12bFZ0WXpiaDY5QWpQVjZyVnB4eGlZb1FnbTRjUHNpR2Q1cFJXdTF0eWF5V1EzSUswVzBYeHVvMUtwaklBQkR5Y3VsZ1VENmkwWnlGK1pJRTV5MDdzRWY5MlFOMEZKUVV4WEErQVhleWNjdkJEdFlsVHpwQlpBaHVjRFAzTHJZU0ZvQmp4TjZqVURwbU9LTVgwd3BxQ1hpclNHanpnREZHWEZLdGZ6dnArU20rQWJwcmtFR0I4OHRqK2ZyVzkvN2JISEV0LzJTMk1XbDVqREhDNC9RSmpPQTdRSUh4Z1kwRDRQbUhWeHFWUmFpUFY1bGw4Z0toUTYxcnFzNjhSc25TM21pdXVyOVdvSlFxWTdsODNlVnEzVy9OUWRpNGNBeVlXVUpkT2R5V1k2T2ZOVDdlZGRDSDdma0MrUG5kKy9DTUZwTnB3ZFV5WmlyVmpwZXQvN1FlK0FBSzFVM05rZEw3anl5TGxQdi9ibHYvMXo3OTBTczd2V0hPWXdoNHZHTmRkYzB6MHhNZEZKKzNobXZGZzlYLzBVdElSL2xjL2wrdnNoQUtnMXRNYzBZU0ZvR1FYQVhkNEJ4V3lxN003djN1RmNlZUxuZHo3d1YvL0xlN2ZFM0VHZ09jemhEY2FMTDc0NHVudjM3bE9rdzdzT0h3TitGN3g3RnhRRUxGdXFVQlRpdjJhTkl2aTFJTzBkR2Vud1Q5V29WaW5ySVNEb05LRHBNU2NBNWpDSHR3QW5UcHg0QnF6N24vVUpOcDBlQklHUjlmcHVIVTZLU1NjU1JSYW5tY2o0ek1lb3h1OHMrbys4eklRNUFUQ0hPYnhGeUdVeW4rZHI1aU5HRG9LZ2dlSTNDQ1VGUXhBV2lETTVZWi9GODZRUGdpS3ViZmxPanprQk1JYzV2RVZZdW5UcExuRCtzQmc3VU1UZ01hVm0vMGd3d0M4UXZ5eGRnU0RoZ3o4Z2ZoY1FBY2tiTkcweEp3RG1NSWUzQ004Kyt5dy9wZnhzck9JSHBrNHdlalRUSjRWQkExRnc4SnVIMUFBZ0FHcFRFN1kzTUtjQnpHRU9iMi9VcXRXQmVMWTNobTlrN2lTbHRJV0lzTzRuNDR2S3JqbzVhUUtnVXAveEx0K2NBSmpESE41QzFET1o0L0ZzRDJadVF5WVFnb0JJRXo4M3IzVi9HVm9BekJxV0FJeXZ6ODNQZ0RrQk1JYzV2SVhJMU92SDByTTltRHBKZ2NsRnJZU0NIYnZremo5ZkFFcm1EMHNBNkFYK0t1MHhKd0RtTUllM0ZMV3pzZXBQaWhsYkpLR1FwRWFoNEw4cXpVZU0rUUpRM2hIZ0dRQUtobGxnVGdETVlRNXZJYWlsazlFYlovZkEzR25oUUdvbEZLRHVUNDY3NnNTNHE0eVArVE1CM0FTY0dYTUNZQTV6ZUF2QnUvV3RHRG9jNnRIQkhyaGJVaEFXaUZNWkd4VlZJUUFjMDhFZmxwYnZBRWhpVGdETVlRNXZKY0RJa2JvZlVZdFpQMGtRR3lMdnJtSG1yNDZiQmxDYm12UUNBT2xxN3JDL1Nsdk1DWUE1ek9FdFJMbGNQakUxVmRiVGdhUnl1ZUxLRlppZStQN0FDdGI0Z1hoMG1MdjdwS0FKU09XdmxuVW53Q0dPdmdkWWR5OGNmT2UxdS94bDJtSk9BTXhoRG04aHdNREQrTldtbldiek9oazdwbW9OVEUvRzkxUUJvMGQyTHlCb2Q1NzVTYlZhL1pETDFUN2xmdnUzWjl3Sm5QR2d3QnptTUljM0RrdVhMdTNPRnJKM0ZyS0ZGaThJNUF4UE03NmZIMndabCtuUHVzeHlsd1VMSTA1KzgzYVh5V1hHYTVuc2prTE9mZU8xeHg0NzU2UE9ZUTV6bU1NYzVqQ0hPY3hoRG5PWXd4em1NSWQvOEhEdS93Yy8vRWY5MTNiRGxnQUFBQUJKUlU1RXJrSmdnZz09IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMV9QUkUiLCJGSURPXzJfMSJdLCJleHRlbnNpb25zIjpbInV2bSIsImNyZWRCbG9iIiwiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsImxhcmdlQmxvYktleSIsIm1pblBpbkxlbmd0aCJdLCJhYWd1aWQiOiIzMGI1MDM1ZWQyOTc0ZmY3YjAwYmFkZGM5NmJhNmE5OCIsIm9wdGlvbnMiOnsicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibGFyZ2VCbG9icyI6dHJ1ZSwidXNlclZlcmlmaWNhdGlvbk1nbXRQcmV2aWV3IjpmYWxzZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsImFsd2F5c1V2IjpmYWxzZX0sIm1heE1zZ1NpemUiOjgwOTIsInBpblV2QXV0aFByb3RvY29scyI6WzEsMl0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6OCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjozMjIsInRyYW5zcG9ydHMiOlsidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN31dLCJtYXhTZXJpYWxpemVkTGFyZ2VCbG9iQXJyYXkiOjIwMDgsIm1pblBJTkxlbmd0aCI6NCwibWF4Q3JlZEJsb2JMZW5ndGgiOjY0LCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6NCwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjE0MX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTAzLTA2IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiT25lU3BhbiBESUdJUEFTUyBGWDciLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI1MDMwNjAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTA4LTAyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiT25lU3BhbiBESUdJUEFTUyBGWDciLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI0MDgwMjAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTA4LTAyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjF9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMTAtMjEifSx7ImFhZ3VpZCI6IjBmMDgzZjE4LTQxMDUtNDNhOC1hZDY5LTI0ZTgxMmUzODE0MSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiMGYwODNmMTgtNDEwNS00M2E4LWFkNjktMjRlODEyZTM4MTQxIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlNlY3VyaXR5IEtleSBTZXJpZXMgd2l0aCBORkMgKENvbnN1bWVyIFByb2ZpbGUpIn0sImRlc2NyaXB0aW9uIjoiU2VjdXJpdHkgS2V5IFNlcmllcyB3aXRoIE5GQyAoQ29uc3VtZXIgUHJvZmlsZSkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NzI4LCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX0seyJtYWpvciI6MSwibWlub3IiOjB9LHsibWFqb3IiOjEsIm1pbm9yIjozfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMzg0cjFfZWNkc2Ffc2hhMzg0X3JhdyIsInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3IiwiZWQyNTUxOV9lZGRzYV9zaGE1MTJfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIiwic21hcnQtY2FyZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRFBqQ0NBaWFnQXdJQkFnSVVYemVpRURKRU9UdDE0RjVuMG82WmYvYkJ3aVV3RFFZSktvWklodmNOQVFFTkJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNWjYvVHhNOHJJVCtFYW9Qdkc4MW9udE1Pby8ybVEyUkJ3SkhTMFFaY3hWYU5YdmwxMkxVaEJaNUxtaUJTY0laZDFSbngxb2Q1ODVoKy9kaEs3aEVtN0pBQUxrS0t0czFmTzUzS0dOTFp1ano1aDN3R25jcjRoeUtGMEc3NGIvVTNLOWhFNW1HTkQ2enFZY2hDUkFIZnJZTVlSREY0WUwwWDRENW5HZHh2cHBBeTZua0VtdFdtTW53TzNpMFRBdWNzcmJFNDg1SHZHTTRyMFZwZ1ZkSnB2Z1FqaVRKQ1RJcStEMzVod3RUOFFESXYrbkd2cGN5aTV3Y0lmQ2t6eUNpbUp1a2hZeTZLb3FOTUtRRWRwTmlTT3ZXeURNVE10MWJ3Q3ZFenB3OTF1K21zVXQ0cmowZWZuTzlzMFpPd2R3TVJEbkg0eGdVbDVaTHdyclBrZkMxLzBDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01COEdBMVVkSXdRWU1CYUFGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFNd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkRRVUFBNElCQVFDM0lXL3NnQjlwWjhhcEpOanh1R29YK0ZrSUxrczB3TU5yZFhML2NvVXZzcmh6c3ZsNm1lUE1yYkdKQnlKMVhucXVCNXNnY1JFTkZ4ZFFGbWEzbWlvOFVwZjFvd00xWnJlWHJKMG1BREcyQnBscWJKbnhpeVlhK1IxMXJlSUZUV2VJaE1OY1pLc0RackZBeVB1RmpDV1NRdkptTldlOW1GUllGZ05oWEpLa1hJYjVIMVhnRURsd2llZFlSTTdWb2xCTmxsZDZwUkZLbFg4dXN0Nk9UTU9lQURsMnhORjBtMUxUaFNkZXVYdkR5QzFnOStJTGZ6M1M2T0lZZ2MzaXJvUmNGRDM1NGc3cktmdTY3cUZBdzlnQzR5aTB4QlRQclk5NXJoNC9IcWFVWUNBL0w4bGRSazZIN1hrMzVEK1dWcG1xMlNoL3hUNUhpRnVoZjR3SmIwYksiLCJNSUlEU0RDQ0FqQ2dBd0lCQWdJVVVjbU1YelJJRk9nR1RLMFRiM2dFdVpZWmtCSXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFEbTU1NWJXWTlXVyt0T1kwcklXSGxkaCthTmFub0NaQ0ZoN0drM1laclFtUFV3MGhrU0c2cVlIUXRQK2ZaeVMzM1ZFcnZnK0JRcW5tdW1nTmhmeEZya3dFWkVMZWlkQmNDOEM0QWc0bnFxaVBXcHpzdkkxN05jeFlsSW5MTkxGY1pZLytnT2lONlpPVGloTzUvdkJaTWJqOXJpYUFjcWxpWW1OR0pQZ1RjTUdhRUF5TXpFTU55Mm5tNkVwK3BqUDVhRjZnaTIxdC9VUUZzdUoxajJSai95bk0vU2RSdCtlY2FsNU9Zb3R4SGtGYkw5dnZ2MkEyT3Y1SVRaQ2x3NGJPUzlucHlwUWltT1o1UUFZeXRtWWFRcFdsL3BNWXo2elNqOFJxa1ZETkVKR3FOZlRLQTJpdkxZd1g2bFN0dE1QYXBnMEo4NGw5WDB2b1ZOL0ZwUzRWQ1ZBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlFnS0ZBaEc2UmFXK2hUeTUyZHhlVDhiQzk2SHpBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBWU16Z0xySkxJcjBPb3ZRbkFaclJJR3VhYmlIU1VLU21iTFJXcFJrV2VBdHNDaERFSHBYY0ovYmdETktZV29IcVE4eFJVakI0Q3llcFlldmMzWWxyRzhvN3pIeHBmVmNhb0w1U2V1Smt6SHhLbjRiVGFTcDkrTXZ3YW1ucDY0a1pNaU5iRkxrbmZQOWtZS29SSGtNV2hlUkoxVXNQMXo0U2Nta0NlSUxmc01zNnZxb3ZxaldDbEZzSnBCY3NsdVlIV0Y3YkJKMW40UndnK0FURW9wWTRJZ0d2Nlp2d2MrQTlyK0FUMmhxcG9Ta1lvQWwrQU5Zd2dzbE9mOXNKZTBWK1RBOVlZL1VsYUJtUFBUZDAvL3I5d3ZjZVBXWmtQaktvQUMvelVOaGZEYmg0TFY4R0hzM2x5WDJYb21ML0xOYzhKWXp5SWFERWhHUXZlb1BoaC90cjFnPT0iLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVRuYmJHSVIyTkh2enFJS0ZBZVF3RzFYQmlzMHdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFRWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPc1hqM2swNEJhbjRUWWR0WktxRC9PUEp4eUR5YVBtQ0JVRlVpYVpJZ1R0ZVpuajNYMjVEaGdwWlpYc0M0RDB5ZEljcmxBNndOVUluT1JML0w5ekJiVEVJTUFWTUdvNmc3VUtBbWIyTUY2QUhibmhZSmQ5ZWlrdXBWTldTaEhOWU5jNEdCZE8xWU42QWZVcXZKaEhiZTNWNFNOTVBtQlJFS0pQVno3VGh3Z21nZ1RlOFdzMkswL3dzcXYyd1NFN3BiQ0JzVVpoSVg1MWJaTTNwcUR3SlBUbVJGRXZ0MC82dEc1ZU84RjNqMTRPWHFmRWhtam4xVnZ4S0RZUU9MWkF4Q3d3Z0MwUDRDZGZXdjN5OFBTUjhJMzU0aE8xWStHek5qdklxWDM4TktMeXd1SVlIRmVyT3hObHhFTUJ2RmhZQnVSdVlBa2tnVWFQcU42VUJoc0lMcnNDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNDb1JIaGl5Tm5iblhSV0lMNlpCWG9CWDlZVE1COEdBMVVkSXdRWU1CYUFGQ0FvVUNFYnBGcGI2RlBMblozRjVQeHNMM29mTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFDUUZhZkpJMS81V2c5Q0VFaW1FMVJQNTRSZ1F3VE5UT09Rc0xBQ1RlK3JJdGxGUXpDOVpEaHJWODI4eVg3anp5K0FBc3AzaXpLN1QxdGgyZGw3bSt0dTBzdzJQYS9vbGMwMm50NlB5SXczNDhnYUh6aEkxKzBLRTQ1cXh2RkRlTDJsTXhiUGZDWXZ5RUVhWXpqaVFFTFU1OTUxcFhHV3lLTWEvNGZMdE8rWktPWGhNdVZlcTRyWERQSTU0VzZKSE9pQWFpS2Rpdys1ZTNjMmt0L2pGSVF0TTZ2TVhnOUxORnpkakVUTnQyMFZYOVFldlJwRlpmdWNNRzl3Q2FRRG9GbFB6cFRNSktoUGV2L2ltSm1aWWhLZnIwbExjZW10cWpJeExBb3FaZE9ZZkhCZzYrdkFjZFBJL2lhdUdwVUF2N1grVUtObUR3aloyQmFINHNMd2hCMm0iLCJNSUlEU0RDQ0FqQ2dBd0lCQWdJVURxRVJ3KzRSbkdTZ2d4Z1Vld0pGRVBEUlozWXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFESTdYbkgrWnZEd01DUVU4TThaZVY1cXNjdWJsdlZZYWFSdDNZYmF4bjlnb2RMeDVzd0gwbFhyZGdqaDVoN0ZwVmdDZ1lZWDdFNGJsMXZielVMZW1yTVdUOE4zV01HVWU4UUFKYkJlaW9WN1cvRStoVFpQLzBTS0pWYTNld0tCbzZVTGVNbmZRWkRyVk9SQWs4d1RMcTJ2NUxsajV2TWo3SnRPb3RLYTlKN25IUzhrTG16WFhTYWowU3dFUGg1T0FaVVROVjR6czFidm9UQVFRV3JMNC9KOVF1S3Q2V0NGRTVuVU5pUlFjRWJWRjhtbHFLMmJ4Mno2b2tWbHR5RFZMQ3hZYnBVVEVMdlkxdXNSM0RUR1BVb0lDbE9tNGNycHduRFJMVkh2alllUEdCQi8vcEV5enhBL2djU2N4andhSDFaVXc5Ym5TYkh5dXJLcWJUYTFLdmpBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlRxdDBLUW5neDdaSHJiVkh3RHVueE9uOWloWVRBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBcVFhQ1dNeFRHcVZWWDdTazdra0ptVXVlVFNZS3VVNitLQkJTZ3dJUm5sdzlLN0hlMUlweFowaGR3cFBOaWtLam1jeUZnRlB6aEltd0hKZ3h4dVQ5MFB3M3ZZT2RjSkpOa3REZzM1UFhPZnpTbjE1Y0ZBeDFSTzBtUFRtSWI4ZFhpRVdPcHpvWHZkd1hETTQxWmFDRFlNVDd3NElRdE15dkU3eFVCWnEyYmp0QW5xL05EVUE3YmU0SDhIM2lwQysvK05LbFVyY1VoK2o0OEs2N1dJMHUxbTZGZVF1ZUJBN24wNmo4MjVycURxc2FMczlUYjdLQUhBdzhQbXJXYU5QRzJraktlcnhQRWZlY2l2bEZhd3AyUldadnhyVnRuM1RWMlNCeHlDSkNrWHNORDA1ZENFclZIU0pJcytCZHRUVk5ZOUF3dHlQbW55YjB2NG1TVHp2V2R3PT0iLCJNSUlEUnpDQ0FqR2dBd0lCQWdJVWV4OW5UOXZ3Wk5YUzQ4M0xkaVlHZncyU2pTb3dDd1lKS29aSWh2Y05BUUVMTUM0eExEQXFCZ05WQkFNTUkxbDFZbWxqYnlCQmRIUmxjM1JoZEdsdmJpQkpiblJsY20xbFpHbGhkR1VnUWlBeE1DQVhEVEkxTURnd01UQXdNREF3TUZvWUR6azVPVGt4TWpNeE1qTTFPVFU1V2pBbk1TVXdJd1lEVlFRRERCeFpkV0pwWTI4Z1JrbEVUeUJCZEhSbGMzUmhkR2x2YmlCQ01pQXhNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXUxTWV2bnk5ZHlPOVpVQzM5U29NaExjUi9EWHJ0Ri9jaU0xMnRjaXkyRVhBWjZNa3JpdlZ0Q2ZFVk05WDZJU1RFbkJQNnVTWVlvdjZwcHY2TzZKaDJOSG1ZbTR3K0puUzRWbkNQVTdtSEFNZlZJMk1HVFRNVk9ldzB4VXNHN3NJU0lrSURVQm11azhZSzljNXppYzkrdkZRR0xJa3NkWE81aVZGSWdORzUzY0dYRDRaTFpvQVBpdTBQRW96eEFxWUlhSTRneEtoT0EzUzgvVzhtSVdzdTZvZnlqNEd2a0ZHNlo3a3lGMzEwN1A3bXdGSExySTNFTmFQV01PRmNUYUdhMGR3Ky92VlJ3alJjRVpCVnN1dVQvODdja1NzMGE1cGt0M3ZaQmxhWWVUOHB6U3JlVjdtb3djSU05MEwyaWFBVGxQMG54bWFFNm5PeVRib2pGVmwyd0lEQVFBQm8yWXdaREFkQmdOVkhRNEVGZ1FVU1hFaDNzYTNidER1cm00TU0vQzdTMWxSdXVZd0h3WURWUjBqQkJnd0ZvQVU2cmRDa0o0TWUyUjYyMVI4QTdwOFRwL1lvV0V3RWdZRFZSMFRBUUgvQkFnd0JnRUIvd0lCQURBT0JnTlZIUThCQWY4RUJBTUNBWVl3Q3dZSktvWklodmNOQVFFTEE0SUJBUUI1R2MzaGFmdHA3aEtzRVpzbytpL1o1blJ1cWRtekcyV0NsVW9SVXFiYVB5Z2xuSkRqS1Iva2ZnT2w2aWJiRi96dGhtM0ttWFE3SGNESVAyeE1kRzdVMkwyaW1iSlFIcVBmL2gySHFvamI0clpndWUrNlc0a3RTUjVlbFI5TDFyWXFFL1NHWU00aUVLb1ZRU3Y3UlQxcnhJZVdpS3N3L1Z4eGkvUU9uc3gzRjd4ODBDQ1lnQjRFM3lReDhWVFc0NDBoVEV3VEExZU1IT2l4MzJ0UHR5eUhJYThQVlZJZlZwSFFKQmFNVnZ2NTA4VUVqd2tiVTJybmpmem9TVE5TOUE1alVROG1CU3ZlOTVyakIwZG85OEVVK0R4ZEJxWDIrSDZpNXdsSUNGZ3poZHpjc25lOWhHS1Q2bHpUWDRjSWRKc3JZMit4bGVLMEZGUXk2bEdFVkxFZSIsIk1JSURTakNDQWpLZ0F3SUJBZ0lVUjM4bXEyNlNmMnN6VlYyQmRHNldFTjdrdVdVd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVJZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU5ZMFdiOW9Qb1JvS29ReVdQYUpwejExdnJXVGc2elR0bU5qMlZvS1JueXZLR1JxcHpiODN3NWw2WUE5NlVZa1lCRFFQMGlsTzJEUGU2d1dxVlI1ekRmUnpkY0g4YmgrTDdkR0d2YWU2aFJUWmhrRmtDcFhEczRIY2NrbnJEZjhGQ2xKN0hlMzlKZjQyL0cxUW0yeno5V1dtclBYdGdpSy94MDVHanNRZkd1REcxemY1UVRVVWllOGx3eW1LM1RmZE92TmVlSkFBUGUycG43SXRmUmIrclZyTldpRHpsUm4ydk5uWjJ3UG80d0gvV0o2ZGhYWkcrck1XVCthNkJvY2cxVWZJdzZrZHVuRzRiVHBaenN2YWNGWXlSMG1wZitEZU9ucFNXQW15d0pXSHZUbGYyWVh4RnllWGNUQUNkUWxjTU5HSjJWaFpRNDh4dFA1L1JCUC84a0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ2h5NDJva2lxY1RTMWlxYS9IUldqa0JuNEgvTUI4R0ExVWRJd1FZTUJhQUZPcTNRcENlREh0a2V0dFVmQU82ZkU2ZjJLRmhNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUFuK1JISVBidE1FRE5kVDFnOEgvUml0QWtVZExnQXQxdFdHV25sajlrbmJ2NC80R2xYN0M5cDQ1ZWZQTzkvYVpMNk9WMVhSS0JpNkttdEJXNUs3bnVZRW5NeC81QnFCU2JMVDdyaGR1QzQ5VEJlTWI5UEhkWHNUbFNWTlllZnIxZEdpZHI0ajB4VkJRTGIxcmtuREFiZFdEektmdm5heUtPOEZyd2U3SHg4NDNNRy9ySitjMFhydVV2YmZWVENITGlJV2hNN29ORGhMOHhvYjZ4VW85S0xLY1NMK0l0WXNPMy85V2I4UTlHanNxTDRGWHNEY0cxU2FZaDdLcGZ1TW1PaXhxekpaTzJuSWljUFlSZzFJMlN1aVVmWU83MHRtZEhjYmwra1NRbVNZdDdycTR2aUlMZzJHeDNqOXJJVHVXVGpiYVVhU1NReGdPbU1TSHV5ek1BQyJdLCJpY29uIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwiaWNvbkRhcmsiOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJwcm92aWRlckxvZ29MaWdodCI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsInByb3ZpZGVyTG9nb0RhcmsiOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xX1BSRSIsIkZJRE9fMl8xIiwiRklET18yXzIiLCJGSURPXzJfMyJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJsYXJnZUJsb2JLZXkiLCJjcmVkQmxvYiIsIm1pblBpbkxlbmd0aCIsImhtYWMtc2VjcmV0LW1jIiwidGhpcmRQYXJ0eVBheW1lbnQiLCJwcmV2aWV3U2lnbiJdLCJhYWd1aWQiOiIwZjA4M2YxODQxMDU0M2E4YWQ2OTI0ZTgxMmUzODE0MSIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImxhcmdlQmxvYnMiOnRydWUsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsInBlckNyZWRNZ210Uk8iOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjp0cnVlLCJhbHdheXNVdiI6ZmFsc2V9LCJtYXhNc2dTaXplIjoxNTM2LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjgsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4LCJ0cmFuc3BvcnRzIjpbIm5mYyIsInVzYiIsInNtYXJ0LWNhcmQiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotOH0seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTM1fV0sIm1heFNlcmlhbGl6ZWRMYXJnZUJsb2JBcnJheSI6NDA5NiwiZm9yY2VQSU5DaGFuZ2UiOmZhbHNlLCJtaW5QSU5MZW5ndGgiOjQsImZpcm13YXJlVmVyc2lvbiI6MzI5NzI4LCJtYXhDcmVkQmxvYkxlbmd0aCI6MzIsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjoxLCJyZW1haW5pbmdEaXNjb3ZlcmFibGVDcmVkZW50aWFscyI6MTAwLCJsb25nVG91Y2hGb3JSZXNldCI6ZmFsc2UsImVuY0lkZW50aWZpZXIiOiIiLCJ0cmFuc3BvcnRzRm9yUmVzZXQiOlsiVVNCIiwiTkZDIiwic21hcnQtY2FyZCJdLCJwaW5Db21wbGV4aXR5UG9saWN5IjpmYWxzZSwibWF4UElOTGVuZ3RoIjo2MywiZW5jQ3JlZFN0b3JlU3RhdGUiOiIiLCJhdXRoZW50aWNhdG9yQ29uZmlnQ29tbWFuZHMiOlsyLDNdfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjYtMDQtMjUiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NzI4LCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IlNlY3VyaXR5IEtleSBTZXJpZXMgd2l0aCBORkMgKENvbnN1bWVyIFByb2ZpbGUpIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNjA0MjUwMTIiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblByb2ZpbGVzIjpbImNvbnN1bWVyIl0sImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjYtMDQtMjUiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NzI4fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI2LTA1LTAxIn0seyJhYWd1aWQiOiI1ZWFmZjc1YS1kZDQzLTQ1MWYtYWY5Zi04N2M5ZWVhZTI5M2UiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjVlYWZmNzVhLWRkNDMtNDUxZi1hZjlmLTg3YzllZWFlMjkzZSIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJTd2lzc2JpdCBpU2hpZWxkIEtleSAyIEZJUFMgRW50ZXJwcmlzZSJ9LCJkZXNjcmlwdGlvbiI6IlN3aXNzYml0IGlTaGllbGQgS2V5IDIgRklQUyBFbnRlcnByaXNlIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfSx7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjYsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjYsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNpVENDQWc2Z0F3SUJBZ0lVT2ttVTM1SWljWG9WUGpmdndwRzdNTjZ0SFBVd0NnWUlLb1pJemowRUF3TXdRekVMTUFrR0ExVUVCaE1DUkVVeEZEQVNCZ05WQkFvTUMxTjNhWE56WW1sMElFRkhNUjR3SEFZRFZRUUREQlZUZDJsemMySnBkQ0JHU1VSUElGSnZiM1FnUTBFd0lCY05NakV4TURBM01Ea3pNRFF5V2hnUE1qQTFNVEV3TURjd09UTXdOREphTUVNeEN6QUpCZ05WQkFZVEFrUkZNUlF3RWdZRFZRUUtEQXRUZDJsemMySnBkQ0JCUnpFZU1Cd0dBMVVFQXd3VlUzZHBjM05pYVhRZ1JrbEVUeUJTYjI5MElFTkJNSFl3RUFZSEtvWkl6ajBDQVFZRks0RUVBQ0lEWWdBRXRnT0M3SUt4aXBNSjdiVlBUVDgzT2U5MHh6SFBDZWJ4eUN0Zy9XcnNUclJhU25ZaWdtSkNCOC9qcUJONE9RRzJkWjVqY05zTDZTd0hvc1lEUkpjK08xems5aTVHRVpXZjNJcjk5MkE2ZHVNc3A1MWxxNGZBZ2EvVXpUTjkvRWJ6bzRIQU1JRzlNQjBHQTFVZERnUVdCQlRmeHpnOEdHellBaWRLTDYzdWhTaXJhWEpJS0RCK0JnTlZIU01FZHpCMWdCVGZ4emc4R0d6WUFpZEtMNjN1aFNpcmFYSklLS0ZIcEVVd1F6RUxNQWtHQTFVRUJoTUNSRVV4RkRBU0JnTlZCQW9NQzFOM2FYTnpZbWwwSUVGSE1SNHdIQVlEVlFRRERCVlRkMmx6YzJKcGRDQkdTVVJQSUZKdmIzUWdRMEdDRkRwSmxOK1NJbkY2RlQ0Mzc4S1J1ekRlclJ6MU1Bd0dBMVVkRXdRRk1BTUJBZjh3RGdZRFZSMFBBUUgvQkFRREFnRUdNQW9HQ0NxR1NNNDlCQU1EQTJrQU1HWUNNUURzdjRLNk5mSnZmdnpkME95Z3dKL0FCaUx0Z3RKV2hYVGVVbGx0ZHFhNFdzT005dHZ4NjM2djVGSXZaUmtLMVhvQ01RQ2RvUFErYTRmREJFaU51ajBXczMzdVVRaEdycHNlUERHZlZYbjRrRXBiVElCZU9kVkF4Ly9Uck1DL1NWYitic2c9Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQU5FQUFBRE1DQUlBQUFCaUVOSDlBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFBN0RBY2R2cUdRQUFDWnZTVVJCVkhoZTdaMEhkQnpWMVlEWERUZWFzU2syRUV3eFlNQ0FBUU9HbjBEb0VDZEFDS1lrUUNDaEJFaUFFRWdnaElRRUhBaWhkeExBWGJMYUZxMTY3NzJ2ZXU5OXAvZVoxWC9mekVwYTFnV0RaNldWOXQzekhSMGRnM1puMy92bXZ2dG01NzJ4ak9IQU1iV0JuY014MVhFZzUxUlZIWFVUTmMxdDlvS0t0K0x6SDQzTXV6bThkSDFFdzZsUm5TdHRneXNjN21OaWlXT2MxREZPRWpQYm9hQ3ZvY2RYMllkT2krcTRPTEwrMXZEU3h5TnozNDdQaXkyb3FHdnRjQk1FMk9MMTV0dGl2ODRKZ3REVzBaRlU1bm8zcmZ3Ulc4bDFZYVZydHBZZi9YWHRuRzF0bG1pM0pVNnlKSTlaVWpHaEJQUTQ5SHZVNk54dHJjZHNyVDE3ZThYMXUwc2V0eFYva0Y2ZVdsN2IyZFVsaXFMWG5nUEd2cDFqR01iVjFCcVdWZktjTmZmRzhOSXp3aHFPRHUrY3Y2ZlBFamxzaVNFc05zYmk0Q3l4dkk2QUNRMzA3bmF3cVBmQmdZamh3eUlHamc3ck9ITjMzUzFoSlgrMjVVZmxsdFczdEhNYzUzVm8vN0VQNXdpQ0tLMXYvaXk5OUtHb292VTd5bGZzYkpvVDFvY2tpNWVSNXZDTGpiWllTZlRHbUZBRCtoMmNpK1dRQ2VDRG5aMGIxbnZjenNaTGRwUTlHbFAwWldaWlpWTXJSVkZlay9ZVC9zNUJoZ1BoUGtncXZDdWlhTTN1K2tYaFBYT2lSaXhXR2drTzJKbHg0YkJ6b1FscHNWTElBVERCVU1KS3pZMGFXUkxlc3phczd0NDlCWitsRlZVMHRCdzQyMzNET1o3bmE1dmJQa3N2dVd0UDRTazdYZlBDK3kxeGVtNnpRMGFsOW5wN1RNZ0RWb0IyOFJKSXNpQzg3N1FkMWZkRkZueVZXZGJZMWdIekFhOVZlOFdrY3pEdmFPdm9oQnJ1b2FqQ004UHJGMFQySTVkaElJY1hoWmZHZ3lsbWI5QlFDOXBCY1M5QThsdXdwL2VjOE5ySFlncWljOHM2dTdvMVRmTzY5YzJZZE01TmtNbGxydWRpY2kvY1Zyb292QnZKQ3pVakpGSnNHK2JBZ0NIZ2lWT3d4SWxMd2pvM2JDOTUwWmFiVVZHM3Y4SnUwamxYUy90N2FlVTNoWlV1Mzk1Z2lSelNwd3NzcnRzd0J3ZUpNaFE0czJmZzJHMTFtOEpMUHNtb2FHanIyT2ZWazBubjdQbmxqMXFMejloVk55KzhEMmtMTlJ6ODlIOXBER1kvd01RQ1RTbkkrV0c5WisrcS9aMjlKS0dvY25CNDJLdVhUMHc2OTFaYzN2VmhKY3ZDTzlCZkdqVWNUbktZZ3dmVmRycDJObWI1N3JhYmR4ZTluNUJYMDlMdTFjc25KcDE3TkNMM3pHM2xoMFgwbzBvT0NidlhpMkl3QndhY0FYUGl4SVhodld1L0x2MWRkRjVLZFpOWEw1K1lkTzdtOE5LanY2NzFWbkl3WS9WN09Rem1ZSEF3NE55Y2lLRmp2cXE1TGJJc3ZMTERxNWRQVERxM1BxSisvczRPL2MvMGJ4cDhYd2lET1Vqcyt2QWE0MTZ3by8zeTZJYlBxd2U4ZXZuRXBIT25SbmVpTCs5dEU5ODA3UFZ5R015M1l0T3JPaGdubzBiUHRuVzk2M0o3OWZLSlNlZFcyZ2IxNnlPY2Zya0ZPNGY1WGhqeXhISVdwN2c2ZHVqTk9zYXJsMDlNT3JmQzRiWWtlOUJWRnI5WHdXQytLMDRCWEZybGRHK3A1NzE2K2NTa2M4ZkVrdWdlS2V3YzV0QnhpdURTQ1hIRTZ3MEh2Q1o4akpOQ3pvR2hmbitQd1h4WERPZmlxZGUrelRrOXoySG5NSWVPTjgrUnJ6WHM0KzRTN0J3bUFHRG5NRk1OZGc0ejFXRG5MTkVoajErREJKclFkYzVvN3FoOUVSbEt3T2VkWXUxbXVYT0dXUHZFVnpLLy94Uk56SmtnaHBnN2U0RlBaM3hNLzNZTEtMUFdPY01lUXlsMFFyc25tVkF0Q3JYN0FpdXh5RVlzdFJOSE9vaGxEbko1TEhXc2t6cmVTYTJNbzFiRlV5ZkdVeWVOYzNMQzdPR1VCUExrQkhKVkhIVk1MTG5FUnM2YnlwdlRacFZ6NDFscVVqajlGemlQNTFxUld3dDF0NDZLSlZjNFNmQnBkUUoxWmpLOUxwVytLSjIrUElPK0tvdStOcHU1SVllOUpZL2RsTS9lVnNEK3JJQzlzNUQ5ZVNGN2w4N21vbG5DM1VYc2ZjWG81Nlk4OXJJTUdoUmNiQ2U5amViWHBJRmc5amhucEM1SVl4R1F6TkR2TUhBc3NwRndIcDhVVDU2WlRLMVBvNi9Nb20vSVpVQ21lNHE1aDh2NEp5cjU1MnFFdjlRS3I5WUxielFLN3pRTEg3U0lIN2RLbjdWSi8ydVh2dTZRdG5WSzI3dWtIVjNTVHAxZHM0WGQzVkpranhUV0xjSG5mYUtTMjVqSkxJdlZuWU1HOUd2VlFEQWJuRE5PMFBHc05pK0dXR0tIVEVhZGxraXZUMk91elVHSjZwRnk5b1VhL3ZVRzRjTldFV1NLNkpHZEEwcnFrSkk3cXBZUWFpV2wxZEphRTZPMXNGbzdwM1Z3V2hlbjlmQmFyNkQxNmZUUExnWkZ6UzE3aGlSUG1Wdjl1Rlc4dllBN1BvNnlST21GaDEvYkJvSVo3TnlFYW5xSkJwWFprWGJ5NUhqcWdsVDYyaHhtY3hIM1pDWC9TcDN3Zm91NHJWTzA5MHNaUTBxeFc2bWwxVllXeVRRaWVTakZ3NnRqc21kczN5c3RReUFHQmMrZWJ2bVhKZHlKNEp4UjdQbzFjaUNZMmM3cHVRMFMyeEVPY25VaURXTUVGQ3QvckJiZWJSSER1MlZJWTJXRTJzUnFQV0NZN0tFVkQ2ZDZSTTBqYTJPcVo4emovV1FoSFpEQ3c3dWtYMkRudmgxdmVrTzVEUXFSdGNrVVZHbVBsTVBRS1c3dmxOS0dsR3BLaFpHUlZzQXRyTmFCb3BQVGRuWks5eFp6TUlIRnpoMFFQYjB0dEtIWi90Vlp6T1BsSEF5Z3puNmxpbFM3ZVkyUVljVDBRQ2JEOGEwQmxlc083TnlCOEE2bWJoaE1WempKOWVrMFRQaTNOQWpXWHJtR1VxRSt3MG50dXdaMjd0dlFuVnRnSTA2TUo2L1BZWjUzOFdIZGNnV2g5Z3Nvc1hrUEZNZDNDZXpjL2pFeVhCU3h4SWF1dE4xUndMN1JLS1FNeVoyOHBtRFpEaUd3Yy90SGQyNnBqVHczaFg2d2xQdXNWU3gycTZPU0J3dDNpSUdkMnhkZ213NWt1SFdwOU1ObDNMWU95VVdwM01GdXc0M2pRSUdkMnhkNmhsdHNKODVKb1VDNDdaMVNBNjNpNnMyc3dNNTlrL0VNZDVpVldKTk0zVi9LYmRXRms3Qnc1Z1YyN3B2b2s0YjVWdUxrQk9wbmhld25iV0l0em5CbUIzYnVtK2pPSFJ0SDNwakx2Tmtrd0tTQnc4S1pIZGk1Y1l4UkZjbzRHM2xST3YwbkY1ODJyTUFzMVhzb09Nd0w3Tnc0dW5BTHJNU3BpYWlNaStpUmU0VDliTEtONDlBQ096ZU9QcW91anlWdnlHWGViaGFyS0ZYR09TNHdnWjBiSjRxWVp5WE9TNlgvVU0wbEQ4ckRFczV4Z1lvZVh0dmRKZDBYMHM3cGxkemNhR0s1azl5VXovNnZYV3hqTlFWL2RSK3dHQlMxaUc0SjNiTVpIN0xPZWI5VUpTNUFTWTdQR0piWktmeDZDOTVKODZEYk9RRjRXd0RHZEZuekF0bDI5dEhNYUZzN3BidUx1SldoNnh4ODVpZ0NqdWEyZlBhek5xbVptYUtySTZMcW9XUVBET0w5Z3RiTm8vVVFyYXdHL2RISWFQVzBXZ3RRYW8xT05hVldrWk5Vemt6Z3lGMzZCMGtjVUxZMENqZm5zY2M2OWZVUWdGK1BCSUpnYzI1dURIRmVDZ1ZKTG5rd3NOZEhRR2RHR1JzUXdTMjFqRkF6aDVYNEFkbmFLKy9wbG5kM3lkczY1YTg2cEMvYXBVL2J4STlieFk5YXhBOWF4UGVieGZlYXhYZDEzdEdCS2M1TUJJNGNQZzU4aXIvV0NmZVZjT3ZUNlNNZG9ibldFRjBpY1I5dUo2L1BacUNiR3hnTlJyUUFCUXpaVUNsbURTdTd1NlYzVzhTWGE0V25xN2hIeXJrSFN6bVl4RzB1NU80czVHNHJZRGNWc0xmbU1iZmtNVGZsTWpmbU1qZmtNTmZuTU5kbEk2N1YrZEhNQkMzanpVV2Y0b3BNNXB3VSt2ZzQ4akRiWHQwUk9JTEZPZjJhM0x3WTlFM1hBeVdjdlU4ZUNVeVNnNG9OWHJtVVVIZDFTUys1aEx1TDJhdXptWFZwOUJsSmFIVTdsRFhIeDZGMS9DdWNGSHprbzRGWThpZ0hDV2tBT01LT2dMTmkxckRVVGk2MG9TOFk1L2gxUjBBSkZ1ZFFNWUhXcFY2VVRyOVVpNzdwQ3NRMU9SQU9LcmIwWWVYZmplSXZpcmtONmZSSjhlUVJEaElHZEVONnhNVG1NVVpON1V2RXJBTStGTFQ4MUF5cEV3U0xjK2pERThjNXFSL25zUiszU3MycytjTXFDRGNrZXRJR2xiL1hDVEJLUWxaRCszUkFjeHUyR2I4WXY0Y09FNS9hcnpzQ1NoQTVGMDJjbmtqL3BveUw2WlVIUlBPem5GdjI1STZvcjlVTDErVXdLMkpKMU9Mb1JQZHBlcjlEd2dTSW9IQU8ranNTaWpueW9qVG1aWmVRTTZKUVpsK1dnNUc2aGxJL2JKRTI1Yk1ueGxGejlYZWN0aE05eEFrZTV4YlpTSmhTd1J5K2xsSkZHQWpOQzlVekJvblQyaXMvWE1hdFRxVG13OXNaSTR2ZllXQ21odWwzYnR5QVpiSGs3UVhzcmk2NW16ZjVMaEpHUVJQVk54dkVIMll4aTIzZTJoSG50bWtqU0p5YkUwMmNHRTg5V01vNSt4WEM3S3NrZllJVzFTUC91b3cvUFpIU2MrcVV6OVF3dmt5L2MzcVNXMkFsejBxbWYxL0ZaNCtvZ3FscnVqeWVzVHBLZmJ0WnZENkhSVStRZ3JlRFNzN3ZHREJUU1pBNHQ4Uk9YcHhPLzZWV2dFSFExRnB1REVyRDNCSGxEOVg4ZWFrMGxJekcyL2tmQTJZcW1YN25JT3RFRTBjNXlLdXltSDgxQ2k3SzVKV3JidG5qNkpmdjEyL1hRWnMxZzNCNFlKMWVnc1M1RlU3eXBsem0vUmFoaVRIVE9VaVpYYnkyclZQYWxNZUMxcFBYUi95T0FUT1ZUTE56cUtKSFAxZnE5eTk5MFNhMmMyYk9XU1Z0ckk1V1AyZ1JyODVpRnFJWkt4WXVDQWdTNTA2T0p6Y1hzWkNRdWdVem5XUFZNU2dRdHpTS2wyYlFhRHQ2N0Z3d0VBVE9vU3NYcXhNb0tMbkN1K1UrVTcvMUloVlB6b2p5Y3Exd1lScU4zZzVmSlFrR2dzUzUweE9waDBxNXFCNTUwRlRuUm1WUDJwRHl4eHIrM0JRS3ZSMTJMaGlZZnVjaWtBZG5KRkdQbEhQV1BubklWT2VHSlUvaW9QeDBGWGQyOHZqVllMOER3RXc5UWVMY21pVHEwWExPWnJaejhHcHhBL0tUbGR5WjJMbmdJWGljZTZ3YzNSNXNybk13VWp2NzVTY3F1RFhZdWVCaDF1YzVjTzVKN0Z4UUVTUnpDS2puakxzMXpaMURESXVlK0FINWQzaHNEU3FDeExuVDlIbHJaSS9KZHdpUFNKNlVRZlJsNjFxWXQyTG5nb1FnY1c1MUF2WExFaTZzVys0VnpIU09rRDFadzhxTEx2NzgxUEhyYzc3dmpwa1dnc1M1aytPcHpVWGN0azZwaXpmemV3aEc4UlM3MVgvV0N4dlNHZnc5UkxBUUpNNmg3MXNMMkMvYXhUWlRkMFFYVlU4dHJiN2JMRjZWeGFCbHcrQWN2cEZwMmdrQzU5RFBGVTYwaDZ2cDk1V29uckZPWHR2YU1YNWZpWEh6SEU1MTAwdVFPSGUwZnYvY0d3RzRmdzVLdXRnKytVSDljWkhlNVY3WXVlbGxtcDBEOU55ejFJYnVFLzVybmZuM0NVdmFXT0dvK3FKTHVDaU5XWUx2RXc0R2dzUzVCVmJ5N0dUcW1XbytaMFFCUzh5TlZsYjdiN3QwUndGN0F0cE5rckJFNEZRM3JVeS9jOUQ5K3Jxdkh5U1FENWR4Q1FPeTZRdXEzYkluWTFoK3ljWEQ3QlV0aVFEbmNGVTNqUVNKYzhEeVdQTE9RamE4UitvVFRWN2ZLbXNlbUVsRTlraVBsSE5uSmRPTDRVMVJ0ak4ydmhuM3o4RDN3REFCWXZxZEE2Q3pJNG1sZHJSUitpZHRZaU9yU3FidUlReXZKV3Jvb3NuL090RGV1ZWNtVS9CZWh1aGU1d3dtek1QeUJaVGdjVzYrbGJ3MGcvNUhnMUJNS0d3QU5uV2xGVThscVg3VklUMVp5VjJkelp5ZVNCM25wR0R1TXQ4NGdDZzk1M2t4VXVDQm1maWZUV0pDL2UvS3hIbGk0TnV3d1VuUU9PZUdrZzZtRVU5Vjh2RUQ4b2pwOHdnOTJ6R0twNUhSNGdia3Q1ckZ4OHI1Vy9QWWk5T1kwNUI4NUpFT1lxRU5QU01BN2Y1bmRKNWYxODRJWm9SMndlTWNOTm1xT09ybmhlelhIVktucWF1L2ZBUG1KME9TVmtHcTlqNzV3eGJwTHk3aHNRcHVjeEhhdy9XSDJjeWxHY3lGYWN3NUtkU2FaR3AxSXRwNTg4UjRhbVVjZFh3Y0NWNGVxN1BDREtCNEJZN1JXYVp6dEFOeGxBN2EwMVBmMWhQdGhtbER1MkV1QVd6RVlodXh5RVlzdEtKblBTNndFcENoNThYczZ5U1p5TVRCYVdGUU9BZm9qUVhOZldVbTgzcURBSU5nNExaTWh4Zm1WTStnNEdsaXRCSzNtaklvdy9RQ3h0ejNXOFF0RGNMTHRjSnoxZnlURmR5dnl6Z28vdTR1OXU0dC9KTjg5c2Q1N0MxNTdNMjVpSnR5MFNiRDM1c2JjNW5yZ1J6bTJoenZIcjlYWnpFL3pHS3V5cVN2ektRM1p0S1haOUpRYVZ5YVRsK1NSbCtVUnE5UG95OUlvODVQcGM1Tm9kWW1VMmNsVVdja1VhY21VajlJb0ZicCs5R0N3V0RxSWp1eTBPdlp4SGlObmRzMzBDNVJjUHFTMEpTL3JlREFBMGJ4dm5WQUE4eUcybkZJUlB2ejE5Rm9BL1hjRVRWMVNISDJ5OUc5VWxpM3RMMEw2YWh2b0M1OTFDcDkyQ3A5MEFKMlN1KzFpSWZDdS9yKzVmOXBFdDlxRXYvZEtMN1pLUDZyVWR6U0tNTDU5czhHNGRVRzRlLzF3aXQxd2w5ckJjakVMN3FFUDdtRUYycjRQMWJ6ejFieHY2K0NVNEovdklML1RUbjNFSndZcGR6ZFJkd2RhTHR0OXBwc1prTTZ5dE0vU0VRV0xyYVIzcTBMZ2txK0lISXVHbDJsZzFIbXAvbG9vV3NucnltQkdtRDNFU0NmcUtIOTFFblpNeXFCaFo1K1Fldmh0UzVlYTljZkY5SENhSkFYb1J4czBLay9OT3BvaEl0QzFGQmF0VTRWcFZVU1NnV2hsQk5LR2FHVUVrcUpXeWwySzRXalNzR29raitxNUkwcTJTTks1ckNTUHFUQWlaRTBLRVB0NjBDbmh3eW5COVFrSDdXQ3RlTHoxZndEcGR5Tk9jeTZWQnBTSUxxNVlVSTd2MmFmRm9MRk9RQzBpMFJseW9aMCt0VTZBVnA1YWxKZFVJWEhnOUQwbjhZdmNESVlEK1VCWlAzRUVBQVZ5Z04waHNCa25GVFFTVElnb05PalNYL1dCUmdaM2kxREtuMjJtcit6a0lVeCt1UjRWQlJPNXJ6cFRYaEI1QndBSlVnMGNVb0Myb2d1dkZ2cU1YVk4vNndQYUN4Wjg0Q0lvR0EzcjlWU1dzYVFzcXRMZ2hQNDNtS1lvZE13ZDBFN3hFL01MWHhiZmlvSk91ZGdKbUdIbVFUOWozb2VCcGZBelNSQ0lYalYweWQ0aWtiVkhaMFNsSU13QVZxVGhIYUw5eWE4NmRJdXVKelRNLzk4OU4wcmRYOEpDMlVLMUZXbWZpVVJpa0hMSGloSlljRDlvRVY4cUpTN01JMyt4cTJFVTI5ZWNEbG5OQUY2dENGNVJRYjlXcjBBRlRSajlsZitvUmxnWGkydFFzVUMwOTRyTXBubHNSUWFadzN6Zkx0Z0NnZ3U1d3dpaVRsUmFJWEVQVVhzMWs2cFBRRFBKd25OZ1BJWUd0UGVwL3k1UnJncWEvd2hHVk9mN1lMUk9iMGhJTlZka0VvL1U4VW5EOGltNzJvZHNnRVQ0VjdCa3pRZ3YrUVMvaStMV2VhWWp0b3VHSjNUVHp0b2k2Tmp5ZXR5bVA4MGlaV2t5dUhaaEVrQjdUZ2dhSEg5OG5NMS9JWjArb2lKMnM2dkZ3SkhNRHBub0xmQzZnVHFubUx1cXc2cGtkYXdkV1lGVE1zNk9jM2FoM1p5T1RlRldtREZlYzVBUC9rV1c4bHpVdWpIS2ppWXcvYUpIbHpabVJXeU50YkthWEF5Lzd5UVBTbWVtZy9hVGRrSUc3ek82U01zTk1UaGRuSkRCdjE4alpBMHFQU0wrTXFKYWNHcmFNSDVsZ2J4Mm16RysrU01xUmxoZzljNUFKelRyeEl2aXlXaDRIMjVUa2dkVW9ZRGNHdGR5TWF3NUVrWVVINWZ5YTlOcGhmRTZOcE5RYW9MYXVjQVBkWEJmR0tGazd3MmgzbTFuczhZa29mTXZYVTloRVB4akRXejJ1ZHQwby96MkJWT2ZSdWhLZEF1MkowRGpJWkFUeFFtcjgybS8xYkhKdzhxZllMSDNHV3dJUnVzNnNrWVZwNnQ0dGVsMGd0dHhpTTBBcnlUMEF4d0R0Q2RteHRESE90RXo5dDh5U1hBVkI5bVhwTEphLzVETWVETWJXUzBUOXFrbitheng4VlJxS2tqc1hQQWVLcURVeEFHMlNzeUdEZ3Z3N3NsRjZYU2dYaHVmNGlGVy9MQTBQRk1GYjgyaGRhMzE4RE9HVUJiNk9aQnRqdktUcTVQb3g0dVpUOXJFNHRHMVNGOERlWFFBb2FMT2twN3IxbThKcHRkWXF6Q05GcmJyd3ZNWXNZNFo2QnJCeWZpWWh0eFpoSjFSeUh6ejNyQjJxdTRLQTNNd3pjRGZNL3dqSTJJbnVoZStkNWlibVU4TmM4UURqczNDYlNGZm12blFpdHhZang1UlNielNCbi9RWXNFb3dOTXdRZ1p6eTIrVDRqYVdJNyt4RkdZU1N3TzlFNUNNODg1d0RnTDBSRGdYbW9uejBxaWI4MWpuNjBXUG0wVDQvcVZja0p0NTdSaEVkMHhpelBmUVFhMFV5MnQvcWRKdkM0bjhOZUhaNlJ6Z09FYzBnNFNIbHAyZW00S2ZXTXU4NXN5RGtiYnJSMVM0b0JTU3FndHJEWWdlQ2pGSTZqb1doUzZySWN0M0U5MDg5ck9MdW0rWXZSVkdHcll3TTBrWnFwekV4am1SYUdseFVjNXlETVNxZi9MWkRZWHNrOVg4YTgxaUorMlNXSGRzck5mVGg5QzY2WktDYVdLVkdvcHRIeXJsVVByQzZHaGV3V3RYL0FNaUo1QjBRUFpjVVJDNndsZ0tnZkRORURxVURxMHZ1YkZGK2I3QWprWTRGUUVyNkkxTlRDNlNScGFaYVBxUzIrbVB1Q0RKdzBxMEc1bko5UG9CaWZzM0g2WlNIaEFORnJnRHVhdGlpUFBTcVkyWkREWDViSjNGSEFQbEhKUFZQRFAxL0N2MUFsYkdvUzNtOFFQVzhVdjJ0SGlQRGl6OS9SSVVEN2IrdVRZZmptaFgwNGFrRk1HMFdLK3pHRWxXeWQzV01rZlVZR0NVVVNoRzFIMGZTa20xQkpDaFJ4Y1JxaFFCbFFTYWhXcHVpZ1ZocllHR2lWbU9CTjZlRzFRMU55eXhxcWVLYnNXeENwamNHRC9iQkEyWk5DQi9jcC94anZueTRSOGVudk5zNks5bmxiRVVpZkhVekRKUFQrTnVqU0R2aXFMdmo2SHVUV1B1YTJBdmF1UXZhOFlHZm5yTXU3UmN2Q1MrMTBsOTB3VjkxdzEvM3cxLzJjWC82S0xmOG5Gdit6aVg2a1YvZ2JVSVY2dG4rUWYzeDNvVkdqcjF4dUVmelVJYnpRS2J6WUtieldKN3pTamhkWWZ0WXFmdDB0ZnRrdmJPNldJSHNuV0R4TWpHZEl6Sk9aZVhvUHNHTkQ4QjFrVzB2L0hiUktVZEl2dDJMbURaQ0xub2QwNjBBWW82RitpMFNVOXlIK0xiY1FSZHJRbkNOVElVUDhkNzBUcDhLUUV0UDNDNmtUcXRFUnFUUklGMlhGdE1uVk9DblZlQ3JVdUZlM1ZjRUVxZFdFcXRUNk51UWhJUjF5c2M4bjNCYkl2Y0drR2Mxa0djM2ttc3pHVGdhazMxQU0vekdaK2xNUGNrTXZjbk12OEpKKzVFODZIRWhiT0JFalBVTnBIOXNnbGJuVkExQUkzSzlKdklkWjJkY3UzRjdETFlCcGhOR1lndEp0Vnp2bWhDK2UxOENBeC9zUkFmeEVvRXlleEl1WWVHcEI5QVJpOGZJRlRZcUdOV0dRbmxqcUl3eDFRSGhETG5TVDB5cW1KMVBrcDlIWFp6RU9sM0w4YVJTaE1teGd0Y0xkTVEvM3E2SmNmS0dGUGpBdmtQZXV6MlRsZ1FpQmZzU0lOak0yTERwS0p2eklWMytQeEhoNmtad04wMlBOajBGMnJ5Mk9SZkpBSVllamYwU1hWMFNvWG1IUUhVeGtvWktIR09DT0o4dDdhQlBnMTZhRXp5NTM3Zmt5WU9sMTQvZE1aMXhGcTAzVXAxTU5sM0s0dXFZVlJBekczVUxTeGdsSGxoUnIwcUNwdzNYc0FmbzF6NkdEbmdvdDl5Z2Zhb2QyUGlTVldZbDBLRGJPYytINFphanZWN05zSTRlWEtTUlhtU1plbE0xRDdZdWRDRzhPL0NIU24valZaekw4YUE3WGF2SVpTWVRaOXRiNE1FVHNYOG9CMmU1QUVxeE9vQjBxNFBkMVNyNm5QNHpPaWdVWTNtTnlZTTc3aUdsS3MzMkVjT3RpNW1ZUmUyeDJsUDZkcVM2TlFUWnI4ekNDSUZrYjd0Rlg4U1I1ekF2UTRkZzZESkloQ2sxbVlWejVaeWNFYzAvVHJKaDJjOW1XN2RHY0JjMkxnN2huR3pzMGtqS291R2kwTjJWekU2by8xTnZuNUxkMjh0cjFUdXFlSVBUbHczL1JqNTJZWStuaTMxRTdlbE10ODBTNjFzS3BzNnV5MVY5REN1dVZmbG5DbkpJdzdCNkw3SGNNaGdwMmJZWUFCa1dpejc2c3ltYmVieENwUzVVMGRYdnNFTGFKSGZyQ1VnNWtLZGc2amc1eHp6NDBoTnFUUi82Z1RDa2NWMnRRckp2MmlGdFVyUDFUR25XbzRGNEdkdytqT3pZa2hMa2lsWDNJSldjTUtZZW8zRWxBZ1J2ZktENWR4cHlWaTV6QUd1blB3ODl3VTZybHFQblZRSGpWMWM3NUo1NUwwWmYzWU9jeUVjMnVUcVdlcStDVDBiRFJUeDFaaGZHdzFuTVAxSEdiQ2c3T1RxZDlYOG9uOThyRFp6a1gyeUwrQ09RU01yZGc1RE1Md0lJWlltMEk5WGNVbm1wM25ZTjY2cDF0K0FGOHJ3VXd5N2h6VWMzK281bFBNcnVkNmVXMVhsM3hmTWZjRDdCekdpKzRjekZ2UFQ2UC83Qkl5eko2M2RuSGF0azVwYzFFZ1Z4eGk1MllZdW5Oelk0aUwwK2xYNm9TOFVjWGNYWUxhV2UyLzdkTHRoZXhLL0gwcnhndHlqcGh2SlRkbU1XODBpZVdreWZlcE56UGFSNjNpcmZuTWNkRGp5TG05RHVEUXdjN05NSFRuRnRuSmEzT1pqMXZGQmthVlRMMmZxWTdXM200U3I4dGxsdVA3NXpBSUVBNDgwRGRZaHVGdlo1ZlV3MnRtS3VjWnF5TFYxeHVFSzdPWXlXZUMrUjNEb1lPZG0wbm96czJKSms1T0lCOHFZK01IWk5MVVlnNzBMWEdyZjNFSkY2Y3hTd08zT3hOMmJpYWhTN0RZUmw2WUNwTld2dEN0S0tZT3JKSytJOWd6VmZ3NXlmUkNZL3NJN0Z4SW8xZHlJQUZVOTV2eTJFOWF4V2JXNVAyVWFXVXNjVkQ1VFJtL09vR2FQejZPK3gvR29ZT2RteGtZQmtTZ2ZURE9UYUdmcnVKZ1lEWDNVUm1RTUlkRVQxU3Z2TG1ZQTYzbkdNTEIrL29keWFHRG5RdGVvTDhOb084aHcrbVBHRDNPU2QxUndQNjNYV3lnTmNIVWdWWDFqTFZ6MnBjZDBpMzU3T1NENTdCem9ZVmhteUZjQlBwbG1RTTlEK2pWZWlGdkJOMnFhZTVLQ0RDNG1sTGZiaGJoTFE2ejZXOGFDT0dBb0hOdTRzekdHRVFUODZLSnhWWmlaVHgxVFRZRFU0ZUVBYmxQTUg5bEsweUJzMGVVbDF6QytXbjBISmhBaElwemhtMlJ2cHZUekFvaTlzTDNQMDM4RHZpb0JpeXdvdjNMVG9vbkwwcWpmMTdFUWljbERzamR2Q2Ficnh4NnFLdTFWMzZrWEw5YkUvb0NuUFB0R2hNSkt1Zm1XZ25JNm92c3hCSTdPYXV3VGJMVXJ1TWdEM2VRVURZZDZTQ1BpaVdYeFpMTDQ4aGo0OGdUNHFrVDQ5RitlR3VTcUhOVHFFdlM2UjlsTS9jVXN5KzRlS2kwQ3R6S0lOcW14TnNwNWtZTG8zM1dKdjIwZ0QwdVR0OThMaFNjZzN4K3BJTTRKWkc2SUkyK0xKTytRdWZ5V2NIR0RNUVZtY3lWT3NZT2h6QlFYbWRzY3BqSGJNcG5iaTlrN3lwaWYxSEMvYXFVZTd5Q2Y3b0s3Zks1cFVINHFGVU03NUV5aDVWR1ZpTUR0dU1oZUZ4R3FIK3ZFeTdQWUE1M0dLT05md2VaUnJBNHAyL0Zla29pV3JiNVJDWDNjaDF2N0lRS3JUQUxlRlVIYmV4YWp6WjJCWlBlYUJUKzNTUzgweXkrM3lwKzNDcCszaVpDR3R2WkpVWDB5TFplT1dGQXlSaFdpa1lWRjRXZU96QWtlVGdWYVJHNFFGZm1CcFJIeXZqVEUrbkRBbmMxMkNBb25OUExPS2hkTGt5ajRmemUxUzFCTVZ2c1JoU09LZ1V6bjBLM1VvUlFpOTNlRGF6TENiV0NSTHRYMTR6dlh0M01hcUJYRjYvQi9HQklSRnUyYzZwSG1aS0hoa0wyaFBmOXVsUGFsTThlSFJ2SUhUWU5nc1U1Zlowd3pOTC8zU1JDa29jNWxLVHZYUStJc3d2alE4RWt3QUQ2MndEU21LWURsazJGYUQ1Qkt4NDRKVjZ0Rnk3Sm9OR3orUU1xSEJCVXprR0pBK1ZMQ3h1QVdSbU8vVWN2V3JzdlFSMEp4YlF4NXZoM2tMa0VsWE0vekdMZWF4SHJhRlUyOVFvN2pnTUVETi9scEFJbDV0Vlp6TkdCdTMvSmw2Qnk3cW9zQnNwcUtISE0zWU1EeC80Q1dubEUwcXg5S01tdFRxQVdRRjlnNTNBRU5GZ1ZrcHo2WnFOd1ZSYTlkT0k1SklCZkI1a0xkaTZVbzVOREt3dTlPMy9wdllDZHd4SEFJR1V0WTBoNW9VYTRKSjA1UEhDN3BPOE5kaTQwUTFEUlhTUXdZN3N4bHpuV1NhTEg4QnNEcTEvWEJBTHNYQWlHb25tYUdHMTdsM1IvQ1hkcUlqVXZadnpaYUg3OUVpQ3djNkVXaWdkdEdoelZJLysyZ2o4dmxkWWZZYWc3NTljcGdRTTdGMUtoalkzMThKNjRmdm01YW41REJzeFY5VnRJRFB3NkpYQmc1MEluSk0zVHlXdU9maG5tRFZkazBnRjgwczJCd2M2RlNJamFXQXVyUnZkS3oxYnpHek9aWmJIajh3YnNISGJPOUlBQ3ppMTVLZ2gxVzZmMFpBVjNTVG85K1IwWHREemcxeDJCQmpzM3UwUFcwSVhmdENIbFAwM2lQY1hzdWxUcUNJZTN3YWZCTmdQczNLd01hRDlHOGNEOHRNU3Q3dXFTLytRU2JzcGxUa21nRnRxbUw3MU5nSjJiZlNHb3lMWml0eHJlSmIxYUw5eFR6RjJjVGg4WFI4NkhwcDRZVW4zYmY0b0pLdWV1em1JK2FFSDdXMmxUY24vczdBZzRQU1VOZlZ0UHlKNWVRYXVuMVp3UlpYZVhCRDM2UUFtM01aTmVGVStpOUFhTkRMYjV0ZnkwRUZUT1haUEZmTmdpTmpFbWI4TXgrMExUOTdPQjBYTlU4dlR3V2lPamxSQnE4cUM4dTF0NnUxbDRyb2JmWE1SZW1jbWNsa2dkNmREdk5aOVl4ZWpYOHROQ1VEbTNNWU41clY2QTA3UlAwTnl5QnhpV1pqVWlZa2huVUdkQVFQVHA5QXJnazZlTDk4QWtvSjNUV2xtdGlVVnB6RVdwNVNSYVpwRStKRHY3NWJCdTZkTTJjVXVqOEV3MWYyOHhlMDAydlRhRlBzNEpwZHY0OWQ1cEgwejlDQXJuQVAyeHBPZWtVTDh1NHo1b0ZhTjY1ZGgraEsxdk5tUHRSY1QweXRHOWNsUVBJcUpiMnRNdFFicmExU1h0NkpTMmRrcGZkVWovYlJjL2F4TS9haEhmYXhGaCt2bDZnL2hLSGY5OERmOVVKZmRRR1hkWEVYdHpIbnRsRm5OZUtnMnpoR1d4cEhmaEZzeE1qZlJtbU9mWDROTklzRGdYVGN5TEllQTRMczlrN2l4aUh5N2pIaTFIZ0lLekdQaVlCcURPcjBxNUIwdTUrMHZZWDVhd2tLN3VMbUx2S21SL1ZzRGVWc0QrSkorOUpZKzlNWWU5TnB1OUtwTzVMSU5abjBhdlRhWmg2RnlWUUVIWEhPNUFGZHRjdlJtOUJLRnFFd1NMY3pIRW5CaGlzWjA0Tm80OEpaRTZJNGs2TXhteEptazJBeC9UNEhRZ2tRS0hUazFFaS9naFhmMGdnVHBKWDlPL01vNkM3am5PU2E3UWwvc2Y1U0FQdDVPTGJHaFlnQmJ6Nm1Xa05DL0JONWo2RVR6T0dVQTdBbkRLaGhUR3AwWkVmd052cnRvbklKYUIzNzhEZTdWcWNCRmN6a0Y3b2JOV1AxLzk5cElKYWZSTU5pSFpCRE5GTWorQ0xjOU50aVBtd1BpMTJ3d2k2SnpEekhxd2M1aXBCanVIbVdxd2M1aXA1cUNkbzdCekdITXduSXVuWG1zUXZYcjVoSTl6c2FRbFpjd1N5L3YvUFFielhRSG5VaURQRWE4ZjJMa1ZEcmNsMllPZHc1Z0FqSlpKbmxYTzBTMzF2RmN2bjVoMGJxVjFBT25wNEN4V3ltSWwvVjhGZ3prWXdCendKNVlEN1ZZN0J0K3NwYjE2K2NTa2M2ZEZkVmlpUmkwMkJnRi81dmRhR016QllLTXNOdHBpcHkyUkkydXRuZS9XakhyMThvbEo1eTdhVXpkL1J6djZNMGgxOEdlK0w0VEJIQ1JnbTRPMVJMc1AyOUcyTWFyK2krcCtyMTQrTWVuY3JlRWx5NzUyellrYXRzUkpGanZqLzFvWXpNSGdZQ3h4NHB5SXdSVmYxOXdSV1JwUjFlSFZ5eWNtbmZ0dFpPN1oyOG9XUnZSYjRpV2tLaTdwTU44VmNBYk1pUk1YaGZlZXQ3WDBtWmk4dE9wbXIxNCtNZW5jTy9GNU40YVZIQlBXZ1pJYy9DVWFYckYybUlNR2hBTm5kSE5XN0c3OWNWalJSNG41cnBaMnIxNCtNZW1jczZEeXQ3YVNzM2JYelEvdjlRcUxaeEtZZzhjUUxvWmNzTHZuM04ydVp4d2x5U1ZWUThNalhyMThZdEs1dXRhT0Q5UExidzByV2JHdHpoSXhhSW1YMFdRQ3B6ck1RVUdpSzd0UWxZWDNINyt0OXJidzRpK3lLcHM3dWlSSjh1cmxFNVBPRVNTWlZsNzdKMnZ1SlR0S2w0UjN3NmlNWGdWZnE4TjhLMkFJZU9JVUxISEM0V0VkRzNlVy9OV2VtMU5WVDlQN3VEZ0hNZW1jcXFvZG5WMlJPYVdQeGhTdURhczlMS0lQWlVzbm1LZGZPc0htWWZiR3FPSDBLOEFXRzdWd1Q4KzZzSnFuYklYMi9QS2VubDdQZnBiTlR6b0hJUWhDUTJ2N2w1bGw5MFlVbkxhamVrRjRIN3B1Z2k2ZFFHR0lhenZNWG9BVjRBWVk0aFFYaHZldTJWNzVZRlRCOXV5eWxvNHVVZHpITjYxR2ZNTTVDSlpsS3hwYVBrMHB1aSt5Y08zdXVxWGgzWE1qaDFIbWhOb09RUEpCemdQL2NOb0xTWXhoMUpndUdFcFlxWGxSdzRlSGRhMExxMzB3c3ZETGpPS2E1alpJWGw2ZjloWCt6a0ZRRkZYWjJQcFZadm1qMFlVYmRwUWV2N054YmxndnVvQUNGU0lZRFcrRGg5cVFCUTJtREJwTWpRSFF4c3piM2IxeVI4UEduYVZQV2d1M1o1ZTdXdG9aaHZHYXRKL1loM01RSE1jMXRMUkg1NWE5YU0vYnRLZjA3TEM2NVdIdGg0WDNXdllNV3FMZDNuZUZJUnlxUFV3SUllZ1pod0VINWtRTXdtQzZmSGZiT2J0cmI5c0RrNFk4cU9HYTJ6c1BuT0dNMkxkekVEQWVkM1YzcDFmV2ZaeFo4WlNqNU9hdzRyVmJTNWQvN1pxN3RRWGRDZ0JIa0R5Rzd2SEVoQTdRNDlEdmtjUHp0N1VjdTlWMTNyYXlXOE9LbjNhVWZKWlprVlZWMzlQVHM4OHJJM3ZIZnAyRDBEU05KTW42MXZiNG9vcjNFd3VlaXM3N2FVVFpaVkVOWjF1N1RuRU1ybks2VDNBU0oraHIwREd6SFFyNkducDh0V053cmJWelkxVDk3UkdsVDhma2Y1aVVuMVJjMmRUZUNmVVkyT0wxNXR2aVFNNFpJY3Z5NE9CZ2RWTnJTblZ6V0dYNzU5VUQ3N3JjYjlZeFcrcjUxNEFHOUNod3pPeW5ub2NlLzNjZDgyN042QmZWL1h1cTJ0TnFtbDNOclVORFE0cWllRjA1dVBoMjUzRGdNRGV3Y3ppbU5zYkcvaCs5UDcrS2ZLTytSZ0FBQUFCSlJVNUVya0pnZ2c9PSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzEiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImNyZWRCbG9iIiwibWluUGluTGVuZ3RoIiwiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiNWVhZmY3NWFkZDQzNDUxZmFmOWY4N2M5ZWVhZTI5M2UiLCJvcHRpb25zIjp7InJrIjp0cnVlLCJjbGllbnRQaW4iOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJlcCI6ZmFsc2UsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6dHJ1ZSwiYWx3YXlzVXYiOmZhbHNlfSwibWF4TXNnU2l6ZSI6ODk2LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxLDJdLCJ0cmFuc3BvcnRzIjpbInVzYiIsIm5mYyJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XSwiZm9yY2VQSU5DaGFuZ2UiOmZhbHNlLCJtaW5QSU5MZW5ndGgiOjYsImZpcm13YXJlVmVyc2lvbiI6MSwibWF4Q3JlZEJsb2JMZW5ndGgiOjMyLCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6OCwidXZNb2RhbGl0eSI6MjA0OSwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjMwMH19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI2LTAzLTIwIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiU3dpc3NiaXQgaVNoaWVsZCBLZXkgMiBGSVBTIEVudGVycHJpc2UiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI2MDMyMDAwMiIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUHJvZmlsZXMiOlsiZW50ZXJwcmlzZSJdLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTAyLTI3IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiU3dpc3NiaXQgaVNoaWVsZCBLZXkgMiBGSVBTIEVudGVycHJpc2UiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI1MDIyNzAwMiIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTAyLTI3IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjF9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjYtMDMtMjAifSx7ImFhZ3VpZCI6ImI0MTUwOTRjLTQ5ZDMtNGM4Yi1iM2ZlLTdkMGFkMjhhNmJjNCIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiYjQxNTA5NGMtNDlkMy00YzhiLWIzZmUtN2QwYWQyOGE2YmM0IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlpUUGFzcyBTbWFydEF1dGgifSwiZGVzY3JpcHRpb24iOiJaVFBhc3MgU21hcnRBdXRoIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIxLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH0seyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNWakNDQWZ1Z0F3SUJBZ0lKQU5hU3JGZFVMcnZITUFvR0NDcUdTTTQ5QkFNQ01JR0ZNUXN3Q1FZRFZRUUdFd0pWVXpFUk1BOEdBMVVFQ0F3SVZtbHlaMmx1YVdFeEVEQU9CZ05WQkFjTUIwRnphR0oxY200eER6QU5CZ05WQkFvTUJscFVVR0Z6Y3pFaU1DQUdBMVVFQ3d3WlFYVjBhR1Z1ZEdsallYUnZjaUJCZEhSbGMzUmhkR2x2YmpFY01Cb0dBMVVFQXd3VFdsUlFZWE56SUVaSlJFOGdVbTl2ZENCRFFUQWdGdzB5TkRBNU1UQXhNVFF3TVRWYUdBOHlNRFUwTURrd016RXhOREF4TlZvd2dZVXhDekFKQmdOVkJBWVRBbFZUTVJFd0R3WURWUVFJREFoV2FYSm5hVzVwWVRFUU1BNEdBMVVFQnd3SFFYTm9ZblZ5YmpFUE1BMEdBMVVFQ2d3R1dsUlFZWE56TVNJd0lBWURWUVFMREJsQmRYUm9aVzUwYVdOaGRHOXlJRUYwZEdWemRHRjBhVzl1TVJ3d0dnWURWUVFEREJOYVZGQmhjM01nUmtsRVR5QlNiMjkwSUVOQk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRWNUZ3BDZHdKTWFmdEVNQ09WaDE1UEVXSmpVRGtPVkVzdmkrYkVJUkhESGdHNTVseXd4MlJERFZsNFRnbzdSRWNHZStaR01Wc2ZUZjBVWm9GUWRrV1dLTlFNRTR3SFFZRFZSME9CQllFRkpSdUdNV0hLWXN5WmVPYk5CYWk5V2NJZjBIQk1COEdBMVVkSXdRWU1CYUFGSlJ1R01XSEtZc3laZU9iTkJhaTlXY0lmMEhCTUF3R0ExVWRFd1FGTUFNQkFmOHdDZ1lJS29aSXpqMEVBd0lEU1FBd1JnSWhBT2xkNXQ4NmJjZVVrUGNsV25VbXB6OUlJTS9UQU1DR1hBbENlSkx2Y0JRTkFpRUE0NGRJK0FTZWQxL0hTZWRrK0xYbVFKVUw2aW9FSnJ2ZzVUS0N2R2Y1RThBPSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUJBQUFBQUgwQ0FZQUFBQ2pKbDhyQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUpOZEpSRUZVZU5yczNmOVJIRW1XQU9DY2pmMy84R0JLRmd4bndaUXNXR1RCRmhZSVdVRExBalFXd0ZxQTFnSjZMSUN4Z0Y0THhGa3dSNjJLRVNBQjNVMVgxY3ZNNzR2SW1MdUlPMUZkK2FQeXZjektTZ2tBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFNcjFrMXNBRkc3L3R1eTVEY1c1dWkwM2JrTzI5dFFmYTJpR3d2WnVodkVTY3hxK1dnMUZBbURFZ2J2VHpzall6NVZNUHRwQTEvTDJ0aXgzK085ZEJQdDlqUE1nN3llNC94bmFqc2x1L1BIbTlMYThjU3U0MXliYWU4OWNRYzQ0N2hLbnZ3Ly84MVh0Z1ZCUWQzMmdMNzhPZldIZmJkbTVtM3Q5NEc3K3NLemhoNCtkQUdpSHlUZUFCQUJUK2p4TWNqK2I0SVp6MXljUGI4dVoyMUdsUHBnNXVDMy9FTmpNYmpVOGMrL0dTenR6cHJjMzlJZGZoN0d4Y1V0bWRUWDBpWC9Ya2hBWUl3SHdwNklveWdabDE4SDZoWHRhZmJtOExVY21WZUhtQmRkdVIzVkIvOGxRNzhhbHVPVThmZDI5YXdmRytMcmhmbXQzY2N1WDlIWEhXcXU1U2dBb2lpSUJvT1JaTG9hVkZ1Ynh1RDkyYmtuUjlvWTZ2alQyWkJ2NFNKenVWalBjMXkvYVdIYmxlbGhNa0J5VEFGQVVSUUpBeWZSQkx2aWNmMDVnRjBDNWdmOUNrRk5VNHRRSzZPdkh2MU50cVpqazJDTG5STURmOUVjQUt0UU1rekdKZ09rY1AxRVA3bjk1Z2YvMVVOOVd5c29KWGk4a0FyWisxcHdQOTg1WVY4NDRkenlNYzFrbkFzWWNNR1NLRkVXeEEwREpZWVhMWVdUenpBZSttRUFWNFNCNXY3K1djcXJQcmhVa25tZ3IxZXdJeUNxNVl3Y0FBSHdOVUMrSENadUo3ZTRkdnpCUlBuS0xzdFdrcnl1YzU4bjc0clhvMHJmM29mbHhNdXpTL2FsRy93enJrMkxaTENSSUFBREFOMGZEeE0xdWdOMXAwOHM3ZTk0bmlaZWNBeDBIYTlZWjlKd01RWSsrK3pBUWxBeXI5MW1YUmVKSEFnQUFIbXFTMVp0ZE9sNXo0dXgrNXhub0NQNEVQZGZKMlFEN3czT2oweVNxRno0eEpnRUFBRTgveEwzcit2cmdZTjNBd0M2QVBEVEpnV1k4dERlMGlVV2x2NzhiZm4raktYRHYyUmQyTjZFRUFBQzhQTEVUbUc3bmVJUC9XN3NBNHR0UFhwSGgrZjUrV3Rsdmxpam1LVTBLbWl5VkFBQUFRYzhZMnJUNXRtQzdBT0k2U0pKaHZLd2J4c3NhMmtrZitFdGE4cHk3MTZWQ0pRRWtBQURnWlUzeXFjQnRKc2ZiVEpaTXFHTUdkZDczWjEzN3FmeGtVYmlnRHUxRkFnQUFkdXN1a3k4SVdpOWdiTGI4LzdVTElGNWRucm9OU0FJSS9pbWozVWdBQUlCSjdhNGR2K0wvMXk2QU9GckJQOFpMd1Q5bHRSOEpBQURZZkZKNzRqWThxWi9jTksvOE4rd0NpTkhPejkwR2R0Q09Ta2tpblFqK0tTRUpJQUVBQU5zRnVaSUFQM2E4ZzMvRExvQjUzWDNXVFJLR1hUZ29ZTHpzakVuc1VOOGZaanRUU0FJQUFMWnpsS3dHL1dpUzNPem8zN0lMWUQ0Ty9NTjQrWTFkWCt6YXJFbFdDUUFBMk42c1dmeUFqbmY0YisyWmRNOWlrVGIvZkNPVU9sNzI0NUNFR0dPMkxRa0FBTWpzQWU3TEFGOTFhWGVyLzJQK216eXREL3lQM1FaR0hpOXpjbW9NWXVReGQvSlhTeVFBQU9CMTlnVk4vM1djMmI5TC9zRVplWTZYaTB5dTlXQW9NS2JKZDhaSUFBREE2L1VaL0xiaTM5K2w4VmJKeHZ5MytlYllmV2JDdGhiOVZRQUpNYVkwYVZ1VEFBQ0FEQi9nQVNmME9mLzd0ZXVETVNlY1k3eDhPT1o0dFlzaXgyQUpBQURZalNibHM3VjFsN28wL3NyeEZIK2paZzViWkk2QXB3czhsa3VJTWJYSmtrNFNBQUN3TzdWOXVtN0trL3J0QWhoSC80NXo2ell3ZzVPZzQ2V3QvOHoxUEowazhTUUJBQUFaUHNDRE9KcHdBdDhsdXdER0NzTEFlUGxWbXlURW1NOGtaN0ZJQUFEQWJ0V3lDMkJ2K0sxVFQ0N1luUzVKcW1DOE5NYVFhbXFERWdBQXNQdkF1SVpkQUZPdS9ndFl4L0ZQdDRBQTQyV1VUKzMxWTB1clNwalp3ZGpQVmdrQUFOaTk5NFgvdnIwWmY2TVZ1dDNZRit3UXhMSHJnQWZQMTFFWEVTUUFBR0NjQjNoWDhPK2JZL1gvVG45ZkcwM3MxZDY3QlFUUjkrYzJ3Smg5b0NvSVl0VGRXUklBQUNEQTJuU2lQUGR2YzNDZFlBY0J6eTZOdnUwYU50Q01PVWIvZmVTTFg5MldqK293V3plMzVhcVEzM0l4ODkvdjcrTUhUV3J0ZTFXU2ZoejhsMnJkcVYvVDErM0wwU2RyKzhORGZGWFkvVDhLY08vdlBsMjMxQjJLRDNhV3czUGgvMVRieG42NU53NUYxdzN6cEp1Wi9uNHU1MkdzaHY3d2grWmQ5UHloOTQvYjhsbVZ3ZmIrbkxsY3FJTFpYS2o3b29PWTB3RDkrN2xTMm1HQS9hVHBTNUI3cTI5dDd6eDR2emxOZGlqc1VwOEFXTnlXNitEMTNzMDRya1crTDlkRC9UV2FjbFh6aHkrcUNTUUFrQURnNmNuYlNkQUgrR1ZoOTNvUjdQNjJtbitXejhUbkFuOUJ6cmk2UUVtOHgrVjh4bnNTTlFBODBtUkhUNDVGVGdSSWhJSUVBQklBUEtQZjFoZHhoYXVVOTBvanJmN3JYOXM3Q0Jyb1NPWk0yNWZQa3hYUE94SHZ4WGx5SnNHVTJxQ0pNZWZkZ0FRQUVnQ3NNYkc5VExhMWptR1JZcTZRQ0J3M0UyMjN6S1ZBWnpaSCt2Ti9SUXY4QkgzbUQ2WHVJZ1FKQUNRQXFPSWhmbHJJUFkyNmJWZ2Z5MnRNRlB6SDBnWHJ6NHVKZi85K2tqQW1kaEpnNTJPa3p3QUNVSnIrRk9tM0tjN3ArL3NGM05PVHdJRmFtK3dDMlBSK1JiQWErdW1OS3BuVjJXMzVGT2g2ZnFsNGZENGJDdVlQbzdaUkNRQUFTbjJJSDBvQTdFU1Q0cTlLSFd2eVdRWC92WGVDL3pENnorOHRLeDB2ZndueXU2OENQYlBNSDc2T1Q4V08yeElBQUpTcW45Q2VDYnlxQ0s3YlpCZkFPcG9nMS9GeENIaUk0N0RTTnJydi92TURWOE00RmNIT2sxUVNBQUNVTE1vRHZNbjAvdlhYM1dWeXJYWUI1TkVPKzlXMVQ2b2luRldxTTJFYUlRRndsaVRFSXZxVVl1eFMydm00TFFFQWdFbXRCRUFKUVhXYjdBSjRTWVR0enI4bFcvK2ppcEl3M1N2MGIwVy83engwTTR4WGMzTUdBQUJzRVhETTdlY003MXVUOGp1UjJpNkErTUhPbVdvSWEzVmJQcGNZOE16OGQ1NnpUTEVPbktPQzhVb0NBSURTOVZzcjUxNXhiREs4YnprRzAyM3lHYTNJQ1lBcndVNTQvOVlmM0cvK3Nrb3hYczlvSlFBQVlETkx0MkFqVGNhQnRGMEFUOXZYRDhtZ2puNTJ2d21rdUNTTkJBQUFOZmpETGFnbWlHNlNYUUQ2SWR0YUJlbkRVNGl3QThEaGYvRVZWMGNTQUFEVXdDc0FkUVhRZGdFSUx0bmVzcExmdWE4L2tNSDhRUUlBQUxZd2R3WS9wd1JBQ2NGemY3ODd6UjRJVEFLQVdmemRMUUFBQ2d5YyswVEdtU3FGbmV0WFJNZE1xdG9XVDI1V2FkeUV6azUzSVVnQUFGQ0RkdWEvdjh6a1BwMFdWT2ROK3ByTWtBU0F6YngxQytEQjgvdW5rbjZRVndBQXFNSC91QVV2YXRQOGlaSmRjeFlBOEpTNWR4cnNxd0lrQUFCZ3ZPQ1crb0xsSmprTFFEK0VINXY3Y0xjOVZZQUVBTDNGYmZremVEbFJUVUJHK2ttV2xaYVhBN05TZ3pPN0FMNVp6ZnozZjFZRjhOM1lDeElBbFE4QzBTY3EvWGFwRDZvS3lNaEJnR3Y0WFpBOG15YlpCUkFsQVhDZ0N1Q0JmN2dGU0FEVXE1K2duQWUveG42cmxJTmhnTnhZQVg1ZW04cGZoZElHWXRpVEJDQ1FaWUJyMEIrUUFLajRnWGllNHI4TDlDN04vNzRVd0NhNjlEWEJhcUpaZDNEY3Q0RWozU0hFVHBSL3FnWjRNRFpKQWlBQlVLSCtuZnJvNzZkK1NQbDh4Z3FndHhjb3VGMEZ2VWR0cXVjZDFPUGswSzBJU2Z5RDVMMW40b2d3dDMydkdwQUFxRXVYNHIrYitQbTJmRkpWUUdiNjVHb1RKT2lLbWdDb2FXdDhIL3pYdmd2Z1NydURCeUtNemEyeENlclJyL3BIUC9IL01wV3hZakwzZmJ6UTNHZHpvZTZyZEJSb0hJM2FCdG9NbmtHN0xsK1NYUUJSNm1KaG1NS3o0c0hZNUdzMVRNSU9nUG5zWlJBWTlLdFdoOGw3LzBCZXVoVHJjNlZSdndCUTR5cXNYUUN4ZGdGMGhpdjBoNy9HcHRNa1FRbEZtM3RWY3AxUzBvUFpDcUMrcHU3cmNCSndMRzBEM3FjMjFiZjZieGZBVjZmQjZxSTFiRkg1SExIRW5iZEFCaFBVeCtXa3NIc3VBU0FCb083THRqOU1uQ0lHbS9wRnZMS291SzkweVlJRFJCNFBMNVBYQWNDRGQ0YUJwelFTQUI3czZyNU1kOXNtbzQ2bjU1NURkZ0VFN0ROUis0cVZUK1p3RkhTTWNqQWdGR0IvNk5BbVJSSUFTQUR3K3ZGMGNWdXVrMWVwTmhYOW50a0ZNTDdMRkhjT3NwQUlZR0pOaXIwb2Q2Q0syS1dmM0lMSjNCMzZGMzFMejlzVTQ1dW9ZeVFBNXJRYzdpM3pKQURhR2YvKzZyYjhTelhzeFA4TVkraCtKZ0ZDZjREcW14VHJJTlUrSVhHcUtZV3RuNm4wSzR2UlgvVTdTMThQMEZ5bXVKL1JwQnpYS2Nablk1K2JTL1NmNWY1M29mTjBKQUNLMUc5dGk1N0IrM0JiUGhWNi95VUFKQUJnamdEbTBDUTN0SStwenAwQXpkQVdjdEtmMXU2clJFL2ZtLzhiN3MvVkVDeXUzSmFONUpBVXUrK3Vydm14M3grTkc4WVBaaGxVb20rRkxIMUZ5Q3NBZFNjQWJIZFduUDd2M1g5bkFUeDBydjZMTHhkRFVOdEovSzJWRk5ObXloL3ZMNGFrYjV1OGFzU0kyZ3c2UkEyZkhKRUFrQUJRbE5vUFUvWHV2N01BN2p0UTk5V1Y2MkhCeHp2bGttTEt0L2w1djFEcnF3dnNOSnVZdzZGL05UUjZDUUFKQUVXcCtmQy9UcDA4VzVwS3gwZEpvYnBYUXlVREhtcTFpK29UWkl0a3R3eXZkSmxCWTY5bDRKY0FrQUJRbENrbkVRSzl2RXF0QnlOS0RDbjNBeDlib28yVnlyZDVlNmM3c0tuVERCcjNTVVgxSVFFZ0FhQW9WdjlqQmR4MkFjeXZEL2krNkxQS283N1pWRHhua0JSVEhpZkhqaVRIS0dYd3FDMGdkYjhsQUJURnUvOXhBb3k5b05kVm95UDlWcEVJZU9CUy9TdnArMWRtRnFiVVBHVS9rMFpjV3laTEFrQUNRRkdjL0I5cnBUM3l0ZFhHdG1mbHVkMml0YzBaVy9XdXBLZDNCSFNtMXR3WGNVWGpSNlhHa3k0bEFDUUFGR1hzY2k2dzIzaVYzUzRBQVkrU3g4TFJVV1Y5d2hjQmxKZm05YjRjUURhQnhsR2xkU01Cb0Y4cVNtMDdxeUp1N1c0ZVhXT1h3VFVLZUJUbDIxeW1sdjdSSk9kaktDK1hoV2wyM1U0eWFLU25GZGVQQklBRWdLTFU5RVdWaUllN1BmVU1zZ3RBbTFIc0JvakkrUmpLdW1mLzJBMVFvWU5NR21mTkoxaEtBRWdBS0VwTlcvOFhBZTlUODhTMWRobGRxL21Nb253YjkvYk1JUlNsK2wzV1ZkclBJR1ArUldaS0FrQUNRRkZHT3hBbzJpUTQ0a3J1UzUrZHRRc2dEcThDS0p1TWY2WFBMNXRrWjR5eStWZHVLRmhmd1RsOEt1UkFWVWtBU0FBb1NqWEoxVVhBKy9UU2hLZ0xXTDlOeFhNYkFZK3lTZi91Q3U4VG5YcFdOaWkxNzdxV0pROVFGcXBKQWtBQ3dBTkpHYVZFblBSR0RON1dmUTdaQlJCSHEzOHJCWXlIdTNTcWpwVUNGZ2g0cFJ3T0JoRjBTZ0FnQWFEVU5kbGRCSndFcmJzU0VuR1ZyZVlKbkFQUUZFbXpoOG5WUzNXc1NBTElqSHN2VlFKQUFrQUNRS212bkFSdDZ6bXYvdCtKdGd1ZzlySGJxcWNpQ2ZCTms3d2VvMGdDVkNtWHpxK3hTUUFnQWFEVU5ibGRCSno0YkpxSTdnTFdlV3NNMWZjVlNZQkJEb2QvSzVJQTdGZ08yMzg2MVNRQmdNbXJVczNLZjBwbHJQNUg3Yk8xajkrMlBpdWxqWmVTQUlva0FHdkxZU3ZjcVdxU0FFQUNRS2t1c2JvSU9Oblo5alcwTm1EOXQ1SUFrZ0NLQlNsSkFPV1Z6OFhHdER3dlhRWU55MmNuSkFDUUFGQjIvOENPL2luVmtsYi9vL1piWTNnK0N5RktyRkx5cDZnbEFSU3htZzR1cXlRQllQSW9BYUFVOXFET1ljdmVJdUR6NkxVVG5EWmdlMmdOcC85MVlteFFOaHdQU3Q3NjNDUzdZeFF4UVhINlNjeDFrbUdWQU5EWkpRQ1UyZzZ4eWlGTDN3UzhkNHRDKzY1eC9Kc3VXZmxVZkpucWZxeGdkNHppakF6QlE1YVRMUWtBRTBkOVdMRmFsVmRDOVRUZy9kdlZSTDhOMkQ1YVErcGYrbFZkSzUvS3V1VmNZa3hSTE43bVlKRkI0eEZZU2dBZ0FhRFV0ZXAvcHdsNEQ0OEs3Ny9HOGp6blNrcVo0MFBVY2RtOFE1azZZYzZPSEdUUWNLNDFIQWtBSkFDVW5mVFBOc08ySFczMS8zcUUzOWdHYkMrdFlmVTcrOFphWmMyQXA2bWtUeHdsdXdFVU8yT3llNURsY09pZjcwbEtBQ0FCb0x3dVlPMHlYbVdxNVpOZmRnSGtvMHQ1bkp1azZEOVRjRGFBNGxXQWpEcHJEdSswZGFwS0FnQUpBR1hyL3BqN0E3ZUcxZjg3YmNBMjFCcGFuNTFITFpMVlQ4VWM5bjdDVmlKQThTcUFTZFdyMzFORkFnQUpBR1d6QjJ4LzZtNEpPNmVhQ2lmMDBmcnhwYUYxTFYyeUkwQVI4RHhPQkVpT0tiNEtFTWhSQmczRXBFTUNBQWtBWmYxVjZYNnlWZHIydXBwVy8rKzB5U3BtemxxQmo1Sjh3ZXJPM2pCKytJcUdjcjgwSGhYVDI1Y3hsUUNRQUpBQVVMSmVVYm9Zc3VoZHdRL1NwdUpBK0x6Q3hFZUpnYytCWklDUzZqb1E4S1V4L2NoY1JVa1Q3dkQrU2IvNzY0R1V3NG42YjIvTFVuVnRuUUNZMDNLb1ArWkpBTFF6L3YzVmJmbVhhaGl0WDZYS3hzWFRGR3ZsdVcvZmJ5YWNLRWNMdWc5dnk1bXV1TFg5WVh6K2RhaGZoeHZYNVd6b1EzeUxSOXFoSC93Ni9OZkNYMTBtaWZVa0FHSUVDT3Y0Y0ZzK3FTb0pBTExyMytvZUFmRHUxSndBcVNrcHNQZG8zUDQ1V1MxK0ttRE1QV255WnVoSFBGL0hqK3Y2VjdmbTJmRWpWNTl2eXp2Vk9MNlRaRXRJTFFrQXJ3RFVtd0JROTVTZ3huZi9mNVFFY1JZQWZCLzA5TzJ3ZjAwbXQxY3JGcXFQRVpJbTdkQzJjanhub1ZHRjQrb3lhQVNYeWZZZkNRQWtBRERCRi9oS2hNRDY4OXRjM2lsM3ZoVmphMUplbnlhMThEdnlaQ3A2US9pU3ZBOG5BWUFFQU1TYnpNOFo5RGFTSWJDV05wTkVnUDdEbE1teEhPSS9TYkVSOURjMWh5MGhCNnBLQWdBSkFFemlQWisrWXhjQXJPOGdlTkRqRTlkTUhRZEdmd1g4U0RYdDNubnlUcFFFZ0NCUUFrRGRvdzNuMnFhYlpCVVROZzE2SXM5LzdYaGxhbTNneEppazJJNGRaUkQ4Q3hna0FKQUFnTHNKU3JSblZCdmszdGdGQU9YTWcwOVVEVE1seHFMdUNtOVVUN2tUcVI5TklMejNJUUdBQkFCRWFMK1IyM09UN0FLQWJYUkI1Nzh3VnhMZ05Ia05vTmpLemVIMFIxdWdKQUNRQUlCZW02eit2eVRpTGdCSmZDUUJ6SUhKVDdUbmlkY0FkaUNIUS84NjFTUUJnQVFBQkdtN09iVGxKdUN6ZktIcElnbWc3NUNkaUs4RE5LcWxuSXlPYno1S0FDQUJBTTlwazlYL2RVVTd6ZGtubkRCSHR1Skp2a21BU0R2R08xV3luUzZENE4rQUp3R0FCQUJFYXJjNXRlT0lyL2d0TkdFeUNuaXVBL1VkeVRQbTFpWUx4Rm5iVC9IZisrK3ZyMUZWRWdCSUFFREF5VWYwMWY4N2kyUVhBSlF3NXJTcWd3Q2k3SXh4T09hR29tVTBEWFFTQUVnQVFBNXROc2MyYkJjQWxCSHc2RGQ0cG94OERzRGZDaC9JbXVEWCtPRzJMUFV4QUFadGlwY1kvcGpCZmJ1NUxiOEZ1NmIzeVM0QThoR2xuLytpS3ZCTWVjRFhNZGEwU1BGWC9zOVYwNlNzb05YTERnQnlFbTNuV2s3dDF5NEFlSjBJdXdCc2VjWXp4WE5rWTIzSzQ5QS9xd0lTQUVnQXdIMWR3T2RWYmlzUGkrUXNBTmpXZnBCK0E1SmlJeTRhbC9ZS1FKUGlyNnozVzBvT2gvOEN3SjNqWU5kemRsdXVNcnVIbjRJOVgvdmcvMGpUSmhOOWYxOEZ1STVXVlJCRWhOY0FkcDVFTGlrQnNEY0UvOUV6N1ljWlRxZ0FHRmVYNHAxYjh6SEQrK2dzQUhpZHoyNEIvQ1ZDVXF5VkFIamFTWXEvVmZHVGdSV0FINGk0K3IvSzlGN2FCUURiKzNlQWEyaFZBNEVzUy90QnBTUUF1cUZFYnp3ZjlDRUFmdkFNYTRKZDA4ZU03NmRkQUNEWWdWMzVJOEExN0hTT1VFSUNvRi8xUHcxK2phdmI4azcvQWVBSHJQN3ZYc1JkQU1lYU9wbndxaXJFNmc4U0FJOGVxRGw4VHU5ZGN1Z2ZBTi9ya3RYL01kd0UvQjFIQWVzYW51by9jL3BGRlNBQk1KN2NFd0RuR1R4TUhmb0h3Rk9zL28vblU4RGZZaGNBT2ZoOTVyL3ZkUmtpS1c0Uk4rY0VRSC9vWHh2OEdzK0dBZ0NQZGNucWYyMi9KMktkQTFDUnYyZDYzUWNwL29tNi9hci9vU1lHd0JPcy9rL3ptNDZEQmQzSE04NFBMbWIrN2Y5S0ZrYUlvN3N0LzV6NUd0NnFCaVFBWHBiRG9YLzlWaEdIL2dIdzNNU3pDWFpOSHd1OTF4K0R6UnU2NFpwV00venRkdWJmL3J1dVR5Qk44c2xCS3BUYkt3Qjd3ME04K3J0QjcxSjVxeWdBN081Wlp2Vy83dC9tTEFBaSs3bVMzeG5oaks1V2MwTUM0SG45ZS8vN3dhL3hRL0lOVlFDZUZ1MDArSWduNXUrYXN3QmkrRlgzejhMY2JYTTE0ZGdIMGZ0RDFRbUFvK0dCR2RsWitucnFNQUQ4U0wvNi96N1lOZjJXeXQrMWRwYnNBa2dCN29IVDNmTXc5MkxiZnlxNjE2M21KZ0VnQWZEMFFIUVMvQnI3YlVRZjlCRUFubkVVTEFqcVY4QnFTVnpiQlRCL0FtRGZFSkJGc0NOUk01MmYzWUx3MmdEWHNLd3RBZEFQUWhmQnI3R2ZRQjBtVzRrQWVQNTVGbkgxdjVabjExbXlDOEJrbWh6cVo2cCt1blMvV1VOeHJ5N2xrQUM0U1BFemtYM3dmNlYvQVBBTXEvL3pxMzBYUUlSVCtQOWhLQkRzQkVrQVJORDNmenRqNHVxZjJXMXAvU0Y2QWlDSFEvLzZ5Y1JuL1FPQUZ5WVJWdi9uZHhZd3VEaXByQTRPREFmcUoxQUM0TW85UjMrSW83c3Rmd1l2Ri9wRk5yU1ZlbDJvZXdKWUJIdCtmVW4xdnVkN0VIQSswVTcwMjl2S2ZpOTV6cjJuZEI3ZzkxNXJldWFRejVTZEo0bWo3Z0RJNGRDL1BodnpUcjhBNEFWVy8yUHBkKzB0ZzEzVFZHY0JyQ3I3dld3bXdqZzE5WXI4SHdGK2M1UHNBb2lvVFRHU2xUdi9La2JFQkVBL1VUcE5zVmNtYm9iZzM2Ri9BTHpFdS8veFJEc0xZS3FKNWlySTNDWEt4SnFIZFJMaHRkdXJ3di9lVTk1cmd1RkVTVlJXY2M1Y2hLMDRMNVZPbjhpT1Z3RHE1UlVBNXRRSC9sK0NQY01XcWlYRTJERFhXSEdSdkViSjk2NkR0SXVqaVg5M0k3N2dpWVJZbEhaUnZLTU1ndjlUZlVJQ3dFVEhKRi9kczZaRjh1Ni9DVjZzZCtNanRVbmJubzFUajhzY3V4Q3VqYzhFYlJPWEhzUXFBUWtBSkFESWg5Vi80MFBFOFNMU2ZFdkFNNy85WU8xaERxZkpRaVBmbkFScUQwVi9KYVlKT0VueWtKSUFFQVNhNEt0N1NwbEUzSjAwN1RrV054aWVjaGVBTHlweGw2UzhEdFFXem1lNkQxMndQdEZwbXJPSjlwV1lvbmRKWGFiNHEvLzcrb1FFZ0FtT0JJQzZaMDFOd09lWVNXWE1NV0tPTVNQYWVVdFdQYzIvNXh5aklvN1g0bzdwOWZjODJvSjBzVTVUL09EL1NKK1FBQkFFbXR5cmV6Sit0dm5POU5QYVZOOHVnQzdnYjVZRU1QOXVKRU1lN0R5V0JLZzcrRDh2OVdaSGZBQjVJRWtBQ0FJbEFOUTlyOUVrcS8vR2lkampSc1EyYXM0MWpiMFU4NHRiYzUrekZmRWdja21BZW9QL1lwL2JVVy8yNDhISSs1SVNBSUpBRTN0MXp5YXMvdWVuVGZYdEFvajYyZVZ6YzY5UkV6OVJYN3M5Q25CdmZINjhQbDNnZUxTNGNURGFvU05QWmQwYS9VSUNRQkFvQWFEdXlYd1NhZktZeDFneDlkalJCWjZEWGFkcERrT3N5VUdLdmZDMlp3eDRjWGVNeE5odVk5SElyNkVYdWYzL1BNWGYrdS9idEJJQWdrQ1RlblhQcHF6KzUycy8xVFVYaWZpWnloOTlBa3ZROC9xazVFWHdlbzRTN0hRcC91S2toTzV1NmpuNjJGZGNITHJJSVBoZjZCc1NBSUpBQ1FCMXp4WVRiYXYvRWpnNUpYQnlPSWo1eXpBdmt3allmRHpLb1g2bit2UmxLVW14dTNtRmhjcnRBdi9yRE9xM3VNVDlRUVkzL1Z6L2tBQVFCRW9BcUhzRWo1STRGU1J4SXY3ZWw3WkJDM3llRDJDN0ZIL0ZQL0k0dGNqczN2WFg2NkRBcC9YMzVpU1R3SCt5OHpCK212aWhHdjFRdlp2YmNqajhsL2tzUjBvQXpQMmIzcXJhMlJJQXJicG5nbWRjdElscy96dzdVelZiSlhLNlFOZXp1aTF2UnZ6M3p6TU5xdnV4OWZmYmNqWE0yMVpEcVNtdzJSdkdubCtHNTF5T2dXQzBjU3JpV0w3dU9OSDNpVCtHUGpIV2ZEcXk5dDUvZnhuNlE1UFpiN2daeHZzaVl0RzlGUGZVVVNWZUdZTWRBSFVuQU5ROVV3U05WdFhLU2ViVXRBdWdOZTlRakZPaHgzT2xucktZb29IL2JhS08xQ1hiVXdBb04yRHNnbDNUUjlXeXRWV0t0M1BpZU1SL2U1bnFXeW5FT0dYOEpKcCsxZjlUU1FrQUI3Y0FVS3JUWU5lelRMYitseFlBTkduY0pOTUhWYzdFVm9ISHFkVlVnUmpjODF1YWFPdi8zOXhyQU5oYW0rSjlyOXpxVlpuQnlaaTdBSzZTcEJIVGlwNTArcGljQ2NhMHo1ekprazRTQUFBUU15amJ4akxaenIzTEFDQ1NKbzIvQzBEQXcxVGoxT2ZnMTNpVEpGT1p6cVRqcndRQUFHeW5UVmIvUzdaS2RlMENFUEF3bGNOTXJyTmZrYjFTWFl4c21TWk9pRWtBQUVDOFlHemJTY1JTdGV4VWJic0FCRHhNMGFkV0dWM3ZvU3BqUkRkenRERUpBQURZWEp1cy90ZGdGZkMrbnFSeEQxYytURjRGWUJ4OWNtbVI0VFViV3huenViMlNBQUNBK0t6KzErTlRzSUM0RC82UEJEeGtacGFWemgxWkpEdGpHT2U1UGN2WEppUUFBR0F6YmJMNlgxdmc4bHV3YTNxZnh0MEYwRTlLUDZ0NmR1aEQ1a0gwdTJSbkRMdDlycnliNjQ5TEFBREFacXorMTZlMlhRQzlmclYycGVyWmdiT1UvMmNtVjhsNUFPek9yQWtsQ1FBQVdGK2JyUDdYcU1aZEFEZkpxaWV2MTYvNmZ5amt0L1M3WWo2cFVsNnBUeVF0NTd3QUNRQUFXTjlwd0FucFVyVk1vc1pkQUZmSnFpZmI2L3ZMMjFSV0VxbFBacHlwV3JaMEZxSDlTQUFBd0hxNjlQVXpiTkVtbzB3WHpOUzJDNkQzV1JJQXdmOTM0NjVEQWNsMkxKVUFBSUQxUkh2My95eDVSM3RxTmU0Q3VHdHJYalZoMCtEL3l1K0Qvd3ExbTBvQ0FBQmUxcVY0cS84Q3Nua20valh1QXVndGtxM1BDSTRsQWRnbStBKzFHMFlDQUFCZVp2V2ZPN1h1QXVnZEpvZWdJU2lXQkNEYjRGOENBQUJlMWlXci96eWM5RWU3LzhjVHR0RVB5WmtBQ0lZbEFYako1eFQwSEF3SkFBQjRPYmlLNUN4Wi9aL2JwNEIxY0R4eEc1UUU0TTVWNVVId1hSTGdURlBnM2hnWjlqT3FFZ0FBOExRdVdmMG5qM3FZdXEzMkU5ei9UV1dlOHM3Nmxza0srRjBTd0NzeTlNTHZrcElBQUlDbldmMG5wN3FZdXIzMlFkOGJ3VisxUHFWeVAvWDNtdUR2blh0U3BidWRJT0dUUUJJQUFQQmpYYkw2VDE3MU1VZWI3U2U5LzV1c2ZOWVc2THdiZ2wyKzkzbm9FeEpqOVZpbXI4blFaUTRYS3dFQUFOL3JUMVkvQ1Joc3JsUk5LR2ZKTG9BN2ZURDRWaHV0SnRENTdGWThhelVrQVNSdHkzWnpiK3pMWnRlSEJBQUFmTzhvVGZOdDlVMG1HVlpZWTdJTDRHRndhRGRBdVlIT1liTGxmMU9MWkRkQXFiSWQ3eVFBQU9DaFB2Qi9IK3lhZmpQcER1c3MyUVh3T0ZEOE1FeU1sNXBITVczOFRYTEsvYmF1aHY3d3dUaGVoUHZKc0ZXT1AwQUNBQUFlc3ZyUHB1d0MrSEhRODNhWUtLODBrU3d0aDhEMVVPQzZFLzA0L3NaNG5uWGcvekVWa0F5VEFBQ0FiNnorczQyelpCZkFjL2ZtalVSQWRvSC8yK1R6Zm1NRmtSK1NIUlc1QnY2TEVwN0hFZ0FBOEkzVmY3WVY3YnZQM1cxcEExM1AvVVNBb0RLbXMzdUIvOUx0R05WcTZBdHZodUJTa2pkbUhSVVYrRSt0djJsL0tzcWFaUXh6LzZZTHc4QnNMdFE5YStvRC95L0J4c09GYWpIZUZEcis3TitXMDRCOXJyWnlQWXd6amU0YkltbDNvVTNPWHM2SHVrQUNRSkVBRUFTYWtLdDd6NnBKeTVjVWF6Y0NMMnNEUGxQYlRBS2ZjOG1BU1lQK2t5RUpReng5TXFiZmpYYXByVTVXTG9kN0xoRW1BYUJJQUFnQ0pRRFVmU1dzL2xQS21KUDdHSFF3QktlQ245MG1FeStHQUVmUW4xOHlvRStRblE2SkcrMTVkMG13MCtIZVZwZG8vN3QrUlNXV00vOTk3enRDYk43OVoxZjZkMGJiUU5mVERtV1p5ZjM3UEpUNzE5OEhyYjhNd2RCK3NqUG1PYXVoOVBPT1A0Yi9tb1BrWFo5bjZkdUJnWGQ5NEhHZjRQa1k0T1pSZjFqVmZFTittdmpoWXpJRVRLMUw4MjdwV2lVbi9Vb0FiTzdxVVJDRTl2VGFDZkN5c0h2OE9CRlFXMkpnOVNpSXVVb09LYXZkL1ZocnI4TEV3UEtGL3gwQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBS2pXL3dzd0FNaXhOZHFSQ1VxZ0FBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsImNyZWRCbG9iIiwibWluUGluTGVuZ3RoIl0sImFhZ3VpZCI6ImI0MTUwOTRjNDlkMzRjOGJiM2ZlN2QwYWQyOGE2YmM0Iiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwiZXAiOmZhbHNlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOnRydWUsImFsd2F5c1V2IjpmYWxzZX0sIm1heE1zZ1NpemUiOjQwOTYsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6MTAsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4LCJ0cmFuc3BvcnRzIjpbIm5mYyIsInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XSwiZm9yY2VQSU5DaGFuZ2UiOmZhbHNlLCJtaW5QSU5MZW5ndGgiOjQsIm1heENyZWRCbG9iTGVuZ3RoIjozMiwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjEsInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjo1MDB9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wMS0xNiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyMSwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJaVFBhc3MgU21hcnRBdXRoIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNTAxMTYwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wMS0xNiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyMX1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wMy0wNiJ9LHsiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbImQwZmRlZjUyN2JiMmM3ZmY3YmIyZWM5MTBjYzgxMTM4OTRmMzk0ZDYiXSwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiZDBmZGVmNTI3YmIyYzdmZjdiYjJlYzkxMGNjODExMzg5NGYzOTRkNiJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiWXViaUtleSBCaW8gU2VyaWVzIC0gTXVsdGktcHJvdG9jb2wgRWRpdGlvbiAoRW50ZXJwcmlzZSBQcm9maWxlIn0sImRlc2NyaXB0aW9uIjoiWXViaUtleSBCaW8gU2VyaWVzIC0gTXVsdGktcHJvdG9jb2wgRWRpdGlvbiAoRW50ZXJwcmlzZSBQcm9maWxlKSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzYsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6Mn1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiLCJyZW1vdGVfaGFuZGxlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRFNEQ0NBakNnQXdJQkFnSVVEcUVSdys0Um5HU2dneGdVZXdKRkVQRFJaM1l3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRREk3WG5IK1p2RHdNQ1FVOE04WmVWNXFzY3VibHZWWWFhUnQzWWJheG45Z29kTHg1c3dIMGxYcmRnamg1aDdGcFZnQ2dZWVg3RTRibDF2YnpVTGVtck1XVDhOM1dNR1VlOFFBSmJCZWlvVjdXL0UraFRaUC8wU0tKVmEzZXdLQm82VUxlTW5mUVpEclZPUkFrOHdUTHEydjVMbGo1dk1qN0p0T290S2E5SjduSFM4a0xtelhYU2FqMFN3RVBoNU9BWlVUTlY0enMxYnZvVEFRUVdyTDQvSjlRdUt0NldDRkU1blVOaVJRY0ViVkY4bWxxSzJieDJ6Nm9rVmx0eURWTEN4WWJwVVRFTHZZMXVzUjNEVEdQVW9JQ2xPbTRjcnB3bkRSTFZIdmpZZVBHQkIvL3BFeXp4QS9nY1NjeGp3YUgxWlV3OWJuU2JIeXVyS3FiVGExS3ZqQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJUcXQwS1FuZ3g3WkhyYlZId0R1bnhPbjlpaFlUQWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQXFRYUNXTXhUR3FWVlg3U2s3a2tKbVV1ZVRTWUt1VTYrS0JCU2d3SVJubHc5SzdIZTFJcHhaMGhkd3BQTmlrS2ptY3lGZ0ZQemhJbXdISmd4eHVUOTBQdzN2WU9kY0pKTmt0RGczNVBYT2Z6U24xNWNGQXgxUk8wbVBUbUliOGRYaUVXT3B6b1h2ZHdYRE00MVphQ0RZTVQ3dzRJUXRNeXZFN3hVQlpxMmJqdEFucS9ORFVBN2JlNEg4SDNpcEMrLytOS2xVcmNVaCtqNDhLNjdXSTB1MW02RmVRdWVCQTduMDZqODI1cnFEcXNhTHM5VGI3S0FIQXc4UG1yV2FOUEcya2pLZXJ4UEVmZWNpdmxGYXdwMlJXWnZ4clZ0bjNUVjJTQnh5Q0pDa1hzTkQwNWRDRXJWSFNKSXMrQmR0VFZOWTlBd3R5UG1ueWIwdjRtU1R6dldkdz09IiwiTUlJRFJ6Q0NBakdnQXdJQkFnSVVleDluVDl2d1pOWFM0ODNMZGlZR2Z3MlNqU293Q3dZSktvWklodmNOQVFFTE1DNHhMREFxQmdOVkJBTU1JMWwxWW1samJ5QkJkSFJsYzNSaGRHbHZiaUJKYm5SbGNtMWxaR2xoZEdVZ1FpQXhNQ0FYRFRJMU1EZ3dNVEF3TURBd01Gb1lEems1T1RreE1qTXhNak0xT1RVNVdqQW5NU1V3SXdZRFZRUUREQnhaZFdKcFkyOGdSa2xFVHlCQmRIUmxjM1JoZEdsdmJpQkNNaUF4TUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUF1MU1ldm55OWR5TzlaVUMzOVNvTWhMY1IvRFhydEYvY2lNMTJ0Y2l5MkVYQVo2TWtyaXZWdENmRVZNOVg2SVNURW5CUDZ1U1lZb3Y2cHB2Nk82SmgyTkhtWW00dytKblM0Vm5DUFU3bUhBTWZWSTJNR1RUTVZPZXcweFVzRzdzSVNJa0lEVUJtdWs4WUs5YzV6aWM5K3ZGUUdMSWtzZFhPNWlWRklnTkc1M2NHWEQ0Wkxab0FQaXUwUEVvenhBcVlJYUk0Z3hLaE9BM1M4L1c4bUlXc3U2b2Z5ajRHdmtGRzZaN2t5RjMxMDdQN213RkhMckkzRU5hUFdNT0ZjVGFHYTBkdysvdlZSd2pSY0VaQlZzdXVULzg3Y2tTczBhNXBrdDN2WkJsYVllVDhwelNyZVY3bW93Y0lNOTBMMmlhQVRsUDBueG1hRTZuT3lUYm9qRlZsMndJREFRQUJvMll3WkRBZEJnTlZIUTRFRmdRVVNYRWgzc2EzYnREdXJtNE1NL0M3UzFsUnV1WXdId1lEVlIwakJCZ3dGb0FVNnJkQ2tKNE1lMlI2MjFSOEE3cDhUcC9Zb1dFd0VnWURWUjBUQVFIL0JBZ3dCZ0VCL3dJQkFEQU9CZ05WSFE4QkFmOEVCQU1DQVlZd0N3WUpLb1pJaHZjTkFRRUxBNElCQVFCNUdjM2hhZnRwN2hLc0Vac28raS9aNW5SdXFkbXpHMldDbFVvUlVxYmFQeWdsbkpEaktSL2tmZ09sNmliYkYvenRobTNLbVhRN0hjRElQMnhNZEc3VTJMMmltYkpRSHFQZi9oMkhxb2piNHJaZ3VlKzZXNGt0U1I1ZWxSOUwxcllxRS9TR1lNNGlFS29WUVN2N1JUMXJ4SWVXaUtzdy9WeHhpL1FPbnN4M0Y3eDgwQ0NZZ0I0RTN5UXg4VlRXNDQwaFRFd1RBMWVNSE9peDMydFB0eXlISWE4UFZWSWZWcEhRSkJhTVZ2djUwOFVFandrYlUycm5qZnpvU1ROUzlBNWpVUThtQlN2ZTk1cmpCMGRvOThFVStEeGRCcVgyK0g2aTV3bElDRmd6aGR6Y3NuZTloR0tUNmx6VFg0Y0lkSnNyWTIreGxlSzBGRlF5NmxHRVZMRWUiLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVIzOG1xMjZTZjJzelZWMkJkRzZXRU43a3VXVXdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFSWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFOWTBXYjlvUG9Sb0tvUXlXUGFKcHoxMXZyV1RnNnpUdG1OajJWb0tSbnl2S0dScXB6YjgzdzVsNllBOTZVWWtZQkRRUDBpbE8yRFBlNndXcVZSNXpEZlJ6ZGNIOGJoK0w3ZEdHdmFlNmhSVFpoa0ZrQ3BYRHM0SGNja25yRGY4RkNsSjdIZTM5SmY0Mi9HMVFtMnp6OVdXbXJQWHRnaUsveDA1R2pzUWZHdURHMXpmNVFUVVVpZThsd3ltSzNUZmRPdk5lZUpBQVBlMnBuN0l0ZlJiK3JWck5XaUR6bFJuMnZObloyd1BvNHdIL1dKNmRoWFpHK3JNV1QrYTZCb2NnMVVmSXc2a2R1bkc0YlRwWnpzdmFjRll5UjBtcGYrRGVPbnBTV0FteXdKV0h2VGxmMllYeEZ5ZVhjVEFDZFFsY01OR0oyVmhaUTQ4eHRQNS9SQlAvOGtDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNoeTQyb2tpcWNUUzFpcWEvSFJXamtCbjRIL01COEdBMVVkSXdRWU1CYUFGT3EzUXBDZURIdGtldHRVZkFPNmZFNmYyS0ZoTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBbitSSElQYnRNRUROZFQxZzhIL1JpdEFrVWRMZ0F0MXRXR1dubGo5a25idjQvNEdsWDdDOXA0NWVmUE85L2FaTDZPVjFYUktCaTZLbXRCVzVLN251WUVuTXgvNUJxQlNiTFQ3cmhkdUM0OVRCZU1iOVBIZFhzVGxTVk5ZZWZyMWRHaWRyNGoweFZCUUxiMXJrbkRBYmRXRHpLZnZuYXlLTzhGcndlN0h4ODQzTUcvckorYzBYcnVVdmJmVlRDSExpSVdoTTdvTkRoTDh4b2I2eFVvOUtMS2NTTCtJdFlzTzMvOVdiOFE5R2pzcUw0RlhzRGNHMVNhWWg3S3BmdU1tT2l4cXpKWk8ybklpY1BZUmcxSTJTdWlVZllPNzB0bWRIY2JsK2tTUW1TWXQ3cnE0dmlJTGcyR3gzajlySVR1V1RqYmFVYVNTUXhnT21NU0h1eXpNQUMiLCJNSUlEUGpDQ0FpYWdBd0lCQWdJVVh6ZWlFREpFT1R0MTRGNW4wbzZaZi9iQndpVXdEUVlKS29aSWh2Y05BUUVOQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU1aNi9UeE04cklUK0Vhb1B2Rzgxb250TU9vLzJtUTJSQndKSFMwUVpjeFZhTlh2bDEyTFVoQlo1TG1pQlNjSVpkMVJueDFvZDU4NWgrL2RoSzdoRW03SkFBTGtLS3RzMWZPNTNLR05MWnVqejVoM3dHbmNyNGh5S0YwRzc0Yi9VM0s5aEU1bUdORDZ6cVljaENSQUhmcllNWVJERjRZTDBYNEQ1bkdkeHZwcEF5Nm5rRW10V21NbndPM2kwVEF1Y3NyYkU0ODVIdkdNNHIwVnBnVmRKcHZnUWppVEpDVElxK0QzNWh3dFQ4UURJdituR3ZwY3lpNXdjSWZDa3p5Q2ltSnVraFl5NktvcU5NS1FFZHBOaVNPdld5RE1UTXQxYndDdkV6cHc5MXUrbXNVdDRyajBlZm5POXMwWk93ZHdNUkRuSDR4Z1VsNVpMd3JyUGtmQzEvMENBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUI4R0ExVWRJd1FZTUJhQUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUU13RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCRFFVQUE0SUJBUUMzSVcvc2dCOXBaOGFwSk5qeHVHb1grRmtJTGtzMHdNTnJkWEwvY29VdnNyaHpzdmw2bWVQTXJiR0pCeUoxWG5xdUI1c2djUkVORnhkUUZtYTNtaW84VXBmMW93TTFacmVYckowbUFERzJCcGxxYkpueGl5WWErUjExcmVJRlRXZUloTU5jWktzRFpyRkF5UHVGakNXU1F2Sm1OV2U5bUZSWUZnTmhYSktrWEliNUgxWGdFRGx3aWVkWVJNN1ZvbEJObGxkNnBSRktsWDh1c3Q2T1RNT2VBRGwyeE5GMG0xTFRoU2RldVh2RHlDMWc5K0lMZnozUzZPSVlnYzNpcm9SY0ZEMzU0ZzdyS2Z1NjdxRkF3OWdDNHlpMHhCVFByWTk1cmg0L0hxYVVZQ0EvTDhsZFJrNkg3WGszNUQrV1ZwbXEyU2gveFQ1SGlGdWhmNHdKYjBiSyIsIk1JSURTRENDQWpDZ0F3SUJBZ0lVVWNtTVh6UklGT2dHVEswVGIzZ0V1Wllaa0JJd0RRWUpLb1pJaHZjTkFRRUxCUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JCSURFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURtNTU1YldZOVdXK3RPWTBySVdIbGRoK2FOYW5vQ1pDRmg3R2szWVpyUW1QVXcwaGtTRzZxWUhRdFArZlp5UzMzVkVydmcrQlFxbm11bWdOaGZ4RnJrd0VaRUxlaWRCY0M4QzRBZzRucXFpUFdwenN2STE3TmN4WWxJbkxOTEZjWlkvK2dPaU42Wk9UaWhPNS92QlpNYmo5cmlhQWNxbGlZbU5HSlBnVGNNR2FFQXlNekVNTnkybm02RXArcGpQNWFGNmdpMjF0L1VRRnN1SjFqMlJqL3luTS9TZFJ0K2VjYWw1T1lvdHhIa0ZiTDl2dnYyQTJPdjVJVFpDbHc0Yk9TOW5weXBRaW1PWjVRQVl5dG1ZYVFwV2wvcE1ZejZ6U2o4UnFrVkRORUpHcU5mVEtBMml2TFl3WDZsU3R0TVBhcGcwSjg0bDlYMHZvVk4vRnBTNFZDVkFnTUJBQUdqWmpCa01CMEdBMVVkRGdRV0JCUWdLRkFoRzZSYVcraFR5NTJkeGVUOGJDOTZIekFmQmdOVkhTTUVHREFXZ0JUUzd1OWFJbzA2YlZ3amx6M3loZFVtOFNWN2tqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQTRHQTFVZER3RUIvd1FFQXdJQmhqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFZTXpnTHJKTElyME9vdlFuQVpyUklHdWFiaUhTVUtTbWJMUldwUmtXZUF0c0NoREVIcFhjSi9iZ0ROS1lXb0hxUTh4UlVqQjRDeWVwWWV2YzNZbHJHOG83ekh4cGZWY2FvTDVTZXVKa3pIeEtuNGJUYVNwOStNdndhbW5wNjRrWk1pTmJGTGtuZlA5a1lLb1JIa01XaGVSSjFVc1AxejRTY21rQ2VJTGZzTXM2dnFvdnFqV0NsRnNKcEJjc2x1WUhXRjdiQkoxbjRSd2crQVRFb3BZNElnR3Y2WnZ3YytBOXIrQVQyaHFwb1NrWW9BbCtBTll3Z3NsT2Y5c0plMFYrVEE5WVkvVWxhQm1QUFRkMC8vcjl3dmNlUFdaa1BqS29BQy96VU5oZkRiaDRMVjhHSHMzbHlYMlhvbUwvTE5jOEpZenlJYURFaEdRdmVvUGhoL3RyMWc9PSIsIk1JSURTakNDQWpLZ0F3SUJBZ0lVVG5iYkdJUjJOSHZ6cUlLRkFlUXdHMVhCaXMwd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JCSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVFZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU9zWGozazA0QmFuNFRZZHRaS3FEL09QSnh5RHlhUG1DQlVGVWlhWklnVHRlWm5qM1gyNURoZ3BaWlhzQzREMHlkSWNybEE2d05VSW5PUkwvTDl6QmJURUlNQVZNR282ZzdVS0FtYjJNRjZBSGJuaFlKZDllaWt1cFZOV1NoSE5ZTmM0R0JkTzFZTjZBZlVxdkpoSGJlM1Y0U05NUG1CUkVLSlBWejdUaHdnbWdnVGU4V3MySzAvd3NxdjJ3U0U3cGJDQnNVWmhJWDUxYlpNM3BxRHdKUFRtUkZFdnQwLzZ0RzVlTzhGM2oxNE9YcWZFaG1qbjFWdnhLRFlRT0xaQXhDd3dnQzBQNENkZld2M3k4UFNSOEkzNTRoTzFZK0d6Tmp2SXFYMzhOS0x5d3VJWUhGZXJPeE5seEVNQnZGaFlCdVJ1WUFra2dVYVBxTjZVQmhzSUxyc0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ0NvUkhoaXlObmJuWFJXSUw2WkJYb0JYOVlUTUI4R0ExVWRJd1FZTUJhQUZDQW9VQ0VicEZwYjZGUExuWjNGNVB4c0wzb2ZNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUNRRmFmSkkxLzVXZzlDRUVpbUUxUlA1NFJnUXdUTlRPT1FzTEFDVGUrckl0bEZRekM5WkRoclY4Mjh5WDdqenkrQUFzcDNpeks3VDF0aDJkbDdtK3R1MHN3MlBhL29sYzAybnQ2UHlJdzM0OGdhSHpoSTErMEtFNDVxeHZGRGVMMmxNeGJQZkNZdnlFRWFZemppUUVMVTU5NTFwWEdXeUtNYS80Zkx0TytaS09YaE11VmVxNHJYRFBJNTRXNkpIT2lBYWlLZGl3KzVlM2Mya3QvakZJUXRNNnZNWGc5TE5GemRqRVROdDIwVlg5UWV2UnBGWmZ1Y01HOXdDYVFEb0ZsUHpwVE1KS2hQZXYvaW1KbVpZaEtmcjBsTGNlbXRxakl4TEFvcVpkT1lmSEJnNit2QWNkUEkvaWF1R3BVQXY3WCtVS05tRHdqWjJCYUg0c0x3aEIybSJdLCJpY29uIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwiaWNvbkRhcmsiOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJwcm92aWRlckxvZ29MaWdodCI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsInByb3ZpZGVyTG9nb0RhcmsiOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0ifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wMi0wMSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzYsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWXViaUtleSBCaW8gU2VyaWVzIC0gTXVsdGktcHJvdG9jb2wgRWRpdGlvbiAoRW50ZXJwcmlzZSBQcm9maWxlKSIsImNlcnRpZmljYXRlTnVtYmVyIjoiVTJGMTAwMDIwMjUwMjAxMDA0IiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDItMDEiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTAyLTA2In0seyJhYWd1aWQiOiI2OTJkYjU0OS03YWU1LTQ0ZDUtYTFlNS1kZDIwYTQ5M2I3MjMiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjY5MmRiNTQ5LTdhZTUtNDRkNS1hMWU1LWRkMjBhNDkzYjcyMyIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJISUQgQ3Jlc2NlbmRvIEtleSJ9LCJkZXNjcmlwdGlvbiI6IkhJRCBDcmVzY2VuZG8gS2V5IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEwLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRENEQ0NBcStnQXdJQkFnSVFRQUZxVU5USFo4a0JOOHUvYkNrK3hEQUtCZ2dxaGtqT1BRUURBakJyTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNoTUtTRWxFSUVkc2IySmhiREVpTUNBR0ExVUVDeE1aUVhWMGFHVnVkR2xqWVhSdmNpQkJkSFJsYzNSaGRHbHZiakVqTUNFR0ExVUVBeE1hUmtsRVR5QkJkSFJsYzNSaGRHbHZiaUJTYjI5MElFTkJJREV3SGhjTk1Ua3dOREkwTVRrek1USXpXaGNOTkRRd05ESTNNVGt6TVRJeldqQm1NUXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ2hNS1NFbEVJRWRzYjJKaGJERWlNQ0FHQTFVRUN4TVpRWFYwYUdWdWRHbGpZWFJ2Y2lCQmRIUmxjM1JoZEdsdmJqRWVNQndHQTFVRUF4TVZSa2xFVHlCQmRIUmxjM1JoZEdsdmJpQkRRU0F5TUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFNG5LOWN0ems2R0VHRk5RQmNybkJCbVdVK2RDbnVIUUFBUnJCMkV5YzhNYnNsamtTRmhadGZ6L1J3NlN1VklEazVWYWtEenJLQkFPSjl2MFJ2Zy80MDZPQ0FUZ3dnZ0UwTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUlHRUJnZ3JCZ0VGQlFjQkFRUjRNSFl3TGdZSUt3WUJCUVVITUFHR0ltaDBkSEE2THk5b2FXUXVabWxrYnk1dlkzTndMbWxrWlc1MGNuVnpkQzVqYjIwd1JBWUlLd1lCQlFVSE1BS0dPR2gwZEhBNkx5OTJZV3hwWkdGMGFXOXVMbWxrWlc1MGNuVnpkQzVqYjIwdmNtOXZkSE12U0VsRVJrbEVUMUp2YjNSallURXVjRGRqTUI4R0ExVWRJd1FZTUJhQUZCMm0zaXdXU1lIdldUSGJKaUhBeUtEcCtDU2pNRWNHQTFVZEh3UkFNRDR3UEtBNm9EaUdObWgwZEhBNkx5OTJZV3hwWkdGMGFXOXVMbWxrWlc1MGNuVnpkQzVqYjIwdlkzSnNMMGhKUkVaSlJFOVNiMjkwWTJFeExtTnliREFkQmdOVkhRNEVGZ1FVRExDYnVMc2xjY2xyT1pJejU3RnUwaW1TTVE4d0NnWUlLb1pJemowRUF3SURSd0F3UkFJZ0RDVzVJcmJqRUkveTM1bFBqeDlhKy9zRjRsUFNvWmRCSGdGZ1RXQys4VklDSUVxczJTUHpVSGdIVmg2NUFqbDFvSVVtaGgwQzJseVIvWmRrN08zdTFUSUsiXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBVk1BQUFDc0NBWUFBQURHK0U4TUFBQUFJR05JVWswQUFIb2xBQUNBZ3dBQStmOEFBSURwQUFCMU1BQUE2bUFBQURxWUFBQVhiNUpmeFVZQUFBQUpjRWhaY3dBQUQyQUFBQTlnQVhwNFJZMEFBQXlnU1VSQlZIaGU3WjEvYkpUbEhjQnZqaGpOY0M0TytkWGVYVnRVVE16aVA3b1lYWlk1MUlrS2QxZk5uRkhqNW9oQm1BN2oyTVJzWm9sbXhoaE5Kb3J0MjRLZ3NpRnNpbTdUQWRNWVJGUUVGVGNWeHcvcndBRUZSQ2hRK3V1ZVBjLzFxUVAzVE5zKzMzdmV1K3ZuazN6UzQyZ2ZudmU5dDU4Kzc3M1hJd0VBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFVRXBrRzYvWFBwbklSUjhnSWg1dDQxcjljWWF0QmZ3UDlRM242eDIwVFp0UDFEY3BSTVRQTmRlVTE0dXVWdDJNcTIxRkJreHRNam1yTHBWcTBSODMxMVpYMzJydkxtTUtQMjMwanFtUDNEc05FZkh6ekVXN0V4Zk9HV21MOG9Xa2s4a2YxcVhTUFhYVnFhWEpVYVBPcUttcU9yTXVtZnByYlRMVm5VcWxMcmVmVmtaTW1QMTEvWk9sdzdsekVCRUhvam1yelVaVGJWMytMM1ZqeDA0d0lSMDlldlRKNDFLcEtkb2JqQ05Iamh3MWR1elk1TGgwamRLcjFMUHRwNWNCSnFTc1JoRlIwdDZnenJTVmNYR01EcW1xU1NZeit2WXdFODZhcXRTMXRkWHA2ODN0dWpGalVqVmprNVAxS3JXOTk5UExnVnpVNWR3WmlJZyttcUJlT3FmT2x1WW8wdW4wY1RxbVhmYVB3OHdLMWQ1TzZGUDh0MnJUNlZ2MHpTK2JzUGJlVytya29vK2NPd0VSVWNKY2RNRFc1aWlxcTZ1UEg1ZXE2VnQxRmxhbU9xSTc2MUkxMjA5SjEvUkY5a3ZsRWRQNmhtODdOeDRSVWRKc3d6MjJPcDlpWXFwWG81MzJqMlpsbWovcHBKTytxajkycDhlTU9kM2VmMHg1eERUWHRNKzU0WWlJa3VhaURsdWRJK2s5aFU4bmp0TzNDekUxZDQ0WU1XS012bjNRM0I0K2V2akorbmJmS3JXRTRYV2tpQmpLeTV2UHN1WDVsTHBVYW1adE1yM2YzSzZ0VHI1VHVGTlRsMHcrV3BOSzNhei9ycU8yT2ozTjNsMmlUSTZtT2pjWUViRVk1cHFldGZVNWlycnExRE8xeWRTQmNWV3BHK3hkaWJxcTVBeXpPdFgzTDdSM2xURDEwWExuQmlNaUZzTmNVK0hVM1VWeVZQSU1IZFdWcDlYV3FWTnJhdlA2OXZLcUVWV24ycjh1Y2Vxai9jNE5Sa1FzaHJtb2pGNHZPaENJS1NLRzFIMFJxZ0lncG9nWVVtS0tpQ2dnTVVWRUZKQ1lJaUlLU0V3UkVRVWtwb2lJQWhKVFJFUUJpU2tpb29ERUZCRlJRR0tLaUNnZ01VVkVGSkNZSWlJS1NFd1JFUVVrcG9pSUFoSlRRUzk3V0NVdWVFQWxMcHdkVnZOdjVpTDNuQWJyOXg1MC8xdkY5aUt0YXo0RE1hN0h3RHorcnZuMHg2eCsvT0tZZHpFMDIzR1JQbjdNTVhTcDNpZVRHOTNiWEdrU1V6bHZudnV5aW92anJwem5uTk9nMUFmL3VzMjc3TWhoMmZuSm9kNXZRTmU4K3FQK0pvNkxhZEVxOTV6NjRkZXVYV0JIcVF3NnUzdFVXM3VuMnJ4am4xcTlZYWRhc25xenVxbjVaWFh5TlF0VTR1S0hWQ0pUZ1lFbHBuS2FiNmE0cUpTWWZyVG5RTm5HOUlhSFgzTFBxUitlcUNNelZOaXovN0JhOGRaV2RlVjl6NnZFQkwyS3JaU3dFbE01aWFrL3hIUm8wZG5WbzU1ZDk2RWFmK01pdjZkSlNrRmlLaWN4OVllWURsM2VidG1qenB1MTFPL3hqMU5pS2ljeDlZZVl3aHRiZHFsVHB1cVZxcmtvNTloWEpTc3hsWk9ZK2tOTXd6UHJzVFhxenNWdnFMdVd2S0V5ZHk5VHVYdVdxMTh1ZkwxdzM3MUwxNnNWNjdjVkxpYUZwQ2VmVjQrKytFK1Z1R0MyYzMrVnBNUlVUbUxxRHpFTlQyTENiL1Vxc0ZFbE1nMy9uWk81S0ZTNFR6dEpQeDZYemxGVlV4YXFLWE5XcW8vYkR0dXZMRDY3MjlyVk4zNjZ4SVRxcVAxVmtoSlRPWW1wUDhRMFBJWFhoanJtNUZSSDdaakpEZXFPMzYrMVgxMTh1bnQ2MUMyUHJOYkg1Ukd4TDBXSnFaekUxQjlpR3A0QnhiUlBIYlpKZHkrekk0UmgvZ3Z2RjFiSXp2bVVnc1JVVG1McUR6RU56NkJpYXN3MHFoL3IwLzZRUFBucUIzN0hSekVscG5JU1UzK0lhWGdHSFZOak5sSi8vM0NQSFNrTVQ3L1dVcHBCSmFaeUVsTi9pR2w0dkdLcUhmK1R4WGFrY1B6eEZiMUNMYlhuVUltcG5NVFVIMklhSHQrWW1xaTl0MjJ2SFMwY1AxdndxbnMrY1VsTTVTU20vaERUOEhqSE5CZXA4MjUvMm80V2pudytyOFpQWCt5ZVV4d1NVem1KcVQvRU5EemVNZFYrNWFwSDdHaGgyWGV3UTJUK0loSlRPWW1wUDhRMFBDSXhtbVJPOVQreEk0YmxtVFV0aGRXeGMxNGhKYVp5RWxOL2lHbDRSR0thamRRdDgxNnhJNFpuK0ZXQ3gvOWdKYVp5RWxOL2lHbDRwRTZUejV5eHhJNFludmMvMnR2NzY2K09lUVdUbU1wSlRQMGhwdUdSaXVubzZ4KzNJOGJEaU9zZWRjNHJtTVJVVG1McUR6RU5qMVJNaDEzUmJFZU1CM1BNeHZyY0tUR1ZrNWo2UTB6REl4VlRjeEdxcTd2YmpocWVydTRldVcwWmpNUlVUbUxxRHpFTmoxaUE5SEd6ZGxPckhUVWVicDBmNHd2NWlhbWN4TlFmWWhvZXNaaG1HdFhDbFJ2dHFQR3diYmMrZnVKNmgzNWlLaWN4OVllWWhrY3NwanBpdHoyMnhvNGFEKzBkWFNveE1hYTM2U09tY2hKVGY0aHBlQ1JqR3VkclRmdUk3YW8rTVpVenpwaCs1MWQvVXVmT2VsckViLzc4S2JVaGhqZXVNQkRUOElqRk5LYmYwZjhzdHoyK3hqMi9Za3RNNVl3enBwVUNNUTJQV0V5MTU5eTIxSTRhSDZ2ZTNlNmNXOUVscG5JU1UzK0lhWGdxTGFaYjQ3b0lSVXpsSktiK0VOUHdWRnBNdCs4OTJQdS9xanJtVjFTSnFaekUxQjlpR3A1S2krbXVmZTBxbG5maEo2WnlFbE4vaUdsNEtpMm1oZmM0dmN6akdCcXN4RlJPWXVvUE1RMVB4WjNtZjh4cHZpekV0Q3docHVHcHRKanUySHVJbUlwQ1RNc1NZaHFlU292cEJ6djNtN0E1NTFkVWlhbWNjY2JVdk1IRTYwS3UyYmhUSFdqdnNpT0hoWmlHcDlKaXVtVDFadWZjaWk0eGxUUE9tQjVyZmhLYko5MGx2UGdoOWZyR2VONzloNWlHUnl5bUpmSWJVUFgzTEhmUHI5Z1NVem5qakNtL20yOGxwZ05HTEtZbDhydjVzWnppRzRtcG5NVFVIMklhSHNtWVRvLzV1c0grUTUyOVoxZXUrUlZiWWlvbk1mV0htSVpITEthWlJyWG9wVTEyMUhoWTM3S2JsYWs0eEhUd0V0TkJRVXdiMVlyMTIreW84WEQyektYdXVZV1FtTXBKVFAwaHB1RVJpK25rQnRYNnlTRTdhbmphMnZVcC9pVXh2VEcwa1pqS1NVejlJYWJoa1h6T05FNmVXTFhKUGE5UUVsTTVpYWsveERROFVqRTk4WnI1ZHNUdzlQVGs0M25idlNNbHBuSVNVMytJYVhpa1lucnE5Q2ZzaU9INXk3cC9tWmc1NXhWTVlpb25NZldIbUlaSEpLWTZaSmZjK1p3ZE1TeUhPN3YxTVJQamM2VjlFbE01aWFrL3hEUThJakhOTktvbHE3ZllFY015clhHVmUwNmhKYVp5RWxOL2lHbDRSR0lhMDhXblRkdjN4ZmNpL2M5S1RPVWtwdjRRMC9CSXhIVDh0RVYydEhDMGQralRlMzJzdXVZVGk4UlVUbUxxRHpFTmozZE05U24rM09jMzJOSENZSzdlbnpYelNmZDg0cEtZeWtsTS9TR200ZkdONmZBZnpMTWpoV1BHdkplZGM0bFZZaW9uTWZXSG1JYkhLNmFURzlUY3Y0VmRsZDYrY0kwSmwzcytjVXBNNVNTbS9oRFQ4QXc2cHRsSW5YL0huKzBvWWJpcGVWVTgveVZKZnlTbWNoSlRmNGhwZUFZVjAweURPdmYyWit3SXhhZTdKNjkrTlB2RjBseVI5a2xNNVNTbS9oRFQ4UFE3cGlaaytyVGVIR3YzUHJYZWZuWHhPZGplcWNaTlhlU2VVeWxKVE9Va3B2NFEwL0Frdm5WLzc3c3RmZGFKRDZsaFZ6U3JFNitlcjA2L2FiSEszTDFjL1NId0MvT1h2Ym0xTUEvWFBpczVpYW1jeE5RZllncUdnNGM3MVZYM1AxOVlDYnYyVjBsS1RPVWtwdjRRMDZGTlIxZTNlbmpadXlyeDNRZWMrNm1rSmFaeUVsTi9pT25RcEwyelN6V3QyTkI3U2wvS0Y1aytUMklxSnpIMWg1Z09IZkw1dkhxN1pZK2FNbWVsU2x5Z1Y2TGxHdEUraWFtY3hOUWZZbHJaZk54MldLMTZiNGU2MGJ6VFU3WlJKU1o1UE5hbEpqR1ZjOUp2bHFubGIyNHRYSUVNNmNwMy9xMk8vZjVjNTV3R1phWlJQZmpzUDV6L1ZySDkzY3FOK2h2TTQ2TER4RG5xcFhlM084Y3VwaXZlMnFZdXVlczU5NXo2NFFsWHoxZTc5N2VybHRhMml2RE5MYnZWMmsydGhYM3o2eWZXcW9sM1BxZE9NRC93TDlhbjhmcUh0V3NmbEwzRUZMRUVOS2U0NXVWSVpsVmU3cHJ0TUZmaHkrbEt2SVRFRkJGUlFHS0tpQ2dnTVVWRUZKQ1lJaUlLU0V3UkVRVWtwb2lJQWhKVFJFUUJpU2tpb29ERUZCRlJRR0tLaUNnZ01VVkVGSkNZSWlJS1NFd1JFUVVrcG9pSUFoSlRSRVFCS3phbXVhalZ1Y0dJaU1YeG9LMVBoWkZ0YUhKc0xDSmljY3hGdTJ4OUtvd3Jtc2M3TnhnUnNSaG1vbC9ZK2xRZzVqa00xMFlqSWtxYWkvSzJPaFZLcnVrRjU0WWpJa3FhaTNiWTZsUXd1YWpidWZHSWlCTG10T2ZjZDd3dFRnV1RpNlk3ZHdBaW9vUzVhSm10elJDZ1Buck51Uk1RRVgzTVJxMjJNa09JYk9ORzU4NUFSQnlNdWFZS2ZTbFVmOGhGaS9RT3lPdVZxbnZuSUNKK2tlYktmWDNUV2x1VklVdzJPazJ2VWx1SktpSU8yRnkwTjVGdHVzN1dCQXFZcU5aSDYvVEhmVHFzblluNlpyMnpFQkdQMEt4Q3MxR2Jic1NXUktaaGdxMEhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQnBrVWo4QjRBb20rTWJUKzNKQUFBQUFFbEZUa1N1UW1DQyIsInN1cHBvcnRlZEV4dGVuc2lvbnMiOlt7ImlkIjoiaG1hYy1zZWNyZXQiLCJmYWlsX2lmX3Vua25vd24iOmZhbHNlfV0sImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIl0sImV4dGVuc2lvbnMiOlsiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiNjkyZGI1NDk3YWU1NDRkNWExZTVkZDIwYTQ5M2I3MjMiLCJvcHRpb25zIjp7InJrIjp0cnVlLCJjbGllbnRQaW4iOnRydWV9LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxXX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDE5LTEwLTA4IiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJISUQgQ3Jlc2NlbmRvIEtleSIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMTkwODIxMDAyIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjMuNiIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4zIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDE5LTEwLTA4In1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAxOS0xMC0wOCJ9LHsiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjk5NjI5ZTk5MmU2ZDhmM2IwMWFiMTdiNDAxYzEyMTgzYTc4MzZkNzkiXSwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiOTk2MjllOTkyZTZkOGYzYjAxYWIxN2I0MDFjMTIxODNhNzgzNmQ3OSJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiU2VjdXJpdHkgS2V5IE5GQyBieSBZdWJpY28gLSBFbnRlcnByaXNlIEVkaXRpb24ifSwiZGVzY3JpcHRpb24iOiJTZWN1cml0eSBLZXkgTkZDIGJ5IFl1YmljbyAtIEVudGVycHJpc2UgRWRpdGlvbiAoRW50ZXJwcmlzZSBQcm9maWxlKSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzMsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6Mn1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiLCJyZW1vdGVfaGFuZGxlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlETXpDQ0FodWdBd0lCQWdJVVNPRWpUZi8veXFSZlBXN1FxOHF0SXlDckFnOHdEUVlKS29aSWh2Y05BUUVMQlFBd0x6RXRNQ3NHQTFVRUF3d2tXWFZpYVdOdklFWkpSRThnVW05dmRDQkRRU0JUWlhKcFlXd2dORFV3TWpBek5UVTJNQ0FYRFRJME1EVXdNVEF3TURBd01Gb1lEekl3TmpBd05ETXdNREF3TURBd1dqQXZNUzB3S3dZRFZRUUREQ1JaZFdKcFkyOGdSa2xFVHlCU2IyOTBJRU5CSUZObGNtbGhiQ0EwTlRBeU1ETTFOVFl3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRQ2R2bDI3dzJndTFmUFhlRUZiSWRxeDBCYWx2VkRWV3JRUEo3SHF2aXVFdFpIbHhTTHhTRnRjWHBUb2x2THZvZjhmNHRNZXJRVGtWR3pjbVl6bTFFQlQ0SUp1TW1vRXFma0VFaFdwc0FETUZyalprcWxaWTlFcXhRekxvVkVFb25FNW9HeFNkVkN4Q2NMSWFja3B5Ui9DQ1h2ajFCdC9oVGdFOWhUbEY0cFJxeE1reDNwbEY3eThkRFpsUkhXczd2Ym5obUJDR2VJMFpQRVE2bmwybUNnMnI3NGFkRjJ1Nks5cnJMZmhCQzNRTEU4RVByZ3FVc0kraGt1cTJ0SzRNMlNNT3A4dVVWVmtxVWV1M2gwa3IzV1ZJMFcwMnBrZ3JPZ2lGS0xGTmtTcmJZaGRqTUJEajVpem1xZmM5eEpSS29EWDYxMnFkOFpHVkhwVDVBWUZYKzFoQWdNQkFBR2pSVEJETUIwR0ExVWREZ1FXQkJUWnlVNURpUS9hMlVFZ0U3cUJLMHpoSXNSTlJqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUFNQTRHQTFVZER3RUIvd1FFQXdJQkJqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFYdm5CNFNMdVVKZllNU1ZHQWhzc0wvU21XbGkzRlNjY2d4eWR2S2xBQ2NpZElJV0tRcWEzcS9RU1VFUXpDOURnRWZNZ3I3aUMxQmtUWmJJTGJvVjZVWjVrbk5zdmpFWld1TWVvZ0o4dGdaczFoVnZLd1ppendKK21FY21zamhJckJZdW9MMVQ2eXJPSnZLRmcxanYrQ3k0WndBOUJway9WM1VPaXIxVnlLOGRDdHlIdTZ2Zm9zb3RBZFl4OEZBdVIyNDNnUlRNVjZKeDhKZGlnMkpESUFRTWx6VmVEcFNVSFgvSzJIWFJIeEh3ZmdqYmdVampCdS83MnI4T2ZlaHloekhYSTNLOENGRmRmbE8rOG5FT0pLM3k4RjFpdmdTNXVOLzhTbWNZdy9TVFFZd2hyeFB1d3ozblA4YmFNdW00QkIybm5ZbXBCNjBzWDNibDVrOFFVU3c9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFmQ0FZQUFBQ0dWcytNQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUhZWUFBQjJHQVYyaUU0RUFBQWJOU1VSQlZGaEhwVmQ3VE5WMUZELzNkNTl3ZVFTSWdTOUFRQVhjRkxBUVppOWZwZVZ6MXRZL1dUWnI1V3hwYzdXNWtuTGE1akkzWjg1c3JTMm5NMnNqdFd3WlM3SVVINEg0eENuRVF4NERBWkY3NFY3dXM4ODV2OS9sSW5CdlZKL0I0UHY5bnUvNW51LzVudk01NTZmekEvUXYwSGIvSXJYM1ZGS1BvNDVjbm00aW5VSVdZd0xGUm1aUVV1d2pGRy9OMWlSSGgxRVowTlJWUnVkcXQxQmQrMm5TS3lTL09oeXMwK2xrM2UvM2tROXF2RDRaVXRhNFZWU1V1WTBlaXB5aVRoQWZvY29PUlZnRHV1dzNxS1JpQWQzcmJjRXRqVGpZSW9mNldhSHNDbXpWUFdDTXgrY2doOHRMcVdNS2FNV3NVakxxbzJSdEpJUTBvT3ptZXJwUXU0ZXNaZ3NPTmtHeEg3ZDBrZHZUVDE3czRPTVU3Vkk4WmhqZ0dhTStBcTlpRU51OFBpZjF1ZHowN013dktXZjhHbFZvQ0VZMDRQQzVXZFRhWFlGYlI4dk52TDUrM0tnZmI1eE5NeWE5UmFtSml5bmFNbEdUVnRGbHI2YmE5dStwcW5FWDR1TXVSUmdqU1lFaHJON3V0RkZlNmxxYWw3TmZrdzVpbUFHSHluUHBiazhWbVkweHN0bnB0bEZDVkNZdHpUdUJOODNRcE1MalR0ZXZkUHpTVW5KN2U4bWtqeFozOWZYYktEZmxkWnFidlUrVFVnR25CVkY2ZlEyaVBIZzRXMTZVV1V3dnpiazE2c01aRStQbjBwdno3SlNldUF5ZXM4bGNwQ21hS3VvL3ArcVdyMlVjd0lBSFdydlAwWUV6aFhBdExBYnNzSGhwN2lHYW12eWlqUDhyeXFyWFVXWDlYb293eHlBdWZOQnJwNDNQT0JGWFpsa2Y4TURSaXFjcHlvd0F3cHV6MngrZld2ei9EdGRlOXNtc3p5Z3RjUjZDMXdiZHpCbDZPbHE1V05ZWTRvR2F0aEpNcmtURXgwakFSU0hBVnMrNXJZa1FOWGIrUWdmUExzUTZnWHlJbnNyZVFmbXBtN1JWRllmTDg2bjFmaVVPa1l2U2hrVVB4dmJ1a3pveTZLMWloTTFobzNYelc2RXZTZlhBK2RwaVdHYVdkK2RvWHpMem1Hd0tZRkxDQXNSQWxQQkFoTWxDRlhVN3RCVVZQcjhIZ1ZjSkhXcStGMDBwbHIrRE1UZHJQNHp2eFkxMWtOTWh4VCtTZVRHZytkNFY1TFFKaXR5VUdKTkI4VkZac2pnWUJaTS9JSS9YQ1RrajBxeURPcEYyQVZRMTdDSWpVcC9EblQxVWtMNUY1Z2RqK3NTMXdnMWdFM2dpZ202MGZDWHpTblBYYnlBUGJJWHYrSURwRTE2VGhhSElTOXNreWhsbU1FNUYzY2ZxQUtocTJDMEU1UEgxZ1lhWGFMUERrWkcwSERKT25LV0hwNTFJMHo1U091eDhlMVdBdVp6ZEhRclRrcDhUbWpYb0krbGEwd0dac3p1YnFiTzNpZlE2QS9XN3ZWU1lzVjNtUjBKS3drS2M0V0hpQmttUjhJM0NDZ0k4N29PTDRxelQ1UCtSVUpCZWpFT2dBUEs4aFlQemF0TStlSVRwMklPOXlUUW1lcm9tUFJ4eDFxeEFjc2lsZS91YlNlRWJjV1FHWUVDZ2hjTFkySHlLam9nakgyNWhNcGpwVXYxT3VnbGk0ZWgyZVJ3ME8zMmJKamt5dUNnTnpnMHZ6bFlNU2lTczB1b280TUc3aE1PakNFYVgxeUZFMG5TdmpCenVUbkVwSzg2WjhJb3FGQUl1Ync4a2c5QXJFYVJFV1NaSStqSDRYYnA2ZzlFOUVuSlQzb2FSekROK01VSkJRREhuNTZhOG9VbUVCdXNPeEJzL041K3RKRWJQa0FGRGo4VUd2T3MvSVd2Y1NnbEdCaHZTNy9GVFlmcFdHWWREWThmUEF4V1NBMzVzVEM0cDQrTG00QWFxSW9QZVF0ZnVmSzZKaDBaaHhsYnNVWE9TbVhOaWZENVpUQWt5RG9mYmJjY2x4bkE4V05BcXhDYlJOeWtoWHhRcGFEdzY3ZlhVWWJzaUcwS2h0djJvZUl2aDhyaFFNWU9jRUFxWEcvZUkrem5nT2M1eXhyOHE4MklBTTFjL0ZMRk9wbHF1NWVGUVhyTVp6R2NWQ2pZYkxXRzVJNEJUMWV1UnJsYnh0Tk90TWl0RERFaExYSUl5bkFBdnVPRVdFM1gzTmRBZnQ5NFZnYUc0MlhJUXQwWlg2UGVDRS9xUUZlOXJLNkh4N1lVNTBLdkg3Zlc0ZlMrcTdLS0JKeHNnZ0JYNXBTQUdoMWpJclZoNXpRNnczUmZhYWhCWG0vYUNiQ1pUakNVRlVUeVdacVc5cDYyTWpKUFhWcU9yUGdNTzROdjc0R2tmK293ZnROVkJEUW5qRkpxSFN3MTdwWHZoV1c1S1pxZS9RNDlOL1VTVENBVldvUVhGSUhCSFhYZTNGUHJVRHN1R0RtdEYvaEhLVEhwZWt4aGlBT1BJK1NKcTZTNkhGNEk5WVd6a0JKVG80NmlVTXpXcDhQaXIvUmlkdUx4S1lzU2tzVjh2TGxPUXZoR1gyWWxSME9CaEJqQyt1L2dFY3ZZMEFwSzdZazQxTnhqUFNRbldGSFRGNjZVcmpnZXZCOEN1NWErbDJ2WVNSUHR1VkRvNzNoaGRNU0huVVg3dFRqc1ZaR3hBbC9XcHRpT0lFUTFnbkwyOW1YNi90UjF0bWxrWWo4VzRYK0NTaldjVURHWTFOcFMvQzdoU0txaU1MTS9sMlFtU1daNzNEZHorZ2lvOEJDRU5ZUFE0NnFua3p3WFVicXZCa3hqVVFzV2ZaRmdidW8zckFmK3dON2pPTzkwK3lueDRQaTNMKzBuWUwxU2NoRFVnQVA0Z1BWLzdJZDFxKzFIU2htdUdrSXFXUlBneXhNRnFQOEhmalRualh3WTViUWZiSmN0Nk9JektnTUhvdEYvSGUxZWdzYXhIU3FHNndmZG1RNXg4TnlURkZxQmNwMmlTb3dIUjN5azUrMzZoRjd2WEFBQUFBRWxGVGtTdVFtQ0MifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMC0xMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzMsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiU2VjdXJpdHkgS2V5IE5GQyBieSBZdWJpY28gLSBFbnRlcnByaXNlIEVkaXRpb24gKEVudGVycHJpc2UgUHJvZmlsZSkiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlUyRjEwMDAyMDI0MTAxMjAwNiIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTEwLTEyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3M31dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNC0xMS0xMiJ9LHsiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbImYzMzA2NWViNTE3NDRlZGJjYWNhYTJhMmYzNTI3ZDZjMTBjNjM5YjgiXSwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiZjMzMDY1ZWI1MTc0NGVkYmNhY2FhMmEyZjM1MjdkNmMxMGM2MzliOCJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiU2VjdXJpdHkgS2V5IFNlcmllcyB3aXRoIE5GQyAoQ29uc3VtZXIgUHJvZmlsZSkifSwiZGVzY3JpcHRpb24iOiJZdWJpS2V5IEJpbyBGaWRvIEVkaXRpb24gKENvbnN1bWVyIFByb2ZpbGUpIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTcyOCwicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoyfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCIsInJlbW90ZV9oYW5kbGUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlEU0RDQ0FqQ2dBd0lCQWdJVVVjbU1YelJJRk9nR1RLMFRiM2dFdVpZWmtCSXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFEbTU1NWJXWTlXVyt0T1kwcklXSGxkaCthTmFub0NaQ0ZoN0drM1laclFtUFV3MGhrU0c2cVlIUXRQK2ZaeVMzM1ZFcnZnK0JRcW5tdW1nTmhmeEZya3dFWkVMZWlkQmNDOEM0QWc0bnFxaVBXcHpzdkkxN05jeFlsSW5MTkxGY1pZLytnT2lONlpPVGloTzUvdkJaTWJqOXJpYUFjcWxpWW1OR0pQZ1RjTUdhRUF5TXpFTU55Mm5tNkVwK3BqUDVhRjZnaTIxdC9VUUZzdUoxajJSai95bk0vU2RSdCtlY2FsNU9Zb3R4SGtGYkw5dnZ2MkEyT3Y1SVRaQ2x3NGJPUzlucHlwUWltT1o1UUFZeXRtWWFRcFdsL3BNWXo2elNqOFJxa1ZETkVKR3FOZlRLQTJpdkxZd1g2bFN0dE1QYXBnMEo4NGw5WDB2b1ZOL0ZwUzRWQ1ZBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlFnS0ZBaEc2UmFXK2hUeTUyZHhlVDhiQzk2SHpBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBWU16Z0xySkxJcjBPb3ZRbkFaclJJR3VhYmlIU1VLU21iTFJXcFJrV2VBdHNDaERFSHBYY0ovYmdETktZV29IcVE4eFJVakI0Q3llcFlldmMzWWxyRzhvN3pIeHBmVmNhb0w1U2V1Smt6SHhLbjRiVGFTcDkrTXZ3YW1ucDY0a1pNaU5iRkxrbmZQOWtZS29SSGtNV2hlUkoxVXNQMXo0U2Nta0NlSUxmc01zNnZxb3ZxaldDbEZzSnBCY3NsdVlIV0Y3YkJKMW40UndnK0FURW9wWTRJZ0d2Nlp2d2MrQTlyK0FUMmhxcG9Ta1lvQWwrQU5Zd2dzbE9mOXNKZTBWK1RBOVlZL1VsYUJtUFBUZDAvL3I5d3ZjZVBXWmtQaktvQUMvelVOaGZEYmg0TFY4R0hzM2x5WDJYb21ML0xOYzhKWXp5SWFERWhHUXZlb1BoaC90cjFnPT0iLCJNSUlEUnpDQ0FqR2dBd0lCQWdJVWV4OW5UOXZ3Wk5YUzQ4M0xkaVlHZncyU2pTb3dDd1lKS29aSWh2Y05BUUVMTUM0eExEQXFCZ05WQkFNTUkxbDFZbWxqYnlCQmRIUmxjM1JoZEdsdmJpQkpiblJsY20xbFpHbGhkR1VnUWlBeE1DQVhEVEkxTURnd01UQXdNREF3TUZvWUR6azVPVGt4TWpNeE1qTTFPVFU1V2pBbk1TVXdJd1lEVlFRRERCeFpkV0pwWTI4Z1JrbEVUeUJCZEhSbGMzUmhkR2x2YmlCQ01pQXhNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXUxTWV2bnk5ZHlPOVpVQzM5U29NaExjUi9EWHJ0Ri9jaU0xMnRjaXkyRVhBWjZNa3JpdlZ0Q2ZFVk05WDZJU1RFbkJQNnVTWVlvdjZwcHY2TzZKaDJOSG1ZbTR3K0puUzRWbkNQVTdtSEFNZlZJMk1HVFRNVk9ldzB4VXNHN3NJU0lrSURVQm11azhZSzljNXppYzkrdkZRR0xJa3NkWE81aVZGSWdORzUzY0dYRDRaTFpvQVBpdTBQRW96eEFxWUlhSTRneEtoT0EzUzgvVzhtSVdzdTZvZnlqNEd2a0ZHNlo3a3lGMzEwN1A3bXdGSExySTNFTmFQV01PRmNUYUdhMGR3Ky92VlJ3alJjRVpCVnN1dVQvODdja1NzMGE1cGt0M3ZaQmxhWWVUOHB6U3JlVjdtb3djSU05MEwyaWFBVGxQMG54bWFFNm5PeVRib2pGVmwyd0lEQVFBQm8yWXdaREFkQmdOVkhRNEVGZ1FVU1hFaDNzYTNidER1cm00TU0vQzdTMWxSdXVZd0h3WURWUjBqQkJnd0ZvQVU2cmRDa0o0TWUyUjYyMVI4QTdwOFRwL1lvV0V3RWdZRFZSMFRBUUgvQkFnd0JnRUIvd0lCQURBT0JnTlZIUThCQWY4RUJBTUNBWVl3Q3dZSktvWklodmNOQVFFTEE0SUJBUUI1R2MzaGFmdHA3aEtzRVpzbytpL1o1blJ1cWRtekcyV0NsVW9SVXFiYVB5Z2xuSkRqS1Iva2ZnT2w2aWJiRi96dGhtM0ttWFE3SGNESVAyeE1kRzdVMkwyaW1iSlFIcVBmL2gySHFvamI0clpndWUrNlc0a3RTUjVlbFI5TDFyWXFFL1NHWU00aUVLb1ZRU3Y3UlQxcnhJZVdpS3N3L1Z4eGkvUU9uc3gzRjd4ODBDQ1lnQjRFM3lReDhWVFc0NDBoVEV3VEExZU1IT2l4MzJ0UHR5eUhJYThQVlZJZlZwSFFKQmFNVnZ2NTA4VUVqd2tiVTJybmpmem9TVE5TOUE1alVROG1CU3ZlOTVyakIwZG85OEVVK0R4ZEJxWDIrSDZpNXdsSUNGZ3poZHpjc25lOWhHS1Q2bHpUWDRjSWRKc3JZMit4bGVLMEZGUXk2bEdFVkxFZSIsIk1JSURQakNDQWlhZ0F3SUJBZ0lVWHplaUVESkVPVHQxNEY1bjBvNlpmL2JCd2lVd0RRWUpLb1pJaHZjTkFRRU5CUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTVo2L1R4TThySVQrRWFvUHZHODFvbnRNT28vMm1RMlJCd0pIUzBRWmN4VmFOWHZsMTJMVWhCWjVMbWlCU2NJWmQxUm54MW9kNTg1aCsvZGhLN2hFbTdKQUFMa0tLdHMxZk81M0tHTkxadWp6NWgzd0duY3I0aHlLRjBHNzRiL1UzSzloRTVtR05ENnpxWWNoQ1JBSGZyWU1ZUkRGNFlMMFg0RDVuR2R4dnBwQXk2bmtFbXRXbU1ud08zaTBUQXVjc3JiRTQ4NUh2R000cjBWcGdWZEpwdmdRamlUSkNUSXErRDM1aHd0VDhRREl2K25HdnBjeWk1d2NJZkNrenlDaW1KdWtoWXk2S29xTk1LUUVkcE5pU092V3lETVRNdDFid0N2RXpwdzkxdSttc1V0NHJqMGVmbk85czBaT3dkd01SRG5INHhnVWw1Wkx3cnJQa2ZDMS8wQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQjhHQTFVZEl3UVlNQmFBRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRTXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJEUVVBQTRJQkFRQzNJVy9zZ0I5cFo4YXBKTmp4dUdvWCtGa0lMa3Mwd01OcmRYTC9jb1V2c3JoenN2bDZtZVBNcmJHSkJ5SjFYbnF1QjVzZ2NSRU5GeGRRRm1hM21pbzhVcGYxb3dNMVpyZVhySjBtQURHMkJwbHFiSm54aXlZYStSMTFyZUlGVFdlSWhNTmNaS3NEWnJGQXlQdUZqQ1dTUXZKbU5XZTltRlJZRmdOaFhKS2tYSWI1SDFYZ0VEbHdpZWRZUk03Vm9sQk5sbGQ2cFJGS2xYOHVzdDZPVE1PZUFEbDJ4TkYwbTFMVGhTZGV1WHZEeUMxZzkrSUxmejNTNk9JWWdjM2lyb1JjRkQzNTRnN3JLZnU2N3FGQXc5Z0M0eWkweEJUUHJZOTVyaDQvSHFhVVlDQS9MOGxkUms2SDdYazM1RCtXVnBtcTJTaC94VDVIaUZ1aGY0d0piMGJLIiwiTUlJRFNqQ0NBaktnQXdJQkFnSVVSMzhtcTI2U2Yyc3pWVjJCZEc2V0VON2t1V1V3RFFZSktvWklodmNOQVFFTEJRQXdMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3SUJjTk1qUXhNakF4TURBd01EQXdXaGdQT1RrNU9URXlNekV5TXpVNU5UbGFNQ1l4SkRBaUJnTlZCQU1NRzFsMVltbGpieUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRUlnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTlkwV2I5b1BvUm9Lb1F5V1BhSnB6MTF2cldUZzZ6VHRtTmoyVm9LUm55dktHUnFwemI4M3c1bDZZQTk2VVlrWUJEUVAwaWxPMkRQZTZ3V3FWUjV6RGZSemRjSDhiaCtMN2RHR3ZhZTZoUlRaaGtGa0NwWERzNEhjY2tuckRmOEZDbEo3SGUzOUpmNDIvRzFRbTJ6ejlXV21yUFh0Z2lLL3gwNUdqc1FmR3VERzF6ZjVRVFVVaWU4bHd5bUszVGZkT3ZOZWVKQUFQZTJwbjdJdGZSYityVnJOV2lEemxSbjJ2Tm5aMndQbzR3SC9XSjZkaFhaRytyTVdUK2E2Qm9jZzFVZkl3NmtkdW5HNGJUcFp6c3ZhY0ZZeVIwbXBmK0RlT25wU1dBbXl3SldIdlRsZjJZWHhGeWVYY1RBQ2RRbGNNTkdKMlZoWlE0OHh0UDUvUkJQLzhrQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZDaHk0Mm9raXFjVFMxaXFhL0hSV2prQm40SC9NQjhHQTFVZEl3UVlNQmFBRk9xM1FwQ2VESHRrZXR0VWZBTzZmRTZmMktGaE1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQW4rUkhJUGJ0TUVETmRUMWc4SC9SaXRBa1VkTGdBdDF0V0dXbmxqOWtuYnY0LzRHbFg3QzlwNDVlZlBPOS9hWkw2T1YxWFJLQmk2S210Qlc1SzdudVlFbk14LzVCcUJTYkxUN3JoZHVDNDlUQmVNYjlQSGRYc1RsU1ZOWWVmcjFkR2lkcjRqMHhWQlFMYjFya25EQWJkV0R6S2Z2bmF5S084RnJ3ZTdIeDg0M01HL3JKK2MwWHJ1VXZiZlZUQ0hMaUlXaE03b05EaEw4eG9iNnhVbzlLTEtjU0wrSXRZc08zLzlXYjhROUdqc3FMNEZYc0RjRzFTYVloN0twZnVNbU9peHF6SlpPMm5JaWNQWVJnMUkyU3VpVWZZTzcwdG1kSGNibCtrU1FtU1l0N3JxNHZpSUxnMkd4M2o5cklUdVdUamJhVWFTU1F4Z09tTVNIdXl6TUFDIiwiTUlJRFNqQ0NBaktnQXdJQkFnSVVUbmJiR0lSMk5IdnpxSUtGQWVRd0cxWEJpczB3RFFZSktvWklodmNOQVFFTEJRQXdMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3SUJjTk1qUXhNakF4TURBd01EQXdXaGdQT1RrNU9URXlNekV5TXpVNU5UbGFNQ1l4SkRBaUJnTlZCQU1NRzFsMVltbGpieUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRUVnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBT3NYajNrMDRCYW40VFlkdFpLcUQvT1BKeHlEeWFQbUNCVUZVaWFaSWdUdGVabmozWDI1RGhncFpaWHNDNEQweWRJY3JsQTZ3TlVJbk9STC9MOXpCYlRFSU1BVk1HbzZnN1VLQW1iMk1GNkFIYm5oWUpkOWVpa3VwVk5XU2hITllOYzRHQmRPMVlONkFmVXF2SmhIYmUzVjRTTk1QbUJSRUtKUFZ6N1Rod2dtZ2dUZThXczJLMC93c3F2MndTRTdwYkNCc1VaaElYNTFiWk0zcHFEd0pQVG1SRkV2dDAvNnRHNWVPOEYzajE0T1hxZkVobWpuMVZ2eEtEWVFPTFpBeEN3d2dDMFA0Q2RmV3YzeThQU1I4STM1NGhPMVkrR3pOanZJcVgzOE5LTHl3dUlZSEZlck94Tmx4RU1CdkZoWUJ1UnVZQWtrZ1VhUHFONlVCaHNJTHJzQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZDQ29SSGhpeU5uYm5YUldJTDZaQlhvQlg5WVRNQjhHQTFVZEl3UVlNQmFBRkNBb1VDRWJwRnBiNkZQTG5aM0Y1UHhzTDNvZk1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQ1FGYWZKSTEvNVdnOUNFRWltRTFSUDU0UmdRd1ROVE9PUXNMQUNUZStySXRsRlF6QzlaRGhyVjgyOHlYN2p6eStBQXNwM2l6SzdUMXRoMmRsN20rdHUwc3cyUGEvb2xjMDJudDZQeUl3MzQ4Z2FIemhJMSswS0U0NXF4dkZEZUwybE14YlBmQ1l2eUVFYVl6amlRRUxVNTk1MXBYR1d5S01hLzRmTHRPK1pLT1hoTXVWZXE0clhEUEk1NFc2SkhPaUFhaUtkaXcrNWUzYzJrdC9qRklRdE02dk1YZzlMTkZ6ZGpFVE50MjBWWDlRZXZScEZaZnVjTUc5d0NhUURvRmxQenBUTUpLaFBldi9pbUptWlloS2ZyMGxMY2VtdHFqSXhMQW9xWmRPWWZIQmc2K3ZBY2RQSS9pYXVHcFVBdjdYK1VLTm1Ed2paMkJhSDRzTHdoQjJtIiwiTUlJRFNEQ0NBakNnQXdJQkFnSVVEcUVSdys0Um5HU2dneGdVZXdKRkVQRFJaM1l3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRREk3WG5IK1p2RHdNQ1FVOE04WmVWNXFzY3VibHZWWWFhUnQzWWJheG45Z29kTHg1c3dIMGxYcmRnamg1aDdGcFZnQ2dZWVg3RTRibDF2YnpVTGVtck1XVDhOM1dNR1VlOFFBSmJCZWlvVjdXL0UraFRaUC8wU0tKVmEzZXdLQm82VUxlTW5mUVpEclZPUkFrOHdUTHEydjVMbGo1dk1qN0p0T290S2E5SjduSFM4a0xtelhYU2FqMFN3RVBoNU9BWlVUTlY0enMxYnZvVEFRUVdyTDQvSjlRdUt0NldDRkU1blVOaVJRY0ViVkY4bWxxSzJieDJ6Nm9rVmx0eURWTEN4WWJwVVRFTHZZMXVzUjNEVEdQVW9JQ2xPbTRjcnB3bkRSTFZIdmpZZVBHQkIvL3BFeXp4QS9nY1NjeGp3YUgxWlV3OWJuU2JIeXVyS3FiVGExS3ZqQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJUcXQwS1FuZ3g3WkhyYlZId0R1bnhPbjlpaFlUQWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQXFRYUNXTXhUR3FWVlg3U2s3a2tKbVV1ZVRTWUt1VTYrS0JCU2d3SVJubHc5SzdIZTFJcHhaMGhkd3BQTmlrS2ptY3lGZ0ZQemhJbXdISmd4eHVUOTBQdzN2WU9kY0pKTmt0RGczNVBYT2Z6U24xNWNGQXgxUk8wbVBUbUliOGRYaUVXT3B6b1h2ZHdYRE00MVphQ0RZTVQ3dzRJUXRNeXZFN3hVQlpxMmJqdEFucS9ORFVBN2JlNEg4SDNpcEMrLytOS2xVcmNVaCtqNDhLNjdXSTB1MW02RmVRdWVCQTduMDZqODI1cnFEcXNhTHM5VGI3S0FIQXc4UG1yV2FOUEcya2pLZXJ4UEVmZWNpdmxGYXdwMlJXWnZ4clZ0bjNUVjJTQnh5Q0pDa1hzTkQwNWRDRXJWSFNKSXMrQmR0VFZOWTlBd3R5UG1ueWIwdjRtU1R6dldkdz09Il0sImljb24iOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJpY29uRGFyayI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsInByb3ZpZGVyTG9nb0xpZ2h0IjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwicHJvdmlkZXJMb2dvRGFyayI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI2LTA0LTI1IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTcyOCwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZdWJpS2V5IEJpbyBGaWRvIEVkaXRpb24gKENvbnN1bWVyIFByb2ZpbGUpIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVMkYxMDAwMjAyNjA0MjUwMTciLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblByb2ZpbGVzIjpbImNvbnN1bWVyIl0sImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjYtMDQtMjUiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NzI4fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI2LTA1LTAxIn0seyJhYWd1aWQiOiIwZWJkOWYyYy1mNjg1LTQ0MWMtOGMzZS1hMDJhMjM0YTg0MGEiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjBlYmQ5ZjJjLWY2ODUtNDQxYy04YzNlLWEwMmEyMzRhODQwYSIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IDUgU2VyaWVzIHdpdGggTkZDIEVuaGFuY2VkIFBJTiAoQ29uc3VtZXIgUHJvZmlsZSkifSwiZGVzY3JpcHRpb24iOiJZdWJpS2V5IDUgU2VyaWVzIHdpdGggTkZDIEVuaGFuY2VkIFBJTiAoQ29uc3VtZXIgUHJvZmlsZSkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NzI4LCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX0seyJtYWpvciI6MSwibWlub3IiOjN9LHsibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJlZDI1NTE5X2VkZHNhX3NoYTUxMl9yYXciLCJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyIsInNlY3AzODRyMV9lY2RzYV9zaGEzODRfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo2LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjYsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlEU2pDQ0FqS2dBd0lCQWdJVVIzOG1xMjZTZjJzelZWMkJkRzZXRU43a3VXVXdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFSWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFOWTBXYjlvUG9Sb0tvUXlXUGFKcHoxMXZyV1RnNnpUdG1OajJWb0tSbnl2S0dScXB6YjgzdzVsNllBOTZVWWtZQkRRUDBpbE8yRFBlNndXcVZSNXpEZlJ6ZGNIOGJoK0w3ZEdHdmFlNmhSVFpoa0ZrQ3BYRHM0SGNja25yRGY4RkNsSjdIZTM5SmY0Mi9HMVFtMnp6OVdXbXJQWHRnaUsveDA1R2pzUWZHdURHMXpmNVFUVVVpZThsd3ltSzNUZmRPdk5lZUpBQVBlMnBuN0l0ZlJiK3JWck5XaUR6bFJuMnZObloyd1BvNHdIL1dKNmRoWFpHK3JNV1QrYTZCb2NnMVVmSXc2a2R1bkc0YlRwWnpzdmFjRll5UjBtcGYrRGVPbnBTV0FteXdKV0h2VGxmMllYeEZ5ZVhjVEFDZFFsY01OR0oyVmhaUTQ4eHRQNS9SQlAvOGtDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNoeTQyb2tpcWNUUzFpcWEvSFJXamtCbjRIL01COEdBMVVkSXdRWU1CYUFGT3EzUXBDZURIdGtldHRVZkFPNmZFNmYyS0ZoTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBbitSSElQYnRNRUROZFQxZzhIL1JpdEFrVWRMZ0F0MXRXR1dubGo5a25idjQvNEdsWDdDOXA0NWVmUE85L2FaTDZPVjFYUktCaTZLbXRCVzVLN251WUVuTXgvNUJxQlNiTFQ3cmhkdUM0OVRCZU1iOVBIZFhzVGxTVk5ZZWZyMWRHaWRyNGoweFZCUUxiMXJrbkRBYmRXRHpLZnZuYXlLTzhGcndlN0h4ODQzTUcvckorYzBYcnVVdmJmVlRDSExpSVdoTTdvTkRoTDh4b2I2eFVvOUtMS2NTTCtJdFlzTzMvOVdiOFE5R2pzcUw0RlhzRGNHMVNhWWg3S3BmdU1tT2l4cXpKWk8ybklpY1BZUmcxSTJTdWlVZllPNzB0bWRIY2JsK2tTUW1TWXQ3cnE0dmlJTGcyR3gzajlySVR1V1RqYmFVYVNTUXhnT21NU0h1eXpNQUMiLCJNSUlEUnpDQ0FqR2dBd0lCQWdJVWV4OW5UOXZ3Wk5YUzQ4M0xkaVlHZncyU2pTb3dDd1lKS29aSWh2Y05BUUVMTUM0eExEQXFCZ05WQkFNTUkxbDFZbWxqYnlCQmRIUmxjM1JoZEdsdmJpQkpiblJsY20xbFpHbGhkR1VnUWlBeE1DQVhEVEkxTURnd01UQXdNREF3TUZvWUR6azVPVGt4TWpNeE1qTTFPVFU1V2pBbk1TVXdJd1lEVlFRRERCeFpkV0pwWTI4Z1JrbEVUeUJCZEhSbGMzUmhkR2x2YmlCQ01pQXhNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXUxTWV2bnk5ZHlPOVpVQzM5U29NaExjUi9EWHJ0Ri9jaU0xMnRjaXkyRVhBWjZNa3JpdlZ0Q2ZFVk05WDZJU1RFbkJQNnVTWVlvdjZwcHY2TzZKaDJOSG1ZbTR3K0puUzRWbkNQVTdtSEFNZlZJMk1HVFRNVk9ldzB4VXNHN3NJU0lrSURVQm11azhZSzljNXppYzkrdkZRR0xJa3NkWE81aVZGSWdORzUzY0dYRDRaTFpvQVBpdTBQRW96eEFxWUlhSTRneEtoT0EzUzgvVzhtSVdzdTZvZnlqNEd2a0ZHNlo3a3lGMzEwN1A3bXdGSExySTNFTmFQV01PRmNUYUdhMGR3Ky92VlJ3alJjRVpCVnN1dVQvODdja1NzMGE1cGt0M3ZaQmxhWWVUOHB6U3JlVjdtb3djSU05MEwyaWFBVGxQMG54bWFFNm5PeVRib2pGVmwyd0lEQVFBQm8yWXdaREFkQmdOVkhRNEVGZ1FVU1hFaDNzYTNidER1cm00TU0vQzdTMWxSdXVZd0h3WURWUjBqQkJnd0ZvQVU2cmRDa0o0TWUyUjYyMVI4QTdwOFRwL1lvV0V3RWdZRFZSMFRBUUgvQkFnd0JnRUIvd0lCQURBT0JnTlZIUThCQWY4RUJBTUNBWVl3Q3dZSktvWklodmNOQVFFTEE0SUJBUUI1R2MzaGFmdHA3aEtzRVpzbytpL1o1blJ1cWRtekcyV0NsVW9SVXFiYVB5Z2xuSkRqS1Iva2ZnT2w2aWJiRi96dGhtM0ttWFE3SGNESVAyeE1kRzdVMkwyaW1iSlFIcVBmL2gySHFvamI0clpndWUrNlc0a3RTUjVlbFI5TDFyWXFFL1NHWU00aUVLb1ZRU3Y3UlQxcnhJZVdpS3N3L1Z4eGkvUU9uc3gzRjd4ODBDQ1lnQjRFM3lReDhWVFc0NDBoVEV3VEExZU1IT2l4MzJ0UHR5eUhJYThQVlZJZlZwSFFKQmFNVnZ2NTA4VUVqd2tiVTJybmpmem9TVE5TOUE1alVROG1CU3ZlOTVyakIwZG85OEVVK0R4ZEJxWDIrSDZpNXdsSUNGZ3poZHpjc25lOWhHS1Q2bHpUWDRjSWRKc3JZMit4bGVLMEZGUXk2bEdFVkxFZSIsIk1JSURTakNDQWpLZ0F3SUJBZ0lVVG5iYkdJUjJOSHZ6cUlLRkFlUXdHMVhCaXMwd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JCSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVFZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU9zWGozazA0QmFuNFRZZHRaS3FEL09QSnh5RHlhUG1DQlVGVWlhWklnVHRlWm5qM1gyNURoZ3BaWlhzQzREMHlkSWNybEE2d05VSW5PUkwvTDl6QmJURUlNQVZNR282ZzdVS0FtYjJNRjZBSGJuaFlKZDllaWt1cFZOV1NoSE5ZTmM0R0JkTzFZTjZBZlVxdkpoSGJlM1Y0U05NUG1CUkVLSlBWejdUaHdnbWdnVGU4V3MySzAvd3NxdjJ3U0U3cGJDQnNVWmhJWDUxYlpNM3BxRHdKUFRtUkZFdnQwLzZ0RzVlTzhGM2oxNE9YcWZFaG1qbjFWdnhLRFlRT0xaQXhDd3dnQzBQNENkZld2M3k4UFNSOEkzNTRoTzFZK0d6Tmp2SXFYMzhOS0x5d3VJWUhGZXJPeE5seEVNQnZGaFlCdVJ1WUFra2dVYVBxTjZVQmhzSUxyc0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ0NvUkhoaXlObmJuWFJXSUw2WkJYb0JYOVlUTUI4R0ExVWRJd1FZTUJhQUZDQW9VQ0VicEZwYjZGUExuWjNGNVB4c0wzb2ZNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUNRRmFmSkkxLzVXZzlDRUVpbUUxUlA1NFJnUXdUTlRPT1FzTEFDVGUrckl0bEZRekM5WkRoclY4Mjh5WDdqenkrQUFzcDNpeks3VDF0aDJkbDdtK3R1MHN3MlBhL29sYzAybnQ2UHlJdzM0OGdhSHpoSTErMEtFNDVxeHZGRGVMMmxNeGJQZkNZdnlFRWFZemppUUVMVTU5NTFwWEdXeUtNYS80Zkx0TytaS09YaE11VmVxNHJYRFBJNTRXNkpIT2lBYWlLZGl3KzVlM2Mya3QvakZJUXRNNnZNWGc5TE5GemRqRVROdDIwVlg5UWV2UnBGWmZ1Y01HOXdDYVFEb0ZsUHpwVE1KS2hQZXYvaW1KbVpZaEtmcjBsTGNlbXRxakl4TEFvcVpkT1lmSEJnNit2QWNkUEkvaWF1R3BVQXY3WCtVS05tRHdqWjJCYUg0c0x3aEIybSIsIk1JSURTRENDQWpDZ0F3SUJBZ0lVRHFFUncrNFJuR1NnZ3hnVWV3SkZFUERSWjNZd0RRWUpLb1pJaHZjTkFRRUxCUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURJN1huSCtadkR3TUNRVThNOFplVjVxc2N1Ymx2VllhYVJ0M1liYXhuOWdvZEx4NXN3SDBsWHJkZ2poNWg3RnBWZ0NnWVlYN0U0YmwxdmJ6VUxlbXJNV1Q4TjNXTUdVZThRQUpiQmVpb1Y3Vy9FK2hUWlAvMFNLSlZhM2V3S0JvNlVMZU1uZlFaRHJWT1JBazh3VExxMnY1TGxqNXZNajdKdE9vdEthOUo3bkhTOGtMbXpYWFNhajBTd0VQaDVPQVpVVE5WNHpzMWJ2b1RBUVFXckw0L0o5UXVLdDZXQ0ZFNW5VTmlSUWNFYlZGOG1scUsyYngyejZva1ZsdHlEVkxDeFlicFVURUx2WTF1c1IzRFRHUFVvSUNsT200Y3Jwd25EUkxWSHZqWWVQR0JCLy9wRXl6eEEvZ2NTY3hqd2FIMVpVdzliblNiSHl1cktxYlRhMUt2akFnTUJBQUdqWmpCa01CMEdBMVVkRGdRV0JCVHF0MEtRbmd4N1pIcmJWSHdEdW54T245aWhZVEFmQmdOVkhTTUVHREFXZ0JUUzd1OWFJbzA2YlZ3amx6M3loZFVtOFNWN2tqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQTRHQTFVZER3RUIvd1FFQXdJQmhqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFxUWFDV014VEdxVlZYN1NrN2trSm1VdWVUU1lLdVU2K0tCQlNnd0lSbmx3OUs3SGUxSXB4WjBoZHdwUE5pa0tqbWN5RmdGUHpoSW13SEpneHh1VDkwUHczdllPZGNKSk5rdERnMzVQWE9melNuMTVjRkF4MVJPMG1QVG1JYjhkWGlFV09wem9YdmR3WERNNDFaYUNEWU1UN3c0SVF0TXl2RTd4VUJacTJianRBbnEvTkRVQTdiZTRIOEgzaXBDKy8rTktsVXJjVWgrajQ4SzY3V0kwdTFtNkZlUXVlQkE3bjA2ajgyNXJxRHFzYUxzOVRiN0tBSEF3OFBtcldhTlBHMmtqS2VyeFBFZmVjaXZsRmF3cDJSV1p2eHJWdG4zVFYyU0J4eUNKQ2tYc05EMDVkQ0VyVkhTSklzK0JkdFRWTlk5QXd0eVBtbnliMHY0bVNUenZXZHc9PSIsIk1JSURTRENDQWpDZ0F3SUJBZ0lVVWNtTVh6UklGT2dHVEswVGIzZ0V1Wllaa0JJd0RRWUpLb1pJaHZjTkFRRUxCUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JCSURFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURtNTU1YldZOVdXK3RPWTBySVdIbGRoK2FOYW5vQ1pDRmg3R2szWVpyUW1QVXcwaGtTRzZxWUhRdFArZlp5UzMzVkVydmcrQlFxbm11bWdOaGZ4RnJrd0VaRUxlaWRCY0M4QzRBZzRucXFpUFdwenN2STE3TmN4WWxJbkxOTEZjWlkvK2dPaU42Wk9UaWhPNS92QlpNYmo5cmlhQWNxbGlZbU5HSlBnVGNNR2FFQXlNekVNTnkybm02RXArcGpQNWFGNmdpMjF0L1VRRnN1SjFqMlJqL3luTS9TZFJ0K2VjYWw1T1lvdHhIa0ZiTDl2dnYyQTJPdjVJVFpDbHc0Yk9TOW5weXBRaW1PWjVRQVl5dG1ZYVFwV2wvcE1ZejZ6U2o4UnFrVkRORUpHcU5mVEtBMml2TFl3WDZsU3R0TVBhcGcwSjg0bDlYMHZvVk4vRnBTNFZDVkFnTUJBQUdqWmpCa01CMEdBMVVkRGdRV0JCUWdLRkFoRzZSYVcraFR5NTJkeGVUOGJDOTZIekFmQmdOVkhTTUVHREFXZ0JUUzd1OWFJbzA2YlZ3amx6M3loZFVtOFNWN2tqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQTRHQTFVZER3RUIvd1FFQXdJQmhqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFZTXpnTHJKTElyME9vdlFuQVpyUklHdWFiaUhTVUtTbWJMUldwUmtXZUF0c0NoREVIcFhjSi9iZ0ROS1lXb0hxUTh4UlVqQjRDeWVwWWV2YzNZbHJHOG83ekh4cGZWY2FvTDVTZXVKa3pIeEtuNGJUYVNwOStNdndhbW5wNjRrWk1pTmJGTGtuZlA5a1lLb1JIa01XaGVSSjFVc1AxejRTY21rQ2VJTGZzTXM2dnFvdnFqV0NsRnNKcEJjc2x1WUhXRjdiQkoxbjRSd2crQVRFb3BZNElnR3Y2WnZ3YytBOXIrQVQyaHFwb1NrWW9BbCtBTll3Z3NsT2Y5c0plMFYrVEE5WVkvVWxhQm1QUFRkMC8vcjl3dmNlUFdaa1BqS29BQy96VU5oZkRiaDRMVjhHSHMzbHlYMlhvbUwvTE5jOEpZenlJYURFaEdRdmVvUGhoL3RyMWc9PSIsIk1JSURQakNDQWlhZ0F3SUJBZ0lVWHplaUVESkVPVHQxNEY1bjBvNlpmL2JCd2lVd0RRWUpLb1pJaHZjTkFRRU5CUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTVo2L1R4TThySVQrRWFvUHZHODFvbnRNT28vMm1RMlJCd0pIUzBRWmN4VmFOWHZsMTJMVWhCWjVMbWlCU2NJWmQxUm54MW9kNTg1aCsvZGhLN2hFbTdKQUFMa0tLdHMxZk81M0tHTkxadWp6NWgzd0duY3I0aHlLRjBHNzRiL1UzSzloRTVtR05ENnpxWWNoQ1JBSGZyWU1ZUkRGNFlMMFg0RDVuR2R4dnBwQXk2bmtFbXRXbU1ud08zaTBUQXVjc3JiRTQ4NUh2R000cjBWcGdWZEpwdmdRamlUSkNUSXErRDM1aHd0VDhRREl2K25HdnBjeWk1d2NJZkNrenlDaW1KdWtoWXk2S29xTk1LUUVkcE5pU092V3lETVRNdDFid0N2RXpwdzkxdSttc1V0NHJqMGVmbk85czBaT3dkd01SRG5INHhnVWw1Wkx3cnJQa2ZDMS8wQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQjhHQTFVZEl3UVlNQmFBRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRTXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJEUVVBQTRJQkFRQzNJVy9zZ0I5cFo4YXBKTmp4dUdvWCtGa0lMa3Mwd01OcmRYTC9jb1V2c3JoenN2bDZtZVBNcmJHSkJ5SjFYbnF1QjVzZ2NSRU5GeGRRRm1hM21pbzhVcGYxb3dNMVpyZVhySjBtQURHMkJwbHFiSm54aXlZYStSMTFyZUlGVFdlSWhNTmNaS3NEWnJGQXlQdUZqQ1dTUXZKbU5XZTltRlJZRmdOaFhKS2tYSWI1SDFYZ0VEbHdpZWRZUk03Vm9sQk5sbGQ2cFJGS2xYOHVzdDZPVE1PZUFEbDJ4TkYwbTFMVGhTZGV1WHZEeUMxZzkrSUxmejNTNk9JWWdjM2lyb1JjRkQzNTRnN3JLZnU2N3FGQXc5Z0M0eWkweEJUUHJZOTVyaDQvSHFhVVlDQS9MOGxkUms2SDdYazM1RCtXVnBtcTJTaC94VDVIaUZ1aGY0d0piMGJLIl0sImljb24iOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJpY29uRGFyayI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsInByb3ZpZGVyTG9nb0xpZ2h0IjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwicHJvdmlkZXJMb2dvRGFyayI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIkZJRE9fMl8wIiwiRklET18yXzFfUFJFIiwiRklET18yXzEiLCJGSURPXzJfMyJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJsYXJnZUJsb2JLZXkiLCJjcmVkQmxvYiIsIm1pblBpbkxlbmd0aCIsImhtYWMtc2VjcmV0LW1jIiwidGhpcmRQYXJ0eVBheW1lbnQiLCJwcmV2aWV3U2lnbiJdLCJhYWd1aWQiOiIwZWJkOWYyY2Y2ODU0NDFjOGMzZWEwMmEyMzRhODQwYSIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOnRydWUsInVwIjp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibGFyZ2VCbG9icyI6dHJ1ZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwicGVyQ3JlZE1nbXRSTyI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOmZhbHNlLCJhbHdheXNVdiI6dHJ1ZX0sIm1heE1zZ1NpemUiOjE1MzYsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6OCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoxMjgsInRyYW5zcG9ydHMiOlsibmZjIiwidXNiIiwic21hcnQtY2FyZCJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi04fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotMzV9XSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5Ijo0MDk2LCJmb3JjZVBJTkNoYW5nZSI6ZmFsc2UsIm1pblBJTkxlbmd0aCI6NiwiZmlybXdhcmVWZXJzaW9uIjozMjk3MjgsIm1heENyZWRCbG9iTGVuZ3RoIjozMiwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjEsInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjoxMDAsImF0dGVzdGF0aW9uRm9ybWF0cyI6WyJwYWNrZWQiXSwibG9uZ1RvdWNoRm9yUmVzZXQiOnRydWUsImVuY0lkZW50aWZpZXIiOiIiLCJ0cmFuc3BvcnRzRm9yUmVzZXQiOlsibmZjIiwidXNiIiwic21hcnQtY2FyZCJdLCJwaW5Db21wbGV4aXR5UG9saWN5Ijp0cnVlLCJwaW5Db21wbGV4aXR5UG9saWN5VVJMIjoiNjg3NDc0NzA3MzNhMmYyZjc5NzU2MjY5MmU2MzZmMmY3MDY5NmUiLCJtYXhQSU5MZW5ndGgiOjYzLCJlbmNDcmVkU3RvcmVTdGF0ZSI6IiIsImF1dGhlbnRpY2F0b3JDb25maWdDb21tYW5kcyI6WzIsM119fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNi0wNC0yNSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk3MjgsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWXViaUtleSA1IFNlcmllcyB3aXRoIE5GQyBFbmhhbmNlZCBQSU4gKENvbnN1bWVyIFByb2ZpbGUpIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNjA0MjUwMTQiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblByb2ZpbGVzIjpbImNvbnN1bWVyIl0sImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjYtMDQtMjUiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NzI4fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI2LTA1LTAxIn0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiMzExMTZhNjQ3MDY5ZDE0OTNmNThmYzViNTRlNTQ0OWUyYTUyZDQzZSJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyIzMTExNmE2NDcwNjlkMTQ5M2Y1OGZjNWI1NGU1NDQ5ZTJhNTJkNDNlIl0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpa2V5IEVkZ2UifSwiZGVzY3JpcHRpb24iOiJZdWJpa2V5IEVkZ2UiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCIsInJlbW90ZV9oYW5kbGUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlESGpDQ0FnYWdBd0lCQWdJRUcwQlQ5ekFOQmdrcWhraUc5dzBCQVFzRkFEQXVNU3d3S2dZRFZRUURFeU5aZFdKcFkyOGdWVEpHSUZKdmIzUWdRMEVnVTJWeWFXRnNJRFExTnpJd01EWXpNVEFnRncweE5EQTRNREV3TURBd01EQmFHQTh5TURVd01Ea3dOREF3TURBd01Gb3dMakVzTUNvR0ExVUVBeE1qV1hWaWFXTnZJRlV5UmlCU2IyOTBJRU5CSUZObGNtbGhiQ0EwTlRjeU1EQTJNekV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRQy9qd1l1aEJWbHFhaVlXRU1zcldGaXNnSitQdE05MWVTcnBJNFRLN1U1M213Q0lhd1NESHk4dlVtazVOMktBajlhYnZUOU5QNVNNUzFoUWkzdXN4b1lHb25YUWdmTzZaWHlVQTlhK0tBa3FkRm5Cbmx5dWdTZUNPZXA4RWRaRmZzYVJGdE1qa3d6NUdjejJQeTR2SVl2Q2RNSFB0d2F6MGJWdXpuZXVlSUV6NlRuUWpFNjNSZHQyemJ3bmVid1RHNVp5YmVXU3dienkrQkozNFpIY1VoUEFZODl5SlFYdUUwSXpNWkZjRUJiUE5SYldFQ1JLZ2pxLy9xVDlubURPRlZsU1JDdDJ3aXFQU3psdXduK3Yrc3VRRUJzVWpUR01FZDI1dEtYWFRrTlcyMXdJV2J4ZVN5VW9UWHdMdkdTNnhsd1FTZ05wazJxWFl3ZjhpWGc3VldaQWdNQkFBR2pRakJBTUIwR0ExVWREZ1FXQkJRZ0l2ejBiTkdKaGpncFRva3N5S3BQOXh2OW9EQVBCZ05WSFJNRUNEQUdBUUgvQWdFQU1BNEdBMVVkRHdFQi93UUVBd0lCQmpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQWp2anVPTURTYStKWEZDTHlCS3N5Y1h0QlZac0o0VWUzTGJhRXNQWTRNWU4vaElRNVpNNXA3RWpmY25NRzRDdFlrTnNmTkhjMEFoQkxkcTQ1cm5UODdxLzZPM3ZVRXROTWFmYmhVNmt0aFg3WSs5WEZOOU5wbVl4citla1ZZNXhPeGk4aDlKRElnb01QNFZCMXVTMGF1bkwxSUdxck5vb0w5bW1Gbkwya0xWVmVlNi9WUjZDNStLU1RDTUNXcHBNdUpJWklJMnY5bzRka29aOFk3UVJqUWxMZll6ZDNxR3RLYnc3eGFGMVVzRy81eFViL0J0d2IyWDJnNElucGlCL3l0LzNDcFFYcGlXWC9LNG1CdlVLaUduMDVac3FlWTFneDRnMHhMQnFjVTlwc215UHpLK1ZzZ3cyamVSUTVKbEtEeXFFMGhlYmZDMXR2RnUwQ0NySkZjdz09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWZDQVlBQUFDR1ZzK01BQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBSFlZQUFCMkdBVjJpRTRFQUFBYk5TVVJCVkZoSHBWZDdUTlYxRkQvM2Q1OXdlUVNJZ1M5QVFBWGNGTEFRWmk5ZnBlVnoxdFkvV1RacjVXeHBjN1c1a25MYTVqSTNaODVzclMybk0yc2p0V3daUzdJVUg0SDR4Q25FUXg0REFaRjc0Vjd1czg4NXY5L2xJbkJ2VkovQjRQdjludS81bnUvNW52TTU1NmZ6QS9RdjBIYi9JclgzVkZLUG80NWNubTRpblVJV1l3TEZSbVpRVXV3akZHL04xaVJIaDFFWjBOUlZSdWRxdDFCZCsyblNLeVMvT2h5czArbGszZS8za1E5cXZENFpVdGE0VlZTVXVZMGVpcHlpVGhBZm9jb09SVmdEdXV3M3FLUmlBZDNyYmNFdGpUallJb2Y2V2FIc0NtelZQV0NNeCtjZ2g4dExxV01LYU1Xc1VqTHFvMlJ0SklRMG9Pem1lcnBRdTRlc1pnc09Oa0d4SDdkMGtkdlRUMTdzNE9NVTdWSThaaGpnR2FNK0FxOWlFTnU4UGlmMXVkejA3TXd2S1dmOEdsVm9DRVkwNFBDNVdkVGFYWUZiUjh2TnZMNSszS2dmYjV4Tk15YTlSYW1KaXluYU1sR1RWdEZscjZiYTl1K3BxbkVYNHVNdVJSZ2pTWUVock43dXRGRmU2bHFhbDdOZmt3NWltQUdIeW5QcGJrOFZtWTB4c3RucHRsRkNWQ1l0elR1Qk44M1FwTUxqVHRldmRQelNVbko3ZThta2p4WjM5ZlhiS0RmbGRacWJ2VStUVWdHbkJWRjZmUTJpUEhnNFcxNlVXVXd2emJrMTZzTVpFK1BuMHB2ejdKU2V1QXllczhsY3BDbWFLdW8vcCtxV3IyVWN3SUFIV3J2UDBZRXpoWEF0TEFic3NIaHA3aUdhbXZ5aWpQOHJ5cXJYVVdYOVhvb3d4eUF1Zk5CcnA0M1BPQkZYWmxrZjhNRFJpcWNweW93QXdwdXoyeCtmV3Z6L0R0ZGU5c21zenlndGNSNkMxd2JkekJsNk9scTVXTllZNG9HYXRoSk1ya1RFeDBqQVJTSEFWcys1cllrUU5YYitRZ2ZQTHNRNmdYeUluc3JlUWZtcG03UlZGWWZMODZuMWZpVU9rWXZTaGtVUHh2YnVrem95NksxaWhNMWhvM1h6VzZFdlNmWEErZHBpV0dhV2QrZG9Yekx6bUd3S1lGTENBc1JBbFBCQWhNbENGWFU3dEJVVlByOEhnVmNKSFdxK0YwMHBscitETVRkclA0enZ4WTExa05NaHhUK1NlVEdnK2Q0VjVMUUppdHlVR0pOQjhWRlpzamdZQlpNL0lJL1hDVGtqMHF5RE9wRjJBVlExN0NJalVwL0RuVDFVa0w1RjVnZGorc1Mxd2cxZ0UzZ2lnbTYwZkNYelNuUFhieUFQYklYditJRHBFMTZUaGFISVM5c2t5aGxtTUU1RjNjZnFBS2hxMkMwRTVQSDFnWWFYYUxQRGtaRzBIREpPbktXSHA1MUkwejVTT3V4OGUxV0F1WnpkSFFyVGtwOFRtalhvSStsYTB3R1pzenVicWJPM2lmUTZBL1c3dlZTWXNWM21SMEpLd2tLYzRXSGlCa21SOEkzQ0NnSTg3b09MNHF6VDVQK1JVSkJlakVPZ0FQSzhoWVB6YXRNK2VJVHAySU85eVRRbWVyb21QUnh4MXF4QWNzaWxlL3ViU2VFYmNXUUdZRUNnaGNMWTJIeUtqb2dqSDI1aE1wanBVdjFPdWdsaTRlaDJlUncwTzMyYkpqa3l1Q2dOemcwdnpsWU1TaVNzMHVvbzRNRzdoTU9qQ0VhWDF5RkUwblN2akJ6dVRuRXBLODZaOElvcUZBSXVidzhrZzlBckVhUkVXU1pJK2pINFhicDZnOUU5RW5KVDNvYVJ6RE4rTVVKQlFESG41NmE4b1VtRUJ1c094QnMvTjUrdEpFYlBrQUZEajhVR3ZPcy9JV3ZjU2dsR0JodlM3L0ZUWWZwV0dZZERZOGZQQXhXU0EzNXNUQzRwNCtMbTRBYXFJb1BlUXRmdWZLNkpoMFpoeGxic1VYT1NtWE5pZkQ1WlRBa3lEb2ZiYmNjbHhuQThXTkFxeENiUk55a2hYeFFwYUR3NjdmWFVZYnNpRzBLaHR2Mm9lSXZoOHJoUU1ZT2NFQXFYRy9lSSt6bmdPYzV5eHI4cTgySUFNMWMvRkxGT3BscXU1ZUZRWHJNWnpHY1ZDalliTFdHNUk0QlQxZXVScmxieHROT3RNaXREREVoTFhJSXluQUF2dU9FV0UzWDNOZEFmdDk0VmdhRzQyWElRdDBaWDZQZUNFL3FRRmU5cks2SHg3WVU1MEt2SDdmVzRmUytxN0tLQkp4c2dnQlg1cFNBR2gxaklyVmg1elE2dzNSZmFhaEJYbS9hQ2JDWlRqQ1VGVVR5V1pxVzlwNjJNakpQWFZxT3JQZ01PNE52NzRHa2Yrb3dmdE5WQkRRbmpGSnFIU3cxN3BYdmhXVzVLWnFlL1E0OU4vVVNUQ0FWV29RWEZJSEJIWFhlM0ZQclVEc3VHRG10Ri9oSEtUSHBla3hoaUFPUEkrU0pxNlM2SEY0STlZV3prQkpUbzQ2aVVNeldwOFBpci9SaWR1THhLWXNTa3NWOHZMbE9RdmhHWDJZbFIwT0JoQmpDK3UvZ0VjdlkwQXBLN1lrNDFOeGpQU1FuV0ZIVEY2NlVyamdldkI4Q3U1YStsMnZZU1JQdHVWRG83M2hoZE1TSG5VWDd0VGpzVlpHeEFsL1dwdGlPSUVRMWduTDI5bVg2L3RSMXRtbGtZajhXNFgrQ1NqV2NVREdZMU5wUy9DN2hTS3FpTUxNL2wyUW1TV1o3M0RkeitnaW84QkNFTllQUTQ2cW5rendYVWJxdkJreGpVUXNXZlpGZ2J1bzNyQWYrd043ak9POTAreW54NFBpM0wrMG5ZTDFTY2hEVWdBUDRnUFYvN0lkMXErMUhTaG11R2tJcVdSUGd5eE1GcVA4SGZqVG5qWHdZNWJRZmJKY3Q2T0l6S2dNSG90Ri9IZTFlZ3NheEhTcUc2d2ZkbVE1eDhOeVRGRnFCY3AyaVNvd0hSM3lrNSszNmhGN3ZYQUFBQUFFbEZUa1N1UW1DQyJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIwLTEyLTI5IiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZdWJpa2V5IEVkZ2UgKHY0KSIsImNlcnRpZmljYXRlTnVtYmVyIjoiVTJGMTAwMDIwMTUwNTIwMDAyIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjAifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIwLTEyLTI5In0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiY2NiODRiNWI1YjI3NDFkYjExMWIyMTFmODQ2MjRiY2Y5OWEyZTI2YyJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyJjY2I4NGI1YjViMjc0MWRiMTExYjIxMWY4NDYyNGJjZjk5YTJlMjZjIl0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJTZWN1cml0eSBLZXkgU2VyaWVzIHdpdGggTkZDIChDb25zdW1lciBQcm9maWxlKSJ9LCJkZXNjcmlwdGlvbiI6IlNlY3VyaXR5IEtleSBTZXJpZXMgd2l0aCBORkMgKENvbnN1bWVyIFByb2ZpbGUpIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTcyOCwicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoyfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCIsInJlbW90ZV9oYW5kbGUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURTakNDQWpLZ0F3SUJBZ0lVVG5iYkdJUjJOSHZ6cUlLRkFlUXdHMVhCaXMwd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JCSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVFZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU9zWGozazA0QmFuNFRZZHRaS3FEL09QSnh5RHlhUG1DQlVGVWlhWklnVHRlWm5qM1gyNURoZ3BaWlhzQzREMHlkSWNybEE2d05VSW5PUkwvTDl6QmJURUlNQVZNR282ZzdVS0FtYjJNRjZBSGJuaFlKZDllaWt1cFZOV1NoSE5ZTmM0R0JkTzFZTjZBZlVxdkpoSGJlM1Y0U05NUG1CUkVLSlBWejdUaHdnbWdnVGU4V3MySzAvd3NxdjJ3U0U3cGJDQnNVWmhJWDUxYlpNM3BxRHdKUFRtUkZFdnQwLzZ0RzVlTzhGM2oxNE9YcWZFaG1qbjFWdnhLRFlRT0xaQXhDd3dnQzBQNENkZld2M3k4UFNSOEkzNTRoTzFZK0d6Tmp2SXFYMzhOS0x5d3VJWUhGZXJPeE5seEVNQnZGaFlCdVJ1WUFra2dVYVBxTjZVQmhzSUxyc0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ0NvUkhoaXlObmJuWFJXSUw2WkJYb0JYOVlUTUI4R0ExVWRJd1FZTUJhQUZDQW9VQ0VicEZwYjZGUExuWjNGNVB4c0wzb2ZNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUNRRmFmSkkxLzVXZzlDRUVpbUUxUlA1NFJnUXdUTlRPT1FzTEFDVGUrckl0bEZRekM5WkRoclY4Mjh5WDdqenkrQUFzcDNpeks3VDF0aDJkbDdtK3R1MHN3MlBhL29sYzAybnQ2UHlJdzM0OGdhSHpoSTErMEtFNDVxeHZGRGVMMmxNeGJQZkNZdnlFRWFZemppUUVMVTU5NTFwWEdXeUtNYS80Zkx0TytaS09YaE11VmVxNHJYRFBJNTRXNkpIT2lBYWlLZGl3KzVlM2Mya3QvakZJUXRNNnZNWGc5TE5GemRqRVROdDIwVlg5UWV2UnBGWmZ1Y01HOXdDYVFEb0ZsUHpwVE1KS2hQZXYvaW1KbVpZaEtmcjBsTGNlbXRxakl4TEFvcVpkT1lmSEJnNit2QWNkUEkvaWF1R3BVQXY3WCtVS05tRHdqWjJCYUg0c0x3aEIybSIsIk1JSURTakNDQWpLZ0F3SUJBZ0lVUjM4bXEyNlNmMnN6VlYyQmRHNldFTjdrdVdVd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVJZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU5ZMFdiOW9Qb1JvS29ReVdQYUpwejExdnJXVGc2elR0bU5qMlZvS1JueXZLR1JxcHpiODN3NWw2WUE5NlVZa1lCRFFQMGlsTzJEUGU2d1dxVlI1ekRmUnpkY0g4YmgrTDdkR0d2YWU2aFJUWmhrRmtDcFhEczRIY2NrbnJEZjhGQ2xKN0hlMzlKZjQyL0cxUW0yeno5V1dtclBYdGdpSy94MDVHanNRZkd1REcxemY1UVRVVWllOGx3eW1LM1RmZE92TmVlSkFBUGUycG43SXRmUmIrclZyTldpRHpsUm4ydk5uWjJ3UG80d0gvV0o2ZGhYWkcrck1XVCthNkJvY2cxVWZJdzZrZHVuRzRiVHBaenN2YWNGWXlSMG1wZitEZU9ucFNXQW15d0pXSHZUbGYyWVh4RnllWGNUQUNkUWxjTU5HSjJWaFpRNDh4dFA1L1JCUC84a0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ2h5NDJva2lxY1RTMWlxYS9IUldqa0JuNEgvTUI4R0ExVWRJd1FZTUJhQUZPcTNRcENlREh0a2V0dFVmQU82ZkU2ZjJLRmhNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUFuK1JISVBidE1FRE5kVDFnOEgvUml0QWtVZExnQXQxdFdHV25sajlrbmJ2NC80R2xYN0M5cDQ1ZWZQTzkvYVpMNk9WMVhSS0JpNkttdEJXNUs3bnVZRW5NeC81QnFCU2JMVDdyaGR1QzQ5VEJlTWI5UEhkWHNUbFNWTlllZnIxZEdpZHI0ajB4VkJRTGIxcmtuREFiZFdEektmdm5heUtPOEZyd2U3SHg4NDNNRy9ySitjMFhydVV2YmZWVENITGlJV2hNN29ORGhMOHhvYjZ4VW85S0xLY1NMK0l0WXNPMy85V2I4UTlHanNxTDRGWHNEY0cxU2FZaDdLcGZ1TW1PaXhxekpaTzJuSWljUFlSZzFJMlN1aVVmWU83MHRtZEhjYmwra1NRbVNZdDdycTR2aUlMZzJHeDNqOXJJVHVXVGpiYVVhU1NReGdPbU1TSHV5ek1BQyIsIk1JSURQakNDQWlhZ0F3SUJBZ0lVWHplaUVESkVPVHQxNEY1bjBvNlpmL2JCd2lVd0RRWUpLb1pJaHZjTkFRRU5CUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTVo2L1R4TThySVQrRWFvUHZHODFvbnRNT28vMm1RMlJCd0pIUzBRWmN4VmFOWHZsMTJMVWhCWjVMbWlCU2NJWmQxUm54MW9kNTg1aCsvZGhLN2hFbTdKQUFMa0tLdHMxZk81M0tHTkxadWp6NWgzd0duY3I0aHlLRjBHNzRiL1UzSzloRTVtR05ENnpxWWNoQ1JBSGZyWU1ZUkRGNFlMMFg0RDVuR2R4dnBwQXk2bmtFbXRXbU1ud08zaTBUQXVjc3JiRTQ4NUh2R000cjBWcGdWZEpwdmdRamlUSkNUSXErRDM1aHd0VDhRREl2K25HdnBjeWk1d2NJZkNrenlDaW1KdWtoWXk2S29xTk1LUUVkcE5pU092V3lETVRNdDFid0N2RXpwdzkxdSttc1V0NHJqMGVmbk85czBaT3dkd01SRG5INHhnVWw1Wkx3cnJQa2ZDMS8wQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQjhHQTFVZEl3UVlNQmFBRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRTXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJEUVVBQTRJQkFRQzNJVy9zZ0I5cFo4YXBKTmp4dUdvWCtGa0lMa3Mwd01OcmRYTC9jb1V2c3JoenN2bDZtZVBNcmJHSkJ5SjFYbnF1QjVzZ2NSRU5GeGRRRm1hM21pbzhVcGYxb3dNMVpyZVhySjBtQURHMkJwbHFiSm54aXlZYStSMTFyZUlGVFdlSWhNTmNaS3NEWnJGQXlQdUZqQ1dTUXZKbU5XZTltRlJZRmdOaFhKS2tYSWI1SDFYZ0VEbHdpZWRZUk03Vm9sQk5sbGQ2cFJGS2xYOHVzdDZPVE1PZUFEbDJ4TkYwbTFMVGhTZGV1WHZEeUMxZzkrSUxmejNTNk9JWWdjM2lyb1JjRkQzNTRnN3JLZnU2N3FGQXc5Z0M0eWkweEJUUHJZOTVyaDQvSHFhVVlDQS9MOGxkUms2SDdYazM1RCtXVnBtcTJTaC94VDVIaUZ1aGY0d0piMGJLIiwiTUlJRFJ6Q0NBakdnQXdJQkFnSVVleDluVDl2d1pOWFM0ODNMZGlZR2Z3MlNqU293Q3dZSktvWklodmNOQVFFTE1DNHhMREFxQmdOVkJBTU1JMWwxWW1samJ5QkJkSFJsYzNSaGRHbHZiaUJKYm5SbGNtMWxaR2xoZEdVZ1FpQXhNQ0FYRFRJMU1EZ3dNVEF3TURBd01Gb1lEems1T1RreE1qTXhNak0xT1RVNVdqQW5NU1V3SXdZRFZRUUREQnhaZFdKcFkyOGdSa2xFVHlCQmRIUmxjM1JoZEdsdmJpQkNNaUF4TUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUF1MU1ldm55OWR5TzlaVUMzOVNvTWhMY1IvRFhydEYvY2lNMTJ0Y2l5MkVYQVo2TWtyaXZWdENmRVZNOVg2SVNURW5CUDZ1U1lZb3Y2cHB2Nk82SmgyTkhtWW00dytKblM0Vm5DUFU3bUhBTWZWSTJNR1RUTVZPZXcweFVzRzdzSVNJa0lEVUJtdWs4WUs5YzV6aWM5K3ZGUUdMSWtzZFhPNWlWRklnTkc1M2NHWEQ0Wkxab0FQaXUwUEVvenhBcVlJYUk0Z3hLaE9BM1M4L1c4bUlXc3U2b2Z5ajRHdmtGRzZaN2t5RjMxMDdQN213RkhMckkzRU5hUFdNT0ZjVGFHYTBkdysvdlZSd2pSY0VaQlZzdXVULzg3Y2tTczBhNXBrdDN2WkJsYVllVDhwelNyZVY3bW93Y0lNOTBMMmlhQVRsUDBueG1hRTZuT3lUYm9qRlZsMndJREFRQUJvMll3WkRBZEJnTlZIUTRFRmdRVVNYRWgzc2EzYnREdXJtNE1NL0M3UzFsUnV1WXdId1lEVlIwakJCZ3dGb0FVNnJkQ2tKNE1lMlI2MjFSOEE3cDhUcC9Zb1dFd0VnWURWUjBUQVFIL0JBZ3dCZ0VCL3dJQkFEQU9CZ05WSFE4QkFmOEVCQU1DQVlZd0N3WUpLb1pJaHZjTkFRRUxBNElCQVFCNUdjM2hhZnRwN2hLc0Vac28raS9aNW5SdXFkbXpHMldDbFVvUlVxYmFQeWdsbkpEaktSL2tmZ09sNmliYkYvenRobTNLbVhRN0hjRElQMnhNZEc3VTJMMmltYkpRSHFQZi9oMkhxb2piNHJaZ3VlKzZXNGt0U1I1ZWxSOUwxcllxRS9TR1lNNGlFS29WUVN2N1JUMXJ4SWVXaUtzdy9WeHhpL1FPbnN4M0Y3eDgwQ0NZZ0I0RTN5UXg4VlRXNDQwaFRFd1RBMWVNSE9peDMydFB0eXlISWE4UFZWSWZWcEhRSkJhTVZ2djUwOFVFandrYlUycm5qZnpvU1ROUzlBNWpVUThtQlN2ZTk1cmpCMGRvOThFVStEeGRCcVgyK0g2aTV3bElDRmd6aGR6Y3NuZTloR0tUNmx6VFg0Y0lkSnNyWTIreGxlSzBGRlF5NmxHRVZMRWUiLCJNSUlEU0RDQ0FqQ2dBd0lCQWdJVURxRVJ3KzRSbkdTZ2d4Z1Vld0pGRVBEUlozWXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFESTdYbkgrWnZEd01DUVU4TThaZVY1cXNjdWJsdlZZYWFSdDNZYmF4bjlnb2RMeDVzd0gwbFhyZGdqaDVoN0ZwVmdDZ1lZWDdFNGJsMXZielVMZW1yTVdUOE4zV01HVWU4UUFKYkJlaW9WN1cvRStoVFpQLzBTS0pWYTNld0tCbzZVTGVNbmZRWkRyVk9SQWs4d1RMcTJ2NUxsajV2TWo3SnRPb3RLYTlKN25IUzhrTG16WFhTYWowU3dFUGg1T0FaVVROVjR6czFidm9UQVFRV3JMNC9KOVF1S3Q2V0NGRTVuVU5pUlFjRWJWRjhtbHFLMmJ4Mno2b2tWbHR5RFZMQ3hZYnBVVEVMdlkxdXNSM0RUR1BVb0lDbE9tNGNycHduRFJMVkh2alllUEdCQi8vcEV5enhBL2djU2N4andhSDFaVXc5Ym5TYkh5dXJLcWJUYTFLdmpBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlRxdDBLUW5neDdaSHJiVkh3RHVueE9uOWloWVRBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBcVFhQ1dNeFRHcVZWWDdTazdra0ptVXVlVFNZS3VVNitLQkJTZ3dJUm5sdzlLN0hlMUlweFowaGR3cFBOaWtLam1jeUZnRlB6aEltd0hKZ3h4dVQ5MFB3M3ZZT2RjSkpOa3REZzM1UFhPZnpTbjE1Y0ZBeDFSTzBtUFRtSWI4ZFhpRVdPcHpvWHZkd1hETTQxWmFDRFlNVDd3NElRdE15dkU3eFVCWnEyYmp0QW5xL05EVUE3YmU0SDhIM2lwQysvK05LbFVyY1VoK2o0OEs2N1dJMHUxbTZGZVF1ZUJBN24wNmo4MjVycURxc2FMczlUYjdLQUhBdzhQbXJXYU5QRzJraktlcnhQRWZlY2l2bEZhd3AyUldadnhyVnRuM1RWMlNCeHlDSkNrWHNORDA1ZENFclZIU0pJcytCZHRUVk5ZOUF3dHlQbW55YjB2NG1TVHp2V2R3PT0iLCJNSUlEU0RDQ0FqQ2dBd0lCQWdJVVVjbU1YelJJRk9nR1RLMFRiM2dFdVpZWmtCSXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFEbTU1NWJXWTlXVyt0T1kwcklXSGxkaCthTmFub0NaQ0ZoN0drM1laclFtUFV3MGhrU0c2cVlIUXRQK2ZaeVMzM1ZFcnZnK0JRcW5tdW1nTmhmeEZya3dFWkVMZWlkQmNDOEM0QWc0bnFxaVBXcHpzdkkxN05jeFlsSW5MTkxGY1pZLytnT2lONlpPVGloTzUvdkJaTWJqOXJpYUFjcWxpWW1OR0pQZ1RjTUdhRUF5TXpFTU55Mm5tNkVwK3BqUDVhRjZnaTIxdC9VUUZzdUoxajJSai95bk0vU2RSdCtlY2FsNU9Zb3R4SGtGYkw5dnZ2MkEyT3Y1SVRaQ2x3NGJPUzlucHlwUWltT1o1UUFZeXRtWWFRcFdsL3BNWXo2elNqOFJxa1ZETkVKR3FOZlRLQTJpdkxZd1g2bFN0dE1QYXBnMEo4NGw5WDB2b1ZOL0ZwUzRWQ1ZBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlFnS0ZBaEc2UmFXK2hUeTUyZHhlVDhiQzk2SHpBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBWU16Z0xySkxJcjBPb3ZRbkFaclJJR3VhYmlIU1VLU21iTFJXcFJrV2VBdHNDaERFSHBYY0ovYmdETktZV29IcVE4eFJVakI0Q3llcFlldmMzWWxyRzhvN3pIeHBmVmNhb0w1U2V1Smt6SHhLbjRiVGFTcDkrTXZ3YW1ucDY0a1pNaU5iRkxrbmZQOWtZS29SSGtNV2hlUkoxVXNQMXo0U2Nta0NlSUxmc01zNnZxb3ZxaldDbEZzSnBCY3NsdVlIV0Y3YkJKMW40UndnK0FURW9wWTRJZ0d2Nlp2d2MrQTlyK0FUMmhxcG9Ta1lvQWwrQU5Zd2dzbE9mOXNKZTBWK1RBOVlZL1VsYUJtUFBUZDAvL3I5d3ZjZVBXWmtQaktvQUMvelVOaGZEYmg0TFY4R0hzM2x5WDJYb21ML0xOYzhKWXp5SWFERWhHUXZlb1BoaC90cjFnPT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsImljb25EYXJrIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwicHJvdmlkZXJMb2dvTGlnaHQiOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJwcm92aWRlckxvZ29EYXJrIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09In0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjYtMDQtMjUiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NzI4LCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IlNlY3VyaXR5IEtleSBTZXJpZXMgd2l0aCBORkMgKENvbnN1bWVyIFByb2ZpbGUpIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVMkYxMDAwMjAyNjA0MjUwMTIiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblByb2ZpbGVzIjpbImNvbnN1bWVyIl0sImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjYtMDQtMjUiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NzI4fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI2LTA1LTAxIn0seyJhYWd1aWQiOiIyMzMxNWFkMC02YWNhLTRiYTEtOTUyZS1mMDQ0ZjFlMzY5NzYiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjIzMzE1YWQwLTZhY2EtNGJhMS05NTJlLWYwNDRmMWUzNjk3NiIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJDbGlmZSBLZXkgMiBORkMifSwiZGVzY3JpcHRpb24iOiJDbGlmZSBLZXkgMiBORkMiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MjU3MCwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9LHsibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQnpqQ0NBWFdnQXdJQkFnSVVFVjJ1WTBWMDFqcWJYUEVqTWZZekNlKzVWQnd3Q2dZSUtvWkl6ajBFQXdJd0lERWVNQndHQTFVRUF3d1ZRMmhwY0hkdmJpQkdTVVJQTWlCRFFTQXdNREF4TUNBWERUSXpNRE13TnpBek1UZ3dORm9ZRHpJd056TXdNakl5TURNeE9EQTBXakFnTVI0d0hBWURWUVFEREJWRGFHbHdkMjl1SUVaSlJFOHlJRU5CSURBd01ERXdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBU2NJMVRqVUxPVU9MT1N2Skk4aVg3amxqL3NhMWdpT2RCRXEyMFc2d2tYbnp4UUo2S2cxTnVvaHNlK2lJUzQwcU1DeXkzQXBhWnh3TlIrLzI4VkdtUHdvNEdLTUlHSE1CMEdBMVVkRGdRV0JCUXo4OUpRWFR4YnlqU2xTMzVtc1BIN2F5aUdlekJGQmdOVkhTTUVQakE4b1NTa0lqQWdNUjR3SEFZRFZRUUREQlZEYUdsd2QyOXVJRVpKUkU4eUlFTkJJREF3TURHQ0ZCRmRybU5GZE5ZNm0xenhJekgyTXdudnVWUWNNQThHQTFVZEV3UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdFR01Bb0dDQ3FHU000OUJBTUNBMGNBTUVRQ0lEd2g4U0FzSXRRS2FLdGExa3QyYnYycHJ2RjVVdFdBa1RWMGVnOGtMZkxLQWlBZ2V4OXhwS0dDTFBlaSs4VHVFa3h5S1FDOUY2N3Q5NkhWdlFQRSt1VWZCUT09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQVRBQUFBQ3dDQUlBQUFBSFhxWElBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFBN0RBY2R2cUdRQUFCRHVTVVJCVkhoZTdaMzdieDNsRVlZVDMyTW50cE5nVEc0NGNlemNuTmhKYk1jWEhJSkVnYW9xUmRBaVZSVUNTdFVXa0hvQlVWVlZJWUNVcXFHa3YvU0hsbFpJdEZLTG9QK2srM0crMTl2TmE1L2p2Y3pzenA0emp4NmhKR2QzM3RuZEdVN2lPUGFCYmNkeHpPQUw2VGlHOElWMEhFUDRRanFPSVh3aEhjY1F2cENPWXdoZlNNY3hoQytrNHhqQ0Y5SnhET0VMNlRpRzhJVjBIRVA0UWpxT0lYd2hIY2NRdnBDT1l3aGZTTWN4aEMrazR4aWlSeGZ5MnZ6UkgzMW45dDNYRmo1NisvcDdyeTk4ZStzVVhuQ2NXdW5taFp3NU1mYmZQejlWMGcvZVhFSTV4OUduMnhZeXZOM1JSc202dGppRkpNZFJvRXNXa3RhbUdwSHRPSEkwZXlGcFErcnk2dHdrR25LY2NqUnlJU2VQRE5GS0dCSDlPVTVSR3JhUUx6OTNsbmJBb09qVmNmTFRtSVY4ZHZNa3piMXgwYmZqNUtFWkMwbXozaUJ4QVk2VERlc0xTZlBkUkwvNjlBNHV4bkgydys1Q0RnMzIwV1EzV2x5VjQzVEU2RUxTTkhlSC9sYnA3SXZGaGFRNTdqSnhrWTZ6RjdZVzhxL3ZyOVA0ZHFXNFdzZlpoYUdGcEtudGJuLzF5aFZjdHVPa3NMS1FOSys5NFAxZkwrUGlIV2NIRXd0Sms5cFQ0aFk0VG92NkY1SUdOS000T1NkLysyQ0Q2bGdRelRsTzdRdEpvOW5CUjQrTjRCdzVLS0pHMFpEVDg5UzVrRFNVZTRwREgyWng0Y3FUbXh2RlJJbUhvZEJhUkN1VnNIVHgyTXZQblgzOWhia0g3NjFTRzUyZE9UR0dFajBHVGRHTnhXdDRRWnJhRnBLZU5JbURVdHplV0tlYlVsNlVUa0Z0VkN5YUVJVWlwSHp0aFRrRWRDL0hqeDJsZ2RsVEhDMUVQUXRKVHpjdGp0aGhmV1dacmw5RGhPMUFMVlhtYjM4aS8vL2Q2ZU9IS0VYUWM2Y09JNmE3bUJnZnB3blpWNXhabWhvV2toNXFJbDdlZ1M2NEdwSGRndHFyUm1TTFFoSGlJcVpib0pISUpVcVVvT3FGcEdjWnhXczcwRVZXTC9wb1FhMVdJSUxsV0Z1Y29naHhrZFI4YUJJS2lFSkZxWFFoNlNsRzhWb0x1clo2UlU4dHFHZHRrU29IMWRjUVNVMkdCcUN3S0ZlSU9oY1N2OXFDTHNtSWx5L01vNy90N2ZkL3ZrVDlxNHBVSWY3MWh5MnFyeUhDbWdrOStwS2lhSDZxVzhoMkQyOXQrU1pkaktBelo4NGdwajBidDFicExCTEh0YUNyVUJXUlFsQnhKUkhXTk9pSmk0alNPYWxvSWRzOU5yb0dLVkc5S0ZRdGlCZGEwTFhvaVR3aHFMaWV5R3NPOUt5bFJQV2NWTEdRRTRjSDkzeGdkQUhsUlYxUmt1THJxeXY0SmQvSmppS3NPU1NQV0Z3RTVLR0toZHo5dE1wOHFzMXVOMit0eHJLcXhDejhwSms3U1pYMVJGNFRTS1pJUTJUa1FYMGhkejhuYXJxTVcrdHJzV1psaEZEOHFKbHZPRlJjeWY2K2c4Z3pUM3FjTkVSTVpxcGJ5UGhUYXJlTXNXRDFyRnkvamg4MWNDZXBzcDdJTXc4TmxiaUl5WXp1UXRMam9WNExHNnRaNE5UMGFIS05lajY3ZVJKNUVsQnhKUkZtbTNNemo5Tm9pWXVrekNndTVQTlBuVWsvRzJxMHNMR2FIWklSVkJWaEVsQmxQWkZuR0JvdERaR1VHY1dGVEQrVnE1Y3ZVYU1GbkpzOUY2dFpJeGxCVlJFbUFWVldFbUdHb1FIVEVFbVowVnJJZjN5NG1YNHExR1VCWXgyYi9QUUhGNUlwMUJOaEVsQmxQWkZuRlpveERjZkdSaEdXRGEyRlREOFBhckdBc1k1bGtoRlVGV0VTVUdVbEVXWVZHak1OaDRlSEVaWU5sWVg4N080M1g3b20vcGo2SzJDc1k1LzBJQ3FKSkFtb3NwN0lNd2xObW9aSXlvektRb2JIOE1mVzF6aWs1Z29ZQ3phQzlCVHFpVEFKcUxLU0NETUpEWnVHU01xTS9FTEdUNVNMUDZibThocUxOSWowSUNxSkpBbW9zcDdJczBmNEF4Nk5uTGhJeW96OFFpWVBnRHJMYTM5L2Y2elRJQWI2RDZZSFVjUHA0NGNRSmdFVlZ4SmhKcUdwRXhjeG1kRmFTR3FyZ0xGYTQwZ1BvcEpJa29BcTY0azhlOURVaVl1WXpBZ3ZaSExycWEyOHhpSU5KVDJJR2c0UFNmN2VnWW9yaVRCN3FINnlEakx5b0xLUTFGWmVZNm5ta2g1RUpaRWtBVlhXRTNuMm9QRVRGQUY1a0Z6SWd3ZFJqZHJLNWVEZ1lDelNhR2dXeFYyOStnaVNKS0RpU2lMTUpEU0VJcUowVGlRWE10NTBhaXV2c1ZUVGVXYmpaSG9XTlVTU0JGUlpUK1RaZzRhd3ZGT1BIRWZwbkFqL2xqVkFuZVVTSmJvQ21rVnhUMHo1aDFzbG9WRXNLWXJtUjNnaHFhMjhva3EzUU9Nb0xtSWtvTXA2SXM4a05JMkZSYmxDR0ZwSWxPZ2lhQmJGOVErM2lrTXpXVUFVS29ya1F2YjE5VkZ6dVVTVjdvTEdVVnpFU0VDVjlVU2VWV2dzc3pzNU1ZNFNKWkJjU09vdmx5alJkZEFzaW9zWUlhaTRrZ2l6RGMzbnZ1SzAwdmhDcWtQaktDNWlKS0RLZWlMUFBEU2x1OTFjdTRWRGhmQ0ZWSWRtVVZ6RUNFSEZsVVJZbzNqODlPbjExWlViaTlkRWZtdmFEckdGcEFYTEpVcDBMelNPNGlKR0FxcXNKL0tjaC9HRnJBS2FSWEVSSXdRVlZ4Smh6c1A0UWxZRWphTzRpSkdBS3V1SlBDZUZMMlJGMEN5S2l4Z2hxTGlTQ0hOU3lDemswdFVGMnJIc0hwMmNSSlZ1aDhaUlhNUklRSlgxUko2emc4eEMwbzdsRWlWNkFKcEZjUkVqQkJWWEVtSE9EcjZRbFVMaktDNWlKS0RLZWlMUGFlRUxXU2swaStJaVJnZ3FyaVRDbkJhK2tGVkQ0eWd1WWlTZ3lrcCsvZUFPOGh4ZnlPcWhjUlFYTVJMYys4VU5LcTRrOGh4ZnlGcWdjUlFYTVJKUVpTVS8vL2dKNVBVOHZwQTE4TVc5TFpwSVdSRWp3WGZ2bktiaVNpS3Y1L0dGckFjYVIzRVJJd0ZWVm5KK1J2RXp0aHVFTDJROWZQWHBIWnBJV1JFandkcy92RVRGbFVSZWIrTUxXUnMwanVJaVJnS3FyT1RveUFEeWVoaGZ5TnFnY1JRWE1SSjg4dTR5RlZjU2VUMk1MMlNkMERpS2l4Z0pxTEtTQ0pPRGhrM1E2YWtwWklqaUMxa25OSTdpSWtZQzdZOE1KeUt2TkRSbTRpSkdtdm9YOHNxbGk2alNrOUE0aW9zWUNhaXlrZ2dyd2R6c09ab3hEUkVtVGYwTEdVU1Zub1RHVVZ6RVNLRDlrZUZFNUJWaVlHQ0Fwa3REaENrZ3M1QUI2amlYS05HcjBEaUtpNWpTaENkRmxaVkVYaUhTYzZVbndoVHdoYXdmR2tkeEVWT084MmZQaGlkRmxmVkVhazdTUTZVbnduVHdoVFFCamFPNGlDbEI4ckNvc3BKSXpjUDY2a3JTcEtySTA4SEVRZ1pScFZlaGNSUVhNVVZKUHltcXJDZXlNNU51VWsrRXFTRzJrTXRMaTlSNkxsR2xWK252UDBqaktPdVhuenlKcEVMUXc2TGlTaUk3RzlTaG5zaFRRMndoQTlSNkxsR2loNkZ4RkJjeCthRW5GYVRLZXFLRC9kaGFYNk1PbGV6djYwT2tHbFlXOGducDc1SFFPTDcvclJrYVIxbi8vbUdSLyt2UlkwcWs0a3FpaWYyZzN2UkVuaVpXRmpLSUtqME1qYU80aU1rRFBhTkVxcXduK21nUE5hYm56YVZGUkdvaXVaQUJ1b1pjb2tRUEUvNmtSK01vNjkyM2xwQ1VEWHBBSkJWWEVxMjBJZjVsVERVaVVobXhoYnovem5MNEwxMURYbU9wWG9iR1VWekVaSU9lRGttVjlVUTNlMEV0cVlwSVpZVGZJVXQrR2lHcTlEQTBpK0srOGRJOGt2YURIczJlVW5FbDBkQXVxQmxWRWFtUDVFS0dlM2Znd0FHNmtyeWlWZytUbmtVTkVkTVJlaWp0cE1wNm9xMkhvV1pVUmFRKzhndDVlMk9kTGlhWHFOWERwQWRSd3l3ZmJxV0gwa0VxcmlUYVNrRnRxSXJJU2hCZXlNOC8zdlEzeWZLa1oxRkR4TFNCSGtkbnFiS2VhSzdGK3NveXRhRXFVaXRCK00rUTRjYUZoU3ovRjdVbzE2dWtCMUhEdTIrMi9YRHJ6Sm5UOUN6MmxZb3JpZjVhVUFPcWpvMk9JclVTNUJjeTZHK1M1VWtHVVVuRTdJSWVSQmFwc3A1b3NYdC92eHJRV3NpUjRXRzZzTHlpWXErU1RLR1NiN3k0eDRkYjZSRmtsNG9yaVM1YlVBTktibGIrQ1dUQ0N4bUk5Njc4bTJRUUZYdVZaQkNWUkV3S3V2L1pwY3A2b3RHcUZoSmhGYUsxa0lNRGZiNlRKVW1tVU1sbk5rNGlxUVhkK2J4U2NTWFJhd3RxUUVNa1ZZajhRZ2JpdlFzTE9UODdTMWVZMTBlbkhrSFIzdVAyOG5ReWlFb2lLV1NWKzh1cUlGWFdFeDNyTHlSaXFrVnhJWU05OVNiNTZ2Zk9KeGNldmJQeUdGNHJDaFVVOS9Mc1JBeWllMTVNS3E1a2JEaENEY2lLakdwUldjaEF2SGMzTHgvdmtaMU14bVZQY1ZCK3FJNkdTSklZYnFxc0p6cldYRWdFVkk3dVFnYkRRb3JzNUpIRGgxSGFIak1uRHlmWDIwRWNuUk1xSXU3a2thRVlSRGU4bUZSY3lkaHc0TkRJQ0RVZ0pRSXFSMnNoQThudGs5ckpJRW9iSTduU0xPS2N6TkRwR2lMSjN5UjNST2s2cUdJaGcyRWhUNTU0akM2N21LaHVodlJsWmhjblo0UE9GYmUvLzJBTW9sdGRUQ3F1Wkd3NGNPWGlSV3FndkNoZEI0b0xHVWpmUWFrM3llRHdFSDZYVlR2cEM4d3JTbVNBVHRRUVNmNG11Ymx4WWU0ODZ0YUI3a0lHa3R2M3ozdGJnanNaUkVEbEpKL2NtRnhhWVdPZExOQ0o0aUpHWXJnM2I2MVNjU1hSc2ZSQ29taE5WTGVRd2ZqWkFySmYwQll4VlpFa3BxK3JqTEhhdnRCWkdpS3BPVytTWDl6YlFzZWlPNG1LTmFHK2tJSDBUUndhL0dZbisvdjc2UzZVRkVscWpJNk9wb1BTVjFUZVdMTXpDK2NuNlN4eGtTUXgzT3ZMMTZtNGt1aFliaUZScmo2cVdNaEEraVpldjNRcy9pTGRpL0lPRFE3R3lsS01qV0VQby9FWDA5Y2laYXpjR1RwRlF5UTE1MDBTN2JhZ0JvcUpXdlZSMFVJRzB2Znh5ei9oQzJuVDdaQnlvY1Qzbkx3NFAwZlZncmMzMXVPcjZhdVFOZGJ2QUIydklaSWtuc3Z0dGF0VVhFbDBMTkV6Q3RWS2RRczVNdHl2ZHl1ek9EODdPejAxTlRFK2Z2elkwU3NYTDlDckhVU1graXVCbVBiUThSb2lTZUtoVUdVbFIwY0cwSEhwbmxHbFZxcGJ5QURkeWlCZXFHb244M3BqOFZwczc4RjdLOVM1a2pHdUhYU3doa2lTZUNKSHhnYXB1SkxvdUZ6UEtGRTNsUzVrZ0c1bEZLOFpXMHYwVk1rYUpONzc1VTJrdG9HTzF4Qko1UjVIL040UVZGbkoyRzJFMnNndXpxK2JxaGN5UUhjeml0ZGEwSjJxWHZSUjdTcEcxeGVua04wR09sNURKRW04NGN6UGpGTnhKV05jZ05ySUtFNDJRQTBMR2FDN21ZaVhXOUF0cThESHBoOUY5dmIyMCtzbnFMY0t6UElGR3NQRzBsa2FJa3ppRFljcUs0bXdGdFJKRm5HbUFlcFp5QURkMExRNG9rVmZYeC9kTzNHbnB4NTZVN3I3MWhMMVU1bm9ZRC9vTEEyUkpQR0c4OHpHU1NxdUpQTHk5engvZmhabkdxQzJoUXpRRFNWeFVBcTZqMlZjWExpQ29pbW9nU3I5VDU1dnFFcm5Lb2t3aVRjY3Fxd2t3bHBRUDUzRk9UYW9jeUVEcnp6UC84cWVmT2ZWUFRZbmNHbCtubTVyQnk5ZjZQUU5MU2l4ZWo5Nit6cGF5UXhWMEJCSitSY1NwNlY0NDZWNUtxNGs4bndoUzBLM3RaMDR1alJqaHdhb2NvMk9IeTd5MlVWVVJFbUVTY3czVlZZU1lkdmJvNGNPVVZmdHhBbG1NTEdRQWJxeldSd2U2c2ZKN1RrMVBmcVgzNjNSaVhaRWw0V2dVaG9pS2M5Q1RveVA0NXlIK2YzUEZxbTRrc2pMM0RPT05vT1ZoUXpRbmUxNmNkbEZvV3BLSWt4aXZxbXlrZ2piM2w2NGZJbDYyeTBPdFlTaGhZelEvZTFXY2JYbG9Kb2FJaW5iUXE2dGZQTk5lenRBeFpWRVdJYWVjWndsekMxa2dPNXZsM243NWpTdXN6UlVXVW1FU2N3M1ZWWVNZZnMxaklPTVlYRWhJM1NYdTBOY214eFVYME1rQ2IzaFVIRWxFZGF4Wnh4aERMc0xHZmpxMHp0MG81dnJFemYrLzJsQXNsQ1Foa2dTbW04cXJpR1MyamM4TVg0RVJ4akQ5RUpHNkY0M1VWeUpEcFNsSVpLYXM1QkJoTFhwR2EvWm93RUxHYUhiM1JUUnZUSVVxaUdTaE9hYmltdUlwTDBhM2xwZncydjJhTXhDUnVpbVd4WWRWd1dsaTRzWXVUY2NxcThoa25iMWpGODFTY01XTWtMMzNacm9zbktvRFhFUkl6ZmZWRjljeFBoQ1ZzUHh5V0Y2QVBYNjlZTTc2S3dtSmc3ci9ndDl4SWpPTjBXSWk1aFV6L2k1VlJxOGtHbm9NVlFzbXJBQjlTWXJNcVRubTFJRVJZQXZaRjNRODlEei9qdjdmRlpLalZDcmdpSmdlL3Y4MmJPeTgwMUJnaUtndFpQNGtXRzZiU0hUMElNcDc3L3Y1L2hYaS9XaTl4VVBFTkNhNzc2K1B2eEVDTW9TRWFWOUlRM3kyZDBjWDV2d056KytpdE1heTlUUkVicW84cUwwOWpaOXBRVkJCZ2Y2S0xTa3FOc0VlbXNoZTV3WG4zNmNKblZmWDM5aHJ0aS8ySFNLNFF2cE9JYndoWFFjUS9oQ09vNGhmQ0VkeHhDK2tJNWpDRjlJeHpHRUw2VGpHTUlYMG5FTTRRdnBPSWJ3aFhRY1EvaENPbzRoZkNFZHh4QytrSTVqQ0Y5SXh6R0VMNlRqR01JWDBuRU00UXZwT0lid2hYUWNRL2hDT280aGZDRWR4eEMra0k1akNGOUl4ekdFTDZUakdNSVgwbkVNNFF2cE9JYndoWFFjUS9oQ09vNGhmQ0VkeHhDK2tJNWpDRjlJeHpHRUw2VGptR0Y3KzMrcVlNSlpwZ3g1dGdBQUFBQkpSVTVFcmtKZ2dnPT0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJjcmVkQmxvYiIsImhtYWMtc2VjcmV0IiwibGFyZ2VCbG9iS2V5IiwibWluUGluTGVuZ3RoIl0sImFhZ3VpZCI6IjIzMzE1YWQwNmFjYTRiYTE5NTJlZjA0NGYxZTM2OTc2Iiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibGFyZ2VCbG9icyI6dHJ1ZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjp0cnVlLCJhbHdheXNVdiI6ZmFsc2V9LCJtYXhNc2dTaXplIjoxMjAwLCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjIwLCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjEyOCwidHJhbnNwb3J0cyI6WyJ1c2IiLCJuZmMiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fV0sIm1heFNlcmlhbGl6ZWRMYXJnZUJsb2JBcnJheSI6MjA0OCwiZm9yY2VQSU5DaGFuZ2UiOmZhbHNlLCJtaW5QSU5MZW5ndGgiOjQsImZpcm13YXJlVmVyc2lvbiI6MjU3MCwibWF4Q3JlZEJsb2JMZW5ndGgiOjMyLCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6MSwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjUwfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMTItMDgiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MjU3MCwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJDbGlmZSBLZXkgMiBORkMiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI1MTIwODAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUHJvZmlsZXMiOlsiY29uc3VtZXIiXSwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0xMi0wOCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyNTcwfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTEyLTE5In0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiNGUyOWRmMDVhNTljMTdhNzNjN2VhNjRhOTRmZGZmZjFmOWU5YWUwZiIsImJmMTIzNjVhZmNiMTRkM2RkODIwYmU3ZWM0YmUxNjNjYjdjODVkZTAiLCIxNmU3NzQ5NjQ1MGIyMGMzMmMwYmRlYzJhMjRiMjkxN2JmMTgxNWYzIiwiODU5ZGYwNzc0MTI5ZjAyYmM0MWJmYmE5MWYzY2JhMjcxZGE3Yzg2NiIsImVjOWY3MDk4NzhkZDE0ZGJiNjc2YmJlNDlmMTQwNWVjNzcwZDAyZjAiLCIyY2MxYWZiYWUwODU2OWE1ZGUwODg5ODI0ZTVjNDA0ZDM1NzIxYWQzIiwiOGU5MDAwMzdkMDk1YWQ3YThhZGE2YzRjMTgxNDNiN2RiZWI0NDY3NCIsImI4ODAyM2YyNTQ1ZmRkNmVhNjIwNjBhYjg5ZDMzMjk0MTMyYjliYzkiXSwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiNGUyOWRmMDVhNTljMTdhNzNjN2VhNjRhOTRmZGZmZjFmOWU5YWUwZiIsImJmMTIzNjVhZmNiMTRkM2RkODIwYmU3ZWM0YmUxNjNjYjdjODVkZTAiLCIxNmU3NzQ5NjQ1MGIyMGMzMmMwYmRlYzJhMjRiMjkxN2JmMTgxNWYzIiwiODU5ZGYwNzc0MTI5ZjAyYmM0MWJmYmE5MWYzY2JhMjcxZGE3Yzg2NiIsImVjOWY3MDk4NzhkZDE0ZGJiNjc2YmJlNDlmMTQwNWVjNzcwZDAyZjAiLCIyY2MxYWZiYWUwODU2OWE1ZGUwODg5ODI0ZTVjNDA0ZDM1NzIxYWQzIiwiOGU5MDAwMzdkMDk1YWQ3YThhZGE2YzRjMTgxNDNiN2RiZWI0NDY3NCIsImI4ODAyM2YyNTQ1ZmRkNmVhNjIwNjBhYjg5ZDMzMjk0MTMyYjliYzkiXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlNlY3VyaXR5IEtleSBieSBZdWJpY28ifSwiZGVzY3JpcHRpb24iOiJTZWN1cml0eSBLZXkgYnkgWXViaWNvIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiLCJyZW1vdGVfaGFuZGxlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJREhqQ0NBZ2FnQXdJQkFnSUVHMEJUOXpBTkJna3Foa2lHOXcwQkFRc0ZBREF1TVN3d0tnWURWUVFERXlOWmRXSnBZMjhnVlRKR0lGSnZiM1FnUTBFZ1UyVnlhV0ZzSURRMU56SXdNRFl6TVRBZ0Z3MHhOREE0TURFd01EQXdNREJhR0E4eU1EVXdNRGt3TkRBd01EQXdNRm93TGpFc01Db0dBMVVFQXhNaldYVmlhV052SUZVeVJpQlNiMjkwSUVOQklGTmxjbWxoYkNBME5UY3lNREEyTXpFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUUMvandZdWhCVmxxYWlZV0VNc3JXRmlzZ0orUHRNOTFlU3JwSTRUSzdVNTNtd0NJYXdTREh5OHZVbWs1TjJLQWo5YWJ2VDlOUDVTTVMxaFFpM3VzeG9ZR29uWFFnZk82Wlh5VUE5YStLQWtxZEZuQm5seXVnU2VDT2VwOEVkWkZmc2FSRnRNamt3ejVHY3oyUHk0dklZdkNkTUhQdHdhejBiVnV6bmV1ZUlFejZUblFqRTYzUmR0Mnpid25lYndURzVaeWJlV1N3Ynp5K0JKMzRaSGNVaFBBWTg5eUpRWHVFMEl6TVpGY0VCYlBOUmJXRUNSS2dqcS8vcVQ5bm1ET0ZWbFNSQ3Qyd2lxUFN6bHV3bit2K3N1UUVCc1VqVEdNRWQyNXRLWFhUa05XMjF3SVdieGVTeVVvVFh3THZHUzZ4bHdRU2dOcGsycVhZd2Y4aVhnN1ZXWkFnTUJBQUdqUWpCQU1CMEdBMVVkRGdRV0JCUWdJdnowYk5HSmhqZ3BUb2tzeUtwUDl4djlvREFQQmdOVkhSTUVDREFHQVFIL0FnRUFNQTRHQTFVZER3RUIvd1FFQXdJQkJqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFqdmp1T01EU2ErSlhGQ0x5QktzeWNYdEJWWnNKNFVlM0xiYUVzUFk0TVlOL2hJUTVaTTVwN0VqZmNuTUc0Q3RZa05zZk5IYzBBaEJMZHE0NXJuVDg3cS82TzN2VUV0Tk1hZmJoVTZrdGhYN1krOVhGTjlOcG1ZeHIrZWtWWTV4T3hpOGg5SkRJZ29NUDRWQjF1UzBhdW5MMUlHcXJOb29MOW1tRm5MMmtMVlZlZTYvVlI2QzUrS1NUQ01DV3BwTXVKSVpJSTJ2OW80ZGtvWjhZN1FSalFsTGZZemQzcUd0S2J3N3hhRjFVc0cvNXhVYi9CdHdiMlgyZzRJbnBpQi95dC8zQ3BRWHBpV1gvSzRtQnZVS2lHbjA1WnNxZVkxZ3g0ZzB4TEJxY1U5cHNteVB6SytWc2d3MmplUlE1SmxLRHlxRTBoZWJmQzF0dkZ1MENDckpGY3c9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFmQ0FZQUFBQ0dWcytNQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUhZWUFBQjJHQVYyaUU0RUFBQWJOU1VSQlZGaEhwVmQ3VE5WMUZELzNkNTl3ZVFTSWdTOUFRQVhjRkxBUVppOWZwZVZ6MXRZL1dUWnI1V3hwYzdXNWtuTGE1akkzWjg1c3JTMm5NMnNqdFd3WlM3SVVINEg0eENuRVF4NERBWkY3NFY3dXM4ODV2OS9sSW5CdlZKL0I0UHY5bnUvNW51LzVudk01NTZmekEvUXYwSGIvSXJYM1ZGS1BvNDVjbm00aW5VSVdZd0xGUm1aUVV1d2pGRy9OMWlSSGgxRVowTlJWUnVkcXQxQmQrMm5TS3lTL09oeXMwK2xrM2UvM2tROXF2RDRaVXRhNFZWU1V1WTBlaXB5aVRoQWZvY29PUlZnRHV1dzNxS1JpQWQzcmJjRXRqVGpZSW9mNldhSHNDbXpWUFdDTXgrY2doOHRMcVdNS2FNV3NVakxxbzJSdEpJUTBvT3ptZXJwUXU0ZXNaZ3NPTmtHeEg3ZDBrZHZUVDE3czRPTVU3Vkk4WmhqZ0dhTStBcTlpRU51OFBpZjF1ZHowN013dktXZjhHbFZvQ0VZMDRQQzVXZFRhWFlGYlI4dk52TDUrM0tnZmI1eE5NeWE5UmFtSml5bmFNbEdUVnRGbHI2YmE5dStwcW5FWDR1TXVSUmdqU1lFaHJON3V0RkZlNmxxYWw3TmZrdzVpbUFHSHluUHBiazhWbVkweHN0bnB0bEZDVkNZdHpUdUJOODNRcE1MalR0ZXZkUHpTVW5KN2U4bWtqeFozOWZYYktEZmxkWnFidlUrVFVnR25CVkY2ZlEyaVBIZzRXMTZVV1V3dnpiazE2c01aRStQbjBwdno3SlNldUF5ZXM4bGNwQ21hS3VvL3ArcVdyMlVjd0lBSFdydlAwWUV6aFhBdExBYnNzSGhwN2lHYW12eWlqUDhyeXFyWFVXWDlYb293eHlBdWZOQnJwNDNQT0JGWFpsa2Y4TURSaXFjcHlvd0F3cHV6MngrZld2ei9EdGRlOXNtc3p5Z3RjUjZDMXdiZHpCbDZPbHE1V05ZWTRvR2F0aEpNcmtURXgwakFSU0hBVnMrNXJZa1FOWGIrUWdmUExzUTZnWHlJbnNyZVFmbXBtN1JWRllmTDg2bjFmaVVPa1l2U2hrVVB4dmJ1a3pveTZLMWloTTFobzNYelc2RXZTZlhBK2RwaVdHYVdkK2RvWHpMem1Hd0tZRkxDQXNSQWxQQkFoTWxDRlhVN3RCVVZQcjhIZ1ZjSkhXcStGMDBwbHIrRE1UZHJQNHp2eFkxMWtOTWh4VCtTZVRHZytkNFY1TFFKaXR5VUdKTkI4VkZac2pnWUJaTS9JSS9YQ1RrajBxeURPcEYyQVZRMTdDSWpVcC9EblQxVWtMNUY1Z2RqK3NTMXdnMWdFM2dpZ202MGZDWHpTblBYYnlBUGJJWHYrSURwRTE2VGhhSElTOXNreWhsbU1FNUYzY2ZxQUtocTJDMEU1UEgxZ1lhWGFMUERrWkcwSERKT25LV0hwNTFJMHo1U091eDhlMVdBdVp6ZEhRclRrcDhUbWpYb0krbGEwd0dac3p1YnFiTzNpZlE2QS9XN3ZWU1lzVjNtUjBKS3drS2M0V0hpQmttUjhJM0NDZ0k4N29PTDRxelQ1UCtSVUpCZWpFT2dBUEs4aFlQemF0TStlSVRwMklPOXlUUW1lcm9tUFJ4eDFxeEFjc2lsZS91YlNlRWJjV1FHWUVDZ2hjTFkySHlLam9nakgyNWhNcGpwVXYxT3VnbGk0ZWgyZVJ3ME8zMmJKamt5dUNnTnpnMHZ6bFlNU2lTczB1b280TUc3aE1PakNFYVgxeUZFMG5TdmpCenVUbkVwSzg2WjhJb3FGQUl1Ync4a2c5QXJFYVJFV1NaSStqSDRYYnA2ZzlFOUVuSlQzb2FSekROK01VSkJRREhuNTZhOG9VbUVCdXNPeEJzL041K3RKRWJQa0FGRGo4VUd2T3MvSVd2Y1NnbEdCaHZTNy9GVFlmcFdHWWREWThmUEF4V1NBMzVzVEM0cDQrTG00QWFxSW9QZVF0ZnVmSzZKaDBaaHhsYnNVWE9TbVhOaWZENVpUQWt5RG9mYmJjY2x4bkE4V05BcXhDYlJOeWtoWHhRcGFEdzY3ZlhVWWJzaUcwS2h0djJvZUl2aDhyaFFNWU9jRUFxWEcvZUkrem5nT2M1eXhyOHE4MklBTTFjL0ZMRk9wbHF1NWVGUVhyTVp6R2NWQ2pZYkxXRzVJNEJUMWV1UnJsYnh0Tk90TWl0RERFaExYSUl5bkFBdnVPRVdFM1gzTmRBZnQ5NFZnYUc0MlhJUXQwWlg2UGVDRS9xUUZlOXJLNkh4N1lVNTBLdkg3Zlc0ZlMrcTdLS0JKeHNnZ0JYNXBTQUdoMWpJclZoNXpRNnczUmZhYWhCWG0vYUNiQ1pUakNVRlVUeVdacVc5cDYyTWpKUFhWcU9yUGdNTzROdjc0R2tmK293ZnROVkJEUW5qRkpxSFN3MTdwWHZoV1c1S1pxZS9RNDlOL1VTVENBVldvUVhGSUhCSFhYZTNGUHJVRHN1R0RtdEYvaEhLVEhwZWt4aGlBT1BJK1NKcTZTNkhGNEk5WVd6a0JKVG80NmlVTXpXcDhQaXIvUmlkdUx4S1lzU2tzVjh2TGxPUXZoR1gyWWxSME9CaEJqQyt1L2dFY3ZZMEFwSzdZazQxTnhqUFNRbldGSFRGNjZVcmpnZXZCOEN1NWErbDJ2WVNSUHR1VkRvNzNoaGRNU0huVVg3dFRqc1ZaR3hBbC9XcHRpT0lFUTFnbkwyOW1YNi90UjF0bWxrWWo4VzRYK0NTaldjVURHWTFOcFMvQzdoU0txaU1MTS9sMlFtU1daNzNEZHorZ2lvOEJDRU5ZUFE0NnFua3p3WFVicXZCa3hqVVFzV2ZaRmdidW8zckFmK3dON2pPTzkwK3lueDRQaTNMKzBuWUwxU2NoRFVnQVA0Z1BWLzdJZDFxKzFIU2htdUdrSXFXUlBneXhNRnFQOEhmalRualh3WTViUWZiSmN0Nk9JektnTUhvdEYvSGUxZWdzYXhIU3FHNndmZG1RNXg4TnlURkZxQmNwMmlTb3dIUjN5azUrMzZoRjd2WEFBQUFBRWxGVGtTdVFtQ0MifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMC0wNS0xMiIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiU2VjdXJpdHkgS2V5IGJ5IFl1YmljbyIsImNlcnRpZmljYXRlTnVtYmVyIjoiVTJGMTEwMDIwMTkxMDE3MDEwIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjEuMSIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4zIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIwLTA1LTEyIn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMC0wNS0xMiJ9LHsiYWFndWlkIjoiMWQxYjRlMzMtNzZhMS00N2ZiLTk3YTAtMTRiMTBkMDkzM2YxIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiIxZDFiNGUzMy03NmExLTQ3ZmItOTdhMC0xNGIxMGQwOTMzZjEiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiQ3J5cHRub3ggRklETzIuMSJ9LCJkZXNjcmlwdGlvbiI6IkNyeXB0bm94IEZJRE8yLjEiLCJhbHRlcm5hdGl2ZURlc2NyaXB0aW9ucyI6eyJlbi1VUyI6IkNyeXB0bm94IENUQVAgRklETzIuMSJ9LCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MTAsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfSx7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MTAsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6MCwiYmxvY2tTbG93ZG93biI6MH19XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDUVRDQ0FhS2dBd0lCQWdJR0FJRkRVWFFyTUFvR0NDcUdTTTQ5QkFNRE1FOHhDekFKQmdOVkJBWVRBa05JTVE4d0RRWURWUVFJRXdaSFJVNUZWa0V4RkRBU0JnTlZCQW9UQzBOU1dWQlVUazlZSUZOQk1Sa3dGd1lEVlFRREV4QkRVbGxRVkU1UFdDQlNUMDlVSUVOQk1CNFhEVEl3TURZeE5EQXdNREF3TUZvWERUUTVNVEl5T1RJek5UazFPVm93VnpFTE1Ba0dBMVVFQmhNQ1EwZ3hEekFOQmdOVkJBZ1RCa2RGVGtWV1FURVVNQklHQTFVRUNoTUxRMUpaVUZST1QxZ2dVMEV4SVRBZkJnTlZCQU1UR0VOU1dWQlVUazlZSUVsT1ZFVlNUVVZFU1VGVVJTQkRRVEIyTUJBR0J5cUdTTTQ5QWdFR0JTdUJCQUFpQTJJQUJHaGNpa3VSWWdOa2FrMHBPOFhnUFd3RzlSWlhMUWVxUUV2S0hmQ24zN2dhUjVVOXJocDRXOEpUYmZVOXQ4Q0ZnRDBEeE5YRUpFOUtHTm5MQXRMNzA4aENIZW82UzVvZXpuR0RGbjlKODBiTzdiZFNEWUhTNWJ6a0VLUExOdWFtV0tORk1FTXdFZ1lEVlIwVEFRSC9CQWd3QmdFQi93SUJBREFkQmdOVkhRNEVGZ1FVZHJFdFV5V2FNdHBWQVE3SkdxUXAzanpOU2hjd0RnWURWUjBQQVFIL0JBUURBZ0VHTUFvR0NDcUdTTTQ5QkFNREE0R01BRENCaUFKQ0FiV2EveGNLeDdLQ2NvVXNwOFNWWm5XU3hEOG45MVRxQ0pLYWpzN2tKQnoyRHp2Wlp0UHhLc01ZMzhsSC84TVlUQzN3bFJ3ZFpjNXM2MUVobGJkbk9ndUJBa0lCRm1KTHNPUHlNUVdVeG1XbDJ6dUFTN2N0cVUwM1U3NEMzVVVIU0tESDNXU0pIK3kzaS9Yc0NzL0ZNK0RrLzNGak9nUVR4aW9hcUljM2hyd2hQbG1vck5vPSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFFQUFBQUJBQ0FNQUFBQ2R0NEhzQUFBQmhXbERRMUJKUTBNZ1VISnZabWxzWlFBQUtNK1ZrVDFJdzFBVWhVOWJ4U0lWTzRpSU9HU29MbHFRS2lJNFdZVWlWQ20xUWhXWC9OUzIwS1FoYVhGeEZGd0xEcUtMZjR1amt5NE9EcTVPZ2lLSWs0Tzc2S0lsbnBlSUxkSU9Qa2p1bDhPOUorK2RCL2pQUzZwdWQ0d0R1bEd4MG9tNGxGMWRrN3BlRUVJUTNSakZqS3phNW13cWxVVGI5WEVQbjZoM1VlR0YvNjBlTFdlcmdFOGlMNm1tVlNHYjVLbk5paW40ak55bkZtU05mRVVlczdoQjhxdlFGWSsvQk9kZDlvY0ZXNW4wSERsQ0R1ZWJXR2xpdFdEcDVFbHlSTk1OK3Z1ekhtdUN0OGd4dlZSVmYvWXBUaGpLR1N2TFF1Y3poQVFXc0lnVUpDaW9vb2dTS29peUdsU1NiczFCaHNVdkcybDJ4NWx4YTc5QjF5OUZGNFV1UmFpY21VY1pPdWVGRDhTZC9NM2EzcGlJZVU0aE9uYytPODdiTU5DMUM5UnJqdk41N0RqMUV5RHdCRndiamZueUVURDlUcjNXMENLSFFPODJjSEhUMEpROTRISUhHSGcwWlV2K3ZTMysyOHVOS3lCZXB3OUFobGtsYjRIOUEyQWtUNi8xTnVjTU51ZldwcWZmN1dtWkgvQU5oY3QwU093aDVwQUFBQUxCVUV4VVJmLy8vL3Y3Ky9IeDhlenM3T3ZyNiszdDdmVDA5UDcrL3R6YzNKMmRuV2xwYVQ0K1BpTWpJeFlXRmhBUUVBOFBEeEVSRVJvYUdpc3JLMDVPVG54OGZMVzF0ZDNkM1lHQmdRQUFBQWdJQ0VsSlNhS2lvdkR3OE5UVTFGbFpXUW9LQ2djSEJ4NGVIa05EUTE1ZVhtMXRiWEJ3Y0dwcWFqczdPeGNYRndVRkJSa1pHZW5wNld0cmEySmlZcXlzck9MaTR2ejgvTm5aMlo2ZW5sSlNVZzBORFJNVEU0dUxpL2IyOXJTMHRCMGRIUUlDQWpZMk5xYW1wdlB6OCsvdjc5UFQwODNOemRiVzF1WGw1Zkx5OHVycTZwR1JrU1FrSkRFeE1jek16UDM5L1hwNmVpY25KNjZ1cnFlbnAyTmpZeTR1TGdFQkFRTURBN2k0dVBuNStaT1RreFFVRkF3TURKYVdsbGRYVjNsNWVmWDE5Y3ZMeTE5Zlh3c0xDeGdZR09UazVPYm01bFJVVkhGeGNmcjYrazFOVGJxNnVoOGZINE9EZzRpSWlIOS9mMmRuWno4L1B4SVNFb21KaWZmMzk0K1BqNVNVbEZoWVdDa3BLZHJhMmpJeU1vNk9qdmo0K0w2K3ZtaG9hRFEwTkxHeHNYMTlmYmEydG9XRmhSVVZGWkNRa01yS3loc2JHOXZiMnprNU9ZYUdobE5UVXpBd01DRWhJU1VsSlRvNk9tVmxaYUdob2VmbjUram82R0JnWUhKeWNod2NITUhCd2NmSHgxQlFVSUtDZ2xwYVd0L2YzelUxTlZWVlZRUUVCRnhjWE83dTd0RFEwRE16TStIaDRhQ2dvRXBLU3J1N3U1S1NrdGZYMThURXhNYkd4dDdlM2tSRVJGWldWcXVycXdrSkNaZVhsM2g0ZUtpb3FEdzhQTEt5c28yTmpTQWdJRnRiVzcrL3YwaElTSmlZbU03T3puVjFkWXlNakorZm41cWFta0pDUWxGUlVieTh2R0ZoWVFZR0JuTnpjOC9QejRTRWhOSFIwYjI5dlptWm1ibTV1ZExTMGlZbUppMHRMUTRPRHVEZzREYzNON0N3c01EQXdHWm1aaWdvS0VaR1Jzbkp5VGc0T0pXVmxVeE1US1NrcEtPam95b3FLb2VIaCtQajQ2bXBxZFhWMVVkSFI4akl5SnVibTExZFhiT3pzM1IwZEc5dmIyNXVicmUzdDBWRlJVdExTeUlpSXFXbHBVQkFRQ3JBM05ZQUFBQUpjRWhaY3dBQUxpSUFBQzRpQWFyaTNaSUFBQVVoU1VSQlZGaEg3WmZyWDVSRkZNZlBJdkJZNHNwbHRkOGFBUm9vaXhjV3hOUUhVV1FOZVNUZFoxMURBbGNsdkx1U04xYk5CQVdGTk5ITXZKQzNzaVF2WGRBU0w1a21waW1XMlVWTHk3U3N6UDZLenJNTStxSFBzd3Y3cHQ3NGZUWHptelB6bkRrek8rY3NQZVEvd0JEVUlUZ2tWQks5d0pBNlB2Sm9wN0RPeGk3aEVaRlJwcTVCUW00djNSNkxSQ3ZNM1IrUEZtTnRJejBSRTZ0Tml1dlI4OG40aEY0eHZSTXRXamZKMUVjWXRFRnczemcyVCt6WFA3bGw4OWFVMUFGcHJBMThhcEJRL0NBTkhnTEk2VU16dUcwZGxqdzhjMFNXVFZ0bzVOUFp2TVNvSEsrUkg1VFI3Rzd1TXdhaVlXUEcyc05WbnVUb25KNHd6a2tVT3Y1WklHK0NNUFJCUmo1di9ia0NrZ29udW5qdWZkUkpwc2xFVTRwVXFNOFhDMXM5QmszbHpVK1RxRnUrRmpiSDlLaUVHVE5uelo3VFJYUEVQYmVFREM5WW9NNFR4am9VendjV0xDVERQSTZZdXFoMG9aREpzM2dKZTQrbHc0bGVOSGJ5Zlp6U01oVzVreWs2bngxTmY4bnJxZUlwY1hyUEluaDVHWkJXYnFVVklWcFhuNjRXckt5Z2taVWNxbEtlcnVTc1dsMVZQZVRsTld0ZldjZWpOZXRscUJ1VVpsTmRPcndLODBhSzdnMVU4MkdWcE5vZFd2aTh4QmE5SmxHQkhkaGtGY1o2OUFWZUo5ck1ZZGhDbExsVm0yZ2VOWFZiOThoYWJsbmVXTGNXV0xSZDJPcXh3NHlkSHBvQWhPMGlhYmNaY0cwZTEzenhndnEveVlmQ3Qzc0lyK3liR01odlVUYzM4dGovUFJiSW05NFdBNHp5emxMMkltK3Y2T3BTWjhHN1Z0cm5QZWI5dFRod3NQVXI0SG5QWVhsZnRQVXhRUjFNaFJaODRLUVVOOHdmQ3ZrK3lwaDZ2dytMSnhlSERIUVkrSWlVanlFZkVYTDdhVkJ4bEdyeVVDblJZQm1yL1IyM1BzZTBieDhIVHBEeUNjd1ZRZzJBazNDSGNBaGpreWxGeG5vaEJrSVlGa25XUTZpUzJCZjFVeUVHZ0MwUDh5bkxoVk5FVXhGdUUyb0ExSjNHWjNSR1JTTXBZZGdxeEVBNDY4QU0raHc0UjBGbE9DbkVRTWlVTVpQT0E4ZHB1eHN4UWd5RUx4ejhTMXdNSENGYkdhS0VHQWdjZ3dUYW9mSXEwZ1ZFQ2pFUStCU0thSW9MRTRtSzRNb1NhaUJrNDZLa1ZNTXVhUzlDcWhBRG9RaE5mV2crWWkvUjVEaDg2ZS9oOGtFcE1FNzdMWndqYVJ2d2xWQURZTGdEdmFoUEd0SWx5b2xEOVVnaHQ1L2lpMGp5U0llaFhpYjZHb2ppNVBodnJEdEVRNStad0JqS3FVVnZKMjIvQXB6eUNQMCtLZCtZdnhWTlhXcGMrSzZZOHFGK3p3KzBHN2hhSXdhYUNXMXM0bGU5UVBSMGlZZTZYM3VWMDlqVGpRT0JIdGNlYk1QNXd3VXRUV0NXNk91UzdFWjJOS1dxeU43RlB5NmVvUDVZUHlLVU02YnRiR01ZcDJmajZIQWNXQ0dNZGJrT3hFdFNQOEIrZy9QY2JDMnhPU0l1cGtkT2tyWFcraTAwRDFycThZMXpKK1NmcUlSTGhPbmFoeHIyUFNneGpLZCtac1Y2czQxTm5FbUQ4UmZLdU1wNS9CaG5aK25HcmR0VmlVMFJTOGRlMDhxenVnTHE2SWFyc05sV245ME9KSjZsa3I3czg4NWZXMS9uRHJPYWZpTzZwZnJmaEdKU2tYaVpsS0dKWEtqWlN5dGFxcUhRdmZGY29aZ3p5Y0RlY1FiM2pmVU9KK1VUQ21VdE9jMDdyODBkY0hSdS9mTGZiNjdVNHBCMDBFTUdFNDgzQ0dOZHJDWXVRN1lsRTFYY2lkQm10ZUN3ajdlUnRMZVNqN09uLzZ3am5lRFlsOVh6K2R2KzJMREc2SkJsdVRicFptTWg3eWJsTnJ2VlZONnlMNTgwVlBFWFYxN24yOFNFMUtWYzBtcFdLcjRjdzBXR3ZLbk9LL3NudE5ISVM3aitMTSswTlY5bVovRDVvMWY0WHFsVlhkdjUwdHhJMEpiZzY3QmdUdFRKdTJ2KzBpTEtKM3V2VGU4ZkVMeW44b0IzbGtBdHU3MVk1NG53aDNUcFh2emYwN25XUXQ2RnU4dW10Zi9mUmlzVTY2QU1qOVZ2YWZPUS94bWlmd0RrblU2NVBxdkRZZ0FBQUFCSlJVNUVya0pnZ2c9PSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzEiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkQmxvYiIsImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJtaW5QaW5MZW5ndGgiXSwiYWFndWlkIjoiMWQxYjRlMzM3NmExNDdmYjk3YTAxNGIxMGQwOTMzZjEiLCJvcHRpb25zIjp7InJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwiYWx3YXlzVXYiOmZhbHNlfSwibWF4TXNnU2l6ZSI6ODYwLCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxLDJdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjgsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4LCJ0cmFuc3BvcnRzIjpbIm5mYyJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XSwiZm9yY2VQSU5DaGFuZ2UiOmZhbHNlLCJtaW5QSU5MZW5ndGgiOjQsIm1heENyZWRCbG9iTGVuZ3RoIjo2NCwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjQsInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjo2NH19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTAxLTE2IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEwLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6ImNyeXB0b3Zpc2lvbiBlUGFzc2xldCBTdWl0ZSBGSURPIEF1dGhlbnRpY2F0b3IgdjEuMCIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjUwMTE2MDAyIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDEtMTYiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MTB9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDEtMjMifSx7ImFhZ3VpZCI6ImJiZjRiNmE3LTY3OWQtZjZmYy1jNGYyLThhYzBkZGY5MDE1YSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiYmJmNGI2YTctNjc5ZC1mNmZjLWM0ZjItOGFjMGRkZjkwMTVhIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkV4Y2Vsc2VjdSBlU2VjdSBGSURPMiBQUk8gU2VjdXJpdHkgS2V5In0sImRlc2NyaXB0aW9uIjoiRXhjZWxzZWN1IGVTZWN1IEZJRE8yIFBSTyBTZWN1cml0eSBLZXkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MiwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfaW50ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MTAsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsIm5mYyIsImJsdWV0b290aCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQ1NEQ0NBZTJnQXdJQkFnSUpBTTlSell1NEVJSWxNQW9HQ0NxR1NNNDlCQU1DTUg4eEN6QUpCZ05WQkFZVEFrTk9NU3d3S2dZRFZRUUtEQ05GZUdObGJITmxZM1VnUkdGMFlTQlVaV05vYm05c2IyZDVJRU52TGl3Z1RIUmtMakVlTUJ3R0ExVUVDd3dWUlhoalpXeHpaV04xSUVacFpHOGdVMlZ5ZG1WeU1TSXdJQVlEVlFRRERCbEZlR05sYkhObFkzVWdSbWxrYnlCU2IyOTBJRU5CSURBeU1DQVhEVEU1TVRBeU16QTVOVEEwTTFvWUR6SXdOVGt4TURFek1EazFNRFF6V2pCL01Rc3dDUVlEVlFRR0V3SkRUakVzTUNvR0ExVUVDZ3dqUlhoalpXeHpaV04xSUVSaGRHRWdWR1ZqYUc1dmJHOW5lU0JEYnk0c0lFeDBaQzR4SGpBY0JnTlZCQXNNRlVWNFkyVnNjMlZqZFNCR2FXUnZJRk5sY25abGNqRWlNQ0FHQTFVRUF3d1pSWGhqWld4elpXTjFJRVpwWkc4Z1VtOXZkQ0JEUVNBd01qQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJIbHEyalVRTWFsSGovQlJlUWVmR2l6NEV2WUp5RkxXUHo0UmZoSkdLcXFsKzhuOTZoVDFtNWdYb1R2b0xyalNVN1gwY0Jlb1RzZ2h5aDIyK3lyczQrU2pVREJPTUIwR0ExVWREZ1FXQkJRKzhTR1cyQlhicWIyZGNBT2lXSk9VK0dDc1BqQWZCZ05WSFNNRUdEQVdnQlErOFNHVzJCWGJxYjJkY0FPaVdKT1UrR0NzUGpBTUJnTlZIUk1FQlRBREFRSC9NQW9HQ0NxR1NNNDlCQU1DQTBrQU1FWUNJUURxOHhJVzBaSzV5ejNFQXptdXg4OExDVFlPMTU3ZlRmeU9pT3pDMkFEeWF3SWhBTzFQV1lsZUZnSC8zbXVEOGNCQU1yMTFmRUtkRi9BYUMxNmZ0eGFlek5YSCJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFJd0FBQUFZQ0FZQUFBQW9OeFZyQUFBQUNYQklXWE1BQUI3Q0FBQWV3Z0Z1MEhVK0FBQUZJR2xVV0hSWVRVdzZZMjl0TG1Ga2IySmxMbmh0Y0FBQUFBQUFQRDk0Y0dGamEyVjBJR0psWjJsdVBTTHZ1NzhpSUdsa1BTSlhOVTB3VFhCRFpXaHBTSHB5WlZONlRsUmplbXRqT1dRaVB6NGdQSGc2ZUcxd2JXVjBZU0I0Yld4dWN6cDRQU0poWkc5aVpUcHVjenB0WlhSaEx5SWdlRHA0YlhCMGF6MGlRV1J2WW1VZ1dFMVFJRU52Y21VZ05TNDJMV014TkRJZ056a3VNVFl3T1RJMExDQXlNREUzTHpBM0x6RXpMVEF4T2pBMk9qTTVJQ0FnSUNBZ0lDQWlQaUE4Y21SbU9sSkVSaUI0Yld4dWN6cHlaR1k5SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpFNU9Ua3ZNREl2TWpJdGNtUm1MWE41Ym5SaGVDMXVjeU1pUGlBOGNtUm1Pa1JsYzJOeWFYQjBhVzl1SUhKa1pqcGhZbTkxZEQwaUlpQjRiV3h1Y3pwNGJYQTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzhpSUhodGJHNXpPbVJqUFNKb2RIUndPaTh2Y0hWeWJDNXZjbWN2WkdNdlpXeGxiV1Z1ZEhNdk1TNHhMeUlnZUcxc2JuTTZjR2h2ZEc5emFHOXdQU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNCb2IzUnZjMmh2Y0M4eExqQXZJaUI0Yld4dWN6cDRiWEJOVFQwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOTRZWEF2TVM0d0wyMXRMeUlnZUcxc2JuTTZjM1JGZG5ROUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXpWSGx3WlM5U1pYTnZkWEpqWlVWMlpXNTBJeUlnZUcxd09rTnlaV0YwYjNKVWIyOXNQU0pCWkc5aVpTQlFhRzkwYjNOb2IzQWdRME1nS0ZkcGJtUnZkM01wSWlCNGJYQTZRM0psWVhSbFJHRjBaVDBpTWpBeE9DMHdOUzB5TTFReE5EbzBNRG8xTlNzd09Eb3dNQ0lnZUcxd09rMXZaR2xtZVVSaGRHVTlJakl3TVRrdE1EVXRNRFZVTURrNk16TTZORGNyTURnNk1EQWlJSGh0Y0RwTlpYUmhaR0YwWVVSaGRHVTlJakl3TVRrdE1EVXRNRFZVTURrNk16TTZORGNyTURnNk1EQWlJR1JqT21admNtMWhkRDBpYVcxaFoyVXZjRzVuSWlCd2FHOTBiM05vYjNBNlEyOXNiM0pOYjJSbFBTSXpJaUJ3YUc5MGIzTm9iM0E2U1VORFVISnZabWxzWlQwaWMxSkhRaUJKUlVNMk1UazJOaTB5TGpFaUlIaHRjRTFOT2tsdWMzUmhibU5sU1VROUluaHRjQzVwYVdRNk1qRTROV1l5WW1ZdE9EVm1PUzFqWmpRM0xXRmlPRGN0T1RGak0ySXpaakJpTnpobElpQjRiWEJOVFRwRWIyTjFiV1Z1ZEVsRVBTSmhaRzlpWlRwa2IyTnBaRHB3YUc5MGIzTm9iM0E2WldNeFpUZzNNakV0TnpNM1lTMHdOVFJsTFdFellUa3ROVEZrTVRNek5EWmxaVEk1SWlCNGJYQk5UVHBQY21sbmFXNWhiRVJ2WTNWdFpXNTBTVVE5SW5odGNDNWthV1E2TWpFNE5XWXlZbVl0T0RWbU9TMWpaalEzTFdGaU9EY3RPVEZqTTJJelpqQmlOemhsSWo0Z1BIaHRjRTFOT2tocGMzUnZjbmsrSUR4eVpHWTZVMlZ4UGlBOGNtUm1PbXhwSUhOMFJYWjBPbUZqZEdsdmJqMGlZM0psWVhSbFpDSWdjM1JGZG5RNmFXNXpkR0Z1WTJWSlJEMGllRzF3TG1scFpEb3lNVGcxWmpKaVppMDROV1k1TFdObU5EY3RZV0k0TnkwNU1XTXpZak5tTUdJM09HVWlJSE4wUlhaME9uZG9aVzQ5SWpJd01UZ3RNRFV0TWpOVU1UUTZOREE2TlRVck1EZzZNREFpSUhOMFJYWjBPbk52Wm5SM1lYSmxRV2RsYm5ROUlrRmtiMkpsSUZCb2IzUnZjMmh2Y0NCRFF5QW9WMmx1Wkc5M2N5a2lMejRnUEM5eVpHWTZVMlZ4UGlBOEwzaHRjRTFOT2tocGMzUnZjbmsrSUR3dmNtUm1Pa1JsYzJOeWFYQjBhVzl1UGlBOEwzSmtaanBTUkVZK0lEd3ZlRHA0YlhCdFpYUmhQaUE4UDNod1lXTnJaWFFnWlc1a1BTSnlJajgrLzBWeFJRQUFHZlZKUkVGVWFBWFZ3WGZjbjNWOTcvSFg1L3Y5WHRkdjNEczdKSkFJQVVMWUJabUNpbURWRGxmdHcyM0hxWXVxUFYwV3RkYldSNjNuVkcycm5yYU90c2hEclJVZlBSM1dXUzNLVmhBWllRb0VRa0xXbmR6ek42N3IrbjdlNTA0aUtOV084NTgrbjJudWlzUy9KM0c4WVplWjJaVEVJbUQ4NStST08wWlNVZmlISlA2Rkh5SUVXQmpBd3pOdzZvYkkzQ3lrQ0dhR0pOeWhMTVd3Z25yb3BOSklDQk5VY29vaTBPOGIreGZGNlBMQXFJTWNHb2QyVyt6WUQ5Rmc0OXJBZ2IxaTBUSlRIV0dDdW82VWhlRUpkaTltVnJTTjhjS1lxNDJkKzhTS0NTTzJnQXdkSUJRUVRQeDdabERWZGtrV2J6VFpjS1RJM2RodnZyR2x1ZU05ZDhVVFgwUnIram1veVlDUU9NU3NCTHBBQWpMUVJ4cGd4bytSQW1scjRvY0laaGVHa0Y1bEJwTDRyd2hJQ1hMRGZIK2dEeGVGa0hnQ0NlU3dmNzhoRXovS2pNUEVENUlnUlh1UnVmMjBwWUJaUTcyZjdTdEdIM1ltVHZ4Rk1oY2dBd2xpQVJMZ0dXd0dOQWZXUXF3bWhzaEJjbjRzR09BK2w4cUN4eG1RQlUzRFNaSWo4VjhUWUZDMGpZVUZiZTMxZFAyeTVaQXpUeEFTNU1aQWdQR2p6UUJCMVlEeEE5WlowS2ttY0VISW1jOTNMdmkzSGZISWtxWmVqVElnTUVBTzdsOG54azhoM1lMbjNZUTBqdXNNMUx5T0VNNUU0c2VDZ096L2xQWWNFSTl4UVR0eHhIZzNudWtZSUw1ckVkZ09DQ2o0ZmdZU3NSNXFSYWVqcTBKaXVxcDRnaFFOTHcxVjRzZUZBSzlGTXI1SFFMVGpRZ3liTWNpTmc3SG4xcFdYZk9PaDZzU0w4UGtqTVFkTFlHR2F3ZDdmSlhZdlIwV2ZFTUFDMUJXRTRsWjZDLzlNbWY2T2N1VHBTSUQ0a1dVRzBtN0V2ZW0yYmM1amhvMVlPeG1QT25NVHAyYUo3SUNCaVk4Si9UN1FBa1lBY1pBQVE4RW9jME8yeUxiUlVVTUNNNUNNZGh2MnpUbGtJL0pqUkdBUlFoSElqWGlNR2NkS0duZU0waktJT3g2cFYrL0xadWNqN3hBTVNQdm82eFY0OVFYU09Nek53OGdFZEZvd013TWpZNURTWHBybXJSVDZCNHhWaUI5ZEVrdHVKTnFPdEhjKzhKaitFRHBkMnhUYWpHZ0FHZU1nZC85bllFOEk0SUlRUUN3SmdJTUxYQkFObWd5U2tSMks0Tno5SUR3Nkx6WWZMUXJqeDRZWk5EWDBlazUzTENCeFNBcDJqcGxoZ2hZMXN6WngwMVhOQlhNRXRoQXFRQlc5NWgwMDZRdkVFYWhKdE11WFVNUVgwRlJYMDJwOWhDTE5vd0NlcnNmOFByQlYvS2ZFWWNaL256ak0rQUh1RUFML0lUbGdZTVpoQnE2YkVRdnBTVWRHSGxQVnhCVmpkbzZ5NFJJZ0VOc0VPNkpCbHBFQ1ZMVVRnaEZMUVRZY0l5TUtRWk1oRzFRTkZLWDQ1ajFpWXRKb0pVT1YrQ0VNR0FFQ01BK0kvdzhDWEdDQU8xamt2ODFZSXNnT0VvZUl3eXhBWFltNS9jNnFsWVpuYURKSDVjekpoSUJNbU9BaDMvamxnWFZXUXo2UllEQVlYc3RDL1JkMGxrTTVBdkkzVUhUZlJ3QnFmeDRqbzF1QkwySVI2Z0RaRzBJQUJPNFFJMkRnRGlZT3NRUnlrSU1aUDBqZ0dVTGljUllBZ1F2TU9FUUNNeWhhNEJua1BJRUVGcUJvUWE3QUhVSUVCRG5maWNqcHBFbHhpSURJbXM2WW5aa2JhREpZTUR6NzNjZ2ZtV2tDUllMSkNQMCtXQUFLSG1lQVpFZ1FBZ1Rqa05FMnBBZ1Nod2pJQW96amdaOUJPayt3enNCYzdBTytndmlreEtQOEp3UzRHREc0S0VYT0VxenF0UEFBM3pIakM0S3QvQmNFeTRKeDhXaWJNMkprS29vYWVBRDRDdUxiR0JRbHhCRWpaa0dmOVhWdG00aGdDSXpaditYRkR6MFlOcDZOTGF4RURtWG5zMHlaRXlvbzB4bkkvb2ljb2FraFJNQmVnM3dUVWtuMjFSZ25FOFFoclE0b2cyY0hiUWYyNHF3aTJIcVNCUnFCQURNZTV3NnBnTTRZREhxUUd6Q0RrQ0FWTU95QkhDd0FBZ0d4QURsNEJvc2NacUFNQ0dJTHdqaFVQYUZzd0E2QzdtRkptbmxVSE9RWldsMVdqNHl5UlVFZ2tCdGx5VDJ0cUFONzU0VzVzV1JDY0tyZ0RMRGpnT1VHQ29HZEdMY0MveXA0aEI5R0VPQ1lxWFo0Ylc3c1JkRjBGR2FHSUFNcFFzQ2VaWUZmTTdOM0NQN2FRSHdmQVRtclJQWkxyY2l2WUd5V1dWZUN0Wk1nbDVySzNwU2lQb2J6aDhDQTd5TWdpMUdaWGVwdXI0ekdwZzJyWWxuWEFqZVVoRHNQV2VUUExmTEgxVURhZm0rbUxveVJ0djNFWk5jbXF5eGFOQ0J1dlQ2ZXV3UHhNdFJ2NCtyUkc5eElNdWcwTU5RQkxOeFBhMlFMdVlGcUFNVG5BOC9ub0NJQXhpRWhndWNETFBZK1RqUDRFdU5qOStEV0o0UkFOWE02ZE4vQ3lMS3pXSndGYnlCRVFCQkxVSURGbVFkeFhVY3E3c1RDZ0dIL0tQcHp6NkF6ZWhJR05BMmtObmpld2ZiYlBzclk2dnRvVHo0ZmExNklCY2daV2lPUTYwZllmditIbUZoeEI5M1JuOFB6eTNEZGpyR2RKYW03TVhDUUJFWGtERFBHY2dVV3dYQUdmVjFmVzBCdWF5M3k4N2c5djkyMkV3MWJJVGN3Z1NBRlE4Smo0SDZaWFZGTEh3Qm0rUzRIQXJ4NDlUSjdSOWtLeHc4V3dRS1BrNkJzUVFHV3pkWVhvL0dqZFpPak1oODJEcE1nSmp0cDlVVDgzOTFrRitlR29rakNKYklNbHhCWXJuVmt1MnR2TXc5SG12SnJCUU9XT0ZBRVRsblZEaDlzV2JpZ2NjTk0xQm5Fa2lBa2tMRWhCSHQzR1d3Vm1kKzhkNXZ6eGUvRTlNeXo3Y3lMejRmcUVTaVYyVmxzK1B5ZVltMlBQay9GTXNnSERQb3pXSUNxZ203bkFUeS9nTms5cjZFb24wZDc5RWswRlljSUNBSEVFb0VQdjhxakQ3eVRWY2RkdzhSNFF6V0FMQkJnK1dGbUZyL0tiSE1GVStYekNBbXlnd1VvMHg3MlBmU1hQSERuMzdMbEtROWgxaWRFd0dGbTF5bzZ4N3lWc3Z0RzZoa3dvRFA2TmhabUxtZlp4aFlwWFl6WElBR0NhQ0M5aTE3OUZ6VFhRVHJoUXNwTjRJdmZBdVpaa3JwZGNaQ2dFMlZuZXpaY0ltSzBPbngxZHRiK0xqZTZlTlVLKzJEQ2pxOWRoQkMwNUFEU2lBWEtWalNhUmpRaXhHREhncjNUNEZuQXIwcDgyd1dkeUZ0YkkrRzNUVGJldUJBUWdCQU41UE1qTFQ1M3g0TzZldHNDKzg0L3dkWk9ZaTl0aU84eXk3Y2kzY2hCNHR4V3l6NFM0Y1FpUU9nNnZSNTdURnlWZ2p5WVhTUlkxUUFPZEdKOHFhUnJKUHRvVTNQUXVTbllGYVBSTm1XRGpERFlXZFYrdlJuWjRHd3oyMkJBTlpTVm5maXFvNDdsczVQT1ZmUExiTzJLVWR0TVgyQUdCUXc2RTljMGQrMWR4ZHJqTnRGT29EaENaLzk1N0hoZ0swZWZDNkVHNXg0R2k3OU9TaDhncEtjUi9kY291NmZRbjRmc2tDSlEvejNVYjJCcXpVNmFQb3dzTzViaDRBSmN1L0RtcTdRbkJ2U1paL3ZXdHpOMjdHbDBKemN5V0FUWjlWUnpiNmJkdm9iTjU0cWlCV3FnR29JaXRFZjNzT2ZBbXhpM1NMZDlLVlYvRjYzdVZ6ajZMSWpGT2xSZGdBVVFFQU1NcTN2SmRoVnIxa0p1TGNNbW40b3FvTDRaUElPUkdIQ0lHVk5FVGhKZ0J0bjl5OE1Ccng4ZHM3Y0ZoWGQyb2hnMmZtUE8rblNRM1F5MkQ5TmtVOWtwaTQyL29HeUZpOHBJa0F0dnhNU1luUitLK0FrTHpZdEcyM1pCdXd4dnl6MjE2MGFZUVpGQVVQVjcvcW1pc0Q5blZMZjErdlNuZTQ0c1FOWVZqZXp0cGZIVVJuNFRzTTRzdk0vRWlTSEJURi85aFVYNzA3S3RqNDYwMklYSU45elZiSjRhaSsvZmNuUzRzQnFJeGxXMFkzemR2Z1UrdW0zYWp6anRLUDRNYkZNdGtHbk9zNzgzaFBESkVPeFJTUmdjaVhnYnhrc0ZscUt0YUtmNHd2NVFWNTE2cko2MHlqbWgybTlZRUpUc2ZvOWUvOGg5QnphZXdSSHpVNFFDRkZxRThBYTh1b21pdUlXbUQ1NmhMTURpZzdSSEh1U1dhNy9Fc1A5UlRubjZzNGdHaS9XMXlONUlIT3lrTTdHTWhZVTNzN2o0VXNScWlsQWdQazZPdjA2NzNzdFI2MjhuaHh2STJraDMvQ2JtRjErTHVJM3hOZURoNlZUOVZ5R09SUGxtR3Y5VEpsYnR4SUQ1NFYvU2FqOFhmQ2R6ZXhleE50VFZXVVRmZ0JtWVFURG9EWGZRMHpZbVdwQTJub1A3Q2ZoZ0h5SGZqb21Ea2pqTXhQcEFPQTREejl3ZzhYN1YrcjJSVG56NVlxMEhkcy9sUHh3cDdUUEJtT083Z2tIbFhIdjN3LzZ4aVNuLytWTTJwYmRYcy9Za2oySTRFS0VLVzU1NlV2SGxtSmlvZW1vcmMwZ3JRUU9QSGhqNlcybnNiOHFDeDhVSU1SaTQ5dGRaZjFBVVhEQldwb21GU3I5bEZzNEpDQXZNN1pyMVMvdnpmSHpEZXNNTUVEUnV0ODczbXJjb3AvY0VXQjhEelhSUDkzL3FPaS9PUHpuOWFtdlVucnd3QzVnZTh0cGZCWHlOSjdvYjlEdVluV2pZYVo3RllyWk5NY05LMkpLQ2pWZG1kQm5BZ0JzZjBoSGIyTEx1ZGFRREkxUVZ5S0N6Nm1TT21mb2s3bitNL0V0NC9RaXRVZWlPZ3pjZzdXRFkrejF5UG9taVhFOWpmNGhwQjZiMXBIZzU0eXVmd1hBQVpoQU5YQytuYW00bDhCNjY0OUJLQjhnTE1OZDdKNVZ1bzRxUkVidU13Y0p2WTJFTWkxQ01Yb1NxRHRobHhBQWR6ZEkwZXlrNzMySTRuT091dTJIOTZ0Tlp0VHd4ckNBWXhBUUwrMi9Dck0vb2F1aFZUNlpWZEpodXJxZXRBM1FpT0tRVWplODZ4WXdwd1U3SHIyMG5lMHYyZEc0LzYrdnUvaXBnRzk5bGdGaGlITkk0dlVhNkhQZHY3aHZ3aWJGT09EVUJ1UkhqSXh5Ukhlb0dna0VNc0d0RzM4N0IzMWgyN0dvSkVPRFFiVU8zTXU3ZG5sblpFV1hCVkxzZE81WTVYaDVlb0NpS0NETnorVVBUKy96anJaU1F3SUE2dzlwSlp6RDBhd2Z6K2VlU2FTd21jcFhaTlRWcXA2OVpZYjhpQjgrT1I5NmRVdnhhTUVZbEdXQkxXSktCQTNKOTI0elRXT0tvWERTbks5dVlKQVFFZ3dQTjZOVzdlMnVnemRtUVFTd1I0TkR1Yk1iOXI4akZWcUkrQWZZWm90K0grbkQwYVN6NUJzcTMwQnZzZ3ZBTm1qM2dmaFJoK1RTaHVSSjVCWWlHQWhnaDZCNktCQWFzV0g0Nlg3L3ljMWpySyt4N0FEWSs4K1hFK0FjSXd3UmlTWVoyK1V0SVoxQTNNeFJoQW1remxuNmZiZHNhUkllaU9KV0RESkJEdzREMjJMY1k5bUIyRGtKNk1yUmdxbk16VFgyQWJCeVVrRmpTd3V4MENReWZqbTdQRGVOaDA2RFVGMXA5dlp6R3B1V0FRQVlaTU1BTTNDRUEzVFpRc0hXdTFzL1VNZi9WVWQxd1NiK0dRUTBHbUVHSVFBcGZmM1IvZnUzS0ZkemxBak5RZ0dZSUoyMkFacHY0ME9maHdqTUR6ejNkTHQyNXgrUm80K3JsdGl3UElYUzRwMTN5SjFQelJyc0ZxUVYxQXdaMFMyTTRCRWs3REpGbHJCaU54WXZQNTRWa1Zpek9pWkJzRWVtbmdMTUU0NEQ0bmhvb0RNN2lJQU9EeFdnVTBUaEpBdHdnd1pmakpYZHNEU2UyQ1BrSVZBTUJNQkRRRERra2RVN0V1dStpSHJ3YWVBbVRvemZnd0dJRnFJZjRCS1ZQMHg5QzVqcTh1WTVROEQzR0ljcFFsTkNkV01uZXZjdjQ5cmMreXJMT0lpdlhybUN5dUl6S0RSTmdQSzdKWGVCY3pNQWRzUHN4dTQyTlI0SDc4WlRoRk9vS01FRGc3R0IwZkNzUjJMdi9CSTVZdHhrTDhKMGJyNk8zUHhNTERrcGtEcHFrME9rZ1lyQ2pyV01qOSszUlRkTUxldlU0VEs4ZWc3SUZicEFOaEFoQldBTm1jTVJ5WTZTQS9vTFl2TXkzMXpsZTJXdTRoQ1hHWVdaUU5mNzMvWXBMeTVaMmxRRktqTkFDQmVoVjBDbUVBQWRpeVhuZGJucnAxdW5tajhwUnpsN2ZzbmJkd001NXYzcmRsdkRveVJzTUdqSFlBVFBUMEVxd2NzS3dFRkV3M0NDSFFJVFYwZXlpV3VBR0VVYktFSDdhQVFuTURBUU9HR0FzQ1lZQUE1UjlheWZZNlFsN3VtU1U3UnJtZUhCNy9hVGJCMVBkNTVCN0czRExZTHM1ckEwMkFVVFVnQXRTc1pIc0wyYlBnUnRvSEN4dkFGdERzSzBZTUhsY0MwOHJ5TDJFNmhxTDRxQVF1cmdtaVVYQnNQOHd2ZFlycVBiTXNuN2wxWno2SEZpMjVrSnkzc2hnSGtMZ0NRd1FJQ0FWc0RCN0xiM2VibGF0aFJCUFlYYmZDZzZ5Q0ZaQS81RTdHZTYrbmRGVFlNMkcweGxySDBOdjVnQlgvZU85UEh3M2RFWTVLQ2x3MExHQmNDb1lvSkZPUyt6Y21UKzlZNWUycjE1aGREdkcybkZqVUlFQkJwaGdVSXQyYVJ5NXlyaDl1NWp0aVJQVzhSeXY3SGZkaklCNFRERERHM3Y0emwzRGZXdW5qTkZXb2gyTUprTHRFSUVBOUlZd1ZqSys2YWo0ZitncW5MWkpOMlhGMXd6bWhSVlVETm5hVEFNbTZnWFJ6Qm10MHBBN1ZRMnJsaGMwYm1RWE1RblByT2tOT2M2Q2lJWUhXQkNxQk1rTVk0bUV4WUFsbzE5bDlUbXM3V2JUOWRBL1ZyVHQ5Qml0VzFYUXNReUo2NjVaUEhVSHpzOWlneEx4Qm95cmdRSTRIdlFCektad1FWbUE1RHk4NnlZcXdmSVdkT0lGTUhJQ3NkMERRVFZZaHpWWGdFMUJtQVZ6ekVhQUk0RWFZei9ZREtrNkZ6cFhjTUhQUGt6bktDQ3RwOW9mZVp5QXdDRnlpQWtDbWV5UjFMcWRYUFdZMlFObUo1REtoRHRZZ1BiWWtNWFovNHRGaUN1QUF6OUJNNFIrLzBZMm43T0xkY2RCS2prb3lRQmpNOUExUkJiVWl5eXVuN0M3amw0TFQxcGp6QzdBWUFobVBFRXdrS0JxSURzRUM3OEk5cWMxakVlRStCNTMwV21GWDE0Mm11NnFjLzZ3QXhsd0FRWUlxZ3hqSFZhODhxSnd4VW1yd21tUFBseS9lcW9kRHlTejVYVWpZbTNGaXJhV3orNFdRU0taRVZxZ2lzTUVUYU9Pakd5b2FIZkZjTkZHbEJrTExERUxnK3gvSGN3L1VnUTdLcnNpUWc0cVpIbTIwZTZXMlp4eFNMZHB2SjJkK3dyczlUbERMQTBHa1VVMWR6UVR1NkRpR0pMTlkzd1d0QTBNcFB1QlM4SE9CWUVFODR0L1F0SDZPS3VYUWY5UjhQWlRhWStzWXZiK0JZWXpNUEtrZlJUbFBtSThIeHpNUUFiMTRNc0V1NUpRM0lMN3k0aUQ4MGhqczdoVlRPOEI5MXRvdDJwU1RNaEFCalNRL1hNVTVWZkJkN000MkVJSWw3Rm01UnlqSlh6aXo2Q3V0dlBjTjJSNi9VVFRoOFg5SDZmVitSdXFHYUEvVHE1K2dsNEZxZlVOTHZ6NS9hUUNKQTVLSmxvVzdHUXpReEltWStqNjFvWWp1TmJOMkRjTEdKaUJlSndCSlRCMFFRclczYkRDL3FBc3dwdUd0U1hNT2NqRWZoa2RvQ1BBWFdQSExFdnZuZTlqY2o1aUFlZTdoS2hxZThieGE4TDdXdXZpS2ZmZG5SLys1ajM2MG5PZVRwaE1pZ3hBWUpWNGFveFdGb1RLbFVFR0JuSUkwWDdaakpjSFZBbWIyRC9qZnpiUnN1OG9XZCt6dXNrZ2kvWWcrNTJqSWQ2SkdXWVFnZXlCUFpYTzNkQU5Gd2ZSZFRFbStUdGFwUjhSeko2UjNlaDB3ZlkzZkdiZmViZGRjK3pMVmxGckk0T3FEV3FEd0FLZ0E4QmJ3ZjhuS1FWQzYxTlVNNTloMVNTME90QWZ2WmlpOVFKTXNMaHRHY2tnTm5OUS9qTEtkMEE4aDVBWHFQdC9EOTFQRUZPbUdYWUpjUmxpaVRhalpncjNhYkpkaC9ST3hHK2hQRVdJY3lpOEg1cDNJMStrYnFBLy9CM1dyb1U3YnpqQW8vZkQxQkd3N2JaUE02eU9wQ2pPb2FuK2xmN3NCMmxQUVFSNnUwOWdaT1JrSEREN0p0VVFxaUdQU1JhWURHWlBGb2Nad2t5cit4Vy9HUXdyakVJOHJoV01aWUtWd09kZGZNaGQ1OFRDM3JscU1weGZ1MmdhVVFTamN0MFdzRmNYMGl1YWFKZktSUmEwSXFObE4zNWc2UDZ6TG4wTzdDR0RvOEdlRVlNOW5SREc2TG5QenVjM2JaemlvZVpBWHFieHNLMVZoT1hEU3BqWkJhWENSOHowQm9jNWxyaXpQSnE5dlN6dDBpb1RPeTFqVUduMjBXbS91NzNCdHJmYTNEK1l0Wk96WURUWmEzcFZtQnMyOXJ1dGtzck1rQmhQUWIrNHZoMStUekJsQmxtNnk0eTNKMk9GMEJhTFJyMllTU1YzUGJqcUtWK2JtVnYzVThUZWtaZ0Q4ZG00MzAzT0VBT1kvUnVSNjJtMUN0QTgxWDRJVTlCVW15bGI3OGZLWmVRK0xIL3laUlREVzZtYi9lRFRpTGVUMnFNTUZvYk03eDZ5K2hUSWZqVFcvemd4bllzREZpNmlHWjZDNmQ5b3BZenh4elM2aW1ad0JHT2o5MU9IMi9EZ1pJZFcrZnNVNmUyME9yRG5vUk9wZFNXblBnM1diTnBIdHJleHNEQkNxelhIeUNRMERpSEIvUFJHeGlaWFlQVmVjdk1RTXI1ZkdoblYrb1Y1T3kxRURuRkEySEdsd2x1aUFjWmh4aUV1N1RYWmZVTEhoRUtYRTNoYTVheWlobWhHQTlSWi8rVEdiN2puNzhqOUVTeGVIQ3djRDJLWVJUQXJrb1hudVBqSkFIMkR0b0tsZ2lVeVdQUkxKenY2aDFnRUZxZlovOGgyL2MwSngzTnFVWkp5QTJaNmhkQVdJL3lyUkxkVDhFekhOc3VnMHpLaWFXZUtlZ25HTFFNcERPYTVjaVRZeWJVTGkyYmRNdjVHblhXaFlWZUR1bVoydHN4T0c0MUsyYUdXM1NEcEpSWTBJTmg1WUFnREJ3TDNySXI3RnFrNERVdGdCakcrbWV4M0luMFJNOGlDZmpOZ2NHREE3Q09RYTVDOWlGaThEMXRZajljZ1FXZmlFdXJwOStMVkg1SEN2Wmc1K0J6OVBpejBsN0dPWDREOEZocGJqc1FoUmlJVzc2WVovZ0lwM29YVVlNMzFwQkxtNTJGUVFYdHFQYTN3djVDL0ZET1ltWWJUbnYzYnhQWU9lZ3NmWWQyeE1Ld3lnMnFlbGoyYk9oK0w2eTlvdDBSYWZSRzVCdVZ2NEhvWXhQZEx1dzl3M25oYkhYY3dRSUlpUXBGZ1dBbDNzTUFROFlqZzlpYjdya1FZaVlVOUg3TjFMaEVFalhEUTlZdERmMzgwUHROcUJjOUFJKzBJMlg4cHBYQzVzR01kSVFseFNCU01HbENZTVdnMGJkYTh2b1UrN2Rud0RKMElldzdvWTJzYWY5cnFrZmh6dlZrbm04emd6R0RoVEFFUkVZTlJaZEVmYXV0WWwxZW54SFdHeUFmY0xkdGZ4ekY3VnRtMjgvcDlzU1NtWk9lNGN3NFlCemxHUHd0My81Y1F3cHN3dGcxckptSVJuaG1DZ2FBVEttWTBkZHZuOVR3b09Rdm1PVVJhVFF5WEkvOFk4RlZjRHpCMEdNNnZZemc0aGJYSFA1TW1QNU84V0JJVGg1aEJOUTkwZm9HeWZTR2V2d2kyQzI5RWQveEl5dllGREJlUEJrcENBbkdZWjdCNEZtWDdNOERsb09zdzdTYW1rcm4rTVhqOUZMcnBlZURIMFRpWWdXZG9qWGFvNi9jU2VEYkQzcTFrYjJpWHgrUDJYRktNaUo4bTJEaXhQQTAxNE54TXRsbU1KMGpiOXRuWlp4eG5ET2ZrQkJRQ3cyR2poY1ZLMDJXeW5nVmx5ZVl4VEhCY0N1RUNDNHpXV1ZuaTNtUzZyd2pjT1plNXZzcTZPc3IyU2VJeEJwaTRidUQ1eFFHN0xKbTkwTUZTTUNSd2lTTFNtNm4xand1VjNydXl4YzBza1VSck10RHBHaWRNc1pDQy9hcXl6d3E5TWtVcnpJMUdBb3hhMEU3YTQ1V3U3QS8xSjJQZGNEOENCS3BFdTlTT25NUEw5ODN6NXhOdFBTc1JHR1lvQWtqZ0VnbS9aOTlRSHk0amwzZUQ3UjlVam1BQ09CV0pROFRpUGx2KzJmdDEzQmJFNllRYUNEWHVodGthaXVMTm9OZVF3bjVHQ3FOWVBzbXlJOGFJUmFMdVE2NGJRaUVRaHhsZ0VleG9USy9qb0p5aDFZR1JTUmpNQzFFVEFrK2tRRXhiVUg0WGhCa0lzN2hLcHBZdncyd0VyMW5pbURXQUVTSU1lbUEyU296UFIvNThZb1FFdUFDRFlKY2dCM09XT0hBZFFmeDdhZlBxOE1GcVVaL0VhRUFLd1JaN2ZlWVhLeTBldWRLeUdwc2FWa3pHU050Z0JPVElwcHRHTTJBTEtYRUFtSGZSdUtCZ2lmRkVCbG42bHNQL2tPdUtZUGFVb2V1b0VHd1lwSHZxeHI5ZUs5emtNRFMrVHpTc01Eb0pBdXoyckRjT2gvbnZLc1ZuV05EeExRaVlwdDExaXpKZms3VFZ6REtQTVNBQUJpSHc0TjQ1dmVUaFBmNlRXOWJ5bExKZ3c2REN6TmlaVE5lWStIcVdIaExHOUVKTjNZaVU3TUJJYWE4UmdTQWxFb3RmcUo5MTgxMzk0MWZRN2IrU1FNWlZBWVprbUxXUnVoaHR5Z1FoMUJpTFZJc0RqRXhJZ1BORURRZ0RFcEFJQnJsdXlFMkRtVENXaUIrZ0pnQWRqQkhNRXBLSWNRajBhT29oWmc0WWp6R1d5SkFpVUNBSFVRTU5CMGtSY0VRYmJCYTRpUi9pL3dIM0Q1UE1wZDJ0NVFBQUFBQkpSVTVFcmtKZ2dnPT0iLCJzdXBwb3J0ZWRFeHRlbnNpb25zIjpbeyJpZCI6ImNyZWRQcm90ZWN0IiwiZmFpbF9pZl91bmtub3duIjpmYWxzZX0seyJpZCI6ImhtYWMtc2VjcmV0IiwiZmFpbF9pZl91bmtub3duIjpmYWxzZX1dLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJGSURPXzJfMCJdLCJhYWd1aWQiOiJiYmY0YjZhNy02NzlkLWY2ZmMtYzRmMi04YWMwZGRmOTAxNWEifX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjAtMDgtMDMiLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6ImVTZWN1IEZJRE8ywq4gUHJvIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAxOTEyMTAwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMS4xIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjMifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjAtMDgtMDMifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIwLTA4LTAzIn0seyJhYWd1aWQiOiIzZTIyNDE1ZC03ZmRmLTRlYTQtOGEwYy1kZDYwYzQyNDliOWQiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjNlMjI0MTVkLTdmZGYtNGVhNC04YTBjLWRkNjBjNDI0OWI5ZCIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJGZWl0aWFuIGllUGFzcyBGSURPIEF1dGhlbnRpY2F0b3IifSwiZGVzY3JpcHRpb24iOiJGZWl0aWFuIGllUGFzcyBGSURPIEF1dGhlbnRpY2F0b3IiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlCZmpDQ0FTV2dBd0lCQWdJQkFUQUtCZ2dxaGtqT1BRUURBakFYTVJVd0V3WURWUVFEREF4R1ZDQkdTVVJQSURBeU1EQXdJQmNOTVRZd05UQXhNREF3TURBd1doZ1BNakExTURBMU1ERXdNREF3TURCYU1CY3hGVEFUQmdOVkJBTU1ERVpVSUVaSlJFOGdNREl3TURCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQk5CbXJScVZPeHp0VEpWTjE5dnRkcWNMN3RLUWVvbDJubk0yL3lZZ3Zrc1pucjUwU0tiVmdJRWt6SFFWT3U4MExWRUUzbFZoZU8xSGpnZ3hBbFQ2bzRXallEQmVNQjBHQTFVZERnUVdCQlJKRldRdDFidkczak02WGdtVi9JY2pOdE8vQ3pBZkJnTlZIU01FR0RBV2dCUkpGV1F0MWJ2RzNqTTZYZ21WL0ljak50Ty9DekFNQmdOVkhSTUVCVEFEQVFIL01BNEdBMVVkRHdFQi93UUVBd0lCQmpBS0JnZ3Foa2pPUFFRREFnTkhBREJFQWlBd2ZQcWdJV0lVQitRQkJhVkdzZEh5MHM1Uk14bGt6cFNYL3pTeVRabVVwUUlnQjJ3SjZuWlJNOG9YL25BNDNSaDZTSm92TTJYd0NDSC8vK0xpckJBYkIwTT0iLCJNSUlCMkRDQ0FYNmdBd0lCQWdJUUZaOTd3czJKR1BFb2E1TkkrcDh6MWpBS0JnZ3Foa2pPUFFRREFqQkxNUXN3Q1FZRFZRUUdFd0pEVGpFZE1Cc0dBMVVFQ2d3VVJtVnBkR2xoYmlCVVpXTm9ibTlzYjJkcFpYTXhIVEFiQmdOVkJBTU1GRVpsYVhScFlXNGdSa2xFVHlCU2IyOTBJRU5CTUNBWERURTRNRFF3TVRBd01EQXdNRm9ZRHpJd05EZ3dNek14TWpNMU9UVTVXakJMTVFzd0NRWURWUVFHRXdKRFRqRWRNQnNHQTFVRUNnd1VSbVZwZEdsaGJpQlVaV05vYm05c2IyZHBaWE14SFRBYkJnTlZCQU1NRkVabGFYUnBZVzRnUmtsRVR5QlNiMjkwSUVOQk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRW5mQUtianZNWDFFeTFiNmsrV1FRZE5WTXQ5SmdHV3lKM1B2TTRCU0s1WHFUZm8rKzBvQWovNHRud3lJTDBIRkJSOVN0K2t0anFTWERmamlYQXVyczg2TkNNRUF3SFFZRFZSME9CQllFRk5HaG1FMkJmOE81YS9ZSFo3MVFFdjZRUmZGVU1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0RnWURWUjBQQVFIL0JBUURBZ0VHTUFvR0NDcUdTTTQ5QkFNQ0EwZ0FNRVVDSVFDM3NUMWxCakdlRit4S1RwelYxS1lVMmNrYWhUZDRtTEp5ellPaGFIdjRpZ0lnRDJKWWtmeUg1UTRCcG84cnJvTzBJdDdvWWpGMmtneS9lU1ozVTlHbGFxdz0iLCJNSUlCMkRDQ0FYNmdBd0lCQWdJUUdCVXJRYmREcm0yMEZabkRzWDJDQlRBS0JnZ3Foa2pPUFFRREFqQkxNUXN3Q1FZRFZRUUdFd0pWVXpFZE1Cc0dBMVVFQ2d3VVJtVnBkR2xoYmlCVVpXTm9ibTlzYjJkcFpYTXhIVEFiQmdOVkJBTU1GRVpsYVhScFlXNGdSa2xFVHlCU2IyOTBJRU5CTUNBWERURTRNRFF3TVRBd01EQXdNRm9ZRHpJd05EZ3dNek14TWpNMU9UVTVXakJMTVFzd0NRWURWUVFHRXdKVlV6RWRNQnNHQTFVRUNnd1VSbVZwZEdsaGJpQlVaV05vYm05c2IyZHBaWE14SFRBYkJnTlZCQU1NRkVabGFYUnBZVzRnUmtsRVR5QlNiMjkwSUVOQk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRXNGWUVFaGlKdXFxbk1nUWpTaWl2QmpWN0RHQ1RmNFhCQkgvQjd1dlpzS3hYU2hGMEw4dURJU1dVdmNFeGl4UnM2Z0Izb2xkU3Jqb3g2TDhUOTROT3pxTkNNRUF3SFFZRFZSME9CQllFRkV1OWh5WVJyUnlKendSWXZuRFNDSXhyRmlPM01BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0RnWURWUjBQQVFIL0JBUURBZ0VHTUFvR0NDcUdTTTQ5QkFNQ0EwZ0FNRVVDSURIU2IybWJOREFVTlh2cFBVMG9XS2VOeWUwZlEybDlEMDFBUjIrc0xaZGhBaUVBbzN3ejY4NElGTVZzQ0NSbXVKcXhINkZRUkVTTnFlenVvMUUrS2tHeFd1TT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBRkFBQUFBVUNBTUFBQUF0QmtybEFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFCSFpwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFBRHcvZUhCaFkydGxkQ0JpWldkcGJqMGk3N3UvSWlCcFpEMGlWelZOTUUxd1EyVm9hVWg2Y21WVGVrNVVZM3ByWXpsa0lqOCtJRHg0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJa0ZrYjJKbElGaE5VQ0JEYjNKbElEVXVOaTFqTURFMElEYzVMakUxTmpjNU55d2dNakF4TkM4d09DOHlNQzB3T1RvMU16b3dNaUFnSUNBZ0lDQWdJajRnUEhKa1pqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWo0Z1BISmtaanBFWlhOamNtbHdkR2x2YmlCeVpHWTZZV0p2ZFhROUlpSWdlRzFzYm5NNmVHMXdQU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2SWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhodGJHNXpPbkJvYjNSdmMyaHZjRDBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5d2FHOTBiM05vYjNBdk1TNHdMeUlnZUcxc2JuTTZlRzF3VFUwOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXRiUzhpSUhodGJHNXpPbk4wVW1WbVBTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZjMVI1Y0dVdlVtVnpiM1Z5WTJWU1pXWWpJaUI0YlhBNlEzSmxZWFJ2Y2xSdmIydzlJa0ZrYjJKbElGQm9iM1J2YzJodmNDQkRReUF5TURFMElDaE5ZV05wYm5SdmMyZ3BJaUI0YlhBNlEzSmxZWFJsUkdGMFpUMGlNakF4TmkweE1pMHpNRlF4TkRvek16b3dPQ3N3T0Rvd01DSWdlRzF3T2sxdlpHbG1lVVJoZEdVOUlqSXdNVFl0TVRJdE16QlVNRGM2TXpFNk5Ua3JNRGc2TURBaUlIaHRjRHBOWlhSaFpHRjBZVVJoZEdVOUlqSXdNVFl0TVRJdE16QlVNRGM2TXpFNk5Ua3JNRGc2TURBaUlHUmpPbVp2Y20xaGREMGlhVzFoWjJVdmNHNW5JaUJ3YUc5MGIzTm9iM0E2U0dsemRHOXllVDBpTWpBeE5pMHhNaTB6TUZReE5Ub3pNRG95Tnlzd09Eb3dNQ1lqZURrNzVwYUg1THUySU9hY3F1YWdoK21pbUMweElPVzNzdWFKaytXOGdDWWplRUU3SWlCNGJYQk5UVHBKYm5OMFlXNWpaVWxFUFNKNGJYQXVhV2xrT2pKRk56RkNSa1pEUXpZM1JqRXhSVFk1TnpoRVFUbERRa0kyTkRZelJqa3dJaUI0YlhCTlRUcEViMk4xYldWdWRFbEVQU0o0YlhBdVpHbGtPakpGTnpGQ1JrWkVRelkzUmpFeFJUWTVOemhFUVRsRFFrSTJORFl6Umprd0lqNGdQSGh0Y0UxTk9rUmxjbWwyWldSR2NtOXRJSE4wVW1WbU9tbHVjM1JoYm1ObFNVUTlJbmh0Y0M1cGFXUTZNa1UzTVVKR1JrRkROamRHTVRGRk5qazNPRVJCT1VOQ1FqWTBOak5HT1RBaUlITjBVbVZtT21SdlkzVnRaVzUwU1VROUluaHRjQzVrYVdRNk1rVTNNVUpHUmtKRE5qZEdNVEZGTmprM09FUkJPVU5DUWpZME5qTkdPVEFpTHo0Z1BDOXlaR1k2UkdWelkzSnBjSFJwYjI0K0lEd3ZjbVJtT2xKRVJqNGdQQzk0T25odGNHMWxkR0UrSUR3L2VIQmhZMnRsZENCbGJtUTlJbklpUHo0NzdKWEZBQUFBWUZCTVZFWC8vLzhFVnFJWFphdkcyT29xY0xHMnpPT2t3dDBCU0p0cWxjWFY0dSthdXRsV2hiems3UFVBTVk5SGNyS2p0TmJxOGZlQWw4YUJvc3p6OXZwZGpzR0dxdEYzbjh1VHNOU1pwYzZKc05UNSt2MHhZS251OFBmZjUvTDQ4ZmcvZnJpY3pKZ1lBQUFEQUVsRVFWUjQya1JVQ1piRElBakZYWk9ZMVRhdE5jMzliemtzU1ljM3I0TUU0Zk1CQWFENnpsOHkvOVRPZ2V0OGQ1amZONzhid00vZERDUnBSNTIxelhmb2pISjA1SUl5aEJBVVNWQU9OZEd6Qll0MmY3S0ZyZmtKYUFrSGg5RlpoY0RYSFJrVEtvOU1MaWhHYWF2SW1uVjNxeUVYMEVwcmd6LzREd1VEN2tDSFJuZDhRRk40M0dvNFVWbUREZ3phNHcyN29pemRBMitjSyt1dVVwampvMit4d2MvNDJXNTB4NUxHWWVEQnNSMEhWSXg1eDhpRjYwQ2JsYlRFRWtGcjI3Yk5EQlVWU3ExT0tWUGJFNjJiM0VIOEZxQmc1T09PRXVjMnQ4WkppcU1PdUdwK2NLamc3d1ZHY2VvenFONHB4Z1ZQUWtqRllnYlZKS0RVaERDallyYXdQNXE0RVRnQzlmSU1SSHRpdHBRY0N2Sk9FTGNiTXNRZ25jaVJrbGpweVFqdkc0NGpxQlVFVEZpQmkxUEVJeWVrT3pzVytUeTVjTEhvczVSK2RNUzFMdFNTeGYzZ1FIY3pSMkNJNGdNTnBXNElSQTFRTWE2dEo0K0M2dUh1R0U4bU5ESXlGcWcvT1AvTU1VdWVTNklxOFM5MGRBZUJKU0V5L3FLa0srQk53ejhjWVk0amI1SjZ1NGlXQ0kyQjFaNTZMVzVrRWM0aGtkTXBzdlVDNTU4NVNYMFF1YmNnTnF5ZmdERkVjVHQrNDAvMFM1Tngwd2FDdzNPS2tjT2JBNUluMEFZcDAxcGpqdzJuNjI2VURqdEh3YTI4aUh1VEtxdHJ2K3JlVzQxTlo2aUdscjd1dUxKQ2ZrRnRjdGNHMDRzZ20xZU5TK1phRG5wYVRFckdveVg1SksyaU16OHhzMG5Pd1dHY1BETjQ5cWFDZDRiekpvekRabS9hQksrRW96THcrWGhOQmlZd0hmMHNpT3UxWFBrRy96S3d2cVlLY2ZTd0RFY0gvb1VlMDdlcy9XUThySXlnMkRPWGo4dGprWmR1REIvYjhoekRsbE1NT0NTNUJFbmQ1MzRmOHRpM1VaYzRrTXMzeEx5YWZNU3NKaGRHOFhQcWpOazV0QWdPMjVmZUtDaG5WZERqL0owRk1rT3NVL3hNQnYwd0ZoWWVFR2ZWSDEzZnVEVTB5REZMYTRmYzdSbldIQmZ1VEZWMnRFbU53YWRjN2FjM1VZMmpmQmw3SFQzNmZlMzRpUU81bU5DRkZCVzA3S2pQZ3FoT0xVMDF2WjhQdWVaMkpDbEZaTjhqa1VzNjl1a2E5ZVBwNitFZkw0QUY1K055d1NiaXJIdGNCOE1sL2drd0FFamtLNjRLakhQZUFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xX1BSRSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiM2UyMjQxNWQ3ZmRmNGVhNDhhMGNkZDYwYzQyNDliOWQiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZX0sIm1heE1zZ1NpemUiOjEwMjQsInBpblV2QXV0aFByb3RvY29scyI6WzFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjYsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6OTYsInRyYW5zcG9ydHMiOlsidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN31dfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjAtMDQtMjQiLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IkZlaXRpYW4gaWVQYXNzIEZJRE_CriIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjAwNDE3MDAyIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjIiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMyJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMC0wNC0yNCJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjAtMDQtMjQifSx7ImFhZ3VpZCI6ImFiN2QxNzY3LTNmYTAtNDM4OC1iNmM0LWZlZWY3YTg0NDgwOSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiYWI3ZDE3NjctM2ZhMC00Mzg4LWI2YzQtZmVlZjdhODQ0ODA5IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkVudGVycHJpc2UgU2VjdXJpdHkgS2V5IFNlcmllcyB3aXRoIE5GQyAoRW50ZXJwcmlzZSBQcm9maWxlKSJ9LCJkZXNjcmlwdGlvbiI6IkVudGVycHJpc2UgU2VjdXJpdHkgS2V5IFNlcmllcyB3aXRoIE5GQyAoRW50ZXJwcmlzZSBQcm9maWxlKSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk3MjgsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfSx7Im1ham9yIjoxLCJtaW5vciI6M30seyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3IiwiZWQyNTUxOV9lZGRzYV9zaGE1MTJfcmF3Iiwic2VjcDM4NHIxX2VjZHNhX3NoYTM4NF9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo2LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo2LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwiaXNLZXlSZXN0cmljdGVkIjp0cnVlLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsIm5mYyIsInNtYXJ0LWNhcmQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURTRENDQWpDZ0F3SUJBZ0lVVWNtTVh6UklGT2dHVEswVGIzZ0V1Wllaa0JJd0RRWUpLb1pJaHZjTkFRRUxCUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JCSURFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURtNTU1YldZOVdXK3RPWTBySVdIbGRoK2FOYW5vQ1pDRmg3R2szWVpyUW1QVXcwaGtTRzZxWUhRdFArZlp5UzMzVkVydmcrQlFxbm11bWdOaGZ4RnJrd0VaRUxlaWRCY0M4QzRBZzRucXFpUFdwenN2STE3TmN4WWxJbkxOTEZjWlkvK2dPaU42Wk9UaWhPNS92QlpNYmo5cmlhQWNxbGlZbU5HSlBnVGNNR2FFQXlNekVNTnkybm02RXArcGpQNWFGNmdpMjF0L1VRRnN1SjFqMlJqL3luTS9TZFJ0K2VjYWw1T1lvdHhIa0ZiTDl2dnYyQTJPdjVJVFpDbHc0Yk9TOW5weXBRaW1PWjVRQVl5dG1ZYVFwV2wvcE1ZejZ6U2o4UnFrVkRORUpHcU5mVEtBMml2TFl3WDZsU3R0TVBhcGcwSjg0bDlYMHZvVk4vRnBTNFZDVkFnTUJBQUdqWmpCa01CMEdBMVVkRGdRV0JCUWdLRkFoRzZSYVcraFR5NTJkeGVUOGJDOTZIekFmQmdOVkhTTUVHREFXZ0JUUzd1OWFJbzA2YlZ3amx6M3loZFVtOFNWN2tqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQTRHQTFVZER3RUIvd1FFQXdJQmhqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFZTXpnTHJKTElyME9vdlFuQVpyUklHdWFiaUhTVUtTbWJMUldwUmtXZUF0c0NoREVIcFhjSi9iZ0ROS1lXb0hxUTh4UlVqQjRDeWVwWWV2YzNZbHJHOG83ekh4cGZWY2FvTDVTZXVKa3pIeEtuNGJUYVNwOStNdndhbW5wNjRrWk1pTmJGTGtuZlA5a1lLb1JIa01XaGVSSjFVc1AxejRTY21rQ2VJTGZzTXM2dnFvdnFqV0NsRnNKcEJjc2x1WUhXRjdiQkoxbjRSd2crQVRFb3BZNElnR3Y2WnZ3YytBOXIrQVQyaHFwb1NrWW9BbCtBTll3Z3NsT2Y5c0plMFYrVEE5WVkvVWxhQm1QUFRkMC8vcjl3dmNlUFdaa1BqS29BQy96VU5oZkRiaDRMVjhHSHMzbHlYMlhvbUwvTE5jOEpZenlJYURFaEdRdmVvUGhoL3RyMWc9PSIsIk1JSURQakNDQWlhZ0F3SUJBZ0lVWHplaUVESkVPVHQxNEY1bjBvNlpmL2JCd2lVd0RRWUpLb1pJaHZjTkFRRU5CUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTVo2L1R4TThySVQrRWFvUHZHODFvbnRNT28vMm1RMlJCd0pIUzBRWmN4VmFOWHZsMTJMVWhCWjVMbWlCU2NJWmQxUm54MW9kNTg1aCsvZGhLN2hFbTdKQUFMa0tLdHMxZk81M0tHTkxadWp6NWgzd0duY3I0aHlLRjBHNzRiL1UzSzloRTVtR05ENnpxWWNoQ1JBSGZyWU1ZUkRGNFlMMFg0RDVuR2R4dnBwQXk2bmtFbXRXbU1ud08zaTBUQXVjc3JiRTQ4NUh2R000cjBWcGdWZEpwdmdRamlUSkNUSXErRDM1aHd0VDhRREl2K25HdnBjeWk1d2NJZkNrenlDaW1KdWtoWXk2S29xTk1LUUVkcE5pU092V3lETVRNdDFid0N2RXpwdzkxdSttc1V0NHJqMGVmbk85czBaT3dkd01SRG5INHhnVWw1Wkx3cnJQa2ZDMS8wQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQjhHQTFVZEl3UVlNQmFBRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRTXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJEUVVBQTRJQkFRQzNJVy9zZ0I5cFo4YXBKTmp4dUdvWCtGa0lMa3Mwd01OcmRYTC9jb1V2c3JoenN2bDZtZVBNcmJHSkJ5SjFYbnF1QjVzZ2NSRU5GeGRRRm1hM21pbzhVcGYxb3dNMVpyZVhySjBtQURHMkJwbHFiSm54aXlZYStSMTFyZUlGVFdlSWhNTmNaS3NEWnJGQXlQdUZqQ1dTUXZKbU5XZTltRlJZRmdOaFhKS2tYSWI1SDFYZ0VEbHdpZWRZUk03Vm9sQk5sbGQ2cFJGS2xYOHVzdDZPVE1PZUFEbDJ4TkYwbTFMVGhTZGV1WHZEeUMxZzkrSUxmejNTNk9JWWdjM2lyb1JjRkQzNTRnN3JLZnU2N3FGQXc5Z0M0eWkweEJUUHJZOTVyaDQvSHFhVVlDQS9MOGxkUms2SDdYazM1RCtXVnBtcTJTaC94VDVIaUZ1aGY0d0piMGJLIiwiTUlJRFNEQ0NBakNnQXdJQkFnSVVEcUVSdys0Um5HU2dneGdVZXdKRkVQRFJaM1l3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRREk3WG5IK1p2RHdNQ1FVOE04WmVWNXFzY3VibHZWWWFhUnQzWWJheG45Z29kTHg1c3dIMGxYcmRnamg1aDdGcFZnQ2dZWVg3RTRibDF2YnpVTGVtck1XVDhOM1dNR1VlOFFBSmJCZWlvVjdXL0UraFRaUC8wU0tKVmEzZXdLQm82VUxlTW5mUVpEclZPUkFrOHdUTHEydjVMbGo1dk1qN0p0T290S2E5SjduSFM4a0xtelhYU2FqMFN3RVBoNU9BWlVUTlY0enMxYnZvVEFRUVdyTDQvSjlRdUt0NldDRkU1blVOaVJRY0ViVkY4bWxxSzJieDJ6Nm9rVmx0eURWTEN4WWJwVVRFTHZZMXVzUjNEVEdQVW9JQ2xPbTRjcnB3bkRSTFZIdmpZZVBHQkIvL3BFeXp4QS9nY1NjeGp3YUgxWlV3OWJuU2JIeXVyS3FiVGExS3ZqQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJUcXQwS1FuZ3g3WkhyYlZId0R1bnhPbjlpaFlUQWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQXFRYUNXTXhUR3FWVlg3U2s3a2tKbVV1ZVRTWUt1VTYrS0JCU2d3SVJubHc5SzdIZTFJcHhaMGhkd3BQTmlrS2ptY3lGZ0ZQemhJbXdISmd4eHVUOTBQdzN2WU9kY0pKTmt0RGczNVBYT2Z6U24xNWNGQXgxUk8wbVBUbUliOGRYaUVXT3B6b1h2ZHdYRE00MVphQ0RZTVQ3dzRJUXRNeXZFN3hVQlpxMmJqdEFucS9ORFVBN2JlNEg4SDNpcEMrLytOS2xVcmNVaCtqNDhLNjdXSTB1MW02RmVRdWVCQTduMDZqODI1cnFEcXNhTHM5VGI3S0FIQXc4UG1yV2FOUEcya2pLZXJ4UEVmZWNpdmxGYXdwMlJXWnZ4clZ0bjNUVjJTQnh5Q0pDa1hzTkQwNWRDRXJWSFNKSXMrQmR0VFZOWTlBd3R5UG1ueWIwdjRtU1R6dldkdz09IiwiTUlJRFNqQ0NBaktnQXdJQkFnSVVUbmJiR0lSMk5IdnpxSUtGQWVRd0cxWEJpczB3RFFZSktvWklodmNOQVFFTEJRQXdMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3SUJjTk1qUXhNakF4TURBd01EQXdXaGdQT1RrNU9URXlNekV5TXpVNU5UbGFNQ1l4SkRBaUJnTlZCQU1NRzFsMVltbGpieUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRUVnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBT3NYajNrMDRCYW40VFlkdFpLcUQvT1BKeHlEeWFQbUNCVUZVaWFaSWdUdGVabmozWDI1RGhncFpaWHNDNEQweWRJY3JsQTZ3TlVJbk9STC9MOXpCYlRFSU1BVk1HbzZnN1VLQW1iMk1GNkFIYm5oWUpkOWVpa3VwVk5XU2hITllOYzRHQmRPMVlONkFmVXF2SmhIYmUzVjRTTk1QbUJSRUtKUFZ6N1Rod2dtZ2dUZThXczJLMC93c3F2MndTRTdwYkNCc1VaaElYNTFiWk0zcHFEd0pQVG1SRkV2dDAvNnRHNWVPOEYzajE0T1hxZkVobWpuMVZ2eEtEWVFPTFpBeEN3d2dDMFA0Q2RmV3YzeThQU1I4STM1NGhPMVkrR3pOanZJcVgzOE5LTHl3dUlZSEZlck94Tmx4RU1CdkZoWUJ1UnVZQWtrZ1VhUHFONlVCaHNJTHJzQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZDQ29SSGhpeU5uYm5YUldJTDZaQlhvQlg5WVRNQjhHQTFVZEl3UVlNQmFBRkNBb1VDRWJwRnBiNkZQTG5aM0Y1UHhzTDNvZk1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQ1FGYWZKSTEvNVdnOUNFRWltRTFSUDU0UmdRd1ROVE9PUXNMQUNUZStySXRsRlF6QzlaRGhyVjgyOHlYN2p6eStBQXNwM2l6SzdUMXRoMmRsN20rdHUwc3cyUGEvb2xjMDJudDZQeUl3MzQ4Z2FIemhJMSswS0U0NXF4dkZEZUwybE14YlBmQ1l2eUVFYVl6amlRRUxVNTk1MXBYR1d5S01hLzRmTHRPK1pLT1hoTXVWZXE0clhEUEk1NFc2SkhPaUFhaUtkaXcrNWUzYzJrdC9qRklRdE02dk1YZzlMTkZ6ZGpFVE50MjBWWDlRZXZScEZaZnVjTUc5d0NhUURvRmxQenBUTUpLaFBldi9pbUptWlloS2ZyMGxMY2VtdHFqSXhMQW9xWmRPWWZIQmc2K3ZBY2RQSS9pYXVHcFVBdjdYK1VLTm1Ed2paMkJhSDRzTHdoQjJtIiwiTUlJRFNqQ0NBaktnQXdJQkFnSVVSMzhtcTI2U2Yyc3pWVjJCZEc2V0VON2t1V1V3RFFZSktvWklodmNOQVFFTEJRQXdMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3SUJjTk1qUXhNakF4TURBd01EQXdXaGdQT1RrNU9URXlNekV5TXpVNU5UbGFNQ1l4SkRBaUJnTlZCQU1NRzFsMVltbGpieUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRUlnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTlkwV2I5b1BvUm9Lb1F5V1BhSnB6MTF2cldUZzZ6VHRtTmoyVm9LUm55dktHUnFwemI4M3c1bDZZQTk2VVlrWUJEUVAwaWxPMkRQZTZ3V3FWUjV6RGZSemRjSDhiaCtMN2RHR3ZhZTZoUlRaaGtGa0NwWERzNEhjY2tuckRmOEZDbEo3SGUzOUpmNDIvRzFRbTJ6ejlXV21yUFh0Z2lLL3gwNUdqc1FmR3VERzF6ZjVRVFVVaWU4bHd5bUszVGZkT3ZOZWVKQUFQZTJwbjdJdGZSYityVnJOV2lEemxSbjJ2Tm5aMndQbzR3SC9XSjZkaFhaRytyTVdUK2E2Qm9jZzFVZkl3NmtkdW5HNGJUcFp6c3ZhY0ZZeVIwbXBmK0RlT25wU1dBbXl3SldIdlRsZjJZWHhGeWVYY1RBQ2RRbGNNTkdKMlZoWlE0OHh0UDUvUkJQLzhrQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZDaHk0Mm9raXFjVFMxaXFhL0hSV2prQm40SC9NQjhHQTFVZEl3UVlNQmFBRk9xM1FwQ2VESHRrZXR0VWZBTzZmRTZmMktGaE1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQW4rUkhJUGJ0TUVETmRUMWc4SC9SaXRBa1VkTGdBdDF0V0dXbmxqOWtuYnY0LzRHbFg3QzlwNDVlZlBPOS9hWkw2T1YxWFJLQmk2S210Qlc1SzdudVlFbk14LzVCcUJTYkxUN3JoZHVDNDlUQmVNYjlQSGRYc1RsU1ZOWWVmcjFkR2lkcjRqMHhWQlFMYjFya25EQWJkV0R6S2Z2bmF5S084RnJ3ZTdIeDg0M01HL3JKK2MwWHJ1VXZiZlZUQ0hMaUlXaE03b05EaEw4eG9iNnhVbzlLTEtjU0wrSXRZc08zLzlXYjhROUdqc3FMNEZYc0RjRzFTYVloN0twZnVNbU9peHF6SlpPMm5JaWNQWVJnMUkyU3VpVWZZTzcwdG1kSGNibCtrU1FtU1l0N3JxNHZpSUxnMkd4M2o5cklUdVdUamJhVWFTU1F4Z09tTVNIdXl6TUFDIiwiTUlJRFJ6Q0NBakdnQXdJQkFnSVVleDluVDl2d1pOWFM0ODNMZGlZR2Z3MlNqU293Q3dZSktvWklodmNOQVFFTE1DNHhMREFxQmdOVkJBTU1JMWwxWW1samJ5QkJkSFJsYzNSaGRHbHZiaUJKYm5SbGNtMWxaR2xoZEdVZ1FpQXhNQ0FYRFRJMU1EZ3dNVEF3TURBd01Gb1lEems1T1RreE1qTXhNak0xT1RVNVdqQW5NU1V3SXdZRFZRUUREQnhaZFdKcFkyOGdSa2xFVHlCQmRIUmxjM1JoZEdsdmJpQkNNaUF4TUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUF1MU1ldm55OWR5TzlaVUMzOVNvTWhMY1IvRFhydEYvY2lNMTJ0Y2l5MkVYQVo2TWtyaXZWdENmRVZNOVg2SVNURW5CUDZ1U1lZb3Y2cHB2Nk82SmgyTkhtWW00dytKblM0Vm5DUFU3bUhBTWZWSTJNR1RUTVZPZXcweFVzRzdzSVNJa0lEVUJtdWs4WUs5YzV6aWM5K3ZGUUdMSWtzZFhPNWlWRklnTkc1M2NHWEQ0Wkxab0FQaXUwUEVvenhBcVlJYUk0Z3hLaE9BM1M4L1c4bUlXc3U2b2Z5ajRHdmtGRzZaN2t5RjMxMDdQN213RkhMckkzRU5hUFdNT0ZjVGFHYTBkdysvdlZSd2pSY0VaQlZzdXVULzg3Y2tTczBhNXBrdDN2WkJsYVllVDhwelNyZVY3bW93Y0lNOTBMMmlhQVRsUDBueG1hRTZuT3lUYm9qRlZsMndJREFRQUJvMll3WkRBZEJnTlZIUTRFRmdRVVNYRWgzc2EzYnREdXJtNE1NL0M3UzFsUnV1WXdId1lEVlIwakJCZ3dGb0FVNnJkQ2tKNE1lMlI2MjFSOEE3cDhUcC9Zb1dFd0VnWURWUjBUQVFIL0JBZ3dCZ0VCL3dJQkFEQU9CZ05WSFE4QkFmOEVCQU1DQVlZd0N3WUpLb1pJaHZjTkFRRUxBNElCQVFCNUdjM2hhZnRwN2hLc0Vac28raS9aNW5SdXFkbXpHMldDbFVvUlVxYmFQeWdsbkpEaktSL2tmZ09sNmliYkYvenRobTNLbVhRN0hjRElQMnhNZEc3VTJMMmltYkpRSHFQZi9oMkhxb2piNHJaZ3VlKzZXNGt0U1I1ZWxSOUwxcllxRS9TR1lNNGlFS29WUVN2N1JUMXJ4SWVXaUtzdy9WeHhpL1FPbnN4M0Y3eDgwQ0NZZ0I0RTN5UXg4VlRXNDQwaFRFd1RBMWVNSE9peDMydFB0eXlISWE4UFZWSWZWcEhRSkJhTVZ2djUwOFVFandrYlUycm5qZnpvU1ROUzlBNWpVUThtQlN2ZTk1cmpCMGRvOThFVStEeGRCcVgyK0g2aTV3bElDRmd6aGR6Y3NuZTloR0tUNmx6VFg0Y0lkSnNyWTIreGxlSzBGRlF5NmxHRVZMRWUiXSwiaWNvbiI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsImljb25EYXJrIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwicHJvdmlkZXJMb2dvTGlnaHQiOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJwcm92aWRlckxvZ29EYXJrIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMV9QUkUiLCJGSURPXzJfMSIsIkZJRE9fMl8zIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsImxhcmdlQmxvYktleSIsImNyZWRCbG9iIiwibWluUGluTGVuZ3RoIiwiaG1hYy1zZWNyZXQtbWMiLCJ0aGlyZFBhcnR5UGF5bWVudCIsInByZXZpZXdTaWduIl0sImFhZ3VpZCI6ImFiN2QxNzY3M2ZhMDQzODhiNmM0ZmVlZjdhODQ0ODA5Iiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6dHJ1ZSwidXAiOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJsYXJnZUJsb2JzIjp0cnVlLCJlcCI6ZmFsc2UsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsInBlckNyZWRNZ210Uk8iOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjp0cnVlLCJhbHdheXNVdiI6ZmFsc2V9LCJtYXhNc2dTaXplIjoxNTM2LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjgsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4LCJ0cmFuc3BvcnRzIjpbIm5mYyIsInVzYiIsInNtYXJ0LWNhcmQiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotOH0seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTM1fV0sIm1heFNlcmlhbGl6ZWRMYXJnZUJsb2JBcnJheSI6NDA5NiwiZm9yY2VQSU5DaGFuZ2UiOmZhbHNlLCJtaW5QSU5MZW5ndGgiOjYsImZpcm13YXJlVmVyc2lvbiI6MzI5NzI4LCJtYXhDcmVkQmxvYkxlbmd0aCI6MzIsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjoxLCJyZW1haW5pbmdEaXNjb3ZlcmFibGVDcmVkZW50aWFscyI6MTAwLCJhdHRlc3RhdGlvbkZvcm1hdHMiOlsicGFja2VkIl0sImxvbmdUb3VjaEZvclJlc2V0IjpmYWxzZSwiZW5jSWRlbnRpZmllciI6IiIsInRyYW5zcG9ydHNGb3JSZXNldCI6WyJVU0IiLCJORkMiLCJzbWFydC1jYXJkIl0sInBpbkNvbXBsZXhpdHlQb2xpY3kiOnRydWUsInBpbkNvbXBsZXhpdHlQb2xpY3lVUkwiOiI2ODc0NzQ3MDczM2EyZjJmNzk3NTYyNjkyZTYzNmYyZjcwNjk2ZSIsIm1heFBJTkxlbmd0aCI6NjMsImVuY0NyZWRTdG9yZVN0YXRlIjoiIiwiYXV0aGVudGljYXRvckNvbmZpZ0NvbW1hbmRzIjpbMSwyLDNdfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjYtMDQtMjUiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NzI4LCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IkVudGVycHJpc2UgU2VjdXJpdHkgS2V5IFNlcmllcyB3aXRoIE5GQyAoRW50ZXJwcmlzZSBQcm9maWxlKSIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjYwNDI1MDA1IiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25Qcm9maWxlcyI6WyJlbnRlcnByaXNlIl0sImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjYtMDQtMjUiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NzI4fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI2LTA1LTAxIn0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiOTEwYTc2M2RkZjc5ZGJmNDk2YzQ4MmU3ZjMxM2M1MjBhODlmN2JlYyJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyI5MTBhNzYzZGRmNzlkYmY0OTZjNDgyZTdmMzEzYzUyMGE4OWY3YmVjIl0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IDUgU2VyaWVzIHdpdGggTkZDIn0sImRlc2NyaXB0aW9uIjoiWXViaUtleSA1IFNlcmllcyB3aXRoIE5GQyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzMsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6Mn1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiLCJyZW1vdGVfaGFuZGxlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlESGpDQ0FnYWdBd0lCQWdJRUcwQlQ5ekFOQmdrcWhraUc5dzBCQVFzRkFEQXVNU3d3S2dZRFZRUURFeU5aZFdKcFkyOGdWVEpHSUZKdmIzUWdRMEVnVTJWeWFXRnNJRFExTnpJd01EWXpNVEFnRncweE5EQTRNREV3TURBd01EQmFHQTh5TURVd01Ea3dOREF3TURBd01Gb3dMakVzTUNvR0ExVUVBeE1qV1hWaWFXTnZJRlV5UmlCU2IyOTBJRU5CSUZObGNtbGhiQ0EwTlRjeU1EQTJNekV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRQy9qd1l1aEJWbHFhaVlXRU1zcldGaXNnSitQdE05MWVTcnBJNFRLN1U1M213Q0lhd1NESHk4dlVtazVOMktBajlhYnZUOU5QNVNNUzFoUWkzdXN4b1lHb25YUWdmTzZaWHlVQTlhK0tBa3FkRm5Cbmx5dWdTZUNPZXA4RWRaRmZzYVJGdE1qa3d6NUdjejJQeTR2SVl2Q2RNSFB0d2F6MGJWdXpuZXVlSUV6NlRuUWpFNjNSZHQyemJ3bmVid1RHNVp5YmVXU3dienkrQkozNFpIY1VoUEFZODl5SlFYdUUwSXpNWkZjRUJiUE5SYldFQ1JLZ2pxLy9xVDlubURPRlZsU1JDdDJ3aXFQU3psdXduK3Yrc3VRRUJzVWpUR01FZDI1dEtYWFRrTlcyMXdJV2J4ZVN5VW9UWHdMdkdTNnhsd1FTZ05wazJxWFl3ZjhpWGc3VldaQWdNQkFBR2pRakJBTUIwR0ExVWREZ1FXQkJRZ0l2ejBiTkdKaGpncFRva3N5S3BQOXh2OW9EQVBCZ05WSFJNRUNEQUdBUUgvQWdFQU1BNEdBMVVkRHdFQi93UUVBd0lCQmpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQWp2anVPTURTYStKWEZDTHlCS3N5Y1h0QlZac0o0VWUzTGJhRXNQWTRNWU4vaElRNVpNNXA3RWpmY25NRzRDdFlrTnNmTkhjMEFoQkxkcTQ1cm5UODdxLzZPM3ZVRXROTWFmYmhVNmt0aFg3WSs5WEZOOU5wbVl4citla1ZZNXhPeGk4aDlKRElnb01QNFZCMXVTMGF1bkwxSUdxck5vb0w5bW1Gbkwya0xWVmVlNi9WUjZDNStLU1RDTUNXcHBNdUpJWklJMnY5bzRka29aOFk3UVJqUWxMZll6ZDNxR3RLYnc3eGFGMVVzRy81eFViL0J0d2IyWDJnNElucGlCL3l0LzNDcFFYcGlXWC9LNG1CdlVLaUduMDVac3FlWTFneDRnMHhMQnFjVTlwc215UHpLK1ZzZ3cyamVSUTVKbEtEeXFFMGhlYmZDMXR2RnUwQ0NySkZjdz09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWZDQVlBQUFDR1ZzK01BQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBSFlZQUFCMkdBVjJpRTRFQUFBYk5TVVJCVkZoSHBWZDdUTlYxRkQvM2Q1OXdlUVNJZ1M5QVFBWGNGTEFRWmk5ZnBlVnoxdFkvV1RacjVXeHBjN1c1a25MYTVqSTNaODVzclMybk0yc2p0V3daUzdJVUg0SDR4Q25FUXg0REFaRjc0Vjd1czg4NXY5L2xJbkJ2VkovQjRQdjludS81bnUvNW52TTU1NmZ6QS9RdjBIYi9JclgzVkZLUG80NWNubTRpblVJV1l3TEZSbVpRVXV3akZHL04xaVJIaDFFWjBOUlZSdWRxdDFCZCsyblNLeVMvT2h5czArbGszZS8za1E5cXZENFpVdGE0VlZTVXVZMGVpcHlpVGhBZm9jb09SVmdEdXV3M3FLUmlBZDNyYmNFdGpUallJb2Y2V2FIc0NtelZQV0NNeCtjZ2g4dExxV01LYU1Xc1VqTHFvMlJ0SklRMG9Pem1lcnBRdTRlc1pnc09Oa0d4SDdkMGtkdlRUMTdzNE9NVTdWSThaaGpnR2FNK0FxOWlFTnU4UGlmMXVkejA3TXd2S1dmOEdsVm9DRVkwNFBDNVdkVGFYWUZiUjh2TnZMNSszS2dmYjV4Tk15YTlSYW1KaXluYU1sR1RWdEZscjZiYTl1K3BxbkVYNHVNdVJSZ2pTWUVock43dXRGRmU2bHFhbDdOZmt3NWltQUdIeW5QcGJrOFZtWTB4c3RucHRsRkNWQ1l0elR1Qk44M1FwTUxqVHRldmRQelNVbko3ZThta2p4WjM5ZlhiS0RmbGRacWJ2VStUVWdHbkJWRjZmUTJpUEhnNFcxNlVXVXd2emJrMTZzTVpFK1BuMHB2ejdKU2V1QXllczhsY3BDbWFLdW8vcCtxV3IyVWN3SUFIV3J2UDBZRXpoWEF0TEFic3NIaHA3aUdhbXZ5aWpQOHJ5cXJYVVdYOVhvb3d4eUF1Zk5CcnA0M1BPQkZYWmxrZjhNRFJpcWNweW93QXdwdXoyeCtmV3Z6L0R0ZGU5c21zenlndGNSNkMxd2JkekJsNk9scTVXTllZNG9HYXRoSk1ya1RFeDBqQVJTSEFWcys1cllrUU5YYitRZ2ZQTHNRNmdYeUluc3JlUWZtcG03UlZGWWZMODZuMWZpVU9rWXZTaGtVUHh2YnVrem95NksxaWhNMWhvM1h6VzZFdlNmWEErZHBpV0dhV2QrZG9Yekx6bUd3S1lGTENBc1JBbFBCQWhNbENGWFU3dEJVVlByOEhnVmNKSFdxK0YwMHBscitETVRkclA0enZ4WTExa05NaHhUK1NlVEdnK2Q0VjVMUUppdHlVR0pOQjhWRlpzamdZQlpNL0lJL1hDVGtqMHF5RE9wRjJBVlExN0NJalVwL0RuVDFVa0w1RjVnZGorc1Mxd2cxZ0UzZ2lnbTYwZkNYelNuUFhieUFQYklYditJRHBFMTZUaGFISVM5c2t5aGxtTUU1RjNjZnFBS2hxMkMwRTVQSDFnWWFYYUxQRGtaRzBIREpPbktXSHA1MUkwejVTT3V4OGUxV0F1WnpkSFFyVGtwOFRtalhvSStsYTB3R1pzenVicWJPM2lmUTZBL1c3dlZTWXNWM21SMEpLd2tLYzRXSGlCa21SOEkzQ0NnSTg3b09MNHF6VDVQK1JVSkJlakVPZ0FQSzhoWVB6YXRNK2VJVHAySU85eVRRbWVyb21QUnh4MXF4QWNzaWxlL3ViU2VFYmNXUUdZRUNnaGNMWTJIeUtqb2dqSDI1aE1wanBVdjFPdWdsaTRlaDJlUncwTzMyYkpqa3l1Q2dOemcwdnpsWU1TaVNzMHVvbzRNRzdoTU9qQ0VhWDF5RkUwblN2akJ6dVRuRXBLODZaOElvcUZBSXVidzhrZzlBckVhUkVXU1pJK2pINFhicDZnOUU5RW5KVDNvYVJ6RE4rTVVKQlFESG41NmE4b1VtRUJ1c094QnMvTjUrdEpFYlBrQUZEajhVR3ZPcy9JV3ZjU2dsR0JodlM3L0ZUWWZwV0dZZERZOGZQQXhXU0EzNXNUQzRwNCtMbTRBYXFJb1BlUXRmdWZLNkpoMFpoeGxic1VYT1NtWE5pZkQ1WlRBa3lEb2ZiYmNjbHhuQThXTkFxeENiUk55a2hYeFFwYUR3NjdmWFVZYnNpRzBLaHR2Mm9lSXZoOHJoUU1ZT2NFQXFYRy9lSSt6bmdPYzV5eHI4cTgySUFNMWMvRkxGT3BscXU1ZUZRWHJNWnpHY1ZDalliTFdHNUk0QlQxZXVScmxieHROT3RNaXREREVoTFhJSXluQUF2dU9FV0UzWDNOZEFmdDk0VmdhRzQyWElRdDBaWDZQZUNFL3FRRmU5cks2SHg3WVU1MEt2SDdmVzRmUytxN0tLQkp4c2dnQlg1cFNBR2gxaklyVmg1elE2dzNSZmFhaEJYbS9hQ2JDWlRqQ1VGVVR5V1pxVzlwNjJNakpQWFZxT3JQZ01PNE52NzRHa2Yrb3dmdE5WQkRRbmpGSnFIU3cxN3BYdmhXVzVLWnFlL1E0OU4vVVNUQ0FWV29RWEZJSEJIWFhlM0ZQclVEc3VHRG10Ri9oSEtUSHBla3hoaUFPUEkrU0pxNlM2SEY0STlZV3prQkpUbzQ2aVVNeldwOFBpci9SaWR1THhLWXNTa3NWOHZMbE9RdmhHWDJZbFIwT0JoQmpDK3UvZ0VjdlkwQXBLN1lrNDFOeGpQU1FuV0ZIVEY2NlVyamdldkI4Q3U1YStsMnZZU1JQdHVWRG83M2hoZE1TSG5VWDd0VGpzVlpHeEFsL1dwdGlPSUVRMWduTDI5bVg2L3RSMXRtbGtZajhXNFgrQ1NqV2NVREdZMU5wUy9DN2hTS3FpTUxNL2wyUW1TV1o3M0RkeitnaW84QkNFTllQUTQ2cW5rendYVWJxdkJreGpVUXNXZlpGZ2J1bzNyQWYrd043ak9POTAreW54NFBpM0wrMG5ZTDFTY2hEVWdBUDRnUFYvN0lkMXErMUhTaG11R2tJcVdSUGd5eE1GcVA4SGZqVG5qWHdZNWJRZmJKY3Q2T0l6S2dNSG90Ri9IZTFlZ3NheEhTcUc2d2ZkbVE1eDhOeVRGRnFCY3AyaVNvd0hSM3lrNSszNmhGN3ZYQUFBQUFFbEZUa1N1UW1DQyJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTEwLTEyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3MywiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZdWJpS2V5IDUgU2VyaWVzIHdpdGggTkZDIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVMkYxMDAwMjAyNDEwMTIwMDMiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0wNi0wNCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzMsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWXViaUtleSA1IFNlcmllcyB3aXRoIE5GQyIsImNlcnRpZmljYXRlTnVtYmVyIjoiVTJGMTAwMDIwMjQwNjA0MDAwIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMDYtMDQiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDczfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI0LTExLTEyIn0seyJhYWd1aWQiOiJmNGNlNWZjMC01N2QzLTQ2ZjUtYTczNi1lZmI3ZDViYzYzYjUiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6ImY0Y2U1ZmMwLTU3ZDMtNDZmNS1hNzM2LWVmYjdkNWJjNjNiNSIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IDUgU2VyaWVzIHdpdGggTkZDIChDb25zdW1lciBQcm9maWxlKSJ9LCJkZXNjcmlwdGlvbiI6Ill1YmlLZXkgNSBTZXJpZXMgd2l0aCBORkMgKENvbnN1bWVyIFByb2ZpbGUpIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTcyOCwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9LHsibWFqb3IiOjEsIm1pbm9yIjowfSx7Im1ham9yIjoxLCJtaW5vciI6M31dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciLCJzZWNwMzg0cjFfZWNkc2Ffc2hhMzg0X3JhdyIsImVkMjU1MTlfZWRkc2Ffc2hhNTEyX3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsIm5mYyIsInNtYXJ0LWNhcmQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURTakNDQWpLZ0F3SUJBZ0lVVG5iYkdJUjJOSHZ6cUlLRkFlUXdHMVhCaXMwd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JCSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVFZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU9zWGozazA0QmFuNFRZZHRaS3FEL09QSnh5RHlhUG1DQlVGVWlhWklnVHRlWm5qM1gyNURoZ3BaWlhzQzREMHlkSWNybEE2d05VSW5PUkwvTDl6QmJURUlNQVZNR282ZzdVS0FtYjJNRjZBSGJuaFlKZDllaWt1cFZOV1NoSE5ZTmM0R0JkTzFZTjZBZlVxdkpoSGJlM1Y0U05NUG1CUkVLSlBWejdUaHdnbWdnVGU4V3MySzAvd3NxdjJ3U0U3cGJDQnNVWmhJWDUxYlpNM3BxRHdKUFRtUkZFdnQwLzZ0RzVlTzhGM2oxNE9YcWZFaG1qbjFWdnhLRFlRT0xaQXhDd3dnQzBQNENkZld2M3k4UFNSOEkzNTRoTzFZK0d6Tmp2SXFYMzhOS0x5d3VJWUhGZXJPeE5seEVNQnZGaFlCdVJ1WUFra2dVYVBxTjZVQmhzSUxyc0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ0NvUkhoaXlObmJuWFJXSUw2WkJYb0JYOVlUTUI4R0ExVWRJd1FZTUJhQUZDQW9VQ0VicEZwYjZGUExuWjNGNVB4c0wzb2ZNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUNRRmFmSkkxLzVXZzlDRUVpbUUxUlA1NFJnUXdUTlRPT1FzTEFDVGUrckl0bEZRekM5WkRoclY4Mjh5WDdqenkrQUFzcDNpeks3VDF0aDJkbDdtK3R1MHN3MlBhL29sYzAybnQ2UHlJdzM0OGdhSHpoSTErMEtFNDVxeHZGRGVMMmxNeGJQZkNZdnlFRWFZemppUUVMVTU5NTFwWEdXeUtNYS80Zkx0TytaS09YaE11VmVxNHJYRFBJNTRXNkpIT2lBYWlLZGl3KzVlM2Mya3QvakZJUXRNNnZNWGc5TE5GemRqRVROdDIwVlg5UWV2UnBGWmZ1Y01HOXdDYVFEb0ZsUHpwVE1KS2hQZXYvaW1KbVpZaEtmcjBsTGNlbXRxakl4TEFvcVpkT1lmSEJnNit2QWNkUEkvaWF1R3BVQXY3WCtVS05tRHdqWjJCYUg0c0x3aEIybSIsIk1JSURQakNDQWlhZ0F3SUJBZ0lVWHplaUVESkVPVHQxNEY1bjBvNlpmL2JCd2lVd0RRWUpLb1pJaHZjTkFRRU5CUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTVo2L1R4TThySVQrRWFvUHZHODFvbnRNT28vMm1RMlJCd0pIUzBRWmN4VmFOWHZsMTJMVWhCWjVMbWlCU2NJWmQxUm54MW9kNTg1aCsvZGhLN2hFbTdKQUFMa0tLdHMxZk81M0tHTkxadWp6NWgzd0duY3I0aHlLRjBHNzRiL1UzSzloRTVtR05ENnpxWWNoQ1JBSGZyWU1ZUkRGNFlMMFg0RDVuR2R4dnBwQXk2bmtFbXRXbU1ud08zaTBUQXVjc3JiRTQ4NUh2R000cjBWcGdWZEpwdmdRamlUSkNUSXErRDM1aHd0VDhRREl2K25HdnBjeWk1d2NJZkNrenlDaW1KdWtoWXk2S29xTk1LUUVkcE5pU092V3lETVRNdDFid0N2RXpwdzkxdSttc1V0NHJqMGVmbk85czBaT3dkd01SRG5INHhnVWw1Wkx3cnJQa2ZDMS8wQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQjhHQTFVZEl3UVlNQmFBRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRTXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJEUVVBQTRJQkFRQzNJVy9zZ0I5cFo4YXBKTmp4dUdvWCtGa0lMa3Mwd01OcmRYTC9jb1V2c3JoenN2bDZtZVBNcmJHSkJ5SjFYbnF1QjVzZ2NSRU5GeGRRRm1hM21pbzhVcGYxb3dNMVpyZVhySjBtQURHMkJwbHFiSm54aXlZYStSMTFyZUlGVFdlSWhNTmNaS3NEWnJGQXlQdUZqQ1dTUXZKbU5XZTltRlJZRmdOaFhKS2tYSWI1SDFYZ0VEbHdpZWRZUk03Vm9sQk5sbGQ2cFJGS2xYOHVzdDZPVE1PZUFEbDJ4TkYwbTFMVGhTZGV1WHZEeUMxZzkrSUxmejNTNk9JWWdjM2lyb1JjRkQzNTRnN3JLZnU2N3FGQXc5Z0M0eWkweEJUUHJZOTVyaDQvSHFhVVlDQS9MOGxkUms2SDdYazM1RCtXVnBtcTJTaC94VDVIaUZ1aGY0d0piMGJLIiwiTUlJRFJ6Q0NBakdnQXdJQkFnSVVleDluVDl2d1pOWFM0ODNMZGlZR2Z3MlNqU293Q3dZSktvWklodmNOQVFFTE1DNHhMREFxQmdOVkJBTU1JMWwxWW1samJ5QkJkSFJsYzNSaGRHbHZiaUJKYm5SbGNtMWxaR2xoZEdVZ1FpQXhNQ0FYRFRJMU1EZ3dNVEF3TURBd01Gb1lEems1T1RreE1qTXhNak0xT1RVNVdqQW5NU1V3SXdZRFZRUUREQnhaZFdKcFkyOGdSa2xFVHlCQmRIUmxjM1JoZEdsdmJpQkNNaUF4TUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUF1MU1ldm55OWR5TzlaVUMzOVNvTWhMY1IvRFhydEYvY2lNMTJ0Y2l5MkVYQVo2TWtyaXZWdENmRVZNOVg2SVNURW5CUDZ1U1lZb3Y2cHB2Nk82SmgyTkhtWW00dytKblM0Vm5DUFU3bUhBTWZWSTJNR1RUTVZPZXcweFVzRzdzSVNJa0lEVUJtdWs4WUs5YzV6aWM5K3ZGUUdMSWtzZFhPNWlWRklnTkc1M2NHWEQ0Wkxab0FQaXUwUEVvenhBcVlJYUk0Z3hLaE9BM1M4L1c4bUlXc3U2b2Z5ajRHdmtGRzZaN2t5RjMxMDdQN213RkhMckkzRU5hUFdNT0ZjVGFHYTBkdysvdlZSd2pSY0VaQlZzdXVULzg3Y2tTczBhNXBrdDN2WkJsYVllVDhwelNyZVY3bW93Y0lNOTBMMmlhQVRsUDBueG1hRTZuT3lUYm9qRlZsMndJREFRQUJvMll3WkRBZEJnTlZIUTRFRmdRVVNYRWgzc2EzYnREdXJtNE1NL0M3UzFsUnV1WXdId1lEVlIwakJCZ3dGb0FVNnJkQ2tKNE1lMlI2MjFSOEE3cDhUcC9Zb1dFd0VnWURWUjBUQVFIL0JBZ3dCZ0VCL3dJQkFEQU9CZ05WSFE4QkFmOEVCQU1DQVlZd0N3WUpLb1pJaHZjTkFRRUxBNElCQVFCNUdjM2hhZnRwN2hLc0Vac28raS9aNW5SdXFkbXpHMldDbFVvUlVxYmFQeWdsbkpEaktSL2tmZ09sNmliYkYvenRobTNLbVhRN0hjRElQMnhNZEc3VTJMMmltYkpRSHFQZi9oMkhxb2piNHJaZ3VlKzZXNGt0U1I1ZWxSOUwxcllxRS9TR1lNNGlFS29WUVN2N1JUMXJ4SWVXaUtzdy9WeHhpL1FPbnN4M0Y3eDgwQ0NZZ0I0RTN5UXg4VlRXNDQwaFRFd1RBMWVNSE9peDMydFB0eXlISWE4UFZWSWZWcEhRSkJhTVZ2djUwOFVFandrYlUycm5qZnpvU1ROUzlBNWpVUThtQlN2ZTk1cmpCMGRvOThFVStEeGRCcVgyK0g2aTV3bElDRmd6aGR6Y3NuZTloR0tUNmx6VFg0Y0lkSnNyWTIreGxlSzBGRlF5NmxHRVZMRWUiLCJNSUlEU0RDQ0FqQ2dBd0lCQWdJVVVjbU1YelJJRk9nR1RLMFRiM2dFdVpZWmtCSXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFEbTU1NWJXWTlXVyt0T1kwcklXSGxkaCthTmFub0NaQ0ZoN0drM1laclFtUFV3MGhrU0c2cVlIUXRQK2ZaeVMzM1ZFcnZnK0JRcW5tdW1nTmhmeEZya3dFWkVMZWlkQmNDOEM0QWc0bnFxaVBXcHpzdkkxN05jeFlsSW5MTkxGY1pZLytnT2lONlpPVGloTzUvdkJaTWJqOXJpYUFjcWxpWW1OR0pQZ1RjTUdhRUF5TXpFTU55Mm5tNkVwK3BqUDVhRjZnaTIxdC9VUUZzdUoxajJSai95bk0vU2RSdCtlY2FsNU9Zb3R4SGtGYkw5dnZ2MkEyT3Y1SVRaQ2x3NGJPUzlucHlwUWltT1o1UUFZeXRtWWFRcFdsL3BNWXo2elNqOFJxa1ZETkVKR3FOZlRLQTJpdkxZd1g2bFN0dE1QYXBnMEo4NGw5WDB2b1ZOL0ZwUzRWQ1ZBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlFnS0ZBaEc2UmFXK2hUeTUyZHhlVDhiQzk2SHpBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBWU16Z0xySkxJcjBPb3ZRbkFaclJJR3VhYmlIU1VLU21iTFJXcFJrV2VBdHNDaERFSHBYY0ovYmdETktZV29IcVE4eFJVakI0Q3llcFlldmMzWWxyRzhvN3pIeHBmVmNhb0w1U2V1Smt6SHhLbjRiVGFTcDkrTXZ3YW1ucDY0a1pNaU5iRkxrbmZQOWtZS29SSGtNV2hlUkoxVXNQMXo0U2Nta0NlSUxmc01zNnZxb3ZxaldDbEZzSnBCY3NsdVlIV0Y3YkJKMW40UndnK0FURW9wWTRJZ0d2Nlp2d2MrQTlyK0FUMmhxcG9Ta1lvQWwrQU5Zd2dzbE9mOXNKZTBWK1RBOVlZL1VsYUJtUFBUZDAvL3I5d3ZjZVBXWmtQaktvQUMvelVOaGZEYmg0TFY4R0hzM2x5WDJYb21ML0xOYzhKWXp5SWFERWhHUXZlb1BoaC90cjFnPT0iLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVIzOG1xMjZTZjJzelZWMkJkRzZXRU43a3VXVXdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFSWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFOWTBXYjlvUG9Sb0tvUXlXUGFKcHoxMXZyV1RnNnpUdG1OajJWb0tSbnl2S0dScXB6YjgzdzVsNllBOTZVWWtZQkRRUDBpbE8yRFBlNndXcVZSNXpEZlJ6ZGNIOGJoK0w3ZEdHdmFlNmhSVFpoa0ZrQ3BYRHM0SGNja25yRGY4RkNsSjdIZTM5SmY0Mi9HMVFtMnp6OVdXbXJQWHRnaUsveDA1R2pzUWZHdURHMXpmNVFUVVVpZThsd3ltSzNUZmRPdk5lZUpBQVBlMnBuN0l0ZlJiK3JWck5XaUR6bFJuMnZObloyd1BvNHdIL1dKNmRoWFpHK3JNV1QrYTZCb2NnMVVmSXc2a2R1bkc0YlRwWnpzdmFjRll5UjBtcGYrRGVPbnBTV0FteXdKV0h2VGxmMllYeEZ5ZVhjVEFDZFFsY01OR0oyVmhaUTQ4eHRQNS9SQlAvOGtDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNoeTQyb2tpcWNUUzFpcWEvSFJXamtCbjRIL01COEdBMVVkSXdRWU1CYUFGT3EzUXBDZURIdGtldHRVZkFPNmZFNmYyS0ZoTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBbitSSElQYnRNRUROZFQxZzhIL1JpdEFrVWRMZ0F0MXRXR1dubGo5a25idjQvNEdsWDdDOXA0NWVmUE85L2FaTDZPVjFYUktCaTZLbXRCVzVLN251WUVuTXgvNUJxQlNiTFQ3cmhkdUM0OVRCZU1iOVBIZFhzVGxTVk5ZZWZyMWRHaWRyNGoweFZCUUxiMXJrbkRBYmRXRHpLZnZuYXlLTzhGcndlN0h4ODQzTUcvckorYzBYcnVVdmJmVlRDSExpSVdoTTdvTkRoTDh4b2I2eFVvOUtMS2NTTCtJdFlzTzMvOVdiOFE5R2pzcUw0RlhzRGNHMVNhWWg3S3BmdU1tT2l4cXpKWk8ybklpY1BZUmcxSTJTdWlVZllPNzB0bWRIY2JsK2tTUW1TWXQ3cnE0dmlJTGcyR3gzajlySVR1V1RqYmFVYVNTUXhnT21NU0h1eXpNQUMiLCJNSUlEU0RDQ0FqQ2dBd0lCQWdJVURxRVJ3KzRSbkdTZ2d4Z1Vld0pGRVBEUlozWXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFESTdYbkgrWnZEd01DUVU4TThaZVY1cXNjdWJsdlZZYWFSdDNZYmF4bjlnb2RMeDVzd0gwbFhyZGdqaDVoN0ZwVmdDZ1lZWDdFNGJsMXZielVMZW1yTVdUOE4zV01HVWU4UUFKYkJlaW9WN1cvRStoVFpQLzBTS0pWYTNld0tCbzZVTGVNbmZRWkRyVk9SQWs4d1RMcTJ2NUxsajV2TWo3SnRPb3RLYTlKN25IUzhrTG16WFhTYWowU3dFUGg1T0FaVVROVjR6czFidm9UQVFRV3JMNC9KOVF1S3Q2V0NGRTVuVU5pUlFjRWJWRjhtbHFLMmJ4Mno2b2tWbHR5RFZMQ3hZYnBVVEVMdlkxdXNSM0RUR1BVb0lDbE9tNGNycHduRFJMVkh2alllUEdCQi8vcEV5enhBL2djU2N4andhSDFaVXc5Ym5TYkh5dXJLcWJUYTFLdmpBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlRxdDBLUW5neDdaSHJiVkh3RHVueE9uOWloWVRBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBcVFhQ1dNeFRHcVZWWDdTazdra0ptVXVlVFNZS3VVNitLQkJTZ3dJUm5sdzlLN0hlMUlweFowaGR3cFBOaWtLam1jeUZnRlB6aEltd0hKZ3h4dVQ5MFB3M3ZZT2RjSkpOa3REZzM1UFhPZnpTbjE1Y0ZBeDFSTzBtUFRtSWI4ZFhpRVdPcHpvWHZkd1hETTQxWmFDRFlNVDd3NElRdE15dkU3eFVCWnEyYmp0QW5xL05EVUE3YmU0SDhIM2lwQysvK05LbFVyY1VoK2o0OEs2N1dJMHUxbTZGZVF1ZUJBN24wNmo4MjVycURxc2FMczlUYjdLQUhBdzhQbXJXYU5QRzJraktlcnhQRWZlY2l2bEZhd3AyUldadnhyVnRuM1RWMlNCeHlDSkNrWHNORDA1ZENFclZIU0pJcytCZHRUVk5ZOUF3dHlQbW55YjB2NG1TVHp2V2R3PT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsImljb25EYXJrIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwicHJvdmlkZXJMb2dvTGlnaHQiOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJwcm92aWRlckxvZ29EYXJrIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMV9QUkUiLCJGSURPXzJfMSIsIkZJRE9fMl8yIiwiRklET18yXzMiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwibGFyZ2VCbG9iS2V5IiwiY3JlZEJsb2IiLCJtaW5QaW5MZW5ndGgiLCJobWFjLXNlY3JldC1tYyIsInRoaXJkUGFydHlQYXltZW50IiwicHJldmlld1NpZ24iXSwiYWFndWlkIjoiZjRjZTVmYzA1N2QzNDZmNWE3MzZlZmI3ZDViYzYzYjUiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJsYXJnZUJsb2JzIjp0cnVlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJwZXJDcmVkTWdtdFJPIjp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6dHJ1ZSwiYWx3YXlzVXYiOmZhbHNlfSwibWF4TXNnU2l6ZSI6MTUzNiwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0Ijo4LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjEyOCwidHJhbnNwb3J0cyI6WyJuZmMiLCJ1c2IiLCJzbWFydC1jYXJkIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN30seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTh9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi0zNX1dLCJtYXhTZXJpYWxpemVkTGFyZ2VCbG9iQXJyYXkiOjQwOTYsImZvcmNlUElOQ2hhbmdlIjpmYWxzZSwibWluUElOTGVuZ3RoIjo0LCJmaXJtd2FyZVZlcnNpb24iOjMyOTcyOCwibWF4Q3JlZEJsb2JMZW5ndGgiOjMyLCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6MSwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjEwMCwibG9uZ1RvdWNoRm9yUmVzZXQiOmZhbHNlLCJlbmNJZGVudGlmaWVyIjoiIiwidHJhbnNwb3J0c0ZvclJlc2V0IjpbIlVTQiIsIk5GQyIsInNtYXJ0LWNhcmQiXSwicGluQ29tcGxleGl0eVBvbGljeSI6ZmFsc2UsIm1heFBJTkxlbmd0aCI6NjMsImVuY0NyZWRTdG9yZVN0YXRlIjoiIiwiYXV0aGVudGljYXRvckNvbmZpZ0NvbW1hbmRzIjpbMiwzXX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI2LTA0LTI1IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTcyOCwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZdWJpS2V5IDUgU2VyaWVzIHdpdGggTkZDIChDb25zdW1lciBQcm9maWxlKSIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjYwNDI1MDA5IiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25Qcm9maWxlcyI6WyJjb25zdW1lciJdLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI2LTA0LTI1IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTcyOH1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNi0wNS0wMSJ9LHsiYWFndWlkIjoiMjM3ODY0NTItZjAyZC00MzQ0LTg3ZWQtYWFmNzAzNzI2ODgxIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiIyMzc4NjQ1Mi1mMDJkLTQzNDQtODdlZC1hYWY3MDM3MjY4ODEiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiU2FmZU5ldCBlVG9rZW4gRnVzaW9uIENDIn0sImRlc2NyaXB0aW9uIjoiU2FmZU5ldCBlVG9rZW4gRnVzaW9uIENDIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjowLCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjowLCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUM2VENDQWRHZ0F3SUJBZ0lKQUpiVHlydTFYL0lQTUEwR0NTcUdTSWIzRFFFQkN3VUFNQ014SVRBZkJnTlZCQU1NR0VkbGJXRnNkRzhnVFhWc2RHbEJjSEFnUmtsRVR5QkRRVEFlRncweE9EQTJNVEl4TkRRMU5UQmFGdzB5T0RBMk1Ea3hORFExTlRCYU1DTXhJVEFmQmdOVkJBTU1HRWRsYldGc2RHOGdUWFZzZEdsQmNIQWdSa2xFVHlCRFFUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU1WaktIV3BiRDdUU2xNeG9jalRsNm5JZjd4MzJQbXNROXpHdUxHR3FBMFVRWm9JcTNYTHpMNkxZVXZKNUE1ZzB1eUZHbGxIRWZHQUtyRWFDUThGVnZQUy9VaDBGeWZ6V2hSQXppVFNpampNSUlWampqVXY5bTl2Rm1jWFNjZ0hpZzdPZHo4ODU4VjBrck5IOTlxR20zd2pnYU9lclRXbXQralhDVWZuMDFJa1RQd3hHMkhsZ0VkNDVqTkxTVjdWb29sK0tlOEUya2k0bEVrVGVIemJvdWxSNUdVYnAzbk1pN0U0N1ZNUWEzYk53bnpXQmJzYUJTU1FoTGszbTVIYUtoaHhhNndKREs0N05pTUNrQ2tkSUh1V1NRTFZBZm04NVVBT050RU9Qd2kwT3VLM3FiZTh5S09GR2YwS2hCNU1NZUF5bTdNVi9NNFcwYTQ5b2dQRDlwTUNBd0VBQWFNZ01CNHdEQVlEVlIwVEJBVXdBd0VCL3pBT0JnTlZIUThCQWY4RUJBTUNBb1F3RFFZSktvWklodmNOQVFFTEJRQURnZ0VCQUpXejV4TE1rNVdOWWJBYjZ5T3hFQ0JvWjJXZUIvcWw0VkozTy8zL3ROc3hPWW56TGVXbzU0MHpRaDlyQW1heHo3ZXVtQmxza01xNHlHUFNOWEI5eWNXR0hna2NDZVN6TjJ3djhDSXpEQnMyb0JaalROazY1TEJaRHNzVE9CdE1XLyt1VEZIUWZidU8zSVNMaEkwRFhmUkVpOU5ETTNqZmsxMXhIY3NmaDJSTVYrUWROZndWYVpackNxK291RytFdmt2N0txcStveXUwVkZNL3R6NjhUR2w2eWxoUEZSMXFoOXd0dHBWakFPT0NFUUNMcVAyZFAyOGx3WUJ5Q3FIUXFWSHdidWp2L0xaalpuS1czTFluZFppeFBQU1JDSnNzRER3SnZoL2Y2blR4ZzlaRSsvSmNZcmU1Q2FJOG56VkhhU09Dak5KN0Z6VUxHNjRKaVdPdlE1MD0iLCJNSUlEZFRDQ0FsMmdBd0lCQWdJSkFJQ1VUdmtndGo1Q01BMEdDU3FHU0liM0RRRUJDd1VBTUZFeEN6QUpCZ05WQkFZVEFrWlNNUXd3Q2dZRFZRUUtEQU5FU1ZNeEN6QUpCZ05WQkFzTUFrTlRNU2N3SlFZRFZRUUREQjVIWlcxaGJIUnZJRTExYkhScFFYQndJRVpKUkU4Z1UzVmlZMkVnUTBFd0hoY05NakF3TnpBM01UUXpOekU0V2hjTk16QXdOekExTVRRek56RTRXakJSTVFzd0NRWURWUVFHRXdKR1VqRU1NQW9HQTFVRUNnd0RSRWxUTVFzd0NRWURWUVFMREFKRFV6RW5NQ1VHQTFVRUF3d2VSMlZ0WVd4MGJ5Qk5kV3gwYVVGd2NDQkdTVVJQSUZOMVltTmhJRU5CTUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUF2QUtPZXFDNS9wMEQxaXNDWUtRSmxWVU9yQjZJN0RMb2N1bkUvUm04ZHVHVGJ5eFFodDNDYkZWVHYzTjJMcDJmYmp4bEkrM3NPU0drMzNGVFlrVHF4Y2RKSXJKN1Nza0JjVVNOcmZLT2FRVC82S1FjUDRDbTdWKzY1NVRxK1RXeHl4V1FoRHlndDE1cW9QN011SzZiVDlTd3BDanBmS2hhTVNteVFhTW9VY1JBYkxxZHpCQ2FjMGh6QitaZStncUpsbldWOVVhU0kyckZzVnVINFpFMGNSTytNT3BhTGdNL3MyNDhuR0dIcDIyZXdTUWZiblBhQmJiOGlxeUFQK2N1NTJHTHNVcEtSSmViRStSNitQTVE5SkNkV2VRWlIzRGtmU2lka3YzbWNiNGpxMWlJdGErTXFLaFJud3JmWGg5MTFLV0xuWUFsOUVOQ2hMWDBjNlNqMVFJREFRQUJvMUF3VGpBZEJnTlZIUTRFRmdRVVdMdmhSQlVQbjh1TElmNjgrZ3YvTlpJd0dTSXdId1lEVlIwakJCZ3dGb0FVV0x2aFJCVVBuOHVMSWY2OCtndi9OWkl3R1NJd0RBWURWUjBUQkFVd0F3RUIvekFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBRkxyRGhhZWdlS0h4WWpIM0VQM3ZVQktobnpNMjA2QVN4Z2VZQ08yRWM5cE9sWUphZXFGRStzVWFtVVYvcHdqRGxxTmFTZ0ZneTdUd2VZa3ZPbU1uNHFTY3NIcXZKM3pHT0FpYWZ3YWgxdlVIZkNsWFI4K2F4TzJpR09VRjBKS3JaOVlZamJBYTUvNEhDbHY3akZQT2RNV1RPUXluZ29pSEFzM2prdVlqcENMRmxCNFZPaTNkMXdqQTFwblRkQktrQWI3dDhuVHZ3Ky9YYkZ2Y1FhNzNWSDdzanZvQnFEM2ZkTWZSY3VWcTRxVVp0WlQ2Y0dhZ1RIRDYxVHRxaDlvTUNaWGNEYlIxUEdabk5icXljc1dQRElLMG5wbUszLzNsZlY4Yytac3J5NmUxNzBtZkpNWnA3TzhtNkNTejYvVkxLK3lESmQ3ODQxd3BtZUtUZjZJblpBPT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBUXdBQUFBZ0NBWUFBQURubFVacUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFFblFBQUJKMEFkNW1IM2dBQUFBWmRFVllkRk52Wm5SM1lYSmxBSEJoYVc1MExtNWxkQ0EwTGpBdU1qSHhJR21WQUFBSzFFbEVRVlI0WHUxZERYQWNaUm0rTk9BZktvZzZXTzBRY3JlWDNPNzFSNDFvSGRTcXFEQU9nMytjWUVYQm9sWFJURW4yMjB0YUtUYzY0bWdCcXpCaUVVVnBCZHFpd3docVNkSVMydXBZU2d2UnRwVFNja2xqV3pIYWdqcFNSZHI0dkx0dmpydmsyN3ZkdmQxTGpuN1B6RE4zdC9kKzcvdCtmOC8rNzhhSzBORGFhcjJxT2RYWm9xV3lIOVIwYTBGY3Q2N1dkSEdUWm9qVkNjUHFTZWpXMW9RdUhzT3kvZUJUc0RtTS81NFpUOWorTFdHSWc3RGZCL3NCY0RQc2Y0WGZQOFgzYjJ1RzFaSFF6VThtVXVLZHlXVEhtNXFhY2kvakhBS0J5aWYwYkJyK0x3YVhJUFlQa01kcWZMOFhkV3BsczFBQTMxL1FqT3c5OEw4UzliOEJYSVIyK25EYzZEb3psc2swc2xua1FNeGtQR1hPOUVKdFZuWUdGNHNVeVZuZDhVVGFlcDhidys2TGFrQmo1aXpkYk5KUzFyeEVXbnlXeGczNkVtUGRXb1BQRGVqZjdlQVRHTXNIYUR6VHVDNmhiajBOL3BYbUFzcnVnczBXTFA4TnVCSmpaSm1XRWxjbDA5bVBKMUptVzB0TDUrdWlIQnVHa1hzbGpYODduaTRFelZuazlBdmtzUW41N0VTZGhyQjhCTXVQak9XUC8vNE9Ic1IvZTdEOFlkVGxmdFJoRmZnZExHOUh1MXdBZnpyNTVqQU9raVFLaHZWYkdCNkMwLy9pKzJpTmVSeDhGZ252UmZ4ZmFpbnpTazdORTBpSVVQYmY0M3dXbU5UTmQ3QnBLRUE3TFpmRkFZOXpwM3laVFNNRGlRVmkvVStTZzVRWUFJZk9tRzJld3NVakEvcmhXN0w0QmVybWo5aDBVb0IyT0IrVFpUVzRCL2s4T3lHL3lDaU9vVzFJWUg2SDhYUHo5TGJjS3ppbFFHaHBNWnZoWnlIR3dHM2c0MkJrODVaOG85MEc4WDBOaVNzMUl2MlFHazhLZFdzenQ0c25JUDhScVI5bURRWERJZFpTYkJvWjBJbDNTMk9YWlhZcEY0OE1VMTR3bksxYmVXNDFwTDNGRVFDSmxQVld0REcyZnV5VnJOUjN0QlRkU2pCOFlySUZveVZ0bm8yT0N6Qmd4RE5CQjZwWEtNSHd4aUQ5Z0szS2M2UGNrdkJHSlJpK01jbUMwWUQ0ZmRLNFhvaDlXL1lUQ1pSZ2VLTnZ3Y2hrR3RHMmUyVytha3NsR0w0eG1ZSkJheGxwVEkra05SUWRtR1Izb1VNSmhqZjZGUXc2Y0NyelUzdENNTERXdVFzZDNSK0F3M0tuQlE1S3luamhqZHhPbm5EaUNFWnVHanJzWVdsTUp0cGlXVUszQm1UL0ZmRXVkaGc2VVBlNkZnejBiUjZmYTZNbW5ZM2tsRHdoYVlqTFVVNmVzMjd0MGd6em03VmdVdTk2RDZma0h4Q2E2MlVWR0NNcThnMDJqUlFuaW1Cb1J2WWlhVHdtMm50Zlc5dkNrN1cwZFlIcy93SjE2M2s2ZU1adVEwVzlDd2JHOUsxc09xV0F2SVUwWDV0aURadE5iU2pCY0dFRWd0SFdkc3ZKOEUybkF1VXhpYnA1aFdNOTJvRGYyeWI4WDBLeDNyRU5GMG93b2dIbTBoSnB2amFWWVBqQ2lTQVlpYlQxZVdrc0ppYkNrL1BtNVU1aWM4cnhRcGxkTVJQcDdIbHNIaHFVWUVRREpSZ2g0c1V1R0hTUkQrcElWK1RKNHhIMUxHOWRqQ0hUaU1sUjRWaUcyRTdIUmJoQUtGQ0NFUTJVWUlTSUY3dGdvSjJ6MGpoTXRIT2VqbDJ3ZVFGWS9sR1pmU25GZkRZUEJVb3dva0hDTUJkTDg3V3BCTU1YS2dxR0lTNXZUcHRuaDBYVSswNVpuQUpERkF6RDZEZ2QvcDZXeG1IR0RmRkZOaCtIMFFiMHdhT3lNbU9FK09VTkkvY1NMbEExNmwwdzBGNjc0N3E0cFJwR2NkcWE3a3VSNVV0RUg0NWdEbXdLaS9EWmo4LzdJRVMzNHJPemVhYVl6V2xVaDNvUmpKb3pSTUdvT0FFTmEwaTJkVEdHZUVwOFRGSm1QRHZZdkdyVXUyQ0VRYnFoa3NPRkJzeWxpMld4YXNUajZOZDEycHNYdjU3VENRWWxHQzRNU1RCYVc2MDNvbzFkYjZxenFWdGZZbk01NkFwQnc5b3hvVndSTVlsR05LMzkxVnlpS2lqQmlFWXdtbFBkTGJKWXRTVGE3cUhpQSt1K29RVERoU0VKQnRwdmhkVC9HSFd4djl6V3hSaTB0UGlFdEh3SnhiVnNYaFdVWUVRakdIUndHdU9oMGdWNWtUT2VNaS9oaFB4RENZWUxReENNczFxdFZnenU4cmV2cHl5UGp3SHdzcFZoL1N1VldqS2RDd1NHRW95b0JBTzVwODMzb3ArZWs4V3NGZEYrd2E4U1ZvTGh3aEFFQTM3V1RQQmJSSFRjQWV4R3ZKVE5IZlFNTmNmNkJzK1A5ZWJueGZxZVBKV1gya0NaekhnZkV4akNHUUlsR05FSkJzRitFSkV1ZHN2aTFvYmlUNXlLZjlTTllPaldaalR5ZmFIUnVkOUFIb3RZcFdBNE54cUpZMUxmVE5UNUsyd2VpNjBmTWlBVUQ0S2pCZmJtajhiNjhzdGoydzdhRDJxaGZVLzB4eTZacnpIUzJxdWxwVE5sK3d5SXVoY01qQlU2NjFRTm0yY3VQb1BEUllUUkJqcGJSMk1BT1Y5SFp6T1E5OC93L2ZZd2lQSHRmamUwYnYyRmsvQ1BlaEdNT3JzT28vTHQ2N28xWERnVnVpRS9Cd0x4anhLeEtPWEcyTTZkdGkzNnc4T1JkbkdQN1RjZ2tGdWRDOGJVdkE2amxraWtPOCtUdGcySU1YU1l6ZnhEQ1lZTHF4QU1MN2V2bzc3dHRuRi8vMG5Za3RnaEVZbHhITHFhekoydGpFcWJzOWl5U1dYbjJ2NERRQWxHL2FPc1lCaldBVGJ6RHlVWUxnd3NHTGxwS0x0VjZwTkpIVlo0WUhMZi9uZkpCV0lDaDJIZFFFWGk2ZXdsTXI4bGRKNUhZdHY3aFJLTStrYzV3VUQ3N0dVei8xQ0M0Y0tBZ3VIcDlHZEtYTVhtRUl4OHUwUWNYUGpZYSsweW1Vd2oydXR4cWU4aW9vNFgydlkrb1FTai9sRmhsK1NQYk9ZZlNqQmNHRUF3NkhvSzdBNlVuY2lvNThHbXBzdGVlQjFENzlCWDVlSWc0ZjNEcDNPcEdPTE1sL2tmeHgyeHpGcmZqOFZYZ2xIL3FMQkxzb1hOL0VNSmhnc0RDRVlpVmY3MmRXYnBKZHc5Kzg2UmlzTjQ5Zzd1aDNWaEY0UEY2UW1KLzFMcTFnSXU0aG1WQkFNVDl1N3g3MHdKZy9UWWZVNmhMSlJnVkVhRlhaSUgyTXcvbEdDNDBLZGd6SjV0bmdLZkI2UyttUGovMEl3WkhTL25JZzVHUnhzaEJnTlNrU2psWWk1UkFQcnVVbG1jWW1KeS9YbkczSEV4SzZEaUZrWkV4QmpZeUNtVVJTWEJRRHVQb0E1Ym8yYlN5TDZkVS9JRTNpcVVuZ1lObTJnRDE3TjArRzhWcCtRZlNqQmM2Rk13NHJwbFNmMFVFVEZOTmk5RnovRE1XRy8raUVRa0hQYm1OOFMyYlp0NCtiaHpqMG41SjNpQmRGczFsL0FFMUwydUJhTldUT3JpQTV5U0p5RHY3OHI4MUp5ZXJ5NldRQW1HQzMwSVJ0T2MzR2xvcDhOU1AyUFV4Vk5sMS9UcjhxMnh2dng2OFBraXNmZ25mbDhmNng5MGZRVWw0bjVHR3ErWXVqaHk1cXp1MTNDUmlsQ0M0WTExS1JqMFdrZ3RGL3dtUlNVWUx2UWhHRjRtR0FhTFlQUHkyRGcwUGRZejlIN3Nwc3lOOVF4VWZDMGlYZnlGUHRvbmkxbE1HcXhjcENLVVlIaGozUWtHeENLcFcrL21kSUpCQ1lZTFBRb0d2WVFhOXVYZjcxbHA2NkpLbEh0OC9Rc1VSKzBYVFh1QUVneHZyQS9Cb0xmcjJRZkhyL0d6bGVtS0tTTVl1bmtIVFN6RWxMNCtzRmFDZ2ZvK0IrN1dqT3puMkxRc25OY0dpRDFVVHViUG9kbkY1cEdBenBnZ3Z1dFdCdXI2SDd0T3VyaVVpNVFGWFNXS010L0hCTjVFYXlYVXIrdzlNY0VwanZHSzR2Zklid1ZkdzhJcGxBV05CWlM1RHZXaE41WG40ZWRvcWQ4b2lGeXgyd2sraXUvMEl1aWw5S3dUVHNrVDRtbHhEdHJ6Um01WGpQVW8ycFhlNkc0OWdqeHZ3K2ZDaE5HaGNmaHdRQzlqYVRMRUc5eG9HRmVXdmlZK1V1U20yUStjb1hkeTZOWWlOT3d5VlBySEdCaDNKb3p1VUNzZVQ1bVhRZkYvamhnL3hPZlhOZDI4Z2pvMGFIM3BMQWxOTkdkdEw1WWk1NXZRZ2JlajQrNmcvOWdzTXFBT0gzSGFTZndFYlhjRHZtZVRodlVwVGU5Nnk0UXpNNzZRbTlZMFo5RnBkUGNtNnZOcHNBdDlzdHhwTyt2WDRFYkUyMG9UQ2NzR1NvbmwrQi9mNldhL1ZjVjUwYVNQeDd0T0RlRUJ4ZzEweHkrZGtvWGdmQWd4RmlEZTE5QU8zME0vckVRTzl5TG1BNGkvQmIrM2wrYm5rUElITjRQclVMKzErRndCMjJ2aG94MWlmMUc4MVhwYnZBMjVaaksrcjJseFIyNGExZDhSUHpFZnV3b1djc0VXaUpNellqK0kzdytWdEtzaEhnSC9BUFpTbnFqVHpmaTh4aDY3dW5VdVBkckEyOE54WXJIL0F6M3RJNGo1K1RPTEFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCJdLCJleHRlbnNpb25zIjpbImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6IjIzNzg2NDUyZjAyZDQzNDQ4N2VkYWFmNzAzNzI2ODgxIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6dHJ1ZSwidXAiOnRydWV9LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fV19fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMi0wOC0xNiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IlNhZmVOZXQgZVRva2VuIEZ1c2lvbiBDQyIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjIwODIyMDAyIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjItMDgtMTYiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6Mn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNC0wNi0xOCJ9LHsiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbImI2ZWRmMDI0M2I2MmIyMjY4MGIxYWI2ZTFiNDg1YjMwMmE1Y2EzY2IiXSwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiYjZlZGYwMjQzYjYyYjIyNjgwYjFhYjZlMWI0ODViMzAyYTVjYTNjYiJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiU2VjdXJpdHkgS2V5IE5GQyBieSBZdWJpY28gLSBFbnRlcnByaXNlIEVkaXRpb24gKEVudGVycHJpc2UgUHJvIn0sImRlc2NyaXB0aW9uIjoiU2VjdXJpdHkgS2V5IE5GQyBieSBZdWJpY28gLSBFbnRlcnByaXNlIEVkaXRpb24gKEVudGVycHJpc2UgUHJvZmlsZSkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2LCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjJ9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50IiwicmVtb3RlX2hhbmRsZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRFNEQ0NBakNnQXdJQkFnSVVVY21NWHpSSUZPZ0dUSzBUYjNnRXVaWVprQkl3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRRG01NTViV1k5V1crdE9ZMHJJV0hsZGgrYU5hbm9DWkNGaDdHazNZWnJRbVBVdzBoa1NHNnFZSFF0UCtmWnlTMzNWRXJ2ZytCUXFubXVtZ05oZnhGcmt3RVpFTGVpZEJjQzhDNEFnNG5xcWlQV3B6c3ZJMTdOY3hZbEluTE5MRmNaWS8rZ09pTjZaT1RpaE81L3ZCWk1iajlyaWFBY3FsaVltTkdKUGdUY01HYUVBeU16RU1OeTJubTZFcCtwalA1YUY2Z2kyMXQvVVFGc3VKMWoyUmoveW5NL1NkUnQrZWNhbDVPWW90eEhrRmJMOXZ2djJBMk92NUlUWkNsdzRiT1M5bnB5cFFpbU9aNVFBWXl0bVlhUXBXbC9wTVl6NnpTajhScWtWRE5FSkdxTmZUS0EyaXZMWXdYNmxTdHRNUGFwZzBKODRsOVgwdm9WTi9GcFM0VkNWQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJRZ0tGQWhHNlJhVytoVHk1MmR4ZVQ4YkM5Nkh6QWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQVlNemdMckpMSXIwT292UW5BWnJSSUd1YWJpSFNVS1NtYkxSV3BSa1dlQXRzQ2hERUhwWGNKL2JnRE5LWVdvSHFROHhSVWpCNEN5ZXBZZXZjM1lsckc4bzd6SHhwZlZjYW9MNVNldUprekh4S240YlRhU3A5K012d2FtbnA2NGtaTWlOYkZMa25mUDlrWUtvUkhrTVdoZVJKMVVzUDF6NFNjbWtDZUlMZnNNczZ2cW92cWpXQ2xGc0pwQmNzbHVZSFdGN2JCSjFuNFJ3ZytBVEVvcFk0SWdHdjZadndjK0E5citBVDJocXBvU2tZb0FsK0FOWXdnc2xPZjlzSmUwVitUQTlZWS9VbGFCbVBQVGQwLy9yOXd2Y2VQV1prUGpLb0FDL3pVTmhmRGJoNExWOEdIczNseVgyWG9tTC9MTmM4Sll6eUlhREVoR1F2ZW9QaGgvdHIxZz09IiwiTUlJRFNqQ0NBaktnQXdJQkFnSVVSMzhtcTI2U2Yyc3pWVjJCZEc2V0VON2t1V1V3RFFZSktvWklodmNOQVFFTEJRQXdMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3SUJjTk1qUXhNakF4TURBd01EQXdXaGdQT1RrNU9URXlNekV5TXpVNU5UbGFNQ1l4SkRBaUJnTlZCQU1NRzFsMVltbGpieUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRUlnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTlkwV2I5b1BvUm9Lb1F5V1BhSnB6MTF2cldUZzZ6VHRtTmoyVm9LUm55dktHUnFwemI4M3c1bDZZQTk2VVlrWUJEUVAwaWxPMkRQZTZ3V3FWUjV6RGZSemRjSDhiaCtMN2RHR3ZhZTZoUlRaaGtGa0NwWERzNEhjY2tuckRmOEZDbEo3SGUzOUpmNDIvRzFRbTJ6ejlXV21yUFh0Z2lLL3gwNUdqc1FmR3VERzF6ZjVRVFVVaWU4bHd5bUszVGZkT3ZOZWVKQUFQZTJwbjdJdGZSYityVnJOV2lEemxSbjJ2Tm5aMndQbzR3SC9XSjZkaFhaRytyTVdUK2E2Qm9jZzFVZkl3NmtkdW5HNGJUcFp6c3ZhY0ZZeVIwbXBmK0RlT25wU1dBbXl3SldIdlRsZjJZWHhGeWVYY1RBQ2RRbGNNTkdKMlZoWlE0OHh0UDUvUkJQLzhrQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZDaHk0Mm9raXFjVFMxaXFhL0hSV2prQm40SC9NQjhHQTFVZEl3UVlNQmFBRk9xM1FwQ2VESHRrZXR0VWZBTzZmRTZmMktGaE1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQW4rUkhJUGJ0TUVETmRUMWc4SC9SaXRBa1VkTGdBdDF0V0dXbmxqOWtuYnY0LzRHbFg3QzlwNDVlZlBPOS9hWkw2T1YxWFJLQmk2S210Qlc1SzdudVlFbk14LzVCcUJTYkxUN3JoZHVDNDlUQmVNYjlQSGRYc1RsU1ZOWWVmcjFkR2lkcjRqMHhWQlFMYjFya25EQWJkV0R6S2Z2bmF5S084RnJ3ZTdIeDg0M01HL3JKK2MwWHJ1VXZiZlZUQ0hMaUlXaE03b05EaEw4eG9iNnhVbzlLTEtjU0wrSXRZc08zLzlXYjhROUdqc3FMNEZYc0RjRzFTYVloN0twZnVNbU9peHF6SlpPMm5JaWNQWVJnMUkyU3VpVWZZTzcwdG1kSGNibCtrU1FtU1l0N3JxNHZpSUxnMkd4M2o5cklUdVdUamJhVWFTU1F4Z09tTVNIdXl6TUFDIiwiTUlJRFNEQ0NBakNnQXdJQkFnSVVEcUVSdys0Um5HU2dneGdVZXdKRkVQRFJaM1l3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRREk3WG5IK1p2RHdNQ1FVOE04WmVWNXFzY3VibHZWWWFhUnQzWWJheG45Z29kTHg1c3dIMGxYcmRnamg1aDdGcFZnQ2dZWVg3RTRibDF2YnpVTGVtck1XVDhOM1dNR1VlOFFBSmJCZWlvVjdXL0UraFRaUC8wU0tKVmEzZXdLQm82VUxlTW5mUVpEclZPUkFrOHdUTHEydjVMbGo1dk1qN0p0T290S2E5SjduSFM4a0xtelhYU2FqMFN3RVBoNU9BWlVUTlY0enMxYnZvVEFRUVdyTDQvSjlRdUt0NldDRkU1blVOaVJRY0ViVkY4bWxxSzJieDJ6Nm9rVmx0eURWTEN4WWJwVVRFTHZZMXVzUjNEVEdQVW9JQ2xPbTRjcnB3bkRSTFZIdmpZZVBHQkIvL3BFeXp4QS9nY1NjeGp3YUgxWlV3OWJuU2JIeXVyS3FiVGExS3ZqQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJUcXQwS1FuZ3g3WkhyYlZId0R1bnhPbjlpaFlUQWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQXFRYUNXTXhUR3FWVlg3U2s3a2tKbVV1ZVRTWUt1VTYrS0JCU2d3SVJubHc5SzdIZTFJcHhaMGhkd3BQTmlrS2ptY3lGZ0ZQemhJbXdISmd4eHVUOTBQdzN2WU9kY0pKTmt0RGczNVBYT2Z6U24xNWNGQXgxUk8wbVBUbUliOGRYaUVXT3B6b1h2ZHdYRE00MVphQ0RZTVQ3dzRJUXRNeXZFN3hVQlpxMmJqdEFucS9ORFVBN2JlNEg4SDNpcEMrLytOS2xVcmNVaCtqNDhLNjdXSTB1MW02RmVRdWVCQTduMDZqODI1cnFEcXNhTHM5VGI3S0FIQXc4UG1yV2FOUEcya2pLZXJ4UEVmZWNpdmxGYXdwMlJXWnZ4clZ0bjNUVjJTQnh5Q0pDa1hzTkQwNWRDRXJWSFNKSXMrQmR0VFZOWTlBd3R5UG1ueWIwdjRtU1R6dldkdz09IiwiTUlJRFBqQ0NBaWFnQXdJQkFnSVVYemVpRURKRU9UdDE0RjVuMG82WmYvYkJ3aVV3RFFZSktvWklodmNOQVFFTkJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNWjYvVHhNOHJJVCtFYW9Qdkc4MW9udE1Pby8ybVEyUkJ3SkhTMFFaY3hWYU5YdmwxMkxVaEJaNUxtaUJTY0laZDFSbngxb2Q1ODVoKy9kaEs3aEVtN0pBQUxrS0t0czFmTzUzS0dOTFp1ano1aDN3R25jcjRoeUtGMEc3NGIvVTNLOWhFNW1HTkQ2enFZY2hDUkFIZnJZTVlSREY0WUwwWDRENW5HZHh2cHBBeTZua0VtdFdtTW53TzNpMFRBdWNzcmJFNDg1SHZHTTRyMFZwZ1ZkSnB2Z1FqaVRKQ1RJcStEMzVod3RUOFFESXYrbkd2cGN5aTV3Y0lmQ2t6eUNpbUp1a2hZeTZLb3FOTUtRRWRwTmlTT3ZXeURNVE10MWJ3Q3ZFenB3OTF1K21zVXQ0cmowZWZuTzlzMFpPd2R3TVJEbkg0eGdVbDVaTHdyclBrZkMxLzBDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01COEdBMVVkSXdRWU1CYUFGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFNd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkRRVUFBNElCQVFDM0lXL3NnQjlwWjhhcEpOanh1R29YK0ZrSUxrczB3TU5yZFhML2NvVXZzcmh6c3ZsNm1lUE1yYkdKQnlKMVhucXVCNXNnY1JFTkZ4ZFFGbWEzbWlvOFVwZjFvd00xWnJlWHJKMG1BREcyQnBscWJKbnhpeVlhK1IxMXJlSUZUV2VJaE1OY1pLc0RackZBeVB1RmpDV1NRdkptTldlOW1GUllGZ05oWEpLa1hJYjVIMVhnRURsd2llZFlSTTdWb2xCTmxsZDZwUkZLbFg4dXN0Nk9UTU9lQURsMnhORjBtMUxUaFNkZXVYdkR5QzFnOStJTGZ6M1M2T0lZZ2MzaXJvUmNGRDM1NGc3cktmdTY3cUZBdzlnQzR5aTB4QlRQclk5NXJoNC9IcWFVWUNBL0w4bGRSazZIN1hrMzVEK1dWcG1xMlNoL3hUNUhpRnVoZjR3SmIwYksiLCJNSUlEUnpDQ0FqR2dBd0lCQWdJVWV4OW5UOXZ3Wk5YUzQ4M0xkaVlHZncyU2pTb3dDd1lKS29aSWh2Y05BUUVMTUM0eExEQXFCZ05WQkFNTUkxbDFZbWxqYnlCQmRIUmxjM1JoZEdsdmJpQkpiblJsY20xbFpHbGhkR1VnUWlBeE1DQVhEVEkxTURnd01UQXdNREF3TUZvWUR6azVPVGt4TWpNeE1qTTFPVFU1V2pBbk1TVXdJd1lEVlFRRERCeFpkV0pwWTI4Z1JrbEVUeUJCZEhSbGMzUmhkR2x2YmlCQ01pQXhNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXUxTWV2bnk5ZHlPOVpVQzM5U29NaExjUi9EWHJ0Ri9jaU0xMnRjaXkyRVhBWjZNa3JpdlZ0Q2ZFVk05WDZJU1RFbkJQNnVTWVlvdjZwcHY2TzZKaDJOSG1ZbTR3K0puUzRWbkNQVTdtSEFNZlZJMk1HVFRNVk9ldzB4VXNHN3NJU0lrSURVQm11azhZSzljNXppYzkrdkZRR0xJa3NkWE81aVZGSWdORzUzY0dYRDRaTFpvQVBpdTBQRW96eEFxWUlhSTRneEtoT0EzUzgvVzhtSVdzdTZvZnlqNEd2a0ZHNlo3a3lGMzEwN1A3bXdGSExySTNFTmFQV01PRmNUYUdhMGR3Ky92VlJ3alJjRVpCVnN1dVQvODdja1NzMGE1cGt0M3ZaQmxhWWVUOHB6U3JlVjdtb3djSU05MEwyaWFBVGxQMG54bWFFNm5PeVRib2pGVmwyd0lEQVFBQm8yWXdaREFkQmdOVkhRNEVGZ1FVU1hFaDNzYTNidER1cm00TU0vQzdTMWxSdXVZd0h3WURWUjBqQkJnd0ZvQVU2cmRDa0o0TWUyUjYyMVI4QTdwOFRwL1lvV0V3RWdZRFZSMFRBUUgvQkFnd0JnRUIvd0lCQURBT0JnTlZIUThCQWY4RUJBTUNBWVl3Q3dZSktvWklodmNOQVFFTEE0SUJBUUI1R2MzaGFmdHA3aEtzRVpzbytpL1o1blJ1cWRtekcyV0NsVW9SVXFiYVB5Z2xuSkRqS1Iva2ZnT2w2aWJiRi96dGhtM0ttWFE3SGNESVAyeE1kRzdVMkwyaW1iSlFIcVBmL2gySHFvamI0clpndWUrNlc0a3RTUjVlbFI5TDFyWXFFL1NHWU00aUVLb1ZRU3Y3UlQxcnhJZVdpS3N3L1Z4eGkvUU9uc3gzRjd4ODBDQ1lnQjRFM3lReDhWVFc0NDBoVEV3VEExZU1IT2l4MzJ0UHR5eUhJYThQVlZJZlZwSFFKQmFNVnZ2NTA4VUVqd2tiVTJybmpmem9TVE5TOUE1alVROG1CU3ZlOTVyakIwZG85OEVVK0R4ZEJxWDIrSDZpNXdsSUNGZ3poZHpjc25lOWhHS1Q2bHpUWDRjSWRKc3JZMit4bGVLMEZGUXk2bEdFVkxFZSIsIk1JSURTakNDQWpLZ0F3SUJBZ0lVVG5iYkdJUjJOSHZ6cUlLRkFlUXdHMVhCaXMwd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JCSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVFZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU9zWGozazA0QmFuNFRZZHRaS3FEL09QSnh5RHlhUG1DQlVGVWlhWklnVHRlWm5qM1gyNURoZ3BaWlhzQzREMHlkSWNybEE2d05VSW5PUkwvTDl6QmJURUlNQVZNR282ZzdVS0FtYjJNRjZBSGJuaFlKZDllaWt1cFZOV1NoSE5ZTmM0R0JkTzFZTjZBZlVxdkpoSGJlM1Y0U05NUG1CUkVLSlBWejdUaHdnbWdnVGU4V3MySzAvd3NxdjJ3U0U3cGJDQnNVWmhJWDUxYlpNM3BxRHdKUFRtUkZFdnQwLzZ0RzVlTzhGM2oxNE9YcWZFaG1qbjFWdnhLRFlRT0xaQXhDd3dnQzBQNENkZld2M3k4UFNSOEkzNTRoTzFZK0d6Tmp2SXFYMzhOS0x5d3VJWUhGZXJPeE5seEVNQnZGaFlCdVJ1WUFra2dVYVBxTjZVQmhzSUxyc0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ0NvUkhoaXlObmJuWFJXSUw2WkJYb0JYOVlUTUI4R0ExVWRJd1FZTUJhQUZDQW9VQ0VicEZwYjZGUExuWjNGNVB4c0wzb2ZNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUNRRmFmSkkxLzVXZzlDRUVpbUUxUlA1NFJnUXdUTlRPT1FzTEFDVGUrckl0bEZRekM5WkRoclY4Mjh5WDdqenkrQUFzcDNpeks3VDF0aDJkbDdtK3R1MHN3MlBhL29sYzAybnQ2UHlJdzM0OGdhSHpoSTErMEtFNDVxeHZGRGVMMmxNeGJQZkNZdnlFRWFZemppUUVMVTU5NTFwWEdXeUtNYS80Zkx0TytaS09YaE11VmVxNHJYRFBJNTRXNkpIT2lBYWlLZGl3KzVlM2Mya3QvakZJUXRNNnZNWGc5TE5GemRqRVROdDIwVlg5UWV2UnBGWmZ1Y01HOXdDYVFEb0ZsUHpwVE1KS2hQZXYvaW1KbVpZaEtmcjBsTGNlbXRxakl4TEFvcVpkT1lmSEJnNit2QWNkUEkvaWF1R3BVQXY3WCtVS05tRHdqWjJCYUg0c0x3aEIybSJdLCJpY29uIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwiaWNvbkRhcmsiOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJwcm92aWRlckxvZ29MaWdodCI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsInByb3ZpZGVyTG9nb0RhcmsiOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0ifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMi0yMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzYsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiU2VjdXJpdHkgS2V5IE5GQyBieSBZdWJpY28gLSBFbnRlcnByaXNlIEVkaXRpb24gKEVudGVycHJpc2UgUHJvZmlsZSkiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlUyRjEwMDAyMDI0MTIyMjAwNCIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTEyLTIyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3Nn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wMS0xMSJ9LHsiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbImZmMmQ4YmVhOGUzZDhkYmEzYTM0N2U5ZDNjZTZiMmI5ZTYwM2VlZmYiXSwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiZmYyZDhiZWE4ZTNkOGRiYTNhMzQ3ZTlkM2NlNmIyYjllNjAzZWVmZiJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiWXViaUtleSA1IFNlcmllcyB3aXRoIE5GQyAoRW50ZXJwcmlzZSBQcm9maWxlKSJ9LCJkZXNjcmlwdGlvbiI6Ill1YmlLZXkgNSBTZXJpZXMgd2l0aCBORkMgKEVudGVycHJpc2UgUHJvZmlsZSkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NzI4LCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjJ9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50IiwicmVtb3RlX2hhbmRsZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURTakNDQWpLZ0F3SUJBZ0lVUjM4bXEyNlNmMnN6VlYyQmRHNldFTjdrdVdVd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVJZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU5ZMFdiOW9Qb1JvS29ReVdQYUpwejExdnJXVGc2elR0bU5qMlZvS1JueXZLR1JxcHpiODN3NWw2WUE5NlVZa1lCRFFQMGlsTzJEUGU2d1dxVlI1ekRmUnpkY0g4YmgrTDdkR0d2YWU2aFJUWmhrRmtDcFhEczRIY2NrbnJEZjhGQ2xKN0hlMzlKZjQyL0cxUW0yeno5V1dtclBYdGdpSy94MDVHanNRZkd1REcxemY1UVRVVWllOGx3eW1LM1RmZE92TmVlSkFBUGUycG43SXRmUmIrclZyTldpRHpsUm4ydk5uWjJ3UG80d0gvV0o2ZGhYWkcrck1XVCthNkJvY2cxVWZJdzZrZHVuRzRiVHBaenN2YWNGWXlSMG1wZitEZU9ucFNXQW15d0pXSHZUbGYyWVh4RnllWGNUQUNkUWxjTU5HSjJWaFpRNDh4dFA1L1JCUC84a0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ2h5NDJva2lxY1RTMWlxYS9IUldqa0JuNEgvTUI4R0ExVWRJd1FZTUJhQUZPcTNRcENlREh0a2V0dFVmQU82ZkU2ZjJLRmhNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUFuK1JISVBidE1FRE5kVDFnOEgvUml0QWtVZExnQXQxdFdHV25sajlrbmJ2NC80R2xYN0M5cDQ1ZWZQTzkvYVpMNk9WMVhSS0JpNkttdEJXNUs3bnVZRW5NeC81QnFCU2JMVDdyaGR1QzQ5VEJlTWI5UEhkWHNUbFNWTlllZnIxZEdpZHI0ajB4VkJRTGIxcmtuREFiZFdEektmdm5heUtPOEZyd2U3SHg4NDNNRy9ySitjMFhydVV2YmZWVENITGlJV2hNN29ORGhMOHhvYjZ4VW85S0xLY1NMK0l0WXNPMy85V2I4UTlHanNxTDRGWHNEY0cxU2FZaDdLcGZ1TW1PaXhxekpaTzJuSWljUFlSZzFJMlN1aVVmWU83MHRtZEhjYmwra1NRbVNZdDdycTR2aUlMZzJHeDNqOXJJVHVXVGpiYVVhU1NReGdPbU1TSHV5ek1BQyIsIk1JSURQakNDQWlhZ0F3SUJBZ0lVWHplaUVESkVPVHQxNEY1bjBvNlpmL2JCd2lVd0RRWUpLb1pJaHZjTkFRRU5CUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTVo2L1R4TThySVQrRWFvUHZHODFvbnRNT28vMm1RMlJCd0pIUzBRWmN4VmFOWHZsMTJMVWhCWjVMbWlCU2NJWmQxUm54MW9kNTg1aCsvZGhLN2hFbTdKQUFMa0tLdHMxZk81M0tHTkxadWp6NWgzd0duY3I0aHlLRjBHNzRiL1UzSzloRTVtR05ENnpxWWNoQ1JBSGZyWU1ZUkRGNFlMMFg0RDVuR2R4dnBwQXk2bmtFbXRXbU1ud08zaTBUQXVjc3JiRTQ4NUh2R000cjBWcGdWZEpwdmdRamlUSkNUSXErRDM1aHd0VDhRREl2K25HdnBjeWk1d2NJZkNrenlDaW1KdWtoWXk2S29xTk1LUUVkcE5pU092V3lETVRNdDFid0N2RXpwdzkxdSttc1V0NHJqMGVmbk85czBaT3dkd01SRG5INHhnVWw1Wkx3cnJQa2ZDMS8wQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQjhHQTFVZEl3UVlNQmFBRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRTXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJEUVVBQTRJQkFRQzNJVy9zZ0I5cFo4YXBKTmp4dUdvWCtGa0lMa3Mwd01OcmRYTC9jb1V2c3JoenN2bDZtZVBNcmJHSkJ5SjFYbnF1QjVzZ2NSRU5GeGRRRm1hM21pbzhVcGYxb3dNMVpyZVhySjBtQURHMkJwbHFiSm54aXlZYStSMTFyZUlGVFdlSWhNTmNaS3NEWnJGQXlQdUZqQ1dTUXZKbU5XZTltRlJZRmdOaFhKS2tYSWI1SDFYZ0VEbHdpZWRZUk03Vm9sQk5sbGQ2cFJGS2xYOHVzdDZPVE1PZUFEbDJ4TkYwbTFMVGhTZGV1WHZEeUMxZzkrSUxmejNTNk9JWWdjM2lyb1JjRkQzNTRnN3JLZnU2N3FGQXc5Z0M0eWkweEJUUHJZOTVyaDQvSHFhVVlDQS9MOGxkUms2SDdYazM1RCtXVnBtcTJTaC94VDVIaUZ1aGY0d0piMGJLIiwiTUlJRFNEQ0NBakNnQXdJQkFnSVVVY21NWHpSSUZPZ0dUSzBUYjNnRXVaWVprQkl3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRRG01NTViV1k5V1crdE9ZMHJJV0hsZGgrYU5hbm9DWkNGaDdHazNZWnJRbVBVdzBoa1NHNnFZSFF0UCtmWnlTMzNWRXJ2ZytCUXFubXVtZ05oZnhGcmt3RVpFTGVpZEJjQzhDNEFnNG5xcWlQV3B6c3ZJMTdOY3hZbEluTE5MRmNaWS8rZ09pTjZaT1RpaE81L3ZCWk1iajlyaWFBY3FsaVltTkdKUGdUY01HYUVBeU16RU1OeTJubTZFcCtwalA1YUY2Z2kyMXQvVVFGc3VKMWoyUmoveW5NL1NkUnQrZWNhbDVPWW90eEhrRmJMOXZ2djJBMk92NUlUWkNsdzRiT1M5bnB5cFFpbU9aNVFBWXl0bVlhUXBXbC9wTVl6NnpTajhScWtWRE5FSkdxTmZUS0EyaXZMWXdYNmxTdHRNUGFwZzBKODRsOVgwdm9WTi9GcFM0VkNWQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJRZ0tGQWhHNlJhVytoVHk1MmR4ZVQ4YkM5Nkh6QWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQVlNemdMckpMSXIwT292UW5BWnJSSUd1YWJpSFNVS1NtYkxSV3BSa1dlQXRzQ2hERUhwWGNKL2JnRE5LWVdvSHFROHhSVWpCNEN5ZXBZZXZjM1lsckc4bzd6SHhwZlZjYW9MNVNldUprekh4S240YlRhU3A5K012d2FtbnA2NGtaTWlOYkZMa25mUDlrWUtvUkhrTVdoZVJKMVVzUDF6NFNjbWtDZUlMZnNNczZ2cW92cWpXQ2xGc0pwQmNzbHVZSFdGN2JCSjFuNFJ3ZytBVEVvcFk0SWdHdjZadndjK0E5citBVDJocXBvU2tZb0FsK0FOWXdnc2xPZjlzSmUwVitUQTlZWS9VbGFCbVBQVGQwLy9yOXd2Y2VQV1prUGpLb0FDL3pVTmhmRGJoNExWOEdIczNseVgyWG9tTC9MTmM4Sll6eUlhREVoR1F2ZW9QaGgvdHIxZz09IiwiTUlJRFNEQ0NBakNnQXdJQkFnSVVEcUVSdys0Um5HU2dneGdVZXdKRkVQRFJaM1l3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRREk3WG5IK1p2RHdNQ1FVOE04WmVWNXFzY3VibHZWWWFhUnQzWWJheG45Z29kTHg1c3dIMGxYcmRnamg1aDdGcFZnQ2dZWVg3RTRibDF2YnpVTGVtck1XVDhOM1dNR1VlOFFBSmJCZWlvVjdXL0UraFRaUC8wU0tKVmEzZXdLQm82VUxlTW5mUVpEclZPUkFrOHdUTHEydjVMbGo1dk1qN0p0T290S2E5SjduSFM4a0xtelhYU2FqMFN3RVBoNU9BWlVUTlY0enMxYnZvVEFRUVdyTDQvSjlRdUt0NldDRkU1blVOaVJRY0ViVkY4bWxxSzJieDJ6Nm9rVmx0eURWTEN4WWJwVVRFTHZZMXVzUjNEVEdQVW9JQ2xPbTRjcnB3bkRSTFZIdmpZZVBHQkIvL3BFeXp4QS9nY1NjeGp3YUgxWlV3OWJuU2JIeXVyS3FiVGExS3ZqQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJUcXQwS1FuZ3g3WkhyYlZId0R1bnhPbjlpaFlUQWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQXFRYUNXTXhUR3FWVlg3U2s3a2tKbVV1ZVRTWUt1VTYrS0JCU2d3SVJubHc5SzdIZTFJcHhaMGhkd3BQTmlrS2ptY3lGZ0ZQemhJbXdISmd4eHVUOTBQdzN2WU9kY0pKTmt0RGczNVBYT2Z6U24xNWNGQXgxUk8wbVBUbUliOGRYaUVXT3B6b1h2ZHdYRE00MVphQ0RZTVQ3dzRJUXRNeXZFN3hVQlpxMmJqdEFucS9ORFVBN2JlNEg4SDNpcEMrLytOS2xVcmNVaCtqNDhLNjdXSTB1MW02RmVRdWVCQTduMDZqODI1cnFEcXNhTHM5VGI3S0FIQXc4UG1yV2FOUEcya2pLZXJ4UEVmZWNpdmxGYXdwMlJXWnZ4clZ0bjNUVjJTQnh5Q0pDa1hzTkQwNWRDRXJWSFNKSXMrQmR0VFZOWTlBd3R5UG1ueWIwdjRtU1R6dldkdz09IiwiTUlJRFNqQ0NBaktnQXdJQkFnSVVUbmJiR0lSMk5IdnpxSUtGQWVRd0cxWEJpczB3RFFZSktvWklodmNOQVFFTEJRQXdMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3SUJjTk1qUXhNakF4TURBd01EQXdXaGdQT1RrNU9URXlNekV5TXpVNU5UbGFNQ1l4SkRBaUJnTlZCQU1NRzFsMVltbGpieUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRUVnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBT3NYajNrMDRCYW40VFlkdFpLcUQvT1BKeHlEeWFQbUNCVUZVaWFaSWdUdGVabmozWDI1RGhncFpaWHNDNEQweWRJY3JsQTZ3TlVJbk9STC9MOXpCYlRFSU1BVk1HbzZnN1VLQW1iMk1GNkFIYm5oWUpkOWVpa3VwVk5XU2hITllOYzRHQmRPMVlONkFmVXF2SmhIYmUzVjRTTk1QbUJSRUtKUFZ6N1Rod2dtZ2dUZThXczJLMC93c3F2MndTRTdwYkNCc1VaaElYNTFiWk0zcHFEd0pQVG1SRkV2dDAvNnRHNWVPOEYzajE0T1hxZkVobWpuMVZ2eEtEWVFPTFpBeEN3d2dDMFA0Q2RmV3YzeThQU1I4STM1NGhPMVkrR3pOanZJcVgzOE5LTHl3dUlZSEZlck94Tmx4RU1CdkZoWUJ1UnVZQWtrZ1VhUHFONlVCaHNJTHJzQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZDQ29SSGhpeU5uYm5YUldJTDZaQlhvQlg5WVRNQjhHQTFVZEl3UVlNQmFBRkNBb1VDRWJwRnBiNkZQTG5aM0Y1UHhzTDNvZk1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQ1FGYWZKSTEvNVdnOUNFRWltRTFSUDU0UmdRd1ROVE9PUXNMQUNUZStySXRsRlF6QzlaRGhyVjgyOHlYN2p6eStBQXNwM2l6SzdUMXRoMmRsN20rdHUwc3cyUGEvb2xjMDJudDZQeUl3MzQ4Z2FIemhJMSswS0U0NXF4dkZEZUwybE14YlBmQ1l2eUVFYVl6amlRRUxVNTk1MXBYR1d5S01hLzRmTHRPK1pLT1hoTXVWZXE0clhEUEk1NFc2SkhPaUFhaUtkaXcrNWUzYzJrdC9qRklRdE02dk1YZzlMTkZ6ZGpFVE50MjBWWDlRZXZScEZaZnVjTUc5d0NhUURvRmxQenBUTUpLaFBldi9pbUptWlloS2ZyMGxMY2VtdHFqSXhMQW9xWmRPWWZIQmc2K3ZBY2RQSS9pYXVHcFVBdjdYK1VLTm1Ed2paMkJhSDRzTHdoQjJtIiwiTUlJRFJ6Q0NBakdnQXdJQkFnSVVleDluVDl2d1pOWFM0ODNMZGlZR2Z3MlNqU293Q3dZSktvWklodmNOQVFFTE1DNHhMREFxQmdOVkJBTU1JMWwxWW1samJ5QkJkSFJsYzNSaGRHbHZiaUJKYm5SbGNtMWxaR2xoZEdVZ1FpQXhNQ0FYRFRJMU1EZ3dNVEF3TURBd01Gb1lEems1T1RreE1qTXhNak0xT1RVNVdqQW5NU1V3SXdZRFZRUUREQnhaZFdKcFkyOGdSa2xFVHlCQmRIUmxjM1JoZEdsdmJpQkNNaUF4TUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUF1MU1ldm55OWR5TzlaVUMzOVNvTWhMY1IvRFhydEYvY2lNMTJ0Y2l5MkVYQVo2TWtyaXZWdENmRVZNOVg2SVNURW5CUDZ1U1lZb3Y2cHB2Nk82SmgyTkhtWW00dytKblM0Vm5DUFU3bUhBTWZWSTJNR1RUTVZPZXcweFVzRzdzSVNJa0lEVUJtdWs4WUs5YzV6aWM5K3ZGUUdMSWtzZFhPNWlWRklnTkc1M2NHWEQ0Wkxab0FQaXUwUEVvenhBcVlJYUk0Z3hLaE9BM1M4L1c4bUlXc3U2b2Z5ajRHdmtGRzZaN2t5RjMxMDdQN213RkhMckkzRU5hUFdNT0ZjVGFHYTBkdysvdlZSd2pSY0VaQlZzdXVULzg3Y2tTczBhNXBrdDN2WkJsYVllVDhwelNyZVY3bW93Y0lNOTBMMmlhQVRsUDBueG1hRTZuT3lUYm9qRlZsMndJREFRQUJvMll3WkRBZEJnTlZIUTRFRmdRVVNYRWgzc2EzYnREdXJtNE1NL0M3UzFsUnV1WXdId1lEVlIwakJCZ3dGb0FVNnJkQ2tKNE1lMlI2MjFSOEE3cDhUcC9Zb1dFd0VnWURWUjBUQVFIL0JBZ3dCZ0VCL3dJQkFEQU9CZ05WSFE4QkFmOEVCQU1DQVlZd0N3WUpLb1pJaHZjTkFRRUxBNElCQVFCNUdjM2hhZnRwN2hLc0Vac28raS9aNW5SdXFkbXpHMldDbFVvUlVxYmFQeWdsbkpEaktSL2tmZ09sNmliYkYvenRobTNLbVhRN0hjRElQMnhNZEc3VTJMMmltYkpRSHFQZi9oMkhxb2piNHJaZ3VlKzZXNGt0U1I1ZWxSOUwxcllxRS9TR1lNNGlFS29WUVN2N1JUMXJ4SWVXaUtzdy9WeHhpL1FPbnN4M0Y3eDgwQ0NZZ0I0RTN5UXg4VlRXNDQwaFRFd1RBMWVNSE9peDMydFB0eXlISWE4UFZWSWZWcEhRSkJhTVZ2djUwOFVFandrYlUycm5qZnpvU1ROUzlBNWpVUThtQlN2ZTk1cmpCMGRvOThFVStEeGRCcVgyK0g2aTV3bElDRmd6aGR6Y3NuZTloR0tUNmx6VFg0Y0lkSnNyWTIreGxlSzBGRlF5NmxHRVZMRWUiXSwiaWNvbiI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsImljb25EYXJrIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwicHJvdmlkZXJMb2dvTGlnaHQiOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJwcm92aWRlckxvZ29EYXJrIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09In0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjYtMDQtMjUiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NzI4LCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ill1YmlLZXkgNSBTZXJpZXMgd2l0aCBORkMgKEVudGVycHJpc2UgUHJvZmlsZSkiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlUyRjEwMDAyMDI2MDQyNTAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUHJvZmlsZXMiOlsiZW50ZXJwcmlzZSJdLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI2LTA0LTI1IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTcyOH1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNi0wNS0wMSJ9LHsiYWFndWlkIjoiNWUyNjRkOWQtMjhlZi00ZDM0LTk1YjQtNTk0MWU3YTRmYWE4IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI1ZTI2NGQ5ZC0yOGVmLTRkMzQtOTViNC01OTQxZTdhNGZhYTgiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiSWRlZW0gWlNNIEZJRE8yIEF1dGhlbnRpY2F0b3IifSwiZGVzY3JpcHRpb24iOiJJZGVlbSBaU00gRklETzIgQXV0aGVudGljYXRvciIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsicnNhc3NhX3BrY3N2MTVfc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJleWVwcmludF9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImxvY2F0aW9uX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiaGFuZHByaW50X2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGF0dGVybl9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmFjZXByaW50X2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoidm9pY2VwcmludF9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjExMiwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNYakNDQWdXZ0F3SUJBZ0lVT3FKdVFiR1gxb2RnSXlDWHpQMG9QTWQ5eCtNd0NnWUlLb1pJemowRUF3SXdTVEVsTUNNR0ExVUVBd3djU1dSbFpXMGdSa2xFVHpJZ1FYUjBaWE4wWVhScGIyNGdVbTl2ZERFVE1CRUdBMVVFQ2d3S1NXUmxaVzBnU1c1akxqRUxNQWtHQTFVRUJoTUNWVk13SGhjTk1qVXdOREl5TVRrd09ESXpXaGNOTXpVd05ESXdNVGt3T0RJeldqQkpNU1V3SXdZRFZRUUREQnhKWkdWbGJTQkdTVVJQTWlCQmRIUmxjM1JoZEdsdmJpQlNiMjkwTVJNd0VRWURWUVFLREFwSlpHVmxiU0JKYm1NdU1Rc3dDUVlEVlFRR0V3SlZVekJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCQ0pTUHRlZm1IY1Vibm5OL3N3ZDlja0s2RkpCUDVCSnlNMWQyMVRuQUJvU3F0MDYxNmwxK3FQWW54M0ZPblFFaVBsUHVpNU1qNVVOUU1VMStLRkJUM3lqZ2Nvd2djY3dEd1lEVlIwVEFRSC9CQVV3QXdFQi96QU9CZ05WSFE4QkFmOEVCQU1DQVFZd0hRWURWUjBPQkJZRUZOMWNOZnljWWg0aTQzMDZpODJjby9iSGEzd2pNSUdFQmdOVkhTTUVmVEI3Z0JUZFhEWDhuR0llSXVOOU9vdk5uS1AyeDJ0OEk2Rk5wRXN3U1RFbE1DTUdBMVVFQXd3Y1NXUmxaVzBnUmtsRVR6SWdRWFIwWlhOMFlYUnBiMjRnVW05dmRERVRNQkVHQTFVRUNnd0tTV1JsWlcwZ1NXNWpMakVMTUFrR0ExVUVCaE1DVlZPQ0ZEcWlia0d4bDlhSFlDTWdsOHo5S0R6SGZjZmpNQW9HQ0NxR1NNNDlCQU1DQTBjQU1FUUNJQ0xObWp4dUVKMjVGRGdNNkdqWUJYWFVkM2MwcjIyTTVKUHE2M0VLUk11bUFpQk8vcEJtRWU2eUluY1haMWx5MC9qT2x4bW5XNmw3TkprZlUrb1h3T1J6TGc9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFnQ0FJQUFBRDhHTzJqQUFBSkRrbEVRVlJJU3oyV2E2eWVWWlhIMTIwL3ovTmV6cTNuVm5xRERvVzI5Q0l3RFcyUkdYRnF3QklsZzFVU1oveWd4aGlkbWVoRXhXVGlOWDVRWnpReE1USHh5MlJpSENRejZEamhJb1lJem9DbElDcFVLTkFDcFlXMnA1ZHp2N3p2OCt5OTExcCtPTVg5NForZDdKWC8ycjlrSmV1UEs3M21wL2M5ZlA3SW83bnVBU0s0dytXRFNJaUlRSUNFRGxTMS9KV1RJUnZ1M0daSmtSaUJDQkdSVmkrQVJNZ0l4RUJRVk8xcWRQZWh1dy9pQXo5L2ZQN2hiKzI1cWNtS2lPN2dBSVJJeUlURXlJSXN5T3d1M1FGNjdKbUJwSFR3MWh3dEVETXlJd2t5QXd1Sm9BaHlXSzJYTXZ6eGhYTUwraDU1N1RlUDMzYjlteExXRWphQWlHOS9DcG1JR1ppUkNGaVFaSENJQmdld01SNGN4cFU2QURJeWs0UzNyZVZ5R3hZVUlTbHUyTFBoL3ArL0lIbjYxTUFObzhzOVJHUUFRV0FpTmhSQ2NSSUhxUW9xU2trbWRaYTVaVzZVK2ttNENLR1U3SnlWblFLUk9BcXpHQW1TSUpJWmRRZUhtTjRRRVVEb0J3RUpESVJJdk1xZUxBQkoxZUpzY25ZNlhKaVJSdW1OTTVRZG5uNGVPMTJmbklTSnlhSXpWTVRNd054cWx5UUN6RWlNUkE1QWpDd2tDeXR5Y1c0MGFrbU15RXpFUnR5cWNHZ0lPY2hLREsrZERpZE9TeTl5dTRQYnRoRUtucG1tL2htb1R1bldhK1AyYmVYZ1NBa3NpejNyMTVHWWdRaVJES0FzODl4Y2ttT3ZsMFd4SVJzaEFTS2lvRGtpd2dkdWIxb3N2M3FxT0g1YS9ub2Y3dGhLYTlad1VRWVVVWmVGRlhybERYMzhjTy9sMXhjK2VLaGR0ZmtYajE2YW1kRldtOHdBQUJ3Z01ENzM3QkorOGRBbjN2dk8rYWlCR0pIWWtkdHQvTzJ4VWcxVnZSZmxveC9FOFhIT0pzbUNrNkFJaDFDMVF0RUtDOHR3Ny8yWFp1Znk1cXVxcVF0NjhPQkVWZ01IQUhleklQalFReGRrL1dUZWNjMWlrMXNzakJLQVJFUzJiTWtmL25SNTRBRCs0MGVaV0JiN2pDSWNoRmd3QkdEcHEvUjczT3FFVDMxeTg0OS84dGJudjN6cHRXTi9PVGhVcEtTRUFPNldMUlJ3OUxsNXlVN1IydEVxTmlZVE5SNW95Y3NuK05ydDhKRVBCR0xPSUZLdVRsNUFYbFYyRm1ST2h1RDBvYnMzblg0enZuaHNmdi9lOFhvbElZS2JXdFpTUE5hWmtJbWt3aEF3RkU2aHFJcWt4WU9QMFlmdURBT0RFajBBQjVBQ1Eya1VESU9pQUFkSEJtUmlpY2xibGR4MTE5cUhIcnk0dUZBenVhWGtLVjNXYkVKTVhCU2NBd3M3Y0xzVGpwK0U1TDd6dXFvMVVCVW94T0lrVWJIVkxrTVpzcE02bHFWa2d5YWFJRExEamgxRFFhWmVQVEYvL2E3QnJCbGMwZFJOd1ZTQUNLZ0FFaUJHWkpEdzRxdDUvOTdRNnBTdnY2VlNZS2c0bEQ0NjFwcGZ0c1h6L2FIaEtoUnljYnJmYmt1M0t5bnF5Wk1yRXhQRi9yMER6ejgzdjNOclMxTUN5NVpVVlMyYmNLQlFCY3VCaEVuWU9aeTVrTjkzWTZ1eDhNUXppMVZIcDg0djd0dzFkUDA3eWljUHp5NHUyZmJyQmtaSHk1Lzl6OWx0V3djTzNiWCtqVFBMUDdudnJYZmZNckpsYy9YVWs3T3gxd2lxV1FMUFpJcXVCSVRBd1VtY0FvV3lUaUZtSEI2dHFDaHYyRE84WnF6NjhyL090YnZGRTRkbnYvS1o2UzNYZGpvZG1aNnV2L0Z2Rjc3NXVmTXowNzNmUFR2M3plOWRlUHJwaGVFdU5JMHRMZFNlWW80cHg1UmpORFY1NlFROCtodklxa0JlVnI2dzdJc3JVSGFLZHJlNmFjL2dEMzU0NnF0Zm1EandOMnNmLzcrTEk5dGhmaTd0Mnp0KzlPak1aejh4Tmo0UkhuemczTlJVK3Z3bko1a2drT2JvRC85eWZzMHdwcWl1SnV6SFhqWnlKT09nWEJnWEpzRW9BQkZ4cU5yVkk3K2FmdWJaNXA1N3JpR1JtMitldVAvZTdlZW42bnMrZCt6NEs4dWJOb1JiLzJydzY5K1pHaG5DbTI1c0xjMG5zR2hxVFMvRlhteDZLZlp6N09mY21PemVIZTQ4T05na3BoQkNXVFFKVDU4NUF4eE9uNjN2K2RLcmgrNmNQSHhrWm55OG5KdUw4M1B4cXIvby9Pajc4K3ZXeWZSMC9ydTd5LzI3T3Z0dXJGNDZFYytkdGFhWENQeHZieSs2TFU4cFc5WlNiSGtKaElTNEtBbUpRZ0FPblpaMHVqSy9wTjF1K0tkLzJEQSsxanA3dHQ4cWNYaVFYenRlaDBEZi9lSGFka1Z2bnVwVlFiLytMMk9UbzdpMDRJZmVMek9YNmtLOENxckpRTE9yT21RM0VVTldLcFVRU05TNExJdXJyK2tjUDdGOHh4M3I3N3B6azRPbm1Nc0Nxd0pIdXBCaW5oZ0xsblhkcUdzVE42MUZUZW5xRGRDdCtNbG5tazFYQUhtcSt3cW1xb3FjY3lJaUlRcUJRbUFSWkhhZ1hidUhqenkxcU9wcko4dXhOV0hqK3RiSW9KVEJONjRycjl4WXNtZjJOTlIxalUzVGI1cGVIR2lwVUQ3eU83M3VhZ1BMcnRrMWcyYlFDT1pDd2x3VTdFN0NBQlNUWDdWNVlIU01qejQvdStmRzRkNXlCRE53ZGRYK0tuak9idGxWMGJMbWJGbVI5SVhqR2xDM2JOUllxK2VNcnA3VlBib1pjZUNpTEVJUnBKQ2lJQUJ2dGVpT2crUDMvdWU1eFlVNnNMa20wQXgvVmt1UWsrZGtLVm5PZ3JtM2tuNzJpTC9ycGp6UWlwYWlRRVNQNUExNVEyNnl0S1FYWjVxNk5pSUVjRk5mbkFmTjl1ai9yMnk5Nyt6SC8zNnlRTzNWQ1QyalpjL3FwcDZ6cVdyU1FwUTkvKzlqK1BBVGNHQXZuRDF2c1hGVWRFZFREc3lMeTRnSGIvbk10cDFsVG9CNE9ROFIrbHVuMGo5L2R1ejNmMWllbTlWUGZXek5TTmZyZm9wMTBweGRGVjBGYzhFNnYyajNQa0QxaXQ1K1MvcjMveXF5WWFmeWxCd2QzSUhJVDU1aS9QYlh2blRvMExxNmx4RWQzTnpNc2dyNXVzblE3OFZmUERMNy9JdnB0bHZMSFZ0b3FLTUVHVXhUMUlWRmUrVjEvL1ZodkdxZDNuWnpyOXZPNXkvZ1NzL0p6VlJYYlFwTXYzeDZYRWJId3VaTm5WNHZJcmlydW1ZM0JWWExzUlgwOW5kWFYxN2hMN3hVSC8wakRIWmdkTWdBZkhiT2w1ZWhFanV3TDEyOVBuYktsQnNkSDhxakhUWE5ZT3FXVGEzZ2VtUmdSTkRkVkMxbkFqTlYwT3lhTFd1T0VVdzdwZTNhU2hQRE5EV1YrMzE5OWlpbWFQdXUxL1k2SFJ0SlkwTkpNTWRhVlpVZ2cyZlgxVFdRVGMxUTBVMHNHMWpXSnVucTgrVXBWckJzV2V0K0VyS05hMzN0aUJQbzNEejFWbXovTzJyWFRKaGpiWFdqWUJsZDh5cTZxWnVCbVR0VFFZNHNqaU1Mc3pObGFHbE00T3FlM2RRdHUyWXdCY3lhTlBiVVhkZDAwOGhBS05rcXFSZDdwbG5SbENFN3FIdG15QTRHb0E0R0RJUzR2SENlUjk4clYyeSs0ZGVQL2ZmTis2NU1kZU9Xd2ZSdERsdmxkVGMzemRHYUZiMDBMWFVmTGx5RXBnRjBkQU5YY2dNM0IwTjNYdzNuRHNnTWYvajlsaXZmZHd2MmVzMlAvdU9oWTBlT3VDWExEdWJ1QUxaYTZPNE9CcXNheE0rY1E4MndjYjNsQ0c0QTRMRHE2YjRhK3hFQUVOMHNkS3JkZDd6cll4OS8vNThBSUJHVmhpM2ROMndBQUFBQVNVVk9SSzVDWUlJPSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIkZJRE9fMl8wIl0sImV4dGVuc2lvbnMiOlsiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiNWUyNjRkOWQyOGVmNGQzNDk1YjQ1OTQxZTdhNGZhYTgiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwidXAiOnRydWUsInV2Ijp0cnVlfSwibWF4TXNnU2l6ZSI6MjA0OCwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi0yNTd9XSwiZmlybXdhcmVWZXJzaW9uIjozfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTA0LTIzIn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wNC0yMyJ9LHsiYWFndWlkIjoiZDJmYmQwOTMtZWU2Mi00ODhkLTlkYWQtMWUzNjM4OWY4ODI2IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiJkMmZiZDA5My1lZTYyLTQ4OGQtOWRhZC0xZTM2Mzg5Zjg4MjYiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiWXViaUtleSA1IEZJUFMgU2VyaWVzIn0sImRlc2NyaXB0aW9uIjoiWXViaUtleSA1IEZJUFMgU2VyaWVzIChSQyBQcmV2aWV3KSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzYsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfSx7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsiZWQyNTUxOV9lZGRzYV9zaGE1MTJfcmF3Iiwic2VjcDM4NHIxX2VjZHNhX3NoYTM4NF9yYXciLCJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6OCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6OCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURNekNDQWh1Z0F3SUJBZ0lVU09FalRmLy95cVJmUFc3UXE4cXRJeUNyQWc4d0RRWUpLb1pJaHZjTkFRRUxCUUF3THpFdE1Dc0dBMVVFQXd3a1dYVmlhV052SUVaSlJFOGdVbTl2ZENCRFFTQlRaWEpwWVd3Z05EVXdNakF6TlRVMk1DQVhEVEkwTURVd01UQXdNREF3TUZvWUR6SXdOakF3TkRNd01EQXdNREF3V2pBdk1TMHdLd1lEVlFRRERDUlpkV0pwWTI4Z1JrbEVUeUJTYjI5MElFTkJJRk5sY21saGJDQTBOVEF5TURNMU5UWXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFDZHZsMjd3Mmd1MWZQWGVFRmJJZHF4MEJhbHZWRFZXclFQSjdIcXZpdUV0WkhseFNMeFNGdGNYcFRvbHZMdm9mOGY0dE1lclFUa1ZHemNtWXptMUVCVDRJSnVNbW9FcWZrRUVoV3BzQURNRnJqWmtxbFpZOUVxeFF6TG9WRUVvbkU1b0d4U2RWQ3hDY0xJYWNrcHlSL0NDWHZqMUJ0L2hUZ0U5aFRsRjRwUnF4TWt4M3BsRjd5OGREWmxSSFdzN3ZibmhtQkNHZUkwWlBFUTZubDJtQ2cycjc0YWRGMnU2SzlyckxmaEJDM1FMRThFUHJncVVzSStoa3VxMnRLNE0yU01PcDh1VVZWa3FVZXUzaDBrcjNXVkkwVzAycGtnck9naUZLTEZOa1NyYlloZGpNQkRqNWl6bXFmYzl4SlJLb0RYNjEycWQ4WkdWSHBUNUFZRlgrMWhBZ01CQUFHalJUQkRNQjBHQTFVZERnUVdCQlRaeVU1RGlRL2EyVUVnRTdxQkswemhJc1JOUmpBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQU1BNEdBMVVkRHdFQi93UUVBd0lCQmpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQVh2bkI0U0x1VUpmWU1TVkdBaHNzTC9TbVdsaTNGU2NjZ3h5ZHZLbEFDY2lkSUlXS1FxYTNxL1FTVUVRekM5RGdFZk1ncjdpQzFCa1RaYklMYm9WNlVaNWtuTnN2akVaV3VNZW9nSjh0Z1pzMWhWdkt3Wml6d0orbUVjbXNqaElyQll1b0wxVDZ5ck9KdktGZzFqditDeTRad0E5QnBrL1YzVU9pcjFWeUs4ZEN0eUh1NnZmb3NvdEFkWXg4RkF1UjI0M2dSVE1WNkp4OEpkaWcySkRJQVFNbHpWZURwU1VIWC9LMkhYUkh4SHdmZ2piZ1VqakJ1LzcycjhPZmVoeWh6SFhJM0s4Q0ZGZGZsTys4bkVPSkszeThGMWl2Z1M1dU4vOFNtY1l3L1NUUVl3aHJ4UHV3ejNuUDhiYU11bTRCQjJublltcEI2MHNYM2JsNWs4UVVTdz09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWZDQVlBQUFDR1ZzK01BQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBSFlZQUFCMkdBVjJpRTRFQUFBYk5TVVJCVkZoSHBWZDdUTlYxRkQvM2Q1OXdlUVNJZ1M5QVFBWGNGTEFRWmk5ZnBlVnoxdFkvV1RacjVXeHBjN1c1a25MYTVqSTNaODVzclMybk0yc2p0V3daUzdJVUg0SDR4Q25FUXg0REFaRjc0Vjd1czg4NXY5L2xJbkJ2VkovQjRQdjludS81bnUvNW52TTU1NmZ6QS9RdjBIYi9JclgzVkZLUG80NWNubTRpblVJV1l3TEZSbVpRVXV3akZHL04xaVJIaDFFWjBOUlZSdWRxdDFCZCsyblNLeVMvT2h5czArbGszZS8za1E5cXZENFpVdGE0VlZTVXVZMGVpcHlpVGhBZm9jb09SVmdEdXV3M3FLUmlBZDNyYmNFdGpUallJb2Y2V2FIc0NtelZQV0NNeCtjZ2g4dExxV01LYU1Xc1VqTHFvMlJ0SklRMG9Pem1lcnBRdTRlc1pnc09Oa0d4SDdkMGtkdlRUMTdzNE9NVTdWSThaaGpnR2FNK0FxOWlFTnU4UGlmMXVkejA3TXd2S1dmOEdsVm9DRVkwNFBDNVdkVGFYWUZiUjh2TnZMNSszS2dmYjV4Tk15YTlSYW1KaXluYU1sR1RWdEZscjZiYTl1K3BxbkVYNHVNdVJSZ2pTWUVock43dXRGRmU2bHFhbDdOZmt3NWltQUdIeW5QcGJrOFZtWTB4c3RucHRsRkNWQ1l0elR1Qk44M1FwTUxqVHRldmRQelNVbko3ZThta2p4WjM5ZlhiS0RmbGRacWJ2VStUVWdHbkJWRjZmUTJpUEhnNFcxNlVXVXd2emJrMTZzTVpFK1BuMHB2ejdKU2V1QXllczhsY3BDbWFLdW8vcCtxV3IyVWN3SUFIV3J2UDBZRXpoWEF0TEFic3NIaHA3aUdhbXZ5aWpQOHJ5cXJYVVdYOVhvb3d4eUF1Zk5CcnA0M1BPQkZYWmxrZjhNRFJpcWNweW93QXdwdXoyeCtmV3Z6L0R0ZGU5c21zenlndGNSNkMxd2JkekJsNk9scTVXTllZNG9HYXRoSk1ya1RFeDBqQVJTSEFWcys1cllrUU5YYitRZ2ZQTHNRNmdYeUluc3JlUWZtcG03UlZGWWZMODZuMWZpVU9rWXZTaGtVUHh2YnVrem95NksxaWhNMWhvM1h6VzZFdlNmWEErZHBpV0dhV2QrZG9Yekx6bUd3S1lGTENBc1JBbFBCQWhNbENGWFU3dEJVVlByOEhnVmNKSFdxK0YwMHBscitETVRkclA0enZ4WTExa05NaHhUK1NlVEdnK2Q0VjVMUUppdHlVR0pOQjhWRlpzamdZQlpNL0lJL1hDVGtqMHF5RE9wRjJBVlExN0NJalVwL0RuVDFVa0w1RjVnZGorc1Mxd2cxZ0UzZ2lnbTYwZkNYelNuUFhieUFQYklYditJRHBFMTZUaGFISVM5c2t5aGxtTUU1RjNjZnFBS2hxMkMwRTVQSDFnWWFYYUxQRGtaRzBIREpPbktXSHA1MUkwejVTT3V4OGUxV0F1WnpkSFFyVGtwOFRtalhvSStsYTB3R1pzenVicWJPM2lmUTZBL1c3dlZTWXNWM21SMEpLd2tLYzRXSGlCa21SOEkzQ0NnSTg3b09MNHF6VDVQK1JVSkJlakVPZ0FQSzhoWVB6YXRNK2VJVHAySU85eVRRbWVyb21QUnh4MXF4QWNzaWxlL3ViU2VFYmNXUUdZRUNnaGNMWTJIeUtqb2dqSDI1aE1wanBVdjFPdWdsaTRlaDJlUncwTzMyYkpqa3l1Q2dOemcwdnpsWU1TaVNzMHVvbzRNRzdoTU9qQ0VhWDF5RkUwblN2akJ6dVRuRXBLODZaOElvcUZBSXVidzhrZzlBckVhUkVXU1pJK2pINFhicDZnOUU5RW5KVDNvYVJ6RE4rTVVKQlFESG41NmE4b1VtRUJ1c094QnMvTjUrdEpFYlBrQUZEajhVR3ZPcy9JV3ZjU2dsR0JodlM3L0ZUWWZwV0dZZERZOGZQQXhXU0EzNXNUQzRwNCtMbTRBYXFJb1BlUXRmdWZLNkpoMFpoeGxic1VYT1NtWE5pZkQ1WlRBa3lEb2ZiYmNjbHhuQThXTkFxeENiUk55a2hYeFFwYUR3NjdmWFVZYnNpRzBLaHR2Mm9lSXZoOHJoUU1ZT2NFQXFYRy9lSSt6bmdPYzV5eHI4cTgySUFNMWMvRkxGT3BscXU1ZUZRWHJNWnpHY1ZDalliTFdHNUk0QlQxZXVScmxieHROT3RNaXREREVoTFhJSXluQUF2dU9FV0UzWDNOZEFmdDk0VmdhRzQyWElRdDBaWDZQZUNFL3FRRmU5cks2SHg3WVU1MEt2SDdmVzRmUytxN0tLQkp4c2dnQlg1cFNBR2gxaklyVmg1elE2dzNSZmFhaEJYbS9hQ2JDWlRqQ1VGVVR5V1pxVzlwNjJNakpQWFZxT3JQZ01PNE52NzRHa2Yrb3dmdE5WQkRRbmpGSnFIU3cxN3BYdmhXVzVLWnFlL1E0OU4vVVNUQ0FWV29RWEZJSEJIWFhlM0ZQclVEc3VHRG10Ri9oSEtUSHBla3hoaUFPUEkrU0pxNlM2SEY0STlZV3prQkpUbzQ2aVVNeldwOFBpci9SaWR1THhLWXNTa3NWOHZMbE9RdmhHWDJZbFIwT0JoQmpDK3UvZ0VjdlkwQXBLN1lrNDFOeGpQU1FuV0ZIVEY2NlVyamdldkI4Q3U1YStsMnZZU1JQdHVWRG83M2hoZE1TSG5VWDd0VGpzVlpHeEFsL1dwdGlPSUVRMWduTDI5bVg2L3RSMXRtbGtZajhXNFgrQ1NqV2NVREdZMU5wUy9DN2hTS3FpTUxNL2wyUW1TV1o3M0RkeitnaW84QkNFTllQUTQ2cW5rendYVWJxdkJreGpVUXNXZlpGZ2J1bzNyQWYrd043ak9POTAreW54NFBpM0wrMG5ZTDFTY2hEVWdBUDRnUFYvN0lkMXErMUhTaG11R2tJcVdSUGd5eE1GcVA4SGZqVG5qWHdZNWJRZmJKY3Q2T0l6S2dNSG90Ri9IZTFlZ3NheEhTcUc2d2ZkbVE1eDhOeVRGRnFCY3AyaVNvd0hSM3lrNSszNmhGN3ZYQUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIkZJRE9fMl8wIiwiRklET18yXzFfUFJFIiwiRklET18yXzEiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwibGFyZ2VCbG9iS2V5IiwiY3JlZEJsb2IiLCJtaW5QaW5MZW5ndGgiXSwiYWFndWlkIjoiZDJmYmQwOTNlZTYyNDg4ZDlkYWQxZTM2Mzg5Zjg4MjYiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJsYXJnZUJsb2JzIjp0cnVlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6ZmFsc2UsImFsd2F5c1V2Ijp0cnVlfSwibWF4TXNnU2l6ZSI6MTUzNiwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0Ijo4LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjEyOCwidHJhbnNwb3J0cyI6WyJ1c2IiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotOH0seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTM1fV0sIm1heFNlcmlhbGl6ZWRMYXJnZUJsb2JBcnJheSI6NDA5NiwibWluUElOTGVuZ3RoIjo4LCJmaXJtd2FyZVZlcnNpb24iOjMyOTQ3NSwibWF4Q3JlZEJsb2JMZW5ndGgiOjMyLCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6MSwiY2VydGlmaWNhdGlvbnMiOnsiRklQUy1DTVZQLTMiOjIsIkZJUFMtQ01WUC0zLVBIWSI6M30sInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjoxMDB9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiTk9UX0ZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMTAtMTUifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI0LTEwLTE1In0seyJhYWd1aWQiOiIyMzRjZDQwMy0zNWEyLTRjYzItODAxNS03N2VhMjgwYzc3ZjUiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjIzNGNkNDAzLTM1YTItNGNjMi04MDE1LTc3ZWEyODBjNzdmNSIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJGZWl0aWFuIGVQYXNzIEZJRE8yLU5GQyBTZXJpZXMgKENUQVAyLjEsIENUQVAyLjAsIFUyRikifSwiZGVzY3JpcHRpb24iOiJGZWl0aWFuIGVQYXNzIEZJRE8yLU5GQyBTZXJpZXMgKENUQVAyLjEsIENUQVAyLjAsIFUyRikiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9LHsibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlCMkRDQ0FYNmdBd0lCQWdJUUJUbWszWndpbEZYanNaeXdIRG5NZ0RBS0JnZ3Foa2pPUFFRREFqQkxNUXN3Q1FZRFZRUUdFd0pEVGpFZE1Cc0dBMVVFQ2d3VVJtVnBkR2xoYmlCVVpXTm9ibTlzYjJkcFpYTXhIVEFiQmdOVkJBTU1GRVpsYVhScFlXNGdSa2xFVHlCU2IyOTBJRU5CTUNBWERUSXlNRFl3T0RBd01EQXdNRm9ZRHpJd05USXdOakEzTWpNMU9UVTVXakJMTVFzd0NRWURWUVFHRXdKRFRqRWRNQnNHQTFVRUNnd1VSbVZwZEdsaGJpQlVaV05vYm05c2IyZHBaWE14SFRBYkJnTlZCQU1NRkVabGFYUnBZVzRnUmtsRVR5QlNiMjkwSUVOQk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRW5mQUtianZNWDFFeTFiNmsrV1FRZE5WTXQ5SmdHV3lKM1B2TTRCU0s1WHFUZm8rKzBvQWovNHRud3lJTDBIRkJSOVN0K2t0anFTWERmamlYQXVyczg2TkNNRUF3SFFZRFZSME9CQllFRk5HaG1FMkJmOE81YS9ZSFo3MVFFdjZRUmZGVU1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0RnWURWUjBQQVFIL0JBUURBZ0VHTUFvR0NDcUdTTTQ5QkFNQ0EwZ0FNRVVDSUJ5Uno0T0FsUlo5SHo5S1Y3ZzJRTnRDMEM4SnhIL3hMSlk4RlpFbXRKM3NBaUVBc3JlVDArZU5rTmNVakk5aDVPUENvSDZObXNPa2d2RUFCSlpyRjA3QURrWT0iLCJNSUlCMlRDQ0FYNmdBd0lCQWdJUUZRTktXKzd6YmcvN2QrbFR5cklXd0RBS0JnZ3Foa2pPUFFRREFqQkxNUXN3Q1FZRFZRUUdFd0pWVXpFZE1Cc0dBMVVFQ2d3VVJtVnBkR2xoYmlCVVpXTm9ibTlzYjJkcFpYTXhIVEFiQmdOVkJBTU1GRVpsYVhScFlXNGdSa2xFVHlCU2IyOTBJRU5CTUNBWERUSXlNRFl3T0RBd01EQXdNRm9ZRHpJd05USXdOakEzTWpNMU9UVTVXakJMTVFzd0NRWURWUVFHRXdKVlV6RWRNQnNHQTFVRUNnd1VSbVZwZEdsaGJpQlVaV05vYm05c2IyZHBaWE14SFRBYkJnTlZCQU1NRkVabGFYUnBZVzRnUmtsRVR5QlNiMjkwSUVOQk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRXNGWUVFaGlKdXFxbk1nUWpTaWl2QmpWN0RHQ1RmNFhCQkgvQjd1dlpzS3hYU2hGMEw4dURJU1dVdmNFeGl4UnM2Z0Izb2xkU3Jqb3g2TDhUOTROT3pxTkNNRUF3SFFZRFZSME9CQllFRkV1OWh5WVJyUnlKendSWXZuRFNDSXhyRmlPM01BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0RnWURWUjBQQVFIL0JBUURBZ0VHTUFvR0NDcUdTTTQ5QkFNQ0Ewa0FNRVlDSVFDQjBORlFTTjB6NGxXei95YzM2ZXdyVEN6dHRLL3FGdmxhUE9LaCtUMW82d0loQVAwb0tLQStjaWNzRHkzWTNuK1ZsUDhlQjNQQnpNa2h2Vy85SVNYQ3crVkIiLCJNSUlCMkRDQ0FYK2dBd0lCQWdJUkFNczhZWFZCb0JOdVhVanFmQ29YN3k0d0NnWUlLb1pJemowRUF3SXdTekVMTUFrR0ExVUVCaE1DVlZNeEhUQWJCZ05WQkFvTUZFWmxhWFJwWVc0Z1ZHVmphRzV2Ykc5bmFXVnpNUjB3R3dZRFZRUUREQlJHWldsMGFXRnVJRVpKUkU4Z1JVRWdVbTl2ZERBZ0Z3MHlNekF4TURFd01EQXdNREJhR0E4eU1EVXlNVEl6TVRJek5UazFPVm93U3pFTE1Ba0dBMVVFQmhNQ1ZWTXhIVEFiQmdOVkJBb01GRVpsYVhScFlXNGdWR1ZqYUc1dmJHOW5hV1Z6TVIwd0d3WURWUVFEREJSR1pXbDBhV0Z1SUVaSlJFOGdSVUVnVW05dmREQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJEMkxISEFRcVliZFIxV1psdWVydE0zMHJXaG9yWWF2V21NVmE0bmRYOVBad3VSRXBMUTRtMW5FbHFRS01uUkU4LzRDK1Jxd2lhdittcEk0a3hkNWU1dWpRakJBTUIwR0ExVWREZ1FXQkJTM1paanlHbGhaOTlOMXZMb1RQWFZVYTRaRVlEQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01BNEdBMVVkRHdFQi93UUVBd0lCQmpBS0JnZ3Foa2pPUFFRREFnTkhBREJFQWlBb0QrUjZrb2xJV2FOSno0aHowM0QzZ2VzM0diTUJqQVdwa09VZzlheUZnd0lnYkV3N0FZU3lrNjhPdnhnWGV6Z25kVFJURXVTV1QrZmRSbkxhQk5zYVR3MD0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBRkFBQUFBVUNBTUFBQUF0QmtybEFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFCSFpwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFBRHcvZUhCaFkydGxkQ0JpWldkcGJqMGk3N3UvSWlCcFpEMGlWelZOTUUxd1EyVm9hVWg2Y21WVGVrNVVZM3ByWXpsa0lqOCtJRHg0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJa0ZrYjJKbElGaE5VQ0JEYjNKbElEVXVOaTFqTURFMElEYzVMakUxTmpjNU55d2dNakF4TkM4d09DOHlNQzB3T1RvMU16b3dNaUFnSUNBZ0lDQWdJajRnUEhKa1pqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWo0Z1BISmtaanBFWlhOamNtbHdkR2x2YmlCeVpHWTZZV0p2ZFhROUlpSWdlRzFzYm5NNmVHMXdQU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2SWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhodGJHNXpPbkJvYjNSdmMyaHZjRDBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5d2FHOTBiM05vYjNBdk1TNHdMeUlnZUcxc2JuTTZlRzF3VFUwOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXRiUzhpSUhodGJHNXpPbk4wVW1WbVBTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZjMVI1Y0dVdlVtVnpiM1Z5WTJWU1pXWWpJaUI0YlhBNlEzSmxZWFJ2Y2xSdmIydzlJa0ZrYjJKbElGQm9iM1J2YzJodmNDQkRReUF5TURFMElDaE5ZV05wYm5SdmMyZ3BJaUI0YlhBNlEzSmxZWFJsUkdGMFpUMGlNakF4TmkweE1pMHpNRlF4TkRvek16b3dPQ3N3T0Rvd01DSWdlRzF3T2sxdlpHbG1lVVJoZEdVOUlqSXdNVFl0TVRJdE16QlVNRGM2TXpFNk5Ua3JNRGc2TURBaUlIaHRjRHBOWlhSaFpHRjBZVVJoZEdVOUlqSXdNVFl0TVRJdE16QlVNRGM2TXpFNk5Ua3JNRGc2TURBaUlHUmpPbVp2Y20xaGREMGlhVzFoWjJVdmNHNW5JaUJ3YUc5MGIzTm9iM0E2U0dsemRHOXllVDBpTWpBeE5pMHhNaTB6TUZReE5Ub3pNRG95Tnlzd09Eb3dNQ1lqZURrNzVwYUg1THUySU9hY3F1YWdoK21pbUMweElPVzNzdWFKaytXOGdDWWplRUU3SWlCNGJYQk5UVHBKYm5OMFlXNWpaVWxFUFNKNGJYQXVhV2xrT2pKRk56RkNSa1pEUXpZM1JqRXhSVFk1TnpoRVFUbERRa0kyTkRZelJqa3dJaUI0YlhCTlRUcEViMk4xYldWdWRFbEVQU0o0YlhBdVpHbGtPakpGTnpGQ1JrWkVRelkzUmpFeFJUWTVOemhFUVRsRFFrSTJORFl6Umprd0lqNGdQSGh0Y0UxTk9rUmxjbWwyWldSR2NtOXRJSE4wVW1WbU9tbHVjM1JoYm1ObFNVUTlJbmh0Y0M1cGFXUTZNa1UzTVVKR1JrRkROamRHTVRGRk5qazNPRVJCT1VOQ1FqWTBOak5HT1RBaUlITjBVbVZtT21SdlkzVnRaVzUwU1VROUluaHRjQzVrYVdRNk1rVTNNVUpHUmtKRE5qZEdNVEZGTmprM09FUkJPVU5DUWpZME5qTkdPVEFpTHo0Z1BDOXlaR1k2UkdWelkzSnBjSFJwYjI0K0lEd3ZjbVJtT2xKRVJqNGdQQzk0T25odGNHMWxkR0UrSUR3L2VIQmhZMnRsZENCbGJtUTlJbklpUHo0NzdKWEZBQUFBWUZCTVZFWC8vLzhFVnFJWFphdkcyT29xY0xHMnpPT2t3dDBCU0p0cWxjWFY0dSthdXRsV2hiems3UFVBTVk5SGNyS2p0TmJxOGZlQWw4YUJvc3p6OXZwZGpzR0dxdEYzbjh1VHNOU1pwYzZKc05UNSt2MHhZS251OFBmZjUvTDQ4ZmcvZnJpY3pKZ1lBQUFEQUVsRVFWUjQya1JVQ1piRElBakZYWk9ZMVRhdE5jMzliemtzU1ljM3I0TUU0Zk1CQWFENnpsOHkvOVRPZ2V0OGQ1amZONzhid00vZERDUnBSNTIxelhmb2pISjA1SUl5aEJBVVNWQU9OZEd6Qll0MmY3S0ZyZmtKYUFrSGg5RlpoY0RYSFJrVEtvOU1MaWhHYWF2SW1uVjNxeUVYMEVwcmd6LzREd1VEN2tDSFJuZDhRRk40M0dvNFVWbUREZ3phNHcyN29pemRBMitjSyt1dVVwampvMit4d2MvNDJXNTB4NUxHWWVEQnNSMEhWSXg1eDhpRjYwQ2JsYlRFRWtGcjI3Yk5EQlVWU3ExT0tWUGJFNjJiM0VIOEZxQmc1T09PRXVjMnQ4WkppcU1PdUdwK2NLamc3d1ZHY2VvenFONHB4Z1ZQUWtqRllnYlZKS0RVaERDallyYXdQNXE0RVRnQzlmSU1SSHRpdHBRY0N2Sk9FTGNiTXNRZ25jaVJrbGpweVFqdkc0NGpxQlVFVEZpQmkxUEVJeWVrT3pzVytUeTVjTEhvczVSK2RNUzFMdFNTeGYzZ1FIY3pSMkNJNGdNTnBXNElSQTFRTWE2dEo0K0M2dUh1R0U4bU5ESXlGcWcvT1AvTU1VdWVTNklxOFM5MGRBZUJKU0V5L3FLa0srQk53ejhjWVk0amI1SjZ1NGlXQ0kyQjFaNTZMVzVrRWM0aGtkTXBzdlVDNTU4NVNYMFF1YmNnTnF5ZmdERkVjVHQrNDAvMFM1Tngwd2FDdzNPS2tjT2JBNUluMEFZcDAxcGpqdzJuNjI2VURqdEh3YTI4aUh1VEtxdHJ2K3JlVzQxTlo2aUdscjd1dUxKQ2ZrRnRjdGNHMDRzZ20xZU5TK1phRG5wYVRFckdveVg1SksyaU16OHhzMG5Pd1dHY1BETjQ5cWFDZDRiekpvekRabS9hQksrRW96THcrWGhOQmlZd0hmMHNpT3UxWFBrRy96S3d2cVlLY2ZTd0RFY0gvb1VlMDdlcy9XUThySXlnMkRPWGo4dGprWmR1REIvYjhoekRsbE1NT0NTNUJFbmQ1MzRmOHRpM1VaYzRrTXMzeEx5YWZNU3NKaGRHOFhQcWpOazV0QWdPMjVmZUtDaG5WZERqL0owRk1rT3NVL3hNQnYwd0ZoWWVFR2ZWSDEzZnVEVTB5REZMYTRmYzdSbldIQmZ1VEZWMnRFbU53YWRjN2FjM1VZMmpmQmw3SFQzNmZlMzRpUU81bU5DRkZCVzA3S2pQZ3FoT0xVMDF2WjhQdWVaMkpDbEZaTjhqa1VzNjl1a2E5ZVBwNitFZkw0QUY1K055d1NiaXJIdGNCOE1sL2drd0FFamtLNjRLakhQZUFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xIiwiRklET18yXzFfUFJFIl0sImV4dGVuc2lvbnMiOlsiY3JlZEJsb2IiLCJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwibGFyZ2VCbG9iS2V5IiwibWluUGluTGVuZ3RoIl0sImFhZ3VpZCI6IjIzNGNkNDAzMzVhMjRjYzI4MDE1NzdlYTI4MGM3N2Y1Iiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibm9NY0dhUGVybWlzc2lvbnNXaXRoQ2xpZW50UGluIjpmYWxzZSwibGFyZ2VCbG9icyI6dHJ1ZSwiYXV0aG5yQ2ZnIjp0cnVlLCJ1dkFjZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6dHJ1ZSwiYWx3YXlzVXYiOmZhbHNlfSwibWF4TXNnU2l6ZSI6MTQwMCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0Ijo2LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjk2LCJ0cmFuc3BvcnRzIjpbIm5mYyIsInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIyLTA3LTE4IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiRmVpdGlhbiBlUGFzcyBGSURPMi1ORkMgU2VyaWVzIChDVEFQMi4xLCBDVEFQMi4wLCBVMkYpIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyMjA3MTgwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMi0wNy0xOCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI0LTA2LTE4In0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiYmY4ZjM5YTU4MjZlYjkxMGRlNGU0MzY2MzVhNTMwZTNlY2NlNDEwZiJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyJiZjhmMzlhNTgyNmViOTEwZGU0ZTQzNjYzNWE1MzBlM2VjY2U0MTBmIl0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJIaWRlZXogS2V5IDQgVTJGIFNESyJ9LCJkZXNjcmlwdGlvbiI6IkhpZGVleiBLZXkgNCBVMkYgU0RLIiwiYWx0ZXJuYXRpdmVEZXNjcmlwdGlvbnMiOnsidWstVUEiOiJVMkYgS2V5IFNESyAtINCy0ZbQtCBIaWRlZXoifSwiYXV0aGVudGljYXRvclZlcnNpb24iOjIsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiLCJibHVldG9vdGgiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNNakNDQWRtZ0F3SUJBZ0lCQWpBS0JnZ3Foa2pPUFFRREFqQ0JoekVYTUJVR0ExVUVBd3dPU0dsa1pXVjZJRkp2YjNRZ1EwRXhIekFkQmdrcWhraUc5dzBCQ1FFV0VHeGxaMkZzUUdocFpHVmxlaTVqYjIweEdqQVlCZ05WQkFvTUVVaHBaR1ZsZWlCSGNtOTFjQ0JKYm1NdU1TSXdJQVlEVlFRTERCbEJkWFJvWlc1MGFXTmhkRzl5SUVGMGRHVnpkR0YwYVc5dU1Rc3dDUVlEVlFRR0V3SlZVekFlRncweU1UQTRNVFl4TnpJME1EVmFGdzAwT1RBeE1ERXhOekkwTURWYU1JR01NUnd3R2dZRFZRUUREQk5JYVdSbFpYb2dSa2xFVHlCU2IyOTBJRU5CTVI4d0hRWUpLb1pJaHZjTkFRa0JGaEJzWldkaGJFQm9hV1JsWlhvdVkyOXRNUm93R0FZRFZRUUtEQkZJYVdSbFpYb2dSM0p2ZFhBZ1NXNWpMakVpTUNBR0ExVUVDd3daUVhWMGFHVnVkR2xqWVhSdmNpQkJkSFJsYzNSaGRHbHZiakVMTUFrR0ExVUVCaE1DVlZNd1dUQVRCZ2NxaGtqT1BRSUJCZ2dxaGtqT1BRTUJCd05DQUFTMEFjVC9oUkZVYmxGY0lwNmJoNFAyWlNxMWFqaVVhZ2hlYzl1ZFNGR0lvVVo0MFkzSUVQbHRrMlR4YndNL1JwV21DRnJac0FkZnl4MjFydllkcEw4Um95OHdMVEFNQmdOVkhSTUVCVEFEQVFIL01CMEdBMVVkRGdRV0JCVGxaOER2M3FBS2VLYzFDMk9pTnZIekdxZzFKVEFLQmdncWhrak9QUVFEQWdOSEFEQkVBaUFIcHRzeCs2R3F2Nm5iYStiVDlmVzduOHhzZkg4UmhJSzhWWUZQS0VzQlpBSWdRaE9TRHhrRGtjeTluYlBUNHgwRW1ERDlVc0w1MDF0a1NzY2ZXYTBhTGJ3PSIsIk1JSUNaRENDQWd1Z0F3SUJBZ0lVSXlsYlNFQUUxNXpTRXZ3RjByOEd3VWQvNW9Fd0NnWUlLb1pJemowRUF3SXdnWWN4RnpBVkJnTlZCQU1NRGtocFpHVmxlaUJTYjI5MElFTkJNUjh3SFFZSktvWklodmNOQVFrQkZoQnNaV2RoYkVCb2FXUmxaWG91WTI5dE1Sb3dHQVlEVlFRS0RCRklhV1JsWlhvZ1IzSnZkWEFnU1c1akxqRWlNQ0FHQTFVRUN3d1pRWFYwYUdWdWRHbGpZWFJ2Y2lCQmRIUmxjM1JoZEdsdmJqRUxNQWtHQTFVRUJoTUNWVk13SGhjTk1qRXdPREUyTVRjeU16RTRXaGNOTkRrd01UQXhNVGN5TXpFNFdqQ0JoekVYTUJVR0ExVUVBd3dPU0dsa1pXVjZJRkp2YjNRZ1EwRXhIekFkQmdrcWhraUc5dzBCQ1FFV0VHeGxaMkZzUUdocFpHVmxlaTVqYjIweEdqQVlCZ05WQkFvTUVVaHBaR1ZsZWlCSGNtOTFjQ0JKYm1NdU1TSXdJQVlEVlFRTERCbEJkWFJvWlc1MGFXTmhkRzl5SUVGMGRHVnpkR0YwYVc5dU1Rc3dDUVlEVlFRR0V3SlZVekJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCQXFsbUFNQXo0aDVJd2ZWWndTYjRqQWk1b3Q4NUZFMGJ1dUNLczRtZnVkMjFxc281cnB1S0g0M3NLcWJyTkZRU3R4NVJTQzlibUJxZFMybHljbDM1bGFqVXpCUk1CMEdBMVVkRGdRV0JCUldJaVJWV2F5WkJuSDVCbFRuUURpR3lRNk9MVEFmQmdOVkhTTUVHREFXZ0JSV0lpUlZXYXlaQm5INUJsVG5RRGlHeVE2T0xUQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01Bb0dDQ3FHU000OUJBTUNBMGNBTUVRQ0lFWlhoNzZYRmhMeEpJVDhGc0lvUUhUd2ZIQ0U4c1VzS3lQcmNMdi8zdG9NQWlCK3BqWTliSTZuS1Q2cUZ1cWdSbitiWEJBZE1lZy8ydlg4d0c0YUJ0b01BQT09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUlBQUFBQ0FDQVlBQUFHME9WRmRBQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQXlScFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR3L2VIQmhZMnRsZENCaVpXZHBiajBpNzd1L0lpQnBaRDBpVnpWTk1FMXdRMlZvYVVoNmNtVlRlazVVWTNwcll6bGtJajgrSUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWtGa2IySmxJRmhOVUNCRGIzSmxJRFV1TXkxak1ERXhJRFkyTGpFME5UWTJNU3dnTWpBeE1pOHdNaTh3TmkweE5EbzFOam95TnlBZ0lDQWdJQ0FnSWo0Z1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNGdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlnZUcxc2JuTTZlRzF3UFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdklpQjRiV3h1Y3pwNGJYQk5UVDBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5NFlYQXZNUzR3TDIxdEx5SWdlRzFzYm5NNmMzUlNaV1k5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5elZIbHdaUzlTWlhOdmRYSmpaVkpsWmlNaUlIaHRjRHBEY21WaGRHOXlWRzl2YkQwaVFXUnZZbVVnVUdodmRHOXphRzl3SUVOVE5pQW9UV0ZqYVc1MGIzTm9LU0lnZUcxd1RVMDZTVzV6ZEdGdVkyVkpSRDBpZUcxd0xtbHBaRG94TWpGRE9VSTJPVFZCTURFeE1VVTFRa1JCUkVRd1FrSkZNVVpGUmpoR1JDSWdlRzF3VFUwNlJHOWpkVzFsYm5SSlJEMGllRzF3TG1ScFpEb3hNakZET1VJMlFUVkJNREV4TVVVMVFrUkJSRVF3UWtKRk1VWkZSamhHUkNJK0lEeDRiWEJOVFRwRVpYSnBkbVZrUm5KdmJTQnpkRkpsWmpwcGJuTjBZVzVqWlVsRVBTSjRiWEF1YVdsa09qRXlNVU01UWpZM05VRXdNVEV4UlRWQ1JFRkVSREJDUWtVeFJrVkdPRVpFSWlCemRGSmxaanBrYjJOMWJXVnVkRWxFUFNKNGJYQXVaR2xrT2pFeU1VTTVRalk0TlVFd01URXhSVFZDUkVGRVJEQkNRa1V4UmtWR09FWkVJaTgrSUR3dmNtUm1Pa1JsYzJOeWFYQjBhVzl1UGlBOEwzSmtaanBTUkVZK0lEd3ZlRHA0YlhCdFpYUmhQaUE4UDNod1lXTnJaWFFnWlc1a1BTSnlJajgrdnI1WElnQUFFLzlKUkVGVWVOcGlERGw2Z1FFUDRBTGlCQ0NlaGtzQkV3N3gvMUNzRGRXOEQwa01CYkJnMFFnQ0FrRDhFVW5jQ1VvL1JsTERpRzRBaWdRT0lJdWs5aThRTTZPN0FKOW1kSFgva2NQZ1B3bWFVUXhoSXRGbWRIQUZaQUEzRUo4aEVCdi9jY2pyZ0F5SUIySmpNbDBBRG9OcERCUUFGaUlDaXFBTFlHQWRpWmIvUjNZQkk1NkF3dXRDOUx4d2dBVGJQZEhEQU9ZS0pTQytoMGR6QUJDN0FQRmViSUhJaUpZdkNBWXNRQUF4RWlnUHdvSDRDeEJ2SlNVYS94TndFU08rQWdVNVN6T2lhY0xxUFNZMHpWWUVFZytHSVN4a1pHZEdwQXdHVHdmcFpKUUZjQmY4SjdNOEFPbjV4MFFndGNHd0U3RkpHUmZZUzJxOUFBTDlCTEwxVFBSQ0ZSMFVZVWtQeUNBTmlFOHdVVkNnZ29BbHNoZnFTQzFNa0wwQWNrVWpPV21CQ1Z0dFE0VHRqTGhpQVNTeEJ5ME5JR010OURBRENDQkM1UUU2K0F6RVBHaGkzNkR0Q0dTd0hJaWppSzFYR0loTXpmK2hsak9pWVc0MGZpY1FSNkxwU3lhM2dZTWM1b3hFSnJrS0xPcm40S3FpbWZCWURET0FpWUV5Z081d2tQbXF1QXBVRUJDbE1ITVI0NUJiUUx3ZHVVQitEY1RuZ2RpSWdmWUF1VlpnaFlXQUNCQjNrOUcwUU1hVHlYRE1MNUFEUXFHY1plUVVSVWdnaDV6bURSTTBIdzhZWUVKcmRGU1JFSS9tQkZJN1NZWDVRaWpkU29MalQ1RllQc0NBQ2JZcU9ZRkEvRklUbkliUzV0aHFvMVFhT3dLNWtEdUZyU1NjUTJRTGwxUWdCeld2SHoyNldBZ1VGdEpBL0FTTC9CMW90ajBHN2ROS1FodjhvS2hrSmFJNEpycVQ5QlJOSXlqRS9nQ3hDcDRtekZtMGhJWVhBQVFRcWUwQmxBWVYxS0x2UUx3ZmlPL1NvcHVJREh5QWVETUo1Y3QvWWhVU0FpZWdobTNHRWEvWTR2Y2ZVaE9Nb2hENGp5Vk55QkRiOXdHQ3E0UTYzTGhDb0FHTDVZeDRMQ2VVNHYrVDRvQWxRRnhQWmhtUDdwQUxoQnlCN2dBeklJNG1Zd1FKRnpERTBlckM2WUNUVkxTY0FVZjNGMjhubTlxVzR4cWdtSW92RGREQ2NuU3pzOUFkOEo4T2xxTTdvaDViZFV3dndBZk42bUFIYUE5QVUvQXpja2w0Z0lMVVRXbmFZV0tDOWdrb3RaemNCa3dmT2YyKzUxU0lnakpZRFl2c0FDNGlOVXZna2ZNaTBvd21tSjNJRHBoSHBPWWxlT1MyRVdrR082eDJSWFpBT0pHYVk2bVlHK1l6UWR0d2xCU3JETkRHS1RtNVlCb0x0RjMzbndxT0lCYnN3MWNiZnFGREllU0l6d0hjZEN3TjVaQWRnQnljTFRTMEZEbXFINk9Id0Njb1hVMm55Z2dqQ3ZpeE5SaG81UHZQdU5JQVJvT0J4aTBqdkMyaUR6VHFsaFBWTDJDRVJra1poUll6QS9GR2ZPVUdDNEdnQXJtOEU0dmNHaURleEFBWmNBUjF4MDJoUmJrNWpvS0hrZHl1R2E3QmloQW9wcmkwWkNJaDRZQndEeEZxclVucFRRRUVFQ1hqQThRQ0RTQXVoUGE0U0NscFFaUGpvTkhYUmJSMEhCT1Z6ZHZPZ0RtRWZKMEJNc1dGN3ZrU3BKamlCZUtYYVBLZ1Nub2hBL2FaSDZQQkVnQUZhQTd6d0tIdUk5U1R5T01wdldpTkFBazArVmw0N0QyTFpPY3ZlZ2VBSHBMbC9UalV2RVB6akFBWkxaMTBORE5XNEZESGl1U2VCN1FNZ01WUVN5NFM0V0JoR21UWFNDVHpGWENva1dmQXYzaUdyQUNvZ3hvWWc2MUZUV1NTcFRaNGlHU3ZINTdhbjJCQWtEcEVDUU84ZEdxOEV3TTJNK0NmWFBnUFRiMXhwS1NBWWh5R3dVSjlzSGdlbC91d2RXVC9FNXNDZGpOQVZpcWhCOVIvaHFFRGNLV0kvNFJhNCt2UlBHL0JRUDVDczhHYUluQ09FQWN5UU5hcGdjQk1xTWFURE1NRFlGczZnUkVBNjVBVVp6QU1Ud0R5MjJ3b3V4czVBSkM3NEVwMGNJZ250TEdFM0lwY1FhZEFTRVZxaXNNREFIa0lnSmJEQVREUGdzWXdCZEhrd3BIazk5QXBNRHhBQVdDSnBRcWtOZ2dqc1NCMXBsSEJxNC9lSVdOaUlHRnVuUUt3a3R3WW9ySTcwTWNUTkVFQjhCMkx3c0JCVW1qZG9ySjVMdGhhZ3Z1d0tGeEZvNFlKcVdNTDk2am9CbE1zWW51WWNGZ0NhaUZ5MGlBUURwQ2cxb3ZLOWgvRkl0YU5iZDBXREx5bFFaSjJST3ZqdTBGN2Mwb001QzFDSTZYd3c3YVk2UXI2eWpsa0FFb0J3VFRPNDd1aHZibjdOTGJuQW83SVFHa0pZdXNZclJrR3JiOVhXTVF1dzdJamNnQ0F0bHhaa1RBbU1CUUFxSE1uaWtWY0QxZHY4RGdEOXRtRm9SZ0lVNUU2ZHpockpHd0RJcWR3RkVSREtSRG1ZbW5TYjhMbUwwSnpVOWRBclNWOEF3cURFT3dDWWxkaTJ5R0VCa1cxY0F3b01BMVN6ejlHODN3ZG9RZ2pkVzRPdWNEVUhXU2VCMFdNREpySG13bHBZaUhSRWxnZ2dQcnVsN0RJZjRQbXRRME1rSzBCMUJ3OEJRM1ArVUlMTmkxcU5ibXBNVGs2ZzRIMGZZWFVCS0IxVDJSUGoxRWpMMmVnTldOcmFPaFpVSXRSR00wK2l1WUdXV2pneUZZRzdKdFJXS0J0ZjJkb1EwUUJxY1BGREMzQWJrSGJJcUNTL0RZOWtnOUFBUEt1TFNTTElBb2ZOYVJBSkJJU0k3c1FXa1NRSlVaSm1kM3dKYXhlSW9nc0VJd3VoRDBJMG9ORzBVTmxSUTlaVVlFUUJSS0lrUkhkeUNMeUlTcVFJZ3NpcU1nS29ZY1NwRkRyOUovaDM2WXp1N1A3ejZ5N2Z4LzhvTE96TzNPK25jdVpNMmZPaHVFZklLT1lmZ1cwUUVIaFB4RUJXSm1oTUNzekxvUXlhbW1NS1BOeER3NmVsMzcvamhpMkNWZ1pBMlRnRzIySHBJSHp2SXZ3cWxOc09VVGFHM3JHZCtvK2tTWmdNVlVXei9oczlNaUw1MERRWFU2Y2htM3d5SS81YnRMek82Tkd3SHlxV0k5R1hyR1Rpd3JMTjBkNkM2V3YwSGpHT2lydlhoUUlHRkVZRzJRMGcvdGV2a0EzNVNza2JkTU5sVVJFM1ZnUXNFZHpZYlNOOGh6dytmd1BORURuYUt4Q3o2YXlVZzB5QytDVWxlK1JaemVZOFhnZHBKZUVVK1pIamJVQXV1UzlzdGtDUmoyRXYwaHYzTFM3Yno4OTEydWpwQTlvejg4R0FXN043QWRWc01heVRuR1R5bm5ra3Vjb3JVK01FdUFtL0ZaSUhzUUlDK2dPTzgzbE91b1FyYWJHQU8yNFBXTmcvTWdndlNPTHViNkRGS2xqcWJTQVVSZFZOU3Ftc1hHMGVPTFE0bVc0Y1NQZ2lpTDlLU1RjNUtLRUtsREh0K2tOUWtBSjhQN3c2UDFmQ3RIRWZsQkh0Qm55UzhBekpnMUQ1cXlIYUFQcnVGWmhOZHF1UzhCRkpxMExOT01GUlFEWHFVdklPS05MZ093VC9BQVN4c2c0QVFkRmJudTl3NHNBMlZuaTNlL2Zjb2duYmpDSzJRWXZBdVRsNkhTSU43QTdOMHBwYlNvQ2prUkl5VEVKUEhaMld0SmNXUUlhMGxCNGdaMjBqaEJZSXhPUTY3aVlCZWtKWEVrS1UvczVtUUJ4T2hGUGZZeEErcUpZSHRzRUFjSTV1Z3orSDh6a1pvRUZJUlhlQVg4N1NtT012WlVodGdDeFd2eERRRzZJckxlUndQSjhqUEU4N29KOUw1UmxqcjgzaWFWa1ZVakNvNk5pdWFiOXdkWXM1SFFNTHhRdElJeW1WNjBwdkpjZElsWElEbURabVV5L0w3WlE4TlVBOTZ5MlVJOTUwdjl6TWlFWm5sMmd3bkNoUWUyRnJTRzB6R2xJd0VTUDlZQUpCU1FJaWtJZ1lFSW1vL2lzTWx4SUhrUURYRnk4REJHeDBZbDh3d1VIOWNBWU5sd1B6cWJ4NTFzSUE1YVpmeHJ3UHRPSHNibDRVZjFJd0F2bXdnekRoZmNFdU1mMDZUWE9zTk9IQkhBZnNxZzFYSGk1ei93SFF4b1hCcENBMjh5Rk9ndUY2ZTVFbzg3UVpManNRdFVGSklBN0h6elpBZ0hEOEcvUVR4bm9QbWZEOU43SXBOM3hlaXRJd2hjTGxSR2FKNTRUd3JDT1E0cFdhQkxjZUhMS3VSem1Cc0lXeTVWQzk3ZHJJUWl2UXFlVEFLNkpiSUgwUUwzYlJVRkFsK0o2ZmhvUWNNSnRuWkVwTlVrWjEyTXVmSTRpZlJkSEFMZXBXQnB6QXJoUW8wTmNGMEM4VkR6a2VJd0pXT1psRlBIYUdrUHNqYW53WnhYcHZXNEVkQ3R1YW80aEFadzJPMWMxQ3pneGhVbmJud1p2L3hQWHpUa0MraFhLeWFHWXYvMENOejFBQnVlYnZ5OG13blBPWFp1OUZDRU8yVXhhZXd3SWtKMjdNUHpmNVNBRS9JVGtoNUVFTmtaY2VNNjVxMFJIRlZZQjR3ZkluNlY2SFZIaHh6UENHZ2xyaTlHRm5aNWpSWmJzQmFuaXExL2hkUWxBMUVqTDQ4OFJFMzRodFFCZnd2c2hBSUV1Tk9zYy8rTVdkeldNN1VueUltcWhUeHpqbHErTlZiK1Zkd1lod0MxdXROK2hxVXZzOCtNZzFPUTE4QVRBSkxKUElPay9IT1hoZUNTOFd5NG9aaTVYQkQwNGlTUThoSVRmdmp6aTRrOTJYTWJ6Z1doOWZrN2EySHRITjhLZHFUeFNWR1pCd2t5R3ovRGpvb2R4UWdMdGI2UnljblFwSkQ3UE1haVJGL05WZ1BtTjE1UGdZZkV4M1FXQWViUFlHaGFGM1BlN3FOejZWQjlrYWdCN1RCWENwdmpPb3VEaU02ZkdmSmROaitBRDFIZXhrcFdnamtLdEMvR0JBZkhwNGNPbUdiVjVldnkrTkJ2TXBrWFdFcHErcGtKeUJ4aTcwbHNpREkvRTNnTHp1OE1zZmduUTNybUdXbEZGY1h4NTZGSmtKSVNhbU1aTkw1bWlmYkNJb3VncTlwS0V5cEl3QTgydWxOME1OQXNxK3hKaG9XQ1o1YU9YVnBiYUE3T1hrZDZNb3FMOEVKUm1ENU1rUDVRYTJBUExNc3pmUFd0M2h0T1ptVDJQTTJmbTNQMkhnOWR6WnZiTTNtdk43TDNXWHV1L0dzRWZVRytRemtNQ1padCtCcXVQbzY5K1R0QkZVNHRVWWlOS09yMytvUzkxTkhtditoQ2c4ZjVPUHpzc1gvcUZ3VEVGdkdkWU40aDFucUJQVkZvUi9jelVKbHFvTGNKNUtFYVhyZ2szUzBKS2s2eFJ5dm45dGFveHZ0K3orRDJvZ3owamdmQVBTWGx2cUw4dXNwZm9kM0hBMmhVSDNKdmFocmxQM2lEenhhNWlwMU1BQlF1SFR6MkR5THc0VjVLSG1XRXFUcFFLOFJCVEFIdGorOVNKY0p0K1ozNm5sTVdYQ2EvSml2QXVOWHBNZjk2VG5JWGpOMW9CbUpOZjlnelFsaFFHNkM5OXVrLzFDQlRpNlBVUjJsaXJGcWs1bjcvVG9CbHVyMUp3ZUZ6NzlEUUZZRFg4aFZSeUpKS1MxdktxblNYbE5DZUVkYXcrM1Qra2VNKzhEYTcxS0FSUDk2UHkvL2pTcU1ETGVFREhZcXNFMHlFVVdnRndVcjJ1SFlYaFkyU0N0dGkwbSs0Unhza3FqQ3pUdlBhcjByVjRGR0pad2piUFZvdmppTDV0ZWpXREFseXZIVG9rdFVOUGJJQ0w5MTYxV0hxcFNiY3laMnNYRk9JV2oxS3kvLzUrZ3ZZbVNhV1EvVlZGVkFERDZ2UmN6UE54VG96U3dlVHRjWDlXanBHVXNFUG5lNk1RU1FKTFRHcmhvaUlvZ0NsRUZ5ZkdlcVBhNFF3WVViVGJtc2pmY3A5SEdlSldMcHF0WTdzNmp3cXdUUHdMOFFVQjErZGdxZFNSK0VXYUh5dWtkcTFOVzB6UnNWNllCd1dZcWpkemM0enpHQUI4NVh1azU4SlVteVZmNE5zWTV6TDIxelJDQVNBMkphQjZWWVJ6V09FTzBnNC9LdzVlNFBBNlhjZm1xWWpuRWdtM1hXSzY5ZU1vQUY0ekNPUk9zenkrUzIzMFZpa3o2RG9FbzBNVklVcW00QWkxbHFiWFd3RkllVnhzZWV3RzdjaEYwdHhVTFBYQ01vbGVZNHUzeDZaNktBQlBMNXN3NTFvY2EraWlyM1F5VEFVYnhZNUMxNEFIanZLZC9kSlNnSGFkbzhLcXpiMGpkblRaRHZGZ0tJUnR3b0VvWDRxTC9LeWtDbkM1aEpjRS9GeVY0MUlubzB4Z0F1SnNQSVNFWW82TnF3Qmp4RDkvRlB3cTVZMGRxZ244NmVTU09WNVZSZWdNT1E1TzBORlJGWUNrL2FCeURjenZiR04rNCtUUWNDeFZSWGdnNEJoMkd0dHNGWUFkcnRkOEdqSUZ5emE0Y2M4ZDdsYlpyUFdSOHh1MkNvQXBVUjFxOVpaWVZxcHphRGdtcTZ5MlZuMC9UR3BRc1ZVckFBc0xMMGtHUVJVRGRESG9VQ3lRclhHS2xPTW5EQ0FNdlRoSUFhcm5FU0poZm5KaldWaFFnNmg2VjNXKzl6OWUvM0dIdmlhOFlGdVdPUHJmbTJoUVdPUGdPaDJxOWpJYktqaE9kcW5DSDI2aXZoSk1XODJYU3VRUllYaXZWQ3RBTFhPQ3NHa0NJajhwOENCQWp2dTRDandLaUZ0a2wvT2pBdmVkb0pwYTlOQ2RSZ0hNRkVDNmtsOVNheEhyU0pEa1lhSnZ1MklJM3d6ZWgxSUo1eTRpdC83NVB0K1BWVlAvUHdVSTh1SmRVTEJPODdTVHZwVm0vSDI3VGcwTEN6WVc0MEw2MUswQUpDb0crWXo1N2JpQ2RCalRaMFlkMjU4cjRhN3h2S0NmenZkQlZrSi9GSUJFeXVFQkJ3NE1hU2d2V0pmUmZiWkw5S0NOUm9DZDI2QzZkOGg4bUNsWjJqZWtzZkU1N3l5dit5eFpqS2JGWEZka2lUQWFmT1Erb0tTV1FOZ0NaMExPT3pzcTQrdVZhcGpNZVVPWTg2NDdNTFdrd2cvYkZqNVQ4czBmK25NRHJ2bDNqc2NEcXRDd1VpamQrWWtJSGhLRUF4YU5YcDNqRHJQUmtXVjBNYnVnbTNJOEhqYlRJUkZlQjFFQS9QMDJ4RGFUY3R4aHNvWm1abmk5amh5UFJZdmx3MHFVMTI0VWdJaWV6eXhPYU12NVdvQzN3R1VaWElkU0dCL2tlQnltaUE4N2JCWFlJK2l1SDhLcm9NdXk4WnR5dnZBeGNYUHYxcUh0OWRyMnh6a2ZnMDdMNHdnMlBWenlETncraTVNbVNQcFZ0dXFCY1Nxc2gxTm95K1QxVFN4QXZ5ZFora0tZOGplTFovWFBidDlheTR2Y0k4WEJiS25rNGVFWGg1RmpkOGk4U083ZU9aSk9abS9Xc0MwODlJSmFBZUtsaWNNanVNT3lBUXB4cmhPSFBBRTYzd1VXeDVHa2d4UHJlNm15LzJIdWVNenlZcnhhajNkam5odTBIdjA4YUhuc0FpUDhhZ1VBc0ZyWlZNMGlUT3hwTis2NXdXcXhTL0poaXB2bi9hTDZwTi9Fdm9JZ3BFbXozTmczSEl2RmY5Ky9sdi9pbnlBRk1QYTBiWldVUjZSMmtSR0hiSENEbExPMWJUQ3ZsbmxjQ2poNFRRVGJlNWlUUmVZWUUyRWFYdUgzVUFmTkc5ZXBjRzBBRStkQUo1UE1RTER1RnN0aklabnlaWEFKV3pqZ1dyVXBvOWhibGFDUGswM2RRWkN1YlgxdStBWUQ5d1ZzVm81NC81Nnd0QXpZSlR2UnlhaXU1cDZ0OEIrUzJnWFVJeXNBZ1BiTnhzZE1HRG1ldHBPY3JGTEhHV3JHMlpRR21uYjBNOGVtMFNnVU1lU1ZFV1FRUnFzTzF4OFpLWU9jekZJREtmZzJYbHBvOXVBYmZzYTI0YWdjUVZDWkVTRWN4dklGWVROeEJpT2M3QktEc0h5YnNpNHI5T0dMUkpJZGx5WnVxbXBsR0gzcmRqVlhIT0lCSG9hdzJBT2NkME1sSmdOcEVxSklBa2tJS0wwajVEak1sY2xPbHBGQjdFVllqWU9adXVqZUZmY2lhVkRGVWxXVGJkT2dqU1MySCs5ME1yVUdNUWpMQTM1ZnBHTytQT21GMGlTTHZsVnZhcW5QNzlSOFcrSmtHNG9ucFV5UEh5VDQyOU82V0QzbzRqdjFKdWY0S01sNkoyTmZRTDF6bzg5MGtLcmdEYktvRzBqdTRVWUp6cVRab3d2R2Jmcmg3NitsekVUV0RNQXZNbHl0SWo0ajlkK0JJUXZvUzlTa3JodXlMaHhKalp4Vmtxd2NDcG0vTzZWY3IyK25Mb0IycS9telIrcFBPWSt6QzRwNzZGZmdTeVphZW9qK1BVUk40TGlnNEJXVSt5OWxKWkJHVmc1RkdlREQ3ZW1SUmJ6bHlHaCtzUkVYYjJUWk9KeEp2ZlZ0d0hieTJ6MUk2TkR3dFdyZit6UksrSTFXQUMvWVJCb3ZsVWhjNXN2blJTTlhDdzZjWlN0MUxXVDZkNFVFUnlmM09BV294bGM2RjVZOGczYWhsTjJkZTNNczdMMDZyWjNudVcrY1pkTjF2Wkk3TkVQMWNMYWhpWW1ERUdHMHJyRDcxMUhBV0Nrd2tjQkJCSUhVajBVZXZGNUhqalREVzlZaEx2NEZNRmJCN28vL0pJVUFBQUFBU1VWT1JLNUNZSUkifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMS0xMi0xMCIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiSGlkZWV6IEtleSA0IiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVMkYxMDAwMjAyMTA0MDkwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMyIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4zIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIxLTEyLTEwIn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMS0wOS0xMyJ9LHsiYWFndWlkIjoiNjk5OTE4MGQtNjMwYy00NDJkLWI4ZjctNDI0YjkwYTQzZmFlIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI2OTk5MTgwZC02MzBjLTQ0MmQtYjhmNy00MjRiOTBhNDNmYWUiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiSHlwZXIgRklETyBQcm8gKENUQVAyLjEsIENUQVAyLjAsIFUyRikifSwiZGVzY3JpcHRpb24iOiJIeXBlciBGSURPIFBybyAoQ1RBUDIuMSwgQ1RBUDIuMCwgVTJGKSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX0seyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDUkRDQ0FhV2dBd0lCQWdJUWN0RU9UMldYZUNrRGR6L3NZN1VwVmpBS0JnZ3Foa2pPUFFRREJEQTlNUXN3Q1FZRFZRUUdFd0pEUVRFU01CQUdBMVVFQ2d3SlNGbFFSVkpUUlVOVk1Sb3dHQVlEVlFRRERCRkllWEJsY25ObFkzVWdVbTl2ZENCRFFUQWdGdzB5TlRBeE1ERXdNREF3TURCYUdBOHlNVEkwTVRJek1USXpOVGsxT1Zvd1BURUxNQWtHQTFVRUJoTUNRMEV4RWpBUUJnTlZCQW9NQ1VoWlVFVlNVMFZEVlRFYU1CZ0dBMVVFQXd3UlNIbHdaWEp6WldOMUlGSnZiM1FnUTBFd2dac3dFQVlIS29aSXpqMENBUVlGSzRFRUFDTURnWVlBQkFGRnJQYjhLRExBdzRIc1lMVTVjd2V2b1BTMEo2UWFvOEhieDJvMTErcll2c3hBd3JWM1AvTzJNdGt1QTRiRGttWVNBMFlMNUErSjJZbzR2L2QxL1FQMlVRRjFkcVBGa21VMjdWWmhDNFBYQ2RjWCtGTWR1dWIvNC9MRXdWYU9Nd1BUVUFnOThTUndjQmpTenVNV0JseGUyRzBXUUZuZE4ydG4yWTJzWnViWDd5UUlINk5DTUVBd0hRWURWUjBPQkJZRUZPSmhhZk9WWnE2OXR6Qk5hNTJUVDZCY3NOMWFNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdEZ1lEVlIwUEFRSC9CQVFEQWdFR01Bb0dDQ3FHU000OUJBTUVBNEdNQURDQmlBSkNBY3E0V3ZWcU9sTXBiVTRlNzZTeWVjWlVyS3lPU0dvVHF0SEpsckdXNTVBbEh6WDBZVmhtVk50WWpDcSsvSVRiZGpLZmIvNFJLKzFLbnFubFNLdlphcjd2QWtJQlFqemNhVmlvQTBvMFZveW95YU5rQmgwOFNKMnYvcGhoWnUxOTZVaFJmcUs2UHA5LzFZNHVEU2FUZ2hPUXYwSERrMWt1Sk9Sc3dDZWxtTWZJUVRjMUVRRT0iLCJNSUlDUURDQ0FhR2dBd0lCQWdJUUFjYjVaY0F5T0psMXgvODlnWWttZXpBS0JnZ3Foa2pPUFFRREF6QTlNUXN3Q1FZRFZRUUdFd0pEUVRFU01CQUdBMVVFQ2d3SlNGbFFSVkpUUlVOVk1Sb3dHQVlEVlFRRERCRkllWEJsY25ObFkzVWdVbTl2ZENCRFFUQWdGdzB5TlRBeE1ERXdNREF3TURCYUdBOHlNVEF3TVRJek1USXpOVGsxT1Zvd096RUxNQWtHQTFVRUJoTUNRMEV4RWpBUUJnTlZCQW9NQ1VoWlVFVlNVMFZEVlRFWU1CWUdBMVVFQXd3UFNIbHdaWEp6WldOMUlFTkJJREF5TUhZd0VBWUhLb1pJemowQ0FRWUZLNEVFQUNJRFlnQUV6clZtZTJXMXAxYXE0by9FTGJGMnMrSmFUNnRRMlpvTUcwUGNINzl3ZEp3T3JRZUEyRVBDZXd1K2VtU3NnZmJVWVVJckwwV2hHQ1A3Unpmc1ZoZkJRbGQ3TFplVWhUUGlPMTJ6dVA4azlRcXZMY2NuYmp5bTF6elIzSW52WEVNWW8yWXdaREFkQmdOVkhRNEVGZ1FVbGlWMFpxaTNhamt4RERlOHB6czdPRExEV2pJd0h3WURWUjBqQkJnd0ZvQVU0bUZwODVWbXJyMjNNRTFyblpOUG9GeXczVm93RWdZRFZSMFRBUUgvQkFnd0JnRUIvd0lCQURBT0JnTlZIUThCQWY4RUJBTUNBUVl3Q2dZSUtvWkl6ajBFQXdNRGdZd0FNSUdJQWtJQTBBUUpIdS9IeEo0d1ZEQjd2dTF6c3VHZE9FWWlDN3RKNTJzenltMUd4WFJuTytEWXR5YTl5Z3dyRVorOExvMENZbTh6d0FWK0JNMm5oZ1hvdjFPSWJtWUNRZ0VwNzZDRnc0OHZhZG16Y1ZucDRtMWZiTEFwSFR1dU8vekRNUFRLV2F6MGd1ZHJhRjBlYWVkRnZMeDdDcFgrSC9nVkpBSldqVUZVTlVNZ3FrZFVsME1va0E9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUREY0FBQUhvQ0FZQUFBR1EyZFZaQUFBQUNYQklXWE1BQUM0akFBQXVJd0Y0cFQ5MkFBQWdBRWxFUVZSNG5PemQzM1hVdk5iQVlma3M3a01xQUNwd1VnR2hBdURhRnlFVkFCV1FWRUNvSU1tRnI0RUtJQldBS3dBcUNLbkFaNGwzRHpnVHo0ei9TUEtXOUh2VzRqdmZDOG1NeHZiWWtyYTBkOUcycmZHbHFKdWp0aXEvZW5zREFJQVgvL1A0WUhEKzFMR3Y2ZU4xQVFCM2VYazQrSG93K0h4OUFNQS96aDhPdmg4TTNiOHI2dWJBOVhzQkFJeDU0UElZaEhvd2RId3I2cVpwcTVLSEJBQU1VTlRORzJQTSs4NVBQdXVMRFRzTFNHKzRpZmUrNllqWHRMLzdkTWpQdGxWWlRIMGZBRWhaVVRmbnhwalhZKzZqVGg0T1JkMzhOc2JzOWZ6VDVJZERVVGNQalRFM1kzNkhCd1FBM05YcHVGKzFWZmxxMCtIcC9OeHRXNVVQWjA4cnlieC8zNE5ocmxFUEJtbEx5d01DQVA0am5leEJIZWZWejZ3ZUVpNWlEdDljbjRjNXNRc2VFQUR3MTUxTzlxYXArdlY3cHIyUHpscXR0RUFBT3RockFFQUtoblNXdS9mTTFjOVBmamhvZlRENGVDMEFTSTE5Q0d4N2NFeDZPR2gvTVBoOFRRREl3ZWlIUTJ3M2NSNFFBSERmcm5SRW93TFNzZmJ1ZlFXcGg3Ujk2dnZ1ZXUwNzY1RUhIc081eDJESyszZzR2eWR0VlY0Ty9lRlFuWU8rWSt2anZWMWR4elBhZHQxVzVaSEgxeDlseXZHWTA3WnQ3emZtT3p0VVVUY3ZqREVmWGIvdW10NHRCNE1mRGtYZG5JNTl4MTE3SElxNkdmd2xuOHZ1eGJCcmQwTzlYMGoyNGhoeXdjOTVTQ3A1TUZnWFJkMWNyTDlYTG9hdVdlOHpabFBwRmsvN2dwZmF1Ym9XVjYvVHM3cG41d056b2plK0RtM252dkhGZm9UMWZ4OHpyZlJ1N0JzUCtMSGpNYTlwakRtY2NUSHVGWFV6NnNzRTNXUlluR3RLK09NeE56ejUyYmtQaHVnVWRmT1RxZVhkMWhLYjJ0SEtzSWZEMklNN2R1blVRSGJYM3ZlaHI3L0J4Y1RmVTIvb01abnlSUWsxYlRYUjA5WEZuS09oSThhTWo4MGpCVTFaMU5wSTc2aTdTbW4xLzY5OWQvOU1ZKzE4T0NoNU1KajFLU0hmMHlNWTdkZUNoMnpybkd6cXRsM1RYTzk1VzkvMXZFdDMybXpydzBIUmc2SDNkWGxBM09WajlEQmkxUEI0Nkd2NndFMFFYVndQLzNRZkVKdW0xb3U2K2I0ZVQ5a1lrSjV3Y0ovdCtnR1hENGJ1djArZEtrazBvUGxyZ2FIMGs4RHZod0Z5blc1YjVSUENQNTM3NU44RkhUMStkVHQ1dlErSENVRytac0RLSk9jUGh1N1BUWHhBZkdxck1xa3ZrRDI1cmxZdWpSZzEvQnpUeGpXYk9oVXZocVFZVGtEZjUzODRkcXBzdy9rYzh4clh4cGhSS3hJVjE0Y2ZuYlRUR0hObWpFbDZjY1BZenZDbWtjT29WUTI3aXUzNGZEQjBmMzdDK3p3ZitmT3hzRDM1SHlIYU9uZjB0ZVVHODNXMWpFK0d3dDRXRXl3NWd0enkrWDB2Q1Y0WnZTVFdsYVZIN2lUbzNPNWV6TUYxbkNIRWcySE83NlU0TnptMEp4OUxJSFBvcHJjcGUzRmk0UE1tdHRTRFlXazhHSGE3ODNEdzhHQVl2Y25OUVU5MHlnUGlmTTU3YWhUaTRnLzVCUnY0WHFQMjRpQTlxWFlRbGpBNUs2dW5UVzc3dTM3QVU4cUtIT2EyZS9VZFQxWjZJR0k3T3dpTUdvYjUrM0FZZVVPNDlkQVdPL2Y1ZTlzUGpObmhQUFlDa0ZLblNmRThIY0VYTEFGMEJMREpwSkdEanh4RkErYytmZTV3OWxIcU5BcHJXK2VIM0N4OGRBN2czcUNOaWJMK2ZjNktNeVRvZjJaazc4RkhqekgwNXJtY2VEcGZXdGVSTDdsTFc1MlJHeE1mclZJNHMwOEF4bEVONlZsOFBSZzZQZ3lOS2RqOUhVUFNFWStoWk5oK3UydGtOS0tkaDI2YU5NN0E5bTFkVXIySnJ4VE9FYnNwNnNiNzU1djczYUR6NTlmWWFhVVRsNjBKOEdDdzd6RW01VzJTV1N0ZDl2Ulh5UTlER2hvUDJoV3ppdFdTSFl6T2FJTFlSR1pHalJ6R0ZGa1o4RnJlSHd5NHcvYjR2ODA1SkVzVlRFcVp3OC8vdWU4dnAyWVA2TE9wbGdIUzlEK1BSU28yVXZ4Z09GdmdQWU5Zb3NlUG9PZDNZeG9ZMXpkekdVa2tPVXJEUDNaYUtlakRJZlNEWWN4RjNGWmwwaHRvNXR3a3RQY1c2YzF1NStINDdPVSs2a3ZkLzhiY0VFTUVrRHhjY05rdVVVVWV4aVNvNUNIcWg4Y2toSXZGUVNmdmtKNWdaekRiOVZDVm5zMTlVMjRPakJyMG1ubytYVDBvK0k2bGEvUlMxb2wxRUc1M0JiT0x1amx3MmN1WDF4dGpaK3FPaWFiR01jZ1R0SU9yaDBLa0R4Y24yVlE3aFdBTzVpNVltUHJlME9tQm1iQ2lZZXdEWXVCU1N0Y1g1cWpYODdVTWNtb2NvNmdiYncrSE1lZGIyUmY0dzhpbHljbnhkVDVrd2NMcVFmR2I2VmozYkZMQW1PS2FremZCMlZWT1ErYlpsb2d6VEhnOVg2T0cyTDMwM2Y3Y2U0L2R6KytxU0pPRE5qMDAveXFxN1N5Y2szQlZSZGZlalMyb3RLUy9NWWNKSi9mTHJoK0k1TUdRN09hcGJZYWNtN1lxUHkzYXlNeU1xQUVlNUx6STk0SVNzSm1hRlpDZWUyTjNuUytKL0V2SVJMQUtoak5Md0M3aDdhNzNKSWcrekoySFE4aEthaG9lREV3blFac1Jvd2R1Y0QzYXFsUmR1R3RzYk5kdmE3YTdOM0lJOFlCUThtREljam9KVVZEVGFTbnFadVBPNjVndG5LOXFaN1lDRFF0R05nV2tiVXJHY3N3TERRMUtLWG93TUoyRVB4emNLTTVjcmtLeG5aWlZWdFJ0ZkFhQ0phM096cmlpdUo3NEhyTnYwSE0rZi9mOVhSekhFYXNBeTg3UFBWc3Q3SkVTcDJxV3NQYytITnFxUEpoeTRuWmRyRHdZa0NqbnExQ0czbWkyZmVkQzlZNWRwN21mYTBxeVFkZjE4MGY0TXFRanNJU05BZW1wSDM3VFFiYTFFc2ErMW80SHc2VGMvVHdZRUpIZVRLdUFDWEF2MjdwYXlkVURRdFpMajgwUnNxdW96T2hOY3p3WUVKTnRtVmE3Rmc1Y3FzeGt2TlIzUGFWN3pNNmxySE1lRUVYZHJMYjM3OXhJcytaMlc0cnBpVitHUlNxWUFYT01XTDIweUpMVDFETVpUeEhpQVJIaVBRYnRjNWpSa0l1SmNRYm5OV3lwWjRERVBRcjk4U0pKeUhpNzRIdEg5OXBkZ3pmQmhXcVFwNEw0VENjaFd0cjJQc1NVK3R0Mk5GT2FZZ3I1V2NibVZwcGRhbkliSGd6SnVVNjFMbmRvVTFiZ3JPVnRHck0wdGMrVENIZEwvK1V3Kyt5ek1iVWJ4dWJPMnZVYUlSVnRPNjY5RWtlNGNOM0dNUWNnMG95aUFCQ04wYm1WcEM3RGxjc1B5SWdCQUhTWmxIaFBpb3c0ZVVEd1lBQUFmU1puWlpVSHhNN1NuenRldzhkTmZHZFdSZ0RBZHJOU2Rzc1UwOVQ5QTE2U2kyblB5Z2dBTVpqMWNEQ3lmMkRDQ09ES1IwWlVwcE1Bd0kzWkQ0ZVZrVFdsWnhkR24vUCtBSUR0bkQwY3pQRFNrd1NnQVVBNXB3OEhzK05HellNQkFPTGcvT0ZnTnR5d2VUQUFRRHk4UEJ6TTJvMmJCd01BeEdWMCtvd2wyZHFydGtvZDF4Z0ErT1Z0NU9BNlE2VGtkQ29YTG13Q0FGbnc4bkR3ZEFQL20reVBCd1FBK09YODRlRGp4dDMzbWp3Z0FNQ2ZzZlVjdGdyMVlPaitHNEZwQUJoT1NzcXVLZ2RldDFWNTFQZkx6Z0xTZlRmeHVUZHU2allBd0h4VDdxVk9IZzZiM25qT1RYdE8xU3NBd04xNzZhNTc1UHJQelk0NWhKNUtDdGtPQUlqWjBBZEQ5MmRXdnpNcjVxRGx3ZEQ5WFVZUUFQRFByanJXNnh1V1Z6OHplZVRnNmNFd080MDNJd2dBR0g0djNMQWE5Tk9raDRPTG0zalBhOXFJK1o2ajErSUJBUURHdk93N0JuYUVzR09XNWZub2gwTlJOd2V1YnVKcnZyaDhNUjRRQUhMWFZ1V25DWWZnMmt5Y1Z2cm0rbmo3dXBIemdBQ0ErK3k5Y2N2OThhc1pHNURXRm9BZSt2cStndFM3Mmo3MWZZY2NrMTFCSnBmdG1mb2VQczd0bU0rd3R0bkhtMDF0OHZENW43VlYrWFh1aXhSMTg5QVljelB4MS9lSGxQZ04wVEdiY2ozYjVKMDJSOXZFdC96UVZ1V2JEYTg3NmpzN2xLL1h0ZGZTYXJhbTUvZi9mTWJCSTRjWUh3eWgzd2YrclhvOGN1UGZ4ZnVEWVJOUDE5eVhIVDIrblcyUzM1MzZZTEJ1NXJUQkpZbFQ3bFRVeldtbnpWTWZETlpyTFo5OXFFM3g0VzRubytmei9Ba2JESG80VERrWVF6ZGNUSGpOMjdHL04vWDlZakcwNXpEbnBqTGs1d0l2STM2VTgwTmZibEtEYXJIYkcwU3V4MG8rOXpzRlRWbkt4dmp3cnFxZE94OE95aDRNOW4vdGtQaGs3TzlQZlYvb2x2azV2WkFwb28yazUraGpBWWw2dVgvZk4xWGtYTi9Yc0RZVi9MZGV6dGFIUTFFM28rYzNmVDRZT3Y5OTZYTStQMGErUmc4eDVMZksvQ2F3YTRxSUIwUG1SaDRMdStEb2x4a3dyZlIwekdFZDhHQVl2VDlpMTlCbjdPdEpPM3FEU3Bqc2pFTzNuRTNmcTR5bmtnWk50K1dnbXhKalY0YnJUcXFOeDJiYmFpWFhpZSttN0k4WW1nOWt3cGZndlRIbWZPVHZxRGYwV0F4ZHdUVmkxSEM2OUxHeDExZGJsZCtYYnNkQ3Nod2RiSEV4K1RjVE5QUUJzWDVQNkgwNGVNcUlPbloveE5zeDd6OWx1aVRSUEV4bklRTndEbzdoc3cxL1AzWlRwTDIrWWp1Zm16NjdIZGsrVjlJV3RWd3M2eFYyMDlmZ0RvN0Q5dzFxN0hmMTNzUEJ4NE5oWXB4aFZNK2VCOFIvYkMrK3FKdWRENGRkbnozVWxNU1dMNXJYL1JLZDkxL3MvRy81N04xbGhuUFc1UTlwd3lLZmY2bTlSeUhha0lvN01ZZXhBV2lQRDRaSko0MlQvWjlReHlHMTk5R29yY3FESWMwcTZ1WnhkZ2RuQnU0VnU2MEhwTWNFb0QvditvR1FENGFPd2ROUkp2TlZEWnMrT3lzOTFPbE5ucmJtTXR1ak14SVBobUgrUGh3bVRDZTljTjBZRnlkdDdIU1U4WlJsZG1tK3Z3Qjh3Y0labUR4dDFNcENZSmRKS2J0OTNCZ2NyNTRaMjc1c1YzdXNIMU5HRFFETTZ1R3dkQkRIUit4aWJEdFRYQnZ0cTNmUHFDRWRzZVVLY3FDSi9oTUVNcnVHOUZ5K2d0cmllc1RQWnJzMmVuVjhCeDduSy84dFF0ZkFCSE96TmlKMkVob20vYUFZR3VDSE1RK0t1aGtjeUhMZFkvVDhZTEN2ZjdUa3hhN2hpelp4aytDMjEwdHFoRFgzMkFRYVJlM2M4K0Z5STJMbm1GejVPdDgrampzcnR0eXlJNGZqaGQ3N2NOY1BwQmdvWHNqTzNyN0h2UEd6c2FKc0dnZm42eml5MFFTakFvZEdGZnR4cU5tVjZxQ29teGVPQXNWQmR3eHJaSHQvUmQwczFRbllpaHUvZDdjdXZrY2hSaE1POEhCd2FKR1l3OEI1djQrTzNpN3JCOFBLM0Y2azlpQTBRZkora3VMZXBXTld0T1VoK01QQmQ1d0J5TTJ1NzVUOCs1Q05kSVB4SFUxZjBJZEQ2QWNERi9CZHFhWWxZZFN3bTkxSUo4ZHBaNnh2S0lYZnJ5Z1Q0bWsxNnVIZ096aTI1TVhHRFNaT3VaKzNzWi9meHZvNjFiOG1sZHhWTE5lVTdWNDhHTHZVMFM0WGE2dHlTSEgzdjVaNE1DanAxVXhkZSs0dFRqTDJmQ3UrK2Y1YUZTV1pJOWFIaTZOVU0zL2pFWFBxaTA5cGk2Zk50TFpXOXRhZnNXVlY3Yys1ZnU4VVRWbXQ5R05NM3Z4SUhneGVjdGxQWFhzK0pPVjJJR00yRVhxWCt5akJCTnIxbnZoMHJCMWRzQjlpZ0Q4UGh3bWpoMEc5aFZoR0RMRVc3NWhxNlBtMm13aER0TVgzZTJpMWRrTSttbERneUl0dTViQUVEL3NqQlcxd2FWUVc2akVtQjZSZFhEZ2VIZ3lqMTEvVEc0VUdRenNvSVcvWWZEZVdOYkFENTYzYzhkK0h3NVFMWWM2RktoV3VSaG5RUm1ySElscER2NE9zd2xOcFozd3h0dk8yUG5MNE1QWUZwbnhnV3d4K1F1bkRmZGZ0b0djRWhWSmJRYVNPajV1MHk5eFdXdHg1T0xSVitXWkt1eVljN0c4amY3N1p0c0tBQndOU01YUkhNNk9IZVpZNmZrUGZWOFA1dmJkYWFXb1d6NkZCNm9rMzhvM3BObmd3WUE0WFgwSWYyWXFIdE12V2ZQZTFhRUNTWG5vcmd1WHJ1SSs1ZjNWKzdxM1B1ZnN0NzN2ZFBYL2FIdmk5UzFsOVBTQmMzOGduSHN5VENiOERhTFN4TkdnT0l3dTd3c3ZSU3NQM1JkMjhIL01MRys1THYwYXVobnE2Y05iZHJiYXRWdG82eDcrSnk2TDFIaDRNOWpVcHhBNzFJZ3BPenlveTVNa2lIVUFYbXpJMTJmaHdtTE9MMEVWZFlrOFBCcWFURUkwWXJsZU5nZGdjT29BaHJvMnQreHptTkdCazZVbG43eHZ5TlFFTmxobzlhUDVPTGRXMmxPNHpPemZCdVhoQWpMSHIvUWhBSXlkYXA1Y2lHZFVrK1lBSTlia0c3WkFPMVJoR0RFQ3ZLYlVZZk0yNzM4YjBuWksyQnM4Ukp1Lzd4UFZyaGp6Mmd4UHZ1UzVVMy9mNkhsNTJVbEFkME1UV1l0aVZiZFNzclJhVWVmZkx6cjk5M2JhNmFSZWxENFJCV1JaY0xoY2RjeHdrZS9YY1BGVm5TOFYxaXJZZDEyWlBENGlUb1VHa0VlOS82NkZFSWdCa1lYVGlQVTlUUDg1WEYvQmdBSURwSm1WbGRmbUFJTTRBQVBwTVR0bnRxQklWRHdZQVVHanl3OEhNdkJIellBQUF2V1k5SE16RUd6SVBCZ0RRYmZiRHdZeGYzc1dEQVFDVWMvSndNQU52ME94bEFJQTRPSHM0bUIwM2YwOFBocE01Q1FJQkFQMmNQaHpNdjRmQTFkcGZIM280L29NM3pnRUF4aG05UTNvTTJjM2NiS3ZrTnZFMUQ5dXFITFIxSGdBdzRWN3I4K0hnaXp3Z25qbXFBdVZGVVRmMjRWVWFBdVlBQUFCSXdPQ2tyQnJFVUJhM3FCdWIwdWxtN2UvK3RKc0JCQUFBQUdJVnhjQWhoZ0dER2RET3pyL3Zzd0FYQUFBQU1WRTljRWhsd05EalJzcDZYYlZWK1NwRUd3RUFBSUE1Vk81eEdOZ1JYM3lQUTFFM05tcXc1K0sxV01ZRUFBQ0FPWXE2ZVdPTWVUL2pKYmF1aWxFMWNCZzVjNy9Zd0tHb0d4c2x1UER4Mmd3Z0FBQUFNTlNXL3ZPVHRpcC83bnFaTFlPTmU5bnZWQXdjaXJxeGVWV1BSLzdhSWdPSFVNdW5HRUFBQUFCZ2svVStxYXUrWTAraW41ZHRWWDR5R2dZT016cmlRUWNPUysyM1lBQUJBQUNBcm02LzFGZGZzYWdiTzFoNEx2LzVKL3F3Mk9ib2hEYytlM2wvQmhBQUFBQ1FXbUYvYk9vZkZuVmpKOWVmRGoxWWZhL1RWdVdMenFxZ1A3WEpuSmVPM3NWMmhDT3B4L0JKVXp0ak9XNEFBQUR3cXB6NDRzL2t6OXYxZjlqVXgreG0vN1EvRXl6aU1IRWZRM0I5QmR5VXRZOElCQUFBUU9iRzlnVTdTL3p0LzU1UG1aQU9NbkJnV1pKN0RDQUFBQUF3MUl4Kzdwa3g1cDN4UFhCZ3dPQWZBd2hndUtKdWpvd3hSL0lMOW44ZnpnajVybHpibVp0Vnhnbm8xSFB1SHh0akhqazQ5NmRMMXhTYW82Z2JtMnJ4aFJ5VHdldWh4V2U1OXFQOS9Ma3E2dVowNGprM2N0M2JjLzZWYzUrT29mMUlMMW1WWEJaRzIySjJWcVZBN1F3cWxnR0VpOEZhNk0vcXM4MCtCcTlMWEFzZVBzZEpXNVdYUGUvejNVR0hQN1N6dGlwUFhiMW5hbnVlQmorMDR2emN2ZGV4YjBYZDJBSEJ4K0NmZHJ0ZmJWVStudktMaVYzelhqSkRhbDF1UGVUN0xZUDdMeUhleTRXeG00OWR0cmZ6WGRoNEhmVzF6NzVYMy9kb1Z4dTZ2K00wNGhEcWdwMTdVY2dNeXpkM0xkcG9QL1FYV0U3dXZZSWQwRTIrekQ4ZHpJQjJyNFhmYlZVK0RQWEJQVHpVdDFXdmpHM1FZTDByNnVaZDU3KzNWdWRFVWk2S3V2bGJOTlJqNmtUYklmK2gvTUE5c3ZjS291VHVSSkp3aG5QdWh4MW9qZDNuVUt3WGZCdHhmbjQ1eTZva0Y2N1hUckw5VUE0R0RXMkFRY09WdFBWM3A4MVhudCt6cTVRc1RNRTZqWmhQWnVIdVpUcVlZVThHSTk2NWZuQ3R2aitKWDFZMzhqMzlQdUJua1pCVmxyeWlibDY1K0ZTZHJIdmFCdzF3cEhNTmtXMHhROTIrOEpUbmZGdVY1K3Y5YWJtZTdpMjVYYXNYOFhoMnhDSEVSZXRpbExwMHhXZEpaL1VxY0JqUmRrelkveEFSKzJXV0RHU3VyaEU3dTNmWlRhZm1tbzlCZzYrMktsVXlHNWV0UDVHSXFlZGVleFpBdUJmcE1rMzRjV0x2SVp1aWVHMVZIdTE2MXpGTGxGWS9PM25nRUdLNVR3b0RocDZmKzcwS0s0VnFHeHVvNDdLNlJoeGVIOGQyUnNMbCt2b1ZCZzN1TUhqSTE1UnpMOUdLaXdFL2lrUVFYVUNYN0p1NlhGMFhydnA2Njh1WTFsOXowc0Fod01VN2UrMXZxTG9SYzA3UTZuZEREaURvbU1SajB5YW1pZDdKNE1IWkJrMUpMdUFNMXliZjBaeE5PUGNNR2pMQ29BR2JyUGNsSFY0cm4yM2w2UFcvSERWd0NIRGhYcmxZVWhIb0MzYllWcVdUdGNraEJ4QkVIK0xpZVBCd0lZT0gyWms4WkUybHM0eGtYSS8vTUhqSWwxMkdNaVN4QlozSXZIQytNVVRmYzJQRUpQcGJ1MVI2eVBzTUdqaUVXRWNaMGJJa2J4bUxRZzhnNkp6RXdmSGc0VXRSTjAvYXFweThhVnBTdkRuTC9yVGtkUmpUY2toZmNyMFBPQWpuKzNndUxyRjJmWEo2MUJqRmRyMTdUSEtTMVhuUDFXcC9yY3VQdjNQZzRQdWhtT0krQmxmdjQvdHp5ZXZmaGt6WmlXa2NEeDUrRkhVemFUbWd6RjdNemxzdGtyajJPdDlYSnptOTViVWV6eG5jd2I4bDlxdTV4dVJSRkp3T1Rqbm5tR3RyT2xiUE44TjlCek0rdjBObGRWcml5eWJ2dWUvNWJmWUlnOGJCOFRVNCttSGtlTi9RaDlRR3JKTEI0cGVqbHlORmEwUmNmamVsb2kvZzJpR0RCcmpRTzNDd2VWeDlkaVpkNUdpWDlubXQrcnpVZ0dHdERiK2xEYmMrMzRmQlF4eGNYZ3RqenJsMFpsd05HdXhTcVRlT1hrc1ZoNkgvcENyYTU4RGhzK0xkZ0o5QkJodytsMys1MnBNSjNCczR5SVg2M01lUjBkQVJIK2lsb3lWVTMxMTk4ZTNzck85angrQWhEakpUZithaXNVUE91YVI5ZE5LWmtYc0FTM0FBQllxNnVaY3hCZWxoTHdOY3VqTnc4QjFsaU9ETTNVckg1bDdsdkRIc1ppWTVsczQzdXNseC9PRDZkVmNZUE1SQmFqSThjZEhZYmVlOHFKc2pWMmtmQ1pNRDZueVVhckd6TTYwQnlNUGZ6ZEY5WmFaZGlhSEQ0S3FOZ2ZaYzJHVWViM3k5RnhtWDRpQXo5MDQyVGZlZGM3dEIxMlpoY25Fd3VKNkF3YTRIL09DaDR3S3NUM3Z1STRQVE0wSTFKOUZwWUtXYlZjbmI4aVROUnp1bUFjTTZ4NWwyb2tOMDVEK3Vyb1B1NEVGU0FQNXcxVDRYcnhNRHFXL2hRckNIdlVTVmduTlJUMFFUaC9lam5ha1Q3WHIxb201OGYvcjNSZDI4WC8vTDJML1BTMTN2eHBqZlMrd3prT2cwNE15ZmdZT3ZEcGptRzB6TUE0WXVYNE1Ib2c1eDhUQjRjSklDTU1OQmc1UDZGb0VmOWs2aVNtUFpqbThxMTRmTGUvRFFQVUJMVFJ4dGVFOW5CVkVEV09SNk55T3YrUVVIT01CV295cEhqNkg0Z1hEbTRxSHNPRFhsWE5jT2Mrc2pVaTRIRHk2T1FBNkRCcGVEQmNSRlE4UlRVZFQ1VzA4RTVLU3R5c3RsbXBNRUJnNVF5ZHZBUVNOSG1aSzhWOUdld01lZ1ljZzZXeWlqcFNNUnk2QkI0M0kzSW4xaHBITHVGUzladlNqcXBwdFlZVkxSU1FDNi9DK0hjSmlyTkxCeWM5WTJhUEJDaWxraHpuTzNaTWZ6TXgzZldWd1ZrRU44Sm1mTGl5VFYrWTFrY0dKdkdoQ3hyWldqNTlDUTNzM2xnRUhyelk2Yk1Qb3MxSWw0MWxZbGVlR24rMEMrOVd3OWMxRVVjZlhNaysrLzJxaXhQRk9wNTRJN1VrdVlrS29IOWtSNXlzNWcwN3RkdGxXNU0wT0VCMDVDb3RvNzVSN2JkK0xwZFJHUUxHRUlzaGVIS01NOEhMOTgrVHIzZlZIam9tNXNldFhYU2c3Mkk1SndiUFdWS3VMcVpibTNkQlZ4ZU92cDlZOERkNzZ2WmJabDFxREJkclkwRHhxS3V2bnR1VmdmRzlvU0lRUDNaejQvRFEvK3ljNGlxcVlQdDU0dGNlNXRWS01ibGRCdy9kbm4yWkx2SDlqZzVXak12a09yUDV1amJaR1h2bnpOcm9TWVZVZ2x2ZW91dnRzWFV5Y21kRnRqWFJZbUR5QXZHeWpwOUE2bjlWaHhEdjJMc1o1UndPakVYb0QzK0N1MzY3Mm9tMU5xT2NDbHYxbVZmR2Rta05lK2JhdnlvY3ZYWmNEZ0RoMkl0TG4ranFkd3ZYRE41MnZUdVhkOHIzWCt6QXRGOWx6YzJYZmhLNnVnSGFTNDJPT0JYbmE1VTFZRGg4aVd3RVdYd2ZMTzV1Z0FCM3JQWlk3NDFEYyttLy9hOTRsQkExeHhkWjY1WHBBcXg5ZTJzMmVlQm5ZWnNLY2xUbHIyWFFDREZIWGpaS0FiWXdiTGUxbVY1R1p3NXZOTk5YVFdRN1ZoNnMzVnp1eEkrNTY3YjlVZFozUUNBZUFmdVNkK2RuVklVczEreDdNakRqbG1zSExWc2QvQzIvSis3WHJUc2RyMWNDRnVDRXNNSU96RkZHckFNR1BRRUtSZWhMU1J0WThBc01hbUZuYjVISlRuM1FISEdVTTV2UDVzQnFzb1VqMDcvTXhlOSszNmV1MFliSzNqRUdvMklkUUFRdDdEOXlqeFpNNkFJZEFGMlRCVEJBQzdPYjVYZnN1OTA0SEYvTWp0MnBNKzFYZlhyK253NWJ5dTd2SGx3YTdYbFEyVlhqWkVyVnVkRU5lZDJsQmZscGtSaGlBWU1BREFPSzRUQzZSUXY2Q29HN3MyKzR1Q3BxUnUzMlgvcTNNZGYxQzhJZjNLWWYyaHN2T1pKOVg0a3FWZWp4eTE1NjlZVjN6c0hEZ1kyUkRsSzUxakgxY0RDQVlNL3pCZ0FOQkh5eXhrRENsTGk3cXhsZEUvdW5pOXFZT0hvbTVzYlpZTEYyMVE1RW1vcGlpYWRYODJwRmFEN1g5NUt0TDd1cWlib0p2U2gxN3Z0djVRVVRjK0NwZmVlRHFXVTd6VTBwQ3h0aTVWV2hlNldNelVwVHUrQzZTdFREMGVOblFXOE9aMXk2QUJBT1pycS9LVGgzMFBMMGIrV21xREJudGNzOXU4TzBhT3ovRFVQN085bHlob3hpU2pCZzRyY2tLdlFqVnk2QURDenNUSXoza3RLT05nNDNQcHZsWDNTVHVqekNFT0FGbzU3dFI4ekhuZkF4TmJ3ekI0U0Vmc24ydlN3TUZJS0dtSnlyM3k1MTVuV0c2OHZtZGlybVlNR0lKRVFjd0NrU0VBeUkzY1kyOWRmZXdjQnc4OHA4YVI0NlZtclUwSWlWMGpIMUw0UElQMk9HeXpPZ2lCYjNxcmRXcWZBOVE1K0dQT3liYURoa0JsOVcyMkpOTDlBVUFBTnFMck1ubElDcHVtaDJEQU1OM3FHWi9UUUROa2toNWZVcnJtWnc4Y1ZoWWFRSGdmTkRnNjJkNEhEZHlJQVNBODE4bEQ1SFhldGxWNW50anBQS051a0R1ZFBsZlVIZXFoVnQ4ekU5ZWdLY1h2c2J1Qncwb0tJME1UVVVlY0FRTUFMTTl4eXRiM1JkMjg3N3UvZHpxTW9TTFpVOW1hUnBlSzI1ZUVib2ZhL0hkZE9Ndjg1WkxMdnNyNmF5a2FTRnkzVlhta29CMWVGVzNyNzNoSG1qYnVpZXNNRDU0dWFzMDVtQWVSUE9DVERFbGpSNXMzNDNQbytoeFR5U1JOOU1zVHg1NkxtWi83WjZnc1B0cXVUNmtlYkovTHRsMVBKNzdNdFRIbTAxSXpxWE9PcVJaTDMzdUt1ckdSbnhjT0VyWFlhK0dyOWtpU1hET25NNjU1SThYYUxza0E1bm5nOFBkTjZ1YlNZVEVQWDd6dEQzQTljQ0RLQUFBQWdOQ0NEQnhXdEE0Z2ZIZkVYUTBjR0RBQUFBQmdLVUVIRGl0YUJoQ2hPdUlPQmc2VHlxUURBQUFBcml3eWNGaFphZy9FRXZVbkp2N3FyN1lxSHp0dURnQUFBRERhb2dPSGxZQlptRjR1VWVaN3lzQ0JaVWtBQUFEUVJNWEFvY3RUQnFKYlc2akh3K3NPTXVZek1XQUFBQUNBUnM3ck9Nemx1cEFjOVJnQUFBQ0ErZFFOSEZibURpQWk2b2dmdGxYNVhVRTdBQUFBZ0kzVURoeFd4bGJKakdqQVFGVk5BQUFBUk9OL3NUVFU3bEdRUWNIaGhoLzVFTW1nd1E0WUNnWU5BQUFBaUltNnpkRmpySll4YVI4dzJIYXlod0VBQUFBeGkzcmdBQUFBQUNDTWFKWXFyZGlpY1o1U3RqcGwyeGhET3dFQUFJQWhvaG80RkhWenVVU2w2Ykc2QXdZWlFCeG9iek1BQUFDd1RUUURoNkp1Yk1yU1l3Vk4yV3BEbE9HYkRIb0FBQUNBS0VVeGNKQlVyS1dDcG15MVkyblNzWHdPQUFBQUlEcnFCdzRTYWRoWnYyRnBSZDM4SE5DRVBmWTlBQUFBSUVhcUJ3NHlhSWdoMG5CdWpIazA0dWNaUEFBQUFDQXFhZ2NPc2ljZ2hrR0QzZmo4ZXNMdk1YZ0FBQUJBTkI1b2JLaE51UnJEUm1qeGJlb3ZVaGdPQUFBQVBoUjE4OWdZWXlmaW4yNTQrYk8yS2svSHZMVzZBbkF5Zzcrek02Nmh3KzBxYXNEZ0FRQUFBSFBON0pzMmJWVnVMU0dnYXVCUTFNMURZOHpOa0o5ZHVyUHRlcWtSZ3djQUFBQk00YmhmZXR0VzVjTytmOUEyY0JqY21DVTcyaDczSit5M1ZVbktWZ0FBQU95MFphWE9WVnVWcndhK3h1KytES1o5ZlcwMUE0ZXhuZkdsQmc0Qk5qVWZ0bFg1M2ZON0FBQUFJR0pGM1J3Wlk3NTBQOEdjL25IZklHVDk5VlJrVllvbHcxQ2dkbjZUemVFQUFBREFKdDFCdzlYY1NYVTdjYjMrR3V0OTM4VUhEaEVOR2tKR0FTNGtIUzBBQUFCd3gxci9lZkN5cENGNkJnOS8rOENMRGh3aUdqU2NMbEJUNHBqQkF3QUFBTFp4T1doWVdSczgvTzBETDdiSFllNmdJZFFlaDZIcFlUM2FtUm9MQUFBQWVlajJvVGYxaDBmMHM2L2JxanphOEJwMlFISWgvM25TVnVYbEloR0hvbTYrTHZHK0V5MDVhTERLd011a0FCVElhVDRBQUNBQVNVUkJWQUFBa0llbm13WVpkcURRK2M4L0E0amdBd2Vad2Q5VXdVNFZSVXVwR0R3QUFBQ2c2MG5vbzdGRXhHSHBHZnhCRk82L1lQQUFBQUNRc2U3KzE3WXFmNDQ0RXM4NmY1cjFmOXl5R3VoWjl6OGVoRHowcEYyZDdjL2dnVDBQQUFBQVdUcWU4cUhicXV3T0RBNWtNcnFiK0tkM05aRDl2YUwrTjg0SUZuRmcwT0FNa1FjQUFBRE04V25zNzlvc28wRUdEZ3dhbkN0SjFRb0FBSUNKM2t6NHRTUHZTNVVvOE9hTnJmUGdKWGN2QUFBQTBqR2dQLzVoeUlmMUduR0lwVE5lMU0yYkJRcTh1WEFzT1hZQkFBQ0FTZHFxSEJTQjhCWnhrQTZ0K3M1NFVUZVBqVEh2RlRSbHFndlpNTTIrQjJDTG9tNVdCVzZPNUk5eGtCcTZrWFdpbi9nTzZ1WHAzRjhiWSt4bXcvTzJLbjlIZkd4ZXlKS0ZzY2RqOWZtL3JtMjZoSEx5ZlhnMWNaUHRyVEhHM3VzdTEzTDhJMjZIUTF2dnJYSzA3eVZLcmlwSFI3U3ZZWmY5V0I1ZXNqOWpVbGFBanR1MktoODZiZGdXdnR2cytEbzhYS29UVzlTTnZRYjNYTDNlbG9xWWJ5SVk4SHV0K3A3UXZXdlUvZHpSZDlHM2paVllsMkkzTlJwajNnVisrN2R0Vlo2N2VDSFg5NWFsdWVyRGJMTlc5VGNrTzdnNEd2c2NjblJQZTlsVzVlaE52MU80YU8rVTYyQkkxZWoxbnhObmZmZUFJVzNvdk5hWmw0Z0RtNkVYY1dNL1VpUnRkZkhRRC8wQWlhbk4zeGE4RmtKOXhoaWloT1hRRzN6dWJLZTJyY3JUZ1lkQis2REJyRmRpWGVyY0szakd2Uy9xWnYyNyttUms3dm1WWkFZTlB2V2syRnlDUFZmZk9pazhQd3hkQnVQQW15blpncFppb3oraEluWnlqejFkdnkvWStnMGpKam8rT2QvakVPaEdkYTl3eFZpSkRScitTUEV6WVJxWm5Rdkt3L1gzYk1EUFJNTWVINzZqZVFwOTdwVmZhei80SHJqWE9lY2FsNGkvVnRDR2xGelAvQ3kvMXY1NzZ6TEZvbTcrcnBTd1VTU25BNGRBTjRQYnVlSC9VRGV0SldhWnVDSEh5Y08xRXYzc1hLcnJwaGxBNUV2T3ZiZEJQZGRXZnV6MUZNTTUzMUtWR0NQTlhRYlpWdVhqbnZPejdScTY2ZjZIczRGRHdFSERySFh0b1FjTkRCNHd3cFhMZzFYVXpaVGxBRlBmeStrMWw4T3lIcjZuMmRyemNlNjVudklqNTV3bFhCbWIrcjN2ZThZV2RUTm9VdDdKd0NGUU1iTG9CZzJiL2pzRUhpTHg4VkNUNDFFT3h5MW1mRS96NWZMY2N4M2xoM01PRDc2dHYyUjNtWkl4NXJOeE1YQ1FkS2ErTjZ1NUdEUUV5VEt6YVpEQTRBRURPVjNYSHlJOFRMUmhIcjZuK1hKeDdybCs4c001aDgwZXRUb0ltNVkvMm1kcDk4K3VmOS93N0wzcC9MeE4zZXdrNHZERDl4bDBNR2dJVWxOaVY0ZG5vY0VEZVpZajRtRmQvOXhjOVFpQWprQys1Z3p1dVc3eXd6bUgrYSt2ME0wY3RiY1dHWEJpMDRCazFzQWh4QVU4dDdNdEJ6TkVIdVA5SVQrMHdPRGgyTWNGQlg5Y1h5TStCNDlFRzREWkpnM3VaVUlNR1dIUWdEWGRmdWVOeTc2ZXJOTDV1MyttKzJ5ZVBIQ0lZZEFnYmdiOTFEd25ZNHF2TGRBNUNuRU1vRmNNZWUrTmd4UnpVYU5Ua0srSjUzNkp3bDVZeU5DTnE4aUg5RHR2T3gvNHhrWFd0cDYwdm5jbXhpY05IR0laTklTcUtUR2w3THA4dnRzQlArb0VuWks0ZUlnNkRDMnVOZVkxWFVjYlZGWGFCUUJGN20xY0JXUXBmN2N2dVRjbExiUGRyN3poOTU2c1Q0eVByaHdkWXBOeFJJT0dXVFVsN0FrUFdlWFJIaE9XZ21UTGxwbDNQbmh3S0tsaWIxUFpGTHA5T2JhUnZxSnUzclJWZVQ3a2d6SVJsQmRiWFRqM1k0RE5wQy81ZUgzUDhkejd4S2IrNHFpSWc0VEt2SFp5SXhvMHpONjBMYTl4NEtJUzlsQkYzVVJUaWoxM0hxSU96dFpFdXk1aWxXcXh0d2xJb1p1djk3a2ZBR3owaFVPRGJkcXEvQ2w5aGpNSEIycC9XLzlqN0ZJbHI2R3l5QVlOempwMWdRY1B6d085RDl4d3VlN2Y1WnBvWjBXSGlJSUJRUEtDcE1UUFhWdVZwNTNVcWtNaitkZHJhVm0zVGd3T1hxcmt1ME9lNjZDaDg1b0hvWll0c1dRcEhuYmR2K05DVVFkdFZjNjZnWWVzU08zWjJPVlJSL0xIYTRwYkYrY29OdlpoRjdqSlU4NzlpMURMU2hka1p5dTlSditJTHY0eGVIOWp3UHZ0QjJPTWx4VUpuUE5seUhGMzN0Y2JOSENJWk5Dd2FJRTNSNi9ONEFGOW5qa01WWDl6Y0NOeHRweG15V3R3d3NQczNzOUxxbHZYV2F0Y25LTkJjcjBIVER6M2R3WTMwcUZ6dXJUTUpqSFlOWWh5dmQ0OXQyc2d3cy9yYS9uaS9waHNrTURLenFWS0FVYTdnK29mYktPbHdKdWo5emdJbFcycHFKc1hJZDRIODdpZXJabVQ2emxFSmVxWXRGWDVpZ0Y0bnV3bWRnL24vdDJBbjNFMmNPRGF6ZEt6SWN0UmdFMjJEaHlrZytGenM5N1ozSXMzVklHM2tEZFlGNXV1Qi9vWTZIMHdrK1ByYjA1ZEQyZkxkRkxxdE5BQnk5Y0M1OTVWMXEwVFI2OERUeVJUampNeVlHRHlCN1BzaWpqNExCeDI2MmhkYTRqaVpvY0IzdU9PVUE4ajB2cGhLTWNWcUZNczlrWkhMRisvQW41eUo1M0pLZldIRU53UGgyLzRnZE1IRnpZT0hBTHNhNWc5cXg2bzAzdTExRWJGZ0lNSEtsSkd3T1gxTVBHNzQyd3RmNHJGM3VpSTVZdmFHOUN1cmNvM25DUzQwRHR3OE4yUmpLekFtN1BjOTFNRUdqeFFrUkpiT2E0OHpjdzhBSVREUFJmT2JJbzRlT3RJeHJRV09PQmVnNjFDSExPRVVtd21iY0dvdzVCTm00TXdNdy9Nd2hwMWpNSTlGeTdkR3ppNHJnaTc1aXFXcytlcWcrWXFNaEpnOEVERjJuZ0UzUi9nc3VKMEJwdUlVOXk3Z1FTNS9GNER5RWRmeE1GWlJkaDFTeS83R1VyYm9LSEQ2K1ltTmtySHdlWCtnSUhuM0h2V3NvUXdHd3pmWEYxamZLOFZtNU0yZXcyVEdYRHF6c0RCWjhjeGxwbEd4WU1HTmplaEs4aWFWWmZGcGtoWkNzem5NcDBtazBXcU9YbmVwNWlJQXN2YVdRRE9rWmN4bkdmTmc0WVYzNTB2Q256RndlV2ExUjNYcTZ1SzFRQVVZdkNnRmhPRlVPbnZ3TUZ6Wi9lVDl0TWZ3NkJoeGZQZ3dWbUJML2dWWUJEcExNVmtSdEVHWnZjUUhmdmNraitrbGRYRDI3SnhZQTd2RVlkSU9nejdMbDdFODhaeXdKc05BMTVYeFlkQ0ZzZGFHZ052eE96SGFoREJXUVRRNTgvQUlmTUNZQ2R0VmM3dThNc1NuMkF6QkQ0SFpEdzA0dUhyT25DNE1ZL2lXRUNFT2xHSVJRcWdBdERwZ2JUS1M5MkdDS0lOall1MTRwTFdib21aeGpPWCtmVmp3d0RITFhzOE85L1pHMGN2VHVFaHhWeHVmaC9MNVNiZkREMEx1UCtvN054clQyS3ZDYkRVTmMvMWpsUTh5UGxNdGxVNU85SWlNN09McExWcnEvSzBxSnRzQnc3NGorM3NheDFFNVZSNHlIRjE3VkFXMi94ZTFFMHllMTlDRjlDMG5WQjcvQlp3VWRUTmhZbDczOUlpMTN4SzF6dnk1bTNnb1AwTDRyQjlybVptcC9wRjhUYlk2Sm1kR1p4N0lHU2ZqcXNsZDA3MkRrV0VRWHkrc3JzSGR5WXJidHVxZExhMEVZQnUvOHV4ZW1STUdaUjJZZjA0aktQb21YQzJUOGZGM3FGWU9MNFg1TFNaUEdvMjR1ejQzSjhOL1VGRmszTjduZjBRTVViZEFJendJTGZxa1NrTkdvQTFKMXErenptRTVJdTZlV0dNK2VqaHBYTk9WaEdGb201c2p2MzNydHRxbDU5R2ZtamVyWmJQc2l3SFNKT3ZwVXB2TlI0dEJnMUltZDFQc0ZwL2pOMFU3d3NocmJObnFkekROZTl2V3JXTEFRU1FGaTkxSE5xcVBOZDJsQmcwSUJPTDd5dWdvd0FFOVVUejRhWXVCSkFXN3dYZ05FaDUwT0F5M3o3aXAyQzJtdlg1OHd4ZTQ0N2tIRTc1UUcxVi9vd2g3VEdEQnlBTlhnWU9TK1lHN3pIcFpyeE9jVlhvcGJNNlFaa2xaL3packQ5UEFtdmNNVkZibFpNTHJVbmFZL1ZaekNUNndHUVhFREZmRVlmRmNvT3Z1WnB6TTE0cDZ1WXlaRlZvSUZMTWxzOUR0Q1pmVjNNL3VZMDJSckpNOEliQkF4Q3ZsSmNxMmR6U3MxUE5GblZqTTV3Y3UybVNXeDZqSUhRQUk3ZEVCNExaOG5tSTF1VEx4Yk5xeFg3M0l4aEFFQ2tISXEwbzdtM2dVTlROb2h1a1hSU2trVm1SYjI1YTVJV1hLQWdkd0dTRW5NSE9yZGliVTJ3b3o1ZXZjOThaUU54cVBManNlWUFuVHptd2Z2MVBLczc2OEhxcEQ1VlFWZWlOdU9saWw1QXoyS1FRbmVWWnhHM0hQTjRIM0hZU0xaSW9CSUFJL005aHhkbDdpcnI1R2ZvUTVKQjJWUXBQQVVONFgzWkdoMlNXSnpHR3FqR2ZkT2FERHJnN0F3Z25TVVBtWWdJTWlJL3ZQUTZQUWg2UmpHbzErS2hXK3dlZHdMU3c3RXd2NmNRRm4xeFI1RHJYRDc3MGZkWW1EZWtNSWo0czJSWUFjVmxWanI3MXRWN2Vkc0pEM0NSekdUUXdRM05IeUUzYzd3SytsMnY3dnBiZE1kQWNUOU14NC95RnBmRjR0MVg1eGhoai82d1NiZ1ROSUdnVGtMaklmamdVMXp3d3o1K0JnMTBENmJORFd0VE5kNTlMb2hnME9CUFZXdXVRcytsRjNVUTdjTERMSVlyYXkxWW1sWnN1bGZvZ0hUVGs1MFRxTEtqWFRTb1M4SGxvRTVEUW1VZFVjazRwL0dEQXo3aFEyb1BzYVQybms4MWxFUXdhdkhjNldHdWRManU0ZG4yTnU4aGNsaWliemVvVjM2ZnNSVDFZWEUzSVNVcHl6ZGtGZ1NWa094SDBkK0RnbzJPeDVzYkRyTUtKaThHSWpZaTRhWTVYN3oyL1BwbGRNRWIwdFQ1WXNwQ3ZUZWRlbmdXbG93UHpPb1hPaFN3aldnMGlmb2JldTVpeFh4a2U2K3VJMHFuR3ZIeDVscUFGNEJ3UFRCb1g0VitwTitIcVFlRkZpR2dJczZQcGM5bFJadE0xVXVSNlNXMXFlOUpzaW1jRzNNRkVzYnpOc1U5SmZacEUzUms0aExnaHVMcVJ1cmpCU3doMnNYb1RRd1FhTlBBZ3dCalpac05CK2x6ZkQ0dTZTYTRpdUJ5amtBVW1zK05xY3Fhb20yZ21CZHVxZEZJNE9NVFM3cHoxUlJ5ODN3d2tjNE1HSWRadFRsNENGR2kyaWcydUFPRFBqeFNQYmNnQ2s1Z2x4MHJLdnBkMlorM2V3Q0hReldDdnFKdEZ3M0NCT3VWWFU1Y0FoUXB4czhFVkFPN3lFSFZJTlkzMmxZSTJBRUhsSHRIWXRNZkJleGw4WTh4eFVUZEhBZDdubmxBeitXMVZ2cHJ5aXdFSERTeFJBb0IrVHpndTIwMTl4aUdzb200NFQyNjVpbWhFbVdTa2QrQVFzQXorbDlDNWNMWFA1QWVjbWZLUzJCOEFVdUM2cWpmRk83R2dpOXdPZmd6ZnQxaVRqR3pNcWhSd052b20xT0JCKzB4K3lMMGZQZ3Z5QVVBS1BDeFpJbXNNRmxIVURabndIR0FDWUVjNjFwQ0RCOTl2RU1HZzRYdW9VdjhzVVFLQXdWd3VKM2llMG1HWGRPYnd4K1d5OFZqcURqajd2cm51OTBWUzg4dTdJWFVjZ2l4cDhkbXhqMkRRY0JtcWxnU0RCZ0FZenZWeWdzUm1MRlduTTQrZDYyWGo5dHJUbmg1WTYvZk5jWEhJcU8wY09JUmMwdUxqaGhwcWhEaGowR0EzTFIyN2IxR3ZrMER2QXdESjhMQmthWkhFSUM2eFpDTmFQM0k3ZHpKZ21qUUlzMHZwNVhpNUhqUkVtNUhzd1pBZnNqZk5VQmVhdk0rK2k1RzJkTXE5anhCbkRCb09BbTVhdW5WUmFSdEFPclIwSUNLSmhEWU9ueWRmN09GMzlGckJ5RHI1V0phODlGSnl6WitNZUI2N3ZPNytXanNPbjQweDUxUFR4MGRpYiswem4vVkZOMlJRZitxNy9rWE1HY2tHRFJ4TTRNR0RiSmllTlhpUURkY2hPdVdITTM0M1JBRzZQNmpYQUVBcjJ5SFZubUhFUnQ5ZFBnUHRhMDBaTURIVG53VGJOeGswY0hCOTNXMWc5OTQ4TDJxdks5UGZqcWdNL2RJWTg5Rm5ZK3dBdUtpYnFBZkJTeG15eDZIclE4QjIzc2lNL09UZmQ5aVdUZXlJZGRKU3FKQTNmL1kxQU1CODNFdUJ5VjRNL2NXMktsUFBQdlpMUVJzbUd6VndhS3N5ZExXOGIxTUtsd1RxbERkVFo4Z1lOQUFBaUI3d2pCcm9XUlN0eENCdFZhcmVvTDdMMklqREVsL3lDOGs2TkVqQURFcVRvaUVNR2dBZ1hoNDJTcFBpRVZzbHZ2ZWdGLzBYdlVZUEhNd3lKL1M0cUp1ZFZUd2pTTHNhY25icFpjRDNBb0NjUEhINFdYTk84Umh0WnBrRnVMem1zSkFVQmtTVEJnNW1tUS8vYUZ2SE80SkJROGowZTc4eVdDTUlBSXRvcTNMblJOWVl1UzVaaWptelRHaXVyN2tZRUhYUWFmTEF3U3gwVXZ0dXNOb0hEZUtMMDhac0VmdjZPUURRenNPU3BjR2JSMU5BcDNDOFRJOVp5S1E4WHFWeS9tWU5IRVR3VFR2ZGdjTFVvaDVqelRuaDdHc0FnQ1NkT2Z4UXZ0TlBhc0lTcFlseWU4WXZrSlRIaTVUTzIreUJnMnphQ1g0VGtFcUFkdFAwbnUvM2l1V0VNMmdBZ0hCYzE1N0laTWxTd3hLbDJmWWpiLzhvQ2ZSdGtqcGZMaUlPcTNXS3R5NWVhNlRqQU84UnhRbG4wQUFBNFhsWXNwUnlzYzZYVXpNUzRoOWJIRGZEeUVPVW45ZTJlMDR4WTQyY0RCeE11cFdKVHlJNTRYT3FWd01BNW5GWjBDbEU4ZExncEFORjBnNkhNaDA4UkpNeE10WHo0MnpnWU5JN1NOZHRWUTZ1SDdHZ3oxT3JWd01BNW5PZGtHSkkrdkdJN0JNUjkwY0daREVjWHlmTDAremdNNExQK3lUbGE5N3B3TUdrTTNpNGJhc3laUHJVeWRxcXpDb1RCd0JvNVBqWjkyalRQOGo3dU55VTdjV3FRNXZhTWcydHRBOGdYS2VUN1h6ZXp5NWZkNDdPTlo5MDZ0d0hQbDdVSHJpWU4zbkZzdXdxNGtIYWJZaE43WTdGMkdaZnNxdGlDdTlTV2NKeTVXcnZYVkUzWHpkTllNbW03SHNiczR1NnNYLzN6c1g3VDNERnB1ZmxkZnNGUmQzWTc5WHpoUnAxSFdJQ3RqdDV1c1QxbjJNMHJXaGJmLzM3R0FjUFBpNENIOGNoaFl0MVJsRzhuMHVONkdlMCtidVdtYmVpYnV6bXhFbURZOG1pcHNLY29vcWFQc2NjZ1F0TGVqSGxYTVJ3N2pXMlVkcjBhdWJneHViVnYxeGlpV3hSTjNaSldPeDFpbjR2dWJ4WXJnSGJ3WDdxNE9XdTVGcFFleitWWkFOdlpnNG9ybzB4NSt6UitZL1hnWU9KYlBEZ3F6UHUraGl3WGhRQUFBQ2hPZC9qc0k0YUNHNHhhQUFBQU1BU3ZBOGNUQVNkM1lnNjQ5R2tJUU1BQUVCYWdnd2NqT0xPZVVTRGhvYjFkUUFBQUZoS3NJR0QwZGxKajZad0d0VTJBUUFBc0tTZ0F3ZWphL0J3RlV2aE5QWTFBQUFBWUduQkJ3NUdSMGY0TnBaODB3d2FBQUFBb01FaUF3ZXpjSWVZQW04QUFBREFPSXNOSE14Q0hXUFNyZ0lBQUFEakxUcHdNSUU3eUJGMXh2Y1Z0QUVBQUFENGEvR0Jnd25Vb1k5bzBIRFNWdVZ2QmUwQUFBQUEvbEl4Y0RDZU8vYVIxV3E0Vk5BT0FBQUE0QTQxQXdmenI0Ti82K0UxWTNCTHJRWUFBQUJvcFdyZ1lQNWxQR29jdlZ3MGV3Vml5ZlFFQUFDQVBLa2JPSmgvVlpKUFpyNU1OSHNGeUtBRUFBQUE3VlFPSE14L25XbTcxdjl3NHE5SHMxZUFRUU1BQUFCaVVMUnRxNzZaUmQyTWFxUzJ6dmltOWpOb0FBQUFRQ3pVUmh5NnhuU3dLZkFHQUFBQXVCZkZ3TUVNN0dnemFBQUFBQUQ4aUdiZ1lIWjB1QmswQUFBQUFQNUVOWEF3R3pyZURCb0FBQUFBdjZJYk9KaC9IZkRHTUdnQUFBQUFnb2dpcTFJS2lycDViSXo1WVl4NTFsYmwxOXlQeHh4RjNkajZISHRTYlp2Q2VRQUFBQUFBQUFDZ3dBTk9nbDlGM2RnNmRNY3BmOFpRZW83bFhxZEV4bjRzaGNJQkFBQUFBQUFBSUVVRUhEd3A2dWE3TWFaTThzTUZWdFROZ1RIbTI0NTN2U25xUDd2bFQ5cXF2RXp0R0FBQUFBQUFBQUNBZHFSVWNteEFvSUdVU2lOMGRqQ00xYlJWZWFEOTh3RUFBQUFBQUFCQUt0amg0RWlucmdBY2NIQTh5MVd3Z3NKN0FBQUFBQUFBQU9BZkFZZVpTSjNrVmxFM2R2ZkhVNWN2U3AwSEFBQUFBQUFBQVBDUGdNTkVQaWJHYzFiVXpTdGp6SVhuUTBDZEJ3QUFBQUFBQUFEd2hCb09JeFYxWXllcWoyZThCRFVjT29xNmVXZ0RBUXU5L1hWYmxVY0x2VGNBQUFBQUFBQUFKSVVkRGdNVmRmUENHUE14aXNaR1lrWkJhRmVlU2h0dTI2cDhtTk94QndBQUFBQUFBS0JiVVRkdmpER25ubXNIWDluM2FLdnlwNHNYWTRmRERoNVc0R2UvdzZHb0czdnhQbExRbEhzb01BMEFBQUFBQUFBZ05JVXAvSjlNQ1VJUWNOakMwd3I4YkFNT1JkMmNHMk5lSzJqS0VCU1lCZ0FBQUFBQUFPRE56UG5uYTJPTW5XZitib3o1TTQrNW1uZVdSZlFIOG5NMnBmeGorZCtwaThEUDJxbzhIZktEQkJ4NmVFNzFrMTNBb2FnYmUzRi9VOUNVS1E3YnF2d2VYN01CQUFBQUFBQUFhRlBVelN0anpNV0FabjF1cS9KRmlPYVBhTlBPMVBRRUhEcUt1ckVUeTZYbnQ4a3E0S0NnVG9NckoyMVZYcWJ4VVFBQUFBQUFBQUNFTkNCMXY1bzZzd015MVRSdFZSNzAvUU1CaDNFUkhCZXlDRGdVZGZQYmN6R1RwUkI0QUFBQUFBQUFBRERZanZvTXF1Y2J0eTBvNzZ1SG0zWEF3VU5CNkNHU0RqZ1VkZlBKR1BOY1FWTjh1MnFyOGxYYUh4RUFBQUFBQUFEQUhGc1dadjlxcS9KeERBZDNXOHI4OWFCRHRnR0hCVlA5SkJsd0tPckc1aFA3cUtBcG9WMjNWWG1VMTBjR0FBQUFBQUFBc011V0ZQNmo1b2lMdWptU29zOUcvdmZoaE5JQW40MHg1M1BtcGpmTnFYZUREdGtGSEJTaytra3E0TERRTGhHTk51WXRBd0FBQUFBQUFKQ1hMYnNDeGdZYnRxVmptbXUvcmNyZlkxNWpWOURoZjU0YXFrNVJOMi9rWUtSWVYyQVJjandKTnZ5bnRNZERvcFlBQUFBQUFBQUE4dFlYYlBpc2JESDZUVkUzUDhmOFFsL2RCdk52RjBiNkFRZTdBbDhteHQ4cmFFNFM3S1Q2Z2ltcHRDUHdBQUFBQUFBQUFHUnNOZm0rcnEzS0Z3cVB5cU9pYnNiV3F2M2M4M2RmN1A5NTRLWk5PakVwN3BiZEpVTGdackJTcmo5U0xRRUFBQUFBQUFCNStkVHphYTk5SFlGTnV3NVdCc3lUWHhoakxrZTgzNHROcjVsa3dHRkxNUTVNTzU2Mld2b1BqdDBrQkI0QUFBQUFBQUNBdk54TDY5OVdaZSt1aDBET2pESHZmTCtWM2RtUlZNQkJ0bjVjS0doS010Z2w0Z3lCQndBQUFBQUFBQUNwdU80cFp2MHFtWUFERStOdUZYWHptd0xiWHF3Q0QxZHRWWTdOalFZQUFBQUFBQUFBZzBqbW1zdWV3TUM2MndsSDlHdlA2ejZPUHVEQXhMaGJSZDNZQy9BNHBjK2sxSEZSTi9ZNG43UlZPVGcvR2dBQUFBQUFBQUIwT1ZpTS85alJBWDBhYmNDQmlYRzNwSEw2bDVRK1V5UXVpcnF4YWNCZXRsWFpWMHdHQUFBQUFBQUFBSHpaYjZ2eXQ2UFh2bzR1NEVBQlk3ZUt1bmxvakxsSjZUTkY2bU5STjdibFQ5cXEvSm43d2ZDbHFKdStyVjRoL1dxcjBsWEVXSzFZajNOUk42Y2hDaWlOOU1zWWMrRHd3UjhkcGZXWmJ0dXFmT2pqaFdVQmdOWDlYL3RlcFkvM2k0QjlPTnFBL0dVcXo4ZWlidXpuZUtTZ0tmam5XVnVWWDVjNkh2Szl0OS96QTFsWjlsaisvMXgzY2R0Y3dKL2FxanhYMEphb0ZYVmpyNk1YTnBkeVpQZWRYM0x2L3hyYm9penU4U29sUGNhV09aMVg4bDFmY2d3MjE3V2tadm02OERQWkhzZVBTNzIvU0RZRnQ1TEY0MlFhK2Vlc3JjclRtYS9SV3dTN2FOdDRTaDhrVXFkaDBRRk5GM1V2OUdxcnNzajlHTGltNlhwUCtmekdmSnkxM3hOenV5L0VzSk54ekRrcDZzWk9uTDMyMjZKc1JUTW9vKytsbW9zQjF4MmtmdlhLK2ZtS2tRVGx6N25PL3ZnZ3dlbnZTeldBZTd4cWF1Wmh4aHFSZXowbk5zLzhHOWVUeGhLay9hYmtPRjYzVmRrN2tSc3JCUXNUdXc1RFBDLzZuZ3RUeC9WRGp0L3F0WWNlYXhkekRCdWVmU2RSN0hBbzZ1Wjd4aXY3bk9ONDZyZjZ3aEo0QUlKNnBqbTFuTndYWEc1elZFc201NU1KTmdpQ0RmNnM2aUoxWmJHakRPb3hDZXpQdTZKdTFuY2xKcnNpMUpCU2VBajduSDB0dThidllFeUZXQ2pkMmF2UlhpYzl0ZFcwVlhuZ29KMWVkakJEcGNYT3RjMnM0SHZSaEExV0RVbWQ3MnVPd1FZRFZRY2NsRVVYNTNKMUE1eU1oMWQ4NU12dkxYVUhnSC9zcXFlaWJ2YVZwNW03c1cxTU9lZ2dxYTFVVDg0emNSR0ZSMnVyYlQ2MFZma205NE1DSkc0OStCaDFqVFFDRE83WTV3SFBibWlrSkgxUENzb1FrN2pBQkcrTk1lL1hmczB1bVBCK3JjcXVybUxBN2pzN3gvQjJTaXBMR2J2M1VodHdTR2c3NHVLVHhRbldhYmlUZ3pHRHJhdDc4aG1UWHJVRmFDQVQrVU1leWt1eTkvTWtCODFLNjJoMHNXbytYbmJWNnlxUVJkNVdJQThmTzZ2ZG84amhYdFNORFpBOFY5QVVBSjRVZGZPbVp3SVM4eVdWZmdocHNKUDRSZDNjKzc3YiswQ29XbFUyNEQ1Z2Z1Tzl0R25zV0xkdjdHNkRMT1ovSTEvSU8xdGtLWkVKWkJ0b0tCUUVHOXFFZ2cwbmNrenZEQmJrN3dvcExKa3l1MnFybFowL0FEelN2Z291eFVDcjdNTFRIR3o0VExBaEdSZnlQRjBzenplQTRIN0k5MTVsSVdwcFcwdXdBVWhYNTN0T3NBSEl5OXVlVHh2MFBpRHpHeDkyL05qNkR2R3ROdjNzS3BDaUp1QmdKeHFrc1k4VU5HY09MWUdHM3dsTlNEVnlUTGV1UnJRcHErUkwxUGRsVHNrM0NwSUIvaEYwQ0NlQ2xIKzJPT2tMQmUyQVc2VU0vcU5OdVFKZ3ROZnl2VmV4RXJZekFRa2dVWHpQZ2J4dDJza3c0YjZ3YTdIVXIyMy9hTlBMeWh6SDdiYWZzL1BKdXhxeTVXZjJWLytQaXBSS3FkeDhOVXhPcFpicmM4b3hsUy96ZVdJMVFPNlI3dzNwUFFDUEJtNC9YRXdLT1lsbDBrZHpzT0daNUw5RXVwNlQzeHZJemhlYmJtbXA3NzNzdEZCZHJ3akFQQVFaQUt4c21sZVF2eHRVYzBycTBjMnVTVGQzZ2Z5V2U5dXpicTNKUlFNT0VoSFpXN0lOTGlnSk5DUTF1ZTdpbUxaVitWMXlzYWRXdzZKcnRlV0pmTlNBSjlJNStLbDFCMTdNRTZVU2JQaWlvQ21iSkYyZ0czZko4M1JTd1RRQWNaTHZmZEI3UFpPUVFOb29CQTJnejViRmpCK1hYQVF4bEtTakxUZjgrTDFhV1l1a1ZPcWtUNG82Mk5DcEhiQW9PWmFwQkJzT1hSOVRPNERRY3E0OHVtRHdBdmdqTzRrK2F6M0VNWDcvaTdwNXJEbllJTThOZ2czNWVTKzdSUUhrNHlaVWlpWDY2MERhWkZFdHdRWUF2V1JlOHFydjMxYnAxeVJvcVVZbkxWeHZzS0d2MXE1Wkl1QWdqZFNjT21FblRZR0doRHF0VjNKY3ZSWnc3Snk3clRuTFlrVVJUTUFmeWVGL3B2VVF4L1E4a0dERER3Vk42VVZxbmV3ZGF5MHNDOENiTC9KczhvWmdBNUMyRkJiVkF2Q3ZyY3BYTytZbFAzYUNEOEZUKzY0MkNReVljOTY2WUR4WVNxVkUwaWVwU0syd1l4dExiQmFwUWJES1dhWTVUY29NcGR3VTdtMXBBakJQVzVXbjh0Qlh1VEkvaHZSS2t1YU9ZQU8wczRWbEwzMHZoQUNnaW4wMmVYa0dzSE1LU0JzQlJRQmpkZVlsYmYyRzV4dCsvZW1HKzB0ampMRy85Mm5LZUVWMlViemE4cjRiRFIwdmV3ODRGSFZ6YW94NTUvdDlQRHZVTU9DMFVhYllkNGQwYVpqVVdRVTdFZ3ZpclB5SUlROGNFQnRiUUxpb20zMnR0V0UwQngyMDE5VGhmb2sxMzN4TlBnTFF5ZU16OUpoVERxU0pZQU9BT1NTVHdoOGo1dEJMK2ZQT3p2dDVabmRpUEI2N0FOOWJ3Q0dSUXIwcUN2RW1XUFJZWFJIT3RpcHQwZTBrQXcvU0FiTFY0b052eFFKU0pmZXdUVVdmRnFjNDZLRDFXWGE3V21FQ2ROa2RUVzFWQnNudERrQUh1K3F2cmNwUHJocXpSRG9FQUdHUXpoaUFTemFqZ2pIbWRQV1NNaDk4T1dVbndrUTJ1UERLUlQvSVM4QWhnZlJKMTFvR2w0bEZ5OVZQZWljY2VQakNiZ2ZBUGZ1ZEl1Z3dqT0xubVpwblBsUjZ5bW5KQnBOR1dQbm9lSGNUOTVIbEhlWitBR0NjcHhvdTZ1WWd3U3dKMGFJL2p4VEpRc2ZCUmFUbHZuUnZJZDBTYzdGT0F3NlNBeXJtaXZ4cVZqZ21Vdk5peFJhRWZxV2pLY09rR25pUUNUOFZLY0tBVkJCMEdOYU9wZHV3d1ptc0lzbktVdGVFck5DeHgvdDFUTWZiRnBCdXEvS05ncWE0cHJZSWZtQ1RjdC9HWnNIdi9ZRjg3ME90ekhQQ0ZwRE9xQmJhTDJQTUViWGZrc005L2orWEhxL3RiNTVlMTdmUDlyN01uQUNRSGszZmEyY0JoOWhYNG10WkJTb0Z4VkxKOFJsOWlvcEVBdy9maXJwWnBGZzNrQ3FDRHR2ZmY2bjMzdUdseTVRWjJFMVc2THlSUDM4VmRXTW5BaDRwUG9TdjE5dWNnaHlEYlFoUEJyNTNWdVpGa2k3V1BoOE81cjZJMU9EVEtMb0ZZUmlIZTd4ZkVSV0NKMjBvZ0VYTURqZ1VkV01IWU84alBuMWFDa0lmUkJ3aHZ5ZTExRDJkd0VNcU8wOGVhUzRzQzhSSWdnNHE3eEcyWFVzTU5oUUhHNTZ3a2xPUFZRQmNKdVl1Y2o4ZVFPcFdkWkNNN2tVOXJ0cWtib0VQWElHbGh3QUFJQUJKUkVGVS9YL0FDZTJMUk5YVnpRU1FsLy9OK2JReWtSQnJzS0d4blMwbHdZWTJvV0REZnNxZFdEdGhsOUxuczllZXBFSUQ0SUJNNmw4clBKWjdFZ3dKUm11d1FaNzlCQnNVYXF2eVV1c3psbWNsNElkZDFKUDRCTGlxbk9JRUc0RDViS3BGeFlkeFgvcTZCQnNBTEdwU3dNR3V4bzg1aFpMY2dHZHZrWjFMSm50VEtRcDlrdE9EVFQ1cktoMzJqNUxPQW9BRFVyQk1ZOTdjdlZEZmRjM0JCZ1hOd0E1S3oxT0tOUndBVGZhMW5ZMmliaWhBQ3FDUHlscFVCQm9BYURJNjRDRGJYbU5kamY5U1NmSE03d2tGR2xZN1JXTEpZZWlVWEUrSENYeVVSd2xkazhEaUpHL3VTNFZuNHBFOHg3MGgyQUJIdEgxL25pcG9BNUFzbVNUVHRrT1FnQU9BTzJ4QmVZMUhoSDR1QUcxR0JSeGtFaUhHd3JtM01pbStlSEhJaUkvaFBWcDJpaXpOcHVXU0I3ekdOQ3FqRUhRQTNKRm56aE9GaDdRczZ1YXJqeGNtMkFCWEtPZ041RWQyQ0dyaW9qMWVucmNBRnFOdW9TWDlYQUFhRFE0NFJEd1JlVWhWZnJlMHBSUFNjbTNhUVZJS0QzdEo5Y1YzQm5EQTFncFFlbDk0V3RTTjB3R1QwbjdDTFlNd0FNQkU3R3dDc0U3YmZVSGpqbW9BMkIxd3NGdkdZZzAyYUNrS25aQkRaWUdHM3hxdnpVVFNMTjFvM1M0S3hFanBwUGV4cTZDRDBuN0NOUXNPb2hmOXprRUEyVk8xdzRIZHpFQmEyQkVLUUt1dEFZZWlibDRaWTM1RWVQWlUxR3BJeUZ0TndSczdRU2FkNVQwRnplblZTYk4wcTdCNVEvMGc2QUM0b3pqb2NEcm5CWlJPWGx3cFRNMkI4VWhGQWlCcWJWV3F1NCt4bXhtWVJtRWgrUk1GYlFDQVhnODIvWU1FR3k1aU8yd0VHcHhxTk5Wb0tPcm1JTGFDNVhaMXJYVG9ieFEwWndvYmNPUTdCVGhpbjFFS0oramZGWFd6S25ROWl0Smd3MGxibGVyeTZ3SUFvSWpkeld4a0J6c1pBWUJoWmkzU2NZMytMZ0ROZW5jNFNPUTJ0bUFEZVpvZDBsWVFXaWExb2dvMnJMUlYrVHZtYTVPdDE0QmJTbmMvdlpPRkJvTXB2VGM4WWZDVkZIYXBBSUJmMzJUSFErdTZ0aE9RSU9xNkFNQkFtMUlxZlluc0FGNlJwOWtOalFXaFU1bndsdVA2VmtGVFJpUG9BTGdsenl4dCtla3ZoZ1lkbE40VDltMlJiZ1h0Z0RzTTdBRXN5ZFZ6K2l5U3MzamNDVDZzL3BBZkh0RHBpdk1DUUxON0FZY0lKeFp0Nm9SUnF6TFJTMXRCNk84cFRuSzNWWGx1SjhVVU5HVzBvbTdlUk5aa1FEV3BNZkJCV1JzdmR1V24xVnFzMys0bVU5QVVBRUE2bk5SZm1KS3lVSkhuUFVHSTN3cHoyUU81WVVjU0FOWHVCQnlLdW9sdFplQXpVaWZNZHFXMElIU3BvRGxlUkp4aTZiMkNOZ0JKYWF2eWpjS0NiMStrWnM0OWRwSmgyYWJkUnpyRk5CVjE4MExaQjlPMkl3bElUbEUzMmdvc3UyeFA0L0MxbHJZbmZZWDFRTVI1UXA4UlVFMWpRWG9BNlBwYk5Gb0syejZLNk9pODVDWTd5NjJtTkZReEZvU2VTMm54Mkszc0xnZlpwWUY1eDVFVVZmakxCczVsa3VXSG9xTmljem8vNmFZb2ttREQzckxOdW90Z1E5SStLdnR3TWE5UTdwWHhzOGlPSVVnVG80eU1SVldsVVhNNTFyUzE4VEw0enIwdTZ1YjEydC85c3ZWNFNIa1lYc2IzZUFxaEE0QUMzUjBPTnhHZGtBOE1GS2FUSFEyYWdnM1JGb1NlSzhMSk1uWTVBQjdJUUZ4YnVyVWZNZ0cwMmdGSnNBRkJLRTNieFNLWGRHZ0xabVZQbmpVeGpVV25laGxuczJkNUpQMko5ZDBRcEdxRkwxN21GVWdqQmdEalBJanhlRWtLQ295M3J5bkhOYXU4LzNxaWJHVXpnQVhJL1ZuYnpxZWJvbTUrS2RzQithdXR5c2NLMmdISGJQMm1sRk1xQXJoUDQrNDU0VHdGa2wwd1Y5U05MZlI2N1BxMUkvUytxSnYxaFV5ZmpUR3ZxTWtFQUVEOC9nUWNGT2JMM0lnVmpaT2NhS3Axd1lUQ1hYWmxjMUdubE5ZVndCd0swNjFwQ2piWXVrT3ZGTFFEamhSMVkxTVZ2Vk4rUE04VXRBRklob3c5VmFWUDZ1R2xqb3g5aGhWMTh6aUN6NytFNTdMUW9mdld0OGFZQTFJeVFRRjJPQURBQ0tzZERyRjBlQ2pZTjg3bnRpclZGRjJNWkZKaEtXY2NHd0FyTWRaNENlQXROV1RpMFVrOWNDUi9vcDFjYTZzeXVmb05nQS95dmJmcGtRNFMrTjU3bStCdXEvSklVZ3FScW5TM1BVbkoxUDFCRmg4QUFLQmNiQ21WNkZnTVEwSG8rTEJpQXNBZEVuVFFtbW9pdEdmazBIZUhZTllvN0c1QUV2amVqM0xvK3cwa2dIN09lWm5rdUtpYmJsb3FWYnY1QVFEQTNhTFI2ckdWY2pjS1FrY3JsaFZnbnhXMEFjaUczTTkvWlg3Rzl3azJZQ25zYmdDeVkrc0VmUS8xb1NWZGNJN0ZwRjI2NkJTalppY2tBQUFLUEtEYWZqSW9DQjJwb201aVdwRkRKeDRJekJaSWx2dEVka1VtcWR1RUpYSDlBZm14ejl6UUg5b1drN1pEQW5hRk8vRzZxSnZYOGtLcXhzY0FBT1RrZnpHbGNvbXB1SFZBSjdLclFVVm55aGFFSnRnd25CU05pMllTa1ZYR3dESWtWL0hibkE0L2s3MVlFdGNma0orbHYvZDJaNFdNNndvcGxveDVibVRYZzVyZC93QUE1TUlHSEdLYVFIeEtoK0d2Umpxa0tsYkhGM1h6U2dJTnBZTG1SRUd1NVI4Uk5UbjN0QzdBb2lUZjg3TWN6Z0tUdlZnUzF4K1FIMjNmZTV0U3NSTjhJS1hwUERjc2lBTUFkTEdZMXI4SDlpQVhkUk5UbTIvc1hLMkNkaXhHVTRkWVZ1akhOR211UW96SGJZa3Q1Z0R1a21mMnZqd0xrOFJrTDViRTlRZGs1NWYyUG01YmxTKzYvNTFybXNXNUpPandVbEpZQWNBOXl1WkhVMXhzZmFDZ0RRZ2txcUxSSzdtdVVPaXNjbEZCemdQQmhwR0t1bmtUNFhGald6ZWdoRTJobCtpazZDOG1lN0dnUTY0L0lDOHl0b3B1UVkxTnM3Z2FGM2JHaHljS21oYURqNlJweGtSY053Z3R4ZXdoZXdyYWdFQldBWWVYc1Izd3pJSU9xZ2JCUmQzOFpsdnFORVhkL0RUR3ZJK3QzWFpidDRKbUFPaEliSEwwbWwxVVdNaWhUTmg5NXdRQTJkaFBMY0JvMCt6MkJDSHNqc2hyQmMzVDVxbnNFZ0VBQUo0OE1QOTFVRDVGbGxicEQ1bjBmdEpXNVU4RnpmSGhRMXVWYjdRMHhoYUVwa2JEZEJFSGFWZ3hCU2hsSnhRU0NBQ2Z0VlY1cXFBZHlNY3RnWFFnTytwVEo3bG1kMFFhWTQ3V1g5YlczalBHWEVUL0FlYzVMdXJtRSttVk1GU0VxY2dCWUZFUFZtOGU4YVRGajZKdVBxL250b3ljTFFpdEpyY1puZEo1aXJxeGhWNWZSOXI4WDFvS2t3UG9GM25RNFJrRnV4QklkcE9OdU1mT0ZKM1RyOG5LbFUwL2xQdEJXQ2ZmZ1R2Zmc2SnViQkRXVHI0L1ZkSElNRDdtWGhzeU1kZHlqeWVJQkFBS1BGaHJ3cUV4NWx1RUorYTVuV3hKWVd1c3N0UkpEMU11VEJwQzdDdVBtWnp4SStVODRhUmJXNFlFSGV4dXYwY1JOVHZsSFlwWUhqdG5kcUJtQlJKRVFlQ0pjdDBOWWVzNXRGVjU3M09uZ0h0ODJvcTZPV0xSRGdETjdnUWNiUDdhb203T2pESHZZanhyTXRGMUV1bktwWDNwNktuQXBPRThLYVNmb3BNS3hNVUdDRzE2QUJ1RTE5NXc3aTl3NUxPc1ptVEFEZVRqVEw3M2FzWk5LY3RnTjBST096cVFsamNVc2s1ZlNvRWwrMWtVTkFNQnJlOXdzSjJLMDZKdTdLcm00MGhQeEVWUk54Y1JUV1ljYWlwVWFBdENVemwrdXFKdURpTGRKWFFIazRGQW5HeDZ3YUp1VGpVdkhPRCtBckVxWkdyN0hiWWZaSGU3L0NSNEFHQ0hkK3hlV2xacXV5RllLWTVJcVY5Z0ZMRmJSWE5pcDMzMzIwaHBlbmIvVXRDRzVOMExPSmovT2hHdkpEVkRsRHNkekw4VitwcnpkcXBxV3l5cllqVkxaVmNJazRGQTNHVGhnQjA0ZjlIMlFiaS82TUI1QVBJejVYdXZ0VzhyN1NKOWtqSWJka1BFa083UjF0dFRVejhScWwyekt5WUw1NHJtUWxPNjNqUjlGdXA1QmZDL1RXOGhLMGRPSXY5OHg3WkRLdHMrdGJpMUhYNHR3UWE3RWtVNjdRUWJKcklkNlVTQ0RRMlRVRUFhWktYZXZxWVB3LzBGQU9JaTkrMWJwWTMrS0pQWlVNeW1lNVN4citacktlbzB1QWhLMWU0cTJWVUU5OWp4bEQ3T2NRQWJBdzdtM3lxRkp3bDh6aHN0RThKdFZhb0lmdGdnakJ5VFpJdUErV2JUbHNneGpLbEk2eWEyOWdrcmU0Q0VLTXR2ZlQzZ1p3QUF5c2pZNWEzUzgvS0l1blB4c05jU2l3OFFNNFdwdDVqTDhVRGJlVTRodUs3dE01QkdMNHl0QVFmejM0bjRtVXJIUUhZN3FLbVhzQlRwbU44azhuSGVocjQrYlowR09ZYlJwaHpya2xWSGJDa0RBQURBUFcxVm5tdmJOZGVsY0VjN3RpRG9BTGhUMU0wTERtZnlVbGpnbXNKbndFZzdBdzRyQ1hVTVN1bVVacmY5ekJhRVRtZ1ZVQ01UNWVlaDNyQ3pLeVQ2b3REaWxnNC9BQUFBZHJHNzVwVDNHKzJPOWpjSzJvRmhubkdjRUNsdHUzWS9LbWhEaWhwTm55bm1lVHlGYlZkMWJsTTJPT0JnL2dVZFBpUnlQQzRrOEpCOEdwbWliaTdsUzY2bDB2NHNFbWdJZXQ0UzJ4VmlwTkFlSzhFQUFBQXdtSXdIdFE3VzMxUFhJUTZrczBERTFPMG9JTFdjRitvQzJFWGRmRkxRakZIc1hLVENackU0SVpCUkFRZnpYK2ZnamVZdHRSTjhTM1ViYmxFM1IvTHdPVmJRbk5rNkJjZUNrV3NqcVFlNEhNZm9IbFlBQUFCWW5pejgwYnBDbmJvT0FMeFJWaVB0TCs1N2Jpa05pajZQS2VnZ3dRWjFjNUVFdk1NWkhYQXdjV3lwblVKTlllbTVPcWwvdnNUOVNmNDZYQ0RROERQQmgvWUpLWlFBQUFBd2x4MndhKzVYVXRkQnQ2SnVIdWQrREJDMU00Mk41NzduM0MrRmJYb2V3enlWNG9YUEdzOXBzaVlGSEZha2sva3lwWU1UKzRyMnhGTC9YTWxxL0dDRnZvdTYrU3JITUttaU5oU0dCZ0FBZ0dzUjFIVTRWZEFPM1BlRFk0Sll0VldwK2I2U3pFTGFwYlZWcVRZd0t2T1c2dVozT3VuY1ZkSjhUbFAwWU81bmt0UXNSV28zdGRYbmlXVkZ1QzBJblVxTkJpbG1IRFF5TDRPUmR5SGZNNUFuYlZXU3l4WUFBQUJlMlBHU3BIbDRydkFJdjdQRnBLbGRwb09zdms2cExoN3lkYVU1ZFhWbmZ1NXpXNVhxNms3QWllT2libGJYNEdMelB0elhzY25zZ01PS2REUmYyV0xNS1IxdDdZRUhyWG5ScGxvZ2RaTE5RZnN0NUhzR2N0MVc1VkdDbndzQUFBREsyQWt0U1pPamNlWDZuaDNUa1ZwMEdRbVB0NUN4dGlwZmRTWjdOVnRQd1hOcmkrYVMvV0N3L1VnbTAzOFVkZFA5N3c5U2Y5ZTVvbTdPalRHdkYvbVU4NlJVaXpnS3pnSU81citicnIxcHFkNUNNMVhuTSsxcktCU1VZTWN0NkhGTk9RckxZQW9BQU94Q3lvVjdWUFR4WXlhcks5WHVmSmQyaFI1ekpMVTRMRkVxOC9IUHhUMytMazlqNU1NSTUyUnNWb3lMb202U1dpanNLMHVHZlY0VWRmTXJ3cFRicjR1NmlURW80TXN2K25qaHphcmhzSW5jekEvak94eUQzRWkrdElNbDNyeFRFRHFWWU1OTHFTOFFzdU9mVXAyTHJpY0VHd0FBQUNieHNoSXdSOUlmdlZYNjBZUFZkVkJjTkJNZHl2UHh3NUdpYnB6di9wZGFrOWVjSXhYc1RyYXZQaHBDM3YvNGNRNlg0U1hnWU9UbUs1M05ac0NQeCtpYkJCNkNwYTFKdENEMHAxQnZhT3RjSkxyU1kzVXNxZFVBQUFDQXhjbEtVNjByeDk5Si9UdmdLdnNqZ0ZsSVk1eU5KN2tmZ0loeDdoYmlMZUN3MGxibFFlS3JycjlJNE9IYzF4c1VkZk16b1lueVc1a2NmeFhxRFcyaE9EbCtxUlRWL2l2MHNRUUFBQUNHa0pYalduTW03NUZ5Qm95ajRBSlpCdEluaXp2ZjVuNGNJblRHd3R6bGVBODRyTWhOK0VUbllYRGl0UVFldnJ0NlFadnpVenJDc2VXTDZ5V1Q0ODd6Nm0wangrOTl5UGNNWkorT0RRQUFBRFN6YVZNMTkxbGwvRWFxaFF3eGxvSkxYRS9wYTZ2eW5GMVJVYmtpWmQ2eWdnVWNqQlNWVGp6TmtsVkt4M1h5TmwxYkh5S3huSi9CSjhkdDRDZng5RWxzQXdjQUFFQVVaQ3p3UzJsYmYvamNyUTU5bUJ5R0Q4cnIxOEFCMlJXVjhrTHFWTHhsQjl2eWdnWWNWakpJczJSVzIzVEhUbm9uVmhENlpJbkpjVG1HWmNqM0RJSDBTUUFBQUlpVkZHMThxYlQ1cjZucmtBZUNEZkJKTWpwb3ZjL0JBYnVRV25HNlFQeTM0SmxGQkFvOFdMSUo5bUZmMU0zRGhBb2g5K29FSFE1dE1lMGRQNU9DeGdhVkZqak9kaER6STZIanVMTFBqZ1lBQUFERXJxM0tUN2Jicm5UczgyZkJHQlBTeVhvcDF4L2dsZkw3SEJ5UStabENBdFhKMVFxTjFHM29GTzdZYnRHQWc3bjdSWDJUYUs3OXJtOUYvU2ViMUllMkt1M25OVkx6SVpuVitFdDEwQk1OTnZ5OVRnQUFBSUJVeU1JemxaTngwcTRuRkpwTXhpS0w0WURWM0FpQmgzU3RKcmc1eDh0aW9ZQk9pNlJVNm1PM3ZHUlEzMkhsZFNmZFVoTEJCa24zcytTWFBLVmd3NjBjVDRJTkFBQUFTSktNSFQ0ci9XeTJyZ09yNGVPMnFuMUhzQUdMVWpCWEFzL2svSkptS2J6ZzlXSXgzT0k3SE5hdE9nUkVDS094TVUwVXh1Tm1DUUFBZ0Z5MFZmbWlxSnNEcFRYc25wTmlLVDZjTDJqVjJmRmc4OHUvNWtTbFpaVzl4ZngzanUwT3VVZTVIeE5QZmtsTktDaW5MdUN3d3ZZejlVajM0OWFKRkI4Q0FBQUFzaUdMbDFTbldHSVNXelVtbnhBVm1VZFpwZGcrTmNhODR3dzZvV1loYlBlZVJQREJDZW96UkVodHdHRWxsOExTRVNFSHBsdmNPQUVBQUpBOUdmZXBMTUFwd1pCUk83dmw4eVJWcjArSjY3WXFqM0kvQ0VoRFc1VTI0SEM2K2pCRjNkaEZpTWVjM3ZHMExvaGRDejQ4bHNBSWhhWjNvNVpTNU5RSEhNemR3dEphdDl0bWdaVTlibkU4QVNBcnR3d3VBR0E3dXhDbnFKc1h4cGlQQ2cvVnQ2SnV6bVNDY0pCdEM3V0t1ckdUNXErWVhOeUtYZURJU2x1VnIrUys4RmRSTjNZaS9UMVh3ajIvakRGSE1VMUtTMXZ2TERpVklNU25qSVBUdG83dksxSzFweWVLZ01OS1o3dXQ3Wng5MGRHcUxPeEwwQWR1UEd1cjhpdkhNcmg5SlR1bFRoUzB3U2N0eC9tbGdqWm8wR2pvdkxJUzhRODc2ZlJEUVR1d3JFTVd6NmgwTzJZU2VZUXpKYWt5R2dWdEdLeXR5azh5NW51czhMNTU3dXFGWkR6d2RYMXljUnRaZ0hja3o1U2p5Tk4wMklMaGwzSytVMkg3K1JjSmZaNVVOREdQdjl1cVBOOTI3NUdBaEEzVVBnM2JNbThhbVlEL21zTzhpUVFoVWc1TzIzdjlPWE5nK1NuYU50NFNDVVhkdk9LQjdsVTBCYUVqcWZWQk9pb0FBQUFBQUFBQXlZbzY0TEJDb1IzbnJtUXJYelMwQnh4SW53UUFBQUFBQUFBZ2RVa0VIRllvc0ROYnRBV01GUWNjU0VjRkFBQUFBQUFBSUF0SkJSeFdDRHlNRi9zS2ZJVUJoK2gyaVFBQUFBQUFBQURBSEVrR0hGWUlQQXlTeEFwOFJRR0hhSGVKQUFBQUFBQUFBTUFjU1FjY1ZnZzg5RHBwcS9KU1lic20wUkJ3b0U0REFBQUFBQUFBZ0p4bEVYQllLZXJHcHJpNTBOR2F4VFJ0VlI2azlxRVdEamdjdGxYNWZjSDNCd0FBQUFBQUFJREZaUlZ3V01rMDhKQjBxcCtGQWc2ZjI2cDhzY0Q3QWdBQUFBQUFBSUE2V1FZY1ZvcTZzU3Y5ditsb2pUODVwUG9KSFhBZ2ZSSUFBQUFBQUFBQTNKVjF3R0VsNGNCRE5xbCtRZ1VjQ0RRQUFBQUFBQUFBUUQ4Q0RoMUYzZGlVUXpkcUdqVGQyN1lxejJOdC9CUUJBZzdVYVFBQUFBQUFBQUNBTFFnNGJMQndFZUtwa2l3SVBZVEg4M1hWVnVVclQ2OE5BQUFBQUFBQUFNbDR3S25zdDBxZFU5VE5iMlBNbnNJbTNrR3FIK2V5RGQ0QUFBQUFBQUFBd0JUc2NCaW9xQnViVHFmVTFpNENEZjl4dWNPQll3b0FBQUFBQUFBQTR4RndHS21vbTB0anpMR0NwbEJUb01ORndJRkFBd0FBQUFBQUFBQk1SOEJob3FKdWpvd3hYeFo0YTJvSzlKZ1pjTmh2cS9LM3Q4WUJBQUFBQUFBQVFBWUlPTXhVMU0xRFk4eE5nTGU2YmF2eVlZRDNpZExFZ0FPN1JBQUFBQUFBQUFEQUVRSU9Ecm1zSTlCRnFwL2RSaDc3azdZcUw1ZHFLd0FBQUFBQUFBQ2s2QUZuMVoxVllNQmhnV2xTL2JoRm9BRUFBQUFBQUFBQVBHR0hnMGRGM2RoYUN4Y1Qzb0dKOFpGMjdIRGdlQUlBQUFBQUFBQ0Fad1FjQWhoUjUrRnpXNVV2b3YvQUM5Z1FjQ0RRQUFBQUFBQUFBQUNCRUhBSXJLZ2JteUpwYisxZEtRZzkwMXJBZ1ZSVUFBQUFBQUFBQUJBWUFZZUZGSFh6eGhqem5vTFFidGhBRGtFYkFBQUFBQUFBQUZnT0FZZUFiSkNocmNyemJENndKMFhkSEJoamZyS0xBUUFBQUFBQUFBQjArQi9uSVl5aWJyN2IzUXc1ZkZhZnBCYkdOMXNQbzZpYm8zUS9LUUFBQUFBQUFBREVnMkJEQUZLdm9VeitnNGJSTGJyOXBhZ2Jkb29BQUFBQUFBQUF3TUlJTm5nbUJZelhDME5qZ3JWaTBDdXZaZGNJQUFBQUFBQUFBR0FoMUd6d1JOTDkzS3kvT2tXaHA5a1FhT2k2cFVnMEFBQUFBQUFBQUN5RG5RMGViQW8wWUJwSlE3WEwzb0NBQkFBQUFBQUFBQURBQTRJTmpoRm9jRXRTSkExT1EyVUREbklPQUFBQUFBQUFBQUNCRUd4d3FLaWJ4d1FhM0NucTVuSmlZZTBiT1JjQUFBQUFBQUFBZ0FBSU5qaFMxTTJCTWVaSEVoOUdnYUp1WGhsamptZTA1RWRSTnkrU09TQUFBQUFBQUFBQW9CakJCZ2RrRmYyMzZEK0lFaEs0dVhEUW1vOUYzWndtY1ZBQUFBQUFBQUFBUURHQ0RUTkpmUUIyTkRnaXg5Tmw0T2FkcEdNQ0FBQUFBQUFBQUhoQ3NHRUdpa0Y3NGVONEhrdWhhUUFBQUFBQUFBQ0FCd1FiSmlMUTRGNVJONjNIbHkrTHV2bTkxR2NEQUFBQUFBQUFnSlFSYkppT1FJTkRuZ01OSzN1QjNnY0FBQUFBQUFBQXNrS3dZUUltck4wS3ZlT0E4d2NBQUFBQUFBQUFiaEZzR0ltSmFyZWtsc0xlQXUvYlNpb3NBQUFBQUFBQUFNQk1EemlBd3hGb2NLdW9tMHRiUzJIQkp0d1VkZk9rcmNxZkM3WUJBQUFBQUFBQUFIWXE2dWJJR0xQNjgzVEVFZnRsakxHTHZyOGFZejc1bWc4dDJwYjU4eUZjQlJyYXFpeThOellDUmQyOE1zWmNLR25wWVZ1VjN4VzBBd0FBQUFBQUFBRHMvT2xqWTh5NU1lYTV4Nk5oZ3hDbmJWVmV1bmd4Z2cwRFNFMEJKNmwrQ0RiOE9aNEh4cGh2Q3ByU2RlTHFTd1VBQUFBQUFBQUFZMG5hZDdzbyt0RkNCMi9XSENuQmhoMmtwb0N6VkQrNUJ4dmtDM09qb0NsOTNyWlZlYTZ2V1FBQUFBQUFBQUJTSmVtUnZpajZlRmR0VmI0YSswc0VHN1p3SFdnd0JCdGlxSHN4NllzRUFBQUFBQUFBQUdNb1g1aHRuYlZWZVRyMGh3azJiQ0RGaTQ5ZHYyN093WWFJQ214ZnQxVjVwS0FkQUFBQUFBQUFBQkpVMUkzTnNQSjY0aWRySk4zU1R5bjZiSDF2cTlLV0ExanRsTEJzTU9OZ1FrSHBPNGJPYVJOczZPR3plSEd1d1lhSUFnMHJUVnVWQnpxYUFnQUFBQUFBQUNBVkkyc0UzeHBqM3Jpc055czFkVTlIRnA4K2JLdnkrOWJYSmRod2wrL2l4VGtHRzF3VzJBN3N0cTNLaHhHMkd3QUFBQUFBQUlCQ0l4Wmx2MnlyOHBQdlR5Q3BuRDROM1Btd05lQkFzS0dqcUp2SHhwZ2ZQdDhqdDJDRGo3b1hnUkZ3QUFBQUFBQUFBRERid0VERGs3WXFmeTV4dEl1NitUb2c2TEF4NFBBL1A4MktqMFJ3dkFZYWNpTjFMMklPTkZoN3NqTURBQUFBQUFBQUFDWXA2bVpYQU9HdFhhaStWS0RCL0xkUTN0WjIyTi94WXh1ekFoRnMrRWR6MWUvb1NOMEw1d1cyRjdJWFljMEpBQUFBQUFBQUFBb1VkZlBHR1BOb1MwdjIyNm84MTlCV1cyUmFzdk0wbTM1bTAxd3B3WVk0aXhlckpuVXZ2QlRZWGhMWENRQUFBQUFBQUlBSjNtLzZGZG5Ob0M2elNsdVZkbzczYXRPL1MxYWJPN0lQTnBBaXh5MUpSK1d0d1BiU0NEZ0FBQUFBQUFBQUdHcmIvTFAyK3I1dFZkcnNOZGNiL3ZsZVZwdXNndzFTdkhoUFFWTlNrbnc2S2dJT0FBQUFBQUFBQUhhUmhkbWI1cDkzMVVaUVFlbzQzUGExWmIwT1JiYkJocUp1UGlWUXZGaVZuQ2JoQ1RnQUFBQUFBQUFBMkdGVHNlY3pqYW1UTm1tcjh1R0dmN3BUaCtMQllpMWNrQlRrZUo3alovY2x4OGwzK2N6N01kMFlBQUFBQUFBQUFBVFR1NnVocmNyVG9RMlErcmgyc3Y5SS9saFBSMzRBVyt6NTA1ajM3WEZtakhuWDA3NUxTYmRraXJiTmE0NVlUczVpTlFXMDUrR2FRdktPNVp5T2lvQURBQUFBQUFBQWdMK0t1amszeHJ6dU9TTFAycXI4T3ZSSWVWcmtQYW9OdTlxeW12UE9LbzFTNnNXTGwwRGRpejl1NU5vQ0FBQUFBQUFBQUxNaDBHQ21UUEo3OEVYbWRjZDYyL2Z6UmQwOE5obldiRWkrZUhGSWRvc01kUy8rSXVBQUFBQUFBQUFBWUp2ZXlmcUZsRkxYZUxDMktzODMvT3lmdjg4bTJFQkJYN2VLdXJGNXVJNVQra3dPRUhBQUFBQUFBQUFBTWlkenAvZHNtYXhmeXBTNnhyOTYvdTdQNjJRUmJDRFE0SmJVdmJoSTZUTTVSTUFCQUFBQUFBQUF5TnViV0Q3OWhIUktHejliOHNHR29tNStLbWhHTXFoN01RZ0JCd0FBQUFBQUFDQmZmYW5uUHlnOUdxUFM1TGRWMlp0NnlkWnRlT0NzU1FwSlRZRkhLWC9HQlZEM1loZ2JjTmh2cS9KM0RJMEZBQUFBQUFBQTROV3BweGQvdHVIdmo0d3g3d0tlMGxmSkJodW9LZUFlNmFoR0krQUFBQUFBQUFBQXdQaWFJMnlyOHV1R2Y3Si9meXBGb0tmVVp0aW02ZGtSY1pSa0dpVnFDcmhIb0dFeVVpb0JBQUFBQUFBQW1TanE1a2pUSjIycjhzV3VuNW5RNXI1VVNrK1RDelpRVThDOW9tNVltVDhQQVFjQUFBQUFBQUFnRDZxQ0RaNzA3cVpJY1djRE5RVWNrbXJrZThsOG9PVVFjQUFBQUFBQUFBRFMxemNIMktUMHFUZWxia29xMkVDcUg3ZWt3UGFvYXVUWWlvQURBQUFBQUFBQWtMYURuay8zTTRkem5reXdnVlEvYmxGZzJ4dDIzZ0FBQUFBQUFBRHA2bHRzL0gycFR6dHc4Yk9UdWZVa2dnMmsrbkdMQXR0K3NRTUhBQUFBQUFBQVNKYWFUREd5b0h6bjR1ZTJLcDBFUXg2NGVKRWxGWFZ6U3FvZmR5aXdIWVlOT0xSVldlVHdXUUVBQUFBQUFJRE05ZFk0Y0VIVHd1YW9kemJJQ3Z4M0NwcVNFdEw4Qk1JT0J3QUFBQUFBQUFDcGlEYll3QXA4OTVqOERvOWpEZ0FBQUFBQUFHQkJoNjdlT3VhZERhekFkNGhKNytWdzdBRUFBQUFBQUlDa0hTajljTGV1NmpXWVdHczJNRG5yVmxFM1RxcU5ZenA3RHRxcUhGSVpIZ0NBaldUbjU2b1QrMWorV0EvWE9yZFBGUnpGYTJQTVQvbnp0YTFLYnpsTWdaUkphdGxWUC9LbzgxRzdmMjhVZk85dmpUSGZPL21LK2Q0dnFLaWJJN2xlVnM4SDM5Zkh0Znd2NXg4SVJMN25xLzdnNnZzZXF1YnB2ZSs4TWVhM3l3bE5JRUlhNS8xK3RWWDVlTURQRFZhMGJWeno5akl4dnFlZ0taTm9Ld3BjMU0xM0NteXJjVXZBd1oraWJ1ek44OGZDelhqWlZ1V25oZHZnVmN6SHVhZ2JPK0g1eUUrVEpqdHJxL0pVV1p1Q0t1cm1xNUtKOFM0djUwVytQNDg3RTRTclNVTnRueitrejhhWTgxUW1wR1RRLzBWQlUvRFBkVnVWUjBzZEQ3a21UT2Y3bnZ2MzNnWWtMbzB4bjVpSW5xK29tMWZHbUZjUlhrL1hNakVaVlVDaXFKc1h4cGlQQ3BxQ2Z6NjNWZmtpNWVNaHo1RVg4bDJQZGE3c1ZyN3puK1QrdjlpQ1dDVmp3djBsajRFdnNpaHE2U3cxemlmV045a3dqcDA4anZTdzhQNlg3WGUyVmZsenpvdjB0U3VxWUVOUk4vYkc4MXhCVXliVEZHd282c1oyNUk4Vk5BWC9ORzFWYXQxV0ZUVkZPNktTN0Rpc3hIcWNsUWV5c3d4RXlrcGR0YldaeGo3UHBYUDlLZlBBZ1N0WHhwZzNNZDVMMloycmxwZjdyRXdBbmJPd3g0bnNnKys3eUVUM213eWVNL1laY0trdENLRmtFZzM5RmcwcXV5UUxVMDR6bThlNWx1LzhwZTgzMHJUSVNkdENaUmNVOVlPRHpMdHR1SjRtMzQ4R0hMK3pUdEJ1NTl5R3EydXNyMTNScEZHU1ZSbFJCeG8wa2VOSm9FR2YwZ2FCMnFwOGxmdUJjRWttTGJVNGxZRmdjanFyTXpWNEk4ZDZLTTNCaGoyN0N5M0RRS1RhUU1ORVRFQzRZL3N2eDBYZEdGa0o5eXFHWFdQUzk0Sk92dTcvN0dKeDUxMVJOKy9rMVJyNTNtZWRpa01tdDg4ekhOTjFud0Vyd1NZanQwaXlmNStJcUFOd1JkM1lhK3U5Z3FZc3haNi9wMFhkWEhUZS83TThCMXd2UEdGUlVCNUNMUUxwQ3paNHU4WTZpekllRGduc0ZIVnpPbmNoaC9SRjdvbWlRTFJNRkY0TStGRndQRk53TEx0TzRJNm1WZUhzWEFsamJPQkQrL2JxVWxZeVpZRjdJRWF3azhRZmJZZmFibnRYL2ozSjVqdE1uTG80QUFBZ0FFbEVRVlFNZFFINDFOaEpnbS95dmM4dTFaSjlSc29rd2cyTHgvNnlremNYY2sycy9wd0hiZ1BmZVRoakZ5aXNydVhNQXcyYjJJWElOM0tNU0VVTnJaYnNvNXdOK0psM0EzNW1sOTU1RlBYQkJybHhwTGE2Y1RFY3oyZ2Nzd0lTQ0NlUzFaRkwxOElJU2Z2a3lVc0ZiY0I5TnIvdUR4bDQ4Z3dGOHZDME03bWNiRURQTGhiclREd1NZQmptdFJ3ejBtOGhHblkzczN6UFdSdzZITHVIb2RLUzZmNkc3bGlRZE5KejlBVWJibVBZMlpEU2pXTmZRUnU0RWNmalFsbjZIeUIxVDdSL3ZoeFc3c1F3S1pCNm9mZEVYQkIwQUxMekk3V2dnOTBoSXhPUExCYWI3aDFqS21obSsvZDJ3aysrNjlUNG1jREJoQ21Rb2lGejBIc3pkK1AybFR2NHBEcllrRmdSdmNXTHdpWjJQSDhwYUVNSTM5Z1dDSVRSVnVWUHlmK3UyYzhNTGdjWDJ6bDlVaCtVd2gwWGJMRUhzbU9ERGxFL0wyWHlzYVh1aHpPaFV5b0JnOGk5NmtaeDdiaFljUHdRalZDTG9XUU8rdk9BSDNYZDE3aFVHMnl3MjhjVU5NT1ZKd1FhbkxLVjQrMktwYXVFUHRNMjdFWUJBbW1yVXZ1RTVGN0trNllSN0dxNGxhQVU0bk5ETFJBZ0s0OGswS2k5SnRNOVVvZUMvcjliRkgyRktyYlBLM00wanpnelFIYUNqWG5icWh6VUR5cnFadlRPL1UzekVqWjlsTXBnZ3d3R1U5aytkcmoweEVSaVc4cnNSTStmYmJCdFZkcG80TW55VGZJdnNXQVJvTjIxOHZhbEZJeGZwM3BYUXdUQktHeDN6UE1VeU03SFdCYXhkWFl6TURFT0pFem1aN1R2NUFYZ3hvZWVWd2tkWkR3YzhEUFBKeXhxM0xoclVGMndRVmFmcEZMMDZuRHBvcVBTdVU1bVM5bjZSRTlibFpjRHZ6alJZNElFQ0tPdHlqazVDME5JY2dWVUJMbjF0UWVoTUJCcGxZRHNsTnI3MFRJR1pqY0RrTEJWb1hkUy9nQlo2ZDNGRUxLK2xNeExEMGxGUDdZZjBqZDMveWN0dGFwZ2d3ejhQaXBvaWdzYUFnMHA3UkN4WDVCaXc5OS9WMUo4MnpzS0h3SEJuR2srMUxIbm90N2dRbVdyUkFSQktJeHpROEFCeUl2V2dFTlJOK2NKallFQjlKQkZOUlI2QnpLekphViswUGxpU1VXL1UxRTNid2IrM0tiWCsvUDcyblkycExLYVEwT2c0VlZDTzBRMkJobzYvLzU3MTg4a1lpK3hlaWFBU20xVmFxOGRrTlR1aGdoMk5mUnRmMFg4Q0RnQW1kRVdjSkRGWWE4Vk5BV0FKL0k5Vjcyb0JvQlhmYnNLbHRqaDlITEF6N3dmK0ZxOTg1S1NmVVpQc0NHaEZERWFBZzBIaVQzTUJ1OWF5Q1RnVU1vS0tBQitEWGtZTDBZS1NLWkMrNjZHUVNzOEVDWFNsZ0NaMFRMdVRHMXhHSUQ3Sk5EQTl4eklXKzhPK2REWkN0cXEvRFFrZzhPdUZFK3lXS3N2V0hLNytuOGVURzJrU3dtbGh0RVFhSGlZMlBhOHd5M2JqbnJaZ0lOY1V5bm5Rbnh0cThYYkt1OEsyZ0lreVQ2TWk3clIvTkdTS0NCWjFJMzI5RVFuQ3RvQWorekVZeWFMRlFBSXUxTzRyY3FEcFk1SGdvdkRBS3dwNnVhVVFBT0F0aXAvYnBoWGVHVG5jSWZPZWJvWXIwZ0doN2xaSERZdDF2bzdybDk4WjRPZE1FMWtVdmhrNlVDRFNHbUYzc3VweDFRS1NkOE8rTkdZZlNIOUErRGRFODJIT0pIZERWOFV0R0dqMVZaUXBJMFVoVUIyeW9WVCtKRzdIVWlZQkJUZmNZNEJpRTBMMktLYXc1VWdhcS91L08yaXdRYnA0RDFmc2cyT25HaVlqRWdvRlpWMUpsdDhKcE9BZytwbHlRNlEvZ0h3eUs1Q1VCNjRqSHAzUXdTN0dsUUhtK0JVS1JNREFQS3h5TTZDaEhiMUE5aU1nQ0tBdjdiTkdjZXk2RWtXTzI4S29qN3Ivc2Rpd1lhRXRvNFNhSER2czZ2aXJMSTkrck95eitkVVl1Y2VVRWNDbDJwSkx0aFlhZDdWY0N2Qkp1U0RpUUVnTTZFbi9pWElubktxVnlCN2pNOEJiUEJzdzkrWDJzZjBFbWpZdU5oNVBjWDdranNiVWhqUWFRazBwTFE2cG1tci83TjNiMWRTRzJ2RGdLVzlmQTlFQUVRZ2lBQ0lBSHpkRjBBRTRBaUFDSXdqZ0xuUXRTRUNRd1NnQ0R4RUFCT0I5aXBjWTQveEhQcWdWcjlWZXA2MTV2Zis5cjg5VXkxMXQ2UjZUOTJqS1g5aC9uMUhVLzdPYUdSSXdkNTlESHlJaSt3RlcwQlZ3NldEc2FoVDRjRTdZSFBYcmhxRU9MSFFyUU9CM2VRMjRRRC9rVGZrTCtxYThEanE5OGRWZ1lhbWFXNzgrRjhjSk5oUVNhVDNWWkJBdzRlS3NtTk85aldvYlZ4MVR5b2Y4bm5OQmduc3o3anFRbStNRi9yNWo3emhNcXc3cUl2cUdPUUl5L1BuSEsvNHdETWlnRDNMRzNJMXRBa0g5dVNLcmdrUG95VVN0LzN3L0lwQXd5L25QVGZQSG15b0pBUDdhS28yUDd0bysrRjE2ZjI2ejlwM3E1SWNIS281NFBDNGdFeGhLTmx2Z2RkZTFBYnB6Rm1rRzl0WDRKc3lDTjdEOHN4MEQxMURDMkhnWXVZcEF1djRUeVhBR1NtUmVJeVFvSkQzNzMrOTVIK1NFdlJlbi9mL01XdXdJUSs5S0QwTC95aG55UjlVZnVNOU8vUTZwakt1dW5hbXY1TTJFTzdPOHFJTzQ0K2NVUUZNYkZ4MXp5TWYwN1lmRGg0RTM4QXNXYVJicXJydEhtdFIzUURMczlkcU93UG9vVzZTL29CMTVVcUFxL1lsMytTZ3c2UnQ1dGZSOXNOeDdraDAyZjc5cFoxcFpnczI1TktMYnE2L3R5Y2Znd1FhYWhtdS9kMWNnWVl6Zis5ejVRRUhHUld3UDVHcm8xNEVXTU9WQ3FocTBPWUM3VTZBcVgxd1JLRnE1ckVBYTl0Z1gvTDNISFI0dDgvbjZMUm5uLzlPQ2pMY3ZPSi9QbHpWbVdhV1lFUGVITCtzOUtJRVE0U2UzVGxydlliaDJxY3VLeC9hbTlvRERnWkd3MzVFbU5Wem1SellqKzV6NFBYVjNHcVB6V2gzQWd1VForSHRTeTB6OW9BZlNGQUF0cEgzSmRmZEUwM3pZUDQ4RFFpa3RxL2JWbFNsUGZyVUZlRzBnaUVIR05iZHMvOXRuWmJEUDIyenNFMVVzamsrQk9yZlhGUFcrdDFERHVCTUgreTJIMjVVV2dud2ZXQzBERjNZaTl1QjJ3Q2xtNFJ6K3laR2tPOEp3bTY0UkE4bUFiQlhlNW1GZDRnV0NNQ3NKQ2dBVzhsN29tMU9lTmprUHVSeG50czY1NEcvc2U0ZTdoeVZEYVZ2NUY3YWgycE9PZHBVaTZjNWluZFErWU55a09xS0dUeldIeGFtTjY2NjQzUnRpSHBvZzJkWEhRZFl3MFZxYnEvSEZ0cCtDQnU0QS9aalR5MEtTcHFwQkd3Z2VudFFvQXk1azA3VXZjbFhxZjM5SnNuaWV3MDIxTEE1ZmxVZnFybFUxaGJuS0ZMMmFPVUJoNXBhYmtFa2tSOHNRbVpYQmE5cU9Ja1FBQ2VjWjA0SkxNNCtnb3lsenkwRUx1YitFWmhFMnB2TU0yM1QvdVNYQUVmMWx4eGsyRGhwWW0vQmhyWWZpdi9Tblh0dzhVVlNINjJLK253T0VWdjcxQnh3cUt3aUJrTEkzeG16MWl4dVl0ditqWHNXdWFwQlZob0FUZTZKVEgwK09xZnNpWGtzd0tSeTBPRlczcE9lZTZiZ1VRNHdwSit0RXpEMkVteElneVpLeitBSUZHajRzTVlrOEZLRWFVbDFuc29ERHZzY2VBZUxGUG43ckdtYVB3S3M0VWRSSDhhK0hISitFTEVGRGR3QmhkRFNOQXd6bVppY2RvdkF2cVd1TUdjMi85TSs5UzhUQjlDUG1xWjVjT1p2VEpJY1B2bUE2SHhEOVdMcTN6dW5RSUdHMS9zYVZIWUlVVnBTWFNadE9GVTZOUHBlK214cUV3S1RPOHJEbWNKSm02VGpxZ3NSYU13VmVpR2xySkdvYXlPRWxFQWo0QUFMa2dZNmo2dnUzVVN2MkhEb3d6dUoxTUtYcW1pM0dNZlIwZzhBeTVDckRTNE1kRjZRS0hXYzUwN09adkpnUXdVOTRrTmt0dWNCbjlWY3ZLSUVjTlpSY2NBaGZUYUxPUTlRZ2hUNWIvc2haTEFoVnpkRStjeEhyZEJiNm9QSmd6Mys3dnRuL25tbmd2WUMxU1I5Y0ttNVM5VG5kclRuek82em4vc2FQalBQbTZhWkt0aFFXckR5UzM3dG40TzNQMXpIN0pzcmhIWFhxYmxTeXBUK2tELzNSWDF1b2lSWFFRUlJQZytUQmhzcTZBMS9OMElyaFZ3ZEVuTEE1elpLQ2pTY3FqWGdrQWFObDFCaEFvVjVHbmdvODYxRFAyZ0hyMm9JTjBOb0RudStDYjN3ZDZkczRWd3BZRmpxNFgyODdGd3R5UEZDTXA2UEQvaTVmNUl6OEVvS1BFNFpNQ2toK1BMTExuMlpDZW1vZ21EUkZENVBXS1gwTDdsMWVLbDg1b0c5bWl6WVVNRkE2S2NSV3N5MC9YQzlndXFRczRxZGdWQnB3T0ZhdWpIYVpwbzhjTDYwVWRYMlE5UUE4WjhCcWh1aVZqWDhFbUFOaTVJZitMOC85T2NTMzRpelJaYmlnM3NCNXBDRE9kOERPam53VUUxQ1ZRViszdGRHTEFmM1ZyYjMzcFhXT3Z5cGRtTEFYQ1laRU4zMncvUENzOVNPQW4zeDFyU3hIYUpTWkJlVkRvMStrWU5hd0hUQ2xtZW42b1lEL3Uyd0Q3b3l1ZzRyYllMa3lzZDl0blNhaENIUk1JM1RJWWROMDd4eVNBOHJENEVVYUlENlBjMmZkNEVHWURZN0J4dnlwdVd2QloreUlVb2JoUXJhVUowVm9sSmtDam5nVUZ1Zng5cm1VY0JCNWUrN2s2Qm40WkRmeFZIYlI0VGY0RjZLTTBHSHlBeDRoUW5scXByUXlUeTVyVzJWU214eEM1RVU4djF3SXNnQUhNb1VsUTBsYjFxbUwrQVFGNHJVU3ovQU1xYnlXMjBYdGJ5UldGWEFvZTBIMlV3d3JZTlZFRnpoMmlHcW1ZSlhOV2d0RUV6d3pTL0JCcGhZU3VieHVUK0lueXQ5WFRDbjZHMEkzNXZUQ0J6U1RzR0cwdWMwUlBrQ3pzZXhwS0ZwbDBrWHR1ZHhsN2U5SEhDbzZRYjlvWFpLTUoxY0JmVWw2Q0U5eEpEQXFGVU50YlhHcTBiZ2pjZW9jMGVnQmxHVGVhcHNuNloxRWt6aVllRERtUFpqSkVrQUI3VjFzS0h0aDBjbHoybUk4a0Niczh0TG5uZHgxbEQ3aFMzZm9EOE5zSlNwYUtjRUV4cFhuZXFHdjY1dFVhdmJ2cFErUzJnQkRPNkdCY25KUEJFRDlWRUQ1cnQ0WCs3U2dUV2NDRFFBRWV4UzJmQjd3V2N3UkFaTjJ3OHZnMGZGTnhHbUpkVys1UlpSUjdXOG5zQ2JnbENxcU44UGMxWWpQcDd4YjYwdGNEQ0l6T0J1V0I3ZnpiUHgvUW9WMHpvSmlHS3JZRVBoZzR4ZlJSaGNuQ3REWGh4NkhWTloyb1V0RHhVZkFpeGxDbysxVTRMcDVPK0hpR1pwQlJNNGdGbE5rSGdCZmx2NkFZQUZPbkhTOTh1OEl0aGQydzlSNy9NZkJGZ0R3SGNiQnh0eU5uNnBVcHVmZzYrLzdZYzdoVmVHL0V2dzRXNTdreXM1b3ZabjM1UjJTakN0a08zVzJuNllZM1pEMUtxR3FBK0gvS0RXMlUvQXBYeEhBeVVJK1YwbG1BaEVzazFsUTdIWitCSGEvT1FNOGsrSFhzZUVGajFvczZheTc4QlpHbENjM0c0dG9yMVdOd1JPU0hnVllBMEFYTURnWXFBUUVlZTVxR29BUXRrbzJGQnkrNlJBMmZjMVpaRGZNR2l6cXNxT053SFdBRFVKZWVQZjlzTStNNTlDSmlSRXFHcGtZNkVxQjl0K3VCOWdHUUFBLzZLcUFZaG03V0JEMnc4bGw3U0hHQWhkbWJzQ0RmK29KZUN3NTAxSVdKVEFOLzU3eWNnS1hOVWcyNnRNVWF1RGdQMHh0MkdQekdpREtwbHpCWVN6U1dYRHI0V2V2cU1JQTZFcjh6VFNNYzB6TUNLNEhXUWR1NGhZRmdvbEM5bHFiaytCeGFoVkRZS29aWExlWUhtMFV0b3ZGVnBRR1hPdWdJaldDamJNTkZCeUgwNE1oSnpjVWFSZTVIbk93S01BUzBrWCt1T29RMkUzMGZhRGloV1lTSzRBaXpoSWZ0TEFZdUNaTDR1ZUsxU3lnRUVpbTNTd2Z4TEU5c3VtSk95ZzdZY1ErdzRBMFYwWmJNamxsbnNkS0xrdjQ2cFRLanF0SVZMd0psYzBoSm96a0FNeEh3TXNaUmZYbEZuRGRLSU9rbS83WWNyQWNjU1pMMSswK3dNb2ltRERmcWxnaHQxRUN6YThEN0FHZ1A5WXA3S2gxSUhHNWpSTUsxV0pSR2xYbERiSjB1YmRwd0JMK1k5eDFkMnZvT2RzVFlQTUlZS2pnR2ZoOFJTL0pHcFZROVFnRHdBWEVtellNOFB1WVNmUlBqK3ZBNndCNEQ4dURUWVVmRFB5MFp5R2FVV3FFc2xaOTM4R1dNcUZhcWlxeVFFZFlBSlJXL3BOVk4wUXNhcWg5QW96Z01WUmpUYUxQeGJ3R21GZlFuWDhNSmNNaU9xcXlvWWliMFp5WmpuVEhjODIyTEVzSmV1KzlGN2hvUU02VUtCZkFpNTVwK3FHcUwxcjNRY0F3UG5hZnBDVUJ3RHN6WVhCaHNEREhxOWlHT1NFb2dVYTJuNFlBeXhqTFRrNzYxVUJTNzJRMlEwd25YSFZoU3gxYnZ2aDVRNy8rdThUTG1VcVJYL3ZBbENWTHdGZlREZngzQ1lBZ0w5ZFZ0a1FzUzNDVmQ0cnY1MVVxTUJOMncvRm5kdHgxYjBzZkg2RHpDZVkxb09BeC9QRk52OVMxRmFMK1hzWEFDS0llaS85V0lVREZNMXdhQ0NzYzRNTlVkc2lYR1ZjZFVXdU82aTdrUUkzT2RCd0xjQlNObGI0L0laUWZTbWhkRkY3cTI1WnpSaXgxV0xFWUE0QXl4VjVRejlWT0l4dFA5d0pzQlpnTSs4Y0x5Q3FpeW9iSXJaRnVNcnQyTXNyeXROSUE3WnoxazJSZ1lZejdvWlp5WWFVV2NQa0lyYjcyNmlhTVhCVmcwRjVBRVJTd29iZ3B4eDB1QlZnTGNCNkJCdUFzUDRUYkNqMEptTVlWOTF4Z0hYVTRHaGNkV0UybC9OR2R4ZGdLVHZKd1p1UGhTNS9wd0d5d0wvbHFyRndQWnczckc2SVdOVmdaaFA3SkpBRmV4WTFrTDJMU0FsY2EvZ3pCeDFDenBpQ1E0cjIvYVI5T0JEWmVaVU54ZlZ1SEZlZDBzOXBmQnhYWFpqQjRIbmpxNXFON25IVkZmc0FKZE1KcGpXdXVvaWZxYldxRzRKK0gzengwQVZRUFBlYk1UekxRWWV4MVBiS3NBZStud0RXZEY2d29iUjJOYThDcktFR1h5SnRodWZlb1NVT0tiOUtxZTJVbEduQzlNSU5kbHN6YSt2UEdaYXlrYURCRzNaUVk0WXpjQ1VKWlBIOG5vTU9ueVVmc1hEZS93QnIrbGV3b2UySDU2VWR1SEhWdlF5d2pOS2RSTnFvYWZzaERWVCtGR0Fwazh1bDFPSGFwNnloK0ZaV0VNMjQ2aUptQzE3YUhpbm9Sa09wTGVxNFhMUjJCZG9vd2Y3Vm1rVmZ3M1dxTzlObXlUdzNsa2l3QVdCTlAxWTIvRnJZZ1hzUVlBM0ZHMWZkOVdDdjRXdUFOZXhOcVJtNE9RZ0VUQ3RjZGQ0VkdlWGhXaTJXM0tLT1MybmRBY3R6czlKWFhOc01oTWRuMml5RmFjRUxleWJZQUxDbTg5b29GVU9XMmU3R1ZkZEdXays2YVEyd2pEa2NGYmhtVlVRd3NhRFZlZWRXTitTQVk3UldpMW9wMWt0RkhWQ0ZjZFhWM0k3MFRRNDZIT2MydUFEQXd2MTArdklMYktHa3FtRjNOeUl0WmtHQmh2VFE4YVR0aDlLR1h6OXJtcWE0Vm1zQjNWdlNlNTIxUExpcWZkSGNVcnVrY2RVZC8vQm5mL3kvRDA0clJkamFyYVhOeFpDa0ZKdEJ4TVZMVlNtZjJuNUlyK045MEZhUlMzSW5uNHZGbU9FNy9sNmdZNm1GS0JEYVQyY1dWMVFMSlE4TU83czlycnB2VVJiVDlrT1l0Y3dvWmVTK1dNeXJCYzZWcm1jQkh3alRFT2kvSzkrQ1ZqVklPcWhVMncrMXRSeUo2SEgrV1l6VDc5bG9WYjM4cmZZNUFFY0wrc3c5UEpOWTgwcGl3RUdVMWg1N1ovazcvaVJnaTJpQXhTbTFqZExUQUdzbzJkMXpNbFlQcHUySHp3RTNzZmJPalRkd1JxaEtzK2EvdzZBalZqVklPcWpYczZVZkFQWkhqL213b2owTFRKMDV2TlRxNEJlNXpkSTMxU3ZNNE5vUDk2KzFjZzhNaFBZOTJGRGFGL0s0Nm1yUGZObW5wK09xQ3pQZ3MrMkhkd3Z2eTF6aTdBWmdZcm5TN0V1dzQzcjJXaEZ0RStoMmdEV3dCMEdyR3BiVmk2SitobndHRTdUQ2VkTE52RWdWNVFlUzdpTit6NEdIejdsaUV2WkJRQm5nd0U0ckcwckt0UERBdDcyalNJR2F2S0h3TU1CU0RpYk5iaWhwdlV2cjd3eHpHbGRkdEEyd2xCMTJQUTE5RExDV3MwNGlWZWN4bmJ6NUZMR3FvZWJocm5CUXVkSWtZb1h6UGo3M3IvYndPMHVVRXMyKzVzQ0RKRUlBcU14cHNLR2tjbldibmRzWkltMXM1d2NMYlJJQS9pM2F3TGZqUFBReERMMTQ2NVFERFYrRHZqanRDbUFQMm42NDB6VE5tNGpIZGgrVjRGcW9udXR4RGpxTVdwekIydHlYQUtFVk43TkJDZXBXVWhib25TaUxpZnhnY1NDL0xQSlZBLzh4cnJwb0FmWGFlMmdUUUs2YWl4cG9NQjhFOWlCWE9IOWE0TEYxSGJ2WW14eDBPRjVJMzMwQXFGSnB3UVl0bExZUUtRczBaeTR1OGNIaVF1T3FpOWlmR2pnY2JSWXVFREFZd3c1eW02NlVSUEtINHdqTGtJS0xhVU41cVJYT3JtTnJTUldWZitiQWcrY2tBQ2pNVDRXdHQ2VFpFaUdNcTY0TnRxU3dtWXNBRWFRMkMyMC92SEF5L2tNUXBnSTU2ZUNsVm9xd0hEbEx2YVJaYmUvMy9QdVBVdnVnUGYrTldqeHIreUZkTDc0MFRYTkhsd01BaU8rbmtnYStLbVBmVExSQVE4NWlBdUJxRDJSNy81dGUxMlhKOTVkMzhzLzlhTE0vTnZCYk1TdUZBOG9CaFZ2NTg1NSs3aFY4UHZhYVRaL202TFg5SU5pd21adDVxSFQ2bDI2UHErNjRvTFVEd0tMOFpPQnl0VzVFZW1FQ0RkV1lmRmdlOEY4cHVKNGZxUG5MejQ3RGRGeVROeUxJUlExZXFKaGIzMHdKYnJkVHE2QVovazZOL3N6M1NEZFVPZ0JBUFA4VGJLalMzVWczWHJrZk14VndRdyt6dXUxdy8yVmNkZThpcklQbGNkMEQ5aUZuNWg4NXVEdjU2amtUQU9MNVgrRWxydnpYMDNIVmhjaytiL3NocmVWYWdLV0VsZnRYQS94TDNvZzRjVlFFWFRpWUx3NDlMTTVzcmROU095WFgrWjFkTTBpYXBkRmVISWp1ZndXZG9ZOEIxaERkMGJqcTNrWlpZOXNQYVMxZGdLVkVaL0E1Y0s1eDFTMDlHSG1pTHpNSDlNakJoMlVaVjkyczkrV3U4NU41cGtVZ0FNUlFVckNCeXcwNU95YUV0aC9TamJyQlordlJReGU0ekdLRDdUWmhPS1JJbGFKQXZjWlYxenE5MDhoVkRtR2VpUUZnaVVvS05tajNkTEV2NDZxN0UyVXhiVCtrT1NDL0JsZ0tRUEhHVmJmVTJVb3FHamtrN3o5WW5xZUhlc1U1NEtDbDBqVGV0UDFnMWhNQUhJaktodktsRmhPM29yeUt0aDlTME9PUEFFc3Bnc3diWUUydmxuYWdGaHhrSVFEdlAxaWVRN2VqemRWOEFwM1RlSmhuQndJQU14TnNLRnlrRmhONTBQR25BRXNweVp1QzFub1VZQTJ3U09PcWU3bXcxejNiZ0U0NGg4SFFzRHdoN25Oem9QTkJnS1hVb0JOd29FYTVrd1JBV0VVRkc5cCtNS2p2aklEOVBiOEdXRU14Y25DbUpHR0dqOE5DL2J5VWx6MzNnRTc0NGYwWHBtSVVtRWVrMlhmanF2dVFuL01FUG5jbjRBQUFNeXV0c3NGbTV6OXVSRmxJazRkeEJWaEdhWTVMV205NjhBbXdERmlzY2RVdHBmL3d3WHBtZ3hZbXNFZ2hXeFhtd09mdEFFc3BYUW80U0dJQWdKbVVGbXk0Rm1BTkVkd2RWOTIzS0lzUmFOaGNybXJ3ZmdZMlZmMm13NkY3WnJOc1pqWEE4a1J1VlRpdXV1TmM1YUMxMG01K0xiQ3FIQUNLVk56TWhyWWZscjRKOFdCY2RXRktRZHQrQ0JQMEtFeFJWUTFBREduVG9XbWFrNHBQaHd4T0R1bXVvdytMRTZwYS9DSm5XaXZkcnZ3K1lKKzAvQVdBR2Z5dndLR3Zqd09zNFZCK2lkVEtKdmUvbEoyL29UelFxYlRqRnJLOEhKWm9YSFcxWnVhZDVHQUtITUw3U01rY3dDeCtpVlF0dm81YzZYQTlCeDVLZTQ0L3VMWWZYaS84RUFEQTN2MnZ4RGtJYlQrRUxYWGRvNk54MVlXNU9jb1ZKbDJBcFpUb2o5TFdITG04SEJhcXhyN3lodkp5S0NuUTljalJoMFVaSWoxYmJTTU50YzVCaDFTZE1aVDNDZzdpMlFKZk0vWFJFZ3dJN1grRkRuMTlFV0FOYzBvM3cwK2lMS2J0aHljTHJ6RFpXdHNQU3hud0N1eFJoWDNsaDlLeVM2bEh4ZFZDd1BuU05lZE9MY2NtWFQvVDY4bUJoN3ZhTEYydTdZY1M5ei9nckdxK3Y0QTZGVGV6NGRTQ2JoSk9JdDBNdC8yUTF2SW13RktLazRlU1BTeHc2VEtsSUtacTJwdlZ0T2xEVVU3eTVoeXdIRlVGR242VTJzR2RhYlAwTk5icXdyaTM5QU1BeEpmMzNxcVIyNGxIOGNWSFlMOU9ndzBsdG1OWXhFMUNwR3k3dkZuK0tjQlNTbFhxVURLdEpTQ2dpdHFiNlRuTklRd3FHbUJ4anBZVTNCNVgzZHNVZE1pQmg5OENMQ21NaGJabHBoN3VYL1luMHQ2bzg3dy81Z1R1Mldtd0lVeUxuazIwL1RDV3M5ck5CY3kySzNXei9PQkticDlrWUN1RVZueldZcVEyZ1N6R0w2cHBZSEh1THZsNk02NjY1MmZtTzlRNDkybFRTMnZMdkNSTDZJRGhIZ1lJN1h1d29lVE54RHcvb0RyUkFnMjFCM2IyS1plL2xkZytxWkZ4RExHbHJNWENUNUVXRDh6cEpHZjVGajBVbHQxVVZCWEdlcjdrei8xbngrdnYrUTczelhlZ1ZvWE9KSVh6MURhanI3Ylh3eVhPem13b05jT2h4dmtCTndLczRXOENEVHNydHZXVWpHTW93dTFTVDFNRndSTEs4VURicE1WN2IwYkg0dHdlVjkydHBSK0VpeXg5dmtQYkQrNUI2ckx2Ny9oSSsyWG1qdXlQWU5VeU9NOTc5dE9aWC8rbzFEWTViVDk4cStnQk1wWDRmZ3V3anUvU3NRMndqR0lWZnZ4a091MUhHa1pVNjhOTmVxQi9IR0FkaTVLcUU5dCtTSi9YYTRXOTdyc0Ixa0Q5bmdwcW5ldVZESDhxZGxzYjBNM2s3OG52MzVWdFA2VHFyMmNGTFg5YmowdHRKNzJHQnpMOG9YZ3FHeWpXMzhHR3RNSGQ5a09wcitOYTJ3L1BLeWlMZnhxcHhMZnRoK01DTjYvQ3lOa3lKUjgvdlNEMzQ3aldEWjYySCs0TE5oeEdDcmdYVm9WMm9xVUZlNVNDdXZkdE5zS2lwS3ptUjA3NTd0SjhoNlpwbnJmOWtKTDUzc21paHU4Kyt5d3NRcVJrMGRyMll5SzlIczhJZS9hL0gzNTl5ZVdUditZYm9sSWRSY3E4YS9zaFpVTGNETENVSXVVNURVVnZ1dHFrZ2VLVTFBNVJXd3VtbGdJTVArZmU3TGRjdzJBUjNxZjJzL2x6TDlBd3NTWE1kOGpQYkxBT0hSK1dJVkl5VkcySnY1RmVqK2VFUFR2YlJ1bDcrV1RiRHlYUFFFaHRvRXJzeFRwRTZvMmZNL0pGN1hkVDdKeUc3RUdJVlFCclN4c0NoVlEzZkluVUxwQmlwVTJ2MTFvQndhS2tvR0txWm4vbnRNOHJWeU4rVCt4cisrRkpSWE1UbjFmY1NvbHBxY2dGV05PUGxRM0pxNUlQWHRzUHBWMEVVaXVKTUJrVitlWlJHNVFkMURCUVc0OVBLTlp2MFJkdVdDZGJTRlU3djV6SllHN3pVRk9CQmxpV213SU5oNWNTRkUrL2kwdTQ3N2lDNTE3V0pWRm1BZXlETElQenZILy9DVFpVOE9EV3Bma05BZGF4bGtpRHJYTVphUzFaS2dkUnlVQnRWUTFRcU54bk9iSWo3eTJ5ai9ublZmNTVrSWU2dHVmOHBEWWVyMVhFQUFVbWxsVXQzWGZrb01PTlZLMi85T05CdmFKdFRyYjlJSGtIQ091bkN4WjJWSGlVUDgxdmVCdjlvVFRmbUlXUTUxMlUzdnJub1BMRFQvRjk5VVI1b1hoUG93YU9JN1VNWExKSTl4L0FMRjV0bWxBV3VGSTNKWmFaeXhKTWZ1NytYcTFmV1pzbGlPcCswelJoWm40Q25IVmVHNlZhTmdPK0JsakRoUUkrNkljK1h0RzEvWkFlNExvS1hzcnRBR3NBZHBEYUd3UTlmcjhFV0FNQTY0bmNXdmZQQUd2Z0FxZHRsbkx5QTdBZkVuZ1dvTzJIUnpXOHlscGVCK3M3TjlpUUZUMjdvWW1ka1hNandCcitWc09NZ1VQSzdhZGVWUEJTVG1TSlFUWENCUTVURzV3QXl3QmdEZEZiNjZZcTlnREw0QkpuZ2c3dkhTZVkzRDJIZEJGcUNTb0pqaTNNaGNHR1dvYnVCZXpyZVRkU2V5ZUJodDNVMUg0cTB2d1FZRGNCQTRkbXdRQ1VKMVNDMUE4TTlpM0V1T3BTUnV2ZHFLdHQrK0YrZ0dVQW5PZGhKVWVsbHRmQm1pNnJiR2dxMlJ6b0ltVytqS3N1VFBDamttSEdoMVpMK3lsRFc0RzlNUXNHb0R3NVFlcGoxSVZMbWlwSGZnYU9HcndTYkFDQUNWMGFiS2hvYytCeEhsUkZWc3N3NDBPcTZRSEgwRllBQUg0MHJyclFHN0dlOGNxUmcxZm1PRkN5SWRMYVZlWHNUZGdnTzVOd2ZtZHdWV1ZERTd4OGRoTnZjbS85eGN1VkhqVU1NLzd1RUMyL0tzdWtNaFFhQUlDTGhHMkJrNTd4QXF5Qk5hVTVEZ0dQbFExYjFoVXRHYmVLMXVjQmhXckZYdnB3NVlEcmo5WnF2MHBYQmh1aWw4OXU2RlB1c2I5WWJUKzhyS25IYVI0Nk5xdksyazhOaGtJREFIQ1IzQUxuUzlRRDFQYURlOW15bU9ORXFkNEZXN2NoMGZzUkxhajBPc0FhZGhGdC9kcjd6bUNkeW9idzViTWJxcVhIL3NaeVJQRkZZY3UrMElFQ0RWVzFueHBYbldvZkFBQXVOYTY2VzRHUDBFMFY3T1V3eDRsU2VlOHVSclR6ZkRQQUduWVJiZjAreHpOWUs5aVFWWk9Cc01SaFl2a0cvUGNBUzVuSzdPMjljcUNobXZaVDJpY0JBTENCeVAzMlB3VllBOENzY290c0pwUzd1NFRTOWtQa2dQK0ZJcTQ3NHZtdDBkckJoaHpGRFZzK3U2a2xCUnh5NjZpYWJzRHZ6djBGVWR1Y2k2WnAzbXVmQkFEQXVuSy8vWk9vQjZ6dGgyZ3RUZ0QyclpvVzJWeXExR3g4VlFRTHRVbGxRL1R5MmZ2dERrY0FBQ0FBU1VSQlZJMVYxbnYvTWpXMWpucWErOGJPcHJZNUY4MWZuK1dpaHd3QkFEQy9jZFZGbm4vM2NPbnorUXBTeTB4SU9EaHQ1QmFoMUZaS3BiZUFZa3NiQlJ1eW1nWTZYYXQ5b0ZobEZSeS81WXlxMmJUOThLU21PUmZOZ1daZEFBQlFqZDhDdjVERnp1Y0RaaEV4VUthTjNBS1UxaklyNkhyRFZtZldadU5nUTIzdGxQSkFzVmt6NWVkU1dhQWh0ZjE1UHVjZnpCa0NiK2I4bXpPSTNHc1hBSURnNXI0bjMxVGJENkhYQnhUdGRjVEZ0LzF3UDhBeWFoSXhxRjVhdDQySTZ6WGpaQ2JiVkRaVTEwNHA5ZUt2TGVCUVdZdW9ZZTYyUHpuUVVGdUd3REIzWlFnQUFGVzZFZmhGL1JwZ0RWeE8yeGVLTks2NnFMTmgvZ2l3aHBxRVBNK2xkR1lKdkw5cXR0Tk10Z28yWkhjTGU2MVg2V3FaNUo4LzJOY0NMR1VLSitPcW0vVm10TUtCMnQvTmZSd0JBS2pUdU9xK1JlNjd2NkRaZktXcTVWa1Z3cWk5UmZpY2NrZVhpRzVHcjJMSmlidGRnS1g4UitEeldwMnRndzE1U0c5dGc1MGVseDV3eU9zUCtjSGV4dHhENkhLZ29icGVyK1kwQUFBd3BYSFZSZDd3dUthdENMQXdOMnRKb09WU2YrUjlxNmpNRUdHbnlvYm9ONWpiS2piZ2tJY1psOWJIN1VJSDJpQ3ZjYWhjVFVQZEFRQ0lJM0sxdTdZaUFRa0NVWUdqd0MraCtBUmExaEp5MzZxeXViSHNZS2RnUTFOdnhuUnhYOUFWRGpPZXZROXNwVitNUjByRkFBRFloMXp0L2lYcXdXMzd3WDF3UElKQWxPNWw4UFUvcm0wbTZZRkVIQkw5dDdSL2xmY0JJNnpsZWdIN2FhSFBaMjEyRGpaa1R5czhOc1VFSE5wK3VGVlpxZEtOM0FkMk5wVUdHdEs4aXljQjFnRUFRS1hHVlhjcjhDdTdGN3pkeEtJRTNRQVZrR0lqNDZvcllUWkNsemVqSTM4L1IvZTZnRFYrYXZ2aG9FT1A4NzVwQ1IxQ1NqaWYxWmdrMkRDdXV2VG1HaW84UHVFRER2bm0rYzhBUzVuS1hZR0dhY3c5N3dJQWdNWDZKZkFMcjdGTmFuSHkwTzZJc3dVRkc2alpuK216Sitpd3VVS0NTc25ESEZpYXRlSW10WEhQZTJsRnRISXY2SHhXWWFyS2huVGlRcFR2N0VIMGdFTk5OODlQY3luMmJQSk5iM1VNaEFZQVlDN2pxZ3VkTVRqM0pnei9Pdlp2ODRiVXRhQ0hSYnNadGhFNXdQcWphem5vTU9iUG82VEVPcjNJNS9oNFg3TnhVdHVtL1B2SHl0cTRNN0dmcHZ4MWFZT3owaXp4RkhDNEZXMGdkbVhIK2loWHlNd21CeHFpM3ZUdUl2S2dQZ0RnOE5JRDZRdm40UytTTktZUi9GbndSUUY5MW91WE56RWZOVTJUV3JuZUsrSDF6RjFWUDVNLzJyN0d4aE5iT2RsSHhYOEtzTGI5OE9zOEwyRlNqL1ArMXVudi9KaXJlOUxQNTBvL0Q3dDRsYThmSmJuNXczZkFTZE0wYi9NNVBsNG53VGRYd3FTZisvbjcvR1poeCtCSHIySXRwMzZUQmh1eW41dW0rYjNDSTVmNmZYNk9Vc0ZSV1ViK01QZHNnZHd2dE1aQXcrelZJUUFBSlVzYjVBSU9rMGtER0o5RlhGaDZmcHF6eldqZWVOZkNDUTdyV3NyRURqNWI1cER1NVovdkcrb0ZCNm51N21NZlpGeDFMeXRJenJpV3I4dmZyODFMREVTbTh4aGdHWXN5V1J1bFUrT3FTOE5KM2xkNkVMc0lRNjBxeThnL21UdUFrOXRpUmV3WHVxdjNjMWVIQUFEQXFYSFZQUTk4TUs3dHE3WEVCUVFhSUlaOVpXV1gxRXFwZHArV2ZnQWdrc21ERGMxZk41bVBjcWxPalE0YWNLZ3RJMy91SWNhNVgyc1JBMncyZEpJL2R3QUFjRWczQWgvOVB3S3NnVGhxVFpKa0J0Rm4xVENaSTRleWFNN2ZBZXdsMk5BY1lCTjVadDBoMmhqVmxwRS9kN2w2bXBaZllMKzl0VlQrZVFNQW9CQzU1L2ZIcUt0dCsrSERESDhqMUt3L0xoUzVFb2N5MUpwa1N6WjN5MittNWZ3ZHh0NkNEVm5rckpaZFhac3o0SkEzeXF2SnlEOUFvT0ZPcmRQeTlSZ0dBQ0NTY2RWRjNteS9sK2Nwc0hEanFqdGUrakZnWnlGbWVnSkVzdGRnUTg1cStibmlNNTRDRHVPKy8waUZHK1dIQ0VMVjJzT3Y1b0FlQUFEbGVoQjQ1ZVlwSUNPZG5RbFlMVWJOKzVvMWU3cjBBM0FvKzY1c09CMFlYWFdQckgwR0hITFdUVTBiNVhkekVHbzJjd1NFRHVUcDNNY1NBQURXTWE2NjFLN29TOVNEMWZhRGZ1dkxadDRkVTdHaFdibThyMGxoeGxYMzFqazdqTDBIRzVwL2VtUlZuVG13eHczdG1ySnUwdWI0ck1PMUR6RmJZeVpIdmpnQkFJaHNYSFczQWkvdldZQTFjQ0E1R0FZNzgxeStHSytXZmdBSzQzd2QwQ3pCaG1ZaEEyeFR3R0hLL3ArVlplVFB2am1laDc5ZG0vTnZ6dVRFa0JzQUFBcnhTOVJsVnB5WXhPV3E3cnpBUVVSdUc4Y0V4bFgzMG5Fc2gvTjFXTE1GRzVybERMTDltbWNzN0tTeVFNTXc5K1o0MncrcExQYmVuSDl6TGtzSTNBRUFVSWR4MVVWdVYzUXRQemV3SUJLM21KcEttY1dRTFY4RzUrbkFaZzAyWkVzWWFQdXA3WWY3Mi83TGxXWFlmQmxYM2M3Qmx5Mzhmb0MvdVhjTENkZ0JBRkNSNFBld1ZUNDNjQ0ZWRGV6TEV2YTZGazIyZkJtY3A4T2JQZGlRQjlyZURYZ3NwdlpIMnc4YloweTAvZkM1b3RZL0o0Zm8wMXJ4UUdnM0x3QUFsT3EzcU92T3oyQXNnS29HOWlYdmRiMTNnS3VuWlZac3prOEFoNmhzYVBLUTRDV1V0YnhwKzJIdE9RVnRQNlFKOTkxK2x6U2ZRN1Q3eWNld1JnL3l6UXNBQUJSblhIWFBBNis1YS9zaDhqQnJwckdFcEVjT2FGeDEyckpWTHJmTStyTDA0eERVaVpabU1Sd2syTkQ4VTlieU1kangySWZINjJUS3RQMlFlcGsrTFBJVm51TVFwZEo1T0hjMXgvQ01JMStZQUFCVTRIYmdsL0JuZ0RXd1AwTk9lb1I5MDVHZ2NvZm80TUhWekRlTjQyREJodWF2TjBLYWEzQVM3SmpzUTNmWkhJYmNidWxaMGEvdzN3NTFjZjE2b0wrN1Q3TVAxd1lBZ0gwWVY5MXg1SVN6VGFyU0tjdUI1Z2l5UUxramdWWXU5WXNjUEY4aWxXdUJIRFRZMEN3cjhuVHR2RmtDYlQra201NDNoMW5TWHR3OVJMdWZYUVp5UithbUdBQ0FtdVNFczZnZWU3UFZKL2lBY2lxVU94TVlSbDZ4SER6L1plbkhJWWhYS3RkaU9YaXdvVm5ZeGY5c3dDRzMvZmwwMkJWTjZzRUJQK0IvSE9qdjdvMmJZZ0FBS2hVMjYvZThCREdLcHFVTkI1RTdGQmdZWGJGeDFiMWVTSHY0eUliY3BwOUFRZ1FibWdVR0hIS2dvYWEyUDcrWUt6QXBOOFVBQUZRcFB6ZUViYWViMjl4U3ZodUhxTHFIVTNsZ3RJQkR4WEsxM3JEMDQzQWdnMjRnTVlVSk5tUkwybUN0S2RCd2xDTzZCOUgyUTIxUnpJTzBvZ0lBZ0xrRWI2ZGJVNXZiUlVySmpKNnBpQ0FISExSVXFsamU4Qlp3bUpkQVEyQ2hnZzM1WnNCUWo3SkVHR0JjMDd3R3ZlWUFBRmlLc1AydTIzNDREckFNTm5laUhTM1I1RDBUUTZNcmxqZStmMXY2Y1pqSmtVQkRiTkVxRzVxODBlcEx1QXduUHVDVDBtc09BSURGT0dSMTlCcHV0djNnV2Fjc3I0Slh6TEJncVgyY1FGamR4bFgzWEFMMTN0ME5rUERNRmNJRkc1cC9lbmcrRGJBVUx1RkdibElDTndBQUxFN3d6YmRQQWRiQWVtNUkzS0lFK1R2UEhJZEtwUVRxZkk3RHppVXExRWx1ajZjVFNBRkNCaHVhdno2Z2IvVzFpMHRFZmxvQ053QUFMRmpZMWhOdFA3emI5Ti9KeVhQTTQyZnpHU2hObnVPd3BKbWxpNVAzZUg1ZStuR1l5Rk43Wm1VSkcyeG8vdWxySitBUWpFRER0QnhQQUFDV0xMZWVpT3BoMnc4Mk9lSjVsWU1NR3dlRElJSVVJTXQ3QWRydVZDcDlQK1Z6YkY5ek8wZjVlLzV0aVl0ZnN0REJodWFmZ0lPcDduR0l2ay9yZGswdkJnQUF0aFQ1dnZqckZ2K081NmI5ZUpvM243Uk1vZ3BuMnU3WUc5aGU2SUJOMnRjVWROaklhWkRCYklaQ2hRODJOUDlNZFJkd09MeTd5bE1ubFc2VWp5dDZQUUFBc0pWOFgvd3g2dEZyKzJHajZvc3pXY3NQSXIrdVFyelBHMDh5WEtsVytnNDhmWitiNmJDUnA2WDA4VDhUZE5CZTZYeFBCUm5xOEZNcHJ5SUZITnArU0J2ZDF3SXNaNG1LK1FJdnhKRWI1Y1VTc0p1SDd5c0FLTXk0NnU2My9UQUdYZld2VGRPODN2UmZ5dk1iN3AvOTc5cCt1TlUwelpQODM5K2JkSlgxU0p1dFR3cEtkbk9QejJUeVRJZlQ3NHJVS3F4emRQL2p0K0F0K0M2VTI3OTliNmVkQTltL3hsenBMSW85ajF5c21HQkRrd2VzQ0RnY2hJM3hhWDBScVoxWGVzaHIrekRGVWRYMmxRMTJuQTFtL0N1TDBnWUdQL3JpaUJ4TSt2NS9zZERYdmtRMkhyZVVzaG9EQnh3bWthczR6bTBEMVBaRGVrNUlHNDBQeTN0bE8wblhwNWNGUDNlK1crQTVZOC95ZDhXZDA3K1NONlpmTG5CUDdDUUhlMS9YMW0xalhIV3ZUd1BaYlQvY3lmKzU1bWU0ai9tNzN2TjZ4ZHB4TE84K3J2YWJ6MkNHM01ZcXJMWWZQcFQwWld3ZzlHRzAvZkE1UWtaSTdlZS83WWQwUTN6ejBPdndPZnRMa091bGJKVy96a1dVWklrSGJ1NFBSOUpNV0hmM1VjRWI1Wm1sMUd0aTJ3OXAwL2x4Z0tXY092aHpVZHNQOTNNMVJPa1ZFU213a003djI1cmF5dHFuQ090R3JlMmc4M2ZDazJEZmxidjZtTDhiRnAvdzJ2YkQ5WHgrSHhYNm5UL2tRR3gxUVNJdVYyU3dvWEVobjh0SnFpYUp2c2lTZ2cwMlFBOHYzNUROYm1tYmU0NXpMQWM2SDhmbTB2eFh6bGlhL2RycXN4SExvYjRqK2JlNVBoZXVpZE00NE9mbWMwbWJKUGs0M2NvLzkvTTFaKzZFbTVQYzBqSzlCeis0RCtZUWxuenZrOXN2M2NrL1VZS1RwN05yUHVUdmgyL3VUN2QzSnZoOCtteHhpSE04NUVyT1JYN1hjN0ZpZ3cyTmdNUGVsYkl4WGxDd29kcU1DZ0FBQUFCZzJmNVg4cXVYSmI0L2p1M2s3Z28wQUFBQUFBQzFLanJZME5nVTN3dkhkSEpQOTlFSEdBQUFBQUFnaXVLRERZM044YW5kcU92bEhOeDdnNDBBQUFBQWdOcFZFV3hvQkJ5bW90WFB0TktBN1VjMXZTQUFBQUFBZ1BOVUUyeG9CQngycGRYUHhNWlZkNzJxRndRQUFBQUFjSUdxZ2cyTmdNTzJYbW4xTXkzdlF3QUFBQUJnU2FvTE5qUTJlamVWWmdxOExHdko0Wmw3QVFBQUFBQXNTcFhCaGtiQVlWMkRtUUtUTS9jQ0FBQUFBRmljYW9NTmpZRERWZEx3NGp1eGwxZ2NjeThBQUFBQWdFV3FPdGpRQ0RoY3lQRGl5UjJaZXdFQUFBQUFMRlgxd1laR3dPRS9ISS9KcFhaVVR5cDdUUUFBQUFBQWExdEVzS0d4d2Y0M3gyRjYybEVCQUFBQUFFdTNtR0JEWTZNOXVSRmdEVlh4bmdJQUFBQUFXRml3b1ZuMjV2RGRjZFY5QzdDT2FnZzBBQUFBQUFEOFpYSEJobWFabThSUHgxWDNPY0E2YXFKS0JBQUFBQUFnVzJTd29ma240SEFTWUNuN2RqU3V1cmQxdjhUWnFSSUJBQUFBQURoanNjR0c1cStBdy9YS0F3N0R1T3FlQkZoSFRWU0pBQUFBQUFEOFlOSEJocWJ1Z01QSnVPcnVCRmhIVFZTSkFBQUFBQUNjWS9IQmh1YWZnTU1RWUNtVHlhK0o2YWdTQVFBQUFBQzRnR0JEbHFzQXFnZzRMSEFBOXI2cEVnRUFBQUFBdUlSZ3d4bDVRL2tveklLMklOQXdQVlVpQUFBQUFBQ1hFMno0UVc2VlUyckE0VWFBTlZSRjhBWUFBQUFBNEdxQ0RlZklBWWVuNFJaMnVidmpxdnNXZVlHbEVXZ0FBQUFBQUZpUFlNTUZ4bFgzdHFDQXc5TngxWDBPc0k2YXFCSUJBQUFBQUZpVFlNTWxjc0RoYnRnRi91VW9yNVBwcUJJQkFBQUFBTmlBWU1NVmNzVkExQ3ozajdubEU5TlJKUUlBQUFBQXNDSEJoalhrTFBkb0FZY3Y0NnE3SDJBZE5YbWxTZ1FBQUFBQVlIT0NEV3RLQVlkQUE0TlB4bFYzSzhBNmFwTGFVYjFjK2tFQUFBQUFBTmlHWU1PR0lnUWN4bFYzL2RCcnFNeWdIUlVBQUFBQXdQWUVHN2FRQXc0bkIvemJUQ2NGR3U0NG5nQUFBQUFBMnhOczJGS3VMdmd5ODUrTk9xaTZWQ2NDRFFBQUFBQUF1eE5zMkVHZW16RE05T2R1NTBIVlRPTkVPeW9BQUFBQWdHa0lOdXdvWjhZZjdmblBQQmhYM2ZIZVg4eUNDRFFBQUFBQUFFeEhzR0VDZWJqdzB6MzkrcWZqcXZzdzZ3dXFuTGtYQUFBQUFBRFRFbXlZeUxqcTNqWk5jM2ZpWDN1VWZ5L1RuU2VCQmdBQUFBQ0FpUWsyVEdoY2RaOG5IT0k4NUlvSkppTFFBQUFBQUFDd0g0SU5FMHREbkNmWTFEN0pzeUNZaUVBREFBQUFBTUQrQ0Ric3lTNmIyNFlYVDB1Z0FRQUFBQUJndndRYjlpaHZjbi9aNUMvWUdKK1c0d2tBQUFBQXNIK0NEWHMycnJwYlRkTzhYK2V2MkJpZmx1TUpBQUFBQURBUHdZWVpqS3Z1VWRNMHYxenhsNllhTE0xZk15OEVHZ0FBQUFBQVppTFlNSk54MWIxdW11YnVCWC90Ymhvc1hkMkxQb3pCekFzQUFBQUFnSGtKTnN4b1hIV2Z6NmxnZUpyL2UzWjNOSzY2TzQ0akFBQUFBTUM4Zm5LODU1VXJHTnEySDhhOE9mNTJTYTkvajM0ZVY5MjdhbDhkQUFBQUFFQmc3VGlPemc5VmFmc2h0VkZLUVp5SFRkTThHRmZkQjJlWVEycjdJVlhjcFBmaHRhWnB2alJOODBoRkV3QUFBQUFBQUFBQUFBRDhReWNscXZGREFqa2NYQzYwU2UvSjdzeGFialpOODZudGh5YVBiZEZORFFBQUFBQUFBQUFBQUlERk03bUI0clg5OEtScG1qY1h2QTZUR3ppSXRoOVMwY0xqTmYvMlVkTTB6L01ZZVFBQUFBQUFBQUFBQUFCWUhNVU5GR3ZONUhIRkRjenFpbUticTZSeERrL0dWZmZaV1FNQUFBQUFBQUFBQUFCZ1NYNXl0aWxKMncvWG02Wkp4UXFkRTBja2JUL2NhWnJtMDQ1TFN1L3JUMjAvbk9SSkRtK2RaQUFBQUFBQUFBQUFBQUNXd09RR2lyQkRVWVBKRGV4VmZtOGVOMDF6YlU5LzUyaGNkVStjUlFBQUFBQUFBQUFBQUFCcXByaUIwQ2FZMUtDNGdiMXArK0h6akZORWhxWnA3bytyN3BzekNnQUFBQUFBQUFBQUFFQnRmbkpHaWFqdGh6dTVxR0ZmM2ZCaGEyMC92RzJhNXZITVJ6QVZVWHh0KytFa0Z6bDhkZ1lCQUFBQUFBQUFBQUFBcUlYaUJrSlIxRUJrYlQ4OGFacm16WUdYbUQ0Ym45bytEWEpvbm82cjdtM29nd1lBQUFBQUFBQUFBQUFBYTJqSGNYU2NPTGkySDY3bm9vWnU0clU4R0ZmZEIyZVlYUlJRZEhNMHJyb25BZFlCQUFBQUFBQUFBQUFBQUZ0UjNNQkI3YkdvNFpUaUJyWTJ3L3R6YW1tY3cvMXgxWDF6MWdFQUFBQUFBQUFBQUFBb3lVL09Gb2RRWU5JNEM5UDJ3OXVtYVI0WDlxclQ1K2xyMnc4bnVjamhjNEExQVFBQUFBQUFBQUFBQU1DVkZEY3dLMFVOUk5mMnc1T21hZDRVZnFLdU5VM3pLUmM1UEI5WDNkc0Fhd0lBQUFBQUFBQUFBQUNBQy8zUG9XRXV1UlArVjRVTlJOVDJ3NTIySDc1VlVOaHdWaXB5ZU5QMnc5ajJ3OHM0eXdJQUFBQUFBQUFBQUFDQWYydkhjWFJJMkt0YzFQRDRRRWY1d2JqcVBqakRYQ1JQRS9uY05NM05oUnlrbzNIVlBRbXdEZ0FBQUFBQUFBQUFBQUQ0bStJRzlxYnRoeWNCdXVBcmJ1QkNiVCtrOThhOWhSNmhvV21hKytPcSt4WmdMUUFBQUFBQUFBQUFBQURWYS92aFZ0TTB0ODU1bmFsWjk1MGYvcnVMY3FDUHgxVjNYT094VXR6QTVJSVVOWnhTM01CL3RQM3d1bW1hWjQ3TWR5ZTV5T0Z6Z0xVQUFBQUFBQUFBQUFBQWhOZjJ3NTFjakhENkU3SFpkc29SL1h6bTUwUDBvZ2pGRFV3bWYwaFRJY0cxUUVkVmNRTi9DMVo0RTAyNmdEM3llUUVBQUFBQUFBQUFBQUQ0T3pjNjVaNCthcHJtWnFXSFpHaWE1bTNUTk84aUZENG9ibUJuUVlzYVRpbHVJUHA3TktLbjQ2cDd1L1NEQUFBQUFBQUFBQUFBQUN4RHpqVjkzalROWTZmOGU4UHNkMDNUdkp5NzRFRnhBMXRyKytGNlRoanZBaDlGeFEwTFZzaDdOTEtqY2RVOVdmcEJBQUFBQUFBQUFBQUFBT3JTOXNPdFBMSGdubE83bHFNNWloMFVON0NWdGgvZUZsS1pwTGhob1FwNmo1WkFrUU1BQUFBQUFBQUFBQUJRdExZZjd1ZUNocHZPNUU2R3BtbWVqS3Z1ODlTL1dIRURHMm43NFhYVE5NOEtPbXFLR3hhbTdZZVVoUDltNmNkaFQ5TEY2UDY0NnI1Vitlb0FBQUFBQUFBQUFBQ0FxdVFKRGUrYXB1bjIvTHErTkUzek9mK2szT1hqZlU4NStGSGJEM2VhcGttdk4vM3pmdjdudFQzLzJZOU4wenlhS3JkVWNRTnJLVGhoWEhIRFF1UXY1QTh6ZkFuelY1SERvN2t2dWdBQUFBQUFBQUFBQUFEcnlMblByeWZPSy8yU0N5WGU3bU5xd1J6YWZuaVVja0R6ejVUSDVpUTMwTjdwdUNodTRGSVZKSXdyYnFoYzJ3L1hjNVdiRVVIem0rUkNCQUFBQUFBQUFBQUFBRENGaVJ1Nkh6Vk44N0wyWnRCdFA2UXBEK200UFo3ZzErMlVXNnE0Z1hQbGhQRVBNNHhnMlRmRkRSVnIreUZWdnoxYytuRUlRSkVEQUFBQUFBQUFBQUFBY0RBVE5YVC8yRFROODZYblErWmloN2M3Tmg1UHVhVzN4bFgzYmFPL3JiaUJIMVdXTUs2NG9VSnRQN3hzbXViRjBvOURVRS9IVmZkMjZRY0JBQUFBQUFBQUFBQUFtTWVPdWM5RG1scXc5SUtHaStSQ2gzYzdGSTM4TnE2NjUydi9QY1VObktvMFlWeHhRMFhhZm5qVU5NM3ZTejhPaFZEa0FBQUFBQUFBQUFBQUFPeE4ydyszbXFiNXZHWGkvVVpKOTB2WDlzUDFwbWxlTjAzemVJdERzZllVQjhVTjFKNHdycmloQWhPTkN1SXdYUHdCQUFBQUFBQUFBQUNBU2JYOThLUnBtamRiL0U3Tm0zZlU5c1BiTFlzY3JzenJWdHl3WUF0SkdGZmNVTEJjNVpYT1g3ZjBZMUdCbzNIVlBWbjZRUUFBQUFBQUFBQUFBQUIyMC9iRHk2WnBYbXo0Uzk2UHErNlJReitOSFhKOEx5MHVVZHl3UUF0TEdGZmNVS2dkcXJxSVRaRURBQUFBQUFBQUFBQUFzSlV0Q3h2dWpxdnVzeU0rdlMwbmFGeFk0S0M0WVdFV21EQ3V1S0V3TzR3Sm9peUtIQUFBQUFBQUFBQUFBSUMxYlpGaittVmNkYmNpSGVIY3BQN09CTC9xODdqcXZrM3dlM2JXOWtNNnhxbDQ1Tm9Hdit2Y0hHL0ZEUXV4NElSeHhRMkZhUHZoVHA0b3Nza1hHK1VibXFhNUgrVUNDd0FBQUFBQUFBQUFBTVNUODB3L2JiQ3dqK09xdTcrUEY3TGw5SWk1bkRSTjg2NXBtcmR6NTFDMy9YRGNOTTNORGY2Vkd6L21qeXB1cUp5RWNjVU4wZVVLdEhTT3VxVWZpNFZUNUFBQUFBQUFBQUFBQUFDY2E4UEUrYjBWTmpSL3JTWGx2ZDRyNkV3ZE5VM3pmSTRjelEzUDB6Q3V1bjlOc2ZqZmZwYkZvYVdFOGJZZlB1Y0tKWjN3Q2FudGgxUVo5bFZoQS9rOThEVjliK1dDRndBQUFBQUFBQUFBQUlDVWIvcDZnNFQ1TC9zc2JDalU0eGx6Tk8vazZSSHI2TnArZUhMMmY2ZTRvVUp0UDd5Vk1FNWthUnhQMnc5cGJNeERKNG9mS0hJQUFBQUFBQUFBQUFBQXZtdjc0VmJUTk04Mk9Cb0tHeTUybXFQNVpOdGZjSlU4SGVMUkJ2L0s2N1AvaCtLR2lxUTNXazRZZjd6MFkwRk1iVDg4eXUvUkYwNFJWMURrQUFBQUFBQUFBQUFBQUx6YzRBajhNcTY2NDhVZnNhdTkyWE9CdzRlbWFYNWI4MzkrTFRWTlAvMC8ybkVjOTdVdVp0TDJReHJma2Q0RTF4enovM2lRUHlBY2tQY29FeGhTTldXdTZBTUFBQUFBQUFBQUFBQVdJRGZWWHNjd3JybzdjeHlSdGg5U1R1eTlDbzcrN1gwV2cyeHc3azdHVmZlOUViYkpEUVZMM2N4VFYvT21hVDVKR2ljaTcxRW1aSklEQUFBQUFBQUFBQUFBTEVqYkQ4ODNlTFdiVEhoZ25tUDJhczMvWFpyZWNELzloNS8ydXg3MnBlMkh0MDNUUEhhQWljcDdsRDA1TFhJd3lRRUFBQUFBQUFBQUFBRHE5bWpOVi9kbFhIWHZTam9TNDZwcnQvbjMybjY0MVRUTjY2WnBIazZ3akpUbisyU0MzM091Y2RXOWJQdmh4WnIvODdTT0R5WTNGS2J0aDBkNVJJZWtjVUpxKytHSjl5Z3pNTWtCQUFBQUFBQUFBQUFBNm5adnpWZjNkaW52ZzNIVkhZK3JMaFY5M0o3aTk1MU9UTmlqOTJ2KzZ1OTV4NG9iQ3BHcWJOcCtTQjNLZjEvNnNTQ210aC91NVBmb0c2ZUlHU2x5QUFBQUFBQUFBQUFBZ01wc21IVC9ZV25uUHhVNU5FM3pXNENsWEdYdHdwTjB6bjg2MkRKWlc5c1BIemFvUElKWjVZVHlEem5KSEE3bHRNaGhhSnJtL3JqcXZqa1RBQUFBQUFBQUFBQUFVS3kxaXh2R1ZiZTQ0b2FzaEZ6SlRjN05MWk1iQW12NzRYbmJENlBDQnFKcSt5RlZVMzFWMkVBZ0pqa0FBQUFBQUFBQUFBQkErZFl0YnZqb1hNZVZtMVYvV1hPQnQweHVDS2p0aHp1NVN1WGEwbzhGTWFYQ202WnBmblY2Q095MHlPSDl1T29lT1ZFQUFBQUFBQUFBQUFCUXBhVk9iV2cybVc1eFlNZE4wOXhjNS9Vb2JnZ2tkeG4vb0FzK1ViWDlrTDRFLzNDQ0tNakRQQUhuYUZ4MVQ1dzRBQUFBQUFBQUFBQUFLTUk5cCtsaWJUKzhuZUlZamF0dWp1S1FEK3V1VlhGREVQa045bmpweDRHWTJuNjQxVFROWjlORUtOamp0aDhlSzNJQUFBQUFBQUFBQUFDQXFoeVgrR0xhZnRpa3FHQmZoUjRmOS9SN3Q2YTQ0Y0RhZmtoSnRtOFdmUkFJeXpRUktxVElBUUFBQUFBQUFBQUFBT3BSWkhGRGtNa1Vyd09zNFYvK0YyZ3RpNUk2NGJmOThFMWhBMUhsYVNKZkZUWlFxVlRrTU9ZQ013QUFBQUFBQUFBQUFJQWxTVTJpM3dWN3ZmY1VOeHhBSGlQeVo5TTAxeGIzNGdrdkpYdW5wTytVL08xc3NRQnZGRGtBQUFBQUFBQUFBQUFBQzVJS0d5TG1UWDc4S2NBaUZxUHRoK2ROMC95NjlPTkFURzAvM0dtYTVvT2lHeFlxRlRtazhVcjN4MVgzMlpzQUFBQlltalJsdEdtYVcydSs3T3ROMDl3SmRJalNkTlR6bnVVK2o2dnUyd0hXQXdBaHRmMXdmNE4xYlhKdk1JZlArWnAvMWpmN3ViQWZGM3hmelBrY2NORTlmdU0rSHdEV2Q4a3p3Q2JQQmxPNTdQcWVISStyN3RqcEJXQkw5M1ArSzFjN2laNG5xYmhoQnBMR2lhenRoK3Y1L2RrNVVTeGMrbzcrMVBaRCtJczNyR1BENUxTYUNHcFh5UHQ1ZnZrWjV2cUJYMzlVQXVqOHg0WkpZa3V5dU90eWZzYitNZG5ueCsvVTgvNDM2VHAzYzRZbExrN2JEOXUrNUkvNW54L09CRjRGV0F1ejRQdEl1SXJ2c3gyYzg5Mnl6dlUvdVJmMlJSVnNoMnY5bC9SWk9PZkhNeC9GT2JPUGMvcHNldnJQYXI5M2R2anNuenI5RG1qT0pMK2NGbEc1VGg2WXZVbTRrUHVVeXVWOTV1dG5uaWRPLzdtWWZKNEpydkduemw3ci83N0c1eC94NUNzcy9GcnN1N1pnRjhSb2xxTG03N1pCYnV0a2ZtdWE1dVVCditmV2pxbTM0emp1ZHlrTEptazhoQWZqcWxPTmRZRzJIOTQyVGZNNDVPTGc4SVpjNU9DaGhXTGs0UHBuQlpWL2V6cXV1cmRCMXNLR3ZKLy9ZKy92NTdZZlhqWk44MktmZjZOQ2FYUDhrVTN3WmNtYit1OGtvbS9zdDNIVlBaLzdqLzZRZkhqMlAvKzR3UzNaa0YyZDVIdVhENmYvOUR4NUdEa1I0SThsdm5iWTBzL2pxbnRYOHNIN29kRDA3SDgrbTR5eHFJUWc5bWJJMS9uVGE3MW5RZlltUDN2ZXo5OWxkM3lIaFhOeTV2dmdXREgwN3RwK2VKSW1yWmYrT21BbW12VVY0a3lTN2RscnVuM2xjbnc4VXhEeG9mWnJ2VDIxLy9nNHJqcU5yUXJSOXNObnowei9VdngrMzFsdFAzeFlNNDQzKytkMmc3VWRRdHJIZWhMcG5uR0Q0L1diNG9ZOWtUUWVodUtHYzdUOWtCSktmZzIzTUloSmtRUEZhUHZCamQxLy9US3V1dGZSRnNYVnZKL1B0ZGNDQjhkOEp5bVlkRWNBdTI0NUVIV3M2R3A3NDZwcjkvVzdOWmlnRUVOK243NnpYN1VmT1Fud1U0MnZEZmFzaUgxMFNZOFU0Q1JmNjArdjk1NFJ1VkJPSGp2OVVXeGR2eTluRWlNLzU0N0F2aU15MTNqWTJtM2ZKWWVWOXlUVHRmeFIvcWZDaGVYNitFTWhkSEdmVFhIQ2N4MmthUk9iYWZzaDVZTThjOWorYlo4eHVibHQwS1J4R0ZmZHJKTTdwaWh1K1BGY1RaemJPL3N4dWN3RzE1cFhQeDFtaWZWcSt5SGRzUDYrOU9OQVRLcHNZU3NwT2VwcjJ3OUg0NnA3NGhBUzFROWRDdmxIdWpkVDNGQVk3K2NMcGZmelBxYzNIQ25RM2xwS2R2K3o3UWVibkpYSzNmLy9YUHB4Mk5IN1BmLytkd29iS0VDWGY1NzlNR0wvSkwrSDM5WFVUZWxBSGkzeVZjUHU3dWRreTdEeWM2S2tSNkpMejRZUDg4K3ZQMXp2ditROUtrVVBDNUlUSGgvbG40ZExQeDRMZHpQLy9KMzA4c04zeEZrZkYxZ0VJZjRHMjdtVkM2ZllzN3cvL0NoL1g5bUQ1RHozTHJuT24rNzl2WXg2WFJlYnZWQ1loR0F1NVR5ZEkzMnVLMnF5dEc1RDRpNDloNWZld0RnMWNHMzc0ZDFFc2VsMFRMNUZtRlBsVmdBQUlBQkpSRUZVYU5TNDRiWG1nK0tHaWVUTnFjK3FjSWxJaDFHWXhPTzJIeDd2dTJzMkFGemkrajRQVGlyaXl4djB1Z1Z1NzFuZU1CR1FyWWpDaGtsOEdWZmR2aE9PZlhkUnNtdTV3UER4RDRIUFZCVDAycFFIQUtqQ3pkeDE3MnpSdzBrdWVIaXI0S0Y4K2RueFNmNFJMMllYbHlWSHBzS0g1K09xKyt3SUEreEhUcng3b2hrVUUvcHg3eS85UC9kTFQ3NEZtTkVtenovN2JoZzVpN3hQMUxiOThIbUN3c3JUUm8wL0g3akIxdHJGRFNrdTlyLzlybVVaMm41SUg0YXZOcXJDR1RiOFlxdFMvb0w3cXJBQkp2TW1qVWpLSTNJQm9DcmpxcnVmSnppd3ZjZDVOQ1lWT05QSWdPMTlIRmZkTGNjUHRwSzYrLzZSbjBIVHo3Rm5VUUNvU29yYnZNZ0I1dFByL2R1Y0pFOXdLZkd4N1ljUHArY3VGOFcvRUM5bXoxTFJ3NmY4dmpPeEdHQkhhZjgzN2VmblBaZlRhL29mQ2h2WXM1U2srbFVzQ1dBOXVRSFV5WnIvODZwaUtPT3FTNU5KZnB2bzEvMSs0T2ZJZGM5Tkt1cHZGRGZzSUFVVDg0MnRtOXBZVWxIRGpmVEJYbktWYTk0QUg0M0VnNzFKUlE3ZjJuNHczZ3lBcXVTcEE2K2MxWjI4c0NsZFBoUHdKbkdVaTZhQWFkdzhVM0EvNW1RNno2UUFVSmZIUHhRN3ZNelBKaHhZdXUvNm9aamhEeFBrT0xCbnVRa2pBQnRvKytGNWp2T1B1VkdvNGtRT0pjV1M5ajN4R0tBVzZ6NzczS3V0YWNTNDZwNDNUZlB6UkwvdVdXNldQcXM4R1d2ZCs2M3YwOHdWTjJ3aHZmblRqVzRLSmhhMytMb3BhbEIwRTExSzdHbDFRNjdLdGR3aDU3TUFFd0ExR1ZkZFNzei94VW5kaVFLSGdpbHNtTVNyWEN3RjdNL1pycTNmQkVNQm9Fb3ZjbGZYZEwxL1p4OTZYajhrUDM1U3pFQkFuZ0VBcnBCenZNNFdLUDVxMzVkQTdLRURyT2ZkQnNlcHVoajl1T3JTNjcreHdRU0x5M1I1cjJQT0lwQk56c24zNlJLS0d6YVVibmp6V0ZFM3VuR2tEK3hkUlEzZk84WW91b25wdFBEbSswTkorbWN1Y25pNjlBTlRrZE94Z1Rya0FGQ05jZFc5bnJBRHdGS2xBb2ZuU3o4SXBWSFlNSWxYdVVnS21NKzFQRkk0QmVxUFRYUUFnQ285UEZQbzhOb3Azby9jUk95YjVFY0s0ZjBKY0k2Y1AvTTVYOC8vVktCSVlJcVhBZFl3cnJvUE9RZHpIWTlyakpHazNPaHgxYVhyeHNjSmZ0MjFQRGwwN3dYeitXK3NleS8yL2pRSFhISERtczUwdzNmREc4ZHBVY1AxY2RYTlBpb2xpcFI0azBmRmZMS0JGYzZsaFRmanFudWJpeHdlVEZSVngrRTl6b0VsMWZVQVZDRjNBSGpnYk83a1YvY0d4Zm5zMldvblR4VTJ3TUhkUERQUlFSRStBTlRwMlpucFRZb2FkL1JEQXVRYno0UUFVSjZjTy9QdXpNU2x6bWtFZ0twc0VuK3NOall5cnJyN3FkSGNSTC91OXhrYWFHeHlMdjQreDRvYnJxQWJma2lLR3JJY29QN3FvU3lrcCt1K1IxTmxZYTZxdTd0QmhTR3h2Y21CSlVFbEFJcVh1eURjZGlaMzhrYUJReGxTdC9PY0ZNeDJIcVFpYnNjT1Fqa3R3ditjSjlNQUFIVzVkcWFvMFhQbmhzNDB0NU1BQ1FDRlN0MkFjMTdYMXp6cENnQ29VRzdNdUc1dVpWZnoxTXZjYUc2cUpwV3BnY2FIaVg3WHY2VEMwdzBhU0J5ZHpiVlYzSEFCM2ZCRFV0U1FuZGxzZlJ4aVFaeVZ2bVRiYlJKNjB2czZUWGxvbXViR1JPT0RPTHdVVkRxV1FBSkE2Y1pWZDV6dlVVeWIycDRDaCtBVU51enNkaTZHQW1KS3lYcGZGVGtBUU5YZW1OeTBublNNemt4cEFBQUtkT1o2L3J1OExnQllqRTNpN2M5cWpzL251T3hVT1J6MzhuVFF5ZUpIYlQrODNMRHc5UG5aLzBOeHd6bnlRZFVOUHc1RkRWbWVKR0t6TmFhUHVhaGg1d3ZpdU9xK3BmRkI2ZmVsWW9sS2o5ZVMzTXdKSkFKS0FCUXQzNk9raDlrdnp1VFdVcUxKL1VMWFhqV0ZEVHRKeit3M2NoRVVFSjhpQndDbzMyT1RITTZYdWpacUhnWUFaVHRUMU9CNkRnQUxrL09IWDIzd3FxdHVRSGdtaDJPS0hOTnJPWDUwWjlkZmxIUHdYMnp3cnp4TnIrWHNmL0hUcm91b1NUNHBIMVQwaHBFU0pPNHZ2YUNoeVpORW1xWTU5dDRNS1NYMzNmbnh5M1VxdVZqaVNiN0lLbW9wV3dvb1BjNFhZNFVPQUJSclhIVzM4bGpDZTg3aVZ2NW8rK0dCRHZkeEtHell5WmYwblZEdyttSEpUb3NjZmh0WDNYUHZCQUNvVWdyZ3Z4WnIrLzdjOXloM2RRWUFDcFdiQ1Nwb0FJQ0ZHMWZkeTl4UWNOMThoYlEva2hxcnY5N0RrVXY3RFdrdDJ4UUVmTTQvT3p1VFkzbzlyK1ZXL3RsRWlwbC8yTFdoM1JhRkRVZm41VklxYnZnbmNmeURTUTJoL0R5dXVuZExQd2pOWCsvUHo5NmJJYzFhZkpPL3dOOHF3cXFDZ0JJQXhVdFRwdHArZUxmaEdFSCtvY0FoaUZ5b283QmhPMmw2blVra1VMN1RzY3gzVEdBQmdDcWxXTUtudGgrT3BwZzhYUm94WUFBb24wYVFBTUNQY3I3Q0pnM3NmazBGRWVPcWV6VGx3Y3dOc2QvbG40UEw2emxZRHNJV3VjNGZMOXF2K3Q5MHl5cFRUakQ5YWxNcmpOVFJ2RlhZOEs5UmV0NmI4YVQzNmZWREpLYW52NWxIQ2QxdG1tWW80Rmh4dnRPQTB1Y2NYQUdBNHVRSC85K2N1YTM5a1R0S2NDQW1rT3prdmNJR3FFcDZSdjB6ZDlNQkFPcVVKZ3QvYS90aE1aUFg4clFHTVdBQUtGUzZiMG4zTHdvYkFJRHo1T255WHpZNE9BL3ozc2cyVXhhNFJNcDcyQ0xYK2RKR2Vvc3Riamh6TUo4RldBNy9GRFg4Wjd6STBxU3E4L3plTkU0dm5xTW83OU5jNUpBdXREY1VPUlF0WGRDL1NpQUJvRlRqcW52ZU5NMHJKM0JyZnl3cHNTUVNoUTA3T1pxNnF3a1F4b3ZjVlFjQXFOTnBRZVB6MnM5dmFpRFdOTTN2QVpZQ0FHd2hONnI5TTkrL0FBQ2NhNHNDaDlPR3hBZWJibENUMU5RNXg1WCsyUEJsWFZyWTBDeXh1R0dIZzhsK0tHcklVa1dZcXZPd1V2SEFqWWdqbTlNb29WVGtrRDVIS2Nrb3dKTFl6Z3VWb1FDVWFseDFxVWp2cVJPNHRUOFZPTXhMWWNOT1hrVjhMZ0ltMWVYblUxTUdBYUJlditiay95cmxPTEFHWWdCUW9KelQ5VTJqV2dCZ1hibkE0ZjJHQit4ZWFrQmU4LzdJUHAzSnc5OW1ZdWFycXdvYm1xVVZOK1Ezb3ZHak1TaHF5TTU4MEQrcE9nL25wR21hMjdsNDRGdjB4YVlrbzF6azhGdUE1YkM1MDhwUVhUSUJLRTYrcjMvZ3pHMU5nY05NOHI2QXdvYnRQTTNGVEVEOXJ1VXBnNjVOQUZDdnh6VjJLV3o3NFZnY0dBREsxUGJEbzV6VEpXOEdBTmhJbmpyLzh4Wkg3WEV1Y3Znc0puSzEzTUQ5ZUljOC9MdnJ4cHNYVWR5UWJvRFRHMUNYamhDT0ZEWDhROEZOYUEvR1ZYZDlYSFhIcFMxOFhIWFBjNUdERHNwbDZ2Sk5VL1dqd1FHb3k3anFVbExFYmFkMWEzL3FrcjFmK2ZuTHZzQjJIbmlPaDBWU2ZBY0FkYnRYVTRGRERxN2ZETEFVQUdCRGJUKzhicHJtZDhjTkFOald1T3JlNVp6SllZdGYwZVdZU01yWmV5MXUvNDhVSjJyNzRWM093ZiswNWQ3TCs1dzN2bmJUNTZxTEczSkgvR00zd0NHY0ZqVThXZnFCYVA1NmJ6NVJjQlBXNlZTUjRqZjBVL0xSbVNLSGt3QkxZak5wTlBnM2lTUUFsQ1FYaHQ1dzc3RzFZeHNsKzZHd1lTZTNhM2crQXJhbXdBRUE2bll2UHk4VkxSZHBLR3dBZ0FMbDYvZ3o1dzRBbU1LNDZ1NmtDUUU3NUN3OHk5T3RVNkhEaDdZZjdpL3R4T1Q4NXVPYzQveG4welFQdC94VjZSemN5Sk0xTnZMVGRDOG5Gb2tMWVJ3cGFQaEhHc3ZTTk0wSFkvUkNxdmE5bWp1c3Z2WCtLOUsxbkVqeWZwdUxQQUFjd3JqcXZqVk5jMTNIeEsxY3l3VU90L0p4WkFMMkI3YVdOcHU4RjRIa3Myc1RBRlR0Y1dxMGs2WkNsL2dpOHpQZnZRQkxBUUEySkk0QUFPeERuaEJ3ZllKOHliVGY4RWZiL3owTTRrdlROR25pMUx2YytMRjR1Y0ZWeXB0OVBtRmVhWW96Mzk5a1VzT1BxaXR1U0JValRkTzhDYkNVcFJ2eW0xUFFNMDhSU1lGZ0QyVWhMZWE5T3VGRm0vazl6SldRRDNUTkJhQVU0NnE3bFRzdVNURFlqQUtIQ1NsczJGcmFtTHZqUFFoazEvSSt3aDBIQkFDcTlhenRoOCs1V1ZJeDJuNTQ1SmtQQU1xa3NBRUEyTGN6K1pJcGdmOWQwelRkam44eTNidjhtbjdPRkR3ME9RZjF3K2xQdEJocnpsKytuMzhlN2ZFZWJMSmMzR3FLRy9MQlA1YXNlM0NLR240Z29TdXNuYXZEU25YbW9uMDlYMUIzdldnem4xUUo2bnNXZ0dLTXErNisrK0d0WE12RjBiY0tYSHNZYlQrOGxPU3lsU0dQYXdVNHEydjc0WFdwSFowQmdMVzhTYy93aFhVZUxLb1lBd0Q0aThJR0FHQk9lYS9qZS95ejdZY1U1M2c1Y2E1NWwzK2U1Yjl4MGYvdVM4NXpiM0xlNXFuak0vLzlWZExydUg3bWYzUS8vL1BPZ2ZMblV4N3VrM0hWdlp2eWwxWlIzS0FUWXdpTFRSUy9TQXI0bm41WkVjN1Qwcm9QN1VOT2pyK2p5S0U0NlR4OWJmdkIreGlBSXVRQ0I4OXNtN3VaQWp4cEFrWnBDNDhnRnphOFdQcHgyTUxIOUprdGJ0WEFYRkpINTdmMi93Q2dhdTlLbWRhVTQzQ2EzZ0ZBWVhKREpJVU5BTUJCaktzdTdTZWtuMzBWT2x6bTVwbjdvSkliUktZaWplZFRGelNjOWI5OS9lSTV0UDN3cE8ySFVaTE1RYVdpaHJ2anFyc3VzUG1YTSs5TGhRM3h2QnBYWFNzaC9OOVNrVVB1ekhvalQxK2hES21MMW5FdVRnR0EwTVpWOXlUZGl6bExHN3VaTzFpeEFZVU5XenRTMkFDc1lXOGIxUUJBQ0YwTzdJZVc5OFhGNFFDZ01Ma1Jra25QQUVBSXFkQWg1ejYzVGRQY1R2SFNuQlBOdjUza2ZJOGJPZi8yMWo0TEc1cFNKemUwL1pBNlYzN1dqZVBnZEEwL28rMkhPN243dmZkbFBPL0hWZmRvNlFmaEtpWTVGT2xtbnVLUUNuZGVMdjFnQUJCYnVsYmxSUDAzVHRWR1RIRFlnTUtHcmJtZkJOYVZya3ZQYzJjakFLQk92NTUyTUF6TTh3djg1WXZqQUpRaU5RclZ2QllBaUdwY2RTbVg0Y25aNWJYOThDai9kdzhYZE9KT2NxT3JOTW43dzZFV1VWeHhRNjdpZGJON1dMOElZUDVESW5ob2FRckIvWnkwejVvVU9SVHBSZTZtZGN2N0hZRElVbkYwTG5ENHc0bmFTRW9rL2FDci91VnljRXhodytZMExnQTJWVUxDSXdDd2c3WWZVdWZDeUJNY1RHMkF2eHdzMFFSZ0U3bUpyY1pIQUVCUjhuU0MvMHdvYVBzaHhlMVQ0Y09kZ3FkU2ZjelBsQjhPV2NSd2tXS0tHM0lGek84QmxySmtSK09xZTdMMGczQ1dZcHV3VG5KUncrZWxINGhkS0hJb3pqVlRIQUFvUVhvd2J2c2hqWFQ4MHduYnlEMEZEaGZMaFEyQ1k1dDdFSEd6Q29ndlRjcng3QWtBVlh1V3IvZmhtdW5rbURIUU5GL0U3b0dDMklPRTg5bGZBeWhRanE5ZWVuK1RpenR2NVFLSTYvay8zOHIvMzNkeXJ0OFVVcTdzYVo3czhZOC9lU0pGY2NJWE4rU2syblRnYndaWXpsTHBmdjhEaVRPaDZUbzZNVVVPeFhtUnY2UHUrTjRHSUtyMEFOMzJ3NDM4WUQzVlEvc1NLSEE0aCtlenJkMVZFQTdzNExuZ0sxVGp4RFFXNEFKUnIvZUtHMWl5TDAzVHBEam9hekVnV0x5UHBUUXRTUk9oNUh6QnY2VHIrVXU1VFFCMXkwVUZ4NG84dHhPNnVDSGY0Qm9yZWppNjMvK2c3WWM3K2N0R0FsWThKb3ZzbVNLSG90ek1VeHdVK3dBUVZycTN5TjBLRkxOdkpoVTR2SFh2K3hlRkRWczV5WVd3UlhicFlEUGpxbXRyUFdSNWp5WTluOTdQSFc1dWVVNmQxYlgwSGV5WkU0cVdraW1lNTlIcWxLdmFLYTU1SC9yT21hNTI5eWZ1YXNmVkZEY3NRMnB5OXk3SGZUNUxtQWNJNzJPK2p5OGlqeWZ2MzhqN09welRUczRmVHJzNG0rUUxBSlFnWkhHREJQSVFmaGJVK0ljSklxRU40NnE3cy9TRE1DZEZEa1Y1MC9iRGM1OFJBS0xLOXhXMzJuNzQ3SjVpSTQvYmZtaVdYdURROXNNamhRMGJTOEdzVzVKVnFNR1pJUDZGQWRsY1JQY29KK2JaMDVuZWs5dzFsdmlxVFg0RzZwWHZXYTlNdk1yUEJhYy80b3JUU3NXTWp5TEZDL1A5bmZPOHZZKzVTN0NrUmlqREE1OVhLbURmWUI1SHFWaFJuaGNBVUl0d3hRMnBBMlZLMUFpd2xLWDZiVngxejVkK0VNNXEreUZ0R055THN5SXlTVGtIcHNpaEdGM2JENk1OVUFBaVM0VjQ3cnMzdHVnQ2g3WWZVdGZXM3dNc3BTUmZ4bFYzYStrSGdXWEpFMHBlNTUvdmNrSmMrcjhmZWp2c0xFMFR1bVVTREFDSGxCTzQvcFhFbFNlOHZWVGNPSWtuUHg3ZkEvTk1zN24zNlR5S3B3RXd0M3hQSm9kZ2VsOXlzYUxDRVFDZ1dtR0tHL0swaGs4QmxySlV1dC8vb08ySDE4YmpoWlNLR3U2WE1tWnhDWDRvY2pEaEpLNC8ybjQ0V25xSFp3RGlHbGZkZmNYdUcxdGtnVU11YlBnandGSks4akY5eHBaK0VLRDVwK0FoZFhZK25kVDUyclZuSjZmSm93QVFSazcwK3A3c2xlT1A3K3hiYnkxYVFham5tdlZwYUFmQW9ka3ZtTTV2dWFCQnNTSUFzQWovaS9BaTIzNTRwN0RoWUZLaStHMkZEZjlJSTNaemwzT0ZEZkU4SFZmZGRZVU5NYVVINmR3SjltNytiaUdlbEFENUxTZndBRUE0T1VuL2xUT3prWFI5WDB5UVNHSERWbzRVTnNENThuTnM2bUxicGowSGgya3J2bDhBQ0MzRkU5SytkYjdlSHpsYm04dlBZWlFqZFhPK29iQUJnRU5xKytHNTR0S2REVG1mcTAzWGRZVU5BTUNTSExTNElYVkx5VW5reHNBZnhtbWl1Tkh4Lzd3ZjA4UEE3d0dXdzc4ZDVRYzJZL1VLa0lORjF4VTVoSFd0YVpxdnFaQnI2UWNDZ0pqR1ZmZFNndW5HWGl5aHdFRmh3MVplbWR3RjYwbDdEam5wVVpIZFp1NlZ0RmdBbGkzZkc5L0lpV0tzVDNGRE9UN21ZaDdKandBY21pSzc3WjNteDl5Unp3VUFMTlhCaWh2YWZuaHJXc1BCU0JRL0kzVXdiL3ZoYzM0L1hndXpNSm9jWUxnaEdhZE1aNG9jSkNmRzlIdWVuQVFBNGVSbmxRZk96RWFxTG5CbysrR1d3b2FOL1pLTGhZQU41TS9OYmNYNjY5UE5HWUNTNU1sTmR4UTBiaVRTdGQ1OXg4Vk9UTzBESUlLMkg1NlkyckFWK1RFQUFObnN4UTBwSVNGM3gzL3NKTXp1aXh2aGY4dEZObCticHVraXJZdnZDUVIzY3lXNjdqS0YwLzB5dElmcG1weUt2SlorSUFDSVoxeDFIL0lrS05iM0lnZU9xcElMRy83MFB0akl6K09xZTEzUWVpR1UxQlV2Rit0L2NXYldJb2tPZ09LWUdyZ1JrNXJLNEJrUWdDamtKRzN1Z2Z3WUFJQi96RnJjMFBiRDg1eVFvRHYrL0o0YVEvcVBsUERUOXNPb3lDYWs5TkIyUFhYOVgvcUJxRTBLRnVVaWg2T2xINHRnMGpYNXEwNmJBRVNVN3dsMXo5N01tNW9LSEJRMmJDVTlVNW5RQmRPNDR4cTBsanNGckJFQS9pTlBEVlRnc0FiN3gwWHdIQWpBd2JYOWNFZGg1RVpPbTlSK0tHak5BQUI3TjF0eFE5c1BLU25sVjZkMGR1OVRNbkhlb0YyODlDQ1ZKNGU4V2ZxeENPaVgvRjcxMEZhNVBEM21SaDZyU0J4L3RQM3cwdmtBSUpyVVBidHBtbHVTU3pkU1JZR0R3b2F0M1BaTUJkUEpUVUlrOGwzTk5FQUFpcFhqWnhyeVhPMVc5QVV1bmFaaEFBUmhhc1A2UG1wU0N3Qnd2cjBYTitSazh0UWh2M01PWnBVU2YrNk9xKzdSZ2w3emhkcCt1SjRMYkQ2WkhCTE9VUzVxTUM1M1FkSURlaHFybUw2bkpDcUc4cUx0Qjhsd0FJU1Q3eDJ1NXk1R3JLZm9Bb2YwRE5jMGpjU005WjNrRGwvSHBTd1lTcEdUeEg1endpNmxJeU1BcFh2dURGNUpjUU1Bc0k1bmp0SmFVcDZNaGhvQUFCZllhM0ZEN2dEOXljR2YzYXVVK0tORHgxL2Fma2hqV0w4cXNBbG55TWszS3ZjWExIMVA1VVJGbzcvanVKY20zT1NFUWdBSUpYVXhTdDJNbkpXMXBRS0g0Z0lrK1Q3a1dHSDYycjdrUFFBZHZtQi9UTGtEZ0lybGUrbFh6dkdsSk44QkFKY3FjUy82UUQ3S2t3RUF1TnplaWh0eTUrY1hqditzdnVSa2NRSFhMRThOZVJoaU1adzZuU3B5Ui9JTnA5TG83elRCdy9qdk1GSWk0ZGUySDNUakFpQ2MzTTNJUGNQNi9pZ3BxS1N3WVdNZmM5RVBzRWQ1LytLOVkzd3hDUXdBVk9DdGt3Z0FzQk1KKzFjN01iRUJBT0Jxa3hjM3BFU0UxUEhaT1BMWlBVMEpEWkxGQ2U2cHFTSmNKbmNvdUpFbmUzQjRmMHBRQVNDaWZNK2dxK2I2aWlod1VOaXdzZmNDWVRBckNZOEFVTEZ4MVIyYkZIaXBLSk4rUHdSWVEwajI4Z0VJNEpHVGNDWFhhd0NBTlV4YTNKQTNUYjVLUkpqVmtLYzFDTEFTMlcrcEs3LzM2Zm5hZm5qZDlvT0pLMWtxMGtxVFBkS0VqeEFMSWlWRDZySUJRRGg1WXQwdnpzemEwalg5VHZBMUtteFlYM3JHRWl5RUdZMnI3cDNqZlNsVFpBQ29nY1Q1aTNWUkY4YmZKRXNDY0RBNVg4emU3dVYrMHdnVUFHQTlreFUzdFAzd1BDVkxPTzZ6U2wzdzc1aldRR0FmYzFIRGN5ZnB2MUxDZU5zUFk5TTB6Nkt0TFlMMFlKL2VQK2toZituSElvQTNDbkFBaUdoY2RhK2Jwdm5aeVZuYnA3WWZRaWFmdHYyZ3NHRjlyenhqd2NGOGNlZ3ZwTGdCZ0Jvb2JxQmtML0pFUkFBNEJFVjJWN0NuQ3dDd3ZrbUtHOXArU04zWWYzWGNaL1BGdEFhQ081MG80Z0gySEtsamJ0c1BxU2pwVGJqRkJaUWY4bTlJSWptNEZCaDV2ZkJqQUVCQXVaUDJBK2RtYlg5R0szREloUTAzQXl5bEJFL3oxQkxnTUk0ZGR3Q0FnOUx3N1hLbWpRRndLSEpETG1jS05RREFCbll1Ym1qN0lYVXhlZXlnenlaMWFMeGxXZ05CblRSTmM5ZEVrZk9sampsdFA2UXhnNTkwcGQxTWVqK2w3NzZVekZYU3VpdjBMQmMwQWtBbzQ2cEx6NlczblpXMWhTbHdVTml3a1FlYUhNREJLVzRBZ0lybFowdGkrK3o4WE9wZWp0MER3T3pYSUVmOFl2OXY3LzZ1bzhheVBRQWY5ZXAzVEFTWUNHUWl3RVFBL2F3SG13amFIUUVtZ2pZUllEL291U0VDN0Fpd0ltZ1RBVGdDelRyZHUzb01sUCtVWFgrT3BPOWJ5K3ZlTzNkbVduVlVxbElkN2QvZU1ZVWFBSUE3ZWxDNElUWkgzS0N1Unk0YWY2cERJd1hMSFVTMytxYTJzVHhIRklSL1RTblZ4UjNjZ09SaXJyNnBxNWdPd21ic0NUZ0FVS0srcVM5aTJ0T2xFM1FuNXpsOHU4a0RFR3hZeUZPRlZsQUU0UVlBZ00xeVAzYTdISEQ0VnRyVVJnREdxMm83VXh0dTlxN2tnd01BS05HOXd3MVJoQ0RZc0I0Zm8yamNoaDBsT3NuRjVqcUl6bGUxM1dIVmRyMEpOOHVWcDRQa3pyVmplazBEa3dNT3duWUFGQ2VtUGVXQy9TL096cTN5SkxHTFRRVWNvbG1DWU1QdGNsam5zZjBBQUFDQS94b2JjTHRITWJYUnN6c0Exa0c0NFdhK2p3RUFGblN2Y0lQdWltdjFXOS9VcnliMGVobU9Mb3BzOXAyem4xVnR0eCtoaGplbEhkdFk1TTYxTWNYaGJPcHJzU0Z2QkJ3QUtGWGYxTnZ1RWU1a0l3RUhVeUR2TElkMHRuTm9aeURIQ3dBQXNBNSs3OTlkYmxUVTU5L2htNTdlQ01Db21SWjB2YTV2NnZOU0R3NEFvRlFMaHhzRUc5Wm0xcDN4dzBSZUw4TXhlMi91S0xMNVdkVjJPM25jYjBycGZXbkhObFo5VSsrYTRyQXhPZUFnNEFSQWtlSWU0YU96YzZ1MUJod0VHKzRzUC9RU2JBQUFBUGpacVRWWldQNGQvalUvdjZyYTdtQmd4dzVBK1lRYnJxZm1Dd0RnSGhZS04wUVJnbURENnAzMVRiMmxpSUVDUGZQZW5DOFhnMVZ0bHhQM242TkFqRFc2TXNXaHMrNXI5ejZIZWliMm1nRVlpSmlDOTg3NXVsVytmMTE1OXlqQmhqdkxld0x1cjZCTXV0MENBR3llY01QOTVkLy9mOFkwaC94M1hMV2RnbFFBSHNxZTcvWGN0d0FBM01PZHd3MTVjOE1ONlZxOGpRNmpVSkxYdVhEY3VMejU0dlB4YTBxcEx2SDRwaVNLd041T2ZSMDJ3RWhyQUlyVk4vV0IrNE03ZVJLVEdsZkNuc0tkbmRnVGdLSUpIbDNQbmhFQWcxZTFuWHZ4QWNqTmpxYStCa3UwbDFMNiswclk0VVBWZHE5Rzgrb0FXRGxOOEc3bXZnVUE0SDUrdmN0L3FtcTd3OWpjWUxWZXVMR2xNTG13WnQ5Sm1TOUc5LzVaNHJGTldkL1VoMUU4ZDI2S3h0bzhpcEdhSHY0QlVLUzRQOGlGKysrZG9SdjlFM0RvbTNxcFhSdmozc3lld3UxeXM0UEQwZzhTSms2byszcW1mQUxBdUpVMk5mbE1nSDRsWHVhL3F2M3VkT2YvNHlnL0F6RFpIWUE1N0pWYzc2elVBd01BS04ydGt4dXF0c3VGelcrY3laVzZUQ2s5Rld5Z0lIbWo4ckZndzN5NWEwM3VZQ1BZVUs2K3FYTlIzbGFCRDF6RzdIa0VmZ0NnU0gxVDV3TDdGODdPclhMQVlXbmR0d1ViN3V5MVlBTU1nb21OQURCdW1yZGNyN1NpOXFNQ2ptRXE2bWdXOGZYS2hJZHZWZHNkNmRZTmdQdW5HNmtCQXdDNHB4dkREVlhiYmV0c3VYSmZVa3JidVJCMzVLK1RZY2hCbTJkOVUrL292dkt6dkVtYk4yeFRTbitWZG16TWw5L0x1UU91NVZtYlArUGVBUUNLRklIeXA4N09yZXFxN1I3ODRFV3c0YzVlUlBnR0tGalZkaDdXMzBEVEZnQkd3dmY5UVBSTi9XSHFhN0JoZVpyejd5bWx6MWNDRC9udlF6Uk9CQUNFR3dBQTd1M1hXLzZEYnJSV3E0dkNXeWpCYnphRDU2dmFiaXMrRDNWb0hLRGNBVGU2RHd1bHJNZXhoNEFBbEN3SHk2dTJlNXhTdW9pSDhjeVhwektkOWsxOXIrOTF3WVk3eStIeXBVM0tBRlpLa1JZQWpGZzhCM2p1SEYrcnhHZkd1YkhSbXdLT2cvOTdtZitxdHJ2YVBQRkxQRGM0MXV3UFlKUThGd1lBWU9tdW5keVFSMG1tbEo1WThwVTVFMnlnRUcvN3BxNEVHK2FMb3F5dmdnM0RGdS92WjFOZmh6WEpoWkN2SnZGS0FSaXNQS1dzYitxdGVNRE85WjdmWjRKRDFYYUhnZzIzeWxQem5nbzJ3REJFc2FQUHRldWRsWHBnQUxDQUE0dDFveEtMMG84S09BWnU5eVJDS0gvL01PWGgyTE1FQU1iTWxFc0FnUHViTzdtaGFydWRHQ1hKYXB6ZHQvc2xMTkZKMzlTNkRsNGp4dWErdjlkL21DTGx3ckdxN1o2bWxNNTFhVjY1WE5Bb01FVXBjbUZ1NzJ3QTgvUk52UjBUbmdSWnI1Yy9SNC92K3RzaGdnMDZaOTRzQnh1MmM4aW01SU1Fdm5Ob09XNmtBeThBWStCM3pNMksrNzdQdjZtcXRudm5tZlpnNWZEd1h0VjJWNCsvdXpMbHdXOW1nR0V3K1dvK2paVUFBQjVnYnJnaE5nMVlEY0VHTmkxdkRPN2FGSnl2YXJ0OGZYNHE4ZGg0dUR6eXVHcTc3WGdRSStDd09uVytsblNqQUdBSThrUzltRTdnSWN6MS9pazJ1QzNnSU5od0oxOXlxR1lBeHdrRVRXRHVSTGloZkcrcXR2TWRQUTBmY3lETGRDaFlURXh3NWdhbDd2WDJUWDBRemFyczk0OURiajd4Wi82N0VucTRqR1pLUjc3Zm1LQlBQd1NBR0tmWjUxeStqL2Y3ZWp5Y1N3Q0FCL2pseC85b2pIL1V0WEkxdmdnMnNFSDVSL0d6WEx3bDJQQ3pYUEJldGQwM3dZYnhpL2YvZGx3VHJJN0pNQUFNUnZ4T08zSEdiclIzVThHUFlNT2RuQWsyd0xCVWJiZVZVaExhdnAwMWduSzhUQ2w5enZ1YzhSa0czQ0lLNC9lczA0M09DajYyN0tDQVkyQjFIc1UxbXIvZitpdC9wL242OVgwSGpNRHNjKzd2YU1MRE9LakpBUUI0Z0ovQ0RibnJnUVZkaVZ4RXV6UEMxOFV3dk82YmVrdEhrNS9sVGMrcTdmSzYvSzJ6ejNSRXdNRm44bXE5R3ZPTEEyQjhZaXJCVzZmMlJuTUREbEVNSk5od3N4UE5EbUJZb2tqSzFMODdNTFVQaXZSSXNTL2NMbjdMdkxkVXR5cjZ1NzV2Nm1NTkN5YnBlVnkvWDY4RUh2TDA3cU9ZNEEwd1JNL3pkUHloSFBlUWpuVUQxT1lBQUR6QWQrR0dtTnJ3eElLdWhHNzViRUl1b0tsaVk1Y2ZSR0hXVjlOcXBpbkdlcjZZK2pxczBLT3E3UVJJQUJpVXZxbno5SUhYenRxTjltSkt3ejhVQTkzSjJ3alBBQU1SRCtlL0NqYmNTZW1kbkFGZ3JxcnRQdmd0YzJmRkJ4bmpOOWVYQWc2RnpjcDFEcjlIOS9PclV4NCtSQjBFd0JBSURBQUFNSG0vL3JBQU92bXN4dXNvb29WMTZmcW1WbFI4RFFWWXpPVHVrbFhiL1pGUyt0T2lySVJ4MEFBTVRnNEc1MDUvS2FWUHp0NjEzbFJ0bDZLanVmdnFtLzNSTjdVSm1UQVFNYTNoVkJPRWhXaW9BY0NnUklqUjc3MEZER2hLMDI1TTZZWWZ2Y3gvc1pjeGs4TXcrZmY2QjgveEFWZ0J6VzhCQUI3Z3YzQkRkRmQrYmpHWDdxT3UrYXpSRjFOQ3JoZWZjNmM2TDNKVkxqYUx3SXZpRlFEZ0h4R0FmS29vNGtadkNqNjJVdnpXTi9XSHFTOENESUZRdy8zWjl3UmdLRFE5dXJlUFF6blFYS0JldGQwTDRSWHU2RWswdnZyelN1amhNb2NkY29CM1FLRWVBTXAwN3J3QUFOemYxY2tOUmpFRmFrK1lBQUFnQUVsRVFWU3V4djRZWHhURnladHR1MzFUKzRFMFJ4UXBYQWcxY0lQOFdmM1pBZ0VBTTFFVThkaDlKUGYwUWlFRWxDMzJDbktuMWoybjZ0NEdVK3dJd0RURmxJYmpLR0xtZmdZMWlTNmFGUWc0Y0YrUDR2ZkIzZzlUSHM0aThDRFlDL0M5WGVzQkFNQXFYQTAzS01KZnZyYzY2TE1HcjIybXphZnpJbmVWZzBGVjI1MlpZQVFBWEpWL3oxVnR0eTNnd0lLZTVuQ01SWU95UkhIanZqRERVZzJxMkJHQWNZdm5BYm1SMjRGbkFrdnpaWWloN1FnNFBOUFFpQ1hLejQ2ZVYyMTNkZnJMeHdnOG1OZ0lBQUFBUy9aUHVLRnF1eDFkUzVhdmIrckRzYjBtaW5MU043VlEwaldxdGp0V3NNQ0N6b1ViQUlBZlJXQjlxMnE3QzcrYnVVV2VxTGV0eVFGc1JvUVhjaUJ0SnpvSEttcGNyYzZFR2dEV0tjSUxzKy81bmZqekcyMjFCaHRraklaR3BqR3lTaS96MzVVSkQ1ZHh6UnpaRndBQUFJQ0htVTF1ZUdVZGwrN2R5RjRQNWNpN1pMczJ4dWFyMmk0SFB0N2Y1ei9MNUxtbUFJQnI5VTI5WGJYZHFUQWsxOGdkVGJjdERxV0p6NjBoMlZGOE5oaWF1Z0NVWVQ4Q2ZrT3hKWUE0SEgxVEQzcEswNVZtQlg3THN3NzVkOHliL0hjbDhIQ1M3NXROZHdRQUFJREZ6TUlOTzladDZZeWdaTmx5eDQ4ZEcyRHp4UVNhVTBVUVBNQ1FIZ0lPZ2k2ZUFJeE4zOVM3Sm9ReHgxbCtiMWdZQ3FXSWkxWElVeHZzZlFLVTRZbnBCYXpJSDJOWjJQZ3RyekVXbTVEM2ovWWk3R0N5QXdBQUFOelJML0Z2MjdKZ3k2V2dreVY3MFRmMWxtRER6L0lvNnFydDhycDhGbXpnZ1FUOUFJQmI5VTJkQ3lMZVdpbkNSOEVHWUlMMm5YUUFHTFV2UTUvYThLTytxWE9qZ3NjeEhSMDJZVGJaNFd2VmRuMmVLQktOMndBWUowRTJBSUFIbUlVYmRIRmJMaHRqTE12cnZxa3JZWm41cXJZN3o1dUFPbFB4VURHNlhUaG11YzdHOUdJQTRLcStxUS96dmJwRm1ieDNmVk8vbXZvaUFKT1RQL3ZPblhZQUdMVlJCaGx6dC95K3FYTXgrYlBvb2crYmxPc3pQa2ZRNFNLZVV3RXdFdlpPQUFBZTVwZXE3YmF0NGRKSjRQSlFKeEZxT0xhU1A2dmE3amh2OXFXVTZ0S09qY0U2ZE9xV1RpZ0xnRkdMZS9VWHp2Smt2ZTJiK21EcWl3Qk16aGVmZlFBd2V1L0czbkFyRnh2bWFlbWFGbENRM01UdFV3UWR6azEwQUFBQVlPcnk1QWJoaHVVekNZUDd5bE0vSHZkTmJiei9IRlhiN1Vlb1lhKzRnMk93cXJaNzVYTjdKWVFiQUJpOUtQaDQ1a3hQenV1WTNnRXdOYnJKQXNDNGRWTUtNdWFtQmJuUm1KQURoYW12VEhRNGNuSUFBQUNZb2wrYzlkVXdFWU1GNWZHM3ovSTQzRHdXMStKOUwzY29xZG91cjh2N2tvNkwwVEFoWlFYRzN0MExBR1ppdlBUVHVLZG4vRjZZc0FkTTFHOTlVMTg0K1FBd1dwZFREVEplQ1RuazVnVmZDamdrbVBuOXlqU0hMYXNDQUFEQVZBZzNySTdPKzl4Vjd2cTVGVVZSWEpFMzZ2S0dYZTVRa2xKNlpHMVl0cXJ0VHIyM1Z1SnNoSzhKQUs0VnhaN2JBZzZqOTFTQUU1aW92SGYxd2NrSGdGR2JmUE90L0p5dWIrcnRDRHE4TGVDUVlDWlBjL2dxNUFBd0hGWGJtWDRKQVBBQXZ4Z252akp2UnZxNldKNTNlWU5VMTgvNW91ajhhMnpZd1NyZVkvbmFlMjVsVjBMUkh3Q1RrNHRBY21oWmw4ZFJ5cUdWeHpxV0F4UDEydDRWQUl6ZVU3OTN2dGMzOVdHRUhCNm5sRDZXZEd4TW1wQURBQUFBazVERERUYXJWaVFLWitGSEh5UFVjR0JsZmxhMTNWRWVzYXJvbkZXcTJ1NHdwYlJua1ZmbWFLU3ZDd0J1bGJzOG1tSTBLbDlpMHQ2a081Z0NreVhZQUFEamRpblljTE5vWlBEcVN0REJSQWRLTUFzNXVGY0hBQUJnbElRYlZtdXZhcnY5TWI5QUZ0SkZ0ODlYbHUxbitWcUpVTVB2cFIwYjR4TEJCdE4xVnVlajRqOEFwcTV2Nmp3aDhXVHE2ekFDWFlSVkFLYm9tV0FEQUl6YUxNanRPZkVkUmREaE1CcVk1YkREQzgwTjJMQmNpOUJYYmJmclJBQUFEOUUzOWFrRmhIRnhYVE4wdjNnVHI5ejdxdTEyUnY0YXVkbGxQQkRlVWZEN3MzeDlWRzJYMStWOWFjZkcrQWcycklXcERRRHc3NGJSdm82T2czYVdmOE5OZlJHQVNmb1N6VG5Pblg0QUdLMTNndHdQbDUreDUrWUdQNFFkUGc3OWRURkluNnEyKytEVUFRQUFNQmEveHV2SVhTV2VPNnNyODdscU8yTmRwOG40L210VWJiZVZVanFOMGFtd2p2ZGN2aGIzclBSS25RbE5Bc0QvNVk2T0VlVDkwN0lNeWttRVV3Q201bTMrN25MV0FXRFVuZ2t4cmtic2pmKzNQeDdQd2ZJMDl3UFB3bGlEbDdFSHRhM1pIZ0RBMHFpbkhRYm5DVVpvRm00NGRaR3YzSG5WZGpZVHBrTXh6QTJpZThqTFlnK1EwYW5hN3R6RGc3VlFCQU1BUCtpYitxaHF1eHgwLzh2YURJTENYbUNLdXBUU3JuMUxBQmcxejYzV0xPNnRqdVB2UDFYYjVjRER2dWRrck1DamxOSlhUUmVCTmNxMVptOHNPQUFBeXpZTE54eTU0Vnk1dkpsd1ViWGRqczJFVWV2NnB0NloraUpjcDJxN1E1ODFyRk4wUnJxSXoyQlc2Nk9wRFFBd1g5L1VINnEyZTVGUyttU0ppbWJ5SGpBMWx4RnEwTDBaQU1aTGlMRXdlWThncGZUaDZsSGxCbmtSZU1oL1Q2YStSanpZMzNrZnlqTWJnSTNhdlRyUkNRQ0F4ZndUYnNnYldsWGJ2VXNwL1c3OVZ1cFJiQ2JvbGpBK2w4WjhYcTlxdTd3Wis3N1U0Mk9jb3Z1UkRzbnJvK3NYQU53Z1AxRE92d1h6YjBMclZDUVAvWUdwRWVnQ2dIRVRhaGlRZUc1OCtPTjA1SGpPa2YvMnByNUdMT3lUZ0FNQUFBQkQ5Y3VWNHo1MEZ0Y21CeHgySi9KYXh5NkhHcDcxVGIxbGcvaG5lVkpKMVhiZkJCdFl0NnJ0amdRYjF1b1BuNEVBY0xzb1ZuZ2N2eU1veDFNUCs0R0ptTzFqVllJTkFEQmFPZFR3T0U4WnQyYzdmSG5LUTkvVSszSC85czlmL2cyYjkrUlRTbCttdmo3YzZsTk1CUUVBdUlzenEvUXpOWjVsYzM2dTVYcG04SDZkdllDWTNwQTNRdjUwV3RjaWJ5YTg3WnRhcUdTNGRMaTdSdFYyV3pGaXJ5N3lBQm10ZU85ZHhLUWMxdU9zYitvamF3MEFkeFBGSlZ0VjIrVjdsaWVXYmFOTTRBT200aVNsZE9EekRnQkd6VE9yaVlqR0NVZng5eDlUSHJoR2ZsNHI0QURETXBqZjdqR3R1SUFqS1pKaVd3Q0FCN2c2dVNGRmNhSTd6L1Y1VTdXZDdwRERjNkxEM2ZXcXRzdnI4bFd3Z1hXcjJ1NGczbnVDRGV2MWFrb3ZGZ0NXcFcvcWJWMHpOa3F3QVJpNzdzcVVobjJmZHpCSkg1eDJHTDEzTWFYQk15dE1lZUE2VCtMWkxUQWNybG1Bc3V3NEgwVVRKb09SK25YT3k4cEZpbjg3NFd2enZHcTdiNG9xQmlFL0ZONTFudWFMd25LVFg5aUlxdTNPQldvMjRvWFBSQUM0djc2cGQ2dTJ5MFZuTHkzalduMkpjQW5BMk9UUTNINTA4d1dteXo0MmpGY09hUitaQ3M5ZG1mSkEyTXY3VHprQVkwR2dhUGszL2FzQjNzZGZhajQ0bDJKb2hzZyt3bnhiSlI0VTNNSXpBZ2J2cDNCRDN1U28ydTUxU3VtOTA3czIrVWIvYTE1M25WV0tkQmtQZzg2bnZoRHp4QWJvWCtVZEdWUGcvYmRSZitSUm94TisvUUN3RkgxVHY2cmFMaGNaL0c1RjErSXNoMG9tOERxQmFjZ2RlQS90SjNJSGJ4WENBZ3pXU1h6ZksweGdhYUxJUGYvdHovNDdxN2JianNCRGJtYjJ4R3FQenJIQ3ZFRjY0VmtjQTVEcmFKNDdVVDhSK0dDSXpqWGptc3N6cGJJNVAvUFpRMkR3NWsxdXlCc2F4MVhiN2VyV3NIYnZxN2JiVjJoUmxOOTBzWml2YXJ1Y05ELzFvNHhOcU5wdUs5NS9walZzeGtuZjFFY2xIaGpNb1loMWdPSzN5S2VwcndQVDBUZjFRVXowZStPMHIxUytoOW5mNEQ4ZjRLRStScmRteFMwQU1FNWZvZ0Q1eVBRVjFzMlVoOUY3bEtmd2U3WURzRDc1V1pjOUhBQ0ErNWtiYmtqL2JtRHNSNGNHQ2R2MWVsNjFYWjlTZW1aU3dFYjlZWE5uUGtYbGJGb09nWmt1dEZGbmlnSUJZUGx5TitXcTdTN2M1NnlNanRYQWtGeEdKOTFqRDhFQllMUSt4dmY5QjBFR1NtYkt3NmdjL2hoZUFWaUNVM1ZsMXpJeGg2RTUxWVJyTHA5eFpYTis1dk5jZ2NHN050eVEvdDJzMkkzaUNwc1M2L2U1YWp0ZEpkZlBtdCtnYXJ0am5WbllsQWpXWEpnV3NsRTY0QVBBQ3NVVXhRdVRTNWJ1ZFY3YmtiMG1ZQnpPb2xEc1ZKTVRBQmlsTGdvS1BnZ3NNaWFtUEF4V250NndiNDhFWUcxMll0OEhHRGlUV01xVXo4dlUxd0RHN01ad1E5aFJUTG94ZTdFSnRPc0I1OHAxc2M2NjQ4eWhVejZiSmxoVEJNRUdBRmlEdkRsYXRkM1RsTkxmMW5zcFh0aHdCallnVDE0NGoyTEdpd2d2WERnUkFEQjYrUjVnMjdNbXBzcVVoMEhJNTBhNEFWZ21uZDZ2NTlrNmd4TFBwNXkwK1haMHdpL1N6dFFYNERxZWpUSUd0NFliOGdaY2JEcDhkY1kzNHBFcERpdDFLVHh5dlVnNDZockx4bmdQRmtPd0FRRFdLQmZBVm0zM1dLT0JCeE5zQUI0cVA4MzdGcC9IRi9HLzV6MmtiL2FTQUlBNTh1KzNyMVhiK1MwQ3daU0g0anpQdFIvQzE4QVMrVHk1M3ZOU0R3eFltQ0w2TWprdk1HSjNtZHd3Q3pqb0hMbFplWXBEM3R4NTV1SHAwcncyZG5PK0NEU2RLNlJpVTZxMjI0clVjKzBrYkp4Z0F3QnN3SlZHQStjNkc5N0xVdy9xNFI4dkpyUU1GNjU3QUNib1pNVWR1SGQxNHIyWFQxWGJ2ZTJiK25DQXh3NXJjY09VaDRQNDF6eWpYSjI4dmo2ZmdLV0lSajBXOHhxNW1hUFFLd056SnBnemw1cVpNamt2ODUyVmVGQ3dxRHVGRzlML2IwaWZLbmpldUR6Rm9ldWJXdkxzL3Q3MVRYMHcxSU5mSlFYbGxLQnF1Mk9kZW9yeHNXL3FWMU5mQkFEWWxCeHdTQ2x0VjIxMzdoNzl6dkowdnUxWU81ZzhEMDhCWVBRdVZ2eDlmMXExWFM0Ky91eXR0TEEzVWN5bTJBTHVLTUxLQi9IM2o2cnRab1g0R2o4c2o4OGxZTmtVUTE5dk4ycHdnR0Y3VXJYZGpvYlU1Y2pudzIrRWEzbEd5aWo4c3NpTGlBMkY3U2dXWUhQcXF1MzYyTXpoN25MMzhVcXdZYjRvS1ArcWFJcE55WjlwK2JOTnNLRVk3d1FiQUtBTUVXN1haZU4yWC9xbTNoSnNBQUNBNVluaWpjZjVmdHV5THV4NTFYYmZvckVVY0E5NUNuL2YxTnZ4akxkS0tmMmhWdUhCRkNBRHk2Ylk5M3FldHpNMHdqalhjejJYeGZtNG51OWxSbUdoY0VPNjBqblNKbVlSM3NlbXFDa09OOHN6OEI3cmpqT2ZnbkkyTFgrRzVjK3kvSm5tWkJUanRTQVlBSlFsZnMrY09DM1h5bUgyN1VLUERRQUFCaTAvRzR6N2JiOUpGcGVuNFgvTlV4eUdkdUJRb3I2cGo2S3hRUTQ2dkJaMHVCK2ZTY0NTWFZqUWE5VStjeGtZNFlickthWXZpL054UGRjeG83Qnd1Q0Y5djRuWmVSdHNYTjRVL1Z5MW5RK2wrWjdtTHFjNmQvNHNDc3A3QmVWc1N1NVdWYlhkZVl3MGYrUkVGT05GN29RMDlVVUFnQkwxVFcxNjMzeG53dXdBQUxCNjhadmtOMHQ5TDUrcXRqc2M0SEZEc1dLcXcxWk1sMUczQUxBNU9rVGZUQUV1UXlLc2REMWhwVUxFZWFpbnZnNDNjQjB6Q3ZjS044emtvdkdVMGtkdmhTTGswYlo5N3NJLzlZVzRxbTlxSDlZL2lJTHliMUZRRHB0NkgrYmkrYTl1Tm90eUdWTnVoT1VBQUFBQWdMbjZwdjZRRzB2cGxuNHZielFyZytXTHhveTVidUdaejZZN1U1Z0hMSTNueTdmNnZmRGpnLytvczd1VnVzd3lPQTgzY0IwekZnOEtONlIvTDRhY01IM3JIVkdNOTdsd1BYZmxuL3BDOEwwclhmSy82cEpmbkx6UittRUtMelFIc0dKaXlGNEJoOFAvbmNVWVoxTnVBQUFBQUlBYjVRZmwwUzFkcC9URlBZL25lRnRETzNBb1hkL1U1L0haZE9aa0FheWR6OTRibU9ERndMaWVyN2ZudDl4bXhmcXJPYnVlNjVmUmVIQzRJZjI3VVhCb0RHMVJjdUg2NTF6STdndVZwRXQrNlY1SFVmbW9Selhtd0ZXRUd0NFhjRGg4NzQrK3FYWG9BUUFBQUFBV0VwM1MzMW0xaGVYbmVGK3J0ck12Q3lzUXp6eE9yTzJOZlA0QXkyWjZ3ODNlbEh4dzhBUFg4ODJPU2o2NENiRCtOM1A5TWhwTENUY2tZMmhMVmNmbTZQSFVGMktxZE1rdjJrbmYxRlhmMUtPK1BpUFVrS2NCZkM3Z2NQalpzNzZwM2ZnREFBQUFBUGZTTi9WQlN1bUYxYnVYVDdyNHdtcjBUYjJmVXZwaWVRSFc1b09sdnBuYUxRWkVjZlROOHZTR25aSVBjS3lxdHR0V0Eza3IxeStqc2JSd1F6S0d0bVQ1UzdXM1FUb2RWd3JLZGNrdlR4ZWhodjB4djhnOE5TWlBqNGxRdzZNQ0RvbnZuY1g3Y05RVFF3QUFBQUNBMWV1Yk9qODhmNndCMnIyOHFkcE84UUdzaG1makFHc1N6NTJGeW02bUlKcEJpTjkzM0V4WWFUTUU2VzdoK21WTWxocHVtREdHdGxodkl1UXc2cUxxS1l1Qzhnc0Y1VVhLRDNVZXgrZmpxRVhIZ2E4eFBZYnkvQkVqbVFFQUFBQUFscUp2Nm0vUkFPM01paTdzZVc1WWxaL3hET3k0b1doam41NE9VQ0JGcDdkVGRNcFErRjEzczFxVDZmV3EydTVBSGRxdFhMZU15a3JDRGNrWTJ0SzlqMDFTaWVBUmlTNzV1YUQ4eWRUWG9qQTUxUEFzUDlUSkQzZkcvRUp6cUNFSHFJd0FLOVlzWUhNMDlZVUFBQUFBQUZZakdxdTh0YndMeXcycnZsWnQ5MnBneHcybDAwVWNZSDJFRzI3M3lOUXVCc0wxZkx2Y1pGcGowVFdJZGY1ejlDLzA0Vnkzak1yS3dnM3ArekcwTmczS2t6ZEpQd3M1RE4rVmduTHB4UEs4amxERCtaaGZaSjRHSTlSUXZIZFRDTmdBQUFBQUFKdlhOM1h1WVBuTXFiaVh2NnEyMDZBR2x1ZkNXZ0tzUjlTSVhWcnVXK1dwWGFZTFVUcnYwYnY1VkxYZDloQU9kS2hpZlQ5TmZSM3V5SFhMcUt3MDNKRCtQNFkyZjhpODg5WXAwaXprY0c3YzdiQW9LQy9hU2QvVTFkakgzVjU1RDc0djRIQ1lielk1NU1ENkFBQUFBQURyRWsxL05FQzduOTlqV2pjQXdOQUlhZDdOWHRWMk9teFRyR2ljZWVZTTNjbmZBZzZyRWV2Njl4aGYyd3FjYVhqTDJLdzgzREFUaFpVdnZJT0tWY2U0V3lHSHd1VkpHM25paG9MeUluWDVZVTNmMVB0amZwSGVnNE54TW9YSklRQUFBQUJBbWE0MFFQdm9GQzJzanVucmltUUFnQ0ZSc0g5M0x3VmFLWnpyK2U1eXdHRjNLQWM3QkxHZWdnMTM1M3BsZE5ZV2JrZ3hnaXgzTTQ4Q1lNcjBYOGpCK1NsTERwM0VlZmtjRXpjb3g2dzcvczZZVTVCWFFnM2VnMldidlI5SEhiSUJBQUFBQUlhaGIrcFhLYVhYVHRmQ0hrV1J6S3VCSFRlVTVMbXpBYkErMFhoUHQvZTd5NEhXUHRkaURPV0FtWlJqcDNzaG42cTJPeHpROFJZcjF2SFQxTmRoRVgxVG01ekU2S3cxM0RDVEM0QlRTbjk0T3hWdGRnUHRScVVBVmR1ZDV0QkpoRThveTI5ajc0NHZXRE1vNzB4ckFBQUFBQUJLMHpkMWZ0NzBOSnF6c0ppL3FyWlRxQUFMRWd3QzJCajNMWXY3WExXZHJ0c1VKWnE3bXNLM21EY3hnVzlyU0FkZGlxaFB1OGpyT1BXMVdKRHJsRkhhU0xnaC9UOHQ5TmdtWnZIMmhCdzJKNjk3WG45ZFJZcjBSNTVFMHpmMWFIOWdYZ2sxQ05hVUwzK1hQdTJiK21EcUN3RUFBQUFBbEtsdjZvdmNuTVdFOTN2NTNkUjFXSmppV29BTmlCcUtMOVorWVMvVloxRWc5MU9MeTAxanZ3b3NMU1krKzNKOTJwTWhIWGNoWEtlTTBzYkNEU2tTZnJHSitjN2JxM2hDRG10VXRkMStoQnIySnZPaWgrTWtRZzJqdmpHNGN0TW8xRkMrUDJKYXc4WFVGd0lBQUFBQUtGOU1lUGRzY0hGMWRBSGRIdHFCdzdyRlZIeUZVUUNiYzJqdDcwMTlGc1hvbS9wVU9QM2Vab0dsYzVNYzVvdW11OGRxSkIra2krc1VSbWVqNFlhWjZEVDl6QlNIUVhBVHZVSlYyKzNramVtVTB2dlJ2c2poeWpmcmovdW0zaC96aTNUVE9DaXo5NlFFTGdBQUFBQXdLUEZzOElXenRyRGNCZlR2cXUxZURleTRZUzF5K0NlZXRacUtmek1GVU1CSzlVMTliSHJEZzgzcXM3NjU5MlBEMUtROFRCMlRIUEsxUE9xYXM3dktuMmx4ei81VmZkcUR1VDRaclY5TGVXRjlVK2RScWx0Uk5POURxM3o1Sm5vdnV0ajc0bjJnU0dpZTZwSmZwQnk2Mm8zUHFOR0tHMmlobXVGNE52YjNKQUFBQUFBd2JybTdZTlYyajFOS0YxRzB6OTM5VmJXZFozUVFZcUxKQjg5YUFZcVN3NngvT1NVUDlpanUvV2IvUFc5ek1XdmYxTitHKzVJWWtoeFdxdHJ1MEZTc0I4dlg4dnVxN2Q1SExkclJsSzdscXUwT1lxcVAzLzdMOHlYQ2hEQkt4WVFiWnZJbVhOVjJSMUhvN2NPc2ZFSU9EMVMxWGQ1b2V6bm9GekZlcjhkK0V5RFVNRGcrYXdFQUFBQ0EwWWhDanR6ODdGU245WVhsWjNTNU9kUDJ3STRibGlJQ0RVZWVzOTZMeVEzQXl2Vk4vYUZxdXpQM2VFdjNKdjlkQ1R0OFRDa2Q1L1VlejB1a1FJZHFpNWJxMFp4citTU3U1Y0hmcDFWdHQ1TlMybzgvOWIrcmN6aldGd2FweEhCRE1zVmhxSVFjRmhTcDFqZURPdWpwR1AzN09HNGtoY2lHbzRzSklyb3ZBQUFBQUl2YWpiMUltTWxkOGsvN3ByNndJcFNpYitwZHowM3U1VW5WZG4xSzZhbHJtakdMNTFxdjRzOTBoZ2NhUTlIY1JPVEdvTHRUWHdTK2s3L3JQd3pzbVhHdXUvaTdnT01Zc3h6eWUzbWxRSHFtaTVxUVhJTjNIclY0Y0M4eHZlSEFmZGhLN1VYOTVZLy9qTE80bGsvaldpN2lPeUR1VWZJOSttNzhxVDlicjg3VUJzYXV5SEREVEV4eE9Jd2JMUitBd3pBTE9TakV2WVpPK1VVN3l3OVF4dndDcTdiYmlzOVU0K0tHNDRWTlpnQUFBT0FCbnV1VXlUenh3UHh0MzlUQ0x4UWh2eGRqZ3NNbloyUmhmMWR0Ti9wcDFPbi8zZnB6Z2Z0MkZOTXdEdTVWMXVmalZGN29DR2dFeWp6djR6Nyt0eUYwNnMvaHk2cnQzcVdVZmkvZ2NLYW12bHFJUHFkZytpWm5VMSs4RmJxSW1wM2pBZGJVNVhxM3p3VWN4OVRNOXZYK2FRU3d3TFg4SmQ1dmQ3VWx2RElvbW84emVrV0hHMUxjNk1ZVUI5MWFoaVYvMlgydDJrN0lJZWlVWDdSOFE3Y3o1dmRwaEJwTzNZZ095cnUrcVErbXZnZ0FBQUFBck5TYnF1MHVkSHVqRkxuUlM5VjJqelhwdVpkYzdQaXFiK3BYQXp6MlcxVnRkKzRaQnl6RmtXV0VVZmlyYXJ0blErakduNTk1UjRkdjMrUERJWFM0T3M4anZQWm4xWGFYT2JBN2xGcWwvSGxUdGQySjhOMWdQUEdiZXJST1RPTmhDbjRaeW11TXprR1Bvd2laNFppRkhNNmp1SHB5OHV1T0RkZlBnZzNGeVQ4VThnLyt3ZnhZdUkrcTdmS0R5YTgyQ3dZamg4SWVDellBQUFBQXNDYmJGcHFTNVAzNnZHK3Z1L2k5dk15QnBiRTlreE5zZ0tYNVlsbzRqTXFRdnU5SEdiNkVCOG8xWklOcU5OQTM5WDdVV2dHYmNSblhJWXplWU1JTjZmdk56TmNGSEE2TG1ZVWN2c1VFZzBsUVZGNjBQSjU1YTh4SnhxcnQ5cXUyNjZXbUJ5V0hiVVk5UlFRQUFBQUE0QzVpQXNFZkZtdGhUK0taM0NpZXgrbjBERXRsYWdPd0VYMVRYNmoxZ3JtR0dFb1dWb0xOY2YweEdZTUtOOHprOGNoOVUxY3BwYk15am9nRjVOVHA1N0dISEtxMk8xQlVYcXc4bXFrYTg1ajFmRzNsYXl5UG9DN2djTGliZC9HK05EWU1BQUFBQUNEMFRaMExjWjlhajN2SnorTk1DQVptdnNSbktzQkdSSTNHTzZzUHd4WlRvTjQ2amJCMmIwMWhZMG9HR1c2WTZaczZkK3A0WnR6UklNMUNEbjN1TGorV0YxVzEzYXNJTmZ4WndPSHd2UzZsOUhqTW81bnltT2tZemZ3NXJqSEtOM3RmZXNBRUFBQUFBREJIN3ZRYlRjODY2N093UDZ1Mit6Q3dZd1pXdzdNb1lPUGl1ZmhIWndLR3JXL3FROWN5ck5WWlhIY3dHWU1PTjZSL3Z5elArNmJla2dnY3RQZEREemxjNlpUL1Z3R0h3L2R5K09scDM5UTdmVk4vRyt2YVZHMlh1eHg4TlpwNU1QTDc4dG5ZMzVjQUFBQUFBTXVTOTFOMSs3MlhsMVhiWGVRR1NRTThkbUE1OG1SN1FTZWdDSDFUdjhwRm1zNEdERnRjeTErY1JsaTVMOUVFSGlabDhPR0dtVWdtUGRhMVpkQm1JWWZqb2J3SW5mS0w5eUtIbjNKWHA3Ryt3Q3ZUUXZZS09CenU1bTI4TDgrdEZ3QUFBQURBM1VXMzM5OHMyY0tlNUFaSnVWblh3STRiZUxndlk1NXNEd3hURkdrcWlvYmgyNG5tbnNCcVhNWjFCcE16bW5CRCt2Zm05MXQwYlhubWkzUFE5aUxrY0ZweUZ4bWQ4b3YyT28rbzdwdjZkS3d2TUlJMUY2YUZERW9PM3owMkpnd0FBQUFBNFA2aSsvaGp6d0x2NVhQVmRnY0RQRzdnL2hSREFVWHFtM3BiQTFzWXRseXJtVkxhOXRzTVZtWW5yak9ZbkZHRkcyWnlOK3pjRlR0M3h5N2ppTGluNTlGRjVyeWtrRVBWZHZzNjVSZnJKRUlOZzVuK2NSOVYyeDFGc09iSjhJNStrdktQdUdjNWZPZUdFd0FBQUFEZzRhTGhXWDUyZEdZNUYvWm4xWFlmQm5iTXdQMDg5V3dLS0ZrMHNIVS9Cd01tNEFBcmNSbjM4aGVXbDZrYVpiaGhKbmZIem9YT2tyNkRWMGZJNGRzbXgrVldiYmNib1liMzQxbmEwWmgxeEIvMVNOV3E3YmJ6ZFpCUytyMkF3K0Z1L3NnUDJITG96bm9CQUFBQUFDeFgzOVM3bXAzZHk4dDQ3bGJzQkhYZ3dSUkRBWU1ROTNQdm5DMFlMZ0VIV0twOEhXMjdsMmZxUmgxdW1JbWs3ek5mb0lQM0tNYmw5bmw2d3JwZVRBNVVSRUg1cC9FdTdXQk5waU4rVEd2NE82NER5dGZGRkpFajV3b0FBQUFBWUhWeXM3T1UwZ3RMdkxCSDBWeHNkMkRIRGR6c01wckNLWVlDQnFOdjZvT1UwbS9PR0F6WGxlbDZtbEREL1hYUlJOZjBOU1p2RXVHRzlPOFg2SGw4Z2I0dTRIQjR1UGNSY2xoWjRYRHVWbE8xWGU2Mi9sbEJlWkZlVDZFamZyd1BUV3NZanY4Q04xTmZDQUFBQUFDQWRlbWIralFYODJwMGRpK2Zxclk3SE9CeEF6OVREQVVNVnQvVUg5elB3ZkJGdll4cExMQzRkK3JONFA4bUUyNlk2WnY2T0hmVFRpbWRsSEZFUE5EdkVYTDRzTXpSdVZYYkhlZHVOU21sMmdrcXpydm9pSDg4OWhkYXRkMnJlQjhLMXd6REpBSTNBQUFBQUFBbHV0SXA5S01UdExBM1ZkdWREdXlZZ2UrOVZRd0ZETjJWK3ptRjBUQmdNWTNGZEQyNHV4ZHgzUUJoY3VHR21iNnA5eVB4YXhUU09MeU0wYm5uVmR0dDMvY1ZWVzIzbjhNU0thVzlxUzlvZ1Q1R3FHRVNYK1F4bGVTdkFnNkYyNTFOSlhBREFBQUFBRkM2dnFsejQ2QS9uS2lGUGMrVHBKZlpUQXhZaTl6aC9HbmYxQ2F3QUtNUmRTRlBUWEdBNGNyVDlhSUJ0ZHBNdUY2K1BoN0hORXJnaXNtR0c5TC9FNys1ZThFek44U2prU2N0L0IyYnIzZnVUSkgvdlJGcWVELzFCU3pRN0V2ODFWUmVjSFJIK3IyQVErRm0rWHZqV2QvVXU5WUpBQUFBQUtBY2ZWTWZ4Zk0vRnZNb21vblo5NFpoZUJ0VHhTK2NMMkJzOG1kYlRIRjQ3ZVRDY0VWdDVtOU9JZnprZGI0K2NnMnpwWUdmVFRyY01OTTM5YmtiNHRISm02K2ZjMkFoVDJPNDdzWGw3ak01Q0pIL3ZWTmZzQUxOQ3NjbjlTVWV3WWJuQlJ3S04zc2RtOFhuMWdrQUFBQUFvRHp4L0M5M0N2M2k5Q3pzVTlWMnVzQkR1YnFZS3U0NkJVYXZiK3JqdUtjN2NiWmhtUHFtL3VBNmh2K2N4TDM4c1NXQjZ3azNYT0dHZUxUZVI4amh2eStFQ0RYa291U3ZFWVNnTEpNc0hLL2E3a2l3b1hnZjNXQUNBQUFBQUF4SDM5VGJLYVYzVHRuQzNrUkRKcUFjczRuM084NEpNRFY5VStmR3BvL2pzeEFZSU5jeEV6ZTdsNysyVVRmd2Y3OWFpNS9GQjhoK0ZML1hwUjBmOTdaWHRkMWVUQVFRYUNqVHlWUy93S3UyeTV1UXZ4ZHdLTXlYUHplMmpRSURBQUFBQUJpZXZxa1BvbEQvTDZkdkljOWpBcnI5Y2Rpc3M1VFNLOWNoTUhYeE9maFB3Q3Nhbk81TmZVMWdhR2JYY1c1TW5GSTZWWnZKQk9SUXc2NTdlVmlNeVEwM2lJNEhqNDJySFIzQmh2TE1ScWRPT1psNFVNQXhNTjlza29pYlRBQUFBQUNBZ2VxYitrTks2V2swcytIdThuTzFyMVhiN1ZveldMcy80aG1xWWlpQUgrVDZrdndabVovbld4c1lubnh2azJzejR6bytjUW9ab1krenFXdnU1V0Z4d2cyM2lDL1NQSzcybWMxT1dMcExvMVAvczEzSWNmQi9KN0ZoZkd4TkFBQUFBQUNHcjIvcWk5ek1KcnFnczVoUFZkc2RXak5ZdWR6WjlXazhvenF5M0FBM3k4L3pvemo2YVh5R0FnUHpRMWhKZlNaRDl6cnU1VTFlZ3djUWJyaWp2cW5QWTdOVDRoZVc0NWx1K0JUcVM0UnVwanhKQkFBQUFBQmd0SElYOUpUU1cyZDRZZURKa2xBQUFBd3hTVVJCVkcrcXRqc2QyREhERU9SblV5K2lDQ3AzZHIxdzFnQVdFeUhXV1JmNDN4Ukl3L0JFV0NuWFp6Nk9ydmN3RkxNcERacm93cEw4YWlFWEV4OCt4MVhiSGFTVS9oelNzVU1oWHZzU3AyQjU0OWlER1FBQUFBQ0FrZXViK2pBSzlUODUxd3Q1WHJWZGJseTF2YVlHVnBwa01WWjVnc3hCYnJMb0RBTXNWOS9VSDFKS3VVQTZWVzJYUTYyNVJ1V0paWVpoaU44WnI5Sy8xL0JXWE1Ndm5UNEtrKy9uOXdXVFlUV0VHKzRwUmtBZVZXMlh2enozQnZraVlMMU9kTUtuWU42ZkFBQUFBQUFUazV2ZFZHMlh1NExtWW9SSHp2K2Q1Ylg2V3JYZGIxRTh1REs1OEx0cXU0K0ttUmlCM0VIOE1Pb01BRmlUYUc2NG5mNHRrczcvODFDZEZ3WFJIUFlXYzRJT0IvSG45eHVia0NkQUhxMHA2QStUSnR6d1FGRU11MSsxWGU2b1VBLzZ4Y0JxZENtbFhWL3FGTXI3RXdBQUFBQmd3bUovZUN1bU9EejNYbGpJWDFYYnZldWIrbUNWLzVDK3FWODVQd3pRbHlpZy9lQTVGRUFab3J2MmZ2ek5wam9jdXNkZ1E4NzZwaFp1V0VEY1V4M0duOEFTNjNBU0FXWFRHV0ROaEJ1V3BHL3FuVWdIbmdvNXdEOHVvMmpjS0ZWSzVQMEpBQUFBQU1CLytxYmVyZG91RituL2FWVVc4bnN1RE16UFNsZjVEOG5uSi8xYndIUVlCWWxQVnZuUGd3WGw1MDRmRkQ0QkRFdE1kZGlkSFhRVVN1KzcxMkFOWGdzMlBOeWN3Tkpzc29Ocm1Qdkk5L1I1eXRxeGUzcllQT0dHSllwMDRDemtZSHd0VTdieU1jVHdBRy83cGo2MGdBQUFBQUFBWE5VMzlWSFZkdm41eHJubmZBdXBxN2I3NXpucHFvdEFZbi8vcHozK2VENjdFd1dLMi9HbkN6T3JrS2VDSDBmUms0a01BQ01TOXpIZjNXdkVQY2FzZUZxeld4N2lMQmZlYThLNU9qOU9ka2l1WWE3M0pZSU1Id1Fab0V6Q0RTdHdaWHp0VGt4eXNQbkpWQ2dhcDJUZHFqdEh3WWI1d1RYZmFZa0h4YTA4Rkp6UCt4bmdlbWNLbHdDL2l3QlloaWhzMklvSkFXOHM2cDA5aW9MdjNTWDk5eTBrbnMrZTNuWC9KRG96YjhmeHpvSVJPNTdyRXI3RUpJWlREZDNXNHRSdmVxQlVjWTl4RkgvL2lZTHBWM0V2OGNvOUJLR0xvUFJwM0VmWXE5cXdHNjdoN1N2WDc2NXJlTFEreHZVb3hBQURVL1Y5NzV5dG1KQURFM0RTTi9XK0UzMS9WZHZadEZ1ZFBEWnNWL3FkS2ZEQTlTZjUrdC9XUFd1WXFyYkxEOFAzcHI0T1YxejJUYjFWek5Hd01WWGI1ZnZ1OTg3QWQ1N2FrS1JxdS94ZzR2ZkpMOFQzUHZaTi9hcWtBNEoxcU5ydXd0aDVXTWhnR29KRVYzalBXYjczekw3bjZzWHZzQ1B2dnp0NTF6ZjF3UUNPODE2dVRJZlludlBuL21NNExxOFVIWjVINGFFOTVBMkthK3ZDNXl3c1JJMUc0YUpXYlBkS2dGTEgrR0g3RXZjTi8vMTVMakZ1UDF6RHUrNzNpM1QxdXN6MzlCb0Z3b2dJTjZ5UkloUkdxSXVpY1J0K0R5VGNzREt2KzZZK0h1bHJnN25pSWNEUnhEdUU1TTdOaDM2OERwLzM4ejl5TjRrajcyZXVpbXZqSUVib1RuVXp0WXZQZXQwVCtVODhiTWhoejVjVFh4WFhCNVBuOHdCdWRSbmRxQStIVm93UmpSMm1mQitjcnB5L0Ezdno2eGZkUFdlZFBiY1ZxZjJqaS9ma2tmZmt6YTZFSTlLVkNSZXpvRVR5bk9qZVptR0ZpL2o3NTM4WC9ocWVxdTEyNHo3ZXRRRHpmWWtwU2I1elIrU2FhVktDazZ2VHhRVDVpeC8vaEJXNGoydXU0UzIvRmUvbHl3L1haWDQrL3MxOVBVeVRjTU1HQ0Rrd0FqcmhMNWx3dzlMcFVBb0FBQUFBQUV6Q2xhS3FtYXRCaXB2K3RhdVcvWnhxVnB3MHo0K05QTTZqMERBcFlBS0F4ZndRb0V4WGlxdG5icm9IMkZsRGc3RlpFUEVtMzY3NTk4ejcxODhGZkJpYkNIbk96THRtZjd6Zi8vSC90NHBBMUUzWDdyeHI4K0tIKzMvWEtuQnZ3ZzBiSk9UQVFPbUV2d0xDRFV1VGI2eTMzUndEQUFBQUFBQUFBQUFBREl0d1F3R0VIQmlJazc2cDk1MnMxUkJ1V0lyZitxYitNSUxYQVFBQUFBQUFBQUFBQURBNXdnMEZxZG91ZDhQZm0vbzZVSnl6dnFsM25aYlZFbTU0RU1FYkFBQUFBQUFBQUFBQWdJSDd4UWtzUnk3TzdadTZ5b1c2VTE4TGl2QWxwZlJZc0lHQ2RmRWVGV3dBQUFBQUFBQUFBQUFBR0RpVEd3cG1rZ01iY3BsUzJ1MmIrdHdKV0IrVEd4YmlQUW9BQUFBQUFBQUFBQUF3TXNJTkF5RGt3QnE5N3B2NjJJS3ZuM0REblhtUEFnQUFBQUFBQUFBQUFJeVFjTU9BQ0Rtd1FpZDlVKzliNE0wUmJyalZ4NzZwWHhWK2pBQUFBQUFBQUFBQUFBRGMweThXYmpoeThYbmYxRlV1UkovNldyQTBYVXJwc1dBREJidU05NmhnQXdBQUFBQUFBQUFBQU1DSW1kd3dZQ1k1OEFDNVlIeW5iK29MaTFnR2t4dm1ldEUzOVdtQnh3VUFBQUFBQUFBQUFBREFrZ2szaklDUUF3dFNNRjRnNFlidnZPdWIrcUNnNHdFQUFBQUFBQUFBQUFCZ3hZUWJSa1RJZ1Z2ODBUZjFrVVVxazNERFA3cVUwbTdmMU44S09CWUFBQUFBQUFBQUFBQUExa2k0WVlTcXRzc2R6LytjK2pyd241TytxZmN0UjlrbUhtNjRqRkREZVFISEFnQUFBQUFBQUFBQUFNQUdDRGVNV05WMnVhRDkvZFRYWWNKMHdSK1FDWWNiWHZkTmZWekFjUUFBQUFBQUFBQUFBQUN3UWNJTkV5RGtNRG02NEEvUUJNTU5Kb29BQUFBQUFBQUFBQUFBOEIvaGhna1JjcGdFWGZBSGFrTGhCaE5GQUFBQUFBQUFBQUFBQVBpSmNNTUVWVzMzS3FXVUMrQWZUWDB0UnVSZDM5UUhVMStFSVp0QXVNRkVFUUFBQUFBQUFBQUFBQUN1OWF1bG1aNitxVCtrbExhcXR0dEpLWjBLT1F6YXg3NnBYMDE5RVNpZWlTSUFBQUFBQUFBQUFBQUEzRWk0WWNLaWc3cVF3ekIxMFFYLzI5UVhncUtkOUUyOTd4UUJBQUFBQUFBQUFBQUFjQnZoQnE2R0hMWWk1RkJibFdKZFJxamhmT29MUWRHRWJ3QUFBQUFBQUFBQUFBQllpSEFELzRsQzVCMGhoMks5N3B2NmVPcUxRTkZ5K0dhbmIrb0xwd2tBQUFBQUFBQUFBQUNBUlFnMzhKTWZRZzY1bVA2bFZkcW9rNzZwOXlmOCtobUdGMzFUbnpwWEFBQUFBQUFBQUFBQUFOeUhjQVBYaXBERHEvei9yOW91aHh6MnJOWmFkU21sM1RnUFVDb1RSUUFBQUFBQUFBQUFBQUI0c0tydmU2dkluVlZ0ZDVoU2VtUEZWdW95cGJRdDFEQXRWZHZscVFmUEIvU2lUUlFCQUFBQUFBQUFBQUFBWUdtRUc3aVhxdTF5VWZON3E3ZDB6L3FtUGgvWmErSU9CaFJ1TUZFRUFBQUFBQUFBQUFBQWdLVVRidUJCcXJiYlNTbmxvdXhIVnZKQlh2ZE5mVHpnNCtlQkJoQnV1SXhRZy9BTkFBQUFBQUFBQUFBQUFFdjNxeVhsSWFMUWVVdkk0ZDVPK3FiZUgraXhNeDB2K3FZK2RiNEJBQUFBQUFBQUFBQUFXQlhoQnBiaVNzaGhLMElPdFpXOVVSZGQ4TDhWZkl4Z29nZ0FBQUFBQUFBQUFBQUFheUhjd0ZKRnNYNmU0cENxdHN0RjBYdFcrRHVYRVdvNEwraVk0RWNtaWdBQUFBQUFBQUFBQUFDd1ZsWGY5MWFjbGFyYTdpaWw5THRWVHIvMVRmMmhnT09nUUZYYjVZa256emQ4WkIvN3BuNVY1QUlCQUFBQUFBQUFBQUFBTUdxL09MMnNXdC9VQjMxVFZ5bWwxeE5kN0xmNTlRczJVTEF1cGZSWXNBRUFBQUFBQUFBQUFBQ0FUVEc1Z2JXcjJtNG5wWlM3MUQ4YStlcWY5RTI5WDhCeE1BQWJtdHh3bVZMYTZadjZ3bnNFQUFBQUFBQUFBQUFBZ0UzNjFlcXpibjFUbjZlVXRxcTIyNHFRUXoyeWs1Qzc0Ty8yVGYydGdHT0JlUzdqUFhwdWRRQUFBQUFBQUFBQUFBQW9nWEFER3hQRi8zbUtRKzVhZjV4UzJodjQyVkF3emhBODh4NEZBQUFBQUFBQUFBQUFvRFJWMy9kT0NzV28ydTRncGZUbkFNL0k2NzZwandzNERnYXFhcnM4eGVUNUNvL2VleFFBQUFBQUFBQUFBQUNBWWdrM1VLU3E3WFpUU2g5U1NvOEtQME1uZlZQdkYzQWNETndLd3cxQ0RRQUFBQUFBQUFBQUFBQVU3MWVuaUJMMVRaMEx2YmVxdHR1T2tFTmQyR0YyZlZQdkZIQWNjQjJoQmdBQUFBQUFBQUFBQUFBR1E3aUJvdlZOZlpGUzJxbmFiaXVsZEpSUzJ0dnc4WDdKeDlNMzliZkNsNDdwRW1vQUFBQUFBQUFBQUFBQVlIQ3F2dStkTlFhbGFydURsTktmYXo3bXk1VFNidC9VNTk0dHJFTFZkbmxheWZNSC9GY0xOUUFBQUFBQUFBQUFBQUF3V01JTkRGYlZkanNwcFZ3US9takZyMEhST0N2M2dIQ0Q5eWNBQUFBQUFBQUFBQUFBZy9lclU4aFF4UlNGcmFydHRpTGtVQy81cFp6MFRiM3ZEVUtoaEJvQUFBQUFBQUFBQUFBQUdBM2hCZ2F2YitwdkthVTh4U0YzdjgvRjNuc1BmRTFkU21rMy9udWhKSmNwcFZkOVU1ODZLd0FBQUFBQUFBQUFBQUNNU2RYM3ZSUEs2RlJ0bHljdUhLV1VIaTN3Mmk0ajFIRHVIY0c2VlcyWEF3dlByL25IZW04Q0FBQUFBQUFBQUFBQU1HckNEWXhhMVhaNW9rT2U1bERmOGpwZjZJYlBKbDBUYmppTFNRMm1pQUFBQUFBQUFBQUFBQUF3YXI4NnZZeFpkTHJQQVlkY1BKNUREbnMvdk53LytxWSs4aWFnTU42WEFBQUFBQUFBQUFBQUFFeUt5UTFNVHRWMit6bncwRGYxZ2JOUEthcTJPOHhUUnZxbXZuQlNBQUFBQUFBQUFBQUFBSmlVbE5ML0FQU1NtdWhTNHhBN0FBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xIiwiRklET18yXzFfUFJFIl0sImV4dGVuc2lvbnMiOlsiY3JlZEJsb2IiLCJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwibGFyZ2VCbG9iS2V5IiwibWluUGluTGVuZ3RoIl0sImFhZ3VpZCI6IjY5OTkxODBkNjMwYzQ0MmRiOGY3NDI0YjkwYTQzZmFlIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibGFyZ2VCbG9icyI6dHJ1ZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOnRydWUsImFsd2F5c1V2IjpmYWxzZX0sIm1heE1zZ1NpemUiOjIwNDgsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6MTAsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6OTYsInRyYW5zcG9ydHMiOlsidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN31dLCJtYXhTZXJpYWxpemVkTGFyZ2VCbG9iQXJyYXkiOjEwMjQsIm1pblBJTkxlbmd0aCI6NiwibWF4Q3JlZEJsb2JMZW5ndGgiOjMyLCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6NCwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjEyOH19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTA3LTI5IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiSHlwZXIgRklETyBQcm8iLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI1MDcyOTAwMSIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDctMjkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MX1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wOC0xOSJ9LHsiYWFndWlkIjoiNjYyZWY0OGEtOTVlMi00YWFhLWE2YzEtNWI5YzQwMzc1ODI0IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI2NjJlZjQ4YS05NWUyLTRhYWEtYTZjMS01YjljNDAzNzU4MjQiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiWXViaUtleSA1IFNlcmllcyB3aXRoIE5GQyAtIEVuaGFuY2VkIFBJTiJ9LCJkZXNjcmlwdGlvbiI6Ill1YmlLZXkgNSBTZXJpZXMgd2l0aCBORkMgLSBFbmhhbmNlZCBQSU4iLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2LCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH0seyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3IiwiZWQyNTUxOV9lZGRzYV9zaGE1MTJfcmF3Iiwic2VjcDM4NHIxX2VjZHNhX3NoYTM4NF9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo2LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjYsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURTRENDQWpDZ0F3SUJBZ0lVRHFFUncrNFJuR1NnZ3hnVWV3SkZFUERSWjNZd0RRWUpLb1pJaHZjTkFRRUxCUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURJN1huSCtadkR3TUNRVThNOFplVjVxc2N1Ymx2VllhYVJ0M1liYXhuOWdvZEx4NXN3SDBsWHJkZ2poNWg3RnBWZ0NnWVlYN0U0YmwxdmJ6VUxlbXJNV1Q4TjNXTUdVZThRQUpiQmVpb1Y3Vy9FK2hUWlAvMFNLSlZhM2V3S0JvNlVMZU1uZlFaRHJWT1JBazh3VExxMnY1TGxqNXZNajdKdE9vdEthOUo3bkhTOGtMbXpYWFNhajBTd0VQaDVPQVpVVE5WNHpzMWJ2b1RBUVFXckw0L0o5UXVLdDZXQ0ZFNW5VTmlSUWNFYlZGOG1scUsyYngyejZva1ZsdHlEVkxDeFlicFVURUx2WTF1c1IzRFRHUFVvSUNsT200Y3Jwd25EUkxWSHZqWWVQR0JCLy9wRXl6eEEvZ2NTY3hqd2FIMVpVdzliblNiSHl1cktxYlRhMUt2akFnTUJBQUdqWmpCa01CMEdBMVVkRGdRV0JCVHF0MEtRbmd4N1pIcmJWSHdEdW54T245aWhZVEFmQmdOVkhTTUVHREFXZ0JUUzd1OWFJbzA2YlZ3amx6M3loZFVtOFNWN2tqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQTRHQTFVZER3RUIvd1FFQXdJQmhqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFxUWFDV014VEdxVlZYN1NrN2trSm1VdWVUU1lLdVU2K0tCQlNnd0lSbmx3OUs3SGUxSXB4WjBoZHdwUE5pa0tqbWN5RmdGUHpoSW13SEpneHh1VDkwUHczdllPZGNKSk5rdERnMzVQWE9melNuMTVjRkF4MVJPMG1QVG1JYjhkWGlFV09wem9YdmR3WERNNDFaYUNEWU1UN3c0SVF0TXl2RTd4VUJacTJianRBbnEvTkRVQTdiZTRIOEgzaXBDKy8rTktsVXJjVWgrajQ4SzY3V0kwdTFtNkZlUXVlQkE3bjA2ajgyNXJxRHFzYUxzOVRiN0tBSEF3OFBtcldhTlBHMmtqS2VyeFBFZmVjaXZsRmF3cDJSV1p2eHJWdG4zVFYyU0J4eUNKQ2tYc05EMDVkQ0VyVkhTSklzK0JkdFRWTlk5QXd0eVBtbnliMHY0bVNUenZXZHc9PSIsIk1JSURQakNDQWlhZ0F3SUJBZ0lVWHplaUVESkVPVHQxNEY1bjBvNlpmL2JCd2lVd0RRWUpLb1pJaHZjTkFRRU5CUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTVo2L1R4TThySVQrRWFvUHZHODFvbnRNT28vMm1RMlJCd0pIUzBRWmN4VmFOWHZsMTJMVWhCWjVMbWlCU2NJWmQxUm54MW9kNTg1aCsvZGhLN2hFbTdKQUFMa0tLdHMxZk81M0tHTkxadWp6NWgzd0duY3I0aHlLRjBHNzRiL1UzSzloRTVtR05ENnpxWWNoQ1JBSGZyWU1ZUkRGNFlMMFg0RDVuR2R4dnBwQXk2bmtFbXRXbU1ud08zaTBUQXVjc3JiRTQ4NUh2R000cjBWcGdWZEpwdmdRamlUSkNUSXErRDM1aHd0VDhRREl2K25HdnBjeWk1d2NJZkNrenlDaW1KdWtoWXk2S29xTk1LUUVkcE5pU092V3lETVRNdDFid0N2RXpwdzkxdSttc1V0NHJqMGVmbk85czBaT3dkd01SRG5INHhnVWw1Wkx3cnJQa2ZDMS8wQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQjhHQTFVZEl3UVlNQmFBRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRTXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJEUVVBQTRJQkFRQzNJVy9zZ0I5cFo4YXBKTmp4dUdvWCtGa0lMa3Mwd01OcmRYTC9jb1V2c3JoenN2bDZtZVBNcmJHSkJ5SjFYbnF1QjVzZ2NSRU5GeGRRRm1hM21pbzhVcGYxb3dNMVpyZVhySjBtQURHMkJwbHFiSm54aXlZYStSMTFyZUlGVFdlSWhNTmNaS3NEWnJGQXlQdUZqQ1dTUXZKbU5XZTltRlJZRmdOaFhKS2tYSWI1SDFYZ0VEbHdpZWRZUk03Vm9sQk5sbGQ2cFJGS2xYOHVzdDZPVE1PZUFEbDJ4TkYwbTFMVGhTZGV1WHZEeUMxZzkrSUxmejNTNk9JWWdjM2lyb1JjRkQzNTRnN3JLZnU2N3FGQXc5Z0M0eWkweEJUUHJZOTVyaDQvSHFhVVlDQS9MOGxkUms2SDdYazM1RCtXVnBtcTJTaC94VDVIaUZ1aGY0d0piMGJLIiwiTUlJRFNEQ0NBakNnQXdJQkFnSVVVY21NWHpSSUZPZ0dUSzBUYjNnRXVaWVprQkl3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRRG01NTViV1k5V1crdE9ZMHJJV0hsZGgrYU5hbm9DWkNGaDdHazNZWnJRbVBVdzBoa1NHNnFZSFF0UCtmWnlTMzNWRXJ2ZytCUXFubXVtZ05oZnhGcmt3RVpFTGVpZEJjQzhDNEFnNG5xcWlQV3B6c3ZJMTdOY3hZbEluTE5MRmNaWS8rZ09pTjZaT1RpaE81L3ZCWk1iajlyaWFBY3FsaVltTkdKUGdUY01HYUVBeU16RU1OeTJubTZFcCtwalA1YUY2Z2kyMXQvVVFGc3VKMWoyUmoveW5NL1NkUnQrZWNhbDVPWW90eEhrRmJMOXZ2djJBMk92NUlUWkNsdzRiT1M5bnB5cFFpbU9aNVFBWXl0bVlhUXBXbC9wTVl6NnpTajhScWtWRE5FSkdxTmZUS0EyaXZMWXdYNmxTdHRNUGFwZzBKODRsOVgwdm9WTi9GcFM0VkNWQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJRZ0tGQWhHNlJhVytoVHk1MmR4ZVQ4YkM5Nkh6QWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQVlNemdMckpMSXIwT292UW5BWnJSSUd1YWJpSFNVS1NtYkxSV3BSa1dlQXRzQ2hERUhwWGNKL2JnRE5LWVdvSHFROHhSVWpCNEN5ZXBZZXZjM1lsckc4bzd6SHhwZlZjYW9MNVNldUprekh4S240YlRhU3A5K012d2FtbnA2NGtaTWlOYkZMa25mUDlrWUtvUkhrTVdoZVJKMVVzUDF6NFNjbWtDZUlMZnNNczZ2cW92cWpXQ2xGc0pwQmNzbHVZSFdGN2JCSjFuNFJ3ZytBVEVvcFk0SWdHdjZadndjK0E5citBVDJocXBvU2tZb0FsK0FOWXdnc2xPZjlzSmUwVitUQTlZWS9VbGFCbVBQVGQwLy9yOXd2Y2VQV1prUGpLb0FDL3pVTmhmRGJoNExWOEdIczNseVgyWG9tTC9MTmM4Sll6eUlhREVoR1F2ZW9QaGgvdHIxZz09IiwiTUlJRFNqQ0NBaktnQXdJQkFnSVVSMzhtcTI2U2Yyc3pWVjJCZEc2V0VON2t1V1V3RFFZSktvWklodmNOQVFFTEJRQXdMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3SUJjTk1qUXhNakF4TURBd01EQXdXaGdQT1RrNU9URXlNekV5TXpVNU5UbGFNQ1l4SkRBaUJnTlZCQU1NRzFsMVltbGpieUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRUlnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTlkwV2I5b1BvUm9Lb1F5V1BhSnB6MTF2cldUZzZ6VHRtTmoyVm9LUm55dktHUnFwemI4M3c1bDZZQTk2VVlrWUJEUVAwaWxPMkRQZTZ3V3FWUjV6RGZSemRjSDhiaCtMN2RHR3ZhZTZoUlRaaGtGa0NwWERzNEhjY2tuckRmOEZDbEo3SGUzOUpmNDIvRzFRbTJ6ejlXV21yUFh0Z2lLL3gwNUdqc1FmR3VERzF6ZjVRVFVVaWU4bHd5bUszVGZkT3ZOZWVKQUFQZTJwbjdJdGZSYityVnJOV2lEemxSbjJ2Tm5aMndQbzR3SC9XSjZkaFhaRytyTVdUK2E2Qm9jZzFVZkl3NmtkdW5HNGJUcFp6c3ZhY0ZZeVIwbXBmK0RlT25wU1dBbXl3SldIdlRsZjJZWHhGeWVYY1RBQ2RRbGNNTkdKMlZoWlE0OHh0UDUvUkJQLzhrQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZDaHk0Mm9raXFjVFMxaXFhL0hSV2prQm40SC9NQjhHQTFVZEl3UVlNQmFBRk9xM1FwQ2VESHRrZXR0VWZBTzZmRTZmMktGaE1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQW4rUkhJUGJ0TUVETmRUMWc4SC9SaXRBa1VkTGdBdDF0V0dXbmxqOWtuYnY0LzRHbFg3QzlwNDVlZlBPOS9hWkw2T1YxWFJLQmk2S210Qlc1SzdudVlFbk14LzVCcUJTYkxUN3JoZHVDNDlUQmVNYjlQSGRYc1RsU1ZOWWVmcjFkR2lkcjRqMHhWQlFMYjFya25EQWJkV0R6S2Z2bmF5S084RnJ3ZTdIeDg0M01HL3JKK2MwWHJ1VXZiZlZUQ0hMaUlXaE03b05EaEw4eG9iNnhVbzlLTEtjU0wrSXRZc08zLzlXYjhROUdqc3FMNEZYc0RjRzFTYVloN0twZnVNbU9peHF6SlpPMm5JaWNQWVJnMUkyU3VpVWZZTzcwdG1kSGNibCtrU1FtU1l0N3JxNHZpSUxnMkd4M2o5cklUdVdUamJhVWFTU1F4Z09tTVNIdXl6TUFDIiwiTUlJRFJ6Q0NBakdnQXdJQkFnSVVleDluVDl2d1pOWFM0ODNMZGlZR2Z3MlNqU293Q3dZSktvWklodmNOQVFFTE1DNHhMREFxQmdOVkJBTU1JMWwxWW1samJ5QkJkSFJsYzNSaGRHbHZiaUJKYm5SbGNtMWxaR2xoZEdVZ1FpQXhNQ0FYRFRJMU1EZ3dNVEF3TURBd01Gb1lEems1T1RreE1qTXhNak0xT1RVNVdqQW5NU1V3SXdZRFZRUUREQnhaZFdKcFkyOGdSa2xFVHlCQmRIUmxjM1JoZEdsdmJpQkNNaUF4TUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUF1MU1ldm55OWR5TzlaVUMzOVNvTWhMY1IvRFhydEYvY2lNMTJ0Y2l5MkVYQVo2TWtyaXZWdENmRVZNOVg2SVNURW5CUDZ1U1lZb3Y2cHB2Nk82SmgyTkhtWW00dytKblM0Vm5DUFU3bUhBTWZWSTJNR1RUTVZPZXcweFVzRzdzSVNJa0lEVUJtdWs4WUs5YzV6aWM5K3ZGUUdMSWtzZFhPNWlWRklnTkc1M2NHWEQ0Wkxab0FQaXUwUEVvenhBcVlJYUk0Z3hLaE9BM1M4L1c4bUlXc3U2b2Z5ajRHdmtGRzZaN2t5RjMxMDdQN213RkhMckkzRU5hUFdNT0ZjVGFHYTBkdysvdlZSd2pSY0VaQlZzdXVULzg3Y2tTczBhNXBrdDN2WkJsYVllVDhwelNyZVY3bW93Y0lNOTBMMmlhQVRsUDBueG1hRTZuT3lUYm9qRlZsMndJREFRQUJvMll3WkRBZEJnTlZIUTRFRmdRVVNYRWgzc2EzYnREdXJtNE1NL0M3UzFsUnV1WXdId1lEVlIwakJCZ3dGb0FVNnJkQ2tKNE1lMlI2MjFSOEE3cDhUcC9Zb1dFd0VnWURWUjBUQVFIL0JBZ3dCZ0VCL3dJQkFEQU9CZ05WSFE4QkFmOEVCQU1DQVlZd0N3WUpLb1pJaHZjTkFRRUxBNElCQVFCNUdjM2hhZnRwN2hLc0Vac28raS9aNW5SdXFkbXpHMldDbFVvUlVxYmFQeWdsbkpEaktSL2tmZ09sNmliYkYvenRobTNLbVhRN0hjRElQMnhNZEc3VTJMMmltYkpRSHFQZi9oMkhxb2piNHJaZ3VlKzZXNGt0U1I1ZWxSOUwxcllxRS9TR1lNNGlFS29WUVN2N1JUMXJ4SWVXaUtzdy9WeHhpL1FPbnN4M0Y3eDgwQ0NZZ0I0RTN5UXg4VlRXNDQwaFRFd1RBMWVNSE9peDMydFB0eXlISWE4UFZWSWZWcEhRSkJhTVZ2djUwOFVFandrYlUycm5qZnpvU1ROUzlBNWpVUThtQlN2ZTk1cmpCMGRvOThFVStEeGRCcVgyK0g2aTV3bElDRmd6aGR6Y3NuZTloR0tUNmx6VFg0Y0lkSnNyWTIreGxlSzBGRlF5NmxHRVZMRWUiLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVRuYmJHSVIyTkh2enFJS0ZBZVF3RzFYQmlzMHdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFRWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPc1hqM2swNEJhbjRUWWR0WktxRC9PUEp4eUR5YVBtQ0JVRlVpYVpJZ1R0ZVpuajNYMjVEaGdwWlpYc0M0RDB5ZEljcmxBNndOVUluT1JML0w5ekJiVEVJTUFWTUdvNmc3VUtBbWIyTUY2QUhibmhZSmQ5ZWlrdXBWTldTaEhOWU5jNEdCZE8xWU42QWZVcXZKaEhiZTNWNFNOTVBtQlJFS0pQVno3VGh3Z21nZ1RlOFdzMkswL3dzcXYyd1NFN3BiQ0JzVVpoSVg1MWJaTTNwcUR3SlBUbVJGRXZ0MC82dEc1ZU84RjNqMTRPWHFmRWhtam4xVnZ4S0RZUU9MWkF4Q3d3Z0MwUDRDZGZXdjN5OFBTUjhJMzU0aE8xWStHek5qdklxWDM4TktMeXd1SVlIRmVyT3hObHhFTUJ2RmhZQnVSdVlBa2tnVWFQcU42VUJoc0lMcnNDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNDb1JIaGl5Tm5iblhSV0lMNlpCWG9CWDlZVE1COEdBMVVkSXdRWU1CYUFGQ0FvVUNFYnBGcGI2RlBMblozRjVQeHNMM29mTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFDUUZhZkpJMS81V2c5Q0VFaW1FMVJQNTRSZ1F3VE5UT09Rc0xBQ1RlK3JJdGxGUXpDOVpEaHJWODI4eVg3anp5K0FBc3AzaXpLN1QxdGgyZGw3bSt0dTBzdzJQYS9vbGMwMm50NlB5SXczNDhnYUh6aEkxKzBLRTQ1cXh2RkRlTDJsTXhiUGZDWXZ5RUVhWXpqaVFFTFU1OTUxcFhHV3lLTWEvNGZMdE8rWktPWGhNdVZlcTRyWERQSTU0VzZKSE9pQWFpS2Rpdys1ZTNjMmt0L2pGSVF0TTZ2TVhnOUxORnpkakVUTnQyMFZYOVFldlJwRlpmdWNNRzl3Q2FRRG9GbFB6cFRNSktoUGV2L2ltSm1aWWhLZnIwbExjZW10cWpJeExBb3FaZE9ZZkhCZzYrdkFjZFBJL2lhdUdwVUF2N1grVUtObUR3aloyQmFINHNMd2hCMm0iXSwiaWNvbiI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsImljb25EYXJrIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwicHJvdmlkZXJMb2dvTGlnaHQiOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJwcm92aWRlckxvZ29EYXJrIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMV9QUkUiLCJGSURPXzJfMSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJsYXJnZUJsb2JLZXkiLCJjcmVkQmxvYiIsIm1pblBpbkxlbmd0aCJdLCJhYWd1aWQiOiI2NjJlZjQ4YTk1ZTI0YWFhYTZjMTViOWM0MDM3NTgyNCIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImxhcmdlQmxvYnMiOnRydWUsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjp0cnVlLCJhbHdheXNVdiI6dHJ1ZX0sIm1heE1zZ1NpemUiOjE1MzYsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6OCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoxMjgsInRyYW5zcG9ydHMiOlsibmZjIiwidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN30seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTh9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi0zNX1dLCJtYXhTZXJpYWxpemVkTGFyZ2VCbG9iQXJyYXkiOjQwOTYsIm1pblBJTkxlbmd0aCI6NiwiZmlybXdhcmVWZXJzaW9uIjozMjk0NzYsIm1heENyZWRCbG9iTGVuZ3RoIjozMiwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjEsInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjoxMDB9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wNi0yMSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzYsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWXViaUtleSA1IFNlcmllcyB3aXRoIE5GQyAtIEVuaGFuY2VkIFBJTiIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjUwNjIxMDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDYtMjEiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTA2LTE5In0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiYTM3MDE4YWI2OWU0OTYxYWY0OTM4YzkzZDkyYjMxZDBiMTRmZjUwYyJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyJhMzcwMThhYjY5ZTQ5NjFhZjQ5MzhjOTNkOTJiMzFkMGIxNGZmNTBjIl0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IDUgU2VyaWVzIHdpdGggTkZDIC0gRW5oYW5jZWQgUElOIn0sImRlc2NyaXB0aW9uIjoiWXViaUtleSA1IFNlcmllcyB3aXRoIE5GQyAtIEVuaGFuY2VkIFBJTiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzYsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6Mn1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiLCJyZW1vdGVfaGFuZGxlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlEU2pDQ0FqS2dBd0lCQWdJVVIzOG1xMjZTZjJzelZWMkJkRzZXRU43a3VXVXdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFSWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFOWTBXYjlvUG9Sb0tvUXlXUGFKcHoxMXZyV1RnNnpUdG1OajJWb0tSbnl2S0dScXB6YjgzdzVsNllBOTZVWWtZQkRRUDBpbE8yRFBlNndXcVZSNXpEZlJ6ZGNIOGJoK0w3ZEdHdmFlNmhSVFpoa0ZrQ3BYRHM0SGNja25yRGY4RkNsSjdIZTM5SmY0Mi9HMVFtMnp6OVdXbXJQWHRnaUsveDA1R2pzUWZHdURHMXpmNVFUVVVpZThsd3ltSzNUZmRPdk5lZUpBQVBlMnBuN0l0ZlJiK3JWck5XaUR6bFJuMnZObloyd1BvNHdIL1dKNmRoWFpHK3JNV1QrYTZCb2NnMVVmSXc2a2R1bkc0YlRwWnpzdmFjRll5UjBtcGYrRGVPbnBTV0FteXdKV0h2VGxmMllYeEZ5ZVhjVEFDZFFsY01OR0oyVmhaUTQ4eHRQNS9SQlAvOGtDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNoeTQyb2tpcWNUUzFpcWEvSFJXamtCbjRIL01COEdBMVVkSXdRWU1CYUFGT3EzUXBDZURIdGtldHRVZkFPNmZFNmYyS0ZoTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBbitSSElQYnRNRUROZFQxZzhIL1JpdEFrVWRMZ0F0MXRXR1dubGo5a25idjQvNEdsWDdDOXA0NWVmUE85L2FaTDZPVjFYUktCaTZLbXRCVzVLN251WUVuTXgvNUJxQlNiTFQ3cmhkdUM0OVRCZU1iOVBIZFhzVGxTVk5ZZWZyMWRHaWRyNGoweFZCUUxiMXJrbkRBYmRXRHpLZnZuYXlLTzhGcndlN0h4ODQzTUcvckorYzBYcnVVdmJmVlRDSExpSVdoTTdvTkRoTDh4b2I2eFVvOUtMS2NTTCtJdFlzTzMvOVdiOFE5R2pzcUw0RlhzRGNHMVNhWWg3S3BmdU1tT2l4cXpKWk8ybklpY1BZUmcxSTJTdWlVZllPNzB0bWRIY2JsK2tTUW1TWXQ3cnE0dmlJTGcyR3gzajlySVR1V1RqYmFVYVNTUXhnT21NU0h1eXpNQUMiLCJNSUlEU0RDQ0FqQ2dBd0lCQWdJVVVjbU1YelJJRk9nR1RLMFRiM2dFdVpZWmtCSXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFEbTU1NWJXWTlXVyt0T1kwcklXSGxkaCthTmFub0NaQ0ZoN0drM1laclFtUFV3MGhrU0c2cVlIUXRQK2ZaeVMzM1ZFcnZnK0JRcW5tdW1nTmhmeEZya3dFWkVMZWlkQmNDOEM0QWc0bnFxaVBXcHpzdkkxN05jeFlsSW5MTkxGY1pZLytnT2lONlpPVGloTzUvdkJaTWJqOXJpYUFjcWxpWW1OR0pQZ1RjTUdhRUF5TXpFTU55Mm5tNkVwK3BqUDVhRjZnaTIxdC9VUUZzdUoxajJSai95bk0vU2RSdCtlY2FsNU9Zb3R4SGtGYkw5dnZ2MkEyT3Y1SVRaQ2x3NGJPUzlucHlwUWltT1o1UUFZeXRtWWFRcFdsL3BNWXo2elNqOFJxa1ZETkVKR3FOZlRLQTJpdkxZd1g2bFN0dE1QYXBnMEo4NGw5WDB2b1ZOL0ZwUzRWQ1ZBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlFnS0ZBaEc2UmFXK2hUeTUyZHhlVDhiQzk2SHpBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBWU16Z0xySkxJcjBPb3ZRbkFaclJJR3VhYmlIU1VLU21iTFJXcFJrV2VBdHNDaERFSHBYY0ovYmdETktZV29IcVE4eFJVakI0Q3llcFlldmMzWWxyRzhvN3pIeHBmVmNhb0w1U2V1Smt6SHhLbjRiVGFTcDkrTXZ3YW1ucDY0a1pNaU5iRkxrbmZQOWtZS29SSGtNV2hlUkoxVXNQMXo0U2Nta0NlSUxmc01zNnZxb3ZxaldDbEZzSnBCY3NsdVlIV0Y3YkJKMW40UndnK0FURW9wWTRJZ0d2Nlp2d2MrQTlyK0FUMmhxcG9Ta1lvQWwrQU5Zd2dzbE9mOXNKZTBWK1RBOVlZL1VsYUJtUFBUZDAvL3I5d3ZjZVBXWmtQaktvQUMvelVOaGZEYmg0TFY4R0hzM2x5WDJYb21ML0xOYzhKWXp5SWFERWhHUXZlb1BoaC90cjFnPT0iLCJNSUlEUnpDQ0FqR2dBd0lCQWdJVWV4OW5UOXZ3Wk5YUzQ4M0xkaVlHZncyU2pTb3dDd1lKS29aSWh2Y05BUUVMTUM0eExEQXFCZ05WQkFNTUkxbDFZbWxqYnlCQmRIUmxjM1JoZEdsdmJpQkpiblJsY20xbFpHbGhkR1VnUWlBeE1DQVhEVEkxTURnd01UQXdNREF3TUZvWUR6azVPVGt4TWpNeE1qTTFPVFU1V2pBbk1TVXdJd1lEVlFRRERCeFpkV0pwWTI4Z1JrbEVUeUJCZEhSbGMzUmhkR2x2YmlCQ01pQXhNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXUxTWV2bnk5ZHlPOVpVQzM5U29NaExjUi9EWHJ0Ri9jaU0xMnRjaXkyRVhBWjZNa3JpdlZ0Q2ZFVk05WDZJU1RFbkJQNnVTWVlvdjZwcHY2TzZKaDJOSG1ZbTR3K0puUzRWbkNQVTdtSEFNZlZJMk1HVFRNVk9ldzB4VXNHN3NJU0lrSURVQm11azhZSzljNXppYzkrdkZRR0xJa3NkWE81aVZGSWdORzUzY0dYRDRaTFpvQVBpdTBQRW96eEFxWUlhSTRneEtoT0EzUzgvVzhtSVdzdTZvZnlqNEd2a0ZHNlo3a3lGMzEwN1A3bXdGSExySTNFTmFQV01PRmNUYUdhMGR3Ky92VlJ3alJjRVpCVnN1dVQvODdja1NzMGE1cGt0M3ZaQmxhWWVUOHB6U3JlVjdtb3djSU05MEwyaWFBVGxQMG54bWFFNm5PeVRib2pGVmwyd0lEQVFBQm8yWXdaREFkQmdOVkhRNEVGZ1FVU1hFaDNzYTNidER1cm00TU0vQzdTMWxSdXVZd0h3WURWUjBqQkJnd0ZvQVU2cmRDa0o0TWUyUjYyMVI4QTdwOFRwL1lvV0V3RWdZRFZSMFRBUUgvQkFnd0JnRUIvd0lCQURBT0JnTlZIUThCQWY4RUJBTUNBWVl3Q3dZSktvWklodmNOQVFFTEE0SUJBUUI1R2MzaGFmdHA3aEtzRVpzbytpL1o1blJ1cWRtekcyV0NsVW9SVXFiYVB5Z2xuSkRqS1Iva2ZnT2w2aWJiRi96dGhtM0ttWFE3SGNESVAyeE1kRzdVMkwyaW1iSlFIcVBmL2gySHFvamI0clpndWUrNlc0a3RTUjVlbFI5TDFyWXFFL1NHWU00aUVLb1ZRU3Y3UlQxcnhJZVdpS3N3L1Z4eGkvUU9uc3gzRjd4ODBDQ1lnQjRFM3lReDhWVFc0NDBoVEV3VEExZU1IT2l4MzJ0UHR5eUhJYThQVlZJZlZwSFFKQmFNVnZ2NTA4VUVqd2tiVTJybmpmem9TVE5TOUE1alVROG1CU3ZlOTVyakIwZG85OEVVK0R4ZEJxWDIrSDZpNXdsSUNGZ3poZHpjc25lOWhHS1Q2bHpUWDRjSWRKc3JZMit4bGVLMEZGUXk2bEdFVkxFZSIsIk1JSURTakNDQWpLZ0F3SUJBZ0lVVG5iYkdJUjJOSHZ6cUlLRkFlUXdHMVhCaXMwd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JCSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVFZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU9zWGozazA0QmFuNFRZZHRaS3FEL09QSnh5RHlhUG1DQlVGVWlhWklnVHRlWm5qM1gyNURoZ3BaWlhzQzREMHlkSWNybEE2d05VSW5PUkwvTDl6QmJURUlNQVZNR282ZzdVS0FtYjJNRjZBSGJuaFlKZDllaWt1cFZOV1NoSE5ZTmM0R0JkTzFZTjZBZlVxdkpoSGJlM1Y0U05NUG1CUkVLSlBWejdUaHdnbWdnVGU4V3MySzAvd3NxdjJ3U0U3cGJDQnNVWmhJWDUxYlpNM3BxRHdKUFRtUkZFdnQwLzZ0RzVlTzhGM2oxNE9YcWZFaG1qbjFWdnhLRFlRT0xaQXhDd3dnQzBQNENkZld2M3k4UFNSOEkzNTRoTzFZK0d6Tmp2SXFYMzhOS0x5d3VJWUhGZXJPeE5seEVNQnZGaFlCdVJ1WUFra2dVYVBxTjZVQmhzSUxyc0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ0NvUkhoaXlObmJuWFJXSUw2WkJYb0JYOVlUTUI4R0ExVWRJd1FZTUJhQUZDQW9VQ0VicEZwYjZGUExuWjNGNVB4c0wzb2ZNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUNRRmFmSkkxLzVXZzlDRUVpbUUxUlA1NFJnUXdUTlRPT1FzTEFDVGUrckl0bEZRekM5WkRoclY4Mjh5WDdqenkrQUFzcDNpeks3VDF0aDJkbDdtK3R1MHN3MlBhL29sYzAybnQ2UHlJdzM0OGdhSHpoSTErMEtFNDVxeHZGRGVMMmxNeGJQZkNZdnlFRWFZemppUUVMVTU5NTFwWEdXeUtNYS80Zkx0TytaS09YaE11VmVxNHJYRFBJNTRXNkpIT2lBYWlLZGl3KzVlM2Mya3QvakZJUXRNNnZNWGc5TE5GemRqRVROdDIwVlg5UWV2UnBGWmZ1Y01HOXdDYVFEb0ZsUHpwVE1KS2hQZXYvaW1KbVpZaEtmcjBsTGNlbXRxakl4TEFvcVpkT1lmSEJnNit2QWNkUEkvaWF1R3BVQXY3WCtVS05tRHdqWjJCYUg0c0x3aEIybSIsIk1JSURTRENDQWpDZ0F3SUJBZ0lVRHFFUncrNFJuR1NnZ3hnVWV3SkZFUERSWjNZd0RRWUpLb1pJaHZjTkFRRUxCUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURJN1huSCtadkR3TUNRVThNOFplVjVxc2N1Ymx2VllhYVJ0M1liYXhuOWdvZEx4NXN3SDBsWHJkZ2poNWg3RnBWZ0NnWVlYN0U0YmwxdmJ6VUxlbXJNV1Q4TjNXTUdVZThRQUpiQmVpb1Y3Vy9FK2hUWlAvMFNLSlZhM2V3S0JvNlVMZU1uZlFaRHJWT1JBazh3VExxMnY1TGxqNXZNajdKdE9vdEthOUo3bkhTOGtMbXpYWFNhajBTd0VQaDVPQVpVVE5WNHpzMWJ2b1RBUVFXckw0L0o5UXVLdDZXQ0ZFNW5VTmlSUWNFYlZGOG1scUsyYngyejZva1ZsdHlEVkxDeFlicFVURUx2WTF1c1IzRFRHUFVvSUNsT200Y3Jwd25EUkxWSHZqWWVQR0JCLy9wRXl6eEEvZ2NTY3hqd2FIMVpVdzliblNiSHl1cktxYlRhMUt2akFnTUJBQUdqWmpCa01CMEdBMVVkRGdRV0JCVHF0MEtRbmd4N1pIcmJWSHdEdW54T245aWhZVEFmQmdOVkhTTUVHREFXZ0JUUzd1OWFJbzA2YlZ3amx6M3loZFVtOFNWN2tqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQTRHQTFVZER3RUIvd1FFQXdJQmhqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFxUWFDV014VEdxVlZYN1NrN2trSm1VdWVUU1lLdVU2K0tCQlNnd0lSbmx3OUs3SGUxSXB4WjBoZHdwUE5pa0tqbWN5RmdGUHpoSW13SEpneHh1VDkwUHczdllPZGNKSk5rdERnMzVQWE9melNuMTVjRkF4MVJPMG1QVG1JYjhkWGlFV09wem9YdmR3WERNNDFaYUNEWU1UN3c0SVF0TXl2RTd4VUJacTJianRBbnEvTkRVQTdiZTRIOEgzaXBDKy8rTktsVXJjVWgrajQ4SzY3V0kwdTFtNkZlUXVlQkE3bjA2ajgyNXJxRHFzYUxzOVRiN0tBSEF3OFBtcldhTlBHMmtqS2VyeFBFZmVjaXZsRmF3cDJSV1p2eHJWdG4zVFYyU0J4eUNKQ2tYc05EMDVkQ0VyVkhTSklzK0JkdFRWTlk5QXd0eVBtbnliMHY0bVNUenZXZHc9PSIsIk1JSURQakNDQWlhZ0F3SUJBZ0lVWHplaUVESkVPVHQxNEY1bjBvNlpmL2JCd2lVd0RRWUpLb1pJaHZjTkFRRU5CUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTVo2L1R4TThySVQrRWFvUHZHODFvbnRNT28vMm1RMlJCd0pIUzBRWmN4VmFOWHZsMTJMVWhCWjVMbWlCU2NJWmQxUm54MW9kNTg1aCsvZGhLN2hFbTdKQUFMa0tLdHMxZk81M0tHTkxadWp6NWgzd0duY3I0aHlLRjBHNzRiL1UzSzloRTVtR05ENnpxWWNoQ1JBSGZyWU1ZUkRGNFlMMFg0RDVuR2R4dnBwQXk2bmtFbXRXbU1ud08zaTBUQXVjc3JiRTQ4NUh2R000cjBWcGdWZEpwdmdRamlUSkNUSXErRDM1aHd0VDhRREl2K25HdnBjeWk1d2NJZkNrenlDaW1KdWtoWXk2S29xTk1LUUVkcE5pU092V3lETVRNdDFid0N2RXpwdzkxdSttc1V0NHJqMGVmbk85czBaT3dkd01SRG5INHhnVWw1Wkx3cnJQa2ZDMS8wQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQjhHQTFVZEl3UVlNQmFBRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRTXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJEUVVBQTRJQkFRQzNJVy9zZ0I5cFo4YXBKTmp4dUdvWCtGa0lMa3Mwd01OcmRYTC9jb1V2c3JoenN2bDZtZVBNcmJHSkJ5SjFYbnF1QjVzZ2NSRU5GeGRRRm1hM21pbzhVcGYxb3dNMVpyZVhySjBtQURHMkJwbHFiSm54aXlZYStSMTFyZUlGVFdlSWhNTmNaS3NEWnJGQXlQdUZqQ1dTUXZKbU5XZTltRlJZRmdOaFhKS2tYSWI1SDFYZ0VEbHdpZWRZUk03Vm9sQk5sbGQ2cFJGS2xYOHVzdDZPVE1PZUFEbDJ4TkYwbTFMVGhTZGV1WHZEeUMxZzkrSUxmejNTNk9JWWdjM2lyb1JjRkQzNTRnN3JLZnU2N3FGQXc5Z0M0eWkweEJUUHJZOTVyaDQvSHFhVVlDQS9MOGxkUms2SDdYazM1RCtXVnBtcTJTaC94VDVIaUZ1aGY0d0piMGJLIl0sImljb24iOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJpY29uRGFyayI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsInByb3ZpZGVyTG9nb0xpZ2h0IjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwicHJvdmlkZXJMb2dvRGFyayI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTA2LTIxIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZdWJpS2V5IDUgU2VyaWVzIHdpdGggTkZDIC0gRW5oYW5jZWQgUElOIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVMkYxMDAwMjAyNTA2MjEwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wNi0yMSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzZ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDYtMTkifSx7ImFhZ3VpZCI6ImFlYjY1NjljLWY4ZmItNDk1MC1hYzYwLTI0Y2EyYmJlMmU1MiIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiYWViNjU2OWMtZjhmYi00OTUwLWFjNjAtMjRjYTJiYmUyZTUyIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkhJRCBDcmVzY2VuZG8gQzIzMDAifSwiZGVzY3JpcHRpb24iOiJISUQgQ3Jlc2NlbmRvIEMyMzAwIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMwLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURDVENDQXErZ0F3SUJBZ0lRUUFGcVVOU2U1U1dBSUxzOEgyRFMxREFLQmdncWhrak9QUVFEQWpCck1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDaE1LU0VsRUlFZHNiMkpoYkRFaU1DQUdBMVVFQ3hNWlFYVjBhR1Z1ZEdsallYUnZjaUJCZEhSbGMzUmhkR2x2YmpFak1DRUdBMVVFQXhNYVJrbEVUeUJCZEhSbGMzUmhkR2x2YmlCU2IyOTBJRU5CSURFd0hoY05NVGt3TkRJME1Ua3pNVEV5V2hjTk5EUXdOREkzTVRrek1URXlXakJtTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNoTUtTRWxFSUVkc2IySmhiREVpTUNBR0ExVUVDeE1aUVhWMGFHVnVkR2xqWVhSdmNpQkJkSFJsYzNSaGRHbHZiakVlTUJ3R0ExVUVBeE1WUmtsRVR5QkJkSFJsYzNSaGRHbHZiaUJEUVNBeE1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRUdoU01MN2N1cEN4VEJDenNyY2lwd2dQb3ozZHZUM3JCbjF6YWtEekJnNlVjM0hkR0tKclZickQreVhGNlk0WnFrc1VVN3JiUml2cU9Pekt4Y0p2UEZxT0NBVGd3Z2dFME1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01JR0VCZ2dyQmdFRkJRY0JBUVI0TUhZd0xnWUlLd1lCQlFVSE1BR0dJbWgwZEhBNkx5OW9hV1F1Wm1sa2J5NXZZM053TG1sa1pXNTBjblZ6ZEM1amIyMHdSQVlJS3dZQkJRVUhNQUtHT0doMGRIQTZMeTkyWVd4cFpHRjBhVzl1TG1sa1pXNTBjblZ6ZEM1amIyMHZjbTl2ZEhNdlNFbEVSa2xFVDFKdmIzUmpZVEV1Y0Rkak1COEdBMVVkSXdRWU1CYUFGQjJtM2l3V1NZSHZXVEhiSmlIQXlLRHArQ1NqTUVjR0ExVWRId1JBTUQ0d1BLQTZvRGlHTm1oMGRIQTZMeTkyWVd4cFpHRjBhVzl1TG1sa1pXNTBjblZ6ZEM1amIyMHZZM0pzTDBoSlJFWkpSRTlTYjI5MFkyRXhMbU55YkRBZEJnTlZIUTRFRmdRVTM4YlFBTlc5ZHlWQmtXbDU5QmxOTEQwOWUvUXdDZ1lJS29aSXpqMEVBd0lEU0FBd1JRSWhBSVVxN3p2cGVkZlpSSHRHcnZKSno4MlI5OUQrU3I3YlY3eXJIRGZCczh2NkFpQmFJVzUwajhXR1ZSMVhIWGFJbU5LbGxtUnlObGs5a2xYOGdUa25PRXREOGc9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFWTUFBQUNzQ0FZQUFBREcrRThNQUFBQUlHTklVazBBQUhvbEFBQ0Fnd0FBK2Y4QUFJRHBBQUIxTUFBQTZtQUFBRHFZQUFBWGI1SmZ4VVlBQUFBSmNFaFpjd0FBRDJBQUFBOWdBWHA0UlkwQUFBeWdTVVJCVkhoZTdaMS9iSlRsSGNCdmpoak5jQzRPK2RYZVhWdFVUTXppUDdvWVhaWTUxSWtLZDFmTm5GSGo1b2hCbUE3ajJNUnNab2xteGhoTkpvcnQyNEtnc2lGc2ltN1RBZE1ZUkZRRUZUY1Z4dy9yd0FFRlJDaFErdXVlUGMvMXFRUDNUTnMrMzN2ZXUrdm5rM3pTNDJnZm52ZTl0NTgrNzczWEl3RUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVVFcGtHNi9YUHBuSVJSOGdJaDV0NDFyOWNZYXRCZndQOVEzbjZ4MjBUWnRQMURjcFJNVFBOZGVVMTR1dVZ0Mk1xMjFGQmt4dE1qbXJMcFZxMFI4MzExWlgzMnJ2TG1NS1AyMzBqcW1QM0RzTkVmSHp6RVc3RXhmT0dXbUw4b1drazhrZjFxWFNQWFhWcWFYSlVhUE9xS21xT3JNdW1mcHJiVExWblVxbExyZWZWa1pNbVAxMS9aT2x3N2x6RUJFSG9qbXJ6VVpUYlYzK0wzVmp4MDR3SVIwOWV2VEo0MUtwS2RvYmpDTkhqaHcxZHV6WTVMaDBqZEtyMUxQdHA1Y0JKcVNzUmhGUjB0Nmd6clNWY1hHTURxbXFTU1l6K3ZZd0U4NmFxdFMxdGRYcDY4M3R1akZqVWpWams1UDFLclc5OTlQTGdWelU1ZHdaaUlnK21xQmVPcWZPbHVZbzB1bjBjVHFtWGZhUHc4d0sxZDVPNkZQOHQyclQ2VnYwelMrYnNQYmVXK3Jrb28rY093RVJVY0pjZE1EVzVpaXFxNnVQSDVlcTZWdDFGbGFtT3FJNzYxSTEyMDlKMS9SRjlrdmxFZFA2aG04N054NFJVZEpzd3oyMk9wOWlZcXBYbzUzMmoyWmxtai9wcEpPK3FqOTJwOGVNT2QzZWYweDV4RFRYdE0rNTRZaUlrdWFpRGx1ZEkrazloVThuanRPM0N6RTFkNDRZTVdLTXZuM1EzQjQrZXZqSituYmZLcldFNFhXa2lCakt5NXZQc3VYNWxMcFVhbVp0TXIzZjNLNnRUcjVUdUZOVGwwdytXcE5LM2F6L3JxTzJPajNOM2wyaVRJNm1PamNZRWJFWTVwcWV0ZlU1aXJycTFETzF5ZFNCY1ZXcEcreGRpYnFxNUF5ek90WDNMN1IzbFREMTBYTG5CaU1pRnNOY1UrSFUzVVZ5VlBJTUhkV1ZwOVhXcVZOcmF2UDY5dktxRVZXbjJyOHVjZXFqL2M0TlJrUXNocm1vakY0dk9oQ0lLU0tHMUgwUnFnSWdwb2dZVW1LS2lDZ2dNVVZFRkpDWUlpSUtTRXdSRVFVa3BvaUlBaEpUUkVRQmlTa2lvb0RFRkJGUlFHS0tpQ2dnTVVWRUZKQ1lJaUlLU0V3UkVRVWtwb2lJQWhKVFFTOTdXQ1V1ZUVBbExwd2RWdk52NWlMM25BYnI5eDUwLzF2RjlpS3RhejRETWE3SHdEeitydm4weDZ4Ky9PS1lkekUwMjNHUlBuN01NWFNwM2llVEc5M2JYR2tTVXpsdm52dXlpb3ZqcnB6bm5OT2cxQWYvdXMyNzdNaGgyZm5Kb2Q1dlFOZTgrcVArSm82TGFkRXE5NXo2NGRldVhXQkhxUXc2dTN0VVczdW4ycnhqbjFxOVlhZGFzbnF6dXFuNVpYWHlOUXRVNHVLSFZDSlRnWUVscG5LYWI2YTRxSlNZZnJUblFObkc5SWFIWDNMUHFSK2VxQ016Vk5pei83QmE4ZFpXZGVWOXo2dkVCTDJLclpTd0VsTTVpYWsveEhSbzBkblZvNTVkOTZFYWYrTWl2NmRKU2tGaUtpY3g5WWVZRGwzZWJ0bWp6cHUxMU8veGoxTmlLaWN4OVllWXdodGJkcWxUcHVxVnFya281OWhYSlNzeGxaT1kra05Nd3pQcnNUWHF6c1Z2cUx1V3ZLRXlkeTlUdVh1V3ExOHVmTDF3MzcxTDE2c1Y2N2NWTGlhRnBDZWZWNCsrK0UrVnVHQzJjMytWcE1SVVRtTHFEekVOVDJMQ2IvVXFzRkVsTWczL25aTzVLRlM0VHp0SlB4Nlh6bEZWVXhhcUtYTldxby9iRHR1dkxENjcyOXJWTjM2NnhJVHFxUDFWa2hKVE9ZbXBQOFEwUElYWGhqcm01RlJIN1pqSkRlcU8zNisxWDExOHVudDYxQzJQck5iSDVSR3hMMFdKcVp6RTFCOWlHcDRCeGJSUEhiWkpkeSt6STRSaC9ndnZGMWJJenZtVWdzUlVUbUxxRHpFTno2Qmlhc3cwcWgvcjAvNlFQUG5xQjM3SFJ6RWxwbklTVTMrSWFYZ0dIVk5qTmxKLy8zQ1BIU2tNVDcvV1VwcEJKYVp5RWxOL2lHbDR2R0txSGYrVHhYYWtjUHp4RmIxQ0xiWG5VSW1wbk1UVUgySWFIdCtZbXFpOXQyMnZIUzBjUDF2d3FucytjVWxNNVNTbS9oRFQ4SGpITkJlcDgyNS8ybzRXam53K3I4WlBYK3llVXh3U1V6bUpxVC9FTkR6ZU1kVis1YXBIN0doaDJYZXdRMlQrSWhKVE9ZbXBQOFEwUENJeG1tUk85VCt4STRibG1UVXRoZFd4YzE0aEphWnlFbE4vaUdsNFJHS2FqZFF0ODE2eEk0Wm4rRldDeC85Z0phWnlFbE4vaUdsNHBFNlR6NXl4eEk0WW52Yy8ydHY3NjYrT2VRV1RtTXBKVFAwaHB1R1JpdW5vNngrM0k4YkRpT3NlZGM0cm1NUlVUbUxxRHpFTmoxUk1oMTNSYkVlTUIzUE14dnJjS1RHVms1ajZRMHpESXhWVGN4R3FxN3ZiamhxZXJ1NGV1VzBaak1SVVRtTHFEekVOajFpQTlIR3pkbE9ySFRVZWJwMGY0d3Y1aWFtY3hOUWZZaG9lc1pobUd0WENsUnZ0cVBHd2JiYytmdUo2aDM1aUtpY3g5WWVZaGtjc3BqcGl0ejIyeG80YUQrMGRYU294TWFhMzZTT21jaEpUZjRocGVDUmpHdWRyVGZ1STdhbytNWlV6enBoKzUxZC9VdWZPZWxyRWIvNzhLYlVoaGpldU1CRFQ4SWpGTktiZjBmOHN0ejIreGoyL1lrdE01WXd6cHBVQ01RMlBXRXkxNTl5MjFJNGFINnZlM2U2Y1c5RWxwbklTVTMrSWFYZ3FMYVpiNDdvSVJVemxKS2IrRU5Qd1ZGcE10Kzg5MlB1L3Fqcm1WMVNKcVp6RTFCOWlHcDVLaSttdWZlMHFsbmZoSjZaeUVsTi9pR2w0S2kybWhmYzR2Y3pqR0Jxc3hGUk9ZdW9QTVExUHhaM21mOHhwdml6RXRDd2hwdUdwdEpqdTJIdUltSXBDVE1zU1locWVTb3ZwQnp2M203QTU1MWRVaWFtY2NjYlV2TUhFNjBLdTJiaFRIV2p2c2lPSGhaaUdwOUppdW1UMVp1ZmNpaTR4bFRQT21CNXJmaEtiSjkwbHZQZ2g5ZnJHZU43OWg1aUdSeXltSmZJYlVQWDNMSGZQcjlnU1V6bmpqQ20vbTI4bHBnTkdMS1lsOHJ2NXNaemlHNG1wbk1UVUgySWFIc21ZVG8vNXVzSCtRNTI5WjFldStSVmJZaW9uTWZXSG1JWkhMS2FaUnJYb3BVMTIxSGhZMzdLYmxhazR4SFR3RXROQlFVd2IxWXIxMit5bzhYRDJ6S1h1dVlXUW1NcEpUUDBocHVFUmkrbmtCdFg2eVNFN2FuamEydlVwL2lVeHZURzBrWmpLU1V6OUlhYmhrWHpPTkU2ZVdMWEpQYTlRRWxNNWlhay94RFE4VWpFOThacjVkc1R3OVBUazQzbmJ2U01scG5JU1UzK0lhWGlrWW5ycTlDZnNpT0g1eTdwL21aZzU1eFZNWWlvbk1mV0htSVpISktZNlpKZmMrWndkTVN5SE83djFNUlBqYzZWOUVsTTVpYWsveERROElqSE5OS29scTdmWUVjTXlyWEdWZTA2aEphWnlFbE4vaUdsNFJHSWEwOFduVGR2M3hmY2kvYzlLVE9Va3B2NFEwL0JJeEhUOHRFVjJ0SEMwZCtqVGUzMnN1dVlUaThSVVRtTHFEekVOajNkTTlTbiszT2MzMk5IQ1lLN2Vuelh6U2ZkODRwS1l5a2xNL1NHbTRmR042ZkFmekxNamhXUEd2SmVkYzRsVllpb25NZldIbUliSEs2YVRHOVRjdjRWZGxkNitjSTBKbDNzK2NVcE01U1NtL2hEVDhBdzZwdGxJblgvSG4rMG9ZYmlwZVZVOC95VkpmeVNtY2hKVGY0aHBlQVlWMDB5RE92ZjJaK3dJeGFlN0o2OStOUHZGMGx5UjlrbE01U1NtL2hEVDhQUTdwaVprK3JUZUhHdjNQclhlZm5YeE9kamVxY1pOWGVTZVV5bEpUT1VrcHY0UTAvQWt2blYvNzdzdGZkYUpENmxoVnpTckU2K2VyMDYvYWJISzNMMWMvU0h3Qy9PWHZibTFNQS9YUGlzNWlhbWN4TlFmWWdxR2c0YzcxVlgzUDE5WUNidjJWMGxLVE9Va3B2NFEwNkZOUjFlM2Vualp1eXJ4M1FlYys2bWtKYVp5RWxOL2lPblFwTDJ6U3pXdDJOQjdTbC9LRjVrK1QySXFKekgxaDVnT0hmTDV2SHE3WlkrYU1tZWxTbHlnVjZMbEd0RStpYW1jeE5RZllsclpmTngyV0sxNmI0ZTYwYnpUVTdaUkpTWjVQTmFsSmpHVmM5SnZscW5sYjI0dFhJRU02Y3AzL3EyTy9mNWM1NXdHWmFaUlBmanNQNXovVnJIOTNjcU4raHZNNDZMRHhEbnFwWGUzTzhjdXBpdmUycVl1dWVzNTk1ejY0UWxYejFlNzk3ZXJsdGEyaXZETkxidlYyazJ0aFgzejZ5Zldxb2wzUHFkT01EL3dMOWFuOGZxSHRXc2ZsTDNFRkxFRU5LZTQ1dVZJWmxWZTdwcnRNRmZoeStsS3ZJVEVGQkZSUUdLS2lDZ2dNVVZFRkpDWUlpSUtTRXdSRVFVa3BvaUlBaEpUUkVRQmlTa2lvb0RFRkJGUlFHS0tpQ2dnTVVWRUZKQ1lJaUlLU0V3UkVRVWtwb2lJQWhKVFJFUUJLemFtdWFqVnVjR0lpTVh4b0sxUGhaRnRhSEpzTENKaWNjeEZ1Mng5S293cm1zYzdOeGdSc1JobW9sL1krbFFnNWprTTEwWWpJa3FhaS9LMk9oVktydWtGNTRZaklrcWFpM2JZNmxRd3VhamJ1ZkdJaUJMbXRPZmNkN3d0VGdXVGk2WTdkd0Fpb29TNWFKbXR6UkNnUG5yTnVSTVFFWDNNUnEyMk1rT0liT05HNTg1QVJCeU11YVlLZlNsVWY4aEZpL1FPeU91VnFudm5JQ0ora2ViS2ZYM1RXbHVWSVV3Mk9rMnZVbHVKS2lJTzJGeTBONUZ0dXM3V0JBcVlxTlpINi9USGZUcXNuWW42WnIyekVCR1AwS3hDczFHYmJzU1dSS1poZ3EwSEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVCcGtVajhCNEFvbStNYlQrM0pBQUFBQUVsRlRrU3VRbUNDIiwic3VwcG9ydGVkRXh0ZW5zaW9ucyI6W3siaWQiOiJobWFjLXNlY3JldCIsImZhaWxfaWZfdW5rbm93biI6ZmFsc2V9XSwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiXSwiZXh0ZW5zaW9ucyI6WyJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiJhZWI2NTY5Y2Y4ZmI0OTUwYWM2MDI0Y2EyYmJlMmU1MiIsIm9wdGlvbnMiOnsicmsiOnRydWUsImNsaWVudFBpbiI6dHJ1ZX0sInBpblV2QXV0aFByb3RvY29scyI6WzFdfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMTktMDktMjciLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IkhJRCBDcmVzY2VuZG8gQzIzMDAiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDE5MDgyMTAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4zLjYiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMyJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAxOS0wOS0yNyJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMTktMDktMjcifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyJmNTEwMDg2NGQxNjM5MTRiNDczOTQ0YjlhMGViNTU0ZmQ1MzJkMGNiIl0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbImY1MTAwODY0ZDE2MzkxNGI0NzM5NDRiOWEwZWI1NTRmZDUzMmQwY2IiXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ill1YmlLZXkgQmlvIFNlcmllcyAtIE11bHRpLXByb3RvY29sIEVkaXRpb24gMVZESlNOIn0sImRlc2NyaXB0aW9uIjoiWXViaUtleSBCaW8gU2VyaWVzIC0gTXVsdGktcHJvdG9jb2wgRWRpdGlvbiAxVkRKU04iLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc0LCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjJ9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50IiwicmVtb3RlX2hhbmRsZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURNekNDQWh1Z0F3SUJBZ0lVU09FalRmLy95cVJmUFc3UXE4cXRJeUNyQWc4d0RRWUpLb1pJaHZjTkFRRUxCUUF3THpFdE1Dc0dBMVVFQXd3a1dYVmlhV052SUVaSlJFOGdVbTl2ZENCRFFTQlRaWEpwWVd3Z05EVXdNakF6TlRVMk1DQVhEVEkwTURVd01UQXdNREF3TUZvWUR6SXdOakF3TkRNd01EQXdNREF3V2pBdk1TMHdLd1lEVlFRRERDUlpkV0pwWTI4Z1JrbEVUeUJTYjI5MElFTkJJRk5sY21saGJDQTBOVEF5TURNMU5UWXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFDZHZsMjd3Mmd1MWZQWGVFRmJJZHF4MEJhbHZWRFZXclFQSjdIcXZpdUV0WkhseFNMeFNGdGNYcFRvbHZMdm9mOGY0dE1lclFUa1ZHemNtWXptMUVCVDRJSnVNbW9FcWZrRUVoV3BzQURNRnJqWmtxbFpZOUVxeFF6TG9WRUVvbkU1b0d4U2RWQ3hDY0xJYWNrcHlSL0NDWHZqMUJ0L2hUZ0U5aFRsRjRwUnF4TWt4M3BsRjd5OGREWmxSSFdzN3ZibmhtQkNHZUkwWlBFUTZubDJtQ2cycjc0YWRGMnU2SzlyckxmaEJDM1FMRThFUHJncVVzSStoa3VxMnRLNE0yU01PcDh1VVZWa3FVZXUzaDBrcjNXVkkwVzAycGtnck9naUZLTEZOa1NyYlloZGpNQkRqNWl6bXFmYzl4SlJLb0RYNjEycWQ4WkdWSHBUNUFZRlgrMWhBZ01CQUFHalJUQkRNQjBHQTFVZERnUVdCQlRaeVU1RGlRL2EyVUVnRTdxQkswemhJc1JOUmpBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQU1BNEdBMVVkRHdFQi93UUVBd0lCQmpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQVh2bkI0U0x1VUpmWU1TVkdBaHNzTC9TbVdsaTNGU2NjZ3h5ZHZLbEFDY2lkSUlXS1FxYTNxL1FTVUVRekM5RGdFZk1ncjdpQzFCa1RaYklMYm9WNlVaNWtuTnN2akVaV3VNZW9nSjh0Z1pzMWhWdkt3Wml6d0orbUVjbXNqaElyQll1b0wxVDZ5ck9KdktGZzFqditDeTRad0E5QnBrL1YzVU9pcjFWeUs4ZEN0eUh1NnZmb3NvdEFkWXg4RkF1UjI0M2dSVE1WNkp4OEpkaWcySkRJQVFNbHpWZURwU1VIWC9LMkhYUkh4SHdmZ2piZ1VqakJ1LzcycjhPZmVoeWh6SFhJM0s4Q0ZGZGZsTys4bkVPSkszeThGMWl2Z1M1dU4vOFNtY1l3L1NUUVl3aHJ4UHV3ejNuUDhiYU11bTRCQjJublltcEI2MHNYM2JsNWs4UVVTdz09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWZDQVlBQUFDR1ZzK01BQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBSFlZQUFCMkdBVjJpRTRFQUFBYk5TVVJCVkZoSHBWZDdUTlYxRkQvM2Q1OXdlUVNJZ1M5QVFBWGNGTEFRWmk5ZnBlVnoxdFkvV1RacjVXeHBjN1c1a25MYTVqSTNaODVzclMybk0yc2p0V3daUzdJVUg0SDR4Q25FUXg0REFaRjc0Vjd1czg4NXY5L2xJbkJ2VkovQjRQdjludS81bnUvNW52TTU1NmZ6QS9RdjBIYi9JclgzVkZLUG80NWNubTRpblVJV1l3TEZSbVpRVXV3akZHL04xaVJIaDFFWjBOUlZSdWRxdDFCZCsyblNLeVMvT2h5czArbGszZS8za1E5cXZENFpVdGE0VlZTVXVZMGVpcHlpVGhBZm9jb09SVmdEdXV3M3FLUmlBZDNyYmNFdGpUallJb2Y2V2FIc0NtelZQV0NNeCtjZ2g4dExxV01LYU1Xc1VqTHFvMlJ0SklRMG9Pem1lcnBRdTRlc1pnc09Oa0d4SDdkMGtkdlRUMTdzNE9NVTdWSThaaGpnR2FNK0FxOWlFTnU4UGlmMXVkejA3TXd2S1dmOEdsVm9DRVkwNFBDNVdkVGFYWUZiUjh2TnZMNSszS2dmYjV4Tk15YTlSYW1KaXluYU1sR1RWdEZscjZiYTl1K3BxbkVYNHVNdVJSZ2pTWUVock43dXRGRmU2bHFhbDdOZmt3NWltQUdIeW5QcGJrOFZtWTB4c3RucHRsRkNWQ1l0elR1Qk44M1FwTUxqVHRldmRQelNVbko3ZThta2p4WjM5ZlhiS0RmbGRacWJ2VStUVWdHbkJWRjZmUTJpUEhnNFcxNlVXVXd2emJrMTZzTVpFK1BuMHB2ejdKU2V1QXllczhsY3BDbWFLdW8vcCtxV3IyVWN3SUFIV3J2UDBZRXpoWEF0TEFic3NIaHA3aUdhbXZ5aWpQOHJ5cXJYVVdYOVhvb3d4eUF1Zk5CcnA0M1BPQkZYWmxrZjhNRFJpcWNweW93QXdwdXoyeCtmV3Z6L0R0ZGU5c21zenlndGNSNkMxd2JkekJsNk9scTVXTllZNG9HYXRoSk1ya1RFeDBqQVJTSEFWcys1cllrUU5YYitRZ2ZQTHNRNmdYeUluc3JlUWZtcG03UlZGWWZMODZuMWZpVU9rWXZTaGtVUHh2YnVrem95NksxaWhNMWhvM1h6VzZFdlNmWEErZHBpV0dhV2QrZG9Yekx6bUd3S1lGTENBc1JBbFBCQWhNbENGWFU3dEJVVlByOEhnVmNKSFdxK0YwMHBscitETVRkclA0enZ4WTExa05NaHhUK1NlVEdnK2Q0VjVMUUppdHlVR0pOQjhWRlpzamdZQlpNL0lJL1hDVGtqMHF5RE9wRjJBVlExN0NJalVwL0RuVDFVa0w1RjVnZGorc1Mxd2cxZ0UzZ2lnbTYwZkNYelNuUFhieUFQYklYditJRHBFMTZUaGFISVM5c2t5aGxtTUU1RjNjZnFBS2hxMkMwRTVQSDFnWWFYYUxQRGtaRzBIREpPbktXSHA1MUkwejVTT3V4OGUxV0F1WnpkSFFyVGtwOFRtalhvSStsYTB3R1pzenVicWJPM2lmUTZBL1c3dlZTWXNWM21SMEpLd2tLYzRXSGlCa21SOEkzQ0NnSTg3b09MNHF6VDVQK1JVSkJlakVPZ0FQSzhoWVB6YXRNK2VJVHAySU85eVRRbWVyb21QUnh4MXF4QWNzaWxlL3ViU2VFYmNXUUdZRUNnaGNMWTJIeUtqb2dqSDI1aE1wanBVdjFPdWdsaTRlaDJlUncwTzMyYkpqa3l1Q2dOemcwdnpsWU1TaVNzMHVvbzRNRzdoTU9qQ0VhWDF5RkUwblN2akJ6dVRuRXBLODZaOElvcUZBSXVidzhrZzlBckVhUkVXU1pJK2pINFhicDZnOUU5RW5KVDNvYVJ6RE4rTVVKQlFESG41NmE4b1VtRUJ1c094QnMvTjUrdEpFYlBrQUZEajhVR3ZPcy9JV3ZjU2dsR0JodlM3L0ZUWWZwV0dZZERZOGZQQXhXU0EzNXNUQzRwNCtMbTRBYXFJb1BlUXRmdWZLNkpoMFpoeGxic1VYT1NtWE5pZkQ1WlRBa3lEb2ZiYmNjbHhuQThXTkFxeENiUk55a2hYeFFwYUR3NjdmWFVZYnNpRzBLaHR2Mm9lSXZoOHJoUU1ZT2NFQXFYRy9lSSt6bmdPYzV5eHI4cTgySUFNMWMvRkxGT3BscXU1ZUZRWHJNWnpHY1ZDalliTFdHNUk0QlQxZXVScmxieHROT3RNaXREREVoTFhJSXluQUF2dU9FV0UzWDNOZEFmdDk0VmdhRzQyWElRdDBaWDZQZUNFL3FRRmU5cks2SHg3WVU1MEt2SDdmVzRmUytxN0tLQkp4c2dnQlg1cFNBR2gxaklyVmg1elE2dzNSZmFhaEJYbS9hQ2JDWlRqQ1VGVVR5V1pxVzlwNjJNakpQWFZxT3JQZ01PNE52NzRHa2Yrb3dmdE5WQkRRbmpGSnFIU3cxN3BYdmhXVzVLWnFlL1E0OU4vVVNUQ0FWV29RWEZJSEJIWFhlM0ZQclVEc3VHRG10Ri9oSEtUSHBla3hoaUFPUEkrU0pxNlM2SEY0STlZV3prQkpUbzQ2aVVNeldwOFBpci9SaWR1THhLWXNTa3NWOHZMbE9RdmhHWDJZbFIwT0JoQmpDK3UvZ0VjdlkwQXBLN1lrNDFOeGpQU1FuV0ZIVEY2NlVyamdldkI4Q3U1YStsMnZZU1JQdHVWRG83M2hoZE1TSG5VWDd0VGpzVlpHeEFsL1dwdGlPSUVRMWduTDI5bVg2L3RSMXRtbGtZajhXNFgrQ1NqV2NVREdZMU5wUy9DN2hTS3FpTUxNL2wyUW1TV1o3M0RkeitnaW84QkNFTllQUTQ2cW5rendYVWJxdkJreGpVUXNXZlpGZ2J1bzNyQWYrd043ak9POTAreW54NFBpM0wrMG5ZTDFTY2hEVWdBUDRnUFYvN0lkMXErMUhTaG11R2tJcVdSUGd5eE1GcVA4SGZqVG5qWHdZNWJRZmJKY3Q2T0l6S2dNSG90Ri9IZTFlZ3NheEhTcUc2d2ZkbVE1eDhOeVRGRnFCY3AyaVNvd0hSM3lrNSszNmhGN3ZYQUFBQUFFbEZUa1N1UW1DQyJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTAyLTAxIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NCwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZdWJpS2V5IEJpbyBTZXJpZXMgLSBNdWx0aS1wcm90b2NvbCBFZGl0aW9uIDFWREpTTiIsImNlcnRpZmljYXRlTnVtYmVyIjoiVTJGMTAwMDIwMjUwMjAxMDA1IiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMDgtMTIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc0LCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ill1YmlLZXkgQmlvIFNlcmllcyAtIE11bHRpLXByb3RvY29sIEVkaXRpb24gMVZESlNOIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVMkYxMDAwMjAyNDA4MTIwMDMiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0wOC0xMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzR9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDItMDYifSx7ImFhZ3VpZCI6Ijg3ZGJjNWExLTRjOTQtNGRjOC04YTQ3LTk3ZDgwMGZkMWYzYyIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiODdkYmM1YTEtNGM5NC00ZGM4LThhNDctOTdkODAwZmQxZjNjIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6ImVXQk0gZUZBMzIwIEZJRE8yIEF1dGhlbnRpY2F0b3IifSwiZGVzY3JpcHRpb24iOiJlV0JNIGVGQTMyMCBGSURPMiBBdXRoZW50aWNhdG9yIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X2RlciJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoyNTYsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDZ2pDQ0FpaWdBd0lCQWdJQkFUQUtCZ2dxaGtqT1BRUURBakNCblRFTE1Ba0dBMVVFQmhNQ1MxSXhEakFNQmdOVkJBZ01CVk5sYjNWc01SQXdEZ1lEVlFRSERBZEhZVzVuYm1GdE1SY3dGUVlEVlFRS0RBNWxWMEpOSUVOdkxpd2dUSFJrTGpFWk1CY0dBMVVFQ3d3UVEyVnlkR2xtYVdOaGRHVWdWVzVwZERFWk1CY0dBMVVFQXd3UVpWZENUU0JEWlhKMGFXWnBZMkYwWlRFZE1Cc0dDU3FHU0liM0RRRUpBUllPYVc1bWIwQmxMWGRpYlM1amIyMHdJQmNOTWpNd056RXhNRE0wTmpFMFdoZ1BNakEzTXpBMk1qZ3dNelEyTVRSYU1JR2RNUXN3Q1FZRFZRUUdFd0pMVWpFT01Bd0dBMVVFQ0F3RlUyVnZkV3d4RURBT0JnTlZCQWNNQjBkaGJtZHVZVzB4RnpBVkJnTlZCQW9NRG1WWFFrMGdRMjh1TENCTWRHUXVNUmt3RndZRFZRUUxEQkJEWlhKMGFXWnBZMkYwWlNCVmJtbDBNUmt3RndZRFZRUUREQkJsVjBKTklFTmxjblJwWm1sallYUmxNUjB3R3dZSktvWklodmNOQVFrQkZnNXBibVp2UUdVdGQySnRMbU52YlRCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQkFoK29lS3lMU2c3OTdJNnBKb091djJLMGJZaktZR1FlZElNWkFnaGlaUDYrb0R3Q0E3eldhaVp6WXQzazhha1EzcWE0VG5qQThkQ085ei9JS0tIeTdhalZUQlRNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3SFFZRFZSME9CQllFRkxjbjkvR0lDL2JhS3QwR3ozeEk0T0VYdVJUK01Bc0dBMVVkRHdRRUF3SUJCakFSQmdsZ2hrZ0JodmhDQVFFRUJBTUNBQWN3Q2dZSUtvWkl6ajBFQXdJRFNBQXdSUUloQU5WbkpkZS8vdEJMcThNRERpK1NBZDZVZFlJWlNuZzRQTXFteU5ydlpqNjRBaUFYMHhTekFoRmFDQ3AvdWhwVmdubEYrWEJncndBSXNvdFpHVEI2cmtCMzFBPT0iLCJNSUlDcFRDQ0FrcWdBd0lCQWdJQkFUQUtCZ2dxaGtqT1BRUURBakNCcnpFTE1Ba0dBMVVFQmhNQ1MxSXhFVEFQQmdOVkJBZ01DRk5sYjNWc0xWTnBNUk13RVFZRFZRUUhEQXBIWVc1bmJtRnRMVWQxTVJjd0ZRWURWUVFLREE1bFYwSk5JRU52TGl3Z1RIUmtMakVpTUNBR0ExVUVDd3daUVhWMGFHVnVkR2xqWVhSdmNpQkJkSFJsYzNSaGRHbHZiakVjTUJvR0ExVUVBd3dUWlZkQ1RTQkRRU0JEWlhKMGFXWnBZMkYwWlRFZE1Cc0dDU3FHU0liM0RRRUpBUllPYVc1bWIwQmxMWGRpYlM1amIyMHdIaGNOTVRnd056QXlNRFV6TVRNNVdoY05Nak13TnpBeE1EVXpNVE01V2pDQnJ6RUxNQWtHQTFVRUJoTUNTMUl4RVRBUEJnTlZCQWdNQ0ZObGIzVnNMVk5wTVJNd0VRWURWUVFIREFwSFlXNW5ibUZ0TFVkMU1SY3dGUVlEVlFRS0RBNWxWMEpOSUVOdkxpd2dUSFJrTGpFaU1DQUdBMVVFQ3d3WlFYVjBhR1Z1ZEdsallYUnZjaUJCZEhSbGMzUmhkR2x2YmpFY01Cb0dBMVVFQXd3VFpWZENUU0JEUVNCRFpYSjBhV1pwWTJGMFpURWRNQnNHQ1NxR1NJYjNEUUVKQVJZT2FXNW1iMEJsTFhkaWJTNWpiMjB3V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVFJZnFIaXNpMG9PL2V5T3FTYURycjlpdEcySXltQmtIblNER1FJSVltVCt2cUE4QWdPODFtb21jMkxkNVBHcEVONm11RTU0d1BIUWp2Yy95Q2loOHUybzFVd1V6QVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUFNQjBHQTFVZERnUVdCQlMzSi9meGlBdjIyaXJkQnM5OFNPRGhGN2tVL2pBTEJnTlZIUThFQkFNQ0FRWXdFUVlKWUlaSUFZYjRRZ0VCQkFRREFnQUhNQW9HQ0NxR1NNNDlCQU1DQTBrQU1FWUNJUURjNDFMRks0TEpDQlUyVlZLSXo3WjZzeFBoVUVraDhuTFNMSzZJWGRrUDV3SWhBSWVLVk9aY2hhVk81YUY3ZmJkWG9TcmN5eTFZWWVVZVBMb2pjS0k5Zlg4NCJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUErZ0FBQUV4Q0FZQUFBRHZEWWdxQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUVuUUFBQkowQWQ1bUgzZ0FBRmljU1VSQlZIaGU3ZDBIZUJYRjJzRHhONzNRQ1RWQTZGSUZGS2tDVXV5QUV1bUtZa0ZVYklDQ0lpS0NVZ1FFN0wwZ2RsUXNLQ3BTcklnZ1NDK2hKblJDSjRIMGIyZnZlRC8wa2hDU25jMmVrLy92dVhtWWQ0NlhrSk56OXN5N00vTk9RSlpGQUFBQUFBQkFnUXJVZndJQUFBQUFnQUpFZ2c0QUFBQUFnQWVRb0FNQUFBQUE0QUVrNkFBQUFBQUFlQUFKT2dBQUFBQUFIa0NDRGdBQUFBQ0FCNUNnQXdBQUFBRGdBU1RvQUFBQUFBQjRBQWs2QUFBQUFBQWVRSUlPQUFBQUFJQUhrS0FEQUFBQUFPQUJKT2dBQUFBQUFIZ0FDVG9BQUFBQUFCNUFnZzRBQUFBQWdBZVFvQU1BQUFBQTRBRWs2QUFBQUFBQWVFQkFsa1czUFNzek5WWFNEeVRLcWExYjVkU2FkWks2ZTQra0h6OW05NG4zLy9tQWNRRWhvUkpjdXBRRVIwVkpXSlZLRXQ2Z3ZvUlhyeVpCcFVwSlFDRDM0UUFBQUFCZjROa0VQU3NqUTA1dDNpS0hQdnBFanYrd1FOTDM3Wk9zMURUOUtJQ3pDWXlNbE5BYTFhVEVOWjJsWkpmT0VscWh2UFdPRDlDUEFnQUFBUEFhenlYb0tqRS9NdmM3U1h4emhweGFzVkwzQXNpUGdOQVFLZHF4dlpTOVk0QVVhZEpZOXdJQUFBRHdFazhsNk1kLysxMzJqSHRLVXRhdDF6MEFuRmE4NjlWU1lkZ1FDYXRTUmZjQUFBQUE4QUpQSk9nWkowN0lub2xUNVBBSEg0dGtadXBlQUtZRWhJZExoVkVqSktwWGR3a0lEdGE5QUFBQUFBcFNnU2ZvcDdac2xSMERCMG5xMXUyNkI0QXJBZ0trMkJXWFNwWEpFeVNvYUZIZENRQUFBS0NnRkdpQ2Z1TFA1UkkvWUpCa0hEbWlld0M0TGJ4UlE2bjI1aXNTRWhXbGV3QUFBQUFVaEFKTDBFOHNYU1k3YnJsRE1wT1NkQStBZ2hKYXE0YlUvT2hkQ1M1ZFd2Y0FBQUFBY0Z1QkhKQ3NsclhIMzNrdnlUbmdFYW1idDhyMmdZTWtnL2NrQUFBQVVHQmNUOURUang2VDdiZmRJUm1IRHVzZUFGNXc4cysvWk9jamowa1doUm9CQUFDQUF1SHFFbmQxeG5uOEF3L0pzUy9tNko1ekZ4Z1pJVUdsU2tsSWplb1NWS0s0N2dVS09ldHRuTDV2djZUdGlKZU1JMGNsS3kxTlAzRHVLazRZSzJYNjlOSVJBQUFBQUxlNG1xQWZYYmpJTGdwM3prZXBCUVpLK1BrTkpLcC9QeW5XdXFVRWx5a2pBVUZCK2tFQWY4dE1UWlhVWGJ2azZMZno1TkRNOXlWOXoxNzlTTzRGbGl3aDUvM3dEVVhqQUFBQUFKZTVscUJuSkNWTDNGWFhTRnJDVHQyVE82RTFxMHZGVVNPa2VOczJkcUlPSUhjeVQ1NlVneDk4TFB1ZmVWNHlqeDNYdmJsVG9sdFhpWms2eWJwQ0JPZ2VBQUFBQUthNWx2RWVtZlAxdVNYblZtSlFvbWVzMUo0elc0cGYwbzdrSERoSGdSRVJVdmJXL2xMTGVnK3BvOVRPeGJGdnY1ZFQ4UWs2QWdBQUFPQUdWN0pldGV4Mi8vTXY2U2dYckdROGF0QkFpWGxxdkFTR2grdE9BSGtSVnFXeWZZUmE1TVV0ZGMvWlpaMUtrZjNQdnFBakFBQUFBRzV3SlVFL3NYaUpwTy9hbzZPekNBaVEwamYzaytpaDk3TzhGbkNJdXRGVjdkVVh6MmttL2NTQ1JaSis1S2lPQUFBQUFKam15aDUwVmJuOTZHZGY2Q2huS29HbytmSDdFaGdXcW52eXlmcnhzdExUSmYzRUNjazRmbHl5VXZOZTNScHdpenF0SUxoWU1YdVp1bDBRMGFHYlZhZTI3NUROVjE0aldTa3B1aWRubFo2WklxV3Y2YUlqQUFBQUFDWVpUOUJWY3J5dWVSdkpQSHhFOStRZ09GaXF6M3BQaWpacHJEdnlMbm5kZWprMmY2RWsvYnBZVXJac2xZekVnL29Sd0hjRXgxU1JpTnExcEdpSGRsS3NZM3NKcTFoUlA1SjMrMTU2VmZaUG1xcWpuQlc5cktOVWYvVkZIUUVBQUFBd3lYaUNucnhtcld6cDJsMUhPU3ZhOFJLcC92ckxlWjR0ekR5VklrZSsvVTRTWDN0VFV0WnQwTDJBbndnTWxLS2Qya3VaVy90THNSYk44L3crU1Q5NlZEWjF2Rkl5RGgzV1Bka0xLbDVjNnY3eHN3U0doZWtlQUFBQUFLWVkzNE9lL05kSzNUcTcwbjE2NVMzcHlNcVM0NHQvbDdqTzNXVFhrT0VrNS9CUG1abHlZdDRDMlg3RExiSnQ0Q0JKeVdPVjllQVNKYVRFdFYxMWxETjFWRnZxemwwNkFnQUFBR0NTOFFUOTVQcmNKY3NCa1JGUzdKSzJPc285VlNGKzk4VEpzdU9tQVpLNmRadnVCZnlZU3RSL1dDaWJ1MTRuaCtkOFk4Zm5xa1NYcTNRcloxbHBhWkxDK3dvQUFBQndoZGtFUFN0TDByWnUxMEhPd2h2VWw4RFFjeXNNcDRxK2JiL2pIam40NnB2MlhuZWdNTWs4ZGx4MkRoNG1lNlkrWTcvWHprVkV6Um9TV0xTb2puS1dzaWVYSnpBQUFBQUF5QmVqQ2JyYTNwNlJuS3lqbkttem1zK0ZTczYzM1RwUWtoYjlwSHVBUWlnalF4SmZlTVZlUlhJdVNYcEFSSVFFbDQzU1VjN1NkNU9nQXdBQUFHNHdPNE9lbVNtWnVUek9LYWhDZWQwNk83WHNObjdZQ0RtNWJJWHVBUW8zdFlya3dGc3pkSFIyNnVpMmdORGNGWDdMMkxkZnR3QUFBQUNZWkh3UHVnbjdYM3RUVG56M2c0NEFLUHNtVFpPa0ZYL3BDQUFBQUlDdk1Yck1tdG9YdnFsTHJLUnVqTk05MllzYU5GQ2lodzNWVWZaT2JvcVRMVjJ1czJmUmN5MHcwTjV2RzF3bVNnS2pTdWxPd0tPc2QyVEd6bDJTY2VLRVpKNUkwcDI1RTFxcmh0VCs4bE1KaklqUVBXZVdsWkVoY1oxakpXWGpKdDJUdlpMZHVrcVZhWk4xQkFBQUFNQVUzMHJRclgvcXR0dnVrQk1MYzdudjNENDN1b09VSFhDemhOZXJLOEhGaXVrSEFJL0x6SlMwdzRmbHhPOS95SUhuWDdJU2FlczlsSnUzYWtDQWxCOHhUTXJkZnF2dU9ETVNkQUFBQU1CN2ZHcUplOUtxMWJsT3prTmlxa2oxajJaSzlWZGZrS0xObTVHY3c3Y0VCa3BJVkpTVTZueVYxSjR6V3lvK09Wb0N3c1AxZ3ptd2t2akVsMStUaktSem0za0hBQUFBVVBCOEowRzNFbzhEcjc2aGc1eUZuOTlBYXM3K1NJcGUxRlQzQUw1TEZYUXJjMzBmKzRaVFVNa1N1amQ3R1ljT3l4RjFQam9BQUFBQW4rSXpDWHI2a2FPUzlNdHZPc3BlY01YeVV1MzFseVdrZEduZEEvaUhJbzNPbDhyUFRiVmU1RUc2SjN0SFB2dEN0d0FBQUFENENwOUowSk5XcnBMTVk4ZDFsSTNBUUtrNGRyU0VsQ3VyT3dEL1Vyek54VkxxaGo0NnlsN3lueXNrNC9nSkhRRUFBQUR3QmI2VG9QLzJ1MjVsTDd4ZUhTblI0UklkQWY2cDdJQmJKU0E0V0VmWnlNaVFwSlVyZFFBQUFBREFGL2hNZ3A2OGJwMXVaYTlFbDZ2dC9icUFQd3VyWEVraVdqWFhVZlpPclY2cld3QUFBQUI4Z1U4azZGa1ptWksyYWJPT3NsZnNzazY2QmZpM1ltM2I2RmIyVXZmdjF5MEFBQUFBdnNCSEV2UjBPMGsvbTdBS0ZYUUw4RytoMWF2cFZ2WXlUM0RVR2dBQUFPQkxmR2FKZTY0RTZEOEJmOGRySFFBQUFQQTcvcFdnQXdBQUFBRGdvMGpRQVFBQUFBRHdBQkowQUFBQUFBQThnQVFkQUFBQUFBQVBJRUVIQUFBQUFNQURTTkFCQUFBQUFQQUFFblFBQUFBQUFEeUFCQjBBQUFBQUFBOGdRUWNBQUFBQXdBTkkwQUVBQUFBQThBQVNkQUFBQUFBQVBJQUVIUUFBQUFBQUR5QkJCd0FBQUFEQUEwalFBUUFBQUFEd0FCSjBBQUFBQUFBOGdBUWRBQUFBQUFBUElFRUhBQUFBQU1BRFNOQUJBQUFBQVBBQUVuUUFBQUFBQUR5QUJCMEFBQUFBQUE4Z1FRY0FBQUFBd0FOSTBBRUFBQUFBOEFBU2RBQUFBQUFBUElBRUhRQUFBQUFBRHlCQkJ3QUFBQURBQTBqUUFRQUFBQUR3QUJKMEFBQUFBQUE4Z0FRZEFBQUFBQUFQSUVFSEFBQUFBTUFEU05BQkFBQUFBUEFBRW5RQUFBQUFBRHlBQkIwQUFBQUFBQThnUVFjQUFBQUF3QU5JMEFFQUFBQUE4QUFTZEFBQUFBQUFQSUFFSFFBQUFBQUFEeUJCQndBQUFBREFBMGpRQVFBQUFBRHdBQkowQUFBQUFBQThnQVFkQUFBQUFBQVBDTWl5NkxianN0TFRaVk9YV0VuZEdLZDdzaGMxYUtCRUR4dXFvMy9LVEUyVkRhM2FTOGFoUTdybnpCcXNYUzZCa1pFNk1pYzFQa0ZPcmQrZ0kvaXowSmdZQ2E5WFIwZmVjV1QrQWtrWU1FaEhaMWFpUjZ6RVRKNmdvMy9LeXNpUXVNNnhrckp4ays3SlhzbHVYYVhLdE1rNkFnQUFBR0FLQ1hvZUhKejV2dXgrYkt5TzRNK2krdmVUNk1jZjFaRjNrS0FEQUFBQS9vY2w3Z0FBQUFBQWVBQUpPZ0FBQUFBQUhrQ0NEZ0FBQUFDQUI1Q2dBd0FBQUFEZ0FTVG9BQUFBQUFCNEFBazZBQUFBQUFBZVFJSU9BQUFBQUlBSGtLQURBQUFBQU9BQkpPZ0FBQUFBQUhnQUNUb0FBQUFBQUI1QWdnNEFBQUFBZ0FlUW9BTUFBQUFBNEFFazZBQUFBQUFBZUFBSk9nQUFBQUFBSGtDQ0RnQUFBQUNBQndSa1dYVGJjVm5wNmJLcFM2eWtib3pUUGRtTEdqUlFvb2NOMWRFL1phYW15b1pXN1NYajBDSGRjMllOMWk2WHdNaElIWmx6Y3ZVYU9mN2p6enJ5dnVRL1Y4anhSVC9weUZubEI5OHJFdVMvOTNraUdwMHZ4ZHExMFpGM0hKbS9RQklHRE5MUm1aWG9FU3N4a3lmbzZKK3lNaklrcm5Pc3BHemNwSHV5VjdKYlY2a3liYktPQUFBQUFKaENnbDRJSkw0NVEvWThjZVpFTGI4YXhxMlJnT0JnSGNFdC9weWdaNldsU1ZhbXNjdFM0Uk1nRWhnU1l2MXBOUUFBLzBPTk04V0ZqNTJBNENBSkNBclNVY0Z6OWZPV3p5SWcxMGpRQ3dFU2RQL2p6d242dHFIRDVOU0tsVHBDZmdXVktDNjFQbjVmQWtORGRROEE0SFJ4M2Z0SStsbkdtRTRvUC93QktYM1ZGVG9xV0JsSlNiTGx4bHNrNC9BUjNXTldaSXRtRWpQK0NRa0laSGN0Y0RZazZJVUFDYnIvOGVjRVBhN2Z6WEp5OFJJZEliOUNhMVNYdXZPKzBSRUE0Ti9XdFd3bjZRY082TWljNkVuanBVejNXQjBWb014TTJUNTBtQno3eXAzUGh1QUs1YVgyN0k4bHBGdzUzUU1nSjl6R0FnQS9GbGFycG00QkFDQ1MrTkVzMTVMemdMQXdxVEoxRXNrNWNBNUkwQUhBajRXV0w2OWJBSURDTG5uZGV0a3o3aWtkbVZkdXlMMVNyRVZ6SFFISURSSjBBUEJqWVkwYTZoWUFvRERMT0g1YzRnYy9LRmtuVCtvZXM0cGRjWm1VdSswV0hRSElMUkowQVBCajRUVnI2QllBb05ES3lwTGRrNTZXMUMxYmRZZFpJWldpcGNyNHNSU0ZBL0tBZHcwQStLdWdJQW1yVUVFSEFJREM2dkEzMzhyaER6N1drVm1Ca1JFUzg4SXpFbHl5cE80QmNDNUkwQUhBVHdXVktpV0J4WXJxQ0FCUUdLWEV4OHV1a2FQdFdYVGpnb0trd3FoSHBNajViSzhDOG9vRUhRRDhWRkRSSWhJWUZxWWpBREFyTXpOVFRwNDhLWWNPSFpLdDI3YkowcVZMSlRVMVZUK0tncEI1S2tWMkRINVFNbzhmMXoxbXFhTlp5L1RzcmlNQWVVR0NEZ0IrS3FSeUpRa0lDdElSQU9TTlNyelQwdElrT1RsWkVoTVRaZlBtemJKNDhXSjU3LzMzWmR6NDhUSjR5QkM1TmpaV2F0ZXRLK2ZWcXlkMXJLOTZEUnBJNjdadDViaExpU0hPUU8wN2YycXluRnE1V25lWUZkNm9vVlFlTzFva0lFRDNBTWdMRW5RQThGT2hWV04wQ3dCeXBoTHdBd2NPeU5xMWEyWDI3Tm55NGtzdnlXT2pSMHUvbTI2U2k5dTFrNmJObXRsSmQ2V1lHS25Yc0tHMDY5QkJicjcxVm5sODdGaDV3ZnB2djVrN1YrTGo0Mlh2M3IxeTVPaFJPNmxId1RxNjZDYzUvUDVIT2pJcnNHaFJpWmsrUlFMRHczVVBnTHdpUVFjQVB4VktnVGdBT1RoMjdKaGNldm5sVXJkK2ZZa3NWa3lpcTFTUkprMmJTcSsrZmVYK0lVTmt3bE5QeVVjZmZ5ekxsaTJUOVJzMnlPNDllMGk4ZlVUcTdqMnljL2dJeVVwUDF6MEdCUVJJOUpPUFMzalZxcm9EUUg2UW9BT0Fud3Evb0pGdUFjRC9VdnZERi8vK3Uyelo2czdSVzNCSHB2VjdqWC9vRWNrNGRGajNHR1FsNTFFRGJwYlNYVHZyRGdENVJZSU9BSDRxdkVvVjNRSUFGQmI3WDMxZGtuLzdYVWRtUlY3VVZDb09IYXdqQUU0Z1FRY0FQeFFRRVNFaFpjcnFDQUJRR0J4ZnNsVDJQL2VTanN3S3JsaEJxajQzVlFKRFEzVVBBQ2VRb0FPQUh3b3VYMDRDUW9KMUJBRHdkK2xIamtqQ3NJZXNodmw5NXdHaElWSjU4Z1FKS2N1TllNQnBKT2dBNElkQ1NwYVVnRUF1OFFCUUdLaGljUEhESDVIMFhYdDBqMWxsN3JwRGlyZHFxU01BVG1MMEJnQitLS1JHTmM2aUJZQkM0c0RiNzhpSitRdDFaRmJSOXUyazRyMkRkQVRBYVNUb0FEd2xwRnhaQ2ExUzJiV3ZrSW9WM1Vsa3JlOFJVaW42alA4R0UxOFI5ZXZyYnd3QThHZEpLMWZKdnFuUDZNaXNFT3Z6SldiS1JHNEFBd1lGWkZsMDIzRnF1YzJtTHJHU3VqRk85MlF2YXRCQWlSNDJWRWYvcEk2TDJOQ3F2V1FjT3FSN3pxekIydVVTR0JtcEkvd3Q4YzBac3VlSkNUcHlWc080TlJJUXpENVh0eDJadjBBU0J1Ujg5N3BFajFpSm1Yem0zM3RXUm9iRWRZNlZsSTJiZEUvMlNuYnJLbFdtVGRhUi96a1ZIeTl4bDNVMmZsWnNZSkVpVW1mQmR4SlNKa3IzQUVEQlNreE1sS28xYXRqSHJabXlkOWN1aVlyeTluVnZYY3Qya243Z2dJN01pWjQwWHNwMGo5V1JNOUtQSFpPNGJqMGxiVWU4N2pFbk1DSkNxbi93amhRNXY2SHVBV0FDTStnQUFBQ0FEOXIxeEhoWGtuTUpESlR5ano1RWNnNjRnQVFkQUFBQThERUhQNTB0UnovN1FrZG1sZWphV2NyMDZxa2pBQ2FSb0FNQUFBQSs1R1RjWnRrelpweU96QXFyYzU1VUdUZUdrMEVBbC9CT2cwOVI5UWkyOXJ0WjFsM1F3dmhYM0xVOUpPTkVrdjdPQUFBQUJTL2p4QW1Kdi84QnlVd3lQMFlKTEZaTVlwNmZadTgvQitBT0VuVDRqcXdzMlRmOWVVbjY5WGZKT0hMVTZGZG04a21wT0hxa0JCVXRvcjg1QUtDd3lNek1sUFQwOUROK1pXUmtXQjlIeHVyckFqbktzbDZidXlkTXlsV1IxM3dMQ3BUb01hTWtva1lOM1ZGNHFmZDhUdGNGOVJqZ0ZLcTRGd0wrVXNYOTJNKy95STViN3hUclNxaDd6Q2w3LzkxU1lmQzlPdkllcXJnN2h5cnV2aThsSlVYV3JsMHJmNjFjS2Z2Mzc1Y0RpWW42RVpHdzBGQXBXYktrbEMxYlZtclhyaTMxNnRiMWZFVnB1Q2NwS1VtMmJ0MHFxMWF2bGoxNzlzaTI3ZHRsNDhhTmN1clVLVGw1OHVRWkI5MFJFUkVTRWhJaXBVcVZrZ2IxNjB1bFNwV2thdFdxZHJ0eTVjb1M3RU1ubTFERi9UOThxWXI3a2UrK2wvaDdocWk3U0xySG5OTDkrMG5sVVk4VXVpUFYwdExTSk40YUd5eGZzVUlTRWhJa0xpNU9ObGxmNnJxUW5KeXMvNnYvcDk3ellXRmhVcng0Y1duWW9JRjlIYWhXclpvMGJ0VEl2ajc0MGpVQjNrQ0NYZ2o0UTRLZXVudVBiTFplU3htSGorZ2VjeUpidDVRYU05LzA5RjRyRW5UbmtLRDdwcU5IajhyY2I3K1ZEejc4VUg3ODZTYzcwY3F0T3VlZEo0OC85cGowNk5GRDk2QXdVTW4ydG0zYlpQSHZ2OHVpSDMrVXYvNzZTMWF1V3FVZmRVWjRlTGcwYjlaTUxyamdBbW5Wc3FXMGJOSENIcUI3RlFuNmYvaEtncDZTc0ZQaXJ1a3VtY2VPNlI1eklpNXNJalZudmkyQjRXRzZ4MytwMTcrNndmdkxMNy9JL0FVTDVQY2xTK1NZUTg5eHBKV1h0RzNUUnRwZmNvbTBzSzRIelM2NnlMNU9BRGtoUVM4RWZEMUJ6MHhKa2EzWDk1ZVR5Ly9TUGVZRWxTMGp0YitlTFNGbHkrb2VieUpCZHc0SmV1NzhiaVUxNjlhdjE1RXpMcklHS28zT1AxOUh1WFBBR2tTLy9PcXJNdVhwcDg4NGs1RmJzejc2U0xwZGU2Mk96dDJzVHo2UjQ4ZVA2OGg1VjE1eGhVUkhSK3ZJR1o5OTlwa2NPWHBVUjg2N3hCcUExdlRZVWxpMUhIM1RwazN5MmV6WjhzbW5uOHI2RFJ2c1ByY0VCUVhaTjRSNjlld3BWMTE1cFRSbzBNQ2VhVE5wMWFwVnN1elBQM1dVc3hNblRzaERJMGJZUzNSTmVYcnlaQ2xhdEtpTzhxNTgrZkxTK2VxcmRlUXNYMGpRczlMU1pITy9tK1hrc3VXNng1emdjbVdsMXV4WkVscWh2Tzd4UCtvMXIyN1FmV2g5RnJ6NzNudHk4T0JCNDF0WEFnSUNwRml4WXRLamUzZnBkLzMxMHJ4NWMrUFhnek5STnlzLy8rSUxPWExFN0tSWDZkS2w4L1U1bTFmcTUzdG41c3d6cm9CeWlyckowcnRYTC9zYWJ3SUplaUhnMHdtNjlmTGM4OHp6a3Zqc0MxWmI5eGtTWUYwa3E3NzltaFJyMlZ6M2VCY0p1bk5JMEhQbi9pRkQ1TVdYWHRLUk0rNjc1eDU1ZXNvVUhlVk1EYVptelpvbFF4OThVQkt0Z1ZSK3FPV0dmLzd4aDlTdlgxLzNuQnYxc2Rtb1NSUFpzSEdqN25IZXQ5OThJNTA2ZHRTUk01bzJhMll2NVRibG5iZmZscjU5K3Vpb1lLa1ZGZDkvLzcxTXNsNWZhaEN1bHF3V05EV1FVMHRmQjl4NnEvMDh4Y1RFMkFOMnAwMmROczFPdXYyTlNtbytzQklwRXp5Zm9GdlhuRjBUSnN2Qk45N1NIZWFvTVYzVjExK1M0bTNiNkI3L29tN3Nmajl2bmp3MWFaS3MrT3N2VjIvWW5VNjk5NnRYcXlhRDc3L2ZUdlJVTXV1bTJ3Y09sTGZmZVVkSFpxaWJFYnNURWx4Zk1hQzJMZFUvLzN5anY5c083ZHZMZDNQbkdybUdLeFNKZzZjZCsyMnhISHpoRmVQSnVmVU9rektEQnZwRWNnNzRpNFNkTzNVclo0Y1BINWJyYjdoQmJyN3R0bnduNTRxYXpWT0pFdnlQV3FyNjN2dnYyemNqZXZYdGE4OGtleUU1VjlSZ2NjZU9IVEpxOUdqN0JzKzFzYkd5ZE5teUFrc1FmRTNyVnExMHEvQlJOWGdPempDYlRQMnR6RjIzKzJWeXJtN3lmdm5sbDlLa2FWUHAyYnUzZlcwb3lQZWV1dEc3ZGRzMnVXL3dZS25Yc0tFOFBYVnF2bGFGbmF0ZXZYcnBsamxxbFptcUQrTzJKVXVXR1AvZDlyRmVRNmFTYzRVRUhaNlZkaUJSZGozd3NQR1pUU1d5V1ZNcGY5ZEFIUUZ3d3hycmcvdHNpN2pVbnVHMjdkdkw3QysrY0d5NVdwa3laZXc3Ky9BZjZuWDA4ODgvUzV0MjdlVG1XMitWTFZ1MzZrZThLZm5rU2J1R2d2cjNYbkhWVmZZV0V1U3NSaUd0Sko2NmI3OGtESC9FeWpETko1TkYybDRzRmU2OVcwZitRMjNQdXJwTEYrbHVKYVhxTThWckRoMDZKQTgvOG9oOVkvR0xMNzg4NitlaUV5NnhyajJxMEtWcGM3LzdUcmZjTTMvaFF0MHlRNjBJdUM0MmY4VWV6NFlFSFo2azlsb2xQUGlRcEZzZlRLYXB2Vll4ejArWGdKQVEzUVBBRGNlT0hyVXJaV2RIVmM3dGVPbWxkbFZ0SjExNHdRVkc3M3pEWFdvZjlkQUhIcERMcnJ6U1hyTHFTOVJOSjFYa1VOMkU2dDZ6cDJ6YzVNTFJXVDVJN2ROVlZmSUxHN1hGTStIaFJ5VGp3UCtmVEdGS2NNVUtFak41b2dRWTJsTmJFTlNLbXNsUFB5MHRXcldTaFlzVzZWN3YycnhsaXoyNzMrK21tK3g2S3lhRmhvWktkOE5KcHJKNDhXTGRjb2U2cHFvaW9DYXBteHZxZEJpVFNORGhQVmxac3UrbFZ5WHBwMTkxaHprcUthODBhWnlFbEMyamV3QzQ1ZGp4NC9ieTlUUFp2WHUzWEc0bFhEdDM3ZEk5emltTUEzMS9wV2JEMm5mc0tNKy8rS0xQTHhYLzhxdXY1S0xteldYc0UwL1lOeDN3LzBLQ2c2VkNoUW82S2p6MnYvRzJPMk9oaUFpcCt2eDB2eG9McVdNVHUxNXpqVHd5Y3FSOVBKcXZVTFBuSDgrYVpjK20vN0YwcWU0MTQ3cnJyak4rczFvdGNUZDVTc1MvcWFNeTFWWWlrMjdzMTArM3pDRkJoK2NjLzMySkpENy9zbzdNaWhwd2l4Uy9wSjJPQUxoSnpaNnJzMmIvVFJYNDZ0V25qNUhrWEZIVnh1SDdsbHFEVjdWRTNPbWowZ3FTU2lTZUdEZE9XbDU4c2F4WXNVTDNvbTdkdW9YdWFLcmpmeXlWQTlPZjA1RkJnWUZTWWZoUUtkS2tzZTd3ZlN0WHJyU3ZEUXQ4WU5ZOE8zdjI3clZ2VXM5ODkxMWpTOTVWWFFkMURKeEp1M2J2TnA0d24yN2V2SG02WlVaRVJJUjl5b3BwSk9qd2xMVDkreVhoL2dmdEplNm1SVFMvU0NvTXZVOUhBQXFDdXR0OU9yVThiY2dERDhpU1AvN1FQYzRLQ3cwdHRIdFovWWs2ci9pS3E2K1cvUzVVM2k0SWFsdEgzMzc5WEoxNThyS2FOV3ZxVnVHUWZ1eTQ3QnoraUNzMWVJcGZlWm1VNlhlOWpueWZXbExkdmxNbmlVOUkwRDIrUzkyc0huam5uVEp0K25RalNYcVJJa1drMnpYWDZNaWNiMTNhaDY2ZW8zay8vS0FqTTlUcEtpVktsTkNST1NUbzhBejFRYVFLb2JpeDF5b29xclRFVEoxay9BeDNBRG43N1YvNzA5VHhOMnJHd0pTeVpjdEtLY043eDJEVyt2WHI3UlVXSnMraDk0TEpUejFsN3hPRlNMT0xMdEl0LzZlT1FVMFlPVXJTRW5KM3lrVitoTmF1S1ZVbWpwT0FRUDlJQjM3ODhVZTVxa3NYdjlvaW9xclBqeGc1VXA1NTlsbmQ0eXhWamR5MHhTNFZ3VHlWa2lKL0dMcTUvN2NCdDkybVcyYVJvTU16OXIvK3BpVDkrSXVPekxIM25VOGVMNkdWb25VUGdJSnkraEwzbzBlUDJrZk9xQUdKS2VYTGw3Y0xUc0UzcVdySHNUMTZ5SUZFOHpkeUM5S2RBd2RLVnl2UndIODBiZHBVdC94ZjRydnZ5L0Z2ek04NEJoYUpsSmpwVXlTb1NCSGQ0OXZVcXF0dTNidmJzODcrUnEwc0cvYlFRL0xlZSsvcEh1ZTBiTmxTaWhjdnJpTXoxTEZuS1ZieWJOcm11RGpadTIrZmpweW56cXB2MTdhdGpzd2lRWWNublBoanFleWZQRjFIWnBVZWNMT1U2TkJlUndBS2twb04vZHNiYjc1cC9BaWNwaGRlU0FWM0g2V1dMNnFDVDF1MmJORTkva2tWTVp3d2ZyeU9vUGFlVjZ0YVZVZitMWG5OV3RrN2VhcU9EQW9Na0lwalJrbGszYnE2dzdkdDM3NWR1dmZvNGZmRkZlKzgrMjdIdDMrcGF1UlhYM1dWanN6WXQzKy83TGUrVFB0bTdsemRNa010YjNmcmlGWVNkQlM0OUVPSEpHSEljSFdMVVBlWUU5bWltVlFjd3I1endDdlVIbUsxVkRreE1WSEdqQjJyZTgxUnhhYmdteFl0V2lSdnpaaWhJLytrOW9TKy9lYWJVclJvVWQyRGtpVktTRlJVbEk3OFYvcXhZN0pqOElPU2RkSnd4ZkdBQUNuZDczcUo2bmF0N3ZCdGFzYThkOSsrZGhMbzcxUVJ5UnY2OWJOWEVqbkpkRlZ5Tlh2KzcrMXNUbE9yREV6dWRWYzM5dSs0L1hZZG1VZUNqZ0psbjNjK2JJU2s3OTZqZTh3SktsVktxa3lmekhubmdJZW81ZXo3OXUyVDk5NS9YNUp6T0JQZEtlcjhVdmdlOVRvWk5YcTBQUWp6VjJvQU9PS2hoNlJKa3lhNkIwcjVDaFhzeXNsK0xTdExkajA1UWRLMi9iTm9wZ25oOWV0SjlFTVAyb202UHhqNzVKT3kzTVVURDRLQ2d1eGlvMnBsaC9wU1c2WkNySEdsV3l1emRzVEh5NTJEQmpsNkxXemVySm1VS1dQMmlMMXZ2LzFXdDh3NGV1eVlyRHR0Ulo3VG9pdFdsR2JXOCtRV0VuUVVxUDF2elpBVEMzN1VrVUhXaFRONi9CZ0pMWVRucUFKZXBxcFVyOSt3UVY1NjJmelJpbW9nVmExYU5SM0JsNmlxN2FZcSszdUZPdkpvNkpBaE9zTGZHamRxcEZ2KzY5Q1hjK1RvWjEvb3lKeWdNbEZTOWFYbkpOQlBqcXo3K2VlZlplcTBhVG95UnhWcnZPTHl5K1dGNTU2VFgzLzZTYlp0MlNKN2QrMnl2L2JzM0NrYjFxNlZiK2JNc1crdzFhOVhULysvelBuSytsNU96aGFycXVRZERCOC8rck4xRGMvSXlOQ1I4OVRKRjA2dkxEaGQrL2J0alI5SmR6b1NkQlNZRTM4c2t3TlRudEdSUVZaeVh2cTIvbEx5eXN0MUJ3QXZlZk90dDJUTDFxMDZNcWRxMWFxdWZzRENHV3J2K2JQUFA2OGo4NnBVcVNJMzMzU1RQRDE1c3N5ekJzRWIxNjJUclhGeHNtLzNidG0wZnIyc1c3MWE1bi8vdlR6M3pETXljc1FJdWFaclY2bFh0NjRFNStOVWtLalNwZVdkR1RQc21UajhVKzNhdFhYTFA1M2F2a04yang1cno2S2JGQkFTTEpVblBDRmhmbElnViswM0h6QndvSTdNVUxQaXZYcjJ0Ti96Yzc3OFVnYmVmcnRkc0ZDZEJxSzJvNmd2dFNjNUppWkdMdTNVU2NhT0dTUExseTJUMlo5K0t1YzNiS2ovRnVlcEZVWDNEeDdzMko1NzlYUGVjTDNaby9aVVljKzllL2ZxeUhuZldkZGtrOXhjM3E2UW9LTkFwQ1VlbElUN0gzRG52UE1MbTBqRkI1bVZBTHhxenRkZjY1WlpsYUtqODVWRW9XQWNQSGhRZnZyNVp4MlpVNzE2ZFhsdjVrdzdJWC90MVZmbHZudnZsZmFYWEdLZm02K1NkbFhCVi8wM0ttRnMxNjZkM0huSEhmTDQ2Tkh5NmF4WnN1TFBQMlZYZkx4OC9PR0g5a0MzU3VYSyttL05uU21USmttTTlUM3d2L3g1VzBwR2NyTEVXMk9oek9QbWk1dEYzWGFMbE9qWVFVZStiOUtVS2JMVllGSFI0bGJpUFhQR0RIbjNuWGZzbTd1NXBaYkFkK25jV1JiLytxdWQwSnV5ZmNjT2VmNkZGM1NVZjVkWTF6cFZNTTZVWk91MS9xZDFuVFJCM2NUOTRndHpLMURVNy84aWw0OTZKRUdINjdJeU0yWFg2TEdTdnRmY1VRaC9VOHU1WXA2ZEtvRWNxd1FVZW01L3dNSVpxMWV2dG8vZ00rbmkxcTNsajhXTDdkbXl2TXhpcTBHNVN1Qmp1M1d6aTd5dFc3TkdmbHE0VUhyMjZISFdJNHh1Nk50WGJyamhCaDNsbjdweHNOTWF2T2ZtYTlXS0ZjYlBXbC8xMTE5bi9ONjUvVkw3WS8yUkdndnRmbXFLbkZxelZ2ZVlVNlJOYTZrNDlINGQrVDYxRDl2SjVQVGYxRXFyRDk5L1gzcjM2bVhQTHVlRjJsTDE3UFRwY3YrOTkrYjU3emlicWRiZjc5UzFVYTBHdUxSalJ4MlpNWC9CQXQxeWxxb1FiL0owajhzdnZkVDExVTBrNkhCZDR0c3pYVG5qVTRLREpIckNFeElhWFZGM0FDak1hdGVxcFZ2d0phWm56MVZpL2NGNzd6azZlNlNLUjdWcTFVcmVmL2RkZTNuc3hQSGo3UlVjL3g2b3E1bjJwNTkrMnRFQnZFb3UxSG4vdWZsU1MzVk5LMmQ5anpOOTc5eCtxWnNmL3Vqb0R3dms4QWNmNjhpYzRITGxKR2J5UkFud28rZHhpdldlVWFkL21ESjYxQ2k1N0xMTGRKUjM2clU3ZnR3NFk2dEFEaDgrTEsrKzlwcU84a2RkZzlRTlNwTisrZlZYM1hMV1h5dFhHaTB5YTdySy9abVFvTU5WU1N0WHliNHA1Z3Q2S0tYNjlwYVNuZnhuT1JlQS9GR3pwUEE5Sml2ektwZGJBL0dLRmMzZHlGVko1Z05EaDlxejZtcmZ1dHF2cXFoSzBHKysvcnE5L3h5RlM4cXVYYkp6eENnUmcwV3psSUN3TUlsNWZxcUVsRE4vSThZdE8zZnVsTGNOSHJmWW9ubHplM3VMVTlRS2xSZWZmMTRpRFoxRThKcDFEVkY3MHAyZ2Jrb1VNVmluWmMzYXRmWk5CYWN0TURRenI2aXRSODJ0MTRUYlNORGhtdlJEaHlYaDNxSG16L2kwaERlb0o5R1BQcXh1Q2VvZUFJV1pXbTRZY3c3N0NPRWRhOWV0MHkwenFydFUyVi9OYk44eGNLQzlySHpVeUpFeWVQQmdlOThuQ3BkTWZieHM1cEVqdXNlY3dLSkZKTXpQVHE2WStlNjc5bm5ncG93WlBkcnhXaVdxYnNXdHQ5eWlJMmR0Mjc1ZEZpNWNxS1A4S1ZxMHFIVHAwa1ZIemxOSHc2bHE3azVTKzg5TkZvanIyclZyZ2F6aUlVR0hLN0xTMHlYaG9VY2tMV0duN2pGSGZTQlZlWDZhQkJyZVZ3ZWdZS2dqWWE2Kzhrb1ovK1NUOXBFM0NkWUE1ZWpodzNMTStqcDY2SkJzMzdKRmZyTUdBV3IvMzExMzNHR2ZLOTNtNG92dEdVdjRuc1RFUk4weUk4MkZZcVduVTNzOUh4czFTcDRZTThiWTNsUjQxLzZYWDVQa0pVdDFaRmJHd1VPeTgvRW43ZjN1L3VEa3laUHluTUc5NTYxYXRwU09odlpoMzNQMzNjYjJNYi9sNElvQ1ZUZkRwQ1ZMbHVpV00vYnMyU01iTjIzU2tiT0NBZ1BsK3I1OWRlUXVFblM0SXZIRGorWEUvRVU2TWljZ09FZ3FUWjRnNFp4MURQaWRxS2dvZWZ5eHgrd3EyMTk4L3JrTWUvQkJlK2xaaFFvVjdPV0RFZGFYbXFXc1ZLbVNOTHZvSXJucnpqdmwyV2Vlc1l0L2ZURjdOc2tRemlodTgyWjdGc1p0dkI0THArQXlVYnJsanVOenY1TkRuMytwSTkvMncvejVjdURBQVIwNTc1YWJiemIydnF4bWpVc2JuWCsranB5bDZuUWtKU1hwS0gvYXRXMXJmNWFhb3Y2dFRsNXZmN2NTZnFlVytQOWI1Y3FWcGVtRkYrcklYU1RvTUM1NXpWclpOMjZTV29laWU4d3BxZmFkWDVIL3doNEF2RU1ObDlTeE5TdVdMWk9Sanp4aUorcm5RZzI0MUJKMytDYlRpZXlDaFF0bG04SGptb0RUUmZYc0xwSE5tdXJJQmRiWWE4K1RFeVROWUdMcmxsbXpadW1XODlRS3E2NEdsM2VyWmRMWHhjYnF5Rm43OXUyVHBVdWRXWlZScWxRcHUycTVLV29mZW1wcXFvN3liOUVpYzVOLzNidDNMN0FpbFNUb01Dcmp4QWxKR0RwY3NnenVGL3BiV1AyNkV2M0ljRFdhMHowQWZKMzZjTHovL3Z0bDFrY2ZHUzNrQmU4eWZjeVdxZ1o5ZGRldWtwQ1FvSHNBY3dLQ2c2WFNFNDlMZ0l2SE5tVWVQU1k3UjQxeFphTEVsSlNVRkpuenpUYzZjbDR6NnpwVHBrd1pIWmx4bWNIRTkrTlBQdEd0L092VnE1ZHVPZStFbFJjc1g3NWNSL21uYnJDYW9HN1k5TC9wSmgyNWp3UWR4bVJsWk1qT2thTWxOYzdjMllSL0N5eFdWR0plbUM2QjRlRzZCNEEvR0hUbm5USnA0a1RIaS9iQWQxUnpvYmlmT2tPM1djdVc4c0dISHpvNnV3T2NTVVR0V2xMMnZydDE1STdqOCtiTFFSOWU2djdyYjc4WlBWcXRrK0V6d0pXNmRldnFsdk5VOFRWVmhNMEo2bGc0VlN2REZMVlZ3UW03ZHU4MnR2KzhacTFhY2w3dDJqcHlId2s2ek1qS2tzVDNQNVJqWDVtNzIvbGZnUUZTY2V4ajdEc0gvRXpucTY2U3laTW1HVi9pREc5cjFLaVJicGwxOE9CQjZYL0xMZEswZVhPWjlja25jdlRvVWYwSTRMeHl0L2FYc0xwMWRPU092ZU1tU3VxZXZUcnlMVjkvL2JWdU9VOTl4blJvMzE1SDVvU0hoOHY1RFJ2cXlGbTdyV1QxMEtGRE9zb2ZkVFJrRzRQSGtxcnowSjNZaHo1MzdsemRjbDczMk5nQ25SZ2dRWWNSeWVzM3lMNkpVOXpaZDk2enU1Uyt0cXVPQVBpRDBxVkx5eXN2djF4Zys3L2dIZXBjWXJkdTBxaEI0NFlORytUNmZ2Mmtib01HY3UvOTk4dXlaY3ZzNWJXQWs5U0t2OHFUeGt1QWk2ZExaQncrSWdtUGpMSlhPUG9TVlFUc3g1OSswcEh6MVBGaTZpZzAwOVIxckdLRkNqcHkxckZqeCt5Q2wwN3AzNysvYmpsdjA2Wk5qcXhVTXJhOFBTeE1icjc1WmgwVkRCSjBPQzdqK0hGSnVHZXdaQ1dmMUQzbWhOYXFJWlZHajJUZk9lQkgxQ0RteWJGajdidjRRSTBhMW5VK09scEg3bEhIdTczOHlpdlNxazBiYWRTa2lUd3diSmhkaU1udFk5bmd2NHJVcnllbCsvZlRrVHVTZnZsTkRzMytRa2UrUVMxdFg3OSt2WTZjcDA3L0tGbXlwSTdNS21Idys2eFpzMGEzOHEvOUpaZEk4ZUxGZGVTc25idDJ5ZmJ0MjNXVU4rcW02ZEpseTNUa3JBYjE2eGZJWjg3cFNORGhyS3dzMmZYNGs1SzZiWWZ1TUVmdE82LzY4dk1TYVBBNENBRHVVL3YwYnV6bjdxQVYzcVVHejdIZHV1bW9ZR3pkdGsyZWZlNDVhZDIycmRTb1ZVdjYzWFNUZkR4cmxsMDlHY2d6TmFNNitGNEpxUnFqTzF5UW1XbFhkVS9aYm42YzVoU1Z6S1VhdkRHbTlocUh1clNTb1Z6WnNycmx2TjhXTDlhdC9GT25wYlJzMFVKSHpwdjc3YmU2bFRmeENRbjVUdkt6MCszYWF3dDg5UjRKT2h4MWNOYW5jblMyQzBWSXJEZE94ZEVqSmJ4bURkMEJ3QitvMmZPSGh3KzM5K29CZjd2bjdyczljMVRlWGlzcC8rampqK1dHRzIrVUt0V3FTWXRXcldUTTJMR3k2TWNmalJheGduK3lsN3BQZU1MVmxZQ1p4MDlJd3FPamZXYXB1eXFBWmxMVkdQZHVrSlFyVjA2M25MZG56eDdkeXIvQXdFQzV5ZUNOOHZ4dVdmamhoeDkweTFtaElTRkdsL2ZuRmdrNkhITnk0eWJaTS9wSlYvYWRsNGk5UmtwZlY3QXpLZ0NjVjdsU0pmdnVOWEM2NnRXclM0L3UzWFhrSFdyUCt2SVZLK1RKOGVQbDhpdXZsRXJXUUw5WG56N3lzWlhBcThHeUU0V1E0UCtLdFdndXBhN3ZyU04zSkM5ZUlnZG12cWNqYjFPbkxKaFVxblJwM2ZKdGNYRnh1dVdNSzY2NHd0aktncFVyVithNXRvZTZybjVqNk1pOXBrMmJHcXNUY0M1STBPR0lqS1FraWIvN2ZuZk9PNjk3bmxSK1lqVDd6Z0UvMUtkM2IzdEpNM0E2dGJKaXpPalJVcXhZTWQzalBXclFlUExrU1puOStlZHl3MDAzU2YyR0RlV0txNjZTeno3N2pKbDFuRldGd2ZkS2tPRnp1UDl0LzlSbjVKUVBMSFZYTjhGTWVudkdES2xlcTVZclgwOVBtNmEvcS9NT0hqb2tweHdjaDVjb1VVTGF0bW1qSTJlcGxVanFtTFM4VU5mVFB3MjlKcTY5NWhyNzg2YWdrYUFqMzdJeU0vK3o3M3pMTnQxalRrQkVoRlI1NW1uT093ZjhrRnBhTnVDMjIzUUUvRlBWcWxYbGlURmpQREY0eW8wVFNVbXljTkVpNlgzOTlWS3ZRUU83eU55T0hUdVlWY2NaaFpRdUxaV2VmRnl0TGRZOTVtVW1KY3ZPaDBkS1ZucTY3dkVlVlpUUnlhWGJaNklTdnAwN2Q3cnlwYXF0bTZMT1FWYzNDWjJpcnJVOWUvVFFrYlBVNzFVVjNjeUx6WnMzeTRFREIzVGtIUFh6M21CZHI3MkFCQjM1ZHZpTHIrVG9wNS9yeUNEcmpWUHhzUkVTY1o3NW96QUF1SzkrL2ZwMkVnWms1NDZCQStYcXE2N1NrZS9ZdDMrL1hXU3VWcDA2MHZlR0cyVEZYMy9wUjREL1Y2SmpleW5XcVlPTzNKRzg5RTg1OFA2SE92SWV0UXo2Rk1jYzVrNVdsdU9uVEppY1VmNXF6aHpkT2pmekRPMC92N2gxYTZuZ2dlWHRDZ2s2OGtYdE85ODlZcFI5VVRDdGVMZXVFdFc3cDQ0QStKdE9uVHB4N2pseUZCd2NMRFBlZWtzdWFOSkU5L2llVHovN3pDNHNweEoxZFI0dzhMY0E2L3BYZWV4b0NTcmx6cEZmZjlzL2FhcWMzT1RzL21XbnFQT3k4N3BYdWJESnlNeDBmSWErVEpreWN2bGxsK25JV1V2KytFTXk4bENvOEx2dnY5Y3RaL1h0MDBlM0NoNEpPdklsL3Q0aGtwV1NxaU56UXV2VXRqNjBIck5uMFFINHArczk5T0VJNzFMN0lyLys2aXRwMHJpeDd2RTlhcG43SjU5K0trMmJON2Nyd0NjbkordEhVTmlGbENzckZSNTlXRWZ1eUR4NVVoSWVmRmd5cldUWWExVENlZlRvVVIyaElQVHAxVXUzbkxWdjcxNTcyZis1T0hqd29QeTVmTG1PbkJNUkVlR3BBclVrNk1pWE5KZk9PNDk1ZHFvRUZTMnFld0Q0bTByUjBWS3ZYajBkQVRrclc3YXN6UHZ1TzduODBrdDFqMjlTQloxVUJmaUwyN2ExOTFVQ1N0UTExMGpSRHUxMDVJNVRhOWZKL2xkZjE1RjNxSnRaMUcwb1dCMDdkcFNRa0JBZE9lZWtkZjA3MSswK2E5YXVkWFNmL2QvYVhIeXgwU1B3emhVSk9qeXYvTU1Qc3U4YzhITk5talF4TWdDQS95cFpzcVI4OXVtbk11VCsrKzB6ZTMyWkduUzJ2ZVFTbWZ2dHQ3b0hoVnBnZ0VTUEdpa0JMcC85ZitERlZ5WFpTdFM5Sk4xSHptcjNaOUhSMFhKeHExWTZjdGJYWDMrdFc3bXphTkVpSXpkc2JqUjQ1bnRla0tERDg5SlU5VTd1bmdKK3JSckY0WkFIWVZZQ00rbXBwMlRXUng5SmxjcVZkYTl2U2p4NFVIcjA2aVh2dmYrKzdrRmhGbDQxUnNvUEcrTHExcjZzbEJUWk9mSXh5WEs0MEZoK3NQM0RHL3IyN2F0Ynpqclg1ZXJ6NTgvWExlZW9iVk9tOXRubkZRazZQTy9ncTIvS3NaOS8wUkVBQVA5MFRkZXVzdXF2dit6WmREWFk4bFdxSU5hQWdRTmwxaWVmNkI0VVptVnU2Q3ZoRGR6ZCtuTnE5VnJaKzhKTE9pcDR4ZGplbUd0cUpWRmtaS1NPbk5XaGZYdjdocWpUMU9xaC9mdjM2eWhuaVltSnN2VFBQM1hrSEhYV2UxUlVsSTY4Z1FRZCtSTFpvcGx1bVpPVm1pWTdIeHdocWJ2Tm5vTUpBUEJkUmEyQnZKcE4vOHNhd1BYdTFjdllRTlcwOVBSMHVmMk9PMlQ1aWhXNkI0VlZZR2lvVkprMFFRTEMzVjNxbnZqNjI1SzBhcldPQ3BhcEk3NzhrWHFtMUVrWEpxZ2pVQnMyYUtBajU2amw2cjh0WHF5am5DMysvWGY3K3VpMC9qZmRwRnZlUVlLT2ZLa3k5U2tKS21QK3JsUEdnVVNKSC95QUp5dU1BZ0M4bzNMbHlqSnp4Z3hadVh5NTNIdlBQUkpWdXJSK3hIY2tKU1ZKLzV0dlpua3Y3Qm84Wlc2L1RVZnV5RkpWM1ljL1lsZDNMMmlxTmduMVNYSW53T0FNdXBxZHY3bC9meDA1NjdmZmZ0T3RuUDMwMDArNjVaenk1Y3JKcFowNjZjZzdTTkNSTHlIV0M3dktNMU1rSU1UTUhidlRuVnk2WFBZOSs0S09BQUE0TXpYclZxMWFOWms2WllwczJyQkIzbnJqRFduVnNxVlB6Y1p0MkxoUkpreWNxQ01VV3RacnR2eWR0MHRvclpxNnd4MnBjWnRsNzRzdjY2amdxSVN6U0pFaU9rSk9WQklkR2hxcUkrZDF2dnBxQ1RQdzk2dVo4ZHdVZnZzMWw0bjh1VkRWMjlYcUs2OGhRVWUrRld2ZFNxS3NEdzgzSkw3OHVoejcxZmszS0FEQVB4VXZYbHo2M1hDRC9MUm9rV3hjdDA0bWpCdG5EOHBNRERTZDl0SXJyOGkrZmZ0MGhNSXFNRHhjS2s5NFVpUW9TUGU0UTQyNVRoZzRjL3BjcUgzUDRTNVhzL2RWNWNxV05acWdxMnJ1alJzMzFwRnpWcTFhWlI4NW1STjcvL215WlRweVR1L2V2WFhMV3dLeURCNHVtSldlTHB1NnhFcnF4ampkazcyb1FRTWxldGhRSGYyVFd0YThvVlY3eVRoMFNQZWNXWU8xeXlYUVIvZWNtWlQ0NWd6Wjg4UUVIVG1yWWR3YUNRZ090bi9YMjI2OVE1SisvbFUvWWs1d3ViSlM2NnZQSk1UNnM3QTZNbitCSkF3WXBLTXpLOUVqVm1JbW4vbjNucFdSSVhHZFl5Vmw0eWJkazcyUzNicEtsV21UZGVSL1RzWEhTOXhsbmUzWHNFbUJSWXBJblFYZlNZZ0xXMEpNdUgvSUVIbnhKWE9GZys2KzZ5NlpQbTJhanJ4TmZXdzJhdExFbnVFMDVkdHZ2cEZPSFR2cXlCbE5teldUVmF2TjdTdDk1KzIzcFcrZlBqcnlOdlU3UEhic21Id3pkNjRzdEJKM3RjUnl5OWF0UnZZMzV0ZXdCeDZROGVQRzZjaFphdEJidFVZTnV6aWRLWHQzN2ZKY0FhWi9XOWV5bmFRZk9LQWpjNklualpjeTNXTjFkTzUyVFhoS0RyNyt0bzdjRVZJMVJzNmJNMXVDQ21oOHJkNlRkUnMwa0IwN2R1Z2U1Nm5WTnUzYXR0V1I3enF2ZG0xNWFQaHdIWm54MHNzdnkzMkRCK3ZJT1F0LytFSGF0R21qby8vMXlhZWZTdDhiYnRDUk05UzU1MXMyYlpMdzhIRGQ0eDBrNklXQUd3bTZrbmJ3b01SZDNVMHk5cHYva0l0czNWSnF2UDJhQkJUU2ZVa2s2TTRoUWM4ZEV2VC9SNEorWnI2VW9QK2JTZ0xVVExWSzJOV1htcWxSbFlVTkRwRnlUYzFhcVpsL0U0TklFdlQvOEpVRVBlUDRjZGw0OWJXUzduTFIzTkw5K2tybHgwZlp5KzBMd2lVZE91UzZrRmhlWEhYbGxmTGw1NS9yQ0RsUjE4VnFOV3RLbXNOSDhZMTQ2Q0VaTzJhTWp2N1hnTnR2bHhrelorcklHWDE2OTdicmxYZ1JTOXpobUJEckE3anlsSW11TE1GS1hyeEU5cjd3c2hvcDZ4NEFBUEpHVlQ2dVZLbVMzRDVnZ016KzlGUFpzSGF0L1B6amozTFhIWGRJMVpnWVk1V1JjMlB2M3IyeWN0VXFIYUV3Q3lwV1RDbzlhU1V4Z2U0TzN3OS9PRXVPLzFsd1M5MmJYWFNSYnBteGVzMGF5Y2pJMEJGeVVyWnNXV25ab29XT25KUFRQblIxQTNIeGtpVTZjazZQN3QxMXkzdEkwT0dvNG0wdmxqSjN1YkFmM1hvVEgzenhWVG4reDFMZEFRQ0FNMVRSb0JiTm04dXp6endqNjYxay9hZUZDMlhRWFhjVlNFWDR6TXhNK2ZycnIzV0V3azZOczBwYzAxbEg3bEFyekhZT2YwUXlrZ3JtVklIYXRXdnJsaGtuVHB5d3Q3emc3RlNoeld1NmR0V1JjOVNLdEpTVUZCMzkwNTQ5ZTJUTGxpMDZja2I1OHVYdGxSTmVSWUlPeDVXL1o1QkVORGQ3dDFQSlNrdVRuZmM5SUdrdUxLa0hBQlJPNm9pblpzMmF5VFBUcHNuV3padmxwUmRla05xMWF1bEgzYkhrano5MEM0V2RPa29yK3VGaEVoVGw3czJpdEIzeHNudmk1QUpadWRqQ3dJenQ2VlJ5dmludTdOdHg4Ui9YWG51dDR5ZGlxSlZDMjdkdjE5RS9xVG9oVHE5dzZOSzVzOUdDZXZsRmdnN0hCWWFGU3N3elV5U29iQm5kWTA2Nmxad25ESHRZc3RKWm1nUUFNRXNkK1RUZ3R0dGs1WW9WOHVUWXNSSVJFYUVmTVV2dGlXY0pMdjRXVXJhc1JJOGU2ZnBTOXlNZmZ5TEhmak8zRnp3NzFhdFZNM3JVbWxxbDhzTVBQK2dJWjZOK0g4MmJOZE9SYytaa3MxTEk2UlZFNmppNjNqMTc2c2liU05CaFJHaUZDbEw1NlluL0xTQm5VdEpQdjhxKzUxL1VFUUFBWnFsWmRWVXQrZk5QUDVVaUxoU25WVVhzZkhVSnJoY3I0L3VEa2xkZUljVXVkYmFRNU5uWVM5MkhqWkQwdzRkMWp6dlVscFA2OWVycHlBeVZISHFoS0tTdk1GRVE5RXlGQUpPU2toemZmMTdSeWxGYXQyNnRJMjhpUVljeHhkdGNMS1h2dUUxSFppV3EvZWkvc3dRUUFPQ2VEaDA2eVBCaHczUmtqcHJoVS90a25hYUszem05VlBYZjJOdHJSa0JRa0ZSNi9GRUpMRkZjOTdnamZkOSsyVFYra3F0TDNZT3NuL1hTVHAxMFpNWmZLMWZLdG0zYmRJU3p1ZUx5eXgwdm5ybDh4WXIvT1E5ZEhYK3BLc2M3cVZ1M2J2YjUrbDVHZ2c1enJBLzlpdmZmSXhFdG5WOEc4Mi8yZnZRSEhuTDlyaTRBbUtBU01pZXBtU0duajhYQmZ3b20zWGJiYmNhWHVxdmYzNzhIcms1UWcxVFRDYnJKSTl3S3U5RHk1YVg4ZzBOMDVKNmpuMzhwUnhmOXFDTjNYSEhGRmJwbGhscnA4WlpIajl6eW9obzFha2pEQmcxMDVBeDExT1d1M2J0MTlCK0xGeTkyZEdXRHV0blR6K0h6MUUwZ1FZZFI2cHp5S3BNblNsQ3BrcnJISEhVdWFNSkRJNDJmWncwQXBoMC9mbHkzblBISnA1L0srZzBiZEFRbmxTNVZ5dDZUNll0TUorZktab2VyTCtPZnl2VHFLUkZOTDlDUlN6SXpaZGRqWXlYOTZGSGRZWjQ2VlVFZDhXWFNqSGZlc1pkVTQrelVQdTRiKy9YVGtUUFVUWkxmZnZ0TlIvOHhaODRjM1hKRzFhcFZwZEg1NSt2SXUwalFZVnhZNVVwU2FlcFQ5bklzMDA3TVd5RDczM2hiUndEZ201eGMwaGNmSHkvM0RSNnNJLzl5OE9CQk9YQ2dZRS95VUFOVnRTZmRORFh6NDdUdzhIQUpOSnlrcTJXck1DY2dPRWdxajM5Q0FpTENkWTg3MUtUSXprZEgyOG02RzlSeTZsNkdDM3VwNDd6R1B2R0VqZ3FlMHl1cG5LYU9LWE82RXZyY2I3L1ZyZi9jcVA3bFh3bDdmbDE3elRXZXJ0NytOeEowdUtMRUplMmsxSzAzNmNpc0ExT215L0hGemhhVUFBQTNyWEFvcVZIN2YvdmRlS01rSmlicUh2K2hrdk91MTE0cnpWcTBzQ3N3RitSZzF2UnVYSldjRnk5dVpxOXg0OGFOZGNzTU5TTkc4UzJ6SW1yVmxITDNEckszRnJycDJMZmZ5NUg1QzNSa25xcThiWHJWeDZ1dnZTWnIxNjNUVWNGUTI1SGVmZmRkdWVubW16MWRaTEZhdFdwU3ZYcDFIVGxERllyNysyZGV0V3FWb3lzYTFNM1VXL3IzMTVHM2thRERIZFlGdGVLUSt5UzhTU1BkWWM1L3FvdytMT21IaitnZUFIQ09HaUNXS2xWS1IyYW9ZN1h5bTlTa3BLVElMYmZlNm5nRlhDOVFNeXZYeHNiYXo1UGFzOWpGU3RUNzMzS0w3UDdYL2tVM3FMM2hwbStBaEFRSFM0a1NKWFRrck1xVkt1bVdHY3YrL05NKzR4aG1sZTEvbzRUVnE2TWpsMlJteWE2Um95WE5wVlVzelpzM04xN04vWVNWRUtxYm1rZGRYTDcvTjNYTlg3bHlwVng2K2VWeXk0QUI4dkdzV2ZMc2M4OTU5Z2FYV2puVTcvcnJkZVFNZGVOMTE2NWRkbHNsNjA3KzdPZlZyaTIxclM5ZlFJSU8xd1JHUkVqTWMxTWwwTkFzd09uU2QrMzV6L25vSGw4ZUJNQTNtUzRLdG5yTkdsbTdkcTJPenQzSmt5ZmxaaXM1LzlMaC9YdGVvS3FaOSs3YlY1Yjg4ZjhuZDZnendqLzg2Q05wZk9HRjh0U2tTVVlxbm1mbnA1OS9ObjVqb0VtVEpzYVcwVmN5bktDcjM4WGpZOGJrZWFETk1XMjVFeGdlTGxVbVBHblgvbkZUeHNGRHN2T3hzU3E3MUQzbXFKVWtRMXpZcnJQR3V2YjI2dFBIOFZvZ09WRko2VzIzM3k0dEw3NzR2OGVOcWZmTXFOR2paZjc4K1hic1JkZkZ4anE2L1ViZDhGUTM5UlNuejZidjBxV0w0NVhuVFNGQmg2dkNLbGVXU2xNbTZNaXNFL01YeVlGMzN0TVJBRGpIMUd6bTZjWlBuSmlucEVZTjlHSzdkN2NMdy9rYk5XRHVlOE1OTWkrYmdkdVJJMGZrMGNjZWt6cjE2OHUwNmRPTnoyeXIvZStEaDVpdm9uM2hoUmZxbHZOYXQycWxXK2JNZk84OWVlT05OODdwOWJ4cDB5WVpQSFNvdEd2Zm5rcnd1UlRab0w1RTNlTE9kc0xUSFo4M1h3NTk4WldPekZJSllhWG9hQjJaczJEaFFtblRycDJzVzc5ZTk1aXhkZHMyR1RaOHVOUnIwRUJtdnZ2dS85eVFVcTk5dFRwbysvYnR1c2RiMUJMM2VuWHI2c2daMzgrYloyL1ArdkhubjNXUE0yNnpua2RmUVlJTzE1VzhySk5FM1RsQVIyYnRuelJWa2xhdDFoRUFPTVBwNDJYT1JDWFlMNzM4Y3E2VEdqWHo4Tjc3Nzh0RnpadkwvQVh1N1F0MWkxcXlQMkRnUVBuMnUrOTBUL1pVa2IzaER6OHNOV3ZYdGd2a0xWMjYxUEZqNXJaWkErYk9YYnZhQTJ5VDFMNUprOFd4YXRXcVpYOFBrOVJ6Zjg5OTk5bUp4dXJWcTgrWWNLdlg3MFlyS1gvbm5YZmt5cXV2bGtZWFhDQXZ2UGlpdlkxQkpTN0loWUFBcVhEL1BSSmF2YXJ1Y0lsMWpkb3o3aWxKZFdFclE3Rml4ZVRSa1NOMVpKWkt6bHUyYm0ydnlqbnM0REcrYW9XVG1oVlhLNEhxTjJ3bzA1OTlWazdtY0l6aS9nTUg1TnJycm5OMVpWQnVxWlU5dlh2MTBwRXpWTjBLZGMxMnNxN0lCZGIxUkIwTjV5dEkwRkVnS2d5K1Q4SWFtTjFIcEdSWkY4R0UreDdnZkhRQWpsTEZjVXhUaWZuUUJ4NlFJVU9IMnJNbmFobjN2NmsrZFhhc0tpalV0Rmt6dWVXMjJ5VHg0RUg5cVA5UXladjYyVDZiUFZ2MzVFNnk5Um1nYm5LMGJkOWU2alpvSUk4OS9yZ3NzeEkrTlR1VGw5VUphc0NvS2oxUGZPb3BhWExoaGJMaXI3LzBJK1pVcmx4WnpyY0c4YWFvR2JDU0pjMGZoWnBoUFhjZmZQaWhORy9WU2lyRnhOaEp1TnFHMGNkS1VscGRmTEZVcmxwVkxyQ2UwOXNHRHJSdk1KMytlbGUvTjdVM0ZXZW5scnBYR2pkV3JRZlhQZTdJT0hSSWRvNGNMVmtaNXJjV1huLzk5VWJmRTZkVHliUmFsVk8zZm4xNWNQaHdXYjU4K1Rrbnl1cTFyRmJ6cU8wd2FsVkluWHIxNUtvdVhlenIyWm11NjJleWJ0MDZ1ZU91dXp4WjJWMGw2RTdlNU51d2NhTjg5dm5uZWJwR1owZFZiemQ5STlKSkFkWVA3OXhQL3krcVdOZW1MckdTdWpGTzkyUXZhdEJBaVI0MlZFZi9sSm1hS2h0YXRiZmYvRGxwc0hhNUJFWkc2Z2gvUzN4emh1eDV3c3l5OG9aeGF5UWdqL3M1VG0zYkxsdTZYaWVaU2NtNng1eWlWMTRtMVo2ZjdzcFJiMjVRVlZNVEJnelMwWm1WNkJFck1aUFAvSHZQc2o0UTRqckhTc3JHVGJvbmV5VzdkWlVxMHlicnlQK2NpbytYdU1zNkd6OC9QN0JJRWFtejREc0pLUk9sZTN6TC9VT0d5SXN2dmFRajU5MXREVHltVDV1bUkrLzdhK1ZLYWQ2eXBhTURpSnlvNDdCcVdJbVVPZ3Y0NzJSS0xlZitmY2tTMmJscmw2dDdKYlB6enR0dlM5OCtmWFRrSERWenJoSTVwNWJzcXlKL1phS2k3SnNzSFR0MGtQUFBQOTh1UEZXNmRHbTdVcnJhVDZtKzFNQlpmYW1aTTFXSTdwZGZmcEh2dnY5ZS9zekRBRDAvSG4za0VSbHRKUWdtWGR1dG0zeHoydkZHWGpUNHZ2dGs4cVJKT25MV3VwYnRKTjJGUW1mUms4WkxtZTZ4T2pMSXVpNGxQRFpHRHIvL2tlNXdpZlhlcXZUVU9JbHk0V2Y4MlhvL3FtSnFCWkd3bGk5ZjNpNDQxckpGQzZsUXNhSjliVmJYanJEUVVFbTNyaGxxbWJxNnFhcUtJOGJGeGNtdml4ZkxnZjM3NWVpeFkvcHZ5THVuSmt5UW9TNXNxemtYNm5mUXVrMGIrOXJvbEwrdndVNVExL3kxcTFiNVRJRTRoUmwwRkpqdzZ0VWsycnFRaXd0M3RFNThPMDhPekppcEl3RElIelU0aTdDU1pyZW9HV1MxM1BLdEdUTmsyalBQMkYrcXZYN0RCazhrNTZhb2dhN2E0KzNrZm5wMVUrVkFZcUs5ZFBxcHlaT2wzMDAzeVlYTm1rbTFtaldsZE5teVVyVkdEWHZaYVl5VndLdTQ1bm5uMmZ1Z0gzbjBVZm54cDU5Y1RjN1ZUWU43NzdsSFIrYjBNWEJqeFdrdnZmS0tiTEtTSGVTQ1d1bysrRjRKS2xkV2Q3akVlbS90blRoWlV2ZnQweDNtWE55NmRZRWRtYVZXTGFrYkJKT2ZmbG9lZVBCQnUrWkhwOHN1a3phWFhDTHRPM2EwYnh5bzdUaHE1bjNHekpteWVmTm1SNUp6WmZUamo5djc0NzFFelV4MzY5Wk5SODV3S2psWExtalN4S2VTYzRVRUhRV3ExRlZYU0ttK3p1NWR5YzcreWRNbGVXM0JubTBKd0Q5RVJrWktodzRkZEFRVFZISisvK0RCOHZxYmIrb2VkNmlWQ2ZFSkNZNE5xUE5qMEoxMzJrbTZhWmQyNmlURml4WFRrVGVwbFJRUFBmeXdhNnRXZkYxSVZKUlVHalBLbFVtUTAyVWNPaXdKd3g4eHZ5ck4rcm1lbmpMRjhRSmxYbmZLZWgvYzFMKy83Tml4US9kNHc1V1hYMjdQVkh2UkRRNGZCZWNHRW5RVUxPc0NHejFxaElTZmI3N2dVdGFwVTVKdzcxREpPTzY5SWhzQWZFL1BIajEwQzA1VFN5WWZIRFpNWG4zOWRkMVQrRFNvWDE4ZWZ1Z2hIWmxWcGt3WnVleXl5M1RrWFY5Lzg0MHMrdkZISGVGc1NsemFTWXBkM2tsSDdrbjZkYkVjbkdYK0ZJa2lSWXJJekJrejdNSnhoY20rL2Z2dFdYc3ZyWjVxMUtpUko0dXdoWWFHU3RldVhYWGtPMGpRVWVBQ3c4SWs1b1ZuSkxCWVVkMWpUdXEyN1pMdzBFaDdEellBNUllYWRWUURSRGhMTFcxOGN0dzRlZkhsbDNWUDRhTUdsYTlhUDMrWTlmbm9Calh6OWNqRER6dDZuckVKYXZaOCtFTVBjZXhhTGdVRUJrcmxzYU1sS01yOEtveC9zSDVQZThaUGtsTTc0bldIT1kwYk41WTNYMy9kZnM4VUpxdlhySkZCOTl6ajZGTHcvRkFyR2t6VUlNbXZwaGRlS05XcXVueXFnUU5JME9FSllWVXFTL1NUajlzejZxWWQvMjZlSFB6d1l4MEJRTjZvUWtHeER1KzdNeTBxS2tvdWFkZE9SOTZqRXJCSmt5Zkx1QWtUQ3UxU1pwVWtQek50bWpSdjNsejN1RU1WeSt2YXBZdU92RXNWYUh4bkpqVmxja3N0ZGEvdzBJUDJ2blEzWlNVbnk4N2hJeVRMaFNKdXFrTDMrQ2VmOU93U2ExTSsvT2dqbWZMMDB6b3FlRjA3ZDdZVGRTL3BmK09OUHZtNklFR0haNVRxMmxsSzlycE9Sd1paSHhaN3gwK1M1SFhyZFFjQTVNMndCeDd3bVprYjllOTg3ZVdYN1Vyd1hxVUdVbDJzUVY2dG1qVjFUK0dpQnJjUER4OHV0OTE2cSs1eGozcnV4ejcrdUd1ejl2bnh4TGh4ZHEwQTVFNVU3TFZTcE8zRk9uSlA4ckxsY3VDdEdUb3lSNzEyVlRIRnh3MmZkdUJGVTZkUDk4d1JoT29tWDZYb2FCMFZ2S0pGaThwVlYxMmxJOTlDZ2c3dnNDNncwU05IU0ZnZDg1VVdzNUpQU3Z4ZDkwbUdIMWMvQm1CZXZYcjE3RHYwdmtBTlh0VmV2SmlZR04zalRXcVE5L3ZpeGZiWnVvVnBSaXc0T0ZoR1BQU1FQRFpxVklIOTNPcjFySTUxOC9yenZudjNiaGsvY2FLT2NGYUJnVkpwOUVnSmlJalFIZTdaLyt5TGtoSnZmcW03dXJrMTR1R0g1WldYWHBMSUF2ZzVDNEphdnIxdy9ueDdaWlFYaElTRXlJMzkrdW1vNEYzVXRLbFVyRmhSUjc2RkJCMmVFbFMwaU1TOCtLd0VGamRmOENNdFBrRjJqaHh0NzVVQ2dMeFFpY3lUVHp3aFZTcFgxajNlby82TkkwZU1rQWNmZU1DTzY1eDNudjJubHhVcld0UXUvdlRCdSs5S3hRb1ZkSy8vVXVmY1B6dDl1bjNlZVVFdkVYMWc2RkRwMEw2OWpyenJSU3NSMjdoeG80NXdOdUhWcWtuNVlVUHN5UkEzWlo0NElmRkRoMHVtQzNVRDFMWHUxbHR1a2RtZmZTWmx5N3A4eEp5TFNwUW9JVStPSFNzL0xWb2s5ZXZWMDczZWNGMXNyR2RxV1Z6ZnQ2L25ielptaHdRZG5oTmVvN3BVZk1KS25GMFlwQnliTTFjU1AvaElSd0J3N3RReFdLKy8rcW9ubDdxcldWazFJM3I2ckd5NWN1WHNQNzFPL1h1N2QrOHVmeTVkS2pmMTYrY1RTNi96b21yVnF2TE5uRGx5KzRBQm5oaE1xbG13OTJiT2xFYm5uNjk3dk1rK2RtM0VpRUpicXlBdnl2VHBMZUVONit2SVBTZi9XaVVIM25wSFIrWjE3TkJCZnYvMVYvdXNkRjlOME01RUpiNlhYWHFwL1BuSEgvTFE4T0dlL014UnEzQzhNR3V0S3Z1cjJnUytpZ1FkbmxTcXk5VlNzcWNMKzlHdEQvWjk0NTZTazNHYmRRY0FuTHVPSFR2SzFDbFRDbnoyODNScW1lY0x6ejRyajQ0YytZOS9WNmxTcFh4cTBLcG13bDUvN1RYNStjY2ZwWFdyVnA1Nmp2TkRKY0szOU84dlMzNzdUZHEyYWFON3ZVRWR1L2JGN05tZVQ5TFZzV3Z6NXMzVEVjNG1NQ3hVcWp3MVhnTGN2dGxsamJVT1BQK1NxMk10dFpYbnU3bHpaZHdUVDloN2tYMlp1bDQzYU5CQXZ2anNNNW56NVpmMlRUMnZVamNOZW5idnJxT0NvNjZwNnJQT1Y1R2d3NVBVMFNEcWZQU3d1dWFYWW1hcS9laUQ3cGVNcEdUZEF3RG5idUR0dDl1VmhMMlFRS29sOTNPKytrcHV2ZlhXLy9uM3FKa0ZWWUhlbDZnQjZnVk5tc2lDSDM2UUw2M0VVU1hxdmt6dGpmemVTaDVlZWZsbHord2YvYmZLMW10SUpUaHFOdEtMMUd0Q25VaFF5Y1BiUzd3bzRyemFVbWFnKzBVSU01T1RKV0hZdzVLWmxxWjd6Rk9yYm9ZOStLRDhzWGl4ZEx2bUdwK2NUYTlicDQ2OC9jWWI5bzI4SzY2NHdpZHVVSHJodURWZnIyRkNnZzdQQ2lwU1JLcE1teXlCTHB3em5McDVpK3g2Ykl4ZDRSMEE4a0lOQnRUKzNiZGVmOTNlUTEwUTFMK2gzL1hYMjh2Q3M1dVZWVE1jQmZYdnl5KzF4Rk1OVWhjdFdDQUw1czJUWGoxNytzeFo5T3Azb3hMejk5OTlWMzc5K1dkcFkvMSt2RDZBVkRQcGFzWk9GYThMOTlBV0ExVWM2NFAzM3BQdnYvMVdHdFIzZjhtMlQ3TmVjK1h2dWxQQ3JFVGRiYWRXcjVWOXo3Mm9JL2ZVcmwxYlpuMzhzZnk0Y0tGY2Nmbmxuai92WDFITDh6OTgvMzFaOGVlZmNyMTFUZmVsTFQ1cW1YdjE2dFYxNUw3aXhZdjd4SkdST1NGQmg2ZEYxSzBqRmNlT3NsNnA1bCtxUnovL1NnN08va0pIQUpBM2FqQzFkTWtTVjg4YlYzdk4yN1Z0S3o4dldpUnZ2dkZHamt2NzFOSnFOWXZ1eTFSaTI5YjZlZFZlNmExeGNmTFV4SWx5NFFVWDJNK0QxNmlDVGoydXUwNStYTERBVHN4Nzl1amhVOHYwMWV0bDdKZ3hzbVR4WXVuVXNXT0JQY2Vxa0o3Ni9wOTk4b245UEhhM25sTi8yZTdnTnJYVXZkSzRNZXJDb1h2Y2svanFHNUs4dm1DT3VXM1ZzcVY4OWNVWHNselh0U2pqc2RVcmF1KzJPbUx4THlzcFY2dUYxR3ZjaTllMHMxSHYxZGh1M1hUa1BuV2Q4UG5QdUN5RDFUV3kwdE5sVTVkWVNkMFlwM3V5RnpWb29FUVBHNnFqZjFLVkh6ZTBhaThaaHc3cG5qTnJzSGE1QkVaRzZnaC9TM3h6aHV4NVlvS09uTlV3Ym8wRUdMNTRaR1ZtU3NLSVIrWG94NS9wSG5NQ3JJRkl6YTgra1lnNmRYU1BOeDJadjBBU0JnelMwWm1WNkJFck1aUFAvSHZQeXNpUXVNNnhrckp4ays3SlhzbHVYZTJWRFA0cTdjQUIyVFZ1b3ZXY21GMDlZUStJSG50VWdsMDRvY0NFR2UrOEkvT3NBWU1wbDNicUpEZjM3NjhqLzVCaHZjKyttak5IeG93ZEsrczNiTEJqcHhXeFB2TlVvdnJJd3c5TDgrYk5jejB6cENwZy8yWWxYRTRhZE9lZDBycDFheDI1VHoyL08rTGo1UXRyQVA2NTliVjIzVG81ZXZTb2Z0UTk2dVpCeVpJbHBkbEZGOW1KZVRkcm9PckxleUZQbDJsOUhxOVlzY0krNG16QndvVnk0c1FKL1lnWmF0YXdSbzBhOXA3Vy9qZmRaQys3TjVHVUo0d2NMZW5IanVuSW5LanIrMGp4VmkxMFZQRDJ2L20ySksxWXFTUDNoSjlYV3lyZWM1YzltMStRMVBWaDd0eTVNbVBtVFBseitYSTVmUGl3ZnNRZDZucXRpb3gydU9RU096RnYyYktsUlBwSkhxTSs4OGFOSDYrai8zVXlPVm0rdHA1N0U1K0w2c2F0V2wzbHkwalFDd0ZmVDlDVkRPdURjL04xdlNWMXl6YmRZMDVZN1ZwUzY4dFBKREE4WFBkNER3azY0RHZTMHRMa2o2Vkw1WlZYWHBHNTMzNHJ4NjJrSnErRGtrQnJRS3RtTkZVeXJnWWduYSsrMms1YXZMNVUybTFxYUhQdzRFRlp2WHExZlB2ZGQvYmdlOGtmZjBpNk5TNVJYMDVTTTF4cW9LMFM4aGJXNytWcTYzZWlpcXVwSk4yZnFiUEl2N0VHMkxNKytjUitiaytlUEdrbjhQbWhYdHRxeFVGcksxRlJTMVRidFd0bkY4VHloU1hKOEcxSGpoeXhyeE9xOE9EaXhZdGw5Wm8xOXJYQ3lRUlNYU3ZVbGh4MXJiajhzc3VrZmZ2MjloN3ppRUp5YnZ2cFBwczlXM3IzN2FzajU2am5kMWQ4dk05c2Zjb09DWG9oNEE4SnVwSzhicjFzN1htRFpDV2JMK1pXc25jUHFUTGhpUUsvdTVzZEVuVEFONTA2ZFVyV1dBTS9sYkQvL3Z2dkVwK1FJSWxXSWhsdkRTaFVnbk02dGYrM2ZMbHlkaEV4VmZTdFdiTm0wckJoUTJuY3FKSGZKMzhtcEZwamlaMDdkOHFhdFd2dFB6ZkZ4Y25XclZ2dGdibWFTVXRLU3JKbjRNOUUvUTZpU3BlMm4zZTF2N0dhbFRUV3ExdFhxc1RFMkwrVHlwVXFGY3BCOXQvVWM3ZldlbDVYcmxvbDY5ZXZ0MmZQMUd5a2VsNjNiTmtpL3g1b1ZvcU90bWNPMVpjNjUvNkNDeTZRbWpWclNpUHJ0UjFUcFFvSk9RcWNXaDJ5YmRzMmV5V091bDZvbTFESGpoMnp2OVExWS9lZVBaSjhodkdvU2d5aksxYTBielNwNjRXNmdhcHUyS21xOHVkYjE0b3ExdXRiM1lncXpOUm5YWXZXcmUxcmhkUDYzWENEdlBYR0d6cnlYU1RvaFlDL0pPaUtPck44enlPamRXUldwV2NtUytscnV1cklXMGpRQWY5eHRvOWhac2ZOeSsxUWlOL0Z1Y25wZWVXNWhLL0t6ZldDMTNmMlhudjlkUmwwenowNmNvNjZzZmZEZDkvWkJUaDlIUWw2SVhCazloZHk0T1hYZGVTc1dsOS9iaVhvTHQ3cHRsNnV1NmM5S3ltYnp2NmF5cS9BWXNXazhwaFJFdVRCMXhRSk9nQUFBSHpKdm4zN3BQRUZGOGpCcytSMGVhRzJDL3kxZkxsZnJNQWhRUWQ4RUFrNkFBQUFmSVZLT1crNTlWWjU3NE1QZEk5ejFJcUYxMTU1eFM0bTZRODRud0lBQUFBQVlNejdWbUp1SWpsWHlwVXJKOWZGeHVySTk1R2dBd0FBQUFDTStQWFhYNDNzTy8vYm5RTUgrdnpaNTZjalFRY0FBQUFBT0c3VjZ0WFNxMCtmTTFhOWQwTEZpaFhsdm52djFaRi9JRUVIQUFBQUFEaHEvb0lGY3ZrVlY4aitBd2Qwai9PR1AvaWdmZnlsUHlGQkJ3QUFBQUE0SWkwdFRaNS80UVc1TmpiV1NNWDJ2OVd0VzFjRzNuNjdqdndIQ1RvQUFBQUFJRjlVcGZiMTY5ZkwxVjI2eUpBSEhwQ1VsQlQ5aVBOVTVmWXBreVpKYUdpbzd2RWZKT2dBQUFBQWdEemJzR0dEM0Rsb2tGellySmtzK3ZGSDNXdE9yeDQ5NUlyTEw5ZVJmeUZCQndBQUFBQ2NrME9IRHNuc3p6K1h6bDI2U0tNTExwQTMzM3BMMHRQVDlhUG1SRmVzS005TW42NGovME9DRGdBQUFBRElVVkpTa3F4YnQwN2VldnR0aWIzdU9xbGVxNVpkb2YzN0gzNndsN2U3SVR3OFhENTQ3ejJKaW9yU1BmNkhCQjBBQUFBQUlKbVptWExxMUNsN2RuekR4bzN5MVp3NU11cXh4K1R5SzYrVVduWHEyRXZZQjk1NXA4ejU1aHRqUjZkbEp6QXdVQjU3OUZGcDNicTE3dkZQSk9nQUFBQUFVTWlkT0hGQ1dyZHBJNDJhTkpFYXRXdkwrWTBieTNVOWVzakVTWk5rNGFKRmtwaVlLQmtaR2ZxL2RsK2ZYcjFrNkpBaE92SmZKT2dBQUFBQVVNZ1ZLVkpFZHU3YUpkdTJiN2VYczN0SjJ6WnQ1T1dYWHBLZ29DRGQ0NzlJMEFFQUFBQ2drRk5IbDdWdTFVcEgzdEgwd2d2bDAxbXpKQ0lpUXZmNE54SjBBQUFBQUlEVU9lODgzZktHaTF1M2xybmZmQ09sU3BYU1BmNlBCQjBBQUFBQUlNMmFOZE90Z3FWbTg2L3Awa1crbmpOSFNwVXNxWHNMQnhKMEFBQUFBSUJVcVZ4WnR3cU9TczZIM0grL2ZQakJCMUlrTWxMM0ZoNGs2QUFBQUFBQWlZbUprV0xGaXVuSWZTVktsSkIzWjh5UXB5Wk9sSkNRRU4xYnVKQ2dBd0FBQUFDa2VQSGlFaDRXcGlQM0JBWUV5R1dYWGlyTGx5NlZYcjE2NmQ3Q2lRUWRBQUFBQUdEUFdydTlEejI2WWtWNTZjVVg1YXN2dnJCbjhBczdFblFBQUFBQWdLMUJnd2E2WlZaa1JJVGNQV2lRckZ5eFFtNjk1WlpDY2NaNWJwQ2dBd0FBQUFCc0Z6WnBvbHRtaEllSHl4MERCOHJLdi82UzZWT25Tc2xDVnFYOWJFalFBUUFBQUFDMk9uWHE2SmF6cXNiRXlOakhINWZOR3pmSzg4OCtLOVdxVnRXUDRIUWs2QUFBQUFBQVczUjB0QlF0VWtSSCtWUEorcnY2WFgrOWZEOTNybXhjdjE1R1BQeXdsQzlmWGorS015RkJCd0FBQUFEWWloWXRLdVh5bUVTci8yK2Q4ODZUTysrNFF4Yk5ueThiMXEyVHQ5NThVenAwNk1BZTgxd2lRUWNBQUFBQTJNTEN3aVNtU2hVZG5WbEFRSUJkNUUzdEgyOS95U1Z5MzczM3l0eXZ2NVlOYTlmYVJkK2VlK1ladWZqaWkrMzk1amczSk9nQUFBQUFnUDlxMmFLRi9XZTVzbVdsY2VQRzByRkRCN2t1TnRaZW9qNXp4Z3laUDIrZXJMZVM4VjN4OFRMdnUrL2s2Y21UNWRKT25lemw2OHlVNXc4Sk9nQUFBQURndjBZOStxaWtuVG9sdXhJU1pObVNKZkxkM0xueTBRY2YyRVhlK3ZUdUxXM2J0TEgzcW9lR2h1ci9CNXhDZ2c0QUFBQUErQzhTNzRKRGdnNEFBQUFBZ0FlUW9BTUFBQUFBNEFFazZBQUFBQUFBZUFBSk9nQUFBQUFBSHVBakNYcUEvYit6eVR4MVNyY0EvNWFaZkZLM2NoREUvVGNBQUFEQWwvakVDRDR3TkVTQ2loWFRVZmFTVnEzUkxjQy9uVnkyWExleUZ4SlZScmNBQUFBQStBS2ZtV0lMdjZDeGJtWHY2TmR6ZFF2d1gxbHBhWExzaC9rNnlsNW81V2pkQWdBQUFPQUxmQ1pCanp5L29XNWw3OFM4QlpKKzZKQ09BUDkwN0pkZkpYM1BQaDFsTDdKRk05MENBQUFBNEF0OEprRXZlbkVyNjErYjgwYjBqS05IWmZkVFQ0dGtadW9ld0w5a0pDZkwzdkdUUkxLeWRNK1pCWlV2SitIVnF1a0lBQUFBZ0Mvd21RUTlyRnBWQ2ExZVhVZlpPL3JwNTVMNHlXYzZBdnhIVm5xNjdCbzVXbEkzYjlVOTJTdmVxWU1FQlByTTJ4c0FBQUNBeFdkRzhJR2hvVktxVjNjZDVTQWpRL2FPZkZ3T3ZQT3VaRmx0d0I5a0pDVkovSU1QeTlFdjV1aWVIRmlKZWFuZVBYUUFBQUFBd0ZmNDFCUmJWTi9lRWxTcXBJNnlwMllhOXo0K1RyYmZmcGVjMnJxTkplL3dXZXExZk95blgyVHp0VDNsbUVyT3o3SzBYWWxzY1pFVXlVWE5CZ0FBQUFEZUVwQmwwVzNIcWVSaVU1ZFlTZDBZcDN1eUZ6Vm9vRVFQRzZxajdPMS81WFhaTjNHS2pzNHVJRGhZSXBvMWxhTHQyMGxFclJvU1ZMYXNmZ1R3cUt4TVNZdmZKU2MzYnBUajMvOGdLWnMyNndmT0xpQTBSR3A4K29GRU5zdzVRVmVyUytJNngwckt4azI2SjNzbHUzV1ZLdE1tNndnQUFBQ0FLVDZYb0dlbXBzbm0ySjZTc202RDdnSHd0MUkzWFMrVnh6eW1vK3lSb0FNQUFBRGU0M05WcEFKRFE2VEsxRWtTV0tTSTdnR2doTld2SzlFamh1c0lBQUFBZ0s4eG02QUhCRmoveS9sb3RQOUtUOWVOczR1b2M1NVVtajVKQWtKQ2RBOVF1QVZYS0MvVlhuOUpBc1BEZGM5WnFIVXp1Vnc4bzdhSkFBQUFBRERQZUlJZUdKbTdtZTdjSEIxMXVwS2RPa3JGOFdQc1BiZEFZUllVVlZxcXZmMmFoRmFzcUh2T0xpc3RWVEtPSDlkUnpvS3JWOVV0QUFBQUFDWVpUZERWT2N6QnVhaTZycHphc1VPM2NzbEsvcU42WENkVlhubEJBb3NYMDUxQTRSSmFwN2JVK09SOWUxWEp1VWcvZEZqUzl4L1FVYzVDS2xUUUxRQUFBQUFtR2QrREhuWitmZDNLV2RxV2JaS3ljNmVPY3E5RSszWlM2OHRQSktKNVU5MEQrRCsxN0x4azMxNVM2N09QSkx4YU5kMmJlOGNYL3k2U2thR2pIQVFFU0ZpVnlqb0FBQUFBWUpMeEJEM2l2TnpQN0IzKytEUGRPamRoVmF0S3pmZmZrZWhKNHlTa2FoWGRDL2lob0NDSmFIYWhWUC80WGFreWJvd0VSVWJxQjNKUFZYQS8vUEVuT3NwWllFUzRoRlUvOXhzQUFBQUFBTTZkMFdQV2xMVEVnN0toUlZ1UnpFemRrNzJReXBYa3ZPL25XRWxCaE80NWQ1a3BLWExzeDUvbDREdnZ5cW5WYXlYeldPNzIyUUtlcGJhS1JKV1d5Tll0cGN5QW15V3lYajBKc0JMMXZFcGF0VnEyZGU5ckg0TjROcUUxcWt1ZEg3NnhaOUlCQUFBQW1HVThRVmMyWGR0RFVsYXQwVkhPeWc2NVZ5cmNkN2VPOGlmOXlCRTV1WEdUSkM5ZklTbWJOa3Y2c1dPU2xacW1Id1c4S3lneVFvS0tGNWZ3Q3hwTGtTYU5KYXhhTmJzdnYxUlN2cVh2VFhKeTJYTGRrN1BTdC9XWFNvK08wQkVBQUFBQWsxeEowUGU5L0pyc2YrcHBIZVVzTURKU3FuL3luajFMQ01CWkI5NTVUL1krL21UdWpsZ0xDcFNhWDM0cWtmVjVMd0lBQUFCdU1MNEhYU25aK2FwY0w4bk5URTZXK0R2dnkxUEJPQURaTzdyd1I5azNibUt1eno4UHExVlRJczZyclNNQUFBQUFwcm1Tb0tzcTBFV3Z2a0pIWjVjV255QmIrOXdvSnpkdjBUMEE4c3hLeUk5OCs3MGszSFh2T1czeGlMcmxKcnRhUEFBQUFBQjN1SktnSytYdXZQMmNCdnZwdS9iSTF0amVjdWp6TDNOVnpBckEvOG80Y1VKMlRaZ2tDZmNNa2F5VVZOMTdkaUhWcWtxcDJHdDFCQUFBQU1BTnJpWG9rZlhxU3ZIWXJqcktuVXlWWEF4OVNMYmNjTE9jV0xxTVJCM0lwY3hUcCtUZ3A3TWw3b3F1Y3VpMXQzSjM1dm5mQWdLazNIMkRKREEwVkhjQUFBQUFjSU1yUmVMK2xuWWdVZUk2ZDVNTTY4OXpaaVVOb1RWclNORjJGMHVSQzVyWTdhQVNKZlNEUUNHWGxTbnArdy9JcVUxeGtyUmtxWno0ZGJGa1dIRmVGTEhlWTlYZmVrMENBbDI3ZndjQUFBREE0bXFDcmh6NVlZRzlGMWJTejJGR0x6dWN6UXo4UHdmZXlvRWxpa3V0T2JNbHJISWwzUU1BQUFEQUxhNG42Q3FKMkRQcGFVbDgrWFhkQWNBTEFzSkNKZWJWRjZWNHV6YTZCd0FBQUlDYjNGL0RHaEFnRlI0Y0lpV3Vvd0FWNEJsQmdWSmg5RWlTY3dBQUFLQUFGY2dtVTNVbWV1VnhZNlRvcFIxMEQ0QUNFeGdvNVI0WUxHWDY5TklkQUFBQUFBcUMrMHZjVDVPVm1pbzdIeHNyUno3NlJQY0FjSk5hMWw1eHpDaUo2dDFUOXdBQUFBQW9LQVdhb051c2I1LzQzZ2V5YjhJVXlVeE8xcDBBVEF1SnFTeVZwMHlVb3MwdTBqMEFBQUFBQ2xMQkoramFxZTNiWmVlREkrVGs4aFZXMHE0N0FUZ3VJRFJVU2x6YlJhSWZlMFNDaWhiVnZRQUFBQUFLbW1jU2RDVXJQVjJPZlArRDdKczhUZEoyeE51ejZ3Q2NFUkFTTEJGTkd0dEwyaVByMXJFNk9LWVFBQUFBOEJKUEplaC95MHhKa2VPL0xwYkVOOTZXazM4c3N4TjNBSGxnSmVHQlJTS2wyR1dkcE15dE4wbGsvZnAyVVRnQUFBQUEzdVBKQlAxMHFmdjN5L0ZGUDBuU2I3L0x5WTJiSkczTE5zbEtTOU9QQXZpM0FDc2hENnRWVXlJYm55OUYyN2FSb3ExYVNGQ1JJdnBSQUFBQUFGN2wrUVQ5SDZ4L3FwcE5UenQ4UkRKT0hKZjBnNGNrS3pOVFB3Z1VYb0hoWVJKVXZJUUVseXdwd1NXS1N3Q3o1QUFBQUlEUDhhMEVIUUFBQUFBQVA4VTBHd0FBQUFBQUhrQ0NEZ0FBQUFDQUI1Q2dBd0FBQUFEZ0FTVG9BQUFBQUFCNEFBazZBQUFBQUFBZVFJSU9BQUFBQUlBSGtLQURBQUFBQU9BQkpPZ0FBQUFBQUhnQUNUb0FBQUFBQUI1QWdnNEFBQUFBZ0FlUW9BTUFBQUFBNEFFazZBQUFBQUFBZUFBSk9nQUFBQUFBSGtDQ0RnQUFBQUNBQjVDZ0F3QUFBQURnQVNUb0FBQUFBQUI0QUFrNkFBQUFBQUFGVHVUL0FFaTRQaHNXRHBDaEFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xX1BSRSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiODdkYmM1YTE0Yzk0NGRjODhhNDc5N2Q4MDBmZDFmM2MiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjp0cnVlLCJ1cCI6dHJ1ZSwidXYiOnRydWUsInVzZXJWZXJpZmljYXRpb25NZ210UHJldmlldyI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlfSwibWF4TXNnU2l6ZSI6MjA0OCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6NiwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoxOTIsInRyYW5zcG9ydHMiOlsidXNiIl19fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAxOS0wNy0xOCIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiZVdCTSBlRkEzMjAgRklETzIgQXV0aGVudGljYXRvciIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMTkwNzA5MDAyIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjMuNCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4wLjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMTktMDctMTgifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDE5LTA3LTE4In0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiNzAzMjNhNWU1YTNhMTI2ODJkZGY5NmNiYTQwYTExNGJhNmQyMWYyMSJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyI3MDMyM2E1ZTVhM2ExMjY4MmRkZjk2Y2JhNDBhMTE0YmE2ZDIxZjIxIl0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IDUgU2VyaWVzIHdpdGggTkZDIChFbnRlcnByaXNlIFByb2ZpbGUpIn0sImRlc2NyaXB0aW9uIjoiWXViaUtleSA1IFNlcmllcyB3aXRoIE5GQyAoRW50ZXJwcmlzZSBQcm9maWxlKSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzMsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6Mn1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiLCJyZW1vdGVfaGFuZGxlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlETXpDQ0FodWdBd0lCQWdJVVNPRWpUZi8veXFSZlBXN1FxOHF0SXlDckFnOHdEUVlKS29aSWh2Y05BUUVMQlFBd0x6RXRNQ3NHQTFVRUF3d2tXWFZpYVdOdklFWkpSRThnVW05dmRDQkRRU0JUWlhKcFlXd2dORFV3TWpBek5UVTJNQ0FYRFRJME1EVXdNVEF3TURBd01Gb1lEekl3TmpBd05ETXdNREF3TURBd1dqQXZNUzB3S3dZRFZRUUREQ1JaZFdKcFkyOGdSa2xFVHlCU2IyOTBJRU5CSUZObGNtbGhiQ0EwTlRBeU1ETTFOVFl3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRQ2R2bDI3dzJndTFmUFhlRUZiSWRxeDBCYWx2VkRWV3JRUEo3SHF2aXVFdFpIbHhTTHhTRnRjWHBUb2x2THZvZjhmNHRNZXJRVGtWR3pjbVl6bTFFQlQ0SUp1TW1vRXFma0VFaFdwc0FETUZyalprcWxaWTlFcXhRekxvVkVFb25FNW9HeFNkVkN4Q2NMSWFja3B5Ui9DQ1h2ajFCdC9oVGdFOWhUbEY0cFJxeE1reDNwbEY3eThkRFpsUkhXczd2Ym5obUJDR2VJMFpQRVE2bmwybUNnMnI3NGFkRjJ1Nks5cnJMZmhCQzNRTEU4RVByZ3FVc0kraGt1cTJ0SzRNMlNNT3A4dVVWVmtxVWV1M2gwa3IzV1ZJMFcwMnBrZ3JPZ2lGS0xGTmtTcmJZaGRqTUJEajVpem1xZmM5eEpSS29EWDYxMnFkOFpHVkhwVDVBWUZYKzFoQWdNQkFBR2pSVEJETUIwR0ExVWREZ1FXQkJUWnlVNURpUS9hMlVFZ0U3cUJLMHpoSXNSTlJqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUFNQTRHQTFVZER3RUIvd1FFQXdJQkJqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFYdm5CNFNMdVVKZllNU1ZHQWhzc0wvU21XbGkzRlNjY2d4eWR2S2xBQ2NpZElJV0tRcWEzcS9RU1VFUXpDOURnRWZNZ3I3aUMxQmtUWmJJTGJvVjZVWjVrbk5zdmpFWld1TWVvZ0o4dGdaczFoVnZLd1ppendKK21FY21zamhJckJZdW9MMVQ2eXJPSnZLRmcxanYrQ3k0WndBOUJway9WM1VPaXIxVnlLOGRDdHlIdTZ2Zm9zb3RBZFl4OEZBdVIyNDNnUlRNVjZKeDhKZGlnMkpESUFRTWx6VmVEcFNVSFgvSzJIWFJIeEh3ZmdqYmdVampCdS83MnI4T2ZlaHloekhYSTNLOENGRmRmbE8rOG5FT0pLM3k4RjFpdmdTNXVOLzhTbWNZdy9TVFFZd2hyeFB1d3ozblA4YmFNdW00QkIybm5ZbXBCNjBzWDNibDVrOFFVU3c9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFmQ0FZQUFBQ0dWcytNQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUhZWUFBQjJHQVYyaUU0RUFBQWJOU1VSQlZGaEhwVmQ3VE5WMUZELzNkNTl3ZVFTSWdTOUFRQVhjRkxBUVppOWZwZVZ6MXRZL1dUWnI1V3hwYzdXNWtuTGE1akkzWjg1c3JTMm5NMnNqdFd3WlM3SVVINEg0eENuRVF4NERBWkY3NFY3dXM4ODV2OS9sSW5CdlZKL0I0UHY5bnUvNW51LzVudk01NTZmekEvUXYwSGIvSXJYM1ZGS1BvNDVjbm00aW5VSVdZd0xGUm1aUVV1d2pGRy9OMWlSSGgxRVowTlJWUnVkcXQxQmQrMm5TS3lTL09oeXMwK2xrM2UvM2tROXF2RDRaVXRhNFZWU1V1WTBlaXB5aVRoQWZvY29PUlZnRHV1dzNxS1JpQWQzcmJjRXRqVGpZSW9mNldhSHNDbXpWUFdDTXgrY2doOHRMcVdNS2FNV3NVakxxbzJSdEpJUTBvT3ptZXJwUXU0ZXNaZ3NPTmtHeEg3ZDBrZHZUVDE3czRPTVU3Vkk4WmhqZ0dhTStBcTlpRU51OFBpZjF1ZHowN013dktXZjhHbFZvQ0VZMDRQQzVXZFRhWFlGYlI4dk52TDUrM0tnZmI1eE5NeWE5UmFtSml5bmFNbEdUVnRGbHI2YmE5dStwcW5FWDR1TXVSUmdqU1lFaHJON3V0RkZlNmxxYWw3TmZrdzVpbUFHSHluUHBiazhWbVkweHN0bnB0bEZDVkNZdHpUdUJOODNRcE1MalR0ZXZkUHpTVW5KN2U4bWtqeFozOWZYYktEZmxkWnFidlUrVFVnR25CVkY2ZlEyaVBIZzRXMTZVV1V3dnpiazE2c01aRStQbjBwdno3SlNldUF5ZXM4bGNwQ21hS3VvL3ArcVdyMlVjd0lBSFdydlAwWUV6aFhBdExBYnNzSGhwN2lHYW12eWlqUDhyeXFyWFVXWDlYb293eHlBdWZOQnJwNDNQT0JGWFpsa2Y4TURSaXFjcHlvd0F3cHV6MngrZld2ei9EdGRlOXNtc3p5Z3RjUjZDMXdiZHpCbDZPbHE1V05ZWTRvR2F0aEpNcmtURXgwakFSU0hBVnMrNXJZa1FOWGIrUWdmUExzUTZnWHlJbnNyZVFmbXBtN1JWRllmTDg2bjFmaVVPa1l2U2hrVVB4dmJ1a3pveTZLMWloTTFobzNYelc2RXZTZlhBK2RwaVdHYVdkK2RvWHpMem1Hd0tZRkxDQXNSQWxQQkFoTWxDRlhVN3RCVVZQcjhIZ1ZjSkhXcStGMDBwbHIrRE1UZHJQNHp2eFkxMWtOTWh4VCtTZVRHZytkNFY1TFFKaXR5VUdKTkI4VkZac2pnWUJaTS9JSS9YQ1RrajBxeURPcEYyQVZRMTdDSWpVcC9EblQxVWtMNUY1Z2RqK3NTMXdnMWdFM2dpZ202MGZDWHpTblBYYnlBUGJJWHYrSURwRTE2VGhhSElTOXNreWhsbU1FNUYzY2ZxQUtocTJDMEU1UEgxZ1lhWGFMUERrWkcwSERKT25LV0hwNTFJMHo1U091eDhlMVdBdVp6ZEhRclRrcDhUbWpYb0krbGEwd0dac3p1YnFiTzNpZlE2QS9XN3ZWU1lzVjNtUjBKS3drS2M0V0hpQmttUjhJM0NDZ0k4N29PTDRxelQ1UCtSVUpCZWpFT2dBUEs4aFlQemF0TStlSVRwMklPOXlUUW1lcm9tUFJ4eDFxeEFjc2lsZS91YlNlRWJjV1FHWUVDZ2hjTFkySHlLam9nakgyNWhNcGpwVXYxT3VnbGk0ZWgyZVJ3ME8zMmJKamt5dUNnTnpnMHZ6bFlNU2lTczB1b280TUc3aE1PakNFYVgxeUZFMG5TdmpCenVUbkVwSzg2WjhJb3FGQUl1Ync4a2c5QXJFYVJFV1NaSStqSDRYYnA2ZzlFOUVuSlQzb2FSekROK01VSkJRREhuNTZhOG9VbUVCdXNPeEJzL041K3RKRWJQa0FGRGo4VUd2T3MvSVd2Y1NnbEdCaHZTNy9GVFlmcFdHWWREWThmUEF4V1NBMzVzVEM0cDQrTG00QWFxSW9QZVF0ZnVmSzZKaDBaaHhsYnNVWE9TbVhOaWZENVpUQWt5RG9mYmJjY2x4bkE4V05BcXhDYlJOeWtoWHhRcGFEdzY3ZlhVWWJzaUcwS2h0djJvZUl2aDhyaFFNWU9jRUFxWEcvZUkrem5nT2M1eXhyOHE4MklBTTFjL0ZMRk9wbHF1NWVGUVhyTVp6R2NWQ2pZYkxXRzVJNEJUMWV1UnJsYnh0Tk90TWl0RERFaExYSUl5bkFBdnVPRVdFM1gzTmRBZnQ5NFZnYUc0MlhJUXQwWlg2UGVDRS9xUUZlOXJLNkh4N1lVNTBLdkg3Zlc0ZlMrcTdLS0JKeHNnZ0JYNXBTQUdoMWpJclZoNXpRNnczUmZhYWhCWG0vYUNiQ1pUakNVRlVUeVdacVc5cDYyTWpKUFhWcU9yUGdNTzROdjc0R2tmK293ZnROVkJEUW5qRkpxSFN3MTdwWHZoV1c1S1pxZS9RNDlOL1VTVENBVldvUVhGSUhCSFhYZTNGUHJVRHN1R0RtdEYvaEhLVEhwZWt4aGlBT1BJK1NKcTZTNkhGNEk5WVd6a0JKVG80NmlVTXpXcDhQaXIvUmlkdUx4S1lzU2tzVjh2TGxPUXZoR1gyWWxSME9CaEJqQyt1L2dFY3ZZMEFwSzdZazQxTnhqUFNRbldGSFRGNjZVcmpnZXZCOEN1NWErbDJ2WVNSUHR1VkRvNzNoaGRNU0huVVg3dFRqc1ZaR3hBbC9XcHRpT0lFUTFnbkwyOW1YNi90UjF0bWxrWWo4VzRYK0NTaldjVURHWTFOcFMvQzdoU0txaU1MTS9sMlFtU1daNzNEZHorZ2lvOEJDRU5ZUFE0NnFua3p3WFVicXZCa3hqVVFzV2ZaRmdidW8zckFmK3dON2pPTzkwK3lueDRQaTNMKzBuWUwxU2NoRFVnQVA0Z1BWLzdJZDFxKzFIU2htdUdrSXFXUlBneXhNRnFQOEhmalRualh3WTViUWZiSmN0Nk9JektnTUhvdEYvSGUxZWdzYXhIU3FHNndmZG1RNXg4TnlURkZxQmNwMmlTb3dIUjN5azUrMzZoRjd2WEFBQUFBRWxGVGtTdVFtQ0MifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMC0xMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzMsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWXViaUtleSA1IFNlcmllcyB3aXRoIE5GQyAoRW50ZXJwcmlzZSBQcm9maWxlKSIsImNlcnRpZmljYXRlTnVtYmVyIjoiVTJGMTAwMDIwMjQxMDEyMDAyIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMTAtMTIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDczfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI0LTEwLTI5In0seyJhYWlkIjoiMDAyNCMxNTQxIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWlkIjoiMDAyNCMxNTQxIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkcrREZhY2VWb2ljZUtleXN0b3JlQW5kcm9pZCJ9LCJkZXNjcmlwdGlvbiI6IkcrRCBGYWNlVm9pY2VLZXlzdG9yZUFuZHJvaWQiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJ1YWYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfSx7Im1ham9yIjoxLCJtaW5vciI6Mn1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9kZXIiXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX2RlciJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiYWxsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJ2b2ljZXByaW50X2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmYWNlcHJpbnRfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbInNvZnR3YXJlIl0sImF0dGFjaG1lbnRIaW50IjpbImludGVybmFsIl0sInRjRGlzcGxheSI6WyJhbnkiLCJwcml2aWxlZ2VkX3NvZnR3YXJlIl0sInRjRGlzcGxheUNvbnRlbnRUeXBlIjoiaW1hZ2UvcG5nIiwidGNEaXNwbGF5UE5HQ2hhcmFjdGVyaXN0aWNzIjpbeyJ3aWR0aCI6NTQwLCJoZWlnaHQiOjk2MCwiYml0RGVwdGgiOjE2LCJjb2xvclR5cGUiOjIsImNvbXByZXNzaW9uIjowLCJmaWx0ZXIiOjAsImludGVybGFjZSI6MH1dLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQm1EQ0NBVDBDQkdRZFBSMHdDZ1lJS29aSXpqMEVBd0l3VmpFTE1Ba0dBMVVFQmhNQ1NVNHhDekFKQmdOVkJBZ01BazFJTVEwd0N3WURWUVFIREFSUVZVNUZNUXN3Q1FZRFZRUUtEQUpIUkRFTE1Ba0dBMVVFQ3d3Q1JGTXhFVEFQQmdOVkJBTU1DRUZWVkVoU1QwOVVNQjRYRFRJek1ETXlOREEyTURNd09Wb1hEVFF6TURNeU5EQTJNRE13T1Zvd1ZqRUxNQWtHQTFVRUJoTUNTVTR4Q3pBSkJnTlZCQWdNQWsxSU1RMHdDd1lEVlFRSERBUlFWVTVGTVFzd0NRWURWUVFLREFKSFJERUxNQWtHQTFVRUN3d0NSRk14RVRBUEJnTlZCQU1NQ0VGVlZFaFNUMDlVTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFU0lwSS9kS1lDRFloendEMndTZllBT2Ivbk5haVBjV0YyMXZ4WmsvVGdEME9KdGNEK09QbTY0bndaZEZXU0VZU1c3aU9xbnBtSnlkZThtZ3IvdG5BaXpBS0JnZ3Foa2pPUFFRREFnTkpBREJHQWlFQTNidmhhelFGUHdteVhseEsveENYZmg3ZzFYMUVvYkxDM0wrMkdPUnhwN2dDSVFDZk5FVFgvbTJCZWJSTFhJNExNUDFFUUdQWEZEZjdPazc0VTd4YmlNNFZrQT09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsLzlqLzRBQVFTa1pKUmdBQkFRQUFBUUFCQUFELzJ3QkRBQU1DQWdNQ0FnTURBd01FQXdNRUJRZ0ZCUVFFQlFvSEJ3WUlEQW9NREFzS0N3c05EaElRRFE0UkRnc0xFQllRRVJNVUZSVVZEQThYR0JZVUdCSVVGUlQvMndCREFRTUVCQVVFQlFrRkJRa1VEUXNORkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCVC93Z0FSQ0FESUFNZ0RBU0lBQWhFQkF4RUIvOFFBSEFBQkFBTUFBd0VCQUFBQUFBQUFBQUFBQUFjSUNRUUZCZ0lELzhRQUd3RUJBQUlEQVFFQUFBQUFBQUFBQUFBQUFBRURBZ1VHQkFmLzJnQU1Bd0VBQWhBREVBQUFBYXlqNkY1d0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFZ2QzZURUNXhMSjM2eEZvYzVsOGxHUFNYS3N6TkRNMDlOVmROKzhQOFpkTEtCSHBpZSt2aFR1b2ZOWE5Bdm0rTXlVbVJuMWRRWmdBSE00Y3cxTGljUDFWTGVRdWpUekoyZEpNMzM1cGhhYVVqZWFiS1VSdmRWN1NaMWRUUzZTdUZrd1EvYkhyNzY1dDJGMW1kazg3TlBxRStTWXlIUjFnQUxCMThsdnlUZWpQWFFxbXVnc2dZZFZWcDF5YUhmWExXM3ZVUWsycGFJcWQ1TXJZcUlQZmpkTE5tVFl5MitDVG94c2I2SXR0U3U2bEE5QlpIQTZxb0FCeU9PTkhQMnBQZW5qcnMvOEF4bW5jWWJMQ2lhNnoweFNtYVp0OUhSTWxVUnZkRitxem9ZdXMzbGRLVjF1NmlhbTN0N1BydEpuMEdlbnUvQTlEV0d4eEFBQWV2OGd4WEtrL09acWM5Sm1iS2xwTXpaR2t6TmthVE0yUnBOd002RXJoMWo4dzJPSWV5QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUC84UUFLQkFBQVFNREF3UUJCUUVBQUFBQUFBQUFCUUFFQmdJREJ4VVhJQUVRRXpZUkVoWXdOSEExLzlvQUNBRUJBQUVGQXY2YkdJU1JsTlliRmdVWlMzRk1tbFBndEtXMmJmU0xyRTFQU3VXK0MwdkJhWGd0THdXbDRMU2NpR0x5azFpZ09ScGtzUUl4ZTkrR0FRbXFVUEc3ZTAwc1BuN1lhM2U1ZEJ0cTk1eGFPWllIRkF5eEo3Y3BCa3hoSGkyODR0YnppMXZPTFRITFFKM1cxZDJIMWg2eXNFV3M1aDF5S0VPYlJyY2ZPZ1lpeUJGU1dRdDR5S1BTRjdJM3ZERW50eXlmN3R3amNvZlJoNENOTjVBTWxBSzNJd2x5M1ZadWNzVk1PajJYTExSbXA5SSsxR0pqMWRPMGg1YlNIbEFvQ1ZqcDlUWEhoWTlKZHBEeTJrUEp6aXc0MGJkc09tYW01ZFpIWWRCOHc1WVkrTmVVNCtycEx1emI5Ym1lL3dBUHRqWDZ2dlZaZitQdXZsaTRoMFlTOVpkQ1ZNejNhbkpzam9wM1BraTNQa2l4NU5UQjZSS2RUbzJGbEc1OGtXNThrVi9KRWhkV08ySEFsVjRnc2hrT2hLWDhyRit0cmZqUnkxSXd4NEcya1F5U1JSL0YzWERFbnR5eWY3dHdpc05mU2x5SUZOd2crWVNHaU5BNnF1dGRYT0VURzdFMzdCKzNLTkw3ZTA2dFBjWHg5NVh0Q0NXMElKYlFna0JnQXVPUDBheDBKUEV0b1FTMmhCTGFFRW1PTTQreHJ0V3FMRnNvVmFobVV4bGw2V0V2d3g2VWtJemZDNWVHUEtXOHFET3FkZEdyWFJxMTBhdGRHclhScTEwYXRkR3JYUnExMGFuTXRDdEtUZVlCN1drOUpIOGtjLzAzLzhRQUhSRUFBZ0lDQXdFQUFBQUFBQUFBQUFBQUFBRVJFZ0lRSUNFeFVQL2FBQWdCQXdFQlB3SDZ5eGs2UktGN3FVU2g0enlmUzFERW1aRVBXTE11QzlNdFdSWWJnc2h1UmVtWG5GT1NwVml4WTFKVmxXSlFOenlzV0xGaXhZYm43SC8veEFBdUVRQUJBd0VGQmdVRkFRQUFBQUFBQUFBQ0FBRURCQVVSRlNGU0VoUWdNVUZSRXlJeVlZRVFKRkJ4OERQLzJnQUlBUUlCQVQ4Qi9MVmxkNFBrajVyN2lwenpkUjBsUXhzN2lxci9BQVA5S09NNVgyUXpXNTFPbGJyVWpuc3VvSytXRjdqelpSbU1nc1k4dUNVL0NqYyt5cFl0Nm11TDl1aEZoYTRWdlVHdGxVMU1KUWt6RXJPa0dPVjNON3NsdmNHdGtFb1MraDcxYUZNeGc4cmMyVmxTdmU4WHp3Vlk3VUJzeXNzMkdaMmZyOU1MbTd0L2ZDa3M2V01YTjNiSlFRRlVGc0FzTG03dC9mQ29hWTZablkrcXF6WUlDZDFaWTN6WCszRFZVNVVzbTBQTG9vYlVHNjZWbGljSHVwN1Foa2lJRzZxaG5DbmtjajdMRTRQZFBha0hTOVZOVWRXVjNUc3FLbTNlUHpjMzRTRmpiWkpIWmNSWmk5eXdrZGF3a2Rhd2tkYXdrZGF3a05TaHBJb1BTMmY1ai8vRUFFTVFBQUVEQWdBSEN3b0VCUVVBQUFBQUFBRUNBd1FBRVJBU0V5RXhRWk1GSUNJak16VlJZWkdoMFJRd01qUlNZbkdCd2VGQ2M3R3lVM0NTcy9CVWNuU0N3di9hQUFnQkFRQUdQd0wrWnQyRVpLTUR3cERuby9McG9GOXM3b1BlMDk2UDlOV1lpTU1qb1EyQlhKcDdLM1dJUWtIeVZ6Vjd1QUFnRVpCZW41VnlhZXl1VFQyVnlhZXl1VFQyVnlhZXlyUHdvN3c5OW9HbEtpaFc1NzNTM25SL1NmcFZwVGVNeW84Qjl2T2hYbWk5SXVuYzVrOE1qOFo5a1VobGx0TFRTQlpLRWl3RkYrVStpTzBQeHVLdFJTMEpFcjNtMjdEdklyMUtaMko4YW13MjRrcEszMlZOZ3F4YkM0K09BZmtMK21CNkE5RmtPT05XdXBHTGJPTDlQWFhxVXpzVDQxNmxNN0UrTmVwVE94UGpRUzRYNG5XNjNtN3IwbDZPOGg5cFdoYmFyaW5JOGxwTHpMZ3NwQ3E0RjNJTDJkbHc2dmRQWDVobU95TVoxMVlRa2RacVBCWTlGcE5pZmFPczA1TWY0WDRXMjlhMWRGR1JNZHh2WlFQUlFPZ0RlajhoZjB3VC9nMy9BRzA3MFBSWE9MUEtNcTlGWS96WFRNMk1lQXZTazZVbldEVWlFdTJNb1hiVjdLOVJwVGF4aXJTYkVIVWQrMHRRdUk3YW5mcDljSGtRUEV3MGdXOTQ1ejlNSVVCSHNjL0sxb2piV3RFYmEwSmNzTTVISnFUd0YzT0NWTmlobklPWW1ManVXT1pJRmFJMjFyUkcydE92dUNQaU5wSzFXYzFEQy91Y284VklSanBIdmo3ZnBnbkJJc2wwaDRmTVorKysvbTlQazMvb1lOMWNiVGx6aGEvMmp6RzZQL0hjL2FjTzV1TDByL1lyQW0zK21SZnRPL2pwVWJKa0lVejlSM2dZRWJvSlR4TXRPYysrTTM2V3doSW5pd3pjaTM0VnpnTmczNFZ6Z05nMzRVSXMyWGxtTWtwV0xrMHB6L0lZSmNTSE15VWRHSmlweVNEcFFEckZjNERZTitGYzREWU4rRk9NdVRncHR4SlNvWkZHZy9MREozVVduaW1VNUpCNlZIVDNmcmczUVdrM1EyckpEL3FMSHZ2djIzbWxZamphZ3BLaHFJcVBOYXRkWXN0UHNyMWluWVVrY0JlaFEwb1ZxSW90eW03dEU4VytuMEYvNTBiMGZrTCttQ2Y4Ry83YWQ2QXlndFJRZU1rcUhCSHc2VFRNT0tuRlphRnVzOVpwK1VTTXNSaU1wNlY2dkdpcFJ1bzV5VDVnNDEzSUx2TE5EOXc2NmJreFhVdk1MRjBxVFNtbm0wdXRxMG9XTGcwVkNLcU9UL0JjSTdxMHl0cjlxMHl0cjlxMHl0cjlxOHNpRi9LNHBUeGk3ajlNRHM2U1g4czVhK0l1d3pDM1IxVnBsYlg3VnBsYlg3VnBsYlg3VUZlUm1Rb2Z4MWxYZG9wS0cwSmJRbk1FcEZnS2NsVEhReXlqV2RmVUt5eXJ0eG04ekxYc2pwK1Btc2VFOVpCOU5sZWRDdmxRVFBiWEFkMW0yT2p1ejFkdmRTSWVvdkFHdWNJdTJUWE9FWGJKcm5DTHRrMXpoRjJ5YTV3aTdaTmM0UmRzbXVjSXUyVFhPRVhiSnJuQ0x0azFkM2RTSU9vT2hSN0JSVHVjeXVhN3FXdmdJOGF5MDU3SHQ2TFl6SVI4Qi9NNy84UUFLQkFCQUFFQkJRZ0RBUUVBQUFBQUFBQUFBUkVBSVRGQlVXRVFjWUdSb2NIdzhTQXcwYkZ3LzlvQUNBRUJBQUUvSWY4QVRZam80YURUTTBPTVVZNjN2RXRCWkcrYUJGdUQraFhxOUc1RUNITnN1NWFCTlBWNjlYcjFldlY2OVhwYzVZZjJ5bVpPMFJaMVQraWdaNFRnaE9Eby9VVEJ1Nk4vTi9YQTMwYTQwU09RVmVxckFkMi9Tb01IZ3VyT214R0VobnBDQXVXMzRVU0xxaGxoTVNQZ1JvMGJwdHN0M082WGFhb2JpVkNFSk1pZVkwREUwM2htMEhVNHg4OWRxWEpCUm1FU0RiaXVxeTFicGl3TUx1SDlYQUdsM09XN2NzdjY0L1pSd1Zzb1N1T00rWXFmdWVRZk5GQ3FKdnd2VTZMVCsyNytCaFBuWmtIM093OVo4TmhaZWhhWW5KSERiQTVvUEJYblB5dk9mbEUyREc4eEZrYWJIbVJHSUdzak1hODUrVjV6OHEvVVBGZ2x3MDJwTmtaZkozejVObkh2SUNmbUZCM1c2MzdiRGFQTTVZZEkyK1d5K3RRRmJKdE4xdHNXYmN4NmZuUEFwWE5Pb0xqc1RCREJ1QkVjUXVlMG9ZSUdGdG9VSjJyQkxNaUxRZGhuQXBZTWxhamV1MUNoaUZnWGtJU3pMdFNnSmRrckc3WXd3ZzRaMEh6TkF2UmlKSG5TaENDMjY3L1JHc2N1WFljMGZwalRsTE1kaHZ3ZFZ2MlVjSU5CckNjVCtBNHhWajFsTjVqbUsyMWF0RVdNZEJlMEtmdzJRbFg2SElPaGVETFJkYnNrbkRxS3gvSFNpSjlCWnRScTB5OHhQTkljQ3ZTcWVsVTlLb2JRTmhJRyt5R3pEZGY3QUVHZ1Y2VlQwcW5wVk1OSUVqdWNTZ0RGRGdaQVVTV3JieFlCaXVWTFFsbnZFYXNlQmg5UytZWjVoNXRTR3NEZEZMeHNPWEdqVTUvQkZtdlB1OWVmZDY4KzcxNTkzcno3dlhuM2V2UHU5ZWZkNjgrNzB5aW42NExXQnVRUjF0dGJvTjlTVTZWR1dCdnYvd0JPLzlvQURBTUJBQUlBQXdBQUFCRDc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nm9Namc0eHZQMzc3Nm1wenl5dnplcHI3NzczajVUL3o1ZS96Nzc2NHB2OEF2cS82SUcrKysrdmMvd0QvQVA4QXRmOEF2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2L3hBQWVFUUVBQWdFRkFRRUFBQUFBQUFBQUFBQUJBQkV4RUNBaFVXRkJVUC9hQUFnQkF3RUJQeEQ5Yk1kQnF6TUVVTXoybG4yQmhFUnAyQmJVV0NabmhMQnhBcHhQS0ltWlExRDkyY1JEeHJBV29BdDBpd2hzYm9EVEhycEFSakNqV2htNXRHb016TDlTL1V2MUw5Uy9VWEw5ai8vRUFDZ1JBUUFCQVFVSUF3RUJBQUFBQUFBQUFBRUFFU0ZCWVhIaElERlJnWkdoc2RIQjhQRlFFUC9hQUFnQkFnRUJQeEQrc2IzMTl1TllEbzd0UFJGVTBFODV6dmtvZFZ2bU43ZTQrS3RKVSszdzd6SitHS3pWYkdHUll0VnFXL1RGZ1lxQmRQM0lDOVVhRllYUVZGdVpQMUlVbzBjSVhOTjlpWTVRRG15bEhoK09tdzNCSGkyWEFTek94OGY0dTE3akZIa0ZiRjlSK2dJVnQ1Rnc4Wis0d3BnMUc2dnlFdkJCT2JaRVViaGVUWVFTak54MnFxNFlabmVVVmRlSmZ5dW4xR3NyUTFDRm1zcUZVVVdabnFmVWF3QlVMa2U0TUpTNExiZmxqWnljT0J5ODdMMEtqY3hxcXdienZiM21LNmF6RmROWml1bXN4WFRXRlMxOUNXM25HMTA1ZjJQL3hBQW1FQUVBQVFNREJBTUFBd0VBQUFBQUFBQUJFUUFoTVJCQllTQlJjWUV3d2ZCd2thSFIvOW9BQ0FFQkFBRS9FUDVOdmNVNFpraTUrQXRLUTBIckJaN3FlZUp2bWppdEFOZWdyOU45VXpHTUFqc3NhU0dreEI2TmZwdnF2MDMxWDZiNnI5TjlWK20rcVBNVUpyL1NpeDgrbm9nNG9xbUJQYmtzREdOc2JLU0UvRVMweFRIQTJGa1N1Z0VJUVNXWGhjQXNGV1ZmVFIyQ3QxRmhLN0ZUSnRBcGVIU0RDekozZnVoTUVUQXZIUTBPTG05bG8xZ0RKa2VoZ3dZTkQreEUrV0RsQTcwYnA1N29jSWttNWtwdDNmdHJDTUlJUkJFUWFQMEtVd1hXV3VrT0lrdkQ0SEZkd2RQZ2xMMWpBdUpWK1krQ1lMQlUvaXdPQVYyeFpnTWhEQU1ZUGoxQnRJZ1lsdkJLVy95TkZKQkcycHNtMURBOWdvcXdoMkdPQVlUMGtKWkduaWtKdzFCMkp3WkJ2UmliZWhBZzdpSjFsdGlra2lMOGdqa2FNQkZRL3dCbmZ3Yys3cmRQYVlzSkovdlhQTmxnZDhCaGE3UjlzUkozVkpIS3hHdWVaRmIxZERFWnNLMnJMejBaQ2lvMmttNzhlaENUNEVTdCsrdktxSk43ditrNkJMSlRkT0hXZmg5dngzc2JSV2U0OWFOT0VRaCtkdXNhTlMwRUkvUU9Sb3lJU2wzbjJoWGQ0dW9HSHlxQVFHdVRKYUZHemE3WVpMYVkwbVdmdGR3MGwxMXpCYldUSnYxRHNzbkNrcEpFZFNJQ0phV1M0NGZIUXlyK0dURW50TTk5ZU01ZEREY2dIMVF4RVM1S0NiMnVKenVGTXFTRFM4U25DTHdpbGxUQWJDcnNvN1BOaHlRdnh0RkJLQlFobnNMZUczSkM5Wno4SVYzZEJMS2U3WUNDcHJMUmF2Rm05M2tUS1VnWE1rSmxWM1ZaK0IrNnNURllEWUZiV0RkRkFiQXBNRzRtUWJLQkVSQks0Rm51aUVpZVNtQUZkSzhKNFFIUXpac3pOVnl5L0Jjc2I2RW1tQ1BKOEpNaStaNkdiTm5QTTAreGN6MkZEVUtCZGdBQTRLa2FDZk93QzhhQVN0WHFZNlN0NGJNWW94QVNCK0o5Z3dURjVpSVdtQXRNU1ZEWW9LSjNDdWRtSjNab0VlSmdieVllejR2L0FQOEEvd0QvQVA4QS93RC9BUGdnUkw2eFFlaW9iMFJWL0JiOGpzb0EzYkVtTWpZd0pVcUNWaitUdi8vWiJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wNC0xNiJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDQtMTYifSx7ImFhZ3VpZCI6IjU4Mjc2NzA5LWJiNGItNGJiMy1iYWYxLTYwZWVhOTkyODJhNyIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiNTgyNzY3MDktYmI0Yi00YmIzLWJhZjEtNjBlZWE5OTI4MmE3IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ill1YmlLZXkgQmlvIFNlcmllcyAtIE11bHRpLXByb3RvY29sIEVkaXRpb24gMVZESlNOIn0sImRlc2NyaXB0aW9uIjoiWXViaUtleSBCaW8gU2VyaWVzIC0gTXVsdGktcHJvdG9jb2wgRWRpdGlvbiAxVkRKU04iLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2LCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX0seyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AzODRyMV9lY2RzYV9zaGEzODRfcmF3IiwiZWQyNTUxOV9lZGRzYV9zaGE1MTJfcmF3Iiwic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo2LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCIsImJhRGVzYyI6eyJzZWxmQXR0ZXN0ZWRGUlIiOjAuMCwic2VsZkF0dGVzdGVkRkFSIjowLjAsImlBUEFSVGhyZXNob2xkIjowLjAsIm1heFRlbXBsYXRlcyI6NSwibWF4UmV0cmllcyI6NSwiYmxvY2tTbG93ZG93biI6MH19LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjYsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIiwiYmFEZXNjIjp7InNlbGZBdHRlc3RlZEZSUiI6MC4wLCJzZWxmQXR0ZXN0ZWRGQVIiOjAuMCwiaUFQQVJUaHJlc2hvbGQiOjAuMCwibWF4VGVtcGxhdGVzIjo1LCJtYXhSZXRyaWVzIjo1LCJibG9ja1Nsb3dkb3duIjowfX1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRFJ6Q0NBakdnQXdJQkFnSVVleDluVDl2d1pOWFM0ODNMZGlZR2Z3MlNqU293Q3dZSktvWklodmNOQVFFTE1DNHhMREFxQmdOVkJBTU1JMWwxWW1samJ5QkJkSFJsYzNSaGRHbHZiaUJKYm5SbGNtMWxaR2xoZEdVZ1FpQXhNQ0FYRFRJMU1EZ3dNVEF3TURBd01Gb1lEems1T1RreE1qTXhNak0xT1RVNVdqQW5NU1V3SXdZRFZRUUREQnhaZFdKcFkyOGdSa2xFVHlCQmRIUmxjM1JoZEdsdmJpQkNNaUF4TUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUF1MU1ldm55OWR5TzlaVUMzOVNvTWhMY1IvRFhydEYvY2lNMTJ0Y2l5MkVYQVo2TWtyaXZWdENmRVZNOVg2SVNURW5CUDZ1U1lZb3Y2cHB2Nk82SmgyTkhtWW00dytKblM0Vm5DUFU3bUhBTWZWSTJNR1RUTVZPZXcweFVzRzdzSVNJa0lEVUJtdWs4WUs5YzV6aWM5K3ZGUUdMSWtzZFhPNWlWRklnTkc1M2NHWEQ0Wkxab0FQaXUwUEVvenhBcVlJYUk0Z3hLaE9BM1M4L1c4bUlXc3U2b2Z5ajRHdmtGRzZaN2t5RjMxMDdQN213RkhMckkzRU5hUFdNT0ZjVGFHYTBkdysvdlZSd2pSY0VaQlZzdXVULzg3Y2tTczBhNXBrdDN2WkJsYVllVDhwelNyZVY3bW93Y0lNOTBMMmlhQVRsUDBueG1hRTZuT3lUYm9qRlZsMndJREFRQUJvMll3WkRBZEJnTlZIUTRFRmdRVVNYRWgzc2EzYnREdXJtNE1NL0M3UzFsUnV1WXdId1lEVlIwakJCZ3dGb0FVNnJkQ2tKNE1lMlI2MjFSOEE3cDhUcC9Zb1dFd0VnWURWUjBUQVFIL0JBZ3dCZ0VCL3dJQkFEQU9CZ05WSFE4QkFmOEVCQU1DQVlZd0N3WUpLb1pJaHZjTkFRRUxBNElCQVFCNUdjM2hhZnRwN2hLc0Vac28raS9aNW5SdXFkbXpHMldDbFVvUlVxYmFQeWdsbkpEaktSL2tmZ09sNmliYkYvenRobTNLbVhRN0hjRElQMnhNZEc3VTJMMmltYkpRSHFQZi9oMkhxb2piNHJaZ3VlKzZXNGt0U1I1ZWxSOUwxcllxRS9TR1lNNGlFS29WUVN2N1JUMXJ4SWVXaUtzdy9WeHhpL1FPbnN4M0Y3eDgwQ0NZZ0I0RTN5UXg4VlRXNDQwaFRFd1RBMWVNSE9peDMydFB0eXlISWE4UFZWSWZWcEhRSkJhTVZ2djUwOFVFandrYlUycm5qZnpvU1ROUzlBNWpVUThtQlN2ZTk1cmpCMGRvOThFVStEeGRCcVgyK0g2aTV3bElDRmd6aGR6Y3NuZTloR0tUNmx6VFg0Y0lkSnNyWTIreGxlSzBGRlF5NmxHRVZMRWUiLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVRuYmJHSVIyTkh2enFJS0ZBZVF3RzFYQmlzMHdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFRWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPc1hqM2swNEJhbjRUWWR0WktxRC9PUEp4eUR5YVBtQ0JVRlVpYVpJZ1R0ZVpuajNYMjVEaGdwWlpYc0M0RDB5ZEljcmxBNndOVUluT1JML0w5ekJiVEVJTUFWTUdvNmc3VUtBbWIyTUY2QUhibmhZSmQ5ZWlrdXBWTldTaEhOWU5jNEdCZE8xWU42QWZVcXZKaEhiZTNWNFNOTVBtQlJFS0pQVno3VGh3Z21nZ1RlOFdzMkswL3dzcXYyd1NFN3BiQ0JzVVpoSVg1MWJaTTNwcUR3SlBUbVJGRXZ0MC82dEc1ZU84RjNqMTRPWHFmRWhtam4xVnZ4S0RZUU9MWkF4Q3d3Z0MwUDRDZGZXdjN5OFBTUjhJMzU0aE8xWStHek5qdklxWDM4TktMeXd1SVlIRmVyT3hObHhFTUJ2RmhZQnVSdVlBa2tnVWFQcU42VUJoc0lMcnNDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNDb1JIaGl5Tm5iblhSV0lMNlpCWG9CWDlZVE1COEdBMVVkSXdRWU1CYUFGQ0FvVUNFYnBGcGI2RlBMblozRjVQeHNMM29mTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFDUUZhZkpJMS81V2c5Q0VFaW1FMVJQNTRSZ1F3VE5UT09Rc0xBQ1RlK3JJdGxGUXpDOVpEaHJWODI4eVg3anp5K0FBc3AzaXpLN1QxdGgyZGw3bSt0dTBzdzJQYS9vbGMwMm50NlB5SXczNDhnYUh6aEkxKzBLRTQ1cXh2RkRlTDJsTXhiUGZDWXZ5RUVhWXpqaVFFTFU1OTUxcFhHV3lLTWEvNGZMdE8rWktPWGhNdVZlcTRyWERQSTU0VzZKSE9pQWFpS2Rpdys1ZTNjMmt0L2pGSVF0TTZ2TVhnOUxORnpkakVUTnQyMFZYOVFldlJwRlpmdWNNRzl3Q2FRRG9GbFB6cFRNSktoUGV2L2ltSm1aWWhLZnIwbExjZW10cWpJeExBb3FaZE9ZZkhCZzYrdkFjZFBJL2lhdUdwVUF2N1grVUtObUR3aloyQmFINHNMd2hCMm0iLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVIzOG1xMjZTZjJzelZWMkJkRzZXRU43a3VXVXdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFSWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFOWTBXYjlvUG9Sb0tvUXlXUGFKcHoxMXZyV1RnNnpUdG1OajJWb0tSbnl2S0dScXB6YjgzdzVsNllBOTZVWWtZQkRRUDBpbE8yRFBlNndXcVZSNXpEZlJ6ZGNIOGJoK0w3ZEdHdmFlNmhSVFpoa0ZrQ3BYRHM0SGNja25yRGY4RkNsSjdIZTM5SmY0Mi9HMVFtMnp6OVdXbXJQWHRnaUsveDA1R2pzUWZHdURHMXpmNVFUVVVpZThsd3ltSzNUZmRPdk5lZUpBQVBlMnBuN0l0ZlJiK3JWck5XaUR6bFJuMnZObloyd1BvNHdIL1dKNmRoWFpHK3JNV1QrYTZCb2NnMVVmSXc2a2R1bkc0YlRwWnpzdmFjRll5UjBtcGYrRGVPbnBTV0FteXdKV0h2VGxmMllYeEZ5ZVhjVEFDZFFsY01OR0oyVmhaUTQ4eHRQNS9SQlAvOGtDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNoeTQyb2tpcWNUUzFpcWEvSFJXamtCbjRIL01COEdBMVVkSXdRWU1CYUFGT3EzUXBDZURIdGtldHRVZkFPNmZFNmYyS0ZoTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBbitSSElQYnRNRUROZFQxZzhIL1JpdEFrVWRMZ0F0MXRXR1dubGo5a25idjQvNEdsWDdDOXA0NWVmUE85L2FaTDZPVjFYUktCaTZLbXRCVzVLN251WUVuTXgvNUJxQlNiTFQ3cmhkdUM0OVRCZU1iOVBIZFhzVGxTVk5ZZWZyMWRHaWRyNGoweFZCUUxiMXJrbkRBYmRXRHpLZnZuYXlLTzhGcndlN0h4ODQzTUcvckorYzBYcnVVdmJmVlRDSExpSVdoTTdvTkRoTDh4b2I2eFVvOUtMS2NTTCtJdFlzTzMvOVdiOFE5R2pzcUw0RlhzRGNHMVNhWWg3S3BmdU1tT2l4cXpKWk8ybklpY1BZUmcxSTJTdWlVZllPNzB0bWRIY2JsK2tTUW1TWXQ3cnE0dmlJTGcyR3gzajlySVR1V1RqYmFVYVNTUXhnT21NU0h1eXpNQUMiLCJNSUlEUGpDQ0FpYWdBd0lCQWdJVVh6ZWlFREpFT1R0MTRGNW4wbzZaZi9iQndpVXdEUVlKS29aSWh2Y05BUUVOQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU1aNi9UeE04cklUK0Vhb1B2Rzgxb250TU9vLzJtUTJSQndKSFMwUVpjeFZhTlh2bDEyTFVoQlo1TG1pQlNjSVpkMVJueDFvZDU4NWgrL2RoSzdoRW03SkFBTGtLS3RzMWZPNTNLR05MWnVqejVoM3dHbmNyNGh5S0YwRzc0Yi9VM0s5aEU1bUdORDZ6cVljaENSQUhmcllNWVJERjRZTDBYNEQ1bkdkeHZwcEF5Nm5rRW10V21NbndPM2kwVEF1Y3NyYkU0ODVIdkdNNHIwVnBnVmRKcHZnUWppVEpDVElxK0QzNWh3dFQ4UURJdituR3ZwY3lpNXdjSWZDa3p5Q2ltSnVraFl5NktvcU5NS1FFZHBOaVNPdld5RE1UTXQxYndDdkV6cHc5MXUrbXNVdDRyajBlZm5POXMwWk93ZHdNUkRuSDR4Z1VsNVpMd3JyUGtmQzEvMENBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUI4R0ExVWRJd1FZTUJhQUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUU13RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCRFFVQUE0SUJBUUMzSVcvc2dCOXBaOGFwSk5qeHVHb1grRmtJTGtzMHdNTnJkWEwvY29VdnNyaHpzdmw2bWVQTXJiR0pCeUoxWG5xdUI1c2djUkVORnhkUUZtYTNtaW84VXBmMW93TTFacmVYckowbUFERzJCcGxxYkpueGl5WWErUjExcmVJRlRXZUloTU5jWktzRFpyRkF5UHVGakNXU1F2Sm1OV2U5bUZSWUZnTmhYSktrWEliNUgxWGdFRGx3aWVkWVJNN1ZvbEJObGxkNnBSRktsWDh1c3Q2T1RNT2VBRGwyeE5GMG0xTFRoU2RldVh2RHlDMWc5K0lMZnozUzZPSVlnYzNpcm9SY0ZEMzU0ZzdyS2Z1NjdxRkF3OWdDNHlpMHhCVFByWTk1cmg0L0hxYVVZQ0EvTDhsZFJrNkg3WGszNUQrV1ZwbXEyU2gveFQ1SGlGdWhmNHdKYjBiSyIsIk1JSURTRENDQWpDZ0F3SUJBZ0lVVWNtTVh6UklGT2dHVEswVGIzZ0V1Wllaa0JJd0RRWUpLb1pJaHZjTkFRRUxCUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JCSURFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURtNTU1YldZOVdXK3RPWTBySVdIbGRoK2FOYW5vQ1pDRmg3R2szWVpyUW1QVXcwaGtTRzZxWUhRdFArZlp5UzMzVkVydmcrQlFxbm11bWdOaGZ4RnJrd0VaRUxlaWRCY0M4QzRBZzRucXFpUFdwenN2STE3TmN4WWxJbkxOTEZjWlkvK2dPaU42Wk9UaWhPNS92QlpNYmo5cmlhQWNxbGlZbU5HSlBnVGNNR2FFQXlNekVNTnkybm02RXArcGpQNWFGNmdpMjF0L1VRRnN1SjFqMlJqL3luTS9TZFJ0K2VjYWw1T1lvdHhIa0ZiTDl2dnYyQTJPdjVJVFpDbHc0Yk9TOW5weXBRaW1PWjVRQVl5dG1ZYVFwV2wvcE1ZejZ6U2o4UnFrVkRORUpHcU5mVEtBMml2TFl3WDZsU3R0TVBhcGcwSjg0bDlYMHZvVk4vRnBTNFZDVkFnTUJBQUdqWmpCa01CMEdBMVVkRGdRV0JCUWdLRkFoRzZSYVcraFR5NTJkeGVUOGJDOTZIekFmQmdOVkhTTUVHREFXZ0JUUzd1OWFJbzA2YlZ3amx6M3loZFVtOFNWN2tqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQTRHQTFVZER3RUIvd1FFQXdJQmhqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFZTXpnTHJKTElyME9vdlFuQVpyUklHdWFiaUhTVUtTbWJMUldwUmtXZUF0c0NoREVIcFhjSi9iZ0ROS1lXb0hxUTh4UlVqQjRDeWVwWWV2YzNZbHJHOG83ekh4cGZWY2FvTDVTZXVKa3pIeEtuNGJUYVNwOStNdndhbW5wNjRrWk1pTmJGTGtuZlA5a1lLb1JIa01XaGVSSjFVc1AxejRTY21rQ2VJTGZzTXM2dnFvdnFqV0NsRnNKcEJjc2x1WUhXRjdiQkoxbjRSd2crQVRFb3BZNElnR3Y2WnZ3YytBOXIrQVQyaHFwb1NrWW9BbCtBTll3Z3NsT2Y5c0plMFYrVEE5WVkvVWxhQm1QUFRkMC8vcjl3dmNlUFdaa1BqS29BQy96VU5oZkRiaDRMVjhHSHMzbHlYMlhvbUwvTE5jOEpZenlJYURFaEdRdmVvUGhoL3RyMWc9PSIsIk1JSURNekNDQWh1Z0F3SUJBZ0lVU09FalRmLy95cVJmUFc3UXE4cXRJeUNyQWc4d0RRWUpLb1pJaHZjTkFRRUxCUUF3THpFdE1Dc0dBMVVFQXd3a1dYVmlhV052SUVaSlJFOGdVbTl2ZENCRFFTQlRaWEpwWVd3Z05EVXdNakF6TlRVMk1DQVhEVEkwTURVd01UQXdNREF3TUZvWUR6SXdOakF3TkRNd01EQXdNREF3V2pBdk1TMHdLd1lEVlFRRERDUlpkV0pwWTI4Z1JrbEVUeUJTYjI5MElFTkJJRk5sY21saGJDQTBOVEF5TURNMU5UWXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFDZHZsMjd3Mmd1MWZQWGVFRmJJZHF4MEJhbHZWRFZXclFQSjdIcXZpdUV0WkhseFNMeFNGdGNYcFRvbHZMdm9mOGY0dE1lclFUa1ZHemNtWXptMUVCVDRJSnVNbW9FcWZrRUVoV3BzQURNRnJqWmtxbFpZOUVxeFF6TG9WRUVvbkU1b0d4U2RWQ3hDY0xJYWNrcHlSL0NDWHZqMUJ0L2hUZ0U5aFRsRjRwUnF4TWt4M3BsRjd5OGREWmxSSFdzN3ZibmhtQkNHZUkwWlBFUTZubDJtQ2cycjc0YWRGMnU2SzlyckxmaEJDM1FMRThFUHJncVVzSStoa3VxMnRLNE0yU01PcDh1VVZWa3FVZXUzaDBrcjNXVkkwVzAycGtnck9naUZLTEZOa1NyYlloZGpNQkRqNWl6bXFmYzl4SlJLb0RYNjEycWQ4WkdWSHBUNUFZRlgrMWhBZ01CQUFHalJUQkRNQjBHQTFVZERnUVdCQlRaeVU1RGlRL2EyVUVnRTdxQkswemhJc1JOUmpBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQU1BNEdBMVVkRHdFQi93UUVBd0lCQmpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQVh2bkI0U0x1VUpmWU1TVkdBaHNzTC9TbVdsaTNGU2NjZ3h5ZHZLbEFDY2lkSUlXS1FxYTNxL1FTVUVRekM5RGdFZk1ncjdpQzFCa1RaYklMYm9WNlVaNWtuTnN2akVaV3VNZW9nSjh0Z1pzMWhWdkt3Wml6d0orbUVjbXNqaElyQll1b0wxVDZ5ck9KdktGZzFqditDeTRad0E5QnBrL1YzVU9pcjFWeUs4ZEN0eUh1NnZmb3NvdEFkWXg4RkF1UjI0M2dSVE1WNkp4OEpkaWcySkRJQVFNbHpWZURwU1VIWC9LMkhYUkh4SHdmZ2piZ1VqakJ1LzcycjhPZmVoeWh6SFhJM0s4Q0ZGZGZsTys4bkVPSkszeThGMWl2Z1M1dU4vOFNtY1l3L1NUUVl3aHJ4UHV3ejNuUDhiYU11bTRCQjJublltcEI2MHNYM2JsNWs4UVVTdz09IiwiTUlJRFNEQ0NBakNnQXdJQkFnSVVEcUVSdys0Um5HU2dneGdVZXdKRkVQRFJaM1l3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRREk3WG5IK1p2RHdNQ1FVOE04WmVWNXFzY3VibHZWWWFhUnQzWWJheG45Z29kTHg1c3dIMGxYcmRnamg1aDdGcFZnQ2dZWVg3RTRibDF2YnpVTGVtck1XVDhOM1dNR1VlOFFBSmJCZWlvVjdXL0UraFRaUC8wU0tKVmEzZXdLQm82VUxlTW5mUVpEclZPUkFrOHdUTHEydjVMbGo1dk1qN0p0T290S2E5SjduSFM4a0xtelhYU2FqMFN3RVBoNU9BWlVUTlY0enMxYnZvVEFRUVdyTDQvSjlRdUt0NldDRkU1blVOaVJRY0ViVkY4bWxxSzJieDJ6Nm9rVmx0eURWTEN4WWJwVVRFTHZZMXVzUjNEVEdQVW9JQ2xPbTRjcnB3bkRSTFZIdmpZZVBHQkIvL3BFeXp4QS9nY1NjeGp3YUgxWlV3OWJuU2JIeXVyS3FiVGExS3ZqQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJUcXQwS1FuZ3g3WkhyYlZId0R1bnhPbjlpaFlUQWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQXFRYUNXTXhUR3FWVlg3U2s3a2tKbVV1ZVRTWUt1VTYrS0JCU2d3SVJubHc5SzdIZTFJcHhaMGhkd3BQTmlrS2ptY3lGZ0ZQemhJbXdISmd4eHVUOTBQdzN2WU9kY0pKTmt0RGczNVBYT2Z6U24xNWNGQXgxUk8wbVBUbUliOGRYaUVXT3B6b1h2ZHdYRE00MVphQ0RZTVQ3dzRJUXRNeXZFN3hVQlpxMmJqdEFucS9ORFVBN2JlNEg4SDNpcEMrLytOS2xVcmNVaCtqNDhLNjdXSTB1MW02RmVRdWVCQTduMDZqODI1cnFEcXNhTHM5VGI3S0FIQXc4UG1yV2FOUEcya2pLZXJ4UEVmZWNpdmxGYXdwMlJXWnZ4clZ0bjNUVjJTQnh5Q0pDa1hzTkQwNWRDRXJWSFNKSXMrQmR0VFZOWTlBd3R5UG1ueWIwdjRtU1R6dldkdz09Il0sImljb24iOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJpY29uRGFyayI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsInByb3ZpZGVyTG9nb0xpZ2h0IjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwicHJvdmlkZXJMb2dvRGFyayI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzFfUFJFIiwiRklET18yXzEiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwibGFyZ2VCbG9iS2V5IiwiY3JlZEJsb2IiLCJtaW5QaW5MZW5ndGgiXSwiYWFndWlkIjoiNTgyNzY3MDliYjRiNGJiM2JhZjE2MGVlYTk5MjgyYTciLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJsYXJnZUJsb2JzIjp0cnVlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6dHJ1ZSwiYWx3YXlzVXYiOmZhbHNlfSwibWF4TXNnU2l6ZSI6MTI4MCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0Ijo4LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjEyOCwidHJhbnNwb3J0cyI6WyJ1c2IiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotOH0seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTM1fV0sIm1heFNlcmlhbGl6ZWRMYXJnZUJsb2JBcnJheSI6MTAyNCwibWluUElOTGVuZ3RoIjo2LCJmaXJtd2FyZVZlcnNpb24iOjMyOTQ3NCwibWF4Q3JlZEJsb2JMZW5ndGgiOjMyLCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6MSwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjEwMH19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTAyLTAxIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NCwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZdWJpS2V5IEJpbyBTZXJpZXMgLSBNdWx0aS1wcm90b2NvbCBFZGl0aW9uIDFWREpTTiIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjUwMjAxMDA1IiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMDgtMTIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc0LCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ill1YmlLZXkgQmlvIFNlcmllcyAtIE11bHRpLXByb3RvY29sIEVkaXRpb24gMVZESlNOIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNDA4MTIwMDMiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0wOC0xMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzR9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDItMDYifSx7ImFhZ3VpZCI6IjdkMmFmYWRkLWJmNmItNDRhMi1hNjZiLWU4MzFmY2ViOGVmZiIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiN2QyYWZhZGQtYmY2Yi00NGEyLWE2NmItZTgzMWZjZWI4ZWZmIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlRhZ2xpbyBDVEFQMi4xIEVQIn0sImRlc2NyaXB0aW9uIjoiVGFnbGlvIENUQVAyLjEgRVAiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MjMwOCwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9LHsibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjAsImJsb2NrU2xvd2Rvd24iOjB9fSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MTAsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6MCwiYmxvY2tTbG93ZG93biI6MH19XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDRHpDQ0FiYWdBd0lCQWdJSU5MN2M3NkRtMCs4d0NnWUlLb1pJemowRUF3SXdSREVMTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFvVENsUmhaMnhwYnlCTVRFTXhJREFlQmdOVkJBTVRGMVJoWjJ4cGJ5QkdTVVJQSUZKdmIzUWdRMEVnUlVORE1DQVhEVEkwTURZeU9EQXdNREF3TUZvWUR6SXdOVFF3TmpJM01qTTFPVFU1V2pCRU1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDaE1LVkdGbmJHbHZJRXhNUXpFZ01CNEdBMVVFQXhNWFZHRm5iR2x2SUVaSlJFOGdVbTl2ZENCRFFTQkZRME13V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVM0MVU4OGc4aXVIOFRtby9mNGhmQXZ5dTU5ZUw4Z0JLaGJiWVNGZUlqcklobXJabnFZdTJha29RYkcrR3BTTWt4WGtUVWRybHI3S3FzL21vVE5rRG1WbzRHUE1JR01NQXdHQTFVZEV3UUZNQU1CQWY4d0hRWURWUjBPQkJZRUZBd0hkWWhSL1UvVEk2Rk85Wk1ibW5yVUltd3lNRjBHQTFVZEl3UldNRlNoU0tSR01FUXhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFLRXdwVVlXZHNhVzhnVEV4RE1TQXdIZ1lEVlFRREV4ZFVZV2RzYVc4Z1JrbEVUeUJTYjI5MElFTkJJRVZEUTRJSU5MN2M3NkRtMCs4d0NnWUlLb1pJemowRUF3SURSd0F3UkFJZ0NsSkMyaVpGaFZzM3BwNm1rQ1IyWlhRblpVTDhLRURIZGY1WVp1cm12KzBDSUg0RXV1RFJBNFZYQ2h0ekl2bmdsakhXamdJMXZSRTdHSmphcDc3eG9aeEYiXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBRTBBQUFBZ0NBWUFBQUJYWS9VMEFBQUFDWEJJV1hNQUFBS3VBQUFDcmdGdDdESWFBQUFBR1hSRldIUlRiMlowZDJGeVpRQjNkM2N1YVc1cmMyTmhjR1V1YjNKbm0rNDhHZ0FBQ0hOSlJFRlVhSUh0bVg5d1hGVVZ4ei9mOXphYkxvRm9BU2xONmZCREJnc0lnd3FJL0ZSbkJFUUZ4eEdVWDFWSWs1YzBwVU5UTzhNZ3lYWWpJejhzZGJETmo5M0twRlFISVMwNjFWb0toVElPMEE0ZzZLQVZLT1dIaFZicWxEU2tQMEt5MlhmODQ3MnQ2MlozMlpBR1JxYmZtWjE5OTV4N3p6bjN1L2VkYys5ZG1Sa0hNRG80SDNVQS80ODRRTm9Id0FIU1BnQU9rUFlCOExFbHJhbXBhYXJuZVo4ZkQ5dVJVc3FFZEwwTFQ5eGk5c3IrY05iUTBIQ0ptVldWNmxOVFUvTzdlRHcrUEJZL3pjM05zZUhoNGMwRWk2SUNvTDYrL216Z1Rra3R5V1R5OGJIWUwwa2FzQ0lEcXhQU3N4Vnc1ODFtL3hxTE16UDc0L3YxMmJKbFN6V3dheXgrK3Z2N1k2N3JSb0Y5NUV1cUJjNEJMZ1RHajdTNFdYOUN1aFI0T0EwM0pxU3NhZzh3QUd3Q05qalEzV0syc1F4L3Faem5zNEJUSlQxblpzK0ZzcUZkdTNidEhkMFV5b09rM25CUCt1cFliWlVrYmJua0FzZFh3L245Y0E5d1phaXFDaitIQTJmNzBKeVE3Z1hteHMxNmk5bExKcE5lOXRuenZBWEFxV2EyS3BsTXpoL2pQTjRYZS9mdW5SK0x4VmJYMU5UOGFheTJpcEsyU0tyc2hSWEFKK2VZblFkYzFTWTliWEFYNE9aMUYvQkQ0S3lFZEZIY2JNdFlBOXZmV0xaczJSN0crRnBtVVpTMFh2Z2w4RTFnWHg1ck5idTdUZHBrd2FxYlhHRFlOR0ROQXVtTUg1bnRHVzB3dGJXMWg3aXVlell3V2RJUmt2cDkzMStYU3FVMjVmWkxKQktSclZ1M2ZsblNOS0JDMG91Kzd3OERTTm9JRE9iYmJtcHFPamlUeVp6aXV1NWI3ZTN0YjJibHMyYk5PbXhvYU9neXgzRSs1ZnYrOWtna3NyS2pvMk5ucVRnTGJqa1MwbFhBTldGellxNnUxZXloU2pnWjZBWUtIVnhQM0FNL0wrVzBFT3JyNnkrS1JDTC9sclJHVWpkd2g1bDFTdHJZME5Cd1NiYWY1M21UdDIzYjlyeWt0Y0FpWUtHWlBTUnBiU2o3UVNINzZYUzYzY3pXRHc4UFg1YVZOVFkybnBOT3B6ZEp1c2ZNYnBmVW5jbGtYcXF2cnoraFZLd2pTRXRKRmNEdE9hSUpZVzdiaDV2TWRzYk5yaGRjQkx4ZXdPNzF0MG9ubG5JOEloREhxUUo2eld5Rm1TMHlzNFhBbTBERXpHYmxkRjBNbkdKbVR3SEh1NjQ3RFhnQnlBQUp4M0h1TDJML2tOeTI1M2tIK2I3L0FIQW84QUJCZXRrSUhDSHBqcEt4NWd2ZWhvdUJxYm15MStHZ1FvTmJ6ZFllQ2ljQ0hyQTVSK1Ztb0xHVTQzejA5dmF1VENhVFUxS3AxT1dwVkdwMktwV2FLK21HVUgwMHdQVHAwNnVBU3dFY3g3a3htVXkrMnRIUjhiS2t1d0RYekE3cDdPeDhveHgvWm5ZcE1BWFlXbE5UYzAweW1ieFgwcHhRZlhGemMzT3MyTmdScEZtd2o4bVg3ZXVYa081cmszNjhTS29FdU1Gc01HNldPaW5JWjk4QWxoUGtsSytWRTN3V1BUMDltWHhaSnBQWkhqNUdBYXFxcW80bHlNTTJPRGo0OTJ3L1NWc0FITWU1b0Z4L2tzNFBIeC9QYnFaZDE5MFF5aWJzM3IxN2F1R1JoUXZCaU5kSzRPYzBUek80c2hlbUo2VGF1Tm1UQUplYlpZRFZ3T29GVXRVQWZMYmNDZVNpcnE1dUVuQ3k2N3F1NHpqUlhGMG1rNGtvMkN2NlM1Y3VIZXp1N3M3S0Q1YUVqZTV5OE5NQWt2WVZoZmIyOXQyZTV3MEFNY2R4RGlzMnNCQnBJNDQ1QTBHK3lDSzd3ejBCZVBpbjBuRTNtMjNQN1I5V3pxY1RVZ1E0SHpqZGdRM1RZSDFJYmtGNG5qZkRjWndPb0tMUS9DVzlSVkI4M0Jrelprd0IzZ3JscDRaZEN1WFhncEJVSGZwNE4wKzFCNGo1dmo4cTB2cnkyZ1lNNWJUVDRmZG1RVU0rWWNzbDl4L0JhM281UVg2OEQvaEppOW1PVXBQd1BPOXc0QmNFWjhVazhGc3pPMHRTSW95QlpESzV3L084WjRBdk9vN1RWbHRiZTBzMEdqMEt5QmFLOXoybVplSDd2aE91Mm5TZXlnRHlWM2t1Q3BIMk40TEpadkZ1M0N6M0FMMFNXQXAwdEpxOWx4WGVKaDJXaGhrV0ZJQ2pDZkxhdCtObWE4cVpoSmxkSUNrR2JOMjVjMmRUVDA5UHBxNnVyajhrYmQvcTlIMi95WEdjUjREcklwSElkYjd2WjhldjdPdnIrM1U1dmdBY3h4azBNd3BjSUh3aS9DNTYvaTFFMmhwZ1hrNzduVnhsM0t3bHQ1MlFxb0c1d0J3Z3Q2eTNsMHNZZ0tUSkFHYjJTcllvU01vV29IMmt1YTRiTmJPSXBCNHoyeXhwQU5pUVNxWFdqVEtuN1FoOVZHY0ZzMmZQcmlZc09vN2pGRDNWakNCdFBqdytIMTdrdndYaHRVSUR3OWV3Q1dnRjh0Ly9BZUJuWlljZklCMEdPeUVyY0YwM0dxNmtRWUNaTTJkT05MTlZ3TUdTbXJ1NnVyWm0rM1oxZFkzS21abHREcjgvbDVVTkRnNmVGejcyVFpvMHFlakJmZ1JwWm1adDBsd0xLaUhBbi9QN0pLVFRDRzRzemloaWQySGM3TzB5NDgvNmZTbXNnRi93UE8vY2dZR0J2OFJpc1RORDlYc0E2WFI2cXVNNGh3TDR2ditHNTNtYmdWZUF2enFPczZxenMvT1pVZmg3VE5JODROeTZ1cnF2bXRtcmp1TzBTa0xTOGxKM2VnV1BVYTFtRHdIckFBVFBadVdTMUJZNGVwYmloSzArQ2VMbEJwOUZYMS9mazhEekJJWGdpVmdzdGh1NEkvVGJDN0JreVpJWHpPd1NnbndqNERQQXQ0QVczL2VmOWp6djduTDlUWmt5WlMyd0hxaDBIT2N4MTNYZmtIUW04Rm9tazJrcE5iYm9kYmZnRVFBM1hHa0pxWG8rUEdod0o4VVArbzhBM3l1MXJjakM5LzNWa200Q2ZnL0I1cmFpb3VKQ1NXM0FnNUpXbWRrOXdOWFJhUFM3RVB4b3dMVkFsYVNyYTJwcW9wbE01aGd6bTBld2w1emQyTmg0VENhVDJSdmFucFBqNzFlaDdGR0FlRHp1VjFaV2Z0M001cG5aTWpOYkthbkZkZDNUbHl4WjhqODdnaEhjRk11ZGJaSm5rSWliSFptUWppSjRYVThwWW1lWDRMWWpZVUc5V1g0SjMyK29yNi8vdnFUZkFQY25rOGtyYzNXZTU3ME1uT0E0enJtZG5aMVBqVmNNVU9KcXlJS0s5V2pZM0FIY1NuQlZkQkxCelVjZndRRjNIYkNpMVd6M2VBWUtJT2tyQUdhMkxWZnVlZDQwZ20yT3VhNzcwbmpIVWVybXRsckJub3g0c0IvckNUOGZKYllCU0dwc2FHaVlZR2IvSkxoY3VCYW9CSll2WHJ6NG5WSUc5Z2RLa1JZeCtNTjRCekFhREEwTjNSMk5ScjlEY0UwK00wZGxrbnFpMFdqZGh4RkgwWngycTNUc0xXWmxuK1UrTEZ4eHhSWHV4SWtUdnlUcE9ETTdFdGd1YVgxWFY5ZCsrWnV4SEJRbDdRQ0s0MlA3RC90NDRqK0l3VC8xVE1rejdnQUFBQUJKUlU1RXJrSmdnZz09IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiRklET18yXzEiLCJGSURPXzJfMCJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiY3JlZEJsb2IiLCJsYXJnZUJsb2JLZXkiLCJtaW5QaW5MZW5ndGgiLCJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiI3ZDJhZmFkZGJmNmI0NGEyYTY2YmU4MzFmY2ViOGVmZiIsIm9wdGlvbnMiOnsicmsiOnRydWUsImNsaWVudFBpbiI6dHJ1ZSwidXAiOmZhbHNlLCJwaW5VdkF1dGhUb2tlbiI6ZmFsc2UsImxhcmdlQmxvYnMiOnRydWUsImVwIjp0cnVlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWV9LCJtYXhNc2dTaXplIjoxMDI0LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhTZXJpYWxpemVkTGFyZ2VCbG9iQXJyYXkiOjIwNDgsImZpcm13YXJlVmVyc2lvbiI6MjMwOCwibWF4Q3JlZEJsb2JMZW5ndGgiOjEyOH19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTA2LTE0IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIzMDgsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiVGFnbGlvIENUQVAyLjEgRW50ZXJwcmlzZSBTbWFydGNhcmQiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI0MDYxNDAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTA2LTE0IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIzMDh9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjQtMDgtMDgifSx7ImFhZ3VpZCI6IjMwYjUwMzVlLWQyOTctNGZmMS0wMjBiLWFkZGM5NmJhNmE5OCIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiMzBiNTAzNWUtZDI5Ny00ZmYxLTAyMGItYWRkYzk2YmE2YTk4IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ik9uZVNwYW4gRElHSVBBU1MgRlgxLUMifSwiZGVzY3JpcHRpb24iOiJPbmVTcGFuIERJR0lQQVNTIEZYMS1DIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfSx7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJpc0ZyZXNoVXNlclZlcmlmaWNhdGlvblJlcXVpcmVkIjp0cnVlLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJzb2Z0d2FyZSJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNFekNDQWJpZ0F3SUJBZ0lFQVRVQkZUQUtCZ2dxaGtqT1BRUURBakJuTVFzd0NRWURWUVFHRXdKVlV6RVFNQTRHQTFVRUNoTUhUMjVsVTNCaGJqRWlNQ0FHQTFVRUN4TVpRWFYwYUdWdWRHbGpZWFJ2Y2lCQmRIUmxjM1JoZEdsdmJqRWlNQ0FHQTFVRUF4TVpUMjVsVTNCaGJpQkVTVWRKVUVGVFV5QkdXREV0UXlCRFFUQWdGdzB5TlRBNU1ERXhNak0wTVRGYUdBOHlNRFUxTURrd01qRXlNelF4TVZvd1p6RUxNQWtHQTFVRUJoTUNWVk14RURBT0JnTlZCQW9UQjA5dVpWTndZVzR4SWpBZ0JnTlZCQXNUR1VGMWRHaGxiblJwWTJGMGIzSWdRWFIwWlhOMFlYUnBiMjR4SWpBZ0JnTlZCQU1UR1U5dVpWTndZVzRnUkVsSFNWQkJVMU1nUmxneExVTWdRMEV3V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVR2TXNEVE9qT0RWaU1UK0NjcW81RU84THFjeisxcTYyall5bmlzVUxVZDYvWXlNTTliMjNNNVNHb2ZKdEJydE11MDd3ejhBRm9ERVhHbkhGWDlaTGw5bzFBd1RqQWRCZ05WSFE0RUZnUVV1RmxQNGNHU2dSYmlFNnBtQTlSZFhZcXl5N0l3SHdZRFZSMGpCQmd3Rm9BVXVGbFA0Y0dTZ1JiaUU2cG1BOVJkWFlxeXk3SXdEQVlEVlIwVEJBVXdBd0VCL3pBS0JnZ3Foa2pPUFFRREFnTkpBREJHQWlFQWdoeHp6Z3FWVWNuZE8rZGE5VE15ZVZnallCK0l2QmdWd1c4LzUrUm9kQXNDSVFDaWZ1L2MvM0UrbXBwY2VEQU9hRjZkVSswS0NhRU9SQUtZRlEzcmtaQXBJQT09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQVpBQUFBSHFDQU1BQUFBZDJPaFpBQUFBQkdkQlRVRUFBTEdQQy94aEJRQUFDa2xwUTBOUWMxSkhRaUJKUlVNMk1UazJOaTB5TGpFQUFFaUpuVk4zV0pQM0ZqN2Y5MlVQVmtMWThMR1hiSUVBSWlPc0NNZ1FXYUlRa2dCaGhCQVNRTVdGaUFwV0ZCVVJuRWhWeElMVkNraWRpT0tnS0xoblFZcUlXb3RWWERqdUg5eW50WDE2NyszdCs5Zjd2T2VjNS96T2VjOFBnQkVTSnBIbW9tb0FPVktGUERyWUg0OVBTTVRKdllBQ0ZVamdCQ0FRNXN2Q1p3WEZBQUR3QTNsNGZuU3dQL3dCcjI4QUFnQncxUzRrRXNmaC80TzZVQ1pYQUNDUkFPQWlFdWNMQVpCU0FNZ3VWTWdVQU1nWUFMQlRzMlFLQUpRQUFHeDVmRUlpQUtvTkFPejBTVDRGQU5pcGs5d1hBTmlpSEtrSUFJMEJBSmtvUnlRQ1FMc0FZRldCVWl3Q3dNSUFvS3hBSWk0RXdLNEJnRm0yTWtjQ2dMMEZBSGFPV0pBUFFHQUFnSmxDTE13QUlEZ0NBRU1lRTgwRElFd0RvRERTditDcFgzQ0Z1RWdCQU1ETGxjMlhTOUl6RkxpVjBCcDM4dkRnNGlIaXdteXhRbUVYS1JCbUNlUWluSmViSXhOSTV3Tk16Z3dBQUJyNTBjSCtPRCtRNStiazRlWm01Mnp2OU1XaS9tdndieUkrSWZIZi9yeU1BZ1FBRUU3UDc5cGY1ZVhXQTNESEFiQjF2MnVwV3dEYVZnQm8zL2xkTTlzSm9Gb0swSHI1aTNrNC9FQWVucUZReUR3ZEhBb0xDKzBsWXFHOU1PT0xQdjh6NFcvZ2kzNzIvRUFlL3R0NjhBQnhta0NacmNDamcvMXhZVzUycmxLTzU4c0VRakZ1OStjai9zZUZmLzJPS2RIaU5MRmNMQldLOFZpSnVGQWlUY2Q1dVZLUlJDSEpsZUlTNlg4eThSK1cvUW1UZHcwQXJJWlB3RTYyQjdYTGJNQis3Z0VDaXc1WTBuWUFRSDd6TFl3YUM1RUFFR2MwTW5uM0FBQ1R2L21QUUNzQkFNMlhwT01BQUx6b0dGeW9sQmRNeGdnQUFFU2dnU3F3UVFjTXdSU3N3QTZjd1IyOHdCY0NZUVpFUUF3a3dEd1FRZ2JrZ0J3S29SaVdRUmxVd0RyWUJMV3dBeHFnRVpyaEVMVEJNVGdONStBU1hJSHJjQmNHWUJpZXdoaThoZ2tFUWNnSUUyRWhPb2dSWW83WUlzNElGNW1PQkNKaFNEU1NnS1FnNllnVVVTTEZ5SEtrQXFsQ2FwRmRTQ1B5TFhJVU9ZMWNRUHFRMjhnZ01vcjhpcnhITVpTQnNsRUQxQUoxUUxtb0h4cUt4cUJ6MFhRMEQxMkFscUpyMFJxMEhqMkF0cUtuMFV2b2RYUUFmWXFPWTREUk1RNW1qTmxoWEl5SFJXQ0pXQm9teHhaajVWZzFWbzgxWXgxWU4zWVZHOENlWWU4SUpBS0xnQlBzQ0Y2RUVNSnNncENRUjFoTVdFT29KZXdqdEJLNkNGY0pnNFF4d2ljaWs2aFB0Q1Y2RXZuRWVHSTZzWkJZUnF3bTdpRWVJWjRsWGljT0UxK1RTQ1FPeVpMa1Rnb2hKWkF5U1F0SmEwamJTQzJrVTZRKzBoQnBuRXdtNjVCdHlkN2tDTEtBckNDWGtiZVFENUJQa3Z2SncrUzNGRHJGaU9KTUNhSWtVcVNVRWtvMVpUL2xCS1dmTWtLWm9LcFJ6YW1lMUFpcWlEcWZXa2x0b0haUUwxT0hxUk0wZFpvbHpac1dROHVrTGFQVjBKcHBaMm4zYUMvcGRMb0ozWU1lUlpmUWw5SnI2QWZwNSttRDlIY01EWVlOZzhkSVlpZ1pheGw3R2FjWXR4a3ZtVXltQmRPWG1jaFVNTmN5RzVsbm1BK1liMVZZS3ZZcWZCV1J5aEtWT3BWV2xYNlY1NnBVVlhOVlA5VjVxZ3RVcTFVUHExNVdmYVpHVmJOUTQ2a0oxQmFyMWFrZFZidXBOcTdPVW5kU2oxRFBVVitqdmwvOWd2cGpEYktHaFVhZ2hraWpWR08zeGhtTklSYkdNbVh4V0VMV2NsWUQ2eXhybUUxaVc3TDU3RXgyQmZzYmRpOTdURk5EYzZwbXJHYVJacDNtY2MwQkRzYXg0UEE1Mlp4S3ppSE9EYzU3TFFNdFB5MngxbXF0WnExK3JUZmFldHErMm1MdGN1MFc3ZXZhNzNWd25VQ2RMSjMxT20wNjkzVUp1amE2VWJxRnV0dDF6K28rMDJQcmVla0o5Y3IxRHVuZDBVZjFiZlNqOVJmcTc5YnYwUjgzTURRSU5wQVpiREU0WS9ETWtHUG9hNWhwdU5Id2hPR29FY3RvdXBIRWFLUFJTYU1udUNidWgyZmpOWGdYUG1hc2J4eGlyRFRlWmR4clBHRmlhVExicE1Ta3hlUytLYzJVYTVwbXV0RzAwM1RNek1nczNLellyTW5zampuVm5HdWVZYjdadk52OGpZV2xSWnpGU29zMmk4ZVcycFo4eXdXV1RaYjNySmhXUGxaNVZ2VlcxNnhKMWx6ckxPdHQxbGRzVUJ0WG13eWJPcHZMdHFpdG02M0VkcHR0M3hUaUZJOHAwaW4xVTI3YU1lejg3QXJzbXV3RzdUbjJZZllsOW0zMnp4M01IQklkMWp0ME8zeHlkSFhNZG14d3ZPdWs0VFREcWNTcHcrbFhaeHRub1hPZDh6VVhwa3VReXhLWGRwY1hVMjJuaXFkdW4zckxsZVVhN3JyU3RkUDFvNXU3bTl5dDJXM1UzY3c5eFgyciswMHVteHZKWGNNOTcwSDA4UGRZNG5ITTQ1Mm5tNmZDODVEbkwxNTJYbGxlKzcwZVQ3T2NKcDdXTUczSTI4UmI0TDNMZTJBNlBqMWwrczdwQXo3R1BnS2ZlcCtIdnFhK0l0ODl2aU4rMW42WmZnZjhudnM3K3N2OWovaS80WG55RnZGT0JXQUJ3UUhsQWIyQkdvR3pBMnNESHdTWkJLVUhOUVdOQmJzR0x3dytGVUlNQ1ExWkgzS1RiOEFYOGh2NVl6UGNaeXlhMFJYS0NKMFZXaHY2TU13bVRCN1dFWTZHendqZkVINXZwdmxNNmN5MkNJamdSMnlJdUI5cEdaa1grWDBVS1NveXFpN3FVYlJUZEhGMDl5eldyT1JaKzJlOWp2R1BxWXk1Tzl0cXRuSjJaNnhxYkZKc1kreWJ1SUM0cXJpQmVJZjRSZkdYRW5RVEpBbnRpZVRFMk1ROWllTnpBdWRzbWpPYzVKcFVsblJqcnVYY29ya1g1dW5PeTU1M1BGazFXWkI4T0lXWUVwZXlQK1dESUVKUUx4aFA1YWR1VFIwVDhvU2JoVTlGdnFLTm9sR3h0N2hLUEpMbW5WYVY5ampkTzMxRCttaUdUMFoxeGpNSlQxSXJlWkVaa3JrajgwMVdSTmJlck0vWmNka3RPWlNjbEp5alVnMXBsclFyMXpDM0tMZFBaaXNya3cza2VlWnR5aHVUaDhyMzVDUDVjL1BiRld5RlROR2p0Rkt1VUE0V1RDK29LM2hiR0Z0NHVFaTlTRnJVTTk5bS91cjVJd3VDRm55OWtMQlF1TEN6MkxoNFdmSGdJcjlGdXhZamkxTVhkeTR4WFZLNlpIaHA4Tko5eTJqTHNwYjlVT0pZVWxYeWFubmM4bzVTZzlLbHBVTXJnbGMwbGFtVXljdHVydlJhdVdNVllaVmtWZTlxbDlWYlZuOHFGNVZmckhDc3FLNzRzRWE0NXVKWFRsL1ZmUFY1YmRyYTNrcTN5dTNyU091azYyNnM5MW0vcjBxOWFrSFYwSWJ3RGEwYjhZM2xHMTl0U3Q1MG9YcHE5WTdOdE0zS3pRTTFZVFh0Vzh5MnJOdnlvVGFqOW5xZGYxM0xWdjJ0cTdlKzJTYmExci9kZDN2ekRvTWRGVHZlNzVUc3ZMVXJlRmRydlVWOTlXN1M3b0xkanhwaUc3cS81bjdkdUVkM1Q4V2VqM3VsZXdmMlJlL3JhblJ2Yk55dnY3K3lDVzFTTm8wZVNEcHc1WnVBYjlxYjdacDN0WEJhS2c3Q1FlWEJKOSttZkh2alVPaWh6c1BjdzgzZm1YKzM5UWpyU0hrcjBqcS9kYXd0bzIyZ1BhRzk3K2lNbzUwZFhoMUh2cmYvZnU4eDQyTjF4eldQVjU2Z25TZzk4Zm5rZ3BQanAyU25ucDFPUHozVW1keDU5MHo4bVd0ZFVWMjlaMFBQbmo4WGRPNU10MS8zeWZQZTU0OWQ4THh3OUNMM1l0c2x0MHV0UGE0OVIzNXcvZUZJcjF0djYyWDN5KzFYUEs1MDlFM3JPOUh2MDMvNmFzRFZjOWY0MXk1ZG4zbTk3OGJzRzdkdUp0MGN1Q1c2OWZoMjl1MFhkd3J1VE54ZGVvOTRyL3krMnYzcUIvb1A2biswL3JGbHdHM2crR0RBWU0vRFdRL3ZEZ21IbnY2VS85T0g0ZEpIekVmVkkwWWpqWStkSHg4YkRScTk4bVRPaytHbnNxY1R6OHArVnY5NTYzT3I1OS85NHZ0THoxajgyUEFMK1l2UHY2NTVxZk55NzZ1cHJ6ckhJOGNmdk01NVBmR20vSzNPMjMzdnVPKzYzOGU5SDVrby9FRCtVUFBSK21QSHA5QlA5ejduZlA3OEwvZUU4L3N0UnpqUEFBQUFJR05JVWswQUFIb21BQUNBaEFBQStnQUFBSURvQUFCMU1BQUE2bUFBQURxWUFBQVhjSnk2VVR3QUFBTUFVRXhVUlFBQUFQLy8vekpKV21kNmkyWjdpMlo2aXpOSldpc3JLeW9yS3YzNy9Cd2JIQ1lsSmg0Y0h4MGNIM2QyZVNRaktDWWxLakF2TkRnM1BHVmthVG80UXp3NlJ6czVSVUpBVFQ0OFNEVTBQemczUWpjMlFETXpQVFUxUHlNaktDVWxLaWNuTENvcUx6VTFPeXdzTVRZMlBERXhOaWdvTERNek9EbzZQenc4UVRzN1FFRkJSajgvUkVWRlNpNHVNVE16TmxsWlhqUTBOenc4UHlnb0tpWW1LQ3dzTGlzckxTb3FMQnNiSEQ4L1FXeHNiMU5UVlY5ZllkYlcyamMzT04vZjR1Ym02UDM5L3ZYMTl2SHg4dXpzN1VsS1VzREJ5RWRJVGs1UFZNek4waVFsS1NNa0tDVW1LaVluS3k4d05EUTFPYkd6dktLbHJ5TWtKeUlqSmlVbUtTY29LeWtxTFN3dE1EZzVQRDArUVNvc01YMkNqNUNWb0NVbkt5WW9MQjRmSVI4Z0lpRWlKQ01rSmlRbEp5WW5LUzB1TUZWV1dHMTFoQ0ltTERjN1FTY3NNamsrUkNndU5WMXJlaXN6T3lveE9FQkhUakl6TkVaSFNFMU9UMGhKU3YzKy8wdGRiVlJsZFY1d2dHWjVpamxPWHpGQ1VDczNRV3FBazJCMGhXSjJoMnVCazJSNGlXVjVpbWg4aldkN2pHcCtqMmw5ampCSFdETkxYVEZJV1RaTVhTNUFUajFTWWkwOFNFTlhaMlY2aW1kN2l5NDNQaTFHVnk5SVdUTk1YaTlIVnpKTFhERkpXakpKV1M1RFVqTktXalJMV3laQ1V5aERWQ3BGVmg0K1VDTkJVaHNjSERzOVBTRWlJakV5TWk0dkx5MHVMaW9yS3o0L1B6bzdPems2T3Z2OC9DY3FLUjhoSUNVbkppUW1KU2dxS1NjcEtDWW9KeXd1TFNzdExDb3NLeWtyS2pJME14MGVIUndkSENNa0l5RWlJUjhnSC8zKy9Tb3NLUUlDQVFVRkJBZ0lCd29LQ1I0ZUhCOGZIUndjR3hzYkdpUWtJeUlpSVNBZ0h5b3FLU2NuSmlZbUpTNHVMUzB0TEN3c0svLy8vZjM5L0J3Ykd5UWpJeUloSVNBZkh5b3BLU2duSnlZbEpTNHRMU3dySy8vOS9mLysvdnY3Ky9yNit2ZjM5MFJFUkVKQ1FrRkJRVDA5UFR3OFBEczdPelkyTmpBd01DOHZMeTR1TGlvcUtpa3BLU2dvS0NVbEpTTWpJeUlpSWlFaElSOGZIeDRlSGhzYkd4b2FHaGdZR0JjWEZ4WVdGaE1URXhFUkVROFBEd3dNREFnSUNBY0hCd0lDQXYvLy80SHNIQlVBQUFFQWRGSk9VLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL3dCVDl3Y2xBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFDMEYwbEVRVlI0bk95OWVaemZWWDN2LzN5Zk9kbjNrQUVrRUhHQnNBV3hzZ3dUVkZacmY3YWlTVysxNnUybHZkVis5WTVLcjFnYmFaZ1pjbW5haXBYS1ZMNFY3OVhiYTYyOXZaTzYzcXNpSUV1R2thVWlpQ1RnUmlBWW1FRElaTEtmT2UvZkgrOXp6dWZ6VFZpR2JDU1BCMGZKZkwrZjcyYzk3ODk3ZjczZlI1U1h4OEUwM0V0OUF5K1AxdkV5UVE2eThUSkJEckx4TWtFT3N2RXlRUTZ5OFRKQkRyTHhNa0VPc3ZFeVFRNnk4VEpCRHJMeE1rRU9zdkV5UVE2eThUSkJEckx4TWtFT3N2RXlRUTZ5OFRKQkRyTHhNa0VPc3ZFeVFRNnk4VEpCRHJMeE1rRU9zdkV5UVE2eTRWL3FHOWlEOGNRdjU2K2V2M3IrNmszVE5wMSs5K2wzdytuQWFqYWR2bm8rc0hyKzNkUG1wejN2bmdhYlR1ZnUwN2tiKzlYOTR2VXYzWTJQWmNpaGhqcjVwNU9QUHZZSDlRMVRHYWwvRzJIcUNMc08yenFWa2FrYzdtUjA5bjYreDcwWmh4cEJKZ0tQT21BbHNGQkZCVVZXTGx5NTBQNnExSGEybjlPdm91dHBoNkhUSDczelRhdFBlMGx1Zml6akVDUEl2VHAzTFoyUGdvSW9Bd3NWR1dvSGxhRTVNdFN1eU1yTzlYTUVGVmpadWI1OTVVSlVnSlVMR1pvanFLajhLcHc0ZU42TnYvVlNQOGx6alVPTElJOHYrcnF3OW14UnNFa0gxc3lETmZNVUFYMTBuaUxvby9OVVFCRmd6VEYyNktNQXpOTkhuenJjdGZtMjhTL1JFN3pnT0xRSThycnZLZks0bksySWl0SEFLR04vbEVRcThyOElpcVJmVGI2dHZlM2NOamYrMis5NGFaL2tPY2VoWldWOVFvRzVkK2tnZE9oZ3kwOGRERUxISFIwTTBwSC9YLzFuTzNmYzBURjQ5c3IzUGFhcUY3d1V0eitXY1VoeHlKdTNmcFFMNU1ZVHo2YWE3elE2QmhOTjZodkszOXFPVE5nYzNFbWVpUWZtbGwvME9LUWN3NjhBTitvRk9qallBUjEwUUVjSDBOSFJBWmttK2RzZ2RIVFFrVGFrLzlQUjBkRU8zTmRpakIxVTQ1RGlrSC90UCtvTlhDQ1A3OUhCV2FuTWZTU2MrTUJ2eUlSOWVtZjdiaHhTSE5MMzJlZi8vWGxmZTdWWFQrZE5QWjZmN2JOYjJ1ZmprQ0lJRndFMzZsemdXV2UvY1B2elVXWU5jTVRCS3hjT0xZSUFYSUErRHJYWmY1YngvUFA5RUlzT1doVnlhQkhrcS9aSGpucjJuNTlOdCt3Mjh6S1A0Nys1NG1VTzJTZmpiZmJudVdiejJlaTAyNzY2aG5uNzdvNzIvVGlrSE1OelQ3OGJicnhBNW81bDUyZXpiRlZZTys5SDk5d0YzUGJHZlh4eisyZ2NVaHpDWHdNWHRMNzF6eWw4bmsxTkNFRDdHL2J0VGUzYmNVZ1I1QTBBTjZZdmlSSlMvekxHOGR1aWRPNnp1OXEzNDVBU1dkeHdBMXlBUENhUG04SjQvRG5VKzY2amNuOGZQMHFIN3ZuVzRmdm45dmJGT0tRNEpBMmR5bEZqcEVRK2dteURIUVh0N2J6elpiTjMzNHkxd0kwaUQrZnZMNFlzUnlVaUNCeTVZdC9lMXI0Y2h4WkJBTkJub2NOWTN2Z2l0b2JPMkplM3M0L0hJVWlRRzNmZjlLSkNwRU93U01kRXdwZGlIRm9FRVlCbnliNitHSHFzc1JNZHJMNzZvVVVRTHVDQ2U4N2EyN2U3blNmMnpkM3NqM0dJRVFSNHczOTgvdC9Ia2kyNWI1L2N5WDRaaHhSQkx1Z1F1T0JmMW5hSW5IMjJpSnd0OWsvNnYzMmRlN1pVdy9ZNisremFodlVqSE16NWtFTXFZN2p1MkVkVTRQR3pCM2Y1b2VOWkFBL1A5ZVBSdndvbkhyWGUrYmI5YzQ5N093NHBEZ0ZBUkhhbGg4MS9SLzdXTWRqeXZYWHZLUUNEQjZ1TmRhaHhTSnVxd0ZycGVPRjlEYm4xTEpzZi9kVnJIbDcxZXpMdUlIMFZEeTJDK0tnWnVXaDN2Z3NvRGxRTVpKcGdjVklRZEFZK0ZYMzBqcU9DTzhuTHl5SnJuNHkxc0JaVTBnUUxLaGswS3FLcWlncWlSaGdGUld5YkdwMlVlUXVuQVdQejdWK0tjWWdSaENvZ1pSUW8wWGRCUlFxUElJcUlpb2dpa281SXd1REIrZnp5d04vNFdNZWhSaEFGQmtWUk1VWlJSUVJSMU5qQU5pTVlhNlN0Q2ZScjNIVGlhbDcxVWovR2M0OURqU0JDTnA4RUZJVTAyMlNwSkZsT2tXUWFramdLVlpGSE9hZ1Rob2NjUWJUNlkrcmNXQ0VOS2NvOS9hdUlTYlZjbjZBSE5jS0JReTFqbUlaS0xqMVFTZnFqbW4vN0VVa1ZDNmxzd2FTY0hzUlJ4VFFPTVE2WmUrTmoyVnpLSEpMTkpkWE1Ob2tkTkdzVCt5Slp2c0VKTDgzTmoya2NZZ1RoUWhFR1NmTXNxR3BTMkpxTnFXS0hHVlZVeFg1VklSbGNySG81WTdqUFJ1SUFtL3lzVUNUL0ltU254RDVJMXViNWFHVU56R2ZSQWI3ckZ6RU9NWUk4SmtDSFpQOVBrZ2xsSXN4c0svUE16UXhHa2srWUtuSUZqb0hWTC9GRFBPODR4QWh5dFAyUll1N211YWRZdDhuaVRmdEk4dHpOVlZFUXZ2eFMzZnlZeGlGR0VDQ0hiNU9LSU51K3FJcUtDQ0tTekYvSmxNdi9pTEJtNWZ2eXQ0TnlIR29FK1Q3UW9Wb0hMb3FtOENIWlZVVE5JMVExWlM2VkRRQUxtWC9DRVFkckpPdlFJOGlGNmE5UU5MZEZVU1FGR01rUnhVU3lyRHN3M21FZXJGNzF4TXNjc3ErR01wZEJNVFZ1d1JFdGtkN0taVmNwTmV3Z3Ftb0dzS0tzV1FrSGI2ejNrUFBVMTg1bExSMVNNM0JKY2lyRnM4eFZMMDBFU0UwNEtoZjltTWRlbWpzZjZ6aTBPRVRua256MDVCRnFqclpYcnJ2NWY4bmlyWGtrT2ZRSTg1Ly9JaS90T0xRSThpdmdhQWFUV3k1MVZXTGZMRVdTNlpEZGRra091MXFEbE5Vdnc0RDIxWGdWc0phT0t0NXVycUJJNmtWVEV0SlNjaURGQU1hczRUWEMvQk1PWWhqUW9VVVExaXJKRDBudnZqRkZVaGtweUd1N3BxWTBGc0JTVVJOeU1vOTdWcjhjT3RsblkyNU9VSlc4U0duVmxQb0NXWkJYelZtVW90dExoQXVZditvbHVmZXhqVU9NSUd1VFVxK25OYVRrRE1FeXVvVXc1cFVrSzB5U3NubkQ2azBySUw0azkvL0M0eEFqaUkya01CRFFOT3Rad1NkSnBnbU5rbDM1Sk5EU21MYUlPNTkrU2U3OGhjY2hSWkRCb3dGaE1PRjdUSjlyQ211SnFwaHJLTW4xeUh4VWN1MkZLQ3RnOUtWN2pPY2RoNVJqNkIrelJuMFdwNUlTd3FyU2dZWTZTZXlRT21SQ2RsNFNpZWEzblVUSDJYZS9SQS94QXVPUTRwQ05NdmY3UUlja2Jrak9CcGpHU01GM1ZFVU1jS0lrNndxeVJTYkFYZmNSYjMrcEh1SUZ4aUZGa0l1ZTVFTG1VdGxZbVMxeVhERmxFclBmcmpVR3lZa3F1R2YxdEo4ZHZLTGhVQ0xJZHRuK0dMcVd3WVRwa1J6RTFad1pvV1NzSk1WL3Rhb21MR25mK1VEYjVwZm9JVjVvSEVvRXVmWG5IVWNqbHNJVnpNOUxrTGljWkRmZUVJc3daa2RSNmo3OG95dmZ3S1pGZXNmL2V3a2Y1UG5Hb1lSK2YyenlVUU5IcndVNVd5dEJsUDhXU0c5eUU5TVc4OUpycnVPajdwV1B0am52ZGt4OVNaL2xPY2VoeENFRHQxVHhkazNJVWNPMkozVWgyU3VuQUxmU0RzbFhVV1hlU2xhRDZzczlGL2QrREI0RDlYUzQxRUpYUXZaSWFyQWYyeUhadnRrVVhnaXJWb2djckg3SW9VU1FpNDQxZUVOSHpuL2tkdU9aQXpScjlnS0N6Mm85Vzc0b3lueEFibmxwbnVFRng2RkVrSGJwQUlUQmlrM01zZEFVdVpLa3ZpVVhUbWxPV3RWeWpBT3NaaEVzK3RwTDloelBPdzRscGY3NG1vazZkNjNLMlZXaUExby9TVXZjVVhMZjl4eE9FWlMxcHRRRGt3LzAvWTlwSEVvYzh2c1hkckFXWVRBbkNoTk9OSHVEcUNUbXlKRkhLU0RURkg1WEViN01ZNkRqMjErNkIzbStjU2dSNUpxdndOd2N0RXAyckNpR3UxSk5Ua25KNE9iTXJSYUJaWnJrZmF1UEJ1dGJmaENPUTRnZzN6enFYWUFLSFNuTklhV0lMWVZJTklXcnhGQ01rQW1SS2tOTnhWdUNTczk3Q1IvbGVjWWhSSkN6am9XV3JFZUd4NldSOWJzeGpWbGhPUjZmbkphVW9qb0IwRHNPOVAyUGJSeENCUGtQS0R4VzhENGlLbGJUbWZOUVFIWUpwWEk5aEJxb1VYaFV2cng2MVVVUXovdTNsL0pobm5NY1FnVDU2Z0FKL2k3WnpzMzJiMG8rcVNZZ2J6WnhKWGtlU2JHSUt2TjRIOXdBeVBrdjNhTTh6emlFQ1BLblI2WGFLVU9kYURhMUpDbHRLVXhoY1VkekVxVXUwNEExSzVsL0FxQTgvQ3pYZU9uSHdab1cySDJzKzhYMzA2Y09LVXRONVZxUURJS0hhckVwS3IyUncxa0k4eEtVVk9KSkIvNFp4akFPSFE1NVYwMkI1eXh0aTA2SFd0WThKeElMSkNVbmV3RnJZS1lINTd0NDZCRGtEZHVzWFNKQU1XdE5VK2MyRFpJajc1Uk9RSnBnRUVtamlDcGZYcjNxVklnNnBwNUNCM3djUWdUNU05S1NoSU1GejJ1enJsa2dHY1M2UkgyemoyNUkwbHpBd1B2U2IvTG5CL0wyeHpvT0dZTDhzOXhqaTBPcVlYdFRXWWhrcDBSemtqQ2wweE1jTzVVbWFBbWRQS3FweGxEamUxK3FaM20rY2NnUTVGTVh3bzJ3TnIvOEtRRlNDeWRtVzRzQ0FKSXNza3BJV1BRWTNzY0paZ0k4OWRJOXpYT1BRNFlnMzdZL2N3MTFJdVo4cTNtSGtQQU0yT3luNWhwVmE0Y1NYelJwdGdvUTFELzUwanpLODQ1RGhpQnZqZkNIQUdzWnRHWk1rSW1RdWpTbFBKU2xRWEtxeXVDK0pWT0N3SHhXb0hxNER0endrajNOYzQ5RGhTQnZudkEzYjZqMXVjeUFINHZ3bHVZbXlTRE9leFRkcnRWUjVNWUJLMkxIeFFmazFsL2NPRlFJOGkvZkFMNDRpRkxJa2d1a3pJUXFKUWhhQzJ4VldmWGlpaWpNMzdRSW9aUFJIeDJFV0tCRGhDQy92dmx2Z0V1SzR5R2xLWURCZkV0MURqbkRMamtnWHhJa1puWTlDcXZQU0dpVXM3YStSSS96UE9NUUljanRYOCtmTEJLaXRUWW02YitNMWJJNjZjUW94VWNwclREbjZaZm5yMXFCSExIcWNJMXZmeW1lNWZuSElVS1E4RHRRd2VMU253b09VTU9MV3F4ZHFRVVZpNnRpWDk2MytvUVBvaXNlV29mZWNmQjE1VDg0QXpxN2psOS81cHczUUhFM05EZVRrK1JjbE1vRExjVFI0aE5XMkY0RmE4LzBCUERiOS8zOGQ4OThhUjduK2NhaHdTR2YyczQ5MURpa3dwVUlPVnBpOU5BQzFpTEg1elh2cVFMTTAzdFdyMXFCd0lJUGFyeHozWUYrbEJjYWh3UkIxcTY4Z0RxSFdDZ3hUM1JLSEJvVkpCZnoyTWpPb3FrYkJkWU12R0UraTFCWXRhSmZPOWJzZHJHWGVCd1NCUG1kYmZhM1VoU2FjQ2NXd3NyQlE3T3U2aFp1TW5uVitqWWh3cnlGckFha2N4V2RNUHE2Yjc0VUQvUTg0NUFnaUwvQS90WmN2cUlhVWhnM0IrQUx1TlFja053M3R0WktWdStaRHpEQWZEMVNZMXM0UU04dzFuRW9FT1RYcjA0ZlVnWmpNUG1CdVl4VFNqUDRwT0ZKc2ZaY3pKWnEyeEJnamJ4aE5ZbTJaeXVqLzkrQmY1N25IWWNDUVQ1MVRmcnd4VUZBNmJCK2kzbTZVMU9OcENZc0pWSWF2dWRrYndIS3piUHd1M1FlcjZ0WW9iSHRHd2YrZ1o1dkhBSUUrZlZLK2JNM3ZBSGdBa2k0azl6QkFjamcza3JqUXc0Qmw3NVpVdnpHTlhMaWZFQjVTSFlldVZoazlFSU9xbkVJK0NFVHYzMzBIU2N4VjJVdEhYZWdheDhucTI1eW1aVE5Qalh2dlpTdkF6bjRDS0p5elA5K3ovZmRmYjhoUno3dWZ2NmtFem5ZWnVBUTRKQ0hHV1RWVVFvcGVYdFVGa0ppSmxidTVnRFpSYy9oa2dvRmtTTXA2S09kOTNEQ3FRQjhzTlduT1RqR0lVQ1ErY0FKSXFEcnNUV2tpdEVyQnZraExkOVNRNTBVQkVRRjM3S3M3ang1TUhlMnZ1N0FQOHNMajBPQUlLZ1pWOG9jb0NwbjFpcW9XOUJaa2ozNUd2SW5WYkduNHAwMWV2VDhFMTV1ejdRM1ErcC8xd0s1OHlYWnJqSU9xRm9vcHdSaGlydXJTc0tZb3VnOG1mWnk3L2U5RzZzWWZCelU3S3U1MWZaYXc1L0NEOWxsTHk1a29XWko2L0xnYWhZWnZQZGdISWNBUVpDT293QjBiVzFiY2dVdC81U3cxWWx0Q2c0bElVc1RPaVZ6RGUrREZlZ21lTDJkL1lBL3ovT09RNEFnSnd3Tnd2ZUxOWlI2bldnR2xXalI3L2ExUXI1akc3SlhhTEg1dkRyQ0l0aVU5amlveGlGQWtNSE5SNThkVG56Y2lZa3I0NU5VWDFCUWlUbHBxRlpCMVJxOW9pZ1UwWGw4ZVRVckVMampkZUtjYzNlK0ZNLzAzT01nYzR1ZWJYem50cll2dG8yR1I0NzFzYmdiNUloNmh2WmsxekNoRmpVaHRISlRMUzFMS2F3QlRqZ0pYWC9ybWNGdFE5eEJCcGM3K011aUY4UWh4azhUZCtyYi92T2phNjBzbXZwOVMxVnFVTWtySTBSZWZiV3UvT1d4MjQ1MEoza1h3MDRuUDloeXlhbmI1UnNIMDBKaEJ6MkhQQkpHWk56ckh2endQZmQrOFFpQnRSeTl0a1FNQVVyWG44cnRsb3k1TGt1SDVUMEZWVTQ4L0dGUU41bmIzampqdHhmRkgvMzhKWHUyWnh1SGdBNlpBai9oSDVHMjBhTmhMbXN6K3IzeVR6S090SFJzS0J4VVZ2a3NtVjdoUVZzVVRLTmI2V0tNdzFNT0tpRngwQk5FSm0rR0JmekIxUFU2NDMvWTFIV1FGemVDZXNZMnFYV3l0eWlpZGJjeHg3emV0M29Wb0FPa2crU2dNbndQZW9Ld0JWRCtjU1RHaitoUmN3RUdMVCtlV2l2VzA0ZFpZNVRzUjk1YXFYN2x5MERVakg4OHFLakJvVUFRRTFsL01QVTFzOCtoUXVsS0t2ZlEwcDRzdC93ckdNWXZrYnZKSVZYZ1MzZ2ZIS0ZSRlRwZnFrZDZubkh3RTJReWdQdC9JOE9Qd1BlL3o5eVVNYXhjOGVKLzVNaFdXb25xRWdvT096dUtBbXVVK2F4YkdVZGpaT0FsZmJCbkh3YzlRV1FMc0NDK2Z1cXZ3eHVBVWxXYms0QTV1ZzVGbjZjd1l4WEdra3JSeXp4WWZYenMwTU5IUjg5Nm1VUDJZTHpML3Z5by80NGI3ZE5jQnBYQk8xUVpWRlYwY0RBMy9CdFVHQVJWSGNSNFpaQTdCdk9pRnFwM0RLcXE2aU0reG0vRW0yLy8wYzZERFhFQ2g0QmoyTGxoWk1lNGtkbnUvOTRGd0lYZjkrRS9wNFh6ZGhrZGcvbWYxaSs3YkRyN1g0NC9mYzFEOCs4NVkvVUczamh1ZFBUMk0wWU9Kc2Z3NENmSXh0RU5FeVo5ZGNwMFk1QUxidno4Qi9hdTR2L3NSMFZlZWM4R1RrQld6M2ZqNG0zSFRqNW1YOXpvUGhvSHZjajZhSXd4VE5NWkJqbTVnQXMvYzlIY0Z6b0dIdWZ4NS9wcDhCamxFYjN3d3JqcXdlTWVmRkRhRnU1ODE3NjcyNzBmQjMzb3hQa254Ky9jNUJBdTFCc3ZFTlc1T2diWDRTaU9lczdmQm85NWRIMzdJME5QK25QaGlUQjY2VS8vOTc2NzI3MGZCMTVrTFdUMWljLzk2OGlaRDhBME5uRXlBQSt3K2RFVEgrUXQzN2hkNXlaRDk4WmRnVlFGN0Y0WlZqdzMwUjRUNGV3MTYrZkl3RUtWQ2VNdVNKWXpNTzFrQzRrOXdLYk56OU5sK2NINUs1Ly9BZmR1SERpQ3pKa1Bxemx4NU13SHByMWd6MXpINHhBdGdMaitjSTU2OGl2YkZPYkM5eStRbkJIWjR5RWR5QnBFNXoxMjkvbWpaMGhFUmlVK09mdXFyLzFxa3pxT2lqeS9JSTl0bXpaUGZaRDVzSHI5M3QzSXM5L2RnU0RJblBtclR4dzVreldqN25FaXN1RGVYYThyYjc2bHRoUWtvbkRhdmFmZGkwUTRqYnM1N3k4ZkJla1kzQ2MzSzlBaDZLTS8xOThRZmNXYnVQL003NzNsWGpuTmZyeVhTYnNYSGtvZCtIWGEvWXJqcUhqcUEvUHVuTHJ2MldYL0UyUWhxeGYvMGoxT2ZHck9nbnNsbnZhOTJTZXpobmtBYThab2I5Ni80Zmo0RHh6MStOa0FnOGwrcFc3bFB2dXdYM2NWWHgyRGRNaS9iNDRuTytjT08vOStBQlk4MjFWaHdmM2wyd0w3dW9ENzNlbjNPajJOK3hYY1ViSnVNdnVVSnZ1WklBdFpmY3lSK25nODljY1FUL3ZlN0pOWEVWbi94akVlZlZ2ZThiWmpKdndEUjkxNDRXTnlOckptL1J5WXQyYmVHamptMFhscmdIbHI1c0dhZWF6SjIrZXRBWmkzNWhoWk15K1Y1TXhiUTk1WEg3MWovdUVQUDdPd2pmL3pxV05icnRQeThUbnU1N1k1dUJQdWR6ejlsbnR4cjd2UEhUVWljUi9TWkw4U1pPSHFFNmVPM2pkSFlueHlKZ3RXUWVSRWZzVm1Ub2U3VDcvNzlMczUvZTdUNzA1ZnVCdE94elp4T25lZmZqZWNEc0Rkbkg3M2JQZ21hK2ZLV3VSczhsdXZvbnpwa3RSY0xwY2kxTlk1c3NiSzZkY3YvV0hhOEtqODZ0eEh4UTNxV1dkTjNEejc2ZFBiZm5oNld2N285THZ6UHpabVA4M3NWNWZiYlBzaDJDMHk1ZEUzUGdpT0UyNDdmUEw4Kzl5UnIvcnBQcVBKL2lQSW5QbnVwRis2eDZPTXZ1N3VrMWRGV1AvR1gyMmVzaG5pR1h0MndydmEwVDg5d1lwRVdudGI3LzQ5YjN1MmI0L2VjZnpwMzcrZTRmdDJjc2E5cHdGdzcybHdMNmZkQy9ZUDlRLzFjZHE5cDhGZE1JZW5UNzk3Q3NjKzZFNTQ0UFFmenh4MlI3N3Fwdy91RXgyL3Z3Z3laLzZXZHU1RFp1bHBkeTVZRlUva1Y1czUvZTdJR1hEdkR0NjBsYnZPZ0x2T21NU3RDeVp1WTlZRzdqOWoyOFJKYkxqL2pHMU0zRFp4R3hPM1RieHJBUk1uYlppNDdmNHp0dDIvQUpoMTY0VS8yZ1F3YlZQK2gvUjFHZ0NicG0weW01bHBzR2thbTJvN01XMlQvWDhhQ0x4aUZyZkNNek1YM0E4c01IM3hiSW9rai9zWDJIOHc2MWJHQTNEYVhXZmN3NVJqSDNRbjNIYjQ2Ky9YbzJVazdnTXUyVThFV2VpbWpwNzh6OHlXVSs4K09aRURJbWNBM0drNjlINW9WYWIxU1dtZG5PcmJiVzlFcFV6Ty9iVHNycVgzZTg0ZzNtOTYySGE1ZndHM253TWdXcTBJZGs3dE10R3MzWW5iOGo4QTNONnlUd29wM3o5K0I0em50THZjNlE4ZSs2RGIrY3pocjc5ZmozN2xUMzZ5Y2N4VDlCeGp2eEJreGlsYjJ0MjlFaGYveSt3MkVqa2luSEhYR2ZmdVlNSDl6M0FPY0R2QU9STzNFUjBUdHhFbmZ4OW1MSmk0amVnbWJrc1RNbkdMaTI3aU5vZ3U0b0FJazdjUkoyL0JNWEhiUk5MY1RkeEdkQkVtczRYSmJIRng4aGFZdkFXQUIwNEdYQVFYWFFSd3hBZDRocG1jL01BekMxLzRZVmF5c0dXV0ptOWo0alltc2gyWStHTk91OHN4NWRnSFQzcmc5UHZFelIyNWIyOHBzaDhJc3ZBbnJ6NXk5RDUrOThadzhxcWt4U1BBR2R6TERwNkJHU2V2WEFnUHdETXpUMTY1RUZFZTRKbVpZNW1jNXhzUG5QenNtemtaV0FrTFRaNHNsTnRoUm4zYWFneVFxMGdTSzdITDUvd3AxLy93aWg5ejJvOWV3MTN1OUswUHVwM2pYMy9mM2pQSnZpZkl3dFdMZjhsOUVpYWN2aXFlZU5zYkh3Qk1XdDNMRHVDWkdaeThrb1VQQUR3emsyZG1uZ3p3QUZBbVZCUlllWTRDcklSelVGYXljQ1huS0tJckZ5TGN2aEM1L1J4dVAwZEJibCtJbUZ4SkV6YUI3UlBZUGxHM1Q0QWJnUXRnKysxZ2RKaHhlc3FyWktyTVdEQ0I3Uk8yVDlnT0U3WXpZYnVkQUNoYkpyQjlBc0IySUNtNGhQT2FJWUE4TWZISHA5M2xwbXgxUTBjNGQrVFd2ZE1rKzV3Z0M5M1UwZnVZcmVIa242NkhZemFETFFROGpoMEFuTUw5SnlPbzdMS3lZNTZlWFU2M2tWM2U1L3IzR1J0bmJMUlp0ajgydWNDRTdST0E3V1dHd1RhV3I1a0ExZjhvRkpob3UyK2JrRU5qMnlZV0VNWDJpWGR4Qm5EOXgyeURiSnlCOEdOTzIzaVh1Sk1mSEQxVDdqdDZaTlhPdldDU2ZVeVFoYXNYLzlMZDJ4N1h6UndYMTNNTXBzdUJjYkFERnR4RzV3T25KSVZ1WThIOUcyZHNaQWF3Y1FhUVAyNEVtTEh4bkpxN3ZLQTZ6R3dqTXd2dXR5L0dBdFdPQys1bndmMzI0MGFUU2hQdk91T3VQYlM0NitPdU0yQzZmVlFCaHBtQjhPTlhQTDVwcHp2NTBVZU9kTjk2LzZ0K3N1ZE1zbThKc25ETGtYcXZ6Tkp3OGs5cG9ZY1I1RENXTG1QcE1sZ0duUEhXWlV1WExnTyt3MjkvQzdLUXQ4L3dWb0NseTFpeWZPbXlwUUVmbGdOTFdiYkVXK0oxT1VzRGZ0a1MvREtXTEYvQzh1ZThxZS9DYjc3KzdiMTBYM25GTjk3T2xWZDg0KzBBMytEdDMrRHQ4STIzODQzZmtTdXZ1UElLOUp0dnYvSzB0MS9KRmIxeXhaV252UjM5NXR1Qkt6bU50My9qN1Z6SmQ5NmF6dmdnNzlyNGhUKzF6d0lNRzBsV24zYlBsSzBuVFpMNzNOeTcyRk9uWko4U1pPR1c5blZQdG9jblo0Nkw2MG4wTVB1S2UwOTc1RktZRG92eUpWZXdXRmZBcnRWbEtjYjRLTnk5YUFVc1dnR0xXTEZvQll1ZXQrenBkSDUxYlA2Y295VDVqTEJQM09oV28wT0dIdjdhcHgrNkxsOWhlQWF5Y2VhUDJsNzF2Y05IdmYvV3RWL2FVN0cxTHdteThKUmZydE40NnQwbnI2clRnd2lIWHpyZFpwWVZMQkw2WVhFL2kxWXNwdDhJVXEwYmxSYVZXSVBjMVhMdVJTdnlQOVhYK2poMkRzRDZPZWxyOWFFZEJsN2NNd2FmN3lUazlKMG9vZ3NIZGdOeXJULzlyZE8wQUYrRUgrdW1uZE8ybmpUcHgrNm9mOTlEaXV3N2dzeVp2NlY5bmNaVDd4d1hZVDNIa0FvMFQvL2FsLzdRU0xCWWtmN0Z1bUl4b0N0Z01mU3pxQVp0RXkzOHNRczk4cWlSQkdPYVJTdUEwOWN6WnhkcXBDM3IyNEdWd2IvSUp3MnRtZFRDSEFPZCtaLzBSOTJ0NTkzMGpRUkVFdm54YVQveTYwOWVQZlNieS9lVVIvWlpUbjNPL0MzdDkxWDA0RkZneXBRcHB6LzJCLy92Q1BwWnRLaWZmcVFmWkZFLzJyK0N4ZlRUUHp3c0JjNldiSHRGSHVYdXUzWVhaZ0FyeXRZVmhSNW12YTFmUHdmV3IyYzk2K2VzWjcwd0IrYkFuQUd3UlBXTGV2UHE5QkNFQVFaZ0FEcnRENUJ3ajNmb0c4TTg5OW5QR3RZb25xcXk0RGZ1bjlEKzNTWGZ1V1RjKzE3TUZjdlY5aEdIek5uNTZ2Yjcya2RmbCtrQngvQW9zMmZmMzgvaS9rV3dZdEdLUlFKS2ZzVVgwdzhzK3RJbDFYM2sveDRkNkh3eHE4OGZXNWhqUFlrdDBwODVNdlJ3NTR1VldMdVBoU3NYSnE0WXFNRlBCem9aNkJ5Z2s0Rk9mdldhUDAxd3ZlR1ovRmo5MXUxRHYvbVR0M3pwclY5KzhSZmJSd1Nacy9QVjdldDA5SFYzenRnU2k0SHh1L2Yyc0xoL2NYK1NNNHRWNklkRm9xd3dSVEo4Q2VUMkdDYXdzajVuVWFIY29oWFY1N1NoNWRJN2ptZE95NGIxNmZ2Nk9RSURuU3YzNWhHRHo1ckQvZ3gwRGtEblFPZkFMdHBFSDFsMU1SOFdCSVpuL2xqYnRtM2ZVNm0xajBUV3psZTNyOVA0eEowenRwaVYrOFpqM3ZqRzMvMWY5MFAvNG41azhTSmdjVC9hbnhRN0svcDFFWXN2QWF2R0ZJTWFLQ1I2VU5GZ0JTdlM1MFdMV01RdTFJSHhKSmJNTDhLY1JKODU2NEhPbFdIbjNqeVkwTm1aWmRRQUE1M1kvOUpYc2dDVFk5LzZpZ2QvWDFWVnB6OXo2bW1qRXllMGYzZko5eTRadDZ1Zk80WUw3aE1PV2JqRjVOV01MU2F3M2dpM0hkZWoyYkphckNzV3JWaTBZaEVyRnEvWWtVdVpFRG9INkJ5QVRtUmw1d0NkQTUwRGNOVFVrVi92RGhvcDYrVHNNbDdCMUpHcEkxTVptUXFNVEIwQm1Nb0lVMGVZT25JdVB6ajNmKzNOWS8zSFhiNy80RnlBSDhDcmRwMjFnYzZCVG5GKzRKL2ZQbjNkVGNNenViZHQyL2FobzJRUGdvMzdoQ0FMdDdTdmkxR0RKV2poalR3NGFmbmlGZW5VaTFZc1dyRzRuOFZmRmNhTm52NDNIMzgzWGZhTFJaNWFZbmNyWWVIdHozWlB6NWFCSW9jQ0YwSnlOZlNjbFN4azVVSldQZzhTYU96UHRYTDNqMzFmNVZPZmVQeVlYNTNMM2UyS2tTTDlHVm8xUFp4OTE4WnZJY2k5YmR2a3hKL0lXNzcwWWxFUSs0SWdDN2UwcjlQUjE5MTk4aW9pbkFnUEV0ZlNENmE2RjdGaWNmOU84Yjl4VzBlRXozNGtMN1Nkc3FzbHlacEc2UnBPUFJYN0xKZDlEamJhdCtOZC83TGJaZld6ZkFUblB2MEhFMCsvZTQ1WnZ3T2RESFF5Y1BZano0eXltZW5ydmpaRDVQNnRjdUpQWk81ZEw5Smwzd2NFZWYzVVNlNnhxT0hrVlpPM1JOYS84Ylk1Zk1icElnR1Yva1VyWVBGWHBlM3liMTd6RWRyY2JYZC83SGZVN3dxME9YRTZERThIR0o3K3crZTRpb0hycGcrM2JIend1ZTdweE9uRHYzajE3cHQvOGVyZGpqanh3UUxiMi8xc0ZhS3YrbTFTZU4xbFgvall5dGlCL1BDMW8rZitxamduQTUwRFp3Kzg2YTZ6Nzl3NC9TczQ3dlVmK1pzVGYvS1drUmNaMTlvSFVOTEpVMGNmTy9WSFQ4NWs4cGJJaVR4NGVQeU1Vd1Jkc1pqRkF2SXZJNlAzZm4zZ3Y5NSs5bWRFZU1lcTMyV285aGFzWENoNjU5blF0aG1nN2FZM2pLVE45VCtDYXdOZ2MxdkxwVSs1Z3pkdTBHaTd3TzBMVjU3emt3V3paQnVIUGROMjNMUGM2cXNHVHlsVlBuYitpMWVlbFg4TWo1eXp5OXM1cDlRcitHTktLT0Z3L1ZmcC92MnZESXkvNmZ3NFd6NGdyM3lrRTZBVEJwQ0ZvOU1IK01iYjMvT0c5ODg4NG9uUG5ubm5LZC85TGJkcnNQcjV4OTV6eU1JdDdlczBycHU1WUpYRkVkMzhQNUYzc2lKRlI1QXRDM2Y4M1pseVZsKzhmMEhjMmNiMFdjUm45dmFhTCtXWTZkZ3dISjU1ZU5La1diOTl3YnYra1Qvby85V3JkS0RURE9PQlR2MzVSdnpHNmV2ZWRwbmM2N2UrNmlFL1hWOVV5bXF2Q1RLSE05WVdoUTVzblhUTjR2N0Y2SXBGSzJDUi9Jdjd5NFdYeXFkNWdGZVAxMlBDak9HcGpPemxGVi95TVpXUjZadG1QcnBweDg5Ky9lY24vK1AzZnZPeXRUemVhWDVpSi9DempmaU4wOUd2eXIzdUdaMzQxdS8vNG9BU1pNYTdmL240cVQ5NmNpYmppTENWU2Rjc1ZoQmR3ZUwreFYvbGIwOC84NDIveDhZMyszazdac1NSVDZhRGZOajFRL3BLMkdYTExudjVnQ2VrWGZQMi9MTVBQdUQ3dXFwZmFyOFI3SGRvZHFYRFlMZHIrZUFKNmFobW96cXh5ZmJncTl2N3k2bE90L21IdVAyN1B6cFJidi9Bcnhqb05PZFIrUGVJM3poZCthcTc5ZlVQYmYzT3RTL0tZOTliZ3N3NGRkSjljK0lUczA5ZUJaR3RMSHFMMDBYU3YyZ0ZpNlEvbkxVTi82NlRWNzdwaEIyZitNdlpqVFE3UGdDK3I0RVB6VWJhVUNPREowMjY3MnNBdGd1RkRxSHNYaWRIUGxYZVlGTm9INXBkSVcrcVJtMnVmVjhqRVROZnBPVnlMYnMzRy9hbDJRQ2FUMy95dWtjM2pQdXpUZDFIZGJ4cTZoeEFHR3FIbFpNaWZ1UDBkVWY4eTQvYmpuaG03aXQrcUM4aS9MK1hudnFjVTZhNk9hY3FjQUtidDI2Rk85d2lWdlF2Rm9DZG4vNmJPOTJWSGVNKzhPcHhvMXpSWlMra056TWlkQUYwMldlYWxGK2FGQ2JBMC9RTndPTXRBR3ZFU2ovWEp6alE4TlZueXZFQWpiNW0yZDB1MGNJYlB2MFhXbGdtMU9uaENVM2JuT2hCQTZEeFNiL2h5R1BqVll0Ky9va3pQM0xhc1lnd0JNRFdJUWt6aG85ODRsMlhoM1VmME85T2RqOForNHp1SllmTWVQY2pqMnRjTnpzdXVKOGR3T3kvMHNYOWkrbGZ0R0xSdjdDdFk5emJMcnpoajhLazRVL3VKb2pxTXFWNjYrdU1VbnRoMDN1WitNbGVmQjlhZHQ1RjJGV0NaN2ZMN2lMbmR2MzhyTGZad2lpdC8vemw5TTNqdjNYSzdmLzJ0eDkvN1NORFBNUkNCaFRDMURZMlRsYytPZnptdTJYRnRYZU1uVVgyamtNV252cEw0bWlFQmV6WUtzUkozMStFTHFZZjRWL0d2WjdCLzNEaEo5KzhaY0tsbjl6MU9GOTdGWDB6Z1AyZnZ2eHplcy9UWGczYllFSXBCTHlIUUtpLzNXRVhoWkRaeExjYTlwa2V0UnZ3RUpxWm01cHBpNitkaG9xN0tzNHMvM3l5YTlLV3M3YWQ4NFBMUHZWYW9WMVl1VktCY1JwZytBa3V2L3JILzNmcTc4c3BZMmVSdlJSWnl1TWl6T2FCZnhkSDFDdm5zWGlGS3ZUdmZOZkp0OXpaNTcveHhlUGxJeUUvb2dmdjgyemJCSGdmdXV6cFBkQkkwcW02UU5PbkovY2VtbmlmQ05CTVU5MU0wMjVUNzIxVFRUZ0dndmMwSzdLRXBqZEc4YzF5RVovVkcxM3A3a0k1SlhtM21sajFaQXA2RC8vMXNDTmZ1L00zL2NjdnVIRFZTazM5YnVMV0o4SU1qbnhpeXVqb3BXL1kwRFh0MURGSEdmZEtaS1VZMXBPejJUNEtPM2pWNWU5YXdlTCtSU3VRZU1xZGR3Nys2eWNXVFBxSVNSY2ZvTmxWYWZFbWFSSUtmUW9oaXRLdWlSMGZmS0RaS0FvZm1vMW1JOWxWclFiQnJzSm9kM01zM1VjbE5ZMStOU25vd3k3dlJXWGQyYlh6TGFYeFdYbmdqOC8rNytlODh3cVhpM3QyYm8xSGVGMTN4RmZ2YTl2NnFzbXYrS0dPVldidEhVR202Mk1TVC8zZTdLMW9RR2QrNnQzOXdPSitoSk4rZU9jZDRmUmo1SXFhMlZsN3V2d2hQMmo1MlJQcWx0VnVOS3FadEhYaFU3UGZpbGxidDNrSnlhQ3QyMStWNGlvYW9hSnd6VmJ6b2RtZzJZQW1YWWwwMUMvaENjME5qLzlGK0p1UFh0eGRJZ2t5WG5Relc0N1kvTi9jUjc5MS85R2J4eHIyM1J1UnRkQ05QaTZqOFh1Z080TTYvWWQzOTdPWVJjQ080VnZ2K2xJNGZZRjhNbVNyS2lTcFVhUUtTWjZFNEQwaFpCRVRJRnRNUHRTc0pYdG5ReWp5eXl5Zk5PY21GUVA0cHEvY2pDUWs3VXFFa0dWakNHbFRNdHdzaFI0Z1dRWkZnM2p2US9EUWdJYkhOeHEyWSsxSmtxcnIwdm05R3o2MzhvS3pTL21rYmwzSERJNWtpc1JiVnNlVHgvemU3NVVPR1hFUlRtUGlscUN1amRIaGZoYjNBNHZEanJPdisrTDN6M3pseGsvU3pJcVpZam9XOVp3NUlCR3Iyck1ZdDBsdjF6RUhQaXVWWkh2NmtEVzcvV2xVNTBnSGhuTHAwSVJnbG9NZDBCZnFPNFAzclFhMUdRc3ROSUwwWHRpYmxINEtueHorM0Q4OE52V2lULzFWb1lpYitrU1l3Uk5jM3YzamovVit0Mk9zdWFxOUVGbHZmUEFNZmV6VUgyOUVkMGdiNmovM3J2NTAwNXZPdWZPYXZzKy9idU1WR0wvN1hmeHZYL2ZVV3VWMVRXZVluV3UvNVRPMCtPeDFPZTdya3E1MTU4cXJDZXg2SjYyeXRINkRsYkRjZGFla2xIYTlsU3Q1N01ydnVtdnUrMmZsK0lkUkdOMTBaTnZHNmV1TzJPYi9mT2JPaFdNTm9PeEZ0UGUrVTBkUGZ1eGVWWEFPNWJCeC9ZWUkrVGQzenZock90L1oyUGpKNmtueUJObWMxYlpSUHZyMDF0VWUxWFl1ZG0yNTU1Qjlrcks1SlZSU2UrMTlxTmlyWXJNNldZSnZNUVBxaGtiOVhPVUd3Y0l6TFhUMGdmREp2bU11L2RSRlV4NGVuZ1B0b0REdTYwZk0yQWloOTZ5N1Q0aG4vdUtOdDczd25PNmR5RHFKRzRUVFlJZWl0UDFWMVA3Ky92NysvaDJieC8ySExldTdwbjNTMitNMXpOVE1IbTdURkdXUjhjWEVTc3FtOXNuN212Yk1wekRWMDhDRGJ4YXRBRWEvMEtTWnpBUXpUbjAxeDVSWG9SbTg5MG0vaEdaUkNvVmRBM2lhSmd5YlFBak5iR2cxQVJvaDI5alpUdmROMzZVTFA3VDYzM2JNK3FXcTZrcmdZUVNPUkxvdlB2Y2ROMHdiOThveFRlcWVFMlRPS1dzY0MrUmVkcmcycFVKK3VGczZkZk5YcGsvNnI3WFh1bUZhMURjOU5HaG0vVkR4U2gvMVZ5NmtuMFBTdmxBVDkybDRhTklJUmFhUi91dXk4QVo5UGpRYjZVdzFOOFRPMWxVL2RZT3NxV3FPWThpbVJXZ0FUUm9FODF1empncE5zZzBXZ0w0Ry9wTTdUenpGLzhITlV6TW80cFZIclFzejRKc2gvTm5sS21Qc2NMUG5PbVRHcTl2WHhhakQ3UEFvaDEwZDh3bFBmVjkweDU0MHV4aWZ6VVpMSENRUFgweWIvRDJKN21Kc1ZnR1Z1anRSczNOTHFLOHJwT0JKSmMycVVmdHVvY1JLMTFUcXJkWHR5RHZqK3hyRlN5bkIzcnFiMzNwSG4xMTF4eGMrdE9VTHgySVp4R04xaGQ4NGpaSC91K2toT2ZlSDk0OWJQNFpwM1F1UmRhWkRXTThPaDhKdlprVGh6dDl3WjdCdUFWM0pxUFRtZm50ejF2T2IydlNlcHMxQjA2U1hUWDRJU1RRay92SEpRUFVFaTdHUXJOZmd2ZmMyc1UwYVp0VVN2RWt6Q3NmazY5c25IeUEwbWwxSjFnUWFCQjk4RStoTHRsUTliT0s5RDExa0pneDJkbThDdHhLaCtXYnhlTGRnVTBmSDVHUFhEMEFubmR4MTh4Tm56cEFucHI3OUR6NTIvRWM2eG8wSmo3VEhCRms0YmcxeGdZekhLVERuZ240V0EvQ3VNUENsemI4MTZZcVExRUh3K0JCQ0lJUlFiRlRmQ0FFTGV0dHMxa1I1S0lyV1EwaVMzbVJMSWl6WURKclpHUnAxbzlUVGwrTWRQalNUNVp5b2FoZndqYnEwOUlIUXdKUHR1YjVFRmcvMGhhVEVXOHlQSEhwTElxOEV5MEx3ZE8zOHZmdmV2LzB0SXdsNHl1TU1UQnVHSUJjOC92dGpsRmw3VEpDZkhEUDZPUGZHNllCeTJqT2pTaitMaFROLzJmYjl4YTg1Y3FTWU51bDVqQkFoZXhVZUgzd0lsYWNCalZiYnR5OFpPZ0ZDWC9FK3pEUDBKQTIraTQxbDg5ME1GaFJMdkZLbTN2N3g1aEQ2Y24rK1JYbzJQQ0hSemplU2RvZmlRU2Fka2s1bzNsTmxzQVZHcGx6Vi9sOG5Ib3VCNjlyZmVNU2lFNDhHMmZuMmpkdmpGTWJTd1dLUENYTEttUzZLY040TzJ1RGV2N1ltWU1veHQ2Nzh5WVVueUJXRUtuUUtUVUx0dlNLRTlMYldKWVEzUVpaSFZ5WFhtdzFDOXRtbzZPcUx3NXlpQU40dTBFWGlyK0tKWnAvYWgwREFOd20rejdqRko3bVk5VWlMeld6SEJtOG1ZTFZMdVdxSm1qYno5azlPbXhkK2MvdGZIb1dCZ0xYakNVNzRuVE9taVB2NDhkL3RPRFdPWVY3M2xDQi9zbm9OTEdEOTExRTRUV2IrSDRCK3p2enZuSG4yL3puR2JyVlNwbzM4Sk0xcXhrTituTDR5RTEzRlgwa21qMUdzaSt3Y1UrelRaQ2czallleXdWUHNaOU5HUlp0Z05uRHd2bW52ZU9naXBOZWttTm5HSjVWRlZrZ1RtczM4cFFpNzBFYzZiMmo2eWxCai9KUlBvR2ROWGRrSkF3d01yV1BncnRWc0Rrc3VlSHk2alB4a0RCTzdwMWJXUWpjcDIxakthWS84YlFRVzkvUHErN254d3R1UC8waDZ3clJ6TTBkMmF4bnJZc1hrSFl1OW1RSjh0ZS9scXExUjIzcHMxczZ3ZkxKT1ZWRVprUzFMeXNYcUxuVVYwcTBpaTlTdnNJc3gyR3hVUDdhR0JYeUxHVmpkeTkrdTZ4citUMzgvS1hrQmNzKzZkejQ0NWFoYm5MdnBsbk4vZVA4WW5QVTlGbGtqWENEQURvZkE2Q0tBZmhadjAydnUvTlF4anVUVEpXdWtxN3p0Rk9zLzhVSE92R2E1azVWbzFxU0J1aCtSMzlObU9RRkFuN2V3WXUvMWN5YnVXUFhRNm9kV2hhM3QxL2MyNnpGRThFMW9Cb0lQM3ZzU0hBbjRaTDJsVVNKWEh0UDFSYmFXVUtjUFFCL0ZSaWZVVHZHUlk4NmV0ZUhJemVhTERPZ0lQSGEwSU80Tm4vaklOUDdraGVkMVR3bnlrek81TWZXMVVPNzlEZU96eGZMVGN6b3ZPR05xRjhXODhhRXZUYUQzb1MvWnVUNjU0TTNzVkp1NDZQTk5TMEExbTJEaXpUZnhua2FsRG13MDhONW5UZUliQWZCWHV6a1BmK3Rmdi9VbmYvejdmL3lCYjl6OHpUdmIzQmRzSmpNeHU0cENEdGxmQkpxRWhybmpkdlVzNFR5K2FabkVZS1pBOXV5VDNkMndjRU9mUFZtWDk4MlUrZC93VzAvLzFtOC8zc2tBMERsMDNxS0JDMWNEaS8vM3YzSHlLVDk5NFluZFU1RTFZOEhVeHlURzRSM09LZkxNL3dHWXk5d2ZMSHliKy8rbWZwS0s5Wjh0T3BkLzJTVStSekhzcStOYWNrYTdmQ2wrTmMydVpVZXN2L2VwNzhENU95Wk4zckoxd28xd3ppdVBPdW5YM1VWQ21uQnNEWHJsankwM2w3VjNTRWVVRzBvQzhGbDJ6amNlQVA1eTNHTi84S0hQSmFTanRuM3JpTTZvcTRaODg1bW4zanFXZXBFOTVKQnpUcGtHby9FOEEyWE9YZ0d3R0k0NU8wNXRtNUhNUWN1NEpzbFRDMVZYQ2pMa2VGQnllTzJsYXhFZzluNWlkazRKM3dMQmg1eHlBcHFUN3ZqNjJ1K2M4OTVQdk9IaTM3M2crMi84alUrODU2MjMvOU1QYjVoNW5hbHlqdytOZkpwMHhjcGdxbC9RSjBzM2hKSmJKZ1J2S1pzUzhjazdaenVpbGwvejB5ZXVuN2o5SDM4SklPdnZtUGZhUmJwNk5XSEhQL0QveG9RRjMwT0NuRzEvYnJZL0JxTWRwT01PUGpPeVBzeE9kOWRWUzNINDdIdTNqclJEU05pZWFzcUtVQzRlUWdrelZYbkdkQTU4MjlNM2YvNzJjUis0K056WHZtYjhVMXV1T3ZLRTQ4NTcvUWN1dnZVcjM5M29vSm10N0dDS0JQRDBzVHVyK0pJL3p5b2o2NUlTZWZNUVVtekJRd2owVlhSdG10UG9aZHJXcWY5ektzajZJUlkrc3VrNk9lRUVSSzZZOVM1Ty9KMFhudGs5RkZsek9HTnQxTWp3RG1sVHB2OWRCT2JTOGQvUC9RemJqNjZCVEdwNHMwcmM1Q0JSMlBYbHJQN0pCOVQvcS82eHcwcXExbi91b1h0dmVQUGNjOGNOWDVyeGhqNWNNMzM0Z1ovZWZrN244ZS9mOVJMUCtnWHFKdFV1a3FuMk5CV2NjWmVmS2xuN3R3OE52UEgvL1ZzN01FUTc5NjU5NTRQejR5M08vY1ZKcjdqcDVDOC81NHptc1ljY3N2UEVVU1R5cEgyN2RSR3d1SU5IejVmQlMyZmFyYWNucUJLZDlyMjhVTFhFU0htbytsNEZrNVcxTHpuMm5wbW9rYVJPODdxSDdyamhyV2RldEg3SHBiNmtFYmxzaDV6OXpvdHV2K2ZlenovckE2U3dUR1VycEp5aXo5d1I2dmVUYmlya1hLZHZPU3BMNDVUNUhIbWwvTm5yVi85eWFHam9JWVp1MThWcDEvTlh3emVmOVY1YXhoNFM1SlFSZ0NkaHZBQ1hBb3NIQitIMmxkSTJBeWppcCtiLzJTaVI5ZHF6cGc4aHYvdkpDRExxTmZCMFpZbVRqMGhlbVFYNS9NWTdici9vZ3ZrZnVMeFJRaUFCUXVPamZ6VHorKys0OGI2SHJxODVvOGt6TlhjdUJOL3d6YVFFdXVxT2JONDdoUm55alZkWmRMUEVQUTF2K29hNlVKdTYvVzk0cGJTM3QvUFFRNkk2QUx6cEtPRVRIemx6RE1HVHZZajJMdUF0a3dDUWkvdXhCUXM2T2V2TjA2ZVRNMHVlRUdnMkRUeFZYbTJmZUNEUkpadWFUZTlyTE9QSm9ydVovSkxFRHNFQ3VEbks0dnQ2UjI2OS9hMm56M28vK0Q1ejNndHFxdkdGcjE5ODYvMmpWd01aMGRWRkNsQ21GRTFvWk4vSGJpdEgvMnRNMmpEVmsxOFpPMWNqNmJRUU1qYk1Ic1NIOE1tbnQ5NXo3MzlpSlNzeG0yZm5hbm1JeFcvNE4zbGdETE82aHpwa3hyc2ZlU3pxazB3a09KMzlsWTUrNWdKemQ2ai96MitlMWFpYnVwVWJYZGNvcldxNUNnNkc2bTlycXFIVlgvWm1kQkdBejkvOGxYUE9uajlhQjFvVmRkTnMyL0M5Rzk1NzV0WWxhWE9DWXlYSzc2SU5rdHF2THZzc0VZSFdDOVQvMUlIeGE3WU1QckhqS3dEbzVNN2JPeld1OG0vODVidDJkbDUvNmd1bWNmMEw3ZkRzNDVRSHBzS1R6TjZxd0ZESGlxT2dZNUQxTTBiZitycFpqVFJWaFJMQmg4SVB6VWFSS2VWNWRybUh5aUFyN25zdENCTzg1ZWpTR2JobWVDMG5uZlJINllqbDA0ZVpQZ3pULzB1elFmQU4vN241LzBEeitIeDhnM3dzVlhxcmpPcU84bnRoK2E1US9WNUF4Q1ZWUXlGZkJRZHdtNWp6MTNhTWZQVnNIdVNoMTU2N1FyNjZtRk5lZUdiM1FtU1pXZTFINWZEQlJjQWdIZHRWejUvNmRCWGtyYjN2U1V5bFpKMzNOVFNQdWI1VjRMQ3lBRUl3bTVWQVNvSTNVdWkxak9WVGJ2dkN4V2M5WVVMdkM5ZTNUMmh2bjlEZTNqN2grblNCcDQ1Yit1clZtNWVWL1FQbEJTaG1SYk1tbjBMUzBRbUc1QXNNb0tidEE4MG1QbmlmSFB3UW1zbGs5dllrYmRuYUFYNkhSU2Z3MjdEalJqNTYzK29YWHZwa0R6bGs5UmxyUy9zRjFqMCttTGZMR3dZdC9wTmYvVkJldTBDS3Y3WkNjVXFvcjY3dHZXWG5Ra3A3Rks0cHJrRHgwdHVmM3ZEK1U5d3NlM2xYcjkyY1R6dGxick1SQXN4cU8rcTg0Y2ZtMTU4NGhHYWpwV2lra1hXYkNaNmE1WnZjeDRiSnBPcXV1OUtkV2xVQ05BaDAyUzM3RU5DMGxGbWVsQlAwQkpCUHZmNTF1N2VWMzIzc0JZZEVadU9jUkdZdkJqcGdzQVB1YWFuS0ROV2ZpaU1xbjR6azY5cHJSL2JEcWpoZTFzKzdDcFpLWXVuRHQ4dzQrb2tHRUs1Zi9jTi8rbG9lLzNUWFExY0ROTllmUGYzemovUDMrWExKY3N2cHNFb2FoWkpXc1EwaFc0VFpnczhLUGVtYVlqeldIOFlISDd5ZkNtK0JMRUpnQVBTZTNJWHVoY2JldHRhSVlLYkVZRWZIMlhrUmMyK0phb3Vwa2o2UjJiR0dkaWRBWHhaWHRmQ3c3ZEZIbnJnY3NFM2l4QmRMYVBuNlgzTEVFVXNCbG05KzZKYmFqZjN0djIrOXlnTkxwaHp6L2tkKy9reWVQRis5SkNWOVplOUZDRDdaVEdsai9XMUtzVkpmeWRaOCs1YnY5YjRaUXA4UHZxOFduU2oya255VGR2UXRZNXJRZmRUcnBNUFdSNnMyaEM0ZzlKbVk4aWxYblpQbTFaOW1SaXFrb0VaTzBtSkdQb1VRK2FBY1VFcVEzRWx0OFJjekluanZKMjNiVEcyOHZtM2pGTHpIYjM1bHZEMGM0UzNxWGcvbTRKdkpaQ2hXQ0Q1RmhIMm9vaXdVdDRxVVhiU0Nod0I0bndGTFhkQUl0UVN2amRRQTRYZFNhUlV2YlBqdUk0SU01c3ZmQkluZlBRWnRzcytOR251SFFoTHpCa3cyTktxd2tPMVZxZmRjajFPemdPemZ2aWxEbzVjYy9nUStoTUF6dTl6VGJBaUJ2cTJqRTlnWSs4aEp4MnhSaEVab2tKRVUyYkFsdVNtQmlqS1ExSHBJOUt6TmVtVWo3OUx5TEkzeWlyYVB0Y3ZFbmhIa0srVlRTaE4zUUFmMHcvbE14NXl3VUUxcFVlb2wxV1J2RnlSNElFQkd2WlZoRWNkaTgyQWNCVFdOMG9YOFlNS0VXUVR2YWVFUGdLYzNCNkJyeVp3cGpKU1RaN0xXUWdjWXdyMUl3c0pFdFFoRGx6ZWtYaDFLQ1I3NmlqQU9VS0NVYVVqMVowaDU2dmxtdEl4OXlpR0xid0tHVFVlWExGKzVSVzgyWlBhQ215SFF0RFI2VmN4azRpQVhSeEVnOUdYdmtENThObS9LcVRlY08yWEtoeXowTlBQWmI4M0w1SWNsNzU5ZUJ6TjJ5MFhUT3g1S1pWemRLQ2RaSFExdnhsNDZydGxIVmNXUWQrMHJSb0NEd2gvcHoyRXZNSWRVQis3TmlPTU5nTjlSdHBqaWE1aWpsT3hUbnkxWEh6TFl5ZEJROWpnTmZKNGhrM0lCNkxKQWR5T2pGbWhrWVZkTnJJNzhJQytIUHVXWlhXOXRDa0JBVHpvdXpXcGZ2UkNrMGF4QVhsbFk0WnQyendVUFZ1QW13UjZrNmJ2c0Ryck02YThGR3owMENwWXB0b29vUVE0VWh6aUFEam9RckFHUVdVN1pucWxNbFVvZzJSTmFoclRpb0RxekYwbVJaNDhpUU9vcUJPQmNoUHJyWGh1YkFkOE0vUFJINllBR1RjTmtlUWlHME10WE1oYWhyMUUrZS9yeVF5UkIxUXlXNC9IWjBVckN6OWNoOU9tRXJqVWtOZllBMWQ2THJCMllCOEtLZnM3bkptWlFsVUJsbTlFM3JUaThBbGZSRjdvcVg5bFRHU2ptcmpXelVWWGtjeWhrOElFU3RaMzZneEUrNTVzTjczZlRJVXpCYkRsNXZVb3ltQnY0a201S25JclBsL01XZTB6dlMvQ04vQllsb2pUTVN2TTFmNlhwQ1FuVFo3ZnFBNHdBTVZWL0FxWkVWUGE3eUhJOFRRVFhocXdGdnJob0VhaDc5ZWFycmwyZWZJYzBnVTFDSTAxKzJaSUJuV2IydEx4Y0VQQmRsVzlZY1VOdEh6UFArbVQ4dzl0SE40WXVnZ21vWFlhSHJpQWpvQWtYakEraEJBcHExRzVrUTdvY3VndUExSTZ0Mjc1MkcxQ0hmd1VDVjEwenZQT1I3emxVNDhLRnhodldiZlY3enorZGFld1pRUzRrWDhZcFBOMVAvNHIrYVN2NlZlR2hyWTl2WDNMTjhpYlplOHQ1aGhhN3NCN2Y5UlVmRlBCdXpyYlhuREFiclJabWwwejZ3TTVOazN3b0taTDYyQXdRcmxxL25kblNWU0dIQ1RXOFhpVldBOUQwVGFyc3Y2OWJWY0dtdTFtSnpmd2NJWE1Hd0xWWGpWdjdxUW12UG9VVEYzWXVWT1ZzdUlGVlNEdmNkTTBMVCt5ZUV1UXZvSW9Nd0xBdE03K1ltNG5zZU1XMlAzdE10aTJ2UFc5bDZxYlJsWVZPbFhnaUNhNWdtYW1xTDBEckh2YWptV0lRbnZBN203K2NESjZ1emNmeThHNDM2dkZIck45eDNxczJrMDVsczkzSXJRSjhUYkY3YUlTdVprVWZ3OXduZXlQdDFxZzloUytrU3h6enVXdVhiMys4YmZybFlISnJnRTZFaXpnQkhScnIxTzY5RG9uTVRwOU1wMCtNVjB5Zk1mTFk3TThzbzdwZm9PNVFCTHh2RkFCYzh0RXJGZUVyRWhZOGRkVXpJTlJ5ZTVlL2RvNXVNQW5pM09IMTlEa1RYK3NJZ2FCcmIvSTd0MEtwMGRsRmo5ZkZwZmY1MUlWUDh2V0tzSzFHdWJlMDY3VWJ0aisyK1JXYnJ4Z0ZXL3FxRTNnZjF3blFQdGJwM0V1QzJPRzd4TTEwYWZmRUdUOS9aTmExeXpJVFFIWnlzM1VTREY3ZUY2RFo1WnY1cVFCamt5cVdWM0JBdXlTNlRjN3A4ZjdSOWRjMElTelpNbS9tTDhvOS9PemlONDRzOWNBMVR6Mzk4S3NPVzFxaDhjM1hxU0JYRmUwcm1xVWY2bWFZeitJM1czek5KajVZNFhSbzR1bjl1KzNQYkg1RmIzZDN2b1VCQmdZQVhxdkFFSEwraTVqUkZ6dk9iZm4yTk9STVBnNjZnYVZYVEpuNWkrMzBwbWZkMWJRdHpVb2FUV2lFME1EVFZ5T0tMNVpNcUFTQy9SS1M0RXFibm56dGg3cCtOQjN3VER6eXd1cytrTWZuTC9JVENkQ2MvT2gzL3ZOeFcwd0MraUlFODgwVUZXQ2JzaDNlSlBRVnJpRUZlRU9ySzlub3FxdkYzcXZHUGJaNXVuU3JQVE5BNTBCblhhNHJsNDVsYXYwTDcvSUN3OEh3dFA3Y081eDhENzFjdVhuem5HdEhscElURDc3VWl0UXlDNDJVdEFxK0Jtdk9ZcndlUjZ6OUVpcFFFSmRmUC90ellmMTRUNkRoLys2RUtzQTZ0SlNBRDl2Vy9ZeGpadTNJVnpVR2FHUmxuRSthMHplTlpFQTE4QTFmZ0hFVzlHbWtlNjI5WCtTcWlzYTFtNS82ZEs5ZUlTcXhXN0ExL1FhZ2MrQnN1R2dGMEw2S3Q0eEpqK3daUVg3UStuWDZJdm96T2F5NXE0c3FTM3VuYnhzNjdETWZwdmJzelN5T2QwbFhRNmlUS2QrYjFRdlczQStxajJrV3QxendWVmIrOXFjL0NvU1BodHBSZUR6THA5KzU3Wng1bXkvemhiTEZNaXI1NCtwY3RkR0tqY21sRFpXR3FUOFVWL0hJeEJuZFY2UTFFbXBPNEVCbmJuRXl4QmlqaTNzbXNzNnI3aHRndUwrLzltT3ZJT29FMTdPVUdTT1BYSFZWSU5XQmVScFpkb2ZLNzA3RkZRVW5hRHNRclBqR0Z6ODl6WitubEJrUzRHUDYrclpQM3pUdGM5WGQ1R1ptZ2RCM3hCMi8vaCtudmVheUhMVnAxclJHTTJUb3RHOG0vN0RHTnI1U2YzWkV3b0ZUeEdVeTJVSllmczI0amRQR1hkR0RFeFZWaGF6VVlXQmhXVmxHRDFSd01jSjBVeUtMNTVadHFtaEVlcGRPblBITXBtdVdXMVZUZWVITXp3aUZBQ2sxVmVPQTRydGxxbVZiS0VCbGhYb2d2UC9FSStLdjc1aTRQTXYvNExOMTdQOSsvRDJyYjFyNnV2VjJjSjlaUzk3VFRBbndrTzZseFdtbG9yNzlhMlJxaExxRjFwZU1ZdURhSlk5dG1kYmJpeFBVa1J6MGI5dHVDeGRtdm1nZmEzQnhyM1dJQU1QVGtzQTZMd0k5S0NJcVNGVHAxaVVTV0w3RUp4aDFRV2EwNUV1eldxbjcwSFo3TmIzcFE1YmhKc2h0UGdOUG5OVno4eGYrK3F5UmxBLzNhUXI3ZUdyY1BmZmY4bzZ6aGk2M3d4czFLN1pSM0ZVcW5WUkhMSkdCUFQ2VVc4dzM1Z09ObFBOdmJvaGIvOHNFNlpHSU9wWG9rc0I2TjZ4Y2lBd1ZjL2ZXL1pzUGFUMCsrU0Z6QjRGNTBLTWlxaWl4VjFEOXkzRmJuNTU5clpWNDF0ME53OGVISnFsa3hyb3FCT3JHbHZWUHFDeFd1Z29abThVOFdMcjUvUGUrNXZNM1RmcmNWV1RCNDVzMG4zTGMvSVZiTHY0dFBhenk5a041RFVveU5yRmdNK3Z2dW0rZTA0YkZ4MC8zbldRZThGVGM4T2RITHU5VjR3MTFmTXAweUNZNFIyU0k5cFFxbERlOW1BbmR3eEdwR0d4eHkxYTE5WCtrQnhXUm5pblRIOTE2N1dmdForL0xOSGhvcEQ2WURaTElxSEp4VFEraEVhQ1paekZMcnhTbXgvdG1IMERvSGpuenZlZjkwNy8rMkYxM3pmSy9DNzRKWWZTYXR1a1AvL0FySGUvNGhwL1l5TDUvZllSYS9NQlRwWXZyKzNsU0FpZFUvbXZ4YmoyTjRLK2E4OHpNN2l1TUJxS1JxQjh6WE1HM2thRWhhSDhSSG1FYWU0WmMvT2NQbjdGV3c1T3pvOXMrdXNOUC9Uc0ZXRHpJbk5GM2RoemRUVnBVeWtXTGM3cTQ3SXEvbVRDeWxDSUJmTzY4ME5MWmJmZFJreG03YmE5LzdXMy84YjIzUC9SZmZtUE96c1B0a1RhdjIvVG9lMy92emZQUDNEeHhGN2g2Z1IzdFp1ZUJUWDVvM2R5Nlg0dXBkKzFhUDBHN1JYRUs2alF0TFBBWHp6eitNTmNmQ3pEVUx1T1BXSEcyeGlkWHRmbWgrd2IxOXVlZTFId0hlek9jclp1NXFKOGtzUUI2dWdWc2xSQ0pJRVRwN3Q3MnhPemV3eG8xZVdYV1poZXc2NFJYeXIvRU9vSVZINVRwcXBtakFRamR5MDZiOXNyM24vSEhmenh6cXM2ZXZPVnBHZGx3SzhQdi9ZMFo2NWNHV25wdHRDb3VpbHRlYmUxcnRMSlRnQXhmVEFVUUtVaXdiTkwyaWY0S0FWRlZCNnBPSW9LT0FyejVFWVpvWjJXODhEcUE5bFZqbk5KOW90UlhLTXlsQTM2V042cVQ2RlRCS2FJcVYzWlBmK3lZbldSN041UjYyUG9ibHhWOUtIdlZwcXRSa28xNTU4cE05V0dKdi9yVncvZDg2SXV2Qmg0Kzd0d2ZQTHo1ejJmUFBacjNrN0o2bm1EcDR1cHlSdUdja2FxQWkxMHRpZzU4SVBoR1F0VFovZmtBOUxMMkZYSUZoaFhzN1kxaWl3WGhKRUhUaHRxQmhiZnh3UlhBa094WFA2UWFwUmErZzhGQis5N3Iwc3ArS3VwQWNRN3R2dUxJa2EzWDVpY2tFSHdmSVJXcGUrOUp6ZlFxR0ZDQUZFNEo1TVlvUHVzUVgxb1A0TTNKdVN6TVBPOTNteDk0N3pzdXZ1emltZS90L3NwNUY1MndkU0xGZmcwMEdvbThHTFNpRWZDaEFFaVNUbW42cWtvTm9ObXNWOWtsaThFSEQ1K1o4L1QwVFQxb2xOaUQ5T0JRQjBKdmpLTUF0OURPeW9HSFZpYUhzRjNIcUJ2MmxrTnNpZkxGL1F4Q3h5QTRpS0JDZEdER2xrUVJSYnA3TjdsclB3eFpEdmMxYURib3lzV1ZPZFdlaHRtM1dhS0Ztcll2RzFzMndJYzhuejRlWkVSMHFyYU5Qcm1qSzFXRzFzeW1sRm55WFlVZjB2MWtYcTJ5bHZaYkEzeGZvMzVqUGdUbzYrcmR0SFptZDFvR3M5dWVFMVdRN3BTOGZYVEtRN1hzRkdOMTFQZWFRd0tNTXR3L2QyNjFxUmRCbzBUcllXdXNLcUxhNDdkc3Y3WjZ0aTV5cDlnR2RlaVovVnF5dXlhVG1rV1lXUWExRmw5TWNjTkFDQjk3Ly92WEQyM2RzblZvNXdjK2VIbVp4dHgwb1FqLzByN0hWd1p0czZxbUNyN2xMYzFNbE9vK0RXL1d1Mm5Ma1g4bGtod3VjT0pFMUltSXhGUi8rMURMUEEyTmRXbXlmUUFEYXVNU3c1d001aUpRS1RDWUNLcUlLa2k4VXJkdHYvWnpPYmxYQ3ZLaFNPZmlCRlJUNVp2NFptaFViM24rcHhabHFibVpTNWNzbWJWazZZZnl1MDhJK2JYMytGcThOdG5RbVZhQkVCb0YwWnFPcm53UWs2VnBSK0NxVFg3Q0ZmYkNLYUFhRlJXNjBhalF1dWlNamZheGlxSzl5cW5iR0NXaEhPQjhpZER0RUlsa0sxQ1NTWWlMUFhIYkk2UFd1eVJGUjVMQzhCQm8rc283NkNPay9nSEJ3cTYxbG54SnhDZmZQb2RYZ3MrTmt4cTFzSGc5RVV5ZzRWTUZkbW9wVTlJaTNpTE82U1JwTk1paEFqdW1PSlZYYmZJVHUxR05LaXFDaUVNajBmV3FPaEZTWTlKZGdVQUhEQ2pYeG9xNWhwUXpxdlFTVVNGS1poT0pLS0lSdWtkblBuS056WHBPcE5mcVFDczNPb0VITXBpekVhemxGaUdVeG1HMU55NkpMbDlmSUNHMG5MSzRNNlhKVmtYUFlqQllYS1dSSWIwZW8yZGhvaVFiZmZQcWNlTW1YZ0VaVnhLVjZKekRFVEU3SDc1ZFcyL1podTUvb0Z4TVR3U0xqUklkV0hndGdrTUVRZVhUMFRsRTFBbmluT3VOZi92WU5TbEM0WDBPT3RuMDVSaHRqZy9tT2EyNzJUN0JvaWl0ZUN2UmxlSXVWRnQ4Z05EME5KczFNUmZzNEdaMjMwTnFRcFJwWEVMRkdQMGFQcmQ2OXdhM2ZHcmQ4UGlsaVJvcXFzNnBvQ3FvT0p3a1Y5dXFaN0IvSDJQb1FDbDFZQlExaVNVVm10V3M0U2p4TXRHb0tGRWRhS1MzWjlwajF5U3oxVjdMV3V2ajRtVzBKUGlxSy9ua3VRZFBTSjBES2ZLa0dBTE44bjZISkpVYWpid3BYNkJoM2YwdzFVS2hWTkpIT1ZqbFc5K1ZRTVA3ejJ6eUU2OFFGRnVQR0tLSlpTSllqQnQ0bTAxRHBzM1J0STkxVGI5OUlySmdrQTQ2VkNCQ2p4TzFKYmxGUlZFYzRrUlVFYWZheTJmQ1ZXbStNY3htQnVYVUJKRnZaaG1SZ01La0dhbWJYbGFwN0QyVzZzak9ReU5MbDVyWVNzU29jQ0pVZitzV2NCOU5ieDRvcFgxWHNFaG13aWYxYnZZVGxqclVwUlc3WFZvMVZsTWJmck42dnozUHpsZW9NRFRXR05WZUVjVDRZRFNYaDhnWEJaZk5LbFVWUlVWRVlnK3FxSXVvazloenhjZkhYZHNTbldpa1FwaktKUFloS2Y0MERWMG1MMHBrTDVrQjNnZlRMWDFsOW9vZVQ3eVNSa0pCOStXUWZXWDlWakxQZTVxTjNBS3lKak1KcWZFZmVKWWY5dlNFSGtFbElzblJjcmFhcjZoRVFiVkhnQSt1cWEzdUM5QitRTkR2NWVCQjRHejR3d3ozVm50eEJLZXFRZzhpRUVXVmJ1VEtaWnZXWHRXaUYrakx0UEI1Q2tLdXJra3o2RU5JcGVXK3NtQ3pQNUV4d01ZOXBvVzloNjdNV1ZsVlY5alZla3l4YXVtWXBXZXg5Mm9taDhkN2xzZWZUK3RSVlZHSFdoQkNFRXZjT3FFSFI3ZTJ3WFc3b1hrUG1BNko0KzF2QjVKV2RlNU5BdGFoZ3VEVW9URzU2OW9MOFlvSmNjNnliR1NGNGltMFdPbytWWmNWK0U2Q2RUVk53WVJhVnoxeTFYODZzcEdQOTdsaGFWV25CY2tKemQ2bEI5OWxGd3ZOQ3ZqbW04MFVlZ3haM0lVUVFwaTZZYndpenNMWklxcVdiWWhPaVZHbFYxVFJVZTc5b0JHZ29zTFFBYkN5YXFPRERrQVhvUmdNQ0JOWENtck40YU9JaUtMUkNYU1AreG5MZlZhOXhVTUdja2xPS3NCS1UxR1RMOFZEaFByTEc1cEZGK2ZzaDY5Y3hrWUlaUHhkYVpCbzhXYWJhY0EzRE9DTEQwMTg2T29xMXlueEE4KzEyMmRPNkk3RUZNcVdIRG95Y1NDQzJvU2VsZzZ0c2NrNUIwS3BQNTAvREFMYXY5anV6RVZ4cXM1SlZBT0JSNGttWFZHSWtaNzRsOU9mbXBUd2NEN1UyTU1IM3dqWlBLcHZybDIwV1RSRHdjMEY2K2xibFU2SEZFdXBUbUUyWEY4NXRLWnJtcjVrNmUwRURYTlQ2aUlyNEdtR2E3ZCtZclFiUWVnaGRxc29vazZqRTQwaUtzU29vczdSS3JKdUFHam5xTEhONlQ2cER4RTZRQmIzOTk4RTBHMUlYNktJSUVTSXR2NXp0OUhMZFR1bjA4STFRTjBVS21xMHRBN0plcVl1ajZEUmxUNVZPN0RMWHRRRFdHVGZKRlM2QmloV3QyK0VGSE0zQ2RuQ0dmVjRmZU9xemV0N3JuUk9vOUl0MGdObXdEZzBHN2p5Yk5ONUVZSU04ZmhZWm5NdkNUSTduVUE3a0MvUnZ4Z3p2RXpKcWJPOGphZ2c0alFGR1FRVmpiMXRHOWRkUldYamxOY3paSFJ0RGQ0UWl1SFRURFR3WmFwOGRxZ0RsWGtFMVBVekJXelh3aktZMVYxWnZWMzVReTNlNGd1YzF5Ky8vTkhwUFJvUmNTcXFJaWxKaUVxdkFCb2x1eWE3akdmYjlseGpMK3REU0FVNzNERzlYM1hSK2VwZ3FpcmdSTVVSSXhicWpVSVVoMkEySXQzam82c0E4aDdJUFNreitMcVprNm0xZ0VoWDJkM0tLNU9UbjRvMjY3NTc1YXhiTUtxWnRWTTJlaE44SWZSbGp5akQza3Y2STJBTTNFZzI4cVRMWmw2aFlzYWlpRk5NUG9tS2Rpc0lvaEt2ZGxHQWQrODZXZTE2WUVSV0lOTDJ0SFQwcjFVbGlhd1I1M0FhVlMyY3BVUlZCSEZSaldlY0tyRjcrbE5UeWM0MmdkeW5JdVRGOHhySms2dS9zelZQdmd1Z0hnUU90cWxWamlXYndOTm9XdjYxTC9tVXBybzh2a0dxT2NpcUxGUUdRYVYvZ0d0M2ZHYUNtdlJWbHdtZ1VTQ0tVMGNQSXNMSFk1SmV4NkRRaWI3UHpqREUyckhONk42S3JBak1Uc0RGeFlabzdOWVlGU2ZwdnFWWExHcWlrdmdqcFhpbmJiMjJXZmZPZkFsWitBSTdyN2VIOTFiNm1yVkxFV210TXM5bno0VnMxa0lJeldiREtqdHlLMHpyZlpaT2wvTlcyVnd3cEtvbFFCSngvUElQcisvcFJZRWVkZEZjUWxHVkdFWDRsQ2k5THFJU1JSWDRLblF1N095azgzZ0FnZmF4THB1M3R6QWdCekJzS0tEK2xBOFJTcURYQWQzZ1JFUVFSVngwcW9JcXZXM0Q0ellrTDgwM0NXbFdtdWE1Mjd6bWxTUno5S1BMSXVMV1RTRVVDcExyMlFzNVBKaEFTNW83V3dJMS85czNRMmlZNjVuN0NtZUc2N04vS3NrRlllckhwL1VBRHVtUjZDUXE0aEJ6ZVBtNElBbzlrak5CNzhhV1IyRE8vN0tyM1RyV1dkMG5mc2dsZFdpdlpReE5PamtUVnFpb1JJa1cyMHIvajkwVGZ4NnppMkh6MVV3UzI0ZVEyL0NrVHA4aFVHcmZzbTJhMVg1SUVxdVlhZGxvYnVDOTRicEttakdsNXpFSmw3TWx2dEhDY3BYd0xFWXZWMjA5VXFPbUNLOVpLQllkRWx4VVZLT3FkRWROR1VTQVRoaUEvd2dvdk9rQVJudmhTNjFmTlFWK280Q2lRa1NKTHJway9vb0tLREZPSFhkdFVwM0dLRWtKWkt2SS9pdm1VbWdSVEQ3N2RZVkpDc2l4YmtiaEc5blR6cDNIdW94d3hWR3hYMXY2NDlSSEUyRDU1ZXUzZG1PTGVJcXFJcWpnTkthY2lJSVRuT2w3WUJZa0Z2bXluV1ZvckhiV1BpRklycUNhZXg1QXI0cnhoT0dWVk5XcGdyb29xcWc2RmYyME9ISGRiZXMvdkR4NUNaN2FRaHhWa0RGSjhEUi8xZVlVQ0U1ejdadTVGM3RJdGhkbGFwTk1wRklzb1daRUpZMUNzWW5yZG5oMUgweTliRnEzV2ZnOWdEaFZsV2doUmFLSU9rbDRKNmRSZ1EzQVFPY0FrSlQ2Z1FRNXdIRDFQYVlZY05ZaEVSRWlaZ2FESWhJVnVZd29zSFRhWlpPeTRab0ZUazNLVS9NUldseUlpaTVwb2h0VWJmTXJHSFVKbm9SVTdKL2EwV1hIb2pxaTJ1UjlsbTU1TktCNTFkclBSSlVvaXZZS3FoRWNEa2tkRzFMd0xpSVdCQVpnb0JNNkIyUU4xOEZkdEI5QURobmxrcGJ2dlM0VlNTQUpLT2RBTUlFTEpDaHNWT2ZpcEhYTEs1T0lMT1h6eU1vZ0Y0eTJmSUpRb0thK1pmL0tXSzJZTGxIZGZIM2IxSmMza1JhQktVZlVEd1JvTU5yVG80aG9UcjFsZTlmd0hDb2c1cWFMT1lGZkJhQlRGZ3A4RU01ZzZBRG0xS3ZSa2MrbnFmK2ZSSFZFY0U2alNrU1R1WlVpY2JGbi9PZ2tjditwV3BEUkdnWFZLbVFDMEpmUmlyWG9oczhSamh3ZnFmZnJnVXJEMkM5OTVweWJKR3hVak9DTmc0b0FxM09ScDNudGhLbHFEQ0ZZekRUOUU1Rm9zU0dOYWxxK0pLSTZZWDFWeERibStwQzlENytYVHdXYkZkTS9wakpzZlhFUW5PVDNpNWh5em5IeWpxc3NNcGc3NkVJV1ZWMDFUZ0RTdW05cDFKWW1yTW14N05OVWJKVFZkcUNaNjlKU2xpVlVaMDUrU2FpNU1GM2xwSUVOSDM2U2JpQkdnNW1wT0tjcVNJOWtrV1ZpeTRtb2xDbVY5ZTN0bVNLN1FoNmVlK3lENEtMQmtCYlB6VTJhQUVTc1JzVFVocW9UcDJyd1YxVU1JeVNnVi9wSHJDT0pUVndPdWlhSWtIa1JQbU54ZkxhamZFb1FldCtYWEpBU0xHa1dEa3JZMEhKTG1kNmxRV0NkSlBWMHZrOUptano4cE11bTk0aFlCaHBWbktyaVl0UWVSRlFGL1hSMElxSXFVVTA0dkJ0WlQvdlFVRHR3WFQ3Uk5XT2J6NzBiSGpmS2x4YlhpWUZURnlOUlVuaEJWRlVsK1NOaUpxT2FxaGYwMVR1dUt1SW1ReGxyUXNkYmFESGJVOGxCOFhsRFNnSG1qandaVnBxeFBxMGt5U2RzdlVLMkdiejNXRnZzN0ozWTdpd1Rod1VJRGVaRE5NZFg3Qmtjd21WT1ZSUWhTNnhOdk5uSW9mQkJVbUxrMHJGTTZONWJXVEU1aGgwZENaYzFOY2Q0VmNSaW9pbTZhTytYaUVyS0lEaU52VnNmY1oremVqZGZ5ZjhzdzcyaElFeFROSDJXS05XS1hEN245VUxUSUJKOVNRWVozUUpkT1h0YktKRVJxeTJFTW9IbGFYZ2FpVDFDWDNvSnBqNDZiYW5CUkJHY1FaVU50UmlGRkdUczFtemlTNjR4SEtLZEd2cm5RSm05SHRyNEV0QXhtTkNMWEtaUm5UcFJwNGdTMWVydkVJZXJnRUlpSXVCMDZSRnRHMnh0cUZLRjZjbXV1MG11MUEyMHlzS214a21WTlJSU1VhWnZ0dlFpTVhtV29vWjFyaXRGQ3ZVRVZPa25seThTUFBqbTV6N3NCSlVZaVU0a1FjOHMxazUwUkJWVWVzemFVcFBVQ1FZMGxPdW41TUMyK0J2bEVwamIzOUdSeFpZREphcW9nb3JMR0NhSkduTWx0OVVQS3dyeWlIbmpKbzFTWEsvRlVnb3BiNUVkK0NxQm1PU1hULzgwcStTOE4va0dCYXJZVExaVzNVaXJmTTNkbWxqbXJHWFhoc3VtWCtFRUVaV29tdEJOWnZNNnNlTEM1THBIOHczVENkcmIyMkhseWxzeGdSVU9aRTU5Qll0SmFOSUlQV25hUlZGeEJUOG5VWnpsUnB4RWpVNUZiWi9yeGwzbHdmc21vZGswb2hUUWdpZjNqeldZU1FxUjFFM2svR2FISEg3eXJmeVFkWGxYZ3BMVUt0RHgwTXpRaHNwZ3FDSTB3R2VkTXdkS2s4SHV6UDBRSWxGRm9rUkxwcHUwY2tvdWl4NGFHc3J0aVI2RGNXT2N5MzJDT2xsRVB4MkQrWHpkUW84aVBlQlVJOTNSb2VKY2ROS2RLeWJFaWIxblVhVG55aUdiMXk1U1VVMGZCSHhmVmhpTmpNM3l1V3pCQWxRK0s5NHlzdjZBR3V3eGFhT1FZU3loTDZraklEVHBxcGJHN2N1RkNIM1ZLY05vMnhRMXFVdTBnQ0lPamFyT3FSTlZsK0dpTmh1SlFkN0cvMXI1MEVPMWlvVDJ6bHJCeHZPTmZRSnlXTUZpQmpOSjZGWHRka2lQU2hRazlnajB4cWhFN1hicVZGMnl0Q3h1aW83KzdhYXJvQloxTW1WUm1ha3BCRVdvTFN4c3VkZnN4NmYzdlVTajZ1ckF6dGFYZk1FQURYeFhEbzgwRWlJNDdSbHNMWXpLWmZTTVBOTFc3YktySzVKZzVDSVNWYUtpTVpvRVJweGlPU3NNYkUyRk9qbGFEZ3kyTnpmS0dsNDhpR0VYZ2RSaTBPSlhxQURTalZNeHJCYUFrMngwZ1hKbFQ1aVM2d3REQ00wV2p3NVA4SDBaYkdvaUt5T3JhdUVXK3pYelN4OXA2ZWxTeGVzYlJwSjhsZUw2TkhkWnhLamUxOEFEVjIyOGJySTlrL1hwd3dGUkJKVVVMSEVZL2l3eHY0cTBaV3h2TlE1UVRyMDhpZkZHUjBkNkx5eDVMbFlnZ2tZcnlYV2dNVUozakpMdzhJQkFuRGhwR1NXbDNhamt1MDlWZlYwTjB5cFpRalY4cmRWZXJkZ3dFN0ZCVjZaRlhvU2RacGZwZCtPNkVtakplTHNXdjZScTJnQ2g5Mk9HR1JYdFZYT3FrRzV3RWxGTi9LSUtXSEpFbzQ3Q3QrZlZTQ0J5WUJxWTVhQkpHMzg0QlpLUmxSZ2pJaEtkWFVEQWlVRzBuSWhJaitUQ0tvZ08wWjRKbTZhVzlZdjdjdUlwVkxHK2pCb0pvVWdqTTIrektnaDEvOCtYWHdKVk9xV1JUR2p2U2JINlV1WVF5bEZRVHlvRy9MSzJTYkdYaURxRUhpVmEzVUczRmlNUlVTZk9LV3JBQjV3QWJ5czlaOGlQZWlCZ1FLWkRSdEhOZEF3TzBtSG42OVdvMG9NU0k1SnN3U2hpNlJCaWh2Q0Rxa2hVVmNjVFFNSzRaOUIwRXVNRm5adW1MRWVmZkpOY2J1aFRDRGNrSFI1SWZjSFQ4VlZieFJRVThibmJUR0dMbWkwY2dxK082SnZxeC9kMGl4aEE4V3JVNWVwbXd3R0pNeUZzdWp4R2xlZm94S0JEQndBbzEzTG9JUENvQUd5TEtxbzlpTGdTaHhORW82Z1RSZWhCRUdjU1dDeTFPSG50Y3RPbDJaQzExaU8rQlBseUFMaTQyTUU2WUtlMFgzN0hFNnFyVnJUYnFFa2pIM3hvZWdoTmsyVE5waDFWSzJQeitHYk9uNEJ2OEFTR0tnSGxZK0tpQ2pnQnBWZkZFVkYxTWR2NTF0R0J0dElOYU16KytYUE02cDZNVUM3YWdhSWozeHpmWTZSUU5Va1ZjUm9GSnhpaTFBaWlxdlljRHJUWGg2azFRWjdwNEZzU0dpR2szbk9OV3UxTjRad3lmUDUvN1JaTG1EaUp1Z2FoQzA4ajE4QTF5cUhCMnA1YjFCS1dyNTBTRVVzOXBVQlZOTjV3MGd0Um5lQXNsS0pPcmFBS1lPTGJTTFpOdW9VRElySmlLbDVUQTF0M01FOFEzajRsYVcwbnFoRkJKSXFRTUZrcVZnRWFSY1FaT3NBaEtsdUgvNjVlMkpIS09FcVVMN0ZIZzJUc0ZoUE1mSHNUYnNIN25EYXZDRlUzenpKY0YwZ0I5Nm9zb1ZsK3QrczNDQkFtaGJaZVVXZWtFSTJhSWcycWFEUS9SRktDV3RXcEUwUmt5ZFpYNmJkcHRhejB3R0I3Wjd0MGdrRUdVNG53WkRkdWs4UEtneTMwaGpwVXhWSzVMb3BKWEkwWUhrQlJsZEhabTRhdDFYcHRFck1rU3RWdlZjdWcyazU1N3JNU0liUVNncEIxakFWa2ZDNkd5c1p0dHJLN2FocXFRTVErdDNXcjBKT1NnQXJPR1VVVXA3Mk9sQmkxM0pXSW9VNjBkK2N4UDM4bVhkMkVSK2VMbWRPOUUxazVnMDRISGRhVUNkcG1yVnZtUkZ4TW1VMmpoYVFFaU9CRVJCMmlxcUtLVTFGNnhvZXBvWkgxZXA4dktpT1hLUmNBbG0rbVZHTFY5ckRnSXdvM2VGOXJNMStxL1UzWkpMS0dIQ2RPelp2NityTDdtUUF2QWRqUTl1b292YVJTQThBUU5TSW9QVEdLT2hVVnNhS2RiclFiaVQwN1hOdHJKcjZ0N0kyaFR3NE0yTG82d1dCMStXRTNkMXV2WmloV05EeXZwRWRKeHFKRVVtNkhxS0FpVzRmQjUrNVpJU0d6R2xYWU43L1hvZUhwcWkxR1FCRlBGV2krbVlLSzZYY0R6L2tjcG1wbU5DUFpsQXVFMUF3eU95cnAzRk9lM05LZGFqbk55MURSMUM3RUZJa0NVYU1LU284NFFYdVpNWGVVYmQvZVhaMGZFR3h2eTlIL3RxSWZCV1pObnBtQXIwNGhmdHJTMElKRFJVQzBGeEcxY0pmSXB3WFEwVm15M0hwTlp1czJPOTQ1T2dLaFdpUENrbFpaT0hsei9Ienk2WHpEMTQ2MEZTcUtpWnNLVVBJOTF5dFA2clhZUnFrMndTSFdpVUpqU1lFcTJkMnd6bURKV3JUU25aRUpINGFKYjZ0cmtFNFl1NisrWndRcDNRcnk2T2lRTDZyMWxadmV1SFRDeGw2SkJuMUZMb3NxQ1p5Vi90OHRDdDNPV2d4OERCRFhPMzU4OUQ0UVVqdEZVN0paRzFUOTJLdFFiYzJ0TXpSMUtGbkZ3aXJlZTA5WENoWjYzN0pEeFNacCtwdWgvZ1BBOHMwVFlncmlDczRBc1dqS21odUJuRE1jWU1wTXMyejdhMGQyU1ZFbXdOeCtqV1d0dStjUGY2bkEweFhDZ1M5T1g3UzQveWFCWVJnNWJQc1ZDQkZIYmdiaVhMUml0K3c0T1d1ZWc0aEZycCtnZW5OemtVamxSeGZudWRoWG9VVEttNVZSVmFseXNtc1B1ZGF6aFJrcS9pSlJhUGNnU3ZUamVtSUtnNnF4ZTI1dm90bW9UVE9nSXM0NVlOdldKVjNBdkYwSU1IWi9aRThJOG83ZkhMcCsvZGFXbytYZlpvaXNrUE1WcHNPU2lkdWNXTm1CbVZMaUlnamQ2aUpPWFZRbFpSRmlqN1YwRXJsOGVlc0xXazJNQVhaOHkzeG5tS0xOWkRPOTkxbmdtTVJwNHF0dEZQbmttelZLdDVJeW8ranN4Rk9lY0M2aGxFVTBpbUhlTGJTYk1FM2FxeUtDZmxvMVJ1VEtYeDh6bmdEYjF1U2NhR1VMN0VlbGZ0dFd4L1Qxanp0bUEyRUhzUGIvYUl3Wkh0ZHMrcTFYYjdwU1V5VWtPUnFLOVRLS0NmOGEwVStCNnpGeEVDZjlPZFl1b01WcUpVK2FPUkxONnJkUTM4TTBmMVZOa0tEYUdhMWJTMEY1Nk92eUxmeVVmZlhXcllCc2lWRWNWUUYwdFB3YUdJdW9SdTEySUQzdTR5Q09ibjJWKzFBNitPak96czdPem9YeFJBRmhiZnNQOW1QamdQa25YYlBveDMzSGFPTFhOcjRFQ3YycU53RTBHbUhwdFllcmdNdmwwTjJLT25XV3VMVXlFUkdSeTV5WWQ2dlNNMjdPMUdaSVpiZk5FdjJtNWk0V1hGWGxwK1FmYTVLSkpLeElGRENsa2JWSENOQW81ZTgrbjVnR09TM1ZLS2RmUG5GV0x4aklSQ1N4dEhHSVdFMnhzNGhFN0k2S2t4aGwwM2FIQis2ZlpvQW5YZG41QmdWbDd0RCt6QmdPMy9iOTM3OEx0WU1kbzgreXpPdkluMisvRWpXb0pVNTZMYU9PbWljcENVS3VVYU1TcldCa1haTGlyWkVRUWtqNXZmcDIzL0tuWmpROTYvMzZ0TDVya21PMWJmV1JrcEU1bWU2SkcvOFNETVNib2lSWVM1M28xSlI2VkplMWljVVkyNmYvbDNJK1c2c2lEWUg5Q0hMNHpWZTA3ZHp4L21PVjlBZ3NTbTE3NTU0SERPTUpTM3BuV3JROVdrN05vUTduUkVVaXFzNXdBczZKczlkTmlhNXR1VTgya3pGS3lENXpBazk3WDFMdGZkbElTdDVjRW5QTlVQTTNNcWY0Wm9CR2FkelIxVXdtbFhGS0hrM2ZhRFNMdCs0aGVKN3NSVlJqcjhXeVZOVk1ZSkZrNklxSTlncnFCSWtLeTU0Yy9UREFDQXRtUVdmbkFIU3V0NElkM2E5UTBnZG1idCs4NVIvZkMrUjNzci9XU2Rsa2lwdTI3Y3BJMUlSMk1GQnlxbml4eUtqeHYyMVNoQW5EV2FlSFNrNFI2QXN0K2lKNGdtL1VqYVJRN044R0pmWWJpdklJRFYrelo2c2x0OVBoNlRRTm9CRjhJQlZ6ZVI4TTJBZmRHY0d2YWxoU0lWcVVRYVAwa2lvc0pETDZxa2tlQWxOL1B1NDJnRTRHQnViOFJ3Qmt2eTU1RkU4K20yMExGNll2NCtGTHR0elJZbTRHcGtPQUpldTM0NkxETkxuRzFOSWg1VUhNOWJXRVo0cWl5bCs2aU0vdC8xSlFLWWV3U0tHUGdQVzF0UG0zVVZYUFZra3FYeDNDTHR0eTcxbmp0TFJ5VE5ZekFaL1hEUWpMWFVKWFNnS05XeHdvS3BiMnNMaVF2V3NSSXN0MlR0dWFyamZqTGRqNklSYkdHanV5ZDg4SThycEgzbmZPaFZKSlN5NHhCdW0zb2s4cjJLTnRVcmRFbkNoT2s3dlJhekRmWHF0TGlDS3Fva1I3Mmw0M25hcUZTUVl6VnZab210UmExWTY1aG8waXhtaUFiL3JVVWI3RVJ0SnBjbnVUekliZTQ3TitUOWYwWkN3WGVHVDhxSE1wc29oWUh0MklJajNXd3lFMU1WUHJXcWJiZGl4SkV6SjhMK2FnRDhnYVhreEdmYzhJMGpYN2gyMXZ2Zm1YdGRZYXhpQW10b1liMEF6QnpYakNaY2ZKMmk3UzIydkF2dTdzN0JxZkNCSkZlMWhIOHEwcC9vTmgxc2twcE94SVpGK2x4ZlJOVXFnUmJIMGMrMWFja3o3dm0xUU4vaXFQdnZKRlE2M0tFSWpQN0RTblZrUlZVcmNRc1JoY3IxanlPU1BPd0xuZWJsOHJYQUlHRURuZS9KREhZT0YraEFIOXpxL2dyQjk4NHJTQ09yRXhhRkNINmViSkxZbFdnaEJWby9XZG9kZktKS000amRhTVJrU3RCRXhSbFJHc3RXSUpVK0VOclZEa1NHS2VxaTZoY2t4U244enMxeWM5WDN5V1J1cVpuRHFkVlFaYWxuZldXWU55V0dEMjVBU1BzL2MvQlViVmlzQkVOQnFwblBTSWlLcTc3SzljT2UxcC9Kck85YlpheFhXc09wcjIvZWtZZmhPQXY2N2pzbUJ4N29FNW5OKzl3ME92T0JWeHpoQm1vajNnVkRDUWJFU2RKdml5d3lFVFppM1AwajNIWEVQR05OaFhueXAwS254SkY1UnB6QjFqYkZMNm9JUjhheTkrYmdZVUN1bktuMGErcnYwei9VbDZGQlZOT1UrMXNDS0o0UVVnaWtTMGh4aFI0alZMc2hxN0MxNGgwczdRa01JSE9lRkZUTzZlQlJmNy93TDRIdmxoRndIOUNVdks5RFFCYnVvV0Y2T0YzUUNSU0crQ0JEbERPbGprTklXQVpWU2VLVUkrVGV5ekZFUFpoQmtPb2JUSk1FMVFnQ2JKVGM4bVdKWjNXRXpGKzNyUGs0cFdUYXJZYi9Bd0xFNVRKRmRVSkZZRkZZaVRWR0FSbFdpR2UrL1N3emVUV2h0eE9wdzdWSUd0MmU5VnVGZnl3eC95Rm1ZblgzMEYxb3kvSXo4UHdKSlJWY1M1VklJckNxaEQxTExRa05OVitiMmIrWXhaVWVrVTNncjZteVZ1bXlXWjl3UnI4WkJXL0N4cW9KSlExVjhMVkNabEhsSkx3THlocG9aOEhURG40WE11SlFkUnFmbzJpR1hXb2txdGRFeWlhTlRMWjdnU1lCRDRjbnU5SEVIYVpYL25RODc2eFBmeTRYRVJzQllZaFBNWnpsSmpOQUZHQlltOWhrMnlaa0VSdzF3YWxEeGE3a1M3TjgrTzJjQUJlMHNiR1RaU2d6czArNG91OWdrMVgyNnFNc0IyMGZpcGoxRGwyb2M2YytUZDZ5ZmF1QlJKWllXUmhPaDNHcU5FcDY1cXcyUWxiaXJTdHVIcEpXVHBxbkRNMEJDWWg5WEpnVmg2OVlkL1hiZXk1akkzNjVEcDJmelpmS1NvZ2JNTTZnZFJuQk1YeFNYQXRiV1lROVJLWDV5RllFcmIxcHB2a1hWdm9KYmJNNDdKcFQyK3pocTF5YllzaU5WbXBXaUpHY0tGb3pJZituTHRnT2UvalI5RlZTeEsxWXVvU0RkT1ZLTFRMR25WUlhFR2s5WEpreW9hQzJoNysxQTdEdzNjcWd3a3JUdW1zVWNFT1JZNEMycFdWb2NaZFNKVjQzUFArcDI5WkJlcWFoa1ZVOVYwVk9sSkFXQUJzdVRLTTVnL05reEdaV0ZVelhUMjU2MUNxbDdxUVlwUXB0dW9OdWVhbjl3a0lMRmpMUk5TeEZqZ0dhdi9NdCt2UjBIcDBTaG9yK2tSVUxGZVRDcFJrU1BhaXU0RE9CZmFNZmg3SjcremY2MHNZUGlzSC9LV3pDSHVTL1RUMFFIY3hMZklVajI0R1Z1ZGkxYm5raUhKR2kyeks3WmVnbjJNcGpaWlI1NnZNbXlSd1JUdTgwVmhOSE9nS2dCZHVUcXdwcWFyYVM1aUtyVFNzK0k1N3luTllZdWw3Q050WnVXV0ZzU3BjWVAwWW9FVHhLcllVQlhwQ2V0SHpDeklsc0hReXBVclRZTVl5R0gvNnBEcFArUjdGWWRjQWd3T0RnNXlIcE1aenI3QmtxaldaTTJKeGJDak5aY3JKVHdBb2hwZFRIWmt5UXRYSFVNTm9taStRMmcyVTVsVlY5b0xETklRU2pzNFgvMVN5YkI2YUN4ZklOdTdtUUNaMWdsT0VaaTlyQWVWSGlkS2ltejNSRVd0RXdVcGhSQkZSWndUSmN3c2k1amFtZHVwdStqN2wwTitCV2VkOVphaVErS0t1WE03Z0k0RWxnbUVadkF3M1dTUnMrQkpDdnFvcHFoMUt0QjF1VWVicGhYcGZUUEpsQnpFeUdVaENSb1NTbFRFUnFrMzlLblRuemYvdzVLOHFmd3FCNEdwZ0x1RmN3ekwzVXlPdS9YVTlzQVZpTVNlcU02QnhJanJzZmFFMWlXV0ZKMnpac1NPSFRQejdCaXAvMWRyZzZ6OXE5U1BoUi95Q1ppZFRMOWhDdnI5ZktaM1laQnBUNktFaVZ3cmVYR0NTMWxwazFjSkZlOVFaQXFRMDMvMTFnQ1ZTWlJmZlUrcHRLa0RIbXV1U2pLaEV3YmJDTnZFVE4rOHNFVldWdFpRTHYxcXZxYWZuZ3BVclJRa1ozQkVFMXhSRFl4RlJOQWVvbU1EdTd0T3RYRkFXdnc5WFIwOU9EaElSd2ZjUkhFbXdpaFdmcXNxTG9xS0lUUlEwT2ljZFY4VE5VOGxSc3dnU0NLNG1WWVd6R0dPUGtpR2E1WFpzQ3VIVUtjSlZWODQ0eEZQYWF6VmJKUzBZT0tjZkZoSU5uWUtKWHRnbERiRGtoa3VTMXhFblBUZ1ZNV1N1clkwSU5iVFR6WXp3OTZKZEM4MVdFTW4wTDUvSzZoMG1QUDRIck9qMmVpWG1NazdhSDZJV1pSNDJvNEV5M2pFS05HOFdoY1JGZGNiWTJJVXE4MFZjWFlueldBT1hsY1NUTUZiS3IyQkorTjZDK2ZVNlpEY0RHL2RHQzJ1NVkxY1djQTFhSkxMcGh1Snp6TG5aZVlLOXNXSE5rYXRvTjR5SWFJT1Fic040bnUxcElTMG9FUlJuRTZPSDZyZFRNMXRoQUZZdmIrUmk5UFAydVg0d2FweFFKNDRQd3dhUlRRbVB6MHZnQ0txdlM0VlJ4TlRxWldpREpmdTdGV1RXTXQ0MXlWV1BmNVU3SzRzckVMV0tLRXZFNnJta1hkVnhDdzdaMlh1YTJjRG9DMXFxclZSaUZncG1DT0NYbVo5OTdGZ2cybVVOQk83bGxjRG5jTDgvUTZVQTNrTE1HRkNFWm1EZ3gwQzM2SWVWaHJ0SlRWYlRCMWlTZW5ucUtLYW1oYUsxS3d1czZheWlWcWFZNlFRVldqNmJQejZRb1FBd1dwMnlmL2sxZ1BaLzh1elZFUkszWEVrVUpyRWhocFJjWkl6Uzg0MG9UaGlGSWV0RmVMb2RSWU5JaHJJdVU2TEdnRUdGQmpZN3pwRXYwY0xaM1lnb0wvTmRFck9Hd3M4T0ZWUlMxYUpOWUxHbFFwN0VTc1FUYWNLbmx4RkZXamkreWpLb3Erdm5nZFBKSythOWRaSFpwNDB1N2tEY0FzRDVHRUU3a29mOC9FZURJdVlRTXJXbWt4VFdhUmxFYVVuS3FiWHkyV2I5UXZVOUViN3d1ZWV5WmF4cHdRNWIxckwxNDZPanNFT1ZmUmJvOE5Bd3dmdm1VNWJqNmpUcU1WQ1NkQzVWSVVicmEwWmVmSFNqRjdKVmxYREZ1SWtxWUN1L0RsVUJldTVockRSYk8yQ21VdXdET21WTkVSVnpGazZDQ1IremhHVGNyRytZWnRvcDZJV25pYUhxQ05PclFqSk1pVU9SV1NMSFZwZkxLQmVybk5nYWd6ejNRc00waUVpOE51MnpUcU5yZE5VRmkwNFE4WmEwMDZKU0VLZ3BiU2JpRXZNVmxNUXZyYmdoODJzVDJxNmNFMDFHbFNNQWFYbFRGZCtZMU1KUXdqTmxsNE81T1pQbnVDYjF1Y3NwTk9wT3RNUXFZVjlXcElOU1ZYZmd1SlNvYWN5SlYvSVRpemxId0NHT09wN1k1clBQU0hJTGtYWWduWU01ajRuMzJJNlZVdDdnUmlkSmRBMW1ybVNLKzBWVXYyOWlBRUhHRTVtcmsvTFAxVk9kS0RocmIreXNVRklYbCtvdStHMmR6cTRZWEg3RUpMZ3luNmY3MHJPZU1obkRvUzBwRXdqbEVhYWR0SVVkVStWWVBTbXJHRzBjdUpvUU9Yb1JGV215SEs3MlJESXVhTE1JZ3J0OEpZeFRlNmVFT1RiWEhGZStyZ2dCb2dNMHRFaFgxeWhDV3lkbm1qVWNqbW13S3RXdDRnNjYzcmdVbzFZdE9VTzFXanBRNkJhYzd1UzY0MmNPRXliUTZvU3JkeEdNd21DZ1lUU2FzYStSYXpuZEVndWFDZzJkRUU5TnJORllvczd4SXlVUTlIZUtFUXpEYTNKa2NWUkZOVlJKbEJyT053NitRSkR0Ky9YVnVPU0x1cllVYkhsSDc1VHptZHk4WXM5bTBFUzhLZjB2M1NJVTRrbUFGUTBsWVNtbkdoZlhRMms3bkM3cStFcVlsWFg4T1oyMS9kT1UxL3YyRlJlbHVwQ0xSWjFLZ1gyWUZqOTFMWEkwSEF1T2hDenExU2NjOG55VlhXTzhkSVN5V3F0TURUSDhKb1htTlUwUVhzMHBnSGZnM2ovK0d3ZUNmMWlCVHNtUm56NG5Oc1NpZUpFY0QzbTIwcXZXbjg4eE40eloyQzA2RVFFUnJ0TVlDVDVueENMTmN4RDliSUhneVMwbUUxSncwRHlKNXFZeUdyV3k5MnpYNS90cmhRSzlWa1lsa3pZMDFmM29BclduOXNsektYZzVGT1MzcUdrVXh3UjJuNFpXdzZ2alU0c2xuWHBXR1oyTDVUNlc5TFJEdWdRdmdnZ01OMTdRbWlHNWthWlpZcFAwVjV4dmFDeE95SGh4WHA5cFVJTEJZMVJqbXhMTTVWQnZsVTR5NTZ5cjFFQjZNeFo3TFAyL0dtbjZuT3ArTURXdDI5QXMwblQxem8yTjdFS29RQSsrT0JUS1hUR0NUbUdNd2c1WWxWNFRtdzkyWStMSlhVdGpXT2w2dFBjSEtqNy9pMmhrcnYyYjMwSTZDYU1RN0FFVG9mb0Z5K2hmN0Z4U0FEZm9HdXFHOWVUUU5XS3hoNnpVbFF0YlVzQ1orV09LQUlNMTk2dTRFTWhUT2FQYkVsbDBlQkRWNk5SRHNBM0tFbVRTckhrckZTamthR21nUGUra2VGRVNiR0gwTWg4aHdkbWpxcTVUcmtWcWJWVk5DRmxhVU5KQzNFSWZNeXRzMjZlU2ZrWjBOSEdnSnloTEJ3alRmYkl5bG85T24yNlREOGNYSXBBb1Z5eWdrWDlONEhsMUVPVE1QcWtMZWhTT3FkMlM4SU5XUGV5REg1UUo0S29qTVlrV1pLdjU4RUgrakpJaE5Cb2xpaDY2anp1NjZYblJxdmlWaEJxRXM3Y2ppd05TL2d4SDFZVVN5T2JaSjZaWUthSDRTNnRzTkJLMG5GcWplMmRPTVJGSWlKYk4xZnNnWEY5N2ZPWXg1NFE1UC9xbEowN3gzLzlTV0Q3ZGc5dVJYOS9mNzlxdjBMT3FYZEJLa1VRc0VVMnBGdGpFcnBKaldCV3NXcnNnWjRyc3h4cU5GTzR4SWVXUlFyb0NpWDZWSGlwS1A0U0dhNSs2Z3FVT0xHVnUvc010YmFkbW5ZeVc0REJaL1VIdmhsbWJOalJsckFsYWpEWUhJQVhCSmZoUVRGQnJSbWRNdld6M3FlWWdNSXhuWjJkbloyZHg3MHZSWHYzWjhidzNaZTk2UzF2T2VkM0FTeUtzOGkyTDU2YnJHRURURzNla2hvRm9PSlFVZk1FVlhQdkw0TTJFSEgwcU9nbm8wdDgwY2dJdUJ5M1N0NWNFamVWbG0rTm8reXFUbTF5RW1BeFZFbDJzbC9pRzVWb2hMNlV6R29DRGYrUnFJa2VJaXFhQU1uMk9VWlYwUmhGMWZVZzl0Wk4rdldHVUVmWkF3TURCWmcxNWdUVnN4bVZMelQrZGNMNFc5RTN3ZE96Y1paM1hWeGJRU1F0WDNkVjIyeVNZV0tMa3FibEdJRmtCMXUwTkNWRVFXYzlUVGFFNmszYmE3NTc2cU5SK3BMVnJrbDZPMzJKU3RhNlBnUW9TZDdkcmFCMCtxeU51aUQ0NEtkdXNFUkh1bVY3REdzTDYyTHVBWS8ycUlKVHhNM1p2dXM1VzFvNFBQNXM2OTd2UHZhRVE5N3pxeDkwZE1nSGoyUjJibmVDMGFORGNBeGJBMTZtcngvZmEzWGU0bEpuYThOV2l6ckpDOStMVTNWUlZVWGFOb3dtOEhqTnY4aTQwa2J1VVpuTTRPd09KcVI5clFOS1NESGRrdWIxRnFiTUVmMmFEMmxSZ1ZwMWZIWm1vSTh3Y3VUbzFTcWZqZ1lKbDRRSXNoNmVUcUl0QjFhYXRVbHYyeStyVmM2U0FoOHd6cWlYVXIzZzJCT0NmUFUxS2hLOWxoT3NBR0J4LzJBdU93d0JocmRHUzZLbnBMbkxNdGZXM2RGdUo2Q3hKOWVyNnFTZGdDVzF5OHlGWUVyQUIzenVxVnlHZ1lSUy9NUlhjYWdxdXh1d2lwTXNtOHJ3MmNmSDdPd1c3eERiRUh0SEhKZFppSUZvUVhjQnNmQkM2Z3J0b2pwMWlzYlJPVFU3Nmw0WUdNZ2MwamwybzNmUENITFRhZ0ZYRlJZbUhkSnZDYXJwWnBVdWwxbG9Ldjh5cndwVkVTY3Exb3FpVzFWUTErM01rT3lKUnpxQVFGZWFKM1BaY2djc1k0dGM1R0VqZFF5dzRGWXA5Y0RuMWR1Q1NhSUVtODh5cnh5YmVUR0Z2SXJKYkd6aTR1VnFYUUx5c2psaXlzTktwYzJoc2h4V0ZGVjZ4dm1wSlFaMldsN3hxSDJOTUtEN3VjWGZCUmQyN0FoYi8xK2hlem1IQlJndEpqdjE2WW05YWQzM2lOVWJJTVl3enFVMWc5UWFxcWNpa2ppYzU4WTNBZCtWMy9qQ005YWVyL1R0TFk1NU1YMTkxZWduYi9iMURvcFZSeHI3TDlTa1l4UG9DNFkrOFFCL3ZyMU5KQW9PNjlFTHVMUkN2TDFqb3RhODI2VUk4Sk50bjB1dlVacWFUdFpuRmJSZmNWazNIci94M3paZTVVdHl5dVlUd3dJeEhBaE52L3pEMW5uYlltK09WTnFaS0dPdEdNVlp3NUFlVVJIZCtiUWpHVlBXTGk3NHJDOGFaU0V2b0N2NElxcEtTaU5ndGwzQW5PN1NXai9VaksvYythK1ozYjljZmVEQm1zUjJXVSt1WnZENEpWZHQxdVQ0cHNpMGxWRUpUaFMxdFkzVW12eEZFZWZpMVNNYmtsRzM0M0dnTTFzRW5VRDd5djFZaGZ2ZWYvL3hSeS9hOEN4SEQ0S0pyQzdpMzB3M0ZMVXhoRm9Ld2N5dEJPUWdwbTR1M1lwcTIvYS9tcEViNFNkSHU2cG9hMTBJUFZUbUxNbi84QVFmK3V5UEllUDdBcUhMMTBLSjJaRHlOQnBXbE5CaU5kc0hXNjdOc0VOVEpvTXRDdzI1RlZDMFltNUJJODRhTElwMmkwVFYyTk03bE1YNHBFM0FnTWdRTXBTUWl3djNhNnZ4TGV4V29LVnpvYU5Jc2VBZW9WZlJucFR6eEtKV2hwWkZuRk1wdlc1dE5RalZhejZTSnE1cDVtdFMwaTJhUFBYcnp5bjF2cVREN1lWdlZGWnQwandoa1B0aXRVQ0ZDR2taaGRLV3k5ZXZEWjRRMm83by9yUlVGYXFwTDFNQ2xGcWEzVUx2M1NvT2NjU3IxeTczd01ocjlOc2dDeG1pWFl2eTJLL2g5L3h3RnVETXkrWjFEQ3FHbWd0WHRSMitWRkh0RVRYcGF6RWhlNTVJZHlUMmlLcUtneGdSRVRtaUxXY3VMTTJSWHZWbVhlaVlRWlc4dXI2U0preVQ3OHU5bGRZMHplS05sTFJKZ3FVMnN2VnNKa0R3VnMxWVEyeU5oTXMzSVM0ak1kUmNLaWZkcXIyV1UrdXhLTEFqUmpUS2xWZUdTZWxxYitOY2hvWmdLSHVFN1l6UjFOckxGTzZFOG1reEdDdE1CNVl6NUFxRU4xZXlTdExyQXQzaVhFOWVwbEVBNmVtT3c1WlphbTJYVWFzb1R5UE5yTS9nb1B5bWwrYll2b3BBNXVWeDB6bVNxQXV0NTB0L2NqeWxPa1MzdHltMlptUVdVWTVvdmUwVkZkZHRpZmE4U0VXTVU5WmQ1V0Vxd0MxRDdlM3Q3VWk3S1pPaGxmc1ZkVkxhQk1RSlVNQUpnMlFPbVRwaHhoVERBQmlHUVJ5UzJpR0lVNUdVYWJNY2d3RFJMWm5oc21scjFsSHkrZXJwQzhpaEZLcnVzQ0h4UWNpLzk1bFNUMjk2RGJlMWV6RkRYaCtzZWcycVVESkxyTFY3UmxNTDF2N09GbTdLQzRWSWpwdzZWSHI4NkpRQXNJMWs2TFpqT2tSWnVGOUJEdjI3YnhyTUg2WjdQamZ5Uy8wWWlVV0VTSXpRNnlLcDRic2FldHlKYUsvVnE2TWJ0dVVpN3pUWFhkbGp0endzWmZveVJzUkQwMzdJZmgyQlp2QU5NakowbDdGTG1LZ1BDS21WZGg5Wnh1VytHc0IweFlsenBJWVVJRTU2UmJRbnhlT1RkMkp0Qkt4cDRkL3V1S3BjWldob2lJR1ZEOW9hVkFlbUs2bmx5bUNZdVlzN3NCSVJDSDcwcVZkY1lUVnJHbTJ4RTFIdGpzNFN0azRnR25kRTdiRmxkM3JqcTBaYW8rSWgyUFNtenluWjVNdGJIbElvdUdHaGtzeEphYm1EcXFOaXFKQ0xtWXVTclp4YWJqVElqZXpzK0N6dlBORnZ2OElXd08yeCtrNVY3UkdSSHFlU0VpRUdGdGVFRzZlMzV4RzNESmo0YlJocXAzMWxDYnpQRy91VTdzMklPQkIzQ1F3TzBwRUsxWnVmMlRwbEZJaUljdzVKa0dzRCszU1RNaUVDb3IxT1ZTS2djYjByaWFnQ1MvQXBIbGpNVmd3aTZqTXFLOTlISmRVOENhVmQ2ckR5Zm40M0ZzbHRDb3h1ZG80UzZ2S0JqODU5MnBtMDZvMFpEMlNDVnpRWGZpVzdLNis1YzhYaFQwMENlQnUwRHp4VXEwaTRaK1YrdGJLdXpCOFd4TjEvM0REeXlMZ3JuUW9Tb3lWQ3dJbHpFdW1KdldKbGhSYko3c1labHJSdDZ5dVc5SFZsUlZGeUlIM1ppeWhSSjAranJxdDl6cHhuUFdDUlFSTkYxaU1nQjAxcVhybjNubVl6bVhIZ1E3TnE2MWhjVEk5bkVxU1dNeEZRRjIxcEl5Q3RxZ09LYUZTRkh1ZFVIVlBXWFFXVFlFMHBoUDRnSEpqVkVRRHUzNEVRVjBDSHJSOGlXMkRTVXpPWG9nNHI3VVl0QmhRMWl2UzRpSWhUU1FzWjVzd0NxbHFBNlVuYW1Jc2UrbXFhbmF5TWJjOW04S245T0JiblNsMGFHa0JLcWdSUG4ya0dtbUF0WW4wSUlmaEdWL0ZaZ20vNExpck5sTnhTQWtmR2JuS0VJVHFKNGh5cVRudXM3aWdTY2RMdG5EcTBKMFpFci9UeGN2Zno5ZE9nV2w0bmd4ekdOUFpXaDR4SGdjVU1waUxjeVl5RzZSTlF0V0l2QzVXa1BLNEZHMUk0d2tCYWhxdVI3c250bTF0T1hQa2VqVlNTWHYxVXpLa3UreDB5d1h6TnBDM1U3UUs2ekZueFhhVDEyV3NYTUxjbVZKL3o2V0ZrMm1iVmlCSngxcVFYVUtldU96V0RCaGZwdGlVYkRWcW0zZE0vTGt6cTJrMXk3RjlzNzlMME53SW9pd2F0Z0tvRGNmeDZvK3NtSldvdDhZeFlnd0J4b21MTDRpWlVFUEhUcXRLTFBERTZLMDlFdmI2QS9NNVc0ZkdXWUcvMjR5MzcwYXcxZFVwdXZ1VTdBamxXRW1nMlBOWmdQR1JqT0ROa1VpR3BNWUZ2K2lVN29zdUxUQ1Z6VjVGVTZ5SlJyRGR4NnNZdnFyMHFTcHp4UzBrSmlSeGwzQVZXK3J4amJ6bGtSeXI2R0V3c011TDhoQ3N3aEp5dGVPUVMvRktGYUtqcXFsa243dU1DdllKT3NuS1hVaDZWTURtRlYzekJQdFJFQy9pK1hGT0ZwMnFsblBWSUhrbGJoTVJFM2plc0NVVHEvSjZUd3I2K1lsOW85TUhoS1UyTDZRNEhhV1lkNXBLSXBoSXFFTmVqb0wxeFpxQmwvZ2NVMnZkdlNkdW0vR0hCK1BTaG84TnV3bzNxMGxUSG5kcVRSWFhXSHQxUUpsVWZPYWRJakFwMDk3UnZyZ3dwKzlEd2dkd3EzM1JzbDYvTTI3N2M0NnlSaWpZaFZENThxQno4R3N3dUR6dGJ3M3RDYW5tWmM0bDFmeE5vOE9IUkozc1Y3UmFpRmVKYUpzUUExazVLTU42d1FCWWRpcjFieDIzRk5xYll1OENRN0Zjcks5Y2lSSFlBV2FVL0NzQkVjYWlMdGdwS2pJaG9OT3c0Z0tWQkVWSy9VbHRWcExIejhsb3Y5Nlp2a2dySWsvdEJzbm56bEZuWUpKVGNZakZ0ZldoSngvdEFWYkxoazE2dnpwYnRYWjlTOEQ1WHV4Y2JvbjJTQlhXdHRGdHc0cURIT21jbEI4dFJOUXZTcThuWmRxMnR0YU5ZOEhVc1l5ODVKQTF6UU9ZcFRBUkExT1ZWVURKR3dKWmpWQ0VxVGxJSnJtQkxWVTJhVWhjd2piNUd0bEp6WlZRVzlxbVRmdXA1bFJyejVqVW5xUnNENlNzSlBPUjlNL2d1cXlmSjBTODdyMFZkREhLU29wWFZEay80eVZjb1BRWjdFMnVCSUQycUtXUktLZ290YXkxL2pCeEtxZHI2WFFlUHJXMlhBMVFma3JHOWc2bUVDdENJcG5ySkJIa1hGVmNNRWRHb0NmU2VOR05QOEswYXo3SWZUWUlQRGV1S21GbWdrWE1oaFE4OHdYZTE5QUhhMWYxTHBHcmtkRmNLR2JkMjcrMnE2a3Z3cFVTZXkyZXNheE42RFJkSGRFaU1Gb0EzbThyMGlvaVpLTGI0aHNMS09qanVnM0QwM0RHajVmYTZZQ2V2VFZoNk02V3RxUmRBYmtOTWRMbHppS1RsZ1JLS0VYRmJqdnhvT2JDYXppNVBBZ1MxdlBYVmZqa21FcUMxTzUrdi9ac3NzMVpZRnBYSFVjdUM1VkU3bVk5SFdEelhrYWJVOGlCbDRaUVVQclZTYjBpTlAzZTNjWWQyenlBOSs5aDdncVNYdTBPQW13QjZKVFhsRnNHSmVVMmlFb21wT1lpNFR5VWdxZUtjeHRpKzJjUlNuc0prK2dRTDgrWGdWZjIzcEloelQ1cjhzcE5jakZLdlptYXNGUzVhWHF1dmdPU3pOWlVMUFNzQzFocWt1TXQyZEpzSGkvRjh0S0o2TWhJN0ljYlYyaU9VRGpvdDh5ckkvbTQrcy9zUW9QLzg4c1hsNXJCRWlNN2FyVWFSaUVQNW1GTmJXTkxGNkpadC9qTVhpcTlXSmlla05nSFB4aDlKdTVDdDFiSzEvRk5CZkxKc0NnR2FJUlZRNVl2VVhvUmNHSm9Jbi81ZGNzMDJWOW01Z0hOcVhjeVNDc1NsaEdpS3hydG5FVTNLWXdkc1FaY2RpWGM3VUVscGttNXJiMnZkc0F6bGtQeFdwNVd4SmRHV0ErT0swY092WFpwZ2JIbjFtNm9kVTZnYnJUNHBFKzhwSzBidUN0YWlXQUUxS1paOXdFYU5FMG9INEFwaGx4d1JTQmEwRDdCMTlvNHJyVFYzQWdWRXhNUnZ0Snh1VE9FaGM2ODBvckN5cFhFQXNucnUwRmhqSjNzYjdSMWZmVm14b2orZFVrU2ROYTkzMWtvRGw5d1FpeXBHVy9PVFQ2a0liVHZIallRRTdlbXFZRDBXdHNyMlUxVXhXK3d2Yk04YzdTaFFJUURmREJWcitlUyttemtiU2oveXZ0cURKQ0wxMVNJekh2cndmdW0wYmVvY3FEaUhwaTV6WUZBQXhSYkhsUjRCNjJPUE92amQrcnhlaDg2bmZhelJ4YjBqeUFKb0ErNm5BNzcwenJTeEcxTDFMUkpkTW54VkVWc0R5YTZxa1I0dUU1VFJiU05MQ0Q2OThrbEltUklPWmVIVUVMQW03aGFJYW1aQkZYeG85dEVIUGlWMFE0RFFwRkZGVmZMNzc1T0YwQ0IxZWNpK295K2gzcXJUZzhWN0c0UVFSbzdaZm9XbDA2TzV0VDJXNWRUb1BwMk1XNlhiRkQ0aXprWDR0VmxsSnNnLytLS1FpN3ZhaUdNYk42ZS85eTlnVkJ3TEJxRmZWcnh6aFpsY3VlT3pSQ2tOb2RXOFdvZEZnTURGYm9ISXNtMnZHcWJ1UnVTbENLdU1YNUl0cVUrUHpXVUdWZ2NhV0tnMmx3S2syblZmQ20vTHVYMmZIZWY3dW1wWTdaRFQ2QWtHWmxlckFOOUxydGsrQVN3SXFvSktqNFYvUmZSajRHeWxDbHV3SmdPZkFLZG1hZW14Nnhqb2hQMEt0b2J6OHRFUE9JODY2UmpzMTZqOWVsUHVaQjJ0N2dCRnBNZXFyRkowTG9QL2JLVUhZWFJtWEZyNndkWGp0R1Y0aWg2dWZpOHVBK25Yc254cUsxZzA2Nk1tM29kRzJxdFJDK3FXYUg0enRSVUtKUlNjYm1ocjIvWXJuTVpvUUgwbjVrRFJFOVdsbDA4RncveGxmM0VsSEtOYVd1VHEvdThvbDRhVlQ4VCsvclVBaTAwNmRhdUtMZk9PQ3FyZDF2L1dDdk0wUm8yaXRncW9SSzdjdkhNa2tDSkx4Y2d0cUlPS0FoWFFrUG9QT2RkTzE2NXFtUXpwVFkwQURQYVlPY2JUOURtMllxTmc4VUpvTnB2ZWg3eEF4cXdqdDQxR0pLMEliNjJ0TldxdmMyYjJXcTFJY2hpZHFNRENld0VZR0JpUUw5dlpENVRaR3duRjlLWi84WGtRK2JSb2xMUXVoV1l3Z09GN0VYSE9taDhZK3FGSERwKzZwRlRQMnR2cVMzVFcxMTN2V3BDcWN1NEtIcTU0RmRsQ0l0Y3k1UG9xaW5ZaXhSVnBEYlZVYjBDakt5MGJhdnkwMld1UDVVRlN4YUVnVGpRdFlPaEUxZVdDTUZ1N2paOGRuczdaV1JuQkI0UkQwc2dWVkhhK0VWc1ROaGNYU2dLWm1IVkkxR2pkVGxBYzh1dWRINjRLTVNzUG9SWUp5ZktxNWgraytVK2RIYXFKVEI5OE01RTE1SjVibVdGSWxXdkZsdmFGemV5c3BZMXpkVFhQNVhPM09nRlZTeDlvVk5XWXpSYW42alFtSkthaFR1RzBUVEJnOVFqdnN3c05zWC9yMVBOWUVFSGNsL0pYdzA0N2xXN0xQa3NVcmhidEZweWhxMk1xMXNHTXlONHJYamsxK1diZWgrQjlrVGZOWml1RU5IOUlLU1NMQnhzOExuamZ6Q3RiMkJrc0x0VzBPSy9QUlNNSjBSV3FKbk5aZWpYU251elM1U21iR0NPdjNYU2xxTUVDVXFMUWx2bTBKcmpXV3lOcXlwZzRZQnBvWjJkbnF0VVIxckx5OGYxZXB3NXcvdzRnWG1KWEplY0cwQjVTQWF2S3g1VmVLNDYwQW1qTnFzUkpsTXZHZnpoSmptQWNFbkk2cEpHeGI0VXc1VDJHWUsxTVFuTGxEUmZxU1V3UkxPVGVTSlVteWJmSllYZFRWczJRejJVcUpxU3FkZU9sWnNLc0dESDlrbTF6NkVaakJIRVJ6ZjJ5UkltcVRxSnFRZ2JGcUJMTm5Gb0lESFRLbHdGbGJ2c0JDQzQ2d0J6REx5MEdkSEdDQVhXck5VRFExSmpNbHYyS0NSdW5wQ1djVkxWbngyR2JxNkNUMWYwM0EwMURpOVJMMkFLbE9YdlMwdzJyZ0M2VmErYjY1WU1hRlZPa3dGWXE5V242Z3AwdnptQ3F2Y3JhcEJrSzNEUmdqU0F1SGQwb0l1SlNnUWppVWdHVkdHRExZdHJpckxyVnV0ME9BSjNJbXdDK2VVQkFEakdGVG1CNlA4QmdpdmYyYUs5VEJ4SXRnQ2k5NHBMNUoxR2RZdTFvQURkanl1WFpsdlgyMXRPZ21ab0IxSDFtSUNUSVNNM0pMb0tzbWEzWFdsUWVXcUlpZUVMb285R1hEaWo3Wk1xU0l6ZkZBUXI0dnVSQXhzTkNOMWpDTGY5c0ZSVXBEUlV0Y3AxaldqWUdSSXdTdjNPZ1lFQ1I4ZlhrY2FLSTVaWmQ2cTJLOUZLVzFSSzE5bXdxNG5UWnBrbHRHQUxLNXNlYVd6VVNCc2dYdngzN05TUzEyMmZmd1hBL250RElGVzIxQnNuRnNrcUhHNVBaMmp1K0VjZ2dTSHNmbW1EWmxpWVpWNHduV1BrT1hENjZ1YTNiZ3RNcUx2Y1pUaVVKYWQxck0xVjZIY0JYZ1FGWmlBR3k1SURCZ0Zpd1kzZloyR09oNkpTMmRSSlQ2MkZKbUQrN1E0azlrOXd6SDRLa1FTb3J0NG90RnBzbi8wUHk0Yk9uVGlQUHZLbHZncjNtdVN0Wk5zaHFYM3lnNllQMzlObm01RkNXSmtBTjcwTXAyYUpvSUhmMHIwWEVHbWRwU2twaEdCUjdTcXV2RXJvandMdGg0VUp5UkZHUjl2M1pXcU1LbmJqN1N6NUVLcngxajhiVXlROXhxcjBTbzNQV2ZrcHdrWlFaYWZ2MTNNdlRhdlhKWEtyYS9ZUVVOOHp6V3Bpb3JKYVExQVAwaGRUQ012VXVhU1NsWTdWdHRUNkxUWnA1QVVPd2hWbHJFWnBzSDVmNnJQeGErQWJlaDFtYnArM29qcHJLdWFPZzZwd2F6amZTMjQydHVTSFJITEN2SnA0WUF1Z1U5SUQ1SVc4QTgwT09tcHNvSWxON0VNc0xxQ285OUVpQ05WamZPT2Q2UWRIZVg4OXFvd3BqSkVjc0IyV1RmeGRTcWkrdmZlU3RGTlFuOVpCUjdpVW8yQnAyQ1NHa2pIdGZTRXlROTh4KzZDNlNMWTBhZy9xQTd3czBMajl5YTV1a2ltSER3a1pGNllZSXZiM1I5R0swYU9NdlR1RmN5QURTQVVYSzBpNHZOUFpXWk4xRHpIWHFTWVBveDZ5KzNnU3JkcHZtVUZVbjZwekdTSThJYnRtMnVYd29UVWFHdHVHN0xMWlh5YWRRWWhySmhBMEpDbHJYTDRSVS9sOHFtMjJqc1YyRHpBZGRXUnltcGRXRHQ4eDlwWEtBdXVpMGYwTERBNWU5Y21PdnRlbE90UzdPU3BGc2tYWG5iRGxUZzVFLy9CYUFvZmFoOWd4M0xKOWVhT3k5VW5ld2lNWFFNWmhFV1M4eFJ0R004ckdPYTJuVkJ3VVhWWkh1T0hQYVlTYWFrckNvYVlvc2xtcFhxb21laXFIU2IwMmpWMmdrTEEraHhrUkp1WlFqbTZaV2ltNXA1Q3hWK3IvUE1iRWE4MWdEZ3VIRHR2ZW1RQy9PRnZyTTZHVTBxcE9JUkNjQ0xJUmIyc21GYkhsMXlUR052WXYybHRGUEIzVFk5aDVMUXptTkVGVlZYRjZQUmtRRnRVVFBzUDl3STcvTlZTaks1cXF4cXdoSk05NnNWdWoyZ0RlV3lIRHJqRmswSDYrdkh2RXlGSGFBbEZvdllLMVFuYTFjS0IvVkVpRHJvM0g1eE9tVHIxQ251TFFPaXNWNUk2UzRJdzVYTW9WdlpxaWRsU3RYM21vZVNidnVWdzY1dVhab3V0RGdJSU1wZENMWlVSTG5YR29scWVZWWlnb2FoZDUxaDQwbnY4UnBUaEpncllxUzdISlJUeU9ub2F3Z1BUVWtxL2tOU2NLRjRLc1NuSlJxc28vazRyZEdyY2k5RHVXdTdRWkFNMG16aHNkZk92N1h6bFpITUlpQWxVMDZTKys0dE9KQWJoRE5FQmw5MGdsalZpSDdESFZpSUJjRjZBRnpRMVNpTGZBSElnYjBUWW0xWmR2bng0OUFGV2d5MHZSbG9aR2xCblVDVVVtMjdFeFNxZVJVNEZ4NzNYMTFwbks2OHJNSnRySW5MWjhxeEZETHhkazZhL2hLUmEyOWNxcVNUbE9vTVhYWWdBd1hiQjhhV0ZtZm9yR052ZlBVeTkvRlVMUjZEMFFoUnMxOUtWeVBzKzVZVmlzcGVzWFM2WEo1S0RJaGVkbFowT2MzT3dmaWM5bE5uODFzTGx0T3BNcGFDTXppS29YbWxSMWczMEk1ZmM1SjFXd0hBTXVRUU1GUGdBOE5uMnBNQXJEVUhidnV5cWlvOWxxU1d0VXAwUkJBdmZac0NMQU52dHkrOHFGVW1qakFnY3VIbEZHRHlVMDFIRFdvSktyMVpnRnFBSlJ1UGpYcHc3bTZ0c0tHWk9Heks0cWtDNkN2bVpwVlY3dm5ERzAxNzBCcTVGVDZZYWFMa1BKYjJUUkwxYUsyUzNWS1h6c29yUUZnSjAxL2x6d3pkL3VWS05MZEt3NXdvbGJLaXRJVFUyZUhoTjljU1liWWNCOGNPT1JpR3l4WWtkZkJGUUZHckt1TVN3SXFwZGhTL1U0VTZYYWIvSWRycjZ5dlEwMm82WlVxd21lTDVUVjh5TTNlUFpreHFoaVUrWUZZWUtyeTkzeDI0VXRneFlkVUxWb2pGL2FEaDJiMlJodkY3QVdmbXMxZlBtMzZqbVZJeE5vZW1DZG91ZHlrTjlOMURlUlFFV0ZvNVg1RkxyWmFXZmN2cWhna3B0QUpxU0UzNHVnaGluUXJSSEc5MGlQRFIxOWFDeVBSVjFyckorczJ4ZGxMdUQyNTI4M2NEaU8zV002NUtkK3c3a281NWxoVmJsSnBKUElSdmlyb0lldUpGRDRKa0lMS0hueTloMmFneTc1K2VQeTBUY3MwWjkxU09WSnBDT1RVZ29zVFcrYW44OVRWc0hDL2xpTzBubUVIYyttQWpzRU8yQVk5emhwM0prQTQ5S3FvOUZvNVNMZks4THpMOHN0dmIySlpzU1gxam1ua0NtZHZkQWdCNkd0YUNNc1RmUGEzUS9ETjlIUEFoOUJWNGR0TUl6UWhoR2F0WElIY2E5d2FvaG02Sk8wTkpNaExJbTJqVW16ZWtpNTRmOW40OXRGZVFUWDVJcWhxcW50VDFaUzZudlc5T29CeGdQbHd3TEM5bzVIeFZrQTEySUhJWkFlcERhL2dOTFhndHhWcW9ncXVkM2oyU0tWZjA5TlN3bFRGUjg0bXFrK2lwZEZJblVWTEhNV0RENDN5UW1mOFhMQUl2VzlrSjcrcmRzNmFmWnROQ2d1aWRCVjk1UEVoTkxKMnF5TmRnQkRDcGR1bnVHNFZpVEdLUVI4c201dVdDVkpWK1BWdWpmY1BuRkp2YzJBRlZCMVpaeXRJakJLQlZDTUNZSXV0WGo1OExLbWNzRmsvVGNqVGg0ZStBajdKTDY0eFFkWTFXUk9ZQWtrYWhHQzlxZ25lV3hleXRCcVBuVFdVVmszTmZHMWZ2dmRWT0NNZkNHa2wxbUpXMC9MaDhnblB0UFdrbWdSTkRxR281WFdMR2J6N09HQWdod2lwWjBEcXVHOGxucmFlZzNOWTZCZGJwT1l2dG43cW1TVU5FOStOcHMvUXFWTHFoNFV6TWpxQi9PTFdmT255c3FicDdySW1XMDFvWkpSRVNNc21oSHhDbzJZS0tEZWFhVEdMRktkcCtDb1ptVTIxRkJvZ3JWNFJmTXFNQllDMm95ZWFYQmFWYm1jTjhseEtpbG9SOWNTV2NzOU9QWEQ1a0hTS1FhQWoyeFE5aXNHVkZQMVVSQVNjOUlwQ2I4L1dZNi9xTHMvZGxkOXhzM2hhSFVHUDk3a3hzVThOTU92bWNGbURJYW53VW5DVFJFemVOK1FWcUpwR245Q2c0ZkZkUlJUdFVrcGRhL0tVM1BURW5ibExsL2NmR1Q5aENyMGlEdWhSamQyVy9NRUowYXlyYmJuQVNnRUdaRFh0cmV0TVB1OXM3czI0UDZIZk8yQ1FJcHcwTFNlQSs1aDFBSXYwcUhDRkRNOStwdVlRaGtTRlJxM05heW5kRENXWlhuQ0xCUWxVTENkUDZZZEMrbzNhNUFJUStuenFoSldGVkRQNEVDcTNzR1p2MS8vMStFYTJrMzExL1JCQytOQ2ZicDhjZWlVQnlhVTdwUStqOVRTMFVTdUY3bVErKzdrYlVCbGJSMGNkU0llNUljbi9jNXI2QTRCbHFYQlJuWGEzYlp6TDVkbkxyaW1IWkdSU1lpQSs0R2xhNjhQYUMrdXpVMSttMGpBL29TVVBGVEoyTWYvVElNTVpmYW5jYlZaMnI3ZHVOZFYzeW5rSXplVGxONHY5N1BIUWQ3bWZ2TDBIRmFjNGNDTE9kYXZEaWFyQ1ArZnBzZmtZQUZoNW9CeERJcWlKTEZiY0JOQ1RldlJybElndDZCSVJsazE3WnRiNEpkWERWcSttRDh1dWFUWjk4NXEvUzNJK21OdmU1UlBGaW5WVk5RTktwNmxDVmJVd1RGTEJWUmxValNVVFgzVDU4amxGSGpQM2hUN2pvbWFPeFFTb2RZdkhsQnlYalorMi9Vb2hpa2FJMXJSVXJUc2JiYi8vaXZvRVhRZkF3akdhdmY2RmQzbUJrVWxhbUxXbk83Zkt3Y1hvb3ZVazdkMCsvdWp4SDdGcm1xdzIyZFMzWWRJVUdkMjRTdEFqMTE5MU9FOTI1OGhTQlgrdkFJVSsySHR1ZjRxem5tZmNoMXJhbCtKbitPQnRHUkh5WVRYek44OTBqcmNiTkt0aGZrcExUaVliZGdGOHVQVGErR2l2ZHFjcU5sSHBOaHlhaXpyS3I2ZlgvSkFQcm9EVnMrYnNWL1Q3YmtmYktwK0x5bFlUWGhKeE9DSk9lcmJ0SEgvcGh5ek9rZmplQXl4emM4Sk4zMXp4clgrL3EzSFBOMjc3NGMwUHVjOWRVMFdaOG9jOFp5MytlUDFHS25HVi82bGJBSDBReXRLNXV6eEMxVlN3enJUVTFGcDFpU3hzUGNDZmpwNDBMRDJxem9ITEtHWUFnVmM4UzRUM2dIQkliR00wQjMyVkwwNS9Tb0Z1bkMzTW5lTTdxdDF1K0xEUlM1dGRPUlpWYWpldTIveXpWUnR1aFllUDQ5VUFELzlKVy92ckoxOTFXRmZWQTdIS0hDYnNvYjNDeWFmT1BtYTFveWY0MEd5WXRXcjdOREtqcEVmTzM2cG9HS1c4cE5tZzJTQ1Erd3dWUmd4a0xrcjUvZTVsY3grYmZ1VVZGbkZYbkVKdkQrb2liTHpwbFRsM3E5QUo4L1hKeDhZMjFYdXBROGFQQndkcis5ZjJ3eVdwVWJYWVltWldTS2dpWENrYmp4MjlQRFVGcjRhLzZ2TVAzZlR1ci85MzRMaTA2YmliYnZqS2pYZTV0cjZXcTVUM3YzSkpRclBhN3VzNytqNTh5TVVKTFNtUERCenU2elBCMHpwQm1Sc2F6Y3BCTGRZY1ZQVVJoVzNDa3ZGSFQ5eCtwVlc2R0gvMGtDcjRUdUVZT2pzN096c1gvc2UwOUdyNy9nK2RPSENHeTFvQjBOL2Z6M2s0K0xTNXJHWndLSHJGbGRzbkh6MThlVzNpbWdCTjN6enNocnUvKy9wQ2pEeSs4L2s3TmxieTFodWVKMzBKM3JvcldhQXAxSm80K056dXR4R3MrSTBrWlZJN0psTWRIazlYSTV0a29XYWNrWDJQUmpibWFsbEduN3lZWkpLYk5lYjV5S1dUcGc1ZjJRUEdJTFlDVXBaVm5RTURpUllIcWw5V0JBeTV1TWpLYnhkYmFuZUUwbmNpaXBObERQODNmK21TV3JtTjcvSkExM1hyLys5WGJ0cjJiR2Z1L2ZwRDEzMHVxUm9UNVgya1pUaERvN2h1VGVpalFiSmdFMWVZRUxLNU5BK2xRZElvZmJZNGVBV284T0JETTdjVXNDWW9WUkxFRjU4VEg0cUZZVWRhU05NSFBqdzY3eG50K2JUTG5kcnFtcU96YzZDMk1NTFFHUDBRR2FONTNEcisrY05uck5YdzVPeTQ0UDZ0YnVmVXRibEw2ZE52ZW1mSDBkcnRJT0tpVTZCM3g0enRia2xyWEEvd05KLyszZzNQZVlFTFRuemRCNnAwYlo2aTRNUHlTYkI1MWtkYWFwK3lRVlpLb21waERpaTZKYkI4RW14MlN3TXROcHo5MXV6YVRkK25FN2FjeVlmV1IvRi90M1BkcGxlTTlsZ28zc0luU3pZOXZtN1Q1NDhkb0pPQnMyKy82SWdWWjJ0OFVyYytNWFRmb043K25JOWNycm5IdzVpcmJUZUs5Z3FxMHRQaklpeGo0MkVUTGlQSi8rcEJtbDNObjkzOTNQVGdSdmo4aDJvSzIrcHNycDNnd3JCakU5ZkowS3hHQ3V6aXExcmRyT3NwSnJJNWlnRWZQajFaUmpjNk5zMjRqdmMzRzEwMWRlMUQ4R2tWNUtUSUNVMWI1YUxvZWpNQmd1L0w0SWxtdzQ3OGFManFGVHMzWFJsN0RWanVJdElHbTdCU3owNFRXVXI3azJNMGUvZUNJR1plalRyNGtxMTR0SmlmalFMZFBiYUVwTklyMjJaTzNmemg5RkNobVdLRkFicVdQZkhnODlBRGJ0dzU2YnJSbWlkQ1lQbWNwKzU3Y3RzVzBUanA4S05Pb09qWXZxNnFGV3dnUUxNcmdFMXhYNE1FTWIxRzczMXMyeFpoZE5MaFIxMi96WnlUa0p5U1ppTzMxV3preStVNjNYeTZiR3BsZ3VYOUNGeStmT3I2TGRPN3IxUkY5T3JMVUN0SDZJUUJPdm1QVm9VN05HZnJFMk9hMWIxM0RJRkxrc2pLNEY1MXF0QXJZZk54TzlvdXJleVNSbVZySG5IRDE1Ny9uTGZPZXUxVGRvTTJjYzF0VTMrNDVqczh6SEh3OEhFWFBIVDg1LzhvU2ZTdVVvQ1dMdE5WVFYwamJmMTd0L3FoNzJaOWRjSGo4NjZlMk1pbWJOaTk1M0lLd3lkbnBPRXRmSkI0Z21ZaitJb3JnU1ZjNWNZOTJSTjdKTXBsdG1uYUpsWXVwQk5rVFZxdTRzbXhUQ1I3UzVCa0Vxd3dzWlUxaWFMUUkxZGMxajVuL2VXK0x1eXpVR20yL2ZTeDFqTzllUklqcmZMMTYxTXVhamJJaHIvZnR1M09meUxaeDhkeDQvL3VjOWV2WDhJdVhuZnA4VmZiRnNEVDlzejkzd0hlTkdIclIzNlBHN240bU8yMXNuYkxnZVRSYkZSZlV6QTVHY1RwYkNXdVhJM3V6KzU0emNPVHJveFhGbFJXNlFnMGxNemQ5alhQTW4vUE12YlNNWVEyalF4ZjBnL016VmxqVWUxeHV1NnZkKzc4czBwNStPQnRtUmFDWjhPY2gyK3RuZWJOc3c2Zk1lY3YvdXEwRFUrZGNuVzFkYzNUUGdYbUEvU091L2xyd0VYdFU4Zno5SllOdC96ZXcyMS9lMXFLZFRVYlZQT1lWZ01yYmh4QVdQN0VENjg5am91UG1EOXQ0NjN2ZmVSMk50NTdKb2tVUGpRYitSd2VBZzNmMS9EWkxReTd6VDJlMW9CS3M0RVA3dExsUjI5N2FtSlB2SkxvNEJldlhjMEFuUU1MaDlyYkpZbXNNVTdwUGhGWmlUZUs2OVBqZE4wclgvL0U1Wm5EU2FIVzdFazMyeDZxOTZTNytFMnpneHU1bXRQYW5yanZnaHZMNXR0ZmVlNEhmTmFxci9qK2U3N0dtK2VmTWdtaGpaK092K0U0M3Z5cVppT3dmQkliWVBra2Z6MmJOMS91c1c0TndTK2JOQVZrWlB5SGZLRFpkdTkzdjg3RjUwK1BJK05mMS9id1lSdi80bXYwOGRRVStXaGYxN0pKYmRmTHlGWTdDazl6d3lSL1BjZ1RTZWwvYmdmalBzcXlTVk9WemZKUmI5WHI5V2R2NEdrMi9OSncxZHh0VDAzc2liMEtReU9UNklUamgxQlJPbGs5ZVJ4cnh6YlZlMGFRbSt0ZkhOTmJMQzN0N1dtODh1aWRqVkJqZlh6d2xjM1l1SDV0TmUvbkhuVysvSkg5MWhmUGUzaG54VHBQUFgzTnBlbTFiLzcwc2Qvai9OT1BHNXJRd1BkMVhYZk1sSzl4eTZ6emxpMWh5ZFZ4a3UrZDgvUFJMWlAxNnV2Zm41Sjlmei8reVIxcnQweldPVk91dVF6UXA3ZHgzdkZUZGpUQTk3MzJ0ZC84NHBucmwvejlwZ25UcnFVNUVoN2FNdm1JU1YvNFk5UGh5LzJrSGF1Mk1sbm5YTDkrQ1FRKzhsZVJ2bTFUbjE2OVpmSVJPNzlRZzlCVkQyeTh6K1VzbjltMmZsSnYzQUduclFiV2cySGVkWDU4Y3F6d3hYMFE3WTA3RnZXenVHaVFuVEt5ZlB6bVdSL0ttSU1jRVFvbGIrUjduM3FrT3Y2bzg3ZDhMQVVFRy9BL2tGdnlMMy8vMTJjUzhBVGZGeCsrQlk0ODdxbkw4YUd2NGQ5Ly9jTDF0M1AxNTQ5dnRqMzBkVTc0aDZHYkgvbWZvNXN2dS9EaHorLzhMeDdvSGYvd3FnMWZISjc2SitNUE8vVzZENGJHL3hDSWgyKytES0RoZXpzbWJaMjFuQWMzek93OC9NSFZHKzY4ei8zUnJQbWZmMnBwOFBUTytkR2pULzNQMXp4TXc3V2ZkYzFsd1Y5Mzc5Y256K3NZdnVtUkwrbklaVk9QK1Z6MmppcVRPU2NIZ0tWaCtheTI5UlBiT0JsWVR6dERDREJ3Tm93WktMZjNCQW53SmVnWHBXTVErTmJ2KzdtTXZ6UTVBdG5GRGREc3lzL1E1MWYvNDZ2ejRSZGQ4RVIzeUdsYytLUC84ZGovL3IzMDAydmVBZVpRUHpWdVBieTFZNmdiTE9jNk91ZWsyM250ZTA4YzFTMWY0STltUFBUMXkxNERENDlNWDNvK3dOWGNmT1ZyZUEzdzBMM1huM2JkYUZmUXk2Nyt1eS84eHJJbFBnRGR5eTZGNVd5NzVkd2Z6LzdwVFhBOGNQNWo1Ly9kUjFrMjZlWmxvOGU5eGt5SHpXKzcrckkrM1hFcmI1MXg3dzI4Rmg0Kzd2d2QxNysvTm1QTlhjeXp3QksvN09pSlA5c0puSHMzUTZuU3MxTlpPMjZzMDdrdmNGbGNBdWhjQmpzZ1huek1qRXN2L1JBNVE5UW9LYmpTOFNWRVhWdm9jY0hydFR0Z3lFVHZnVTFuWFY5T3ZYbDB1V0UvRDMrNEJ3NmJkSG5Sc1YzRDg5L013eU14Q2x1T0gvZkRyM1BYUlJmOTcrTmUvNXAxcTYrSFhtNytwOWZ3MXZlODV6M3ZXUE43Tjl5L1lWdWZ6TDZhMCs0Ym5QNzU2Njd2OVgxaEtYZ1k1ZlExRDk3MGk0dmYrNDV6NEtabE4wMEt5OXAvK0UrdlBvNkwzL3ZlaTgrRHI5L0NzaTRCdHYvd0J0NTA4VnM1am45WXZmR2EyanZjeVA1bk5jS1NTemNjMHpZSmJvSDJvZlloZ0FFNG1yRWlGL2VXUTNiWUdwZ3dOK043TjMreWlsajcwR0tscEh2Zk9HbWtiSm82LzRteVF3RDQyT2VyQ3VJZHczbE5wODBYOG90L2tQTHducTJNNXgrZWVucm40Y0RORC8vbkUrWlBmZWJ1aTI2ZytXY25CSC9FRHovMXRWOHNQWFcyWi9TR045L3luWW5uYmVEVWk3LytzQjUvMGVGVFpyNzI4NlBMbDZiSHZwcUgvdXk2OHlmenpMei85dXJYdk9tblgzaGk5R200NlBWSFQwTHVuZkFkbGwxM1FoL0F6US8vNFVuenAyMDQ5Yjd2SE1mUjV5OWJrbGlqaFJDMVRqWkxQZ3Z3NXJ1aFBmR0lxSEw4enc5RWdzb2FCNHovRWtCSFdqL0VWdnFzYXAxci81aTUxWXlUdHBUanA4VExDM3JLWmluT2ZYUCtzZTNKcWQ2SDBGd3VtK0dTdzRVVS92TWhMR21md3RVVG5qd0NnRDg4cThOdjBCUGYraWFPZi9ycHE2NStadFZ4bHkyOWNPS0gvdWlQZHM2ZkN4c2ZhNS9sam4vcmNjZHp3ejk5L081Ly9mNUQ4YnJpdlBUKzl2eXRIL2pBK0l2KzRtZjg5NGQxNnJhSnZQVXRKMjc1d0FkMi9zWnJmODZyMTZvNThCOTY1OW4rNmRFVEZsd0FUNjJmaEtlcld0bmRaOGpyTHF2cTNnSkR0TFB5Vm91ZnRMZnZWMXhXRGRzN1N0eGhhMUFsUDMwWXJIRE1JaG01Tlh2MVQyUEt4cTNsOEttU0c4RW1jSHA0NHJXbGJlQVhSUHVDejdtK2FIeVZvQ0E2NVZ3K3YxV2hBMDQ2NlU4dW03Vmt4K3hqb08zSktaTlgzOHFkODloODlUWFg3SWovK2xadWZqdzJSdWRmOUk0M0E4ZmRkTVBGZjN6bjZ1dlNCZDc2NXMyalMrQ3lYNS8vTVk3YnRuNWt5Mis5NTlTWkg0alhYRE5lanZsUFZkYnZOMlovWU9LU3kvL3o4ZFBPWmF2bHZheC9zTVgrazhNU1VrRmtJdldiSzBZZkVHRC9JaGR2bnAvOWlCMXRUTER3KzJCSEJ3aE14OWVXVGExaTdwUkczclh4cy9INXg1U1ZDN2p0UEp4K0hkNUNMU3ZvS0FGNVFQZ0I3NThNRFBMUStGSGp5aW53QlprcW0ySDJYNjBmdDJQSGpoMGIraVp5N3NpVzVZejY4OTcrM292ZTlBdjR2ZU8vZHVlZG43ZmJtT2d1YlFEaGNwMENXOGNkTWV1cDgrYTc1dVhyd3FxZlBnVWdBZUJuT21ybzQ4ay93SytiU3U2QWt4Umt5aE9rcEFENEVmamV1ZERPeXBVRFlCd3k3OGt6eGphMWUwYVE0WitjakRyaUFxYlFKdlREWWhnYzdIQ2N6ekI5TmoycEZVTjJtbjJnNFhlUnZBaXBMME5GTjBZbXQ2YXNBa3VZQW0yL25GSVNIcDYvM3p3Q08yelZrYzFURERvaXMrQTFXMko4a25PZlh2aDFHLzlyQXovWVBpbDJkVjI2ZGNhNUYxemNmTTliZ1Z0V0RUZG5wT3ZaWE1yc24vUEZYeXBPaG43MHpRdHYrOFk5amQrL0hkRFBwWnRNYTFkV3QwVFZwYXNQK215RjNoeUhrZXNQLzlZUFdObHV0dTROckdJMTdUZSs3anA5OE9RWG5ObzlJOGcxY0JRS3JPSXdtRUwvM0VHQVI3bmpXL0dUTkJJUXdlejBrSk0rbVJxZXA2Zm1FNzFtUndiN2hKU2NJMTVlRm9xZlBqbDEyNGdLTnorZExYbnZnMy9tMXh0NGVOSUVrMzFwTVppMkRRRCtsMXY1d2EzZTMzNzc3YmZmZnZzWGJ3SCtoRDZhU3ovNG9laVBQLy8xWFcrRk0vODkydklZa3NxMG1QeCtYcjJEeHB3N2IvelRUKzMwMTN6aC9aZitIT0JEQUlyNEJqQjZrckZ1WXZTY2RHeDRHcjVDZEFjWWZUKy9MYkFTVUxoSVQ3Z0xoaTdncXc5dzV3dE83WjRSNU1oVHlwbTNUSnBTOWFpOTBYMDcrcVlQYVI1VHp0TytoRnpQRVRhL2FyUWNzVmtyREx5UjYvQ1BGdzN6eDJwNjNMdTVGOERRbHVVbUlVTHd0SS9lK2FQakRwODBDNmJ5K3BRY0RMTWVCc0tycHNJN2pqcnFQZTk1ejN2ZTg1N3U5N3puUGErOTl2SU5WemRDQ0pkZit2NzNIL21HQlcvbTZpZlRZdlNhczdKYnJ1Zm40N24rcGd0dmVNMmZ6RHpxdnpmZmNPWi9PcmRTSWdwNHowOFZNQmhxMW51a2tIRG04Q1kwLy8vMnpqMCtxdXJzOTk4MTJRR1NUTUp0SWdqaDRpVVhrT3NMU0RKUkdtN1dWaW8yZVd0UmUzcXNWYy9VcG9wSDhWcDY4eFJhUkNzdzF2SFN0NTYzcmVLRnRGYXNXcmxFSlVQQ3BhYUFNb0ZYREpBZ1pBWWp5WVFrWkdldjg4ZmFlOCtlRURHRzRKdlRUeDVsc3RkbHI3WDMrcTMxUE05YSsxblBHbXFrdVRZZUtnTVFwT3d1MlIyYVFhbEhMcEtOMlhaUC9FenFycGJsQnBnWU1nQmpIRUx0aXFZL1Q3Njl4dno0YlBOVWJCZEtmdlhZcnVaa3E1aTdvNjIvTkR1YjM0eEtxTEduNnZwNVVkV0RUMlc0NGNralEvMjZxYXF0REZlMVRDVkRBRkZJVWRsRlBZQklHQUFwODJhYk5HZmUvS2wzTHVmVVkxYU5OMlgwWTM5Q3EvSUoyWVFTVXZLVGk3Z3BLYUhxMkxYTW43Wnc5cFNzOFVQZHBZN1gxVFYwWFhLckZjUXlMNlVERS9ZQmtacEJjcHdLU3NFazRGVVlMVWVzWnMvbk4yeDNBZGxyQUx1VFhRYVJ5THMvTDh3dEp4ZDRQSi9SMFFhTCtaamN3TDR3eld1MSs1UHRqckt5SVpSdWpnMXowODdQMno2eEsrbmYzcXdGUU9QMmxHR1ZYTGgxWDcvbEFRMTBiV1h5bmxkZy9wQTY5ZkcrU1NrM0NXcUdiWndITmNkZHhxMjMzbnJycmNjamUrdU82ZW03WHFuNWorV3FpeXdITXRzYjNBRDFwNTRKRU5DMTVhS0p1NU1lazBjMjhwVXA0Mis2OVpZZnRDYzI0MWp1Q09nYUd1TkxBZE45a1RYZ2JYTlh5L2dCZlVqbzNrSFhXQUxubUlTMjRTRFo1N3FrdzRrRm5WRTNKNFo3RWljZEZWZHN3eUFDbU11OXVZZW5HVC95MVEvWExDRWRoNGt0dHYzRnJoRnpOcG1oemRxSWxYYzdDbDQrZFBNYjFuVkJpdWNXVTZtTVhQcFRXUFVqc2xuWmxFSnlwR0xKY3h3SURQMkJIcHZXVS96RTRQMlpnR3ZnM0kxdlo4eldscFBXWUF6YnV6UFYrL1FuTlZzUVdVL1V1VEJTMG5hMlE0cW5UUUx2REptZHNyeCt1VHU1dklFZGc1NHcySitaTlBSalRYLzgwNFNkejJUR1dKWlFtdmNINWh2RXhvUTUvNDJMYjBpODZxc0p5YWpURGtrdUdRWnBCbUpGTnR1NC9uTmJ0cHNqNUpiczl3R2lSSURMTHl3ZkNlV1VqN3EzalBiR3FPN1lSNm1lMGR3QkMyaTY3dFBEbVRFUDVXOXRZNlZwcXFockdrTzMveDg3U1dSSWEwSHkvcVpaVnpKMXl6L1c3enZWZUZUZi92WnpVK0hIV2JjQXVIa3ZCVFR3eS9vb3dNM1p3NkIyOHlkSm5uNGUxOWFLSjErSnlFK1MyYkpqZlZVQ2h1dm8xbDJiZURIRHJPSXZtMDhrcFNmMUsvOXdNeklUQ2Z6MndQQW5uazVNZWV0b0ptQ3RLRWlsT0txQmJYRmh5K0xZN3RTbXRaTDdZTXVTKzlyVmRqZVlQeFVTSlJlOHZLa2F2aEZuOU5zcGRYT0VpRDFlcUhURzVKYURjT1Z6OHJYdkwvdEovTEtpcWlobS9xOHYvYTNqc1BlL2tKdjh5d2NEeGY1aTlHZGNXLy9MWHVaQ0d4KzIrK0xkVDh6bkRRS1NtNU5wQzVBSjE4ODlocTVKb2t5OUY3Tjd1Z0VDZGM4dmZLV1V3ME5TYUdwNjR1TE0rVnI0b3VPd2lRTzM5WWZqVzREbnZoRW1EWmoxN0lYMWc0UnNmUU1ZT2E1Tit6Y2ZGODZ0TzQrbTZDc0hidDRFN3Q4Q1RMZ2RYOEFId3NUSGZDamRXaUt5RFZIOFBrM1hjVjIwNzZsRzZ4dzdNWndTSUt1dTRmVXJwSnU5d3ordlpidTlsdFVJa0h3U0dGVTlqdHp5Y3NwemhYQnRtZG1xdGV1QXVVUFRXczl5MUtPanUwYk1pbjMyK0V0VGR1WlRZbVZMUU1yUWtZZGllSkNlK0tBcVFOTTFmaENZTy9TaEMyRi9KbVRDbFJkUFBhWlFuUUpOSnJjWW5BbkpGT3VQdFlpLzhBNE15QzI5bVBsWGFvdVhYM0pyNkIyc29nc0c1VVh2WHc0dzVGZXpOMFBsRkpnemZHYmQvY3ZUaDFWT2FiOCtLL1g3cGJNQ2FkejlYL0sycDRIZFR5c0psNEJsMlJHejJMYTAzVUN4Ym43azlTZTgvNjcyaHJVL3AvMkppNk1TU0lmWDF1dzFUbk1TY3hwMWsyVnQ1cElSMGtVTE1BcFFNbDFJUk92aWZTZGkyWFQ3VTRHMTJVYUhnTWJOV2FNY2hiMTE1NmJObGJwZXRlMjFpajg1OExoeTZzbUFydXZLdUUzWGZVTXVmZlNHeThnRURpeThmdTdrOElNKzBFK09tVis1TUxWT0Izd256N3V5Y21GNm5jNkFBYlB2WFhnQVdrb0w1bDgvZmVBQWxqYm5MYngrL29jQXpMbG01bXlQSmJaeUwxbFl5UlFPWEROOXRoak0vZUdaejg4dnZYYktSY1lOTTNNeUwvT2xTSnF5TDl1d1pHZ2RvT3NOSStlL21PWTU1aHdUZ09rQ1ZiZlVyb2Jvdm1YWjVWWUhUQ21NSmd0QXlrVmZsOWxkYU5udUdjcEIvc2xoTmZKVWdoRmhWQk84bkZzT3VVSWVybGgyUjk2akk5UXVFQTA5NEF2NDR0YW5yY2xHNE5NL3g1czBmSGlUMURidGp6TXJ2WFdHRWZ2ZUVQQnBQT1NoUHZ3cDlFc2FPcXhoZ0MvZ0E1NXNQcXBySS92OVVBZDQ3S2p1U2ZrUkVLZ2Zldng0OHlrR3k2RkRUdDZ0QTRHV1pMbS8rUlQwU3hveklETFlwejJVOXVlM3VHWjJ5cW5xVDJGZ1Jzb3RHam9zOXh3L0x1cjdYVEFJMzhwVGRWcnFnOXJLVTNYYThNWHEyVmNlMVQwcGQxcldYMWhpM0dsTHArbit0bjM5WGw5aE9zZVVCZThiZ2tTcGpkSGZ2ZFRYa0xmeWN4dTJ1NEJjSGgxV1k3UWxHSkZSTk1HUXA0QTh5Yk5KTGE3Y2NUOXJmMEI5ckxWTW56cVFwcVA5ZHZ0VG4xUEROYmtzMVcxTEJCUEtOUU9rQUJGZWFoZXUvWHpZTWV2TVBlM253NDc5MUl4K0tDa0ZvRzZvYmFMN1NJbzZmN2YxRGgwVUlBdXZ2bm01UjRJclBOakNmcmtIeWNuRm9LMTBIL3VwcnZHYnBQQmdzMWNGamc4NzlxQnpwUjNvK0liTEJ1ODZmRU5iaXN0czJmNXBEVzRTalhrZnRiOWJYckg3bHM4SHBOc3k1SEE2VTk1TWg4T2pRSWwwQ1loWjc0ajl2OHJTckZVZDh3dU9laDNiR0JEOHgyYzIvZW1NNVYrV1AwVFhDUlFyRTJtTFdkL3BCeWhXUmlGcWFlWkJodzNWZ3pGdlpQZHJmb3I5dG4yb0RuZG9maWoyK3h3TktHQXArTG5OMmdPazZmY0hMTU91eGFybjMrbGZxaXRSR1BCWkV5d0h2NHJiUXdLNEQzKzRPYnhVTncrY2JEK1dtaUtGcExUMmFBdVg3UDU4UExvOVFsNWNsVllyOWV3UEZNc2EraVRrY1dpSEZNYkVDbi9yVGZVLzBRTzJsU0xFNExFRC9wYVc0Q3RuS0gvV3pCeWYzdUg4QW90RFlCYmVJUjdGMk93ZWE2TWZNKzUxR1BBdVQvdnpXMXp6RFovZjNIbXRtL2ZySFlwMFZtSU5SSWNoa0taYk42bit0a3dtYnpwMHY2WXB4M055MXQ1MlFhS1VkYm50UmQ2S3ZaRXp2TEZKM1oycFg4dG9wT3Q5elBNOWM2bDlXWTc2cGpSbUpuaW5uM3Jmclp0TDA4cXhyanE1S1BZZFN0TjAzOTBEdnI2dzRET0xuelV6NjJiSFc2dGRuYlorWU9HaHZLSllhelFCODJ1RWptTmhRN2RtcVJvNkZQdnRJZ0dRbUE0enpLSjltbVVMYi9vUE1tdFFoUVFzaC9HMnFTVG9hcitpK3VLZzY3aWJQdnBmcDNSTm1nNjlyYStFNTcrMTVYbU1jVjFvMk82T0VEemprbzRvSWRLRXdYbVczdjN2ejF5K2RkdjZ1K29mVUUvczZFZ09JM1lBQWxwNDkyZHhyZmxUY201R3N4WDlHTmtkM2lsR1QxdlVQNDA2enExQlc5VzIvcmVaMXl5NDViUHl4a1puYkNlVk00Tm1yUlBIUGFGZmxqMHdhOWgvamxVaGVmQ0RpdzJSeUlraENmODV0YkppOSs3UlozNU1PSXRQdVA4d0Vsd0owNjNRR0xYSVVNVFdySzJYTGY3SmJyZEd3TzUzR3ZodFY2UEtKVXdBaW4xSnMyK2QxVm5SQmRkTXovSnA2QUZkMCt3RGIyM0haVmpXbmZhdW05aDZjUWZYQWpicHpqSTBRTlB2Y0djdnVTR3pTWE44UU5ic3ZGcE1UN2NzZjNVcm05bit1a2JNajQxZFVjUEhkL1licVphRmdoQnB6NHdLa0trcEh5enA1eElNT1ZPRG10UnRRSUo3Um8rZ3NnME9ZMERsTHdCWU41SlpCWHI1ck9iV1I4MVRValcwbUtzMjg4Vjh5bUdyZm5ka3hzeHI1cDVXOHZ5WkN5NDJkS0JZZVVBeFg3Y1lURlprTllsYUlBN1lvOFhoREFEYkoxQkh0Y1crdDMzS2dqa1pBL0RycG04VkcxV3NpaHhlSmN3OVBZcHpPUW95ZVpoVjZiS0V5Z3NYdFY4OFZwMVN3WGtubEtwenRITE9sbHhwbUVzdlo2WnVzeXp5WFNrMXhySDBPa1kxR2N6Z3V3QVVsWE53K3JjV1gzN2ZqUDQrKzFsalRDQm15R1NtUEpHd3QvYWdjMGJ5bFVIRG5uN3ErRkk5eHZjRFBzM0prY3gyanBmcVZvTE56R0pUZzdnTk4xaXNLT0FEN2FHMEgrSnNUMGNoam5BbmVyc3pMZUJ6M09ILzRJZURXK29IZUlMZ3BTei92NlEwUkl0MGF3bkh3cFhSdGJ2R2ZIWnIydFI5UU80cVQ2dVZSMHhBRWhtOEZCaVpXMDd1cEplK3V6YmhvWnpic1hlMTJPOUtoeXNDOWVueStDZFZUUWtuQmRKSVNrNlpPc1FJRDdYZXNZT3djQWloMDlXc0RqdW1uTk9EdUt2WWRuVkxDbWpPVG1QS0I4ZDNaMGZWWnM2WWVJbS9WWHYwNk1NVFM3N3p5RmlydXAxcGpja2lVY3E2bVVaUmZ2bVlINXgrUk83cDFIMUFXb1l0MmlxTmxvVElFREJtVko1NlhLTHNyVE9XaWJ2ZmVjbmJGclBQUXJNbUJERXBiODFRL0w3bEh0bGFPOFFGeGoxUHk1T0xOWHM3azlWRURvWFRBWTdwSk1BTXhWUldTOERnTDRZNGxCelBZOThXMi9RUnEwWWRyMmVCUU1jaGFhSnZQMUtBWXZVb3l4cHJYK3AvL3NzZUNIcURYc0luWkdPeW9EbDFydjY3ZnBldTJVcVgvTTkwM3k1clFPSzY0VkorNmlJRmcwcTRFNVJudVpycmN2WDhiMjhkdkZyWDBIUk5JMkNlZVdxK1hBQTBkTDhPT3BxL21QdHZPZDR3dk44Z2JWQy9YMFp1WFJ4VEJFd3hIaE82Tm1ubzFtWngxWUE2YUxZQmptNk9LNSt1bkpSZ2dhUmpxclBvQkFLWVBycVVwMW9mbGt0L3pkeFlwRnZTQmpRb05xV1JzZyt3blhXQXJ2bUsxU010aysrdHpEby9PVXBRN1o0U0RTUkRZcW9zM2JvemIzWGpucVYwaGJvL1FuaHRtV2lRK3FtRXlCQU1Fazk5K2tUcVNJRGM4dHlhVmtQYjlPWjQ4WURxZURFK0VEZG5zNjZjT21uOHR5eVRPcHJRbW5rN1g1Y0JUUzJoV2NOSUZlbjMwWkdyZGJ6cTVIRTZNdHM0dHFsWmE0d3EzZDk0OEh2UGJSQWZWZ2ZCRy9UeVVkWUhqY2tpc1NFMXM3MzkyMzljOVd4MjF4dzBuWVhsNGxXdXBoSFM1WEtSQWt4aGtPMlN2N3ltSCsvdzY0Tnl0ZXA0Nm13Y2MwZHk3T1FEZ05na0syQUZZM3FrNlovSzloK3F4a3JNa2J0OW9JUVdQM3J3V2FxcXBtTjd5VUo5YmtYNUhiWHVzNFdFU1JZZXlqZTU1YXpPZkI3MTRWWU5jWE9ZV0xpd3pQWFI0dTl2bVBjZjFYaTkzcUEzS0dlL0w1TkZJcW15cm43RkR4OHJ6MzZ1YTYxNk5xYWt0eVViVFA0a3gzTVlvQi95SVFtVWs1dWJ5N2R5Qy9qSlliRk1ROU44Rk91NjZXb1VMYmIzUHRhS21wcm94aWJaRG1IZzRCeTY0L1RnZ0pwRjZ3QzZIanRQeDFaVXpiczBMQ00yWlV5cEEvWldkOXMvWTBlM0RwWUZvay9YWThZTXBpTkEzVkxFNDc2SkxoTzd2bitESFB4VUxXcXZwMWNjRWVvRUpHMXEyczdIWEUxMFJjWGlyRmdXWEQ3K1lJMXhMTDF1VkpOQjRxbUpIKzgyclVsemVTRmg0anZQckwzbDZyYmJOYisxemhHbnFRQWEvbUs3N2VPVTAwQzhVRmQvbkhyTmFUUGtqdXFDZzl0bzFySmFuSkRHMnI1Q0o0d3ZUbDlBZDBSMFhPbTEvcTF1UFBqUTExdCtmTk56WHN3TjBlKzVHNU5GSXBtanFvMHI3NXkxWm12dUkxMXIwN015dG41aG5YQWxuR2NPRVhhUG5hZ3M0SE1oc1QxWUdkMzhURm56YXIzWTdFdTY5WHAyWi9UN2RLdi94emRKY1J4dnd1cU1HdGJhbE9uQ1IrdVlDbGgya3lxZ28rbVllK3JVMExTbnE3cXExenk2MEdFN2dsSnR6UUlzLzV2MmlkSVduMFREdWxWZm5YajQrM05iZm56VFFYTXZOQnhNa2NtQXJDck5lT3YrcjZ5cDRPb3V0dWxaQVRLU295UGsxSGZkNEtLdEg5V1RNaWduTnhjZ01YbE82K1ZjVVhWMDJTOXNiMWN4YTEvVndYMmFkZUtFZllDMmFtZGx1S25ZaFhtTHFWVUZiRzFKTngxajJRdEs1azVHekkwbWxuczRFd1pyeW00dGo5akxMYnJQdFBiV2RjMWE3TkVkOHM3ZTNvSjVQb3hOdXVaVCtDNWIzYnJzZDgvSndUZFYyK3dtMkN4QUpFbzVMK1hnSEdOVitTN3ZWK2dhblJYTElySlFOQml5SlNHcHlTRHgxRkF4ZWM4VEF2SWtKZEMyNk5sZnVwYUlzc2x0L1h3eGRtV05kNGNUQVpXaVhDVHJqaXlPT2JaemtkSXhsWWlManZ1Tm0zV29jQUNmcGp0bWh2RXJrbHJIQitTMGNDZWNEWURWamJWUFQ3ajNkM1ZQMTNyTkdRaFVwalFtaXdrWWNvdExhNWk1NXRuc1lGZmIrZXoyaDZTN1FsZTRYSmU2RDZlNGFPc0hUTWhUWEtzQkV0Y091TVI0NnFadHJ4NnRYeDFqSUtBVUtwL3BXZDF5SGFQcHhEeE54N3B4N0FnRWxKWmp1OVBWc2UyZk5lZktJNmFESVBNK3l6bVpwdm1VRnl4TEpOdUtub1AxbVpOdzdHaHJVTWZXK1czZnBGWjlxeDgvdXZjWFUvbzk5TjJueHdCNGd4QU1KNlRJWkNZdU5xb09uRHl4UE0rL3NlMjJMdmY3c3dORS9qVjc0d2o1ejRQbTRjaFQvaW0xWEpEUGxxUUJpWXV1bTFkLzhhdHZGZjZ6ZGZtakFmc3dCQTJmclJNQm1xNXB1dDhocFhYSHlxcHRWSzYwVU5OUHFTVWoxQUhjR2pxNlQrbGRHbGoya2RZWnJyclYvblp6V3BzSjlJRGZsTzFXZnpGZGdOZ0tuczFKTFVabUs5dldPRi90YjMzLzRVZGJUbzdkbERVR2I1QmcwT3NsYzFoSVJzVWsrWnVxZVdPTk9UYy90aWQ1VVJmM3MzRzJMQXR4MTFiUklQWHNkMGIxRjZJK1ZURG1EUjFoZWo2Ull1Mnk2SlgvTy9ISUxWa1hwcVJHaDNTWTN6bldqU3kxcVFPL2NNNitPdktTZ00vSmxqUy9EODN2czN3dTZwZ2IrdU51c0F0MUxKRllENkxwQWV3Ym5KbWR5cUhOd3BRVFI5MW8wajRxZjEyZjk5cXFwM2JzVS9wVkVDL0hqeE5ObmlSclJzaTZEei90ZDZuLzkyMnZYZGIxRmowN1FOQ0hjK09Qdm5Zc3ZlNktBeTUweE40cm54b3BuLzNldWtLeGppS2tlT0hTZVY4OThnM1h5b3V5QnVvREc4RDhjSVUxelk2cHA1YXVhNE1UcDJFNmVYa25TcThqajFPZVdOcHRITkx4aGNaTEpNZmFXQ2NUZE1mRGZrTGFDYzNsZjlFOWFMNjQ1Q2N6RGtwYmZPRGFrZG91RXJOclJsUnBsLzN1cWR1MlJkZnVHZDMxVmo1YlFNU0pyMDA0V05OK0tpR3B2eERycjV4YU9mblRHMXB2TEtFSVdVS1JSS3psN2NVTEVsOTdiK21VNXBtNm9ROXNBTklhNHNwSWEzQkVtSUUwYzIrY0dXY2xwRFdZZjJtSTNhY2lWWDdyUGp1WG5ZVTBHdElhVk1hMDArSWh6YXJRZkppMEJrZWlvM2IxMm9NYVRueGEvc2YvMmFLNzJ0THV2MXhpcnBjQXJwQm9sSG1TbXNaNTFYK2Z2V0hXbXEydUxWM2RwTTdaQTRLb3ZqNnRWazU0cjA0eHJhbVZrNDJyKzM5VElNVTZsTmVtTnFMYXRqY25McmlDcjdWTkdLU05NZmowTE92ODc2VkJMbTMvSjN0ZWtOb1RSL2RRZTVIOGcwZkZCNzBFODlsdllOQ1BiS05xM25NdXJYSG1tZzBIamlaL2dVWStlMEM0aktRamFWWHBkYVA2NDZwUG5WbzUrZUVkSjc5ZFVpVEZPZ3BMQ3NXNlFyRldOQVdPdStiL2ZjS0tkeWIvVEp5SDZ4UFBSWEdGZkdoMFhyaEI0b1Vkb2o0cmErZjN1d3hja0NDNTZQVEVBKzJPUUlLOENQZ1ExT0hiQm55V3dtUHd0MmsvdSttbCszYTdTSHl0SWlORndSRTBEeXQwaFJyejJKdU5ETTJyUHZ5SHZOL2tWVWpmZDc5SUc1ODFJSWltcjQ0L1dEUHB6ZlNsSy9vTGdTNll0SkozdGNJU0Nrc0tTeWhpWGRHNlFyRVc3Y0h4eTFlL0JVWmFnMGk5WTRWMSs4bmtrOGwvM2ZKUTJ1a0ZONmJTbU5wNkwwQnJmeXV5OWJIc2FtZW1zZFdkWGtMMVdGajRDdFdNWGJpQ3hmMzVjOGZpQzF0ZWQ0U3E3djB6ZkROZnlLdmhuaFdteldmMVdLckhWbytGYXNaU1BaWnF4a0pWOXErKzdnTGo0NktyYmlpOVFLcXBlZEFiOUFhOUlueCtRbERtaGJJbHBSbTFvLytRWjJ3VHorYVVmUUdHMVNPQThKY1Z3bDFqSEJ0ejE0b0JpUHJVcVpXVDVLTVpMeGFXRkpZVVNVb0toU3dwcEFSeFNpUWFENGlCUC96WmxHclZkbU9yeDFJZEsyZ3NLTU5uUmJHckRsUTVwWklwbjVrS3lpdy9xVGtKb0ZuSUpKcVRzTGJKcVpNNjFVc25xYWptcE9Za21wT2FTWUxzcW1hU3NpdnRGSnFaVXRXY2xFMVZNeVExUTFKelV0YmZ4L3p0NktIcjM1WVhPTnN1NkVXODYwbG96RU5LakxlbDBYOVRucEc3cGlKYStZWHc2QUZBRU5STUxqcW9FRkhLNzJUSkk4YTdpWVVsaFlKMVVGaFNaSEt2b3BKVDlsbWtRZkFTSkY4S1NkQ0wrTWk5WDVyT1BjRTg1aHVJaTFET2dKVUw2Y3lvRy90L202SnVvaFNVSHU3ZXEvd1BTaWtvaFFJb0xTaWxnTktDMG9KU0ZXUCtGSlFXVU1vRlNKdE5XUmZDdFpkRzk4UU5jNUdoZVg4NmFmUXp0b21LWGNlU3ZuUkFFRlJmUDhHSnlOVEtTVHpDNWdHR0tDd3BZbDBSbUFLbHBOQThTMWFhNXlLWkVJQTRGUEd3byt0MVRvOTRJT0lCSXA2SWNvSVU4WmhQRS9UUzJVcUZldFhURnRxZGxCLzBFdlNXQ2E4UzBYaGpyUjdFcTB3WHlLY3NQMmptOEtwc1FieFVHKzJOZWVyUW82cDUxZVdiOG94dG9tTFgzM08vR0I0OWRJN2gySk43eG1TNHhoNTg1SjdGVWc1dWhGMGlKSnR5Y3d0TmQvRHJUTC93aGNnU2hMQ09OYlM4ZE1QaFEzaUNRY3Q1Zk9kVVdHajljQXJoaVZnSVJEd1NFTUtEdWIvTzIvblpFQ3J1REhnb0tKVnp2aURnOVRvU3ZRb1A4dk9Ed1h6bEpka2M2bDR2M3N6cXlrLzBoank1TnlRSlNlMmx0emJsR2JtaVl0ZkJMNHBIajR3UUJNYS9KUXQzelJ1VHJUR0NlT0I4Y3FvK0ZvbFF4THJDRWlnc0FRckZ1b1liMWRsSU5qTVhFbkVJT2gwZmhlYlI0SmozV3pRZGlIaUk0RUZkRWZIWUk2UnIxZ1FteFVaTXZ0bnBzV2JjZ0JYRUNsdVJRZnZEQnlDUEQ5T0d2eWttSXF0U1JsUmxIUml6WVhDanNVMVU3UHEvMyt5eW55eUxlbVNFU0Z5VkoyVTA0OHF2SG56a25sWnBETktReStabGhiSUt2aktrRFNrTFJWR2h0WUd5QWZOSU0ySEtDeUU1L0E4NjRLRkdBOFR3Y0Z5ZEFvamdJZUx4UkFBOGdBZFBKS0tPdGl3VGFydG1KM1A1MHlOdFBBVEtQWGpRRm0vbVVTemdqWWs5RlE1QzBNNkUwRVp1MzNwMDhzUlFpS3dSY3Q2QjJnM2JHNDF0b3NJSWZYRThlbWFFSU1DWVpZaTgxL3RYanluWWVPOWZEN2pxVXdNZlo5V1RMZFpmSE5aa0lTV0ZKUlNXSUdTUkZOSWFHZ0JJSVE5ajRoRS9JS3d4b2NhVy9YT0tMSStqN3FEWEhod2dndDdPQjhqbnZLZXVrZStVRmw2Y1kwQXhLNmM0c1JLOFVsUmZuTENWUEVrb0d5bXJCaytyenZqOTlqeGptNmd3N2k3ODRuajBFQ0FJWUVxeXlIdTkvMzJYUFR4dFJYK0UwS2RXL2pGOUh6a2c1WlpFb3dqRU9vcHNaZ1hTRk9zY2puaUM5cmJjT003VWtSUktZejFFbkpCRXJIQWtIU2pyMWlzcEc3WWdEb1lWdEpsV01GNjRtN2RJQWRVWDdhOVg3cXRERGRNSkRaNTIwTmhnN013emN0ZFVHSDhiMUEwOGVnb1FCTEIydFhBL2VkMUwxemNXM0xQcE1WejF3WThLRHJHUGJCRHk3WXdqY3RIdmI0Unk1K2I1OGx4UUd4cDJUR2UwQmNVWk1Da3NvZEIwZ0R2NkVNQm9Ec0hvUTZNUE1acERDRERWSUtBc3Z3enlLY3N2eXkvTHB5ei9qS0xGWVZRWTlNWW5PWWVLMXhZYlcvTS91bkMvR0JmMFNnamxTQ1Nock5HbFkydUdyOWo1bkdHc3FUQ1dkSU5mMFhPQUlJQVhic3ZKSzc2dXRYclB3L2U0RmdpaEJ5amcwRDRnRzBIdFNGbVZOWHFIUndvZzdCRXlrZzVoVDRSMCswWEx5TGNGWmxrK0JQUE5OclNQMHdUTXhpc2pYelc5bWNVNmh5Q2NIaVlkd21BNXJBcVRUaGlpYnN2clUyZDBQcmlqNEk3aWp1SzJONmk3aWVKTy8rZ0N3bEhjVmlRRk8rdHpSTlc0cmNtVGtXeklnSlFNQTZybWxZNnBPYjl5K1orTVZhSmkvSnIrL1BjQ2dnQm1Ka2JueWp2dXUrYnh4cnRXOUdkWGpRaEhDOWlacmthSm9DYWpxbkZHS0lkUVl5cEFEaUYxYTA3SUxzVWRkUVFiWjdEOXhFQkliVXl0R2NpSmdTY1lTR3BOQmptaHhobWhuQkRrVUJPRkhGVEErc2YyVkJWSktDZWtDc3NKNVJDcUdVaHFZMnBqS2pWa05BS3BqYVNxSjZHUlZLQXhOUWUycHdJNTIyY1FvaTNlZGFVcUtyYnJSb2JJQ1dWWFpZT1VWV1NOZnU3YVEyL04yV0xrK3JlR0hoOWVRTGZ3NkVGQUVFRHp2RkJSV3ZGMXJmY3RMN2pucS8xZHJ5SWlVUXAyMWdQWklCQlVtVzBGMWk5Mm9DYWFvK0ppcVlSeUNFSE9hYlhGVXl4ekxFRG9USGZ0bmlpa2tMQmJCU2RhZW9hS25DaVFWcEtpU2FiQVV5VURKaGpicDB1cUdMejNPenVHMXB5L1l1ZHo3YXRFaGZIeUNPZ2VIajBKQ0FJd2FoYTVac3JicjN2NXVzYTdWb3c3d0dzSXdVY1hodFBacHpnWDZ4ZFl2S2NtNDNPTDdFSVdBS3JJcnNxdUlodXFzcTBZc3FuS3hvdzAvd01WWFFXUUU4clpQc05zVzNORVFVNU5odFZITnN3TGthTUdUTWpNRWNvSlpWdlBWWlV0YTBkS0lhc0dwNC9la1Y3WGV2NnZsN3o3MlBQK2hqMG50eVpCTi9Ib1VVQ1VIbnZpS21OQ21uSEhOKys3N0d0TDVvb2pZdVNvR2hHT0Z2eHhuSWtKSEJtNWc2TUxhcVBzWHdEczRHaG1ObFhaMUtvUHoxWFpPNWkrZnZoMG9IWWtPNlpEN2NmVGEwZXVIejU5eC9ramQwemZNUjFZUDN3NnNWdldMOWh4L2tnVmptYkRqdW5yV1ZETGU1MERid1ZlL1VZbmlSMm84elFKNnhlZ3RNUXFzc0xUU3QyZWpLMGpOc3paa21lc3FoREc0bXV0Yk4yaEhnWEVuRmtjdks3cVJubjdkUzlObXRCWWNJOFF0WG1IRVJHaUJjQk8wdmVSTFdRbjFacmN3dmxnTVI0aHpEVkZSOWorSXh6eHpsdnRSRUJhdVVSOENkWjhLSlpvcWcvU2loVzJRcUZXTmlXb0VaYkZ2aXplK1U0cFIvSnFSc2lOY3hZOS8rL1AreHYybkN3Zm9DcnNiaFAyS0NBbUlpMjM3ems1OTBkaVVldXJFL2RjVlhDUE9DSnlEeU1nQWxFS29KT1RHL1pseFg0SnA5dVhwK2ZibHdYNzZDelZlY3RuM0g0NldlNm51NUFuSE5QYnBnR1VBa2Z5YWtmSURUdVhiUEZ1eVZ2MXdYWXVVVDVjdXQrcVBReUl0VUR5M3ZmY01zOTQ4Mi8zVldVZFdmdnd0TG5paUNCWEhGSnlQUnkxZFV6QUhYV2JLcVdsY01hMFRyQlQ2UHlQT3k1cnJFUzdmUFVEdGs0Yks4RysxMHh3RTNYa2lhVVZ4TDFocVR2S0JZVFR5L0tscEhhRXNWR2hJZjF5by92NWo5UXUxck5vMUo0R3hJYmsrVis3eHgrYVVDd1dqZjNhQVAvYWg2Y3gxMFV0aUZ3T0E2SXNLMTJ4ZzdCSGxPV0hQU0tjVHRnandoNUIySU9nekd0eWlyQkhTQ0xwVW9UM1phVWpJK21Lb1VROGlvVUp1OXVhODVTeS9IQTY2dnVKREhxRkZSMG12U3dMajZBc24zQzZPUmVLV0QxZlJ0TEQ2VWdoSStic1JTTENIck9paURWUk1uOGtqQ29IS1RPazNMaHp5WmI4ZDczR2F0SDRBY1hmTXJlbG4wMmI5andndGh1MlAvMWgrN2p4cWFKWUxHcTk5L0cxOEREVG1Dc0V0UjJ5eXpPSHU1N2FXVW1tQ0pCQ3lRT0V4QXlZY2tiSU9BbGxpUTl6WVFkcnFjZDhNd25JRENrM3drNVl3cFo4UXhxclhWdkZYaDR2TkpkL3p0TFNyZWNCaVVIUzh1UGZNMDdteXR0ZDkxYjlsVExoWnkwUFR3TWNlNkVkVXZaem9SSDI4bGVYSHJ4enphRUx1YzVJR3hVVWk0cnhTcTVkSy8xYm13NW5uL3psVlZiNjJkcFZuUXRBWW9lWDZDbkZ6ekpPNWhtM0k4UzM3eUJmaURJL2E4OUZuVjhXTGFLWWZDbkxWcTJWckhiSnhuVVV6YnQ2Z0pWNjlpWUs1d1FRQnlUUXY3Z0N4citmaXpDNC9hcS9zZWlPeTJTSHZPZm9JYjRvT1ZWaDJURmw4MnoxdDJ6VkN3YXJjVW5LTDlsMm1LTFFocGdEeVo3NEhuN08yc0lCU2R2Sk44czNYYnFPY1VRdlBYVEpub21uNVRWYzZ0UUx3MlU0dnBnWnVGU0tHYWx5R2M2UGF0YU5kc2orTmJNYXVGUk1mTkZmZ0RyZUppbS9aSnQ3TDltNDVJdGxzYkZCaitCeERnR0pnd1F3dG1kOTNTdWplNnJHUlM4OWQzV2VlL3FBdmR3bzVQYWwrY254Q1QzMFplbWNjb3ZURDhKcStlU2ZITjk1THVzOHgzVEZBNjl4ZE1wcGc2M25GczNQTmZ2dTR1RmsvMzlUVDY3UWZnbnk5Rjhja3g1ZWZQcHlGSngvVlV6T3diVDZTOVE0LzhWUU9UY3Q5MlVDWWxYNXBkZll3M1J1OWFCZU1pZnJJNU42eHJhM2ozcU0rZ0RwWmRRSFNDK2pQa0I2R2ZVQjBzdW9ENUJlUm4yQTlETHFBNlNYVVI4Z3ZZejZBT2xsMUFkSUw2TStRSG9aOVFIU3k2Z1BrRjVHZllEME11b0RwSmRSSHlDOWpQb0E2V1hVQjBndm96NUFlaG4xQWRMTHFBK1FYa1o5Z1BReTZnT2tsMUVmSUwyTStnRHBaZFFIU0MralBrQjZHZlVCMHN1b0Q1QmVSbjJBOURMcUE2U1gwZjhEc1BoZUt5S21iNmdBQUFBQVNVVk9SSzVDWUlJPSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzFfUFJFIiwiRklET18yXzEiXSwiZXh0ZW5zaW9ucyI6WyJ1dm0iLCJjcmVkQmxvYiIsImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJsYXJnZUJsb2JLZXkiLCJtaW5QaW5MZW5ndGgiXSwiYWFndWlkIjoiMzBiNTAzNWVkMjk3NGZmMTAyMGJhZGRjOTZiYTZhOTgiLCJvcHRpb25zIjp7InJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImxhcmdlQmxvYnMiOnRydWUsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJhbHdheXNVdiI6ZmFsc2V9LCJtYXhNc2dTaXplIjo3NjA5LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjgsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6NTAwLCJ0cmFuc3BvcnRzIjpbInVzYiIsIm5mYyJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5Ijo0MDU2LCJtaW5QSU5MZW5ndGgiOjQsIm1heENyZWRCbG9iTGVuZ3RoIjo2NCwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjE1LCJyZW1haW5pbmdEaXNjb3ZlcmFibGVDcmVkZW50aWFscyI6NjYyfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDgtMjYiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJESUdJUEFTUyBGWDEgRklQUyIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjUwODI2MDAzIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDgtMjYiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MX1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0xMC0yMSJ9LHsiYWFndWlkIjoiMDRhOGZjZjItMTljMS00NTdiLTkxMWUtNjkyMTlmMTc1ODNmIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiIwNGE4ZmNmMi0xOWMxLTQ1N2ItOTExZS02OTIxOWYxNzU4M2YiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiVGhhbGVzIFBBWSBHRkNYMTMgYXV0aGVudGljYXRvciJ9LCJkZXNjcmlwdGlvbiI6IlRoYWxlcyBQQVkgR0ZDWDEzIGF1dGhlbnRpY2F0b3IiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6NSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9LHsibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MTAsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJpc0tleVJlc3RyaWN0ZWQiOnRydWUsImlzRnJlc2hVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZWQiOnRydWUsIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRkNUQ0NBdkdnQXdJQkFnSU5BTFBIcU1yUm0vMG54b0d4aWpBTkJna3Foa2lHOXcwQkFRc0ZBRENCb1RFMU1ETUdDU3FHU0liM0RRRUpBUlltWTJWeWRHbG1hV05oZEdVdVlYVjBiMjFoZEdsdmJrQjBhR0ZzWlhObmNtOTFjQzVqYjIweEN6QUpCZ05WQkFZVEFrWlNNUTR3REFZRFZRUUhEQVZVYjNWeWN6RVRNQkVHQTFVRUNnd0tWR2hoYkdWeklFUkpVekUyTURRR0ExVUVBd3d0VkdoaGJHVnpJRVJKVXlCUWNtbDJZWFJsSUZKdmIzUWdRMlZ5ZEdsbWFXTmhkR1VnUVhWMGFHOXlhWFI1TUI0WERUSXlNVEF4T0RFMk1qazFNMW9YRFRReU1Ea3dNVEUyTXpRMU0xb3dnWkV4TlRBekJna3Foa2lHOXcwQkNRRVdKbU5sY25ScFptbGpZWFJsTG1GMWRHOXRZWFJwYjI1QWRHaGhiR1Z6WjNKdmRYQXVZMjl0TVFzd0NRWURWUVFHRXdKR1VqRU9NQXdHQTFVRUJ3d0ZWRzkxY25NeEV6QVJCZ05WQkFvTUNsUm9ZV3hsY3lCRVNWTXhKakFrQmdOVkJBTU1IVlJvWVd4bGN5QkVTVk1nVTI5c2RYUnBiMjV6SUVWRFJGTkJJRU5CTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFR0NWS1pmNFNNbHVLU1FBZVcwOGxaaHYrN1JsV1VpZnNhRjNkNldzUE1taDZzWkVXcSs1SERkUWwyT0N5aWNvTHlyMS9HaFlwWi9iRlpkdWtlSEE3enFPQ0FSY3dnZ0VUTUE4R0ExVWRFd0VCL3dRRk1BTUJBZjh3SFFZRFZSME9CQllFRkkwLzA2NEdFMXUwYWR6ODRJeE9BYWRkTkdGM01COEdBMVVkSXdRWU1CYUFGRnhsN1hIdDhZSzBwOW5zSk9UUFpZdzl0cXVNTUE0R0ExVWREd0VCL3dRRUF3SUJCakJqQmdOVkhSOEVYREJhTUZpZ1ZxQlVobEpvZEhSd09pOHZZM0pzTFdKd2Eya3VaMlZ0WVd4MGJ5NWpiMjB2UTFKTU1pOVVhR0ZzWlhOZlJFbFRYMUJ5YVhaaGRHVmZVbTl2ZEY5RFpYSjBhV1pwWTJGMFpWOUJkWFJvYjNKcGRIa3VZM0pzTUVzR0NDc0dBUVVGQndFQkJEOHdQVEE3QmdnckJnRUZCUWN3QW9ZdmFIUjBjRG92TDJGcFlTMWljR3RwTG1kbGJXRnNkRzh1WTI5dEwwRkpRUzlTVTBGZlVtOXZkRjlEUVM1amNuUXdEUVlKS29aSWh2Y05BUUVMQlFBRGdnSUJBSXB1THhTRzAwVjVsa09XcUU3clhGd3BhM0swaGlMM1RqMGhTb0J3enVIcC9RYVVEWjRaU2dZN2VROThnN0d3cUdQT1JzS1hOSldqaHN0cVhPeFV6YStKS08wcm5qT2NreHVtNmtoSG5WY1ZSelBqSVVYRHd5dGVEYS94cGxIZFgyZ3lCL0dxNWNIcG9SdTU5UmluOFo2VWMybkNEcmQxZFN4VFFacER5MzdpRnFIem1ubGMydEZ0TXNYWUxkQ1djaWZDMzFuWDZVZzEvZk4xRHFqaS85SVFEZ3A1NnFhbUxIRDgvWWZ5enhlL1hMNkQrQkhsYS9KNjFQMXVlUU55NTBIUkFRRGd1aXFPK0NNcmxBaE1QTEU0a2xpS0lWNTdwbVFtZjluME4zSVNpQ0FQdGJZMHBsRENHR2x0ZUdzbStJNUpmUk1DTXZObm5JMDI1bmlXWURrOGFWZUovS0oxWit3QkRzSTFOYjJrNVhTUFBOYWlkQ1BQb3ZmZGpaL2d5dmRHNTdTanl4RXZuQzBkcFBIZTZGMkczSlhPeXlxUmVXV0l0cDQ1bHVVS1g2eWNWKzJIV2U5VVN3bjBUR2VYOFVJNUR4VTJ5Uzg4L2ZZZlhFa0Qwc0dqL3NHYnlkYThldHVCQlRDYnBOQXY4aVhGMXRPbEhwd2lFcjlQSjBJNTBiazJFZEpwMGhvb25kK0NTRmpHTFdBSjkrQWI2dGFmMm11MGtBRURZNUJaMlRZc1NYeFBWVUVUSzRLbzdwdVd3YWRmanF6djNqUnNtZmI1SVpCOEZIa2FRaGZUT3hEK2dWTE4zRk5DTTlJdTluUmt5TTZEUjc5TjlkbElLd2M4VDZoT1cwcFh2TVZ5WGVmNUIrZDJsOUZ4ZndBZExvNUc2azJmT3lQSXNOOFAiLCJNSUlDU0RDQ0FlMmdBd0lCQWdJUVU3dVpNakE2b1I4b1dMakN5aDgvNlRBS0JnZ3Foa2pPUFFRREFqQ0JrVEUxTURNR0NTcUdTSWIzRFFFSkFSWW1ZMlZ5ZEdsbWFXTmhkR1V1WVhWMGIyMWhkR2x2YmtCMGFHRnNaWE5uY205MWNDNWpiMjB4Q3pBSkJnTlZCQVlUQWtaU01RNHdEQVlEVlFRSERBVlViM1Z5Y3pFVE1CRUdBMVVFQ2d3S1ZHaGhiR1Z6SUVSSlV6RW1NQ1FHQTFVRUF3d2RWR2hoYkdWeklFUkpVeUJUYjJ4MWRHbHZibk1nUlVORVUwRWdRMEV3SGhjTk1qVXdPVEExTURrek5EUXpXaGNOTkRBd09UQXhNRGt6TkRReldqQlVNUXN3Q1FZRFZRUUdFd0pHVWpFVE1CRUdBMVVFQ2d3S1ZHaGhiR1Z6SUVSSlV6RU1NQW9HQTFVRUN3d0RRbEJUTVNJd0lBWURWUVFEREJsVWFHRnNaWE1nUkVsVElFSlFVeUJHU1VSUElFVkRSRk5CTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFUUc0WmRDVUNSVFZMbFhSQjdsRG50dkxRZEVYcXFUV2tDMGVxQ2Q4Tkl4TkpJcUZSc3BJVFlOeUdrajFoUmdDV2d3cjJSOFBmOUtsUktxMUVwclFlUEtOak1HRXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QWRCZ05WSFE0RUZnUVVzYm9qSXhFc3Fua25qZWdOK1E3UUdFeFBBbUV3SHdZRFZSMGpCQmd3Rm9BVWpUL1RyZ1lUVzdScDNQemdqRTRCcDEwMFlYY3dEZ1lEVlIwUEFRSC9CQVFEQWdFR01Bb0dDQ3FHU000OUJBTUNBMGtBTUVZQ0lRQ0RRZm04ZUlTbHVSYnFUdDFhNUtrRi9vSkVHa28xWDZvYUhIUEc4NjJaU0FJaEFOendIZDdXRnJBeWJLMjEvMmlyamZ4eE5ZOWFZT3MzZUQwR25URytxSmJGIl0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQVF3QUFBQWdDQVlBQUFEbmxVWnFBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRW5RQUFCSjBBZDVtSDNnQUFBQVpkRVZZZEZOdlpuUjNZWEpsQUhCaGFXNTBMbTVsZENBMExqQXVNakh4SUdtVkFBQUsxRWxFUVZSNFh1MWREWEFjWlJtK05PQWZLb2c2V08wUWNyZVgzTzcxUjQxb0hkU3FxREFPZzMrY1lFWEJvbFhSVEVuMjIwdGFLVGM2NG1nQnF6QmlFVVZwQmRxaXd3aHFTZElTMnVwWVNndlJ0cFRTY2tsald6SGFnanBTUmRyNHZMdHZqcnZrMjd2ZHZkMUxqbjdQekROM3QvZCs3L3QrZjgvKzc4YUswTkRhYXIycU9kWFpvcVd5SDlSMGEwRmN0NjdXZEhHVFpvalZDY1BxU2VqVzFvUXVIc095L2VCVHNEbU0vNTRaVDlqK0xXR0lnN0RmQi9zQmNEUHNmNFhmUDhYM2IydUcxWkhRelU4bVV1S2R5V1RIbTVxYWNpL2pIQUtCeWlmMGJCcitMd2FYSVBZUGtNZHFmTDhYZFdwbHMxQUEzMS9Rak93OThMOFM5YjhCWElSMituRGM2RG96bHNrMHNsbmtRTXhrUEdYTzlFSnRWbllHRjRzVXlWbmQ4VVRhZXA4YncrNkxha0JqNWl6ZGJOSlMxcnhFV255V3hnMzZFbVBkV29QUERlamY3ZUFUR01zSGFEelR1QzZoYmowTi9wWG1Bc3J1Z3MwV0xQOE51QkpqWkptV0VsY2wwOW1QSjFKbVcwdEw1K3VpSEJ1R2tYc2xqWDg3bmk0RXpWbms5QXZrc1FuNTdFU2RockI4Qk11UGpPV1AvLzRPSHNSL2U3RDhZZFRsZnRSaEZmZ2RMRzlIdTF3QWZ6cjU1akFPa2lRS2h2VmJHQjZDMC8vaSsyaU5lUng4RmdudlJmeGZhaW56U2s3TkUwaUlVUGJmNDN3V21OVE5kN0JwS0VBN0xaZkZBWTl6cDN5WlRTTURpUVZpL1UrU2c1UVlBSWZPbUcyZXdzVWpBL3JoVzdMNEJlcm1qOWgwVW9CMk9CK1RaVFc0Qi9rOE95Ry95Q2lPb1cxSVlINkg4WFB6OUxiY0t6aWxRR2hwTVp2aFp5SEd3RzNnNDJCazg1WjhvOTBHOFgwTmlTczFJdjJRR2s4S2RXc3p0NHNuSVA4UnFSOW1EUVhESWRaU2JCb1owSWwzUzJPWFpYWXBGNDhNVTE0d25LMWJlVzQxcEwzRkVRQ0psUFZXdERHMmZ1eVZyTlIzdEJUZFNqQjhZcklGb3lWdG5vMk9DekJneEROQkI2cFhLTUh3eGlEOWdLM0tjNlBja3ZCR0pSaStNY21DMFlENGZkSzRYb2g5Vy9ZVENaUmdlS052d2Noa0d0RzJlMlcrYWtzbEdMNHhtWUpCYXhscFRJK2tOUlFkbUdSM29VTUpoamY2RlF3NmNDcnpVM3RDTUxEV3VRc2QzUitBdzNLbkJRNUt5bmpoamR4T25uRGlDRVp1R2pyc1lXbE1KdHBpV1VLM0JtVC9GZkV1ZGhnNlVQZTZGZ3owYlI2ZmE2TW1uWTNrbER3aGFZakxVVTZlczI3dDBnenptN1ZnVXU5NkQ2ZmtIeENhNjJVVkdDTXE4ZzAyalJRbmltQm9SdllpYVR3bTJudGZXOXZDazdXMGRZSHMvd0oxNjNrNmVNWnVRMFc5Q3diRzlLMXNPcVdBdklVMFg1dGlEWnROYlNqQmNHRUVndEhXZHN2SjhFMm5BdVV4aWJwNWhXTTkyb0RmMnliOFgwS3gzckVORjBvd29nSG0waEpwdmphVllQakNpU0FZaWJUMWVXa3NKaWJDay9QbTVVNWljOHJ4UXBsZE1SUHA3SGxzSGhxVVlFUURKUmdoNHNVdUdIU1JEK3BJVitUSjR4SDFMRzlkakNIVGlNbFI0VmlHMkU3SFJiaEFLRkNDRVEyVVlJU0lGN3Rnb0oyejBqaE10SE9lamwyd2VRRlkvbEdaZlNuRmZEWVBCVW93b2tIQ01CZEw4N1dwQk1NWEtncUdJUzV2VHB0bmgwWFUrMDVabkFKREZBekQ2RGdkL3A2V3htSEdEZkZGTmgrSDBRYjB3YU95TW1PRStPVU5JL2NTTGxBMTZsMHcwRjY3NDdxNHBScEdjZHFhN2t1UjVVdEVINDVnRG13S2kvRFpqOC83SUVTMzRyT3plYWFZeldsVWgzb1JqSm96Uk1Hb09BRU5hMGkyZFRHR2VFcDhURkptUER2WXZHclV1MkNFUWJxaGtzT0ZCc3lsaTJXeGFzVGo2TmQxMnBzWHY1N1RDUVlsR0M0TVNUQmFXNjAzb28xZGI2cXpxVnRmWW5NNTZBcEJ3OW94b1Z3Uk1ZbEdOSzM5MVZ5aUtpakJpRVl3bWxQZExiSll0U1RhN3FIaUErdStvUVREaFNFSkJ0cHZoZFQvR0hXeHY5eld4UmkwdFBpRXRId0p4YlZzWGhXVVlFUWpHSFJ3R3VPaDBnVjVrVE9lTWkvaGhQeERDWVlMUXhDTXMxcXRWZ3p1OHJldnB5eVBqd0h3c3BWaC9TdVZXaktkQ3dTR0VveW9CQU81cDgzM29wK2VrOFdzRmRGK3dhOFNWb0xod2hBRUEzN1dUUEJiUkhUY0FleEd2SlROSGZRTU5jZjZCcytQOWVibnhmcWVQSldYMmtDWnpIZ2ZFeGpDR1FJbEdORUpCc0YrRUpFdWRzdmkxb2JpVDV5S2Y5U05ZT2pXWmpUeWZhSFJ1ZDlBSG90WXBXQTROeHFKWTFMZlROVDVLMndlaTYwZk1pQVVENEtqQmZibWo4YjY4c3RqMnc3YUQycWhmVS8weHk2WnJ6SFMycXVscFRObCt3eUl1aGNNakJVNjYxUU5tMmN1UG9QRFJZVFJCanBiUjJNQU9WOUhaek9ROTgvdy9mWXdpUEh0ZmplMGJ2MkZrL0NQZWhHTU9yc09vL0x0NjdvMVhEZ1Z1aUUvQndMeGp4S3hLT1hHMk02ZHRpMzZ3OE9SZG5HUDdUY2drRnVkQzhiVXZBNmpsa2lrTzgrVHRnMklNWFNZemZ4RENZWUxxeEFNTDdldm83N3R0bkYvLzBuWWt0Z2hFWWx4SExxYXpKMnRqRXFiczlpeVNXWG4ydjREUUFsRy9hT3NZQmpXQVRiekR5VVlMZ3dzR0xscEtMdFY2cE5KSFZaNFlITGYvbmZKQldJQ2gySGRRRVhpNmV3bE1yOGxkSjVIWXR2N2hSS00ra2M1d1VENzdHVXovMUNDNGNLQWd1SHA5R2RLWE1YbUVJeDh1MFFjWFBqWWErMHltVXdqMnV0eHFlOGlvbzRYMnZZK29RU2ovbEZobCtTUGJPWWZTakJjR0VBdzZIb0s3QTZVbmNpbzU4R21wc3RlZUIxRDc5Qlg1ZUlnNGYzRHAzT3BHT0xNbC9rZnh4Mnh6RnJmajhWWGdsSC9xTEJMc29YTi9FTUpoZ3NEQ0VZaVZmNzJkV2JwSmR3OSs4NlJpc040OWc3dWgzVmhGNFBGNlFtSi8xTHExZ0l1NGhtVkJBTVQ5dTd4NzB3SmcvVFlmVTZoTEpSZ1ZFYUZYWklIMk13L2xHQzQwS2Rneko1dG5nS2ZCNlMrbVBqLzBJd1pIUy9uSWc1R1J4c2hCZ05Ta1NqbFlpNVJBUHJ1VWxtY1ltSnkvWG5HM0hFeEs2RGlGa1pFeEJqWXlDbVVSU1hCUUR1UG9BNWJvMmJTeUw2ZFUvSUUzaXFVbmdZTm0yZ0QxN04wK0c4VnArUWZTakJjNkZNdzRycGxTZjBVRVRGTk5pOUZ6L0RNV0cvK2lFUWtIUGJtTjhTMmJadDQrYmh6ajBuNUozaUJkRnMxbC9BRTFMMnVCYU5XVE9yaUE1eVNKeUR2NzhyODFKeWVyeTZXUUFtR0MzMElSdE9jM0dsb3A4TlNQMlBVeFZObDEvVHI4cTJ4dnZ4NjhQa2lzZmduZmw4ZjZ4OTBmUVVsNG41R0dxK1l1amh5NXF6dTEzQ1JpbENDNFkxMUtSajBXa2d0Ri93bVJTVVlMdlFoR0Y0bUdBYUxZUFB5MkRnMFBkWXo5SDdzcHN5TjlReFVmQzBpWGZ5RlB0b25pMWxNR3F4Y3BDS1VZSGhqM1FrR3hDS3BXKy9tZElKQkNZWUxQUW9HdllRYTl1WGY3MWxwNjZKS2xIdDgvUXNVUiswWFRYdUFFZ3h2ckEvQm9MZnIyUWZIci9HemxlbUtLU01ZdW5rSFRTekVsTDQrc0ZhQ2dmbytCKzdXak96bjJMUXNuTmNHaUQxVVR1YlBvZG5GNXBHQXpwZ2d2dXRXQnVyNkg3dE91cmlVaTVRRlhTV0tNdC9IQk41RWF5WFVyK3c5TWNFcGp2R0s0dmZJYndWZHc4SXBsQVdOQlpTNUR2V2hONVhuNGVkb3FkOG9pRnl4MndrK2l1LzBJdWlsOUt3VFRza1Q0bWx4RHRyelJtNVhqUFVvMnBYZTZHNDlnanh2dytmQ2hOR2hjZmh3UUM5amFUTEVHOXhvR0ZlV3ZpWStVdVNtMlErY29YZHk2TllpTk93eVZQckhHQmgzSm96dVVDc2VUNW1YUWZGL2poZy94T2ZYTmQyOGdqbzBhSDNwTEFsTk5HZHRMNVlpNTV2UWdiZWo0KzZnLzlnc01xQU9IM0hhU2Z3RWJYY0R2bWVUaHZVcFRlOTZ5NFF6TTc2UW05WTBaOUZwZFBjbTZ2TnBzQXQ5c3R4cE8rdlg0RWJFMjBvVENjc0dTb25sK0IvZjZXYS9WY1Y1MGFTUHg3dE9EZUVCeGcxMHh5K2Rrb1hnZkFneEZpRGUxOUFPMzBNL3JFUU85eUxtQTRpL0JiKzNsK2Jua1BJSE40UHJVTCsxK0Z3QjIydmhveDFpZjFHODFYcGJ2QTI1WmpLK3IybHhSMjRhMWQ4UlB6RWZ1d29XY3NFV2lKTXpZaitJM3crVnRLc2hIZ0gvQVBaU25xalR6Zmk4eGg2N3VuVXVQZHJBMjhOeFlySC9BejN0STRqNStUT0xBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMSIsIkZJRE9fMl8xX1BSRSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJtaW5QaW5MZW5ndGgiXSwiYWFndWlkIjoiMDRhOGZjZjIxOWMxNDU3YjkxMWU2OTIxOWYxNzU4M2YiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJub01jR2FQZXJtaXNzaW9uc1dpdGhDbGllbnRQaW4iOmZhbHNlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6dHJ1ZSwiYWx3YXlzVXYiOmZhbHNlfSwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjo5NiwidHJhbnNwb3J0cyI6WyJuZmMiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fV0sImZvcmNlUElOQ2hhbmdlIjpmYWxzZSwibWluUElOTGVuZ3RoIjo0LCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6NCwiY2VydGlmaWNhdGlvbnMiOnt9LCJyZW1haW5pbmdEaXNjb3ZlcmFibGVDcmVkZW50aWFscyI6OH19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDI2LTAxLTIzIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjUsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiVGhhbGVzIFBBWSBHRkNYMTMgQXV0aGVudGljYXRvciIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjYwMTIzMDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25Qcm9maWxlcyI6WyJjb25zdW1lciJdLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI2LTAxLTIzIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjV9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjYtMDItMjAifSx7ImFhZ3VpZCI6IjIwYWM3YTE3LWM4MTQtNDgzMy05M2ZlLTUzOWYwZDVlMzM4OSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiMjBhYzdhMTctYzgxNC00ODMzLTkzZmUtNTM5ZjBkNWUzMzg5IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ill1YmlLZXkgNSBTZXJpZXMgKEVudGVycHJpc2UgUHJvZmlsZSkifSwiZGVzY3JpcHRpb24iOiJZdWJpS2V5IDUgU2VyaWVzIChFbnRlcnByaXNlIFByb2ZpbGUpIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3MywicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9LHsibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyIsImVkMjU1MTlfZWRkc2Ffc2hhNTEyX3JhdyIsInNlY3AzODRyMV9lY2RzYV9zaGEzODRfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRE16Q0NBaHVnQXdJQkFnSVVTT0VqVGYvL3lxUmZQVzdRcThxdEl5Q3JBZzh3RFFZSktvWklodmNOQVFFTEJRQXdMekV0TUNzR0ExVUVBd3drV1hWaWFXTnZJRVpKUkU4Z1VtOXZkQ0JEUVNCVFpYSnBZV3dnTkRVd01qQXpOVFUyTUNBWERUSTBNRFV3TVRBd01EQXdNRm9ZRHpJd05qQXdORE13TURBd01EQXdXakF2TVMwd0t3WURWUVFERENSWmRXSnBZMjhnUmtsRVR5QlNiMjkwSUVOQklGTmxjbWxoYkNBME5UQXlNRE0xTlRZd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUUNkdmwyN3cyZ3UxZlBYZUVGYklkcXgwQmFsdlZEVldyUVBKN0hxdml1RXRaSGx4U0x4U0Z0Y1hwVG9sdkx2b2Y4ZjR0TWVyUVRrVkd6Y21Zem0xRUJUNElKdU1tb0VxZmtFRWhXcHNBRE1Gcmpaa3FsWlk5RXF4UXpMb1ZFRW9uRTVvR3hTZFZDeENjTElhY2tweVIvQ0NYdmoxQnQvaFRnRTloVGxGNHBScXhNa3gzcGxGN3k4ZERabFJIV3M3dmJuaG1CQ0dlSTBaUEVRNm5sMm1DZzJyNzRhZEYydTZLOXJyTGZoQkMzUUxFOEVQcmdxVXNJK2hrdXEydEs0TTJTTU9wOHVVVlZrcVVldTNoMGtyM1dWSTBXMDJwa2dyT2dpRktMRk5rU3JiWWhkak1CRGo1aXptcWZjOXhKUktvRFg2MTJxZDhaR1ZIcFQ1QVlGWCsxaEFnTUJBQUdqUlRCRE1CMEdBMVVkRGdRV0JCVFp5VTVEaVEvYTJVRWdFN3FCSzB6aElzUk5SakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VBTUE0R0ExVWREd0VCL3dRRUF3SUJCakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBWHZuQjRTTHVVSmZZTVNWR0Foc3NML1NtV2xpM0ZTY2NneHlkdktsQUNjaWRJSVdLUXFhM3EvUVNVRVF6QzlEZ0VmTWdyN2lDMUJrVFpiSUxib1Y2VVo1a25Oc3ZqRVpXdU1lb2dKOHRnWnMxaFZ2S3daaXp3SittRWNtc2poSXJCWXVvTDFUNnlyT0p2S0ZnMWp2K0N5NFp3QTlCcGsvVjNVT2lyMVZ5SzhkQ3R5SHU2dmZvc290QWRZeDhGQXVSMjQzZ1JUTVY2Sng4SmRpZzJKRElBUU1selZlRHBTVUhYL0sySFhSSHhId2ZnamJnVWpqQnUvNzJyOE9mZWh5aHpIWEkzSzhDRkZkZmxPKzhuRU9KSzN5OEYxaXZnUzV1Ti84U21jWXcvU1RRWXdocnhQdXd6M25QOGJhTXVtNEJCMm5uWW1wQjYwc1gzYmw1azhRVVN3PT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZkNBWUFBQUNHVnMrTUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFIWVlBQUIyR0FWMmlFNEVBQUFiTlNVUkJWRmhIcFZkN1ROVjFGRC8zZDU5d2VRU0lnUzlBUUFYY0ZMQVFaaTlmcGVWejF0WS9XVFpyNVd4cGM3VzVrbkxhNWpJM1o4NXNyUzJuTTJzanRXd1pTN0lVSDRINHhDbkVReDREQVpGNzRWN3VzODg1djkvbEluQnZWSi9CNFB2OW51LzVudS81bnZNNTU2ZnpBL1F2MEhiL0lyWDNWRktQbzQ1Y25tNGluVUlXWXdMRlJtWlFVdXdqRkcvTjFpUkhoMUVaME5SVlJ1ZHF0MUJkKzJuU0t5Uy9PaHlzMCtsazNlLzNrUTlxdkQ0WlV0YTRWVlNVdVkwZWlweWlUaEFmb2NvT1JWZ0R1dXczcUtSaUFkM3JiY0V0alRqWUlvZjZXYUhzQ216VlBXQ014K2NnaDh0THFXTUthTVdzVWpMcW8yUnRKSVEwb096bWVycFF1NGVzWmdzT05rR3hIN2Qwa2R2VFQxN3M0T01VN1ZJOFpoamdHYU0rQXE5aUVOdThQaWYxdWR6MDdNd3ZLV2Y4R2xWb0NFWTA0UEM1V2RUYVhZRmJSOHZOdkw1KzNLZ2ZiNXhOTXlhOVJhbUppeW5hTWxHVFZ0RmxyNmJhOXUrcHFuRVg0dU11UlJnalNZRWhyTjd1dEZGZTZscWFsN05ma3c1aW1BR0h5blBwYms4Vm1ZMHhzdG5wdGxGQ1ZDWXR6VHVCTjgzUXBNTGpUdGV2ZFB6U1VuSjdlOG1ranhaMzlmWGJLRGZsZFpxYnZVK1RVZ0duQlZGNmZRMmlQSGc0VzE2VVdVd3Z6YmsxNnNNWkUrUG4wcHZ6N0pTZXVBeWVzOGxjcENtYUt1by9wK3FXcjJVY3dJQUhXcnZQMFlFemhYQXRMQWJzc0hocDdpR2FtdnlpalA4cnlxclhVV1g5WG9vd3h5QXVmTkJycDQzUE9CRlhabGtmOE1EUmlxY3B5b3dBd3B1ejJ4K2ZXdnovRHRkZTlzbXN6eWd0Y1I2QzF3YmR6Qmw2T2xxNVdOWVk0b0dhdGhKTXJrVEV4MGpBUlNIQVZzKzVyWWtRTlhiK1FnZlBMc1E2Z1h5SW5zcmVRZm1wbTdSVkZZZkw4Nm4xZmlVT2tZdlNoa1VQeHZidWt6b3k2SzFpaE0xaG8zWHpXNkV2U2ZYQStkcGlXR2FXZCtkb1h6THptR3dLWUZMQ0FzUkFsUEJBaE1sQ0ZYVTd0QlVWUHI4SGdWY0pIV3ErRjAwcGxyK0RNVGRyUDR6dnhZMTFrTk1oeFQrU2VUR2crZDRWNUxRSml0eVVHSk5COFZGWnNqZ1lCWk0vSUkvWENUa2owcXlET3BGMkFWUTE3Q0lqVXAvRG5UMVVrTDVGNWdkaitzUzF3ZzFnRTNnaWdtNjBmQ1h6U25QWGJ5QVBiSVh2K0lEcEUxNlRoYUhJUzlza3lobG1NRTVGM2NmcUFLaHEyQzBFNVBIMWdZYVhhTFBEa1pHMEhESk9uS1dIcDUxSTB6NVNPdXg4ZTFXQXVaemRIUXJUa3A4VG1qWG9JK2xhMHdHWnN6dWJxYk8zaWZRNkEvVzd2VlNZc1YzbVIwSkt3a0tjNFdIaUJrbVI4STNDQ2dJODdvT0w0cXpUNVArUlVKQmVqRU9nQVBLOGhZUHphdE0rZUlUcDJJTzl5VFFtZXJvbVBSeHgxcXhBY3NpbGUvdWJTZUViY1dRR1lFQ2doY0xZMkh5S2pvZ2pIMjVoTXBqcFV2MU91Z2xpNGVoMmVSdzBPMzJiSmpreXVDZ056ZzB2emxZTVNpU3MwdW9vNE1HN2hNT2pDRWFYMXlGRTBuU3ZqQnp1VG5FcEs4Nlo4SW9xRkFJdWJ3OGtnOUFyRWFSRVdTWkkrakg0WGJwNmc5RTlFbkpUM29hUnpETitNVUpCUURIbjU2YThvVW1FQnVzT3hCcy9ONSt0SkViUGtBRkRqOFVHdk9zL0lXdmNTZ2xHQmh2UzcvRlRZZnBXR1lkRFk4ZlBBeFdTQTM1c1RDNHA0K0xtNEFhcUlvUGVRdGZ1Zks2SmgwWmh4bGJzVVhPU21YTmlmRDVaVEFreURvZmJiY2NseG5BOFdOQXF4Q2JSTnlraFh4UXBhRHc2N2ZYVVlic2lHMEtodHYyb2VJdmg4cmhRTVlPY0VBcVhHL2VJK3puZ09jNXl4cjhxODJJQU0xYy9GTEZPcGxxdTVlRlFYck1aekdjVkNqWWJMV0c1STRCVDFldVJybGJ4dE5PdE1pdERERWhMWElJeW5BQXZ1T0VXRTNYM05kQWZ0OTRWZ2FHNDJYSVF0MFpYNlBlQ0UvcVFGZTlySzZIeDdZVTUwS3ZIN2ZXNGZTK3E3S0tCSnhzZ2dCWDVwU0FHaDFqSXJWaDV6UTZ3M1JmYWFoQlhtL2FDYkNaVGpDVUZVVHlXWnFXOXA2Mk1qSlBYVnFPclBnTU80TnY3NEdrZitvd2Z0TlZCRFFuakZKcUhTdzE3cFh2aFdXNUtacWUvUTQ5Ti9VU1RDQVZXb1FYRklIQkhYWGUzRlByVURzdUdEbXRGL2hIS1RIcGVreGhpQU9QSStTSnE2UzZIRjRJOVlXemtCSlRvNDZpVU16V3A4UGlyL1JpZHVMeEtZc1Nrc1Y4dkxsT1F2aEdYMllsUjBPQmhCakMrdS9nRWN2WTBBcEs3WWs0MU54alBTUW5XRkhURjY2VXJqZ2V2QjhDdTVhK2wydllTUlB0dVZEbzczaGhkTVNIblVYN3RUanNWWkd4QWwvV3B0aU9JRVExZ25MMjltWDYvdFIxdG1sa1lqOFc0WCtDU2pXY1VER1kxTnBTL0M3aFNLcWlNTE0vbDJRbVNXWjczRGR6K2dpbzhCQ0VOWVBRNDZxbmt6d1hVYnF2Qmt4alVRc1dmWkZnYnVvM3JBZit3TjdqT085MCt5bng0UGkzTCswbllMMVNjaERVZ0FQNGdQVi83SWQxcSsxSFNobXVHa0lxV1JQZ3l4TUZxUDhIZmpUbmpYd1k1YlFmYkpjdDZPSXpLZ01Ib3RGL0hlMWVnc2F4SFNxRzZ3ZmRtUTV4OE55VEZGcUJjcDJpU293SFIzeWs1KzM2aEY3dlhBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMV9QUkUiLCJGSURPXzJfMSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJsYXJnZUJsb2JLZXkiLCJjcmVkQmxvYiIsIm1pblBpbkxlbmd0aCJdLCJhYWd1aWQiOiIyMGFjN2ExN2M4MTQ0ODMzOTNmZTUzOWYwZDVlMzM4OSIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImxhcmdlQmxvYnMiOnRydWUsImVwIjpmYWxzZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOnRydWUsImFsd2F5c1V2IjpmYWxzZX0sIm1heE1zZ1NpemUiOjEyODAsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6OCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoxMjgsInRyYW5zcG9ydHMiOlsidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN30seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTh9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi0zNX1dLCJtYXhTZXJpYWxpemVkTGFyZ2VCbG9iQXJyYXkiOjQwOTYsIm1pblBJTkxlbmd0aCI6NCwiZmlybXdhcmVWZXJzaW9uIjozMjk0NzMsIm1heENyZWRCbG9iTGVuZ3RoIjozMiwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjEsInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjoxMDB9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMC0xMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzMsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWXViaUtleSA1IFNlcmllcyAoRW50ZXJwcmlzZSBQcm9maWxlKSIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjQxMDEyMDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25Qcm9maWxlcyI6WyJlbnRlcnByaXNlIl0sImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMTAtMTIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDczfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI0LTEwLTI1In0seyJhYWd1aWQiOiI5MDEyNTkzZi00M2U0LTQ0NjEtYTk3YS1kOTI3NzdiNTVkNzQiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjkwMTI1OTNmLTQzZTQtNDQ2MS1hOTdhLWQ5Mjc3N2I1NWQ3NCIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJWaW5DU1MgRklETzIgRmluZ2VycHJpbnQifSwiZGVzY3JpcHRpb24iOiJWaW5DU1MgRklETzIgRmluZ2VycHJpbnQiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MiwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCIsImJhc2ljX3N1cnJvZ2F0ZSJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MTAsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6MCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjAsImJsb2NrU2xvd2Rvd24iOjB9fSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwibmZjIiwiYmx1ZXRvb3RoIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlERWpDQ0FyZWdBd0lCQWdJQkFUQUtCZ2dxaGtqT1BRUURBakI4TVFzd0NRWURWUVFHRXdKV1RqRVNNQkFHQTFVRUNBd0pTRzlEYUdsTmFXNW9NUTh3RFFZRFZRUUtEQVpXYVc1RFUxTXhEekFOQmdOVkJBc01CbEp2YjNSRFFURVdNQlFHQTFVRUF3d05ZMkV1ZG1sdVkzTnpMbTVsZERFZk1CMEdDU3FHU0liM0RRRUpBUllRWVdSdGFXNUFkbWx1WTNOekxtNWxkREFnRncweU16RXdNalF3TnpVeU16WmFHQTh5TURjek1UQXhNVEEzTlRJek5sb3dnWkl4Q3pBSkJnTlZCQVlUQWxaT01SSXdFQVlEVlFRSURBbEliME5vYVUxcGJtZ3hEekFOQmdOVkJBb01CbFpwYmtOVFV6RWlNQ0FHQTFVRUN3d1pRWFYwYUdWdWRHbGpZWFJ2Y2lCQmRIUmxjM1JoZEdsdmJqRVpNQmNHQTFVRUF3d1FabWxrYnpJdWRtbHVZM056TG01bGRERWZNQjBHQ1NxR1NJYjNEUUVKQVJZUVlXUnRhVzVBZG1sdVkzTnpMbTVsZERCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQkRjbGxTa055eTJlYlZKdVVoN0VEUjRvK3BmRlh0RFJ3Q1h1bjBMLzJ1MXdWOFFZb3Btckt2TjJZbVdVM3hmRW91OUdZbGc4RlZTeWl1STdYaHNuVlQyamdnRVBNSUlCQ3pBZEJnTlZIUTRFRmdRVXRUbXQrSGtnQm1pS0t0eG41QWZyNTIxVElzRXdnWmtHQTFVZEl3U0JrVENCanFHQmdLUitNSHd4Q3pBSkJnTlZCQVlUQWxaT01SSXdFQVlEVlFRSURBbEliME5vYVUxcGJtZ3hEekFOQmdOVkJBb01CbFpwYmtOVFV6RVBNQTBHQTFVRUN3d0dVbTl2ZEVOQk1SWXdGQVlEVlFRRERBMWpZUzUyYVc1amMzTXVibVYwTVI4d0hRWUpLb1pJaHZjTkFRa0JGaEJoWkcxcGJrQjJhVzVqYzNNdWJtVjBnZ2tBc2s2czMzMlpyUDR3Q1FZRFZSMFRCQUl3QURBTEJnTlZIUThFQkFNQ0JQQXdFd1lMS3dZQkJBR0M1UndDQVFFRUJBTUNCSEF3SVFZTEt3WUJCQUdDNVJ3QkFRUUVFZ1FRa0JKWlAwUGtSR0dwZXRrbmQ3VmRkREFLQmdncWhrak9QUVFEQWdOSkFEQkdBaUVBeVEvOVlDbkZqN2wwUExybWFEVTBCaFA5d01QRDdqS0Vkdk1lMXpTcjY0SUNJUUNvNUwvU0lZQVNBT2RrSXJtNURKSW94TUpZS2pNdWFaTVpZMVI2cnpKU2F3PT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBTXdBQUFETUNBWUFBQUEvSWt6eUFBQUFCR2RCVFVFQUFMR1BDL3hoQlFBQUFDQmpTRkpOQUFCNkpnQUFnSVFBQVBvQUFBQ0E2QUFBZFRBQUFPcGdBQUE2bUFBQUYzQ2N1bEU4QUFBQUJtSkxSMFFBL3dEL0FQK2d2YWVUQUFBQUNYQklXWE1BQUM0akFBQXVJd0Y0cFQ5MkFBQUFCM1JKVFVVSDVBVVpBd28yaytPbkd3QUFIZTVKUkVGVWVOcnRuWGw0WkZXZDl6Ky9lMnU1U1hmVFcxS2hRWVFCRzZTVEFBTzQ0TGlnb2dPTXIvb3d6RGlLRGc2aXFLaU1JeUNET0FvaUlMNkk0b0lvTG9DQ3dxaXZpT0kyTUd3cUNpMTBLcjNRck0zV3FhUVhPcDNrVmxKMWZ1OGZwOUowTjlscVNXN2Rxdk41bnVya2VUcDE2OXhiOTN2UE9iOFZIQTZIdytGd09Cd09oOFBoY0RnY0RvZkQ0WEE0SEE2SHcrRndPQndPaDhQaGNEZ2NEb2ZENFhBNEhBNkh3K0Z3T0J3T2g4UGhjRGdjRG9mRDRYQTRIQTVIc3lOUkQ4QVJEMGE2MDRBaXpCUHdSWTAzZnUrSWlJaWlpZ0FHUlZXUm9xS2hxZ3F0YTRhaUhuN05jSUpwY2thNk1xZ3g0bmxlRW1FQnNBQllETElZV0ZKNkxRWVdBbnNBTFVCeXQxY0NNTUFZTUxyVHp4QVlBb1ozK3JrVkdBQzJsSDRmUkhWSVZFZFVUUUY4RFZibm9yNHNrK0lFMHlTTXJHaGpiR2lNMUlKMEVsaU1zQ2ZJZnNCeVlIOWdQMkFaVmlEemdWWWdCWGpVOWo0WkY5WUlWa0NEd0dZZ0J6eFRlajBOUEkyeUVkRitsT2RRQ1Vra0RQa1JncldiSTd1T1RqQU5TdGlkQWFPQ0ovTkJYZ3gwQVljQUs0Q1hBSHRpWjQxazFHT2RBTVhPVU51d1lub1dlQko0SEhqTS9xNVBvL1FMYkROcVJnVUllZ2RtZldCT01BM0NhUGNTaXFZVmtkRTBJdnNBaHdOL1YvcjVFcUFOdTNScUJNYUE1NEErckpBZUFSN0ZDdW9wb0EvVnphRGJBUTJ5L1RYN1lDZVlHQk4yZDZCR0VaRVdoSU9BbzRIWEE0ZGhsMWYxT0h0TWg4SHVmWVpMciszWTVWdUlGVW9CS0dMRm55cTlrb0JmZWhuczdMUVorQ3R3Ti9BN0lCLzA5RlU5dUVaNTRqUVZZWGNHVUIvVkE4U1RZNEZqZ1NPeHMwaWNIb0loZHUreUFWZ1BQQXc4Z2QzRGJBR2VRM1VFWVF5Vk1VR0xDQWJGbE03VDEzR2hDQW1RSkJCZzkyRkxnVVdBaitMWGFzQnh1cmhOVGJpaURYd2ZWT2NqY2hSd0l2RDN3RDdZalhrY0dNTnU2aDhFL2d6Y0R6eUVhai9va0NCR0pVZlFFL1V3SjhjSnBzNEpPOXVSUkJLS3hTVXF2QWw0TC9CcXJDVXJEb3hoTitwM0FMOUg5WDZVcDFJcHlRK05LQXZXMXE4SmVTS2NZT3FVL0NGdHFQRUJGaUs4RGZnQWR0bVZqbnBzTTJRQXVBUDBKOERkR0o0UktLWjc0eVdRM1hHQ3FVUHNIb1VBNUJqZ284RHJpSWRRRkR1Yi9BejB4eWlyeENOZktBanpWbGUvNGE0SDNLYS9qc2gzWmNBVVJWVzZFRDRCbklEMXZOYzdCcnRwL3dId1l6SEZSMVRFMU5LY1d5KzRHYVlPQ0ZkMGdLY0FpeEI1TC9BeDRHK2lIdGNNZVJyNExxcmZ3eFFmUjBUbndvRVlGVzZHaVpoOFZ3YXZXS1FvL3VIQVo0RGppSWYvWkFUNEdhcVhDVHdBbVBUcVRWR1BhZFp4TTB5RWhGMmx2WXJJZTRCenNmRmNjYUFYdUFUbHB3akR0WEFJeGdVbm1BZ0lWM1JZbDV2U2hzaTV3R25ZWU1kNkp3L2NpT3FGeGtzOTVKdVFkTFp4bDE4VDRRUXp4NFNkN2VCNW9Ib2dJbDhFM2tJOEhJOER3RVdvWG9WSVU4MHFPK01FTTRlRVhXMklsMEsxZUNUd1ZlQ1ZVWTlwaGp3TStnbU0zb0tJQ2JMeDlxVlVReHllYkExQnZqdUQ4Wk9vS2J3ZXVJYjRpT1YrNEYrTHFlVE5BazB0Rm5BenpKd1FkcldWNGdMTjY0Q3JzZUgyY2VBZTRJT2dXUkNhZFJtMk0wNHdzMHpZbFFFUmdGY0Ezd0U2b3g3VERQa0Q2S2tnYXp3MXBCclFDVmtKVGpDenlGam5Vb3BlQXBRVkNOY0NSMFE5cGhteUNqZ1plQUJWbW4wWnRqTnVEek9MRkNVQnl0NElseE1mc1R5Rjh1OGdEMkNNRTh0dU9NSE1FdFlwcVhzZ1hBeThPZXJ4ekpCaDRQek5yMnU3SGFNRXZXNFp0anR1U1RZTDVMc3lvRVZQdmNRNXdQbkVKd1RwQ2xFOVd5SHZacGFKY1lLcE1XRm5PL2dlS01jQjEyTFRodVBBblNqdkJKNEpzczRhTmhsdVNWWnJyQmQvUCtBQzRpT1d6U2lmUjNoR1ZLTWVTMTNqQkZORHdxNE9SRFVKOG5Gc2RtUmN1RTR3dDRFUzk0ekkyU1l1YSt1Nnh6b25CYldGS1U2T2VqeGxzQjcwU2hVcEJEMU9MTlBoWnBoYUlSNWdPb0J6c0JVbDQ0QUMzMUZKcnNPdHhHYUVFMHdOQ0xzeXFPOERjaEp3Vk5UaktZTXNxdGVMS1RoL3l3eHhncWtGSWtqUkxNZFdkb25MTlZYZ09oTCtrMUkwVVk4bE5zVGx5NjFid3E0TU9qWW13UHVBZzZJZVR4azhpdXBQS1JyU2E1eURjcVk0d1ZTTENKSkl2QlI0UjlSREtaTmIxUlFlUmQzc1VnNFRXc2xHdWpwQTFMTWJRVEV0enBFMUlXRlhCajlZUURFY2ZCZnh5Y2NIVytENy80bWZWQmV5WHg0VG01V3QvNzlkUk40QjVNTHV6RXBVbnhDOGZGRU1yVDF1Q2dkQWhHSzRiWCtRdU0wdXEwQlhSajJJT0RMaGtreFFST25IWnR1ZENQSnJ4THRKaFk5NmVJZUYzWmxXUGVJb2hydmo0c2l1UFdGbnB2UmdrYmNTbjRTd2NYNkRlRnR3cTdHeW1UU1dMRnpSQnA2UGpiaVY5d0JuQWZzQy9kZzZWTGNCdDZIYW01cS9hQ2pjdG9uV0pxaEx0ZVA2MkJKSlN4RDVCZkNxcU1kVEJwdFJQUjZSZTkxeXJIeW1EYjRNdXpLMmFZOHZoNEI4R25ncnRvbU5ZbnQ0ckFSK0RmeGUxS3pEODhKaTBkRGF3S0hodWxjcithVUxBTjRPM0lEdFNSSVg3Z0Q5UDhDZzgreVh6N1JXc2lDYlEvdzhxS3hDT1FVNEU5c1dUYkNOYTQ0QnZnajhSc1g3c1NydjkwVDJEVHN6WHRqWkVmWDV6UXJoa3Ztb01UN3dOdUlsRm9CN0VHL1FlZllybzZ6dy9yQXJnNklpSWtlQmZBN2JJbTUzMFJXeC9RWi9DZHlFNmtvZ0xCckR2TldOVWZRdDdPNEFkRG5JYjRtWGRXd0UrRWZnVnJjY3E0eXk4Mkh5SzVhaWZnSlVPeEE1QzF1MWNiTG1QcHVCMjRFZm9ubzc0bTlWVTZRbHhoR3hvNTN0R004RDY5Vy9rbmo1c3RZQmJ3U2Vkb0twakxLLzdQVHFUYVZ5TzlLSGNpNXdPclo3N1VRc3dUN1Jya2ZrWmpDbmliRFg4TjQrNGNGTG96NzNpakFpb0pyQ3BoM0hTU3dBdmFLYXcrVzhWRXpGWDNpUTdVTXdvK21odm11eFh1NDdwL3B6NERYQTF4SDVsYmVrN1F3Uy9sNTZ6RUxySkkwVElpQ3lIL0N5cUlkU0FYOVZUOGJFNmFWaXFucENwclA5NUZzellCdDh2aHY0UHJhbjRXVDR3S0hBWlNDMzVQdUMwd1h0TUlmdXpVaG5KdXByTVMxNndJNm8vYU9BdmFNZVQ1bmtnUWRRWEpKWUZWUzlwQWl5T2J0RVUzMFMxWThDbndPMlRmTTJIL2hiNE11STNESnFDdThUa2NWaGR3Zmhpdm9WVHI0bGpaaWlZR2ZMbXJXeW5pTUdRQi9DbWNlcW9tWnI4RkkreFhaUnZSZzRBOXVaYWpvUzJGVGVieUQ4Ti9BMlBBMUtUc0c2Uk1Wcko1N0xzYWRRY2s0djFWSFRUV3VRemFGQ0FRclhnSjRDckpuaFcxUEFHNEFmSU42M0VUa2kzOW5oNWV0dGYyUDNMd2NSbjNaNk8vTW9tTUdvQnhGM2FtN2xDWHB5U0JIRlMvNFdlQS93eHpMZVBoKzdGL3E1ZXZ5bkNwbndrQTVHTzl1anZrN2tPeGVQLzNvWThXalV1anZya1VSUjNCUlRGYk5pRmsydjNvUVd4Z0R1Ui9WazROWXlEN0UzdGdEZVQxQ09NMElpNm1XYVNoSXBHby80bEh6ZEdZUHQ4VUxhRlJXdmlsbnpJN1QwNXFDUUIvSFdvN3dmdUJIS2lvLzFnVmNEUDBTOHp3TjdqWFR2eVdqbmttaXVsQWpxZXd1SlQvWDluY2t6c3oybFl4cG0xZkVXck5sS2VraEI5R2xVVHdlK0N4VEtQTXhpNEN4RWJoTE1HNDM0WG9TenpUTGdSVkY5ZUJVTUFzNldYQU5tM1ZNdGovWlJpb29kUVBVczRKdE03YXVaOEREQXEwQ3VSN3hQQW92eVhSME16WDArenY3WTZJVzQ4UnpvWnJkN3FaNDVDKzBJc2prUXRncDZMbkFGTUZyQllUTEFCWWg4VDBXN05abXdoYjlubWRHWDd0RElnVmlMWHR6WWhETGt5c0JXejV6R1FnVTlPVlFaUlBVendHWFl0WFc1SklDM2c5eVVHTk1URlB6WlhxSnB3bWMwdFJEZ2dMbThYalZrbTBEb0tzOVh6NXdIRDVabW1pSFF6d0dYVXBsb3dKWTB1aHFSc3hEbWg5MnpLUm9obmQrU0pwNytGNEN0QmdyR05XdW9ta2lpYlV0N21oSFFpN0hKWjVXS1pqRndQc2lYVWRrcjdPNWd0THYyUGh1RFlQRG1ZemY5Y1dSelMwK2Y4OEhVZ01qQzA2MW9aQVRWaTREL1MrV2lTUUduSUZ3RGVvakJzejFhYW9oMThMTUg4ZHp3QXd5T0hMb1hucXRCVmpXUjVuTUVQWDBnTWdKNkVmQWxLak1FZ0xXaUhRUHlBOURYanhZM013djdtcVhFMDhNUE1DSVl2S0pia2xWTDVBbFFOdEpaaGxFdUJMNUsrWDZhbmVrRytYNHEyWGFDb0ZMVGZZMnlCR2lOOW1wVlRJaENZcTN6OGxkTDVJSUJtNHlHNkxDb1hnQmNUWGtSQWJ2ell1QWJLdDVKR0x5d1ZnR2N3bUxpMjA5bkpPb0JOQXAxSVJnb21aeUZiYUNmQXE2anVzU05EdURMZUhLS2gvRnI1S3RaVFB4eVlNYXBadFoyN0VUZENBWjJHQUkybzNvMjhMTXFEN2NVK0tJUjd6U2pKRWFxRjgyaXFLK1BJM3JxU2pBQUVob1F5WUdleWRSMUFtYkNJdUJpOGVUREdFbFVVaWV0ZVBBZXFBakF2S2l2VFJXNDNYNk5xRHZCcE5lUGIwemxNZURqd09vcUQ3a0hjS0g0ZkVURUpNT3U4a3pPQlM4SjRnTzBSSDF0SE5GVGQ0SUJhem1UWWhFOFdRbjZjYW9QVFY4QVhLRGluU3FxWlVVN3EzaDQ2UmFJdDJDU1VRK2dVYWhMd1FDa1Z3K2d4bkQzdHR4dmdYT1p2ckRHZEN3QUxsVFBmNWRuQ2pKejBRaXBnU2NndmhZeWlHZkFhRjFTdDRJQmFPbko4Wm9GR1VUTjljRGxWRy90V1FKY2F2ekU4ZUNSbjZHZkprek5FK0pySVlPU1lIU3ZPRy9ENm9PNkZneEFPcHREa1FLcVg4Sld5cStXWlNDWEkrYVZpa3lmSGlDQTc4WGlXazFCU2tVb0xvcGIzZlQ2SXhZM2dTM2hKTnVBVHdOMzFlQ1F5MEcrZ25LZ2lqRGFPWFVpbW1nUmJKSDF1SklHeG10Q082b2dObGV3RkduN0JIQTI4RmdORHZseWhNdUFEdU5Oc2RwU0dEMzRLQ1hlenIrVWVoN3FyTXRWRXh2QnBMTTV3SUFtLzRTdEtMTzlCb2Y5QitDL1VHMlozQWlnSkI3cmhmTFRxdXVKbFB6YlYxQVgzbDgxc1JFTVFORFRENHlCMFJ1QXE2aSs3cWtBcHlCeUtwTll6anhWcEZBRUNLTSsveXBJeTFXbmlmTmZWaytzQkFPbFFFMVBSa0V2Qlg1VGkwTUNuOEpQdmdueDJOMnhtWlE4WXZOSWhxTSs5eXBJSVo1VFN3MkluV0FzQnBBYzZIbllibWZWMGdGY2pKcmxpS0Q3UHY4ZmtoMmtOSkVOUlgzV1ZkQ3FTRXkvNi9vaWxoY3g2T2tITmVBbjdxZTZ1Z0E3Y3pnaTU2TXN5QytZY0Q5VHJlTTBTbG84RVUvRVRUTFZFa3ZCQUFUWmZpZ1VRZmtCOE44MU91eUppSndtVXBEd2hiVUJ0aEJmMDNJQUpGem5zZXFKcldCZ1BQR01JZUFpWUcwTkRwa0VQcUVrajU0Z0V1QTU0bXRhRGxSSXFwdGdxaWJXZ2dId0ZOUkdORjlDYlRJTDk4U2FtanQyZXg1dkpiNldzZ0NWSkU0eFZSTjd3YVN5ZllncXFONEUvTHhHaDMwdEloLzJpc2JiS1hSbUsvRzFsQVVJQ1dkVnJwNDRSK0R1SVAzc0NQbTlXb2V4TmM2T0F2YXQ4cEFlOENIaisvK0xiWnNPZHRNL1NEeHJrd1dnTXc3eDM3cDhSeS9QWFNRbVJoU0JoUTl2amZwOElxTWhCQ09iQmdtWHRaSjQxNTRyQ3pkcy9EcHdNZFZIRjdjRC80bnFLbUFUTUlUSUFMYStjdHhJZ2FTbitvUDhpcVZvSWduR0xFWGtkZGdIejZMZC9xd1B1Q3ZzenR3RHNuMTBkSkE5MXNWMTBxMk1oaEFNV0FOQWVBT0FmZy9rV0d3THdHcDVBeUtuOXZmMGZhR3RzMzFZUko2Titqd3JKTWtVQ1hEaGluWTA1VVBSSEluSXhjQnJtVHlIWmhqazU2RG5wZElMSGcxWHpDZFkzVHlkTkdLL2g5a0ZBeUFEMkVMbnRmQ2IrTURwN2QwZFIrTDdCZUNwcUUreFFxWVVETDRIUlQwSTVOdkFNVXlkY05ZS3ZCUGtheGphOFp0clk5UlFnZ2w2KzBBVjFQd1AxVmVkR1djZjRKTmlpZ0UyV2pxT1RDcVlzRE9EbHk4SThBRnMvODZaOG1hRWZ3SmhwTXc2Q1hHbW9RUUQ0OTBCdkR4d0pYYk5YUXZlZ25nbllOTUs0dWlMbVh5RzhjQ2svUXp3cGpLUDZRUEhveVpvcGdpQ2hoTU1ZR2NaWSs2amRoRUFBZkFmMk9WSUxkSUs1aHFmcWN0RUxjVTJxeXFYRndIem15bHJvQ0VGRTJSejRIbEY0QnBxTjhzY0JueVdlTlpYRmlZVmpBQXlTbVg1UG5uaU9lTldURU1LQmlqTk12cFh5bTk1UGhrK3NKeDRWbUR4Z1BrVC9vOEN5a1pnZlFYSDdSRmp0alhQZ3F5QkJaUE81c0NUQXJad1JoeVhVYlZtWXNHZ0lHd0hycVc4MEo4QjRJZnEreWJWUkcxbkdsWXc5cW1ub1BvbjRDOVJqNmNPbUtkQThlQmRDMzdZQWlNS3FqY0MzMkptUzdNaDRCSTE1azVWUlp3ZnBqRlFCY1RiQnZ3aTZySFVBZk1RbjhJRThRK2xJdkRES09jQm53QWV3RVpuRCszMjJnTGNEYnhmMEs5Nm5oUmJzczBqRm1pQ0pPK3d1d1BnVUd3NmM0MmF4Y1NTSzFtKzRNT3MyMGJRTy9GTmJnTk5WUlRKSUxLZktqdkNhY1QrTXdUNmFIcTd0MlcwVlVuMzFzcWVFaDhhSmpSbUd0WUREd0p2am5vZ0VkTEsydWNFVHlZMUF0dktQQ2pXc3RoOGFwZ0JEYjBrQSt5NlRHUVkrR1BVUTRtWWVTcE44SDNQTWcxL0FZTnNyclNaNFg0cWJ6cmJDTFNLRTB6Vk5NY0Z0TDZHaDdGaCtzMUtJQ0tKaHQrMHpqTE5zWWV4eS9ZY3lFYmltUUJXQ3dLVUpERnZFRHZVM1VhZ1BtTVlINUU5UUJhakxFWUlBRVVaQWQyQ3paQWRSQ2hTRUlJMXRkbVNOWVZnU3R2Y0laWG1ubUYwQnQ5M2VIQWJqSTFCa0Y2S3lJSFlSRG9EUEl2cVE2UlNnMlo0TzYxcnQ4N29RMHRXeWlUd044QisyTkNpYmNCam9tYURJc1ZnR3ROMDJOMEcrQWdhS0xKaVREZ2F2SmNCTHdFNkVPWmp6MDBSeGtDR1lFZjB3cDlJY0dmWWxWbUhKM25HQ2dScktyOE5tbUtHTHJVZVR5TGNEQndiOVhnaVlqWG9HNEErNjNmWmxhM0xGeEtrMHdDTEVIa25jREp3TVBZR1YyeDY5a3JnMjZqK0FoaVo2a1lQdXpKNGFzUjQvdUhBaDdBV3lndzJ4R2dNZUFhNEJlV2JZNlRXcGlSUGVvSnhsY3IzQm9pOEVUZ0ZlQTNReHN6dlhRVnl3QjNBOTBYMU5pQ2ZydEIvMUNTQ3lRQXNRT1JYd0t1akhrOUVQSXJOcEh3NjZIbmg4cVEwRXl6REp0LzlFNVBQUnNQQWxhSjZ2c0xnUktJSnV6T0lxcWg0SjJMckxFeFZZNkVYT0IzaERvd3lmcnl3TTBQUW15UHM3amdFT0F0NEc3YUxYRFZzQTM2RVRXRi9YRENrZS9yTE9zQ2NDMFlQYWlPZjhzRStLVmFBM29icTQ0STNwakpHMExPNTVwOXBid2JkSCtSL3NNdUNadVJKME5lQ1BMNjdZT3dNclBNUStScnczaGtjcXdCY2hERVhJTHN1cVVZNk03YU1zM0lNd3JYTWJNL1lBN3dEV0JQMDlCSGFlbkFKa0JPQkM3QkJyN1hrWHVBTWhIdDNGdWxNaU5CS3BzUEFSMEZ1Ujd4clZEZ0pFdnZrdTlxOGZBMHorSjQvbHJ3R203L1JyQ1FtS29TUjc4cVVJdnpsTGRpYmRvYkg0b09Jdkp6ZGtzZEVBTlZGQ0djemN3TkxOL0F4MElSOXVFa0FjaWEyUTBPdHhRTHdDdUE3cUw0Q0VjcnByRDNuZ3BGMUExQXNnSmU0SCtVRDJQaWtkd0xmQS9tOWl2ODFGZS80c0R1VHlYZTNTempEUHBTVG9iWUc5OTdBYVRTSmtXTVNFc0FMQktNb3FFbGp4VkpPcCtnTUlpZmd5L2dlMFNJQ3dpdUF2eXR6ZlA4QWNnQnFFdGltV1ovQnRveC9mcWcybW5vVE5ncGhLOVdWN3UwRXVSeDB2M0xxdEVkeUF3V3JOeEYyWmhEZis0T3F2Zy83SkRrTVc4TG9RT0M5SUE4cGNnZnd1N0Fyc3hLMEQ1RmlPc3dqNjUrYjlqUEdEbXluR0hpZ3VnemtJdUNWVVp4ckhaRUFUYjlnRlc1dmxuYWdxNEpqSGtIUnpDdVY2eVcvb3IyVWZDbEhVSDZpM1RMZzdZaTNFRGdEbStVSzF0aHdOL0Jib0JkbEFORTh5SHhnZit5ZTlNM0FBWlEvQVJ3RmNqYXEveDUyWlVabnNqU0xkTk1mZG1WS2N6aUhBOThFWGpiUm53R1BZMFAwN3dUOUM4cVRBb1A1NHRpWUx4N3pWbThpN0o1SG9iQS9YbUtqZUNwcFJEcXcrNlRUZ0ZkVmNERWJqVUhnT09DZW5mY3dwZjNkQ3BEYktEODRkUlhvTVVCLzBKT3ozNmZuZzVvdkFSK3ZZSXdoMWdUdFkwM1pkd0NYaXVxZDZqSHM1NFhrdXVmSFB0TFpBWW9uUHZ0aXYrY1BBZ3ZML016bmdIOEJmaTNGSXVuVkExUCtjYVJMbENDYksyM3daQ1h3UHVBYnZOQ0tGUUF2TGIxT0F0bU1zRUZoUXlxUmVocllGSFozREFHcFJDSzNDTHcyaEwyd1Q1d1hFYzhNeWRsZ3dpV1pSWHdxZTZENDdQelFGUVgxQUZQcGczaDhWaGtEdm9QeVdZUStMVExoeHJ6RlJrdWJzRHZ6R01wNWlEeUV0Y290S2VNekZ3S25pZXFkZU42MFZRa2pYOU1IUFRueW5lMFl6K3NSMVZNUStUcVRWekR4c0RiNE51eXM1Smc1UHZicEhRZXVGOVZQS215YnlHZTBPM1oyYXkrSUtYeGZ2V1FHK0J6bDNkdEhLM0lrd3AzVC9XRmRMRlBTdmYzNHBnQWk2MUY5UDdhb2VCUFZJcGtUUE9JaG1GN2c4eXF5clJ4emI1RHRSNzJrQWE3R21vM0xZUkhDVzlUem1jN0lWQmVDQVVqMWJnS0tJUElFZGkxNkhmRnRZRlN2MVB2eTFBRGZRbGhmMmVOU3dkWWF1TEdDTng4dHhjS1M2VDYzYmdRREVQUU1FUFQwZ2VwR1ZNOEF2a1p6aCtUWEVxSDZBdTJ6elFiZ1YyaXBXVmFaN0xSOHV3Y28xd08rSEpIbFRGT1VzSzRFcytQRXN6a1EyWXJxdWRqMXFLdjZVaHZxUFJScUZhb2JxbHFOMjE1Qkd5ay9sV01SY01oMGYxU1hnZ0hzVElNTW8vb0ZiQ3hSTTBjYTE0cDZGOHc2OWZ4UnFhWVhwd2lJakZKWkdzUEIrRDVoNStTZS83b1ZET3lZbHNkUTh5MXN4T3VHcU1jVWMrcmRrRElnYWtobnl3dUluT1E4S3puWC9hVXdsaFJ2OHVkS1hRc0d4dTN2WWtaNittNUM5ZCt3VmhSSCtTaVZsWU9kUzZvdk8xdXBWQ3daUlZxbW11RHFYakJnUmRQUzFRYmkzd2E4QjZhM2x6dGVnR0pySWRjelVTOFpGeVBTT3RYR1B4YUNBUWl5QTJBS0FIOEYvaFZyT25SbTU1bFR4RmtjcDZPVjU2TU5KaVEyZ2dFSWV2dEpEd0hvRTZoK0VMaWMrSFkybm12R2lIaysveHlRb3BFRUF5Q1A5bzNiMjdlZ09sN2FkR1BVNDRvQklUWUEwekU1UHRNNGQyTW5tSEZLeG9BOFJhN0NaZ24yUkQybU9zY0pabm84cHRGRWJBVUQxdXlzR0JWUGZvUHF2d0MvcE5RYTF2RUNCb0hoK3Jjc1I4NlVob2RZQ3dhZ1pYVS9ablFNUkZhWHpNNVhZQ3ZOTzNZbGgrcWcwMHQxeEY0d0FDMXJOaEgwOUNGQ3Y2RG5ZRFAybm94NlhIWEdNeWhoOUpiYmVOTVFnaGtuM1pORERYa05DOTh0TGRIdXhLMUJ4dG1ndm04OGRaYjRhbWdvd1FBRXZUa1NnYWdpZnlpSjVxdTRKWm9DNjBRTnFkNkJxZy9XekRTY1lBQ1NQUU8wWlB0QWVCYlZzN0Z4YUE5SFBhNEkyUWFzalhvUWpVQkRDbWFjb0NjSFFuNWtaTmwxMkdxT3Q5QmtiYkpMYklRcXcrWWRRSU1MQnF4b1dwTFBBUG9BcWlkajYxMDFWMk5HV0lkTGo2Z0pEUzhZZ0dCTmJqdzZZRE5xTHNHVzFibUw1dkhaM0tkNCthcnlUQnhBa3dobW5DQ2JnNklZaE50Ui9XZmdVbXpselVabUdMaFgwRnJrbVRROVRTVVlLTTAycS9vQU5vcWFUNE8rRy9nVGpUdmJQSTY2c0tGYTBYU0NHU2ZJNXNCUXdKTmZnWjRBWEVoamRnNitHek8yRVczVTU4SGMwclNDQVVpdjdpZDRzQStVWnpIbWZPQWZnVi9RT0hraklYQXJmbElEdHh5ckNVMHRtSEdDYkE0OHo2RGNnK3E3Z1kvUkdINkxIbFR2d1czMmE0WVRUSW1ncDQ4ZzI0ZUhia3VQRFYwRitsYmdLOFRYSEt2QWovQ2szOFdQMVE0bm1OMUlaZnVSdGR0QldTL0duQWw2SW5hWkZrWTl0akpaaGVwTnRzTldJMjdOb3NFSlpoS0NiQTcxS0FEL0Mzb1N0cDNDU3VKaFRjc0RWK0Q1VCtLQ0xXdUtFOHdVQkQzOUJEMDVSQmswSXRlaXZCVTREM2lJK280enVRblZHekZGZ3Q2NHJpanJFeWVZR1pETzVtaGR0UkhRcDhYb0pjRHh3T2V4alo3cVRUajNvdnBaUkxhWFVmMiswbXBldTd4SEZGUU1GUjRMYWp0N1YzbytVNzdQQ2FZTWdteU9kRzlPTVR3aVJmME1xc2NCWHdDZW9ENkU4eUR3RVVRZTBSbGJ4aFRRSVNyYm93M3UvRDdQN0xqZnRsWndMS1VtVVJjS2FKN0s2bkZQVy9mQUNhWUNndDQrMHF0elJtR3RxbjRLT0JaYk5QMGhvdHZqM0FXY29uQ2ZxTkl5MDluRjN1UDl3Q01WZk9acXIxallQaDZqbGx3OVFPbjNMT1g3c3JhaXVxYjZ5NkJReUcrbnNncXBqNkNhbThvTTd3UlRCUzNaSEMzWm5CSFZ0YUxtczZESEF1ZGdpdzNPbGZOekJQZ3V5cnRCVm9vV1NaZlJpQWdBOGJZRE4xT2UySWVBbTQyZk5LbHcyKzcvOTBmS3YySC9BR1NyOVJtbHMvMlFEQlJyMlN4bmxsSGdaaFZ2Y0txT0YwNHdOU0NkelpITzlxc1dlY3praTE5RU9RNDRHZmdKTnR4bU5wWnJCcnNFK3hDcUgwSFlFUFJzdEJWQ3l5REk1a290SXZnUmRwYWFLVDlEOWZlZ3lNUFBWNkNWWWdFODcxbHNiNStaRmxuc0I2NUFaS2hhajVIQWVNdUwyNEdmbHZIV3UxQzlRZFNRbnFKTm9QTm96UUpoZHh1S2o2aW1FVGtJMnhiN1RjQ2gyQmJmMVR5b3hyQlA3eCtCWHA5ZXRNK1Q0WllOdEZRUitwTHY2a0R0blhBRXR1WGRZZE84NVhlb2ZnRGhjUmt6cE5mdUt0S3d1d09VTk1KNXdKbE1YVTF5QzNDT21MR3JWWHhUaXhDZXNBMVkxZ0hvdmlCWEFYOC96VnNlQkU1VnVNOVRuWEtHZG9LWlpZYTYybWhOTFNBL090U0t5QUhZWnJZdkI3cUJGMk1iM0xZd3VZaUsyS1hGczhDZnNSMjY3cEJpY1NPZVI3cTNOcmx3K2M0TXh2TVExVTZFVDJKYmxDL2wrWHZFbE1ad282aGVydUk5NlpzQ3lVbHFCSVRkR1ZCYUVEa0orQWh3TUx0V2xSd0I3Z011RTlWZkFvV3lsNUpUTU5iWlR0SHpRUFZGaVB3SDhNL0FzcDJ1czJLak9HNEYvUUxpOTFJc0VQUk9MVmdubURsbXBETURHQkh4NWlHU0FmWUI5c04rbVl1d2pWdUxXT2ZqVnVBcHJQbDZBMGI3OGFTUWZtUXpNbHo3emhYYURYbnRRTkMwUWpjaXI4S0syZ0RyVWIxSHJHRmpSamYzYUdjN25xb1VQRy9QMHJFT0JlWmoyK245QmVYUHhkYVdMZjdRMExRM2FxWGt1eklBQ1lVREVYazE4QktzYURZQTk2QmtnWHhhK2hDWEJPRndPQndPaDhQaGNEZ2NEb2ZENFhBNEhBNkh3K0Z3T0J3T2g4UGhjRGdjRG9mRDRYQTRIQTZIdytGd09Cd09oOFBoY0RnY0RvZkQ0WEE0SEE2SHcrRndPQndPaDhQaGNEZ2NEb2ZENFhBNEhBNkh3K0Z3T0J3T2g4UGhjRFFZL3g4UUxFdHdseThPTkFBQUFDVjBSVmgwWkdGMFpUcGpjbVZoZEdVQU1qQXlNQzB3TlMweU5WUXdNem94TURvMU5DMHdORG93TUFXalM2b0FBQUFsZEVWWWRHUmhkR1U2Ylc5a2FXWjVBREl3TWpBdE1EVXRNalZVTURNNk1UQTZOVFF0TURRNk1EQjAvdk1XQUFBQUFFbEZUa1N1UW1DQyIsInN1cHBvcnRlZEV4dGVuc2lvbnMiOlt7ImlkIjoiaG1hYy1zZWNyZXQiLCJmYWlsX2lmX3Vua25vd24iOmZhbHNlfV0sImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzFfUFJFIl0sImV4dGVuc2lvbnMiOlsiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiOTAxMjU5M2Y0M2U0NDQ2MWE5N2FkOTI3NzdiNTVkNzQiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjp0cnVlLCJ1cCI6dHJ1ZSwidXYiOnRydWUsImJpb0Vucm9sbCI6dHJ1ZSwidXNlclZlcmlmaWNhdGlvbk1nbXRQcmV2aWV3Ijp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlfSwibWF4TXNnU2l6ZSI6MTIwMCwidHJhbnNwb3J0cyI6WyJ1c2IiLCJuZmMiLCJibGUiXX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIwLTEyLTA4IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiVmluQ1NTIEZJRE8yIEZpbmdlcnByaW50IiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyMDEyMDgwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMiIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4zIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIwLTEyLTA4IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDgtMTIifSx7ImFhaWQiOiI0ZTRlIzQwMGEiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhaWQiOiI0ZTRlIzQwMGEiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiVG91Y2ggSUQgb3IgRmFjZSBJRCJ9LCJkZXNjcmlwdGlvbiI6IlRvdWNoIElEIG9yIEZhY2UgSUQiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MjU2LCJwcm90b2NvbEZhbWlseSI6InVhZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9LHsibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfc3Vycm9nYXRlIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZhY2VwcmludF9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwiLCJiYURlc2MiOnsic2VsZkF0dGVzdGVkRlJSIjowLjAsInNlbGZBdHRlc3RlZEZBUiI6MC4wLCJpQVBBUlRocmVzaG9sZCI6MC4wLCJtYXhUZW1wbGF0ZXMiOjAsIm1heFJldHJpZXMiOjUsImJsb2NrU2xvd2Rvd24iOjB9fV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiYXR0YWNobWVudEhpbnQiOlsiaW50ZXJuYWwiXSwidGNEaXNwbGF5IjpbImFueSJdLCJ0Y0Rpc3BsYXlDb250ZW50VHlwZSI6InRleHQvcGxhaW4iLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOltdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFFZ0FBQUJJQ0FZQUFBQlY3Yk5IQUFBQUFYTlNSMElBcnM0YzZRQUFBQnhwUkU5VUFBQUFBZ0FBQUFBQUFBQWtBQUFBS0FBQUFDUUFBQUFrQUFBRkpidUoyRWtBQUFUeFNVUkJWSGdCN0pZeGJpTkhFRVVGSjE0WUM1akpBZ3NuSHNPT0hQRUFDMmh5QitJTk5LRXpNblNtdWNCaWVRUHlCbUxnbkx5QmVBUFNKMWplZ0g2ZjZocVV5OVBhWGcwSk8rQUFYOTFkVlYzOS81L21RRGZINC9IbWlyd0hWM08rY0VHdUJsME55djk4U2o0dDF4dDB2VUhYRzNUUlg4R2c1amNEbjU5L3JMNERIOEFNYkJ4V3pGdndHM2cvOEpoaEdrcytWTG1hMXhKSDlBVEloR01oWkY3ejJ2TnkvRXZpdzl6OVNzYUlyTUcrMEpRKzg3UjM4cFhIRHROWTRtS3VwcFFvb2taZ0hveFpzLzRFcHVEMkJTaXZPdFdiYWJwOW85THpjL3hMNHNQY0xXQ0lrQXBzd1djZ29iZDkyNGlycm5ZWXh6cHlNdm9PTE1CZjRGODFjWS9XSlVia2FvWnQ3bVBqWWhJQS9nUjNMbnpEV21iTXdBcnNnZDJNdmxINURXaEJad2h6bWZVNytOWDM3cHZueEpmRUwyWVF4TitERDBhWXVRVEpsQzNvTTZJMGRtRC9IRlN1OXp1Yjk0MGxSdVJxTG1JUTVMODFvaElDOVBZbHJOU0UwanJkckZwbk1YNWpaOFl4Sjc0a2ZoR0RqQ0NrWnlCbnpJN2NBa3pCTGFoc240MHBybStPdmwxUElHZmNpdHdQdGkrT0pVYmthaTVpRUdUSFlOc2o2RE14aWUyK0pWSE1TMnYyNlRaT2djeU5adWxGOVBiTmlTK0puOTBnU09vL1k1SDFBbVRNQXhoNUE3UUdOWmlCRnN6QkJxelNXckVKcVB3K3pZbmRneDA0QnZ3VWEwdU15TldjMVNDSXlweEkrSkZZWmFTWmowQURaRVNzZldtOXAzNEphdXVsa2JWdWxGNkE3ZDM0dk9ZNThTWHhZWnNkRXdpK2RTUkZWcVFiVnlJeExUZ0FFL1BhY2U5N002L0FrK3RiKzNOTGpNalZuTk9ncFNNb2M3cnZnZVpnNi9MUm1EVTU0Y0hoTWNYVTY1aUJqT3JNWVA0cDFXMytWd1pCNnZ0RVRFSWt5SnZUc0k2M1JqVUwwUHRmdFJlbnVmcUJLWGdDZldiTmlaKytiNHc2VHpXMTljbmRqcEw0V1c0UVpHYUpWSjg1VVpDTStjZkgyb1JvbERDRGo5dWNuTXhhZzloM1M4eWJ0TFE5SlVia2FzNWxrTWlKY0dPa05FOHhFeUx6YXN0clpEMUtkU3ZHUGJCYVB4NklLNjkrbmJITWE3QURzWGFjZW5mMU9mRWw4Y0VHUVhDY1NENmFlTllpNTRuSG0xV1JYNFlhWDUrYnl5enRxNUlKSSthTDBFYzFadEl2cWlzeElsY3piRE9IUTJZRzlHMnc2ejFtN2dWR2MxUXZFYjdtTmZOVzR2WFE2eUgwMjdQdWJsdE9mRW44SEFiTmpReWp6UEhpb3psNis5RU0xU3pBSFRpOStXZlpKK0ZWaWl1dnVyaDNROHhlVEJQeUcrdFRZa1N1WnJCQlJrSkV3VGFRN0FRVGx4Z3ZVSUx2UWZlbW1jdmdHV2dUYXV1dmtaanFvMUU2MDB4YU1QZG50TnFYRTE4U0g3WlpwNmNIWXRHY3h1V1dnZmlqaVZJTjh3blloeG92VlB1clZEdGlydjArNzAxYWg5emJFaU55TldjeENFTFJnRlppOUpDYkJjS0w1OHp6MzU2OVhuaWN6MjB2KzZhaDcwWTVZakxRMzdJbUo3NGtQc2dnaUx3QksrQ0ZkQVlRYjBMdWliWDlIQ1JrRy9McW81cDFnaGRxWjJpUDlZajlUd2FTOS9GTmlSRzVtcUVHZllTTUVkZm96Um1IM0pmTVVYNXNOOFJHWXZkZ0YzcDVreFloZCtwQmJKM2kvNmxCRzBjdW1uTndPZDJFVGp4ekNUdzYrTDBWOFNWUTd6blFlZ1NpRVZ0bm9zeTFmcWM0NjdIRmNyZWpKRDcwQmttRWlEMDRzaUoyTUhLTTBSeUpOekVhdlRsdHlGbGRvLzZxRGZsNWluZG1wTHpWcjdVdU1TSlhNOVNnUHlCUWlhUWU1ZzN3NWtoZ2Mwbys1NWVzVGJSR2IwN00rYnF1ai9hRUhyWDZFL1A3OXlsV3F6WW52aVEreUNDUnNBY2k4MEJjTjJmaThsNUFOS2NOZS9XVGVRQzdFQitySDdHK24xUVZhazlucTdiRWlGek4zd0FBQVAvL1g5TGxQd0FBQlBOSlJFRlU3VnE3amlOVkZCd2tKQkNzdEIwUUVleTJJR1NEenBhTURzbldNY2wyU0xDU0hSQnNOdjRBeERnaVFuTC93WFJBUGkzeEFUYjhnUDBIMjM4d1ZMVlBtZG9yejROeDBHM0pWNm81OTlZNTUvcFV6WjFaYVRVWHQ3ZTNGMC9GQmRhM0wvTUNXQU8zaGcva21lZkNmbVk1MXEyQUxITFZQYmtzYW5YM2xuMUFrZlJVY1ZkdGZCUGM3S242MlBka2M5aU1ZZDdaUUJKQjhUbUg0OExlaDA3Tm9kRE83dGdidCt2ZWZ3Tm91TzVmSExoM0cxeHFYSTYrZkVpRFdodWNBcTZBL21VY0VQR1FPVFNCZ2lZQTd5WG1RQlZSQmpIbUFlY204WmswV2Z5TTNKQUdOVEhNQnJIa01GellaMEFiT1EzTHdYdnpFUG1kN3BKOEdiMnF2eS9XVVZ2YkhVMXdNK05hY2tNYTlCN0RYSElJTFp4TElCWHY1bFFIOHBYMTh5WGRaNDV5ZVh5V3pvd1pVQ1Q5ejRZMDZETVR4b0diWkRnT3ZRVDBjbWlPQzZJWkU5M0JpRFB2bVFLWHdCV3dBYnhIKzBYVWU3Ni9LK2w1UFpoQkpxakdVT21yb1pBcGE3aXdaNDNFTWRLY1lwZTkveXZxU21BRmVQK1dYZUQ4WHBubVhEbVlRUmp1eTJSb0NhQ1lYanhpRHF5VHVvL01RVzRDVUZScjRHdXNnRXoyWWI4RTlCbjRON2czaURYaTFzSE5qQ3NHTXlpRzJkZ3dGUDZXUEJmMkhMU3pQSVhRdkY0MFlnbHNBUW04S3k2c1p4bjFxL2lNM1B1RDQ3MjZLeHZhSUE2L0Fkd1lEdGpha0JyMmlnSzRrR09mK01mRU5lcjdWN203NGIrdnlUMTlUWEM5aVVNYjlGeWpZcWk3ak9ITG1saGRuWWpxRFFhWHN3WXhBOTRBUzhETjY1alRQWXJnK0NwVlY1SVBic0g5b0FiRk1EOWhJSDZITmFUSEpmaTlLT3hUYy9hdmluZWxDL1VsUUlOMVozdWdwclY4eVR6TzVBcnV4MkJRYlFOS3lBMjRrZ055WWM5WHdhR1ZaNno2NUM1ZjRkeEVEZVBFY2dYT2J0SytqelhSbzN0bndmV1IrekVZVkdKSURYaU5mY25CdEhDZUFKM1Y3TTBCbHdHcGNicXJZWjczSVBJTzhWdmRIVG52bndkWE1uSU5iaENId1BDL0FEbjNXamlYZ0E5UGdYd0pGV3NRYWM0YWtQQkRzV1l0RitwdXJOWmZtSDlHRmJYUEdMbEdZZEJ1bEY1RUFSRUxZR3RpSkh3RnJtQXRZbW9PalpzQ2VVVDFNSmJSVTJFdmZrR09DMXhyZk5tVDltVTBCbUhJZjJ4UUNXSHN4V3RtbkduaTJtcVo3NDJ6bXBubEcvSTQ1OGExVnJzMXZoU3ZPQ2FEU2h1VXhtd0F2b3BNdzJJL0FUcEFCdTdOQWNkK3IyV3VyN04rOVhVSE9PWStGNjg0R29NNEVBYjhEYmdDQ2cwWVBNVzNnQVF5dWpsMTVGeTQxK2R4ejc3ZjdoWDNON2wwamNvZ0h3NkNDNEEvS3VzUUx5R01LeUJuUFNKclBOZS9JbkJ1VUlZem9ibzJldWZHdlNLWHJ0RVpoSUZmQVZzYlhLSVkrV3FtRW9GOWxkVE5tUVBuWm53SWJtSzFUWERyNEJZOEgxcWpNNGhEWXVoVStBYmNKZEMvanFpWmhUZ2FSeXdsRVB1NTVlcW9yNDFqYng3bmEvVWRpcU0wS0FUOURBSDhmZlRHQjhjNUF4cEF4cVRtRkVtdWpKN09lSm96Qi9panVqZmRQMGY3MFJxa0FSVXBKRVM1ME5RYzFtd0JtZGUvRHB3WHhqWFlzKzVQUnQxL1Z4eTlRUkR4QXZnZDZBQUpWNXhLR0hJVXZiYWFUWENGY2V6amkvcFJmUS9GMFJ0RUFSQ1VBemVBak9FK2x6anNhVUpuZWY0eUo1Y0JhK04veGY0TDlUMG1ub1JCRWdKeHI0SHZkV2JFZVFiSU9FWTNwNDBjdWVrM0wxNSs0cjJQMlorVVFTNElncjhDL2dnRFpOQUdaNzJjdjdDL0J0NEN6NzMzLyt4UDFpQ0poSGorR1AwQWZBZDhHdmhhK1dQallBWWQ4OEduMG52VS81V2Npc2hqNWp3YjlNQ2YvNXdOT2h2MDlEOFE0NC9tK1FXZFg5QnhMK2hmVXdUWXlSQ2FyWjhBQUFBQVNVVk9SSzVDWUlJPSJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAxOC0wNS0xOSJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMTgtMDUtMTkifSx7ImFhZ3VpZCI6ImQ3NzgxZTVkLWUzNTMtNDZhYS1hZmUyLTNjYTQ5ZjEzMzMyYSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiZDc3ODFlNWQtZTM1My00NmFhLWFmZTItM2NhNDlmMTMzMzJhIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ill1YmlLZXkgNSBTZXJpZXMgd2l0aCBORkMifSwiZGVzY3JpcHRpb24iOiJZdWJpS2V5IDUgU2VyaWVzIHdpdGggTkZDIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NiwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9LHsibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyIsInNlY3AzODRyMV9lY2RzYV9zaGEzODRfcmF3IiwiZWQyNTUxOV9lZGRzYV9zaGE1MTJfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlEUnpDQ0FqR2dBd0lCQWdJVWV4OW5UOXZ3Wk5YUzQ4M0xkaVlHZncyU2pTb3dDd1lKS29aSWh2Y05BUUVMTUM0eExEQXFCZ05WQkFNTUkxbDFZbWxqYnlCQmRIUmxjM1JoZEdsdmJpQkpiblJsY20xbFpHbGhkR1VnUWlBeE1DQVhEVEkxTURnd01UQXdNREF3TUZvWUR6azVPVGt4TWpNeE1qTTFPVFU1V2pBbk1TVXdJd1lEVlFRRERCeFpkV0pwWTI4Z1JrbEVUeUJCZEhSbGMzUmhkR2x2YmlCQ01pQXhNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXUxTWV2bnk5ZHlPOVpVQzM5U29NaExjUi9EWHJ0Ri9jaU0xMnRjaXkyRVhBWjZNa3JpdlZ0Q2ZFVk05WDZJU1RFbkJQNnVTWVlvdjZwcHY2TzZKaDJOSG1ZbTR3K0puUzRWbkNQVTdtSEFNZlZJMk1HVFRNVk9ldzB4VXNHN3NJU0lrSURVQm11azhZSzljNXppYzkrdkZRR0xJa3NkWE81aVZGSWdORzUzY0dYRDRaTFpvQVBpdTBQRW96eEFxWUlhSTRneEtoT0EzUzgvVzhtSVdzdTZvZnlqNEd2a0ZHNlo3a3lGMzEwN1A3bXdGSExySTNFTmFQV01PRmNUYUdhMGR3Ky92VlJ3alJjRVpCVnN1dVQvODdja1NzMGE1cGt0M3ZaQmxhWWVUOHB6U3JlVjdtb3djSU05MEwyaWFBVGxQMG54bWFFNm5PeVRib2pGVmwyd0lEQVFBQm8yWXdaREFkQmdOVkhRNEVGZ1FVU1hFaDNzYTNidER1cm00TU0vQzdTMWxSdXVZd0h3WURWUjBqQkJnd0ZvQVU2cmRDa0o0TWUyUjYyMVI4QTdwOFRwL1lvV0V3RWdZRFZSMFRBUUgvQkFnd0JnRUIvd0lCQURBT0JnTlZIUThCQWY4RUJBTUNBWVl3Q3dZSktvWklodmNOQVFFTEE0SUJBUUI1R2MzaGFmdHA3aEtzRVpzbytpL1o1blJ1cWRtekcyV0NsVW9SVXFiYVB5Z2xuSkRqS1Iva2ZnT2w2aWJiRi96dGhtM0ttWFE3SGNESVAyeE1kRzdVMkwyaW1iSlFIcVBmL2gySHFvamI0clpndWUrNlc0a3RTUjVlbFI5TDFyWXFFL1NHWU00aUVLb1ZRU3Y3UlQxcnhJZVdpS3N3L1Z4eGkvUU9uc3gzRjd4ODBDQ1lnQjRFM3lReDhWVFc0NDBoVEV3VEExZU1IT2l4MzJ0UHR5eUhJYThQVlZJZlZwSFFKQmFNVnZ2NTA4VUVqd2tiVTJybmpmem9TVE5TOUE1alVROG1CU3ZlOTVyakIwZG85OEVVK0R4ZEJxWDIrSDZpNXdsSUNGZ3poZHpjc25lOWhHS1Q2bHpUWDRjSWRKc3JZMit4bGVLMEZGUXk2bEdFVkxFZSIsIk1JSURTakNDQWpLZ0F3SUJBZ0lVVG5iYkdJUjJOSHZ6cUlLRkFlUXdHMVhCaXMwd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JCSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVFZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU9zWGozazA0QmFuNFRZZHRaS3FEL09QSnh5RHlhUG1DQlVGVWlhWklnVHRlWm5qM1gyNURoZ3BaWlhzQzREMHlkSWNybEE2d05VSW5PUkwvTDl6QmJURUlNQVZNR282ZzdVS0FtYjJNRjZBSGJuaFlKZDllaWt1cFZOV1NoSE5ZTmM0R0JkTzFZTjZBZlVxdkpoSGJlM1Y0U05NUG1CUkVLSlBWejdUaHdnbWdnVGU4V3MySzAvd3NxdjJ3U0U3cGJDQnNVWmhJWDUxYlpNM3BxRHdKUFRtUkZFdnQwLzZ0RzVlTzhGM2oxNE9YcWZFaG1qbjFWdnhLRFlRT0xaQXhDd3dnQzBQNENkZld2M3k4UFNSOEkzNTRoTzFZK0d6Tmp2SXFYMzhOS0x5d3VJWUhGZXJPeE5seEVNQnZGaFlCdVJ1WUFra2dVYVBxTjZVQmhzSUxyc0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ0NvUkhoaXlObmJuWFJXSUw2WkJYb0JYOVlUTUI4R0ExVWRJd1FZTUJhQUZDQW9VQ0VicEZwYjZGUExuWjNGNVB4c0wzb2ZNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUNRRmFmSkkxLzVXZzlDRUVpbUUxUlA1NFJnUXdUTlRPT1FzTEFDVGUrckl0bEZRekM5WkRoclY4Mjh5WDdqenkrQUFzcDNpeks3VDF0aDJkbDdtK3R1MHN3MlBhL29sYzAybnQ2UHlJdzM0OGdhSHpoSTErMEtFNDVxeHZGRGVMMmxNeGJQZkNZdnlFRWFZemppUUVMVTU5NTFwWEdXeUtNYS80Zkx0TytaS09YaE11VmVxNHJYRFBJNTRXNkpIT2lBYWlLZGl3KzVlM2Mya3QvakZJUXRNNnZNWGc5TE5GemRqRVROdDIwVlg5UWV2UnBGWmZ1Y01HOXdDYVFEb0ZsUHpwVE1KS2hQZXYvaW1KbVpZaEtmcjBsTGNlbXRxakl4TEFvcVpkT1lmSEJnNit2QWNkUEkvaWF1R3BVQXY3WCtVS05tRHdqWjJCYUg0c0x3aEIybSIsIk1JSURTRENDQWpDZ0F3SUJBZ0lVRHFFUncrNFJuR1NnZ3hnVWV3SkZFUERSWjNZd0RRWUpLb1pJaHZjTkFRRUxCUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURJN1huSCtadkR3TUNRVThNOFplVjVxc2N1Ymx2VllhYVJ0M1liYXhuOWdvZEx4NXN3SDBsWHJkZ2poNWg3RnBWZ0NnWVlYN0U0YmwxdmJ6VUxlbXJNV1Q4TjNXTUdVZThRQUpiQmVpb1Y3Vy9FK2hUWlAvMFNLSlZhM2V3S0JvNlVMZU1uZlFaRHJWT1JBazh3VExxMnY1TGxqNXZNajdKdE9vdEthOUo3bkhTOGtMbXpYWFNhajBTd0VQaDVPQVpVVE5WNHpzMWJ2b1RBUVFXckw0L0o5UXVLdDZXQ0ZFNW5VTmlSUWNFYlZGOG1scUsyYngyejZva1ZsdHlEVkxDeFlicFVURUx2WTF1c1IzRFRHUFVvSUNsT200Y3Jwd25EUkxWSHZqWWVQR0JCLy9wRXl6eEEvZ2NTY3hqd2FIMVpVdzliblNiSHl1cktxYlRhMUt2akFnTUJBQUdqWmpCa01CMEdBMVVkRGdRV0JCVHF0MEtRbmd4N1pIcmJWSHdEdW54T245aWhZVEFmQmdOVkhTTUVHREFXZ0JUUzd1OWFJbzA2YlZ3amx6M3loZFVtOFNWN2tqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQTRHQTFVZER3RUIvd1FFQXdJQmhqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFxUWFDV014VEdxVlZYN1NrN2trSm1VdWVUU1lLdVU2K0tCQlNnd0lSbmx3OUs3SGUxSXB4WjBoZHdwUE5pa0tqbWN5RmdGUHpoSW13SEpneHh1VDkwUHczdllPZGNKSk5rdERnMzVQWE9melNuMTVjRkF4MVJPMG1QVG1JYjhkWGlFV09wem9YdmR3WERNNDFaYUNEWU1UN3c0SVF0TXl2RTd4VUJacTJianRBbnEvTkRVQTdiZTRIOEgzaXBDKy8rTktsVXJjVWgrajQ4SzY3V0kwdTFtNkZlUXVlQkE3bjA2ajgyNXJxRHFzYUxzOVRiN0tBSEF3OFBtcldhTlBHMmtqS2VyeFBFZmVjaXZsRmF3cDJSV1p2eHJWdG4zVFYyU0J4eUNKQ2tYc05EMDVkQ0VyVkhTSklzK0JkdFRWTlk5QXd0eVBtbnliMHY0bVNUenZXZHc9PSIsIk1JSURTakNDQWpLZ0F3SUJBZ0lVUjM4bXEyNlNmMnN6VlYyQmRHNldFTjdrdVdVd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVJZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU5ZMFdiOW9Qb1JvS29ReVdQYUpwejExdnJXVGc2elR0bU5qMlZvS1JueXZLR1JxcHpiODN3NWw2WUE5NlVZa1lCRFFQMGlsTzJEUGU2d1dxVlI1ekRmUnpkY0g4YmgrTDdkR0d2YWU2aFJUWmhrRmtDcFhEczRIY2NrbnJEZjhGQ2xKN0hlMzlKZjQyL0cxUW0yeno5V1dtclBYdGdpSy94MDVHanNRZkd1REcxemY1UVRVVWllOGx3eW1LM1RmZE92TmVlSkFBUGUycG43SXRmUmIrclZyTldpRHpsUm4ydk5uWjJ3UG80d0gvV0o2ZGhYWkcrck1XVCthNkJvY2cxVWZJdzZrZHVuRzRiVHBaenN2YWNGWXlSMG1wZitEZU9ucFNXQW15d0pXSHZUbGYyWVh4RnllWGNUQUNkUWxjTU5HSjJWaFpRNDh4dFA1L1JCUC84a0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ2h5NDJva2lxY1RTMWlxYS9IUldqa0JuNEgvTUI4R0ExVWRJd1FZTUJhQUZPcTNRcENlREh0a2V0dFVmQU82ZkU2ZjJLRmhNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUFuK1JISVBidE1FRE5kVDFnOEgvUml0QWtVZExnQXQxdFdHV25sajlrbmJ2NC80R2xYN0M5cDQ1ZWZQTzkvYVpMNk9WMVhSS0JpNkttdEJXNUs3bnVZRW5NeC81QnFCU2JMVDdyaGR1QzQ5VEJlTWI5UEhkWHNUbFNWTlllZnIxZEdpZHI0ajB4VkJRTGIxcmtuREFiZFdEektmdm5heUtPOEZyd2U3SHg4NDNNRy9ySitjMFhydVV2YmZWVENITGlJV2hNN29ORGhMOHhvYjZ4VW85S0xLY1NMK0l0WXNPMy85V2I4UTlHanNxTDRGWHNEY0cxU2FZaDdLcGZ1TW1PaXhxekpaTzJuSWljUFlSZzFJMlN1aVVmWU83MHRtZEhjYmwra1NRbVNZdDdycTR2aUlMZzJHeDNqOXJJVHVXVGpiYVVhU1NReGdPbU1TSHV5ek1BQyIsIk1JSURQakNDQWlhZ0F3SUJBZ0lVWHplaUVESkVPVHQxNEY1bjBvNlpmL2JCd2lVd0RRWUpLb1pJaHZjTkFRRU5CUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTVo2L1R4TThySVQrRWFvUHZHODFvbnRNT28vMm1RMlJCd0pIUzBRWmN4VmFOWHZsMTJMVWhCWjVMbWlCU2NJWmQxUm54MW9kNTg1aCsvZGhLN2hFbTdKQUFMa0tLdHMxZk81M0tHTkxadWp6NWgzd0duY3I0aHlLRjBHNzRiL1UzSzloRTVtR05ENnpxWWNoQ1JBSGZyWU1ZUkRGNFlMMFg0RDVuR2R4dnBwQXk2bmtFbXRXbU1ud08zaTBUQXVjc3JiRTQ4NUh2R000cjBWcGdWZEpwdmdRamlUSkNUSXErRDM1aHd0VDhRREl2K25HdnBjeWk1d2NJZkNrenlDaW1KdWtoWXk2S29xTk1LUUVkcE5pU092V3lETVRNdDFid0N2RXpwdzkxdSttc1V0NHJqMGVmbk85czBaT3dkd01SRG5INHhnVWw1Wkx3cnJQa2ZDMS8wQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQjhHQTFVZEl3UVlNQmFBRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRTXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJEUVVBQTRJQkFRQzNJVy9zZ0I5cFo4YXBKTmp4dUdvWCtGa0lMa3Mwd01OcmRYTC9jb1V2c3JoenN2bDZtZVBNcmJHSkJ5SjFYbnF1QjVzZ2NSRU5GeGRRRm1hM21pbzhVcGYxb3dNMVpyZVhySjBtQURHMkJwbHFiSm54aXlZYStSMTFyZUlGVFdlSWhNTmNaS3NEWnJGQXlQdUZqQ1dTUXZKbU5XZTltRlJZRmdOaFhKS2tYSWI1SDFYZ0VEbHdpZWRZUk03Vm9sQk5sbGQ2cFJGS2xYOHVzdDZPVE1PZUFEbDJ4TkYwbTFMVGhTZGV1WHZEeUMxZzkrSUxmejNTNk9JWWdjM2lyb1JjRkQzNTRnN3JLZnU2N3FGQXc5Z0M0eWkweEJUUHJZOTVyaDQvSHFhVVlDQS9MOGxkUms2SDdYazM1RCtXVnBtcTJTaC94VDVIaUZ1aGY0d0piMGJLIiwiTUlJRFNEQ0NBakNnQXdJQkFnSVVVY21NWHpSSUZPZ0dUSzBUYjNnRXVaWVprQkl3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRRG01NTViV1k5V1crdE9ZMHJJV0hsZGgrYU5hbm9DWkNGaDdHazNZWnJRbVBVdzBoa1NHNnFZSFF0UCtmWnlTMzNWRXJ2ZytCUXFubXVtZ05oZnhGcmt3RVpFTGVpZEJjQzhDNEFnNG5xcWlQV3B6c3ZJMTdOY3hZbEluTE5MRmNaWS8rZ09pTjZaT1RpaE81L3ZCWk1iajlyaWFBY3FsaVltTkdKUGdUY01HYUVBeU16RU1OeTJubTZFcCtwalA1YUY2Z2kyMXQvVVFGc3VKMWoyUmoveW5NL1NkUnQrZWNhbDVPWW90eEhrRmJMOXZ2djJBMk92NUlUWkNsdzRiT1M5bnB5cFFpbU9aNVFBWXl0bVlhUXBXbC9wTVl6NnpTajhScWtWRE5FSkdxTmZUS0EyaXZMWXdYNmxTdHRNUGFwZzBKODRsOVgwdm9WTi9GcFM0VkNWQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJRZ0tGQWhHNlJhVytoVHk1MmR4ZVQ4YkM5Nkh6QWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQVlNemdMckpMSXIwT292UW5BWnJSSUd1YWJpSFNVS1NtYkxSV3BSa1dlQXRzQ2hERUhwWGNKL2JnRE5LWVdvSHFROHhSVWpCNEN5ZXBZZXZjM1lsckc4bzd6SHhwZlZjYW9MNVNldUprekh4S240YlRhU3A5K012d2FtbnA2NGtaTWlOYkZMa25mUDlrWUtvUkhrTVdoZVJKMVVzUDF6NFNjbWtDZUlMZnNNczZ2cW92cWpXQ2xGc0pwQmNzbHVZSFdGN2JCSjFuNFJ3ZytBVEVvcFk0SWdHdjZadndjK0E5citBVDJocXBvU2tZb0FsK0FOWXdnc2xPZjlzSmUwVitUQTlZWS9VbGFCbVBQVGQwLy9yOXd2Y2VQV1prUGpLb0FDL3pVTmhmRGJoNExWOEdIczNseVgyWG9tTC9MTmM4Sll6eUlhREVoR1F2ZW9QaGgvdHIxZz09Il0sImljb24iOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJpY29uRGFyayI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsInByb3ZpZGVyTG9nb0xpZ2h0IjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwicHJvdmlkZXJMb2dvRGFyayI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzFfUFJFIiwiRklET18yXzEiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwibGFyZ2VCbG9iS2V5IiwiY3JlZEJsb2IiLCJtaW5QaW5MZW5ndGgiXSwiYWFndWlkIjoiZDc3ODFlNWRlMzUzNDZhYWFmZTIzY2E0OWYxMzMzMmEiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJsYXJnZUJsb2JzIjp0cnVlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6dHJ1ZSwiYWx3YXlzVXYiOmZhbHNlfSwibWF4TXNnU2l6ZSI6MTUzNiwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0Ijo4LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjEyOCwidHJhbnNwb3J0cyI6WyJuZmMiLCJ1c2IiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotOH0seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTM1fV0sIm1heFNlcmlhbGl6ZWRMYXJnZUJsb2JBcnJheSI6NDA5NiwibWluUElOTGVuZ3RoIjo0LCJmaXJtd2FyZVZlcnNpb24iOjMyOTQ3NiwibWF4Q3JlZEJsb2JMZW5ndGgiOjMyLCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6MSwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjEwMH19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTEyLTIyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZdWJpS2V5IDUgU2VyaWVzIHdpdGggTkZDIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNDEyMjIwMDYiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMi0yMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzZ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDEtMTAifSx7ImFhZ3VpZCI6IjlmMGQ4MTUwLWJhYTUtNGMwMC05Mjk5LWFkNjJjOGJiNGU4NyIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiOWYwZDgxNTAtYmFhNS00YzAwLTkyOTktYWQ2MmM4YmI0ZTg3IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkdvVHJ1c3QgSWRlbSBDYXJkIn0sImRlc2NyaXB0aW9uIjoiR29UcnVzdCBJZGVtIENhcmQiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MiwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MTAsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUJ6akNDQVhPZ0F3SUJBZ0lKQU1oVi92UVl1NEtBTUFvR0NDcUdTTTQ5QkFNQ01Ec3hJREFlQmdOVkJBTU1GMGR2VkhKMWMzUWdSa2xFVHpJZ1VtOXZkQ0JEUVNBeU1SY3dGUVlEVlFRS0RBNUhiMVJ5ZFhOMFNVUWdTVzVqTGpBZUZ3MHhPVEV5TURRd056QXpNREZhRncwME9URXhNall3TnpBek1ERmFNRHN4SURBZUJnTlZCQU1NRjBkdlZISjFjM1FnUmtsRVR6SWdVbTl2ZENCRFFTQXlNUmN3RlFZRFZRUUtEQTVIYjFSeWRYTjBTVVFnU1c1akxqQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJKSGdLOWZOcU5FV0lZVHNaL2dOaTE3enBFcks3RkMxWW8rRnpxUlZNWUdVSmdBSjl2ZzMxaVRDSjFWWXhiQUtNUWJsTEdrVm4vZGZQNzNnZVRLZWQ5T2pZREJlTUF3R0ExVWRFd0VCL3dRQ01BQXdEZ1lEVlIwUEFRSC9CQVFEQWdFR01CMEdBMVVkRGdRV0JCUmdMWFdkV2VyMWtTR3BwZ1BsaVppMUhzWVBoREFmQmdOVkhTTUVHREFXZ0JSZ0xYV2RXZXIxa1NHcHBnUGxpWmkxSHNZUGhEQUtCZ2dxaGtqT1BRUURBZ05KQURCR0FpRUF1anJLV1p3K1MwVGZHMWJKSmNzcW1HdTVXTGJCMkVnb3JEMmhBMnE2Qm9JQ0lRQ2l5eG52QW42TWkrRGRSbnczU1FHUVpvTEtGS3dIcjRYR05JTzVwQUhBSEE9PSIsIk1JSUJxRENDQVUrZ0F3SUJBZ0lCQVRBS0JnZ3Foa2pPUFFRREFqQTdNU0F3SGdZRFZRUUREQmRIYjFSeWRYTjBJRVpKUkU4eUlGSnZiM1FnUTBFZ01qRVhNQlVHQTFVRUNnd09SMjlVY25WemRFbEVJRWx1WXk0d0lCY05NakV3TXpBeU1EWXlNekUzV2hnUE1qQTFNVEF5TWpNd05qSXpNVGRhTURzeElEQWVCZ05WQkFNTUYwZHZWSEoxYzNRZ1JrbEVUeklnVW05dmRDQkRRU0F5TVJjd0ZRWURWUVFLREE1SGIxUnlkWE4wU1VRZ1NXNWpMakJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCQTc2WnlHM2UrRFpvVy9Ldk0zNlhKQUo2Qkw5a1hNTmpFdjRxR0lENWxBOFo4dVJlTTFZZk1pbzVuRUhMVTJTWkxRM3FYUlJ2eEdONEkrSDUrNmZWdzJqUWpCQU1BOEdBMVVkRXdRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0VHTUIwR0ExVWREZ1FXQkJScytVa21NNXhVazYvejVRTnRXQjI2aTR3NzdEQUtCZ2dxaGtqT1BRUURBZ05IQURCRUFpQkErSVg1Ri84N1cvZW1aa2lKVEhxcmlMRlpPYTc5N3pzRS8wS1A3QVU1UWdJZ0I2NHhGcVBTQkM0S2kxVXJyTlg5VjJ0aGIrNDVSYnRTVm1pNjZXVitnbEU9Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWpDQVlBQUFEMTdnaGFBQUFBQkdkQlRVRUFBTEdPZlB0Umt3QUFBQ0JqU0ZKTkFBQ0hEd0FBakE4QUFQMVNBQUNCUUFBQWZYa0FBT21MQUFBODVRQUFHY3h6UElWM0FBQUtMMmxEUTFCSlEwTWdVSEp2Wm1sc1pRQUFTTWVkbG5kVVZOY1doOCs5ZDNxaHpURFNHWHFUTGpDQTlDNGdIUVJSR0dZR0dNb0F3d3hOYklpb1FFUVJFUUZGa0tDQUFhT2hTS3lJWWlFb3FHQVBTQkJRWWpDS3FLaGtSdFpLZkhsNTcrWGw5OGU5MzlwbjczUDMyWHVmdFM0QUpFOGZMaThGbGdJZ21TZmdCM280MDFlRlI5Q3gvUUFHZUlBQnBnQXdXZW1wdmtIdXdVQWtMemNYZXJySUNmeUwzZ3dCU1B5K1planBUNmVELzAvU3JGUytBQURJWDhUbWJFNDZTOFQ1SWs3S0ZLU0s3VE1pcHNZa2lobEdpWmt2U2xERWNtS09XK1NsbjMwVzJWSE03R1FlVzhUaW5GUFp5V3d4OTRoNGU0YVFJMkxFUjhRRkdWeE9wb2h2aTFnelNaak1GZkZiY1d3eWg1a09BSW9rdGdzNHJIZ1JtNGlZeEE4T2RCSHhjZ0J3cExndk9PWUxGbkN5Qk9KRHVhU2tadk81Y2ZFQ3VpNUxqMjVxYmMyZ2UzSXlremdDZ2FFL2s1WEk1TFBwTGluSnFVeGVOZ0NMWi80c0dYRnQ2YUlpVzVwYVcxb2FtaG1aZmxHby83cjROeVh1N1NLOUN2amNNNGpXOTRmdHIveFM2Z0JneklwcXMrc1BXOHgrQURxMkFpQjMvdytiNWlFQUpFVjlhNy94eFhsbzRubUpGd2hTYll5Tk16TXpqYmdjbHBHNG9ML3JmenI4RFgzeFBTUHhkcitYaCs3S2lXVUtrd1IwY2QxWUtVa3BRajQ5UFpYSjR0QU4venpFL3pqd3IvTllHc2lKNWZBNVBGRkVxR2pLdUx3NFVidDViSzZBbThLamMzbi9xWW4vTU94UFdweHJrU2oxbndBMXlnaEkzYUFDNU9jK2dLSVFBUko1VU56MTMvdm1ndzhGNHBzWHBqcXhPUGVmQmYzN3JuQ0orSkhPamZzYzV4SVlUR2NKK1JtTGErSnJDZENBQUNRQkZjZ0RGYUFCZElFaE1BTld3Qlk0QWpld0F2aUJZQkFPMWdJV2lBZkpnQTh5UVM3WURBcEFFZGdGOW9KS1VBUHFRU05vQVNkQUJ6Z05Mb0RMNERxNENlNkFCMkFFaklQbllBYThBZk1RQkdFaE1rU0I1Q0ZWU0FzeWdNd2dCbVFQdVVFK1VDQVVEa1ZEY1JBUEVrSzUwQmFvQ0NxRktxRmFxQkg2RmpvRlhZQ3VRZ1BRUFdnVW1vSitoZDdEQ0V5Q3FiQXlyQTBid3d6WUNmYUdnK0UxY0J5Y0J1ZkErZkJPdUFLdWc0L0I3ZkFGK0RwOEJ4NkJuOE96Q0VDSUNBMVJRd3dSQnVLQytDRVJTQ3pDUnpZZ2hVZzVVb2UwSUYxSUwzSUxHVUdta1hjb0RJcUNvcU1NVWJZb1QxUUlpb1ZLUTIxQUZhTXFVVWRSN2FnZTFDM1VLR29HOVFsTlJpdWhEZEEyYUMvMEtuUWNPaE5kZ0M1SE42RGIwSmZRZDlEajZEY1lESWFHMGNGWVlUd3g0WmdFekRwTU1lWUFwaFZ6SGpPQUdjUE1ZckZZZWF3QjFnN3JoMlZpQmRnQzdIN3NNZXc1N0NCMkhQc1dSOFNwNHN4dzdyZ0lIQStYaHl2SE5lSE80Z1p4RTdoNXZCUmVDMitEOThPejhkbjRFbnc5dmd0L0F6K09ueWRJRTNRSWRvUmdRZ0poTTZHQzBFSzRSSGhJZUVVa0V0V0oxc1FBSXBlNGlWaEJQRTY4UWh3bHZpUEprUFJKTHFSSWtwQzBrM1NFZEo1MGovU0tUQ1pya3gzSkVXUUJlU2U1a1h5Ui9KajhWb0lpWVNUaEpjR1cyQ2hSSmRFdU1TanhRaEl2cVNYcEpMbFdNa2V5WFBLazVBM0phU204bExhVWl4UlRhb05VbGRRcHFXR3BXV21LdEttMG4zU3lkTEYway9SVjZVa1pySXkyakpzTVd5WmY1ckRNUlpreENrTFJvTGhRV0pRdGxIcktKY280RlVQVm9YcFJFNmhGMUcrby9kUVpXUm5aWmJLaHNsbXlWYkpuWkVkb0NFMmI1a1ZMb3BYUVR0Q0dhTytYS0M5eFdzSlpzbU5KeTVMQkpYTnlpbktPY2h5NVFybFd1VHR5NytYcDhtN3lpZks3NVR2a0h5bWdGUFFWQWhReUZRNHFYRktZVnFRcTJpcXlGQXNWVHlqZVY0S1Y5SlVDbGRZcEhWYnFVNXBWVmxIMlVFNVYzcTk4VVhsYWhhYmlxSktnVXFaeVZtVktsYUpxcjhwVkxWTTlwL3FNTGt0M29pZlJLK2c5OUJrMUpUVlBOYUZhclZxLzJyeTZqbnFJZXA1NnEvb2pEWUlHUXlOV28weWpXMk5HVTFYVFZ6TlhzMW56dmhaZWk2RVZyN1ZQcTFkclRsdEhPMHg3bTNhSDlxU09uSTZYVG81T3M4NURYYkt1ZzI2YWJwM3ViVDJNSGtNdlVlK0EzazE5V045Q1AxNi9TditHQVd4Z2FjQTFPR0F3c0JTOTFIb3BiMm5kMG1GRGtxR1RZWVpocytHb0VjM0l4eWpQcU1Qb2hiR21jWVR4YnVOZTQwOG1GaVpKSnZVbUQweGxURmVZNXBsMm1mNXFwbS9HTXFzeXUyMU9ObmMzMzJqZWFmNXltY0V5enJLRHkrNWFVQ3g4TGJaWmRGdDh0TFN5NUZ1MldFNVphVnBGVzFWYkRUT29ESDlHTWVPS05kcmEyWHFqOVducmR6YVdOZ0tiRXphLzJCcmFKdG8yMlU0dTExbk9XVjYvZk14TzNZNXBWMnMzWWsrM2o3WS9aRC9pb09iQWRLaHplT0tvNGNoMmJIQ2NjTkp6U25BNjV2VEMyY1NaNzl6bVBPZGk0N0xlNWJ3cjR1cmhXdWphN3liakZ1Slc2ZmJZWGQwOXpyM1pmY2JEd21PZHgzbFB0S2UzNTI3UFlTOWxMNVpYbzlmTUNxc1Y2MWYwZUpPOGc3d3J2Wi80NlB2d2ZicDhZZDhWdm50OEg2N1VXc2xiMmVFSC9Mejg5dmc5OHRmeFQvUC9QZ0FUNEI5UUZmQTAwRFF3TjdBM2lCSVVGZFFVOUNiWU9iZ2srRUdJYm9nd3BEdFVNalF5dERGMExzdzFyRFJzWkpYeHF2V3Jyb2NyaEhQRE95T3dFYUVSRFJHenE5MVc3MTA5SG1rUldSQTV0RVpuVGRhYXEyc1YxaWF0UFJNbEdjV01PaG1Oamc2TGJvcit3UFJqMWpGblk3eGlxbU5tV0M2c2Zhem5iRWQyR1h1S1k4Y3A1VXpFMnNXV3hrN0cyY1h0aVp1S2Q0Z3ZqNS9tdW5BcnVTOFRQQk5xRXVZUy9SS1BKQzRraFNXMUp1T1NvNU5QOFdSNGlieWVGSldVckpTQlZJUFVndFNSTkp1MHZXa3pmRzkrUXpxVXZpYTlVMEFWL1V6MUNYV0ZXNFdqR2ZZWlZSbHZNME16VDJaSlovR3krckwxczNka1QrUzQ1M3k5RHJXT3RhNDdWeTEzYys3b2VxZjF0UnVnRFRFYnVqZHFiTXpmT0w3Slk5UFJ6WVROaVp0L3lEUEpLODE3dlNWc1MxZStjdjZtL0xHdEhsdWJDeVFLK0FYRDIyeTMxV3hIYmVkdTc5OWh2bVAvamsrRjdNSnJSU1pGNVVVZmlsbkYxNzR5L2FyaXE0V2RzVHY3U3l4TER1N0M3T0x0R3RydHNQdG9xWFJwVHVuWUh0ODk3V1gwc3NLeTEzdWo5bDR0WDFaZXM0K3dUN2h2cE1Lbm9uTy81djVkK3o5VXhsZmVxWEt1YXExV3F0NVJQWGVBZldEd29PUEJsaHJsbXFLYTk0ZTRoKzdXZXRTMjEyblhsUi9HSE00NC9MUSt0TDczYThiWGpRMEtEVVVOSDQvd2pvd2NEVHphMDJqVjJOaWsxRlRTRERjTG02ZU9SUjY3K1kzck41MHRoaTIxcmJUV291UGd1UEQ0czIranZ4MDY0WDJpK3lUalpNdDNXdDlWdDFIYUN0dWg5dXoybVk3NGpwSE84TTZCVXl0T2RYZlpkclY5Yi9UOWtkTnFwNnZPeUo0cE9VczRtMzkyNFZ6T3VkbnpxZWVuTDhSZEdPdU82bjV3Y2RYRjJ6MEJQZjJYdkM5ZHVleCsrV0t2VSsrNUszWlhUbCsxdVhycUd1TmF4M1hMNisxOUZuMXRQMWo4ME5adjJkOSt3K3BHNTAzcm0xMER5d2ZPRGpvTVhyamxldXZ5YmEvYjErK3N2RE13RkRKMGR6aHllT1F1Kys3a3ZhUjdMKzluM0o5L3NPa2grbUhoSTZsSDVZK1ZIdGY5cVBkajY0amx5SmxSMTlHK0owRlBIb3l4eHA3L2xQN1RoL0g4cCtTbjVST3FFNDJUWnBPbnA5eW5iajViL1d6OGVlcnorZW1DbjZWL3JuNmgrK0s3WHh4LzZadFpOVFAra3Y5eTRkZmlWL0t2anJ4ZTlycDcxbi8yOFp2a04vTnpoVy9sM3g1OXgzalgrejdzL2NSODVnZnNoNHFQZWgrN1BubC9lcmlRdkxEd0cvZUU4L3MzQkNrZUFBQUFDWEJJV1hNQUFBN0VBQUFPeEFHVkt3NGJBQUFBSVhSRldIUkRjbVZoZEdsdmJpQlVhVzFsQURJd01UZzZNRFU2TWpnZ01UWTZOREk2TVRUOWh3cmZBQUFJSFVsRVFWUllSNTFYQzFCVTV4WCtkbGxnUWQ0UFVSQWZpU2hhTkcxaTdCaHRtMDVLVWtuVFdCK05RYTBZRzJPRGxqb09HazFpTzUxcU5HUWNrOW9rUkpzMDRJdzZwdU4wVEV4VGFPc1lTN1NTcGhwZjFLQVZCUlpoV1I0cklMdDdiNy96Mzd2c1FoYUMvUzcvc3Z6M3ZNLzV6L214NkFTR0NaMlAvRmdzOHBmNjZJTmZqTVY0T1d4WXpkL0RnK1pYWUVIbEo1L2p2Z1diOE9qcUhXaHNjYW45TzFVdUdGNEVoTVFVM3RyaFJ0N3FsM0dxc2hwSWlBRjhQcURyTnBZVjVPSDFGMWNnSmpvcUtGTENJK0lITjJ4NEVUQ1YvM3piSDVBOGNSRk9WVjhDUmljRFVaRkFOSmZWaXZJREZhajY5eGVLVGlra2o2YlJGSDF3NVlKQkl0RGY2ajlWbnNhOFozYlFXeThRUzYrdDVqdDN0NHJBMXMwRjJMenFjV09QNkwxYXA0eUtHRGZHM0NFR0M0UVlFQXlOangrMTE1djBLWSt1MTVHV3B5TW5YOGMwV1V0MVpEK2hJK2xoZldIUlR0M3I5Wm5VQmhwWGJkVFBJVncvanhHNlk4MFdjNWR5ZlFHNXdSaTBCdktMZDJOLzJRZk1jeXhnWjVnRmt1K1dkb3ljT0FaViszK051elBUakgzQ3Rmc2RPTllXMDFFZndwREFIWTFQQi8rMklXTmZLZUtYekRjSUI4Q2lNVkhCMWZ2Mkg0OWhaV0VKTU1JT3hJemdEdTNUV1A0ZFhUVEVodkpYaXJEMHNUa0dNZEZUZlFaMTMxNEFYM2NqRmJNdStDbFFoYWhpN3VYVGdzamtpUmh6N0JEc09kbnFEVmdmRnFheUx3SmZYRy9DN0NXL3dzM0x6RjlLb2xHZThxYW5WeWxmdTNZaFhudStRRWdWdk0ydGFKajNGRHFyanRMSFZPN1kxTDVFd0lkMnFyWlFSTHo2TlBZOTNHOUdiTzRpWkI0dEozbVlNcS9QQU11NEg5SERDSzV3UTdHUFhqZTFZc2FEOTZMaW5SZVlpV2doVTNDc2ZnN08wdGZvYXd5RlJDdEJ1Z3E1QzJIV1JHUldIWWJ1OVRFeTg2RnI3YVJMNG5zeGlXSnBuQzBwQTFuT2MwcVdNcSsreWNXejNBTkVtc3A3YnNNV2JzWEhIKzNDNmZlMjlTbHZlL2NRTGxqaTRDcDlpLzZta0ZtVWk4OXVyamFNM0xvZGszeDFpUHJtZllpZVBSUFp2aHNZdWIyRUtXZ210NGVVT25saTRXbXRnK1ptU2drVkFZZXpEYU56bGdKcFNUeERYcVNQVGtMOVgzY3JBa0gzeWM5dzQ0Y3I0R211VWVFV01ZWTMzYXJRRW45Y2dQU0RieGpFUkFlRmg5bXNMQ1BXa1luYWpCbndOVFNSTDR3R3RXTnlWeU9zVVhZelFTSk9NcUdXeHY3Q1ZKaTRObXNlcnN5YUJhMzVKcFZMMVF1TEY3MW9nSDNhMXpDcHJyYWY4cEszanlCK2FqNWk2TkRyYkU1KzJNYW0wMWl2aW9KUm5MTE1GQ2lvUFdQVExBc0Y5MGtwc2xIOEprZFJ3dTFVUWliOHBRSVR6djRONFpucGl1NUU5VVZFNU9Sanc1YTlRQnhURmhHT3drMEJ3K1FJRzlMN0kyQ0E2QXhTN0VjWTdHU1VFcElpNjBicTloM0kxdXN4SXZjNzZ2MzFteTVNbTdjQjMzcWtDQjVoVDQ0akU0OGlqNWhORFBrS0JBd1lCTW91dFhncTZGWEt4bWZWdnFCOWNTSEczck1NNXk1ZUF6S1luckJRUGdid1pmY0dTY0ZBeUFGU2o4VWdiMzExRHk1YVl1QStlQWpXOUJUajlJaUJicDZrTHM0SHZ5WnBZRUVZT2dYc1RBTVpCTUlrM2l1WjFraGN1ZXNCTlA1aUhWT1R5SG5Ed1NSR2Q3TlpPVndvTGx5QWpUOWJRQ040eENncU10eG9UbjVJN1JoRkdFREFBRTR2dFFaQVRMTEtZMkhuNnZiQXcwa25QVUIyZGEwWFdrTUw3djE2RnRwcTM4UEw2L1BaaUdpUU1QR1hQVndpRTRDU3d5Y1lRUkVnVjRnaU5Eb2NQM2s4alc0bXZWNVRwOEVkbDRES0QzYmkwME5iRVc4MksxY252VGZIZGJBMCtTNlM1QWxHL3dpRXFBR2JtbXlHYWprTkdqcFYxMHY3N1c1TWFqK0hoNzZScGVqYWVUZVl0ZmdGdlBIN0k3eWtSQ21lWUlqa3I0NUFpQnFRcnFXaGgrSjYyRXdia0xCeUphYnFIVWhhRXhoTVQvOXlEeExHUFk2VC82cGhEK0FFRlcyc3FjNWJScnNWREIwQkNYMVFEZGc0cWZ6SWRyRzNUNzhIRVZPbVlISnpFMGJ0NWFnMjhkYkJTbGdtek1mZXNnK0JkRTVFdVRkSUZDVU5uQ2NseGN0TVNtNVR0aEhGL2xGV0dsWHFtV1AxaFUzazhqVUgvbnppakx4Q1dFSWl4cDloMTd2d2Q5aFNPQ3VJMDU5ZlFjb0RxL0RNdWwyOE16RGNmcTl2OHpUY2FNYVNSZCtGZnZVd2lwYm5LWHFCdDFFR0VndDNRR3FVQVpHUjlGakdyNEFGcERNVmN4YytoeWsvS0VhZHcybnNFMjI4Rjh4Yy9DSm1QbFFJWjF1SGVXK2dDQzk1RzF1Uk0zazg2aS90eDc0ZGEwd084cnhaemdrYUQyL2ROZG9ZcmlLZ003SFFlTHNpK201RXVTdCt3NHIrQjVCcUNwVktGbythMi9EVForY2psUzMycGEzdkFvbEJWelNwbVhZMzUzc2NqdjV1QTNMblREZjJpYTRUcDFEL3lGSjR1aHBZeU1sVWFreFFMMGUzTFQ0Rms5cDRzeVpNQTlSWGxCMDVnZVViT0lhbG95V2FUVVp3aTkxTkdsV01qRmR6VC9KTWJOdThISnVlRHR5SXZjMU8zSmk3RExjK3JlQ0JUU08xVFhHSTF4N2NST3lNN3lIejQ4T3cwQW5aVndZSVkvQzlzTGhrSDE1NXFZeURoVWN3aXFOWnZlT1NPdW4xc09zNThjUlRqK0hBemlLRHdVVGpUOWJCVlY1S3hYR2t0bE9wOFBtb3VoVVI5alJrVkI3Z1JlVitnMWpxVGVUS2hTUVV2SnBQbi8za0ZsN0o1eHJYOEtsUHF1OVozMStuTzFyYVRDb0R6bGYzOENwdTUxVThVYTlCSnRkWS9STFhCZjU5SHJHNnM3VE1wSlJyZi85ci9KY01rSWp3cHcvVjUydjExRG1yZFF2L0wzai8rR2Ztcm9IT2l1UDZmMkt6cUNSYUthekJlSzV4K2tXa2NTOUtieWhZYjFJS1JLNnhnakhvL3dWRHdjT3JWYjNrK2V4eGhqdUZnWmFoSTJJa3owMkl1VDhYWTk3ZkI5dElLVDZWdkVGaGRKNGhJU0lDTmphdGZSNDFHYVBRZmZZczFZN3VVNjR4ejlZSU8rNnErZ1RqLy9taG9WeDhDN0NHaGtUZ1RuRDc4bi8xcTlNZlpzNGpHZXBVaGpxZXVVN1NuYnYybWhSM2hqc3lRR05oK2pQby91aVlYcGVYcnp1S3RnVDlOeG42LzcraDhIL1ZRQ2lJa0tGeUhSckEvd0M0ZStPK1oxY240UUFBQUFCSlJVNUVya0pnZ2c9PSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIl0sImV4dGVuc2lvbnMiOlsiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiOWYwZDgxNTBiYWE1NGMwMDkyOTlhZDYyYzhiYjRlODciLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjp0cnVlLCJ1cCI6dHJ1ZX0sIm1heE1zZ1NpemUiOjEwMjQsInBpblV2QXV0aFByb3RvY29scyI6WzFdfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMTktMTItMDQiLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IkdvVHJ1c3QgSWRlbSBDYXJkIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAxOTA1MjAwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMyIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4xLjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMTktMTItMDQifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDE5LTEyLTA0In0seyJhYWd1aWQiOiIxMmRlZDc0NS00YmVkLTQ3ZDQtYWJhYS1lNzEzZjUxZDYzOTMiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjEyZGVkNzQ1LTRiZWQtNDdkNC1hYmFhLWU3MTNmNTFkNjM5MyIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJGZWl0aWFuIEFsbGluT25lIEZJRE8yIEF1dGhlbnRpY2F0b3IifSwiZGVzY3JpcHRpb24iOiJGZWl0aWFuIEFsbGluT25lIEZJRE8yIEF1dGhlbnRpY2F0b3IiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIiwiYmx1ZXRvb3RoIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDWHpDQ0FjR2dBd0lCQWdJUVpscmdYN2h1ZnZsbGlVL3pHWGhpeERBS0JnZ3Foa2pPUFFRREJEQkxNUXN3Q1FZRFZRUUdFd0pWVXpFZE1Cc0dBMVVFQ2d3VVJtVnBkR2xoYmlCVVpXTm9ibTlzYjJkcFpYTXhIVEFiQmdOVkJBTU1GRVpGU1ZSSlFVNGdSa2xFVHlCU2IyOTBJRU5CTUNBWERUSTFNREV3TVRBd01EQXdNRm9ZRHpJeE1qUXhNak14TWpNMU9UVTVXakJMTVFzd0NRWURWUVFHRXdKVlV6RWRNQnNHQTFVRUNnd1VSbVZwZEdsaGJpQlVaV05vYm05c2IyZHBaWE14SFRBYkJnTlZCQU1NRkVaRlNWUkpRVTRnUmtsRVR5QlNiMjkwSUVOQk1JR2JNQkFHQnlxR1NNNDlBZ0VHQlN1QkJBQWpBNEdHQUFRQU0zSzRSbGJnS3hCc2ZDakdVUXRTSzYxSkNhb00rWmxYQmE4U3hPSHdBSXFiSGExK2k3RW8yM1JHeHJmQng4ZVVCRGVFd1NMWTZ5TmhNc1lNY25oelg4QUJlYTJHQXk1QXlkLzBvMHlUWHQ0TktPZ1JWa3R1VzdmYkFLcE9vYkFlckRrN3JOT0ZqNUtJYWZjWHltNHhBZkRwWEVQSUxpcVhGcHl5UnJSTWsvTURheU9qUWpCQU1CMEdBMVVkRGdRV0JCU1R2R2E0TTVFZXJDNVhnZEl4MWdzdDBubmV6ekFQQmdOVkhSTUJBZjhFQlRBREFRSC9NQTRHQTFVZER3RUIvd1FFQXdJQkJqQUtCZ2dxaGtqT1BRUURCQU9CaXdBd2dZY0NRZ0ZlUkNYSXhJNGxoc0pzNzZLK1pWRldoM2JUbWNyWUU0eTM2WGRhODlMRzFXamN4bUt2MUFRdXFGTjNQUWxveFJqZnhmaEZPcUxrcTVrR3dIUjJTYXNjOEFKQlNlVU5TanNHVXRPT2JMNkU5bDFaZjl3azdSU1d4SHRsc0gwR2pTckYwQ2IyR1dJMDJWS0xXV1B3ZVhaU0luWnB3bE56ckNCRU5wY0RtMTQvT3lVUFdVZz0iLCJNSUlCMkRDQ0FYNmdBd0lCQWdJUUdCVXJRYmREcm0yMEZabkRzWDJDQlRBS0JnZ3Foa2pPUFFRREFqQkxNUXN3Q1FZRFZRUUdFd0pWVXpFZE1Cc0dBMVVFQ2d3VVJtVnBkR2xoYmlCVVpXTm9ibTlzYjJkcFpYTXhIVEFiQmdOVkJBTU1GRVpsYVhScFlXNGdSa2xFVHlCU2IyOTBJRU5CTUNBWERURTRNRFF3TVRBd01EQXdNRm9ZRHpJd05EZ3dNek14TWpNMU9UVTVXakJMTVFzd0NRWURWUVFHRXdKVlV6RWRNQnNHQTFVRUNnd1VSbVZwZEdsaGJpQlVaV05vYm05c2IyZHBaWE14SFRBYkJnTlZCQU1NRkVabGFYUnBZVzRnUmtsRVR5QlNiMjkwSUVOQk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRXNGWUVFaGlKdXFxbk1nUWpTaWl2QmpWN0RHQ1RmNFhCQkgvQjd1dlpzS3hYU2hGMEw4dURJU1dVdmNFeGl4UnM2Z0Izb2xkU3Jqb3g2TDhUOTROT3pxTkNNRUF3SFFZRFZSME9CQllFRkV1OWh5WVJyUnlKendSWXZuRFNDSXhyRmlPM01BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0RnWURWUjBQQVFIL0JBUURBZ0VHTUFvR0NDcUdTTTQ5QkFNQ0EwZ0FNRVVDSURIU2IybWJOREFVTlh2cFBVMG9XS2VOeWUwZlEybDlEMDFBUjIrc0xaZGhBaUVBbzN3ejY4NElGTVZzQ0NSbXVKcXhINkZRUkVTTnFlenVvMUUrS2tHeFd1TT0iLCJNSUlCMlRDQ0FYNmdBd0lCQWdJUUZRTktXKzd6YmcvN2QrbFR5cklXd0RBS0JnZ3Foa2pPUFFRREFqQkxNUXN3Q1FZRFZRUUdFd0pWVXpFZE1Cc0dBMVVFQ2d3VVJtVnBkR2xoYmlCVVpXTm9ibTlzYjJkcFpYTXhIVEFiQmdOVkJBTU1GRVpsYVhScFlXNGdSa2xFVHlCU2IyOTBJRU5CTUNBWERUSXlNRFl3T0RBd01EQXdNRm9ZRHpJd05USXdOakEzTWpNMU9UVTVXakJMTVFzd0NRWURWUVFHRXdKVlV6RWRNQnNHQTFVRUNnd1VSbVZwZEdsaGJpQlVaV05vYm05c2IyZHBaWE14SFRBYkJnTlZCQU1NRkVabGFYUnBZVzRnUmtsRVR5QlNiMjkwSUVOQk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRXNGWUVFaGlKdXFxbk1nUWpTaWl2QmpWN0RHQ1RmNFhCQkgvQjd1dlpzS3hYU2hGMEw4dURJU1dVdmNFeGl4UnM2Z0Izb2xkU3Jqb3g2TDhUOTROT3pxTkNNRUF3SFFZRFZSME9CQllFRkV1OWh5WVJyUnlKendSWXZuRFNDSXhyRmlPM01BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0RnWURWUjBQQVFIL0JBUURBZ0VHTUFvR0NDcUdTTTQ5QkFNQ0Ewa0FNRVlDSVFDQjBORlFTTjB6NGxXei95YzM2ZXdyVEN6dHRLL3FGdmxhUE9LaCtUMW82d0loQVAwb0tLQStjaWNzRHkzWTNuK1ZsUDhlQjNQQnpNa2h2Vy85SVNYQ3crVkIiLCJNSUlCMkRDQ0FYK2dBd0lCQWdJUkFNczhZWFZCb0JOdVhVanFmQ29YN3k0d0NnWUlLb1pJemowRUF3SXdTekVMTUFrR0ExVUVCaE1DVlZNeEhUQWJCZ05WQkFvTUZFWmxhWFJwWVc0Z1ZHVmphRzV2Ykc5bmFXVnpNUjB3R3dZRFZRUUREQlJHWldsMGFXRnVJRVpKUkU4Z1JVRWdVbTl2ZERBZ0Z3MHlNekF4TURFd01EQXdNREJhR0E4eU1EVXlNVEl6TVRJek5UazFPVm93U3pFTE1Ba0dBMVVFQmhNQ1ZWTXhIVEFiQmdOVkJBb01GRVpsYVhScFlXNGdWR1ZqYUc1dmJHOW5hV1Z6TVIwd0d3WURWUVFEREJSR1pXbDBhV0Z1SUVaSlJFOGdSVUVnVW05dmREQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJEMkxISEFRcVliZFIxV1psdWVydE0zMHJXaG9yWWF2V21NVmE0bmRYOVBad3VSRXBMUTRtMW5FbHFRS01uUkU4LzRDK1Jxd2lhdittcEk0a3hkNWU1dWpRakJBTUIwR0ExVWREZ1FXQkJTM1paanlHbGhaOTlOMXZMb1RQWFZVYTRaRVlEQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01BNEdBMVVkRHdFQi93UUVBd0lCQmpBS0JnZ3Foa2pPUFFRREFnTkhBREJFQWlBb0QrUjZrb2xJV2FOSno0aHowM0QzZ2VzM0diTUJqQVdwa09VZzlheUZnd0lnYkV3N0FZU3lrNjhPdnhnWGV6Z25kVFJURXVTV1QrZmRSbkxhQk5zYVR3MD0iLCJNSUlCMkRDQ0FYNmdBd0lCQWdJUUZaOTd3czJKR1BFb2E1TkkrcDh6MWpBS0JnZ3Foa2pPUFFRREFqQkxNUXN3Q1FZRFZRUUdFd0pEVGpFZE1Cc0dBMVVFQ2d3VVJtVnBkR2xoYmlCVVpXTm9ibTlzYjJkcFpYTXhIVEFiQmdOVkJBTU1GRVpsYVhScFlXNGdSa2xFVHlCU2IyOTBJRU5CTUNBWERURTRNRFF3TVRBd01EQXdNRm9ZRHpJd05EZ3dNek14TWpNMU9UVTVXakJMTVFzd0NRWURWUVFHRXdKRFRqRWRNQnNHQTFVRUNnd1VSbVZwZEdsaGJpQlVaV05vYm05c2IyZHBaWE14SFRBYkJnTlZCQU1NRkVabGFYUnBZVzRnUmtsRVR5QlNiMjkwSUVOQk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRW5mQUtianZNWDFFeTFiNmsrV1FRZE5WTXQ5SmdHV3lKM1B2TTRCU0s1WHFUZm8rKzBvQWovNHRud3lJTDBIRkJSOVN0K2t0anFTWERmamlYQXVyczg2TkNNRUF3SFFZRFZSME9CQllFRk5HaG1FMkJmOE81YS9ZSFo3MVFFdjZRUmZGVU1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0RnWURWUjBQQVFIL0JBUURBZ0VHTUFvR0NDcUdTTTQ5QkFNQ0EwZ0FNRVVDSVFDM3NUMWxCakdlRit4S1RwelYxS1lVMmNrYWhUZDRtTEp5ellPaGFIdjRpZ0lnRDJKWWtmeUg1UTRCcG84cnJvTzBJdDdvWWpGMmtneS9lU1ozVTlHbGFxdz0iLCJNSUlDV3pDQ0FiMmdBd0lCQWdJUUNwMTZEZGcvUE1INDJETmx3cDdOdWpBS0JnZ3Foa2pPUFFRREF6QkxNUXN3Q1FZRFZRUUdFd0pWVXpFZE1Cc0dBMVVFQ2d3VVJtVnBkR2xoYmlCVVpXTm9ibTlzYjJkcFpYTXhIVEFiQmdOVkJBTU1GRVpGU1ZSSlFVNGdSa2xFVHlCU2IyOTBJRU5CTUNBWERUSTFNREV3TVRBd01EQXdNRm9ZRHpJeE1EQXhNak14TWpNMU9UVTVXakJKTVFzd0NRWURWUVFHRXdKVlV6RWRNQnNHQTFVRUNnd1VSbVZwZEdsaGJpQlVaV05vYm05c2IyZHBaWE14R3pBWkJnTlZCQU1NRWtaRlNWUkpRVTRnUmtsRVR5QkRRU0F3TmpCMk1CQUdCeXFHU000OUFnRUdCU3VCQkFBaUEySUFCQTdhK2RtTU5NSU9Fb2RzY1JxOXd2YmhjMlU5clhBZDBDQ0tKK3dnSktwemN2U0c0TDdvZTdnMDN5SU1SZjhwblByTjNkQUdFN05mM2FUOVFRenh6djlmQVlVS3RZRmpSd2NZRkV0VmZpSEc1UXA0VzBRMjh5dTBKRitKc0NtS1U2Tm1NR1F3SFFZRFZSME9CQllFRkFlTEtTOWp1SDJmc3NBcUhtcUFFZHNHdnBveU1COEdBMVVkSXdRWU1CYUFGSk84WnJnemtSNnNMbGVCMGpIV0N5M1NlZDdQTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0VHTUFvR0NDcUdTTTQ5QkFNREE0R0xBRENCaHdKQ0FRcTZNajNIaVk3UFYyd3ZENlZvcnRXL2xwb2ZHOWNrZkhmb0J6R2UrZmU2Q3lhMXhZNU8vUGFWeHZiOHF2Q0NiMHF4T1ROK2NJQzRpSHVsZlhsZi9GTnlBa0ZuTGh0KzBBTXhGL0tsb2lWOW04cGZOQzl5U1lkVEp5TlUvNTQ1b0JLVFJiRmEvVmU1U1g3N2w2dE9UTy82d21oRFRwL2JoNk5WZFc0SWhMNGtQSTZ3b0E9PSIsIk1JSUJmakNDQVNXZ0F3SUJBZ0lCQVRBS0JnZ3Foa2pPUFFRREFqQVhNUlV3RXdZRFZRUUREQXhHVkNCR1NVUlBJREF5TURBd0lCY05NVFl3TlRBeE1EQXdNREF3V2hnUE1qQTFNREExTURFd01EQXdNREJhTUJjeEZUQVRCZ05WQkFNTURFWlVJRVpKUkU4Z01ESXdNREJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCTkJtclJxVk94enRUSlZOMTl2dGRxY0w3dEtRZW9sMm5uTTIveVlndmtzWm5yNTBTS2JWZ0lFa3pIUVZPdTgwTFZFRTNsVmhlTzFIamdneEFsVDZvNFdqWURCZU1CMEdBMVVkRGdRV0JCUkpGV1F0MWJ2RzNqTTZYZ21WL0ljak50Ty9DekFmQmdOVkhTTUVHREFXZ0JSSkZXUXQxYnZHM2pNNlhnbVYvSWNqTnRPL0N6QU1CZ05WSFJNRUJUQURBUUgvTUE0R0ExVWREd0VCL3dRRUF3SUJCakFLQmdncWhrak9QUVFEQWdOSEFEQkVBaUF3ZlBxZ0lXSVVCK1FCQmFWR3NkSHkwczVSTXhsa3pwU1gvelN5VFptVXBRSWdCMndKNm5aUk04b1gvbkE0M1JoNlNKb3ZNMlh3Q0NILy8rTGlyQkFiQjBNPSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFGQUFBQUFVQ0FNQUFBQXRCa3JsQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUJIWnBWRmgwV0UxTU9tTnZiUzVoWkc5aVpTNTRiWEFBQUFBQUFEdy9lSEJoWTJ0bGRDQmlaV2RwYmowaTc3dS9JaUJwWkQwaVZ6Vk5NRTF3UTJWb2FVaDZjbVZUZWs1VVkzcHJZemxrSWo4K0lEeDRPbmh0Y0cxbGRHRWdlRzFzYm5NNmVEMGlZV1J2WW1VNmJuTTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlrRmtiMkpsSUZoTlVDQkRiM0psSURVdU5pMWpNREUwSURjNUxqRTFOamM1Tnl3Z01qQXhOQzh3T0M4eU1DMHdPVG8xTXpvd01pQWdJQ0FnSUNBZ0lqNGdQSEprWmpwU1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJajRnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJZ2VHMXNibk02ZUcxd1BTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGh0Ykc1ek9uQm9iM1J2YzJodmNEMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzl3YUc5MGIzTm9iM0F2TVM0d0x5SWdlRzFzYm5NNmVHMXdUVTA5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5dGJTOGlJSGh0Ykc1ek9uTjBVbVZtUFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdmMxUjVjR1V2VW1WemIzVnlZMlZTWldZaklpQjRiWEE2UTNKbFlYUnZjbFJ2YjJ3OUlrRmtiMkpsSUZCb2IzUnZjMmh2Y0NCRFF5QXlNREUwSUNoTllXTnBiblJ2YzJncElpQjRiWEE2UTNKbFlYUmxSR0YwWlQwaU1qQXhOaTB4TWkwek1GUXhORG96TXpvd09Dc3dPRG93TUNJZ2VHMXdPazF2WkdsbWVVUmhkR1U5SWpJd01UWXRNVEl0TXpCVU1EYzZNekU2TlRrck1EZzZNREFpSUhodGNEcE5aWFJoWkdGMFlVUmhkR1U5SWpJd01UWXRNVEl0TXpCVU1EYzZNekU2TlRrck1EZzZNREFpSUdSak9tWnZjbTFoZEQwaWFXMWhaMlV2Y0c1bklpQndhRzkwYjNOb2IzQTZTR2x6ZEc5eWVUMGlNakF4TmkweE1pMHpNRlF4TlRvek1Eb3lOeXN3T0Rvd01DWWplRGs3NXBhSDVMdTJJT2FjcXVhZ2grbWltQzB4SU9XM3N1YUprK1c4Z0NZamVFRTdJaUI0YlhCTlRUcEpibk4wWVc1alpVbEVQU0o0YlhBdWFXbGtPakpGTnpGQ1JrWkRRelkzUmpFeFJUWTVOemhFUVRsRFFrSTJORFl6Umprd0lpQjRiWEJOVFRwRWIyTjFiV1Z1ZEVsRVBTSjRiWEF1Wkdsa09qSkZOekZDUmtaRVF6WTNSakV4UlRZNU56aEVRVGxEUWtJMk5EWXpSamt3SWo0Z1BIaHRjRTFOT2tSbGNtbDJaV1JHY205dElITjBVbVZtT21sdWMzUmhibU5sU1VROUluaHRjQzVwYVdRNk1rVTNNVUpHUmtGRE5qZEdNVEZGTmprM09FUkJPVU5DUWpZME5qTkdPVEFpSUhOMFVtVm1PbVJ2WTNWdFpXNTBTVVE5SW5odGNDNWthV1E2TWtVM01VSkdSa0pETmpkR01URkZOamszT0VSQk9VTkNRalkwTmpOR09UQWlMejRnUEM5eVpHWTZSR1Z6WTNKcGNIUnBiMjQrSUR3dmNtUm1PbEpFUmo0Z1BDOTRPbmh0Y0cxbGRHRStJRHcvZUhCaFkydGxkQ0JsYm1ROUluSWlQejQ3N0pYRkFBQUFZRkJNVkVYLy8vOEVWcUlYWmF2RzJPb3FjTEcyek9Pa3d0MEJTSnRxbGNYVjR1K2F1dGxXaGJ6azdQVUFNWTlIY3JLanROYnE4ZmVBbDhhQm9zeno5dnBkanNHR3F0RjNuOHVUc05TWnBjNkpzTlQ1K3YweFlLbnU4UGZmNS9MNDhmZy9mcmljekpnWUFBQURBRWxFUVZSNDJrUlVDWmJESUFqRlhaT1kxVGF0TmMzOWJ6a3NTWWMzcjRNRTRmTUJBYUQ2emw4eS85VE9nZXQ4ZDVqZk43OGJ3TS9kRENScFI1MjF6WGZvakhKMDVJSXloQkFVU1ZBT05kR3pCWXQyZjdLRnJma0phQWtIaDlGWmhjRFhIUmtUS285TUxpaEdhYXZJbW5WM3F5RVgwRXByZ3ovNER3VUQ3a0NIUm5kOFFGTjQzR280VVZtRERnemE0dzI3b2l6ZEEyK2NLK3V1VXBqam8yK3h3Yy80Mlc1MHg1TEdZZURCc1IwSFZJeDV4OGlGNjBDYmxiVEVFa0ZyMjdiTkRCVVZTcTFPS1ZQYkU2MmIzRUg4RnFCZzVPT09FdWMydDhaSmlxTU91R3ArY0tqZzd3VkdjZW96cU40cHhnVlBRa2pGWWdiVkpLRFVoRENqWXJhd1A1cTRFVGdDOWZJTVJIdGl0cFFjQ3ZKT0VMY2JNc1FnbmNpUmtsanB5UWp2RzQ0anFCVUVURmlCaTFQRUl5ZWtPenNXK1R5NWNMSG9zNVIrZE1TMUx0U1N4ZjNnUUhjelIyQ0k0Z01OcFc0SVJBMVFNYTZ0SjQrQzZ1SHVHRThtTkRJeUZxZy9PUC9NTVV1ZVM2SXE4UzkwZEFlQkpTRXkvcUtrSytCTnd6OGNZWTRqYjVKNnU0aVdDSTJCMVo1NkxXNWtFYzRoa2RNcHN2VUM1NTg1U1gwUXViY2dOcXlmZ0RGRWNUdCs0MC8wUzVOeDB3YUN3M09La2NPYkE1SW4wQVlwMDFwamp3Mm42MjZVRGp0SHdhMjhpSHVUS3F0cnYrcmVXNDFOWjZpR2xyN3V1TEpDZmtGdGN0Y0cwNHNnbTFlTlMrWmFEbnBhVEVyR295WDVKSzJpTXo4eHMwbk93V0djUERONDlxYUNkNGJ6Sm96RFptL2FCSytFb3pMdytYaE5CaVl3SGYwc2lPdTFYUGtHL3pLd3ZxWUtjZlN3REVjSC9vVWUwN2VzL1dROHJJeWcyRE9Yajh0amtaZHVEQi9iOGh6RGxsTU1PQ1M1QkVuZDUzNGY4dGkzVVpjNGtNczN4THlhZk1Tc0poZEc4WFBxak5rNXRBZ08yNWZlS0NoblZkRGovSjBGTWtPc1UveE1CdjB3RmhZZUVHZlZIMTNmdURVMHlERkxhNGZjN1JuV0hCZnVURlYydEVtTndhZGM3YWMzVVkyamZCbDdIVDM2ZmUzNGlRTzVtTkNGRkJXMDdLalBncWhPTFUwMXZaOFB1ZVoySkNsRlpOOGprVXM2OXVrYTllUHA2K0VmTDRBRjUrTnl3U2Jpckh0Y0I4TWwvZ2t3QUVqa0s2NEtqSFBlQUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzFfUFJFIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiIxMmRlZDc0NTRiZWQ0N2Q0YWJhYWU3MTNmNTFkNjM5MyIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwidXYiOmZhbHNlLCJ1c2VyVmVyaWZpY2F0aW9uTWdtdFByZXZpZXciOmZhbHNlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWV9LCJtYXhNc2dTaXplIjoyMDQ4LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0IjoxMCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjo5NiwidHJhbnNwb3J0cyI6WyJibGUiLCJuZmMiLCJ1c2IiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fV19fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAxOS0wNS0yNyIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiRmVpdGlhbiBCaW9QYXNzIEZJRE8gVVNCL05GQy9CTEUiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDE5MDMxMTAwNCIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4zLjYiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMC4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDE5LTA1LTI3In1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAxOS0wNS0yNyJ9LHsiYWFndWlkIjoiODhiYmQyZjAtMzQyYS00MmU3LTk3MjktZGQxNThiZTU0MDdhIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI4OGJiZDJmMC0zNDJhLTQyZTctOTcyOS1kZDE1OGJlNTQwN2EiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiUHJlY2lzaW9uIElubmFJVCBLZXkgRklETyAyIExldmVsIDIgY2VydGlmaWVkIn0sImRlc2NyaXB0aW9uIjoiUHJlY2lzaW9uIElubmFJVCBLZXkgRklETyAyIExldmVsIDIgY2VydGlmaWVkIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJyc2Fzc2FfcGtjc3YxNV9zaGEyNTZfcmF3Iiwic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlEZ3pDQ0FtdWdBd0lCQWdJUWFZam54T3VrNDdCR2MrRWloMjdibWpBTkJna3Foa2lHOXcwQkFRc0ZBREJITVJNd0VRWUtDWkltaVpQeUxHUUJHUllEWTI5dE1Sa3dGd1lLQ1pJbWlaUHlMR1FCR1JZSlVISmxZMmx6YVc5dU1SVXdFd1lEVlFRREV3eFFjbVZqYVhOcGIyNHRRMEV3SUJjTk1Ua3dPREV6TVRJek1EVTNXaGdQTWpFeE9UQTRNVE14TWpRd05UZGFNRWN4RXpBUkJnb0praWFKay9Jc1pBRVpGZ05qYjIweEdUQVhCZ29Ka2lhSmsvSXNaQUVaRmdsUWNtVmphWE5wYjI0eEZUQVRCZ05WQkFNVERGQnlaV05wYzJsdmJpMURRVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPczVhdlJ4YnRSTnpiUURwdldnQ01GQ1dFUkFGN0pTOWJVbTFISk16YmcxUDM5VVRKdDRNclVHemExNDNPVytUMkN0TGE2WXd1T3N2RWZvVkFSbkNmNVFIdXVTc0MyU1MxZ25nMTJHQ09iR0Jhc0lCSEMyMVI5SFZzSTBXNHV4ZjVrY0dOaDhZeVN0cGx4WFBjS3hpZzJ0ck1EMVU0aXptNExlTnVGU3FjWGYxeGsvanJJb2dnbnZNSVZVWUswV00zcFI5MWxlYm5paHNYblI4R3RXakFGZHBRSEFPVVk5NFJqTjlxOG54R3VNdU5jZisyRVowVkxlVjN0RzNpUVp4SnlsM3g5ZFpDd0s3MFdYajNHdEtkcFIvRlN1Y3JpRFJMcWJVRld1TWdLQVhpZms0b2tqems1ZmQ1T0ZuZXpQaWw3aDBqWTNxK0hLS2xIak05YjQ3d1VDQXdFQUFhTnBNR2N3RXdZSkt3WUJCQUdDTnhRQ0JBWWVCQUJEQUVFd0RnWURWUjBQQVFIL0JBUURBZ0dHTUE4R0ExVWRFd0VCL3dRRk1BTUJBZjh3SFFZRFZSME9CQllFRlAycmp3M2NMcHdVemhaMmx0UHR2K2N2ZENPZ01CQUdDU3NHQVFRQmdqY1ZBUVFEQWdFQU1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQ1Z1WG5lZzUyNkJjUFFqQmF2WDlQNjBnMEpJSkthSjBDUm9QVUc4M0lsTTVxbHlLUU9ybUc0ZnAvUEhuaFBEL21BN080Y1hMVnV4REIrMlcrZ25oTERpVkVKcGNqeXBCMUdYaVY1aHFmYzBYcG1IVDQ4Q2E5RGl0bjFFZVZlQjF0OHJXQ0sxOFhvNng1eFhNVDlvVFVEcFA0MTBuVkMyd2ZWUTIxSVhBNmJremdRTWlLN0JDSmdnV0o4SG9rZ1BobVBiNFIvcFBOd0x1Q2x2UnhwcG4yMFpjSnFwWVFIZUkwMnIwTEtod2NlK2tacGpKRCtoVW55cm8yNjJSS3JPZjkrM3k4enJGWUMxMGNic0xVbVVKczVwSnh5Z2o0ZlZHYmtCOWp2c0cxeFR1NjJrbzhxVVg1bVhKTnR6M2RSUENFY0d4NHkycm9tNnVzaEFQdHFyMUlrIl0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQWE0QUFBQ3lDQVlBQUFBYWxpdk9BQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNRQUFBN0VBWlVyRGhzQUFHWHJTVVJCVkhoZTdaMEZZQlJIRjhmL2taTzRLekdDdTdzN3hhVkNTNEdXT3FWRzVXdExxYnRSb0ZSb2FTa1ZwRkNrVUlxN094UjNEVWtnN3JrazMzdHplM0IzdVNRWHo4SDgyaUYzdTdON3EvT2ZOL1BtalYwZUFZbEVJcEZJYkFSNzVhOUVJcEZJSkRhQkZDNkpSQ0tSMkJSU3VDUVNpVVJpVTBqaGtrZ2tFb2xOSVlWTElwRklKRGFGRkM2SlJDS1IyQlJTdUNRU2lVUmlVMGpoa2tna0VvbE5JWVZMSXBGSUpEYUZGQzZKUkNLUjJCUlN1Q1FTaVVSaVUwamhra2drRW9sTklZVkxJcEZJSkRhRkZDNkpSQ0tSMkJSU3VDUVNpVVJpVTBqaGtrZ2tFb2xOSVlWTElwRklKRGFGRkM2SlJDS1IyQlJTdUNRU2lVUmlVMGpoa2tna0VvbE5JWVZMSXBGSUpEYUZGQzZKUkNLUjJCUlN1Q1FTaVVSaVUwamhra2drRW9sTklZVkxJcEZJSkRhRkZDNkpSQ0tSMkJSU3VDUVNpVVJpVTBqaHNrQnViaTRTRTVPVWJ4S0pSQ0twU2tqaHNzQ01IMlppMGx2djRQcU5HOG9TaVVRaWtWUVY3UElJNWJPRStQekxLWWlOaVlWYXJVSk9iZzZlZmVacEJBWUVLR3NsRW9sRVV0bEk0VkpJUzAzRFY5T21JemtwQ1JxTkJqazVPWEJ3Y0VCTVRBeWVlM1k4NnRTcHJlU1VTQ1FTU1dVaWhZdUlqMC9BVjFPK1JsWldwaEFyVGo0K1ByaDQ4U0xjM055UW1wS0szcjE3b21mUDdzb1dFb2xFSXFrczduamgyckZ6Si83OGN4RmNYSnlSblowTloyZG5QUGJvV0FRR0JtRFdyTm40NzhoUklWN3g4ZkZvMHJReEhoNHpXdGxTSXBGSUpKWEJIUzFjQ3hjdXd0YXQyK0h1NFk3VTFGVDRlUHRnM0xnbjRPN3VwdVFBVnE1YWc2VkxsOEhmMzQveXBNRFgxdzhQUG5BL2dxc0ZLVGtrRW9sRVVwSGNrY0lWSFJPRG4yYitnb1RFQkRnNU9TRWxKUlVORzliSDZGRWpZVytmMzlGeTc3NERtRHQzUGpRYU5maHk1ZWgwR0RSb0FOcTNiNmZra0Vna0VrbEZjVWNKVjJabUZ0YXZYNDhsUzVmRHo4OVhpRkJXZGhhNmRlMkt2bjE2S2Jrc2MrMWFOR2JQL2cweHNiRndkWFZGUWtJQ1FrTkNjZi85OXlBNE9GakpKWkZJSkpMeTVvNFJycU5IajJMK2drVklJK3ZLeGRVRlNVbkowR28xd3QwOUlNQmZ5VlU0V1ZsWitHdlJZbXpldkUwSUgvZUo1ZVlDalJ2WHgvMGo3bE55U1NRU2lhUTh1YTJGaTAvdDVNbFRtRE4zSHVMaTR1SHQ3UzNFaDJuWHJoMEdEcmhMZkM0dUZ5OWRFdFpYUW1JUzNNajZTazlQRjBKNDc3M0QwYUpGYzdGTUlwRklKT1hEYlN0YzI3ZnZ3TDc5QjNEMjdEbmhLY2d1N3RldjMwRHQyalV4ZlBoUVZDdGw4eDQzTVc3YXVBVUx5UUx6OVBBUVk3ODRUSlNmbncrYU5HbU1IdDI3QzR0T0lwRklKR1hMN1NOY2RCYUpTVW5Zc25VYk5tL2VLaGFvVkNwaGRYR1Rub3VMaTJqT3ExV3JoajUvSWF5SzJvZS9MKzNDdE5aUEtrc0tKaVVsQlg4dStFdFlkbloyZG5CMGRLVGYwd2tyckhIamh1alpvenVDZ2dMRnNVZ2tFb21rOU5pOGNFVkZYY1BSWThkdy90d0YvSGZrQ0ZsV2puQjFkUkZpbFppVWpOcTFhcUpWeXhabzE2Nk5za1hoekQyL0dhTTJmUUJkMmcwODF1UkJ6R2ozbkxLbWNOaXkyNzZEckx4OUI0Vm5JbzhMWTJlUXBLUkVWSzhlSVNKdlZLOWVIUTBiMUZlMmtFZ2tFa2xKc0VuaE9uN2lKQTRlUEl6ang0NlRSWldMOUl5TW14RXZPRlJUV2xvYXdzTERNWEJBUDBTU2FQQnlhL2oyMUNxTTIvUWhvSFlEU0FDUm5vQW1nWTF4b1A4VUpVZlJjRi9hbWpYcnNIUFhickt5SElVRnhyQ1FPcExWcFZHcjRPWGxqZllrcFBYcjF4UHUrQktKUkNLeG5pb2xYRHlkQ0l0UVprYW1HQkNja3BxQ2xPUVUwUVI0OGNJbG5MdHdBVEhSTWFLd2QzTFMzb3dweU0xeWRuYjJDQTRPSXFHcWp1N2R1NGhvRjhYaDRhMlRNZXZJZk1BdGtMN1o2UmZ5bi9SRStMb0dZRk92ajFIUE0weS8zRXE0eWZMNGlSTzRjdVdxNlAvaVBpOCtaajVQUGo5T2ZKemhKTEloSWRVUTRPOEhaMmNYdUx1NzAxODZSMmN0bkxST3NwbFJJcEZJaktodzRVb21JZnBqemp6b2NuU3d0MU1FZ3REcGRDUkN1ZlEzRzlsWjJjak15a0lHaTFobWxyQmMyR3BpNjRYL1ptWm1DckZLUzB0SGFHZ0lPblpvaDRpSUNDRmNMQXpGSVRvakNmZXNtNFROVVljQUZ4OWxxVEYwak5tcDBOQmxtdG5sZFl3TTc2UXN0eDRlQTNiMTZsWHMzMzhBZS9ZZElKR0ZHQXVtVWF0RnZ4aUxMNTgvSjI1bTFHcTFVTk02amxDdlVtdmdTTXVFZVBIWWFPVnVzUVhYcVZOSE5HdmFSTDlBSXBGSTdoQXFYTGg0NE83a0w2ZENsNnVQdm03NGVmNHJQdEkvdVhtNXluZjZUTllKNTlPeWhVV0ZPUmZnM0dkVXIxNDkxSzlYVjJ4YkV2aW52anZ4RDhadGVKOEV5eGR3NUNhN1FpNEZIMXpLTlhTTDZJUlpIU1lnekptMktTR0pTWW5Zdm0wbnpwdzlpK1NVVkdTVEVMTlFzeUN6cXRtVDlXaG5yL3dsa1dOeDQ4U0hZRS9MK1c5R1Jqb0dEdXlQemlSZVpjWGx5NWZ4NzcvLzR1dXZ2OGJCZ3dmRnNyNTkrK0xwcDU4bWtld0VEdzhQc1V3aXVWM1l0R2tUZnYzMVYvejAwMCtpckFrTEM4UEREeitNd1lNSG8xbXpaa291U1ZXandvVXJNVEVSVTZkTWg0N0VpY2RVWlZNeWVPT3gyN3BHcTRHSHV6dmMzZHhFa3hrWGx0eHM1dXZuQ3o5ZjN6THBFMW9mZlFTdjdwK0ZYVkY3U2JUOGFNa3R5NjlRV0VYUzR1Q3E5Y0luVFVkaVhKMkJ5b3FTdzVjL05qWld1T3F6cUhOVGFYeGN2QkEwL2ZkMFpOS3lsTlEwT0NyV0pvOUhTMC9QUVAvK2ZjbmFiSy9zcVhUODhzc3ZHRDkrdlBDU3RFVHQyclV4YytaTWRPeFlka0lwa1ZRVzNBTENGYkxGaXhjclMvTHovUFBQWS9Ma3ljbzM2OWk1Y3lmKyt1c3ZKQ2NuaXhZVWZyOXZWUENFdFB5YjNHckQzUkJjcm5LWk9YejRjTFJ2WHpabFJWV2cwb1FyUFRNRGRldlV3Y2lSSTBRVG9jR3k0S1l5Uy9FQ3k0SnpLZEY0Yk85TXJEMi9HVkNUQUFvcmk3SDJFaWdDbDZzRHN0SUFsUllydTB4Q3o4QkdKczJlWlFYWEFQbjJjTXFoenlwNkNFK2ZQb09aUDgyaWErUlFac0kxYXRRby9QYmJiOHEzd3BrN2R5N3V1MDlHQ1pIWUxxZFBuMGJidG0ydEVoU3VQSE9aVlJUNzl1MUQ3OTY5SzF5a2lnTlAxYlJ5NVVxMGFORkNXV0s3Vk03VS9WVElpOEpZbWF4UjlPV29WS0oyVUI2aTlYZlVBWXpaT1EyUkMwWmg3WlZkZ0N0WldXcFhPZzc2TFpFY3JFeEtmZ2MxNE94SmYxWG84KzhFUkM1L0JqUE9yRVo2VHJieWkyVURYd3REM3g0M2svTDNuQnlkRUxTeTBza1pNMlpZTFZyTWlCRWp4QlF2RW9tdDBycDFhNnNGSmlrcENYZmZmYmZ5elRKc3RiRVlWR1hSWXZqNFdyWnNpYi8vL2x0WllydVV2VW9VQlFsV0xodDVYUEtXczYzMzlaazFhTGo4V1F6YS9BbG1uOXNFQi9kcWNIRHloZ05aSyt5RmVLdjBwd1BKeXkwOGNSN09UdHV4dGVObzd3Z0hSdzBjUE1Od0lUME9UK3o2RGpXWFBvWDdka3hEZEdhUzJHdDV3SmZ1SnFVVXJ5dFhybURTcEVuS04rdmhQZ0NKeEJaNTQ0MDNpbDN4V3Jod0lUWnMyS0I4TStYczJiTVlObXlZOHMwMkdEUm9FSTRmUDY1OHMwMHFYTGd5czdPUm5wNm0xd0NIc3Z2NW1Jd2tiTGwrZ2l5Zk5laTAvbjNZL2RRVHorejhIbWV6MHVDbDlvQ2J4b3YwSndjNVdlbkl5VWlGbGs2OW1zWVRqZDJxb2IxbkRmVDNiNEFCZmcweGtQNGFwLzcrRGRISHR4N2FlRWFndG5NQWZGVXVzQ09MUjVlZWpKenNMRGlTcG5tcTNlSGw3SThrT3F2NWwzWWhjTTY5VUM4WWpUZi9XNEFWVncvZ1ZQSTE1U2pMRHRIQ20xYzY1ZUthVjB4TWpQTE5lclpzMllLVEowOHEzeVFTMjREN25RcnIweXFNNWN1WEs1OU1lZW1sbC9Udm9vM3g1Sk5GUndXcXlsUjRIeGM3SVh6eEpYZDQyb3VRU1BlUHVGZS9vaGpra1BWekt1a3Fkc2VmeGJZYnAzRXA5UWF1cE1malhHbzBrckxUNGFGeWhxdWpGam01T3NSbHB5S1RMQ0EzSnkvMEMycUJOdDZScU83cUQzK05PNEpwbWEvYUZhNnFvaDArdUk4cFBqc0ZzUm5KaU1wTVFFeDZBbzRtWDhYS2E0ZXdLL2FZc01ROE5HNXdjZENTTmVhQWJCTEpHMWtrYnZRM3dqVUFFYzQrOEtQZmJPdFRFMDA5cTZPcFY1ZzR6dUx5MzM5SDhjdnNYMFVUWW84ZTNkR3JaM2RsVGZIaERsdnVTQzRKeTVZdFEvLysvWlZ2RWtuVlo5ZXVYY0pCZ2Jzb2lndjNpVzNmdmwzNWRndnVsN2RWYkZGd0RWUlo0ZnI0MkJJY2pEOHYzT1lUeUdxS3lVb2lxeXBSQ0pOYU5OWFowMStWK094ZzV3QVZDUWNMUnBvdWswUWpGOTRhRjNpVEtQRzRxNUVSSGFIbGZxbHk1SERDUmZ4OGJpTzJYVDlPeDV1S1ZGMEczQnlkb0dJUnk4c1JRcGFEWEdUbjZKQkZ4NWVkbDAzbmxpdWFUY05kZk9HdjlZQ1Rnd3ErSkc1OHJPODJ2QWVCSkt6bVhMeDRDZE9tZndzSE92L3UzYnFpZCsrZXlwcml3NTVId2dXL0JIejMzWGQ0NG9rbmxHOFNTZFdIV3hpNG1heWttQmVWSEtHSFk2RGFLcnQzN3haOVhyWkl4ZmR4RWRiVVVzNG1Yc0hlMk9NNG54aUZSTEtZbk9sUWF6cjVvSlZIR0pxNFZVTURseURVY3ZKRnVNWUx3U28zT09YWkl5TWpGZjBEbXVEZFJuZGpiYmMzc2E3N1czaWtSdmR5RnkybWtXY1l2bXcyQ2p0NmZZQmYyanlOMStzTlFZamFIV2wwVEo1MmFsU2p6MkZxVDlTZ1k2N240by9HcnRYUTNEMFVMZWg4UE8wMVNNdE1SV3hxUEE1ZFAwUG5mUkkzTWkyN3BRdm5GZVg5c1N0bEoxZEpSWXVwNmgzUkVvazVMRFJsQ2ZjUjJ6S0hEeDlXUHRrZUZTNWM3QkduMCtYYzhvc29BQzdvNjFBaEgrbmtpZXBjNkt0Y0Vlem9qQUFIclQ2Uk5lTmpyNFpibmgxY3FDWjBmM2c3Yk9uN0VhYTJmZ3dQUlhhSGo4YTZrRTlzOFdUbDZwQ1JrNFZNc3RaU3M5T1FRS0tSUUdLWlNwWWVMOHZNeVJZV2s3VzA4YTJGcDJyM3hkL2QzOERDTHErZ2pyTXZ0SFRlSG5TNS9RM0hyNlJBU2lFcUYwVFFPVVpxUEZDYnhMa0cvVlVWSkVyR3RiNUtiS1c0ZnYyNjhra2lzUTFLMjZ6SDR5cU5xVm16cHZMSk5na0lDRkErMlI0VjNsUjQ5V29VUHY3a003aTZ1cUZKazRhNDc5NTdsRFdtVEQ0MEh3ZXZuNGFUbzZVUVRuWkl5a3FCbDlvTkxmenI0T0c2UENGazBRL2x1ZFFZMGFSM09lRTh6cVZkeDc3NEN6aWNlQW14OUJucDhZQXVuYVRjZ1hJcSsySnZRaFlzRWhObzNWSFhQUmoxM2NsUzhnaEhzS3Mvd3VsekYvK0djTERpaFRoRnY3UDAvRmJzSTJ0S1F4WWdXNEY1QnRQSkNIRTdhSCt2TkgwQWtlNUJ5dEpiY0hTTEtWT25pejZ1cnQyNm9HL3ZYc3FhNGxPYUYvbkZGMS9FNTU5L3JueVRTS28rOCtmUEw5VVl4RXVYTGlFa0pFVDVwa2YyY1ZVT0ZXNXg4WTNXMyt3OFVmZ1doTE85Qmg1cUozaW90SENueEg4NU9UdW9rSkdkaWo0aHJmQlIyeWRJdFBwUjdvSWZuaGl5bko3WS9UM2FMMzBTN1plTngrQzFiK0xwYlZQdytYL3pzQzVxTDJJelNiQWMxUUNKRW55cEJ1VlZuVktFUG5sSEFuNjE2R0E4NkNmeWNEenhBdjQ2dndsdjdQOEpZemQ5ak42clgwZVR2OGFnOVQvUDRkZHptNVJmdEV3dGoxQzgyR1FFSnJVWWcxQVhYK1NRaGVlbW9uTlV6dTltVWxOeTFCWW9ocm01L0xEcDE2V25aWWkvRW9tay9MRTB4dlR0dDk5V1B0a1dQQmpabHFtVVBpNXI4S0FDM0UvakFWOUsvTmVickNzWGV6WHFlb1RobXk0dll6UlpXVzVxeTE1NSsrTFBZZEwrMmJEN3VRY0NmdXlFR1lmblkzdmlaVnpMemdRY3lJTGpNRThhTDBEbFNsZUF2dHZ4MUNNa0Jpd0tYQXN4VGtJb2VQQ3hpdjQ0NmFjODBYcVRGZWFOSERzSEhFbFB3TzdycHpCNjlXdXdtMW9mdFpZOGp2bm5OdUpNU3JRNEZuUHFlb1hqbmRhUDRwRjZBK0JQNStYcW9EOVA5ampVSi83c0JoVVBlTGFBUHRDd1BsNGg3SGg4bVVRaXFTeGVmZlZWZE9qUVFmbG1PK3pmdjEvNVpKdFVXZUd5bzVMWnk5RVpibVI5c0dCeE1kNDN2RDBlYXpnRVRyVE1Fc3V2N0VQdmYxOUNpNytmeHZ2N2ZpUnhJcEh4SVl2SnlaTktmQklvbm1PTGEwMXN6VmhNdk01U3NwU1hFamNya2dVSWRxZm5aajIvK2ppZGRCbjNyWDBETFpZL2crZTNUME5VQVlPUld3YzJ4Rk9ON2taRG4wams1ZVFJRDBSRGNxZnpkaXhBdUF5SVF5akUwcFJJSk9VUHowYXhkT2xTbXdxanhLSVZHaHFxZkxOTnFGU3VtbmlvWGVGTGd1T21jb0cvc3hkZWFEWUtyUUliS0d0TjJSaDlCSDd6N3NPQVZTOWpkZXh4dlpDNEJORFo4VHhXWE1LYkM1RWhzU1ZGZjRWbGxRTnd5S2FjTEtORTN6a3VJYSsvbVYvWnhqeUozNkZFeHd2WFFDVFN0bE5PTFVmdzdINFlzdkZEWEV1TEU4ZHFqQXNkNTVBYTNUQ3NWbmM2WHhkNGF1aWN0ZTd3MHJvaTEwTC9sMFFpcVhwdzBPczllL2FJUHJUSXlNZ3E1eUxQVXlUeE1YTG9LdmFzYk5xMHFiTEdkcWx3NTR6TFY2N2dzODhtaTZudG16ZHZpcnVIV3c2WHN2UHFRY1NteGlIQ014UU5mV3ZvUmNHTXpURkg4UGJCUDdEdTNIcDk4OTlOUnc3elV6SnN5OHZwc3k0RHlFN1hKMTdtN0k4QUVrZC9sYXNZZDhWT0Uyek44T3pLY1pTSFF6b2gvUVlKR1RjMWtyWEhUWlJzOVlsak10NjNNY3B5dnJ5WkNTU0F3Q3VON3NWYnpSNFMvWFRtSkdZazRVRE1DV1RsWm92cFRKcjUxNFUzVzRwbXNIUEwxR2xmMHljN3RHM2JHa01HbDN4Y2luVE9rTnhKbE5ZNWc5M2ZnNE9EbFc4RncyR2cyS3FKam80VzRhVXNEWGptMkt4UlVWR1lObTJhc3FUNGpCMDdGclZxMVJLemJCakRSVHJQOThjQmd0a2k1SmtkZUFEMTdVU0ZDOWVseTVlcHdKdEN3dVZVc0hEUklSMk9QUVZQc2o1QzNYbEc0dnc4dHZzSC9IaGtvYjZwanF3VklSejV0SU1LWmo0OUVnTzk5VVJKbDQ0YWdmUzcxVnFoWDJBVDRTaWhjdERBeVZFTkxWbG9Kb1U1YlpxVnAwT3FMaE5abE5KMGFWaEYxdDM4U3p1dzQvSXVmYk1qanhGakswejhaY3VyZ09OZ2l5NHJHVzVhRC96WitYWDBDY28vQVNRUFRqNFZmd0hwMldtbzVWMGQ3bVNCbVNPRkt6ODh4TUlRc0xrOGdqUlhGdnhxOHRRWWZKKzRiOU1XNE9OZHUzYXRtTStOQzNvK2RwNzBsRjNIbXpkdmppNWR1aWc1SzU2S0VpNXI0WGlCOWV2WEYvZTVKR3pjdUJHZE8zZFd2dDFaVklKd1hhRUM3NnRDaFlzUGljZE9hZG5iejR5Tk1jY3dmT043dUpFYVMxWldRWk01S2dVeUNRVjAyV2ptVnh1MVBhdmp5VnAzb2F0ZnlTZWZOT2RFeWpWOGMySTUvcnR4QXV0aWpsTUpTalVmclJjSm1pS1krV0FCMHdIeDUvRmdrd2Z4UTV0eEpKYjVDNlRvMU92d0lOSFNXdWpMczJYaFNrMU5GUlAzR1FZdnM4aDA3ZHExV0lYQnFsV3JjT3pZTWN5ZVBWdE1KVkVRM0Z6VHMyZFA5T25UUjB3NnlyOVRucXhidDQ3dXpWVnhUVmxJT1FKNW5UcDFsTFZGdzBGY09mN2pIMy84SVFxa2dtQng3dGF0R3dZTUdJQzZkZXVLcVRSS2N4OUx5N1ZyMTdCbXpScXNYNzllVE1ab0RRMGFOTUFMTDd5QTBhTkg2MmYyTGdTTzdzQmh5WGdHQXg0S3dyQUY4Y0FERCtEKysrOFhuNjJscWdrWGg2QnEwNmFOOHEzNGNQekVmdjNZcS9yT28wb0tWMEg4Zm00akh0dzJtVW84c25BNHpwLzVvZlA3eTh1NENUQTFHdDFxOXNYRWVvUFJ4cmN1WEMySVlGbkNBWDRYWDl5QkwvYlAwamNsYXR6MXgybFJ2K2hBMCtNUjZCcUFrd08vZ1p1RnNXcDhXeXdWU0xZcVhCd2k2c3N2djhTcFU2ZVVKWHA0WEV5UEhqMHdheFpkdDBMNDU1OS84TjU3NzJISGpoM0trdUxCdFgyTzRqMXg0a1JsU2RuQU0wYS84c29yK2FJUStQcjZpcjZFMWF0WEswc3N3MDFLdkQwWC9pV2hTWk1td29xWk1tV0tzcVRpZVB6eHg4WDU4L2lta3NETlhEemJOb3V2SmZpWmVlcXBwNVJ2K2VFSkVsa3NlYW9kYTZocXdzV2l6Qldja25JbkMxZUZ0NnVVdEt3Y3V1VnpQTGpoUFhwYVNSRFlXMUEwMDNFVEhTZXlXamlSWUxuU0QvUUxhWVc4eDdaaVhiZEo2QkhZMkNyUlNzeE93NVcwT0Z3Z1M4NlFMcWZkd1BYTVpHU0xhVTBLcDZOdkhYemVmQXp5SGxtUGw1cU9RZ0NMRjIzTHgya25qczl3ckpUNDJNbGF2S1pMaC92dkF6SHYwazVsTDdlb3pGcDBXY0pOZU93dXpBV1F1V2d4WEl2bTJaZTVvTGRVaDdwdzRZS3duamlnYjBsRmkySHJqS2UwNE90cXJXVlFGQ05IanNSZGQ5MWxNWFFPUnhaaE1lSjRrRnpnbWNQV0dWc2VMS2dsRlMyR20rU21UcDBxem9zckJ1VU56NUE5WWNJRThYcy8vUEJEaVVXTDRlZUJMV0sranViMy92WFhYeTlVdEpqMDlIUmhkWldtbjBoaW0xUzRjUEZjV0piTkVNdHd6cnMyZlVMV3pGWm92YXBEYTZlbTVFREprWkpLSkh2T2xCS0wwUkZkc2J2UDUxamUrVFd4YldHc3VMb2ZyeDc0Qlk5dS9CRDlWcitHTGl0ZUZBT0pXeXgvRmkyVnhOODdybmdCZlZmK0QyTTNmb0JuZDMyTFg4NXRRRnhXcXJJWHkzeldhQVNPOVp1SzV4dVFOWm1Sakx3YzNjMWoxUjgzSnpvSFIyZll1d1pqQklueXROT3JsSzF2TDdoSlo5dTJiY3EzZ3VIbXcwYU5HaW5mOUhDaEZCRVJVZVl4NWg1NTVCRTg5TkJEeU1nbytRQnV0cEs0V2E4b09CNmt1UmNYVzZ2VnFsWEQwYU5IbFNWbEErK1hyUmZ1OUM4UHVEbVErMlNLTzUxOVVmQjE1UDBhWW1keXMrdEhIMzBrUGx2RHM4OCtpNzE3OXlyZkpIY0NGZDVVR0JWMVRZUjg0bHEwTlUyRjFaWTlnMnNaOGZCV2s2VmxKbmg4NVBIWnFRalZ1R04raHhmUTJydUdzaVkvQ1ZrcFdFS1d6WnYvemNQVkcyZWdZeXVJOThjNzRYNm1tMjd0NXRENlhMSzQ4dGd6aVArUytOSW5ENDBISHFzN0NHODF2QmNxc3VnY0xXNExKSkVsMTNydFd6aVJIQVV2dFNzY0RBNGNON0hUUjhEUFRNVDdqZThYVFp1RllVdE5oVVUxOVZpQyt6M1lNdUwrcVlzWEx5cEx5d2NleTdKMTY5WmlqMm5oSmhydVl5b08zSmZCeldvZE8zYkVrU05IbEtYbEE5L1hBd2NPb0hIanhzcVMwdlBPTysrVWU1UUlqcDNIMTJqSWtDSEMwaTRPZkQrS210bjNUbXNxbkhwOEtWNDdQRWNFTTdBWC9TaGxnNDdLd2tDdEozNW85UlM2QkpwV05pdUtDcmU0VEF2dGdzbk16VWFuZGU4aWhheWJDQ2RmdU5tcktLbjF5WUdUU3F4N09Md2p6Zy84dWtEUit1dmlkb3plK0JHOFp2ZkhRMnZmd01YRXk5QnAzZlI5WkR4OVB6Yzc4cmd2TVVCWlpTR3BhVDI3d0x0UW9yeTBUUTZsdUp4TWZMSnZKcHgvN0lSMkt5Wmd4c2wvV05ieTRVNi9jN3p2Wi9pQ1JFbW55d0wzWnJuejhSdk9oYzdMaS9ZZjRlS1BkLzViZ00rUFc1Nnd6Z0RYTThRTTBnUTdBVlJWMkpPTW01S0tDenRkY0lkN2VZc1d3ODFjUEhBME5qWldXV0lkTTJmT1ZENVp6ODZkTytIbDVWWHVvc1h3TThKOVh5ZE9uRkNXbEk1eDQ4WlZTR2dqZGg5djFxeFpzVVdMNGZuaFRwOCtyWHlUMUYwNEJzOXQrQUJwbWNsSXpFaEFQRlgreXlvbFp5YmhWUHhaZFAxck5DYnNtYUg4WXNWUzRjTEZaYTVTN3Q3OGE0bnhlMmJpYlBKVlZIZnlnU3VMbGhBcmZlTFppeStueEdCdGw5ZnhZNnZIbFMxTTJSWjdIUFVXamNYd2RXL2oxek5yQUdjdndJMXFTeXhDd3JyaVhId0F4VXk4SFNjV05XY2ZNcjFDc0lkKzY0bXRYeUI0N3IzNDRaVGxKcjhKZGZwalY4LzNZVWZXbFgxZXJsNjhESWtFek4xQmd6b2tYaCtRZUsyTkxuaTZBUmFyUEJHR1NqOXF2NnJDTXlzWDV2VlhWV0RSNGhxKytWaVlna2hNVEN5eVpsOVZZS3UxdEZIOHVUL3IyMisvVmI1VmJjcXJpZFRXZUhIL0xKeTRUcFVXS3B0RXhiczhFbGY4UFNNd2VkOHNuRW9xZVQ5blNhbHc0VktwSEtIVjZndGNIdk5SRUNtWnFRaFhlOERIUVF0Zm8rUmlaNGRRdFR1dURabUJEdjc1WGR1UEoxeEV4MzlmUVlkNTkrQTRpWnZ3OE5ONjBCcFNHM2F5TUNpbm9rUDZaRkFqUStMTFl2U2QxNXZrNTBUL0dKU1hMVGFOTzZKMUdYaDg3WnZ3b3QrZWN6NS8wTjI2SHNFNE1XQUsybmhXaHdOWmxINk9UaWJuNXUvb2pLYnUxVEJoOTB5Y1NMUTgxNDkrbkJJZkY1MmFtc1N6aXNMTklMWUM5OEZaTzVVNVcybUZQYmRWQ1haOFllZVJrc0tXVmxuM1o1VW5QUEJYQXZ4MGRCSGd5bE9XS09WVGVjRmREZmFPK09uTVdtVkJ4Vkhod3NYdDcvYkNRYU53ZkIyYzRFVldpSEhTMEgzd0pPdGtRZGRYNGMzdTVtWk1QUFFIR2k1NUhGdXY3UWQ4NmxETmdBWFNVTkR6WCtQRVlrUTd6S0ZDaU9NSkpwUElKWkJZSkZ3QWJwelIvMDJnbWtReTFlTFM0NERzRE1xdjcrUEt2eThsY1lncHF1VWtaS2JoZ2JWdjRJWHRVMm01S2M2T1d2elMvamtTcUhCUzdpeDRtNTJqdDcxR0NITnlBUTRncWFuc3FLQzR5Z3ZCclpxY09VUFgwSWI0K2VlZkVSZVhQeXlYT1d4SjJoSWNpcWdramd0c1ZkcUtwV1dBbTZjbGdCT1hiVncrbU1PVDA2YlM4OHNSZ01vS0tzdDV4dmVLaGt2Y0NzWEJ3VjVZWFV4NmVzRVhrUHQ5L0tpUTkxR1NxNTBEd3AyOXNLVEhXM0JqQzhlSUsybnhhUFAzZUh5NCt6dmtxTFZrWWJuUmpTT1JZWGREazhTNTZlSG1xVXpJT2dwVmFkQ1VyS0JSOVFiajE5NGZZdCtJdWJnOFpqWHl4aDlBek5qMU9QWGdVcXdlOUQzZWEvc01PbFpyampwcVY3ano0R0lPNGFTam0yWHBOM2labWdUVHhSZGZIVjhDdTlsOWNkb3NVang3VnY3UThWbDBEMmdvK3J3TTV5Z1NuWGV3eGcyZUlocElmckpJN0JnV0xtZG5zaWFyS093Y1lHczgrT0NEeXFlQ0tXdFB3SXBnekpneHlpZnJZRGQxZGxHM05lVGtwZ1pZdEtnc01zQVY5S3cwaklyb2l0OTdmWWdHYnFFQXgwNDF0QmlWa3FJQ2dwY0hGUzVjYkcwWlJzdm42TExwMmxGQmI0RmdKeThTS0MwOFNhUmNIZFJrWWJuZzB6WlBRc1Y5UzBZY0pLdW95ZDlQWU5mMVl5UVcvblRQK0NMeWpUTkw3TWlRZEJYcVBFZE1haklLdjNlZGlKUERmOGQrRXFiWkpFd1BSblJHTTYvcXFPYnNUZmtocGhpcDZSYUVub0dOOFVhRDRkamM4d01jditkM2JPMDNCViswZmhvOUFwc0RMRWlaSkdENW1ocVZST2ZBTlpKYUMwZmpIdzRSWllROUhlZHJ6VWFpcG5zZ1ZIYjI4S0R6dkprY25hQVNUWUw1U1U5THYvbTgyVHRXL0FOakxiWllpQnc2ZEtqSWZoSjJJTEExdUFtTm96UllDemNSSmljbks5OXNoOExtOTd1am9VcDZqNEFtbU4zMWRUd1EzaG4vRGY0T3YzVjRHVWk4S05iWkloVXVYR3h0T1RscFJlR2JUY0xGMC9oYmdyM3h1QkIzSmZIS3k4dkJlNjBmeXpmLzFxYVlvMmk2NUFuY3lFelRoMXJpblhLaGZqT1JlSEIvUkVZU0hITjBXSFRYVjRpL2J3N2ViZjR3SGdqckFLMXdpUzhlRFQxQ01hSEJNS3dtQ3kxbHpCcjBEVzFIKzA4VU5ScmhWbWpTSDBiLzhCeGVKRVQ5LzMwSnMwNmJSbEZncSttRkppTVE1T1FwQXUveVJKSXMxdXcyNyt5UVA5d1RrMjQwOXFncTkzR3hFNE90d2U3TzI3ZHZWNzVaaGdlOTJocDh6TnhrYUEzc1VGT2FBZEdTS2tpdUR1RWNoTnlJa1hYN1l4dFYzQ1BZVTVyTHJ6S3l2aXFLU3JDNEhLRlNxMFVUTFBmWFpHWmE5dWJ5MDNxUXRlVUNKenMxSHE4L1RFd0JZc3lCaEF2b3N1Z1JFZ1UxbGVDMFRoZzU5SThoc2NXU0VVK1dtak9tdDNrVzJhT1dZVWhvR3poYkNLOVVFdmpuWEVoSVYzUi9HeGRIL0lraElhMzFUWkI1SkpUQ2E5RndMSlNSclVSWGZ6eTg1ZzE4Zi9KZnNiMEJucjdsa1FhRHhUeGNIblMrbm82dWRNeXVVQmNRN1NPRmFzS2lmNHVTazhheXVGVUZ5aVBZTFFlYWJkZXVuZkFDNUlHMjRlSGh5cHF5ZytNRkZvYTQ5dVZBeTVZdE1YandZUFR0MjdkWU1RNnR4ZHFtV3g3MExibk5JQ05nN3FWdE9Ndk9ha2EwODYrTGMvZk53NmdhdllHMDYvcitmbEZnVlgwcXhlSnkxbXJCVTlEbjBJWEs1YWpwRnVBQ1hXT3ZSaU8vR3FqclkxcEFIVStPUXF2bEx3QnVBVlNha1Nqd3RiNHBGRXFpUEwxQzIrTHdnRzh3cnQ1QS9ZWUZFSnVaaktrblYrQzV2YlBRZWQwa2RGMzNGanF2ZlF1RE4zK0tTWWZuWVZQc01TV25aVUtkdkxDbyt6dVlTMGs0Y3VneXpZNkhNdkZmenhBOHVmVXpyR2ZuRVNNQ25YM1FQYVNGdUJudUpNSXNZQm9TZUV0d0U0NERpWUk5N2MrbEN2ZHhsVFhUcDA4WHdYWFpHbGkwYUJGV3JGZ2h4a1p4TklkV3JWb3B1VXBQUmZkaGZmREJCL2p2di8vRWVTeGV2RmpFWk9SQjBadzR0bUpaWWMzUUJCNzhXNVJ3RnhldWJMQVljenhCODhnb2tnckMzZ0ZwdVZtb3UzQVVwaDlkckN5OHhlek8vOE1mM2Q4VDhWMlJmQldpQ3lSZkl0R3JRczJLRlM1YzNBNnRkV0xyS1U5WVhCa1psaDAwdkRSdThIZjJRSi93OXNvU1BZblo2YWkvNUFubzhyTHA2TWtxdWRrc3g0bkVnWnNHMCtJd285czdXTlh6QTlGWFpzNGxXci80MG5aMFdQVWE3TDV0QmYrZnV1TTVFcFNwUitaZzg5VUQySGgxTHpaSDdjWFM4eHZ4L3A0ZjBXWHhZN0NiMWdEMmMrL0Zld2ZuWUR1UGtiREFmZUdka1BmSUpvU3dLeXJIS1RScE51UWNEcUxmcS91Q2gzQ1Z6WE1qbWdYVVJ5T2ZtaVJjTHZDblBOb0NMTVByMStQb09iU0hIVmwxYnU3NVBTdHZOemo2QXcrbzVYNFhuaHJENEpEQ0ZoMUhXdUNvNzl4L3d5N3RQQWRSYWFrb04vNmdvQ0J4WGh5VGoyTVdHbzZkTFRvZkh4KzBiOThlQ3hjdUZERU4rWHRwWWMvQ29yenVTakpnM0JJY2lZU0RHZlA1OFc5eUpXUE9uRG1pRDVHWGNiUjNqdEVvcVVBYzFNaDJkTUw0elIrS2NIYVhrMG1NakxnL3NpdnludGlKV2IwK3dwSitVN0Q0cnE5TTB1cUIzNkNaZDEyOWQ3VytNS3RVS2x5NEdNTkx5cUtsSzJCTWpNckJFUjJEbXluZmJqRnEwMGZJWTNkTzlycGpEejl1a2pJazVNQXhOeE96dTcySngycjAwRzlneHFTRGY2RFZQODlqNk9yWHNTM21NT0FUU2FrR3hFU1VXay9hTHhXTUlrb0dKWjRQeThWYlA1QXZrQXRRSGQ3Yzl5UGFyNWlBWG1zbVlzVzFnOHBlVFRrMytIdjBEKytvcjhGUWJlZldNZkx4MG5mdlNMVDk5d1drc0dWbVJIUC9laVRZN25EWEZHeEpYYjkrUTRnLzdZbXU0KzF0Y1hIVEdRZVJ0UVp1UXVTQ2tZUGFsZ1llcDhXRmEzbkNjZmxZa0t5QkJZN0hZL243K3l0TFNrNWhrVmJZa21kQktTM0RodzhYRnVUNzc3K3ZMTW5QMEtGRGhaRHlSSWlTQ29UTElQY1E3STA1Z2pxTHh1SmJDOEVTeGxUdmlrSFZXbUp3U0N1VHhFNXFHM3E5andnT3VsQUZJdlp3YVYvaHFCV3ZRZzZxbVpsbDJlSUtjdzlDTlZmVFNTUTVKTkxmN0oybkpURVJWZ3hiTkp6b05ISnlZSitaamgwRHBtTlVSUDdKNmxaRjdZUGR6ejN4L3NIZkVKMmRSb0pFKzFhNUtkdFRocHY3c3BSb1BVZXJzQ2NyeUprS0VKVXIxa1FmUWI5L1hrQzM5ZThpanEwckl6aHU0Ykl1YjZCblpIZWw0NU9PejNoL0RscGNTcmlDeDNhWWp2TnkxYmlnbGxjNGZDeFlpUVpTMDFKRXJkek93UTVxZHJ1L1RXSExpcHZPaWtQMTZ0V3Rka0lvQ0o0enpOS010V1ZKY2NNK3NSZ2I1cUlxRFlaNTBDeFJGdEZBT1BEd2dnVUx4TXk3MXNDaHN5b2lvcjNFREtxVXAyVWxZczZKdjZuc1NsRVdGbzI3eWdtK1pMWHBDOFRLcFZLRXk4WFZSUlMram80T2lMdGhlZEFuVDE5djNFK1ltSldDOXc3OXByZUM3T2pDOFRwRElrc0wyU2xZME9OdHRQQ3F6Z3RNNkx2eEEvUlo4U0tWaGlSNEhFV0R2UW5GUHN6Mkl4TDljek9acjFPMlljdUpuVVZjQTdEaDBqWUVMeHlEdjY3a2IySmExZTB0dEF4b0RPam80VERaSCsyRGptWHVzYVhZSEh0YzVEVlF6YzBmM3V3aFdRQzVPYm1pNXN4eDcyNW51QitySkhDekc2ZlNZRzM0cDVKUTBvS2FoNUNNR2pWSytWWXlDdlAwTE8xOFhoeWg0NU5QUGxHK1dROVBLTW5SK2lVVlJGWXFOTHBNdk5WcUhEWU5tQ1ljd1l4Sno2U0tteTRyWDJLUDZiY1B6Y1dlWktwQVZjSzRMWE1xUmJoOHZIMWdSMllyZDl4ZXZXSmRmTEg3dGsrbG1uQTJpUTViR1h6WVN1S0xTTFdHVjVzOWpLSHMyV2RHamNXUFllV0Y3U1F5UVpTWExUMVdEc1AydEsyNENmU1p6Vi9lUHpmZjNVejBYVGlQS0w4ajRzSWJ0bFZVeU1rSG1mWU9HTDd1TFh4bk5qVUo1OWpkaDE1bWpxakJIanVHM3hMN28wVEM5ekJQakdrRTJWSmk5bU5MY0hNT0R4OFF3dVhKWWF4dVQzaHl5ZEwwZ1hCOHZkS1FrSkNnZkNwN2lodFYzcGpTRnZDRldWeWxDZjdMelprOHAxcEorZjc3NzJXZlYzbkQ0MlZUcjhQZk9RREpEeXpHMjAwZVVGYmNvc2ZxU2FnMi94NkUvSGsvcFJFbXFkcTh1L0hPZ1YvMVpSbFh3aXNaTGtVckhIOS9QK0VWNTBDV3orVW95ekg1akRtV2ZBMHJ6NjNYTnhHeUhBaHJqQkwzRjJVbVkyQlllM3pVeUhTNmdrU3FXUVQ4K1NETzBzMFNBWGJGTmtiYml1M3BPemZ6WlNRZ3dzVUh2ZjNyWTFSb0c0eXMxZ29Qa2dnT0NXcUNobTdWU01EU3FDb1NUOXV3dFVXL2Fid1BQaDRXVTQwWG50cjRJU2FmK0VkL0FFWWM2VWUxV2U2WDQ3NFQ0KzBjdFRpVEZJV3Z6YllwNkxtNGN1V3FpRHpDVFZsK2ZxYmpNbTRuZUVaa25saXlwSEFmVW1rb3I2ajduVHQzTHBVTGYyQmdvTlhOY0piUUZkQ2Z6TjZaM0VSYVV0aHFLczN6eUgyMm4zNzZxZkpOVXVad3VhUEx3SmRrWlVYZk01dXNkOU9oUlhNdmJJWG5MLzJ3N3RJV3hEdW9jUzFYUnluSEpGMWxaemdWbFhOYy9sVUJ1QVN0Y0x5OXZVVUJ6RTJGMTZKTXZWc3M4ZUhoT1NLSUxaZjFldkZSRXRjaXlFcjZ1ZjBMK294RzFQbm5PY1JrcDlCMmJ2b0Z4dHR4MHFVRDhaZHdYMlJQL052N1kyenQrUkZXOW5nUHN6djlENzkxZVEyL2RuNFZpN3E5aVUyOVBzU09QcC9oTTQ1Q24wbzExalJLWWg4c1FFYjdVem8rSit5Y2h2bVhUWnNONjN1RVlsU3R1NEJzRGhObHZCMTlwb2ZoK3pOcmtTVXN1OEs1Y1BHU2FETGlwcXlRYWlTb3R5bWxkVVRnUGlHMTJ2STRPR3NvcjdGYVBIbGthWTZMUmFzMGdsNFFwWTNpLy9UVFR5dWZTZzVYVnNyQ2UxSmlnZXgwOUE1c0lZSWRtUFBlM2w5dy85bzNrTWlWZU81YjV6S0p4Y2s4Y1d0Uk9iMFhKWUdPc3VMaGlBOE9EcHpzY2UxYTRVRkxEeVZleEI4c0JGeEx1Rm5nSzRtc3BWa2RYNFFQZXdBYTBXWEQrNGptWUpJYUQ4cEhDNHkzWVRJVDBUdW9LZkllMjRpNTdaOUZuOERHQ0hieTFLOHp3MHZ0akRZK3RmQlN2U0hJZTJnbDNtcitNSWxsRnFVTTJwK3hDRkZpOFhMeXhuMmJTT3ppVE9jRytybjFrL0NsZGZvQnlvWnRhSVhLR2YvRkhNVFdJc2FLTVRIUk1hSjVOU3NyRzVHUmtjclMyNC9pVHV4b0RsZU0yRlcrcXNFV1UybmdmczJ5OEM0MGg4ZkhsUlJ1NGl1cm1KbHZ2ZldXOGtsU3R1UWlnQ3YrUmx4TFQ0RHI3NFB3NXI0WmVzRXFvOEFNRlVXbENCY1RFT0NIYkYwT25KdzB1RjVJMi91dTZ5ZVJtNVZNUjhyOVUzeTRTaUxyTjlRMUFJUERPbksybS94N2RTODJYYVVhSkRjcnNqZ1k4clBJY0JOUVNneVdkWHNMSzd0T0V2bUx5OXNONzhFbXNzd0MrVUZnNzBUamZpdE9ZcjRhUnd6YmF0b0o3MERIOG54OS9WVCtwbjFkZEl4YUg3ejQzM3lScnlEWTJrOU9TUlovUFR6Y2IwNE5jenRTR3F2RVFIbTd0SmNFTnpmRitpOEY1V0VOSmlVbEtaK0tUM0VEK0JaR2FhWmdrUlNDb3pOVi9yZGgyWlc5eU1oS3g5UWppeEEwLzM2a2NnWGM0TG5ONzR0aDJpZHpzbEwwUVhsekxUYzFWd1pjZWxZS2RldlVSbVpHaGlpa1RwMHFlT2JTeVR3SnBOb05HaElldFpJMGJMcnk3TWUxKzhKVFpUcHU1NTZkM3dvcmh2T282ZlJFZmhJS0R0eU8zR3lzN2pjWi9ZTmI2RE9ia1VRbWRYUjZIR0xvSnNXazNVQWMvWWFsNHErVGIyMGNvdjNVY3dzU2ZWZml0d3pIUjJhVVJ1Mk9xSVJMbUhGMmc3S0Zub2wxQjlLNXVOS3g1SWxqMHVlM2h5TlpqUHVqRGxxY1FkbEFmSHk4Y0JyZ0F0bkh4MWYwQzl5dTNLNU5SaTR1cGkwRHhhVTh4Smo3ODZ3ZFUyYUpObTNhS0o5S2o2ZW5wMmhSa0pReDl0d3Zub1c3Vi8wUGpaZVB4L003dnRKWG1LbWNGRUtWa3cwMXJmZm56eHdkd3hENG5MOW5wV0ZBU0h0ODJ2WlpVQ21xYjIycUFsU2FjTldyVjAvRUtWU3AxRGhkeU54TlIyT093SW5FU1VXSHlsSFVEWW1iQ2QrcFAxekpwV2ZtdVExSVNZMkdxOG9KamlRZ04vUFRqY3ZOaU1jcXNySjYrdWZ2dUY5OGVUY2UydlF4Z3Y0YWpjQlp2UkR3YzNlUmZPYmRpKzRyWDhIc002YkJjUmsvRXRQZGZUNkhYVzRldmZ3NVVKTjQzZnc5K20xSEYxOThkbnd4c3N4cUtTL1hHMGdWbHd4eFRJYjhMTW9jYi9IbmN4dVZYUGxoajdEa1pCNWpwRU40ZUVpNTFMeXJDbVZobVZSRlNsdlpLSTk3ems0WlhDa3FLZXdCV2xadzMyUllXSmp5VFZKbVVKbmhvM0ZENnBoVk9EbDBKZzRNbXcwMXgwOWxnYUx5aWVjSVBERjBGcUpITHNGemRZZm94WXZScGFPcmYwUDgzZU50dk54Z0dQYjJJOEhqdXBOQjJDcVJTaE11VDA4UDBjZkZxYUN4WEV6ZmlNNUkxMlhEa1lWQlNabFVRNmdUbEQrcXhrZkhsa0RyN0NjR0FCdnlxdTBka1pLWmhMRzFCNkJYUUVNbDV5MEdySDRkUTllOGhsOU9yMElhaHpQeERBZThhMUNxU1ZmSEFSdXVIY1NZVFIrSldZMXp6V3E4TG81cS9OcjJHV1RUZHNhL3ljZktVN0djVG83R1AxR0hsTng2T3ZuV3BmMnFSTzNGa0orVHZaMDYzNWd1WTJKaVk0VkFjcTA3OURaMnpHREt5NnV2c3FtS3paZE1hUVpjbHpaU2lURXM3TGRycGFWU3lkTWgxQzFFeERobDZyc0hvdzczYXdrTEt4M0RxN1ZHaEt2ZUsvVHBlb1BoclhiWGk1TXVDNjM5Nm9ubERNL1VFY1JkSkZYZ09hNDA0V0x2dUZvMWF3Z1gzWVRFSkVSRlhWUFdtUEp3ZUNkUks5QlM0YzVOY2xvU29teXFFVXlzYXpvZVp0VzF3NGpPU0lJNzFSNDRueUhSeGdoekRjQzBacVAxR1JXU1dHeCtHNFRsUE1hTFEvdHp1Q2ZhdDdncG9xMlhFdmRGc1RtdDhSQ3pmRHJNN0lKRGNlZVVQZWdaR2Q0ZTk0UzFRemJWYW94L2w0OVQ3YWpCenhkTXJhaXVmdlZGRTZNRFZaNk44enVUQ0Y3aEFMMEZjT3JrYVZIajVpbGhmTXVoZzE1eTUxSlZySGNXOXZJYy9IM25rb2M4bzN1c293cHdqa0Y4cUd5TjVOaXFDdHhDWlB3NDVCaDVPK2RRbWNpcEtsQnB3c1V2UzNoRWhCQ3VKQkt1dUFLYUt4cTRoeUNBUklVUFZFMTJpaU45MGpob1VNL0QxT3JZRjMrT0xLSmNmZDhSNVRNa0ZwVFJZWjFNcGpQaEYyVFkrcmVwcHBtdWowWElkNHB2bHZoYlFDSkJoTllWYlZia2Q3MS91bVlmNkxpZDJPaDN1V25UaDBSdm5abkZ4Zk50VlhmMkZYMXV4dm50eWNwbzcxTmJ5WldmNHlkT2l2NUFqVnFENEtEU2VhZEpKRlVSRnEyWW1NSzlqQ1Vsd2E2UUlFMTIrYm96S3QrZUtwcEtFeTZtV25BUU9NbzNqK2M2Y3NUeWRCSU5QRUxRMXJzbTdFaHMyT3JpcnR0NnJvRmtzdDRLZWNTVmg4TUpGK0ZHNG1Td3pEaXg4NE9ub3hOWlJlMlVuSHJtbnR1RXRlYzM2ZDNsaFdMeFpWQVM5emN4NHE5WmNuUkdSbFlTQm00d0RTRGF4Yjh1L01tRVpzOUI0OTkzSTRGTnlVeEJGQTllTnFLcFp4Z2RjNjZ3eWd4NTg4Z3lmS0pHZHlXSEtWZWpvcENSa1M2YWRBSkp0SnhFZEgySnBQUndCYkkwRmhmSEd5MHJNakl5Q28zdUlTa2JjcWlzU2MxS3BacENNdDNBSktRYkJmdG1heXladlFnNU1BT2xOS04xVlFrdWtTdU5pT29SSWxJOFd4S0hEaDlXbHVhbmkxOWQ1T1hta1JBNWtHMWloeUN5d0hoOGxZSFVuQXhjU28yRnE3MWE1R0dyaXhQM08zbVFwVlNYckRaakh0dnpEVmxhaXVjYXY3T0d4Q1R6dkROWjlKZWJMcm01a1A0WXI5ZDZZUm1Kbm5BbE5XSjRTQ3RrMFRMajMrZlBYbHAzckk4eERhZlQwanRTOUZjWjhySHkxaUl4dGpRRkM3Tjc5MTVvTkJvUlRiOSt2YnJLVW9tazlQRDd4eUdiU2twWnp0L0ZrZmtsNVkranZRcGpJM3ZncVZwMzRaRzZnOUhCcUIvTFIrT0s1MnIwd1RobFhXZi8wc1g5TEM4cVZiaThQRDNoN3U0bWFuenhjUWtGMXJiRzFlb3RMSzJiWWtDaTVjempwUlF5Y3JJUlJ6VUhWMGYxVFRGZ2E4YUJCS0VoVDBsaVJtcmlGWENFZGhOVll2czQ3VHEyRFA0T2FROHN3b0hodjVDQWNaZ21idE0xeXNlMVV3ZEh6TCswbGI3Zm9xTnZYZEg4SjZ3bzVSallrbklucSt0S3V1bDUxWFlsUzVOK2tOZHovdFRzTkx4UXU1K3lOaituVDUwV3dwV1dub2EyYmN2Ty9WZ2lZZGdOdmFUTW5UdFgrVlI2ZnZ6eFIrV1RwR3pKbzVLTHl5ODlHZ2NWM216ekZMN3ArREorN0RZSmQwZDJWZFlBSWM0KytLejljNWplOFNWYTl3WkcxTFRjQ2xUWlZLcHdNUzFidGtCcVdwb1FzTlZyMXl0TFRlRUwzU2VnRVhSNU9takppdkpWdWVnRlJJSDdyTmdGM1VrSWdaSklPRmdjNnJpWjlnZnRqVHRMMjNKMGVIYmNVSm9BK1RPWnhSKzFIWThPL3ZYaFJML1h4THNHUG13K2xzU0xYVU9WZkNMcHR6dkRscGtSSVdRdGlkK25mUmtmZ3h2VmJ0S3lUYzF0RFFrZnIzZWk5U3pJSVdSQkRnNXBxVjlweHVrelp4R1hrSUNjM0Z4VWo0aFFsa29rWlVkcG9uSDgrdXV2eXFmUzg4Y2ZmeWlmSkdXTEhYSTRZazhwY2FSeWs3dERxZ0pjRWxjcTdkdTFSWEpTa3JBb3pwd3VlRHpYQy9VSElETXpEUzVVNkp0UGE4OWh0bHhJSUp4cHVlR3ZTSFNodFNJaS9DMVN1Um5RZ2NXS05oSVRPMUlTTnlOWFAwbWFFVHkrUVdESWR6UFpJeVhYVkl4WVBQbjNidjYya3R6SkNoUlI3WTJ3ejdPSHU3MmFyRVo5MVBpQndTM2dwckljTnVmczJUUEl6Y2xCT29sN205WmxOMFc5UkdLZ1JvMGF5cWZpazBiUFpWbk01YlZzMlRLa3BGZy9ONVNrR0ZDNWRJTW50UzBsVjFKakVTVml0VmE2YkZTK2NESE5telVYSGtVcHljbll1KytBc3RTVWVoNWhHQnJTbGl5Z0hEaWF1NzNra2JYRm9tRkhZaUQra25qUlh4Y1NCenN6OTAwZWlDY21jelIydnVEUFpQMWM1dzVMSXh5NE9aTEU1MlkrUTE2cXdlaXlsRUY2Q3FFdVB2Ujdqc3B4OE8rcnhHZGZsU3QyUkIvRmpwaGp3dXVSbzlhL2YyZ09JcHg4b2FIOWNSL2NxTWh1eWw1TXljN093dDQ5KzhYNEZnOFBEOVN2ZjZzdFdpSXBLempVRWp0SmxaUjMzbm1uVkdQdmVOdEprMG9XZ2sxaUJWVFpqOHBJaFAyczNyaDc0NGQ0WXNjM2VIVDcxMFdteHlpTjJ2SUZIdDQ2RlUvdm1Zbk9DOGVRMlVWbFloV3d1a3IrdEpZaGJWcTNGQjVGZkVFSzYrd2RHTlphTkxGeHY1UHhZRTRIc29MWXN1R21PaWNXRHlYeHNtUXpNUXB3Y3RlTGtiQzQ2UFE1aWM4cVhESHovZ3ZtQ1IxNXloS1R2UHlYYWpCbWVUbGFSMDNYQUxCOXg1YVc0UmljYWIvdWpocDhkR0F1WHRuNUE4YlR3M0FqTFE0ZUhLb3FWNGZtM2pVUTRXWTVJT3psUzFjUkhSTXJQZ2NGQmNMUHIrd2pnMHNrUEhOMGFRYis4alQ4SDM3NG9mS3QrSHo4OGNjNGNNQnloVlZTUmxCNXlYSnpKdUVDWnV5YWhwbEgvOFRNNDRzby9WVkFXb1FmRC8rTzM0NHR3a09SbmZCYWcySDRzc3RFcm1XSWZWVTJWQXBYUHJYcjFCYlJ2SGxROHE1ZHU1R1FZSG1tMXZZQjlkSFlLeHpwV2VuSXpMM1YvS1lpZ1dCM2RLYzhCeUVhYlBtSVpqcDdqY2hyakM4UE51WStMVm92L2hvK2svRHNUREQxYW1ya0dRWWZ0U3V0Vi9JWjhqbzZZVTM4T1JLNld4TU9lcWhkMERlNEJleHpjbThlZytFNFBCeTBZa3hYTkpuWkRyVGVsL2JKL1Z1NU9oM2VhMUZ3a05JRml4YkQxZFZGaE1acTF5Yi9KSmtTU1ZuUnQyOWY1VlBKWUl2cG4zL3l6MFZYRkJzMmJNREVpVlFnU3NxUG5HelVjUFpEemtPcnNIL3c5MWc3WXFHSW1TcUNLM0RsbklNdm1DU3VzS3ZnNUJZTTNhT2IwQ1dvbWVqRGY2SEJVTFR5Q0NQaEtubWtsYktpU2dpWGk0c3o2dGFwaGV6c2JDRmVhOWFzVmRiazU3bEd3M0VqTXdHWlJ1N29LanNTTGlkUEVUNUtUV2F4SVRtcDFFalJXWmdnanl3eE1aQ1p4RU1rZHJJbkMyaG40bGtsZzU1YXJ2N3c1T2xPcUlKeEt5LzlCbGxRMTFPdTRVamlCU1dubmlHUkhlR2hkUkVHbXZGeGNOSTRxa1RJRkNlVlJuem40eDlSczVzSUQyV0pTNWN1NDNwc3JHZ21WS2xWYU5TNGtiSkdJaWw3WG4vOWRlVlR5ZW5mdnorKyt1b3I1VnZSZlBQTk4rald6WEl6dWFRTTBhV2paOUF0NTYvdS92V3h0ZjlVZ0NQMThBUzM1bVFtSXNBNUFKZUh6NGFEVVgvVzFmUjRYTXhnbzRKdHQ4cWxTZ2dYd3pVK2JpN2tDTnE3ZHU4cHNNMmN3emYxRFdtRldDTnJoK01SK21rOTlHT29TQWdNSWlOYzAwbWlrc3lhQzFzRU5xYjk2NkNsV2dYbjRlWkhkN0tpMHVMemp5UHA0dGVBek9NYzRXbW96NnR2QW5UVXVtUENvVGxLTGoxT0RocTgyM0lzV1hrWjRBanc0dmNOZ21lVU9MQXVSd01aV3IyenNtVit0bXpaSmtTTHArdnYyVU8rM0pMeXBVNmRPcVdlTDR6aDJaQTdkT2hRNkVCaUhxL1Zva1dMTXBtQVVtSUZEbHBzdTJFYTRLRzlkdzBzNHBuWmVjaVBzZk5ZWmhKVmxOMXc3ZTVmNEcwMnorRjk2OTVCZEFiZDF3SXEyeFZKbFJFdWpVYU5saTJhQ3k4bG50Si80VitMbFRYNTZSUFdob1NLTENFRFZBRUljL0VURWRxRndDakp5VUVOanNKK0lUbEt5YWhuWkVnN01lYkt6VjR0Z3VGeTRzOXc4c0d2NXpjcnVmUjgzUEErSUR2alpqNlI3RlVJMUhqZ3lQWFRXSHJGZFBiWUlCY2ZmTjVoSEFLZHZNWDRMUGFBZE9MK042T1VuSm1LY1dSMnUzQS9sd1V1WHJ5RUF3Y1BpaWtlZUl4TnUzWnRsVFVTU2ZuQVhyMWxZWFV4MjdadEV6TTFkKzNhRlRObXpNQnZ2LzJHMzMvL0haTW5UMGJ0MnJWRkJQalN6cm9zS1FaVTVoeU9PNDBlSzE5VEZ1Z1pVcTBsTnZTZnJvaVhEc2hJUUNPLytramhwa1Fqa21sOTBGOFBZY3UxL2ZvbXhpcEFsUkV1cGtmUEhuVDlkT0Faa2c4ZE9veWtwR1JsalNrK1pGMTVhRXd2b0lmS1JWZ3phanU5dTd3aGNmU01tRFJUUjRwMnZqWEFRWmIwNDYzMFZoUmJha0ZPbmxod2VhZVNTNCtmMWcwdGZHdERSemVXTGEyYitlbTN3dDJEOEwrRHY0dDV1NHdKY3ZiRks4MUhZa1NObnNqbXdkRmtIYVpscFNPTEhvRFl0RGgwQ0dpSW1wNEZUd2V4L0o4VlZLbHhFSjZXelpvMmdWTVpSdUNXU0FyaXdRY2ZMTlZnWkhNMmJ0eUlKNTU0QXFOR2pSTDduakJoQWs2ZE9xV3NsVlFvR25lc3U3UVZuVmE4ckN6UTA4V3ZOaGIwZkErSVBZcnE3bUhZZWRka01nQk1aYUg2NHNkd0xla3FZRFpjcURLcFVzSVZHT0NQanAwNmlmaG5YR2pQbVZmNHJNREdSSHBXZ3llSm1aWXNJbTZ5TXlRWFJ5MnVwc1dLZmlvRGRkMUMwTm03RGpSaVBKWG1aZ3BRdWVKMDRsVWNTakR0dS9xaDFlUGdDU0xaS2pQTzcrUGdqR3hkTm5xdGZSZXBYR3N4UWtQSDBUMjBKYjdzOUR5KzZ2Z0NubW8wREhmWDZJNVhXNHpHb3cwSEs3bnljK2JNV1J3OWVneGFxZ0ZyTkZvTUdDQm5oWlZVREY1ZVhzSzFYWEtiNHVKTFZ0TmVOUHpyWVdRWk5ROE9EMm1EazQ5c3d1bGhQMUhsL0ZZellIcDJKdXhtZHNXTnRCZ3EwS3FHcFdXZ1Nna1gwN043Ri9yWERzN096amg0NEJDaW82MGJPTWZUK1BNZ1huYlU0RDR2UTNKMWRFSk1handKeXkzdlFrKzFNMXI3VkNmcnpBN3VEbzV3VTVLSGd3cXF2RnlzalRxbzVOVFR6THM2N2lJcnlUNHZ4eVMvSzZWUXJidVlabVhNdHE4UW0yRjVDblNlQ0xPdVZ3VGFCVFZHVFk5UVpXbCtjblE1V0xMMGIxR0FjQjlCbjk0OVlHZlVPU3F4RHU0Zk5SNHVjYnRRRWVmMDdMUFB3czlQUHplVDVEWkU2NFVqaVJmUmFORkR5Z0k5dGR5RFlXOVUxc1NseFNQZ3p4SGdDVzZGOTJFVm84cVZpcTV1YnVqWnM3dHdpZmYxOWNHc1gzNFRBM2V0b1pxcm4zQjg0TDR0UTNKV2FhaDJrWm12dVhCa1JDZDRrd1hsU1ZhWnQ1SzhITFFJMDNyaTcvTmJrWnlkcHVUVTgxMmJjWEN4YzRDYm5ZcnlhbTl1NDBtL1VkUFpGeW5weWJobjNRZjVSSzg0ckYyL0hsRlJNY2pKeVVWWVdDamF0emVOYWwrVktLb1FMYzJBMU5MQzBmTzU0bE1lVktZZ3NyTU9wNUppN2JFdlhHamF4MkVyM0k2VmxUS0Z5MUVPWVVlVitaTUpsMUZ6M2oyNHdFMkFaaHhQdUFTZm43cnFvOFN6UklnK01QYmlyanJYdDBwVzU5bUxMakRRWDB6amNmMzZkU3hkdWt4WlV6anRBaHZ6MDB1Q2RjdEJRMnV2Z3EvR0E3dWlUZWZGcXVjWmhub2V3ZENTZGNmaGwvU0pSTWxSSy81K2Y5VHNOKzJBejFxT2hVTnVEbHhKd0c1dHc0NGRLZ1NRS1IycTljQkgrMy9IS3p0bTRKK0xPNUhLTXlwYnlUV3lMSmN2LzFjTURlQVFVY09IRFZYV1ZFMktLa0FyY3laYmRqUW9yNmxmMkdHbXN1QlpGTmdhTHluV3psYmNxVk1uZlBIRkY4bzMyNkUwTVJldHdjZW5iUHQ0S2xSb1dYd3kwOURFSXdLTnFleHJGTkFRT1ZRQmYyRFRSOGd3S3FmMnhaM0RrRFd2b1U1b1d6VHlxWVZHSHVGbzRobUJ1cTVCUUZxY1h2eXFBRlcySFdyUXdBSEl6dGFKYVJmV3JsMXZWWk5oTUZsY0xtUmhxUnhWWXR5VUlibW90VWpPVERHWmQ0WVpWMjhnZExvc3VKRll1VHBxUkhJaEs2cWFzdzhPM2ppRkkvR21mVjJ0L2VyaTBicjlrSk9ybzN3cXluOXJPMWZhemwzbGhMcHV3YmllSG84NXA5ZmlmenUveGRnTkg0c3dUMFh4Kys5enFiQjNSWG82UFZ5Tkc2TjY5YW9kVUxjbzErblNORGVWMWxyanNZQ2NTa3Bob2hzU1VyQlRUVkdVaFJWYW1zS3VPSlVKZHFSZ3IwQmJvcWpLVkduQ1dqRmNJU3BMdUdKZUdxeCtucWk4OGlVcjYrendYN0NsMzVmWTNQY0xiT243T1E0TitRSHplcndEUjRkYmxiRWFydjdZT1BBYjdPbzNoZkpRdnJ1K0VQbjNENXlPVDlzL0QyU2xDZU9nc3FteXdsV3ZYbDJ5dkxvak1aR2JESDB4K2F1djlXR2hpcUJsWUVPNlVXeDFhY25pdXBYYzFLN1lGMjA2bHFHZVZ3UjZCRGNYWVpvNFpxQnhDdFM0NDdkai81QzViTnBrT0NDOEhaNm9OMERFaU9mSUdPYmJjWGluUUswN2dpZzUwUDE5dHNIZElxcEdZZnp4eDF3aHpEeTlpNHBxOVBmZmY1K3lwbnpoYUNVbHhkdmJXL2xrbWNqSVNPVlQ4ZUhLU21uZ3NZQ2w4WTVqeTZZZ1FrTUw3cU1zaXJMdzJDdU5KVnRjSzNUOSt2WG8wNmVQOHEzcVU5UXpWeG9ydkR3cytGcTFhcFdxZ21YMVBHclphYmduckF1cXV3ZUpTalpYc0RseGhUM0V5UnVPVkk0WjRMSXFnTW8rZHhXVlpZWjg5Sm1kM2w2dU54UnR2T2theThnWmhkTzdkdzk0ZUhpS0NSVHQ3ZTB3ODZkWnlwcUNhZVJYRzJIdWdhSTJ3azJHaHVSR05ZNkV6Q1NrWnB1R2dPb2YwVDdmT0N0T0htS2l5bHpNT3BZLzhuV1hhczN4UklQQjNIb293dnliYit0QUs5Z05mbExMaDlIVXI2Witvd0xZdW5VNzl1N2JML3BrTXRJek1IcjBnOHFhOHFkQmc1SlBFbGRVczB5clZpV0xaTStpd1dOOVNrdEptOVM0SUNtc1pzMERkVXRLYWFLd0d5aE5aYU1rRTBZdVg3NGNMVnRhbm5LbnFsSFVQUzlOTXlzUG1DNXJ1RUplVWl1UUs3a2NZOUlxN0ZYNEw2WDBrM1FtWjJjZ1ZsVGtaZVNNSW5udTJYRlFhOVNpUURsejVyeHcxaWdNRGxIU0thUWw2dnRHaXBrK3RRNGFPSk5vdWFpY29iWlQ0WlJaODErWVd3RDZoM1VRYmJmdWxNZk5VWjljS1FVNmU0c2d2Zk5PcmxKeTM2S2hUMDE4MG1FOElsMkRSRCthaHZiTjRzaWhwS3E3VmNPSDdjYkJsOE5GRmNMeEV5ZXhZT0Zmb2hhZG5KeUNvVU1IVTZGZFMxbGIvdlRyVi9Ea2xZVVJIaDVlcERDMWExY3l4eEsybGtvekk2K0Jrb1lTR2pwMHFDZ1VDb0lIejViaytGZ011M2N2L2FSODk5eHpqL0twZU5TdFc3ZEVEaXZjL0xaNzkyN2NmZmZkeXBMeW8yYk5tc0tyc1NSMDdOaFJiRjhZWEhFb2FlV2hwTzlLVVpSVVRIbTdvbG85YmtKVzArYW9BeGk5K1RNY3VuWVV1Nk1PRlN2dG9iVHI2Z0YwV1RFQlp6bVlnNHljVVRUY3ZQTHdtRkdJaTR1am0rV0JBd2NPWXZXYWRjcmFncW5uVXdNdEF1cEQ3YWdTdFJydTYzTFR1SWorcHpReE9lUXRPbFJyZ2pvZVlTSmtsTUU4MXB2U1RpSUNSbXhxSEphZDJhamtOdVhoaG9OeGI2MWVKR1NSSXN4VHg2REdHRnQvRUZsZWhiZUhjOVBnYjcvOUlhWXJTVXhNUXJPbWpkRytmY1ZHeU9qY3VlQ1FVNFhCb2xWVUh4YlhKbm5nYVhFWlBYcTA4cWwwakJzM1R2bFVQQVlOR3FSOHNnd1gvbzgrK3FqeXpYcWFOR2xTcUNCYVMvdjI3VXZVWERobVRNSEJuSzNoenovL0xGWWN3dUxDejlQS2xTc3haY29VOU83ZFcxbHFQVHpBdWJBbVhvYXQxYVpObXlyZnJJZnZXMG5mbGFKNDhjVVhsVS9GNDZPUFBsSStXWUw3b015ZU5iVUxmajM5TDVvc0dZdldTeDh2Vm1wRnFjMnlwN0EvNFJ5Z3pmL3M2U3JCZzlndXowWjhTTGR1MjQ3NWZ5NkVOOVUwdU45citQQ2g2R0NGdTdndVY0ZXo4WmVSbEowQ0J4RXZJMDlFaytjbVJlTjdtMFptOE1vTFc1R1Zrd1Y3RWpCejBrbnMvSjE5MERPc2JZR0JjVE4wbWRBV0lWZ005OVc5Tm5FUzNGemR4RUJyZG4xLzZzbkg2QVdwK0hyRXlKRWppejN6ckxXUERIdUVObXJVQ05ldVhWT1dGQTRYRUVsSlNhWHU0ekxBUVZ5TEV3K1BDeWVPOW1BTjNNeDY5S2hwbjJsaGNIeSswamgyR01QSDJMVVlqaFBjOUxwL3Y3NDV1clJzM3J4WlZDN09ueit2TENrOUxPci8vdnZ2VFljZmRscmdQaVVPdW0wTmJNbXVYVnR3WUc1akVoSVNpbTNsc0pVN2Y3NzF3UkNLQTArZXljZWowMWsvUXpFL2U0Y09IU3F3bVRIZ2o2R0l5YzBoYzltU0IyeHBLazhXM3Z2VVdFeHM4UmplYjFZMkZVNXJxZklXbHdFV3FiNTllaUV4S1ZsWVliTm4vNFk5ZTRxT2Q4WWRqN1Y5SWxEYkt3SnVhbWNTRmpVYzZJWmZOWnNSMUZtbFJaL3c5bkIyME1LRm5UbVVKa05EQ3RENklDczdDNnZPYlVOMHluVmxLMU9zRVMxMmUzLzMzUS9nN3VZaFhrd2ZieDg4OXVqRGxTSmFETWVRYTl2V2VrdXZPTFBkc3RXMVk4Y09xOXlVV2JRT0hqeFlacUxGc05YRjNuSFd3S0ppcldneFI0NGNzZG9CaGFmN0tDdlJZcnAwNllMcDA2Y3Izd3FIQldETm1qVmxOcTZOWGVYUG5UdUhOOTk4czlSOWRsendzcVhFYzNFWmU2bHk4K1RwMDZldGVtN3V1KzgrcTBXTDRiSmo4ZUtDNDZDYXd5SlJYcUxGOFBQTzg1bFpDejl6UEZ0MFlYMWp3MnZlUlRWeExxTXNpUlNMVDBtVEdWeUJ6ZEZoV0ZoN1pVSEZZVFBDeGR6VnR3ODZ0R3VEbUpoWVVSRDhNV2NlMXEzZm9Ld3RISGVOSzZwN2hpRFl4UjhhZXczU3NqS1JhalpYbDdQS0NSMnFOWU1ML1hYVk9OTTJ0NUtieGdtK3pwNGtmazQ0R244R2gySk9JSnVzdWVLUVRLSTdaZW8zU2h6Q2JQSDNpU2NmaFVwVmVCTkhlYk45KzNZUlU2NG8vdnZ2UHd3WU1FRDVaaDNjSDhieDZlNjk5MTVsU1g0YU5teUlpeGN2Q3V1c3JPSHhTTjkvLzczeXpUSkRoZ3pCaVJNbmxHL1djL3o0Y1JFTnZTQzRKczNuempNTWx6VXN5aXRXckZDK1dZYWJ4ZGdxTEkwblpFRndhS2hkdTNaaDllclZKZG8vTjdlZVBYc1d2Lzc2cTdMRUZPNUxQSFBtak9oenRBVDNlZlB2ejUwN1YxbGlQWU1IRDdicWZyTmx5Yzk4ZWRPNGNXTnhyc0hCd2NvU3kvVHMyVk9JWEVSRTRVTmxQbXMrQnM1T1pGV214cEN3a05WYUhrbVhCU1JkeGowTmhxTzVUK0Y5aStXQnpUUVZHclBrNzJYWXRIR3pxRDFkallwQ2w0NmRNT0wrNG5WYXAyU21pYjR1TDYwYlZBNm1McW5adWRrNEUzOEpPakszamVlanljdmpVRUlRL1dVQnJuNGtZb1c3dVJ0ejZOQi9tUG56TEhqUk1XZGtacEtsNVlXbm4zNktIckR5R1NoYkV0Z0M1QUtSYTlUY0hNc09CVndqNUw0cWJsSXNMZnlvdmZmZWV5SjZPTmNZdVRiNzl0dHZDNGVNaXVDTk45N0FwazJiUkZNdG54ZFhmcmhQcGFRZDVNWjgvdm5ud24yY3ZWbFpyTjk2NjYweWNUS3hocSsvL2hyejVzMFR6YzVzWVhGZkRsdEVwZkVhTFFsTGxpd1JZc3FGTUZ2US9BenhYNE1WemM0VC9IeHhRVjFjZHU3Y2ljdVhMNHQrTEs0ODhYN0xnci8rK2dzelo4NFUwd2VscDZlTC9rTVdZbjR1eW1MNFFuSGhpZzYzRXZEeHBLYW1pdVBoNTVRdDdPTDJiVDY1KzNzY3Zyb1hHV1I1Y2VkR1dSWDBmT1VkNkYwZTEvUUJqSXFvbkxGK05pbGN6TDhyVjVISnZ4VFZxbFVUL1NKY0MzbDZYTkZXZ3pGY3lPanljb1J3bWI4R0hBMmV3MFN4aVBGTGtzc3pHNU8xeGMyTkhIdXdPS3hhdFJacjFxNFZ6VFg4TUxxN3UrUEZGNSt2VXFJbGtVaHVUM0tvaE9jaE9tVUJpMFVaN2FwVTJLeHdNVnUyYk1laXhVdW9SdWNpT2pmWlluanB4UW53OS9kVmNwUWVucW5ZanY1VDI1TlZWc3c3eGpYZ3VmUCtGRk8wY0swekpTVVZkZXJVd3NOalJzTlJWWG1oZ3lRU2ljU1dzV25oWW5nYWtCay96QlFkdWh4SGpzMzlybDA2bzMvL3lwME9oS2ZlLzJYMjcwaE1UQkJOWWZFSkNlalN1Uk9HRFMxNFNoT0pSQ0tSRkkzTkN4Y1RFeHVMSDMvOEdXbHA2U1JlRHZRM0RhRmhvUmcxOGdGNGVub291U3FPZjFldXhzYU5tL1RqeHpRYUlhYURCZzFBdTdadGxCd1NpVVFpS1NtM2hYQXhTWWxKK1BLcnFhSS9paE4zd0tlU2dIR1U5UTRkMmdrWCtQTG0zUGtMbUROblBtSmlva1dIUHg5SGNrb0s3dXJUQzkyN2x5eVNnMFFpa1VoTXNTbDMrTUxJTmhyQXh6TW9NenhZbVNkbS9PS0x5YUpKc1R6NTZlZForTzY3SDhqYTB6dGZjSCtXOEh5aWVrRU85NDVLSkJLSnBFeTRiWVNMRFVlMkhWbTBHalNvaDJiTm1na1BQaWV0bHY2bVlUSlpZMU9tVHNkNXNvcktpcFRVRkN6N1p3V2VIdjhDVHA4K0I2MlRWbGg2UFBEMjNudUhpVkJPUXJ6S3pCRlZJcEZJSkxlTmNMRThzRWF3aTN0bVpoYnV1WHNvbm56aWNYaDR1SXRwOEZsTU9QVFF0Sysvd2ErLy9ZRkxseS9yTnl3aHkwbXdwcElRcmx1N1huZ3g2blRaSWxBdTkyVTkrOHc0VkE4UFIyYVc2ZnhmRW9sRUlpazl0NDF3R1dBTHh6REJXbVJrQkY1K2FRTEdQalNHbHVXSjVjN09MamgrL0FTbVRQa2FYMDJaaGl0WHJvQ255cmVHaE1RRUxGbnlOLzczdjlleFpjczJNZDBLTzE5d3N5QUh5ZjM0dy9mUXVWTkhrWmNIR1JmVGUxNGlrVWdrVm5EYk9HZmN1SDREMDZaL0s1b0thOWFzZ1VmR1BxU3N1Y1dLRlN1eDc4QkJYSStORlZNQ2NONkVoRVFSLzZ0OXU5YW8zNkErM0MyTVR1ZHhXQ3gyVzdmdmdGcWxFbU95TXJPeWtKYWFpclp0V3FOejU0NzV3clh3S1A5UFAvdFNUSmZlcTJjUDlPclZRMWxUZFZoOGFRZU9KbDFHSGtsc2o0QkdhT3ViZng2c1ZGMEdmamk5R3RsNU9iQXZLSjRpUFVIcy9CTHU3SWZlUVUzaFVrVE1SbjdnNWwvWWpIT3BzU0xnY1ZGd0JZRG5VZXNiM0FLdHpNTExaT1prNDdkekczQTFJd0YzQlRkSFMrK2k0K2R0aXoyT0RURkhrSjJiaFRIVnV5UENWVC9IVlVKV0ttYlR2akp6c3dzK1Z3dmswaXZFRVZhZXE5My9waFBRL3JpeldIWjFuNGhZMEpxT3FXZHdNN0djK2Zuc1drUm5KRUpONTI3MXkwY1pPVUQwb0pEV21ITjJIWncxOUp6bTVZb1p1eCt2MVFlT2hSenZxcWdEMkJOM1dzVHR6S0w3T2I3T1FIZ1dJK3FMZ2RpTVpNeTl1QmtaZE0zdFJSTzRaYmhJQ1hMeXhzaUlUc3FTL0J4THZJdy9MMnlCcTlyWnFtdVFRNVZPbnJIaG9jaHVZbEpEYzQ0bFhzSHFhd2VRbGF0VG11Y3RrMFBYTEZEcmlYdkRPdEIrTEUvaXVEZnVERmJTTmVNcjNzQWpGSU5EQ3ZZRzV1T2FjMkVUcnFUSDAzWEp3alAwREhocjhzZmJQSlVjaGIvb2ZYUGtBTjVGMUdoRnR3ZjkxeU9nTVpyenhJMFd5TTdSNGIzRGMrR3A5UkI1aTRKL01pRTdEUy9XR2FUTU5YaUxwT3hVZkhGME1UdzA3Z1h1aTQrSjMrdnE5SzcwRGJyMUxGY1dkNVJ3TWJ4K3k5WnRJcHFGaXd1OU5IVDZIRGVRbS9vNFhFNW9TQWdHRHg0SVgxOGZMRisrUW9ScVNrNUpGaGFiUnFNVzQ4VTRmM0J3RUlZTkhWVGdGUGEySUZ5OTFrN0VtdE1jb05RT0U5czhqZmViNXAvRThuTGFEWVF1ZUlEZWxDeXl6K21sNDlsUExUMHg5dlJxT0dyaDc2QkZaeEtRUDd1K29heklUdzVkOC9Zcm5zZXVLM3RvRzNxSjhuU1VDck42YWQ5cHNYaXp5MFM4MDVpT3hZaTR6QlEwV1BvNHJpVmNGRk0zL04zOUhRd0lMVHhvOElUOVAyUHk3aC9vWVVqQzhpRXowUzlVWHpBZFQ3cUNlb3ZHMHJtbTBVK2FDZXBOZ2FXVDU4amJ4cERRZ1Y3cTVGSC9pQmxtbWNuSEZtUEN4Zy9va3ozR05yd0hNenUrSkpZemdRdEhJL3JHU1ZKN3M4Z3BZdFlCcFZRVDE5bjRRdE5uS2hpWEQvZ2F5eTV0eDdjN3Z3SGNxTEtrUzhORDlZZmg1dzZXcDhjNGxYd050ZjhZQm5DMGwvUUVQRXYzZVVyTFI1UzExbk1nNFFLR3Jmd2Z6dEY5MEo5L0ljVUdpeWlseGdFTmNiRGZGR1doS1QrZldZT3gvN3hBNXhDa1A5ZEM0MzdTTmFGejExS2hlWDdZTEFSUVlXM003dXNuMEhySjQzUTlTZEI0UDRVY211aFBvT3NjNE9LUFUwTm5nbWNCTnVmOS94WmcwdmJKWWwrOWF2YkdxaDd2S1d2eWs2YkxRdHZsVCtNd1ZZWkF6K0ovRHl4RkE2LzhzUnYvb0lyYXlOV3YwekVxbFRwK1pncEN6RTVoQjBjUzF1ODd2NEt4VkxreWgrY0pkUCs2Q1NCbUpLWjNSMXkvUWsrY05vckNxYkhyVWRQZHRKSjlMdmtLSW1kMkJUeXJLL3N5ZTc0RnRHKzZidmFPVGdpaUNzUm9Fc0FQbXhWLzJxS3l3dnBxWlRuQWtkSVBIRGlFM1h2M1lzL2VmV1FKV1k2NlhwWncwMTZEK3ZWRmxBMFdMUllqT3p1cVp5ajMvTno1ODNqbjNmZngxTGhuc0duekZxV2Z5azVFd2VCWVlkemNtRU8xbmNEQWdBSkZxeXpoaUNCSGpoN0ZuajE3c1hmdmZwdzZmVVpaVTNwY3VPRFV1dE5GY1lYRzBYS2dYN1lrdENxcW5YTU5uL0tGZVlRaDNET1UvdDVLRVo1aGNLVWFOaktTRUVOV3pJSXo2MkQzYzArY1RZcFM5bUlLbHgwOFVTZlV0RStWTTZwN1JxQ1pYejAwOXExak9mblZRWVJmQTFUajN6Q0RvK3E3cTZpRzYwU0ZHYjFVQTVjOGdVLy9tNmVzdFl5VFBaMHIvemFkazNHY1NyWkk2dEw1VktOek5KeGJPSjBiSjFIdzgxeEVKSTc2WmNyNTA5OXE5SjJ2aTcxQmRBZ05GMUQ4RzdTTnVRVmFtd3JyUUk5d3NhMWhIOVU5dzBuMzlmY0NhaWNFdTFjVDE5VndIS0cwZnovNnl6WDJiMGg4WG03M3ZDak00UnFJV1FmL3dMdVV6RGtVZnc0Ti94cEROOXBIRkd5dmRYeXhSS0xGTEwrMEUrZFM2SDZxWFZIWHB4YWFGbkMvV3ZqWFI2aTRYczQ0ZEdVZmR0dzRwZXpCRkExSG9sR3VwNnVUajlqTzB2NzBxVGJxMHpQUTFxdUdSY3Z5eVQwejlLSkZ2eGxBMTQydnBlRzZHYWRJV3U3RTE0SXNqbWl5UUxkRUgxSDJZQXJQbU03SHhjK0hLMVhFQ29PdE8xZkQrMEhubzNhd1hLUnF1Q0lrbmprWHF1TjRvRTFBSXd2bldRY3QvUnRRQmRwVDVOTXBNN0JuSzEwZnhnaUxWMHZQQ3YydUkvMXVJN28rVGZ6cVd0eW5TTFEraUNvU1RoYW1PaEh4V05YNlowOUYrd3IzTW5vMmxSUkIxNDZ2VzI1R0lxN1FjL2ZSem1rSVd2QWdXV3VtY3h0V0ZKVm1jZjJ6WWlXMmI5K0o1T1FrWWNYd0hEdzhxV0tuVGgzUXMwZnhaNHExMXVKaUxsKytJcndNMVNSaWJWcTFSTnQyYmJCcDAyYlJiOFdEaHRtZG5mL3lnT2I0K0RnMGFkSVlIVHQyRUdPenB0TnZPTkROYjlHaUdlNGViamx5TlZNV0ZsZHNUQ3grbXZVclltTmpoR0RxaFZhTDRHcUJlSGE4OWZOTUZjU1FEZTlqeVlWTlZKbkt3N3N0SDhPa2h2a2p1RWVseHlOeThTTmlyakYzS3JUKzZmRXVhbEROTjl1b1ZzWUY5bzJzWkNSbkpLRGppZ25DK2dDdGozUVB4WkhCMzBGNzAxclJRMmVDWHF0ZXg3cW8vVndud0dMYVo3K2dsa2pQS2RpWlJVYzFRYlptdUhuTm1JU3NOTFQ1NTNtY3BGcWpLTHlZdERqMGoreU9aZDNmMG44M1krTEIzL0hoL3RsQVZoSldEWmlPWG1RaE10eU14RTArakVHQytOdzBWSkQ1L1RaUWlLTW5mVDg2ZEJaeUtTK2ZCMk5vWGdsenZoVnE3SnVUSy9EMGxzOW9CL1o0cHU1Z1RHMzdqTElHdUVxL3dVMWF4Z0djM2FnUzBYbk5xemhNWW9QVTY5ZzZiQ1pxdUZVVCtRem9tN2s4YmphVjNiZnhmY3cvdmd5Z3docnBjWmpUN1cyTXFONUZyR1BjL2hpS0ZMcHZ5RXpBbUlZak1LdGR5V1lYWnQ3Yyt4UGVPekNiTk5VTHEzcDlnTFkrdFVVenJURjhGZHlvTnY3MXNVVjQ3bTk2UHVrNVdUMXNObm9HNW8vNi84ZTVqUmk1NWpVcWZEM1JNNlExVnRPeEoyV2J6dFpnREY5akRyM21UcFdUbXpkSG9kYmZUK0UwV1lUUXBlUFBuaCtqSzRsZ09vdTZHVjRrUmlPMmZvbmxGN1pRSlNzQk0zdThqYkUxOGs5YStjV3hKWGhwMTNUNjBWd01qZWlHdjdwT1ZOYmtoNXROdTY5OEdkdlpnczVLd2NsNzVxQVczdzh6Rmw3Y2pyczNrT1ZHeHg3cEhvWXo5RjZZbnk5ZlAxZXlBQmRjM0lJUjY5Nmg5MGlOMXQ0MXNiN3ZaM0EyV0dvS3FkbHBjUDJoUFZsSkVZZ2tJVnhEZVFMb1duSmc4SUxnNW41dnVnWjhIWTI1U0JXUzhOa0Q2RGtLUWh1cUhNenROZ2txZXZJTnp6ZkRRc210TDZmb09vOWErWXI0WFdURVlVeXRmcGpWaWI1WE1KVmljZjI1NEMrc1diT1dCTUJlTk04NXFsVDAxeGwyOW5aWXRHZ3BsaXlsbDdHWThDVXVyZ1Rua1Jpd2FBWUdCT0RlZSs3RzFDbGY0cUV4bytEcjZ3MjFXb1hPblR0Z3hveHZNZjdwcDlDVXhJdUQ0cklqQjFkMmlrTko2Z1pSMTY3aC9ROC9RVXBLc3JoR1BJMERKN1lRcjBWRlkrS2t0NFhZVnloY2NGSnRrUHNJUXAxOWJxWnF6dDVvVERXeURvRk5jR25FZkNxOHlKcWlGL0JzOUNFc294ZTJVT2phZUd2Y29lSUtBeFY2QlNWKzRjeEZ5NVE4dUhPQnpnVzFzeGVXbjF1UGFvdkdpbGlUMXNKQ0VrYm53OG40M0h5NU5tMG9FT2laQ2FKcndNc05lVml3akVXcktJS3A4STl3OGJ1NVBTZFBqVFBFMmZHalFvV2hMMTFqYmhJenpzUGJHUGZ2ek92eUJ2clY3RVdpUldKTCtlOWYrU0kyeHg0VDY3ei9ISWtVYnZMTVRNUXp6Y2VXU3JRWThjZ3J6NzBQVldBMGRDL003NUVISlM1UVJrVDBRTlN6UjVFM2JyOUYwYm9GN1pEdXY0Z0RTcGp2enpoNTBEUEZmODNLWElIKzlhSVY5Rzd5c2ZIOU1yNXVoc1Npa00zUGc5SVU3RmdweFIrMzd1Z3RxUHpuNkVUUG9CMWFrNFhFMCszeis2YnZTN1J3MGtZNDBucC91di9POUd5WTc5TTQ4YlV4RnkwVDZFTHk3NFU0ZVpzODM1eTR0YU1OV2RvUDF1aUp2ZmZPcFdmdUJsbG9udmpseE45azJaZmRwS0xXVXVGM0xqYm1PbmJzM0Ntc0dnN04xS3BsQzl4ejkzQzBhdFVDU1luSkNBand4NFlORzVHU21xcHNZUjN1N201Q0NJc3JFdWI1bXpadGdtZWZHWS9YWC9zZkJ2VHZaM0tiaGJkaTRjOVFQbmp2M0pkV1hKYjl2VnhzeDAyYVBMM0M4R0ZEaElYSHg4dGlxNlBseTVmL3ErU3VHTGpXVzFpTmpnbHg4c0Y5RVZUcjEyVlFZZXFCNzgrdVVkWVVnTDBEVmwvZGo2Vlg5dUJQRWpsRG1uVnVBMjVrSmltWnJJQUsrL1pVTzUzZmRSS1FlSmwrMngxWEV5OGhiTUVvSE9iYWVCbFNYdFVGUS9uTE5hT2lyck9CSmQzZlJhZmdsbnJ4SWd1dDI2clgwR25GaTRqbmlRU3BnTzVSdlJ1bXRuaFV5VjF5UkZHYlo0ZGNPcjVmem03QWRMSW9wNXhZbGk5OVJlblBTMXV4NTRZMVRkcDB4bllPdUVJMStWWFhEcHJjLzkvT2I4Slc3amNxSmpuY1gxWUlUOWJzalovSkV0OHg3Q2ZjeTg5cEpjQ2lYeGhhRm5LdWdORnp3STQvaFpkb2Rrak95NlpydGswNGZ4aGZ3NWxuclo5Z1UwQy9aODA3M3NpN0Jqb0d0NkNIZ2l4dXl2dGZmUGtHZDdCRWhUY1ZybHExQml0WHJSWjlUZTNidGNXQUFmMlVOY0JTc3JSNGluNXVYdU41ZDlqU3NPYncrRjNuWER5SERZL2hxbGt6MHFxbVFyWmcrQmg0N0pVMVJFZkg0TlBQdjRTR2pxMTU4OEtiQ3E5Y3ZveFBQdnRTZUMveXVYS3k5bHk0R1lySGhMRlFlbmw1NHZISEg0V3JNbWZWeFV1WDhjTVBNMit1ZTNyY2srSTZsWVRpTmhXeUpiVzcveFRVY1N0OHdydTNEczNGdS90K0loUEdFV0VlSWJnd2FJYXlSbzlKVTZGYVN3VXNpWnhKc3hOZGhkVHJXSFBQNytnUlVQaWNVamViQ2hQT280bFBEUndZK0MzV1hEdUV2cXRlSllIaDYyMFBCeExSUmIwL3djQVFLdUNKMXcvK2hvLzIvNXF2cWJBdzdIN29SRFVRYjNqbTV1SDZnMHVGdDJCaEZOWlVXQkRObGorTEE5eFVtSHdOUng3NEMvVTlySitnMFgvQlNNU214bEwxbTU0RmJsNmtjeDVNb3JXNEVDZVo0dkQ1c2NWNGVldVh3cG9WOTBxeEdpekNsNTJPSVlBc3kyc2ovdFF2TStObVU2RnJJQjByN1UvSHpXYUc5NFB1ZjFZeVdaTjlzTHpIdThxeWdxbTU5Q21jU2J3b211cFc5NTlHVmw3eDUvc3lwbHliQ2ttMFhGUXVlRGl5RzVMb25QbDlOOEJuei8yaEs2N3N4Zm5rcTdRZ0QrM0orbHJiOTFPOW1CbHhzNm5RcXdaZGE3cCsvQTZaaURidG1mYVJSNVp2VVJnM0ZiWWxVVnJmNS9NQ1BTNE5QTHJwWTh3OHY1N3VXeGJHTjd3UDAxby9xYXlwR0NyYzRycDA1WW9RSlhZM2J0MjZsYkpVVDlldW5VVGtDYllvMk5KSVNFZ1FrOUVWbFJLVXY3d2R3OXRXTnRuWk91RXF5eEhyOVc3MzFwOUxVbEt5Y2cxMHFGZW43azNSWXNKQ1ExQTlJbHlJSUk4ZjQzMVhOYmpaVDdTbjBqRnlNMGFoVUI1M2pRZjhxQUR6Y2ZGWGtoOGMzQUx6OVkwVkJkZE8yZVdYQzY1anczNUdPSGR5NTJRZ1IrT0NRU3NuWU1KZUVsUENpZnZnaWpnc1crUHFzRjlSejd1V1VuamxvcVYvd3pJVExXWkVSR2QwRDZIM05ZT3NZTEtRdUIreHdKU2RJaXplYUJMU2IwK3RWUFpRQUhUUEhLaVFES0Q3ZmV2KyswUGpHZ0FmZWk1dU8raTlUcVhyOC9XK21aaDlhQTUrK1c4K2ZqbitONldsbUUzcDJ3Ty80M3pjYWIwWXBjYWdKUW1YdVdpWnd3NUt2dlRPR0Y4L2ZvZEExN1M4dUZVRjUrYkZpbTl5cmZCZjFHcWNoTFdRUXlibTFhdW1YbWM4SmI4OUZWYjZRamtGOGZIeHhVb3hNVEhDVTdGZS9YcktIaXVQaU9vUnlNck1GdWZJa1Rzc0hXOUJpVU5Gc1RjaE80amNpS09Dd0FqMmJ1UTg3TTNrNktpNktkWlZpZlAwd2dtb3h1cGZWT0ZEbHR4M2JjZmp5S0J2c1k5cXkvc0c2Tk9KNGIrZ2xSVmpzZ3FpRmhWOE84ajZhdXBEaFhsR0lxbVZOeWJ2bllsM3lScmtEbS9qVis5MndKR2VsVDdjWk1qV0VGbWhvcm0yRE9GK2o3Vjl2OERCWWJPd1kraFAyQ25Tei9uU3Z1R3pNYi9uaDBCbU1oWFNLcHdoNjdGUWNqTFJNYUFoVGcvNTBlaitUOFV4K3Y1Rnk5STNjWm96aWNTQzB3VzJUaXNEcnN3NmFOQTFzaWZhVmUrTUduNE42QnBrVWNGSWxTeXl4TnFFdFVPdmlFNW9IOUFNbjNaNkJSKzFHS3RzV0FCVVVhbXU5Y0NhWGgvaDBNRHBOOThmVGlmdnp1OXBXaGJ3bTNPYTMzSDJsTXpSb1NZUGFhaGdLbHk0V3JkdWp2VDBETkZNOS9leTVUaHk1S2hvNG91S2lzSjMzLzhBVDA5M0VXUHc0WWZIWU5yVXlaajh4V2VZL0tWMTZZdlBQOEhQTTc5SEZ5VjZSV1h6dzR6cG1EcmxpMktkdzFlVFA4ZEhINzBuUWxYeEZDMTc5KzhUVGF1SlNVbUlpNHZISDNQbUlTYjJ1aEQzOFBEUVlrL25YVHFLTHV3M1JSL0Y3NmRYNlp1c01wUHdmSjBpbW1GejgrQkxMNTZmeGgxaExub25CMDdzdWFpMjRMcGJITmlKWlArZzcvQmcvV0ZrQ1pDVjRPcUh0L2JPd0FOYnY0UWR1ekRmWm1TSnNVRjBqNmhTazg1OUpHWElwZFRyV0JkOUdIWlVVTGJ4YjREV0pEYXRBL2l2YVdybVZ4ZDEySFZhT01YWUM4TzdZUFJXT2ZmNXNPT0U4ZjJ2VGxhREh6MFh4WUpPdmFnbmRQK05NM2gvKzJSRVRHK0dUNDVZYnNZMGdZNnZNSGh0RVZsTXljMUNiWmNBck8vMUFiYjEvcFFFZXdiR043eWJyQ3NTVXJwWU82T1A0T2MyejJCcjMwL3djc043aGNORmtlVHFIWDZDcVhKaHVINmNhcFhBNHVKeXBhalQrZWJFQ213U1l6RDF4M1pYSlF4SXJuRGhpcXhlSFJIaFlhSTVqOVBzWC8vQXQ5Ly9pSyttZmcxWFZ6Y3hkeFhQb2RWQXNacDRwbUJ1YnJNbWNSTmtWVU1jV3pIT2dTMG85bDVzMmFLRmFETDA5UERFbWpYcjhNMDMzNGs0aThlT0hZZXpzek5TVTlMUXFZSUZtdDNDZzUxOWxHK21KRk5CT2ZuRWNneGYveVl5dUhNM054UHVya0hvRmRSQ3lXRUpla1hvWmZVcjV5YWhYOXM5aHhlYVBRU2tSSXZ4S25HWmljaXJoT2FOQ3FVTW0wSVRzbEpRYjlrNDlGanlPTjRxWW93Y2Mrc1p5VVcya1R0L1FiaFlHQVJjSEc0NkU5aFJaWTRFcnpCOGVieWZrNjhZdU92RFk1Y3NvTzhiWmZMZ3g4M05oY0JqdnJ4VXQvcVllWEI5VWFTWkRUNmUxdlpaVEd4T3oyZkNlZEdVR0RMM0hueDFaS0d5dG1pY0hWWDBEcFZCQlphT25TT3FpSEZzRnJpUWRoMFQ5LzJDOGR1NHI1UEhiU2FqWjJoYjFQUUlVWEpVSEpVeWppczlJeE5UcGs0VEE0NVZLaDRBTElvdzZMSjFZcXpVaXhPZUUyN2Y1VVZGT0dlVUJRc1dMc0xPbmJ1RW9BazNWdnFmWGVDNUdmR2hNYVBScUZIaGpndEZNWFREKzFoY2hIUEd0ZlI0VkYveUtESnlsQUlvUFlIS0k3UENpRzhnVzBmY0ZzK0ZFTlcydWR4YzN1dGozR1VVNnNpQWNNNVkvVHJXWGQwdkJvM3lPQ05rRjJJaDhNNHlVOUE4c2h2Mjl2dEt2MHpCMkRtanNVOGtOdmI5RXA2OFR3dXNqanFJM3Y4OFErTGxTc2RKZVpLdll2V0FyOUd6V000WndQVUhsMWpwblBFNVhSTjJ6aGhVN3M0WnpQamRNekQ5S0JWNE9abDBQNS9BcE1iM0sydEtSMnAyQmx6bkRxZUxRR0xQSXNIOVhEY0xkd3VvTkdDUFVtNHUvS1QxZUx4U2Y0aXk0aFo2NTR6WDljNFpQSjZwcUgzeTd6cHFjR3JFUE5Ua2JZeG90ZXBsN0lrNkxBYkk4dmlzQXA4bGZrNTUwTE55NytmMC9rVDAzWmt6OWVRL2VHNGJQV2M4R0p5OVk5TVRsVFVXNEd2Q1lzaVdVVW9NVHR3M0Q3VUxkTTU0bi9MbkljSXRCT2ZJMGpKbkdvblZzOXZwZDFuNFUyTFJLN0k3VnZXMEhMVkQ3NXpSZ1FTNGhuamZ4SGtYTmp5R3p6MGxDa2NmV290NlhoSEtRajNDT2VOWEtnTzlxdE8xby9PbGloMDNhWm9nK3EzcEhXZFJFOWM1Q1NGYUwrd2ZQa3MvWEtTQ3FaUnFwNU5XZzFkZmVRbDkrL1JHN1RxMUVCd1VoRm8xYW1CQS83dnd2LzlOS0ZmUnNpVllHTWVPZlFqTm1qVkZjTFVnVkt0V0RSMDZ0TWZMTDcxUWF0RmkwdmlsNUFLRFJFR01iN0dBamtRdGc5YUxmRHoraFpzSCtNRTFUb1lhSjY5UGloSUY3dW8rbjFzVUxZYXJTdW1jTnl0Wm56akVqZmsralJNTEVmMjFGTjJESFRMU3NsUHBISktRbHBVdVBESUxvbGRRRSt3YzlLTVlFd1IyRjZkdHJMRUlCSHljVkJDbmsvWEJ2MWtVNG5wbThiVk5RcWFWelhicFhJRHpFQUJLdWlMY3VpMGhCaHZ6Y2RLOTRyaDVaWVdMU2l1dUhaS3UwQVVuYTBGTjk5djhIaGtudnAvYzlFWDNZMndOeXdQdnhjQnE4ZXpSOFZxelQzN0dTTGdjUkRna1U1NnEwUWRJdktDdlZCWDJMUEUrdUFLV1NwWTM1ZXZBL1VzV0dCTFNXb2cvTzBlSVBrTkwreklranFqQzF6M3hDa0pKRUlJS2FKSEk1UE1WejFBU1V2aDV0Y0F6RFliajkrNGtWQ0o4bVJOV2s0Q0dMUmlKeXhiNjQ0Uzl3ZGRQdkpmMDNJaElMUmFPejVENDNDazUyT2R2ZmhmRGZQZys4TDc0dkxueWFiNDlMeVBSRmZtb1l0VS9yRDEyRC8yeFVrU0xxUlNMeXh4dU1sU1JWU0ZxQlJXQXJWaGN4ckNWeGJEMVZWYThlM2dlTmtZZjV1RTVlS0ptSDl3WG5qOG9Lc2NDZkdUSE5ORi9vaTgwOGo4dUxCWTEzQUpGUU5LQndhMUU0TStDbWhzWWZ1SmVQVEFMKytMT1VqNk9DRkRVSTJpSHRKd010UFd0aC9lYm1NWXFUS0VhNHZQN2ZzUTVlcG5ZRGZuejVnK0wvcExDWUF2aWdXMmZJeW85RHQrMGVnb3QyWUdqRVBnVjZVUVdvaWU5d0Z6VFc5UjFJbGxjaGRmNWxsM1pnOCtQTFJMRzRyQ1FkbVIxRmYyTVBiUG5CNXdtUytCNlJpSVdkSDYxeUdZdmM3NDk5Uy8rdXJoVnVHZy9WYnNmSHJCZ1RaUVVkcWI2NGZRcS9IMTFEL2RjaWZNcUNMYW82N3VINEZGNnBtcWJ4Y1V6c0Q3bU1DYnVudzAvcmFlK0VDNFVPK1RRZnlxcThmL1E1bW1MZlYrcnJ1N0ZuUE5iRUoyVldPakE0aXlxRURUMkNNTWpOWHFpVGlFVzdTVVNyVStQTGhLQm9JdXEzZlBZc1M3K0RUQytkbjg0R3lweFpteUxQWWIzRHM4WDBVOUNYZnd3cysxNFpVMSs1cDdmaU85T3J4YURoamttb2IyOUE5YWF4VXZrWjdqajZ2OGhqSjRScTRwd0tsdGowdU94c05PcnFPWmlPbGcrS2kwT0F6YStpeEJudndMM3hYRmlHbnRXUnpQUENIVDByMHNDN2Flc3FSeXFoSEJWTk5ldVJlTXpFaUFXcms0ZE82QS9XWHJXd0I1K0gzNzRxZWhMNHdIVHc0WU9WdFpJSkJLSnBLS29sS2JDeXViUXdVTkN0Tmg2dVVUV2w3VWNPblNZdG1NbkNnZEVSVjBUbG9ORUlwRklLcFk3eXVJNmMvWWN2dm5tZTlFaXlRRjlHUjdBZStYcVZZd1o5U0M2ZHJYY3RITHA4aVY4UGYwN1pHZGxDK2NSaHNkVDhTektEOXgvSDNyMzZpbVdTU1FTaWFUOHVXT0VpNzN4WHBzNENSbzE5Nm5ZSVRFeEFUcU9TTy91TGtJbXhjZkZZOVRva1dqZXJLbCtBeU5lZmUwTllaM3hnR0NPZ01IYnVibTZ3Y1dGdG90UHhMMzNERU83ZG9YUEFTV1JTQ1NTc3VHT2FTcWNOKzlQc0JjQzZ6UVBjcDQ0OFZWTS9lb0xORzdjVUl3ZGMzTjMwK2N4WTlIaUpkRHBjc2hLc3hNQzk5cHIvOFBYVXlhalRadFd0RjJtQ083NzE2SWxTbTZKUkNLUmxEZDNqSENkdjNBUldxMUdoSko2Y2NMekNQRDNGMWJVL1NQdVExaFlxQkEwbnNhZm8zZ1ljK2JNT1RnN080bkJ3Qk5lZUJaQmdRR3dkN0FYamhrMWEwVUtTNDZqM0YrTnNqeHBva1Fpa1VqS2xqdEN1RmhZY25OenhIZ0ZiNS84cytoR1JFUUlsM3duSjYzbzd6S1FucEZCd3FRVDIzRWtkbzd3Ymt6TkdqVkZYNWRhcmMwWGQxRWlrVWdrNWNNZElWd2NJb2xuTGVad1NoeXRnNXNHalRsMjdKZ1FKWTZoR0I0V3BpemxnZEphcFcvTFFjUUo1TWp0eGh3NWNrUnNsNW1aamtnU1A0bEVJcEdVUDNkTVUyRm9TSWdTQjlFVFU2ZE5GOEY5bzJOaU1QT25XVUtVdUtuUXc5TWozOXhXa1pIVlJkQmZqcDg0ZmZwM09IandNR0ppWS9ITHI3L2p5cFVvMGZmRk1SWXRXWElTaVVRaUtYdnVLSGQ0OWc3a3VXdDRXbjRXTVo2R1grdWtoWW9zc1lUa1pJeC84bkhVck1WVFhwankraHR2aW5uelRMYlRhc1JZc1BqNEJERnBKVHQ1U0NRU2lhVDh1YU9FSy9aNkxINytlVFl1WExoSVZwS3JzSll5TWpLRnRmWEkyREVrUG8yVW5LYkVKeVNJN1U2ZlBnTTNOLzEyM0xmRkV6MCtOR1lVV3JTbytMRCtFb2xFY3FkeVI0WjhPbnJzT0k0ZlB5N2MzRU9xQmFOeGs4WW1zd3dYeElrVEozSGs2RkZrNStRZ3lEOFFUWnMyZ3J1NzVha1JKQktKUkZJKzNKSENKWkZJSkJMYjVZNXh6cEJJSkJMSjdZRVVMb2xFSXBIWUZGSzRKQktKUkdKVFNPR1NTQ1FTaVUwaGhVc2lrVWdrTm9VVUxvbEVJcEhZRkZLNEpCS0pSR0pUU09HU1NDUVNpVTBoaFVzaWtVZ2tOb1VVTG9sRUlwSFlGRks0SkJLSlJHSlRTT0dTU0NRU2lVMGhoVXNpa1Vna05vVVVMb2xFSXBIWUZGSzRKQktKUkdKVFNPR1NTQ1FTaVUwaGhVc2lrVWdrTm9VVUxvbEVJcEhZRkZLNEpCS0pSR0pUU09HU1NDUVNpVTBoaFVzaWtVZ2tOb1VVTG9sRUlwSFlGRks0SkJLSlJHSlRTT0dTU0NRU2lVMGhoVXNpa1Vna05vVVVMb2xFSXBIWUZGSzRKQktKUkdKREFQOEg1bERnam4zZUxYUUFBQUFBU1VWT1JLNUNZSUk9IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiRklET18yXzAiXSwiZXh0ZW5zaW9ucyI6WyJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiI4OGJiZDJmMDM0MmE0MmU3OTcyOWRkMTU4YmU1NDA3YSIsIm9wdGlvbnMiOnsicmsiOnRydWUsInVwIjp0cnVlLCJ1diI6dHJ1ZX0sIm1heE1zZ1NpemUiOjIyMDAsInBpblV2QXV0aFByb3RvY29scyI6W10sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6MTYsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTYsInRyYW5zcG9ydHMiOlsidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN30seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTI1N31dLCJmaXJtd2FyZVZlcnNpb24iOjF9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMS0wOS0yNyIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiSW5uYUlUIEtleSBQSzExMDAiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDIxMTAxODAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4zIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjMifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjEtMDktMjcifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIxLTEyLTE1In0seyJhYWd1aWQiOiIxZDhjYWM0Ni00N2ExLTMzODYtYWY1MC1lODhhZTQ2ZmU4MDIiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjFkOGNhYzQ2LTQ3YTEtMzM4Ni1hZjUwLWU4OGFlNDZmZTgwMiIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJMZWRnZXIgRmxleCBGSURPMiBBdXRoZW50aWNhdG9yIn0sImRlc2NyaXB0aW9uIjoiTGVkZ2VyIEZsZXggRklETzIgQXV0aGVudGljYXRvciIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxMDYwNSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Iiwic2VjcDI1NmsxX2VjZHNhX3NoYTI1Nl9yYXciLCJlZDI1NTE5X2VkZHNhX3NoYTUxMl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2ludGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjMsImJsb2NrU2xvd2Rvd24iOjB9fSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2ludGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjMsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6WyJhbnkiLCJoYXJkd2FyZSJdLCJ0Y0Rpc3BsYXlDb250ZW50VHlwZSI6InRleHQvcGxhaW4iLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQmdUQ0NBU2NDRkZNMVFDRFhnMTIyRjljdldGVm1xZUdYM3RRV01Bb0dDQ3FHU000OUJBTUNNRU14Q3pBSkJnTlZCQVlUQWtaU01ROHdEUVlEVlFRS0RBWk1aV1JuWlhJeEl6QWhCZ05WQkFNTUdreGxaR2RsY2lCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVOQk1CNFhEVEkwTURVek1ERTBNVGswTUZvWERUTTBNRFV5T0RFME1UazBNRm93UXpFTE1Ba0dBMVVFQmhNQ1JsSXhEekFOQmdOVkJBb01Ca3hsWkdkbGNqRWpNQ0VHQTFVRUF3d2FUR1ZrWjJWeUlFWkpSRThnUVhSMFpYTjBZWFJwYjI0Z1EwRXdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBVEs3blh5SDRwZ04zVE13Q1dTb01EUmU0RVY4SmwzWHp1aGljWi8yZ3ZoK3p6M1dtVzBPWi9FY1JZRUE4RjI2Y2VldU1jZDIxV1FSUktXcGpXRCtKV2lNQW9HQ0NxR1NNNDlCQU1DQTBnQU1FVUNJUUQ4SiswL2I4UGVZakZSUVlrVVJjcWhheDI3b2x3MWpZL3Bic2toQnVScDRBSWdPQUhiNm4rN2ZOZmZ5b3hwZUNxM1ZaN0Ixak4zd3FtUE5mbmFlQWpkb1hzPSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFTWUFBQUVBQ0FZQUFBQWVNZHZ4QUFBQUFYTlNSMElBcnM0YzZRQUFBSVJsV0VsbVRVMEFLZ0FBQUFnQUJRRVNBQU1BQUFBQkFBRUFBQUVhQUFVQUFBQUJBQUFBU2dFYkFBVUFBQUFCQUFBQVVnRW9BQU1BQUFBQkFBSUFBSWRwQUFRQUFBQUJBQUFBV2dBQUFBQUFBQUVzQUFBQUFRQUFBU3dBQUFBQkFBT2dBUUFEQUFBQUFRQUJBQUNnQWdBRUFBQUFBUUFBQVNhZ0F3QUVBQUFBQVFBQUFRQUFBQUFBZTZTQ2t3QUFBQWx3U0ZsekFBQXVJd0FBTGlNQmVLVS9kZ0FBQVZscFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWxoTlVDQkRiM0psSURZdU1DNHdJajRLSUNBZ1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNEtJQ0FnSUNBZ1BISmtaanBFWlhOamNtbHdkR2x2YmlCeVpHWTZZV0p2ZFhROUlpSUtJQ0FnSUNBZ0lDQWdJQ0FnZUcxc2JuTTZkR2xtWmowaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOTBhV1ptTHpFdU1DOGlQZ29nSUNBZ0lDQWdJQ0E4ZEdsbVpqcFBjbWxsYm5SaGRHbHZiajR4UEM5MGFXWm1Pazl5YVdWdWRHRjBhVzl1UGdvZ0lDQWdJQ0E4TDNKa1pqcEVaWE5qY21sd2RHbHZiajRLSUNBZ1BDOXlaR1k2VWtSR1BnbzhMM2c2ZUcxd2JXVjBZVDRLR1Y3aEJ3QUFENjVKUkVGVWVBSHQzTHVPSkdjVkIvQmQ5bUlITmhMaUloT1FPRWFDQ0RraUlDTkc0ZzM4Q2p3SkNRbENCQVNJQk42Q2hBZ0pKRVJpSkF2WkFveXhmRm52aGUvczlKRnFlM3RtdWs5L3A2ZDY1MWZTTjFWZFZlZFV6YTlxL2wyOTlzeWRPM2Z1dkQvR3N6R2ViT2F4Ykt6WDROSG0rdnhxekdONmNESHpkU0Z3ZjdQODh6R1Blem5OM05mcnZhL2oyanpkWEs5UHZ6SVdUQVFJRUZpVmdHQmExZVZ3TWdRSWhJQmdjaDhRSUxBNkFjRzB1a3ZpaEFnUUVFenVBUUlFVmljZ21GWjNTWndRQVFLQ3lUMUFnTURxQkFUVDZpNkpFeUpBUURDNUJ3Z1FXSjJBWUZyZEpYRkNCQWdJSnZjQUFRS3JFeEJNcTdza1RvZ0FBY0hrSHJndEF2RkxvcVl6RVJCTVozS2hGcWQ1ZDdPYzg4VW1pNWNJaEJXdlMzRFd1RHIvUE1ReDUrYWQ2Qmk5dzJ2VE8rZUhkN2c5RldtVWYwN2o5bnpuTi8rZEh2VkdFTVh4OTVpK1BVWmN2SDJmb1BLQ1IvMVB4L2pqR0crT0VYL1Q2YWdUR3ZXbXF3WEMvdDRZL3hranJsMTQ1L1VZaTZZaGtDWnZqZVZ2alBGNHMyN01URTBDY1EvR2c4N0hZM3gvak4rUEVWT3MzemNUY3QvUFpqd3gvV1VjK0wwNEE5UEpCZklIOE9RSFh2a0I4d2IvNXpqUEdLYlRDanc4OW5Bemd1bU56VW5FeWNRVGs2bGZJQUlwbm5Cam1IWUxSRGpGSjRBWXNXenFGNGkvcHZyNUdKa0o1U1BPQ0tZTW81am5jdm1FRkJLWUtDQzhKMkx1MFNvL3NzVkg1Nk9tZmY5TjZhaURLQ1pBNEZZSlpFQ1Z2Mm5CVktaVFNJQkFsNEJnNnBMVmx3Q0Jzb0JnS3RNcEpFQ2dTMEF3ZGNucVM0QkFXVUF3bGVrVUVpRFFKU0NZdW1UMUpVQ2dMQ0NZeW5RS0NSRG9FaEJNWGJMNkVpQlFGaEJNWlRxRkJBaDBDUWltTGxsOUNSQW9Dd2ltTXAxQ0FnUzZCQVJUbDZ5K0JBaVVCUVJUbVU0aEFRSmRBb0twUzFaZkFnVEtBb0twVEtlUUFJRXVBY0hVSmFzdkFRSmxBY0ZVcGxOSWdFQ1hnR0Rxa3RXWEFJR3lnR0FxMHlra1FLQkxRREIxeWVwTGdFQlpRRENWNlJRU0lOQWxJSmk2WlBVbFFLQXNJSmpLZEFvSkVPZ1NFRXhkc3ZvU0lGQVdFRXhsT29VRUNIUUpDS1l1V1gwSkVDZ0xDS1l5blVJQ0JMb0VCRk9Yckw0RUNKUUZCRk9aVGlFQkFsMENncWxMVmw4Q0JNb0NncWxNcDVBQWdTNEJ3ZFFscXk4QkFtVUJ3VlNtVTBpQVFKZUFZT3FTMVpjQWdiS0FZQ3JUS1NSQW9FdEFNSFhKNmt1QVFGbEFNSlhwRkJJZzBDVWdtTHBrOVNWQW9Dd2dtTXAwQ2drUTZCSVFURjJ5K2hJZ1VCWVFUR1U2aFFRSWRBa0lwaTVaZlFrUUtBc0lwaktkUWdJRXVnUUVVNWVzdmdRSWxBVUVVNWxPSVFFQ1hRS0NxVXRXWHdJRXlnS0NxVXlua0FDQkxnSEIxQ1dyTHdFQ1pRSEJWS1pUU0lCQWw4RDkwZmpMVGZOSFkzNXZqR2ViMTNkM0xDL1h4VzRQRi92RWE5UHBCT0phUEJnanI5Y2hSODdybU5mK2tGcjdFcmhPSU83SnZMZnkvc3g3TG1xWHk4dlhzZS96VElvdjM0d3RZM3I5WW5idzEvamhNSjFXSUM5c3ZKbVlDS3hGSU83TG1DSlhqc21GcjBhRFg0OFI0UlEzK2I0ZjdUSUY0K0FmakJGVHJydDQ1V3VYUUliU3Q4WUJmanpHNDhXQmNsdXN5cHRrZVYxeWUxejMvNDd4aHpHZWptRWlNRU1nNzZWL2oyYS8zVFNNK3kvdnhldU9FZnRHQm4xeDNZNzdidC8zd1B2MnM5L2xBdkZ4TzZZZmpSRVhzam8rSExYeFVUd20xKy9Dd2RmakJhYmNTL0hPR1FsMVRMTkl5ZmpoTUoxV0lKK1U0ck44WEw5OXIyRmNyM2pTL1dnTTEyMGdtS1lLNUQyVmI2Q1Y1czhpbVBJZHQ5SWdhdkpFcXZYcWpoT0lHMkRmVUZydXQrL0g5dVBPVHZWdEZjaVBkYVh2UDRPcFZLeG9WUUxMMExucXhISy9uRisxcjIwRXFnSkhQYkI0MTZ5eXF5TkFvRTFBTUxYUmFreUFRRlZBTUZYbDFCRWcwQ1lnbU5wb05TWkFvQ29nbUtweTZnZ1FhQk1RVEcyMEdoTWdVQlVRVEZVNWRRUUl0QWtJcGpaYWpRa1FxQW9JcHFxY09nSUUyZ1FFVXh1dHhnUUlWQVVFVTFWT0hRRUNiUUtDcVkxV1l3SUVxZ0tDcVNxbmpnQ0JOZ0hCMUVhck1RRUNWUUhCVkpWVFI0QkFtNEJnYXFQVm1BQ0Jxb0JncXNxcEkwQ2dUVUF3dGRGcVRJQkFWVUF3VmVYVUVTRFFKaUNZMm1nMUprQ2dLaUNZcW5McUNCQm9FeEJNYmJRYUV5QlFGUkJNVlRsMUJBaTBDUWltTmxxTkNSQ29DZ2ltcXB3NkFnVGFCQVJURzYzR0JBaFVCUVJUVlU0ZEFRSnRBb0twalZaakFnU3FBb0twS3FlT0FJRTJBY0hVUnFzeEFRSlZBY0ZVbFZOSGdFQ2JnR0JxbzlXWUFJR3FnR0NxeXFralFLQk5RREMxMFdwTWdFQlZRREJWNWRRUklOQW1JSmphYURVbVFLQXFJSmlxY3VvSUVHZ1RFRXh0dEJvVElGQVZFRXhWT1hVRUNMUUpDS1kyV28wSkVLZ0tDS2FxbkRvQ0JOb0VCRk1icmNZRUNGUUZCRk5WVGgwQkFtMENncW1OVm1NQ0JLb0NncWtxcDQ0QWdUWUJ3ZFJHcXpFQkFsVUJ3VlNWVTBlQVFKdUFZR3FqMVpnQWdhcUFZS3JLcVNOQW9FMUFNTFhSYWt5QVFGVkFNRlhsMUJFZzBDWWdtTnBvTlNaQW9Db2dtS3B5NmdnUWFCTVFURzIwR2hNZ1VCVVFURlU1ZFFRSXRBa0lwalphalFrUXFBb0lwcXFjT2dJRTJnUUVVeHV0eGdRSVZBVUVVMVZPSFFFQ2JRS0NxWTFXWXdJRXFnS0NxU3FuamdDQk5nSEIxRWFyTVFFQ1ZRSEJWSlZUUjRCQW00QmdhcVBWbUFDQnFvQmdxc3FwSTBDZ1RVQXd0ZEZxVElCQVZVQXdWZVhVRVNEUUppQ1kybWcxSmtDZ0tpQ1lxbkxxQ0JCb0V4Qk1iYlFhRXlCUUZSQk1WVGwxQkFpMENRaW1ObHFOQ1JDb0NnaW1xcHc2QWdUYUJBUlRHNjNHQkFoVUJRUlRWVTRkQVFKdEFvS3BqVlpqQWdTcUFvS3BLcWVPQUlFMkFjSFVScXN4QVFKVkFjRlVsVk5IZ0VDYmdHQnFvOVdZQUlHcWdHQ3F5cWtqUUtCTlFEQzEwV3BNZ0VCVlFEQlY1ZFFSSU5BbUlKamFhRFVtUUtBcUlKaXFjdW9JRUdnVEVFeHR0Qm9USUZBVkVFeFZPWFVFQ0xRSkNLWTJXbzBKRUtnS0NLYXFuRG9DQk5vRTdyZDExdmdjQk9MNlB4bmozaGpQenVHRUR6ekhwMlAvR0tZekV4Qk1aM2JCSnB4dUJsQUUwbWViZnEveUQrL2Q4VDNtOXp5QlQ0dFRDQWltVXlpdjZ4anhneHJUbTJQOFpJd3Z4NGlQOUsvU0QyOThMNitOOGFjeC9qNkdjQm9JSmdLZEF2R3hLNllmamhFL2dQSGtFMDg4c2J6dk9IVC9mZnV1YmIrZkRaT1lIbHpNZkQwWEFVOU01M0tsNXA1blBqVmxRT1hyQ0phWWRyMk9iY3NuajF6T2ZaOFg3dml5N0prOWNyZmNGcStYZlhLLzNMN2NsclU1WCs2VHk0L0h4bmhpK2lKM01qOHZBY0YwWHRkcjl0bkdEL3p5aDM2NUhNZGF2czdsbkc5dmo5ZTdwcXYyWDI1YjF1YjZuQyszYlM4djk4bmwvSy9OK1hxN3h1dVZDd2ltbFYrZzV0TjdWWDl3WDlYdnEvbDJXRS83ZkdkWnp4azVFd0xIQ2VUSHVlTzZxTDVSQWNGMG8vd08zaURnYWFrQjlkUXRCZE9weFIydlc4QVRVN2Z3Q2ZvTHBoTWdPOFJKQlR3eG5aUzc1MkNDcWNkVlZ3SUVqaEFRVEVmZ0tWMmxnSTl5cTd3c2g1MlVZRHJNeTk3ckYvQlJidjNYNk5vempQK1A2ZGdMNlIzcVd1YldIZmkveUJzZVRGNDB1WWxYUitXS0o2YWJ1R1E5eDh3Znhwem5VUzc3UWQzZUwvZVArWExiY2ptMzVickw1dGtydHgvNmVsa1h5OHZYMlN2bnkrMjVYODV6SC9NekU0Z25KaGZ4ekM3YTVuVHpsM2x6bnQvRjlqdlY5dXZMOXN2MU1WL1dMSmN2MjViNzVEeDdWVjh2NjViTDJYYzVYMjdQNVllYkhmenk3bExxdE10SDVVcGN5TitOOGRZWWo4YUlKNmhER2thd3ZUdkdYemUxOFV1aHBsNkJ1R1p4amI0MnhnL0dpTDh1RUZQK1VGNjh1dDFmNHo2TVgrTDk4eGp2alpGbVk5SFVLQkJ2a25FL3ZqM0dMemZIT1NSUFl0L284WG5VZmp4R3JLaU9kNkxKbUxiZnVTL1crdG9oSUlUMlYyVzF2OVd4ZStZVDZ2ZEdvMnFlUEsrTEo1NlB4b2cvR3BaUFRHUHgyaW1LWTRvVGlUOHhZVHF0UVBqSEQ1dzNnNnZkNDhuSlUvelZSak8zWmk3RVUxTSt5ZWU2Zlk0VCswWW1mUkpmWXNRVTgzMy9NWHg1TU85SXovbE8vaVd1Z1RlRms3TTc0QjRDeXpmTnVFLzN6WWpjOS82K1FiVEh1ZGlGQUFFQ2N3UUUweHhIWFFnUW1DZ2dtQ1ppYWtXQXdCd0J3VFRIVVJjQ0JDWUtDS2FKbUZvUklEQkhRREROY2RTRkFJR0pBb0pwSXFaV0JBak1FUkJNY3h4MUlVQmdvb0JnbW9pcEZRRUNjd1FFMHh4SFhRZ1FtQ2dnbUNaaWFrV0F3QndCd1RUSFVSY0NCQ1lLQ0thSm1Gb1JJREJIUURETmNkU0ZBSUdKQW9KcElxWldCQWpNRVJCTWN4eDFJVUJnb29CZ21vaXBGUUVDY3dRRTB4eEhYUWdRbUNnZ21DWmlha1dBd0J3QndUVEhVUmNDQkNZS0NLYUptRm9SSURCSFFERE5jZFNGQUlHSkFvSnBJcVpXQkFqTUVSQk1jeHgxSVVCZ29vQmdtb2lwRlFFQ2N3UUUweHhIWFFnUW1DZ2dtQ1ppYWtXQXdCd0J3VFRIVVJjQ0JDWUtDS2FKbUZvUklEQkhRREROY2RTRkFJR0pBb0pwSXFaV0JBak1FUkJNY3h4MUlVQmdvb0JnbW9pcEZRRUNjd1FFMHh4SFhRZ1FtQ2dnbUNaaWFrV0F3QndCd1RUSFVSY0NCQ1lLQ0thSm1Gb1JJREJIUURETmNkU0ZBSUdKQW9KcElxWldCQWpNRVJCTWN4eDFJVUJnb29CZ21vaXBGUUVDY3dRRTB4eEhYUWdRbUNnZ21DWmlha1dBd0J3QndUVEhVUmNDQkNZS0NLYUptRm9SSURCSFFERE5jZFNGQUlHSkFvSnBJcVpXQkFqTUVSQk1jeHgxSVVCZ29vQmdtb2lwRlFFQ2N3UUUweHhIWFFnUW1DaHdmMEt2RExkN0UzcHBzYi9BczdIcjAvMTN2NVY3eHIxNTkxWis1emZ6VFVlZVBCN2o2Q3lZRVV5ZmJBd2UzWXpGclQ1cS9OQkZRSmxlRmdnYndmMnlTK2VhSjV2bUh4OTdrQm5COU00NGlZZGp2REZHbkpoM3FJSFFPRVVRUFJqai9USCtOb1p3R2doYlU1cThQZFovWjR3dngzQmZiaUZOZmhuM1plVEovOGI0N296ZWNZTkgwd2lWbUJ2bllmQ2JjYTFpaXBBeXZTaVFiN2kvR0t2ZHorZGpFRSs0Y2IwK3pRdjQ0bVU5N0ZWZStNT3E3RjBSaUhmOWVQZVBKOVF2S2cxdVdVMys4MExNWjl6cnQ0eXYvTzNHZlhyVUUrcU1pNVVua1BQdDd5YUNLN2ZsY3N4aml2VzU3dm1LSFY5MmJjOTF5ejdMMHR3ZTY1YkwrWHE1Ynl4dm45LzI5bmlkeDRybDdmTmVIaU9YdCtmYlBlSjFUTXRqWDZ6WnZTNzN6ZjF6bmpYbUx3dWtVY3lYeTNsdG9pS1dZOHJ0eTIwWFcxNzh1dHcvOTgzNWNzL3RkZms2NTFmdG05dGkzNXppL1BMMXZ1ZWF0WWNjTTJ0eW5yVTV6L1V4MzdWdXViMjhQQ09ZNHVBSnRldEVsdHR5T2VmWDFWNjJQZXR6dm4zYzVmcmw4bVg5c241NzMxeS9xMjY1NzY3bFhKZnpYVDJ1Nm4vZC9zdGF5OWNMWEhZZGx1djNNVi91bjhzNVg1N0Y5cnA4bmZPcjlzMXQyL3RlOXpycnR1ZmJkYkY5MTdydHV1Vit1L2JmdFc1WGo0UFg1WC9xUDdoUUFRRUNCTG9FQkZPWHJMNEVDSlFGQkZPWlRpRUJBbDBDZ3FsTFZsOENCTW9DZ3FsTXA1QUFnUzRCd2RRbHF5OEJBbVVCd1ZTbVUwaUFRSmVBWU9xUzFaY0FnYktBWUNyVDNWaGgyLy9VZG1QZmtRTVQyQktJLy9NNy96UkV6cmQyOFhKbEF2SEwxbkhkNHRjQlRGY0xwRkhjMis3dnE2M1dzRFd1Vi93dHA2ZHhnNysrT2FOWnY1NnlhV2ZXSlBEYXBtLzhJcS9wYW9IOHl3dHBkdlhldHE1RjRQVUlvMzlzenViek1mZlJiaTJYNXZMemlMOFErUFV4UHR6c2trOEZsMWZjdmkxcDhxL3hyY2Q5L2NFWWNhLzdHRHdRVmp6bEU5T24vd2ViYTBWNVU2V0pxZ0FBQUFCSlJVNUVya0pnZ2c9PSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIl0sImV4dGVuc2lvbnMiOlsiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiMWQ4Y2FjNDY0N2ExMzM4NmFmNTBlODhhZTQ2ZmU4MDIiLCJvcHRpb25zIjp7InJrIjpmYWxzZSwiY2xpZW50UGluIjp0cnVlLCJ1cCI6dHJ1ZSwidXYiOnRydWV9LCJtYXhNc2dTaXplIjoxMDI0LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxXX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wMy0yNyJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDMtMjcifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyJiNmYxMzg5ZmVhMTViMzQxMDM4MWViOTZkOTM4Y2YxMmNhZGU5NjkyIl0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbImI2ZjEzODlmZWExNWIzNDEwMzgxZWI5NmQ5MzhjZjEyY2FkZTk2OTIiXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ill1YmlLZXkgQmlvIFNlcmllcyAtIE11bHRpLXByb3RvY29sIEVkaXRpb24ifSwiZGVzY3JpcHRpb24iOiJZdWJpS2V5IEJpbyBTZXJpZXMgLSBNdWx0aS1wcm90b2NvbCBFZGl0aW9uIChFbnRlcnByaXNlIFByb2ZpbGUpIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NCwicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoyfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCIsInJlbW90ZV9oYW5kbGUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlETXpDQ0FodWdBd0lCQWdJVVNPRWpUZi8veXFSZlBXN1FxOHF0SXlDckFnOHdEUVlKS29aSWh2Y05BUUVMQlFBd0x6RXRNQ3NHQTFVRUF3d2tXWFZpYVdOdklFWkpSRThnVW05dmRDQkRRU0JUWlhKcFlXd2dORFV3TWpBek5UVTJNQ0FYRFRJME1EVXdNVEF3TURBd01Gb1lEekl3TmpBd05ETXdNREF3TURBd1dqQXZNUzB3S3dZRFZRUUREQ1JaZFdKcFkyOGdSa2xFVHlCU2IyOTBJRU5CSUZObGNtbGhiQ0EwTlRBeU1ETTFOVFl3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRQ2R2bDI3dzJndTFmUFhlRUZiSWRxeDBCYWx2VkRWV3JRUEo3SHF2aXVFdFpIbHhTTHhTRnRjWHBUb2x2THZvZjhmNHRNZXJRVGtWR3pjbVl6bTFFQlQ0SUp1TW1vRXFma0VFaFdwc0FETUZyalprcWxaWTlFcXhRekxvVkVFb25FNW9HeFNkVkN4Q2NMSWFja3B5Ui9DQ1h2ajFCdC9oVGdFOWhUbEY0cFJxeE1reDNwbEY3eThkRFpsUkhXczd2Ym5obUJDR2VJMFpQRVE2bmwybUNnMnI3NGFkRjJ1Nks5cnJMZmhCQzNRTEU4RVByZ3FVc0kraGt1cTJ0SzRNMlNNT3A4dVVWVmtxVWV1M2gwa3IzV1ZJMFcwMnBrZ3JPZ2lGS0xGTmtTcmJZaGRqTUJEajVpem1xZmM5eEpSS29EWDYxMnFkOFpHVkhwVDVBWUZYKzFoQWdNQkFBR2pSVEJETUIwR0ExVWREZ1FXQkJUWnlVNURpUS9hMlVFZ0U3cUJLMHpoSXNSTlJqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUFNQTRHQTFVZER3RUIvd1FFQXdJQkJqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFYdm5CNFNMdVVKZllNU1ZHQWhzc0wvU21XbGkzRlNjY2d4eWR2S2xBQ2NpZElJV0tRcWEzcS9RU1VFUXpDOURnRWZNZ3I3aUMxQmtUWmJJTGJvVjZVWjVrbk5zdmpFWld1TWVvZ0o4dGdaczFoVnZLd1ppendKK21FY21zamhJckJZdW9MMVQ2eXJPSnZLRmcxanYrQ3k0WndBOUJway9WM1VPaXIxVnlLOGRDdHlIdTZ2Zm9zb3RBZFl4OEZBdVIyNDNnUlRNVjZKeDhKZGlnMkpESUFRTWx6VmVEcFNVSFgvSzJIWFJIeEh3ZmdqYmdVampCdS83MnI4T2ZlaHloekhYSTNLOENGRmRmbE8rOG5FT0pLM3k4RjFpdmdTNXVOLzhTbWNZdy9TVFFZd2hyeFB1d3ozblA4YmFNdW00QkIybm5ZbXBCNjBzWDNibDVrOFFVU3c9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFmQ0FZQUFBQ0dWcytNQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUhZWUFBQjJHQVYyaUU0RUFBQWJOU1VSQlZGaEhwVmQ3VE5WMUZELzNkNTl3ZVFTSWdTOUFRQVhjRkxBUVppOWZwZVZ6MXRZL1dUWnI1V3hwYzdXNWtuTGE1akkzWjg1c3JTMm5NMnNqdFd3WlM3SVVINEg0eENuRVF4NERBWkY3NFY3dXM4ODV2OS9sSW5CdlZKL0I0UHY5bnUvNW51LzVudk01NTZmekEvUXYwSGIvSXJYM1ZGS1BvNDVjbm00aW5VSVdZd0xGUm1aUVV1d2pGRy9OMWlSSGgxRVowTlJWUnVkcXQxQmQrMm5TS3lTL09oeXMwK2xrM2UvM2tROXF2RDRaVXRhNFZWU1V1WTBlaXB5aVRoQWZvY29PUlZnRHV1dzNxS1JpQWQzcmJjRXRqVGpZSW9mNldhSHNDbXpWUFdDTXgrY2doOHRMcVdNS2FNV3NVakxxbzJSdEpJUTBvT3ptZXJwUXU0ZXNaZ3NPTmtHeEg3ZDBrZHZUVDE3czRPTVU3Vkk4WmhqZ0dhTStBcTlpRU51OFBpZjF1ZHowN013dktXZjhHbFZvQ0VZMDRQQzVXZFRhWFlGYlI4dk52TDUrM0tnZmI1eE5NeWE5UmFtSml5bmFNbEdUVnRGbHI2YmE5dStwcW5FWDR1TXVSUmdqU1lFaHJON3V0RkZlNmxxYWw3TmZrdzVpbUFHSHluUHBiazhWbVkweHN0bnB0bEZDVkNZdHpUdUJOODNRcE1MalR0ZXZkUHpTVW5KN2U4bWtqeFozOWZYYktEZmxkWnFidlUrVFVnR25CVkY2ZlEyaVBIZzRXMTZVV1V3dnpiazE2c01aRStQbjBwdno3SlNldUF5ZXM4bGNwQ21hS3VvL3ArcVdyMlVjd0lBSFdydlAwWUV6aFhBdExBYnNzSGhwN2lHYW12eWlqUDhyeXFyWFVXWDlYb293eHlBdWZOQnJwNDNQT0JGWFpsa2Y4TURSaXFjcHlvd0F3cHV6MngrZld2ei9EdGRlOXNtc3p5Z3RjUjZDMXdiZHpCbDZPbHE1V05ZWTRvR2F0aEpNcmtURXgwakFSU0hBVnMrNXJZa1FOWGIrUWdmUExzUTZnWHlJbnNyZVFmbXBtN1JWRllmTDg2bjFmaVVPa1l2U2hrVVB4dmJ1a3pveTZLMWloTTFobzNYelc2RXZTZlhBK2RwaVdHYVdkK2RvWHpMem1Hd0tZRkxDQXNSQWxQQkFoTWxDRlhVN3RCVVZQcjhIZ1ZjSkhXcStGMDBwbHIrRE1UZHJQNHp2eFkxMWtOTWh4VCtTZVRHZytkNFY1TFFKaXR5VUdKTkI4VkZac2pnWUJaTS9JSS9YQ1RrajBxeURPcEYyQVZRMTdDSWpVcC9EblQxVWtMNUY1Z2RqK3NTMXdnMWdFM2dpZ202MGZDWHpTblBYYnlBUGJJWHYrSURwRTE2VGhhSElTOXNreWhsbU1FNUYzY2ZxQUtocTJDMEU1UEgxZ1lhWGFMUERrWkcwSERKT25LV0hwNTFJMHo1U091eDhlMVdBdVp6ZEhRclRrcDhUbWpYb0krbGEwd0dac3p1YnFiTzNpZlE2QS9XN3ZWU1lzVjNtUjBKS3drS2M0V0hpQmttUjhJM0NDZ0k4N29PTDRxelQ1UCtSVUpCZWpFT2dBUEs4aFlQemF0TStlSVRwMklPOXlUUW1lcm9tUFJ4eDFxeEFjc2lsZS91YlNlRWJjV1FHWUVDZ2hjTFkySHlLam9nakgyNWhNcGpwVXYxT3VnbGk0ZWgyZVJ3ME8zMmJKamt5dUNnTnpnMHZ6bFlNU2lTczB1b280TUc3aE1PakNFYVgxeUZFMG5TdmpCenVUbkVwSzg2WjhJb3FGQUl1Ync4a2c5QXJFYVJFV1NaSStqSDRYYnA2ZzlFOUVuSlQzb2FSekROK01VSkJRREhuNTZhOG9VbUVCdXNPeEJzL041K3RKRWJQa0FGRGo4VUd2T3MvSVd2Y1NnbEdCaHZTNy9GVFlmcFdHWWREWThmUEF4V1NBMzVzVEM0cDQrTG00QWFxSW9QZVF0ZnVmSzZKaDBaaHhsYnNVWE9TbVhOaWZENVpUQWt5RG9mYmJjY2x4bkE4V05BcXhDYlJOeWtoWHhRcGFEdzY3ZlhVWWJzaUcwS2h0djJvZUl2aDhyaFFNWU9jRUFxWEcvZUkrem5nT2M1eXhyOHE4MklBTTFjL0ZMRk9wbHF1NWVGUVhyTVp6R2NWQ2pZYkxXRzVJNEJUMWV1UnJsYnh0Tk90TWl0RERFaExYSUl5bkFBdnVPRVdFM1gzTmRBZnQ5NFZnYUc0MlhJUXQwWlg2UGVDRS9xUUZlOXJLNkh4N1lVNTBLdkg3Zlc0ZlMrcTdLS0JKeHNnZ0JYNXBTQUdoMWpJclZoNXpRNnczUmZhYWhCWG0vYUNiQ1pUakNVRlVUeVdacVc5cDYyTWpKUFhWcU9yUGdNTzROdjc0R2tmK293ZnROVkJEUW5qRkpxSFN3MTdwWHZoV1c1S1pxZS9RNDlOL1VTVENBVldvUVhGSUhCSFhYZTNGUHJVRHN1R0RtdEYvaEhLVEhwZWt4aGlBT1BJK1NKcTZTNkhGNEk5WVd6a0JKVG80NmlVTXpXcDhQaXIvUmlkdUx4S1lzU2tzVjh2TGxPUXZoR1gyWWxSME9CaEJqQyt1L2dFY3ZZMEFwSzdZazQxTnhqUFNRbldGSFRGNjZVcmpnZXZCOEN1NWErbDJ2WVNSUHR1VkRvNzNoaGRNU0huVVg3dFRqc1ZaR3hBbC9XcHRpT0lFUTFnbkwyOW1YNi90UjF0bWxrWWo4VzRYK0NTaldjVURHWTFOcFMvQzdoU0txaU1MTS9sMlFtU1daNzNEZHorZ2lvOEJDRU5ZUFE0NnFua3p3WFVicXZCa3hqVVFzV2ZaRmdidW8zckFmK3dON2pPTzkwK3lueDRQaTNMKzBuWUwxU2NoRFVnQVA0Z1BWLzdJZDFxKzFIU2htdUdrSXFXUlBneXhNRnFQOEhmalRualh3WTViUWZiSmN0Nk9JektnTUhvdEYvSGUxZWdzYXhIU3FHNndmZG1RNXg4TnlURkZxQmNwMmlTb3dIUjN5azUrMzZoRjd2WEFBQUFBRWxGVGtTdVFtQ0MifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wMi0wMSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzQsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWXViaUtleSBCaW8gU2VyaWVzIC0gTXVsdGktcHJvdG9jb2wgRWRpdGlvbiAoRW50ZXJwcmlzZSBQcm9maWxlKSIsImNlcnRpZmljYXRlTnVtYmVyIjoiVTJGMTAwMDIwMjUwMjAxMDA2IiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDItMDEiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc0fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTAyLTA2In0seyJhYWd1aWQiOiJkZDg2YTJkYS04NmEwLTRjYmUtYjQ2Mi00YmQzMWY1N2JjNmYiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6ImRkODZhMmRhLTg2YTAtNGNiZS1iNDYyLTRiZDMxZjU3YmM2ZiIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IEJpbyBGSURPIEVkaXRpb24ifSwiZGVzY3JpcHRpb24iOiJZdWJpS2V5IEJpbyBTZXJpZXMgLSBGSURPIEVkaXRpb24iLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc0LCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX0seyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbImVkMjU1MTlfZWRkc2Ffc2hhNTEyX3JhdyIsInNlY3AzODRyMV9lY2RzYV9zaGEzODRfcmF3Iiwic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwiLCJiYURlc2MiOnsic2VsZkF0dGVzdGVkRlJSIjowLjAsInNlbGZBdHRlc3RlZEZBUiI6MC4wLCJpQVBBUlRocmVzaG9sZCI6MC4wLCJtYXhUZW1wbGF0ZXMiOjUsIm1heFJldHJpZXMiOjUsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIiwiYmFEZXNjIjp7InNlbGZBdHRlc3RlZEZSUiI6MC4wLCJzZWxmQXR0ZXN0ZWRGQVIiOjAuMCwiaUFQQVJUaHJlc2hvbGQiOjAuMCwibWF4VGVtcGxhdGVzIjo1LCJtYXhSZXRyaWVzIjo1LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRE16Q0NBaHVnQXdJQkFnSVVTT0VqVGYvL3lxUmZQVzdRcThxdEl5Q3JBZzh3RFFZSktvWklodmNOQVFFTEJRQXdMekV0TUNzR0ExVUVBd3drV1hWaWFXTnZJRVpKUkU4Z1VtOXZkQ0JEUVNCVFpYSnBZV3dnTkRVd01qQXpOVFUyTUNBWERUSTBNRFV3TVRBd01EQXdNRm9ZRHpJd05qQXdORE13TURBd01EQXdXakF2TVMwd0t3WURWUVFERENSWmRXSnBZMjhnUmtsRVR5QlNiMjkwSUVOQklGTmxjbWxoYkNBME5UQXlNRE0xTlRZd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUUNkdmwyN3cyZ3UxZlBYZUVGYklkcXgwQmFsdlZEVldyUVBKN0hxdml1RXRaSGx4U0x4U0Z0Y1hwVG9sdkx2b2Y4ZjR0TWVyUVRrVkd6Y21Zem0xRUJUNElKdU1tb0VxZmtFRWhXcHNBRE1Gcmpaa3FsWlk5RXF4UXpMb1ZFRW9uRTVvR3hTZFZDeENjTElhY2tweVIvQ0NYdmoxQnQvaFRnRTloVGxGNHBScXhNa3gzcGxGN3k4ZERabFJIV3M3dmJuaG1CQ0dlSTBaUEVRNm5sMm1DZzJyNzRhZEYydTZLOXJyTGZoQkMzUUxFOEVQcmdxVXNJK2hrdXEydEs0TTJTTU9wOHVVVlZrcVVldTNoMGtyM1dWSTBXMDJwa2dyT2dpRktMRk5rU3JiWWhkak1CRGo1aXptcWZjOXhKUktvRFg2MTJxZDhaR1ZIcFQ1QVlGWCsxaEFnTUJBQUdqUlRCRE1CMEdBMVVkRGdRV0JCVFp5VTVEaVEvYTJVRWdFN3FCSzB6aElzUk5SakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VBTUE0R0ExVWREd0VCL3dRRUF3SUJCakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBWHZuQjRTTHVVSmZZTVNWR0Foc3NML1NtV2xpM0ZTY2NneHlkdktsQUNjaWRJSVdLUXFhM3EvUVNVRVF6QzlEZ0VmTWdyN2lDMUJrVFpiSUxib1Y2VVo1a25Oc3ZqRVpXdU1lb2dKOHRnWnMxaFZ2S3daaXp3SittRWNtc2poSXJCWXVvTDFUNnlyT0p2S0ZnMWp2K0N5NFp3QTlCcGsvVjNVT2lyMVZ5SzhkQ3R5SHU2dmZvc290QWRZeDhGQXVSMjQzZ1JUTVY2Sng4SmRpZzJKRElBUU1selZlRHBTVUhYL0sySFhSSHhId2ZnamJnVWpqQnUvNzJyOE9mZWh5aHpIWEkzSzhDRkZkZmxPKzhuRU9KSzN5OEYxaXZnUzV1Ti84U21jWXcvU1RRWXdocnhQdXd6M25QOGJhTXVtNEJCMm5uWW1wQjYwc1gzYmw1azhRVVN3PT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZkNBWUFBQUNHVnMrTUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFIWVlBQUIyR0FWMmlFNEVBQUFiTlNVUkJWRmhIcFZkN1ROVjFGRC8zZDU5d2VRU0lnUzlBUUFYY0ZMQVFaaTlmcGVWejF0WS9XVFpyNVd4cGM3VzVrbkxhNWpJM1o4NXNyUzJuTTJzanRXd1pTN0lVSDRINHhDbkVReDREQVpGNzRWN3VzODg1djkvbEluQnZWSi9CNFB2OW51LzVudS81bnZNNTU2ZnpBL1F2MEhiL0lyWDNWRktQbzQ1Y25tNGluVUlXWXdMRlJtWlFVdXdqRkcvTjFpUkhoMUVaME5SVlJ1ZHF0MUJkKzJuU0t5Uy9PaHlzMCtsazNlLzNrUTlxdkQ0WlV0YTRWVlNVdVkwZWlweWlUaEFmb2NvT1JWZ0R1dXczcUtSaUFkM3JiY0V0alRqWUlvZjZXYUhzQ216VlBXQ014K2NnaDh0THFXTUthTVdzVWpMcW8yUnRKSVEwb096bWVycFF1NGVzWmdzT05rR3hIN2Qwa2R2VFQxN3M0T01VN1ZJOFpoamdHYU0rQXE5aUVOdThQaWYxdWR6MDdNd3ZLV2Y4R2xWb0NFWTA0UEM1V2RUYVhZRmJSOHZOdkw1KzNLZ2ZiNXhOTXlhOVJhbUppeW5hTWxHVFZ0RmxyNmJhOXUrcHFuRVg0dU11UlJnalNZRWhyTjd1dEZGZTZscWFsN05ma3c1aW1BR0h5blBwYms4Vm1ZMHhzdG5wdGxGQ1ZDWXR6VHVCTjgzUXBNTGpUdGV2ZFB6U1VuSjdlOG1ranhaMzlmWGJLRGZsZFpxYnZVK1RVZ0duQlZGNmZRMmlQSGc0VzE2VVdVd3Z6YmsxNnNNWkUrUG4wcHZ6N0pTZXVBeWVzOGxjcENtYUt1by9wK3FXcjJVY3dJQUhXcnZQMFlFemhYQXRMQWJzc0hocDdpR2FtdnlpalA4cnlxclhVV1g5WG9vd3h5QXVmTkJycDQzUE9CRlhabGtmOE1EUmlxY3B5b3dBd3B1ejJ4K2ZXdnovRHRkZTlzbXN6eWd0Y1I2QzF3YmR6Qmw2T2xxNVdOWVk0b0dhdGhKTXJrVEV4MGpBUlNIQVZzKzVyWWtRTlhiK1FnZlBMc1E2Z1h5SW5zcmVRZm1wbTdSVkZZZkw4Nm4xZmlVT2tZdlNoa1VQeHZidWt6b3k2SzFpaE0xaG8zWHpXNkV2U2ZYQStkcGlXR2FXZCtkb1h6THptR3dLWUZMQ0FzUkFsUEJBaE1sQ0ZYVTd0QlVWUHI4SGdWY0pIV3ErRjAwcGxyK0RNVGRyUDR6dnhZMTFrTk1oeFQrU2VUR2crZDRWNUxRSml0eVVHSk5COFZGWnNqZ1lCWk0vSUkvWENUa2owcXlET3BGMkFWUTE3Q0lqVXAvRG5UMVVrTDVGNWdkaitzUzF3ZzFnRTNnaWdtNjBmQ1h6U25QWGJ5QVBiSVh2K0lEcEUxNlRoYUhJUzlza3lobG1NRTVGM2NmcUFLaHEyQzBFNVBIMWdZYVhhTFBEa1pHMEhESk9uS1dIcDUxSTB6NVNPdXg4ZTFXQXVaemRIUXJUa3A4VG1qWG9JK2xhMHdHWnN6dWJxYk8zaWZRNkEvVzd2VlNZc1YzbVIwSkt3a0tjNFdIaUJrbVI4STNDQ2dJODdvT0w0cXpUNVArUlVKQmVqRU9nQVBLOGhZUHphdE0rZUlUcDJJTzl5VFFtZXJvbVBSeHgxcXhBY3NpbGUvdWJTZUViY1dRR1lFQ2doY0xZMkh5S2pvZ2pIMjVoTXBqcFV2MU91Z2xpNGVoMmVSdzBPMzJiSmpreXVDZ056ZzB2emxZTVNpU3MwdW9vNE1HN2hNT2pDRWFYMXlGRTBuU3ZqQnp1VG5FcEs4Nlo4SW9xRkFJdWJ3OGtnOUFyRWFSRVdTWkkrakg0WGJwNmc5RTlFbkpUM29hUnpETitNVUpCUURIbjU2YThvVW1FQnVzT3hCcy9ONSt0SkViUGtBRkRqOFVHdk9zL0lXdmNTZ2xHQmh2UzcvRlRZZnBXR1lkRFk4ZlBBeFdTQTM1c1RDNHA0K0xtNEFhcUlvUGVRdGZ1Zks2SmgwWmh4bGJzVVhPU21YTmlmRDVaVEFreURvZmJiY2NseG5BOFdOQXF4Q2JSTnlraFh4UXBhRHc2N2ZYVVlic2lHMEtodHYyb2VJdmg4cmhRTVlPY0VBcVhHL2VJK3puZ09jNXl4cjhxODJJQU0xYy9GTEZPcGxxdTVlRlFYck1aekdjVkNqWWJMV0c1STRCVDFldVJybGJ4dE5PdE1pdERERWhMWElJeW5BQXZ1T0VXRTNYM05kQWZ0OTRWZ2FHNDJYSVF0MFpYNlBlQ0UvcVFGZTlySzZIeDdZVTUwS3ZIN2ZXNGZTK3E3S0tCSnhzZ2dCWDVwU0FHaDFqSXJWaDV6UTZ3M1JmYWFoQlhtL2FDYkNaVGpDVUZVVHlXWnFXOXA2Mk1qSlBYVnFPclBnTU80TnY3NEdrZitvd2Z0TlZCRFFuakZKcUhTdzE3cFh2aFdXNUtacWUvUTQ5Ti9VU1RDQVZXb1FYRklIQkhYWGUzRlByVURzdUdEbXRGL2hIS1RIcGVreGhpQU9QSStTSnE2UzZIRjRJOVlXemtCSlRvNDZpVU16V3A4UGlyL1JpZHVMeEtZc1Nrc1Y4dkxsT1F2aEdYMllsUjBPQmhCakMrdS9nRWN2WTBBcEs3WWs0MU54alBTUW5XRkhURjY2VXJqZ2V2QjhDdTVhK2wydllTUlB0dVZEbzczaGhkTVNIblVYN3RUanNWWkd4QWwvV3B0aU9JRVExZ25MMjltWDYvdFIxdG1sa1lqOFc0WCtDU2pXY1VER1kxTnBTL0M3aFNLcWlNTE0vbDJRbVNXWjczRGR6K2dpbzhCQ0VOWVBRNDZxbmt6d1hVYnF2Qmt4alVRc1dmWkZnYnVvM3JBZit3TjdqT085MCt5bng0UGkzTCswbllMMVNjaERVZ0FQNGdQVi83SWQxcSsxSFNobXVHa0lxV1JQZ3l4TUZxUDhIZmpUbmpYd1k1YlFmYkpjdDZPSXpLZ01Ib3RGL0hlMWVnc2F4SFNxRzZ3ZmRtUTV4OE55VEZGcUJjcDJpU293SFIzeWs1KzM2aEY3dlhBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiRklET18yXzAiLCJGSURPXzJfMV9QUkUiLCJGSURPXzJfMSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJsYXJnZUJsb2JLZXkiLCJjcmVkQmxvYiIsIm1pblBpbkxlbmd0aCJdLCJhYWd1aWQiOiJkZDg2YTJkYTg2YTA0Y2JlYjQ2MjRiZDMxZjU3YmM2ZiIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwidXYiOmZhbHNlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibGFyZ2VCbG9icyI6dHJ1ZSwiYmlvRW5yb2xsIjpmYWxzZSwidXNlclZlcmlmaWNhdGlvbk1nbXRQcmV2aWV3IjpmYWxzZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOmZhbHNlLCJhbHdheXNVdiI6dHJ1ZX0sIm1heE1zZ1NpemUiOjEyODAsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6OCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoxMjgsInRyYW5zcG9ydHMiOlsidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN30seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTh9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi0zNX1dLCJtYXhTZXJpYWxpemVkTGFyZ2VCbG9iQXJyYXkiOjQwOTYsIm1pblBJTkxlbmd0aCI6NCwiZmlybXdhcmVWZXJzaW9uIjozMjk0NzQsIm1heENyZWRCbG9iTGVuZ3RoIjozMiwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjEsInByZWZlcnJlZFBsYXRmb3JtVXZBdHRlbXB0cyI6MywidXZNb2RhbGl0eSI6MiwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjEwMH19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTAyLTAxIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NCwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZdWJpS2V5IEJpbyBGSURPIEVkaXRpb24iLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI1MDIwMTAwOSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTA4LTEyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NCwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZdWJpS2V5IEJpbyBGSURPIEVkaXRpb24iLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI0MDgxMjAwMCIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTA4LTEyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NH1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wMi0wNyJ9LHsiYWFpZCI6IjRlNGUjNDAwOSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFpZCI6IjRlNGUjNDAwOSIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJpT1MgUGFzc2NvZGUifSwiZGVzY3JpcHRpb24iOiJpT1MgUGFzc2NvZGUiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MjU2LCJwcm90b2NvbEZhbWlseSI6InVhZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9LHsibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfc3Vycm9nYXRlIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2ludGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjUsImJsb2NrU2xvd2Rvd24iOjYwfX1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInRlZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImF0dGFjaG1lbnRIaW50IjpbImludGVybmFsIl0sInRjRGlzcGxheSI6WyJhbnkiXSwidGNEaXNwbGF5Q29udGVudFR5cGUiOiJ0ZXh0L3BsYWluIiwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBRWdBQUFCSUNBWUFBQUJWN2JOSEFBQUFDWEJJV1hNQUFBc1NBQUFMRWdIUzNYNzhBQUFLVDJsRFExQlFhRzkwYjNOb2IzQWdTVU5ESUhCeWIyWnBiR1VBQUhqYW5WTm5WRlBwRmozMzN2UkNTNGlBbEV0dlVoVUlJRkpDaTRBVWtTWXFJUWtRU29naG9ka1ZVY0VSUlVVRUc4aWdpQU9Pam9DTUZWRXNESW9LMkFma0lhS09nNk9JaXNyNzRYdWphOWE4OStiTi9yWFhQdWVzODUyenp3ZkFDQXlXU0ROUk5ZQU1xVUllRWVDRHg4VEc0ZVF1UUlFS0pIQUFFQWl6WkNGei9TTUJBUGgrUER3cklzQUh2Z0FCZU5NTENBREFUWnZBTUJ5SC93L3FRcGxjQVlDRUFjQjBrVGhMQ0lBVUFFQjZqa0ttQUVCR0FZQ2RtQ1pUQUtBRUFHRExZMkxqQUZBdEFHQW5mK2JUQUlDZCtKbDdBUUJibENFVkFhQ1JBQ0FUWlloRUFHZzdBS3pQVm9wRkFGZ3dBQlJtUzhRNUFOZ3RBREJKVjJaSUFMQzNBTURPRUF1eUFBZ01BREJSaUlVcEFBUjdBR0RJSXlONEFJU1pBQlJHOGxjODhTdXVFT2NxQUFCNG1iSTh1U1E1UllGYkNDMXhCMWRYTGg0b3pra1hLeFEyWVFKaG1rQXV3bm1aR1RLQk5BL2c4OHdBQUtDUkZSSGdnL1A5ZU00T3JzN09ObzYyRGw4dDZyOEcveUppWXVQKzVjK3JjRUFBQU9GMGZ0SCtMQyt6R29BN0JvQnQvcUlsN2dSb1hndWdkZmVMWnJJUFFMVUFvT25hVi9OdytINDhQRVdoa0xuWjJlWGs1TmhLeEVKYlljcFhmZjVud2wvQVYvMXMrWDQ4L1BmMTRMN2lKSUV5WFlGSEJQamd3c3owVEtVY3o1SUpoR0xjNW85SC9MY0wvL3dkMHlMRVNXSzVXQ29VNDFFU2NZNUVtb3p6TXFVaWlVS1NLY1VsMHY5azR0OHMrd00rM3pVQXNHbytBWHVSTGFoZFl3UDJTeWNRV0hUQTR2Y0FBUEs3YjhIVUtBZ0RnR2lENGM5My8rOC8vVWVnSlFDQVprbVNjUUFBWGtRa0xsVEtzei9IQ0FBQVJLQ0JLckJCRy9UQkdDekFCaHpCQmR6QkMveGdOb1JDSk1UQ1FoQkNDbVNBSEhKZ0theUNRaWlHemJBZEttQXYxRUFkTk1CUmFJYVRjQTR1d2xXNERqMXdEL3BoQ0o3QktMeUJDUVJCeUFnVFlTSGFpQUZpaWxnampnZ1htWVg0SWNGSUJCS0xKQ0RKaUJSUklrdVJOVWd4VW9wVUlGVklIZkk5Y2dJNWgxeEd1cEU3eUFBeWd2eUd2RWN4bElHeVVUM1VETFZEdWFnM0dvUkdvZ3ZRWkhReG1vOFdvSnZRY3JRYVBZdzJvZWZRcTJnUDJvOCtROGN3d09nWUJ6UEViREF1eHNOQ3NUZ3NDWk5qeTdFaXJBeXJ4aHF3VnF3RHU0bjFZOCt4ZHdRU2dVWEFDVFlFZDBJZ1lSNUJTRmhNV0U3WVNLZ2dIQ1EwRWRvSk53a0RoRkhDSnlLVHFFdTBKcm9SK2NRWVlqSXhoMWhJTENQV0VvOFRMeEI3aUVQRU55UVNpVU15SjdtUUFrbXhwRlRTRXRKRzBtNVNJK2tzcVpzMFNCb2prOG5hWkd1eUJ6bVVMQ0FyeUlYa25lVEQ1RFBrRytRaDhsc0tuV0pBY2FUNFUrSW9Vc3BxU2hubEVPVTA1UVpsbURKQlZhT2FVdDJvb1ZRUk5ZOWFRcTJodGxLdlVZZW9FelIxbWpuTmd4WkpTNld0b3BYVEdtZ1hhUGRwcitoMHVoSGRsUjVPbDlCWDBzdnBSK2lYNkFQMGR3d05oaFdEeDRobktCbWJHQWNZWnhsM0dLK1lUS1laMDRzWngxUXdOekhybU9lWkQ1bHZWVmdxdGlwOEZaSEtDcFZLbFNhVkd5b3ZWS21xcHFyZXFndFY4MVhMVkkrcFhsTjlya1pWTTFQanFRblVscXRWcXAxUTYxTWJVMmVwTzZpSHFtZW9iMVEvcEg1Wi9Za0dXY05NdzA5RHBGR2dzVi9qdk1ZZ0MyTVpzM2dzSVdzTnE0WjFnVFhFSnJITjJYeDJLcnVZL1IyN2l6MnFxYUU1UXpOS00xZXpVdk9VWmo4SDQ1aHgrSngwVGdubktLZVg4MzZLM2hUdktlSXBHNlkwVExreFpWeHJxcGFYbGxpclNLdFJxMGZydlRhdTdhZWRwcjFGdTFuN2dRNUJ4MG9uWENkSFo0L09CWjNuVTlsVDNhY0tweFpOUFRyMXJpNnFhNlVib2J0RWQ3OXVwKzZZbnI1ZWdKNU1iNmZlZWIzbitoeDlMLzFVL1czNnAvVkhERmdHc3d3a0J0c016aGc4eFRWeGJ6d2RMOGZiOFZGRFhjTkFRNlZobFdHWDRZU1J1ZEU4bzlWR2pVWVBqR25HWE9NazQyM0diY2FqSmdZbUlTWkxUZXBON3BwU1RibW1LYVk3VER0TXg4M016YUxOMXBrMW16MHgxekxubStlYjE1dmZ0MkJhZUZvc3RxaTJ1R1ZKc3VSYXBsbnV0cnh1aFZvNVdhVllWVnBkczBhdG5hMGwxcnV0dTZjUnA3bE9rMDZybnRabnc3RHh0c20ycWJjWnNPWFlCdHV1dG0yMmZXRm5ZaGRudDhXdXcrNlR2Wk45dW4yTi9UMEhEWWZaRHFzZFdoMStjN1J5RkRwV090NmF6cHp1UDMzRjlKYnBMMmRZenhEUDJEUGp0aFBMS2NScG5WT2IwMGRuRjJlNWM0UHppSXVKUzRMTExwYytMcHNieHQzSXZlUktkUFZ4WGVGNjB2V2RtN09id3UybzI2L3VOdTVwN29mY244dzBueW1lV1ROejBNUElRK0JSNWRFL0M1K1ZNR3Zmckg1UFEwK0JaN1huSXk5akw1RlhyZGV3dDZWM3F2ZGg3eGMrOWo1eW4rTSs0enczM2pMZVdWL01OOEMzeUxmTFQ4TnZubCtGMzBOL0kvOWsvM3IvMFFDbmdDVUJad09KZ1VHQld3TDcrSHA4SWIrT1B6cmJaZmF5MmUxQmpLQzVRUlZCajRLdGd1WEJyU0ZveU95UXJTSDM1NWpPa2M1cERvVlFmdWpXMEFkaDVtR0x3MzRNSjRXSGhWZUdQNDV3aUZnYTBUR1hOWGZSM0VOejMwVDZSSlpFM3B0bk1VODVyeTFLTlNvK3FpNXFQTm8zdWpTNlA4WXVabG5NMVZpZFdFbHNTeHc1TGlxdU5tNXN2dC84N2ZPSDRwM2lDK043RjVndnlGMXdlYUhPd3ZTRnB4YXBMaElzT3BaQVRJaE9PSlR3UVJBcXFCYU1KZklUZHlXT0NubkNIY0puSWkvUk50R0kyRU5jS2g1TzhrZ3FUWHFTN0pHOE5Ya2t4VE9sTE9XNWhDZXBrTHhNRFV6ZG16cWVGcHAySUcweVBUcTlNWU9Ta1pCeFFxb2hUWk8yWitwbjVtWjJ5NnhsaGJMK3hXNkx0eThlbFFmSmE3T1FyQVZaTFFxMlFxYm9WRm9vMXlvSHNtZGxWMmEvelluS09aYXJuaXZON2N5enl0dVFONXp2bi8vdEVzSVM0WksycFlaTFZ5MGRXT2E5ckdvNXNqeHhlZHNLNHhVRks0WldCcXc4dUlxMkttM1ZUNnZ0VjVldWZyMG1lazFyZ1Y3QnlvTEJ0UUZyNnd0VkN1V0ZmZXZjMSsxZFQxZ3ZXZCsxWWZxR25ScytGWW1LcmhUYkY1Y1ZmOWdvM0hqbEc0ZHZ5citaM0pTMHFhdkV1V1RQWnRKbTZlYmVMWjViRHBhcWwrYVhEbTROMmRxMERkOVd0TzMxOWtYYkw1Zk5LTnU3ZzdaRHVhTy9QTGk4WmFmSnpzMDdQMVNrVlBSVStsUTI3dExkdFdIWCtHN1I3aHQ3dlBZMDdOWGJXN3ozL1Q3SnZ0dFZBVlZOMVdiVlpmdEorN1AzUDY2SnF1bjRsdnR0WGExT2JYSHR4d1BTQS8wSEl3NjIxN25VMVIzU1BWUlNqOVlyNjBjT3h4KysvcDN2ZHkwTk5nMVZqWnpHNGlOd1JIbms2ZmNKMy9jZURUcmFkb3g3ck9FSDB4OTJIV2NkTDJwQ212S2FScHRUbXZ0YllsdTZUOHcrMGRicTNucjhSOXNmRDV3MFBGbDVTdk5VeVduYTZZTFRrMmZ5ejR5ZGxaMTlmaTc1M0dEYm9yWjc1MlBPMzJvUGIrKzZFSFRoMGtYL2krYzd2RHZPWFBLNGRQS3kyK1VUVjdoWG1xODZYMjNxZE9vOC9wUFRUOGU3bkx1YXJybGNhN251ZXIyMWUyYjM2UnVlTjg3ZDlMMTU4UmIvMXRXZU9UM2R2Zk42Yi9mRjkvWGZGdDErY2lmOXpzdTcyWGNuN3EyOFQ3eGY5RUR0UWRsRDNZZlZQMXYrM05qdjNIOXF3SGVnODlIY1IvY0doWVBQL3BIMWp3OURCWStaajh1R0RZYnJuamcrT1RuaVAzTDk2ZnluUTg5a3p5YWVGLzZpL3N1dUZ4WXZmdmpWNjlmTzBaalJvWmZ5bDVPL2JYeWwvZXJBNnhtdjI4YkN4aDYreVhnek1WNzBWdnZ0d1hmY2R4M3ZvOThQVCtSOElIOG8vMmo1c2ZWVDBLZjdreG1Uay84RUE1anovR016TGRzQUFBQUVaMEZOUVFBQXNZNTgrMUdUQUFBQUlHTklVazBBQUhvbEFBQ0Fnd0FBK2Y4QUFJRHBBQUIxTUFBQTZtQUFBRHFZQUFBWGI1SmZ4VVlBQUFuK1NVUkJWSGphN0p4dmJGUDFHc2MvcDZkcjE2NFZ4MnhwdHhHWVlCdkZHNGphT08yY1d4UUNPSUlKbWZlRitnS05ST1VGMFVUdkZZbnh6NGd4YWpBR0hWN0NRalI3bzFFVFEveURpWkdNRi9KaW05MldzRG5IWGJOdUREUHB5a2IvMGZhNUwyVG5NdmFITXpncWhYNlRrenpuZDU2YzlEeDkvdjJlNS9mN0tVekhVbUFic0JHbzR2ckNmNEd2Z2Y4QVE3TXgvQk1ZQmVRNnYwYlB5MklhR29Gc1FUamFsVDB2RXhTZ0VnZ0JpeW5nUXB3R1ZxdkF2NEYxQlhuTWdBMUlLVUFYOEkrQ1BHWkZ0M0plbFVvTHNwZ1ZVVk5CQnZPaklLQkxRQVgrZGQ0aFhSRktTa3J3K1h5azAybFVWZVdXVzI0aG04MGlJdmg4UGpLWkRMbGNEci9mVHk2WDAraHNOa3NtazhIdjl3T1F5V1R3K1h5b3FrbzZuY2J2OTJNeW1VZ21rL2o5Zm9xS2lrZ21reHBQSXBIQTcvZGpzVmlJeCtNYVBURXhZWVI4a29ZSnFMNituaDkvL0pIKy9uNGNEZ2R0YlcyY09uV0tWQ3JGc1dQSEdCNGVKaGFMMGRIUndjVEVCR05qWTdTM3QvUDc3NzhUaVVUbzd1NG1uVTR6TWpKQ1oyY25WcXVWbnA0ZWVucDZVRldWOXZaMit2cjZLQ3NyNDZlZmZ1TDQ4ZU00SEE2T0hEbkN3TUFBSG8rSG8wZVAwdHZiUzNsNU9WOSsrYVVoQWpMTXhMTFpMRmFyRlJFaGs4bGd0Vm9CU0tmVDJuZzZuYWE0dUZnYm42S1R5U1RGeGNXWVRDWlNxWlJHWHppZVNDU3cyV3lZeldhU3lhUkd4K054alo3aUtTb3FNc3pFekVhOFJGRVUxcXhaQThDcVZhdTQ2YWFiQVBENWZLUlNLUUJ1dmZWVzR2RTRBQ3RYcmlRWURHbzg5OTkvUHdCVlZWWFUxTlQ4TVNsY3VwUzZ1am9BbGkxYnhnTVBQQUNBMSt1bHZyNGVnSXFLQ3RhdVhRdUF4K1BSZU54dU56VTFOWmhNLy8vL1RTWVRQVDA5akkyTlhWYkdlTmxwdWRsc2xvOC8vbGp5QVZ1MmJGbm85NTIrSWcweW04MGNQSGlRUng5OXRCRG1aNFEvVmMwNzRZaklYeU9nb3FLaWExNXpya2hBemMzTlBQYllZM24zc1ZOQllrRUJTTzljN1Bubm4yZlpzbVdZeldhMmJkdUcyV3pPT3dFZE9uU0kvdjUrRkVYaHZmZmVJeHdPWDNJdXBqdUs5ZlgxeWJXRW1wb2FYVkZNdHdaVlZGUmdzVmh3T0J4ODk5MTNlTDNldk5PZ1o1OTlsbSsvL1JhQWtaRVJMVWViVDROMDIwbGpZeU5MbHk3VmhKU1BXTDkrUFZWVlZhaXF5dnZ2djYvSHhQUW5pajA5UGRlVWlkMTc3NzI2VEV5M2dGd3VsM2k5WHZINWZESThQSnlYUW5ueXlTZkY3WGFMMStzVmk4VmliQ2I5OE1NUDQvVjZzVnF0bEpTVTVLV0pyVjI3bHNyS1NrU0VscFlXSXBHSWNTYjJ5eSsvRktMWWZLaXFxc0ptczFGU1VzSlhYMzJGeCtQSk93M2FzV01IaHc4ZlJsRVVCZ2NIU1NRU3hrV3hEUnMyVUZsWlNWRlJFWGE3UFM5TnJMYTJGcmZiamFJbzdOdTNqNkdoSWVOTXJKQW9YZ0pURHRyaGNIRDQ4T0VaaWVMQXdBQ2Zmdm9wbzZPaktJcnl0ODNXN1hZN3dXQ1Fob2FHR2MrZmVlWVp2dm5tR3hSRjRlVEprOFltaWc4KytDQkxsaXlodUxnWW0yMTZDVHNjRGxOWFY2YzdLdndWYUc1dTV1bW5uNTQyZHM4OTkyamwyZGJXVmtaR1J2NmFLUGJoaHg5ZWRRc1E3cjc3YmtOTVRMY0diZHk0RWJ2ZFRrbEpDVjk4OGNXMEtIYjI3Tm04Y05MUFBmY2MzMy8vUFNhVGlZR0JBV1ByUWJXMXRUUTBOTEIrL2ZvWkpuWmhjUnpBNlhTeWYvOStuRTdubk8vVHd3UHd5aXV2OE5CRER5MllaelkvR0FnRTJMeDVNNXMyYmFLMFZIKzNYWmVKRFEwTnphbXU3Nzc3cnNhM1o4OGVhV2xwa1V3bUl5MHRMYkpuejU0Wjc5TEQwOWpZS0FjT0hKQklKQ0kvL1BDRHRMYTJ5b29WSzNUelZGZFh6MnRpdGJXMXVreE10d1kxTkRRUURBWlp0MjRkdi8zMjI5eHVQeHBsNjlhdHFLcksxcTFiaVVhamw4VVRpVVRZdkhrekZSVVYxTmZYczN6NWNtS3gyQ1Y1eHNmSDUveHRPM2Z1SkJnTUVnd0c2ZXpzTkxZdjV2UDVjTHZkRkJjWHo5dVlLeXNyQXlDWHkyRXltYlQ3aGZJNG5VNnQrUWhRV2xvNjdYNHVucWxtNUZ5emdXZzBpcXFxREF3TTZHcFA2eGJRbTIrK3lZb1ZLeTdKTnp3OHpPdXZ2ODdPblR0cGFtcWExWUhyNFZFVWhiZmVlb3Nubm5pQ24zLyttZDdlM2htK1RnL1BoWGpxcWFjME9oUUtjZXJVS2VOODBLcFZxeVFRQ0VoZFhaMk1qbzdPNllNQXNkbHMwdFRVSkZhcmRjNzM2ZUVCWlB2MjdYTGZmZmN0bUdjMkgvVGlpeS9LSFhmY0lZRkFRQndPaDdGaGZzMmFOWnFKWGF6cUYvZWJFb2tFdTNidG12ZDllbmdBUHZqZ0EwTjQ0SS8yZHlxVlFsVlZJcEVJazVPVHhtblE0T0RnbkJIaG5YZmV1ZW9TeFR2dnZIUGVLSFlwclZ5d0JqVTJOckpvMFNKc05oc0hEaHpBNVhKcHo2cXJxNis2cERBUUNNd1llL1hWVjJscmEwTlJGTHE2dW95Tll1WGw1YmhjTHF4V0s2cXFUbnNXREFZNWVQQWd6YzNOZW1vc2Z6cXFxNnZadlh2M2pIRzMyODN5NWNzQmRBdklFQlBMUitoTkZIV1hPMWF2WG8zRDRhQ2twSVJQUHZrRXQ5dWRkd1d6bDE5K21TTkhqbWdhcENNUDBsL3VLQ3NybzdTMEZKdk5Oc1BFOGdVMzNuZ2pMcGNMVlZVNWZ2eTRzU1oyNHNTSmE4ckVESTlpanovK3VCYkY5dTNicHkyenl5ZnMzcjJidHJZMlZGV2x1N3ZiMkNqbWNEZzBBZjFkSmRVcmhkMXVaL0hpUC9ic0xHUjFpaTRUQzRmRDEyVVUweTNHUng1NVJOT2cvZnYzVDBzVTh3V3Z2ZllhUjQ4ZVJWRVVRcUdRc1NabXNWaXdXcTFZcmRhOE5UR0x4WUxGWWtGVjFYbG4vWVVvOW1kRXNSMDdkckI0OFdMc2RqdE5UVTJhczhzbjdOMjdsMlBIam1FMm0rbnQ3VFZXZzZZdVJWSHlkdHF4WWNPR0JTOGtYL0FxVjZmVHVTRDd2WnB3Y1RmRzBMYlA5UXJUNVVhRHZQell5OUQ4QlM5Mnp1VnloTU5oYllQY1ZNblZaclBoY3JrNGZmbzAyV3dXbDh2RitQZzRxVlNLSlV1V0VJMUdTYVZTZUR3ZVlyRVlpVVFDajhmRCtQZzRpVVFDcjlmTG1UTm5pTWZqZUR3ZUppY25tWmlZd092MU1qRXh3Wmt6WjZpb3FPRHMyYlBFWWpIS3k4dVpuSnhrZkh5Y3lzcEs0dkU0MFdpVWlvb0s0dkU0WTJOajA5SVJrOGwwMlIzZ0JUdHBoOE1oTjl4d2czWTVuVTdac21XTGlJaHMzNzVkTm0zYUpDSWlMNzMwa3RUWDE0dUl5QXN2dkNDQlFFQkVSTjU0NHcydHFMNXIxeTY1L2ZiYlJVVGs3YmZmbHJ2dXVrdEVSRDc2NkNPNTdiYmJSRVJrNzk2OVVsVlZKU0lpcmEydHNuTGxTaEVSYVdscEVZL0hJeUlpbjMzMm1keDg4ODBpSXZMNTU1K0wwK21jOWhzWExWb2taclA1ejkvdEl5S3pGcnVubHZrbmswbnRuenAzN3B6R20wcWx0UHJMdVhQbnB0RlREY0ZNSnFPTlo3TlpiVHlieldvTlFSSFJ4bk81bk5aMHZIQWNNR3BMcG5GT09oYUwwZDNkemRqWUdKT1RrM1IzZDNQeTVFbmk4VGhkWFYzYTlzeXVyaTZHaDRkSnBWS0VRaUZHUmtiSVpyT0VRaUdHaG9aSXA5T0VRaUVHQndmSlpyTjBkbllTRG9jUkVUbzZPdmoxMTEvSjVYSjBkSFJ3NHNRSlRDWVQ3ZTN0OVBmM2F6eDlmWDJHK1MxRDk4MmJUQ2JOTDEwSnJTaUsxa3JTUTEvY1RMeWNiVTl6VlJRTkRmTlRIM2lsOUlVZnFJZSsyQVg4N1dHK2tBY1ZNRTFBa1lJWTVrVEVCQndxeUdGT0hDb2NzRFIvQXIxNjZxWndSTmNjUjNSZGlNSWhiN01jOG5aeGNibHdUT0JGeHdUK2J3QzRFNDJMNlpDYmVnQUFBQUJKUlU1RXJrSmdnZz09In0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDE4LTA1LTE5In1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAxOC0wNS0xOSJ9LHsiYWFpZCI6IjAwNTIjMDAwMSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFpZCI6IjAwNTIjMDAwMSIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJpLVNwcmludCBpT1MgRmluZ2VyUHJpbnQgVUFGIEF1dGhlbnRpY2F0b3IifSwiZGVzY3JpcHRpb24iOiJpLVNwcmludCBpT1MgRmluZ2VyUHJpbnQgVUFGIEF1dGhlbnRpY2F0b3IiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJ1YWYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfc3Vycm9nYXRlIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJzb2Z0d2FyZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJzb2Z0d2FyZSJdLCJhdHRhY2htZW50SGludCI6WyJpbnRlcm5hbCJdLCJ0Y0Rpc3BsYXkiOlsiYW55Il0sInRjRGlzcGxheUNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbiIsInRjRGlzcGxheVBOR0NoYXJhY3RlcmlzdGljcyI6W3sid2lkdGgiOjMyMCwiaGVpZ2h0Ijo0ODAsImJpdERlcHRoIjoxNiwiY29sb3JUeXBlIjozLCJjb21wcmVzc2lvbiI6MCwiZmlsdGVyIjowLCJpbnRlcmxhY2UiOjB9XSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSzRBQUFBOUNBWUFBQUEwL2xJREFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFLVFdsRFExQlFhRzkwYjNOb2IzQWdTVU5ESUhCeWIyWnBiR1VBQUhqYW5WTjNXSlAzRmo3ZjkyVVBWa0xZOExHWGJJRUFJaU9zQ01nUVdhSVFrZ0JoaEJBU1FNV0ZpQXBXRkJVUm5FaFZ4SUxWQ2tpZGlPS2dLTGhuUVlxSVdvdFZYRGp1SDl5bnRYMTY3KzN0KzlmN3ZPZWM1L3pPZWM4UGdCRVNKcEhtb21vQU9WS0ZQRHJZSDQ5UFNNVEp2WUFDRlVqZ0JDQVE1c3ZDWndYRkFBRHdBM2w0Zm5Td1Avd0JyMjhBQWdCdzFTNGtFc2ZoLzRPNlVDWlhBQ0NSQU9BaUV1Y0xBWkJTQU1ndVZNZ1VBTWdZQUxCVHMyUUtBSlFBQUd4NWZFSWlBS29OQU96MFNUNEZBTmlwazl3WEFOaWlIS2tJQUkwQkFKa29SeVFDUUxzQVlGV0JVaXdDd01JQW9LeEFJaTRFd0s0QmdGbTJNa2NDZ0wwRkFIYU9XSkFQUUdBQWdKbENMTXdBSURnQ0FFTWVFODBESUV3RG9ERFN2K0NwWDNDRnVFZ0JBTURMbGMyWFM5SXpGTGlWMEJwMzh2RGc0aUhpd215eFFtRVhLUkJtQ2VRaW5KZWJJeE5JNXdOTXpnd0FBQnI1MGNIK09EK1E1K2JrNGVabTUyenY5TVdpL212d2J5SStJZkhmL3J5TUFnUUFFRTdQNzlwZjVlWFdBM0RIQWJCMXYydXBXd0RhVmdCbzMvbGRNOXNKb0ZvSzBIcjVpM2s0L0VBZW5xRlF5RHdkSEFvTEMrMGxZcUc5TU9PTFB2OHo0Vy9naTM3Mi9FQWUvdHQ2OEFCeG1rQ1pyY0NqZy8xeFlXNTJybEtPNThzRVFqRnU5K2NqL3NlRmYvMk9LZEhpTkxGY0xCV0s4VmlKdUZBaVRjZDV1VktSUkNISmxlSVM2WDh5OFIrVy9RbVRkdzBBcklaUHdFNjJCN1hMYk1CKzdnRUNpdzVZMG5ZQVFIN3pMWXdhQzVFQUVHYzBNbm4zQUFDVHYvbVBRQ3NCQU0yWHBPTUFBTHpvR0Z5b2xCZE14Z2dBQUVTZ2dTcXdRUWNNd1JTc3dBNmN3UjI4d0JjQ1lRWkVRQXdrd0R3UVFnYmtnQndLb1JpV1FSbFV3RHJZQkxXd0F4cWdFWnJoRUxUQk1UZ041K0FTWElIcmNCY0dZQmlld2hpOGhna0VRY2dJRTJFaE9vZ1JZbzdZSXM0SUY1bU9CQ0poU0RTU2dLUWc2WWdVVVNMRnlIS2tBcWxDYXBGZFNDUHlMWElVT1kxY1FQcVEyOGdnTW9yOGlyeEhNWlNCc2xFRDFBSjFRTG1vSHhxS3hxQnowWFEwRDEyQWxxSnIwUnEwSGoyQXRxS24wVXZvZFhRQWZZcU9ZNERSTVE1bWpObGhYSXlIUldDSldCb214eFpqNVZnMVZvODFZeDFZTjNZVkc4Q2VZZThJSkFLTGdCUHNDRjZFRU1Kc2dwQ1FSMWhNV0VPb0pld2p0Qks2Q0ZjSmc0UXh3aWNpazZoUHRDVjZFdm5FZUdJNnNaQllScXdtN2lFZUlaNGxYaWNPRTErVFNDUU95WkxrVGdvaEpaQXlTUXRKYTBqYlNDMmtVNlErMGhCcG5Fd202NUJ0eWQ3a0NMS0FyQ0NYa2JlUUQ1QlBrdnZKdytTM0ZEckZpT0pNQ2FJa1VxU1VFa28xWlQvbEJLV2ZNa0tab0twUnphbWUxQWlxaURxZldrbHRvSFpRTDFPSHFSTTBkWm9selpzV1E4dWtMYVBWMEpwcFoybjNhQy9wZExvSjNZTWVSWmZRbDlKcjZBZnA1K21EOUhjTURZWU5nOGRJWWlnWmF4bDdHYWNZdHhrdm1VeW1CZE9YbWNoVU1OY3lHNWxubUErWWIxVllLdllxZkJXUnloS1ZPcFZXbFg2VjU2cFVWWE5WUDlWNXFndFVxMVVQcTE1V2ZhWkdWYk5RNDZrSjFCYXIxYWtkVmJ1cE5xN09VbmRTajFEUFVWK2p2bC85Z3ZwakRiS0doVWFnaGtpalZHTzN4aG1OSVJiR01tWHhXRUxXY2xZRDZ5eHJtRTFpVzdMNTdFeDJCZnNiZGk5N1RGTkRjNnBtckdhUlpwM21jYzBCRHNheDRQQTUyWnhLemlIT0RjNTdMUU10UHkyeDFtcXRacTErclRmYWV0cSsybUx0Y3UwVzdldmE3M1Z3blVDZExKMzFPbTA2OTNVSnVqYTZVYnFGdXR0MXorbyswMlByZWVrSjljcjFEdW5kMFVmMWJmU2o5UmZxNzlidjBSODNNRFFJTnBBWmJERTRZL0RNa0dQb2E1aHB1Tkh3aE9Hb0VjdG91cEhFYUtQUlNhTW51Q2J1aDJmak5YZ1hQbWFzYnh4aXJEVGVaZHhyUEdGaWFUTGJwTVNreGVTK0tjMlVhNXBtdXRHMDAzVE16TWdzM0t6WXJNbnNqam5Wbkd1ZVliN1p2TnY4allXbFJaekZTb3MyaThlVzJwWjh5d1dXVFpiM3JKaFdQbFo1VnZWVzE2eEoxbHpyTE90dDFsZHNVQnRYbXd5Yk9wdkx0cWl0bTYzRWRwdHQzeFRpRkk4cDBpbjFVMjdhTWV6ODdBcnNtdXdHN1RuMllmWWw5bTMyengzTUhCSWQxanQwTzN4eWRIWE1kbXh3dk91azRUVERxY1NwdytsWFp4dG5vWE9kOHpVWHBrdVF5eEtYZHBjWFUyMm5pcWR1bjNyTGxlVWE3cnJTdGRQMW81dTdtOXl0MlczVTNjdzl4WDJyKzAwdW14dkpYY005NzBIMDhQZFk0bkhNNDUybm02ZkM4NURuTDE1MlhsbGUrNzBlVDdPY0pwN1dNRzNJMjhSYjRMM0xlMkE2UGoxbCtzN3BBejdHUGdLZmVwK0h2cWErSXQ4OXZpTisxbjZaZmdmOG52czcrc3Y5ai9pLzRYbnlGdkZPQldBQndRSGxBYjJCR29HekEyc0RId1NaQktVSE5RV05CYnNHTHd3K0ZVSU1DUTFaSDNLVGI4QVg4aHY1WXpQY1p5eWEwUlhLQ0owVldodjZNTXdtVEI3V0VZNkd6d2pmRUg1dnB2bE02Y3kyQ0lqZ1IyeUl1QjlwR1prWCtYMFVLU295cWk3cVViUlRkSEYwOXl6V3JPUlorMmU5anZHUHFZeTVPOXRxdG5KMlo2eHFiRkpzWSt5YnVJQzRxcmlCZUlmNFJmR1hFblFUSkFudGllVEUyTVE5aWVOekF1ZHNtak9jNUpwVWxuUmpydVhjb3JrWDV1bk95NTUzUEZrMVdaQjhPSVdZRXBleVArV0RJRUpRTHhoUDVhZHVUUjBUOG9TYmhVOUZ2cUtOb2xHeHQ3aEtQSkxtblZhVjlqamRPMzFEK21pR1QwWjF4ak1KVDFJcmVaRVprcmtqODAxV1JOYmVyTS9aY2RrdE9aU2NsSnlqVWcxcGxyUXIxekMzS0xkUFppc3JrdzNrZWVadHlodVRoOHIzNUNQNWMvUGJGV3lGVE5HanRGS3VVQTRXVEMrb0szaGJHRnQ0dUVpOVNGclVNOTltL3VyNUl3dUNGbnk5a0xCUXVMQ3oyTGg0V2ZIZ0lyOUZ1eFlqaTFNWGR5NHhYVks2WkhocDhOSjl5MmpMc3BiOVVPSllVbFh5YW5uYzhvNVNnOUtscFVNcmdsYzBsYW1VeWN0dXJ2UmF1V01WWVpWa1ZlOXFsOVZiVm44cUY1VmZySENzcUs3NHNFYTQ1dUpYVGwvVmZQVjViZHJhM2txM3l1M3JTT3VrNjI2czkxbS9yMHE5YWtIVjBJYndEYTBiOFkzbEcxOXRTdDUwb1hwcTlZN050TTNLelFNMVlUWHRXOHkyck52eW9UYWo5bnFkZjEzTFZ2MnRxN2UrMlNiYTFyL2RkM3Z6RG9NZEZUdmU3NVRzdkxVcmVGZHJ2VVY5OVc3UzdvTGRqeHBpRzdxLzVuN2R1RWQzVDhXZWozdWxld2YyUmUvcmFuUnZiTnl2djcreUNXMVNObzBlU0RwdzVadUFiOXFiN1pwM3RYQmFLZzdDUWVYQko5K21mSHZqVU9paHpzUGN3ODNmbVgrMzlRanJTSGtyMGpxL2Rhd3RvMjJnUGFHOTcraU1vNTBkWGgxSHZyZi9mdTh4NDJOMXh6V1BWNTZnblNnOThmbmtncFBqcDJTbm5wMU9QejNVbWR4NTkwejhtV3RkVVYyOVowUFBuajhYZE81TXQxLzN5ZlBlNTQ5ZDhMeHc5Q0wzWXRzbHQwdXRQYTQ5UjM1dy9lRklyMXR2NjJYM3krMVhQSzUwOUUzck85SHYwMy82YXNEVmM5ZjQxeTVkbjNtOTc4YnNHN2R1SnQwY3VDVzY5ZmgyOXUwWGR3cnVUTnhkZW85NHIveSsydjNxQi9vUDZuKzAvckZsd0czZytHREFZTS9EV1EvdkRnbUhudjZVLzlPSDRkSkh6RWZWSTBZampZK2RIeDhiRFJxOThtVE9rK0duc3FjVHo4cCtWdjk1NjNPcjU5Lzk0dnRMejFqODJQQUwrWXZQdjY1NXFmTnk3NnVwcnpySEk4Y2Z2TTU1UGZHbS9LM08yMzN2dU8rNjM4ZTlINWtvL0VEK1VQUFIrbVBIcDlCUDl6N25mUDc4TC9lRTgvc2wwcDh6QUFBQUJHZEJUVUVBQUxHT2ZQdFJrd0FBQUNCalNGSk5BQUI2SlFBQWdJTUFBUG4vQUFDQTZRQUFkVEFBQU9wZ0FBQTZtQUFBRjIrU1g4VkdBQUFhaGtsRVFWUjQydXlkZVpobFZYWDJmMnVmTzlTdHFpNnFlbTZtWm1qNG1vYkUrQkdSTVNKRENKTVFDWW9nQ2tIRktZSUdJUW9tT0FRa3dTaVJxSWdDUmlNRUdVUWtZQVFSWkFvTkNCL0k1TkRkQXFHYm5ydTZxdXZlZTg1ZTN4OTczYTVUcDg2dHVsVlVRenJQWGM5em4rNCt3ejU3ZVBkYTcxcHI3OTJpcXJTbExWdWJ1SFlYdEtVTjNMYTBwUTNjdHJTbERkeTJ0SUhibHJhMGdkdVd0clNCMjVZMmNOdlNsalp3MjlLV05uRGIwaGFnTU5aTkVaa0g5QUpKK2pLd0VsZ3ppZS90YnU5cnFpd0hQSi82eHZaQVYrcVpWeU1DYkFKK1A4NXowNEQ5Z0gyQVJjQk1vTlB1RFFIcmdkOEJqd01QQTc4ZTc4TmRVY1RsdSs1QmI2RkFzaFduMVFXS1R2VWRDa2NnN0FDVWdkaCttMFQ1R25CYjNydUs0T1hWZmYrRXB4K2ZPSENCbllHZkFzWE05Y2VCUDdGQmJWVStDRnhtWUVwLy8ycmdBNmxyWHdlT21NSytYd3djME9UZVRPQnM0TjNBL0JiTDJ3VGNDMXdPL1BoL3VXTHJVN2d4RVhrcm1ZRnJpQmZ1YmdiYzE1TXFQQUQ4c3dFMy9Yc1Q4UEVKZkdjNzRQTkFLVlBPZndPZnptajBVczczWHMydjFLUk9id2J1Qjg2ZkFHZ0JLamF4YmdXK0IvVGtQZVJSL2hjc1h6b1BlT3V3QmgzOW15TExPTFZVd2VTendPSEEzcG5ybndadU5ETS9ubnpSdEZ0V1BneXNHRFhtVXl2bG5HdTdHZkJtamZGZWJCT3ExRVRaQUp3Q3pBYmVsclUrWFM2aUpMSTFnemNDanNtNS9qendsUFZQWHdzMDdIVUQ3aEJ3cG1tbk5BaTZnUzhCeDQ3ei9oRm1pclB5VGVCSExkYnpDV0QxSkp4SkFaN0p1WDVKRTlEK0FyZ09lTXg0dkRlK3ZjakErWTRjMm5RNDhEZkFoU05tUnFXTDZZVUNnOTV2cmNDdEFETnlLT0pCd01iLzBjNVpTaDQxVS8rRnpQVmpnQk9CSHpSNXI5UEFuWlhmMm1DM0toOEY3cHVpTnU4Q0hKVnovUitCYzV1ODh4UndQZkJ0NFB2QTNKejYvWXVCSFlCRm5WMWpLT3F0UnVObUcvREwvd21nblFod0FmN0JCbnovbkFHL0UxaWI4ODQ1d0o0NVZPQkRUWjV2SnNVcGJQTWY1ZENISmNBRkxieDd0OUdibXpLT3dneVF3NEJyUFVwSkhIdDJkaE9QamliTUEvWUFkalF6V3dTcUZxSDVQZkJzRG5WcVZXWmEyVHNCMDYyTmlRRnREYkFNK00wRW9rRkpMbldmbk13SDlyS0lVWStWczhiNi9WZnBDYjhsZ0Z1M3lNQkRxVkJSbzFKL20rT3M3ZEZFZzExdWtZcUptdnlwa2prNTExNENhaTIrZjZ0UmlWMEJGWUdDSXNEdUlOUlFEdXJwWTJGbkY0UEo1ckUvRG5pL1JUZDZ4eWg3dFRuRVZ3RS9iTEUrK3dKbkFZY1kzeDVMbGh2bCt6WndlODc5czgyQ2VwdFUwM01zN0wwcHlpYkFWNXBZM0FoNEozQUdJY3pZM2FST0s0R2ZHM1c4YzBzQUYrQkpBK21sbWVzZk1STzZPSFh0bjR3ZnB1V1pGalhibHBROGdEWTAxZElXM28rQlB3TXFDRjRFdk9KaWRDTW84MHBsVHBvOWgzcmd0aFhnQ3VEVUZ1czJ3M3lHWTRFYkRPenJ4bmorSE9DaUNWaWt1Y0FKOXJ2U3JFZWN1cjh3eDZKbUozMTI0dCtVODl3aVFsanpUMXFvMHl5YkxDY0MzN1ZKdUhhcWdZdk5zS1BUWVJMcnVDOERCMXRIdk1zR04ydDZQZ2owVCtLYjlTa0U3bk5OQUhPYlRhcTdnQTNqbEpGcjJnb2luTFA5ZkxZcmRURGdFeVR3KzFPYmFMNlhyRSsySWNUTHMyRzd2ekRnSDlmRWJKOXNOQzByRzR4MkRKcG03REZxMHBGNTd2MkVwTW9YWDZWbHk3Nnpqem5kZVpadG1WR2hBckJEam9OOEtyREFOUHVhcVFadVloejFZVWJHTUE4QTNtdWE5NUtjOTc1a1ptWXlzcDN4bzhta3FKZG50T3lqeGlVWDVtaUptNEFYekFsNTJrSS9TNjJNbDdQYUwxSVFCQytLUXpocDFsd1dkWFl6a0NSSUtQLzlPUU4zbnBuRTFhbHczUzdBYWNBbk1tTnlOUEQySEZQY0RmeDk1dHBHbTNnM1dsMGJZTzh3a0p3TWZDckQ3ejhJZkJVWXNIOHZOaDRlMjBRNkxQUDhNcU5Ka3FJRHoyUTArdlU1b0wzVkZOc2pLY1UxMitqTmVlWjNOR1Evb3cwbk1rYU1XTWJhNVNzeTVnVDhzSG5TMllGNTJENmFEYVBzVDhnNmpTZTM1MmpyUWRPNms5RUloMXFIcGVWWTRKWUpsRmMxMEM2emdYb0F1S2NBeitHRVdJSkRkdWxPdTdOenVVSTEwSVRUamF1bTVVK0JuNnFBS0tnbHZ3VkFGVVRPelpuMFA4NEpPUjRQM0p5NWRwcXFmb2ZHZURxWHB3Ni9hRUJKTzF0N2tCK0xMMWw3MHhHVUt4bVo1Y3pLRlRuM0x4R0xJUG1NbXJhNjlXaEk1R1RiZUJ6d284bW1mTWVTcjV0S1B6TGpxTTNQNFpRZmJCRzBqQkZXbThySXlhMm1nUzVyd2FGcGFNVUd2OXZITE11UUl2OEpjZ25vQXpYdnVXWHRTajR4ZHdjMERGR2ZLTGhHZWtsQWtRSHZCSFdDV25LaXBna09vY3NWU2FxMUs4S2tsV25odGpqamV4S2dyVGJvTWl0b1BrMDBPSVpyVmZYR1FrZUo3aG5UVVZWV3JGNko5NTZpT0FvNG5GZkUrNGN5N1hJai9KQ0dvZ3JnNzh5WjJJVzhaNjJKTzhtb2VMMzhET0Z2YWdLeDZJaDFDMEtZdkFXVkRVWFA2YUJQbUdWdHlGa2FKcTJmYXVDcU9XV1A1SGlmYWJrWStLL1gwUm5iM0YzT09hSW9vbDZ2UTBnMDNHK1c0d1JDTm0waTBwR2diOFBMa2NDbkVMNTA5N3JWSE5YVHk4N2xEbXFxcXlObHN3S01IYWk0cTFINW1ucTVUMFdXS2F4SzFPTkY2TjF1SHZIZzBQcU5xOWNjb29Ddng2aFB4Q3pmQ0xQb1ZiOE4raTBSVVZjS2ZsbXBxNU9lbWRPSmlrWGlKTWF2ZW9YRWU1eUFFM284dXFlb25qMTJSeGtJdFpWTzFlSDRtSUtnUjRHa0ZZejMrTS9VeERpTEJxQm1BVlFMRHRMcW9uSzVJQmVuN3U2UHlHNU5mSkp4VjRlTmpWelZKVjFkWGVkMGQzZGZsYVVjSWtJY3h3OFBEZzVlbFBkdVYxY1h6clZNV1o5WDFRMlRwQXFibmNGaXNVaTVYS2EvdjUvMTY5ZFRyOWRmTU43M09lQ1BvaWphdDdlM2Q2OG9paFlCMjVxWkxEVXYyb0ZLVWFQNFVoVjV5WHU5N3FGaWtiMW56bUVnU1I0VWtSZ29KQkxZb0ZQZDNTbGZzWmRmQVY3b1JKY0k4cXlMb3VjcjA3ZjVWYkd2NXpmZSt3MjFhcFg2NEpERy9RTm9ISTlvdWpqbm8ybWRGRHNybENwbElvbUt6cm50SlVubWV1KzNCZWIxOXZYTlZhL3pSZGpSSVR0cGNOQzJwT3liZGFnVlBhWVNJZ3ZqRFhRc3NLZU1HRjd0S0pjcmUwOEt1QXNXTEJpM3RxVlM2ZXBpc1hpVWVjRnBXUzhpWjNydmE1T2RHS2tKY3FhSS9IelNLbGVFZXIzTzBOQVEzbnQ2ZTN2cDd1Nm1WcXRSclZZWkdocmFOREF3OENEdzRMeDU4eWdXaXpqbnBxbnFQTy85RHNCZXF2ckh3RUVpTWordGR3SWQ4RlFqK2F6My9wWm5ZZFB5bm1uc1dPNTR2cXBjZ3VyNUNuUUlJQW1wMVF1ekpkQ1V2VkdvcTZlZXhDRHlvZ3FMbzQ3U0RYU1VieXhPbTFhVmVLUzExTWhCeWVIUXd6MjhXL0g3a2ZqdFFTdGhQZ25UWnN6WWpIWFZMUkFOSHkwN1pPbVZCS1V3SVJNK2N0eFpNS21vUXFsVWFnVlVWS3ZWSzNLQWV4L3dlQjQ0SjNIc2t3QVVDb1ZKZ1RhT1k0YUdobEkyekJORkVaVktoYzdPVGxTVkRSczJzR0hEQnBJa3dUbUhxdmFyYXIvMy9ubFZ2Y3ZxM0tPcUo2bnFKVUJ2bzZkTFhxa1cySDBJLzRaYTRoKzZjdm52T1gvN0JTVENCVDVPWHBURW55WEt3aVR5TGF4UDFlMHRndkxub0dlTDZta1c0VWgzWUpmRy9odkpaazZwT1JBWUFmWTFGZzFJbU5vbG95T002RlFYcU9pY1NRRTNQZGdUak9YUkpQYjRxbmhxdlY2blhDNGpJaTJCWDBSSWtvU2hvU0ZVRlJIcHNCRFZOTFVDVk5VQnQvZjA5RHpXM2QyTmlDQWlEZkJ1Qm5valJockg4VGZqT040QVhPdHNiZDlnQVFwREN1SjNUVlFmS2d4VnFmV3ZoNDRPbkl1K2dmZlhvSDRmVWZZVjFUZGErR3MrMEFkU0dnUExid0orZ09wKzZkaXlLRitWUk4rZE05RExnQ2NSZmdNc0VlUWxZSW1QNUVXVVYxeWlwMjlCNEdhZDcwRVZ2Z3NNalUrYWMzc2dBdjNacElCclRzeGtnVHVsaHFrQjF2NytmdUk0bnRCN2xVcWx3YWRGVmYrVzBVc3Nad0NQaVFqcjFxMURWYWxVS2tSUnRGa0RPK2Z3M2xPdjExSFZud0pybmRMWGlKVlJGNlFRbFR1ZGNPeTA2VWppcVczY2lMZ0ljVzRJOWZkS1ZMaFhuRVBDUE9nVlpSNzRYUlRkVTFYM1IzZ0xvMVBDaTRBakZMVllydXdsSWVhYmxsVU85MUZCL2tNZC9UckNkWmZnR05WalZMVjNDMUtGWmFOQ3JlaUY0cUxsSVRpaXpRWUl2RWR6VnRHcFRESUJNUkdBYlBIUWdBaTFXbTBpazJsWUZXemFSTGxjQnRpa3FyOEMzcEo1NUNqZ1UwbVNWR3UxR3Q1N0JnWUdObXZjaGdaMnpqVTBmaThocXhVNk1RR2ZSTlJqWGJIdk5qMHNLSlU3YXVpYkVTbW9ldFVrRVdBSTd4K01vb0lYVjBCRTFrbUlEVC9qMGRzVWo2cmZSVDNYbWFaTnk1NnBKTVIrT1VyaEg5UkYveDZGY2kwK3JLZ0J3aWR4dytMczFaenllVkJGWERUWklYcUlrVm5DQ3ZCT2plUEx4RVc0S0w5Y255Um9Fb05xQ1pGQ0N1RUYwK0x4MWd6Y2dTUko4TjYzN05DTjRDeEpRclZhYldqZHUzS0ErMytBeTVJaytSQ2dEWnFRcFNPcVNxMVdJNHFpYzRFT0hWWXRST29INnlwUDdCaEZGSVNPbXZjM0J5cVFpbWVyMzcxZWo1ZWhpb2pEUldHYzFQWVRhRWpCM3BBRDNMUTY2c3RwNGxJZko4VFVRTUg3RUlYd1NSTGMrU2hDSXJlVGlCeWZTK204NG0yc1hWR0hZN1FUazlzSUt3alRYUGNjVmIxQnE3V1h5T2xQRVFFUnBCRDlvWWg4RDlXS0FWY0lHY3UzMDJTSndOWUMzQk5WZFU4bWwvS3RBemNsU2RKdlhQVmZnVThTTmtpbTVVekNaczR2VzN3M215dXZBRzlVMWJQak9ENHhjRW9CQWFkSzFmSERUZDYvdUNtcG80bXU4MG55bElSRjErbE0xSVhxL1JucXZmZXFEWklCSWpoQW9xaExSSTdPSVYxUHcyWmV2eklIVm9lcTZnOThiSnExWVlKRlFnWk5kUUhlZjE4MU45N2VsVGJUUGs1YWovYklpTWpRTWxXdUVkV1BwQjdaSHVGV1FoYnhpU2JGN0UzaXIxVVpqcU9ISktKY3doanJXcllXNFA2MXlLdWl6UGVsT21FWjhHbFYvV3JPYzIrVnNERnd1YW91WlhnWFJKK3E3aUFpTzZlMWhqZXpYRXAwaFMvSUJUV2ZVRTFpU0JMVSs2K3I2a0daOGs4RGRrWGtHZ2tEdVE2SUVKa0o3S1BldjFkSDV1MEIvbHRFZnBhS0hUeW9xbkZtN000QVhrRGt1eEwyOFlGSUQ3QzdxaDZQNnZ2VWo5ck4wSkJ2RWRiRVBncGNrc3FFdFFqZUVlUHlkNnA2S0NQWGdid1JlSkNRcmJ5SHNBRElBVHVxNmtHb3ZrMUhMd0M2Q3VlK05kWjN0eHFPKzJwb1JzUFVOakpucW5wNUhNZlRDZnZwOG1RdW8zYzVqTGF4SW5pUnBZVkUzNlZSWVVsSkhQT0xaZXB4aktxL3pnYnhqQXdsUFloaFRUeGczbk5IUGxnMEFUNkdTRnI3UDR2cU5TRHZ5NHpqRndqcm4xZVkydW9CNW95RW9XNEE2UXJmSE9IOExXS1NpL1hGaldqYmFsVGZycW8zQmZCSzJscTl3MzdqUlhML1RVUStwT05zZVNxTXh3MWJsTHh5SnJ1K29IT0tnZHZWb0JoeEhHOE9wd0dmUzVKa01XR1g3d0dUS0xmZjQ3NnZ6bjBPMDNKRkVXWkhSUkwxcUtxcThnRjhmUW5vSjdDMHVJd1IrOHlBOXptSVBvbHp0NFlNZ2lLK01SNzZjUTJSa0QvUGxObERhc1ZlcHJ6L0FQY3A4UDhFSENxanZ5czVVYUZwT1hRcGc3VUlpVVpnL2huMS9tRFIrSXNhNHN5RnNVSk1xVHF1QUxsRVhQSExyY1NqeGdTdWIzMmozM09tdlJvdk9NTFN3Y25JRllRdE1sTzF5N0RHOEJKQzRqaW1XTnpjMGJlcjZ1MnFlaUJoQ2VHK3Fyb2JZWTFzSmFXWllzS3l3VlVpOHBUVjd6YkUvWFowMkY4elRwWCt2ZlB4OTBUMUJJWERORVFJcG1mS3J3TWJYZENXand2ODJJdmNvczV0SEsyQUFkZ282TnVkOTZjb3ZNZm9SVjlLYTFhQkRTN1FvZ2NRdVVsRjdsRUI1K01Qb0hxeHdvSEd1K3N1VEx5N1pIUmM5ak1HWHJVeGZXeTBkb3ZCUmFoRWFSaXVRUDNwVHYxWFJQVkVoVU0wN0JqWmh1RmxrbFZnblFzMDVYWVZ1VllsZXFsbFRUOVdJSCs4VE5VRTFocHM5c3BIZUpTdmcwUlJSS2xVSW81amtpUVpFVDJ3djNlcjZrelRYSTJ0NlVQQVdoRjVSVVJxbStzdUJUUnlkQUZKdVlCM3dqOXV0d3NMSzUzMEp3bXhWL0Exbkk4UlZieENJcTdUaTV0dGcxZzBiYlFweElXVFZ5TFZXTVQ0c3l1Qml4Q2dFamtrcVRHVWVKc2Npdk1lcjFCM2hSbEdiVHB0d2c4S3JDejZlSldZT2ZjaWVJbHdQZ2F2MUYwMFRaRUtzS25nNDM3SHhJSUprUWdkRm4wWktsWW9SaVVVcFo0a0pFbE1VZXRFSWNUQmtOZEdIV2N6dk9wc0FGaGU4UEhhcU5GZWlaQ29qRXZSaitNZmVXRHFxVUlqZGRyQ1loeTg5eU0wZU9PZFJuejB0WklXd21vYm1jaE8xdFR5dnFHTmcxeSs1TmU4WmZwTUR1aWJ5YXhpbVUxYXo1cnNRUXYxVUJRaEVtSEllMHJPVVZRbHRqNTNJaFNjdzBVUmlTbzNyM2laTXA2RCs2YlRGVVVNSnZGSWJtbFdKUktoN0J3QzFQendNeVhuY0M2aTZ1TkdmZnJ6dlBZTzUzQUlRK3J4VFpSYVNSd2JmY3p0cTFmemNxM0drNE9Eek8vczRzalpjOW01MG9VVDRmZWJoaGhLWWlvaTdGTHBwQjlaWFJCWkhlcmxtenFBbFNnaUlhemRtTFRHYlVVcmlzZ0k4R1lCbXRXMHpiVGdaTURibUJCNTVUZVNCdGw2cWVwbXJkc0FjUVBJamV4Y3MvbzJuaG5XdUJFZWtLUk9rcW5IekZLWm8yZk41Y2pwZlhRN1NIeENBVWNzRGhWSEpNS0wxU0Z1Vy9VS3Y5eXdnWjBybmZ6WjlENzI3T3lrTTRwWWx5UXNyY2JnQ3R5M2RpVzN2ckljZ0owcUZkNDVaeTV2NmUzREp6SFZvTTAyYThCVjlScjNyRjNEeTlVcXp3ejBid2JmRGgwVjl1cWV4bkV6WjFCU0dMSzZLNkJ4V0FmVlZZaTRZODFxQmhQUG4wN3ZZNXVvUUd6aE5SR2g1ajJSQ092aW1BdVhMdUc1d2NGUmZiUnRSd2NGaEplclE5UTFMTEEvY2Zac2pwazFseGVxUTFTOVoyRlg5K2JEVWdvK0RxZitpRkNLaXZ4azdUcnVXYk9LbGJVUUtueGgwK0NXQVc2YU5vdzE2SzI4bndWZEhpZ2J3TW1iSUdPVm0zMDJiNzNEQ0ZEbVVKc3N1RnRwNzhLdUxzNmZ2eE1WRVo0YUdNQzVDSS9qc2Y3MTNMbG1WWG9uTUFCN2RIWXhyMXppeVlFQlZ0YWFiencrdEc4NnA4MmR5NXhpbWFxTFdGMnZjK2VhVmR5eGFpV3I2czNmZTFOUER6TUxSUlowZFRPdFVLVGlIQXM3eWt3dkZQamhxcFY4OWFVWEFaamYwY0dpemk1MjY2eFE4OHFMMVNwSHpwak90Q2ppODB1WDh1dE5FOXNYTUxOWVlrMWN4NnVHQ1RSckRnVVJmQkt6c0t1VHlEbXVlZmxsN2xpOXFqV2xseDJFVmdlRXNOR3RXV3l3ZzdDZTliWGdBRVhDMm9QWmhCMEtzKzFYbU9vUFpZSGRxa3d2RnBsWEtqZTd2UnRoRzlGK0V5MTN1M0taODNhY3p5bHp0MlZtY2RSS3ZuMEpYdjNoakgzVUZEdDFkSERzakpuamQ3UUlYZEdFVXNKZkkrd0tIMU42Q3dXMkxaY25oTTlYQTl3empDTmx0ek9YQ1h2TWZyUWx3Sk1qQjFvZ2Y2MzkxbG5XYXlJN0dnNWlkSnIxdFpKRjVxMGZNa1hsYlVQWThyTEpraTNyQ0puQzEwTnVJR3pHYk1nZk16cmRQaTRkbkdyZ1JwWUpXWktKUjM3QlBOdUZyMUhuSEdaVTdVVENmckEzMjU4ZEV5ampkNjFvaHExRXpyUCsyTjhVeDF4YTIxZjNXc2d2Q0llUnZLN0FoYkFkWkZOcVZ1MXRuZmFoaGdOSzJPSDVBR0hmMldjekNZWnNOa1VJVzdUL2I4UEtBaDhqN1BxOW01Q2ViQWJjWm9QelRzTHFyMDlZSGY0emxYRFloM0M0eVRyQytvUkxDU2xLQ09zV3ZtUFc0OVpNa21LZTFldG9HNHhMVGRPZFJUaHY0anJDRnZjdk1YSUwvekhBU1lTZEFZOGJQWmhKT1BteUoyWEo3aWVrU1U5SXZYdEVTQ0x3dVBYRHRrM2FlNldGbXBvdDdKNXZ6L3lTc0tQNjBNejlJd2dMWmg2ejltUFc2S3pNY3ljM0VpQ0VoZThmSSt6VXZaK3cyQWJEd1p2c201Y1N6cEw0Zi9iM0F3bm5iMlN6YVNmWm1HMVI0RUxJdjZzTjRtS0dqMWR5aEhNS1ZnTHZJUnpKK1NMaFRJRUdJYnVMa2NmdVJCYVkvcXNVLzFQQ0l1b3ZFSFlVWjBubW9mYk1jWVJBL042RVlIZERick15cjdPT3Z0NkFPdE40NEpXRUU4Y2ZCYjVoNW13dTRTeUZXK3lkSzIyQ0xzeE0wTldtcVE4bUhHU2gxdDZ6YlZCV1dCODA2dnd0ZStZQjRIMDI0UHZZdFZsV2pob0lUazNSaDZNdENmSTV3azZUeFFhc1BHSjRsSld4Mk1wTHl3d0x4ZjNVMnZVVlMzNDBqcEE5eGQ3OVp3UGhYMXJkejgwSm5kM1A4R21iKzZYYWZqN0RoOFc4WWttTStaWllldGtTVTk4dzRGNXM1WGFrTW5QcjA5Um1Td0lYNE4rdFkxZmFZR0Nkcm93OGh1Y05kdTE0Ky9jdGpEd2pLN0xHTnZibTcyTFBYelRHdHc5T2dYdWQvWGxENnY3TkJxQlN5cWxNQ0V2bTBwbS85T21SRnhzRlNzc1RESjhjMDJoSG1qdnVhdGMrazdwMnJGMXJBUDVmYkFLazEwSHN4L0NKTmg5SmdUaHRoWDVKT0NRanpXUHJqRHhOS0MybkE2dXNyTytrdFBtNWpENkY1MTRERmFZUnI4b3A3K09tZE5MeUUrRGFGSGZWbE1KcHlHOHlGT3puaEdNTk5nZGQ3TDNHQkR2Y1l1aHp4Z1B1VkRsUDV4bkh2RGpWd0lOTWE5MlhHZnpmV1lmL2tQek5VcG9aTk14RU5rM3dwYlRTNyt6OWFzWlpmSWpoMDJ6VzJhemVKaDAxeTJpdlB6Q2czMnozbExBWjhBOHk5ZnBKVGwzdlNGMTd0QkhsTWsxVEpxUTRsMmZhM05BMnR4aWxlWnB3S3MwM0dUNkpKckg3alhjS2hCTVE3ODdwazZ2TlFmc1l3MmUxdlJmNFEzdjNKbE1TYXBUSW04TFpsbkE0UjB2ME02TndsUHpERExQUHBSYzJQR3Q5ZEpLQitoVHptOFk5c1hLcWdMdmVnTEVpVTJFaGYvR0dwZ0NUWkVKYkhabkdhb3VackJkTlk1RHp2VTA1QVBOamREQ21tYTVQOWRHL3BzcHZ0R0ZndkFpYS9WbE50YmRaVzhvV0JUZ0ErRHN6cHp1a05QaVRScTBhMzc3S0prRXpXV252empLVGY0WnA2WFhXcmdhQXZtdnQ2bWpTRHpRSmEzWXljczF5Sy8yUlYvNDFESytQUGdUNDYxWUFOMVhBalhMS3U4dWNzZjFTV3ZjTmhBUGVHcHBxcldtTmRMaWtoOUdIM0xVU0QwNWFBRkNyL2ZDdzhkOGYwR1RyU0U2OU5NVXhGNmNjUnpJQWszSHF1TnljbXJLWi9Bc0lSeVRObklBMnpMWXR0dm8xanNlNkxZZXpsb3ovbnBxanhkZVlvOXhKU0ZsdlkwN3NieWM0VG9XYzl0OWtiVHpIbE45UFhrdmdpblYwT2dyK2dNMm1tODFycmhFT2FyczVWYm5yelhHN2dIRFkzSWZ0ZWtlcUk0U1I2MGViRGZpUFRKczFOTklwcHNHNmMwRGRtNm5yMDhhcmx4cWR1WUt3RzdqQmEyT2pJaGVaNW11YzFwMGRxTHJ4dkVIam1KZVpSbHVXMGxMVGNzYkFtVlU0ME9LY3Z6WFEvOXlldWRENjdDYmpsWFBORWYwb28zZlh2c3ZBdWRpVXdzbFc3OFRlUGRzaUV4ZFpQWTh4Wit5L3JPNDNFeFlWM1VrNGV2VUtVMEpxZjcvTityYVVvbGVOTnJpY21ISTZMUG1rUlF6dU03L2lRY0xLdEhzTUExOW4vSk15eHlhL0UzVE9LalpqOXNvQjFWbFdzZnZNQWNvdVdQNUxBL2tkRnZaNlR5b2sxV3Y4ZWM0NElibnp6T1ArZk9vM0t4VnlPeTVqSGM3SzFIVlhjekFmWnZnLzdOalJCdlFoNitBclVtWE9zVyttOTM4dHNBRS8xY3A2eERoL0plUHhuNXlwLzdibU5KV05ROTl1dk84eVJ1NzRQZEFpSTQrWVJ2eGtFKzI5RCtIRXhzZU41NTZhZVc2dVRjWUhyVzFYTS9MTXJvTnNnanhDT0htekViNThxNFVTZjJHVCttaUdENnBydENIN1B4Q2R5Y2dFMVR5TDR6NWluTHNoYjdPSmNkQnJGY2R0eTBqZ3FqbGliWm1Zbkd0Um5HS3J3QzIwKzJ6S3BHRW11OXBkMGJLOHdTenNYMWxjdS9XekI5b2FkOHFrMi9oYlg3c3JXcGJEak02Y1BsRjhTaHVnYmRtYXpWdGIydElHYmx2YTBnWnVXOXJTQm01YjJzQnRTMXRlUi9uL0F3Q080MUxCQ2p6MDh3QUFBQUJKUlU1RXJrSmdnZz09In0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMTgtMDgtMDEiLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IkZJRE8gTDEgQ2xpZW50L0F1dGhlbnRpY2F0b3IgQ29tYm8iLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlVBRjEwMDAyMDE4MDIyMTAwNCIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4zLjIiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMC4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDE4LTA4LTAxIn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAxOC0wOC0wMSJ9LHsiYWFpZCI6IjAwMjIjMDEwMCIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFpZCI6IjAwMjIjMDEwMCIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJNb3ZlbmRhIEVnb21ldCBGSURPIFVBRiBBbmRyb2lkIEZpbmdlcnByaW50IEF1dGhlbnRpY2F0b3IifSwiZGVzY3JpcHRpb24iOiJNb3ZlbmRhIEVnb21ldCBGSURPIFVBRiBBbmRyb2lkIEZpbmdlcnByaW50IEF1dGhlbnRpY2F0b3IiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJ1YWYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X2RlciJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfZGVyIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfc3Vycm9nYXRlIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJzb2Z0d2FyZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJzb2Z0d2FyZSJdLCJhdHRhY2htZW50SGludCI6WyJpbnRlcm5hbCJdLCJ0Y0Rpc3BsYXkiOlsiYW55Il0sInRjRGlzcGxheUNvbnRlbnRUeXBlIjoiaW1hZ2UvcG5nIiwidGNEaXNwbGF5UE5HQ2hhcmFjdGVyaXN0aWNzIjpbeyJ3aWR0aCI6MTE4MywiaGVpZ2h0IjoxNzM2LCJiaXREZXB0aCI6OCwiY29sb3JUeXBlIjoyLCJjb21wcmVzc2lvbiI6MCwiZmlsdGVyIjowLCJpbnRlcmxhY2UiOjB9LHsid2lkdGgiOjU5MiwiaGVpZ2h0Ijo4NjgsImJpdERlcHRoIjo4LCJjb2xvclR5cGUiOjIsImNvbXByZXNzaW9uIjowLCJmaWx0ZXIiOjAsImludGVybGFjZSI6MH0seyJ3aWR0aCI6ODQ1LCJoZWlnaHQiOjEyNDAsImJpdERlcHRoIjo4LCJjb2xvclR5cGUiOjIsImNvbXByZXNzaW9uIjowLCJmaWx0ZXIiOjAsImludGVybGFjZSI6MH1dLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOltdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFNZ0FBQURJQ0FJQUFBQWlPam5KQUFBQUJHZEJUVUVBQUxHUEMveGhCUUFBQUNCalNGSk5BQUI2SmdBQWdJUUFBUG9BQUFDQTZBQUFkVEFBQU9wZ0FBQTZtQUFBRjNDY3VsRThBQUFBQm1KTFIwUUEvd0QvQVArZ3ZhZVRBQUFBQjNSSlRVVUg0Z01CRFNJM2Y1Tjk0QUFBR2VGSlJFRlVlRjd0M1gxd1ZOWGRCL0J6enQyYmZjbHVTRWdJRXBKTkVDWFFJQVJDVUxRKytGYW5pcFNxcmJhV2NiUlRIS3N6OW8rK3pmU2ZwNTNwMDMvYXB4MW0ybWZHZ3ZXbHFIV3FkaXJGbDZLV0NpS1FoSkFJUWhCSXNra3c3MitiM2J1Nzk1N3plLzdZWk4yRTdONlh2V2V6YTg5bm5NNDBuSnZzN3YzdXVlZWVlMTR3QUNCQnNCdlJLeUFJVm9oZ0NWeUlZQWxjaUdBSlhJaGdDVnlJWUFsY2lHQUpYSWhnQ1Z5SVlBbGNpR0FKWEloZ0NWeUlZQWxjaUdBSlhJaGdDVnlJWUFsY2lHQUpYSWhnQ1Z5SVlBbGNpR0FKWEloZ0NWeUlZQWxjaUdBSlhJaGdDVnlJWUFsY2lHQUpYSWhnQ1Z4OElZSWxWZ25JUFE2OUFqbVAwdGloUTZCcDhzYU5wS3dNWWF4M2dKQU5lUjhzTmpvYU9YQ0E5ZmZIRGg1MGJOeFljTU1OMG9vVklsNExMdStEcGJXM3M4RkJ4Qmp0NmFHOXZlclJvODRkTzV5MzNvb2NlZi9XOGxwK3Q3RWdISTZkT0lGVUZXR01DRUVZczZHaHlFc3ZSZDk2QzFSVjcyaUJvL3dPRnIxNGtWNjRNT3ZDUndnb1N1VFZWNk92dlFhUlNPcERCYjd5T1ZpTXFTMHRNRFUxdDBXRk1VU2prUU1ISW4vNUN3U0RLUTRXK01yallMSEJRYld0YmY1Mk9zWklWYVAvL0tleWJ4OGJHNXVuZ01CWkhnZExqVGZiVTkwQVlvd0FZaDk4b1B6cFQyeG9hUDR5QWpmNUdpd0loZFFUSjVDbTZSVkVhbk56ZU85ZTJ0dXJWMUN3VTc0R1M3dHdnVjY2WkxDL1NqdDFTdG16aDE2NnBGZFFzRTErQm90U3Rha0pRaUdEd1VLRWFPZk9oWjkrV2p0N1ZxK29ZSSs4REJZYkdORGEyNDJtS280UTJ0MGQvdU1mMVpNbjlZb0tOc2pMWUttblRySGhZWFBCUWdoaHpDNWZWcDU5VnYzb295L2FjMnRLWVhJU3BxYjB5bVZQL2ozM2dLa3B0YWtKVVlxSStXOEZJV3h3TVB6Y2MrNW90T0RtbTVFazZSMlEyelNOZG5WcEZ5L1N6azdhM1MydlgrOTY0QUVySHdzSCtSY3NyYU9EZG5XWnJxNFNDSUdKQ2VYUGY0YXBLZWRYdjVxL2p4VFowRkQwN2JkalI0NUFNSWcwRFFGZ2x3c2lFZXp4NkIyYURmbjJzV3FhMnRRRTRYQkczMHVNSVJTS3ZQb3FLSXB6KzNic2N1a2RrR00wVFcxdGpmejk3L1RpUlFTQU1FYVNoQUJZZno4Ykc1TkVzQ3lnL2YzYW1UUFdxNnNFakNFU2lienhCa1Nqcm52dnhZV0ZlZ2ZrQ3RiZkgzM3JyZGlSSXpBMUZYL3VQdjBQR0VNb3hBSUJhZm55dEw4Z1MvSXNXRnByS3hzWnNTRllhT2F4ejl0dlF5amsvdmEzY1ZHUjNnRUxUVlZqVFUzUi9mdHBaeWRDNk1vNkc2SlIydDB0YjlreXo3RlpsMC9CZ3NsSjY4MzJlV0dNTkMzMndRZWdLTzZkTzBsWm1kNEJDNGIxOTBjUEhJaDkrQ0dFUW1uZVBnMEVJQkxKaFl0N1BnVkxPM2VPZG5mYlUxMGxZSXdZVTQ4ZFE2cnEvczUzU0VXRjNnRlpwMWRSZlE1ajJ0Y0h3YUFJbGhtYXBqWTNReVJpVzNXVkRHTzFwUVhDWWZjamowalYxWHFsczhkZ1JaVUFrNVAwOG1XeVpJbGVRZTcwWDJ1T29IMTkydW5UTmxkWHlURFd6cDROUC8yMDF0R2hWelFyVkRWMjlHaG85Kzdvd1lORzc0SXhCa1ZoZ1lCZXVXd3c4SEp6ZzlyYXlzYkdPQVlMSVlReHZYaFIyYnRYUFhWS3J5aGZyTDlmZWVFRlplL2U2UWZ0eHQ4MVk3UzdHK1hBc096OENCWWJIMWVibWhCamVnVXpSZ2dOQkpSbm5sR2JteGZtc1krRmlpb1p4clNyaTRWQ2V1VzR5NDgyRmoxN2x2WDJtdmppWm9JUU5qUVUzcnZYSFFvVjNIeXo2Vk9iQWJNdHFubGd6TWJIMmNBQUtTN1dLOHBYSGdRTFlyRllVeE92WnZ1OE1JYnhjV1hmUGxBVTV4MTNaT0d4RDBTajZ2SGowVGZmcEYxZENLVzk5VXNQWTFBVUdnZzRhbXYxaXZMRi9TUExIT3ZybzJmUFpxbTZTc0FZZ3NISUs2OUFKT0s4Nnk3c2RPb2RZQjN0NjR2dTM2OGVPd2FLWWoxU0NhcEtBd0hFbUEyL0tnTjVFQ3oxNUVrMlBwN3RZS0hwYjMvazlkY2hISGJkZXk5MnUvVU9NQTJpVWZYWXNlaisvZE1qcDIySkFzWXNFSUJ3R0h1OWVrVTV5dlZnc2JFeHRibDV3YjUvR0tOWUxQcldXeEFPdXg5OEVQdDhlZ2VZWUhORmxZQXhIUmhnSXlPU0NGWWEydW5UdExmWCt1Y2V2N1BMcExiREdLbHE3UDMzVVRUcSt0YTNTR21wM2dINnVGUlVDUmhES0VSN2V4ZTJwemVuZ3dXeG1OcmNqR0l4aXg4OWdGUlpDWXFTNlhQcitFeXlJMGRBVWR3UFAwekt5L1VPU0lkWFJaVXNGcU5kWGVpbW0vVEtjWlRUd1dLQmdIYnVuTVZNQUdDbjAzbnZ2ZGp0VnA1L25nME1XUHc5U2RUbVpnaUgzWTgrS2xWVjZaV2RCOStLYWpZYUNJQ2k4R2dYR3BUVHdWS2JtMkZpd21JZ0FNank1WTY2T2xKY2pKMU81Zm5uYVhkM3B1Y1NZKzNNR1dYUEh0Zk9uWTVWcS9SS3o1S05paW9CWTNiNU1reE9MbUN3T0wvRERMRGhZZlhrU2V2ZDM0VEltemJGK3drZGRYWHVYYnNjdGJVMjlOMFRvblYwUlBidGcvRnh2YUxUSUJxTi9mdmY0ZC85TG5ib1VOWjY0eUFZWE5nNXV0bDRrOVpvWjg3UXk1Y3RuZ1lBVWxJaU56UWtmdUM0OWxyM3JsMk9kZXZTSEdTQzI0MEtDdlFLSVlRUTdlcFM5dTVWbm4yVzl2U1llK3FYQ1l3aEVxRUwralRhMG1uakR5SVJ0YW5KK3NOVUFNZmF0WE1HNlVwVlZaN0hIcE0zYlVwMWtGR3lYTEI1cys2Y0JWQ1U2THZ2aG5idmpoMCtuTFdLNm5NQXRMc2JZakc5Y3J6a2FCdUxkbmRySFIwV3Y5OEEyT1dTTjIyNjhsRU1XYkxFL2QzdjRzTEMyT0hEaUZJcnY1OHhhZmx5M1pxUGRuVkY5KytQTlRXaGFEVGJrWXJEbVBYMlFpaUVqZFdzdGx1STk2d0xRRzFwZ1dEUXlvbEhDQUVRdjkreGV2VzgvMGhLU3R3N2R6cnZ2QlBKc3BVR0hNYU8rQ3E2cVVFNHJMejhjdXpJRWVzZEpYTlllSjBJc2JFeDl0bG5lcVY0c2VOdDI0ME5EMnNaTjl2VFRJN0FYcS9yd1FkZDk5eURYUzV6ZndVQSszeHlRMFA2eEdOWkpsN3Y5TVNzREFFZ2hMRGJiVHFnTTArajljcnhZdkxsWm9YVzNrNzcrMDEvbEhFQXBLeE0zcmd4ZlNuc2NybnV1OC8xalcvZ3drSVQyUUp3MU5icTkyakxzbFJUWS9IMUoyTU1PNTBGWC82eTY2R0hzTnR0NG5YR2FScnQ2a0tVNnBYakl1ZmFXS0FvMDgxMmF5Y0d3RkZYSnhtWkV5SEx6cnZ1d2w2djh2TExNRDV1Nk0vSnN0ellhR1NxQXFtc3hHNDNLSXJGU2dzQUlTVDUvYzV0MitRdFcxQWtFbnZuSFdwMmFRYU1hVThQaE1QMlB1STBLT2VDUmJ1NnREbnIxUm9IZ0QwZXViSFI2S0lNa2xTd2RTdDJPcFdYWG1LRGd6clpZa3p5K3gxcjE2WXJNME5hdmh6N2ZLQW9lZ1hud3hqMmVPVHJyM2R1M3g2L3NRVkNpTjlQQXdHajd5c09Zelk4eklhSEpSRXNCS0EyTlVFd2FLait1QktBVkYxdHJrOGNZM25MRnVSeVJWNThrZmIwcFB1N0dNc2JOeHA4Q0kxOVBsSlJZZm81VXJ5aXV2cHE1L2J0OHFaTmlSczZMTXVTMzYrYS9VemlUNk43ZXFRVksvU0syaSszZ3NVR0I5VlRwOHlkakdTU0pEYzBXS2o1NVEwYnNOdXRQUGRjeXVWR0FQQ2lSY2s5cnVsaHQxdXFxdEphVy9VS0ptRU1lNzBGTjk3bzNMYU5YSFhWbkgrVS9QNzRtaC9tUHB4WWJLSGE3eWEvQkp5cHAwNlovcFluQUpDeU1vZGVzejBWeCtyVm51OS8zN0ZtemZ4dFpBREg2dFhFNzUvbm4xS1FhbW9NOXM1UFYxVFhYdXQ1L0hIM3d3OWZtU28wYzIyOTh1YzZNS2FkblJBTzY1V3pYdzRGQzhKaHRhWEZ5SHExOHdOd3JGc256WGRXREpLcXF6Mjdkc2tORGZOa3krbVVOMjgyMWRrb1ZWWWF1dVZrREJjVk9lKyt1L0FIUDVBYkc1RXN6MXNLRnhXUjVjdjFmOXNjR0xQUFBvT0pDYjF5OXN1aFlOR0xGK25GaTVhcksxeFlhS0xabmdLcHFIQS8rcWg4NDQzeE1WalRQMlZNcXF4MDFOV2xQWFF1VWxvcWxaZW5pd0lBd3RpeFpvM25pU2ZjRHoyVWZ2b3lkcnNsdjk5MHNCQ0tON1AwU3Rrdlo0TEZtTnJjUE04MkV3WUJTRFUxam11dTBTdW5qNVNWZVI1NXBDQyt6VlA4UkJJaU56U1luVkNGM1c1U1daa3lDb3poNG1MWGpoMmVwNTZTNit1TmZCK2s2bXBrb0tkakZvd2hHbDJRWmxhdU5ONVpmMyttemZiR1JydVd1Y0pGUmU2ZE8zRmhZZlR0dDFFMFNoWXYxdTF4bllja1NYNy81K2xNQUVDRU9OYXRjKzNZNGZqU2w0emYvMHArUC9aNHdPeThFZ0FhQ0VBMHluV2kwWlZ5SlZocVd4c2JHakwza1NVQWtLVkw1ZnA2dlhJbVlMZmJkZi85Mk9PSi91MXYwdXJWeE5KcVpwTGZqOTN1V2N1R00wYkt5Z3J1dU1ONTIyMTQwYUswUjg5RlNrcWtwVXMxcytzTVlFeDdlMkZxNmo4eFdCQUtaYlR3RllCY1gwK1dMdFVyWnc1Mk9sM2J0cEdpSWxKYWFxclpua0NXTGNPTEZrRjh3anNBY2pqaytucm4xNy91V0xYS1hEZ1FRZ2hoajRmNC9jajhVdlV3UHM0dVh6YllBMmVYbkFpV2R1R0M5ZlZxQWJEWEt6YzBXQXhsZXJKY2NOdHRsc2VkNHNKQ3Fhb3F2amdBV2JyVStaV3ZGTnh5aTVWZWd6aENKTDhmeWJLNTE1T1lHMzNkZFhwRjdaUUR3V0pzZXBzSmE4a0FrRmF1bEZhdTFDdVhBV3N2RENGY1VDQlZWYWt0TGZMR2phNGRPekova2RQWFZyTzNPSlRTN202a2FWbFlLeUFoZTM4cEZYcjVzdWx0SnBJNUhQS21UYnJqT1JlS282N09VMUlpYjlsaXl5c2tTNWVTNG1KcWRxUWF4alErTnpxTDY2eGEvQzdhU0d0dHRiTE5SQndBdWVvcWU1dnQ5bktzWGwxdysrMjJwQW9oUkFvTHBlcHEwNzFaR0xQUjBTenZyYmZBd1lKZ1VHMXBzVDVtQ0VCZXZ6NFhWa1pNeWRvWEpoVlpKbjYvNlV0ei9HbDBmQjJiYkRINUV1Mm1uVDl2ZmIzYStIak94a2FMaCtjbnFhYkd5cUEvVmFVOVBhYVB5c0NDdHJFeTNHWUN3SEhOTlZKTmpWNDVRMFpIUjg5MW5BTUd4Y1hGcGFXbFJVVkZIcHV1WC9hU0tpcHdVWkhwa1Y0WTArNXVVQlM3THNxNkZqSll0SzlQKy9oajYvV053eUUzTnRvMTJiZWpvK05Ydi9wVkpCS1JaZG5qOFZSWFYyK28zM0RUVFRkZGZmWFZlb2RtRmZiNXBPWExXWCsvdWM4TjR5eHZpTEtRd1ZKYlc5bm9xTGtQS0NIK1lGaHZHcFp4bEZKRlVSUkZRUWlOVDR6MzlmVWRQMzc4d0pzSHZ2bU5iOTV6enozTzdIWmJwNEZkTHNudlYxdGE5QXJPbHZVTlVTeGRnK3dBazVOcVM0dTV2cjVrR0RzMmJMQjNMd21NY2Z4L0NTYVNKQ0dFdXJ1Ny8vQi9mM2oxdFZlWjVkZkpBYW1xUXVhREh0OFFSYStVYlJZc1dOcTVjeXdRc0ZoZEdadUdaUW9BVUVvWlk1RFV3aVdFS0lyeXlpdXZuRFgvSUdXT1dDdzJOajQyTkRUVTA5TVREQWIxaXFjajFkUVFJeU85cmhEZkVFV3ZsRDBXNkZLb3FobHRNMkZ3R3BZWmZyLy8vdnZ1UDlkeDd1elpzNHFpNEpuSUVrS0dob2JlZi8vOU5XdldFRXV2ZG1CZzRQRGh3MjN0YlQyQm5vbkpDWWZEOGNNZi92Q0c2Mi9RT3k0bFVseE1saTQxM1lySTdvWW9DeE1zMnR1YjBUWVRocWRoR1ZkZFhmM2trMDlPVFUwZFBIanc2VDgrSFF3R2NkTExhMnR2Q3dhRGkweU9SMEFJSGYzbzZEUFBQTlBSMGFGcFd2d1hlandlVGJVNlNoWWhORFBvVC92a0U3MkNjMlZ6UXhRclg4SE1xUzB0MXJlWmlLK2VZR3dhbGlrWVk1L1A5N1d2ZlczcmYyMU52aUJpakFjR0JrWkhSOU1jTzY5UFAvMTA5KzdkWjg2Y0FRQkprdUlWSGdDQSthdllMSVJJMWRXcEJqR25sTjBOVVJZZ1dHeDhYRDE1TXBObXUvRnBXQlk0SEk0Tkd6WVV6QjRuRTQxR2gwZUdVeDB5THdCNDk5MTNBNEdBTkRNNkZBQktpa3ZXcmwyN3VIUngrbU4xRWI4ZmV6eW1tMWxaM0JCbEFTNkY5T3haMXRkbnNib3lPUTNMR3AvUEo4dXlxcXFKcXlGakxCcUpwajlxam1BdzJIcnE4K2xmQUxCMjdkb252di9FeXBVck0rOTZsY3JMU1drcG5adzA5ekhPYkloaWRwaTFCZG11c1NBV2k1MDRZWHArWElMNWFWZ0xaV0ppWW1CZ0lCNU5BSEM1WEE4ODhFQjlmYjNQNTVNTWpIQlBEeGNXU21rRzFLY3lzeUdLWGprYlpEdFlMQkRRUHZuRVlxb1FRZ1VGeVZPRWM5bFVhRXBOdXVoNHZkN2FWZlp0UStKd1NEVTFScVpnekpMRkpXaXlIU3kxcGNYNmVyWHgzbllPelhZdVp0Y21FcEZjdHQ3R3hnZjltYTYwRWh1aWNKYlZZTEd4TWJXMTFmUm5rUkJmcjdha1JLOWNMZ0prOVYyblFDb3FyQXpjbTlrUVJhOWNwcklhTE8zMGFkclhaN2xUbEJRWFc1bUc5UVVWZnhwdCtsczZzeUdLWHJsTVdUckhsa0EwT3IzTmhEVUEwcG8xMXFaaG1lVndPTEMxaTNWcTl2OUNwMU95Y0JNenN5R0tYcmxNWlM5WXRLdExzN3c3SEFCMnVRb2FHN1BUYkM4cUtwSm5kejh5eGxTejNUK3ozNmltYVdHN0wwQ1MzMjlsdG1COFF4VE9zaFdzK0hxMVp2dGRFZ0JJWmFXMFpvMWVPWHZFKzdFUy94ZGpISTFHKy9yNjBoeHlKYXJSNUI3MmNEamMyZFdacHJ3RnhPODN0TzdJRmVJYm91aVZ5a2lXZ3NWR1JyUU1tKzJOalZubzFvc3JMaTVldG14WmNpd1lZOGRQSEo4d3MyeEwvMEIvWkdZb0FjWlkwelRGN25OSlNrcElSWVhwVDNWbVF4UzljaG5KVXJDME0yZm9aNTlaYjdhWGxNZ2JOdWlWczQzWDYxMi9ibjN5VHdnaDdlM3RML3o1aGFHaElTUFhSRVZSUHZ6d3cwZ2trdWdnOVhxOS9pcnpUYUswcHBlZ01TOExHNkpZT3RNbVFTU2lIajl1L1JIVmZOdE1jSVV4dnZYV1d5dVdWU1NQNzFOVjlhOS8vZXVQZnZ5ajMvLys5MU9wMTVrTkJvUEhqaDNidlh2M29VT0hFaytkRVVLM2JMM2xHanNXdzVrRjQrbTUwYVprWlVPVWJBU0xkblpxNTg5YmJsMmwybWFDcTlyYTJ1OTk3M3RsWldXSkN5TEdtRkxhMGRIeHIwUC9TdE1NUC9QSm1WLyt6eS9mMlA5R05EcjliTEd3c0hEN1Bkc2ZlZVFSSHVPYkpXdFBvL2x2aU1JL1dJbjFhcTBHUzZxdVRyWE5CRDhZNDd2dXV1dkhQL3B4WldYbG5ER2xoSkEwZlFlYU90MldTZ3gwM3JwMTY1TlBQcm1Fenlnb3NtUUpXYnpZZExCbU5rVFJLMmNkOTJDeDRXR3RyVTJ2VkdyeGhhOHNkREZuYkdobzZFVFRpYkd4c2VRZnhrT1dwaHNkQUlCOVB1SUtBSTRlUGZybVcyOXFscGZBVEF0N1BOWlcrdU85SVFyM1lHbnQ3WFJnd0hxenZiVFVrY1ZtZTRLaUtIdjI3bm45OWRkRG9WRHk0QmxDaU52dEpqamwyeWtySzl2VXVHbng0c1dKYkkyTmplM2J0Ky9qano5T2RVaEdIQTZwdWpvSG4wYnpiYmpZczgxRUJ1dlZXbmI4K1BIMzNuc1BKZldZQThES2xTdnZ2dnZ1MnRyYU5HT1VWNjFhOWZQLy92bnAwNmQvKzd2ZmRuZDN4eStkSXlNakh4NzlzTDYrM3ZiK2Q1UllnaVljTnRmWTBEUWFDQ0JLVFlmU0dFdm4yekI2NFlMMjZhZm0zbkJDWXB1SjdEYmJFVUtxcW43d3dRZkpkUlVBVkM2di9PbFBmdnJRdHg5cTJOZ2dwNzRSa3lUSjQvRnMzcno1emp2dlRKNThjZjc4K1JDZk5nMnBxTUFXZXZobWxxRFJLMmNSejJEWnNsNXRyWDFqbUF5Ym5KdzgxM0V1dVhaaGpOMTQwNDNYbVZtN2JIWHRhcmZibmJnZ0RnNE9KdTRUN1lXOVhvdUQvb2FHMkxDNThkYkdjUXdXR3h4VU0xbjRLdDVzOTNyMXl0bHZkR3gwWW1JaU9WaE9wL1BhYTY5TmM4aVZpb3VMRXdQbk1jYVJTSVF5cTR2cXBEWDlOTnJzNXp5eklZcGVPWXM0Qmt0dGIyZURnNmJmY0Z4OGQ3Z0ZXdmhxY25JeStTWU9BR1JaTHZLWnV6UEZaTzRieDhqU1IySEE5Tk5vczVVV3p3MVJlQVVMUWlIMXhJa010NW13ZmIxYWc4TGhNTDFpeVM3VDdXNlRaemtUVWxXVmxhWElNYVpkWFp5YVdieUNwVjI0UUM5ZHNseGQyYkxOaEdYOHFoWk84S0pGWk5reTB6VVd4cXkvbjlPR0tIeUNSZW4wZXJWV2d5V3RXR0hMTmhPNWcydFlzY2RqWlFuSitOTm9QczBzTHNHaUF3T1pybGU3ZWJPVnVqMkhVVWFqTVM1M2hYR1MzMjkwczdFRW5odWljQW1XMXRhVzBYcTE1ZVh5K2xtalZ2S1J4K054SlBYQVRVMU5uZTg0bjZaOGhxdy9qUTRFZ0VNL2lQM0JncW1wNlcwbXJJbXZWMXRlcmxjdTF4VVhGeWNHUjJDTUZVVjUvVyt2WDdwMFNkTzBUTmR1bUE5WnNvUXNXV0k2V0RNYm91aVZNODMrWUdrZEhiU3owM0oxeFhHYkNjUG1YYmZEN0YyaHorZXJxNnRML0I1Q1NHdHI2ODkrOXJQZi9POXZMbDY2bVA1WUN5dy9qWWFKQ2RiZnIxZktOTHZQWDJLOVdwT25ZVm9XdHBrd29IK2dQeHFOSmlmSjRYRDRURzVWUWdpNS9mYmJ5OHZMazBjTGRnZTYzM25ubmM4dWN4aFdFTjlzek94OU5NWVFEdk9ZVzJGenNHaC92M2Jtak1WVUlZUmt1ZUQ2NjdPMnN1KzhSa1pIamh3K01xY2Z5K1B4bEpsZmxuTDl1dldQUGZiWWtpVkxrdGNLVEQrY0t4TVdtMW1KRFZGc1pmajVMbU5zY0ZCbmFCZ2hzWTgrWWlNakZvTUZnTDFlN1BQUnpzNVpjOEFsaVN4YlptV2VreG14V0d4NGVMaXpzL01mLy9qSHlkYVR5YytQR1dOK3Y5L0NxbXNZNDIxM2I2dXNyRHo0ejRPbjJrNk5qWTNGWWpHWHk1WDVvaUR6SWhVVm4yODJaaHlmRFZHTUJndFVOZkxhYTJwcnEwN3JKeEl4L1kxSndCaW1wc0o3OXN6S0pRRDIrUXFmZXNxdTlkeFRhV3RyKy9WdmZqMHlNaElPaCtjc0NTbEowdWJHellXV3VqOHd4dlhyNjY5YmU5MzQrUGpJeU1qSTZBZ0ExUEo1c2s2OFhzbnZONzFFVkh4RGxPRmhhVUdDaFFBZ0hJYkpTWjFnbVhwTFY2SVU1aXo4R28rcDVYdE13eUxSeU1qd2lCSlI1cVNLVXJwbXpacXRXN2VtT3RBSVNaSktTMHRMN1Ywc0RnQ21waUI1aWdyR1pQSGkxQWVrZ0RHRXc3R2pSeDBURStrV0N3RWdKU1hTaWhVRzc2c01Cd3NoaFBIMGYxeGQrZnQ1LzBXRUVFSVk0VG1QalFHQU1WWlZWYlZyMTY3bFdad2paQkRFWXNxTEwycHRiWitmYVl4QlVReWUrRmtvamI3elR1eTk5OUpkYlJoek5EUjRIbi9jWUp2RVRMQyswQUFCWXl4eEIxZFFVRkJTVXRLd3NlRysrKzVibTVzTEp3RkFNTWhHUnVZbXlkcjNVTk1nL2Z3OHhsQXNacnlkSTRJMXplZjFiYWpmSUVtU3krMWFXcjYwdXFaNmRlMXF2OTlmWVBZNVNUYlpldzFKLzN0TS9pRVJyR2wxZFhXLytNVXZKRW1TSkNtbnc1UW5STENteWJLY1ppUzdZSmI1aHA0Z0dDQ0NKWEFoZ2lWd0lZSWxjQ0dDSlhBaGdpVndJWUlsY0NHQ0pYQWhnaVZ3SVlJbGNDR0NKWEJoNWxraFkxbllOV291Z0FYNG8va0NZUHEvTERENWh3d0hTNUtrK0RvK0ZzYVJaUUlBdTkzWTdkWXI5NThIWSt6eDRLS2lMSjBSeHJESFkzemtERFkrZVJKVU5RdERoT2VCTVpibExIMThlY1RJOUJaYjRjSkNVbDV1OEVTWUNKWWdHR2NvZllKZ2xnaVd3SVVJbHNDRkNKYkFoUWlXd0lVSWxzQ0ZDSmJBaFFpV3dJVUlsc0NGQ0piQWhRaVd3SVVJbHNDRkNKYkFoUWlXd0lVSWxzQ0ZDSmJBaFFpV3dJVUlsc0NGQ0piQWhRaVd3SVVJbHNDRkNKYkFoUWlXd0lVSWxzQ0ZDSmJBaFFpV3dJVUlsc0NGQ0piQWhRaVd3SVVJbHNDRkNKYkFoUWlXd0lVSWxzQ0ZDSmJBaFFpV3dJVUlsc0NGQ0piQWhRaVd3SVVJbHNDRkNKYkFoU1B5Mm10NlpRVEJORWZrbFZmMHlnaUNhUTRrU1hwbEJNRTAwY1lTdUJEQkVyZ1F3Uks0RU1FU3VCREJFcmdRd1JLNEVNRVN1QkRCRXJnUXdSSzRFTUVTdVBoLzVTU2hUbjJXeGw4QUFBQWxkRVZZZEdSaGRHVTZZM0psWVhSbEFESXdNVGd0TURNdE1ERlVNVE02TXpRNk5UVXJNREE2TURCa0VBVDNBQUFBSlhSRldIUmtZWFJsT20xdlpHbG1lUUF5TURFNExUQXpMVEF4VkRFek9qTTBPalUxS3pBd09qQXdGVTI4U3dBQUFBQkpSVTVFcmtKZ2dnPT0ifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAxOS0xMC0zMCIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiQ2xpZW50L0F1dGhlbnRpY2F0b3IgQ29tYm8gQ2VydGlmaWNhdGlvbiIsImNlcnRpZmljYXRlTnVtYmVyIjoiVUFGMTAwMDIwMTkwNTA2MDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjMuNiIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4wLjAifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDE5LTEwLTMwIn0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiNGI2NGRmNjliNmFjNWNkNWJiYzE3NTk2MjMzNzVhNGMxZWFmMDk5MyJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyI0YjY0ZGY2OWI2YWM1Y2Q1YmJjMTc1OTYyMzM3NWE0YzFlYWYwOTkzIl0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IDUgU2VyaWVzIHdpdGggTkZDIChDb25zdW1lciBQcm9maWxlKSBLVlpSNTctMiJ9LCJkZXNjcmlwdGlvbiI6Ill1YmlLZXkgNSBTZXJpZXMgd2l0aCBORkMgKENvbnN1bWVyIFByb2ZpbGUpIEtWWlI1Ny0yIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTcyOCwicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoyfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCIsInJlbW90ZV9oYW5kbGUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURTRENDQWpDZ0F3SUJBZ0lVRHFFUncrNFJuR1NnZ3hnVWV3SkZFUERSWjNZd0RRWUpLb1pJaHZjTkFRRUxCUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURJN1huSCtadkR3TUNRVThNOFplVjVxc2N1Ymx2VllhYVJ0M1liYXhuOWdvZEx4NXN3SDBsWHJkZ2poNWg3RnBWZ0NnWVlYN0U0YmwxdmJ6VUxlbXJNV1Q4TjNXTUdVZThRQUpiQmVpb1Y3Vy9FK2hUWlAvMFNLSlZhM2V3S0JvNlVMZU1uZlFaRHJWT1JBazh3VExxMnY1TGxqNXZNajdKdE9vdEthOUo3bkhTOGtMbXpYWFNhajBTd0VQaDVPQVpVVE5WNHpzMWJ2b1RBUVFXckw0L0o5UXVLdDZXQ0ZFNW5VTmlSUWNFYlZGOG1scUsyYngyejZva1ZsdHlEVkxDeFlicFVURUx2WTF1c1IzRFRHUFVvSUNsT200Y3Jwd25EUkxWSHZqWWVQR0JCLy9wRXl6eEEvZ2NTY3hqd2FIMVpVdzliblNiSHl1cktxYlRhMUt2akFnTUJBQUdqWmpCa01CMEdBMVVkRGdRV0JCVHF0MEtRbmd4N1pIcmJWSHdEdW54T245aWhZVEFmQmdOVkhTTUVHREFXZ0JUUzd1OWFJbzA2YlZ3amx6M3loZFVtOFNWN2tqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQTRHQTFVZER3RUIvd1FFQXdJQmhqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFxUWFDV014VEdxVlZYN1NrN2trSm1VdWVUU1lLdVU2K0tCQlNnd0lSbmx3OUs3SGUxSXB4WjBoZHdwUE5pa0tqbWN5RmdGUHpoSW13SEpneHh1VDkwUHczdllPZGNKSk5rdERnMzVQWE9melNuMTVjRkF4MVJPMG1QVG1JYjhkWGlFV09wem9YdmR3WERNNDFaYUNEWU1UN3c0SVF0TXl2RTd4VUJacTJianRBbnEvTkRVQTdiZTRIOEgzaXBDKy8rTktsVXJjVWgrajQ4SzY3V0kwdTFtNkZlUXVlQkE3bjA2ajgyNXJxRHFzYUxzOVRiN0tBSEF3OFBtcldhTlBHMmtqS2VyeFBFZmVjaXZsRmF3cDJSV1p2eHJWdG4zVFYyU0J4eUNKQ2tYc05EMDVkQ0VyVkhTSklzK0JkdFRWTlk5QXd0eVBtbnliMHY0bVNUenZXZHc9PSIsIk1JSURTakNDQWpLZ0F3SUJBZ0lVVG5iYkdJUjJOSHZ6cUlLRkFlUXdHMVhCaXMwd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JCSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVFZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU9zWGozazA0QmFuNFRZZHRaS3FEL09QSnh5RHlhUG1DQlVGVWlhWklnVHRlWm5qM1gyNURoZ3BaWlhzQzREMHlkSWNybEE2d05VSW5PUkwvTDl6QmJURUlNQVZNR282ZzdVS0FtYjJNRjZBSGJuaFlKZDllaWt1cFZOV1NoSE5ZTmM0R0JkTzFZTjZBZlVxdkpoSGJlM1Y0U05NUG1CUkVLSlBWejdUaHdnbWdnVGU4V3MySzAvd3NxdjJ3U0U3cGJDQnNVWmhJWDUxYlpNM3BxRHdKUFRtUkZFdnQwLzZ0RzVlTzhGM2oxNE9YcWZFaG1qbjFWdnhLRFlRT0xaQXhDd3dnQzBQNENkZld2M3k4UFNSOEkzNTRoTzFZK0d6Tmp2SXFYMzhOS0x5d3VJWUhGZXJPeE5seEVNQnZGaFlCdVJ1WUFra2dVYVBxTjZVQmhzSUxyc0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ0NvUkhoaXlObmJuWFJXSUw2WkJYb0JYOVlUTUI4R0ExVWRJd1FZTUJhQUZDQW9VQ0VicEZwYjZGUExuWjNGNVB4c0wzb2ZNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUNRRmFmSkkxLzVXZzlDRUVpbUUxUlA1NFJnUXdUTlRPT1FzTEFDVGUrckl0bEZRekM5WkRoclY4Mjh5WDdqenkrQUFzcDNpeks3VDF0aDJkbDdtK3R1MHN3MlBhL29sYzAybnQ2UHlJdzM0OGdhSHpoSTErMEtFNDVxeHZGRGVMMmxNeGJQZkNZdnlFRWFZemppUUVMVTU5NTFwWEdXeUtNYS80Zkx0TytaS09YaE11VmVxNHJYRFBJNTRXNkpIT2lBYWlLZGl3KzVlM2Mya3QvakZJUXRNNnZNWGc5TE5GemRqRVROdDIwVlg5UWV2UnBGWmZ1Y01HOXdDYVFEb0ZsUHpwVE1KS2hQZXYvaW1KbVpZaEtmcjBsTGNlbXRxakl4TEFvcVpkT1lmSEJnNit2QWNkUEkvaWF1R3BVQXY3WCtVS05tRHdqWjJCYUg0c0x3aEIybSIsIk1JSURTakNDQWpLZ0F3SUJBZ0lVUjM4bXEyNlNmMnN6VlYyQmRHNldFTjdrdVdVd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVJZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU5ZMFdiOW9Qb1JvS29ReVdQYUpwejExdnJXVGc2elR0bU5qMlZvS1JueXZLR1JxcHpiODN3NWw2WUE5NlVZa1lCRFFQMGlsTzJEUGU2d1dxVlI1ekRmUnpkY0g4YmgrTDdkR0d2YWU2aFJUWmhrRmtDcFhEczRIY2NrbnJEZjhGQ2xKN0hlMzlKZjQyL0cxUW0yeno5V1dtclBYdGdpSy94MDVHanNRZkd1REcxemY1UVRVVWllOGx3eW1LM1RmZE92TmVlSkFBUGUycG43SXRmUmIrclZyTldpRHpsUm4ydk5uWjJ3UG80d0gvV0o2ZGhYWkcrck1XVCthNkJvY2cxVWZJdzZrZHVuRzRiVHBaenN2YWNGWXlSMG1wZitEZU9ucFNXQW15d0pXSHZUbGYyWVh4RnllWGNUQUNkUWxjTU5HSjJWaFpRNDh4dFA1L1JCUC84a0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ2h5NDJva2lxY1RTMWlxYS9IUldqa0JuNEgvTUI4R0ExVWRJd1FZTUJhQUZPcTNRcENlREh0a2V0dFVmQU82ZkU2ZjJLRmhNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUFuK1JISVBidE1FRE5kVDFnOEgvUml0QWtVZExnQXQxdFdHV25sajlrbmJ2NC80R2xYN0M5cDQ1ZWZQTzkvYVpMNk9WMVhSS0JpNkttdEJXNUs3bnVZRW5NeC81QnFCU2JMVDdyaGR1QzQ5VEJlTWI5UEhkWHNUbFNWTlllZnIxZEdpZHI0ajB4VkJRTGIxcmtuREFiZFdEektmdm5heUtPOEZyd2U3SHg4NDNNRy9ySitjMFhydVV2YmZWVENITGlJV2hNN29ORGhMOHhvYjZ4VW85S0xLY1NMK0l0WXNPMy85V2I4UTlHanNxTDRGWHNEY0cxU2FZaDdLcGZ1TW1PaXhxekpaTzJuSWljUFlSZzFJMlN1aVVmWU83MHRtZEhjYmwra1NRbVNZdDdycTR2aUlMZzJHeDNqOXJJVHVXVGpiYVVhU1NReGdPbU1TSHV5ek1BQyIsIk1JSURSekNDQWpHZ0F3SUJBZ0lVZXg5blQ5dndaTlhTNDgzTGRpWUdmdzJTalNvd0N3WUpLb1pJaHZjTkFRRUxNQzR4TERBcUJnTlZCQU1NSTFsMVltbGpieUJCZEhSbGMzUmhkR2x2YmlCSmJuUmxjbTFsWkdsaGRHVWdRaUF4TUNBWERUSTFNRGd3TVRBd01EQXdNRm9ZRHprNU9Ua3hNak14TWpNMU9UVTVXakFuTVNVd0l3WURWUVFEREJ4WmRXSnBZMjhnUmtsRVR5QkJkSFJsYzNSaGRHbHZiaUJDTWlBeE1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBdTFNZXZueTlkeU85WlVDMzlTb01oTGNSL0RYcnRGL2NpTTEydGNpeTJFWEFaNk1rcml2VnRDZkVWTTlYNklTVEVuQlA2dVNZWW92NnBwdjZPNkpoMk5IbVltNHcrSm5TNFZuQ1BVN21IQU1mVkkyTUdUVE1WT2V3MHhVc0c3c0lTSWtJRFVCbXVrOFlLOWM1emljOSt2RlFHTElrc2RYTzVpVkZJZ05HNTNjR1hENFpMWm9BUGl1MFBFb3p4QXFZSWFJNGd4S2hPQTNTOC9XOG1JV3N1Nm9meWo0R3ZrRkc2WjdreUYzMTA3UDdtd0ZITHJJM0VOYVBXTU9GY1RhR2EwZHcrL3ZWUndqUmNFWkJWc3V1VC84N2NrU3MwYTVwa3QzdlpCbGFZZVQ4cHpTcmVWN21vd2NJTTkwTDJpYUFUbFAwbnhtYUU2bk95VGJvakZWbDJ3SURBUUFCbzJZd1pEQWRCZ05WSFE0RUZnUVVTWEVoM3NhM2J0RHVybTRNTS9DN1MxbFJ1dVl3SHdZRFZSMGpCQmd3Rm9BVTZyZENrSjRNZTJSNjIxUjhBN3A4VHAvWW9XRXdFZ1lEVlIwVEFRSC9CQWd3QmdFQi93SUJBREFPQmdOVkhROEJBZjhFQkFNQ0FZWXdDd1lKS29aSWh2Y05BUUVMQTRJQkFRQjVHYzNoYWZ0cDdoS3NFWnNvK2kvWjVuUnVxZG16RzJXQ2xVb1JVcWJhUHlnbG5KRGpLUi9rZmdPbDZpYmJGL3p0aG0zS21YUTdIY0RJUDJ4TWRHN1UyTDJpbWJKUUhxUGYvaDJIcW9qYjRyWmd1ZSs2VzRrdFNSNWVsUjlMMXJZcUUvU0dZTTRpRUtvVlFTdjdSVDFyeEllV2lLc3cvVnh4aS9RT25zeDNGN3g4MENDWWdCNEUzeVF4OFZUVzQ0MGhURXdUQTFlTUhPaXgzMnRQdHl5SElhOFBWVklmVnBIUUpCYU1WdnY1MDhVRWp3a2JVMnJuamZ6b1NUTlM5QTVqVVE4bUJTdmU5NXJqQjBkbzk4RVUrRHhkQnFYMitINmk1d2xJQ0ZnemhkemNzbmU5aEdLVDZselRYNGNJZEpzclkyK3hsZUswRkZReTZsR0VWTEVlIiwiTUlJRFBqQ0NBaWFnQXdJQkFnSVVYemVpRURKRU9UdDE0RjVuMG82WmYvYkJ3aVV3RFFZSktvWklodmNOQVFFTkJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNWjYvVHhNOHJJVCtFYW9Qdkc4MW9udE1Pby8ybVEyUkJ3SkhTMFFaY3hWYU5YdmwxMkxVaEJaNUxtaUJTY0laZDFSbngxb2Q1ODVoKy9kaEs3aEVtN0pBQUxrS0t0czFmTzUzS0dOTFp1ano1aDN3R25jcjRoeUtGMEc3NGIvVTNLOWhFNW1HTkQ2enFZY2hDUkFIZnJZTVlSREY0WUwwWDRENW5HZHh2cHBBeTZua0VtdFdtTW53TzNpMFRBdWNzcmJFNDg1SHZHTTRyMFZwZ1ZkSnB2Z1FqaVRKQ1RJcStEMzVod3RUOFFESXYrbkd2cGN5aTV3Y0lmQ2t6eUNpbUp1a2hZeTZLb3FOTUtRRWRwTmlTT3ZXeURNVE10MWJ3Q3ZFenB3OTF1K21zVXQ0cmowZWZuTzlzMFpPd2R3TVJEbkg0eGdVbDVaTHdyclBrZkMxLzBDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01COEdBMVVkSXdRWU1CYUFGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFNd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkRRVUFBNElCQVFDM0lXL3NnQjlwWjhhcEpOanh1R29YK0ZrSUxrczB3TU5yZFhML2NvVXZzcmh6c3ZsNm1lUE1yYkdKQnlKMVhucXVCNXNnY1JFTkZ4ZFFGbWEzbWlvOFVwZjFvd00xWnJlWHJKMG1BREcyQnBscWJKbnhpeVlhK1IxMXJlSUZUV2VJaE1OY1pLc0RackZBeVB1RmpDV1NRdkptTldlOW1GUllGZ05oWEpLa1hJYjVIMVhnRURsd2llZFlSTTdWb2xCTmxsZDZwUkZLbFg4dXN0Nk9UTU9lQURsMnhORjBtMUxUaFNkZXVYdkR5QzFnOStJTGZ6M1M2T0lZZ2MzaXJvUmNGRDM1NGc3cktmdTY3cUZBdzlnQzR5aTB4QlRQclk5NXJoNC9IcWFVWUNBL0w4bGRSazZIN1hrMzVEK1dWcG1xMlNoL3hUNUhpRnVoZjR3SmIwYksiLCJNSUlEU0RDQ0FqQ2dBd0lCQWdJVVVjbU1YelJJRk9nR1RLMFRiM2dFdVpZWmtCSXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFEbTU1NWJXWTlXVyt0T1kwcklXSGxkaCthTmFub0NaQ0ZoN0drM1laclFtUFV3MGhrU0c2cVlIUXRQK2ZaeVMzM1ZFcnZnK0JRcW5tdW1nTmhmeEZya3dFWkVMZWlkQmNDOEM0QWc0bnFxaVBXcHpzdkkxN05jeFlsSW5MTkxGY1pZLytnT2lONlpPVGloTzUvdkJaTWJqOXJpYUFjcWxpWW1OR0pQZ1RjTUdhRUF5TXpFTU55Mm5tNkVwK3BqUDVhRjZnaTIxdC9VUUZzdUoxajJSai95bk0vU2RSdCtlY2FsNU9Zb3R4SGtGYkw5dnZ2MkEyT3Y1SVRaQ2x3NGJPUzlucHlwUWltT1o1UUFZeXRtWWFRcFdsL3BNWXo2elNqOFJxa1ZETkVKR3FOZlRLQTJpdkxZd1g2bFN0dE1QYXBnMEo4NGw5WDB2b1ZOL0ZwUzRWQ1ZBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlFnS0ZBaEc2UmFXK2hUeTUyZHhlVDhiQzk2SHpBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBWU16Z0xySkxJcjBPb3ZRbkFaclJJR3VhYmlIU1VLU21iTFJXcFJrV2VBdHNDaERFSHBYY0ovYmdETktZV29IcVE4eFJVakI0Q3llcFlldmMzWWxyRzhvN3pIeHBmVmNhb0w1U2V1Smt6SHhLbjRiVGFTcDkrTXZ3YW1ucDY0a1pNaU5iRkxrbmZQOWtZS29SSGtNV2hlUkoxVXNQMXo0U2Nta0NlSUxmc01zNnZxb3ZxaldDbEZzSnBCY3NsdVlIV0Y3YkJKMW40UndnK0FURW9wWTRJZ0d2Nlp2d2MrQTlyK0FUMmhxcG9Ta1lvQWwrQU5Zd2dzbE9mOXNKZTBWK1RBOVlZL1VsYUJtUFBUZDAvL3I5d3ZjZVBXWmtQaktvQUMvelVOaGZEYmg0TFY4R0hzM2x5WDJYb21ML0xOYzhKWXp5SWFERWhHUXZlb1BoaC90cjFnPT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsImljb25EYXJrIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwicHJvdmlkZXJMb2dvTGlnaHQiOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJwcm92aWRlckxvZ29EYXJrIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09In0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjYtMDQtMjUiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NzI4LCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ill1YmlLZXkgNSBTZXJpZXMgd2l0aCBORkMgKENvbnN1bWVyIFByb2ZpbGUpIEtWWlI1Ny0yIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVMkYxMDAwMjAyNjA0MjUwMTYiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblByb2ZpbGVzIjpbImNvbnN1bWVyIl0sImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjYtMDQtMjUiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NzI4fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI2LTA1LTAxIn0seyJhYWd1aWQiOiI3NzNjMzBkOS01OTE5LTRlOTYtYTRmNS1kYjY1ZTk1Y2Y4OTAiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6Ijc3M2MzMGQ5LTU5MTktNGU5Ni1hNGY1LWRiNjVlOTVjZjg5MCIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJHU1RBRyBPQUsgRklETzIgQXV0aGVudGljYXRvciJ9LCJkZXNjcmlwdGlvbiI6IkdTVEFHIE9BSyBGSURPMiBBdXRoZW50aWNhdG9yIiwiYWx0ZXJuYXRpdmVEZXNjcmlwdGlvbnMiOnsiZW4tRU4iOiJHU1RBRyBPQUsgRklETzIgQXV0aGVudGljYXRvciIsImZyLUZSIjoiR1NUQUcgT0FLIEF1dGhlbnRpZmljYXRldXIgRklETzIifSwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfSx7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjAsImJsb2NrU2xvd2Rvd24iOjB9fSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MTAsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6MCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDaWpDQ0FYS2dBd0lCQWdJVVNzMmhWNkJUMVNZRjg4djZwWkNpTitzdHlqOHdEUVlKS29aSWh2Y05BUUVMQlFBd0l6RWhNQjhHQTFVRUF3d1lSMU5VUVVjZ1ZUSkdJRkp2YjNRZ1EwRWdNalF3T0RBeU1DQVhEVEkwTURnd01qRXpNakV3TlZvWUR6SXdOVEF3TkRJNE1UTXlNVEExV2pCVk1Rc3dDUVlEVlFRR0V3SkdVakVPTUF3R0ExVUVDZ3dGUjFOVVFVY3hJakFnQmdOVkJBc01HVUYxZEdobGJuUnBZMkYwYjNJZ1FYUjBaWE4wWVhScGIyNHhFakFRQmdOVkJBTU1DVTlCU3lCR1NVUlBNakJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCQlhFR1JQdHhHUFkyWFhhcTRzSUdoN2pLdWJkVjZtOCtNVDRDa0lLZmJ2TldyNDR6dU5JRGJQSW1nNGpyKzBKeEFEenlncEhpeWZ4OWMvTkdwQzdwTytqVFRCTE1Ba0dBMVVkRXdRQ01BQXdIUVlEVlIwT0JCWUVGSCs0NXBpL0lra0h5eG53UUw0MGN0aENyRlRqTUI4R0ExVWRJd1FZTUJhQUZQYitXUGpaYXBJVUQ5bENYOG85SGVQeDNkMXNNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUF4d2loT2FaMDNvWTRuaDRPMXViOHdiTzdWYWdKVDdnNWF1MVphSHBQeC9aMm5YcE1ENndiZFptOVVxU2JoOW9hQkExYzZoaElDdE4yRW1VM1VSR3JDVGhTUnhLYnRvQVpPbThSaWpJdE0xbElsM05JTUtraGYwUXZFb0hUZlhTSVJNY3daMlV6Z1VqRElNeis2azcvbWpqaC9uM3FuVWltdGJwLy9qR0x5ellrS1JXVjJsZjdJSzd0a0ZRc0hFbUk0SnFKMXdLWnl5QUY4QWJpWTc3clJPK0FaZ0ZjaTJQWm4rR3I5LzNKWCt5Y25SZW1IeEJCR0dhd1N2QVhuSUUrVVl5OTFIQURHdUZ2QjlYZ3Q2RE5DUHdpdW9Za045Y3U1anVWYXJvdVlNWWhrSlBMbzBwWVBncGwzTDZQbHlLanZiS3UvWnhoNjdrNHVyVkErVVo4WiJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFPOEFBQUJrQ0FJQUFBRGhaZkQxQUFBUjRucFVXSFJTWVhjZ2NISnZabWxzWlNCMGVYQmxJR1Y0YVdZQUFIamFwWnBwa2lPM0VVYi80eFErQW9CRUFvbmpZSTN3RFh4OHY2eGlqeld0a1NORzZ0YVE3R0lSU3k3ZkFpcWMvL3o3aG4veFUwcTFVTFJaN2JWR2Zrb3ZQUTllV0h4L3h2T1lZbmtlbjU5elArK2xuNitIV2o1dlpDNEp6L0wrYWZWei85ZjE5R09BOTJud1N2OHdrSzNQRy9Qbk4vcG5nbXpmQnNydmsvaUsvUFgrRE5RL0EwbCszMGlmQWNhN3JWaTd0VDl1WVo3MytmUDVOd3o4Qy82Zzlwbm5jL1AzdjBzamVsdTVLRGtmU1JKNUZDbnZBc1QvbFNDRE54S1BVUm8zY2hPdnkvT1lKWDBHSXlDL2l0T1BuODZLcmkrMS9QS21uN0x5NDlXM2JOWDVpZEgzYkpYOHVVVytCYm4rZVA3bDlaRDAyeHZ5WS83OHg1bUxmVjdsbjY5blRaOFZmWXUrLzd0MzIzMzJ6QzVHcVlTNmZqYjF0Y1huRmZleHNlSlRXMkJwTlRiK0tVTzA1N2Z6YTFUMW9oUjJYSEh5dTFKUG1VemNWTkpPSTkxMG51ZVZGa3NzK1lSTXJuTE9peFQ1UlNOM1BTL3gvQlgvVFRjMzZiTEZ5T0o2MHk3NXgxclNNMjJQS3p5ekdUUHZ4SzA1TVZqaUk3LzlHMzczQS9kNks2VGtzYXp6aVJYcnl0bUR6VEk4Yy83SWJXUWszVTlROVFudzErLzNIOCtya0VIMUtIdUxkQUk3M3lIbW04eTN0dVJKdEhDajh2ejJZR3I3TXdBaFltcGxNWFJHU1dRdGlhYWFZc3U1cFVRZ2pRUU5sazRENVVrR2ttcmVMRElYa1VwdUxQdlVmS1NsNTlhc21jdUI2NEFabVZDcDBzaE5sMEd5U2xIcXB4V2pob2FLRmxXdDJ0UzA2NmhTUzlWYWE2c09pcU5KSzZGcHE2MDFhNzBORXl1bVZxMlpXYmZSY3hkQVUzdnRyVnZ2ZlF6bUhJdzgrUFRnaGpGbW5qTEwxRERyYk5ObW4yTlJQcXNzWFhXMVphdXZzZk9XRFg3c3V0dTIzZmM0NlZCS3B4dzk5YlJqcDU5eEtiVXI0WmFydDk1MjdmWTdmbVR0azlZLy9mNUcxdEluYS9uSmxOL1lmbVNOcTYxOURaRWNUdFJ6UnNKeUtJbU1OMDhCQlowOVo5RlNLZGt6NXptTFBkTVZtbG1rZXM1MjhveVJ3WEpTMXB1K2NoZnltMUhQM0QvS1cyamxwN3psdjV1NTRLbjd6Y3o5T1crL3l0cDJHbHBQeHQ0dTlLQkdvZnU0WjJUalA3anF6OC9oMTI4VXNNcHlnZlRTNnNLaWs2N0xZS3VOdGU4NTBxNXp1ODA3eTFqem5oWk9sYnNPZTVLeHpOS0dxNVhrUlR1WHhkdSt6ZTZ1YzBlNHpZZnFzV3hmZUtOVGFlRm5ab2JNNGV2RlAzaWVVYlNIbTFvbGdrV1N6WllJdVFGS2VSSFBmVlgyTUlqejJManN6NjZaamo1bk80Y2xaOG9JVWxCalkwdERCcFdwU0MybDNYMkwxSnZ6WlNvdHZFOTRZanE5bzMxa0RtbTJXcmxicVFVMlZVbGd2S1gwZUdNN3dlb2MrVjNqMHQzbUtyTzJBVWRyRjhrYkdsaURhN3VkMFhhZWxNUmtPWFdRY3djMHJUZU5SbGpESUlicnZqTlBadTZ0M1pVYkpYV0hUbDlsNUVJMUQ3U1YyN1JmcHZLLzBDWDNHcXFFc3R3bHNPZ0xTVTBTT3NuUkduTTlpVDVKOXE0c1lwUGNhM0tQNkhaMU41WENKWStGVlBaeDdwcDdXUm5CdHNGb2RTOGZtcjM4bjNRclFmM0w5OFAzZXJBQlErZlZJb1BuTXM0d1ErQ3N0UncrYUE4NjgxcW52ZXM0TzlWK2daNE5VYkFpK21hWHUyUjJWdHcxanE1S280eFRFekFoaFU2ZW01YTNRNEVTNDlMbFpLMnpyb013VUs3TmJUVVEyRHUybmhtdkRWWTJWdFM3QWFGeGdZaENRRS94YU0vUmp6STVnOXBKZHNBYlJweEt1V1VJdlZMWmErOU1JTGRjblNacno5d1huWHFiRndoOVJKOE4xUVhtVWE3VEVhV2Z2bXBMaExweVpUd3RHcGlMcktVOU5oclFUaWJmeTRUOXk0b3NwS2RTMTA2T0svMWthcWpXaXk1QkZaMXVtWjd3alhBM0xITGI1T1lqck1TbEtxakx2dXVoYlRhbE81QndlVkpka0Q0ZE5DL29ST3JITjhnb1lMWUwvZ015UnVuNXBnNHc3bG1PemJOSXpHVTdQVmJkMW01OGlqTFJkbVpIZXFYVUkyRE5adlBzQnhGeENKcFdRSmsrMkFDdkVJclJVRVZaSFBnWmcvVHQweXkxUXVyUVFmZnNUSG9KRWlXdXRmZ0VJUTcyd3pDOUxibmdsTm1TdmNwTmUzYVFTbXdUcUhybEpKQVVJWkNhd3pLbEFHSTFJbEw3b05WbkR4TlVtTm5Lb25ZbEZ5WGdnK3BET2RRbHVqWlVKQWd5NTRmS0FzRU1PRXFGaUs5YWljZXFwSzdXR1pTb1N0ZkVRNG8zay9HUzZDQ0gxVXpoR1hzRFM2R1FjWHV2MFJad0F0NnZnWHlSQTZweFBkT1JZU2dKeVFwOG5OVW1tY3NWM2gyVUdHZzMrWXpZMkNjVitLcDN6QUp0Qk4xUkwrMjZIeUFFdTlSYk5leVM3Nm16ZDUzZ0lzSFpVVnZCUUZ4TDV6VE5NeGVxR3ZsUThTVEoyMmYyWE5yWXZnQWFNaFZreEl3aEoralB0M01MWW93dHkxRGJtUzdndm5vbnBaNElZYVlGZ2RlMElYRktKZHU3ZVZyaDNrSk1ibkNLZVMrYklySXZKWldldnc0TFUzOFZPMDMzdk9JVDVZVzBORUcvRDlqUk52a1phSURqRHhKQ1dBNHA2M3lmN1prTXRDeTZrUzBUS0JyVDI5TGZrYmJXWHJmVGE0SlFPZ0t3QW4xRU1COWorMGlOVFBnU3lEUmlYVUNYTEJCREYzVytVWTJVY1RKRzh1QmZhZldHdWRvQkhkTHU0QlhaMUVtYW9nQTJTeFBXQUhYdnVWaUU2N216blV5amFxS0ZJUk9aRGFBOUpETTBvSHNaWkV0eFVmREhWMFNrMm42aWN1NUkybHJadTFXMEJGVnBxNkNSYUhmS2YxSnhnTWRKL0EzNCs2Y2FpNFRQUEhpN3dBTmc0N0VFL3AyOTFrd05abVAzcUsvWmlBMXFJMTBZeVVweWxLUW9ld3FJNU5HeE0vc2dZNFFpYzN5QkwwQ0NzN3dvTXp5WDNQQ2tDeHA1cEtFZzhxSHNsN0MxU052SnVZSGFaZkVNQU0xdGFGWVBpMFl6SXQ0Y0g1RDI1eFNJYzVLRFVmYnpWSjhCU0g5UERhUWpwV3NIZUtoTngreENGUlVTQlFVNGlwZmJGVmVWNE8ydWNJTENyWnZBUVFPK1BJVTk2cUZEMmZuQUY0NXdqUkowOThDSHEwQ1VMSFNyYzRkUjB6VE9vRkFSZDVpeGRIazV5VDNLQ3g5Qmptam9TWnBPVlhwTndKRUdmSFYyNE1LVDdtSGgreHlxREJsMXlSWExoWElLMnBEbHZEQ0I2Z1B0OTV6RWxlWHJDT2VBSVhBYnVJYXFMMmlRdzhDd2FxWHg2V0RBbk9LcWlCcExWQmNvR1I4ZGg3WW1CQjE1ZWFsSVZsU3hFZ2QwUStyS29YQlQ2dFJxcVRUY0Flb3piNldHak1zVUp2aE1UUkcwRGlhUFRpRUFQd1Q2Mk50cnJBSzlyQWVpMHcyajhvK0JrUTF0NElZUG5PYjFYZEJoR1l4MUozemE1R01kcmQzQnN3NnFha0E3NTBvREF5SGxGTVJ5Y2dwazJwM05zWHZFUS84NldtSzdqVVZrcUlrMldCTmdKcFlDQllEZ014QWE3RVZPQU9DdU5ZcHJQY3pxek01WkpKZDFRVnVIMUF3a29NUHd4bnB2SlRiRUNTMlA2RUVuemdDMTBJTmpPRDV2cmhjWDc5d2U0WWpWMGJZSFNVU0kwZlBpQW9EYWlpY21hdDZGb3VzenJBdnRIUlRPSTIwclpyUTlsb1lvSXRLQmgvN0lIUFRhVjkrRDZWUWc5UzRvbDFwV2g5WG5Ja1NRYXBkUVhBZDU0eHlZREpidE5oRUlzMjRoNGllQ3gzQlVoV3VRSjFpRWdnWmluVVhBNnJkMUhVRVBkbjE2RlBhQVdBKzFtTnVlRFpiQ3psQ2dmQ0R1Qk4xTnlsOGQ3MEd1aTdnaVdTNHdPMllxUVZhQVV3a0pNOUpRcWJnVGdBWE5TTVAxc21ha1B4RkJzQ0E4T2gyQ0FYRk15MFpINStyR2hpaGpxanZ1aGJLNjRjckZKQVBacklObVl6OU1CV0xtVzhhRzdTSm1hL3FwRXB1RUZRRVF0QlNDWW5WcUNWYkNra0g1V2xFanRWQ1l4Sk00Z3dOUVYyWnhxS3hsQ3FVaHE5U2F3bHhzREJIeFVvR0JUdWM4MVFwTnUwQU9pUGJwNjRaZ2FDaUVxZy9TSGtVTTBUSG9nNkJIUDhxYTBRdzBaeFRnR1gyTlA5bzdBVG0wU0RNNnB0R3ZVQzlzTEY1WlpCVkVTOVZ6dGl2QkF0SkdqN1Q3SXN3Vm1Zc2ZRZHBpWEFwYkJjb0RnZ3ExQTA1ZDBMbmpqeG1ZTnpKM1JVY1g2cVRRbUhTRXF6OVV0a1RhQlFWTXVPQmtNTUE4SUMwUWVUR1NsVGYybEVsbzFueklOeUNEZUJ5TFBRd2dEZERGbE5EMENmeTc0UFE0dlc1TXg3UzZKMzQ4TERRb1BRZy9za24wcjFNVDNock5HUkVMWkNKaWpycUxmUlJaK1dBalVnendnNGtHemdYbGJyMEY4SmhQd21YVmI5YVJCTWxPaWNteHRmeDhETm5paTg1bklJdEZ2RXZVSjBNZWdtUlFBT0RXTTFhVUpuSWFreWt1cUdaRCtkS0drQ2h3eUZxTHcvVEZGMEc4OVVLSW5YcUNOc3pMTUZGR0FDODhmRUpHQ0JFanFoR2RsLzJzZ0NvSDFwYmZTOXNoYTByV0lYaWcwMS9IY3IzTkNvdUVBc2tOS292UndxTEoybkdyUlpzU0hZUFFnQnNpdE9sbm9MMUQyWmhNZkFTNlFTb0ZSV1Y3VlZVVmo2Z2JhZ1IyQUQyVFk3U0Mwc0RtN0RBLzByeGR3b0duYWY2UkxCVC9BakJSWXpCSjViYUNFS1NVZXFGTktHL3NPakJHbWxFSDZEa293NzBzM0lwYkFlVkJsZzNxUTcrSUU5UXNNaEMzTVQxeWJiZ0o5SEtnQ0IzWjZMVkVObDZWMWlNSTUrZUR6enBRUit3VjczeW1iNzJ4VlBjb0pNeDllSlQ1R0Q5N2hOaXhnRWd3b28xRlhONWhUbjJQdjFWbXdhei93ZUl2UCtRQldCTnlxUUlSZEJZMmpKQmU3ajVCaFpTbEpsVEhtb1VYZmk1S3hUbjhlY3hNVlNjZURNRk1YY3cxWGVGRE5BZ3NGOXIyaUhhOFdyaElJTTNMOHpFaDNER29ZakpkVUExNDZJSmRtNDRJS0RaODg0eCtpZ0NnQWoxSEI0S2oyWHg4bGZsNXR2dnpPYWI0QjJnZk50Z2ZVZXBVQTdXb256c1FXV2ZOaXRTbVVjMGxQOVo4azFWVUVRb0ZoQVN6OGM0RXJMRkMrYnJ1OFBXKzRaZUpwaVlJdW1OVDhMQTJIZG5VRDdrWFpzcjE0ZzM3T1F3QXZrQzJqTkZydng3cWZ6UDhOTEhQOE11QjVMbjRkd1lQUDQyZWgydkQ3ZWV0d0VkcmJqZGNVbWZuYlorNVlQWDlRRUp4Z0NWRDRnc0pIM0ZnREZSY3NrMDZ2NzM1SUtzUjNtcTRjeGpYS0Jla0FHRlJRTXlkSGVabVZ1dVZOTFNSbjByRDg4eFFnUzFBSEdwTmZqQW96N0ZYR1hBbnluemdnN3NSVUlxOEprZWNUcGFSbmNOcmF6ek9XMXM2ZHovYzM2S0NOQjJxbVBtQXVMUVk5U2J1R1NBVDJOWFYxcHFVUEtzRTRKSi96K1NuRGdBamhZTWxYMlVGTUFxczNuNXNYUnVHMUxXZXVGN1ZnakpiSFh1R1dIVVBYaDhSRGtlRE9GY3owa1VFaW9CUllCNVloRktIQmZ4WXN0enFDZ0NweENoeTNmQWZvL3FwU1FTSU9PVGRUcnltQXFqMEtpMVZtSEZ1LzNZaTFIajZBa1BjQ0xBWlhMQmpObUoyVUxaclpsa0RwRXJEVDNwV1RaRXhCSkJ3RDY3NU9iUHlYdkl2b1JhOFQvdnV4NXlETGdDM0I4SnRySDkvTXVySHZjWHROZHl1ZnhxMks4NFYrRUJVOUlrQUlaNTI0c2pwUC9xcThUQWNuTFp6UHRTZko3MjNBS1c2bmJhMis0TVBXc0dnTEdYRDRYby9Cd2dMRmZyQTJsMVA3Wkpxb0xSZE5GeDM1NEV5UlhqQXd3Tm83V0E0U2pSUlFTQVI2TFVnUkt2T2E5c3lrRUMxM0xId0ZHUytUZWdjVzBLbjBPeVlLZFQ3VXZRNkNoY05QeHoyaUticjMxaGNzaWdqQkdTc1VHY1UvZkNEVmo1TWhja3FZK0hpbkt3cFlBZG42WXZVa1RGNmFOU05Jc2J6WEN6OGRoNmVNNHhYOFpCTHFwS0tTMmh0Vjcwb2NmU0lJZWI2cytGbzNiRmFyanhPK2ltdGlGSWtVUFhVVkFPQTFUM0x5QmdXeGEwZzg2T0ZuTkkyaGdRR0Jtd1BJaFZQVjBoU0J2WG5RQjk0enhRL0lpS0FOU0NHQWFqR2ZoN04zRjB6dTJUKzNlZndlVUZVSVRUd3IwQmMxVG5XTWQvOHFINTJQd3RPRHdMUU5laXB5SUxtUXMwUjYxeXZwTGtzSUdvd1pGR2IyRUpzN0NsMFN4cGVqbWdUbHpkZ0VyMlZ1QjlEcWNDOUR2VnZheGtXTnFGa2tOSmlBZmtXY2RIK2RmZHp4QVpwMHkyd2x5RFBxWkYxYVhyRW1iQ0tpdGhabUY0L3hVQW5vbklhZmtMU1JRT0U1UjFZWll4TW0vc1pZL0h6NWl1TDlCUzNyREtiSDhlNmtCOSs4QWpWUTBxQ1MxbDRHQmVBSGRrdEdEOUFNQ0w1Q3NFMnU4amx3UVIrd0xYZFZXQmc4Y1RiaFVxOXpVOWVRWVRwM2VuZlBrMjNndzB4NWJ6bVpxRmkxb0ZiMUl5QlpzU01VQmJNR1VDcDFQNVl2by9NV282NzBFVWxvMFBvdlFvNUhTK2RIWWpnWTVuVWozcHJkYlVKcjhPV0tMWmVOaFNOWmIxb2RLcW5UK3pqOWEvMEJzcWowUmxNeWp4Z05YUkVFUHNvNkdtRDJvbWhuMnlBdUtuN3pPaWIrQ1dHU1NwNlk4Q1NiQ0s1d3FGdGljVUM0bnNOcy92SkhrWUdUWTdhd0szQnpldE9jQ242MFduMll6S0pxSUVwQ2VBK0dQSzJRRnFVT3JiTmo5SHAycmJDYVJIemdHcGkxU2l6STVDQWd6dk9pRzA2RjdqNndXRjJtSVZTeWFuNzE3b0h5a2FRK01XMjBBdXNDSU9GTFBOakZiQThSWktOT2x2K0pjU0ZobkF6bVhRUkt1ekhRZThnSHdiS2kzQ3haVDkxM0lnWXlweXNBYU1nQ3NYUG4ycEdoZGtHcEJxMnV2c0Jmdlh2bTZpaUJtTjBxeFVOUlBoY3orTUxKcHlpY0s3Lzd4N0FCbllFbjlOaVZJMEVTb2VmTXNFckdLUUlXWks1eHIyRkhTYjJlWG1KdDhRbXdJMStOdnhBclRqbDR0SmF5bWg4OStKcitXa3B3djVHWU1RMmpNeGFPN1c0eENXalV5N1RWSmRNc0R0WnZNbEs4QlBsbEF5RVljOSsyaFlwQTM3M1gzejk5WnRmaTFHTWordGwyMUEwZWFxdms1RkhOUGloZjgwdVI1RVMyRmNXb3lHNTJpU2hlWlIvOUwxV2dIb1JqZ1Rydi8vRFZTMURCQUUxQUFBQmhHbERRMUJKUTBNZ2NISnZabWxzWlFBQWVKeDlrVDFJdzBBY3hWOVRTMFZiSE93ZzRwQ2h1bWdYRlhHVUtoYkJRbWtydE9wZ2N1a1hOR2xJVWx3Y0JkZUNneCtMVlFjWFoxMGRYQVZCOEFQRTJjRkowVVZLL0Y5U2FCSGp3WEUvM3QxNzNMMERoR2FWcVdiUEhLQnFscEZPeE1WY2ZsVU12cUlmQVlReGpxREVURDJaV2N6Q2MzemR3OGZYdXhqUDhqNzM1d2dyQlpNQlBwRjRqdW1HUmJ4QlBMTnA2WnozaVNPc0xDbkU1OFFUQmwyUStKSHJzc3R2bkVzT0N6d3pZbVRUODhRUllySFV4WElYczdLaEVrOFRSeFZWbzN3aDU3TENlWXV6V3EyejlqMzVDME1GYlNYRGRab2pTR0FKU2FRZ1FrWWRGVlJoSVVhclJvcUpOTzNIUGZ6RGpqOUZMcGxjRlRCeUxLQUdGWkxqQi8rRDM5MmF4YWxKTnlrVUJ3SXZ0djB4Q2dSM2dWYkR0citQYmJ0MUF2aWZnU3V0NDY4MWdkbFAwaHNkTFhvRURHd0RGOWNkVGQ0RExuZUFvU2RkTWlSSDh0TVVpa1hnL1l5K0tROE0zZ0o5YTI1djdYMmNQZ0JaNm1yNUJqZzRCTVpLbEwzdThlN2U3dDcrUGRQdTd3ZURUM0t0VXJ5YzBRQUFEdXRwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFBRHcvZUhCaFkydGxkQ0JpWldkcGJqMGk3N3UvSWlCcFpEMGlWelZOTUUxd1EyVm9hVWg2Y21WVGVrNVVZM3ByWXpsa0lqOCtDang0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJbGhOVUNCRGIzSmxJRFF1TkM0d0xVVjRhWFl5SWo0S0lEeHlaR1k2VWtSR0lIaHRiRzV6T25Ka1pqMGlhSFIwY0RvdkwzZDNkeTUzTXk1dmNtY3ZNVGs1T1M4d01pOHlNaTF5WkdZdGMzbHVkR0Y0TFc1ekl5SStDaUFnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJS0lDQWdJSGh0Ykc1ek9uaHRjRTFOUFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdmJXMHZJZ29nSUNBZ2VHMXNibk02YzNSRmRuUTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl6Vkhsd1pTOVNaWE52ZFhKalpVVjJaVzUwSXlJS0lDQWdJSGh0Ykc1ek9uTjBVbVZtUFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdmMxUjVjR1V2VW1WemIzVnlZMlZTWldZaklnb2dJQ0FnZUcxc2JuTTZaR005SW1oMGRIQTZMeTl3ZFhKc0xtOXlaeTlrWXk5bGJHVnRaVzUwY3k4eExqRXZJZ29nSUNBZ2VHMXNibk02UjBsTlVEMGlhSFIwY0RvdkwzZDNkeTVuYVcxd0xtOXlaeTk0YlhBdklnb2dJQ0FnZUcxc2JuTTZkR2xtWmowaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOTBhV1ptTHpFdU1DOGlDaUFnSUNCNGJXeHVjenA0YlhBOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOGlDaUFnSUhodGNFMU5Pa1J2WTNWdFpXNTBTVVE5SW5WMWFXUTZOVFV5UmtJMU5UaEZOVFkyUlRneE1VSkJSRFk1T0VGQk1UUkZNalpEUTBRaUNpQWdJSGh0Y0UxTk9rbHVjM1JoYm1ObFNVUTlJbmh0Y0M1cGFXUTZPVGcyTVRFelpUZ3RNV1V4WVMwMFlqRmlMV0V6WXpNdE1UTXpOVGsxWVRoaU16WmhJZ29nSUNCNGJYQk5UVHBQY21sbmFXNWhiRVJ2WTNWdFpXNTBTVVE5SW5odGNDNWthV1E2TVdWaU1UZzVOVEF0TTJVMU15MDBNV014TFdJd1pESXRNVEE0TWpVM1kyRTVNMkZsSWdvZ0lDQmtZenBtYjNKdFlYUTlJbWx0WVdkbEwycHdaV2NpQ2lBZ0lFZEpUVkE2UVZCSlBTSXlMakFpQ2lBZ0lFZEpUVkE2VUd4aGRHWnZjbTA5SWxkcGJtUnZkM01pQ2lBZ0lFZEpUVkE2VkdsdFpWTjBZVzF3UFNJeE56TXdPVGN5TkRNek5EZ3pOVEU1SWdvZ0lDQkhTVTFRT2xabGNuTnBiMjQ5SWpJdU1UQXVNelFpQ2lBZ0lIUnBabVk2VDNKcFpXNTBZWFJwYjI0OUlqRWlDaUFnSUhodGNEcERjbVZoZEdWRVlYUmxQU0l5TURFNExUQTJMVEEzVkRFeU9qUXhPakk0S3pBeU9qQXdJZ29nSUNCNGJYQTZRM0psWVhSdmNsUnZiMnc5SWtkSlRWQWdNaTR4TUNJS0lDQWdlRzF3T2sxbGRHRmtZWFJoUkdGMFpUMGlNakF5TkRveE1Ub3dOMVF4TURvME1Eb3lNU3N3TVRvd01DSUtJQ0FnZUcxd09rMXZaR2xtZVVSaGRHVTlJakl3TWpRNk1URTZNRGRVTVRBNk5EQTZNakVyTURFNk1EQWlQZ29nSUNBOGVHMXdUVTA2U0dsemRHOXllVDRLSUNBZ0lEeHlaR1k2VTJWeFBnb2dJQ0FnSUR4eVpHWTZiR2tLSUNBZ0lDQWdjM1JGZG5RNllXTjBhVzl1UFNKellYWmxaQ0lLSUNBZ0lDQWdjM1JGZG5RNlkyaGhibWRsWkQwaUx5SUtJQ0FnSUNBZ2MzUkZkblE2YVc1emRHRnVZMlZKUkQwaWVHMXdMbWxwWkRwaVpqQXpPVEZtT0MxaU1XTmlMVFJoTlRFdFlUQmtZUzAxTnpoa016SXdaVEEwWVdJaUNpQWdJQ0FnSUhOMFJYWjBPbk52Wm5SM1lYSmxRV2RsYm5ROUlrZHBiWEFnTWk0eE1DQW9WMmx1Wkc5M2N5a2lDaUFnSUNBZ0lITjBSWFowT25kb1pXNDlJakl3TWpRdE1URXRNRGRVTVRBNk5EQTZNek1pTHo0S0lDQWdJRHd2Y21SbU9sTmxjVDRLSUNBZ1BDOTRiWEJOVFRwSWFYTjBiM0o1UGdvZ0lDQThlRzF3VFUwNlJHVnlhWFpsWkVaeWIyMEtJQ0FnSUhOMFVtVm1PbVJ2WTNWdFpXNTBTVVE5SW5WMWFXUTZOVE15UmtJMU5UaEZOVFkyUlRneE1VSkJSRFk1T0VGQk1UUkZNalpEUTBRaUNpQWdJQ0J6ZEZKbFpqcHBibk4wWVc1alpVbEVQU0oxZFdsa09qVTBNa1pDTlRVNFJUVTJOa1U0TVRGQ1FVUTJPVGhCUVRFMFJUSTJRME5FSWk4K0NpQWdJRHhrWXpwMGFYUnNaVDRLSUNBZ0lEeHlaR1k2UVd4MFBnb2dJQ0FnSUR4eVpHWTZiR2tnZUcxc09teGhibWM5SW5ndFpHVm1ZWFZzZENJK1RuWWdURzluYnlCSFUxUkJSeUF5TURFNElFWlBUa1FnVGs5SlVqd3ZjbVJtT214cFBnb2dJQ0FnUEM5eVpHWTZRV3gwUGdvZ0lDQThMMlJqT25ScGRHeGxQZ29nSUR3dmNtUm1Pa1JsYzJOeWFYQjBhVzl1UGdvZ1BDOXlaR1k2VWtSR1BnbzhMM2c2ZUcxd2JXVjBZVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBbzhQM2h3WVdOclpYUWdaVzVrUFNKM0lqOCs0MVQ3WFFBQUFBbHdTRmx6QUFCY1JnQUFYRVlCRkpSRFFRQUFBQWQwU1UxRkIrZ0xCd2tvSWNJaHY1d0FBQ0FBU1VSQlZIZ0JBQVNCKzM0Qi8vLy9BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEzOS9mOS9mM0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFHaG9hRUJBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFPYm01dTN0N1FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBOFBEeEFRRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXJ1WUFBQUlBQkpSRUZVQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDbTdKTG5BQUFnQUVsRVFWUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBL2YzOTh2THkvLy8vQUFBQUFBQUFBUUVCREF3TUJRVUZBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBKy92NzgvUHpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ3dzTEJ3Y0hBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQTdQTDYvUDcrQUFBQUFBQUFBQUFBRFFnRUN3Z0VBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUErdnI2K2ZuNUFBQUFBQUFBQUFBQUFnSUNDd3NMQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQUHo4OS9mMytQajQrUGo0Ky92N3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUF3TURCNGVIaDhmSHgwZEhSTVRFd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT3JxNnRuWjJkZlgxKzN0N1FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRlJVVkNVbEpRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQWDUvTnpvOWM3azlNcm8rSmp0K1FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQURBRUFrb1dCemdjQ3lrWUN5SVhDZ0lCQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUC8vLys3dTd1N3U3dXZyNisvdjcvMzkvUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQTBORFJFUkVSY1hGeE1URXdZR0JnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEOC9QemUzdDdPenM3ZjM5OEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUQwOVBUVzF0YlcxdFlBQUFBWUdCZzBORFFwS1NrRUJBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQURyNit2Q3dzTGEydG9BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRGM2UFc1Mk81MzIvUDEvd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQURRL1A3UTV2Y0E1dmNBQU94SkNnTm5LeEUrSmhBUkN3WUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUQzOS9maTR1TGc0T0Q1K2ZrQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRHo4L1B6OC9QaTR1SUFBQUFiR3hzZkh4OFVGQlFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCLy8vL0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQS92NysyTmpZd01EQThmSHhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDZ29LUVVGQkt5c3JBd01EQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXk4dkx2THk4QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVZGUlVKU1VsQUFBQUFBQUF4Y1hGN2UzdEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFNek16R3hzYkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEzT2oxbDhucGp1bjRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFGUUVBaml3UlVERVZEQWdFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBK3ZyNjJkblo0T0RnLy8vL0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVoSVNLU2twRXhNVEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT3pzN0xhMnR1WGw1UUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQYjI5clcxdGM3T3praElTQmdZR0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQMzkvYlcxdGRYVjFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUFAzL0tMSjUyemE4d0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFPdi9BRjNUN3pqWjhZdzZGanNtRWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVAvLy8rRGc0TmZYMS96OC9BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU83dTdzWEZ4UjRlSGlzckt3VUZCUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEUTBOQ2JtNXZsNWVVQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQURuNStlZm41L0t5c3IvLy84QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDNnVyclYxZFVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEWjV2UmFyZDFzMnZNQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQURJK3Y0OHdPaVB2ZUw0K3YwQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRDUrZm5KeWNuVDA5UDgvUHdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRGk0dUxBd01EdzhQQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQS9mMzl0cmEydDdlM0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXZiMjl0YlcxL2YzOUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEwTkRRME5EUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUF3dGp1S3JUaXRQYjlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWN0MzBhckhmOFBYN0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBOGZIeHhNVEU2dXJxQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUE5L2YzdzhQRDVlWGxBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUDM5L2JHeHNkSFIwUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFOUFQwN0d4c2YzOS9RQUFBQUFBQUFBQUFBQUFBQUFBQVBMeThyMjl2UUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUszTjZUL0M2UDRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFKL3YrbVd5Myt6eStnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQRHc4TVhGeGZYMTlRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUC8vLzgzTnplWGw1UUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEOS9mMnlzckxaMmRrQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRFoyZG16czdQLy8vOEFBQUFBQUFBQUFBQUFBQURNek16Nit2b0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQy8xdTFVemUwQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ3M4L3gydWVMeTl2c0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUQwOVBUR3hzYjgvUHdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFETnpjM2w1ZVVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBeU1qSTJOallBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCd2NIQndjSCtmbjUrZm41QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUExOWZYRlJVVk96czdBQUFBQUFBQStQajR5OHZMQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFUkVSRVJFUkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FnSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQS92NysvZjM5QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFRRUJBZ0lDQUFBQUFBQUFBQUFBMStYelFzVHBBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFKQU1CSVFZQzkvNy94UG4rQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFuKy82RnIza2cwb2ZCUU1DQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSt2cjZ5c3JLL1B6OEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFFQkF3TURBd01EKy92Ny92NytBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQTBORFFEQXdNRHc4UEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFPSGg0Y0xDd2dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNFaElTa3BLUm9hR2hNVEV3SUNBZ0FBQUFBQUFQLy8vKzN0N2VYbDVkZlgxOS9mM3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBS1I2R3RBQUFDQUFTVVJCVkFBQUFBQUFBQUFBQU1MQ3doMGRIUjRlSGdBQUFOL2YzLzcrL2dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWNIQjBWRlJTZ29LQVVGQlFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFNL1B6OC9QendBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCTVRFenM3T3dBQUFBQUFBTy8xK21LNzVRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFGTU1CR0FxRUNzYURCa1JCd2dGQXdBQUFBQUFBQUFBQU8vMCt1RHM5OFhmOG5UYjgva0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlubjl6WFA2MU0wRndBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFOTFMwdlQwOUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUIwZEhSa1pHUThQRHdrSkNRQUFBQUFBQUFBQUFQcjYrdlQwOU92cjYrRGc0UG41K1FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQMzkvY3pNekVCQVFBTURBd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSC8vLzhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFENCtQaVptWm4yOXZZQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQW1KaVk5UFQwV0ZoWUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQURxNnVyQXdNRGQzZDBBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUUVCQmtaR1FGQlFXNXVibk96czRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FnSmhZV0VXRmhZQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFERnhjWHQ3ZTBBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBVEV4TTdPenNBQUFBQUFBQ0h1dUY2NFBVQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQmZFQVp2TmhVdkh3NENBUUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUR4OXZ1MTAreGIwZThBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRGdVaUFmRkFvQUFBQUFBQUFBQUFBQUFBQUFBQURtNXViTXpNd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQWdJa0pDUWhJU0VIQndjQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFELy8vL201dWJXMXRiMzkvY0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFpSWlJc0xDd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBeU1qSTl2YjJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCZ1lHVVZGUlUxTlRGaFlXQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFGaFlXVmxaV1VGQlFBd01EQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBOFBEd3lzcktBQUFBNmVucEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT3pzN0ZoWVdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBMCtMeWV1RDFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBcGk4Um0xTWlNU0FQQWdFQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEd29GV2pjWjNsRWdYeEFHQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWpzUG5BQUFBQUFBQUFBQUFBQUFBQUFBQS9QejgwOVBUQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVCQVFRVUZCS0Nnb0J3Y0hBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFFQkd4c2JRVUZCSUNBZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEzdDdlOHZMeUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQTHk4c2pJeUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJBUUVGNWVYaWdvS0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNrcEtXQmdZQXdNREFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQmN6TXpQZjM5K2ZuNXdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ1FrSkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQLy9BSmpNNndBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFNdEVHbGszR1FVREFnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNFVkNwSk5IM1lZQ1FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUpMcitkSGk4Z0FBQUFBQUFBQUFBQUFBQU4vZjMvbjUrUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQmNYRnpzN093c0xDd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUUVCQzR1TGpFeE1RQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTmZYMXdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFET3pzNy8vLzhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlDQWhXVmxZVEV4TUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBV0ZoWnRiVzBBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRCsvdjRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUdCZ1lBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEVDQvS1c3UGtBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQURMUkJvMEloQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT0NRV0FTQjcwdE9DVzdQa0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDZnp1dVFIZzRBQUFBQUFBRDkvZjNkM2QwQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBV0ZoWTFOVFVDQWdJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFkSFIwQUFBRFB6ODhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRHA2ZW56OC9NTkRRMEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUErdnI2ek16TUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVZGUlVFeE1UQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnSUNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQStQajRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBc05YdUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXB6QVNOQ0lRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNRWURnMFlkT0FZQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBa2VyNTR1ejJBQUFBQUFBQTZPam8rdnI2QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDd3NMTkRRMEFnSUNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSFIwZEhoNGVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUE0T0RnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFPSGg0ZnY3K3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRFUxTlIwZEhRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUI4Zkh3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU52YjJ3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQUDMvSC9qOWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBR0FRQmxNekZnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCSU1CbzA3RmdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU1UZDhRQUFBQUFBQU9YbDVRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDNHVMZ1FFQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUMwdExRZ0lDQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFPVGs1UDcrL2dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEZDNkMEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFRRTRPRGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFVRkJRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQURHeHNibjUrY0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEUzQvTUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQnVOaFVGQXdJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQTVKQkprRWdZQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNzM2ZNQUFBRDcrL3ZvNk9nQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFZR0JnVkZSVUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEQXdNcEtTa0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFENysvdnY3KzhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBMnRyYUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTlRVMURBd01BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFIUjBkQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBcEtTazBORFErdnI2QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBMXVuMkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBV0E0Rkx4OE9BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFRRUFZaThUQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFyL1Q4N2ZUNjhQRHdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJeU1qQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBR3hzYkNBZ0lBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQThQRHdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQTHk4dlgxOVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ2dvS0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQbjUrZFRVMU5yYTJ1RGc0QXdNRENJaUlqSXlNaGtaR1FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQWdJQVVGQmZ2Nyt3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUHo4L0xlM3Q3ZTN0eFlXRmdRRUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0lDQTRPRGhrWkdSNGVIaElTRWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFETXpNeHNiR3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBS0NzM0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRm9uRHdJQkFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFERWZEZ0FBNXdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT1h1K0F2NzhnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFvS0NoTVRFd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlDQWhzYkc5M2QzUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU83dTdpTWpJd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEMDlQUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FnSVhGeGNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQURxNnVxdHJhM3c4UEFBQUFBQUFBRDA5UFRTMHRMUzB0STZPam8rUGo0QkFRRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSEJ3YzJOamJGeGNVQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRHE2dW9BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQURRME5BQUFBQWVIaDQ1T1RraUlpSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ2M3dm9BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXJHZ3NBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUJnTjlHd21ENWZjQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRG44Zm9ZL3ZRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFXRmhZQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFXRmhiZDNkMEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUR6OC9NQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBOVBUMEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSEJ3Y0JBUUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQTl2YjJxS2lvOWZYMUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXhzYkc3Ky92RGc0T0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnSUNCQVFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUhoNGV6YzNOK1BqNEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQTR1TGk0dUxpSlNVbFJVVkZEdzhQQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBN2ZQNkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUdCQUhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXpOS2FVd0FBSUFCSlJFRlVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFMQllKQU9YM0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUE4Zmo4RGZ2MUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUJBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBREF3TUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBOVBUMEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBU0IrMzRFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEvLy8vQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQkFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBeXNySzlmWDFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQTE5ZlhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBVTFOVFNVbEpyNit2QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEyOXZiNCtQalZsWldHeHNiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUErLzMrQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQUVCQ2djRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBR0EwR0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBOHZqOS93TC9BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUF3TURBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNRa0pBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEvLy8vQVFFQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0lDQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTTdPemdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNnb0tEZzRPQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUGo0K0tXbHBlSGg0UUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCd0RBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXNIQWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT2oxKy8zOS9RQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUF3TURBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEOS9mMEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEejgvUDUrZmtBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQVFFQTBORFFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUQ5L2YydHJhM3U3dTRBQUFBRUJBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQOEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEdS9nQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQWdJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUQzOS9jQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdJQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBNysvdkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXdNREFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFFQlJVVkZSMGRIQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBK2ZuNXRyYTIvdjcrQ1FrSkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBOWZYMUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdFQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBNXY3Ly9mNy9BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUUVCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEvUHo4QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdJQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT2JtNWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQW9LQ2c0T0RnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFESXlNbVZsWlNVbEpRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU9QajQ5alkyQVFFQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUFgxOVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQklNQlFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU9iditBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBb0tDZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQUHo4d0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU5EUTBBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRDQrUGp2Nys4QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUExTlRVQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVVGQlJVVkZSbFpXVTdPenNXRmhZQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFERHc4TU9EZzRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRHA2ZWtBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVBd0pUREFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQURjNnZZQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTEN3c0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEcDZla0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVSRVJCQVFFL1B6OEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEyOXZiTmpZMkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFNakl5MU5UVTZlbnBBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBS0Nnb0JBUUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEzOS9mOWZYMUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRkJRVVBqNCtQajQrK3ZyNjlQVDBBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBL2YzOTYrdnJ6OC9QNHVMaUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBN3U3dTd1N3VBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSt2cjY3ZTN0RXhNVEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQaGdKcmR6ekFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUF2ZDd5UVNrVEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRHc4UEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBOHZMeTkvZjNDUWtKQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDZ29LTlRVMUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFNdkx5ek16TXdNREF3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUUVCRmRYVjdXMXRkM2QzUUFBQUFBQUFBQUFBQUFBQUFVRkJVdExTeWtwS1FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFLdXJxOXpjM0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVlHQmhJU0VnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJVVkZTa3BLY1hGeGNQRHd3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVBYMTlRTURBLzM5L1FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFOL2YzeE1URXdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDc1hDUURjOHdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJWGw5Mm51OXhzU0NRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQThQRHdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU9IaDRTZ29LQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBaElTRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEeTh2TFgxOWNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUxDd3RXVmxaWVdGZzFOVFVpSWlJbUppWkhSMGRvYUdncEtTa0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFRRTdPenNnSUNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQURtNXVZWkdSa0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEbTV1Ynk4dklBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBdEhRMEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ216ZXNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlDQWdSRVJFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQURkM2QzNCtQZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSWlJaUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXU3dTc5ZlgxQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSVNFaFJFUkVWMWRYVTFOVE1qSXlEQXdNQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFRRUJNek16QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUE3ZTN0R1JrWkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQTB0TFMvdjcrQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRmc0SGFCTUdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWR0LzAxZVR6QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFIQndjQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEvZjM5MWRYVkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQW9LQ2l3c0xBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVBqNCtMUzB0UDM5L1FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCUVVGQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQRHc4QmNYRndZR0JnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU83dTd0alkyQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUZ3dEVnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFHbTk1ZTcwK2dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCc2JHd0lDQWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT1hsNWVIaDRRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNnUnBXbEFBQWdBRWxFUVZRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBMk5qWUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRGUzdDZ4c2JIOC9Qd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRDkvZjBBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVCQVFDQWdJa0pDUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRGMzTnplM3Q0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBMUloQkFCd01BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBREQrZjUwdCtMeTkvc0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUdCZ1lnSUNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEUjBkSGw1ZVVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRnhjWEtDZ29BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEyZG5ac0xDdzlmWDFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQTV1Ym1BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUZoWVdBQUFBSUNBZ0JnWUdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUExTlRVMDlQVC9mMzlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQmdRQ2dEY1VBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFuKy82WkxEZjRldjJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJeU1qQXdNREFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXpjM04zTnpjQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVCQVFBSUNBZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTnZiMjV5Y25ObloyZi8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUGo0K01iR3hnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJNVEV3QUFBQVFFQkNvcUtnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTi9mMzhQRHcrN3U3Z0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQURzbEVXVVNCZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBS3Z6L0NhdjRMRE82Zmo2L1FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBa0pDU1VsSlFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFOYlcxc1hGeGZUMDlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFSRVJGRFEwTUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUQyOXZhdXJxNmZuNS9WMWRYMzkvY0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEejgvT3VycTd3OFBBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFiR3hzQUFBQUFBQUFlSGg0VUZCUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUR5OHZMRXhNVEl5TWpwNmVuOC9Qd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQXdKNFBoa0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUQ2QUFCUnpPMU9xZHl4eitubzhQZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWpJeU1PRGc0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRHQ3ZTIrdnI3THk4dnE2dXIrL3Y0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTWpJeTNkM2QzdDdlQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQTZlbnBzckt5QUFBQUdob2FHeHNiQndjSEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBN096c0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBMWRYVjZlbnBBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUE4dkx5MWRYVi9mMzlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJU0VoQUFBQUFBQUFBQUFBTWpJeXY3Ky8rL3Y3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQTZ1cnE2dXJxQUFBQUV4TVREZzRPQXdNREFBQUFBQUFBQUFBQUFBQUFDUWtKSVNFaEFBQUFBQUFBSWhZTHNqWVVUc3JzQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXUvZjl1OHZ0QU12dFZnMEVPeGNKR1EwRi93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBM3UvNUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUF3TURNek16d3NMQy9mMzlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBNStmbjUrZm5Bd01ERVJFUkVCQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZi8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVBiMjlxYW1wdXZyNndBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNzckswNU9UZ0FBQUFBQUFBQUFBQUFBQU8vdjc4UER3d0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCTVRFenM3T3dBQUFBQUFBQUFBQVA3Ly80dTc0bmpnOVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSU1lQ254SUlBQUFBQUFBQUFBQUFBQUFBT1hsNWMzTnpRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFeE1UQUlDQWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFLQ2dwVVZGUVBEdzhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUE2T2pvQUFBQUFBQUFBQUFBQUFBQUFBQUFSRVJFME5EUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQVFGeVF4MkNIZ3NBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWJHeHN0TFMwQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUJBUVdscGFFaElTQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU96czdGQlFVQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBR2hvYU5EUTBBUUVCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQlFNQ2QwUWRoUjhMQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJU0VoTURBd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJBUUVGeGNYQ0VoSVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQm9hR2pvNk9nQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJvYUdqdzhQQVlHQmdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFZRUFuWkVIcU11RVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQjRlSGpZMk5nUUVCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTEN3dFZWVlUvUHo4QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBV0ZoWlVWRlFFQkFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUkVSRkFRRUFaR1JrQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUF3RmNPQm5OUlJzK0J3TUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFZR0JoQlFVRVNFaElBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUF3TURPam82WkdSa0lpSWlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFKQ1FrV1ZsWkN3c0xBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBZ0lOVFUxTlRVMUNBZ0lBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFNaUVQdFZjam55d1FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ1FrSk96czdNREF3QmdZR0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnSUNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUE0Q0FnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXNMQ3l3c0xCNGVIdm41K2UzdDdRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdJQ0VSRVJFQkFRQWNIQndBQUFBQUFBQUFBQUFBQUFGQ1R3VndBQUNBQVNVUkJWQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEwTkRTRWhJUW9LQ3ZQejgvdjcrd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBb0tDaDRlSGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFZRUFqQWREV3NsRGlvQS85RHMrZkgvQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUlQQlQ0a0VBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUJBUThQRHlBZ0lBY0hCL0x5OHZ6OC9BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFNREF5WW1KZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSC8vLzhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEdzhQRGQzZDNhMnRyZzRPQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUUVCQTBORFFzTEN3SkNRa0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEdDdlM241K2ZuNStmMzkvY0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBVEV4TTdPenNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEMit2M04zL0hLNC9TRzMvVHUvd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0RIZ3A4U0NBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQURzN096bDVlWHA2ZW40K1BnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFSRVJFOVBUMEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQi8vLy9BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBK3ZyNjd1N3U4Zkh4OGZIeCt2cjZBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXdNREV4TVRGQlFVRWhJU0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBOS9mMzlQVDArUGo0OVBUMC8vLy9BQUFBQUFBQUFBQUFBQUFBQ1FrSklTRWhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBLy8vLzVlLzQ2dkg2N2ZYNzhQZjhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUZ3MEdQaWdTQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUE5L2YzOHZMeSt2cjY4L1B6QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUE0ZUhoKy92N0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFIeDhmTHk4dkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWYvLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVBYMTliMjl2UUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDOHZMeDhmSHdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQURlM3Q0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBVkZSVUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQThQRHczOS9mQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEUTBOQ2dvS0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUDM5L2M3T3pnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQWdJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEOS9mM0x5OHYwOVBRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQkFRZEhSMEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUErL3Y3emMzTjZ1cnFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJeU1qQkFRRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU8vdjc4N096dlgxOVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFZR0JpTWpJd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEejgvUGUzdDdoNGVFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUF1TGk0RUJBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUErL3Y3K1BqNEFBQUFBQUFBQUFBQUFBQUFBQUFBTHBuejlRQUFJQUJKUkVGVTlmWDE4L1B6NStmbjhQRHdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFHeHNiR2hvYUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTUhCd1RFeE1RNE9EZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU0zTnpCZ1lHUnNiR3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT1BqNCtMaTRqczdPd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFNSEJ3VEV4TVE0T0RnQUFBT3JxNnMzTnpRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUF3TURDOHZMd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQy92Ny8yOXZZQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQURRME5EczdPd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRHE2dW5GeGNRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDK3ZyNzI5dllBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlDQWc1T1RrRUJBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUE2K3ZyNk9qbzl2YjJBQUFBQUFBQUFBQUE4dkx5Nit2ckFBQUErL3Y3N096c0FBQUFBQUFBKy92NzdPenNBQUFBQUFBQTYrdnI5UFQwQUFBQUFBQUFBQUFBOVBUMDZPam8vdjcrQUFBQUFBQUFBQUFBNmVucDUrZm44UER4QUFBQUFBQUFBQUFBQUFBQUFBQUE5L2YzNStmbjUrZm41K2ZuKy92N0FBQUEvZjM5Nk9qbjlmWDFBQUFBL1B6ODUrZm45ZlgxQUFBQUFBQUFBQUFBOFBEdzZPam9BQUFBQUFBQUFBQUEvUHo4Nk9qbytmbjZBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSt2cjY1K2ZuOS9mM0FBQUFBQUFBL3Y3KzUrZm44dkx5QUFBQUFBQUFBQUFBOHZMeTdlM3RBQUFBL3Y3KzUrZm41K2ZuOVBUMEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FnSU9qbzZDUWtKQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFbEpSelEwTWt0TFN0M2QzUUFBQU1QRHd5d3NLakl5TUl5TWpPcnE2cE9Ua3dBQUFBQUFBTzd1N1pLU2t2ejgvSXFLaWpJeU1DMHRMTXpNekFBQUFOWFYxVU5EUWpVMU0zTnpjL2IyOXZ6OC9JcUtpalEwTWpVMU1wQ1FqZ0FBQUFBQUFBQUFBQUFBQVBqNCtGMWRYVFUxTXpVMU1qVTFNdTN0N2ZiMjltcHFhalUxTkVKQ1FNVEV4R3RyYXpZMk5FdExTdDNkM1FBQUFNUER3eTR1TERVMU00cUtpZno4L1BMeThtdHJhelUxTStYbDVmMzkvdnY3Ky8zOS9RQUFBQUFBQUFBQUFBQUFBTy92NzJKaVlqWTJORXhNUytQajQvbjUrWDkvZmpZMk5DOHZMczdPemdBQUFNM056Uzh2TFphV2x2djcrbnQ3ZWpZMk5EVTFNcXVycVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBd01ERDA5UFF3TURBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFETXpNN2s1T2FJaUlpRGc0THk4dktBZ0gvSHg4bUxpNDNrNU9UOC9Qd0FBQUFBQUFBQUFBQUFBQUFBQUFESHg4ZjUrZm5kM2QvQndjRnFhbW4yOXZaK2ZuMmVucDdmMytFdExTMjV1YmpPenM3eDhmSGQzZC9rNU9lQWdJRUFBQUFBQUFBQUFBQUFBQUR2Nys4Z0lDRGs1T2JrNU9mazVPY1lHQmk1dWJnM056YmYzK0dmbjZGYVdsZzlQVDNpNHVTTGk0eCtmbjN6OC9OMmRuVEZ4Y2ZjM043MDlQWEt5c3ExdGJVN096dmk0dVFpSWlHWGw1VWpJeUdkblowQUFBQUFBQUFBQUFBQUFBQ21wcVpRVUZEaTR1U0ZoWWIyOXZiQndjRU1EQTNlM3VDL3Y4QnVibTN3OFBCeWNuTEF3TUo5ZlgzQXdNQVZGUmJkM2QvazVPZGhZV01BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFiR3hzOVBUMEpDUWtBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFOemM0N3U3dXlNaklXRmhZNStmbm41K2VnWUdCQndjSEFBQUFBQUFBQUFBQUFBQUFBQUFBNXVibVNrcEtCZ1lHSGg0ZlIwZEl6czdPRkJRVUt5c3NCQVFFUkVSRTBkSFM0dUxpVVZGUkJnWUdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEdzhQejgvT1hsNWRZV0ZnZjM5KzYrdnIwZEhTUkVSRkJBUUVLaW9xU1VsTFEwTkRBUUVCTlRVMTBkSFIyTmpZU1VsTEhSMGRCd2NIVGs1TzV1Ym0yTmpZUkVSRUFRRUJBQUFBWDE5Z3lzck1WbFpXQUFBQUFBQUFBQUFBQUFBQTBkSFJQejgvQVFFQk9EZzRKeWNuMGRIUlRFeE1CUVVGSUNBZ1BEdzkzTnpjUUVCQUh4OGZBQUFBMDlQVVJrWkdCZ1lHQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQndjSE5UVTFNek16QlFVRkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBc0xDdW5wNlJnWUdQZjM5dGZYMWg4Zkg1YVdscWFtcHFHaG92ejgvQWdJQ01mSHh2cjYrZ1lHQnR2YjNBQUFBQVFFQk8vdjd3QUFBUHo4L09MaTRRd01EQXNMREFBQUFBQUFBQWNIQi8vLy93d01ET2JtNWdBQUFQMzkvY25KeWtaR1J3QUFBQUFBQUFBQUFBb0tDcSt2c052YjJ3QUFBTmJXMXJtNXVQLy8vd2NIQndBQUFBQUFBQXNMQ3dFQkFRQUFBQUFBQUFjSEJ4TVRFK1BqNHY3Ky9nSUNBZ0VCQVFBQUFBQUEvd0lDQWdBQUFCY1hHT3JxNnhjWEZ3RUJBUUFBQUFBQUFBQUFBQUFBQUJJU0VmSHg4UlVWRmZMeThnUUVCQmdZR09ycTZpc3JLd0FBQUFjSEJ3QUFBQUFBQUFBQUFBQUFBQlVWRmV6czdBQUFBUHY3KzlmWDFnZ0lDQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFVRkJTSWlJaU1qSXdRRUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCSlNVcHZiMjVyYTJ6THk4dCtmb0FtSmlZY0hCd1lHQmpFeE1TV2xwYTd1N3RSVVZHQ2dvSXVMaTZYbDVZOVBUNDZPanBOVFV4MmRuZmc0T0FsSlNVWUdCZ0FBQUFBQUFBQUFBQUFBQUFBQUFBMk5qVlNVbFB3OFBEcjYrc1FFQkFkSFIwQUFBQUFBQUFBQUFBQUFBRFIwZEhzN093QUFBRGk0dUlxS2lvQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBYUdob1dGaGVKaVlnb0tDbmQzZDBnSUNBQUFBQUFBQUFBQUFBY0hCd1NFaEtLaW9wRVJFUXpNek1BQUFBQUFBQUFBQUJTVWxOM2QzWmFXbHUzdDdaaFlXSkRRMEpVVkZSdGJXMElDQW5aMmRoTlRVMEFBQUFBQUFBQUFBQkJRVUZhV2xscGFXclYxZFU3T3p3UUVCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBU0VoSWNIQndiR3hzRkJRVUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQURnSUNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRmhZV016TXowOVBUTlRVMVRFeE1Bd01EUER3OEFBQUE4dkx5ZTN0N0VoSVNNVEV4L2YzODZlbnBPam82OXZiMVNVbEpSRVJGMXRiV0hSMGRYVjFkQUFBQTl2YjJMUzB0QUFBQSsvdjc5dmIyTXpNelIwZEgzZDNkSEJ3Y1lHQmdCZ1lHQUFBQUFBQUFBQUFBQUFBQXpNek0zOS9mNysvdkhoNGVTVWxKOVBUMEpDUWtDUWtKQUFBQTdlM3RLQ2dvQ1FrSkFBQUErUGo0TmpZMk96czc5L2Y0Mjl2YkFRRUJLaW9xQ2dvS0pTVWxDUWtKQUFBQU9EZzQ5L2YyK3ZyN0l5TWpBQUFBQUFBQUFBQUFHeHNiSXlNaTVlWGtRME5FT2pvNkRnNE9RRUJCMzkvZzVlWGxHeHNiTHk4dkFBQUFLaW9xQUFBQURnNE9QRHc5NE9EZkt5c3FWVlZXQXdNREFBQUFBQUFBOC9QejUrZm5BQUFBQUFBQUFBQUFBQUFBQUFBQUVSRVJEZzRPR3hzYkl5TWpLeXNySWlJaUVCQVFBd01EQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFmLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUHo4KytmbjZKR1JrVkJRVUR3OFBBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRHQ3ZTQ2T2pncUtpbzRPRGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCLy8vL0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQk9jQUdFQUFBWWpVbEVRVlFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEvLy8vLy8vL0FnSUNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVhBV2ora0IvLy8vQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUGNNb0JiQlJ4S1pBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJsYXJnZUJsb2JLZXkiLCJtaW5QaW5MZW5ndGgiLCJjcmVkQmxvYiJdLCJhYWd1aWQiOiI3NzNjMzBkOTU5MTk0ZTk2YTRmNWRiNjVlOTVjZjg5MCIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImxhcmdlQmxvYnMiOnRydWUsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6ZmFsc2UsImFsd2F5c1V2IjpmYWxzZX0sIm1heE1zZ1NpemUiOjEwMjQsInBpblV2QXV0aFByb3RvY29scyI6WzEsMl0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6MTAsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6NzIsImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN31dLCJtYXhTZXJpYWxpemVkTGFyZ2VCbG9iQXJyYXkiOjEwMjQsIm1pblBJTkxlbmd0aCI6NCwiZmlybXdhcmVWZXJzaW9uIjoxLCJtYXhDcmVkQmxvYkxlbmd0aCI6MjU2LCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6MSwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjQwfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMTItMzAiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJHU1RBRyBPQUsgRklETzIgQXV0aGVudGljYXRvciIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjQxMjMwMDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMTItMzAiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MX1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wMS0yOSJ9LHsiYWFpZCI6IjAwNTYjMDAwMiIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFpZCI6IjAwNTYjMDAwMiIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJQaXhlbFBpbiAtIFBpY3R1cmUgTG9naW4ifSwiZGVzY3JpcHRpb24iOiJQaXhlbFBpbiAtIFBpY3R1cmUgTG9naW4iLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJ1YWYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfc3Vycm9nYXRlIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGF0dGVybl9pbnRlcm5hbCIsInBhRGVzYyI6eyJtaW5Db21wbGV4aXR5IjozNDM1OTczODM2OCwibWF4UmV0cmllcyI6NSwiYmxvY2tTbG93ZG93biI6OTAwfX0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiYWxsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJzb2Z0d2FyZSJdLCJpc0tleVJlc3RyaWN0ZWQiOnRydWUsImlzRnJlc2hVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZWQiOnRydWUsIm1hdGNoZXJQcm90ZWN0aW9uIjpbInNvZnR3YXJlIl0sImF0dGFjaG1lbnRIaW50IjpbImludGVybmFsIl0sInRjRGlzcGxheSI6WyJhbnkiXSwidGNEaXNwbGF5Q29udGVudFR5cGUiOiJ0ZXh0L3BsYWluIiwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSGdBQUFCNENBWUFBQUE1WkRiU0FBQUFBWE5TUjBJQXJzNGM2UUFBREZWSlJFRlVlQUh0WFF0d1ZOVVpQdWZ1M2Mxcjg4UThnSVFRQ3BnMGtnUWFYcnViUlo2aXBRelRJdFN4VkxIVGtTUWdVRUVMQXBPUlVZZE9PekRESTlLWlZndVVqakxpMkhhY3R2TFE3Q1lFU3RVYUVFS3JEZzRSYVMwaUVVbXl1ZmYwUDhHNzdvWk45blh1YTNOT0puUHVQZmVjLy9GOTk1eDdIdmVlUllpSGhFWUEvL0dPTFE4a3RJZlJPRWVFS3d2LzEzQXNtaUpHenlzU1dUNW9kQ00xc3crVDQ2QXJvUWdXTkFPUEs5SUZBVTZ3THJCcnA1UVRyQjNXdW1qaUJPc0N1M1pLT2NIYVlhMkxKazZ3THJCcnA1UVRyQjNXdW1qaUJPc0N1M1pLT2NIYVlhMkxKazZ3THJCcnA1UVRyQjNXdW1qaUJPc0N1M1pLT2NIYVlhMkxKazZ3THJCcnA1UVRyQjNXdW1qaUJPc0N1M1pLT2NIYVlhMkxKbEVYclhvb3hZS2NWcExka1QxcDVKWHN5Y1Uzc2lxSFkydE9xbFZNczRsQ3NwaEUvejd2NlVFcjJ1NDVod25xQkJNN0NmeGpUSzRqSkZ5RStEelVodlpVK1ArRnkwV3ZteUlrTE1GQ2l2WG04UG1sN3hmK2NHTG5zS21qY3NYMHBHOFJRb3FBRmZvZk1pU0o2Q3RFU0NrUTZ3K2s3MFNHWklSa1NBVzIwUXFQdHdOdUFpL0M1SmdvQ0VkM09wMGYrQXNZN0NDaENFN0t0WDgyL3ZFWlowY3Vyc2kwWmFkK0d3ajlqb0kzSEN1SDhjZUVqQVJwU3hGQlMzMlNUQW4vR0NIeVY0c2dITmpsY0hnd1ZQZjRsYkNSZ0YvTDJXUVlZMkp4Q2R2RW51SmxrOTRlOTVnYnB4Um1UZ0lpcmJISW9XVnU5UGErczc3MTVNUll5OU55R0tHUGtJRDNpeGp2TTBMTk5tME5Gak9TT2ljODk5MS9GQzJ0dWd2dTBHa1VYS2ExbEFxTUlZQXRKVWdtVzN5SWJGblI1SDBkQzJocm84dlZHb01vSmtWTVI3QTFNK1dMaXUwTDN4bXhzTHdLRUxqYjJNMFB1WS9JNkw0VkhzOVJUQ3hiRzkyT3Q1aXdGb1VROHhBc1lLbGkyd0x2NkVlbVRJU2FlbmNVUHVxZmxhRFpCRW16YXoyZUl3S3kxZSt1bVhwQks2Tk1RWER1akRGbkp1OS8wR3BKdGM0d1FqTWNLem5RejVzallWOWJYWk4zVzE3UnlHY2JTa3E2WXBVVmFUbERUM1RRNTZ6N1NHM1Q5TVBMeTRIY095TjF5dEQ1Q0xIQm9HdnpsVXVYemtLTm5xTzJyWVlsT0h0UzRZVjcyemQ4bGxrMTNBMjFGanFuaVJXZ05vOGhDUCt0MXRPODlXVkNMR3A1WjBpQ3k1NmE0Nmw1NDlFaVpCVksxSExjRUhMaHhpVkUzblRNMjN5azd0U3BBalZzTWhUQmRFdzcwMVB2SGJ2V1hRTzFOa1VOaHcwcEV6cU5jbmZQdXl1YlRqaFoyMmNZZ3EzMnBDL252YmV1elY2VzcyTHRwQ25rRVpJdlllbU5GWjZXQlN6dE5RVEJ0bUdwVitlZVdYL1Jka2VxZjJxUnBaTm1rVVZiTFV5a1YrczhuaCt6c2xsM2dsT0xzaTdQYTN2aW1zVnVLMmZsbEpubHdNU05LQ1A4WXEzWHU0YUZIN29TYk0xS3VUYnI1Sm9iMkNhTVllRk13c2lnblMrWmJLL3plbjhTcjArNkVVeVg4K2E4dmZaaklIZHN2RTRrYW5sWkpudWh1ZjVlUFA3cFF6Qk1PODQrc2ZvOU1TTzVJaDdqaDBCWkM0eVZYNnB2YnA0ZXE2KzZFT3g0ZGJrM3VUQmphcXhHRDZWeXRPTWx5ZVRQUUhKeExINXJUbkR4c3VxVHc1eWpaOFJpN0pBdFEwaU9KSkUvTkJBUzlkcUJwZ1NuRmVkMHdGSmZZc3dwYTM2M2tlbWZlcjNQUkt0V000SUZpNlhYZmJ6MktoaVlGYTJSUEwrQ0FGNWY1Mm1acjV4RkVtdEdjTlh1UlY1WUhab1FpVkU4endBSTlNMWRTeTg4ZWZwMDVnQTVia3ZXaEdCN1NjNmx3dnVycHR5bW5TZEVqUUJNaEJSMDNyejVkS1FGTlNGNDJpc1BkMEJ2RUY0cDVvRUZBakpCOWFzOG5zcElaS2xPY05HU3FyK25qTXJpUTZKSTJJZzhqOFdIMEc2b05HSFh5ZFVsR0w0bXFOeXhhRmprZHZPY0VTTkFrSE5sYy9QOTRmS3JTbkRKVDZlYzVQUE00U2lJL2JwTXlGUGhTcXRLY05tbXVUbmhET0RYWTBjQVh2dXBDTGQrckJyQjlObWJNQy9LeGM2QitpV0p2SEV3SmFvUlhQN3N2YmJCRlBOcnJCQWcwMkdlMmoyUU5GVUlUaCtmZXhIV2VpUHF4ZzlrR0UrUEhBRlpJbzhNbEZzVmdrczN6djVvSUlVOFhRMEV5QThhVHA4T09jK2dDc0VGODh2R3FPRUdseGthQVpqZHNsL3A2bG9VNmlwemduTm5qbTFESWg0VlNobFBVeEVCZ240VVNqcHpnc2V0ZHRNVkl4NDBSZ0JtdGVhRldvUmdUbkJPZGFFcWIraHJqSmNaMVZsZ0VlSzIzalJUZ3VuN3pmQXkzWGd6b3BNSU5zc1l6K3p2QjFPQ1J5eTY2MElrRStEOWplRG5iQkNBblVIVUpiaG9jVlUzRzFPNWxCZ1JxRmpiMGhJMFBjeTBCcWVYNWZHVm94aVpZVkVNV2sraFM1SW1CY3BpU2pCOGZsSVlLSndmNjRKQTBFdU56QWltZTFTQk8veUZPbDA0L1VZcHZBRVExTWxsUm5CV3hmQlB2bEhEai9SQ0FKWVExYW5CMlpOSGZhR1hVMXh2RUFMcTFPRFVrbXdwU0EwLzBRVUJtSmNlSHFpWVdSTnR6UXE1bUJHb2l4OXJnMEJ5NENjdTdBak9TR0ltU3hzY0VsZkxGYTgzWGZHT0dTbFd1NDJaTE1VNEhzZUdnQTFqOWdTTGFiRGJNZytHUUVDV1JidGlpSmlhWldjeWR0M2MwYjZYWE1abGltQXp4cElrQi9WQXplZ0R0ZGxua2Z5dHFUajN3NTh6R2Q3VUVxK1ArRWpFSDBXWkZUd3oyQTNiNW5VcWR2cVpWaExpaVAxQzQ1REJpekpBQUo3QmZpNllFUXdUM1g2aERHemtJdUpBb05SbTgzUEJqR0NZQS9VTGpjTTJYalJlQkREdWViUzZHcjVOdXhYWUVZenhmeFdoUE5ZUkFVTCtFNmlkR2NFQ0llMkJndm14VGdoZ0ZNUURNNElSeHBwdFU2OFRkS1pRQ3ovcEU4UURNNEozdVZ5ZkFNbjhPYXp6YlFBYlVLdFVnOEV4akVqUTNhT3pyME5VdlVVOWdvSGlkNGNvcXNaeE8wa000b0JaRTkzbklVYkhqT1BwMExNRWhxcm45a3laOG1tZzUwd0poaW15TndPRjgyTnRFWUF0V1k3MzE4aVVZTnJSZ2w1YzBET2d2MEorcmg0Q0FoSFVKYmpQZEhMN1hhU2VTMXl5SHdINHhkT1UxS1EzL2VkZkh6Q3R3VlNtSUtERC9aWHdjL1VSZ09ldjkxZlYxZlRWNWFEQW5PQmNwL01vYUxnY3BJV2ZxSTRBSm5oL0tDWE1DVzdBV0Jhd2NEQ1VNcDZtRGdKUWU3dHQ2YW1IUWtsblRqQlZZa0Z5eUxzcGxBRThMWDRFb1BmOHB4MFRKMTRMSlVrVmduZlcxUHdUZXROQkErNVF5bmthR3dTd0lMdzRrQ1JWQ0tiS1lKL01iUU1wNWVuc0VJQ0tkR2FQdy9INlFCSlZJM2hXamVNUVJ2amZBeW5tNll3UXdPZzVJQmsrYUFnZFZDTjRDY1lTRWhDdnhhRnhaNUtLTWZwd3B0UDUwbURDVkNPWUtzM1B6dDRIMGFYQkRPRFg0a0pnVzE5RkdrU0VxZ1EzbEpmM1lDUnNHRVEvdnhRakF2VFptKzl5L1RaY2NWVUpwc29iM2M0RHNJellGTTRRZmowNkJBUUIxOE9jUTIrNFVxb1QzR2VBQmRmRFlEeXNNZUdNNWRjVkJQRHZkenVkRVZVYVRRaCszdWs4UXdTOFV6R1B4N0VqQUUzemRTSFp0aTVTQ1pvUVRJMHBTRTdlQkxYNFhLU0c4WHloRVlBZnExelpmMUUvZE01YnFZQzVkbUZsUzhzRStNRHJKSHdGa2FLZDFzVFJCUE1LdjJ0MHV4Nk94aVBOYWpBMWFwZkQwUVp6WEd1aU1aRG4vUm9Cak0rblphYlhSNHVIcGdSVDR4cHJhbjROZCtLZ2cvTm9uVWowL1BEY3ZTbGFoQ1cvckt5OEVhMnZtaE5NRFV3V2hlVXdkRG9ScmJGRE5MOEVRNklIYnJWKzBTT2dDOEhiSFk2YkthS3dnSGU2d2hNRzA1RjFNQ1I2TFh6TzBEbDBJWmlhQWlSZnRRbDRQbndOMFJIYU5KNktzTkJBSDJueElLRnBMenFVb2ZWZWI3a3NreU93SE1JM0VnOEVTTURibjNlNWZoYVlGTXV4YmpWWU1YYTN5M1VXdm5seFFrMytRRWtiNmpFMHk1dFprRXR4MUwwR0syVFduVHBWSUhmMy9BWGVGQml5djdjRXZXWFl0QjNWN1hHNTlpcTR4QnZyWG9NVkIranNUR1pLOGd3WVFnM056MTh3L2dxbWM1ZXdKSmRpYTVnYXJCRDlNaUdXNDk2V0JwZ1EyVWczdUZiU0V6bW1vd2tSV1JmdmRFOTduN1dmaGlOWWNiQ3V1WGtla2VVRHNEMXVycEtXaURFMHlmdlRNakpxWTVuRWlBUVB3eEpNallmZkh4aloxU3Y5Qm5yWTkwVGlqSm55QUxHZnczY2dqemZXT0Y5UTAyNURFNnc0WHV2eHdDOWQ0eDNRWkk5UTBzd2MwMXBMQkdFZExLTUdiWmlpaGsrbUlKZzYvZ1Rzb05vcG82Y0pJcXZnRkw1VU5WOEFzR0c1MUZMYjZIYThwWlgxcGlGWUFlU3gxdFp4UHA5dkF5Sm9HVFRkcHRnQUZZWS83YkM5eGJONUx0ZkJTRjZ6VVh4bEVadU9ZTVhwTlNkT2pPNzJTVTlDYjNzNUVKMmtwQnNyeG0zd3RlVXplVTduSVNCVzFzTTIweEtzZ0xXNnRUVy94eWM5aUpEOEVQMU5leVZkcnhnQS9STDZDNjhRQzk3WDZIQWNoOW9MOTU5K3dmUUVCMEszeXVPcDlHSDhFRUQ2ZmVpUUZRZGVVL200Q3lab21nakdCK3daOXNOcURYbGk4U0doQ0E0RUFIcmVZekFSWmhNc3o0TDNtR2JDRkdoKzRQVjRqZ0cwWHBnN1B3M1RSTWVBMUtNRkkwYTBOSlNVZE1ValU2MnlDVXR3ZjhEb1hMZlEzVjBLazcxM0VobVZRcnM1SGxyUFlSQ25RNDJuVytEVGZ6c1FSemZ5N0lUMFRnQ25FNXI5NjVEdklpTDRQRFM3ZFArUmRtdGUzcjkyamh2WERjZUdELzhIRXFvYVk3bzhWWm9BQUFBQVNVVk9SSzVDWUlJPSJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDE4LTA4LTMwIiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJQaXhlbFBpbiBpT1MiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlVBRjExMDAyMDE4MDUxMTAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4wLjEiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDE4LTA4LTMwIn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAxOC0wOC0zMCJ9LHsiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbImNjYjgwMjBhMzQ1Mzk1MDk1NjNlY2I3ZmE2YzhiMDcyZjQxYTg0ZGIiXSwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiY2NiODAyMGEzNDUzOTUwOTU2M2VjYjdmYTZjOGIwNzJmNDFhODRkYiJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiWXViaUtleSA1IFNlcmllcyB3aXRoIE5GQyBFbmhhbmNlZCBQSU4gKEVudGVycHJpc2UgUHJvZmlsZSkifSwiZGVzY3JpcHRpb24iOiJZdWJpS2V5IDUgU2VyaWVzIHdpdGggTkZDIEVuaGFuY2VkIFBJTiAoRW50ZXJwcmlzZSBQcm9maWxlKSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk3MjgsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6Mn1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiLCJyZW1vdGVfaGFuZGxlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlEUnpDQ0FqR2dBd0lCQWdJVWV4OW5UOXZ3Wk5YUzQ4M0xkaVlHZncyU2pTb3dDd1lKS29aSWh2Y05BUUVMTUM0eExEQXFCZ05WQkFNTUkxbDFZbWxqYnlCQmRIUmxjM1JoZEdsdmJpQkpiblJsY20xbFpHbGhkR1VnUWlBeE1DQVhEVEkxTURnd01UQXdNREF3TUZvWUR6azVPVGt4TWpNeE1qTTFPVFU1V2pBbk1TVXdJd1lEVlFRRERCeFpkV0pwWTI4Z1JrbEVUeUJCZEhSbGMzUmhkR2x2YmlCQ01pQXhNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXUxTWV2bnk5ZHlPOVpVQzM5U29NaExjUi9EWHJ0Ri9jaU0xMnRjaXkyRVhBWjZNa3JpdlZ0Q2ZFVk05WDZJU1RFbkJQNnVTWVlvdjZwcHY2TzZKaDJOSG1ZbTR3K0puUzRWbkNQVTdtSEFNZlZJMk1HVFRNVk9ldzB4VXNHN3NJU0lrSURVQm11azhZSzljNXppYzkrdkZRR0xJa3NkWE81aVZGSWdORzUzY0dYRDRaTFpvQVBpdTBQRW96eEFxWUlhSTRneEtoT0EzUzgvVzhtSVdzdTZvZnlqNEd2a0ZHNlo3a3lGMzEwN1A3bXdGSExySTNFTmFQV01PRmNUYUdhMGR3Ky92VlJ3alJjRVpCVnN1dVQvODdja1NzMGE1cGt0M3ZaQmxhWWVUOHB6U3JlVjdtb3djSU05MEwyaWFBVGxQMG54bWFFNm5PeVRib2pGVmwyd0lEQVFBQm8yWXdaREFkQmdOVkhRNEVGZ1FVU1hFaDNzYTNidER1cm00TU0vQzdTMWxSdXVZd0h3WURWUjBqQkJnd0ZvQVU2cmRDa0o0TWUyUjYyMVI4QTdwOFRwL1lvV0V3RWdZRFZSMFRBUUgvQkFnd0JnRUIvd0lCQURBT0JnTlZIUThCQWY4RUJBTUNBWVl3Q3dZSktvWklodmNOQVFFTEE0SUJBUUI1R2MzaGFmdHA3aEtzRVpzbytpL1o1blJ1cWRtekcyV0NsVW9SVXFiYVB5Z2xuSkRqS1Iva2ZnT2w2aWJiRi96dGhtM0ttWFE3SGNESVAyeE1kRzdVMkwyaW1iSlFIcVBmL2gySHFvamI0clpndWUrNlc0a3RTUjVlbFI5TDFyWXFFL1NHWU00aUVLb1ZRU3Y3UlQxcnhJZVdpS3N3L1Z4eGkvUU9uc3gzRjd4ODBDQ1lnQjRFM3lReDhWVFc0NDBoVEV3VEExZU1IT2l4MzJ0UHR5eUhJYThQVlZJZlZwSFFKQmFNVnZ2NTA4VUVqd2tiVTJybmpmem9TVE5TOUE1alVROG1CU3ZlOTVyakIwZG85OEVVK0R4ZEJxWDIrSDZpNXdsSUNGZ3poZHpjc25lOWhHS1Q2bHpUWDRjSWRKc3JZMit4bGVLMEZGUXk2bEdFVkxFZSIsIk1JSURTakNDQWpLZ0F3SUJBZ0lVUjM4bXEyNlNmMnN6VlYyQmRHNldFTjdrdVdVd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVJZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU5ZMFdiOW9Qb1JvS29ReVdQYUpwejExdnJXVGc2elR0bU5qMlZvS1JueXZLR1JxcHpiODN3NWw2WUE5NlVZa1lCRFFQMGlsTzJEUGU2d1dxVlI1ekRmUnpkY0g4YmgrTDdkR0d2YWU2aFJUWmhrRmtDcFhEczRIY2NrbnJEZjhGQ2xKN0hlMzlKZjQyL0cxUW0yeno5V1dtclBYdGdpSy94MDVHanNRZkd1REcxemY1UVRVVWllOGx3eW1LM1RmZE92TmVlSkFBUGUycG43SXRmUmIrclZyTldpRHpsUm4ydk5uWjJ3UG80d0gvV0o2ZGhYWkcrck1XVCthNkJvY2cxVWZJdzZrZHVuRzRiVHBaenN2YWNGWXlSMG1wZitEZU9ucFNXQW15d0pXSHZUbGYyWVh4RnllWGNUQUNkUWxjTU5HSjJWaFpRNDh4dFA1L1JCUC84a0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ2h5NDJva2lxY1RTMWlxYS9IUldqa0JuNEgvTUI4R0ExVWRJd1FZTUJhQUZPcTNRcENlREh0a2V0dFVmQU82ZkU2ZjJLRmhNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUFuK1JISVBidE1FRE5kVDFnOEgvUml0QWtVZExnQXQxdFdHV25sajlrbmJ2NC80R2xYN0M5cDQ1ZWZQTzkvYVpMNk9WMVhSS0JpNkttdEJXNUs3bnVZRW5NeC81QnFCU2JMVDdyaGR1QzQ5VEJlTWI5UEhkWHNUbFNWTlllZnIxZEdpZHI0ajB4VkJRTGIxcmtuREFiZFdEektmdm5heUtPOEZyd2U3SHg4NDNNRy9ySitjMFhydVV2YmZWVENITGlJV2hNN29ORGhMOHhvYjZ4VW85S0xLY1NMK0l0WXNPMy85V2I4UTlHanNxTDRGWHNEY0cxU2FZaDdLcGZ1TW1PaXhxekpaTzJuSWljUFlSZzFJMlN1aVVmWU83MHRtZEhjYmwra1NRbVNZdDdycTR2aUlMZzJHeDNqOXJJVHVXVGpiYVVhU1NReGdPbU1TSHV5ek1BQyIsIk1JSURTRENDQWpDZ0F3SUJBZ0lVVWNtTVh6UklGT2dHVEswVGIzZ0V1Wllaa0JJd0RRWUpLb1pJaHZjTkFRRUxCUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JCSURFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURtNTU1YldZOVdXK3RPWTBySVdIbGRoK2FOYW5vQ1pDRmg3R2szWVpyUW1QVXcwaGtTRzZxWUhRdFArZlp5UzMzVkVydmcrQlFxbm11bWdOaGZ4RnJrd0VaRUxlaWRCY0M4QzRBZzRucXFpUFdwenN2STE3TmN4WWxJbkxOTEZjWlkvK2dPaU42Wk9UaWhPNS92QlpNYmo5cmlhQWNxbGlZbU5HSlBnVGNNR2FFQXlNekVNTnkybm02RXArcGpQNWFGNmdpMjF0L1VRRnN1SjFqMlJqL3luTS9TZFJ0K2VjYWw1T1lvdHhIa0ZiTDl2dnYyQTJPdjVJVFpDbHc0Yk9TOW5weXBRaW1PWjVRQVl5dG1ZYVFwV2wvcE1ZejZ6U2o4UnFrVkRORUpHcU5mVEtBMml2TFl3WDZsU3R0TVBhcGcwSjg0bDlYMHZvVk4vRnBTNFZDVkFnTUJBQUdqWmpCa01CMEdBMVVkRGdRV0JCUWdLRkFoRzZSYVcraFR5NTJkeGVUOGJDOTZIekFmQmdOVkhTTUVHREFXZ0JUUzd1OWFJbzA2YlZ3amx6M3loZFVtOFNWN2tqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQTRHQTFVZER3RUIvd1FFQXdJQmhqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFZTXpnTHJKTElyME9vdlFuQVpyUklHdWFiaUhTVUtTbWJMUldwUmtXZUF0c0NoREVIcFhjSi9iZ0ROS1lXb0hxUTh4UlVqQjRDeWVwWWV2YzNZbHJHOG83ekh4cGZWY2FvTDVTZXVKa3pIeEtuNGJUYVNwOStNdndhbW5wNjRrWk1pTmJGTGtuZlA5a1lLb1JIa01XaGVSSjFVc1AxejRTY21rQ2VJTGZzTXM2dnFvdnFqV0NsRnNKcEJjc2x1WUhXRjdiQkoxbjRSd2crQVRFb3BZNElnR3Y2WnZ3YytBOXIrQVQyaHFwb1NrWW9BbCtBTll3Z3NsT2Y5c0plMFYrVEE5WVkvVWxhQm1QUFRkMC8vcjl3dmNlUFdaa1BqS29BQy96VU5oZkRiaDRMVjhHSHMzbHlYMlhvbUwvTE5jOEpZenlJYURFaEdRdmVvUGhoL3RyMWc9PSIsIk1JSURQakNDQWlhZ0F3SUJBZ0lVWHplaUVESkVPVHQxNEY1bjBvNlpmL2JCd2lVd0RRWUpLb1pJaHZjTkFRRU5CUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTVo2L1R4TThySVQrRWFvUHZHODFvbnRNT28vMm1RMlJCd0pIUzBRWmN4VmFOWHZsMTJMVWhCWjVMbWlCU2NJWmQxUm54MW9kNTg1aCsvZGhLN2hFbTdKQUFMa0tLdHMxZk81M0tHTkxadWp6NWgzd0duY3I0aHlLRjBHNzRiL1UzSzloRTVtR05ENnpxWWNoQ1JBSGZyWU1ZUkRGNFlMMFg0RDVuR2R4dnBwQXk2bmtFbXRXbU1ud08zaTBUQXVjc3JiRTQ4NUh2R000cjBWcGdWZEpwdmdRamlUSkNUSXErRDM1aHd0VDhRREl2K25HdnBjeWk1d2NJZkNrenlDaW1KdWtoWXk2S29xTk1LUUVkcE5pU092V3lETVRNdDFid0N2RXpwdzkxdSttc1V0NHJqMGVmbk85czBaT3dkd01SRG5INHhnVWw1Wkx3cnJQa2ZDMS8wQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQjhHQTFVZEl3UVlNQmFBRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRTXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJEUVVBQTRJQkFRQzNJVy9zZ0I5cFo4YXBKTmp4dUdvWCtGa0lMa3Mwd01OcmRYTC9jb1V2c3JoenN2bDZtZVBNcmJHSkJ5SjFYbnF1QjVzZ2NSRU5GeGRRRm1hM21pbzhVcGYxb3dNMVpyZVhySjBtQURHMkJwbHFiSm54aXlZYStSMTFyZUlGVFdlSWhNTmNaS3NEWnJGQXlQdUZqQ1dTUXZKbU5XZTltRlJZRmdOaFhKS2tYSWI1SDFYZ0VEbHdpZWRZUk03Vm9sQk5sbGQ2cFJGS2xYOHVzdDZPVE1PZUFEbDJ4TkYwbTFMVGhTZGV1WHZEeUMxZzkrSUxmejNTNk9JWWdjM2lyb1JjRkQzNTRnN3JLZnU2N3FGQXc5Z0M0eWkweEJUUHJZOTVyaDQvSHFhVVlDQS9MOGxkUms2SDdYazM1RCtXVnBtcTJTaC94VDVIaUZ1aGY0d0piMGJLIiwiTUlJRFNqQ0NBaktnQXdJQkFnSVVUbmJiR0lSMk5IdnpxSUtGQWVRd0cxWEJpczB3RFFZSktvWklodmNOQVFFTEJRQXdMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3SUJjTk1qUXhNakF4TURBd01EQXdXaGdQT1RrNU9URXlNekV5TXpVNU5UbGFNQ1l4SkRBaUJnTlZCQU1NRzFsMVltbGpieUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRUVnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBT3NYajNrMDRCYW40VFlkdFpLcUQvT1BKeHlEeWFQbUNCVUZVaWFaSWdUdGVabmozWDI1RGhncFpaWHNDNEQweWRJY3JsQTZ3TlVJbk9STC9MOXpCYlRFSU1BVk1HbzZnN1VLQW1iMk1GNkFIYm5oWUpkOWVpa3VwVk5XU2hITllOYzRHQmRPMVlONkFmVXF2SmhIYmUzVjRTTk1QbUJSRUtKUFZ6N1Rod2dtZ2dUZThXczJLMC93c3F2MndTRTdwYkNCc1VaaElYNTFiWk0zcHFEd0pQVG1SRkV2dDAvNnRHNWVPOEYzajE0T1hxZkVobWpuMVZ2eEtEWVFPTFpBeEN3d2dDMFA0Q2RmV3YzeThQU1I4STM1NGhPMVkrR3pOanZJcVgzOE5LTHl3dUlZSEZlck94Tmx4RU1CdkZoWUJ1UnVZQWtrZ1VhUHFONlVCaHNJTHJzQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZDQ29SSGhpeU5uYm5YUldJTDZaQlhvQlg5WVRNQjhHQTFVZEl3UVlNQmFBRkNBb1VDRWJwRnBiNkZQTG5aM0Y1UHhzTDNvZk1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQ1FGYWZKSTEvNVdnOUNFRWltRTFSUDU0UmdRd1ROVE9PUXNMQUNUZStySXRsRlF6QzlaRGhyVjgyOHlYN2p6eStBQXNwM2l6SzdUMXRoMmRsN20rdHUwc3cyUGEvb2xjMDJudDZQeUl3MzQ4Z2FIemhJMSswS0U0NXF4dkZEZUwybE14YlBmQ1l2eUVFYVl6amlRRUxVNTk1MXBYR1d5S01hLzRmTHRPK1pLT1hoTXVWZXE0clhEUEk1NFc2SkhPaUFhaUtkaXcrNWUzYzJrdC9qRklRdE02dk1YZzlMTkZ6ZGpFVE50MjBWWDlRZXZScEZaZnVjTUc5d0NhUURvRmxQenBUTUpLaFBldi9pbUptWlloS2ZyMGxMY2VtdHFqSXhMQW9xWmRPWWZIQmc2K3ZBY2RQSS9pYXVHcFVBdjdYK1VLTm1Ed2paMkJhSDRzTHdoQjJtIiwiTUlJRFNEQ0NBakNnQXdJQkFnSVVEcUVSdys0Um5HU2dneGdVZXdKRkVQRFJaM1l3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRREk3WG5IK1p2RHdNQ1FVOE04WmVWNXFzY3VibHZWWWFhUnQzWWJheG45Z29kTHg1c3dIMGxYcmRnamg1aDdGcFZnQ2dZWVg3RTRibDF2YnpVTGVtck1XVDhOM1dNR1VlOFFBSmJCZWlvVjdXL0UraFRaUC8wU0tKVmEzZXdLQm82VUxlTW5mUVpEclZPUkFrOHdUTHEydjVMbGo1dk1qN0p0T290S2E5SjduSFM4a0xtelhYU2FqMFN3RVBoNU9BWlVUTlY0enMxYnZvVEFRUVdyTDQvSjlRdUt0NldDRkU1blVOaVJRY0ViVkY4bWxxSzJieDJ6Nm9rVmx0eURWTEN4WWJwVVRFTHZZMXVzUjNEVEdQVW9JQ2xPbTRjcnB3bkRSTFZIdmpZZVBHQkIvL3BFeXp4QS9nY1NjeGp3YUgxWlV3OWJuU2JIeXVyS3FiVGExS3ZqQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJUcXQwS1FuZ3g3WkhyYlZId0R1bnhPbjlpaFlUQWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQXFRYUNXTXhUR3FWVlg3U2s3a2tKbVV1ZVRTWUt1VTYrS0JCU2d3SVJubHc5SzdIZTFJcHhaMGhkd3BQTmlrS2ptY3lGZ0ZQemhJbXdISmd4eHVUOTBQdzN2WU9kY0pKTmt0RGczNVBYT2Z6U24xNWNGQXgxUk8wbVBUbUliOGRYaUVXT3B6b1h2ZHdYRE00MVphQ0RZTVQ3dzRJUXRNeXZFN3hVQlpxMmJqdEFucS9ORFVBN2JlNEg4SDNpcEMrLytOS2xVcmNVaCtqNDhLNjdXSTB1MW02RmVRdWVCQTduMDZqODI1cnFEcXNhTHM5VGI3S0FIQXc4UG1yV2FOUEcya2pLZXJ4UEVmZWNpdmxGYXdwMlJXWnZ4clZ0bjNUVjJTQnh5Q0pDa1hzTkQwNWRDRXJWSFNKSXMrQmR0VFZOWTlBd3R5UG1ueWIwdjRtU1R6dldkdz09Il0sImljb24iOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJpY29uRGFyayI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsInByb3ZpZGVyTG9nb0xpZ2h0IjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwicHJvdmlkZXJMb2dvRGFyayI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI2LTA0LTI1IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTcyOCwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZdWJpS2V5IDUgU2VyaWVzIHdpdGggTkZDIEVuaGFuY2VkIFBJTiAoRW50ZXJwcmlzZSBQcm9maWxlKSIsImNlcnRpZmljYXRlTnVtYmVyIjoiVTJGMTAwMDIwMjYwNDI1MDA2IiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25Qcm9maWxlcyI6WyJlbnRlcnByaXNlIl0sImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjYtMDQtMjUiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NzI4fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI2LTA1LTAxIn0seyJhYWd1aWQiOiIzNGY1NzY2ZC0xNTM2LTRhMjQtOTAzMy0wZTI5NGU1MTBmYjAiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjM0ZjU3NjZkLTE1MzYtNGEyNC05MDMzLTBlMjk0ZTUxMGZiMCIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IDUgU2VyaWVzIHdpdGggTkZDIFByZXZpZXcifSwiZGVzY3JpcHRpb24iOiJZdWJpS2V5IDUgU2VyaWVzIHdpdGggTkZDIFByZXZpZXciLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDcyLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciLCJlZDI1NTE5X2VkZHNhX3NoYTUxMl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImFsbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJREh6Q0NBZ2VnQXdJQkFnSUpBTnBxRDUyVE9UdXNNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUZCeVpYWnBaWGNnUTBFZ01qQXlNREFlRncweU1EQTRNekV4T0RFM01URmFGdzB5TVRFeU16RXhPREUzTVRGYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUZCeVpYWnBaWGNnUTBFZ01qQXlNRENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPR0JMdEJtVVBKUUFDUVdWRWVCeGV6UmdaZHFHTVA2ZVRyUHR5OHl2TTl4QStqL1g0ZzJsUk5NRjlhMGp3M0Jqa1dTc29XSmpZVHV6ZXZHTWcycmI5TTVxcWQvT0Q0OThPQWs2VUV0TXlicjE2MkNPMndCOFNuMm56ZnpVZGJ3WlQ0ZHhsMjUxbGZYNUpzWlZUeUpkdWhsSnpiS0dldEwzSk1tQ0FwZXRTTzB4Y2NHU0lWOUdVb0ptNzhLbFFPNnNtU0RBa1JGeEo4UGc4YkU0NDlxaUlxUC9LMTB1UmV1NjZVQ1dkYW9YQ0txUmQ1aWtiVSs2aWdKRkhaejk0VUJQcnNnbGNZMEZxMDNuckJCdnJwRXpHbmlzQi80M0U5SXRqcjlVTFY0UFFRbWl1V01jSVBtRlAxalROZ0tLblhac3hlMTE0Qi96QjNVeGhJQjI5clJvcEVDQXdFQUFhTlFNRTR3SFFZRFZSME9CQllFRkFMdm91S0RVbmhqR3hVUlIrTTFLMW1NaUJ0N01COEdBMVVkSXdRWU1CYUFGQUx2b3VLRFVuaGpHeFVSUitNMUsxbU1pQnQ3TUF3R0ExVWRFd1FGTUFNQkFmOHdEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBRU80OEErYysxRWFjN1pZSnZCczNqQTQwcVZoRUtlRXkyaStKaUFmd3VHemNmTVVrLzRvQ1o1VjVXREx6R2hhU2NiTUxFb1ZNcXhIRlVGWEkxa1U5UE5Wb255Z3dZMHhWczNtTnFsQ0pNK0xaMlF0eEdxQ3JER3hNUEFsdXZzRmhyMW1NYUhrN2VDemtKQWhocHZVYUc5RjA3am1vNVU3SGZGeVFyMHdReFNpVWc1bm1qWEZna2N1aTJwTWZPZUtCZGRCeTdPYzZ1aGVDUnlQek9LZFlla2diWlByTlovMk9uaEpxUS82U3E5S2h6Nmg5OUFtVXBNWVVpdWEwbXpGb1NuRmt5RVJMMFM0aC9iYlpsU0VlQ2lKQ3hGRURCWkI0WmdPc09STDJESExqa1RuZVBnczlialZwM2xWZWxJcGxxaStLNk8rTW1NbFlGck9PZXdhNWE0PSIsIk1JSURLakNDQWhLZ0F3SUJBZ0lVZWYrVnZIa2NUUW5FRCsrd0pNL0l4elNVTGswd0RRWUpLb1pJaHZjTkFRRUxCUUF3SmpFa01DSUdBMVVFQXd3YldYVmlhV052SURJd01qTWdSa2xFVHlCUWNtVjJhV1YzSUVOQk1CNFhEVEl6TURreU5URXhNekkwTVZvWERUSTBNVEl6TVRFeE16STBNVm93SmpFa01DSUdBMVVFQXd3YldYVmlhV052SURJd01qTWdSa2xFVHlCUWNtVjJhV1YzSUVOQk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBb3VGTVRPS2FFMFl0ZXhPb2lzU3hwK0ViaTVJQTRlc0VTY3gxNmx6UWRxVjYvZVo4Mkt0SmVOWEV1TmtCVlpEcGMzMmdTdHV4TEJIOG1nc29IQkZhaTJEa2pmQm41cWJ3Ui9jNStzbmx3WnZqZ1ZBMGh6S3c5Q3dBZUF3UkQ1a3JXdDg4L0NWeUNrTWNnTFNHd1pzL3JqN0YvTHMzRWJnN01xTGJiUUo5Q296YmJMZEpVWUlIY1BwU1pQdG9NclpiNEd2bmk2aVZTOVV2Q0tncHFjNkxHUm1vWUdHNFpSM2xHSi9YUVpmdStHZUpXNjdpaW1Nai95b1hPd3h1Y3hpdlpIRms2Y1FTZ3d1d2lvZU5tNHd2azgzTGhTdVdjdGYya0F5UWNaN2tVbnBOZWUrZDRNZ3JtR1U0WE1GTGlUZ3V0YUIrZTlWOGQ1SlRrVU9IaUx6dGtRSURBUUFCbzFBd1RqQWRCZ05WSFE0RUZnUVVNNVNCNWJIclYranBJT01kSmw3dTdiY25UWTh3SHdZRFZSMGpCQmd3Rm9BVU01U0I1YkhyVitqcElPTWRKbDd1N2JjblRZOHdEQVlEVlIwVEJBVXdBd0VCL3pBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQUNvd1IzS1RMZmlkSnlRRk5xRUZmVXJmWjlhYTllZ3BPUXROUkpkTFN0SjZ4dTJXZkx3dkc0b2pHSmxCS05uZmE1REljeVFZZi84cUo0ZWxpQVZlTlh1WW1lTW1nTmdaWnl1WTZHMXlXQ0QyVjNzRDZaNHVqM1NiYURPSGozZ0h2c3pnUWhyaFQxaC9wdUhRa242K2hZS0FwNzdrTTdJYzZBWi9SRmJqcG1MTGsyRDBzRTFselQvMDJpK0JoN004c21haURaOSsrSkd6eGVTdW44VzFIbGVaVW0ycUtHbVJhNFhQZHJ5VDd4NktHVUduVTRhM2JwVW1WZVk5clEvc2ZNZDVaVG9vKzN1bkZXRHpvVlYydk51OCsrVkxDOXpvNDBGYUtRTHI5VkFKREo0eUxFTlI3S3JtVjhMMGNDWEtKR1pXQVd0RzVSR1RtSEloZCtuQjQxZz09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWZDQVlBQUFDR1ZzK01BQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBSFlZQUFCMkdBVjJpRTRFQUFBYk5TVVJCVkZoSHBWZDdUTlYxRkQvM2Q1OXdlUVNJZ1M5QVFBWGNGTEFRWmk5ZnBlVnoxdFkvV1RacjVXeHBjN1c1a25MYTVqSTNaODVzclMybk0yc2p0V3daUzdJVUg0SDR4Q25FUXg0REFaRjc0Vjd1czg4NXY5L2xJbkJ2VkovQjRQdjludS81bnUvNW52TTU1NmZ6QS9RdjBIYi9JclgzVkZLUG80NWNubTRpblVJV1l3TEZSbVpRVXV3akZHL04xaVJIaDFFWjBOUlZSdWRxdDFCZCsyblNLeVMvT2h5czArbGszZS8za1E5cXZENFpVdGE0VlZTVXVZMGVpcHlpVGhBZm9jb09SVmdEdXV3M3FLUmlBZDNyYmNFdGpUallJb2Y2V2FIc0NtelZQV0NNeCtjZ2g4dExxV01LYU1Xc1VqTHFvMlJ0SklRMG9Pem1lcnBRdTRlc1pnc09Oa0d4SDdkMGtkdlRUMTdzNE9NVTdWSThaaGpnR2FNK0FxOWlFTnU4UGlmMXVkejA3TXd2S1dmOEdsVm9DRVkwNFBDNVdkVGFYWUZiUjh2TnZMNSszS2dmYjV4Tk15YTlSYW1KaXluYU1sR1RWdEZscjZiYTl1K3BxbkVYNHVNdVJSZ2pTWUVock43dXRGRmU2bHFhbDdOZmt3NWltQUdIeW5QcGJrOFZtWTB4c3RucHRsRkNWQ1l0elR1Qk44M1FwTUxqVHRldmRQelNVbko3ZThta2p4WjM5ZlhiS0RmbGRacWJ2VStUVWdHbkJWRjZmUTJpUEhnNFcxNlVXVXd2emJrMTZzTVpFK1BuMHB2ejdKU2V1QXllczhsY3BDbWFLdW8vcCtxV3IyVWN3SUFIV3J2UDBZRXpoWEF0TEFic3NIaHA3aUdhbXZ5aWpQOHJ5cXJYVVdYOVhvb3d4eUF1Zk5CcnA0M1BPQkZYWmxrZjhNRFJpcWNweW93QXdwdXoyeCtmV3Z6L0R0ZGU5c21zenlndGNSNkMxd2JkekJsNk9scTVXTllZNG9HYXRoSk1ya1RFeDBqQVJTSEFWcys1cllrUU5YYitRZ2ZQTHNRNmdYeUluc3JlUWZtcG03UlZGWWZMODZuMWZpVU9rWXZTaGtVUHh2YnVrem95NksxaWhNMWhvM1h6VzZFdlNmWEErZHBpV0dhV2QrZG9Yekx6bUd3S1lGTENBc1JBbFBCQWhNbENGWFU3dEJVVlByOEhnVmNKSFdxK0YwMHBscitETVRkclA0enZ4WTExa05NaHhUK1NlVEdnK2Q0VjVMUUppdHlVR0pOQjhWRlpzamdZQlpNL0lJL1hDVGtqMHF5RE9wRjJBVlExN0NJalVwL0RuVDFVa0w1RjVnZGorc1Mxd2cxZ0UzZ2lnbTYwZkNYelNuUFhieUFQYklYditJRHBFMTZUaGFISVM5c2t5aGxtTUU1RjNjZnFBS2hxMkMwRTVQSDFnWWFYYUxQRGtaRzBIREpPbktXSHA1MUkwejVTT3V4OGUxV0F1WnpkSFFyVGtwOFRtalhvSStsYTB3R1pzenVicWJPM2lmUTZBL1c3dlZTWXNWM21SMEpLd2tLYzRXSGlCa21SOEkzQ0NnSTg3b09MNHF6VDVQK1JVSkJlakVPZ0FQSzhoWVB6YXRNK2VJVHAySU85eVRRbWVyb21QUnh4MXF4QWNzaWxlL3ViU2VFYmNXUUdZRUNnaGNMWTJIeUtqb2dqSDI1aE1wanBVdjFPdWdsaTRlaDJlUncwTzMyYkpqa3l1Q2dOemcwdnpsWU1TaVNzMHVvbzRNRzdoTU9qQ0VhWDF5RkUwblN2akJ6dVRuRXBLODZaOElvcUZBSXVidzhrZzlBckVhUkVXU1pJK2pINFhicDZnOUU5RW5KVDNvYVJ6RE4rTVVKQlFESG41NmE4b1VtRUJ1c094QnMvTjUrdEpFYlBrQUZEajhVR3ZPcy9JV3ZjU2dsR0JodlM3L0ZUWWZwV0dZZERZOGZQQXhXU0EzNXNUQzRwNCtMbTRBYXFJb1BlUXRmdWZLNkpoMFpoeGxic1VYT1NtWE5pZkQ1WlRBa3lEb2ZiYmNjbHhuQThXTkFxeENiUk55a2hYeFFwYUR3NjdmWFVZYnNpRzBLaHR2Mm9lSXZoOHJoUU1ZT2NFQXFYRy9lSSt6bmdPYzV5eHI4cTgySUFNMWMvRkxGT3BscXU1ZUZRWHJNWnpHY1ZDalliTFdHNUk0QlQxZXVScmxieHROT3RNaXREREVoTFhJSXluQUF2dU9FV0UzWDNOZEFmdDk0VmdhRzQyWElRdDBaWDZQZUNFL3FRRmU5cks2SHg3WVU1MEt2SDdmVzRmUytxN0tLQkp4c2dnQlg1cFNBR2gxaklyVmg1elE2dzNSZmFhaEJYbS9hQ2JDWlRqQ1VGVVR5V1pxVzlwNjJNakpQWFZxT3JQZ01PNE52NzRHa2Yrb3dmdE5WQkRRbmpGSnFIU3cxN3BYdmhXVzVLWnFlL1E0OU4vVVNUQ0FWV29RWEZJSEJIWFhlM0ZQclVEc3VHRG10Ri9oSEtUSHBla3hoaUFPUEkrU0pxNlM2SEY0STlZV3prQkpUbzQ2aVVNeldwOFBpci9SaWR1THhLWXNTa3NWOHZMbE9RdmhHWDJZbFIwT0JoQmpDK3UvZ0VjdlkwQXBLN1lrNDFOeGpQU1FuV0ZIVEY2NlVyamdldkI4Q3U1YStsMnZZU1JQdHVWRG83M2hoZE1TSG5VWDd0VGpzVlpHeEFsL1dwdGlPSUVRMWduTDI5bVg2L3RSMXRtbGtZajhXNFgrQ1NqV2NVREdZMU5wUy9DN2hTS3FpTUxNL2wyUW1TV1o3M0RkeitnaW84QkNFTllQUTQ2cW5rendYVWJxdkJreGpVUXNXZlpGZ2J1bzNyQWYrd043ak9POTAreW54NFBpM0wrMG5ZTDFTY2hEVWdBUDRnUFYvN0lkMXErMUhTaG11R2tJcVdSUGd5eE1GcVA4SGZqVG5qWHdZNWJRZmJKY3Q2T0l6S2dNSG90Ri9IZTFlZ3NheEhTcUc2d2ZkbVE1eDhOeVRGRnFCY3AyaVNvd0hSM3lrNSszNmhGN3ZYQUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzFfUFJFIiwiRklET18yXzEiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwibGFyZ2VCbG9iS2V5IiwiY3JlZEJsb2IiLCJtaW5QaW5MZW5ndGgiXSwiYWFndWlkIjoiZDg1MjJkOWY1NzViNDg2Njg4YTliYTk5ZmEwMmYzNWIiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjp0cnVlLCJ1cCI6dHJ1ZSwidXYiOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJsYXJnZUJsb2JzIjp0cnVlLCJiaW9FbnJvbGwiOnRydWUsInVzZXJWZXJpZmljYXRpb25NZ210UHJldmlldyI6dHJ1ZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOmZhbHNlLCJhbHdheXNVdiI6dHJ1ZX0sIm1heE1zZ1NpemUiOjEyMDAsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6OCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoxMjgsInRyYW5zcG9ydHMiOlsidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN30seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTh9XSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5IjoxMDI0LCJtaW5QSU5MZW5ndGgiOjQsImZpcm13YXJlVmVyc2lvbiI6MzI4OTY0LCJtYXhDcmVkQmxvYkxlbmd0aCI6MzIsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjoxLCJwcmVmZXJyZWRQbGF0Zm9ybVV2QXR0ZW1wdHMiOjMsInV2TW9kYWxpdHkiOjIsInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjoxMH19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMC0wOS0xNyJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjAtMDktMTcifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyIxYmNiZDZmNWI3MjdmZDNjNmM2ZTI5ZjkxM2Y1OTA4ZDJjNTZhYjE3Il0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjFiY2JkNmY1YjcyN2ZkM2M2YzZlMjlmOTEzZjU5MDhkMmM1NmFiMTciXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ill1YmlLZXkgNSBDQ04gU2VyaWVzIHdpdGggTkZDIChFbnRlcnByaXNlIFByb2ZpbGUpIn0sImRlc2NyaXB0aW9uIjoiWXViaUtleSA1IENDTiBTZXJpZXMgd2l0aCBORkMgKEVudGVycHJpc2UgUHJvZmlsZSkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2LCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjJ9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50IiwicmVtb3RlX2hhbmRsZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRFNqQ0NBaktnQXdJQkFnSVVUbmJiR0lSMk5IdnpxSUtGQWVRd0cxWEJpczB3RFFZSktvWklodmNOQVFFTEJRQXdMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3SUJjTk1qUXhNakF4TURBd01EQXdXaGdQT1RrNU9URXlNekV5TXpVNU5UbGFNQ1l4SkRBaUJnTlZCQU1NRzFsMVltbGpieUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRUVnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBT3NYajNrMDRCYW40VFlkdFpLcUQvT1BKeHlEeWFQbUNCVUZVaWFaSWdUdGVabmozWDI1RGhncFpaWHNDNEQweWRJY3JsQTZ3TlVJbk9STC9MOXpCYlRFSU1BVk1HbzZnN1VLQW1iMk1GNkFIYm5oWUpkOWVpa3VwVk5XU2hITllOYzRHQmRPMVlONkFmVXF2SmhIYmUzVjRTTk1QbUJSRUtKUFZ6N1Rod2dtZ2dUZThXczJLMC93c3F2MndTRTdwYkNCc1VaaElYNTFiWk0zcHFEd0pQVG1SRkV2dDAvNnRHNWVPOEYzajE0T1hxZkVobWpuMVZ2eEtEWVFPTFpBeEN3d2dDMFA0Q2RmV3YzeThQU1I4STM1NGhPMVkrR3pOanZJcVgzOE5LTHl3dUlZSEZlck94Tmx4RU1CdkZoWUJ1UnVZQWtrZ1VhUHFONlVCaHNJTHJzQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZDQ29SSGhpeU5uYm5YUldJTDZaQlhvQlg5WVRNQjhHQTFVZEl3UVlNQmFBRkNBb1VDRWJwRnBiNkZQTG5aM0Y1UHhzTDNvZk1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQ1FGYWZKSTEvNVdnOUNFRWltRTFSUDU0UmdRd1ROVE9PUXNMQUNUZStySXRsRlF6QzlaRGhyVjgyOHlYN2p6eStBQXNwM2l6SzdUMXRoMmRsN20rdHUwc3cyUGEvb2xjMDJudDZQeUl3MzQ4Z2FIemhJMSswS0U0NXF4dkZEZUwybE14YlBmQ1l2eUVFYVl6amlRRUxVNTk1MXBYR1d5S01hLzRmTHRPK1pLT1hoTXVWZXE0clhEUEk1NFc2SkhPaUFhaUtkaXcrNWUzYzJrdC9qRklRdE02dk1YZzlMTkZ6ZGpFVE50MjBWWDlRZXZScEZaZnVjTUc5d0NhUURvRmxQenBUTUpLaFBldi9pbUptWlloS2ZyMGxMY2VtdHFqSXhMQW9xWmRPWWZIQmc2K3ZBY2RQSS9pYXVHcFVBdjdYK1VLTm1Ed2paMkJhSDRzTHdoQjJtIiwiTUlJRFNEQ0NBakNnQXdJQkFnSVVVY21NWHpSSUZPZ0dUSzBUYjNnRXVaWVprQkl3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRRG01NTViV1k5V1crdE9ZMHJJV0hsZGgrYU5hbm9DWkNGaDdHazNZWnJRbVBVdzBoa1NHNnFZSFF0UCtmWnlTMzNWRXJ2ZytCUXFubXVtZ05oZnhGcmt3RVpFTGVpZEJjQzhDNEFnNG5xcWlQV3B6c3ZJMTdOY3hZbEluTE5MRmNaWS8rZ09pTjZaT1RpaE81L3ZCWk1iajlyaWFBY3FsaVltTkdKUGdUY01HYUVBeU16RU1OeTJubTZFcCtwalA1YUY2Z2kyMXQvVVFGc3VKMWoyUmoveW5NL1NkUnQrZWNhbDVPWW90eEhrRmJMOXZ2djJBMk92NUlUWkNsdzRiT1M5bnB5cFFpbU9aNVFBWXl0bVlhUXBXbC9wTVl6NnpTajhScWtWRE5FSkdxTmZUS0EyaXZMWXdYNmxTdHRNUGFwZzBKODRsOVgwdm9WTi9GcFM0VkNWQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJRZ0tGQWhHNlJhVytoVHk1MmR4ZVQ4YkM5Nkh6QWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQVlNemdMckpMSXIwT292UW5BWnJSSUd1YWJpSFNVS1NtYkxSV3BSa1dlQXRzQ2hERUhwWGNKL2JnRE5LWVdvSHFROHhSVWpCNEN5ZXBZZXZjM1lsckc4bzd6SHhwZlZjYW9MNVNldUprekh4S240YlRhU3A5K012d2FtbnA2NGtaTWlOYkZMa25mUDlrWUtvUkhrTVdoZVJKMVVzUDF6NFNjbWtDZUlMZnNNczZ2cW92cWpXQ2xGc0pwQmNzbHVZSFdGN2JCSjFuNFJ3ZytBVEVvcFk0SWdHdjZadndjK0E5citBVDJocXBvU2tZb0FsK0FOWXdnc2xPZjlzSmUwVitUQTlZWS9VbGFCbVBQVGQwLy9yOXd2Y2VQV1prUGpLb0FDL3pVTmhmRGJoNExWOEdIczNseVgyWG9tTC9MTmM4Sll6eUlhREVoR1F2ZW9QaGgvdHIxZz09IiwiTUlJRFBqQ0NBaWFnQXdJQkFnSVVYemVpRURKRU9UdDE0RjVuMG82WmYvYkJ3aVV3RFFZSktvWklodmNOQVFFTkJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNWjYvVHhNOHJJVCtFYW9Qdkc4MW9udE1Pby8ybVEyUkJ3SkhTMFFaY3hWYU5YdmwxMkxVaEJaNUxtaUJTY0laZDFSbngxb2Q1ODVoKy9kaEs3aEVtN0pBQUxrS0t0czFmTzUzS0dOTFp1ano1aDN3R25jcjRoeUtGMEc3NGIvVTNLOWhFNW1HTkQ2enFZY2hDUkFIZnJZTVlSREY0WUwwWDRENW5HZHh2cHBBeTZua0VtdFdtTW53TzNpMFRBdWNzcmJFNDg1SHZHTTRyMFZwZ1ZkSnB2Z1FqaVRKQ1RJcStEMzVod3RUOFFESXYrbkd2cGN5aTV3Y0lmQ2t6eUNpbUp1a2hZeTZLb3FOTUtRRWRwTmlTT3ZXeURNVE10MWJ3Q3ZFenB3OTF1K21zVXQ0cmowZWZuTzlzMFpPd2R3TVJEbkg0eGdVbDVaTHdyclBrZkMxLzBDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01COEdBMVVkSXdRWU1CYUFGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFNd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkRRVUFBNElCQVFDM0lXL3NnQjlwWjhhcEpOanh1R29YK0ZrSUxrczB3TU5yZFhML2NvVXZzcmh6c3ZsNm1lUE1yYkdKQnlKMVhucXVCNXNnY1JFTkZ4ZFFGbWEzbWlvOFVwZjFvd00xWnJlWHJKMG1BREcyQnBscWJKbnhpeVlhK1IxMXJlSUZUV2VJaE1OY1pLc0RackZBeVB1RmpDV1NRdkptTldlOW1GUllGZ05oWEpLa1hJYjVIMVhnRURsd2llZFlSTTdWb2xCTmxsZDZwUkZLbFg4dXN0Nk9UTU9lQURsMnhORjBtMUxUaFNkZXVYdkR5QzFnOStJTGZ6M1M2T0lZZ2MzaXJvUmNGRDM1NGc3cktmdTY3cUZBdzlnQzR5aTB4QlRQclk5NXJoNC9IcWFVWUNBL0w4bGRSazZIN1hrMzVEK1dWcG1xMlNoL3hUNUhpRnVoZjR3SmIwYksiLCJNSUlEU0RDQ0FqQ2dBd0lCQWdJVURxRVJ3KzRSbkdTZ2d4Z1Vld0pGRVBEUlozWXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFESTdYbkgrWnZEd01DUVU4TThaZVY1cXNjdWJsdlZZYWFSdDNZYmF4bjlnb2RMeDVzd0gwbFhyZGdqaDVoN0ZwVmdDZ1lZWDdFNGJsMXZielVMZW1yTVdUOE4zV01HVWU4UUFKYkJlaW9WN1cvRStoVFpQLzBTS0pWYTNld0tCbzZVTGVNbmZRWkRyVk9SQWs4d1RMcTJ2NUxsajV2TWo3SnRPb3RLYTlKN25IUzhrTG16WFhTYWowU3dFUGg1T0FaVVROVjR6czFidm9UQVFRV3JMNC9KOVF1S3Q2V0NGRTVuVU5pUlFjRWJWRjhtbHFLMmJ4Mno2b2tWbHR5RFZMQ3hZYnBVVEVMdlkxdXNSM0RUR1BVb0lDbE9tNGNycHduRFJMVkh2alllUEdCQi8vcEV5enhBL2djU2N4andhSDFaVXc5Ym5TYkh5dXJLcWJUYTFLdmpBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlRxdDBLUW5neDdaSHJiVkh3RHVueE9uOWloWVRBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBcVFhQ1dNeFRHcVZWWDdTazdra0ptVXVlVFNZS3VVNitLQkJTZ3dJUm5sdzlLN0hlMUlweFowaGR3cFBOaWtLam1jeUZnRlB6aEltd0hKZ3h4dVQ5MFB3M3ZZT2RjSkpOa3REZzM1UFhPZnpTbjE1Y0ZBeDFSTzBtUFRtSWI4ZFhpRVdPcHpvWHZkd1hETTQxWmFDRFlNVDd3NElRdE15dkU3eFVCWnEyYmp0QW5xL05EVUE3YmU0SDhIM2lwQysvK05LbFVyY1VoK2o0OEs2N1dJMHUxbTZGZVF1ZUJBN24wNmo4MjVycURxc2FMczlUYjdLQUhBdzhQbXJXYU5QRzJraktlcnhQRWZlY2l2bEZhd3AyUldadnhyVnRuM1RWMlNCeHlDSkNrWHNORDA1ZENFclZIU0pJcytCZHRUVk5ZOUF3dHlQbW55YjB2NG1TVHp2V2R3PT0iLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVIzOG1xMjZTZjJzelZWMkJkRzZXRU43a3VXVXdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFSWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFOWTBXYjlvUG9Sb0tvUXlXUGFKcHoxMXZyV1RnNnpUdG1OajJWb0tSbnl2S0dScXB6YjgzdzVsNllBOTZVWWtZQkRRUDBpbE8yRFBlNndXcVZSNXpEZlJ6ZGNIOGJoK0w3ZEdHdmFlNmhSVFpoa0ZrQ3BYRHM0SGNja25yRGY4RkNsSjdIZTM5SmY0Mi9HMVFtMnp6OVdXbXJQWHRnaUsveDA1R2pzUWZHdURHMXpmNVFUVVVpZThsd3ltSzNUZmRPdk5lZUpBQVBlMnBuN0l0ZlJiK3JWck5XaUR6bFJuMnZObloyd1BvNHdIL1dKNmRoWFpHK3JNV1QrYTZCb2NnMVVmSXc2a2R1bkc0YlRwWnpzdmFjRll5UjBtcGYrRGVPbnBTV0FteXdKV0h2VGxmMllYeEZ5ZVhjVEFDZFFsY01OR0oyVmhaUTQ4eHRQNS9SQlAvOGtDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNoeTQyb2tpcWNUUzFpcWEvSFJXamtCbjRIL01COEdBMVVkSXdRWU1CYUFGT3EzUXBDZURIdGtldHRVZkFPNmZFNmYyS0ZoTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBbitSSElQYnRNRUROZFQxZzhIL1JpdEFrVWRMZ0F0MXRXR1dubGo5a25idjQvNEdsWDdDOXA0NWVmUE85L2FaTDZPVjFYUktCaTZLbXRCVzVLN251WUVuTXgvNUJxQlNiTFQ3cmhkdUM0OVRCZU1iOVBIZFhzVGxTVk5ZZWZyMWRHaWRyNGoweFZCUUxiMXJrbkRBYmRXRHpLZnZuYXlLTzhGcndlN0h4ODQzTUcvckorYzBYcnVVdmJmVlRDSExpSVdoTTdvTkRoTDh4b2I2eFVvOUtMS2NTTCtJdFlzTzMvOVdiOFE5R2pzcUw0RlhzRGNHMVNhWWg3S3BmdU1tT2l4cXpKWk8ybklpY1BZUmcxSTJTdWlVZllPNzB0bWRIY2JsK2tTUW1TWXQ3cnE0dmlJTGcyR3gzajlySVR1V1RqYmFVYVNTUXhnT21NU0h1eXpNQUMiLCJNSUlEUnpDQ0FqR2dBd0lCQWdJVWV4OW5UOXZ3Wk5YUzQ4M0xkaVlHZncyU2pTb3dDd1lKS29aSWh2Y05BUUVMTUM0eExEQXFCZ05WQkFNTUkxbDFZbWxqYnlCQmRIUmxjM1JoZEdsdmJpQkpiblJsY20xbFpHbGhkR1VnUWlBeE1DQVhEVEkxTURnd01UQXdNREF3TUZvWUR6azVPVGt4TWpNeE1qTTFPVFU1V2pBbk1TVXdJd1lEVlFRRERCeFpkV0pwWTI4Z1JrbEVUeUJCZEhSbGMzUmhkR2x2YmlCQ01pQXhNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXUxTWV2bnk5ZHlPOVpVQzM5U29NaExjUi9EWHJ0Ri9jaU0xMnRjaXkyRVhBWjZNa3JpdlZ0Q2ZFVk05WDZJU1RFbkJQNnVTWVlvdjZwcHY2TzZKaDJOSG1ZbTR3K0puUzRWbkNQVTdtSEFNZlZJMk1HVFRNVk9ldzB4VXNHN3NJU0lrSURVQm11azhZSzljNXppYzkrdkZRR0xJa3NkWE81aVZGSWdORzUzY0dYRDRaTFpvQVBpdTBQRW96eEFxWUlhSTRneEtoT0EzUzgvVzhtSVdzdTZvZnlqNEd2a0ZHNlo3a3lGMzEwN1A3bXdGSExySTNFTmFQV01PRmNUYUdhMGR3Ky92VlJ3alJjRVpCVnN1dVQvODdja1NzMGE1cGt0M3ZaQmxhWWVUOHB6U3JlVjdtb3djSU05MEwyaWFBVGxQMG54bWFFNm5PeVRib2pGVmwyd0lEQVFBQm8yWXdaREFkQmdOVkhRNEVGZ1FVU1hFaDNzYTNidER1cm00TU0vQzdTMWxSdXVZd0h3WURWUjBqQkJnd0ZvQVU2cmRDa0o0TWUyUjYyMVI4QTdwOFRwL1lvV0V3RWdZRFZSMFRBUUgvQkFnd0JnRUIvd0lCQURBT0JnTlZIUThCQWY4RUJBTUNBWVl3Q3dZSktvWklodmNOQVFFTEE0SUJBUUI1R2MzaGFmdHA3aEtzRVpzbytpL1o1blJ1cWRtekcyV0NsVW9SVXFiYVB5Z2xuSkRqS1Iva2ZnT2w2aWJiRi96dGhtM0ttWFE3SGNESVAyeE1kRzdVMkwyaW1iSlFIcVBmL2gySHFvamI0clpndWUrNlc0a3RTUjVlbFI5TDFyWXFFL1NHWU00aUVLb1ZRU3Y3UlQxcnhJZVdpS3N3L1Z4eGkvUU9uc3gzRjd4ODBDQ1lnQjRFM3lReDhWVFc0NDBoVEV3VEExZU1IT2l4MzJ0UHR5eUhJYThQVlZJZlZwSFFKQmFNVnZ2NTA4VUVqd2tiVTJybmpmem9TVE5TOUE1alVROG1CU3ZlOTVyakIwZG85OEVVK0R4ZEJxWDIrSDZpNXdsSUNGZ3poZHpjc25lOWhHS1Q2bHpUWDRjSWRKc3JZMit4bGVLMEZGUXk2bEdFVkxFZSJdLCJpY29uIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwiaWNvbkRhcmsiOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJwcm92aWRlckxvZ29MaWdodCI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsInByb3ZpZGVyTG9nb0RhcmsiOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0ifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0xMC0yNCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzYsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWXViaUtleSA1IENDTiBTZXJpZXMgd2l0aCBORkMgKEVudGVycHJpc2UgUHJvZmlsZSkiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlUyRjEwMDAyMDI1MTAxNjAwMiIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTEwLTI0IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3Nn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0xMC0yNCJ9LHsiYWFndWlkIjoiODNjNDczMDktYWFiYi00MTA4LTg0NzAtOGJlODM4YjU3M2NiIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI4M2M0NzMwOS1hYWJiLTQxMDgtODQ3MC04YmU4MzhiNTczY2IiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiWXViaUtleSBCaW8gU2VyaWVzIChFbnRlcnByaXNlIFByb2ZpbGUpIn0sImRlc2NyaXB0aW9uIjoiWXViaUtleSBCaW8gU2VyaWVzIC0gRklETyBFZGl0aW9uIChFbnRlcnByaXNlIFByb2ZpbGUpIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyODk2NSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9LHsibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJlZDI1NTE5X2VkZHNhX3NoYTUxMl9yYXciLCJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCIsImJhRGVzYyI6eyJzZWxmQXR0ZXN0ZWRGUlIiOjAuMCwic2VsZkF0dGVzdGVkRkFSIjowLjAsImlBUEFSVGhyZXNob2xkIjowLjAsIm1heFRlbXBsYXRlcyI6NSwibWF4UmV0cmllcyI6NSwiYmxvY2tTbG93ZG93biI6MH19LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCIsImJhRGVzYyI6eyJzZWxmQXR0ZXN0ZWRGUlIiOjAuMCwic2VsZkF0dGVzdGVkRkFSIjowLjAsImlBUEFSVGhyZXNob2xkIjowLjAsIm1heFRlbXBsYXRlcyI6NSwibWF4UmV0cmllcyI6NSwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlESGpDQ0FnYWdBd0lCQWdJRUcwQlQ5ekFOQmdrcWhraUc5dzBCQVFzRkFEQXVNU3d3S2dZRFZRUURFeU5aZFdKcFkyOGdWVEpHSUZKdmIzUWdRMEVnVTJWeWFXRnNJRFExTnpJd01EWXpNVEFnRncweE5EQTRNREV3TURBd01EQmFHQTh5TURVd01Ea3dOREF3TURBd01Gb3dMakVzTUNvR0ExVUVBeE1qV1hWaWFXTnZJRlV5UmlCU2IyOTBJRU5CSUZObGNtbGhiQ0EwTlRjeU1EQTJNekV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRQy9qd1l1aEJWbHFhaVlXRU1zcldGaXNnSitQdE05MWVTcnBJNFRLN1U1M213Q0lhd1NESHk4dlVtazVOMktBajlhYnZUOU5QNVNNUzFoUWkzdXN4b1lHb25YUWdmTzZaWHlVQTlhK0tBa3FkRm5Cbmx5dWdTZUNPZXA4RWRaRmZzYVJGdE1qa3d6NUdjejJQeTR2SVl2Q2RNSFB0d2F6MGJWdXpuZXVlSUV6NlRuUWpFNjNSZHQyemJ3bmVid1RHNVp5YmVXU3dienkrQkozNFpIY1VoUEFZODl5SlFYdUUwSXpNWkZjRUJiUE5SYldFQ1JLZ2pxLy9xVDlubURPRlZsU1JDdDJ3aXFQU3psdXduK3Yrc3VRRUJzVWpUR01FZDI1dEtYWFRrTlcyMXdJV2J4ZVN5VW9UWHdMdkdTNnhsd1FTZ05wazJxWFl3ZjhpWGc3VldaQWdNQkFBR2pRakJBTUIwR0ExVWREZ1FXQkJRZ0l2ejBiTkdKaGpncFRva3N5S3BQOXh2OW9EQVBCZ05WSFJNRUNEQUdBUUgvQWdFQU1BNEdBMVVkRHdFQi93UUVBd0lCQmpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQWp2anVPTURTYStKWEZDTHlCS3N5Y1h0QlZac0o0VWUzTGJhRXNQWTRNWU4vaElRNVpNNXA3RWpmY25NRzRDdFlrTnNmTkhjMEFoQkxkcTQ1cm5UODdxLzZPM3ZVRXROTWFmYmhVNmt0aFg3WSs5WEZOOU5wbVl4citla1ZZNXhPeGk4aDlKRElnb01QNFZCMXVTMGF1bkwxSUdxck5vb0w5bW1Gbkwya0xWVmVlNi9WUjZDNStLU1RDTUNXcHBNdUpJWklJMnY5bzRka29aOFk3UVJqUWxMZll6ZDNxR3RLYnc3eGFGMVVzRy81eFViL0J0d2IyWDJnNElucGlCL3l0LzNDcFFYcGlXWC9LNG1CdlVLaUduMDVac3FlWTFneDRnMHhMQnFjVTlwc215UHpLK1ZzZ3cyamVSUTVKbEtEeXFFMGhlYmZDMXR2RnUwQ0NySkZjdz09IiwiTUlJRFJ6Q0NBakdnQXdJQkFnSVVleDluVDl2d1pOWFM0ODNMZGlZR2Z3MlNqU293Q3dZSktvWklodmNOQVFFTE1DNHhMREFxQmdOVkJBTU1JMWwxWW1samJ5QkJkSFJsYzNSaGRHbHZiaUJKYm5SbGNtMWxaR2xoZEdVZ1FpQXhNQ0FYRFRJMU1EZ3dNVEF3TURBd01Gb1lEems1T1RreE1qTXhNak0xT1RVNVdqQW5NU1V3SXdZRFZRUUREQnhaZFdKcFkyOGdSa2xFVHlCQmRIUmxjM1JoZEdsdmJpQkNNaUF4TUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUF1MU1ldm55OWR5TzlaVUMzOVNvTWhMY1IvRFhydEYvY2lNMTJ0Y2l5MkVYQVo2TWtyaXZWdENmRVZNOVg2SVNURW5CUDZ1U1lZb3Y2cHB2Nk82SmgyTkhtWW00dytKblM0Vm5DUFU3bUhBTWZWSTJNR1RUTVZPZXcweFVzRzdzSVNJa0lEVUJtdWs4WUs5YzV6aWM5K3ZGUUdMSWtzZFhPNWlWRklnTkc1M2NHWEQ0Wkxab0FQaXUwUEVvenhBcVlJYUk0Z3hLaE9BM1M4L1c4bUlXc3U2b2Z5ajRHdmtGRzZaN2t5RjMxMDdQN213RkhMckkzRU5hUFdNT0ZjVGFHYTBkdysvdlZSd2pSY0VaQlZzdXVULzg3Y2tTczBhNXBrdDN2WkJsYVllVDhwelNyZVY3bW93Y0lNOTBMMmlhQVRsUDBueG1hRTZuT3lUYm9qRlZsMndJREFRQUJvMll3WkRBZEJnTlZIUTRFRmdRVVNYRWgzc2EzYnREdXJtNE1NL0M3UzFsUnV1WXdId1lEVlIwakJCZ3dGb0FVNnJkQ2tKNE1lMlI2MjFSOEE3cDhUcC9Zb1dFd0VnWURWUjBUQVFIL0JBZ3dCZ0VCL3dJQkFEQU9CZ05WSFE4QkFmOEVCQU1DQVlZd0N3WUpLb1pJaHZjTkFRRUxBNElCQVFCNUdjM2hhZnRwN2hLc0Vac28raS9aNW5SdXFkbXpHMldDbFVvUlVxYmFQeWdsbkpEaktSL2tmZ09sNmliYkYvenRobTNLbVhRN0hjRElQMnhNZEc3VTJMMmltYkpRSHFQZi9oMkhxb2piNHJaZ3VlKzZXNGt0U1I1ZWxSOUwxcllxRS9TR1lNNGlFS29WUVN2N1JUMXJ4SWVXaUtzdy9WeHhpL1FPbnN4M0Y3eDgwQ0NZZ0I0RTN5UXg4VlRXNDQwaFRFd1RBMWVNSE9peDMydFB0eXlISWE4UFZWSWZWcEhRSkJhTVZ2djUwOFVFandrYlUycm5qZnpvU1ROUzlBNWpVUThtQlN2ZTk1cmpCMGRvOThFVStEeGRCcVgyK0g2aTV3bElDRmd6aGR6Y3NuZTloR0tUNmx6VFg0Y0lkSnNyWTIreGxlSzBGRlF5NmxHRVZMRWUiXSwiaWNvbiI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsImljb25EYXJrIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwicHJvdmlkZXJMb2dvTGlnaHQiOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJwcm92aWRlckxvZ29EYXJrIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiRklET18yXzAiLCJGSURPXzJfMV9QUkUiLCJGSURPXzJfMSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJsYXJnZUJsb2JLZXkiLCJjcmVkQmxvYiIsIm1pblBpbkxlbmd0aCJdLCJhYWd1aWQiOiI4M2M0NzMwOWFhYmI0MTA4ODQ3MDhiZTgzOGI1NzNjYiIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOnRydWUsInVwIjp0cnVlLCJ1diI6ZmFsc2UsInBpblV2QXV0aFRva2VuIjp0cnVlLCJsYXJnZUJsb2JzIjp0cnVlLCJlcCI6ZmFsc2UsImJpb0Vucm9sbCI6ZmFsc2UsInVzZXJWZXJpZmljYXRpb25NZ210UHJldmlldyI6ZmFsc2UsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjpmYWxzZSwiYWx3YXlzVXYiOnRydWV9LCJtYXhNc2dTaXplIjoxMjAwLCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjgsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4LCJ0cmFuc3BvcnRzIjpbInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi04fV0sIm1heFNlcmlhbGl6ZWRMYXJnZUJsb2JBcnJheSI6MTAyNCwiZm9yY2VQSU5DaGFuZ2UiOmZhbHNlLCJtaW5QSU5MZW5ndGgiOjQsImZpcm13YXJlVmVyc2lvbiI6MzI4OTY1LCJtYXhDcmVkQmxvYkxlbmd0aCI6MzIsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjoxLCJwcmVmZXJyZWRQbGF0Zm9ybVV2QXR0ZW1wdHMiOjMsInV2TW9kYWxpdHkiOjIsInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjoyNX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIxLTA4LTA2IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyODk2NSwidXJsIjoid3d3Lnl1Ymljby5jb20iLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ill1YmlLZXkgQmlvKEVudGVycHJpc2UgUHJvZmlsZSkiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDIxMDgwNjAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4zIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjQifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjEtMDgtMDYiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI4OTY1fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIxLTA4LTE2In0seyJhYWd1aWQiOiJjMTI4OGE1Yy1kNjZiLTQ5NWMtYTY4Zi00ZTgxZjllYzViNTMiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6ImMxMjg4YTVjLWQ2NmItNDk1Yy1hNjhmLTRlODFmOWVjNWI1MyIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJEZWVwbmV0IFNhZmVLZXkvQ2xhc3NpYyAoRlApIFhGIn0sImRlc2NyaXB0aW9uIjoiRGVlcG5ldCBTYWZlS2V5L0NsYXNzaWMgKEZQKSBYRiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQ25UQ0NBa1NnQXdJQkFnSUlYZ2ZGUlE5V3F5RXdDZ1lJS29aSXpqMEVBd0l3Z2FveEtqQW9CZ2txaGtpRzl3MEJDUUVXRzNOMWNIQnZjblJBWkdWbGNHNWxkSE5sWTNWeWFYUjVMbU52YlRFTk1Bc0dBMVVFQ3d3RVJrbEVUekVaTUJjR0ExVUVDZ3dRUkdWbGNHNWxkQ0JUWldOMWNtbDBlVEVRTUE0R0ExVUVCd3dIUlc1bmJHbHphREVRTUE0R0ExVUVDQXdIUlc1bmJHRnVaREVoTUI4R0ExVUVBd3dZWm1sa2J5NWtaV1Z3Ym1WMGMyVmpkWEpwZEhrdVkyOXRNUXN3Q1FZRFZRUUdFd0pIUWpBZ0Z3MHlOakF6TWpVeE1qSTNNekphR0E4eU1EYzJNRE15TlRFeU1qY3pNbG93Z2FveEtqQW9CZ2txaGtpRzl3MEJDUUVXRzNOMWNIQnZjblJBWkdWbGNHNWxkSE5sWTNWeWFYUjVMbU52YlRFTk1Bc0dBMVVFQ3d3RVJrbEVUekVaTUJjR0ExVUVDZ3dRUkdWbGNHNWxkQ0JUWldOMWNtbDBlVEVRTUE0R0ExVUVCd3dIUlc1bmJHbHphREVRTUE0R0ExVUVDQXdIUlc1bmJHRnVaREVoTUI4R0ExVUVBd3dZWm1sa2J5NWtaV1Z3Ym1WMGMyVmpkWEpwZEhrdVkyOXRNUXN3Q1FZRFZRUUdFd0pIUWpCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQkFKS0dtekVueWkvYmFnaHQxL0kzckF2VWM5ZXJoUUY3U3JHUk9sR09jSEtYS29rOG5jUXZxbE1rMHZ5MG5qemFqc1JoK2VETHZIeWVwa3hTcXlSVVQyalVEQk9NQjBHQTFVZERnUVdCQlQ2NkpiYmNyT3ppNUZwYysrR2lnYXpwYlkxRERBZkJnTlZIU01FR0RBV2dCVDY2SmJiY3JPemk1RnBjKytHaWdhenBiWTFEREFNQmdOVkhSTUVCVEFEQVFIL01Bb0dDQ3FHU000OUJBTUNBMGNBTUVRQ0lEMEZwWjhGeEViMHQrNGFKT1VKTGJ4VGxvUzJzSk4rRXFVMldUV1ZuaWZyQWlBRWQrMWs4M1RNY0F6cDhoTlVhR09zSTNnNTRXby9XdlJTTC9BdnZJazE1Zz09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQU1nQUFBQkdDQU1BQUFDK1BDc0VBQUFBalZCTVZFVkhjRXd5UVU0eVFVNHlRVTVjT0VVeVFVNHlRVTQ4UDB3eVFVNlRLamt5UVU0eVFVNHlRVTR5UVU0eVFVNHlRVTR5UVU0eVFVNHlRVTR5UVU0eVFVNHlRVTR5UVU2L0hpNi9IaTR5UVU0eVFVNHlRVTR5UVU0eVFVN0FIaTYvSGk2L0hpNi9IaTYvSGk0eVFVN0FIaTYvSGk2L0hpNi9IaTYvSGk2L0hpNi9IaTYvSGk2L0hpNHlRVTYvSGk1anc0UjdBQUFBTFhSU1RsTUF1L1FTQmRucUNob0M0ZnpBUWZsTUp0TmdNbjVXb3l1anlvcVZiYlUrSHRnUjdLeXZtWXR0VjhoN1NieUxablJ5QUFBSW5FbEVRVlJvM3UxYWgyN2pPQkNWMWFuZXJXcGJrVnRzSy8vL2VjY21pbFJ4QWh6T0d5OXVzTUE2b2ppY3grbWtKT250S0hZc2tjSXFsdDZSUUdyMXZjMzk2L3ZRZjBza2txdjFFd3FEOTlSSnZBazVraUdTNmoxVkloa0tSNm5lOTVyMEY1QlI5TDM4TndBSm9Ndm9ieW01NlVjOE5kQkhtbmZFNFllZXpSR0tXbkw2aGlITERLZkJ0L2RLOVIwVkl0c2llVnB0dktWdlE3ZEllZkxmTXh0SzkrTXgzLzBOMGZiNjlmV1ZiM25hcTI4SlpQc0JrWHp3ZERodDM3TFNPbi9ONlBNdGtlenpPWkxUREs2TGNtVWEvMnFyYSsvbm5LTWp0TFdQNlR0cTA2UFFyQ2UvRUFuZ2YzUFVQcUJLRm9CZzBuOWg5eGdsc1RMQjhEMFE3eGMyajFXdk80a3BYZklKSFNHT3d3eElGWWJlcndVQzVYS2xCVmYvK2pyUDNsWVVjL09MZ2NqTFFJNzdwUW5aN3daeStwalM0YnlJNDdjRDJXK24xQUxwSFlFOGo4dlFPVXpUVk1BYUVBTU5MMWI5QUU5VVY0ODduZ3pTdVl2N3VjQjFGUWcvemE4Y3piS0tMRklXZ0NoK3VRa3RTOXVVcmpGckRySUNUZXpxb1NsUW9ocFNHdUR6cDZTQjg4SW1pYW13YW9vR0kvS25pZWRxUlpZcWM2NUluSERrYXNDSkRwS3J3Z3pNbFkzeEhZODJqWGFSZ2drUUkzTGtvYWVVT3lGUkJxWEYyazBySWVJRU91WVR4cEpaNmdOWHZTUkxLNlJOMVNPSUtTcnNvVlBkQ0Z6TlJMTVpWenJSRkE0WFYvUmlKREwza2w0TFFJQ1plVHdQSytWUEFZVE91UWxHSUgxZkJodCswSWs1SUgyaEtDVy9xTVloY1F1QjZ5YjRLUkExb1pMU0V3bGQ0NEZRY1R4TDA0aUVPdE5WUkI3SW1xWVJvVFltQjZScktGTzZlQkZ3UUxTZ0VvOFBHbWF6UGxHeWJBMWNuZUNIUUNMeWZsaW1mbG9ON3c5QWxJWllWQm9vU2x4cjNJRXhjSFdpZTlkVVREZkRUTkJoaHBrMVdGb2RJcENiSkUyVERWbWdnN0lhVllNTlNzT2JaM1ZsVWhLcmxvZnRjUzJPYTRWblZwQ3JVU2NKWW10bkNhS2xMcDJjcnNqVUZvUE1Gb0FreEtUcGZzVlk2eVdaaDM4UDFxM1dhRTBkN1pTcXh0UnpDdDhnam9vM3dJdndJSjRudzAzUXl3QkZKYVVtMHRLTmMvQkV5aFZncFE4Z3M2ZFJDOVI0RVZhMkt4a1BCSXNrUjZQOUlzWld3Q0FXYkd2VWNoU0gyc0U0U0xiWndkSEFvSzVqK1h4WTdSMnlWN1V0WEJJQXZFcUdoUVBQZ1NoNFk3TXhyQVloQjZRYytSQnhFVE03R2hRcGMwRTZRTUpxNWdpRUg0dzhKZ1FGTXJxYTVNcHNKcGJHUzhWelhicHozd0J4bVVrTVZJOUFNRjloTUxMcHZxZWU0S0swQVNEcllDQjJ4NlV6WWpFSkJ5VGhqSHNVMXBlWjVxaEtNb2JzR3lCWWR4cyt6K0d0SlVBd3lzSTBSc0pQa0JsZ2UwaTRFUU0vcVVjZzZXeVpSbVZBdEdCaUZLU1R3NitWUE5lU29mNEdTRGZaSHJvU0FSSmhJM0E0S3BBaVFvV0tFL0pERnVPRWdlakJUUEdod29Ed04weUdNd0JSc1RRYXgzU0R1TnJWRDRBNGc5RlBHaGlmYmRDY05JVWxoQ21WREVnbzFCMVl6ZGg4Q0pCb0VZaFJMSFA5Q1pCaVhpRW03RkcxQ3NUVXZnUGlHTE1ncnpNZ3ZEeUFBUUZyMi9OaklPNHpJTnBtU3BWQjNhQ1lEYVUvQXlLY2JZd2F3Vzh0Y0kxK0NFVDBTeHh6Q1pDU3BHdGpRdW9RZmQybElRcWtFRXhyakV3eklLTkdpTnZML2pMWGI0QTBMTmFJRWM5bmtiaGJhaWZ3NHZiS1BSRVhUd2VLOVNGWFBOTUlPY09KVmxMM2N5QWs1Zkc5RFRaVUx2eGF3VnE3dG5hN2JXb3p4OFA1QjBmNVp4cVpKV0NodUgzZXVlS2N5MGQxa3BUSUJGS0gxWXZ6N0ZXTU5CSlVVeUZJSkhpbUVjbjMxZzhIUVRZUHNOS2tCdUFUQ1ZtVEwxRzBZS0ZEcHNLcTYwQXN2c2ZRR2MrbkdpRTdseG5yeHJQNmlRT1IyM0luVmYxUU5PSlN2ZUU3U3pjeHhsd3QxeHdTby9aNUlIM0gzQjBmbFZIM2Y2b1JhVkxDWXE2REowWVRTWmVLclQ2azR5cnRscWdmZzVMME5xN0sybENMVmo2a2pCL0tmempUN2V4QzZFdnRpaUlKY01LMmErbGJqVWdtTHNxOGFqQUNOYzY4b1JnbXUxcTRLMmNaS3NsNk9teGx6TUJIRFJMdWRKd2tpVmxqMWV0WkdxRGhNc1RGRi9FbEFqbE0zRUF4NDZoRGZ5WkE2RXVkQ1BkakpNMDFpdlJFSTNhWEpDYXIrR0huUmJobU91M1htUEgwZXBmVWl5NGYwTHBBMWtJTCsxcEh4VUIrQlFLSHRveDZTSVpIaDZQS2cxMXBxT21rSHd2SE1sN0hWWkpWaExyWWxxOW9CTDJNclNLZGN4MmNOR2JsUkxlb2sxaW9jT1FvNG9BZ3U3REZla0ZQQnR0UHAzVks0WThhQ1d0TCtLTEtsVmFBakRjQTd0S1JCcHlhcW1JL3Z3WUU5cmZqaVlZVzBVREdFcE5TaHh3VXVYUEhwQk5VT24vQWtwaWNzMnVtWDNDekFzR1FaQ0hDMWg2bmtSblhjZ3lhSU83a1owQWt3ODhzMmJNOXZjQnR2VnMxaUpnaG1sR253V0ZiMWd2eGlBNm9jZW5vc20xN3N0WFV3WEIyU1lIQXlGRG9rS3VzWmY0NHl5ZzNUZE1KRWQySU1yUWVld2ppeE1IeUVLN0NxMjdTRldGWXJuYnVxdW1tcVI4UFJxTWlBbVBtTU16WVI1OFlLQXU5Y2dCbnBtNWdUUElJcmtjVU5NMDFWWEV0U0xQMXhZZkFtSE5sbHFnb2l2R3pDN3JGOGU5ZWtKYUF2T0EyOGIray94eUk5RCtRZndHRTJTUUF2Tit4NStULzhTM09OZW1JQ2dCOU9ubjNsVUQydHp5L2tMN29kc3p6L0U0ZEZsMzVrd3V6N1FuOWR6OWovMVV2cDlQcFFpN1M5dVFMay8wcHorSE1HMkt5USsrcXQ4dnJmYVE5bnU3M0t3YWlIdlBkYmtka2JNK1BDM3plb3QrN0E1TDM4b24vTUI2bjdmMlJZMUQ3QS82WXFkM3Rib2ZyYm91RWJ4OW5JTjBQdTlkclpEc3VxaDdISytRYjl4SE1CTWdOYXVldzU0QkF1aDVhR3FoMmgxMzd1THplUjBCN1BON2JBY2hwdTkzaXZXNC9iOUk2RU9OMlJMK0JDSVM2elRrbm82L1dDTmpmSG84N0lFQU94Mk5PelA1d1hRWHllWDQ4aUxxV2dFajd6OFB1ajBRdEFOb2JsaFNabHRHU2krVDJzSzZSMCs3eWlVVmQxSWdrblkvcUh3cS9VT3pyeEVmQStYTzg0U2ZxT2VXQStVaCtBcXNhZ1VEQWk0SGdNL1h0NWI2alV2TlJhMzk4WEhZN0hMV0FldjY4YjZrV01CQndKYzYrNVlEcy94d1FjcFdGMHNpWm1EekpJOVE1Mml2TURqZXl6eTNNSFdjcXMzcStjZ2xrQ0cyNzA2aVI2KzJsUUx4eXJLT1hLMXlVcThkc0x1UjdNQ1J3TUM5WXVjVC9DaUJOOUo0ZnNNNzZ0T0QxYS80RHNnVzlHVm9EUW9JQUFBQUFTVVZPUks1Q1lJST0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xX1BSRSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiYzEyODhhNWNkNjZiNDk1Y2E2OGY0ZTgxZjllYzViNTMiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsInV2IjpmYWxzZSwidXNlclZlcmlmaWNhdGlvbk1nbXRQcmV2aWV3IjpmYWxzZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlfSwibWF4TXNnU2l6ZSI6MjA0OCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6MTAsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6OTYsInRyYW5zcG9ydHMiOlsidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN31dfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI2LTAzLTI1In1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNi0wMy0yNSJ9LHsiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbImZkMzJkYWQ3MTdlM2FhMzgxY2E5ZjhjNTY1MTNmYzRhZDAyNjJmMjYiLCJhMTEwNzdiNzJhZmY2YWU5NTIxYzVhYjI1MDIzYThiOGYxZTM0NTQyIiwiZmU1NGFhMDAxMTQ5MmIwOTg4YjQwNzVlODY0ZjM3YzVmNmUwMTBiNSJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyJmZDMyZGFkNzE3ZTNhYTM4MWNhOWY4YzU2NTEzZmM0YWQwMjYyZjI2IiwiYTExMDc3YjcyYWZmNmFlOTUyMWM1YWIyNTAyM2E4YjhmMWUzNDU0MiIsImZlNTRhYTAwMTE0OTJiMDk4OGI0MDc1ZTg2NGYzN2M1ZjZlMDEwYjUiXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ikh5cGVyRklETyBQcm8oQ1RBUDIuMSwgQ1RBUDIuMCwgVTJGKSJ9LCJkZXNjcmlwdGlvbiI6Ikh5cGVyRklETyBQcm8oQ1RBUDIuMSwgQ1RBUDIuMCwgVTJGKSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjJ9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50IiwicmVtb3RlX2hhbmRsZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNRRENDQWFHZ0F3SUJBZ0lRQWNiNVpjQXlPSmwxeC84OWdZa21lekFLQmdncWhrak9QUVFEQXpBOU1Rc3dDUVlEVlFRR0V3SkRRVEVTTUJBR0ExVUVDZ3dKU0ZsUVJWSlRSVU5WTVJvd0dBWURWUVFEREJGSWVYQmxjbk5sWTNVZ1VtOXZkQ0JEUVRBZ0Z3MHlOVEF4TURFd01EQXdNREJhR0E4eU1UQXdNVEl6TVRJek5UazFPVm93T3pFTE1Ba0dBMVVFQmhNQ1EwRXhFakFRQmdOVkJBb01DVWhaVUVWU1UwVkRWVEVZTUJZR0ExVUVBd3dQU0hsd1pYSnpaV04xSUVOQklEQXlNSFl3RUFZSEtvWkl6ajBDQVFZRks0RUVBQ0lEWWdBRXpyVm1lMlcxcDFhcTRvL0VMYkYycytKYVQ2dFEyWm9NRzBQY0g3OXdkSndPclFlQTJFUENld3UrZW1Tc2dmYlVZVUlyTDBXaEdDUDdSemZzVmhmQlFsZDdMWmVVaFRQaU8xMnp1UDhrOVFxdkxjY25ianltMXp6UjNJbnZYRU1ZbzJZd1pEQWRCZ05WSFE0RUZnUVVsaVYwWnFpM2Fqa3hERGU4cHpzN09ETERXakl3SHdZRFZSMGpCQmd3Rm9BVTRtRnA4NVZtcnIyM01FMXJuWk5Qb0Z5dzNWb3dFZ1lEVlIwVEFRSC9CQWd3QmdFQi93SUJBREFPQmdOVkhROEJBZjhFQkFNQ0FRWXdDZ1lJS29aSXpqMEVBd01EZ1l3QU1JR0lBa0lBMEFRSkh1L0h4SjR3VkRCN3Z1MXpzdUdkT0VZaUM3dEo1MnN6eW0xR3hYUm5PK0RZdHlhOXlnd3JFWis4TG8wQ1ltOHp3QVYrQk0ybmhnWG92MU9JYm1ZQ1FnRXA3NkNGdzQ4dmFkbXpjVm5wNG0xZmJMQXBIVHV1Ty96RE1QVEtXYXowZ3VkcmFGMGVhZWRGdkx4N0NwWCtIL2dWSkFKV2pVRlVOVU1ncWtkVWwwTW9rQT09IiwiTUlJQ1JEQ0NBYVdnQXdJQkFnSVFjdEVPVDJXWGVDa0Rkei9zWTdVcFZqQUtCZ2dxaGtqT1BRUURCREE5TVFzd0NRWURWUVFHRXdKRFFURVNNQkFHQTFVRUNnd0pTRmxRUlZKVFJVTlZNUm93R0FZRFZRUUREQkZJZVhCbGNuTmxZM1VnVW05dmRDQkRRVEFnRncweU5UQXhNREV3TURBd01EQmFHQTh5TVRJME1USXpNVEl6TlRrMU9Wb3dQVEVMTUFrR0ExVUVCaE1DUTBFeEVqQVFCZ05WQkFvTUNVaFpVRVZTVTBWRFZURWFNQmdHQTFVRUF3d1JTSGx3WlhKelpXTjFJRkp2YjNRZ1EwRXdnWnN3RUFZSEtvWkl6ajBDQVFZRks0RUVBQ01EZ1lZQUJBRkZyUGI4S0RMQXc0SHNZTFU1Y3dldm9QUzBKNlFhbzhIYngybzExK3JZdnN4QXdyVjNQL08yTXRrdUE0YkRrbVlTQTBZTDVBK0oyWW80di9kMS9RUDJVUUYxZHFQRmttVTI3VlpoQzRQWENkY1grRk1kdXViLzQvTEV3VmFPTXdQVFVBZzk4U1J3Y0JqU3p1TVdCbHhlMkcwV1FGbmROMnRuMlkyc1p1Ylg3eVFJSDZOQ01FQXdIUVlEVlIwT0JCWUVGT0poYWZPVlpxNjl0ekJOYTUyVFQ2QmNzTjFhTUE4R0ExVWRFd0VCL3dRRk1BTUJBZjh3RGdZRFZSMFBBUUgvQkFRREFnRUdNQW9HQ0NxR1NNNDlCQU1FQTRHTUFEQ0JpQUpDQWNxNFd2VnFPbE1wYlU0ZTc2U3llY1pVckt5T1NHb1RxdEhKbHJHVzU1QWxIelgwWVZobVZOdFlqQ3ErL0lUYmRqS2ZiLzRSSysxS25xbmxTS3ZaYXI3dkFrSUJRanpjYVZpb0EwbzBWb3lveWFOa0JoMDhTSjJ2L3BoaFp1MTk2VWhSZnFLNlBwOS8xWTR1RFNhVGdoT1F2MEhEazFrdUpPUnN3Q2VsbU1mSVFUYzFFUUU9Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBRERjQUFBSG9DQVlBQUFHUTJkVlpBQUFBQ1hCSVdYTUFBQzRqQUFBdUl3RjRwVDkyQUFBZ0FFbEVRVlI0bk96ZDMzWFV2TmJBWWZrczdrTXFBQ3B3VWdHaEF1RGFGeUVWQUJXUVZFQ29JTW1GcjRFS0lCV0FLd0FxQ0tuQVo0bDNEemdUejR6L1NQS1c5SHZXNGp2ZkM4bU14dmJZa3JhMGQ5RzJyZkdscUp1anRpcS9lbnNEQUlBWC8vUDRZSEQrMUxHdjZlTjFBUUIzZVhrNCtIb3crSHg5QU1BL3poOE92aDhNM2I4cjZ1YkE5WHNCQUl4NTRQSVloSG93ZEh3cjZxWnBxNUtIQkFBTVVOVE5HMlBNKzg1UFB1dUxEVHNMU0crNGlmZSs2WWpYdEwvN2RNalB0bFZaVEgwZkFFaFpVVGZueHBqWFkrNmpUaDRPUmQzOE5zYnM5ZnpUNUlkRFVUY1BqVEUzWTM2SEJ3UUEzTlhwdUYrMVZmbHEwK0hwL054dFc1VVBaMDhyeWJ4LzM0TmhybEVQQm1sTHl3TUNBUDRqbmV4QkhlZlZ6NndlRWk1aUR0OWNuNGM1c1FzZUVBRHcxNTFPOXFhcCt2VjdwcjJQemxxdHRFQUFPdGhyQUVBS2huU1d1L2ZNMWM5UGZqaG9mVEQ0ZUMwQVNJMTlDR3g3Y0V4Nk9HaC9NUGg4VFFESXdlaUhRMnczY1I0UUFIRGZyblJFb3dMU3NmYnVmUVdwaDdSOTZ2dnVldTA3NjVFSEhzTzV4MkRLKzNnNHZ5ZHRWVjRPL2VGUW5ZTytZK3ZqdlYxZHh6UGFkdDFXNVpISDF4OWx5dkdZMDdadDd6Zm1PenRVVVRjdmpERWZYYi91bXQ0dEI0TWZEa1hkbkk1OXgxMTdISXE2R2Z3bG44dnV4YkJyZDBPOVgwajI0aGh5d2M5NVNDcDVNRmdYUmQxY3JMOVhMb2F1V2U4elpsUHBGay83Z3BmYXVib1dWNi9UczdwbjV3TnpvamUrRG0zbnZ2SEZmb1QxZng4enJmUnU3QnNQK0xIak1hOXBqRG1jY1RIdUZYVXo2c3NFM1dSWW5HdEsrT014Tnp6NTJia1BodWdVZGZPVHFlWGQxaEtiMnRIS3NJZkQySU03ZHVuVVFIYlgzdmVocjcvQnhjVGZVMi9vTVpueVJRazFiVFhSMDlYRm5LT2hJOGFNajgwakJVMVoxTnBJNzZpN1NtbjEvNjk5ZC85TVkrMThPQ2g1TUpqMUtTSGYweU1ZN2RlQ2gyenJuR3pxdGwzVFhPOTVXOS8xdkV0MzJtenJ3MEhSZzZIM2RYbEEzT1ZqOURCaTFQQjQ2R3Y2d0UwUVhWd1AvM1FmRUp1bTFvdTYrYjRlVDlrWWtKNXdjSi90K2dHWEQ0YnV2MCtkS2trMG9QbHJnYUgwazhEdmh3RnluVzViNVJQQ1A1Mzc1TjhGSFQxK2RUdDV2UStIQ1VHK1pzREtKT2NQaHU3UFRYeEFmR3FyTXFrdmtEMjVybFl1alJnMS9CelR4aldiT2hVdmhxUVlUa0RmNTM4NGRxcHN3L2tjOHhyWHhwaFJLeElWMTRjZm5iVFRHSE5takVsNmNjUFl6dkNta2NPb1ZRMjdpdTM0ZkRCMGYzN0MrendmK2ZPeHNEMzVIeUhhT25mMHRlVUc4M1cxakUrR3d0NFdFeXc1Z3R6eStYMHZDVjRadlNUV2xhVkg3aVRvM081ZXpNRjFuQ0hFZzJITzc2VTROem0wSng5TElIUG9wcmNwZTNGaTRQTW10dFNEWVdrOEdIYTc4M0R3OEdBWXZjbk5RVTkweWdQaWZNNTdhaFRpNGcvNUJSdjRYcVAyNGlBOXFYWVFsakE1SzZ1blRXNzd1MzdBVThxS0hPYTJlL1VkVDFaNklHSTdPd2lNR29iNSszQVllVU80OWRBV08vZjVlOXNQak5uaFBQWUNrRktuU2ZFOEhjRVhMQUYwQkxESnBKR0RqeHhGQStjK2ZlNXc5bEhxTkFwclcrZUgzQ3g4ZEE3ZzNxQ05pYkwrZmM2S015VG9mMlprNzhGSGp6SDA1cm1jZURwZld0ZVJMN2xMVzUyUkd4TWZyVkk0czA4QXhsRU42Vmw4UFJnNlBneU5LZGo5SFVQU0VZK2haTmgrdTJ0a05LS2RoMjZhTk03QTltMWRVcjJKcnhUT0Vic3A2c2I3NTV2NzNhRHo1OWZZYWFVVGw2MEo4R0N3N3pFbTVXMlNXU3RkOXZSWHlROURHaG9QMmhXeml0V1NIWXpPYUlMWVJHWkdqUnpHRkZrWjhGcmVId3k0dy9iNHY4MDVKRXNWVEVxWnc4Ly91ZTh2cDJZUDZMT3BsZ0hTOUQrUFJTbzJVdnhnT0Z2Z1BZTllvc2VQb09kM1l4b1kxemR6R1Vra09VckRQM1phS2VqRElmU0RZY3hGM0ZabDBodG81dHdrdFBjVzZjMXU1K0g0N09VKzZrdmQvOGJjRUVNRWtEeGNjTmt1VVVVZXhpU281Q0hxaDhja2hJdkZRU2Z2a0o1Z1p6RGI5VkNWbnMxOVUyNE9qQnIwbW5vK1hUMG8rSTZsYS9SUzFvbDFFRzUzQmJPTHVqbHcyY3VYMXh0alorcU9pYWJHTWNnVHRJT3JoMEtrRHhjbjJWUTdoV0FPNWk1WW1QcmUwT21CbWJDaVlld0RZdUJTU3RjWDVxalg4N1VNY21vY282Z2JidytITWVkYjJSZjR3OGlseWNueGRUNWt3Y0xxUWZHYjZWajNiRkxBbU9LYWt6ZkIyVlZPUStiWmxvZ3pUSGc5WDZPRzJMMzAzZjdjZTQvZHorK3FTSk9ETmowMC95cXE3U3ljazNCVlJkZmVqUzJvdEtTL01ZY0pKL2ZMcmgrSTVNR1E3T2FwYllhY203WXFQeTNheU15TXFBRWU1THpJOTRJU3NKbWFGWkNlZTJOM25TK0ovRXZJUkxBS2hqTkx3QzdoN2E3M0pJZyt6SjJIUThoS2Fob2VERXduUVpzUm93ZHVjRDNhcWxSZHVHdHNiTmR2YTdhN04zSUk4WUJROG1ESWNqb0pVVkRUYVNucVp1UE82NWd0bks5cVo3WUNEUXRHTmdXa2JVckdjc3dMRFExS0tYb3dNSjJFUHh6Y0tNNWNya0t4blpaVlZ0UnRmQWFDSmEzT3pyaWl1Sjc0SHJOdjBITStmL2Y5WFJ6SEVhc0F5ODdQUFZzdDdKRVNwMnFXc1BjK0hOcXFQSmh5NG5aZHJEd1lrQ2pucTFDRzNtaTJmZWRDOVk1ZHA3bWZhMHF5UWRmMTgwZjRNcVFqc0lTTkFlbXBIMzdUUWJhMUVzYSsxbzRIdzZUYy9Ud1lFSkhlVEt1QUNYQXYyN3BheWRVRFF0WkxqODBSc3F1b3pPaE5jendZRUpOdG1WYTdGZzVjcXN4a3ZOUjNQYVY3ek02bHJITWVFRVhkckxiMzc5eElzK1oyVzRycGlWK0dSU3FZQVhPTVdMMjB5SkxUMURNWlR4SGlBUkhpUFFidGM1alJrSXVKY1Fibk5XeXBaNERFUFFyOThTSkp5SGk3NEh0SDk5cGRnemZCaFdxUXA0TDRUQ2NoV3RyMlBzU1UrdHQyTkZPYVlncjVXY2JtVnBwZGFuSWJIZ3pKdVU2MUxuZG9VMWJnck9WdEdyTTB0YytUQ0hkTC8rVXcrK3l6TWJVYnh1Yk8ydlVhSVJWdE82NjlFa2U0Y04zR01RY2cwb3lpQUJDTjBibVZwQzdEbGNzUHlJZ0JBSFNabEhoUGlvdzRlVUR3WUFBQWZTWm5aWlVIeE03U256dGV3OGROZkdkV1JnREFkck5TZHNzVTA5VDlBMTZTaTJuUHlnZ0FNWmoxY0RDeWYyRENDT0RLUjBaVXBwTUF3STNaRDRlVmtUV2xaeGRHbi9QK0FJRHRuRDBjelBEU2t3U2dBVUE1cHc4SHMrTkd6WU1CQU9MZy9PRmdOdHl3ZVRBQVFEeThQQnpNMm8yYkJ3TUF4R1YwK293bDJkcXJ0a29kMXhnQStPVnQ1T0E2UTZUa2RDb1hMbXdDQUZudzhuRHdkQVAvbSt5UEJ3UUErT1g4NGVEanh0MzNtandnQU1DZnNmVWN0Z3IxWU9qK0c0RnBBQmhPU3NxdUtnZGV0MVY1MVBmTHpnTFNmVGZ4dVRkdTZqWUF3SHhUN3FWT0hnNmIzbmpPVFh0TzFTc0F3TjE3NmE1NzVQclB6WTQ1aEo1S0N0a09BSWpaMEFkRDkyZFd2ek1yNXFEbHdkRDlYVVlRQVBEUHJqclc2eHVXVno4emVlVGc2Y0V3TzQwM0l3Z0FHSDR2M0xBYTlOT2toNE9MbTNqUGE5cUkrWjZqMStJQkFRREd2T3c3Qm5hRXNHT1c1Zm5vaDBOUk53ZXVidUpydnJoOE1SNFFBSExYVnVXbkNZZmcya3ljVnZybStuajd1cEh6Z0FDQSsreTljY3Y5OGFzWkc1RFdGb0FlK3ZxK2d0UzcyajcxZlljY2sxMUJKcGZ0bWZvZVBzN3RtTSt3dHRuSG0wMXQ4dkQ1bjdWVitYWHVpeFIxODlBWWN6UHgxL2VIbFBnTjBUR2JjajNiNUowMlI5dkV0L3pRVnVXYkRhODc2anM3bEsvWHRkZlNhcmFtNS9mL2ZNYkJJNGNZSHd5aDN3ZityWG84Y3VQZnhmdURZUk5QMTl5WEhUMituVzJTMzUzNllMQnU1clRCSllsVDdsVFV6V21uelZNZkROWnJMWjk5cUUzeDRXNG5vK2Z6L0FrYkRIbzRURGtZUXpkY1RIak4yN0cvTi9YOVlqRzA1ekRucGpMazV3SXZJMzZVODBOZmJsS0RhckhiRzBTdXgwbys5enNGVFZuS3h2andycXFkT3g4T3loNE05bi90a1BoazdPOVBmVi9vbHZrNXZaQXBvbzJrNStoakFZbDZ1WC9mTjFYa1hOL1hzRFlWL0xkZXp0YUhRMUUzbytjM2ZUNFlPdjk5NlhNK1AwYStSZzh4NUxmSy9DYXdhNHFJQjBQbVJoNEx1K0RvbHhrd3JmUjB6R0VkOEdBWXZUOWkxOUJuN090Sk8zcURTcGpzakVPM25FM2ZxNHlua2daTnQrV2dteEpqVjRiclRxcU54MmJiYWlYWGllK203SThZbWc5a3dwZmd2VEhtZk9UdnFEZjBXQXhkd1RWaTFIQzY5TEd4MTFkYmxkK1hic2RDc2h3ZGJIRXgrVGNUTlBRQnNYNVA2SDA0ZU1xSU9uWi94TnN4N3o5bHVpVFJQRXhuSVFOd0RvN2hzdzEvUDNaVHBMMitZanVmbXo2N0hkaytWOUlXdFZ3czZ4VjIwOWZnRG83RDl3MXE3SGYxM3NQQng0TmhZcHhoVk0rZUI4Ui9iQysrcUp1ZEQ0ZGRuejNVbE1TV0w1clgvUktkOTEvcy9HLzU3TjFsaG5QVzVROXB3eUtmZjZtOVJ5SGFrSW83TVlleEFXaVBENFpKSjQyVC9aOVF4eUcxOTlHb3JjcURJYzBxNnVaeGRnZG5CdTRWdTYwSHBNY0VvRC92K29HUUQ0YU93ZE5SSnZOVkRacytPeXM5MU9sTm5yYm1NdHVqTXhJUGhtSCtQaHdtVENlOWNOMFlGeWR0N0hTVThaUmxkbW0rdndCOHdjSVptRHh0MU1wQ1lKZEpLYnQ5M0JnY3I1NFoyNzVzVjN1c0gxTkdEUURNNnVHd2RCREhSK3hpYkR0VFhCdnRxM2ZQcUNFZHNlVUtjcUNKL2hNRU1ydUc5RnkrZ3RyaWVzVFBacnMyZW5WOEJ4N25LLzh0UXRmQUJIT3pOaUoyRWhvbS9hQVlHdUNITVErS3Voa2N5SExkWS9UOFlMQ3ZmN1RreGE3aGl6WnhrK0MyMTB0cWhEWDMyQVFhUmUzYzgrRnlJMkxubUZ6NU90OCtqanNydHR5eUk0ZmpoZDc3Y05jUHBCZ29Yc2pPM3I3SHZQR3pzYUpzR2dmbjZ6aXkwUVNqQW9kR0ZmdHhxTm1WNnFDb214ZU9Bc1ZCZHd4clpIdC9SZDBzMVFuWWlodS9kN2N1dmtjaFJoTU84SEJ3YUpHWXc4QjV2NCtPM2k3ckI4UEszRjZrOWlBMFFmSitrdUxlcFdOV3RPVWgrTVBCZDV3QnlNMnU3NVQ4KzVDTmRJUHhIVTFmMElkRDZBY0RGL0JkcWFZbFlkU3dtOTFJSjhkcFo2eHZLSVhmcnlnVDRtazE2dUhnT3ppMjVNWEdEU1pPdVorM3NaL2Z4dm82MWI4bWxkeFZMTmVVN1Y0OEdMdlUwUzRYYTZ0eVNISDN2NVo0TUNqcDFVeGRlKzR0VGpMMmZDdSsrZjVhRlNXWkk5YUhpNk5VTTMvakVYUHFpMDlwaTZmTnRMWlc5dGFmc1dWVjdjKzVmdThVVFZtdDlHTk0zdnhJSGd4ZWN0bFBYWHMrSk9WMklHTTJFWHFYK3lqQkJOcjFudmgwckIxZHNCOWlnRDhQaHdtamgwRzloVmhHRExFVzc1aHE2UG0ybXdoRHRNWDNlMmkxZGtNK21sRGd5SXR1NWJBRUQvc2pCVzF3YVZRVzZqRW1CNlJkWERnZUhneWoxMS9URzRVR1F6c29JVy9ZZkRlV05iQUQ1NjNjOGQrSHc1UUxZYzZGS2hXdVJoblFSbXJISWxwRHY0T3N3bE5wWjN3eHR2TzJQbkw0TVBZRnBueGdXd3grUXVuRGZkZnRvR2NFaFZKYlFhU09qNXUweTl4V1d0eDVPTFJWK1daS3V5WWM3RzhqZjc3WnRzS0FCd05TTVhSSE02T0hlWlk2ZmtQZlY4UDV2YmRhYVdvV3o2RkI2b2szOG8zcE5uZ3dZQTRYWDBJZjJZcUh0TXZXZlBlMWFFQ1NYbm9yZ3VYcnVJKzVmM1YrN3EzUHVmc3Q3M3ZkUFgvYUh2aTlTMWw5UFNCYzM4Z25Ic3lUQ2I4RGFMU3hOR2dPSXd1N3dzdlJTc1AzUmQyOEgvTUxHKzVMdjBhdWhucTZjTmJkcmJhdFZ0bzZ4NytKeTZMMUhoNE05alVweEE3MUlncE96eW95NU1raUhVQVhtekkxMmZod21MT0wwRVZkWWs4UEJxYVRFSTBZcmxlTmdkZ2NPb0Focm8ydCt4em1OR0JrNlVsbjd4dnlOUUVObGhvOWFQNU9MZFcybE80ek96ZkJ1WGhBakxIci9RaEFJeWRhcDVjaUdkVWsrWUFJOWJrRzdaQU8xUmhHREVDdktiVVlmTTI3MzhiMG5aSzJCczhSSnUvN3hQVnJoanoyZ3hQdnVTNVUzL2Y2SGw1MlVsQWQwTVRXWXRpVmJkU3NyUmFVZWZmTHpyOTkzYmE2YVJlbEQ0UkJXUlpjTGhjZGN4d2tlL1hjUEZWblM4VjFpcllkMTJaUEQ0aVRvVUdrRWU5LzY2RkVJZ0JrWVhUaVBVOVRQODVYRi9CZ0FJRHBKbVZsZGZtQUlNNEFBUHBNVHRudHFCSVZEd1lBVUdqeXc4SE12Qkh6WUFBQXZXWTlITXpFR3pJUEJnRFFiZmJEd1l4ZjNzV0RBUUNVYy9Kd01BTnYwT3hsQUlBNE9IczRtQjAzZjA4UGhwTTVDUUlCQVAyY1Boek12NGZBMWRwZkgzbzQvb00zemdFQXhobTlRM29NMmMzY2JLdmtOdkUxRDl1cUhMUjFIZ0F3NFY3cjgrSGdpendnbmptcUF1VkZVVGYyNFZVYUF1WUFBQUJJd09Da3JCckVVQmEzcUJ1YjB1bG03ZS8rdEpzQkJBQUFBR0lWeGNBaGhnR0RHZERPenIvdnN3QVhBQUFBTVZFOWNFaGx3TkRqUnNwNlhiVlYrU3BFR3dFQUFJQTVWTzV4R05nUlgzeVBRMUUzTm1xdzUrSzFXTVlFQUFDQU9ZcTZlV09NZVQvakpiYXVpbEUxY0JnNWM3L1l3S0dvR3hzbHVQRHgyZ3dnQUFBQU1OU1cvdk9UdGlwLzducVpMWU9OZTludlZBd2NpcnF4ZVZXUFIvN2FJZ09IVU11bkdFQUFBQUJnay9VK3FhdStZMCtpbjVkdFZYNHlHZ1lPTXpyaVFRY09TKzIzWUFBQkFBQ0FybTYvMUZkZnNhZ2JPMWg0THYvNUovcXcyT2JvaERjK2UzbC9CaEFBQUFDUVdtRi9iT29mRm5Wako5ZWZEajFZZmEvVFZ1V0x6cXFnUDdYSm5KZU8zc1YyaENPcHgvQkpVenRqT1c0QUFBRHdxcHo0NHMva3o5djFmOWpVeCt4bS83US9FeXppTUhFZlEzQjlCZHlVdFk4SUJBQUFRT2JHOWdVN1MvenQvNTVQbVpBT01uQmdXWko3RENBQUFBQXcxSXgrN3BreDVwM3hQWEJnd09BZkF3aGd1S0p1am93eFIvSUw5bjhmemdqNXJsemJtWnRWeGdubzFIUHVIeHRqSGprNDk2ZEwxeFNhbzZnYm0ycnhoUnlUd2V1aHhXZTU5cVA5L0xrcTZ1WjA0amszY3QzYmMvNlZjNStPb2YxSUwxbVZYQlpHMjJKMlZxVkE3UXdxbGdHRWk4RmE2TS9xczgwK0JxOUxYQXNlUHNkSlc1V1hQZS96M1VHSFA3U3p0aXBQWGIxbmFudWVCaiswNHZ6Y3ZkZXhiMFhkMkFIQngrQ2ZkcnRmYlZVK252S0xpVjN6WGpKRGFsMXVQZVQ3TFlQN0x5SGV5NFd4bTQ5ZHRyZnpYZGg0SGZXMXo3NVgzL2RvVnh1NnYrTTA0aERxZ3AxN1VjZ015emQzTGRwb1AvUVhXRTd1dllJZDBFMit6RDhkeklCMnI0WGZiVlUrRFBYQlBUelV0MVd2akczUVlMMHI2dVpkNTcrM1Z1ZEVVaTZLdXZsYk5OUmo2a1RiSWYraC9NQTlzdmNLb3VUdVJKSndoblB1aHgxb2pkM25VS3dYZkJ0eGZuNDV5Nm9rRjY3WFRyTDlVQTRHRFcyQVFjT1Z0UFYzcDgxWG50K3pxNVFzVE1FNmpaaFBadUh1WlRxWVlVOEdJOTY1Zm5DdHZqK0pYMVkzOGozOVB1Qm5rWkJWbHJ5aWJsNjUrRlNkckh2YUJ3MXdwSE1Oa1cweFE5Mis4SlRuZkZ1VjUrdjlhYm1lN2kyNVhhc1g4WGgyeENIRVJldGlsTHAweFdkSlovVXFjQmpSZGt6WS94QVIrMldXREdTdXJoRTd1M2ZaVGFmbW1vOUJnNisyS2xVeUc1ZXRQNUdJcWVkZWV4WkF1QmZwTWszNGNXTHZJWnVpZUcxVkh1MTYxekZMbEZZL08zbmdFR0s1VHdvRGhwNmYrNzBLSzRWcUd4dW80N0s2Umh4ZUg4ZDJSc0xsK3ZvVkJnM3VNSGpJMTVSekw5R0tpd0UvaWtRUVhVQ1g3SnU2WEYwWHJ2cDY2OHVZMWw5ejBzQWh3TVU3ZSsxdnFMb1JjMDdRNm5kRERpRG9tTVJqMHlhbWlkN0o0TUhaQmsxSkx1QU0xeWJmMFp4Tk9QY01HakxDb0FHYnJQY2xIVjRybjIzbDZQVy9IRFZ3Q0hEaFhybFlVaEhvQzNiWVZxV1R0Y2toQnhCRUgrTGllUEJ3SVlPSDJaazhaRTJsczR4a1hJLy9NSGpJbDEyR01pU3hCWjNJdkhDK01VVGZjMlBFSlBwYnUxUjZ5UHNNR2ppRVdFY1owYklrYnhtTFFnOGc2SnpFd2ZIZzRVdFJOMC9hcXB5OGFWcFN2RG5ML3JUa2RSalRja2hmY3IwUE9Bam4rM2d1THJGMmZYSjYxQmpGZHIxN1RIS1MxWG5QMVdwL3JjdVB2M1BnNFB1aG1PSStCbGZ2NC90enlldmZoa3paaVdrY0R4NStGSFV6YVRtZ3pGN016bHN0a3JqMk90OVhKem05NWJVZXp4bmN3YjhsOXF1NXh1UlJGSndPVGpubm1HdHJPbGJQTjhOOUJ6TSt2ME5sZFZyaXl5YnZ1ZS81YmZZSWc4YkI4VFU0K21Ia2VOL1FoOVFHckpMQjRwZWpseU5GYTBSY2ZqZWxvaS9nMmlHREJyalFPM0N3ZVZ4OWRpWmQ1R2lYOW5tdCtyelVnR0d0RGIrbERiYyszNGZCUXh4Y1hndGp6cmwwWmx3Tkd1eFNxVGVPWGtzVmg2SC9wQ3JhNThEaHMrTGRnSjlCQmh3K2wzKzUycE1KM0JzNHlJWDYzTWVSMGRBUkgraWxveVZVMzExOThlM3NyTzlqeCtBaERqSlRmK2Fpc1VQT3VhUjlkTktaa1hzQVMzQUFCWXE2dVpjeEJlbGhMd05jdWpOdzhCMWxpT0RNM1VySDVsN2x2REhzWmlZNWxzNDN1c2x4L09ENmRWY1lQTVJCYWpJOGNkSFliZWU4cUpzalYya2ZDWk1ENm55VWFyR3pNNjBCeU1QZnpkRjlaYVpkaWFIRDRLcU5nZlpjMkdVZWIzeTlGeG1YNGlBejkwNDJUZmVkYzd0QjEyWmhjbkV3dUo2QXdhNEgvT0NoNHdLc1QzdnVJNFBUTTBJMUo5RnBZS1diVmNuYjhpVE5SenVtQWNNNng1bDJva04wNUQrdXJvUHU0RUZTQVA1dzFUNFhyeE1EcVcvaFFyQ0h2VVNWZ25OUlQwUVRoL2VqbmFrVDdYcjFvbTU4Zi9yM1JkMjhYLy9MMkwvUFMxM3Z4cGpmUyt3emtPZzA0TXlmZ1lPdkRwam1HMHpNQTRZdVg0TUhvZzV4OFRCNGNKSUNNTU5CZzVQNkZvRWY5azZpU21QWmptOHExNGZMZS9EUVBVQkxUUnh0ZUU5bkJWRURXT1I2TnlPditRVUhPTUJXb3lwSGo2SDRnWERtNHFIc09EWGxYTmNPYytzalVpNEhEeTZPUUE2REJwZURCY1JGUThSVFVkVDVXMDhFNUtTdHlzdGxtcE1FQmc1UXlkdkFRU05IbVpLOFY5R2V3TWVnWWNnNld5aWpwU01SeTZCQjQzSTNJbjFocEhMdUZTOVp2U2pxcHB0WVlWTFJTUUM2L0MrSGNKaXJOTEJ5YzlZMmFQQkNpbGtoem5PM1pNZnpNeDNmV1Z3VmtFTjhKbWZMaXlUVitZMWtjR0p2R2hDeHJaV2o1OUNRM3MzbGdFSHJ6WTZiTVBvczFJbDQxbFlsZWVHbiswQys5V3c5YzFFVWNmWE1rKysvMnFpeFBGT3A1NEk3VWt1WWtLb0g5a1I1eXM1ZzA3dGR0bFc1TTBPRUIwNUNvdG83NVI3YmQrTHBkUkdRTEdFSXNoZUhLTU04SEw5OCtUcjNmVkhqb201c2V0WFhTZzcySTVKd2JQV1ZLdUxxWmJtM2RCVnhlT3ZwOVk4RGQ3NnZaYlpsMXFEQmRyWTBEeHFLdXZudHVWZ2ZHOW9TSVFQM1p6NC9EUS8reWM0aXFxWVB0NTR0Y2U1dFZLTWJsZEJ3L2RubjJaTHZIOWpnNVdqTXZrT3JQNXVqYlpHWHZuek5yb1NZVlVnbHZlb3V2dHNYVXljbWRGdGpYUlltRHlBdkd5anA5QTZuOVZoeER2MkxzWjVSd09qRVhvRDMrQ3UzNjcyb20xTnFPY0NsdjFtVmZHZG1rTmUrYmF2eW9jdlhaY0RnRGgySXRMbitqcWR3dlhETjUydlR1WGQ4cjNYK3pBdEY5bHpjMlhmaEs2dWdIYVM0Mk9PQlhuYTVVMVlEaDhpV3dFV1h3ZkxPNXVnQUIzclBaWTc0MURjK20vL2E5NGxCQTF4eGRaNjVYcEFxeDllMnMyZWVCbllac0tjbFRscjJYUUNERkhYalpLQWJZd2JMZTFtVjVHWnc1dk5OTlhUV1E3Vmg2czNWenV4SSs1NjdiOVVkWjNRQ0FlQWZ1U2QrZG5WSVVzMSt4N01qRGpsbXNITFZzZC9DMi9KKzdYclRzZHIxY0NGdUNFc01JT3pGRkdyQU1HUFFFS1JlaExTUnRZOEFzTWFtRm5iNUhKVG4zUUhIR1VNNXZQNXNCcXNvVWowNy9NeGU5KzM2ZXUwWWJLM2pFR28ySWRRQVF0N0Q5eWp4Wk02QUlkQUYyVEJUQkFDN09iNVhmc3U5MDRIRi9NanQycE0rMVhmWHIrbnc1Ynl1N3ZIbHdhN1hsUTJWWGpaRXJWdWRFTmVkMmxCZmxwa1JoaUFZTUFEQU9LNFRDNlJRdjZDb0c3czIrNHVDcHFSdTMyWC9xM01kZjFDOElmM0tZZjJoc3ZPWko5WDRrcVZlanh5MTU2OVlWM3pzSERnWTJSRGxLNTFqSDFjRENBWU0vekJnQU5CSHl5eGtEQ2xMaTdxeGxkRS91bmk5cVlPSG9tNXNiWllMRjIxUTVFbW9waWlhZFg4MnBGYUQ3WDk1S3RMN3VxaWJvSnZTaDE3dnR2NVFVVGMrQ3BmZWVEcVdVN3pVMHBDeHRpNVZXaGU2V016VXBUdStDNlN0VEQwZU5uUVc4T1oxeTZBQkFPWnJxL0tUaDMwUEwwYitXbXFEQm50Y3M5dThPMGFPei9EVVA3TzlseWhveGlTakJnNHJja0t2UWpWeTZBREN6c1RJejNrdEtPTmc0M1BwdmxYM1NUdWp6Q0VPQUZvNTd0Ujh6SG5mQXhOYnd6QjRTRWZzbjJ2U3dNRklLR21KeXIzeTUxNW5XRzY4dm1kaXJtWU1HSUpFUWN3Q2tTRUF5STNjWTI5ZGZld2NCdzg4cDhhUjQ2Vm1yVTBJaVYwakgxTDRQSVAyT0d5ek9naUJiM3FyZFdxZkE5UTUrR1BPeWJhRGhrQmw5VzIySk5MOUFVQUFOcUxyTW5sSUNwdW1oMkRBTU4zcUdaL1RRRE5ra2g1ZlVycm1adzhjVmhZYVFIZ2ZORGc2MmQ0SERkeUlBU0E4MThsRDVIWGV0bFY1bnRqcFBLTnVrRHVkUGxmVUhlcWhWdDh6RTllZ0tjWHZzYnVCdzBvS0kwTVRVVWVjQVFNQUxNOXh5dGIzUmQyODc3dS9kenFNb1NMWlU5bWFScGVLMjVlRWJvZmEvSGRkT012ODVaTEx2c3I2YXlrYVNGeTNWWG1rb0IxZUZXM3I3M2hIbWpidWllc01ENTR1YXMwNW1BZVJQT0NUREVsalI1czM0M1BvK2h4VHlTUk45TXNUeDU2TG1aLzdaNmdzUHRxdVQ2a2ViSi9MdGwxUEo3N010VEhtMDFJenFYT09xUlpMMzN1S3VyR1JueGNPRXJYWWErR3I5a2lTWERPbk02NTVJOFhhTHNrQTVubmc4UGRONnViU1lURVBYN3p0RDNBOWNDREtBQUFBZ05DQ0RCeFd0QTRnZkhmRVhRMGNHREFBQUFCZ0tVRUhEaXRhQmhDaE91SU9CZzZUeXFRREFBQUFyaXd5Y0ZoWmFnL0VFdlVuSnY3cXI3WXFIenR1RGdBQUFERGFvZ09IbFlCWm1GNHVVZVo3eXNDQlpVa0FBQURRUk1YQW9jdFRCcUpiVzZqSHcrc09NdVl6TVdBQUFBQ0FSczdyT016bHVwQWM5UmdBQUFDQStkUU5IRmJtRGlBaTZvZ2Z0bFg1WFVFN0FBQUFnSTNVRGh4V3hsYkpqR2pBUUZWTkFBQUFST04vc1RUVTdsR1FRY0hoaGgvNUVNbWd3UTRZQ2dZTkFBQUFpSW02emRGanJKWXhhUjh3MkhheWh3RUFBQUF4aTNyZ0FBQUFBQ0NNYUpZcXJkaWljWjVTdGpwbDJ4aERPd0VBQUlBaG9obzRGSFZ6dVVTbDZiRzZBd1laUUJ4b2J6TUFBQUN3VFRRRGg2SnViTXJTWXdWTjJXcERsT0diREhvQUFBQ0FLRVV4Y0pCVXJLV0NwbXkxWTJuU3NYd09BQUFBSURycUJ3NFNhZGhadjJGcFJkMzhITkNFUGZZOUFBQUFJRWFxQnc0eWFJZ2gwbkJ1akhrMDR1Y1pQQUFBQUNBcWFnY09zaWNnaGtHRDNmajhlc0x2TVhnQUFBQkFOQjVvYktoTnVSckRSbWp4YmVvdlVoZ09BQUFBUGhSMTg5Z1lZeWZpbjI1NCtiTzJLay9IdkxXNkFuQXlnNyt6TTY2aHcrMHFhc0RnQVFBQUFIUE43SnMyYlZWdUxTR2dhdUJRMU0xRFk4ek5rSjlkdXJQdGVxa1Jnd2NBQUFCTTRiaGZldHRXNWNPK2Y5QTJjQmpjbUNVNzJoNzNKK3kzVlVuS1ZnQUFBT3kwWmFYT1ZWdVZyd2EreHUrK0RLWjlmVzAxQTRleG5mR2xCZzRCTmpVZnRsWDUzZk43QUFBQUlHSkYzUndaWTc1MFA4R2MvbkhmSUdUOTlWUmtWWW9sdzFDZ2RuNlR6ZUVBQUFEQUp0MUJ3OVhjU1hVN2NiMytHdXQ5MzhVSERoRU5Ha0pHQVM0a0hTMEFBQUJ3eDFyL2VmQ3lwQ0Y2Qmc5Lys4Q0xEaHdpR2pTY0xsQlQ0cGpCQXdBQUFMWnhPV2hZV1JzOC9PMERMN2JIWWU2Z0lkUWVoNkhwWVQzYW1Sb0xBQUFBZWVqMm9UZjFoMGYwczYvYnFqemE4QnAyUUhJaC8zblNWdVhsSWhHSG9tNitMdkcrRXkwNWFMREt3TXVrQUJUSWFUNEFBQ0FBU1VSQlZBQUFrSWVubXdZWmRxRFErYzgvQTRqZ0F3ZVp3ZDlVd1U0VlJVdXBHRHdBQUFDZzYwbm9vN0ZFeEdIcEdmeEJGTzYvWVBBQUFBQ1FzZTcrMTdZcWY0NDRFczg2ZjVyMWY5eXlHdWhaOXo4ZWhEejBwRjJkN2MvZ2dUMFBBQUFBV1RxZThxSGJxdXdPREE1a01ycWIrS2QzTlpEOXZhTCtOODRJRm5GZzBPQU1rUWNBQUFETThXbnM3OW9zbzBFR0Rnd2FuQ3RKMVFvQUFJQ0oza3o0dFNQdlM1VW84T2FOcmZQZ0pYY3ZBQUFBMGpHZ1AvNWh5SWYxR25HSXBUTmUxTTJiQlFxOHVYQXNPWFlCQUFDQVNkcXFIQlNCOEJaeGtBNnQrczU0VVRlUGpUSHZGVFJscWd2Wk1NMitCMkNMb201V0JXNk81STl4a0JxNmtYV2luL2dPNnVYcDNGOGJZK3htdy9PMktuOUhmR3hleUpLRnNjZGo5Zm0vcm0yNmhITHlmWGcxY1pQdHJUSEczdXN1MTNMOEkyNkhRMXZ2clhLMDd5VktyaXBIUjdTdllaZjlXQjVlc2o5alVsYUFqdHUyS2g4NmJkZ1d2dHZzK0RvOFhLb1RXOVNOdlFiM1hMM2Vsb3FZYnlJWThIdXQrcDdRdld2VS9kelJkOUczalpWWWwySTNOUnBqM2dWKys3ZHRWWjY3ZUNIWDk1YWx1ZXJEYkxOVzlUY2tPN2c0R3ZzY2NuUlBlOWxXNWVoTnYxTzRhTytVNjJCSTFlajFueE5uZmZlQUlXM292TmFabDRnRG02RVhjV00vVWlSdGRmSFFELzBBaWFuTjN4YThGa0o5eGhpaWhPWFFHM3p1YktlMnJjclRnWWRCKzZEQnJGZGlYZXJjSzNqR3ZTL3FadjI3K21Sazd2bVZaQVlOUHZXazJGeUNQVmZmT2lrOFB3eGRCdVBBbXluWmdwWmlveitoSW5aeWp6MWR2eS9ZK2cwakpqbytPZC9qRU9oR2RhOXd4VmlKRFJyK1NQRXpZUnFablF2S3cvWDNiTURQUk1NZUg3NmplUXA5N3BWZmF6LzRIcmpYT2VjYWw0aS9WdENHbEZ6UC9DeS8xdjU3NnpMRm9tNytycFN3VVNTbkE0ZEFONFBidWVIL1VEZXRKV2FadUNISHljTzFFdjNzWEtycnBobEE1RXZPdmJkQlBkZFdmdXoxRk1NNTMxS1ZHQ1BOWFFiWlZ1WGpudk96N1JxNjZmNkhzNEZEd0VIRHJIWHRvUWNOREI0d3dwWExnMVhVelpUbEFGUGZ5K2sxbDhPeUhyNm4yZHJ6Y2U2NW52SWo1NXdsWEJtYityM3ZlOFlXZFROb1V0N0p3Q0ZRTWJMb0JnMmIvanNFSGlMeDhWQ1Q0MUVPeHkxbWZFL3o1ZkxjY3gzbGgzTU9ENzZ0djJSM21aSXg1ck54TVhDUWRLYStONnU1R0RRRXlUS3phWkRBNEFFRE9WM1hIeUk4VExSaEhyNm4rWEp4N3JsKzhzTTVoODBldFRvSW01WS8ybWRwOTgrdWY5L3c3TDNwL0x4TjNld2s0dkREOXhsME1HZ0lVbE5pVjRkbm9jRURlWllqNG1GZC85eGM5UWlBamtDKzVnenV1Vzd5d3ptSCthK3YwTTBjdGJjV0dYQmkwNEJrMXNBaHhBVTh0N010QnpORUh1UDlJVCswd09EaDJNY0ZCWDljWHlNK0I0OUVHNERaSmczdVpVSU1HV0hRZ0RYZGZ1ZU55NzZlck5MNXUzK20rMnllUEhDSVlkQWdiZ2I5MUR3blk0cXZMZEE1Q25FTW9GY01lZStOZ3hSelVhTlRrSytKNTM2SndsNVl5TkNOcThpSDlEdHZPeC80eGtYV3RwNjB2bmNteGljTkhHSVpOSVNxS1RHbDdMcDh2dHNCUCtvRW5aSzRlSWc2REMydU5lWTFYVWNiVkZYYUJRQkY3bTFjQldRcGY3Y3Z1VGNsTGJQZHI3emg5NTZzVDR5UHJod2RZcE54UklPR1dUVWw3QWtQV2VYUkhoT1dnbVRMbHBsM1BuaHdLS2xpYjFQWkZMcDlPYmFSdnFKdTNyUlZlVDdrZ3pJUmxCZGJYVGozWTRETnBDLzVlSDNQOGR6N3hLYis0cWlJZzRUS3ZIWnlJeG8wek42MExhOXg0S0lTOWxCRjNVUlRpajEzSHFJT3p0WkV1eTVpbFdxeHR3bElvWnV2OTdrZkFHejBoVU9EYmRxcS9DbDloak1IQjJwL1cvOWo3RklscjZHeXlBWU56anAxZ1FjUHp3TzlEOXh3dWU3ZjVacG9aMFdIaUlJQlFQS0NwTVRQWFZ1VnA1M1Vxa01qK2RkcmFWbTNUZ3dPWHFya3UwT2U2NkNoODVvSG9aWXRzV1FwSG5iZHYrTkNVUWR0VmM2NmdZZXNTTzNaMk9WUlIvTEhhNHBiRitjb052WmhGN2pKVTg3OWkxRExTaGRrWnl1OVJ2K0lMdjR4ZUg5andQdnRCMk9NbHhVSm5QTmx5SEYzM3RjYk5IQ0laTkN3YUlFM1I2L040QUY5bmprTVZYOXpjQ054dHB4bXlXdHd3c1BzM3M5THFsdlhXYXRjbktOQmNyMEhURHozZHdZMzBxRnp1clRNSmpIWU5ZaHl2ZDQ5dDJzZ3dzL3JhL25pL3Boc2tNREt6cVZLQVVhN2crb2ZiS09sd0p1ajl6Z0lsVzJwcUpzWElkNEg4N2llclptVDZ6bEVKZXFZdEZYNWlnRjRudXdtZGcvbi90MkFuM0UyY09EYXpkS3pJY3RSZ0UyMkRoeWtnK0Z6czk3WjNJczNWSUcza0RkWUY1dXVCL29ZNkgwd2srUHJiMDVkRDJmTGRGTHF0TkFCeTljQzU5NVYxcTBUUjY4RFR5UlRqak15WUdEeUI3UHNpamo0TEJ4MjYyaGRhNGppWm9jQjN1T09VQThqMHZwaEtNY1ZxRk1zOWtaSExGKy9BbjV5SjUzSktmV0hFTndQaDIvNGdkTUhGellPSEFMc2E1ZzlxeDZvMDN1MTFFYkZnSU1IS2xKR3dPWDFNUEc3NDJ3dGY0ckYzdWlJNVl2YUc5Q3VyY28zbkNTNDBEdHc4TjJSakt6QW03UGM5MU1FR2p4UWtSSmJPYTQ4emN3OEFJVERQUmZPYklvNGVPdEl4clFXT09CZWc2MUNITE9FVW13bWJjR293NUJObTRNd013L013aHAxak1JOUZ5N2RHemk0cmdpNzVpcVdzK2VxZytZcU1oSmc4RURGMm5nRTNSL2dzdUowQnB1SVU5eTdnUVM1L0Y0RHlFZGZ4TUZaUmRoMVN5LzdHVXJib0tIRDYrWW1Oa3JId2VYK2dJSG4zSHZXc29Rd0d3emZYRjFqZks4Vm01TTJldzJUR1hEcXpzREJaOGN4bHBsR3hZTUdOamVoSzhpYVZaZkZwa2haQ3N6bk1wMG1rMFdxT1huZXA1aUlBc3ZhV1FET2taY3huR2ZOZzRZVjM1MHZDbnpGd2VXYTFSM1hxNnVLMVFBVVl2Q2dGaE9GVU9udndNRnpaL2VUOXRNZnc2Qmh4ZlBnd1ZtQkwvZ1ZZQkRwTE1Wa1J0RUdadmNRSGZ2Y2tqK2tsZFhEMjdKeFlBN3ZFWWRJT2d6N0xsN0U4OFp5d0pzTkExNVh4WWRDRnNkYUdnTnZ4T3pIYWhEQldRVFE1OC9BSWZNQ1lDZHRWYzd1OE1zU24yQXpCRDRIWkR3MDR1SHJPbkM0TVkvaVdFQ0VPbEdJUlFxZ0F0RHBnYlRLUzkyR0NLSU5qWXUxNHBMV2JvbVp4ak9YK2ZWand3REhMWHM4TzkvWkcwY3ZUdUVoeFZ4dWZoL0w1U2JmREQwTHVQK283TnhyVDJLdkNiRFVOYy8xamxROHlQbE10bFU1TzlJaU03T0xwTFZycS9LMHFKdHNCdzc0aiszc2F4MUU1VlI0eUhGMTdWQVcyL3hlMUUweWUxOUNGOUMwblZCNy9CWndVZFROaFlsNzM5SWkxM3hLMXp2eTVtM2dvUDBMNHJCOXJtWm1wL3BGOFRiWTZKbWRHWng3SUdTZmpxc2xkMDcyRGtXRVFYeStzcnNIZHlZcmJ0dXFkTGEwRVlCdS84dXhlbVJNR1pSMllmMDRqS1BvbVhDMlQ4ZkYzcUZZT0w0WDVMU1pQR28yNHV6NDNKOE4vVUZGazNON25mMFFNVWJkQUl6d0lMZnFrU2tOR29BMUoxcSt6em1FNUl1NmVXR00rZWpocFhOT1ZoR0ZvbTVzanYzM3J0dHFsNTlHZm1qZXJaYlBzaXdIU0pPdnBVcHZOUjR0QmcxSW1kMVBzRnAvak4wVTd3c2hyYk5ucWR6RE5lOXZXcldMQVFTUUZpOTFITnFxUE5kMmxCZzBJQk9MN3l1Z293QUU5VVR6NGFZdUJKQVc3d1hnTkVoNTBPQXkzejdpcDJDMm12WDU4d3hlNDQ3a0hFNzVRRzFWL293aDdUR0RCeUFOWGdZT1MrWUc3ekhwWnJ4T2NWWG9wYk02UVprbFovelpyRDlQQW12Y01WRmJsWk1MclVuYVkvVlp6Q1Q2d0dRWEVERmZFWWZGY29PdnVacHpNMTRwNnVZeVpGVm9JRkxNbHM5RHRDWmZWM00vdVkwMlJySk04SWJCQXhDdmxKY3EyZHpTczFQTkZuVmpNNXdjdTJtU1d4NmpJSFFBSTdkRUI0TFo4bm1JMXVUTHhiTnF4WDczSXhoQUVDa0hJcTBvN20zZ1VOVE5vaHVrWFJTa2tWbVJiMjVhNUlXWEtBZ2R3R1NFbk1IT3JkaWJVMndvejVldmM5OFpRTnhxUExqc2VZQW5Uem13ZnYxUEtzNzY4SHFwRDVWUVZlaU51T2xpbDVBejJLUVFuZVZaeEczSFBONEgzSFlTTFpJb0JJQUkvTTloeGRsN2lycjVHZm9RNUpCMlZRcFBBVU40WDNaR2gyU1dKekdHcWpHZmRPYUREcmc3QXdnblNVUG1ZZ0lNaUkvdlBRNlBRaDZSakdvMStLaFcrd2Vkd0xTdzdFd3Y2Y1FGbjF4UjVEclhENzcwZmRZbURla01JajRzMlJZQWNWbFZqcjcxdFY3ZWRzSkQzQ1J6R1RRd1EzTkh5RTNjN3dLK2wydjd2cGJkTWRBY1Q5TXg0L3lGcGZGNHQxWDV4aGhqLzZ3U2JnVE5JR2dUa0xqSWZqZ1Uxend3ejUrQmcxMEQ2Yk5EV3RUTmQ1OUxvaGcwT0JQVld1dVFzK2xGM1VRN2NMRExJWXJheTFZbWxac3VsZm9nSFRUazUwVHFMS2pYVFNvUzhIbG9FNURRbVVkVWNrNHAvR0RBejdoUTJvUHNhVDJuazgxbEVRd2F2SGM2V0d1ZExqdTRkbjJOdThoY2xpaWJ6ZW9WMzZmc1JUMVlYRTNJU1VweXpka0ZnU1ZrT3hIMGQrRGdvMk94NXNiRHJNS0ppOEdJallpNGFZNVg3ejIvUHBsZE1FYjB0VDVZc3BDdlRlZGVuZ1dsb3dQek9vWE9oU3dqV2cwaWZvYmV1NWl4WHhrZTYrdUkwcW5Hdkh4NWxxQUY0QndQVEJvWDRWK3BOK0hxUWVGRmlHZ0lzNlBwYzlsUlp0TTFVdVI2U1cxcWU5SnNpbWNHM01GRXNiek5zVTlKZlpwRTNSazRoTGdodUxxUnVyakJTd2gyc1hvVFF3UWFOUEFnd0JqWlpzTkIrbHpmRDR1NlNhNGl1Qnlqa0FVbXMrTnFjcWFvbTJnbUJkdXFkRkk0T01UUzdwejFSUnk4M3d3a2M0TUdJZFp0VGw0Q0ZHaTJpZzJ1QU9EUGp4U1BiY2dDazVnbHgwckt2cGQyWiszZXdDSFF6V0N2cUp0RnczQ0JPdVZYVTVjQWhRcHhzOEVWQU83eUVIVklOWTMybFlJMkFFSGxIdEhZdE1mQmV4bDhZOHh4VVRkSEFkN25ubEF6K1cxVnZwcnlpd0VIRFN4UkFvQitUemd1MjAxOXhpR3NvbTQ0VDI2NWltaEVtV1NrZCtBUXNBeitsOUM1Y0xYUDVBZWNtZktTMkI4QVV1QzZxamZGTzdHZ2k5d09mZ3pmdDFpVGpHek1xaFJ3TnZvbTFPQkIrMHgreUwwZlBndnlBVUFLUEN4Wkltc01GbEhVRFpud0hHQUNZRWM2MXBDREI5OXZFTUdnNFh1b1V2OHNVUUtBd1Z3dUozaWUwbUdYZE9id3grV3k4VmpxRGpqN3ZybnU5MFZTODh1N0lYVWNnaXhwOGRteGoyRFFjQm1xbGdTREJnQVl6dlZ5Z3NSbUxGV25NNCtkNjJYajl0clRuaDVZNi9mTmNYSElxTzBjT0lSYzB1TGpoaHBxaERoajBHQTNMUjI3YjFHdmswRHZBd0RKOExCa2FaSEVJQzZ4WkNOYVAzSTdkekpnbWpRSXMwdnA1WGk1SGpSRW01SHN3WkFmc2pmTlVCZWF2TSsraTVHMmRNcTlqeEJuREJvT0FtNWF1blZSYVJ0QU9yUjBJQ0tKaERZT255ZGY3T0YzOUZyQnlEcjVXSmE4OUZKeXpaK01lQjY3dk83K1dqc09uNDB4NTFQVHgwZGliKzB6bi9WRk4yUlFmK3E3L2tYTUdja0dEUnhNNE1HRGJKaWVOWGlRRGRjaE91V0hNMzQzUkFHNlA2alhBRUFyMnlIVm5tSEVSdDlkUGdQdGEwMFpNREhUbndUYk54azBjSEI5M1cxZzk5NDhMMnF2SzlQZmpxZ00vZElZODlGblkrd0F1S2licUFmQlN4bXl4NkhyUThCMjNzaU0vT1RmZDlpV1RleUlkZEpTcUpBM2YvWTFBTUI4M0V1QnlWNE0vY1cyS2xQUFB2WkxRUnNtR3pWd2FLc3lkTFc4YjFNS2x3VHFsRGRUWjhnWU5BQUFpQjd3akJyb1dSU3R4Q0J0VmFyZW9MN0wySWpERWwveUM4azZORWpBREVxVG9pRU1HZ0FnWGg0MlNwUGlFVnNsdnZlZ0YvMFh2VVlQSE13eUovUzRxSnVkVlR3alNMc2FjbmJwWmNEM0FvQ2NQSEg0V1hOTzhSaHRacGtGdUx6bXNKQVVCa1NUQmc1bW1RLy9hRnZITzRKQlE4ajBlNzh5V0NNSUFJdG9xM0xuUk5ZWXVTNVppam16VEdpdXI3a1lFSFhRYWZMQXdTeDBVdnR1c05vSERlS0wwOFpzRWZ2Nk9RRFF6c09TcGNHYlIxTkFwM0M4VEk5WnlLUThYcVZ5L21ZTkhFVHdUVHZkZ2NMVW9oNWp6VG5oN0dzQWdDU2RPZnhRdnROUGFzSVNwWWx5ZThZdmtKVEhpNVRPMit5QmcyemFDWDRUa0VxQWR0UDBudS8zaXVXRU0yZ0FnSEJjMTU3SVpNbFN3eEtsMmZZamIvOG9DZlJ0a2pwZkxpSU9xM1dLdHk1ZWE2VGpBTzhSeFFsbjBBQUE0WGxZc3BSeXNjNlhVek1TNGg5YkhEZkR5RU9VbjllMmUwNHhZNDJjREJ4TXVwV0pUeUk1NFhPcVZ3TUE1bkZaMENsRThkTGdwQU5GMGc2SE1oMDhSSk14TXRYejQyemdZTkk3U05kdFZRNnVIN0dnejFPclZ3TUE1bk9ka0dKSSt2R0k3Qk1SOTBjR1pERWNYeWZMMCt6Z000TFAreVRsYTk3cHdNR2tNM2k0YmFzeVpQclV5ZHFxekNvVEJ3Qm81UGpaOTJqVFA4ajd1TnlVN2NXcVE1dmFNZzJ0dEE4Z1hLZVQ3WHplenk1ZmQ0N09OWjkwNnR3SFBsN1VIcmlZTjNuRnN1d3E0a0hhYlloTjdZN0YyR1pmc3F0aUN1OVNXY0p5NVdydlhWRTNYemROWU1tbTdIc2JzNHU2c1gvM3pzWDdUM0RGcHVmbGRmc0ZSZDNZNzlYemhScDFIV0lDdGp0NXVzVDFuMk0wcldoYmYvMzdHQWNQUGk0Q0g4Y2hoWXQxUmxHOG4wdU42R2UwK2J1V21iZWlidXpteEVtRFk4bWlwc0tjb29xYVBzY2NnUXRMZWpIbFhNUnc3alcyVWRyMGF1Ymd4dWJWdjF4aWlXeFJOM1pKV094MWluNHZ1YnhZcmdIYndYN3E0T1d1NUZwUWV6K1ZaQU52Wmc0b3JvMHg1K3pSK1kvWGdZT0piUERncXpQdStoaXdYaFFBQUFDaE9kL2pzSTRhQ0c0eGFBQUFBTUFTdkE4Y1RBU2QzWWc2NDlHa0lRTUFBRUJhZ2d3Y2pPTE9lVVNEaG9iMWRRQUFBRmhLc0lHRDBkbEpqNlp3R3RVMkFRQUFzS1NnQXdlamEvQndGVXZoTlBZMUFBQUFZR25CQnc1R1IwZjROcFo4MHd3YUFBQUFvTUVpQXdlemNJZVlBbThBQUFEQU9Jc05ITXhDSFdQU3JnSUFBQURqTFRwd01JRTd5QkYxeHZjVnRBRUFBQUQ0YS9HQmd3blVvWTlvMEhEU1Z1VnZCZTBBQUFBQS9sSXhjRENlTy9hUjFXcTRWTkFPQUFBQTRBNDFBd2Z6cjROLzYrRTFZM0JMclFZQUFBQm9wV3JnWVA1bFBHb2N2VncwZXdWaXlmUUVBQUNBUEtrYk9KaC9WWkpQWnI1TU5Ic0Z5S0FFQUFBQTdWUU9ITXgvbldtNzF2OXc0cTlIczFlQVFRTUFBQUJpVUxSdHE3NlpSZDJNYXFTMnp2aW05ak5vQUFBQVFDelVSaHk2eG5Td0tmQUdBQUFBdUJmRndNRU03R2d6YUFBQUFBRDhpR2JnWUhaMHVCazBBQUFBQVA1RU5YQXdHenJlREJvQUFBQUF2NkliT0poL0hmREdNR2dBQUFBQWdvZ2lxMUlLaXJwNWJJejVZWXg1MWxibDE5eVB4eHhGM2RqNkhIdFNiWnZDZVFBQUFBQUFBQUNnd0FOT2dsOUYzZGc2ZE1jcGY4WlFlbzdsWHFkRXhuNHNoY0lCQUFBQUFBQUFJRVVFSER3cDZ1YTdNYVpNOHNNRlZ0VE5nVEhtMjQ1M3ZTbnFQN3ZsVDlxcXZFenRHQUFBQUFBQUFBQ0FkcVJVY214QW9JR1VTaU4wZGpDTTFiUlZlYUQ5OHdFQUFBQUFBQUJBS3RqaDRFaW5yZ0FjY0hBOHkxV3dnc0o3QUFBQUFBQUFBT0FmQVllWlNKM2tWbEUzZHZmSFU1Y3ZTcDBIQUFBQUFBQUFBUENQZ01ORVBpYkdjMWJVelN0anpJWG5RMENkQndBQUFBQUFBQUR3aEJvT0l4VjFZeWVxajJlOEJEVWNPb3E2ZVdnREFRdTkvWFZibFVjTHZUY0FBQUFBQUFBQUpJVWREZ01WZGZQQ0dQTXhpc1pHWWtaQmFGZWVTaHR1MjZwOG1OT3hCd0FBQUFBQUFLQmJVVGR2akRHbm5tc0hYOW4zYUt2eXA0c1hZNGZERGg1VzRHZS93NkdvRzN2eFBsTFFsSHNvTUEwQUFBQUFBQUFnTklVcC9KOU1DVUlRY05qQzB3cjhiQU1PUmQyY0cyTmVLMmpLRUJTWUJnQUFBQUFBQU9ETnpQbm5hMk9NbldmK2JvejVNNCs1bW5lV1JmUUg4bk0ycGZ4aitkK3BpOERQMnFvOEhmS0RCQng2ZUU3MWsxM0FvYWdiZTNGL1U5Q1VLUTdicXZ3ZVg3TUJBQUFBQUFBQWFGUFV6U3Rqek1XQVpuMXVxL0pGaU9hUGFOUE8xUFFFSERxS3VyRVR5NlhudDhrcTRLQ2dUb01ySjIxVlhxYnhVUUFBQUFBQUFBQ0VOQ0IxdjVvNnN3TXkxVFJ0VlI3MC9RTUJoM0VSSEJleUNEZ1VkZlBiY3pHVHBSQjRBQUFBQUFBQUFERFlqdm9NcXVjYnR5MG83NnVIbTNYQXdVTkI2Q0dTRGpnVWRmUEpHUE5jUVZOOHUycXI4bFhhSHhFQUFBQUFBQURBSEZzV1p2OXFxL0p4REFkM1c4cjg5YUJEdGdHSEJWUDlKQmx3S09yRzVoUDdxS0Fwb1YyM1ZYbVUxMGNHQUFBQUFBQUFzTXVXRlA2ajVvaUx1am1Tb3M5Ry92ZmhoTklBbjQweDUzUG1wamZOcVhlRER0a0ZIQlNrK2trcTRMRFFMaEdOTnVZdEF3QUFBQUFBQUpDWExic0N4Z1lidHFWam1tdS9yY3JmWTE1alY5RGhmNTRhcWs1Uk4yL2tZS1JZVjJBUmNqd0pOdnludE1kRG9wWUFBQUFBQUFBQTh0WVhiUGlzYkRINlRWRTNQOGY4UWwvZEJ2TnZGMGI2QVFlN0FsOG14dDhyYUU0UzdLVDZnaW1wdENQd0FBQUFBQUFBQUdSc05mbStycTNLRndxUHlxT2lic2JXcXYzYzgzZGY3UDk1NEtaTk9qRXA3cGJkSlVMZ1pyQlNyajlTTFFFQUFBQUFBQUI1K2RUemFhOTlIWUZOdXc1V0JzeVRYeGhqTGtlODM0dE5yNWxrd0dGTE1RNU1PNTYyV3ZvUGp0MGtCQjRBQUFBQUFBQ0F2TnhMNjk5V1plK3VoMERPakRIdmZMK1YzZG1SVk1CQnRuNWNLR2hLTXRnbDRneUJCd0FBQUFBQUFBQ3B1TzRwWnYwcW1ZQURFK051RlhYem13TGJYcXdDRDFkdFZZN05qUVlBQUFBQUFBQUFnMGptbXN1ZXdNQzYyd2xIOUd2UDZ6Nk9QdURBeExoYlJkM1lDL0E0cGMrazFIRlJOL1k0bjdSVk9UZy9HZ0FBQUFBQUFBQjBPVmlNLzlqUkFYMGFiY0NCaVhHM3BITDZsNVErVXlRdWlycXhhY0JldGxYWlYwd0dBQUFBQUFBQUFIelpiNnZ5dDZQWHZvNHU0RUFCWTdlS3VubG9qTGxKNlRORjZtTlJON2JsVDlxcS9Kbjd3ZkNscUp1K3JWNGgvV3FyMGxYRVdLMVlqM05STjZjaENpaU45TXNZYytEd3dSOGRwZldaYnR1cWZPampoV1VCZ05YOVgvdGVwWS8zaTRCOU9OcUEvR1VxejhlaWJ1em5lS1NnS2ZqbldWdVZYNWM2SHZLOXQ5L3pBMWxaOWxqKy8xeDNjZHRjd0ovYXFqeFgwSmFvRlhWanI2TVhOcGR5WlBlZFgzTHYveHJib2l6dThTb2xQY2FXT1oxWDhsMWZjZ3cyMTdXa1p2bTY4RFBaSHNlUFM3Mi9TRFlGdDVMRjQyUWErZWVzcmNyVG1hL1JXd1M3YU50NFNoOGtVcWRoMFFGTkYzVXY5R3Fyc3NqOUdMaW02WHBQK2Z6R2ZKeTEzeE56dXkvRXNKTnh6RGtwNnNaT25MMzIyNkpzUlRNb28rK2xtb3NCMXgya2Z2WEsrZm1La1FUbHo3bk8vdmdnd2VudlN6V0FlN3hxYXVaaHhocVJlejBuTnMvOEc5ZVR4aEtrL2Fia09GNjNWZGs3a1JzckJRc1R1dzVEUEMvNm5ndFR4L1ZEanQvcXRZY2VheGR6REJ1ZWZTZFI3SEFvNnVaN3hpdjduT040NnJmNndoSjRBSUo2cGptMW5Od1hYRzV6VkVzbTU1TUpOZ2lDRGY2czZpSjFaYkdqRE9veENlelB1Nkp1MW5jbEpyc2kxSkJTZUFqN25IMHR1OGJ2WUV5RldDamQyYXZSWGljOXRkVzBWWG5nb0oxZWRqQkRwY1hPdGMyczRIdlJoQTFXRFVtZDcydU93UVlEVlFjY2xFVVg1M0oxQTV5TWgxZDg1TXZ2TFhVSGdIL3NxcWVpYnZhVnA1bTdzVzFNT2VnZ3FhMVVUODR6Y1JHRlIydXJiVDYwVmZrbTk0TUNKRzQ5K0JoMWpUUUNETzdZNXdIUGJtaWtKSDFQQ3NvUWs3akFCRytOTWUvWGZzMHVtUEIrcmNxdXJtTEE3anM3eC9CMlNpcExHYnYzVWh0d1NHZzc0dUtUeFFuV2FiaVRnekdEcmF0NzhobVRYclVGYUNBVCtVTWV5a3V5OS9Na0I4MUs2Mmgwc1dvK1huYlY2eXFRUmQ1V0lBOGZPNnZkbzhqaFh0U05EWkE4VjlBVUFKNFVkZk9tWndJUzh5V1ZmZ2hwc0pQNFJkM2MrNzdiKzBDb1dsVTI0RDVnZnVPOXRHbnNXTGR2N0c2RExPWi9JMS9JTzF0a0taRUpaQnRvS0JRRUc5cUVnZzBuY2t6dkRCYms3d29wTEpreXUycXJsWjAvQUR6U3Znb3V4VUNyN01MVEhHejRUTEFoR1JmeVBGMHN6emVBNEg3STkxNWxJV3BwVzB1d0FVaFg1M3RPc0FISXk5dWVUeHYwUGlEekd4OTIvTmo2RHZHdE52M3NLcENpSnVCZ0p4cWtzWThVTkdjT0xZR0czd2xOU0RWeVRMZXVSclFwcStSTDFQZGxUc2szQ3BJQi9oRjBDQ2VDbEgrMk9Pa0xCZTJBVzZVTS9xTk51UUpndE5meXZWZXhFcll6QVFrZ1VYelBnYnh0MnNrdzRiNndhN0hVcjIzL2FOUEx5aHpIN2JhZnMvUEp1eHF5NVdmMlYvK1BpcFJLcWR4OE5VeE9wWmJyYzhveGxTL3plV0kxUU82Ujd3M3BQUUNQQm00L1hFd0tPWWxsMGtkenNPR1o1TDlFdXA2VDN4dkl6aGViYm1tcDc3M3N0RkJkcndqQVBBUVpBS3hzbWxlUXZ4dFVjMHJxMGMydVNUZDNnZnlXZTl1emJxM0pSUU1PRWhIWlc3SU5MaWdKTkNRMXVlN2ltTFpWK1YxeXNhZFd3NkpydGVXSmZOU0FKOUk1K0tsMUIxN01FNlVTYlBpaW9DbWJKRjJnRzNmSjgzUlN3VFFBY1pMdmZkQjdQWk9RUU5vb0JBMmd6NWJGakIrWFhBUXhsS1NqTFRmOCtMMWFXWXVrVk9xa1Q0bzYyTkNwSGJBb09aYXBCQnNPWFI5VE80RFFjcTQ4dW1Ed0F2Z2pPNGsrYXozRU1YNy9pN3A1ckRuWUlNOE5nZzM1ZVMrN1JRSGs0eVpVaWlYNjYwRGFaRkV0d1FZQXZXUmU4cXJ2MzFicDF5Um9xVVluTFZ4dnNLR3YxcTVaSXVBZ2pkU2NPbUVuVFlHR2hEcXRWM0pjdlJadzdKeTdyVG5MWWtVUlRNQWZ5ZUYvcHZVUXgvUThrR0RERHdWTjZVVnFuZXdkYXkwc0M4Q2JML0pzOG9aZ0E1QzJGQmJWQXZDdnJjcFhPK1lsUDNhQ0Q4RlQrNjQyQ1F5WWM5NjZZRHhZU3FWRTBpZXBTSzJ3WXh0TGJCYXBRYkRLV2FZNVRjb01wZHdVN20xcEFqQlBXNVduOHRCWHVUSS9odlJLa3VhT1lBTzBzNFZsTDMwdmhBQ2dpbjAyZVhrR3NITUtTQnNCUlFCamRlWWxiZjJHNXh0Ky9lbUcrMHRqakxHLzkybktlRVYyVWJ6YThyNGJEUjB2ZXc4NEZIVnphb3g1NS90OVBEdlVNT0MwVWFiWWQ0ZDBhWmpVV1FVN0VndmlyUHlJSVE4Y0VCdGJRTGlvbTMydHRXRTBCeDIwMTlUaGZvazEzM3hOUGdMUXllTXo5SmhURHFTSllBT0FPU1NUd2g4ajV0QkwrZlBPenZ0NVpuZGlQQjY3QU45YndDR1JRcjBxQ3ZFbVdQUllYUkhPdGlwdDBlMGtBdy9TQWJMVjRvTnZ4UUpTSmZld1RVV2ZGcWM0NktEMVdYYTdXbUVDZE5rZFRXMVZCc250RGtBSHUrcXZyY3BQcmhxelJEb0VBR0dRemhpQVN6YWpnakhtZFBXU01oOThPV1Vud2tRMnVQREtSVC9JUzhBaGdmUkoxMW9HbDRsRnk5VlBlaWNjZVBqQ2JnZkFQZnVkSXVnd2pPTG5tWnBuUGxSNnltbkpCcE5HV1Bub2VIY1Q5NUhsSGVaK0FHQ2NweG91NnVZZ3dTd0owYUkvanhUSlFzZkJSYVRsdm5SdklkMFNjN0ZPQXc2U0F5cm1pdnhxVmpnbVV2Tml4UmFFZnFXaktjT2tHbmlRQ1Q4VktjS0FWQkIwR05hT3BkdXd3Wm1zSXNuS1V0ZUVyTkN4eC90MVRNZmJGcEJ1cS9LTmdxYTRwcllJZm1DVGN0L0dac0h2L1lGODcwT3R6SFBDRnBET3FCYmFMMlBNRWJYZmtzTTkvaitYSHEvdGI1NWUxN2ZQOXI3TW5BQ1FIazNmYTJjQmg5aFg0bXRaQlNvRnhWTEo4Umw5aW9wRUF3L2ZpcnBacEZnM2tDcUNEdHZmZjZuMzN1R2x5NVFaMkUxVzZMeVJQMzhWZFdNbkFoNHBQb1N2MTl1Y2doeURiUWhQQnI1M1Z1WkZraTdXUGg4TzVyNkkxT0RUS0xvRllSaUhlN3hmRVJXQ0oyMG9nRVhNRGpnVWRXTUhZTzhqUG4xYUNrSWZSQndodnllMTFEMmR3RU1xTzA4ZWFTNHNDOFJJZ2c0cTd4RzJYVXNNTmhRSEc1NndrbE9QVlFCY0p1WXVjajhlUU9wV2RaQ003a1U5cnRxa2JvRVBYSUdsaHdBQUlBQkpSRUZVL1gvQUNlMkxSTlhWelFTUWwvL04rYlF5a1JCcnNLR3huUzBsd1lZMm9XRERmc3FkV0R0aGw5TG5zOWVlcEVJRDRJQk02bDhyUEpaN0Vnd0pSbXV3UVo3OUJCc1VhcXZ5VXVzemxtY2w0SWRkMUpQNEJMaXFuT0lFRzRENWJLcEZ4WWR4WC9xNkJCc0FMR3BTd01HdXhvODVoWkxjZ0dkdmtaMUxKbnRUS1FwOWt0T0RUVDVyS2gzMmo1TE9Bb0FEVXJCTVk5N2N2VkRmZGMzQkJnWE53QTVLejFPS05Sd0FUZmExblkyaWJpaEFDcUNQeWxwVUJCb0FhREk2NENEYlhtTmRqZjlTU2ZITTd3a0ZHbFk3UldMSlllaVVYRStIQ1h5VVJ3bGRrOERpSkcvdVM0Vm40cEU4eDcwaDJBQkh0SDEvbmlwb0E1QXNtU1RUdGtPUWdBT0FPMnhCZVkxSGhINHVBRzFHQlJ4a0VpSEd3cm0zTWltK2VISElpSS9oUFZwMmlpek5wdVdTQjd6R05DcWpFSFFBM0pGbnpoT0ZoN1FzNnVhcmp4Y20yQUJYS09nTjVFZDJDR3Jpb2oxZW5yY0FGcU51b1NYOVhBQWFEUTQ0UkR3UmVVaFZmcmUwcFJQU2NtM2FRVklLRDN0SjljVjNCbkRBMWdwUWVsOTRXdFNOMHdHVDBuN0NMWU13QU1CRTdHd0NzRTdiZlVIamptb0EyQjF3c0Z2R1lnMDJhQ2tLblpCRFpZR0czeHF2elVUU0xOMW8zUzRLeEVqcHBQZXhxNkNEMG43Q05Rc09vaGY5emtFQTJWTzF3NEhkekVCYTJCRUtRS3V0QVllaWJsNFpZMzVFZVBaVTFHcEl5RnROd1JzN1FTYWQ1VDBGemVuVlNiTjBxN0I1US8wZzZBQzRvempvY0RybkJaUk9YbHdwVE0yQjhVaEZBaUJxYlZXcXU0K3hteG1ZUm1FaCtSTUZiUUNBWGc4Mi9ZTUVHeTVpTzJ3RUdweHFOTlZvS09ybUlMYUM1WFoxclhUb2J4UTBad29iY09RN0JUaGluMUVLSitqZkZYV3pLblE5aXRKZ3cwbGJsZXJ5NndJQW9JamR6V3hrQnpzWkFZQmhaaTNTY1kzK0xnRE5lbmM0U09RMnRtQURlWm9kMGxZUVdpYTFvZ28yckxSVitUdm1hNU90MTRCYlNuYy92Wk9GQm9NcHZUYzhZZkNWRkhhcEFJQmYzMlRIUSt1NnRoT1FJT3E2QU1CQW0xSXFmWW5zQUY2UnA5a05qUVdoVTVud2x1UDZWa0ZUUmlQb0FMZ2x6eXh0K2VrdmhnWWRsTjRUOW0yUmJnWHRnRHNNN0FFc3lkVnoraXlTczNqY0NUNnMvcEFmSHREcGl2TUNRTE43QVljSUp4WnQ2b1JScXpMUlMxdEI2TzhwVG5LM1ZYbHVKOFVVTkdXMG9tN2VSTlprUURXcE1mQkJXUnN2ZHVXbjFWcXMzKzRtVTlBVUFFQTZuTlJmbUpLeVVKSG5QVUdJM3dwejJRTzVZVWNTQU5YdUJCeUt1b2x0WmVBelVpZk1kcVcwSUhTcG9EbGVSSnhpNmIyQ05nQkphYXZ5amNLQ2IxK2taczQ5ZHBKaDJhYmRSenJGTkJWMTgwTFpCOU8ySXdsSVRsRTMyZ29zdTJ4UDQvQzFsclluZllYMVFNUjVRcDhSVUUxalFYb0E2UHBiTkZvSzJ6Nks2T2k4NUNZN3k2Mm1ORlF4Rm9TZVMybngySzNzTGdmWnBZRjV4NUVVVmZqTEJzNWxrdVdIb3FOaWN6by82YVlva21ERDNyTE51b3RnUTlJK0t2dHdNYTlRN3BYeHM4aU9JVWdUbzR5TVJWV2xVWE01MXJTMThUTDR6cjB1NnViMTJ0LzlzdlY0U0hrWVhzYjNlQXFoQTRBQzNSME9OeEdka0E4TUZLYVRIUTJhZ2czUkZvU2VLOExKTW5ZNUFCN0lRRnhidXJVZk1nRzAyZ0ZKc0FGQktFM2J4U0tYZEdnTFptVlBualV4alVXbmVobG5zMmQ1SlAySjlkMFFwR3FGTDE3bUZVZ2pCZ0RqUElqeGVFa0tDb3kzcnluSE5hdTgvM3FpYkdVemdBWEkvVm5ienFlYm9tNStLZHNCK2F1dHlzY0syZ0hIYlAybWxGTXFBcmhQNCs0NTRUd0ZrbDB3VjlTTkxmUjY3UHExSS9TK3FKdjFoVXlmalRHdnFNa0VBRUQ4L2dRY0ZPYkwzSWdWalpPY2FLcDF3WVRDWFhabGMxR25sTllWd0J3SzA2MXBDamJZdWtPdkZMUURqaFIxWTFNVnZWTitQTThVdEFGSWhvdzlWYVZQNnVHbGpveDloaFYxOHppQ3o3K0U1N0xRb2Z2V3Q4YVlBMUl5UVFGMk9BREFDS3NkRHJGMGVDallOODdudGlyVkZGMk1aRkpoS1djY0d3QXJNZFo0Q2VBdE5XVGkwVWs5Y0NSL29wMWNhNnN5dWZvTmdBL3l2YmZwa1E0UytONTdtK0J1cS9KSVVncVJxblMzUFVuSjFQMUJGaDhBQUtCY2JDbVY2RmdNUTBIbytMQmlBc0FkRW5UUW1tb2l0R2ZrMEhlSFlOWW83RzVBRXZqZWozTG8rdzBrZ0g3T2Vabmt1S2liYmxvcVZidjVBUURBM2FMUjZyR1ZjamNLUWtjcmxoVmdueFcwQWNpRzNNOS9aWDdHOXdrMllDbnNiZ0N5WStzRWZRLzFvU1ZkY0k3RnBGMjY2QlNqWmlja0FBQUtQS0RhZmpJb0NCMnBvbTVpV3BGREp4NEl6QlpJbHZ0RWRrVW1xZHVFSlhIOUFmbXh6OXpRSDlvV2s3WkRBbmFGTy9HNnFKdlg4a0txeHNjQUFPVGtmekdsY29tcHVIVkFKN0tyUVVWbnloYUVKdGd3bkJTTmkyWVNrVlhHd0RJa1YvSGJuQTQvazcxWUV0Y2ZrSitsdi9kMlo0V002d29wbG94NWJtVFhnNXJkL3dBQTVNSUdIR0thUUh4S2grR3ZSanFrS2xiSEYzWHpTZ0lOcFlMbVJFR3U1UjhSTlRuM3RDN0FvaVRmODdNY3pnS1R2VmdTMXgrUUgyM2ZlNXRTc1JOOElLWHBQRGNzaUFNQWRMR1kxcjhIOWlBWGRSTlRtMi9zWEsyQ2RpeEdVNGRZVnVqSE5HbXVRb3pIYllrdDVnRHVrbWYydmp3TGs4UmtMNWJFOVFkazU1ZjJQbTVibFMrNi81MXJtc1c1Sk9qd1VsSllBY0E5eXVaSFUxeHNmYUNnRFFna3FxTFJLN211VU9pc2NsRkJ6Z1BCaHBHS3Vua1Q0WEZqV3plZ2hFMmhsK2lrNkM4bWU3R2dRNjQvSUM4eXRvcHVRWTFOczdnYUYzYkdoeWNLbWhhRGo2UnB4a1JjTndndHhld2hld3JhZ0VCV0FZZVhzUjN3eklJT3FnYkJSZDM4Wmx2cU5FWGQvRFRHdkkrdDNYWmJ0NEptQU9oSWJITDBtbDFVV01paFROaDk1d1FBMmRoUExjQm8wK3oyQkNIc2pzaHJCYzNUNXFuc0VnRUFBSjQ4TVA5MVVENUZsbGJwRDVuMGZ0Slc1VThGemZIaFExdVZiN1EweGhhRXBrYkRkQkVIYVZneEJTaGxKeFFTQ0FDZnRWVjVxcUFkeU1jdGdYUWdPK3BUSjdsbWQwUWFZNDdXWDliVzNqUEdYRVQvQWVjNUx1cm1FK21WTUZTRXFjZ0JZRkVQVm04ZThhVEZqNkp1UHEvbnRveWNMUWl0SnJjWm5kSjVpcnF4aFY1ZlI5cjhYMW9La3dQb0YzblE0UmtGdXhCSWRwT051TWZPRkozVHI4bktsVTAvbFB0QldDZmZnVHZmZzZKdWJCRFdUcjQvVmRISU1EN21YaHN5TWRkeWp5ZUlCQUFLUEZocndxRXg1bHVFSithNW5XeEpZV3Vzc3RSSkQxTXVUQnBDN0N1UG1aenhJK1U4NGFSYlc0WUVIZXh1djBjUk5UdmxIWXBZSGp0bmRxQm1CUkpFUWVDSmN0ME5ZZXM1dEZWNTczT25nSHQ4Mm9xNk9XTFJEZ0RON2dRY2JQN2FvbTdPakRIdllqeHJNdEYxRXVuS3BYM3A2S25BcE9FOEthU2ZvcE1LeE1VR0NHMTZBQnVFMTk1dzdpOXc1TE9zWm1UQURlVGpUTDczYXNaTktjdGdOMFJPT3pxUWxqY1VzazVmU29FbCsxa1VOQU1CcmU5d3NKMkswNkp1N0tybTQwaFB4RVZSTnhjUlRXWWNhaXBVYUF0Q1V6bCt1cUp1RGlMZEpYUUhrNEZBbkd4NndhSnVUalV2SE9EK0FyRXFaR3I3SGJZZlpIZTcvQ1I0QUdDSGQreGVXbFpxdXlGWUtZNUlxVjlnRkxGYlJYTmlwMzMzMjBocGVuYi9VdENHNU4wTE9Kai9PaEd2SkRWRGxEc2R6TDhWK3ByemRxcHFXeXlyWWpWTFpWY0lrNEZBM0dUaGdCMDRmOUgyUWJpLzZNQjVBUEl6NVh1dnRXOHI3U0o5a2pJYmRrUEVrTzdSMXR0VFV6OFJxbDJ6S3lZTDU0cm1RbE82M2pSOUZ1cDVCZkMvVFc4aEswZE9Jdjk4eDdaREt0cyt0YmkxSFg0dHdRYTdFa1U2N1FRYkpySWQ2VVNDRFEyVFVFQWFaS1hldnFZUHcvMEZBT0lpOSsxYnBZMytLSlBaVU15bWU1U3hyK1pyS2VvMHVBaEsxZTRxMlZVRTk5anhsRDdPY1FBYkF3N20zeXFGSndsOHpoc3RFOEp0VmFvSWZ0Z2dqQnlUWkl1QStXYlRsc2d4aktsSTZ5YTI5Z2tyZTRDRUtNdHZmVDNnWndBQXlzalk1YTNTOC9LSXVuUHhzTmNTaXc4UU00V3B0NWpMOFVEYmVVNGh1Szd0TTVCR0w0eXRBUWZ6MzRuNG1VckhRSFk3cUttWHNCVHBtTjhrOG5IZWhyNCtiWjBHT1liUnBoenJrbFZIYkNrREFBREFQVzFWbm12Yk5kZWxjRWM3dGlEb0FMaFQxTTBMRG1meVVsamdtc0pud0VnN0F3NHJDWFVNU3VtVVpyZjl6QmFFVG1nVlVDTVQ1ZWVoM3JDekt5VDZvdERpbGc0L0FBQUFkckc3NXBUM0crMk85amNLMm9GaG5uR2NFQ2x0dTNZL0ttaERpaHBObnlubWVUeUZiVmQxYmxNMk9PQmcvZ1VkUGlSeVBDNGs4SkI4R3BtaWJpN2xTNjZsMHY0c0VtZ0lldDRTMnhWaXBOQWVLOEVBQUFBd21Jd0h0UTdXMzFQWElRNmtzMERFMU8wb0lMV2NGK29DMkVYZGZGTFFqRkhzWEtUQ1pyRTRJWkJSQVFmelgrZmdqZVl0dFJOOFMzVWJibEUzUi9Md09WYlFuTms2QmNlQ2tXc2pxUWU0SE1mb0hsWUFBQUJZbml6ODBicENuYm9PQUx4UlZpUHRMKzU3YmlrTmlqNlBLZWdnd1FaMWM1RUV2TU1aSFhBd2NXeXBuVUpOWWVtNU9xbC92c1Q5U2Y0NlhDRFE4RFBCaC9ZSktaUUFBQUF3bHgyd2ErNVhVdGRCdDZKdUh1ZCtEQkMxTTQyTjU3N24zQytGYlhvZXd6eVY0b1hQR3M5cHNpWUZIRmFray9reXBZTVQrNHIyeEZML1hNbHEvR0NGdm91NitTckhNS21pTmhTR0JnQUFnR3NSMUhVNFZkQU8zUGVEWTRKWXRWV3ArYjZTekVMYXBiVlZxVFl3S3ZPVzZ1WjNPdW5jVmRKOFRsUDBZTzVua3RRc1JXbzN0ZFhuaVdWRnVDMEluVXFOQmlsbUhEUXlMNE9SZHlIZk01QW5iVldTeXhZQUFBQmUyUEdTcEhsNHJ2QUl2N1BGcEtsZHBvT3N2azZwTGg3eWRhVTVkWFZuZnU1elc1WHE2azdBaWVPaWJsYlg0R0x6UHR6WHNjbnNnTU9LZERSZjJXTE1LUjF0N1lFSHJYblJwbG9nZFpMTlFmc3Q1SHNHY3QxVzVWR0Nud3NBQUFESzJBa3RTWk9qY2VYNm5oM1RrVnAwR1FtUHQ1Q3h0aXBmZFNaN05WdFB3WE5yaSthUy9XQ3cvVWdtMDM4VWRkUDk3dzlTZjllNW9tN09qVEd2Ri9tVTg2UlVpemdLemdJTzVyK2JycjFwcWQ1Q00xWG5NKzFyS0JTVVlNY3Q2SEZOT1FyTFlBb0FBT3hDeW9WN1ZQVHhZeWFySzlYdWZKZDJoUjV6SkxVNExGRXE4L0hQeFQzK0xrOWo1TU1JNTJSc1ZveUxvbTZTV2lqc0swdUdmVjRVZGZNcndwVGJyNHU2aVRFbzRNc3YrbmpoemFyaHNJbmN6QS9qT3h5RDNFaSt0SU1sM3J4VEVEcVZZTU5McVM4UXN1T2ZVcDJMcmljRUd3QUFBQ2J4c2hJd1I5SWZ2Vlg2MFlQVmRWQmNOQk1keXZQeHc1R2licHp2L3BkYWs5ZWNJeFhzVHJhdlBocEMzdi80Y1E2WDRTWGdZT1RtSzUzTlpzQ1B4K2liQkI2Q3BhMUp0Q0QwcDFCdmFPdGNKTHJTWTNVc3FkVUFBQUNBeGNsS1U2MHJ4OTlKL1R2Z0t2c2pnRmxJWTV5Tko3a2ZnSWh4N2hiaUxlQ3cwbGJsUWVLcnJyOUk0T0hjMXhzVWRmTXpvWW55VzVrY2Z4WHFEVzJoT0RsK3FSVFYvaXYwc1FRQUFBQ0drSlhqV25NbTc1RnlCb3lqNEFKWkJ0SW5penZmNW40Y0luVEd3dHpsZUE4NHJNaE4rRVRuWVhEaXRRUWV2cnQ2UVp2elV6ckNzZVdMNnlXVDQ4N3o2bTBqeCs5OXlQY01aSitPRFFBQUFEU3phVk0xOTFsbC9FYXFoUXd4bG9KTFhFL3BhNnZ5bkYxUlVia2laZDZ5Z2dVY2pCU1ZUanpOa2xWS3gzWHlObDFiSHlLeG5KL0JKOGR0NENmeDlFbHNBd2NBQUVBVVpDendTMmxiZi9qY3JRNTltQnlHRDhycjE4QUIyUldWOGtMcVZMeGxCOXZ5Z2dZY1ZqSklzMlJXMjNUSFRub25WaEQ2WkluSmNUbUdaY2ozRElIMFNRQUFBSWlWRkcxOHFiVDVyNm5ya0FlQ0RmQkpNanBvdmMvQkFidVFXbkc2UVB5MzRKbEZCQW84V0xJSjltRmYxTTNEaEFvaDkrb0VIUTV0TWUwZFA1T0N4Z2FWRmpqT2RoRHpJNkhqdUxMUGpnWUFBQURFcnEzS1Q3YmJyblRzODJmQkdCUFN5WG9wMXgvZ2xmTDdIQnlRK1psQ0F0WEoxUXFOMUczb0ZPN1lidEdBZzduN1JYMlRhSzc5cm05Ri9TZWIxSWUyS3Uzbk5WTHpJWm5WK0V0MTBCTU5Odnk5VGdBQUFJQlV5TUl6bFpOeDBxNG5GSnBNeGlLTDRZRFYzQWlCaDNTdEpyZzV4OHRpb1lCT2k2UlU2bU8zdkdSUTMySGxkU2ZkVWhMQkJrbjNzK1NYUEtWZ3c2MGNUNElOQUFBQVNKS01IVDRyL1d5MnJnT3I0ZU8ycW4xSHNBR0xVakJYQXMvay9KSm1LYnpnOVdJeDNPSTdITmF0T2dSRUNLT3hNVTBVeHVObUNRQUFnRnkwVmZtaXFKc0RwVFhzbnBOaUtUNmNMMmpWMmZGZzg4dS81a1NsWlpXOXhmeDNqdTBPdVVlNUh4TlBma2xOS0Npbkx1Q3d3dll6OVVqMzQ5YUpGQjhDQUFBQXNpR0xsMVNuV0dJU1d6VW1ueEFWbVVkWnBkZytOY2E4NHd3Nm9XWWhiUGVlUlBEQkNlb3pSRWh0d0dFbGw4TFNFU0VIcGx2Y09BRUFBSkE5R2ZlcExNQXB3WkJSTzd2bDh5UlZyMCtKNjdZcWozSS9DRWhEVzVVMjRIQzYrakJGM2RoRmlNZWMzdkcwTG9oZEN6NDhsc0FJaGFaM281WlM1TlFISE16ZHd0SmF0OXRtZ1pVOWJuRThBU0FydHd3dUFHQTd1eENucUpzWHhwaVBDZy9WdDZKdXptU0NjSkJ0QzdXS3VyR1Q1cStZWE55S1hlRElTbHVWcitTKzhGZFJOM1lpL1QxWHdqMi9qREZITVUxS1MxdnZMRGlWSU1TbmpJUFR0bzd2SzFLMXB5ZUtnTU5LWjd1dDdaeDkwZEdxTE94TDBBZHVQR3VyOGl2SE1yaDlKVHVsVGhTMHdTY3R4L21sZ2pabzBHam92TElTOFE4NzZmUkRRVHV3ckVNV3o2aDBPMllTZVlRekpha3lHZ1Z0R0t5dHlrOHk1bnVzOEw1NTd1cUZaRHp3ZFgxeWNSdFpnSGNrejVTanlOTjAySUxobDNLK1UySDcrUmNKZlo1VU5ER1B2OXVxUE45Mjc1R0FoQTNVUGczYk1tOGFtWUQvbXNPOGlRUWhVZzVPMjN2OU9YTmcrU25hTnQ0U0NVWGR2T0tCN2xVMEJhRWpxZlZCT2lvQUFBQUFBQUFBeVlvNjRMQkNvUjNucm1Rclh6UzBCeHhJbndRQUFBQUFBQUFnZFVrRUhGWW9zRE5idEFXTUZRY2NTRWNGQUFBQUFBQUFJQXRKQlJ4V0NEeU1GL3NLZklVQmgraDJpUUFBQUFBQUFBREFIRWtHSEZZSVBBeVN4QXA4UlFHSGFIZUpBQUFBQUFBQUFNQWNTUWNjVmdnODlEcHBxL0pTWWJzbTBSQndvRTREQUFBQUFBQUFnSnhsRVhCWUtlckdwcmk1ME5HYXhUUnRWUjZrOXFFV0RqZ2N0bFg1ZmNIM0J3QUFBQUFBQUlERlpSVndXTWswOEpCMHFwK0ZBZzZmMjZwOHNjRDdBZ0FBQUFBQUFJQTZXUVljVm9xNnNTdjl2K2xvalQ4NXBQb0pIWEFnZlJJQUFBQUFBQUFBM0pWMXdHRWw0Y0JETnFsK1FnVWNDRFFBQUFBQUFBQUFRRDhDRGgxRjNkaVVRemRxR2pUZDI3WXF6Mk50L0JRQkFnN1VhUUFBQUFBQUFBQ0FMUWc0YkxCd0VlS3BraXdJUFlUSDgzWFZWdVVyVDY4TkFBQUFBQUFBQU1sNHdLbnN0MHFkVTlUTmIyUE1uc0ltM2tHcUgrZXlEZDRBQUFBQUFBQUF3QlRzY0Jpb3FCdWJUcWZVMWk0Q0RmOXh1Y09CWXdvQUFBQUFBQUFBNHhGd0dLbW9tMHRqekxHQ3BsQlRvTU5Gd0lGQUF3QUFBQUFBQUFCTVI4QmhvcUp1am93eFh4WjRhMm9LOUpnWmNOaHZxL0szdDhZQkFBQUFBQUFBUUFZSU9NeFUxTTFEWTh4TmdMZTZiYXZ5WVlEM2lkTEVnQU83UkFBQUFBQUFBQURBRVFJT0RybXNJOUJGcXAvZFJoNzdrN1lxTDVkcUt3QUFBQUFBQUFDazZBRm4xWjFWWU1CaGdXbFMvYmhGb0FFQUFBQUFBQUFBUEdHSGcwZEYzZGhhQ3hjVDNvR0o4WkYyN0hEZ2VBSUFBQUFBQUFDQVp3UWNBaGhSNStGelc1VXZvdi9BQzlnUWNDRFFBQUFBQUFBQUFBQ0JFSEFJcktnYm15SnBiKzFkS1FnOTAxckFnVlJVQUFBQUFBQUFBQkFZQVllRkZIWHp4aGp6bm9MUWJ0aEFEa0ViQUFBQUFBQUFBRmdPQVllQWJKQ2hyY3J6YkQ2d0owWGRIQmhqZnJLTEFRQUFBQUFBQUFCMCtCL25JWXlpYnI3YjNRdzVmRmFmcEJiR04xc1BvNmlibzNRL0tRQUFBQUFBQUFERWcyQkRBRkt2b1V6K2c0YlJMYnI5cGFnYmRvb0FBQUFBQUFBQXdNSUlObmdtQll6WEMwTmpnclZpMEN1dlpkY0lBQUFBQUFBQUFHQWgxR3p3Uk5MOTNLeS9Pa1docDlrUWFPaTZwVWcwQUFBQUFBQUFBQ3lEblEwZWJBbzBZQnBKUTdYTDNvQ0FCQUFBQUFBQUFBREFBNElOamhGb2NFdFNKQTFPUTJVRERuSU9BQUFBQUFBQUFBQ0JFR3h3cUtpYnh3UWEzQ25xNW5KaVllMGJPUmNBQUFBQUFBQUFnQUFJTmpoUzFNMkJNZVpIRWg5R2dhSnVYaGxqam1lMDVFZFJOeStTT1NBQUFBQUFBQUFBb0JqQkJnZGtGZjIzNkQrSUVoSzR1WERRbW85RjNad21jVkFBQUFBQUFBQUFRREdDRFROSmZRQjJORGdpeDlObDRPYWRwR01DQUFBQUFBQUFBSGhDc0dFR2lrRjc0ZU40SGt1aGFRQUFBQUFBQUFDQUJ3UWJKaUxRNEY1Uk42M0hseStMdXZtOTFHY0RBQUFBQUFBQWdKUVJiSmlPUUlORG5nTU5LM3VCM2djQUFBQUFBQUFBc2tLd1lRSW1yTjBLdmVPQTh3Y0FBQUFBQUFBQWJoRnNHSW1KYXJla2xzTGVBdS9iU2lvc0FBQUFBQUFBQU1CTUR6aUF3eEZvY0t1b20wdGJTMkhCSnR3VWRmT2tyY3FmQzdZQkFBQUFBQUFBQUhZcTZ1YklHTFA2ODNURUVmdGxqTEdMdnI4YVl6NzVtZzh0MnBiNTh5RmNCUnJhcWl5OE56WUNSZDI4TXNaY0tHbnBZVnVWM3hXMEF3QUFBQUFBQUFEcy9PbGpZOHk1TWVhNXg2TmhneENuYlZWZXVuZ3hnZzBEU0UwQko2bCtDRGI4T1o0SHhwaHZDcHJTZGVMcVN3VUFBQUFBQUFBQVkwbmFkN3NvK3RGQ0IyL1dIQ25CaGgya3BvQ3pWRCs1Qnh2a0MzT2pvQ2w5M3JaVmVhNnZXUUFBQUFBQUFBQlNKZW1SdmlqNmVGZHRWYjRhKzBzRUc3WndIV2d3QkJ0aXFIc3g2WXNFQUFBQUFBQUFBR01vWDVodG5iVlZlVHIwaHdrMmJDREZpNDlkdjI3T3dZYUlDbXhmdDFWNXBLQWRBQUFBQUFBQUFCSlUxSTNOc1BKNjRpZHJKTjNTVHluNmJIMXZxOUtXQTFqdGxMQnNNT05nUWtIcE80Yk9hUk5zNk9HemVIR3V3WWFJQWcwclRWdVZCenFhQWdBQUFBQUFBQ0FWSTJzRTN4cGozcmlzTnlzMWRVOUhGcDgrYkt2eSs5YlhKZGh3bCsvaXhUa0dHMXdXMkE3c3RxM0toeEcyR3dBQUFBQUFBSUJDSXhabHYyeXI4cFB2VHlDcG5ENE4zUG13TmVCQXNLR2pxSnZIeHBnZlB0OGp0MkNEajdvWGdSRndBQUFBQUFBQUFERGJ3RUREazdZcWZ5NXh0SXU2K1RvZzZMQXg0UEEvUDgyS2owUnd2QVlhY2lOMUwySU9ORmg3c2pNREFBQUFBQUFBQUNZcDZtWlhBT0d0WGFpK1ZLREIvTGRRM3RaMjJOL3hZeHV6QWhGcytFZHoxZS9vU04wTDV3VzJGN0lYWWMwSkFBQUFBQUFBQUFvVWRmUEdHUE5vUzB2MjI2bzgxOUJXVzJSYXN2TTBtMzVtMDF3cHdZWTRpeGVySm5VdnZCVFlYaExYQ1FBQUFBQUFBSUFKM20vNkZkbk5vQzZ6U2x1VmRvNzNhdE8vUzFhYk83SVBOcEFpeHkxSlIrV3R3UGJTQ0RnQUFBQUFBQUFBR0dyYi9MUDIrcjV0VmRyc05kY2IvdmxlVnB1c2d3MVN2SGhQUVZOU2tudzZLZ0lPQUFBQUFBQUFBSGFSaGRtYjVwOTMxVVpRUWVvNDNQYTFaYjBPUmJiQmhxSnVQaVZRdkZpVm5DYmhDVGdBQUFBQUFBQUEyR0ZUc2VjemphbVRObW1yOHVHR2Y3cFRoK0xCWWkxY2tCVGtlSjdqWi9jbHg4bDMrY3o3TWQwWUFBQUFBQUFBQUFUVHU2dWhyY3JUb1EyUStyaDJzdjlJL2xoUFIzNEFXK3o1MDVqMzdYRm1qSG5YMDc1TFNiZGtpcmJOYTQ1WVRzNWlOUVcwNStHYVF2S081WnlPaW9BREFBQUFBQUFBZ0wrS3VqazN4cnp1T1NMUDJxcjhPdlJJZVZya1Bhb051OXF5bXZQT0tvMVM2c1dMbDBEZGl6OXU1Tm9DQUFBQUFBQUFBTE1oMEdDbVRQSjc4RVhtZGNkNjIvZnpSZDA4TmhuV2JFaStlSEZJZG9zTWRTLytJdUFBQUFBQUFBQUFZSnZleWZxRmxGTFhlTEMyS3M4My9PeWZ2ODhtMkVCQlg3ZUt1ckY1dUk1VCtrd09FSEFBQUFBQUFBQUFNaWR6cC9kc21heGZ5cFM2eHI5Ni91N1A2MlFSYkNEUTRKYlV2YmhJNlRNNVJNQUJBQUFBQUFBQXlOdWJXRDc5aEhSS0d6OWI4c0dHb201K0ttaEdNcWg3TVFnQkJ3QUFBQUFBQUNCZmZhbm5QeWc5R3FQUzVMZFYyWnQ2eWRadGVPQ3NTUXBKVFlGSEtYL0dCVkQzWWhnYmNOaHZxL0ozREkwRkFBQUFBQUFBNE5XcHB4ZC90dUh2ajR3eDd3S2UwbGZKQmh1b0tlQWU2YWhHSStBQUFBQUFBQUFBd1BpYUkyeXI4dXVHZjdKL2Z5cEZvS2ZVWnRpbTZka1JjWlJrR2lWcUNyaEhvR0V5VWlvQkFBQUFBQUFBbVNqcTVralRKMjJyOHNXdW41blE1cjVVU2srVEN6WlFVOEM5b201WW1UOFBBUWNBQUFBQUFBQWdENnFDRFo3MDdxWkljV2NETlFVY2ttcmtlOGw4b09VUWNBQUFBQUFBQUFEUzF6Y0gyS1QwcVRlbGJrb3EyRUNxSDdla3dQYW9hdVRZaW9BREFBQUFBQUFBa0xhRG5rLzNNNGR6bmt5d2dWUS9ibEZnMnh0MjNnQUFBQUFBQUFEcDZsdHMvSDJwVHp0dzhiT1R1ZlVrZ2cyaytuR0xBdHQrc1FNSEFBQUFBQUFBU0phYVRER3lvSHpuNHVlMktwMEVReDY0ZUpFbEZYVnpTcW9mZHlpd0hZWU5PTFJWV2VUd1dRRUFBQUFBQUlETTlkWTRjRUhUd3Vhb2R6YklDdngzQ3BxU0V0TDhCTUlPQndBQUFBQUFBQUNwaURiWXdBcDg5NWo4RG85akRnQUFBQUFBQUdCQmg2N2VPdWFkRGF6QWQ0aEo3K1Z3N0FFQUFBQUFBSUNrSFNqOWNMZXU2aldZV0dzMk1EbnJWbEUzVHFxTll6cDdEdHFxSEZJWkhnQ0FqV1RuNTZvVCsxaitXQS9YT3JkUEZSekZhMlBNVC9uenRhMUtiemxNZ1pSSmF0bFZQL0tvODFHN2YyOFVmTzl2alRIZk8vbUsrZDR2cUtpYkk3bGVWczhIMzlmSHRmd3Y1eDhJUkw3bnEvN2c2dnNlcXVicHZlKzhNZWEzeXdsTklFSWE1LzErdFZYNWVNRFBEVmEwYlZ6ejlqSXh2cWVnS1pOb0t3cGMxTTEzQ215cmNVdkF3WitpYnV6Tjg4ZkN6WGpaVnVXbmhkdmdWY3pIdWFnYk8rSDV5RStUSmp0cnEvSlVXWnVDS3VybXE1S0o4UzR2NTBXK1A0ODdFNFNyU1VOdG56K2t6OGFZODFRbXBHVFEvMFZCVS9EUGRWdVZSMHNkRDdrbVRPZjdudnYzM2dZa0xvMHhuNWlJbnErb20xZkdtRmNSWGsvWE1qRVpWVUNpcUpzWHhwaVBDcHFDZno2M1Zma2k1ZU1oejVFWDhsMlBkYTdzVnI3em4rVCt2OWlDV0NWand2MGxqNEV2c2locTZTdzF6aWZXTjlrd2pwMDhqdlN3OFA2WDdYZTJWZmx6em92MHRTdXFZRU5STi9iRzgxeEJVeWJURkd3bzZzWjI1SThWTkFYL05HMVZhdDFXRlRWRk82S1M3RGlzeEhxY2xRZXlzd3hFeWtwZHRiV1p4ajdQcFhQOUtmUEFnU3RYeHBnM01kNUwyWjJybHBmN3JFd0FuYk93eDRuc2crKzd5RVQzbXd5ZU0vWVpjS2t0Q0tGa0VnMzlGZzBxdXlRTFUwNHptOGU1bHUvOHBlODMwclRJU2R0Q1pSY1U5WU9Eekx0dHVKNG0zNDhHSEwrelR0QnU1OXlHcTJ1c3IxM1JwRkdTVlJsUkJ4bzBrZU5Kb0VHZjBnYUIycXA4bGZ1QmNFa21MYlU0bFlGZ2NqcXJNelY0SThkNktNM0JoajI3Q3kzRFFLVGFRTU5FVEVDNFkvc3Z4MFhkR0ZrSjl5cUdYV1BTOTRKT3Z1Ny83R0p4NTExUk4rL2sxUnI1M21lZGlrTW10ODh6SE5OMW53RXJ3U1lqdDBpeWY1K0lxQU53UmQzWWErdTlncVlzeFo2L3AwWGRYSFRlLzdNOEIxd3ZQR0ZSVUI1Q0xRTHBDelo0dThZNml6SWVEZ25zRkhWek9uY2hoL1JGN29taVFMUk1GRjRNK0ZGd1BGTndMTHRPNEk2bVZlSHNYQWxqYk9CRCsvYnFVbFl5WllGN0lFYXdrOFFmYllmYWJudFgvajNKNWp0TW5MbzRBQUFnQUVsRVFWUU1kUUg0MU5oSmdtL3l2Yzh1MVpKOVJzb2t3ZzJMeC82eWt6Y1hjazJzL3B3SGJnUGZlVGhqRnlpc3J1WE1BdzJiMklYSU4zS01TRVVOclpic281d04rSmwzQTM1bWw5NTVGUFhCQnJseHBMYTZjVEVjejJnY3N3SVNDQ2VTMVpGTDE4SUlTZnZreVVzRmJjQjlOci91RHhsNDhnd0Y4dkMwTTdtY2JFRFBMaGJyVER3U1lCam10Und6MG04aEduWTNzM3pQV1J3NkhMdUhvZEtTNmY2RzdsaVFkTkp6OUFVYmJtUFkyWkRTaldOZlFSdTRFY2ZqUWxuNkh5QjFUN1Ivdmh4VzdzUXdLWkI2b2ZkRVhCQjBBTEx6STdXZ2c5MGhJeE9QTEJhYjdoMWpLbWhtKy9kMndrKys2OVQ0bWNEQmhDbVFvaUZ6MEhzemQrUDJsVHY0cERyWWtGZ1J2Y1dMd2laMlBIOHBhRU1JMzlnV0NJVFJWdVZQeWYrdTJjOE1MZ2NYMnpsOVVoK1V3aDBYYkxFSHNtT0REbEUvTDJYeXNhWHVoek9oVXlvQmc4aTk2a1p4N2JoWWNQd1FqVkNMb1dRTyt2T0FIM1hkMTdoVUcyeXcyOGNVTk1PVkp3UWFuTEtWNCsyS3BhdUVQdE0yN0VZQkFtbXJVdnVFNUY3S2s2WVI3R3E0bGFBVTRuTkRMUkFnSzQ4azBLaTlKdE05VW9lQy9yOWJGSDJGS3JiUEszTTBqemd6UUhhQ2pYbmJxaHpVRHlycVp2VE8vVTN6RWpaOWxNcGdnd3dHVTlrK2RyajB4RVJpVzhyc1JNK2ZiYkJ0VmRwbzRNbnlUZkl2c1dBUm9OMjE4dmFsRkl4ZnAzcFhRd1RCS0d4M3pQTVV5TTdIV0JheGRYWXpNREVPSkV6bVo3VHY1QVhneG9lZVZ3a2RaRHdjOERQUEp5eHEzTGhyVUYyd1FWYWZwRkwwNm5EcG9xUFN1VTVtUzluNlJFOWJsWmNEdnpqUlk0SUVDS090eWprNUMwTkljZ1ZVQkxuMXRRZWhNQkJwbFlEc2xOcjcwVElHWmpjRGtMQlZvWGRTL2dCWjZkM0ZFTEsrbE14TEQwbEZQN1lmMGpkMy95Y3R0YXBnZ3d6OFBpcG9pZ3NhQWcwcDdSQ3hYNUJpdzk5L1YxSjgyenNLSHdIQm5HaysxTEhub3Q3Z1FtV3JSQVJCS0l4elE4QUJ5SXZXZ0VOUk4rY0pqWUVCOUpCRk5SUjZCekt6SmFWKzBQbGlTVVcvVTFFM2J3YiszS2JYKy9QNzJuWTJwTEthUTBPZzRWVkNPMFEyQmhvNi8vNTcxODhrWWkreGVpYUFTbTFWYXE4ZGtOVHVoZ2gyTmZSdGYwWDhDRGdBbWRFV2NKREZZYThWTkFXQUovSTlWNzJvQm9CWGZic0tsdGpoOUhMQXo3d2YrRnE5ODVLU2ZVWlBzQ0doRkRFYUFnMEhpVDNNQnU5YXlDVGdVTW9LS0FCK0RYa1lMMFlLU0taQys2NkdRU3M4RUNYU2xnQ1owVEx1VEcxeEdJRDdKTkRBOXh6SVcrOE8rZERaQ3RxcS9EUWtnOE91RkUreVdLc3ZXSEs3K244ZVRHMmtTd21saHRFUWFIaVkyUGE4d3kzYmpuclpnSU5jVXlublFueHRxOFhiS3U4SzJnSWt5VDZNaTdyUi9OR1NLQ0JaMUkzMjlFUW5DdG9Bait6RVl5YUxGUUFJdTFPNHJjcURwWTVIZ292REFLd3A2dWFVUUFPQXRpcC9icGhYZUdUbmNJZk9lYm9ZcjBnR2g3bFpIRFl0MXZvN3JsOThaNE9kTUUxa1V2aGs2VUNEU0dtRjNzdXB4MVFLU2Q4TytOR1lmU0g5QStEZEU4MkhPSkhkRFY4VXRHR2oxVlpRcEkwVWhVQjJ5b1ZUK0pHN0hVaVlCQlRmY1k0QmlFMEwyS0thdzVVZ2FxL3UvTzJpd1FicDREMWZzZzJPbkdpWWpFZ29GWlYxSmx0OEpwT0FnK3BseVE2US9nSHd5SzVDVUI2NGpIcDNRd1M3R2xRSG0rQlVLUk1EQVBLeHlNNkNoSGIxQTlpTWdDS0F2N2JOR2NleTZFa1dPMjhLb2o3ci9zZGl3WWFFdG80U2FIRHZzNnZpckxJOStyT3l6K2RVWXVjZVVFY0NsMnBKTHRoWWFkN1ZjQ3ZCSnVTRGlRRWdNNkVuL2lYSW5uS3FWeUI3ak04QmJQQnN3OStYMnNmMEVtall1Tmg1UGNYN2tqc2JVaGpRYVFrMHBMUTZwbW1yLzdOM2IxZFNHMnZEZ0tXOWZBOUVBRVFnaUFDSUFIemRGMEFFNEFpQUNJd2pnTG5RdFNFQ1F3U2dDRHhFQUJPQjlpcGNZNC94SFBxZ1ZyOVZlcDYxNXZmKzlyODlVeTExdDZSNlQ5MmpLWDloL24xSFUvN09hR1JJd2Q1OURIeUlpK3dGVzBCVnc2V0RzYWhUNGNFN1lIUFhyaHFFT0xIUXJRT0IzZVEyNFFEL2tUZmtMK3FhOERqcTk4ZFZnWWFtYVc3OCtGOGNKTmhRU2FUM1ZaQkF3NGVLc21OTzlqV29iVngxVHlvZjhubk5CZ25zejdqcVFtK01GL3I1ajd6aE1xdzdxSXZxR09RSXkvUG5ISy80d0RNaWdEM0xHM0kxdEFrSDl1U0tyZ2tQb3lVU3QvM3cvSXBBd3kvblBUZlBIbXlvSkFQN2FLbzJQN3RvKytGMTZmMjZ6OXAzcTVJY0hLbzU0UEM0Z0V4aEtObHZnZGRlMUFicHpGbWtHOXRYNEpzeUNON0Q4c3gwRDExREMySGdZdVlwQXV2NFR5WEFHU21SZUl5UW9KRDM3Mys5NUgrU0V2UmVuL2YvTVd1d0lRKzlLRDBML3lobnlSOVVmdU05Ty9RNnBqS3V1bmFtdjVNMkVPN084cUlPNDQrY1VRRk1iRngxenlNZjA3WWZEaDRFMzhBc1dhUmJxcnJ0SG10UjNRRExzOWRxT3dQb29XNlMvb0IxNVVxQXEvWWwzK1NndzZSdDV0ZlI5c054N2toMDJmNzlwWjFwWmdzMjVOS0xicTYvdHljZmd3UWFhaG11L2QxY2dZWXpmKzl6NVFFSEdSV3dQNUdybzE0RVdNT1ZDcWhxME9ZQzdVNkFxWDF3UktGcTVyRUFhOXRnWC9MM0hIUjR0OC9uNkxSbm4vOU9Dakxjdk9KL1BselZtV2FXWUVQZUhMK3M5S0lFUTRTZTNUbHJ2WWJoMnFjdUt4L2FtOW9ERGdaR3czNUVtTlZ6bVJ6WWorNXo0UFhWM0dxUHpXaDNBZ3VUWitIdFN5MHo5b0FmU0ZBQXRwSDNKZGZkRTAzellQNDhEUWlrdHEvYlZsU2xQZnJVRmVHMGdpRUhHTmJkcy85dG5aYkRQMjJ6c0UxVXNqaytCT3JmWEZQVyt0MUREdUJNSCt5MkgyNVVXZ253ZldDMERGM1lpOXVCMndDbG00UnoreVpHa084SndtNjRSQThtQWJCWGU1bUZkNGdXQ01Dc0pDZ0FXOGw3b20xT2VOamtQdVJ4bnRzNjU0Ry9zZTRlN2h5VkRhVnY1RjdhaDJwT09kcFVpNmM1aW5kUStZTnlrT3FLR1R6V0h4YW1ONjY2NDNSdGlIcG9nMmRYSFFkWXcwVnFicS9IRnRwK0NCdTRBL1pqVHkwS1NwcXBCR3dnZW50UW9BeTVrMDdVdmNsWHFmMzlKc25pZXcwMjFMQTVmbFVmcXJsVTFoYm5LRkwyYU9VQmg1cGFia0Vra1I4c1FtWlhCYTlxT0lrUUFDZWNaMDRKTE00K2dveWx6eTBFTHViK0VaaEUycHZNTTIzVC91U1hBRWYxbHh4azJEaHBZbS9CaHJZZml2L1NuWHR3OFVWU0g2MksrbndPRVZ2NzFCeHdxS3dpQmtMSTN4bXoxaXh1WXR2K2pYc1d1YXBCVmhvQVRlNkpUSDArT3Fmc2lYa3N3S1J5ME9GVzNwT2VlNmJnVVE0d3BKK3RFekQyRW14SWd5Wkt6K0FJRkdqNHNNWWs4RktFYVVsMW5zb0REdnNjZUFlTEZQbjdyR21hUHdLczRVZFJIOGErSEhKK0VMRUZEZHdCaGREU05Bd3ptWmljZG92QXZxV3VNR2MyLzlNKzlTOFRCOUNQbXFaNWNPWnZUSkljUHZtQTZIeEQ5V0xxM3p1blFJR0cxL3NhVkhZSVVWcFNYU1p0T0ZVNk5QcGUrbXhxRXdLVE84ckRtY0pKbTZUanFnc1JhTXdWZWlHbHJKR29heU9FbEVBajRBQUxrZ1k2ajZ2dTNVU3YySERvd3p1SjFNS1hxbWkzR01mUjBnOEF5NUNyRFM0TWRGNlFLSFdjNTA3T1p2SmdRd1U5NGtOa3R1Y0JuOVZjdktJRWNOWlJjY0FoZlRhTE9ROVFnaFQ1Yi9zaFpMQWhWemRFK2N4SHJkQmI2b1BKZ3ozKzd2dG4vbm1uZ3ZZQzFTUjljS201UzlUbmRyVG56TzZ6bi9zYVBqUFBtNmFaS3RoUVdyRHlTMzd0bjRPM1Axekg3SnNyaEhYWHFibFN5cFQra0QvM1JYMXVvaVJYUVFSUlBnK1RCaHNxNkExL04wSXJoVndkRW5MQTV6WktDalNjcWpYZ2tBYU5sMUJoQW9WNUduZ284NjFEUDJnSHIyb0lOME5vRG51K0NiM3dkNmRzNFZ3cFlGanE0WDI4N0Z3dHlQRkNNcDZQRC9pNWY1SXo4RW9LUEU0Wk1Da2grUExMTG4yWkNlbW9nbURSRkQ1UFdLWDBMN2wxZUtsODVvRzltaXpZVU1GQTZLY1JXc3kwL1hDOWd1cVFzNHFkZ1ZCcHdPRmF1akhhWnBvOGNMNjBVZFgyUTlRQThaOEJxaHVpVmpYOEVtQU5pNUlmK0w4LzlPY1MzNGl6UlpiaWczc0I1cENET2Q4RE9qbndVRTFDVlFWKzN0ZEdMQWYzVnJiMzNwWFdPdnlwZG1MQVhDWVpFTjMydy9QQ3M5U09BbjN4MXJTeEhhSlNaQmVWRG8xK2tZTmF3SFRDbG1lbjZvWUQvdTJ3RDdveXVnNHJiWUxreXNkOXRuU2FoQ0hSTUkzVElZZE4wN3h5U0E4ckQ0RVVhSUQ2UGMyZmQ0RUdZRFk3Qnh2eXB1V3ZCWit5SVVvYmhRcmFVSjBWb2xKa0NqbmdVRnVmeDlybVVjQkI1ZSs3azZCbjRaRGZ4VkhiUjRUZjRGNktNMEdIeUF4NGhRbmxxcHJReVR5NXJXMlZTbXh4QzVFVTh2MXdJc2dBSE1vVWxRMGxiMXFtTCtBUUY0clVTei9BTXFieVcyMFh0YnlSV0ZYQW9lMEgyVXd3cllOVkVGemgyaUdxbVlKWE5XZ3RFRXp3elMvQkJwaFlTdWJ4dVQrSW55dDlYVENuNkcwSTM1dlRDQnpTVHNHRzB1YzBSUGtDenNleHBLRnBsMGtYdHVkeGw3ZTlISENvNlFiOW9YWktNSjFjQmZVbDZDRTl4SkRBcUZVTnRiWEdxMGJnamNlb2MwZWdCbEdUZWFwc242WjFFa3ppWWVERG1QWmpKRWtBQjdWMXNLSHRoMGNsejJtSThrQ2JzOHRMbm5keDFsRDdoUzNmb0Q4TnNKU3BhS2NFRXhwWG5lcUd2NjV0VWF2YnZwUStTMmdCRE82R0JjbkpQQkVEOVZFRDVydDRYKzdTZ1RXY0NEUUFFZXhTMmZCN3dXY3dSQVpOMnc4dmcwZkZOeEdtSmRXKzVSWlJSN1c4bnNDYmdsQ3FxTjhQYzFZalBwN3hiNjB0Y0RDSXpPQnVXQjdmemJQeC9Rb1Ywem9KaUdLcllFUGhnNHhmUlJoY25DdERYaHg2SFZOWjJvVXREeFVmQWl4bENvKzFVNExwNU8rSGlHWnBCUk00Z0ZsTmtIZ0JmbHY2QVlBRk9uSFM5OHU4SXRoZDJ3OVI3L01mQkZnRHdIY2JCeHR5Tm42cFVwdWZnNisvN1ljN2hWZUcvRXZ3NFc1N2t5czVvdlpuMzVSMlNqQ3RrTzNXMm42WVkzWkQxS3FHcUErSC9LRFcyVS9BcFh4SEF5VUkrVjBsbUFoRXNrMWxRN0haK0JIYS9PUU04aytIWHNlRUZqMW9zNmF5NzhCWkdsQ2MzRzR0b3IxV053Uk9TSGdWWUEwQVhNRGdZcUFRRWVlNXFHb0FRdGtvMkZCeSs2UkEyZmMxWlpEZk1HaXpxc3FPTndIV0FEVUplZVBmOXNNK001OUNKaVJFcUdwa1k2RXFCOXQrdUI5Z0dRQUEvNktxQVlobTdXQkQydzhsbDdTSEdBaGRtYnNDRGYrb0plQ3c1MDFJV0pUQU4vNTd5Y2dLWE5VZzI2dE1VYXVEZ1AweHQyR1B6R2lES3BsekJZU3pTV1hEcjRXZXZxTUlBNkVyOHpUU01jMHpNQ0s0SFdRZHU0aFlGZ29sQzlscWJrK0J4YWhWRFlLb1pYTGVZSG0wVXRvdkZWcFFHWE91Z0lqV0NqYk1ORkJ5SDA0TWhKemNVYVJlNUhuT3dLTUFTMGtYK3VPb1EyRTMwZmFEaWhXWVNLNEFpemhJZnRMQVl1Q1pMNHVlSzFTeWdFRWltM1N3ZnhMRTlzdW1KT3lnN1ljUSt3NEEwVjBaYk1qbGxuc2RLTGt2NDZwVEtqcXRJVkx3SmxjMGhKb3prQU14SHdNc1pSZlhsRm5EZEtJT2ttLzdZY3JBY2NTWkwxKzArd01vaW1ERGZxbGdodDFFQ3phOEQ3QUdnUDlZcDdLaDFJSEc1alJNSzFXSlJHbFhsRGJKMHViZHB3QkwrWTl4MWQydm9PZHNUWVBNSVlLamdHZmg4UlMvSkdwVlE5UWdEd0FYRW16WU04UHVZU2ZSUGordkE2d0I0RDh1RFRZVWZEUHkwWnlHYVVXcUVzbFo5MzhHV01xRmFxaXF5UUVkWUFKUlcvcE5WTjBRc2FxaDlBb3pnTVZSalRhTFB4YndHbUZmUW5YOE1KY01pT3FxeW9ZaWIwWnlaam5USGM4MjJMRXNKZXUrOUY3aG9RTTZVS0JmQWk1NXArcUdxTDFyM1FjQXdQbmFmcENVQndEc3pZWEJoc0RESHE5aUdPU0VvZ1VhMm40WUF5eGpMVGs3NjFVQlM3MlEyUTB3blhIVmhTeDFidnZoNVE3Lyt1OFRMbVVxUlgvdkFsQ1ZMd0ZmVERmeDNDWUFnTDlkVnRrUXNTM0NWZDRydjUxVXFNQk4ydy9GbmR0eDFiMHNmSDZEekNlWTFvT0F4L1BGTnY5UzFGYUwrWHNYQUNLSWVpLzlXSVVERk0xd2FDQ3NjNE1OVWRzaVhHVmNkVVd1TzZpN2tRSTNPZEJ3TGNCU05sYjQvSVpRZlNtaGRGRjdxMjVaelJpeDFXTEVZQTRBeXhWNVF6OVZPSXh0UDl3SnNCWmdNKzhjTHlDcWl5b2JJclpGdU1ydDJNc3J5dE5JQTdaejFrMlJnWVl6N29aWnlZYVVXY1BrSXJiNzI2aWFNWEJWZzBGNUFFUlN3b2JncHh4MHVCVmdMY0I2QkJ1QXNQNFRiQ2owSm1NWVY5MXhnSFhVNEdoY2RXRTJsL05HZHhkZ0tUdkp3WnVQaFM1L3B3R3l3TC9scXJGd1BadzNyRzZJV05WZ1poUDdKSkFGZXhZMWtMMkxTQWxjYS9nekJ4MUN6cGlDUTRyMi9hUjlPQkRaZVpVTnhmVnVIRmVkMHM5cGZCeFhYWmpCNEhuanE1cU43bkhWRmZzQUpkTUpwald1dW9pZnFiV3FHNEorSDN6eDBBVlFQUGViTVR6TFFZZXgxUGJLc0FlK253RFdkRjZ3b2JSMk5hOENyS0VHWHlKdGh1ZmVvU1VPS2I5S3FlMlVsR25DOU1JTmRsc3phK3ZQR1pheWthREJHM1pRWTRZemNDVUpaUEg4bm9NT255VWZzWERlL3dCcitsZXdvZTJINTZVZHVISFZ2UXl3ak5LZFJOcW9hZnNoRFZUK0ZHQXBrOHVsMU9IYXA2eWgrRlpXRU0yNDZpSm1DMTdhSGlub1JrT3BMZXE0WExSMkJkb293ZjdWbWtWZnczV3FPOU5teVR3M2xraXdBV0JOUDFZMi9GcllnWHNRWUEzRkcxZmQ5V0N2NFd1QU5leE5xUm00T1FnRVRDdGNkZDRWR2VYaFdpMlczS0tPUzJuZEFjdHpzOUpYWE5zTWhNZG4yaXlGYWNFTGV5YllBTENtODlvb0ZVT1cyZTdHVmRkR1drKzZhUTJ3akRrY0ZiaG1WVVF3c2FEVmVlZFdOK1NBWTdSV2kxb3Axa3RGSFZDRmNkWFYzSTcwVFE0NkhPYzJ1QURBd3YxMCt2SUxiS0drcW1GM055SXRaa0dCaHZUUThhVHRoOUtHWHo5cm1xYTRWbXNCM1Z2U2U1MjFQTGlxZmRIY1VydWtjZFVkLy9CbmYveS9EMDRyUmRqYXJhWE54WkNrRkp0QnhNVkxWU21mMm41SXIrTjkwRmFSUzNJbm40dkZtT0U3L2w2Z1k2bUZLQkRhVDJjV1YxUUxKUThNTzdzOXJycHZVUmJUOWtPWXRjd29aZVMrV015ckJjNlZybWNCSHdqVEVPaS9LOStDVmpWSU9xaFUydysxdFJ5SjZISCtXWXpUNzlsb1ZiMzhyZlk1QUVjTCtzdzlQSk5ZODBwaXdFR1UxaDU3Wi9rNy9pUmdpMmlBeFNtMWpkTFRBR3NvMmQxek1sWVBwdTJIendFM3NmYk9qVGR3UnFoS3MrYS93NkFqVmpWSU9xalhzNlVmQVBaSGovbXdvajBMVEowNXZOVHE0QmU1emRJMzFTdk00Tm9QOTYrMWNnOE1oUFk5MkZEYUYvSzQ2bXJQZk5tbnArT3FDelBncysySGR3dnZ5MXppN0FaZ1lyblM3RXV3NDNyMldoRnRFK2gyZ0RXd0IwR3JHcGJWaTZKK2hud0dFN1RDZWRMTnZFZ1Y1UWVTN2lOK3o0R0h6N2xpRXZaQlFCbmd3RTRyRzByS3RQREF0NzJqU0lHYXZLSHdNTUJTRGliTmJpaHB2VXZyN3d4ekdsZGR0QTJ3bEIxMlBRMTlETENXczA0aVZlY3huYno1RkxHcW9lYmhybkJRdWRJa1lvWHpQajczci9id08wdVVFczIrNXNDREpFSUFxTXhwc0tHa2NuV2JuZHNaSW0xczV3Y0xiUklBL2kzYXdMZmpQUFF4REwxNDY1UUREVitEdmpqdENtQVAybjY0MHpUTm00akhkaCtWNEZxb251dHhEanFNV3B6QjJ0eVhBS0VWTjdOQkNlcFdVaGJvblNpTGlmeGdjU0MvTFBKVkEvOHhycnBvQWZYYWUyZ1RRSzZhaXhwb01COEU5aUJYT0g5YTRMRjFIYnZZbXh4ME9GNUkzMzBBcUZKcHdRWXRsTFlRS1FzMFp5NHU4Y0hpUXVPcWk5aWZHamdjYlJZdUVEQVl3dzV5bTY2VVJQS0g0d2pMa0lLTGFVTjVxUlhPcm1OclNSV1ZmK2JBZytja0FDak1UNFd0dDZUWkVpR01xNjROdHFTd21Zc0FFYVEyQzIwL3ZIQXkva01RcGdJNTZlQ2xWb3F3SERsTHZhUlpiZS8zL1B1UFV2dWdQZitOV2p4cit5RmRMNzQwVFhOSGx3TUFpTytua2dhK0ttUGZUTFJBUTg1aUF1QnFEMlI3LzV0ZTEyWEo5NWQzOHMvOWFMTS9OdkJiTVN1RkE4b0JoVnY1ODU1KzdoVjhQdmFhVFovbTZMWDlJTml3bVp0NXFIVDZsMjZQcSs2NG9MVUR3S0w4Wk9CeXRXNUVlbUVDRGRXWWZGZ2U4RjhwdUo0ZnFQbkx6NDdEZEZ5VE55TElSUTFlcUpoYjMwd0picmRUcTZBWi9rNk4vc3ozU0RkVU9nQkFQUDhUYktqUzNVZzNYcmtmTXhWd1F3K3p1dTF3LzJWY2RlOGlySVBsY2QwRDlpRm41aDg1dUR2NTZqa1RBT0w1WCtFbHJ2elgwM0hWaGNrK2Ivc2hyZVZhZ0tXRWxmdFhBL3hMM29nNGNWUUVYVGlZTHc0OUxNNXNyZE5TT3lYWCtaMWRNMGlhcGRGZUhJanVmd1dkb1k4QjFoRGQwYmpxM2taWlk5c1BhUzFkZ0tWRVovQTVjSzV4MVMwOUdIbWlMek1IOU1qQmgyVVpWOTJzOStXdTg1TjVwa1VnQU1SUVVyQ0J5dzA1T3lhRXRoL1NqYnJCWit2UlF4ZTR6R0tEN1RaaE9LUklsYUpBdmNaVjF6cTkwOGhWRG1HZWlRRmdpVW9LTm1qM2RMRXY0NnE3RTJVeGJUK2tPU0MvQmxnS1FQSEdWYmZVMlVvcUdqa2s3ejlZbnFlSGVzVTU0S0NsMGpUZXRQMWcxaE1BSElqS2h2S2xGaE8zb3J5S3RoOVMwT09QQUVzcGdzd2JZRTJ2bG5hZ0ZoeGtJUUR2UDFpZVE3ZWp6ZFY4QXAzVGVKaG5Cd0lBTXhOc0tGeWtGaE41MFBHbkFFc3B5WnVDMW5vVVlBMndTT09xZTdtdzF6M2JnRTQ0aDhIUXNEd2g3bk56b1BOQmdLWFVvQk53b0VhNWt3UkFXRVVGRzlwK01LanZqSUQ5UGI4R1dFTXhjbkNtSkdHR2o4TkMvYnlVbHozM2dFNzQ0ZjBYcG1JVW1FZWsyWGZqcXZ1UW4vTUVQbmNuNEFBQU15dXRzc0ZtNXo5dVJGbElrNGR4QlZoR2FZNUxXbTk2OEFtd0RGaXNjZFV0cGYvd3dYcG1neFltc0VnaFd4WG13T2Z0QUVzcFhRbzRTR0lBZ0ptVUZteTRGbUFORWR3ZFY5MjNLSXNSYU5oY3JtcndmZ1kyVmYybXc2Rjdack5zWmpYQThrUnVWVGl1dXVOYzVhQzEwbTUrTGJDcUhBQ0tWTnpNaHJZZmxyNEo4V0JjZFdGS1FkdCtDQlAwS0V4UlZRMUFER25Ub1dtYWs0cFBod3hPRHVtdW93K0xFNnBhL0NKbldpdmRydncrWUorMC9BV0FHZnl2d0tHdmp3T3M0VkIraWRUS0p2ZS9sSjIvb1R6UXFiVGpGcks4SEpab1hIVzFadWFkNUdBS0hNTDdTTWtjd0N4K2lWUXR2bzVjNlhBOUJ4NUtlNDQvdUxZZlhpLzhFQURBM3YydnhEa0liVCtFTFhYZG82TngxWVc1T2NvVkpsMkFwWlRvajlMV0hMbThIQmFxeHI3eWh2SnlLQ25ROWNqUmgwVVpJajFiYlNNTnRjNUJoMVNkTVpUM0NnN2kyUUpmTS9YUkVnd0k3WCtGRG4xOUVXQU5jMG8zdzAraUxLYnRoeWNMcnpEWld0c1BTeG53Q3V4UmhYM2xoOUt5UzZsSHhkVkN3UG5TTmVkT0xjY21YVC9UNjhtQmg3dmFMRjJ1N1ljUzl6L2dyR3ErdjRBNkZUZXo0ZFNDYmhKT0l0ME10LzJRMXZJbXdGS0trNGVTUFN4dzZUS2xJS1pxMnB2VnRPbERVVTd5NWh5d0hGVUZHbjZVMnNHZGFiUDBOTmJxd3JpMzlBTUF4SmYzM3FxUjI0bEg4Y1ZIWUw5T2d3MGx0bU5ZeEUxQ3BHeTd2Rm4rS2NCU1NsWHFVREt0SlNDZ2l0cWI2VG5OSVF3cUdtQnhqcFlVM0I1WDNkc1VkTWlCaDk4Q0xDbU1oYlpscGg3dVgvWW4wdDZvODd3LzVnVHUyV213SVV5TG5rMjAvVENXczlyTkJjeTJLM1d6L09CS2JwOWtZQ3VFVm56V1lxUTJnU3pHTDZwcFlISHVMdmw2TTY2NjUyZm1POVE0OTJsVFMydkx2Q1JMNklEaEhnWUk3WHV3b2VUTnhEdy9vRHJSQWcyMUIzYjJLWmUvbGRnK3FaRnhETEdsck1YQ1Q1RVdEOHpwSkdmNUZqMFVsdDFVVkJYR2VyN2t6LzFueCt2ditRNzN6WGVnVm9YT0pJWHoxRGFqcjdiWHd5WE96bXdvTmNPaHh2a0JOd0tzNFc4Q0RUc3J0dldVakdNb3d1MVNUMU1Gd1JMSzhVRGJwTVY3YjBiSDR0d2VWOTJ0cFIrRWl5eDl2a1BiRCs1QjZyTHY3L2hJKzJYbWp1eVBZTlV5T005Nzl0T1pYLytvMURZNWJUOThxK2dCTXBYNGZndXdqdS9Tc1Eyd2pHSVZmdnhrT3UxSEdrWlU2OE5OZXFCL0hHQWRpNUtxRTl0K1NKL1hhNFc5N3JzQjFrRDluZ3BxbmV1VkRIOHFkbHNiME0zazc4bnYzNVZ0UDZUcXIyY0ZMWDliajB0dEo3MkdCekw4b1hncUd5alczOEdHdE1IZDlrT3ByK05hMncvUEt5aUxmeHFweExmdGgrTUNONi9DeU5reUpSOC92U0QzNDdqV0RaNjJIKzRMTmh4R0NyZ1hWb1Yyb3FVRmU1U0N1dmR0TnNLaXBLem1SMDc1N3RKOGg2WnBucmY5a0pMNTNzbWlodTgrK3l3c1FxUmswZHIyWXlLOUhzOEllL2EvSDM1OXllV1R2K1lib2xJZFJjcThhL3NoWlVMY0RMQ1VJdVU1RFVWdnV0cWtnZUtVMUE1Uld3dW1sZ0lNUCtmZTdMZGN3MkFSM3FmMnMvbHpMOUF3c1NYTWQ4alBiTEFPSFIrV0lWSXlWRzJKdjVGZWorZUVQVHZiUnVsNytXVGJEeVhQUUVodG9FcnN4VHBFNm8yZk0vSkY3WGRUN0p5RzdFR0lWUUJyU3hzQ2hWUTNmSW5VTHBCaXBVMnYxMW9Cd2FLa29HS3Fabi9udE04clZ5TitUK3hyKytGSlJYTVRuMWZjU29scHFjZ0ZXTk9QbFEzSnE1SVBYdHNQcFYwRVVpdUpNQmtWK2VaUkc1UWQxREJRVzQ5UEtOWnYwUmR1V0NkYlNGVTd2NXpKWUc3elVGT0JCbGlXbXdJTmg1Y1NGRSsvaTB1NDc3aUM1MTdXSlZGbUFleURMSVB6dkgvL0NUWlU4T0RXcGZrTkFkYXhsa2lEclhNWmFTMVpLZ2RSeVVCdFZRMVFxTnhuT2JJajd5MnlqL25uVmY1NWtJZTZ0dWY4cERZZXIxWEVBQVVtbGxVdDNYZmtvTU9OVksyLzlPTkJ2YUp0VHJiOUlIa0hDT3VuQ3haMlZIaVVQODF2ZUJ2OW9UVGZtSVdRNTEyVTN2cm5vUExEVC9GOTlVUjVvWGhQb3dhT0k3VU1YTEpJOXgvQUxGNXRtbEFXdUZJM0paYVp5eEpNZnU3K1hxMWZXWnNsaU9wKzB6UmhabjRDbkhWZUc2VmFOZ08rQmxqRGhRSSs2SWMrWHRHMS9aQWU0TG9LWHNydEFHc0FkcERhR3dROWZyOEVXQU1BNjRuY1d2ZlBBR3ZnQXFkdGxuTHlBN0FmRW5nV29PMkhSelc4eWxwZUIrczdOOWlRRlQyN29ZbWRrWE1qd0JyK1ZzT01nVVBLN2FkZVZQQlNUbVNKUVRYQ0JRNVRHNXdBeXdCZ0RkRmI2NllxOWdETDRCSm5nZzd2SFNlWTNEMkhkQkZxQ1NvSmppM01oY0dHV29idUJlenJlVGRTZXllQmh0M1UxSDRxMHZ3UVlEY0JBNGRtd1FDVUoxU0MxQThNOWkzRXVPcFNSdXZkcUt0dCsrRitnR1VBbk9kaEpVZWxsdGZCbWk2cmJHZ3EyUnpvSW1XK2pLc3VUUENqa21IR2gxWkwreWxEVzRHOU1Rc0dvRHc1UWVwajFJVkxtaXBIZmdhT0dyd1NiQUNBQ1YwYWJLaG9jK0J4SGxSRlZzc3c0ME9xNlFISDBGWUFBSDQwcnJyUUc3R2U4Y3FSZzFmbU9GQ3lJZExhVmVYc1RkZ2dPNU53Zm1kd1ZXVkRFN3g4ZGhOdmNtLzl4Y3VWSGpVTU0vN3VFQzIvS3N1a01oUWFBSUNMaEcyQms1N3hBcXlCTmFVNURnR1BsUTFiMWhVdEdiZUsxdWNCaFdyRlh2cHc1WURyajlacXYwcFhCaHVpbDg5dTZGUHVzYjlZYlQrOHJLbkhhUjQ2TnF2SzJrOE5oa0lEQUhDUjNBTG5TOVFEMVBhRGU5bXltT05FcWQ0Rlc3Y2gwZnNSTGFqME9zQWFkaEZ0L2RyN3ptQ2R5b2J3NWJNYnFxWEgvc1p5UlBGRlljdSswSUVDRFZXMW54cFhuV29mQUFBdU5hNjZXNEdQMEUwVjdPVXd4NGxTZWU4dVJyVHpmRFBBR25ZUmJmMCt4ek5ZSzlpUVZaT0JzTVJoWXZrRy9QY0FTNW5LN08yOWNxQ2htdlpUMmljQkFMQ0J5UDMyUHdWWUE4Q3Njb3RzSnBTN3U0VFM5a1BrZ1ArRklxNDc0dm10MGRyQmhoekZEVnMrdTZrbEJSeHk2NmlhYnNEdnp2MEZVZHVjaTZacDNtdWZCQURBdW5LLy9aT29CNnp0aDJndFRnRDJyWm9XMlZ5cTFHeDhWUVFMdFVsbFEvVHkyZnZ0RGtjQUFDQUFTVVJCVkkxVjFudi9Nalcxam5xYSs4Yk9wclk1RjgxZm4rV2lod3dCQURDL2NkVkZubi8zY09ueitRcFN5MHhJT0RodDVCYWgxRlpLcGJlQVlrc2JCUnV5bWdZNlhhdDlvRmhsRlJ5LzVZeXEyYlQ5OEtTbU9SZk5nV1pkQUFCUWpkOEN2NURGenVjRFpoRXhVS2FOM0FLVTFqSXI2SHJEVm1mV1p1TmdRMjN0bFBKQXNWa3o1ZWRTV2FBaHRmMTVQdWNmekJrQ2IrYjhtek9JM0dzWEFJRGc1cjRuMzFUYkQ2SFhCeFR0ZGNURnQvMXdQOEF5YWhJeHFGNWF0NDJJNnpYalpDYmJWRFpVMTA0cDllS3ZMZUJRV1l1b1llNjJQem5RVUZ1R3dEQjNaUWdBQUZXNkVmaEYvUnBnRFZ4TzJ4ZUtOSzY2cUxOaC9naXdocHFFUE0rbGRHWUp2TDlxdHROTXRnbzJaSGNMZTYxWDZXcVo1SjgvMk5jQ0xHVUtKK09xbS9WbXRNS0IydC9OZlJ3QkFLalR1T3ErUmU2N3Y2RFpmS1dxNVZrVndxaTlSZmljY2tlWGlHNUdyMkxKaWJ0ZGdLWDhSK0R6V3AydGd3MTVTRzl0ZzUwZWx4NXd5T3NQK2NIZXh0eEQ2SEtnb2JwZXIrWTBBQUF3cFhIVlJkN3d1S2F0Q0xBd04ydEpvT1ZTZitSOXE2ak1FR0dueW9ib041amJLamJna0ljWmw5Ykg3VUlIMmlDdmNhaGNUVVBkQVFDSUkzSzF1N1lpQVFrQ1VZR2p3QytoK0FSYTFoSnkzNnF5dWJIc1lLZGdRMU52eG5SeFg5QVZEak9ldlE5c3BWK01SMHJGQUFEWWgxenQvaVhxd1czN3dYMXdQSUpBbE81bDhQVS9ybTBtNllGRUhCTDl0N1IvbGZjQkk2emxlZ0g3YWFIUFoyMTJEalprVHlzOE5zVUVITnArdUZWWnFkS04zQWQyTnBVR0d0SzhpeWNCMWdFQVFLWEdWWGNyOEN1N0Y3emR4S0lFM1FBVmtHSWo0Nm9yWVRaQ2x6ZWpJMzgvUi9lNmdEVithdnZob0VPUDg3NXBDUjFDU2ppZjFaZ2syREN1dXZUbUdpbzhQdUVERHZubStjOEFTNW5LWFlHR2Fjdzk3d0lBZ01YNkpmQUxyN0ZOYW5IeTBPNklzd1VGRzZqWm4rbXpKK2l3dVVLQ1NzbkRIRmlhdGVJbXRYSFBlMmxGdEhJdjZIeFdZYXJLaG5UaVFwVHY3RUgwZ0VOTk44OVBjeW4yYlBKTmIzVU1oQVlBWUM3anFndWRNVGozSmd6L092WnY4NGJVdGFDSFJic1p0aEU1d1BxamF6bm9NT2JQbzZURU9yM0k1L2g0WDdOeFV0dW0vUHZIeXRxNE03R2ZwdngxYVlPejBpenhGSEM0RlcwZ2RtWEgraWhYeU13bUJ4cWkzdlR1SXZLZ1BnRGc4TklENlF2bjRTK1NOS1lSL0Zud1JRRjkxb3VYTnpFZk5VMlRXcm5lSytIMXpGMVZQNU0vMnI3R3hoTmJPZGxIeFg4S3NMYjk4T3M4TDJGU2ovUCsxdW52L0ppcmU5TFA1MG8vRDd0NGxhOGZKYm41dzNmQVNkTTBiL001UGw0bndUZFh3cVNmKy9uNy9HWmh4K0JIcjJJdHAzNlRCaHV5bjV1bStiM0NJNWY2Zlg2T1VzRlJXVWIrTVBkc2dkd3Z0TVpBdyt6VklRQUFKVXNiNUFJT2swa0RHSjlGWEZoNmZwcXp6V2plZU5mQ0NRN3JXc3JFRGo1YjVwRHU1Wi92RytvRkI2bnU3bU1mWkZ4MUx5dEl6cmlXcjh2ZnI4MUxERVNtOHhoZ0dZc3lXUnVsVStPcVM4TkozbGQ2RUxzSVE2MHF5OGcvbVR1QWs5dGlSZXdYdXF2M2MxZUhBQURBcVhIVlBROThNSzd0cTdYRUJRUWFJSVo5WldXWDFFcXBkcCtXZmdBZ2tzbUREYzFmTjVtUGNxbE9qUTRhY0tndEkzL3VJY2E1WDJzUkEydzJkSkkvZHdBQWNFZzNBaC85UHdLc2dUaHFUWkprQnRGbjFUQ1pJNGV5YU03ZkFld2wyTkFjWUJONVp0MGgyaGpWbHBFL2Q3bDZtcFpmWUwrOXRWVCtlUU1Bb0JDNTUvZkhxS3R0KytIRERIOGoxS3cvTGhTNUVvY3kxSnBrU3paM3kyK201ZndkeHQ2Q0RWbmtySlpkWFpzejRKQTN5cXZKeUQ5QW9PRk9yZFB5OVJnR0FDQ1NjZFZGM215L2wrY3BzSERqcWp0ZStqRmdaeUZtZWdKRXN0ZGdRODVxK2JuaU01NENEdU8rLzBpRkcrV0hDRUxWMnNPdjVvQWVBQURsZWhCNDVlWXBJQ09kblFsWUxVYk4rNW8xZTdyMEEzQW8rNjVzT0IwWVhYV1BySDBHSEhMV1RVMGI1WGR6RUdvMmN3U0VEdVRwM01jU0FBRFdNYTY2MUs3b1M5U0QxZmFEZnV2TFp0NGRVN0doV2JtOHIwbGh4bFgzMWprN2pMMEhHNXAvZW1SVm5UbXd4dzN0bXJKdTB1YjRyTU8xRHpGYll5Wkh2amdCQUloc1hIVzNBaS92V1lBMWNDQTVHQVk3ODF5K0dLK1dmZ0FLNDN3ZDBDekJobVloQTJ4VHdHSEsvcCtWWmVUUHZqbWVoNzlkbS9Odnp1VEVrQnNBQUFyeFM5UmxWcHlZeE9XcTdyekFRVVJ1RzhjRXhsWDMwbkVzaC9OMVdMTUZHNXJsRExMOW1tY3M3S1N5UU1NdzkrWjQydytwTFBiZW5IOXpMa3NJM0FFQVVJZHgxVVZ1VjNRdFB6ZXdJQkszbUpwS21jV1FMVjhHNStuQVpnMDJaRXNZYVB1cDdZZjcyLzdMbFdYWWZCbFgzYzdCbHkzOGZvQy91WGNMQ2RnQkFGQ1I0UGV3VlQ0M2NDRlZEZXpMRXZhNkZrMjJmQm1jcDhPYlBkaVFCOXJlRFhnc3B2WkgydzhiWjB5MC9mQzVvdFkvSjRmbzAxcnhRR2czTHdBQWxPcTNxT3ZPejJBc2dLb0c5aVh2ZGIxM2dLdW5aVlpzems4QWg2aHNhUEtRNENXVXRieHArMkh0T1FWdFA2UUo5OTErbHpTZlE3VDd5Y2V3UmcveXpRc0FBQlJuWEhYUEE2KzVhL3NoOGpCcnByR0VwRWNPYUZ4MTJySlZMcmZNK3JMMDR4RFVpWlptTVJ3azJORDhVOWJ5TWRqeDJJZkg2MlRLdFAyUWVwaytMUElWbnVNUXBkSjVPSGMxeC9DTUkxK1lBQUJVNEhiZ2wvQm5nRFd3UDBOT2VvUjkwNUdnY29mbzRNSFZ6RGVONDJEQmh1YXZOMEthYTNBUzdKanNRM2ZaSEliY2J1bFowYS93M3c1MWNmMTZvTCs3VDdNUDF3WUFnSDBZVjkxeDVJU3pUYXJTS2N1QjVnaXlRTGtqZ1ZZdTlZc2NQRjhpbFd1QkhEVFkwQ3dyOG5UdHZGa0NiVCtrbTU0M2gxblNYdHc5Ukx1ZlhRWnlSK2FtR0FDQW11U0VzNmdlZTdQVkovaUFjaXFVT3hNWVJsNnhIRHovWmVuSElZaFhLdGRpT1hpd29Wbll4Zjlzd0NHMy9mbDAyQlZONnNFQlArQi9IT2p2N28yYllnQUFLaFUyNi9lOEJER0twcVVOQjVFN0ZCZ1lYYkZ4MWIxZVNIdjR5SWJjcHA5QVFnUWJtZ1VHSEhLZ29hYTJQNytZS3pBcE44VUFBRlFwUHplRWJhZWIyOXhTdmh1SHFMcUhVM2xndElCRHhYSzEzckQwNDNBZ2cyNGdNWVVKTm1STDJtQ3RLZEJ3bENPNkI5SDJRMjFSeklPMG9nSUFnTGtFYjZkYlU1dmJSVXJKako2cGlDQUhITFJVcWxqZThCWndtSmRBUTJDaGdnMzVac0JRajdKRUdHQmMwN3dHdmVZQUFGaUtzUDJ1MjM0NERyQU1ObmVpSFMzUjVEMFRRNk1ybGplK2YxdjZjWmpKa1VCRGJORXFHNXE4MGVwTHVBd25QdUNUMG1zT0FJREZPR1IxOUJwdXR2M2dXYWNzcjRKWHpMQmdxWDJjUUZqZHhsWDNYQUwxM3QwTmtQRE1GY0lGRzVwL2VuZytEYkFVTHVGR2JsSUNOd0FBTEU3d3piZFBBZGJBZW01STNLSUUrVHZQSElkS3BRVHFmSTdEemlVcTFFbHVqNmNUU0FGQ0JodWF2ejZnYi9XMWkwdEVmbG9DTndBQUxGalkxaE50UDd6YjlOL0p5WFBNNDJmekdTaE5udU93cEptbGk1UDNlSDVlK25HWXlGTjdabVVKRzJ4by91bHJKK0FRakVERHRCeFBBQUNXTExlZWlPcGgydzgyT2VKNWxZTU1Hd2VESUlJVUlNdDdBZHJ1VkNwOVArVnpiRjl6TzBmNWUvNXRpWXRmc3REQmh1YWZnSU9wN25HSXZrL3JkazB2QmdBQXRoVDV2dmpyRnYrTzU2YjllSm8zbjdSTW9ncG4ydTdZRzloZTZJQk4ydGNVZE5qSWFaREJiSVpDaFE4Mk5QOU1kUmR3T0x5N3lsTW5sVzZVanl0NlBRQUFzSlY4WC93eDZ0RnIrMkdqNm9zeldjc1BJcit1UXJ6UEcwOHlYS2xXK2c0OGZaK2I2YkNScDZYMDhUOFRkTkJlNlh4UEJSbnE4Rk1wcnlJRkhOcCtTQnZkMXdJc1o0bUsrUUl2eEpFYjVjVVNzSnVIN3lzQUtNeTQ2dTYzL1RBR1hmV3ZUZE84M3ZSZnl2TWI3cC85NzlwK3VOVTB6WlA4MzkrYmRKWDFTSnV0VHdwS2RuT1B6MlR5VElmVDc0clVLcXh6ZFAvanQrQXQrQzZVMjc5OWI2ZWRBOW0veGx6cExJbzlqMXlzbUdCRGt3ZXNDRGdjaEkzeGFYMFJxWjFYZXNocit6REZVZFgybFExMm5BMW0vQ3VMMGdZR1AvcmlpQnhNK3Y1L3NkRFh2a1EySHJlVXNob0RCeHdta2FzNHptMEQxUFpEZWs1SUc0MFB5M3RsTzBuWHA1Y0ZQM2UrVytBNVk4L3lkOFdkMDcrU042WmZMbkJQN0NRSGUxL1gxbTFqWEhXdlR3UFpiVC9jeWYrNTVtZTRqL203M3ZONnhkcHhMTzgrcnZhYnoyQ0czTVlxckxZZlBwVDBaV3dnOUdHMC9mQTVRa1pJN2VlLzdZZDBRM3p6ME92d09mdExrT3VsYkpXL3prV1VaSWtIYnU0UFI5Sk1XSGYzVWNFYjVabWwxR3RpMnc5cDAvbHhnS1djT3ZoelVkc1A5M00xUk9rVkVTbXdrTTd2MjVyYXl0cW5DT3RHcmUyZzgzZkNrMkRmbGJ2Nm1MOGJGcC93MnZiRDlYeCtIeFg2blQva1FHeDFRU0l1VjJTd29YRWhuOHRKcWlhSnZzaVNnZzAyUUE4djM1RE5ibW1iZTQ1ekxBYzZIOGZtMHZ4WHpsaWEvZHJxc3hITG9iNGorYmU1UGhldWlkTTQ0T2ZtYzBtYkpQazQzY28vOS9NMVorNkVtNVBjMGpLOUJ6KzREK1lRbG56dms5c3YzY2svVVlLVHA3TnJQdVR2aDIvdVQ3ZDNKdmg4K214eGlITTg1RXJPUlg3WGM3RmlndzJOZ01QZWxiSXhYbEN3b2RxTUNnQUFBQUJnMmY1WDhxdVhKYjQvanUzazdnbzBBQUFBQUFDMUtqclkwTmdVM3d2SGRISlA5OUVIR0FBQUFBQWdpdUtERFkzTjhhbmRxT3ZsSE54N2c0MEFBQUFBZ05wVkVXeG9CQnltb3RYUHROS0E3VWMxdlNBQUFBQUFnUE5VRTJ4b0JCeDJwZFhQeE1aVmQ3MnFGd1FBQUFBQWNJR3FnZzJOZ01PMlhtbjFNeTN2UXdBQUFBQmdTYW9MTmpRMmVqZVZaZ3E4TEd2SjRabDdBUUFBQUFBc1NwWEJoa2JBWVYyRG1RS1RNL2NDQUFBQUFGaWNhb01OallERFZkTHc0anV4bDFnY2N5OEFBQUFBZ0VXcU90alFDRGhjeVBEaXlSMlpld0VBQUFBQUxGWDF3WVpHd09FL0hJL0pwWFpVVHlwN1RRQUFBQUFBYTF0RXNLR3h3ZjQzeDJGNjJsRUJBQUFBQUV1M21HQkRZNk05dVJGZ0RWWHhuZ0lBQUFBQVdGaXdvVm4yNXZEZGNkVjlDN0NPYWdnMEFBQUFBQUQ4WlhIQmhtYVptOFJQeDFYM09jQTZhcUpLQkFBQUFBQWdXMlN3b2ZrbjRIQVNZQ243ZGpTdXVyZDF2OFRacVJJQkFBQUFBRGhqc2NHRzVxK0F3L1hLQXc3RHVPcWVCRmhIVFZTSkFBQUFBQUQ4WU5IQmhxYnVnTVBKdU9ydUJGaEhUVlNKQUFBQUFBQ2NZL0hCaHVhZmdNTVFZQ21UeWErSjZhZ1NBUUFBQUFDNGdHQkRscXNBcWdnNExIQUE5cjZwRWdFQUFBQUF1SVJnd3hsNVEva296SUsySU5Bd1BWVWlBQUFBQUFDWEUyejRRVzZWVTJyQTRVYUFOVlJGOEFZQUFBQUE0R3FDRGVmSUFZZW40UloydWJ2anF2c1dlWUdsRVdnQUFBQUFBRmlQWU1NRnhsWDN0cUNBdzlOeDFYME9zSTZhcUJJQkFBQUFBRmlUWU1NbGNzRGhidGdGL3VVb3I1UHBxQklCQUFBQUFOaUFZTU1WY3NWQTFDejNqN25sRTlOUkpRSUFBQUFBc0NIQmhqWGtMUGRvQVljdjQ2cTdIMkFkTlhtbFNnUUFBQUFBWUhPQ0RXdEtBWWRBQTROUHhsVjNLOEE2YXBMYVViMWMra0VBQUFBQUFOaUdZTU9HSWdRY3hsVjMvZEJycU15Z0hSVUFBQUFBd1BZRUc3YVFBdzRuQi96YlRDY0ZHdTQ0bmdBQUFBQUEyeE5zMkZLdUx2Z3k4NStOT3FpNlZDY0NEUUFBQUFBQXV4TnMyRUdlbXpETTlPZHU1MEhWVE9ORU95b0FBQUFBZ0drSU51d29aOFlmN2ZuUFBCaFgzZkhlWDh5Q0NEUUFBQUFBQUV4SHNHRUNlYmp3MHozOStxZmpxdnN3Nnd1cW5Ma1hBQUFBQUFEVEVteVl5TGpxM2paTmMzZmlYM3VVZnkvVG5TZUJCZ0FBQUFDQWlRazJUR2hjZFo4bkhPSTg1SW9KSmlMUUFBQUFBQUN3SDRJTkUwdERuQ2ZZMUQ3SnN5Q1lpRUFEQUFBQUFNRCtDRGJzeVM2YjI0WVhUMHVnQVFBQUFBQmd2d1FiOWlodmNuL1o1Qy9ZR0orVzR3a0FBQUFBc0grQ0RYczJycnBiVGRPOFgrZXYyQmlmbHVNSkFBQUFBREFQd1lZWmpLdnVVZE0wdjF6eGw2WWFMTTFmTXk4RUdnQUFBQUFBWmlMWU1KTngxYjF1bXVidUJYL3RiaG9zWGQyTFBvekJ6QXNBQUFBQWdIa0pOc3hvWEhXZno2bGdlSnIvZTNaM05LNjZPNDRqQUFBQUFNQzhmbks4NTVVckdOcTJIOGE4T2Y1MlNhOS9qMzRlVjkyN2FsOGRBQUFBQUVCZzdUaU96ZzlWYWZzaHRWRktRWnlIVGRNOEdGZmRCMmVZUTJyN0lWWGNwUGZodGFacHZqUk44MGhGRXdBQUFBQUFBQUFBQUFEOFF5Y2xxdkZEQWprY1hDNjBTZS9KN3N4YWJqWk44Nm50aHlhUGJkRk5EUUFBQUFBQUFBQUFBSURGTTdtQjRyWDk4S1JwbWpjWHZBNlRHemlJdGg5UzBjTGpOZi8yVWRNMHovTVllUUFBQUFBQUFBQUFBQUJZSE1VTkZHdk41SEhGRGN6cWltS2JxNlJ4RGsvR1ZmZlpXUU1BQUFBQUFBQUFBQUJnU1g1eXRpbEoydy9YbTZaSnhRcWRFMGNrYlQvY2Facm0wNDVMU3UvclQyMC9uT1JKRG0rZFpBQUFBQUFBQUFBQUFBQ1d3T1FHaXJCRFVZUEpEZXhWZm04ZU4wMXpiVTkvNTJoY2RVK2NSUUFBQUFBQUFBQUFBQUJxcHJpQjBDYVkxS0M0Z2IxcCsrSHpqRk5FaHFacDdvK3I3cHN6Q2dBQUFBQUFBQUFBQUVCdGZuSkdpYWp0aHp1NXFHRmYzZkJoYTIwL3ZHMmE1dkhNUnpBVlVYeHQrK0VrRnpsOGRnWUJBQUFBQUFBQUFBQUFxSVhpQmtKUjFFQmtiVDg4YVpybXpZR1htRDRibjlvK0RYSm9ubzZyN20zb2d3WUFBQUFBQUFBQUFBQUFhMmpIY1hTY09MaTJINjdub29adTRyVThHRmZkQjJlWVhSUlFkSE0wcnJvbkFkWUJBQUFBQUFBQUFBQUFBRnRSM01CQjdiR280WlRpQnJZMncvdHphbW1jdy8xeDFYMXoxZ0VBQUFBQUFBQUFBQUFveVUvT0ZvZFFZTkk0QzlQMnc5dW1hUjRYOXFyVDUrbHIydzhudWNqaGM0QTFBUUFBQUFBQUFBQUFBTUNWRkRjd0swVU5STmYydzVPbWFkNFVmcUt1TlUzektSYzVQQjlYM2RzQWF3SUFBQUFBQUFBQUFBQ0FDLzNQb1dFdXVSUCtWNFVOUk5UMnc1MjJINzVWVU5od1ZpcHllTlAydzlqMnc4czR5d0lBQUFBQUFBQUFBQUNBZjJ2SGNYUkkyS3RjMVBENFFFZjV3YmpxUGpqRFhDUlBFL25jTk0zTmhSeWtvM0hWUFFtd0RnQUFBQUFBQUFBQUFBRDRtK0lHOXFidGh5Y0J1dUFyYnVCQ2JUK2s5OGE5aFI2aG9XbWErK09xK3haZ0xRQUFBQUFBQUFBQUFBRFZhL3ZoVnRNMHQ4NTVuYWxaOTUwZi9ydUxjcUNQeDFWM1hPT3hVdHpBNUlJVU5aeFMzTUIvdFAzd3VtbWFaNDdNZHllNXlPRnpnTFVBQUFBQUFBQUFBQUFBaE5mMnc1MWNqSEQ2RTdIWmRzb1IvWHptNTBQMG9nakZEVXdtZjBoVEljRzFRRWRWY1FOL0MxWjRFMDI2Z0QzeWVRRUFBQUFBQUFBQUFBRDRPemM2NVo0K2Fwcm1acVdIWkdpYTVtM1ROTzhpRkQ0b2JtQm5RWXNhVGlsdUlQcDdOS0tuNDZwN3UvU0RBQUFBQUFBQUFBQUFBQ3hEempWOTNqVE5ZNmY4ZThQc2QwM1R2Snk3NEVGeEExdHIrK0Y2VGhqdkFoOUZ4UTBMVnNoN05MS2pjZFU5V2ZwQkFBQUFBQUFBQUFBQUFPclM5c090UExIZ25sTzdscU01aWgwVU43Q1Z0aC9lRmxLWnBMaGhvUXA2ajVaQWtRTUFBQUFBQUFBQUFBQlF0TFlmN3VlQ2hwdk81RTZHcG1tZWpLdnU4OVMvV0hFREcybjc0WFhUTk04S09tcUtHeGFtN1llVWhQOW02Y2RoVDlMRjZQNjQ2cjVWK2VvQUFBQUFBQUFBQUFDQXF1UUpEZSthcHVuMi9McStORTN6T2YrazNPWGpmVTg1K0ZIYkQzZWFwa212Ti8zemZ2N250VDMvMlk5TjB6eWFLcmRVY1FOcktUaGhYSEhEUXVRdjVBOHpmQW56VjVIRG83a3Z1Z0FBQUFBQUFBQUFBQURyeUxuUHJ5Zk9LLzJTQ3lYZTdtTnF3UnphZm5pVWNrRHp6NVRINWlRMzBON3B1Q2h1NEZJVkpJd3JicWhjMncvWGM1V2JFVUh6bStSQ0JBQUFBQUFBQUFBQUFEQ0ZpUnU2SHpWTjg3TDJadEJ0UDZRcEQrbTRQWjdnMSsyVVc2cTRnWFBsaFBFUE00eGcyVGZGRFJWcit5RlZ2ejFjK25FSVFKRURBQUFBQUFBQUFBQUFjREFUTlhULzJEVE44NlhuUStaaWg3YzdOaDVQdWFXM3hsWDNiYU8vcmJpQkgxV1dNSzY0b1VKdFA3eHNtdWJGMG85RFVFL0hWZmQyNlFjQkFBQUFBQUFBQUFBQW1NZU91YzlEbWxxdzlJS0dpK1JDaDNjN0ZJMzhOcTY2NTJ2L1BjVU5uS28wWVZ4eFEwWGFmbmpVTk0zdlN6OE9oVkRrQUFBQUFBQUFBQUFBQU94TjJ3KzNtcWI1dkdYaS9VWko5MHZYOXNQMXBtbGVOMDN6ZUl0RHNmWVVCOFVOMUo0d3JyaWhBaE9OQ3VJd1hQd0JBQUFBQUFBQUFBQ0FTYlg5OEtScG1qZGIvRTdObTNmVTlzUGJMWXNjcnN6clZ0eXdZQXRKR0ZmY1VMQmM1WlhPWDdmMFkxR0JvM0hWUFZuNlFRQUFBQUFBQUFBQUFBQjIwL2JEeTZacFhtejRTOTZQcSs2UlF6K05IWEo4THkwdVVkeXdRQXRMR0ZmY1VLZ2RxcnFJVFpFREFBQUFBQUFBQUFBQXNKVXRDeHZ1anF2dXN5TSt2UzBuYUZ4WTRLQzRZV0VXbURDdXVLRXdPNHdKb2l5S0hBQUFBQUFBQUFBQUFJQzFiWkZqK21WY2RiY2lIZUhjcFA3T0JML3E4N2pxdmszd2UzYlc5a002eHFsNDVOb0d2K3ZjSEcvRkRRdXg0SVJ4eFEyRmFQdmhUcDRvc3NrWEcrVWJtcWE1SCtVQ0N3QUFBQUFBQUFBQUFNU1Q4MHcvYmJDd2orT3F1NytQRjdMbDlJaTVuRFJOODY1cG1yZHo1MUMzL1hEY05NM05EZjZWR3ovbWp5cHVxSnlFY2NVTjBlVUt0SFNPdXFVZmk0VlQ1QUFBQUFBQUFBQUFBQUNjYThQRStiMFZOalIvclNYbHZkNHI2RXdkTlUzemZJNGN6UTNQMHpDdXVuOU5zZmpmZnBiRm9hV0U4YllmUHVjS0paM3dDYW50aDFRWjlsVmhBL2s5OERWOWIrV0NGd0FBQUFBQUFBQUFBSUNVYi9wNmc0VDVML3NzYkNqVTR4bHpOTy9rNlJIcjZOcCtlSEwyZjZlNG9VSnRQN3lWTUU1a2FSeFAydzlwYk14REo0b2ZLSElBQUFBQUFBQUFBQUFBdm12NzRWYlROTTgyT0JvS0d5NTJtcVA1Wk50ZmNKVThIZUxSQnYvSzY3UC9oK0tHaXFRM1drNFlmN3owWTBGTWJUODh5dS9SRjA0UlYxRGtBQUFBQUFBQUFBQUFBTHpjNEFqOE1xNjY0OFVmc2F1OTJYT0J3NGVtYVg1YjgzOStMVFZOUC8wLzJuRWM5N1V1WnRMMlF4cmZrZDRFMXh6ei8zaVFQeUFja1Bjb0V4aFNOV1d1NkFNQUFBQUFBQUFBQUFBV0lEZlZYc2N3cnJvN2N4eVJ0aDlTVHV5OUNvNys3WDBXZzJ4dzdrN0dWZmU5RWJiSkRRVkwzY3hUVi9PbWFUNUpHaWNpNzFFbVpKSURBQUFBQUFBQUFBQUFMRWpiRDg4M2VMV2JUSGhnbm1QMmFzMy9YWnJlY0QvOWg1LzJ1eDcycGUySHQwM1RQSGFBaWNwN2xEMDVMWEl3eVFFQUFBQUFBQUFBQUFEcTltak5WL2RsWEhYdlNqb1M0NnBydC9uMzJuNjQxVFRONjZacEhrNndqSlRuKzJTQzMzT3VjZFc5YlB2aHhaci84N1NPRHlZM0ZLYnRoMGQ1Uklla2NVSnErK0dKOXlnek1Na0JBQUFBQUFBQUFBQUE2blp2elZmM2RpbnZnM0hWSFkrckxoVjkzSjdpOTUxT1ROaWo5MnYrNnU5NXg0b2JDcEdxYk5wK1NCM0tmMS82c1NDbXRoL3U1UGZvRzZlSUdTbHlBQUFBQUFBQUFBQUFnTXBzbUhUL1lXbm5QeFU1TkUzelc0Q2xYR1h0d3BOMHpuODYyREpaVzlzUEh6YW9QSUpaNVlUeUR6bkpIQTdsdE1oaGFKcm0vcmpxdmprVEFBQUFBQUFBQUFBQVVLeTFpeHZHVmJlNDRvYXNoRnpKVGM3TkxaTWJBbXY3NFhuYkQ2UENCcUpxK3lGVlUzMVYyRUFnSmprQUFBQUFBQUFBQUFCQStkWXRidmpvWE1lVm0xVi9XWE9CdDB4dUNLanRoenU1U3VYYTBvOEZNYVhDbTZacGZuVjZDT3kweU9IOXVPb2VPVkVBQUFBQUFBQUFBQUJRcGFWT2JXZzJtVzV4WU1kTjA5eGM1L1VvYmdna2R4bi9vQXMrVWJYOWtMNEUvM0NDS01qRFBBSG5hRngxVDV3NEFBQUFBQUFBQUFBQUtNSTlwK2xpYlQrOG5lSVlqYXR1anVLUUQrdXVWWEZERVBrTjluanB4NEdZMm42NDFUVE5aOU5FS05qanRoOGVLM0lBQUFBQUFBQUFBQUNBcWh5WCtHTGFmdGlrcUdCZmhSNGY5L1I3dDZhNDRjRGFma2hKdG04V2ZSQUl5elFSS3FUSUFRQUFBQUFBQUFBQUFPcFJaSEZEa01rVXJ3T3M0Vi8rRjJndGk1STY0YmY5OEUxaEExSGxhU0pmRlRaUXFWVGtNT1lDTXdBQUFBQUFBQUFBQUlBbFNVMmkzd1Y3dmZjVU54eEFIaVB5WjlNMDF4YjM0Z2t2Slh1bnBPK1UvTzFzc1FCdkZEa0FBQUFBQUFBQUFBQUFDNUlLR3lMbVRYNzhLY0FpRnFQdGgrZE4wL3k2OU9OQVRHMC8zR21hNW9PaUd4WXFGVG1rOFVyM3gxWDMyWnNBQUFCWW1qUmx0R21hVzJ1KzdPdE4wOXdKZElqU2ROVHpudVUrajZ2dTJ3SFdBd0FodGYxd2Y0TjFiWEp2TUlmUCtacC8xamY3dWJBZkYzeGZ6UGtjY05FOWZ1TStId0RXZDhrendDYlBCbE81N1BxZUhJK3I3dGpwQldCTDkzUCtLMWM3aVo0bnFiaGhCcExHaWF6dGgrdjUvZGs1VVN4YytvNysxUFpEK0lzM3JHUEQ1TFNhQ0dwWHlQdDVmdmtaNXZxQlgzOVVBdWo4eDRaSllrdXl1T3R5ZnNiK01kbm54Ky9VOC80MzZUcDNjNFlsTGs3YkQ5dSs1SS81bngvT0JGNEZXQXV6NFB0SXVJcnZzeDJjODkyeXp2VS91UmYyUlJWc2gydjlsL1JaT09mSE14L0ZPYk9QYy9wc2V2clBhcjkzZHZqc256cjlEbWpPSkwrY0ZsRzVUaDZZdlVtNGtQdVV5dVY5NXV0bm5pZE8vN21ZZko0SnJ2R256bDdyLzc3RzV4L3g1Q3NzL0Zyc3U3WmdGOFJvbHFMbTc3WkJidXRrZm11YTV1VUJ2K2ZXanFtMzR6anVkeWtMSm1rOGhBZmpxbE9OZFlHMkg5NDJUZk00NU9MZzhJWmM1T0NoaFdMazRQcG5CWlYvZXpxdXVyZEIxc0tHdkovL1krL3Y1N1lmWGpaTjgyS2ZmNk5DYVhQOGtVM3daY21iK3U4a29tL3N0M0hWUFovN2ovNlFmSGoyUC8rNHdTM1prRjJkNUh1WEQ2Zi85RHg1R0RrUjRJOGx2bmJZMHMvanFudFg4c0g3b2REMDdIOCttNHl4cUlRZzltYkkxL25UYTcxblFmWW1QM3Zlejk5bGQzeUhoWE55NXZ2Z1dESDA3dHArZUpJbXJaZitPbUFtbXZVVjRreVM3ZGxydW4zbGNudzhVeER4b2ZacnZUMjEvL2c0cmpxTnJRclI5c05uejB6L1V2eCszMWx0UDN4WU00NDMrK2QyZzdVZFF0ckhlaExwbm5HRDQvV2I0b1k5a1RRZWh1S0djN1Q5a0JKS2ZnMjNNSWhKa1FQRmFQdkJqZDEvL1RLdXV0ZlJGc1hWdkovUHRkY0NCOGQ4SnltWWRFY0F1MjQ1RUhXczZHcDc0NnByOS9XN05aaWdFRU4rbjc2elg3VWZPUW53VTQydkRmYXNpSDEwU1k4VTRDUmY2MCt2OTU0UnVWQk9IanY5VVd4ZHZ5OW5FaU0vNTQ3QXZpTXkxM2pZMm0zZkpZZVY5eVRUdGZ4Ui9xZkNoZVg2K0VNaGRIR2ZUWEhDY3gya2FST2JhZnNoNVlNOGM5aitiWjh4dWJsdDBLUnhHRmZkckpNN3BpaHUrUEZjVFp6Yk8vc3h1Y3dHMTVwWFB4MW1pZlZxK3lIZHNQNis5T05BVEtwc1lTc3BPZXByMnc5SDQ2cDc0aEFTMVE5ZEN2bEh1amRUM0ZBWTcrY0xwZmZ6UHFjM0hDblEzbHBLZHYrejdRZWJuSlhLM2YvL1hQcHgyTkg3UGYvK2R3b2JLRUNYZjU3OU1HTC9KTCtIMzlYVVRlbEFIaTN5VmNQdTd1ZGt5N0R5YzZLa1I2Skx6NFlQODgrdlAxenZ2K1E5S2tVUEM1SVRIaC9sbjRkTFB4NExkelAvL0ozMDhzTjN4RmtmRjFnRUlmNEcyN21WQzZmWXM3dy8vQ2gvWDltRDVEejNMcm5Pbis3OXZZeDZYUmVidlZDWWhHQXU1VHlkSTMydUsycXl0RzVENGk0OWg1ZmV3RGcxY0czNzRkMUVzZWwwVEw1Rm1GUGxWZ0FBSUFCSlJFRlVhTlM0NGJYbWcrS0dpZVROcWMrcWNJbEloMUdZeE9PMkh4N3Z1MnMyQUZ6aStqNFBUaXJpeXh2MHVnVnU3MW5lTUJHUXJZakNoa2w4R1ZmZHZoT09mWGRSc211NXdQRHhENEhQVkJUMDJwUUhBS2pDemR4MTcyelJ3MGt1ZUhpcjRLRjgrZG54U2Y0UkwyWVhseVZIcHNLSDUrT3ErK3dJQSt4SFRyeDdvaGtVRS9weDd5LzlQL2RMVDc0Rm1ORW16ei83YmhnNWk3eFAxTGI5OEhtQ3dzclRSbzAvSDdqQjF0ckZEU2t1OXIvOXJtVVoybjVJSDRhdk5xckNHVGI4WXF0Uy9vTDdxckFCSnZNbWpVaktJM0lCb0NyanFydWZKeml3dmNkNU5DWVZPTlBJZ08xOUhGZmRMY2NQdHBLNisvNlJuMEhUejdGblVRQ29Tb3Jidk1nQjV0UHIvZHVjSkU5d0tmR3g3WWNQcCtjdUY4Vy9FQzltejFMUnc2Zjh2ak94R0dCSGFmODM3ZWZuUFpmVGEvb2ZDaHZZczVTaytsVXNDV0E5dVFIVXlaci84NnBpS09PcVM1TkpmcHZvMS8xKzRPZklkYzlOS3VwdkZEZnNJQVVUODQydG05cFlVbEhEamZUQlhuS1ZhOTRBSDQzRWc3MUpSUTdmMm40dzNneUFxdVNwQTYrYzFaMjhzQ2xkUGhQd0puR1VpNmFBYWR3OFUzQS81bVE2ejZRQVVKZkhQeFE3dk16UEpoeFl1dS82b1pqaER4UGtPTEJudVFrakFCdG8rK0Y1anZPUHVWR280a1FPSmNXUzlqM3hHS0FXNno3NzNLdXRhY1M0NnA0M1RmUHpSTC91V1c2V1BxczhHV3ZkKzYzdjA4d1ZOMndodmZuVGpXNEtKaGEzK0xvcGFsQjBFMTFLN0dsMVE2N0t0ZHdoNTdNQUV3QTFHVmRkU3N6L3hVbmRpUUtIZ2lsc21NU3JYQ3dGN00vWnJxM2ZCRU1Cb0VvdmNsZlhkTDEvWng5NlhqOGtQMzVTekVCQW5nRUFycEJ6dk00V0tQNXEzNWRBN0tFRHJPZmRCc2VwdWhqOXVPclM2Nyt4d1FTTHkzUjVyMlBPSXBCTnpzbjM2UktLR3phVWJuanpXRkUzdW5Ha0QreGRSUTNmTzhZb3VvbnB0UERtKzBOSittY3Vjbmk2OUFOVGtkT3hnVHJrQUZDTmNkVzluckFEd0ZLbEFvZm5TejhJcFZIWU1JbFh1VWdLbU0rMVBGSTRCZXFQVFhRQWdDbzlQRlBvOE5vcDNvL2NST3liNUVjSzRmMEpjSTZjUC9NNVg4Ly9WS0JJWUlxWEFkWXdycm9QT1FkekhZOXJqSkdrM09oeDFhWHJ4c2NKZnQyMVBEbDA3d1h6K1crc2V5LzIvalFIWEhIRG1zNTB3M2ZERzhkcFVjUDFjZFhOUGlvbGlwUjRrMGZGZkxLQkZjNmxoVGZqcW51Yml4d2VURlJWeCtFOXpvRWwxZlVBVkNGM0FIamdiTzdrVi9jR3hmbnMyV29uVHhVMndNSGRQRFBSUVJFK0FOVHAyWm5wVFlvYWQvUkRBdVFiejRRQVVKNmNPL1B1ek1TbHpta0VnS3BzRW4rc05qWXlycnI3cWRIY1JML3U5eGthYUd4eUx2NCt4NG9icnFBYmZraUtHckljb1A3cW9TeWtwK3UrUjFObFlhNnF1N3RCaFNHeHZjbUJKVUVsQUlxWHV5RGNkaVozOGthQlF4bFN0L09jRk14MkhxUWlic2NPUWprdHd2K2NKOU1BQUhXNWRxYW8wWFBuaHM0MHQ1TUFDUUNGU3QyQWMxN1gxenpwQ2dDb1VHN011RzV1WlZmejFNdmNhRzZxSnBXcGdjYUhpWDdYdjZUQzB3MGFTQnlkemJWVjNIQUIzZkJEVXRTUW5kbHNmUnhpUVp5VnZtVGJiUko2MHZzNlRYbG9tdWJHUk9PRE9Md1VWRHFXUUFKQTZjWlZkNXp2VVV5YjJwNENoK0FVTnV6c2RpNkdBbUpLeVhwZkZUa0FRTlhlbU55MG5uU016a3hwQUFBS2RPWjYvcnU4TGdCWWpFM2k3YzlxanMvbnVPeFVPUnozOG5UUXllSkhiVCs4M0xEdzlQblovME54d3pueVFkVU5QdzVGRFZtZUpHS3pOYWFQdWFoaDV3dml1T3ErcGZGQjZmZWxZb2xLajllUzNNd0pKQUpLQUJRdDM2T2toOWt2enVUV1VxTEovVUxYWGpXRkRUdEp6K3czY2hFVUVKOGlCd0NvMzJPVEhNNlh1alpxSGdZQVpUdFQxT0I2RGdBTGsvT0hYMjN3cXF0dVFIZ21oMk9LSE5Ock9YNTBaOWRmbEhQd1gyendyenhOcitYc2YvSFRyb3VvU1Q0cEgxVDBocEVTSk80dnZhQ2h5Wk5FbXFZNTl0NE1LU1gzM2ZueHkzVXF1VmppU2I3SUttb3BXd29vUGM0WFk0VU9BQlJyWEhXMzhsakNlODdpVnY1bysrR0JEdmR4S0d6WXlaZjBuVkR3K21ISlRvc2NmaHRYM1hQdkJBQ29VZ3JndnhacisvN2M5eWgzZFFZQUNwV2JDU3BvQUlDRkcxZmR5OXhRY04xOGhiUS9raHFydjk3RGtVdjdEV2t0MnhRRWZNNC9PenVUWTNvOXIrVlcvdGxFaXBsLzJMV2gzUmFGRFVmbjVWSXFidmduY2Z5RFNRMmgvRHl1dW5kTFB3ak5YKy9Qejk2YkljMWFmSk8vd044cXdxcUNnQklBeFV0VHB0cCtlTGZoR0VIK29jQWhpRnlvbzdCaE8ybDZuVWtrVUw3VHNjeDNUR0FCZ0NxbFdNS250aCtPcHBnOFhSb3hZQUFvbjBhUUFNQ1BjcjdDSmczc2ZrMEZFZU9xZXpUbHdjd05zZC9sbjRQTDZ6bFlEc0lXdWM0Zkw5cXYrdDkweXlwVFRqRDlhbE1yak5UUnZGWFk4SzlSZXQ2YjhhVDM2ZlZESkthbnY1bEhDZDF0bW1ZbzRGaHh2dE9BMHVjY1hBR0E0dVFILzkrY3VhMzlrVHRLY0NBbWtPemt2Y0lHcUVwNlJ2MHpkOU1CQU9xVUpndC9hL3RoTVpQWDhyUUdNV0FBS0ZTNmIwbjNMd29iQUlEejVPbnlYelk0T0EvejNzZzJVeGE0Uk1wNzJDTFgrZEpHZW9zdGJqaHpNSjhGV0E3L0ZEWDhaN3pJMHFTcTgvemVORTR2bnFNbzc5TmM1SkF1dERjVU9SUXRYZEMvU2lBQm9GVGpxbnZlTk0wckozQnJmeXdwc1NRU2hRMDdPWnE2cXdrUXhvdmNWUWNBcU5OcFFlUHoyczl2YWlEV05NM3ZBWllDQUd3aE42cjlNOSsvQUFDY2E0c0NoOU9HeEFlYmJsQ1QxTlE1eDVYKzJQQmxYVnJZMEN5eHVHR0hnOGwrS0dySVVrV1lxdk93VXZIQWpZZ2ptOU1vb1ZUa2tENUhLY2tvd0pMWXpndVZvUUNVYWx4MXFVanZxUk80dFQ4Vk9NeExZY05PWGtWOExnSW0xZVhuVTFNR0FhQmV2K2JrL3lybE9MQUdZZ0JRb0p6VDlVMmpXZ0JnWGJuQTRmMkdCK3hlYWtCZTgvN0lQcDNKdzk5bVl1YXJxd29ibXFVVk4rUTNvdkdqTVNocXlNNTgwRCtwT2cvbnBHbWEyN2w0NEZ2MHhhWWtvMXprOEZ1QTViQzUwOHBRWFRJQktFNityMy9nekcxTmdjTk04cjZBd29idFBNM0ZURUQ5cnVVcGc2NU5BRkN2eHpWMktXejc0VmdjR0FESzFQYkRvNXpUSlc4R0FOaEluanIvOHhaSDdYRXVjdmdzSm5LMTNNRDllSWM4L0x2cnhwc1hVZHlRYm9EVEcxQ1hqaENPRkRYOFE4Rk5hQS9HVlhkOVhIWEhwUzE4WEhYUGM1R0REc3BsNnZKTlUvV2p3UUdveTdqcVVsTEViYWQxYTMvcWtyMWYrZm5MdnNCMkhuaU9oMFZTZkFjQWRidFhVNEZERHE3ZkRMQVVBR0JEYlQrOGJwcm1kOGNOQU5qV3VPcmU1WnpKWVl0ZjBlV1lTTXJaZXkxdS80OFVKMnI3NFYzT3dmKzA1ZDdMKzV3M3ZuYlQ1NnFMRzNKSC9HTTN3Q0djRmpVOFdmcUJhUDU2Yno1UmNCUFc2VlNSNGpmMFUvTFJtU0tIa3dCTFlqTnBOUGczaVNRQWxDUVhodDV3NzdHMVl4c2wrNkd3WVNlM2EzZytBcmFtd0FFQTZuWXZQeThWTFJkcEtHd0FnQUxsNi9nejV3NEFtTUs0NnU2a0NRRTc1Q3c4eTlPdFU2SERoN1lmN2kvdHhPVDg1dU9jNC94bjB6UVB0L3hWNlJ6Y3lKTTFOdkxUZEM4bkZva0xZUndwYVBoSEdzdlNOTTBIWS9SQ3F2YTltanVzdnZYK0s5SzFuRWp5ZnB1TFBBQWN3cmpxdmpWTmMxM0h4SzFjeXdVT3QvSnhaQUwyQjdhV05wdThGNEhrczJzVEFGVHRjV3EwazZaQ2wvZ2k4elBmdlFCTEFRQTJKSTRBQU94RG5oQndmWUo4eWJUZjhFZmIvejBNNGt2VE5HbmkxTHZjK0xGNHVjRlZ5cHQ5UG1GZWFZb3ozOTlrVXNPUHFpdHVTQlVqVGRPOENiQ1VwUnZ5bTFQUU0wOFJTWUZnRDJVaExlYTlPdUZGbS9rOXpKV1FEM1ROQmFBVTQ2cTdsVHN1U1REWWpBS0hDU2xzMkZyYW1MdmpQUWhrMS9JK3doMEhCQUNxOWF6dGg4KzVXVkl4Mm41NDVKa1BBTXFrc0FFQTJMY3orWklwZ2Y5ZDB6VGRqbjh5M2J2OG1uN09GRHcwT1FmMXcrbFB0QmhyemwrK24zOGU3ZkVlYkxKYzNHcUtHL0xCUDVhc2UzQ0tHbjRnb1N1c25hdkRTblhtb24wOVgxQjN2V2d6bjFRSjZuc1dnR0tNcSs2KysrR3RYTXZGMGJjS1hIc1liVCs4bE9TeWxTR1Bhd1U0cTJ2NzRYV3BIWjBCZ0xXOFNjL3doWFVlTEtvWUF3RDRpOElHQUdCT2VhL2plL3l6N1ljVTUzZzVjYTU1bDMrZTViOXgwZi91Uzg1emIzTGU1cW5qTS8vOVZkTHJ1SDdtZjNRLy8vUE9nZkxuVXg3dWszSFZ2WnZ5bDFaUjNLQVRZd2lMVFJTL1NBcjRubjVaRWM3VDByb1A3VU5PanIranlLRTQ2VHg5YmZ2Qit4aUFJdVFDQjg5c203dVpBanhwQWtacEM0OGdGemE4V1BweDJNTEg5Smt0YnRYQVhGSkg1N2YyL3dDZ2F1OUttZGFVNDNDYTNnRkFZWEpESklVTkFNQkJqS3N1N1Nla24zMFZPbHptNXBuN29KSWJSS1lpamVkVEZ6U2M5Yjk5L2VJNXRQM3dwTzJIVVpMTVFhV2locnZqcXJzdXNQbVhNKzlMaFEzeHZCcFhYU3NoL045U2tVUHV6SG9qVDEraERLbUwxbkV1VGdHQTBNWlY5eVRkaXpsTEc3dVpPMWl4QVlVTld6dFMyQUNzWVc4YjFRQkFDRjBPN0llVzk4WEY0UUNnTUxrUmtrblBBRUFJcWRBaDV6NjNUZFBjVHZIU25CUE52NTNrZkk4Yk9mLzIxajRMRzVwU0p6ZTAvWkE2VjM3V2plUGdkQTAvbysySE83bjd2ZmRsUE8vSFZmZG82UWZoS2lZNUZPbG1udUtRQ25kZUx2MWdBQkJidWxibFJQMDNUdFZHVEhEWWdNS0dyYm1mQk5hVnJrdlBjMmNqQUtCT3Y1NTJNQXpNOHd2ODVZdmpBSlFpTlFyVnZCWUFpR3BjZFNtWDRjblo1Ylg5OENqL2R3OFhkT0pPY3FPck5Nbjd3NkVXVVZ4eFE2N2lkYk43V0w4SVlQNURJbmhvYVFyQi9aeTB6NW9VT1JUcFJlNm1kY3Y3SFlESVVuRjBMbkQ0dzRuYVNFb2svYUNyL3VWeWNFeGh3K1kwTGdBMlZVTENJd0N3ZzdZZlV1ZkN5Qk1jVEcyQXZ4d3MwUVJnRTdtSnJjWkhBRUJSOG5TQy8wd29hUHNoeGUxVDRjT2RncWRTZmN6UGxCOE9XY1J3a1dLS0czSUZ6TzhCbHJKa1IrT3FlN0wwZzNDV1lwdXdUbkpSdytlbEg0aGRLSElvempWVEhBQW9RWG93YnZzaGpYVDgwd25ieUQwRkRoZkxoUTJDWTV0N0VIR3pDb2d2VGNyeDdBa0FWWHVXci9maG11bmttREhRTkYvRTdvR0MySU9FODlsZkF5aFFqcTllZW4rVGl6dHY1UUtJNi9rLzM4ci8zM2R5cnQ4VVVxN3NhWjdzOFk4L2VTSkZjY0lYTitTazJuVGdid1pZemxMcGZ2OERpVE9oNlRvNk1VVU94WG1SdjZQdStONEdJS3IwQU4zMnc0MzhZRDNWUS9zU0tIQTRoK2V6cmQxVkVBN3M0TG5nSzFUanhEUVc0QUpSci9lS0cxaXlMMDNUcERqb2F6RWdXTHlQcFRRdFNST2g1SHpCdjZUcitVdTVUUUIxeTBVRng0bzh0eE82dUNIZjRCb3Jlamk2My8rZzdZYzcrY3RHQWxZOEpvdnNtU0tIb3R6TVV4d1Urd0FRVnJxM3lOMEtGTE52SmhVNHZIWHYreGVGRFZzNXlZV3dSWGJwWURQanFtdHJQV1I1anlZOW45N1BIVzV1ZVU2ZDFiWDBIZXlaRTRxV2tpbWU1OUhxbEt2YUthNTVIL3JPbWE1Mjl5ZnVhc2ZWRkRjc1EycHk5eTdIZlQ1TG1BY0k3Mk8rank4aWp5ZnYzOGo3T3B6VFRzNGZUcnM0bStRTEFKUWdaSEdEQlBJUWZoYlUrSWNKSXFFTjQ2cTdzL1NETUNkRkRrVjUwL2JEYzU4UkFLTEs5eFczMm43NDdKNWlJNC9iZm1pV1h1RFE5c01qaFEwYlM4R3NXNUpWcU1HWklQNkZBZGxjUlBjb0orYlowNW5lazl3MWx2aXFUWDRHNnBYdldhOU12TXJQQmFjLzRvclRTc1dNanlMRkMvUDluZk84dlkrNVM3Q2tSaWpEQTU5WEttRGZZQjVIcVZoUm5oY0FVSXR3eFEycEEyVksxQWl3bEtYNmJWeDF6NWQrRU01cSt5RnRHTnlMc3lJeVNUa0hwc2loR0YzYkQ2TU5VQUFpUzRWNDdyczN0dWdDaDdZZlV0Zlczd01zcFNSZnhsVjNhK2tIZ1dYSkUwcGU1NS92Y2tKYytyOGZlanZzTEUwVHVtVVNEQUNIbEJPNC9wWEVsU2U4dlZUY09Ja25QeDdmQS9OTXM3bjM2VHlLcHdFd3QzeFBKb2RnZWw5eXNhTENFUUNnV21HS0cvSzBoazhCbHJKVXV0Ly9vTzJIMThiamhaU0tHdTZYTW1aeENYNG9jakRoSks0LzJuNDRXbnFIWndEaUdsZmRmY1h1RzF0a2dVTXViUGdqd0ZKSzhqRjl4cForRUtENXArQWhkWFkrbmRUNTJyVm5KNmZKb3dBUVJrNzArcDdzbGVPUDcreGJieTFhUWFqbm12VnBhQWZBb2Rrdm1NNXZ1YUJCc1NJQXNBai9pL0FpMjM1NHA3RGhZRktpK0cyRkRmOUlJM1p6bDNPRkRmRThIVmZkZFlVTk1hVUg2ZHdKOW03K2JpR2VsQUQ1TFNmd0FFQTRPVW4vbFRPemtYUjlYMHlRU0dIRFZvNFVOc0Q1OG5OczZtTGJwajBIaDJrcnZsOEFDQzNGRTlLK2RiN2VIemxibTh2UFlaUWpkWE8rb2JBQmdFTnErK0c1NHRLZERUbWZxMDNYZFlVTkFNQ1NITFM0SVhWTHlVbmt4c0FmeG1taXVOSHgvN3dmMDhQQTd3R1d3NzhkNVFjMlkvVUtrSU5GMXhVNWhIV3RhWnF2cVpCcjZRY0NnSmpHVmZkU2d1bkdYaXlod0VGaHcxWmVtZHdGNjBsN0RqbnBVWkhkWnU2VnRGZ0FsaTNmRzkvSWlXS3NUM0ZET1Q3bVloN0pqd0FjbWlLNzdaM214OXlSendVQUxOWEJpaHZhZm5ocldzUEJTQlEvSTNVd2IvdmhjMzQvWGd1ek1Kb2NZTGdoR2FkTVo0b2NKQ2ZHOUh1ZW5BUUE0ZVJubFFmT3pFYXFMbkJvKytHV3dvYU4vWktMaFlBTjVNL05iY1g2NjlQTkdZQ1M1TWxOZHhRMGJpVFN0ZDU5eDhWT1RPMERJSUsySDU2WTJyQVYrVEVBQU5uc3hRMHBJU0YzeDMvc0pNenVpeHZoZjh0Rk5sK2JwdWtpcll2dkNRUjNjeVc2N2pLRjAvMHl0SWZwbXB5S3ZKWitJQUNJWjF4MUgvSWtLTmIzSWdlT3FwSUxHLzcwUHRqSXorT3FlMTNRZWlHVTFCVXZGK3QvY1diV0lva09nT0tZR3JnUms1cks0QmtRZ0Nqa0pHM3VnZndZQUlCL3pGcmMwUGJEODV5UW9EdisvSjRhUS9xUGxQRFQ5c09veUNhazlOQjJQWFg5WC9xQnFFMEtGdVVpaDZPbEg0dGcwalg1cTA2YkFFU1U3d2wxejk3TW01b0tIQlEyYkNVOVU1blFCZE80NHhxMGxqc0ZyQkVBL2lOUERWVGdzQWI3eDBYd0hBakF3Ylg5Y0VkaDVFWk9tOVIrS0dqTkFBQjdOMXR4UTlzUEtTbmxWNmQwZHU5VE1uSGVvRjI4OUNDVko0ZThXZnF4Q09pWC9GNzEwRmE1UEQzbVJoNnJTQngvdFAzdzB2a0FJSnJVUGJ0cG1sdVNTemRTUllHRHdvYXQzUFpNQmRQSlRVSWs4bDNOTkVBQWlwWGpaeHJ5WE8xVzlBVXVuYVpoQUFSaGFzUDZQbXBTQ3dCd3ZyMFhOK1JrOHRRaHYzTU9acFVTZis2T3ErN1JnbDd6aGRwK3VKNExiRDZaSEJMT1VTNXFNQzUzUWRJRGVocXJtTDZuSkNxRzhxTHRCOGx3QUlTVDd4MnU1eTVHcktmb0FvZjBETmMwamNTTTlaM2tEbC9IcFN3WVNwR1R4SDV6d2k2bEl5TUFwWHZ1REY1SmNRTUFzSTVuanRKYVVwNk1oaG9BQUJmWWEzRkQ3Z0Q5eWNHZjNhdVUrS05EeDEvYWZraGpXTDhxc0FsbnlNazNLdmNYTEgxUDVVUkZvNy9qdUpjbTNPU0VRZ0FJSlhVeFN0Mk1uSlcxcFFLSDRnSWsrVDdrV0dINjJyN2tQUUFkdm1CL1RMa0RnSXJsZStsWHp2R2xKTjhCQUpjcWNTLzZRRDdLa3dFQXVOemVpaHR5NStjWGp2K3N2dVJrY1FIWExFOE5lUmhpTVp3Nm5TcHlSL0lOcDlMbzd6VEJ3L2p2TUZJaTRkZTJIM1RqQWlDYzNNM0lQY1A2L2lncHFLU3dZV01mYzlFUHNFZDUvK0s5WTN3eENRd0FWT0N0a3dnQXNCTUorMWM3TWJFQkFPQnFreGMzcEVTRTFQSFpPUExaUFUwSkRaTEZDZTZwcVNKY0puY291SkVuZTNCNGYwcFFBU0NpZk0rZ3ErYjZpaWh3VU5pd3NmY0NZVEFyQ1k4QVVMRngxUjJiRkhpcEtKTitQd1JZUTBqMjhnRUk0SkdUY0NYWGF3Q0FOVXhhM0pBM1RiNUtSSmpWa0tjMUNMQVMyVytwSzcvMzZmbmFmbmpkOW9PSksxa3Ewa3FUUGRLRWp4QUxJaVZENnJJQlFEaDVZdDB2enN6YTBqWDlUdkExS214WVgzckdFaXlFR1kycjdwM2pmU2xUWkFDb2djVDVpM1ZSRjhiZkpFc0NjREE1WDh6ZTd1Viswd2dVQUdBOWt4VTN0UDN3UENWTE9PNnpTbDN3NzVqV1FHQWZjMUhEY3lmcHYxTENlTnNQWTlNMHo2S3RMWUwwWUovZVAra2hmK25ISW9BM0NuQUFpR2hjZGErYnB2blp5Vm5icDdZZlFpYWZ0djJnc0dGOXJ6eGp3Y0Y4Y2VndnBMZ0JnQm9vYnFCa0wvSkVSQUE0QkVWMlY3Q25Dd0N3dmttS0c5cCtTTjNZZjNYY1ovUEZ0QWFDTzUwbzRnSDJIS2xqYnRzUHFTanBUYmpGQlpRZjhtOUlJam00RkJoNXZmQmpBRUJBdVpQMkErZG1iWDlHSzNESWhRMDNBeXlsQkUvejFCTGdNSTRkZHdDQWc5THc3WEttalFGd0tISkRMbWNLTlFEQUJuWXVibWo3SVhVeGVleWd6eVoxYUx4bFdnTkJuVFJOYzlkRWtmT2xqamx0UDZReGc1OTBwZDFNZWorbDc3NlV6RlhTdWl2MExCYzBBa0FvNDZwTHo2VzNuWlcxaFNsd1VOaXdrUWVhSE1EQktXNEFnSXJsWjB0aSsrejhYT3BlanQwRHdPelhJRWY4WXY5djcvNnVvOGF5UFFBZjllcDNUQVNZQ0dRaXdFUUEvYXdIbXdqYUhRRW1nallSWUQvb3VTRUM3QWl3SW1nVEFUZ0N6VHJkdTNvTWxQK1VYWCtPcE85YnkrdmVPM2RtV25WVXFsSWQ3ZC9lTVlVYUFJQTdlbEM0SVRaSDNLQ3VSeTRhZjZwREl3WExIVVMzK3FhMnNUeEhGSVIvVFNuVnhSM2NnT1JpcnI2cHE1Z093bWJzQ1RnQVVLSytxUzlpMnRPbEUzUW41emw4dThrREVHeFl5Rk9GVmxBRTRRWUFnTTF5UDNhN0hIRDRWdHJVUmdER3EybzdVeHR1OXE3a2d3TUFLTkc5d3cxUmhDRFlzQjRmbzJqY2hoMGxPc25GNWpxSXpsZTEzV0hWZHIwSk44dVZwNFBrenJWamVrMERrd01Pd25ZQUZDZW1QZVdDL1MvT3pxM3lKTEdMVFFVY29sbUNZTVB0Y2xqbnNmMEFBQUNBL3hvYmNMdEhNYlhSc3pzQTFrRzQ0V2ErandFQUZuU3ZjSVB1aW12MVc5L1VyeWIwZWhtT0xvcHM5cDJ6bjFWdHR4K2hoamVsSGR0WTVNNjFNY1hoYk9wcnNTRnZCQndBS0ZYZjFOdnVFZTVrSXdFSFV5RHZMSWQwdG5Ob1p5REhDd0FBc0E1Kzc5OWRibFRVNTkvaG01N2VDTUNvbVJaMHZhNXY2dk5TRHc0QW9GUUxoeHNFRzlabTFwM3h3MFJlTDhNeGUyL3VLTEw1V2RWMk8zbmNiMHJwZlduSE5sWjlVKythNHJBeE9lQWc0QVJBa2VJZTRhT3pjNnUxQmh3RUcrNHNQL1FTYkFBQUFQalpxVFZaV1A0ZC9qVS92NnJhN21CZ3h3NUErWVFicnFmbUN3RGdIaFlLTjBRUmdtREQ2cDMxVGIybGlJRUNQZlBlbkM4WGcxVnRseFAzbjZOQWpEVzZNc1docys1cjl6NkhlaWIybWdFWWlKaUM5ODc1dWxXK2YxMTU5eWpCaGp2TGV3THVyNkJNdXQwQ0FHeWVjTVA5NWQvL2Y4WTBoL3gzWExXZGdsUUFIc3FlNy9YY3R3QUEzTU9kd3cxNWM4TU42VnE4alE2alVKTFh1WERjdUx6NTR2UHhhMHFwTHZINHBpU0t3TjVPZlIwMndFaHJBSXJWTi9XQis0TTdlUktUR2xmQ25zS2RuZGdUZ0tJSkhsM1BuaEVBZzFlMW5YdnhBY2pOanFhK0JrdTBsMUw2KzByWTRVUFZkcTlHOCtvQVdEbE44RzdtdmdVQTRINSt2Y3QvcW1xN3c5amNZTFZldUxHbE1MbXdadDlKbVM5RzkvNVo0ckZOV2QvVWgxRThkMjZLeHRvOGlwR2FIdjRCVUtTNFA4aUYrKytkb1J2OUUzRG9tM3FwWFJ2ajNzeWV3dTF5czRQRDBnOFNKazZvKzNxbWZBTEF1SlUyTmZsTWdINGxYdWEvcXYzdWRPZi80eWcvQXpEWkhZQTU3SlZjNzZ6VUF3TUFLTjJ0a3h1cXRzdUZ6VytjeVpXNlRDazlGV3lnSUhtajhyRmd3M3k1YTAzdVlDUFlVSzYrcVhOUjNsYUJEMXpHN0hrRWZnQ2dTSDFUNXdMN0Y4N09yWExBWVduZHR3VWI3dXkxWUFNTWdvbU5BREJ1bXJkY3I3U2k5cU1Dam1FcTZtZ1c4ZlhLaElkdlZkc2Q2ZFlOZ1B1bkc2a0JBd0M0cHh2RERWWGJiZXRzdVhKZlVrcmJ1UkIzNUsrVFljaEJtMmQ5VSsvb3Z2S3p2RW1iTjJ4VFNuK1ZkbXpNbDkvTHVRT3U1Vm1iUCtQZUFRQ0tGSUh5cDg3T3JlcXE3Ujc4NEVXdzRjNWVSUGdHS0ZqVmRoN1czMERURmdCR3d2ZjlRUFJOL1dIcWE3QmhlWnJ6N3ltbHoxY0NEL252UXpST0JBQ0VHd0FBN3UzWFcvNkRiclJXcTR2Q1d5akJiemFENTZ2YWJpcytEM1ZvSEtEY0FUZTZEd3Vsck1leGg0QUFsQ3dIeTZ1MmU1eFN1b2lIOGN5WHB6S2Q5azE5cis5MXdZWTd5K0h5cFUzS0FGWktrUllBakZnOEIzanVIRityeEdmR3ViSFJtd0tPZy85N21mK3F0cnZhUFBGTFBEYzQxdXdQWUpROEZ3WUFZT211bmR5UVIwbW1sSjVZOHBVNUUyeWdFRy83cHE0RUcrYUxvcXl2Z2czREZ1L3ZaMU5maHpYSmhaQ3ZKdkZLQVJpc1BLV3NiK3F0ZU1ETzlaN2ZaNEpEMVhhSGdnMjN5bFB6bmdvMndEQkVzYVBQdGV1ZGxYcGdBTENBQTR0MW94S0wwbzhLT0FadTl5UkNLSC8vTU9YaDJMTUVBTWJNbEVzQWdQdWJPN21oYXJ1ZEdDWEphcHpkdC9zbExORkozOVM2RGw0anh1YSt2OWQvbUNMbHdyR3E3WjZtbE01MWFWNjVYTkFvTUVVcGNtRnU3MndBOC9STnZSMFRuZ1JacjVjL1I0L3YrdHNoZ2cwNlo5NHNCeHUyYzhpbTVJTUV2bk5vT1c2a0F5OEFZK0Izek0ySys3N1B2Nm1xdG52bm1mWmc1ZkR3WHRWMlY0Ky91ekxsd1c5bWdHRXcrV28ralpVQUFCNWdicmdoTmcxWURjRUdOaTF2RE83YUZKeXZhcnQ4Zlg0cThkaDR1RHp5dUdxNzdYZ1FJK0N3T25XK2xuU2pBR0FJOGtTOW1FN2dJY3oxL2lrMnVDM2dJTmh3SjE5eXFHWUF4d2tFVFdEdVJMaWhmRytxdHZNZFBRMGZjeURMZENoWVRFeHc1Z2FsN3ZYMlRYMFF6YXJzOTQ5RGJqN3haLzY3RW5xNGpHWktSNzdmbUtCUFB3U0FHS2ZaNTF5K2ovZjdlanljU3dDQUIvamx4LzlvakgvVXRYSTF2Z2cyc0VINVIvR3pYTHdsMlBDelhQQmV0ZDAzd1lieGkvZi9kbHdUckk3Sk1BQU1SdnhPTzNIR2JyUjNVOEdQWU1PZG5BazJ3TEJVYmJlVlVoTGF2cDAxZ25LOFRDbDl6dnVjOFJrRzNDSUs0L2VzMDQzT0NqNjI3S0NBWTJCMUhzVTFtci9mK2l0L3AvbjY5WDBIak1Ec2MrN3ZhTUxET0tqSkFRQjRnSi9DRGJucmdRVmRpVnhFdXpQQzE4VXd2TzZiZWt0SGs1L2xUYytxN2ZLNi9LMnp6M1JFd01GbjhtcTlHdk9MQTJCOFlpckJXNmYyUm5NRERsRU1KTmh3c3hQTkRtQllva2pLMUw4N01MVVBpdlJJc1MvY0xuN0x2TGRVdHlyNnU3NXY2bU1OQ3licGVWeS9YNjhFSHZMMDdxT1k0QTB3Uk0vemRQeWhIUGVRam5VRDFPWUFBRHpBZCtHR21Ocnd4SUt1aEc3NWJFSXVvS2xpWTVjZlJHSFdWOU5xcGluR2VyNlkranFzMEtPcTdRUklBQmlVdnFuejlJSFh6dHFOOW1KS3d6OFVBOTNKMndqUEFBTVJEK2UvQ2piY1NlbWRuQUZncnFydFB2Z3RjMmZGQnhuak45ZVhBZzZGemNwMURyOUg5L09yVXg0K1JCMEV3QkFJREFBQU1IbS8vckFBT3Ztc3h1c29vb1YxNmZxbVZsUjhEUVZZek9UdWtsWGIvWkZTK3RPaXJJUngwQUFNVGc0RzUwNS9LYVZQenQ2MTNsUnRsNktqdWZ2cW0vM1JON1VKbVRBUU1hM2hWQk9FaFdpb0FjQ2dSSWpSNzcwRkRHaEswMjVNNllZZnZjeC9zWmN4azhNdytmZjZCOC94QVZnQnpXOEJBQjdndjNCRGRGZCtiakdYN3FPdSthelJGMU5DcmhlZmM2YzZMM0pWTGphTHdJdmlGUURnSHhHQWZLb280a1p2Q2o2MlV2eldOL1dIcVM4Q0RJRlF3LzNaOXdSZ0tEUTl1cmVQUXpuUVhLQmV0ZDBMNFJYdTZFazB2dnJ6U3VqaE1vY2Rjb0IzUUtFZUFNcDA3cndBQU56ZjFja05SakVGYWsrWUFBQWdBRWxFUVZTdXh2NFlYeFRGeVp0dHUzMVQrNEUwUnhRcFhBZzFjSVA4V2YzWkFnRUFNMUVVOGRoOUpQZjBRaUVFbEMzMkNuS24xajJuNnQ0R1Urd0l3RFRGbEliaktHTG1mZ1kxaVM2YUZRZzRjRitQNHZmQjNnOVRIczRpOENEWUMvQzlYZXNCQU1BcVhBMDNLTUpmdnJjNjZMTUdyMjJtemFmekluZVZnMEZWMjUyWllBUUFYSlYvejFWdHR5M2d3SUtlNW5DTVJZT3lSSEhqdmpERFVnMnEyQkdBY1l2bkFibVIyNEZuQWt2elpZaWg3UWc0UE5QUWlDWEt6NDZlVjIxM2Rmckx4d2c4bU5nSUFBQUFTL1pQdUtGcXV4MWRTNWF2YityRHNiMG1pbkxTTjdWUTBqV3F0anRXc01DQ3pvVWJBSUFmUldCOXEycTdDNytidVVXZXFMZXR5UUZzUm9RWGNpQnRKem9IS21wY3JjNkVHZ0RXS2NJTHMrLzVuZmp6RzIyMUJodGtqSVpHcGpHeVNpL3ozNVVKRDVkeHpSelpGd0FBQUlDSG1VMXVlR1VkbCs3ZHlGNFA1Y2k3WkxzMnh1YXIyaTRIUHQ3ZjV6L0w1TG1tQUlCcjlVMjlYYlhkcVRBazE4Z2RUYmN0RHFXSno2MGgyVkY4TmhpYXVnQ1VZVDhDZmtPeEpZQTRISDFURDNwSzA1Vm1CWDdMc3c3NWQ4eWIvSGNsOEhDUzc1dE5kd1FBQUlERnpNSU5POVp0Nll5Z1pObHl4NDhkRzJEenhRU2FVMFVRUE1DUUhnSU9naTZlQUl4TjM5UzdKb1F4eDFsK2IxZ1lDcVdJaTFYSVV4dnNmUUtVNFlucEJheklIMk5aMlBndHJ6RVdtNUQzai9ZaTdHQ3lBd0FBQU56UkwvRnYyN0pneTZXZ2t5VjcwVGYxbG1ERHovSW82cXJ0OHJwOEZtemdnUVQ5QUlCYjlVMmRDeUxlV2luQ1I4RUdZSUwyblhRQUdMVXZRNS9hOEtPK3FYT2pnc2N4SFIwMllUYlo0V3ZWZG4yZUtCS04yd0FZSjBFMkFJQUhtSVViZEhGYkxodGpMTXZydnFrcllabjVxclk3ejV1QU9sUHhVREc2WFRobXVjN0c5R0lBNEtxK3FRL3p2YnBGbWJ4M2ZWTy9tdm9pQUpPVFAvdk9uWFlBR0xWUkJobHp0L3krcVhNeCtiUG9vZytibE9zelBrZlE0U0tlVXdFd0V2Wk9BQUFlNXBlcTdiYXQ0ZEpKNFBKUUp4RnFPTGFTUDZ2YTdqaHY5cVdVNnRLT2pjRTZkT3FXVGlnTGdGR0xlL1VYenZKa3ZlMmIrbURxaXdCTXpoZWZmUUF3ZXUvRzNuQXJGeHZtYWVtYUZsQ1EzTVR0VXdRZHprMTBBQUFBWU9yeTVBYmhodVV6Q1lQN3lsTS9IdmROYmJ6L0hGWGI3VWVvWWErNGcyT3dxclo3NVhON0pZUWJBQmk5S1BoNDVreFB6dXVZM2dFd05ickpBc0M0ZFZNS011YW1CYm5SbUpBRGhhbXZUSFE0Y25JQUFBQ1lvbCtjOWRVd0VZTUY1Zkczei9JNDNEd1cxK0o5TDNjb3Fkb3VyOHY3a282TDBUQWhaUVhHM3QwTEFHWml2UFRUdUtkbi9GNllzQWRNMUc5OVUxODQrUUF3V3BkVERUSmVDVG5rNWdWZkNqZ2ttUG45eWpTSExhc0NBQURBVkFnM3JJN08rOXhWN3ZxNUZVVlJYSkUzNnZLR1hlNVFrbEo2WkcxWXRxcnRUcjIzVnVKc2hLOEpBSzRWeFo3YkFnNmo5MVNBRTVpb3ZIZjF3Y2tIZ0ZHYmZQT3QvSnl1YitydENEcThMZUNRWUNaUGMvZ3E1QUF3SEZYYm1YNEpBUEFBdnhnbnZqSnZSdnE2V0o1M2VZTlUxOC81b3VqOGEyell3U3JlWS9uYWUyNWxWMExSSHdDVGs0dEFjbWhabDhkUnlxR1Z4enFXQXhQMTJ0NFZBSXplVTc5M3Z0YzM5V0dFSEI2bmxENldkR3hNbXBBREFBQUFrNURERFRhclZpUUtaK0ZISHlQVWNHQmxmbGExM1ZFZXNhcm9uRldxMnU0d3BiUm5rVmZtYUtTdkN3QnVsYnM4bW1JMEtsOWkwdDZrTzVnQ2t5WFlBQURqZGluWWNMTm9aUERxU3REQlJBZEtNQXM1dUZjSEFBQmdsSVFiVm11dmFydjlNYjlBRnRKRnQ4OVhsdTFuK1ZxSlVNUHZwUjBiNHhMQkJ0TjFWdWVqNGo4QXBxNXY2andoOFdUcTZ6QUNYWVJWQUtib21XQURBSXphTE1qdE9mRWRSZERoTUJxWTViRERDODBOMkxCY2k5QlhiYmZyUkFBQUQ5RTM5YWtGaEhGeFhUTjB2M2dUcjl6N3F1MTJSdjRhdWRsbFBCRGVVZkQ3czN4OVZHMlgxK1Y5YWNmRytBZzJySVdwRFFEdzc0YlJ2bzZPZzNhV2Y4Tk5mUkdBU2ZvU3pUbk9uWDRBR0sxM2d0d1BsNSt4NStZR1A0UWRQZzc5ZFRGSW42cTIrK0RVQVFBQU1CYS94dXZJWFNXZU82c3I4N2xxTzJOZHA4bjQvbXRVYmJlVlVqcU4wYW13anZkY3ZoYjNyUFJLblFsTkFzRC81WTZPRWVUOTA3SU15a21FVXdDbTVtMys3bkxXQVdEVW5na3hya2JzamYrM1B4N1B3ZkkwOXdQUHdsaURsN0VIdGEzWkhnREEwcWluSFFibkNVWm9GbTQ0ZFpHdjNIblZkallUcGtNeHpBMmllOGpMWWcrUTBhbmE3dHpEZzdWUUJBTUFQK2liK3FocXV4eDAvOHZhRElMQ1htQ0t1cFRTcm4xTEFCZzF6NjNXTE82dGp1UHZQMVhiNWNERHZ1ZGtyTUNqbE5KWFRSZUJOY3ExWm04c09BQUF5ellMTnh5NTRWeTV2Smx3VWJYZGpzMkVVZXY2cHQ2WitpSmNwMnE3UTU4MXJGTjBScnFJejJCVzY2T3BEUUF3WDkvVUg2cTJlNUZTK21TSmltYnlIakExbHhGcTBMMFpBTVpMaUxFd2VZOGdwZlRoNmxIbEJua1JlTWgvVDZhK1JqelkzM2tmeWpNYmdJM2F2VHJSQ1FDQXhmd1Ric2diV2xYYnZVc3AvVzc5VnVwUmJDYm9sakErbDhaOFhxOXF1N3daKzc3VTQyT2NvdnVSRHNucm8rc1hBTndnUDFET3Z3WHpiMExyVkNRUC9ZR3BFZWdDZ0hFVGFoaVFlRzU4K09OMDVIak9rZi8ycHI1R0xPeVRnQU1BQUFCRDljdVY0ejUwRnRjbUJ4eDJKL0pheHk2SEdwNzFUYjFsZy9obmVWSkoxWGJmQkJ0WXQ2cnRqZ1FiMXVvUG40RUFjTHNvVm5nY3Z5TW94MU1QKzRHSm1PMWpWWUlOQURCYU9kVHdPRThadDJjN2ZIbktROS9VKzNILzlzOWYvZzJiOStSVFNsK212ajdjNmxOTUJRRUF1SXN6cS9Rek5aNWxjMzZ1NVhwbThINmR2WUNZM3BBM1F2NTBXdGNpYnlhODdadGFxR1M0ZExpN1J0VjJXekZpcnk3eUFCbXRlTzlkeEtRYzF1T3NiK29qYXcwQWR4UEZKVnRWMitWN2xpZVdiYU5NNEFPbTRpU2xkT0R6RGdCR3pUT3JpWWpHQ1VmeDl4OVRIcmhHZmw0cjRBRERNcGpmN2pHdHVJQWpLWkppV3dDQUI3ZzZ1U0ZGY2FJN3ovVjVVN1dkN3BERGM2TEQzZldxdHN2cjhsV3dnWFdyMnU0ZzNudUNEZXYxYWtvdkZnQ1dwVy9xYlYwek5rcXdBUmk3N3NxVWhuMmZkekJKSDV4MkdMMTNNYVhCTXl0TWVlQTZUK0xaTFRBY3JsbUFzdXc0SDBVVEpvT1IrblhPeThwRmluODc0V3Z6dkdxN2I0b3FCaUUvRk41MW51YUx3bktUWDlpSXF1M09CV28yNG9YUFJBQzR2NzZwZDZ1MnkwVm5MeTNqV24ySmNBbkEyT1RRM0g1MDh3V215ejQyakZjT2FSK1pDczlkbWZKQTJNdjdUemtBWTBHZ2FQazMvYXNCM3NkZmFqNDRsMkpvaHNnK3dueGJKUjRVM01JekFnYnZwM0JEM3VTbzJ1NTFTdW05MDdzMitVYi9hMTUzblZXS2RCa1BnODZudmhEenhBYm9YK1VkR1ZQZy9iZFJmK1JSb3hOKy9RQ3dGSDFUdjZyYUxoY1ovRzVGMStJc2gwb204RHFCYWNnZGVBL3RKM0lIYnhYQ0FneldTWHpmSzB4Z2FhTElQZi90ei80N3E3YmJqc0JEYm1iMnhHcVB6ckhDdkVGNjRWa2NBNURyYUo0N1VUOFIrR0NJempYam1zc3pwYkk1UC9QWlEyRHc1azF1eUJzYXgxWGI3ZXJXc0hidnE3YmJWMmhSbE45MHNaaXZhcnVjTkQvMW80eE5xTnB1Szk1L3BqVnN4a25mMUVjbEhoak1vWWgxZ09LM3lLZXByd1BUMFRmMVFVejBlK08wcjFTK2g5bmY0RDhmNEtFK1JyZG14UzBBTUU1Zm9nRDV5UFFWMXMyVWg5RjdsS2Z3ZTdZRHNENzVXWmM5SEFDQSs1a2Jia2ovYm1Ec1I0Y0dDZHYxZWw2MVhaOVNlbVpTd0ViOVlYTm5Qa1hsYkZvT2daa3V0RkZuaWdJQllQbHlOK1dxN1M3YzU2eU1qdFhBa0Z4R0o5MWpEOEVCWUxRK3h2ZjlCMEVHU21iS3c2Z2MvaGhlQVZpQ1UzVmwxekl4aDZFNTFZUnJMcDl4WlhOKzV2TmNnY0c3TnR5US90MnMySTNpQ3BzUzYvZTVhanRkSmRmUG10K2dhcnRqblZuWWxBaldYSmdXc2xFNjRBUEFDc1VVeFF1VFM1YnVkVjdia2IwbVlCek9vbERzVkpNVEFCaWxMZ29LUGdnc01pYW1QQXhXbnQ2d2I0OEVZRzEyWXQ4SEdEaVRXTXFVejh2VTF3REc3TVp3UTloUlRMb3hlN0VKdE9zQjU4cDFzYzY2NDh5aFV6NmJKbGhUQk1FR0FGaUR2RGxhdGQzVGxOTGYxbnNwWHRod0JqWWdUMTQ0ajJMR2l3Z3ZYRGdSQURCNitSNWcyN01tcHNxVWgwSEk1MGE0QVZnbW5kNnY1OWs2Z3hMUHA1eTArWFowd2kvU3p0UVg0RHFlalRJR3Q0WWI4Z1pjYkRwOGRjWTM0cEVwRGl0MUtUeHl2VWc0NmhyTHhuZ1BGa093QVFEV0tCZkFWbTMzV0tPQkJ4TnNBQjRxUDgzN0ZwL0hGL0cvNXoya2IvYVNBSUE1OHUrM3IxWGIrUzBDd1pTSDRqelB0Ui9DMThBUytUeTUzdk5TRHd4WW1DTDZNamt2TUdKM21kd3dDempvSExsWmVZcEQzdHg1NXVIcDBydzJkbk8rQ0RTZEs2UmlVNnEyMjRyVWMrMGtiSnhnQXdCc3dKVkdBK2M2Rzk3TFV3L3E0Ujh2SnJRTUY2NTdBQ2JvWk1VZHVIZDE0cjJYVDFYYnZlMmIrbkNBeHc1cmNjT1VoNFA0MXp5alhKMjh2ajZmZ0tXSVJqMFc4eHE1bWFQUUt3TnpKcGd6bDVxWk1qa3Y4NTJWZUZDd3FEdUZHOUwvYjBpZktuamV1RHpGb2V1Yld2THMvdDcxVFgwdzFJTmZKUVhsbEtCcXUyT2Rlb3J4c1cvcVYxTmZCQURZbEJ4d1NDbHRWMjEzN2g3OXp2SjB2dTFZTzVnOEQwOEJZUFF1VnZ4OWYxcTFYUzQrL3V5dHRMQTNVY3ltMkFMdUtNTEtCL0gzajZydFpvWDRHajhzajg4bFlOa1VRMTl2TjJwd2dHRjdVclhkam9iVTVjam53MitFYTNsR3lpajhzc2lMaUEyRjdTZ1dZSFBxcXUzNjJNemg3bkwzOFVxd1liNG9LUCtxYUlwTnlaOXArYk5Oc0tFWTd3UWJBS0FNRVc3WFplTjJYL3FtM2hKc0FBQ0E1WW5pamNmNWZ0dXlMdXg1MVhiZm9yRVVjQTk1Q24vZjFOdnhqTGRLS2YyaFZ1SEJGQ0FEeTZiWTkzcWV0ek0wd2pqWGN6Mlh4Zm00bnU5bFJtR2hjRU82MGpuU0ptWVIzc2VtcUNrT044c3o4QjdyampPZmduSTJMWCtHNWMreS9Kbm1aQlRqdFNBWUFKUWxmcytjT0MzWHltSDI3VUtQRFFBQUJpMC9HNHo3YmI5SkZwZW40WC9OVXh5R2R1QlFvcjZwajZLeFFRNDZ2QlowdUIrZlNjQ1NYVmpRYTlVK2N4a1k0WWJyS2FZdmkvTnhQZGN4bzdCd3VDRjl2NG5aZVJ0c1hONFUvVnkxblErbCtaN21McWM2ZC80c0NzcDdCZVZzU3U1V1ZiWGRlWXcwZitSRUZPTkY3b1EwOVVVQWdCTDFUVzE2MzN4bnd1d0FBTEI2OFp2a04wdDlMNStxdGpzYzRIRkRzV0txdzFaTWwxRzNBTEE1T2tUZlRBRXVReUtzZEQxaHBVTEVlYWludmc0M2NCMHpDdmNLTjh6a292R1Uwa2R2aFNMazBiWjk3c0kvOVlXNHFtOXFIOVkvaUlMeWIxRlFEcHQ2SCtiaSthOXVOb3R5R1ZOdWhPVUFBQUFBZ0xuNnB2NlFHMHZwbG40dmJ6UXJnK1dMeG95NWJ1R1p6Nlk3VTVnSExJM255N2Y2dmZEamcvK29zN3VWdXN3eU9BODNjQjB6Rmc4S042Ui9MNGFjTUgzckhWR005N2x3UFhmbG4vcEM4TDByWGZLLzZwSmZuTHpSK21FS0x6UUhzR0ppeUY0Qmg4UC9uY1VZWjFOdUFBQUFBSUFiNVFmbDBTMWRwL1RGUFkvbmVGdERPM0FvWGQvVTUvSFpkT1prQWF5ZHo5NGJtT0RGd0xpZXI3Zm50OXhteGZxck9idWU2NWZSZUhDNElmMjdVWEJvREcxUmN1SDY1MXpJN2d1VnBFdCs2VjVIVWZtb1J6WG13RldFR3Q0WGNEaDg3NCsrcVhYb0FRQUFBQUFXRXAzUzMxbTFoZVhuZUYrcnRyTXZDeXNRenp4T3JPMk5mUDRBeTJaNnc4M2VsSHh3OEFQWDg4Mk9TajY0Q2JEK04zUDlNaHBMQ1Rja1kyaExWY2ZtNlBIVUYyS3FkTWt2MmtuZjFGWGYxS08rUGlQVWtLY0JmQzdnY1BqWnM3NnAzZmdEQUFBQUFQZlNOL1ZCU3VtRjFidVhUN3I0d21yMFRiMmZVdnBpZVFIVzVvT2x2cG5hTFFaRWNmVE44dlNHblpJUGNLeXF0dHRXQTNrcjF5K2pzYlJ3UXpLR3RtVDVTN1czUVRvZFZ3cktkY2t2VHhlaGh2MHh2OGc4TlNaUGo0bFF3Nk1DRG9udm5jWDdjTlFUUXdBQUFBQ0ExZXViT2o4OGY2d0IycjI4cWRwTzhRR3NobWZqQUdzU3o1MkZ5bTZtSUpwQmlOOTMzRXhZYVRNRTZXN2grbVZNbGhwdW1ER0d0bGh2SXVRdzZxTHFLWXVDOGdzRjVVWEtEM1VleCtmanFFWEhnYTh4UFlieS9CRWptUUVBQUFBQWxxSnY2bS9SQU8zTWlpN3NlVzVZbFoveERPeTRvV2hqbjU0T1VDQkZwN2RUZE1wUStGMTNzMXFUNmZXcTJ1NUFIZHF0WExlTXlrckNEY2tZMnRLOWowMVNpZUFSaVM3NXVhRDh5ZFRYb2pBNTFQQXNQOVRKRDNmRy9FSnpxQ0VIcUl3QUs5WXNZSE0wOVlVQUFBQUFBRllqR3F1OHRid0x5dzJydmxadDkycGd4dzJsMDBVY1lIMkVHMjczeU5RdUJzTDFmTHZjWkZwajBUV0lkZjV6OUMvMDRWeTNqTXJLd2czcCt6RzBOZzNLa3pkSlB3czVETitWZ25McHhQSzhqbEREK1poZlpKNEdJOVJRdkhkVENOZ0FBQUFBQUp2WE4zWHVZUG5NcWJpWHY2cTIwNkFHbHVmQ1dnS3NSOVNJWFZydVcrV3BYYVlMVVRydjBidjVWTFhkOWhBT2RLaGlmVDlOZlIzdXlIWExxS3cwM0pEK1A0WTJmOGk4ODlZcDBpemtjRzdjN2JBb0tDL2FTZC9VMWRqSDNWNTVENzR2NEhDWWJ6WTU1TUQ2QUFBQUFBRHJFazEvTkVDN245OWpXamNBd05BSWFkN05YdFYyT214VHJHaWNlZVlNM2NuZkFnNnJFZXY2OXhoZjJ3cWNhWGpMMkt3ODNEQVRoWlV2dklPS1ZjZTRXeUdId3VWSkczbmlob0x5SW5YNVlVM2YxUHRqZnBIZWc0TnhNb1hKSVFBQUFBQkFtYTQwUVB2b0ZDMnNqdW5yaW1RQWdDRlJzSDkzTHdWYUtaenIrZTV5d0dGM0tBYzdCTEdlZ2cxMzUzcGxkTllXYmtneGdpeDNNNDhDWU1yMFg4akIrU2xMRHAzRWVma2NFemNveDZ3Ny9zNllVNUJYUWczZWcyV2J2UjlISGJJQkFBQUFBSWFoYitwWEthWFhUdGZDSGtXUnpLdUJIVGVVNUxtekFiQSswWGhQdC9lN3k0SFdQdGRpRE9XQW1aUmpwM3NobjZxMk94elE4UllyMXZIVDFOZGhFWDFUbTV6RTZLdzEzRENUQzRCVFNuOTRPeFZ0ZGdQdFJxVUFWZHVkNXRCSmhFOG95MjlqNzQ0dldETW83MHhyQUFBQUFBQkswemQxZnQ3ME5KcXpzSmkvcXJaVHFBQUxFZ3dDMkJqM0xZdjdYTFdkcnRzVUpacTdtc0szbURjeGdXOXJTQWRkaXFoUHU4anJPUFcxV0pEcmxGSGFTTGdoL1Q4dDlOZ21adkgyaEJ3Mko2OTdYbjlkUllyMFI1NUUwemYxYUg5Z1hnazFDTmFVTDMrWFB1MmIrbURxQ3dFQUFBQUFsS2x2Nm92Y25NV0U5M3Y1M2RSMVdKamlXb0FOaUJxS0w5WitZUy9WWjFFZzkxT0x5MDFqdndvc0xTWSsrM0o5MnBNaEhYY2hYS2VNMHNiQ0RTa1NmckdKK2M3YnEzaENEbXRVdGQxK2hCcjJKdk9paCtNa1FnMmp2akc0Y3RNbzFGQytQMkphdzhYVUZ3SUFBQUFBS0Y5TWVQZHNjSEYxZEFIZEh0cUJ3N3JGVkh5RlVRQ2JjMmp0NzAxOUZzWG9tL3BVT1AzZVpvR2xjNU1jNW91bXU4ZHFKQitraStzVVJtZWo0WWFaNkRUOXpCU0hRWEFUdlVKVjIrM2tqZW1VMHZ2UnZzamh5amZyai91bTNoL3ppM1RUT0Npejk2UUVMZ0FBQUFBd0tQRnM4SVd6dHJEY0JmVHZxdTFlRGV5NFlTMXkrQ2VldFpxS2Z6TUZVTUJLOVUxOWJIckRnODNxczc2NTkyUEQxS1E4VEIyVEhQSzFQT3Fhczd2S24ybHh6LzVWZmRxRHVUNFpyVjlMZVdGOVUrZFJxbHRSTk85RHEzejVKbm92dXRqNzRuMmdTR2llNnBKZnBCeTYybzNQcU5HS0cyaWhtdUY0TnZiM0pBQUFBQUF3YnJtN1lOVjJqMU5LRjFHMHo5MzlWYldkWjNRUVlxTEpCODlhQVlxU3c2eC9PU1VQOWlqdS9XYi9QVzl6TVd2ZjFOK0crNUlZa2h4V3F0cnUwRlNzQjh2WDh2dXE3ZDVITGRyUmxLN2xxdTBPWXFxUDMvN0w4eVhDaERCS3hZUWJadkltWE5WMlIxSG83Y09zZkVJT0QxUzFYZDVvZXpub0Z6RmVyOGQrRXlEVU1EZythd0VBQUFDQTBZaENqdHo4N0ZTbjlZWGxaM1M1T2RQMndJNGJsaUlDRFVlZXM5Nkx5UTNBeXZWTi9hRnF1elAzZUV2M0p2OWRDVHQ4VENrZDUvVWV6MHVrUUlkcWk1YnEwWnhyK1NTdTVjSGZwMVZ0dDVOUzJvOC85YityY3pqV0Z3YXB4SEJETXNWaHFJUWNGaFNwMWplRE91anBHUDM3T0c0a2hjaUdvNHNKSXJvdkFBQUFBSXZhamIxSW1NbGQ4ay83cHI2d0lwU2liK3BkejAzdTVVblZkbjFLNmFscm1qR0w1MXF2NHM5MGhnY2FROUhjUk9UR29MdFRYd1MrazcvclB3enNtWEd1dS9pN2dPTVlzeHp5ZTNtbFFIcW1pNXFRWElOM0hyVjRjQzh4dmVIQWZkaEs3VVg5NVkvL2pMTzRsay9qV2k3aU95RHVVZkk5K203OHFUOWJyODdVQnNhdXlIRERURXh4T0l3YkxSK0F3ekFMT1NqRXZZWk8rVVU3eXc5UXh2d0NxN2JiaXM5VTQrS0c0NFZOWmdBQUFPQUJudXVVeVR6eHdQeHQzOVRDTHhRaHZ4ZGpnc01uWjJSaGYxZHROL3BwMU9uLzNmcHpnZnQyRk5Nd0R1NVYxdWZqVkY3b0NHZ0V5anp2NHo3K3R5RjA2cy9oeTZydDNxV1VmaS9nY0thbXZscUlQcWRnK2lablUxKzhGYnFJbXAzakFkYlU1WHEzendVY3g5VE05dlgrYVFTd3dMWDhKZDV2ZDdVbHZESW9tbzh6ZWtXSEcxTGM2TVlVQjkxYWhpVi8yWDJ0Mms3SUllaVVYN1I4UTdjejV2ZHBoQnBPM1lnT3lydStxUSttdmdnQUFBQUFyTlNicXUwdWRIdWpGTG5SUzlWMmp6WHB1WmRjN1BpcWIrcFhBenoyVzFWdGQrNFpCeXpGa1dXRVVmaXJhcnRuUStqR241OTVSNGR2MytQRElYUzRPczhqdlBabjFYYVhPYkE3bEZxbC9IbFR0ZDJKOE4xZ1BQR2JlclJPVE9OaENuNFp5bXVNemtHUG93aVo0WmlGSE02anVIcHk4dXVPRGRmUGdnM0Z5VDhVOGcvK3dmeFl1SStxN2ZLRHlhODJDd1lqaDhJZUN6WUFBQUFBc0NiYkZwcVM1UDM2dkcrdnUvaTl2TXlCcGJFOWt4TnNnS1g1WWxvNGpNcVF2dTlIR2I2RUI4bzFaSU5xTk5BMzlYN1VXZ0diY1JuWElZemVZTUlONmZ2TnpOY0ZIQTZMbVlVY3ZzVUVnMGxRVkY2MFBKNTVhOHhKeHFydDlxdTI2NldtQnlXSGJVWTlSUVFBQUFBQTRDNWlBc0VmRm10aFQrS1ozQ2lleCtuMERFdGxhZ093RVgxVFg2ajFncm1HR0VvV1ZvTE5jZjB4R1lNS044ems4Y2g5VTFjcHBiTXlqb2dGNU5UcDU3R0hIS3EyTzFCVVhxdzhtcWthODVqMWZHM2xheXlQb0M3Z2NMaWJkL0crTkRZTUFBQUFBQ0QwVFowTGNaOWFqM3ZKeitOTUNBWm12c1JuS3NCR1JJM0dPNnNQd3haVG9ONDZqYkIyYjAxaFkwb0dHVzZZNlpzNmQrcDRadHpSSU0xQ0RuM3VMaitXRjFXMTNhc0lOZnhad09Id3ZTNmw5SGpNbzVueW1Pa1l6Znc1cmpIS04zdGZlc0FFQUFBQUFEQkg3dlFiVGM4NjY3T3dQNnUyK3pDd1l3Wld3N01vWU9QaXVmaEhad0tHclcvcVE5Y3lyTlZaWEhjd0dZTU9ONlIvdnl6UCs2YmVrZ2djdFBkRER6bGM2WlQvVndHSHcvZHkrT2xwMzlRN2ZWTi9HK3ZhVkcyWHV4eDhOWnA1TVBMNzh0blkzNWNBQUFBQUFNdVM5MU4xKzcyWGwxWGJYZVFHU1FNOGRtQTU4bVI3UVNlZ0NIMVR2OHBGbXM0R0RGdGN5MStjUmxpNUw5RUVIaVpsOE9HR21VZ21QZGExWmRCbUlZZmpvYndJbmZLTDl5S0huM0pYcDdHK3dDdlRRdllLT0J6dTVtMjhMOCt0RndBQUFBREEzVVczMzk4czJjS2U1QVpKdVZuWHdJNGJlTGd2WTU1c0R3eFRGR2txaW9iaDI0bm1uc0JxWE1aMUJwTXptbkJEK3ZmbTkxdDBiWG5taTNQUTlpTGtjRnB5RnhtZDhvdjJPbytvN3B2NmRLd3ZNSUkxRjZhRkRFb08zejAySmd3QUFBQUE0UDZpKy9oanp3THY1WFBWZGdjRFBHN2cvaFJEQVVYcW0zcGJBMXNZdGx5cm1WTGE5dHNNVm1ZbnJqT1luRkdGRzJaeU4remNGVHQzeHk3amlMaW41OUZGNXJ5a2tFUFZkdnM2NVJmckpFSU5nNW4rY1I5VjJ4MUZzT2JKOEk1K2t2S1B1R2M1Zk9lR0V3QUFBQURnNGFMaFdYNTJkR1k1Ri9abjFYWWZCbmJNd1AwODlXd0tLRmswc0hVL0J3TW00QUFyY1JuMzhoZVdsNmthWmJoaEpuZkh6b1hPa3I2RFYwZkk0ZHNteCtWV2JiY2JvWWIzNDFuYTBaaDF4Qi8xU05XcTdiYnpkWkJTK3IyQXcrRnUvc2dQMkhMb3pub0JBQUFBQUN4WDM5UzdtcDNkeTh0NDdsYnNCSFhnd1JSREFZTVE5M1B2bkMwWUxnRUhXS3A4SFcyN2wyZnFSaDF1bUltazd6TmZvSVAzS01ibDlubDZ3cnBlVEE1VVJFSDVwL0V1N1dCTnBpTitUR3Y0TzY0RHl0ZkZGSkVqNXdvQUFBQUFZSFZ5czdPVTBndEx2TEJIMFZ4c2QyREhEZHpzTXByQ0tZWUNCcU52Nm9PVTBtL09HQXpYbGVsNm1sREQvWFhSUk5mME5TWnZFdUdHOU84WDZIbDhnYjR1NEhCNHVQY1JjbGhaNFhEdVZsTzFYZTYyL2xsQmVaRmVUNkVqZnJ3UFRXc1lqdjhDTjFOZkNBQUFBQUNBZGVtYitqUVg4MnAwZGkrZnFyWTdIT0J4QXo5VERBVU1WdC9VSDl6UHdmQkZ2WXhwTExDNGQrck40UDhtRTI2WTZadjZPSGZUVGltZGxIRkVQTkR2RVhMNHNNelJ1VlhiSGVkdU5TbWwyZ2txenJ2b2lIODg5aGRhdGQycmVCOEsxd3pESkFJM0FBQUFBQUFsdXRJcDlLTVR0TEEzVmR1ZER1eVlnZSs5VlF3RkROMlYrem1GMFRCZ01ZM0ZkRDI0dXhkeDNRQmhjdUdHbWI2cDl5UHhheFRTT0x5TTBibm5WZHR0My9jVlZXMjNuOE1TS2FXOXFTOW9nVDVHcUdFU1grUXhsZVN2QWc2RjI1MU5KWEFEQUFBQUFGQzZ2cWx6NDZBL25LaUZQYytUcEpmWlRBeFlpOXpoL0duZjFDYXdBS01SZFNGUFRYR0E0Y3JUOWFJQnRkcE11RjYrUGg3SE5Fcmdpc21HRzlML0U3KzVlOEV6TjhTamtTY3QvQjJicjNmdVRKSC92UkZxZUQvMUJTelE3RXY4MVZSZWNIUkgrcjJBUStGbStYdmpXZC9VdTlZSkFBQUFBS0FjZlZNZnhmTS9Gdk1vbW9uWjk0WmhlQnRUeFMrY0wyQnM4bWRiVEhGNDdlVENjRVZ0NW05T0lmemtkYjQrY2cyenBZR2ZUVHJjTU5NMzlia2I0dEhKbTYrZmMyQWhUMk80N3NYbDdqTTVDSkgvdlZOZnNBTE5Dc2NuOVNVZXdZYm5CUndLTjNzZG04WG4xZ2tBQUFBQW9EengvQzkzQ3YzaTlDenNVOVYydXNCRHVicVlLdTQ2QlVhdmIrcmp1S2M3Y2JaaG1QcW0vdUE2aHYrY3hMMzhzU1dCNndrM1hPR0dlTFRlUjhqaHZ5K0VDRFhrb3VTdkVZU2dMSk1zSEsvYTdraXdvWGdmM1dBQ0FBQUFBQXhIMzlUYkthVjNUdG5DM2tSREpxQWNzNG4zTzg0Sk1EVjlVK2ZHcG8vanN4QVlJTmN4RXplN2w3KzJVVGZ3Zjc5YWk1L0ZCOGgrRkwvWHBSMGY5N1pYdGQxZVRBUVFhQ2pUeVZTL3dLdTJ5NXVRdnhkd0tNeVhQemUyalFJREFBQUFBQmlldnFrUG9sRC9MNmR2SWM5akFycjljZGlzczVUU0s5Y2hNSFh4T2ZoUHdDc2FuTzVOZlUxZ2FHYlhjVzVNbkZJNlZadkpCT1JRdzY1N2VWaU15UTAzaUk0SGo0MnJIUjNCaHZMTVJxZE9PWmw0VU1BeE1OOXNrb2liVEFBQUFBQ0FnZXFiK2tOSzZXazBzK0h1OG5PMXIxWGI3Vm96V0xzLzRobXFZaWlBSCtUNmt2d1ptWi9uV3hzWW5ueHZrMnN6NHpvK2NRb1pvWSt6cVd2dTVXRnh3ZzIzaUMvU1BLNzJtYzFPV0xwTG8xUC9zMTNJY2ZCL0o3RmhmR3hOQUFBQUFBQ0dyMi9xaTl6TUpycWdzNWhQVmRzZFdqTll1ZHpaOVdrOG96cXkzQUEzeTgvem96ajZhWHlHQWdQelExaEpmU1pEOXpydTVVMWVnd2NRYnJpanZxblBZN05UNGhlVzQ1bHUrQlRxUzRSdXBqeEpCQUFBQUFCZ3RISVg5SlRTVzJkNFllREprbEFBQUF3eFNVUkJWRytxdGpzZDJESERFT1JuVXkraUNDcDNkcjF3MWdBV0V5SFdXUmY0M3hSSXcvQkVXQ25YWno2T3J2Y3dGTE1wRFpyb3dwTDhhaUVYRXg4K3gxWGJIYVNVL2h6U3NVTWhYdnNTcDJCNTQ5aURHUUFBQUFDQWtldWIrakFLOVQ4NTF3dDVYclZkYmx5MXZhWUdWcHBrTVZaNWdzeEJickxvREFNc1Y5L1VIMUpLdVVBNlZXMlhRNjI1UnVXSlpZWmhpTjhacjlLLzEvQldYTU12blQ0S2srL245d1dUWVRXRUcrNHBSa0FlVlcyWHZ6ejNCdmtpWUwxT2RNS25ZTjZmQUFBQUFBQVRrNXZkVkcyWHU0TG1Zb1JIenYrZDViWDZXclhkYjFFOHVESzU4THRxdTQrS21SaUIzRUg4TU9vTUFGaVRhRzY0bmY0dGtzNy84MUNkRndYUkhQWVdjNElPQi9Ibjl4dWJrQ2RBSHEwcDZBK1RKdHp3UUZFTXUxKzFYZTZvVUEvNnhjQnFkQ21sWFYvcUZNcjdFd0FBQUFCZ3dtSi9lQ3VtT0R6M1hsaklYMVhidmV1YittQ1YvNUMrcVY4NVB3elFseWlnL2VBNUZFQVpvcnYyZnZ6TnBqb2N1c2RnUTg3NnBoWnVXRURjVXgzR244QVM2M0FTQVdYVEdXRE5oQnVXcEcvcW5VZ0huZ281d0Q4dW8yamNLRlZLNVAwSkFBQUFBTUIvK3FiZXJkb3VGK24vYVZVVzhuc3VETXpQU2xmNUQ4bm5KLzFid0hRWUJZbFBWdm5QZ3dYbDUwNGZGRDRCREV0TWRkaWRIWFFVU3UrNzEyQU5YZ3MyUE55Y3dOSnNzb05ybVB2STkvUjV5dHF4ZTNyWVBPR0dKWXAwNEN6a1lId3RVN2J5TWNUd0FHLzdwajYwZ0FBQUFBQUFYTlUzOVZIVmR2bjV4cm5uZkF1cHE3Yjc1em5wcW90QVluLy9wejMrZUQ2N0V3V0syL0duQ3pPcmtLZUNIMGZSazRrTUFDTVM5ekhmM1d2RVBjYXNlRnF6V3g3aUxCZmVhOEs1T2o5T2RraXVZYTczSllJTUh3UVpvRXpDRFN0d1pYenRUa3h5c1BuSlZDZ2FwMlRkcWp0SHdZYjV3VFhmYVlrSHhhMDhGSnpQK3huZ2VtY0tsd0MvaXdCWWhpaHMySW9KQVc4czZwMDlpb0x2M1NYOTl5MGtucytlM25YL0pEb3piOGZ4em9JUk81N3JFcjdFSklaVERkM1c0dFJ2ZXFCVWNZOXhGSC8vaVlMcFYzRXY4Y285QktHTG9QUnAzRWZZcTlxd0c2N2g3U3ZYNzY1cmVMUSt4dlVveEFBRFUvVjk3NXl0bUpBREUzRFNOL1crRTMxL1Zkdlp0RnVkUERac1YvcWRLZkRBOVNmNSt0L1dQV3VZcXJiTEQ4UDNwcjRPVjF6MlRiMVZ6Tkd3TVZYYjVmdnU5ODdBZDU3YWtLUnF1L3hnNHZmSkw4VDNQdlpOL2Fxa0E0SjFxTnJ1d3RoNVdNaGdHb0pFVjNqUFdiNzN6TDduNnNYdnNDUHZ2enQ1MXpmMXdRQ084MTZ1VElmWW52UG4vbU00THE4VUhaNUg0YUU5NUEyS2ErdkM1eXdzUkkxRzRhSldiUGRLZ0ZMSCtHSDdFdmNOLy8xNUxqRnVQMXpEdSs3M2kzVDF1c3ozOUJvRndvZ0lONnlSSWhSR3FJdWljUnQrRHlUY3NES3YrNlkrSHVscmc3bmlJY0RSeER1RTVNN05oMzY4RHAvMzh6OXlONGtqNzJldWltdmpJRWJvVG5VenRZdlBldDBUK1U4OGJNaGh6NWNUWHhYWEI1UG44d0J1ZFJuZHFBK0hWb3dSalIybWZCK2NycHkvQTN2ejZ4ZmRQV2VkUGJjVnFmMmppL2Zra2Zma3phNkVJOUtWQ1Jlem9FVHluT2plWm1HRmkvajc1MzhYL2hxZXF1MTI0ejdldFFEemZZa3BTYjV6UitTYWFWS0NrNnZUeFFUNWl4Ly9oQlc0ajJ1dTRTMi9GZS9seXcvWFpYNCsvczE5UFV5VGNNTUdDRGt3QWpyaEw1bHd3OUxwVUFvQUFBQUFBRXpDbGFLcW1hdEJpcHYrdGF1Vy9aeHFWcHcwejQrTlBNNmowREFwWUFLQXhmd1FvRXhYaXF0bmJyb0gyRmxEZzdGWkVQRW0zNjc1OTh6NzE4OEZmQmliQ0huT3pMdG1mN3pmLy9IL3Q0cEExRTNYN3J4cjgrS0grMy9YS25CdndnMGJKT1RBUU9tRXZ3TENEVXVUYjZ5MzNSd0RBQUFBQUFBQUFBQUFESXR3UXdHRUhCaUlrNzZwOTUyczFSQnVXSXJmK3FiK01JTFhBUUFBQUFBQUFBQUFBREE1d2cwRnFkb3VkOFBmbS9vNlVKeXp2cWwzblpiVkVtNTRFTUViQUFBQUFBQUFBQUFBZ0lIN3hRa3NSeTdPN1p1NnlvVzZVMThMaXZBbHBmUllzSUdDZGZFZUZXd0FBQUFBQUFBQUFBQUFHRGlUR3dwbWtnTWJjcGxTMnUyYit0d0pXQitUR3hiaVBRb0FBQUFBQUFBQUFBQXdNc0lOQXlEa3dCcTk3cHY2MklLdm4zRERuWG1QQWdBQUFBQUFBQUFBQUl5UWNNT0FDRG13UWlkOVUrOWI0TTBSYnJqVng3NnBYeFYrakFBQUFBQUFBQUFBQUFEYzB5OFdiamh5OFhuZjFGVXVSSi82V3JBMFhVcnBzV0FEQmJ1TTk2aGdBd0FBQUFBQUFBQUFBTUNJbWR3d1lDWTU4QUM1WUh5bmIrb0xpMWdHa3h2bWV0RTM5V21CeHdVQUFBQUFBQUFBQUFEQWtnazNqSUNRQXd0U01GNGc0WWJ2dk91YitxQ2c0d0VBQUFBQUFBQUFBQUJneFlRYlJrVElnVnY4MFRmMWtVVXFrM0REUDdxVTBtN2YxTjhLT0JZQUFBQUFBQUFBQUFBQTFraTRZWVNxdHNzZHovK2MranJ3bjVPK3FmY3RSOWttSG02NGpGRERlUUhIQWdBQUFBQUFBQUFBQU1BR0NEZU1XTlYydWFEOS9kVFhZY0owd1IrUUNZY2JYdmROZlZ6QWNRQUFBQUFBQUFBQUFBQ3dRY0lORXlEa01EbTY0QS9RQk1NTkpvb0FBQUFBQUFBQUFBQUE4Qi9oaGdrUmNwZ0VYZkFIYWtMaEJoTkZBQUFBQUFBQUFBQUFBUGlKY01NRVZXMzNLcVdVQytBZlRYMHRSdVJkMzlRSFUxK0VJWnRBdU1GRUVRQUFBQUFBQUFBQUFBQ3U5YXVsbVo2K3FUK2tsTGFxdHR0SktaMEtPUXpheDc2cFgwMTlFU2llaVNJQUFBQUFBQUFBQUFBQTNFaTRZY0tpZzdxUXd6QjEwUVgvMjlRWGdxS2Q5RTI5N3hRQkFBQUFBQUFBQUFBQWNCdmhCcTZHSExZaTVGQmJsV0pkUnFqaGZPb0xRZEdFYndBQUFBQUFBQUFBQUFCWWlIQUQvNGxDNUIwaGgySzk3cHY2ZU9xTFFORnkrR2FuYitvTHB3a0FBQUFBQUFBQUFBQ0FSUWczOEpNZlFnNjVtUDZsVmRxb2s3NnA5eWY4K2htR0YzMVRuenBYQUFBQUFBQUFBQUFBQU55SGNBUFhpcEREcS96L3I5b3VoeHoyck5aYWRTbWwzVGdQVUNvVFJRQUFBQUFBQUFBQUFBQjRzS3J2ZTZ2SW5WVnRkNWhTZW1QRlZ1b3lwYlF0MURBdFZkdmxxUWZQQi9TaVRSUUJBQUFBQUFBQUFBQUFZR21FRzdpWHF1MXlVZk43cTdkMHovcW1QaC9aYStJT0JoUnVNRkVFQUFBQUFBQUFBQUFBZ0tVVGJ1QkJxcmJiU1NubG91eEhWdkpCWHZkTmZUemc0K2VCQmhCdXVJeFFnL0FOQUFBQUFBQUFBQUFBQUV2M3F5WGxJYUxRZVV2STRkNU8rcWJlSCtpeE14MHYrcVkrZGI0QkFBQUFBQUFBQUFBQVdCWGhCcGJpU3NoaEswSU90Wlc5VVJkZDhMOFZmSXhnb2dnQUFBQUFBQUFBQUFBQWF5SGN3RkpGc1g2ZTRwQ3F0c3RGMFh0VytEdVhFV280TCtpWTRFY21pZ0FBQUFBQUFBQUFBQUN3VmxYZjkxYWNsYXJhN2lpbDlMdFZUci8xVGYyaGdPT2dRRlhiNVlrbnp6ZDhaQi83cG41VjVBSUJBQUFBQUFBQUFBQUFNR3EvT0wyc1d0L1VCMzFUVnltbDF4TmQ3TGY1OVFzMlVMQXVwZlJZc0FFQUFBQUFBQUFBQUFDQVRURzVnYldyMm00bnBaUzcxRDhhK2VxZjlFMjlYOEJ4TUFBYm10eHdtVkxhNlp2Nnduc0VBQUFBQUFBQUFBQUFnRTM2MWVxemJuMVRuNmVVdHFxMjI0cVFRejJ5azVDNzRPLzJUZjJ0Z0dPQmVTN2pQWHB1ZFFBQUFBQUFBQUFBQUFBb2dYQURHeFBGLzNtS1ErNWFmNXhTMmh2NDJWQXd6aEE4OHg0RkFBQUFBQUFBQUFBQW9EUlYzL2RPQ3NXbzJ1NGdwZlRuQU0vSTY3NnBqd3M0RGdhcWFyczh4ZVQ1Q28vZWV4UUFBQUFBQUFBQUFBQ0FZZ2szVUtTcTdYWlRTaDlTU284S1AwTW5mVlB2RjNBY0ROd0t3dzFDRFFBQUFBQUFBQUFBQUFBVTcxZW5pQkwxVFowTHZiZXF0dHVPa0VOZDJHRjJmVlB2RkhBY2NCMmhCZ0FBQUFBQUFBQUFBQUFHUTdpQm92Vk5mWkZTMnFuYWJpdWxkSlJTMnR2dzhYN0p4OU0zOWJmQ2w0N3BFbW9BQUFBQUFBQUFBQUFBWUhDcXZ1K2ROUWFsYXJ1RGxOS2ZhejdteTVUU2J0L1U1OTR0ckVMVmRubGF5Zk1IL0ZjTE5RQUFBQUFBQUFBQUFBQXdXTUlOREZiVmRqc3BwVndRL21qRnIwSFJPQ3YzZ0hDRDl5Y0FBQUFBQUFBQUFBQUFnL2VyVThoUXhSU0ZyYXJ0dGlMa1VDLzVwWnowVGIzdkRVS2hoQm9BQUFBQUFBQUFBQUFBR0EzaEJnYXZiK3B2S2FVOHhTRjN2OC9GM25zUGZFMWRTbWszL251aEpKY3BwVmQ5VTU4Nkt3QUFBQUFBQUFBQUFBQ01TZFgzdlJQSzZGUnRseWN1SEtXVUhpM3cyaTRqMUhEdUhjRzZWVzJYQXd2UHIvbkhlbThDQUFBQUFBQUFBQUFBTUdyQ0RZeGExWFo1b2tPZTVsRGY4anBmNkliUEpsMFRiamlMU1EybWlBQUFBQUFBQUFBQUFBQXdhcjg2dll4WmRMclBBWWRjUEo1RERucy92TncvK3FZKzhpYWdNTjZYQUFBQUFBQUFBQUFBQUV5S3lRMU1UdFYyK3pudzBEZjFnYk5QS2FxMk84eFRSdnFtdm5CU0FBQUFBQUFBQUFBQUFKaVVsTkwvQVBTU211aFM0eEE3QUFBQUFFbEZUa1N1UW1DQyJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTA3LTI5IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiSHlwZXIgRklETyBQcm8iLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlUyRjAwMDIwMjUwNzI5MDAyIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25Qcm9maWxlcyI6WyJjb25zdW1lciJdLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTA3LTI5IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjF9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjYtMDEtMDYifSx7ImFhZ3VpZCI6IjRlMmRkYmMyLTI2ODctNDcwOS04NTUxLWNiNjZjOTc3NmJmZSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiNGUyZGRiYzItMjY4Ny00NzA5LTg1NTEtY2I2NmM5Nzc2YmZlIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlNFQ09SQSBJRCBWMiBGSURPMi4xIEwxIn0sImRlc2NyaXB0aW9uIjoiU0VDT1JBIElEIFYyIEZJRE8yLjEgTDEiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9LHsibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNBekNDQWFtZ0F3SUJBZ0lKQUpQSUN1cDNCalVyTUFvR0NDcUdTTTQ5QkFNQ01IWXhDekFKQmdOVkJBWVRBa1JGTVNFd0h3WURWUVFLRXhoSmJtWnBibVZ2YmlCVVpXTm9ibTlzYjJkcFpYTWdRVWN4S1RBbkJnTlZCQXNUSUVOQklHWnZjaUJCZFhSb1pXNTBhV05oZEc5eUlFRjBkR1Z6ZEdGMGFXOXVNUmt3RndZRFZRUURFeEJKYm1acGJtVnZiaUJHU1VSUElFTkJNQjRYRFRJME1UQXdNVEUzTWpJek5Gb1hEVE0wTVRBd01URTNNakl6TkZvd2RqRUxNQWtHQTFVRUJoTUNSRVV4SVRBZkJnTlZCQW9UR0VsdVptbHVaVzl1SUZSbFkyaHViMnh2WjJsbGN5QkJSekVwTUNjR0ExVUVDeE1nUTBFZ1ptOXlJRUYxZEdobGJuUnBZMkYwYjNJZ1FYUjBaWE4wWVhScGIyNHhHVEFYQmdOVkJBTVRFRWx1Wm1sdVpXOXVJRVpKUkU4Z1EwRXdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUjJ4aitLeVNrSmU5eDlrZEFjclFhY2IwK2o4cCtKZVNNVXEyRE5uc25jRHIrRGdGWm9mSDdMbERxZTR5bFk1OXgzeXQweVVQNTIydm1uQkw0dDBrS0lveUF3SGpBTEJnTlZIUThFQkFNQ0FnUXdEd1lEVlIwVEJBZ3dCZ0VCL3dJQkFEQUtCZ2dxaGtqT1BRUURBZ05JQURCRkFpRUEzRTEweWxsdDNzOCttWDZQYlFMQVc2V1pvcndoQk1adHUxZ0lCMkxyelBjQ0lIZnFrT1ZEalNTQXVBc1ZvdVhHNWI1S2QraHAzNlVYeGZxaHVnenJCUDZXIl0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQmR3QUFBS1FDQVlBQUFDRkNMajlBQUFBQ1hCSVdYTUFBQzRqQUFBdUl3RjRwVDkyQUFBS1QybERRMUJRYUc5MGIzTm9iM0FnU1VORElIQnliMlpwYkdVQUFIamFuVk5uVkZQcEZqMzMzdlJDUzRpQWxFdHZVaFVJSUZKQ2k0QVVrU1lxSVFrUVNvZ2hvZGtWVWNFUlJVVUVHOGlnaUFPT2pvQ01GVkVzRElvSzJBZmtJYUtPZzZPSWlzcjc0WHVqYTlhODkrYk4vclhYUHVlczg1Mnp6d2ZBQ0F5V1NETlJOWUFNcVVJZUVlQ0R4OFRHNGVRdVFJRUtKSEFBRUFpelpDRnovU01CQVBoK1BEd3JJc0FIdmdBQmVOTUxDQURBVFp2QU1CeUgvdy9xUXBsY0FZQ0VBY0Iwa1RoTENJQVVBRUI2amtLbUFFQkdBWUNkbUNaVEFLQUVBR0RMWTJMakFGQXRBR0FuZitiVEFJQ2QrSmw3QVFCYmxDRVZBYUNSQUNBVFpZaEVBR2c3QUt6UFZvcEZBRmd3QUJSbVM4UTVBTmd0QURCSlYyWklBTEMzQU1ET0VBdXlBQWdNQURCUmlJVXBBQVI3QUdESUl5TjRBSVNaQUJSRzhsYzg4U3V1RU9jcUFBQjRtYkk4dVNRNVJZRmJDQzF4QjFkWExoNG96a2tYS3hRMllRSmhta0F1d25tWkdUS0JOQS9nODh3QUFLQ1JGUkhnZy9QOWVNNE9yczdPTm82MkRsOHQ2cjhHL3lKaVl1UCs1YytyY0VBQUFPRjBmdEgrTEMrekdvQTdCb0J0L3FJbDdnUm9YZ3VnZGZlTFpySVBRTFVBb09uYVYvTncrSDQ4UEVXaGtMbloyZVhrNU5oS3hFSmJZY3BYZmY1bndsL0FWLzFzK1g0OC9QZjE0TDdpSklFeVhZRkhCUGpnd3N6MFRLVWN6NUlKaEdMYzVvOUgvTGNMLy93ZDB5TEVTV0s1V0NvVTQxRVNjWTVFbW96ek1xVWlpVUtTS2NVbDB2OWs0dDhzK3dNKzN6VUFzR28rQVh1UkxhaGRZd1AyU3ljUVdIVEE0dmNBQVBLN2I4SFVLQWdEZ0dpRDRjOTMvKzgvL1VlZ0pRQ0Faa21TY1FBQVhrUWtMbFRLc3ovSENBQUFSS0NCS3JCQkcvVEJHQ3pBQmh6QkJkekJDL3hnTm9SQ0pNVENRaEJDQ21TQUhISmdLYXlDUWlpR3piQWRLbUF2MUVBZE5NQlJhSWFUY0E0dXdsVzREajF3RC9waENKN0JLTHlCQ1FSQnlBZ1RZU0hhaUFGaWlsZ2pqZ2dYbVlYNEljRklCQktMSkNESmlCUlJJa3VSTlVneFVvcFVJRlZJSGZJOWNnSTVoMXhHdXBFN3lBQXlndnlHdkVjeGxJR3lVVDNVRExWRHVhZzNHb1JHb2d2UVpIUXhtbzhXb0p2UWNyUWFQWXcyb2VmUXEyZ1AybzgrUThjd3dPZ1lCelBFYkRBdXhzTkNzVGdzQ1pOank3RWlyQXlyeGhxd1Zxd0R1NG4xWTgreGR3UVNnVVhBQ1RZRWQwSWdZUjVCU0ZoTVdFN1lTS2dnSENRMEVkb0pOd2tEaEZIQ0p5S1RxRXUwSnJvUitjUVlZakl4aDFoSUxDUFdFbzhUTHhCN2lFUEVOeVFTaVVNeUo3bVFBa214cEZUU0V0SkcwbTVTSStrc3FaczBTQm9qazhuYVpHdXlCem1VTENBcnlJWGtuZVRENURQa0crUWg4bHNLbldKQWNhVDRVK0lvVXNwcVNobmxFT1UwNVFabG1ESkJWYU9hVXQyb29WUVJOWTlhUXEyaHRsS3ZVWWVvRXpSMW1qbk5neFpKUzZXdG9wWFRHbWdYYVBkcHIraDB1aEhkbFI1T2w5Qlgwc3ZwUitpWDZBUDBkd3dOaGhXRHg0aG5LQm1iR0FjWVp4bDNHSytZVEtZWjA0c1p4MVF3TnpIcm1PZVpENWx2VlZncXRpcDhGWkhLQ3BWS2xTYVZHeW92VkttcXBxcmVxZ3RWODFYTFZJK3BYbE45cmtaVk0xUGpxUW5VbHF0VnFwMVE2MU1iVTJlcE82aUhxbWVvYjFRL3BINVovWWtHV2NOTXcwOURwRkdnc1YvanZNWWdDMk1aczNnc0lXc05xNFoxZ1RYRUpySE4yWHgyS3J1WS9SMjdpejJxcWFFNVF6TktNMWV6VXZPVVpqOEg0NWh4K0p4MFRnbm5LS2VYODM2SzNoVHZLZUlwRzZZMFRMa3haVnhycXBhWGxsaXJTS3RScTBmcnZUYXU3YWVkcHIxRnUxbjdnUTVCeDBvblhDZEhaNC9PQlozblU5bFQzYWNLcHhaTlBUcjFyaTZxYTZVYm9idEVkNzl1cCs2WW5yNWVnSjVNYjZmZWViM24raHg5TC8xVS9XMzZwL1ZIREZnR3N3d2tCdHNNemhnOHhUVnhiendkTDhmYjhWRkRYY05BUTZWaGxXR1g0WVNSdWRFOG85VkdqVVlQakduR1hPTWs0MjNHYmNhakpnWW1JU1pMVGVwTjdwcFNUYm1tS2FZN1REdE14ODNNemFMTjFwazFtejB4MXpMbm0rZWIxNXZmdDJCYWVGb3N0cWkydUdWSnN1UmFwbG51dHJ4dWhWbzVXYVZZVlZwZHMwYXRuYTBsMXJ1dHU2Y1JwN2xPazA2cm50Wm53N0R4dHNtMnFiY1pzT1hZQnR1dXRtMjJmV0ZuWWhkbnQ4V3V3KzZUdlpOOXVuMk4vVDBIRFlmWkRxc2RXaDErYzdSeUZEcFdPdDZhenB6dVAzM0Y5SmJwTDJkWXp4RFAyRFBqdGhQTEtjUnBuVk9iMDBkbkYyZTVjNFB6aUl1SlM0TExMcGMrTHBzYnh0M0l2ZVJLZFBWeFhlRjYwdldkbTdPYnd1Mm8yNi91TnU1cDdvZmNuOHcwbnltZVdUTnowTVBJUStCUjVkRS9DNStWTUd2ZnJINVBRMCtCWjdYbkl5OWpMNUZYcmRld3Q2VjNxdmRoN3hjKzlqNXluK00rNHp3MzNqTGVXVi9NTjhDM3lMZkxUOE52bmwrRjMwTi9JLzlrLzNyLzBRQ25nQ1VCWndPSmdVR0JXd0w3K0hwOEliK09QenJiWmZheTJlMUJqS0M1UVJWQmo0S3RndVhCclNGb3lPeVFyU0gzNTVqT2tjNXBEb1ZRZnVqVzBBZGg1bUdMdzM0TUo0V0hoVmVHUDQ1d2lGZ2EwVEdYTlhmUjNFTnozMFQ2UkpaRTNwdG5NVTg1cnkxS05TbytxaTVxUE5vM3VqUzZQOFl1WmxuTTFWaWRXRWxzU3h3NUxpcXVObTVzdnQvODdmT0g0cDNpQytON0Y1Z3Z5RjF3ZWFIT3d2U0ZweGFwTGhJc09wWkFUSWhPT0pUd1FSQXFxQmFNSmZJVGR5V09Dbm5DSGNKbklpL1JOdEdJMkVOY0toNU84a2dxVFhxUzdKRzhOWGtreFRPbExPVzVoQ2Vwa0x4TURVemRtenFlRnBwMklHMHlQVHE5TVlPU2taQnhRcW9oVFpPMlorcG41bVoyeTZ4bGhiTCt4VzZMdHk4ZWxRZkphN09RckFWWkxRcTJRcWJvVkZvbzF5b0hzbWRsVjJhL3pZbktPWmFybml2TjdjeXp5dHVRTjV6dm4vL3RFc0lTNFpLMnBZWkxWeTBkV09hOXJHbzVzanh4ZWRzSzR4VUZLNFpXQnF3OHVJcTJLbTNWVDZ2dFY1ZXVmcjBtZWsxcmdWN0J5b0xCdFFGcjZ3dFZDdVdGZmV2YzErMWRUMWd2V2QrMVlmcUduUnMrRlltS3JoVGJGNWNWZjlnbzNIamxHNGR2eXIrWjNKUzBxYXZFdVdUUFp0Sm02ZWJlTFo1YkRwYXFsK2FYRG00TjJkcTBEZDlXdE8zMTlrWGJMNWZOS051N2c3WkR1YU8vUExpOFphZkp6czA3UDFTa1ZQUlUrbFEyN3RMZHRXSFgrRzdSN2h0N3ZQWTA3TlhiVzd6My9UN0p2dHRWQVZWTjFXYlZaZnRKKzdQM1A2NkpxdW40bHZ0dFhhMU9iWEh0eHdQU0EvMEhJdzYyMTduVTFSM1NQVlJTajlZcjYwY094eCsrL3AzdmR5ME5OZzFWalp6RzRpTndSSG5rNmZjSjMvY2VEVHJhZG94N3JPRUgweDkySFdjZEwycENtdkthUnB0VG12dGJZbHU2VDh3KzBkYnEzbnI4UjlzZkQ1dzBQRmw1U3ZOVXlXbmE2WUxUazJmeXo0eWRsWjE5Zmk3NTNHRGJvclo3NTJQTzMyb1BiKys2RUhUaDBrWC9pK2M3dkR2T1hQSzRkUEt5MitVVFY3aFhtcTg2WDIzcWRPbzgvcFBUVDhlN25MdWFycmxjYTdudWVyMjFlMmIzNlJ1ZU44N2Q5TDE1OFJiLzF0V2VPVDNkdmZONmIvZkY5L1hmRnQxK2NpZjl6c3U3MlhjbjdxMjhUN3hmOUVEdFFkbEQzWWZWUDF2KzNOanYzSDlxd0hlZzg5SGNSL2NHaFlQUC9wSDFqdzlEQlkrWmo4dUdEWWJybmpnK09UbmlQM0w5NmZ5blE4OWt6eWFlRi82aS9zdXVGeFl2ZnZqVjY5Zk8wWmpSb1pmeWw1Ty9iWHlsL2VyQTZ4bXYyOGJDeGg2K3lYZ3pNVjcwVnZ2dHdYZmNkeDN2bzk4UFQrUjhJSDhvLzJqNXNmVlQwS2Y3a3htVGsvOEVBNWp6L0dNekxkc0FBRkliYVZSWWRGaE5URHBqYjIwdVlXUnZZbVV1ZUcxd0FBQUFBQUE4UDNod1lXTnJaWFFnWW1WbmFXNDlJdSs3dnlJZ2FXUTlJbGMxVFRCTmNFTmxhR2xJZW5KbFUzcE9WR042YTJNNVpDSS9QZ284ZURwNGJYQnRaWFJoSUhodGJHNXpPbmc5SW1Ga2IySmxPbTV6T20xbGRHRXZJaUI0T25odGNIUnJQU0pCWkc5aVpTQllUVkFnUTI5eVpTQTFMalV0WXpBeE5DQTNPUzR4TlRFME9ERXNJREl3TVRNdk1ETXZNVE10TVRJNk1EazZNVFVnSUNBZ0lDQWdJQ0krQ2lBZ0lEeHlaR1k2VWtSR0lIaHRiRzV6T25Ka1pqMGlhSFIwY0RvdkwzZDNkeTUzTXk1dmNtY3ZNVGs1T1M4d01pOHlNaTF5WkdZdGMzbHVkR0Y0TFc1ekl5SStDaUFnSUNBZ0lEeHlaR1k2UkdWelkzSnBjSFJwYjI0Z2NtUm1PbUZpYjNWMFBTSWlDaUFnSUNBZ0lDQWdJQ0FnSUhodGJHNXpPbmh0Y0QwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOTRZWEF2TVM0d0x5SUtJQ0FnSUNBZ0lDQWdJQ0FnZUcxc2JuTTZaR005SW1oMGRIQTZMeTl3ZFhKc0xtOXlaeTlrWXk5bGJHVnRaVzUwY3k4eExqRXZJZ29nSUNBZ0lDQWdJQ0FnSUNCNGJXeHVjenA0YlhCTlRUMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzk0WVhBdk1TNHdMMjF0THlJS0lDQWdJQ0FnSUNBZ0lDQWdlRzFzYm5NNmMzUkZkblE5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5elZIbHdaUzlTWlhOdmRYSmpaVVYyWlc1MEl5SUtJQ0FnSUNBZ0lDQWdJQ0FnZUcxc2JuTTZjM1JTWldZOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXpWSGx3WlM5U1pYTnZkWEpqWlZKbFppTWlDaUFnSUNBZ0lDQWdJQ0FnSUhodGJHNXpPbmh0Y0ZSUVp6MGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzk0WVhBdk1TNHdMM1F2Y0djdklnb2dJQ0FnSUNBZ0lDQWdJQ0I0Yld4dWN6cHpkRVJwYlQwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOTRZWEF2TVM0d0wzTlVlWEJsTDBScGJXVnVjMmx2Ym5Naklnb2dJQ0FnSUNBZ0lDQWdJQ0I0Yld4dWN6cDRiWEJIUFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdlp5OGlDaUFnSUNBZ0lDQWdJQ0FnSUhodGJHNXpPbkJvYjNSdmMyaHZjRDBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5d2FHOTBiM05vYjNBdk1TNHdMeUlLSUNBZ0lDQWdJQ0FnSUNBZ2VHMXNibk02ZEdsbVpqMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzkwYVdabUx6RXVNQzhpQ2lBZ0lDQWdJQ0FnSUNBZ0lIaHRiRzV6T21WNGFXWTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2WlhocFppOHhMakF2SWo0S0lDQWdJQ0FnSUNBZ1BIaHRjRHBOWlhSaFpHRjBZVVJoZEdVK01qQXhNeTB4TUMwd04xUXhOem8wT0RvMU9Tc3dNam93TUR3dmVHMXdPazFsZEdGa1lYUmhSR0YwWlQ0S0lDQWdJQ0FnSUNBZ1BIaHRjRHBEY21WaGRHVkVZWFJsUGpJd01URXRNRGN0TURkVU1UYzZNelE2TlRRck1ESTZNREE4TDNodGNEcERjbVZoZEdWRVlYUmxQZ29nSUNBZ0lDQWdJQ0E4ZUcxd09rMXZaR2xtZVVSaGRHVStNakF4TXkweE1DMHdOMVF4TnpvME9EbzFPU3N3TWpvd01Ed3ZlRzF3T2sxdlpHbG1lVVJoZEdVK0NpQWdJQ0FnSUNBZ0lEeDRiWEE2UTNKbFlYUnZjbFJ2YjJ3K1FXUnZZbVVnVUdodmRHOXphRzl3SUVORElDaE5ZV05wYm5SdmMyZ3BQQzk0YlhBNlEzSmxZWFJ2Y2xSdmIydytDaUFnSUNBZ0lDQWdJRHhrWXpwbWIzSnRZWFErYVcxaFoyVXZjRzVuUEM5a1l6cG1iM0p0WVhRK0NpQWdJQ0FnSUNBZ0lEeDRiWEJOVFRwUGNtbG5hVzVoYkVSdlkzVnRaVzUwU1VRK2VHMXdMbVJwWkRvd01qZ3dNVEUzTkRBM01qQTJPREV4T0RjeFJrUTVPVUpHTmpCRFF6RTBSRHd2ZUcxd1RVMDZUM0pwWjJsdVlXeEViMk4xYldWdWRFbEVQZ29nSUNBZ0lDQWdJQ0E4ZUcxd1RVMDZTVzV6ZEdGdVkyVkpSRDU0YlhBdWFXbGtPbVZtTm1aaE9HSXhMV1V4WmpJdE5EY3dOQzA0TjJZM0xUVTBOalUzWWpJeE1UTXdNand2ZUcxd1RVMDZTVzV6ZEdGdVkyVkpSRDRLSUNBZ0lDQWdJQ0FnUEhodGNFMU5Pa1J2WTNWdFpXNTBTVVErZUcxd0xtUnBaRHBsWlRZMU1ERmlPUzAxTnprM0xUUmxZall0WW1WbVl5MHhOelV6Wm1Nd05XTTBPV1U4TDNodGNFMU5Pa1J2WTNWdFpXNTBTVVErQ2lBZ0lDQWdJQ0FnSUR4NGJYQk5UVHBJYVhOMGIzSjVQZ29nSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbE5sY1Q0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhU0J5WkdZNmNHRnljMlZVZVhCbFBTSlNaWE52ZFhKalpTSStDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh6ZEVWMmREcGhZM1JwYjI0K1kyOXVkbVZ5ZEdWa1BDOXpkRVYyZERwaFkzUnBiMjQrQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4emRFVjJkRHB3WVhKaGJXVjBaWEp6UG1aeWIyMGdZWEJ3YkdsallYUnBiMjR2Y0c5emRITmpjbWx3ZENCMGJ5QmhjSEJzYVdOaGRHbHZiaTkyYm1RdVlXUnZZbVV1YVd4c2RYTjBjbUYwYjNJOEwzTjBSWFowT25CaGNtRnRaWFJsY25NK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBJSEprWmpwd1lYSnpaVlI1Y0dVOUlsSmxjMjkxY21ObElqNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSE4wUlhaME9tRmpkR2x2Ymo1ellYWmxaRHd2YzNSRmRuUTZZV04wYVc5dVBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjM1JGZG5RNmFXNXpkR0Z1WTJWSlJENTRiWEF1YVdsa09qQXlPREF4TVRjME1EY3lNRFk0TVRFNE56RkdSRGs1UWtZMk1FTkRNVFJFUEM5emRFVjJkRHBwYm5OMFlXNWpaVWxFUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGMzUkZkblE2ZDJobGJqNHlNREV4TFRBM0xUQTNWREUzT2pNME9qVTBLekF5T2pBd1BDOXpkRVYyZERwM2FHVnVQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4YzNSRmRuUTZjMjltZEhkaGNtVkJaMlZ1ZEQ1QlpHOWlaU0JKYkd4MWMzUnlZWFJ2Y2lCRFV6UThMM04wUlhaME9uTnZablIzWVhKbFFXZGxiblErQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4emRFVjJkRHBqYUdGdVoyVmtQaTg4TDNOMFJYWjBPbU5vWVc1blpXUStDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEd3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwSUhKa1pqcHdZWEp6WlZSNWNHVTlJbEpsYzI5MWNtTmxJajRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhOMFJYWjBPbUZqZEdsdmJqNWpiMjUyWlhKMFpXUThMM04wUlhaME9tRmpkR2x2Ymo0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BITjBSWFowT25CaGNtRnRaWFJsY25NK1puSnZiU0JoY0hCc2FXTmhkR2x2Ymk5d2IzTjBjMk55YVhCMElIUnZJR0Z3Y0d4cFkyRjBhVzl1TDNadVpDNWhaRzlpWlM1cGJHeDFjM1J5WVhSdmNqd3ZjM1JGZG5RNmNHRnlZVzFsZEdWeWN6NEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2tnY21SbU9uQmhjbk5sVkhsd1pUMGlVbVZ6YjNWeVkyVWlQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4YzNSRmRuUTZZV04wYVc5dVBtTnZiblpsY25SbFpEd3ZjM1JGZG5RNllXTjBhVzl1UGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGMzUkZkblE2Y0dGeVlXMWxkR1Z5Y3o1bWNtOXRJR0Z3Y0d4cFkyRjBhVzl1TDNCdmMzUnpZM0pwY0hRZ2RHOGdZWEJ3YkdsallYUnBiMjR2ZG01a0xtRmtiMkpsTG1sc2JIVnpkSEpoZEc5eVBDOXpkRVYyZERwd1lYSmhiV1YwWlhKelBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOEwzSmtaanBzYVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcHNhU0J5WkdZNmNHRnljMlZVZVhCbFBTSlNaWE52ZFhKalpTSStDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh6ZEVWMmREcGhZM1JwYjI0K1kyOXVkbVZ5ZEdWa1BDOXpkRVYyZERwaFkzUnBiMjQrQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4emRFVjJkRHB3WVhKaGJXVjBaWEp6UG1aeWIyMGdZWEJ3YkdsallYUnBiMjR2Y0c5emRITmpjbWx3ZENCMGJ5QmhjSEJzYVdOaGRHbHZiaTkyYm1RdVlXUnZZbVV1YVd4c2RYTjBjbUYwYjNJOEwzTjBSWFowT25CaGNtRnRaWFJsY25NK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBJSEprWmpwd1lYSnpaVlI1Y0dVOUlsSmxjMjkxY21ObElqNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSE4wUlhaME9tRmpkR2x2Ymo1amIyNTJaWEowWldROEwzTjBSWFowT21GamRHbHZiajRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhOMFJYWjBPbkJoY21GdFpYUmxjbk0rWm5KdmJTQmhjSEJzYVdOaGRHbHZiaTl3YjNOMGMyTnlhWEIwSUhSdklHRndjR3hwWTJGMGFXOXVMM1p1WkM1aFpHOWlaUzV3YUc5MGIzTm9iM0E4TDNOMFJYWjBPbkJoY21GdFpYUmxjbk0rQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHd2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cElISmtaanB3WVhKelpWUjVjR1U5SWxKbGMyOTFjbU5sSWo0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BITjBSWFowT21GamRHbHZiajV6WVhabFpEd3ZjM1JGZG5RNllXTjBhVzl1UGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGMzUkZkblE2YVc1emRHRnVZMlZKUkQ1NGJYQXVhV2xrT21WbE5qVXdNV0k1TFRVM09UY3ROR1ZpTmkxaVpXWmpMVEUzTlRObVl6QTFZelE1WlR3dmMzUkZkblE2YVc1emRHRnVZMlZKUkQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BITjBSWFowT25kb1pXNCtNakF4TXkweE1DMHdOMVF4TnpvME9EbzFPU3N3TWpvd01Ed3ZjM1JGZG5RNmQyaGxiajRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhOMFJYWjBPbk52Wm5SM1lYSmxRV2RsYm5RK1FXUnZZbVVnVUdodmRHOXphRzl3SUVORElDaE5ZV05wYm5SdmMyZ3BQQzl6ZEVWMmREcHpiMlowZDJGeVpVRm5aVzUwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGMzUkZkblE2WTJoaGJtZGxaRDR2UEM5emRFVjJkRHBqYUdGdVoyVmtQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVNCeVpHWTZjR0Z5YzJWVWVYQmxQU0pTWlhOdmRYSmpaU0krQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4emRFVjJkRHBoWTNScGIyNCtZMjl1ZG1WeWRHVmtQQzl6ZEVWMmREcGhZM1JwYjI0K0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHpkRVYyZERwd1lYSmhiV1YwWlhKelBtWnliMjBnWVhCd2JHbGpZWFJwYjI0dmNHOXpkSE5qY21sd2RDQjBieUJwYldGblpTOXdibWM4TDNOMFJYWjBPbkJoY21GdFpYUmxjbk0rQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHd2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT214cElISmtaanB3WVhKelpWUjVjR1U5SWxKbGMyOTFjbU5sSWo0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BITjBSWFowT21GamRHbHZiajVrWlhKcGRtVmtQQzl6ZEVWMmREcGhZM1JwYjI0K0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHpkRVYyZERwd1lYSmhiV1YwWlhKelBtTnZiblpsY25SbFpDQm1jbTl0SUdGd2NHeHBZMkYwYVc5dUwzWnVaQzVoWkc5aVpTNXdhRzkwYjNOb2IzQWdkRzhnYVcxaFoyVXZjRzVuUEM5emRFVjJkRHB3WVhKaGJXVjBaWEp6UGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4TDNKa1pqcHNhVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FTQnlaR1k2Y0dGeWMyVlVlWEJsUFNKU1pYTnZkWEpqWlNJK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHpkRVYyZERwaFkzUnBiMjQrYzJGMlpXUThMM04wUlhaME9tRmpkR2x2Ymo0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BITjBSWFowT21sdWMzUmhibU5sU1VRK2VHMXdMbWxwWkRwbFpqWm1ZVGhpTVMxbE1XWXlMVFEzTURRdE9EZG1OeTAxTkRZMU4ySXlNVEV6TURJOEwzTjBSWFowT21sdWMzUmhibU5sU1VRK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHpkRVYyZERwM2FHVnVQakl3TVRNdE1UQXRNRGRVTVRjNk5EZzZOVGtyTURJNk1EQThMM04wUlhaME9uZG9aVzQrQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4emRFVjJkRHB6YjJaMGQyRnlaVUZuWlc1MFBrRmtiMkpsSUZCb2IzUnZjMmh2Y0NCRFF5QW9UV0ZqYVc1MGIzTm9LVHd2YzNSRmRuUTZjMjltZEhkaGNtVkJaMlZ1ZEQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BITjBSWFowT21Ob1lXNW5aV1ErTHp3dmMzUkZkblE2WTJoaGJtZGxaRDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUR3dmNtUm1PbE5sY1Q0S0lDQWdJQ0FnSUNBZ1BDOTRiWEJOVFRwSWFYTjBiM0o1UGdvZ0lDQWdJQ0FnSUNBOGVHMXdUVTA2UkdWeWFYWmxaRVp5YjIwZ2NtUm1PbkJoY25ObFZIbHdaVDBpVW1WemIzVnlZMlVpUGdvZ0lDQWdJQ0FnSUNBZ0lDQThjM1JTWldZNmFXNXpkR0Z1WTJWSlJENTRiWEF1YVdsa09tVmxOalV3TVdJNUxUVTNPVGN0TkdWaU5pMWlaV1pqTFRFM05UTm1ZekExWXpRNVpUd3ZjM1JTWldZNmFXNXpkR0Z1WTJWSlJENEtJQ0FnSUNBZ0lDQWdJQ0FnUEhOMFVtVm1PbVJ2WTNWdFpXNTBTVVErZUcxd0xtUnBaRHBsWlRZMU1ERmlPUzAxTnprM0xUUmxZall0WW1WbVl5MHhOelV6Wm1Nd05XTTBPV1U4TDNOMFVtVm1PbVJ2WTNWdFpXNTBTVVErQ2lBZ0lDQWdJQ0FnSUNBZ0lEeHpkRkpsWmpwdmNtbG5hVzVoYkVSdlkzVnRaVzUwU1VRK2VHMXdMbVJwWkRvd01qZ3dNVEUzTkRBM01qQTJPREV4T0RjeFJrUTVPVUpHTmpCRFF6RTBSRHd2YzNSU1pXWTZiM0pwWjJsdVlXeEViMk4xYldWdWRFbEVQZ29nSUNBZ0lDQWdJQ0E4TDNodGNFMU5Pa1JsY21sMlpXUkdjbTl0UGdvZ0lDQWdJQ0FnSUNBOGVHMXdWRkJuT2toaGMxWnBjMmxpYkdWUGRtVnljSEpwYm5RK1JtRnNjMlU4TDNodGNGUlFaenBJWVhOV2FYTnBZbXhsVDNabGNuQnlhVzUwUGdvZ0lDQWdJQ0FnSUNBOGVHMXdWRkJuT2toaGMxWnBjMmxpYkdWVWNtRnVjM0JoY21WdVkzaytSbUZzYzJVOEwzaHRjRlJRWnpwSVlYTldhWE5wWW14bFZISmhibk53WVhKbGJtTjVQZ29nSUNBZ0lDQWdJQ0E4ZUcxd1ZGQm5PazVRWVdkbGN6NHhQQzk0YlhCVVVHYzZUbEJoWjJWelBnb2dJQ0FnSUNBZ0lDQThlRzF3VkZCbk9rMWhlRkJoWjJWVGFYcGxJSEprWmpwd1lYSnpaVlI1Y0dVOUlsSmxjMjkxY21ObElqNEtJQ0FnSUNBZ0lDQWdJQ0FnUEhOMFJHbHRPbmMrTWpBNUxqazVPVGt5Tnp3dmMzUkVhVzA2ZHo0S0lDQWdJQ0FnSUNBZ0lDQWdQSE4wUkdsdE9tZytNamsyTGprNU9UazJNand2YzNSRWFXMDZhRDRLSUNBZ0lDQWdJQ0FnSUNBZ1BITjBSR2x0T25WdWFYUStUV2xzYkdsdFpYUmxjbk04TDNOMFJHbHRPblZ1YVhRK0NpQWdJQ0FnSUNBZ0lEd3ZlRzF3VkZCbk9rMWhlRkJoWjJWVGFYcGxQZ29nSUNBZ0lDQWdJQ0E4ZUcxd1ZGQm5PbEJzWVhSbFRtRnRaWE0rQ2lBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2VTJWeFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwUGtONVlXNDhMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVQ1TllXZGxiblJoUEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHaytXV1ZzYkc5M1BDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJRHd2Y21SbU9sTmxjVDRLSUNBZ0lDQWdJQ0FnUEM5NGJYQlVVR2M2VUd4aGRHVk9ZVzFsY3o0S0lDQWdJQ0FnSUNBZ1BIaHRjRlJRWnpwVGQyRjBZMmhIY205MWNITStDaUFnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZVMlZ4UGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBJSEprWmpwd1lYSnpaVlI1Y0dVOUlsSmxjMjkxY21ObElqNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSGh0Y0VjNlozSnZkWEJPWVcxbFBsTjBZVzVrWVhKa0xVWmhjbUptWld4a1ozSjFjSEJsUEM5NGJYQkhPbWR5YjNWd1RtRnRaVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhodGNFYzZaM0p2ZFhCVWVYQmxQakE4TDNodGNFYzZaM0p2ZFhCVWVYQmxQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4ZUcxd1J6cERiMnh2Y21GdWRITStDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZVMlZ4UGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBJSEprWmpwd1lYSnpaVlI1Y0dVOUlsSmxjMjkxY21ObElqNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSGh0Y0VjNmMzZGhkR05vVG1GdFpUNVhaV25Ebnp3dmVHMXdSenB6ZDJGMFkyaE9ZVzFsUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGVHMXdSenB0YjJSbFBrTk5XVXM4TDNodGNFYzZiVzlrWlQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BIaHRjRWM2ZEhsd1pUNVFVazlEUlZOVFBDOTRiWEJIT25SNWNHVStDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHg0YlhCSE9tTjVZVzQrTUM0d01EQXdNREE4TDNodGNFYzZZM2xoYmo0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BIaHRjRWM2YldGblpXNTBZVDR3TGpBd01EQXdNRHd2ZUcxd1J6cHRZV2RsYm5SaFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQThlRzF3UnpwNVpXeHNiM2MrTUM0d01EQXdNREE4TDNodGNFYzZlV1ZzYkc5M1Bnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQThlRzF3UnpwaWJHRmphejR3TGpBd01EQXdNRHd2ZUcxd1J6cGliR0ZqYXo0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WkdZNmJHa2djbVJtT25CaGNuTmxWSGx3WlQwaVVtVnpiM1Z5WTJVaVBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQThlRzF3UnpwemQyRjBZMmhPWVcxbFBsTmphSGRoY25vOEwzaHRjRWM2YzNkaGRHTm9UbUZ0WlQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BIaHRjRWM2Ylc5a1pUNURUVmxMUEM5NGJYQkhPbTF2WkdVK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lEeDRiWEJIT25SNWNHVStVRkpQUTBWVFV6d3ZlRzF3UnpwMGVYQmxQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4ZUcxd1J6cGplV0Z1UGpBdU1EQXdNREF3UEM5NGJYQkhPbU41WVc0K0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lEeDRiWEJIT20xaFoyVnVkR0UrTUM0d01EQXdNREE4TDNodGNFYzZiV0ZuWlc1MFlUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSGh0Y0VjNmVXVnNiRzkzUGpBdU1EQXdNREF3UEM5NGJYQkhPbmxsYkd4dmR6NEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSGh0Y0VjNllteGhZMnMrTVRBd0xqQXdNREF3TUR3dmVHMXdSenBpYkdGamF6NEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4eVpHWTZiR2tnY21SbU9uQmhjbk5sVkhsd1pUMGlVbVZ6YjNWeVkyVWlQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4ZUcxd1J6cHpkMkYwWTJoT1lXMWxQa2x1Wm1sdVpXOXVJRkpsWkR3dmVHMXdSenB6ZDJGMFkyaE9ZVzFsUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGVHMXdSenAwZVhCbFBsQlNUME5GVTFNOEwzaHRjRWM2ZEhsd1pUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSGh0Y0VjNmRHbHVkRDR4TURBdU1EQXdNREF3UEM5NGJYQkhPblJwYm5RK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lEeDRiWEJIT20xdlpHVStRMDFaU3p3dmVHMXdSenB0YjJSbFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQThlRzF3UnpwamVXRnVQakF1TURBd01EQXdQQzk0YlhCSE9tTjVZVzQrQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4NGJYQkhPbTFoWjJWdWRHRStNVEF3TGpBd01EQXdNRHd2ZUcxd1J6cHRZV2RsYm5SaFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQThlRzF3UnpwNVpXeHNiM2MrTnpVdU1EQXdNREF3UEM5NGJYQkhPbmxsYkd4dmR6NEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSGh0Y0VjNllteGhZMnMrTUM0d01EQXdNREE4TDNodGNFYzZZbXhoWTJzK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBJSEprWmpwd1lYSnpaVlI1Y0dVOUlsSmxjMjkxY21ObElqNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSGh0Y0VjNmMzZGhkR05vVG1GdFpUNUpibVpwYm1WdmJpQkNiSFZsUEM5NGJYQkhPbk4zWVhSamFFNWhiV1UrQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4NGJYQkhPblI1Y0dVK1VGSlBRMFZUVXp3dmVHMXdSenAwZVhCbFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQThlRzF3UnpwMGFXNTBQakV3TUM0d01EQXdNREE4TDNodGNFYzZkR2x1ZEQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BIaHRjRWM2Ylc5a1pUNURUVmxMUEM5NGJYQkhPbTF2WkdVK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lEeDRiWEJIT21ONVlXNCtNVEF3TGpBd01EQXdNRHd2ZUcxd1J6cGplV0Z1UGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGVHMXdSenB0WVdkbGJuUmhQall3TGpBd01EQXdNand2ZUcxd1J6cHRZV2RsYm5SaFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQThlRzF3UnpwNVpXeHNiM2MrTUM0d01EQXdNREE4TDNodGNFYzZlV1ZzYkc5M1Bnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQThlRzF3UnpwaWJHRmphejR3TGpBd01EQXdNRHd2ZUcxd1J6cGliR0ZqYXo0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEM5eVpHWTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lEd3ZjbVJtT2xObGNUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQQzk0YlhCSE9rTnZiRzl5WVc1MGN6NEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BDOXlaR1k2YkdrK0NpQWdJQ0FnSUNBZ0lDQWdJRHd2Y21SbU9sTmxjVDRLSUNBZ0lDQWdJQ0FnUEM5NGJYQlVVR2M2VTNkaGRHTm9SM0p2ZFhCelBnb2dJQ0FnSUNBZ0lDQThjR2h2ZEc5emFHOXdPa052Ykc5eVRXOWtaVDR6UEM5d2FHOTBiM05vYjNBNlEyOXNiM0pOYjJSbFBnb2dJQ0FnSUNBZ0lDQThjR2h2ZEc5emFHOXdPa2xEUTFCeWIyWnBiR1UrYzFKSFFpQkpSVU0yTVRrMk5pMHlMakU4TDNCb2IzUnZjMmh2Y0RwSlEwTlFjbTltYVd4bFBnb2dJQ0FnSUNBZ0lDQThkR2xtWmpwUGNtbGxiblJoZEdsdmJqNHhQQzkwYVdabU9rOXlhV1Z1ZEdGMGFXOXVQZ29nSUNBZ0lDQWdJQ0E4ZEdsbVpqcFlVbVZ6YjJ4MWRHbHZiajR6TURBd01EQXdMekV3TURBd1BDOTBhV1ptT2xoU1pYTnZiSFYwYVc5dVBnb2dJQ0FnSUNBZ0lDQThkR2xtWmpwWlVtVnpiMngxZEdsdmJqNHpNREF3TURBd0x6RXdNREF3UEM5MGFXWm1PbGxTWlhOdmJIVjBhVzl1UGdvZ0lDQWdJQ0FnSUNBOGRHbG1aanBTWlhOdmJIVjBhVzl1Vlc1cGRENHlQQzkwYVdabU9sSmxjMjlzZFhScGIyNVZibWwwUGdvZ0lDQWdJQ0FnSUNBOFpYaHBaanBEYjJ4dmNsTndZV05sUGpFOEwyVjRhV1k2UTI5c2IzSlRjR0ZqWlQ0S0lDQWdJQ0FnSUNBZ1BHVjRhV1k2VUdsNFpXeFlSR2x0Wlc1emFXOXVQakUxTURBOEwyVjRhV1k2VUdsNFpXeFlSR2x0Wlc1emFXOXVQZ29nSUNBZ0lDQWdJQ0E4WlhocFpqcFFhWGhsYkZsRWFXMWxibk5wYjI0K05qVTJQQzlsZUdsbU9sQnBlR1ZzV1VScGJXVnVjMmx2Ymo0S0lDQWdJQ0FnUEM5eVpHWTZSR1Z6WTNKcGNIUnBiMjQrQ2lBZ0lEd3ZjbVJtT2xKRVJqNEtQQzk0T25odGNHMWxkR0UrQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDancvZUhCaFkydGxkQ0JsYm1ROUluY2lQejYweG0weUFBQUFJR05JVWswQUFIb2xBQUNBZ3dBQStmOEFBSURwQUFCMU1BQUE2bUFBQURxWUFBQVhiNUpmeFVZQUFHNXlTVVJCVkhqYTdQMU5kaE5YMno1dW56ZnI3dC82VGNCUlJoQ2xveTVpQkRFOWQ3eGlSZ0NNQUJnQk1BTE1jc2U5S0NOQTZib1RaUVNwYUFKL1BTTjQzMGFWSTl2WVlGdGZ0YXVPWXkwdkFnRzdkTlZXZlp5MWRlMy9CQUNBWGxwa1BFd3kvTVpmbWR6ajJ6eDl3SThjSkJuMW9MUlY4L1dRdi8vUGQvN09Nc244VzkvaklCZVZVUTBBQVB2MUh5VUFBR2l2UmNhajFFSDFWYmY5MmY5eWU1ZzlTRDlDYnU0MlR4M1kzMVRsOXFEL3RyKy9QTWpGWENrQkFPRGJCTzRBQUZ0d3krenhtNzlQdnA0ZGZ0dmZnYlphNXV0WjkxVytEdkZuTjM0L1A4akZVdmtBQU9naWdUc0F3QjBXR1E5eWZYYjRLS3VaNVRkbmxBOGpMR2UzNXJsOTV2cWxQKzc1ZmFvOHJBWE9KbWlCQXdCQUp3bmNBWUJldURIamZKRHJZZm5WbWVhamZOMnVCZFl4dS9IN1paSy83dkgzRXExY0FBQ2dLQUozQUtCWWk0d256WDhPc2dyUWY4Z3FXQi9HckhQV1UrWDY3Tzk1a3YrNzhmdmwxYjl2NWpZQUFQU1h3QjBBYUpVcmk0UU9jbnVJZnZuLzRhRm1WLzU3bmxWd1h1VktxSDZRaTVsU0FRQUFqeUZ3QndCMjRvNGcvYWRiL2d6dWE5Yjh1c3lxUmNzeXE0VTh0V01CQUFCMlN1QU9BS3p0U211WFVlcncvT3FNOUlrSzhRRHoxS0g1TXFzUXZjcHFCdnI4SUJkTFpRSUFBTnBJNEE0QWZOT1ZtZW1YdjE2RzZaZC9CdmN4ejlkQityOS9aaVk2QUFEUUJRSjNBT2k1SzdQVEwzOTlldVAzOEQyejV0ZDU2cjdvVmZPbEh6b0FBTkFyQW5jQTZEaUJPbXVxcm56OWsxV1BkTFBTQVFBQWJoQzRBMERoRmhrUFU3ZDRHYVZ1ODNLNUVPbEVkYmlIZVZZaCt2OWQvYjFlNlFBQUFBOGpjQWVBQWx6cG96NUo4citzd3ZXUjZ2QWQ4d2pVQVFBQWRrTGdEZ0F0Y1Vlb1BteSs0RnRtV1MxR1dsMStIZVNpVWhvQUFJRGRFYmdEd0E3ZDB2N2xhWVRxZk44eTljejBLblVmOVhucUh1b3pwUUVBQUdnUGdUc0FiRUV6VzMyWU9salhVNTM3V0Vhb0RnQUFVRFNCT3dBODBpTGpRYTYzZlRGYm5mdVlwdzdWcjdaLzBVOGRBQUNnQXdUdUFQQWRWNEwxVVpJZnJ2ejNRSFc0d3pKMXNENVB2VkRwTEhxcUF3QUFkSjdBSFFDdVdHUThpV0NkKzZ1YXJ6OWl0am9BQUVEdkNkd0I2S1dteC9vb1dzRndQMVZ1Qk90NnF3TUFBSENUd0IyQVRsdGtQRXdkcEU5U0wxNDZUQjIwdzIycUNOWUJBQUI0SklFN0FKMXdvOC82WmJBK1VSbnVzTXlxeC9wZkVhd0RBQUN3QVFKM0FJcHpTenVZVWZSWjUyNnoxTFBWLzBvVHN1dXhEZ0FBd0RZSTNBRm9yVnRtclYvK045eW15cW9kekR6MXJQVzVzZ0FBQUxBckFuY0FXdUZLdUQ3Sktsd2ZxZ3gzbURkZi82U2V3VzdXT2dBQUFIc25jQWRnNTRUclBOQXNlcTBEQUFCUUFJRTdBRnNsWE9jQmxxbUQ5VDlTdDRhWmF3a0RBQUJBU1FUdUFHelVJdU5KNmxEOWNqSFRvYXB3aTJWVzRmbzhkYmhlS1FzQUFBQWxFN2dEOEdpTGpFZFpMV2c2aVFWTnVkMHl3blVBQUFCNlFPQU93TDNjYUExek9YdDlvRExjWXBaVnovV1pjQjBBQUlDK0VMZ0RjS3NyczljdncvV1JxbkNMZWE3TVh0ZHpIUUFBZ0Q0VHVBT1E1Ti9lNjVPczJzTU1WSVVicWx3UDEyZEtBZ0FBQUNzQ2Q0QWVhdHJEVExLYXdUNVJGVzR4eTZydit1d2dGMHNsQVFBQWdMc0ozQUY2NEVyQWZobXVqMVNGRzZyVUFmdGwzL1c1a2dBQUFNRERDTndCT21pUjhURFhBL2FocW5ERExHYXZBd0FBd0VZSjNBRTY0TVlNOXNNSTJMbXV5cXIzdXRuckFBQUFzQ1VDZDRCQ0xUSStqQll4M0c2ZTYrMWhLaVVCQUFDQTdSTzRBeFJpa2ZFb2RiaitTeXh5eW5Xek5MUFhrOHkxaHdFQUFJRDlFTGdEdE5TTlB1eUhTUWFxUXBKbHJ2UmZQOGpGVEVrQUFBQ2dIUVR1QUMyaVRReTNxS0wvT2dBQUFCUkI0QTZ3UjlyRWNJc3FWMXJFNkw4T0FBQUE1UkM0QSt5UU5qSGNvb3FBSFFBQUFEcEI0QTZ3Wll1TUoxbk5ZQitwU085VkViQURBQUJBSnduY0FUYXNtY1YrbU5Vc2R2cXRpb0FkQUFBQWVrSGdEckNtUmNhRFhPL0RQbFNWWGx2bWVzQStWeElBQUFEb0I0RTd3Q05ZN0pRYnBoR3dBd0FBUU84SjNBSHV3U3gyYnBobEZiRFBsQU1BQUFCSUJPNEFkektMblN1cVhKL0Z2bFFTQUFBQTRDYUJPMERETEhhdVdPWjZ3RjRwQ1FBQUFQQTlBbmVnMXhZWkQ1TWNKbm5hL0VwL3paTDhIbjNZQVFBQWdFY1N1QU85czhqNE1LdUFmYWdpdmJYTWFoYjdWSnNZQUFBQVlGMENkNkR6bWxZeGgxbTFpaG1vU205VmFVTDJnMXhNbFFNQUFBRFlKSUU3MEVsWFdzWDhtbVNrSXIwMlQ5MHFacXBWREFBQUFMQk5BbmVnTXhZWmoxSUg3Sk1JMmZ0dWxsWElYaWtIQUFBQXNBc0NkNkJvVjBMMncrakgzbmZUckVMMnBYSUFBQUFBdXlad0I0cGowVk1heXpRaHUzN3NBQUFBUUJzSTNJRWlOQ0g3TDZsRDlvR0s5RllWaTU0Q0FBQUFMU1Z3QjFwTHlFNmpTaDJ5Zjdib0tRQUFBTkJtQW5lZ1ZZVHNOT1pKUHNlaXB3QUFBRUJCQk83QTNsMVorUFFrUXZZK215YjVJMEoyQUFBQW9GQUNkeWpOOGZrbzN3dWx6NDVtYlg4WlYwTDJ3MWo0dE0rbVNYNVBIYkl2bFFNQUFBQW9tY0FkMnFvTzFpZEpma29kU0kveThObmY4OVQ5ci85S010dDNFQzlrSjhreTEyZXlMNVVFQUFBQTZBcUJPN1RGOGZrZ2RSRDlTK3FnZmJDbG56UkxNNk00WjBmVnJsN2VJdU9USkovczZGNWFwcG5KZnBDTHFYSUFBQUFBWFNWd2gzMDdQai9KYXBIUVhadW5YcGp5TkdkSHkyMy9zRVhHbjFMM2FhZjdxalFQZDRUc0FBQUFRRjhJM0dFZjZ0bnNyMUszVnhtMlpLdE9rN3piOXF4M29YdW5WYWxuc244K3lNVmNPUUFBQUlDK0ViakRMcTJDOXBmWlhzdVlkWjFteThHNzBMMVRxZ2paQVFBQUFKSUkzR0YzanM5ZkpYbVQ5Z2J0TjUwbWViMk5Wak9MakFkSnZxUmVDSmJ5VkJHeUF3QUFBSHhGNEE3YmRudytTcjFZNktqQXJWK21udTMrWWRQZnVBbmQvMDQ1RHlENnJvcVFIUUFBQU9DYkJPNndUY2ZuYjFQUGFpL2RMTW56VGM5MlgyUThTVDNUblhhYXAxNVVkM3FRaTBvNUFBQUFBTDVONEE3YmNIdytUUEpidXRVeVpabmtSYzZPcHB2OHBvdU0zNlliRHlXNlloNGhPd0FBQU1DakNOeGgwNDdQSjZuRDlrRkhYK0c3bkIyOTNlUTNYR1Q4SmNuRTRObWJLc25IQ05rQkFBQUExaUp3aDAwNlBqOUozYSs5NjA1emR2UmlVOTlza2ZFd3laL1J6MzJYcXVqSkRnQUFBTEJSQW5mWWxPNzBhNyt2ZVpKbm0rcnJ2c2o0VlpMM0J0SldWUkd5QXdBQUFHeU53QjAyNGZqOFU1S1RIcjd5ZVRZYnVtc3RzM2xWaE93QUFBQUFPeUZ3aDNVZG43OVA4cXJIRlpoblE2SDdJdU5SNnRZeXJHZVpWY2crVXc0QUFBQ0EzUkM0d3pyNjA3UDllNlk1TzNxK2lXKzB5TGl2bnhaWTF6SjF5UDc3UVM2bXlnRUFBQUN3ZXdKM2VLemo4OE1rdnluRXZ6YXlrT29pNDBHU3YyTUIxZnVhcGc3WlQ1VUNBQUFBWUw4RTd2QVl4K2VqSkY4aUZMN3BSYzZPVHRmOUpvdU0zNlpmQzlBKzFEVEo3MG1tQjdsWUtnY0FBQUJBT3dqYzRhR096d2Vwdy9hUllueGxtYnFmKzN5ZGIyS1crNjNtU1Q0bk9SV3lBd0FBQUxUVGY1VUFIdXhOaE8xM0dhVHVhZi96T3Qva0lCZkxSY1lmWTVaN2xlUmo2cG5zbGVFRkFBQUEwRzVtdU1OREhKOVBVczl1NTl2ZTVlem83VHJmb0pubC92LzFzSFpWNnBZeG53OXlNVGVVQUFBQUFNb2hjSWVIT0Q3L084bFFJZTdsNXcyMGx2bVU1S1FIdFZwbUZiTFBEQjBBQUFDQU1ta3BBL2QxZlA0Mnd2YUhlSi9rMlpyZjQyTzZIYmlmSnZuOUlCZFR3d1VBQUFDZ2ZHYTR3MzBjbncrVC9CbUxlRDdVaTV3ZG5hN3pEUllaLzVsdTljeWZKdms5ZFYvMnBTRUNBQUFBMEIxbXVNUDl2SW13L2JGMU8xM3plM3hPK1lIN3ZIa2RGajhGQUFBQTZEQXozT0Y3NnRudGZ5dkVvNjAxeTMyUmNhbjFyMUxQWnY4b1pBY0FBQURvQnpQYzRmdGVLc0ZhMXBybGZwQ0xhcEh4UEdYTWNsOW1GYkxQN1hvQUFBQ0FmakhESGI3bCtIeVFlbmIxUURIVzhqeG5SOVBIL3VORnhxOVNMOExhVnFleCtDa0FBQUJBN3oxUkF2aW13d2piTitIWE5mLzl0SVd2YVpia1JaTC9kNUNMRjhKMkFBQUFBTXh3aDI4NVB2OHo1Uy9ZMlJZLzV1eW9ldXcvWG1UOGQ1TGhubC9EUEJZL0JRQUFBT0FPZXJqRFhlckZVa2NLc1RHSFNUNnM4ZTluU1U3MnNOMVY2aG4ybi9WbEJ3QUFBT0JiQk81d3QwTWwyS2hmczE3Zy9rZDJGN2d2VTRmcytySURBQUFBY0c5NnVNUGRmbEdDalJvMWk5QSsxbndIMjFnbGVaM2tSMzNaQVFBQUFIZ29NOXpoTm5Vd1BGR0lqWnZra1F1Z0h1Uml2c2g0VzlzMVRkMHlabW9YQVFBQUFQQllBbmU0M1VRSnR1SnBIaG00TjJZYjNEZkxKQitUbkZvQUZRQUFBSUJORUxqRDdVWktzQldUTmY5OXRZRnRtS1dlelg1cWR3QUFBQUN3U1FKM3VOMVRKZGlLMFpyLy9wOUgvcnRsNnBuMUh3OXlNYmNiQUFBQUFOZ0dpNmJDN1laS3NDWEg1Nk0xL3ZYOGdYKy95dlZGVU9kMkFBQUFBQURiWW9ZNzNHNm9CRnV0N2Z5Ui8zWjV6NzgzU3oyYmZhcmNBQUFBQU95S3dCMXVXbThHTnQ4M3l1TVhUcTIrOGYrV3pmZDlaeEZVQUFBQUFQWkI0QTVmR3loQk94M2tvbHBrZlBPUHF5UWZrNXdlNUdLcFNnQUFBQURzaThBZHZqWlFncTM2YVVQZlp4WnRZd0FBQUFCb0VZRTdmRzJrQkZzMVdQUGZuMGJiR0FBQUFBQmFTT0FPRk9VZ0Z5OVVBUUFBQUlBMmVxSUVBQUFBQUFDd1BvRTduYlBJZUxESWVLQVNBQUFBQU1BdUNkenBqQ1pvZjV2azcrakREZ0FBQUFEc21CN3VGSytaemY0cXljdXN2eUJua2l4VkZRQUFBQUI0S0lFN1JWdGtmSkxrVFpMaEJyL3RYR1czcWxJQ0FBQUFBTHBJNEU2UkZoa2ZKbm1mdTRQMmdTcTExajlLQUFBQUFFQVg2ZUZPVVJZWlR4WVpmMG55Vzc0OXEzMjB4bytwVkhxcmxrb0FBQUFBUUJjSjNDbkNJdVBoSXVQZmtueEpNdG5xRHpzN3FsUjhxK1pLQUFBQUFFQVhhU2xEcXpVTG9yNUp2U2pxUS95MDVvK2VaNzFaOHR5dFVnSUFBQUFBdXNnTWQxcHJrZkhiSkgvbjRXRjdzbjRQOTdrOXNCVkxueUFBQUFBQW9Ldk1jS2QxRmhtZnBKN1ZQbHpqMjB6VzNJeS83SW10bUNrQkFBQUFBRjFsaGp1dGNXVkIxRTlaTDJ5Ly9IN3JmSStaUGJJVkhtUUFBQUFBMEZrQ2QvYXVXUkQxVXphL0lPcm8wZi95N0dpZVpHbnZiTnhVQ1FBQUFBRG9Lb0U3ZTdQSWVORDBhZjh6eWNrV2ZzVFROZi85MUY3YXFHWHpJQU1BQUFBQU9rbmd6bDRzTWo1TUhiUy95Zm9Mbk41bHRPYS8vOTJlMnFpcEVnQUFBQURRWlFKM2RtcVI4YWpwMC81Yk50Q24vVHNtYS8zcnM2TnB0SlhaSkE4d0FBQUFBT2cwZ1RzNzBiU1BlWjk2VnZ0a2h6LzNjTTF2TWJYM05xSnFIbUFBQUFBQVFHY0ozTm02UmNZblNmNU84bW9QUDM3ZFB1NmY3Y0dOVUVjQUFBQUFPay9nenRaY2FSL3pLZHZyMC80OWgydjk2N09qV1pLNXZibTJVeVVBQUFBQW9Pc0U3bXpjdnRySDNHRzR5SGkwNXZmNGFLK3U1VFJuUjVVeUFBQUFBTkIxQW5jMmFzL3RZKzd5NjFyLyt1em9ORWxsN3o3YU95VUFBQUFBb0EvK3F3UnNRak9ML0gzMlA2UDlOb2RKWHEvNVBkNmxibzNEdzVqZERuenQrSHlRWk5UODd1WjU0NmRjYjBNMlQvSi9OLzVPbGNzSG9YWHJMd0FBQUdpRi95Z0I2MWhrUEVnOW0vMU55emYxK1VFdXBtdDloK1B6TDJubkE0VTIrMUhnRGoxM2ZENXNqcDAvcFE3WlI5bk91aDZ6Sk1za2Z6WC9YVG4rQUFBQXNHc0NkeDV0a2ZFazlhenZZUUdiT3ozSXhmTzF2c1B4K1NUSkYzdiszdDdsN09pdE1rQVBIWjhmSnZrbGRkQyt6M05FbFhxRy9COUpwZ0o0QUFBQXRrM2d6b00xczlvL3BXN1ZVcElmRDNKUnJmVWRqcy9mcDEzOTZkdXFTdkp6em82V1NnRTlzUXJaRDdPZEdleWJPalpOazN6TzJkSGNUZ01BQUdEVEJPNDh5Q0xqVjZuYnh3d0szUHpUZzF5OFdPczcxSDJILzB3WnMvcjM2Wm0reXRBRDlUSHhKTW5MQW8rTFZaTFBzZFlFQUFBQUd5Unc1MTRXR1E5VHoycWZGUHd5bHFsbnVTL1graTVheTN6UGg1d2R2VllHNkxBNmFIK1ZPbWdmZE9BVlRaTjg5S0FRQUFDQWRRbmMrYTVGeG0vVC9rVlI3K3ZkUVM3ZXJ2MWRqcys3VkpOTm11ZnM2R2RsZ0E2cmozOWRDZHB2cWxLdlAzRnFSd01BQVBBWUFuZnV0TWg0bEhwVys2aERMMnVaVGN4eVQ1TGo4eThwZThiL1ZtcXJienQwVlAzcG5sSVd5bDVYbGVSMXpvNm1kandBQUFBUElYRG5LODJpcUcvUzNjVkIxKy9sbmx5MlZQaVNiajJRZUt4bDZyN3RjNldBanFtUGRWMCtKM3pMTEhYdzd0Z0dBQURBdlFqY3VXYVI4U1Q5bU1INDgwRXU1bXQvbCtQelllcEZWQWM5SHpvdnRHQ0FEam8rSHlYNUxSYUtmcGQ2ZllxbFFRRUFBTUMzUEZFQ2tucFcreUxqOTZsbmJBOTc4SkxmYitTN25CMVZTWjZsbnVIZFY4SjI2S0xqODVQVUR4U0hpcEUzU2Y1czJ1b0FBQURBbmN4d3AwK3oybTk2Y1pDTDA0MThwM29XNkpmMGI2YTdzQjI2NlBqOFU1SVRoYmpWNjV3ZGZTaGtQMDZhLzZxYUI4UUFBQUJzbWNDOXgzclFxLzE3bHRuVUFxckpaZWpldFVWbXYwWFlEbDBrYlArZWFjNk9ucmRvZncxVEwrRDlVM1ArR2VYYkQzL25xUmVGL1NQSlRIOTZBQUNBelJLNDkxU1BaN1hmTkQzSXhlYUNrMzRzcExxTUJWS2htNFR0OS9FOFowZlRQZStuUWJPZmZ0M0ErYVpLTWszeTJYRWRBQUJnZlFMM0hscGsvRGIxekhacXJ3OXk4V0dqMzdHN29kVThkZGhVR1RiUU1jTDIrMWptN09qLzdYRWZEWnZ6OTdiMjB5ekp1NXdkemV4cUFBQ0F4eEc0OThnaTQxSDYxZkxrdnBaSm5oM2tZcjdSNzFvdk9QZyszZW5yL2lGblI2OE5GK2lnNC9QMzZXOTdzWWM0emRuUml6M3NuMEZ6UGpuWjBVK2NwZTVWUDdmTEFRQUFIdWFKRXZUREl1TlhTZjZNc1AwMmd5Uy9OVDN0TjZmdWIvNXo2dUNpWkZYcUZqTENkdWlpK3VIZ0s0VzRsNDk3MkQrdmt2eWQzWDc2WUpMa3p4eWZ2N1hMQVFBQUhzWU05NDViWkR4TVBhdDlvaHJmTlR2SXhiT3RmT2R5Wjd0L1NOMWVZR2w0UUFmVml6My9xUkQzVXVYczZNY2Q3cHRCYy80KzNQUHJucWQrNk9vOEFBQUFjQTltdUhmWUl1UEQxRUhLUkRYdVpiTEkrTk5Xdm5NOTIvM0hKTzhLcWNVc3lZODVPM290WklHT3FnUGQzeFRpM2o3dWNOK01VaS9BZmRpQzF6MUs4bmV6VFFBQUFIeUhHZTRkMUxSR2FjT3N1Rks5T01qRjZkYSsrMnJSdThPMGI4YjdMQmJNZzM0NFB2L05lZUpCZnR6Smd0R3JzTDF0NTRkbDZwbnVjME1CQUFEZ2JnTDNqbGxrUEVrZHRnOVZZeTNiRGQyVHk5bWxKMGxlN25sL0xaTk1Vd2Z0bFYwUFBYQjhmaGl6Mng5aWxyT2paenZZTDZPME0yeS9lcjRRdWdNQUFIeUR3TDFERmhtL1RUMXptczNZZnVoKzZmaDhrdVRYN0hiVyt6VEo3MG1tMnNaQWo5UVArLzVPZVd0SzdQVjgwTFFHMitaK0dhWnVBOWYyL2JKTThyTUh0QUFBQUxmN3J4S1V6OEtvVy9OcGtYRjJFcnJYTFZ4bVNWNDBNeHdQa3p4TjNUdDNzS0dmTW05K3hoODVPNXJhdmREZlkxdUU3USsxM1dQbXFwOStDZnZsY2x0L05pd0FBQUMrWm9aNzRacUZVWVVuMjdXN21lNjNxUVA0WWVydy9YL05yMWROa2xUTjE2VXF5VC8vL3JtZTdFQjlQSm1rYmxuQy9aM203T2pGbHZmTCt5U3ZDcXZMaDV3ZHZUWThBQUFBcmhPNEYyeVJjWWszNktYNmNKQUx3UUpRdHVQelAvUDFRenUrN2ZsV1B4VlU5a09RWng3b0FnQUFYS2VsVElHYUZqSy9SV2l5UzY4V0dRK1N2RDdJeFZJNWdPSWNuNTg0Ynp6WWNnY3R1RDRWWEovMzBWb0dBQURnbWlkS1VKYW1oWXdaaXZ0eGt1Ukw4OEFEb0RRVzFYNjQwNjErOStQenQ2bGJocFZxMUR6SUFRQUFvQ0Z3TDBqVFFxYVVSZFc2YXRUc0E0QnkxS0hvVUNFZTdQTVc5OGtneWNzTzFNaURIQUFBZ0NzRTdnVllaRHhjWlB4bjlHdHZnM2RKbmlrRFVCaWg2TU5WT1R1YWIvSDdINlliRDlDSE9UNC9ORndBQUFCcWVyaTNYTk5DNWxQTWF0KzNlWklYQjdtWUt3VlFsRG9NSFNyRWczM2M4dmQvMmFGYS9acGthc2dBQUFDWTRkNXFpNHpmUmd1WmZWdW1YaWoxWjJFN1VLaVhTdkFvMDYxOTUrUHpVYnExRnN0aDB5SUhBQUNnOTh4d2I2RkZ4b1BVUWZ0RU5mWnFsbnBXZTZVVVFKR096NGZPSlk4OC9wOGRiZlBZZjlqQm1oMW0yNHZNQWdBQUZNQU05NVpaWkR4SzhtY0VKUHUwVEQyci9abXdIU2ljMmUyUDgzbkwzLzlwQjJ2MjFMQUJBQUFRdUxmS0l1T1RKRitpMSs0K3paTDhmSkNMRDBvQmRNQ0pFanpLZE12ZmY5TEJtbzBNR3dBQUFDMWxXbU9SOGZza3IxUmliNWFwMjhkTWxRTG9oSHF4MUlGQ1BOaHB6bzZXVzl3dms0N1diV1RvQUFBQW1PRytkNHVNQjR1TXYwVFl2ay9USkQ4SzI0R08rVVVKSHVYM0xYLy9RV2NyMTkySENRQUFBUGRtaHZzZU5mM2FmNHNXTXZ1eVRQSk8reGlnb3c2VjRCSG5oYk9qNlpaL3hraVpBUUFBdWt2Z3ZpZE52L2IzOFhIL2ZabWxiaUZUS1FYUU9kMXRKek5QL2JEMHF0RUdYK3Vwd2JPV29SSUFBQUI5SjNEZmcwWEdiNU84VVltOVdNYXNkcUQ3bm5ib21EMU44amxuUjdOdi9zM2o4MUhxd0hmVXZQN0pJMzdlWjBObkxVTWxBQUFBK2s3Z3ZrT0xqQWVwWjdXZnFNWmV6Sk04TjZzZDZJSEREcnlHZDBrKzNIc0IwN09qZVhPY24vNzdaL1ZNLzErYWVneSs4eDJxNW5zQUFBREFvd25jZDZRSjI3OUU3OVo5ZVhlUWk3ZktBSFRlOGZrd1pjODBycEk4MzBqNFhmZGpueVo1a2VQemt5UXZ2M0VlL21qd0FBQUFzSzRuU3JCOXplS29mMGZZdmc5VmtwK0Y3VUNQVEFyZTlubVNuN2N5MC96czZEUm5SejhuZVpaNkhZK2Jwb2JPUnZZZkFBQkFyd25jdDZ4WkhQVkxMSTY2RHg5U2grMENBS0JQU3UzZlhpVjVkdThXTW85MWRqVEwyZEd6SkMreVdvQjFsck9qeXRCWjIxSUpBQUNBdmhPNGI5RWk0MWRKUGtYWXZvOGIvdWNIdVhoOWtBczMvMERmVEFyZDd1ZGJEOXV2T2pzNlRmSmpMaGRsM1oxNWg4ZGU1ZTBIQUFEMG5SN3VXN0xJK0ZNc2pyb1BzOVJoKzFJcGdONDVQaCtrelA3dDcvYXlZR2tkOEQvZjhVK3RPanYrZkVvQUFBREFEUGROVzJROFdHVDhXNFR0Ky9ENklCZlBoTzFBajQwSzNPWXFaMGR2ZTdPSDl2RmdZVGRtM240QUFBQUM5NDFhWkR4STNhLzlVRFYycWtyZHEvMkRVZ0E5Tnlsd205LzFjRC9OT3ZpYS92RDJBd0FBRUxodnpDTGpVWkkvVStic3dwS2R4c0tvQUpkK0tteDdxNmFYZXQvODNzSFhOUFgyQXdBQUVMaHZSQk8yZjBtWmZYTkx0VXp5NGlBWEw3U1FBZmhYYWVlaGp6M2RUOU9Pdlo2cXc2MXlBQUFBSGtUZ3ZxWkZ4b2Vwdy9hQmF1ek1QTW16ZzF5Y0tnWEFOYVBDdG5mYXk3MVVMeTQ2NjlBcm1ucnJBUUFBMUFUdWExaGtmSkxrdHdqYmQrazBkZGcrVndxQUs0N1BoNFZ0OGF3Sm52dnFjNGRleTBkdlFBQUFnSnJBL1pHYXNQMlRTdXpNTWxySUFIekxzTER0L2IzWGU2dnVYVjkxNEpXYzl2ekJDUUFBd0RVQzkwZFlaUHdwd3ZaZHFxS0Z6RzRkbjQ5eWZENVNDQ2hLYWUvWm1WMldkMTREQUFCQXQveFhDUjZtQ2R0UFZHSm5wcWxudGkrVllvT096d2VwdzdsaDgvVkQ4K3NvcXhaSnN5VFBGQXVLTVNocWF5MnlXYzl5UHo1L21mSWVsbHo2WUhZN0FBREFkUUwzQnhDMjc5enJnMXg4VUlaSHFtZW9ENUpNbWo5NTJ2eCtwRGpRU1Q4VnRLMHp1MnQxcmt1OStIcHBxcGpkRGdBQThCV0IrejBzTWg2a2JpRnpxQm83c1V6eS9DQVhNNlg0aG5xQnhLdGZQMlVWcUE4VUNIcW5wUGQ5WlhjMXpvNW1PVDcva09SVllWditJbWRIU3pzUUFBRGdPb0g3ZHpSaCs1ZVlGYndyODlSaGU2VVVTWTdQSjgxL1RaTDhMNnN3M1hnRWJob1V0SzMvMkYxWG5CMjlibzczcFJ6YlgrZnNhR2JIQVFBQWZFM2cvZzNDOXAwN1BjakZpMTY5NHRVczlWSHFzTXdzZGVDeFNqcFh6ZTJ1cnp4TDhuY0J4LzdUbkIxOXNMc0FBQUJ1SjNDL2c3Qjk1MTRjNU9LME42LzIrUHp2MUVFN1FCOHRsZUNHczZObGpzK2ZOZGNlZzVadTVXbk9qbDdZV1FBQUFIZDdvZ1JmRTdidjFETEpzMTZGN2JXaFhRL0FOV2RIODlRejNaY3QzRHBoT3dBQXdEMEkzRzhRdHUvVVBNblBGa2NGV05QeGVWbm5MUDIvdjFXYmVlclFmZDZpclhvbmJBY0FBTGdmZ2ZzVnd2YWRtcWFlMlY0cEJjRGFCa3JRSWF2UWZicm5MVmttZVo2em83ZDJDZ0FBd1AwSTNCdkM5cDE2ZDVDTDV3ZTVXQ29GQU56aTdHaVpzNlBuU1o1blB5MW1wa2wrek5uUjFNNEFBQUM0UDRGN2hPMDc5dUlnRjIrVkFRRHVvUTY4ZjB4eXVxT2ZPRXZ5TEdkSHozTjJ0TFFEQUFBQUh1YS9mUytBc0gxbmxxbGJ5TXlWQWdBZW9BNitYK1Q0L0YyU04wa09zL2syUXJQVXZkcG5DZzRBQVBCNHZRN2NoZTA3TTAveVhMOTJBRmpEMlZHVk9uaC9uVHAwLzZYNWRaM3o4K2NrMCtaN0F3QUFzS2JlQnU3QzlwMlpwUTdibDBvQkFCdFF6M2cveldXYm1lUHpTWE05ODFPU1lmTzNoczNYTW5Xd25pUlZrbithYy9OY3l4Z0FBSURONjJYZ0xtemZtZE9EWEx4UUJnRFlvcm9OekV3aEFBQUE5cSt2aTZaK2lyQjkyOTRKMndFQUFBQ0FQdW5kRFBkRnhwK3lYcjlUdnUvRlFTNU9sUUVBQUFBQTZKTmV6WEJ2d3ZZVHUzMXJscW43dFo4cUJRQUFBQURRTjcyWjRTNXMzN3Bsa21jSHVaZ3JCUUFBQUFEUVI3Mlk0YjdJK0NUQzltMnFJbXdIQUFBQUFIcXU4elBjbTdEOWsxMjlOZlBVWWZ0U0tRQUFBQUNBUHV2MERQZEZ4b2NSdG0vVFBNSjJBQUFBQUlBa0hRN2NGeG1QSW16ZnBubUU3UUFBQUFBQS8rcGtTNWxGeHNNa1g1SU03T0t0T0QzSXhRdGxBQUFBQUFCWTZkd005MFhHZ3lTL1JkaStMY0oyQUFBQUFJQmJkTEdsekpja0k3dDJLNFR0QUFBQUFBQjM2RlRndnNqNFU0VHQyeUpzQndBQUFBRDRoczRFN291TTN5WTVzVXUzUXRnT0FBQUFBUEFkblFqY0Z4bWZKSGxqZDI2RnNCMEFBQUFBNEI2S0Q5d1hHWStTdkxjcnQwTFlEZ0FBQUFCd1QwVUg3b3VNQjZrWFNSM1lsUnNuYkFjb1I2VUVBQUFBc0gvRkJ1N0M5cTBTdGdPVTVPeW9VZ1FBQUFEWXY1Sm51TDlQTXJJTE4wN1lEZ0FBQUFEd0NFVUc3b3VNWHlVNXNmczJUdGdPQUFBQUFQQkl4UVh1aTR3bnNVanFOZ2piQVFBQUFBRFdVRlRndnNoNG1PUTN1MjNqWnNKMkFBQUFBSUQxbERiRC9iZFlKSFhUNWttZUt3TUFBQUFBd0hyK1c4cUdMakwrRkl1a2J0bzh5Yk9EWEN5VkFnQUFhTFhqODFHK25vQTFiTDVtdC95TEttZEhsY0t4d3pFNnVlVlBSMWZ1djY4N081b3BHa0QzRkJHNEx6SStpVVZTTjYyS3NCMjJlYkU5VERKSjhrdno2NDg1Ty9KK1k1dG16VmdEeWpsWGpKcjM3ZE1rdzV3ZC9hd29lRitjajFJSGxNUG12VEhJL1NaZXZibmorMTA5VHk2VC9KVTYrSndMNDNuRStMd2NqNk1rUDF3WnE4TkhmcityOStkVk16Yi91VEpHM1QvMDg3cmdseVFEMXdWUXJ0WUg3b3VNUjdGSTZxWXRrendYdHNOR0w0NkdXWVVtazFzdXVpZEpwZ1crcnNtVjdiLzA5STdqeWw5WC9udWVaSm16bzduQkFjVWYzeVpaQlY3L1MvSlh6bzVPRldhdGM4WGx3OWpCVi8rL3hBRHcraGhKTTA1R3Qvek5LbldRZFBuZjlaZlEwekhtK2pYVXRseCs3OE1yUC92eW11V1BKRlBYTGR3eVBnZk5tSG1hVmRDK0RjUG1hM0xqNTg5dmpGSDM4TjBhWDZNYng3L0JWK092dEgyK2Vpamx1b0JlYTNYZ3ZzaDRrT1JUOUczZnBHWHFtZTB1Sm1IOUM0bXJGMGZmdS9qK0pXMFAzRmMzdkQ5bE5Wdm5JUTV2K1o1SlBhTnNuanFRbjdtQWdsYmU3RjI5T2ZxcCtYVnl4Nzk0cDJqM3J1MHczMzRZZTl0eDlFTUI1NzVSVnVIVFlBUGY5K3E1NG8vbVhMRTBnRHA5RFhXWXV4NDg3ZGJsbUo0a2VkTUU4Tk1rditmc2FHcG45ZnJZZlpqazEreS9yZTJvK1RwSjhxa0o0SCtQQjBSOXVpNDQ3ZUYxd2ZMS05jSGNkUUVsYXZzTTkvZlJ0MzNUWGdqYjRkRW4vc3Nic2w4ZWNXdzZUUEtpWmE5bmxOV01uY2tXZjlMazJ2ZXZieFJtU1Q2N1VZQ2QzUXlOc3BvOTk4T1YveDRxMEZadVBPLzdNUGFtWDlLMndMMCs5LzN5eU5mem1IUEZxeXZuaXMrcFE2WEs0T3JFKytPd0dVc25MZDdLUWJOOUoxZkM5OC82YlBmbStIMlNkb1RzM3pKcXZ0NDRUaFoxWFhCNUhuM29kZGN2YVZ2Z1hoL0xIM3VkODVCajhjMTd5RmxXRDV1TWQxcnZQMjNkc0tadit5ZTdhS05lSE9UaVZCbGFjWkw2L3hXd2xiT2NIVDNyK1g0YVpiT0I5TTk3RDVqcjEvUnI4N3FHTGFoeWxlUmprbE96RnRiZXQxOVNTZy8zczZQLzJHRWIzLytYKzM2UzFjZDJCMXU2RVhxWHM2TzNpbjZ0OXBzTXBQL2YzbytIcTJEME1PMzRwT2s4eVVldGpJcDhmd3hTaDVndlUvWURQdGNyM2I3ZWY1bnkxNHliTnNmSm1aMjY5ekYxOWY1eDNldUNaYzZPL2w5TFhsT2JyZ3RtcVIrR3VpNmd0VnA1dzd2SWVKamt6MmdsczBrZkRuTHhXaGxhY3hJV3VMZjNnbnVTdTNyb3JXOC9JZFhxWTdGdHZ0bGROamNLNzNvL1krSDQvT1NSKytuWGxCTm10TFVsU2RYYUMvZUh0MzNaN3Y3cmMrQysvWDdUTC9ZeUR1dHp4V1hvMU5acjhHWHEwUE9EMExQMTc1TkI2azhydk96WVBaMHgySzFqK1p0MGI4SDVlVHlnN05wMXdiTzlQRWhaVGRScTgzVkJsZnBUSG83SnRFNWJBL2MvbzVYTUpwMGU1T0tGTXJUcXBDeHdiOGQrR0Y2NU9EcmN3WVhFZktjcnpkY1hmNWNYU1VVZHM1Szg3dTFGVTBrejFidm5RODZPWHU5eDM0K3lhdjNTNXJZdi9RcmN0Lzh3OXV0ajROblJpeDIrdnNQVW9XaEp4NTFsaEo1dGZiOE0wczJnM1Jqc3poaWRwSnRCKzAxVmN6MDl0ZE8zZWwxdzJMbnIwM3J5ejY5RlhoZjRCQ1l0MHJvZTdvdU0zMGJZdmtuekpHYTJ3K29tOEREM1g2Um0wMFk3V1dtKy9CdUpreVNIT1Q1L2w3T2pEd1l1Ty9UWG5uLysrM2pZMG9aenhUQzdmUmg3MDJSSHIvT2tPVmNNQzl4TGcyYmJmODN4dVVDcFBlK2RrK1k0TnVqQnE3MDZCdCtaVFZ6TXNmMU55bThkYzEvREpMODFmYS9mYVRXejl0aTVlZy9wdXFDdHgrVGo4MTlUZjFMUWVHZnZXalhEZlpIeEpNa1h1MlZqbGtsK1BNakZVaWxhZDlJMnczMDNkUjVrdmNYcnR1SDUxb0tCYnM3WW1UY1hUZk1lSFIvTWNOK2ZIL2ZhMHFpY2ZkK3RHZTc3ZnhoN20rMnQrVkgyRGZWZHBzMjV3alh2ZnQ1RHc5UnJiL1g1M0RWcnhtQmxRTFJ5akw1Tjl6OTE4VDJuNmZNblNCOStUSnUwN0xwZ2UrdTd1QzZBcldqTkRQZEZ4b05ZSkhXVGxrbWVDZHZwNFFYU0pOdnRvYmV1cDgwRndDWmY4eWpkblJrN1N2S2xtY0Y0YW9DejFmT21vS1F2NTRsQjJ2Y3c5cVpKNmdlT216NC9mdXJZRGZXbHd5U1RISjgvTjZ0dDUrK250Nm1EbXI2YkpQblRwL05hTno1SHpYRnZwQmovZm9MMGhVOEZmZk82NExDbDU4bkpGdTRoVDlLOW9QM3FkY0dvdVM2WUcrVHNRNXRheXJ6djZCdDlYMTRmNU1LQmhiNWRMSlh3eVlISmhpOE8zNmY3SDQwZEpQbVU0L09uTysxclROODRaL2JqUERGSkdaK21mSnJrdzRaZTh6RDltSDA4U1AyQTlwMGVyanQ1TC9WbFhEMTBETDdQOGZrdnFUL1J1RlNTdlk3UlY4MTFNdGZINkc4NVBwL0c3TjhTcnd1bUczck5vL1NqamVFdzlZUFFGeVp1c1E5UDJyQVJpNHdQMDU5ZWFydnc0U0FYRGlqMFVWWEFObzZhb0h3VE54Ri85K3pZZVpMajh6ODNVai80Mmg5SzBBdnpRclp6dEtHYjZyZk51V0xTbzMzOEpzZm5Qalc3VGZWQ3UzOUcySDZYU1pLL215Q1AzWS9QUVk3UGY0dXcvVnNPamRHaTdoK3prZU50L2Q1NDM4UGo5eWZYQmV6RDNnTjNyV1EyYm5hUUM0dWs0b0twM1VaclhDZ05tejdQZlZtVTdMYmFmUkc2c3dWekplaUJlalpmQ2VlS1lUT0QrTEhuaWttT3ovOU9mMXQ5bk9UNC9EZm5paTJvSCtMOGxuNzN3cjZQUVhPOWNxSVVPeDJmbzlSaDRxRmkzSHVNdnUzNWRVSDM3eDh2cnd2cTk4YXJIbDhYeUIzWnFUYk1jUC9rZ20xanFpVFBsWUVlSzJXRzZ1U1JGMHF2WWtiWjVRV24wSjFObXlsQnI2Nlh1bnR6WFljblg2SlY0NkZ6eFFiVk15TS9SYi8yaDkvckNubDJOVVlQSGZzZXBmNVVVTCtQbGJOQ3h2amtFZi9tY2xhNzk0YlFuUjNiYStEZXRKSTV0QnMyNXJsRlV1bTVlU0hiK2ZRUkYwcVhINDBWSE5SR0VhU3dPWlUrcHIxU3lzUFowUVBQRmNNY24vOFpnZWpOR21vcnNhNzZYUHNsV29BKzFvbEFjK3RqOUNRK2ViSGVHTzMzZFhVcDk1QVB2UzRZTmNmdVY0YjRqZU14N01EZUFuZXRaRGJPSXFsUXpzWFM4SUVYU2o0YWUvZEY1Mi9LUUkrT0hmUnJmOS8vNGV5cXAvYkk3blZ6dlZHcnNOM1lXbmNjbWlpd3JUSDZQbktGVFYxWC85bmNlL1ROWDRWczUwOFBlRitjT0haLzg3cmdyVEt3YmZ1YzRXNm01dVpNRDNMeFFSbm92Ym9IMzdLQUxSM2U2NFpyZGFFMHRIUHZOR2x1dEtBUE4xcHN4cnlRN2J6ZnNWOVA3ZnZlWEo4b3d3TUoyemR0RktIN3BzZm9wNWk5dStuenpwY2VodTVWeDY0TFBrWHI1dTk1MDB4V2dLM1pTK0MreUhnU0gwbmM1TW5oaFRMQXYrWUYzWFI5NjBMcHZRdWxlM3ZsZ29rMXpaU2dSMHA2T1B2dDg0U2UyZy96cWFjek54OUgyTDdONjc4dnlyQ1JNZm9wTW9WdHFOLzdmVHBlbmgyVmNoMDR1Y2QxZ2ZaZkQ3c3VHQ29EMjdMendGMHJtWTNUdHgydW14ZXluY1B2M0VDOHNpdGRNT0ZHaTU2ZksrNWFJRTFQN1hYT0ZRTmwrTzY0dXh4Zkk4WFlpcEUyUjJ1UFVXSDdkdFhIZ0g0OXBDemx1bUQ0bmVQMnhQQjkwRGpYbnBTdDJjY005MWZSSG1GVDlHMkhyNVhTR21KNDY0VlN2ZUNkRzRqSFhUQzVlYVc3TjFqMGRiOFB2bkZUUGJJYkgyd1VEN1MvemZqYUZXc0xQSDZNbnJoVzN0bjVwMCtoZXluWEJiZmRRNDZTL08yNC9janJBdjNjMlpLZEJ1NkxqRWZ4c2RkTjBiY2RibGNWc3AwL3VNSGR1SW5XTW5UNEJvdk5LdVhoN09pV20ycUxvNjdualU5RWZkTW40MnRuckMzd1VIVzlQS2pZbmZyK3BCL0h6SDhLMmM3aExkY0ZYNklONlRwZXVpNWdHM1k5dzkzQ2RwdXhqTDd0Y0x0eVdrTU1yMXdvRFNKc2Q1NWhYLzVRZ2w2cWl0dmkxYm5DVGVINkJIYTNqN0ZQU1E0VllzZGo4YTdXVWR3Y255UHYzYjBZSlBtdEIrMjRTcnlISEVYWXZxa3hibUl3RzdlendIMlI4VW4wazlxVUYvcTJ3emZOQzl0ZVlmc21MMEo5TEpCdUh5L1loSEllenY3VTNGUVAzRlJ2MUVUSWVZTTJIZnYwbTdVRnZqcytoN0hZN0Q2TjB2MWUxMVZoNzRtUjY0S05Pckd3T3B1Mms4QzlXU2pWck1QTitIQ1FpNmt5UVBFWFRKUG1Zc2xIdHpmdnBSSndiMmRIYzBWd3JtaXhnVTlCYlkzWmJKZk1ITjcvKzl6Q2ZkL3pXd1NMKzc5M09UN3ZicVp6ZGxTbDdpVFFkajgxMXdXZnZDZGNGOUJ1VDNZNGNCME1Obk5qK0U0WjRMdks2TTFiWDdTZTJGMWJ1SEhWRTVYN21TbEI3NityU3ZCYmhPM2JZSlo3ZlMweWlMQzNMZVB4clRMY09rWk5UbW1QVngyL3hwNFhjWi9qSWZ5MkhPcmx6aVp0UFhCZlpEeE04a3FwTjBJckdlak94VkljRzdmS0RBVzZkS3hnTzBybzN6K0psb3piOUtzUzVGT3NDOUNlYXhjdERhNDdQaitNeVNsdDg3N0Q0N1FxNUxyQWNjSTlKQVhZeFF4M0gwL2NqQThIdVpncEE5ekxVZ2w2YjJqbUl2ZGd3ZFIrcTVTZzkwNTYzVHY3K1B4VkxKTGFOdnE1cjhibk1MS0VOaHFrWHV5M2krUDBIN3UzOXc0ZGc5bVVyUWJ1aTR3bk1TdG5VemVFV3NuQWZaV3pHQjdiWmVZaTN6TlhndDVmWDhGSkwxOTFIV2FheWRjKzlzdUtIdFh0TmVyb09IVVB5U0FlUkxNaDI1N2g3b24wWm1nbEF3L25QWU9MSmI1OWpLZ1h5S0svNWtwQSt2dHdWcGpaWHE5NjMxcW0vdlRGeEZCby9UanQyajV5LzBpUy9LSUViTUxXQXZkRnhxK2lIK0FtVExXU2dVZVpLMEh2RFpyZW4rQVl3ZGZPanR4WWt5U2ozaTJTSnN3c1FYOG5ydm4wUlZuanRFdnROODZPWEJ1U2FDdkRobXdsY0Y5a1BIQ1MzSWhsa2hmS0FJOVNLUUV4UTRHNzZkOU80dVBqWE41YzkwVWRJcmhQYTc5UjgyQ2tqM3o2b2h6RERoNVAzRVBTcitzQ3RtWmJNOXhmT1VsdXhEdXRaT0RSTEhwRFlnWWZkNXNwQWZIeGNXcFBlL1JhMzd0UEs4YWIzczJ5ckQrWjZOcXRMRjFyTFZQWnBmVHN1b0F0MlhqZzNzeHVmNm0wNndjQkI3bjRvQXp3YUhNbElNbXdkNjBDY0l6Z0lmNVNBdEtYZ0s4T3hVN3M3bUlNVWs5a1MwL0c1eUQxQXlISzA2WDlWdG1keElNL05tQWJNOXpObXRpTTEwb0FhMWtxQVM2WXVQTm1Tdjl1WUdYUWswVXFoWm5sZWRPamlRT3ZZZzI0VW5XcEJaSlBTWk9ZdE1VR2JEUndYMlE4akZrVG0zQjZrSXU1TXNCYUtpV2c0U09CM0RSVEFvd0ZicGgwK3RVZG41OGtHZG5OUmVwK3ovMDYyUElwK2RMSGFUZGFJTG1IcEIvWEJXemRmMTBNdE00eVpyZkQrczZPcWh5ZnF3T0pnSUd2YVNNQzNQUlR4MTlmRis3VGxrbW1xUmU5cm5KMk5MdnpiOWFmV0JnMSsvVXdaYytjUHNueCtidWNIVlVkSDU4RGg2R2lEVkovaXVaRjRhK2pzaXZweVhVQlc3YXh3TjNzOW8zNWFLRlUyT2lObVl0M1JrckFEWE1sSUVseWRqVHpjSmJPbnl1T3o5K203TUQ1Tk1udk9UdWFQdUM5UGI5eXJIL2RCUEF2Qzc1ZmZaUHlnOHk3eHVjd2NvU3U2TUxEb2FYZGlIdElObUdUTFdYTWJsOWZkWkNMdDhvQUd6TlhBcHFiT1JkTXJIeHJWaVRneHJwYjU3OUJ5bTNWTVV2eVk4Nk9YandvYkwvOXVEL1AyZEdMSkQrbUR2QkxjOUxoZnNKZHp4SG16VmllcFI5aGJ0bjdzMzVZQjkyOUxtQm5OakxEM2V6MmpYbW5CQUJiTVl3SE1LeHVmT0dxS2hicUk2a2Z6bll2YkhtVjhqN3R0MHl5ZnNoK20zcm03WXNjbjM5TzhxbXc5LzVKa3JlZGU4OTFLMGVZSi9rOWRiZyt2M09COXZyaHlTajFPa09ISFRzSDlhRUZFdjB3eVBINTRNNzNNWHpIcGxyS21OMit2dGxCTGs2VkFUWiswVHRSQnBxYm1xa3lFSXRrOHJVcUFuY3ViNjY3cE16WjdmTWt6N2NlMXRYdHBINU84aVhsekdKOG1hNEY3dDFaS1BVMHlmMUQ1dnJ2VmMyMTZlc2NuMCtTL0pydVBId292UVhTUEdZM3M3cUhkTy9BbzZ6ZFVzYnM5bzB4dXgwMjcvK1VnTVlQU2tERGdxbkFYU1lkZXoySEtlc2h3anpKczUzTmpEMDdXdWJzNk9lVTAySm1rT1B6N3R4M2Q2TjMrelNydGtmVkdtTnhkcVhsMGF3RGU3ZjBGa2hMcDBNYVF5WGdzVGJSdy8ybE1xNXRkcENMbVRJQXVGaGk2K1pLZ0RGQlQ3d3A3SDM0YkM4ZjNhK0R6bEx1eFY0YW42MndUTjMyYUxPZnhqZzdxbkoyOUN6Sjg1UWYrdXFDZ0h0SWVtMnRsaktMakFjeHUzMFR6RzZIN1ppNTJQdFgxZFRqcithbXR2cjNCcUgreVBtbytYdVRKRDgxdnc0NjlQckxlUzMxamRiREhaKy9MV2E4bngzOXgxdVNGdkZwcUpYNWxYTkZsYXM5aUZmbmlzdGZ1M2l1ZU5xWlYxTFBoQzRsS0ZobVgySDd5dk9VMFY1bTFJbTFCc3FlM1g0NVhyZTNEODZPcGprK3IxS3ZNekFxdEU0bDkzS2ZSMXZTKzF3WERKdnp6T1Yxd2RNTzF1MS9oZ0NQdFc0UDkxZnBXcS9EM1RPN0hkam1EY0Zwa3MvZnZDbW9MNW91ajBPekt6ZERoNm43U1I1Mm9CWWp3d0hnVmxXU2owbW0zd3hHcnA4cnBsZk9GU2ZOdVdLaWxLM3lhMEhiK256dmk5S2RIUzF6ZlA0aWRlamU5dnZibHltN1AzWlNidGcrejY0ZURwMGR6WE44L2l4bHJUTncyMzUrVytCMjkvMUIvSDJ2QzZybTc2NnVDK3FIODRmTmNhb0w5MS91SVhtMGRRTjM3V1RXWjNZN3NJMmJnWTg1T3pwZDgwSi9tbVRhTE9UMDNnVUgwT0VieXo2YXBWN2tiN2JtdWVJMHlXbnprUFpUeXA2TU0rakVuajArSDZXY0J5RHJqOEZOcVFQT2Q4MDFUNXNkcHZ6QXZjUWNZWmxkUHh5cUh3U1ZITHEvelBINWg3MC9VT08rcHMwOTVHeXRNVnRQK0RwdEhzaS9qMG02OU5TamU3Z3ZNajd4eGxuL1JzZnNkdGlxcW9ldjkxbk9qbjVlTzJ5L2Z1RTBTL0lzNVN3cWRydDZ4Z1ZBMzg4VnMrWmM4V3lqUVdmOWtQYkhsTjBUZjlTUmZmeXltUGZlMmRIYlZtM1IyZEdIdEwrZis2QjV3RlhxOVZpSk9jSXl1MXpROS9xWVhEYlg0U1dlcXdZcDg1T3lmYnd1K0xGWmsyQ1Qxd1duU1g2T3RYTG9xWFVXVGRVWGVYMW10OE4yTDFEN2NyRzBUUEk2WjBjL2JtMlcyTm5Sc2xsVTdMVGdPbzI4S1lBZXE3S05vUDNtdWFJT2h0eGM3OHZxNC93bGVHMjdIdTJYZ2tmcHJ3VnU4N3U5OXMydmo2M1BDOTNmSlg2YW9TLzNrRmV2QzZvdGpkMnE4T3VDaVFzTEh1dFJnZnNpNDBtczFyc3VzOXVCVFppbW5wSHdZWWMzb1hObEJ5akt1NjArbEwxK2M3MU1IUXd0bFgwdkRsUEc3T0ZaODZtSTlxbUQxZE1DOW5ONTZrVVdKOFZkYSsvdU92dDc0L0oxZ1h0OTFMUzVvdC9YQlM5Y0Y5QTNqNTNocm5mNytqNHJBYkNHWmVvK2tydnZKVm5teFQ3QXQ0Nm5YVFZQOHZQTzIzYlVNOXA4a25NL1NwazkvTTcycmFYVXRqS2w1UWpMdEtsZmZoa3RqN3F3Mzd0c1g5Y0Y4OVFMc1VKdlBEaHdYMlE4VEtsUDFOdWpPc2pGcVRJQWp6UkxQYXQ5dXFlTC9WbEs3K2NPY1AwbXNJdE9VMzlVZkw2bnVuNUlpWitJcWhjS0wxTTVzNGZuclZrbzllN3hXNlgrRkdHYmxkaFc1cVN3N1gzWHdnVS9TMXd3OTlERlJpdDhhTmI2MnRkMXdkdjBkNkY2ZXVneE05eFBsRzF0bnV6QjdzdzY5bnJlTlgzMmxudmZEZ0RhYUpua1JjNk9YclRnWE9HYWQ3Y08zUXYxYWpzUGl4cWQ5WXo4UVVGYlhMV2lsY3hOOWNPZ0R5bkxvRmtzdHhUekRsNFhQTS9aVVJzK3Bld2VrdDU0VE9EdTQwRHJIK3hPbFFGNDVJWFMyeFpkN004S3ErSElNQUo2Y0s1NGxyT2pkbHhyMXR0UjJTMDc4MnNSWTdRdDQvUDc0M2ZXOHZFN0tLdzNkbWt6OHQrMWZOdVdoZFd6blAzZnZrODFyR1BlWEJkTVc3STkwK0xHYnYzcE1YaXdCd1h1aTR3UFU5WlQ2VGFhSHVSaXFRekFnMjVPMjNXaGRLbTB0U2ljdjRBdW02ZHVOelp2MjdXdlhiT3pRR0JVd3IxUWFmZHVMZCsrdzBMRzV5Qmx6Y2l2V3YxZ3FBNkVTL3NFMFdFekR0anRkY0d6VmwwWDFHTzN0UFBBMEZEaU1SNDZ3LzFYSlZ1Ymo5WUNENzFRK3JtbFBZYW5kZzlBcTI2cWx5M2N0czkyejA0Y3VoZmFpdDlidm4xUEN4cWZnNEwyZXdsdEx6NDRUdkVOcHkyK0x2amQ3cUVQN2gyNFd5eDFNemREQjdtWUt3TnczMk5HYzZGVXRYTHI2Z3M0eHpTQWZkOVUxNHVnTFZ1NWRmVUQ0NlhkdEhXbHRKTXA2N3FoYml2VDV2RTdLYVNTSmJXVFdhYUVTU1gxTWYrMHNPTlVpUXY5bG5wZDhLTEZyWEZtZGhGOThKQVo3b2ZLdFRhejI0SDdtcWU5c3hKY01BRmRzeXgwdSt1YjZqTE9hV3lMZGpMOXZ0WTVQcDhVVU1OSlFmdDdXbEFQYjIxbEtPKzZ3S1F0ZXVJaGdidkZVdGUva1pzcUEzQVA4NVFSdGlmSkgzWVgwSkhqcnB0cTU0cFNUUXJaemxMYkNQeGgvNi9oK1B3d1piV1RLU2ZFcmo4eFVoWDJmanAweUhaZEVKTzI2SUY3QmU2TGpFZXhVTUM2TEpZSzNNYzg1WVR0S2ZBaUg2QXI1NHJYaFcwdjIxTkttNFpad2UrM05udHFmRzd3dXJhMHRrZmx6WEovR3JhaHBMQTlTZjZ4eStpNis4NXd0MWpxK2l3TUFYelBNc21MZ3NMMkZIaFRBbEM2ZWNwNk1IdDVmbU43SmtXTTI3TEc3TlZyblpuOTMvbnhlV2xhNEFndGJac1BIYkszY2wzd3VzQnRoazY3YitCK29sUnJxUTV5TVZVR2NETC9obVhxQUtYRWk0L0tNQVBZNmJsaVdkUld0eit3TEZmZHYzdFF3SmFXUGdibUxSOEhveFp2MTdDZy9meTV1SkY1ZGxTbHJQQnkwTnJ4V3U2eDZWbUJEelRkUDlKNTN3M2NGeGtmcHF5ZWEyMDBWUUxZbS84clpEdGZGenhiM0FVVHdQWXRDNzJwWnJzbWhXeG42WDM4NThaQnA4ZG5mVDFiN3JWNGFaK21QeXhnRzJlRlhCZThLUEs2b0g1UUJKMTJueG51dnlqVDJqNHJBZkNkaTQ3VGdyZCthUWNDYk4yODhEWmVNN3R3SzU0V00zN0wxdlord3orMWRMdEt5aEttQlkvUDByWmR4dVM2d0Qwa25YZWZ3UDFRbWRaU0hlUmlyZ3hBaC8ybEJBQ3dGNU1TN29jNk1KdHgxdkx0R3htZmF5djNVeGgxNkxvc2FJdEhPVDRmT0h6MzNsd0o2TEp2QnU3YXlXekVWQWtBQU9pNXBSSnNXTjIvdlFSVkI2cmQ5dGN3TWo3WE5pdDhqSmEyL1pNQWROajNacmo3cU0vNi9sQUNBQUI2enFlaE5tL2lmbWhIU3BpaDM3NkZLQ2NGN2VGNUI5YkhLTzE5OWpRQUhmYTl3SDJpUkd0Wkh1UmlxZ3hBeDgyVUFBQjI3cWRDdHJQcVNMM2IvanBHTGR1ZWtnTFZMbHpMbHZZYVJxSHZURTZsMCs0TTNCY1pqNUlNbGFqM0oyNEFBS0I5Sm9Wc1o5V1JlcmY5ZFF5TnowZnJ3cWN3NW81ZkFPM3hyUm51aDhxenR0K1ZBQUFBMktqajgyRktXV3ZyN0dqV2thcFhMZCsrcHkwYW41UEM5dTI4STJPMHJQZGFlZU1FNE42K0ZianIzOTYzRXg0QUFGQ0NVU0hidWV4UXpmOXArZllOV3JRdGs0TDI2N0tJSHYzM00zY2NBMmlIV3dQM1JjWURCNysxVlFlNXFKUUJBQUJNUk5td1V1N1Y1blpWTDhmRVR3WFZyVXRqdExURnFTMmNDblRXWFRQY0Q1WEdUUVVBQU5CS3BRUlZTL2QzTzNSOFBtckpsb3dLMnE5ZFdyaXhLbXg3UndIb3FDZUZYOEE1Y1FNQUFIMHpMR1E3LzdLcmRtcXc5eTA0UGg4VU5ENlQ3aXpxVytKNkNjTm12QUIwemwyQiswUnAxalpUQXFBbktpVUFnQjBwSzlCY2RxanlKYnlXTnR6SGoxekhlajBkSGk4NFA4QzlmQlc0THpJZXBhd24wcTA4Y09qZkR2UkdkeGFhQW9BU2pBcmExbm1Icm5mbWh0NjlUQXJicjdPTzFiOHlYbkIrZ1AxNzRvRG53QUVBQUJSanBBVGNvUTJ0WVV0YU1IWFp3VEV3TDJ4N2YvQzJCYnJvU1V0UDBxWFR2eDBBQU5pR1FVSGJXdGxkdlRNcWFGdm5IYXovL3hXMnZVTnZHYUNMbmhSK2duVGlCZ0FBK3FTY0NWTGRhenZYOXRjemFjRTJETzNQdlpvWHRyMlRBSFRRdGNCOWtmRXduakQyOFNRSEFBQ1V3ZjNhL2xSSzhBM0g1NVBDdHZpZkR1NkZaWUhqeGpFTjZKeWJNOXduU3JJK0M2WUNBQUJiTWl4a081ZDIxUjdzTjd3Y0ZsYXRMdDYzengzVEFQYnZadUQrazVLc2JhWUVBQURBeHBVMUUzUnVoKzNGc0tjLyt6R3F6dTM5czZObGdWczk4cllGdXVhSkE1MlROZ0FBVUlTaEV0QmlKdkMxdzdLdzdSM1laVURYYUNtemVmOG9BUUFBc0FWREplQTc5bmxQUHlpcVVtZEhzNDZPZ1hsaDIvdlUyeGJvbW44RDkwWEdJK1hvNWNrTkFBQW93MUFKOXFwU2dtK2FLQUdQTUZBQ29HdXV6bkFmS2NkR0xKVUFBQURZZ2g4SzJ0WS9PbGovRWo3Ti9MKzkvTlRqODBGaCs3SnlPR21Oa1JJQVhYTTFjTmR2YlRQbVNnQUFBR3pCVUFuNGpsSFBmdTVqVlIwZUErVTk3Q3J2Z1EzQU41bmh2bUVIdVZpcUFnQUFBRDB5VUFMV01GSUNvRXNFN3B0VktRRUFBTEFsRXlXZ3BVYUZiZS9TTGdOZ1c1NGt5U0xqUVR5UjNvUktDUUFBQU5pVGtSTGN5MThkZm0zTEFyZDVZa2dDWGZMRVNSa0FBS0RsanMrSGlzQTlEUGIwYzU4cWZXdk1sUUJndndUdW03VlVBZ0FBWUF1R1NnQjAxQTlLQUhUSmY1dGZCMHF4RVg4cEFRQUFRTjdrK1B5Tk12VEdVQWt3ZmdCcWx6UGNmZndMQUFDZ3ZRWkt3TDBjbjAvMjhGT0hoVlZwWnFBQXNDMVBYTHdCQUFDMDNrZ0pnSTRhS2dIUUpYcTRBd0FBQUk5emZENVNoRlpaRnJqTlE3c042SkluU2dBQUFBQTgwa0FKV3VUc2FLNElBUHYxWkpIeFJCa0FBQUJhN1FjbEFBQm9QelBjQVFBQTJtK29CTnpUYU1jL2I2RGtyRzAvaS8wQ2JNV1Q2TjhPQUFBQVhUSFk4YzhiRlZpanBXRUN3TFk4aWFmUkFBQUFRRi9vY3c3QUZta3BBd0FBQUFBQUcvQWt5Vk5sQUFBQWFMV0JFZ0FBdEo4WjdnQUFBTzAzVWdKYTZpY2xZQU1tU2dCMGhjQjlzLzZuQkFBQUFQVElRQWtBWU9WSmtxRXliTXhJQ1FBQUFBQUEra25nRGdBQUFOM3hneElBd1A1b0tRTUFBQURkTVZRQ0FOZ2ZnZnRtVFpRQUFBQUFBS0NmQk80QUFBQUFBTEFCQXZjTlcyUThVZ1VBQUFBQWdQNFJ1Ry9lUUFrQUFBQUFBUHBINEw1NUl5VUFBQUFBQU9nZmdmdm1EWlFBQUFBQUFLQi9CTzZiOTVNU0FBQUFBQUQwajhCOTg0WktBQUFBQUFEUVB3TDN6UnNwQVFBQUFBQkEvd2pjdDJDUjhWQVZBQUFBQUFENlJlQytIVU1sQUFBQUFBRG9GNEg3ZGt5VUFBQUFBQUNnWHdUdTIvR1RFZ0FBQUFBQTlJdkFmVHVHU2dBQUFBQUEwQzhDOSswWUtRRUFBQUE5VUNrQkFLdzhTVEpYaHMxYlpEeFJCUUFBQURydUh5VmdBMlpLQUhURmt5UkxaZGlLa1JJQUFBQWJNbGNDQUlEMjAxSm1lNTRxQVFBQXNDRkxKUUFBYUwvL3VuRGJtcEVTQUFBQVBYV2E1TE15N0lWN2ZBRFlvLzhtK1N2Sm9WSnMzSENSOGZBZ0Y1VlNBQUFBUGZOUHpvNW15dEFMeStLMitQaDhtTE9qYnQ2ckg1K1BERW1BL2RKU1pydWM2QUFBQU9peWVZSGJQT3p3L2hnVXVkVWUwQUVkOGlSSnBReGJvNDg3QUFDd0NYTWxBQUJvUDRIN2RrMlVBQUFBMklEL1V3SUFnUGJUVW1hN1JvdU1COG9BQUFCQVIxVktnREVFc1BMa0lCY3paZGlxaVJJQUFBQnJXaW9CcmRUVnhVZlpKV01JNkJRejNMZnZGeVVBQUFEV05GY0M0QjRHU2dDd1g1ZUIrMHdwdG1haUJBQUFBSFRZc3JEdEhYVjRYNVQ0MmlwdklhQkxuaFI2Y2l6SmNKSHhVQmtBQUlBMXVHZWp6ZWFGYmUvQUxtdVZmNVFBNkpMTHdQMHZwZGlxUXlVQUFBQWU3ZXhvcmdnQUFPMTNHYmhYU3JGVityZ0RBQURRVlpVU3NJYVpFZ0JkSW5EZmpja2k0NEV5QUFBQWEzRGZSbHVWMWhMa2Z4M2VGMDhOUjREOWVwSWtCN21ZS2NYV0hTb0JBQUN3aGtvSmFLbGxZZHM3c3NzYzJ3QzI1WWtEM001NHlnd0FBS3hqV2RDMi9tUjM5Y3BjQ1hpMHM2TktFWUF1RWJqdnpxRVNBQUFBYS9pcm9HMGQyRjJ3RjZQQ3RyZXl5NEN1dVJxNC82RWMyNzNnWEdSOHFBd0FBTUFqTFpXQVZqbzdtaFcyeFpNTzc0MUJZZHRiZVFNQlhYTTFjSjhyeDliOW9nUUFBTUFqdVdjRHVxWlNBcUJyQk82N2RiakllS0FNQUFEQUl5d0wydGFKM2RVN3M2SzI5dmk4ZS9mbXgrY2x2dS8rOGRZQnV1YmZ3UDBnRjFWOFJISGJCdEhMSFFBQWVJeXpvN2tpd01hTWxLQVZITmVBem5uaVFMZHoyc29BQUFDUFZSV3pwVjJjUWN5M1dCZHUvNFlGYnZQU2JnTzY1b2tUNU01cEt3TUFBRHhXVmRDMmp1eXVYbGtXdHIyVER1NkRZWEZiWE42Q3V3RGZkVE53ZDZEYmpSTWxBQUFBSG1GZTBMWU83QzVqazUzNm9iRHRyZXd5b0l1MGxObVBYNVVBQUFCNGhKSVdHQnpaWGIweUwyeDduM1p3SHd3TDI5N0syd2Jvb211QiswRXVsaEc2NytUQ2M1R3hpMDhBQU9DaFNycGYrOEh1NnBHem8yWDA0OTYzWVdIYnE2MHgwRWxQYnZtem1iTHN4RXNsQUFBQUhtaGUwTFlPN1M3anM4VW1IYXgvYWUrNXlsc0c2S0xiQW5kUEdIZkQ0cWtBQU1ERDFMT0lxMEsyZG1LSDljNjhxSzA5UGg5MnB2TEg1eVBqQmFBZHpIRGZuMEdTUTJVQUFBQWVxQ3BtUzdzVWFISWYveFMydlYwYW4rVzlsck9qdWJjTTBFVmZCZTc2dU8rVXRqSUFBTUJEbGZTcDVKSGQxU3Z6d3JhM1MrTnpaS3dBdE1PVE8vNzhkNlhaelFseGtmRkVHUUFBZ0FlWWwzVFBZM2NabXkzMlU0ZHEvNU94QXRBT2R3WHVVNlhabVYrVkFBQUFlSUI1UWR2NjFPN3FrYkxXR0VpMGxObW52N3hoZ0s2Nk5YQS95TVU4eVZKNWR1SmtrZkZRR1FBQWdIczVPNm9LdWwrYjJHRzlNeTlvVzdzMFBrZUZiZS9NV3dYb3FpZmYrSDlUNWRrWnZkd0JBSUNIbUJXenBjZm5FN3VyVjhxYXVYeDhQaXErNGlXK3h5eVlDblRZdHdMM1A1Um5aMDRXR1ErVUFRQUF1S2VTUXMxZjdLNWVtUlcydmFNTzFIeGtqQUMwaHhudTdUQkk4a29aQUFDQWU1b1Z0SzBUdTZ0SHpvNW1oVzF4RjlZWktHM0JWQk04Z1U2N00zQS95TVV5UXZkZHNuZ3FBQUJ3UDJXRm1xTWNudy90dEY2WkY3U3RrdzdVdTdUWE1QTVdBYnJzeVhmKy8rOUt0RFBEUmNZbnlnQUFBTnpUcktCdFBiUzdqTTIyM29zWC9VQ28zdmJTdG4vdUxRSjAyZmNDOTZrUzdkUWJKUUFBQU82cHBMWU1QdEhiTDM4VnRyMlRnbXRkMnJiUGMzYTA5QllCdXV5YmdidTJNanRubGpzQUFIQmZzNEsyZFpUajg1RmRabXkyVk1sOTNFdmJkcDBVZ001N2NvKy80MkM0VzJhNUF3QUEzMWYzY1Y4V3RNVXY3YlRlak0wcVNWWFFGaDhXWE8zU3RuM21EUUowM1gwQzk2a3k3WlJaN2dBQXdIM05DdHJXd3h5ZkQrd3lZN09GQmtWK0FxUGU1ckxlVTJVdCtBendLTjhOM0xXVjJRdXozQUVBZ1BzbzZSUEpneVFuZHRrTngrZURISi8vMmNHSEVhVjlXcjdFZFFaSzIrYXBOenpRQjAvdStmYytLOVZPbWVVT0FBRGN4Nnl3N2RWVzVxbzZaUCtTWkpUa2xiRzVWNGNGMXJpMGJmN0RteDdvZzNzRjdnZTVtS2FzM29CZDhHYVI4VUFaQUFDQU85VzlzdWNGYmZFd3grZXY3TGpjRE51VDVFMk96NGNkR3B2TEFzZm1wS0R4TTBwUzJuaVpldU1EZmZEa0FYLzNWTGwyZkxMdjNnd0hBQUJnODBwcjNmR205NzNjdnc3YlY3VXhOdmZwVjl1Nk5mUG1BU0ZBNXowa2NOZFdadmRlbXVVT0FBQjh4N1N3N1Iya3o1T0w2cG5KZiticnNEMUpUam8xeTcyOHNYbFMwTU9nazhKcU8zT29CdnJpM29IN1FTN21LZXZqWUYzUTd3dFJBQURnKzg2TzVrbXF3cmI2VFJNODkwdjltci9rMjYxQTNodWJlM1ZTd0RnNlNaMFhsTVFrVHFBM25qenc3MzlVc3QxZmlDNHlIaW9EQUFEd0RkTUN0L2xUci9aUTNSLzhTNzRmbEI0VzFVdThlMk96aElWOVMyc25VelVQWHdCNjRhR0IrelFXVDkySDkwb0FBQUI4UTRtelIwYzVQbi9iaTcxVHowaStUOWgrcVV1OTNQOG9iSHVIemY1cTYxaWFKSmtVVnRPcFF6VFFKdzhLM0E5eXNZekZVL2ZoY0pIeFJCa0FBSUJiMWJOSDV3VnUrWnVPemViKzJ2SDUreng4TnYra00zVTVPNXFtdklsN2IyemJSbWtuQS9US2swZjhHMjFsOXNNc2R3QUE0RnRLRGJWKzY5aENvYlhqODBHT3ozL0w0OWZsNmxMTG5XbGgyenRzNWFjdnlwemRQdGRPQnVpYkJ3ZnVCN21vNHVOQSt6QmFaUHhLR1FBQWdEdWNGcnJkZzlTaCs2QXplNkplSFBYUEpJZHJmSmQydHpaNW1CSWZCcjFzNFpnMHV4MmdBRThlK2UvTWN0L1R5WFdSOFVBWkFBQ0FyNXdkTFZQdTVLaFJraStkQ04yUHoxK2xEdHVIbTdnSDdNalluQ1dwQ3R2cVFkcjBLWVA2NGN1a3dMMC9EVURQUENwd1A4aEZpU2ZMTGhoRWF4a0FBT0J1SmM4bUhhWGswUDM0Zkpqajh5OGJ2bWNiTmdGK0Ywd0wzT2JEVm56S29INVB2Qzl5bjU4ZFZRN0xRTjg4V2VQZnZsTyt2VGl4Z0NvQUFIQ3Jlb0hLcXVCWE1FcUpvZnRxVnZzMjd0WGVkS1RkVHFtZmxIL2Z0QWphcDk5U1Q4QXJqWFl5UUM4OU9uQS95TVZwekhMZjN3a2ZBQURnZHFXM0FCMGwrYk1GSWVmM0haOVBjbnorWjNPUE50alNUeG5rOFF1dnRrYzkwM2xXNEpZUGtuemEyME9QZXZIV1NZRjFxNW9IZ0FDOTgyVE5mKzlwNVo0dVFCY1p2MVVHQUFEZ0ZxZEpsb1cvaG1IcTBQMVZLN2V1YmgvektjbVgxQThJdHUxbFIyYTVsNW9oakxLUFQxN1U3V3plMk5jQVpWazNjUC9RZ1F1NVVyMVpaRHhVQmdBQTRKcXlGMCs5NlgyT3o3L2srTHdkOXo2cm9QM3ZKQ2M3L01tRGRHRUIxYk9qMDVTYklZeXl5OUM5RHRzL0ZieTNQemdZQTMyMVZ1QitrSXRseXYrNFlzaytLUUVBQUhDTExxMjVOVW55ZDQ3UDMrNnhyY2RrVDBIN1ZhOWE4K0JoUFNWbkNLUFVvZnRveStQdHBQRDcvZFBtd1I5QUx6M1p3UGY0RUxQYzkzYmh1Y2o0bFRJQUFBRFgxUDJ5VHp2MnF0NmtEdDdmN3lSNHJtZXp2OHJ4K2QrcFc4ZWN0S1FHcFN0OVhJNVNoKzZ2dGpEbUJzMkRuZEluMTNYcGdSL0FnNjBkdUp2bHZ2OExMcTFsQUFDQVczUXg5QnFrWGtEMDc2YlZ6TWxHdy9kNkp2dmJaaUhVdjFNdmh0cW0rNjJUNG1lNWQrTmgwQ0NyZGtlVERZMjl3eVIvcGgwUGR0WXhiZll4UUcvOWQwUGY1ME9TbDluZXF1eDgrMFQvS2NrenBRQUFBUDUxZGxUbCtQdzA1UWQ0ZDVrMFg4bngrVHpKUE1sZnphL1ZOME8vdWlYSUlQVnM1UithWHllRnZPNHUzUDk5N01pNHJNZmc4ZmtzeWVlbVIvM0QxTzFqZmkxby9OMW4zd0wwMmtZQzk0TmNMQmNaZjB3M1B0NVc1RWwra2ZHcmcxeDhVQW9BQU9DS2QrbHU0SDdWcVBsYU9UN3Y3UDFmanM4bk9UdWFGZnNLem83bVRVZzk2Y3crcWZmTHA5UUxGditWWk5hODF0bVZNVG5LNmtIUDArYmZEVG8wTm1kRmowdUFEZm52QnIvWGg1amx2azl2RmhsUEQzSlJLUVVBQUpDa0Q3UGNlM3YvbDh0QXQxenYwcDNBL2FyRDVxdWVrTmpkQno5MzdWT0EzbnV5cVcra2wvdmVEWkw4cGd3QUFNQU43NUlzbGFGVEpodnJIYjR2OVV6b21WM1pHVk96MndGcVR6YjgvVDRrcVpSMWIwYUxqTjhxQXdBQThLKzZsN25KVWQzenFRT3Z3WXpvN25pdEJBQzFqUWJ1elN4M0o4ejllclBJZUtJTUFBREFGUjlpY2xUWERKc0ZOOHRsbG50WG5INXprV0tBbnRuMERQY2M1T0xVaGR6ZWZWcGtQRkFHQUFBZ1NYSjJ0SXdacUYzMHBnT3Y0WVhkV0RUSEZvQWJubXpwK3pwaDd0Y3czZmg0SVFBQXNDbG5SOU9ZVGR5OWU3L2o4MWVGajhzcXlhbGRXYXlQelFNOUFCcGJDZHdQY2pGekliZDNoNHVNWHlrREFBQnd4WXRZUUxWcjN1VDRmRkQ0YTNodFhCWnBuck9qdDhvQWNOMlRMWDV2czl4YmNPRzF5SGlrREFBQVFKTEwyY1RXM2VxV1FaSlhoWS9McFhGWkpLMWtBRzZ4dGNEOUlCZFY2b1Y1Mk8rRmwzN3VBQURBeXRuUmgvaEVjdGU4TEg2V2V6MHU1M1psTVQ0MGk5NENjTU9UTFgvL2QvR3hzSDBiUlQ5M0FBRGdPcTFsdXFYcVNCOXRuNVF2WmJ6NVJBTEFuYllhdUIva1loa2ZNV29EL2R3QkFJQ1Z1cldNY0xNYjVrbWVkV1JjemlQSUxjRUxDNlVDM0czYk05eHprSXZUK0ZoWUc3eGZaRHhSQmdBQUlFbHlkalJOY3FvUVJac25lZGFwOExOZWhITnUxN2FXVmpJQTMvRmtSei9IeklsMitFMC9kd0FBNEY5blJ5OGkzQ3pWUEYwTDIxZTBQR3JybURzNzBzVUE0RHQyRXJnZjVHSWVDNmkyd1NESkYyVUFBQUN1ZUI3aFptbm02VzdZZnRsYVJyRGJMc3ZtV0FIQWR6elo0Yzk2bDNwaERmWnJ0TWpZSXFvQUFFQ3Q3dWYrVENHS01VK1h3L2JWdUR5TmxrZHQ4cUk1VmdEd0hUc0wzQzJnMmlvbkZsRUZBQUQrVmM4bzFncTAvV2JwUTlpKzhqcGFIclhCdTJiTkJ3RHVZWmN6M0hPUWkya1NCK2wyc0lncUFBQ3dVczhvRnJxMzEybk9qdm9VdHFkNXJWb2U3WC9jdlZVR2dQdDdzb2VmYWZHVDl2aHRrZkZJR1FBQWdDVGFlTFRYYWJQQWJSL0haSlc2NWRIU01OaTVlVy9ISGNBYWRoNjRheTNUS29Na254WVpENVFDQUFCSWtpWmdPMVdJMW5qUis5RFRJcXI3TUkrMUhRQWVaUjh6M0hPUWk5UFV2ZWZZdjFHU0w4b0FBQUQ4UytqZUJzdlUvZHJ0aDNwTW5rYkxvMTJacDE5ckJRQnMxSk05L215dFpkcGp0TWo0a3pJQUFBRC9xa1AzRHdxeEYvUFVnZWRNS2E2TnlkTUkzWGMxOXBaS0FmQTRld3ZjRDNKUk9WRzJ5c2tpNC9mS0FBQUEvT3ZzNkxYN3RwMDdUUjE0enBYaTFqRjVha3h1elR6Q2RvQzE3WE9HZXc1eU1VMHl0UnRhNDlVaTR4TmxBQUFBL3JVS09KZUtzVlhMWFBackYzamVkMHl5T2ZNSTJ3RTI0a2tMdHNHRlc3dDhXbVI4cUF3QUFNQy82b0R6V1pKS01iWmlIdjNhSHpNbTVRbWJNWTJ3SFdCajloNjRIK1JpbWVTNVhkRXFueFlaajVRQkFBRDRWOTNpNU9ja004WFlxSGM1Ty9wWkM1bEhqY25UMUErQ2xvcnhhQjl5ZHZSYzJBNndPVzJZNFo2RFhNeGlNWjQyR1NUNUluUUhBQUN1T1R0YTV1em9XWkozaXJHMmVaS2ZjM2IwVmluV0dwTjFIZXQ2Y24vTDFDMk1YaXNGd0dZOWFjdUdIT1RpdFJOa3F3eFNoKzVEcFFBQUFLNnBRMkloNStNc1kxYjdwc2RqbGJPam4yTWkzMzNObzRVUndOWThhZG4yNkwvV0xvTWt2eTB5SGlnRkFBQndUUjBXbSszK01OT1kxYjdOTWZrNmRjdmFwV0xjNlVQcXNIMnVGQURiMGFyQS9TQVg4eVErenRRdW85UXozUWRLQVFBQVhGTzNtSGtidmQyL1o1WTY1SHllczZOS09iWTZKcWRKZmt6OWNJT1ZxaG1Eci9WckI5aXV0czF3ejBFdVRwT2Myald0TW9yUUhRQUF1TXZaMGJ6cDdmNGlkYkJIclVyZEovdFp6bzVteXJHejhiak0yZEh6MUxQZGpjZjZVeWcvRzRNQXUvR2twZHVsbjN2N2pDSjBCd0FBdnVYczZEUm5SejlHOEQ1UEhiVC9xRS8yWHNmak5QV25MOTZsbjIxbXBrbCt6Tm5SVzdQYUFYYW5sWUg3UVM2VzBjKzlqVVpKUGlrREFBRHdUZjBOM3FlcDIzYjhMR2h2elZpODJ2YW9ML3RrRmkyTUFQYm12MjNkc0lOY3pCY1p2NDZBdDIwT0Z4bC9Pc2pGQzZWWSt3S283ZVlkcVhVVi9VU042ZFZZNkRKanZYenpnc2FhMnR2R2gxb1djb3hhT2hSdFdCMDZuK2I0L0RESnl5U1REcjdLWmVvZzk2TndzOVZqc1VyeUlzZm43NUs4U1hLWVpOQ3hWemx0eHFGclF0Y0ZyZ3RjRjdCSC8ybjdCaTR5L3BUa3hLNXFuVk9oT3dBQThDREg1OFBtL3U3WEpNT0NYOGt5ZGJqNWU5TzJoUExHNHFBWml5ODdNQlpQNDRFUFFHdjhwNFNOWEdUOForcDJKclNMMEIwQUFIaWM0L05SNnVEOU1HVUVubFhxR1psQzl1Nk54Y21Wc1Rnb1pLdW5TVDRiaXdEdFUwcmdQa2p5ZDdyM2NhOHVFTG9EQUFEcnFXZStUNUk4Ylg0ZHRtQ3JscWtEOWorU3pISjJOTGVqZWpFV0Q1dHhlSmgyUFFoYTV2SlRGZlY0WE5wWkFPMnp5UGp3UHdWdDdDakpuM1piS3duZEFRQ0F6YWtEK0ZIejlWUHE0SE8weFo4NFR6MkQvYS9tditmYWMzRGxRZEJQemZpYjdQQ256NXV2ditLQkQwQVJtdGJvdi8rbnNJMCtpVVZVMjJxYTVNVkJMcFpLQVFBQWJFVWRnQTVUZi9wNWRPWC8vSlJ2ZnlLNlN2TFBsZC9QL3YxendUb1BHNE9qckI0QS9aRFZMUGpKSTc3YlBQWE05Y3Z4V1RWamNxYlFBT1ZvdXJPOFQ3STh5TVhyL3hUNEFpeWkybDd6Sk0rRTdnQUFBUFRhNnVIUXBhVlo2Z0RkMDRUdFg1SlVCN2w0bmhUU3cvMldGL0lsdS8wb0YvYzNqOUFkQUFBQUFPaXdwZ1g2WlRlV2YvUFFKNFcrbnVlcGcxM2FaNVRrUy9OMEJ3QUFBQUNnVTVxdy9VdnFUek5kbTN4Y1pPRGV2SUFYcVh1ZDBUNmpDTjBCQUFBQWdJNXAxaG45cy9udFY1MCtTcDNobm9OY3pKTThzNHRiYTVUazcrWnBEd0FBQUFCQTBSWVp2MDNkUm1hWk9teWYzL3c3LytuQWl6ekpxbGNPN1hQbjRBTUFBQUFBYUx1bWs4ZjdKQ2ZOSHowL3lNWDB0ci83cFBRWGU1Q0wweVR2N1BiV0dxUnVMek5SQ2dBQUFBQ2dKSXVNaDZuN3RaODBmL1RpcnJBOTZjQU05eXN2L05PVkYwMDd2V2dla0FBQUFBQUF0TnFWeFZFSHpSOTlOOTk4MHBVWGY1Q0xGMG1taGtHcmZXcGFBQUVBQUFBQXROYVZ4VkVIelIvZGF6THhrNDdWNFVXU3VlSFFhcCthVHlNQUFBQUFBTFJPazE5ZXpURHYzYm5qUHgwc3hpRDFOUCtSb2RGcXAwbGVIK1JpcVJRQUFBQUF3TDdka1MwL3FFMzJmenBhbUdHdVQvZW5uZVpKbmduZEFRQUFBSUI5V21ROFNmSmJybWZLRDE2VDhra1hpM09RaXlySnN5UkxRNlhWUmtuK2JCWWZBQUFBQUFEWXVVWEdyM0o5Y2RUa0VXRjcwdEVaN2xjS05icWxVTFRQTXNuemcxek1sQUlBQUFBQTJJV21oY3luSklkWC9uaVpOYkxLLy9TZ2FLTUkzVXZ4cUtkR0FBQUFBQUFQMGVUR3Z5VVpYdm5qWmVvVzJQUEhmdDhuWFM5Y1U1elhobEFSUGpVckFBTUFBQUFBYkVYVFF1YlBiRGhzVDNvd3cvMUtFVTlTZnp5QTlwdWwvdGpHVWlrQUFBQUFnRTI0bzRWTWtzeFQ1NUhWdWovalB6MHI2RW1FN3FXWXAyNHhNMWNLQUFBQUFHQWRkN1NRU2VvYzh0bW1KdjgrNlZOUm0vN2dMd3l2SW95U2ZGbGtmS2dVQUFBQUFNQmozZEZDSmtsT3M4R3dQZW5aRFBjckJUNkptZTRsZVhlUWk3ZktBQUFBQUFEYzF6ZGF5Q1RKNlVFdU5qNDUrejg5THZaSmhPNGxtYVp1TWJOVUNnQUFBQURnV3hZWlQxSzNrQm5jOHI5Zk5OMVFOdTVKWHd1dXZVeHhEbE8zbUJrcEJRQUFBQUJ3bDBYRzc1Tjh5ZGRoK3pKYkROdVRIczl3djFMOGs1anBYcEpsa3RmYmZGTUFBQUFBQU9WcEp1dCtTcjArNUUzTDFQM2E1OXZjaGlkOTN3bG11aGRua09SVDg1UUtBQUFBQU9CeVlkUXZ1VDFzbnlmNWNkdGhlMktHKzlVZGNoSXozVXN6VC9MOElCZVZVZ0FBQUFCQS95d3lIcWJPZFNkMy9KWFQxQjB6bHJ2WUhvSDc5WjF6RXFGN2FaYXAreTVObFFJQUFBQUErbU9SOFdIcVBIZHd4MTk1ZDVDTHQ3dmNKb0g3MXp0cGtydFhyNlc5ZHY3bUFRQUFBQUIyYjVIeElIWFFmbmpIWDFsbVQ1TjBCZTYzNzdCUmJsL0ZsbmFiTlcra1Npa0FBQUFBb0h2dU1hdTlTdDJHZXI2UDdSTzQzNzNqUmhHNmwyZ1pMV1lBQUFBQW9GUHVNYXM5cVNma1B0OVZ2L2JiQ055L3ZSTkhFYnFYNnNOQkxsNHJBd0FBQUFDVTdSNnoycE9XdEp3V3VIOS9adzVTaCs0ajFTak9QUFZzOTdsU0FBQUFBRUJaN2ptcmZaa1dkYng0WXJkOVcvUHhnMmVwdzF2S01rcnlaWkh4SzZVQUFBQUFnSEkwczlyL3pyZkQ5bm1TWjIxcUwyMkcrLzEzOENEZmY1cENlMDFUUCtsYUtnVUFBQUFBdE5NaTQySHFISGJ5bmI5Nm11UjEyL0krZ2Z2RGQvaW5KQ2NxVWFSbDZrVVRaa29CQUFBQUFPM1NkS3A0aysrdnFmbmlJQmVuYlh3TkF2Zkg3Zmkzelk2blRCOVNMNkt3VkFvQUFBQUEySzlGeHFNazcvUDlXZTFWNmdtMTg3YStGb0g3NHdmQlNlcVBObENtZVN5b0NnQUFBQUI3MDdUeGZwWDdUVzZlcG9DVzBRTDM5UWJFSk1sditmNUhIR2l2ZHdlNWVLc01BQUFBQUxBN1RiYjZLY253SG4vOTlVRXVQcFR3dWdUdTZ3K01VZXJRZmFnYXhackhiSGNBQUFBQTJMcG1VZFQzU1E3djhkZXJ0THlGekUxUDdPTDFORHY3NTlTaExXVWFKZm16NmMwUEFBQUFBR3hCc3lqcW43bGYyRDVOOG5OcGsyVE5jTi9jWUJta2ZqSnpvaHBGbThkc2R3QUFBQURZbUtaOXpQdlVFMSsvWjVtNmhjeHBpYTlWNEw3NXdmTTI5MnZ5VDd2cDdRNEFBQUFBYTNqRUpPVjVDcDhNSzNEZnprQTZhUWJTUURXS1Z2d2JIQUFBQUFEMm9Xa2Y4eWIzejBnL0hPVGlkZW12VytDK3ZRRTFTdklsUXZjdU1Oc2RBQUFBQU82aGFSL3pLY253bnY5a21YcGgxRmtYWHIvQWZidURhNUE2ZEIrcFJ2R3ExTFBkWjBvQkFBQUFBTmN0TWg2bTd2cHgrSUIvTmsyZHVTMjdVZ2VCKy9ZSDJpQVdVKzJTRDZsbnZDK1ZBZ0FBQUlDK2EvTFBWMGxlNXY3ZFBwYXBNN1lQWGF1SHdIMTNBKzlWNnVDZDhpMVRQM21iS2dVQUFBQUFmZFdzWmZrbTkyOGZrOVRySmo0L3lFWFZ4Wm9JM0hjN0FDZEpmb3UrN2wweFN4MjhWMG9CQUFBQVFGODBPZWViSkpNSC90UE9yNVVvY04vOVlCeW1EdDFIcXRFSnl5UWZMYW9LQUFBQVFOYzEyZWFiUEx4OTlqejF4TlY1MTJza2NOL2Y0UHdVZmQyN1pKN2t0VVZWQVFBQUFPaWFLMzNhM3p6aW4zOUlqOVpFRkxqdmQ2Q2VwTzdyUGxDTnpqaE5IYnd2bFFJQUFBQ0EwalZyVTc3Snd6UE1LdldzOWxtZjZpVnczLytBSGFWdU1UTlVqYzVZcHFPckxBTUFBQURRRDQ5Y0VQWFNoL1JvVnZ0VkF2ZDJETjVCa2s5SkRsV2pVK2JSWmdZQUFBQ0FncXl4SUdyUzAxbnRWd25jMnpXWVg2VnVNVU8zbkVhYkdRQUFBQUJhck9uRThUNlBDOXFUSHM5cXYwcmczczZCcmNWTTl5eVRmRHpJeFZ1bEFBQUFBS0F0RmhrUFU4OW9QM25rdDZqUzgxbnRWd25jMnpuSUI5RmlwcXNjZ0FBQUFBRFl1eWFEZkovSEIrMkpXZTFmRWJpM2U5Qy9paFl6WFRWTEhieFhTZ0VBQUFEQXJqUkIrNnNrTDVNTUh2bHRxcGhVZWl1QmUvdmZBS05vTWRObEgrSXBJQUFBQUFCYnRxR2dQYW16ckxjcWVqdUJlemx2aG5VLzNrRjdMYU8vT3dBQUFBQmJzTUdnZlo1NlZ2dGNWZThtY0MvcnpYR1NPbmdmcUVZblZVbGVIK1JpcWhRQUFBQUFyR3VSOGR1c0g3UXZVODlxLzZDaTN5ZHdMKzlOTWt6ZFltYWtHcDAxYXc1aU02VUFBQUFBNEtHYWlidHZzbjZiNmxtc1EvZ2dBdmR5M3pSdm16Y04zVFZOUGVQZEFRMEFBQUNBNzlwZzBMNU1IYlJQVmZWaEJPNWx2NEVtU1Q3RmdxcGRkNW82ZUY4cUJRQUFBQUEzYlRCb1Q1SVBxYnN2TEZYMjRRVHU1YitaQnJHZ2FoOHNrM3hNOHNIQkRnQUFBSUFOTG9aNmFaNTYwdWRNZFI5UDRONmROOWhoNnRudUE5WG90R1VzVWdFQUFBRFFXMXNJMnBkSlBoN2s0cTNxcmsvZzNyMDMyNmNraDZyUmVWWHE0UDFVS1FBQUFBQzZid3RCZTJJTndZMFR1SGZ6elhlU3VzM01RRFU2cjRyZ0hRQUFBS0N6RmhrUFU3ZVQzbVRRWHFVTzJxY3F2RmtDOTI2L0VUOGxtYWhHTDh5anh4WUFBQUJBWnpUNTNwdHNmdTNHZDdGTzROWUkzTHYveG56VnZERUhxdEVMczlRejNtZEtBUUFBQUZDZVJjYWoxTFBaVHpiOHJXZEpYbWdmczEwQzkzNjhTWWN4MjcxdlpoRzhBd0FBQUJSamtmRWs5Y1RaeVlhL2RSWHRZM1pHNE42dk4rMnJtTzNlTjdNSTNnRUFBQUJhcTFtUDhXV1MwUmErdmZZeE95Wnc3OThiZUpoNlFkVkQxZWlWV1FUdkFBQUFBSzJ3eUhpUTFVS293eTM4aUZtMGo5a0xnWHQvMzlTSHFkdk1ERlNqVjJZUnZBTUFBQURzUlRNWjlpUjEwRDdZd28rb1VnZnRNOVhlRDRGN3Y5L2dnOVNoKzZGcTlNNHNnbmNBQUFDQW5kamlRcWlYbGtrK0h1VGlyV3J2bDhDZHl3VVpQbVU3SDEraDNXYk53WGlxRkFBQUFBQ2IxWFNaZUpuTkw0UjYxV25xUlZHWEtyNS9BbmN1My95REpLOVNMNnBLLzFTcFo3eWZLZ1VBQUFEQTR6VTUyMkhxbkcyNHhSODFTeDIwejFXOVBRVHUzRHdnakZMUGRoK3BSaTlWRWJ3REFBQUFQRmpUbi8yeWJjeGdpeitxU2gyMFQxVzlmUVR1M0hXQWVKWDZLZHhBTlhxcFN2STV5UWNmUndJQUFBQzRXOU91K1dXMnYwN2lNdnEwdDU3QW5XOGRMQWF4cUdyZkxaTjhqT0FkQUFBQTRGODdiQnR6NlRUNnRCZEI0TTU5RGlDVFdGU1Yrc0QrN2lBWGxWSUFBQUFBZmJURHRqR1hadEdudlNnQ2R4NXlRSG5iSEZBR3F0RnIwOVFmWDVvcEJRQUFBTkFIaTR3UFUrZGlreDM5eUNySkMvbExlUVR1UFBUZ01renlQdHJNVUQ5aC9XeUJWUUFBQUtDTG1yWXhyNUw4bXQxMWZxaFNkeGc0dFFmS0pIRG5zUWVjU2JTWllYVWkrSmprVkI4eEFBQUFvSFJON3ZWcjZyWXh1N0tNZGZRNlFlRE91Z2VndDlGbWh0V0o0VFIxdTVsS09RQUFBSUJTTkxQWlQxTG5YTU1kLy9qVFdCQzFNd1R1Yk9LQU5JdzJNM3g5b3Zpc3p4Z0FBQURRWm51YXpYNXBtanBvcit5SjdoQzRzK2tEMVBza0k5V2dNVTg5NC8xVUtRQUFBSUEyMlBOczlxUmVGKytkaVlyZEpIQm5Hd2V0azlUQiswQTFhRlJKUGtjZk1nQUFBR0JQOWp5YlBha25KcjRXdEhlYndKMXRIY0FHU2Q2a1hza1pyanFOZGpNQUFBREFEalN0a0ErenY5bnNTVDBSOFowT0FQMGdjR2NYQnpYOTNibk5QTnJOQUFBQUFGdXd5UGd3OVd6Mnd6MXVSaFZCZSs4STNOblZRVzRTL2QyNTNUTDFyUGVQRmdrQkFBQUFIcXVaK1BreWRjdVl3UjQzWlpua1k3VFc3U1dCTzdzKzhKMmtialV6VkExdU1VM2RibWFxRkFBQUFNRDNORzJORDFNSDdhTTliODR5Z3ZiZUU3aXpyd1BocStaQU9GQVJibEdsWG1UMTFLeDNBQUFBNEthbVpjd3YyZDhDcUZjdEkyaW5JWEJubndmR1FlbzJNeWVxd1RkTVk5WTdBQUFBOU40aTQxRldmZG1ITGRtczB5U3ZCZTFjRXJqVGhvUGxNQlpXNWZ1cW1QVU9BQUFBdmRMa1JvZXBnL1pSaXpidE5QV0NxSlc5eEZVQ2Q5cDBBSjJrN3U4K1VRMitZeHF6M2dFQUFLQ1RydlJsL3lYdG02QjVHa0U3M3lCd3A0MEgxVW1TVDdHd0t0OVh4YXgzQUFBQTZJUXJmZGtQMDc1MS8wNGphT2NlQk82MCtTQjdrbnJHKzFBMXVJZFo2bG52cDBvQkFBQUFaYmpTbC8wazdRdlpFMEU3RHlSd3A0UUQ3NnZVd2Z0QU5iaUhaZXFXTXg4UGNqRlhEZ0FBQUdpWHBpLzd5N1JyOGRPYlRpTm81eEVFN3BSeUlCNGtlZFVjakFjcXdqM05zMm81czFRT0FBQUEySThXTDM1NjAya0U3YXhCNEU1cEIrZEJCTzg4empRV1dnVUFBSUNkS1Noa1R3VHRiSWpBblZJUDJJTUkzbm1jWmJTY0FRQUFnSzFvTXB1VGxCR3lMMU1IN1I4RjdXeUt3SjNTRCtMRDFQM2RUMVNEUjZpU2ZFd3lkV0lGQUFDQXgybEM5c01rdnpTL3R0Mnl5UU0rYUVITHBnbmM2Y3FCZlJqQk8rdVpaeFcrTzlrQ0FBREFOeFFZc2llQ2RuWkE0RTdYRHZiRENONVozelRKN3dlNU9GVUtBQUFBcUJYV2svMnFLc25uQ05yWkFZRTdYVDRCQ041WjF6S3I4SDJxSEFBQUFQUk53U0Y3VWdmdDcweW9ZNWNFN3ZUaHBDQjRaeE9XcVJkUytXeXhWUUFBQUxwc2tmRW95U1JsaHV4SjB6WlcwTTQrQ056cHk0bGltRHAwZjVsa29DS3NxVW85ODEzNERnQUFRQ2MwSWZ1dnFXZXpEd3Q5R2JQVU05cG45aWo3SW5DbmJ5ZVBRWkpYRWJ5ek9WV0U3d0FBQUJSb2tmRmg2a1ZQSnlrM1pFOVduMGlmMmF2c204Q2R2cDVRQmhHOHMzbFY2a1ZZVGc5eVVTa0hBQUFBYmRMa0lZZEpuamEvRGdwL1NhZXBaN1M3QjZjMUJPNDQwYXhhelF4VmhBMmFKL2s5eWRUTWR3QUFBUGJseXFLbmx5Rjc2WlpKUGliNWNKQ0xwVDFNMndqY1lYVUNPa205d09wUU5kaXdLdHJPQUFBQXNDTlgrckZQVXVhaXAzZmRXNzlMUGJGdGFTL1RWZ0ozK1Bxa2RITGxwQVRidUVDWVJ2Z09BQURBaGpTZjRKK2s3c2QrbUc2MXo1MGwrWGlRaTZrOVRRa0U3bkQzeVdxU2VzYjdSRFhZa2lwMStQNjdoVjBBQUFCNGlBNjJpcm5wTkJaQ3BVQUNkL2orQ1d5VXVzZjdpV3F3UmN1c3d2ZXBjZ0FBQUhEVEl1UERyQUwyWVVmdmpVOVR6Mml2N0hGS0pIQ0grNS9VaGxrRjd3TVZZY3NYR0xPc0ZsMWRLZ2tBQUVEL05GbkVKSFdybUVtNm0wZFUwWitkamhDNHc4TlBkb01rcjFMM2VSK3FDRHN3eXlwOHI1UURBQUNndTVvV3Q1Y0IrNmdIOTd2NnM5TXBBbmRZN3lSNGtuclcrMGcxMkpGNWMwRmkwVlVBQUlBTzZFRXY5cHVXcVZ1cXZqT3BqQzRTdU1ObVRvNlQxTUg3b1dxd2g0dVUzNVBNZk93T0FBQ2cvWnBQemsreW1zVSs3TWxMcjVKOFR2TEIvU3RkSm5DSHpaNDBoMG5lcEE3ZUJ5ckNqazJUL0JHdFp3QUFBRnFsbWFnM1NUMkxmZEt6bHorTHRqSDBpTUFkdG5NaUhhUmVYUFZsOUhsblA2bzBBYnlMR2dBQWdOMjYwU1pta3Y1TnlsdEcyeGg2U3VBTzJ6L0pucVJlWUhXaUd1enhRbWVXVmVzWkZ6c0FBQUNidmZjZjVIckFQdXhwS2Fva0g1T2NhaHREWHduY1lYY24zMUhxR2U4bnFzR2V6ZE1FOEFlNW1Da0hBQURBZysveEI3bmVJbWJVODVKTVU3ZU5jWTlKN3duY1lUOG41Wk5vTjBPN0xvejBmZ2NBQVBqMi9md2txNFZPUnlyeTd5S29wKzRsWVVYZ0R2czlXUittRHQ0bnFrR0xMcGhtV2JXZldTb0pBQURRMDN2MlNmcTcwT20zekpKOFBzakZxVkxBMXdUdTBJNlQrRENyZGpNREZhRkY1bG1GN3pQbEFBQUFPbnh2UG9tQS9TN0xKS2VwMjhaVXlnRjNFN2hEdTA3dWc5U0xyTHlNajZmUnpndXNXZXIyTTdPRFhNeVZCQUFBS1BnZWZCSUIrL2ZNWWpZN1BJakFIZHA3NGgrbER0NFBZOVk3N1ZUbGVnQmZLUWtBQU5EU2UreEJWdUg2S0FMMmIxbkdiSFo0TklFN2xIRlJjQktMck5KK1ZWWUxzT3IvRGdBQTdQTmVlcGc2V0wrY3ZUNVNsZStheFd4MldKdkFIY3E2WUpnaytUVjFBQTl0TjgvMUdmQkxKUUVBQUxaMHZ6eks5WUI5cUNyM3Nvelo3TEJSQW5jbzgwSmlFTFBlS2M4OEFuZ0FBR0F6OThXVFhBL1lCNnJ5SU5QVXM5bW5TZ0diSlhDSGJseGsvQnE5M2luUFBBSjRBQURnKy9lOWcraS92Z2xWa3M5SlRzMW1oKzBSdUVPM0xrQU9VODk2SDZrSUJacEhBQThBQU81djYvWXdreVEvUlh1WWRTMnptczArVXc3WVBvRTdkUGZpNUxMWCswQkZLRlNWNndGOHBTUUFBTkM1KzlkQlZvdWFYcmFIWVgzekpCK1RURTFtZ3QwU3VFUDNMMTVPa3Z5U2V2WTdsS3hxTGhvdkEvaTVrZ0FBUUhIM3FKT3N3dlZSekY3ZjlEM1ROQlpBaGIwU3VFTi9MbXFHV2JXY2NVRkRWOHpTQlBCSjVtWnVBQUJBcSs1RFI2bEQ5WitpOS9xMkxGT0g3TDliQUJYYVFlQU8vYjNvZVJrTHJkSTk4OVRoKzEvUmhnWUFBSFo1bnpsTUhhcVBzcHE5N241emUyYXBGMERWTWdaYVJ1QU9Mb3BPb3VVTTNiWE05UUIrcGlRQUFMRDJmZVFncXhucmx3dWJEbFJtNjZxcytySlh5Z0h0SkhBSExpK1locWxEOTErYkN5Zm9xbm5NZ2djQWdQdmVLdzV5UFZ3ZlJadlNYVm9tT1UzeTJUcFdVQWFCTzNEYkJkVW9kZkIrNkVLS25sekF6cU1YUEFBQTdnVUhFYTYzNVI1bEduM1pvVWdDZCtCN0YxeUhXYldjR2FnSVBWRmxGY0xQdGFJQkFLQ0Q5M3JEWE8rNVBveHdmZCttU1g2UHZ1eFFOSUU3Y04rTHNVSHEwRjIvZC9wcTNuejlGU0U4QUFCbDNjK05zcHF0YmtIVDl0MW5YUFpsWHlvSGxFL2dEanptWW0yUTVDVDZ2Y004cTM3d2N6MFZBUUJvd2YzYXBMbFAreWwxd0Q1UmxWYmVSM3lPeFUraGt3VHV3TG9YYzhOWWJCV3VtcVZ1U1dNbVBBQUEyNzRYRzJVVnJvK2lKVXliVlZuTlpLK1VBN3BMNEE1czhvSnZGSXV0d20zbTBZNEdBSURIM1djTnNncldmOGhxVVZQYXIwcmRsLzJ6VDhOQ2Z3amNnVzFkRkk0aWZJZnZYWHpQVTRmd3N5U1ZtUzRBQUwyL2o1cGt0WGlwaFV6THZjNmZSc2dPdlNWd0IzWngwVGlLOEIzdVk1azZoUCtqdVZEWEZ4NEFvTHYzU01OYzc3VStVcGxpVlJHeUF3MkJPN0NQQzB2aE96ek12UG42Si9WcytQbEJMcGJLQWdCUXhQM1BNSUwxTHFvaVpBZHVJWEFIOW4zeEtYeUh4MW5tZWhDdk56d0F3UDd1YlNaWnRYOFJySGZYUFBVRUdDRTdjQ2VCTzlDV0M5UlJoTyt3Q1ZYemRkbVdwaExFQXdCczVKNWxrTlhpcFlQb3NkNFg4eVNmazB5dHVRVGNoOEFkYU9PRjdDakNkOWkwS29KNEFJRDczbzhNa2t5Uy9KRFZiUFdCNnZUR1BFSjI0SkVFN2tBSkY3dUhTWDZKajJUQ05sUVJ4QU1BL2J2UEdPWjZrRzYyT3RNa3Y2Y08yWmZLQVR5V3dCMG83YUw0TVBYczk1R0t3Rll0YzZOSGZPb3d2bElhQUtDUSs0ZEJjOTh3ektxMytpRDF6SFZZcGc3Wi80aVFIZGdnZ1R0UTZzWHpzTGxRL2lWMUNBL3N6cXk1UWZrcmRSQy9OQ3NlQU5qVGZjRWdRblh1cjJxdVpYOC95TVZVT1lCdEVMZ0RYYm5JUGt6OU1kREQ2SzBJKzdMTWFsYjgvelUzTTh1RFhNeVZCZ0JZNDNwL21LL2J2d3ppVTYvY3o3eTVMdjNzdWhUWUJZRTcwTVVMOHNPc3d2ZWhpa0FyVk0zWFBNSjRBT0Q2OWZzZ3F6QjlsT1IvdVQ1ckhSNXFsbFUvOWtvNWdGMFN1QU5kdjNnZnBmNDRxYjd2MEY1VnJvZng4MmhUQXdCZHV5NmZOUDk1K2V2VEc3K0hkU3lqSHp2UUVnSjNvRThYK1lQVXM5NS9hUzdzQjZvQ1Jkdzh6YlBxR1Y5ZGZwbXRCQUN0dXRhZU5QOTUrYXRBblcyclVvZnN2NXVvQWJTSndCM284MDNCWWJTZWdTN2NhRjErL1pOVk9EODNzd2tBTm5iZFBHeXVsd2U1M3ZMbDh2ZXdLN05vRlFPMG5NQWRJTmRhejF6T2ZnZTZZWjdWTFBuL2l4bnlBSER6T25pUVZXaCtlUjM4VTFaaCtrQ1YyS05sdElvQkNpTndCN2o5cG1PU1ZmZytWQlhvcktyNVdxWnVXYk5NSGM3SFI1TUI2TUIxN2ZES3RleWsrZlV5VEIrNnpxV2w1bG5OWXA4ckIxQWFnVHZBOTI5VVJqSDdIZnArMDdmTXFtM05Na0o1QVBaL2pYcDVYVHBzdmk3YnZDUm1wbE9XWlZhdFltWStoUWlVVHVBTzhMQWJtMEhNZmdlK05tOXVGcGVwWjhxbnVYRk10SzhCNEdIWG1xUG10OE1yMTVwUGIva3pLUDNhYVJZTG5nSWRKSEFIV08rbWFKUTZlTDljZkJYZ1d5NXZLS3ZVcytXdi9abGdIcUN6MTR5VDVqOEhXUVhxUDJRVm5vOWlSanJkdHN5cUY3dFo3RUNuQ2R3Qk5uOHpkVG43ZmFRaXdDUE5ydHljWHM2WXI1cXZKSmxiTkF4Z3I5ZDh3NnpDOHF2L0xVU0hsWG4wWWdkNlNPQU9zTDBic1VIcVdlOVBvLzBNc0QyejV0ZGxWdUg4c3JuSlRaS2xtMXlBNzE2M2piSUt4NGU1UFVBZnVwNkRiNnB5dlJmN1VrbUFQaEs0QSt6MlJtNlNWUUEvVUJWZ3g1WlpCZkZKL2JIdVM3TXIvMjBHUFZEeU5kZmt5bStIV1lYa1Z4Y1ZUWE05QnF4M1hURnJyaWVtMnNRQTFBVHVBUHU5R1p4a0ZjQUR0RkdWVlN1YjVIcElmL1AvQ2VxQlRWMG5qWEo5Y3NMVmE2V2J3Zmt3WnA3RHJzeXptc0UrVXc2QXJ3bmNBZHB6WTNtWVZmZytVaEdnY010Y24wMi96S3JsemEzL1grc2I2TXcxelRCZkIrQ1RHNy8vS2RjRDlWRjgrZy9hcU1yMXhVNlhTZ0x3YlFKM2dIYmVxQTV5ZmZiN1NGV0FIcHJkY3RQL3o0MC9tNmNPNy85bHhoMDg2dHBqbEs4RDcyRytEczUvdXVYdlRWUVFPcVBLcWszTVRKc1lnSWNUdUFPVWNSTThpQUFlWUIzejNBam1jM3VBZi9ubjFTMS9iaFkrKzd3V0dPWHVHZUNUTy83ODZTMS9ObkFkQVZ3OXQwVWZkb0NORXJnRGxIblRQWWdBSHFCTmxybmVJdWVtZVpMLys4NzNtTjN6WjFVQ2taMmRhKzk3ZnIzdjMzMzZuZjgvVVhsZ0IrZXJXVll6Mk9kS0FyQlpBbmVBN29RQ2t3amdBYmpiTXQ5K0tOQlZvK2dORHZUYkxLdUZUdWZLQWJCZEFuZUFEaExBQXdCQWI4Mnltc0UrVXc2QTNSSzRBL1RFSXVOSnJvZndBQUJBMlpaWkJleHpBVHZBL2duY0FYcXFDZUJIV1FYd0ExVUJBSUJXVzBZUGRvQldFN2dEa0NSWlpEek1hZ2I4S05yUUFBREF2bFdwQS9hL0ltQUhLSUxBSFlCYlhla0RQNG8yTkFBQXNBdno1dXR5Qm51bEpBQmxFYmdEY0crTGpFZXBnL2VmbWwrSHFnSUFBSTgyUzlOL1BYWEF2bFFTZ0xJSjNBRjROTFBnQVFEZzNwYXh3Q2xBNXduY0FkaW9HN1BnUjlFTEhnQ0FmcHJuZXYvMVNra0F1ay9nRHNCV05iUGdSN2tld2c5VkJnQ0FEbG5tZXJnK1V4S0FmaEs0QTdCemk0eUhXYzErZjlyOE9sQVpBQUFLTVkvWjZ3RGNRdUFPUUN0Y0NlRXZBL2lKcWdBQTBBSlY2b0JkNzNVQXZrdmdEa0JyTmYzZ1IxbTFvcG1vQ2dBQVc3VE1sWEE5OWV6MXBiSUFjRjhDZHdDS2Nrc0lQNHAyTkFBQVBNNHMxMmV2VjBvQ3dEb0U3Z0FVVDA5NEFBRHVZWlk2WFA4cmRiZytWeElBTmszZ0RrQW5MVEllWk5XRzVuSTIvRkJsQUFCNllSYmhPZ0I3SUhBSG9GY1dHVTlTaCs4L1JGOTRBSUF1bUVXNERrQkxDTndCNkwwYkxXbk1oZ2NBYUtkbHJpOW9xdWM2QUswamNBZUFPOXd5RzM0VXZlRUJBSFpobnFSS1BXdDlsanBjWHlvTEFHMG5jQWVBQjJobXd3OVR0Nkw1NGNwL0F3RHdPTE9zV3NKVUI3bVlLUWtBcFJLNEE4QUczQkxFajVvdkFBQnE4MXlmdFY1cENRTkExd2pjQVdDTEZobVBVcmVobWNTTWVBQ2dINnJtNjQvbVZ3dVpBdEFiQW5jQTJJTTdXdE9Nb2tjOEFGQ09aWnJGUzVQOGt6cFlueWtMQUgwbWNBZUFGbGxrUE1qMUJWcWZwZzdqaDZvREFPekpNamVDOVZqRUZBQnVKWEFIZ0VJMDdXbUdxY040cytJQmdFMnJjcjBWVEJYQk9nQThpTUFkQUFwM1pWYjhzUG42S2F1KzhRQUFOODFTejFyL0svVnM5YVZXTUFDd0dRSjNBT2d3WVR3QTlGYlZmTTJ6YWdOVEhlU2lVaG9BMkI2Qk93RDAxRGZDK0ZHMHFRR0FFaXpUQk9tNUhxclBsUVlBOWtQZ0RnRGNhcEh4cFBuUFNaTC9aUlhFajFRSEFIWm1tYTlEZFMxZ0FLQ2xCTzRBd0lNdE1oNW1OVE4rbU5VaXJwZGZBTUQ5VlZtMWYvbS8xRDNXSTFRSGdQSUkzQUdBalJQSUE4QTF5elF6MDFNdlZIcjVlejNWQWFCakJPNEF3TTVkQ2VRSHFWdlVYTGFzU1N6b0NrQ1paczJ2ZjF6OXZWbnFBTkF2QW5jQW9KV3U5SkFmcFE3bUwyZkpENktQUEFDN3RjenRNOVFGNmdEQU5RSjNBS0JZdDRUeVpzb0Q4Qml6NXRkNTZoN3E4OVNodXBZdkFNQ0RDTndCZ0U2N3BYMU5rdnpVL1A3cW53SFFQY3MwTTlHekN0T3I1bXQ1a0l1NUVnRUFteVJ3QndCSXNzaDRsSzlEK01zMk5zbHFGajBBN1RCcmZxMlMvSFB6ejh4TUJ3RDJRZUFPQVBBQWk0d0hXUVh5dzZ3QytjdFo4NGx3SHVDeGxsbk5TSzhpU0FjQUNpTndCd0RZb2l0OTVwUHJmZVdmM3ZIbkFGMVROVitYLzMwWm9zOVRCK3dXSGdVQU9rUGdEZ0RRSWxkYTJ5VFhaOUJmWFJBMkVkSUQrek5QRTVUbmVvQmU1VXF3YmlZNkFOQkhBbmNBZ01KZFdSajIwdVRLZjk4TTZtLytYYUMvbGxtMWIwbFdpNHArOWYvTVFBY0F1QitCT3dCQWo5MllVWjk4M1gvK3B4dS9IK1I2Z0Evc1Y1WFZyUExMMy8vempmOC9QOGpGVXRrQUFMWkQ0QTRBd0ZwdTlLbFBiZy9sLzNmTG45MzI5NkF2NWxtMVpibjZaLzkzNWZmTFhKK0JuZ2pNQVFCYVRlQU9BRUNyM0RMci90TGtqbi95MHgxL1AvbDZ4ajQ4eE95T1A2OXlmUmI1MVQrdmJ2NmhkaXdBQVAwaGNBY0FvSmNXR1EveS9SbjJvOXd2c1A5ZkhqZGJmMkpQM0RyVCszdXEzQjU0My9iM3FtLzgvK1ZCTHVaMkFRQUFtL0wvSHdESXp4dEZHQlY5Y0FBQUFBQkpSVTVFcmtKZ2dnPT0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsiY3JlZEJsb2IiLCJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwibGFyZ2VCbG9iS2V5IiwibWluUGluTGVuZ3RoIl0sImFhZ3VpZCI6IjRlMmRkYmMyMjY4NzQ3MDk4NTUxY2I2NmM5Nzc2YmZlIiwib3B0aW9ucyI6eyJyayI6dHJ1ZSwiY2xpZW50UGluIjp0cnVlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsIm5vTWNHYVBlcm1pc3Npb25zV2l0aENsaWVudFBpbiI6ZmFsc2UsImxhcmdlQmxvYnMiOnRydWUsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6ZmFsc2UsImFsd2F5c1V2IjpmYWxzZX0sIm1heE1zZ1NpemUiOjExNTAsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6MzUsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MjU2LCJ0cmFuc3BvcnRzIjpbIm5mYyJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5IjoxMDI0LCJtaW5QSU5MZW5ndGgiOjQsIm1heENyZWRCbG9iTGVuZ3RoIjozMiwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjMyLCJyZW1haW5pbmdEaXNjb3ZlcmFibGVDcmVkZW50aWFscyI6ODd9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMi0yNyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IlNFQ09SQeKEoiBJRCBWMiBGSURPMi4xIEwxIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNDEyMjcwMDMiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblByb2ZpbGVzIjpbImNvbnN1bWVyIl0sImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMTItMjciLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MX1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNi0wMy0yMCJ9LHsiYWFndWlkIjoiYmU3MjcwMzQtNTc0YS1mNzk5LTVjNzYtMDkyOWUwNDMwOTczIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiJiZTcyNzAzNC01NzRhLWY3OTktNWM3Ni0wOTI5ZTA0MzA5NzMiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiQ3JheW9uaWMgS2V5VmF1bHQgSzEgKFVTQi1ORkMtQkxFIEZJRE8yIEF1dGhlbnRpY2F0b3IpIn0sImRlc2NyaXB0aW9uIjoiQ3JheW9uaWMgS2V5VmF1bHQgSzEgKFVTQi1ORkMtQkxFIEZJRE8yIEF1dGhlbnRpY2F0b3IpIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfaW50ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MTAsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6NSwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwiLCJiYURlc2MiOnsic2VsZkF0dGVzdGVkRlJSIjowLjAsInNlbGZBdHRlc3RlZEZBUiI6MUUtMDUsImlBUEFSVGhyZXNob2xkIjowLjAsIm1heFRlbXBsYXRlcyI6NSwibWF4UmV0cmllcyI6MCwiYmxvY2tTbG93ZG93biI6MTV9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2ludGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjUsImJsb2NrU2xvd2Rvd24iOjB9fSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCIsImJhRGVzYyI6eyJzZWxmQXR0ZXN0ZWRGUlIiOjAuMCwic2VsZkF0dGVzdGVkRkFSIjoxRS0wNSwiaUFQQVJUaHJlc2hvbGQiOjAuMCwibWF4VGVtcGxhdGVzIjo1LCJtYXhSZXRyaWVzIjowLCJibG9ja1Nsb3dkb3duIjoxNX19LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInRlZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJuZmMiLCJibHVldG9vdGgiXSwidGNEaXNwbGF5IjpbImhhcmR3YXJlIl0sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlCOURDQ0Fac0NGRmlQazVyNjRwZ1doQVFqaWkwN212U0VGMS91TUFvR0NDcUdTTTQ5QkFNQ01Id3hDekFKQmdOVkJBWVRBazVNTVJFd0R3WURWUVFLREFoRGNtRjViMjVwWXpFaU1DQUdBMVVFQ3d3WlFYVjBhR1Z1ZEdsallYUnZjaUJCZEhSbGMzUmhkR2x2YmpFVk1CTUdBMVVFQXd3TVkzSmhlVzl1YVdNdVkyOXRNUjh3SFFZSktvWklodmNOQVFrQkZoQnBibVp2UUdOeVlYbHZibWxqTG1sdk1DQVhEVEl4TVRBeE1URTFNRGswTUZvWUR6SXdOekV3T1RJNU1UVXdPVFF3V2pCOE1Rc3dDUVlEVlFRR0V3Sk9UREVSTUE4R0ExVUVDZ3dJUTNKaGVXOXVhV014SWpBZ0JnTlZCQXNNR1VGMWRHaGxiblJwWTJGMGIzSWdRWFIwWlhOMFlYUnBiMjR4RlRBVEJnTlZCQU1NREdOeVlYbHZibWxqTG1OdmJURWZNQjBHQ1NxR1NJYjNEUUVKQVJZUWFXNW1iMEJqY21GNWIyNXBZeTVwYnpCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQkZpaUpISGhpS0FNcUQ0NGNyZGVPYzhWT1huNG1oU1F6ZVZkamJYeGhOb21iZHpjNFdqNjgxeEZtNFBRM29zaGFxOG9LcWh4YWhkRXViV3RTOUFtRG9vd0NnWUlLb1pJemowRUF3SURSd0F3UkFJZ1o2TjAzYUNtTEg0Z3VqQVpvNU1aa2V4NlZ2Tk5SQmhUVzBWNytZWVl1eGdDSUFHNXEwQ1JJRndab2ZwUEFPUGxCNTVIQ3ZKeVZqaEkyTHNEcmp1ODhkbnQiXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBWFFBQUFGMENBWUFBQUF6WThKVEFBQUFDWEJJV1hNQUFDNGpBQUF1SXdGNHBUOTJBQUFmNmtsRVFWUjRuTzNkUDNZYng1Ykg4YmJlQkpPNVp3V0dWeUI0QllLeXlVU3R3TlFLVEsxQVZEZ1I1UlZRWGdHcGJESlNLeUMxQWtEWlpJQ3ltWWh6V3I0dE4wR1FRSGZkcXJwMTYvczVwNDdrNTJjUzNRQitLTno2OTFPRFE4eWJwbWtILzcrWk5BRHgzRFpOc3huODlKVTBQSUpBLzFzcm9kMjFYd1lCUHJmdzRBQThjQzFoLzJVUTlOZTEzNlphQTMwaDdibUVOcjF0d0lkYmFaOGw0S3ZxMGRjUzZITUo4RmZ5SjRBNjlEMzNMdUF2dDBvNDduZ085QzdFZjIrYTVvZ2VPQURSaGZzbkNYZDN2WGR2Z2Q0Rjk3RUVPU0VPNENtWEV1NGZ2ZHdsTDRGK05PaU5BOEFZR3duMzk2WDMya3NPOUZaNjQzL1FHd2VnNUZxQ3ZjZ1pNeVVHZWhma0p4TGs3UUgvZndBWXE1c3A4MmRwNVppU0FwMGdCNUJhVjRKNVUwcVB2WlJBNzBvclp3UTVnRXlLS01WWUQvUnV6dmc1TlhJQVJuUWxtTGRXNTdNL00vQVlkdWw2NGhkTjAxd1I1Z0FNNmFvRlN5bi9tdk12ZzQvcFNJS2NmVlFBV1BUdlRkUDhwMVFRdXIxay9zZktZN1JVY21tbHZNSmNjZ0FsNlVvd0h5dzhYaXVCZmlSaHpxQW5nQkoxZzZXdmM5ZldMZFRRejZSZVRwZ0RLTlZDYXV0Wkt3dzVlK2h0SWJYeWZwcFN0OURnMjQ3L0hZQys3Zk1JZnBFSkVpV2NVOUJOYnp6TjhZdHpCZnBjd3R4U3I3emZSL25MNE8rdXQ5b0VDalliSEVyelhIcklsdkxrVWhZa3VjK1FidHJQdW1tYXU4eHRPUmlFcGR3RGxHOHUwd2t2RE9STDEyNjhUN3MrTVJEaVoweUpCS3JRVDdiSTJZRmNlODJiODR3MzlKd1FCNnAyTEdWZVFsMUJqakJmeXBOSU9RVkFiNWF4MTM3czRWbElIZVpMTHpjT1FEU3R6RVJKSGV4RloxUEtNQ2ZJQVl5Vkk5aUx6S2xVWWI0bXlBRUVhaE4zUUl2YTRpVFZqV0dQZEFDYUZqTGRNRVZIdElpQjB1TUVOMk1wTng0QVlqaEpVSVl4SCtvcHdweGVPWUFVWmdsNjYwdXJlVGFQL0ltMnBsY09JSU96eUtGK1krMUpiZVdUSnVZRjB5c0hrTXRSNUE3cnVhVm5OdVlLTEZNWENxQmFzVXN3Sm1icm5YcS9RQUFRYmNRT2JQWkIwZ1ZoRHFCQ3NhWm1aeXN2eDZxYnU5MmRESUFyc1VMOUxNZE5pckhuTUdFT29DU3hRajNwakw0andod0F2b3NSNnNubXA4Y3F0UkRtQUVvVkk5U1RsRjVpVExKbkFCUkE2V0tFZXRUU3l6ekNBejdoWlF6QWdUYkNQUFdvcTBpMTUxK3lhQWlBSjIyRUZhVlJLaGphQTZFczV3ZmdrWFlsWXgwakt6VUhRdGV5akJZQVBEcFJEdlZUelh1a3ZTMXVVYWQxQU1BRW1tdDFWSHZwbXIxejZ1WUFhcUJkVDFmcHBXdjJ6czF1NWc0QUVXaU9QYXIwMGpWNzV4eFFBYUEybXFXWG9GNjZadS84Z3BjeGdBcHBsbDZDZXVsYTg4NloxUUtnWnBxelhpYk5TOWVjUzZrNjVRWUFDcVJWdmw1T3VYU3RmUW1pVElvSGdNSm9IZ2cwYWp4U3MrYkR4bHNBOERldE12YW82ZDlhZzZHVHZob0FnRk9hdmZTREt4OWEwMnpZU1JFQTd0UHFwUjlVL1dpVmZobTFjd0I0U0tzQ2N0QlVjSzFmeHN3V0FOaE5hOGJMdlU3enN4Mi82cFhTRS9DUkp4SUFkdnBMNmJZOHVkR2hWcm1GVmFFQThMZ29XYnZkUTlmYWErVVRUeVFBUEdyVE5NMmx3dTE1TXJNMURvQmU4eHdDd0Y1YTQ1VS9RajFHRDEzalV3Y0F2Tk1hWjl5WjIxbzFIVTRqQW9ERGFLejV1ZHIxbTdRMlltZnVPUUFjUnF2czh0Mnc1REpYZUFLdXBkZ1BBRGdzTXpWOHorOWhvTDlRK0tHZmVRSUI0R0NycG1sdUZXN1hnMERYNnFFREFOTG01dk5tRU9nenBkbzNnUTRBNDN4UnVGLzNldWdheDhNUjVnQXdua1oyM2d0MGpYS0xSaDBJQUdxelVwaE04cjNDOG16NEQ0Rys4aklFZ0VrME9zU0xQdEExWnJqUVF3ZUFhVlR5YzlmMnVWa2ZFQUJVNkp2Q0pTODBhK2dzS0FLQWFWUjc2S0UxOUpYQ1l3R0FXbWwwaUgvUktya1E2QUF3blVhR3pqUnI2QUNBYVZRNnhjK1U5a0NuaHc0QW1XbjEwSm1ERGdDWlVYSUJBQ2NJZEFCd2drQUhBQ2NJZEFCd2drQUhBQ2NJZEFCd2drQUhBQ2NJZEFCd2drQUhBQ2NJZEFCd2drQUhBQ2NJZEFCd2drQUhBQ2NJZEFCd2drQUhBQ2NJZEFCd2drQUhBQ2NJZEFCdzR0OTRJakV3NVh6WjI2WnBOdHhFSUQ4Q3ZTNWRZTStrUFcrYXBoMzhzNFpyK1JsZHlIK1RmMTV4aURpUUJvSHUxMXdDL0xuOGZaN2dTaGRiZjc0Yi9MdHJDZm92OHVkdFBVOEZrQWFCN2tjZjRLOG1sazVpVzJ3OXJvMkUvT2RCMkFNSVFLQ1g3VWdDL0VqS0p5VnA1WEVmeVdOZVNiQi9hcHJtc3ZZbkZwaXE2elhkQmJaVDduNHlYUUNlTjAyelZuamVMTGVMcG1tT0szbE9nVWJodlhqVkVPaEY2TW9wWnhXRStLNjJsZzh3aTJVa1FGTndvRE1QM2JhdWgzb2o3YVRBc29xR1Z1NUQxL3RZVm53ZmdMMElkSHRhK2NiVDkweFR6RTRweFV5K3FTemwzbWhOdHdSY0lORHRtQTFxNCsvb2hUNnA3N1VUN01BQWdaNWZIK1JMQmdFbklkZ0JRYURuMHc3S0J3UjVPSUlkMVNQUTh6Z2REUEJCVngvc3A1U3RVQnNDUGEwakNSdHE1UEc5NDlzUGFrT2dwekdUaFRJWGxBT1NhcVVFYzhWc0lkU0FRSS92Uk9hUkgrVitJQlZieUhQQUFqaTRScURITTVPZTRSbmxGVFBlU2JEVFc0ZExCSG9jL1FwUGxxdmJNeCtzdkFWY1liZEZYWDNObHZLS2ZXZXlVK1ZyVGx4NjBsT2RrZzNiSHR0Q29PdVpGempvMlo4bTFKOHdORHhPN3FtajVZYW5ITFZ5N1QvTG41b25JTVcya0prd0x5c09wdUVwVmk4Ry85c1VuRmhsQUxzdGhqc3VZTmZDcFh6Z25DUXFCUzNrdnB4SmljUDYvYWxoZXVOTXJ2TTg4WE95bHZHazAwTDM3azhsOUQ2emZhNkNjOE1oMVFlNGhSNXpmNkJGdnpyVzR2MDZOM0NmdEZtOTUvMnNJd2FvL3hGNlR3bjBBSzNjUUV0dmtuVkJOZnpaWUVxbnBYdDQ1YUFIV2RvaEtFdjUwS2s5M0RWZXV3VDZCSE5qUVhRbFg2VkxEYUtac1Y3a1RZRUx3R2FETFNXc3ZDNm50SDdiaGhvWDRHbmtBSUUrMHR4SXoyY3RJZWp0aFg5azVKdlB1cEFlNDBKS2F5V0Y5cUh0b3JLcHY2SDNpMEFmeVVLWTEzSnF6OHpBK0lUbFVEOHVaTEJabzkxVU1tZ2RlcThJOUJHT01vZDVyUnRONVE1MmE2Ris3S0Nzd250Z3Q5RDdRNkFmS09lMHhEWFRRci9MR2V3V1FuMVJVWTk4WC9PNkNqdjB2aERvQjhnWjV1d0Q4OUFpVTQwOVY2alBETTZtc3RLODdWNUtvRWVXcTJiT2RxLzdIV2Q0YmxLSCtpbWhYVlgrYU9RR2dmNklIR0crWnRPb1Vkb01NenhTaFBxaTRqcjUxT1poRjgzUWUwQ2dQeUpIbUY5eCtNVmtxUWVzYnlLV3dpeXZQQzZobFp4RkJIb0ViWWJCSjNybDRWS3YzTDFSZnZ3ekJqMVZuNXNTTzBlaDEwMmc3NUE2RktpVjYwcFpkOWJhK3lYSGVJRDN0aTV3RzJzQ1hkbFp3aGY1QlROWW9sa2tETWpRYjFlVVdPSzJrcklwOUY0UTZBTXBweWN5cnp5K2xQdnRUSmtUVFlrbFhUc3ZwUE1VZWs4SWRKRnlFTFRHMVo2NXBCZ1BXVThJOU55cmptdHNNUWV5dFJEb0NsSU5ncGF5MlpOSHNjb2FVd2JmVXBiMWFBK2ZMOHVoVHFBclNQRUdJOHp6MHc3MXM1RlhaSEgvL0JyYjB2QjdrVUFQcEhIdGhIazVORUo5eXV5SmxJTzB0SExma3dSNmdEYkJtNHd3dHljazFLZE1NMlg1dnMyMk5qaFhQZlJlWGRWODZuL3NqYTgyRGs2VDN6ZllkNzNuMzF2MFJoN1QyTUhwajAzVHZKWG45UkJ0aFFjMGxLUi9mbDZPZUU3TnF6WFFGNUZubTVRVTVqUHBkWGJ0aGJ6UXgvWkNiK1dhUHpkTnM1S2dYMFY2dkJyZXlIVWZFclliQ2ZLUEkzN3ZvdUIxQnYxejkzWHdnYjNhODN6MjkzRXUxL3hpOEhmTDVsS21jQlhxTlpaY1ltOThaTG5NMHNxSDJYbmsrN0NVMzJIMXJOTkRaamZWVUdLNWtNVlJNVjZ6czhGcnpmSVl3a1dFYTU4aTlEcXFyS0hIZnNOWm5HZmVoM2pPc3ljdkRJYjdVK01vWXhlajVOajVjV283ejdRc2ZpNmxUb3ZocnJXTlE0alFhNmd1MEdlUlgwelc3c1BNWU85b0xZL0p5b0RVZk1makcvdWhQQzlndTF0clo5RmFPUXg4MkhKM3hrSWZmM1dCSG5QZkRDdGYyeG9qQnl3ZjBxd0UrOGtnOU1hV0hrNE0zOS8rVFc1NVlOYlNhelgzckRTTjU3cWFRSTg1NTN4cHBPZFRTcEJ2Tnd2QlByYjNhcjNFVXRxNW14WmV1N2wzUHcxOS9GVUZlc3l2ZDdrSFFWc244NTFQQzVrWllybkVNcVZrWkVtdXc3QXRiT0FWZWczVkJIck0zbm51d3ltOEhWZTJOTjZ6dEZ4aThYU28rRW1pc1I5TEg0Q2gxMUpOb01mcW5WOWx2aTdQR3oyTjNTc2x0dFp3T1d2S2pvOGxpTDNGc0xVRFprS3ZwNHBBajlVN3o3bDB1SmE5dEswY0paWnliL1d4N2FxQ2cxSmlsQk10THZ6U2VDMjREL1JZQTFlNVNpMjFiZlNVZSthQjVlUGhySDJMaVVsekQzbXJaL2lHWHBmN1FKOUZlaU5wSHhCOHFKU25LbGxycWV1Y2xrc3NPZTZIQmFFSDBWamVPcmRSZUUyNEQvUlliOGdjOWNxYXc3eHZxVUxNY29uRmE3MzhVRk1QcENsaGI1M1ExNGJyUUkrMVBXNk9CVVNjY3ZOUGl4M3Fsa3NzYk1mOHQ3R2hiclhFc2kzMDllRTYwR1AxYUZNUDB0RXpmOWhpaGJybEVndGhmdDhob1Y3YVBRdDlqYmdPOUJoZm1WTnY0RU9ZUDk0MFE3MkVXVVBzcS81USs4UWFqQkpuLzRTK1J0d0crdmFHUzFvdFplLzh5R0VJV3d5NUVrN2dyM0VBOUZDN0JrcExQUkl6OUhYaU50QmoxSnhUOXM1RFIvTnJhYUZyQVVvWW02aHBhdUpVZllhVlBtQk1vRDhpeGxMNFZMM3pxYVA0dGJZcFUwaExXWmlWZXlWeVNicHZXcVV2c0FwK3ZUd3pjQkhhNWhIQzl6TGhrV3BuREg0ZHJEczI3UDNJLytiSTRKTHZYYnByZTIzdllablZ2VWZkSENNM2xjZEEvejNDei93endzL2M1WWg2NmNHNmMweC9remZ5b1U0TE91dnpEUUdGS2J5VlhMVExMY3RFanp2V3ZIbVBiV3hkdVRWNE9zNVR6Y0p4YUVndnVPVGk3ZFQvR09XV3Y1Ui8zbVBlVmJESlVxaU45RnpIOU1wTE80Ry91OGEzQmg0SEN1U3Q1QkpqaFB0amhKKzViVjdRYXJaY3VoTEx5d2tsbHRMbUk3K2wxSUtwdlBYUVh5ai92TnRFZzZGTVRYdmF4NUZCMXg4UFY5b1V0dHRFSFFnNDVTM1FqNVIvWG9weXk0SlZnSS9xeXc5alFxNjBFc3NRcFJZRThWUnlpUkdLWTc3ZVQvVXV3ZThvVVY5aUdSUG1Kd1VmK0hBdERaak1VdzlkTzlCVGxGdm9uZTgycGNSeUh1RWJXa3FwcHNiQ01VK0IvbHo1NTZYb0xmMlI0SGVVWkVxSlpTNGxGZ3RIMVUyMVN2UnRFTTU1S3Jsb3IvejdwUHp6dHMwSzcxRnFXMDBzc1ZnNWR6UUV2WE9vOE5KRGJ5TzhxV1AzMEFuemYxeU9YQm5wb2NReXhNd1dxUEFTNk5xOWM4b3Q2WFFsbGc4amZwdUhFc3NRZTVCQWpaZEFqekVnR2xPTUZhMmxXY25tVTJQdTliSERaZkd4UzN1b2lKY2EraS9LUCsrejhzL2JWbnU1NVZJMjFqbzB6UHNTaThjOVRoZ01oUm92UFhUdDNtN3M2WXF2SXY5OHk2YVVXTTZkYmlsOFRia0ZtcWloN3hhejVOSld1dC81Um1heGpDMnhuRG5ldEl4eUMxUjVLYmxvdnVGakQ0aldHT2JkUGYxMVlvbkY4dzZVc2NkcVVCa1BnYTQ5SUJyN0szQnRLMFBmUzgvODBQczZsK1g3TlJ6MHdWSi9xUEsyT1plR0w1Ri92dmFLVnF2Nkk5VEdoSmIzRXNzUVlRNTFIZ0pkdTRRUnU0ZGVROG5sV3NKOHpMMDhxMnhQK0ZSbjFLSWlIa291MnIyNTJIVk43L1BQeDVaWStoUDRhenZnNDZ1Qnh3Qm5LTG1rNWJsM1B1VjR1S01LQmo0Znc0QW8xSGtJZE8xRlJiR25MSHAwS3lXV01XV0Uya29zMjVoL0RuVWVTaTdhSlF6ZWFPTjhrRldmaDRaNXJTV1diZFRRb1k2U1MxcWVwaXhPS2JFMGNnOCtzYWlHUUljK0FoMVRUQ214OU5ncUZvakUwd0VYR2lpMzdEZTJ4QUlnRVhybzl6SHo0SEZUam9jRGtCQTlkQnhxeGVwR3dEWUNIWWVheSt5VTJ2ZHlCOHdpME5NcXZhVFR5dkZ2WndZZUM0QXRCUHA5c1ZkeWVobDA5WExhUHVBS2dYNWZqVXZRcDVwYWd1bisvK3VtYWU0cWI3VnRvNHdFQ1BTMHZBMHFUaW5CakQxUDFDczZEMUJIb0tmbmNhNTdYNEk1TktSV0V1cGp6aGIxcHNhVHF4Q1poMERYN3VuRmZxTjU3WmwyOTIwNXNwVHdkc0srNlY3VWN0QUpFdklRNk4rVWYxN3NyOEtlU3cydEhCOTNPdUsvcWJVRVF3OGQ2aWk1UEJSNzVrYnNJKzRzZUNmQlBxWUU4N0t5VmFnejZ1alE1aUhRdFFjYVl3ZDZMYXN0RnlOTE1QM3VqVzhxS3NFdzB3V3E2S0UvcEgxZ3hyWlZSUnRiVFNuQmZKVGVlZzBsbUJjR0hnTWNvWWYrVUlyRk1yWHRpZkpPcGpjZVdtSzRyYVFFd3pZS1VPV2xoNjc1RlQzRjErQWFEM2M0a3FtTmh3NEcxbENDbWJIYUZwcThCSHBwVXhjdks1MnFOK1g0T2U4bEdIcnBVRU9nNzVaaVN0bllvOXM4T1p0WWd2RjR6LzR3OEJqZ2hKZEEvNnI4ODFJTVZ2MlY0SGRZTnFVRTgxb1dJM2t5WTA0NnROQkQzeTNGRyt5YVk5d21sV0E4SG9GSEx4MHF2QVM2OXF5UmVhTEJxajhUL0k0U2RDV1k4NUVsbU44Y2xXQ09XV1FFRFo3bW9XdjMwbFBNZHZuSXdkUS9ITXVjOVZwTE1HTytwUUE3ZVFwMDdWNTZpanI2aGw3NlBYTUo5ZU1SLzQyWEVzd2Y5TklSeWxPZ2YxYitlYW1tazMyZ2wzNVBLK1dYS1NXWWtoZHN0ZlRTRVlvZSt1UGFSS0hlaGZuN0JMK25ORk5LTUM4THY1ZnZXR2lFRUo0Q2ZST2hqdjVLK2VjOTVnTW4rT3cwcFFSektzRmU2cmNlRHVER1pONDI1OUplVXA5eUZaKzMrZFZhaGlXWVEzWGYxbjR0dEFSenhPcFJUT1V0MExXbnNiVWplNGNocmlzL2ttMmZZNW16Zm1oSm91UVN6Smp4QStDZWhjTHA2Mk8yUjQxdHFYeWEvRlhDeDk1R2VQemUybnBDRDNZaC8xMUo5K0lpMG1zTWRnVm5sY2Y5MExWNzZZdUVBMVg5M0dvOHJwV3dHMU5yN2tzd0pZMVRIQ1g4ZGdnblBBWjZqRDFTVWk3TnZxV2VmcEFUS2NFY2FpTlRHMHNxYTUyeHp3dkc4QmpvdHhFV21hUmVtdjJoc3ZNMXA1clM0MzRyMzRKS21BWFRqdHlWc2xibnhzcStXWG1yb1RmeWVMUnJtam11OFlhYSthTnRUTzk4bDFsQjkvZUdVSC9VMmVBK2pUbVkzS0xRMThuMzhUNlBnVDZMOEtaYVozaXh0SVI2OUlBN00zQTloN1NVZy9PbE9IN2tmVnJxNGRzcXJ4R1BnZDdJeFdtL3FYSmNKNkYrdjhYb3JSNFZNZ3RtekZ4ODczYUZlZTczYXFqUTE0ZnJRTi8zaEU5cE9YcnBEYUgrbzhVc1Bjd0x1Y2ZNVVQvOHZWM2ErRVBvYThOMW9EZVI1blRudXRiYVF6MUZIYmxmbGNxOXNHdHNpV3haMEV5aDBOZUYrMENQTVRpNnpyaUJVaW1CbzkxUzkwcVBDeWpCakRtK3o0UFExMzRKTzFtR3ZpYmNCM29iNlkyWmV4VmZqQThxcXkzWGE2dUVFc3lVVmJNbDBwcVJaTDBFRTNwOTdnTzlpUmgrdVVmU1Mxek9QamFzY3QvalVyNFJlZDZoVVh2QTJuSUpKdlRhcWdqMFdMMzBwWUZQKzM3aGlmWEFHZHVzOWFRb3dhUVgrN1Z0c1FRVGVrMVZCSG9Uc1pkdXBXZDA1R1JUcjZYaEVzSzhrSHQ4Nm1EQU5OVUhxTFVaUTZIWFUwMmd4K3FsM3hsYXhOQVdYbHN2SVloSytVYTBMSFJqcjBXazlTTlBOVXZmYkVLdnBacEFieUtHbllYU3k5Q3NzSmt3NXdVZXUzWlN5TDB0SmRnWG1UOG8xMGJ1VStoMVZCWG9NWHZwRnZldW5rbEp5R0x0ZHkyUHpWS1FqMzBzcFpSZzdnYkJidTBiMEZHR0h2bFRMWGNKSnZUeFZ4WG9UYVRWbzMyek9zKzFIWnoyay9zTmMyTTBXT2JOdERkMGFZUFNhN25HbkdYQ21lU0YxUS9EbkdNNG9ZKzl1a0J2SWdlYjlWa0dzOEUrNHFuZUlEZnlPNjJXVmJaUGlacFNVeTJsQkROc1MvbVdsQ0xBNXBJUjF1ZjE1OTRySi9UeFZ4bm9HdGY3V011MTE4c1VyYnlaejVTLzlsNE5ncUtFZTdIcjJxZlVWT2VGcnd2b243Zmp3Qjc4VFA3N1UvbVpwZHlUME8yWU5RUS9oejhOUnBaRHZDOHMxTThpbGtodTVYRGlFZzVRMkRhVE5oK0U4Zk1kd2R4ZDI1ZkIzL3REUmJRUEZvbnRmRTl3ZjVRRE1RNTlMdnNTVEtuYnQyN2JEQTRSNlo3YnIxdi8vdWZCdDVsWmdZUGJ2WTBjVVpqN1BYc1grTjkzUnkxVzEwTnZJZytRM3JGM2RSRU9MWk5NS2NIVXREVkQ2VzNOdE1YeUE3MlJra0RNRnlON1Y5czFkbkI4U2duRys5WU1YcHFsYjFNRWVxRFk4N1VKZFh0Q1pqcU5YUm5jR3B1V1I3dmZyTTNSSjlBRGJjOXdJTlI5MDVpMmVqT2hWa3dKeGw2enVPQXE5RDVWSCtoTjVGa3ZmU1BVODlOY2d6QmwyMXBLTUhhYTFkV3pvZmVJUUJjcGVsQ0VlajZ4RnBTTkxjRm83ZXRObTk0c2I0VkFvQ3RLVWV1ODRqekk1R0t1RHI2YldJSVplNHdhTGJ4WjJGOS9Id0pkVVlwNitsM2w1MEdtbG1xVHNpbXJMV04vME5EK2FaYW1KajZGUUZlV2FyVmZLUyt3VXFXY1hSSlNTcU91SHIrVjFJRUt2UjhFK2c0cGUwNGxIRnhibXBTN0lHb3NJS091SHE5Wk84QmlINVhYSTRIK1VNcHBadFlQcmkxSnlxUGl0SHQrMU5YMW1wWDl6Y2NLdlFjRStoTlNIaEt4ZExUL1J3NnB0N0dOVlRMVFBoQzV4bGJ5MmFvRWVtU3BULzQ1bzdjK1d1b1FqRDMrNGZYZzcxVHZuNUtGWGorQnZrZWJvYjVKYi8wd3VZSXYxVmQ1ZXV1SHR4c243NW5RKzBDZ0h5QkhxTjlKV0pXNkhXbHNKNW5DTG5WZHRxVzIvbVJiTzh1ZTBQdEJvQjhvVjZpdkN6a05QNVZGeHFQTGNnNnl6ZG5rNjBFcjhYRHhmVUx2Q1lFK1FxNVF2eVBZZnh6Q2tpczhyTXlZeUgwZkxMUXJ4MnM0Q1BURWNvWjZqY0Z1SWNBc1RuK3JNZGl2S2hoYjByaEhCUHBJYlliWkw5dHRMYlZWcnpYMll5T0xiYXpQWlY1VU1DUEdZMm5sTWFIM2lrQVBrRHZVKzNaUjZDS0tiVFA1a0xJd3M2T0VqWnlHTE4wN2piYVVnZS9hU295aDk0NUFEMlRwNElLMWZNaE0yU2dxbDVtOGNTMHRmUzk5bjUwamVSMlVGdTc5NjdmbVBZNUM3eUdCcmlEbGN2T3hiNDVqZzcyY3VieGVMTzVmNG0wblRPdmh2cFJ2RnF5NytGdm8vU1RRbGFUY0VHcHFVSjFKd0tlc1I3YnkranFWMHBEbFhtTnBHem1OTlpkdlF6bWZoK1dnbzhFYWk0ZEM3Ky9WdjFtN29rTGROazN6bTd4WkxQWTI1anUreWw3TDQvNG1mMi9rbnpjVGYzNDcrUE9GdkdGTGVkTytiWnJtZzRISEVkT3R0UDQ2WjRQWHhmUEJoNitHamZ5dVZkTTBYd2V2dFNtdkxZencwMkFLVklqMzlOSi82TzdET3lPUEpjUytONkNIcjhuZDliMGVmS0RoYjhQbmRyN25tOHRLMnZiZk1kNWQ0RDM3L2pxbTVLSXY1NHBHMm9GZlQxbUJDMk9DU3k3UGVFYWp1SllTektYRGF5dmRSa29zTHlrQndCc0NQWjcrNi94cmdzT01Xd2x5Ny9WeVZJcEFqNi9ycGYvYU5NMUg3eGRxV044ci8wMUNIWENKUUUrakM1UTMwanNrVU5LNmxDQ25WdzczQ1BTMCt0cjZXOG93MGEza0EvUTFNeTlRQ3dJOWp3OVNocUhYcUs4dnIvektkRVRVaGtEUFp4ZzgxTmZEYldROUJCK1VxQmFCbnQ5SzZ1c0UrelRESUQrbGxJV2FFZWgyRElQOUE4RzBGMEVPYkNIUTdWa05TakZ2R2RCNzRGWSsrUDZESUFmdUk5RHQyZ3dHVDE5V1hvN1p5UFgvSm8zU0ZMQURnVjZHNjBHdjlFMUZjOWt2QjJXb21xNGJtSVR0Yzh2UzkxUS95dmFuUjdKVmJVbW5GTzNUaGZnbitaTnlDakFDZ1Y2dWxaUmtQZ3oyc240bGY1WjBlTUN0ZkFQNXpHWm1RQmdDM1llTmhHRWZpRE1KOXVleW43V2x2Y3Y3d3c0K3k5L3BoUU5LQ0hTZlZqc0dEdnZUYVdZUlRxalpwUS9yTDRQVGE2aUJBeEVSNlBXNGZTSlErMkJ2SjU2NjNpK3gzeERhUUQ0RU9wcXRQVStvWXdPRll0b2lBRGhCb0FPQUV3UTZBRGhCb0FPQUV3UTZBRGhCb0FPQUV3UTZBRGhCb0FPQUV3UTZBRGhCb0FPQUV3UTZBRGhCb0FPQUV3UTZBRGhCb0FPQUV3UTZBRGhCb0FPQUV3UTZBRGhCb0FPQUUxcUIvak12Q0FESTY1blNvYjVURGhZR0FDaDZKaWUxQXdEeWFUVitzMWJKUmVYQkFFQ2xOS29jRzYxQXArUUNBSGw5NlFQOW1pY0NBTEpaYVB4aXpXbUxLZzhJQURESmJSL29Hak5kWmp3SEFEREpDNFhiOXFPRy9rM2hoeEhvQURDTlJuNys2SmgzNVpLN3dIYkZFd2tBbzdVSytkdTFIelYwamJub3pIUUJnUEUweGgrL1QyelJyS0czaERvQWpLYVJtNnRtYTVhTHh0UkZacm9Bd0RnYUE2SmZtcTFBMStpbGF6d3dBS2hGcTlRUmZwRGZ4d3BGK1RVdlF3QTQySkhXZ0dnVG9lU2k5V2tEQURWNHBYQ05QM3JudzBCZktjMTIwWGlBQUZBRHRSa3V1NXdyZFAyWHZBd0JZQytOOVQ5M1VyYlpTYU9PZmtmWkJRRDIwdWhBM3oyMWZmbE02UmVjODF3Q3dKUFdDbG03ZDRYK2pjSXZXWFBvQlFBOFNxc2Fjckx2RnA4by9hSmpua3NBMk9sS0tXZjNidXFsVlhaaGNCUUFIdElhREwwNTlONXFsRjN1bmhwOUJZQkthUTJHN2kyMzlMVEtMbXlwQ3dELzBLcUFIRlJ1NlduK1VxWXdBc0RmdEhybm96dkxGNm5yUEFEZ21HWkhlZlNrRTYxTll5YjljZ0J3Um10bXkrUk5FSmRLRDJESnZIUUFGZE9hMmRLMTA2bTNVV3R3Tk9oQkFFRGh0RHJIZHlFSFNyZEt5MU9ESHdnQUZPcFVNVU9EdDFYUmZEQk1Zd1JRazdsaWZxcDBpclY3NlFkUGhnZUF3bWt0MGxUcG5mYzBlK2wzU3FkY0E0Qmwycm1wVnJMVzdxWGZNT3NGZ0dPYXMxcFVlK2M5N1U4Yjlrd0g0SkYyQjFpMWR6NmtPZlhtamdWSEFCelNySnZmeFp6eXJibDZ0Ry9zOVFMQUM2MjlXdm9XL2JBZ3JlV3J3d2ZNSUNtQTBta3V4RXhXeFpoRnFBOXhaQjJBa21rZEtUZHN5ZGJ0YUErUTNqSHpCVUNoWW9UNU92WEtldTNDUDZFT29EUXh3dnd1eHdMTWVZVFNDNkVPb0JTeHdqemJGaWt4QmdINlVHZWdGSUJWc2NJOGVhbGxtOWJKUnJzdWpGQUhZRTJNTWNTK1pUOVl2NDJ3NEdnWTZpdytBbUNGOWp6ellUdXpjcEd4NnVsOU0zT2hBS28waXpRUnBHL216bDZPVlZQcTJ4V0RwUUF5V0VUdXNKcGRoM01XT2RUWEZtcE1BS3FSSXROTWp4WEdyREgxN1p6ZU9vQ0k1cEZMTEgwcllvd3d4WTJndHc1QVc1dWdWMTVVbURkeVUxS0UrcDNVMWpsOEdrQ280NGd6OXJaYnRDMXhZMGtaNm5kU2hpSFlBWXkxaUxDTDdMNnNLbExxVUwrVHIwc0VPNEI5VWdkNTBXSGV5eEhxOU5nQlBPWTRRNUM3Q1BOZXJsQy9reWVPMWFaQTNXWlN0MDVWSTk5dXhkWE05MmtqN3Z0eVNGdkxKeVF6WTRBNnROS1p5NWs3ZDk0N2xDbm1xZTlyZmJnZk01OGRjR1V1dThEbUtLbHN0MnFtVnNmZUptQnN1NUhCMUdOMmVBU0swY3JBNW9uMHdtTXV6eC9ibGpteTVLZU16OXhDbmdTclBlVGJwbWsyVGROOGxuKytIdnk3amZ4N0FIRzBXNEU0ay9hei9POHp3NU1ldXF4NExUbVJWTTVBYitRSnVhQlhETUNKRDAzVHZNMTFLYzh5MzhOVjB6Uy95VTBBZ0ZKdHBGZWVMY3diQXozMG9RVnp4d0VVS0Z1SlpWdnVIdnJRdGZUV1A5cDVTQUR3cUkzMHlGOWFDUFBHV0E5OWlONDZBTXN1SmN4WGxoN2p2d3c4aGwyNm0vUlgwelQvSitFT0FCYXNwTHp5WDFaNjVVTldBNzN6djFLRytXdkhGQ1lBU0draklmN2FXcTk4eUhLZzk3b2IrVW5tZzF1ZWV3ckFwdzhTNVA5dC9lcXMxdENmMHBWZzNsR0tBUkJaTjBIanZlVWUrYllTQTczWEJmb2ZiTFlGUUZGWEVmaFRldVhtYXVUN2xCem92WmtFT3h0dEFaaHFKYjN4eXhLRHZPY2gwSWU2VVArZGNneUFBMndrd1AvYTJxdXBXTjRDdlRlVFVzenZ6STRCc09WU0pscTRXOFRvTmRDSCtuQi9RYjBkcU5KS2V1Q2ZKTXpkcWlIUXR5Mmt2WkRlTzNWM3dKYyt3RC9MbjhYTVVnbFZZNkJ2bTBtd3p5WGtXY1FFbEtNUDdLL3k5OXVTQnpWREVlaVBHd2I3ZGsvK09UMTdJTG91bkw4TmZzbHEwTnQyTVlpcHFtbWEvd2ZkOVN0eFFzYnJRd0FBQUFCSlJVNUVya0pnZ2c9PSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzFfUFJFIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiJiZTcyNzAzNDU3NGFmNzk5NWM3NjA5MjllMDQzMDk3MyIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwidXYiOnRydWV9LCJtYXhNc2dTaXplIjo3NjA5LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0IjoyNCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjo3NjAwLCJ0cmFuc3BvcnRzIjpbInVzYiIsIm5mYyIsImJsZSJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XSwiZmlybXdhcmVWZXJzaW9uIjoxfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjAtMTItMDIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJDcmF5b25pYyBLZXlWYXVsdCIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjAxMTEwMDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjMiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMyJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMC0xMi0wMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIyLTAzLTA4In0seyJhYWlkIjoiNGU0ZSM0MDA2IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWlkIjoiNGU0ZSM0MDA2IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkFuZHJvaWQgUElOIn0sImRlc2NyaXB0aW9uIjoiQW5kcm9pZCBQSU4iLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MjU2LCJwcm90b2NvbEZhbWlseSI6InVhZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9LHsibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfc3Vycm9nYXRlIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2ludGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjEwLCJibG9ja1Nsb3dkb3duIjowfX1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInRlZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJzb2Z0d2FyZSJdLCJhdHRhY2htZW50SGludCI6WyJpbnRlcm5hbCJdLCJ0Y0Rpc3BsYXkiOlsiYW55Il0sInRjRGlzcGxheUNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbiIsImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6W10sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUVnQUFBQklDQVlBQUFCVjdiTkhBQUFBQ1hCSVdYTUFBQXNTQUFBTEVnSFMzWDc4QUFBS1QybERRMUJRYUc5MGIzTm9iM0FnU1VORElIQnliMlpwYkdVQUFIamFuVk5uVkZQcEZqMzMzdlJDUzRpQWxFdHZVaFVJSUZKQ2k0QVVrU1lxSVFrUVNvZ2hvZGtWVWNFUlJVVUVHOGlnaUFPT2pvQ01GVkVzRElvSzJBZmtJYUtPZzZPSWlzcjc0WHVqYTlhODkrYk4vclhYUHVlczg1Mnp6d2ZBQ0F5V1NETlJOWUFNcVVJZUVlQ0R4OFRHNGVRdVFJRUtKSEFBRUFpelpDRnovU01CQVBoK1BEd3JJc0FIdmdBQmVOTUxDQURBVFp2QU1CeUgvdy9xUXBsY0FZQ0VBY0Iwa1RoTENJQVVBRUI2amtLbUFFQkdBWUNkbUNaVEFLQUVBR0RMWTJMakFGQXRBR0FuZitiVEFJQ2QrSmw3QVFCYmxDRVZBYUNSQUNBVFpZaEVBR2c3QUt6UFZvcEZBRmd3QUJSbVM4UTVBTmd0QURCSlYyWklBTEMzQU1ET0VBdXlBQWdNQURCUmlJVXBBQVI3QUdESUl5TjRBSVNaQUJSRzhsYzg4U3V1RU9jcUFBQjRtYkk4dVNRNVJZRmJDQzF4QjFkWExoNG96a2tYS3hRMllRSmhta0F1d25tWkdUS0JOQS9nODh3QUFLQ1JGUkhnZy9QOWVNNE9yczdPTm82MkRsOHQ2cjhHL3lKaVl1UCs1YytyY0VBQUFPRjBmdEgrTEMrekdvQTdCb0J0L3FJbDdnUm9YZ3VnZGZlTFpySVBRTFVBb09uYVYvTncrSDQ4UEVXaGtMbloyZVhrNU5oS3hFSmJZY3BYZmY1bndsL0FWLzFzK1g0OC9QZjE0TDdpSklFeVhZRkhCUGpnd3N6MFRLVWN6NUlKaEdMYzVvOUgvTGNMLy93ZDB5TEVTV0s1V0NvVTQxRVNjWTVFbW96ek1xVWlpVUtTS2NVbDB2OWs0dDhzK3dNKzN6VUFzR28rQVh1UkxhaGRZd1AyU3ljUVdIVEE0dmNBQVBLN2I4SFVLQWdEZ0dpRDRjOTMvKzgvL1VlZ0pRQ0Faa21TY1FBQVhrUWtMbFRLc3ovSENBQUFSS0NCS3JCQkcvVEJHQ3pBQmh6QkJkekJDL3hnTm9SQ0pNVENRaEJDQ21TQUhISmdLYXlDUWlpR3piQWRLbUF2MUVBZE5NQlJhSWFUY0E0dXdsVzREajF3RC9waENKN0JLTHlCQ1FSQnlBZ1RZU0hhaUFGaWlsZ2pqZ2dYbVlYNEljRklCQktMSkNESmlCUlJJa3VSTlVneFVvcFVJRlZJSGZJOWNnSTVoMXhHdXBFN3lBQXlndnlHdkVjeGxJR3lVVDNVRExWRHVhZzNHb1JHb2d2UVpIUXhtbzhXb0p2UWNyUWFQWXcyb2VmUXEyZ1AybzgrUThjd3dPZ1lCelBFYkRBdXhzTkNzVGdzQ1pOank3RWlyQXlyeGhxd1Zxd0R1NG4xWTgreGR3UVNnVVhBQ1RZRWQwSWdZUjVCU0ZoTVdFN1lTS2dnSENRMEVkb0pOd2tEaEZIQ0p5S1RxRXUwSnJvUitjUVlZakl4aDFoSUxDUFdFbzhUTHhCN2lFUEVOeVFTaVVNeUo3bVFBa214cEZUU0V0SkcwbTVTSStrc3FaczBTQm9qazhuYVpHdXlCem1VTENBcnlJWGtuZVRENURQa0crUWg4bHNLbldKQWNhVDRVK0lvVXNwcVNobmxFT1UwNVFabG1ESkJWYU9hVXQyb29WUVJOWTlhUXEyaHRsS3ZVWWVvRXpSMW1qbk5neFpKUzZXdG9wWFRHbWdYYVBkcHIraDB1aEhkbFI1T2w5Qlgwc3ZwUitpWDZBUDBkd3dOaGhXRHg0aG5LQm1iR0FjWVp4bDNHSytZVEtZWjA0c1p4MVF3TnpIcm1PZVpENWx2VlZncXRpcDhGWkhLQ3BWS2xTYVZHeW92VkttcXBxcmVxZ3RWODFYTFZJK3BYbE45cmtaVk0xUGpxUW5VbHF0VnFwMVE2MU1iVTJlcE82aUhxbWVvYjFRL3BINVovWWtHV2NOTXcwOURwRkdnc1YvanZNWWdDMk1aczNnc0lXc05xNFoxZ1RYRUpySE4yWHgyS3J1WS9SMjdpejJxcWFFNVF6TktNMWV6VXZPVVpqOEg0NWh4K0p4MFRnbm5LS2VYODM2SzNoVHZLZUlwRzZZMFRMa3haVnhycXBhWGxsaXJTS3RScTBmcnZUYXU3YWVkcHIxRnUxbjdnUTVCeDBvblhDZEhaNC9PQlozblU5bFQzYWNLcHhaTlBUcjFyaTZxYTZVYm9idEVkNzl1cCs2WW5yNWVnSjVNYjZmZWViM24raHg5TC8xVS9XMzZwL1ZIREZnR3N3d2tCdHNNemhnOHhUVnhiendkTDhmYjhWRkRYY05BUTZWaGxXR1g0WVNSdWRFOG85VkdqVVlQakduR1hPTWs0MjNHYmNhakpnWW1JU1pMVGVwTjdwcFNUYm1tS2FZN1REdE14ODNNemFMTjFwazFtejB4MXpMbm0rZWIxNXZmdDJCYWVGb3N0cWkydUdWSnN1UmFwbG51dHJ4dWhWbzVXYVZZVlZwZHMwYXRuYTBsMXJ1dHU2Y1JwN2xPazA2cm50Wm53N0R4dHNtMnFiY1pzT1hZQnR1dXRtMjJmV0ZuWWhkbnQ4V3V3KzZUdlpOOXVuMk4vVDBIRFlmWkRxc2RXaDErYzdSeUZEcFdPdDZhenB6dVAzM0Y5SmJwTDJkWXp4RFAyRFBqdGhQTEtjUnBuVk9iMDBkbkYyZTVjNFB6aUl1SlM0TExMcGMrTHBzYnh0M0l2ZVJLZFBWeFhlRjYwdldkbTdPYnd1Mm8yNi91TnU1cDdvZmNuOHcwbnltZVdUTnowTVBJUStCUjVkRS9DNStWTUd2ZnJINVBRMCtCWjdYbkl5OWpMNUZYcmRld3Q2VjNxdmRoN3hjKzlqNXluK00rNHp3MzNqTGVXVi9NTjhDM3lMZkxUOE52bmwrRjMwTi9JLzlrLzNyLzBRQ25nQ1VCWndPSmdVR0JXd0w3K0hwOEliK09QenJiWmZheTJlMUJqS0M1UVJWQmo0S3RndVhCclNGb3lPeVFyU0gzNTVqT2tjNXBEb1ZRZnVqVzBBZGg1bUdMdzM0TUo0V0hoVmVHUDQ1d2lGZ2EwVEdYTlhmUjNFTnozMFQ2UkpaRTNwdG5NVTg1cnkxS05TbytxaTVxUE5vM3VqUzZQOFl1WmxuTTFWaWRXRWxzU3h3NUxpcXVObTVzdnQvODdmT0g0cDNpQytON0Y1Z3Z5RjF3ZWFIT3d2U0ZweGFwTGhJc09wWkFUSWhPT0pUd1FSQXFxQmFNSmZJVGR5V09Dbm5DSGNKbklpL1JOdEdJMkVOY0toNU84a2dxVFhxUzdKRzhOWGtreFRPbExPVzVoQ2Vwa0x4TURVemRtenFlRnBwMklHMHlQVHE5TVlPU2taQnhRcW9oVFpPMlorcG41bVoyeTZ4bGhiTCt4VzZMdHk4ZWxRZkphN09RckFWWkxRcTJRcWJvVkZvbzF5b0hzbWRsVjJhL3pZbktPWmFybml2TjdjeXp5dHVRTjV6dm4vL3RFc0lTNFpLMnBZWkxWeTBkV09hOXJHbzVzanh4ZWRzSzR4VUZLNFpXQnF3OHVJcTJLbTNWVDZ2dFY1ZXVmcjBtZWsxcmdWN0J5b0xCdFFGcjZ3dFZDdVdGZmV2YzErMWRUMWd2V2QrMVlmcUduUnMrRlltS3JoVGJGNWNWZjlnbzNIamxHNGR2eXIrWjNKUzBxYXZFdVdUUFp0Sm02ZWJlTFo1YkRwYXFsK2FYRG00TjJkcTBEZDlXdE8zMTlrWGJMNWZOS051N2c3WkR1YU8vUExpOFphZkp6czA3UDFTa1ZQUlUrbFEyN3RMZHRXSFgrRzdSN2h0N3ZQWTA3TlhiVzd6My9UN0p2dHRWQVZWTjFXYlZaZnRKKzdQM1A2NkpxdW40bHZ0dFhhMU9iWEh0eHdQU0EvMEhJdzYyMTduVTFSM1NQVlJTajlZcjYwY094eCsrL3AzdmR5ME5OZzFWalp6RzRpTndSSG5rNmZjSjMvY2VEVHJhZG94N3JPRUgweDkySFdjZEwycENtdkthUnB0VG12dGJZbHU2VDh3KzBkYnEzbnI4UjlzZkQ1dzBQRmw1U3ZOVXlXbmE2WUxUazJmeXo0eWRsWjE5Zmk3NTNHRGJvclo3NTJQTzMyb1BiKys2RUhUaDBrWC9pK2M3dkR2T1hQSzRkUEt5MitVVFY3aFhtcTg2WDIzcWRPbzgvcFBUVDhlN25MdWFycmxjYTdudWVyMjFlMmIzNlJ1ZU44N2Q5TDE1OFJiLzF0V2VPVDNkdmZONmIvZkY5L1hmRnQxK2NpZjl6c3U3MlhjbjdxMjhUN3hmOUVEdFFkbEQzWWZWUDF2KzNOanYzSDlxd0hlZzg5SGNSL2NHaFlQUC9wSDFqdzlEQlkrWmo4dUdEWWJybmpnK09UbmlQM0w5NmZ5blE4OWt6eWFlRi82aS9zdXVGeFl2ZnZqVjY5Zk8wWmpSb1pmeWw1Ty9iWHlsL2VyQTZ4bXYyOGJDeGg2K3lYZ3pNVjcwVnZ2dHdYZmNkeDN2bzk4UFQrUjhJSDhvLzJqNXNmVlQwS2Y3a3htVGsvOEVBNWp6L0dNekxkc0FBQUFFWjBGTlFRQUFzWTU4KzFHVEFBQUFJR05JVWswQUFIb2xBQUNBZ3dBQStmOEFBSURwQUFCMU1BQUE2bUFBQURxWUFBQVhiNUpmeFVZQUFBbitTVVJCVkhqYTdKeHZiRlAxR3NjL3A2ZHIxNjRWeDJ4cHR4R1lZQnZGRzRqYU9PMmNXeFFDT0lJSm1mZUYrZ0tOUk9VRjBVVHZGWW54ejRneGFqQUdIVjdDUWpSN28xRVRRL3lEaVpHTUYvSmltOTJXc0RuSFhiTnVERFBweWtiLzBmYTVMMlRuTXZhSE16Z3FoWDZUa3p6bmQ1NmM5RHg5L3YyZTUvZjdLVXpIVW1BYnNCR280dnJDZjRHdmdmOEFRN014L0JNWUJlUTZ2MGJQeTJJYUdvRnNRVGphbFQwdkV4U2dFZ2dCaXluZ1Fwd0dWcXZBdjRGMUJYbk1nQTFJS1VBWDhJK0NQR1pGdDNKZWxVb0xzcGdWVVZOQkJ2T2pJS0JMUUFYK2RkNGhYUkZLU2tydytYeWswMmxVVmVXV1cyNGhtODBpSXZoOFBqS1pETGxjRHIvZlR5NlgwK2hzTmtzbWs4SHY5d09ReVdUdytYeW9xa282bmNidjkyTXltVWdtay9qOWZvcUtpa2dta3hwUElwSEE3L2Rqc1ZpSXgrTWFQVEV4WVlSOGtvWUpxTDYrbmg5Ly9KSCsvbjRjRGdkdGJXMmNPbldLVkNyRnNXUEhHQjRlSmhhTDBkSFJ3Y1RFQkdOalk3UzN0L1A3Nzc4VGlVVG83dTRtblU0ek1qSkNaMmNuVnF1Vm5wNGVlbnA2VUZXVjl2WjIrdnI2S0NzcjQ2ZWZmdUw0OGVNNEhBNk9IRG5Dd01BQUhvK0hvMGVQMHR2YlMzbDVPVjkrK2FVaEFqTE14TExaTEZhckZSRWhrOGxndFZvQlNLZlQybmc2bmFhNHVGZ2JuNktUeVNURnhjV1lUQ1pTcVpSR1h6aWVTQ1N3Mld5WXpXYVN5YVJHeCtOeGpaN2lLU29xTXN6RXpFYThSRkVVMXF4WkE4Q3FWYXU0NmFhYkFQRDVmS1JTS1FCdXZmVlc0dkU0QUN0WHJpUVlER284OTk5L1B3QlZWVlhVMU5UOE1TbGN1cFM2dWpvQWxpMWJ4Z01QUEFDQTErdWx2cjRlZ0lxS0N0YXVYUXVBeCtQUmVOeHVOelUxTlpoTS8vLy9UU1lUUFQwOWpJMk5YVmJHZU5scHVkbHNsbzgvL2xqeUFWdTJiRm5vOTUyK0lnMHltODBjUEhpUVJ4OTl0QkRtWjRRL1ZjMDc0WWpJWHlPZ29xS2lhMTV6cmtoQXpjM05QUGJZWTNuM3NWTkJZa0VCU085YzdQbm5uMmZac21XWXpXYTJiZHVHMld6T093RWRPblNJL3Y1K0ZFWGh2ZmZlSXh3T1gzSXVwanVLOWZYMXliV0VtcG9hWFZGTXR3WlZWRlJnc1Zod09CeDg5OTEzZUwzZXZOT2daNTk5bG0rLy9SYUFrWkVSTFVlYlQ0TjAyMGxqWXlOTGx5N1ZoSlNQV0w5K1BWVlZWYWlxeXZ2dnY2L0h4UFFuaWowOVBkZVVpZDE3NzcyNlRFeTNnRnd1bDNpOVh2SDVmREk4UEp5WFFubnl5U2ZGN1hhTDErc1ZpOFZpYkNiOThNTVA0L1Y2c1ZxdGxKU1U1S1dKclYyN2xzcktTa1NFbHBZV0lwR0ljU2IyeXkrL0ZLTFlmS2lxcXNKbXMxRlNVc0pYWDMyRngrUEpPdzNhc1dNSGh3OGZSbEVVQmdjSFNTUVN4a1d4RFJzMlVGbFpTVkZSRVhhN1BTOU5yTGEyRnJmYmphSW83TnUzajZHaEllTk1ySkFvWGdKVER0cmhjSEQ0OE9FWmllTEF3QUNmZnZvcG82T2pLSXJ5dDgzVzdYWTd3V0NRaG9hR0djK2ZlZVladnZubUd4UkY0ZVRKazhZbWlnOCsrQ0JMbGl5aHVMZ1ltMjE2Q1RzY0RsTlhWNmM3S3Z3VmFHNXU1dW1ubjU0MmRzODk5MmpsMmRiV1ZrWkdSdjZhS1BiaGh4OWVkUXNRN3I3N2JrTk1UTGNHYmR5NEVidmRUa2xKQ1Y5ODhjVzBLSGIyN05tOGNOTFBQZmNjMzMvL1BTYVRpWUdCQVdQclFiVzF0VFEwTkxCKy9mb1pKblpoY1J6QTZYU3lmLzkrbkU3bm5PL1R3d1B3eWl1djhOQkREeTJZWnpZL0dBZ0UyTHg1TTVzMmJhSzBWSCszWFplSkRRME56YW11Nzc3N3JzYTNaODhlYVdscGtVd21JeTB0TGJKbno1NFo3OUxEMDlqWUtBY09ISkJJSkNJLy9QQ0R0TGEyeW9vVkszVHpWRmRYejJ0aXRiVzF1a3hNdHdZMU5EUVFEQVpadDI0ZHYvMzIyOXh1UHhwbDY5YXRxS3JLMXExYmlVYWpsOFVUaVVUWXZIa3pGUlVWMU5mWHMzejVjbUt4MkNWNXhzZkg1L3h0TzNmdUpCZ01FZ3dHNmV6c05MWXY1dlA1Y0x2ZEZCY1h6OXVZS3lzckF5Q1h5MkV5bWJUN2hmSTRuVTZ0K1FoUVdsbzY3WDR1bnFsbTVGeXpnV2cwaXFxcURBd002R3BQNnhiUW0yKyt5WW9WS3k3Sk56dzh6T3V2djg3T25UdHBhbXFhMVlIcjRWRVVoYmZlZW9zbm5uaUNuMy8rbWQ3ZTNobStUZy9QaFhqcXFhYzBPaFFLY2VyVUtlTjgwS3BWcXlRUUNFaGRYWjJNam83TzZZTUFzZGxzMHRUVUpGYXJkYzczNmVFQlpQdjI3WExmZmZjdG1HYzJIL1RpaXkvS0hYZmNJWUZBUUJ3T2g3RmhmczJhTlpxSlhhenFGL2ViRW9rRXUzYnRtdmQ5ZW5nQVB2amdBME40NEkvMmR5cVZRbFZWSXBFSWs1T1R4bW5RNE9EZ25CSGhuWGZldWVvU3hUdnZ2SFBlS0hZcHJWeXdCalUyTnJKbzBTSnNOaHNIRGh6QTVYSnB6NnFycTYrNnBEQVFDTXdZZS9YVlYybHJhME5SRkxxNnVveU5ZdVhsNWJoY0xxeFdLNnFxVG5zV0RBWTVlUEFnemMzTmVtb3NmenFxcTZ2WnZYdjNqSEczMjgzeTVjc0JkQXZJRUJQTFIraE5GSFdYTzFhdlhvM0Q0YUNrcElSUFB2a0V0OXVkZHdXemwxOSttU05Iam1nYXBDTVAwbC91S0Nzcm83UzBGSnZOTnNQRThnVTMzbmdqTHBjTFZWVTVmdnk0c1NaMjRzU0phOHJFREk5aWp6Lyt1QmJGOXUzYnB5Mnp5eWZzM3IyYnRyWTJWRldsdTd2YjJDam1jRGcwQWYxZEpkVXJoZDF1Wi9IaVAvYnNMR1IxaWk0VEM0ZkQxMlVVMHkzR1J4NTVSTk9nL2Z2M1Qwc1U4d1d2dmZZYVI0OGVSVkVVUXFHUXNTWm1zVml3V3ExWXJkYThOVEdMeFlMRllrRlYxWGxuL1lVbzltZEVzUjA3ZHJCNDhXTHNkanROVFUyYXM4c243TjI3bDJQSGptRTJtK250N1RWV2c2WXVSVkh5ZHRxeFljT0dCUzhrWC9BcVY2ZlR1U0Q3dlpwd2NUZkcwTGJQOVFyVDVVYUR2UHpZeTlEOEJTOTJ6dVZ5aE1OaGJZUGNWTW5WWnJQaGNyazRmZm8wMld3V2w4dkYrUGc0cVZTS0pVdVdFSTFHU2FWU2VEd2VZckVZaVVRQ2o4ZkQrUGc0aVVRQ3I5ZkxtVE5uaU1mamVEd2VKaWNubVppWXdPdjFNakV4d1prelo2aW9xT0RzMmJQRVlqSEt5OHVabkp4a2ZIeWN5c3BLNHZFNDBXaVVpb29LNHZFNFkyTmowOUlSazhsMDJSM2dCVHRwaDhNaE45eHdnM1k1blU3WnNtV0xpSWhzMzc1ZE5tM2FKQ0lpTDczMGt0VFgxNHVJeUFzdnZDQ0JRRUJFUk41NDR3MnRxTDVyMXk2NS9mYmJSVVRrN2JmZmxydnV1a3RFUkQ3NjZDTzU3YmJiUkVSazc5NjlVbFZWSlNJaXJhMnRzbkxsU2hFUmFXbHBFWS9ISXlJaW4zMzJtZHg4ODgwaUl2TDU1NStMMCttYzloc1hMVm9rWnJQNXo5L3RJeUt6RnJ1bmx2a25rMG50bnpwMzdwekdtMHFsdFByTHVYUG5wdEZURGNGTUpxT05aN05aYlR5YnpXb05RUkhSeG5PNW5OWjB2SEFjTUdwTHBuRk9PaGFMMGQzZHpkallHSk9UazNSM2QzUHk1RW5pOFRoZFhWM2E5c3l1cmk2R2g0ZEpwVktFUWlGR1JrYklack9FUWlHR2hvWklwOU9FUWlFR0J3Zkpack4wZG5ZU0RvY1JFVG82T3ZqMTExL0o1WEowZEhSdzRzUUpUQ1lUN2UzdDlQZjNheng5ZlgyRytTMUQ5ODJiVENiTkwxMEpyU2lLMWtyU1ExL2NUTHljYlU5elZSUU5EZk5USDNpbDlJVWZxSWUrMkFYODdXRytrQWNWTUUxQWtZSVk1a1RFQkJ3cXlHRk9IQ29jc0RSL0FyMTY2cVp3Uk5jY1IzUmRpTUloYjdNYzhuWnhjYmx3VE9CRnh3VCtid0M0RTQyTDZaQ2JlZ0FBQUFCSlJVNUVya0pnZ2c9PSIsInN1cHBvcnRlZEV4dGVuc2lvbnMiOlt7ImlkIjoiZmlkby51YWYuYW5kcm9pZC5rZXlfYXR0ZXN0YXRpb24iLCJkYXRhIjoie1wiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzXCI6W1wiTUlJQ2l6Q0NBaktnQXdJQkFnSUpBS0lGbnRFT1ExdFhNQW9HQ0NxR1NNNDlCQU1DTUlHWU1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQXdLUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnd3TlRXOTFiblJoYVc0Z1ZtbGxkekVWTUJNR0ExVUVDZ3dNUjI5dloyeGxMQ0JKYm1NdU1SQXdEZ1lEVlFRTERBZEJibVJ5YjJsa01UTXdNUVlEVlFRRERDcEJibVJ5YjJsa0lFdGxlWE4wYjNKbElGTnZablIzWVhKbElFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRd0hoY05NVFl3TVRFeE1EQTBNelV3V2hjTk16WXdNVEEyTURBME16VXdXakNCbURFTE1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBZ01Da05oYkdsbWIzSnVhV0V4RmpBVUJnTlZCQWNNRFUxdmRXNTBZV2x1SUZacFpYY3hGVEFUQmdOVkJBb01ERWR2YjJkc1pTd2dTVzVqTGpFUU1BNEdBMVVFQ3d3SFFXNWtjbTlwWkRFek1ERUdBMVVFQXd3cVFXNWtjbTlwWkNCTFpYbHpkRzl5WlNCVGIyWjBkMkZ5WlNCQmRIUmxjM1JoZEdsdmJpQlNiMjkwTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFN2wxZXgrSEEyMjBEcG43bXRodnNUV3BkYW1ndUQvOS9TUTU5ZHg5RUltMjlzYS82RnN2SHJjVjMwbGFjcXJld0xWUUJYVDVES3lxTzEwN3NTSFZCcEtOak1HRXdIUVlEVlIwT0JCWUVGTWl0NlhkTVJjT2p6dzBXRU9SNVF6b2hXakRQTUI4R0ExVWRJd1FZTUJhQUZNaXQ2WGRNUmNPanp3MFdFT1I1UXpvaFdqRFBNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdEZ1lEVlIwUEFRSC9CQVFEQWdLRU1Bb0dDQ3FHU000OUJBTUNBMGNBTUVRQ0lEVWhvKytMTkVZZW5OVmc4eDFZaVNCcTNLTmxRZllObnM2S0dZeG1TR0I3QWlCTkMvTlIyVEI4ZlZ2YU5UUWRxRWNiWTZXRlpUeXRUeVNuNTAydlFYM3h2dz09XCIsXCJNSUlGWURDQ0EwaWdBd0lCQWdJSkFPajZHV01VMHZvWU1BMEdDU3FHU0liM0RRRUJDd1VBTUJzeEdUQVhCZ05WQkFVVEVHWTVNakF3T1dVNE5UTmlObUl3TkRVd0hoY05NVFl3TlRJMk1UWXlPRFV5V2hjTk1qWXdOVEkwTVRZeU9EVXlXakFiTVJrd0Z3WURWUVFGRXhCbU9USXdNRGxsT0RVellqWmlNRFExTUlJQ0lqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FnOEFNSUlDQ2dLQ0FnRUFyN2JIZ2l1eHB3SHNLN1F1aTh4VUZtT3I3NWd2TXNkL2RURURESmRTU3h0ZjZBbjd4eXFwUlI5MFBMMmFieE0xZEVxbFhuZjJ0cXcxTmU0WHdsNWpsUmZkbkpMbU4wcFR5LzRsajQvN3R2MFNrM2lpS2t5cG5FVXRSNldmTWdIMFFaZktITTErZGkreTlURlJ0djZ5Ly8wcmIrVCtXOGE5bnNOTC9nZ2puYXI4NjQ2MXFPMHJPczJjWGpwM2tPRzFGRUo1TVZtRm1CR3RucktwYTczWHBYeVRxUnhCL00wbjFuL1c5bkdxQzRGU1lhMDRUNk41UklaR0JOMnoyTVQ1SUtHYkZsYkM4VXJXMER4VzdBWUltUVFjSHRHbC9tMDBRTFZXdXRIUW9WSlluRlBsWFRjSFl2QVNMdStSaGhzYkRteE1nSkowbWNEcHZzQzRQanZCK1R4eXdFbGdTNzB2RTBYbUxEK09KdHZzQnNsSFp2UEJLQ09kVDBNUyt0Z1NPSWZnYSt6MVoxZzcrRFZhZ2Y3cXV2bWFnOGpmUGlveUt2eG5LL0Vnc1RVVmkyZ2h6cTh3bTI3dWQvbUlNN0FZMnFFT1JSOEdvM1RWQjRIeldRZ3BacnQzaTVNSWxDYVk1MDRMelNSaWlnSEN6QVBsSHdzK1cwckI1TitlcjUvMnBKS25mQlNEaUNpRkFWdENMT1o3Z0xpTW0wamhPMkI2dFVYSEkvK01SUGp5MDJpNTlsSU5NUlJldjU2R0t0Y2Q5cU8vMGtVSldkWlRkQTJYb1M4Mml4UHZadFhRcFVwdUwxMmFiKzlFYURLOFo0UkhKWVlmQ1QzUTV2TkFYYWlXUSs4UFRXbTJRZ0JSL2Jrd1NXYytOcFVGZ05QTjlQdlFpOFdFZzVVbUFHTUNBd0VBQWFPQnBqQ0JvekFkQmdOVkhRNEVGZ1FVTm1IaEFIeUlCUWxSaTBSc1IvOGFUTW5xVHhJd0h3WURWUjBqQkJnd0ZvQVVObUhoQUh5SUJRbFJpMFJzUi84YVRNbnFUeEl3RHdZRFZSMFRBUUgvQkFVd0F3RUIvekFPQmdOVkhROEJBZjhFQkFNQ0FZWXdRQVlEVlIwZkJEa3dOekExb0RPZ01ZWXZhSFIwY0hNNkx5OWhibVJ5YjJsa0xtZHZiMmRzWldGd2FYTXVZMjl0TDJGMGRHVnpkR0YwYVc5dUwyTnliQzh3RFFZSktvWklodmNOQVFFTEJRQURnZ0lCQUNESXc0MUwzS2xYRzBhTWlTLy9jcXJHK0VTaEhVR284SE5zdzMwVzFrSnRqbjZVQndSTTZqbm1pd2ZCUGI4VkE5MWNoYjJ2c3NBdFgyemJUdnFCSjkrTEJQR0Nkdy9FNTNSYmY4NnFoeEthaUFIT2pwdkF5NVkzbTAwbXFDMHcvWnd2anUxdHdiNHZoTGFKNU5rVUpZc1VTN3JtSktISEJuRVRMaThHRnFpRXNxVFdwRy82aWJZQ3Y3cllEQkpEY1I5VzYyQlc5amZJb0JRY3hVQ1VKb3VNUEgyNWxMTmNEYzFzc3F2QzJ2N2lVZ0k5TGVvTTFzTm92cVBtUVVpRzlySGxpMXZYeHpDeWFNVGp3ZnRrSkxrZjY3MjRERmh1S3VnMmpJVFYwUWtYdmFKV0Y0blVhSE9UTkE0dUpVOVdEdlpMSTFqODNBKy94bkFKVXVjSXYvekdKMUFNSDJib0hxRjhDWTE2THBzWWdCdDZ0S3h4V0gwMFhjeURDZFcyS2xCQ2VxYlFQY3NGbVd5V3VneGRjZWtoWXNBV3lvU2Y4MThOVXNaZEJXQmFSL091a1hyTkxma1E3OUl5Wm9oWmJ2YWJPL1grTVZUM3JyaUFvS2M4b0UyVXdzNkRGKzYwUFY3L1dJUGpOdlh5U2Rxc3BJbVNONzhtZmx4RHF3THFSQllrQTNJNzVxcHBMR0c5cnA3VUNkUmp4TWw4WkRCbGQrN3l2SFZndDFjVnpKeDl4bnlHQ0MyM1VhaWNNRFNYWXJCNEk0V0hYUEdqeGhadUN1UEJMVGRPTFU4WVJ2TVlkRXZZZWJXSE1wdndHQ0Y2YkF4M0pCcEllT1Exd0RCNXkwVVNpY1YzWWdZR21pK05aZmhBNFVSU2g3N1lkNnV1Sk9KRU5SYU5WVHprXCJdfSIsImZhaWxfaWZfdW5rbm93biI6ZmFsc2V9XX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDE4LTA1LTE5In1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAxOC0wNS0xOSJ9LHsiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjI4YjZmMjNkZDMyMDUyYjRjNTFhOTdlY2RmOGFjOTEyYjEzYjVjZGIiXSwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiMjhiNmYyM2RkMzIwNTJiNGM1MWE5N2VjZGY4YWM5MTJiMTNiNWNkYiJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiRmVpdGlhbiBCaW9QYXNzIEZJRE8yIFBsdXMgQXV0aGVudGljYXRvciJ9LCJkZXNjcmlwdGlvbiI6IkZlaXRpYW4gQmlvUGFzcyBGSURPMiBQbHVzIEF1dGhlbnRpY2F0b3IiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoyfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiLCJyZW1vdGVfaGFuZGxlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUIyVENDQVg2Z0F3SUJBZ0lRRlFOS1crN3piZy83ZCtsVHlySVd3REFLQmdncWhrak9QUVFEQWpCTE1Rc3dDUVlEVlFRR0V3SlZVekVkTUJzR0ExVUVDZ3dVUm1WcGRHbGhiaUJVWldOb2JtOXNiMmRwWlhNeEhUQWJCZ05WQkFNTUZFWmxhWFJwWVc0Z1JrbEVUeUJTYjI5MElFTkJNQ0FYRFRJeU1EWXdPREF3TURBd01Gb1lEekl3TlRJd05qQTNNak0xT1RVNVdqQkxNUXN3Q1FZRFZRUUdFd0pWVXpFZE1Cc0dBMVVFQ2d3VVJtVnBkR2xoYmlCVVpXTm9ibTlzYjJkcFpYTXhIVEFiQmdOVkJBTU1GRVpsYVhScFlXNGdSa2xFVHlCU2IyOTBJRU5CTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFc0ZZRUVoaUp1cXFuTWdRalNpaXZCalY3REdDVGY0WEJCSC9CN3V2WnNLeFhTaEYwTDh1RElTV1V2Y0V4aXhSczZnQjNvbGRTcmpveDZMOFQ5NE5PenFOQ01FQXdIUVlEVlIwT0JCWUVGRXU5aHlZUnJSeUp6d1JZdm5EU0NJeHJGaU8zTUE4R0ExVWRFd0VCL3dRRk1BTUJBZjh3RGdZRFZSMFBBUUgvQkFRREFnRUdNQW9HQ0NxR1NNNDlCQU1DQTBrQU1FWUNJUUNCME5GUVNOMHo0bFd6L3ljMzZld3JUQ3p0dEsvcUZ2bGFQT0toK1QxbzZ3SWhBUDBvS0tBK2NpY3NEeTNZM24rVmxQOGVCM1BCek1raHZXLzlJU1hDdytWQiIsIk1JSUIyRENDQVgrZ0F3SUJBZ0lSQU1zOFlYVkJvQk51WFVqcWZDb1g3eTR3Q2dZSUtvWkl6ajBFQXdJd1N6RUxNQWtHQTFVRUJoTUNWVk14SFRBYkJnTlZCQW9NRkVabGFYUnBZVzRnVkdWamFHNXZiRzluYVdWek1SMHdHd1lEVlFRRERCUkdaV2wwYVdGdUlFWkpSRThnUlVFZ1VtOXZkREFnRncweU16QXhNREV3TURBd01EQmFHQTh5TURVeU1USXpNVEl6TlRrMU9Wb3dTekVMTUFrR0ExVUVCaE1DVlZNeEhUQWJCZ05WQkFvTUZFWmxhWFJwWVc0Z1ZHVmphRzV2Ykc5bmFXVnpNUjB3R3dZRFZRUUREQlJHWldsMGFXRnVJRVpKUkU4Z1JVRWdVbTl2ZERCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQkQyTEhIQVFxWWJkUjFXWmx1ZXJ0TTMwcldob3JZYXZXbU1WYTRuZFg5UFp3dVJFcExRNG0xbkVscVFLTW5SRTgvNEMrUnF3aWF2K21wSTRreGQ1ZTV1alFqQkFNQjBHQTFVZERnUVdCQlMzWlpqeUdsaFo5OU4xdkxvVFBYVlVhNFpFWURBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUE0R0ExVWREd0VCL3dRRUF3SUJCakFLQmdncWhrak9QUVFEQWdOSEFEQkVBaUFvRCtSNmtvbElXYU5KejRoejAzRDNnZXMzR2JNQmpBV3BrT1VnOWF5Rmd3SWdiRXc3QVlTeWs2OE92eGdYZXpnbmRUUlRFdVNXVCtmZFJuTGFCTnNhVHcwPSIsIk1JSUIyRENDQVg2Z0F3SUJBZ0lRQlRtazNad2lsRlhqc1p5d0hEbk1nREFLQmdncWhrak9QUVFEQWpCTE1Rc3dDUVlEVlFRR0V3SkRUakVkTUJzR0ExVUVDZ3dVUm1WcGRHbGhiaUJVWldOb2JtOXNiMmRwWlhNeEhUQWJCZ05WQkFNTUZFWmxhWFJwWVc0Z1JrbEVUeUJTYjI5MElFTkJNQ0FYRFRJeU1EWXdPREF3TURBd01Gb1lEekl3TlRJd05qQTNNak0xT1RVNVdqQkxNUXN3Q1FZRFZRUUdFd0pEVGpFZE1Cc0dBMVVFQ2d3VVJtVnBkR2xoYmlCVVpXTm9ibTlzYjJkcFpYTXhIVEFiQmdOVkJBTU1GRVpsYVhScFlXNGdSa2xFVHlCU2IyOTBJRU5CTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFbmZBS2Jqdk1YMUV5MWI2aytXUVFkTlZNdDlKZ0dXeUozUHZNNEJTSzVYcVRmbysrMG9Bai80dG53eUlMMEhGQlI5U3Qra3RqcVNYRGZqaVhBdXJzODZOQ01FQXdIUVlEVlIwT0JCWUVGTkdobUUyQmY4TzVhL1lIWjcxUUV2NlFSZkZVTUE4R0ExVWRFd0VCL3dRRk1BTUJBZjh3RGdZRFZSMFBBUUgvQkFRREFnRUdNQW9HQ0NxR1NNNDlCQU1DQTBnQU1FVUNJQnlSejRPQWxSWjlIejlLVjdnMlFOdEMwQzhKeEgveExKWThGWkVtdEozc0FpRUFzcmVUMCtlTmtOY1VqSTloNU9QQ29INk5tc09rZ3ZFQUJKWnJGMDdBRGtZPSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFGQUFBQUFVQ0FNQUFBQXRCa3JsQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUJIWnBWRmgwV0UxTU9tTnZiUzVoWkc5aVpTNTRiWEFBQUFBQUFEdy9lSEJoWTJ0bGRDQmlaV2RwYmowaTc3dS9JaUJwWkQwaVZ6Vk5NRTF3UTJWb2FVaDZjbVZUZWs1VVkzcHJZemxrSWo4K0lEeDRPbmh0Y0cxbGRHRWdlRzFzYm5NNmVEMGlZV1J2WW1VNmJuTTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlrRmtiMkpsSUZoTlVDQkRiM0psSURVdU5pMWpNREUwSURjNUxqRTFOamM1Tnl3Z01qQXhOQzh3T0M4eU1DMHdPVG8xTXpvd01pQWdJQ0FnSUNBZ0lqNGdQSEprWmpwU1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJajRnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJZ2VHMXNibk02ZUcxd1BTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGh0Ykc1ek9uQm9iM1J2YzJodmNEMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzl3YUc5MGIzTm9iM0F2TVM0d0x5SWdlRzFzYm5NNmVHMXdUVTA5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5dGJTOGlJSGh0Ykc1ek9uTjBVbVZtUFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdmMxUjVjR1V2VW1WemIzVnlZMlZTWldZaklpQjRiWEE2UTNKbFlYUnZjbFJ2YjJ3OUlrRmtiMkpsSUZCb2IzUnZjMmh2Y0NCRFF5QXlNREUwSUNoTllXTnBiblJ2YzJncElpQjRiWEE2UTNKbFlYUmxSR0YwWlQwaU1qQXhOaTB4TWkwek1GUXhORG96TXpvd09Dc3dPRG93TUNJZ2VHMXdPazF2WkdsbWVVUmhkR1U5SWpJd01UWXRNVEl0TXpCVU1EYzZNekU2TlRrck1EZzZNREFpSUhodGNEcE5aWFJoWkdGMFlVUmhkR1U5SWpJd01UWXRNVEl0TXpCVU1EYzZNekU2TlRrck1EZzZNREFpSUdSak9tWnZjbTFoZEQwaWFXMWhaMlV2Y0c1bklpQndhRzkwYjNOb2IzQTZTR2x6ZEc5eWVUMGlNakF4TmkweE1pMHpNRlF4TlRvek1Eb3lOeXN3T0Rvd01DWWplRGs3NXBhSDVMdTJJT2FjcXVhZ2grbWltQzB4SU9XM3N1YUprK1c4Z0NZamVFRTdJaUI0YlhCTlRUcEpibk4wWVc1alpVbEVQU0o0YlhBdWFXbGtPakpGTnpGQ1JrWkRRelkzUmpFeFJUWTVOemhFUVRsRFFrSTJORFl6Umprd0lpQjRiWEJOVFRwRWIyTjFiV1Z1ZEVsRVBTSjRiWEF1Wkdsa09qSkZOekZDUmtaRVF6WTNSakV4UlRZNU56aEVRVGxEUWtJMk5EWXpSamt3SWo0Z1BIaHRjRTFOT2tSbGNtbDJaV1JHY205dElITjBVbVZtT21sdWMzUmhibU5sU1VROUluaHRjQzVwYVdRNk1rVTNNVUpHUmtGRE5qZEdNVEZGTmprM09FUkJPVU5DUWpZME5qTkdPVEFpSUhOMFVtVm1PbVJ2WTNWdFpXNTBTVVE5SW5odGNDNWthV1E2TWtVM01VSkdSa0pETmpkR01URkZOamszT0VSQk9VTkNRalkwTmpOR09UQWlMejRnUEM5eVpHWTZSR1Z6WTNKcGNIUnBiMjQrSUR3dmNtUm1PbEpFUmo0Z1BDOTRPbmh0Y0cxbGRHRStJRHcvZUhCaFkydGxkQ0JsYm1ROUluSWlQejQ3N0pYRkFBQUFZRkJNVkVYLy8vOEVWcUlYWmF2RzJPb3FjTEcyek9Pa3d0MEJTSnRxbGNYVjR1K2F1dGxXaGJ6azdQVUFNWTlIY3JLanROYnE4ZmVBbDhhQm9zeno5dnBkanNHR3F0RjNuOHVUc05TWnBjNkpzTlQ1K3YweFlLbnU4UGZmNS9MNDhmZy9mcmljekpnWUFBQURBRWxFUVZSNDJrUlVDWmJESUFqRlhaT1kxVGF0TmMzOWJ6a3NTWWMzcjRNRTRmTUJBYUQ2emw4eS85VE9nZXQ4ZDVqZk43OGJ3TS9kRENScFI1MjF6WGZvakhKMDVJSXloQkFVU1ZBT05kR3pCWXQyZjdLRnJma0phQWtIaDlGWmhjRFhIUmtUS285TUxpaEdhYXZJbW5WM3F5RVgwRXByZ3ovNER3VUQ3a0NIUm5kOFFGTjQzR280VVZtRERnemE0dzI3b2l6ZEEyK2NLK3V1VXBqam8yK3h3Yy80Mlc1MHg1TEdZZURCc1IwSFZJeDV4OGlGNjBDYmxiVEVFa0ZyMjdiTkRCVVZTcTFPS1ZQYkU2MmIzRUg4RnFCZzVPT09FdWMydDhaSmlxTU91R3ArY0tqZzd3VkdjZW96cU40cHhnVlBRa2pGWWdiVkpLRFVoRENqWXJhd1A1cTRFVGdDOWZJTVJIdGl0cFFjQ3ZKT0VMY2JNc1FnbmNpUmtsanB5UWp2RzQ0anFCVUVURmlCaTFQRUl5ZWtPenNXK1R5NWNMSG9zNVIrZE1TMUx0U1N4ZjNnUUhjelIyQ0k0Z01OcFc0SVJBMVFNYTZ0SjQrQzZ1SHVHRThtTkRJeUZxZy9PUC9NTVV1ZVM2SXE4UzkwZEFlQkpTRXkvcUtrSytCTnd6OGNZWTRqYjVKNnU0aVdDSTJCMVo1NkxXNWtFYzRoa2RNcHN2VUM1NTg1U1gwUXViY2dOcXlmZ0RGRWNUdCs0MC8wUzVOeDB3YUN3M09La2NPYkE1SW4wQVlwMDFwamp3Mm42MjZVRGp0SHdhMjhpSHVUS3F0cnYrcmVXNDFOWjZpR2xyN3V1TEpDZmtGdGN0Y0cwNHNnbTFlTlMrWmFEbnBhVEVyR295WDVKSzJpTXo4eHMwbk93V0djUERONDlxYUNkNGJ6Sm96RFptL2FCSytFb3pMdytYaE5CaVl3SGYwc2lPdTFYUGtHL3pLd3ZxWUtjZlN3REVjSC9vVWUwN2VzL1dROHJJeWcyRE9Yajh0amtaZHVEQi9iOGh6RGxsTU1PQ1M1QkVuZDUzNGY4dGkzVVpjNGtNczN4THlhZk1Tc0poZEc4WFBxak5rNXRBZ08yNWZlS0NoblZkRGovSjBGTWtPc1UveE1CdjB3RmhZZUVHZlZIMTNmdURVMHlERkxhNGZjN1JuV0hCZnVURlYydEVtTndhZGM3YWMzVVkyamZCbDdIVDM2ZmUzNGlRTzVtTkNGRkJXMDdLalBncWhPTFUwMXZaOFB1ZVoySkNsRlpOOGprVXM2OXVrYTllUHA2K0VmTDRBRjUrTnl3U2Jpckh0Y0I4TWwvZ2t3QUVqa0s2NEtqSFBlQUFBQUFFbEZUa1N1UW1DQyJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTA5LTI2IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiRmVpdGlhbiBCaW9QYXNzIEZJRE8yIFBsdXMgQXV0aGVudGljYXRvciIsImNlcnRpZmljYXRlTnVtYmVyIjoiVTJGMTAwMDIwMjQwOTI2MDA1IiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMDktMjYiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MX1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNC0xMS0yMCJ9LHsiYWFndWlkIjoiMDkyMjc3ZTUtODQzNy00NmI1LWI5MTEtZWE2NGIyOTRhY2I3IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiIwOTIyNzdlNS04NDM3LTQ2YjUtYjkxMS1lYTY0YjI5NGFjYjciLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiVGFnbGlvIENUQVAyLjEgQ1MifSwiZGVzY3JpcHRpb24iOiJUYWdsaW8gQ1RBUDIuMSBDUyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyMzA4LCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX0seyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjowLCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MTAsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6MCwiYmxvY2tTbG93ZG93biI6MH19LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNEekNDQWJhZ0F3SUJBZ0lJTkw3Yzc2RG0wKzh3Q2dZSUtvWkl6ajBFQXdJd1JERUxNQWtHQTFVRUJoTUNWVk14RXpBUkJnTlZCQW9UQ2xSaFoyeHBieUJNVEVNeElEQWVCZ05WQkFNVEYxUmhaMnhwYnlCR1NVUlBJRkp2YjNRZ1EwRWdSVU5ETUNBWERUSTBNRFl5T0RBd01EQXdNRm9ZRHpJd05UUXdOakkzTWpNMU9UVTVXakJFTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNoTUtWR0ZuYkdsdklFeE1RekVnTUI0R0ExVUVBeE1YVkdGbmJHbHZJRVpKUkU4Z1VtOXZkQ0JEUVNCRlEwTXdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUzQxVTg4ZzhpdUg4VG1vL2Y0aGZBdnl1NTllTDhnQktoYmJZU0ZlSWpySWhtclpucVl1MmFrb1FiRytHcFNNa3hYa1RVZHJscjdLcXMvbW9UTmtEbVZvNEdQTUlHTU1Bd0dBMVVkRXdRRk1BTUJBZjh3SFFZRFZSME9CQllFRkF3SGRZaFIvVS9USTZGTzlaTWJtbnJVSW13eU1GMEdBMVVkSXdSV01GU2hTS1JHTUVReEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUtFd3BVWVdkc2FXOGdURXhETVNBd0hnWURWUVFERXhkVVlXZHNhVzhnUmtsRVR5QlNiMjkwSUVOQklFVkRRNElJTkw3Yzc2RG0wKzh3Q2dZSUtvWkl6ajBFQXdJRFJ3QXdSQUlnQ2xKQzJpWkZoVnMzcHA2bWtDUjJaWFFuWlVMOEtFREhkZjVZWnVybXYrMENJSDRFdXVEUkE0VlhDaHR6SXZuZ2xqSFdqZ0kxdlJFN0dKamFwNzd4b1p4RiIsIk1JSUNDakNDQWJDZ0F3SUJBZ0lJWFFwS2kvNExmc2t3Q2dZSUtvWkl6ajBFQXdJd1FqRUxNQWtHQTFVRUJoTUNWVk14RXpBUkJnTlZCQW9UQ2xSaFoyeHBieUJNVEVNeEhqQWNCZ05WQkFNVEZWUkZVMVFnUmtsRVR5QlNiMjkwSUVOQklFVkRRekFnRncweU5EQTJNamd3TURBd01EQmFHQTh5TURVME1EWXlOekl6TlRrMU9Wb3dRakVMTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFvVENsUmhaMnhwYnlCTVRFTXhIakFjQmdOVkJBTVRGVlJGVTFRZ1JrbEVUeUJTYjI5MElFTkJJRVZEUXpCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQkZUbHAzRHRYZC9yNm9SYmpTM2lyazM2NThOUS92RFRYTDZzWVh6QzJhMjRqSE8xelBmTWswRG1tZVNPRm1TK1czWTJqWk1jVXVpYSswZGZ5L3VBOG5HamdZMHdnWW93REFZRFZSMFRCQVV3QXdFQi96QWRCZ05WSFE0RUZnUVVGc3N4aS9jU08wemx5NXVwSjFPSmVhd1lXR3N3V3dZRFZSMGpCRlF3VXFGR3BFUXdRakVMTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFvVENsUmhaMnhwYnlCTVRFTXhIakFjQmdOVkJBTVRGVlJGVTFRZ1JrbEVUeUJTYjI5MElFTkJJRVZEUTRJSVhRcEtpLzRMZnNrd0NnWUlLb1pJemowRUF3SURTQUF3UlFJZ1VYeDh1YnJCK1lXOFJMelRPUjZDL2xLL2gycjJQQlNGeU9RZzV5OUJxY1lDSVFEMzhGN3VCRDVKMU8yUnVmUWhPbDkxb0Z0Y1QzS0pFa1hEUFM5WlVDQnl0Zz09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUUwQUFBQWdDQVlBQUFCWFkvVTBBQUFBQ1hCSVdYTUFBQUt1QUFBQ3JnRnQ3RElhQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUIzZDNjdWFXNXJjMk5oY0dVdWIzSm5tKzQ4R2dBQUNITkpSRUZVYUlIdG1YOXdYRlVWeHovZjl6YWJMb0ZvQVNsTjZmQkRCZ3NJZ3dxSS9GUm5CRVFGeHhHVVgxVklrNWMwcFVOVE84TWd5WFlqSXo4c2RiRE5qOTNLcEZRSElTMDYxVm9LaFRJTzBBNGc2S0FWS09XSGhWYnFsRFNrUDBLeTJYZjg0NzJ0NjJaMzJaQUdScWJmbVoxOTk1eDd6em4zdS9lZGMrOWRtUmtITURvNEgzVUEvNDg0UU5vSHdBSFNQZ0FPa1BZQjhMRWxyYW1wYWFybmVaOGZEOXVSVXNxRWRMMExUOXhpOXNyK2NOYlEwSENKbVZXVjZsTlRVL083ZUR3K1BCWS96YzNOc2VIaDRjMEVpNklDb0w2Ky9temdUa2t0eVdUeThiSFlMMGthc0NJRHF4UFNzeFZ3NTgxbS94cUxNelA3NC92MTJiSmxTeld3YXl4Kyt2djdZNjdyUm9GOTVFdXFCYzRCTGdUR2o3UzRXWDlDdWhSNE9BMDNKcVNzYWc4d0FHd0NOampRM1dLMnNReC9xWnpuczRCVEpUMW5acytGc3FGZHUzYnRIZDBVeW9PazNuQlArdXBZYlpVa2JibmtBc2RYdy9uOWNBOXdaYWlxQ2orSEEyZjcwSnlRN2dYbXhzMTZpOWxMSnBOZTl0bnp2QVhBcVdhMktwbE16aC9qUE40WGUvZnVuUitMeFZiWDFOVDhhYXkyaXBLMlNLcnNoUlhBSitlWW5RZGMxU1k5YlhBWDRPWjFGL0JENEt5RWRGSGNiTXRZQTl2ZldMWnMyUjdHK0ZwbVVaUzBYdmdsOEUxZ1h4NXJOYnU3VGRwa3dhcWJYR0RZTkdETkF1bU1INW50R1cwd3RiVzFoN2l1ZXpZd1dkSVJrdnA5MzErWFNxVTI1ZlpMSkJLUnJWdTNmbG5TTktCQzBvdSs3dzhEU05vSURPYmJibXBxT2ppVHlaeml1dTViN2UzdGIyYmxzMmJOT214b2FPZ3l4M0UrNWZ2KzlrZ2tzcktqbzJObnFUZ0xiamtTMGxYQU5XRnpZcTZ1MWV5aFNqZ1o2QVlLSFZ4UDNBTS9MK1cwRU9ycjZ5K0tSQ0wvbHJSR1VqZHdoNWwxU3RyWTBOQndTYmFmNTNtVHQyM2I5cnlrdGNBaVlLR1pQU1JwYlNqN1FTSDc2WFM2M2N6V0R3OFBYNWFWTlRZMm5wTk9wemRKdXNmTWJwZlVuY2xrWHFxdnJ6K2hWS3dqU0V0SkZjRHRPYUlKWVc3Ymg1dk1kc2JOcmhkY0JMeGV3TzcxdDBvbmxuSThJaERIcVFKNnpXeUZtUzB5czRYQW0wREV6R2JsZEYwTW5HSm1Ud0hIdTY0N0RYZ0J5QUFKeDNIdUwyTC9rTnkyNTNrSCtiNy9BSEFvOEFCQmV0a0lIQ0hwanBLeDVndmVob3VCcWJteTErR2dRb05iemRZZUNpY0NIckE1UitWbW9MR1U0M3owOXZhdVRDYVRVMUtwMU9XcFZHcDJLcFdhSyttR1VIMDB3UFRwMDZ1QVN3RWN4N2t4bVV5KzJ0SFI4YktrdXdEWHpBN3A3T3g4b3h4L1puWXBNQVhZV2xOVGMwMHltYnhYMHB4UWZYRnpjM09zMk5nUnBGbXdqOG1YN2V1WGtPNXJrMzY4U0tvRXVNRnNNRzZXT2luSVo5OEFsaFBrbEsrVkUzd1dQVDA5bVh4WkpwUFpIajVHQWFxcXFvNGx5TU0yT0RqNDkydy9TVnNBSE1lNW9GeC9rczRQSHgvUGJxWmQxOTBReWliczNyMTdhdUdSaFF2QmlOZEs0T2MwVHpPNHNoZW1KNlRhdU5tVEFKZWJaWURWd09vRlV0VUFmTGJjQ2VTaXJxNXVFbkN5NjdxdTR6alJYRjBtazRrbzJDdjZTNWN1SGV6dTdzN0tENWFFamU1eThOTUFrdllWaGZiMjl0MmU1dzBBTWNkeERpczJzQkJwSTQ0NUEwRyt5Q0s3d3owQmVQaW4wbkUzbTIzUDdSOVd6cWNUVWdRNEh6amRnUTNUWUgxSWJrRjRuamZEY1p3T29LTFEvQ1c5UlZCODNCa3paa3dCM2dybHA0WmRDdVhYZ3BCVUhmcDROMCsxQjRqNXZqOHEwdnJ5MmdZTTViVFQ0ZmRtUVVNK1ljc2w5eC9CYTNvNVFYNjhEL2hKaTltT1VwUHdQTzl3NEJjRVo4VWs4RnN6TzB0U0lveUJaREs1dy9POFo0QXZPbzdUVmx0YmUwczBHajBLeUJhSzl6Mm1aZUg3dmhPdTJuU2V5Z0R5VjNrdUNwSDJONExKWnZGdTNDejNBTDBTV0FwMHRKcTlseFhlSmgyV2hoa1dGSUNqQ2ZMYXQrTm1hOHFaaEpsZElDa0diTjI1YzJkVFQwOVBwcTZ1cmo4a2JkL3E5SDIveVhHY1I0RHJJcEhJZGI3dlo4ZXY3T3ZyKzNVNXZnQWN4eGswTXdwY0lId2kvQzU2L2kxRTJocGdYazc3blZ4bDNLd2x0NTJRcW9HNXdCd2d0NnkzbDBzWWdLVEpBR2IyU3JZb1NNb1dvSDJrdWE0Yk5iT0lwQjR6Mnl4cEFOaVFTcVhXalRLbjdRaDlWR2NGczJmUHJpWXNPbzdqRkQzVmpDQnRQancrSDE3a3Z3WGh0VUlEdzlld0NXZ0Y4dC8vQWVCblpZY2ZJQjBHT3lFcmNGMDNHcTZrUVlDWk0yZE9OTE5Wd01HU21ydTZ1clptKzNaMWRZM0ttWmx0RHI4L2w1VU5EZzZlRno3MlRabzBxZWpCZmdScFptWnQwbHdMS2lIQW4vUDdKS1RUQ0c0c3ppaGlkMkhjN08weTQ4LzZmU21zZ0Yvd1BPL2NnWUdCdjhSaXNUTkQ5WHNBNlhSNnF1TTRod0w0dnYrRzUzbWJnVmVBdnpxT3M2cXpzL09aVWZoN1ROSTg0Tnk2dXJxdm10bXJqdU8wU2tMUzhsSjNlZ1dQVWExbUR3SHJBQVRQWnVXUzFCWTRlcGJpaEswK0NlTGxCcDlGWDEvZms4RHpCSVhnaVZnc3RodTRJL1RiQzdCa3laSVh6T3dTZ253ajREUEF0NEFXMy9lZjlqenY3bkw5VFpreVpTMndIcWgwSE9jeDEzWGZrSFFtOEZvbWsya3BOYmJvZGJmZ0VRQTNYR2tKcVhvK1BHaHdKOFVQK284QTN5dTFyY2pDOS8zVmttNENmZy9CNXJhaW91SkNTVzNBZzVKV21kazl3TlhSYVBTN0VQeG93TFZBbGFTcmEycHFvcGxNNWhnem0wZXdsNXpkMk5oNFRDYVQyUnZhbnBQajcxZWg3RkdBZUR6dVYxWldmdDNNNXBuWk1qTmJLYW5GZGQzVGx5eFo4ajg3Z2hIY0ZNdWRiWkpua0lpYkhabVFqaUo0WFU4cFltZVg0TFlqWVVHOVdYNEozMitvcjYvL3ZxVGZBUGNuazhrcmMzV2U1NzBNbk9BNHpybWRuWjFQalZjTVVPSnF5SUtLOVdqWTNBSGNTbkJWZEJMQnpVY2Z3UUYzSGJDaTFXejNlQVlLSU9rckFHYTJMVmZ1ZWQ0MGdtMk91YTc3MG5qSFVlcm10bHJCbm94NHNCL3JDVDhmSmJZQlNHcHNhR2lZWUdiL0pMaGN1QmFvQkpZdlhyejRuVklHOWdkS2tSWXgrTU40QnpBYURBME4zUjJOUnI5RGNFMCtNMGRsa25xaTBXamRoeEZIMFp4MnEzVHNMV1psbitVK0xGeHh4Ulh1eElrVHZ5VHBPRE03RXRndWFYMVhWOWQrK1p1eEhCUWw3UUNLNDJQN0QvdDQ0aitJd1QvMVRNa3o3Z0FBQUFCSlJVNUVya0pnZ2c9PSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIkZJRE9fMl8xIiwiRklET18yXzAiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImNyZWRCbG9iIiwibGFyZ2VCbG9iS2V5IiwiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiMDkyMjc3ZTU4NDM3NDZiNWI5MTFlYTY0YjI5NGFjYjciLCJvcHRpb25zIjp7InJrIjp0cnVlLCJjbGllbnRQaW4iOnRydWUsInVwIjpmYWxzZSwicGluVXZBdXRoVG9rZW4iOmZhbHNlLCJsYXJnZUJsb2JzIjp0cnVlLCJhdXRobnJDZmciOmZhbHNlLCJjcmVkTWdtdCI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjpmYWxzZX0sIm1heE1zZ1NpemUiOjEwMjQsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heFNlcmlhbGl6ZWRMYXJnZUJsb2JBcnJheSI6MjA0OCwiZmlybXdhcmVWZXJzaW9uIjoyMzA4LCJtYXhDcmVkQmxvYkxlbmd0aCI6MTI4fX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMDYtMTQiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MjMwOCwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJUYWdsaW8gQ1RBUDIuMSBDb25zdW1lciBBdXRoZW50aWNhdG9yIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNDA2MTQwMDIiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0wNi0xNCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyMzA4fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI0LTA4LTA4In0seyJhYWd1aWQiOiJjYTg3Y2I3MC00YzFiLTQ1NzktYThlOC00ZWZkZDdjMDA3ZTAiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6ImNhODdjYjcwLTRjMWItNDU3OS1hOGU4LTRlZmRkN2MwMDdlMCIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJGSURPIEFsbGlhbmNlIFRydVUgU2FtcGxlIEZJRE8yIEF1dGhlbnRpY2F0b3IifSwiZGVzY3JpcHRpb24iOiJGSURPIEFsbGlhbmNlIFRydVUgU2FtcGxlIEZJRE8yIEF1dGhlbnRpY2F0b3IiLCJhbHRlcm5hdGl2ZURlc2NyaXB0aW9ucyI6eyJydS1SVSI6ItCf0YDQuNC80LXRgCBUcnVVIEZJRE8yINCw0YPRgtC10L3RgtC40YTQuNC60LDRgtC-0YDQsCDQvtGCIEZJRE8gQWxsaWFuY2UiLCJ6aC1DTiI6IkZJRE8gVHJ1VSBBbGxpYW5jZUZJRE8yIiwiZnItRlIiOiJFeGVtcGxlIFRydVUgRklETzIgYXV0aGVudGljYXRvciBkZSBGSURPIEFsbGlhbmNlIn0sImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIiwiYmFEZXNjIjp7InNlbGZBdHRlc3RlZEZSUiI6MC4wLCJzZWxmQXR0ZXN0ZWRGQVIiOjJFLTA2LCJpQVBBUlRocmVzaG9sZCI6MC4wLCJtYXhUZW1wbGF0ZXMiOjUsIm1heFJldHJpZXMiOjUsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjAsImJsb2NrU2xvd2Rvd24iOjB9fV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6WyJhbnkiXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURYekNDQWtlZ0F3SUJBZ0lMQkFBQUFBQUJJVmhUQ0tJd0RRWUpLb1pJaHZjTkFRRUxCUUF3VERFZ01CNEdBMVVFQ3hNWFIyeHZZbUZzVTJsbmJpQlNiMjkwSUVOQklDMGdVak14RXpBUkJnTlZCQW9UQ2tkc2IySmhiRk5wWjI0eEV6QVJCZ05WQkFNVENrZHNiMkpoYkZOcFoyNHdIaGNOTURrd016RTRNVEF3TURBd1doY05Namt3TXpFNE1UQXdNREF3V2pCTU1TQXdIZ1lEVlFRTEV4ZEhiRzlpWVd4VGFXZHVJRkp2YjNRZ1EwRWdMU0JTTXpFVE1CRUdBMVVFQ2hNS1IyeHZZbUZzVTJsbmJqRVRNQkVHQTFVRUF4TUtSMnh2WW1Gc1UybG5iakNDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNd2xkcEI1Qm5naUZ2WEFnN2FFeWlpZS9RVjJFY1d0aUhMOFJnSkR4N0tLblFSZkpNc3VTK0ZnZ2tiaFVxc01nVWR3Yk4xazBldjFMS01QZ2owTUs2NlgxN1lVaGhCNXV6c1RnSGVNQ09GSjBtcGlMeDllK3BabzM0a25sVGlmQnRjK3ljc21XUTF6M3JESTZTWU9neFhHNzF1TDBnUmd5a21tS1BacE8vYkx5Q2lSNVoyS1lWYzNySFFVM0hUZ091NXlMeTZjKzlDN3YvVTlBT0VHTStpQ0s2NVRwam9XYzR6ZFFRNGdPc0MwcDZIcHNrK1FMakpnNlZmTHVRU1NhR2psT0NaZ2RiS2ZkLytSRk8rdUlFbjhyVUFWU05FQ01XRVpYcmlYNzYxM3QyU2Flcjlmd1JQdm0yTDdEV3pnVkdrV3FRUGFidW1EazNGMnhtbUZnaGNDQXdFQUFhTkNNRUF3RGdZRFZSMFBBUUgvQkFRREFnRUdNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdIUVlEVlIwT0JCWUVGSS93UzMrb0xrVWtyazFRK21PYWk5N2kzUnU4TUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFCTFFOdkFVS3IreUF6djk1WlVSVW03bGdBSlFheXpFNGFHS0Fjenltdm1kTG02QUMydXBBclQ5Zkh4RDRxL2MyZEtnOGRFZTNqZ3IyNXNid01wampNNVJjT081TGxYYktyOEVwYnNVOFl0NUNSc3VaUmorOXhUYUdkV1BvTzR6elVodzhsby9zN2F3bE9xekpDSzZmQmRSb3lWM1hwWUtCb3ZIZDdOQURkQmorMUViZGRUS0pkKzgyY0VIaFhYaXBhMDA5NU1KNlJNRzNOemR2UVhtY0lmZWc3akxRaXRDaHdzL3p5clZRNFBrWDQyNjhOWFNiN2hMaTE4WUl2RFFWRVRJNTNPOXpKcmxBR29tZWNzTXg4Nk95WFNoa0RPT3l5R2VNbGhMeFM2N3R0VmI5K0U3Z1VKVGIwbzJITE8wMkpRWlI3cmtwZURNZG16dGNwSFdEOWYiLCJNSUlDU3pDQ0FmS2dBd0lCQWdJVVczWEs4eXl3YkFXbGlnbGl4SUY2M2R2cVl5OHdDZ1lJS29aSXpqMEVBd0l3ZkRFTE1Ba0dBMVVFQmhNQ1ZWTXhFVEFQQmdOVkJBZ01DRU52Ykc5eVlXUnZNUTh3RFFZRFZRUUhEQVpFWlc1MlpYSXhFekFSQmdOVkJBb01DbFJ5ZFZVc0lFbHVZeTR4SWpBZ0JnTlZCQXNNR1VGMWRHaGxiblJwWTJGMGIzSWdRWFIwWlhOMFlYUnBiMjR4RURBT0JnTlZCQU1NQjNSeWRYVXVZV2t3SUJjTk1qTXhNVEF6TWpBek5qVXhXaGdQTWpBMU16RXdNall5TURNMk5URmFNSHd4Q3pBSkJnTlZCQVlUQWxWVE1SRXdEd1lEVlFRSURBaERiMnh2Y21Ga2J6RVBNQTBHQTFVRUJ3d0dSR1Z1ZG1WeU1STXdFUVlEVlFRS0RBcFVjblZWTENCSmJtTXVNU0l3SUFZRFZRUUxEQmxCZFhSb1pXNTBhV05oZEc5eUlFRjBkR1Z6ZEdGMGFXOXVNUkF3RGdZRFZRUUREQWQwY25WMUxtRnBNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVOQXZidGNjTXI3ai9TUldtcUlFWlRSV05KeWo2bXNZcjVsR2VBZ2RTR3lDOU8wMzU2UkllY3VhVmlPcXowRHhnUzFmLzVLUGJacDF0MHlEMmZWUlg5Nk5RTUU0d0hRWURWUjBPQkJZRUZBNXRMMTBnODh0MnFYbFBsaElTSTJkSXpsYVZNQjhHQTFVZEl3UVlNQmFBRkE1dEwxMGc4OHQycVhsUGxoSVNJMmRJemxhVk1Bd0dBMVVkRXdFQi93UUNNQUF3Q2dZSUtvWkl6ajBFQXdJRFJ3QXdSQUlnWGZ1dmpzcCs0djVpR09xbmdVZ09nMWhtYmdGUEZNZ0lqeVd4Q0txdy9kOENJRmltTE5YTERJd0Erb0liUDF5T2ZxRTh4azZxNy80TFdPVllrUkFMb0JDMiJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFQTUFBQURDQ0FNQUFBQ3JEZ1FGQUFBQ2RsQk1WRVVBQUFEL0FBRC9nQUQvVlZYL2dFRC9aalAvZ0N2L2JVbi9nRUQvY1RuL2dEUC9kQzcvZ0VEL2Rqdi9iVGYvZHpQL2NFRC9lRHovY1RueWVUYnljMER6ZVQzemREcjBlamYwZFRYMWVqMzFkanYyY1RuMmRqZjJjajczZHp6M2N6cjNlRGo0ZUR6NGRUcjRlRG40ZFRmNGVUejRkanY1ZVRuNWRqajVjejM1ZHp2NWR6bjVkRGY2ZHp6NmRUcjZlRG42ZFRqNmVEcjZkam4yZER6MmRqdjJkRHIyZHpuM2R6ejNkVHYzZHpyM2RUbjNlRHozZGp2M2VEcjNkam40ZERqNGRUcjRkem40ZFRuNGR6djRkenI0ZFRuNGR6ejRkanY1ZGpuNWRqdjVkVHI1ZFRuNWRUdjVkenI1ZHpuM2RqdjNkanYzZFRyM2RqcjNkVG4zZGp2M2RUdjNkenI0ZGpyNGR6bjRkanY0ZGpyNGR6bjRkanY0ZFRyNGRUbjRkam40ZGpyNGR6bjRkanY1ZGpyNWR6bjVkVHI1ZGpuNWRqcjNkanIzZHpuM2RqdjNkanIzZHpyM2RUdjRkanI0ZFRyNGRqbjRkVHY0ZGpyNGRqcjRkenI0ZGpyNGR6cjRkVHY0ZGpyNGRqcjRkanI0ZGpuNWR6cjVkanI1ZHpyNWRUdjVkanIzZGpyM2RUdjNkanIzZGpyM2RqbjRkenY0ZGpyNGR6cjRkenY0ZGpyNGRUcjRkanI0ZGpyNGRqcjRkanY0ZHpyNGR6djRkanI0ZFRyNGRqcjRkVG40ZGpyNGRqcjRkanI0ZGp2NWRqcjVkanI1ZGpyNWR6bjNkanIzZFRyM2RqcjRkanI0ZGpyNGRqcjRkanY0ZGpyNGR6bjRkanI0ZFRyNGRqcjRkanI0ZGpyNGRqcjRkanI0ZGpyNGRqbjRkanI0ZGpyNGRqcjRkanI0ZGpyNGR6cjRkanI0ZGpyNGRqdjRkanI0ZGpyNGRqcjRkanI1ZGpyM2RqcjRkanI0ZGpyNGRqcjRkenI0ZGpyNGRqcjRkam40ZGpyNGRqcjRkanI0ZGpyNGRqcjRkanI0ZGpyNGRqcjRkanI0ZGpyNGRqci8vLzhVQmJuYUFBQUEwSFJTVGxNQUFRSURCQVVHQndnSkNnc01EUTRQRUJFU0V4UVZGaGNZR1JvYkhCMGVIeUFpSXlRbEppY29LU29yTFM0dk1ERXlOVFkzT0RrNlBEMCtQMEJCUWtORVJrZElTVXRNVFU1UVVsTlZWMWhhVzE5Z1lXSmpaR1ZtWjJocWEyeHRiM0J6ZEhWM2VIeDlmNENCZ29TRmg0aUppb3VNalpDUmtwU1ZtWnFjblo2Zm9hS2twYWFucWFxcnJLNnZzTE8wdGJlNXU3eTl2ci9Bd2NMRXhjYkh5TW5LeTg3UDBOSFMxZGJYMk5uYTI5emQzdC9nNGVMajVPWG01K2pwNnV2czdlN3Y4UEh5OC9UMTl2ZjQrZnI3L1AzK0NQVy9KQUFBQUFGaVMwZEUwWG5SL3dvQUFBZHRTVVJCVkhqYTNkejVXeFZsRk1EeGMxRmN3TVFDRlN0S1c5VXlMYlZVTEVvTk10bzNDbWlsZlVGRVcyamZ2TkNlNVZJQjNyVFNMS1hOTWdweHBRUXZYditrd3NkNnIzcnZ6THp2ZTg1NXozdlBiL0pjN3N3WGNENHpjMmNHSU5OTWl4L0poVms5RTNSbXpqcnZpenZLUVhjcU5ubGR2S1U2QnZxVFY3M2QyK0pmYW9hQjJlVFhkSHRadkt0aEZKaFBZY00rNzRyN0dvdkFia29hRDNwVmZLaWxGT3puckpaQmI0b1B4ODhCblBHR2EwMlFjNERyem5MQUhmRmNtNEVjeG5WWFRvSWNQQ1BFY20wSHNvOWMyNFBzRzljNElQdkVkU3ArTG5DTUlLNVJRUTZldVRLNDdsd0luRlB4VlU2Q0xKdHJLcERsY2swSmN2Q01jY1ExTmNqeXVPWUFXUmJYWENBTDRwb1I1QkN1MStjbXlBSzQ1Z2ZaTmRkdVFIYkp0VHVRWFhIdEZ1UXdydnRKUUo0RWtnZWZheGtnczNJdEJ1VGdtZCtPVnR3K24ySUZIeWduZUZNa3JyK2xBSGxPTFpUdW9manJ3ZUI2Ujgxd2l2OTUrODRBcUVQOFlBdVI2MTRLa0llMnNMVkR2NUoyb3NNekc2NzdHc2ZocjFEeDBJRnY0dWplM0VXSHFOUTM1Wm9FNU1LR3ZmKytkZkxZZitRbXVyMDdFNjVKUU02ditmM29teTg3OXUrQ0xzSzkrT202WEsrZVJiRkpQWFk1ME05ai92dlNJdEtqTmEyamE1SWpaUFU1Y3FYNm92cGRkRGpsbWdaazlRSEVxclF2bCs1Sis5dTZ4QlhYUkNDckJRelJyS2FPNURvVUxhNTdHMGJqTDdic3VHMW83ZkcvaUhieXM2bkJYTk9CckNaeHdpYjZLTkxFQituWnVTWUVXVTN5cEgzc0pvNlRNWm01SmdWWnpiS1RYbFBReFhMU0xRUFhwQ0NyVVRTcldYVHlMMkJ6TmYzSjhBMjBJS3VwelBUQ1REdE1IUXRvdWFZQmVXMkdrbFVaWDVxT05BL1hKQ0JQamFjeVpCeFBjMmFrR2JobUFEa2J6V2svL3M3TWt2U3ZISSsvY2tXM0VXZzRmbVVXRFR2enNuM0xDVWo3Y1U0OU84aEJOS3RaN3QxbkowRWdxMmtLK0w2Q0gvejZqQ3dRNUdDYTFTd09PZ29nNFpvTzVCQ2ExYlFHSHZ1UWNFMEVzcHA0eUxkblJwcVdheEtRdzJsV1V4OXltRXZDTlFISWF1ckNOd2FoSHphNXYxWXA2eEZ5cGtsRTJQUm1SVm9lMTlsQmprWnpGS1JsY1IwRWNqU2FveUdkWnA1anJpUGV3UnBNYzBTa2hYQmRzVEhhU2xaR2ZjUFdpS2VqblhFOWUyM0VOWXhIZnNzd3BCMXpIUWF5RHMzUmtVN25lb280a0hWbzFrRmF6VURMUkZrZzY5R3NoWFE2MTJNRmdheExzeDdTYW5wWXVJNEdzaTdOdWtoemNxMzlTSW1vTkdzanpjWjFWSkFOYU5aSG1vWHJ5Q0NiMEd5Q05EblgwVUUybzlrRWFWcXV5NHd1bTYwejIyZ1lYYmFKelhXeDJkMU1DY05OcWhiU2FnNGdjcTBIc2puTnBrampjNjBMc2puTjVrampjaDJyM21hOCtESG1pMTE4eEhpc3VkWUgyWXBtTlcwMjE1dmJjRDE3amNXU1c2MSsySlAyV0N6NnlPb1pqQ0RiMHF6bVhxdUxzTTI0THJPOGo2WGVkcy9lOHQ0S2ZhNkxiVzh2VGxodlBpOCtaTGNHbWx5YmdveEJzNXBtNnhzcnVxT3Z4VXo3K3crYkVYWU16SkgrZjVaR1h0aFM2MlhaMEl5Q3RJUG1LcHlkM2phUG1sdHhraTJSWm0yMnBSa0xhYzdtZXF4a2E2VFptaE9JSnlJdGtlWnFUcUxlQmRuc1JmTnkxRE0wZGtnek5lUFFqSVEwVTNNVklFK2IrT1pXN0dRcnBGbWE4V2hHUVpxbHVSNC8yUVpwanVZRXlXZUU1a2d6TkNlSkhtL1JMTGg1T1UyeU9kTDB6ZGcwMnlOTjMxd0ZaTk1tdExtVkx0a1VhZXBtQ3BwdGthWnVycWRNTmtTYXVEbEJmUG1PRWRLMHpZUGtUNTVhSWE2NW1UclpDR25TWmpxYXJaQW1iYTRDaG1rVDFkekdrV3lBTkdFekxjMXE2Z1ExMS9Ja1E5NFhZcG8zc04wSW8zdmhHRmx6a3ZIV2lFWWh6Yy93SmNQbzdTS2FmeXhrYklhclJUUXZBZFo1VTBEekc3ekpVTkxqdkxsM0FuTXozT0c4K1hidVpJaDk2cmg1dllNSHpaOS8wR256d0ZSd01JODdiWDdNUlRLTTJPS3crVHRIOTV6UFR6bHJUbDBKanVabFo4MHZ1VXFHMC81dzFOeFQ0cXdaYm5iVWZCTTRuQStjTkgvc01oa205emxvL3R2eGszQWVkdERjNERZWmhtOWliLzRtMzNFelhEYkkzSHo0Y25BK0x6QTNQKzgrR2NiK3l0cThjNXlBWnJpZXRYa3BpSmozR0pzL2xKRU1aZnZabXZzbUMybUcrOW1hNzVPU0RIa2RUTTFmQ25yRWFNZ1ZGMWpOZzdOQTBLeGdhVzZXbEJ4eXhRVlNNOGRWRkRxem1LRzVFb1JObkx4NWxiUmtLTjFOM014MUZZWE8zRVBjZkxlOFpNajduTFE1KzlQaFhjNzBBY0xtNUF3UU9VOFROajhsTXhsR2JpVnIzalphYURPVXA2aWFLMERzdkU3VS9KcmNaQ2orazZSNTF3VEJ6WEFyU2ZNdGtwTWg5Z2xCODdxWTZHWTQ3eUI2Yy8rRklId2VSVzkrUkhveWpOaU0zTHgxcFBobXVDS0YycHhhQ0I3TWk2ak5MVDRrUTlGdmlNM2RwM3JSRERjaU50OEFuc3o3YU0wZitaSU1aeDlBYXY1cmlqZk44QkJTODRQK0pNUHdqU2pOWCtkNzFBeVhEaUkwSDU0TFhzMXpDTTNQK3BVTXAreXdidDVaNUZrekxMRnV2ZzY4bTNjdG05L3hMeGttN2JWcTNuK21oODFwejdnd2FhNzNNVG50R1JjR3pZbGhYamFyMjJmMW01TXp3ZE5wTW01ZTVtc3lGSFFaTnY5VTZHMHpYR1BZZkMxNFBHOGJOYi9sY3pKTTNHM1F2UGQwcjV2aExvUG1PLzFPaHRnYTdlYlBZcDQzd3dYOW1zMEQwOEQ3ZVZLeitRbi9rMkhrRnEzbTcwZmxRRE1zU0drMHA2NkNuSmhYTlpwZnlZMWtLSjRYK2FYemloblc1eDlWMkJGNjRuNWYzQUFBQUFCSlJVNUVya0pnZ2c9PSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiJjYTg3Y2I3MDRjMWI0NTc5YThlODRlZmRkN2MwMDdlMCIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOnRydWUsInVwIjp0cnVlLCJ1diI6dHJ1ZX0sIm1heE1zZ1NpemUiOjEyMDAsInBpblV2QXV0aFByb3RvY29scyI6WzFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjE2LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjEyOCwidHJhbnNwb3J0cyI6WyJ1c2IiLCJuZmMiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotMjU3fV0sImZpcm13YXJlVmVyc2lvbiI6MX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMy0xMC0wNiJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjMtMTAtMDYifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyIwODNkNGRkNzgxNGM4OWY1ZTNlZjFiZDE1OTkwYWFjNWY5ZWE2MjkyIl0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjA4M2Q0ZGQ3ODE0Yzg5ZjVlM2VmMWJkMTU5OTBhYWM1ZjllYTYyOTIiXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlN0YXJTaWduIENoYXNlIEZJRE8gQ2FyZCJ9LCJkZXNjcmlwdGlvbiI6IlN0YXJTaWduIENoYXNlIEZJRE8gQ2FyZCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbInNvZnR3YXJlIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUJxVENDQVUrZ0F3SUJBZ0lCQWpBS0JnZ3Foa2pPUFFRREFqQkVNUXN3Q1FZRFZRUUdFd0pFUlRFYk1Ca0dBMVVFQ2d3U1J5dEVJR1ZRWVhsdFpXNTBjeUJIYldKSU1SZ3dGZ1lEVlFRRERBOUdTVVJQSUZKdmIzUWdRMEVnTURJd0hoY05NalV3TVRBeE1EQXdNREF3V2hjTk5EQXhNak14TURBd01EQXdXakJFTVFzd0NRWURWUVFHRXdKRVJURWJNQmtHQTFVRUNnd1NSeXRFSUdWUVlYbHRaVzUwY3lCSGJXSklNUmd3RmdZRFZRUUREQTlHU1VSUElGSnZiM1FnUTBFZ01ESXdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBVDhLd2NRTDhBazV4Zi9WU0h2OUREUEh1Szg5ZlRPV3p4UnBXWENBai81ZGJkM0VYVUhHNEtrRmJOdnB1c2VJNHFTTUhFbkV5akdUaXNmKzA2eEN0aGNvekl3TURBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUIwR0ExVWREZ1FXQkJTckNRUmxDdjJFL1M1dEExWng0Y1J3WGtIcTZEQUtCZ2dxaGtqT1BRUURBZ05JQURCRkFpQmdUV1c2QUtnSzdrWXFNcmkvSXp3ZnZONWFLN2hFVEZBOVRMekh1dHNsSEFJaEFNUExBNlhQWmdTbk5aNGVrS21HSm9OamVLWVhvRGY5NmI0bXp3elUveFo5Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUZBQUFBQlFDQUlBQUFBQmMyWDZBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBQUIzUkpUVVVINHdJVURDMEZvT1VISUFBQUNjZEpSRUZVZU5ydG0ydFFWTmNkd1AvL2MrOCtXSmFDUEJZMUNnc0NvcERNYUQ3NEFNVWtpbU9uV20zeUlaMXBxOWlwbzdaV25hWk5NMDFzbTdiVXFLaGtMTlpIZk15MEg0cXRWdTFVTXlNMDBjNG9kc3hNd1ZDTkdsT0Z3UUJyV0o1N1grZmZEK2Z1Z3dWV05zR21OUGNNSDliTHVXZlA3Ly8rbjROSVJQQkZHZ3krWU1NQ3RvQXRZQXZZQXJhQUxXQUwyQUsyZ0MxZ0M5Z0N0b0F0WUF1WUFNYnFCSWlJSHROeGtsaVdRaDlpZmd2RytMWDRGU0lDUUNBUTZPem9hR3Q3ME5IZTN0ZmZqd0NBR0NFV0hQd0JETVBJTDhpZk5Xc1docWNCQUNpcWV2clVLWVlNQmo4UHZodGVZZkRuSVhNQmlIalNsNUltWms3eVpIbzhIbzlzazhXZUVURUdzQnhiZUloNDY5YXQvVFUxOVJmcWVucDZZTVF0UkE5VjAxWlhWTXllUFR0S2dxcWl2UFNEbCt5eS9Oa1Zpd0NFS05TU2xwYjJsUlhMdjdOdTNhUkprK0kyNlpERzM3dDJiZlUzdnZuY29tZE8vS0cydDZkSFlvd2hDdmtSSXVDSUEwWVFzbmpNSXFhSnB6R1dHbkY5UkFyK2t5RSs5UGtPN1A5dDZiejUzOXU0OGNQYmQyQmtUMlRSbmtDRUFKenpmZnYyclZ6eDFiOWZ1dVIwT0J4Mk95S2FUa2lFaUN5MnFvbGltQlpoMEZrQXhIWVJBT0p4YnhTN0ZUOUJPYm9TRW9EbzdYUG5ubjNtMlpNblQrSUl6aXhIaVYrTWl0VnIvbFpmNzNBNElsOGJHQmpRTkUyU1pWbVM0RkhCVEZGVlhkZUc5MElLeTFkVlZmZ1VjWkZJS0VEWGRjTXduRTZudytFQUlzWVlBTWdTMjdwNXk5V0dxOXZmMlA0SUh5WWlWVlVydnJYNjBzV0xUcWVUaUFCUjFiUkVseXRuMnJTUytmUG56SjJUbFpPVDVIYWJIalN5bW9rb3daVVFPenIwQndiZXVYZ3hLU2tKUnhzWlFoSWpRQVFpdjk5LzU5YnR5NWN2WDdseTVhTzdkelZOczBrU1k4eU9lUHpvVVFTbzNQN3JhRU9qNE9DY0U5RzIxN2JsWm1YbmVYT21aWHZ6dkRsVEprMys3b2FOTFMwdHVxN1RXSXp1N3U2c0tWUEY0aE16UEYxZFhXT3lyS1pwZDI3ZC90cktWVm1UbjhqejVvaWZuS2xaeDQ4ZUl5SWVNUk1pWHp0Nytvd25MVjNRVHN2MnppZ29QSFA2ZEpSRXhoajRrMC9HQkRpMHQwTUhEbVpQbVJwQ21EcjVpZXROMXlObmh2TndZR0JnVWRtaWg1MmQ0b2tzeTZmUG5pa29MQlNHaldOVUpQVDA5QlRQTExKSkVpTDI5dlhkK09CbWNrcktaNnc2eE80NGtVZ2hGOTk5ZCszcU5jSnJpS2lnc1BETVg4N0t3VVFZanRKL3FqM1IxdG9xYUJWVlBYVGtTRUZob1hnTng3bzJFa3VPeWNLaFJWancwOEt5c3A5czI5WS9NQ0JrMGR6Y2ZPM2F0WkIwVEdCRlVTb3JLMjAybTNqNi9Bc3ZsQzRvSGI4RmM4WGFpcm56NWpGRWtXVi85dHEyNkR4Y1YxZlgzZE50MnJhaWZuL3paczc1T0tVVkxycDE2OWFlL241RWxDV3BxYW1wdWJsNUVQQTdkZlVPdXdNUUZVMWJ2bkpGVG02T3lHbVBZNFFNK1RIMUVtTDVCV1VMOC9QelJEQ3p5M0xkaFFzQWdJQW1WVU5EZzNBQlNaSTJyTi93LzlFSmJ0NnlSZGQxUkpSa3VlSEtGU0ZqQmdBK242K2xwVVhJSmkwdExTOC83L0dKLzc5azFVUUFNRy91UEpmTEpaNzg2OFlOWVYweUFIeHc4MllnRUVoSVNFQUFUNmJINFhERUZVSU5idmk3L0krY0w4ck12cjUrSUhNbU11enlkL1BSU0pZQUVOeHV0d2lyb3d6ZDZaNk1sTlFKdnZZT0Fualk2V3QvOExGbllxWU1BSGMvdkN0Q2xLSHJ1VG01a2lURkpjN1dsdGF5c2pLbnc0blJqb1JtR1JpTUZnYm5qREdiYks3dmNpWXNLeThuQW1RWWVvc0grNHFRcjR0cUlhQW94My8vdXdXbGNlUU9TWkxTMHpNNlArN2d4RFZOdTNmL3ZnbDgvLzU5eGhnQnFKcm05WHJqdGgvT3RZQWlJeE01SUlhZEJmdEJNNUlpb3FhcW85RXVJMUJWbFl6NEVnZGpMSE5pNXZ1TmpaSXNjNFA3T2p2TjVxR3ZyeThrUzd2ZEhuL1VaYUsvUXlJZWpzRFJNUmtZaXFLTlVVanJ3QkhSbEFBTmpyS0RPbGhDUUFLTWUyUG9jcmtJd0NBQ0lIR0FJWWUvaEFnQWpQalRMK2RjNTF3M0RCWU9kUWpCVXdEaUZMa0R6ZzJVWlFLemUrZWFob3h4enMwbUYyQm9PalNJQUVEakJvKy9qMVFVeFd5NUVZVk1aUUJ3dTkyaWo3YkpOcCt2STk1RkU5Mko1VXVYMnUxMklHSWpoeTRDSU02QnFMNitYbENwbXZyYzRpVU1NWGJPRjhKUU5EVXRQUzNlV04zYjI4Y1F4VkZrU25LS0NUeGw2aFRoZmt4aXJhMXRqendIaXhvWkdSbkhqaDhiYmZQUTIvTmtVYkVkbUtqWWQrMnVTazVKd1ZHYmFGekFobUcwdDdjRFl3akFHRXRMVHplQjgvTUxFQkdKbUNUZHYzZlBNQXhabHVQQ2ptTm01R2tsQVVOa1k5K2JtT28xZE4zZjFZV0lRT1N3Tzd3NVhyTzBuREdqTU5IbEVpZGE3ZTN0dmIyOVk5WEtmSTVWQnlLMnRMWStmUGhReENaUHBpYzFOUlVJR0FHNGs1S3l2VjVCMk9YM3Z4ZHNwc2JwQ0tucTdmUG5GVVVSL0VYRnhlR1lEd0FsQzBzNTU0Z29BK3pZc1hPOFY5SGkwR2QvVFkzRFprTUFWZFBtbGN3WEhzWEU1Y09TSlV2RkFTS1RwUGVibWk1ZHZEVGVtVStmK3JQZjM4MFk0MFRjTUo1YnZEaFlEUUFnWWtuSi9HeXYxekFNQUxEYjdidXJxc2E3VmRmVTFOaGxtWWk0WVpTWGwzdXpzNFZ0aHhQZ0x5c3JEU0lSTnE4Mk5Qemk5ZGVqd3NCNENWZWNhUDM2OWJkdTNtU01FWkhrY0x6eTZxdmhlNC9RN05JRnBVVkZSUWJuUkpUb2NyMTE2SzNxdlhzL1hRTDhIR2tCNE9mYmZucityK2VjVGlmblhOUDFSV1ZsdWROeWg3bHFrV1Y1VjFXVmFHZzQ1elpaMnY2cnlsZCsrS091cnE3eFlzYWRIUjNyMW43NzhJRUR0bUREbDV5Y1hMVjdkMlFsTitodWFXYlJ6RDF2VnF1YUtwamRibmR0YlczSm5MbUhEeDRNS01wWWJVc2NocHRmT2thMjQvZjdxM2JzWERDL3BLNnVMaUV4VWZTWW1xNGZQbm9rT1NVNTBpWEQ1OUlVdkxEWnRXUG4zajE3RWwwdWthaUlLQkFJSktkTWVPcXBKNHVMaXpNeU0xTW5wTW8yYWRqTzVoSGRJWkNpS0Q5KytXV0pNVVFNS01yT1hic2NUbWY4WGtORW9HdWF6K2Q3OE9CQlkxUGo5YWJyZmIyOXJvUUU4eEFQVVZYVkhUdDN2dmoxRnpubmtScU92aEFYMkRYN2Z2UEc5dTEybXkzWTRuQ1JzWFJkNTRiQmlZQnpDTjEzVXFoU3BLSFpQM1E5endDSWN5WkpkcnZkREppTUJRSUIwU2Z6SWNJTFhUalJTRTBTb3NTWXhGaUlKNlF6RGxEOVp2WHlGU3Npbnc4UEhCci91SHAxMDZaTi83NzdrVHN4VWZSb1p0RWJYRFdzRWh4bVIwZ1lGVXR3MEY4TURGSFpLQlNNRk5sN2lWMllDS0xaSk01NytucG5QLzMwM3VycTZkT25EM3QzT1R5d1dFTFg5ZW85MVg4OFVkdlcxb1lBa2lTWmY1TVFWaXdON3ZFajhJYkE0ZWdPYjJPa3dFRm1Ud0FZdnRNMmRGMlM1YWxaV1JWcjE2NnVXQk5UYWlNRFEvQUN0ZkdmalNkcWErdnFMdmg4UGwzVnpNdnhDQ01aWnQ5eHBoUWNlbXdkb3pHSW1HeXoyU1pQbnJ4czJaZFhQYjhxdjZEQVpyT0ZkajVzWE1EWVJVV1VWWFIyZHZxNy9JRkFBSUNHMzlsb0ZmcW9pNE1ZUit6aG5XR0MwNW1hbHBvU3VvNGJURGtzTTFyL004MEN0b0F0WUF2WUFyYUFMV0FMMkFLMmdDMWdDOWdDdG9BdFlBdllBcmFBTGVEL3FmRWZibU1jVkNwOGJHOEFBQUFBU1VWT1JLNUNZSUk9In0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI2LTA0LTE0In1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNi0wNC0xNCJ9LHsiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjJlZDA4NzRiNTJkOWQwNDM2MGJmMzk0MjhiODQwZDk1NjA0MDRmZmMiXSwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiMmVkMDg3NGI1MmQ5ZDA0MzYwYmYzOTQyOGI4NDBkOTU2MDQwNGZmYyJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiU3RhclNpZ24gS2V5IEZvYiJ9LCJkZXNjcmlwdGlvbiI6IlN0YXJTaWduIEtleSBGb2IiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoyfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwiLCJiYURlc2MiOnsic2VsZkF0dGVzdGVkRlJSIjowLjAsInNlbGZBdHRlc3RlZEZBUiI6MkUtMDYsImlBUEFSVGhyZXNob2xkIjowLjAsIm1heFRlbXBsYXRlcyI6MjAsIm1heFJldHJpZXMiOjUwLCJibG9ja1Nsb3dkb3duIjowfX1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbInNvZnR3YXJlIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsIm5mYyIsImJsdWV0b290aCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQnRqQ0NBVnVnQXdJQkFnSUJBVEFLQmdncWhrak9QUVFEQWpCS01Rc3dDUVlEVlFRR0V3SkVSVEVoTUI4R0ExVUVDZ3dZUnl0RUlFMXZZbWxzWlNCVFpXTjFjbWwwZVNCSGJXSklNUmd3RmdZRFZRUUREQTlHU1VSUElGSnZiM1FnUTBFZ01ERXdIaGNOTWpBeE1URXlNREF3TURBd1doY05OREF4TVRFeU1EQXdNREF3V2pCS01Rc3dDUVlEVlFRR0V3SkVSVEVoTUI4R0ExVUVDZ3dZUnl0RUlFMXZZbWxzWlNCVFpXTjFjbWwwZVNCSGJXSklNUmd3RmdZRFZRUUREQTlHU1VSUElGSnZiM1FnUTBFZ01ERXdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUXc2Y3krem5NeVE2cHRkNEpqcXZtYTRlOFJlK1pwcGI5MEdxS3ZzUkJuRjhXbU01eVpXSU9LalFnai84KzNqOWF2VytTeUFhLzFNYXl3UUQ2QjBnOWFvekl3TURBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUIwR0ExVWREZ1FXQkJTc2VwV3V1eG1EMG84ajFZMjc4YkxUR0NaTnZqQUtCZ2dxaGtqT1BRUURBZ05KQURCR0FpRUF1MzNTcDBFN0JFZEhvekVHQUNsTnNhMHlQQjZzRURvUTdXNGtpeTBEWjE0Q0lRQ0pMRFRKREFuV3hvMzF6enZyV3VJTnRCcXkwNDQrR2dGUDYrd2xxRzY2Tnc9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFGQUFBQUJRQ0FJQUFBQUJjMlg2QUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUFCM1JKVFVVSDR3SVVEQzBGb09VSElBQUFDY2RKUkVGVWVOcnRtMnRRVk5jZHdQLy9jKzgrV0phQ1BCWTFDZ3NDb3BETWFENzRBTVVraW1PbldtM3lJWjFwcTlpcG83WlduYVpOTTAxc203YlVxS2hrTE5aSGZNeTBINHF0VnUxVU15TTAwYzRvZHN4TXdWQ05HbE9Gd1FCcldKNTdYK2ZmRCtmdWd3VldOc0dtTlBjTUg5Ykx1V2ZQNy8vK240TklSUEJGR2d5K1lNTUN0b0F0WUF2WUFyYUFMV0FMMkFLMmdDMWdDOWdDdG9BdFlBdVlBTWJxQklpSUh0TnhrbGlXUWg5aWZndkcrTFg0RlNJQ1FDQVE2T3pvYUd0NzBOSGUzdGZmandDQUdDRVdIUHdCRE1QSUw4aWZOV3NXaHFjQkFDaXFldnJVS1lZTUJqOFB2aHRlWWZEbklYTUJpSGpTbDVJbVprN3laSG84SG85c2s4V2VFVEVHc0J4YmVJaDQ2OWF0L1RVMTlSZnFlbnA2WU1RdFJBOVYwMVpYVk15ZVBUdEtncXFpdlBTRGwreXkvTmtWaXdDRUtOU1NscGIybFJYTHY3TnUzYVJKaytJMjZaREczN3QyYmZVM3Z2bmNvbWRPL0tHMnQ2ZEhZb3doQ3ZrUkl1Q0lBMFlRc25qTUlxYUpwekdXR25GOVJBcitreUUrOVBrTzdQOXQ2Yno1Mzl1NDhjUGJkMkJrVDJUUm5rQ0VBSnp6ZmZ2MnJWengxYjlmdXVSME9CeDJPeUthVGtpRWlDeTJxb2xpbUJaaDBGa0F4SFlSQU9KeGJ4UzdGVDlCT2JvU0VvRG83WFBubm4zbTJaTW5UK0lJeml4SGlWK01pdFZyL2xaZjczQTRJbDhiR0JqUU5FMlNaVm1TNEZIQlRGRlZYZGVHOTBJS3kxZFZWZmdVY1pGSUtFRFhkY013bkU2bncrRUFJc1lZQU1nUzI3cDV5OVdHcTl2ZjJQNElIeVlpVlZVcnZyWDYwc1dMVHFlVGlBQlIxYlJFbHl0bjJyU1MrZlBuekoyVGxaT1Q1SGFiSGpTeW1va293WlVRT3pyMEJ3YmV1WGd4S1NrSlJ4c1pRaElqUUFRaXY5OS81OWJ0eTVjdlg3bHk1YU83ZHpWTnMwa1NZOHlPZVB6b1VRU28zUDdyYUVPajRPQ2NFOUcyMTdibFptWG5lWE9tWlh2enZEbFRKazMrN29hTkxTMHR1cTdUV0l6dTd1NnNLVlBGNGhNelBGMWRYV095cktacGQyN2QvdHJLVlZtVG44ano1b2lmbktsWng0OGVJeUllTVJNaVh6dDcrb3duTFYzUVRzdjJ6aWdvUEhQNmRKUkV4aGo0azAvR0JEaTB0ME1IRG1aUG1ScENtRHI1aWV0TjF5Tm5odk53WUdCZ1VkbWloNTJkNG9rc3k2ZlBuaWtvTEJTR2pXTlVKUFQwOUJUUExMSkpFaUwyOXZYZCtPQm1ja3JLWjZ3NnhPNDRrVWdoRjk5OWQrM3FOY0pyaUtpZ3NQRE1YODdLd1VRWWp0Si9xajNSMXRvcWFCVlZQWFRrU0VGaG9YZ054N28yRWt1T3ljS2hSVmp3MDhLeXNwOXMyOVkvTUNCazBkemNmTzNhdFpCMFRHQkZVU29ySzIwMm0zajYvQXN2bEM0b0hiOEZjOFhhaXJuejVqRkVrV1YvOXRxMjZEeGNWMWZYM2ROdDJyYWlmbi96WnM3NU9LVVZMcnAxNjlhZS9uNUVsQ1dwcWFtcHVibDVFUEE3ZGZVT3V3TVFGVTFidm5KRlRtNk95R21QWTRRTStUSDFFbUw1QldVTDgvUHpSREN6eTNMZGhRc0FnSUFtVlVORGczQUJTWkkyck4vdy85RUpidDZ5UmRkMVJKUmt1ZUhLRlNGakJnQStuNitscFVYSUppMHRMUzgvNy9HSi83OWsxVVFBTUcvdVBKZkxKWjc4NjhZTllWMHlBSHh3ODJZZ0VFaElTRUFBVDZiSDRYREVGVUlOYnZpNy9JK2NMOHJNdnI1K0lITW1NdXp5ZC9QUlNKWUFFTnh1dHdpcm93emQ2WjZNbE5RSnZ2WU9BbmpZNld0LzhMRm5ZcVlNQUhjL3ZDdENsS0hydVRtNWtpVEZKYzdXbHRheXNqS253NG5Sam9SbUdSaU1GZ2JuakRHYmJLN3ZjaVlzS3k4bkFtUVllb3NIKzRxUXI0dHFJYUFveDMvL3V3V2xjZVFPU1pMUzB6TTZQKzdneERWTnUzZi92Z2w4Ly81OXhoZ0JxSnJtOVhyanRoL090WUFpSXhNNUlJYWRCZnRCTTVJaW9xYXFvOUV1STFCVmxZejRFZ2RqTEhOaTV2dU5qWklzYzRQN09qdk41cUd2cnk4a1M3dmRIbi9VWmFLL1F5SWVqc0RSTVJrWWlxS05VVWpyd0JIUmxBQU5qcktET2xoQ1FBS01lMlBvY3JrSXdDQUNJSEdBSVllL2hBZ0FqUGpUTCtkYzUxdzNEQllPZFFqQlV3RGlGTGtEemcyVVpRS3plK2VhaG94eHpzMG1GMkJvT2pTSUFFRGpCbysvajFRVXhXeTVFWVZNWlFCd3U5MmlqN2JKTnArdkk5NUZFOTJKNVV1WDJ1MTJJR0lqaHk0Q0lNNkJxTDYrWGxDcG12cmM0aVVNTVhiT0Y4SlFORFV0UFMzZVdOM2IyOGNReFZGa1NuS0tDVHhsNmhUaGZreGlyYTF0anp3SGl4b1pHUm5Iamg4YmJmUFEyL05rVWJFZG1LallkKzJ1U2s1SndWR2JhRnpBaG1HMHQ3Y0RZd2pBR0V0TFR6ZUI4L01MRUJHSm1DVGR2M2ZQTUF4Wmx1UENqbU5tNUdrbEFVTmtZOStibU9vMWROM2YxWVdJUU9Td083dzVYck8wbkRHak1OSGxFaWRhN2UzdHZiMjlZOVhLZkk1VkJ5SzJ0TFkrZlBoUXhDWlBwaWMxTlJVSUdBRzRrNUt5dlY1QjJPWDN2eGRzcHNicENLbnE3ZlBuRlVVUi9FWEZ4ZUdZRHdBbEMwczU1NGdvQSt6WXNYTzhWOUhpMEdkL1RZM0Raa01BVmRQbWxjd1hIc1hFNWNPU0pVdkZBU0tUcFBlYm1pNWR2RFRlbVUrZityUGYzODBZNDBUY01KNWJ2RGhZRFFBZ1lrbkovR3l2MXpBTUFMRGI3YnVycXNhN1ZkZlUxTmhsbVlpNFlaU1hsM3V6czRWdGh4UGdMeXNyRFNJUk5xODJOUHppOWRlandzQjRDVmVjYVAzNjliZHUzbVNNRVpIa2NMenk2cXZoZTQvUTdOSUZwVVZGUlFiblJKVG9jcjExNkszcXZYcy9YUUw4SEdrQjRPZmJmbnIrcitlY1RpZm5YTlAxUldWbHVkTnloN2xxa1dWNVYxV1ZhR2c0NXpaWjJ2NnJ5bGQrK0tPdXJxN3hZc2FkSFIzcjFuNzc4SUVEdG1ERGw1eWNYTFY3ZDJRbE4raHVhV2JSekQxdlZxdWFLcGpkYm5kdGJXM0puTG1IRHg0TUtNcFliVXNjaHB0Zk9rYTI0L2Y3cTNic1hEQy9wSzZ1TGlFeFVmU1ltcTRmUG5va09TVTUwaVhENTlJVXZMRFp0V1BuM2oxN0VsMHVrYWlJS0JBSUpLZE1lT3FwSjR1TGl6TXlNMU1ucE1vMmFkak81aEhkSVpDaUtEOSsrV1dKTVVRTUtNck9YYnNjVG1mOFhrTkVvR3VheitkNzhPQkJZMVBqOWFicmZiMjlyb1FFOHhBUFVWWFZIVHQzdnZqMUZ6bm5rUnFPdmhBWDJEWDdmdlBHOXUxMm15M1k0bkNSc1hSZDU0YkJpWUJ6Q04xM1VxaFNwS0haUDNROXp3Q0ljeVpKZHJ2ZERKaU1CUUlCMFNmekljSUxYVGpSU0UwU29zU1l4RmlJSjZRekRsRDladlh5RlNzaW53OFBIQnIvdUhwMTA2Wk4vNzc3a1RzeFVmUm9adEViWERXc0VoeG1SMGdZRlV0dzBGOE1ERkhaS0JTTUZObDdpVjJZQ0tMWkpNNTcrbnBuUC8zMDN1cnE2ZE9uRDN0M09UeXdXRUxYOWVvOTFYODhVZHZXMW9ZQWtpU1pmNU1RVml3Tjd2RWo4SWJBNGVnT2IyT2t3RUZtVHdBWXZ0TTJkRjJTNWFsWldSVnIxNjZ1V0JOVGFpTURRL0FDdGZHZmpTZHFhK3ZxTHZoOFBsM1Z6TXZ4Q0NNWlp0OXhwaFFjZW13ZG96R0ltR3l6MlNaUG5yeHMyWmRYUGI4cXY2REFack9GZGo1c1hNRFlSVVdVVlhSMmR2cTcvSUZBQUlDRzM5bG9GZnFvaTRNWVIremhuV0dDMDVtYWxwb1N1bzRiVERrc00xci9NODBDdG9BdFlBdllBcmFBTFdBTDJBSzJnQzFnQzlnQ3RvQXRZQXZZQXJhQUxlRC9xZkVmYm1NY1ZDcDhiRzhBQUFBQVNVVk9SSzVDWUlJPSJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMS0xMi0xMCJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjEtMTItMTAifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyI5Mzc2MTc0NGUyYWE1YWZjZTgzYTY3ZmJlZWJkZDNmZTFlZDI0Mjk0Il0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjkzNzYxNzQ0ZTJhYTVhZmNlODNhNjdmYmVlYmRkM2ZlMWVkMjQyOTQiXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ill1YmlLZXkgNSBTZXJpZXMifSwiZGVzY3JpcHRpb24iOiJZdWJpS2V5IDUgU2VyaWVzIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3MywicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoyfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCIsInJlbW90ZV9oYW5kbGUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlESGpDQ0FnYWdBd0lCQWdJRUcwQlQ5ekFOQmdrcWhraUc5dzBCQVFzRkFEQXVNU3d3S2dZRFZRUURFeU5aZFdKcFkyOGdWVEpHSUZKdmIzUWdRMEVnVTJWeWFXRnNJRFExTnpJd01EWXpNVEFnRncweE5EQTRNREV3TURBd01EQmFHQTh5TURVd01Ea3dOREF3TURBd01Gb3dMakVzTUNvR0ExVUVBeE1qV1hWaWFXTnZJRlV5UmlCU2IyOTBJRU5CSUZObGNtbGhiQ0EwTlRjeU1EQTJNekV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRQy9qd1l1aEJWbHFhaVlXRU1zcldGaXNnSitQdE05MWVTcnBJNFRLN1U1M213Q0lhd1NESHk4dlVtazVOMktBajlhYnZUOU5QNVNNUzFoUWkzdXN4b1lHb25YUWdmTzZaWHlVQTlhK0tBa3FkRm5Cbmx5dWdTZUNPZXA4RWRaRmZzYVJGdE1qa3d6NUdjejJQeTR2SVl2Q2RNSFB0d2F6MGJWdXpuZXVlSUV6NlRuUWpFNjNSZHQyemJ3bmVid1RHNVp5YmVXU3dienkrQkozNFpIY1VoUEFZODl5SlFYdUUwSXpNWkZjRUJiUE5SYldFQ1JLZ2pxLy9xVDlubURPRlZsU1JDdDJ3aXFQU3psdXduK3Yrc3VRRUJzVWpUR01FZDI1dEtYWFRrTlcyMXdJV2J4ZVN5VW9UWHdMdkdTNnhsd1FTZ05wazJxWFl3ZjhpWGc3VldaQWdNQkFBR2pRakJBTUIwR0ExVWREZ1FXQkJRZ0l2ejBiTkdKaGpncFRva3N5S3BQOXh2OW9EQVBCZ05WSFJNRUNEQUdBUUgvQWdFQU1BNEdBMVVkRHdFQi93UUVBd0lCQmpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQWp2anVPTURTYStKWEZDTHlCS3N5Y1h0QlZac0o0VWUzTGJhRXNQWTRNWU4vaElRNVpNNXA3RWpmY25NRzRDdFlrTnNmTkhjMEFoQkxkcTQ1cm5UODdxLzZPM3ZVRXROTWFmYmhVNmt0aFg3WSs5WEZOOU5wbVl4citla1ZZNXhPeGk4aDlKRElnb01QNFZCMXVTMGF1bkwxSUdxck5vb0w5bW1Gbkwya0xWVmVlNi9WUjZDNStLU1RDTUNXcHBNdUpJWklJMnY5bzRka29aOFk3UVJqUWxMZll6ZDNxR3RLYnc3eGFGMVVzRy81eFViL0J0d2IyWDJnNElucGlCL3l0LzNDcFFYcGlXWC9LNG1CdlVLaUduMDVac3FlWTFneDRnMHhMQnFjVTlwc215UHpLK1ZzZ3cyamVSUTVKbEtEeXFFMGhlYmZDMXR2RnUwQ0NySkZjdz09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWZDQVlBQUFDR1ZzK01BQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBSFlZQUFCMkdBVjJpRTRFQUFBYk5TVVJCVkZoSHBWZDdUTlYxRkQvM2Q1OXdlUVNJZ1M5QVFBWGNGTEFRWmk5ZnBlVnoxdFkvV1RacjVXeHBjN1c1a25MYTVqSTNaODVzclMybk0yc2p0V3daUzdJVUg0SDR4Q25FUXg0REFaRjc0Vjd1czg4NXY5L2xJbkJ2VkovQjRQdjludS81bnUvNW52TTU1NmZ6QS9RdjBIYi9JclgzVkZLUG80NWNubTRpblVJV1l3TEZSbVpRVXV3akZHL04xaVJIaDFFWjBOUlZSdWRxdDFCZCsyblNLeVMvT2h5czArbGszZS8za1E5cXZENFpVdGE0VlZTVXVZMGVpcHlpVGhBZm9jb09SVmdEdXV3M3FLUmlBZDNyYmNFdGpUallJb2Y2V2FIc0NtelZQV0NNeCtjZ2g4dExxV01LYU1Xc1VqTHFvMlJ0SklRMG9Pem1lcnBRdTRlc1pnc09Oa0d4SDdkMGtkdlRUMTdzNE9NVTdWSThaaGpnR2FNK0FxOWlFTnU4UGlmMXVkejA3TXd2S1dmOEdsVm9DRVkwNFBDNVdkVGFYWUZiUjh2TnZMNSszS2dmYjV4Tk15YTlSYW1KaXluYU1sR1RWdEZscjZiYTl1K3BxbkVYNHVNdVJSZ2pTWUVock43dXRGRmU2bHFhbDdOZmt3NWltQUdIeW5QcGJrOFZtWTB4c3RucHRsRkNWQ1l0elR1Qk44M1FwTUxqVHRldmRQelNVbko3ZThta2p4WjM5ZlhiS0RmbGRacWJ2VStUVWdHbkJWRjZmUTJpUEhnNFcxNlVXVXd2emJrMTZzTVpFK1BuMHB2ejdKU2V1QXllczhsY3BDbWFLdW8vcCtxV3IyVWN3SUFIV3J2UDBZRXpoWEF0TEFic3NIaHA3aUdhbXZ5aWpQOHJ5cXJYVVdYOVhvb3d4eUF1Zk5CcnA0M1BPQkZYWmxrZjhNRFJpcWNweW93QXdwdXoyeCtmV3Z6L0R0ZGU5c21zenlndGNSNkMxd2JkekJsNk9scTVXTllZNG9HYXRoSk1ya1RFeDBqQVJTSEFWcys1cllrUU5YYitRZ2ZQTHNRNmdYeUluc3JlUWZtcG03UlZGWWZMODZuMWZpVU9rWXZTaGtVUHh2YnVrem95NksxaWhNMWhvM1h6VzZFdlNmWEErZHBpV0dhV2QrZG9Yekx6bUd3S1lGTENBc1JBbFBCQWhNbENGWFU3dEJVVlByOEhnVmNKSFdxK0YwMHBscitETVRkclA0enZ4WTExa05NaHhUK1NlVEdnK2Q0VjVMUUppdHlVR0pOQjhWRlpzamdZQlpNL0lJL1hDVGtqMHF5RE9wRjJBVlExN0NJalVwL0RuVDFVa0w1RjVnZGorc1Mxd2cxZ0UzZ2lnbTYwZkNYelNuUFhieUFQYklYditJRHBFMTZUaGFISVM5c2t5aGxtTUU1RjNjZnFBS2hxMkMwRTVQSDFnWWFYYUxQRGtaRzBIREpPbktXSHA1MUkwejVTT3V4OGUxV0F1WnpkSFFyVGtwOFRtalhvSStsYTB3R1pzenVicWJPM2lmUTZBL1c3dlZTWXNWM21SMEpLd2tLYzRXSGlCa21SOEkzQ0NnSTg3b09MNHF6VDVQK1JVSkJlakVPZ0FQSzhoWVB6YXRNK2VJVHAySU85eVRRbWVyb21QUnh4MXF4QWNzaWxlL3ViU2VFYmNXUUdZRUNnaGNMWTJIeUtqb2dqSDI1aE1wanBVdjFPdWdsaTRlaDJlUncwTzMyYkpqa3l1Q2dOemcwdnpsWU1TaVNzMHVvbzRNRzdoTU9qQ0VhWDF5RkUwblN2akJ6dVRuRXBLODZaOElvcUZBSXVidzhrZzlBckVhUkVXU1pJK2pINFhicDZnOUU5RW5KVDNvYVJ6RE4rTVVKQlFESG41NmE4b1VtRUJ1c094QnMvTjUrdEpFYlBrQUZEajhVR3ZPcy9JV3ZjU2dsR0JodlM3L0ZUWWZwV0dZZERZOGZQQXhXU0EzNXNUQzRwNCtMbTRBYXFJb1BlUXRmdWZLNkpoMFpoeGxic1VYT1NtWE5pZkQ1WlRBa3lEb2ZiYmNjbHhuQThXTkFxeENiUk55a2hYeFFwYUR3NjdmWFVZYnNpRzBLaHR2Mm9lSXZoOHJoUU1ZT2NFQXFYRy9lSSt6bmdPYzV5eHI4cTgySUFNMWMvRkxGT3BscXU1ZUZRWHJNWnpHY1ZDalliTFdHNUk0QlQxZXVScmxieHROT3RNaXREREVoTFhJSXluQUF2dU9FV0UzWDNOZEFmdDk0VmdhRzQyWElRdDBaWDZQZUNFL3FRRmU5cks2SHg3WVU1MEt2SDdmVzRmUytxN0tLQkp4c2dnQlg1cFNBR2gxaklyVmg1elE2dzNSZmFhaEJYbS9hQ2JDWlRqQ1VGVVR5V1pxVzlwNjJNakpQWFZxT3JQZ01PNE52NzRHa2Yrb3dmdE5WQkRRbmpGSnFIU3cxN3BYdmhXVzVLWnFlL1E0OU4vVVNUQ0FWV29RWEZJSEJIWFhlM0ZQclVEc3VHRG10Ri9oSEtUSHBla3hoaUFPUEkrU0pxNlM2SEY0STlZV3prQkpUbzQ2aVVNeldwOFBpci9SaWR1THhLWXNTa3NWOHZMbE9RdmhHWDJZbFIwT0JoQmpDK3UvZ0VjdlkwQXBLN1lrNDFOeGpQU1FuV0ZIVEY2NlVyamdldkI4Q3U1YStsMnZZU1JQdHVWRG83M2hoZE1TSG5VWDd0VGpzVlpHeEFsL1dwdGlPSUVRMWduTDI5bVg2L3RSMXRtbGtZajhXNFgrQ1NqV2NVREdZMU5wUy9DN2hTS3FpTUxNL2wyUW1TV1o3M0RkeitnaW84QkNFTllQUTQ2cW5rendYVWJxdkJreGpVUXNXZlpGZ2J1bzNyQWYrd043ak9POTAreW54NFBpM0wrMG5ZTDFTY2hEVWdBUDRnUFYvN0lkMXErMUhTaG11R2tJcVdSUGd5eE1GcVA4SGZqVG5qWHdZNWJRZmJKY3Q2T0l6S2dNSG90Ri9IZTFlZ3NheEhTcUc2d2ZkbVE1eDhOeVRGRnFCY3AyaVNvd0hSM3lrNSszNmhGN3ZYQUFBQUFFbEZUa1N1UW1DQyJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTEwLTEyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3MywiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZdWJpS2V5IDUgU2VyaWVzIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVMkYxMDAwMjAyNDEwMTIwMDciLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0wNi0wNCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzMsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWXViaUtleSA1IFNlcmllcyIsImNlcnRpZmljYXRlTnVtYmVyIjoiVTJGMTAwMDIwMjQwNjA0MDA0IiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMDYtMDQiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDczfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI0LTExLTEyIn0seyJhYWd1aWQiOiIyMzE5NWE1Mi02MmQ5LTQwZmEtOGVlNS0yM2IxNzNmNGZiNTIiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjIzMTk1YTUyLTYyZDktNDBmYS04ZWU1LTIzYjE3M2Y0ZmI1MiIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJIeXBlciBGSURPIFBybyBORkMifSwiZGVzY3JpcHRpb24iOiJIeXBlciBGSURPIFBybyBORkMiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9LHsibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDUURDQ0FhR2dBd0lCQWdJUUFjYjVaY0F5T0psMXgvODlnWWttZXpBS0JnZ3Foa2pPUFFRREF6QTlNUXN3Q1FZRFZRUUdFd0pEUVRFU01CQUdBMVVFQ2d3SlNGbFFSVkpUUlVOVk1Sb3dHQVlEVlFRRERCRkllWEJsY25ObFkzVWdVbTl2ZENCRFFUQWdGdzB5TlRBeE1ERXdNREF3TURCYUdBOHlNVEF3TVRJek1USXpOVGsxT1Zvd096RUxNQWtHQTFVRUJoTUNRMEV4RWpBUUJnTlZCQW9NQ1VoWlVFVlNVMFZEVlRFWU1CWUdBMVVFQXd3UFNIbHdaWEp6WldOMUlFTkJJREF5TUhZd0VBWUhLb1pJemowQ0FRWUZLNEVFQUNJRFlnQUV6clZtZTJXMXAxYXE0by9FTGJGMnMrSmFUNnRRMlpvTUcwUGNINzl3ZEp3T3JRZUEyRVBDZXd1K2VtU3NnZmJVWVVJckwwV2hHQ1A3Unpmc1ZoZkJRbGQ3TFplVWhUUGlPMTJ6dVA4azlRcXZMY2NuYmp5bTF6elIzSW52WEVNWW8yWXdaREFkQmdOVkhRNEVGZ1FVbGlWMFpxaTNhamt4RERlOHB6czdPRExEV2pJd0h3WURWUjBqQkJnd0ZvQVU0bUZwODVWbXJyMjNNRTFyblpOUG9GeXczVm93RWdZRFZSMFRBUUgvQkFnd0JnRUIvd0lCQURBT0JnTlZIUThCQWY4RUJBTUNBUVl3Q2dZSUtvWkl6ajBFQXdNRGdZd0FNSUdJQWtJQTBBUUpIdS9IeEo0d1ZEQjd2dTF6c3VHZE9FWWlDN3RKNTJzenltMUd4WFJuTytEWXR5YTl5Z3dyRVorOExvMENZbTh6d0FWK0JNMm5oZ1hvdjFPSWJtWUNRZ0VwNzZDRnc0OHZhZG16Y1ZucDRtMWZiTEFwSFR1dU8vekRNUFRLV2F6MGd1ZHJhRjBlYWVkRnZMeDdDcFgrSC9nVkpBSldqVUZVTlVNZ3FrZFVsME1va0E9PSIsIk1JSUNSRENDQWFXZ0F3SUJBZ0lRY3RFT1QyV1hlQ2tEZHovc1k3VXBWakFLQmdncWhrak9QUVFEQkRBOU1Rc3dDUVlEVlFRR0V3SkRRVEVTTUJBR0ExVUVDZ3dKU0ZsUVJWSlRSVU5WTVJvd0dBWURWUVFEREJGSWVYQmxjbk5sWTNVZ1VtOXZkQ0JEUVRBZ0Z3MHlOVEF4TURFd01EQXdNREJhR0E4eU1USTBNVEl6TVRJek5UazFPVm93UFRFTE1Ba0dBMVVFQmhNQ1EwRXhFakFRQmdOVkJBb01DVWhaVUVWU1UwVkRWVEVhTUJnR0ExVUVBd3dSU0hsd1pYSnpaV04xSUZKdmIzUWdRMEV3Z1pzd0VBWUhLb1pJemowQ0FRWUZLNEVFQUNNRGdZWUFCQUZGclBiOEtETEF3NEhzWUxVNWN3ZXZvUFMwSjZRYW84SGJ4Mm8xMStyWXZzeEF3clYzUC9PMk10a3VBNGJEa21ZU0EwWUw1QStKMllvNHYvZDEvUVAyVVFGMWRxUEZrbVUyN1ZaaEM0UFhDZGNYK0ZNZHV1Yi80L0xFd1ZhT013UFRVQWc5OFNSd2NCalN6dU1XQmx4ZTJHMFdRRm5kTjJ0bjJZMnNadWJYN3lRSUg2TkNNRUF3SFFZRFZSME9CQllFRk9KaGFmT1ZacTY5dHpCTmE1MlRUNkJjc04xYU1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0RnWURWUjBQQVFIL0JBUURBZ0VHTUFvR0NDcUdTTTQ5QkFNRUE0R01BRENCaUFKQ0FjcTRXdlZxT2xNcGJVNGU3NlN5ZWNaVXJLeU9TR29UcXRISmxyR1c1NUFsSHpYMFlWaG1WTnRZakNxKy9JVGJkaktmYi80UksrMUtucW5sU0t2WmFyN3ZBa0lCUWp6Y2FWaW9BMG8wVm95b3lhTmtCaDA4U0oydi9waGhadTE5NlVoUmZxSzZQcDkvMVk0dURTYVRnaE9RdjBIRGsxa3VKT1Jzd0NlbG1NZklRVGMxRVFFPSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUREY0FBQUhvQ0FZQUFBR1EyZFZaQUFBQUNYQklXWE1BQUM0akFBQXVJd0Y0cFQ5MkFBQWdBRWxFUVZSNG5PemQzM1hVdk5iQVlma3M3a01xQUNwd1VnR2hBdURhRnlFVkFCV1FWRUNvSU1tRnI0RUtJQldBS3dBcUNLbkFaNGwzRHpnVHo0ei9TUEtXOUh2VzRqdmZDOG1NeHZiWWtyYTBkOUcycmZHbHFKdWp0aXEvZW5zREFJQVgvL1A0WUhEKzFMR3Y2ZU4xQVFCM2VYazQrSG93K0h4OUFNQS96aDhPdmg4TTNiOHI2dWJBOVhzQkFJeDU0UElZaEhvd2RId3I2cVpwcTVLSEJBQU1VTlRORzJQTSs4NVBQdXVMRFRzTFNHKzRpZmUrNllqWHRMLzdkTWpQdGxWWlRIMGZBRWhaVVRmbnhwalhZKzZqVGg0T1JkMzhOc2JzOWZ6VDVJZERVVGNQalRFM1kzNkhCd1FBM05YcHVGKzFWZmxxMCtIcC9OeHRXNVVQWjA4cnlieC8zNE5ocmxFUEJtbEx5d01DQVA0am5leEJIZWZWejZ3ZUVpNWlEdDljbjRjNXNRc2VFQUR3MTUxTzlxYXArdlY3cHIyUHpscXR0RUFBT3RockFFQUtoblNXdS9mTTFjOVBmamhvZlRENGVDMEFTSTE5Q0d4N2NFeDZPR2gvTVBoOFRRREl3ZWlIUTJ3M2NSNFFBSERmcm5SRW93TFNzZmJ1ZlFXcGg3Ujk2dnZ1ZXUwNzY1RUhIc081eDJESyszZzR2eWR0VlY0Ty9lRlFuWU8rWSt2anZWMWR4elBhZHQxVzVaSEgxeDlseXZHWTA3WnQ3emZtT3p0VVVUY3ZqREVmWGIvdW10NHRCNE1mRGtYZG5JNTl4MTE3SElxNkdmd2xuOHZ1eGJCcmQwTzlYMGoyNGhoeXdjOTVTQ3A1TUZnWFJkMWNyTDlYTG9hdVdlOHpabFBwRmsvN2dwZmF1Ym9XVjYvVHM3cG41d056b2plK0RtM252dkhGZm9UMWZ4OHpyZlJ1N0JzUCtMSGpNYTlwakRtY2NUSHVGWFV6NnNzRTNXUlluR3RLK09NeE56ejUyYmtQaHVnVWRmT1RxZVhkMWhLYjJ0SEtzSWZEMklNN2R1blVRSGJYM3ZlaHI3L0J4Y1RmVTIvb01abnlSUWsxYlRYUjA5WEZuS09oSThhTWo4MGpCVTFaMU5wSTc2aTdTbW4xLzY5OWQvOU1ZKzE4T0NoNU1KajFLU0hmMHlNWTdkZUNoMnpybkd6cXRsM1RYTzk1VzkvMXZFdDMybXpydzBIUmc2SDNkWGxBM09WajlEQmkxUEI0Nkd2NndFMFFYVndQLzNRZkVKdW0xb3U2K2I0ZVQ5a1lrSjV3Y0ovdCtnR1hENGJ1djArZEtrazBvUGxyZ2FIMGs4RHZod0Z5blc1YjVSUENQNTM3NU44RkhUMStkVHQ1dlErSENVRytac0RLSk9jUGh1N1BUWHhBZkdxck1xa3ZrRDI1cmxZdWpSZzEvQnpUeGpXYk9oVXZocVFZVGtEZjUzODRkcXBzdy9rYzh4clh4cGhSS3hJVjE0Y2ZuYlRUR0hObWpFbDZjY1BZenZDbWtjT29WUTI3aXUzNGZEQjBmMzdDK3p3ZitmT3hzRDM1SHlIYU9uZjB0ZVVHODNXMWpFK0d3dDRXRXl3NWd0enkrWDB2Q1Y0WnZTVFdsYVZIN2lUbzNPNWV6TUYxbkNIRWcySE83NlU0TnptMEp4OUxJSFBvcHJjcGUzRmk0UE1tdHRTRFlXazhHSGE3ODNEdzhHQVl2Y25OUVU5MHlnUGlmTTU3YWhUaTRnLzVCUnY0WHFQMjRpQTlxWFlRbGpBNUs2dW5UVzc3dTM3QVU4cUtIT2EyZS9VZFQxWjZJR0k3T3dpTUdvYjUrM0FZZVVPNDlkQVdPL2Y1ZTlzUGpObmhQUFlDa0ZLblNmRThIY0VYTEFGMEJMREpwSkdEanh4RkErYytmZTV3OWxIcU5BcHJXK2VIM0N4OGRBN2czcUNOaWJMK2ZjNktNeVRvZjJaazc4RkhqekgwNXJtY2VEcGZXdGVSTDdsTFc1MlJHeE1mclZJNHMwOEF4bEVONlZsOFBSZzZQZ3lOS2RqOUhVUFNFWStoWk5oK3UydGtOS0tkaDI2YU5NN0E5bTFkVXIySnJ4VE9FYnNwNnNiNzU1djczYUR6NTlmWWFhVVRsNjBKOEdDdzd6RW01VzJTV1N0ZDl2Ulh5UTlER2hvUDJoV3ppdFdTSFl6T2FJTFlSR1pHalJ6R0ZGa1o4RnJlSHd5NHcvYjR2ODA1SkVzVlRFcVp3OC8vdWU4dnAyWVA2TE9wbGdIUzlEK1BSU28yVXZ4Z09GdmdQWU5Zb3NlUG9PZDNZeG9ZMXpkekdVa2tPVXJEUDNaYUtlakRJZlNEWWN4RjNGWmwwaHRvNXR3a3RQY1c2YzF1NStINDdPVSs2a3ZkLzhiY0VFTUVrRHhjY05rdVVVVWV4aVNvNUNIcWg4Y2toSXZGUVNmdmtKNWdaekRiOVZDVm5zMTlVMjRPakJyMG1ubytYVDBvK0k2bGEvUlMxb2wxRUc1M0JiT0x1amx3MmN1WDF4dGpaK3FPaWFiR01jZ1R0SU9yaDBLa0R4Y24yVlE3aFdBTzVpNVltUHJlME9tQm1iQ2lZZXdEWXVCU1N0Y1g1cWpYODdVTWNtb2NvNmdiYncrSE1lZGIyUmY0dzhpbHljbnhkVDVrd2NMcVFmR2I2VmozYkZMQW1PS2FremZCMlZWT1ErYlpsb2d6VEhnOVg2T0cyTDMwM2Y3Y2U0L2R6KytxU0pPRE5qMDAveXFxN1N5Y2szQlZSZGZlalMyb3RLUy9NWWNKSi9mTHJoK0k1TUdRN09hcGJZYWNtN1lxUHkzYXlNeU1xQUVlNUx6STk0SVNzSm1hRlpDZWUyTjNuUytKL0V2SVJMQUtoak5Md0M3aDdhNzNKSWcrekoySFE4aEthaG9lREV3blFac1Jvd2R1Y0QzYXFsUmR1R3RzYk5kdmE3YTdOM0lJOFlCUThtREljam9KVVZEVGFTbnFadVBPNjVndG5LOXFaN1lDRFF0R05nV2tiVXJHY3N3TERRMUtLWG93TUoyRVB4emNLTTVjcmtLeG5aWlZWdFJ0ZkFhQ0phM096cmlpdUo3NEhyTnYwSE0rZi9mOVhSekhFYXNBeTg3UFBWc3Q3SkVTcDJxV3NQYytITnFxUEpoeTRuWmRyRHdZa0NqbnExQ0czbWkyZmVkQzlZNWRwN21mYTBxeVFkZjE4MGY0TXFRanNJU05BZW1wSDM3VFFiYTFFc2ErMW80SHc2VGMvVHdZRUpIZVRLdUFDWEF2MjdwYXlkVURRdFpMajgwUnNxdW96T2hOY3p3WUVKTnRtVmE3Rmc1Y3FzeGt2TlIzUGFWN3pNNmxySE1lRUVYZHJMYjM3OXhJcytaMlc0cnBpVitHUlNxWUFYT01XTDIweUpMVDFETVpUeEhpQVJIaVBRYnRjNWpSa0l1SmNRYm5OV3lwWjRERVBRcjk4U0pKeUhpNzRIdEg5OXBkZ3pmQmhXcVFwNEw0VENjaFd0cjJQc1NVK3R0Mk5GT2FZZ3I1V2NibVZwcGRhbkliSGd6SnVVNjFMbmRvVTFiZ3JPVnRHck0wdGMrVENIZEwvK1V3Kyt5ek1iVWJ4dWJPMnZVYUlSVnRPNjY5RWtlNGNOM0dNUWNnMG95aUFCQ04wYm1WcEM3RGxjc1B5SWdCQUhTWmxIaFBpb3c0ZVVEd1lBQUFmU1puWlpVSHhNN1NuenRldzhkTmZHZFdSZ0RBZHJOU2Rzc1UwOVQ5QTE2U2kyblB5Z2dBTVpqMWNEQ3lmMkRDQ09ES1IwWlVwcE1Bd0kzWkQ0ZVZrVFdsWnhkR24vUCtBSUR0bkQwY3pQRFNrd1NnQVVBNXB3OEhzK05HellNQkFPTGcvT0ZnTnR5d2VUQUFRRHk4UEJ6TTJvMmJCd01BeEdWMCtvd2wyZHFydGtvZDF4Z0ErT1Z0NU9BNlE2VGtkQ29YTG13Q0FGbnc4bkR3ZEFQL20reVBCd1FBK09YODRlRGp4dDMzbWp3Z0FNQ2ZzZlVjdGdyMVlPaitHNEZwQUJoT1NzcXVLZ2RldDFWNTFQZkx6Z0xTZlRmeHVUZHU2allBd0h4VDdxVk9IZzZiM25qT1RYdE8xU3NBd04xNzZhNTc1UHJQelk0NWhKNUtDdGtPQUlqWjBBZEQ5MmRXdnpNcjVxRGx3ZEQ5WFVZUUFQRFByanJXNnh1V1Z6OHplZVRnNmNFd080MDNJd2dBR0g0djNMQWE5Tk9raDRPTG0zalBhOXFJK1o2ajErSUJBUURHdk93N0JuYUVzR09XNWZub2gwTlJOd2V1YnVKcnZyaDhNUjRRQUhMWFZ1V25DWWZnMmt5Y1Z2cm0rbmo3dXBIemdBQ0ErK3k5Y2N2OThhc1pHNURXRm9BZSt2cStndFM3Mmo3MWZZY2NrMTFCSnBmdG1mb2VQczd0bU0rd3R0bkhtMDF0OHZENW43VlYrWFh1aXhSMTg5QVljelB4MS9lSGxQZ04wVEdiY2ozYjVKMDJSOXZFdC96UVZ1V2JEYTg3NmpzN2xLL1h0ZGZTYXJhbTUvZi9mTWJCSTRjWUh3eWgzd2YrclhvOGN1UGZ4ZnVEWVJOUDE5eVhIVDIrblcyUzM1MzZZTEJ1NXJUQkpZbFQ3bFRVeldtbnpWTWZETlpyTFo5OXFFM3g0VzRubytmei9Ba2JESG80VERrWVF6ZGNUSGpOMjdHL04vWDlZakcwNXpEbnBqTGs1d0l2STM2VTgwTmZibEtEYXJIYkcwU3V4MG8rOXpzRlRWbkt4dmp3cnFxZE94OE95aDRNOW4vdGtQaGs3TzlQZlYvb2x2azV2WkFwb28yazUraGpBWWw2dVgvZk4xWGtYTi9Yc0RZVi9MZGV6dGFIUTFFM28rYzNmVDRZT3Y5OTZYTStQMGErUmc4eDVMZksvQ2F3YTRxSUIwUG1SaDRMdStEb2x4a3dyZlIwekdFZDhHQVl2VDlpMTlCbjdPdEpPM3FEU3Bqc2pFTzNuRTNmcTR5bmtnWk50K1dnbXhKalY0YnJUcXFOeDJiYmFpWFhpZSttN0k4WW1nOWt3cGZndlRIbWZPVHZxRGYwV0F4ZHdUVmkxSEM2OUxHeDExZGJsZCtYYnNkQ3Nod2RiSEV4K1RjVE5QUUJzWDVQNkgwNGVNcUlPbloveE5zeDd6OWx1aVRSUEV4bklRTndEbzdoc3cxL1AzWlRwTDIrWWp1Zm16NjdIZGsrVjlJV3RWd3M2eFYyMDlmZ0RvN0Q5dzFxN0hmMTNzUEJ4NE5oWXB4aFZNK2VCOFIvYkMrK3FKdWRENGRkbnozVWxNU1dMNXJYL1JLZDkxL3MvRy81N04xbGhuUFc1UTlwd3lLZmY2bTlSeUhha0lvN01ZZXhBV2lQRDRaSko0MlQvWjlReHlHMTk5R29yY3FESWMwcTZ1WnhkZ2RuQnU0VnU2MEhwTWNFb0QvditvR1FENGFPd2ROUkp2TlZEWnMrT3lzOTFPbE5ucmJtTXR1ak14SVBobUgrUGh3bVRDZTljTjBZRnlkdDdIU1U4WlJsZG1tK3Z3Qjh3Y0labUR4dDFNcENZSmRKS2J0OTNCZ2NyNTRaMjc1c1YzdXNIMU5HRFFETTZ1R3dkQkRIUit4aWJEdFRYQnZ0cTNmUHFDRWRzZVVLY3FDSi9oTUVNcnVHOUZ5K2d0cmllc1RQWnJzMmVuVjhCeDduSy84dFF0ZkFCSE96TmlKMkVob20vYUFZR3VDSE1RK0t1aGtjeUhMZFkvVDhZTEN2ZjdUa3hhN2hpelp4aytDMjEwdHFoRFgzMkFRYVJlM2M4K0Z5STJMbm1GejVPdDgrampzcnR0eXlJNGZqaGQ3N2NOY1BwQmdvWHNqTzNyN0h2UEd6c2FKc0dnZm42eml5MFFTakFvZEdGZnR4cU5tVjZxQ29teGVPQXNWQmR3eHJaSHQvUmQwczFRbllpaHUvZDdjdXZrY2hSaE1POEhCd2FKR1l3OEI1djQrTzNpN3JCOFBLM0Y2azlpQTBRZkora3VMZXBXTld0T1VoK01QQmQ1d0J5TTJ1NzVUOCs1Q05kSVB4SFUxZjBJZEQ2QWNERi9CZHFhWWxZZFN3bTkxSUo4ZHBaNnh2S0lYZnJ5Z1Q0bWsxNnVIZ096aTI1TVhHRFNaT3VaKzNzWi9meHZvNjFiOG1sZHhWTE5lVTdWNDhHTHZVMFM0WGE2dHlTSEgzdjVaNE1DanAxVXhkZSs0dFRqTDJmQ3UrK2Y1YUZTV1pJOWFIaTZOVU0zL2pFWFBxaTA5cGk2Zk50TFpXOXRhZnNXVlY3Yys1ZnU4VVRWbXQ5R05NM3Z4SUhneGVjdGxQWFhzK0pPVjJJR00yRVhxWCt5akJCTnIxbnZoMHJCMWRzQjlpZ0Q4UGh3bWpoMEc5aFZoR0RMRVc3NWhxNlBtMm13aER0TVgzZTJpMWRrTSttbERneUl0dTViQUVEL3NqQlcxd2FWUVc2akVtQjZSZFhEZ2VIZ3lqMTEvVEc0VUdRenNvSVcvWWZEZVdOYkFENTYzYzhkK0h3NVFMWWM2RktoV3VSaG5RUm1ySElscER2NE9zd2xOcFozd3h0dk8yUG5MNE1QWUZwbnhnV3d4K1F1bkRmZGZ0b0djRWhWSmJRYVNPajV1MHk5eFdXdHg1T0xSVitXWkt1eVljN0c4amY3N1p0c0tBQndOU01YUkhNNk9IZVpZNmZrUGZWOFA1dmJkYWFXb1d6NkZCNm9rMzhvM3BObmd3WUE0WFgwSWYyWXFIdE12V2ZQZTFhRUNTWG5vcmd1WHJ1SSs1ZjNWKzdxM1B1ZnN0NzN2ZFBYL2FIdmk5UzFsOVBTQmMzOGduSHN5VENiOERhTFN4TkdnT0l3dTd3c3ZSU3NQM1JkMjhIL01MRys1THYwYXVobnE2Y05iZHJiYXRWdG82eDcrSnk2TDFIaDRNOWpVcHhBNzFJZ3BPenlveTVNa2lIVUFYbXpJMTJmaHdtTE9MMEVWZFlrOFBCcWFURUkwWXJsZU5nZGdjT29BaHJvMnQreHptTkdCazZVbG43eHZ5TlFFTmxobzlhUDVPTGRXMmxPNHpPemZCdVhoQWpMSHIvUWhBSXlkYXA1Y2lHZFVrK1lBSTlia0c3WkFPMVJoR0RFQ3ZLYlVZZk0yNzM4YjBuWksyQnM4Ukp1Lzd4UFZyaGp6Mmd4UHZ1UzVVMy9mNkhsNTJVbEFkME1UV1l0aVZiZFNzclJhVWVmZkx6cjk5M2JhNmFSZWxENFJCV1JaY0xoY2RjeHdrZS9YY1BGVm5TOFYxaXJZZDEyWlBENGlUb1VHa0VlOS82NkZFSWdCa1lYVGlQVTlUUDg1WEYvQmdBSURwSm1WbGRmbUFJTTRBQVBwTVR0bnRxQklWRHdZQVVHanl3OEhNdkJIellBQUF2V1k5SE16RUd6SVBCZ0RRYmZiRHdZeGYzc1dEQVFDVWMvSndNQU52ME94bEFJQTRPSHM0bUIwM2YwOFBocE01Q1FJQkFQMmNQaHpNdjRmQTFkcGZIM280L29NM3pnRUF4aG05UTNvTTJjM2NiS3ZrTnZFMUQ5dXFITFIxSGdBdzRWN3I4K0hnaXp3Z25qbXFBdVZGVVRmMjRWVWFBdVlBQUFCSXdPQ2tyQnJFVUJhM3FCdWIwdWxtN2UvK3RKc0JCQUFBQUdJVnhjQWhoZ0dER2RET3pyL3Zzd0FYQUFBQU1WRTljRWhsd05EalJzcDZYYlZWK1NwRUd3RUFBSUE1Vk81eEdOZ1JYM3lQUTFFM05tcXc1K0sxV01ZRUFBQ0FPWXE2ZVdPTWVUL2pKYmF1aWxFMWNCZzVjNy9Zd0tHb0d4c2x1UER4Mmd3Z0FBQUFNTlNXL3ZPVHRpcC83bnFaTFlPTmU5bnZWQXdjaXJxeGVWV1BSLzdhSWdPSFVNdW5HRUFBQUFCZ2svVStxYXUrWTAraW41ZHRWWDR5R2dZT016cmlRUWNPUysyM1lBQUJBQUNBcm02LzFGZGZzYWdiTzFoNEx2LzVKL3F3Mk9ib2hEYytlM2wvQmhBQUFBQ1FXbUYvYk9vZkZuVmpKOWVmRGoxWWZhL1RWdVdMenFxZ1A3WEpuSmVPM3NWMmhDT3B4L0JKVXp0ak9XNEFBQUR3cXB6NDRzL2t6OXYxZjlqVXgreG0vN1EvRXl6aU1IRWZRM0I5QmR5VXRZOElCQUFBUU9iRzlnVTdTL3p0LzU1UG1aQU9NbkJnV1pKN0RDQUFBQUF3MUl4Kzdwa3g1cDN4UFhCZ3dPQWZBd2hndUtKdWpvd3hSL0lMOW44ZnpnajVybHpibVp0Vnhnbm8xSFB1SHh0akhqazQ5NmRMMXhTYW82Z2JtMnJ4aFJ5VHdldWh4V2U1OXFQOS9Ma3E2dVowNGprM2N0M2JjLzZWYzUrT29mMUlMMW1WWEJaRzIySjJWcVZBN1F3cWxnR0VpOEZhNk0vcXM4MCtCcTlMWEFzZVBzZEpXNVdYUGUvejNVR0hQN1N6dGlwUFhiMW5hbnVlQmorMDR2emN2ZGV4YjBYZDJBSEJ4K0NmZHJ0ZmJWVStudktMaVYzelhqSkRhbDF1UGVUN0xZUDdMeUhleTRXeG00OWR0cmZ6WGRoNEhmVzF6NzVYMy9kb1Z4dTZ2K00wNGhEcWdwMTdVY2dNeXpkM0xkcG9QL1FYV0U3dXZZSWQwRTIrekQ4ZHpJQjJyNFhmYlZVK0RQWEJQVHpVdDFXdmpHM1FZTDByNnVaZDU3KzNWdWRFVWk2S3V2bGJOTlJqNmtUYklmK2gvTUE5c3ZjS291VHVSSkp3aG5QdWh4MW9qZDNuVUt3WGZCdHhmbjQ1eTZva0Y2N1hUckw5VUE0R0RXMkFRY09WdFBWM3A4MVhudCt6cTVRc1RNRTZqWmhQWnVIdVpUcVlZVThHSTk2NWZuQ3R2aitKWDFZMzhqMzlQdUJua1pCVmxyeWlibDY1K0ZTZHJIdmFCdzF3cEhNTmtXMHhROTIrOEpUbmZGdVY1K3Y5YWJtZTdpMjVYYXNYOFhoMnhDSEVSZXRpbExwMHhXZEpaL1VxY0JqUmRrelkveEFSKzJXV0RHU3VyaEU3dTNmWlRhZm1tbzlCZzYrMktsVXlHNWV0UDVHSXFlZGVleFpBdUJmcE1rMzRjV0x2SVp1aWVHMVZIdTE2MXpGTGxGWS9PM25nRUdLNVR3b0RocDZmKzcwS0s0VnFHeHVvNDdLNlJoeGVIOGQyUnNMbCt2b1ZCZzN1TUhqSTE1UnpMOUdLaXdFL2lrUVFYVUNYN0p1NlhGMFhydnA2Njh1WTFsOXowc0Fod01VN2UrMXZxTG9SYzA3UTZuZEREaURvbU1SajB5YW1pZDdKNE1IWkJrMUpMdUFNMXliZjBaeE5PUGNNR2pMQ29BR2JyUGNsSFY0cm4yM2w2UFcvSERWd0NIRGhYcmxZVWhIb0MzYllWcVdUdGNraEJ4QkVIK0xpZVBCd0lZT0gyWms4WkUybHM0eGtYSS8vTUhqSWwxMkdNaVN4QlozSXZIQytNVVRmYzJQRUpQcGJ1MVI2eVBzTUdqaUVXRWNaMGJJa2J4bUxRZzhnNkp6RXdmSGc0VXRSTjAvYXFweThhVnBTdkRuTC9yVGtkUmpUY2toZmNyMFBPQWpuKzNndUxyRjJmWEo2MUJqRmRyMTdUSEtTMVhuUDFXcC9yY3VQdjNQZzRQdWhtT0krQmxmdjQvdHp5ZXZmaGt6WmlXa2NEeDUrRkhVemFUbWd6RjdNemxzdGtyajJPdDlYSnptOTViVWV6eG5jd2I4bDlxdTV4dVJSRkp3T1Rqbm5tR3RyT2xiUE44TjlCek0rdjBObGRWcml5eWJ2dWUvNWJmWUlnOGJCOFRVNCttSGtlTi9RaDlRR3JKTEI0cGVqbHlORmEwUmNmamVsb2kvZzJpR0RCcmpRTzNDd2VWeDlkaVpkNUdpWDlubXQrcnpVZ0dHdERiK2xEYmMrMzRmQlF4eGNYZ3RqenJsMFpsd05HdXhTcVRlT1hrc1ZoNkgvcENyYTU4RGhzK0xkZ0o5QkJodytsMys1MnBNSjNCczR5SVg2M01lUjBkQVJIK2lsb3lWVTMxMTk4ZTNzck85angrQWhEakpUZithaXNVUE91YVI5ZE5LWmtYc0FTM0FBQllxNnVaY3hCZWxoTHdOY3VqTnc4QjFsaU9ETTNVckg1bDdsdkRIc1ppWTVsczQzdXNseC9PRDZkVmNZUE1SQmFqSThjZEhZYmVlOHFKc2pWMmtmQ1pNRDZueVVhckd6TTYwQnlNUGZ6ZEY5WmFaZGlhSEQ0S3FOZ2ZaYzJHVWViM3k5RnhtWDRpQXo5MDQyVGZlZGM3dEIxMlpoY25Fd3VKNkF3YTRIL09DaDR3S3NUM3Z1STRQVE0wSTFKOUZwWUtXYlZjbmI4aVROUnp1bUFjTTZ4NWwyb2tOMDVEK3Vyb1B1NEVGU0FQNXcxVDRYcnhNRHFXL2hRckNIdlVTVmduTlJUMFFUaC9lam5ha1Q3WHIxb201OGYvcjNSZDI4WC8vTDJML1BTMTN2eHBqZlMrd3prT2cwNE15ZmdZT3ZEcGptRzB6TUE0WXVYNE1Ib2c1eDhUQjRjSklDTU1OQmc1UDZGb0VmOWs2aVNtUFpqbThxMTRmTGUvRFFQVUJMVFJ4dGVFOW5CVkVEV09SNk55T3YrUVVIT01CV295cEhqNkg0Z1hEbTRxSHNPRFhsWE5jT2Mrc2pVaTRIRHk2T1FBNkRCcGVEQmNSRlE4UlRVZFQ1VzA4RTVLU3R5c3RsbXBNRUJnNVF5ZHZBUVNOSG1aSzhWOUdld01lZ1ljZzZXeWlqcFNNUnk2QkI0M0kzSW4xaHBITHVGUzladlNqcXBwdFlZVkxSU1FDNi9DK0hjSmlyTkxCeWM5WTJhUEJDaWxraHpuTzNaTWZ6TXgzZldWd1ZrRU44Sm1mTGl5VFYrWTFrY0dKdkdoQ3hyWldqNTlDUTNzM2xnRUhyelk2Yk1Qb3MxSWw0MWxZbGVlR24rMEMrOVd3OWMxRVVjZlhNaysrLzJxaXhQRk9wNTRJN1VrdVlrS29IOWtSNXlzNWcwN3RkdGxXNU0wT0VCMDVDb3RvNzVSN2JkK0xwZFJHUUxHRUlzaGVIS01NOEhMOTgrVHIzZlZIam9tNXNldFhYU2c3Mkk1SndiUFdWS3VMcVpibTNkQlZ4ZU92cDlZOERkNzZ2WmJabDFxREJkclkwRHhxS3V2bnR1VmdmRzlvU0lRUDNaejQvRFEvK3ljNGlxcVlQdDU0dGNlNXRWS01ibGRCdy9kbm4yWkx2SDlqZzVXak12a09yUDV1amJaR1h2bnpOcm9TWVZVZ2x2ZW91dnRzWFV5Y21kRnRqWFJZbUR5QXZHeWpwOUE2bjlWaHhEdjJMc1o1UndPakVYb0QzK0N1MzY3Mm9tMU5xT2NDbHYxbVZmR2Rta05lK2JhdnlvY3ZYWmNEZ0RoMkl0TG4ranFkd3ZYRE41MnZUdVhkOHIzWCt6QXRGOWx6YzJYZmhLNnVnSGFTNDJPT0JYbmE1VTFZRGg4aVd3RVdYd2ZMTzV1Z0FCM3JQWlk3NDFEYyttLy9hOTRsQkExeHhkWjY1WHBBcXg5ZTJzMmVlQm5ZWnNLY2xUbHIyWFFDREZIWGpaS0FiWXdiTGUxbVY1R1p3NXZOTk5YVFdRN1ZoNnMzVnp1eEkrNTY3YjlVZFozUUNBZUFmdVNkK2RuVklVczEreDdNakRqbG1zSExWc2QvQzIvSis3WHJUc2RyMWNDRnVDRXNNSU96RkZHckFNR1BRRUtSZWhMU1J0WThBc01hbUZuYjVISlRuM1FISEdVTTV2UDVzQnFzb1VqMDcvTXhlOSszNmV1MFliSzNqRUdvMklkUUFRdDdEOXlqeFpNNkFJZEFGMlRCVEJBQzdPYjVYZnN1OTA0SEYvTWp0MnBNKzFYZlhyK253NWJ5dTd2SGx3YTdYbFEyVlhqWkVyVnVkRU5lZDJsQmZscGtSaGlBWU1BREFPSzRUQzZSUXY2Q29HN3MyKzR1Q3BxUnUzMlgvcTNNZGYxQzhJZjNLWWYyaHN2T1pKOVg0a3FWZWp4eTE1NjlZVjN6c0hEZ1kyUkRsSzUxakgxY0RDQVlNL3pCZ0FOQkh5eXhrRENsTGk3cXhsZEUvdW5pOXFZT0hvbTVzYlpZTEYyMVE1RW1vcGlpYWRYODJwRmFEN1g5NUt0TDd1cWlib0p2U2gxN3Z0djVRVVRjK0NwZmVlRHFXVTd6VTBwQ3h0aTVWV2hlNldNelVwVHUrQzZTdFREMGVOblFXOE9aMXk2QUJBT1pycS9LVGgzMFBMMGIrV21xREJudGNzOXU4TzBhT3ovRFVQN085bHlob3hpU2pCZzRyY2tLdlFqVnk2QURDenNUSXoza3RLT05nNDNQcHZsWDNTVHVqekNFT0FGbzU3dFI4ekhuZkF4TmJ3ekI0U0Vmc24ydlN3TUZJS0dtSnlyM3k1MTVuV0c2OHZtZGlybVlNR0lKRVFjd0NrU0VBeUkzY1kyOWRmZXdjQnc4OHA4YVI0NlZtclUwSWlWMGpIMUw0UElQMk9HeXpPZ2lCYjNxcmRXcWZBOVE1K0dQT3liYURoa0JsOVcyMkpOTDlBVUFBTnFMck1ubElDcHVtaDJEQU1OM3FHWi9UUUROa2toNWZVcnJtWnc4Y1ZoWWFRSGdmTkRnNjJkNEhEZHlJQVNBODE4bEQ1SFhldGxWNW50anBQS051a0R1ZFBsZlVIZXFoVnQ4ekU5ZWdLY1h2c2J1Qncwb0tJME1UVVVlY0FRTUFMTTl4eXRiM1JkMjg3N3UvZHpxTW9TTFpVOW1hUnBlSzI1ZUVib2ZhL0hkZE9Ndjg1WkxMdnNyNmF5a2FTRnkzVlhta29CMWVGVzNyNzNoSG1qYnVpZXNNRDU0dWFzMDVtQWVSUE9DVERFbGpSNXMzNDNQbytoeFR5U1JOOU1zVHg1NkxtWi83WjZnc1B0cXVUNmtlYkovTHRsMVBKNzdNdFRIbTAxSXpxWE9PcVJaTDMzdUt1ckdSbnhjT0VyWFlhK0dyOWtpU1hET25NNjU1SThYYUxza0E1bm5nOFBkTjZ1YlNZVEVQWDd6dEQzQTljQ0RLQUFBQWdOQ0NEQnhXdEE0Z2ZIZkVYUTBjR0RBQUFBQmdLVUVIRGl0YUJoQ2hPdUlPQmc2VHlxUURBQUFBcml3eWNGaFphZy9FRXZVbkp2N3FyN1lxSHp0dURnQUFBRERhb2dPSGxZQlptRjR1VWVaN3lzQ0JaVWtBQUFEUVJNWEFvY3RUQnFKYlc2akh3K3NPTXVZek1XQUFBQUNBUnM3ck9Nemx1cEFjOVJnQUFBQ0ErZFFOSEZibURpQWk2b2dmdGxYNVhVRTdBQUFBZ0kzVURoeFd4bGJKakdqQVFGVk5BQUFBUk9OL3NUVFU3bEdRUWNIaGhoLzVFTW1nd1E0WUNnWU5BQUFBaUltNnpkRmpySll4YVI4dzJIYXlod0VBQUFBeGkzcmdBQUFBQUNDTWFKWXFyZGlpY1o1U3RqcGwyeGhET3dFQUFJQWhvaG80RkhWenVVU2w2Ykc2QXdZWlFCeG9iek1BQUFDd1RUUURoNkp1Yk1yU1l3Vk4yV3BEbE9HYkRIb0FBQUNBS0VVeGNKQlVyS1dDcG15MVkyblNzWHdPQUFBQUlEcnFCdzRTYWRoWnYyRnBSZDM4SE5DRVBmWTlBQUFBSUVhcUJ3NHlhSWdoMG5CdWpIazA0dWNaUEFBQUFDQXFhZ2NPc2ljZ2hrR0QzZmo4ZXNMdk1YZ0FBQUJBTkI1b2JLaE51UnJEUm1qeGJlb3ZVaGdPQUFBQVBoUjE4OWdZWXlmaW4yNTQrYk8yS2svSHZMVzZBbkF5Zzcrek02Nmh3KzBxYXNEZ0FRQUFBSFBON0pzMmJWVnVMU0dnYXVCUTFNMURZOHpOa0o5ZHVyUHRlcWtSZ3djQUFBQk00YmhmZXR0VzVjTytmOUEyY0JqY21DVTcyaDczSit5M1ZVbktWZ0FBQU95MFphWE9WVnVWcndhK3h1KytES1o5ZlcwMUE0ZXhuZkdsQmc0Qk5qVWZ0bFg1M2ZON0FBQUFJR0pGM1J3Wlk3NTBQOEdjL25IZklHVDk5VlJrVllvbHcxQ2dkbjZUemVFQUFBREFKdDFCdzlYY1NYVTdjYjMrR3V0OTM4VUhEaEVOR2tKR0FTNGtIUzBBQUFCd3gxci9lZkN5cENGNkJnOS8rOENMRGh3aUdqU2NMbEJUNHBqQkF3QUFBTFp4T1doWVdSczgvTzBETDdiSFllNmdJZFFlaDZIcFlUM2FtUm9MQUFBQWVlajJvVGYxaDBmMHM2L2JxanphOEJwMlFISWgvM25TVnVYbEloR0hvbTYrTHZHK0V5MDVhTERLd011a0FCVElhVDRBQUNBQVNVUkJWQUFBa0llbm13WVpkcURRK2M4L0E0amdBd2Vad2Q5VXdVNFZSVXVwR0R3QUFBQ2c2MG5vbzdGRXhHSHBHZnhCRk82L1lQQUFBQUNRc2U3KzE3WXFmNDQ0RXM4NmY1cjFmOXl5R3VoWjl6OGVoRHowcEYyZDdjL2dnVDBQQUFBQVdUcWU4cUhicXV3T0RBNWtNcnFiK0tkM05aRDl2YUwrTjg0SUZuRmcwT0FNa1FjQUFBRE04V25zNzlvc28wRUdEZ3dhbkN0SjFRb0FBSUNKM2t6NHRTUHZTNVVvOE9hTnJmUGdKWGN2QUFBQTBqR2dQLzVoeUlmMUduR0lwVE5lMU0yYkJRcTh1WEFzT1hZQkFBQ0FTZHFxSEJTQjhCWnhrQTZ0K3M1NFVUZVBqVEh2RlRSbHFndlpNTTIrQjJDTG9tNVdCVzZPNUk5eGtCcTZrWFdpbi9nTzZ1WHAzRjhiWSt4bXcvTzJLbjlIZkd4ZXlKS0ZzY2RqOWZtL3JtMjZoSEx5ZlhnMWNaUHRyVEhHM3VzdTEzTDhJMjZIUTF2dnJYSzA3eVZLcmlwSFI3U3ZZWmY5V0I1ZXNqOWpVbGFBanR1MktoODZiZGdXdnR2cytEbzhYS29UVzlTTnZRYjNYTDNlbG9xWWJ5SVk4SHV0K3A3UXZXdlUvZHpSZDlHM2paVllsMkkzTlJwajNnVisrN2R0Vlo2N2VDSFg5NWFsdWVyRGJMTlc5VGNrTzdnNEd2c2NjblJQZTlsVzVlaE52MU80YU8rVTYyQkkxZWoxbnhObmZmZUFJVzNvdk5hWmw0Z0RtNkVYY1dNL1VpUnRkZkhRRC8wQWlhbk4zeGE4RmtKOXhoaWloT1hRRzN6dWJLZTJyY3JUZ1lkQis2REJyRmRpWGVyY0szakd2Uy9xWnYyNyttUms3dm1WWkFZTlB2V2syRnlDUFZmZk9pazhQd3hkQnVQQW15blpncFppb3oraEluWnlqejFkdnkvWStnMGpKam8rT2QvakVPaEdkYTl3eFZpSkRScitTUEV6WVJxWm5Rdkt3L1gzYk1EUFJNTWVINzZqZVFwOTdwVmZhei80SHJqWE9lY2FsNGkvVnRDR2xGelAvQ3kvMXY1NzZ6TEZvbTcrcnBTd1VTU25BNGRBTjRQYnVlSC9VRGV0SldhWnVDSEh5Y08xRXYzc1hLcnJwaGxBNUV2T3ZiZEJQZGRXZnV6MUZNTTUzMUtWR0NQTlhRYlpWdVhqbnZPejdScTY2ZjZIczRGRHdFSERySFh0b1FjTkRCNHd3cFhMZzFYVXpaVGxBRlBmeStrMWw4T3lIcjZuMmRyemNlNjVudklqNTV3bFhCbWIrcjN2ZThZV2RUTm9VdDdKd0NGUU1iTG9CZzJiL2pzRUhpTHg4VkNUNDFFT3h5MW1mRS96NWZMY2N4M2xoM01PRDc2dHYyUjNtWkl4NXJOeE1YQ1FkS2ErTjZ1NUdEUUV5VEt6YVpEQTRBRURPVjNYSHlJOFRMUmhIcjZuK1hKeDdybCs4c001aDgwZXRUb0ltNVkvMm1kcDk4K3VmOS93N0wzcC9MeE4zZXdrNHZERDl4bDBNR2dJVWxOaVY0ZG5vY0VEZVpZajRtRmQvOXhjOVFpQWprQys1Z3p1dVc3eXd6bUgrYSt2ME0wY3RiY1dHWEJpMDRCazFzQWh4QVU4dDdNdEJ6TkVIdVA5SVQrMHdPRGgyTWNGQlg5Y1h5TStCNDlFRzREWkpnM3VaVUlNR1dIUWdEWGRmdWVOeTc2ZXJOTDV1MyttKzJ5ZVBIQ0lZZEFnYmdiOTFEd25ZNHF2TGRBNUNuRU1vRmNNZWUrTmd4UnpVYU5Ua0srSjUzNkp3bDVZeU5DTnE4aUg5RHR2T3gvNHhrWFd0cDYwdm5jbXhpY05IR0laTklTcUtUR2w3THA4dnRzQlArb0VuWks0ZUlnNkRDMnVOZVkxWFVjYlZGWGFCUUJGN20xY0JXUXBmN2N2dVRjbExiUGRyN3poOTU2c1Q0eVByaHdkWXBOeFJJT0dXVFVsN0FrUFdlWFJIaE9XZ21UTGxwbDNQbmh3S0tsaWIxUFpGTHA5T2JhUnZxSnUzclJWZVQ3a2d6SVJsQmRiWFRqM1k0RE5wQy81ZUgzUDhkejd4S2IrNHFpSWc0VEt2SFp5SXhvMHpONjBMYTl4NEtJUzlsQkYzVVJUaWoxM0hxSU96dFpFdXk1aWxXcXh0d2xJb1p1djk3a2ZBR3owaFVPRGJkcXEvQ2w5aGpNSEIycC9XLzlqN0ZJbHI2R3l5QVlOempwMWdRY1B6d085RDl4d3VlN2Y1WnBvWjBXSGlJSUJRUEtDcE1UUFhWdVZwNTNVcWtNaitkZHJhVm0zVGd3T1hxcmt1ME9lNjZDaDg1b0hvWll0c1dRcEhuYmR2K05DVVFkdFZjNjZnWWVzU08zWjJPVlJSL0xIYTRwYkYrY29OdlpoRjdqSlU4NzlpMURMU2hka1p5dTlSditJTHY0eGVIOWp3UHZ0QjJPTWx4VUpuUE5seUhGMzN0Y2JOSENJWk5Dd2FJRTNSNi9ONEFGOW5qa01WWDl6Y0NOeHRweG15V3R3d3NQczNzOUxxbHZYV2F0Y25LTkJjcjBIVER6M2R3WTMwcUZ6dXJUTUpqSFlOWWh5dmQ0OXQyc2d3cy9yYS9uaS9waHNrTURLenFWS0FVYTdnK29mYktPbHdKdWo5emdJbFcycHFKc1hJZDRIODdpZXJabVQ2emxFSmVxWXRGWDVpZ0Y0bnV3bWRnL24vdDJBbjNFMmNPRGF6ZEt6SWN0UmdFMjJEaHlrZytGenM5N1ozSXMzVklHM2tEZFlGNXV1Qi9vWTZIMHdrK1ByYjA1ZEQyZkxkRkxxdE5BQnk5Y0M1OTVWMXEwVFI2OERUeVJUampNeVlHRHlCN1BzaWpqNExCeDI2MmhkYTRqaVpvY0IzdU9PVUE4ajB2cGhLTWNWcUZNczlrWkhMRisvQW41eUo1M0pLZldIRU53UGgyLzRnZE1IRnpZT0hBTHNhNWc5cXg2bzAzdTExRWJGZ0lNSEtsSkd3T1gxTVBHNzQyd3RmNHJGM3VpSTVZdmFHOUN1cmNvM25DUzQwRHR3OE4yUmpLekFtN1BjOTFNRUdqeFFrUkpiT2E0OHpjdzhBSVREUFJmT2JJbzRlT3RJeHJRV09PQmVnNjFDSExPRVVtd21iY0dvdzVCTm00TXdNdy9Nd2hwMWpNSTlGeTdkR3ppNHJnaTc1aXFXcytlcWcrWXFNaEpnOEVERjJuZ0UzUi9nc3VKMEJwdUlVOXk3Z1FTNS9GNER5RWRmeE1GWlJkaDFTeS83R1VyYm9LSEQ2K1ltTmtySHdlWCtnSUhuM0h2V3NvUXdHd3pmWEYxamZLOFZtNU0yZXcyVEdYRHF6c0RCWjhjeGxwbEd4WU1HTmplaEs4aWFWWmZGcGtoWkNzem5NcDBtazBXcU9YbmVwNWlJQXN2YVdRRE9rWmN4bkdmTmc0WVYzNTB2Q256RndlV2ExUjNYcTZ1SzFRQVVZdkNnRmhPRlVPbnZ3TUZ6Wi9lVDl0TWZ3NkJoeGZQZ3dWbUJML2dWWUJEcExNVmtSdEVHWnZjUUhmdmNraitrbGRYRDI3SnhZQTd2RVlkSU9nejdMbDdFODhaeXdKc05BMTVYeFlkQ0ZzZGFHZ052eE96SGFoREJXUVRRNTgvQUlmTUNZQ2R0VmM3dThNc1NuMkF6QkQ0SFpEdzA0dUhyT25DNE1ZL2lXRUNFT2xHSVJRcWdBdERwZ2JUS1M5MkdDS0lOall1MTRwTFdib21aeGpPWCtmVmp3d0RITFhzOE85L1pHMGN2VHVFaHhWeHVmaC9MNVNiZkREMEx1UCtvN054clQyS3ZDYkRVTmMvMWpsUTh5UGxNdGxVNU85SWlNN09McExWcnEvSzBxSnRzQnc3NGorM3NheDFFNVZSNHlIRjE3VkFXMi94ZTFFMHllMTlDRjlDMG5WQjcvQlp3VWRUTmhZbDczOUlpMTN4SzF6dnk1bTNnb1AwTDRyQjlybVptcC9wRjhUYlk2Sm1kR1p4N0lHU2ZqcXNsZDA3MkRrV0VRWHkrc3JzSGR5WXJidHVxZExhMEVZQnUvOHV4ZW1STUdaUjJZZjA0aktQb21YQzJUOGZGM3FGWU9MNFg1TFNaUEdvMjR1ejQzSjhOL1VGRmszTjduZjBRTVViZEFJendJTGZxa1NrTkdvQTFKMXErenptRTVJdTZlV0dNK2VqaHBYTk9WaEdGb201c2p2MzNydHRxbDU5R2ZtamVyWmJQc2l3SFNKT3ZwVXB2TlI0dEJnMUltZDFQc0ZwL2pOMFU3d3NocmJObnFkekROZTl2V3JXTEFRU1FGaTkxSE5xcVBOZDJsQmcwSUJPTDd5dWdvd0FFOVVUejRhWXVCSkFXN3dYZ05FaDUwT0F5M3o3aXAyQzJtdlg1OHd4ZTQ0N2tIRTc1UUcxVi9vd2g3VEdEQnlBTlhnWU9TK1lHN3pIcFpyeE9jVlhvcGJNNlFaa2xaL3packQ5UEFtdmNNVkZibFpNTHJVbmFZL1ZaekNUNndHUVhFREZmRVlmRmNvT3Z1WnB6TTE0cDZ1WXlaRlZvSUZMTWxzOUR0Q1pmVjNNL3VZMDJSckpNOEliQkF4Q3ZsSmNxMmR6U3MxUE5GblZqTTV3Y3UybVNXeDZqSUhRQUk3ZEVCNExaOG5tSTF1VEx4Yk5xeFg3M0l4aEFFQ2tISXEwbzdtM2dVTlROb2h1a1hSU2trVm1SYjI1YTVJV1hLQWdkd0dTRW5NSE9yZGliVTJ3b3o1ZXZjOThaUU54cVBManNlWUFuVHptd2Z2MVBLczc2OEhxcEQ1VlFWZWlOdU9saWw1QXoyS1FRbmVWWnhHM0hQTjRIM0hZU0xaSW9CSUFJL005aHhkbDdpcnI1R2ZvUTVKQjJWUXBQQVVONFgzWkdoMlNXSnpHR3FqR2ZkT2FERHJnN0F3Z25TVVBtWWdJTWlJL3ZQUTZQUWg2UmpHbzErS2hXK3dlZHdMU3c3RXd2NmNRRm4xeFI1RHJYRDc3MGZkWW1EZWtNSWo0czJSWUFjVmxWanI3MXRWN2Vkc0pEM0NSekdUUXdRM05IeUUzYzd3SytsMnY3dnBiZE1kQWNUOU14NC95RnBmRjR0MVg1eGhoai82d1NiZ1ROSUdnVGtMaklmamdVMXp3d3o1K0JnMTBENmJORFd0VE5kNTlMb2hnME9CUFZXdXVRcytsRjNVUTdjTERMSVlyYXkxWW1sWnN1bGZvZ0hUVGs1MFRxTEtqWFRTb1M4SGxvRTVEUW1VZFVjazRwL0dEQXo3aFEyb1BzYVQybms4MWxFUXdhdkhjNldHdWRManU0ZG4yTnU4aGNsaWliemVvVjM2ZnNSVDFZWEUzSVNVcHl6ZGtGZ1NWa094SDBkK0RnbzJPeDVzYkRyTUtKaThHSWpZaTRhWTVYN3oyL1BwbGRNRWIwdFQ1WXNwQ3ZUZWRlbmdXbG93UHpPb1hPaFN3aldnMGlmb2JldTVpeFh4a2U2K3VJMHFuR3ZIeDVscUFGNEJ3UFRCb1g0VitwTitIcVFlRkZpR2dJczZQcGM5bFJadE0xVXVSNlNXMXFlOUpzaW1jRzNNRkVzYnpOc1U5SmZacEUzUms0aExnaHVMcVJ1cmpCU3doMnNYb1RRd1FhTlBBZ3dCalpac05CK2x6ZkQ0dTZTYTRpdUJ5amtBVW1zK05xY3Fhb20yZ21CZHVxZEZJNE9NVFM3cHoxUlJ5ODN3d2tjNE1HSWRadFRsNENGR2kyaWcydUFPRFBqeFNQYmNnQ2s1Z2x4MHJLdnBkMlorM2V3Q0hReldDdnFKdEZ3M0NCT3VWWFU1Y0FoUXB4czhFVkFPN3lFSFZJTlkzMmxZSTJBRUhsSHRIWXRNZkJleGw4WTh4eFVUZEhBZDdubmxBeitXMVZ2cHJ5aXdFSERTeFJBb0IrVHpndTIwMTl4aUdzb200NFQyNjVpbWhFbVdTa2QrQVFzQXorbDlDNWNMWFA1QWVjbWZLUzJCOEFVdUM2cWpmRk83R2dpOXdPZmd6ZnQxaVRqR3pNcWhSd052b20xT0JCKzB4K3lMMGZQZ3Z5QVVBS1BDeFpJbXNNRmxIVURabndIR0FDWUVjNjFwQ0RCOTl2RU1HZzRYdW9VdjhzVVFLQXdWd3VKM2llMG1HWGRPYnd4K1d5OFZqcURqajd2cm51OTBWUzg4dTdJWFVjZ2l4cDhkbXhqMkRRY0JtcWxnU0RCZ0FZenZWeWdzUm1MRlduTTQrZDYyWGo5dHJUbmg1WTYvZk5jWEhJcU8wY09JUmMwdUxqaGhwcWhEaGowR0EzTFIyN2IxR3ZrMER2QXdESjhMQmthWkhFSUM2eFpDTmFQM0k3ZHpKZ21qUUlzMHZwNVhpNUhqUkVtNUhzd1pBZnNqZk5VQmVhdk0rK2k1RzJkTXE5anhCbkRCb09BbTVhdW5WUmFSdEFPclIwSUNLSmhEWU9ueWRmN09GMzlGckJ5RHI1V0phODlGSnl6WitNZUI2N3ZPNytXanNPbjQweDUxUFR4MGRpYiswem4vVkZOMlJRZitxNy9rWE1HY2tHRFJ4TTRNR0RiSmllTlhpUURkY2hPdVdITTM0M1JBRzZQNmpYQUVBcjJ5SFZubUhFUnQ5ZFBnUHRhMDBaTURIVG53VGJOeGswY0hCOTNXMWc5OTQ4TDJxdks5UGZqcWdNL2RJWTg5Rm5ZK3dBdUtpYnFBZkJTeG15eDZIclE4QjIzc2lNL09UZmQ5aVdUZXlJZGRKU3FKQTNmL1kxQU1CODNFdUJ5VjRNL2NXMktsUFBQdlpMUVJzbUd6VndhS3N5ZExXOGIxTUtsd1RxbERkVFo4Z1lOQUFBaUI3d2pCcm9XUlN0eENCdFZhcmVvTDdMMklqREVsL3lDOGs2TkVqQURFcVRvaUVNR2dBZ1hoNDJTcFBpRVZzbHZ2ZWdGLzBYdlVZUEhNd3lKL1M0cUp1ZFZUd2pTTHNhY25icFpjRDNBb0NjUEhINFdYTk84Umh0WnBrRnVMem1zSkFVQmtTVEJnNW1tUS8vYUZ2SE80SkJROGowZTc4eVdDTUlBSXRvcTNMblJOWVl1UzVaaWptelRHaXVyN2tZRUhYUWFmTEF3U3gwVXZ0dXNOb0hEZUtMMDhac0VmdjZPUURRenNPU3BjR2JSMU5BcDNDOFRJOVp5S1E4WHFWeS9tWU5IRVR3VFR2ZGdjTFVvaDVqelRuaDdHc0FnQ1NkT2Z4UXZ0TlBhc0lTcFlseWU4WXZrSlRIaTVUTzIreUJnMnphQ1g0VGtFcUFkdFAwbnUvM2l1V0VNMmdBZ0hCYzE1N0laTWxTd3hLbDJmWWpiLzhvQ2ZSdGtqcGZMaUlPcTNXS3R5NWVhNlRqQU84UnhRbG4wQUFBNFhsWXNwUnlzYzZYVXpNUzRoOWJIRGZEeUVPVW45ZTJlMDR4WTQyY0RCeE11cFdKVHlJNTRYT3FWd01BNW5GWjBDbEU4ZExncEFORjBnNkhNaDA4UkpNeE10WHo0MnpnWU5JN1NOZHRWUTZ1SDdHZ3oxT3JWd01BNW5PZGtHSkkrdkdJN0JNUjkwY0daREVjWHlmTDAremdNNExQK3lUbGE5N3B3TUdrTTNpNGJhc3laUHJVeWRxcXpDb1RCd0JvNVBqWjkyalRQOGo3dU55VTdjV3FRNXZhTWcydHRBOGdYS2VUN1h6ZXp5NWZkNDdPTlo5MDZ0d0hQbDdVSHJpWU4zbkZzdXdxNGtIYWJZaE43WTdGMkdaZnNxdGlDdTlTV2NKeTVXcnZYVkUzWHpkTllNbW03SHNiczR1NnNYLzN6c1g3VDNERnB1ZmxkZnNGUmQzWTc5WHpoUnAxSFdJQ3RqdDV1c1QxbjJNMHJXaGJmLzM3R0FjUFBpNENIOGNoaFl0MVJsRzhuMHVONkdlMCtidVdtYmVpYnV6bXhFbURZOG1pcHNLY29vcWFQc2NjZ1F0TGVqSGxYTVJ3N2pXMlVkcjBhdWJneHViVnYxeGlpV3hSTjNaSldPeDFpbjR2dWJ4WXJnSGJ3WDdxNE9XdTVGcFFleitWWkFOdlpnNG9ybzB4NSt6UitZL1hnWU9KYlBEZ3F6UHUraGl3WGhRQUFBQ2hPZC9qc0k0YUNHNHhhQUFBQU1BU3ZBOGNUQVNkM1lnNjQ5R2tJUU1BQUVCYWdnd2NqT0xPZVVTRGhvYjFkUUFBQUZoS3NJR0QwZGxKajZad0d0VTJBUUFBc0tTZ0F3ZWphL0J3RlV2aE5QWTFBQUFBWUduQkJ3NUdSMGY0TnBaODB3d2FBQUFBb01FaUF3ZXpjSWVZQW04QUFBREFPSXNOSE14Q0hXUFNyZ0lBQUFEakxUcHdNSUU3eUJGMXh2Y1Z0QUVBQUFENGEvR0Jnd25Vb1k5bzBIRFNWdVZ2QmUwQUFBQUEvbEl4Y0RDZU8vYVIxV3E0Vk5BT0FBQUE0QTQxQXdmenI0Ti82K0UxWTNCTHJRWUFBQUJvcFdyZ1lQNWxQR29jdlZ3MGV3Vml5ZlFFQUFDQVBLa2JPSmgvVlpKUFpyNU1OSHNGeUtBRUFBQUE3VlFPSE14L25XbTcxdjl3NHE5SHMxZUFRUU1BQUFCaVVMUnRxNzZaUmQyTWFxUzJ6dmltOWpOb0FBQUFRQ3pVUmh5NnhuU3dLZkFHQUFBQXVCZkZ3TUVNN0dnemFBQUFBQUQ4aUdiZ1lIWjB1QmswQUFBQUFQNUVOWEF3R3pyZURCb0FBQUFBdjZJYk9KaC9IZkRHTUdnQUFBQUFnb2dpcTFJS2lycDViSXo1WVl4NTFsYmwxOXlQeHh4RjNkajZISHRTYlp2Q2VRQUFBQUFBQUFDZ3dBTk9nbDlGM2RnNmRNY3BmOFpRZW83bFhxZEV4bjRzaGNJQkFBQUFBQUFBSUVVRUhEd3A2dWE3TWFaTThzTUZWdFROZ1RIbTI0NTN2U25xUDd2bFQ5cXF2RXp0R0FBQUFBQUFBQUNBZHFSVWNteEFvSUdVU2lOMGRqQ00xYlJWZWFEOTh3RUFBQUFBQUFCQUt0amg0RWlucmdBY2NIQTh5MVd3Z3NKN0FBQUFBQUFBQU9BZkFZZVpTSjNrVmxFM2R2ZkhVNWN2U3AwSEFBQUFBQUFBQVBDUGdNTkVQaWJHYzFiVXpTdGp6SVhuUTBDZEJ3QUFBQUFBQUFEd2hCb09JeFYxWXllcWoyZThCRFVjT29xNmVXZ0RBUXU5L1hWYmxVY0x2VGNBQUFBQUFBQUFKSVVkRGdNVmRmUENHUE14aXNaR1lrWkJhRmVlU2h0dTI2cDhtTk94QndBQUFBQUFBS0JiVVRkdmpER25ubXNIWDluM2FLdnlwNHNYWTRmRERoNVc0R2UvdzZHb0czdnhQbExRbEhzb01BMEFBQUFBQUFBZ05JVXAvSjlNQ1VJUWNOakMwd3I4YkFNT1JkMmNHMk5lSzJqS0VCU1lCZ0FBQUFBQUFPRE56UG5uYTJPTW5XZitib3o1TTQrNW1uZVdSZlFIOG5NMnBmeGorZCtwaThEUDJxbzhIZktEQkJ4NmVFNzFrMTNBb2FnYmUzRi9VOUNVS1E3YnF2d2VYN01CQUFBQUFBQUFhRlBVelN0anpNV0FabjF1cS9KRmlPYVBhTlBPMVBRRUhEcUt1ckVUeTZYbnQ4a3E0S0NnVG9NckoyMVZYcWJ4VVFBQUFBQUFBQUNFTkNCMXY1bzZzd015MVRSdFZSNzAvUU1CaDNFUkhCZXlDRGdVZGZQYmN6R1RwUkI0QUFBQUFBQUFBRERZanZvTXF1Y2J0eTBvNzZ1SG0zWEF3VU5CNkNHU0RqZ1VkZlBKR1BOY1FWTjh1MnFyOGxYYUh4RUFBQUFBQUFEQUhGc1dadjlxcS9KeERBZDNXOHI4OWFCRHRnR0hCVlA5SkJsd0tPckc1aFA3cUtBcG9WMjNWWG1VMTBjR0FBQUFBQUFBc011V0ZQNmo1b2lMdWptU29zOUcvdmZoaE5JQW40MHg1M1BtcGpmTnFYZUREdGtGSEJTaytra3E0TERRTGhHTk51WXRBd0FBQUFBQUFKQ1hMYnNDeGdZYnRxVmptbXUvcmNyZlkxNWpWOURoZjU0YXFrNVJOMi9rWUtSWVYyQVJjandKTnZ5bnRNZERvcFlBQUFBQUFBQUE4dFlYYlBpc2JESDZUVkUzUDhmOFFsL2RCdk52RjBiNkFRZTdBbDhteHQ4cmFFNFM3S1Q2Z2ltcHRDUHdBQUFBQUFBQUFHUnNOZm0rcnEzS0Z3cVB5cU9pYnNiV3F2M2M4M2RmN1A5NTRLWk5PakVwN3BiZEpVTGdackJTcmo5U0xRRUFBQUFBQUFCNStkVHphYTk5SFlGTnV3NVdCc3lUWHhoakxrZTgzNHROcjVsa3dHRkxNUTVNTzU2Mld2b1BqdDBrQkI0QUFBQUFBQUNBdk54TDY5OVdaZSt1aDBET2pESHZmTCtWM2RtUlZNQkJ0bjVjS0doS010Z2w0Z3lCQndBQUFBQUFBQUNwdU80cFp2MHFtWUFERStOdUZYWHptd0xiWHF3Q0QxZHRWWTdOalFZQUFBQUFBQUFBZzBqbW1zdWV3TUM2MndsSDlHdlA2ejZPUHVEQXhMaGJSZDNZQy9BNHBjK2sxSEZSTi9ZNG43UlZPVGcvR2dBQUFBQUFBQUIwT1ZpTS85alJBWDBhYmNDQmlYRzNwSEw2bDVRK1V5UXVpcnF4YWNCZXRsWFpWMHdHQUFBQUFBQUFBSHpaYjZ2eXQ2UFh2bzR1NEVBQlk3ZUt1bmxvakxsSjZUTkY2bU5STjdibFQ5cXEvSm43d2ZDbHFKdStyVjRoL1dxcjBsWEVXSzFZajNOUk42Y2hDaWlOOU1zWWMrRHd3UjhkcGZXWmJ0dXFmT2pqaFdVQmdOWDlYL3RlcFkvM2k0QjlPTnFBL0dVcXo4ZWlidXpuZUtTZ0tmam5XVnVWWDVjNkh2Szl0OS96QTFsWjlsaisvMXgzY2R0Y3dKL2FxanhYMEphb0ZYVmpyNk1YTnBkeVpQZWRYM0x2L3hyYm9penU4U29sUGNhV09aMVg4bDFmY2d3MjE3V2tadm02OERQWkhzZVBTNzIvU0RZRnQ1TEY0MlFhK2Vlc3JjclRtYS9SV3dTN2FOdDRTaDhrVXFkaDBRRk5GM1V2OUdxcnNzajlHTGltNlhwUCtmekdmSnkxM3hOenV5L0VzSk54ekRrcDZzWk9uTDMyMjZKc1JUTW9vKytsbW9zQjF4MmtmdlhLK2ZtS2tRVGx6N25PL3ZnZ3dlbnZTeldBZTd4cWF1Wmh4aHFSZXowbk5zLzhHOWVUeGhLay9hYmtPRjYzVmRrN2tSc3JCUXNUdXc1RFBDLzZuZ3RUeC9WRGp0L3F0WWNlYXhkekRCdWVmU2RSN0hBbzZ1Wjd4aXY3bk9ONDZyZjZ3aEo0QUlKNnBqbTFuTndYWEc1elZFc201NU1KTmdpQ0RmNnM2aUoxWmJHakRPb3hDZXpQdTZKdTFuY2xKcnNpMUpCU2VBajduSDB0dThidllFeUZXQ2pkMmF2UlhpYzl0ZFcwVlhuZ29KMWVkakJEcGNYT3RjMnM0SHZSaEExV0RVbWQ3MnVPd1FZRFZRY2NsRVVYNTNKMUE1eU1oMWQ4NU12dkxYVUhnSC9zcXFlaWJ2YVZwNW03c1cxTU9lZ2dxYTFVVDg0emNSR0ZSMnVyYlQ2MFZma205NE1DSkc0OStCaDFqVFFDRE83WTV3SFBibWlrSkgxUENzb1FrN2pBQkcrTk1lL1hmczB1bVBCK3JjcXVybUxBN2pzN3gvQjJTaXBMR2J2M1VodHdTR2c3NHVLVHhRbldhYmlUZ3pHRHJhdDc4aG1UWHJVRmFDQVQrVU1leWt1eTkvTWtCODFLNjJoMHNXbytYbmJWNnlxUVJkNVdJQThmTzZ2ZG84amhYdFNORFpBOFY5QVVBSjRVZGZPbVp3SVM4eVdWZmdocHNKUDRSZDNjKzc3YiswQ29XbFUyNEQ1Z2Z1Tzl0R25zV0xkdjdHNkRMT1ovSTEvSU8xdGtLWkVKWkJ0b0tCUUVHOXFFZ2cwbmNrenZEQmJrN3dvcExKa3l1MnFybFowL0FEelN2Z291eFVDcjdNTFRIR3o0VExBaEdSZnlQRjBzenplQTRIN0k5MTVsSVdwcFcwdXdBVWhYNTN0T3NBSEl5OXVlVHh2MFBpRHpHeDkyL05qNkR2R3ROdjNzS3BDaUp1QmdKeHFrc1k4VU5HY09MWUdHM3dsTlNEVnlUTGV1UnJRcHErUkwxUGRsVHNrM0NwSUIvaEYwQ0NlQ2xIKzJPT2tMQmUyQVc2VU0vcU5OdVFKZ3ROZnl2VmV4RXJZekFRa2dVWHpQZ2J4dDJza3c0YjZ3YTdIVXIyMy9hTlBMeWh6SDdiYWZzL1BKdXhxeTVXZjJWLytQaXBSS3FkeDhOVXhPcFpicmM4b3hsUy96ZVdJMVFPNlI3dzNwUFFDUEJtNC9YRXdLT1lsbDBrZHpzT0daNUw5RXVwNlQzeHZJemhlYmJtbXA3NzNzdEZCZHJ3akFQQVFaQUt4c21sZVF2eHRVYzBycTBjMnVTVGQzZ2Z5V2U5dXpicTNKUlFNT0VoSFpXN0lOTGlnSk5DUTF1ZTdpbUxaVitWMXlzYWRXdzZKcnRlV0pmTlNBSjlJNStLbDFCMTdNRTZVU2JQaWlvQ21iSkYyZ0czZko4M1JTd1RRQWNaTHZmZEI3UFpPUVFOb29CQTJnejViRmpCK1hYQVF4bEtTakxUZjgrTDFhV1l1a1ZPcWtUNG82Mk5DcEhiQW9PWmFwQkJzT1hSOVRPNERRY3E0OHVtRHdBdmdqTzRrK2F6M0VNWDcvaTdwNXJEbllJTThOZ2czNWVTKzdSUUhrNHlaVWlpWDY2MERhWkZFdHdRWUF2V1JlOHFydjMxYnAxeVJvcVVZbkxWeHZzS0d2MXE1Wkl1QWdqZFNjT21FblRZR0doRHF0VjNKY3ZSWnc3Snk3clRuTFlrVVJUTUFmeWVGL3B2VVF4L1E4a0dERER3Vk42VVZxbmV3ZGF5MHNDOENiTC9KczhvWmdBNUMyRkJiVkF2Q3ZyY3BYTytZbFAzYUNEOEZUKzY0MkNReVljOTY2WUR4WVNxVkUwaWVwU0syd1l4dExiQmFwUWJES1dhWTVUY29NcGR3VTdtMXBBakJQVzVXbjh0Qlh1VEkvaHZSS2t1YU9ZQU8wczRWbEwzMHZoQUNnaW4wMmVYa0dzSE1LU0JzQlJRQmpkZVlsYmYyRzV4dCsvZW1HKzB0ampMRy85Mm5LZUVWMlViemE4cjRiRFIwdmV3ODRGSFZ6YW94NTUvdDlQRHZVTU9DMFVhYllkNGQwYVpqVVdRVTdFZ3ZpclB5SUlROGNFQnRiUUxpb20zMnR0V0UwQngyMDE5VGhmb2sxMzN4TlBnTFF5ZU16OUpoVERxU0pZQU9BT1NTVHdoOGo1dEJMK2ZQT3p2dDVabmRpUEI2N0FOOWJ3Q0dSUXIwcUN2RW1XUFJZWFJIT3RpcHQwZTBrQXcvU0FiTFY0b052eFFKU0pmZXdUVVdmRnFjNDZLRDFXWGE3V21FQ2ROa2RUVzFWQnNudERrQUh1K3F2cmNwUHJocXpSRG9FQUdHUXpoaUFTemFqZ2pIbWRQV1NNaDk4T1dVbndrUTJ1UERLUlQvSVM4QWhnZlJKMTFvR2w0bEZ5OVZQZWljY2VQakNiZ2ZBUGZ1ZEl1Z3dqT0xubVpwblBsUjZ5bW5KQnBOR1dQbm9lSGNUOTVIbEhlWitBR0NjcHhvdTZ1WWd3U3dKMGFJL2p4VEpRc2ZCUmFUbHZuUnZJZDBTYzdGT0F3NlNBeXJtaXZ4cVZqZ21Vdk5peFJhRWZxV2pLY09rR25pUUNUOFZLY0tBVkJCMEdOYU9wZHV3d1ptc0lzbktVdGVFck5DeHgvdDFUTWZiRnBCdXEvS05ncWE0cHJZSWZtQ1RjdC9HWnNIdi9ZRjg3ME90ekhQQ0ZwRE9xQmJhTDJQTUViWGZrc005L2orWEhxL3RiNTVlMTdmUDlyN01uQUNRSGszZmEyY0JoOWhYNG10WkJTb0Z4VkxKOFJsOWlvcEVBdy9maXJwWnBGZzNrQ3FDRHR2ZmY2bjMzdUdseTVRWjJFMVc2THlSUDM4VmRXTW5BaDRwUG9TdjE5dWNnaHlEYlFoUEJyNTNWdVpGa2k3V1BoOE81cjZJMU9EVEtMb0ZZUmlIZTd4ZkVSV0NKMjBvZ0VYTURqZ1VkV01IWU84alBuMWFDa0lmUkJ3aHZ5ZTExRDJkd0VNcU8wOGVhUzRzQzhSSWdnNHE3eEcyWFVzTU5oUUhHNTZ3a2xPUFZRQmNKdVl1Y2o4ZVFPcFdkWkNNN2tVOXJ0cWtib0VQWElHbGh3QUFJQUJKUkVGVS9YL0FDZTJMUk5YVnpRU1FsLy9OK2JReWtSQnJzS0d4blMwbHdZWTJvV0REZnNxZFdEdGhsOUxuczllZXBFSUQ0SUJNNmw4clBKWjdFZ3dKUm11d1FaNzlCQnNVYXF2eVV1c3psbWNsNElkZDFKUDRCTGlxbk9JRUc0RDViS3BGeFlkeFgvcTZCQnNBTEdwU3dNR3V4bzg1aFpMY2dHZHZrWjFMSm50VEtRcDlrdE9EVFQ1cktoMzJqNUxPQW9BRFVyQk1ZOTdjdlZEZmRjM0JCZ1hOd0E1S3oxT0tOUndBVGZhMW5ZMmliaWhBQ3FDUHlscFVCQm9BYURJNjRDRGJYbU5kamY5U1NmSE03d2tGR2xZN1JXTEpZZWlVWEUrSENYeVVSd2xkazhEaUpHL3VTNFZuNHBFOHg3MGgyQUJIdEgxL25pcG9BNUFzbVNUVHRrT1FnQU9BTzJ4QmVZMUhoSDR1QUcxR0JSeGtFaUhHd3JtM01pbStlSEhJaUkvaFBWcDJpaXpOcHVXU0I3ekdOQ3FqRUhRQTNKRm56aE9GaDdRczZ1YXJqeGNtMkFCWEtPZ041RWQyQ0dyaW9qMWVucmNBRnFOdW9TWDlYQUFhRFE0NFJEd1JlVWhWZnJlMHBSUFNjbTNhUVZJS0QzdEo5Y1YzQm5EQTFncFFlbDk0V3RTTjB3R1QwbjdDTFlNd0FNQkU3R3dDc0U3YmZVSGpqbW9BMkIxd3NGdkdZZzAyYUNrS25aQkRaWUdHM3hxdnpVVFNMTjFvM1M0S3hFanBwUGV4cTZDRDBuN0NOUXNPb2hmOXprRUEyVk8xdzRIZHpFQmEyQkVLUUt1dEFZZWlibDRaWTM1RWVQWlUxR3BJeUZ0TndSczdRU2FkNVQwRnplblZTYk4wcTdCNVEvMGc2QUM0b3pqb2NEcm5CWlJPWGx3cFRNMkI4VWhGQWlCcWJWV3F1NCt4bXhtWVJtRWgrUk1GYlFDQVhnODIvWU1FR3k1aU8yd0VHcHhxTk5Wb0tPcm1JTGFDNVhaMXJYVG9ieFEwWndvYmNPUTdCVGhpbjFFS0oramZGWFd6S25ROWl0Smd3MGxibGVyeTZ3SUFvSWpkeld4a0J6c1pBWUJoWmkzU2NZMytMZ0ROZW5jNFNPUTJ0bUFEZVpvZDBsWVFXaWExb2dvMnJMUlYrVHZtYTVPdDE0QmJTbmMvdlpPRkJvTXB2VGM4WWZDVkZIYXBBSUJmMzJUSFErdTZ0aE9RSU9xNkFNQkFtMUlxZlluc0FGNlJwOWtOalFXaFU1bndsdVA2VmtGVFJpUG9BTGdsenl4dCtla3ZoZ1lkbE40VDltMlJiZ1h0Z0RzTTdBRXN5ZFZ6K2l5U3MzamNDVDZzL3BBZkh0RHBpdk1DUUxON0FZY0lKeFp0Nm9SUnF6TFJTMXRCNk84cFRuSzNWWGx1SjhVVU5HVzBvbTdlUk5aa1FEV3BNZkJCV1JzdmR1V24xVnFzMys0bVU5QVVBRUE2bk5SZm1KS3lVSkhuUFVHSTN3cHoyUU81WVVjU0FOWHVCQnlLdW9sdFplQXpVaWZNZHFXMElIU3BvRGxlUkp4aTZiMkNOZ0JKYWF2eWpjS0NiMStrWnM0OWRwSmgyYWJkUnpyRk5CVjE4MExaQjlPMkl3bElUbEUzMmdvc3UyeFA0L0MxbHJZbmZZWDFRTVI1UXA4UlVFMWpRWG9BNlBwYk5Gb0syejZLNk9pODVDWTd5NjJtTkZReEZvU2VTMm54Mkszc0xnZlpwWUY1eDVFVVZmakxCczVsa3VXSG9xTmljem8vNmFZb2ttREQzckxOdW90Z1E5SStLdnR3TWE5UTdwWHhzOGlPSVVnVG80eU1SVldsVVhNNTFyUzE4VEw0enIwdTZ1YjEydC85c3ZWNFNIa1lYc2IzZUFxaEE0QUMzUjBPTnhHZGtBOE1GS2FUSFEyYWdnM1JGb1NlSzhMSk1uWTVBQjdJUUZ4YnVyVWZNZ0cwMmdGSnNBRkJLRTNieFNLWGRHZ0xabVZQbmpVeGpVV25laGxuczJkNUpQMko5ZDBRcEdxRkwxN21GVWdqQmdEalBJanhlRWtLQ295M3J5bkhOYXU4LzNxaWJHVXpnQVhJL1ZuYnpxZWJvbTUrS2RzQithdXR5c2NLMmdISGJQMm1sRk1xQXJoUDQrNDU0VHdGa2wwd1Y5U05MZlI2N1BxMUkvUytxSnYxaFV5ZmpUR3ZxTWtFQUVEOC9nUWNGT2JMM0lnVmpaT2NhS3Axd1lUQ1hYWmxjMUdubE5ZVndCd0swNjFwQ2piWXVrT3ZGTFFEamhSMVkxTVZ2Vk4rUE04VXRBRklob3c5VmFWUDZ1R2xqb3g5aGhWMTh6aUN6NytFNTdMUW9mdld0OGFZQTFJeVFRRjJPQURBQ0tzZERyRjBlQ2pZTjg3bnRpclZGRjJNWkZKaEtXY2NHd0FyTWRaNENlQXROV1RpMFVrOWNDUi9vcDFjYTZzeXVmb05nQS95dmJmcGtRNFMrTjU3bStCdXEvSklVZ3FScW5TM1BVbkoxUDFCRmg4QUFLQmNiQ21WNkZnTVEwSG8rTEJpQXNBZEVuVFFtbW9pdEdmazBIZUhZTllvN0c1QUV2amVqM0xvK3cwa2dIN09lWm5rdUtpYmJsb3FWYnY1QVFEQTNhTFI2ckdWY2pjS1FrY3JsaFZnbnhXMEFjaUczTTkvWlg3Rzl3azJZQ25zYmdDeVkrc0VmUS8xb1NWZGNJN0ZwRjI2NkJTalppY2tBQUFLUEtEYWZqSW9DQjJwb201aVdwRkRKeDRJekJaSWx2dEVka1VtcWR1RUpYSDlBZm14ejl6UUg5b1drN1pEQW5hRk8vRzZxSnZYOGtLcXhzY0FBT1RrZnpHbGNvbXB1SFZBSjdLclFVVm55aGFFSnRnd25CU05pMllTa1ZYR3dESWtWL0hibkE0L2s3MVlFdGNma0orbHYvZDJaNFdNNndvcGxveDVibVRYZzVyZC93QUE1TUlHSEdLYVFIeEtoK0d2Umpxa0tsYkhGM1h6U2dJTnBZTG1SRUd1NVI4Uk5UbjN0QzdBb2lUZjg3TWN6Z0tUdlZnUzF4K1FIMjNmZTV0U3NSTjhJS1hwUERjc2lBTUFkTEdZMXI4SDlpQVhkUk5UbTIvc1hLMkNkaXhHVTRkWVZ1akhOR211UW96SGJZa3Q1Z0R1a21mMnZqd0xrOFJrTDViRTlRZGs1NWYyUG01YmxTKzYvNTFybXNXNUpPandVbEpZQWNBOXl1WkhVMXhzZmFDZ0RRZ2txcUxSSzdtdVVPaXNjbEZCemdQQmhwR0t1bmtUNFhGald6ZWdoRTJobCtpazZDOG1lN0dnUTY0L0lDOHl0b3B1UVkxTnM3Z2FGM2JHaHljS21oYURqNlJweGtSY053Z3R4ZXdoZXdyYWdFQldBWWVYc1Izd3pJSU9xZ2JCUmQzOFpsdnFORVhkL0RUR3ZJK3QzWFpidDRKbUFPaEliSEwwbWwxVVdNaWhUTmg5NXdRQTJkaFBMY0JvMCt6MkJDSHNqc2hyQmMzVDVxbnNFZ0VBQUo0OE1QOTFVRDVGbGxicEQ1bjBmdEpXNVU4RnpmSGhRMXVWYjdRMHhoYUVwa2JEZEJFSGFWZ3hCU2hsSnhRU0NBQ2Z0VlY1cXFBZHlNY3RnWFFnTytwVEo3bG1kMFFhWTQ3V1g5YlczalBHWEVUL0FlYzVMdXJtRSttVk1GU0VxY2dCWUZFUFZtOGU4YVRGajZKdVBxL250b3ljTFFpdEpyY1puZEo1aXJxeGhWNWZSOXI4WDFvS2t3UG9GM25RNFJrRnV4QklkcE9OdU1mT0ZKM1RyOG5LbFUwL2xQdEJXQ2ZmZ1R2Zmc2SnViQkRXVHI0L1ZkSElNRDdtWGhzeU1kZHlqeWVJQkFBS1BGaHJ3cUV4NWx1RUorYTVuV3hKWVd1c3N0UkpEMU11VEJwQzdDdVBtWnp4SStVODRhUmJXNFlFSGV4dXYwY1JOVHZsSFlwWUhqdG5kcUJtQlJKRVFlQ0pjdDBOWWVzNXRGVjU3M09uZ0h0ODJvcTZPV0xSRGdETjdnUWNiUDdhb203T2pESHZZanhyTXRGMUV1bktwWDNwNktuQXBPRThLYVNmb3BNS3hNVUdDRzE2QUJ1RTE5NXc3aTl3NUxPc1ptVEFEZVRqVEw3M2FzWk5LY3RnTjBST096cVFsamNVc2s1ZlNvRWwrMWtVTkFNQnJlOXdzSjJLMDZKdTdLcm00MGhQeEVWUk54Y1JUV1ljYWlwVWFBdENVemwrdXFKdURpTGRKWFFIazRGQW5HeDZ3YUp1VGpVdkhPRCtBckVxWkdyN0hiWWZaSGU3L0NSNEFHQ0hkK3hlV2xacXV5RllLWTVJcVY5Z0ZMRmJSWE5pcDMzMzIwaHBlbmIvVXRDRzVOMExPSmovT2hHdkpEVkRsRHNkekw4VitwcnpkcXBxV3l5cllqVkxaVmNJazRGQTNHVGhnQjA0ZjlIMlFiaS82TUI1QVBJejVYdXZ0VzhyN1NKOWtqSWJka1BFa083UjF0dFRVejhScWwyekt5WUw1NHJtUWxPNjNqUjlGdXA1QmZDL1RXOGhLMGRPSXY5OHg3WkRLdHMrdGJpMUhYNHR3UWE3RWtVNjdRUWJKcklkNlVTQ0RRMlRVRUFhWktYZXZxWVB3LzBGQU9JaTkrMWJwWTMrS0pQWlVNeW1lNVN4citacktlbzB1QWhLMWU0cTJWVUU5OWp4bEQ3T2NRQWJBdzdtM3lxRkp3bDh6aHN0RThKdFZhb0lmdGdnakJ5VFpJdUErV2JUbHNneGpLbEk2eWEyOWdrcmU0Q0VLTXR2ZlQzZ1p3QUF5c2pZNWEzUzgvS0l1blB4c05jU2l3OFFNNFdwdDVqTDhVRGJlVTRodUs3dE01QkdMNHl0QVFmejM0bjRtVXJIUUhZN3FLbVhzQlRwbU44azhuSGVocjQrYlowR09ZYlJwaHpya2xWSGJDa0RBQURBUFcxVm5tdmJOZGVsY0VjN3RpRG9BTGhUMU0wTERtZnlVbGpnbXNKbndFZzdBdzRyQ1hVTVN1bVVacmY5ekJhRVRtZ1ZVQ01UNWVlaDNyQ3pLeVQ2b3REaWxnNC9BQUFBZHJHNzVwVDNHKzJPOWpjSzJvRmhubkdjRUNsdHUzWS9LbWhEaWhwTm55bm1lVHlGYlZkMWJsTTJPT0JnL2dVZFBpUnlQQzRrOEpCOEdwbWliaTdsUzY2bDB2NHNFbWdJZXQ0UzJ4VmlwTkFlSzhFQUFBQXdtSXdIdFE3VzMxUFhJUTZrczBERTFPMG9JTFdjRitvQzJFWGRmRkxRakZIc1hLVENackU0SVpCUkFRZnpYK2ZnamVZdHRSTjhTM1ViYmxFM1IvTHdPVmJRbk5rNkJjZUNrV3NqcVFlNEhNZm9IbFlBQUFCWW5pejgwYnBDbmJvT0FMeFJWaVB0TCs1N2Jpa05pajZQS2VnZ3dRWjFjNUVFdk1NWkhYQXdjV3lwblVKTlllbTVPcWwvdnNUOVNmNDZYQ0RROERQQmgvWUpLWlFBQUFBd2x4MndhKzVYVXRkQnQ2SnVIdWQrREJDMU00Mk41NzduM0MrRmJYb2V3enlWNG9YUEdzOXBzaVlGSEZha2sva3lwWU1UKzRyMnhGTC9YTWxxL0dDRnZvdTYrU3JITUttaU5oU0dCZ0FBZ0dzUjFIVTRWZEFPM1BlRFk0Sll0VldwK2I2U3pFTGFwYlZWcVRZd0t2T1c2dVozT3VuY1ZkSjhUbFAwWU81bmt0UXNSV28zdGRYbmlXVkZ1QzBJblVxTkJpbG1IRFF5TDRPUmR5SGZNNUFuYlZXU3l4WUFBQUJlMlBHU3BIbDRydkFJdjdQRnBLbGRwb09zdms2cExoN3lkYVU1ZFhWbmZ1NXpXNVhxNms3QWllT2libGJYNEdMelB0elhzY25zZ01PS2REUmYyV0xNS1IxdDdZRUhyWG5ScGxvZ2RaTE5RZnN0NUhzR2N0MVc1VkdDbndzQUFBREsyQWt0U1pPamNlWDZuaDNUa1ZwMEdRbVB0NUN4dGlwZmRTWjdOVnRQd1hOcmkrYVMvV0N3L1VnbTAzOFVkZFA5N3c5U2Y5ZTVvbTdPalRHdkYvbVU4NlJVaXpnS3pnSU81citicnIxcHFkNUNNMVhuTSsxcktCU1VZTWN0NkhGTk9RckxZQW9BQU94Q3lvVjdWUFR4WXlhcks5WHVmSmQyaFI1ekpMVTRMRkVxOC9IUHhUMytMazlqNU1NSTUyUnNWb3lMb202U1dpanNLMHVHZlY0VWRmTXJ3cFRicjR1NmlURW80TXN2K25qaHphcmhzSW5jekEvak94eUQzRWkrdElNbDNyeFRFRHFWWU1OTHFTOFFzdU9mVXAyTHJpY0VHd0FBQUNieHNoSXdSOUlmdlZYNjBZUFZkVkJjTkJNZHl2UHh3NUdpYnB6di9wZGFrOWVjSXhYc1RyYXZQaHBDM3YvNGNRNlg0U1hnWU9UbUs1M05ac0NQeCtpYkJCNkNwYTFKdENEMHAxQnZhT3RjSkxyU1kzVXNxZFVBQUFDQXhjbEtVNjByeDk5Si9UdmdLdnNqZ0ZsSVk1eU5KN2tmZ0loeDdoYmlMZUN3MGxibFFlS3JycjlJNE9IYzF4c1VkZk16b1lueVc1a2NmeFhxRFcyaE9EbCtxUlRWL2l2MHNRUUFBQUNHa0pYalduTW03NUZ5Qm95ajRBSlpCdEluaXp2ZjVuNGNJblRHd3R6bGVBODRyTWhOK0VUbllYRGl0UVFldnJ0NlFadnpVenJDc2VXTDZ5V1Q0ODd6Nm0wangrOTl5UGNNWkorT0RRQUFBRFN6YVZNMTkxbGwvRWFxaFF3eGxvSkxYRS9wYTZ2eW5GMVJVYmtpWmQ2eWdnVWNqQlNWVGp6TmtsVkt4M1h5TmwxYkh5S3huSi9CSjhkdDRDZng5RWxzQXdjQUFFQVVaQ3p3UzJsYmYvamNyUTU5bUJ5R0Q4cnIxOEFCMlJXVjhrTHFWTHhsQjl2eWdnWWNWakpJczJSVzIzVEhUbm9uVmhENlpJbkpjVG1HWmNqM0RJSDBTUUFBQUlpVkZHMThxYlQ1cjZucmtBZUNEZkJKTWpwb3ZjL0JBYnVRV25HNlFQeTM0SmxGQkFvOFdMSUo5bUZmMU0zRGhBb2g5K29FSFE1dE1lMGRQNU9DeGdhVkZqak9kaER6STZIanVMTFBqZ1lBQUFERXJxM0tUN2Jicm5UczgyZkJHQlBTeVhvcDF4L2dsZkw3SEJ5UStabENBdFhKMVFxTjFHM29GTzdZYnRHQWc3bjdSWDJUYUs3OXJtOUYvU2ViMUllMkt1M25OVkx6SVpuVitFdDEwQk1OTnZ5OVRnQUFBSUJVeU1JemxaTngwcTRuRkpwTXhpS0w0WURWM0FpQmgzU3RKcmc1eDh0aW9ZQk9pNlJVNm1PM3ZHUlEzMkhsZFNmZFVoTEJCa24zcytTWFBLVmd3NjBjVDRJTkFBQUFTSktNSFQ0ci9XeTJyZ09yNGVPMnFuMUhzQUdMVWpCWEFzL2svSkptS2J6ZzlXSXgzT0k3SE5hdE9nUkVDS094TVUwVXh1Tm1DUUFBZ0Z5MFZmbWlxSnNEcFRYc25wTmlLVDZjTDJqVjJmRmc4OHUvNWtTbFpaVzl4ZngzanUwT3VVZTVIeE5QZmtsTktDaW5MdUN3d3ZZejlVajM0OWFKRkI4Q0FBQUFzaUdMbDFTbldHSVNXelVtbnhBVm1VZFpwZGcrTmNhODR3dzZvV1loYlBlZVJQREJDZW96UkVodHdHRWxsOExTRVNFSHBsdmNPQUVBQUpBOUdmZXBMTUFwd1pCUk83dmw4eVJWcjArSjY3WXFqM0kvQ0VoRFc1VTI0SEM2K2pCRjNkaEZpTWVjM3ZHMExvaGRDejQ4bHNBSWhhWjNvNVpTNU5RSEhNemR3dEphdDl0bWdaVTlibkU4QVNBcnR3d3VBR0E3dXhDbnFKc1h4cGlQQ2cvVnQ2SnV6bVNDY0pCdEM3V0t1ckdUNXErWVhOeUtYZURJU2x1VnIrUys4RmRSTjNZaS9UMVh3ajIvakRGSE1VMUtTMXZ2TERpVklNU25qSVBUdG83dksxSzFweWVLZ01OS1o3dXQ3Wng5MGRHcUxPeEwwQWR1UEd1cjhpdkhNcmg5SlR1bFRoUzB3U2N0eC9tbGdqWm8wR2pvdkxJUzhRODc2ZlJEUVR1d3JFTVd6NmgwTzJZU2VZUXpKYWt5R2dWdEdLeXR5azh5NW51czhMNTU3dXFGWkR6d2RYMXljUnRaZ0hja3o1U2p5Tk4wMklMaGwzSytVMkg3K1JjSmZaNVVOREdQdjl1cVBOOTI3NUdBaEEzVVBnM2JNbThhbVlEL21zTzhpUVFoVWc1TzIzdjlPWE5nK1NuYU50NFNDVVhkdk9LQjdsVTBCYUVqcWZWQk9pb0FBQUFBQUFBQXlZbzY0TEJDb1IzbnJtUXJYelMwQnh4SW53UUFBQUFBQUFBZ2RVa0VIRllvc0ROYnRBV01GUWNjU0VjRkFBQUFBQUFBSUF0SkJSeFdDRHlNRi9zS2ZJVUJoK2gyaVFBQUFBQUFBQURBSEVrR0hGWUlQQXlTeEFwOFJRR0hhSGVKQUFBQUFBQUFBTUFjU1FjY1ZnZzg5RHBwcS9KU1lic20wUkJ3b0U0REFBQUFBQUFBZ0p4bEVYQllLZXJHcHJpNTBOR2F4VFJ0VlI2azlxRVdEamdjdGxYNWZjSDNCd0FBQUFBQUFJREZaUlZ3V01rMDhKQjBxcCtGQWc2ZjI2cDhzY0Q3QWdBQUFBQUFBSUE2V1FZY1ZvcTZzU3Y5ditsb2pUODVwUG9KSFhBZ2ZSSUFBQUFBQUFBQTNKVjF3R0VsNGNCRE5xbCtRZ1VjQ0RRQUFBQUFBQUFBUUQ4Q0RoMUYzZGlVUXpkcUdqVGQyN1lxejJOdC9CUUJBZzdVYVFBQUFBQUFBQUNBTFFnNGJMQndFZUtwa2l3SVBZVEg4M1hWVnVVclQ2OE5BQUFBQUFBQUFNbDR3S25zdDBxZFU5VE5iMlBNbnNJbTNrR3FIK2V5RGQ0QUFBQUFBQUFBd0JUc2NCaW9xQnViVHFmVTFpNENEZjl4dWNPQll3b0FBQUFBQUFBQTR4RndHS21vbTB0anpMR0NwbEJUb01ORndJRkFBd0FBQUFBQUFBQk1SOEJob3FKdWpvd3hYeFo0YTJvSzlKZ1pjTmh2cS9LM3Q4WUJBQUFBQUFBQVFBWUlPTXhVMU0xRFk4eE5nTGU2YmF2eVlZRDNpZExFZ0FPN1JBQUFBQUFBQUFEQUVRSU9Ecm1zSTlCRnFwL2RSaDc3azdZcUw1ZHFLd0FBQUFBQUFBQ2s2QUZuMVoxVllNQmhnV2xTL2JoRm9BRUFBQUFBQUFBQVBHR0hnMGRGM2RoYUN4Y1Qzb0dKOFpGMjdIRGdlQUlBQUFBQUFBQ0Fad1FjQWhoUjUrRnpXNVV2b3YvQUM5Z1FjQ0RRQUFBQUFBQUFBQUNCRUhBSXJLZ2JteUpwYisxZEtRZzkwMXJBZ1ZSVUFBQUFBQUFBQUJBWUFZZUZGSFh6eGhqem5vTFFidGhBRGtFYkFBQUFBQUFBQUZnT0FZZUFiSkNocmNyemJENndKMFhkSEJoamZyS0xBUUFBQUFBQUFBQjArQi9uSVl5aWJyN2IzUXc1ZkZhZnBCYkdOMXNQbzZpYm8zUS9LUUFBQUFBQUFBREVnMkJEQUZLdm9VeitnNGJSTGJyOXBhZ2Jkb29BQUFBQUFBQUF3TUlJTm5nbUJZelhDME5qZ3JWaTBDdXZaZGNJQUFBQUFBQUFBR0FoMUd6d1JOTDkzS3kvT2tXaHA5a1FhT2k2cFVnMEFBQUFBQUFBQUN5RG5RMGViQW8wWUJwSlE3WEwzb0NBQkFBQUFBQUFBQURBQTRJTmpoRm9jRXRTSkExT1EyVUREbklPQUFBQUFBQUFBQUNCRUd4d3FLaWJ4d1FhM0NucTVuSmlZZTBiT1JjQUFBQUFBQUFBZ0FBSU5qaFMxTTJCTWVaSEVoOUdnYUp1WGhsamptZTA1RWRSTnkrU09TQUFBQUFBQUFBQW9CakJCZ2RrRmYyMzZEK0lFaEs0dVhEUW1vOUYzWndtY1ZBQUFBQUFBQUFBUURHQ0RUTkpmUUIyTkRnaXg5Tmw0T2FkcEdNQ0FBQUFBQUFBQUhoQ3NHRUdpa0Y3NGVONEhrdWhhUUFBQUFBQUFBQ0FCd1FiSmlMUTRGNVJONjNIbHkrTHV2bTkxR2NEQUFBQUFBQUFnSlFSYkppT1FJTkRuZ01OSzN1QjNnY0FBQUFBQUFBQXNrS3dZUUltck4wS3ZlT0E4d2NBQUFBQUFBQUFiaEZzR0ltSmFyZWtsc0xlQXUvYlNpb3NBQUFBQUFBQUFNQk1EemlBd3hGb2NLdW9tMHRiUzJIQkp0d1VkZk9rcmNxZkM3WUJBQUFBQUFBQUFIWXE2dWJJR0xQNjgzVEVFZnRsakxHTHZyOGFZejc1bWc4dDJwYjU4eUZjQlJyYXFpeThOellDUmQyOE1zWmNLR25wWVZ1VjN4VzBBd0FBQUFBQUFBRHMvT2xqWTh5NU1lYTV4Nk5oZ3hDbmJWVmV1bmd4Z2cwRFNFMEJKNmwrQ0RiOE9aNEh4cGh2Q3ByU2RlTHFTd1VBQUFBQUFBQUFZMG5hZDdzbyt0RkNCMi9XSENuQmhoMmtwb0N6VkQrNUJ4dmtDM09qb0NsOTNyWlZlYTZ2V1FBQUFBQUFBQUJTSmVtUnZpajZlRmR0VmI0YSswc0VHN1p3SFdnd0JCdGlxSHN4NllzRUFBQUFBQUFBQUdNb1g1aHRuYlZWZVRyMGh3azJiQ0RGaTQ5ZHYyN093WWFJQ214ZnQxVjVwS0FkQUFBQUFBQUFBQkpVMUkzTnNQSjY0aWRySk4zU1R5bjZiSDF2cTlLV0ExanRsTEJzTU9OZ1FrSHBPNGJPYVJOczZPR3plSEd1d1lhSUFnMHJUVnVWQnpxYUFnQUFBQUFBQUNBVkkyc0UzeHBqM3Jpc055czFkVTlIRnA4K2JLdnkrOWJYSmRod2wrL2l4VGtHRzF3VzJBN3N0cTNLaHhHMkd3QUFBQUFBQUlCQ0l4Wmx2MnlyOHBQdlR5Q3BuRDROM1Btd05lQkFzS0dqcUp2SHhwZ2ZQdDhqdDJDRGo3b1hnUkZ3QUFBQUFBQUFBRERid0VERGs3WXFmeTV4dEl1NitUb2c2TEF4NFBBL1A4MktqMFJ3dkFZYWNpTjFMMklPTkZoN3NqTURBQUFBQUFBQUFDWXA2bVpYQU9HdFhhaStWS0RCL0xkUTN0WjIyTi94WXh1ekFoRnMrRWR6MWUvb1NOMEw1d1cyRjdJWFljMEpBQUFBQUFBQUFBb1VkZlBHR1BOb1MwdjIyNm84MTlCV1cyUmFzdk0wbTM1bTAxd3B3WVk0aXhlckpuVXZ2QlRZWGhMWENRQUFBQUFBQUlBSjNtLzZGZG5Ob0M2elNsdVZkbzczYXRPL1MxYWJPN0lQTnBBaXh5MUpSK1d0d1BiU0NEZ0FBQUFBQUFBQUdHcmIvTFAyK3I1dFZkcnNOZGNiL3ZsZVZwdXNndzFTdkhoUFFWTlNrbnc2S2dJT0FBQUFBQUFBQUhhUmhkbWI1cDkzMVVaUVFlbzQzUGExWmIwT1JiYkJocUp1UGlWUXZGaVZuQ2JoQ1RnQUFBQUFBQUFBMkdGVHNlY3pqYW1UTm1tcjh1R0dmN3BUaCtMQllpMWNrQlRrZUo3alovY2x4OGwzK2N6N01kMFlBQUFBQUFBQUFBVFR1NnVocmNyVG9RMlErcmgyc3Y5SS9saFBSMzRBVyt6NTA1ajM3WEZtakhuWDA3NUxTYmRraXJiTmE0NVlUczVpTlFXMDUrR2FRdktPNVp5T2lvQURBQUFBQUFBQWdMK0t1amszeHJ6dU9TTFAycXI4T3ZSSWVWcmtQYW9OdTlxeW12UE9LbzFTNnNXTGwwRGRpejl1NU5vQ0FBQUFBQUFBQUxNaDBHQ21UUEo3OEVYbWRjZDYyL2Z6UmQwOE5obldiRWkrZUhGSWRvc01kUy8rSXVBQUFBQUFBQUFBWUp2ZXlmcUZsRkxYZUxDMktzODMvT3lmdjg4bTJFQkJYN2VLdXJGNXVJNVQra3dPRUhBQUFBQUFBQUFBTWlkenAvZHNtYXhmeXBTNnhyOTYvdTdQNjJRUmJDRFE0SmJVdmJoSTZUTTVSTUFCQUFBQUFBQUF5TnViV0Q3OWhIUktHejliOHNHR29tNStLbWhHTXFoN01RZ0JCd0FBQUFBQUFDQmZmYW5uUHlnOUdxUFM1TGRWMlp0NnlkWnRlT0NzU1FwSlRZRkhLWC9HQlZEM1loZ2JjTmh2cS9KM0RJMEZBQUFBQUFBQTROV3BweGQvdHVIdmo0d3g3d0tlMGxmSkJodW9LZUFlNmFoR0krQUFBQUFBQUFBQXdQaWFJMnlyOHV1R2Y3Si9meXBGb0tmVVp0aW02ZGtSY1pSa0dpVnFDcmhIb0dFeVVpb0JBQUFBQUFBQW1TanE1a2pUSjIycjhzV3VuNW5RNXI1VVNrK1RDelpRVThDOW9tNVltVDhQQVFjQUFBQUFBQUFnRDZxQ0RaNzA3cVpJY1djRE5RVWNrbXJrZThsOG9PVVFjQUFBQUFBQUFBRFMxemNIMktUMHFUZWxia29xMkVDcUg3ZWt3UGFvYXVUWWlvQURBQUFBQUFBQWtMYURuay8zTTRkem5reXdnVlEvYmxGZzJ4dDIzZ0FBQUFBQUFBRHA2bHRzL0gycFR6dHc4Yk9UdWZVa2dnMmsrbkdMQXR0K3NRTUhBQUFBQUFBQVNKYWFUREd5b0h6bjR1ZTJLcDBFUXg2NGVKRWxGWFZ6U3FvZmR5aXdIWVlOT0xSVldlVHdXUUVBQUFBQUFJRE05ZFk0Y0VIVHd1YW9kemJJQ3Z4M0NwcVNFdEw4Qk1JT0J3QUFBQUFBQUFDcGlEYll3QXA4OTVqOERvOWpEZ0FBQUFBQUFHQkJoNjdlT3VhZERhekFkNGhKNytWdzdBRUFBQUFBQUlDa0hTajljTGV1NmpXWVdHczJNRG5yVmxFM1RxcU5ZenA3RHRxcUhGSVpIZ0NBaldUbjU2b1QrMWorV0EvWE9yZFBGUnpGYTJQTVQvbnp0YTFLYnpsTWdaUkphdGxWUC9LbzgxRzdmMjhVZk85dmpUSGZPL21LK2Q0dnFLaWJJN2xlVnM4SDM5Zkh0Znd2NXg4SVJMN25xLzdnNnZzZXF1YnB2ZSs4TWVhM3l3bE5JRUlhNS8xK3RWWDVlTURQRFZhMGJWeno5akl4dnFlZ0taTm9Ld3BjMU0xM0NteXJjVXZBd1oraWJ1ek44OGZDelhqWlZ1V25oZHZnVmN6SHVhZ2JPK0g1eUUrVEpqdHJxL0pVV1p1Q0t1cm1xNUtKOFM0djUwVytQNDg3RTRTclNVTnRueitrejhhWTgxUW1wR1RRLzBWQlUvRFBkVnVWUjBzZEQ3a21UT2Y3bnZ2MzNnWWtMbzB4bjVpSW5xK29tMWZHbUZjUlhrL1hNakVaVlVDaXFKc1h4cGlQQ3BxQ2Z6NjNWZmtpNWVNaHo1RVg4bDJQZGE3c1ZyN3puK1QrdjlpQ1dDVmp3djBsajRFdnNpaHE2U3cxemlmV045a3dqcDA4anZTdzhQNlg3WGUyVmZsenpvdjB0U3VxWUVOUk4vYkc4MXhCVXliVEZHd282c1oyNUk4Vk5BWC9ORzFWYXQxV0ZUVkZPNktTN0Rpc3hIcWNsUWV5c3d4RXlrcGR0YldaeGo3UHBYUDlLZlBBZ1N0WHhwZzNNZDVMMloycmxwZjdyRXdBbmJPd3g0bnNnKys3eUVUM213eWVNL1laY0trdENLRmtFZzM5RmcwcXV5UUxVMDR6bThlNWx1LzhwZTgzMHJUSVNkdENaUmNVOVlPRHpMdHR1SjRtMzQ4R0hMK3pUdEJ1NTl5R3EydXNyMTNScEZHU1ZSbFJCeG8wa2VOSm9FR2YwZ2FCMnFwOGxmdUJjRWttTGJVNGxZRmdjanFyTXpWNEk4ZDZLTTNCaGoyN0N5M0RRS1RhUU1ORVRFQzRZL3N2eDBYZEdGa0o5eXFHWFdQUzk0Sk92dTcvN0dKeDUxMVJOKy9rMVJyNTNtZWRpa01tdDg4ekhOTjFud0Vyd1NZanQwaXlmNStJcUFOd1JkM1lhK3U5Z3FZc3haNi9wMFhkWEhUZS83TThCMXd2UEdGUlVCNUNMUUxwQ3paNHU4WTZpekllRGduc0ZIVnpPbmNoaC9SRjdvbWlRTFJNRkY0TStGRndQRk53TEx0TzRJNm1WZUhzWEFsamJPQkQrL2JxVWxZeVpZRjdJRWF3azhRZmJZZmFibnRYL2ozSjVqdE1uTG80QUFBZ0FFbEVRVlFNZFFINDFOaEpnbS95dmM4dTFaSjlSc29rd2cyTHgvNnlremNYY2sycy9wd0hiZ1BmZVRoakZ5aXNydVhNQXcyYjJJWElOM0tNU0VVTnJaYnNvNXdOK0psM0EzNW1sOTU1RlBYQkJybHhwTGE2Y1RFY3oyZ2Nzd0lTQ0NlUzFaRkwxOElJU2Z2a3lVc0ZiY0I5TnIvdUR4bDQ4Z3dGOHZDME03bWNiRURQTGhiclREd1NZQmptdFJ3ejBtOGhHblkzczN6UFdSdzZITHVIb2RLUzZmNkc3bGlRZE5KejlBVWJibVBZMlpEU2pXTmZRUnU0RWNmalFsbjZIeUIxVDdSL3ZoeFc3c1F3S1pCNm9mZEVYQkIwQUxMekk3V2dnOTBoSXhPUExCYWI3aDFqS21obSsvZDJ3aysrNjlUNG1jREJoQ21Rb2lGejBIc3pkK1AybFR2NHBEcllrRmdSdmNXTHdpWjJQSDhwYUVNSTM5Z1dDSVRSVnVWUHlmK3UyYzhNTGdjWDJ6bDlVaCtVd2gwWGJMRUhzbU9ERGxFL0wyWHlzYVh1aHpPaFV5b0JnOGk5NmtaeDdiaFljUHdRalZDTG9XUU8rdk9BSDNYZDE3aFVHMnl3MjhjVU5NT1ZKd1FhbkxLVjQrMktwYXVFUHRNMjdFWUJBbW1yVXZ1RTVGN0trNllSN0dxNGxhQVU0bk5ETFJBZ0s0OGswS2k5SnRNOVVvZUMvcjliRkgyRktyYlBLM00wanpnelFIYUNqWG5icWh6VUR5cnFadlRPL1UzekVqWjlsTXBnZ3d3R1U5aytkcmoweEVSaVc4cnNSTStmYmJCdFZkcG80TW55VGZJdnNXQVJvTjIxOHZhbEZJeGZwM3BYUXdUQktHeDN6UE1VeU03SFdCYXhkWFl6TURFT0pFem1aN1R2NUFYZ3hvZWVWd2tkWkR3YzhEUFBKeXhxM0xoclVGMndRVmFmcEZMMDZuRHBvcVBTdVU1bVM5bjZSRTlibFpjRHZ6alJZNElFQ0tPdHlqazVDME5JY2dWVUJMbjF0UWVoTUJCcGxZRHNsTnI3MFRJR1pqY0RrTEJWb1hkUy9nQlo2ZDNGRUxLK2xNeExEMGxGUDdZZjBqZDMveWN0dGFwZ2d3ejhQaXBvaWdzYUFnMHA3UkN4WDVCaXc5OS9WMUo4MnpzS0h3SEJuR2srMUxIbm90N2dRbVdyUkFSQktJeHpROEFCeUl2V2dFTlJOK2NKallFQjlKQkZOUlI2QnpLekphViswUGxpU1VXL1UxRTNid2IrM0tiWCsvUDcyblkycExLYVEwT2c0VlZDTzBRMkJobzYvLzU3MTg4a1lpK3hlaWFBU20xVmFxOGRrTlR1aGdoMk5mUnRmMFg4Q0RnQW1kRVdjSkRGWWE4Vk5BV0FKL0k5Vjcyb0JvQlhmYnNLbHRqaDlITEF6N3dmK0ZxOTg1S1NmVVpQc0NHaEZERWFBZzBIaVQzTUJ1OWF5Q1RnVU1vS0tBQitEWGtZTDBZS1NLWkMrNjZHUVNzOEVDWFNsZ0NaMFRMdVRHMXhHSUQ3Sk5EQTl4eklXKzhPK2REWkN0cXEvRFFrZzhPdUZFK3lXS3N2V0hLNytuOGVURzJrU3dtbGh0RVFhSGlZMlBhOHd5M2JqbnJaZ0lOY1V5bm5Rbnh0cThYYkt1OEsyZ0lreVQ2TWk3clIvTkdTS0NCWjFJMzI5RVFuQ3RvQWorekVZeWFMRlFBSXUxTzRyY3FEcFk1SGdvdkRBS3dwNnVhVVFBT0F0aXAvYnBoWGVHVG5jSWZPZWJvWXIwZ0doN2xaSERZdDF2bzdybDk4WjRPZE1FMWtVdmhrNlVDRFNHbUYzc3VweDFRS1NkOE8rTkdZZlNIOUErRGRFODJIT0pIZERWOFV0R0dqMVZaUXBJMFVoVUIyeW9WVCtKRzdIVWlZQkJUZmNZNEJpRTBMMktLYXc1VWdhcS91L08yaXdRYnA0RDFmc2cyT25HaVlqRWdvRlpWMUpsdDhKcE9BZytwbHlRNlEvZ0h3eUs1Q1VCNjRqSHAzUXdTN0dsUUhtK0JVS1JNREFQS3h5TTZDaEhiMUE5aU1nQ0tBdjdiTkdjZXk2RWtXTzI4S29qN3Ivc2Rpd1lhRXRvNFNhSER2czZ2aXJMSTkrck95eitkVVl1Y2VVRWNDbDJwSkx0aFlhZDdWY0N2Qkp1U0RpUUVnTTZFbi9pWElubktxVnlCN2pNOEJiUEJzdzkrWDJzZjBFbWpZdU5oNVBjWDdranNiVWhqUWFRazBwTFE2cG1tci83TjNiMWRTRzJ2RGdLVzlmQTlFQUVRZ2lBQ0lBSHpkRjBBRTRBaUFDSXdqZ0xuUXRTRUNRd1NnQ0R4RUFCT0I5aXBjWTQveEhQcWdWcjlWZXA2MTV2Zis5cjg5VXkxMXQ2UjZUOTJqS1g5aC9uMUhVLzdPYUdSSXdkNTlESHlJaSt3RlcwQlZ3NldEc2FoVDRjRTdZSFBYcmhxRU9MSFFyUU9CM2VRMjRRRC9rVGZrTCtxYThEanE5OGRWZ1lhbWFXNzgrRjhjSk5oUVNhVDNWWkJBdzRlS3NtTk85aldvYlZ4MVR5b2Y4bm5OQmduc3o3anFRbStNRi9yNWo3emhNcXc3cUl2cUdPUUl5L1BuSEsvNHdETWlnRDNMRzNJMXRBa0g5dVNLcmdrUG95VVN0LzN3L0lwQXd5L25QVGZQSG15b0pBUDdhS28yUDd0bysrRjE2ZjI2ejlwM3E1SWNIS281NFBDNGdFeGhLTmx2Z2RkZTFBYnB6Rm1rRzl0WDRKc3lDTjdEOHN4MEQxMURDMkhnWXVZcEF1djRUeVhBR1NtUmVJeVFvSkQzNzMrOTVIK1NFdlJlbi9mL01XdXdJUSs5S0QwTC95aG55UjlVZnVNOU8vUTZwakt1dW5hbXY1TTJFTzdPOHFJTzQ0K2NVUUZNYkZ4MXp5TWYwN1lmRGg0RTM4QXNXYVJicXJydEhtdFIzUURMczlkcU93UG9vVzZTL29CMTVVcUFxL1lsMytTZ3c2UnQ1dGZSOXNOeDdraDAyZjc5cFoxcFpnczI1TktMYnE2L3R5Y2Znd1FhYWhtdS9kMWNnWVl6Zis5ejVRRUhHUld3UDVHcm8xNEVXTU9WQ3FocTBPWUM3VTZBcVgxd1JLRnE1ckVBYTl0Z1gvTDNISFI0dDgvbjZMUm5uLzlPQ2pMY3ZPSi9QbHpWbVdhV1lFUGVITCtzOUtJRVE0U2UzVGxydlliaDJxY3VLeC9hbTlvRERnWkd3MzVFbU5Wem1SellqKzV6NFBYVjNHcVB6V2gzQWd1VForSHRTeTB6OW9BZlNGQUF0cEgzSmRmZEUwM3pZUDQ4RFFpa3RxL2JWbFNsUGZyVUZlRzBnaUVIR05iZHMvOXRuWmJEUDIyenNFMVVzamsrQk9yZlhGUFcrdDFERHVCTUgreTJIMjVVV2dud2ZXQzBERjNZaTl1QjJ3Q2xtNFJ6K3laR2tPOEp3bTY0UkE4bUFiQlhlNW1GZDRnV0NNQ3NKQ2dBVzhsN29tMU9lTmprUHVSeG50czY1NEcvc2U0ZTdoeVZEYVZ2NUY3YWgycE9PZHBVaTZjNWluZFErWU55a09xS0dUeldIeGFtTjY2NjQzUnRpSHBvZzJkWEhRZFl3MFZxYnEvSEZ0cCtDQnU0QS9aalR5MEtTcHFwQkd3Z2VudFFvQXk1azA3VXZjbFhxZjM5SnNuaWV3MDIxTEE1ZmxVZnFybFUxaGJuS0ZMMmFPVUJoNXBhYmtFa2tSOHNRbVpYQmE5cU9Ja1FBQ2VjWjA0SkxNNCtnb3lsenkwRUx1YitFWmhFMnB2TU0yM1QvdVNYQUVmMWx4eGsyRGhwWW0vQmhyWWZpdi9Tblh0dzhVVlNINjJLK253T0VWdjcxQnh3cUt3aUJrTEkzeG16MWl4dVl0ditqWHNXdWFwQlZob0FUZTZKVEgwK09xZnNpWGtzd0tSeTBPRlczcE9lZTZiZ1VRNHdwSit0RXpEMkVteElneVpLeitBSUZHajRzTVlrOEZLRWFVbDFuc29ERHZzY2VBZUxGUG43ckdtYVB3S3M0VWRSSDhhK0hISitFTEVGRGR3QmhkRFNOQXd6bVppY2RvdkF2cVd1TUdjMi85TSs5UzhUQjlDUG1xWjVjT1p2VEpJY1B2bUE2SHhEOVdMcTN6dW5RSUdHMS9zYVZIWUlVVnBTWFNadE9GVTZOUHBlK214cUV3S1RPOHJEbWNKSm02VGpxZ3NSYU13VmVpR2xySkdvYXlPRWxFQWo0QUFMa2dZNmo2dnUzVVN2MkhEb3d6dUoxTUtYcW1pM0dNZlIwZzhBeTVDckRTNE1kRjZRS0hXYzUwN09adkpnUXdVOTRrTmt0dWNCbjlWY3ZLSUVjTlpSY2NBaGZUYUxPUTlRZ2hUNWIvc2haTEFoVnpkRStjeEhyZEJiNm9QSmd6Mys3dnRuL25tbmd2WUMxU1I5Y0ttNVM5VG5kclRuek82em4vc2FQalBQbTZhWkt0aFFXckR5UzM3dG40TzNQMXpIN0pzcmhIWFhxYmxTeXBUK2tELzNSWDF1b2lSWFFRUlJQZytUQmhzcTZBMS9OMElyaFZ3ZEVuTEE1elpLQ2pTY3FqWGdrQWFObDFCaEFvVjVHbmdvODYxRFAyZ0hyMm9JTjBOb0RudStDYjN3ZDZkczRWd3BZRmpxNFgyODdGd3R5UEZDTXA2UEQvaTVmNUl6OEVvS1BFNFpNQ2toK1BMTExuMlpDZW1vZ21EUkZENVBXS1gwTDdsMWVLbDg1b0c5bWl6WVVNRkE2S2NSV3N5MC9YQzlndXFRczRxZGdWQnB3T0ZhdWpIYVpwbzhjTDYwVWRYMlE5UUE4WjhCcWh1aVZqWDhFbUFOaTVJZitMOC85T2NTMzRpelJaYmlnM3NCNXBDRE9kOERPam53VUUxQ1ZRViszdGRHTEFmM1ZyYjMzcFhXT3Z5cGRtTEFYQ1laRU4zMncvUENzOVNPQW4zeDFyU3hIYUpTWkJlVkRvMStrWU5hd0hUQ2xtZW42b1lEL3Uyd0Q3b3l1ZzRyYllMa3lzZDl0blNhaENIUk1JM1RJWWROMDd4eVNBOHJENEVVYUlENlBjMmZkNEVHWURZN0J4dnlwdVd2QloreUlVb2JoUXJhVUowVm9sSmtDam5nVUZ1Zng5cm1VY0JCNWUrN2s2Qm40WkRmeFZIYlI0VGY0RjZLTTBHSHlBeDRoUW5scXByUXlUeTVyVzJWU214eEM1RVU4djF3SXNnQUhNb1VsUTBsYjFxbUwrQVFGNHJVU3ovQU1xYnlXMjBYdGJ5UldGWEFvZTBIMlV3d3JZTlZFRnpoMmlHcW1ZSlhOV2d0RUV6d3pTL0JCcGhZU3VieHVUK0lueXQ5WFRDbjZHMEkzNXZUQ0J6U1RzR0cwdWMwUlBrQ3pzZXhwS0ZwbDBrWHR1ZHhsN2U5SEhDbzZRYjlvWFpLTUoxY0JmVWw2Q0U5eEpEQXFGVU50YlhHcTBiZ2pjZW9jMGVnQmxHVGVhcHNuNloxRWt6aVllRERtUFpqSkVrQUI3VjFzS0h0aDBjbHoybUk4a0Niczh0TG5uZHgxbEQ3aFMzZm9EOE5zSlNwYUtjRUV4cFhuZXFHdjY1dFVhdmJ2cFErUzJnQkRPNkdCY25KUEJFRDlWRUQ1cnQ0WCs3U2dUV2NDRFFBRWV4UzJmQjd3V2N3UkFaTjJ3OHZnMGZGTnhHbUpkVys1UlpSUjdXOG5zQ2JnbENxcU44UGMxWWpQcDd4YjYwdGNEQ0l6T0J1V0I3ZnpiUHgvUW9WMHpvSmlHS3JZRVBoZzR4ZlJSaGNuQ3REWGh4NkhWTloyb1V0RHhVZkFpeGxDbysxVTRMcDVPK0hpR1pwQlJNNGdGbE5rSGdCZmx2NkFZQUZPbkhTOTh1OEl0aGQydzlSNy9NZkJGZ0R3SGNiQnh0eU5uNnBVcHVmZzYrLzdZYzdoVmVHL0V2dzRXNTdreXM1b3ZabjM1UjJTakN0a08zVzJuNllZM1pEMUtxR3FBK0gvS0RXMlUvQXBYeEhBeVVJK1YwbG1BaEVzazFsUTdIWitCSGEvT1FNOGsrSFhzZUVGajFvczZheTc4QlpHbENjM0c0dG9yMVdOd1JPU0hnVllBMEFYTURnWXFBUUVlZTVxR29BUXRrbzJGQnkrNlJBMmZjMVpaRGZNR2l6cXNxT053SFdBRFVKZWVQZjlzTStNNTlDSmlSRXFHcGtZNkVxQjl0K3VCOWdHUUFBLzZLcUFZaG03V0JEMnc4bGw3U0hHQWhkbWJzQ0RmK29KZUN3NTAxSVdKVEFOLzU3eWNnS1hOVWcyNnRNVWF1RGdQMHh0MkdQekdpREtwbHpCWVN6U1dYRHI0V2V2cU1JQTZFcjh6VFNNYzB6TUNLNEhXUWR1NGhZRmdvbEM5bHFiaytCeGFoVkRZS29aWExlWUhtMFV0b3ZGVnBRR1hPdWdJaldDamJNTkZCeUgwNE1oSnpjVWFSZTVIbk93S01BUzBrWCt1T29RMkUzMGZhRGloV1lTSzRBaXpoSWZ0TEFZdUNaTDR1ZUsxU3lnRUVpbTNTd2Z4TEU5c3VtSk95ZzdZY1ErdzRBMFYwWmJNamxsbnNkS0xrdjQ2cFRLanF0SVZMd0psYzBoSm96a0FNeEh3TXNaUmZYbEZuRGRLSU9rbS83WWNyQWNjU1pMMSswK3dNb2ltRERmcWxnaHQxRUN6YThEN0FHZ1A5WXA3S2gxSUhHNWpSTUsxV0pSR2xYbERiSjB1YmRwd0JMK1k5eDFkMnZvT2RzVFlQTUlZS2pnR2ZoOFJTL0pHcFZROVFnRHdBWEVtellNOFB1WVNmUlBqK3ZBNndCNEQ4dURUWVVmRFB5MFp5R2FVV3FFc2xaOTM4R1dNcUZhcWlxeVFFZFlBSlJXL3BOVk4wUXNhcWg5QW96Z01WUmpUYUxQeGJ3R21GZlFuWDhNSmNNaU9xcXlvWWliMFp5WmpuVEhjODIyTEVzSmV1KzlGN2hvUU02VUtCZkFpNTVwK3FHcUwxcjNRY0F3UG5hZnBDVUJ3RHN6WVhCaHNEREhxOWlHT1NFb2dVYTJuNFlBeXhqTFRrNzYxVUJTNzJRMlEwd25YSFZoU3gxYnZ2aDVRNy8rdThUTG1VcVJYL3ZBbENWTHdGZlREZngzQ1lBZ0w5ZFZ0a1FzUzNDVmQ0cnY1MVVxTUJOMncvRm5kdHgxYjBzZkg2RHpDZVkxb09BeC9QRk52OVMxRmFMK1hzWEFDS0llaS85V0lVREZNMXdhQ0NzYzRNTlVkc2lYR1ZjZFVXdU82aTdrUUkzT2RCd0xjQlNObGI0L0laUWZTbWhkRkY3cTI1WnpSaXgxV0xFWUE0QXl4VjVRejlWT0l4dFA5d0pzQlpnTSs4Y0x5Q3FpeW9iSXJaRnVNcnQyTXNyeXROSUE3WnoxazJSZ1lZejdvWlp5WWFVV2NQa0lyYjcyNmlhTVhCVmcwRjVBRVJTd29iZ3B4eDB1QlZnTGNCNkJCdUFzUDRUYkNqMEptTVlWOTF4Z0hYVTRHaGNkV0UybC9OR2R4ZGdLVHZKd1p1UGhTNS9wd0d5d0wvbHFyRndQWnczckc2SVdOVmdaaFA3SkpBRmV4WTFrTDJMU0FsY2EvZ3pCeDFDenBpQ1E0cjIvYVI5T0JEWmVaVU54ZlZ1SEZlZDBzOXBmQnhYWFpqQjRIbmpxNXFON25IVkZmc0FKZE1KcGpXdXVvaWZxYldxRzRKK0gzengwQVZRUFBlYk1UekxRWWV4MVBiS3NBZStud0RXZEY2d29iUjJOYThDcktFR1h5SnRodWZlb1NVT0tiOUtxZTJVbEduQzlNSU5kbHN6YSt2UEdaYXlrYURCRzNaUVk0WXpjQ1VKWlBIOG5vTU9ueVVmc1hEZS93QnIrbGV3b2UySDU2VWR1SEhWdlF5d2pOS2RSTnFvYWZzaERWVCtGR0Fwazh1bDFPSGFwNnloK0ZaV0VNMjQ2aUptQzE3YUhpbm9Sa09wTGVxNFhMUjJCZG9vd2Y3Vm1rVmZ3M1dxTzlObXlUdzNsa2l3QVdCTlAxWTIvRnJZZ1hzUVlBM0ZHMWZkOVdDdjRXdUFOZXhOcVJtNE9RZ0VUQ3RjZGQ0VkdlWGhXaTJXM0tLT1MybmRBY3R6czlKWFhOc01oTWRuMml5RmFjRUxleWJZQUxDbTg5b29GVU9XMmU3R1ZkZEdXays2YVEyd2pEa2NGYmhtVlVRd3NhRFZlZWRXTitTQVk3UldpMW9wMWt0RkhWQ0ZjZFhWM0k3MFRRNDZIT2MydUFEQXd2MTArdklMYktHa3FtRjNOeUl0WmtHQmh2VFE4YVR0aDlLR1h6OXJtcWE0Vm1zQjNWdlNlNTIxUExpcWZkSGNVcnVrY2RVZC8vQm5mL3kvRDA0clJkamFyYVhOeFpDa0ZKdEJ4TVZMVlNtZjJuNUlyK045MEZhUlMzSW5uNHZGbU9FNy9sNmdZNm1GS0JEYVQyY1dWMVFMSlE4TU83czlycnB2VVJiVDlrT1l0Y3dvWmVTK1dNeXJCYzZWcm1jQkh3alRFT2kvSzkrQ1ZqVklPcWhVMncrMXRSeUo2SEgrV1l6VDc5bG9WYjM4cmZZNUFFY0wrc3c5UEpOWTgwcGl3RUdVMWg1N1ovazcvaVJnaTJpQXhTbTFqZExUQUdzbzJkMXpNbFlQcHUySHp3RTNzZmJPalRkd1JxaEtzK2EvdzZBalZqVklPcWpYczZVZkFQWkhqL213b2owTFRKMDV2TlRxNEJlNXpkSTMxU3ZNNE5vUDk2KzFjZzhNaFBZOTJGRGFGL0s0Nm1yUGZObW5wK09xQ3pQZ3MrMkhkd3Z2eTF6aTdBWmdZcm5TN0V1dzQzcjJXaEZ0RStoMmdEV3dCMEdyR3BiVmk2SitobndHRTdUQ2VkTE52RWdWNVFlUzdpTit6NEdIejdsaUV2WkJRQm5nd0U0ckcwckt0UERBdDcyalNJR2F2S0h3TU1CU0RpYk5iaWhwdlV2cjd3eHpHbGRkdEEyd2xCMTJQUTE5RExDV3MwNGlWZWN4bmJ6NUZMR3FvZWJocm5CUXVkSWtZb1h6UGo3M3IvYndPMHVVRXMyKzVzQ0RKRUlBcU14cHNLR2tjbldibmRzWkltMXM1d2NMYlJJQS9pM2F3TGZqUFBReERMMTQ2NVFERFYrRHZqanRDbUFQMm42NDB6VE5tNGpIZGgrVjRGcW9udXR4RGpxTVdwekIydHlYQUtFVk43TkJDZXBXVWhib25TaUxpZnhnY1NDL0xQSlZBLzh4cnJwb0FmWGFlMmdUUUs2YWl4cG9NQjhFOWlCWE9IOWE0TEYxSGJ2WW14eDBPRjVJMzMwQXFGSnB3UVl0bExZUUtRczBaeTR1OGNIaVF1T3FpOWlmR2pnY2JSWXVFREFZd3c1eW02NlVSUEtINHdqTGtJS0xhVU41cVJYT3JtTnJTUldWZitiQWcrY2tBQ2pNVDRXdHQ2VFpFaUdNcTY0TnRxU3dtWXNBRWFRMkMyMC92SEF5L2tNUXBnSTU2ZUNsVm9xd0hEbEx2YVJaYmUvMy9QdVBVdnVnUGYrTldqeHIreUZkTDc0MFRYTkhsd01BaU8rbmtnYStLbVBmVExSQVE4NWlBdUJxRDJSNy81dGUxMlhKOTVkMzhzLzlhTE0vTnZCYk1TdUZBOG9CaFZ2NTg1NSs3aFY4UHZhYVRaL202TFg5SU5pd21adDVxSFQ2bDI2UHErNjRvTFVEd0tMOFpPQnl0VzVFZW1FQ0RkV1lmRmdlOEY4cHVKNGZxUG5MejQ3RGRGeVROeUxJUlExZXFKaGIzMHdKYnJkVHE2QVovazZOL3N6M1NEZFVPZ0JBUFA4VGJLalMzVWczWHJrZk14VndRdyt6dXUxdy8yVmNkZThpcklQbGNkMEQ5aUZuNWg4NXVEdjU2amtUQU9MNVgrRWxydnpYMDNIVmhjaytiL3NocmVWYWdLV0VsZnRYQS94TDNvZzRjVlFFWFRpWUx3NDlMTTVzcmROU095WFgrWjFkTTBpYXBkRmVISWp1ZndXZG9ZOEIxaERkMGJqcTNrWlpZOXNQYVMxZGdLVkVaL0E1Y0s1eDFTMDlHSG1pTHpNSDlNakJoMlVaVjkyczkrV3U4NU41cGtVZ0FNUlFVckNCeXcwNU95YUV0aC9TamJyQlordlJReGU0ekdLRDdUWmhPS1JJbGFKQXZjWlYxenE5MDhoVkRtR2VpUUZnaVVvS05tajNkTEV2NDZxN0UyVXhiVCtrT1NDL0JsZ0tRUEhHVmJmVTJVb3FHamtrN3o5WW5xZUhlc1U1NEtDbDBqVGV0UDFnMWhNQUhJaktodktsRmhPM29yeUt0aDlTME9PUEFFc3Bnc3diWUUydmxuYWdGaHhrSVFEdlAxaWVRN2VqemRWOEFwM1RlSmhuQndJQU14TnNLRnlrRmhONTBQR25BRXNweVp1QzFub1VZQTJ3U09PcWU3bXcxejNiZ0U0NGg4SFFzRHdoN25Oem9QTkJnS1hVb0JOd29FYTVrd1JBV0VVRkc5cCtNS2p2aklEOVBiOEdXRU14Y25DbUpHR0dqOE5DL2J5VWx6MzNnRTc0NGYwWHBtSVVtRWVrMlhmanF2dVFuL01FUG5jbjRBQUFNeXV0c3NGbTV6OXVSRmxJazRkeEJWaEdhWTVMV205NjhBbXdERmlzY2RVdHBmL3d3WHBtZ3hZbXNFZ2hXeFhtd09mdEFFc3BYUW80U0dJQWdKbVVGbXk0Rm1BTkVkd2RWOTIzS0lzUmFOaGNybXJ3ZmdZMlZmMm13NkY3WnJOc1pqWEE4a1J1VlRpdXV1TmM1YUMxMG01K0xiQ3FIQUNLVk56TWhyWWZscjRKOFdCY2RXRktRZHQrQ0JQMEtFeFJWUTFBREduVG9XbWFrNHBQaHd4T0R1bXVvdytMRTZwYS9DSm5XaXZkcnZ3K1lKKzAvQVdBR2Z5dndLR3Zqd09zNFZCK2lkVEtKdmUvbEoyL29UelFxYlRqRnJLOEhKWm9YSFcxWnVhZDVHQUtITUw3U01rY3dDeCtpVlF0dm81YzZYQTlCeDVLZTQ0L3VMWWZYaS84RUFEQTN2MnZ4RGtJYlQrRUxYWGRvNk54MVlXNU9jb1ZKbDJBcFpUb2o5TFdITG04SEJhcXhyN3lodkp5S0NuUTljalJoMFVaSWoxYmJTTU50YzVCaDFTZE1aVDNDZzdpMlFKZk0vWFJFZ3dJN1grRkRuMTlFV0FOYzBvM3cwK2lMS2J0aHljTHJ6RFpXdHNQU3hud0N1eFJoWDNsaDlLeVM2bEh4ZFZDd1BuU05lZE9MY2NtWFQvVDY4bUJoN3ZhTEYydTdZY1M5ei9nckdxK3Y0QTZGVGV6NGRTQ2JoSk9JdDBNdC8yUTF2SW13RktLazRlU1BTeHc2VEtsSUtacTJwdlZ0T2xEVVU3eTVoeXdIRlVGR242VTJzR2RhYlAwTk5icXdyaTM5QU1BeEpmMzNxcVIyNGxIOGNWSFlMOU9ndzBsdG1OWXhFMUNwR3k3dkZuK0tjQlNTbFhxVURLdEpTQ2dpdHFiNlRuTklRd3FHbUJ4anBZVTNCNVgzZHNVZE1pQmg5OENMQ21NaGJabHBoN3VYL1luMHQ2bzg3dy81Z1R1Mldtd0lVeUxuazIwL1RDV3M5ck5CY3kySzNXei9PQkticDlrWUN1RVZueldZcVEyZ1N6R0w2cHBZSEh1THZsNk02NjY1MmZtTzlRNDkybFRTMnZMdkNSTDZJRGhIZ1lJN1h1d29lVE54RHcvb0RyUkFnMjFCM2IyS1plL2xkZytxWkZ4RExHbHJNWENUNUVXRDh6cEpHZjVGajBVbHQxVVZCWEdlcjdrei8xbngrdnYrUTczelhlZ1ZvWE9KSVh6MURhanI3Ylh3eVhPem13b05jT2h4dmtCTndLczRXOENEVHNydHZXVWpHTW93dTFTVDFNRndSTEs4VURicE1WN2IwYkg0dHdlVjkydHBSK0VpeXg5dmtQYkQrNUI2ckx2Ny9oSSsyWG1qdXlQWU5VeU9NOTc5dE9aWC8rbzFEWTViVDk4cStnQk1wWDRmZ3V3anUvU3NRMndqR0lWZnZ4a091MUhHa1pVNjhOTmVxQi9IR0FkaTVLcUU5dCtTSi9YYTRXOTdyc0Ixa0Q5bmdwcW5ldVZESDhxZGxzYjBNM2s3OG52MzVWdFA2VHFyMmNGTFg5YmowdHRKNzJHQnpMOG9YZ3FHeWpXMzhHR3RNSGQ5a09wcitOYTJ3L1BLeWlMZnhxcHhMZnRoK01DTjYvQ3lOa3lKUjgvdlNEMzQ3aldEWjYySCs0TE5oeEdDcmdYVm9WMm9xVUZlNVNDdXZkdE5zS2lwS3ptUjA3NTd0SjhoNlpwbnJmOWtKTDUzc21paHU4Kyt5d3NRcVJrMGRyMll5SzlIczhJZS9hL0gzNTl5ZVdUditZYm9sSWRSY3E4YS9zaFpVTGNETENVSXVVNURVVnZ1dHFrZ2VLVTFBNVJXd3VtbGdJTVArZmU3TGRjdzJBUjNxZjJzL2x6TDlBd3NTWE1kOGpQYkxBT0hSK1dJVkl5VkcySnY1RmVqK2VFUFR2YlJ1bDcrV1RiRHlYUFFFaHRvRXJzeFRwRTZvMmZNL0pGN1hkVDdKeUc3RUdJVlFCclN4c0NoVlEzZkluVUxwQmlwVTJ2MTFvQndhS2tvR0txWm4vbnRNOHJWeU4rVCt4cisrRkpSWE1UbjFmY1NvbHBxY2dGV05PUGxRM0pxNUlQWHRzUHBWMEVVaXVKTUJrVitlWlJHNVFkMURCUVc0OVBLTlp2MFJkdVdDZGJTRlU3djV6SllHN3pVRk9CQmxpV213SU5oNWNTRkUrL2kwdTQ3N2lDNTE3V0pWRm1BZXlETElQenZILy9DVFpVOE9EV3Bma05BZGF4bGtpRHJYTVphUzFaS2dkUnlVQnRWUTFRcU54bk9iSWo3eTJ5ai9ublZmNTVrSWU2dHVmOHBEWWVyMVhFQUFVbWxsVXQzWGZrb01PTlZLMi85T05CdmFKdFRyYjlJSGtIQ091bkN4WjJWSGlVUDgxdmVCdjlvVFRmbUlXUTUxMlUzdnJub1BMRFQvRjk5VVI1b1hoUG93YU9JN1VNWExKSTl4L0FMRjV0bWxBV3VGSTNKWmFaeXhKTWZ1NytYcTFmV1pzbGlPcCswelJoWm40Q25IVmVHNlZhTmdPK0JsakRoUUkrNkljK1h0RzEvWkFlNExvS1hzcnRBR3NBZHBEYUd3UTlmcjhFV0FNQTY0bmNXdmZQQUd2Z0FxZHRsbkx5QTdBZkVuZ1dvTzJIUnpXOHlscGVCK3M3TjlpUUZUMjdvWW1ka1hNandCcitWc09NZ1VQSzdhZGVWUEJTVG1TSlFUWENCUTVURzV3QXl3QmdEZEZiNjZZcTlnREw0QkpuZ2c3dkhTZVkzRDJIZEJGcUNTb0pqaTNNaGNHR1dvYnVCZXpyZVRkU2V5ZUJodDNVMUg0cTB2d1FZRGNCQTRkbXdRQ1VKMVNDMUE4TTlpM0V1T3BTUnV2ZHFLdHQrK0YrZ0dVQW5PZGhKVWVsbHRmQm1pNnJiR2dxMlJ6b0ltVytqS3N1VFBDamttSEdoMVpMK3lsRFc0RzlNUXNHb0R3NVFlcGoxSVZMbWlwSGZnYU9HcndTYkFDQUNWMGFiS2hvYytCeEhsUkZWc3N3NDBPcTZRSEgwRllBQUg0MHJyclFHN0dlOGNxUmcxZm1PRkN5SWRMYVZlWHNUZGdnTzVOd2ZtZHdWV1ZERTd4OGRoTnZjbS85eGN1VkhqVU1NLzd1RUMyL0tzdWtNaFFhQUlDTGhHMkJrNTd4QXF5Qk5hVTVEZ0dQbFExYjFoVXRHYmVLMXVjQmhXckZYdnB3NVlEcmo5WnF2MHBYQmh1aWw4OXU2RlB1c2I5WWJUKzhyS25IYVI0Nk5xdksyazhOaGtJREFIQ1IzQUxuUzlRRDFQYURlOW15bU9ORXFkNEZXN2NoMGZzUkxhajBPc0FhZGhGdC9kcjd6bUNkeW9idzViTWJxcVhIL3NaeVJQRkZZY3UrMElFQ0RWVzFueHBYbldvZkFBQXVOYTY2VzRHUDBFMFY3T1V3eDRsU2VlOHVSclR6ZkRQQUduWVJiZjAreHpOWUs5aVFWWk9Cc01SaFl2a0cvUGNBUzVuSzdPMjljcUNobXZaVDJpY0JBTENCeVAzMlB3VllBOENzY290c0pwUzd1NFRTOWtQa2dQK0ZJcTQ3NHZtdDBkckJoaHpGRFZzK3U2a2xCUnh5NjZpYWJzRHZ6djBGVWR1Y2k2WnAzbXVmQkFEQXVuSy8vWk9vQjZ6dGgyZ3RUZ0QyclpvVzJWeXExR3g4VlFRTHRVbGxRL1R5MmZ2dERrY0FBQ0FBU1VSQlZJMVYxbnYvTWpXMWpucWErOGJPcHJZNUY4MWZuK1dpaHd3QkFEQy9jZFZGbm4vM2NPbnorUXBTeTB4SU9EaHQ1QmFoMUZaS3BiZUFZa3NiQlJ1eW1nWTZYYXQ5b0ZobEZSeS81WXlxMmJUOThLU21PUmZOZ1daZEFBQlFqZDhDdjVERnp1Y0RaaEV4VUthTjNBS1UxaklyNkhyRFZtZldadU5nUTIzdGxQSkFzVmt6NWVkU1dhQWh0ZjE1UHVjZnpCa0NiK2I4bXpPSTNHc1hBSURnNXI0bjMxVGJENkhYQnhUdGRjVEZ0LzF3UDhBeWFoSXhxRjVhdDQySTZ6WGpaQ2JiVkRaVTEwNHA5ZUt2TGVCUVdZdW9ZZTYyUHpuUVVGdUd3REIzWlFnQUFGVzZFZmhGL1JwZ0RWeE8yeGVLTks2NnFMTmgvZ2l3aHBxRVBNK2xkR1lKdkw5cXR0Tk10Z28yWkhjTGU2MVg2V3FaNUo4LzJOY0NMR1VLSitPcW0vVm10TUtCMnQvTmZSd0JBS2pUdU9xK1JlNjd2NkRaZktXcTVWa1Z3cWk5UmZpY2NrZVhpRzVHcjJMSmlidGRnS1g4UitEeldwMnRndzE1U0c5dGc1MGVseDV3eU9zUCtjSGV4dHhENkhLZ29icGVyK1kwQUFBd3BYSFZSZDd3dUthdENMQXdOMnRKb09WU2YrUjlxNmpNRUdHbnlvYm9ONWpiS2piZ2tJY1psOWJIN1VJSDJpQ3ZjYWhjVFVQZEFRQ0lJM0sxdTdZaUFRa0NVWUdqd0MraCtBUmExaEp5MzZxeXViSHNZS2RnUTFOdnhuUnhYOUFWRGpPZXZROXNwVitNUjByRkFBRFloMXp0L2lYcXdXMzd3WDF3UElKQWxPNWw4UFUvcm0wbTZZRkVIQkw5dDdSL2xmY0JJNnpsZWdIN2FhSFBaMjEyRGpaa1R5czhOc1VFSE5wK3VGVlpxZEtOM0FkMk5wVUdHdEs4aXljQjFnRUFRS1hHVlhjcjhDdTdGN3pkeEtJRTNRQVZrR0lqNDZvcllUWkNsemVqSTM4L1IvZTZnRFYrYXZ2aG9FT1A4NzVwQ1IxQ1NqaWYxWmdrMkRDdXV2VG1HaW84UHVFRER2bm0rYzhBUzVuS1hZR0dhY3c5N3dJQWdNWDZKZkFMcjdGTmFuSHkwTzZJc3dVRkc2alpuK216Sitpd3VVS0NTc25ESEZpYXRlSW10WEhQZTJsRnRISXY2SHhXWWFyS2huVGlRcFR2N0VIMGdFTk5OODlQY3luMmJQSk5iM1VNaEFZQVlDN2pxZ3VkTVRqM0pnei9Pdlp2ODRiVXRhQ0hSYnNadGhFNXdQcWphem5vTU9iUG82VEVPcjNJNS9oNFg3TnhVdHVtL1B2SHl0cTRNN0dmcHZ4MWFZT3owaXp4RkhDNEZXMGdkbVhIK2loWHlNd21CeHFpM3ZUdUl2S2dQZ0RnOE5JRDZRdm40UytTTktZUi9GbndSUUY5MW91WE56RWZOVTJUV3JuZUsrSDF6RjFWUDVNLzJyN0d4aE5iT2RsSHhYOEtzTGI5OE9zOEwyRlNqL1ArMXVudi9KaXJlOUxQNTBvL0Q3dDRsYThmSmJuNXczZkFTZE0wYi9NNVBsNG53VGRYd3FTZisvbjcvR1poeCtCSHIySXRwMzZUQmh1eW41dW0rYjNDSTVmNmZYNk9Vc0ZSV1ViK01QZHNnZHd2dE1aQXcrelZJUUFBSlVzYjVBSU9rMGtER0o5RlhGaDZmcHF6eldqZWVOZkNDUTdyV3NyRURqNWI1cER1NVovdkcrb0ZCNm51N21NZlpGeDFMeXRJenJpV3I4dmZyODFMREVTbTh4aGdHWXN5V1J1bFUrT3FTOE5KM2xkNkVMc0lRNjBxeThnL21UdUFrOXRpUmV3WHVxdjNjMWVIQUFEQXFYSFZQUTk4TUs3dHE3WEVCUVFhSUlaOVpXV1gxRXFwZHArV2ZnQWdrc21ERGMxZk41bVBjcWxPalE0YWNLZ3RJMy91SWNhNVgyc1JBMncyZEpJL2R3QUFjRWczQWgvOVB3S3NnVGhxVFpKa0J0Rm4xVENaSTRleWFNN2ZBZXdsMk5BY1lCTjVadDBoMmhqVmxwRS9kN2w2bXBaZllMKzl0VlQrZVFNQW9CQzU1L2ZIcUt0dCsrSERESDhqMUt3L0xoUzVFb2N5MUpwa1N6WjN5MittNWZ3ZHh0NkNEVm5rckpaZFhac3o0SkEzeXF2SnlEOUFvT0ZPcmRQeTlSZ0dBQ0NTY2RWRjNteS9sK2Nwc0hEanFqdGUrakZnWnlGbWVnSkVzdGRnUTg1cStibmlNNTRDRHVPKy8waUZHK1dIQ0VMVjJzT3Y1b0FlQUFEbGVoQjQ1ZVlwSUNPZG5RbFlMVWJOKzVvMWU3cjBBM0FvKzY1c09CMFlYWFdQckgwR0hITFdUVTBiNVhkekVHbzJjd1NFRHVUcDNNY1NBQURXTWE2NjFLN29TOVNEMWZhRGZ1dkxadDRkVTdHaFdibThyMGxoeGxYMzFqazdqTDBIRzVwL2VtUlZuVG13eHczdG1ySnUwdWI0ck1PMUR6RmJZeVpIdmpnQkFJaHNYSFczQWkvdldZQTFjQ0E1R0FZNzgxeStHSytXZmdBSzQzd2QwQ3pCaG1ZaEEyeFR3R0hLL3ArVlplVFB2am1laDc5ZG0vTnZ6dVRFa0JzQUFBcnhTOVJsVnB5WXhPV3E3cnpBUVVSdUc4Y0V4bFgzMG5Fc2gvTjFXTE1GRzVybERMTDltbWNzN0tTeVFNTXc5K1o0MncrcExQYmVuSDl6TGtzSTNBRUFVSWR4MVVWdVYzUXRQemV3SUJLM21KcEttY1dRTFY4RzUrbkFaZzAyWkVzWWFQdXA3WWY3Mi83TGxXWFlmQmxYM2M3Qmx5Mzhmb0MvdVhjTENkZ0JBRkNSNFBld1ZUNDNjQ0ZWRGV6TEV2YTZGazIyZkJtY3A4T2JQZGlRQjlyZURYZ3NwdlpIMnc4YloweTAvZkM1b3RZL0o0Zm8wMXJ4UUdnM0x3QUFsT3EzcU92T3oyQXNnS29HOWlYdmRiMTNnS3VuWlZac3prOEFoNmhzYVBLUTRDV1V0YnhwKzJIdE9RVnRQNlFKOTkxK2x6U2ZRN1Q3eWNld1JnL3l6UXNBQUJSblhIWFBBNis1YS9zaDhqQnJwckdFcEVjT2FGeDEyckpWTHJmTStyTDA0eERVaVpabU1Sd2syTkQ4VTlieU1kangySWZINjJUS3RQMlFlcGsrTFBJVm51TVFwZEo1T0hjMXgvQ01JMStZQUFCVTRIYmdsL0JuZ0RXd1AwTk9lb1I5MDVHZ2NvZm80TUhWekRlTjQyREJodWF2TjBLYWEzQVM3SmpzUTNmWkhJYmNidWxaMGEvdzN3NTFjZjE2b0wrN1Q3TVAxd1lBZ0gwWVY5MXg1SVN6VGFyU0tjdUI1Z2l5UUxramdWWXU5WXNjUEY4aWxXdUJIRFRZMEN3cjhuVHR2RmtDYlQra201NDNoMW5TWHR3OVJMdWZYUVp5UithbUdBQ0FtdVNFczZnZWU3UFZKL2lBY2lxVU94TVlSbDZ4SER6L1plbkhJWWhYS3RkaU9YaXdvVm5ZeGY5c3dDRzMvZmwwMkJWTjZzRUJQK0IvSE9qdjdvMmJZZ0FBS2hVMjYvZThCREdLcHFVTkI1RTdGQmdZWGJGeDFiMWVTSHY0eUliY3BwOUFRZ1FibWdVR0hIS2dvYWEyUDcrWUt6QXBOOFVBQUZRcFB6ZUViYWViMjl4U3ZodUhxTHFIVTNsZ3RJQkR4WEsxM3JEMDQzQWdnMjRnTVlVSk5tUkwybUN0S2RCd2xDTzZCOUgyUTIxUnpJTzBvZ0lBZ0xrRWI2ZGJVNXZiUlVySmpKNnBpQ0FISExSVXFsamU4Qlp3bUpkQVEyQ2hnZzM1WnNCUWo3SkVHR0JjMDd3R3ZlWUFBRmlLc1AydTIzNDREckFNTm5laUhTM1I1RDBUUTZNcmxqZStmMXY2Y1pqSmtVQkRiTkVxRzVxODBlcEx1QXduUHVDVDBtc09BSURGT0dSMTlCcHV0djNnV2Fjc3I0Slh6TEJncVgyY1FGamR4bFgzWEFMMTN0ME5rUERNRmNJRkc1cC9lbmcrRGJBVUx1RkdibElDTndBQUxFN3d6YmRQQWRiQWVtNUkzS0lFK1R2UEhJZEtwUVRxZkk3RHppVXExRWx1ajZjVFNBRkNCaHVhdno2Z2IvVzFpMHRFZmxvQ053QUFMRmpZMWhOdFA3emI5Ti9KeVhQTTQyZnpHU2hObnVPd3BKbWxpNVAzZUg1ZStuR1l5Rk43Wm1VSkcyeG8vdWxySitBUWpFRER0QnhQQUFDV0xMZWVpT3BoMnc4Mk9lSjVsWU1NR3dlRElJSVVJTXQ3QWRydVZDcDlQK1Z6YkY5ek8wZjVlLzV0aVl0ZnN0REJodWFmZ0lPcDduR0l2ay9yZGswdkJnQUF0aFQ1dnZqckZ2K081NmI5ZUpvM243Uk1vZ3BuMnU3WUc5aGU2SUJOMnRjVWROaklhWkRCYklaQ2hRODJOUDlNZFJkd09MeTd5bE1ubFc2VWp5dDZQUUFBc0pWOFgvd3g2dEZyKzJHajZvc3pXY3NQSXIrdVFyelBHMDh5WEtsVytnNDhmWitiNmJDUnA2WDA4VDhUZE5CZTZYeFBCUm5xOEZNcHJ5SUZITnArU0J2ZDF3SXNaNG1LK1FJdnhKRWI1Y1VTc0p1SDd5c0FLTXk0NnU2My9UQUdYZld2VGRPODN2UmZ5dk1iN3AvOTc5cCt1TlUwelpQODM5K2JkSlgxU0p1dFR3cEtkbk9QejJUeVRJZlQ3NHJVS3F4emRQL2p0K0F0K0M2VTI3OTliNmVkQTltL3hsenBMSW85ajF5c21HQkRrd2VzQ0RnY2hJM3hhWDBScVoxWGVzaHIrekRGVWRYMmxRMTJuQTFtL0N1TDBnWUdQL3JpaUJ4TSt2NS9zZERYdmtRMkhyZVVzaG9EQnh3bWthczR6bTBEMVBaRGVrNUlHNDBQeTN0bE8wblhwNWNGUDNlK1crQTVZOC95ZDhXZDA3K1NONlpmTG5CUDdDUUhlMS9YMW0xalhIV3ZUd1BaYlQvY3lmKzU1bWU0ai9tNzN2TjZ4ZHB4TE84K3J2YWJ6MkNHM01ZcXJMWWZQcFQwWld3ZzlHRzAvZkE1UWtaSTdlZS83WWQwUTN6ejBPdndPZnRMa091bGJKVy96a1dVWklrSGJ1NFBSOUpNV0hmM1VjRWI1Wm1sMUd0aTJ3OXAwL2x4Z0tXY092aHpVZHNQOTNNMVJPa1ZFU213a003djI1cmF5dHFuQ090R3JlMmc4M2ZDazJEZmxidjZtTDhiRnAvdzJ2YkQ5WHgrSHhYNm5UL2tRR3gxUVNJdVYyU3dvWEVobjh0SnFpYUp2c2lTZ2cwMlFBOHYzNUROYm1tYmU0NXpMQWM2SDhmbTB2eFh6bGlhL2RycXN4SExvYjRqK2JlNVBoZXVpZE00NE9mbWMwbWJKUGs0M2NvLzkvTTFaKzZFbTVQYzBqSzlCeis0RCtZUWxuenZrOXN2M2NrL1VZS1RwN05yUHVUdmgyL3VUN2QzSnZoOCtteHhpSE04NUVyT1JYN1hjN0ZpZ3cyTmdNUGVsYkl4WGxDd29kcU1DZ0FBQUFCZzJmNVg4cXVYSmI0L2p1M2s3Z28wQUFBQUFBQzFLanJZME5nVTN3dkhkSEpQOTlFSEdBQUFBQUFnaXVLRERZM044YW5kcU92bEhOeDdnNDBBQUFBQWdOcFZFV3hvQkJ5bW90WFB0TktBN1VjMXZTQUFBQUFBZ1BOVUUyeG9CQngycGRYUHhNWlZkNzJxRndRQUFBQUFjSUdxZ2cyTmdNTzJYbW4xTXkzdlF3QUFBQUJnU2FvTE5qUTJlamVWWmdxOExHdko0Wmw3QVFBQUFBQXNTcFhCaGtiQVlWMkRtUUtUTS9jQ0FBQUFBRmljYW9NTmpZRERWZEx3NGp1eGwxZ2NjeThBQUFBQWdFV3FPdGpRQ0RoY3lQRGl5UjJaZXdFQUFBQUFMRlgxd1laR3dPRS9ISS9KcFhaVVR5cDdUUUFBQUFBQWExdEVzS0d4d2Y0M3gyRjYybEVCQUFBQUFFdTNtR0JEWTZNOXVSRmdEVlh4bmdJQUFBQUFXRml3b1ZuMjV2RGRjZFY5QzdDT2FnZzBBQUFBQUFEOFpYSEJobWFabThSUHgxWDNPY0E2YXFKS0JBQUFBQUFnVzJTd29ma240SEFTWUNuN2RqU3V1cmQxdjhUWnFSSUJBQUFBQURoanNjR0c1cStBdy9YS0F3N0R1T3FlQkZoSFRWU0pBQUFBQUFEOFlOSEJocWJ1Z01QSnVPcnVCRmhIVFZTSkFBQUFBQUNjWS9IQmh1YWZnTU1RWUNtVHlhK0o2YWdTQVFBQUFBQzRnR0JEbHFzQXFnZzRMSEFBOXI2cEVnRUFBQUFBdUlSZ3d4bDVRL2tveklLMklOQXdQVlVpQUFBQUFBQ1hFMno0UVc2VlUyckE0VWFBTlZSRjhBWUFBQUFBNEdxQ0RlZklBWWVuNFJaMnVidmpxdnNXZVlHbEVXZ0FBQUFBQUZpUFlNTUZ4bFgzdHFDQXc5TngxWDBPc0k2YXFCSUJBQUFBQUZpVFlNTWxjc0RoYnRnRi91VW9yNVBwcUJJQkFBQUFBTmlBWU1NVmNzVkExQ3ozajdubEU5TlJKUUlBQUFBQXNDSEJoalhrTFBkb0FZY3Y0NnE3SDJBZE5YbWxTZ1FBQUFBQVlIT0NEV3RLQVlkQUE0TlB4bFYzSzhBNmFwTGFVYjFjK2tFQUFBQUFBTmlHWU1PR0lnUWN4bFYzL2RCcnFNeWdIUlVBQUFBQXdQWUVHN2FRQXc0bkIvemJUQ2NGR3U0NG5nQUFBQUFBMnhOczJGS3VMdmd5ODUrTk9xaTZWQ2NDRFFBQUFBQUF1eE5zMkVHZW16RE05T2R1NTBIVlRPTkVPeW9BQUFBQWdHa0lOdXdvWjhZZjdmblBQQmhYM2ZIZVg4eUNDRFFBQUFBQUFFeEhzR0VDZWJqdzB6MzkrcWZqcXZzdzZ3dXFuTGtYQUFBQUFBRFRFbXlZeUxqcTNqWk5jM2ZpWDN1VWZ5L1RuU2VCQmdBQUFBQ0FpUWsyVEdoY2RaOG5IT0k4NUlvSkppTFFBQUFBQUFDd0g0SU5FMHREbkNmWTFEN0pzeUNZaUVBREFBQUFBTUQrQ0Ric3lTNmIyNFlYVDB1Z0FRQUFBQUJndndRYjlpaHZjbi9aNUMvWUdKK1c0d2tBQUFBQXNIK0NEWHMycnJwYlRkTzhYK2V2MkJpZmx1TUpBQUFBQURBUHdZWVpqS3Z1VWRNMHYxenhsNllhTE0xZk15OEVHZ0FBQUFBQVppTFlNSk54MWIxdW11YnVCWC90Ymhvc1hkMkxQb3pCekFzQUFBQUFnSGtKTnN4b1hIV2Z6NmxnZUpyL2UzWjNOSzY2TzQ0akFBQUFBTUM4Zm5LODU1VXJHTnEySDhhOE9mNTJTYTkvajM0ZVY5MjdhbDhkQUFBQUFFQmc3VGlPemc5VmFmc2h0VkZLUVp5SFRkTThHRmZkQjJlWVEycjdJVlhjcFBmaHRhWnB2alJOODBoRkV3QUFBQUFBQUFBQUFBRDhReWNscXZGREFqa2NYQzYwU2UvSjdzeGFialpOODZudGh5YVBiZEZORFFBQUFBQUFBQUFBQUlERk03bUI0clg5OEtScG1qY1h2QTZUR3ppSXRoOVMwY0xqTmYvMlVkTTB6L01ZZVFBQUFBQUFBQUFBQUFCWUhNVU5GR3ZONUhIRkRjenFpbUticTZSeERrL0dWZmZaV1FNQUFBQUFBQUFBQUFCZ1NYNXl0aWxKMncvWG02Wkp4UXFkRTBja2JUL2NhWnJtMDQ1TFN1L3JUMjAvbk9SSkRtK2RaQUFBQUFBQUFBQUFBQUNXd09RR2lyQkRVWVBKRGV4VmZtOGVOMDF6YlU5LzUyaGNkVStjUlFBQUFBQUFBQUFBQUFCcXByaUIwQ2FZMUtDNGdiMXArK0h6akZORWhxWnA3bytyN3BzekNnQUFBQUFBQUFBQUFFQnRmbkpHaWFqdGh6dTVxR0ZmM2ZCaGEyMC92RzJhNXZITVJ6QVZVWHh0KytFa0Z6bDhkZ1lCQUFBQUFBQUFBQUFBcUlYaUJrSlIxRUJrYlQ4OGFacm16WUdYbUQ0Ym45bytEWEpvbm82cjdtM29nd1lBQUFBQUFBQUFBQUFBYTJqSGNYU2NPTGkySDY3bm9vWnU0clU4R0ZmZEIyZVlYUlJRZEhNMHJyb25BZFlCQUFBQUFBQUFBQUFBQUZ0UjNNQkI3YkdvNFpUaUJyWTJ3L3R6YW1tY3cvMXgxWDF6MWdFQUFBQUFBQUFBQUFBb3lVL09Gb2RRWU5JNEM5UDJ3OXVtYVI0WDlxclQ1K2xyMnc4bnVjamhjNEExQVFBQUFBQUFBQUFBQU1DVkZEY3dLMFVOUk5mMnc1T21hZDRVZnFLdU5VM3pLUmM1UEI5WDNkc0Fhd0lBQUFBQUFBQUFBQUNBQy8zUG9XRXV1UlArVjRVTlJOVDJ3NTIySDc1VlVOaHdWaXB5ZU5QMnc5ajJ3OHM0eXdJQUFBQUFBQUFBQUFDQWYydkhjWFJJMkt0YzFQRDRRRWY1d2JqcVBqakRYQ1JQRS9uY05NM05oUnlrbzNIVlBRbXdEZ0FBQUFBQUFBQUFBQUQ0bStJRzlxYnRoeWNCdXVBcmJ1QkNiVCtrOThhOWhSNmhvV21hKytPcSt4WmdMUUFBQUFBQUFBQUFBQURWYS92aFZ0TTB0ODU1bmFsWjk1MGYvcnVMY3FDUHgxVjNYT094VXR6QTVJSVVOWnhTM01CL3RQM3d1bW1hWjQ3TWR5ZTV5T0Z6Z0xVQUFBQUFBQUFBQUFBQWhOZjJ3NTFjakhENkU3SFpkc29SL1h6bTUwUDBvZ2pGRFV3bWYwaFRJY0cxUUVkVmNRTi9DMVo0RTAyNmdEM3llUUVBQUFBQUFBQUFBQUQ0T3pjNjVaNCthcHJtWnFXSFpHaWE1bTNUTk84aUZENG9ibUJuUVlzYVRpbHVJUHA3TktLbjQ2cDd1L1NEQUFBQUFBQUFBQUFBQUN4RHpqVjkzalROWTZmOGU4UHNkMDNUdkp5NzRFRnhBMXRyKytGNlRoanZBaDlGeFEwTFZzaDdOTEtqY2RVOVdmcEJBQUFBQUFBQUFBQUFBT3JTOXNPdFBMSGdubE83bHFNNWloMFVON0NWdGgvZUZsS1pwTGhob1FwNmo1WkFrUU1BQUFBQUFBQUFBQUJRdExZZjd1ZUNocHZPNUU2R3BtbWVqS3Z1ODlTL1dIRURHMm43NFhYVE5NOEtPbXFLR3hhbTdZZVVoUDltNmNkaFQ5TEY2UDY0NnI1Vitlb0FBQUFBQUFBQUFBQ0FxdVFKRGUrYXB1bjIvTHErTkUzek9mK2szT1hqZlU4NStGSGJEM2VhcGttdk4vM3pmdjdudFQzLzJZOU4wenlhS3JkVWNRTnJLVGhoWEhIRFF1UXY1QTh6ZkFuelY1SERvN2t2dWdBQUFBQUFBQUFBQUFEcnlMblByeWZPSy8yU0N5WGU3bU5xd1J6YWZuaVVja0R6ejVUSDVpUTMwTjdwdUNodTRGSVZKSXdyYnFoYzJ3L1hjNVdiRVVIem0rUkNCQUFBQUFBQUFBQUFBRENGaVJ1Nkh6Vk44N0wyWnRCdFA2UXBEK200UFo3ZzErMlVXNnE0Z1hQbGhQRVBNNHhnMlRmRkRSVnIreUZWdnoxYytuRUlRSkVEQUFBQUFBQUFBQUFBY0RBVE5YVC8yRFROODZYblErWmloN2M3Tmg1UHVhVzN4bFgzYmFPL3JiaUJIMVdXTUs2NG9VSnRQN3hzbXViRjBvOURVRS9IVmZkMjZRY0JBQUFBQUFBQUFBQUFtTWVPdWM5RG1scXc5SUtHaStSQ2gzYzdGSTM4TnE2NjUydi9QY1VObktvMFlWeHhRMFhhZm5qVU5NM3ZTejhPaFZEa0FBQUFBQUFBQUFBQUFPeE4ydyszbXFiNXZHWGkvVVpKOTB2WDlzUDFwbWxlTjAzemVJdERzZllVQjhVTjFKNHdycmloQWhPTkN1SXdYUHdCQUFBQUFBQUFBQUNBU2JYOThLUnBtamRiL0U3Tm0zZlU5c1BiTFlzY3JzenJWdHl3WUF0SkdGZmNVTEJjNVpYT1g3ZjBZMUdCbzNIVlBWbjZRUUFBQUFBQUFBQUFBQUIyMC9iRHk2WnBYbXo0Uzk2UHErNlJReitOSFhKOEx5MHVVZHl3UUF0TEdGZmNVS2dkcXJxSVRaRURBQUFBQUFBQUFBQUFzSlV0Q3h2dWpxdnVzeU0rdlMwbmFGeFk0S0M0WVdFV21EQ3V1S0V3TzR3Sm9peUtIQUFBQUFBQUFBQUFBSUMxYlpGaittVmNkYmNpSGVIY3BQN09CTC9xODdqcXZrM3dlM2JXOWtNNnhxbDQ1Tm9Hdit2Y0hHL0ZEUXV4NElSeHhRMkZhUHZoVHA0b3Nza1hHK1VibXFhNUgrVUNDd0FBQUFBQUFBQUFBTVNUODB3L2JiQ3dqK09xdTcrUEY3TGw5SWk1bkRSTjg2NXBtcmR6NTFDMy9YRGNOTTNORGY2Vkd6L21qeXB1cUp5RWNjVU4wZVVLdEhTT3VxVWZpNFZUNUFBQUFBQUFBQUFBQUFDY2E4UEUrYjBWTmpSL3JTWGx2ZDRyNkV3ZE5VM3pmSTRjelEzUDB6Q3V1bjlOc2ZqZmZwYkZvYVdFOGJZZlB1Y0tKWjN3Q2FudGgxUVo5bFZoQS9rOThEVjliK1dDRndBQUFBQUFBQUFBQUlDVWIvcDZnNFQ1TC9zc2JDalU0eGx6Tk8vazZSSHI2TnArZUhMMmY2ZTRvVUp0UDd5Vk1FNWthUnhQMnc5cGJNeERKNG9mS0hJQUFBQUFBQUFBQUFBQXZtdjc0VmJUTk04Mk9Cb0tHeTUybXFQNVpOdGZjSlU4SGVMUkJ2L0s2N1AvaCtLR2lxUTNXazRZZjd6MFkwRk1iVDg4eXUvUkYwNFJWMURrQUFBQUFBQUFBQUFBQUx6YzRBajhNcTY2NDhVZnNhdTkyWE9CdzRlbWFYNWI4MzkrTFRWTlAvMC8ybkVjOTdVdVp0TDJReHJma2Q0RTF4enovM2lRUHlBY2tQY29FeGhTTldXdTZBTUFBQUFBQUFBQUFBQVdJRGZWWHNjd3JybzdjeHlSdGg5U1R1eTlDbzcrN1gwV2cyeHc3azdHVmZlOUViYkpEUVZMM2N4VFYvT21hVDVKR2ljaTcxRW1aSklEQUFBQUFBQUFBQUFBTEVqYkQ4ODNlTFdiVEhoZ25tUDJhczMvWFpyZWNELzloNS8ydXg3MnBlMkh0MDNUUEhhQWljcDdsRDA1TFhJd3lRRUFBQUFBQUFBQUFBRHE5bWpOVi9kbFhIWHZTam9TNDZwcnQvbjMybjY0MVRUTjY2WnBIazZ3akpUbisyU0MzM091Y2RXOWJQdmh4WnIvODdTT0R5WTNGS2J0aDBkNVJJZWtjVUpxKytHSjl5Z3pNTWtCQUFBQUFBQUFBQUFBNm5adnpWZjNkaW52ZzNIVkhZK3JMaFY5M0o3aTk1MU9UTmlqOTJ2KzZ1OTV4NG9iQ3BHcWJOcCtTQjNLZjEvNnNTQ210aC91NVBmb0c2ZUlHU2x5QUFBQUFBQUFBQUFBZ01wc21IVC9ZV25uUHhVNU5FM3pXNENsWEdYdHdwTjB6bjg2MkRKWlc5c1BIemFvUElKWjVZVHlEem5KSEE3bHRNaGhhSnJtL3JqcXZqa1RBQUFBQUFBQUFBQUFVS3kxaXh2R1ZiZTQ0b2FzaEZ6SlRjN05MWk1iQW12NzRYbmJENlBDQnFKcSt5RlZVMzFWMkVBZ0pqa0FBQUFBQUFBQUFBQkErZFl0YnZqb1hNZVZtMVYvV1hPQnQweHVDS2p0aHp1NVN1WGEwbzhGTWFYQ202WnBmblY2Q095MHlPSDl1T29lT1ZFQUFBQUFBQUFBQUFCUXBhVk9iV2cybVc1eFlNZE4wOXhjNS9Vb2JnZ2tkeG4vb0FzK1ViWDlrTDRFLzNDQ0tNakRQQUhuYUZ4MVQ1dzRBQUFBQUFBQUFBQUFLTUk5cCtsaWJUKzhuZUlZamF0dWp1S1FEK3V1VlhGREVQa045bmpweDRHWTJuNjQxVFROWjlORUtOamp0aDhlSzNJQUFBQUFBQUFBQUFDQXFoeVgrR0xhZnRpa3FHQmZoUjRmOS9SN3Q2YTQ0Y0RhZmtoSnRtOFdmUkFJeXpRUktxVElBUUFBQUFBQUFBQUFBT3BSWkhGRGtNa1Vyd09zNFYvK0YyZ3RpNUk2NGJmOThFMWhBMUhsYVNKZkZUWlFxVlRrTU9ZQ013QUFBQUFBQUFBQUFJQWxTVTJpM3dWN3ZmY1VOeHhBSGlQeVo5TTAxeGIzNGdrdkpYdW5wTytVL08xc3NRQnZGRGtBQUFBQUFBQUFBQUFBQzVJS0d5TG1UWDc4S2NBaUZxUHRoK2ROMC95NjlPTkFURzAvM0dtYTVvT2lHeFlxRlRtazhVcjN4MVgzMlpzQUFBQlltalJsdEdtYVcydSs3T3ROMDl3SmRJalNkTlR6bnVVK2o2dnUyd0hXQXdBaHRmMXdmNE4xYlhKdk1JZlArWnAvMWpmN3ViQWZGM3hmelBrY2NORTlmdU0rSHdEV2Q4a3p3Q2JQQmxPNTdQcWVISStyN3RqcEJXQkw5M1ArSzFjN2laNG5xYmhoQnBMR2lhenRoK3Y1L2RrNVVTeGMrbzcrMVBaRCtJczNyR1BENUxTYUNHcFh5UHQ1ZnZrWjV2cUJYMzlVQXVqOHg0WkpZa3V5dU90eWZzYitNZG5ueCsvVTgvNDM2VHAzYzRZbExrN2JEOXUrNUkvNW54L09CRjRGV0F1ejRQdEl1SXJ2c3gyYzg5Mnl6dlUvdVJmMlJSVnNoMnY5bC9SWk9PZkhNeC9GT2JPUGMvcHNldnJQYXI5M2R2anNuenI5RG1qT0pMK2NGbEc1VGg2WXZVbTRrUHVVeXVWOTV1dG5uaWRPLzdtWWZKNEpydkduemw3ci83N0c1eC94NUNzcy9GcnN1N1pnRjhSb2xxTG03N1pCYnV0a2ZtdWE1dVVCditmV2pxbTM0emp1ZHlrTEptazhoQWZqcWxPTmRZRzJIOTQyVGZNNDVPTGc4SVpjNU9DaGhXTGs0UHBuQlpWL2V6cXV1cmRCMXNLR3ZKLy9ZKy92NTdZZlhqWk44MktmZjZOQ2FYUDhrVTN3WmNtYit1OGtvbS9zdDNIVlBaLzdqLzZRZkhqMlAvKzR3UzNaa0YyZDVIdVhENmYvOUR4NUdEa1I0SThsdm5iWTBzL2pxbnRYOHNIN29kRDA3SDgrbTR5eHFJUWc5bWJJMS9uVGE3MW5RZlltUDN2ZXo5OWxkM3lIaFhOeTV2dmdXREgwN3RwK2VKSW1yWmYrT21BbW12VVY0a3lTN2RscnVuM2xjbnc4VXhEeG9mWnJ2VDIxLy9nNHJqcU5yUXJSOXNObnowei9VdngrMzFsdFAzeFlNNDQzKytkMmc3VWRRdHJIZWhMcG5uR0Q0L1diNG9ZOWtUUWVodUtHYzdUOWtCSktmZzIzTUloSmtRUEZhUHZCamQxLy9US3V1dGZSRnNYVnZKL1B0ZGNDQjhkOEp5bVlkRWNBdTI0NUVIV3M2R3A3NDZwcjkvVzdOWmlnRUVOK243NnpYN1VmT1Fud1U0MnZEZmFzaUgxMFNZOFU0Q1JmNjArdjk1NFJ1VkJPSGp2OVVXeGR2eTluRWlNLzU0N0F2aU15MTNqWTJtM2ZKWWVWOXlUVHRmeFIvcWZDaGVYNitFTWhkSEdmVFhIQ2N4MmthUk9iYWZzaDVZTThjOWorYlo4eHVibHQwS1J4R0ZmZHJKTTdwaWh1K1BGY1RaemJPL3N4dWN3RzE1cFhQeDFtaWZWcSt5SGRzUDYrOU9OQVRLcHNZU3NwT2VwcjJ3OUg0NnA3NGhBUzFROWRDdmxIdWpkVDNGQVk3K2NMcGZmelBxYzNIQ25RM2xwS2R2K3o3UWVibkpYSzNmLy9YUHB4Mk5IN1BmLytkd29iS0VDWGY1NzlNR0wvSkwrSDM5WFVUZWxBSGkzeVZjUHU3dWRreTdEeWM2S2tSNkpMejRZUDg4K3ZQMXp2ditROUtrVVBDNUlUSGgvbG40ZExQeDRMZHpQLy9KMzA4c04zeEZrZkYxZ0VJZjRHMjdtVkM2ZllzN3cvL0NoL1g5bUQ1RHozTHJuT24rNzl2WXg2WFJlYnZWQ1loR0F1NVR5ZEkzMnVLMnF5dEc1RDRpNDloNWZld0RnMWNHMzc0ZDFFc2VsMFRMNUZtRlBsVmdBQUlBQkpSRUZVYU5TNDRiWG1nK0tHaWVUTnFjK3FjSWxJaDFHWXhPTzJIeDd2dTJzMkFGemkrajRQVGlyaXl4djB1Z1Z1NzFuZU1CR1FyWWpDaGtsOEdWZmR2aE9PZlhkUnNtdTV3UER4RDRIUFZCVDAycFFIQUtqQ3pkeDE3MnpSdzBrdWVIaXI0S0Y4K2RueFNmNFJMMllYbHlWSHBzS0g1K09xKyt3SUEreEhUcng3b2hrVUUvcHg3eS85UC9kTFQ3NEZtTkVtenovN2JoZzVpN3hQMUxiOThIbUN3c3JUUm8wL0g3akIxdHJGRFNrdTlyLzlybVVaMm41SUg0YXZOcXJDR1RiOFlxdFMvb0w3cXJBQkp2TW1qVWpLSTNJQm9DcmpxcnVmSnppd3ZjZDVOQ1lWT05QSWdPMTlIRmZkTGNjUHRwSzYrLzZSbjBIVHo3Rm5VUUNvU29yYnZNZ0I1dFByL2R1Y0pFOXdLZkd4N1ljUHArY3VGOFcvRUM5bXoxTFJ3NmY4dmpPeEdHQkhhZjgzN2VmblBaZlRhL29mQ2h2WXM1U2srbFVzQ1dBOXVRSFV5WnIvODZwaUtPT3FTNU5KZnB2bzEvMSs0T2ZJZGM5Tkt1cHZGRGZzSUFVVDg0MnRtOXBZVWxIRGpmVEJYbktWYTk0QUg0M0VnNzFKUlE3ZjJuNHczZ3lBcXVTcEE2K2MxWjI4c0NsZFBoUHdKbkdVaTZhQWFkdzhVM0EvNW1RNno2UUFVSmZIUHhRN3ZNelBKaHhZdXUvNm9aamhEeFBrT0xCbnVRa2pBQnRvKytGNWp2T1B1VkdvNGtRT0pjV1M5ajN4R0tBVzZ6NzczS3V0YWNTNDZwNDNUZlB6UkwvdVdXNldQcXM4R1d2ZCs2M3YwOHdWTjJ3aHZmblRqVzRLSmhhMytMb3BhbEIwRTExSzdHbDFRNjdLdGR3aDU3TUFFd0ExR1ZkZFNzei94VW5kaVFLSGdpbHNtTVNyWEN3RjdNL1pycTNmQkVNQm9Fb3ZjbGZYZEwxL1p4OTZYajhrUDM1U3pFQkFuZ0VBcnBCenZNNFdLUDVxMzVkQTdLRURyT2ZkQnNlcHVoajl1T3JTNjcreHdRU0x5M1I1cjJQT0lwQk56c24zNlJLS0d6YVVibmp6V0ZFM3VuR2tEK3hkUlEzZk84WW91b25wdFBEbSswTkorbWN1Y25pNjlBTlRrZE94Z1Rya0FGQ05jZFc5bnJBRHdGS2xBb2ZuU3o4SXBWSFlNSWxYdVVnS21NKzFQRkk0QmVxUFRYUUFnQ285UEZQbzhOb3Azby9jUk95YjVFY0s0ZjBKY0k2Y1AvTTVYOC8vVktCSVlJcVhBZFl3cnJvUE9RZHpIWTlyakpHazNPaHgxYVhyeHNjSmZ0MjFQRGwwN3dYeitXK3NleS8yL2pRSFhISERtczUwdzNmREc4ZHBVY1AxY2RYTlBpb2xpcFI0azBmRmZMS0JGYzZsaFRmanFudWJpeHdlVEZSVngrRTl6b0VsMWZVQVZDRjNBSGpnYk83a1YvY0d4Zm5zMldvblR4VTJ3TUhkUERQUlFSRStBTlRwMlpucFRZb2FkL1JEQXVRYno0UUFVSjZjTy9QdXpNU2x6bWtFZ0twc0VuK3NOall5cnJyN3FkSGNSTC91OXhrYWFHeHlMdjQreDRvYnJxQWJma2lLR3JJY29QN3FvU3lrcCt1K1IxTmxZYTZxdTd0QmhTR3h2Y21CSlVFbEFJcVh1eURjZGlaMzhrYUJReGxTdC9PY0ZNeDJIcVFpYnNjT1Fqa3R3ditjSjlNQUFIVzVkcWFvMFhQbmhzNDB0NU1BQ1FDRlN0MkFjMTdYMXp6cENnQ29VRzdNdUc1dVpWZnoxTXZjYUc2cUpwV3BnY2FIaVg3WHY2VEMwdzBhU0J5ZHpiVlYzSEFCM2ZCRFV0U1FuZGxzZlJ4aVFaeVZ2bVRiYlJKNjB2czZUWGxvbXViR1JPT0RPTHdVVkRxV1FBSkE2Y1pWZDV6dlVVeWIycDRDaCtBVU51enNkaTZHQW1KS3lYcGZGVGtBUU5YZW1OeTBublNNemt4cEFBQUtkT1o2L3J1OExnQllqRTNpN2M5cWpzL251T3hVT1J6MzhuVFF5ZUpIYlQrODNMRHc5UG5aLzBOeHd6bnlRZFVOUHc1RkRWbWVKR0t6TmFhUHVhaGg1d3ZpdU9xK3BmRkI2ZmVsWW9sS2o5ZVMzTXdKSkFKS0FCUXQzNk9raDlrdnp1VFdVcUxKL1VMWFhqV0ZEVHRKeit3M2NoRVVFSjhpQndDbzMyT1RITTZYdWpacUhnWUFaVHRUMU9CNkRnQUxrL09IWDIzd3FxdHVRSGdtaDJPS0hOTnJPWDUwWjlkZmxIUHdYMnp3cnp4TnIrWHNmL0hUcm91b1NUNHBIMVQwaHBFU0pPNHZ2YUNoeVpORW1xWTU5dDRNS1NYMzNmbnh5M1VxdVZqaVNiN0lLbW9wV3dvb1BjNFhZNFVPQUJSclhIVzM4bGpDZTg3aVZ2NW8rK0dCRHZkeEtHell5WmYwblZEdyttSEpUb3NjZmh0WDNYUHZCQUNvVWdyZ3Z4WnIrLzdjOXloM2RRWUFDcFdiQ1Nwb0FJQ0ZHMWZkeTl4UWNOMThoYlEva2hxcnY5N0RrVXY3RFdrdDJ4UUVmTTQvT3p1VFkzbzlyK1ZXL3RsRWlwbC8yTFdoM1JhRkRVZm41VklxYnZnbmNmeURTUTJoL0R5dXVuZExQd2pOWCsvUHo5NmJJYzFhZkpPL3dOOHF3cXFDZ0JJQXhVdFRwdHArZUxmaEdFSCtvY0FoaUZ5b283QmhPMmw2blVra1VMN1RzY3gzVEdBQmdDcWxXTUtudGgrT3BwZzhYUm94WUFBb24wYVFBTUNQY3I3Q0pnM3NmazBGRWVPcWV6VGx3Y3dOc2QvbG40UEw2emxZRHNJV3VjNGZMOXF2K3Q5MHl5cFRUakQ5YWxNcmpOVFJ2RlhZOEs5UmV0NmI4YVQzNmZWREpLYW52NWxIQ2QxdG1tWW80Rmh4dnRPQTB1Y2NYQUdBNHVRSC85K2N1YTM5a1R0S2NDQW1rT3prdmNJR3FFcDZSdjB6ZDlNQkFPcVVKZ3QvYS90aE1aUFg4clFHTVdBQUtGUzZiMG4zTHdvYkFJRHo1T255WHpZNE9BL3ozc2cyVXhhNFJNcDcyQ0xYK2RKR2Vvc3Riamh6TUo4RldBNy9GRFg4Wjd6STBxU3E4L3plTkU0dm5xTW83OU5jNUpBdXREY1VPUlF0WGRDL1NpQUJvRlRqcW52ZU5NMHJKM0JyZnl3cHNTUVNoUTA3T1pxNnF3a1F4b3ZjVlFjQXFOTnBRZVB6MnM5dmFpRFdOTTN2QVpZQ0FHd2hONnI5TTkrL0FBQ2NhNHNDaDlPR3hBZWJibENUMU5RNXg1WCsyUEJsWFZyWTBDeXh1R0dIZzhsK0tHcklVa1dZcXZPd1V2SEFqWWdqbTlNb29WVGtrRDVIS2Nrb3dKTFl6Z3VWb1FDVWFseDFxVWp2cVJPNHRUOFZPTXhMWWNOT1hrVjhMZ0ltMWVYblUxTUdBYUJlditiay95cmxPTEFHWWdCUW9KelQ5VTJqV2dCZ1hibkE0ZjJHQit4ZWFrQmU4LzdJUHAzSnc5OW1ZdWFycXdvYm1xVVZOK1Ezb3ZHak1TaHF5TTU4MEQrcE9nL25wR21hMjdsNDRGdjB4YVlrbzF6azhGdUE1YkM1MDhwUVhUSUJLRTYrcjMvZ3pHMU5nY05NOHI2QXdvYnRQTTNGVEVEOXJ1VXBnNjVOQUZDdnh6VjJLV3o3NFZnY0dBREsxUGJEbzV6VEpXOEdBTmhJbmpyLzh4Wkg3WEV1Y3Znc0puSzEzTUQ5ZUljOC9MdnJ4cHNYVWR5UWJvRFRHMUNYamhDT0ZEWDhROEZOYUEvR1ZYZDlYSFhIcFMxOFhIWFBjNUdERHNwbDZ2Sk5VL1dqd1FHb3k3anFVbExFYmFkMWEzL3FrcjFmK2ZuTHZzQjJIbmlPaDBWU2ZBY0FkYnRYVTRGRERxN2ZETEFVQUdCRGJUKzhicHJtZDhjTkFOald1T3JlNVp6SllZdGYwZVdZU01yWmV5MXUvNDhVSjJyNzRWM093ZiswNWQ3TCs1dzN2bmJUNTZxTEczSkgvR00zd0NHY0ZqVThXZnFCYVA1NmJ6NVJjQlBXNlZTUjRqZjBVL0xSbVNLSGt3QkxZak5wTlBnM2lTUUFsQ1FYaHQ1dzc3RzFZeHNsKzZHd1lTZTNhM2crQXJhbXdBRUE2bll2UHk4VkxSZHBLR3dBZ0FMbDYvZ3o1dzRBbU1LNDZ1NmtDUUU3NUN3OHk5T3RVNkhEaDdZZjdpL3R4T1Q4NXVPYzQveG4welFQdC94VjZSemN5Sk0xTnZMVGRDOG5Gb2tMWVJ3cGFQaEhHc3ZTTk0wSFkvUkNxdmE5bWp1c3Z2WCtLOUsxbkVqeWZwdUxQQUFjd3JqcXZqVk5jMTNIeEsxY3l3VU90L0p4WkFMMkI3YVdOcHU4RjRIa3Myc1RBRlR0Y1dxMGs2WkNsL2dpOHpQZnZRQkxBUUEySkk0QUFPeERuaEJ3ZllKOHliVGY4RWZiL3owTTRrdlROR25pMUx2YytMRjR1Y0ZWeXB0OVBtRmVhWW96Mzk5a1VzT1BxaXR1U0JValRkTzhDYkNVcFJ2eW0xUFFNMDhSU1lGZ0QyVWhMZWE5T3VGRm0vazl6SldRRDNUTkJhQVU0NnE3bFRzdVNURFlqQUtIQ1NsczJGcmFtTHZqUFFoazEvSSt3aDBIQkFDcTlhenRoOCs1V1ZJeDJuNTQ1SmtQQU1xa3NBRUEyTGN6K1pJcGdmOWQwelRkam44eTNidjhtbjdPRkR3ME9RZjF3K2xQdEJocnpsKytuMzhlN2ZFZWJMSmMzR3FLRy9MQlA1YXNlM0NLR240Z29TdXNuYXZEU25YbW9uMDlYMUIzdldnem4xUUo2bnNXZ0dLTXErNisrK0d0WE12RjBiY0tYSHNZYlQrOGxPU3lsU0dQYXdVNHEydjc0WFdwSFowQmdMVzhTYy93aFhVZUxLb1lBd0Q0aThJR0FHQk9lYS9qZS95ejdZY1U1M2c1Y2E1NWwzK2U1Yjl4MGYvdVM4NXpiM0xlNXFuak0vLzlWZExydUg3bWYzUS8vL1BPZ2ZMblV4N3VrM0hWdlp2eWwxWlIzS0FUWXdpTFRSUy9TQXI0bm41WkVjN1Qwcm9QN1VOT2pyK2p5S0U0NlR4OWJmdkIreGlBSXVRQ0I4OXNtN3VaQWp4cEFrWnBDNDhnRnphOFdQcHgyTUxIOUprdGJ0WEFYRkpINTdmMi93Q2dhdTlLbWRhVTQzQ2EzZ0ZBWVhKREpJVU5BTUJCaktzdTdTZWtuMzBWT2x6bTVwbjdvSkliUktZaWplZFRGelNjOWI5OS9lSTV0UDN3cE8ySFVaTE1RYVdpaHJ2anFyc3VzUG1YTSs5TGhRM3h2QnBYWFNzaC9OOVNrVVB1ekhvalQxK2hES21MMW5FdVRnR0EwTVpWOXlUZGl6bExHN3VaTzFpeEFZVU5XenRTMkFDc1lXOGIxUUJBQ0YwTzdJZVc5OFhGNFFDZ01Ma1Jra25QQUVBSXFkQWg1ejYzVGRQY1R2SFNuQlBOdjUza2ZJOGJPZi8yMWo0TEc1cFNKemUwL1pBNlYzN1dqZVBnZEEwL28rMkhPN243dmZkbFBPL0hWZmRvNlFmaEtpWTVGT2xtbnVLUUNuZGVMdjFnQUJCYnVsYmxSUDAzVHRWR1RIRFlnTUtHcmJtZkJOYVZya3ZQYzJjakFLQk92NTUyTUF6TTh3djg1WXZqQUpRaU5RclZ2QllBaUdwY2RTbVg0Y25aNWJYOThDai9kdzhYZE9KT2NxT3JOTW43dzZFV1VWeHhRNjdpZGJON1dMOElZUDVESW5ob2FRckIvWnkwejVvVU9SVHBSZTZtZGN2N0hZRElVbkYwTG5ENHc0bmFTRW9rL2FDci91VnljRXhodytZMExnQTJWVUxDSXdDd2c3WWZVdWZDeUJNY1RHMkF2eHdzMFFSZ0U3bUpyY1pIQUVCUjhuU0MvMHdvYVBzaHhlMVQ0Y09kZ3FkU2ZjelBsQjhPV2NSd2tXS0tHM0lGek84QmxySmtSK09xZTdMMGczQ1dZcHV3VG5KUncrZWxINGhkS0hJb3pqVlRIQUFvUVhvd2J2c2hqWFQ4MHduYnlEMEZEaGZMaFEyQ1k1dDdFSEd6Q29ndlRjcng3QWtBVlh1V3IvZmhtdW5rbURIUU5GL0U3b0dDMklPRTg5bGZBeWhRanE5ZWVuK1RpenR2NVFLSTYvay8zOHIvMzNkeXJ0OFVVcTdzYVo3czhZOC9lU0pGY2NJWE4rU2syblRnYndaWXpsTHBmdjhEaVRPaDZUbzZNVVVPeFhtUnY2UHUrTjRHSUtyMEFOMzJ3NDM4WUQzVlEvc1NLSEE0aCtlenJkMVZFQTdzNExuZ0sxVGp4RFFXNEFKUnIvZUtHMWl5TDAzVHBEam9hekVnV0x5UHBUUXRTUk9oNUh6QnY2VHIrVXU1VFFCMXkwVUZ4NG84dHhPNnVDSGY0Qm9yZWppNjMvK2c3WWM3K2N0R0FsWThKb3ZzbVNLSG90ek1VeHdVK3dBUVZycTN5TjBLRkxOdkpoVTR2SFh2K3hlRkRWczV5WVd3UlhicFlEUGpxbXRyUFdSNWp5WTluOTdQSFc1dWVVNmQxYlgwSGV5WkU0cVdraW1lNTlIcWxLdmFLYTU1SC9yT21hNTI5eWZ1YXNmVkZEY3NRMnB5OXk3SGZUNUxtQWNJNzJPK2p5OGlqeWZ2MzhqN09welRUczRmVHJzNG0rUUxBSlFnWkhHREJQSVFmaGJVK0ljSklxRU40NnE3cy9TRE1DZEZEa1Y1MC9iRGM1OFJBS0xLOXhXMzJuNzQ3SjVpSTQvYmZtaVdYdURROXNNamhRMGJTOEdzVzVKVnFNR1pJUDZGQWRsY1JQY29KK2JaMDVuZWs5dzFsdmlxVFg0RzZwWHZXYTlNdk1yUEJhYy80b3JUU3NXTWp5TEZDL1A5bmZPOHZZKzVTN0NrUmlqREE1OVhLbURmWUI1SHFWaFJuaGNBVUl0d3hRMnBBMlZLMUFpd2xLWDZiVngxejVkK0VNNXEreUZ0R055THN5SXlTVGtIcHNpaEdGM2JENk1OVUFBaVM0VjQ3cnMzdHVnQ2g3WWZVdGZXM3dNc3BTUmZ4bFYzYStrSGdXWEpFMHBlNTUvdmNrSmMrcjhmZWp2c0xFMFR1bVVTREFDSGxCTzQvcFhFbFNlOHZWVGNPSWtuUHg3ZkEvTk1zN24zNlR5S3B3RXd0M3hQSm9kZ2VsOXlzYUxDRVFDZ1dtR0tHL0swaGs4QmxySlV1dC8vb08ySDE4YmpoWlNLR3U2WE1tWnhDWDRvY2pEaEpLNC8ybjQ0V25xSFp3RGlHbGZkZmNYdUcxdGtnVU11YlBnandGSks4akY5eHBaK0VLRDVwK0FoZFhZK25kVDUyclZuSjZmSm93QVFSazcwK3A3c2xlT1A3K3hiYnkxYVFham5tdlZwYUFmQW9ka3ZtTTV2dWFCQnNTSUFzQWovaS9BaTIzNTRwN0RoWUZLaStHMkZEZjlJSTNaemwzT0ZEZkU4SFZmZGRZVU5NYVVINmR3SjltNytiaUdlbEFENUxTZndBRUE0T1VuL2xUT3prWFI5WDB5UVNHSERWbzRVTnNENThuTnM2bUxicGowSGgya3J2bDhBQ0MzRkU5SytkYjdlSHpsYm04dlBZWlFqZFhPK29iQUJnRU5xKytHNTR0S2REVG1mcTAzWGRZVU5BTUNTSExTNElYVkx5VW5reHNBZnhtbWl1Tkh4Lzd3ZjA4UEE3d0dXdzc4ZDVRYzJZL1VLa0lORjF4VTVoSFd0YVpxdnFaQnI2UWNDZ0pqR1ZmZFNndW5HWGl5aHdFRmh3MVplbWR3RjYwbDdEam5wVVpIZFp1NlZ0RmdBbGkzZkc5L0lpV0tzVDNGRE9UN21ZaDdKandBY21pSzc3WjNteDl5Unp3VUFMTlhCaWh2YWZuaHJXc1BCU0JRL0kzVXdiL3ZoYzM0L1hndXpNSm9jWUxnaEdhZE1aNG9jSkNmRzlIdWVuQVFBNGVSbmxRZk96RWFxTG5CbysrR1d3b2FOL1pLTGhZQU41TS9OYmNYNjY5UE5HWUNTNU1sTmR4UTBiaVRTdGQ1OXg4Vk9UTzBESUlLMkg1NlkyckFWK1RFQUFObnN4UTBwSVNGM3gzL3NKTXp1aXh2aGY4dEZObCticHVraXJZdnZDUVIzY3lXNjdqS0YwLzB5dElmcG1weUt2SlorSUFDSVoxeDFIL0lrS05iM0lnZU9xcElMRy83MFB0akl6K09xZTEzUWVpR1UxQlV2Rit0L2NXYldJb2tPZ09LWUdyZ1JrNXJLNEJrUWdDamtKRzN1Z2Z3WUFJQi96RnJjMFBiRDg1eVFvRHYrL0o0YVEvcVBsUERUOXNPb3lDYWs5TkIyUFhYOVgvcUJxRTBLRnVVaWg2T2xINHRnMGpYNXEwNmJBRVNVN3dsMXo5N01tNW9LSEJRMmJDVTlVNW5RQmRPNDR4cTBsanNGckJFQS9pTlBEVlRnc0FiN3gwWHdIQWpBd2JYOWNFZGg1RVpPbTlSK0tHak5BQUI3TjF0eFE5c1BLU25sVjZkMGR1OVRNbkhlb0YyODlDQ1ZKNGU4V2ZxeENPaVgvRjcxMEZhNVBEM21SaDZyU0J4L3RQM3cwdmtBSUpyVVBidHBtbHVTU3pkU1JZR0R3b2F0M1BaTUJkUEpUVUlrOGwzTk5FQUFpcFhqWnhyeVhPMVc5QVV1bmFaaEFBUmhhc1A2UG1wU0N3Qnd2cjBYTitSazh0UWh2M01PWnBVU2YrNk9xKzdSZ2w3emhkcCt1SjRMYkQ2WkhCTE9VUzVxTUM1M1FkSURlaHFybUw2bkpDcUc4cUx0Qjhsd0FJU1Q3eDJ1NXk1R3JLZm9Bb2YwRE5jMGpjU005WjNrRGwvSHBTd1lTcEdUeEg1endpNmxJeU1BcFh2dURGNUpjUU1Bc0k1bmp0SmFVcDZNaGhvQUFCZllhM0ZEN2dEOXljR2YzYXVVK0tORHgxL2Fma2hqV0w4cXNBbG55TWszS3ZjWExIMVA1VVJGbzcvanVKY20zT1NFUWdBSUpYVXhTdDJNbkpXMXBRS0g0Z0lrK1Q3a1dHSDYycjdrUFFBZHZtQi9UTGtEZ0lybGUrbFh6dkdsSk44QkFKY3FjUy82UUQ3S2t3RUF1TnplaWh0eTUrY1hqditzdnVSa2NRSFhMRThOZVJoaU1adzZuU3B5Ui9JTnA5TG83elRCdy9qdk1GSWk0ZGUySDNUakFpQ2MzTTNJUGNQNi9pZ3BxS1N3WVdNZmM5RVBzRWQ1LytLOVkzd3hDUXdBVk9DdGt3Z0FzQk1KKzFjN01iRUJBT0Jxa3hjM3BFU0UxUEhaT1BMWlBVMEpEWkxGQ2U2cHFTSmNKbmNvdUpFbmUzQjRmMHBRQVNDaWZNK2dxK2I2aWlod1VOaXdzZmNDWVRBckNZOEFVTEZ4MVIyYkZIaXBLSk4rUHdSWVEwajI4Z0VJNEpHVGNDWFhhd0NBTlV4YTNKQTNUYjVLUkpqVmtLYzFDTEFTMlcrcEs3LzM2Zm5hZm5qZDlvT0pLMWtxMGtxVFBkS0VqeEFMSWlWRDZySUJRRGg1WXQwdnpzemEwalg5VHZBMUtteFlYM3JHRWl5RUdZMnI3cDNqZlNsVFpBQ29nY1Q1aTNWUkY4YmZKRXNDY0RBNVg4emU3dVYrMHdnVUFHQTlreFUzdFAzd1BDVkxPTzZ6U2wzdzc1aldRR0FmYzFIRGN5ZnB2MUxDZU5zUFk5TTB6Nkt0TFlMMFlKL2VQK2toZituSElvQTNDbkFBaUdoY2RhK2Jwdm5aeVZuYnA3WWZRaWFmdHYyZ3NHRjlyenhqd2NGOGNlZ3ZwTGdCZ0Jvb2JxQmtML0pFUkFBNEJFVjJWN0NuQ3dDd3ZrbUtHOXArU04zWWYzWGNaL1BGdEFhQ081MG80Z0gySEtsamJ0c1BxU2pwVGJqRkJaUWY4bTlJSWptNEZCaDV2ZkJqQUVCQXVaUDJBK2RtYlg5R0szREloUTAzQXl5bEJFL3oxQkxnTUk0ZGR3Q0FnOUx3N1hLbWpRRndLSEpETG1jS05RREFCbll1Ym1qN0lYVXhlZXlnenlaMWFMeGxXZ05CblRSTmM5ZEVrZk9sampsdFA2UXhnNTkwcGQxTWVqK2w3NzZVekZYU3VpdjBMQmMwQWtBbzQ2cEx6NlczblpXMWhTbHdVTml3a1FlYUhNREJLVzRBZ0lybFowdGkrK3o4WE9wZWp0MER3T3pYSUVmOFl2OXY3LzZ1bzhheVBRQWY5ZXAzVEFTWUNHUWl3RVFBL2F3SG13amFIUUVtZ2pZUllEL291U0VDN0Fpd0ltZ1RBVGdDelRyZHUzb01sUCtVWFgrT3BPOWJ5K3ZlTzNkbVduVlVxbElkN2QvZU1ZVWFBSUE3ZWxDNElUWkgzS0N1Unk0YWY2cERJd1hMSFVTMytxYTJzVHhIRklSL1RTblZ4UjNjZ09SaXJyNnBxNWdPd21ic0NUZ0FVS0srcVM5aTJ0T2xFM1FuNXpsOHU4a0RFR3hZeUZPRlZsQUU0UVlBZ00xeVAzYTdISEQ0VnRyVVJnREdxMm83VXh0dTlxN2tnd01BS05HOXd3MVJoQ0RZc0I0Zm8yamNoaDBsT3NuRjVqcUl6bGUxM1dIVmRyMEpOOHVWcDRQa3pyVmplazBEa3dNT3duWUFGQ2VtUGVXQy9TL096cTN5SkxHTFRRVWNvbG1DWU1QdGNsam5zZjBBQUFDQS94b2JjTHRITWJYUnN6c0Exa0c0NFdhK2p3RUFGblN2Y0lQdWltdjFXOS9VcnliMGVobU9Mb3BzOXAyem4xVnR0eCtoaGplbEhkdFk1TTYxTWNYaGJPcHJzU0Z2QkJ3QUtGWGYxTnZ1RWU1a0l3RUhVeUR2TElkMHRuTm9aeURIQ3dBQXNBNSs3OTlkYmxUVTU5L2htNTdlQ01Db21SWjB2YTV2NnZOU0R3NEFvRlFMaHhzRUc5Wm0xcDN4dzBSZUw4TXhlMi91S0xMNVdkVjJPM25jYjBycGZXbkhObFo5VSsrYTRyQXhPZUFnNEFSQWtlSWU0YU96YzZ1MUJod0VHKzRzUC9RU2JBQUFBUGpacVRWWldQNGQvalUvdjZyYTdtQmd4dzVBK1lRYnJxZm1Dd0RnSGhZS04wUVJnbURENnAzMVRiMmxpSUVDUGZQZW5DOFhnMVZ0bHhQM242TkFqRFc2TXNXaHMrNXI5ejZIZWliMm1nRVlpSmlDOTg3NXVsVytmMTE1OXlqQmhqdkxld0x1cjZCTXV0MENBR3llY01QOTVkLy9mOFkwaC94M1hMV2RnbFFBSHNxZTcvWGN0d0FBM01PZHd3MTVjOE1ONlZxOGpRNmpVSkxYdVhEY3VMejU0dlB4YTBxcEx2SDRwaVNLd041T2ZSMDJ3RWhyQUlyVk4vV0IrNE03ZVJLVEdsZkNuc0tkbmRnVGdLSUpIbDNQbmhFQWcxZTFuWHZ4QWNqTmpxYStCa3UwbDFMNiswclk0VVBWZHE5Rzgrb0FXRGxOOEc3bXZnVUE0SDUrdmN0L3FtcTd3OWpjWUxWZXVMR2xNTG13WnQ5Sm1TOUc5LzVaNHJGTldkL1VoMUU4ZDI2S3h0bzhpcEdhSHY0QlVLUzRQOGlGKysrZG9SdjlFM0RvbTNxcFhSdmozc3lld3UxeXM0UEQwZzhTSms2byszcW1mQUxBdUpVMk5mbE1nSDRsWHVhL3F2M3VkT2YvNHlnL0F6RFpIWUE1N0pWYzc2elVBd01BS04ydGt4dXF0c3VGelcrY3laVzZUQ2s5Rld5Z0lIbWo4ckZndzN5NWEwM3VZQ1BZVUs2K3FYTlIzbGFCRDF6RzdIa0VmZ0NnU0gxVDV3TDdGODdPclhMQVlXbmR0d1ViN3V5MVlBTU1nb21OQURCdW1yZGNyN1NpOXFNQ2ptRXE2bWdXOGZYS2hJZHZWZHNkNmRZTmdQdW5HNmtCQXdDNHB4dkREVlhiYmV0c3VYSmZVa3JidVJCMzVLK1RZY2hCbTJkOVUrL292dkt6dkVtYk4yeFRTbitWZG16TWw5L0x1UU91NVZtYlArUGVBUUNLRklIeXA4N09yZXFxN1I3ODRFV3c0YzVlUlBnR0tGalZkaDdXMzBEVEZnQkd3dmY5UVBSTi9XSHFhN0JoZVpyejd5bWx6MWNDRC9udlF6Uk9CQUNFR3dBQTd1M1hXLzZEYnJSV3E0dkNXeWpCYnphRDU2dmFiaXMrRDNWb0hLRGNBVGU2RHd1bHJNZXhoNEFBbEN3SHk2dTJlNXhTdW9pSDhjeVhwektkOWsxOXIrOTF3WVk3eStIeXBVM0tBRlpLa1JZQWpGZzhCM2p1SEYrcnhHZkd1YkhSbXdLT2cvOTdtZitxdHJ2YVBQRkxQRGM0MXV3UFlKUThGd1lBWU9tdW5keVFSMG1tbEo1WThwVTVFMnlnRUcvN3BxNEVHK2FMb3F5dmdnM0RGdS92WjFOZmh6WEpoWkN2SnZGS0FSaXNQS1dzYitxdGVNRE85WjdmWjRKRDFYYUhnZzIzeWxQem5nbzJ3REJFc2FQUHRldWRsWHBnQUxDQUE0dDFveEtMMG84S09BWnU5eVJDS0gvL01PWGgyTE1FQU1iTWxFc0FnUHViTzdtaGFydWRHQ1hKYXB6ZHQvc2xMTkZKMzlTNkRsNGp4dWErdjlkL21DTGx3ckdxN1o2bWxNNTFhVjY1WE5Bb01FVXBjbUZ1NzJ3QTgvUk52UjBUbmdSWnI1Yy9SNC92K3RzaGdnMDZaOTRzQnh1MmM4aW01SU1Fdm5Ob09XNmtBeThBWStCM3pNMksrNzdQdjZtcXRudm5tZlpnNWZEd1h0VjJWNCsvdXpMbHdXOW1nR0V3K1dvK2paVUFBQjVnYnJnaE5nMVlEY0VHTmkxdkRPN2FGSnl2YXJ0OGZYNHE4ZGg0dUR6eXVHcTc3WGdRSStDd09uVytsblNqQUdBSThrUzltRTdnSWN6MS9pazJ1QzNnSU5od0oxOXlxR1lBeHdrRVRXRHVSTGloZkcrcXR2TWRQUTBmY3lETGRDaFlURXh3NWdhbDd2WDJUWDBRemFyczk0OURiajd4Wi82N0VucTRqR1pLUjc3Zm1LQlBQd1NBR0tmWjUxeStqL2Y3ZWp5Y1N3Q0FCL2pseC85b2pIL1V0WEkxdmdnMnNFSDVSL0d6WEx3bDJQQ3pYUEJldGQwM3dZYnhpL2YvZGx3VHJJN0pNQUFNUnZ4T08zSEdiclIzVThHUFlNT2RuQWsyd0xCVWJiZVZVaExhdnAwMWduSzhUQ2w5enZ1YzhSa0czQ0lLNC9lczA0M09DajYyN0tDQVkyQjFIc1UxbXIvZitpdC9wL242OVgwSGpNRHNjKzd2YU1MRE9LakpBUUI0Z0ovQ0RibnJnUVZkaVZ4RXV6UEMxOFV3dk82YmVrdEhrNS9sVGMrcTdmSzYvSzJ6ejNSRXdNRm44bXE5R3ZPTEEyQjhZaXJCVzZmMlJuTUREbEVNSk5od3N4UE5EbUJZb2tqSzFMODdNTFVQaXZSSXNTL2NMbjdMdkxkVXR5cjZ1NzV2Nm1NTkN5YnBlVnkvWDY4RUh2TDA3cU9ZNEEwd1JNL3pkUHloSFBlUWpuVUQxT1lBQUR6QWQrR0dtTnJ3eElLdWhHNzViRUl1b0tsaVk1Y2ZSR0hXVjlOcXBpbkdlcjZZK2pxczBLT3E3UVJJQUJpVXZxbno5SUhYenRxTjltSkt3ejhVQTkzSjJ3alBBQU1SRCtlL0NqYmNTZW1kbkFGZ3JxcnRQdmd0YzJmRkJ4bmpOOWVYQWc2RnpjcDFEcjlIOS9PclV4NCtSQjBFd0JBSURBQUFNSG0vL3JBQU92bXN4dXNvb29WMTZmcW1WbFI4RFFWWXpPVHVrbFhiL1pGUyt0T2lySVJ4MEFBTVRnNEc1MDUvS2FWUHp0NjEzbFJ0bDZLanVmdnFtLzNSTjdVSm1UQVFNYTNoVkJPRWhXaW9BY0NnUklqUjc3MEZER2hLMDI1TTZZWWZ2Y3gvc1pjeGs4TXcrZmY2QjgveEFWZ0J6VzhCQUI3Z3YzQkRkRmQrYmpHWDdxT3UrYXpSRjFOQ3JoZWZjNmM2TDNKVkxqYUx3SXZpRlFEZ0h4R0FmS29vNGtadkNqNjJVdnpXTi9XSHFTOENESUZRdy8zWjl3UmdLRFE5dXJlUFF6blFYS0JldGQwTDRSWHU2RWswdnZyelN1amhNb2NkY29CM1FLRWVBTXAwN3J3QUFOemYxY2tOUmpFRmFrK1lBQUFnQUVsRVFWU3V4djRZWHhURnladHR1MzFUKzRFMFJ4UXBYQWcxY0lQOFdmM1pBZ0VBTTFFVThkaDlKUGYwUWlFRWxDMzJDbktuMWoybjZ0NEdVK3dJd0RURmxJYmpLR0xtZmdZMWlTNmFGUWc0Y0YrUDR2ZkIzZzlUSHM0aThDRFlDL0M5WGVzQkFNQXFYQTAzS01KZnZyYzY2TE1HcjIybXphZnpJbmVWZzBGVjI1MlpZQVFBWEpWL3oxVnR0eTNnd0lLZTVuQ01SWU95UkhIanZqRERVZzJxMkJHQWNZdm5BYm1SMjRGbkFrdnpaWWloN1FnNFBOUFFpQ1hLejQ2ZVYyMTNkZnJMeHdnOG1OZ0lBQUFBUy9aUHVLRnF1eDFkUzVhdmIrckRzYjBtaW5MU043VlEwaldxdGp0V3NNQ0N6b1ViQUlBZlJXQjlxMnE3QzcrYnVVV2VxTGV0eVFGc1JvUVhjaUJ0SnpvSEttcGNyYzZFR2dEV0tjSUxzKy81bmZqekcyMjFCaHRraklaR3BqR3lTaS96MzVVSkQ1ZHh6UnpaRndBQUFJQ0htVTF1ZUdVZGwrN2R5RjRQNWNpN1pMczJ4dWFyMmk0SFB0N2Y1ei9MNUxtbUFJQnI5VTI5WGJYZHFUQWsxOGdkVGJjdERxV0p6NjBoMlZGOE5oaWF1Z0NVWVQ4Q2ZrT3hKWUE0SEgxVEQzcEswNVZtQlg3THN3NzVkOHliL0hjbDhIQ1M3NXROZHdRQUFJREZ6TUlOTzladDZZeWdaTmx5eDQ4ZEcyRHp4UVNhVTBVUVBNQ1FIZ0lPZ2k2ZUFJeE4zOVM3Sm9ReHgxbCtiMWdZQ3FXSWkxWElVeHZzZlFLVTRZbnBCYXpJSDJOWjJQZ3RyekVXbTVEM2ovWWk3R0N5QXdBQUFOelJML0Z2MjdKZ3k2V2dreVY3MFRmMWxtRER6L0lvNnFydDhycDhGbXpnZ1FUOUFJQmI5VTJkQ3lMZVdpbkNSOEVHWUlMMm5YUUFHTFV2UTUvYThLTytxWE9qZ3NjeEhSMDJZVGJaNFd2VmRuMmVLQktOMndBWUowRTJBSUFIbUlVYmRIRmJMaHRqTE12cnZxa3JZWm41cXJZN3o1dUFPbFB4VURHNlhUaG11YzdHOUdJQTRLcStxUS96dmJwRm1ieDNmVk8vbXZvaUFKT1RQL3ZPblhZQUdMVlJCaGx6dC95K3FYTXgrYlBvb2crYmxPc3pQa2ZRNFNLZVV3RXdFdlpPQUFBZTVwZXE3YmF0NGRKSjRQSlFKeEZxT0xhU1A2dmE3amh2OXFXVTZ0S09qY0U2ZE9xV1RpZ0xnRkdMZS9VWHp2Smt2ZTJiK21EcWl3Qk16aGVmZlFBd2V1L0czbkFyRnh2bWFlbWFGbENRM01UdFV3UWR6azEwQUFBQVlPcnk1QWJoaHVVekNZUDd5bE0vSHZkTmJiei9IRlhiN1Vlb1lhKzRnMk93cXJaNzVYTjdKWVFiQUJpOUtQaDQ1a3hQenV1WTNnRXdOYnJKQXNDNGRWTUtNdWFtQmJuUm1KQURoYW12VEhRNGNuSUFBQUNZb2wrYzlkVXdFWU1GNWZHM3ovSTQzRHdXMStKOUwzY29xZG91cjh2N2tvNkwwVEFoWlFYRzN0MExBR1ppdlBUVHVLZG4vRjZZc0FkTTFHOTlVMTg0K1FBd1dwZFREVEplQ1RuazVnVmZDamdrbVBuOXlqU0hMYXNDQUFEQVZBZzNySTdPKzl4Vjd2cTVGVVZSWEpFMzZ2S0dYZTVRa2xKNlpHMVl0cXJ0VHIyM1Z1SnNoSzhKQUs0VnhaN2JBZzZqOTFTQUU1aW92SGYxd2NrSGdGR2JmUE90L0p5dWIrcnRDRHE4TGVDUVlDWlBjL2dxNUFBd0hGWGJtWDRKQVBBQXZ4Z252akp2UnZxNldKNTNlWU5VMTgvNW91ajhhMnpZd1NyZVkvbmFlMjVsVjBMUkh3Q1RrNHRBY21oWmw4ZFJ5cUdWeHpxV0F4UDEydDRWQUl6ZVU3OTN2dGMzOVdHRUhCNm5sRDZXZEd4TW1wQURBQUFBazVERERUYXJWaVFLWitGSEh5UFVjR0JsZmxhMTNWRWVzYXJvbkZXcTJ1NHdwYlJua1ZmbWFLU3ZDd0J1bGJzOG1tSTBLbDlpMHQ2a081Z0NreVhZQUFEamRpblljTE5vWlBEcVN0REJSQWRLTUFzNXVGY0hBQUJnbElRYlZtdXZhcnY5TWI5QUZ0SkZ0ODlYbHUxbitWcUpVTVB2cFIwYjR4TEJCdE4xVnVlajRqOEFwcTV2Nmp3aDhXVHE2ekFDWFlSVkFLYm9tV0FEQUl6YUxNanRPZkVkUmREaE1CcVk1YkREQzgwTjJMQmNpOUJYYmJmclJBQUFEOUUzOWFrRmhIRnhYVE4wdjNnVHI5ejdxdTEyUnY0YXVkbGxQQkRlVWZEN3MzeDlWRzJYMStWOWFjZkcrQWcycklXcERRRHc3NGJSdm82T2czYVdmOE5OZlJHQVNmb1N6VG5Pblg0QUdLMTNndHdQbDUreDUrWUdQNFFkUGc3OWRURkluNnEyKytEVUFRQUFNQmEveHV2SVhTV2VPNnNyODdscU8yTmRwOG40L210VWJiZVZVanFOMGFtd2p2ZGN2aGIzclBSS25RbE5Bc0QvNVk2T0VlVDkwN0lNeWttRVV3Q201bTMrN25MV0FXRFVuZ2t4cmtic2pmKzNQeDdQd2ZJMDl3UFB3bGlEbDdFSHRhM1pIZ0RBMHFpbkhRYm5DVVpvRm00NGRaR3YzSG5WZGpZVHBrTXh6QTJpZThqTFlnK1EwYW5hN3R6RGc3VlFCQU1BUCtpYitxaHF1eHgwLzh2YURJTENYbUNLdXBUU3JuMUxBQmcxejYzV0xPNnRqdVB2UDFYYjVjRER2dWRrck1DamxOSlhUUmVCTmNxMVptOHNPQUFBeXpZTE54eTU0Vnk1dkpsd1ViWGRqczJFVWV2NnB0NloraUpjcDJxN1E1ODFyRk4wUnJxSXoyQlc2Nk9wRFFBd1g5L1VINnEyZTVGUyttU0ppbWJ5SGpBMWx4RnEwTDBaQU1aTGlMRXdlWThncGZUaDZsSGxCbmtSZU1oL1Q2YStSanpZMzNrZnlqTWJnSTNhdlRyUkNRQ0F4ZndUYnNnYldsWGJ2VXNwL1c3OVZ1cFJiQ2JvbGpBK2w4WjhYcTlxdTd3Wis3N1U0Mk9jb3Z1UkRzbnJvK3NYQU53Z1AxRE92d1h6YjBMclZDUVAvWUdwRWVnQ2dIRVRhaGlRZUc1OCtPTjA1SGpPa2YvMnByNUdMT3lUZ0FNQUFBQkQ5Y3VWNHo1MEZ0Y21CeHgySi9KYXh5NkhHcDcxVGIxbGcvaG5lVkpKMVhiZkJCdFl0NnJ0amdRYjF1b1BuNEVBY0xzb1ZuZ2N2eU1veDFNUCs0R0ptTzFqVllJTkFEQmFPZFR3T0U4WnQyYzdmSG5LUTkvVSszSC85czlmL2cyYjkrUlRTbCttdmo3YzZsTk1CUUVBdUlzenEvUXpOWjVsYzM2dTVYcG04SDZkdllDWTNwQTNRdjUwV3RjaWJ5YTg3WnRhcUdTNGRMaTdSdFYyV3pGaXJ5N3lBQm10ZU85ZHhLUWMxdU9zYitvamF3MEFkeFBGSlZ0VjIrVjdsaWVXYmFOTTRBT200aVNsZE9EekRnQkd6VE9yaVlqR0NVZng5eDlUSHJoR2ZsNHI0QURETXBqZjdqR3R1SUFqS1pKaVd3Q0FCN2c2dVNGRmNhSTd6L1Y1VTdXZDdwRERjNkxEM2ZXcXRzdnI4bFd3Z1hXcjJ1NGczbnVDRGV2MWFrb3ZGZ0NXcFcvcWJWMHpOa3F3QVJpNzdzcVVobjJmZHpCSkg1eDJHTDEzTWFYQk15dE1lZUE2VCtMWkxUQWNybG1Bc3V3NEgwVVRKb09SK25YT3k4cEZpbjg3NFd2enZHcTdiNG9xQmlFL0ZONTFudWFMd25LVFg5aUlxdTNPQldvMjRvWFBSQUM0djc2cGQ2dTJ5MFZuTHkzalduMkpjQW5BMk9UUTNINTA4d1dteXo0MmpGY09hUitaQ3M5ZG1mSkEyTXY3VHprQVkwR2dhUGszL2FzQjNzZGZhajQ0bDJKb2hzZyt3bnhiSlI0VTNNSXpBZ2J2cDNCRDN1U28ydTUxU3VtOTA3czIrVWIvYTE1M25WV0tkQmtQZzg2bnZoRHp4QWJvWCtVZEdWUGcvYmRSZitSUm94TisvUUN3RkgxVHY2cmFMaGNaL0c1RjErSXNoMG9tOERxQmFjZ2RlQS90SjNJSGJ4WENBZ3pXU1h6ZksweGdhYUxJUGYvdHovNDdxN2JianNCRGJtYjJ4R3FQenJIQ3ZFRjY0VmtjQTVEcmFKNDdVVDhSK0dDSXpqWGptc3N6cGJJNVAvUFpRMkR3NWsxdXlCc2F4MVhiN2VyV3NIYnZxN2JiVjJoUmxOOTBzWml2YXJ1Y05ELzFvNHhOcU5wdUs5NS9walZzeGtuZjFFY2xIaGpNb1loMWdPSzN5S2VwcndQVDBUZjFRVXowZStPMHIxUytoOW5mNEQ4ZjRLRStScmRteFMwQU1FNWZvZ0Q1eVBRVjFzMlVoOUY3bEtmd2U3WURzRDc1V1pjOUhBQ0ErNWtiYmtqL2JtRHNSNGNHQ2R2MWVsNjFYWjlTZW1aU3dFYjlZWE5uUGtYbGJGb09nWmt1dEZGbmlnSUJZUGx5TitXcTdTN2M1NnlNanRYQWtGeEdKOTFqRDhFQllMUSt4dmY5QjBFR1NtYkt3NmdjL2hoZUFWaUNVM1ZsMXpJeGg2RTUxWVJyTHA5eFpYTis1dk5jZ2NHN050eVEvdDJzMkkzaUNwc1M2L2U1YWp0ZEpkZlBtdCtnYXJ0am5WbllsQWpXWEpnV3NsRTY0QVBBQ3NVVXhRdVRTNWJ1ZFY3YmtiMG1ZQnpPb2xEc1ZKTVRBQmlsTGdvS1BnZ3NNaWFtUEF4V250NndiNDhFWUcxMll0OEhHRGlUV01xVXo4dlUxd0RHN01ad1E5aFJUTG94ZTdFSnRPc0I1OHAxc2M2NjQ4eWhVejZiSmxoVEJNRUdBRmlEdkRsYXRkM1RsTkxmMW5zcFh0aHdCallnVDE0NGoyTEdpd2d2WERnUkFEQjYrUjVnMjdNbXBzcVVoMEhJNTBhNEFWZ21uZDZ2NTlrNmd4TFBwNXkwK1haMHdpL1N6dFFYNERxZWpUSUd0NFliOGdaY2JEcDhkY1kzNHBFcERpdDFLVHh5dlVnNDZockx4bmdQRmtPd0FRRFdLQmZBVm0zM1dLT0JCeE5zQUI0cVA4MzdGcC9IRi9HLzV6MmtiL2FTQUlBNTh1KzNyMVhiK1MwQ3daU0g0anpQdFIvQzE4QVMrVHk1M3ZOU0R3eFltQ0w2TWprdk1HSjNtZHd3Q3pqb0hMbFplWXBEM3R4NTV1SHAwcncyZG5PK0NEU2RLNlJpVTZxMjI0clVjKzBrYkp4Z0F3QnN3SlZHQStjNkc5N0xVdy9xNFI4dkpyUU1GNjU3QUNib1pNVWR1SGQxNHIyWFQxWGJ2ZTJiK25DQXh3NXJjY09VaDRQNDF6eWpYSjI4dmo2ZmdLV0lSajBXOHhxNW1hUFFLd056SnBnemw1cVpNamt2ODUyVmVGQ3dxRHVGRzlML2IwaWZLbmpldUR6Rm9ldWJXdkxzL3Q3MVRYMHcxSU5mSlFYbGxLQnF1Mk9kZW9yeHNXL3FWMU5mQkFEWWxCeHdTQ2x0VjIxMzdoNzl6dkowdnUxWU81ZzhEMDhCWVBRdVZ2eDlmMXExWFM0Ky91eXR0TEEzVWN5bTJBTHVLTUxLQi9IM2o2cnRab1g0R2o4c2o4OGxZTmtVUTE5dk4ycHdnR0Y3VXJYZGpvYlU1Y2pudzIrRWEzbEd5aWo4c3NpTGlBMkY3U2dXWUhQcXF1MzYyTXpoN25MMzhVcXdZYjRvS1ArcWFJcE55WjlwK2JOTnNLRVk3d1FiQUtBTUVXN1haZU4yWC9xbTNoSnNBQUNBNVluaWpjZjVmdHV5THV4NTFYYmZvckVVY0E5NUNuL2YxTnZ4akxkS0tmMmhWdUhCRkNBRHk2Ylk5M3FldHpNMHdqalhjejJYeGZtNG51OWxSbUdoY0VPNjBqblNKbVlSM3NlbXFDa09OOHN6OEI3cmpqT2ZnbkkyTFgrRzVjK3kvSm5tWkJUanRTQVlBSlFsZnMrY09DM1h5bUgyN1VLUERRQUFCaTAvRzR6N2JiOUpGcGVuNFgvTlV4eUdkdUJRb3I2cGo2S3hRUTQ2dkJaMHVCK2ZTY0NTWFZqUWE5VStjeGtZNFlickthWXZpL054UGRjeG83Qnd1Q0Y5djRuWmVSdHNYTjRVL1Z5MW5RK2wrWjdtTHFjNmQvNHNDc3A3QmVWc1N1NVdWYlhkZVl3MGYrUkVGT05GN29RMDlVVUFnQkwxVFcxNjMzeG53dXdBQUxCNjhadmtOMHQ5TDUrcXRqc2M0SEZEc1dLcXcxWk1sMUczQUxBNU9rVGZUQUV1UXlLc2REMWhwVUxFZWFpbnZnNDNjQjB6Q3ZjS044emtvdkdVMGtkdmhTTGswYlo5N3NJLzlZVzRxbTlxSDlZL2lJTHliMUZRRHB0NkgrYmkrYTl1Tm90eUdWTnVoT1VBQUFBQWdMbjZwdjZRRzB2cGxuNHZielFyZytXTHhveTVidUdaejZZN1U1Z0hMSTNueTdmNnZmRGpnLytvczd1VnVzd3lPQTgzY0IwekZnOEtONlIvTDRhY01IM3JIVkdNOTdsd1BYZmxuL3BDOEwwclhmSy82cEpmbkx6UittRUtMelFIc0dKaXlGNEJoOFAvbmNVWVoxTnVBQUFBQUlBYjVRZmwwUzFkcC9URlBZL25lRnRETzNBb1hkL1U1L0haZE9aa0FheWR6OTRibU9ERndMaWVyN2ZudDl4bXhmcXJPYnVlNjVmUmVIQzRJZjI3VVhCb0RHMVJjdUg2NTF6STdndVZwRXQrNlY1SFVmbW9Selhtd0ZXRUd0NFhjRGg4NzQrK3FYWG9BUUFBQUFBV0VwM1MzMW0xaGVYbmVGK3J0ck12Q3lzUXp6eE9yTzJOZlA0QXkyWjZ3ODNlbEh4dzhBUFg4ODJPU2o2NENiRCtOM1A5TWhwTENUY2tZMmhMVmNmbTZQSFVGMktxZE1rdjJrbmYxRlhmMUtPK1BpUFVrS2NCZkM3Z2NQalpzNzZwM2ZnREFBQUFBUGZTTi9WQlN1bUYxYnVYVDdyNHdtcjBUYjJmVXZwaWVRSFc1b09sdnBuYUxRWkVjZlROOHZTR25aSVBjS3lxdHR0V0Eza3IxeStqc2JSd1F6S0d0bVQ1UzdXM1FUb2RWd3JLZGNrdlR4ZWhodjB4djhnOE5TWlBqNGxRdzZNQ0RvbnZuY1g3Y05RVFF3QUFBQUNBMWV1Yk9qODhmNndCMnIyOHFkcE84UUdzaG1makFHc1N6NTJGeW02bUlKcEJpTjkzM0V4WWFUTUU2VzdoK21WTWxocHVtREdHdGxodkl1UXc2cUxxS1l1Qzhnc0Y1VVhLRDNVZXgrZmpxRVhIZ2E4eFBZYnkvQkVqbVFFQUFBQUFscUp2Nm0vUkFPM01paTdzZVc1WWxaL3hET3k0b1doam41NE9VQ0JGcDdkVGRNcFErRjEzczFxVDZmV3EydTVBSGRxdFhMZU15a3JDRGNrWTJ0SzlqMDFTaWVBUmlTNzV1YUQ4eWRUWG9qQTUxUEFzUDlUSkQzZkcvRUp6cUNFSHFJd0FLOVlzWUhNMDlZVUFBQUFBQUZZakdxdTh0YndMeXcycnZsWnQ5MnBneHcybDAwVWNZSDJFRzI3M3lOUXVCc0wxZkx2Y1pGcGowVFdJZGY1ejlDLzA0Vnkzak1yS3dnM3ArekcwTmczS2t6ZEpQd3M1RE4rVmduTHB4UEs4amxERCtaaGZaSjRHSTlSUXZIZFRDTmdBQUFBQUFKdlhOM1h1WVBuTXFiaVh2NnEyMDZBR2x1ZkNXZ0tzUjlTSVhWcnVXK1dwWGFZTFVUcnYwYnY1VkxYZDloQU9kS2hpZlQ5TmZSM3V5SFhMcUt3MDNKRCtQNFkyZjhpODg5WXAwaXprY0c3YzdiQW9LQy9hU2QvVTFkakgzVjU1RDc0djRIQ1lielk1NU1ENkFBQUFBQURyRWsxL05FQzduOTlqV2pjQXdOQUlhZDdOWHRWMk9teFRyR2ljZWVZTTNjbmZBZzZyRWV2Njl4aGYyd3FjYVhqTDJLdzgzREFUaFpVdnZJT0tWY2U0V3lHSHd1VkpHM25paG9MeUluWDVZVTNmMVB0amZwSGVnNE54TW9YSklRQUFBQUJBbWE0MFFQdm9GQzJzanVucmltUUFnQ0ZSc0g5M0x3VmFLWnpyK2U1eXdHRjNLQWM3QkxHZWdnMTM1M3BsZE5ZV2JrZ3hnaXgzTTQ4Q1lNcjBYOGpCK1NsTERwM0VlZmtjRXpjb3g2dzcvczZZVTVCWFFnM2VnMldidlI5SEhiSUJBQUFBQUlhaGIrcFhLYVhYVHRmQ0hrV1J6S3VCSFRlVTVMbXpBYkErMFhoUHQvZTd5NEhXUHRkaURPV0FtWlJqcDNzaG42cTJPeHpROFJZcjF2SFQxTmRoRVgxVG01ekU2S3cxM0RDVEM0QlRTbjk0T3hWdGRnUHRScVVBVmR1ZDV0QkpoRThveTI5ajc0NHZXRE1vNzB4ckFBQUFBQUJLMHpkMWZ0NzBOSnF6c0ppL3FyWlRxQUFMRWd3QzJCajNMWXY3WExXZHJ0c1VKWnE3bXNLM21EY3hnVzlyU0FkZGlxaFB1OGpyT1BXMVdKRHJsRkhhU0xnaC9UOHQ5TmdtWnZIMmhCdzJKNjk3WG45ZFJZcjBSNTVFMHpmMWFIOWdYZ2sxQ05hVUwzK1hQdTJiK21EcUN3RUFBQUFBbEtsdjZvdmNuTVdFOTN2NTNkUjFXSmppV29BTmlCcUtMOVorWVMvVloxRWc5MU9MeTAxanZ3b3NMU1krKzNKOTJwTWhIWGNoWEtlTTBzYkNEU2tTZnJHSitjN2JxM2hDRG10VXRkMStoQnIySnZPaWgrTWtRZzJqdmpHNGN0TW8xRkMrUDJKYXc4WFVGd0lBQUFBQUtGOU1lUGRzY0hGMWRBSGRIdHFCdzdyRlZIeUZVUUNiYzJqdDcwMTlGc1hvbS9wVU9QM2Vab0dsYzVNYzVvdW11OGRxSkIra2krc1VSbWVqNFlhWjZEVDl6QlNIUVhBVHZVSlYyKzNramVtVTB2dlJ2c2poeWpmcmovdW0zaC96aTNUVE9DaXo5NlFFTGdBQUFBQXdLUEZzOElXenRyRGNCZlR2cXUxZURleTRZUzF5K0NlZXRacUtmek1GVU1CSzlVMTliSHJEZzgzcXM3NjU5MlBEMUtROFRCMlRIUEsxUE9xYXM3dktuMmx4ei81VmZkcUR1VDRaclY5TGVXRjlVK2RScWx0Uk5POURxM3o1Sm5vdnV0ajc0bjJnU0dpZTZwSmZwQnk2Mm8zUHFOR0tHMmlobXVGNE52YjNKQUFBQUFBd2JybTdZTlYyajFOS0YxRzB6OTM5VmJXZFozUVFZcUxKQjg5YUFZcVN3NngvT1NVUDlpanUvV2IvUFc5ek1XdmYxTitHKzVJWWtoeFdxdHJ1MEZTc0I4dlg4dnVxN2Q1SExkclJsSzdscXUwT1lxcVAzLzdMOHlYQ2hEQkt4WVFiWnZJbVhOVjJSMUhvN2NPc2ZFSU9EMVMxWGQ1b2V6bm9GekZlcjhkK0V5RFVNRGcrYXdFQUFBQ0EwWWhDanR6ODdGU245WVhsWjNTNU9kUDJ3STRibGlJQ0RVZWVzOTZMeVEzQXl2Vk4vYUZxdXpQM2VFdjNKdjlkQ1R0OFRDa2Q1L1VlejB1a1FJZHFpNWJxMFp4citTU3U1Y0hmcDFWdHQ1TlMybzgvOWIrcmN6aldGd2FweEhCRE1zVmhxSVFjRmhTcDFqZURPdWpwR1AzN09HNGtoY2lHbzRzSklyb3ZBQUFBQUl2YWpiMUltTWxkOGsvN3ByNndJcFNpYitwZHowM3U1VW5WZG4xSzZhbHJtakdMNTFxdjRzOTBoZ2NhUTlIY1JPVEdvTHRUWHdTK2s3L3JQd3pzbVhHdXUvaTdnT01Zc3h6eWUzbWxRSHFtaTVxUVhJTjNIclY0Y0M4eHZlSEFmZGhLN1VYOTVZLy9qTE80bGsvaldpN2lPeUR1VWZJOSttNzhxVDlicjg3VUJzYXV5SEREVEV4eE9Jd2JMUitBd3pBTE9TakV2WVpPK1VVN3l3OVF4dndDcTdiYmlzOVU0K0tHNDRWTlpnQUFBT0FCbnV1VXlUenh3UHh0MzlUQ0x4UWh2eGRqZ3NNbloyUmhmMWR0Ti9wcDFPbi8zZnB6Z2Z0MkZOTXdEdTVWMXVmalZGN29DR2dFeWp6djR6Nyt0eUYwNnMvaHk2cnQzcVdVZmkvZ2NLYW12bHFJUHFkZytpWm5VMSs4RmJxSW1wM2pBZGJVNVhxM3p3VWN4OVRNOXZYK2FRU3d3TFg4SmQ1dmQ3VWx2RElvbW84emVrV0hHMUxjNk1ZVUI5MWFoaVYvMlgydDJrN0lJZWlVWDdSOFE3Y3o1dmRwaEJwTzNZZ095cnUrcVErbXZnZ0FBQUFBck5TYnF1MHVkSHVqRkxuUlM5VjJqelhwdVpkYzdQaXFiK3BYQXp6MlcxVnRkKzRaQnl6RmtXV0VVZmlyYXJ0blErakduNTk1UjRkdjMrUERJWFM0T3M4anZQWm4xWGFYT2JBN2xGcWwvSGxUdGQySjhOMWdQUEdiZXJST1RPTmhDbjRaeW11TXprR1Bvd2laNFppRkhNNmp1SHB5OHV1T0RkZlBnZzNGeVQ4VThnLyt3ZnhZdUkrcTdmS0R5YTgyQ3dZamg4SWVDellBQUFBQXNDYmJGcHFTNVAzNnZHK3Z1L2k5dk15QnBiRTlreE5zZ0tYNVlsbzRqTXFRdnU5SEdiNkVCOG8xWklOcU5OQTM5WDdVV2dHYmNSblhJWXplWU1JTjZmdk56TmNGSEE2TG1ZVWN2c1VFZzBsUVZGNjBQSjU1YTh4SnhxcnQ5cXUyNjZXbUJ5V0hiVVk5UlFRQUFBQUE0QzVpQXNFZkZtdGhUK0taM0NpZXgrbjBERXRsYWdPd0VYMVRYNmoxZ3JtR0dFb1dWb0xOY2YweEdZTUtOOHprOGNoOVUxY3BwYk15am9nRjVOVHA1N0dISEtxMk8xQlVYcXc4bXFrYTg1ajFmRzNsYXl5UG9DN2djTGliZC9HK05EWU1BQUFBQUNEMFRaMExjWjlhajN2SnorTk1DQVptdnNSbktzQkdSSTNHTzZzUHd4WlRvTjQ2amJCMmIwMWhZMG9HR1c2WTZaczZkK3A0WnR6UklNMUNEbjN1TGorV0YxVzEzYXNJTmZ4WndPSHd2UzZsOUhqTW81bnltT2tZemZ3NXJqSEtOM3RmZXNBRUFBQUFBREJIN3ZRYlRjODY2N093UDZ1Mit6Q3dZd1pXdzdNb1lPUGl1ZmhIWndLR3JXL3FROWN5ck5WWlhIY3dHWU1PTjZSL3Z5elArNmJla2dnY3RQZEREemxjNlpUL1Z3R0h3L2R5K09scDM5UTdmVk4vRyt2YVZHMlh1eHg4TlpwNU1QTDc4dG5ZMzVjQUFBQUFBTXVTOTFOMSs3MlhsMVhiWGVRR1NRTThkbUE1OG1SN1FTZWdDSDFUdjhwRm1zNEdERnRjeTErY1JsaTVMOUVFSGlabDhPR0dtVWdtUGRhMVpkQm1JWWZqb2J3SW5mS0w5eUtIbjNKWHA3Ryt3Q3ZUUXZZS09CenU1bTI4TDgrdEZ3QUFBQURBM1VXMzM5OHMyY0tlNUFaSnVWblh3STRiZUxndlk1NXNEd3hURkdrcWlvYmgyNG5tbnNCcVhNWjFCcE16bW5CRCt2Zm05MXQwYlhubWkzUFE5aUxrY0ZweUZ4bWQ4b3YyT28rbzdwdjZkS3d2TUlJMUY2YUZERW9PM3owMkpnd0FBQUFBNFA2aSsvaGp6d0x2NVhQVmRnY0RQRzdnL2hSREFVWHFtM3BiQTFzWXRseXJtVkxhOXRzTVZtWW5yak9ZbkZHRkcyWnlOK3pjRlR0M3h5N2ppTGluNTlGRjVyeWtrRVBWZHZzNjVSZnJKRUlOZzVuK2NSOVYyeDFGc09iSjhJNStrdktQdUdjNWZPZUdFd0FBQUFEZzRhTGhXWDUyZEdZNUYvWm4xWFlmQm5iTXdQMDg5V3dLS0ZrMHNIVS9Cd01tNEFBcmNSbjM4aGVXbDZrYVpiaGhKbmZIem9YT2tyNkRWMGZJNGRzbXgrVldiYmNib1liMzQxbmEwWmgxeEIvMVNOV3E3YmJ6ZFpCUytyMkF3K0Z1L3NnUDJITG96bm9CQUFBQUFDeFgzOVM3bXAzZHk4dDQ3bGJzQkhYZ3dSUkRBWU1ROTNQdm5DMFlMZ0VIV0twOEhXMjdsMmZxUmgxdW1JbWs3ek5mb0lQM0tNYmw5bmw2d3JwZVRBNVVSRUg1cC9FdTdXQk5waU4rVEd2NE82NER5dGZGRkpFajV3b0FBQUFBWUhWeXM3T1UwZ3RMdkxCSDBWeHNkMkRIRGR6c01wckNLWVlDQnFOdjZvT1UwbS9PR0F6WGxlbDZtbEREL1hYUlJOZjBOU1p2RXVHRzlPOFg2SGw4Z2I0dTRIQjR1UGNSY2xoWjRYRHVWbE8xWGU2Mi9sbEJlWkZlVDZFamZyd1BUV3NZanY4Q04xTmZDQUFBQUFDQWRlbWIralFYODJwMGRpK2Zxclk3SE9CeEF6OVREQVVNVnQvVUg5elB3ZkJGdll4cExMQzRkK3JONFA4bUUyNlk2WnY2T0hmVFRpbWRsSEZFUE5EdkVYTDRzTXpSdVZYYkhlZHVOU21sMmdrcXpydm9pSDg4OWhkYXRkMnJlQjhLMXd6REpBSTNBQUFBQUFBbHV0SXA5S01UdExBM1ZkdWREdXlZZ2UrOVZRd0ZETjJWK3ptRjBUQmdNWTNGZEQyNHV4ZHgzUUJoY3VHR21iNnA5eVB4YXhUU09MeU0wYm5uVmR0dDMvY1ZWVzIzbjhNU0thVzlxUzlvZ1Q1R3FHRVNYK1F4bGVTdkFnNkYyNTFOSlhBREFBQUFBRkM2dnFsejQ2QS9uS2lGUGMrVHBKZlpUQXhZaTl6aC9HbmYxQ2F3QUtNUmRTRlBUWEdBNGNyVDlhSUJ0ZHBNdUY2K1BoN0hORXJnaXNtR0c5TC9FNys1ZThFek44U2prU2N0L0IyYnIzZnVUSkgvdlJGcWVELzFCU3pRN0V2ODFWUmVjSFJIK3IyQVErRm0rWHZqV2QvVXU5WUpBQUFBQUtBY2ZWTWZ4Zk0vRnZNb21vblo5NFpoZUJ0VHhTK2NMMkJzOG1kYlRIRjQ3ZVRDY0VWdDVtOU9JZnprZGI0K2NnMnpwWUdmVFRyY01OTTM5YmtiNHRISm02K2ZjMkFoVDJPNDdzWGw3ak01Q0pIL3ZWTmZzQUxOQ3NjbjlTVWV3WWJuQlJ3S04zc2RtOFhuMWdrQUFBQUFvRHp4L0M5M0N2M2k5Q3pzVTlWMnVzQkR1YnFZS3U0NkJVYXZiK3JqdUtjN2NiWmhtUHFtL3VBNmh2K2N4TDM4c1NXQjZ3azNYT0dHZUxUZVI4amh2eStFQ0RYa291U3ZFWVNnTEpNc0hLL2E3a2l3b1hnZjNXQUNBQUFBQUF4SDM5VGJLYVYzVHRuQzNrUkRKcUFjczRuM084NEpNRFY5VStmR3BvL2pzeEFZSU5jeEV6ZTdsNysyVVRmd2Y3OWFpNS9GQjhoK0ZML1hwUjBmOTdaWHRkMWVUQVFRYUNqVHlWUy93S3UyeTV1UXZ4ZHdLTXlYUHplMmpRSURBQUFBQUJpZXZxa1BvbEQvTDZkdkljOWpBcnI5Y2Rpc3M1VFNLOWNoTUhYeE9maFB3Q3Nhbk81TmZVMWdhR2JYY1c1TW5GSTZWWnZKQk9SUXc2NTdlVmlNeVEwM2lJNEhqNDJySFIzQmh2TE1ScWRPT1psNFVNQXhNTjlza29pYlRBQUFBQUNBZ2VxYitrTks2V2swcytIdThuTzFyMVhiN1ZveldMcy80aG1xWWlpQUgrVDZrdndabVovbld4c1lubnh2azJzejR6bytjUW9ab1krenFXdnU1V0Z4d2cyM2lDL1NQSzcybWMxT1dMcExvMVAvczEzSWNmQi9KN0ZoZkd4TkFBQUFBQUNHcjIvcWk5ek1KcnFnczVoUFZkc2RXak5ZdWR6WjlXazhvenF5M0FBM3k4L3pvemo2YVh5R0FnUHpRMWhKZlNaRDl6cnU1VTFlZ3djUWJyaWp2cW5QWTdOVDRoZVc0NWx1K0JUcVM0UnVwanhKQkFBQUFBQmd0SElYOUpUU1cyZDRZZURKa2xBQUFBd3hTVVJCVkcrcXRqc2QyREhERU9SblV5K2lDQ3AzZHIxdzFnQVdFeUhXV1JmNDN4Ukl3L0JFV0NuWFp6Nk9ydmN3RkxNcERacm93cEw4YWlFWEV4OCt4MVhiSGFTVS9oelNzVU1oWHZzU3AyQjU0OWlER1FBQUFBQ0FrZXViK2pBSzlUODUxd3Q1WHJWZGJseTF2YVlHVnBwa01WWjVnc3hCYnJMb0RBTXNWOS9VSDFKS3VVQTZWVzJYUTYyNVJ1V0paWVpoaU44WnI5Sy8xL0JXWE1Ndm5UNEtrKy9uOXdXVFlUV0VHKzRwUmtBZVZXMlh2enozQnZraVlMMU9kTUtuWU42ZkFBQUFBQUFUazV2ZFZHMlh1NExtWW9SSHp2K2Q1Ylg2V3JYZGIxRTh1REs1OEx0cXU0K0ttUmlCM0VIOE1Pb01BRmlUYUc2NG5mNHRrczcvODFDZEZ3WFJIUFlXYzRJT0IvSG45eHVia0NkQUhxMHA2QStUSnR6d1FGRU11MSsxWGU2b1VBLzZ4Y0JxZENtbFhWL3FGTXI3RXdBQUFBQmd3bUovZUN1bU9EejNYbGpJWDFYYnZldWIrbUNWLzVDK3FWODVQd3pRbHlpZy9lQTVGRUFab3J2MmZ2ek5wam9jdXNkZ1E4NzZwaFp1V0VEY1V4M0duOEFTNjNBU0FXWFRHV0ROaEJ1V3BHL3FuVWdIbmdvNXdEOHVvMmpjS0ZWSzVQMEpBQUFBQU1CLytxYmVyZG91RituL2FWVVc4bnN1RE16UFNsZjVEOG5uSi8xYndIUVlCWWxQVnZuUGd3WGw1MDRmRkQ0QkRFdE1kZGlkSFhRVVN1KzcxMkFOWGdzMlBOeWN3Tkpzc29Ocm1Qdkk5L1I1eXRxeGUzcllQT0dHSllwMDRDemtZSHd0VTdieU1jVHdBRy83cGo2MGdBQUFBQUFBWE5VMzlWSFZkdm41eHJubmZBdXBxN2I3NXpucHFvdEFZbi8vcHozK2VENjdFd1dLMi9HbkN6T3JrS2VDSDBmUms0a01BQ01TOXpIZjNXdkVQY2FzZUZxeld4N2lMQmZlYThLNU9qOU9ka2l1WWE3M0pZSU1Id1Fab0V6Q0RTdHdaWHp0VGt4eXNQbkpWQ2dhcDJUZHFqdEh3WWI1d1RYZmFZa0h4YTA4Rkp6UCt4bmdlbWNLbHdDL2l3QlloaWhzMklvSkFXOHM2cDA5aW9MdjNTWDk5eTBrbnMrZTNuWC9KRG96YjhmeHpvSVJPNTdyRXI3RUpJWlREZDNXNHRSdmVxQlVjWTl4RkgvL2lZTHBWM0V2OGNvOUJLR0xvUFJwM0VmWXE5cXdHNjdoN1N2WDc2NXJlTFEreHZVb3hBQURVL1Y5NzV5dG1KQURFM0RTTi9XK0UzMS9WZHZadEZ1ZFBEWnNWL3FkS2ZEQTlTZjUrdC9XUFd1WXFyYkxEOFAzcHI0T1YxejJUYjFWek5Hd01WWGI1ZnZ1OTg3QWQ1N2FrS1JxdS94ZzR2ZkpMOFQzUHZaTi9hcWtBNEoxcU5ydXd0aDVXTWhnR29KRVYzalBXYjczekw3bjZzWHZzQ1B2dnp0NTF6ZjF3UUNPODE2dVRJZlludlBuL21NNExxOFVIWjVINGFFOTVBMkthK3ZDNXl3c1JJMUc0YUpXYlBkS2dGTEgrR0g3RXZjTi8vMTVMakZ1UDF6RHUrNzNpM1QxdXN6MzlCb0Z3b2dJTjZ5UkloUkdxSXVpY1J0K0R5VGNzREt2KzZZK0h1bHJnN25pSWNEUnhEdUU1TTdOaDM2OERwLzM4ejl5TjRrajcyZXVpbXZqSUVib1RuVXp0WXZQZXQwVCtVODhiTWhoejVjVFh4WFhCNVBuOHdCdWRSbmRxQStIVm93UmpSMm1mQitjcnB5L0Ezdno2eGZkUFdlZFBiY1ZxZjJqaS9ma2tmZmt6YTZFSTlLVkNSZXpvRVR5bk9qZVptR0ZpL2o3NTM4WC9ocWVxdTEyNHo3ZXRRRHpmWWtwU2I1elIrU2FhVktDazZ2VHhRVDVpeC8vaEJXNGoydXU0UzIvRmUvbHl3L1haWDQrL3MxOVBVeVRjTU1HQ0Rrd0FqcmhMNWx3dzlMcFVBb0FBQUFBQUV6Q2xhS3FtYXRCaXB2K3RhdVcvWnhxVnB3MHo0K05QTTZqMERBcFlBS0F4ZndRb0V4WGlxdG5icm9IMkZsRGc3RlpFUEVtMzY3NTk4ejcxODhGZkJpYkNIbk96THRtZjd6Zi8vSC90NHBBMUUzWDdyeHI4K0tIKzMvWEtuQnZ3ZzBiSk9UQVFPbUV2d0xDRFV1VGI2eTMzUndEQUFBQUFBQUFBQUFBREl0d1F3R0VIQmlJazc2cDk1MnMxUkJ1V0lyZitxYitNSUxYQVFBQUFBQUFBQUFBQURBNXdnMEZxZG91ZDhQZm0vbzZVSnl6dnFsM25aYlZFbTU0RU1FYkFBQUFBQUFBQUFBQWdJSDd4UWtzUnk3TzdadTZ5b1c2VTE4TGl2QWxwZlJZc0lHQ2RmRWVGV3dBQUFBQUFBQUFBQUFBR0RpVEd3cG1rZ01iY3BsUzJ1MmIrdHdKV0IrVEd4YmlQUW9BQUFBQUFBQUFBQUF3TXNJTkF5RGt3QnE5N3B2NjJJS3ZuM0REblhtUEFnQUFBQUFBQUFBQUFJeVFjTU9BQ0Rtd1FpZDlVKzliNE0wUmJyalZ4NzZwWHhWK2pBQUFBQUFBQUFBQUFBRGMweThXYmpoeThYbmYxRlV1UkovNldyQTBYVXJwc1dBREJidU05NmhnQXdBQUFBQUFBQUFBQU1DSW1kd3dZQ1k1OEFDNVlIeW5iK29MaTFnR2t4dm1ldEUzOVdtQnh3VUFBQUFBQUFBQUFBREFrZ2szaklDUUF3dFNNRjRnNFlidnZPdWIrcUNnNHdFQUFBQUFBQUFBQUFCZ3hZUWJSa1RJZ1Z2ODBUZjFrVVVxazNERFA3cVUwbTdmMU44S09CWUFBQUFBQUFBQUFBQUExa2k0WVlTcXRzc2R6LytjK2pyd241TytxZmN0UjlrbUhtNjRqRkREZVFISEFnQUFBQUFBQUFBQUFNQUdDRGVNV05WMnVhRDkvZFRYWWNKMHdSK1FDWWNiWHZkTmZWekFjUUFBQUFBQUFBQUFBQUN3UWNJTkV5RGtNRG02NEEvUUJNTU5Kb29BQUFBQUFBQUFBQUFBOEIvaGhna1JjcGdFWGZBSGFrTGhCaE5GQUFBQUFBQUFBQUFBQVBpSmNNTUVWVzMzS3FXVUMrQWZUWDB0UnVSZDM5UUhVMStFSVp0QXVNRkVFUUFBQUFBQUFBQUFBQUN1OWF1bG1aNitxVCtrbExhcXR0dEpLWjBLT1F6YXg3NnBYMDE5RVNpZWlTSUFBQUFBQUFBQUFBQUEzRWk0WWNLaWc3cVF3ekIxMFFYLzI5UVhncUtkOUUyOTd4UUJBQUFBQUFBQUFBQUFjQnZoQnE2R0hMWWk1RkJibFdKZFJxamhmT29MUWRHRWJ3QUFBQUFBQUFBQUFBQllpSEFELzRsQzVCMGhoMks5N3B2NmVPcUxRTkZ5K0dhbmIrb0xwd2tBQUFBQUFBQUFBQUNBUlFnMzhKTWZRZzY1bVA2bFZkcW9rNzZwOXlmOCtobUdGMzFUbnpwWEFBQUFBQUFBQUFBQUFOeUhjQVBYaXBERHEvei9yOW91aHh6MnJOWmFkU21sM1RnUFVDb1RSUUFBQUFBQUFBQUFBQUI0c0tydmU2dkluVlZ0ZDVoU2VtUEZWdW95cGJRdDFEQXRWZHZscVFmUEIvU2lUUlFCQUFBQUFBQUFBQUFBWUdtRUc3aVhxdTF5VWZON3E3ZDB6L3FtUGgvWmErSU9CaFJ1TUZFRUFBQUFBQUFBQUFBQWdLVVRidUJCcXJiYlNTbmxvdXhIVnZKQlh2ZE5mVHpnNCtlQkJoQnV1SXhRZy9BTkFBQUFBQUFBQUFBQUFFdjNxeVhsSWFMUWVVdkk0ZDVPK3FiZUgraXhNeDB2K3FZK2RiNEJBQUFBQUFBQUFBQUFXQlhoQnBiaVNzaGhLMElPdFpXOVVSZGQ4TDhWZkl4Z29nZ0FBQUFBQUFBQUFBQUFheUhjd0ZKRnNYNmU0cENxdHN0RjBYdFcrRHVYRVdvNEwraVk0RWNtaWdBQUFBQUFBQUFBQUFDd1ZsWGY5MWFjbGFyYTdpaWw5THRWVHIvMVRmMmhnT09nUUZYYjVZa256emQ4WkIvN3BuNVY1QUlCQUFBQUFBQUFBQUFBTUdxL09MMnNXdC9VQjMxVFZ5bWwxeE5kN0xmNTlRczJVTEF1cGZSWXNBRUFBQUFBQUFBQUFBQ0FUVEc1Z2JXcjJtNG5wWlM3MUQ4YStlcWY5RTI5WDhCeE1BQWJtdHh3bVZMYTZadjZ3bnNFQUFBQUFBQUFBQUFBZ0UzNjFlcXpibjFUbjZlVXRxcTIyNHFRUXoyeWs1Qzc0Ty8yVGYydGdHT0JlUzdqUFhwdWRRQUFBQUFBQUFBQUFBQW9nWEFER3hQRi8zbUtRKzVhZjV4UzJodjQyVkF3emhBODh4NEZBQUFBQUFBQUFBQUFvRFJWMy9kT0NzV28ydTRncGZUbkFNL0k2NzZwandzNERnYXFhcnM4eGVUNUNvL2VleFFBQUFBQUFBQUFBQUNBWWdrM1VLU3E3WFpUU2g5U1NvOEtQME1uZlZQdkYzQWNETndLd3cxQ0RRQUFBQUFBQUFBQUFBQVU3MWVuaUJMMVRaMEx2YmVxdHR1T2tFTmQyR0YyZlZQdkZIQWNjQjJoQmdBQUFBQUFBQUFBQUFBR1E3aUJvdlZOZlpGUzJxbmFiaXVsZEpSUzJ0dnc4WDdKeDlNMzliZkNsNDdwRW1vQUFBQUFBQUFBQUFBQVlIQ3F2dStkTlFhbGFydURsTktmYXo3bXk1VFNidC9VNTk0dHJFTFZkbmxheWZNSC9GY0xOUUFBQUFBQUFBQUFBQUF3V01JTkRGYlZkanNwcFZ3US9takZyMEhST0N2M2dIQ0Q5eWNBQUFBQUFBQUFBQUFBZy9lclU4aFF4UlNGcmFydHRpTGtVQy81cFp6MFRiM3ZEVUtoaEJvQUFBQUFBQUFBQUFBQUdBM2hCZ2F2YitwdkthVTh4U0YzdjgvRjNuc1BmRTFkU21rMy9udWhKSmNwcFZkOVU1ODZLd0FBQUFBQUFBQUFBQUNNU2RYM3ZSUEs2RlJ0bHljdUhLV1VIaTN3Mmk0ajFIRHVIY0c2VlcyWEF3dlByL25IZW04Q0FBQUFBQUFBQUFBQU1HckNEWXhhMVhaNW9rT2U1bERmOGpwZjZJYlBKbDBUYmppTFNRMm1pQUFBQUFBQUFBQUFBQUF3YXI4NnZZeFpkTHJQQVlkY1BKNUREbnMvdk53LytxWSs4aWFnTU42WEFBQUFBQUFBQUFBQUFFeUt5UTFNVHRWMit6bncwRGYxZ2JOUEthcTJPOHhUUnZxbXZuQlNBQUFBQUFBQUFBQUFBSmlVbE5ML0FQU1NtdWhTNHhBN0FBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xIiwiRklET18yXzFfUFJFIl0sImV4dGVuc2lvbnMiOlsiY3JlZEJsb2IiLCJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwibGFyZ2VCbG9iS2V5IiwibWluUGluTGVuZ3RoIl0sImFhZ3VpZCI6IjIzMTk1YTUyNjJkOTQwZmE4ZWU1MjNiMTczZjRmYjUyIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibGFyZ2VCbG9icyI6dHJ1ZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOnRydWUsImFsd2F5c1V2IjpmYWxzZX0sIm1heE1zZ1NpemUiOjIwNDgsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6NiwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjo5NiwidHJhbnNwb3J0cyI6WyJuZmMiLCJ1c2IiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fV0sIm1heFNlcmlhbGl6ZWRMYXJnZUJsb2JBcnJheSI6MTAyNCwibWluUElOTGVuZ3RoIjo2LCJtYXhDcmVkQmxvYkxlbmd0aCI6MzIsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjozLCJyZW1haW5pbmdEaXNjb3ZlcmFibGVDcmVkZW50aWFscyI6MTI4fX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDctMjkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJIeXBlciBGSURPIFBybyBORkMiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI1MDcyOTAwMiIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTA3LTI5IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjF9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDgtMTkifSx7ImFhZ3VpZCI6ImJhMGE5MjY2LTQwZDgtNDA0OC05Nzg2LWQ3MTBiNTQ3NDc1MiIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiYmEwYTkyNjYtNDBkOC00MDQ4LTk3ODYtZDcxMGI1NDc0NzUyIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ill1YmlLZXkgQmlvIE11bHRpLXByb3RvY29sIEVkaXRpb24gKENvbnN1bWVyIFByb2ZpbGUpIn0sImRlc2NyaXB0aW9uIjoiWXViaUtleSBCaW8gTXVsdGktcHJvdG9jb2wgRWRpdGlvbiAoQ29uc3VtZXIgUHJvZmlsZSkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NzI4LCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX0seyJtYWpvciI6MSwibWlub3IiOjB9LHsibWFqb3IiOjEsIm1pbm9yIjozfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyIsImVkMjU1MTlfZWRkc2Ffc2hhNTEyX3JhdyIsInNlY3AzODRyMV9lY2RzYV9zaGEzODRfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCIsImJhRGVzYyI6eyJzZWxmQXR0ZXN0ZWRGUlIiOjAuMCwic2VsZkF0dGVzdGVkRkFSIjowLjAsImlBUEFSVGhyZXNob2xkIjowLjAsIm1heFRlbXBsYXRlcyI6NSwibWF4UmV0cmllcyI6MywiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCIsImJhRGVzYyI6eyJzZWxmQXR0ZXN0ZWRGUlIiOjAuMCwic2VsZkF0dGVzdGVkRkFSIjowLjAsImlBUEFSVGhyZXNob2xkIjowLjAsIm1heFRlbXBsYXRlcyI6NSwibWF4UmV0cmllcyI6MywiYmxvY2tTbG93ZG93biI6MH19LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJzbWFydC1jYXJkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlEUGpDQ0FpYWdBd0lCQWdJVVh6ZWlFREpFT1R0MTRGNW4wbzZaZi9iQndpVXdEUVlKS29aSWh2Y05BUUVOQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU1aNi9UeE04cklUK0Vhb1B2Rzgxb250TU9vLzJtUTJSQndKSFMwUVpjeFZhTlh2bDEyTFVoQlo1TG1pQlNjSVpkMVJueDFvZDU4NWgrL2RoSzdoRW03SkFBTGtLS3RzMWZPNTNLR05MWnVqejVoM3dHbmNyNGh5S0YwRzc0Yi9VM0s5aEU1bUdORDZ6cVljaENSQUhmcllNWVJERjRZTDBYNEQ1bkdkeHZwcEF5Nm5rRW10V21NbndPM2kwVEF1Y3NyYkU0ODVIdkdNNHIwVnBnVmRKcHZnUWppVEpDVElxK0QzNWh3dFQ4UURJdituR3ZwY3lpNXdjSWZDa3p5Q2ltSnVraFl5NktvcU5NS1FFZHBOaVNPdld5RE1UTXQxYndDdkV6cHc5MXUrbXNVdDRyajBlZm5POXMwWk93ZHdNUkRuSDR4Z1VsNVpMd3JyUGtmQzEvMENBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUI4R0ExVWRJd1FZTUJhQUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUU13RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCRFFVQUE0SUJBUUMzSVcvc2dCOXBaOGFwSk5qeHVHb1grRmtJTGtzMHdNTnJkWEwvY29VdnNyaHpzdmw2bWVQTXJiR0pCeUoxWG5xdUI1c2djUkVORnhkUUZtYTNtaW84VXBmMW93TTFacmVYckowbUFERzJCcGxxYkpueGl5WWErUjExcmVJRlRXZUloTU5jWktzRFpyRkF5UHVGakNXU1F2Sm1OV2U5bUZSWUZnTmhYSktrWEliNUgxWGdFRGx3aWVkWVJNN1ZvbEJObGxkNnBSRktsWDh1c3Q2T1RNT2VBRGwyeE5GMG0xTFRoU2RldVh2RHlDMWc5K0lMZnozUzZPSVlnYzNpcm9SY0ZEMzU0ZzdyS2Z1NjdxRkF3OWdDNHlpMHhCVFByWTk1cmg0L0hxYVVZQ0EvTDhsZFJrNkg3WGszNUQrV1ZwbXEyU2gveFQ1SGlGdWhmNHdKYjBiSyIsIk1JSURTRENDQWpDZ0F3SUJBZ0lVRHFFUncrNFJuR1NnZ3hnVWV3SkZFUERSWjNZd0RRWUpLb1pJaHZjTkFRRUxCUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURJN1huSCtadkR3TUNRVThNOFplVjVxc2N1Ymx2VllhYVJ0M1liYXhuOWdvZEx4NXN3SDBsWHJkZ2poNWg3RnBWZ0NnWVlYN0U0YmwxdmJ6VUxlbXJNV1Q4TjNXTUdVZThRQUpiQmVpb1Y3Vy9FK2hUWlAvMFNLSlZhM2V3S0JvNlVMZU1uZlFaRHJWT1JBazh3VExxMnY1TGxqNXZNajdKdE9vdEthOUo3bkhTOGtMbXpYWFNhajBTd0VQaDVPQVpVVE5WNHpzMWJ2b1RBUVFXckw0L0o5UXVLdDZXQ0ZFNW5VTmlSUWNFYlZGOG1scUsyYngyejZva1ZsdHlEVkxDeFlicFVURUx2WTF1c1IzRFRHUFVvSUNsT200Y3Jwd25EUkxWSHZqWWVQR0JCLy9wRXl6eEEvZ2NTY3hqd2FIMVpVdzliblNiSHl1cktxYlRhMUt2akFnTUJBQUdqWmpCa01CMEdBMVVkRGdRV0JCVHF0MEtRbmd4N1pIcmJWSHdEdW54T245aWhZVEFmQmdOVkhTTUVHREFXZ0JUUzd1OWFJbzA2YlZ3amx6M3loZFVtOFNWN2tqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQTRHQTFVZER3RUIvd1FFQXdJQmhqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFxUWFDV014VEdxVlZYN1NrN2trSm1VdWVUU1lLdVU2K0tCQlNnd0lSbmx3OUs3SGUxSXB4WjBoZHdwUE5pa0tqbWN5RmdGUHpoSW13SEpneHh1VDkwUHczdllPZGNKSk5rdERnMzVQWE9melNuMTVjRkF4MVJPMG1QVG1JYjhkWGlFV09wem9YdmR3WERNNDFaYUNEWU1UN3c0SVF0TXl2RTd4VUJacTJianRBbnEvTkRVQTdiZTRIOEgzaXBDKy8rTktsVXJjVWgrajQ4SzY3V0kwdTFtNkZlUXVlQkE3bjA2ajgyNXJxRHFzYUxzOVRiN0tBSEF3OFBtcldhTlBHMmtqS2VyeFBFZmVjaXZsRmF3cDJSV1p2eHJWdG4zVFYyU0J4eUNKQ2tYc05EMDVkQ0VyVkhTSklzK0JkdFRWTlk5QXd0eVBtbnliMHY0bVNUenZXZHc9PSIsIk1JSURTakNDQWpLZ0F3SUJBZ0lVVG5iYkdJUjJOSHZ6cUlLRkFlUXdHMVhCaXMwd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JCSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVFZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU9zWGozazA0QmFuNFRZZHRaS3FEL09QSnh5RHlhUG1DQlVGVWlhWklnVHRlWm5qM1gyNURoZ3BaWlhzQzREMHlkSWNybEE2d05VSW5PUkwvTDl6QmJURUlNQVZNR282ZzdVS0FtYjJNRjZBSGJuaFlKZDllaWt1cFZOV1NoSE5ZTmM0R0JkTzFZTjZBZlVxdkpoSGJlM1Y0U05NUG1CUkVLSlBWejdUaHdnbWdnVGU4V3MySzAvd3NxdjJ3U0U3cGJDQnNVWmhJWDUxYlpNM3BxRHdKUFRtUkZFdnQwLzZ0RzVlTzhGM2oxNE9YcWZFaG1qbjFWdnhLRFlRT0xaQXhDd3dnQzBQNENkZld2M3k4UFNSOEkzNTRoTzFZK0d6Tmp2SXFYMzhOS0x5d3VJWUhGZXJPeE5seEVNQnZGaFlCdVJ1WUFra2dVYVBxTjZVQmhzSUxyc0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ0NvUkhoaXlObmJuWFJXSUw2WkJYb0JYOVlUTUI4R0ExVWRJd1FZTUJhQUZDQW9VQ0VicEZwYjZGUExuWjNGNVB4c0wzb2ZNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUNRRmFmSkkxLzVXZzlDRUVpbUUxUlA1NFJnUXdUTlRPT1FzTEFDVGUrckl0bEZRekM5WkRoclY4Mjh5WDdqenkrQUFzcDNpeks3VDF0aDJkbDdtK3R1MHN3MlBhL29sYzAybnQ2UHlJdzM0OGdhSHpoSTErMEtFNDVxeHZGRGVMMmxNeGJQZkNZdnlFRWFZemppUUVMVTU5NTFwWEdXeUtNYS80Zkx0TytaS09YaE11VmVxNHJYRFBJNTRXNkpIT2lBYWlLZGl3KzVlM2Mya3QvakZJUXRNNnZNWGc5TE5GemRqRVROdDIwVlg5UWV2UnBGWmZ1Y01HOXdDYVFEb0ZsUHpwVE1KS2hQZXYvaW1KbVpZaEtmcjBsTGNlbXRxakl4TEFvcVpkT1lmSEJnNit2QWNkUEkvaWF1R3BVQXY3WCtVS05tRHdqWjJCYUg0c0x3aEIybSIsIk1JSURSekNDQWpHZ0F3SUJBZ0lVZXg5blQ5dndaTlhTNDgzTGRpWUdmdzJTalNvd0N3WUpLb1pJaHZjTkFRRUxNQzR4TERBcUJnTlZCQU1NSTFsMVltbGpieUJCZEhSbGMzUmhkR2x2YmlCSmJuUmxjbTFsWkdsaGRHVWdRaUF4TUNBWERUSTFNRGd3TVRBd01EQXdNRm9ZRHprNU9Ua3hNak14TWpNMU9UVTVXakFuTVNVd0l3WURWUVFEREJ4WmRXSnBZMjhnUmtsRVR5QkJkSFJsYzNSaGRHbHZiaUJDTWlBeE1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBdTFNZXZueTlkeU85WlVDMzlTb01oTGNSL0RYcnRGL2NpTTEydGNpeTJFWEFaNk1rcml2VnRDZkVWTTlYNklTVEVuQlA2dVNZWW92NnBwdjZPNkpoMk5IbVltNHcrSm5TNFZuQ1BVN21IQU1mVkkyTUdUVE1WT2V3MHhVc0c3c0lTSWtJRFVCbXVrOFlLOWM1emljOSt2RlFHTElrc2RYTzVpVkZJZ05HNTNjR1hENFpMWm9BUGl1MFBFb3p4QXFZSWFJNGd4S2hPQTNTOC9XOG1JV3N1Nm9meWo0R3ZrRkc2WjdreUYzMTA3UDdtd0ZITHJJM0VOYVBXTU9GY1RhR2EwZHcrL3ZWUndqUmNFWkJWc3V1VC84N2NrU3MwYTVwa3QzdlpCbGFZZVQ4cHpTcmVWN21vd2NJTTkwTDJpYUFUbFAwbnhtYUU2bk95VGJvakZWbDJ3SURBUUFCbzJZd1pEQWRCZ05WSFE0RUZnUVVTWEVoM3NhM2J0RHVybTRNTS9DN1MxbFJ1dVl3SHdZRFZSMGpCQmd3Rm9BVTZyZENrSjRNZTJSNjIxUjhBN3A4VHAvWW9XRXdFZ1lEVlIwVEFRSC9CQWd3QmdFQi93SUJBREFPQmdOVkhROEJBZjhFQkFNQ0FZWXdDd1lKS29aSWh2Y05BUUVMQTRJQkFRQjVHYzNoYWZ0cDdoS3NFWnNvK2kvWjVuUnVxZG16RzJXQ2xVb1JVcWJhUHlnbG5KRGpLUi9rZmdPbDZpYmJGL3p0aG0zS21YUTdIY0RJUDJ4TWRHN1UyTDJpbWJKUUhxUGYvaDJIcW9qYjRyWmd1ZSs2VzRrdFNSNWVsUjlMMXJZcUUvU0dZTTRpRUtvVlFTdjdSVDFyeEllV2lLc3cvVnh4aS9RT25zeDNGN3g4MENDWWdCNEUzeVF4OFZUVzQ0MGhURXdUQTFlTUhPaXgzMnRQdHl5SElhOFBWVklmVnBIUUpCYU1WdnY1MDhVRWp3a2JVMnJuamZ6b1NUTlM5QTVqVVE4bUJTdmU5NXJqQjBkbzk4RVUrRHhkQnFYMitINmk1d2xJQ0ZnemhkemNzbmU5aEdLVDZselRYNGNJZEpzclkyK3hsZUswRkZReTZsR0VWTEVlIiwiTUlJRFNEQ0NBakNnQXdJQkFnSVVVY21NWHpSSUZPZ0dUSzBUYjNnRXVaWVprQkl3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRRG01NTViV1k5V1crdE9ZMHJJV0hsZGgrYU5hbm9DWkNGaDdHazNZWnJRbVBVdzBoa1NHNnFZSFF0UCtmWnlTMzNWRXJ2ZytCUXFubXVtZ05oZnhGcmt3RVpFTGVpZEJjQzhDNEFnNG5xcWlQV3B6c3ZJMTdOY3hZbEluTE5MRmNaWS8rZ09pTjZaT1RpaE81L3ZCWk1iajlyaWFBY3FsaVltTkdKUGdUY01HYUVBeU16RU1OeTJubTZFcCtwalA1YUY2Z2kyMXQvVVFGc3VKMWoyUmoveW5NL1NkUnQrZWNhbDVPWW90eEhrRmJMOXZ2djJBMk92NUlUWkNsdzRiT1M5bnB5cFFpbU9aNVFBWXl0bVlhUXBXbC9wTVl6NnpTajhScWtWRE5FSkdxTmZUS0EyaXZMWXdYNmxTdHRNUGFwZzBKODRsOVgwdm9WTi9GcFM0VkNWQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJRZ0tGQWhHNlJhVytoVHk1MmR4ZVQ4YkM5Nkh6QWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQVlNemdMckpMSXIwT292UW5BWnJSSUd1YWJpSFNVS1NtYkxSV3BSa1dlQXRzQ2hERUhwWGNKL2JnRE5LWVdvSHFROHhSVWpCNEN5ZXBZZXZjM1lsckc4bzd6SHhwZlZjYW9MNVNldUprekh4S240YlRhU3A5K012d2FtbnA2NGtaTWlOYkZMa25mUDlrWUtvUkhrTVdoZVJKMVVzUDF6NFNjbWtDZUlMZnNNczZ2cW92cWpXQ2xGc0pwQmNzbHVZSFdGN2JCSjFuNFJ3ZytBVEVvcFk0SWdHdjZadndjK0E5citBVDJocXBvU2tZb0FsK0FOWXdnc2xPZjlzSmUwVitUQTlZWS9VbGFCbVBQVGQwLy9yOXd2Y2VQV1prUGpLb0FDL3pVTmhmRGJoNExWOEdIczNseVgyWG9tTC9MTmM4Sll6eUlhREVoR1F2ZW9QaGgvdHIxZz09IiwiTUlJRFNqQ0NBaktnQXdJQkFnSVVSMzhtcTI2U2Yyc3pWVjJCZEc2V0VON2t1V1V3RFFZSktvWklodmNOQVFFTEJRQXdMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3SUJjTk1qUXhNakF4TURBd01EQXdXaGdQT1RrNU9URXlNekV5TXpVNU5UbGFNQ1l4SkRBaUJnTlZCQU1NRzFsMVltbGpieUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRUlnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTlkwV2I5b1BvUm9Lb1F5V1BhSnB6MTF2cldUZzZ6VHRtTmoyVm9LUm55dktHUnFwemI4M3c1bDZZQTk2VVlrWUJEUVAwaWxPMkRQZTZ3V3FWUjV6RGZSemRjSDhiaCtMN2RHR3ZhZTZoUlRaaGtGa0NwWERzNEhjY2tuckRmOEZDbEo3SGUzOUpmNDIvRzFRbTJ6ejlXV21yUFh0Z2lLL3gwNUdqc1FmR3VERzF6ZjVRVFVVaWU4bHd5bUszVGZkT3ZOZWVKQUFQZTJwbjdJdGZSYityVnJOV2lEemxSbjJ2Tm5aMndQbzR3SC9XSjZkaFhaRytyTVdUK2E2Qm9jZzFVZkl3NmtkdW5HNGJUcFp6c3ZhY0ZZeVIwbXBmK0RlT25wU1dBbXl3SldIdlRsZjJZWHhGeWVYY1RBQ2RRbGNNTkdKMlZoWlE0OHh0UDUvUkJQLzhrQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZDaHk0Mm9raXFjVFMxaXFhL0hSV2prQm40SC9NQjhHQTFVZEl3UVlNQmFBRk9xM1FwQ2VESHRrZXR0VWZBTzZmRTZmMktGaE1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQW4rUkhJUGJ0TUVETmRUMWc4SC9SaXRBa1VkTGdBdDF0V0dXbmxqOWtuYnY0LzRHbFg3QzlwNDVlZlBPOS9hWkw2T1YxWFJLQmk2S210Qlc1SzdudVlFbk14LzVCcUJTYkxUN3JoZHVDNDlUQmVNYjlQSGRYc1RsU1ZOWWVmcjFkR2lkcjRqMHhWQlFMYjFya25EQWJkV0R6S2Z2bmF5S084RnJ3ZTdIeDg0M01HL3JKK2MwWHJ1VXZiZlZUQ0hMaUlXaE03b05EaEw4eG9iNnhVbzlLTEtjU0wrSXRZc08zLzlXYjhROUdqc3FMNEZYc0RjRzFTYVloN0twZnVNbU9peHF6SlpPMm5JaWNQWVJnMUkyU3VpVWZZTzcwdG1kSGNibCtrU1FtU1l0N3JxNHZpSUxnMkd4M2o5cklUdVdUamJhVWFTU1F4Z09tTVNIdXl6TUFDIl0sImljb24iOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJpY29uRGFyayI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsInByb3ZpZGVyTG9nb0xpZ2h0IjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwicHJvdmlkZXJMb2dvRGFyayI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIkZJRE9fMl8wIiwiRklET18yXzFfUFJFIiwiRklET18yXzEiLCJGSURPXzJfMyJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJsYXJnZUJsb2JLZXkiLCJjcmVkQmxvYiIsIm1pblBpbkxlbmd0aCIsImhtYWMtc2VjcmV0LW1jIiwidGhpcmRQYXJ0eVBheW1lbnQiLCJwcmV2aWV3U2lnbiJdLCJhYWd1aWQiOiJiYTBhOTI2NjQwZDg0MDQ4OTc4NmQ3MTBiNTQ3NDc1MiIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwidXYiOmZhbHNlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibGFyZ2VCbG9icyI6dHJ1ZSwiYmlvRW5yb2xsIjpmYWxzZSwidXNlclZlcmlmaWNhdGlvbk1nbXRQcmV2aWV3IjpmYWxzZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwicGVyQ3JlZE1nbXRSTyI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOmZhbHNlLCJhbHdheXNVdiI6dHJ1ZX0sIm1heE1zZ1NpemUiOjE1MzYsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6OCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoxMjgsInRyYW5zcG9ydHMiOlsidXNiIiwic21hcnQtY2FyZCJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi04fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotMzV9XSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5Ijo0MDk2LCJmb3JjZVBJTkNoYW5nZSI6ZmFsc2UsIm1pblBJTkxlbmd0aCI6NiwiZmlybXdhcmVWZXJzaW9uIjozMjk3MjgsIm1heENyZWRCbG9iTGVuZ3RoIjozMiwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjEsInByZWZlcnJlZFBsYXRmb3JtVXZBdHRlbXB0cyI6MywidXZNb2RhbGl0eSI6MiwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjEwMCwiYXR0ZXN0YXRpb25Gb3JtYXRzIjpbInBhY2tlZCJdLCJ1dkNvdW50U2luY2VMYXN0UGluRW50cnkiOjAsImVuY0lkZW50aWZpZXIiOiIiLCJ0cmFuc3BvcnRzRm9yUmVzZXQiOlsidXNiIiwic21hcnQtY2FyZCJdLCJwaW5Db21wbGV4aXR5UG9saWN5IjpmYWxzZSwibWF4UElOTGVuZ3RoIjo4LCJlbmNDcmVkU3RvcmVTdGF0ZSI6IiIsImF1dGhlbnRpY2F0b3JDb25maWdDb21tYW5kcyI6WzIsM119fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNi0wNC0yNSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk3MjgsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWXViaUtleSBCaW8gTXVsdGktcHJvdG9jb2wgRWRpdGlvbiAoQ29uc3VtZXIgUHJvZmlsZSkiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI2MDQyNTAxOCIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUHJvZmlsZXMiOlsiY29uc3VtZXIiXSwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNi0wNC0yNSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk3Mjh9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjYtMDUtMDEifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyI1ZmJjNGJhNzUzMDUyMTg3YWFiM2M3NDFkMWY5ZWM2ZmIzYzRkODc1Il0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjVmYmM0YmE3NTMwNTIxODdhYWIzYzc0MWQxZjllYzZmYjNjNGQ4NzUiXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ikh5cGVyRklETyBVMkYgU2VjdXJpdHkgS2V5In0sImRlc2NyaXB0aW9uIjoiSHlwZXJGSURPIFUyRiBTZWN1cml0eSBLZXkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCIsInJlbW90ZV9oYW5kbGUiXSwiaXNLZXlSZXN0cmljdGVkIjp0cnVlLCJpc0ZyZXNoVXNlclZlcmlmaWNhdGlvblJlcXVpcmVkIjp0cnVlLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlCeHpDQ0FXeWdBd0lCQWdJQ0VBc3dDZ1lJS29aSXpqMEVBd0l3T2pFTE1Ba0dBMVVFQmhNQ1EwRXhFakFRQmdOVkJBb01DVWhaVUVWU1UwVkRWVEVYTUJVR0ExVUVBd3dPU0ZsUVJWSkdTVVJQSURBeU1EQXdJQmNOTVRnd01UQXhNREF3TURBd1doZ1BNakEwTnpFeU16RXlNelU1TlRsYU1Eb3hDekFKQmdOVkJBWVRBa05CTVJJd0VBWURWUVFLREFsSVdWQkZVbE5GUTFVeEZ6QVZCZ05WQkFNTURraFpVRVZTUmtsRVR5QXdNakF3TUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFcktVSTFHMFM3YTZJT0xsbUhpcExsQnV4VFlqc0VFU1F2elFoM2RCN2R2eHhXV203a1dMOTFycTZTN2F5WkcwZ1pQUit6WXFkRnp3QVlEY0c0K2FYNjZOZ01GNHdIUVlEVlIwT0JCWUVGTFpZY2ZNTXdrUUFHYnQzcnl6WkZQRnlwbXNJTUI4R0ExVWRJd1FZTUJhQUZMWlljZk1Nd2tRQUdidDNyeXpaRlBGeXBtc0lNQXdHQTFVZEV3UUZNQU1CQWY4d0RnWURWUjBQQVFIL0JBUURBZ0VHTUFvR0NDcUdTTTQ5QkFNQ0Ewa0FNRVlDSVFDRzIvcHBNR3Q3cGtjUmllNVlJb2hTM3VEUElybWlSY1RqcURjbEtWV2cwZ0loQU5jUE5EWkhFMi96Wit1QjVUaEc5T1p1cyt4U2I0a25rcmJBeVhLWDJ6bS8iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSTBBQUFBV0NBWUFBQUQ5L3g4bEFBQUFCSE5DU1ZRSUNBZ0lmQWhraUFBQUIzRkpSRUZVYUlIdG1rMXkyOWdSeDM4Tkl0TFN6QW5Nbk1ETU5rbVY2YXFweW5KNEE5TW5NQ1NTVmFHME1Md1FzUkJsd1NjUWRZS1JWbG1sUkc1bUcrb0VRNTBnMUM1VVNIUVdqL2grL05CRXRtY20rcThJdkVhL2ZrRDN2L3YxWTRWTk9BeGEvUG03S2ovK1kxb2E4L3dxZi9ucjMvblRkM2ZXOFdmOFp1R3VIV24zbXdnWHdCdnJlR1V2QkJwQWc4UGdIWjk2d3k5aTRUTytMZHI5SmlLdlZsZGpCcjJSWXhYc250U0JpdzJLaG9pOFRhNGRMamdNV2s5bzZqTitDZWowUFVSbXdCaUpyb21vMFFrYVphZnBudFNKNUFhUjZnWkZiMHYzbngzbk53aXBNdWlOVUIyaUVsS0pKcUQxZkhyeS9Db3FGMnNkeGpqRitkbzVqT093TVZWbDZVNmlhMDZQSjdueFR0QUFYcSt1eGl5WTRwSTY2V0wrbWRDZjVaN3BudFJSNS90VWhrdCtGMVdKNUJVaXRaSU5xbE9XTWlic3BiVllwKytCdkZocmQ2dzM3RTFOWUZWZUkycDVUekpoOGU5eHljWjRiU3F2Y3MrSmp2aVAzQ1cyUE1hT0dGNVFvNkt2UzJzVkhYRjZOTWJ6cTdqNzc4M2FaY2JaM3o3bjVMeWdscnpqaUx2ayswV1lPVVNxcU5ZWUhFL29CTTI4MDdoN1Z5RDF6SjFyQnIxUnN1QlN5dElEVkZvSXI1SmJEaGUwK3pQT2pxNnNDeFk4WXFkUVI0QkpRYUlCZkZqOS9nanpFUFlQQVBNaUszdC9BUEtNRm9tSEpJNTFEL1BQNk40UWtkZllJR0txdVZ3dEp1dURJWWJMR0ppaUVpSnExNDFDWlcvR1lYQ1E2TzZlMUltY0g0QWFvZ1Z4QVZmSHEzVS96ZzZBZGhBaXZBZXhtQ0xRQ2VLYTFEZnFGU0R2TkM2MVpOelJNV0RzRnVxckpRMUJqSE9oc3pROXRmdER5THhrNVpiRnZKVXNXdldIZ2trZkdSeUZMT2NObE52QzJNV3FMdnJmWVNJMlRLNUYzaHJqVi9DQ1dpNWRSbmpXS0xmQjRTS242NmtnVWtYMEhNODNqQkxKRmNMVHo5TUpmT013WHdoTFF0cEJDUElUeUUrNHRGZzhEQTNUSEFhdFRLUWFoMW5PRzRUK0RNK3ZsbW9jMVV2T2pveG5HcGtHbGYxUndqZ2lWWlFMNEk5UFl2eWc1OVB1dHhCNUNVQUZEL0RNYi9XVEtGTzk0OU5ST1RXcVhpSVNVMjROSjhPWURnM2l5RW9mT0FBcE1pQXM1dVY3V2QxWmxoU3A0dTdYZ1ZGaTl6cmRvbXVjZklzZFNqTWhHTlU3SUM1Yzg3TEdqc2ZEcEVDdmVOczFrYXJuR1hxN1owa3ppVlozZndoa2MvYzFaMGNwQTUwZVQ2eU9nOVRwQkQ2RG52K3pEQzVDeFYrMUFBQjlpK2Y3c0YvTk9idUl2UkFYbVNacEZxRFRieVdzNnRnWVFDWTUrVTNJNng3UkRwcTVkRjNFUXE1eTljaG01WnZ0eU00ajBsb3Iyd2wybTI1SHVGVFV6N0ZJaEpkZmxGYlRTT2FXNVNwbHhVVnp6Q2FoUDZONzBrS2RmNmFQNm52aVhHbUQ4cEp1UDE4YlJMeTBwV2MrOVliSnh6WlI3S0ZhUzUxZHh3eU9kdnZRM3hJVmJtajNmWllQMXp1blVSdTZKM1d5NWRHdVR2NEVjQkZwWnE3djErNThpaW5MM2JzcEZNMXdlanloMHg4blVTeFN4UXRxYXlOTGFLRUZkckE1VERyb0F6ZkdIbjJmMytYSmJzNFpVY3ZWYnZFT0lZK2JVblNxempnNyt2MUczU29Oc0xDTVNXR0dFWVVheUJCM0g5ckJFT0Z5d3djdjIyR0NvNEU2OWgzdVY0QkR2Q3NCVVA2MVJzNlNzc1NlSjdWQTl6dFQ4UTR3TC9jYW9GUmpiYWJ4RmlvalZFYVorZ1Bnbm1odTMrV1ZkS3hwUTJSMVoxbFY5UzZ4YWZuZ29YcHBmZFk0eHRPazhLOEVGelRERE5RNERGcDV0cEVaRWpVSWoxZGJ2UDRRK042aUsrNHhaSXUrOGNiWlZlK1FRcVFydFh6aFdNQUNEN2N3LzNJRHk2eWRtMXVjcUdWTkVZWVpDczYrcmxpMTRocEhVNXZNSEMyOHdNZlZKb3BYV09NSHZHQllDakNiSFZIUnJxOFBGeVZFU09sYTlKenV5U1JwdWkzbTZZczFQWUZzTi9nKytXWDZPSVVldzVhUEtUSXNGY29tNmo3WUg4QXdWN3VmMHIzeWVTdWJaWGM0dStSK1k5ZXVOY0liVkt1SVpGc1NZYWxwR2R0dTJnZmg2bjFkRVRPOTZaWGsxN0hKRHJNclNxODNsUUZiWmJXK3BTN0l3VmsxNGE0emhwb3RkdHhuaVIzR2JNdnpQUUdKVEVQSzFzZFJQbit4NGl3YmZjSjJCb2gzT0YvS251STdSTGMzNkFhOUVacHhrdWlSZlJ6elhkS2dyV3dLdElLc20ybU9tbDVTcHQxaTJlSVhZUG8waTNtTHl0NGtvVXlSS2hFM2RFL2VjSG84NFRCbzVYb2JBQkh2K0hROHNaNVZLYmVjOVVyNysxOFA5SnhPVUhaR2lRNnNEQUxtSGJyN1UrQkZydDFnampqS1RxVFVjZzIvU21UUnU4VU8xYXRNZ2QxYUhkRk1yTEl3SWkwclB0QU8zaUpNVWExRHRsN1RyWUZsbk1ac2w1dXJZczdRWmV3NDdiNW5JaWREWHhGcCt6MXloZ2pab3ZTTzVVTmoyOFMvYkt3cjhqZnNXRUovUnFmdko4Y0FxdS94Z2lGS2xlU0lJRHRGVnE5ZU1yQTU0eFk3bHVMajBpVDd6WXB6eGJJUythalRTR1dwQVRVa1k0aHl1L2I0SjRQMDdPbjBlRUwzcElFNmVjY3Bka3RWTDNOZDEzd2o2eDVIbTV4dDZEK29USkx6RjF0UkZ6RmRuWCtzTC9wMmtkazJUL21CelVVN3BKM2JyTzVzTjNkd0ZOTHUxeEZxQ0NZTkxCamk4aEUwUGx1cUF5OVdHNUFaRVZmNUx2WWo3QWg3VTd5Z1RnVVAwWHFxRytNQXdwVEZLZ1dlSGsrTXJQb2c5ZngzMHpISWlPVThMRTVsbmI1MHg5QnA2amhabU9PRGZGK2xFMlJiVEcrK1pwUHBHZDhHNWYvVG5CNVBWZ1h1Zlg1QXh5V0h5U0xpM2JQRC9IL0Evcys5b3VNb3R5d2VtbFpaSTNEdy9IZlBaeGgwVCtwMCtxUGtpTitHVHY5WHZFdDZ4cy9CZndHaGhtblljYXlkZ1FBQUFBQkpSVTVFcmtKZ2dnPT0ifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAxOS0wOC0wMiIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiSHlwZXJGSURPIFUyRiBTZWN1cml0eSBLZXkiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlUyRjEwMDAyMDE1MDgwNTAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMSIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMSJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMTktMDgtMDIifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyJmODNmMTBjYWJlNTA1MzcwNTFiYTMwODZhYzEwMWFlNDMyNmUwZGUxIl0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbImY4M2YxMGNhYmU1MDUzNzA1MWJhMzA4NmFjMTAxYWU0MzI2ZTBkZTEiXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkhpZGVleiBLZXkgMyBVMkYifSwiZGVzY3JpcHRpb24iOiJIaWRlZXogS2V5IDMgVTJGIiwiYWx0ZXJuYXRpdmVEZXNjcmlwdGlvbnMiOnsidWstVUEiOiJVMkYgS2V5IC0g0LLRltC0IEhpZGVleiJ9LCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJyZW1vdGVfaGFuZGxlIl0sImlzS2V5UmVzdHJpY3RlZCI6dHJ1ZSwiaXNGcmVzaFVzZXJWZXJpZmljYXRpb25SZXF1aXJlZCI6dHJ1ZSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJ3aXJlbGVzcyIsImJsdWV0b290aCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQ3JUQ0NBbFNnQXdJQkFnSVJBTGhkOTQvNDMxMkltemtpZW05a1V2Z3dDZ1lJS29aSXpqMEVBd0l3Z2FjeEN6QUpCZ05WQkFZVEFsVlRNUXN3Q1FZRFZRUUlEQUpFUlRFT01Bd0dBMVVFQnd3RlJHOTJaWEl4R2pBWUJnTlZCQW9NRVVocFpHVmxlaUJIY205MWNDQkpibU11TVNVd0l3WURWUVFMREJ4SWFXUmxaWG9nUTJWeWRHbG1hV05oZEdVZ1FYVjBhRzl5YVhSNU1SY3dGUVlEVlFRRERBNUlhV1JsWlhvZ1VtOXZkQ0JEUVRFZk1CMEdDU3FHU0liM0RRRUpBUllRYkdWbllXeEFhR2xrWldWNkxtTnZiVEFlRncweE9URXhNamN4TkRFd01UUmFGdzB5T1RFeE1qWXhOREV3TVRSYU1JR2dNUXN3Q1FZRFZRUUdFd0pWVXpFTE1Ba0dBMVVFQ0F3Q1JFVXhHakFZQmdOVkJBb01FVWhwWkdWbGVpQkhjbTkxY0NCSmJtTXVNU1V3SXdZRFZRUUxEQnhJYVdSbFpYb2dRMlZ5ZEdsbWFXTmhkR1VnUVhWMGFHOXlhWFI1TVNBd0hnWURWUVFEREJkSWFXUmxaWG9nUzJWNUlFWkpSRThnVW05dmRDQkRRVEVmTUIwR0NTcUdTSWIzRFFFSkFSWVFiR1ZuWVd4QWFHbGtaV1Y2TG1OdmJUQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJDQkx5ai9tM1JEelkzSUZkM01zeWc0ZXhta0xHTWhDNmFHSCtVbXpsMDFiYlRtbzZJUWNPYW9xK3JhSUZ3R3ZpM3N3SUNJUENxVUtLbUdvaHJTVW9LdWpaakJrTUIwR0ExVWREZ1FXQkJRSzhZVjl6WWFYRWFnNjMvTkJraHl1QVEzdlBEQWZCZ05WSFNNRUdEQVdnQlNtb2kzRmlreTFxMmlUWFpHTUNKN0lOU0ZxbWpBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQU1BNEdBMVVkRHdFQi93UUVBd0lCaGpBS0JnZ3Foa2pPUFFRREFnTkhBREJFQWlBbk44emR0d0ZwRDBPMWhaVjB6WVN2aFN4aThuODBCN2hsMkk3d0pHVW95d0lnUHFHdVVvdmthOXorS3p2VXNmK0dOZFM1WWJueDY1T3p5cXhDTlR4S2pWUT0iLCJNSUlDc1RDQ0FsaWdBd0lCQWdJUkFQK1czUXRud015WGFmdVFvTmFYY3FVd0NnWUlLb1pJemowRUF3SXdnYWN4Q3pBSkJnTlZCQVlUQWxWVE1Rc3dDUVlEVlFRSURBSkVSVEVPTUF3R0ExVUVCd3dGUkc5MlpYSXhHakFZQmdOVkJBb01FVWhwWkdWbGVpQkhjbTkxY0NCSmJtTXVNU1V3SXdZRFZRUUxEQnhJYVdSbFpYb2dRMlZ5ZEdsbWFXTmhkR1VnUVhWMGFHOXlhWFI1TVJjd0ZRWURWUVFEREE1SWFXUmxaWG9nVW05dmRDQkRRVEVmTUIwR0NTcUdTSWIzRFFFSkFSWVFiR1ZuWVd4QWFHbGtaV1Y2TG1OdmJUQWVGdzB4T1RFeE1qY3hOREE0TUROYUZ3MHpPVEV4TWpjeE5EQTRNRE5hTUlHbk1Rc3dDUVlEVlFRR0V3SlZVekVMTUFrR0ExVUVDQXdDUkVVeERqQU1CZ05WQkFjTUJVUnZkbVZ5TVJvd0dBWURWUVFLREJGSWFXUmxaWG9nUjNKdmRYQWdTVzVqTGpFbE1DTUdBMVVFQ3d3Y1NHbGtaV1Y2SUVObGNuUnBabWxqWVhSbElFRjFkR2h2Y21sMGVURVhNQlVHQTFVRUF3d09TR2xrWldWNklGSnZiM1FnUTBFeEh6QWRCZ2txaGtpRzl3MEJDUUVXRUd4bFoyRnNRR2hwWkdWbGVpNWpiMjB3V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVR1dGgvM2NjVmxJL2hHeUo3elNOYXFoQ0xEeUtNOUp1Wk5qY1RzbkRBWXlSRE9wellFV2lMcXMzamRmVktkM1Zndjgvaitmb0RNU01wSSttd2pPei9wbzJNd1lUQWRCZ05WSFE0RUZnUVVwcUl0eFlwTXRhdG9rMTJSakFpZXlEVWhhcG93SHdZRFZSMGpCQmd3Rm9BVXBxSXR4WXBNdGF0b2sxMlJqQWlleURVaGFwb3dEd1lEVlIwVEFRSC9CQVV3QXdFQi96QU9CZ05WSFE4QkFmOEVCQU1DQVlZd0NnWUlLb1pJemowRUF3SURSd0F3UkFJZ040Z00rOXUzTkJMTWtkRVcxUGFERzlPbFpaaVViNnZoQ01NTmk0NXEwNnNDSUI4QThLbDh0UlYvR2tKWVBTK3J1eTBuTFMzVit0Q0Z6VElFaUJBWWs3aUEiXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSUFBQUFDQUNBWUFBQUcwT1ZGZEFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBeVJwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFBRHcvZUhCaFkydGxkQ0JpWldkcGJqMGk3N3UvSWlCcFpEMGlWelZOTUUxd1EyVm9hVWg2Y21WVGVrNVVZM3ByWXpsa0lqOCtJRHg0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJa0ZrYjJKbElGaE5VQ0JEYjNKbElEVXVNeTFqTURFeElEWTJMakUwTlRZMk1Td2dNakF4TWk4d01pOHdOaTB4TkRvMU5qb3lOeUFnSUNBZ0lDQWdJajRnUEhKa1pqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWo0Z1BISmtaanBFWlhOamNtbHdkR2x2YmlCeVpHWTZZV0p2ZFhROUlpSWdlRzFzYm5NNmVHMXdQU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2SWlCNGJXeHVjenA0YlhCTlRUMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzk0WVhBdk1TNHdMMjF0THlJZ2VHMXNibk02YzNSU1pXWTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl6Vkhsd1pTOVNaWE52ZFhKalpWSmxaaU1pSUhodGNEcERjbVZoZEc5eVZHOXZiRDBpUVdSdlltVWdVR2h2ZEc5emFHOXdJRU5UTmlBb1RXRmphVzUwYjNOb0tTSWdlRzF3VFUwNlNXNXpkR0Z1WTJWSlJEMGllRzF3TG1scFpEb3hNakZET1VJMk9UVkJNREV4TVVVMVFrUkJSRVF3UWtKRk1VWkZSamhHUkNJZ2VHMXdUVTA2Ukc5amRXMWxiblJKUkQwaWVHMXdMbVJwWkRveE1qRkRPVUkyUVRWQk1ERXhNVVUxUWtSQlJFUXdRa0pGTVVaRlJqaEdSQ0krSUR4NGJYQk5UVHBFWlhKcGRtVmtSbkp2YlNCemRGSmxaanBwYm5OMFlXNWpaVWxFUFNKNGJYQXVhV2xrT2pFeU1VTTVRalkzTlVFd01URXhSVFZDUkVGRVJEQkNRa1V4UmtWR09FWkVJaUJ6ZEZKbFpqcGtiMk4xYldWdWRFbEVQU0o0YlhBdVpHbGtPakV5TVVNNVFqWTROVUV3TVRFeFJUVkNSRUZFUkRCQ1FrVXhSa1ZHT0VaRUlpOCtJRHd2Y21SbU9rUmxjMk55YVhCMGFXOXVQaUE4TDNKa1pqcFNSRVkrSUR3dmVEcDRiWEJ0WlhSaFBpQThQM2h3WVdOclpYUWdaVzVrUFNKeUlqOCt2cjVYSWdBQUUvOUpSRUZVZU5waUREbDZnUUVQNEFMaUJDQ2Voa3NCRXc3eC8xQ3NEZFc4RDBrTUJiQmcwUWdDQWtEOEVVbmNDVW8vUmxMRGlHNEFpZ1FPSUl1azlpOFFNNk83QUo5bWRIWC9rY1BnUHdtYVVReGhJdEZtZEhBRlpBQTNFSjhoRUJ2L2NjanJnQXlJQjJKak1sMEFEb05wREJRQUZpSUNpcUFMWUdBZGlaYi9SM1lCSTU2QXd1dEM5THh3Z0FUYlBkSERBT1lLSlNDK2gwZHpBQkM3QVBGZWJJSElpSll2Q0FZc1FBQXhFaWdQd29INEN4QnZKU1VhL3hOd0VTTytBZ1U1U3pPaWFjTHFQU1kwelZZRUVnK0dJU3hrWkdkR3BBd0dUd2ZwWkpRRmNCZjhKN004QU9uNXgwUWd0Y0d3RTdGSkdSZllTMnE5QUFMOUJMTDFUUFJDRlIwVVlVa1B5Q0FOaUU4d1VWQ2dnb0Fsc2hmcVNDMU1rTDBBY2tVak9XbUJDVnR0UTRUdGpMaGlBU1N4QnkwTklHTXQ5REFEQ0NCQzVRRTYrQXpFUEdoaTM2RHRDR1N3SElpamlLMVhHSWhNemYraGxqT2lZVzQwZmljUVI2THBTeWEzZ1lNYzVveEVKcmtLTE9ybjRLcWltZkJZRERPQWlZRXlnTzV3a1BtcXVBcFVFQkNsTUhNUjQ1QmJRTHdkdVVCK0RjVG5nZGlJZ2ZZQXVWWmdoWVdBQ0JCM2s5RzBRTWFUeVhETUw1QURRcUdjWmVRVVJVZ2doNXptRFJNMEh3OFlZRUpyZEZTUkVJL21CRkk3U1lYNVFpamRTb0xqVDVGWVBzQ0FDYllxT1lGQS9GSVRuSWJTNXRocW8xUWFPd0s1a0R1RnJTU2NRMlFMbDFRZ0J6V3ZIejI2V0FnVUZ0SkEvQVNML0Ixb3RqMEc3ZE5LUWh2OG9LaGtKYUk0SnJxVDlCUk5JeWpFL2dDeENwNG16Rm0waElZWEFBUVFxZTBCbEFZVjFLTHZRTHdmaU8vU29wdUlESHlBZURNSjVjdC9ZaFVTQWllZ2htM0dFYS9ZNHZjZlVoT01vaEQ0anlWTnlCRGI5d0dDcTRRNjNMaENvQUdMNVl4NExDZVU0ditUNG9BbFFGeFBaaG1QN3BBTGhCeUI3Z0F6SUk0bVl3UUpGekRFMGVyQzZZQ1RWTFNjQVVmM0YyOG5tOXFXNHhxZ21Jb3ZEZERDY25TenM5QWQ4SjhPbHFNN29oNWJkVXd2d0FmTjZtQUhhQTlBVS9BemNrbDRnSUxVVFduYVlXS0M5Z2tvdFp6Y0Jrd2ZPZjIrNTFTSWdqSllEWXZzQUM0aU5VdmdrZk1pMG93bW1KM0lEcGhIcE9ZbGVPUzJFV2tHTzZ4MlJYWkFPSkdhWTZtWUcrWXpRZHR3bEJTckROREdLVG01WUJvTHRGMzNud3FPSUJic3cxY2JmcUZESWVTSXp3SGNkQ3dONVpBZGdCeWNMVFMwRkRtcUg2T0h3Q2NvWFUybnlnZ2pDdml4TlJobzVQdlB1TklBUm9PQnhpMGp2QzJpRHpUcWxoUFZMMkNFUmtrWmhSWXpBL0ZHZk9VR0M0R2dBcm04RTR2Y0dpRGV4QUFaY0FSMXgwMmhSYms1am9LSGtkeXVHYTdCaWhBb3ByaTBaQ0loNFlCd0R4RnFyVW5wVFFFRUVDWGpBOFFDRFNBdWhQYTRTQ2xwUVpQam9OSFhSYlIwSEJPVnpkdk9nRG1FZkowQk1zV0Y3dmtTcEpqaUJlS1hhUEtnU25vaEEvYVpINlBCRWdBRmFBN3p3S0h1STlTVHlPTXB2V2lOQUFrMCtWbDQ3RDJMWk9jdmVnZUFIcExsL1RqVXZFUHpqQUFaTFoxME5ETlc0RkRIaXVTZUI3UU1nTVZRU3k0UzRXQmhHbVRYU0NUekZYQ29rV2ZBdjNpR3JBQ29neG9ZZzYxRlRXU1NwVFo0aUdTdkg1N2FuMkJBa0RwRUNRTzhkR3E4RXdNMk0rQ2ZYUGdQVGIxeHBLU0FZaHlHd1VKOXNIZ2VsL3V3ZFdUL0U1c0Nkak5BVmlxaEI5Ui9ocUVEY0tXSS80UmE0K3ZSUEcvQlFQNUNzOEdhSW5DT0VBY3lRTmFwZ2NCTXFNYVRETU1EWUZzNmdSRUE2NUFVWnpBTVR3RHkyMndvdXhzNUFKQzc0RXAwY0lnbnRMR0UzSXBjUWFkQVNFVnFpc01EQUhrSWdKYkRBVERQZ3NZd0JkSGt3cEhrOTlBcE1EeEFBV0NKcFFxa05nZ2pzU0IxcGxIQnE0L2VJV05pSUdGdW5RS3drdHdZb3JJNzBNY1RORUVCOEIyTHdzQkJVbWpkb3JKNUx0aGFndnV3S0Z4Rm80WUpxV01MOTZqb0JsTXNZbnVZY0ZnQ2FpRnkwaUFRRHBDZzFvdks5aC9GSXRhTmJkMFdETHlsUVpKMlJPdmp1MEY3YzBvTTVDMUNJNlh3dzdhWTZRcjZ5amxrQUVvQndUVE80N3VodmJuN05MYm5BbzdJUUdrSll1c1lyUmtHcmI5WFdNUXV3N0lqY2dDQXRseFprVEFtTUJRQXFITW5pa1ZjRDFkdjhEZ0Q5dG1Gb1JnSVU1RTZkemhySkd3RElxZHdGRVJES1JEbVltblNiOExtTDBKelU5ZEFyU1Y4QXdxREVPd0NZbGRpMnlHRUJrVzFjQXdvTUExU3p6OUc4M3dkb1FnamRXNE91Y0RVSFdTZUIwV01ESnJIbXdscFlpSFJFbGdnZ1BydWw3RElmNFBtdFEwTWtLMEIxQnc4QlEzUCtVSUxOaTFxTmJtcE1UazZnNEgwZllYVUJLQjFUMlJQajFFakwyZWdOV05yYU9oWlVJdFJHTTAraXVZR1dXamd5RllHN0p0UldLQnRmMmRvUTBRQnFjUEZEQzNBYmtIYklxQ1MvRFk5a2c5QUFQS3VMU1NMSUFvZk5hUkFKQklTSTdzUVdrU1FKVVpKbWQzd0pheGVJb2dzRUl3dWhEMEkwb05HMFVObFJROVpVWUVRQlJLSWtSSGR5Q0x5SVNxUUlnc2lxTWdLb1ljU3BGRHI5Si9oMzZZenU3UDd6Nnk3ZngvOG9MT3pPM08rbmN1Wk0yZk9odUVmSUtPWWZnVzBRRUhoUHhFQldKbWhNQ3N6TG9ReWFtbU1LUE54RHc2ZWwzNy9qaGkyQ1ZnWkEyVGdHMjJIcElIenZJdndxbE5zT1VUYUczckdkK28ra1NaZ01WVVd6L2hzOU1pTDUwRFFYVTZjaG0zd3lJLzVidEx6TzZOR3dIeXFXSTlHWHJHVGl3ckxOMGQ2QzZXdjBIakdPaXJ2WGhRSUdGRVlHMlEwZy90ZXZrQTM1U3NrYmRNTmxVUkUzVmdRc0VkelliU044aHp3K2Z3UE5FRG5hS3hDejZheVVnMHlDK0NVbGUrUlp6ZVk4WGdkcEplRVUrWkhqYlVBdXVTOXN0a0NSajJFdjBodjNMUzdiejg5MTJ1anBBOW96ODhHQVc3TjdBZFZzTWF5VG5HVHlubmtrdWNvclUrTUV1QW0vRlpJSHNRSUMrZ09PODNsT3VvUXJhYkdBTzI0UFdOZy9NZ2d2U09MdWI2REZLbGpxYlNBVVJkVk5TcW1zWEcwZU9MUTRtVzRjU1BnaWlMOUtTVGM1S0tFS2xESHQra05Ra0FKOFA3dzZQMWZDdEhFZmxCSHRCbnlTOEF6SmcxRDVxeUhhQVBydUZaaE5kcXVTOEJGSnEwTE5PTUZSUURYcVV2SU9LTkxnT3dUL0FBU3hzZzRBUWRGYm51OXc0c0EyVm5pM2UvZmNvZ25iakNLMlFZdkF1VGw2SFNJTjdBN04wcHBiU29DamtSSXlURUpQSFoyV3RKY1dRSWEwbEI0Z1oyMGpoQllJeE9RNjdpWUJla0pYRWtLVS9zNW1RQnhPaEZQZll4QStxSllIdHNFQWNJNXVneitIOHprWm9FRklSWGVBWDg3U21PTXZaVWh0Z0N4V3Z4RFFHNklyTGVSd1BKOGpQRTg3b0o5TDVSbGpyODNpYVZrVlVqQ282Tml1YWI5d2RZczVIUU1MeFF0SUl5bVY2MHB2SmNkSWxYSURtRFptVXkvTDdaUThOVUE5NnkyVUk5NTB2OXpNaUVabmwyZ3duQ2hRZTJGclNHMHpHbEl3RVNQOVlBSkJTUUlpa0lnWUVJbW8vaXNNbHhJSGtRRFhGeThEQkd4MFlsOHd3VUg5Y0FZTmx3UHpxYng1MXNJQTVhWmZ4cndQdE9Ic2JsNFVmMUl3QXZtd2d6RGhmY0V1TWYwNlRYT3NOT0hCSEFmc3FnMVhIaTV6L3dIUXhvWEJwQ0EyOHlGT2d1RjZlNUVvODdRWkxqc1F0VUZKSUE3SHp6WkFnSEQ4Ry9RVHhub1BtZkQ5TjdJcE4zeGVpdEl3aGNMbFJHYUo1NFR3ckNPUTRwV2FCTGNlSExLdVJ6bUJzSVd5NVZDOTdkcklRaXZRcWVUQUs2SmJJSDBRTDNiUlVGQWwrSjZmaG9RY01KdG5aRXBOVWtaMTJNdWZJNGlmUmRIQUxlcFdCcHpBcmhRbzBOY0YwQzhWRHprZUl3SldPWmxGUEhhR2tQc2phbndaeFhwdlc0RWRDdHVhbzRoQVp3Mk8xYzFDemd4aFVuYm53WnYveFBYelRrQytoWEt5YUdZdi8wQ056MUFCdWVidnk4bXduUE9YWnU5RkNFTzJVeGFld3dJa0oyN01QemY1U0FFL0lUa2g1RUVOa1pjZU02NXEwUkhGVllCNHdmSW42VjZIVkhoeHpQQ0dnbHJpOUdGblo1alJaYnNCYW5pcTEvaGRRbEExRWpMNDg4UkUzNGh0UUJmd3ZzaEFJRXVOT3NjLytNV2R6V003VW55SW1xaFR4empscStOVmIrVmR3WWh3QzF1dE4raHFVdnM4K01nMU9RMThBVEFKTEpQSU9rL0hPWGhlQ1M4V3k0b1ppNVhCRDA0aVNROGhJVGZ2anppNGs5MlhNYnpnV2g5Zms3YTJIdEhOOEtkcVR4U1ZHWkJ3a3lHei9Eam9vZHhRZ0x0YjZSeWNuUXBKRDdQTWFpUkYvTlZnUG1OMTVQZ1lmRXgzUVdBZWJQWUdoYUYzUGU3cU56NlZCOWthZ0I3VEJYQ3B2ak9vdURpTTZmR2ZKZE5qK0FEMUhleGtwV2dqa0t0Qy9HQkFmSHA0Y09tR2JWNWV2eStOQnZNcGtYV0VwcStwa0p5QnhpNzBsc2lESS9FM2dMenU4TXNmZ25RM3JtR1dsRkZjWHg1NkZKa0pJU2FtTVpOTDVtaWZiQ0lvdWdxOXBLRXlwSXdBODJ1bE4wTU5Bc3EreEpob1dDWjVhT1hWcGJhQTdPWGtkNk1vcUw4RUpSbUQ1TWtQNVFhMkFQTE1zemZQV3QzaHRPWm1UMlBNMmZtM1AySGc5ZHpadmJNM212TjdMM1dYdXUvR3NFZlVHK1F6a01DWlp0K0JxdVBvNjkrVHRCRlU0dFVZaU5LT3IzK29TOTFOSG12K2hDZzhmNU9QenNzWC9xRndURUZ2R2RZTjRoMW5xQlBWRm9SL2N6VUpscW9MY0o1S0VhWHJnazNTMEpLazZ4Unl2bjl0YW94dnQreitEMm9nejBqZ2ZBUFNYbHZxTDh1c3Bmb2QzSEEyaFVIM0p2YWhybFAzaUR6eGE1aXAxTUFCUXVIVHoyRHlMdzRWNUtIbVdFcVRwUUs4UkJUQUh0ais5U0pjSnQrWjM2bmxNV1hDYS9KaXZBdU5YcE1mOTZUbklYak4xb0JtSk5mOWd6UWxoUUc2Qzk5dWsvMUNCVGk2UFVSMmxpckZxazVuNy9Ub0JsdXIxSndlRno3OURRRllEWDhoVlJ5SkpLUzF2S3FuU1hsTkNlRWRhdyszVCtrZU0rOERhNzFLQVJQOTZQeS8valNxTURMZUVESFlxc0UweUVVV2dGd1VyMnVIWVhoWTJTQ3R0aTBtKzRSeHNrcWpDelR2UGFyMHJWNEZHSlp3amJQVm92amlMNXRlaldEQWx5dkhUb2t0VU5QYklDTDkxNjFXSHFwU2JjeVoyc1hGT0lXajFLeS8vNStndlltU2FXUS9WVkZWQURENnZSY3pQTnhUb3pTd2VUdGNYOVdqcEdVc0VQbmU2TVFTUUpMVEdyaG9pSW9nQ2xFRnlmR2VxUGE0UXdZVWJUYm1zamZjcDlIR2VKV0xwcXRZN3M2andxd1RQd0w4UVVCMStkZ3FkU1IrRVdhSHl1a2RxMU5XMHpSc1Y2WUJ3V1lxamR6YzR6ekdBQjg1WHVrNThKVW15VmY0TnNZNXpMMjF6UkNBU0EySmFCNlZZUnpXT0VPMGc0L0t3NWU0UEE2WGNmbXFZam5FZ20zWFdLNjllTW9BRjR6Q09ST3N6eStTMjMwVmlrejZEb0VvME1WSVVxbTRBaTFscWJYV3dGSWVWeHNlZXdHN2NoRjB0eFVMUFhDTW9sZVk0dTN4Nlo2S0FCUEw1c3c1MW9jYStpaXIzUXlUQVVieFk1QzE0QUhqdktkL2RKU2dIYWRvOEtxemIwamRuVFpEdkZnS0lSdHdvRW9YNHFML0t5a0NuQzVoSmNFL0Z5VjQxSW5vMHhnQXVKc1BJU0VZbzZOcXdCanhEOS9GUHdxNVkwZHFnbjg2ZVNTT1Y1VlJlZ01PUTVPME5GUkZZQ2svYUJ5RGN6dmJHTis0K1RRY0N4VlJYZ2c0QmgyR3R0c0ZZQWRydGQ4R2pJRnl6YTRjYzhkN2xiWnJQV1I4eHUyQ29BcFVSMXE5WlpZVnFwemFEZ21xNnkyVm4wL1RHcFFzVlVyQUFzTEwwa0dRUlVEZERIb1VDeVFyWEdLbE9NbkRDQU12VGhJQWFybkVTSmhmbkpqV1ZoUWc2aDZWM1crOXo5ZS8zR0h2aWE4WUZ1V09QcmZtMmhRV09QZ09oMnE5akliS2poT2RxbkNIMjZpdmhKTVc4MlhTdVFSWVhpdlZDdEFMWE9Dc0drQ0lqOHA4Q0JBanZ1NENqd0tpRnRrbC9PakF2ZWRvSnBhOU5DZFJnSE1GRUM2a2w5U2F4SHJTSkRrWWFKdnUySUkzd3plaDFJSjV5NGl0Lzc1UHQrUFZWUC9Qd1VJOHVKZFVMQk84N1NUdnBWbS9IMjdUZzBMQ3pZVzQwTDYxSzBBSkNvRytZejU3YmlDZEJqVFowWWQyNThyNGE3eHZLQ2Z6dmRCVmtKL0ZJQkV5dUVCQnc0TWFTZ3ZXSmZSZmJaTDlLQ05Sb0NkMjZDNmQ4aDhtQ2xaMmpla3NmRTU3eXl2K3l4WmpLYkZYRmRraVRBYWZPUStvS1NXUU5nQ1owTE9PenNxNCt1VmFwak1lVU9ZODY0N01MV2t3Zy9iRmo1VDhzMGYrbk1EcnZsM2pzY0RxdEN3VWlqZCtZa0lIaEtFQXhhTlhwM2pEclBSa1dWME1idWdtM0k4SGpiVElSRmVCMUVBL1AwMnhEYVRjdHhoc29abVpuaTlqaHlQUll2bHcwcVUxMjRVZ0lpZXp5eE9hTXY1V29DM3dHVVpYSWRTR0Iva2VCeW1pQTg3YkJYWUkraXVIOEtyb011eThadHl2dkF4Y1hQdjFxSHQ5ZHIyeHprZmcwN0w0d2cyUFZ6eUROdytpNU1tU1BwVnR1cUJjU3FzaDFOb3krVDFUU3hBdnlkWitrS1k4amVMWi9YUGJ0OWF5NHZjSThYQmJLbms0ZUVYaDVGamQ4aThTTzdlT1pKT1ptL1dzQzA4OUlKYUFlS2xpY01qdU1PeUFRcHhyaE9IUEFFNjN3VVd4NUdrZ3hQcmU2bXkvMkh1ZU16eVlyeGFqM2Rqbmh1MEh2MDhhSG5zQWlQOGFnVUFzRnJaVk0waVRPeHBOKzY1d1dxeFMvSmhpcHZuL2FMNnBOL0V2b0lncEVtejNOZzNISXZGZjkrL2x2L2lueUFGTVBhMGJaV1VSNlIya1JHSGJIQ0RsTE8xYlRDdmxubGNDamg0VFFUYmU1aVRSZVlZRTJFYVh1SDNVQWZORzllcGNHMEFFK2RBSjVQTVFMRHVGc3RqSVpueVpYQUpXempnV3JVcG85aGJsYUNQazAzZFFaQ3ViWDF1K0FZRDl3VnNWbzU0LzU2d3RBellKVHZSeWFpdTVwNnQ4QitTMmdYVUl5c0FnUGJOeHNkTUdEbWV0cE9jckZMSEdXckcyWlFHbW5iME04ZW0wU2dVTWVTVkVXUVFScXNPMXg4WktZT2N6RklES2ZnMlhscG85dUFiZnNhMjRhZ2NRVkNaRVNFY3h2SUZZVE54QmlPYzdCS0RzSHlic2k0cjlPR0xSSklkbHladXFtcGxHSDNyZGpWWEhPSUJIb2F3MkFPY2QwTWxKZ05wRXFKSUFra0lLTDBqNURqTWxjbE9scEZCN0VWWWpZT1p1dWplRmZjaWFWREZVbFdUYmRPZ2pTUzJIKzkwTXJVR01RakxBMzVmcEdPK1BPbUYwaVNMdmxWdmFxblA3OVI4VytKa0c0b25wVXlQSHlUNDI5TzZXRDNvNGp2MUp1ZjRLTWw2SjJOZlFMMXpvODkwa0tyZ0RiS29HMGp1NFVZSnpxVFpvd3ZHYmZyaDc2K2x6RVRXRE1Bdk1seXRJajRqOWQrQklRdm9TOVNrcmh1eUxoeEpqWnhWa3F3Y0NwbS9PNlZjcjIrbkxvQjJxL216UitwUE9ZK3pDNHA3NkZmZ1N5WmFlb2orUFVSTjRMaWc0QldVK3k5bEpaQkdWZzVGR2VERDdlbVJSYnpseUdoK3NSRVhiMlRaT0p4SnZmVnR3SGJ5MnoxSTZORHd0V3JmK3pSSytJMVdBQy9ZUkJvdmxVaGM1c3ZuUlNOWEN3NmNaU3QxTFdUNmQ0VUVSeWYzT0FXb3hsYzZGNVk4ZzNhaGxOMmRlM01zN0wwNnJaM251VytjWmROMXZaSTdORVAxY0xhaGlZbURFR0cwcnJENzExSEFXQ2t3a2NCQkJJSFVqMFVldkY1SGpqVERXOVloTHY0Rk1GYkI3by8vSklVQUFBQUFTVVZPUks1Q1lJSSJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMi0wNy0wOCJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjItMDctMDgifSx7ImFhZ3VpZCI6IjNlOWRiMjgwLTI1NmEtNGUxNy1iMDhlLTE5ZDc5ZTliZTE2NiIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiM2U5ZGIyODAtMjU2YS00ZTE3LWIwOGUtMTlkNzllOWJlMTY2IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlNFQ09SQSBJRCBWMiBQYXkgRWRpdGlvbiJ9LCJkZXNjcmlwdGlvbiI6IlNFQ09SQSBJRCBWMiBieSBJbmZpbmVvbiBQYXkgRWRpdGlvbiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH0seyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNSVENDQWV1Z0F3SUJBZ0lJVUdGNVEyNUZaREV3Q2dZSUtvWkl6ajBFQXdJd2daUXhDekFKQmdOVkJBWVRBa1JGTVNrd0p3WURWUVFMRENCRFFTQm1iM0lnUVhWMGFHVnVkR2xqWVhSdmNpQkJkSFJsYzNSaGRHbHZiakVoTUI4R0ExVUVDZ3dZU1c1bWFXNWxiMjRnVkdWamFHNXZiRzluYVdWeklFRkhNVGN3TlFZRFZRUUREQzVKYm1acGJtVnZiaUJHU1VSUE1pQlNiMjkwSUVOQklGTmxjbWxoYkNBMU1EWXhOemswTXpaRk5EVTJORE14TUNBWERUSTFNRFV6TVRJeU1EQXdNRm9ZRHpJd05UQXhNak13TWpNd01EQXdXakNCbERFTE1Ba0dBMVVFQmhNQ1JFVXhLVEFuQmdOVkJBc01JRU5CSUdadmNpQkJkWFJvWlc1MGFXTmhkRzl5SUVGMGRHVnpkR0YwYVc5dU1TRXdId1lEVlFRS0RCaEpibVpwYm1WdmJpQlVaV05vYm05c2IyZHBaWE1nUVVjeE56QTFCZ05WQkFNTUxrbHVabWx1Wlc5dUlFWkpSRTh5SUZKdmIzUWdRMEVnVTJWeWFXRnNJRFV3TmpFM09UUXpOa1UwTlRZME16RXdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUm5qdUwvSXBRdE1xRXVLUUpWTmtEZ3pIalc3akc0NkRXOU5CbWJkdFZLclNRMm1qanRzTE5WM1lEVTJVYTZyQ3FoOTYvZzVPaVhIV2wxbjh6MDdqWkhveU13SVRBUEJnTlZIUk1FQ0RBR0FRSC9BZ0VBTUE0R0ExVWREd0VCL3dRRUF3SUFCREFLQmdncWhrak9QUVFEQWdOSUFEQkZBaUVBbmdXSEZ2dWg5TkFpYkE3eHdxd3NpOW9LaGFPU1BDdzVRY3VFOGgvb1M1NENJQ3MyUEVxcExGbjFDTmpOVHNMZDJJMVU3UHJyc1RuN2ZtWlJqeGFSRGlKQSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFJY0FBQUE4Q0FZQUFBQk02cW04QUFBQUJHZEJUVUVBQUxHT2ZQdFJrd0FBQUNCalNGSk5BQUNIRHdBQWpBOEFBUDFTQUFDQlFBQUFmWGtBQU9tTEFBQTg1UUFBR2N4elBJVjNBQUFLTDJsRFExQkpRME1nVUhKdlptbHNaUUFBU01lZGxuZFVWTmNXaDgrOWQzcWh6VEFDVW9iZXU4QUEwbnVUWGtWaG1CbGdLQU1PTXpTeElhSUNFVVZFbWlKSVVNU0EwVkFrVmtTeEVCUlVzQWNrQ0NneEdFVlVMRzlHMW91dXJMejM4dkw3NDZ4djdiUDN1ZnZzdmM5YUZ3Q1NweStYbHdaTEFaREtFL0NEUEp6cEVaRlJkT3dBZ0FFZVlJQXBBRXhXUnJwZnNIc0lFTW5MellXZUlYSUNYd1FCOEhwWXZBSncwOUF6Z0U0SC81K2tXZWw4Z2VpWUFCR2JzemtaTEJFWGlEZ2xTNUF1dHMrS21CcVhMR1lZSldhK0tFRVJ5NGs1WVpFTlB2c3NzcU9ZMmFrOHRvakZPYWV6VTlsaTdoWHh0a3doUjhTSXI0Z0xNN21jTEJIZkVyRkdpakNWSytJMzR0aFVEak1EQUJSSmJCZHdXSWtpTmhFeGlSOFM1Q0xpNVFEZ1NBbGZjZHhYTE9Ca0M4U1hja2xMeitGekV4SUZkQjJXTHQzVTJwcEI5K1JrcFhBRUFzTUFKaXVaeVdmVFhkSlMwNW04SEFBVzcveFpNdUxhMGtWRnRqUzF0clEwTkRNeS9hcFEvM1h6YjByYzIwVjZHZmk1WnhDdC80dnRyL3pTR2dCZ3pJbHFzL09MTGE0S2dNNHRBTWpkKzJMVE9BQ0FwS2h2SGRlL3VnOU5QQytKQWtHNmpiRnhWbGFXRVpmRE1oSVg5QS85VDRlL29hKytaeVErN28veTBGMDU4VXhoaW9BdXJoc3JMU1ZOeUtkbnBETlpITHJobjRmNEh3ZitkUjRHUVp4NERwL0RFMFdFaWFhTXkwc1F0WnZINWdxNGFUdzZsL2VmbXZnUHcvNmt4YmtXaWRMNEVWQmpqSURVZFNwQWZ1MEhLQW9SSU5IN3hWMy9vMisrK0RBZ2ZubmhLcE9MYy8vdk4vMW53YVhpSllPYjhEbk9KU2lFemhMeU14ZjN4TThTb0FFQlNBSXFrQWZLUUIzb0FFTmdCcXlBTFhBRWJzQWIrSU1RRUFsV0F4WklCS21BRDdKQUh0Z0VDa0V4MkFuMmdHcFFCeHBCTTJnRngwRW5PQVhPZzB2Z0dyZ0Jib1A3WUJSTWdHZGdGcndHQ3hBRVlTRXlSSUhrSVJWSUU5S0h6Q0FHWkErNVFiNVFFQlFKeFVJSkVBOFNRbm5RWnFnWUtvT3FvWHFvR2ZvZU9nbWRoNjVBZzlCZGFBeWFobjZIM3NFSVRJS3BzQktzQlJ2REROZ0o5b0ZENEZWd0Fyd0d6b1VMNEIxd0pkd0FINFU3NFBQd05mZzJQQW8vZytjUWdCQVJHcUtLR0NJTXhBWHhSNktRZUlTUHJFZUtrQXFrQVdsRnVwRSs1Q1l5aXN3Z2IxRVlGQVZGUnhtaWJGR2VxRkFVQzdVR3RSNVZncXBHSFVaMW9IcFJOMUZqcUZuVVJ6UVpyWWpXUjl1Z3ZkQVI2QVIwRnJvUVhZRnVRcmVqTDZKdm95ZlFyekVZREEyampiSENlR0lpTVVtWXRaZ1N6RDVNRytZY1poQXpqcG5EWXJIeVdIMnNIZFlmeThRS3NJWFlLdXhSN0Zuc0VIWUMrd1pIeEtuZ3pIRHV1Q2djRDVlUHE4QWR3WjNCRGVFbWNRdDRLYndtM2didmoyZmpjL0NsK0VaOE4vNDZmZ0svUUpBbWFCUHNDQ0dFSk1JbVFpV2hsWENSOElEd2trZ2txaEd0aVlGRUxuRWpzWko0akhpWk9FWjhTNUloNlpGY1NORWtJV2tINlJEcEhPa3U2U1daVE5ZaU81S2p5QUx5RG5JeitRTDVFZm1OQkVYQ1NNSkxnaTJ4UWFKR29rTmlTT0s1SkY1U1U5SkpjclZrcm1TRjVBbko2NUl6VW5ncExTa1hLYWJVZXFrYXFaTlNJMUp6MGhScFUybC82VlRwRXVrajBsZWtwMlN3TWxveWJqSnNtUUtaZ3pJWFpNWXBDRVdkNGtKaFVUWlRHaWtYS1JOVURGV2I2a1ZOb2haVHY2TU9VR2RsWldTWHlZYkpac3ZXeUo2V0hhVWhOQzJhRnkyRlZrbzdUaHVtdlZ1aXRNUnBDV2ZKOWlXdFM0YVd6TXN0bFhPVTQ4Z1Z5YlhKM1paN0owK1hkNU5QbHQ4bDN5bi9VQUdsb0tjUXFKQ2xzRi9ob3NMTVV1cFMyNldzcFVWTGp5Kzlwd2dyNmlrR0thNVZQS2pZcnppbnBLemtvWlN1VktWMFFXbEdtYWJzcUp5a1hLNThSbmxhaGFKaXI4SlZLVmM1cS9LVUxrdDNvcWZRSyttOTlGbFZSVlZQVmFGcXZlcUE2b0thdGxxb1dyNWFtOXBEZFlJNlF6MWV2Vnk5UjMxV1EwWERUeU5QbzBYam5pWmVrNkdacUxsWHMwOXpYa3RiSzF4cnExYW4xcFMybkxhWGRxNTJpL1lESGJLT2c4NGFuUWFkVzdvWVhZWnVzdTQrM1J0NnNKNkZYcUplamQ1MWZWamZVcCtydjA5LzBBQnRZRzNBTTJnd0dERWtHVG9aWmhxMkdJNFowWXg4amZLTk9vMmVHMnNZUnhudk11NHovbWhpWVpKaTBtaHkzMVRHMU5zMDM3VGI5SGN6UFRPV1dZM1pMWE95dWJ2NUJ2TXU4eGZMOUpkeGx1MWZkc2VDWXVGbnNkV2l4K0tEcFpVbDM3TFZjdHBLd3lyV3F0WnFoRUZsQkRCS0dKZXQwZGJPMWh1c1QxbS90YkcwRWRnY3Qvbk4xdEEyMmZhSTdkUnk3ZVdjNVkzTHgrM1U3SmgyOVhhajluVDdXUHNEOXFNT3FnNU1od2FIeDQ3cWptekhKc2RKSjEybkpLZWpUcytkVFp6NXp1M084eTQyTHV0Y3pya2lyaDZ1UmE0RGJqSnVvVzdWYm8vYzFkd1QzRnZjWnowc1BOWjZuUE5FZS9wNDd2SWM4Vkx5WW5rMWU4MTZXM212OCs3MUlma0UrMVQ3UFBiVjgrWDdkdnZCZnQ1K3UvMGVyTkJjd1Z2UjZRLzh2ZngzK3o4TTBBNVlFL0JqSUNZd0lMQW04RW1RYVZCZVVGOHdKVGdtK0VqdzZ4RG5rTktRKzZFNm9jTFFuakRKc09pdzVyRDVjTmZ3c3ZEUkNPT0lkUkhYSWhVaXVaRmRVZGlvc0tpbXFMbVZiaXYzckp5SXRvZ3VqQjVlcGIwcWU5V1YxUXFyVTFhZmpwR01ZY2FjaUVYSGhzY2VpWDNQOUdjMk1PZml2T0pxNDJaWkxxeTlyR2RzUjNZNWU1cGp4eW5qVE1iYnhaZkZUeVhZSmV4T21FNTBTS3hJbk9HNmNLdTVMNUk4aytxUzVwUDlrdzhsZjBvSlQybEx4YVhHcHA3a3lmQ1NlYjFweW1uWmFZUHArdW1GNmFOcmJOYnNXVFBMOStFM1pVQVpxeks2QkZUUnoxUy9VRWU0UlRpV2FaOVprL2ttS3l6clJMWjBOaSs3UDBjdlozdk9aSzU3N3JkclVXdFphM3Z5VlBNMjVZMnRjMXBYdng1YUg3ZStaNFA2aG9JTkV4czlOaDdlUk5pVXZPbW5mSlA4c3Z4WG04TTNkeGNvRld3c0dOL2lzYVdsVUtLUVh6aXkxWFpyM1RiVU51NjJnZTNtMjZ1MmZ5eGlGMTB0TmltdUtINWZ3aXE1K28zcE41WGZmTm9SdjJPZzFMSjAvMDdNVHQ3TzRWME91dzZYU1pmbGxvM3Y5dHZkVVU0dkx5cC90U2RtejVXS1pSVjFld2w3aFh0SEszMHJ1Nm8wcW5aV3ZhOU9yTDVkNDF6VFZxdFl1NzEyZmg5NzM5Qit4LzJ0ZFVwMXhYWHZEbkFQM0tuM3FPOW8wR3FvT0lnNW1IbndTV05ZWTkrM2pHK2JteFNhaXBzK0hPSWRHajBjZExpMzJhcTUrWWppa2RJV3VFWFlNbjAwK3VpTjcxeS82Mm8xYksxdm83VVZId1BIaE1lZWZoLzcvZkJ4bitNOUp4Z25Xbi9RL0tHMm5kSmUxQUYxNUhUTWRpWjJqblpGZGcyZTlEN1owMjNiM2Y2ajBZK0hUcW1lcWprdGU3cjBET0ZNd1psUFozUFB6cDFMUHpkelB1SDhlRTlNei8wTEVSZHU5UWIyRGx6MHVYajVrdnVsQzMxT2ZXY3YyMTArZGNYbXlzbXJqS3VkMXl5dmRmUmI5TGYvWlBGVCs0RGxRTWQxcSt0ZE42eHZkQTh1SHp3ejVEQjAvcWJyelV1M3ZHNWR1NzNpOXVCdzZQQ2RrZWlSMFR2c08xTjNVKzYrdUpkNWIrSCt4Z2ZvQjBVUHBSNVdQRko4MVBDejdzOXRvNWFqcDhkY3gvb2ZCeisrUDg0YWYvWkx4aS92SndxZWtKOVVUS3BNTmsrWlRaMmFkcCsrOFhUbDA0bG42YzhXWmdwL2xmNjE5cm5POHg5K2MveXRmelppZHVJRi84V24zMHRleXI4ODlHclpxNTY1Z0xsSHIxTmZMOHdYdlpGL2MvZ3Q0MjNmdS9CM2t3dFo3N0h2S3ovb2Z1ais2UFB4d2FmVVQ1LytCUU9ZOC94dkp0d1BBQUFBQ1hCSVdYTUFBQTdFQUFBT3hBR1ZLdzRiQUFBQUozUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQlFhRzkwYjNOb2IzQWdRME1nS0UxaFkybHVkRzl6YUNtKzc0YUFBQUFBQjNSSlRVVUgzUW9IRVRFSkYzYnpHQUFBQUNGMFJWaDBRM0psWVhScGIyNGdWR2x0WlFBeU1ERXhPakEzT2pBM0lERTNPak0wT2pVMHZKY2VlZ0FBR0tCSlJFRlVlRjd0WFFsZ0ZGV2EvcXJQSE9ST3lFRTR3bzBCUVFSVUZCRkVHQUVWQkc5bVVIQ0VtWjBkY2NaajFkbVpjVjFYUlJEdmM4UlpYWThaQVhVUVJCQVFQQUF2a0J0Q0lFQkM3anZwN3ZTNTMxOVZUYm83alFRTUViUS9xSFRWZTY5ZXZlTjcvL0hlcTI3RlIrQU1nOC9waHJleUZsNlhEWjR5Zmg2dWdLZWtIQjVYRlh4MURuaUthK0FwT0F4M1NRbkRxNEJxSHhTTEViNG9Bd3dtRTR5SlNWRFNFbUhzbEFKRHZCVStneEZHYXpLdlUySE1TSUV4S3hXR3RDUVlFbUpoekU2SG9qLzM1NGJUbWh6ZVJnZThkZXg4SHJZbG44RzVmaU04dGpwNDlsYkJXMXREY3RUQjU3WXpwWWVIQzFJUm45RUlRNVNDcUQ0akVYWEZVRmlHOW9NeExoM0dManpTNHFFWXpGQ2lyS3k1UE9INGtEd2o1RGdONEQ1VUR1ZDNXMkJmc3hsTmVadmgyVmdBVjJVK082Z0pCbkFrSTVxcERQQ2luSWNkSnVUQVBMd1ByUDBId1hwSkxreWRleURxb2dGYVpoSDhZUHlvNUhEbEY4RzVmVE1hbmx0S1FueE9LV0JqcUpQZEg4ZlJHc1dEcWdBT0hrNGVDa3k5c21ISVRVSGMrSnNRYy9YRk1LWWthUmxGY0VyUXJ1VHd1VDF3YmMyRGJmbHFOTDcxSVZ6N0Q4RG5xQ1VGS080UnE1S0J5b1QvYkNTREhUNnpCZEdqTG9KMTFIbUl1WDRjekJtWlZBa21MYk1JVGpuYW5CeVY5UTY4dmZFUWVxWjN3TGl6czlRdzU0NERxSDNtR2RoZVh3ZGZJNDFHL2pNaGtXU2c3cWVjRUp2Qml3YTRVVU42eE1JNjZXTEVUQmlEdUZ1dlo1b0lmaXkwS1RsbUxsaVBoZS91QU9LanlBZzNZRFhobStldnh1QmtDdzZtWHdpbFFhaGdZVXJwY3BFUURoS2lHS2FFTEVTTkhZM1lhOGNoZHVvNE5hOElmbnkwR1RsdWYvb3pQUFhoYmlBdFRndVEvbmZTaTZpeW8zelpUQ1M4dnhhRlU2WlRNblFrS1dvWmFZSmxRRi9FL2VmTmlCMDFDb2JVZVBXMkNFNGZ0Qms1bE56NXdMQnNFUWpCcUdyRWJlUDc0Y1hmWElCdGlvS0UrS0ZJZUhBMllpZFBwSGZSVVU4VXdla0lVZmduRFpWVjFiWElxNlNYa1VJMzB4ZkdRdWhneGM3OEN2VzB4M3Vmb0V2dGwwajQvWXdJTWM0QW5EUTUzRWNxY0tqek1OUy9zZ1M5VW1LQStpWk5sWVRDNDRYUEtuWUdFSFBWU1BVemdqTURKMHdPVVVMbE0rL0R3VTVkZ2NJR05MeTFRZzFQeU0wQUdraVFRRWp1aGJWWU1IMndkbjBLOFA2bVE1aTdkQ2VlWDdrSFgrMHQxME1qYUF1Y2tNMWgvL3dybEY0NkhVcVRoNGFsVEVENTREWTFvdHUzYnlNdnB4K0czL1lQVkFoQkxFWk41OWljdUgzcTJYaGk1akQxL3JiRUo3dEtNZXJQcXdDSGs3YXR6SThRTklCN2RrbkF1b2NuSUN1UkhoUHg2ZVlpT0Z3ZURPMmZnY1FZVFlKRjBEcTBtaHlWZHp5TTJpZm13WXdjYW8vbWlTaVoybmFoQ3QzcmRxSE1iTUhjdDdkZ1IzNGxMRkZtM0RBeUI5ZGZsS09uYkR2VTIxeEl2dmx0dUJXS3BpZ2hCdldaVklNcUxOTmlRdEdyMXpCRXdXWDNyOERIbitTVFBBYjA2cE9HcjUrZWhIaTYxeEcwRHNjbGg0K2ovMUR1Q1BnS3lrZ0pxZzdORE5YaEl6RktZRHEvTnpwOThCNE1LYkY2K0tuRkEyOXN4bC8vc1FWSW9xM2paWGthblRBWUZIaUw2M0FQdmFKSHBnM0dxeVRGakxucmdJNHNFNzBrSEtuSDR6UE94UjNYRGRKemllQjQrRjZibyttYm5UaVlPZ1FvYUd4QkRGbnZjT0lJVWwrZGk4NGJWclViTVFSUHJOcEw2MVptVjRsNk8xNzUzWEI0RnYwU0s1KzZDdmRjZFpZYVhPZHdBV2FSS0x3US9sUEFSR1RHaWVHWWtzT3haUWVLejVuQU5rMGtnelQ5clVHQkIvWHdtZTNvdEcwMXpIMjY2ZUVhS21zZFdMK25ES3UybHFDaXhvNS8zdG4ySG9veTVFbUFOZ1E4UGlSU0twUXVuQXFMMys3UVVjeG5aODE0aDJrOEhBSWNBM1lYOXIxeURYcDBTdEJUUkhBOGhDV0hjK2RlSE00OUR4YjBDTEl2TkdLVXc5UzdCN0syTG9kaURlNlF3aW9iT28vN0d5REdJRHVyUy9jVUhIeDJraDdiZGxENnp3ZUdkZ1pvYUo0VmI4WFdaeWZES0tvakJJWFZOdHozZjFRLzhPTFJHODlCWmp0S3Q1OENXcWdWNTg3OUtNb2RTMkwwRENHR0xJL1IwTHpzQW1SdGIwa01nZFZzaEVKQ1FFWm5RalNpYUFpZUVvZ2swT0VtdFNsQXdpS2JOc2xyL3o2Y3gwVVJZcHdFV3ZSZThaaHBESlFsOU9ETzkxS1ZHSktTa0xueWRTZ2tRVmhRQ1BuRVFKUkRCRks0U2JHMmdOdXI1YzFIQ0FFdE5FWlBKMVNMZTMyU3FIVzQ5Yk1mSDBIa0tMcDRNdGxSUmxvRWp6SXZHcUYwUzBIbnFrMTZTQ3NSTXFKcmJFMlk5NjhkdVBMQmo2SDBmQlFQMHUwVnZMZWhBRjFuTFlZeThBa29BK1lqZWZyYjJMU3JUSTBMeFBaRDFmakRjMThBdlNtZFJGd1lGUlRVTjJIMjA1L2hsdm5yTVBIdVpUaFVVcWVuQnVZdi9nNWovN1FDeXJVazlPQW40YWFyRzRobFc0cHczOEt2b056NEp1MllwOURrOWNMaDlPQjNMMnlBTXVabEtHZk5nekw4V2N4KzhsUDlqbkRRS3ZrTzY2Qk0vbDhvWjdQOGw3eWtxcjZZYVc5aTdkWWphdnozNFl1ZHBjaVl0UVJLMzdsSUhQVUMyMkVCbFBHdjRLV1ZOTHpEUU1xNFlQbHVYUGZJR2o1dkFlNTVmTDBhdm5aYk1VYlJmWmMyVkFZOER1V3F2MlBKWndWcTNNbmdxTTFoVy9zcFNrWlBVZTJNNEY3MXdZMXFaTzFaQ1V2dllPTXpGT1YxRG5TY3VRaUlwanBxOHFCM1JoejJQSG1sSGd0c08xQ0ZzMmN2QVRwWWhIRzQvK3BjT0drM1BQYk9WbTJaUDVyaElnUnM5RFJLNjFGSUQ2UlRhak5SMVlrdnVUK0g1UENiU3V4UU5iM2dTQjN5Ri84SzNiTzBGZDd1c3hmalFIRTlFR3RCR3V0Ujl1Wk5hcmdmMHg1ZWd6Yyt6Z1BTNDJCa2ZoL2ZOeHJUNlA0V3NSNmdMUU16eDQ1c1R5MXZ3T1dETzJINWYvOUN1ekVFankzYWlydGYvVnFyUTR5Wjk3Qk1SdDRyRTRKMHM1K2JNd0svR2ROTFR4Mk05emNleEtTSDFyRHV2RS9hUlcxN05rSVRKVWlWSFZORzljQ2l1eTlSMC9wUlhFdGorNFkzS0RaNWo5bUVRVGxKdUdWa2Q5eitEQWVPaEVuWkJiSnRvc0tHTi84OEJqZGMrUDE5Rnc2cTVKRGQzR1VUWnBNWWtrRWdNUlM2cTBWSWZ1eis0eEtqTlVoTmprRTBDU09kaFhnTEh2cGdGeDVidWd0STY2QjFoSnM5SVNwSmRudGx4V0hXLzdEUkFtQVVXME1hMEJjZ0FjUVFsWWFsRGRRbE54M1o2Y3hMUjBJSE5sSXM0OFQyQ2F5V2pyNDkwNWlJSFVvMTZlRXg2djZQVUNSa2krTjlVZzVSWHdMbStTRkg4YUdLUnUwNkFIa2s1TjBQc3B4U0I1bVFPMWhOTXRtQXd6VWtDc3ZLT3YvMnp1VndTTDRoY05DVG12VEhEelFEWGtnbFpDcmdmZFYydFV6eTNNWExkdUhsMVNSd0FESnB6dzN2MVZHN2gyMjE1VkFOYm45eEk1OFZyUTFNRGppMS9PTEI4Zm4zQ25GUEFpbzU2cDU3SFY1N0ZjK0NiUW1aL1VTVUZmRjNUdGREVGhBaHBrQUdPeUpET2xkdGRFWUt5OWx4WmtxWmF6c25vVjhjNDF5NnppVVJ2cVMzVVM4alNFZTh4WWpKUFZQVjBhaUNvMTBjMDZuWkNiaVMwbUxXb0N4WVpNVDZJZEpGU0JHR0dJSWVXYzFFVWtrbVJLRXJmbDVLREthd1BFb1R5eWxFbE9LUzFFK0ZFZk1USDFwTnQ1b2RKZEtpcEFGZnYzQTFmTXR1d1VkekozQ0k2eXF1VHpLbVBhcUova0JNdkdjNTBDVlJrekkxRG96dGw0NU5MMDNCWFZlZXBZNTR0ZHpka3ZGdlQzNE9tMTg2NmtnVTBrdTVKSTBReVdxQ2tmYktwT3hFbkp0SWtzZzhqNENEcnFLNlVaWHFKd3FOSEE4dGhCbWRlQmJjaWpLZmtmYlVJL3JWU1NDa1U0UXJIV1RkeFI5aGQrRmNqbzZTdjErRGZ6eDhPWFkrUDRVamp5TkhFckt6eWhsdkR5REh3SnhrTEhueUtuVXhUMDFEdTZNTE8vU2RSOGJqL1hsWDRMN2ZYYWdsYkNXU1JVSklQbEljSVZLOUF3dHVPdzhiK1l4RmoxeU9lNjVnSjlYclJMU1lVQm9pT2I3ZFg0VzlCWlFVTWtMdFR2eDZVaTdPRmZJU1kwblVpUlQxVWtkWXpGaS9veGdOY3E2am1NUmZuYzhCU2JVQWx4RFFoNDhlR0l0aHZIL3VMVU54NDRpY295dmRMcHNUYjlPbUNZUWlLc3h2bUZOU3BIQ2dmVGQvSXQ1bHViOStaaEs2eTBxNVNHTEN4a1FsSlAySnd0QzBhU3ZjRldXOFBWUnFlS0RFSmlCbTBtZzlwRzJnam15OU16aG1zT21wU1pTR2xCZzZNZ2Rra1BVa2hONXBPbzJDb2M1cDhPRC9KamFRVTBUb1NTQlc5YnEwZk1DUjljZEovVEhueWx3MVRuQUQ5VDFkRHkyZWgxRkdhZ0ErK1BxUVdnOFZKT3Exd3pwcjV6cHVFajB2WmFNM1ZWNWp4L1pDRWwvSHUxOFZhcDBydzdQUmdRZHZQRWVMMERIajh0NjhsL0dTUGUydWwxYnMxaUowV05URlRmM1o3UGp0VDErRjNDN051L0Y3aXBwVERYQkZ6Y0o5RW0xa3NIK3hrZVdURzZVRkF1R0dlVkFPakdrMC90b1FpdC90NUNPdFBEZUd1S0haTXByOWxXWlVhS25Db1RWcHdrSHRhLy9OdkVnUU5SZUFkREhzM0NLNTlFUWhFMjB2cjg3WDdBV1cxMFQxMkZrM2hQMUlFVnRJNmlLM2tmQlZvaXAwYkpYdEJmNkJ3czhoZlduL0JPRGlzektRSW91RWNqL3ozbFBwb0NrU29GclV1WjdtZG9wVkpYSXpUR0p2eVNSUWNKRlBDQWJuaGgyOG54bUZRT3dOVTBaWC9hb05vZGRIQ2gyT3pLclJHU2E4UGVBTmZYRGd6cll3ald5a2FvQlI2NVJZZG1DR3ZrM0FENTkwcnI4K1BOL210MEdJRFdLdzZwMXZZcHB1c3BNdUFHYm1aL1J2ZmVBQWFxUmtxNlQzY2l4NC9BTktoMGtHWFVqWWljTGcvR0x2TWNsaDdwR3RYN1VmZmxoMTJoWkh5eUxFQ0ZNd3AxRm5EQ1ZLTFR0anlKeC9JZWZYaTVCejZ5SjB2MjBSWmowcnJpVUpJR0JuRjhoMlNoMUhLdGpSREJNWW1iZFpsUVRCVUVUZDZsNk9XQTkyOFVMYUVRWlBVUVhycmxjZ0NDWjRTc1dEaVNBY1JOazR2UUhpaEJKa1g1MFRCZlFxQ2lqK0R6VHlVN3dxdi9kRUl0VUdxQVhGVG1NelFLV0dIZVJDUGpWY0lVZDhkTklDMUVvN0lFVGpOME9raWF2b2dINzFNMGU0amdzTmxONFY3NktXRXNGLzBBaEZKVDJjS2txTVNqdXFKTjZQRVB2bGRJVEJrQ1JHVkxPNzZJZEM1OWF6dTBTMzJpSlFWVXNBVEF5dytEVUJpUkZQejJEZHZJbjRnbTd3Wnd1dURENGV2d0pyWHB5Q0JUT2F0MHY2eFBnTk1MckNjdVdvUWVsalJ5azBPb01ONWxNTmcybHdOL1ovdUlVaUU3ekZSK0RjRlR3Nzk3T0VkRkFZNldFSlhLdmgrYm5kRW5GQmp4UmMyQ3UxeFRHSzNraS9UUDJGTHlKVmpGZjlmZytaRWM3VjlJbGEwbTBSTVh1alZkZTcvV0N3anVyUGVyZWNJSkU5bUQ2UEc0M3ZyZEpESWdpRlc3WXB5bVlpb280ZHZmdEl2WHJlR3B3ajJ4ckV3RlNKNFVWeFhZREtJZXhPTjF6aVJnc3hTWndZdXRWSlNjSGUwS21Hd1RyNDJEdkRaZW0rNmsvMzYxYy9ZOGlnRGlQMmI3dTBwenJ0clZwdTdNRHY5bW92YjdVR3Vka2toN3d1cW5mK055R3ZWWHkydXh6VmFqd1RrSGk5a3FLUjBzNjc1dzFSbzRjQ2NZbXNmMHMzU2J3WUl6cWc3dW5YOUpDZk1jS29sWWxENk9wTDUwbWMxWXg3M3ZoR2l3aUFSSjM5bThVb0NwbWptS0RPcGpKV0V0RGRmZlRkN1dxNEgydS9sTmxYbmtqK05HYXZIZEZkaTJoSEdBeFdDMkpuVFNZMVpQK0UwRGdRUHBJakU5VjN6WWZIZHVKejgrRkcyeG1KWTlSamNQZGtkTzlDQ1NDMmc4V0lDbm9qRi81aEtRb3FHbW1qK3ZEUGpRZlJhOFk3MkZaUWcxdEQ5b1FNNnBhTWZ1bDBCbVJoejJwQ2VXa0Q1aTNacHNadHlDdkh3NHQ1bmlDdm1ES2VlYzJVcWZ4MmhtcnRwUHpYSFRSS3BRV0VxbkkwUTVFa1RRNlVqZzNlQzlFcUJHZjFFNFNDOS81ak5MQ0RYcDIwWkp3Vlh4eXBRODdVMTJFWStUeXUrOCtWeUpjOUZSa2RzR0xWUHFxSzRBMU1mNWxCcVoxZnJWMWt4dU11MlhoMCtkOHcvTGZ2cXN2MWFwN2xEWmh6M1VBa3k0cHhPME1saHhJZGhmUi9Qa09mNWFBL0tBanlkcHZ6OCs5UWVlOWNQZVFZSUw4VUVZUENNLzluQ0NUNGFGeTRlUDhmTGFFL0pCaUJ6MmhaM0tQUXlzSUVldkpRYUkvUUk0K1ZqNXFJT01hTTBJQ3VTZmpybkJIcWNyM3E5a2ZUbzhoSkJtUXZiV2ZaVUVBVTFlSzMwd2ZqL043YWlxMGYxdzN2aXVtVGNsVUNxQ05KTmpaMXBFY2p4cXFVdTlxT1hKNHZ1UFVZZHFHLzdPR0twb1pyOGRJTzRaSWNEMGViSlBhYWlUQVA3RS8xSXJPaUxiTXlJUVYxajh4RDQvS1creEw4Y0xoODhCMmdVWlluUnpueUExWWgvZGd0eSsxNmZEbEhqVHR3NHc1eDRMREUwemlUWTM5bCtDbGppZHVucFNrOFdBTlhHRGRRc0V2V0wvUzBaZnY1ckpBTk41VU5kQlg5ejZJeFdSd3d2UzJ3eWQ2U1BmcXorRm1wZG1Jb2ZQakw5Q0Y0ZXM1RmxBSnNPemxrYVYveTJsYXNmaTY4OHhJOE8rdDhkUTBsRkgrL2F5Um1qdXNEYkQ0Q2xQSSsyWGNoOTM5YmhERURNckh0cGFsNnltQVVsOUl6MHRzUmVaVncrRGNtNlRoWXhqenlLS2tZNzh1dllMWXQ1N0tPaDZCWEUzd3VMdzVubmc5ZlpST2xSZkJDa0FZRlRkaUY5TmZmUUlkcEUvU3c5b1lVOTJUR1FmdmdxNEpxckNRcFpLM2s1cEhkMFZIZCt0YzZQTGtxRDVVVkRZaUxqOFpkRS9ycW9UOE9IRi91YVBuZWluUEhmaFQydnhSbXBMSUxXazY2K0NnNzNTaEh5c0tIRVgvTDlYcG9CRDhWK0pxY3FQbnJ5NGovNDdUd0x6VzU5aC9Hd1I0RFlWVmZtZzQvWmR1RTNVajQ5ZTFJZmVrQlBTU0NNeDFORzNlaWR0NUxTSHZyTVNobWMzaHlDRng3Q2xIVWR3ekpJWE1kTXUwYm1reWhCQ21HS2JjbjB0OS9GZVlld2J1Z0lqaXpVUDNRNDNCdVA0VDB0NTdRUTc3SDFqZjN5VVoyL2lvWWM3TklncGJ2a0FoWlRNaUVkMGNwRHZjY2h2clg2SDdwQ011MkNFNUxPRDc5Q29VRHg4SFVOU2VJR0lKalNvNUFsRXorSlJyZis1aHFScVJET0Q0cGNLRVFwbDY5a1BiaW80Z2FSZjg5Z3RNYXJtMEZLTHZuTHZqbzlYVGFzQlJLbUJYZlkwb09QNFE1R2UrK2pzeFY4bVVwMVhSMUs3VUlGWDVlZWRYZDY3NjhHaFNOSG8rU2NUUFZyMitJNFBTRGMvMTNLUDdGTDNINHdqRkkvTlZNWkgreklpd3hCSzJTSEg1NGF1cFJmdjN0c0grMGxpb2xnZklpaHFIQi9yVms1a1VkUDcyd1hOaWZ4czB6TUhlVzcvYUk0TWVFTTY4QXBiKzRpYzdHUVNRK01BZkpmNzVUanprMmppczVBbUZNakVQR2lvWElYUGNPbE94RWVpdzdTWUxneVJXWmdaRHZNaGZ5dUQvZmpjTmRCcUo0eEUyb2YyV1JsaUNDZG9PUFhWTjk3d0ljNmpnTStiMXpFRE4rRExxVzdXd1ZNUVFuSkRsQzBmait4Nmo2L1lOd0h6cEFNc2lQMW9UZmpDSS9mNkY5MlgwajR1K2VndzdYWHdYck9YMzAyQWphRXA3S2F0ais5UW5xbjM0ZERadmZoUVhkRVh2ZFpDUy84QUFIOTRsOURjVkprME51RWluaHJiZkQ4ZFhYS0wzMFJsNFpWWWtCeU05aFNLdy9sUVpSTlI3SW5vY29XTTdwaStnSmx5RCtybHRnakcvZUlSWEJ5YUYyL211d0wxc0Q1NWRiNEdvOHdKWjJJMlgydllqLzAyeVlPZ1d2NmJRV1AwaHloTUsyWkMxcW4xMEkrNW8xMUZkUkpJcS9VS0hUM2ZLN0NTNFNwWlovRDhMYTVXTEVYbjBaWWlhTWdQVzhJVERFdGY4SzVKa0UrWUpnNTg0ODJONWJpYWJsbjhKK1lCMWJXSHZ2MTV6Ukgwa1AvQjV4dDEyalh2OFF0Q2s1L0hBWGw2UDZMOC9BOXVFeStBcnJXSEFUeVNMR3E1bm5vWStUWDE2eU0xVDcwUjNGa2doVFRocGlycHVJNkN1SHc1VGFpVDU0dXA2MkdjRXk2YWNMcjkwSjE4NTk4RFJXd1BiaVI3Q3RYdzhVMXJQTjZyWDJvclEySktYQU1tSXdraCs5RjVhK2JiY3A2SlNRd3crZmg5Sms2V28wdnJxWWVuQXRLMVBQcWlTeFFsYVZNT0VodjczaTVsSExzM3FZb3JKZ3lzMkN0ZThRV0M4YkNGTjJGMFJkT3V3blNReXZ2UGY3N1M2NEQreEgwNGFkY0g2OUJlN1NRcmozRmJJOTVCc2RSV1ViMWNFa3d5TjY3R1hvTUcwU29zZGZBbU5LMjZ2bVUwcU9VRFMrdFJLMlQ1YkIvczRtZUt2TDFORnZwRVRScElvNFRuNDdSZUR2ZmlHTHZLallvRGFRUUtHWlpWQmlZRHEzTDZ5WEQ0UXhpZEltdmdzc1EvckIzSzhycFUvNzdyVnNMYVJtM3ZKcU9MZnNoWHZYQWJoOUpmQWNxa2JUNm0zd2JOOEhyNmVSYWNUNzg3Q08vbmFSMnN2R1phTWFGajM3RWtTZk54cHhON2Y5Ri9HRm9sM0o0WWZQd3hHeWN6OE5xTlZ3TE4yQXBuMWI0Q3VUOTBqZGJKRG1YM0JTZDZFZEpZdEFJNC84a3dZVXUwWGJPUy9uRXNkRE5WZWlZRTd2REdPM05QV1FkM01NRnJyWEhWTmd5RXFCa3BZRVkzSThsTVFZOVM0dFh4TVVBNzB0QTAxcGsveTJYQ0FZTDN0QlpEdWdsODlTOTZEb0xqd1RlcXZyNGFsdWdLKzhCdDZTS3JqTHErQnRxb08zc1lHZFh3RnZZVFhjK1J6OVNnMThMbmE4UzN1aVZqZFJ0UmIxMENDRGdmZEtXOFFud055dEs2TEZIaHM3RXBiQmZhSG9QekxRSHZoUnlCRUtieU05bnJWZndsVmRpUG9IMzZKWVBSRHdZNEN4UEtMWWpKUVdIRDB5Z3BvSkUxcDB1UmFyUmpwUGZqVFFyUjdTNEZwNGN3b04vbWtlSWFLTVRKSkNkazIxK0taRWRpV0pJUjBySTFueWx5L2QxRWdxMEQ3bFdydzB5Vjk3anVRcjZsUHlGZ0xJdVVaNGJVTzM1TkhFZ3lRaTBXVzN2NUgyUTRjN3BzSXlpRkp4eUZDWU10djJXdzVPQktjRk9jTEJuVjhNNS80OE5LM2JocWJ0MzVJdzFMMWI4OW1JSld4a0VibnlnNEVkZUVoSCtqczNjRTVQRzV2Tm40TFFxZ1pmTjNmMnNhQTU2Qm9DOHowV2hFaENBQ0dDbTM5Rk5kYXF6ekdidThNMG9pc3M2YjBSTlg0NHpEMjZJdXFDMCt1cnQwOWJjclNBU1BXS0tvcDBCMXc3Q3VCWStRMWNtN2ZBWTJ1RTl6Q04xNHBxU2h1S2RpZEhMOFcrSmoxa0pFdjFwQ1A5NU5ISXBCRktQdjFqWGZzTWhVWVkveUY1K3ZQMmYvb2xnSjg2NG4zeFdkU01CbU1IR0ZPVFlPaWNBR044SWl4REJ5SDZtbEdxU2pQRUpNQndncE5TN1kwemh4emZBNm1CdDZJV1hnZkowV0FqVWFpekMwcmhrVit6OXRYQlIzZlFWMUxEY0xxQTVieW1mZUJwb0sxU1E5VmxhNks3U052RlJSVW03NllHRVlUR0lPMFB4V3FtR1dPQk1TNGFTbHlVWnF1a1VBV2tzWk5UU1lCT0ZQMWVNenM4R2FaT3RIRTZwY0tRUU9sbXBVcWtmU043aGM4OEFQOFBjWUY1QUtQK3FoMEFBQUFBU1VWT1JLNUNZSUk9IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMSJdLCJleHRlbnNpb25zIjpbImNyZWRCbG9iIiwiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsImxhcmdlQmxvYktleSIsIm1pblBpbkxlbmd0aCJdLCJhYWd1aWQiOiIzZTlkYjI4MDI1NmE0ZTE3YjA4ZTE5ZDc5ZTliZTE2NiIsIm9wdGlvbnMiOnsicmsiOnRydWUsImNsaWVudFBpbiI6dHJ1ZSwidXAiOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJub01jR2FQZXJtaXNzaW9uc1dpdGhDbGllbnRQaW4iOmZhbHNlLCJsYXJnZUJsb2JzIjp0cnVlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOmZhbHNlLCJhbHdheXNVdiI6ZmFsc2V9LCJtYXhNc2dTaXplIjoxMTUwLCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjM1LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjI1NiwidHJhbnNwb3J0cyI6WyJuZmMiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fV0sIm1heFNlcmlhbGl6ZWRMYXJnZUJsb2JBcnJheSI6MTAyNCwibWluUElOTGVuZ3RoIjo0LCJtYXhDcmVkQmxvYkxlbmd0aCI6MzIsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjozNX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTA5LTEyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiU0VDT1JB4oSiIElEIFYyIFBheSBFZGl0aW9uIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNTA5MTIwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblByb2ZpbGVzIjpbImNvbnN1bWVyIl0sImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDktMTIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MX1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNi0wMy0yMCJ9LHsiYWFndWlkIjoiYTdmYzNmODQtODZhMy00ZGE0LWEzZDctZWI2NDg1YTA2NmQ4IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiJhN2ZjM2Y4NC04NmEzLTRkYTQtYTNkNy1lYjY0ODVhMDY2ZDgiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiTkVPV0FWRSBCYWRnZW8gRklETzIgKENUQVAgMi4xKSJ9LCJkZXNjcmlwdGlvbiI6Ik5FT1dBVkUgQmFkZ2VvIEZJRE8yIChDVEFQIDIuMSkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzM2MTk5NzYsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfSx7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sImlzS2V5UmVzdHJpY3RlZCI6dHJ1ZSwiaXNGcmVzaFVzZXJWZXJpZmljYXRpb25SZXF1aXJlZCI6dHJ1ZSwibWF0Y2hlclByb3RlY3Rpb24iOlsic29mdHdhcmUiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDZERDQ0FobWdBd0lCQWdJVVJwUUxXUXJtR0RTTUdnL283eDd4LzdvVWlaVXdDZ1lJS29aSXpqMEVBd0l3UERFTE1Ba0dBMVVFQmhNQ1EwZ3hFREFPQmdOVkJBb01CMWRKVTJWTFpYa3hHekFaQmdOVkJBTU1FbE5sWVd4VFVTQkpUMVFnVWs5UFZDQkhRVEFlRncweU5EQTRNRGt4TVRFd01UZGFGdzAwT1RBNE1ETXhNVEV3TVRaYU1Eb3hDekFKQmdOVkJBWVRBa05JTVJBd0RnWURWUVFLREFkWFNWTmxTMlY1TVJrd0Z3WURWUVFEREJCVFpXRnNVMUVnU1U5VUlFbERRU0F4TUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFQjM0YkU5eVBmUVJjRW9JMFlGQjhlYzBDU0UwdWptR2VDUkZkZEJCQlVKSis2M1pydVZ1b3J3UGNvcGQxTlZRWkhmVFZoM2RWNEpwN1Y3bVNySDZodnFPQitqQ0I5ekFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VBTUI4R0ExVWRJd1FZTUJhQUZNVTdIMHludVNiUi9iU0ZLVDkwZGNuVGxzeUpNRTBHQ0NzR0FRVUZCd0VCQkVFd1B6QTlCZ2dyQmdFRkJRY3dBb1l4YUhSMGNEb3ZMM0IxWW14cFl5NTNhWE5sYTJWNUxtTnZiUzlqY25RdmMyVmhiSE54YVc5MGNtOXZkR2RoTG1ObGNqQkNCZ05WSFI4RU96QTVNRGVnTmFBemhqRm9kSFJ3T2k4dmNIVmliR2xqTG5kcGMyVnJaWGt1WTI5dEwyTnliQzl6WldGc2MzRnBiM1J5YjI5MFoyRXVZM0pzTUIwR0ExVWREZ1FXQkJTb01hT0s5bGxaeU1Ma3N3WjhPWHgxOHh6RjdEQU9CZ05WSFE4QkFmOEVCQU1DQVlZd0NnWUlLb1pJemowRUF3SURTUUF3UmdJaEFMc0I2ekJiVVZYdXlqMG4yRE13SGQ4RngxbXpQMHBSM245U0h4UDJhZlM4QWlFQXp6YXdieXpZL29pOGgxQjE0bjlocUIzbnpCZVRuazZqSDVUeFk2ZVNTaWs9IiwiTUlJQjNqQ0NBWVdnQXdJQkFnSVVLeVVER3JoUlFiVTNybWxsK3JlMXRZYlJzOTR3Q2dZSUtvWkl6ajBFQXdJd1BERUxNQWtHQTFVRUJoTUNRMGd4RURBT0JnTlZCQW9NQjFkSlUyVkxaWGt4R3pBWkJnTlZCQU1NRWxObFlXeFRVU0JKVDFRZ1VrOVBWQ0JIUVRBZ0Z3MHlOREE0TURreE1UQTBNVFJhR0E4eU1EWTBNRGN6TURFeE1EUXhNMW93UERFTE1Ba0dBMVVFQmhNQ1EwZ3hFREFPQmdOVkJBb01CMWRKVTJWTFpYa3hHekFaQmdOVkJBTU1FbE5sWVd4VFVTQkpUMVFnVWs5UFZDQkhRVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCRnlZNk9ORGx1aG5qMzgzTVJ3NUpmd2dNa0pyblcwK0l0bE9UaDQybkRMdGZaa3J6UkRGaDlLRkRhT0YrMjFaMm05S1NOcXIxTUtrcWpPaVJ6MnM0TmlqWXpCaE1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0h3WURWUjBqQkJnd0ZvQVV4VHNmVEtlNUp0SDl0SVVwUDNSMXlkT1d6SWt3SFFZRFZSME9CQllFRk1VN0gweW51U2JSL2JTRktUOTBkY25UbHN5Sk1BNEdBMVVkRHdFQi93UUVBd0lCaGpBS0JnZ3Foa2pPUFFRREFnTkhBREJFQWlCUkpESDQwaXk4YTdMTmdaZkxVZHV3OGJMRHprVDlpMG9JdlZqZVZlTGtVZ0lnVzVyM0I4NHg2dDhjb0xDSkxvRkxpcFo3NW4rTiszbTk5ekZMZFJsdklkTT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZ0NBSUFBQUQ4R08yakFBQUNxVWxFUVZSSXgyUDgvLzgvQXkwQkV3T053YWdGcEZsdzhjS0Zpckl5UjN0N1MxT3owS0RnQmZQbS8vejVrM2l6dm4zOWxwK1RhMnRsdFdUUklvVG9meGhZdFhLbGxwcTZzcndDQWlrb1JJVkh2SDM3OWo5eDROU3BVMEF0UUkxVzVoWndRYWdQenA4N1YxMVppWEF2SXhqOVp6aDU0a1JOWlJXUlB2ajk2eGNET00wek1US2lCOUc4dVhQLy9mc0hORlJBU0xDK3NYSG03Tmx1YnU0UW0zYnQzTGx1N1ZwaUxHQ0VtY3VJYWNHWlU2ZkI0Y1dRWDFBUUd4L243T0l5YWVvVWJWMGRpSXZhbWx1ZVBYdEdVU1QvK2czMkhTT0Rob1lHUklTRmhhV3BwWVdWbFJVbytPSGpoNmI2Qm9vc2dIdnF6NTgvY0RsOWZmM003Q3dJZTgrZTNhdFhycVFnbWVJb2tES3pzL1gxOUVHeS94azZPem9mUDNwRVdVYkRzQVlZUkMzdGJSd2NIRUQyaC9mdjYycHFDUmVPakNUbVpFMHRyWnk4WEFqNzhLRkR5NVl1SmQ1MFZBc1ljZXBLVFU4M05qV0JxT251N0h4dy93RStPLzdqc2dDMzE1bVptUnVibTluWjJZRnF2bnorMGxCZmh6T2cvcU83bFFtL0IrRUFtSHdMaW9vZ0NvNGNPcnhrMFdJaVBVRWdrcEZCVW5LeW1aazVoTjNUMVhYM3poMWlZb0tKY0RUQkE0cUZ1Ym10bFl1YkM4aisrdlZyVFZVMXFIUWh6UWVNQkh5aHJLeGNXRndNVVhuNjFLbjVjK2RTdjhKSlNFeTB0ckdHc0NmMDk5KzZkUXN1eGNMQ0NySDdQNUlyU1lnRGVLRlMzOVRFeDhzSFpILy85cjJ1R2hGUU42NWZoMlZQTm9xcVRDVWxwZUt5VW1neGZQcE1TV0VSTUFNdVg3YXN2N2NYSXFpbHJZWHdGcnhlZy9xT3VHWlNkRXpNM3QxN0RoMDZDUFQwcGswYk4yM2NDSTlGWUtaSno4aEU5OEhmZjM4aEREWTJkaUw5MGRIZHBhdXJpeGF3ckN5c3JlM3R1bnE2aUxUWDBOQUFUb0lzVHg0L3RuZHdpSXlPQXRZRXhGakF6YzN0NCtzTEpMOTkvUW9zRTBWRlJlM3M3UnRibW9HVkZVcWNqVFlkaDc4RkFJaEJMbE5kN2p1MUFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsiY3JlZEJsb2IiLCJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwibGFyZ2VCbG9iS2V5IiwibWluUGluTGVuZ3RoIiwidXZtIl0sImFhZ3VpZCI6ImE3ZmMzZjg0ODZhMzRkYTRhM2Q3ZWI2NDg1YTA2NmQ4Iiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6dHJ1ZSwidXAiOmZhbHNlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibGFyZ2VCbG9icyI6dHJ1ZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjp0cnVlLCJhbHdheXNVdiI6ZmFsc2V9LCJtYXhNc2dTaXplIjoxMjAwLCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjE2LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjE2LCJ0cmFuc3BvcnRzIjpbIm5mYyJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5IjoxMDI0LCJtaW5QSU5MZW5ndGgiOjQsImZpcm13YXJlVmVyc2lvbiI6MzM2MTk5NzYsIm1heENyZWRCbG9iTGVuZ3RoIjoyNTYsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjozMn19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTExLTA0IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMzNjE5OTc2LCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ik5lb3dhdmUgQmFkZ2VvIEZJRE8yIChDVEFQMi4xKSIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjUxMTA0MDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMTEtMDQiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzM2MTk5NzZ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMTEtMjEifSx7ImFhZ3VpZCI6IjFmOGU0M2RmLTcxZmYtZTExZC1iZWEzLWM0ZWU3MDAzYjIzMiIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiMWY4ZTQzZGYtNzFmZi1lMTFkLWJlYTMtYzRlZTcwMDNiMjMyIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlRoZXRpcyBQcm8gRklETzIgS2V5In0sImRlc2NyaXB0aW9uIjoiVGhldGlzIFBybyBGSURPMiBLZXkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MjU2LCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX0seyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3IiwiZWQyNTUxOV9lZGRzYV9zaGE1MTJfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo2LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo2LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDVXpDQ0FmbWdBd0lCQWdJSkFPczl5alpqU09NSE1Bb0dDQ3FHU000OUJBTUNNSUdFTVFzd0NRWURWUVFHRXdKVlV6RWZNQjBHQTFVRUNnd1dVbUY2ZW04Z1ZHVmphQ0JEYjNKd2IzSmhkR2x2YmpFck1Da0dBMVVFQ3d3aVVtRjZlbThnVkdWamFDQkRiM0p3YjNKaGRHbHZiaUJHYVdSdklGTmxjblpsY2pFbk1DVUdBMVVFQXd3ZVZHaGxkR2x6SUZCeWJ5QlRaWEpwWlhNZ1JrbEVUeUJTYjI5MElFTkJNQ0FYRFRJMU1EY3dNakF5TURFMU5Wb1lEekl3TmpVd05qSXlNREl3TVRVMVdqQ0JoREVMTUFrR0ExVUVCaE1DVlZNeEh6QWRCZ05WQkFvTUZsSmhlbnB2SUZSbFkyZ2dRMjl5Y0c5eVlYUnBiMjR4S3pBcEJnTlZCQXNNSWxKaGVucHZJRlJsWTJnZ1EyOXljRzl5WVhScGIyNGdSbWxrYnlCVFpYSjJaWEl4SnpBbEJnTlZCQU1NSGxSb1pYUnBjeUJRY204Z1UyVnlhV1Z6SUVaSlJFOGdVbTl2ZENCRFFUQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJJV2FwMUdQaHRMa3VvKzNBaHcvbEFYUUgzaExlZ0EzNkZtaWdBTllEV0RGd0R1Y2tlTlQ5MkhZYXhPV25TelRGQWlTVC9BZTM2cWZRQWVBb0NRK2VKR2pVREJPTUIwR0ExVWREZ1FXQkJTSzZuZ1V2YStJZ1o3bU5GdE5TWGZQNHQxdkp6QWZCZ05WSFNNRUdEQVdnQlNLNm5nVXZhK0lnWjdtTkZ0TlNYZlA0dDF2SnpBTUJnTlZIUk1FQlRBREFRSC9NQW9HQ0NxR1NNNDlCQU1DQTBnQU1FVUNJQUtsVStIVXVicGF0TXFyUmJSdTRkQTZFREl1V083NFhTbnFVMld3aG45aUFpRUF3dWw3TlIyVXpmeVJYRFkzN25lVzN1MG8yeGttdmVuV2FXVWF2L2dLZ1dFPSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFNZ0FBQURJQ0FNQUFBQ2FobDZzQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUF5SnBWRmgwV0UxTU9tTnZiUzVoWkc5aVpTNTRiWEFBQUFBQUFEdy9lSEJoWTJ0bGRDQmlaV2RwYmowaTc3dS9JaUJwWkQwaVZ6Vk5NRTF3UTJWb2FVaDZjbVZUZWs1VVkzcHJZemxrSWo4K0lEeDRPbmh0Y0cxbGRHRWdlRzFzYm5NNmVEMGlZV1J2WW1VNmJuTTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlrRmtiMkpsSUZoTlVDQkRiM0psSURVdU15MWpNREV4SURZMkxqRTBOVFkyTVN3Z01qQXhNaTh3TWk4d05pMHhORG8xTmpveU55QWdJQ0FnSUNBZ0lqNGdQSEprWmpwU1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJajRnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJZ2VHMXNibk02ZUcxd1BTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZJaUI0Yld4dWN6cDRiWEJOVFQwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOTRZWEF2TVM0d0wyMXRMeUlnZUcxc2JuTTZjM1JTWldZOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXpWSGx3WlM5U1pYTnZkWEpqWlZKbFppTWlJSGh0Y0RwRGNtVmhkRzl5Vkc5dmJEMGlRV1J2WW1VZ1VHaHZkRzl6YUc5d0lFTlROaUFvVjJsdVpHOTNjeWtpSUhodGNFMU5Pa2x1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2TkVVM1JqY3dOVFV5UmpBM01URkdNVGcxTUVWRE5UWTVORUpDT0RoRlF6Z2lJSGh0Y0UxTk9rUnZZM1Z0Wlc1MFNVUTlJbmh0Y0M1a2FXUTZORVUzUmpjd05UWXlSakEzTVRGR01UZzFNRVZETlRZNU5FSkNPRGhGUXpnaVBpQThlRzF3VFUwNlJHVnlhWFpsWkVaeWIyMGdjM1JTWldZNmFXNXpkR0Z1WTJWSlJEMGllRzF3TG1scFpEbzBSVGRHTnpBMU16SkdNRGN4TVVZeE9EVXdSVU0xTmprMFFrSTRPRVZET0NJZ2MzUlNaV1k2Wkc5amRXMWxiblJKUkQwaWVHMXdMbVJwWkRvMFJUZEdOekExTkRKR01EY3hNVVl4T0RVd1JVTTFOamswUWtJNE9FVkRPQ0l2UGlBOEwzSmtaanBFWlhOamNtbHdkR2x2Ymo0Z1BDOXlaR1k2VWtSR1BpQThMM2c2ZUcxd2JXVjBZVDRnUEQ5NGNHRmphMlYwSUdWdVpEMGljaUkvUG9lYStkY0FBQUdBVUV4VVJmNzU2LzcrOFRtMTFqNjE0MFN6MmtLejRteXh6cXp4L1pEVTdrT3g2VVMyOC83MC9VaXQ1Ly8rOTlYOS8rdi8vL2ovLzRxMzAzUEw3VHEyNkVpdDJEREM2di81LzErbXV6MjE2ZjcwOGp1MDhzWDYvNnZZN2YvKy9pdTg0MHpFOC9ULy96K3o2Rm0xMXoyczRUVzI2djN0K2pxNDRlTCsvL1grN2xhczFwcmorbzNHM2pPNjZUUzY0Vm1ueVRxNjZ2SC8vek96NG1pNzVFYXU4bGEzNDBpb3l6VzI4dmovK0VteDRQLzU5di84LzhqWjh5bSs5dXJxK2I3by9LbkgxOUh0L2V2Kzh1LzQ2SGErMTVhd3RqRzY4a0s1NnptMTdqdTg4Zlh6L1Z1eHlrRzc0UFQvK1VpenpVcXo2L1h6OFB2Ly8vLy8rMEN5N3YzdTZEeTA3Vk9yNVRtdThWTEIyZm41OXUzdzNQbjQvbEcyOWo2eStPdjEvdlg2L3VEei9jVGs2dnY4K2orOStrcTM0RFcxK2ZELzkrdnI1aStzNERteTdqYTUrc1hUNE5uazdlLzUvLy84K1gzai9QdjgvK1Q4OUVpODdQVDU5aCsxNzgveTdPMzM4MUNmdmZ2LytqaXg1aTJ4OE8vNitYU2x3amV1ek9UeDdUeTA2UC8vL3g2bmVWRUFBREh6U1VSQlZIamExTjJKVzlyWTJnQndsb0JzSVZGaVpERWFGb25JRm1STldyZFNBVVVRRUpkQml3WDBxcTJVNmt3RnE0Vi8vWHRQVU52UldyVjFPdk9kNTVuYjNyWUNQM0tXOXowNTUwVFdlK1pTS05BMDNsNWhhWnF1a0hHWmpMTnBORVoyUXE5dmttVDFsQ1FMTndYOWE0WjVydmVWL1dNUXZTaCtQZ1dJWmxrOTkwVS9RVE9mUHhVSzVPZi9OeENhSmtteUo0cTlWVkZjcWhER0Q5SEFza2RqSkdoUmtPMnZpSFR2SHlyL0hHUkxoSXV5T3hkZDluaVdIUnFPRm5GOGNvRVcvOTlBQklGbFNWUzljS0hHR2pVTnhiakJXYmVtUGhpck1wbGNMbGFZbS9ML0FkS1NJT0tiMGVWY1Zta0k3MW50bTZOZjhMWFYvMCtRZHB1bUdhWllGUFNrVGJPWnNIY09Ndlc5bmJwaTg0T3hNakhSYnFPL3V5b002aHIrOHhDTG5oeGRqbzVyVHpLTDUzdjFqUHR5ZVhSTFAvRXAvdjhHUWhDMFJTYkg5L25kS2NlbDhrVHI4N21WaVlUS1BhN3dqRlphKzJ5aHQ4b1VWLzlmUVBRV1hQYUs1RWN2b3RtVXlua044WTk1Qmw4c3NRRHBiVzFCemZ2UFE5Z3F1eUlJTFdKcTg2QzdyWFdlK0h6US9lWVU3Z05kMk9tWTRuaXlTbFlyRExMOHh5SGtNUmxmYXhaZXFERjNLcTlWM1VBT2RUcERWRDNLdzk4WGVvemx2MSsxb1BzbENHNTBXdUgzK2JhMzgwNlRLWkhBTUtWNU8yeXRkeTZucHdqMkdJS3VIdk9maFZ5UERwYm1aNDZZdlZCbkFaTFBhN1hYa0hENHNKNVNlQWJmODFDN3FyMnQvenhFSnRQUDJJWU9Va3BsMXUwUEdiWU5ockdYTDJQaGNLbnNjdGtCTnZpQzRLRjIxZnBENG44WnN0YWNHWXlldUpVcGdHUzJEZXNBV1VTUVZNYlYwZHJ6RjY5MytXcjFVKzgvQnhGRkNCSkpGQ0N5UkJ4ZnM1eHl0aVNsTXFXdHBiRFdyblM3elZDNjM1U1hmMDdiSUJDV3RVU3hRb3R5V1kzNSs3ZnhyME5va2VmanVNVkN6bnZWMUVud1hzaWZMOWNIWjVvU1JLUkZHVUNZL3dha1VPaFhFcWJaRkZzRmtyQnBQRlEyRzNTbFMxcXQ5anVRUTUwcU4yVGpJYXhzRjBpU3B2K0RFRVpjTFpDN21rRFVBYTNqWG9qT3Fjb0Z2TWNNclQ5dEEwVDhXeHo4YjBMaWNhaFdkTHN0bHduNkNseVB5R1YyZkd4c3pHZXlBOFJ1TnQrR1VKR2dLNWdhTXZKdHlFK0tmUWp6MzRLczZVVnVORUJoMmV6WTJQRDlrRVF3R0FwTmE0aTJYQzZ2VlpZWXB2YTFkdjJiRUJ5SFZpc1djYmxzVmVTbUlnZmRUTkRuRy9ZSDNTcVYxbDVPcDI5REdwZjIrdm5lT0RabHc1c1dnVHhHa05wL0NRSVZSWnhWbjVVNkFCbjIzUS9CR2gxci9lZzhteHlWTndYSTcvOGJFSGpqWnBOa1dSWitVeU5zeWVqR2RxbGtMWGU3U3BWS3BiUjMwN0ZZOTFaUktyVWxxelh0YmdSbWo2SC9aWHBmODk1ZnluNS9HV0lCQ004eXphM2VYNE9CU0xqMFNJanBNbmt4TDE2bDhGZVg1SmNTK1YrRzBQVEtQb29EZWJnZTJkUkdXSHRWN1BhdXlXUnl1VzVEd3VHMHlXVFdHZ3lHeUxTTm95dE12Mjc5c3VRNUlDeFBrT1R1WUdBejI0WGhQUHc0U042NTdrbHk0aElhZ2tCU3UzcTUycjhHV2UwVmk1OCtjY2FoOVU3R0ZXdzRsWGFWM1Y0cVFUTUhCMVNrMnhBVTJKdE0ydkRPZGljYkhUSnk2SlBYcnEvSnZ3elphck83bzRISTRVRW02R3c4RmxMUzZTNGpJeHBpbGVsZkNVbnliMEo0M21MQmU2UExvYVB6dmJycGN0UHRkcHRNWldqbE1aZXBxMG9rYmtQYzdvUldXMXFFb3MxSEk3a1AvOXVDbDVFdUN2TkxIZGV2UXdpaGFYazNlSlk5M3p2YU1HY1ZqNGFjYXlPSjZPYmwvMVpiNk5QWHRuNDNCSHFvSWdRWFRWcXZyMVRKeVVtTHBjb05SRXFIWmJNU0NyVGpXd1BnUThWZzQwZ1lUQ2ZoZFZHc1EvOSt5SVJlYkpFTHI5WXMxZm5rOWtIOVp5SHIwOFpqbVV5R0lNeHZoYUN3dmRuRWk0WFBuOW1XMkJSSXpwajBPTk1aa3huR1FIdTUvRlNJMHdOZEYxd1RRUkFoUHlrVy93WElNUW1RSnNsNTFWRnR2Zk96RUpVam9DRkkvUGREbUg1TkpoY1dWbFlLdEg3Q05oV2xsSmw2eUlTaUVtMnA5RlNJUXBGVlRCbVBhWXVGSm5sK2N2SzNRMWIyOS9kUFJWby90ZXlJanJ0Q21aK0h1TFBSV1FRUmZ5OEVxZ0NVUWtFdW4zejFtZVhuSXlybnljSDRRVjF5MkszV3AwTDgvbUdmTW1EYnBhVlhqY2QvTzBRR1hSZkp2aCtNTmxUZFRHZmM5Yk9RWWNWWVJ1bFJ2eEYvTndUSGU1Q0FGRVFMMUFYQ3FJNkdVZVJlMG1wVlVsdFBwN3RQTENFZmZBVUppSVNOcEdWTjBJdS9IU0pNQ0NMaFRmNHl4T1hxUTd4Y1ZSRFdhUDF2Z3hTTGFFSU9tcnllNWpXZWJDZ014UURwQlRETVpoUW5QckVjV2hNVWhtVXk5aWtqYTJuK0N4QTlMYjY0Y0NpQ3Z3cXhXaW1Ld3RMQmhtZVdGWnI2M3djQlJCR0g4WkRnYkk2RTNaUXVYOVVyU1dGeXU1OEs2ZG94S1BDanFZaU40NXZOM3c4eGVnTVJaMUNDcUo0QmNqQk9KWTF3VFg1ajBGZ1VaREtjc0gyNFBMRmF3MkdYenczQklvVHVhVWlsb04wKzFZR2lmcmNTdzdvbDNjRUg0eC95M3c0WldNNTJyRHZQQjBsMU5uU2VVZmtmL3hnRXd1dENzZGxzaWxlbHVJcmpxeXczNjhoYll5NlhPOXY5eGFKU0taVjJPM3dYcWthRGlrelpCR0gxRTg5dlFUaTZFbWRaVWZ6SElFMTg5WC80WjZQNkN1SitWb2huYUdCcnJVWis1Qm5MczBOSWREZVpZVVNHUVl2RjJrVkxjNVVrak1sbHpPeHlwZTJxeEhOQXBJazdHQllwS2pKRTdMS0ZyYTNpVnJINHRGbXVKME9hYXd4SmpKNDVzSzRFVVQwanBBRVN4N3Rqc3NyVVRvdlBEa0hWQ1NIUU1CaUgwdFMvNFFaZ1JQZjcvVXE3d1dENGRZamQzdTJpZ1ZTbGJUUVNpZVVCN28yK0tYK0Y3bWJSOU9PRHlDZERCUHA0WHUzSnV2MWp6d3N4MmFHVjVCTlVORGxQMGdMK3F2M2NFR2ptVEg4dEpZeURVTWczWERKaFdxejdmRzRVdUd0L0ZXSzM5eUVRL2R2dHFaVDk1SExJU0c0SlJaVEFpU0tFcVA4WWhQZXFFL1hGeGVlR2RGTjlpREtyOXI3cGJRblBEc0Z4QmpWNGVGbkIwaFF0akhIS1FlbXNzWHBaaTJFcTk5MUo2cWREcElvbFRTT1ZJZDVKMTdIQUFEY0RNU2w3VEJZc3dqOEJFV0F3WVdhSEFnRFpPL3JISUlmWWN2S3Z3cEplSkt0a1FYaE9TSytBd25haENSZWtRdTV1TmhTcWxFNG5oYnhLdDkvWGZZYnlMY1M2NFRxSkpqbCtxY1d5SytUajg1TkhRNXFvWm9uSDczSU43SitGNkVMdVhHQ1VGU3NzKzVta0xjOVp0UURTWTNBWkRqbkk3TFFyazFKaWpZWktpZDVkZWZlMndWTkxQemxHMDYxMnFhUlNybEJLNVJqZ2VCemZzclFxencreDREWE9PSGlXN2tNYS94VEUzS203T25sUGt2dU00NEtsVW5udXFsV1V5K05vblluejZNaXN5dVd5V2I5dmNiR3NvankvRGtIaFB5cG9hTFRiM1FyZHp2bmVTVTd6bDF3dUNBVHhEMEJlRVRaMXRJRWdqVVpPMFlkNHFHZUhaRHU2K2tZcU4vSldMclBRendoaGp3VVlRV2lSWkJlTWF1cjh5SDZyM1A1Z1BoKzZGZXAySzdLTlJONisrUExpSWprZFNUZ3pybURLcnRVYUROZlRFM2QvOHJvLzFtcE52ckV4eGJTdFNqZmxzaDRhamhsR0dvMmJ6UDBMMVI2RzhOQmY2V25vUS9qWHllalJlZW1Sa0d3MmtkOU9qYjI4R0xUWmhwempwbURRL0NTSTJ6SFkwbHVlRVhKYWExVW1SR1pybnhzWWlhYXNHdzlka1ZqTUJJa3JwdXBtMHFGVWhCb1o1RGpPNkQxek5GS3hXTHFVU0R6Y0ZhTlhOWm15VkdDS1dCSnc1dXBXUmxHYThvQnU1NWNnTkZOai83cFlqcDRjMUI4TlNhZGRLc3FSTkJKR0kyZnpSaFBtMkZHbXBIbzBSTmx3WEhDRnRlZUR5T1VrZVh4TWtzWWtac3FjWTQySElEczdMcjliZ1ducnNmTk1JL0I2bDMyL2hjdmtud1pIS0tzMUUrdDNzbDhudXUvK3ZNc2xMWkRTaHNheFN5KzNCR0VqWGl6MlVOUktTdVhuSVRMNGFaWWtSMGV3VU9hOFFaa2ZDZG1vTDU3bnZQUHNteXEwV05rbll6SnltSTQ5QVpKU1htNHVqeGFXbmcwaXlJUkNnWWVlTjNLK2VKN0JjZy9kTmtBTEFueStkUG5ncEJIMXpvdFFLZVd5dFRWWmRkYXJwbFRtb09rYWdocjk5NzZJcXdVRjJwTURmM1pUYlNPS1RVUmhlcElEVXUyZkgwZmt6UzJTM3gwOWl5eWVMeTdtR2c5Q3duMUl5dWtjc25HMGZvdVJRVmtqaWRscFNwVUtoaDRMc1p2OWlrdjE0UE5CS3VJYVhpUUdvbVZyR3MwMTNEdlpZTDRxaVlTMnRMY1g4elhPQnVlWlNxWFNiREppQzhveCtkZkZDSlhxNUZXcVZFclprU1pZdTkrQlFBY05uYTlKbTllYWdtNXNlb3BkNnExYW1rMDl1ZzBFZ1JMK0N6bTdSYjdLcVQybFIwSW9MQzlCTHBPelJJdGhiaUFGZHRlbTlwaFM2RFlLUURyM1F0YjdFSjBFYVNSMzRhdTBOQzNpcjBPV21DMUNFN1h1N1pXMGlZUzBWT1p2NVRia0VzdUhkM2EwdWVUYlp0T2k1NGxtaytRSmdtL2hhL2lwOFNLUWdJSm1nRHFtcTdwMVp4bVVvZXREaTFSMXBWTEozRlUydkFSQk5pMldKbzBXcElyM3o5WS9ES2t3dGI5R0hJY0FTVHdHZ2xHR2JkMk9kblBBS0ZpRWlUZjhOY1NDeStMY2dKcEs1UE1xcDlLa3ZBOWlDUGNoV2dSSktSVVg4OFFiQmk3SnIwTkV3cGlrZ3BsMEdpMG1nODd4QVVqS2JzOVRnZVFvMFY1Ync0VTNKRUJJbGlVaG54R0tMUC8yZ3BLdXlOV1AydTlPWHFUVDZEYUZ5UldLV1VzbFhjWkVlWTBjTDBCV3gwZ1RJRTl2N0RmYkJTdkViQ0RuZmpRRXhoa0Q1Wm5pdUxZZ3d4bnkrQVppd1ZkSmdodk5BeVFsclZyNU1jUUZrTTVoMnVRSWpISjhjVTMreXhCODFlZ0lob0orREVOTExVMm1oeUFiUjJiTU1mcEduTEFVMnl1a0tJaFFIZVJRVm91cmpNak0wQi9HcVI5Q1hyN1VycSt2cTB6REx4ZGpwWTNEY29xYXRoSDRIM0w0VXFDMGZ4NnlpbzlHTTY3TW95RjdSMTFzeU1qcWFVdTcvZW16Tkg4dlFmQ3RIdE9xaVBUQUI2Y1RHbnZxUWNqWWVVeFhPaXc3RXdFdk1TbVRQUm1DcWdMYWE4dkVGL2EvRlBRVHhxbnBhUFRrSk9UeitVd29lTGhOOFBuUXdqLzRXNlhCa044KzJuTmxsNzJmbW12UU9GdlZsaWlUc1N4dHNWamsrd1RCaXBCZlFMaml6ZGxMMndhbDhyQmNzdnY5RHdXUmljalk4T3didVF6RmZBVlJMbjg2WkdWL2Y2RTNvYmNOZVJ3TlJTaDRCVW44QUpJM0dNN3JMc1dRYlYrdzNFQ09lWUNzeVZhdUlETDVIN2FoQTUzQllGZWlPUk8vNGlGSW5ob2U5clorQWxJc29nQk5aSXBiOFgyU1hCS25ITkZJd3huS3VGQTdoeEh4TmtTYXlaSEN2RExxbXBXQndWbUMzT3BQV1pCTlFTQy9rSVgvYlJXM3BQL1BOTVZpa1p4UFJ2MHV0Q3NEaFNJUFFiS1hFTFFOMEJhNUhBMkpUeGdRdjBKV1ZraFduSm4yZUJJTlZjcjBJRVJYN3BqcUtlZjBySkVqaXhZSlVtRGtjc2dBVG91MVZhWVBFY1V0NWcweDRBZ0ZIdzFScUJLNUpDMzhCS1MvcmE1b3NZZ0ZnaGhOTkJvSjU4bEpwLy9oMGEzTHYwTktKWi9mclZwZkQ0Y1hGLzJLblBvZDNYcERraXZvRGdUYUtpMFNuQkV5cTVhZXB0c3JQRjhRb1R1YjJKL05ZU1V0UmFsVTRmRERxNGZXMTFPS1dSSWxWaWk5ZWpwRXNJZ3RnbFBucEJITTNIMEVwRDUybWRYUVN4WDAzYTlJRU9qN2VPUGdheVAzaHY0SzBWdDQ0d2VzVktJU2o0VUVzeGZWSjBQUTE4Z3c3WGF4cWRkWE9VMU8yVkdtN0U1N1AvLzhEc1JxTmJ1VktwVjJaeStUeVMxcmRvVTFBVTAva3poMHVXMFdFaG52MmRuUUFIZU1laXdjaUhyOUtyUmN3dXRvcUxRR3crTGlnN2V2cytHd3RZNU42V20wSlBRSjAwSFhrR2FUbmlEaGdpaVVxVlRIbnZveEJGTnByZlZNQ05QWWlEV1pzRXF5bndyWGtNR1I1ZVV6N3p6L0ZZS3Z5dVc3eHMxRzQxRVFSVGJ2ckI5c0x2OFVwRmlNeDRzV1drOW9MclA5Y0Z0YXRnKy84L3V2R2RjRFlEM3RWS25jWThQRFkzblB4UzdhWVNpUG8rMThGb3RRNURtak9wdFZKYWgxeUxFK1FjQWtrSjhZa2QrWHlTd1d5QXkwdW9PeDRZY2dTbVhhdWhOZTlIdEpZVFgrNnY3MVhQZERCRnEvcTc1VXVCK0FRQXlXQndoSW5PcjVieUZDVTlqbEJwZFJyNU9JT3J4RzFySW1XRDZSMEdyMjVRaGlvL0tsek5qWVl5RGhuVVgveFV3Umo4ZFhIdzhwU0hlam9jVkRvcTZKS3ZwMXlYN2RScjZXYTBqSG5NK2JYV05qL3MyUkZ6U3RGeVluSjFla05kWDZIb1ROSG14czdMQzA3WFNpdlljVnFGN3gvUld5MEtySlpJSitOdXIzWnk4ZmdxQzdEVllvbElZV1B5NU0wRStHdEF0dnVJdW9JdnNRcEd2T2ErM0I0V0YvYm9xWW9DZG9nTEI5eUNxaE9YTTB4b1lQdFpDQzVBSWFRdFEzOFZjSVVzQUJBc0hQZ1YraGVDd2tvZGJyRno3cW53THBMMUV1Y01hcEtIU1N5cHRpK2k0RVUzVVBZekY3ZEhtUTc5RVdrWWJBcm8ydUo4c1pOV2NubVpBclkrcWtUb0xCTERWa0pLbzRWQTgwc0xVRkMxMzlPSFMybkh0NGtodWFvSGxuSnhNYUpjajQvZHN5ZmdSSjVqQmQ1MEVJMXJYR1loMHFhU1JhWWgrQ2hxSUN5WTJlZVZTWmcxQW0xVFduVEtFVEtxRGh5TlZyQ0hUdUJjNDJIWDAwSkJhNklGWUtOZWJ4WVR5YWxvU3FVVEFPNUxMSzdUQmFWS1pVdXEvNjNXNzNOb1NpZkVkN0crdURMNWhYOHNrVkFwM2lKT0o0bXpBT25FV3lyc1hGUkNUcjl2czdoeHQxZTJQS2FKbUE3aGN2OXNRV3VTK1RyKzRHSHB4Q3RWb3hERXZzN2UxdFhFNU42UGRYbmd6NUJCZEVvUXcvQ0VsUXZzWHpqZW5SeW94Y1BybkEza0Rlam94UXl0amlZcjZoVUdUOVpwM1ZXc0xVb3pSdDBjdjdrQldabk5rZG9CNExxVzgwa2hNVFQ0RzBXRllRNUF1YzdlQzh2a0ZSMXhYcm1vQ3FXRHFkTHFPcElaWFdYZ3FIODQzb3NwZUxRNlFyaUR4L1RJcHJRcE9ZWGNiR0ZoZGpZWFFYb2xSR3BhTnFKQ0lmYkd0ckJQRnhRUzRUb0R1Z1YvNTRweGlQcmp2VHcyTnVMSkZRbW1LeG0wN2tCcEkyUVZBYTN0RTVjd09jMEQvMTRtcVBIRXJiN29Vd0RNczJBVUpvem8rT2RoNEZ3UnJMUmlPQ05BSENWbGViYTgzM2c4dVk3MitRbEYzVm9CSkRBMHQ2Z2lONEdCSnB2WjR1VFA2MWVSbFoxeDZPRGZzZmdwVHNtSWF6UEI1U1lYb1Y2SHkzaklGd1BYYjBmVWgvYmszYVpaSDIrVERIeUR4UmxVN1NhWk9rcGJsMWpQYUlKdXpBTmFOdGxXYTd1WnhPUTVDandxZ1RTTURwR1J3L3JhRUZHanlMNDdPQm5DTG9LcGZNeWtRaVlmRDVia05LSmZTZTJwSnVJNFdwalV2aXQ4dWZ2bDBJOVQxSXExaXNGV2ZQZE5iSFFVNENVeHhSK0FwaGpvbkJNODl0U05sc2h5RWVvN3k3NHBJRkx5SUl3KzdYbXR4VU5Pdk9uSFFlQXptYjFUOGVJc0lGNDRrcW1jeUZOeFlYRzlodENHcndWMytTUmx2Q3h2eFJMNkduOVdJQnFsVWJjbklJMG9lVXJxTzluYkFXUHJoQ29nQUU3WlJSTmhvcXhRZE90T2g3clZaMVVpNlA2NkZBcHhMTWg4Tmh0QVRCNy84ZXhDUnRpelVyNEozWSs0NjB1dHRHV2doeU9qT3l1YjZ4ZVA0d1pQaHkwN2lMVnZMY1FJalI2R1VtMW9jb3NHOGdUcVdxb2NLd1VWR3c5RnFGMXVTa3ZBME5SVy9iVkxpZDJ3OUM2bDNGOHNqODR5RWlPZ1NQNE9haUVVUEo1N3NMU2FmUnFqMDBQcnJRbmVYRHpSRWJoem9zR25vN3NpaVR4Ym5Sd01uNXk1ZDdWZ05rWk5LUG1rM21xMi9BckZSbURoeFRiNkREMnQrZm5MVFFhTTFSWVRTSktYWGhjQ250RzhPdzJ4QzdIYnArQ1JKeU4yQk0vYlpLWFIvSmR5L2tFd0ZoSzJZNE9jZzBuQTlBMHRFcEd3SHh1WVZ1OFgzSTI4SGxnOFUvNzBKY0puTXFwVlM2WWxIMWV3QjhYSmljaEM2WWJncFZicWd4ZnZBdzVDQ0xuU1dmQUtGN2hTby9zT3hKdUZ4b0lMd05LWmZOVUQxVXltRDZZTHlqSGFmbVpzanFLOGlaS2kxeEJxTEM1c0JRbEVKTFk5QXRVYVY5WjZlUC9oclo2SFRtenZRc2VRcEJjaFVjRE9Mc2VxTXBFd3llR1IvV3VBMkJBTVdOSmlrT1U3NVFOdXFZSldzRnBuZHpQTXpYVzNIM1FLWWVoblRxQnlmT1J1VDlNZG1TUWROZ2xxQ2g2SnRyUTQ0b3BkTWRsdStEbEVxcFRzQTdFNTk4RlMvbzRlcFBUamJwNDlscHB5bXp1RGo4QTRpOURCREtNd3F4OHlNaFlwdGtQdzlSQm9QUG4waVlUSGNoYUNoVW1tT3hqSlB5QkRRVGVycTJFbyt2RkZkRnVzcHpjMzVmTjU4M0pDZ01wVExwblozK2pZTitZb3crb0RhdjJ6bFFhSXlNTkVsRFcxWldpdERnUjBjZ014dk81L3ZIajl5Q3VFeHByYmJVOGZtRFdjUFFQbm0xZ0pmcEwrRDlBUVFTdk4xTnlyRCtZMGpHMVJtbkhOUEdpUWs5Z3NTTGVocWF5WXVMa0MrbE5heWpqdmNlaUhaako2VlFqK0tNV0NWNDJySy9qd05rUG9seVRHMCtleTlFQnhCM0t1SDVJa0Y2NG9NUWhxbTErVm1QMW1wMXd3Qm1OdCtCbEZCc1lrclh6MU1HOWNVc0QvMVZnVDArcmNubFd5dzNPeDJOWmN3cUN0MldnZ1p1dmxuZy9QVjJ0bGJyMU5hRENzY3NYemdtU1VFc1ZOdHRDMTJaUlllSmFmT3A3bTJJVnV0eW9Wc2FlV2NtR0FyYTE5K3k2QnpJUGdSTmt2eGdRQVRJSFBVZzVMeGVOZ1M4SENIdDZMeUMyQWJQdGwweHRHYzZRZDBMeVd1MXdhQmllWEFYYWpoclFSQm9LeTFPczZsSWFiV3B6ZzhnZmdTWml6OFNVaWdJVGFQYUUzNzUwcERBTUduNS9WMklNaDA3cjNmVzFmTUY2SDE0Tk9jdFFoQnY5RklIZFhTYkpvc3B1dGFkblIxdElwZERBZU8zQ3d6eStXeFdwZFVaS05STUxOTHhTVUo4Y29XZkgvUmt4M3g1dzNjZzBNbUhBUkwwaDF5ZC9HdUM1OUZDT0xTc0drVkZQNGFNZUF3UFFZN09yWjRwb3RvR1NMVWxvcm5aeWJjajBYcGFwMVUxTUlYQ2ZCL0U0SFJublZxZGsxb2VsYTlaeUdvRlVwUjRmSjhnNWlDL0QvMEFvdldIL0s2RDdkY2ZZYng2REVRVVpmZ0hiY0twZ2dvaUJZWTNDelg2a0IycjMrL3h4R0xwQThlZ252NFNaMVpwdW9iTDVhZlZnZno1b2pQeDBGb1ZTTENVVXFLR05RYTRxa1UyT2NsV0p5WXNsbytReUswYjBCd0Jxcm9xeUNyOS9xNzI2NUwxYXg4MWdNdUxUQVZ0ZHlhL1BXanMrNURVRHlBN2ZvVUVTZVZtTFhRY0lIcTZoOHZraFJtdjg3eWVlQml5Y3dWUlJwTG9vTmJKU1pLY21CQUFNZ0FRbmYwQmlOa3c5V2lJWFA3QmlWN3IrNUIwR3NQYzduRFlsUFh5cDdYZUZsTTdMUWdDdzBNNGZsRE9YTThjUFhoRlRLWVVSRTVFcFJpUG8rUjRaZVdVSkx3ZVNvZFd5ZHZSYlZlMEVNUmt2d3R4VHFFbDFTMTBRZzdKTUE5QWhqWWdUSDBRWW1QYnhkN1dWcTlXRUZZWmNqUVpWWlc3ajRjRU80M3BpM2xtYTBXQzdPOS9paE5vUDZENVFjZ1FneURpd3hCR0hoKzNPMVBvRXFQTzl6YkU1MHNrZkQ2N0lhY3B4TkczMlZ0NUZXOU9rTnltUW5HU2NNTGZQQUJKcDZXdnA2czdPSWtFa2thT2g5QVpYL25Jb1lCK0xvQnU4Wm5NQ0dLL21oaThVN1dtNDIxMEp3cEIrcmRBN29mSVUzWjA0L1ZlaUJaQnBtM1Z3aVE2R3JxdzhLb3BIby9tTGhWWktwRUpkUjhKNmRRaHdoa1pSWXNCQUVJUTRnUmtKdE51MzBNUWJhVFFMcENQZ0tDZDZwMlVVMXEraWdLVTJ4Q0locXhXcTBueGdwekVKMnRpaFkzamYyeUpzK3Ura0Y4QmtNTkhYaEg3UnYxQVJ5VWlBMHVWdUZ5TzVyMVovUVQ5TGdzU0YrVFJhQ056L3gxdlEvTHJLM0dTSmFXYnRtZ0IxQThoenBPSEljU2I5aXQ1c1VLVFgrUjRiOGE3bmdvQ0JFTWY4MUdRa3U1ZzI5NUlPS2FYbGs3bGFBTC9tQVFJbDgwK0t3U2RlOW1IdUc4ZzF5L2t6aDRlMnZPWFUzb1lBdkVpWkpNTGxtWjF6ck85czZOVUtoVGg4RU9RcTNCRm1pTHEycFdZaHVCV1pXdVdIZy9Camw0WWlJYUNJWk9wVSs2VVN2MWpsTzdjcmpiRTQyaEVmQnpFZkQ4azYwN3JkSWJOZ1FxQ29JbUtMODNtekVVa0xFSGNUNGNrWC9CYk1wbFFreUQwd0xUQ0JGMXp0MnkvRDZKOUxLVFhrK09kRzRqeTdoVnhsM1NxeXpsaVVtNFIwSWJIbGMvVmx0ZVRPZ3lIdFFtMzIyQjRDUEx0bjZOVU9UZEVRRDRHK1l6UUZGbnl6VHZNaVdXaGMwYVNrcjM3SGNoNlBDN2RzWCtvc2FNRnNxa2ZRVUlRRnVabStVbGNrQ0NmMmVyTWhhZXIrMm1JWTE2Y0VDQ2YyUUlJeSs5R0xnRVNOTjBQaVR3U3drRDNlMkpYM2VsK3J5R21vTm1KZWZYNHBCd2Qvb25qelNVdTJlaVlNb1p3T0Z4NnhJQm83OWNZWlgramhkV2F6UTBTYjZwb2pZcFlZSG5CQWlsL1E0RU9yQ3pmQTVtT3g2L0hrUjlPMERFTUxoOHYzUTl4QVNReTFWK0pnQ0RGaW0wRVN4MEVmeDR5TWwrdFRrNzJJUlpoeW9HeTVOQVBJTzM0OVRqeTQ1bEdFY2ZIUzg1N0lhV1NieXc1ajh0a01zaTRhYmxjMEE4cC9od093VDlIaHlhTWpUMEVnY0d1aXpweHRQVWJIUWlUb0tnaEk0dUN4MnFMcG1WeTI3UWpkNW4xKzF4cHFibmZYV1F6QkVGanJRY1F1Q3ppanlIeWNkMzlFRjNKTit3bFVGVzRnc3lNS0liL1BIazZCTHVHUkFLenZBU3BvdGN6SWtqd2ZraGlxSWdnOUlNUW9Wamw1enlsMk9JaWVpczBMUDI5akExVG5yL1lUKzBXSStCaVJRN2ZvTWRETlVKQkV4ckh0SS9mOG5yOXhadzR0ZHRETnBGR3g3VEw1RHhmbVZsdW9HWE9mbjhhZWtLLy8ycDduM1NIM0E3ZFEwQmpKRkFzVUpBV0dINWRySGtIZ2hkSmZ2U0hrTVQwUi9ZMFh1MURaQU1PdEh3b1pQcFppTXFaTjB3UE1KWnJTR3RHblhXNVVqK0FjSStERkpzRllqYVFUOThIOGZuWHZRUlpxMVY2UXBPdXlQYzFGSlZ3TnB6OU43TS9mc3ZyRFVTbGMrWTByU1dBQ0FnaVZyd05TRmFVQUNtRncyNzMxVjF4cVpjb2w5UGx3Q2dubmVkYTdLLy8rZ0ZFS1BDMkgwQ0MvdldwWTNJTElNMG1MY3EvVEVmUmxFbm5seURSNUdybCtvcUk0aFQyQTBnNk1OdS9JZzlEdGdxa1VaMDRqTVhjcXU5QlV0bkEvSDVoaTJuMWlrV2FKTjRtbkZwMEMrNEhJY21QSWVadXVaUUx2Q1VJWGcveFBBeXh6R3hPcWN4Q01nejliNmsvWlhzZFBDTEl4VHpCMW5CY2doUjZQMmpzVUxWSVRoMjVGMkxLZXJoUEFFRXJ1eXJWM1RsTUswRktQd3RKbVR1Nnh0bGNIeUpIc1lMUm9aU3krdTlEMUJ6QnRoOERZWmhpZ1JoMGFOTnAxTlBmaFNoUEx2aFRkRzYwV0dNcUZWc1NjdFp1eW41MTZHZjM4VWZ1M0VRS3FZN3B4S00yRWlSa1dERElDUUszZkNKTm5wY1B5K1dyYVhUb3NWMW9MV0xYcEIxRXArNDFVZDR1cld5NEgxSmoyZ1hDZXovRTJSaGt5UzJHRVZ2UTRDdXpJeEJ6QThUKzA1Qk8zZFJKb2R1cDF4QUxwejVSS3JMM1FPeHo3R01oaGEwaVB4dElvQmRScWI3VFJxZzVFa0dZcmRNZUF3MFRUV2lXU3o4UFNYVkR3UlFWMFJDRnBvQWVWQ1FJaExlUmRidmh2UStsNVJzb2s5RGF6Y0dReTJVK1VWRXYzaFRneXk0S3Q0OEkvazQrVWl6eTgvZERsTmhjUmJvaXRWcXZWZEg4TXNSc01nSEU0WDBZRW5TWlU4N0UrMk1KMG53WVVzVUZhTzBldXpSVkJzblBuWDBSYzYzcTU1NjR4UlFaZW1hb2d4eG93ZXpUbXZwWENLbzhLYTNLd1Jad09VMFhDaExFN2ZjbkVxWHk0cUpLNWZlWjRFc3FsWUt1WUVpVm9LWlBtYS9MM1grOE9vakVCV2drMUwwUTFaeitNMEJXR2FZbXprUTY2VitGcEZEL3BNcVJWeEFaUUZUM1FTREFGTDladVA5RENGeGNXWkVmRFdqdmdaaFNyeXZIeHlTenhkUzJ4SWxVNTJyclZ6OHFMOTJ0aWc5Qm5JMnN3cXJyS2dwRk9ZSzBoU2J2VlFYSHhneUdFZ3pLYUE2dEN3T2p0cFEyQlVPSjZMcW1pTmZRTGJlZXRNcnZSNDJkSkdWQ2tiQjU3b1c0WG9zOFFHbzFnT2hUM2VzOWJEOExVVFdVQURHN3Y0VTRnNzY3a0dBdzFLQWlBODFtN2FxL2VnZ0MyUnJPR3FmUjRmWFFCZDZCWkRxdld6ekh0NHBiN1hiVGtvbEJJMCtoT2VsK28zeDRRZktkWFhJTlRLR3p1dnlpQkdtM0Jad1lkUHFHQVJKT0wwcXptdVVTeXRuU1FiZWk0Wm0yeWVWdGxPcEttMTZMekkrcTFpZTVUQ0NOUS9kQ0RsNHpQUGU1VlZ3dHRvVzFPNUFueDFwVTRqYUVSNUJoQ1RMMkZlTHFRNHh5dklobVVSNkdGRWgrUlNiN1lpdHRySzl2NXI1Q3J0ODR2TjBZUUtmZFExY0prZXFtMjJ5WEduclphdTB2SlhncVpIaFkwWERtL1ZtaWlPTjZ2VmdVQkdQRXFTdHAzVzVUT1F6LzYzSkJzeS9abFZqamZMSHNlWDk2MzhsSTkwRDJiZU1iMit1NW5PN3dMaVEzQVBsaEgwTGZndGgvQWpLbWFCankvdkZyaUVXd09UcFhFRzM0VzhqaVluZjZDL05vQ0lSdE9LUXRuSmM2eVRzVEdkZWRTZVJ0eFFEYUQwMjNXRjdzRFdIcHRQbG13cTFzZi94aEZ0ZXY1L05oQU1FK0VHMzBjQU9HV1cwTzVFb2Q3YzBWUVYwN2dpamRtUXlsT2UwOUFjTGdjbG1CbTZMeUo5K0ZoTEVQYmFoYitnSkF4QStYendJeEpMNUNpcHFjN2dxQ3JzZ05KSlJ4VVFPRngwTjRYaEJXOWtueVdLMDQyZGo1ZWpUYlRmclFhUXdWMEdHZEpMc3Zpck1CRktKODNScituUUgwQVVpNVREVlVtR2NXUVhpZVlhcDhFanVSSU9rMEN1TlZxbGdNclZISWhNd0pOUWRoOTVNZ0t5UkphSEtwblozUWR5QW5EblRxcUVpeVBFM2JsbU8vQ2tsUkNSVTJiYnVHRklna3B2cytKSy9obUsxSFEwaXkyZVQ1WHJIOXYyWGwwZEhYVS8rdTM5anZ6M3JtUmNGU0lGZFdpa0pyRUszVVRKZnRkaFZLU1VwVzY5TWhUaFhXR0R6bTR6aStEMThOYjNOZzViSWhmdzFKSkk2TzBtWU1pOFVTNnJja0l6d0JJZ2dJc3RWT09vK09zbmNnd1l6Qzg0S3hDQVYySHlEa29Qa0dnamFBUHgzU3FUdXg3T1lnZVFPWnpXSGwxSGNnUi9ua2JweDVmSytGbGtXSVlnK2E4MXYxK1V1c2Nmdk4vWDc3ZXBKckNpUzVjb3JqUys4VGFIOTZ1WXRXWHY0VXhKVTVjRy9tWmhpU3RGamljYjJlUzJKS1U0WnFLRzhnaTlKeEdDVmRZRmErV2hUdk8yRHZYb2hjWnB6K2N4SEQ3a0xNNjhsNUJHbkRkOWlhaVFDazNGOUMrbE1RaUdxenVjMGxFZVdHQ0dKVVM1RDhWNGgwcm9kSzU1dzJDcmp3ZUFocUlUVGRLMElYL0NLbm9neTMzOXp0M2dsSHBsaHBkZ3c5YUVqamlEYk1aZXNoa3FpMFB3RUpCYk5uR3VoNGU3UkZFTVRXVk1UdkNtV29oTklkaTVWS0NnVUtROUU5anNqWktML1dyUHdFQkFiRlRSV1cveTRrK1psY0FjZ2tRQWFtbzRuVW9UWDlzeEMvTDNSeVpoT1lGa05iTERoVDhWSkJWeWg0QTNGZlF4clR4bDFCdVAvc3hydFRwcmkwNzFFVUs3WDI2RWorYjdlSCsxdUZkblpNMmIvNC9RSk43KzhYUmM1NzVza2Z4bzdTZHJUTjcrbmRyeUtMSlFiWlYvSUt6ZFFzVGJSb1lOam5TMUVVV2w2T0lIdDdHSVlwVTZuQUtEa2pXaGp4eVpEZVVvODBxcmVkdHlIWjdNN09vV0tPNENWSWsrYW0xQUE1LzJtSVczR3lQczlQeWlzVkVTRGNxQ2MvUE93ekE4VDlEU1NiU3FtTjZHTlZLaytBb0JzNE5OMWFrcjhxdnZ0NzBJaCtiYWgyOXNiRzFIOFJMYjErZjcvZDRvM2VRTUlLRUxOMHZQZVRKK2dhMGNpUVhweWNGQ3NrYThFSGtwUnU3R1VHSUpnRXdSUjdlN2tjZ21nSUFWcElwZlZreUZKcjhsV2JPZFRkZ1RSMmpsNk9qYnhkcU9qMUN3dnQza2R1S2tEVjkvWitBVEl3QVJBR1loNkw4UGFNU2trUUQzYlYyUGYyNFBjQXNYR0NnQmhQNkg0WmFWRlhyWGE2UXE2OGUvM3lTSFdKTlVLWnhVVjB0bEU2VFZHbHZaY3Z6WUUzTXpDQXJlajFGc3Z4bkdkOWUwT1g5dm45Q2tQRVhrNWIwOVpZTENhbEozL3Z2cVVib0xHWXo5Vk5KQXlxWU1pVjBZVzEyTnlFYkcxeWhlVW5KbWpiWmhiVG9wUUFmcnlNRmozN2ZLR016NmRjdjNneFlaSEpvSE41L1BhOWF3aFRPLzNNc2wvbXpsOENJT2R5L1IxaTlieGJrc3YzRjJpQVFGNjg3Z3pyckFCUlVvYkhRcHlxWUNZVEs0V2RRN042K0lnTExLL1gwNk5aeFcxSTBKUVpVM28wTTJpdS9za1E2UUxXYXZFVmN2S0xBOE5Td1p2bHgwcm9aTk5XNjU3ZHMyd2pXb0tGYVVHQVdYMXhFVDFaWEl4WlMzbVY4MnFqaGZsNk8rU2R2YmZ1aEFFdHkvRUZEZXNHZzl1OVBFcVFOQ04vSmNmRjFydzZxK2dmUzQxV0QwcVA5REpsWEtsRzlNSkkwdEpLQzRiNUNVZ0J4WVVMSHlKT2dBU0RmNE5ZN1o2QWwrZ0owSXVRbjhsalRqT3Q5QzNHRHJYNWh1clJrSXpCWU1nSDNSb2pjWXkyWWNydzF0SmNRT0ZXM0lJRWc1MklaNG9qNmFZY2Z4TGtaaEg5VnFGWE9EMzk5TkViMEI3dHBWTktKVlNYR0ZxdUtSMHNvbFFvQmdnOUhWOGdpSzFpNGJQM1RKRTUydHZZa0RZc1NVVUpIOFAwblVjVW9IdWc2Q1pvSngzTVloN0g0Qjh5Z3VEZnJBa3lPVGZsYVRoVGJtbldXbm9KYVlyZjU2YlVYZ0l0a2UxUEFmMEVwTmFyblpKVlluUmFoZnFrMjVEc1pYSlhQOUZlNENEWkxyQURTWVZyNzJpbjlIaElzR1BLVXRHaFdibWM0UG5qTlJUYnFRUG9NTTVia0dBb29wNUZDMHQvQm5KMWY2R0hIbHlHVDQ1T0c2eldRelFKbDA0cmxZZUgwdkhQL3JFeFNqUC9KaTRYVnZFL0ppZkp0NFBMaW1CbU1heExtMjZXb2R1NzVic0RKSHhRRjVyZjBRWDlpbHp5QlMyVHhRdXRLazJUTnMxbDFxWFZvck1PMFM0Q2xmVFRaVHQ4WVhOMEVaZnZzd1VZcHI4dVdINDBCQ0hRZjVPNE1hbXQxKzlDaHFuQUMvWUxqa3U5Q2N1TkRpbGNUNEZzQlAyWG13TzdFektadkRyVEVtbDI5a3lSRFRyRHR5SEtiSklUb2VMdDg2MmZnOXljVkNNbjV3Yzl1bzMwSVlVbEdyR1lkVWVyY3J2OVByVG5hUk9haWNXQ0hpTUFnK2piWkFBNzBXMGNIUjFCM3htOG1rTzlPMEJDMTcwUjNvRytDRHNiZk12em53VjAvSXVsUWt4Tm8yZkRHTUpXcS9TSUEzdW5mblR1Q3BwVWw5NzVnZ0JmMXNyUFhwRnZJTnpVOUliT21rYTEreHZJUmpmclNMNFYxeXpOWnFzbjZrbGlJSG5wM0tqdm5aL0hNcGxnNkQ3SW55L3J1cDN3VWZDQUdySVJ4RWVTV1pYSi94QmE4OGtJUVB4ZklmVlk3TWhsQ2lvM3A0d0FrVDhkOHZWeGtmMmhFZjRKem82cUUxb3RPaHByN3dpOWo5L3ZONFVOcnFENzBydkxvZ00yNkZZaC9tcGwxNnR1NUhXNjB1RWh1aytXUmd0czdrN1k2Y0lISFIvay9lcTVtVUt2dHJCUFFrd1g1NDFEWWJTcDBtMEk3K3lnZzBiczVUMjRJdVlFRlpqbFdORWk0TEsydERMMmllUElMWWlNTkdvTUFJa0FaTzhhWWdpN1hGbUZldTZ6S0czeExFeTJWMWh1aXRLV2REcmRZY2VWdVE4UzNyRFdNMzZGUjJPc0xpMFY5eGZldEdUeU9POE5oSzJMWTM1My9nWnlYbzhkakZOUmpZMlFJUGlUSWFKNHZlM25hdGRNdFNrSVJjNGJvQXdsZEZ3eHVxZUREcC9TbnBnN3Fhd3FvYkZ4eEJMRGJPSHlvcmpFencrT0JBS2VSRUlKa1FoUXZuTjg0ZnA2STVkYjlyNVlxa0RXdjlJVWw1WUlvM0hJWTlEcHJJY2RzMWFMcWhaQUR1dUhHOXVPa1VFT0Y5b0ZzZ3FmcXRodXQ1a25oQ2gzSUVzNHZvb1R0bVRFcWYwV290T2hyTWlaR1BFYWVYRnB0ZmcvWEZndDhKeFJNK1NKUW43bnVoZml1YnpjbkxLdGlDMkFmTEtJUytnZ3N1V29BWjF4bDA1cG5WZVFjdjFjbHovejJnaGMyQUpJNVdjZy9jVkQvUTM2NklyMGl0QkY0bStIZGpiMjlqd2V0S3JjQUJVdDZFL2tEYzZYTDVXNUlSdjNaVTFvV2xqMjg2cEZUOHlQRHFvOUNiTkxpaHZ2UWk1enlkRVp1aWliaEhLcWgraFpNQTY1UXVNSENVTTRiRDFVS21FSVJXMjl0TEd6N1JtY0o5ZlcxdVFzUVZScFVUcWZoS1ovR3RJcVZMYlErVmpjMVBqT0RTU3MxZnBEK2J3aC9QTFBiSFE1K2RjS090YUY1Y21leFVKd25FMHpuZWplQnhuL1lPUDBkQk9mWEZpWUxFTHpzcXdObm1VeUIrUDVSRGg4dU5GSlhVTjI2czUxR3pFanJNa1FoSHc2NUM0TW1ZckZpdmgrTUpDb0wwcFBOczNiN1ZlMzIxSXZYeDVneVNranU0VUdsS1pZVzFoWTJPZUp0M01YRndGSWpudyt0enNZREpiTEJzTzZKM0J4TVRlUGpoTkZoeWswbTFVV1loUCt3M2dlQ2pyU1NtczN1ZEVCTy9rdWhNYjJ5Tm5nK3lxRFA5OXg2OWNRWm9td3FmUG5HVkRrdFU1bjZncWloSEdoRVZEUGZWbHRvaFB2UkdaL2YrRWpTQWpPTmpVMGZnSWZ5ZTBPdWNxNjdlMXB6WlROeUhHZjBUTWFUaTFDVVN5d0JQdm0zVW5lZVF2aVRBMkgwSkhyc3p6WkZPVFBDa0VMVXkxaUR5VHE2UEN3eTU1SGI2dVZOcEtwNEdNa0xxT09JWnZOU0pEUUVVOU1RTVZIV3c4c1Mzcjkwc1RFKy9mdjNyMTcvOWQ3bHYxMENwVURuWUFHN1FJOVgrMFlLdUdRWTUxS25LUk1vU0E2akJVOWRDSWM3cmo4L3R6STRBczlMWW9ySzg4T0VjUWViN1Nwc2JIaFlNZXd2WDBEMGNIbHdScTV3UElvUjVBaWpSaElncDVCaDdhS1RyQlFlQ2dFRzBmcnhlVEh2RWdMQXVTRW4xaGlUcjNzaVVRU2VWWG5XMGphRkZKc0ptMzh4SXorT1NIOVIzWXdhSU8wcGZDR2U0MWxzOHBPTjRWNllxMVdwVlFtRXZsVU1MYTRHSElPRFJqQmdxTkdLWitjZkFXOUVnNC9WYW1neDI5VUtoWDBPcDgvZlpxZzRaZlBMWEdYR3hqS3FwemJqUVNtUkpzdGZKQUFvK2NmNysxQlJqamkvVmhyQ2haaDZ6UDcvQkNJcVQ3eHU4WVBKNWRLR0F0dklCUkFYTEhGVEVZVlBSdWNSMGU0SUFweW9JeXVLZlNmN0FQOVlPdjBGTm81U2RQVnp5ekpWTjRQcXFPWEorT0dCcHArQy9wQzE1RHpvKzZsUTJQamErZ01pUnIvZkJCMFdBdEVCNklGS1BqL1Z0bVpVZlh5NXZEWW1DK05IaWxtTW1XaExjZFFjcmlSajNnOGNGVUlkT0FubXVJVFZsZFAwWno5NmFvTVBYTlFlc1lFcmQ5ZnFKS0VjV29vbFRMa0k4N0xjVDkwYXFtU2ZhTlVLcFhSV2lhRmYvbGlyb0xPbkp1Y2pEUFArR3lGYTBqVElzQmdzZlhwMkRnNmZha1lIcjZHUUg2Ump1M3Q3ZTJnczlnQ3k4dXY1ejRTWkFFNlk0dkE5QW9zdTFMYjJoTFFrYjhDMnIxUGkvc3I1TXk3UVVjakJRMGlIL0VyL1A1UXFHTXY2YTRoV2NYbUxLR2ZnT0ErSHY5VWUwYUlYRjVrcnA0MkpKM2ZRZE9GZWU5SUZGUDRmYjdNVWN6YTM3aWlOVWoxREZRbjYrdERVeEIvdlZscVNkRU9YS0Q5bFRpRUZ3WFU2QWx1Zm1wb1UrSFVobmVzaXo2L202Sk1McE11dGJGUjJ0NXcyay9jaXV5STVpOENkUllGNk1KWlJ2OFBRdlJWd3FaWnptWDl2b09EK3ZqNUZVUjdEWEVhS0k5NmNIQnU1czFTQlVuNkVQaDJUMG4yemR1NTF4Y1g4TE9OUElLTStkeVVCMUt3dzBNSW1aMmw4ZFNCZTF3eDlaZVIvOGNnL1MzWDZBak9WbXRoQlczYmZqOTQ1c2o2aDBNSDR5WHAzckVDaXR0dExsdDNySkFobmgvNGc1Zlk1cEJtYW1yZ3VreDlHRUlIU0FUSHh0RE1RdWdBVFF0cHRUN0lDY09sY2hvNjN4T01XaDVKRHJ5Q3hvR09lRysxMEFGWmozODg3Wk1oS3dzV05GRHNUdVV1SVRYTmJKUjIvZzQ1UWsrZERxS0R5bk9lUUdEa1lscU5pc2Zob1JxTms1TnNjSGhZaWM1NmMzOExzV1l5b2N3QjVZRGV5amdKL2NKV3JiTDA3QkNvM05JVWFodkNhQWdqeGYxOWRGNmduajZlSHp3TGVLS1JjRmhyTjB1TGF0em9ISVFTUlZGT1pkQU4zV2t3VTlmVnQ5ZlgxdzM5WXl4Q29SQzBxeGc2MnlHRnNrMGx0TzEwYVR0dmQ5cFRKNDNvOHNqZ1BIdThCRWxVTWQ1L2xnNjg2ek0rL3VrYVV1eERtSTk4MFRJQmtRakxHUWNjVVlvS2EyOUIxaE1OcFNtSXpqNTFRVFM3NFZtSFAwRm4vS1pTOElkKy85SFI0bUt3UzFIWEVJamNTbmFuazRxb3B6aU9KeXRDRXkrdS9CTVFua2Q3cnB2U2VJMTJ1ZWtuVnNuOWhZVTRPdE9FZ3pGRkNSbHRxVi9zSmlXS0VJTmx1MEVMMFZpam9jcG1zMzBpV3JUcGhJK0x0dXhER0tLcjE2MlFRZG5oT3NHSWROS2dQRW52THQraW9aK0c5NE5mQldtbXQ4Zzg3OVAzL2c3UmkrVCsvcjUwcGduQkRYem9kUDhPeWNSYzVSU0tLaEdrdjVDcmZ6WlgvOFl2RkFoMlN4c2JzVDRFRzRaTVhSWFJESEFjd1lnU3BJb0dVOHV6UXg0cWY0MitIbGwyWkVNK2w4dTZFNFp2MnlDTkthcEdvNEdlb1luMUR4cVRqbm1SWnR6UUxKR3pWRUxuNCszczdJVERuc0RJNE9ndUx6MldBeTBULzk0SzB0OENRWWxITW5xWnpjUmlHK0h3OW5ZWTVVa0FnWmo0YjVCVUNpMmdRV2ZWcEZJNk5OTmdQWklnZ1NRYVB2bmF2dzZCR2xaNzg4S3JEamdpRGNXQklnUlJCbXJucmt5cUh5SGZYQkdVdTBEUldVc2JUbWNDZzlEZnNienNTTTVDY1BibXk2Zitnd2YrVFFna1VpMldNRUkrU0YxbXh5RnlRcEpNSnRQcEhKYWdTOHAvdlNMOWNyQ2gwNTNrQVpMTDVUWS9ETmlnYlJCRXRmYnZRMnJRSXRIUk9TVFBqUTZPUUhOeDVISVVxbExvSE5mUzF5c0NWWTFDbmU3dzhKamlNcmVzdmhoOE42UFhUMHpndUlBZVd0TkU5M0FLL3laRTZscEVlcWtLYVRwY0Y0M0Q0WUIyM2ppUmJ2RTZPMXJsRlVScS9FQUJ5TmptSnNyZmlSWTRBSUlMRUNrTC96cUVJL1lYWHEzaTBQT2pVQTlDeXQzMzcrWmV3NlZaenFFYjVObXJGcUlDQStVQjVldlg3OTR2dGNnMmlZSmhsdXl0eVNBQmE5WnFQZWJXcmIvZjMyc3Q3TWR4OUVUeWZxNWVSYkc2MFdpREtQSEQrR1pXY1EwWkh4cjZBQ0dralR1dW9tZGZGRWpKd2FMenh5SGxRaEgycjBIK1Q0QUJBSEcrWTJVeUFJNHlBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMV9QUkUiLCJGSURPXzJfMSJdLCJleHRlbnNpb25zIjpbImNyZWRCbG9iIiwiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsImxhcmdlQmxvYktleSIsIm1pblBpbkxlbmd0aCJdLCJhYWd1aWQiOiIxZjhlNDNkZjcxZmZlMTFkYmVhM2M0ZWU3MDAzYjIzMiIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImxhcmdlQmxvYnMiOnRydWUsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjp0cnVlLCJhbHdheXNVdiI6ZmFsc2V9LCJtYXhNc2dTaXplIjoyMDQ4LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjgsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6OTYsInRyYW5zcG9ydHMiOlsidXNiIiwibmZjIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN30seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTh9XSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5IjoyMDQ4LCJmb3JjZVBJTkNoYW5nZSI6ZmFsc2UsIm1pblBJTkxlbmd0aCI6NiwiZmlybXdhcmVWZXJzaW9uIjoyNTYsIm1heENyZWRCbG9iTGVuZ3RoIjozMiwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjYsImNlcnRpZmljYXRpb25zIjp7IkZJRE8iOjF9LCJyZW1haW5pbmdEaXNjb3ZlcmFibGVDcmVkZW50aWFscyI6MjAwfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI2LTA0LTAzIn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNi0wNC0wMyJ9LHsiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjNlMWI2NmNiYzg4NjA1YWRiYjM0ZTBhMmQ2Yjg2ZTg4NjJjNTY2MjciXSwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiM2UxYjY2Y2JjODg2MDVhZGJiMzRlMGEyZDZiODZlODg2MmM1NjYyNyJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiT0NUQVRDTyBFekZpbmdlcjIgVTJGIEFVVEhFTlRJQ0FUT1IifSwiZGVzY3JpcHRpb24iOiJPQ1RBVENPIEV6RmluZ2VyMiBVMkYgQVVUSEVOVElDQVRPUiIsImFsdGVybmF0aXZlRGVzY3JpcHRpb25zIjp7ImVuLVVTIjoiT0NUQVRDTyBFekZpbmdlcjIgVTJGIEFVVEhFTlRJQ0FUT1IgViAxLjAiLCJrby1LUiI6IuyYpe2DgOy9lCDsnbTsp4DtlZHqsbAyIFUyRiDsnbjspp3quLAgViAxLjAifSwiYXV0aGVudGljYXRvclZlcnNpb24iOjIsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6Mn1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlEdERDQ0FweWdBd0lCQWdJQkFUQU5CZ2txaGtpRzl3MEJBUXNGQURCeU1Rc3dDUVlEVlFRR0V3SkxVakVaTUJjR0ExVUVDZ3dRVDBOVVFWUkRUeUJEVHk0c0lFeFVSREVpTUNBR0ExVUVDd3daUVhWMGFHVnVkR2xqWVhSdmNpQkJkSFJsYzNSaGRHbHZiakVrTUNJR0ExVUVBd3diVDBOVVFWUkRUeUJTYjI5MElFTkJJRU5sY25ScFptbGpZWFJsTUI0WERUSXdNREl4TVRBME1qWXdNMW9YRFRJMk1ESXdPVEEwTWpZd00xb3djakVMTUFrR0ExVUVCaE1DUzFJeEdUQVhCZ05WQkFvTUVFOURWRUZVUTA4Z1EwOHVMQ0JNVkVReElqQWdCZ05WQkFzTUdVRjFkR2hsYm5ScFkyRjBiM0lnUVhSMFpYTjBZWFJwYjI0eEpEQWlCZ05WQkFNTUcwOURWRUZVUTA4Z1VtOXZkQ0JEUVNCRFpYSjBhV1pwWTJGMFpUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQUxaWWErOVlaTEpuNEZXY2tEblkvRVJvQ3VPM1RCdGEwVzNmOFI5U1k1ZDVzQmsyUWl1cGNpSS9sN2Z3UHJIM0ZEa2VWUFhlak1lK2tUMFZvSkplK045RU1XZXIwLzVQWElQOTducnVZY3IwRHhiaFpwZXNRRWVVOEJlSVV1bnBOTm5FSnBveG9KVHdvRG11ODNaS2s0bThnMC9QZnBKd0RobVBDQXFtNzlzRnRQOGc3bEM5cW1zNVRELzZQTnorMmFld0tYVFFBUjFvcGZobldEVXNJWnR1VWZFUmhsR3d4VTdYK2gzb1Eya1NHdzVob2xmS1NiMGczcHdHVGNUVk52ZlVNWEg3Q2FpVHEvSzdUL2pkQUNEKzlhTmp0Y2QzUHlRZXJBOFNhMk4yOHJ2a044WWZLb0RQZzVnQTM3OE9ORFYzQmhyaHRZOFVpRGtCY1RzWEFRRUNBd0VBQWFOVk1GTXdFZ1lEVlIwVEFRSC9CQWd3QmdFQi93SUJBREFkQmdOVkhRNEVGZ1FVT0NtSzMxMEd1M3E5RGZYL2J2ZHBzZjRHSThVd0N3WURWUjBQQkFRREFnSDJNQkVHQ1dDR1NBR0crRUlCQVFRRUF3SUFCekFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBbkRUY1puZUsvaDBRYjhzRnhnRlM4RmE1ZGpRblNKUVVNRlova3pPc1BoMURWRkRGNG5ERy9IbFUrZDdLYU5oYVE3WEx0N3hBamh6RXlUeUhhTUg3NmdIMDhyMzNOZFZaLzRzTWg5R0lMVTZiU21KWU90ZFZpM3pCM3A2OWJuWVpISlZxdkpLWDVsRXNTcG4vb3BLWWx2dG8ybjAvNHM0YXdKaCtxK0JreVZTUFRSTVg2TGZibjZJUnU0Y2JlUzBXMTN0c1E1U2JwQW85TkgyRkFUelZNTUtTR0VkaVFuZll5Z2RXdnVEQ0xVdFFGMXdHbUdTWXNFUEZUVjZQRzFWUDVIUzRmaHJCTmJ1cmkzOE5JVW9jZmtwZm1PSXkraEhaZ2Z2cFp6b3JrMUd2RjNQWlJJdEpuVFR2NVVqcTBxRDhybnI4MXF3dkdsVENKSUJ0RVVtTndRPT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBRWdBQUFCSUNBWUFBQUJWN2JOSEFBQVNWVWxFUVZSNDJ1MmJCMWhVNTlMSE1Xb1NyN2wrVnZhY3M0MW1UZFNyUm9OWUFDa0xpb29GU3hRN2dZaWlpS0pHRGRnVkxIUkVsbDJhcUlCaWplS05YZkZhWW1LTkhTbTdDeHBqOVB0aWpJVzU4NTV6RnBabEYxZEZZL3g0bjJlZXBTeTc1L3gyL2pQenpyeVltZFd1MmxXN2FsZnRxbDIxcTNhOXcydURXbHBmZnQyN1VleUYrS2FyVGg1dXR2VEkxY2FoQndyL1oxN3V6VVp6YzA4MldyQi9ZOE9sZWJQTTF0K3dNMVBtZi96L0F3cEFIVE5sVWZzR3lUZlRXc1NmKzFXMDZoaFlMTm9IMW5PM2c4V01MQkJPVGdkcVFoSXdvK0pCUERRU3hJUFdBdTBWODZTSlgrYWxCa3RQekRaTHZXSCsvc0xKaExyMTAxUlRtcVhkZkNCS09nK1M2Sk1nRFRzTWxvdHlqUUtTOWc4SGlldFNFTnVIZ05CK0lUUVptMXBRTitybmtXYWg4TUY3NXpuMTBvdm5DcktMbm9zenJvSDRGUUNKYmVlQ3FOTk1hT0c0N05sSG9jY2p6VEl2ZmZqK0FGSVdkbTIycmVTaFpIc1J2QzRncHQwME1QL2kyK2NmcmppNzhMM3hwSTgyYW1Ja3VYZEJINUI0OVRIb0ZIVWMrc1lmaHdHeGg2RlBXQzYwRHNvQ3hqdWhXa0NNMVdSbzBpLzZEelA1clc3dkJhQi9aR21PV3Y3N2wzSkFyZEt2UVBEQjIzRHN1aG9LVkNWUXJDNEJsWnA3dkYyc2dVT1hDbURlaGp6bzRxc0VpV3laUVVDMFpETFVYM0phOFY0QWFwaFY4cjBXVVB1dEJmRHZheHJRYUVwZWFEL2RLSWFKc2Z0QjdMU29DaUNHOW9FRzAzYWZaelBqMzMyNTUycDJpdmZlaFJaYlZLQThaeG9jclJIUEdoVjdDRVE5NWxjQjlQRzA3eTc4N1FHVmxKU01QSFdyNUhtcm5ScjRaTE1LemhlVXZCUWdZb2V2cWNGeVJGeGxpVmxPZ2Zvcnp5YityZUVVRlJVMXdCczhTVzR5N2tjTi9ITmpNV3k2V081QlpXaVAwWDVIK3orMFA5Q2VHd0owRWFHMm5KYWxBOGdmR2c5TytOMHNzYURMdTNPM1hSTHFNNjRLTWVXbTdOcENwblFUeUpSZm1yc29mQVd5cE9ubXNxUWdnYXNpa0hKSjhzZXZ4d2hja2dhWXV5VDNtQnAyd1A3bWJSVzVlVkNqUmYrZ0JvZGRoWER5bG1hSFdsMDZSS1ZTdFM0dUxtNkdJSnVXbHBaYXE5VjMzRFNhMGpCOC9uVmRRS25uMVVDUFNLaEk4MjZyb2FYeXlvSy9URjRDMTlTR2xDejVVOHBWTVZiZ0lvK21uTllkcFJ4ak5GU3ZOUStwN2l2K3BMc3VMcU03aHdEZDZWczA4aGo2ak9xeStDSFZkZmxkeWpaY1E5bXRWVk85b2xWTW4valN0b05TeW5wTnpJTHhJWHRoaFNMdlQrZlZ4Nk1FMFQvbG1xKy9ZR2VXbVZuWDBQdmZ2WHYzbjJwMVNhQktVL3JyN2lzYXNGNXlrSTFCak8wOGFPVy9DV0pPM0lZaWpXYlcyeXgxNnpEOUUvN0Jlb1p6VWdMbG5IQ0p0bC83bUxGYkNzS3U4MEhZS1JpRUhXYUFzUDBNWURwOTg1VHV0bGd0NkI2MmxlNFpNWjkyakI1Q3V5UjkzdHdwcFJYeHNCWjlsWlM1VTZLZ1daOFVvZk9VYmUxemoxMitrYm5uSEN5WEgvOWQ2cGFVWWU2VWNJWHFxM3pBK085NEpGNjRmNGRreVg3dkppdU9TU3hDRDM3TVZzZkVsUG1OelpJTFhUdHR2SDVDT0hzWE1JTWlvZVgwYkFqSXVRaW5iM0VTeGRpMjVNMXpDUTM5Z0pFcE9wdkxsREdVOHpvMTQ3QWFQNm1GSVA1aUxvaTd6Z1p4bDJBUWRaa0Z3bTRoWlhTUHNJdVVVL3dpQXNQTUliU2VxVytCa2duaGIraVk5c05vSVpQYkNCd1RBc3hkNVVmb29lbFBSTjRiZ2ZiYmVybkovSDB4RGNKUHA5WmRkMjFmM1hWWDl6UmNmQ1RaSy9OeTdwWkxHc2hYVllwTFpTalIwVytNeTZkZW1SK2F1eVM1Q2x6bHViUno3Q09odzNJUTkvb1d4T2pHWXJ0NWJNMUJJQWw3TEg2Q0huS0ljbDN2VG1UM0t1OTE1ODZkVHhET2ozaFRsd0dndnY1MU5NY1BTTkJuZlliQVB1NkJlUi8wTGpmbFpLWi9Sbk50ZkVFUWcvU0ROcjVlTVlsYmJ3UU83WnJjQlFQcWJzWTE5cW5JYVFXSUhSZHlsV3B2Qk5SckFRdEoxRE1VNkQ0eCtaU0wzSXZjQk41WUhiUVAwT3JpeFRYRXdDcFNxOVZ0TUxCMlJBQ2Q4R2Z0aTRydTJPRDNndXZYcjM5RW5nYzZBUlNmWTRPZTlBUGU3Q2hqRWhjNEo5b0tla1Fjb3o1ZldVYjFTYmlLWHUxTlBCVmowWHc5UUkveC9VYlVPQmlSVE40VXdheWhaUWxQeERKdWp5TnhYZ3dTVXFYMlFVZ09vU3drb1dQWTg5YURVbkozSGJnbzAyZzA0OUZXNDBYdFJydUU5aHVmbnF1clc1NmhsYUNkUnR1RWZ4K0tZRHdSbmgxK25ZbzJWdCtUZERNbFpSKzNrRzYzNERIVmVUbFllaVNmM0o5MzlSZWQxNzczUnVBSW5KVzJLS2NmaGU3UklPbTdFcVR1eTlrOURndkpaUWxDV295UUZvSFFlUTBFaHU4dnl5OVEzY09MK2RNSWdJZjRxVjdEQzgxQnIxaUpOendGell0TDBScEgvTGtUbWdmK2JneCtQeHUvWG9lUFI4bmY4T243SWRwK0loM2ljZnF3Y25QUE5mUUl5RmtrN1loZWJEa1RiTndTSURyajFQT0NRdFZtNHJVMW5wMG9GNlVYSlpQL0p2Ymdkc2RTanpDUXNwQldnTlN0QXBMSVpUVjR6LzhPQ292VUJxRVFieUNCRWVYUzhzd1pJeDVRemNyUHY5OFlnWFJIVVBQd3RVN3hubmdITFE5L0ZvRkFZL0J4RzRsWCtIaG5YdFNoMjNUTDJjOFpnUjlRdHF1ZjRYM0VXemdvUDY1Uk9LU0lvOXprVDhTZWtTRHhYQVBTZ2F0QU9vQ0gxRThMQ1FPMGJDVjBIcFVCbDY4VlZzb1VYSERWVEw1MzcxNmptdTJmUVIwU3QvQzE0eEhNci9oZUJmajkzS0tpWDRUNHUzcms5dzZoQitzSkhPSjNNb3cvTU0wbkFmV3ZwWUFoWW1kVDkvUkdOUUlISzFvL3lsMytXRFFrbXUydFNBYXZCY2tnaE9TNW1vTlU3azByZ0pIRnd1cVUvK2pDS2NRTG5rQUt0amZiYUlRNnBJTG1ZaE83MVZBUldXb3psTUJkYVV0MVd2WW4wM1JDT1NSelYwVldDNGZZVDE0djVzZ1V6Z0szcEVkQ0w5emdEVWRBWHBGY0UzeElSQVVrNGsya0lkVXZIS3dIcHNBUEYvSjVPS1ZaeGNYM1JHKzNJd3NmNEFmU253UEVma0EvaysrN2UyVTJ3T3gyaHNCaElUVkRTRjNEeTlDVElsLzV6UmpuVkFrQ3lxZTlFb0Q1TWc2RUkySVJVZ3lJaDBWVlFFSnYwa0lTZTBRQTJRcmNMbEE5UmUwdkpTNytGKzc4TFJIT09XMDJ4T3VSZHhpUnNaMldUT2NBRVRQM0JkekdQRVZJdzE4dDdyZ29GSlNuSEdqdkJLQkh4WE9RUm5LUVJNTjRiK0loRVc4U2VVU0I4OWRieXdxTFM5YjhsWEIwYXlZKzQ3RWVIYmpxd0JQYUpyZ0NFQnB0TVFOd1Ezd0xpOWVYR3dPUmJZUEFYZkdZOGtaQVl4TTVTS1BYc1Uxd1ppVHhKaTBrM3BzR1I0Qm9RRFJZRFV3dDhGLzJmYk4zcFhHQWNjZ2U0VHdoZ0NhRzVnSnRqYnY0WmhXQW1HWVRVV3BoUUxrbWhiN1V2Z29EV0RJMVZNRk9CcWp4UEtReDZ5c2dsVXRPRjFJVXlRNi9NMjVKcmQrZEtSRjhRQUwzcmRzcXNCdWZDWXdJTTVrNXhxSG1FOHRCRWRrSm5PV0ZqRU5DYzlPOHAzOUNjN3pSTy9TNFpLQW5LY3NoVVZwSUJpVVh4VXFPZGsvRTdLQU1lY2M2a1U1YjlsMTR3dlNPQW9iNUNoaktoNFBVZ29lRVhpVG9HVlZHNmp5VFhwQzBLaWdQSlRCZnBRTDlGUTlwb29LRE5BNGhqVjFmU1hJRUVpczU5Q2FoWnh6eG9qdm03c25XN3dxZzJNeFRsTjI0emZmcGRuT0FFWDdGUWFJUmtvQ0gxSHdDVU8wWGt1dE9NdWtGY1hlK2dCNlNETUt2MDRIeFMwVlFLVUQ3SkNNazNwdkc2WGdUUXFMMUpFZDdyTWZBcHpoWVE0WFk2eTJ2ekxwazMwalpocFV4Rmw4REkvRkRtZm5xUVpvRXRNMHNCSlIwenFUWHBKQWtNeklWUlA0WjdJU1M4VXNEeHBlRHhFbE9VVGt1NlVsT09Dd0dxTDZKR1BpVTJZMGRsSTMveXRZdStiQ3BYcEhQbUZZQjNBUkRDMG5zeTNrVGdZU1NvNlVCeElNZW1OUWM3KzJUZlU0NE9nM0VVemVDYUFxQnRBRzlpVUF5SXJreE9wTFRRaG9lQzFTL1JIeFQ1VW5LWGRIdWJiTWhBUmZmTzUzcXRmWTUweFpybjFaVGdMSHg1eUJaSWlRcEQwbnJUZEtweElQS1RBbG9mY2FIN0gwcUhKME8wbW1iUVJ5d2lZUGt2OEdBNUJRR0phZWI1ZWlCQ1lEN3VIdVVpeUtZdEVuZU5CaXlDYVZrU2NNd0sxMmpiWmVDOExOQVlOcE9BNmJOVklTRVpvT2dyQkdVcFk0M0VVaVcwNGdIL1dGSzNSQStKL0l3M2x3YVdBUm1nWFQ2WnBBUVNNU2JDQ1NEa3FzbXl5RWs0ZEE0b1BzbGtyTCtHbHFBMENtbEdTbEVhN1JIMVQyekFlNFpoMkRSZDV5MmozZ203REtQNjMwaklPR24wM2xJQVJ5a2xqd2tyZVRRbStnMndRVFFUUk1BbGVRcGM4NEM0NWtDbGtIWllEbURRTW9FQ2V0TkZaSmplTWt4UGkrUW5EYkxZU2tnSElvZTVaRUFsRnZTQTNUbmphVEVwOXlVRnE4S0M2WGJ3dHhaSWNPRUVDMXdYbDlNTzZ3RjBSY0wyTjQzR2V1SS9oWEVEd2c0U0VJeUIydUxrRnJ6a0ZqSitiT1E2RTVzRnR0cUNxQzdaM0d6S2UyZkFsYUJXOEJxNWhhRWxJM2VwSVhFU1U2a0x6a3RKRlp5aVVZa3g1VUNvcUdrSEVCWS9STEtLRGY1YndqclBDYUdGTHpBdVFSYWN4ZUZQWHBEUnpMZElDWndsWCtHaGFzZDFsZWViTnZGUlJsUHVjcnpLT2QxdjlCOUlwOEpleThEVWZjRjNJQ2cyMndRZjg0TkNFU2RlVWdkZ3poSW54RkkwemxJNVpMelo3Mko2aGtCWkJabkNxQm5SY1VhR0JpNEE2UVRONEZOY0E0SENiM0pZb1l4eWFWV1NHNmlvcXJrZENHTjVLdnY4ZzB2bW1ja2JsT2lRT2lCWHRZM0ZoaDNmSzRibGcreWRXVzBMTDZNZG8wRHhqVUdHSmNvdGxNcGNsb0pJc2NsSU80ZFVubEEwUDBiSHRLY2lrbEtaOTZiT2dZWmxoenhwclpCV0VrbjNpY1RFbE1BUFNYN2xnMjd6dUdubkFyV3MzSllTTmF6dG9LVnZ1U3F5M0lUWHBEbFJsUlUzMVY3VEZ6N1JOcFAyN0UwM05abGU5LzJQS1NlM0pDQWhjUk9VbmhJV20rcVJuS1U3WEpvNjdWaHA0bWJPNjZQUXJ6STFUOEhKSk15d1diTzlncElyT1N5V01sSmRlT1NWbksrMml4WFdYSlZON3dWMWJkMkx5Y3gwR1BTYmV0S2ROcTZaRWpBUWpJd1NlSEdUZDhZbFp5bzQ0eHl5VEVkZ3NFU2R3MGJkNStMTkJYUWZtMTdZTS9objhGeWNCcFl6dHdHMWdUUzdHMWdvNFVVbEYwT3lXQ1cwNVlDazVRdkxBWFl1R1NreDFTMXJZdVFaQldRMkVtS1k4VWtwUktrS3BLYlZTNDVOaTUxQ0FLNmR3VE1qemtDeGNWcVAxT25sOS9xTnRsWEtQS0FHWm9PVm5OMmdQWGNIUndrUTVKRFNCV1NTeS9QY3ZyVk40RkV2V0REcTl0anF0VFc3Y2UxZFExTGJxRVJ5ZkhEeTI0Nmt1TWgwWFlyb0cvQU5pZ29WRC9EK3U4elUvc25YZm1lTGd1SVRDWjhGdTBEMGFpTllEVjNKMWgvczZPeTVJSTR5VWtEOVVvQmZ6NHUrWkc0VkRYTEdaV2NUbzlKTXJnNnlTMnZJamtKSzduUUNzbjExSmZjbkhMSkNlMFdnKzNZVFhEbS9DMjhUODFac29Nd3RYOVNEOEVjMHZVaTBrdnhucjhIaEtNeXdHb2VnYlNUZzRUZVZCR1hzblhpRXBGY1JxVXNSK3RYMzZiMm1OaTR0TFlxSkdPUzA4WWxCMjFjcXBybGhEMlhRcWVSRytENER6ZjQyWHpKOUpjcXdOVHFVcGsybTJrdHYwQUZBU3YzWThHM0FTeG5vOXdJS0FPU3N5alBjcnprakc1NGs2cG1PZDBOcjY3a2h1cElUaHVYV01tdDFKSGNVaDNKTFVKUWhpWEgySWVEZzA4V25QenBwdmJlOGw5NkZFVW1sQmlMTXZXSGZzV1kyVllxVG9ETmlBeUVrTU41MDF3amtxdXUramJZWTBvMDJtUFNiZXRXS1FVOGpKUUNlcElUOVY2SU5WUTBxNFNMVndxMDkvUVVuY0g3bGZZMjVGQUJtV2taR2hubkhyMENqbjViUURSdU13WnZuYmlrSzdrZ0k1TDdXamZMS1N2MW1HcENjaElEV1U3b0ZBNXRCaVhEMnJTVG9GSnBkRTkycEJ1ZDdac1lzQjM1YVdVVlNFUnl5K1I1ME41N0UwaDhzNnRtdVpsYmRhcHZBMW5PejNDV28wMW82NWFYQXBVa0YxWWhPVGZPbThTdTRXRFJMd0VtaE83bGczR2xlemhWVUZEUTVMV25sZVF3QWI3WUkyTW5NSDY4bUEvQkVZZWdEV1k1aVU4bVdBVVRUNnBHY2xQMXNweXZYcFo3WWZVZHJWTjlWNVdjQkVzQnNUditETUVNbTcwTHZqdDhHVlRxS3NlRkw1V1dsbHJWV0N1Qm5KNUFkN3hmM1ZFVm91dVZXRFAxOE1rR01XWTdDLzlzTENwempHYzVReHRldlI1VGxWSkFaOE9yTHpueGdBamN4OFZBTzY4VW1MTGllemh3NGhwNzJOUEF0WjRpUThVYWIwU1IweFJralB1aWM4aTNVWHJmWVFVZXVPb0FkRWRZVnQ0YlFlcXpHU3luWm9GbFlIVWJYc05aampiUyt4WjZvUTFDRzdBT09veE1nMUh6ZGtQUzFyTnc5VVlSWU5vMmN0WklzK1cxWmZXQ1NTWEZaN2VucGh6YUp2WFR3ZjljZ3pXcEoyRnN5RjdvTmpFVExFYWtnMlQwQmd6d2FKUFFpM3dSa0o5Mkg1ZkdUVklta2E0QVFocVAzdVNOa3ZzU2JaZ2NtQ0Z5ekdSSjBIWjRHbmdHYlllUXVLT3c3ZnVMK2lkSkROa0RjdEkxUC84dC9MY2hQNGdiaXFDdXZPd3BkMkxrWmtnV1ZPU2N4U0IvSEdhc1BvaEJOQmVHejlrTmcyYnVoSUZCTy9EbWQ0Qlg4QzRZczJBUEs1ZVErS01RdCtrMDVDQU1jakNpV0dYeXZ5Q1FFMnE3M3NCaEtkTU9NWkhqSlhnQnQxOEZsQ0VqTVlQSXc0aEVYc2FJaCtmaDlmVjlyVFJlUTdQdkZoajBBdmo0OUx5bVlMMEdtTjNrMkI0NUFQb3VUWGVKOU9xU2d3TGttQW52VldWdkNjb1RsUHNadEFYa1NKL1p1NzVJN1hULy92M0dxUHZlNUFRN1h2Z1IvcVRxa3hvQ1F2NWY0elozOEpNOTlObnVyUVRmTnkxRHRHNWszME1PVnFGbGNPQTBWL25EbDQ5MDVFbGs4cjk4Wi9NOFBuY2Y4VW9FTW9jY0FTWkF5UGxxczlwVnUycFg3YXBkdGF0MjFhN2E5VWJYZndGdlVFRUg0WWFxbEFBQUFBQkpSVTVFcmtKZ2dnPT0ifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMS0wMi0wNCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IkV6ZmluZ2VyIEZJRE8gVTJGIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVMkYxMDAwMjAyMTAyMDQwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMiIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4zIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIxLTAyLTA0IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjF9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjEtMDgtMDUifSx7ImFhZ3VpZCI6IjNlYzljOGQzLWE1YTctNDE1Yi1hN2I1LWYxZDYwNjM2OGQzZiIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiM2VjOWM4ZDMtYTVhNy00MTViLWE3YjUtZjFkNjA2MzY4ZDNmIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ill1YmlLZXkgNSBDQ04gU2VyaWVzIHdpdGggTkZDIChFbnRlcnByaXNlIFByb2ZpbGUpIn0sImRlc2NyaXB0aW9uIjoiWXViaUtleSA1IENDTiBTZXJpZXMgd2l0aCBORkMgKEVudGVycHJpc2UgUHJvZmlsZSkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NzI4LCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX0seyJtYWpvciI6MSwibWlub3IiOjB9LHsibWFqb3IiOjEsIm1pbm9yIjozfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMzg0cjFfZWNkc2Ffc2hhMzg0X3JhdyIsInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3IiwiZWQyNTUxOV9lZGRzYV9zaGE1MTJfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sImlzS2V5UmVzdHJpY3RlZCI6dHJ1ZSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiLCJzbWFydC1jYXJkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlEU0RDQ0FqQ2dBd0lCQWdJVURxRVJ3KzRSbkdTZ2d4Z1Vld0pGRVBEUlozWXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFESTdYbkgrWnZEd01DUVU4TThaZVY1cXNjdWJsdlZZYWFSdDNZYmF4bjlnb2RMeDVzd0gwbFhyZGdqaDVoN0ZwVmdDZ1lZWDdFNGJsMXZielVMZW1yTVdUOE4zV01HVWU4UUFKYkJlaW9WN1cvRStoVFpQLzBTS0pWYTNld0tCbzZVTGVNbmZRWkRyVk9SQWs4d1RMcTJ2NUxsajV2TWo3SnRPb3RLYTlKN25IUzhrTG16WFhTYWowU3dFUGg1T0FaVVROVjR6czFidm9UQVFRV3JMNC9KOVF1S3Q2V0NGRTVuVU5pUlFjRWJWRjhtbHFLMmJ4Mno2b2tWbHR5RFZMQ3hZYnBVVEVMdlkxdXNSM0RUR1BVb0lDbE9tNGNycHduRFJMVkh2alllUEdCQi8vcEV5enhBL2djU2N4andhSDFaVXc5Ym5TYkh5dXJLcWJUYTFLdmpBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlRxdDBLUW5neDdaSHJiVkh3RHVueE9uOWloWVRBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBcVFhQ1dNeFRHcVZWWDdTazdra0ptVXVlVFNZS3VVNitLQkJTZ3dJUm5sdzlLN0hlMUlweFowaGR3cFBOaWtLam1jeUZnRlB6aEltd0hKZ3h4dVQ5MFB3M3ZZT2RjSkpOa3REZzM1UFhPZnpTbjE1Y0ZBeDFSTzBtUFRtSWI4ZFhpRVdPcHpvWHZkd1hETTQxWmFDRFlNVDd3NElRdE15dkU3eFVCWnEyYmp0QW5xL05EVUE3YmU0SDhIM2lwQysvK05LbFVyY1VoK2o0OEs2N1dJMHUxbTZGZVF1ZUJBN24wNmo4MjVycURxc2FMczlUYjdLQUhBdzhQbXJXYU5QRzJraktlcnhQRWZlY2l2bEZhd3AyUldadnhyVnRuM1RWMlNCeHlDSkNrWHNORDA1ZENFclZIU0pJcytCZHRUVk5ZOUF3dHlQbW55YjB2NG1TVHp2V2R3PT0iLCJNSUlEUGpDQ0FpYWdBd0lCQWdJVVh6ZWlFREpFT1R0MTRGNW4wbzZaZi9iQndpVXdEUVlKS29aSWh2Y05BUUVOQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU1aNi9UeE04cklUK0Vhb1B2Rzgxb250TU9vLzJtUTJSQndKSFMwUVpjeFZhTlh2bDEyTFVoQlo1TG1pQlNjSVpkMVJueDFvZDU4NWgrL2RoSzdoRW03SkFBTGtLS3RzMWZPNTNLR05MWnVqejVoM3dHbmNyNGh5S0YwRzc0Yi9VM0s5aEU1bUdORDZ6cVljaENSQUhmcllNWVJERjRZTDBYNEQ1bkdkeHZwcEF5Nm5rRW10V21NbndPM2kwVEF1Y3NyYkU0ODVIdkdNNHIwVnBnVmRKcHZnUWppVEpDVElxK0QzNWh3dFQ4UURJdituR3ZwY3lpNXdjSWZDa3p5Q2ltSnVraFl5NktvcU5NS1FFZHBOaVNPdld5RE1UTXQxYndDdkV6cHc5MXUrbXNVdDRyajBlZm5POXMwWk93ZHdNUkRuSDR4Z1VsNVpMd3JyUGtmQzEvMENBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUI4R0ExVWRJd1FZTUJhQUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUU13RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCRFFVQUE0SUJBUUMzSVcvc2dCOXBaOGFwSk5qeHVHb1grRmtJTGtzMHdNTnJkWEwvY29VdnNyaHpzdmw2bWVQTXJiR0pCeUoxWG5xdUI1c2djUkVORnhkUUZtYTNtaW84VXBmMW93TTFacmVYckowbUFERzJCcGxxYkpueGl5WWErUjExcmVJRlRXZUloTU5jWktzRFpyRkF5UHVGakNXU1F2Sm1OV2U5bUZSWUZnTmhYSktrWEliNUgxWGdFRGx3aWVkWVJNN1ZvbEJObGxkNnBSRktsWDh1c3Q2T1RNT2VBRGwyeE5GMG0xTFRoU2RldVh2RHlDMWc5K0lMZnozUzZPSVlnYzNpcm9SY0ZEMzU0ZzdyS2Z1NjdxRkF3OWdDNHlpMHhCVFByWTk1cmg0L0hxYVVZQ0EvTDhsZFJrNkg3WGszNUQrV1ZwbXEyU2gveFQ1SGlGdWhmNHdKYjBiSyIsIk1JSURTakNDQWpLZ0F3SUJBZ0lVVG5iYkdJUjJOSHZ6cUlLRkFlUXdHMVhCaXMwd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JCSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVFZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU9zWGozazA0QmFuNFRZZHRaS3FEL09QSnh5RHlhUG1DQlVGVWlhWklnVHRlWm5qM1gyNURoZ3BaWlhzQzREMHlkSWNybEE2d05VSW5PUkwvTDl6QmJURUlNQVZNR282ZzdVS0FtYjJNRjZBSGJuaFlKZDllaWt1cFZOV1NoSE5ZTmM0R0JkTzFZTjZBZlVxdkpoSGJlM1Y0U05NUG1CUkVLSlBWejdUaHdnbWdnVGU4V3MySzAvd3NxdjJ3U0U3cGJDQnNVWmhJWDUxYlpNM3BxRHdKUFRtUkZFdnQwLzZ0RzVlTzhGM2oxNE9YcWZFaG1qbjFWdnhLRFlRT0xaQXhDd3dnQzBQNENkZld2M3k4UFNSOEkzNTRoTzFZK0d6Tmp2SXFYMzhOS0x5d3VJWUhGZXJPeE5seEVNQnZGaFlCdVJ1WUFra2dVYVBxTjZVQmhzSUxyc0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ0NvUkhoaXlObmJuWFJXSUw2WkJYb0JYOVlUTUI4R0ExVWRJd1FZTUJhQUZDQW9VQ0VicEZwYjZGUExuWjNGNVB4c0wzb2ZNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUNRRmFmSkkxLzVXZzlDRUVpbUUxUlA1NFJnUXdUTlRPT1FzTEFDVGUrckl0bEZRekM5WkRoclY4Mjh5WDdqenkrQUFzcDNpeks3VDF0aDJkbDdtK3R1MHN3MlBhL29sYzAybnQ2UHlJdzM0OGdhSHpoSTErMEtFNDVxeHZGRGVMMmxNeGJQZkNZdnlFRWFZemppUUVMVTU5NTFwWEdXeUtNYS80Zkx0TytaS09YaE11VmVxNHJYRFBJNTRXNkpIT2lBYWlLZGl3KzVlM2Mya3QvakZJUXRNNnZNWGc5TE5GemRqRVROdDIwVlg5UWV2UnBGWmZ1Y01HOXdDYVFEb0ZsUHpwVE1KS2hQZXYvaW1KbVpZaEtmcjBsTGNlbXRxakl4TEFvcVpkT1lmSEJnNit2QWNkUEkvaWF1R3BVQXY3WCtVS05tRHdqWjJCYUg0c0x3aEIybSIsIk1JSURTakNDQWpLZ0F3SUJBZ0lVUjM4bXEyNlNmMnN6VlYyQmRHNldFTjdrdVdVd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVJZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU5ZMFdiOW9Qb1JvS29ReVdQYUpwejExdnJXVGc2elR0bU5qMlZvS1JueXZLR1JxcHpiODN3NWw2WUE5NlVZa1lCRFFQMGlsTzJEUGU2d1dxVlI1ekRmUnpkY0g4YmgrTDdkR0d2YWU2aFJUWmhrRmtDcFhEczRIY2NrbnJEZjhGQ2xKN0hlMzlKZjQyL0cxUW0yeno5V1dtclBYdGdpSy94MDVHanNRZkd1REcxemY1UVRVVWllOGx3eW1LM1RmZE92TmVlSkFBUGUycG43SXRmUmIrclZyTldpRHpsUm4ydk5uWjJ3UG80d0gvV0o2ZGhYWkcrck1XVCthNkJvY2cxVWZJdzZrZHVuRzRiVHBaenN2YWNGWXlSMG1wZitEZU9ucFNXQW15d0pXSHZUbGYyWVh4RnllWGNUQUNkUWxjTU5HSjJWaFpRNDh4dFA1L1JCUC84a0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ2h5NDJva2lxY1RTMWlxYS9IUldqa0JuNEgvTUI4R0ExVWRJd1FZTUJhQUZPcTNRcENlREh0a2V0dFVmQU82ZkU2ZjJLRmhNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUFuK1JISVBidE1FRE5kVDFnOEgvUml0QWtVZExnQXQxdFdHV25sajlrbmJ2NC80R2xYN0M5cDQ1ZWZQTzkvYVpMNk9WMVhSS0JpNkttdEJXNUs3bnVZRW5NeC81QnFCU2JMVDdyaGR1QzQ5VEJlTWI5UEhkWHNUbFNWTlllZnIxZEdpZHI0ajB4VkJRTGIxcmtuREFiZFdEektmdm5heUtPOEZyd2U3SHg4NDNNRy9ySitjMFhydVV2YmZWVENITGlJV2hNN29ORGhMOHhvYjZ4VW85S0xLY1NMK0l0WXNPMy85V2I4UTlHanNxTDRGWHNEY0cxU2FZaDdLcGZ1TW1PaXhxekpaTzJuSWljUFlSZzFJMlN1aVVmWU83MHRtZEhjYmwra1NRbVNZdDdycTR2aUlMZzJHeDNqOXJJVHVXVGpiYVVhU1NReGdPbU1TSHV5ek1BQyIsIk1JSURSekNDQWpHZ0F3SUJBZ0lVZXg5blQ5dndaTlhTNDgzTGRpWUdmdzJTalNvd0N3WUpLb1pJaHZjTkFRRUxNQzR4TERBcUJnTlZCQU1NSTFsMVltbGpieUJCZEhSbGMzUmhkR2x2YmlCSmJuUmxjbTFsWkdsaGRHVWdRaUF4TUNBWERUSTFNRGd3TVRBd01EQXdNRm9ZRHprNU9Ua3hNak14TWpNMU9UVTVXakFuTVNVd0l3WURWUVFEREJ4WmRXSnBZMjhnUmtsRVR5QkJkSFJsYzNSaGRHbHZiaUJDTWlBeE1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBdTFNZXZueTlkeU85WlVDMzlTb01oTGNSL0RYcnRGL2NpTTEydGNpeTJFWEFaNk1rcml2VnRDZkVWTTlYNklTVEVuQlA2dVNZWW92NnBwdjZPNkpoMk5IbVltNHcrSm5TNFZuQ1BVN21IQU1mVkkyTUdUVE1WT2V3MHhVc0c3c0lTSWtJRFVCbXVrOFlLOWM1emljOSt2RlFHTElrc2RYTzVpVkZJZ05HNTNjR1hENFpMWm9BUGl1MFBFb3p4QXFZSWFJNGd4S2hPQTNTOC9XOG1JV3N1Nm9meWo0R3ZrRkc2WjdreUYzMTA3UDdtd0ZITHJJM0VOYVBXTU9GY1RhR2EwZHcrL3ZWUndqUmNFWkJWc3V1VC84N2NrU3MwYTVwa3QzdlpCbGFZZVQ4cHpTcmVWN21vd2NJTTkwTDJpYUFUbFAwbnhtYUU2bk95VGJvakZWbDJ3SURBUUFCbzJZd1pEQWRCZ05WSFE0RUZnUVVTWEVoM3NhM2J0RHVybTRNTS9DN1MxbFJ1dVl3SHdZRFZSMGpCQmd3Rm9BVTZyZENrSjRNZTJSNjIxUjhBN3A4VHAvWW9XRXdFZ1lEVlIwVEFRSC9CQWd3QmdFQi93SUJBREFPQmdOVkhROEJBZjhFQkFNQ0FZWXdDd1lKS29aSWh2Y05BUUVMQTRJQkFRQjVHYzNoYWZ0cDdoS3NFWnNvK2kvWjVuUnVxZG16RzJXQ2xVb1JVcWJhUHlnbG5KRGpLUi9rZmdPbDZpYmJGL3p0aG0zS21YUTdIY0RJUDJ4TWRHN1UyTDJpbWJKUUhxUGYvaDJIcW9qYjRyWmd1ZSs2VzRrdFNSNWVsUjlMMXJZcUUvU0dZTTRpRUtvVlFTdjdSVDFyeEllV2lLc3cvVnh4aS9RT25zeDNGN3g4MENDWWdCNEUzeVF4OFZUVzQ0MGhURXdUQTFlTUhPaXgzMnRQdHl5SElhOFBWVklmVnBIUUpCYU1WdnY1MDhVRWp3a2JVMnJuamZ6b1NUTlM5QTVqVVE4bUJTdmU5NXJqQjBkbzk4RVUrRHhkQnFYMitINmk1d2xJQ0ZnemhkemNzbmU5aEdLVDZselRYNGNJZEpzclkyK3hsZUswRkZReTZsR0VWTEVlIiwiTUlJRFNEQ0NBakNnQXdJQkFnSVVVY21NWHpSSUZPZ0dUSzBUYjNnRXVaWVprQkl3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRRG01NTViV1k5V1crdE9ZMHJJV0hsZGgrYU5hbm9DWkNGaDdHazNZWnJRbVBVdzBoa1NHNnFZSFF0UCtmWnlTMzNWRXJ2ZytCUXFubXVtZ05oZnhGcmt3RVpFTGVpZEJjQzhDNEFnNG5xcWlQV3B6c3ZJMTdOY3hZbEluTE5MRmNaWS8rZ09pTjZaT1RpaE81L3ZCWk1iajlyaWFBY3FsaVltTkdKUGdUY01HYUVBeU16RU1OeTJubTZFcCtwalA1YUY2Z2kyMXQvVVFGc3VKMWoyUmoveW5NL1NkUnQrZWNhbDVPWW90eEhrRmJMOXZ2djJBMk92NUlUWkNsdzRiT1M5bnB5cFFpbU9aNVFBWXl0bVlhUXBXbC9wTVl6NnpTajhScWtWRE5FSkdxTmZUS0EyaXZMWXdYNmxTdHRNUGFwZzBKODRsOVgwdm9WTi9GcFM0VkNWQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJRZ0tGQWhHNlJhVytoVHk1MmR4ZVQ4YkM5Nkh6QWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQVlNemdMckpMSXIwT292UW5BWnJSSUd1YWJpSFNVS1NtYkxSV3BSa1dlQXRzQ2hERUhwWGNKL2JnRE5LWVdvSHFROHhSVWpCNEN5ZXBZZXZjM1lsckc4bzd6SHhwZlZjYW9MNVNldUprekh4S240YlRhU3A5K012d2FtbnA2NGtaTWlOYkZMa25mUDlrWUtvUkhrTVdoZVJKMVVzUDF6NFNjbWtDZUlMZnNNczZ2cW92cWpXQ2xGc0pwQmNzbHVZSFdGN2JCSjFuNFJ3ZytBVEVvcFk0SWdHdjZadndjK0E5citBVDJocXBvU2tZb0FsK0FOWXdnc2xPZjlzSmUwVitUQTlZWS9VbGFCbVBQVGQwLy9yOXd2Y2VQV1prUGpLb0FDL3pVTmhmRGJoNExWOEdIczNseVgyWG9tTC9MTmM4Sll6eUlhREVoR1F2ZW9QaGgvdHIxZz09Il0sImljb24iOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJpY29uRGFyayI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsInByb3ZpZGVyTG9nb0xpZ2h0IjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwicHJvdmlkZXJMb2dvRGFyayI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzFfUFJFIiwiRklET18yXzEiLCJGSURPXzJfMyJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJsYXJnZUJsb2JLZXkiLCJjcmVkQmxvYiIsIm1pblBpbkxlbmd0aCIsImhtYWMtc2VjcmV0LW1jIiwidGhpcmRQYXJ0eVBheW1lbnQiLCJwcmV2aWV3U2lnbiJdLCJhYWd1aWQiOiIzZWM5YzhkM2E1YTc0MTViYTdiNWYxZDYwNjM2OGQzZiIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOnRydWUsInVwIjp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibGFyZ2VCbG9icyI6dHJ1ZSwiZXAiOmZhbHNlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJwZXJDcmVkTWdtdFJPIjp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6dHJ1ZSwiYWx3YXlzVXYiOmZhbHNlfSwibWF4TXNnU2l6ZSI6MTUzNiwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0Ijo4LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjEyOCwidHJhbnNwb3J0cyI6WyJuZmMiLCJ1c2IiLCJzbWFydC1jYXJkIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN30seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTh9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi0zNX1dLCJtYXhTZXJpYWxpemVkTGFyZ2VCbG9iQXJyYXkiOjQwOTYsImZvcmNlUElOQ2hhbmdlIjpmYWxzZSwibWluUElOTGVuZ3RoIjo0LCJmaXJtd2FyZVZlcnNpb24iOjMyOTcyOCwibWF4Q3JlZEJsb2JMZW5ndGgiOjMyLCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6MSwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjEwMCwiYXR0ZXN0YXRpb25Gb3JtYXRzIjpbInBhY2tlZCJdLCJsb25nVG91Y2hGb3JSZXNldCI6ZmFsc2UsImVuY0lkZW50aWZpZXIiOiIiLCJ0cmFuc3BvcnRzRm9yUmVzZXQiOlsiVVNCIiwiTkZDIiwic21hcnQtY2FyZCJdLCJtYXhQSU5MZW5ndGgiOjYzLCJlbmNDcmVkU3RvcmVTdGF0ZSI6IiIsImF1dGhlbnRpY2F0b3JDb25maWdDb21tYW5kcyI6WzEsMiwzXX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI2LTA0LTI1IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTcyOCwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZdWJpS2V5IDUgQ0NOIFNlcmllcyB3aXRoIE5GQyAoRW50ZXJwcmlzZSBQcm9maWxlKSIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjYwNDI1MDA3IiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25Qcm9maWxlcyI6WyJlbnRlcnByaXNlIl0sImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjYtMDQtMjUiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NzI4fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI2LTA1LTAxIn0seyJhYWlkIjoiMDAyNCMyMzUwIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWlkIjoiMDAyNCMyMzUwIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkcrRFBpbktleWNoYWluaU9TIn0sImRlc2NyaXB0aW9uIjoiRytEIFBpbktleWNoYWluaU9TIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoidWFmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH0seyJtYWpvciI6MSwibWlub3IiOjJ9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfZGVyIl0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJzb2Z0d2FyZSJdLCJhdHRhY2htZW50SGludCI6WyJpbnRlcm5hbCJdLCJ0Y0Rpc3BsYXkiOlsiYW55IiwicHJpdmlsZWdlZF9zb2Z0d2FyZSJdLCJ0Y0Rpc3BsYXlDb250ZW50VHlwZSI6ImltYWdlL3BuZyIsInRjRGlzcGxheVBOR0NoYXJhY3RlcmlzdGljcyI6W3sid2lkdGgiOjU0MCwiaGVpZ2h0Ijo5NjAsImJpdERlcHRoIjoxNiwiY29sb3JUeXBlIjoyLCJjb21wcmVzc2lvbiI6MCwiZmlsdGVyIjowLCJpbnRlcmxhY2UiOjB9XSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUJtRENDQVQwQ0JHUWRQUjB3Q2dZSUtvWkl6ajBFQXdJd1ZqRUxNQWtHQTFVRUJoTUNTVTR4Q3pBSkJnTlZCQWdNQWsxSU1RMHdDd1lEVlFRSERBUlFWVTVGTVFzd0NRWURWUVFLREFKSFJERUxNQWtHQTFVRUN3d0NSRk14RVRBUEJnTlZCQU1NQ0VGVlZFaFNUMDlVTUI0WERUSXpNRE15TkRBMk1ETXdPVm9YRFRRek1ETXlOREEyTURNd09Wb3dWakVMTUFrR0ExVUVCaE1DU1U0eEN6QUpCZ05WQkFnTUFrMUlNUTB3Q3dZRFZRUUhEQVJRVlU1Rk1Rc3dDUVlEVlFRS0RBSkhSREVMTUFrR0ExVUVDd3dDUkZNeEVUQVBCZ05WQkFNTUNFRlZWRWhTVDA5VU1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRVNJcEkvZEtZQ0RZaHp3RDJ3U2ZZQU9iL25OYWlQY1dGMjF2eFprL1RnRDBPSnRjRCtPUG02NG53WmRGV1NFWVNXN2lPcW5wbUp5ZGU4bWdyL3RuQWl6QUtCZ2dxaGtqT1BRUURBZ05KQURCR0FpRUEzYnZoYXpRRlB3bXlYbHhLL3hDWGZoN2cxWDFFb2JMQzNMKzJHT1J4cDdnQ0lRQ2ZORVRYL20yQmViUkxYSTRMTVAxRVFHUFhGRGY3T2s3NFU3eGJpTTRWa0E9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LC85ai80QUFRU2taSlJnQUJBUUFBQVFBQkFBRC8yd0JEQUFNQ0FnTUNBZ01EQXdNRUF3TUVCUWdGQlFRRUJRb0hCd1lJREFvTURBc0tDd3NORGhJUURRNFJEZ3NMRUJZUUVSTVVGUlVWREE4WEdCWVVHQklVRlJULzJ3QkRBUU1FQkFVRUJRa0ZCUWtVRFFzTkZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlQvd2dBUkNBRElBTWdEQVNJQUFoRUJBeEVCLzhRQUhBQUJBQU1BQXdFQkFBQUFBQUFBQUFBQUFBY0lDUVFGQmdJRC84UUFHd0VCQUFJREFRRUFBQUFBQUFBQUFBQUFBQUVEQWdVR0JBZi8yZ0FNQXdFQUFoQURFQUFBQWF5ajZGNXdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRWdkM2VEVDV4TEozNnhGb2M1bDhsR1BTWEtzek5ETTA5TlZkTis4UDhaZExLQkhwaWUrdmhUdW9mTlhOQXZtK015VW1SbjFkUVpnQUhNNGN3MUxpY1AxVkxlUXVqVHpKMmRKTTMzNXBoYWFVamVhYktVUnZkVjdTWjFkVFM2U3VGa3dRL2JIcjc2NXQyRjFtZGs4N05QcUUrU1l5SFIxZ0FMQjE4bHZ5VGVqUFhRcW11Z3NnWWRWVnAxeWFIZlhMVzN2VVFrMnBhSXFkNU1yWXFJUGZqZExObVRZeTIrQ1RveHNiNkl0dFN1NmxBOUJaSEE2cW9BQnlPT05IUDJwUGVuanJzLzhBeG1uY1liTENpYTZ6MHhTbWFadDlIUk1sVVJ2ZEYrcXpvWXVzM2xkS1YxdTZpYW0zdDdQcnRKbjBHZW51L0E5RFdHeHhBQUFldjhneFhLay9PWnFjOUptYktscE16Wkdrek5rYVRNMlJwTndNNkVyaDFqOHcyT0lleUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVAvOFFBS0JBQUFRTURBd1FCQlFFQUFBQUFBQUFBQlFBRUJnSURCeFVYSUFFUUV6WVJFaFl3TkhBMS85b0FDQUVCQUFFRkF2NmJHSVNSbE5ZYkZnVVpTM0ZNbWxQZ3RLVzJiZlNMckUxUFN1VytDMHZCYVhndEx3V2w0TFNjaUdMeWsxaWdPUnBrc1FJeGU5K0dBUW1xVVBHN2UwMHNQbjdZYTNlNWRCdHE5NXhhT1pZSEZBeXhKN2NwQmt4aEhpMjg0dGJ6aTF2T0xUSExRSjNXMWQySDFoNnlzRVdzNWgxeUtFT2JScmNmT2dZaXlCRlNXUXQ0eUtQU0Y3STN2REVudHl5Zjd0d2pjb2ZSaDRDTk41QU1sQUszSXdseTNWWnVjc1ZNT2oyWExMUm1wOUkrMUdKajFkTzBoNWJTSGxBb0NWanA5VFhIaFk5SmRwRHkya1BKeml3NDBiZHNPbWFtNWRaSFlkQjh3NVlZK05lVTQrcnBMdXpiOWJtZS93QVB0alg2dnZWWmYrUHV2bGk0aDBZUzlaZENWTXozYW5Kc2pvcDNQa2kzUGtpeDVOVEI2UktkVG8yRmxHNThrVzU4a1YvSkVoZFdPMkhBbFY0Z3Noa09oS1g4ckYrdHJmalJ5MUl3eDRHMmtReVNSUi9GM1hERW50eXlmN3R3aXNOZlNseUlGTndnK1lTR2lOQTZxdXRkWE9FVEc3RTM3QiszS05MN2UwNnRQY1h4OTVYdENDVzBJSmJRZ2tCZ0F1T1AwYXgwSlBFdG9RUzJoQkxhRUVtT000K3hydFdxTEZzb1ZhaG1VeGxsNldFdnd4NlVrSXpmQzVlR1BLVzhxRE9xZGRHclhScTEwYXRkR3JYUnExMGF0ZEdyWFJxMTBhbk10Q3RLVGVZQjdXazlKSDhrYy8wMy84UUFIUkVBQWdJQ0F3RUFBQUFBQUFBQUFBQUFBQUVSRWdJUUlDRXhVUC9hQUFnQkF3RUJQd0g2eXhrNlJLRjdxVVNoNHp5ZlMxREVtWkVQV0xNdUM5TXRXUlliZ3NodVJlbVhuRk9TcFZpeFkxSlZsV0pRTnp5c1dMRml4WWJuN0gvL3hBQXVFUUFCQXdFRkJnVUZBUUFBQUFBQUFBQUNBQUVEQkFVUkZTRlNFaFFnTVVGUkV5SXlZWUVRSkZCeDhEUC8yZ0FJQVFJQkFUOEIvTFZsZDRQa2o1cjdpcHp6ZFIwbFF4czdpcXIvQUFQOUtPTTVYMlF6VzUxT2xiclVqbnN1b0srV0Y3anpaUm1NZ3NZOHVDVS9DamMreXBZdDZtdUw5dWhGaGE0VnZVR3RsVTFNSlFrekVyT2tHT1YzTjdzbHZjR3RrRW9TK2g3MWFGTXhnOHJjMlZsU3ZlOFh6d1ZZN1VCc3lzczJHWjJmcjlNTG03dC9mQ2tzNldNWE4zYkpRUUZVRnNBc0xtN3QvZkNvYVk2Wm5ZK3FxellJQ2QxWlkzelgrM0RWVTVVc20wUExvb2JVRzY2VmxpY0h1cDdRaGtpSUc2cWhuQ25rY2o3TEU0UGRQYWtIUzlWTlVkV1YzVHNxS20zZVB6YzM0U0ZqYlpKSFpjUlppOXl3a2Rhd2tkYXdrZGF3a2Rhd2tOU2hwSW9QUzJmNWovL0VBRU1RQUFFREFnQUhDd29FQlFVQUFBQUFBQUVDQXdRQUVSQVNFeUV4UVpNRklDSWpNelZSWVpHaDBSUXdNalJTWW5HQndlRkNjN0d5VTNDU3MvQlVjblNDd3YvYUFBZ0JBUUFHUHdMK1p0MkVaS01Ed3BEbm8vTHBvRjlzN29QZTA5NlA5TldZaU1Nam9RMkJYSnA3SzNXSVFrSHlWelY3dUFBZ0VaQmVuNVZ5YWV5dVRUMlZ5YWV5dVRUMlZ5YWV5clB3bzd3OTlvR2xLaWhXNTczUzNuUi9TZnBWcFRlTXlvOEI5dk9oWG1pOUl1bmM1azhNajhaOWtVaGxsdExUU0JaS0Vpd0ZGK1UraU8wUHh1S3RSUzBKRXIzbTI3RHZJcjFLWjJKOGFtdzI0a3BLMzJWTmdxeGJDNCtPQWZrTCttQjZBOUZrT09OV3VwR0xiT0w5UFhYcVV6c1Q0MTZsTTdFK05lcFRPeFBqUVM0WDRuVzYzbTdyMGw2TzhoOXBXaGJhcmluSThscEx6TGdzcENxNEYzSUwyZGx3NnZkUFg1aG1PeU1aMTFZUWtkWnFQQlk5RnBOaWZhT3MwNU1mNFg0VzI5YTFkRkdSTWR4dlpRUFJRT2dEZWo4aGYwd1QvZzMvQUcwNzBQUlhPTFBLTXE5RlkvelhUTTJNZUF2U2s2VW5XRFVpRXUyTW9YYlY3SzlScFRheGlyU2JFSFVkKzB0UXVJN2FuZnA5Y0hrUVBFdzBnVzk0NXo5TUlVQkhzYy9LMW9qYld0RWJhMEpjc001SEpxVHdGM09DVk5paG5JT1ltTGp1V09aSUZhSTIxclJHMnRPdnVDUGlOcEsxV2MxREMvdWNvOFZJUmpwSHZqN2ZwZ25CSXNsMGg0Zk1aKysrL205UGszL29ZTjFjYlRsemhhLzJqekc2UC9IYy9hY081dUwwci9ZckFtMyttUmZ0Ty9qcFViSmtJVXo5UjNnWUVib0pUeE10T2MrK00zNld3aEluaXd6Y2kzNFZ6Z05nMzRWemdOZzM0VUlzMlhsbU1rcFdMazBwei9JWUpjU0hNeVVkR0ppcHlTRHBRRHJGYzREWU4rRmM0RFlOK0ZPTXVUZ3B0eEpTb1pGR2cvTERKM1VXbmltVTVKQjZWSFQzZnJnM1FXazNRMnJKRC9xTEh2dnYyM21sWWpqYWdwS2hxSXFQTmF0ZFlzdFBzcjFpbllVa2NCZWhRMG9WcUlvdHltN3RFOFcrbjBGLzUwYjBma0wrbUNmOEcvN2FkNkF5Z3RSUWVNa3FIQkh3NlRUTU9LbkZaYUZ1czlacCtVU01zUmlNcDZWNnZHaXBSdW81eVQ1ZzQxM0lMdkxORDl3NjZia3hYVXZNTEYwcVRTbW5tMHV0cTBvV0xnMFZDS3FPVC9CY0k3cTB5dHI5cTB5dHI5cTB5dHI5cThzaUYvSzRwVHhpN2o5TURzNlNYOHM1YStJdXd6QzNSMVZwbGJYN1ZwbGJYN1ZwbGJYN1VGZVJtUW9meDFsWGRvcEtHMEpiUW5NRXBGZ0tjbFRIUXl5aldkZlVLeXlydHhtOHpMWHNqcCtQbXNlRTlaQjlObGVkQ3ZsUVRQYlhBZDFtMk9qdXoxZHZkU0llb3ZBR3VjSXUyVFhPRVhiSnJuQ0x0azF6aEYyeWE1d2k3Wk5jNFJkc211Y0l1MlRYT0VYYkpybkNMdGsxZDNkU0lPb09oUjdCUlR1Y3l1YTdxV3ZnSThheTA1N0h0NkxZeklSOEIvTTcvOFFBS0JBQkFBRUJCUWdEQVFFQUFBQUFBQUFBQVJFQUlURkJVV0VRY1lHUm9jSHc4U0F3MGJGdy85b0FDQUVCQUFFL0lmOEFUWWpvNGFEVE0wT01VWTYzdkV0QlpHK2FCRnVEK2hYcTlHNUVDSE5zdTVhQk5QVjY5WHIxZXZWNjlYcGM1WWYyeW1aTzBSWjFUK2lnWjRUZ2hPRG8vVVRCdTZOL04vWEEzMGE0MFNPUVZlcXJBZDIvU29NSGd1ck9teEdFaG5wQ0F1VzM0VVNMcWhsaE1TUGdSbzBicHRzdDNPNlhhYW9iaVZDRUpNaWVZMERFMDNobTBIVTR4ODlkcVhKQlJtRVNEYml1cXkxYnBpd01MdUg5WEFHbDNPVzdjc3Y2NC9aUndWc29TdU9NK1lxZnVlUWZORkNxSnZ3dlU2TFQrMjcrQmhQblprSDNPdzlaOE5oWmVoYVluSkhEYkE1b1BCWG5QeXZPZmxFMkRHOHhGa2FiSG1SR0lHc2pNYTg1K1Y1ejhxL1VQRmdsdzAycE5rWmZKM3o1Tm5IdklDZm1GQjNXNjM3YkRhUE01WWRJMitXeSt0UUZiSnROMXRzV2JjeDZmblBBcFhOT29ManNUQkRCdUJFY1F1ZTBvWUlHRnRvVUoyckJMTWlMUWRobkFwWU1sYWpldTFDaGlGZ1hrSVN6THRTZ0pka3JHN1l3d2c0WjBIek5BdlJpSkhuU2hDQzI2Ny9SR3NjdVhZYzBmcGpUbExNZGh2d2RWdjJVY0lOQnJDY1QrQTR4VmoxbE41am1LMjFhdEVXTWRCZTBLZncyUWxYNkhJT2hlRExSZGJza25EcUt4L0hTaUo5Qlp0UnEweTh4UE5JY0N2U3FlbFU5S29iUU5oSUcreUd6RGRmN0FFR2dWNlZUMHFucFZNTklFanVjU2dERkRnWkFVU1dyYnhZQml1VkxRbG52RWFzZUJoOVMrWVo1aDV0U0dzRGRGTHhzT1hHalU1L0JGbXZQdTllZmQ2OCs3MTU5M3J6N3ZYbjNldlB1OWVmZDY4KzcweWluNjRMV0J1UVIxdHRib045U1U2VkdXQnZ2L3dCTy85b0FEQU1CQUFJQUF3QUFBQkQ3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3NzZvTWpnNHh2UDM3NzZtcHp5eXZ6ZXByNzc3M2o1VC96NWUvejc3NjRwdjhBdnEvNklHKysrK3ZjL3dEL0FQOEF0ZjhBdnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2di94QUFlRVFFQUFnRUZBUUVBQUFBQUFBQUFBQUFCQUJFeEVDQWhVV0ZCVVAvYUFBZ0JBd0VCUHhEOWJNZEJxek1FVU16MmxuMkJoRVJwMkJiVVdDWm5oTEJ4QXB4UEtJbVpRMUQ5MmNSRHhyQVdvQXQwaXdoc2JvRFRIcnBBUmpDaldobTV0R29Nekw5Uy9VdjFMOVMvVVhMOWovL0VBQ2dSQVFBQkFRVUlBd0VCQUFBQUFBQUFBQUVBRVNGQllYSGhJREZSZ1pHaHNkSEI4UEZRRVAvYUFBZ0JBZ0VCUHhEK3NiMzE5dU5ZRG83dFBSRlUwRTg1enZrb2RWdm1ON2U0K0t0SlUrM3c3ekorR0t6VmJHR1JZdFZxVy9URmdZcUJkUDNJQzlVYUZZWFFWRnVaUDFJVW8wY0lYTk45aVk1UURteWxIaCtPbXczQkhpMlhBU3pPeDhmNHUxN2pGSGtGYkY5UitnSVZ0NUZ3OForNHdwZzFHNnZ5RXZCQk9iWkVVYmhlVFlRU2pOeDJxcTRZWm5lVVZkZUpmeXVuMUdzclExQ0Ztc3FGVVVXWm5xZlVhd0JVTGtlNE1KUzRMYmZsalp5Y09CeTg3TDBLamN4cXF3Ynp2YjNtSzZhekZkTlppdW1zeFhUV0ZTMTlDVzNuRzEwNWYyUC94QUFtRUFFQUFRTURCQU1BQXdFQUFBQUFBQUFCRVFBaE1SQkJZU0JSY1lFd3dmQndrYUhSLzlvQUNBRUJBQUUvRVA1TnZjVTRaa2k1K0F0S1EwSHJCWjdxZWVKdm1qaXRBTmVncjlOOVV6R01BanNzYVNHa3hCNk5mcHZxdjAzMVg2YjZyOU45VittK3FQTVVKci9TaXg4K25vZzRvcW1CUGJrc0RHTnNiS1NFL0VTMHhUSEEyRmtTdWdFSVFTV1hoY0FzRldWZlRSMkN0MUZoSzdGVEp0QXBlSFNEQ3pKM2Z1aE1FVEF2SFEwT0xtOWxvMWdESmtlaGd3WU5EK3hFK1dEbEE3MGJwNTdvY0lrbTVrcHQzZnRyQ01JSVJCRVFhUDBLVXdYV1d1a09Ja3ZENEhGZHdkUGdsTDFqQXVKVitZK0NZTEJVL2l3T0FWMnhaZ01oREFNWVBqMUJ0SWdZbHZCS1cveU5GSkJHMnBzbTFEQTlnb3F3aDJHT0FZVDBrSlpHbmlrSncxQjJKd1pCdlJpYmVoQWc3aUoxbHRpa2tpTDhnamthTUJGUS93Qm5md2MrN3JkUGFZc0pKL3ZYUE5sZ2Q4QmhhN1I5c1JKM1ZKSEt4R3VlWkZiMWRERVpzSzJyTHowWkNpbzJrbTc4ZWhDVDRFU3QrK3ZLcUpON3YrazZCTEpUZE9IV2ZoOXZ4M3NiUldlNDlhTk9FUWgrZHVzYU5TMEVJL1FPUm95SVNsM24yaFhkNHVvR0h5cUFRR3VUSmFGR3phN1laTGFZMG1XZnRkdzBsMTF6QmJXVEp2MURzc25Da3BKRWRTSUNKYVdTNDRmSFF5citHVEVudE05OWVNNWRERGNnSDFReEVTNUtDYjJ1Snp1Rk1xU0RTOFNuQ0x3aWxsVEFiQ3JzbzdQTmh5UXZ4dEZCS0JRaG5zTGVHM0pDOVp6OElWM2RCTEtlN1lDQ3ByTFJhdkZtOTNrVEtVZ1hNa0psVjNWWitCKzZzVEZZRFlGYldEZEZBYkFwTUc0bVFiS0JFUkJLNEZudWlFaWVTbUFGZEs4SjRRSFF6WnN6TlZ5eS9CY3NiNkVtbUNQSjhKTWkrWjZHYk5uUE0wK3hjejJGRFVLQmRnQUE0S2thQ2ZPd0M4YUFTdFhxWTZTdDRiTVlveEFTQitKOWd3VEY1aUlXbUF0TVNWRFlvS0ozQ3VkbUozWm9FZUpnYnlZZXo0di9BUDhBL3dEL0FQOEEvd0QvQVBnZ1JMNnhRZWlvYjBSVi9CYjhqc29BM2JFbU1qWXdKVXFDVmorVHYvL1oifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiTk9UX0ZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDQtMTYifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTA0LTE2In0seyJhYWd1aWQiOiI5ZTY2YzY2MS1lNDI4LTQ1MmEtYThmYi01MWY3ZWQwODhhY2YiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjllNjZjNjYxLWU0MjgtNDUyYS1hOGZiLTUxZjdlZDA4OGFjZiIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IDUgRklQUyBTZXJpZXMgd2l0aCBMaWdodG5pbmcifSwiZGVzY3JpcHRpb24iOiJZdWJpS2V5IDUgRklQUyBTZXJpZXMgd2l0aCBMaWdodG5pbmcgKFJDIFByZXZpZXcpIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NiwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9LHsibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMzg0cjFfZWNkc2Ffc2hhMzg0X3JhdyIsImVkMjU1MTlfZWRkc2Ffc2hhNTEyX3JhdyIsInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo4LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo4LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRE16Q0NBaHVnQXdJQkFnSVVTT0VqVGYvL3lxUmZQVzdRcThxdEl5Q3JBZzh3RFFZSktvWklodmNOQVFFTEJRQXdMekV0TUNzR0ExVUVBd3drV1hWaWFXTnZJRVpKUkU4Z1VtOXZkQ0JEUVNCVFpYSnBZV3dnTkRVd01qQXpOVFUyTUNBWERUSTBNRFV3TVRBd01EQXdNRm9ZRHpJd05qQXdORE13TURBd01EQXdXakF2TVMwd0t3WURWUVFERENSWmRXSnBZMjhnUmtsRVR5QlNiMjkwSUVOQklGTmxjbWxoYkNBME5UQXlNRE0xTlRZd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUUNkdmwyN3cyZ3UxZlBYZUVGYklkcXgwQmFsdlZEVldyUVBKN0hxdml1RXRaSGx4U0x4U0Z0Y1hwVG9sdkx2b2Y4ZjR0TWVyUVRrVkd6Y21Zem0xRUJUNElKdU1tb0VxZmtFRWhXcHNBRE1Gcmpaa3FsWlk5RXF4UXpMb1ZFRW9uRTVvR3hTZFZDeENjTElhY2tweVIvQ0NYdmoxQnQvaFRnRTloVGxGNHBScXhNa3gzcGxGN3k4ZERabFJIV3M3dmJuaG1CQ0dlSTBaUEVRNm5sMm1DZzJyNzRhZEYydTZLOXJyTGZoQkMzUUxFOEVQcmdxVXNJK2hrdXEydEs0TTJTTU9wOHVVVlZrcVVldTNoMGtyM1dWSTBXMDJwa2dyT2dpRktMRk5rU3JiWWhkak1CRGo1aXptcWZjOXhKUktvRFg2MTJxZDhaR1ZIcFQ1QVlGWCsxaEFnTUJBQUdqUlRCRE1CMEdBMVVkRGdRV0JCVFp5VTVEaVEvYTJVRWdFN3FCSzB6aElzUk5SakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VBTUE0R0ExVWREd0VCL3dRRUF3SUJCakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBWHZuQjRTTHVVSmZZTVNWR0Foc3NML1NtV2xpM0ZTY2NneHlkdktsQUNjaWRJSVdLUXFhM3EvUVNVRVF6QzlEZ0VmTWdyN2lDMUJrVFpiSUxib1Y2VVo1a25Oc3ZqRVpXdU1lb2dKOHRnWnMxaFZ2S3daaXp3SittRWNtc2poSXJCWXVvTDFUNnlyT0p2S0ZnMWp2K0N5NFp3QTlCcGsvVjNVT2lyMVZ5SzhkQ3R5SHU2dmZvc290QWRZeDhGQXVSMjQzZ1JUTVY2Sng4SmRpZzJKRElBUU1selZlRHBTVUhYL0sySFhSSHhId2ZnamJnVWpqQnUvNzJyOE9mZWh5aHpIWEkzSzhDRkZkZmxPKzhuRU9KSzN5OEYxaXZnUzV1Ti84U21jWXcvU1RRWXdocnhQdXd6M25QOGJhTXVtNEJCMm5uWW1wQjYwc1gzYmw1azhRVVN3PT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZkNBWUFBQUNHVnMrTUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFIWVlBQUIyR0FWMmlFNEVBQUFiTlNVUkJWRmhIcFZkN1ROVjFGRC8zZDU5d2VRU0lnUzlBUUFYY0ZMQVFaaTlmcGVWejF0WS9XVFpyNVd4cGM3VzVrbkxhNWpJM1o4NXNyUzJuTTJzanRXd1pTN0lVSDRINHhDbkVReDREQVpGNzRWN3VzODg1djkvbEluQnZWSi9CNFB2OW51LzVudS81bnZNNTU2ZnpBL1F2MEhiL0lyWDNWRktQbzQ1Y25tNGluVUlXWXdMRlJtWlFVdXdqRkcvTjFpUkhoMUVaME5SVlJ1ZHF0MUJkKzJuU0t5Uy9PaHlzMCtsazNlLzNrUTlxdkQ0WlV0YTRWVlNVdVkwZWlweWlUaEFmb2NvT1JWZ0R1dXczcUtSaUFkM3JiY0V0alRqWUlvZjZXYUhzQ216VlBXQ014K2NnaDh0THFXTUthTVdzVWpMcW8yUnRKSVEwb096bWVycFF1NGVzWmdzT05rR3hIN2Qwa2R2VFQxN3M0T01VN1ZJOFpoamdHYU0rQXE5aUVOdThQaWYxdWR6MDdNd3ZLV2Y4R2xWb0NFWTA0UEM1V2RUYVhZRmJSOHZOdkw1KzNLZ2ZiNXhOTXlhOVJhbUppeW5hTWxHVFZ0RmxyNmJhOXUrcHFuRVg0dU11UlJnalNZRWhyTjd1dEZGZTZscWFsN05ma3c1aW1BR0h5blBwYms4Vm1ZMHhzdG5wdGxGQ1ZDWXR6VHVCTjgzUXBNTGpUdGV2ZFB6U1VuSjdlOG1ranhaMzlmWGJLRGZsZFpxYnZVK1RVZ0duQlZGNmZRMmlQSGc0VzE2VVdVd3Z6YmsxNnNNWkUrUG4wcHZ6N0pTZXVBeWVzOGxjcENtYUt1by9wK3FXcjJVY3dJQUhXcnZQMFlFemhYQXRMQWJzc0hocDdpR2FtdnlpalA4cnlxclhVV1g5WG9vd3h5QXVmTkJycDQzUE9CRlhabGtmOE1EUmlxY3B5b3dBd3B1ejJ4K2ZXdnovRHRkZTlzbXN6eWd0Y1I2QzF3YmR6Qmw2T2xxNVdOWVk0b0dhdGhKTXJrVEV4MGpBUlNIQVZzKzVyWWtRTlhiK1FnZlBMc1E2Z1h5SW5zcmVRZm1wbTdSVkZZZkw4Nm4xZmlVT2tZdlNoa1VQeHZidWt6b3k2SzFpaE0xaG8zWHpXNkV2U2ZYQStkcGlXR2FXZCtkb1h6THptR3dLWUZMQ0FzUkFsUEJBaE1sQ0ZYVTd0QlVWUHI4SGdWY0pIV3ErRjAwcGxyK0RNVGRyUDR6dnhZMTFrTk1oeFQrU2VUR2crZDRWNUxRSml0eVVHSk5COFZGWnNqZ1lCWk0vSUkvWENUa2owcXlET3BGMkFWUTE3Q0lqVXAvRG5UMVVrTDVGNWdkaitzUzF3ZzFnRTNnaWdtNjBmQ1h6U25QWGJ5QVBiSVh2K0lEcEUxNlRoYUhJUzlza3lobG1NRTVGM2NmcUFLaHEyQzBFNVBIMWdZYVhhTFBEa1pHMEhESk9uS1dIcDUxSTB6NVNPdXg4ZTFXQXVaemRIUXJUa3A4VG1qWG9JK2xhMHdHWnN6dWJxYk8zaWZRNkEvVzd2VlNZc1YzbVIwSkt3a0tjNFdIaUJrbVI4STNDQ2dJODdvT0w0cXpUNVArUlVKQmVqRU9nQVBLOGhZUHphdE0rZUlUcDJJTzl5VFFtZXJvbVBSeHgxcXhBY3NpbGUvdWJTZUViY1dRR1lFQ2doY0xZMkh5S2pvZ2pIMjVoTXBqcFV2MU91Z2xpNGVoMmVSdzBPMzJiSmpreXVDZ056ZzB2emxZTVNpU3MwdW9vNE1HN2hNT2pDRWFYMXlGRTBuU3ZqQnp1VG5FcEs4Nlo4SW9xRkFJdWJ3OGtnOUFyRWFSRVdTWkkrakg0WGJwNmc5RTlFbkpUM29hUnpETitNVUpCUURIbjU2YThvVW1FQnVzT3hCcy9ONSt0SkViUGtBRkRqOFVHdk9zL0lXdmNTZ2xHQmh2UzcvRlRZZnBXR1lkRFk4ZlBBeFdTQTM1c1RDNHA0K0xtNEFhcUlvUGVRdGZ1Zks2SmgwWmh4bGJzVVhPU21YTmlmRDVaVEFreURvZmJiY2NseG5BOFdOQXF4Q2JSTnlraFh4UXBhRHc2N2ZYVVlic2lHMEtodHYyb2VJdmg4cmhRTVlPY0VBcVhHL2VJK3puZ09jNXl4cjhxODJJQU0xYy9GTEZPcGxxdTVlRlFYck1aekdjVkNqWWJMV0c1STRCVDFldVJybGJ4dE5PdE1pdERERWhMWElJeW5BQXZ1T0VXRTNYM05kQWZ0OTRWZ2FHNDJYSVF0MFpYNlBlQ0UvcVFGZTlySzZIeDdZVTUwS3ZIN2ZXNGZTK3E3S0tCSnhzZ2dCWDVwU0FHaDFqSXJWaDV6UTZ3M1JmYWFoQlhtL2FDYkNaVGpDVUZVVHlXWnFXOXA2Mk1qSlBYVnFPclBnTU80TnY3NEdrZitvd2Z0TlZCRFFuakZKcUhTdzE3cFh2aFdXNUtacWUvUTQ5Ti9VU1RDQVZXb1FYRklIQkhYWGUzRlByVURzdUdEbXRGL2hIS1RIcGVreGhpQU9QSStTSnE2UzZIRjRJOVlXemtCSlRvNDZpVU16V3A4UGlyL1JpZHVMeEtZc1Nrc1Y4dkxsT1F2aEdYMllsUjBPQmhCakMrdS9nRWN2WTBBcEs3WWs0MU54alBTUW5XRkhURjY2VXJqZ2V2QjhDdTVhK2wydllTUlB0dVZEbzczaGhkTVNIblVYN3RUanNWWkd4QWwvV3B0aU9JRVExZ25MMjltWDYvdFIxdG1sa1lqOFc0WCtDU2pXY1VER1kxTnBTL0M3aFNLcWlNTE0vbDJRbVNXWjczRGR6K2dpbzhCQ0VOWVBRNDZxbmt6d1hVYnF2Qmt4alVRc1dmWkZnYnVvM3JBZit3TjdqT085MCt5bng0UGkzTCswbllMMVNjaERVZ0FQNGdQVi83SWQxcSsxSFNobXVHa0lxV1JQZ3l4TUZxUDhIZmpUbmpYd1k1YlFmYkpjdDZPSXpLZ01Ib3RGL0hlMWVnc2F4SFNxRzZ3ZmRtUTV4OE55VEZGcUJjcDJpU293SFIzeWs1KzM2aEY3dlhBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiRklET18yXzAiLCJGSURPXzJfMV9QUkUiLCJGSURPXzJfMSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJsYXJnZUJsb2JLZXkiLCJjcmVkQmxvYiIsIm1pblBpbkxlbmd0aCJdLCJhYWd1aWQiOiI5ZTY2YzY2MWU0Mjg0NTJhYThmYjUxZjdlZDA4OGFjZiIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImxhcmdlQmxvYnMiOnRydWUsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjpmYWxzZSwiYWx3YXlzVXYiOnRydWV9LCJtYXhNc2dTaXplIjoxNTM2LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjgsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4LCJ0cmFuc3BvcnRzIjpbInVzYiIsImxpZ2h0bmluZyJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi04fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotMzV9XSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5Ijo0MDk2LCJtaW5QSU5MZW5ndGgiOjgsImZpcm13YXJlVmVyc2lvbiI6MzI5NDc1LCJtYXhDcmVkQmxvYkxlbmd0aCI6MzIsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjoxLCJjZXJ0aWZpY2F0aW9ucyI6eyJGSVBTLUNNVlAtMyI6MiwiRklQUy1DTVZQLTMtUEhZIjozfSwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjEwMH19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMC0xNSJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjQtMTAtMTUifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyI0NzI2OGVhMTNkNWUzM2RkYmJiNGFlMDAwYzEzYzk0NzhjZDE3M2FmIl0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjQ3MjY4ZWExM2Q1ZTMzZGRiYmI0YWUwMDBjMTNjOTQ3OGNkMTczYWYiXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlpUUGFzcyBTbWFydEF1dGgifSwiZGVzY3JpcHRpb24iOiJaVFBhc3MgU21hcnRBdXRoIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX0seyJtYWpvciI6MSwibWlub3IiOjJ9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNWekNDQWYyZ0F3SUJBZ0lKQUpNYzhXMUlPU05oTUFvR0NDcUdTTTQ5QkFNQ01JR0dNUXN3Q1FZRFZRUUdFd0pWVXpFUk1BOEdBMVVFQ0F3SVZtbHlaMmx1YVdFeEVEQU9CZ05WQkFjTUIwRnphR0oxY200eEZUQVRCZ05WQkFvTURGcFVVR0Z6Y3l3Z1NXNWpMakVpTUNBR0ExVUVDd3daUVhWMGFHVnVkR2xqWVhSdmNpQkJkSFJsYzNSaGRHbHZiakVYTUJVR0ExVUVBd3dPV2xSUVlYTnpJRkp2YjNRZ1EwRXdJQmNOTWpNd09URTBNVEExTlRBMldoZ1BNakExTXpBNU1EWXhNRFUxTURaYU1JR0dNUXN3Q1FZRFZRUUdFd0pWVXpFUk1BOEdBMVVFQ0F3SVZtbHlaMmx1YVdFeEVEQU9CZ05WQkFjTUIwRnphR0oxY200eEZUQVRCZ05WQkFvTURGcFVVR0Z6Y3l3Z1NXNWpMakVpTUNBR0ExVUVDd3daUVhWMGFHVnVkR2xqWVhSdmNpQkJkSFJsYzNSaGRHbHZiakVYTUJVR0ExVUVBd3dPV2xSUVlYTnpJRkp2YjNRZ1EwRXdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBU0orNjFMSmY5NjAvMEN6dmpkUzFNdWVrTi8zL041RFh4OFErTkx0Nm9oOU5kT0RBVFR5alJDQzgwZW5DNnJ5UlFyUDFqRWVBVHRtS0pxUFRKcEFHWnpvMUF3VGpBZEJnTlZIUTRFRmdRVWxRNjhDanpSa3kyeGNCTC9jNDd6cDZqUStMTXdId1lEVlIwakJCZ3dGb0FVbFE2OENqelJreTJ4Y0JML2M0N3pwNmpRK0xNd0RBWURWUjBUQkFVd0F3RUIvekFLQmdncWhrak9QUVFEQWdOSUFEQkZBaUJiSGFBeTlVNkZSTG5KdWxIUDc2ZEY3VmlzSzdIQzBTcEtEdnJWOUx0alVBSWhBTFpLc0k1TVhSeTJDMmY5MVhhSWhmT3dNQmVKNVBMaFdSa2NkeWJXMHI2TSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFnQ0FJQUFBRDhHTzJqQUFBQUNYQklXWE1BQUM0akFBQXVJd0Y0cFQ5MkFBQUtUMmxEUTFCUWFHOTBiM05vYjNBZ1NVTkRJSEJ5YjJacGJHVUFBSGphblZOblZGUHBGajMzM3ZSQ1M0aUFsRXR2VWhVSUlGSkNpNEFVa1NZcUlRa1FTb2dob2RrVlVjRVJSVVVFRzhpZ2lBT09qb0NNRlZFc0RJb0syQWZrSWFLT2c2T0lpc3I3NFh1amE5YTg5K2JOL3JYWFB1ZXM4NTJ6endmQUNBeVdTRE5STllBTXFVSWVFZUNEeDhURzRlUXVRSUVLSkhBQUVBaXpaQ0Z6L1NNQkFQaCtQRHdySXNBSHZnQUJlTk1MQ0FEQVRadkFNQnlIL3cvcVFwbGNBWUNFQWNCMGtUaExDSUFVQUVCNmprS21BRUJHQVlDZG1DWlRBS0FFQUdETFkyTGpBRkF0QUdBbmYrYlRBSUNkK0psN0FRQmJsQ0VWQWFDUkFDQVRaWWhFQUdnN0FLelBWb3BGQUZnd0FCUm1TOFE1QU5ndEFEQkpWMlpJQUxDM0FNRE9FQXV5QUFnTUFEQlJpSVVwQUFSN0FHRElJeU40QUlTWkFCUkc4bGM4OFN1dUVPY3FBQUI0bWJJOHVTUTVSWUZiQ0MxeEIxZFhMaDRvemtrWEt4UTJZUUpobWtBdXdubVpHVEtCTkEvZzg4d0FBS0NSRlJIZ2cvUDllTTRPcnM3T05vNjJEbDh0NnI4Ry95SmlZdVArNWMrcmNFQUFBT0YwZnRIK0xDK3pHb0E3Qm9CdC9xSWw3Z1JvWGd1Z2RmZUxacklQUUxVQW9PbmFWL053K0g0OFBFV2hrTG5aMmVYazVOaEt4RUpiWWNwWGZmNW53bC9BVi8xcytYNDgvUGYxNEw3aUpJRXlYWUZIQlBqZ3dzejBUS1VjejVJSmhHTGM1bzlIL0xjTC8vd2QweUxFU1dLNVdDb1U0MUVTY1k1RW1venpNcVVpaVVLU0tjVWwwdjlrNHQ4cyt3TSszelVBc0dvK0FYdVJMYWhkWXdQMlN5Y1FXSFRBNHZjQUFQSzdiOEhVS0FnRGdHaUQ0YzkzLys4Ly9VZWdKUUNBWmttU2NRQUFYa1FrTGxUS3N6L0hDQUFBUktDQktyQkJHL1RCR0N6QUJoekJCZHpCQy94Z05vUkNKTVRDUWhCQ0NtU0FISEpnS2F5Q1FpaUd6YkFkS21BdjFFQWROTUJSYUlhVGNBNHV3bFc0RGoxd0QvcGhDSjdCS0x5QkNRUkJ5QWdUWVNIYWlBRmlpbGdqamdnWG1ZWDRJY0ZJQkJLTEpDREppQlJSSWt1Uk5VZ3hVb3BVSUZWSUhmSTljZ0k1aDF4R3VwRTd5QUF5Z3Z5R3ZFY3hsSUd5VVQzVURMVkR1YWczR29SR29ndlFaSFF4bW84V29KdlFjclFhUFl3Mm9lZlFxMmdQMm84K1E4Y3d3T2dZQnpQRWJEQXV4c05Dc1Rnc0NaTmp5N0VpckF5cnhocXdWcXdEdTRuMVk4K3hkd1FTZ1VYQUNUWUVkMElnWVI1QlNGaE1XRTdZU0tnZ0hDUTBFZG9KTndrRGhGSENKeUtUcUV1MEpyb1IrY1FZWWpJeGgxaElMQ1BXRW84VEx4QjdpRVBFTnlRU2lVTXlKN21RQWtteHBGVFNFdEpHMG01U0kra3NxWnMwU0Jvams4bmFaR3V5QnptVUxDQXJ5SVhrbmVURDVEUGtHK1FoOGxzS25XSkFjYVQ0VStJb1VzcHFTaG5sRU9VMDVRWmxtREpCVmFPYVV0Mm9vVlFSTlk5YVFxMmh0bEt2VVllb0V6UjFtam5OZ3haSlM2V3RvcFhUR21nWGFQZHByK2gwdWhIZGxSNU9sOUJYMHN2cFIraVg2QVAwZHd3TmhoV0R4NGhuS0JtYkdBY1laeGwzR0srWVRLWVowNHNaeDFRd056SHJtT2VaRDVsdlZWZ3F0aXA4RlpIS0NwVktsU2FWR3lvdlZLbXFwcXJlcWd0VjgxWExWSStwWGxOOXJrWlZNMVBqcVFuVWxxdFZxcDFRNjFNYlUyZXBPNmlIcW1lb2IxUS9wSDVaL1lrR1djTk13MDlEcEZHZ3NWL2p2TVlnQzJNWnMzZ3NJV3NOcTRaMWdUWEVKckhOMlh4MktydVkvUjI3aXoycXFhRTVRek5LTTFlelV2T1VaajhINDVoeCtKeDBUZ25uS0tlWDgzNkszaFR2S2VJcEc2WTBUTGt4WlZ4cnFwYVhsbGlyU0t0UnEwZnJ2VGF1N2FlZHByMUZ1MW43Z1E1Qngwb25YQ2RIWjQvT0JaM25VOWxUM2FjS3B4Wk5QVHIxcmk2cWE2VWJvYnRFZDc5dXArNllucjVlZ0o1TWI2ZmVlYjNuK2h4OUwvMVUvVzM2cC9WSERGZ0dzd3drQnRzTXpoZzh4VFZ4Ynp3ZEw4ZmI4VkZEWGNOQVE2VmhsV0dYNFlTUnVkRThvOVZHalVZUGpHbkdYT01rNDIzR2JjYWpKZ1ltSVNaTFRlcE43cHBTVGJtbUthWTdURHRNeDgzTXphTE4xcGsxbXoweDF6TG5tK2ViMTV2ZnQyQmFlRm9zdHFpMnVHVkpzdVJhcGxudXRyeHVoVm81V2FWWVZWcGRzMGF0bmEwbDFydXR1NmNScDdsT2swNnJudFpudzdEeHRzbTJxYmNac09YWUJ0dXV0bTIyZldGblloZG50OFd1dys2VHZaTjl1bjJOL1QwSERZZlpEcXNkV2gxK2M3UnlGRHBXT3Q2YXpwenVQMzNGOUpicEwyZFl6eERQMkRQanRoUExLY1JwblZPYjAwZG5GMmU1YzRQemlJdUpTNExMTHBjK0xwc2J4dDNJdmVSS2RQVnhYZUY2MHZXZG03T2J3dTJvMjYvdU51NXA3b2Zjbjh3MG55bWVXVE56ME1QSVErQlI1ZEUvQzUrVk1HdmZySDVQUTArQlo3WG5JeTlqTDVGWHJkZXd0NlYzcXZkaDd4Yys5ajV5bitNKzR6dzMzakxlV1YvTU44QzN5TGZMVDhOdm5sK0YzME4vSS85ay8zci8wUUNuZ0NVQlp3T0pnVUdCV3dMNytIcDhJYitPUHpyYlpmYXkyZTFCaktDNVFSVkJqNEt0Z3VYQnJTRm95T3lRclNIMzU1ak9rYzVwRG9WUWZ1alcwQWRoNW1HTHczNE1KNFdIaFZlR1A0NXdpRmdhMFRHWE5YZlIzRU56MzBUNlJKWkUzcHRuTVU4NXJ5MUtOU28rcWk1cVBObzN1alM2UDhZdVpsbk0xVmlkV0Vsc1N4dzVMaXF1Tm01c3Z0Lzg3Zk9INHAzaUMrTjdGNWd2eUYxd2VhSE93dlNGcHhhcExoSXNPcFpBVEloT09KVHdRUkFxcUJhTUpmSVRkeVdPQ25uQ0hjSm5JaS9STnRHSTJFTmNLaDVPOGtncVRYcVM3Skc4Tlhra3hUT2xMT1c1aENlcGtMeE1EVXpkbXpxZUZwcDJJRzB5UFRxOU1ZT1NrWkJ4UXFvaFRaTzJaK3BuNW1aMnk2eGxoYkwreFc2THR5OGVsUWZKYTdPUXJBVlpMUXEyUXFib1ZGb28xeW9Ic21kbFYyYS96WW5LT1phcm5pdk43Y3l6eXR1UU41enZuLy90RXNJUzRaSzJwWVpMVnkwZFdPYTlyR281c2p4eGVkc0s0eFVGSzRaV0Jxdzh1SXEyS20zVlQ2dnRWNWV1ZnIwbWVrMXJnVjdCeW9MQnRRRnI2d3RWQ3VXRmZldmMxKzFkVDFndldkKzFZZnFHblJzK0ZZbUtyaFRiRjVjVmY5Z28zSGpsRzRkdnlyK1ozSlMwcWF2RXVXVFBadEptNmViZUxaNWJEcGFxbCthWERtNE4yZHEwRGQ5V3RPMzE5a1hiTDVmTktOdTdnN1pEdWFPL1BMaThaYWZKenMwN1AxU2tWUFJVK2xRMjd0TGR0V0hYK0c3UjdodDd2UFkwN05YYlc3ejMvVDdKdnR0VkFWVk4xV2JWWmZ0Sis3UDNQNjZKcXVuNGx2dHRYYTFPYlhIdHh3UFNBLzBISXc2MjE3blUxUjNTUFZSU2o5WXI2MGNPeHgrKy9wM3ZkeTBOTmcxVmpaekc0aU53UkhuazZmY0ozL2NlRFRyYWRveDdyT0VIMHg5MkhXY2RMMnBDbXZLYVJwdFRtdnRiWWx1NlQ4dyswZGJxM25yOFI5c2ZENXcwUEZsNVN2TlV5V25hNllMVGsyZnl6NHlkbFoxOWZpNzUzR0Rib3JaNzUyUE8zMm9QYisrNkVIVGgwa1gvaStjN3ZEdk9YUEs0ZFBLeTIrVVRWN2hYbXE4NlgyM3FkT284L3BQVFQ4ZTduTHVhcnJsY2E3bnVlcjIxZTJiMzZSdWVOODdkOUwxNThSYi8xdFdlT1QzZHZmTjZiL2ZGOS9YZkZ0MStjaWY5enN1NzJYY243cTI4VDd4ZjlFRHRRZGxEM1lmVlAxdiszTmp2M0g5cXdIZWc4OUhjUi9jR2hZUFAvcEgxanc5REJZK1pqOHVHRFlicm5qZytPVG5pUDNMOTZmeW5RODlrenlhZUYvNmkvc3V1RnhZdmZ2alY2OWZPMFpqUm9aZnlsNU8vYlh5bC9lckE2eG12MjhiQ3hoNit5WGd6TVY3MFZ2dnR3WGZjZHgzdm85OFBUK1I4SUg4by8yajVzZlZUMEtmN2t4bVRrLzhFQTVqei9HTXpMZHNBQUFBZ1kwaFNUUUFBZWlVQUFJQ0RBQUQ1L3dBQWdPa0FBSFV3QUFEcVlBQUFPcGdBQUJkdmtsL0ZSZ0FBQXRoSlJFRlVlTnJzbHQ5TGsxRVl4Ny92TnRlMHZYT2s3eVM3cXlXQll2bmpJa3RHVTB2REN3a3RWNEtYcHYzd0IvNEJCaUlhL1FDMXdqa1ZVeE5zVXV1dXpkMWs2aUJMQ3hJRnpjRFhPVFp3WThyMnNyMXJwNHVYWnVvZ2dyeUpmUzhlZUw2YzUzdzQ1K0U1SElvUWdvT1VDQWVzR0NBR2lBRUF5WDZMWmRuMTlYV0dZZFJxOVQ4Z2tOMXFhMjBWRGxWWmNaVVFZcHVaS1MwdEhUY2E5eXd6Nkh1cnE2cy96czZTUDJrWHdHSTJBempLcUhRNjNmdDNrNFNRcG9ZR0FNV0ZSWHZLTG1vTEFBd09EUHdkb0xkSEQyQmthT2gzODQzSjVISzU5cFRWMWR3RThHcDhmUCtPUzR0TDVyZm1INkdRa083MG9MdXpjMmp3dVNvcDJkQnJPQ3luazVLTzlQWDNaMlprTUNrcHF5dmZHSVlCY0wrOXcycWRLQ29xQ2dRQ0FIaWVGMm9mUDN4a01yMVcwSXJhdWxwdFFZSFA3d05GN2UyQk5sOERJTzM0Q1FBTmQrdTd1N29BU0VBQnFLdXBKWVJVNmE0RG9HWHhxYW9VcFp3V0E5YUpDVUpJNFFVdGdGUHFrd25TUXdENjlQcm9WeFFNQnR2YjJpaUtldERSd2ZOOEtCVGlPTzdaazZjQStub05MTXNDeU1vOHpmbjlITWZsbk1rQ3NMUzRPRDAxRFVCMzlSb2h4T2wweWhNUzRpaVIzVzZQYkxzekIzRnhjYlJDUVFoUkpDWktKQkt4V0N5VHllUnlHb0JVS3YweS94bUFUbGNwaTQrWHlXUWFqUWFBeitlYm1wd0VVRjVSRGtDbFVoVnFDM2dTbnArYml6NEhuTjhQd08vM1I1eEFnTXZOems1bWtrV1VDTURxNm5mQmR6ZzJCREN0VUFCd09sMi9mSWRBaWc0SUJvT1JLSWpuZVFWTmIzbTNpaStYaUVIcCt3enBHZWx1dC91bDBRZ2dFQWlVWFNtN2RlZjJ2WmFXdExTMGhZV3ZIK1krNVovTnk4bk5qZjVVU0NTU1NJdzQ0WERZNGRoUUtwWER3OE5paXFwdmJCd2RlVkYxb3dvQXU3YVdtbnJNMEtQZjN0NitWRkxjMU54OFB1L2M2TmlZU0NTS1Bza2V0MmQ1ZWRuajhVUWNyOWRyWDdlNzNadEN5ckpyVnFzMUhBNFRRcFpYVnJ4ZXIrQzdOOTBXaThWbXMrMGZDeXIycTRnQllvRC9BUEJ6QUk2Vk5xR1FQVXFuQUFBQUFFbEZUa1N1UW1DQyJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMy0xMS0yNCJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjMtMTEtMjQifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyJjZjM5ZWQzMmQ3NzNlOGViYTVjMDllYzQxNjAwZDhjN2ViNjkyYTgzIl0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbImNmMzllZDMyZDc3M2U4ZWJhNWMwOWVjNDE2MDBkOGM3ZWI2OTJhODMiXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ill1YmlLZXkgNSBTZXJpZXMgd2l0aCBORkMgKEVudGVycHJpc2UgUHJvZmlsZSkifSwiZGVzY3JpcHRpb24iOiJZdWJpS2V5IDUgU2VyaWVzIHdpdGggTkZDIChFbnRlcnByaXNlIFByb2ZpbGUpIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NiwicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoyfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCIsInJlbW90ZV9oYW5kbGUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURTRENDQWpDZ0F3SUJBZ0lVRHFFUncrNFJuR1NnZ3hnVWV3SkZFUERSWjNZd0RRWUpLb1pJaHZjTkFRRUxCUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURJN1huSCtadkR3TUNRVThNOFplVjVxc2N1Ymx2VllhYVJ0M1liYXhuOWdvZEx4NXN3SDBsWHJkZ2poNWg3RnBWZ0NnWVlYN0U0YmwxdmJ6VUxlbXJNV1Q4TjNXTUdVZThRQUpiQmVpb1Y3Vy9FK2hUWlAvMFNLSlZhM2V3S0JvNlVMZU1uZlFaRHJWT1JBazh3VExxMnY1TGxqNXZNajdKdE9vdEthOUo3bkhTOGtMbXpYWFNhajBTd0VQaDVPQVpVVE5WNHpzMWJ2b1RBUVFXckw0L0o5UXVLdDZXQ0ZFNW5VTmlSUWNFYlZGOG1scUsyYngyejZva1ZsdHlEVkxDeFlicFVURUx2WTF1c1IzRFRHUFVvSUNsT200Y3Jwd25EUkxWSHZqWWVQR0JCLy9wRXl6eEEvZ2NTY3hqd2FIMVpVdzliblNiSHl1cktxYlRhMUt2akFnTUJBQUdqWmpCa01CMEdBMVVkRGdRV0JCVHF0MEtRbmd4N1pIcmJWSHdEdW54T245aWhZVEFmQmdOVkhTTUVHREFXZ0JUUzd1OWFJbzA2YlZ3amx6M3loZFVtOFNWN2tqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQTRHQTFVZER3RUIvd1FFQXdJQmhqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFxUWFDV014VEdxVlZYN1NrN2trSm1VdWVUU1lLdVU2K0tCQlNnd0lSbmx3OUs3SGUxSXB4WjBoZHdwUE5pa0tqbWN5RmdGUHpoSW13SEpneHh1VDkwUHczdllPZGNKSk5rdERnMzVQWE9melNuMTVjRkF4MVJPMG1QVG1JYjhkWGlFV09wem9YdmR3WERNNDFaYUNEWU1UN3c0SVF0TXl2RTd4VUJacTJianRBbnEvTkRVQTdiZTRIOEgzaXBDKy8rTktsVXJjVWgrajQ4SzY3V0kwdTFtNkZlUXVlQkE3bjA2ajgyNXJxRHFzYUxzOVRiN0tBSEF3OFBtcldhTlBHMmtqS2VyeFBFZmVjaXZsRmF3cDJSV1p2eHJWdG4zVFYyU0J4eUNKQ2tYc05EMDVkQ0VyVkhTSklzK0JkdFRWTlk5QXd0eVBtbnliMHY0bVNUenZXZHc9PSIsIk1JSURQakNDQWlhZ0F3SUJBZ0lVWHplaUVESkVPVHQxNEY1bjBvNlpmL2JCd2lVd0RRWUpLb1pJaHZjTkFRRU5CUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTVo2L1R4TThySVQrRWFvUHZHODFvbnRNT28vMm1RMlJCd0pIUzBRWmN4VmFOWHZsMTJMVWhCWjVMbWlCU2NJWmQxUm54MW9kNTg1aCsvZGhLN2hFbTdKQUFMa0tLdHMxZk81M0tHTkxadWp6NWgzd0duY3I0aHlLRjBHNzRiL1UzSzloRTVtR05ENnpxWWNoQ1JBSGZyWU1ZUkRGNFlMMFg0RDVuR2R4dnBwQXk2bmtFbXRXbU1ud08zaTBUQXVjc3JiRTQ4NUh2R000cjBWcGdWZEpwdmdRamlUSkNUSXErRDM1aHd0VDhRREl2K25HdnBjeWk1d2NJZkNrenlDaW1KdWtoWXk2S29xTk1LUUVkcE5pU092V3lETVRNdDFid0N2RXpwdzkxdSttc1V0NHJqMGVmbk85czBaT3dkd01SRG5INHhnVWw1Wkx3cnJQa2ZDMS8wQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQjhHQTFVZEl3UVlNQmFBRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRTXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJEUVVBQTRJQkFRQzNJVy9zZ0I5cFo4YXBKTmp4dUdvWCtGa0lMa3Mwd01OcmRYTC9jb1V2c3JoenN2bDZtZVBNcmJHSkJ5SjFYbnF1QjVzZ2NSRU5GeGRRRm1hM21pbzhVcGYxb3dNMVpyZVhySjBtQURHMkJwbHFiSm54aXlZYStSMTFyZUlGVFdlSWhNTmNaS3NEWnJGQXlQdUZqQ1dTUXZKbU5XZTltRlJZRmdOaFhKS2tYSWI1SDFYZ0VEbHdpZWRZUk03Vm9sQk5sbGQ2cFJGS2xYOHVzdDZPVE1PZUFEbDJ4TkYwbTFMVGhTZGV1WHZEeUMxZzkrSUxmejNTNk9JWWdjM2lyb1JjRkQzNTRnN3JLZnU2N3FGQXc5Z0M0eWkweEJUUHJZOTVyaDQvSHFhVVlDQS9MOGxkUms2SDdYazM1RCtXVnBtcTJTaC94VDVIaUZ1aGY0d0piMGJLIiwiTUlJRFNqQ0NBaktnQXdJQkFnSVVSMzhtcTI2U2Yyc3pWVjJCZEc2V0VON2t1V1V3RFFZSktvWklodmNOQVFFTEJRQXdMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3SUJjTk1qUXhNakF4TURBd01EQXdXaGdQT1RrNU9URXlNekV5TXpVNU5UbGFNQ1l4SkRBaUJnTlZCQU1NRzFsMVltbGpieUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRUlnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTlkwV2I5b1BvUm9Lb1F5V1BhSnB6MTF2cldUZzZ6VHRtTmoyVm9LUm55dktHUnFwemI4M3c1bDZZQTk2VVlrWUJEUVAwaWxPMkRQZTZ3V3FWUjV6RGZSemRjSDhiaCtMN2RHR3ZhZTZoUlRaaGtGa0NwWERzNEhjY2tuckRmOEZDbEo3SGUzOUpmNDIvRzFRbTJ6ejlXV21yUFh0Z2lLL3gwNUdqc1FmR3VERzF6ZjVRVFVVaWU4bHd5bUszVGZkT3ZOZWVKQUFQZTJwbjdJdGZSYityVnJOV2lEemxSbjJ2Tm5aMndQbzR3SC9XSjZkaFhaRytyTVdUK2E2Qm9jZzFVZkl3NmtkdW5HNGJUcFp6c3ZhY0ZZeVIwbXBmK0RlT25wU1dBbXl3SldIdlRsZjJZWHhGeWVYY1RBQ2RRbGNNTkdKMlZoWlE0OHh0UDUvUkJQLzhrQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZDaHk0Mm9raXFjVFMxaXFhL0hSV2prQm40SC9NQjhHQTFVZEl3UVlNQmFBRk9xM1FwQ2VESHRrZXR0VWZBTzZmRTZmMktGaE1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQW4rUkhJUGJ0TUVETmRUMWc4SC9SaXRBa1VkTGdBdDF0V0dXbmxqOWtuYnY0LzRHbFg3QzlwNDVlZlBPOS9hWkw2T1YxWFJLQmk2S210Qlc1SzdudVlFbk14LzVCcUJTYkxUN3JoZHVDNDlUQmVNYjlQSGRYc1RsU1ZOWWVmcjFkR2lkcjRqMHhWQlFMYjFya25EQWJkV0R6S2Z2bmF5S084RnJ3ZTdIeDg0M01HL3JKK2MwWHJ1VXZiZlZUQ0hMaUlXaE03b05EaEw4eG9iNnhVbzlLTEtjU0wrSXRZc08zLzlXYjhROUdqc3FMNEZYc0RjRzFTYVloN0twZnVNbU9peHF6SlpPMm5JaWNQWVJnMUkyU3VpVWZZTzcwdG1kSGNibCtrU1FtU1l0N3JxNHZpSUxnMkd4M2o5cklUdVdUamJhVWFTU1F4Z09tTVNIdXl6TUFDIiwiTUlJRFNqQ0NBaktnQXdJQkFnSVVUbmJiR0lSMk5IdnpxSUtGQWVRd0cxWEJpczB3RFFZSktvWklodmNOQVFFTEJRQXdMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3SUJjTk1qUXhNakF4TURBd01EQXdXaGdQT1RrNU9URXlNekV5TXpVNU5UbGFNQ1l4SkRBaUJnTlZCQU1NRzFsMVltbGpieUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRUVnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBT3NYajNrMDRCYW40VFlkdFpLcUQvT1BKeHlEeWFQbUNCVUZVaWFaSWdUdGVabmozWDI1RGhncFpaWHNDNEQweWRJY3JsQTZ3TlVJbk9STC9MOXpCYlRFSU1BVk1HbzZnN1VLQW1iMk1GNkFIYm5oWUpkOWVpa3VwVk5XU2hITllOYzRHQmRPMVlONkFmVXF2SmhIYmUzVjRTTk1QbUJSRUtKUFZ6N1Rod2dtZ2dUZThXczJLMC93c3F2MndTRTdwYkNCc1VaaElYNTFiWk0zcHFEd0pQVG1SRkV2dDAvNnRHNWVPOEYzajE0T1hxZkVobWpuMVZ2eEtEWVFPTFpBeEN3d2dDMFA0Q2RmV3YzeThQU1I4STM1NGhPMVkrR3pOanZJcVgzOE5LTHl3dUlZSEZlck94Tmx4RU1CdkZoWUJ1UnVZQWtrZ1VhUHFONlVCaHNJTHJzQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZDQ29SSGhpeU5uYm5YUldJTDZaQlhvQlg5WVRNQjhHQTFVZEl3UVlNQmFBRkNBb1VDRWJwRnBiNkZQTG5aM0Y1UHhzTDNvZk1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQ1FGYWZKSTEvNVdnOUNFRWltRTFSUDU0UmdRd1ROVE9PUXNMQUNUZStySXRsRlF6QzlaRGhyVjgyOHlYN2p6eStBQXNwM2l6SzdUMXRoMmRsN20rdHUwc3cyUGEvb2xjMDJudDZQeUl3MzQ4Z2FIemhJMSswS0U0NXF4dkZEZUwybE14YlBmQ1l2eUVFYVl6amlRRUxVNTk1MXBYR1d5S01hLzRmTHRPK1pLT1hoTXVWZXE0clhEUEk1NFc2SkhPaUFhaUtkaXcrNWUzYzJrdC9qRklRdE02dk1YZzlMTkZ6ZGpFVE50MjBWWDlRZXZScEZaZnVjTUc5d0NhUURvRmxQenBUTUpLaFBldi9pbUptWlloS2ZyMGxMY2VtdHFqSXhMQW9xWmRPWWZIQmc2K3ZBY2RQSS9pYXVHcFVBdjdYK1VLTm1Ed2paMkJhSDRzTHdoQjJtIiwiTUlJRFNEQ0NBakNnQXdJQkFnSVVVY21NWHpSSUZPZ0dUSzBUYjNnRXVaWVprQkl3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRRG01NTViV1k5V1crdE9ZMHJJV0hsZGgrYU5hbm9DWkNGaDdHazNZWnJRbVBVdzBoa1NHNnFZSFF0UCtmWnlTMzNWRXJ2ZytCUXFubXVtZ05oZnhGcmt3RVpFTGVpZEJjQzhDNEFnNG5xcWlQV3B6c3ZJMTdOY3hZbEluTE5MRmNaWS8rZ09pTjZaT1RpaE81L3ZCWk1iajlyaWFBY3FsaVltTkdKUGdUY01HYUVBeU16RU1OeTJubTZFcCtwalA1YUY2Z2kyMXQvVVFGc3VKMWoyUmoveW5NL1NkUnQrZWNhbDVPWW90eEhrRmJMOXZ2djJBMk92NUlUWkNsdzRiT1M5bnB5cFFpbU9aNVFBWXl0bVlhUXBXbC9wTVl6NnpTajhScWtWRE5FSkdxTmZUS0EyaXZMWXdYNmxTdHRNUGFwZzBKODRsOVgwdm9WTi9GcFM0VkNWQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJRZ0tGQWhHNlJhVytoVHk1MmR4ZVQ4YkM5Nkh6QWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQVlNemdMckpMSXIwT292UW5BWnJSSUd1YWJpSFNVS1NtYkxSV3BSa1dlQXRzQ2hERUhwWGNKL2JnRE5LWVdvSHFROHhSVWpCNEN5ZXBZZXZjM1lsckc4bzd6SHhwZlZjYW9MNVNldUprekh4S240YlRhU3A5K012d2FtbnA2NGtaTWlOYkZMa25mUDlrWUtvUkhrTVdoZVJKMVVzUDF6NFNjbWtDZUlMZnNNczZ2cW92cWpXQ2xGc0pwQmNzbHVZSFdGN2JCSjFuNFJ3ZytBVEVvcFk0SWdHdjZadndjK0E5citBVDJocXBvU2tZb0FsK0FOWXdnc2xPZjlzSmUwVitUQTlZWS9VbGFCbVBQVGQwLy9yOXd2Y2VQV1prUGpLb0FDL3pVTmhmRGJoNExWOEdIczNseVgyWG9tTC9MTmM4Sll6eUlhREVoR1F2ZW9QaGgvdHIxZz09IiwiTUlJRFJ6Q0NBakdnQXdJQkFnSVVleDluVDl2d1pOWFM0ODNMZGlZR2Z3MlNqU293Q3dZSktvWklodmNOQVFFTE1DNHhMREFxQmdOVkJBTU1JMWwxWW1samJ5QkJkSFJsYzNSaGRHbHZiaUJKYm5SbGNtMWxaR2xoZEdVZ1FpQXhNQ0FYRFRJMU1EZ3dNVEF3TURBd01Gb1lEems1T1RreE1qTXhNak0xT1RVNVdqQW5NU1V3SXdZRFZRUUREQnhaZFdKcFkyOGdSa2xFVHlCQmRIUmxjM1JoZEdsdmJpQkNNaUF4TUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUF1MU1ldm55OWR5TzlaVUMzOVNvTWhMY1IvRFhydEYvY2lNMTJ0Y2l5MkVYQVo2TWtyaXZWdENmRVZNOVg2SVNURW5CUDZ1U1lZb3Y2cHB2Nk82SmgyTkhtWW00dytKblM0Vm5DUFU3bUhBTWZWSTJNR1RUTVZPZXcweFVzRzdzSVNJa0lEVUJtdWs4WUs5YzV6aWM5K3ZGUUdMSWtzZFhPNWlWRklnTkc1M2NHWEQ0Wkxab0FQaXUwUEVvenhBcVlJYUk0Z3hLaE9BM1M4L1c4bUlXc3U2b2Z5ajRHdmtGRzZaN2t5RjMxMDdQN213RkhMckkzRU5hUFdNT0ZjVGFHYTBkdysvdlZSd2pSY0VaQlZzdXVULzg3Y2tTczBhNXBrdDN2WkJsYVllVDhwelNyZVY3bW93Y0lNOTBMMmlhQVRsUDBueG1hRTZuT3lUYm9qRlZsMndJREFRQUJvMll3WkRBZEJnTlZIUTRFRmdRVVNYRWgzc2EzYnREdXJtNE1NL0M3UzFsUnV1WXdId1lEVlIwakJCZ3dGb0FVNnJkQ2tKNE1lMlI2MjFSOEE3cDhUcC9Zb1dFd0VnWURWUjBUQVFIL0JBZ3dCZ0VCL3dJQkFEQU9CZ05WSFE4QkFmOEVCQU1DQVlZd0N3WUpLb1pJaHZjTkFRRUxBNElCQVFCNUdjM2hhZnRwN2hLc0Vac28raS9aNW5SdXFkbXpHMldDbFVvUlVxYmFQeWdsbkpEaktSL2tmZ09sNmliYkYvenRobTNLbVhRN0hjRElQMnhNZEc3VTJMMmltYkpRSHFQZi9oMkhxb2piNHJaZ3VlKzZXNGt0U1I1ZWxSOUwxcllxRS9TR1lNNGlFS29WUVN2N1JUMXJ4SWVXaUtzdy9WeHhpL1FPbnN4M0Y3eDgwQ0NZZ0I0RTN5UXg4VlRXNDQwaFRFd1RBMWVNSE9peDMydFB0eXlISWE4UFZWSWZWcEhRSkJhTVZ2djUwOFVFandrYlUycm5qZnpvU1ROUzlBNWpVUThtQlN2ZTk1cmpCMGRvOThFVStEeGRCcVgyK0g2aTV3bElDRmd6aGR6Y3NuZTloR0tUNmx6VFg0Y0lkSnNyWTIreGxlSzBGRlF5NmxHRVZMRWUiXSwiaWNvbiI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsImljb25EYXJrIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwicHJvdmlkZXJMb2dvTGlnaHQiOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJwcm92aWRlckxvZ29EYXJrIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09In0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMTItMjIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2LCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ill1YmlLZXkgNSBTZXJpZXMgd2l0aCBORkMgKEVudGVycHJpc2UgUHJvZmlsZSkiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlUyRjEwMDAyMDI0MTIyMjAwMiIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTEyLTIyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3Nn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wMi0wNiJ9LHsiYWFndWlkIjoiNThiNDRkMGItMGE3Yy1mMzNhLWZkNDgtZjcxNTNjODcxMzUyIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI1OGI0NGQwYi0wYTdjLWYzM2EtZmQ0OC1mNzE1M2M4NzEzNTIiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiTGVkZ2VyIE5hbm8gUyBQbHVzIEZJRE8yIEF1dGhlbnRpY2F0b3IifSwiZGVzY3JpcHRpb24iOiJMZWRnZXIgTmFubyBTIFBsdXMgRklETzIgQXV0aGVudGljYXRvciIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxMDYwNSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbImVkMjU1MTlfZWRkc2Ffc2hhNTEyX3JhdyIsInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Iiwic2VjcDI1NmsxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfaW50ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MTAsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6MywiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9pbnRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjozLCJibG9ja1Nsb3dkb3duIjowfX1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOlsiYW55IiwiaGFyZHdhcmUiXSwidGNEaXNwbGF5Q29udGVudFR5cGUiOiJ0ZXh0L3BsYWluIiwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUJnVENDQVNjQ0ZGTTFRQ0RYZzEyMkY5Y3ZXRlZtcWVHWDN0UVdNQW9HQ0NxR1NNNDlCQU1DTUVNeEN6QUpCZ05WQkFZVEFrWlNNUTh3RFFZRFZRUUtEQVpNWldSblpYSXhJekFoQmdOVkJBTU1Ha3hsWkdkbGNpQkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFTkJNQjRYRFRJME1EVXpNREUwTVRrME1Gb1hEVE0wTURVeU9ERTBNVGswTUZvd1F6RUxNQWtHQTFVRUJoTUNSbEl4RHpBTkJnTlZCQW9NQmt4bFpHZGxjakVqTUNFR0ExVUVBd3dhVEdWa1oyVnlJRVpKUkU4Z1FYUjBaWE4wWVhScGIyNGdRMEV3V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVRLN25YeUg0cGdOM1RNd0NXU29NRFJlNEVWOEpsM1h6dWhpY1ovMmd2aCt6ejNXbVcwT1ovRWNSWUVBOEYyNmNlZXVNY2QyMVdRUlJLV3BqV0QrSldpTUFvR0NDcUdTTTQ5QkFNQ0EwZ0FNRVVDSVFEOEorMC9iOFBlWWpGUlFZa1VSY3FoYXgyN29sdzFqWS9wYnNraEJ1UnA0QUlnT0FIYjZuKzdmTmZmeW94cGVDcTNWWjdCMWpOM3dxbVBOZm5hZUFqZG9Ycz0iLCJNSUlCZ1RDQ0FTY0NGQmxvMHM1UVlGZFhiZnVzUmRRZW9MWDZRZW5sTUFvR0NDcUdTTTQ5QkFNQ01FTXhDekFKQmdOVkJBWVRBa1pTTVE4d0RRWURWUVFLREFaTVpXUm5aWEl4SXpBaEJnTlZCQU1NR2t4bFpHZGxjaUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRU5CTUI0WERUSXpNREl5TXpFd016TXdPRm9YRFRNek1ESXlNREV3TXpNd09Gb3dRekVMTUFrR0ExVUVCaE1DUmxJeER6QU5CZ05WQkFvTUJreGxaR2RsY2pFak1DRUdBMVVFQXd3YVRHVmtaMlZ5SUVaSlJFOGdRWFIwWlhOMFlYUnBiMjRnUTBFd1dUQVRCZ2NxaGtqT1BRSUJCZ2dxaGtqT1BRTUJCd05DQUFUSzduWHlINHBnTjNUTXdDV1NvTURSZTRFVjhKbDNYenVoaWNaLzJndmgrenozV21XME9aL0VjUllFQThGMjZjZWV1TWNkMjFXUVJSS1dwaldEK0pXaU1Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lRQ3djc0h1TDhaRkwzRk55VS9ET1FuM2JteDA4bG5uME81Umt0TGJPbm9QSFFJZ09FaTZJbUFaMTgxcThSSmlMMGhidzdacXV1bmlScTZmaldqR29CdTFNb289Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQVNZQUFBRUFDQVlBQUFBZU1kdnhBQUFBQVhOU1IwSUFyczRjNlFBQUFJUmxXRWxtVFUwQUtnQUFBQWdBQlFFU0FBTUFBQUFCQUFFQUFBRWFBQVVBQUFBQkFBQUFTZ0ViQUFVQUFBQUJBQUFBVWdFb0FBTUFBQUFCQUFJQUFJZHBBQVFBQUFBQkFBQUFXZ0FBQUFBQUFBRXNBQUFBQVFBQUFTd0FBQUFCQUFPZ0FRQURBQUFBQVFBQkFBQ2dBZ0FFQUFBQUFRQUFBU2FnQXdBRUFBQUFBUUFBQVFBQUFBQUFlNlNDa3dBQUFBbHdTRmx6QUFBdUl3QUFMaU1CZUtVL2RnQUFBVmxwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFBRHg0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJbGhOVUNCRGIzSmxJRFl1TUM0d0lqNEtJQ0FnUEhKa1pqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWo0S0lDQWdJQ0FnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJS0lDQWdJQ0FnSUNBZ0lDQWdlRzFzYm5NNmRHbG1aajBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5MGFXWm1MekV1TUM4aVBnb2dJQ0FnSUNBZ0lDQThkR2xtWmpwUGNtbGxiblJoZEdsdmJqNHhQQzkwYVdabU9rOXlhV1Z1ZEdGMGFXOXVQZ29nSUNBZ0lDQThMM0prWmpwRVpYTmpjbWx3ZEdsdmJqNEtJQ0FnUEM5eVpHWTZVa1JHUGdvOEwzZzZlRzF3YldWMFlUNEtHVjdoQndBQUQ2NUpSRUZVZUFIdDNMdU9KR2NWQi9CZDltSUhOaExpSWhPUU9FYUNDRGtpSUNORzRnMzhDandKQ1FsQ0JBU0lCTjZDaEFnSkpFUmlKQXZaQW95eGZGbnZoZS9zOUpGcWUzdG11azkvcDZkNjUxZlNOMVZkVmVkVXphOXEvbDI5OXN5ZE8zZnV2RC9Hc3pHZWJPYXhiS3pYNE5IbSt2eHF6R042Y0RIemRTRndmN1A4OHpHUGV6bk4zTmZydmEvajJqemRYSzlQdnpJV1RBUUlFRmlWZ0dCYTFlVndNZ1FJaElCZ2NoOFFJTEE2QWNHMHVrdmloQWdRRUV6dUFRSUVWaWNnbUZaM1Nad1FBUUtDeVQxQWdNRHFCQVRUNmk2SkV5SkFRREM1QndnUVdKMkFZRnJkSlhGQ0JBZ0lKdmNBQVFLckV4Qk1xN3NrVG9nQUFjSGtIcmd0QXZGTG9xWXpFUkJNWjNLaEZxZDVkN09jODhVbWk1Y0loQld2UzNEV3VEci9QTVF4NSthZDZCaTl3MnZUTytlSGQ3ZzlGV21VZjA3ajluem5OLytkSHZWR0VNWHg5NWkrUFVaY3ZIMmZvUEtDUi8xUHgvampHRytPRVgvVDZhZ1RHdldtcXdYQy90NFkveGtqcmwxNDUvVVlpNlloa0NadmplVnZqUEY0czI3TVRFMENjUS9HZzg3SFkzeC9qTitQRVZPczN6Y1RjdC9QWmp3eC9XVWMrTDA0QTlQSkJmSUg4T1FIWHZrQjh3Yi81empQR0tiVENqdzg5bkF6Z3VtTnpVbkV5Y1FUazZsZklBSXBubkJqbUhZTFJEakZKNEFZc1d6cUY0aS9wdnI1R0prSjVTUE9DS1lNbzVqbmN2bUVGQktZS0NDOEoyTHUwU28vc3NWSDU2T21mZjlONmFpREtDWkE0RllKWkVDVnYybkJWS1pUU0lCQWw0Qmc2cExWbHdDQnNvQmdLdE1wSkVDZ1MwQXdkY25xUzRCQVdVQXdsZWtVRWlEUUpTQ1l1bVQxSlVDZ0xDQ1l5blFLQ1JEb0VoQk1YYkw2RWlCUUZoQk1aVHFGQkFoMENRaW1MbGw5Q1JBb0N3aW1NcDFDQWdTNkJBUlRsNnkrQkFpVUJRUlRtVTRoQVFKZEFvS3BTMVpmQWdUS0FvS3BUS2VRQUlFdUFjSFVKYXN2QVFKbEFjRlVwbE5JZ0VDWGdHRHFrdFdYQUlHeWdHQXEweWtrUUtCTFFEQjF5ZXBMZ0VCWlFEQ1Y2UlFTSU5BbElKaTZaUFVsUUtBc0lKaktkQW9KRU9nU0VFeGRzdm9TSUZBV0VFeGxPb1VFQ0hRSkNLWXVXWDBKRUNnTENLWXluVUlDQkxvRUJGT1hyTDRFQ0pRRkJGT1pUaUVCQWwwQ2dxbExWbDhDQk1vQ2dxbE1wNUFBZ1M0QndkUWxxeThCQW1VQndWU21VMGlBUUplQVlPcVMxWmNBZ2JLQVlDclRLU1JBb0V0QU1IWEo2a3VBUUZsQU1KWHBGQklnMENVZ21McGs5U1ZBb0N3Z21NcDBDZ2tRNkJJUVRGMnkraElnVUJZUVRHVTZoUVFJZEFrSXBpNVpmUWtRS0FzSXBqS2RRZ0lFdWdRRVU1ZXN2Z1FJbEFVRVU1bE9JUUVDWFFLQ3FVdFdYd0lFeWdLQ3FVeW5rQUNCTGdIQjFDV3JMd0VDWlFIQlZLWlRTSUJBbDhEOTBmakxUZk5IWTM1dmpHZWIxM2QzTEMvWHhXNFBGL3ZFYTlQcEJPSmFQQmdqcjljaFI4N3JtTmYra0ZyN0VyaE9JTzdKdkxmeS9zeDdMbXFYeTh2WHNlL3pUSW92MzR3dFkzcjlZbmJ3MS9qaE1KMVdJQzlzdkptWUNLeEZJTzdMbUNKWGpzbUZyMGFEWDQ4UjRSUTMrYjRmN1RJRjQrQWZqQkZUcnJ0NDVXdVhRSWJTdDhZQmZqekc0OFdCY2x1c3lwdGtlVjF5ZTF6My80N3hoekdlam1FaU1FTWc3NlYvajJhLzNUU00reS92eGV1T0VmdEdCbjF4M1k3N2J0LzN3UHYyczkvbEF2RnhPNllmalJFWHNqbytITFh4VVR3bTErL0N3ZGZqQmFiY1MvSE9HUWwxVExOSXlmamhNSjFXSUorVTRyTjhYTDk5cjJGY3IzalMvV2dNMTIwZ21LWUs1RDJWYjZDVjVzOGltUElkdDlJZ2F2SkVxdlhxamhPSUcyRGZVRnJ1dCsvSDl1UE9UdlZ0RmNpUGRhWHZQNE9wVkt4b1ZRTEwwTG5xeEhLL25GKzFyMjBFcWdKSFBiQjQxNnl5cXlOQW9FMUFNTFhSYWt5QVFGVkFNRlhsMUJFZzBDWWdtTnBvTlNaQW9Db2dtS3B5NmdnUWFCTVFURzIwR2hNZ1VCVVFURlU1ZFFRSXRBa0lwalphalFrUXFBb0lwcXFjT2dJRTJnUUVVeHV0eGdRSVZBVUVVMVZPSFFFQ2JRS0NxWTFXWXdJRXFnS0NxU3FuamdDQk5nSEIxRWFyTVFFQ1ZRSEJWSlZUUjRCQW00QmdhcVBWbUFDQnFvQmdxc3FwSTBDZ1RVQXd0ZEZxVElCQVZVQXdWZVhVRVNEUUppQ1kybWcxSmtDZ0tpQ1lxbkxxQ0JCb0V4Qk1iYlFhRXlCUUZSQk1WVGwxQkFpMENRaW1ObHFOQ1JDb0NnaW1xcHc2QWdUYUJBUlRHNjNHQkFoVUJRUlRWVTRkQVFKdEFvS3BqVlpqQWdTcUFvS3BLcWVPQUlFMkFjSFVScXN4QVFKVkFjRlVsVk5IZ0VDYmdHQnFvOVdZQUlHcWdHQ3F5cWtqUUtCTlFEQzEwV3BNZ0VCVlFEQlY1ZFFSSU5BbUlKamFhRFVtUUtBcUlKaXFjdW9JRUdnVEVFeHR0Qm9USUZBVkVFeFZPWFVFQ0xRSkNLWTJXbzBKRUtnS0NLYXFuRG9DQk5vRUJGTWJyY1lFQ0ZRRkJGTlZUaDBCQW0wQ2dxbU5WbU1DQktvQ2dxa3FwNDRBZ1RZQndkUkdxekVCQWxVQndWU1ZVMGVBUUp1QVlHcWoxWmdBZ2FxQVlLcktxU05Bb0UxQU1MWFJha3lBUUZWQU1GWGwxQkVnMENZZ21OcG9OU1pBb0NvZ21LcHk2Z2dRYUJNUVRHMjBHaE1nVUJVUVRGVTVkUVFJdEFrSXBqWmFqUWtRcUFvSXBxcWNPZ0lFMmdRRVV4dXR4Z1FJVkFVRVUxVk9IUUVDYlFLQ3FZMVdZd0lFcWdLQ3FTcW5qZ0NCTmdIQjFFYXJNUUVDVlFIQlZKVlRSNEJBbTRCZ2FxUFZtQUNCcW9CZ3FzcXBJMENnVFVBd3RkRnFUSUJBVlVBd1ZlWFVFU0RRSmlDWTJtZzFKa0NnS2lDWXFuTHFDQkJvRXhCTWJiUWFFeUJRRlJCTVZUbDFCQWkwQ1FpbU5scU5DUkNvQ2dpbXFwdzZBZ1RhQkFSVEc2M0dCQWhVQlFSVFZVNGRBUUp0QW9LcGpWWmpBZ1NxQW9LcEtxZU9BSUUyQWNIVVJxc3hBUUpWQWNGVWxWTkhnRUNiZ0dCcW85V1lBSUdxZ0dDcXlxa2pRS0JOUURDMTBXcE1nRUJWUURCVjVkUVJJTkFtSUpqYWFEVW1RS0FxSUppcWN1b0lFR2dURUV4dHRCb1RJRkFWRUV4Vk9YVUVDTFFKQ0tZMldvMEpFS2dLQ0thcW5Eb0NCTm9FN3JkMTF2Z2NCT0w2UHhuajNoalB6dUdFRHp6SHAyUC9HS1l6RXhCTVozYkJKcHh1QmxBRTBtZWJmcS95RCsvZDhUM205enlCVDR0VENBaW1VeWl2NnhqeGd4clRtMlA4Wkl3dng0aVA5Sy9TRDI5OEw2K044YWN4L2o2R2NCb0lKZ0tkQXZHeEs2WWZqaEUvZ1BIa0UwODhzYnp2T0hUL2ZmdXViYitmRFpPWUhsek1mRDBYQVU5TTUzS2w1cDVuUGpWbFFPWHJDSmFZZHIyT2Jjc25qMXpPZlo4WDd2aXk3Sms5Y3JmY0ZxK1hmWEsvM0w3Y2xyVTVYKzZUeTQvSHhuaGkraUozTWo4dkFjRjBYdGRyOXRuR0QvenloMzY1SE1kYXZzN2xuRzl2ajllN3BxdjJYMjViMXViNm5DKzNiUzh2OThubC9LL04rWHE3eHV1VkN3aW1sVitnNXRON1ZYOXdYOVh2cS9sMldFLzdmR2RaenhrNUV3TEhDZVRIdWVPNnFMNVJBY0Ywby93TzNpRGdhYWtCOWRRdEJkT3B4UjJ2VzhBVFU3ZndDZm9McGhNZ084UkpCVHd4blpTNzUyQ0NxY2RWVndJRWpoQVFURWZnS1YybGdJOXlxN3dzaDUyVVlEck15OTdyRi9CUmJ2M1g2Tm96alArUDZkZ0w2UjNxV3ViV0hmaS95QnNlVEY0MHVZbFhSK1dLSjZhYnVHUTl4OHdmeHB6blVTNzdRZDNlTC9lUCtYTGJjam0zNWJyTDV0a3J0eC82ZWxrWHk4dlgyU3ZueSsyNVg4NXpIL016RTRnbkpoZnh6QzdhNW5UemwzbHpudC9GOWp2Vjl1dkw5c3YxTVYvV0xKY3YyNWI3NUR4N1ZWOHY2NWJMMlhjNVgyN1A1WWViSGZ6eTdsTHF0TXRINVVwY3lOK044ZFlZajhhSUo2aERHa2F3dlR2R1h6ZTE4VXVocGw2QnVHWnhqYjQyeGcvR2lMOHVFRlArVUY2OHV0MWY0ejZNWCtMOTh4anZqWkZtWTlIVUtCQnZrbkUvdmozR0x6ZkhPU1JQWXQvbzhYblVmanhHcktpT2Q2TEptTGJmdVMvVyt0b2hJSVQyVjJXMXY5V3hlK1lUNnZkR28ycWVQSytMSjU2UHhvZy9HcFpQVEdQeDJpbUtZNG9UaVQ4eFlUcXRRUGpIRDV3M2c2dmQ0OG5KVS96VlJqTzNaaTdFVTFNK3llZTZmWTRUKzBZbWZSSmZZc1FVODMzL01YeDVNTzlJei9sTy9pV3VnVGVGazdNNzRCNEN5emZOdUUvM3pZamM5LzYrUWJUSHVkaUZBQUVDY3dRRTB4eEhYUWdRbUNnZ21DWmlha1dBd0J3QndUVEhVUmNDQkNZS0NLYUptRm9SSURCSFFERE5jZFNGQUlHSkFvSnBJcVpXQkFqTUVSQk1jeHgxSVVCZ29vQmdtb2lwRlFFQ2N3UUUweHhIWFFnUW1DZ2dtQ1ppYWtXQXdCd0J3VFRIVVJjQ0JDWUtDS2FKbUZvUklEQkhRREROY2RTRkFJR0pBb0pwSXFaV0JBak1FUkJNY3h4MUlVQmdvb0JnbW9pcEZRRUNjd1FFMHh4SFhRZ1FtQ2dnbUNaaWFrV0F3QndCd1RUSFVSY0NCQ1lLQ0thSm1Gb1JJREJIUURETmNkU0ZBSUdKQW9KcElxWldCQWpNRVJCTWN4eDFJVUJnb29CZ21vaXBGUUVDY3dRRTB4eEhYUWdRbUNnZ21DWmlha1dBd0J3QndUVEhVUmNDQkNZS0NLYUptRm9SSURCSFFERE5jZFNGQUlHSkFvSnBJcVpXQkFqTUVSQk1jeHgxSVVCZ29vQmdtb2lwRlFFQ2N3UUUweHhIWFFnUW1DZ2dtQ1ppYWtXQXdCd0J3VFRIVVJjQ0JDWUtDS2FKbUZvUklEQkhRREROY2RTRkFJR0pBb0pwSXFaV0JBak1FUkJNY3h4MUlVQmdvb0JnbW9pcEZRRUNjd1FFMHh4SFhRZ1FtQ2dnbUNaaWFrV0F3QndCd1RUSFVSY0NCQ1lLQ0thSm1Gb1JJREJIUURETmNkU0ZBSUdKQW9KcElxWldCQWpNRVJCTWN4eDFJVUJnb29CZ21vaXBGUUVDY3dRRTB4eEhYUWdRbUNod2YwS3ZETGQ3RTNwcHNiL0FzN0hyMC8xM3Y1Vjd4cjE1OTFaKzV6ZnpUVWVlUEI3ajZDeVlFVXlmYkF3ZTNZekZyVDVxL05CRlFKbGVGZ2did2YyeVMrZWFKNXZtSHg5N2tCbkI5TTQ0aVlkanZERkduSmgzcUlIUU9FVVFQUmpqL1RIK05vWndHZ2hiVTVxOFBkWi9aNHd2eDNCZmJpRk5maG4zWmVUSi84YjQ3b3plY1lOSDB3aVZtQnZuWWZDYmNhMWlpcEF5dlNpUWI3aS9HS3ZkeitkakVFKzRjYjArelF2NDRtVTk3RlZlK01PcTdGMFJpSGY5ZVBlUEo5UXZLZzF1V1UzKzgwTE1aOXpydDR5di9PM0dmWHJVRStxTWk1VW5rUFB0N3lhQ0s3Zmxjc3hqaXZXNTd2bUtIVjkyYmM5MXl6N0wwdHdlNjViTCtYcTVieXh2bjkvMjluaWR4NHJsN2ZOZUhpT1h0K2ZiUGVKMVRNdGpYNnpadlM3M3pmMXpualhtTHd1a1VjeVh5M2x0b2lLV1k4cnR5MjBYVzE3OHV0dy85ODM1Y3MvdGRmazY1MWZ0bTl0aTM1emkvUEwxdnVlYXRZY2NNMnR5bnJVNXovVXgzN1Z1dWIyOFBDT1k0dUFKdGV0RWx0dHlPZWZYMVY2MlBldHp2bjNjNWZybDhtWDlzbjU3MzF5L3EyNjU3NjdsWEpmelhUMnU2bi9kL3N0YXk5Y0xYSFlkbHV2M01WL3VuOHM1WDU3RjlycDhuZk9yOXMxdDIvdGU5enJydHVmYmRiRjkxN3J0dXVWK3UvYmZ0VzVYajRQWDVYL3FQN2hRQVFFQ0JMb0VCRk9Yckw0RUNKUUZCRk9aVGlFQkFsMENncWxMVmw4Q0JNb0NncWxNcDVBQWdTNEJ3ZFFscXk4QkFtVUJ3VlNtVTBpQVFKZUFZT3FTMVpjQWdiS0FZQ3JUM1ZoaDIvL1VkbVBma1FNVDJCS0kvL003L3pSRXpyZDI4WEpsQXZITDFuSGQ0dGNCVEZjTHBGSGMyKzd2cTYzV3NEV3VWL3d0cDZkeGc3KytPYU5adjU2eWFXZldKUERhcG0vOElxL3Bhb0g4eXd0cGR2WGV0cTVGNFBVSW8zOXN6dWJ6TWZmUmJpMlg1dkx6aUw4UStQVXhQdHpza2s4RmwxZmN2aTFwOHEveHJjZDkvY0VZY2EvN0dEd1FWanpsRTlPbi93ZWJhMFY1VTZXSnFnQUFBQUJKUlU1RXJrSmdnZz09IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiXSwiZXh0ZW5zaW9ucyI6WyJobWFjLXNlY3JldCIsInR4QXV0aFNpbXBsZSJdLCJhYWd1aWQiOiI1OGI0NGQwYjBhN2NmMzNhZmQ0OGY3MTUzYzg3MTM1MiIsIm9wdGlvbnMiOnsicmsiOnRydWUsImNsaWVudFBpbiI6dHJ1ZSwidXAiOnRydWUsInV2Ijp0cnVlfSwibWF4TXNnU2l6ZSI6MTAyNCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMV19fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiTk9UX0ZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjMtMDktMTgifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIzLTA5LTE4In0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiMzhmNmMxOGExODI1ZDAxYzgyYjZjNDY2M2Q0MjgxMjI3MWJkM2JkNyJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyIzOGY2YzE4YTE4MjVkMDFjODJiNmM0NjYzZDQyODEyMjcxYmQzYmQ3Il0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJUb2tlbiBSaW5nIDMgRklETzIgQXV0aGVudGljYXRvciJ9LCJkZXNjcmlwdGlvbiI6IlRva2VuIFJpbmcgMyBGSURPMiBBdXRoZW50aWNhdG9yIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6Mn1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNPekNDQWVHZ0F3SUJBZ0lVSVUzem12QlhnMXlKSmcxTnAvRHg4VHQzRWc4d0NnWUlLb1pJemowRUF3SXdkekVMTUFrR0ExVUVCaE1DVlZNeEVUQVBCZ05WQkFnTUNFNWxkeUJaYjNKck1SWXdGQVlEVlFRS0RBMVViMnRsYm1sNlpTQkpibU11TVNJd0lBWURWUVFMREJsQmRYUm9aVzUwYVdOaGRHOXlJRUYwZEdWemRHRjBhVzl1TVJrd0Z3WURWUVFEREJCVWIydGxiaUJTYVc1bklFTkJJREF3TUNBWERUSTBNRGd6TURBek1ETTFPVm9ZRHpJd05UZ3dPREl5TURNd016VTVXakJ6TVFzd0NRWURWUVFHRXdKVlV6RVJNQThHQTFVRUNBd0lUbVYzSUZsdmNtc3hGakFVQmdOVkJBb01EVlJ2YTJWdWFYcGxJRWx1WXk0eElqQWdCZ05WQkFzTUdVRjFkR2hsYm5ScFkyRjBiM0lnUVhSMFpYTjBZWFJwYjI0eEZUQVRCZ05WQkFNTURGUnZhMlZ1SUZKcGJtY2dNekJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCSllIYjBYQjRtT1NCOGRITDd6TjZBRE1xRjY5VzA5ZjV4bVhvOE1KdkFJRUVDSTFaVmVScGUwUEVHall2SWhjQkN6MU5pcVRNK3NGaDRrTkJrTzZYN3lqVFRCTE1Ba0dBMVVkRXdRQ01BQXdIUVlEVlIwT0JCWUVGRGoyd1lvWUpkQWNncmJFWmoxQ2dTSnh2VHZYTUI4R0ExVWRJd1FZTUJhQUZPZ2FlcXk5K0tBVHdrc3g0cFpnUXNwdjZKWENNQW9HQ0NxR1NNNDlCQU1DQTBnQU1FVUNJQ2JtS2dQMzg3MFZUR2ZjampTUFZVazlpV1laMG5Qb2dUeWxsQTYyS2N6MkFpRUFycGpVZUtYbEZDVVR6RFAwRnp6YlJWVnorTC9qL0dlM29rOC9XVWtHVGlJPSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFGZ0FBQUJZQ0FJQUFBRCs5NmRqQUFBQUJHZEJUVUVBQUxHUEMveGhCUUFBQUNCalNGSk5BQUI2SmdBQWdJUUFBUG9BQUFDQTZBQUFkVEFBQU9wZ0FBQTZtQUFBRjNDY3VsRThBQUFBQm1KTFIwUUEvd0QvQVArZ3ZhZVRBQUFBQ1hCSVdYTUFBQzRqQUFBdUl3RjRwVDkyQUFBQUIzUkpUVVVINWdZZUZTa2hJWTFwSFFBQURPSkpSRUZVZU5ydG5HbVFIVlVWeC8vbmR2ZGJNbGtuNjB5WUxBUVNod0VTWmdLVGhGQ0laZHhLbGhLQnNKUlVMRDhvU29FTFdxV0JLa3Y0UU9rSFRaVmc0VklLV0FxQ1F2RWhvcVdncUNSRWxoQUlpK0RBWkFKWkp5U1RlZjNlNis1ei9IQnZMeS9Kek9zM21abDByTnlxdkNTejlPdjc2M1BQLzMvT3ZUTWtJamcxQUhXaWJ5QXI0eFFJTTA2Qk1PTVVDRE5PZ1RERFB0RTNrSG9JUUFBZ2dVQUVSRWdqZHdUenhRcEVKQ0pFZE93dlBMbmtjNWlaSE9jNE9TSkN6MThDSVl2Mi9tbjNya2QzMmxNZEJDa2VJUkZFcXYzVkpkL3JLTXd0Q2d1cFkzTThDVUFZQ2o2VHJRNi9kbWpyNTdZRUZWWU9nVk53Y01qZFZWcTh2cU13dHlnaUdEcVlzcjQwa3JIZ2ZWRDkxK3EvQlFPZU15MG4vbkN6QWdBQjVWUzV0OVI2WFZ2SGhtV290Nnd5SFJHR0FndFpCT0RGdGM5VjkxYnlzL0pCT2FqN3ZjcFI1WjN1bE9YVERBVVdVc01seXd5REVKUG45ZjllK2ZLTEJ6YjFGK2NWdWNyRDUwc1JJVnY1aDd6Y3pIem53OTBBZEVBTkh4RVo5aEg2bmhta3FHZkRXMzMzOXhiYmlseGxRajBLaXFUS1hPWE9oN3J0eVk3NFhKZENka0hvUUdDZnlhSTlHM2U5ZWNmMllsdFJmSWtCRFVXQkNJVEs3dkxaOTNaTzZwak1QcE90MG9odUZrRkVNcUZzZGZpTmdXMWZlRDQzTTRkMEpvSWNLdmU2WjZ4dm4zTkZxd1NpYkFVZ2pmWElISWhZSm16bEQvZ3ZYck1aRmxsNVMxanFwZ2FWVStVZDdwd3JXeGZkdGxoRXpPVFNxV0syUUJ3cEU5ZHVMdTkwblNrTysvVVRwSEpVZFc5bGN1ZlVwYjg4WDgvZjVOcDBSalJMSUdwbDR0VmJ0dlkvc3kvZlVtQXZoVXhZNUEvNDFrUzc4NkZRSmxUOUJKbFZFUHFlQXlGRjc5eno5bzVmOUJUblRVZ3JFNzRFYm5EZWI3cHpNL0lwWlNLaklHS1pzTlcrdit4NWMvMnJ4YllKYVdWQ1VlVzljc2VQbGs1ZFBrMVN5MFFXUVNSbFl2QS9oN2ZldU1WcHpvSFN5MFJwNGRmT2FGM2JKb0hBSWdDVU1qRmtDa1JTSmdJM2VISHRaaEJaQlV1Q2RES3gwNTExYWN2aTczYm8yUkFSVWlmSTVCalNZcHY3RXhFMlRSR1NJYUpVZjd4ZTUyTzRkNG1yaWMxdWJ5bmZVa2pqbzVXanF2dXJUVXNtTGJ2L2ZLU29Ka1lJUWwrT2lNaHE0SEtOM1VTdFRMejJqWmYzUDdXM3VHQkNxbXJDb21EUVZ6blY5YnNWWkZHYWFtS0VJUFJGMmVkOXord0hBQlZIUk9LdGlBajZlVGF2bnQ1d1JFUXlZYXZlbi9YMDN0ZFRuSzlsWWxoNklxUUlETytRdi95eGxZVzVSZlpaalNoQnBnS2hBOTRmOFA5eDFXWjJBeXVuQ0tMZlJ4R0lRQUNCeUNKeGcveXMvQ1hiMTFEZWdpRGwrb3hBSzF2dGYzcnY2N2R0Szh5TnFna2E1cnNBSWtXbGQwc2RHNVkycjU2aFU2emdlRnQ0ZGNwd3NpazNJODl1WU9VVmllaDBUSWxYcFJTN2dUTTlwOU4xeWhIS2hDaGJsZDRaM0xydTMwNXpEZ3AxRXlRQWxTUDMzZEw4THk1c1c3ZEFPSlFKR1lGUU5BSUNBZzZZV1NnUUFBb1FRQkVrQkFFd3MzQ1ExdEtqUmlhSUs4RUxWMjBTaisycHVWUStPcWNxNzVkbnJKbmQvdjF6QVIyVHg1VWFZcjcxN3h0Z0VRRkU5RDlFdjRZRCtxVXhDcUZNdkhUREZyZW41RFNubzJBcnI5OHJuRlpjOXNENWdBbWYwZXByMXdHaDV4L1BHeVFDQVltUUNBbkE1ck1wTWRUS3hMZTI3WDF5ZDc0MWxWaVNSVUU1SUl1NkhsMXBGYTNqbDRuR1FCZ1dBQnNvbW9VSWhEV2o4Rk9wT0pBQXBwcm9lK0RkM252L1c1dzNRYnc2MzIxbUs2anVxNTc3ODY0SnB6ZnhpS3FKNHdZaGlhQkFJaTdDOVpJeUlrU0VRTHFhNkg5bTMvWmJYODYzRm9TbHpueTBqTmprN25DWDNOa3g0Nk96dEV5Z1VjOXkvQ0NpSnk5Q0ltQ1lteGNRUzdoMkNFTnRuTVFVaUhUTHFMelQzWHJqRm1lS1RSYlZiN2RBVkU2NXZhVzJkZk1YZkdWUkpCUHBjL09vZ1JBeExCakNPaldJTUNSTUZoQkM0RWxRNGFHdkVDZEk5dmo1ejI0S0ttdzEyYW1xQ1VkVmRsV2FWOC9RWFhtZ3NYYkxxSUtJSXlKNnBXaVpzQUFXK1lPK2Q4Z2Jqb0tZdmJhWGJ0Z3krT1pBYm5vdVZidkZWdDVCTHo4N2Y5NXZMOENJMmkyakNrS0daNkdYQmgxN2FZZzI0ZERiYzIvYy91cWVqYnNLYzlQdFRTaVNLaU9Rem9lNzdVbHB1L0pqQ2NJNGlHT3lnRUI0NkdTcC9RVUhUQmIxUGRqNzlnL2ZLclJOWUU5MHJUelVNcS9weXYra2MySjdBMTM1c1FSaG5ub1VCYUZxU3BSSGp6MnBaRFhSdjJuL3k3ZHN6YmNVbUVVNG5PblFMTWltOGc3M2pQWHRzeTl0YWFnclA0WWd1TlpRY1lKRi9Lci9Pb3FDbm9QN25ydmwydWVzSmdzV1NXQ01pWVE5amlPaVNmdG90ODl0WGRzMmdxNzhHSUl3OWpIMjJzUVN1aWs1dHFkS3lvU3diTHB5a3pjWXFJazIrNW9xeGZhY2tGd21wdDJ5cHpKbDJaUno3dXZVYno5R010RTRDRUdpMEVpWVN4R0pYRWJ0NDByS3hLYnJudnZnbFVQT2pGeFFaWUd4SVF4aWpWVk0vV2J3MmVRUCtFNXpydk9SbFJoam1UaGkxTjhOajVaQTlFZlBOWUowN0tmRmdJVnRkMnp2KzhQN0UwK2ZFRlNZaUJpNnU2TXZSK2FBRTNTN1ZhQklQQWxLZnRmdlYrU201MGFsM1RLcUlNS0kwQUFNSERNVGlralZRUEJaMmFybjE3M2I3MzZ6YVY0eHFKcU9EdUtMQ0FqeHdnQkFwQlNWZDdybi9MUnJTdWUwY2FhUURrUk5STVF6RVFJSnFhTTB3elNkdGh6WWN0TkxoWmFDU1NmUklUaUNXUXc2a016Q0VIS285RTVwMFRjWHQxNTlXaXdUWTUwWUdnTWhZSUNUOFIvUFJBUXFHUkVTaUhLVXU2djg5SldiVk5HQ1RheDlkUGpZVFMrdmxnWGxsTnZuenI2aTljemIyNEV3Y1dsODR6VWF0TmhpN0FOSGhrcEVmOUJjemxFQS9uckZzOVVQUEN1U0NaMWZFUmVzSENaZEZzQ215dDVLVS92azgzNjFITG9yYjJSaS9DaWtBaEgybzhDSlZsVmNnQU9zSDJ4NDMwK3ZmVzcvQ3dmenMvS0J4eHBXYmNFYU5US0lSYURJTyt5ckp1dUNSN3RKMFhqS1JHTWdJdk1qNFV5UzVsSmJEQ2p5SzRFMzRBTjRmdjMydHgvcW05Qlc5S3NNVFNGUnNISmNwRURiU3c2a2V0QmIvc0FGaFpiaVdMUmIwbzkwcW1IU1ljSUFSY2xQUUlxcUJ6MW5pcjFqNDY0WDducDk4dnltd0JNU2NOemdCVkNiSFVWQVJJcEt2VzduUGN1bVh6aDkvR1dpUVJDU2NNUzFNOUdGcFJLd3ovbVorWjEvM3ZQc3JTOFhadWFaQmF3UlNMZ1RvbEVrV0FBcVI0ZDdTa3R1WGJSdzNRTGRnTVQ0eWtTRElCQW5TREw3MDFDaDVoay9vWWdEK2VkWHQwRmc1eFVIVEtRM2czU2xkcFJTUUZUZUd1d3J6L240N0tWM253T01abGQrYkVGRWFVSVJRWVJKU0V3dHlLYkVGQUpVVGhteE5Dc3A5STRKRmdKWWppcnZxMHc4czJuMUkya1BRV1lEQkdMTHhCTHR1NGNmaWxJR2dWbjBnampDTzRZRUlSQmxrVmNLWU5GRmozU3JuRHJocWFFQkVGR0hObzd3eUdnVHhRRWZGVS9oS2hBUkZiSmdFUUtVSW1GVStxc2ZlV0xWcEVVVHMwTWhGWWlvREkrTjlCQTJXWWVHK1RrUmdabS9PVmhCZ01DaWdaN0JGUnVXdHE2WnBTbEF4cmJkTXFvZ2pPd2o3S0lmbWZ5RVFHTHlIY0dzRG83bXIyRXhWTUVhNkJsc3YrbjA5cHNYUlZ0KzJSa3BjNFFJb0xYUWRHcTFwUkFRNlJnSUt5b2RPVWNvQll2SzAyQmZhYzRsTTFmK2VKbSs3QW1YaWNaQnhOdGNVS0doWWlLcWlRdUVLNmZXY2VreTFWYmxmcTlwWG5ITjR5dVFHWmxvSEVUQ1VESHBrd2kxNWxLUFdEVWp2MEFDc1N6eXl3RUhzdWF4bGM1RU8xTUpzakVRTEdHeUJFTGhwSGp4UjE0d1ZrMkRTU0FLSklMUzNzcW5IbC9aM0RFNXN4UlNnWkFhK1V5YWlGQkVVYU9haWZRSmN1aGczK0NGZDU2OTRMSVdIcHZOMjNFQ0liV0dLcDQvUmQ0eFBCY3FVR0V4UlFKQXJMeDFzSy9VZnYzOHJ1OHMwUWNja3R5eU50SjJzVG5SdVdkQVJIY1dSRmRZa2NUR1p0eFJBKys1YzdxYlAvYmdjajMvOGVuS2ozZzBackdqN0NoSUdxcW9CMnNXaTdKVitRT3ZPRE4vMlJNckFYQWdLbnN5MFRpSXhJRVEwMTg0Mmk4bDZsR3l5Syt5VitHci9yNnFPRE9mNVFUWklJZ2FRelZFRDlZTUFrR0lCZzZVTG4rd2UzYlhWUFpZT1NjQmhWUWdqSHhLMUkwL3NySU91NVVpQWp1bkR1d2V2UGpiWjdWZjM4YUI2RjV1OWlta0FvRmtoMHF6T05JN0FnUmhPQVU2dUx0MDF1VnRGOTExbG9pUWlxRmxmNlFydzJzTVZkeGxJSkRTLzJPeDgycGdkMlgyV1ZNLzgxaTNobmVpK3RFakc2bVBGeHAvcVZXVHcvYThNQ0Fzc0tsODBIY20ybGMvdVFvQSt5ZXNLeitXSUNSNUxDQStLQ01RM2FlSEl2YWtVdlhYL25IVjVOUDBXZm1UakVJNkVNbnp0N1dIaHN4T3VLSURBKzZuN3ptdjdjTHA3SjBjWW5uMGFHaGZBemlxOUxaeXFyOS84T0tibDNSOWFTRUhRdllKN3NxUGVOVGY2V0xJVVJGaHpvMm9uRHJRWC9yUUpTMmYzSEF1QUZKWjk5RWpCd0hFWFJtZEVjdytxSWl5MWNDQjZzeDVrMjdZdUFvQWorcForZXlCQ0RNQm05TzJ4QUlXSVlzcWc3NXRxM1ZQcmJiemluM09malZ4ZkNBSVVKRHdCM1pFbVQxTERqQVllRGM4c2FMNTlLYmdwRTJReVZGLzc3UHFzaWNzTHZRMkhvR1VSWWNDOTVvZmRDMyt4T3pBWjh2SlVGZCtyRUNJb0RERnNVcksxai9UQlZnT2xmWlhQL3o1SlJkOS9ReGhVUm5yeW85NERQbGJoNkpROThwQjhwdzFBY3ppRkt6b2EwNzJSVkVIeFBCRFdMS3doVDJLby82UFJCLzc3Ty8vRndWay94ZHlqZHM0OGI4dElDUGpGQWd6VG9FdzR4UUlNLzRIQkxicU9WY1Mvc2tBQUFBbGRFVllkR1JoZEdVNlkzSmxZWFJsQURJd01qSXRNRFl0TXpCVU1qRTZOREU2TXpNck1EQTZNREF3RHVjUEFBQUFKWFJGV0hSa1lYUmxPbTF2WkdsbWVRQXlNREl5TFRBMkxUTXdWREl4T2pReE9qTXpLekF3T2pBd1FWTmZzd0FBQUFCSlJVNUVya0pnZ2c9PSJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTExLTI1IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiVG9rZW4gUmluZyAzIEZJRE8yIEF1dGhlbnRpY2F0b3IiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlUyRjEwMDAyMDI0MTEyNTAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTExLTI1IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjQtMTEtMjcifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyIzZTQ5NWEzNjAzZGFmYjg4NWQxNzcyM2I4Mzk5YzEzMjI2MGNhNjA4Il0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjNlNDk1YTM2MDNkYWZiODg1ZDE3NzIzYjgzOTljMTMyMjYwY2E2MDgiXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlN0YXJTaWduIEZJRE8gQ2FyZCJ9LCJkZXNjcmlwdGlvbiI6IlN0YXJTaWduIEZJRE8gQ2FyZCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbInNvZnR3YXJlIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUJ0akNDQVZ1Z0F3SUJBZ0lCQVRBS0JnZ3Foa2pPUFFRREFqQktNUXN3Q1FZRFZRUUdFd0pFUlRFaE1COEdBMVVFQ2d3WVJ5dEVJRTF2WW1sc1pTQlRaV04xY21sMGVTQkhiV0pJTVJnd0ZnWURWUVFEREE5R1NVUlBJRkp2YjNRZ1EwRWdNREV3SGhjTk1qQXhNVEV5TURBd01EQXdXaGNOTkRBeE1URXlNREF3TURBd1dqQktNUXN3Q1FZRFZRUUdFd0pFUlRFaE1COEdBMVVFQ2d3WVJ5dEVJRTF2WW1sc1pTQlRaV04xY21sMGVTQkhiV0pJTVJnd0ZnWURWUVFEREE5R1NVUlBJRkp2YjNRZ1EwRWdNREV3V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVF3NmN5K3puTXlRNnB0ZDRKanF2bWE0ZThSZStacHBiOTBHcUt2c1JCbkY4V21NNXlaV0lPS2pRZ2ovOCszajlhdlcrU3lBYS8xTWF5d1FENkIwZzlhb3pJd01EQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01CMEdBMVVkRGdRV0JCU3NlcFd1dXhtRDBvOGoxWTI3OGJMVEdDWk52akFLQmdncWhrak9QUVFEQWdOSkFEQkdBaUVBdTMzU3AwRTdCRWRIb3pFR0FDbE5zYTB5UEI2c0VEb1E3VzRraXkwRFoxNENJUUNKTERUSkRBbld4bzMxenp2cld1SU50QnF5MDQ0K0dnRlA2K3dscUc2Nk53PT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBRkFBQUFCUUNBSUFBQUFCYzJYNkFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFBQjNSSlRVVUg0d0lVREMwRm9PVUhJQUFBQ2NkSlJFRlVlTnJ0bTJ0UVZOY2R3UC8vYys4K1dKYUNQQlkxQ2dzQ29wRE1hRDc0QU1Va2ltT25XbTN5SVoxcHE5aXBvN1pXbmFaTk0wMXNtN2JVcUtoa0xOWkhmTXkwSDRxdFZ1MVVNeU0wMGM0b2RzeE13VkNOR2xPRndRQnJXSjU3WCtmZkQrZnVnd1ZXTnNHbU5QY01IOWJMdVdmUDcvLytuNE5JUlBCRkdneStZTU1DdG9BdFlBdllBcmFBTFdBTDJBSzJnQzFnQzlnQ3RvQXRZQXVZQU1icUJJaUlIdE54a2xpV1FoOWlmZ3ZHK0xYNEZTSUNRQ0FRNk96b2FHdDcwTkhlM3RmZmp3Q0FHQ0VXSFB3QkRNUElMOGlmTldzV2hxY0JBQ2lxZXZyVUtZWU1CajhQdmh0ZVlmRG5JWE1CaUhqU2w1SW1aazd5WkhvOEhvOXNrOFdlRVRFR3NCeGJlSWg0NjlhdC9UVTE5UmZxZW5wNllNUXRSQTlWMDFaWFZNeWVQVHRLZ3FxaXZQU0RsK3l5L05rVml3Q0VLTlNTbHBiMmxSWEx2N051M2FSSmsrSTI2WkRHMzd0MmJmVTN2dm5jb21kTy9LRzJ0NmRIWW93aEN2a1JJdUNJQTBZUXNuak1JcWFKcHpHV0duRjlSQXIra3lFKzlQa083UDl0NmJ6NTM5dTQ4Y1BiZDJCa1QyVFJua0NFQUp6emZmdjJyVnp4MWI5ZnV1UjBPQngyT3lLYVRraUVpQ3kycW9saW1CWmgwRmtBeEhZUkFPSnhieFM3RlQ5Qk9ib1NFb0RvN1hQbm5uM20yWk1uVCtJSXppeEhpVitNaXRWci9sWmY3M0E0SWw4YkdCalFORTJTWlZtUzRGSEJURkZWWGRlRzkwSUt5MWRWVmZnVWNaRklLRURYZGNNd25FNm53K0VBSXNZWUFNZ1MyN3A1eTlXR3E5dmYyUDRJSHlZaVZWVXJ2clg2MHNXTFRxZVRpQUJSMWJSRWx5dG4yclNTK2ZQbnpKMlRsWk9UNUhhYkhqU3ltb2tvd1pVUU96cjBCd2JldVhneEtTa0pSeHNaUWhJalFBUWl2OTkvNTlidHk1Y3ZYN2x5NWFPN2R6Vk5zMGtTWTh5T2VQem9VUVNvM1A3cmFFT2o0T0NjRTlHMjE3YmxabVhuZVhPbVpYdnp2RGxUSmszKzdvYU5MUzB0dXE3VFdJenU3dTZzS1ZQRjRoTXpQRjFkWFdPeXJLWnBkMjdkL3RyS1ZWbVRuOGp6NW9pZm5LbFp4NDhlSXlJZU1STWlYenQ3K293bkxWM1FUc3Yyemlnb1BIUDZkSlJFeGhqNGswL0dCRGkwdDBNSERtWlBtUnBDbURyNWlldE4xeU5uaHZOd1lHQmdVZG1paDUyZDRva3N5NmZQbmlrb0xCU0dqV05VSlBUMDlCVFBMTEpKRWlMMjl2WGQrT0JtY2tyS1o2dzZ4TzQ0a1VnaEY5OTlkKzNxTmNKcmlLaWdzUERNWDg3S3dVUVlqdEovcWozUjF0b3FhQlZWUFhUa1NFRmhvWGdOeDdvMkVrdU95Y0toUlZqdzA4S3lzcDlzMjlZL01DQmswZHpjZk8zYXRaQjBUR0JGVVNvcksyMDJtM2o2L0FzdmxDNG9IYjhGYzhYYWlybno1akZFa1dWLzl0cTI2RHhjVjFmWDNkTnQycmFpZm4velpzNzVPS1VWTHJwMTY5YWUvbjVFbENXcHFhbXB1Ymw1RVBBN2RmVU91d01RRlUxYnZuSkZUbTZPeUdtUFk0UU0rVEgxRW1MNUJXVUw4L1B6UkRDenkzTGRoUXNBZ0lBbVZVTkRnM0FCU1pJMnJOL3cvOUVKYnQ2eVJkZDFSSlJrdWVIS0ZTRmpCZ0ErbjYrbHBVWElKaTB0TFM4LzcvR0ovNzlrMVVRQU1HL3VQSmZMSlo3ODY4WU5ZVjB5QUh4dzgyWWdFRWhJU0VBQVQ2Ykg0WERFRlVJTmJ2aTcvSStjTDhyTXZyNStJSE1tTXV6eWQvUFJTSllBRU54dXR3aXJvd3pkNlo2TWxOUUp2dllPQW5qWTZXdC84TEZuWXFZTUFIYy92Q3RDbEtIcnVUbTVraVRGSmM3V2x0YXlzaktudzRuUmpvUm1HUmlNRmdibmpER2JiSzd2Y2lZc0t5OG5BbVFZZW9zSCs0cVFyNHRxSWFBb3gzLy91d1dsY2VRT1NaTFMwek02UCs3Z3hEVk51M2YvdmdsOC8vNTl4aGdCcUpybTlYcmp0aC9PdFlBaUl4TTVJSWFkQmZ0Qk01SWlvcWFxbzlFdUkxQlZsWXo0RWdkakxITmk1dnVOalpJc2M0UDdPanZONXFHdnJ5OGtTN3ZkSG4vVVphSy9ReUllanNEUk1Sa1lpcUtOVVVqcndCSFJsQUFOanJLRE9saENRQUtNZTJQb2Nya0l3Q0FDSUhHQUlZZS9oQWdBalBqVEwrZGM1MXczREJZT2RRakJVd0RpRkxrRHpnMlVaUUt6ZStlYWhveHh6czBtRjJCb09qU0lBRURqQm8rL2oxUVV4V3k1RVlWTVpRQnd1OTJpajdiSk5wK3ZJOTVGRTkySjVVdVgydTEySUdJamh5NENJTTZCcUw2K1hsQ3BtdnJjNGlVTU1YYk9GOEpRTkRVdFBTM2VXTjNiMjhjUXhWRmtTbktLQ1R4bDZoVGhma3hpcmExdGp6d0hpeG9aR1JuSGpoOGJiZlBRMi9Oa1ViRWRtS2pZZCsydVNrNUp3VkdiYUZ6QWhtRzB0N2NEWXdqQUdFdExUemVCOC9NTEVCR0ptQ1RkdjNmUE1BeFpsdVBDam1ObTVHa2xBVU5rWTkrYm1PbzFkTjNmMVlXSVFPU3dPN3c1WHJPMG5ER2pNTkhsRWlkYTdlM3R2YjI5WTlYS2ZJNVZCeUsydExZK2ZQaFF4Q1pQcGljMU5SVUlHQUc0azVLeXZWNUIyT1gzdnhkc3BzYnBDS25xN2ZQbkZVVVIvRVhGeGVHWUR3QWxDMHM1NTRnb0ErellzWE84VjlIaTBHZC9UWTNEWmtNQVZkUG1sY3dYSHNYRTVjT1NKVXZGQVNLVHBQZWJtaTVkdkRUZW1VK2YrclBmMzgwWTQwVGNNSjVidkRoWURRQWdZa25KL0d5djF6QU1BTERiN2J1cnFzYTdWZGZVMU5obG1ZaTRZWlNYbDN1enM0VnRoeFBnTHlzckRTSVJOcTgyTlB6aTlkZWp3c0I0Q1ZlY2FQMzY5YmR1M21TTUVaSGtjTHp5NnF2aGU0L1E3TklGcFVWRlJRYm5SSlRvY3IxMTZLM3F2WHMvWFFMOEhHa0I0T2ZiZm5yK3IrZWNUaWZuWE5QMVJXVmx1ZE55aDdscWtXVjVWMVdWYUdnNDV6WloydjZyeWxkKytLT3VycTd4WXNhZEhSM3Ixbjc3OElFRHRtRERsNXljWExWN2QyUWxOK2h1YVdiUnpEMXZWcXVhS3BqZGJuZHRiVzNKbkxtSER4NE1LTXBZYlVzY2hwdGZPa2EyNC9mN3EzYnNYREMvcEs2dUxpRXhVZlNZbXE0ZlBub2tPU1U1MGlYRDU5SVV2TERadFdQbjNqMTdFbDB1a2FpSUtCQUlKS2RNZU9xcEo0dUxpek15TTFNbnBNbzJhZGpPNWhIZElaQ2lLRDkrK1dXSk1VUU1LTXJPWGJzY1RtZjhYa05Fb0d1YXorZDc4T0JCWTFQajlhYnJmYjI5cm9RRTh4QVBVVlhWSFR0M3Z2ajFGem5ua1JxT3ZoQVgyRFg3ZnZQRzl1MTJteTNZNG5DUnNYUmQ1NGJCaVlCekNOMTNVcWhTcEtIWlAzUTl6d0NJY3laSmRydmRESmlNQlFJQjBTZnpJY0lMWFRqUlNFMFNvc1NZeEZpSUo2UXpEbEQ5WnZYeUZTc2ludzhQSEJyL3VIcDEwNlpOLzc3N2tUc3hVZlJvWnRFYlhEV3NFaHhtUjBnWUZVdHcwRjhNREZIWktCU01GTmw3aVYyWUNLTFpKTTU3K25wblAvMzAzdXJxNmRPbkQzdDNPVHl3V0VMWDllbzkxWDg4VWR2VzFvWUFraVNaZjVNUVZpd043dkVqOEliQTRlZ09iMk9rd0VGbVR3QVl2dE0yZEYyUzVhbFpXUlZyMTY2dVdCTlRhaU1EUS9BQ3RmR2ZqU2RxYSt2cUx2aDhQbDNWek12eENDTVpadDl4cGhRY2Vtd2RvekdJbUd5ejJTWlBucnhzMlpkWFBiOHF2NkRBWnJPRmRqNXNYTURZUlVXVVZYUjJkdnE3L0lGQUFJQ0czOWxvRmZxb2k0TVlSK3pobldHQzA1bWFscG9TdW80YlREa3NNMXIvTTgwQ3RvQXRZQXZZQXJhQUxXQUwyQUsyZ0MxZ0M5Z0N0b0F0WUF2WUFyYUFMZUQvcWZFZmJtTWNWQ3A4Ykc4QUFBQUFTVVZPUks1Q1lJST0ifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiTk9UX0ZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjEtMTItMTMifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIxLTEyLTEzIn0seyJhYWd1aWQiOiI5YTNmMmFiZC1hNzNkLTQzOWMtOWVlNy0xYjUzYTg1N2VhYTciLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjlhM2YyYWJkLWE3M2QtNDM5Yy05ZWU3LTFiNTNhODU3ZWFhNyIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IDUgU2VyaWVzIHdpdGggTkZDIEVuaGFuY2VkIFBJTiAoRW50ZXJwcmlzZSBQcm9maWxlKSJ9LCJkZXNjcmlwdGlvbiI6Ill1YmlLZXkgNSBTZXJpZXMgd2l0aCBORkMgRW5oYW5jZWQgUElOIChFbnRlcnByaXNlIFByb2ZpbGUpIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTcyOCwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjN9LHsibWFqb3IiOjEsIm1pbm9yIjoxfSx7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciLCJlZDI1NTE5X2VkZHNhX3NoYTUxMl9yYXciLCJzZWNwMzg0cjFfZWNkc2Ffc2hhMzg0X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NiwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo2LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRFNEQ0NBakNnQXdJQkFnSVVEcUVSdys0Um5HU2dneGdVZXdKRkVQRFJaM1l3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRREk3WG5IK1p2RHdNQ1FVOE04WmVWNXFzY3VibHZWWWFhUnQzWWJheG45Z29kTHg1c3dIMGxYcmRnamg1aDdGcFZnQ2dZWVg3RTRibDF2YnpVTGVtck1XVDhOM1dNR1VlOFFBSmJCZWlvVjdXL0UraFRaUC8wU0tKVmEzZXdLQm82VUxlTW5mUVpEclZPUkFrOHdUTHEydjVMbGo1dk1qN0p0T290S2E5SjduSFM4a0xtelhYU2FqMFN3RVBoNU9BWlVUTlY0enMxYnZvVEFRUVdyTDQvSjlRdUt0NldDRkU1blVOaVJRY0ViVkY4bWxxSzJieDJ6Nm9rVmx0eURWTEN4WWJwVVRFTHZZMXVzUjNEVEdQVW9JQ2xPbTRjcnB3bkRSTFZIdmpZZVBHQkIvL3BFeXp4QS9nY1NjeGp3YUgxWlV3OWJuU2JIeXVyS3FiVGExS3ZqQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJUcXQwS1FuZ3g3WkhyYlZId0R1bnhPbjlpaFlUQWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQXFRYUNXTXhUR3FWVlg3U2s3a2tKbVV1ZVRTWUt1VTYrS0JCU2d3SVJubHc5SzdIZTFJcHhaMGhkd3BQTmlrS2ptY3lGZ0ZQemhJbXdISmd4eHVUOTBQdzN2WU9kY0pKTmt0RGczNVBYT2Z6U24xNWNGQXgxUk8wbVBUbUliOGRYaUVXT3B6b1h2ZHdYRE00MVphQ0RZTVQ3dzRJUXRNeXZFN3hVQlpxMmJqdEFucS9ORFVBN2JlNEg4SDNpcEMrLytOS2xVcmNVaCtqNDhLNjdXSTB1MW02RmVRdWVCQTduMDZqODI1cnFEcXNhTHM5VGI3S0FIQXc4UG1yV2FOUEcya2pLZXJ4UEVmZWNpdmxGYXdwMlJXWnZ4clZ0bjNUVjJTQnh5Q0pDa1hzTkQwNWRDRXJWSFNKSXMrQmR0VFZOWTlBd3R5UG1ueWIwdjRtU1R6dldkdz09IiwiTUlJRFJ6Q0NBakdnQXdJQkFnSVVleDluVDl2d1pOWFM0ODNMZGlZR2Z3MlNqU293Q3dZSktvWklodmNOQVFFTE1DNHhMREFxQmdOVkJBTU1JMWwxWW1samJ5QkJkSFJsYzNSaGRHbHZiaUJKYm5SbGNtMWxaR2xoZEdVZ1FpQXhNQ0FYRFRJMU1EZ3dNVEF3TURBd01Gb1lEems1T1RreE1qTXhNak0xT1RVNVdqQW5NU1V3SXdZRFZRUUREQnhaZFdKcFkyOGdSa2xFVHlCQmRIUmxjM1JoZEdsdmJpQkNNaUF4TUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUF1MU1ldm55OWR5TzlaVUMzOVNvTWhMY1IvRFhydEYvY2lNMTJ0Y2l5MkVYQVo2TWtyaXZWdENmRVZNOVg2SVNURW5CUDZ1U1lZb3Y2cHB2Nk82SmgyTkhtWW00dytKblM0Vm5DUFU3bUhBTWZWSTJNR1RUTVZPZXcweFVzRzdzSVNJa0lEVUJtdWs4WUs5YzV6aWM5K3ZGUUdMSWtzZFhPNWlWRklnTkc1M2NHWEQ0Wkxab0FQaXUwUEVvenhBcVlJYUk0Z3hLaE9BM1M4L1c4bUlXc3U2b2Z5ajRHdmtGRzZaN2t5RjMxMDdQN213RkhMckkzRU5hUFdNT0ZjVGFHYTBkdysvdlZSd2pSY0VaQlZzdXVULzg3Y2tTczBhNXBrdDN2WkJsYVllVDhwelNyZVY3bW93Y0lNOTBMMmlhQVRsUDBueG1hRTZuT3lUYm9qRlZsMndJREFRQUJvMll3WkRBZEJnTlZIUTRFRmdRVVNYRWgzc2EzYnREdXJtNE1NL0M3UzFsUnV1WXdId1lEVlIwakJCZ3dGb0FVNnJkQ2tKNE1lMlI2MjFSOEE3cDhUcC9Zb1dFd0VnWURWUjBUQVFIL0JBZ3dCZ0VCL3dJQkFEQU9CZ05WSFE4QkFmOEVCQU1DQVlZd0N3WUpLb1pJaHZjTkFRRUxBNElCQVFCNUdjM2hhZnRwN2hLc0Vac28raS9aNW5SdXFkbXpHMldDbFVvUlVxYmFQeWdsbkpEaktSL2tmZ09sNmliYkYvenRobTNLbVhRN0hjRElQMnhNZEc3VTJMMmltYkpRSHFQZi9oMkhxb2piNHJaZ3VlKzZXNGt0U1I1ZWxSOUwxcllxRS9TR1lNNGlFS29WUVN2N1JUMXJ4SWVXaUtzdy9WeHhpL1FPbnN4M0Y3eDgwQ0NZZ0I0RTN5UXg4VlRXNDQwaFRFd1RBMWVNSE9peDMydFB0eXlISWE4UFZWSWZWcEhRSkJhTVZ2djUwOFVFandrYlUycm5qZnpvU1ROUzlBNWpVUThtQlN2ZTk1cmpCMGRvOThFVStEeGRCcVgyK0g2aTV3bElDRmd6aGR6Y3NuZTloR0tUNmx6VFg0Y0lkSnNyWTIreGxlSzBGRlF5NmxHRVZMRWUiLCJNSUlEU0RDQ0FqQ2dBd0lCQWdJVVVjbU1YelJJRk9nR1RLMFRiM2dFdVpZWmtCSXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFEbTU1NWJXWTlXVyt0T1kwcklXSGxkaCthTmFub0NaQ0ZoN0drM1laclFtUFV3MGhrU0c2cVlIUXRQK2ZaeVMzM1ZFcnZnK0JRcW5tdW1nTmhmeEZya3dFWkVMZWlkQmNDOEM0QWc0bnFxaVBXcHpzdkkxN05jeFlsSW5MTkxGY1pZLytnT2lONlpPVGloTzUvdkJaTWJqOXJpYUFjcWxpWW1OR0pQZ1RjTUdhRUF5TXpFTU55Mm5tNkVwK3BqUDVhRjZnaTIxdC9VUUZzdUoxajJSai95bk0vU2RSdCtlY2FsNU9Zb3R4SGtGYkw5dnZ2MkEyT3Y1SVRaQ2x3NGJPUzlucHlwUWltT1o1UUFZeXRtWWFRcFdsL3BNWXo2elNqOFJxa1ZETkVKR3FOZlRLQTJpdkxZd1g2bFN0dE1QYXBnMEo4NGw5WDB2b1ZOL0ZwUzRWQ1ZBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlFnS0ZBaEc2UmFXK2hUeTUyZHhlVDhiQzk2SHpBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBWU16Z0xySkxJcjBPb3ZRbkFaclJJR3VhYmlIU1VLU21iTFJXcFJrV2VBdHNDaERFSHBYY0ovYmdETktZV29IcVE4eFJVakI0Q3llcFlldmMzWWxyRzhvN3pIeHBmVmNhb0w1U2V1Smt6SHhLbjRiVGFTcDkrTXZ3YW1ucDY0a1pNaU5iRkxrbmZQOWtZS29SSGtNV2hlUkoxVXNQMXo0U2Nta0NlSUxmc01zNnZxb3ZxaldDbEZzSnBCY3NsdVlIV0Y3YkJKMW40UndnK0FURW9wWTRJZ0d2Nlp2d2MrQTlyK0FUMmhxcG9Ta1lvQWwrQU5Zd2dzbE9mOXNKZTBWK1RBOVlZL1VsYUJtUFBUZDAvL3I5d3ZjZVBXWmtQaktvQUMvelVOaGZEYmg0TFY4R0hzM2x5WDJYb21ML0xOYzhKWXp5SWFERWhHUXZlb1BoaC90cjFnPT0iLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVRuYmJHSVIyTkh2enFJS0ZBZVF3RzFYQmlzMHdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFRWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPc1hqM2swNEJhbjRUWWR0WktxRC9PUEp4eUR5YVBtQ0JVRlVpYVpJZ1R0ZVpuajNYMjVEaGdwWlpYc0M0RDB5ZEljcmxBNndOVUluT1JML0w5ekJiVEVJTUFWTUdvNmc3VUtBbWIyTUY2QUhibmhZSmQ5ZWlrdXBWTldTaEhOWU5jNEdCZE8xWU42QWZVcXZKaEhiZTNWNFNOTVBtQlJFS0pQVno3VGh3Z21nZ1RlOFdzMkswL3dzcXYyd1NFN3BiQ0JzVVpoSVg1MWJaTTNwcUR3SlBUbVJGRXZ0MC82dEc1ZU84RjNqMTRPWHFmRWhtam4xVnZ4S0RZUU9MWkF4Q3d3Z0MwUDRDZGZXdjN5OFBTUjhJMzU0aE8xWStHek5qdklxWDM4TktMeXd1SVlIRmVyT3hObHhFTUJ2RmhZQnVSdVlBa2tnVWFQcU42VUJoc0lMcnNDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNDb1JIaGl5Tm5iblhSV0lMNlpCWG9CWDlZVE1COEdBMVVkSXdRWU1CYUFGQ0FvVUNFYnBGcGI2RlBMblozRjVQeHNMM29mTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFDUUZhZkpJMS81V2c5Q0VFaW1FMVJQNTRSZ1F3VE5UT09Rc0xBQ1RlK3JJdGxGUXpDOVpEaHJWODI4eVg3anp5K0FBc3AzaXpLN1QxdGgyZGw3bSt0dTBzdzJQYS9vbGMwMm50NlB5SXczNDhnYUh6aEkxKzBLRTQ1cXh2RkRlTDJsTXhiUGZDWXZ5RUVhWXpqaVFFTFU1OTUxcFhHV3lLTWEvNGZMdE8rWktPWGhNdVZlcTRyWERQSTU0VzZKSE9pQWFpS2Rpdys1ZTNjMmt0L2pGSVF0TTZ2TVhnOUxORnpkakVUTnQyMFZYOVFldlJwRlpmdWNNRzl3Q2FRRG9GbFB6cFRNSktoUGV2L2ltSm1aWWhLZnIwbExjZW10cWpJeExBb3FaZE9ZZkhCZzYrdkFjZFBJL2lhdUdwVUF2N1grVUtObUR3aloyQmFINHNMd2hCMm0iLCJNSUlEUGpDQ0FpYWdBd0lCQWdJVVh6ZWlFREpFT1R0MTRGNW4wbzZaZi9iQndpVXdEUVlKS29aSWh2Y05BUUVOQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU1aNi9UeE04cklUK0Vhb1B2Rzgxb250TU9vLzJtUTJSQndKSFMwUVpjeFZhTlh2bDEyTFVoQlo1TG1pQlNjSVpkMVJueDFvZDU4NWgrL2RoSzdoRW03SkFBTGtLS3RzMWZPNTNLR05MWnVqejVoM3dHbmNyNGh5S0YwRzc0Yi9VM0s5aEU1bUdORDZ6cVljaENSQUhmcllNWVJERjRZTDBYNEQ1bkdkeHZwcEF5Nm5rRW10V21NbndPM2kwVEF1Y3NyYkU0ODVIdkdNNHIwVnBnVmRKcHZnUWppVEpDVElxK0QzNWh3dFQ4UURJdituR3ZwY3lpNXdjSWZDa3p5Q2ltSnVraFl5NktvcU5NS1FFZHBOaVNPdld5RE1UTXQxYndDdkV6cHc5MXUrbXNVdDRyajBlZm5POXMwWk93ZHdNUkRuSDR4Z1VsNVpMd3JyUGtmQzEvMENBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUI4R0ExVWRJd1FZTUJhQUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUU13RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCRFFVQUE0SUJBUUMzSVcvc2dCOXBaOGFwSk5qeHVHb1grRmtJTGtzMHdNTnJkWEwvY29VdnNyaHpzdmw2bWVQTXJiR0pCeUoxWG5xdUI1c2djUkVORnhkUUZtYTNtaW84VXBmMW93TTFacmVYckowbUFERzJCcGxxYkpueGl5WWErUjExcmVJRlRXZUloTU5jWktzRFpyRkF5UHVGakNXU1F2Sm1OV2U5bUZSWUZnTmhYSktrWEliNUgxWGdFRGx3aWVkWVJNN1ZvbEJObGxkNnBSRktsWDh1c3Q2T1RNT2VBRGwyeE5GMG0xTFRoU2RldVh2RHlDMWc5K0lMZnozUzZPSVlnYzNpcm9SY0ZEMzU0ZzdyS2Z1NjdxRkF3OWdDNHlpMHhCVFByWTk1cmg0L0hxYVVZQ0EvTDhsZFJrNkg3WGszNUQrV1ZwbXEyU2gveFQ1SGlGdWhmNHdKYjBiSyIsIk1JSURTakNDQWpLZ0F3SUJBZ0lVUjM4bXEyNlNmMnN6VlYyQmRHNldFTjdrdVdVd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVJZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU5ZMFdiOW9Qb1JvS29ReVdQYUpwejExdnJXVGc2elR0bU5qMlZvS1JueXZLR1JxcHpiODN3NWw2WUE5NlVZa1lCRFFQMGlsTzJEUGU2d1dxVlI1ekRmUnpkY0g4YmgrTDdkR0d2YWU2aFJUWmhrRmtDcFhEczRIY2NrbnJEZjhGQ2xKN0hlMzlKZjQyL0cxUW0yeno5V1dtclBYdGdpSy94MDVHanNRZkd1REcxemY1UVRVVWllOGx3eW1LM1RmZE92TmVlSkFBUGUycG43SXRmUmIrclZyTldpRHpsUm4ydk5uWjJ3UG80d0gvV0o2ZGhYWkcrck1XVCthNkJvY2cxVWZJdzZrZHVuRzRiVHBaenN2YWNGWXlSMG1wZitEZU9ucFNXQW15d0pXSHZUbGYyWVh4RnllWGNUQUNkUWxjTU5HSjJWaFpRNDh4dFA1L1JCUC84a0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ2h5NDJva2lxY1RTMWlxYS9IUldqa0JuNEgvTUI4R0ExVWRJd1FZTUJhQUZPcTNRcENlREh0a2V0dFVmQU82ZkU2ZjJLRmhNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUFuK1JISVBidE1FRE5kVDFnOEgvUml0QWtVZExnQXQxdFdHV25sajlrbmJ2NC80R2xYN0M5cDQ1ZWZQTzkvYVpMNk9WMVhSS0JpNkttdEJXNUs3bnVZRW5NeC81QnFCU2JMVDdyaGR1QzQ5VEJlTWI5UEhkWHNUbFNWTlllZnIxZEdpZHI0ajB4VkJRTGIxcmtuREFiZFdEektmdm5heUtPOEZyd2U3SHg4NDNNRy9ySitjMFhydVV2YmZWVENITGlJV2hNN29ORGhMOHhvYjZ4VW85S0xLY1NMK0l0WXNPMy85V2I4UTlHanNxTDRGWHNEY0cxU2FZaDdLcGZ1TW1PaXhxekpaTzJuSWljUFlSZzFJMlN1aVVmWU83MHRtZEhjYmwra1NRbVNZdDdycTR2aUlMZzJHeDNqOXJJVHVXVGpiYVVhU1NReGdPbU1TSHV5ek1BQyJdLCJpY29uIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwiaWNvbkRhcmsiOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJwcm92aWRlckxvZ29MaWdodCI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsInByb3ZpZGVyTG9nb0RhcmsiOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJGSURPXzJfMCIsIkZJRE9fMl8xX1BSRSIsIkZJRE9fMl8xIiwiRklET18yXzMiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwibGFyZ2VCbG9iS2V5IiwiY3JlZEJsb2IiLCJtaW5QaW5MZW5ndGgiLCJobWFjLXNlY3JldC1tYyIsInRoaXJkUGFydHlQYXltZW50IiwicHJldmlld1NpZ24iXSwiYWFndWlkIjoiOWEzZjJhYmRhNzNkNDM5YzllZTcxYjUzYTg1N2VhYTciLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjp0cnVlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImxhcmdlQmxvYnMiOnRydWUsImVwIjpmYWxzZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwicGVyQ3JlZE1nbXRSTyI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOmZhbHNlLCJhbHdheXNVdiI6dHJ1ZX0sIm1heE1zZ1NpemUiOjE1MzYsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6OCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoxMjgsInRyYW5zcG9ydHMiOlsibmZjIiwidXNiIiwic21hcnQtY2FyZCJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi04fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotMzV9XSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5Ijo0MDk2LCJmb3JjZVBJTkNoYW5nZSI6ZmFsc2UsIm1pblBJTkxlbmd0aCI6NiwiZmlybXdhcmVWZXJzaW9uIjozMjk3MjgsIm1heENyZWRCbG9iTGVuZ3RoIjozMiwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjEsInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjoxMDAsImF0dGVzdGF0aW9uRm9ybWF0cyI6WyJwYWNrZWQiXSwibG9uZ1RvdWNoRm9yUmVzZXQiOnRydWUsImVuY0lkZW50aWZpZXIiOiIiLCJ0cmFuc3BvcnRzRm9yUmVzZXQiOlsibmZjIiwidXNiIiwic21hcnQtY2FyZCJdLCJwaW5Db21wbGV4aXR5UG9saWN5Ijp0cnVlLCJwaW5Db21wbGV4aXR5UG9saWN5VVJMIjoiNjg3NDc0NzA3MzNhMmYyZjc5NzU2MjY5MmU2MzZmMmY3MDY5NmUiLCJtYXhQSU5MZW5ndGgiOjYzLCJlbmNDcmVkU3RvcmVTdGF0ZSI6IiIsImF1dGhlbnRpY2F0b3JDb25maWdDb21tYW5kcyI6WzEsMiwzXX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI2LTA0LTI1IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTcyOCwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZdWJpS2V5IDUgU2VyaWVzIHdpdGggTkZDIEVuaGFuY2VkIFBJTiAoRW50ZXJwcmlzZSBQcm9maWxlKSIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjYwNDI1MDA2IiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25Qcm9maWxlcyI6WyJlbnRlcnByaXNlIl0sImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjYtMDQtMjUiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NzI4fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI2LTA1LTAxIn0seyJhYWd1aWQiOiI0NTRlNTM0Ni00OTQ0LTRmZmQtNmM5My04ZTkyNjcxOTNlOWIiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjQ1NGU1MzQ2LTQ5NDQtNGZmZC02YzkzLThlOTI2NzE5M2U5YiIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJFbnN1cml0eSBBVVRIIEJpb1BybyJ9LCJkZXNjcmlwdGlvbiI6IkVuc3VyaXR5IEFVVEggQmlvUHJvIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MTAsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIiwiYmFEZXNjIjp7InNlbGZBdHRlc3RlZEZSUiI6MC4wLCJzZWxmQXR0ZXN0ZWRGQVIiOjAuMCwiaUFQQVJUaHJlc2hvbGQiOjAuMCwibWF4VGVtcGxhdGVzIjowLCJtYXhSZXRyaWVzIjo1LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9pbnRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRENUQ0NBZkdnQXdJQkFnSUpBTEtLajBzS1RYRGxNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1DRXhIekFkQmdOVkJBTU1Ga1Z1YzNWeWFYUjVJRlJvYVc1RElGSnZiM1FnUTBFd0lCY05NVGd3TnpJek1UTXpOekl4V2hnUE1qQTJPREEzTVRBeE16TTNNakZhTUNFeEh6QWRCZ05WQkFNTUZrVnVjM1Z5YVhSNUlGUm9hVzVESUZKdmIzUWdRMEV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRREVpWmg0dEljQVVQZlVrQ21YYk53V0RJRnZXeHhHUGhKcS8vRnMzdVBCQTRKUVVYaUFIV1VvZjBtTnhmVTM5eWZLMzkvMnlYZ09KNVFvWkd6cFFFR1N3NVNub3kwKzYxb2VJKzBJWGtBYU12ZlZ2dG1Ob08yT0pPNStBRHRsRHU2cmdKdVY2SXBMTFI1U0tYT1Uxek9QSFlyQVBzWXh2M1VMZzI2VzYzek1UcXBDTkNnNHB6d1pSeVhqY0xyVWVDekY0WGNmK3AvRzQyWmRHekJlWmM0eit5Y2NPTXhCeDR3c0djUGcxSEZ5elhsM0ptdHlnN3pVREVxYmplSDhOc3k5K2tUMzFtVlhvY2lnQjNoRzd3Y3RpSW42QTVsUEdNUEpvSTg0UlpkckIzZXM5UWxIWldTbnZkSkdlYUxuTzVYcTRtSWh1ZmJZNHMxVXEvcHZHc0FQQWdNQkFBR2pRakJBTUIwR0ExVWREZ1FXQkJTT0VuK1ZGaEkvWkdVVFNVZWhFeU9seHhGeEx6QVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUFNQXNHQTFVZER3UUVBd0lCQmpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQXJhRG84dW1yZWpYTllRNkJSQm40WHNEZWhEbGlqM0xBTk03Sjd0aW1hTk1mb3hhZHd5UzFudkE4ZTdjTzdPQXczaWVsWWpPNm9pU3B6VXN1NmVIMmxvWjBMSzBma29pYVpabkhLYi80Nm82bzk5NDdpOHR1QU95b1ZyR1B3OWMyOVZvSVFrRTNRai8wUEpabVUwWXViaWxSVU54NmxkSzI1YTBvL3E4bGs3QkwzMk5qV2RUektESlBnZEttcndsMW0zSzJlR212MlpJZ0FQNHBXVW1nMERGNFhTL0phbmtGaWJSWmhzNktnMFYwMkU5UGNiR3lYSW8raHhVOVFzampnSVB0RmlGOCtWdlFiUFRWZU0xWmMwQ3hQbTFYeDIya2kzSWVQcGFEaWd6UzBLZnhrNVJuRnRxWS9aT3lWdGFtL29BUDl0cS9NVGpFUXUxZmxycHBSUT09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUtnQUFBQ29DQVlBQUFCMFM2VzBBQUFBQ1hCSVdYTUFBQzRqQUFBdUl3RjRwVDkyQUFBRnhHbFVXSFJZVFV3NlkyOXRMbUZrYjJKbExuaHRjQUFBQUFBQVBEOTRjR0ZqYTJWMElHSmxaMmx1UFNMdnU3OGlJR2xrUFNKWE5VMHdUWEJEWldocFNIcHlaVk42VGxSamVtdGpPV1FpUHo0Z1BIZzZlRzF3YldWMFlTQjRiV3h1Y3pwNFBTSmhaRzlpWlRwdWN6cHRaWFJoTHlJZ2VEcDRiWEIwYXowaVFXUnZZbVVnV0UxUUlFTnZjbVVnT1M0eExXTXdNREVnTnprdU1UUTJNamc1T1RjM055d2dNakF5TXk4d05pOHlOUzB5TXpvMU56b3hOQ0FnSUNBZ0lDQWdJajRnUEhKa1pqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWo0Z1BISmtaanBFWlhOamNtbHdkR2x2YmlCeVpHWTZZV0p2ZFhROUlpSWdlRzFzYm5NNmVHMXdQU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2SWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhodGJHNXpPbkJvYjNSdmMyaHZjRDBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5d2FHOTBiM05vYjNBdk1TNHdMeUlnZUcxc2JuTTZlRzF3VFUwOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXRiUzhpSUhodGJHNXpPbk4wUlhaMFBTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZjMVI1Y0dVdlVtVnpiM1Z5WTJWRmRtVnVkQ01pSUhodGNEcERjbVZoZEc5eVZHOXZiRDBpUVdSdlltVWdVR2h2ZEc5emFHOXdJREkxTGpBZ0tFMWhZMmx1ZEc5emFDa2lJSGh0Y0RwRGNtVmhkR1ZFWVhSbFBTSXlNREkwTFRBekxUQTFWREUzT2pBME9qSXdLekExT2pNd0lpQjRiWEE2VFc5a2FXWjVSR0YwWlQwaU1qQXlOQzB3TXkwd05WUXhOem93TnpvMU1Tc3dOVG96TUNJZ2VHMXdPazFsZEdGa1lYUmhSR0YwWlQwaU1qQXlOQzB3TXkwd05WUXhOem93TnpvMU1Tc3dOVG96TUNJZ1pHTTZabTl5YldGMFBTSnBiV0ZuWlM5d2JtY2lJSEJvYjNSdmMyaHZjRHBEYjJ4dmNrMXZaR1U5SWpNaUlIaHRjRTFOT2tsdWMzUmhibU5sU1VROUluaHRjQzVwYVdRNlptWTBPR1k0WkdVdFpEWXhPQzAwTWpoa0xUZ3dPR1l0TXpFM01EWTRPVE0zTnpGa0lpQjRiWEJOVFRwRWIyTjFiV1Z1ZEVsRVBTSjRiWEF1Wkdsa09tTmlOR1l6TVdVeExUVmlabU10TkRFeE1TMDRNemRsTFdZNFpUazNPVFE1TkRZM1pTSWdlRzF3VFUwNlQzSnBaMmx1WVd4RWIyTjFiV1Z1ZEVsRVBTSjRiWEF1Wkdsa09tTmlOR1l6TVdVeExUVmlabU10TkRFeE1TMDRNemRsTFdZNFpUazNPVFE1TkRZM1pTSStJRHg0YlhCTlRUcElhWE4wYjNKNVBpQThjbVJtT2xObGNUNGdQSEprWmpwc2FTQnpkRVYyZERwaFkzUnBiMjQ5SW1OeVpXRjBaV1FpSUhOMFJYWjBPbWx1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2WTJJMFpqTXhaVEV0TldKbVl5MDBNVEV4TFRnek4yVXRaamhsT1RjNU5EazBOamRsSWlCemRFVjJkRHAzYUdWdVBTSXlNREkwTFRBekxUQTFWREUzT2pBME9qSXdLekExT2pNd0lpQnpkRVYyZERwemIyWjBkMkZ5WlVGblpXNTBQU0pCWkc5aVpTQlFhRzkwYjNOb2IzQWdNalV1TUNBb1RXRmphVzUwYjNOb0tTSXZQaUE4Y21SbU9teHBJSE4wUlhaME9tRmpkR2x2YmowaWMyRjJaV1FpSUhOMFJYWjBPbWx1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2Wm1ZME9HWTRaR1V0WkRZeE9DMDBNamhrTFRnd09HWXRNekUzTURZNE9UTTNOekZrSWlCemRFVjJkRHAzYUdWdVBTSXlNREkwTFRBekxUQTFWREUzT2pBM09qVXhLekExT2pNd0lpQnpkRVYyZERwemIyWjBkMkZ5WlVGblpXNTBQU0pCWkc5aVpTQlFhRzkwYjNOb2IzQWdNalV1TUNBb1RXRmphVzUwYjNOb0tTSWdjM1JGZG5RNlkyaGhibWRsWkQwaUx5SXZQaUE4TDNKa1pqcFRaWEUrSUR3dmVHMXdUVTA2U0dsemRHOXllVDRnUEM5eVpHWTZSR1Z6WTNKcGNIUnBiMjQrSUR3dmNtUm1PbEpFUmo0Z1BDOTRPbmh0Y0cxbGRHRStJRHcvZUhCaFkydGxkQ0JsYm1ROUluSWlQejdRaTRVZkFBQXJya2xFUVZSNG5PMjllWnhjVjNtbi81eHo3NjE5NlZXOXFDVlo2bFpMc2lTM0ZtUExPd3kyZzVlWVlSaWJtUUVUTWtuSUpKTU1qQVA1MllFZnpFd1NHd0lPTUFseE1wTUViRU5DTUpqeFlIQk1iQ3piV042dEZjbmFkMHZxcnU2dXJyM3Vjczc4VVl0YlVyZjJWbGQxOS9QNXROMnFxcjcxM2pyZmVzLzJudmNWV212cUdTSEVPZit0eitlNzZhNDc3L3hlVzN1Ymw4M21hdXFETUUwVEtZVC9wei85eWQvdjJyM25ubk85VHIyM3J6blpCa3dtdG0wdnZQTWpIMm02NVpaYk9Ianc0R1NiY3h5UlNJUkNzY2p6THp6Zk45bTJUQ2JUV3FCQU5Ka2M1dkRod3h3N2RteXliVG1PZERxTjR6aDRuZ2NnQVRYSkprMEswMTJncG1YNUNBU0QrUHoreWJibE9QeCtQMExLeWhqR0FvcVRiZE5rTUswRktxWFV1M2Z0SWhnSU1EUTBOTm5tSEljLzRFZDVDczl4TGVEY0I5cDF6clFXcU5hYVJZdDZ1Znp5eXhsT0ppZmJuT01JaDhQWXhTSStuODhQR0pOdHoyUXgzUVVxT2p0bjA5WFZSVk56ODJTYmN4eWhZQkRiY1RCTkUyWTg2UFNsVUN3QWtNdmxKdG1TNDVGU1Vpd1VLc3RFMDFhZ2NySU5tT0VVQ0VCTVgzSENqRUJybm1tdXp4bUJUbmNCMURyVFhxQzFqYWo4WjlwK2kyWUVXdXRNY3hjLzNRVmFCNDFmQnlaT0lOTmRvTExXMi84OGdyV21CTk5kb0RYZC9PWEI1OHdZZEJvamFucUlKMFQxUDVOdHltUXgzUVZxbkUvQTgwV2h4czJiYUthN1FHV3RDbFRya3U4VUNNazBsdWwwRjZoUnU3TVFEWWphTmU4aU1lMEZLbXRlQU5OYm90TmVvTFU4U1JKQ0lNVE1KR2s2WXdoWnV4K0JBSVNjRWVpMFJRcGgxR3JUYTAxcEVheFdaM0VYaVdrdFVDR0ZJVVd0ZmdTNjFNWFBySU5PWDZRUVppMDdLQ0hFVEJjLzJRWk1Ka0xJbWgyRGx0WkJCYUptUGZ6RllWcmZ2UkJDeXByMW9LVXVYczU0ME9tTGxNS1FOYndRS29SQUNqa2owT21LRUZJS1dadEh6clhXU0NHUXBTSElqRUNuSTFKS1dkTWVWRXFFRlBXZG51NDhtZFlDRlZKSVdiT1RKSTJRQWtNYU04RWkweFVwcFRDTTJ1M2lCUUxMNy9NRHZzbTJaN0tZM2dJVkVxTkd4NkJRY3BzKzB3b0F0WlY2N3lJeXJRWHE4MW4rVWc5YWUxUXlJNXVtNldkR29OTVMwKy8zeHd6RHBCWm5JUldCV3BZNTQwR25LYVpwbWlIVE5OQTFLTkdLUUEzRDlERXpTWnFXRkV6TGlwbW1oZkpxVDZBVkFzSGd6RUw5ZEVRSThiR1c1cGFGb05HNjl0Sy9WNzR5MFdnRUljUW5KdE9XeVdSYUNyU3BzZkYzWm5kMlBPcjMrd3dwRFpTcVBZRlM3dUtsa0VRajRkL3A2cHI5ZDVOczBhUXc3UVE2cTdYMU0vUG5YL0pYV21zTXc4RHY5OWVrUUN0alVML2ZqK3U0ZExTMy9jZTVjK2Q4eHpDTWxrazI3YUl5YlFRYURvZlhMT3J0M1RSdjdweXZPSTVET3AxR2FVVW9GS3FVZXFrcEtnSVZVcEFyRkNnV2JXYTF0bjUweWVKRk81cWFHajgyeWVaZE5LWjhDdkNHaHZqdGpRME4veUVlai85N0tTWDVRZ0dsRktsMGh2ZGNjU1VCdjUraEdrdi9YVUVEVjExMU5YNmZSVEtaSkJhTFlacEc0L3g1OHg1dGJHaTRPem1TK3Y3ZzRPQ1U3dnBGdlpmS0d5c2kzakxOV0RRYXZiMmxwZm1UMFdqMEJpR2dVQ2lWR1hKZGw3ZTM3K0RmL3RzUDg0L2YreWVLeFFLNVhQNjhTaXBPRkZKS21ob2IrZktYdjhTOTk5N0h2TGx6aU1mamVKNVhxcU1rQk5sc2R0dlEwTkJmSjBkU2o5bTJmZVRFYTlSOSs5YjlEWlNGRlE2SFY4WGpzVHZDNGZETlBzdGFFdkQ3R3pSUUxKYUVhWm9tUjQ0Y29YOGd3YWMvOVNuKy9PdGZRMnNZR0JpZ1Z2ZmpsVklFZzBHaWtRZ1BQL3d3bi95dDM4QTBUWHA2RnFLVVFtdU5aVmtZaGtHeFdMU0xSWHR6THBkN0laVk8vWjlNSnZ1QzFucEdvSk5OVjlmc3IwYkM0VnRDb2RDbGhtR2dQQS9YZGZIS0V4OHBKYlp0czMzSFRub1g5dkJmUHZVcC92Ti8vajBBanZYMzE2dzRLeWlsQ0VjaWhJTkJmdmF6bi9IZi8vdC9ZOTI2bDVrL2J5N1JXS3c2ZnBaU1lob0cwaWl0U3VUeitkMlpiUGFwZ3djUC9mNGszOEo1VWZjQ1hiMXFwVlpLNFRoT0tRS29kRlFYSVFTcDFBaUhEaDNHNS9QeDRROS9tQWUrOUdXNnVycElaekxrY3JtYUYyY0ZwUlNHWWREYzFJVGplZnlQTDM2Umh4NzZLd2FIaHVsb2I2TzVYT05wZEZ1YXBvbVVrcmZXYjZpOXNjdFpVUGNDWGI1czZURFFBT0I1SHBsTW1tUnloRnd1eDRJRjNYem9ReC9pL1RlK241dHYvaFVBK2djR3FnS3VOenpQbzZtNUdjc3dlUDJOTi9qWjAwL3pveDg5enNZTkc3QXNpNmJHUnFLeFdMbjRsMFlwbmZqbDFtMnRrMjMzK1RBRkJMcHNlSEF3MFREUTMwOG9IR2Jod29YTTd1cmlxcXV1NHM2N1BrTDNnZ1VBSkVkR3NHMmJVd1VvSzZWb2JHekVNazF5aFFLWmRMcjZlcVVVRFEwTitDeUxiQzVITnBzRlNwNnFxYkVSZ0tIaFlhU1VOTVRqcDdTNWYyQ2dPcmIwbEdKd2NCQWhCRnByQW9FQXNXZ1VnTUdoSVR6UE84N21TaS9SVXZhYUF3TURQUGFEeDFqNzg1OXo0TUFCZHUzY1NYSmtoT2JtWmhvYkd3ZmUzcjVqMWpsK3REVkIzUXUwZThIOFpGdDdlL3pLSzY3aytodHU0UEwzdklldXJxN3E1blZpY0xEYXFLZkNVNHBZTkVvNm5hYS92NS9Pems2RUVMaXVXejVkS1VrbWsrVHplZUx4T09GUUNFMXBWV0N3L0I0dExTMG9wUmdhR2hyMy9ZUVF6Sm8xaTN3K1R6S1p4Ty8zMDlUVVZMV3hVQ2lRVENhUlV0TGMzSXhoakwzVFZaa0FOVFUxWVphSEtzZU9IZU90dDk3aStlZlg4dW9ycjdCMzc5N0V2djBINnRxRFZtKzBYbjkrOTNkK0o1WFA1M1VGeDNWMWNtUkVEeVFTWi9XVHplVjBMcC9YbDExMm1UWk1VLy9hSno2aHRkWjZjR2hJRHcwUGE2MjF2dXV1dTdScG12cHJYL3RhOWYyMmJ0dW0vWDYvdGl4TDc5eTFTei81azU5b1NrdVlHdEErbjA4TElZNTdUQ21sLytFZi9rR2JwcW5YckZtalBhVjBLcDNXV212OStJOStwQzNMMHRGWVRPL2R0MDk3U28xcDcrRFFrQjRjR3RJRGlZVHVIeGpRdzhta0x0cDIxUzZsbEw3Ly92dVRrOTArNS90VDl3djE4N3NYRUFnRUdCd2FRaWwxVG1OTHJUV2hZSkFmUC9ra216WnRBdUN4NzMrZnYvbWJ2eUVhalpMSlpBQklwVks0cmt1aFVEanVieXRMV1lPRGc3UzF0WEZaWHgrV2FYTDA2RkVPSHo0TVFGOWZINFpoVk1lL3lXUVMxM1ZMM25LVXpZN2pWSC8wT0o1ZktZVmxXUVNEUVJ6SEladk40cm91cVZTcStwcVc1bVo2ZTN2cnUzdGtDdXdrWlZMcDZ1L25PL0ZadTNadDlmZGNMc2RQZi9JVFB2U2hEMVc3MkZBb0JJRFA5KzRSb1lyZ3ROYnMzNytmdSs2OGs0MGJOZ0R3MUZOUGNldXR0ekp2M2p3MmxCK3JrQzZMdnFHaEFZQm9KQUpBWTFNVEFJRkFvSHJkMFZpV2hldTZQUG5qSDdONzkyNVdyVjdOVFRmZVdMM2VhSWFIaCt0ZW9GTjZMNzdTVGJRME45TlVidmdUR3h3Z0dvMVN0RzIrOCtpalNDbTUrK01mQitCclgvODZBRDcvbVFXMFY1YXRraU1qQUl5VS82K1VJcFBOb3JTdVBsZVorQlNMUlZMcE5POGNPVklhL3g0N2RzcjNVRXJoOS91SlJxTWNPM2FNa1pFUlRNc2E5LzdybmZvWDZDbWNwcy9udzNFY3Z2L1lZN3k5YlJzK24rOGtMNnVVSXVEMzg5ajN2MDkvZno4M3ZQZTlQUHp0YjJPYUppKys4QUt2di9FRzBYRDR6RXdwWDl0MVhZRHFJcnJXdXRwdFY1NnJzSDc5ZXVLeEdMTTdPNG5GWW56c294OEZxTlNKUHduRE1NamxjaVFTQ1diUG5zM2l4WXVQRzNJY2QyKzZCc08wenBLNkYraXBmSVRuZWNSak1kQ2F6MzN1Y3p5L2RpMnhXT3k0MTRSQ0lUeWwrT3BYdndyQUgvekJIeUNFNFBPZi96d0EzLzN1ZDk5OXI3SkhHdTg3Y1M0ZUt4QUkwTnZiUzgvQ2hTeFpzb1RPenM1VFhzc3NqMjFYckZqQmJiZmZ6cmF0VzdIRzg2Q3EvajFvM1k5QlQ2VlF3ekJJam96Z0R3UzQrKzY3NlpvenB6cWhxUkFKaDNsNyszWTJidHdJd1AvK1gvK0wvL3ZFRSt6WnN3ZUE1MGVOU3gzSEFTQllIb3NDQklQQjZ1L25FcmEzWXNVS1huNzU1ZXEvbjNuMldXNjY4Y1p4citXNkxnM3hPSysrK2lwSGp4NWxZVzh2eGpocnUzb0tLTFQrQlhvS2RIbmgrOUNoUS9UMjl0TGIyMHMrbjY4K1g5bXZYL3ZjYzlYSG5uamlpZU91c1dIREJsNSs1Uld1V3JPR2FObjdIaXJQektFMGhxeDR1NjZ1cnJPMnNUSUJzeDBIbjJVZFo5OTQ5eFNKUnRteVpRdmJ0bTNqbW11dUdUZmdXcW42SDRUV2ZSZC9LbncrSDZsVWluWHIxdkhFRTArd2QrOWUvS01tUEpGd0dFK3A2bVRvRTcvKzYyemV2SmtYZi9FTE5tN2N5TFhYWFFmQVY3L3lGUUErOXJGU25QQ2Yvc21mOEQvKytJLzUyNy85VzM3ek4zNERLSG5DSzYrOGtreDVod25lN2FiSDhvYVY1eHpIWVhUVWxXM2JBQ2VOVlN2NC9YNTI3dHpKcjk1eEIvLy9GNzdBTTg4OE0rNTRWYzE0MEpwZzNHbFNzVmdrSEludzJjOStscUdoSWZMNS9IRmp1M0FveExjZmZwZ2QyN2NEY08rOTk3S290N2Y2L0QzMzNNTXZYbnlSeHg5L25GMjdkM1ByTGJkdzMzMzM4Y0FERC9ERkwzeWgrcnFGQ3hmeWd4LytFRU5Lc3Rsc2RUWmZtYndjSzgvTVIyOVpWclpLRTRsRXFWaENlWUpWRWFycnVtaXRPVEYvcVczYmRIWjI4dVNUVDZLMTVnTzMzRUxoaEdGTEJUMEZQR2pkQzFSclBlN0F6M1ZkRENucDYrdERBUGxDZ2ZTby9mVjBKc1A4U3k3aDc3LzFMV0xSS0YxZFhTUkhSbkJkRjUvUHgvWFhYOCtqano1S3ZsREFkVjN5K1R6MzMzOC90OTU2SzVzMmI4WXVGbW1kTll2YmJydU5obmljL2xHeHBlbE1ocXV2dVlhSEgzNllVRGlNVXFvcXluUW13eDEzM01IOFN5Nmh1Ym1aVkRxTjY3cWt0V2IxNnRVOC9NZ2ptS1pKTUJna2xVNGZkMCtXWldFWGkzaXVpKzA0SERseWhFV0xGbzE1LzByVjRGbVdzNlR1QmNvcHBrbVZoZTdCd2NIcVk2TzlXQzZYNDVwcnIrV0dHMjRBU3NFWnJ1dGlHQWI1Zko1Z01GanQxbFBwTktsMG1sdyt6N1hYWHN1MTExNWJ2VTdSdGsrS0xjM2xjc3hmc0lCTGx5d0JTakVCbFdDVlhDN0g4dVhMV2JWeUpWQ0tTNVZTNGpnT2MrYk1xWHJ4b2VGaDh2bjhjZGUxYlJ1ZjM4K05OOTNFeSt2V1lWa1c0K2xRS1RVajBNbEdDTVlNNnZROGozZzhUdUNFUmZaTU5rczJsOE9Rc2pUTFR5YVBlNzRpQnNNd3NHMmJ4Q2h4RzRhQjF2cTR4MDc4dTlIL3ptWXlaRWZ0OEZTK0hJWmhWQmZ4VDN6UFhDNUhidFFacWRIWExVWFJ3NXp5Wkd4eDJYUG1DZ1U4enp2SkJsR3JDZmpQZ3JvWDZGaitVMnROS0JSaWVIaVluVHQzWWxsV2FWOGJXTmpiaTkvbkczY1Njam9xWTBXdGRWVVFKMDZDUnIvbVFtSlpGbzVkNU5YWFhzUHpYS1NRRklwRnVoY3NvTEdwaVh6KytMTlZxdjduU0ZOQW9HUGc4L2tJQkFMODN1LytMdC83M2o4d3UzTTJHczNCZzRlNDc0LytpRC8rNHo5aGFIajRyTTdEZTU1SE9Cd21NbXBYcVdqYm1LYko0T0FnVWtvOHo2c0dEbGNZSzZielhHbHNhT0RiMy80MnYvMWJ2MGw3UndlR1lmRE80Y1BjZnNjZFBQcWQ3eElJQkk1YjU1MVpCNjBCOUJoemVNdXl5R2F6N042OUM1L1BYL0owNWZIb3pwMDdnVkozZXpZQ2pjVmk3TnUzajYvODJaL2hPQTYvOS91L3owc3Z2Y1RlUFh2NGk3LzRpK3Jyamg0N3hxYy8vV20yYjkvT0J6N3dBVDcxcVU4QjRMZ3VVc3Jxb3ZxNVJ2WVBEQXhndTE1MTl5Z1lDckZ2NzE1U3FSUU5EWTNIQ2RUenZKbXR6a2xuakc1VWE0MlVzalFHRFFUd0J3TDQvWDVDb1ZCMXEvTnN1OTlnSU1ETEw3L01Zei80QVR0MzdlSzJXMjhsbDh1eHBEd0pldWloaDNqOWpUZFFTdkdOYjN5RDFaZGZ6bWMvKzFrZWZQQkJYbnZ0TlRadDJzVGh3NGY1eGplK3dldHZ2RkU5UjNTMkJJTkJRZ0UvZnIrL2RHOStQL0Y0Zk16QVpzOXpaenpvcERORzdrUWhSQ21DS0pQQjg3enFHTkZ4bkdwczU3blExTlJFUzNNemhVS0J1ejd5RWZLNUhDOXQzY296enp5RDR6Zzg4c2dqZk9RakgrSGFhNitscWJHUkZTdFdzSGJ0V2o3LytjOXoxMTEzc1hIVEpoWXZYc3hmZmZPYi9PRHh4MW15ZUhFMXV1bE1LUmFMRkl2RjZqMVZscS9HR2tiVS95cm9WQkRvR0QyazUza0VnMEdhVzFvWVRvNlVkbHEwcG1nN3RMZTFBK2MyZ1VtTmpDQU5nOXR2dTQxdmZldGJORFUxa1J3WjRkREJnd3drRW56aEMxL2cwVWNmUlVqSjQ0OC96cGUrOUNVMmJ0cEVNQmpramc5K2tFY2VlWVFONjljemI5NDhYbnp4UlpZdlczYldOa1NpRVR4ZFd1QTNESU9CeENBclY2MGlFZzVYWXdVcVRJVnd1L29YNkJoVWRuRCs3Q3RmNVJPZitBUStmd0MweGxPS3ZyNCtSbEtwYzBvWTF0alVoR1BidlBubW0xeC8vZlZrczFsYVdscm9uRDJiNjYrL25uZ3N4aDk5N25NODhNQURQUG5ra3pRME5QRE1zODhTQ0FhNTdiYmJXTFZxRmN1WEwyZjI3Tm5jZWVlZDVNY0preHVQa1ZTSzIyLy9WWjc2NTNsb3BaR0dKSi9MczJqeFlyVFc1QXZIeitKck1hM2syVElsQlNxRUlKZkxNVy9lUEhxNnU0OTdMbDhva0VxbGpsc3pORTJ6R2l0YWNqb25lNTZpYlhQampUZnkxRDgvVFNhVDVzb3JyaUNUelZJc0ZtbHVhdUxtbTI5bTNyeDV6SnM3bDFXclZtRmFGa1hINFo1NzdpR1h5eEh3KzNuMXRkZDQ0WVVYV0wxNk5mRllqRXcyVzQzU0gyVTlRcFM2YnR1MmoxdkNLaFFLeE9OeFB2QXJIemp1THp5dFNZeVJJV1hHZzlZQTQ3WEJpWXZob3hGU1Z2TWVWVWlPak9CNUhrSkl4cHBZSzZYdytYd3N2YlEwS2Nwa3MvaDhwWWxLS3AzbSt1dXVRNWV2TS8rU1N4aEpwU21rMGtTalVacWFta2dNRGhHTFJmbFg3M3NmcnVjeFdENzVlZUlzWHV1UzU3TXNpOGJ5Y1JBbzdVUkpLU2tVQ21NR0tJOFdaK1dhTSt1Z2RVYmxDTWlzMXRKSjNNMWJ0dkRVVDMvS2hnM3JHVXdrU29mdXBKelVmTnZsWTU4WWhrRjdlenQ5SzFadys2L2V3Y0tlSHVEZGJkRXpXWjZhOGFCMWhOWWF3elJwYW1oZzQ4YU4vUG1mUDhqemE1L2owS0hEQkFJQlFxRVFVb2lhS0tjZ0tNV3E1bkk1SG5ua1VmNzZvWWU0NmVhYitmL3V2WTg1WFYxbmZOWmZ6WXhCYTRFems1U1FrcWFHQmw1YXQ0NS84NjgvU1A5QWdnWHpMK0hTU3krdGV0WmFRd2lCa0pMazhERGYvT1pmOFpNbm4rUUhQM3ljMWF0WE01QkluUDRDTlhoUFowdjlMOVNmQVVvcFdwcWFlT3FwcDNqZkRkZWh0YWJ2c3VVRWc4RnFHc05hUkd1TjhqeGlzUmg5bHkwbmtSamdWMjYraWZVYk50RGEwbEk5RVREdTMwK0JNZWlVRjZqV21uZzhUbUp3a0QvOHpHZndXVDQ2T3p2UE9WaGtzbkJkbDU2ZWhhVFRhZjdUSjMrTFZEcGRPaEI0Q3FaQXZQSVVFT2hwMmtBSWdkL240OEd2Zm9VdFc3ZlNzM0JoM1ltemd1TTQ5UGIyOHRycmIvQi9uM2lDd0drS1FOUnF6M0EyMUwxQVQ5Y0U4WGljZDQ0YzRlbC8vbWZhMjJiVlpNR0VzeVVTRHZKL2Z2UTRqdVBnRHdUR2ZkMVVpR2FxZTRHZURzczBPYkIvUDRPRGcwUWlrYnIzS2xwcldscGEyYkpsQzd2MzdDRldUcGt6RmxOaEhYUUtDUFQwaldEYjlqa25GcXRGVE11a2tNOHpPSmc0NVQzVis1Y1Jwb1JBendBSlU2cmNwYTZrT2grbitTWW9vbjh5bUJZQ0ZlWDk3YW5FcVlLZEs0L09CSXRNUWQ1dCtNbndQdUtDYmhwTWhjd2k5Uy9RQzlBRWxRajh5cWxLMjdZblpieXF0Y2Juc3dpRnduaWVkOTdqNXFuUXhkZTlRTSszQ2JUV21KYUo4aFRidCsrZ2FOc0VBZ0cwVWhmZGgwb3BLUllMbUlaSmIrL0MwaWxPeHpsbmtjNEl0QVk0TDBjbkJGSUlYTWRsKzQ2ZHRMVzNjOVZWYTJodG5WV0tEYjJJNlRVclE0disvZ0ZlZi8wMXRyMjluZDZGUGRXeitPZkNWRmdIclh1Qm5wZVQwQnJUc3RpN2R4K3hXSXlQZnZTakxGNjhtS2FtcG5HcmE0eUZZUmpJY294cEJhVVVudkpRWjNpd3N1SWxCd2NIV2Jpd2g3Lzh5Mit5Wis5ZUxsMnlHTnQyVHZQWFkxT0xaY2JQbHJvWDZQbDI4a29wWE5kbFZWOGYzZDNkekprekJ4Zy8xMmRsdk9yeitjb2k5aWdXYlFxRkFvN3RvSlJDU29ubHMwcW5MaU4rcEpTNHJsdktYS2YxdUc3Zk1BeTZ1cnJRV25OWjMyVzh2TzRsM1BNNE9heW5RQjgvQlFSNmZsUXloUGo5ZnFLUkNGTEtrN0xnalNaUTNscnM3KzhuTlpKaWVIaVlUQ1l6cHJjeXBFRWtHcUdoc1lHR2VBTk56VTE0bm5kU0V0MEtydXNTREFhSngySUVnMEZNd3p5dnBhSXBvTThaZ1paNHR5N1BxYnBGd3pBWUhoNW05NjdkOUIvcngrZjMwZGpZU0dkbko1Rm9oSUEvZ0pDaWVwNG9uVTR6UERUTXpoMDdjVjJYV1cyejZPN3VKaHdKNDdsamUyalA4MHEyS0RYV2llcXp1NnVaWmFhcHcrbldIMDNUeEhWZE5tM2FoQ0VOVnF4YVFVdExDL0Y0SEdsSTdLS043ZGlsMDVaU1lsa1dQcDhQcFJUSlpKTEVRSUtkTzNmeTlyYTNXWDM1NmxObU5ybFFhNkZxQ3JqUUdZR2VJWldFc3N1WEw2ZTF0UlYvd0U4aWtXRFhybDBNRFE2UnkrV09DK016VElOd09FeHpVek9OVFkzMExPeGg3aVZ6R1V3TVZzc3JUaFR2SmkrYm1TUk5HN1RXK1B3K21wdWJPWFRvRU52ZjNrNHFsY0t5ckZKU3NVaUVRQ0NBWVJoNG5rZWhVQ0NUelREUVA0QnQyOFFiNGl4WnZJVDJ6blp5MlJ6RlluSENOd05tdXZocGd0YWFjRGhNb1ZEZ2xWZGU0WjNENzlEUTBNRGl4WXVaMVRhTGVEeU9hWmxvcGF1emVDa2x0bU9USEU0eU1EREEwYU5IV2JkdUhYUG56bVZoNzBKQ29SQzVYRzVDUlRxVG83NFdtT0FtcUloelpHU0UxMTk3bldLeFNOK0tQaFlzV0lCcG1veU1qSERvMEtGcU42K1VLcVh2RGdWcGJtcW1wYldGOXZaMmVoZjFzbS92UGpadTJNalJvMGU1K3VxckNVZkNFeXJTbVdXbUd1QjhaN3FudkhaWm5NbGtraGVlZjRHbXBpWnV1T0VHR2hvYlNDUVN2TDN0N1dwNjhVQWdRREFVeEcvNWNWeUh4RUNDd3djUEk2UmdWdHNzZW50N1diUjRFYTJ0cmJ6MTFsczg5OXh6WEhmOWRUUTJOcExKWkNaRXBHb0tuRHV1ZTRGT0pKVXlOcSsrOGlyTnpjMWNjKzAxQkVOQnRtL2Z6aSszL0JJcEpGMXp1dWpvN0tDaG9hRlU0a2FVVGxNVzdTTERROE1jUG5TWWd3Y09NdEEvUU4rS1BtYlBuczJWYTY3a3hlZGY1TTAzM3VTS0s2L0E3L2RQeURtcG1hM09LWTdQNzJQYnRtMW9yVmx6OVJxQ3dTQWIxbTlnNjVhdExPaGV3TktsUzRuRlk2VmM5b2tFeWVFa3RtUGo5L2xwYUd5Z3JhMk5ycTR1ZWhmMXNublRadGIrZkMxcnJsNUR6OEllcnIzdVduNys3TS9ac1gwSHF5OWZQU0VDVlZOZ3IzTkdvS2NnbjgvVDJkbkpuRGx6Q0FhRHZMM3RiYlp1MmNyeXZ1VXNYYm9VVDNsc2YzczdCdzRjcUZiak1DMFR6L1Z3ZGppRXcySG16cHRMZDA4M1Y2NjVra0Fnd1BxMzFpTVF6TDFrTHUrNTRqMG4xWisva0tncGNDaXAvZ1U2Z1UzZ09SNnhlSXhnSU1peG84ZllzbmtMdll0NldicHNLYTdqc21IOUJuYnYyazFiZXh0TGx5MmxxYWtKeTJkaEYyMkdoNGZadTJjdmI3ejJCcGwwaHFYTGxyTDY4dFdrMDJrMmI5NU1jMHN6RFEwTk9JNHpZZkduVTJFTU9pMk9mSndyUWdvODE4TzJiWFpzMzBFb0ZHTEpwVXR3WFplTkd6YXliKzgrVmwrK211dmZlejN6Rjh3djdSb05KeEZDME5QVHczWFhYOGZLVlN2WnRuVWJXelp2QVFFclZxNUFTc21lM1h0QU1LSEIwVk9naDU4Q0hyU0NFQk9TaThnMFRYSzVIQ01qSTNUM2xQYlJkKzNjeGE2ZHUxaTVlaVdMbGl3aW5Vcno5cmEzT1hMa0NHaVFocVNycTR1ZWhUMHNYcklZMjdiWnZuMDdyYk5hbVR0dkx2TVh6R2Z2bnIzTW1Uc0gzM21VeEJtUFVUdEpkZC9GMTcwSHJTd3pUZFJ5dDJtYURBOE5ZeGdHYlcxdDJMYk40VU9IYVdsdFlmNzgrU1NIazd5eTdoVU9IRGhBZDA4M3F5NWZSVmRYRjF0L3VaVU5HelpRS0JSWXZHUXhyYTJ0N055eGsyS2hTR3RySzFwcmhvZUh4NjMxZmlHWUNtUFF1aGZveFdCa1pJUmdNRWc0SENZMWtpS2J5ZEkxcDR0QU1NQ0IvUWNZVGc1ejVab3JXYlI0RWUzdDdTeGR0cFExVjYvaDJORmo3TjJ6RjUvZlIzdEhPNWwwaHBHUkVRS0JBRDdMUjdFd2R0amRoV0lxSEpxYkVlaHAwRnJqT0E0K253L1RNa3V4b21naWtRaU83WkJNSnVubzZLQzl2WjEzRHIvREc2Ky93ZkR3TUhQbXpDbGxWazRrcWhGT3hXSVIyN2J4Ky8ybDgwYnV1VVhLbjRYeEUzdjlpMEQ5Qy9RaXRFR2xLRzNsdlNyL3J1d2tWakllMjdiTmdRTUhLQlFLQ0NGS2tmU2VXNjBidXVUU0pZVExsWStMZHZHY0NubWRvY1hBMUFoWXJudUJUblFUQ0NHd2ZLWFRsWlV5M1ZDcVYxUXBtWjNQNTdGdHV4UUZiNXJrc2prTXc2Q3hxWkdoeEJENzkrK251Ym1adnBWOUJJTkJkdTNhUmFGUW9LbXBhVUtTbVZVMFB4VUVPblZtOFJOSU9CeG1vSCtBUXFGQU9CekdORTB5NlF4U1NvS2hJQWNQSGlRMWtxS3hzWkZBSU1DUkkwZm9YdGhOVDA4UG1YU0cxMTU1amFOSGpoS1B4K252NytmWXNXTmNkdGxsdExhMmtzL25KOHp1S1RBRXJYOFBPdEY0bmtkRHZBSFA4eGhPRGhNS2hRaUZRaVFTQ2ZMNVBNMU56WGlleDJDaWxEMXYwZUpGSkJJSnRtM2RSaUFRWU1YS0ZmU3Q2TU8yYlE0ZVBJaGxXVnh4NVJYTW16K1BZckU0b1Y1dXhvUFdCQlBiQ3E3ckVvNldLaHdmMkhlQTdnWGRORGMzczJYTEZvYUdodWpvNktDcnE0dmRlM2JUTWJ1RCtRdm1rMDZuMmZEV0JqelBZK0hDaFN4ZHZwVGVSYjA0cmtQQUg2aWVWd0ltWkF3NlVlWEFKNE1wSU5DSlJaVkx3blQzZE9NNkx1bE1tdGxkczltM2J4KzdkKyttcmEyTlpjdVg4ZXd6ei9MYXE2L3gvaHZmejdKbHl6QU5rMjFidDNId3dFSGFPOXFKUkNLZ0ladk4wdDdSVGpRV3hYVW1OdFB6VkJEb1RCZC9CdGkyemR5NWMxblF2WUJDdm9CcG1TeTVkQW52SEhxSDNidDJFMitJczNMVlNsS3BGQys5OUJMWlhKYStsWDFjZGMxVnRMUzJNSkljWWYrKy9lemJ0NDlFSW9IbmVSalNPUDBibnljelo1S21DVUtJNmxsMktVdjFNZHM3MnBremR3NGJOMjRrM2hCbjd0eTVTQ0ZadDI0ZHp5ZWZaOW55WlhSMmR0TFIyVUVtbmNHMjdYSnlNQjlhNitwUzFFVFpDek1ldENhNFVHMVFXYmM4VTlFVUNnWDZWdlRSMHRyQzg4ODl6NUVqUjVqVlBvc2JiN3FSNXBabTNuempUWjc1bDJkNDgvVTNTMlVVL1Q0c3l5cWx4UEc4OFhON25xVWQ0MUdxV0ZmL0NwMENIdlNDS1JTdmZPRHRUTVRodVI2V2FiRjgrWEwyUi9jRGdud3VqOS92WitYS2xjeVpNNGQ5ZS9kVmE3bFhFanFVM3VyVTR2U1VBaUVRNXhGaG9MV2UwT013RjRzcElORHpRMHFKNHpna2g1TWtrMGthR2hvSWgwdjVPVS9ubnBWU1JDSVJWcTFlUlQ2ZnIyWUZVVXJSMmRsQlIwY0hydXRXSHpkOXB4aDNDbEhOVDVwSUpCZ2FITVIySEF4cDRLcXpuVXhkMkVTNGs4bjBGbWg1eTdLeHNaSDE2OStpdTZjYnBSVFJXQXhUeXZOYjZLN1UwcXh1azQ2Zk5LeGtTaWxjY0NTVjR2WFhYMmY5K3ZXMHREU2YwMXRYZDVMcVA1aHBtZ3RVYTF6WHBhMnRqVlE2d3c5LzhBUDI3ZDFMSkJwOVYxUVhDeUV3cEN5dG9XN1lRRFFhWWM2Y0xvcUZjMHZ3b0pXYU9SYy9GUkJDNERnT1BkMEw2Ty92Wi9QbVRmZ3MzNlNNMzRRUU9MWkRRenhPUjBjN2puMnUyWlZMVlp0bnV2aGE0QUxscUxkdG01YVdGbHBiVzFHcUVzQnhNZlBVbDZLbHBKUm93SGJzYzU0a2xVWUxlaVp4UXkxd29UeWRFR0tNeXNjWHYzMVZlUW5xZkdid2NPRXk1RTAyZGI4T2VpR3BsUWE5SUhaTUVRODZJOUFwaUJBQ2paNFNDL1ZUUUtCVHJJVGNCVUxycVpIZGJnb0lkSWF4bUNxVHBDa2cwTHB2Z3d2UHUyZW02djdEbVFJQ25lRkVCR1VQT3BQNlpvYmFSYytNUVdlb1ZRUmFUNDI5K1BvWHFKNlp4cDlJYVNkSm9iU2UyTlFsRjRHNkY2aEdUK3pCbmpxbE5EM1M2Y20yNDN5cGU0RUNtY2syb0ZaUlNzMElkTkxSWkNmYmhGcERDSUhydWxpbU5UR3BteThpOVMvUWFUZ0NGVUpVby9USHc3WnQvQUgvUmJScVlxajdhS1pJSkJJRWFHcHNIUGMxczd0bUk2WEVORXM1NU9zWkFUaU9UU1FTNFpMNWx3RFEwbnh5NUgxSGUvdkZOV3lDcU8vV0FuYnYzcDFldS9ZNVJsSnB0RmJWNVJVQkJZQm9MTXFtVFp0TTIzWk1yVFhGb2ozWkpwOFhHc2htTXF4Y3VVbzkreS9QZWkwdHpTcWZMMmpBSjZXUVFrQWdHQ0tWR3NFdUZ1dStmeEgxdmh2V1BYLytIdzRuaDc4c2hVQklpZks4Zy9tc2JXcEZCMmpiOFZ3RUdORjR6UEE4dCs1M1JqWGxqSHVXcVlhSGg1VUc3VE44RnBBTFJmd3B3elRhUGMvRHNpeWlzZGlEdTNidC9zeGsyM3crMUwwSDlmdjlCOXZhMnFyL05nenB5Nlp6ZisvWTZuZE4wNHhYdkNxaWR1STl6eGNCS0sxbFozdFFTaWxCQ3d4TGZqY1FzbTZwM0dJNXQvN0FwQnA2QWFoN2dUcWVrd2o0QTFYeEdZYlJadnJNcE92YTkvb0Qvb2NxeHpkRStaek9WRUZRT2sxZ1NJT2liZDl2K3VVZXk3Sit5L05LMis5S0tVTEI0T0hKdGZMOHFYdUJtb2J2N2RHZTBmTThncUhndmNyVFYzcXU5M1BMTXY1VkpXNjM3Z2RrSjJCSUE4ZHg5dGhlOGU5Q1Z1eGZSbGVka1ZMaXV0Nk95YlB1d2xEM0FyVXNEb0xZNzNsNlh2VUFwTmFOUHIvdlEyVEUrNDJBb1ZFWFBvdHhMV0JJaVNOWkdZbUVmOVV5ekFXTzY1YlRpb1BXT3FkaDgyVGJlTDdVL1Rwb0pwT2xXTFRYR3NhN3Q2S1VKaFFPZmpsUlNIQzAvK2pWb1dBQVE4b3A4U09sUUVwQktCakVWZDdkbVV3NkZmRDUvdG85THQrVFFDbjlrdWU1RTVlKytTSlI5eDYwYUhzWXBsNHZwZmkxMFYyYzUzcUVJNEducy9uaXI3aEtmY3kwek85NHlxdnJibDVya0VMaTkvczUvTTQ3bjBzTUpyNHpiOTdjdjBNUU9mRzFBbjVoaUxyM1AvVXZVTXMwMEVwdE9IR0M3amdPVFkzTk54dEc2cjBEZ3dQZmJXdVoxV0FheGwvVzh6a3lpVUFhRXR0MUhrd01EOTR2VGJra0dvMzhSOGM1c1p5TnhsTnFremNGd3UzcWZoMDBIbzlobUlab245VjJ5TEtzenRGVk0wclo0a1J1LzRHRGk2TEJ5S0hPOXZhN1BNay9hYVhxcm9TUUVBTFROSEFjNTlOSCt3ZStZZm1NUUZORHd6N1g5ZHBHdDJFNXhWT2hhTnN0U3Fuczd0MTdKdEhxODZmdSs0QndPSUxQQ21qYmR2N25pZDEzNlZ3T29jN096aWN4Qk5sQy92dUdOSzdSbW1PRzhlNTRydFovVE5NQXRPM1k5bDFIang3N1JuSWtTVk5ENDArVVVtMWo5UWhLcWI4VFFtWk5jK0xLTEY0czZ0NkQ5dlgxbGMvZktFdEtNZVM2YnVURWZFWlNTZ3pUL003T25idnVEZ1lDZE02ZUhaWHdqNlpwM2FhVVFxbnhFOHBPTHFJY21lUzhLWkIzcGpPcHZVZjdqeEdMeFI2YzNkRnhUNkY0Y2p5eUFQTEZZcXRTS2lHRW9ONDlhTjJQUVE4ZVBGalpXWEVhR3h1KzF4Q1AvNlp0SDcvZnJwVENKOFRIZ29IQXNaRlUrak1kN1Y2NjREaTNPMjcydDhPaDBBT21ZVGE2WG0zRlBVc3AwVXBwcmZWOXFVejZ5d0NXWmRMZDAzMmZJY1E5K1hGU2lHdDR3bTlaaVZJT3h2cDJQakFGUE9qb1Jnb0UvRDJYTGw2ODAzYWNNYmMxVGRNZ215czhpTmFmY1Z5SFFxR0kzK2Z2aUVXaWZ5R2wvSEF0ZlJaS2VjODZqdmRwWWNndFNya2trMG5pOGRpOW9WRDRBVytjTDVPUUFvRzRTc01ybGNjMmI5NXkwV3llQ09wZW9GMWRYVUJwdk9sNUhvME5EZi9ONy9kOTBYRk9UbDBveWxtTWk4WGlvNWxNNXVQU01FQkwwSnA0UEhhRjU2bi9LdURmVld0elhpU3FSUStVUnFHZkJyNmN5MmFmTXd5SnExMEMvZ0JTeXY4cHBmeDlLZVZKdG1sZCt2SzVudmUvYy9uOEp3MzU3dFJpMTY3ZEYrMCtKb0s2RjJobloyZjE5MUlRTDdKOVZrc2FJVUpLalgwc3ZKd1Q5RGxQcVU5S0tYZTVqa3N3RUNvbHRIWHM2end0UHU0enpac1F6Q3ZsMnJ6UXlXekwzYThRU0NGeFhTZWg0YWNHeG1OS3FTZTFDV2dYclJWRjIrNEloNk1QV2FiNXdaT3o3NVdRNVFYOEkwZU9oUXUyblpPajFqK0hoNGN1b04wWG43b1g2Rmpqc01hR2h2Y3ZtSC9KTThWeTZaZngvazRJNGRtT2ZaY1E0bkhIZGpFUUlBVk9VV0VacGxGVXhidjlsdjh1NEJhQkdLMnIwdWhPai83SGVBYSsrNnNVNWVQQWFBUUN6M05mVk9oL2RCem5PMHFyZER3Y3gxTWUybFNVTjhiZUw3VHhJeUZGOUZUM0lZVWdtVXA5ZkdobytGRXBqMStZR1JrWk9ZVnh0VS9kQzdUOWhNaHhYUlpOYTB2emcxS0llOGJ6b3FPUlVuNDNuYzU4VG11MVB4YUxrczhXY0YyTnB4eVVxeEJDTG9oRUl1OXhQWGNlY0NXd0VyaEVsTkxJbFJnMUtaR2kxQTByclVxL285RmFIL0k4YjRPVTRsWFBVM3UwMXV0OWxuOWJKcGNtR0E0aU5Qajh2dExmU05tQjFuOXFHUExYS3dVUnhxSlVkOG5DODlRamh3NGYrVFhET0xsQ1NYOS8vOWw5b0RWRzNRdDAwYUpGSnozbWVSNmVwNGpISWk4cnoxdmpLWFhLWmFUeUdSOWJLZjNGZ04vNjl2REl5RkhQMHdRREFWekh4WE1Wd1dBUXh5bVZrOGtYczFqU21tdFpWby9TdWtzSTBhazlGUkZDQm9WQTJLNlRONlNSTTAzelNMRllPQ2lsM0F2c3llY0x5dktaV0thSjQ3cjRMQi9TRVBnQ1ZybTJ2TmNvRVhkTEtmOEVSUFIwczNBaEJhN2o3aXdXN1VWYUNDM0h1TWZkdTJmR29KTktJQkE0NmJIS1Bma3NIM1BtekU1WWx0Vjh1cnJzNVM0ZnJYWFJjWnh2NXZPRnIxdVdlVEFZQ0dJN0RyWmo0N2NDZ0NDZFRXRmdZSmdHV3BlaWg1U3RNS1NCa0pES3BiRXNINUZ3bUV3NmpXVlpJRXBSMDZiUEpPRDNVYkNMcEVaU3RMVzM0WG5lTEVQSzN3TStKU0IydWhiUldtT2FKcEZ3Mk5teloyL0QwZjcrM0hoZndEUHBRV3FadWhmbzZSYlllN3E3bDRYRDRaKzRualAzVEpjRkRjUEFkVjFIS2ZYM1Vob3ZlcDc3UXI1UU9CaU5SZ0dCNHhSeGlrVjh2aEJhSzBTNVBLSXBUVXpUSUZmTUVncUZjUjJGNjluRUcrS2tVaW44UGd2TDU4ZnpGRXA1c3dyNXd2dWkwY2hWUW9qZjFGcUh6L1NlUzk3V0hYWnQ5NFBIK3Z0ZlRLWEhQLzVlNysxYjl3djE0d2xVYTQwb1RSaTJLTSs3UWlCMkNDbGlweXBEV01IelBLU1VsaUhsYnl1dGY5czBEUlVNQm4rc2xmNFhCQzhJSWJZTFE5aW1hU0NrUkpvbTZXd0tuOC9FRjdBb0tra29FaVNWekNBTnNId21oalFzclhRM2NJT0E5L2tzNnc2L3p4Y2NiMlkrSGxJSVROTlUrdzhjV0pOS3BYZWM2ak9ZQ3RTOUJ6MXgxbHFoSXREdUJRc0lCd05rYzdrMmFSZy9Dd2I4bDdudTJRY3dTeW1yM2FWR0g5TktKNlNRZ3dnR0VPSlFzVmhNbVlaUk5Bd0R4N0Y5bHM4WFU1NmFyYlZ1TlUyelJTblZBcUpkeXZKaGpYUDQyR1ZwVG5aQVNubmp6dDI3ZCtaeitkT0tzOTY3K0xyM29HZUNsQUxiY1kvaE9OZjZMT3VmaEJDM3dObDFmNk1iV2lMYk1IZzNpa2hyUW9FQXFseFp3KzhQVk92TVY1SXNWTDVJNStvUVNudnkzaTl5eGVKZHNXamt5TVVvNTEwTDFIMDAwNW1nZGVsNGhOYWtzN25jclVxcFA0THh2ZTlwcjhmSkpWNjhVVjExMWRPVzYzWldkcWJPUlp4Q0NIeVdSYUZZL0VvNm03MU9LM1ZrS25mcEp6SXRCRnBCVUpvQUZZckZCN0xaN0hWS3FlZHJ0YkdybFk5ZGQzMHlsZnFBNjZrL0ZKejdsNnBlbVY1M1MrbjRzUkFDMS9OK2tjM2wzNnMxbnhkQ0ZFM1RSRWhSRTRITW8ySUJ2dXE0enFwc052ZTBMQytEVFRlbW5VQXJWTFlJRWZ5cDdUZ0xVcW4wL2NwVEJTa25Ud2hTeXZJdWxIb3dsVTVmVXJUdHo1cW1nV2xNai9IbVdFeGJnVllvZTZ0M0JvZUdQcGRPcHhkS0tiL2tlZDc2U3VUVFJJcTFjdWx5ZC81THUyaC9QVmNvTFBhVStveFNhditFdlhFZE1lMEZDdStHNFNtdEQzbGEzK2U0N2lyWGRUOVFMQmEvcjVRcVZwNi9FTzlUR1VPV2hDODA4T05jUHYrdmxWTExiTHY0WDIzYjNpN2x5WHZxMDVWcHNjeDBwcFNLdUZZTHl6NmRTcVdmRGdTREhRRy83MnJidG51Q3dlQVZ3TlZDaUhZNGZzbElWdU5HU2x1YWxlZEVKVndQOER3MW9MVjZ6VENNbDIzYjNtbmJ6cXZoY0hpLzY3Z292eXAxOFZNZ0N2NUNNaVBRY2FoNE95SEVFZGQxZjVqTlpRa0VBa2hwV0xsOGJwa3A1VUxMNzF1c0ZSMUMwT0Y0WGxRZ0xDRVFXaXRiU3BuVjZLTmE2M2MwN0hBZGQyZlJMbTZXVWhiQ29SQ3U1K0c2enJ2dlU5Y245aWVPL3dlV1BpdHhuekZwSXdBQUFBQkpSVTVFcmtKZ2dnPT0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMSIsIkZJRE9fMl8xX1BSRSJdLCJleHRlbnNpb25zIjpbImhtYWMtc2VjcmV0IiwiY3JlZFByb3RlY3QiXSwiYWFndWlkIjoiNDU0ZTUzNDY0OTQ0NGZmZDZjOTM4ZTkyNjcxOTNlOWIiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsInV2IjpmYWxzZSwicGluVXZBdXRoVG9rZW4iOnRydWUsIm5vTWNHYVBlcm1pc3Npb25zV2l0aENsaWVudFBpbiI6ZmFsc2UsImxhcmdlQmxvYnMiOmZhbHNlLCJiaW9FbnJvbGwiOmZhbHNlLCJ1c2VyVmVyaWZpY2F0aW9uTWdtdFByZXZpZXciOmZhbHNlLCJ1dkJpb0Vucm9sbCI6ZmFsc2UsImF1dGhuckNmZyI6ZmFsc2UsInV2QWNmZyI6ZmFsc2UsImNyZWRNZ210Ijp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWUsInNldE1pblBJTkxlbmd0aCI6ZmFsc2UsIm1ha2VDcmVkVXZOb3RScWQiOmZhbHNlLCJhbHdheXNVdiI6ZmFsc2V9LCJtYXhNc2dTaXplIjoxNTAwLCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxLDJdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjEwLCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjE5MiwidHJhbnNwb3J0cyI6WyJ1c2IiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fV0sImZvcmNlUElOQ2hhbmdlIjpmYWxzZSwibWluUElOTGVuZ3RoIjo0LCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6MTAsInV2TW9kYWxpdHkiOjJ9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0wNC0xNiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IkVuc3VyaXR5IEFVVEggQmlvUHJvIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNDA0MTYwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblByb2ZpbGVzIjpbImNvbnN1bWVyIl0sImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMDQtMTYiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6Mn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNC0wOS0wNSJ9LHsiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbImE3YzY1YWM5NDRlOGQ1MTQ2ZjVjYmViNWZjMzI4OTMxOTA4YTUzNTIiXSwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiYTdjNjVhYzk0NGU4ZDUxNDZmNWNiZWI1ZmMzMjg5MzE5MDhhNTM1MiJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiS09OQUkgU2VjcDI1NlIxIENvbmZvcm1hbmNlIFRlc3RpbmcgVTJGIEF1dGhlbnRpY2F0b3IifSwiZGVzY3JpcHRpb24iOiJLT05BSSBTZWNwMjU2UjEgQ29uZm9ybWFuY2UgVGVzdGluZyBVMkYgQXV0aGVudGljYXRvciIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyLCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50IiwicmVtb3RlX2hhbmRsZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQmt6Q0NBVGlnQXdJQkFnSUJBVEFLQmdncWhrak9QUVFEQWpCQU1Rc3dDUVlEVlFRR0V3SkxVakVOTUFzR0ExVUVDaE1FUzI5dVlURVFNQTRHQTFVRUN4TUhVSEpwZG1GMFpURVFNQTRHQTFVRUF4TUhTMjl1WVVWRFF6QWVGdzB4TmpBMU1Ua3dNelUyTURCYUZ3MHlOakExTVRrd016VTJNREJhTUVBeEN6QUpCZ05WQkFZVEFrdFNNUTB3Q3dZRFZRUUtFd1JMYjI1aE1SQXdEZ1lEVlFRTEV3ZFFjbWwyWVhSbE1SQXdEZ1lEVlFRREV3ZExiMjVoUlVORE1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRWVNVWVFK3BkcVNQai9vclhVeG0vajVjK0RzKzZReWVZbC9zVnhMM0RuR3FIek54UFd0amRMWU9POU1zZkFCM3BBU3FZYkpYSy8vYkZWMkxQNVFLSm5xTWpNQ0V3RHdZRFZSMFRBUUgvQkFVd0F3RUIvekFPQmdOVkhROEJBZjhFQkFNQ0FRWXdDZ1lJS29aSXpqMEVBd0lEU1FBd1JnSWhBTTVGS0JYWDJHcklLZmZSV2k3TmF2cG9VNTlHaXJKaVZ4WEVCZXJLUDJidEFpRUE2SWNCUkNPS0MwZUlDYjlqeUtid2FRcDJkNGMrbTZ0L2IzRHJZYy9Cc0lBPSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFTTUFBQUF3Q0FZQUFBQmFGUnlzQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUVuUUFBQkowQWQ1bUgzZ0FBRUcyU1VSQlZIaGU3WDBIZUp4bmxhN2FxQmVYVkVMWXdBMTFMeXhrbDJYaGhrQW9DUVRDTHJ0UGx1ZkNoY3ZlSmR3QVM5Z3NzUEFzZ1pERVhiWjZjUzlKWE9NU0oyNko0N2ozSmx1MnVqVFNTSnJSakVabGVsRTU5MzNQUDc4OFZteU5GK2MrYStmUmVmVHBML1AvMzNlK2N0N3ZuUE9WUDBrbWFaSnVZaHFPaGFaV203eTI2MDNadUhXN3JOM3lxdXpjZTBCNkJuMWp2NGVIUjJSNGRFUkdjUzR5RWhjbTZVYWhTVENhcEp1YUNEUW56OVRLc2hmV1NGRjV0Y3l2cUphNXBSVXlxNmhVaWhjdGtYTVg2MlFvOWh5QmlHRmtoSGRHWXNkSnVsRm9Fb3dtNmFZbWgydEFGcTk0VVo2ZE5VL0JxTEM4U29xcUZzbjhxb1V5dTdSY2xxNWNKYTcrQVFXam9aSGh5OEJvYUNqQ0tDYnBCcUZKTUpxa201b09uemdqQzhxcXBMQ2tRaXFYclRTMG9wSXltVk5XSWZNcXFtVE8vQVZTMTlRc1VhQlFPQm9CQkNrY2FSZ2VqbW9jazNSajBDUVlUZEpOVFdzM3ZpS3ppOHNVaE5SRUs2OVVyZWo1b2hLWkN6QXFLaXVYNDZmUFhHYW1YZEtLSm4xR054Sk5ndEVrM2RTMGFmc3VLVm00UklHSVp0bUM2a1ZTdG15RnpDZ3VsZms0bjFkVUxJZU9IWDhiR0VVaUlUMU8wbzFEazJBMFNUYzFuVGgvVWNHSXB0bE1BQkExb25tVjFZWm1WTDFRTmFQNjVoWTEwemlhUmpPTlBxUFJVY0xUSkJqZFNEUUpScE4wVXhPTnJXVnIxNnQvaUtObnM2QWRVU09hV1Y0aHN5b3E1WVUxYXcwZ3duUFJZWUFRamlZUVRZNm0zVmlVNUpLb3lOQ2dTR2dBOWRNblFSbEVCYU9TMEdrTVg4Tmd3OUJJbUgyTkJuMkp0VDJDZjhhQWhVU2pySGlEUnZnemY0OVJPQnpWUmhMR1AzMk5VZUFrRWdKUE9JNUVvbm8vaUtDeG9HY2JScVFCUkI3Q01jUzd3M2hwQVB4ZnZDQ2UxYXVsYThaTUdaZzFUd1ptekpmZVp3dkYrOGRuSlBDSFA0cjM5OCtMdDd4YWh2YnZrK0dlRGpSTUQvSVpsblpFRzJEOHc0aHJDS3I3U0ZRYnVKL3B4ZmszUjhGNGZEREpqemdrZ3JJVGo4RkxlQVIzL09BUThiQU13dUIrZUZUNUQrQTFHZ2Q0QTNueTRKa0JQWmNobEtHMVZTSkhEb3ZuOVYwU09YbFNaTEFQOGVMZGNCamxFQVJQekR1SVpSUmg3ODUwV081UkNRejdrWWNSOGVLbklINVR2dkZ3R0Nud2x6RFM0bk5SWkF5eDRvY0ErQURQdzN5REVWNDlqRkpnUjJMbHpJRG95WWQzTktycGhaR1RFTkxST21LeGFPRXh2MFBpMHBKRkhZTy9JVHpwUlFpd1hHZ2lzWXJmQVN4Z0ZBT0JnR3g0NVJVcHJhNlcrV1ZsTXFlb1NJb3JLMlhkNXMxb2YxRVpHcm84SWRaMUFPOU0wbzFGU2E1N1BpazJ5KzNTblhhYm5NdVlMbWMvOGtrSlBqdGJwTGtCRFpsTmJHSWlDQVhSdUlkakxZdVZyd2lDRUE1R3RPRU8ra055dHJaT05yN3ltaFNYVjhtTU9ZVXlkMEdKbE5ET24xOHNKWlZVcHl2bHhiWHJ4T3NMR01KT1FNT2ZoekVnNm1GUENOeU1hc01mSGdYNGRMV0lGQzhWLzhOZmxndDMzU2ExbWNuU21aVWtBNWxKNGs1TmtxNmtKSEdtSlVrbmpyYnNKR25LVFpKNlhEZmp1ajAzUjNvKzlWRUpmUGRySW10ZWc0UTZrRjVRaGtOK0JRdWZIeENCTkFFdmw5R1Z3R2dFVXRYL3pCeXArN3R2eThtdmZFM09mK1BiTXJwcUVUTHRrbDQrWUdSRFBGSGtDOElvb1VFWjNyeFJ2STgvS1lIN3Z5WHRtWG5Tblo0bDlwUlVjU2FEVi9EWFJwN3o4NlFoTzFkNi8rSmg2WDNpU1hHL3Nsb0NYUmRRd09CcUNLQ0FQd1d5R0FYRENzMUdZaUVET0JUSzlhRXdmc09KRDVrNlZpZTFLWGRJZTA2Qk9KSnp4SVowSndwMlM1WjBKS1ZMYTBxNlhFaXh5UG44QW1uK3lMM2lmT2p6SW85L0QzVlFLV0t0UjNwOUVQb1lJTE1wQlBGUE96UHlnallCVUl1Z0ROaVpLSkZQaHVza2Y5aG9ZNXpVMk43VkxTZk9uSldhQ3hmRjd1cFZObGhYMnRHQUNPQW14ZGZoSk4wWWxOUlhrSUxHbGlUZENJTUlvYVJNYVVrcWtOcHYvUzBFdmliMjJOV0pZRVFnaXEvY0lRcExqR3d1dDJ4Nzh5MHBoUW85ajhPdHNWQllYbWtjSzZ0a05tejllZVZsc3V1dHQ3UmhNU1lGTmNTdFdsQUl2VmlVY1ViRjMzNVJPbjcwVTJtWWNyY2N1M1dLdEVOZzI5UFNwQ2N0VlhyQXZ4T0JZRVFnNnNLeENkY1VjR2RTc3ZRbnBlR1lwc0xlaUdETlRKZGpHWm5TOGVIN1JGYXVRbktBWDY4UHdtUElzR3FJY1dRQ1VYeWc1UFYvOXB2U2kvajZVcExFam1QYnRLbGlmK0puK0NtZ0dsWVVSK25yRWxmaGJEbDg3MGVsTFc4NitBTUE0VmtQQXQ5VjhFeFBFZ2ZBdEJ1OHU5TFM4WHV5SEFTSTJzQ25FNERRWEhDWDJQN2xYeVJjZTFyTGlYRkRlVFFLakt3eXFQWmlsRC94bkErT1Fyc2FWV1RBdzBmMlNEUFNkaUM5S0lJTFBFOFVPc0NMRFVkM1JvcTQ4VHpmTThvNVRUd1dBRk5xdmpTbVRKWGFqMzlLdWtwbWlqZ0JUT2cyeUo4VC9OQkVVdnhoZ1JJTWNjN2ZHRWFHK1AvNmlkV2dWUkVqdHIvNGE1TXUxWmxCOGVBMFNmLzFsRlNMM3JnaEIxckROQWdSamtPWitTcTRwek9uaVR6OW05aGpFOUdsQ21VMXh6UjVQWHA5SVZuMThrYVpVMVl1enhiT1YrQ1pYMVVOKzc1UzVzS21uMWxjSW5NcXluQ3ZVbDQvZUVENmdqNlZKejk2ZVlJY0RSTmVqL0wvc0Z2Y3BVWFMvZDVQaUEzQ2ZDSGZvc0pzaDVEWWtJZE9DRXkzQllJRDRXbkJlVE9BcURrRFd0QVVDTFVsVmZyd2JEL3k1UVQ0ZEdWbmFxOVBBR1p3WldaSkRiU0VNdzg4TEhMMnBFUkQvVWgxUlB3QjZrbVhVendRTVVTaFMvbS8vS2o0RUU4djBnMlFENXhmeUp3dXNtUUZ0Q3VQakx5NlJicnYvUXlFT1YzNmtwT2xEaHBjTThxN0FUeTJRV3RyQUFqVmd1ODZISnNCUnRaMGFIbXA1QzhWbllNQlVOVHEybkhlajg3QzhZRy9FbmRKS2JpaCtRWFJaNW56aElVRms0OWFrSW81L2tHSFZETlBZRmJCWUpHT04xNlR4bHZlSnkxTUcvRTFwYVZNR05wUWhvM1UyTUJERjg1WnZsM3BxZEtXbWl5dHlFc2J5cjhaOTZqWnRTTi9aei8wNTlLOUZOcFNGRkFKZm1qSytXbS9rVGNENGZVUUdJM0lLUG02VGhvWlFrdEIwSUpBaUlhUlVPeDhLREtzZFJRUE9qeG5vTFprZEhpVGRLTlFFdFh3ZGdpcE5TZER6a0NRTHFLQnVwTXMwbVhKbE5hNzc0ZzlOZ0d4QWNRcWxRQVVpUTZySURqN1BiSjI0eGFaQXcxb1prbVp6dmtvckZxb0RrWUdYdk8zT1dXbHNtUGZYaGxFdzJSN2phSlhEK0djWUVUZlFvRHRhTmduQXovL2hiU0NOMm9RN1JBTWFrQ2VsRXh4UWFnby9GYmVCLy90RmdnSTduVWdkQUtjS0hDdEVQNVdhSUJ0QkN0Y3MzZTNKNmVMTlN0SGdpa3BjaDdYUFhnK2lIeWZubktiaE5hdWhCVDNHZ0o5QllvSEkzVDMwdnpnZ3dvaURVd2ZjUTNrNUlvakxVY2k5MzlKSXFXejVQaGRkd01NazJVVXYzVkJzQy9tR1FEVWo3VEpleS91RFNaRDA0QzI0WVZBRHlabmlBdm5qcVFVNURQRk1EVVJkeDg2aTE0QXdqbGNYN3p6ZG9rODlnOUlucjRuQTNUb2U2T28wek5ESHhNVklRMm9HR3A1ZnVibzlCbmtOMTFjV1JuU21wMnNJREpSTUxXaGJ2REl2QkdFT3ZrdUFLazF3NktBNmdCdmJnUnFlS3lYbHBScDR2alp6OEZLSjNnWmtYNEVncEpSd2RTYnlDWDRleWNjeUtpQzJ2UDFjdWpnTWRtMzk1Q2NPbGtqWFowOTRobUVOc3JxQVJGNDR2MUdScjFOMG8xR1NjMjU2ZEtCaHVhMHdGeURRTFZCU0xvcHpHaGNyVEFSRWxMTXQ2T3FNUzRwRHoxOWc3SngyMDZaTWI5WUo2QnhJaHFIWGhrNDZzRzVJSVdWMVRwTGRzL0JnK0tCR2NiM1FrUDBjcGlqSExFdzRoSHZkMzhDUWNnUU8vanpnQ2MyK0E2RW5wUmNGWUJCbURIZGxuUnBTY3VBNlZVZ3RxeXA2TVh6OFk1Rmhad0NUeUJqSUZoMTVrS1ljaTFTQTNDeXBsclVWME90a0wvVGJPcTMzQ1hCWlNzZ01BREZNZEI1TytuOXFFL3FQdmQ1QUo1Ri9OblRZY0xBYklIMlZZZDRuTys1QlVBQ0RhNGdWMnJCZTBjK2dBcGdRaTB0QWczSG53VFFTazZGUnBVdTd1Uk1QSnNDVUFXWVFpT2hsbFNIdkRZZzM4N3NQSzBmZ2dIcnBSdmdTcUFsUURubnpZRjBlOVcvWmJoa293RHdmZ09Nb0lJRXdTTExsczVqaFMydlRkeWYvYlRVSTY0QjhzZzRKZ2pkQUVVN2VIT2taMHQ3TXZnRGI3YTBaSmp5aGo4dUNKNGQ2ZUFYUERsUWppUFFRcW1aSHJuckZobjQzbmRFWEU0dFJ5ZHFWdUVBbWhIeGtkclJPK0hCOWtNVFdyaDBoU3dvclpDS2hVdjBPTHV3U0Y1Y3UwRmM2QkJOdXBJamV4S1ViaXhLb21BTEdwd2ZSd3E0QzQxOEFHWkNOeHBVUGM0VEV1czNWcWZVaktnUkVZaWVMVnlnUTZ5eml5cGtmdmtpRFlWbEFLYVNLcGxSV0NybGkxZksxbDF2alEyM2tvYWlhS0wwZDdDUlJvMlJMZm5SRCtYSW5kTmdDdERuWTJoQnp0dzA5ZmswNXVSSUU0VDJZbmFxbkwybFFEcnUrd3NaZVBnaGNYN2hDOUw3K2Z2Rjk0VUh4UFBBNTZUN3orNkJOcFVqSFJDYUZnSXVBSUU5UGsycmpoU0x0R2FtU1NkTURUZUUzNE1lbjc2emxtbnZrNUU5TDJtdlNyWCtxZzNYSHhEN1Y3K2haaUtGdXdmZzA1eWREaEFCZitDdFBjZWl3T1JHV2ZZaURUclFPOEMzTldzNkFHR0tOQUw0YVlJMVFKZ3ZnTGNXOE5DSjBNWDRjRTNOaUZwZkhRUzlBWHkzNFI1QlNmMU5BSWU2NlhlS2JIcFpBVWY5eFdHS3VWODFJVTR5N3NZVjlTUmtJbFpQMEVzMnI1WGErejRpM296YnhFcEFuaUMwQXpTN29VRzJaYVRKQmFUSnpzcE9NQVEvWHBpWWRYeUdvQVV3cjhWMURUc3pYQStDYjE5U2p2aWZtNDlleGkxOWdCOEZJUDVEOVJxd2NEazQvQ2xFelpscjBUZ0RtK3ZTR0RqdmlMT3lLd0JTUFQwOXNTZVIyamp0YU5KbmRHTlJrZzJOaVlMWUJFR3RuNFllSE1MSnh1OUpuUUlCeTR3OU5nR2hQamxxUnFLUGlLYVpha1FBSXBwaTgwdXJwWWhnRkR1YVlkZWVnMk5Oa2IzV0NFZGNDRVEwK2FnWlJjTFNWSE5XYkJEQUZ2Qkg4SEdsWnFHUjU2aHdYNXlTS1lPZi9HL1N2ZUVsRVdzekdqeUVER2c0TkR5cUl5c3FlSWlMUTlrNlREOE1LVGgxU3R3Ly81WFV2T2ZEQUlKOGNhVlBWek9PbWdpZDRBUTZCN1NhSTFOUzVkUzBkSkZwZDJnREppQmRWVHRDNkh6b1ViSEd3RU5Id3lDUS9kUXVjZDVBclJObVRWK3FFWDlMbWtVNlB2RlI4VDcrUGZFLy8wc1orY05NQ1R6OVBNNW42L1FEMzArZkFwQStKTTFadDhBa2hWYUYvRGNpMUNQdXJzeE1DSGllQkJDY0NFMXB1VUpOcnZsL2ZrL0VBeTJBelBUNVVINUJDUXdiMnFhRVVaNFJHRWxSbUVvRDZDeDREM25pMEw2L3ZsSDgrNDlNSEE0ZGtKRWpCeVc4ZFpONGl1ZEw5TGUvRmQrajM1YUdXKytHV1pxdkF3WFVrdHFSNXk2YzI1SHZiblJtclREbjJqT3paRy9CdmJDalRxSU9mQkxoRkFHcWIyZ3VSdDFmUHhnUTJ6anoydFM0ZVY2MGNQSFl2ZjM3OTBzb1pQait6RkcxU2JveEthbVRQb0FKUXFKNVJCek5ZUlc3UFFIZFI0WW1HWDFETThyS3h3Sm54TEtCekpoZkpQT0tTbVgvZ1VNR2dDRWF6bmhobE9MbnZKbW8rQkdaemxjWjZKYitlOUZ6UXhCdDBOeTY4cUJOb05HUElORDBhZnpWMDJpSkVMd0UxQlBya1JrbDVjQlBwbnRzRW54NnRoeE51Z3RtWHJJTTBFd0RtTkNaWEl2NE83THlOUzJPR3NrVHY4SDdiaU8vNEkxS0c2Y1hTQVRDUlMxak5DSUREejZpd2tpZkZFZTlhTW9RNE8wcHlkSTR6ZkJ6MWVmY0srZWUrcVVNZGJRekF2WHM2dXdjTFVlT2RSbHpwM1RvbXoxNHUwUE9MRjBucDk3M0VXaGNVMVdUTzZjQ253WUFvcDhQOFNPTkR0NUxTUlBac1JZUlJZV3VkOFBSRmxVVExSRVJZM1hVamEvZ1NOQ2xvNXQxNFNPanFIOFpwcGVIVE1mT3FjRzZCNlJqeHg1cHZtMks4dGJCd1E4Y3FUMDFaMlVyUUEybXBBQk1NNlgvbTE5SGpDNVZkSFcrSVozcEFFek4rM1VTbzFoUWhqYUhkcWNqdFFBZ3VnQUtLeGJKblBKcVdmRWl0TnZZYzh5bVVTU21LNENabnBoTWJjbzh4bmRLVjdvM3Z0TXkwekVXNVRJOUk1akxVY3pudGR4anZ0ZDRNclUzcGhXZjNydFJxMHNJUmdTaFJQT0lyRGFIYkhwMWg2cktuSkpQalloTzZzSkZpeFdJNktpbTJWWUVrTnA3OElqNC9HemNSaHljSEtneEE1dENLcElzYk1qVHFoWFNBSERnMExMTGtpdU5BSXN1Q0R0OVJLNzdQaWR5OWh5ZU5YaWFpQ2hhc0FXTkxoVDFaL1NSU0wrelZXVGRXcW01ZlJxRUNUMDVUQThkTVVyTmtQb3NhR0RKNldwdTJENzIxd0FHTHJSa1k5QUlEY0NBWkJrQURSMGpCa1l0Q0c4REkvRHJlTitIUkVvWGk5aVI1aWdZWVp0RFhQU2xhQUZxT2JBSVJpUkVEUTZtcTRRUW5JT3FWWFIvOFNHWVpSbml6Y3pRQVlhV1hKaE91ZEMyY0U0dGhOcWQ2eGRQZ0tkUWJGSWpPdzlqd21naWd0Nkh1bzFBS2FVcFI1VUZnVHdNeFFLeVNFVVRaMFpnbGhud21MaVJrYllXcVh2ME1ZQlBsalJEKzJ2T3p4RVh5b0FtY0ZjQjJoREt0dVVUSDVlaGdVWWprM3dYWUtUMXdyeGZKekhLaWNDb0VtMlF5VVNBdUN3UG8wek1UREJjRzVsQVFCQVliN2J6UEJKaGdWeE9ZVFdaNDlPNlVraE00OU9LUDc2YjZKckFhS0o1Uk5TSUNFU3pDb3RsNW9JUzFZQ29Mbk9ob3E2YXhqV0JpQTNsTFFCUklEYXJlb3dRTjZjRHNsVUZWVXBCUThQUy9yWEhWRXVoaHVLd1pLZ1BocU5KTkhzOGMyYWdJVWQxQkNraG9lRUxaM1FULzlBMndoSE9YV0lJNHRJanZUT2VrcTdrWEttRGVkR1RsaXlldEd5cHNTVERIRXhWcytNTXRMQm9lUkVneDY4S2gvTE83TWRBSkJFWWNacUU0NS8vU2FUWGh2Ujg0aHVCZm9hODhuVk80elFMZyt1bTZEMkxBQUJHWUtJcUlFRUF5S2MwblpYNkQzOU1SN1VHQzNMa0ZIaHRCUWdOSkNQdTFCUnBCbWhlZVArSGtjY0JkV1F6Y3M2K3ZxYTJ6bWZBQS9uaFBNVVF6aWxXT0RXQUIzWENEaU9FNEVmd2dCL3ZNRFZTMWhVQ3krUjhMVFNpNlJMSXZsTWN5Y1k4TG5ZYTlJOVJ1NnpKTHhEM3JnMUdwSm9lSVpDbU9jNnZreGpsUkdDMG9MUk1nZWhQQmFNcmFTc2t5Z1BEZUEyRjl5NmYzWDBwTGU0VVFBM3AwaUpkNDkzNE9KamVlTGVBYVdhU1ROQ0wvLzNkUWtrY2taa29tQVZHWXZaTmR3eVA2aU9pYVVhTkNFQzBvSEtoMFJBUU9ISTJvNmhFVGJNRnVONXo0TEI0QXNaa09IUEJvaFlvSXVMU0FpWVRWTDhSSG1ocEVGdjIrOVZaU3g3b2UrbUEwUFVESkM2a1o4dm8yY1BxQitxL3hOcFZpWUlVWm8rdlRDUGdkQ2d5Q3BFYWhSYUJHNTRtc1gvNjg5S2NuQ0pPZ0pFTGFYRitEZFBsYUJKSGpCejNmd1hDN1lSQXhnUTAxdUhSN0pnWWpLQ3hwRTBWMzVZMUtzZ0RDTDVoeElKM0tjNHhHTmF5dk9UUE1FeGlpbXNFNWVLRUVIRW1mSGhWdFRTa1pxbVRuSk1SNlp0cXliUkEyRk9rQmFhc05TbGJwS3ZWWUEyUjB1UlRTVTFFUkZqbWc4bmpWQm5pTVZaV0dnZnNaZ29NVDQwd3FuVm9tSmQrNUt0YjdELzhqb0lRaC9uUG9odzRTdGlmbXEyZzNnQXpzdnM1bU5WUmFoV0lBQUpIemNqTThmWFF0WUFSMDJGZzFqVEFWcnkwV0haaTR2T2NybUsrR3dvYm5XbDhZSGtIUXdBYTVHMzgvWWlPRUxNSU9XV0ZMZzhXcndHTTNPeU5GQTlHNWpsbFF3UE8rUnpmNTdrNTRHUEswTHVKRW9NUjhtdjJEaXpzOGZPSTZDT2lhVVlOaU5zNGNMdFBIZ2xNUE5KSFJOT01HaEhmQzRTQ1dyaEdnYUlwNFkrcnA3Z0dpaE55aDRJKzZWdStXTFdBRGdpWmcrWVR6bnZTS0hqUWpESnZSWXZvNC9Jc280VWxJQW8ybXdDQlJCOW42eldGREhHTUFoWkd5c3ZGbGxZQUxjTkl5NTJXSmsxVE03UjNEd0FFbTFLbnlYQkhEZUtoZG9BWFdSeHNNOXB1Smdhait0U3BJbzRXbldkRFpVZWQ5UGhUclE0bUc1M3RZMDBxZGtJKzFXVGpnMkM4ZzNkOE5yRis1ak9JSHp3aERLU21TbDE2bW1vaXJTZ25EelM0NGQzYk5WdTZrUmdqNGtVQ0NvRXorcTdvSlFxTitDUUNyV2QwbEJvYk1rbTA1WUkyK29naTZFZ2lPcC84OGdDVEx1eXpBaXhMeEF0QTdFTVowSi9GQ2FibkxPa0F6MVJ4cGxyRS9vLy9pTVFDeG94c2FOWWp5THRPUDdoT1loWW5BcVBpOGdvdFR3WW1yVUFBRUxyV1ZmdjZEdjd4R0E4NFVlVEJET2E5ZUREaXMrWTVnOW5tR1V3d0lyREUwL2oxY3FvaDRjaEF1VEhQK1o0SlR1OG1TbWltbVRWeHRYbEVkRmJUSERQbkRpa1FsVlhKbkFXbFVseXhVSjNWOUJIcHV5aEFvMUlZbHhINHh6VmI5RnZ3UElvRzMvbUQvNjBhQUdmOFVzanQ2UDA1Nlk0YWtyWGd6eEFSOUFyS2drcGNBaUx3Z0dtbXo5TW82OThNaUVNVllFZWIxT2JjWm95bVphZm9zUG41YVJaajFqYlNwVDlFdG01UlB0V1VSS3ZqVEYvR09URVljYmIxRk9TclQ1TVREekxJRmhzZU5pWUI0aHhXb3hZeGlZdUs2V2RnR1lVQXppcXNrSC9EOUJvUTE0OS9KUGFDUE9XdkYzVkQveFlEbmU5MElydUs1K21rVWFOTWpmd21KRExHQjJObFFobGx6Z2lFWGthRVA0ME1RUzFIL000MlFGQmhvQVhCQ1l5dVkyK0pML1VlNVlNYVpXOW1pcHpuU0MydVBaeE4vc2xQNHdWMWlXc0VCTHlJVnVMMUVkbWVDSXk0aFFqNVpXQTJqRmJNVEpsaFlqcDI2cXpZN002eE9CZ0dmRUU1Y09TNG5ENTNRWUxROW5pUDljajFsMXRlMnlIck43MGlPOTdZSXhjYW12RTdkZHhMNzU2cU9hZkJ0QkpNSWhBZE8zWk1mRDUyQnVTUlpXUXNzRzd2NmdRZkp4RmYvV1Z4bVMzdzNVS0p3WWkxSGNzejVXajhQQ0tPbHRGWlRSOFJUVE5xUkFTaUJTV1ZzbTNubTJQRC9pUlQ3U1FJQlllNHNOUG9WZENQNEJ3Sm9ZU0hjVzc3MkgwNk5ONE5NNDNMRmx3QUl4dU9EVm5KMHYvQlQ4dHdsQ3ZhOFZia0dyeEdwcUN4OXBBNEJaekJCRUt1SktERU45ei9lWjBsN1NoSWt6b0kwMFVBaXh0Z3dxSHFwZ3dBeXIvTlJCd2VQRWtCZ3BZWDVxbzUwc1JnWkUvUHh6TXVBemZCZzA3OWc2MUhGeFlGbjhuVGowVkFNbnRnSlo0d2dQOWVQOEIzMUM4aml5dmxWRXFLREdRYjg2eTZvQzIycFdmRlREWUE1OU8vQTJlSTMyRFJBTEVFeEdjRzZlQlhkQ0Z2Z0F1QUJuOFpHWFVyMzlSQ1dYenhnWG5YL0k5NjhNd0FtR3lXdzNtM3E5bllCbTJXODZjNGs1ejF4NDZsZmVxZHlDRExEOFFJUnVtRlVtaTZMaUlQMTJxbW1WMmdBVUptbUpqbW9NUGR0bXUzem01bkhKNUFXTjU0YTc4c1dmR0NIRDUrU3U5NTBjWjM3bjVMcXBjc2wwWExWc3JpNWF0azZjb1hkZkgzdmtPSDhidXhpSmxoOWZvTjZsVGZmL2lJWHB0a3Q5dGwwYUpGMHRYVmRabVBpSUN6K2RXdGlHK0Z2TGgyRGRMWGVmUWFkS3JFdTRpdVFUTkMrNXhnSGhIQmlLTm1lbDVVb3BvUk5TSUNFYXRkLytrSkRrUjZPc01SS1lHSW0zVm9zWTlReEdrS0FHQkdmVEE3cG91TndzMUduSlVHTUVxV2pzeGtPWm1YSk1QM2Z4MlBBWVNDM093a3NiZ1JybFJvV0cvcTl6Q2NzZFE3T0o5cEJBeDRjV2QwNXU4bG5HSTR5bXVtUWdzRElOa3R5VHJDVmdQdEp2REE5OEhmSUlRSm1ndDRwRDZnVHVJRVlPUk55a0RhM2NvSHVWVXdDMExyQUFBWXdteUFrZG5BVkV0aTRCb3JQb0FiTFAyK1NLL0l2cDF5TVROUHRZK0wwRG80ZTc0eExWMWMwTjdPVFlkSi9jd2Z0RnhabE9JZE5uWU5TRVQyY3pLNGJyRlluM3hDMmo3L0pia0lRR2xPeWdRUTV3Qlkwc1NPRG9BejAzWCtFSTRNdmJGelRsbmdvdHVHbEZ5MHBEdmtiSll4QWtsenV0T1NJcTNKT2RLYWw2ejhOckljQUZyY2JNWElhQWdscC9yaGRSR0w2RThGbzJ2WkE1c3p1cW5wTUIxcVAzUTVjTGVKVjlBaG0vRzJkem1rckdxUmJOaThWWUdKOTdoVHhVdnJYcGE1QzRwMEJ3SDlWQkx1YjlpOFJXYk9uU2NWQ3hmcGZkTkhSRENhTjIrZU9KM09zWkU3RWpYZHlrVUw4VHp6VWlJdDdWWUpSTmp5REszcDNVUUp3VWpGbllpQnJuenBDNXZsK2VybE1yZHNpWnBpejVlV3lyTFNKVkpjQk8yb3JFeG1Ma1JqV0ZJcGJ4N2REMU1ERWtHZlVDSkNYWVIwV05tb1dEbDlXQnpRSmpqUmtlWUlmU1MyekF4ZGpHbk5USlgrdi9rS2VJSnR6WFprMmpmWFEyd0xhQ2krdmR1a09UMWI3RFFISVd3MkFDQUJrV1hRa1owcDhxbFBvZnBwcHNITXhEdGMvNldwSjVobnhIbFNmRjR6aDJmMXdLYU5leU0wVGErQmRCZ2NpWVgzN0pXT2pIVHBnY0MzcGFVYWk0UEpMODJoMURRWmZHNG00alRtaFdrQ0tuZFErem5FVEJSQU5DNGM2SXdmMnJ0VzVNdVBTQk1IQ1hLTjZRRTZkeWtsVldkVU55TS9qZmxKNm8rYUtIVGcrYk1BUlRlQXl3Vk5pRHNqOUVNN3VvRDg5MnNaSUg3d1prVTZ6THhhSUNnUWRrVHZRTzBsQktQeFpwcVJKaURwR24xR1phWFY4dExhallydnB4c2JaWFo1dVd6ZnZWdC9HeVU2Z1Y1L2ZiZFVWUzBVajhmSC9tNk12RjYvN3F1MGVkczI1VE9NekwrOGRhdFVMVjBxUlJVVnN2cmxsL1U1bXVkZFhYYXBCTjgyVzVmR01heVQ3VVJxNnVwa1hrbUpBbGRaRlVCdzYydWFCL3FxM29ueXU1RW9JUmpSR09IczZBMVZLNlI2Vm9scVBiK3JLSkc1U3hlaWg0QjVObk91VkZRdmhZcTVTa29MSytYTW9kTmF4OVNBRE0waEFlRlpkVzNqajA4UEg5MHIzV201T292WmxaeW12V3g3T3N3UkNCeFhzM3YreDhPWHdPZ2RxQTBWRG9DUmY5OTJCU09PQmwwR1JyaHU1VWplblhkQjBEa2RBQXpqajFNVVI5WEduRmd6bWhpTTJNUVQwN1dBRVFYK1NtQ0V2bGZqOEVlUU1sdDVkNi9ZZnZVYjJZdjh0R1FWeUVDcVJUVWNXMGFxOUtSbmlBZmFJWmR5Y0FEQm1jeXBDYWtUQnI3YmxKT3F6djUyUzZwWXdVOVBoa1hPY2EwZnpMV3JnVkZFK2J4KytsUEE2RC9qd0M0cXJwQXRyKzZVRXhjdVN1bXlaWWk3U2h4OU9wdExFMmQ4R3pkdGtSVXJYN2dVUDRKcGNoTjR0dTdjS1Y1MENNSGhZZG40NnFzS1NDZlBuVk9nT25QMm5ENW5iYmNoclZMcDZuWmNGcyttMTE2VEZhdFh5NERQTDF0ZTJ5YkxWcjF3bVhQODNVU0p6VFRrZUgvTlNkVjRGaTVjTE0vTm1TUFB2YmhZbmxsYUxmTVhsTXAvckZzaTgySFBibHUvVTZKT1ZERCtmT0dZQ25tTm1oSGdUby9VRXlLSDNwU3UxQndWWWhPTUtIaFdDRHBYNDBlKzhJajQza0V3VXBvQWpLaWRjZkZxczRWbUJ1RlZHZFp6OWViZTRHREVHZG1EMFNGeFVMWHRhcGZXUDM5UWJEbDNBM0N5ZFVEQVMxT01lYzFKVjIxR2w5MXdpeFVBU2lQcXZ4WDNKZ3BPQUU0WGdFWjNVMEJlbTNDUFBpSnFXbXcvTnowWWxWYkprcFV2U2ZtU1picjlUWEgxSW1udDdOUmxSNHlNL2RITEd6ZkxwczJ2YU55OGI2WkRRS0paOXRyT1hXT083RFViWHBhWHQ3d2lJYlNkNVMrOEtKWFFxRGhkb052ZUEza3FsazVvU09hN2dXQllBV3ZmRWNPL3hMMjhTd0dHRFkzTitvejJoZThpU2p5MER4T05Uc2VMQVpjMDlYYUl5KzBRYTBlYnFwVnVtMHNjRWFjTTRpRU9TcHFCb0tKMWZTMmxGYVZvNGpuOEVWOU1NS0ptNUlDUUVCeTR6b25MSHRvaGVKRUh2ZzUrZkVZaTE5Q1lyb2ttQUNNWHQvbXdjT0VyZ1psZ2hJeXBvd3RBd2p4T0NFWUFzdjlpTUtKNXhqcUo5dGRKM2YwUEFOeHpoU3Z4dWNqV0RuN3Q2ZWs2NHNXTjZEaVZnbVliRis1eTViMHJNMXRudlU4VXZIaVhXaEY5U0gwRXBteGpBYkx1a0pBR29FTThWd2FqMkRLZzY2VC83MkNFT0RpaGR5RTBuL05OTGJMOHBaZGs4ZklWeG82aytKMnhFSERvbUNZdm5GeHBwa2MvMGZwTm0zVUhVL1BlUyt2V0t5RHh2TFhESnZOTFN0WEpiYk03MUwvVlp1dlUzd2hXL0JvdXdhaTVReWQzNkFqY29tWEw1YlZ0TzR5MEU3Ti9VMUZDTUZLNTZ4c1EzNEczeFB2NlpwR0QyMFMyYnhUWnVVMUc5dXdSZVJYMjgxbVladEUrUEJ1YnlNWmFRYmdtVVVzQVJtek1UUkNVTHBob0ZCcnZmWjlISDI4TTdSdEM5dzdRT0REaUZobWRFTlozQlJpaHFMeGVsd3o4MjVQR2pPaThMSjJ4M1FsZWVjMzFicnBUQTg1MWpWbHV1bHpNNWk0R25HQ1pvZXZlSmdwV21OVGRlSzd0emlrS1NGemZ4eWtSM0N6dS9KU01teDZNdU9DMmRORlNPVi9mcEhFY09YRlNucDA1Uzg3V1hqQUdJQkUydnJKVnpTY3puVUcvc1VpWmdZN3FkUnMzS1o4TW0xOTlUYTlOVFdubjdqZlZGM1RneUZFcHFhZ1VhMmZYMkxzRXJibkZ4V3JXTVEyYWFYeTJBdm1qMXZST2xOK05SSW5OdEdDL1JHZVVTV2YyQjlFRDV1bzJydTdjUEFVTWJqbmFsbmFySEU2WklrZi82bk9vbFhXQWI3c01oUWVNZ21McEp5SzBCeE9NNk9BTEhYZ0RRcGF0UXR5Yll0RWVtODVyOXNJMDJld2YrQVJnQUxxYXl1ZTFKSEFOQkRBSzdOOGhMUms1bDRGUkozaTQyYzAwVGVIMFVXaVcrZUxCOHllbjA3ZGphRExjTXNVRi9saXUxcFFzc1gzaVUrTDQ1eDlJNzdPL2tzaU0zNHY4K3RmaWZXYkdoTUU2NHhrWmZQWS94RDd2S1RrUFRhZ2VhZWhRUHRMZ2lOclZ3ZWptTU5NNGJlVUZtR0VCN2hxSjYwZ1kyczZHalZLOVpLbjZqaGpMV3djT3FsWnpzZEVBTEFacVJkUnlaczJlcTM0aG1sMTBPbE9yNGZ1bUE3ckgzYWZhRHVQakJNMU9SNC91NjgxSnd0U2FYbGkzVGo4c1FKT080RVJRbWp0dnZ0VFZONzRqNVhjalVVSXdjckhDT3EzUytPV3ZTZ09YUzZnSmc4Wk1ZVXV6cVBBR0lhejBQWnpMemhQSHZ6OEpUYW9UOVd3SVhFTENNNmFBMC9LS0h0NHpwaG01VTJGQ0lCMnV3eUlvY1Z2WHVpbDM0em5EVE9Ndy9UdENjV0RFSFIvandZZ0Nmek03c1BudGp2NmZQS25MWEZodjlmbmdNNGx6bFFwMEdnTzFvUlBRQ0h0LzhRdVI1bnBrakVZNTE4ZjFJd3BPWWFDNFh6M29EZ2FqSGxSY296Uk9mYTkwSktYcTNsZ2NsYVFKZDdPRDBlektLbG05WmFzTzZ3K3h1U0VDT3B0bkZoYks3a1BHTmpnZERvYzZxcGVzV2lYbjZ1dGxNQmlVMDdXMXNuRDVjbm54cFRYUzF6K29KaFhUcG0rSlBpYVRGNzVQWi9hQzhuSU50cDRlQ1kyTXlOSFRwL1c2MCtsVXVURHpRSzFyOFpKbDZqUlh2OVc3aUJLUHBxRUVXQWhpdXlCbkh2aExOQ3BqNC9zdU5PaE9xT2NVQkFwdEw5UnpPakZya3JQRTg1TmZBNUM4K2htZ2hJUktDblBwQVJKaHhjakpnMkszNUVrcjR1VUVPZ28xOTFubS9CVk9oRHh0bVdLQUVWN2g4UEE3UWhPQkVjcGd3cUg5R3h5TXhOOHZiWGY5dWZyQmVsQkgzRGl1TlhlcW5JSFd5ZTA5YkVuUWNCLzlwa2gvbDg1TGFrRlNhb1dTVVFUMjZCTUY3ckd2ejRvYld2TWRNSzNUZFNUdWZBNU42M2NIR0szZCtwcVJSYndjOEJsMTl0S0dEYktndWtxQmlEeGNiRzZXaXNXTFpmYUNCVksrYUpFT3g1Y3RYQ2c5emw1TjAzUnNyMTIzUVRZRDNIaE9nT0s3dEFoV3JsbWo0R1B0N3RaN2pHUHh5cFhhM2ZLYVpoMU5Rdkt4ZmNjdXFWNjRXSHJkdW1ITXU0WVNncEV1OEJ6MjZRb21hYk5LeC8vNEI0REVGRFZmMmlCd1BRZythQTRjUGJIbUcxKzg2RWVERER6K0k1Uml1OWlaQ3V1Y3MzeDV3bG0rbzBPQUUwTXd0V3BIdU1nQ3dJSUxydjdxenJ0RC9SbmNZSitqTTl3QXZqczdIejF0dWpSazN5SnllQXMwSS9RMnJDbnl4Y1duL09hWitpRVlFOWQxR1k3YlJNUlBJWVdRY09pdDdYSm02cTA2d3NTdlpweWF6bUh0UE4ybitnVDRjRC8wRU5MRWsyUmFKNEVHalFsOEFCZ1RqRzdFZVVhQmpqcG9LYmZwanBodGVlbW9teXhwekFjSUVUang3bmtjSTZWejhLQlhlZE4xYU9GQnZHNzRORXpTMmZOeFlZdzRZcXBWNTVQV3BLbnF3SzVCK1hHbmhWNlV4ZFhBNkdhWlo5VFoyU2x1dDFzbko4YXY0T2U2c1c0QXgrRGc0TmpFeFNBMG9ucG9SbHpXWWJWYWRmSmkvQ0pZWGpNdWw4dDFlUm1DUEI2UDdrckpJNGx4ODlxaytMMk11R1RJWnJQcFRHMzl3Z3FpVWkwOWxrSHozUGo2Q29EL3NsMENqTUFkQkhnMHRqbTVSTXlYU2NvamU1eFl2RVBjdkl5WHNmamowMHdZRUErZk40UEd5M3R4NVpEWVowU20wWGk0SlN5WGFvaXJUUzU4NWdFSnBCWW84TlJDRURxZ0xmSGJYMVQ3N2JqdXRxVEtnWFNMQVVoaFFFSVlxajhYRkNKQkN2QlFBSEdpZkJTUVdEWVFJSjJQak5zMGhWcnYvWmpoVElXd3NIRnpNbDVuY3FydWs5TmhLWkQrNTMrSDUvWHppWm9aQ3A4dUxVRWNVUUNUYnNGQnZacmxuWUMwNkNGUXd3ZmZnR1l6VGZ3WnlkcXp0eUxkRG1oKzVNT1dseUdqdjNvS2pNZTJUbFdtQVdBOHgvOGJXVFBxUDNWQTNNblRkUDVQSTNoaVIxR1hZMUVITmllVVdoSGswSGJVUlpTMXF3QWU1UC9oSVFrR0xnbWZsbk1zWEVaOEJFbXhlM0drM2E2RERKMEZhZXBiN0xkazN0U2FrWm5YZUFFbDhacS9tZURFOC9qOWpFemdpQWV2OGFBVWY0d25NNjM0dUUyS1B4OWJNaExMMURBNmVWUFFGVFFnNkx3WFplY1NhdytYTnBRendDZ2NabzBiWktacjhqU1daOFJ0Z2dmanUxU0lDREdBNGZGdDkyTFhKbDlqdjQ4TDlKd3hjRDFtWWpEeWhKVkJxb2tzYmhkbnJ0Z3ZLaUJSUStLUU8vY1kwbzN0TGVrNnBNdVp1UVFrTnZ5K0h6MkoxZzA3R0UyY0t4eFlOSXhIQVltOUt2TE1YZitVSlpZREJMYjFzY2VnblJqN0NWRTdZZ09udzVYN1JQZHhVdDdEMzhLREhtTlhRMGFJVFBGVnhxc1Z4bkxrSkQ5dVVKYUlXT2RodkxuL0RhU1RLejZZYU56YmlDWWh0OTNWeVg5cE9TSnJsc3RvTkdKb1c0b3VlSkVGZW9PRDBTQTB2cjdrQWdVZUJRZ0E3TVVzOEFkZW1UZFBjcjRNN2w2dm03TDUwR2N3ZjdwYlFLeUhabm1PRDVjUit4b2N2SDY3T05QdjFKRTBHK0szWmxwVVc3NVp3R2g4dmdnZXBtRHl0M2pOS0I1WXpQZmlOUXhUa0FsUTVubDgyY1cvVHhvVGZKQ1oxcFZvZkh5a01ZQ0lCNFM0WU80d2FZSVNRZWhTM2kvWDlrangrZEQ4TTk1eGNiOE5YTWFCMFpYZWVWdkE3NHhIVC9HZkllSFF2cUhQR0pVWlZRZEJESkNnSWRGa1krUGpCd2VwdmREaFRIK1NybVdDZ0ZCemFraktrYzRuL2hrUnVDVkFxWVRjTTd0cTRyQWc4YWZMQ01FVjg0alNGZWZDQ3Boa1dlcmpZSHowNDdRajhBc1VGS3IyS1hlTEhEOXM3R3BvbERVS1BmWitMTFBjQmRKWTFKcUFrTDZmUzFlMmI0WG1WYUNnMTVocmpBaDFBMkM1THE0OTlSWVpyam1zajNNMWxkRVFrSmhHUHhFWUFhVC9xMzFHUi9lamJ0SjFyMndDVUc4eXRKYjBGR083V3BZbHlqbXdxbHFmVno1WnhWd1ppNGJJZEUwaE1zUGJDTzlvcHpEU0sxYkxkRTJIZTVUM1RDOVFyZXZxWUhUakRPMHpYMWNDQ0FxL3k5MDd0Zy9SK0cxQTlDdStzV0llZnpTRHVkVUgzNDNmQnNTOFJ6TExsY0pQUGt4ZXhuWndpS1Z2QnNab3ZoOFBaQ2J4bmhtbitZNjVENUlaekx5UXZGNnZybzBqbVduSGc1NFpDRndNVjByVFRJL0VPUGlNK1J5UDVydng1Y3h6ZmdXWWM2cjRaRUl3c3JQQytEN1ZEcnhCUURKT29lSzFXY1g3MmIvUzczaHhaYjB2RFdZTkFJa2FFazAyK3BBYUNFcnBVMlh3aHorRjNQb1VrS2doR1d3aVlweFQ0UndOeDdhZlpScTFaL0QrZEFpZU1XZkZBY0htUkx4ZU5HZzJicVlYK0tlZjQyR1BmdkNSeXFhS05jdURBQkVkRmM5b3dGd3JQeUdGa0JrdkRaUC9lRnJhTFRtcTFmRXoyUVM5YmdBUlA2Ym91Ty9MMEFDTTZRclVIQlQwU0xxcDBnME9SbTFOY2pZdDI1aEhCSER2UXA2c1hMWUIvanB3WHB1Y0l1RWYvd1NGTUtEcjFub0h3QlBZSTQvQndPQmxqZkZLNUVNUDEwLyt1bXFsTVROSHY2cmJZa25SYllJZHlQdk5Ea2JGcFNWeThQQWg4UWVOQVFzS05ZTUpDQXpoeU9XQ3p2YlJZZXZTOC9FZ1lBYmVKeURFYTErbThNYVhkZnc3WnBvbXdER1F6UHJoKzJZK3pEamkzL0VGL05KdTY5RHJNTFI4dlk5M2R1N2NLU3RYcnJ4c1B5WDZ2MGhtUER5T0x5UHlmcVg3L3huaWRBWnVxZUlMaFJPYmFWeVhSb1dkKzdZUWhWaGNOTm5vUTFLbmR1TlJ1ZmpOaDZUSmtxV0FSQTJKSmh0OVNGVFQyL2o1SDVnR2ZVblRERUNDaHFUd01ZVDRvbWdVc0dOVkpMMFJSSTk3ekRzSzR1eGZmbEhxSVdnMEpmaUpvWXRvMUJ3eTVpZHhXdWpYbWY1K2lXNWVpY2U1Unc1NU1VQk5rUklSY25Hb0FWTVRreFkxZUdyOXk3L1dqMWgyNUtXb3h1Qk9zZWdpMERNNEgzeCsxbGhqTnBvTGlLQ25sWENEajZaNS9YTCtvNS9RY2lRWVVWdnBRcjF5TVN6ZmFjMU9sZnI4MjBUZTJDSk9sQ1VkK3VTeGR4ZzJHNlRLYkl6amlmZU4zNUNIc0VjY3YzMUtGOWR5QkxJbE0wTzFZNWJqMWNISTZPMnZsOTRKTUNLTnp5Y0ZqTUoyNU1SeHNYYmFkTHNPdnNGVjlHWjhQS2Rya3VjOGNuc1JucmQyZEVubG9xWGk3QnZVNnpDQWgrOFRsaGlDQUFJRy9tYVNDVW9tbVQ0b3ZtdkViNlFmSHcrdkNUWW1PTWFEbEFKZDdCMXpZOE9PYnJ1VVZ5OVViWVRYMUVpWTc1YVdGamwrL0RqdUlDOHhRRFRKQkRNR25wc2dabDdISDgzQVp4aDRuenlNLzkzYzE0ekh3dUl5T1g2NlJ2bEo3RFB5Y1h4clJBRUpCeVV0T0VURVVUWUN3RkROY1FVazFaQmdzdEdIUktjMlI5azRENGxxT3dHSkdwS2FiTUVlY0l6R2p2aFlURm9ONm50QXdUTU5oUDZxQ3JIbXdZeEFYUHl1V1ZlU01hV0FvMEpjQzBYTjY4SUg3eEU1ZkJBQzUwWW13ekl3aWw2TGthbDJoRWlNZldFbnBpSHdzWDZOT0FwdWtUb0lraHR4MDBmbEI2alVaY0drZWU4VUNWMDhybzFOeld2a1cwc1U1OGJuQTI1c01HTDllSjc4cGVhSjI0QjBKSE5yWGZERjl4QVhCd2wwcTVhdlFmczc5anJxWmtDR3dodzlOYUs0RXJFQlUxaTE0UTQ0UmJidGt1WnA3OVhST2ZyYkd0QVpEYVRsM0ZSZ2RDVmlQczEzVGVIM3dkUXk3emw2WGRMakh0QzJZZDVqYUdudmhOQXZsc2JXZHIzbXgwbk4zL2krZTNBQVFPWFc4L0dqV1g0LzJpUEkxSExNOTNvSCt2VklTNkRmNjBHNnhoZVA0d1dkQXQ2UHVQdndyTWZuMVh0OHhwd1N3RW1Zbk1ITk5XNjhaakRKQkVPT0RwcEVUYWtYZkE1NEJzYzB3L2kwTkg3VUpkT3o5empRNy9rdWU0WmI3dks1UWZMcmNvcTd2Kzh5VFpIdkZsZFV5OTVEUjNVNzU4Umd4RGxBQUNScVNEVFp0SGc4S01BaDduNGNGUWVVRDlWSW9DSFJaS05aUlg4RVI5azQ3TThHU1VDaWhrU1RqVDRrZFdxSEF6cnNUMmVwZ2pHaTVOZEJRampYQnV1eVN2ODkwOFFLazZuT2tpeUJwQUp4cG1YcDkvUHBpM0pBUTZKL1l1ODk5MG13YkRFQXFWOEZpS0NweGNvNCtIV0xCT1N0T1NxblAvUko1WnREOHpSbk9Ka3ptSlFtSjNQVFJQN3VRYkRXSndIa1UvbENZV29iUnJFTWtPa2JISXowTzJuck4wTlR6ZEJwQy93dUhEZVJJeGkxWjhHc0JwOERpSWVURmV2ZTh4SHgvN0ZRcElkZmdZM1Y2eFZJaFJTVnhnYmNPbit1N0xqalE2aUxWUDJNMUFXVVFYZkJWSlFET2cra2NUT0RFYW13dUVoT251WFhZYWhoaE9YVkhkdDFrN09WTDcyb3UxYVVWaTZVRjlhczF5L2I4cGsxR3picGwyMjVLUnNCcWJTeVFnNGRPNnBhVkxlelJ6WnMzcVQ3RWpIZTZpV0xWU3ZoeUJqTHM2MnRUWll1WFNvN2R1eVE1Y3VYUzJscHFjYloxTllxeTFhdDFFM1dHTi9NdVhNMDdab0x0V041b3YvcTZQRmpVbGxkSlRObXpaU1NzbExaL01xV01hMklpM001UzN6Ty9BVTYyM3ZHbkxtNnRJVjA2TkFoV2IxNjlSZ3dFZ1NQSGoycTZjOHRuQ2ZsU1BPMTdkc1U2SmdXZlY5TWE5T1d6ZkxTbXRVeXYyaUJ6SmszVjlQcnNuZnJNd1FhUHYvaTZwZGtBZkw2M0l6blpkbUs1WEt1OXZ3WUlQR1pvdklxT1hycUxGdTRKUEc3OVhVUWJLclkzREtDRGJZdUcybzh6QlVLWmlKS05BK3BscFBmSUN6OFpEYlQ2c0Y1UjJxKzJMLy9PRXJRYmJRSEw5NGxOd3JoYUtpOEdFYXZzWFd2ZU5PTW9YWUhHalRCcUIybUlMVXVSNTZ4ZVQ0L1lWMmZQVlV1ZnZJekV2ekRiSkdEUjhBVVlja0hqdnpJTU5WZE9nVWhYUHlnSVpHQnlQTDZYdW4rOWJOaUw4aVdwdndNQUcrcWhBRWtmWWkvRWVCbm5aSXR6dnhjRlRnMmxQRnEvQ1h5eUlWSEhsR2hvNStKNE51U0R1RkR2a000cjh2TVJWNlFycm5MRzAxZHFHKzZ2dTVxVWNZUkhmRjhqVVhTYzJ5M1JGSnUxWHc3a1Y0VHpDRnFpOXlndnljcFc2SXpuc09EUHNSdHpMTWF3TG1WN3pyY1ludjBiK1VZQndRS09LSm04TnFRTlJXYXBrWGFNaXpTazU2SitrNVgvaHZ6OHNYMnRRY2srT3d2eExta1dFTGIxNHVjZUZNaUIzZEtaUDBMTXZxSFp5VHdsVzlKejYzM1NsdG1KdEpPbG1CS3JvSk9ZM2FLbkFjQU42T3UrUUZLbW0zY3BaTmdPRHJrQlVmR1ZOV2hrUUhraVpWK2ZjU3lNWUdJRy9zUmlHYVg0THB5a2N5dlhnSXdNZ1Nhd1RRWlNLclZYUU54b2VyZXc0YzFIVzRCd3IySk9MRngvWll0MG02M3E3K2pzTGhFbDRRd3hpNEErZkhUWi9RZWYrTnEvUDRCajZhNjZvV1hGQWpxbXBxbHJhdEw0MkQ4emdGb1YvamQ3bmJMZk80TFZsZ29iK3piSjRkT25OQjBHNjFXblZCWlVsVWxKMnBxZElMbGkrdlg2OFJLeGt1aGJtdTM2aFlrWE9OR1BzNWVxSmN5Z09IaDR5ZFVyTGdmVW0xOWcvSlZjK0dpbW1ybUdycURSNC9wZlo3VEJkTUVPZVk2T2E2YjYzYTY1TVNaczdvNzVkYnRPL1FaQnQ0ajBLOWM5YUx1TkhDMjVyeVVsSmJManAydkswOE1uTnhadlhTRnRNQnM1YVp6cis3WUtjVWxaUXFjcGpOL0RxNFBuRGlsK1UvaUNtdHFCZHhUbVJ0a3VibXZNcjk2bXB3aWZXblg4RVhaQlBPUVFrbFpBSk4wcWM5TVVjRHpBandvOEhWMzNTYld4NzhsMGFCUHpVQ3l4a3h5K1FrWlUzdHJPQ1QrTDMxSmF1K1lMbllMOTg4eFBoTFlCQzJML2lnQ0U3V2pQdlRBSEFYai90V3Q2YW5TZ21mNUxYbXU5bWNQemVrQWZRREF6dlFDQ0hDT05FSzdvR1pBL214Y2NvSmpJd1QxRE1BekJOT1NjZTNKbXlKU01WOGJMWHVLcTRKUndDZHRuL3Nxek5NMHNjT3M3TWxNRjBkeWprNzhJeUMxWnJFTWcyT3FNb3VJcEo4ZzBoc1QwekIzbFNSZyswZkVjV1NuTktaa2l3M3BjSENoRTNsclMwbVJka3NXVEswODZmLzlNM2dCejdNRlU4NWpmZ210bHdQYjVNTDAyeFRJaHJPemROMFlWKzl6V1EvTjZCb0FCclZPZGhac0QyNlViWDh5d1IrZFFISSt5cERhVGdFNnF5eHB0YUEra2JjYWhBRHFrNS9sdmdBTmx1WHBRYm15RSt2UFNwZXo3SUJ3VHJCeVF5TUdzcXZHeGZ5RUFFYnZ4QXg2WnRVQW9pcmpBeEE0TXN3c3FaRG5GcFRLL0JLQWFjeE1ZZzFTY0Nlc3ozSEVUZEFPbnp5cHM2UlpwR3MzYlpMS0pVc1VRTFNZRVEwWHlXN2ErcXFtd1ZYNzlNM1FIT0txZkxvZG1KTFQ1WmFxeFV2a3pQbGFmWTd2OXZUM0s2QTBRQ1BpTldkekYwSWIyWFB3b0FJZjd6RVFwT1lVRmNtT045OGN1M2VocVVsNTYrdzJIT1VYNitzMGJ2TERpYm5Cb1ZGNVllMEdYY3ZHOUhqZjNDV0FPd1NZSTFnRUh3SUx3WWp4OGg1QmgxdVZjSTBjN3pGUHZMZHc2Ykt4OTNidjNhZnZtTHNYY09IdVM2dlg2dVp2ZE9oejdWMWpVNHMwd0ZTbENjWjNtUDY4b21KcHRiYnBPeHdsNUplRGpwemh4eTQ0bXNZNUlXd3dVUHQ1Wk9EZXhmMW9aR3lzQ1NuQlBDUzNKVWRuVTFzQlNOdzBqWjg4dm9CR1NqL0ZFQVFxOUNSNjg5NTJHRUpvbXFodHRoR3VpR0xQVGgrUytEdWs2VysrYkV3WFFPTzNUMEVEaDlEd1k0Wk95eTI2VEVTM3Y0QVFkQUpFeVg4M2dKUmEzaUI2Zlg0WG5yMDlOWWkrWkpnTzBBSm9qdEgzeEsrZ3VwSUJ2QkRJSG1xR0FEbXVhRzlGdklFbmY0OEM5R3VqdlZyRDFmc2pmbWw5K085MTNkZEY4RUcvMllCbGl2anlicGNHeE1XUENmaWtsOStrQlFBaGd5aDFtbEVjd2J1cUhYUVpnWWNvSGtSbFJ5OGVsaG9BSGIrQnovVHMwSXpvUyt0TXo1UG01R25pZXU1NVBJOEVDRjZzZldnQ0xNTGVJT3BrR0pySWtrVnlLbVVLQUNSSEozUDY4eXk2Zm93QVJRMm1BL2x2UjVrMEkzNk9YcklEcVFmd25VTVpuc0c5V2p6VGxvVXl4RGtCaHgxQkY4cWRSdzQyTk9RYkk2clVyanR6czNVTEVZSnhIM2gySmdHVVI2a1Jvc3dVa0hXNTgzVVQyeHlGa29BMEZ6MHp2N0hQdmRnWmlxcTUrTFJzeklITVdqVEJpR1FlSnlLYU5rZFBHbnRkTTNDckVQTXJ0V1pZKy9KR1hZbHZYbFBZWnhmT1Y2MkNhWEl6dERacmh3b3Z0eCtob0N2UEFDS2VIenAyWE1HQ1doWEJ3dHhHaElIN1ovTStoZmhDUTZQZTR5SmNhalljaWVyb3RHa2FETnRmZjBNMUdHNkJXN1ZrdVJTV2xPc1dKbnlIOFhNUkxyVVo4bVVDRDhPeFU2YzFYZk9hZWVSV0orWTFBMDA2YnFHckFJdHJhbjkwaGhOMHpLVXVYSGUzNVpWWHgvaHBiV3VYbGF2WHFZYjIzS3k1Q3NiVURLMGQ3V05hNnR5aVVqWFQ2SjVKc2ovMkpUbVhrNm16WmZ2eUFSUm9TQnhwNlVTRDQ2YjBpY2h3c1JrTVgya2VVZ2Q2elRacUlXaklGQ0wyd3AzWk1MT3lZTXJnbk1QbmcwLzlWUHloSmdnc1dpbmsxUS9abys5bjFCZEJqNFFld3RFaTlZOCtpZ1pOYlkwT1VnaEFGa3dydk0vUENqbGhZdW1XSHdSVUMrTE5Ua2N2bjJyNHFDQk1MZEI2Nk5OUkgwdGM0T2VoYWJKdzZnQzN1ZVcrUEwwcHQwdlBzOCtoc3Z5Nk4vV1Z5QVFvQm02YzR2M2RzK0FsVGJ6Z3ErY1dhQVNNRTZCSFRTRUluamtUaHk1Mm5kbE14enBLVFhlck5FejBpUWtOandPdUhKc1liamdsdHZ5N1ZmaUR5TnNGNUlIYUlzdTRBYUR2blBNcytBNXFieHlPR0pxbXVrWlFwdFJjb3dDa3dPWjFjakI3R3JTZlZPMGtHbUJtcWFrR0xaS0xXd2xTQkJwKzc0eUREbDNJVnljQXV5czFDK1kyQUNZMVUxcFQwbEZlRnUxWVBNZ3p0Wi9tekFMeC9lQzc0djd4OTlGeFpDUGY0QTlsWDQ5NjV5ZWdtRllBc056UFRETkQ2TUMwS0s2VHFFR3NXcnRXelJ0cVI2V0xsa0QxTHpmQWFDRk1td3JEWjJTQ2tXbW1rYTdGVkNNWW1TWVlXemMxSUc0RFltb0k1cDVGWEZIUDN4a285QlJjZ29ncHFLN2VQZ1VDbWo3Y3Yrak5Bd2QwTVMyRjNCUndSNjliQVl2dk1WNFRNQWh1QkMxekZJeUIyaGROS1llelI0ZnNkK3lDQ1FSd29zbkZyNWswV1cyeWFzMTZCVXB6anlYdUVNQjMrQzdCeVl5TDc4U0RFZk5JSHhQUHlRZmZKMkNTQndJWjcxT2Jvdi9KL0tZY0h0SGRDQmpZL3ZoRklKcHdhMTdlTExVTnpkTG44Y3VlL1FlMERFd0FwWU83cEhLaEhEb09NdzAza21UamNqbjdudmNialFXQzQwTHYyRDBWQUlJalYzZ25va1R6a0xxLzltV3habVJyRHh5azlnR2haMC9NNGVYYUtmbmF5OW96SWJqLyttTUl0eDBRZ0NxZ3hzQklLRVE0S0VVODB2YXJmNWVXNUZ2MTQ0QTB3NkpvNUdkam9Fa1RzQlhDeVY2NUcvbm81WFFDOU1oMm1CVmR5Wms2VEUvVGpyODc4Unczc2FjZ0U0dzRKNllaMm9MdEE1K0ZZYjhld29JK094Z2dwTDZONG9HSVFmSGs4RW5wdk8yRHFxME01V1pJUFhqaVZ6SDhBSWxCYXBjd25ZeUc1V1VOSUYvY2pCNXZqbVZ1QWtJNVVJTlFYaUo0LzZlL2xDYmtqd3RldllqZkMwMm1BMkJibjU0c2ZiTi9oNGVnVjdMc3FIMmdYcWlGc2VLWkZIa05COXd5ZEhDYm5QckNwNlVsSjBQTGgyWjBUd3JNekF3QU9qc1BsS1dWWlJrRE80SzArcWtRcUdGeUhad1ZwaG8vQnNDeWI1cDZsM1E4ODBla0MrMXI4K3N3VHorZ3ozWkJvL0loRGdLY0ZlVVJGQ2RBR0xtaDZrc3ovSm8wdzRuSkVJelRVbHBkTGMvT25xMXFQeldrWXZUR2hlVlZBQVdZMnJIblZHajAvN1dUdWRjUTN5Y0FVVWpqd1loQ1RWTW9YbmdKR3RRYVd0cU5PVDBNWExsUGdOcjE1aDU5anZYaEdoeFVqYXJaMnE0Q3o3Mk1xQUVSTFBnN24yUGc3d1FwL202Q0NBRXEzdVI1ZWRORzNlL0lmS2V6cDFmS0Z5NjU3Qjc1SVJpUlB6TWVIaytlclZIUTVUWFQzYmJyZFFVbm1tbm1QVzRneDdJdzR5S0FFVmlZTmdOQmlVQms3bmpKQmNJelo4MlJjM1dOWTNraENITzdsSGh0anQ5VlBITGl0UDRPRmNNdTl0LzhYaHB2L1NoTXB3eG9LOG02eFN2TktEYThSSlJ3SGxJb0tONmZQUTFONnoxcWFqRnVGU1FFSjNwUTV4VERRZDJiZEtmNGZ6TVRiL09Uam9qTGIxUzJuemtoMlBuQWVpUWkzb083eGZiVmI0b3JMVjlPbzRGVHM5STVORGhYZ0FIWTJYRHNzQmc5Ti8xRTNEU042N0ZhcDJicU9qT3V5dWNRTjMxamgzT3pwRG50TnZFOC9tK280VFprQUlsUmtISDBSeWcxbDJnOEVERlE3bW1xUlZBeFhiZC9DR0FIUU9lYUxQQkVjS3JKbktiZ1EyQlZsWUR6UjFBMjlKN2c5Y1FFQktHMXhlenJLRnpUUlRuOGpZZmtSRmEyYW9ZRUNTN3phQURnOWovM0RGb09BQ3NHNG9Nb3VFRmM4SFBlZWlPbWpIbnBUYmVkazZFL1BDM050OXdwVm1nMURvQW1RWWNtYlRQS2tyUGRHd3B3eEhrcjZveXp0em1ybnFPRTFIQUovZzJaYWRML3hPTWk1NDhqWDRpWitVRldtMy84QzZtQnVkWUdyWWo3YWJNdGRkMmFKK0VvUjFvSTlIaU9ER21aWEIreGpYQ1VhOC8rZlFwSU5IMW16eStXb3FxRk1xdW9CS0JRQllFejlIZXlwK1lCekxOcmRXQVh6aStTMDJkcTlGMzIvbXZXcnRjZW45ZHNLZ1FmQ3FwcERqRlEyQ24wTkhjT0hUNHE1MnN2NnJOdnZMVlh6UlJxUi9RTDBmL0U3VURjZmNZb2xhMnpXMWZqajk4SG14TW95NkgxMlIxT3ZhYmdxNlpWWEtyRDVmUzk3SHg5bHdJV1FhSyt1VTIvNHZNc1RDUDZlYWlwc2ZvSllOU2VxQzFSMjZNam5meFM2eUVZcWR6aW1zOVRDeUwvL0tSU1BOOThua0JNMDVXQUc4L251dlV2WHdaR3pCdjlWdlFidmJudm9HNDA5L3pzT2ZMR203djFHWnJNODZIRnJsNi9VYjh4bDBUTFRUeTlFdDJ4WGJxZi9GZHArUG8zcE80ckQwdkhJLzhndm0vL0VLOGtvQVR6a1BSek9keDI0VXl0OU0rWkpRM2ZmRlRjOXo4ay9WOThSRm9lL29hMFB2aFZjWDc5TVJuNDR2ZWw1YnNBQko4Zk1rUFhwckdodndwN0NHSUlWR0pCcVRnRlhJanZtTWpQZnl1QlcrOFdKd1NUUzBZb1NDNElDN1VmRG5lemh5ZndhYytPK3h6R3BuT2F3dEU2ZFpyWS8vdkhSV1l1RW5IYUVTMXlFRFZjcXZZaHc5TnZKSDZKNGtISUpNcVZreGtISU1rUm1GRS9lMHA5U04wUGZsTk55L2FmUHlHTzJJTXdUSENDWEFEQVI1SExZS3k4SmlKT29XZjBVWlNCUDhDSm9YamZiWmZRc3FYUzl0ai9rdmF2UGlwdGovNjlPTC8xQXhuWXNFa0NzZlYrQkIzT1FPZG5tSFRSSC9KQ2s0MWFscFpqQ01nVXdsT2hkdFQ5ZXVsKy9FZlM5dkZQUzJ2QlhkQWc4MUNXdWRBYXA4Q1VuUUxBeTBmSWdXbWJKMjEzM2lOZGYvY3RrUlhsUUoyVFJybUZkRmVqUzIwZ0JCRGZ2MXY2dnZlNDFILzlPM0w2TzkrUjRMLzhCSUNLdkZBcXdRZnJXTmNpWGlkUjAyRnRjQkpoYlgyZGprSnh4R3ZEbGxkbERRVGo0RkZqLzJnR1BrZlRnSFN0WU1TOWg1cGIycFJ0dm4vcytFblp0LytnbmpNd0ZnSUFCZFkwaHdoUU85N1lyUnVpTFYreFN1b2JtdlJabWtsMC9OSnZSTE55d3l1dlNIdEg1MWhjSEpYaVBrVThhakVoRUFBSlRoeVo0c2djbnlNWUVjQTJ2THhKL1MrOHh4R3FWN1p0VjIyRkV5NWYyN1ZiUjlTWVZ2eW1id1FVK201ZVdMTldUcDg3ci9jNDZzZDM0MDFEanJ6Uk4wYkFZUncwc2ZnN2Z5TVljYTZTbXFaeGUzN3ZlV3VmSERoNFdNL0pOemVBVzdMeVJmVVpMWDlodGZxbXFBbFNpek1uYWg0OWVRYmd1Qm54SDRKbWhMYktnZkErRlN1bzJYN0FCMHdpcnFRM1poQW1vQVR6a1BxUlBWMTRxU1VHWVE4Ylh4SWRIWVZZME94Z3VoRU9NWWJSWCtNOVRsVDBldkJHQ05vOGZnc0VWQUQ1bFJKKy9vamJidWlYUnlCWjVKZ3QybTl0RXZmT3JXS2IvWnc0L3UrUHBPT3JYNU9CQng2UzhQMlB5TUNEWHhMN2cxK1FMbWdUZzQvL0h4R295ckpubnd5NW5XcjZjTVNkZ2t0dGpPbHhueUlDTkhISUQ3Wk5pZ2VpZURBaUUzeC9JQlRSSXpVUkhkRUtjQUlZWWg5c2tlYlljelJCOWRPUEtDdnVobmt0VmdyM2J1Sm5wN1g4RUhVL0dHT0RNQUNHT1NEWW9DenRibjJHU3pvVWNVSnN6ZVFEWElFWEFqdHZxNStHOG9oSTZMb2hnR2o5a01GUjlOREJEdWxyUGl4OVIzWktkTzlPR2QxN1RBYmYzQ2Y5SjJHcTlIYm9jelQ5eUFNL2dNazRHRmhlWHYwV0dpTkhmUGpUL0RHN0xCbTNRN3B3T2VxRndPSTkrbzZHM3dHbkVYblJOV0k0Wndod3hBNzF3Nitoc1BXYU01Z0pWaXhDYWhFbVhZc0RXNHVkTzA0d1M3amd0WG1QUjhaTjRUUUYxVFJ0R0hqUGZJNGpUTHhuQWhaNTR5WnEvSTFUVHN3bEplYlhseG5NOUppMkdjK1Znam5iMll6WFBISkVqZWNNOFQ0aS9RMnliVjR6bUh4elhwTEpJd1BmaTcrT04wODFMZkJHSHNocmZGNTVKRkR4R1k2bW1SL0IxRGhRQi96ZGVNYk1oOGovQTh5UElwT1M1eTRlQUFBQUFFbEZUa1N1UW1DQyJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIwLTA0LTI5IiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJLT05BIEZJRE8yIEJJT1BBU1MiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlUyRjExMDAyMDIwMDQyMTAwMiIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4zLjciLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMC4wIn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMC0wNC0yOSJ9LHsiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjI0NDZkYmVhOWU3MWIwYjllZjBlZjUzNjJkNmNlZTYwOGI5NWM0ZDUiXSwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiMjQ0NmRiZWE5ZTcxYjBiOWVmMGVmNTM2MmQ2Y2VlNjA4Yjk1YzRkNSJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiRmVpdGlhbiBCaW9QYXNzIEZJRE8yIFBybyAoRW50ZXJwcmlzZSBQcm9maWxlKSJ9LCJkZXNjcmlwdGlvbiI6IkZlaXRpYW4gQmlvUGFzcyBGSURPMiBQcm8gKEVudGVycHJpc2UgUHJvZmlsZSkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoyfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiLCJyZW1vdGVfaGFuZGxlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUIyRENDQVgrZ0F3SUJBZ0lSQU1zOFlYVkJvQk51WFVqcWZDb1g3eTR3Q2dZSUtvWkl6ajBFQXdJd1N6RUxNQWtHQTFVRUJoTUNWVk14SFRBYkJnTlZCQW9NRkVabGFYUnBZVzRnVkdWamFHNXZiRzluYVdWek1SMHdHd1lEVlFRRERCUkdaV2wwYVdGdUlFWkpSRThnUlVFZ1VtOXZkREFnRncweU16QXhNREV3TURBd01EQmFHQTh5TURVeU1USXpNVEl6TlRrMU9Wb3dTekVMTUFrR0ExVUVCaE1DVlZNeEhUQWJCZ05WQkFvTUZFWmxhWFJwWVc0Z1ZHVmphRzV2Ykc5bmFXVnpNUjB3R3dZRFZRUUREQlJHWldsMGFXRnVJRVpKUkU4Z1JVRWdVbTl2ZERCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQkQyTEhIQVFxWWJkUjFXWmx1ZXJ0TTMwcldob3JZYXZXbU1WYTRuZFg5UFp3dVJFcExRNG0xbkVscVFLTW5SRTgvNEMrUnF3aWF2K21wSTRreGQ1ZTV1alFqQkFNQjBHQTFVZERnUVdCQlMzWlpqeUdsaFo5OU4xdkxvVFBYVlVhNFpFWURBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUE0R0ExVWREd0VCL3dRRUF3SUJCakFLQmdncWhrak9QUVFEQWdOSEFEQkVBaUFvRCtSNmtvbElXYU5KejRoejAzRDNnZXMzR2JNQmpBV3BrT1VnOWF5Rmd3SWdiRXc3QVlTeWs2OE92eGdYZXpnbmRUUlRFdVNXVCtmZFJuTGFCTnNhVHcwPSIsIk1JSUIyVENDQVg2Z0F3SUJBZ0lRRlFOS1crN3piZy83ZCtsVHlySVd3REFLQmdncWhrak9QUVFEQWpCTE1Rc3dDUVlEVlFRR0V3SlZVekVkTUJzR0ExVUVDZ3dVUm1WcGRHbGhiaUJVWldOb2JtOXNiMmRwWlhNeEhUQWJCZ05WQkFNTUZFWmxhWFJwWVc0Z1JrbEVUeUJTYjI5MElFTkJNQ0FYRFRJeU1EWXdPREF3TURBd01Gb1lEekl3TlRJd05qQTNNak0xT1RVNVdqQkxNUXN3Q1FZRFZRUUdFd0pWVXpFZE1Cc0dBMVVFQ2d3VVJtVnBkR2xoYmlCVVpXTm9ibTlzYjJkcFpYTXhIVEFiQmdOVkJBTU1GRVpsYVhScFlXNGdSa2xFVHlCU2IyOTBJRU5CTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFc0ZZRUVoaUp1cXFuTWdRalNpaXZCalY3REdDVGY0WEJCSC9CN3V2WnNLeFhTaEYwTDh1RElTV1V2Y0V4aXhSczZnQjNvbGRTcmpveDZMOFQ5NE5PenFOQ01FQXdIUVlEVlIwT0JCWUVGRXU5aHlZUnJSeUp6d1JZdm5EU0NJeHJGaU8zTUE4R0ExVWRFd0VCL3dRRk1BTUJBZjh3RGdZRFZSMFBBUUgvQkFRREFnRUdNQW9HQ0NxR1NNNDlCQU1DQTBrQU1FWUNJUUNCME5GUVNOMHo0bFd6L3ljMzZld3JUQ3p0dEsvcUZ2bGFQT0toK1QxbzZ3SWhBUDBvS0tBK2NpY3NEeTNZM24rVmxQOGVCM1BCek1raHZXLzlJU1hDdytWQiIsIk1JSUIyRENDQVg2Z0F3SUJBZ0lRQlRtazNad2lsRlhqc1p5d0hEbk1nREFLQmdncWhrak9QUVFEQWpCTE1Rc3dDUVlEVlFRR0V3SkRUakVkTUJzR0ExVUVDZ3dVUm1WcGRHbGhiaUJVWldOb2JtOXNiMmRwWlhNeEhUQWJCZ05WQkFNTUZFWmxhWFJwWVc0Z1JrbEVUeUJTYjI5MElFTkJNQ0FYRFRJeU1EWXdPREF3TURBd01Gb1lEekl3TlRJd05qQTNNak0xT1RVNVdqQkxNUXN3Q1FZRFZRUUdFd0pEVGpFZE1Cc0dBMVVFQ2d3VVJtVnBkR2xoYmlCVVpXTm9ibTlzYjJkcFpYTXhIVEFiQmdOVkJBTU1GRVpsYVhScFlXNGdSa2xFVHlCU2IyOTBJRU5CTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFbmZBS2Jqdk1YMUV5MWI2aytXUVFkTlZNdDlKZ0dXeUozUHZNNEJTSzVYcVRmbysrMG9Bai80dG53eUlMMEhGQlI5U3Qra3RqcVNYRGZqaVhBdXJzODZOQ01FQXdIUVlEVlIwT0JCWUVGTkdobUUyQmY4TzVhL1lIWjcxUUV2NlFSZkZVTUE4R0ExVWRFd0VCL3dRRk1BTUJBZjh3RGdZRFZSMFBBUUgvQkFRREFnRUdNQW9HQ0NxR1NNNDlCQU1DQTBnQU1FVUNJQnlSejRPQWxSWjlIejlLVjdnMlFOdEMwQzhKeEgveExKWThGWkVtdEozc0FpRUFzcmVUMCtlTmtOY1VqSTloNU9QQ29INk5tc09rZ3ZFQUJKWnJGMDdBRGtZPSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFGQUFBQUFVQ0FNQUFBQXRCa3JsQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUJIWnBWRmgwV0UxTU9tTnZiUzVoWkc5aVpTNTRiWEFBQUFBQUFEdy9lSEJoWTJ0bGRDQmlaV2RwYmowaTc3dS9JaUJwWkQwaVZ6Vk5NRTF3UTJWb2FVaDZjbVZUZWs1VVkzcHJZemxrSWo4K0lEeDRPbmh0Y0cxbGRHRWdlRzFzYm5NNmVEMGlZV1J2WW1VNmJuTTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlrRmtiMkpsSUZoTlVDQkRiM0psSURVdU5pMWpNREUwSURjNUxqRTFOamM1Tnl3Z01qQXhOQzh3T0M4eU1DMHdPVG8xTXpvd01pQWdJQ0FnSUNBZ0lqNGdQSEprWmpwU1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJajRnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJZ2VHMXNibk02ZUcxd1BTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGh0Ykc1ek9uQm9iM1J2YzJodmNEMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzl3YUc5MGIzTm9iM0F2TVM0d0x5SWdlRzFzYm5NNmVHMXdUVTA5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5dGJTOGlJSGh0Ykc1ek9uTjBVbVZtUFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdmMxUjVjR1V2VW1WemIzVnlZMlZTWldZaklpQjRiWEE2UTNKbFlYUnZjbFJ2YjJ3OUlrRmtiMkpsSUZCb2IzUnZjMmh2Y0NCRFF5QXlNREUwSUNoTllXTnBiblJ2YzJncElpQjRiWEE2UTNKbFlYUmxSR0YwWlQwaU1qQXhOaTB4TWkwek1GUXhORG96TXpvd09Dc3dPRG93TUNJZ2VHMXdPazF2WkdsbWVVUmhkR1U5SWpJd01UWXRNVEl0TXpCVU1EYzZNekU2TlRrck1EZzZNREFpSUhodGNEcE5aWFJoWkdGMFlVUmhkR1U5SWpJd01UWXRNVEl0TXpCVU1EYzZNekU2TlRrck1EZzZNREFpSUdSak9tWnZjbTFoZEQwaWFXMWhaMlV2Y0c1bklpQndhRzkwYjNOb2IzQTZTR2x6ZEc5eWVUMGlNakF4TmkweE1pMHpNRlF4TlRvek1Eb3lOeXN3T0Rvd01DWWplRGs3NXBhSDVMdTJJT2FjcXVhZ2grbWltQzB4SU9XM3N1YUprK1c4Z0NZamVFRTdJaUI0YlhCTlRUcEpibk4wWVc1alpVbEVQU0o0YlhBdWFXbGtPakpGTnpGQ1JrWkRRelkzUmpFeFJUWTVOemhFUVRsRFFrSTJORFl6Umprd0lpQjRiWEJOVFRwRWIyTjFiV1Z1ZEVsRVBTSjRiWEF1Wkdsa09qSkZOekZDUmtaRVF6WTNSakV4UlRZNU56aEVRVGxEUWtJMk5EWXpSamt3SWo0Z1BIaHRjRTFOT2tSbGNtbDJaV1JHY205dElITjBVbVZtT21sdWMzUmhibU5sU1VROUluaHRjQzVwYVdRNk1rVTNNVUpHUmtGRE5qZEdNVEZGTmprM09FUkJPVU5DUWpZME5qTkdPVEFpSUhOMFVtVm1PbVJ2WTNWdFpXNTBTVVE5SW5odGNDNWthV1E2TWtVM01VSkdSa0pETmpkR01URkZOamszT0VSQk9VTkNRalkwTmpOR09UQWlMejRnUEM5eVpHWTZSR1Z6WTNKcGNIUnBiMjQrSUR3dmNtUm1PbEpFUmo0Z1BDOTRPbmh0Y0cxbGRHRStJRHcvZUhCaFkydGxkQ0JsYm1ROUluSWlQejQ3N0pYRkFBQUFZRkJNVkVYLy8vOEVWcUlYWmF2RzJPb3FjTEcyek9Pa3d0MEJTSnRxbGNYVjR1K2F1dGxXaGJ6azdQVUFNWTlIY3JLanROYnE4ZmVBbDhhQm9zeno5dnBkanNHR3F0RjNuOHVUc05TWnBjNkpzTlQ1K3YweFlLbnU4UGZmNS9MNDhmZy9mcmljekpnWUFBQURBRWxFUVZSNDJrUlVDWmJESUFqRlhaT1kxVGF0TmMzOWJ6a3NTWWMzcjRNRTRmTUJBYUQ2emw4eS85VE9nZXQ4ZDVqZk43OGJ3TS9kRENScFI1MjF6WGZvakhKMDVJSXloQkFVU1ZBT05kR3pCWXQyZjdLRnJma0phQWtIaDlGWmhjRFhIUmtUS285TUxpaEdhYXZJbW5WM3F5RVgwRXByZ3ovNER3VUQ3a0NIUm5kOFFGTjQzR280VVZtRERnemE0dzI3b2l6ZEEyK2NLK3V1VXBqam8yK3h3Yy80Mlc1MHg1TEdZZURCc1IwSFZJeDV4OGlGNjBDYmxiVEVFa0ZyMjdiTkRCVVZTcTFPS1ZQYkU2MmIzRUg4RnFCZzVPT09FdWMydDhaSmlxTU91R3ArY0tqZzd3VkdjZW96cU40cHhnVlBRa2pGWWdiVkpLRFVoRENqWXJhd1A1cTRFVGdDOWZJTVJIdGl0cFFjQ3ZKT0VMY2JNc1FnbmNpUmtsanB5UWp2RzQ0anFCVUVURmlCaTFQRUl5ZWtPenNXK1R5NWNMSG9zNVIrZE1TMUx0U1N4ZjNnUUhjelIyQ0k0Z01OcFc0SVJBMVFNYTZ0SjQrQzZ1SHVHRThtTkRJeUZxZy9PUC9NTVV1ZVM2SXE4UzkwZEFlQkpTRXkvcUtrSytCTnd6OGNZWTRqYjVKNnU0aVdDSTJCMVo1NkxXNWtFYzRoa2RNcHN2VUM1NTg1U1gwUXViY2dOcXlmZ0RGRWNUdCs0MC8wUzVOeDB3YUN3M09La2NPYkE1SW4wQVlwMDFwamp3Mm42MjZVRGp0SHdhMjhpSHVUS3F0cnYrcmVXNDFOWjZpR2xyN3V1TEpDZmtGdGN0Y0cwNHNnbTFlTlMrWmFEbnBhVEVyR295WDVKSzJpTXo4eHMwbk93V0djUERONDlxYUNkNGJ6Sm96RFptL2FCSytFb3pMdytYaE5CaVl3SGYwc2lPdTFYUGtHL3pLd3ZxWUtjZlN3REVjSC9vVWUwN2VzL1dROHJJeWcyRE9Yajh0amtaZHVEQi9iOGh6RGxsTU1PQ1M1QkVuZDUzNGY4dGkzVVpjNGtNczN4THlhZk1Tc0poZEc4WFBxak5rNXRBZ08yNWZlS0NoblZkRGovSjBGTWtPc1UveE1CdjB3RmhZZUVHZlZIMTNmdURVMHlERkxhNGZjN1JuV0hCZnVURlYydEVtTndhZGM3YWMzVVkyamZCbDdIVDM2ZmUzNGlRTzVtTkNGRkJXMDdLalBncWhPTFUwMXZaOFB1ZVoySkNsRlpOOGprVXM2OXVrYTllUHA2K0VmTDRBRjUrTnl3U2Jpckh0Y0I4TWwvZ2t3QUVqa0s2NEtqSFBlQUFBQUFFbEZUa1N1UW1DQyJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTA5LTI2IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiRmVpdGlhbiBCaW9QYXNzIEZJRE8yIFBybyAoRW50ZXJwcmlzZSBQcm9maWxlKSIsImNlcnRpZmljYXRlTnVtYmVyIjoiVTJGMTAwMDIwMjQwOTI2MDAzIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMDktMjYiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MX1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNC0xMS0yMCJ9LHsiYWFndWlkIjoiNDFlMzk5MTEtYzY2OS00ODExLWI4NjAtYzZhZDBiNDExYjk2IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI0MWUzOTkxMS1jNjY5LTQ4MTEtYjg2MC1jNmFkMGI0MTFiOTYiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiWXViaUtleSA1IFNlcmllcyB3aXRoIE5GQyAoRW50ZXJwcmlzZSBQcm9maWxlKSJ9LCJkZXNjcmlwdGlvbiI6Ill1YmlLZXkgNSBTZXJpZXMgd2l0aCBORkMgKEVudGVycHJpc2UgUHJvZmlsZSkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NzI4LCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH0seyJtYWpvciI6MSwibWlub3IiOjF9LHsibWFqb3IiOjEsIm1pbm9yIjozfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyIsInNlY3AzODRyMV9lY2RzYV9zaGEzODRfcmF3IiwiZWQyNTUxOV9lZGRzYV9zaGE1MTJfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sImlzS2V5UmVzdHJpY3RlZCI6dHJ1ZSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiLCJzbWFydC1jYXJkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlEU2pDQ0FqS2dBd0lCQWdJVVIzOG1xMjZTZjJzelZWMkJkRzZXRU43a3VXVXdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFSWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFOWTBXYjlvUG9Sb0tvUXlXUGFKcHoxMXZyV1RnNnpUdG1OajJWb0tSbnl2S0dScXB6YjgzdzVsNllBOTZVWWtZQkRRUDBpbE8yRFBlNndXcVZSNXpEZlJ6ZGNIOGJoK0w3ZEdHdmFlNmhSVFpoa0ZrQ3BYRHM0SGNja25yRGY4RkNsSjdIZTM5SmY0Mi9HMVFtMnp6OVdXbXJQWHRnaUsveDA1R2pzUWZHdURHMXpmNVFUVVVpZThsd3ltSzNUZmRPdk5lZUpBQVBlMnBuN0l0ZlJiK3JWck5XaUR6bFJuMnZObloyd1BvNHdIL1dKNmRoWFpHK3JNV1QrYTZCb2NnMVVmSXc2a2R1bkc0YlRwWnpzdmFjRll5UjBtcGYrRGVPbnBTV0FteXdKV0h2VGxmMllYeEZ5ZVhjVEFDZFFsY01OR0oyVmhaUTQ4eHRQNS9SQlAvOGtDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNoeTQyb2tpcWNUUzFpcWEvSFJXamtCbjRIL01COEdBMVVkSXdRWU1CYUFGT3EzUXBDZURIdGtldHRVZkFPNmZFNmYyS0ZoTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBbitSSElQYnRNRUROZFQxZzhIL1JpdEFrVWRMZ0F0MXRXR1dubGo5a25idjQvNEdsWDdDOXA0NWVmUE85L2FaTDZPVjFYUktCaTZLbXRCVzVLN251WUVuTXgvNUJxQlNiTFQ3cmhkdUM0OVRCZU1iOVBIZFhzVGxTVk5ZZWZyMWRHaWRyNGoweFZCUUxiMXJrbkRBYmRXRHpLZnZuYXlLTzhGcndlN0h4ODQzTUcvckorYzBYcnVVdmJmVlRDSExpSVdoTTdvTkRoTDh4b2I2eFVvOUtMS2NTTCtJdFlzTzMvOVdiOFE5R2pzcUw0RlhzRGNHMVNhWWg3S3BmdU1tT2l4cXpKWk8ybklpY1BZUmcxSTJTdWlVZllPNzB0bWRIY2JsK2tTUW1TWXQ3cnE0dmlJTGcyR3gzajlySVR1V1RqYmFVYVNTUXhnT21NU0h1eXpNQUMiLCJNSUlEUGpDQ0FpYWdBd0lCQWdJVVh6ZWlFREpFT1R0MTRGNW4wbzZaZi9iQndpVXdEUVlKS29aSWh2Y05BUUVOQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU1aNi9UeE04cklUK0Vhb1B2Rzgxb250TU9vLzJtUTJSQndKSFMwUVpjeFZhTlh2bDEyTFVoQlo1TG1pQlNjSVpkMVJueDFvZDU4NWgrL2RoSzdoRW03SkFBTGtLS3RzMWZPNTNLR05MWnVqejVoM3dHbmNyNGh5S0YwRzc0Yi9VM0s5aEU1bUdORDZ6cVljaENSQUhmcllNWVJERjRZTDBYNEQ1bkdkeHZwcEF5Nm5rRW10V21NbndPM2kwVEF1Y3NyYkU0ODVIdkdNNHIwVnBnVmRKcHZnUWppVEpDVElxK0QzNWh3dFQ4UURJdituR3ZwY3lpNXdjSWZDa3p5Q2ltSnVraFl5NktvcU5NS1FFZHBOaVNPdld5RE1UTXQxYndDdkV6cHc5MXUrbXNVdDRyajBlZm5POXMwWk93ZHdNUkRuSDR4Z1VsNVpMd3JyUGtmQzEvMENBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUI4R0ExVWRJd1FZTUJhQUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUU13RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCRFFVQUE0SUJBUUMzSVcvc2dCOXBaOGFwSk5qeHVHb1grRmtJTGtzMHdNTnJkWEwvY29VdnNyaHpzdmw2bWVQTXJiR0pCeUoxWG5xdUI1c2djUkVORnhkUUZtYTNtaW84VXBmMW93TTFacmVYckowbUFERzJCcGxxYkpueGl5WWErUjExcmVJRlRXZUloTU5jWktzRFpyRkF5UHVGakNXU1F2Sm1OV2U5bUZSWUZnTmhYSktrWEliNUgxWGdFRGx3aWVkWVJNN1ZvbEJObGxkNnBSRktsWDh1c3Q2T1RNT2VBRGwyeE5GMG0xTFRoU2RldVh2RHlDMWc5K0lMZnozUzZPSVlnYzNpcm9SY0ZEMzU0ZzdyS2Z1NjdxRkF3OWdDNHlpMHhCVFByWTk1cmg0L0hxYVVZQ0EvTDhsZFJrNkg3WGszNUQrV1ZwbXEyU2gveFQ1SGlGdWhmNHdKYjBiSyIsIk1JSURTRENDQWpDZ0F3SUJBZ0lVRHFFUncrNFJuR1NnZ3hnVWV3SkZFUERSWjNZd0RRWUpLb1pJaHZjTkFRRUxCUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURJN1huSCtadkR3TUNRVThNOFplVjVxc2N1Ymx2VllhYVJ0M1liYXhuOWdvZEx4NXN3SDBsWHJkZ2poNWg3RnBWZ0NnWVlYN0U0YmwxdmJ6VUxlbXJNV1Q4TjNXTUdVZThRQUpiQmVpb1Y3Vy9FK2hUWlAvMFNLSlZhM2V3S0JvNlVMZU1uZlFaRHJWT1JBazh3VExxMnY1TGxqNXZNajdKdE9vdEthOUo3bkhTOGtMbXpYWFNhajBTd0VQaDVPQVpVVE5WNHpzMWJ2b1RBUVFXckw0L0o5UXVLdDZXQ0ZFNW5VTmlSUWNFYlZGOG1scUsyYngyejZva1ZsdHlEVkxDeFlicFVURUx2WTF1c1IzRFRHUFVvSUNsT200Y3Jwd25EUkxWSHZqWWVQR0JCLy9wRXl6eEEvZ2NTY3hqd2FIMVpVdzliblNiSHl1cktxYlRhMUt2akFnTUJBQUdqWmpCa01CMEdBMVVkRGdRV0JCVHF0MEtRbmd4N1pIcmJWSHdEdW54T245aWhZVEFmQmdOVkhTTUVHREFXZ0JUUzd1OWFJbzA2YlZ3amx6M3loZFVtOFNWN2tqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQTRHQTFVZER3RUIvd1FFQXdJQmhqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFxUWFDV014VEdxVlZYN1NrN2trSm1VdWVUU1lLdVU2K0tCQlNnd0lSbmx3OUs3SGUxSXB4WjBoZHdwUE5pa0tqbWN5RmdGUHpoSW13SEpneHh1VDkwUHczdllPZGNKSk5rdERnMzVQWE9melNuMTVjRkF4MVJPMG1QVG1JYjhkWGlFV09wem9YdmR3WERNNDFaYUNEWU1UN3c0SVF0TXl2RTd4VUJacTJianRBbnEvTkRVQTdiZTRIOEgzaXBDKy8rTktsVXJjVWgrajQ4SzY3V0kwdTFtNkZlUXVlQkE3bjA2ajgyNXJxRHFzYUxzOVRiN0tBSEF3OFBtcldhTlBHMmtqS2VyeFBFZmVjaXZsRmF3cDJSV1p2eHJWdG4zVFYyU0J4eUNKQ2tYc05EMDVkQ0VyVkhTSklzK0JkdFRWTlk5QXd0eVBtbnliMHY0bVNUenZXZHc9PSIsIk1JSURSekNDQWpHZ0F3SUJBZ0lVZXg5blQ5dndaTlhTNDgzTGRpWUdmdzJTalNvd0N3WUpLb1pJaHZjTkFRRUxNQzR4TERBcUJnTlZCQU1NSTFsMVltbGpieUJCZEhSbGMzUmhkR2x2YmlCSmJuUmxjbTFsWkdsaGRHVWdRaUF4TUNBWERUSTFNRGd3TVRBd01EQXdNRm9ZRHprNU9Ua3hNak14TWpNMU9UVTVXakFuTVNVd0l3WURWUVFEREJ4WmRXSnBZMjhnUmtsRVR5QkJkSFJsYzNSaGRHbHZiaUJDTWlBeE1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBdTFNZXZueTlkeU85WlVDMzlTb01oTGNSL0RYcnRGL2NpTTEydGNpeTJFWEFaNk1rcml2VnRDZkVWTTlYNklTVEVuQlA2dVNZWW92NnBwdjZPNkpoMk5IbVltNHcrSm5TNFZuQ1BVN21IQU1mVkkyTUdUVE1WT2V3MHhVc0c3c0lTSWtJRFVCbXVrOFlLOWM1emljOSt2RlFHTElrc2RYTzVpVkZJZ05HNTNjR1hENFpMWm9BUGl1MFBFb3p4QXFZSWFJNGd4S2hPQTNTOC9XOG1JV3N1Nm9meWo0R3ZrRkc2WjdreUYzMTA3UDdtd0ZITHJJM0VOYVBXTU9GY1RhR2EwZHcrL3ZWUndqUmNFWkJWc3V1VC84N2NrU3MwYTVwa3QzdlpCbGFZZVQ4cHpTcmVWN21vd2NJTTkwTDJpYUFUbFAwbnhtYUU2bk95VGJvakZWbDJ3SURBUUFCbzJZd1pEQWRCZ05WSFE0RUZnUVVTWEVoM3NhM2J0RHVybTRNTS9DN1MxbFJ1dVl3SHdZRFZSMGpCQmd3Rm9BVTZyZENrSjRNZTJSNjIxUjhBN3A4VHAvWW9XRXdFZ1lEVlIwVEFRSC9CQWd3QmdFQi93SUJBREFPQmdOVkhROEJBZjhFQkFNQ0FZWXdDd1lKS29aSWh2Y05BUUVMQTRJQkFRQjVHYzNoYWZ0cDdoS3NFWnNvK2kvWjVuUnVxZG16RzJXQ2xVb1JVcWJhUHlnbG5KRGpLUi9rZmdPbDZpYmJGL3p0aG0zS21YUTdIY0RJUDJ4TWRHN1UyTDJpbWJKUUhxUGYvaDJIcW9qYjRyWmd1ZSs2VzRrdFNSNWVsUjlMMXJZcUUvU0dZTTRpRUtvVlFTdjdSVDFyeEllV2lLc3cvVnh4aS9RT25zeDNGN3g4MENDWWdCNEUzeVF4OFZUVzQ0MGhURXdUQTFlTUhPaXgzMnRQdHl5SElhOFBWVklmVnBIUUpCYU1WdnY1MDhVRWp3a2JVMnJuamZ6b1NUTlM5QTVqVVE4bUJTdmU5NXJqQjBkbzk4RVUrRHhkQnFYMitINmk1d2xJQ0ZnemhkemNzbmU5aEdLVDZselRYNGNJZEpzclkyK3hsZUswRkZReTZsR0VWTEVlIiwiTUlJRFNqQ0NBaktnQXdJQkFnSVVUbmJiR0lSMk5IdnpxSUtGQWVRd0cxWEJpczB3RFFZSktvWklodmNOQVFFTEJRQXdMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3SUJjTk1qUXhNakF4TURBd01EQXdXaGdQT1RrNU9URXlNekV5TXpVNU5UbGFNQ1l4SkRBaUJnTlZCQU1NRzFsMVltbGpieUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRUVnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBT3NYajNrMDRCYW40VFlkdFpLcUQvT1BKeHlEeWFQbUNCVUZVaWFaSWdUdGVabmozWDI1RGhncFpaWHNDNEQweWRJY3JsQTZ3TlVJbk9STC9MOXpCYlRFSU1BVk1HbzZnN1VLQW1iMk1GNkFIYm5oWUpkOWVpa3VwVk5XU2hITllOYzRHQmRPMVlONkFmVXF2SmhIYmUzVjRTTk1QbUJSRUtKUFZ6N1Rod2dtZ2dUZThXczJLMC93c3F2MndTRTdwYkNCc1VaaElYNTFiWk0zcHFEd0pQVG1SRkV2dDAvNnRHNWVPOEYzajE0T1hxZkVobWpuMVZ2eEtEWVFPTFpBeEN3d2dDMFA0Q2RmV3YzeThQU1I4STM1NGhPMVkrR3pOanZJcVgzOE5LTHl3dUlZSEZlck94Tmx4RU1CdkZoWUJ1UnVZQWtrZ1VhUHFONlVCaHNJTHJzQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZDQ29SSGhpeU5uYm5YUldJTDZaQlhvQlg5WVRNQjhHQTFVZEl3UVlNQmFBRkNBb1VDRWJwRnBiNkZQTG5aM0Y1UHhzTDNvZk1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQ1FGYWZKSTEvNVdnOUNFRWltRTFSUDU0UmdRd1ROVE9PUXNMQUNUZStySXRsRlF6QzlaRGhyVjgyOHlYN2p6eStBQXNwM2l6SzdUMXRoMmRsN20rdHUwc3cyUGEvb2xjMDJudDZQeUl3MzQ4Z2FIemhJMSswS0U0NXF4dkZEZUwybE14YlBmQ1l2eUVFYVl6amlRRUxVNTk1MXBYR1d5S01hLzRmTHRPK1pLT1hoTXVWZXE0clhEUEk1NFc2SkhPaUFhaUtkaXcrNWUzYzJrdC9qRklRdE02dk1YZzlMTkZ6ZGpFVE50MjBWWDlRZXZScEZaZnVjTUc5d0NhUURvRmxQenBUTUpLaFBldi9pbUptWlloS2ZyMGxMY2VtdHFqSXhMQW9xWmRPWWZIQmc2K3ZBY2RQSS9pYXVHcFVBdjdYK1VLTm1Ed2paMkJhSDRzTHdoQjJtIiwiTUlJRFNEQ0NBakNnQXdJQkFnSVVVY21NWHpSSUZPZ0dUSzBUYjNnRXVaWVprQkl3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRRG01NTViV1k5V1crdE9ZMHJJV0hsZGgrYU5hbm9DWkNGaDdHazNZWnJRbVBVdzBoa1NHNnFZSFF0UCtmWnlTMzNWRXJ2ZytCUXFubXVtZ05oZnhGcmt3RVpFTGVpZEJjQzhDNEFnNG5xcWlQV3B6c3ZJMTdOY3hZbEluTE5MRmNaWS8rZ09pTjZaT1RpaE81L3ZCWk1iajlyaWFBY3FsaVltTkdKUGdUY01HYUVBeU16RU1OeTJubTZFcCtwalA1YUY2Z2kyMXQvVVFGc3VKMWoyUmoveW5NL1NkUnQrZWNhbDVPWW90eEhrRmJMOXZ2djJBMk92NUlUWkNsdzRiT1M5bnB5cFFpbU9aNVFBWXl0bVlhUXBXbC9wTVl6NnpTajhScWtWRE5FSkdxTmZUS0EyaXZMWXdYNmxTdHRNUGFwZzBKODRsOVgwdm9WTi9GcFM0VkNWQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJRZ0tGQWhHNlJhVytoVHk1MmR4ZVQ4YkM5Nkh6QWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQVlNemdMckpMSXIwT292UW5BWnJSSUd1YWJpSFNVS1NtYkxSV3BSa1dlQXRzQ2hERUhwWGNKL2JnRE5LWVdvSHFROHhSVWpCNEN5ZXBZZXZjM1lsckc4bzd6SHhwZlZjYW9MNVNldUprekh4S240YlRhU3A5K012d2FtbnA2NGtaTWlOYkZMa25mUDlrWUtvUkhrTVdoZVJKMVVzUDF6NFNjbWtDZUlMZnNNczZ2cW92cWpXQ2xGc0pwQmNzbHVZSFdGN2JCSjFuNFJ3ZytBVEVvcFk0SWdHdjZadndjK0E5citBVDJocXBvU2tZb0FsK0FOWXdnc2xPZjlzSmUwVitUQTlZWS9VbGFCbVBQVGQwLy9yOXd2Y2VQV1prUGpLb0FDL3pVTmhmRGJoNExWOEdIczNseVgyWG9tTC9MTmM4Sll6eUlhREVoR1F2ZW9QaGgvdHIxZz09Il0sImljb24iOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJpY29uRGFyayI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsInByb3ZpZGVyTG9nb0xpZ2h0IjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwicHJvdmlkZXJMb2dvRGFyayI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzFfUFJFIiwiRklET18yXzEiLCJGSURPXzJfMyJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJsYXJnZUJsb2JLZXkiLCJjcmVkQmxvYiIsIm1pblBpbkxlbmd0aCIsImhtYWMtc2VjcmV0LW1jIiwidGhpcmRQYXJ0eVBheW1lbnQiLCJwcmV2aWV3U2lnbiJdLCJhYWd1aWQiOiI0MWUzOTkxMWM2Njk0ODExYjg2MGM2YWQwYjQxMWI5NiIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOnRydWUsInVwIjp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibGFyZ2VCbG9icyI6dHJ1ZSwiZXAiOmZhbHNlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJwZXJDcmVkTWdtdFJPIjp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6dHJ1ZSwiYWx3YXlzVXYiOmZhbHNlfSwibWF4TXNnU2l6ZSI6MTUzNiwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0Ijo4LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjEyOCwidHJhbnNwb3J0cyI6WyJuZmMiLCJ1c2IiLCJzbWFydC1jYXJkIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN30seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTh9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi0zNX1dLCJtYXhTZXJpYWxpemVkTGFyZ2VCbG9iQXJyYXkiOjQwOTYsImZvcmNlUElOQ2hhbmdlIjpmYWxzZSwibWluUElOTGVuZ3RoIjo0LCJmaXJtd2FyZVZlcnNpb24iOjMyOTcyOCwibWF4Q3JlZEJsb2JMZW5ndGgiOjMyLCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6MSwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjEwMCwiYXR0ZXN0YXRpb25Gb3JtYXRzIjpbInBhY2tlZCJdLCJsb25nVG91Y2hGb3JSZXNldCI6ZmFsc2UsImVuY0lkZW50aWZpZXIiOiIiLCJ0cmFuc3BvcnRzRm9yUmVzZXQiOlsiVVNCIiwiTkZDIiwic21hcnQtY2FyZCJdLCJtYXhQSU5MZW5ndGgiOjYzLCJlbmNDcmVkU3RvcmVTdGF0ZSI6IiIsImF1dGhlbnRpY2F0b3JDb25maWdDb21tYW5kcyI6WzEsMiwzXX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI2LTA0LTI1IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTcyOCwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZdWJpS2V5IDUgU2VyaWVzIHdpdGggTkZDIChFbnRlcnByaXNlIFByb2ZpbGUpIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNjA0MjUwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblByb2ZpbGVzIjpbImVudGVycHJpc2UiXSwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNi0wNC0yNSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk3Mjh9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjYtMDUtMDEifSx7ImFhZ3VpZCI6IjE0NmU3N2VmLTExZWItNDQyMy1iODQ3LWNlNzc4NjRlOTQxMSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiMTQ2ZTc3ZWYtMTFlYi00NDIzLWI4NDctY2U3Nzg2NGU5NDExIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6ImVUb2tlbiBGdXNpb24gTkZDIFBJViJ9LCJkZXNjcmlwdGlvbiI6ImVUb2tlbiBGdXNpb24gTkZDIFBJViIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjo2LCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX0seyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sImlzS2V5UmVzdHJpY3RlZCI6dHJ1ZSwiaXNGcmVzaFVzZXJWZXJpZmljYXRpb25SZXF1aXJlZCI6dHJ1ZSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDNlRDQ0FkR2dBd0lCQWdJSkFKYlR5cnUxWC9JUE1BMEdDU3FHU0liM0RRRUJDd1VBTUNNeElUQWZCZ05WQkFNTUdFZGxiV0ZzZEc4Z1RYVnNkR2xCY0hBZ1JrbEVUeUJEUVRBZUZ3MHhPREEyTVRJeE5EUTFOVEJhRncweU9EQTJNRGt4TkRRMU5UQmFNQ014SVRBZkJnTlZCQU1NR0VkbGJXRnNkRzhnVFhWc2RHbEJjSEFnUmtsRVR5QkRRVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNVmpLSFdwYkQ3VFNsTXhvY2pUbDZuSWY3eDMyUG1zUTl6R3VMR0dxQTBVUVpvSXEzWEx6TDZMWVV2SjVBNWcwdXlGR2xsSEVmR0FLckVhQ1E4RlZ2UFMvVWgwRnlmeldoUkF6aVRTaWpqTUlJVmpqalV2OW05dkZtY1hTY2dIaWc3T2R6ODg1OFYwa3JOSDk5cUdtM3dqZ2FPZXJUV210K2pYQ1VmbjAxSWtUUHd4RzJIbGdFZDQ1ak5MU1Y3Vm9vbCtLZThFMmtpNGxFa1RlSHpib3VsUjVHVWJwM25NaTdFNDdWTVFhM2JOd256V0Jic2FCU1NRaExrM201SGFLaGh4YTZ3SkRLNDdOaU1Da0NrZElIdVdTUUxWQWZtODVVQU9OdEVPUHdpME91SzNxYmU4eUtPRkdmMEtoQjVNTWVBeW03TVYvTTRXMGE0OW9nUEQ5cE1DQXdFQUFhTWdNQjR3REFZRFZSMFRCQVV3QXdFQi96QU9CZ05WSFE4QkFmOEVCQU1DQW9Rd0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFKV3o1eExNazVXTlliQWI2eU94RUNCb1oyV2VCL3FsNFZKM08vMy90TnN4T1luekxlV281NDB6UWg5ckFtYXh6N2V1bUJsc2tNcTR5R1BTTlhCOXljV0dIZ2tjQ2VTek4yd3Y4Q0l6REJzMm9CWmpUTms2NUxCWkRzc1RPQnRNVy8rdVRGSFFmYnVPM0lTTGhJMERYZlJFaTlORE0zamZrMTF4SGNzZmgyUk1WK1FkTmZ3VmFaWnJDcStvdUcrRXZrdjdLcXErb3l1MFZGTS90ejY4VEdsNnlsaFBGUjFxaDl3dHRwVmpBT09DRVFDTHFQMmRQMjhsd1lCeUNxSFFxVkh3YnVqdi9MWmpabktXM0xZbmRaaXhQUFNSQ0pzc0REd0p2aC9mNm5UeGc5WkUrL0pjWXJlNUNhSThuelZIYVNPQ2pOSjdGelVMRzY0SmlXT3ZRNTA9IiwiTUlJRGRUQ0NBbDJnQXdJQkFnSUpBSUNVVHZrZ3RqNUNNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1GRXhDekFKQmdOVkJBWVRBa1pTTVF3d0NnWURWUVFLREFORVNWTXhDekFKQmdOVkJBc01Ba05UTVNjd0pRWURWUVFEREI1SFpXMWhiSFJ2SUUxMWJIUnBRWEJ3SUVaSlJFOGdVM1ZpWTJFZ1EwRXdIaGNOTWpBd056QTNNVFF6TnpFNFdoY05NekF3TnpBMU1UUXpOekU0V2pCUk1Rc3dDUVlEVlFRR0V3SkdVakVNTUFvR0ExVUVDZ3dEUkVsVE1Rc3dDUVlEVlFRTERBSkRVekVuTUNVR0ExVUVBd3dlUjJWdFlXeDBieUJOZFd4MGFVRndjQ0JHU1VSUElGTjFZbU5oSUVOQk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBdkFLT2VxQzUvcDBEMWlzQ1lLUUpsVlVPckI2STdETG9jdW5FL1JtOGR1R1RieXhRaHQzQ2JGVlR2M04yTHAyZmJqeGxJKzNzT1NHazMzRlRZa1RxeGNkSklySjdTc2tCY1VTTnJmS09hUVQvNktRY1A0Q203Vis2NTVUcStUV3h5eFdRaER5Z3QxNXFvUDdNdUs2YlQ5U3dwQ2pwZktoYU1TbXlRYU1vVWNSQWJMcWR6QkNhYzBoekIrWmUrZ3FKbG5XVjlVYVNJMnJGc1Z1SDRaRTBjUk8rTU9wYUxnTS9zMjQ4bkdHSHAyMmV3U1FmYm5QYUJiYjhpcXlBUCtjdTUyR0xzVXBLUkplYkUrUjYrUE1ROUpDZFdlUVpSM0RrZlNpZGt2M21jYjRqcTFpSXRhK01xS2hSbndyZlhoOTExS1dMbllBbDlFTkNoTFgwYzZTajFRSURBUUFCbzFBd1RqQWRCZ05WSFE0RUZnUVVXTHZoUkJVUG44dUxJZjY4K2d2L05aSXdHU0l3SHdZRFZSMGpCQmd3Rm9BVVdMdmhSQlVQbjh1TElmNjgrZ3YvTlpJd0dTSXdEQVlEVlIwVEJBVXdBd0VCL3pBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQUZMckRoYWVnZUtIeFlqSDNFUDN2VUJLaG56TTIwNkFTeGdlWUNPMkVjOXBPbFlKYWVxRkUrc1VhbVVWL3B3akRscU5hU2dGZ3k3VHdlWWt2T21NbjRxU2NzSHF2SjN6R09BaWFmd2FoMXZVSGZDbFhSOCtheE8yaUdPVUYwSktyWjlZWWpiQWE1LzRIQ2x2N2pGUE9kTVdUT1F5bmdvaUhBczNqa3VZanBDTEZsQjRWT2kzZDF3akExcG5UZEJLa0FiN3Q4blR2dysvWGJGdmNRYTczVkg3c2p2b0JxRDNmZE1mUmN1VnE0cVVadFpUNmNHYWdUSEQ2MVR0cWg5b01DWlhjRGJSMVBHWm5OYnF5Y3NXUERJSzBucG1LMy8zbGZWOGMrWnNyeTZlMTcwbWZKTVpwN084bTZDU3o2L1ZMSyt5REpkNzg0MXdwbWVLVGY2SW5aQT09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQVF3QUFBQWdDQVlBQUFEbmxVWnFBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRW5RQUFCSjBBZDVtSDNnQUFBQVpkRVZZZEZOdlpuUjNZWEpsQUhCaGFXNTBMbTVsZENBMExqQXVNakh4SUdtVkFBQUsxRWxFUVZSNFh1MWREWEFjWlJtK05PQWZLb2c2V08wUWNyZVgzTzcxUjQxb0hkU3FxREFPZzMrY1lFWEJvbFhSVEVuMjIwdGFLVGM2NG1nQnF6QmlFVVZwQmRxaXd3aHFTZElTMnVwWVNndlJ0cFRTY2tsald6SGFnanBTUmRyNHZMdHZqcnZrMjd2ZHZkMUxqbjdQekROM3QvZCs3L3QrZjgvKzc4YUswTkRhYXIycU9kWFpvcVd5SDlSMGEwRmN0NjdXZEhHVFpvalZDY1BxU2VqVzFvUXVIc095L2VCVHNEbU0vNTRaVDlqK0xXR0lnN0RmQi9zQmNEUHNmNFhmUDhYM2IydUcxWkhRelU4bVV1S2R5V1RIbTVxYWNpL2pIQUtCeWlmMGJCcitMd2FYSVBZUGtNZHFmTDhYZFdwbHMxQUEzMS9Rak93OThMOFM5YjhCWElSMituRGM2RG96bHNrMHNsbmtRTXhrUEdYTzlFSnRWbllHRjRzVXlWbmQ4VVRhZXA4YncrNkxha0JqNWl6ZGJOSlMxcnhFV255V3hnMzZFbVBkV29QUERlamY3ZUFUR01zSGFEelR1QzZoYmowTi9wWG1Bc3J1Z3MwV0xQOE51QkpqWkptV0VsY2wwOW1QSjFKbVcwdEw1K3VpSEJ1R2tYc2xqWDg3bmk0RXpWbms5QXZrc1FuNTdFU2RockI4Qk11UGpPV1AvLzRPSHNSL2U3RDhZZFRsZnRSaEZmZ2RMRzlIdTF3QWZ6cjU1akFPa2lRS2h2VmJHQjZDMC8vaSsyaU5lUng4RmdudlJmeGZhaW56U2s3TkUwaUlVUGJmNDN3V21OVE5kN0JwS0VBN0xaZkZBWTl6cDN5WlRTTURpUVZpL1UrU2c1UVlBSWZPbUcyZXdzVWpBL3JoVzdMNEJlcm1qOWgwVW9CMk9CK1RaVFc0Qi9rOE95Ry95Q2lPb1cxSVlINkg4WFB6OUxiY0t6aWxRR2hwTVp2aFp5SEd3RzNnNDJCazg1WjhvOTBHOFgwTmlTczFJdjJRR2s4S2RXc3p0NHNuSVA4UnFSOW1EUVhESWRaU2JCb1owSWwzUzJPWFpYWXBGNDhNVTE0d25LMWJlVzQxcEwzRkVRQ0psUFZXdERHMmZ1eVZyTlIzdEJUZFNqQjhZcklGb3lWdG5vMk9DekJneEROQkI2cFhLTUh3eGlEOWdLM0tjNlBja3ZCR0pSaStNY21DMFlENGZkSzRYb2g5Vy9ZVENaUmdlS052d2Noa0d0RzJlMlcrYWtzbEdMNHhtWUpCYXhscFRJK2tOUlFkbUdSM29VTUpoamY2RlF3NmNDcnpVM3RDTUxEV3VRc2QzUitBdzNLbkJRNUt5bmpoamR4T25uRGlDRVp1R2pyc1lXbE1KdHBpV1VLM0JtVC9GZkV1ZGhnNlVQZTZGZ3owYlI2ZmE2TW1uWTNrbER3aGFZakxVVTZlczI3dDBnenptN1ZnVXU5NkQ2ZmtIeENhNjJVVkdDTXE4ZzAyalJRbmltQm9SdllpYVR3bTJudGZXOXZDazdXMGRZSHMvd0oxNjNrNmVNWnVRMFc5Q3diRzlLMXNPcVdBdklVMFg1dGlEWnROYlNqQmNHRUVndEhXZHN2SjhFMm5BdVV4aWJwNWhXTTkyb0RmMnliOFgwS3gzckVORjBvd29nSG0waEpwdmphVllQakNpU0FZaWJUMWVXa3NKaWJDay9QbTVVNWljOHJ4UXBsZE1SUHA3SGxzSGhxVVlFUURKUmdoNHNVdUdIU1JEK3BJVitUSjR4SDFMRzlkakNIVGlNbFI0VmlHMkU3SFJiaEFLRkNDRVEyVVlJU0lGN3Rnb0oyejBqaE10SE9lamwyd2VRRlkvbEdaZlNuRmZEWVBCVW93b2tIQ01CZEw4N1dwQk1NWEtncUdJUzV2VHB0bmgwWFUrMDVabkFKREZBekQ2RGdkL3A2V3htSEdEZkZGTmgrSDBRYjB3YU95TW1PRStPVU5JL2NTTGxBMTZsMHcwRjY3NDdxNHBScEdjZHFhN2t1UjVVdEVINDVnRG13S2kvRFpqOC83SUVTMzRyT3plYWFZeldsVWgzb1JqSm96Uk1Hb09BRU5hMGkyZFRHR2VFcDhURkptUER2WXZHclV1MkNFUWJxaGtzT0ZCc3lsaTJXeGFzVGo2TmQxMnBzWHY1N1RDUVlsR0M0TVNUQmFXNjAzb28xZGI2cXpxVnRmWW5NNTZBcEJ3OW94b1Z3Uk1ZbEdOSzM5MVZ5aUtpakJpRVl3bWxQZExiSll0U1RhN3FIaUErdStvUVREaFNFSkJ0cHZoZFQvR0hXeHY5eld4UmkwdFBpRXRId0p4YlZzWGhXVVlFUWpHSFJ3R3VPaDBnVjVrVE9lTWkvaGhQeERDWVlMUXhDTXMxcXRWZ3p1OHJldnB5eVBqd0h3c3BWaC9TdVZXaktkQ3dTR0VveW9CQU81cDgzM29wK2VrOFdzRmRGK3dhOFNWb0xod2hBRUEzN1dUUEJiUkhUY0FleEd2SlROSGZRTU5jZjZCcytQOWVibnhmcWVQSldYMmtDWnpIZ2ZFeGpDR1FJbEdORUpCc0YrRUpFdWRzdmkxb2JpVDV5S2Y5U05ZT2pXWmpUeWZhSFJ1ZDlBSG90WXBXQTROeHFKWTFMZlROVDVLMndlaTYwZk1pQVVENEtqQmZibWo4YjY4c3RqMnc3YUQycWhmVS8weHk2WnJ6SFMycXVscFRObCt3eUl1aGNNakJVNjYxUU5tMmN1UG9QRFJZVFJCanBiUjJNQU9WOUhaek9ROTgvdy9mWXdpUEh0ZmplMGJ2MkZrL0NQZWhHTU9yc09vL0x0NjdvMVhEZ1Z1aUUvQndMeGp4S3hLT1hHMk02ZHRpMzZ3OE9SZG5HUDdUY2drRnVkQzhiVXZBNmpsa2lrTzgrVHRnMklNWFNZemZ4RENZWUxxeEFNTDdldm83N3R0bkYvLzBuWWt0Z2hFWWx4SExxYXpKMnRqRXFiczlpeVNXWG4ydjREUUFsRy9hT3NZQmpXQVRiekR5VVlMZ3dzR0xscEtMdFY2cE5KSFZaNFlITGYvbmZKQldJQ2gySGRRRVhpNmV3bE1yOGxkSjVIWXR2N2hSS00ra2M1d1VENzdHVXovMUNDNGNLQWd1SHA5R2RLWE1YbUVJeDh1MFFjWFBqWWErMHltVXdqMnV0eHFlOGlvbzRYMnZZK29RU2ovbEZobCtTUGJPWWZTakJjR0VBdzZIb0s3QTZVbmNpbzU4R21wc3RlZUIxRDc5Qlg1ZUlnNGYzRHAzT3BHT0xNbC9rZnh4Mnh6RnJmajhWWGdsSC9xTEJMc29YTi9FTUpoZ3NEQ0VZaVZmNzJkV2JwSmR3OSs4NlJpc040OWc3dWgzVmhGNFBGNlFtSi8xTHExZ0l1NGhtVkJBTVQ5dTd4NzB3SmcvVFlmVTZoTEpSZ1ZFYUZYWklIMk13L2xHQzQwS2Rneko1dG5nS2ZCNlMrbVBqLzBJd1pIUy9uSWc1R1J4c2hCZ05Ta1NqbFlpNVJBUHJ1VWxtY1ltSnkvWG5HM0hFeEs2RGlGa1pFeEJqWXlDbVVSU1hCUUR1UG9BNWJvMmJTeUw2ZFUvSUUzaXFVbmdZTm0yZ0QxN04wK0c4VnArUWZTakJjNkZNdzRycGxTZjBVRVRGTk5pOUZ6L0RNV0cvK2lFUWtIUGJtTjhTMmJadDQrYmh6ajBuNUozaUJkRnMxbC9BRTFMMnVCYU5XVE9yaUE1eVNKeUR2NzhyODFKeWVyeTZXUUFtR0MzMElSdE9jM0dsb3A4TlNQMlBVeFZObDEvVHI4cTJ4dnZ4NjhQa2lzZmduZmw4ZjZ4OTBmUVVsNG41R0dxK1l1amh5NXF6dTEzQ1JpbENDNFkxMUtSajBXa2d0Ri93bVJTVVlMdlFoR0Y0bUdBYUxZUFB5MkRnMFBkWXo5SDdzcHN5TjlReFVmQzBpWGZ5RlB0b25pMWxNR3F4Y3BDS1VZSGhqM1FrR3hDS3BXKy9tZElKQkNZWUxQUW9HdllRYTl1WGY3MWxwNjZKS2xIdDgvUXNVUiswWFRYdUFFZ3h2ckEvQm9MZnIyUWZIci9HemxlbUtLU01ZdW5rSFRTekVsTDQrc0ZhQ2dmbytCKzdXak96bjJMUXNuTmNHaUQxVVR1YlBvZG5GNXBHQXpwZ2d2dXRXQnVyNkg3dE91cmlVaTVRRlhTV0tNdC9IQk41RWF5WFVyK3c5TWNFcGp2R0s0dmZJYndWZHc4SXBsQVdOQlpTNUR2V2hONVhuNGVkb3FkOG9pRnl4MndrK2l1LzBJdWlsOUt3VFRza1Q0bWx4RHRyelJtNVhqUFVvMnBYZTZHNDlnanh2dytmQ2hOR2hjZmh3UUM5amFUTEVHOXhvR0ZlV3ZpWStVdVNtMlErY29YZHk2TllpTk93eVZQckhHQmgzSm96dVVDc2VUNW1YUWZGL2poZy94T2ZYTmQyOGdqbzBhSDNwTEFsTk5HZHRMNVlpNTV2UWdiZWo0KzZnLzlnc01xQU9IM0hhU2Z3RWJYY0R2bWVUaHZVcFRlOTZ5NFF6TTc2UW05WTBaOUZwZFBjbTZ2TnBzQXQ5c3R4cE8rdlg0RWJFMjBvVENjc0dTb25sK0IvZjZXYS9WY1Y1MGFTUHg3dE9EZUVCeGcxMHh5K2Rrb1hnZkFneEZpRGUxOUFPMzBNL3JFUU85eUxtQTRpL0JiKzNsK2Jua1BJSE40UHJVTCsxK0Z3QjIydmhveDFpZjFHODFYcGJ2QTI1WmpLK3IybHhSMjRhMWQ4UlB6RWZ1d29XY3NFV2lKTXpZaitJM3crVnRLc2hIZ0gvQVBaU25xalR6Zmk4eGg2N3VuVXVQZHJBMjhOeFlySC9BejN0STRqNStUT0xBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMSIsIkZJRE9fMl8xX1BSRSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJtaW5QaW5MZW5ndGgiXSwiYWFndWlkIjoiMTQ2ZTc3ZWYxMWViNDQyM2I4NDdjZTc3ODY0ZTk0MTEiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjp0cnVlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsIm5vTWNHYVBlcm1pc3Npb25zV2l0aENsaWVudFBpbiI6ZmFsc2UsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjp0cnVlLCJhbHdheXNVdiI6ZmFsc2V9LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjk2LCJ0cmFuc3BvcnRzIjpbIm5mYyIsInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XSwiZm9yY2VQSU5DaGFuZ2UiOmZhbHNlLCJtaW5QSU5MZW5ndGgiOjQsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjo0LCJjZXJ0aWZpY2F0aW9ucyI6eyJGSURPIjozfSwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjEwMH19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTA2LTE3IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjYsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiZVRva2VuIEZ1c2lvbiBORkMgUElWIEVudGVycHJpc2UiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI1MDYxNzAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTExLTA3IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjYsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiZVRva2VuIEZ1c2lvbiBORkMgUElWIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNDExMDcwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMS0wNyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjo2fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTA4LTA2In0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiNGIzYjgwYzNkYWIxM2RiYTQ4YmUyMzRmMzA0MDBiMjg0ODNmNmU0MyJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyI0YjNiODBjM2RhYjEzZGJhNDhiZTIzNGYzMDQwMGIyODQ4M2Y2ZTQzIl0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJJRC1PbmUgQ2FyZCJ9LCJkZXNjcmlwdGlvbiI6IklELU9uZSBDYXJkIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjE2Nzc3MjE2LCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjJ9LHsibWFqb3IiOjEsIm1pbm9yIjowfSx7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUMyekNDQWoyZ0F3SUJBZ0lFNnJRQUFUQUtCZ2dxaGtqT1BRUURCRENCa1RFTE1Ba0dBMVVFQmhNQ1ZWTXhDekFKQmdOVkJBZ01BbFpCTVE4d0RRWURWUVFIREFaU1pYTjBiMjR4TFRBckJnTlZCQW9NSkVsRVJVMUpRU0JKWkdWdWRHbDBlU0JoYm1RZ1UyVmpkWEpwZEhrZ1ZWTkJJRXhNUXpFMU1ETUdBMVVFQXd3c1NVUkZUVWxCSUVsa1pXNTBhWFI1SUdGdVpDQlRaV04xY21sMGVTQlZVMEVnVEV4RElGSnZiM1FnUTBFd0lCY05NalF3TnpJME1qRTFPVFU1V2hnUE1qQTJOREEzTWpReU1UVTVOVGxhTUlHUk1Rc3dDUVlEVlFRR0V3SlZVekVMTUFrR0ExVUVDQXdDVmtFeER6QU5CZ05WQkFjTUJsSmxjM1J2YmpFdE1Dc0dBMVVFQ2d3a1NVUkZUVWxCSUVsa1pXNTBhWFI1SUdGdVpDQlRaV04xY21sMGVTQlZVMEVnVEV4RE1UVXdNd1lEVlFRRERDeEpSRVZOU1VFZ1NXUmxiblJwZEhrZ1lXNWtJRk5sWTNWeWFYUjVJRlZUUVNCTVRFTWdVbTl2ZENCRFFUQ0JtekFRQmdjcWhrak9QUUlCQmdVcmdRUUFJd09CaGdBRUFKWEUyTEFsZGk4YnNDdkVPVHl2dE4vOEVnRDBxVUdVZXBOZGo5cWFud2RhZXpOeVZIMU1MM3BvcmFJU2lXTmhIcVR5Mm5TSXNNOW9GV3F6d2VqQlhQeCtBVVpyK2NuRkdJVnNDY2o0a1g2aFNVSzNKenE5a0pobEp1NS94bVlVQ2xjK2JxL0MrelRxWjZKNzhYTG9YSHJvM250Y1I2U0ZQbHE4Z3FOb2FUWDE2R0lpb3p3d09qQWRCZ05WSFE0RUZnUVVPMVk1Uzkyb0VrMTcxUUJjaW0rQmlCSEtkTU13Q3dZRFZSMFBCQVFEQWdEL01Bd0dBMVVkRXdRRk1BTUJBZjh3Q2dZSUtvWkl6ajBFQXdRRGdZc0FNSUdIQWtFR013OGNYQkl6cG1CYVhMcTFiRnNMaXVBOHRWY0ZJT3hqM28yYTAzZTlzcnNrQ21MWjBwMk1ZcU1nVDFJcFZUYVRVcmpTZ0hpbmdSZmZzWVBmK21uY3FBSkNBSWwyV3J0Z3hWUU1BV3dkK2UvWENSK1VaNWtwbVBocEc1amRlZmhuS0hOaEgyMGNXbW5hL0s2Nkl5OFg2cHE2WVM1bk5RZ1doSzN0QlBmNTdDVXRrREpuIiwiTUlJQzNqQ0NBaitnQXdJQkFnSUdBT3EwQUFBQ01Bb0dDQ3FHU000OUJBTUVNSUdSTVFzd0NRWURWUVFHRXdKVlV6RUxNQWtHQTFVRUNBd0NWa0V4RHpBTkJnTlZCQWNNQmxKbGMzUnZiakV0TUNzR0ExVUVDZ3drU1VSRlRVbEJJRWxrWlc1MGFYUjVJR0Z1WkNCVFpXTjFjbWwwZVNCVlUwRWdURXhETVRVd013WURWUVFEREN4SlJFVk5TVUVnU1dSbGJuUnBkSGtnWVc1a0lGTmxZM1Z5YVhSNUlGVlRRU0JNVEVNZ1VtOXZkQ0JEUVRBZ0Z3MHlOREE1TVRneU1qQXdNREJhR0E4eU1EWTBNRGt4T1RJeE5UazFPVm93Z1pFeEN6QUpCZ05WQkFZVEFsVlRNUXN3Q1FZRFZRUUlEQUpXUVRFUE1BMEdBMVVFQnd3R1VtVnpkRzl1TVMwd0t3WURWUVFLRENSSlJFVk5TVUVnU1dSbGJuUnBkSGtnWVc1a0lGTmxZM1Z5YVhSNUlGVlRRU0JNVEVNeE5UQXpCZ05WQkFNTUxFbEVSVTFKUVNCSlpHVnVkR2wwZVNCaGJtUWdVMlZqZFhKcGRIa2dWVk5CSUV4TVF5QlNiMjkwSUVOQk1JR2JNQkFHQnlxR1NNNDlBZ0VHQlN1QkJBQWpBNEdHQUFRQWxjVFlzQ1YyTHh1d0s4UTVQSyswMy93U0FQU3BRWlI2azEyUDJwcWZCMXA3TTNKVWZVd3ZlbWl0b2hLSlkyRWVwUExhZElpd3oyZ1ZhclBCNk1GYy9INEJSbXY1eWNVWWhXd0p5UGlSZnFGSlFyY25PcjJRbUdVbTduL0daaFFLVno1dXI4TDdOT3Bub252eGN1aGNldWplZTF4SHBJVStXcnlDbzJocE5mWG9ZaUtqUERBNk1CMEdBMVVkRGdRV0JCUTdWamxMM2FnU1RYdlZBRnlLYjRHSUVjcDB3ekFMQmdOVkhROEVCQU1DQVA4d0RBWURWUjBUQkFVd0F3RUIvekFLQmdncWhrak9QUVFEQkFPQmpBQXdnWWdDUWdFK2ZiYkpGY1hpRmdRWmJacjN4UWRVV1NuZ2cxaE5ya0hGSGg1UTZSRUhYSEVYYXl4K0ltZjAwaVBvTnBBRTZjOW1DU1RWZVdCc0dPcURTNEIzNlJWUW9RSkNBYlh3TUQrbDFGL0xzeFJCZTQrME1IaHdyMjB2NmhrbStzMktPVlVyMm4rSUF6MmNnaENDbExPVGRYWHZRR2w0NjUzWFgzdndYOVZwZ3lSU1VUMXRoaWV4Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQURJQUFBQXlDQUlBQUFDUlhSL21BQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRmlVQUFCWWxBVWxTSlBBQUFBb3JTVVJCVkZoSHpWaHBjRlBYR2RYeW5tUXRYaVhMKzBJYXNNSEdPd1liRWxKS2dFa0NBYVlNMDB5Yk1tbExLQU5objhuQ1pnZ3A1QS9VaEk0emhORFNhV2NLSkd5Rk1LR0JOSEh4Z28xdEdiTWJiL0sreUpZbFdjdVQxSE4xaFZCa1c5SVBZbkxHNHpudjNpdmQ4Nzd0ZmxkOGg4UEJHNFhHZTExMWxacmV6bUhPWnVmelhZTlBFdzRld3dwakVrS3laeVhGSnlsY2d4N3dsblg4OEhmSEQxMDM2aTBTS1NzUUNuNFVUVTVnV3h0bkh6RmFJMVRTOVR0K3ZtUmxybXZDaVNleUJyWERLK2FVR0hUVzRGQXhCTkhCQ1lETlpoL3NOeVpQaVRqNTN6VThucEFPdW1SMXR2Y3ZTaTlXeFFURHRuUmlnbUUyY1VhanViUjVHeU1VNDVIS3NzOU8zaStUaVlYTXhCbHBOQ3htVGhiTW5yK3hFWnpvK0dEdGFTSHdURFVCSWpIVDIyVTRmdmdhT045Z01NeE8vRGdxTm9ULzQ0VjN3TERiSGJyQmtiSzJEd1FYVDZsbDhxQ2ZnaVpBSU9EYjdieks3KzhMcDhRczdHelRQWE1QUG9IREVhNlNDam8xdXNETEFZeU1mTVlmelYvODkzeDBMd0RvbytPSDZ3TUJ4SFJwaGdSV0N4ZWdBN0Vsa2dVVlZpeG1lSHlTd3B6VkxnQVFBYzVITEJBS3lhUER3U2RTN0E1RU1aNnh4RFRDQmFnTVgyV3hZQmRlUUtMd3BUMmR1clBsNnkvWGI3NVF2V0Y0Y01ScXNUMlhvcnlzM29RUmhVcUdrbTBZTm0vWnN4Q1BYOS9hck8wemNKdzlQam44c25vejFpeDlJOGVnTjd1K3l4LzRlQkVYOVFmVGlQVzFsUm1oRVJMd05VdFBpSU1ZbUdwNlhqeWRmWFN2RjNaaVJjSnZ2N3BEUjhJVVVxR1FYMW5hVlBiTlF6eHVMSnB2NDRnNTZheGZDQUpaQ0ZQMTl4aUxpcGVCTnovc3F5aDlKQTVpclZZdUxUTU9JMjJQK3ExV0cxL0FaMWhCUTEySDh4Tzh5ZE9pWUswSWhheG80M2s2OHNkM1g5THJUSlQ3Z3owZ2ErSGsvdTI2QW9HUXVIdjcyMmNVa1RLUUVZTTF0ekFaUkYybEVZa1lFQmlzbzJVSUJFalBqb05XSlBqZ2dQR3JMK294OHB1MWhmaThPeHQ4d2NGRGJQa0JpWFFMdDNYZkl2RHEwcFk3OVIyc2lNR2dQRGdvVkVGOFduMjlGZTREUWJRaXpoL2U3Z2JQbVpXTTRBTUpDWmZzMzNZSkJOaDVhTW5nd0FqbHZ1SGZpYkQ4NnMwdlViNW55N2tJSlRFVng5bFNNNkxwNE8yYjdlempBeDVtVTkvUWdHVE9USUE1UVdCQ0syZjdSMGtaK0lKbDZRcWxITTRsUzMzQ2p4UHROanUrOTYzTmM4Q3ZuR3ZvYXRQUkZvT3oyTE5tSmppWDhPN1dkd2xaMS9mQWJEVVZyU0FTR2F0VXlmQng4T0RRb0UvMlhYWE84M1lYdjQ0a3Bkd0gvTWdhR2pSdCt4TnhIN0JudzRVd1p5WUNjQ3ROdzVZSEE0em9TWldCMldyTGlTeGdhbVlzTlF4S0Y3TGg0STRyNFBsekowMUppNkwrOVFGZnNsQVNaVExSNHBWWjRDYy9yMFQxcHVjQi9NNVpiSEFUZUUxRlU1Q0VKYXVkUUl5M05nMVFucG1mNE41ZUpoZWZPRkpLZWRIaHBmMDl3NVNQQjEreXRIM0dQVWRJVVFBTzdiNENYMUJPeW5jUUV4b21CYitqN29JbDZEZ0ZwdTQzZElGTXo0dURVZWtnc2lGVUlkMjEvaXo0NUxTbzNNSkpPRERvMUpnWVZ4YlNPM215WXZiODU4RS8rZkFiMkFtK29GTTJ6cGFTRmtONVRYbUxPOTRwVUducmJyU0JaT1Fub09TNnp4d1k5Y0kvYXdlNlNXRHRQN29jaGNQSGNUU3VySUZlZmRHZmwxSis0c2gxZVREcFpTbXMxaWZ4amtLRm5LQ2NBaXJWbFVTV1JDTENuM3RyR0N4TUtkMjFnUmhNR1IweTc3VnBhSlRwMUdpTUxRc1d4bFZwV2s0cytKNTN6aU90OEtWMENzQnNWbjRpU1BPRFBwUEppdnBPeHluZzA5czFuWlJuNXNGZ1Q2SWJKL2YxcXc5Ykd2dkI5LzFsR1c0VzR4bHNERmxZaVZwMTRMTmZndmYxNkUrZnFKSklSWFFLY1BBY05xczk3NFVrOE9yU1pzOTRwNER4TkMxYVdocXlDeElSREhRY3dMdUZLMlRiVnAwRVJ3aitZZXNMdUpEUktTK01hUzBIUHErTUNnYnJhTkhTem9WT0VEaDRmQUY1YjFDRDNnSStHdWdtME1tQXlFUEZYdmJBQ1laMml2TDQ1QWdrTytWZUdPTmJJU0pJeXU1WWV3WThZMFpDL3B4SlpvK3NvUkxWbGFTVTV4WW1tWXplOFlGektUbytSQ29uQnE0cWJmWktDR1QzL3FQRUQ4QkhXeStpY0ZEdWhiRmpDNjc1OTc5cUIzcEoxbncwS212RUVyYnFmODBnYWJseDZGNjg3SUhzUXdtZ3ZMYWl6ZlBpQ1lkT1NsRVdPck83dU9nL3JKZzBqWFRLQzJQTElrR2dsTzFjUnd3R2J5NVlra2FkUW9HZGJsVzNVNjZLQ2JIWmZpQUxlK2NVa01pRFhPMkEzbk5qdk9mdWc2K0RvSlA5ZTBrWmJxWjBmRFRHbGdVZ2VzcXVOaUxYd0ZHWDBZNjZyY0t5QXZWTjRrUWdNei9PTTljQXE1bEx6eVhuVWtOTnU1QVJ1dU1TK1p0YjRNcnV2WnN1U21VaXJ4VDJ4TGl5cU1IZSsvMXBjTEdFZVdQTlRLUEI0cDVDcXFJTkJFL044SmFGNU1xZVNjcEhYVVdieU5ud0FIaWwvaDQ5NGdIY29ET2YvdXNORkIwNk5TYkdsUVdnSGJoL3A3dW1vZ1Y4eTk1Rncxb1ROUmhrTVl3QWNRT09xUGVzaXFnTFNoVkpZUUFkRHUzREFLeVo5OHJVeUtnUThCM3J6aWlqNUw3dkVMNWtBUkdSc3FMMTV5amZzSE8rYnNqVjljTEZOTHhTTTJJOGt4R0JsVDNMZFFEY3FtbW44WTZYd1YzNXd4Snl2R3FhdE5jdTNxWDF4UWY4eUdJWVlVZmIwTmRmTm9DdjJqaEh4QXBwcFdIUVZ6MXVZSEIwb2xCUmpuTUpOWVh5anRaQmVpNk5HQ3dyM3BvaGRkYUM5OS8rSWtJbGN3ZmNlUEFqQzhBZDVzQjJWOWY3enM2WGRZUEVZSERpM1ZyWGJTSTlLdzc5SitVV0U1ZnRQQzVyeXpXaUlKZXBVSFhmM2Y4S09KS2dvYTVkeFBveEZlQmZGdDdZT0d3NWRhd0tmUG1iT2FHaEV0Z0dnejNkdzFZelVaTXpPNUVTS0FCU3MwaXUxZDFvRllsSlVPdDE1dFZiNTRJQVNDRGNoUUs1bVBxWEJZU0VTVDUrMzJXd1hZY1hhd2RJbWNWSmNMT00rSEY2WGdMdHErdzJoekphVHN1NnVxb1ZkUVFWSDBtd2VodVI5ZTJsdTEwZHJwN2JMd0tTaFpJSUVTVUh5QzlQaGZNbXg4YUZveWdnYk5YVkpCbFRwa2RqQWV6a3ZIZTQrckI3dDdvUmwwUGFrVTI3RjlLUkErOWRDb3NnbldNZ0NFZ1dnTVByMk1IdktmLzA3SnR3RFhadHFIRVYxZGpFTUpnS2FmamlMMUxvU0UrSERyVWtMakZzeGUveThQamwzNnExL2NiQWZ4ZmkvM3BoU2JkRzc5WEtqUWswNWdxVlBEbzJCTlcxdnJvZERnTFNTQ1R4bXgvMkdnMVdKR25TenhSb0dGRlJHKy8yUUlRcUpoaG5GL0t1dmtxRHgvRk9RRTlZekxZWkw4YnpWNzE2dEwxcEtNRDNnSnRnRlJEVVNXd0dXZlFTZ1lpaFc4SzVrSXNwV2tnaGxOWU85d0svd0JsVk1DOUpvSXlTZVoyMVBnREhJYVR3UndzUC90Tkg5NWJZSG8vdTRnNG5lQzN3Qzd5Mklrb21tSm9WNWRsQVBuUGdtRXJMalJYTVg1eHFHRGJESGE3aFp3cWF6bk1YVGhFa0pzZG16WXBHb0xsbW5pbU1ldXVydjBvVnN6SVN0aHBOeDlLOHo1U1JjaDhOMEFTQTNBQk1sc3NONjZSQndTakU5dmo0MkwyZkx1aHFIMFlTdVpaTU9KQ3pmVDJHNGxQTG9Ba3lVQmY0eU9wRlMvTDNIVnVnMHhvUmNSTWNaOWh1eEdBMW15d2xGNVpuWktWQURCOVhMNXhaS0RXNEYyQytzYkdsdU9pYXVyd1BGM2JjUXVIVHgwNTl1czRscjQxM2gxVlE5bXljcldCQjNQcnQ4MVdSa1FLR3p3akpUOVBPWDZwNURqdG5SOVJqa2RsaWJueWdxZnl1cWZtQlZqOWtocitkcG51cTluTVdQWlRBa0hEeDgxT1ZNK2MrbDVBWXc0cFlkTmlzbU1GVmlzZmoveC94cU9jUFJkU3Zhd0FBQUFCSlJVNUVya0pnZ2c9PSJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTA5LTA2IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjE2Nzc3MjE2LCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IklELU9uZSBDYXJkIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVMkYxMDAwMjAyNDA5MDYwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblByb2ZpbGVzIjpbImVudGVycHJpc2UiXSwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0wOS0wNiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxNjc3NzIxNn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNC0wOS0yNyJ9LHsiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjBmZjFkMTMwNmFkYzhkZmJhNWZkNTkyMWZhYjBlYzE2MWYxYjEyYmIiXSwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiMGZmMWQxMzA2YWRjOGRmYmE1ZmQ1OTIxZmFiMGVjMTYxZjFiMTJiYiJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiWXViaUtleSBCaW8gU2VyaWVzIn0sImRlc2NyaXB0aW9uIjoiWXViaUtleSBCaW8gU2VyaWVzIC0gRklETyBFZGl0aW9uIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NiwicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoyfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCIsInJlbW90ZV9oYW5kbGUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlEU2pDQ0FqS2dBd0lCQWdJVVRuYmJHSVIyTkh2enFJS0ZBZVF3RzFYQmlzMHdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFRWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPc1hqM2swNEJhbjRUWWR0WktxRC9PUEp4eUR5YVBtQ0JVRlVpYVpJZ1R0ZVpuajNYMjVEaGdwWlpYc0M0RDB5ZEljcmxBNndOVUluT1JML0w5ekJiVEVJTUFWTUdvNmc3VUtBbWIyTUY2QUhibmhZSmQ5ZWlrdXBWTldTaEhOWU5jNEdCZE8xWU42QWZVcXZKaEhiZTNWNFNOTVBtQlJFS0pQVno3VGh3Z21nZ1RlOFdzMkswL3dzcXYyd1NFN3BiQ0JzVVpoSVg1MWJaTTNwcUR3SlBUbVJGRXZ0MC82dEc1ZU84RjNqMTRPWHFmRWhtam4xVnZ4S0RZUU9MWkF4Q3d3Z0MwUDRDZGZXdjN5OFBTUjhJMzU0aE8xWStHek5qdklxWDM4TktMeXd1SVlIRmVyT3hObHhFTUJ2RmhZQnVSdVlBa2tnVWFQcU42VUJoc0lMcnNDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNDb1JIaGl5Tm5iblhSV0lMNlpCWG9CWDlZVE1COEdBMVVkSXdRWU1CYUFGQ0FvVUNFYnBGcGI2RlBMblozRjVQeHNMM29mTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFDUUZhZkpJMS81V2c5Q0VFaW1FMVJQNTRSZ1F3VE5UT09Rc0xBQ1RlK3JJdGxGUXpDOVpEaHJWODI4eVg3anp5K0FBc3AzaXpLN1QxdGgyZGw3bSt0dTBzdzJQYS9vbGMwMm50NlB5SXczNDhnYUh6aEkxKzBLRTQ1cXh2RkRlTDJsTXhiUGZDWXZ5RUVhWXpqaVFFTFU1OTUxcFhHV3lLTWEvNGZMdE8rWktPWGhNdVZlcTRyWERQSTU0VzZKSE9pQWFpS2Rpdys1ZTNjMmt0L2pGSVF0TTZ2TVhnOUxORnpkakVUTnQyMFZYOVFldlJwRlpmdWNNRzl3Q2FRRG9GbFB6cFRNSktoUGV2L2ltSm1aWWhLZnIwbExjZW10cWpJeExBb3FaZE9ZZkhCZzYrdkFjZFBJL2lhdUdwVUF2N1grVUtObUR3aloyQmFINHNMd2hCMm0iLCJNSUlEU0RDQ0FqQ2dBd0lCQWdJVURxRVJ3KzRSbkdTZ2d4Z1Vld0pGRVBEUlozWXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFESTdYbkgrWnZEd01DUVU4TThaZVY1cXNjdWJsdlZZYWFSdDNZYmF4bjlnb2RMeDVzd0gwbFhyZGdqaDVoN0ZwVmdDZ1lZWDdFNGJsMXZielVMZW1yTVdUOE4zV01HVWU4UUFKYkJlaW9WN1cvRStoVFpQLzBTS0pWYTNld0tCbzZVTGVNbmZRWkRyVk9SQWs4d1RMcTJ2NUxsajV2TWo3SnRPb3RLYTlKN25IUzhrTG16WFhTYWowU3dFUGg1T0FaVVROVjR6czFidm9UQVFRV3JMNC9KOVF1S3Q2V0NGRTVuVU5pUlFjRWJWRjhtbHFLMmJ4Mno2b2tWbHR5RFZMQ3hZYnBVVEVMdlkxdXNSM0RUR1BVb0lDbE9tNGNycHduRFJMVkh2alllUEdCQi8vcEV5enhBL2djU2N4andhSDFaVXc5Ym5TYkh5dXJLcWJUYTFLdmpBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlRxdDBLUW5neDdaSHJiVkh3RHVueE9uOWloWVRBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBcVFhQ1dNeFRHcVZWWDdTazdra0ptVXVlVFNZS3VVNitLQkJTZ3dJUm5sdzlLN0hlMUlweFowaGR3cFBOaWtLam1jeUZnRlB6aEltd0hKZ3h4dVQ5MFB3M3ZZT2RjSkpOa3REZzM1UFhPZnpTbjE1Y0ZBeDFSTzBtUFRtSWI4ZFhpRVdPcHpvWHZkd1hETTQxWmFDRFlNVDd3NElRdE15dkU3eFVCWnEyYmp0QW5xL05EVUE3YmU0SDhIM2lwQysvK05LbFVyY1VoK2o0OEs2N1dJMHUxbTZGZVF1ZUJBN24wNmo4MjVycURxc2FMczlUYjdLQUhBdzhQbXJXYU5QRzJraktlcnhQRWZlY2l2bEZhd3AyUldadnhyVnRuM1RWMlNCeHlDSkNrWHNORDA1ZENFclZIU0pJcytCZHRUVk5ZOUF3dHlQbW55YjB2NG1TVHp2V2R3PT0iLCJNSUlEU0RDQ0FqQ2dBd0lCQWdJVVVjbU1YelJJRk9nR1RLMFRiM2dFdVpZWmtCSXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFEbTU1NWJXWTlXVyt0T1kwcklXSGxkaCthTmFub0NaQ0ZoN0drM1laclFtUFV3MGhrU0c2cVlIUXRQK2ZaeVMzM1ZFcnZnK0JRcW5tdW1nTmhmeEZya3dFWkVMZWlkQmNDOEM0QWc0bnFxaVBXcHpzdkkxN05jeFlsSW5MTkxGY1pZLytnT2lONlpPVGloTzUvdkJaTWJqOXJpYUFjcWxpWW1OR0pQZ1RjTUdhRUF5TXpFTU55Mm5tNkVwK3BqUDVhRjZnaTIxdC9VUUZzdUoxajJSai95bk0vU2RSdCtlY2FsNU9Zb3R4SGtGYkw5dnZ2MkEyT3Y1SVRaQ2x3NGJPUzlucHlwUWltT1o1UUFZeXRtWWFRcFdsL3BNWXo2elNqOFJxa1ZETkVKR3FOZlRLQTJpdkxZd1g2bFN0dE1QYXBnMEo4NGw5WDB2b1ZOL0ZwUzRWQ1ZBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlFnS0ZBaEc2UmFXK2hUeTUyZHhlVDhiQzk2SHpBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBWU16Z0xySkxJcjBPb3ZRbkFaclJJR3VhYmlIU1VLU21iTFJXcFJrV2VBdHNDaERFSHBYY0ovYmdETktZV29IcVE4eFJVakI0Q3llcFlldmMzWWxyRzhvN3pIeHBmVmNhb0w1U2V1Smt6SHhLbjRiVGFTcDkrTXZ3YW1ucDY0a1pNaU5iRkxrbmZQOWtZS29SSGtNV2hlUkoxVXNQMXo0U2Nta0NlSUxmc01zNnZxb3ZxaldDbEZzSnBCY3NsdVlIV0Y3YkJKMW40UndnK0FURW9wWTRJZ0d2Nlp2d2MrQTlyK0FUMmhxcG9Ta1lvQWwrQU5Zd2dzbE9mOXNKZTBWK1RBOVlZL1VsYUJtUFBUZDAvL3I5d3ZjZVBXWmtQaktvQUMvelVOaGZEYmg0TFY4R0hzM2x5WDJYb21ML0xOYzhKWXp5SWFERWhHUXZlb1BoaC90cjFnPT0iLCJNSUlEUnpDQ0FqR2dBd0lCQWdJVWV4OW5UOXZ3Wk5YUzQ4M0xkaVlHZncyU2pTb3dDd1lKS29aSWh2Y05BUUVMTUM0eExEQXFCZ05WQkFNTUkxbDFZbWxqYnlCQmRIUmxjM1JoZEdsdmJpQkpiblJsY20xbFpHbGhkR1VnUWlBeE1DQVhEVEkxTURnd01UQXdNREF3TUZvWUR6azVPVGt4TWpNeE1qTTFPVFU1V2pBbk1TVXdJd1lEVlFRRERCeFpkV0pwWTI4Z1JrbEVUeUJCZEhSbGMzUmhkR2x2YmlCQ01pQXhNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXUxTWV2bnk5ZHlPOVpVQzM5U29NaExjUi9EWHJ0Ri9jaU0xMnRjaXkyRVhBWjZNa3JpdlZ0Q2ZFVk05WDZJU1RFbkJQNnVTWVlvdjZwcHY2TzZKaDJOSG1ZbTR3K0puUzRWbkNQVTdtSEFNZlZJMk1HVFRNVk9ldzB4VXNHN3NJU0lrSURVQm11azhZSzljNXppYzkrdkZRR0xJa3NkWE81aVZGSWdORzUzY0dYRDRaTFpvQVBpdTBQRW96eEFxWUlhSTRneEtoT0EzUzgvVzhtSVdzdTZvZnlqNEd2a0ZHNlo3a3lGMzEwN1A3bXdGSExySTNFTmFQV01PRmNUYUdhMGR3Ky92VlJ3alJjRVpCVnN1dVQvODdja1NzMGE1cGt0M3ZaQmxhWWVUOHB6U3JlVjdtb3djSU05MEwyaWFBVGxQMG54bWFFNm5PeVRib2pGVmwyd0lEQVFBQm8yWXdaREFkQmdOVkhRNEVGZ1FVU1hFaDNzYTNidER1cm00TU0vQzdTMWxSdXVZd0h3WURWUjBqQkJnd0ZvQVU2cmRDa0o0TWUyUjYyMVI4QTdwOFRwL1lvV0V3RWdZRFZSMFRBUUgvQkFnd0JnRUIvd0lCQURBT0JnTlZIUThCQWY4RUJBTUNBWVl3Q3dZSktvWklodmNOQVFFTEE0SUJBUUI1R2MzaGFmdHA3aEtzRVpzbytpL1o1blJ1cWRtekcyV0NsVW9SVXFiYVB5Z2xuSkRqS1Iva2ZnT2w2aWJiRi96dGhtM0ttWFE3SGNESVAyeE1kRzdVMkwyaW1iSlFIcVBmL2gySHFvamI0clpndWUrNlc0a3RTUjVlbFI5TDFyWXFFL1NHWU00aUVLb1ZRU3Y3UlQxcnhJZVdpS3N3L1Z4eGkvUU9uc3gzRjd4ODBDQ1lnQjRFM3lReDhWVFc0NDBoVEV3VEExZU1IT2l4MzJ0UHR5eUhJYThQVlZJZlZwSFFKQmFNVnZ2NTA4VUVqd2tiVTJybmpmem9TVE5TOUE1alVROG1CU3ZlOTVyakIwZG85OEVVK0R4ZEJxWDIrSDZpNXdsSUNGZ3poZHpjc25lOWhHS1Q2bHpUWDRjSWRKc3JZMit4bGVLMEZGUXk2bEdFVkxFZSIsIk1JSURQakNDQWlhZ0F3SUJBZ0lVWHplaUVESkVPVHQxNEY1bjBvNlpmL2JCd2lVd0RRWUpLb1pJaHZjTkFRRU5CUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTVo2L1R4TThySVQrRWFvUHZHODFvbnRNT28vMm1RMlJCd0pIUzBRWmN4VmFOWHZsMTJMVWhCWjVMbWlCU2NJWmQxUm54MW9kNTg1aCsvZGhLN2hFbTdKQUFMa0tLdHMxZk81M0tHTkxadWp6NWgzd0duY3I0aHlLRjBHNzRiL1UzSzloRTVtR05ENnpxWWNoQ1JBSGZyWU1ZUkRGNFlMMFg0RDVuR2R4dnBwQXk2bmtFbXRXbU1ud08zaTBUQXVjc3JiRTQ4NUh2R000cjBWcGdWZEpwdmdRamlUSkNUSXErRDM1aHd0VDhRREl2K25HdnBjeWk1d2NJZkNrenlDaW1KdWtoWXk2S29xTk1LUUVkcE5pU092V3lETVRNdDFid0N2RXpwdzkxdSttc1V0NHJqMGVmbk85czBaT3dkd01SRG5INHhnVWw1Wkx3cnJQa2ZDMS8wQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQjhHQTFVZEl3UVlNQmFBRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRTXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJEUVVBQTRJQkFRQzNJVy9zZ0I5cFo4YXBKTmp4dUdvWCtGa0lMa3Mwd01OcmRYTC9jb1V2c3JoenN2bDZtZVBNcmJHSkJ5SjFYbnF1QjVzZ2NSRU5GeGRRRm1hM21pbzhVcGYxb3dNMVpyZVhySjBtQURHMkJwbHFiSm54aXlZYStSMTFyZUlGVFdlSWhNTmNaS3NEWnJGQXlQdUZqQ1dTUXZKbU5XZTltRlJZRmdOaFhKS2tYSWI1SDFYZ0VEbHdpZWRZUk03Vm9sQk5sbGQ2cFJGS2xYOHVzdDZPVE1PZUFEbDJ4TkYwbTFMVGhTZGV1WHZEeUMxZzkrSUxmejNTNk9JWWdjM2lyb1JjRkQzNTRnN3JLZnU2N3FGQXc5Z0M0eWkweEJUUHJZOTVyaDQvSHFhVVlDQS9MOGxkUms2SDdYazM1RCtXVnBtcTJTaC94VDVIaUZ1aGY0d0piMGJLIiwiTUlJRFNqQ0NBaktnQXdJQkFnSVVSMzhtcTI2U2Yyc3pWVjJCZEc2V0VON2t1V1V3RFFZSktvWklodmNOQVFFTEJRQXdMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3SUJjTk1qUXhNakF4TURBd01EQXdXaGdQT1RrNU9URXlNekV5TXpVNU5UbGFNQ1l4SkRBaUJnTlZCQU1NRzFsMVltbGpieUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRUlnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTlkwV2I5b1BvUm9Lb1F5V1BhSnB6MTF2cldUZzZ6VHRtTmoyVm9LUm55dktHUnFwemI4M3c1bDZZQTk2VVlrWUJEUVAwaWxPMkRQZTZ3V3FWUjV6RGZSemRjSDhiaCtMN2RHR3ZhZTZoUlRaaGtGa0NwWERzNEhjY2tuckRmOEZDbEo3SGUzOUpmNDIvRzFRbTJ6ejlXV21yUFh0Z2lLL3gwNUdqc1FmR3VERzF6ZjVRVFVVaWU4bHd5bUszVGZkT3ZOZWVKQUFQZTJwbjdJdGZSYityVnJOV2lEemxSbjJ2Tm5aMndQbzR3SC9XSjZkaFhaRytyTVdUK2E2Qm9jZzFVZkl3NmtkdW5HNGJUcFp6c3ZhY0ZZeVIwbXBmK0RlT25wU1dBbXl3SldIdlRsZjJZWHhGeWVYY1RBQ2RRbGNNTkdKMlZoWlE0OHh0UDUvUkJQLzhrQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZDaHk0Mm9raXFjVFMxaXFhL0hSV2prQm40SC9NQjhHQTFVZEl3UVlNQmFBRk9xM1FwQ2VESHRrZXR0VWZBTzZmRTZmMktGaE1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQW4rUkhJUGJ0TUVETmRUMWc4SC9SaXRBa1VkTGdBdDF0V0dXbmxqOWtuYnY0LzRHbFg3QzlwNDVlZlBPOS9hWkw2T1YxWFJLQmk2S210Qlc1SzdudVlFbk14LzVCcUJTYkxUN3JoZHVDNDlUQmVNYjlQSGRYc1RsU1ZOWWVmcjFkR2lkcjRqMHhWQlFMYjFya25EQWJkV0R6S2Z2bmF5S084RnJ3ZTdIeDg0M01HL3JKK2MwWHJ1VXZiZlZUQ0hMaUlXaE03b05EaEw4eG9iNnhVbzlLTEtjU0wrSXRZc08zLzlXYjhROUdqc3FMNEZYc0RjRzFTYVloN0twZnVNbU9peHF6SlpPMm5JaWNQWVJnMUkyU3VpVWZZTzcwdG1kSGNibCtrU1FtU1l0N3JxNHZpSUxnMkd4M2o5cklUdVdUamJhVWFTU1F4Z09tTVNIdXl6TUFDIl0sImljb24iOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJpY29uRGFyayI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsInByb3ZpZGVyTG9nb0xpZ2h0IjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwicHJvdmlkZXJMb2dvRGFyayI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTAyLTAxIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZdWJpS2V5IEJpbyBTZXJpZXMiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlUyRjEwMDAyMDI1MDIwMTAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTAyLTAxIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3Nn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wMi0wNiJ9LHsiYWFndWlkIjoiMTNhYzQ3Y2YtMWQ3OC00ZmQ1LTkwNjAtYWVkYWFiYWNmODI2IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiIxM2FjNDdjZi0xZDc4LTRmZDUtOTA2MC1hZWRhYWJhY2Y4MjYiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiSElEIENyZXNjZW5kbyBLZXkgVjMgLSBFbnRlcnByaXNlIEVkaXRpb24ifSwiZGVzY3JpcHRpb24iOiJISUQgQ3Jlc2NlbmRvIEtleSBWMyAtIEVudGVycHJpc2UgRWRpdGlvbiIsImFsdGVybmF0aXZlRGVzY3JpcHRpb25zIjp7ImVuLVVTIjoiSElEIENyZXNjZW5kbyBLZXkgVjMgLSBFbnRlcnByaXNlIEVkaXRpb24ifSwiYXV0aGVudGljYXRvclZlcnNpb24iOjI2MjY1NiwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9LHsibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlEQ2pDQ0FyQ2dBd0lCQWdJVUFqZGR4aWNiMm52eFlpTTZzL1J5RFFVZGRuQXdDZ1lJS29aSXpqMEVBd0l3YXpFTE1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBb01Da2hKUkNCSGJHOWlZV3d4SWpBZ0JnTlZCQXNNR1VGMWRHaGxiblJwWTJGMGIzSWdRWFIwWlhOMFlYUnBiMjR4SXpBaEJnTlZCQU1NR2taSlJFOGdRWFIwWlhOMFlYUnBiMjRnVW05dmRDQkRRU0F6TUNBWERUSTFNVEF5T0RJeU5EVTFNVm9ZRHpJd05UQXhNREk0TWpJME5UVXhXakJ6TVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNnd0tTRWxFSUVkc2IySmhiREVpTUNBR0ExVUVDd3daUVhWMGFHVnVkR2xqWVhSdmNpQkJkSFJsYzNSaGRHbHZiakVyTUNrR0ExVUVBd3dpUmtsRVR5QkJkSFJsYzNSaGRHbHZiaUJKUTBFZ01USWdSVzUwWlhKd2NtbHpaVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCSlU3ZkVmSXkvUGRWM3RYanVBTnNTbHpLNWJrcTcwWnNJdGJhM2JsQnZzVVg1TXFKT0FpVlcyZlROMUU1dFNOWHZVTWh3YktOdGFON3V5anE0ekNDbjJqZ2dFbU1JSUJJakFPQmdOVkhROEJBZjhFQkFNQ0FZWXdFZ1lEVlIwVEFRSC9CQWd3QmdFQi93SUJBREFmQmdOVkhTTUVHREFXZ0JSdEluVW9xdHg5bmx5MjVaMnpLdnNIbkZQTVRqQWRCZ05WSFE0RUZnUVVIUlJnVmdFa0tRUThjeTQzMG83RGdHTU1hRGN3UkFZRFZSMGZCRDB3T3pBNW9EZWdOWVl6YUhSMGNEb3ZMMk55YkM1b2VXUnlZVzUwYVdRdVkyOXRMMFpKUkU5QmRIUmxjM1JoZEdsdmJsSnZiM1JEUVRNdVkzSnNNSFlHQ0NzR0FRVUZCd0VCQkdvd2FEQS9CZ2dyQmdFRkJRY3dBb1l6YUhSMGNEb3ZMMk55YkM1b2VXUnlZVzUwYVdRdVkyOXRMMFpKUkU5QmRIUmxjM1JoZEdsdmJsSnZiM1JEUVRNdWNEZGpNQ1VHQ0NzR0FRVUZCekFCaGhsb2RIUndPaTh2YjJOemNDNW9lV1J5WVc1MGFXUXVZMjl0TUFvR0NDcUdTTTQ5QkFNQ0EwZ0FNRVVDSVFDc2ZsY1pBRkRqbkFtamJOMUY3SFJSM0NiM20xU3lJVHlpK0FIdUtnTUJEZ0lnVllyZHM1VFlzYmxtYWhpYzcydU5uWkM0a0o1bittNlA0WFcvNytwWkZCbz0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBVk1BQUFDc0NBWUFBQURHK0U4TUFBQUFJR05JVWswQUFIb2xBQUNBZ3dBQStmOEFBSURwQUFCMU1BQUE2bUFBQURxWUFBQVhiNUpmeFVZQUFBQUpjRWhaY3dBQUQyQUFBQTlnQVhwNFJZMEFBQXlnU1VSQlZIaGU3WjEvYkpUbEhjQnZqaGpOY0M0TytkWGVYVnRVVE16aVA3b1lYWlk1MUlrS2QxZk5uRkhqNW9oQm1BN2oyTVJzWm9sbXhoaE5Kb3J0MjRLZ3NpRnNpbTdUQWRNWVJGUUVGVGNWeHcvcndBRUZSQ2hRK3V1ZVBjLzFxUVAzVE5zKzMzdmV1K3ZuazN6UzQyZ2ZudmU5dDU4Kzc3M1hJd0VBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFVRXBrRzYvWFBwbklSUjhnSWg1dDQxcjljWWF0QmZ3UDlRM242eDIwVFp0UDFEY3BSTVRQTmRlVTE0dXVWdDJNcTIxRkJreHRNam1yTHBWcTBSODMxMVpYMzJydkxtTUtQMjMwanFtUDNEc05FZkh6ekVXN0V4Zk9HV21MOG9Xa2s4a2YxcVhTUFhYVnFhWEpVYVBPcUttcU9yTXVtZnByYlRMVm5VcWxMcmVmVmtaTW1QMTEvWk9sdzdsekVCRUhvam1yelVaVGJWMytMM1ZqeDA0d0lSMDlldlRKNDFLcEtkb2JqQ05Iamh3MWR1elk1TGgwamRLcjFMUHRwNWNCSnFTc1JoRlIwdDZnenJTVmNYR01EcW1xU1NZeit2WXdFODZhcXRTMXRkWHA2ODN0dWpGalVqVmprNVAxS3JXOTk5UExnVnpVNWR3WmlJZyttcUJlT3FmT2x1WW8wdW4wY1RxbVhmYVB3OHdLMWQ1TzZGUDh0MnJUNlZ2MHpTK2JzUGJlVytya29vK2NPd0VSVWNKY2RNRFc1aWlxcTZ1UEg1ZXE2VnQxRmxhbU9xSTc2MUkxMjA5SjEvUkY5a3ZsRWRQNmhtODdOeDRSVWRKc3d6MjJPcDlpWXFwWG81MzJqMlpsbWovcHBKTytxajkycDhlTU9kM2VmMHg1eERUWHRNKzU0WWlJa3VhaURsdWRJK2s5aFU4bmp0TzNDekUxZDQ0WU1XS012bjNRM0I0K2V2akorbmJmS3JXRTRYV2tpQmpLeTV2UHN1WDVsTHBVYW1adE1yM2YzSzZ0VHI1VHVGTlRsMHcrV3BOSzNhei9ycU8yT2ozTjNsMmlUSTZtT2pjWUViRVk1cHFldGZVNWlycnExRE8xeWRTQmNWV3BHK3hkaWJxcTVBeXpPdFgzTDdSM2xURDEwWExuQmlNaUZzTmNVK0hVM1VWeVZQSU1IZFdWcDlYV3FWTnJhdlA2OXZLcUVWV24ycjh1Y2Vxai9jNE5Sa1FzaHJtb2pGNHZPaENJS1NLRzFIMFJxZ0lncG9nWVVtS0tpQ2dnTVVWRUZKQ1lJaUlLU0V3UkVRVWtwb2lJQWhKVFJFUUJpU2tpb29ERUZCRlJRR0tLaUNnZ01VVkVGSkNZSWlJS1NFd1JFUVVrcG9pSUFoSlRRUzk3V0NVdWVFQWxMcHdkVnZOdjVpTDNuQWJyOXg1MC8xdkY5aUt0YXo0RE1hN0h3RHorcnZuMHg2eCsvT0tZZHpFMDIzR1JQbjdNTVhTcDNpZVRHOTNiWEdrU1V6bHZudnV5aW92anJwem5uTk9nMUFmL3VzMjc3TWhoMmZuSm9kNXZRTmU4K3FQK0pvNkxhZEVxOTV6NjRkZXVYV0JIcVF3NnUzdFVXM3VuMnJ4am4xcTlZYWRhc25xenVxbjVaWFh5TlF0VTR1S0hWQ0pUZ1lFbHBuS2FiNmE0cUpTWWZyVG5RTm5HOUlhSFgzTFBxUitlcUNNelZOaXovN0JhOGRaV2RlVjl6NnZFQkwyS3JaU3dFbE01aWFrL3hIUm8wZG5WbzU1ZDk2RWFmK01pdjZkSlNrRmlLaWN4OVllWURsM2VidG1qenB1MTFPL3hqMU5pS2ljeDlZZVl3aHRiZHFsVHB1cVZxcmtvNTloWEpTc3hsWk9ZK2tOTXd6UHJzVFhxenNWdnFMdVd2S0V5ZHk5VHVYdVdxMTh1ZkwxdzM3MUwxNnNWNjdjVkxpYUZwQ2VmVjQrKytFK1Z1R0MyYzMrVnBNUlVUbUxxRHpFTlQyTENiL1Vxc0ZFbE1nMy9uWk81S0ZTNFR6dEpQeDZYemxGVlV4YXFLWE5XcW8vYkR0dXZMRDY3MjlyVk4zNjZ4SVRxcVAxVmtoSlRPWW1wUDhRMFBJWFhoanJtNUZSSDdaakpEZXFPMzYrMVgxMTh1bnQ2MUMyUHJOYkg1Ukd4TDBXSnFaekUxQjlpR3A0QnhiUlBIYlpKZHkrekk0UmgvZ3Z2RjFiSXp2bVVnc1JVVG1McUR6RU56NkJpYXN3MHFoL3IwLzZRUFBucUIzN0hSekVscG5JU1UzK0lhWGdHSFZOak5sSi8vM0NQSFNrTVQ3L1dVcHBCSmFaeUVsTi9pR2w0dkdLcUhmK1R4WGFrY1B6eEZiMUNMYlhuVUltcG5NVFVIMklhSHQrWW1xaTl0MjJ2SFMwY1AxdndxbnMrY1VsTTVTU20vaERUOEhqSE5CZXA4MjUvMm80V2pudytyOFpQWCt5ZVV4d1NVem1KcVQvRU5EemVNZFYrNWFwSDdHaGgyWGV3UTJUK0loSlRPWW1wUDhRMFBDSXhtbVJPOVQreEk0YmxtVFV0aGRXeGMxNGhKYVp5RWxOL2lHbDRSR0thamRRdDgxNnhJNFpuK0ZXQ3gvOWdKYVp5RWxOL2lHbDRwRTZUejV5eHhJNFludmMvMnR2NzY2K09lUVdUbU1wSlRQMGhwdUdSaXVubzZ4KzNJOGJEaU9zZWRjNHJtTVJVVG1McUR6RU5qMVJNaDEzUmJFZU1CM1BNeHZyY0tUR1ZrNWo2UTB6REl4VlRjeEdxcTd2YmpocWVydTRldVcwWmpNUlVUbUxxRHpFTmoxaUE5SEd6ZGxPckhUVWVicDBmNHd2NWlhbWN4TlFmWWhvZXNaaG1HdFhDbFJ2dHFQR3diYmMrZnVKNmgzNWlLaWN4OVllWWhrY3NwanBpdHoyMnhvNGFEKzBkWFNveE1hYTM2U09tY2hKVGY0aHBlQ1JqR3VkclRmdUk3YW8rTVpVenpwaCs1MWQvVXVmT2VsckViLzc4S2JVaGhqZXVNQkRUOElqRk5LYmYwZjhzdHoyK3hqMi9Za3RNNVl3enBwVUNNUTJQV0V5MTU5eTIxSTRhSDZ2ZTNlNmNXOUVscG5JU1UzK0lhWGdxTGFaYjQ3b0lSVXpsSktiK0VOUHdWRnBNdCs4OTJQdS9xanJtVjFTSnFaekUxQjlpR3A1S2krbXVmZTBxbG5maEo2WnlFbE4vaUdsNEtpMm1oZmM0dmN6akdCcXN4RlJPWXVvUE1RMVB4WjNtZjh4cHZpekV0Q3docHVHcHRKanUySHVJbUlwQ1RNc1NZaHFlU292cEJ6djNtN0E1NTFkVWlhbWNjY2JVdk1IRTYwS3UyYmhUSFdqdnNpT0hoWmlHcDlKaXVtVDFadWZjaWk0eGxUUE9tQjVyZmhLYko5MGx2UGdoOWZyR2VONzloNWlHUnl5bUpmSWJVUFgzTEhmUHI5Z1NVem5qakNtL20yOGxwZ05HTEtZbDhydjVzWnppRzRtcG5NVFVIMklhSHNtWVRvLzV1c0grUTUyOVoxZXUrUlZiWWlvbk1mV0htSVpITEthWlJyWG9wVTEyMUhoWTM3S2JsYWs0eEhUd0V0TkJRVXdiMVlyMTIreW84WEQyektYdXVZV1FtTXBKVFAwaHB1RVJpK25rQnRYNnlTRTdhbmphMnZVcC9pVXh2VEcwa1pqS1NVejlJYWJoa1h6T05FNmVXTFhKUGE5UUVsTTVpYWsveERROFVqRTk4WnI1ZHNUdzlQVGs0M25idlNNbHBuSVNVMytJYVhpa1lucnE5Q2ZzaU9INXk3cC9tWmc1NXhWTVlpb25NZldIbUlaSEpLWTZaSmZjK1p3ZE1TeUhPN3YxTVJQamM2VjlFbE01aWFrL3hEUThJakhOTktvbHE3ZllFY015clhHVmUwNmhKYVp5RWxOL2lHbDRSR0lhMDhXblRkdjN4ZmNpL2M5S1RPVWtwdjRRMC9CSXhIVDh0RVYydEhDMGQralRlMzJzdXVZVGk4UlVUbUxxRHpFTmozZE05U24rM09jMzJOSENZSzdlbnpYelNmZDg0cEtZeWtsTS9TR200ZkdONmZBZnpMTWpoV1BHdkplZGM0bFZZaW9uTWZXSG1JYkhLNmFURzlUY3Y0VmRsZDYrY0kwSmwzcytjVXBNNVNTbS9oRFQ4QXc2cHRsSW5YL0huKzBvWWJpcGVWVTgveVZKZnlTbWNoSlRmNGhwZUFZVjAweURPdmYyWit3SXhhZTdKNjkrTlB2RjBseVI5a2xNNVNTbS9oRFQ4UFE3cGlaaytyVGVIR3YzUHJYZWZuWHhPZGplcWNaTlhlU2VVeWxKVE9Va3B2NFEwL0Frdm5WLzc3c3RmZGFKRDZsaFZ6U3JFNitlcjA2L2FiSEszTDFjL1NId0MvT1h2Ym0xTUEvWFBpczVpYW1jeE5RZllncUdnNGM3MVZYM1AxOVlDYnYyVjBsS1RPVWtwdjRRMDZGTlIxZTNlbmpadXlyeDNRZWMrNm1rSmFaeUVsTi9pT25RcEwyelN6V3QyTkI3U2wvS0Y1aytUMklxSnpIMWg1Z09IZkw1dkhxN1pZK2FNbWVsU2x5Z1Y2TGxHdEUraWFtY3hOUWZZbHJaZk54MldLMTZiNGU2MGJ6VFU3WlJKU1o1UE5hbEpqR1ZjOUp2bHFubGIyNHRYSUVNNmNwMy9xMk8vZjVjNTV3R1phWlJQZmpzUDV6L1ZySDkzY3FOK2h2TTQ2TER4RG5xcFhlM084Y3VwaXZlMnFZdXVlczU5NXo2NFFsWHoxZTc5N2VybHRhMml2RE5MYnZWMmsydGhYM3o2eWZXcW9sM1BxZE9NRC93TDlhbjhmcUh0V3NmbEwzRUZMRUVOS2U0NXVWSVpsVmU3cHJ0TUZmaHkrbEt2SVRFRkJGUlFHS0tpQ2dnTVVWRUZKQ1lJaUlLU0V3UkVRVWtwb2lJQWhKVFJFUUJpU2tpb29ERUZCRlJRR0tLaUNnZ01VVkVGSkNZSWlJS1NFd1JFUVVrcG9pSUFoSlRSRVFCS3phbXVhalZ1Y0dJaU1YeG9LMVBoWkZ0YUhKc0xDSmljY3hGdTJ4OUtvd3Jtc2M3TnhnUnNSaG1vbC9ZK2xRZzVqa00xMFlqSWtxYWkvSzJPaFZLcnVrRjU0WWpJa3FhaTNiWTZsUXd1YWpidWZHSWlCTG10T2ZjZDd3dFRnV1RpNlk3ZHdBaW9vUzVhSm10elJDZ1Buck51Uk1RRVgzTVJxMjJNa09JYk9ORzU4NUFSQnlNdWFZS2ZTbFVmOGhGaS9RT3lPdVZxbnZuSUNKK2tlYktmWDNUV2x1VklVdzJPazJ2VWx1SktpSU8yRnkwTjVGdHVzN1dCQXFZcU5aSDYvVEhmVHFzblluNlpyMnpFQkdQMEt4Q3MxR2Jic1NXUktaaGdxMEhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQnBrVWo4QjRBb20rTWJUKzNKQUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzEiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6IjEzYWM0N2NmMWQ3ODRmZDU5MDYwYWVkYWFiYWNmODI2Iiwib3B0aW9ucyI6eyJyayI6dHJ1ZSwiY2xpZW50UGluIjp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwiZXAiOnRydWUsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6dHJ1ZSwiYWx3YXlzVXYiOmZhbHNlfSwibWF4TXNnU2l6ZSI6NTEwLCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjEsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6OTQsInRyYW5zcG9ydHMiOlsibmZjIiwidXNiIl0sImZvcmNlUElOQ2hhbmdlIjpmYWxzZSwibWluUElOTGVuZ3RoIjo0LCJmaXJtd2FyZVZlcnNpb24iOjI2MjY1NiwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjMwfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMTAtMTAiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MjYyNjU2LCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IkhJRCBDcmVzY2VuZG8gS2V5IFYzIC0gRW50ZXJwcmlzZSBFZGl0aW9uIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNTEwMTAwMDIiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblByb2ZpbGVzIjpbImVudGVycHJpc2UiXSwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0xMC0xMCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyNjI2NTZ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMTItMTEifSx7ImFhZ3VpZCI6ImU3N2UzYzY0LTA1ZTMtNDI4Yi04ODI0LTBjYmViMDRiODI5ZCIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiZTc3ZTNjNjQtMDVlMy00MjhiLTg4MjQtMGNiZWIwNGI4MjlkIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlNlY3VyaXR5IEtleSBORkMgYnkgWXViaWNvIn0sImRlc2NyaXB0aW9uIjoiU2VjdXJpdHkgS2V5IE5GQyBieSBZdWJpY28iLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDczLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX0seyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3IiwiZWQyNTUxOV9lZGRzYV9zaGE1MTJfcmF3Iiwic2VjcDM4NHIxX2VjZHNhX3NoYTM4NF9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlESGpDQ0FnYWdBd0lCQWdJRUcwQlQ5ekFOQmdrcWhraUc5dzBCQVFzRkFEQXVNU3d3S2dZRFZRUURFeU5aZFdKcFkyOGdWVEpHSUZKdmIzUWdRMEVnVTJWeWFXRnNJRFExTnpJd01EWXpNVEFnRncweE5EQTRNREV3TURBd01EQmFHQTh5TURVd01Ea3dOREF3TURBd01Gb3dMakVzTUNvR0ExVUVBeE1qV1hWaWFXTnZJRlV5UmlCU2IyOTBJRU5CSUZObGNtbGhiQ0EwTlRjeU1EQTJNekV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRQy9qd1l1aEJWbHFhaVlXRU1zcldGaXNnSitQdE05MWVTcnBJNFRLN1U1M213Q0lhd1NESHk4dlVtazVOMktBajlhYnZUOU5QNVNNUzFoUWkzdXN4b1lHb25YUWdmTzZaWHlVQTlhK0tBa3FkRm5Cbmx5dWdTZUNPZXA4RWRaRmZzYVJGdE1qa3d6NUdjejJQeTR2SVl2Q2RNSFB0d2F6MGJWdXpuZXVlSUV6NlRuUWpFNjNSZHQyemJ3bmVid1RHNVp5YmVXU3dienkrQkozNFpIY1VoUEFZODl5SlFYdUUwSXpNWkZjRUJiUE5SYldFQ1JLZ2pxLy9xVDlubURPRlZsU1JDdDJ3aXFQU3psdXduK3Yrc3VRRUJzVWpUR01FZDI1dEtYWFRrTlcyMXdJV2J4ZVN5VW9UWHdMdkdTNnhsd1FTZ05wazJxWFl3ZjhpWGc3VldaQWdNQkFBR2pRakJBTUIwR0ExVWREZ1FXQkJRZ0l2ejBiTkdKaGpncFRva3N5S3BQOXh2OW9EQVBCZ05WSFJNRUNEQUdBUUgvQWdFQU1BNEdBMVVkRHdFQi93UUVBd0lCQmpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQWp2anVPTURTYStKWEZDTHlCS3N5Y1h0QlZac0o0VWUzTGJhRXNQWTRNWU4vaElRNVpNNXA3RWpmY25NRzRDdFlrTnNmTkhjMEFoQkxkcTQ1cm5UODdxLzZPM3ZVRXROTWFmYmhVNmt0aFg3WSs5WEZOOU5wbVl4citla1ZZNXhPeGk4aDlKRElnb01QNFZCMXVTMGF1bkwxSUdxck5vb0w5bW1Gbkwya0xWVmVlNi9WUjZDNStLU1RDTUNXcHBNdUpJWklJMnY5bzRka29aOFk3UVJqUWxMZll6ZDNxR3RLYnc3eGFGMVVzRy81eFViL0J0d2IyWDJnNElucGlCL3l0LzNDcFFYcGlXWC9LNG1CdlVLaUduMDVac3FlWTFneDRnMHhMQnFjVTlwc215UHpLK1ZzZ3cyamVSUTVKbEtEeXFFMGhlYmZDMXR2RnUwQ0NySkZjdz09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWZDQVlBQUFDR1ZzK01BQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBSFlZQUFCMkdBVjJpRTRFQUFBYk5TVVJCVkZoSHBWZDdUTlYxRkQvM2Q1OXdlUVNJZ1M5QVFBWGNGTEFRWmk5ZnBlVnoxdFkvV1RacjVXeHBjN1c1a25MYTVqSTNaODVzclMybk0yc2p0V3daUzdJVUg0SDR4Q25FUXg0REFaRjc0Vjd1czg4NXY5L2xJbkJ2VkovQjRQdjludS81bnUvNW52TTU1NmZ6QS9RdjBIYi9JclgzVkZLUG80NWNubTRpblVJV1l3TEZSbVpRVXV3akZHL04xaVJIaDFFWjBOUlZSdWRxdDFCZCsyblNLeVMvT2h5czArbGszZS8za1E5cXZENFpVdGE0VlZTVXVZMGVpcHlpVGhBZm9jb09SVmdEdXV3M3FLUmlBZDNyYmNFdGpUallJb2Y2V2FIc0NtelZQV0NNeCtjZ2g4dExxV01LYU1Xc1VqTHFvMlJ0SklRMG9Pem1lcnBRdTRlc1pnc09Oa0d4SDdkMGtkdlRUMTdzNE9NVTdWSThaaGpnR2FNK0FxOWlFTnU4UGlmMXVkejA3TXd2S1dmOEdsVm9DRVkwNFBDNVdkVGFYWUZiUjh2TnZMNSszS2dmYjV4Tk15YTlSYW1KaXluYU1sR1RWdEZscjZiYTl1K3BxbkVYNHVNdVJSZ2pTWUVock43dXRGRmU2bHFhbDdOZmt3NWltQUdIeW5QcGJrOFZtWTB4c3RucHRsRkNWQ1l0elR1Qk44M1FwTUxqVHRldmRQelNVbko3ZThta2p4WjM5ZlhiS0RmbGRacWJ2VStUVWdHbkJWRjZmUTJpUEhnNFcxNlVXVXd2emJrMTZzTVpFK1BuMHB2ejdKU2V1QXllczhsY3BDbWFLdW8vcCtxV3IyVWN3SUFIV3J2UDBZRXpoWEF0TEFic3NIaHA3aUdhbXZ5aWpQOHJ5cXJYVVdYOVhvb3d4eUF1Zk5CcnA0M1BPQkZYWmxrZjhNRFJpcWNweW93QXdwdXoyeCtmV3Z6L0R0ZGU5c21zenlndGNSNkMxd2JkekJsNk9scTVXTllZNG9HYXRoSk1ya1RFeDBqQVJTSEFWcys1cllrUU5YYitRZ2ZQTHNRNmdYeUluc3JlUWZtcG03UlZGWWZMODZuMWZpVU9rWXZTaGtVUHh2YnVrem95NksxaWhNMWhvM1h6VzZFdlNmWEErZHBpV0dhV2QrZG9Yekx6bUd3S1lGTENBc1JBbFBCQWhNbENGWFU3dEJVVlByOEhnVmNKSFdxK0YwMHBscitETVRkclA0enZ4WTExa05NaHhUK1NlVEdnK2Q0VjVMUUppdHlVR0pOQjhWRlpzamdZQlpNL0lJL1hDVGtqMHF5RE9wRjJBVlExN0NJalVwL0RuVDFVa0w1RjVnZGorc1Mxd2cxZ0UzZ2lnbTYwZkNYelNuUFhieUFQYklYditJRHBFMTZUaGFISVM5c2t5aGxtTUU1RjNjZnFBS2hxMkMwRTVQSDFnWWFYYUxQRGtaRzBIREpPbktXSHA1MUkwejVTT3V4OGUxV0F1WnpkSFFyVGtwOFRtalhvSStsYTB3R1pzenVicWJPM2lmUTZBL1c3dlZTWXNWM21SMEpLd2tLYzRXSGlCa21SOEkzQ0NnSTg3b09MNHF6VDVQK1JVSkJlakVPZ0FQSzhoWVB6YXRNK2VJVHAySU85eVRRbWVyb21QUnh4MXF4QWNzaWxlL3ViU2VFYmNXUUdZRUNnaGNMWTJIeUtqb2dqSDI1aE1wanBVdjFPdWdsaTRlaDJlUncwTzMyYkpqa3l1Q2dOemcwdnpsWU1TaVNzMHVvbzRNRzdoTU9qQ0VhWDF5RkUwblN2akJ6dVRuRXBLODZaOElvcUZBSXVidzhrZzlBckVhUkVXU1pJK2pINFhicDZnOUU5RW5KVDNvYVJ6RE4rTVVKQlFESG41NmE4b1VtRUJ1c094QnMvTjUrdEpFYlBrQUZEajhVR3ZPcy9JV3ZjU2dsR0JodlM3L0ZUWWZwV0dZZERZOGZQQXhXU0EzNXNUQzRwNCtMbTRBYXFJb1BlUXRmdWZLNkpoMFpoeGxic1VYT1NtWE5pZkQ1WlRBa3lEb2ZiYmNjbHhuQThXTkFxeENiUk55a2hYeFFwYUR3NjdmWFVZYnNpRzBLaHR2Mm9lSXZoOHJoUU1ZT2NFQXFYRy9lSSt6bmdPYzV5eHI4cTgySUFNMWMvRkxGT3BscXU1ZUZRWHJNWnpHY1ZDalliTFdHNUk0QlQxZXVScmxieHROT3RNaXREREVoTFhJSXluQUF2dU9FV0UzWDNOZEFmdDk0VmdhRzQyWElRdDBaWDZQZUNFL3FRRmU5cks2SHg3WVU1MEt2SDdmVzRmUytxN0tLQkp4c2dnQlg1cFNBR2gxaklyVmg1elE2dzNSZmFhaEJYbS9hQ2JDWlRqQ1VGVVR5V1pxVzlwNjJNakpQWFZxT3JQZ01PNE52NzRHa2Yrb3dmdE5WQkRRbmpGSnFIU3cxN3BYdmhXVzVLWnFlL1E0OU4vVVNUQ0FWV29RWEZJSEJIWFhlM0ZQclVEc3VHRG10Ri9oSEtUSHBla3hoaUFPUEkrU0pxNlM2SEY0STlZV3prQkpUbzQ2aVVNeldwOFBpci9SaWR1THhLWXNTa3NWOHZMbE9RdmhHWDJZbFIwT0JoQmpDK3UvZ0VjdlkwQXBLN1lrNDFOeGpQU1FuV0ZIVEY2NlVyamdldkI4Q3U1YStsMnZZU1JQdHVWRG83M2hoZE1TSG5VWDd0VGpzVlpHeEFsL1dwdGlPSUVRMWduTDI5bVg2L3RSMXRtbGtZajhXNFgrQ1NqV2NVREdZMU5wUy9DN2hTS3FpTUxNL2wyUW1TV1o3M0RkeitnaW84QkNFTllQUTQ2cW5rendYVWJxdkJreGpVUXNXZlpGZ2J1bzNyQWYrd043ak9POTAreW54NFBpM0wrMG5ZTDFTY2hEVWdBUDRnUFYvN0lkMXErMUhTaG11R2tJcVdSUGd5eE1GcVA4SGZqVG5qWHdZNWJRZmJKY3Q2T0l6S2dNSG90Ri9IZTFlZ3NheEhTcUc2d2ZkbVE1eDhOeVRGRnFCY3AyaVNvd0hSM3lrNSszNmhGN3ZYQUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzFfUFJFIiwiRklET18yXzEiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwibGFyZ2VCbG9iS2V5IiwiY3JlZEJsb2IiLCJtaW5QaW5MZW5ndGgiXSwiYWFndWlkIjoiZTc3ZTNjNjQwNWUzNDI4Yjg4MjQwY2JlYjA0YjgyOWQiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJsYXJnZUJsb2JzIjp0cnVlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6dHJ1ZSwiYWx3YXlzVXYiOmZhbHNlfSwibWF4TXNnU2l6ZSI6MTI4MCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0Ijo4LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjEyOCwidHJhbnNwb3J0cyI6WyJuZmMiLCJ1c2IiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotOH0seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTM1fV0sIm1heFNlcmlhbGl6ZWRMYXJnZUJsb2JBcnJheSI6NDA5NiwibWluUElOTGVuZ3RoIjo0LCJmaXJtd2FyZVZlcnNpb24iOjMyOTQ3MywibWF4Q3JlZEJsb2JMZW5ndGgiOjMyLCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6MSwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjEwMH19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTEwLTEyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3MywiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJTZWN1cml0eSBLZXkgTkZDIGJ5IFl1YmljbyIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjQxMDEyMDA0IiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMDYtMDQiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDczLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IlNlY3VyaXR5IEtleSBORkMgYnkgWXViaWNvIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNDA2MDQwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0wNi0wNCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzN9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjQtMTEtMTIifSx7ImFhZ3VpZCI6IjMzZDZkN2QwLTI3OWYtNGVmMy05NmIzLTJkMzI4MmY0YmRlNiIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiMzNkNmQ3ZDAtMjc5Zi00ZWYzLTk2YjMtMmQzMjgyZjRiZGU2IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlRoYWxlcyBlVG9rZW4gRnVzaW9uIEJJTyBFbnRlcnByaXNlIn0sImRlc2NyaXB0aW9uIjoiVGhhbGVzIGVUb2tlbiBGdXNpb24gQklPIEVudGVycHJpc2UiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MiwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9LHsibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MTAsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwiaXNGcmVzaFVzZXJWZXJpZmljYXRpb25SZXF1aXJlZCI6ZmFsc2UsIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQzZUQ0NBZEdnQXdJQkFnSUpBSmJUeXJ1MVgvSVBNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1DTXhJVEFmQmdOVkJBTU1HRWRsYldGc2RHOGdUWFZzZEdsQmNIQWdSa2xFVHlCRFFUQWVGdzB4T0RBMk1USXhORFExTlRCYUZ3MHlPREEyTURreE5EUTFOVEJhTUNNeElUQWZCZ05WQkFNTUdFZGxiV0ZzZEc4Z1RYVnNkR2xCY0hBZ1JrbEVUeUJEUVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTVZqS0hXcGJEN1RTbE14b2NqVGw2bklmN3gzMlBtc1E5ekd1TEdHcUEwVVFab0lxM1hMekw2TFlVdko1QTVnMHV5RkdsbEhFZkdBS3JFYUNROEZWdlBTL1VoMEZ5ZnpXaFJBemlUU2lqak1JSVZqampVdjltOXZGbWNYU2NnSGlnN09kejg4NThWMGtyTkg5OXFHbTN3amdhT2VyVFdtdCtqWENVZm4wMUlrVFB3eEcySGxnRWQ0NWpOTFNWN1Zvb2wrS2U4RTJraTRsRWtUZUh6Ym91bFI1R1VicDNuTWk3RTQ3Vk1RYTNiTndueldCYnNhQlNTUWhMazNtNUhhS2hoeGE2d0pESzQ3TmlNQ2tDa2RJSHVXU1FMVkFmbTg1VUFPTnRFT1B3aTBPdUszcWJlOHlLT0ZHZjBLaEI1TU1lQXltN01WL000VzBhNDlvZ1BEOXBNQ0F3RUFBYU1nTUI0d0RBWURWUjBUQkFVd0F3RUIvekFPQmdOVkhROEJBZjhFQkFNQ0FvUXdEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBSld6NXhMTWs1V05ZYkFiNnlPeEVDQm9aMldlQi9xbDRWSjNPLzMvdE5zeE9ZbnpMZVdvNTQwelFoOXJBbWF4ejdldW1CbHNrTXE0eUdQU05YQjl5Y1dHSGdrY0NlU3pOMnd2OENJekRCczJvQlpqVE5rNjVMQlpEc3NUT0J0TVcvK3VURkhRZmJ1TzNJU0xoSTBEWGZSRWk5TkRNM2pmazExeEhjc2ZoMlJNVitRZE5md1ZhWlpyQ3Erb3VHK0V2a3Y3S3FxK295dTBWRk0vdHo2OFRHbDZ5bGhQRlIxcWg5d3R0cFZqQU9PQ0VRQ0xxUDJkUDI4bHdZQnlDcUhRcVZId2J1anYvTFpqWm5LVzNMWW5kWml4UFBTUkNKc3NERHdKdmgvZjZuVHhnOVpFKy9KY1lyZTVDYUk4bnpWSGFTT0NqTko3RnpVTEc2NEppV092UTUwPSIsIk1JSURkVENDQWwyZ0F3SUJBZ0lKQUlDVVR2a2d0ajVDTUEwR0NTcUdTSWIzRFFFQkN3VUFNRkV4Q3pBSkJnTlZCQVlUQWtaU01Rd3dDZ1lEVlFRS0RBTkVTVk14Q3pBSkJnTlZCQXNNQWtOVE1TY3dKUVlEVlFRRERCNUhaVzFoYkhSdklFMTFiSFJwUVhCd0lFWkpSRThnVTNWaVkyRWdRMEV3SGhjTk1qQXdOekEzTVRRek56RTRXaGNOTXpBd056QTFNVFF6TnpFNFdqQlJNUXN3Q1FZRFZRUUdFd0pHVWpFTU1Bb0dBMVVFQ2d3RFJFbFRNUXN3Q1FZRFZRUUxEQUpEVXpFbk1DVUdBMVVFQXd3ZVIyVnRZV3gwYnlCTmRXeDBhVUZ3Y0NCR1NVUlBJRk4xWW1OaElFTkJNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXZBS09lcUM1L3AwRDFpc0NZS1FKbFZVT3JCNkk3RExvY3VuRS9SbThkdUdUYnl4UWh0M0NiRlZUdjNOMkxwMmZianhsSSszc09TR2szM0ZUWWtUcXhjZEpJcko3U3NrQmNVU05yZktPYVFULzZLUWNQNENtN1YrNjU1VHErVFd4eXhXUWhEeWd0MTVxb1A3TXVLNmJUOVN3cENqcGZLaGFNU215UWFNb1VjUkFiTHFkekJDYWMwaHpCK1plK2dxSmxuV1Y5VWFTSTJyRnNWdUg0WkUwY1JPK01PcGFMZ00vczI0OG5HR0hwMjJld1NRZmJuUGFCYmI4aXF5QVArY3U1MkdMc1VwS1JKZWJFK1I2K1BNUTlKQ2RXZVFaUjNEa2ZTaWRrdjNtY2I0anExaUl0YStNcUtoUm53cmZYaDkxMUtXTG5ZQWw5RU5DaExYMGM2U2oxUUlEQVFBQm8xQXdUakFkQmdOVkhRNEVGZ1FVV0x2aFJCVVBuOHVMSWY2OCtndi9OWkl3R1NJd0h3WURWUjBqQkJnd0ZvQVVXTHZoUkJVUG44dUxJZjY4K2d2L05aSXdHU0l3REFZRFZSMFRCQVV3QXdFQi96QU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFGTHJEaGFlZ2VLSHhZakgzRVAzdlVCS2huek0yMDZBU3hnZVlDTzJFYzlwT2xZSmFlcUZFK3NVYW1VVi9wd2pEbHFOYVNnRmd5N1R3ZVlrdk9tTW40cVNjc0hxdkozekdPQWlhZndhaDF2VUhmQ2xYUjgrYXhPMmlHT1VGMEpLclo5WVlqYkFhNS80SENsdjdqRlBPZE1XVE9ReW5nb2lIQXMzamt1WWpwQ0xGbEI0Vk9pM2Qxd2pBMXBuVGRCS2tBYjd0OG5UdncrL1hiRnZjUWE3M1ZIN3Nqdm9CcUQzZmRNZlJjdVZxNHFVWnRaVDZjR2FnVEhENjFUdHFoOW9NQ1pYY0RiUjFQR1puTmJxeWNzV1BESUswbnBtSzMvM2xmVjhjK1pzcnk2ZTE3MG1mSk1acDdPOG02Q1N6Ni9WTEsreURKZDc4NDF3cG1lS1RmNkluWkE9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFRd0FBQUFnQ0FZQUFBRG5sVVpxQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUVuUUFBQkowQWQ1bUgzZ0FBQUFaZEVWWWRGTnZablIzWVhKbEFIQmhhVzUwTG01bGRDQTBMakF1TWpIeElHbVZBQUFLMUVsRVFWUjRYdTFkRFhBY1pSbStOT0FmS29nNldPMFFjcmVYM083MVI0MW9IZFNxcURBT2czK2NZRVhCb2xYUlRFbjIyMHRhS1RjNjRtZ0JxekJpRVVWcEJkcWl3d2hxU2RJUzJ1cFlTZ3ZSdHBUU2NrbGpXekhhZ2pwU1JkcjR2THR2anJ2azI3dmR2ZDFMam43UHpETjN0L2QrNy90K2Y4Lys3OGFLME5EYWFyMnFPZFhab3FXeUg5UjBhMEZjdDY3V2RIR1Rab2pWQ2NQcVNlalcxb1F1SHNPeS9lQlRzRG1NLzU0WlQ5aitMV0dJZzdEZkIvc0JjRFBzZjRYZlA4WDNiMnVHMVpIUXpVOG1VdUtkeVdUSG01cWFjaS9qSEFLQnlpZjBiQnIrTHdhWElQWVBrTWRxZkw4WGRXcGxzMUFBMzEvUWpPdzk4TDhTOWI4QlhJUjIrbkRjNkRvemxzazBzbG5rUU14a1BHWE85RUp0Vm5ZR0Y0c1V5Vm5kOFVUYWVwOGJ3KzZMYWtCajVpemRiTkpTMXJ4RVdueVd4ZzM2RW1QZFdvUFBEZWpmN2VBVEdNc0hhRHpUdUM2aGJqME4vcFhtQXNydWdzMFdMUDhOdUJKalpKbVdFbGNsMDltUEoxSm1XMHRMNSt1aUhCdUdrWHNsalg4N25pNEV6Vm5rOUF2a3NRbjU3RVNkaHJCOEJNdVBqT1dQLy80T0hzUi9lN0Q4WWRUbGZ0UmhGZmdkTEc5SHUxd0FmenI1NWpBT2tpUUtodlZiR0I2QzAvL2krMmlOZVJ4OEZnbnZSZnhmYWluelNrN05FMGlJVVBiZjQzd1dtTlROZDdCcEtFQTdMWmZGQVk5enAzeVpUU01EaVFWaS9VK1NnNVFZQUlmT21HMmV3c1VqQS9yaFc3TDRCZXJtajloMFVvQjJPQitUWlRXNEIvazhPeUcveUNpT29XMUlZSDZIOFhQejlMYmNLemlsUUdocE1admhaeUhHd0czZzQyQms4NVo4bzkwRzhYME5pU3MxSXYyUUdrOEtkV3N6dDRzbklQOFJxUjltRFFYRElkWlNiQm9aMElsM1MyT1haWFlwRjQ4TVUxNHduSzFiZVc0MXBMM0ZFUUNKbFBWV3RERzJmdXlWck5SM3RCVGRTakI4WXJJRm95VnRubzJPQ3pCZ3hETkJCNnBYS01Id3hpRDlnSzNLYzZQY2t2QkdKUmkrTWNtQzBZRDRmZEs0WG9oOVcvWVRDWlJnZUtOdndjaGtHdEcyZTJXK2Frc2xHTDR4bVlKQmF4bHBUSStrTlJRZG1HUjNvVU1KaGpmNkZRdzZjQ3J6VTN0Q01MRFd1UXNkM1IrQXczS25CUTVLeW5qaGpkeE9ubkRpQ0VadUdqcnNZV2xNSnRwaVdVSzNCbVQvRmZFdWRoZzZVUGU2Rmd6MGJSNmZhNk1tblkza2xEd2hhWWpMVVU2ZXMyN3QwZ3p6bTdWZ1V1OTZENmZrSHhDYTYyVVZHQ01xOGcwMmpSUW5pbUJvUnZZaWFUd20ybnRmVzl2Q2s3VzBkWUhzL3dKMTYzazZlTVp1UTBXOUN3Ykc5SzFzT3FXQXZJVTBYNXRpRFp0TmJTakJjR0VFZ3RIV2Rzdko4RTJuQXVVeGlicDVoV005Mm9EZjJ5YjhYMEt4M3JFTkYwb3dvZ0htMGhKcHZqYVZZUGpDaVNBWWliVDFlV2tzSmliQ2svUG01VTVpYzhyeFFwbGRNUlBwN0hsc0hocVVZRVFESlJnaDRzVXVHSFNSRCtwSVYrVEo0eEgxTEc5ZGpDSFRpTWxSNFZpRzJFN0hSYmhBS0ZDQ0VRMlVZSVNJRjd0Z29KMnowamhNdEhPZWpsMndlUUZZL2xHWmZTbkZmRFlQQlVvd29rSENNQmRMODdXcEJNTVhLZ3FHSVM1dlRwdG5oMFhVKzA1Wm5BSkRGQXpENkRnZC9wNld4bUhHRGZGRk5oK0gwUWIwd2FPeU1tT0UrT1VOSS9jU0xsQTE2bDB3MEY2NzQ3cTRwUnBHY2RxYTdrdVI1VXRFSDQ1Z0Rtd0tpL0RaajgvN0lFUzM0ck96ZWFhWXpXbFVoM29SakpvelJNR29PQUVOYTBpMmRUR0dlRXA4VEZKbVBEdll2R3JVdTJDRVFicWhrc09GQnN5bGkyV3hhc1RqNk5kMTJwc1h2NTdUQ1FZbEdDNE1TVEJhVzYwM29vMWRiNnF6cVZ0ZlluTTU2QXBCdzlveG9Wd1JNWWxHTkszOTFWeWlLaWpCaUVZd21sUGRMYkpZdFNUYTdxSGlBK3Urb1FURGhTRUpCdHB2aGRUL0dIV3h2OXpXeFJpMHRQaUV0SHdKeGJWc1hoV1VZRVFqR0hSd0d1T2gwZ1Y1a1RPZU1pL2hoUHhEQ1lZTFF4Q01zMXF0Vmd6dThyZXZweXlQandId3NwVmgvU3VWV2pLZEN3U0dFb3lvQkFPNXA4MzNvcCtlazhXc0ZkRit3YThTVm9MaHdoQUVBMzdXVFBCYlJIVGNBZXhHdkpUTkhmUU1OY2Y2QnMrUDllYm54ZnFlUEpXWDJrQ1p6SGdmRXhqQ0dRSWxHTkVKQnNGK0VKRXVkc3ZpMW9iaVQ1eUtmOVNOWU9qV1pqVHlmYUhSdWQ5QUhvdFlwV0E0TnhxSlkxTGZUTlQ1SzJ3ZWk2MGZNaUFVRDRLakJmYm1qOGI2OHN0ajJ3N2FEMnFoZlUvMHh5NlpyekhTMnF1bHBUTmwrd3lJdWhjTWpCVTY2MVFObTJjdVBvUERSWVRSQmpwYlIyTUFPVjlIWnpPUTk4L3cvZll3aVBIdGZqZTBidjJGay9DUGVoR01PcnNPby9MdDY3bzFYRGdWdWlFL0J3THhqeEt4S09YRzJNNmR0aTM2dzhPUmRuR1A3VGNna0Z1ZEM4YlV2QTZqbGtpa084K1R0ZzJJTVhTWXpmeERDWVlMcXhBTUw3ZXZvNzd0dG5GLy8wbllrdGdoRVlseEhMcWF6SjJ0akVxYnM5aXlTV1huMnY0RFFBbEcvYU9zWUJqV0FUYnpEeVVZTGd3c0dMbHBLTHRWNnBOSkhWWjRZSExmL25mSkJXSUNoMkhkUUVYaTZld2xNcjhsZEo1SFl0djdoUktNK2tjNXdVRDc3R1V6LzFDQzRjS0FndUhwOUdkS1hNWG1FSXg4dTBRY1hQallhKzB5bVV3ajJ1dHhxZThpb280WDJ2WStvUVNqL2xGaGwrU1BiT1lmU2pCY0dFQXc2SG9LN0E2VW5jaW81OEdtcHN0ZWVCMUQ3OUJYNWVJZzRmM0RwM09wR09MTWwva2Z4eDJ4ekZyZmo4VlhnbEgvcUxCTHNvWE4vRU1KaGdzRENFWWlWZjcyZFdicEpkdzkrODZSaXNONDlnN3VoM1ZoRjRQRjZRbUovMUxxMWdJdTRobVZCQU1UOXU3eDcwd0pnL1RZZlU2aExKUmdWRWFGWFpJSDJNdy9sR0M0MEtkZ3pKNXRuZ0tmQjZTK21Qai8wSXdaSFMvbklnNUdSeHNoQmdOU2tTamxZaTVSQVBydVVsbWNZbUp5L1huRzNIRXhLNkRpRmtaRXhCall5Q21VUlNYQlFEdVBvQTVibzJiU3lMNmRVL0lFM2lxVW5nWU5tMmdEMTdOMCtHOFZwK1FmU2pCYzZGTXc0cnBsU2YwVUVURk5OaTlGei9ETVdHLytpRVFrSFBibU44UzJiWnQ0K2JoemowbjVKM2lCZEZzMWwvQUUxTDJ1QmFOV1RPcmlBNXlTSnlEdjc4cjgxSnllcnk2V1FBbUdDMzBJUnRPYzNHbG9wOE5TUDJQVXhWTmwxL1RyOHEyeHZ2eDY4UGtpc2ZnbmZsOGY2eDkwZlFVbDRuNUdHcStZdWpoeTVxenUxM0NSaWxDQzRZMTFLUmowV2tndEYvd21SU1VZTHZRaEdGNG1HQWFMWVBQeTJEZzBQZFl6OUg3c3BzeU45UXhVZkMwaVhmeUZQdG9uaTFsTUdxeGNwQ0tVWUhoajNRa0d4Q0twVysvbWRJSkJDWVlMUFFvR3ZZUWE5dVhmNzFscDY2SktsSHQ4L1FzVVIrMFhUWHVBRWd4dnJBL0JvTGZyMlFmSHIvR3psZW1LS1NNWXVua0hUU3pFbEw0K3NGYUNnZm8rQis3V2pPem4yTFFzbk5jR2lEMVVUdWJQb2RuRjVwR0F6cGdndnV0V0J1cjZIN3RPdXJpVWk1UUZYU1dLTXQvSEJONUVheVhVcit3OU1jRXBqdkdLNHZmSWJ3VmR3OElwbEFXTkJaUzVEdldoTjVYbjRlZG9xZDhvaUZ5eDJ3aytpdS8wSXVpbDlLd1RUc2tUNG1seER0cnpSbTVYalBVbzJwWGU2RzQ5Z2p4dncrZkNoTkdoY2Zod1FDOWphVExFRzl4b0dGZVd2aVkrVXVTbTJRK2NvWGR5Nk5ZaU5Pd3lWUHJIR0JoM0pvenVVQ3NlVDVtWFFmRi9qaGcveE9mWE5kMjhnam8wYUgzcExBbE5OR2R0TDVZaTU1dlFnYmVqNCs2Zy85Z3NNcUFPSDNIYVNmd0ViWGNEdm1lVGh2VXBUZTk2eTRRek03NlFtOVkwWjlGcGRQY202dk5wc0F0OXN0eHBPK3ZYNEViRTIwb1RDY3NHU29ubCtCL2Y2V2EvVmNWNTBhU1B4N3RPRGVFQnhnMTB4eStka29YZ2ZBZ3hGaURlMTlBTzMwTS9yRVFPOXlMbUE0aS9CYiszbCtibmtQSUhONFByVUwrMStGd0IyMnZob3gxaWYxRzgxWHBidkEyNVpqSytyMmx4UjI0YTFkOFJQekVmdXdvV2NzRVdpSk16WWorSTN3K1Z0S3NoSGdIL0FQWlNucWpUemZpOHhoNjd1blV1UGRyQTI4TnhZckgvQXozdEk0ajUrVE9MQUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIkZJRE9fMl8wIiwiRklET18yXzEiLCJGSURPXzJfMV9QUkUiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwibWluUGluTGVuZ3RoIl0sImFhZ3VpZCI6IjMzZDZkN2QwMjc5ZjRlZjM5NmIzMmQzMjgyZjRiZGU2Iiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJ1diI6ZmFsc2UsInBpblV2QXV0aFRva2VuIjp0cnVlLCJub01jR2FQZXJtaXNzaW9uc1dpdGhDbGllbnRQaW4iOmZhbHNlLCJiaW9FbnJvbGwiOmZhbHNlLCJ1c2VyVmVyaWZpY2F0aW9uTWdtdFByZXZpZXciOnRydWUsInV2QmlvRW5yb2xsIjp0cnVlLCJhdXRobnJDZmciOnRydWUsInV2QWNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjpmYWxzZSwiYWx3YXlzVXYiOmZhbHNlfSwicGluVXZBdXRoUHJvdG9jb2xzIjpbMSwyXSwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjo5NiwidHJhbnNwb3J0cyI6WyJ1c2IiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fV0sImZvcmNlUElOQ2hhbmdlIjpmYWxzZSwibWluUElOTGVuZ3RoIjo0LCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6NCwicHJlZmVycmVkUGxhdGZvcm1VdkF0dGVtcHRzIjozLCJ1dk1vZGFsaXR5IjoyLCJyZW1haW5pbmdEaXNjb3ZlcmFibGVDcmVkZW50aWFscyI6MjU1fX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI2LTAxLTE1In1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNi0wMS0xNSJ9LHsiYWFndWlkIjoiOGQ0Mzc4YjAtNzI1ZC00NDMyLWIzYzItMDFmY2RhZjQ2Mjg2IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI4ZDQzNzhiMC03MjVkLTQ0MzItYjNjMi0wMWZjZGFmNDYyODYiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiVmVyaWRpdW1JRCBQYXNza2V5IEFuZHJvaWQgU0RLIn0sImRlc2NyaXB0aW9uIjoiVmVyaWRpdW1JRCBQYXNza2V5IEFuZHJvaWQgU0RLIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfSx7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJ2b2ljZXByaW50X2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJleWVwcmludF9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGF0dGVybl9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImhhbmRwcmludF9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmFjZXByaW50X2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibG9jYXRpb25faW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwidGVlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbInNvZnR3YXJlIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWxlc3MiLCJibHVldG9vdGgiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNHRENDQWI2Z0F3SUJBZ0lVTHVMSnlsdkpxSzhKRXp6ZWFXVFlvY0hhZXVNd0NnWUlLb1pJemowRUF3SXdmREVMTUFrR0ExVUVCaE1DVlZNeEVUQVBCZ05WQkFnTUNFNWxkeUJaYjNKck1SRXdEd1lEVlFRSERBaE9aWGNnV1c5eWF6RVZNQk1HQTFVRUNnd01WbVZ5YVdScGRXMGdURlJFTVJNd0VRWURWUVFMREFwV1pYSnBaR2wxYlVsRU1Sc3dHUVlEVlFRRERCSldaWEpwWkdsMWJVbEVJRkpQVDFRZ1EwRXdJQmNOTWpFd09ERXlNVEl3TmpNMVdoZ1BNakExTVRBek1EZ3hNakEyTXpWYU1JR0hNUXN3Q1FZRFZRUUdFd0pWVXpFUk1BOEdBMVVFQ0F3SVRtVjNJRmx2Y21zeEVUQVBCZ05WQkFjTUNFNWxkeUJaYjNKck1SVXdFd1lEVlFRS0RBeFdaWEpwWkdsMWJTQk1WRVF4RXpBUkJnTlZCQXNNQ2xabGNtbGthWFZ0U1VReEpqQWtCZ05WQkFNTUhWWmxjbWxrYVhWdFNVUWdRWFIwWlhOMFlYUnBiMjRnU1hOemRXVnlNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVGVjdDVDFZNTBZVXREczVuQ2Z2cFkzOEw3SUt3SGhoMUVDRXR6RkdnSnFNcldjOU9DeEVSdXJiamx3MWVueWNjcjRZRFBuRHYreXZzNmNJOFlSWjNTcU1RTUE0d0RBWURWUjBUQkFVd0F3RUIvekFLQmdncWhrak9QUVFEQWdOSUFEQkZBaUVBaUp2M3dIVXF5dUowY0F0OTI5bXFBYVB6RmhqaG5heXNxak50eEtwVXpCY0NJRVFYUjdzODZPNkJuQkgzMElXdVdMeHV0L3RzaGlhVDZFdTBOa2g2SGQ2MSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFnQ0FZQUFBRUVmVXBpQUFBQUJHZEJUVUVBQUxHUEMveGhCUUFBQUNCalNGSk5BQUI2SmdBQWdJUUFBUG9BQUFDQTZBQUFkVEFBQU9wZ0FBQTZtQUFBRjNDY3VsRThBQUFBZUdWWVNXWk5UUUFxQUFBQUNBQUZBUklBQXdBQUFBRUFBUUFBQVJvQUJRQUFBQUVBQUFCS0FSc0FCUUFBQUFFQUFBQlNBU2dBQXdBQUFBRUFBZ0FBaDJrQUJBQUFBQUVBQUFCYUFBQUFBQUFBQUVnQUFBQUJBQUFBU0FBQUFBRUFBcUFDQUFRQUFBQUJBQUFBSUtBREFBUUFBQUFCQUFBQUlBQUFBQUFRZElkQ0FBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFDWm1sVVdIUllUVXc2WTI5dExtRmtiMkpsTG5odGNBQUFBQUFBUEhnNmVHMXdiV1YwWVNCNGJXeHVjenA0UFNKaFpHOWlaVHB1Y3pwdFpYUmhMeUlnZURwNGJYQjBhejBpV0UxUUlFTnZjbVVnTmk0d0xqQWlQZ29nSUNBOGNtUm1PbEpFUmlCNGJXeHVjenB5WkdZOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6RTVPVGt2TURJdk1qSXRjbVJtTFhONWJuUmhlQzF1Y3lNaVBnb2dJQ0FnSUNBOGNtUm1Pa1JsYzJOeWFYQjBhVzl1SUhKa1pqcGhZbTkxZEQwaUlnb2dJQ0FnSUNBZ0lDQWdJQ0I0Yld4dWN6cDBhV1ptUFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzUnBabVl2TVM0d0x5SUtJQ0FnSUNBZ0lDQWdJQ0FnZUcxc2JuTTZaWGhwWmowaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOWxlR2xtTHpFdU1DOGlQZ29nSUNBZ0lDQWdJQ0E4ZEdsbVpqcFBjbWxsYm5SaGRHbHZiajR4UEM5MGFXWm1Pazl5YVdWdWRHRjBhVzl1UGdvZ0lDQWdJQ0FnSUNBOGRHbG1aanBTWlhOdmJIVjBhVzl1Vlc1cGRENHlQQzkwYVdabU9sSmxjMjlzZFhScGIyNVZibWwwUGdvZ0lDQWdJQ0FnSUNBOFpYaHBaanBRYVhobGJGbEVhVzFsYm5OcGIyNCtPVFk4TDJWNGFXWTZVR2w0Wld4WlJHbHRaVzV6YVc5dVBnb2dJQ0FnSUNBZ0lDQThaWGhwWmpwUWFYaGxiRmhFYVcxbGJuTnBiMjQrT1RZOEwyVjRhV1k2VUdsNFpXeFlSR2x0Wlc1emFXOXVQZ29nSUNBZ0lDQWdJQ0E4WlhocFpqcERiMnh2Y2xOd1lXTmxQakU4TDJWNGFXWTZRMjlzYjNKVGNHRmpaVDRLSUNBZ0lDQWdQQzl5WkdZNlJHVnpZM0pwY0hScGIyNCtDaUFnSUR3dmNtUm1PbEpFUmo0S1BDOTRPbmh0Y0cxbGRHRStDck90bGxFQUFBYk9TVVJCVkZnSnRSZHJiSk5WOU43N2ZWKzc3Z25iU0Z5YzRPam1nMmlNRGpGS29zQVlCSHlCWTJEOFlXS016aEIrT0Y5cysyTXh5akFpR3Y5TlF3d3hNWEVQRWd6dkRZckFFalFib0FNeHROMFlRNTNRdGQycmEvczlydWZjOWl2dDFxNlF3RzNTNzk1N252ZWNjODg1bDVEWmhuMTdtMGFYSCtrYUlKejhlUFdzdndtUjVhQXZIUEVPQkp1WTFVWmM3NzlBa3poVXZ0Mml4SGRLZDdYYXJDRWFwTXNQZC9Kcmx6UmlURTBReW1pamZQWGNLQ2VjVTA5VGJSdzdpVS9pb256SFhnNXFkTHFjcTZzcllnQmF2cVBqQ0RlTWFoTlJKb1RLVloxZGZMQTNRTGdCM0EwRFlGejFORzIwSUJKenJsNVpOdGpqL3hLQmxMRitUK1NpWkFKTkxyTiswMnBhc2FQOUN5NVpQZ0Fka2tkbFM0OHlOdmxmeEFnRkNaVTRZU3RQbk9LVkxTMktpUllZR1FnalVBeFFtSzQ0M0trVFNXSlh6dmtlb0JyL0N3QU1nVlNTaVh2cmVzbzQ1MlRvbkc4TWdKZE5JS0ZVZFplcFFydzgwQlBna2tUemtRb0FuRkhqUlZkRDdRR3hOdi9zelIwY3ZCc3gxNG5mdE1kTVJKbytYK1p3eWtNNS9vZGtXMEdmVUhnNlFzcDFiYXVFKytYTjdkZUdGTzhVVWZVK0hVS0VWWFVlZHdvQ2h5TXRNempDcG9xbmJCb2NBMnpDN3lXVXhPMFBBWWRCYTh5WDgvS1lPanIrT01sV0xwQmZDRG5oV0s3Wm05c3g5bFFRRVBlREVJWi9uR2dRb0c0UjlaVHorUnpzVHlWR0FsZUQvNDU1dFJLdWEzSGMrSVFTbmRseUpSNE8zbGM2VlRpTVFtUUMzdVNVVHZYLzVzK1NGY1pBWWttY3dKeFFrRWZwUGsvRGh2WG1sanMyWWM0MXE4cUd6bzRPeXpJRlRqelJLeHJMeWlhZXhnMXN6b0RQbWtoc01zSHZUUUtIUTY2d1BGSkpzblBQOEZEd0UzZkRLeDhuSXQ2VnVYMTcrN3Ewcmtzck1lWnU4TkFmbEpLRzIySWdycFhEWVZUcy9KbUQ4UjhFWDhvM2JaQldaQXdBa3UyMlI1OWpTdFp4SXh3RXJ4TURpTSt6MmxZdVFqUVRmWG4yWTN1SWJod1hseG1jYW5xTStRcVBQYlBNNll5SFpoS2pWalArTzhhNXBtNUtnc1VXakREbEpJc1l6ZE9CZU40eWwxWmM4ZFVoQ0g4OUd6dytNNXlCaUlsSTVNYTdLNDUyWWNZQXUwU0RhY3hmdEZsU2NvWXhLUVB4ZEdNYkVOS3daM25MQk1pUU9NdXFuQ2N4WkRuazVQTVE0VHU1bGpLSHFKUkp6RlcvbHBhRzgvdG9WWmVURzVvR2dpRUZTaXcwZUg0aWkyZ3EzcVFVZHVHUUJsazNoUGV6cUJicUc5VUFJa0lONnI2QlgvMVpSTmZRUlRPSXFXTEY2L3BtakJoUTRJSWhJcFVsNHZPTTNaajBhZk1ZT2pUNVFpR091TUlzRXNuUExmU0djQ054eUZmT1hOZGhZeDRlSWNWUUthSGpydm8xUlFSVFdsc2Q0aVlOSmtua0NXb0ZMOFZVaWtQUjhKVHVkamR0S0JKN2JSdG5FT00rSzVrcytoTXRDbVVYallMRzQ4eVdRMlRHbi9UWWpTMklsSG5Fem0xdjNuc0Z5eW9TWU9yT1RCaDF4YTNnM1JFYzdDTjZ2NjFUeTc4NWFDV1RVNjJRc1I4MkEvR09DRWpKSkhZZkVUYTJvTGdXOGxDUWhOVVErT2NsaUw3UnU2WUFuaGFGbHJtc3hTRFVXZkgxSVc1US9RZHdzWVdyRVFNNkFoR3lXRVZ1UGFjaHgxbEdvdC85QzRzMll6eElDaG1HdXJuVUNNWnlBaWNvT2M2RkxlM3V6c1ZWMnBRV1IwMHp3UVBFelB5UFphUWM2c1R2bU1HZ3h1M2tobTVFODBucVRJWWNtVFVZZHEwNGVveExxdjZxS2FJMndXL20zdlN2YVdKTVhuWTMzWTVsd21Ec0VweHVVVFFEY3J3RnFWME1OSUlmdGxQUVY0cjBZQmo4KzFYZFozalYwYTc5L3JsemhWVXFlM3FTY3pBV05FYzBmd1h1TDE0Q3ZoMnEySFVBbVBGNkl4TG1jR0xrbS9uNlFWdkNJTGRoUjhId0JOQy9ZbXBrNnZnNHBIZGVUWlNzQURUcXdUa2pnWmVGcGdRRXd5Z2ZXYUxZclIyN2hWREtUMFA4M0JQdE40V0pNOFdTMEU2eTVZSkl1dDhJZUF2Y2pUV0xVMmxyMFVQQ0tBcG5ySzM2MUdrU0dCejl5ZHZmdHBUbGtWSjl5bERqVFc2bTA2S3BvVmd3YTQ3QzFiQVAwdTNybCt2WEhDWm95WXVMaE1JekZRQ0RNa1VpV2tRUGV0M2prVW5mU0pFazAxcW1FSzVQVFlJZDBnZFUxRnJpWDRPNkl6T0xsVUl0L3M3MTN0b3RhR2xzNFFVVVdnc1RWeWdnS2dHNEEzN3F4STFRNEVaL01BZmNrZy85TmdIaGlJdnRYYWFCR0ZCNmNtUm9Pd1k0bFYrREoxV1B1Q0hidGlFVDNsdTNHRnZWcENFekNZcmhsRDUrM1RXdWhpYTBRdG5Dc0s2aDZjREZTYmpwRmlvOEtSUjBMQVRoTmlnc255SmkvSlpzVEYyRlRHYk1kWHJrdzc4dmpGbDBReTZFcDRtS2p5b1FueW1nMElSWWFQRUIxaXN4YWFIN28zVjBUci8zY3pPeFljNDNoY3oyWmZOSy9QczhqVFZaV1NvcmhPTGFpVXhCQXhRUTkxTUNBNVVxOEFxa1ZLY3lld2NLTlhVMzFEeGRNcGszaERoQ0tBYmViUXpXV3hmVnRNOGVISE50clhrZW1STFo4Z1pZVkJmQ09CZXRrVkNNMFlNMmJhSVEraEpMUVlGM0Q4Z1Jsc0tYd20zSXpJeHF2aTBYZk5aUkFnK2svZmhJRWxRSmFUY3psMXZEK0I5Y01BN2d5cXZ1VFFBQUFBQkpSVTVFcmtKZ2dnPT0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJGSURPXzJfMCIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsiaG1hYy1zZWNyZXQiLCJjcmVkUHJvdGVjdCJdLCJhYWd1aWQiOiI4ZDQzNzhiMDcyNWQ0NDMyYjNjMjAxZmNkYWY0NjI4NiIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJ1cCI6dHJ1ZSwidXYiOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJjcmVkTWdtdCI6ZmFsc2UsIm1ha2VDcmVkVXZOb3RScWQiOnRydWV9LCJtYXhNc2dTaXplIjoxMjAwLCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0Ijo1MTIsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4LCJ0cmFuc3BvcnRzIjpbImJsZSIsIm5mYyIsIndpcmVsZXNzIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN31dLCJmaXJtd2FyZVZlcnNpb24iOjF9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wNy0xNCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IlZlcmlkaXVtSUQgUGFzc2tleSBBbmRyb2lkIFNESyIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjUwNzE0MDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDctMTQiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MX1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wNy0yOCJ9LHsiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjZiOTYxNjcxNTdlZDQ4Nzc2MDcwMWJkZjAwNDkwN2QxZmU5MTdlZTEiLCI4ZTE2MTg2ZDE4NDNhOTU2NjI1ZTVkYjM3ZGM3N2RjNzRjMjE5MDRjIiwiOGJmNzExNTc2M2VhNDliNjU0OWUwODNjOWZlOGRjN2I0ZWY2MGUxOSIsIjgwMjQ1ZjhlMzE3Y2JjNzk1YzY2NGJmODQzODllODBhOTdjNWU2MjMiXSwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiNmI5NjE2NzE1N2VkNDg3NzYwNzAxYmRmMDA0OTA3ZDFmZTkxN2VlMSIsIjhlMTYxODZkMTg0M2E5NTY2MjVlNWRiMzdkYzc3ZGM3NGMyMTkwNGMiLCI4YmY3MTE1NzYzZWE0OWI2NTQ5ZTA4M2M5ZmU4ZGM3YjRlZjYwZTE5IiwiODAyNDVmOGUzMTdjYmM3OTVjNjY0YmY4NDM4OWU4MGE5N2M1ZTYyMyJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiWXViaUtleSBORU8ifSwiZGVzY3JpcHRpb24iOiJZdWJpS2V5IE5FTyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyLCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50IiwicmVtb3RlX2hhbmRsZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJREhqQ0NBZ2FnQXdJQkFnSUVHMEJUOXpBTkJna3Foa2lHOXcwQkFRc0ZBREF1TVN3d0tnWURWUVFERXlOWmRXSnBZMjhnVlRKR0lGSnZiM1FnUTBFZ1UyVnlhV0ZzSURRMU56SXdNRFl6TVRBZ0Z3MHhOREE0TURFd01EQXdNREJhR0E4eU1EVXdNRGt3TkRBd01EQXdNRm93TGpFc01Db0dBMVVFQXhNaldYVmlhV052SUZVeVJpQlNiMjkwSUVOQklGTmxjbWxoYkNBME5UY3lNREEyTXpFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUUMvandZdWhCVmxxYWlZV0VNc3JXRmlzZ0orUHRNOTFlU3JwSTRUSzdVNTNtd0NJYXdTREh5OHZVbWs1TjJLQWo5YWJ2VDlOUDVTTVMxaFFpM3VzeG9ZR29uWFFnZk82Wlh5VUE5YStLQWtxZEZuQm5seXVnU2VDT2VwOEVkWkZmc2FSRnRNamt3ejVHY3oyUHk0dklZdkNkTUhQdHdhejBiVnV6bmV1ZUlFejZUblFqRTYzUmR0Mnpid25lYndURzVaeWJlV1N3Ynp5K0JKMzRaSGNVaFBBWTg5eUpRWHVFMEl6TVpGY0VCYlBOUmJXRUNSS2dqcS8vcVQ5bm1ET0ZWbFNSQ3Qyd2lxUFN6bHV3bit2K3N1UUVCc1VqVEdNRWQyNXRLWFhUa05XMjF3SVdieGVTeVVvVFh3THZHUzZ4bHdRU2dOcGsycVhZd2Y4aVhnN1ZXWkFnTUJBQUdqUWpCQU1CMEdBMVVkRGdRV0JCUWdJdnowYk5HSmhqZ3BUb2tzeUtwUDl4djlvREFQQmdOVkhSTUVDREFHQVFIL0FnRUFNQTRHQTFVZER3RUIvd1FFQXdJQkJqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFqdmp1T01EU2ErSlhGQ0x5QktzeWNYdEJWWnNKNFVlM0xiYUVzUFk0TVlOL2hJUTVaTTVwN0VqZmNuTUc0Q3RZa05zZk5IYzBBaEJMZHE0NXJuVDg3cS82TzN2VUV0Tk1hZmJoVTZrdGhYN1krOVhGTjlOcG1ZeHIrZWtWWTV4T3hpOGg5SkRJZ29NUDRWQjF1UzBhdW5MMUlHcXJOb29MOW1tRm5MMmtMVlZlZTYvVlI2QzUrS1NUQ01DV3BwTXVKSVpJSTJ2OW80ZGtvWjhZN1FSalFsTGZZemQzcUd0S2J3N3hhRjFVc0cvNXhVYi9CdHdiMlgyZzRJbnBpQi95dC8zQ3BRWHBpV1gvSzRtQnZVS2lHbjA1WnNxZVkxZ3g0ZzB4TEJxY1U5cHNteVB6SytWc2d3MmplUlE1SmxLRHlxRTBoZWJmQzF0dkZ1MENDckpGY3c9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFmQ0FZQUFBQ0dWcytNQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUhZWUFBQjJHQVYyaUU0RUFBQWJOU1VSQlZGaEhwVmQ3VE5WMUZELzNkNTl3ZVFTSWdTOUFRQVhjRkxBUVppOWZwZVZ6MXRZL1dUWnI1V3hwYzdXNWtuTGE1akkzWjg1c3JTMm5NMnNqdFd3WlM3SVVINEg0eENuRVF4NERBWkY3NFY3dXM4ODV2OS9sSW5CdlZKL0I0UHY5bnUvNW51LzVudk01NTZmekEvUXYwSGIvSXJYM1ZGS1BvNDVjbm00aW5VSVdZd0xGUm1aUVV1d2pGRy9OMWlSSGgxRVowTlJWUnVkcXQxQmQrMm5TS3lTL09oeXMwK2xrM2UvM2tROXF2RDRaVXRhNFZWU1V1WTBlaXB5aVRoQWZvY29PUlZnRHV1dzNxS1JpQWQzcmJjRXRqVGpZSW9mNldhSHNDbXpWUFdDTXgrY2doOHRMcVdNS2FNV3NVakxxbzJSdEpJUTBvT3ptZXJwUXU0ZXNaZ3NPTmtHeEg3ZDBrZHZUVDE3czRPTVU3Vkk4WmhqZ0dhTStBcTlpRU51OFBpZjF1ZHowN013dktXZjhHbFZvQ0VZMDRQQzVXZFRhWFlGYlI4dk52TDUrM0tnZmI1eE5NeWE5UmFtSml5bmFNbEdUVnRGbHI2YmE5dStwcW5FWDR1TXVSUmdqU1lFaHJON3V0RkZlNmxxYWw3TmZrdzVpbUFHSHluUHBiazhWbVkweHN0bnB0bEZDVkNZdHpUdUJOODNRcE1MalR0ZXZkUHpTVW5KN2U4bWtqeFozOWZYYktEZmxkWnFidlUrVFVnR25CVkY2ZlEyaVBIZzRXMTZVV1V3dnpiazE2c01aRStQbjBwdno3SlNldUF5ZXM4bGNwQ21hS3VvL3ArcVdyMlVjd0lBSFdydlAwWUV6aFhBdExBYnNzSGhwN2lHYW12eWlqUDhyeXFyWFVXWDlYb293eHlBdWZOQnJwNDNQT0JGWFpsa2Y4TURSaXFjcHlvd0F3cHV6MngrZld2ei9EdGRlOXNtc3p5Z3RjUjZDMXdiZHpCbDZPbHE1V05ZWTRvR2F0aEpNcmtURXgwakFSU0hBVnMrNXJZa1FOWGIrUWdmUExzUTZnWHlJbnNyZVFmbXBtN1JWRllmTDg2bjFmaVVPa1l2U2hrVVB4dmJ1a3pveTZLMWloTTFobzNYelc2RXZTZlhBK2RwaVdHYVdkK2RvWHpMem1Hd0tZRkxDQXNSQWxQQkFoTWxDRlhVN3RCVVZQcjhIZ1ZjSkhXcStGMDBwbHIrRE1UZHJQNHp2eFkxMWtOTWh4VCtTZVRHZytkNFY1TFFKaXR5VUdKTkI4VkZac2pnWUJaTS9JSS9YQ1RrajBxeURPcEYyQVZRMTdDSWpVcC9EblQxVWtMNUY1Z2RqK3NTMXdnMWdFM2dpZ202MGZDWHpTblBYYnlBUGJJWHYrSURwRTE2VGhhSElTOXNreWhsbU1FNUYzY2ZxQUtocTJDMEU1UEgxZ1lhWGFMUERrWkcwSERKT25LV0hwNTFJMHo1U091eDhlMVdBdVp6ZEhRclRrcDhUbWpYb0krbGEwd0dac3p1YnFiTzNpZlE2QS9XN3ZWU1lzVjNtUjBKS3drS2M0V0hpQmttUjhJM0NDZ0k4N29PTDRxelQ1UCtSVUpCZWpFT2dBUEs4aFlQemF0TStlSVRwMklPOXlUUW1lcm9tUFJ4eDFxeEFjc2lsZS91YlNlRWJjV1FHWUVDZ2hjTFkySHlLam9nakgyNWhNcGpwVXYxT3VnbGk0ZWgyZVJ3ME8zMmJKamt5dUNnTnpnMHZ6bFlNU2lTczB1b280TUc3aE1PakNFYVgxeUZFMG5TdmpCenVUbkVwSzg2WjhJb3FGQUl1Ync4a2c5QXJFYVJFV1NaSStqSDRYYnA2ZzlFOUVuSlQzb2FSekROK01VSkJRREhuNTZhOG9VbUVCdXNPeEJzL041K3RKRWJQa0FGRGo4VUd2T3MvSVd2Y1NnbEdCaHZTNy9GVFlmcFdHWWREWThmUEF4V1NBMzVzVEM0cDQrTG00QWFxSW9QZVF0ZnVmSzZKaDBaaHhsYnNVWE9TbVhOaWZENVpUQWt5RG9mYmJjY2x4bkE4V05BcXhDYlJOeWtoWHhRcGFEdzY3ZlhVWWJzaUcwS2h0djJvZUl2aDhyaFFNWU9jRUFxWEcvZUkrem5nT2M1eXhyOHE4MklBTTFjL0ZMRk9wbHF1NWVGUVhyTVp6R2NWQ2pZYkxXRzVJNEJUMWV1UnJsYnh0Tk90TWl0RERFaExYSUl5bkFBdnVPRVdFM1gzTmRBZnQ5NFZnYUc0MlhJUXQwWlg2UGVDRS9xUUZlOXJLNkh4N1lVNTBLdkg3Zlc0ZlMrcTdLS0JKeHNnZ0JYNXBTQUdoMWpJclZoNXpRNnczUmZhYWhCWG0vYUNiQ1pUakNVRlVUeVdacVc5cDYyTWpKUFhWcU9yUGdNTzROdjc0R2tmK293ZnROVkJEUW5qRkpxSFN3MTdwWHZoV1c1S1pxZS9RNDlOL1VTVENBVldvUVhGSUhCSFhYZTNGUHJVRHN1R0RtdEYvaEhLVEhwZWt4aGlBT1BJK1NKcTZTNkhGNEk5WVd6a0JKVG80NmlVTXpXcDhQaXIvUmlkdUx4S1lzU2tzVjh2TGxPUXZoR1gyWWxSME9CaEJqQyt1L2dFY3ZZMEFwSzdZazQxTnhqUFNRbldGSFRGNjZVcmpnZXZCOEN1NWErbDJ2WVNSUHR1VkRvNzNoaGRNU0huVVg3dFRqc1ZaR3hBbC9XcHRpT0lFUTFnbkwyOW1YNi90UjF0bWxrWWo4VzRYK0NTaldjVURHWTFOcFMvQzdoU0txaU1MTS9sMlFtU1daNzNEZHorZ2lvOEJDRU5ZUFE0NnFua3p3WFVicXZCa3hqVVFzV2ZaRmdidW8zckFmK3dON2pPTzkwK3lueDRQaTNMKzBuWUwxU2NoRFVnQVA0Z1BWLzdJZDFxKzFIU2htdUdrSXFXUlBneXhNRnFQOEhmalRualh3WTViUWZiSmN0Nk9JektnTUhvdEYvSGUxZWdzYXhIU3FHNndmZG1RNXg4TnlURkZxQmNwMmlTb3dIUjN5azUrMzZoRjd2WEFBQUFBRWxGVGtTdVFtQ0MifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMC0wOS0xNiIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWXViaUtleSBORU8iLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlUyRjEwMDAyMDE1MTIyMzAwNiJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjAtMDktMTYifSx7ImFhZ3VpZCI6Ijc0MDkyNzJkLTFmZjktNGUxMC05ZmM5LWFjMDAxOWMxMjRmZCIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiNzQwOTI3MmQtMWZmOS00ZTEwLTlmYzktYWMwMDE5YzEyNGZkIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ill1YmlLZXkgQmlvIFNlcmllcyJ9LCJkZXNjcmlwdGlvbiI6Ill1YmlLZXkgQmlvIFNlcmllcyAtIEZJRE8gRWRpdGlvbiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzYsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfSx7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciLCJzZWNwMzg0cjFfZWNkc2Ffc2hhMzg0X3JhdyIsImVkMjU1MTlfZWRkc2Ffc2hhNTEyX3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwiLCJiYURlc2MiOnsic2VsZkF0dGVzdGVkRlJSIjowLjAsInNlbGZBdHRlc3RlZEZBUiI6MC4wLCJpQVBBUlRocmVzaG9sZCI6MC4wLCJtYXhUZW1wbGF0ZXMiOjUsIm1heFJldHJpZXMiOjUsImJsb2NrU2xvd2Rvd24iOjB9fSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwiLCJiYURlc2MiOnsic2VsZkF0dGVzdGVkRlJSIjowLjAsInNlbGZBdHRlc3RlZEZBUiI6MC4wLCJpQVBBUlRocmVzaG9sZCI6MC4wLCJtYXhUZW1wbGF0ZXMiOjUsIm1heFJldHJpZXMiOjUsImJsb2NrU2xvd2Rvd24iOjB9fV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlEU0RDQ0FqQ2dBd0lCQWdJVURxRVJ3KzRSbkdTZ2d4Z1Vld0pGRVBEUlozWXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFESTdYbkgrWnZEd01DUVU4TThaZVY1cXNjdWJsdlZZYWFSdDNZYmF4bjlnb2RMeDVzd0gwbFhyZGdqaDVoN0ZwVmdDZ1lZWDdFNGJsMXZielVMZW1yTVdUOE4zV01HVWU4UUFKYkJlaW9WN1cvRStoVFpQLzBTS0pWYTNld0tCbzZVTGVNbmZRWkRyVk9SQWs4d1RMcTJ2NUxsajV2TWo3SnRPb3RLYTlKN25IUzhrTG16WFhTYWowU3dFUGg1T0FaVVROVjR6czFidm9UQVFRV3JMNC9KOVF1S3Q2V0NGRTVuVU5pUlFjRWJWRjhtbHFLMmJ4Mno2b2tWbHR5RFZMQ3hZYnBVVEVMdlkxdXNSM0RUR1BVb0lDbE9tNGNycHduRFJMVkh2alllUEdCQi8vcEV5enhBL2djU2N4andhSDFaVXc5Ym5TYkh5dXJLcWJUYTFLdmpBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlRxdDBLUW5neDdaSHJiVkh3RHVueE9uOWloWVRBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBcVFhQ1dNeFRHcVZWWDdTazdra0ptVXVlVFNZS3VVNitLQkJTZ3dJUm5sdzlLN0hlMUlweFowaGR3cFBOaWtLam1jeUZnRlB6aEltd0hKZ3h4dVQ5MFB3M3ZZT2RjSkpOa3REZzM1UFhPZnpTbjE1Y0ZBeDFSTzBtUFRtSWI4ZFhpRVdPcHpvWHZkd1hETTQxWmFDRFlNVDd3NElRdE15dkU3eFVCWnEyYmp0QW5xL05EVUE3YmU0SDhIM2lwQysvK05LbFVyY1VoK2o0OEs2N1dJMHUxbTZGZVF1ZUJBN24wNmo4MjVycURxc2FMczlUYjdLQUhBdzhQbXJXYU5QRzJraktlcnhQRWZlY2l2bEZhd3AyUldadnhyVnRuM1RWMlNCeHlDSkNrWHNORDA1ZENFclZIU0pJcytCZHRUVk5ZOUF3dHlQbW55YjB2NG1TVHp2V2R3PT0iLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVIzOG1xMjZTZjJzelZWMkJkRzZXRU43a3VXVXdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFSWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFOWTBXYjlvUG9Sb0tvUXlXUGFKcHoxMXZyV1RnNnpUdG1OajJWb0tSbnl2S0dScXB6YjgzdzVsNllBOTZVWWtZQkRRUDBpbE8yRFBlNndXcVZSNXpEZlJ6ZGNIOGJoK0w3ZEdHdmFlNmhSVFpoa0ZrQ3BYRHM0SGNja25yRGY4RkNsSjdIZTM5SmY0Mi9HMVFtMnp6OVdXbXJQWHRnaUsveDA1R2pzUWZHdURHMXpmNVFUVVVpZThsd3ltSzNUZmRPdk5lZUpBQVBlMnBuN0l0ZlJiK3JWck5XaUR6bFJuMnZObloyd1BvNHdIL1dKNmRoWFpHK3JNV1QrYTZCb2NnMVVmSXc2a2R1bkc0YlRwWnpzdmFjRll5UjBtcGYrRGVPbnBTV0FteXdKV0h2VGxmMllYeEZ5ZVhjVEFDZFFsY01OR0oyVmhaUTQ4eHRQNS9SQlAvOGtDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNoeTQyb2tpcWNUUzFpcWEvSFJXamtCbjRIL01COEdBMVVkSXdRWU1CYUFGT3EzUXBDZURIdGtldHRVZkFPNmZFNmYyS0ZoTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBbitSSElQYnRNRUROZFQxZzhIL1JpdEFrVWRMZ0F0MXRXR1dubGo5a25idjQvNEdsWDdDOXA0NWVmUE85L2FaTDZPVjFYUktCaTZLbXRCVzVLN251WUVuTXgvNUJxQlNiTFQ3cmhkdUM0OVRCZU1iOVBIZFhzVGxTVk5ZZWZyMWRHaWRyNGoweFZCUUxiMXJrbkRBYmRXRHpLZnZuYXlLTzhGcndlN0h4ODQzTUcvckorYzBYcnVVdmJmVlRDSExpSVdoTTdvTkRoTDh4b2I2eFVvOUtMS2NTTCtJdFlzTzMvOVdiOFE5R2pzcUw0RlhzRGNHMVNhWWg3S3BmdU1tT2l4cXpKWk8ybklpY1BZUmcxSTJTdWlVZllPNzB0bWRIY2JsK2tTUW1TWXQ3cnE0dmlJTGcyR3gzajlySVR1V1RqYmFVYVNTUXhnT21NU0h1eXpNQUMiLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVRuYmJHSVIyTkh2enFJS0ZBZVF3RzFYQmlzMHdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFRWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPc1hqM2swNEJhbjRUWWR0WktxRC9PUEp4eUR5YVBtQ0JVRlVpYVpJZ1R0ZVpuajNYMjVEaGdwWlpYc0M0RDB5ZEljcmxBNndOVUluT1JML0w5ekJiVEVJTUFWTUdvNmc3VUtBbWIyTUY2QUhibmhZSmQ5ZWlrdXBWTldTaEhOWU5jNEdCZE8xWU42QWZVcXZKaEhiZTNWNFNOTVBtQlJFS0pQVno3VGh3Z21nZ1RlOFdzMkswL3dzcXYyd1NFN3BiQ0JzVVpoSVg1MWJaTTNwcUR3SlBUbVJGRXZ0MC82dEc1ZU84RjNqMTRPWHFmRWhtam4xVnZ4S0RZUU9MWkF4Q3d3Z0MwUDRDZGZXdjN5OFBTUjhJMzU0aE8xWStHek5qdklxWDM4TktMeXd1SVlIRmVyT3hObHhFTUJ2RmhZQnVSdVlBa2tnVWFQcU42VUJoc0lMcnNDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNDb1JIaGl5Tm5iblhSV0lMNlpCWG9CWDlZVE1COEdBMVVkSXdRWU1CYUFGQ0FvVUNFYnBGcGI2RlBMblozRjVQeHNMM29mTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFDUUZhZkpJMS81V2c5Q0VFaW1FMVJQNTRSZ1F3VE5UT09Rc0xBQ1RlK3JJdGxGUXpDOVpEaHJWODI4eVg3anp5K0FBc3AzaXpLN1QxdGgyZGw3bSt0dTBzdzJQYS9vbGMwMm50NlB5SXczNDhnYUh6aEkxKzBLRTQ1cXh2RkRlTDJsTXhiUGZDWXZ5RUVhWXpqaVFFTFU1OTUxcFhHV3lLTWEvNGZMdE8rWktPWGhNdVZlcTRyWERQSTU0VzZKSE9pQWFpS2Rpdys1ZTNjMmt0L2pGSVF0TTZ2TVhnOUxORnpkakVUTnQyMFZYOVFldlJwRlpmdWNNRzl3Q2FRRG9GbFB6cFRNSktoUGV2L2ltSm1aWWhLZnIwbExjZW10cWpJeExBb3FaZE9ZZkhCZzYrdkFjZFBJL2lhdUdwVUF2N1grVUtObUR3aloyQmFINHNMd2hCMm0iLCJNSUlEUGpDQ0FpYWdBd0lCQWdJVVh6ZWlFREpFT1R0MTRGNW4wbzZaZi9iQndpVXdEUVlKS29aSWh2Y05BUUVOQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU1aNi9UeE04cklUK0Vhb1B2Rzgxb250TU9vLzJtUTJSQndKSFMwUVpjeFZhTlh2bDEyTFVoQlo1TG1pQlNjSVpkMVJueDFvZDU4NWgrL2RoSzdoRW03SkFBTGtLS3RzMWZPNTNLR05MWnVqejVoM3dHbmNyNGh5S0YwRzc0Yi9VM0s5aEU1bUdORDZ6cVljaENSQUhmcllNWVJERjRZTDBYNEQ1bkdkeHZwcEF5Nm5rRW10V21NbndPM2kwVEF1Y3NyYkU0ODVIdkdNNHIwVnBnVmRKcHZnUWppVEpDVElxK0QzNWh3dFQ4UURJdituR3ZwY3lpNXdjSWZDa3p5Q2ltSnVraFl5NktvcU5NS1FFZHBOaVNPdld5RE1UTXQxYndDdkV6cHc5MXUrbXNVdDRyajBlZm5POXMwWk93ZHdNUkRuSDR4Z1VsNVpMd3JyUGtmQzEvMENBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUI4R0ExVWRJd1FZTUJhQUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUU13RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCRFFVQUE0SUJBUUMzSVcvc2dCOXBaOGFwSk5qeHVHb1grRmtJTGtzMHdNTnJkWEwvY29VdnNyaHpzdmw2bWVQTXJiR0pCeUoxWG5xdUI1c2djUkVORnhkUUZtYTNtaW84VXBmMW93TTFacmVYckowbUFERzJCcGxxYkpueGl5WWErUjExcmVJRlRXZUloTU5jWktzRFpyRkF5UHVGakNXU1F2Sm1OV2U5bUZSWUZnTmhYSktrWEliNUgxWGdFRGx3aWVkWVJNN1ZvbEJObGxkNnBSRktsWDh1c3Q2T1RNT2VBRGwyeE5GMG0xTFRoU2RldVh2RHlDMWc5K0lMZnozUzZPSVlnYzNpcm9SY0ZEMzU0ZzdyS2Z1NjdxRkF3OWdDNHlpMHhCVFByWTk1cmg0L0hxYVVZQ0EvTDhsZFJrNkg3WGszNUQrV1ZwbXEyU2gveFQ1SGlGdWhmNHdKYjBiSyIsIk1JSURSekNDQWpHZ0F3SUJBZ0lVZXg5blQ5dndaTlhTNDgzTGRpWUdmdzJTalNvd0N3WUpLb1pJaHZjTkFRRUxNQzR4TERBcUJnTlZCQU1NSTFsMVltbGpieUJCZEhSbGMzUmhkR2x2YmlCSmJuUmxjbTFsWkdsaGRHVWdRaUF4TUNBWERUSTFNRGd3TVRBd01EQXdNRm9ZRHprNU9Ua3hNak14TWpNMU9UVTVXakFuTVNVd0l3WURWUVFEREJ4WmRXSnBZMjhnUmtsRVR5QkJkSFJsYzNSaGRHbHZiaUJDTWlBeE1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBdTFNZXZueTlkeU85WlVDMzlTb01oTGNSL0RYcnRGL2NpTTEydGNpeTJFWEFaNk1rcml2VnRDZkVWTTlYNklTVEVuQlA2dVNZWW92NnBwdjZPNkpoMk5IbVltNHcrSm5TNFZuQ1BVN21IQU1mVkkyTUdUVE1WT2V3MHhVc0c3c0lTSWtJRFVCbXVrOFlLOWM1emljOSt2RlFHTElrc2RYTzVpVkZJZ05HNTNjR1hENFpMWm9BUGl1MFBFb3p4QXFZSWFJNGd4S2hPQTNTOC9XOG1JV3N1Nm9meWo0R3ZrRkc2WjdreUYzMTA3UDdtd0ZITHJJM0VOYVBXTU9GY1RhR2EwZHcrL3ZWUndqUmNFWkJWc3V1VC84N2NrU3MwYTVwa3QzdlpCbGFZZVQ4cHpTcmVWN21vd2NJTTkwTDJpYUFUbFAwbnhtYUU2bk95VGJvakZWbDJ3SURBUUFCbzJZd1pEQWRCZ05WSFE0RUZnUVVTWEVoM3NhM2J0RHVybTRNTS9DN1MxbFJ1dVl3SHdZRFZSMGpCQmd3Rm9BVTZyZENrSjRNZTJSNjIxUjhBN3A4VHAvWW9XRXdFZ1lEVlIwVEFRSC9CQWd3QmdFQi93SUJBREFPQmdOVkhROEJBZjhFQkFNQ0FZWXdDd1lKS29aSWh2Y05BUUVMQTRJQkFRQjVHYzNoYWZ0cDdoS3NFWnNvK2kvWjVuUnVxZG16RzJXQ2xVb1JVcWJhUHlnbG5KRGpLUi9rZmdPbDZpYmJGL3p0aG0zS21YUTdIY0RJUDJ4TWRHN1UyTDJpbWJKUUhxUGYvaDJIcW9qYjRyWmd1ZSs2VzRrdFNSNWVsUjlMMXJZcUUvU0dZTTRpRUtvVlFTdjdSVDFyeEllV2lLc3cvVnh4aS9RT25zeDNGN3g4MENDWWdCNEUzeVF4OFZUVzQ0MGhURXdUQTFlTUhPaXgzMnRQdHl5SElhOFBWVklmVnBIUUpCYU1WdnY1MDhVRWp3a2JVMnJuamZ6b1NUTlM5QTVqVVE4bUJTdmU5NXJqQjBkbzk4RVUrRHhkQnFYMitINmk1d2xJQ0ZnemhkemNzbmU5aEdLVDZselRYNGNJZEpzclkyK3hsZUswRkZReTZsR0VWTEVlIiwiTUlJRFNEQ0NBakNnQXdJQkFnSVVVY21NWHpSSUZPZ0dUSzBUYjNnRXVaWVprQkl3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRRG01NTViV1k5V1crdE9ZMHJJV0hsZGgrYU5hbm9DWkNGaDdHazNZWnJRbVBVdzBoa1NHNnFZSFF0UCtmWnlTMzNWRXJ2ZytCUXFubXVtZ05oZnhGcmt3RVpFTGVpZEJjQzhDNEFnNG5xcWlQV3B6c3ZJMTdOY3hZbEluTE5MRmNaWS8rZ09pTjZaT1RpaE81L3ZCWk1iajlyaWFBY3FsaVltTkdKUGdUY01HYUVBeU16RU1OeTJubTZFcCtwalA1YUY2Z2kyMXQvVVFGc3VKMWoyUmoveW5NL1NkUnQrZWNhbDVPWW90eEhrRmJMOXZ2djJBMk92NUlUWkNsdzRiT1M5bnB5cFFpbU9aNVFBWXl0bVlhUXBXbC9wTVl6NnpTajhScWtWRE5FSkdxTmZUS0EyaXZMWXdYNmxTdHRNUGFwZzBKODRsOVgwdm9WTi9GcFM0VkNWQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJRZ0tGQWhHNlJhVytoVHk1MmR4ZVQ4YkM5Nkh6QWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQVlNemdMckpMSXIwT292UW5BWnJSSUd1YWJpSFNVS1NtYkxSV3BSa1dlQXRzQ2hERUhwWGNKL2JnRE5LWVdvSHFROHhSVWpCNEN5ZXBZZXZjM1lsckc4bzd6SHhwZlZjYW9MNVNldUprekh4S240YlRhU3A5K012d2FtbnA2NGtaTWlOYkZMa25mUDlrWUtvUkhrTVdoZVJKMVVzUDF6NFNjbWtDZUlMZnNNczZ2cW92cWpXQ2xGc0pwQmNzbHVZSFdGN2JCSjFuNFJ3ZytBVEVvcFk0SWdHdjZadndjK0E5citBVDJocXBvU2tZb0FsK0FOWXdnc2xPZjlzSmUwVitUQTlZWS9VbGFCbVBQVGQwLy9yOXd2Y2VQV1prUGpLb0FDL3pVTmhmRGJoNExWOEdIczNseVgyWG9tTC9MTmM4Sll6eUlhREVoR1F2ZW9QaGgvdHIxZz09Il0sImljb24iOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJpY29uRGFyayI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsInByb3ZpZGVyTG9nb0xpZ2h0IjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwicHJvdmlkZXJMb2dvRGFyayI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIkZJRE9fMl8wIiwiRklET18yXzFfUFJFIiwiRklET18yXzEiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwibGFyZ2VCbG9iS2V5IiwiY3JlZEJsb2IiLCJtaW5QaW5MZW5ndGgiXSwiYWFndWlkIjoiNzQwOTI3MmQxZmY5NGUxMDlmYzlhYzAwMTljMTI0ZmQiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsInV2IjpmYWxzZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImxhcmdlQmxvYnMiOnRydWUsImJpb0Vucm9sbCI6ZmFsc2UsInVzZXJWZXJpZmljYXRpb25NZ210UHJldmlldyI6ZmFsc2UsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjpmYWxzZSwiYWx3YXlzVXYiOnRydWV9LCJtYXhNc2dTaXplIjoxNTM2LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjgsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4LCJ0cmFuc3BvcnRzIjpbInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi04fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotMzV9XSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5Ijo0MDk2LCJtaW5QSU5MZW5ndGgiOjQsImZpcm13YXJlVmVyc2lvbiI6MzI5NDc2LCJtYXhDcmVkQmxvYkxlbmd0aCI6MzIsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjoxLCJwcmVmZXJyZWRQbGF0Zm9ybVV2QXR0ZW1wdHMiOjMsInV2TW9kYWxpdHkiOjIsInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjoxMDB9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wMi0wMSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzYsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWXViaUtleSBCaW8gU2VyaWVzIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNTAyMDEwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wMi0wMSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzZ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDItMDYifSx7ImFhZ3VpZCI6ImJiNjZjMjk0LWRlMDgtNDdlNC1iN2FhLWQxMmMyY2QzZmIyMCIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiYmI2NmMyOTQtZGUwOC00N2U0LWI3YWEtZDEyYzJjZDNmYjIwIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ik1ldHRsZXNlbWkgVmlzaHdhYXMgSGF3ayBBdXRoZW50aWNhdG9yIHVzaW5nIEZJRE8yIn0sImRlc2NyaXB0aW9uIjoiTWV0dGxlc2VtaSBWaXNod2FhcyBIYXdrIEF1dGhlbnRpY2F0b3IgdXNpbmcgRklETzIiLCJhbHRlcm5hdGl2ZURlc2NyaXB0aW9ucyI6eyJlbi1VUyI6IkhhcmR3YXJlIEF1dGhlbnRpY2F0aW9uIHdpdGggTWV0dGxlc2VtaSBWaXNod2FhcyBIYXdrIEF1dGhlbnRpY2F0b3IgdXNpbmcgRklETzIifSwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MTAsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6MCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjAsImJsb2NrU2xvd2Rvd24iOjB9fSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDZ1RDQ0FpaWdBd0lCQWdJVUo5S0U4c1VlL2F1Z1FLNW5aZktBdW9ZdXZrWXdDZ1lJS29aSXpqMEVBd0l3Z2FBeEx6QXRCZ05WQkFNTUprMWxkSFJzWlhObGJXa2dWbWx6YUhkaFlYTWdTR0YzYXlCQmRYUm9aVzUwYVdOaGRHOXlNVHd3T2dZRFZRUUtERE5OWlhSMGJHVnpaVzFwSUZONWMzUmxiWE1nWVc1a0lGUmxZMmh1YjJ4dloybGxjeUJRY21sMllYUmxJRXhwYldsMFpXUXhJakFnQmdOVkJBc01HVUYxZEdobGJuUnBZMkYwYjNJZ1FYUjBaWE4wWVhScGIyNHhDekFKQmdOVkJBWVRBa2xPTUNBWERUSTFNRFl5TURFeE16QXdPVm9ZRHpJd05UVXdOakV6TVRFek1EQTVXakNCb0RFdk1DMEdBMVVFQXd3bVRXVjBkR3hsYzJWdGFTQldhWE5vZDJGaGN5QklZWGRySUVGMWRHaGxiblJwWTJGMGIzSXhQREE2QmdOVkJBb01NMDFsZEhSc1pYTmxiV2tnVTNsemRHVnRjeUJoYm1RZ1ZHVmphRzV2Ykc5bmFXVnpJRkJ5YVhaaGRHVWdUR2x0YVhSbFpERWlNQ0FHQTFVRUN3d1pRWFYwYUdWdWRHbGpZWFJ2Y2lCQmRIUmxjM1JoZEdsdmJqRUxNQWtHQTFVRUJoTUNTVTR3V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVMxWElaTVhXR0tkRlB3dDY4VEhLQmNYalYyYXZYbjd1Sk1DSUJsZTU4UDdpTjM1VGxkRTByWVJTNFFQUGl6b1J1bkVYSDZYRU4ydU55QWt3bzFYczRIb3p3d09qQU1CZ05WSFJNRUJUQURBUUgvTUFzR0ExVWREd1FFQXdJQkJqQWRCZ05WSFE0RUZnUVVCak9rWG9pb0RHeVA2a05JM2VIWFJRbzh4N293Q2dZSUtvWkl6ajBFQXdJRFJ3QXdSQUlnZmQ4WG1SYkhXZ1drVzNHa09CZ2UrZGtJRDF1MUw0aHpaRkdUWVNzanRPTUNJQTA4ME9oNGlYcUdFaGhLM2h0RW9XSy9mU3I0TVBlaElNRzMvYmoyZ0tvKyJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LC85ai80QUFRU2taSlJnQUJBUUFBQVFBQkFBRC8yd0NFQUFZRUJRWUZCQVlHQlFZSEJ3WUlDaEFLQ2drSkNoUU9Ed3dRRnhRWUdCY1VGaFlhSFNVZkdoc2pIQllXSUN3Z0l5WW5LU29wR1I4dE1DMG9NQ1VvS1NnQkJ3Y0hDZ2dLRXdvS0V5Z2FGaG9vS0Nnb0tDZ29LQ2dvS0Nnb0tDZ29LQ2dvS0Nnb0tDZ29LQ2dvS0Nnb0tDZ29LQ2dvS0Nnb0tDZ29LQ2dvS0Nnb0tQL0FBQkVJQUlBQWdBTUJFUUFDRVFFREVRSC94QUdpQUFBQkJRRUJBUUVCQVFBQUFBQUFBQUFBQVFJREJBVUdCd2dKQ2dzUUFBSUJBd01DQkFNRkJRUUVBQUFCZlFFQ0F3QUVFUVVTSVRGQkJoTlJZUWNpY1JReWdaR2hDQ05Dc2NFVlV0SHdKRE5pY29JSkNoWVhHQmthSlNZbktDa3FORFUyTnpnNU9rTkVSVVpIU0VsS1UxUlZWbGRZV1ZwalpHVm1aMmhwYW5OMGRYWjNlSGw2ZzRTRmhvZUlpWXFTazVTVmxwZVltWnFpbzZTbHBxZW9xYXF5czdTMXRyZTR1YnJDdzhURnhzZkl5Y3JTMDlUVjF0ZlkyZHJoNHVQazVlYm42T25xOGZMejlQWDI5L2o1K2dFQUF3RUJBUUVCQVFFQkFRQUFBQUFBQUFFQ0F3UUZCZ2NJQ1FvTEVRQUNBUUlFQkFNRUJ3VUVCQUFCQW5jQUFRSURFUVFGSVRFR0VrRlJCMkZ4RXlJeWdRZ1VRcEdoc2NFSkl6TlM4QlZpY3RFS0ZpUTA0U1h4RnhnWkdpWW5LQ2txTlRZM09EazZRMFJGUmtkSVNVcFRWRlZXVjFoWldtTmtaV1puYUdscWMzUjFkbmQ0ZVhxQ2c0U0Zob2VJaVlxU2s1U1ZscGVZbVpxaW82U2xwcWVvcWFxeXM3UzF0cmU0dWJyQ3c4VEZ4c2ZJeWNyUzA5VFYxdGZZMmRyaTQrVGw1dWZvNmVyeTgvVDE5dmY0K2ZyLzJnQU1Bd0VBQWhFREVRQS9BUHArZ0FvQUtBQ2dBb0FLQUlMMjd0N0cya3ViMmVLM3Q0eGw1SlhDcW85eWFhaTVPeUUyb3E3T0Z1Zmk5NFFpdUdoZ3ZwN3NyOTVyYTJra1VmampuOEs2bGdhelYyckhPOFhTWFUxZkRmeEQ4TWVJYmdXK25hcEY5clBBdDUxTVVoUG9Bd0dUOU0xRlRDMWFhdkphRnd4Rk9ic21kWlhPYkJRQVVBRkFCUUFVQUZBQlFBVUFGQUJRQXlXV09HTnBKblNORjVMTWNBZmpUU2IyQnV4VE9yNmYvWk0ycHJlUVNXRUtPN3p4dUdRQmM3dVI2WU5WeVM1dVcycFBPcmMxOUR5U2JTdFcrSk9sMy9pRy9HTFpZWGZSTkhkOEk1QU8yYVlkeVQwQjQvRHI2Q25ERFNWTmZOL29qaWNKVjA1djVJNTN3YjRyZlZmaGpyT2lYbXZXZGhxMHhLV0NxcXhTYlFBU21Jd0FNa01vNzgvU3RxMUhrclJtbzNYVXlwVmVhazROMmZRd3RSbG5zZmgvNGNoMURTWU5YYlZua25odUhXUXpRQXNBc0VVZzUzZFc1eU9laHJXS1Vxc21uYTM5WFptN3hweFRWN25zUGdYVjlWMEx4QVBCL2ltWjdtUjR2TzB1K2srOWNSanJHLzhBdHIvVDZaODZ2Q05TSHRxZnpSM1VweWhMMlUva2Q2K28yVWQ4TEtTN3QxdkNvY1FOSUE1VWtnSGIxeHdmeXJrVUpOYzF0RHA1bGUxOVMzVWpDZ0FvQUtBQ2dBb0FwNnZxVnBvK21YR29hak1JYlMzVGZKSVFUdEgwSE5WQ0RuSlJqdXlaU1VGelBZOG0xajQ5YVFzdmtlSHRLdnRVbkp3dVI1YXNmWWNzZnlGZWhETFo3emRqamxqbzdRVnpOL3QzNHUrS3YrUVpwVVdoMnJkSkpJeEd3SDFreTM1TFYrendsTDRuZGtjK0pxZkNyRWtQd1cxdlc1Rm04YWVMTG01UFV4UWxwTWZSbk9CLzN6U2VQaERTbEN3MWc1ejFxU05uNGk2SmIrRi9oUmFlR3RKa21GdmRYc05tSGtiTGtTUzcyNUFIWEI3ZEt6dzlSMWE3cVM2SnN1dEJVNktweDdtSDR6K0g3K0hOVTFYeFkzaUc3MC9UWW84Ui9ZVllYQ2Jnc2FSOWNiQWNmaFd0SEUrMGlxWExkK2V4blZvZXpicWMxa2NHSkYxTFh2RE5oNHlua3RkS2pNb2U2ZTBOazdmSmtNMGgrOGNoZWZmM3JxdHl4bEtrdGZXNXovRktLcWJmY2F1bVdtbndlUEpvL0RTYTlyK2lhVExhM2RyRllUaVdOWkFNL1B1N1ozQVl4M3FKU2s2WDd5MFc3clV1S2lxbnVYYVZpM3J2eEIxSHhGcWxwZFhla2ZZSmRFMU9LV09SUTIrTldrMk5ESm5qY1JnOGVsVEREUnB4YVR2ekwrbU9kZVUybTFhelBVZmlMOEx0TThiMzhlb1hONWQybDlGQ0lVZUxhVjJna2pLa2VySG9SWEJoOFpLZ3VWSzZPeXZoWTFYek4yWnhYL0NBZkVyd3Z6NFk4VUMrdDArN0JNNUhIb0VmY28vTVYxZldjTlYvaVFzYy9zSzlQNEpYQWZGRHgxNFpPM3hoNFRhV0ZlR3VJVmFNZlhjTnlIOUtQcWRDci9DbUgxbXRUL2lST3c4SC9GL3cxNG12cmV3amE2czcrZHRrY054SHd6ZWdaY2o4OFZ6VnNEVnBMbTNSdlR4ZE9vN2JNOUdyak9vS0FDZ0R6LzQ5U21MNFZhMFYvaThwUHpsU3V2QXE5ZUp6WXQycE1sK0MrbTJscDhPOURtZ3RZSTU1cmNQSktzWURPU1NlVDFOTEdUYnJTVFk4TEZLa21qdTY1VG9DZ0R5ejQxYXJaV0dzZUNVMVdZUVdDNmw5c21rS2xnQkVCamdBbnExZDJEZzVSbnk3MnQ5NXg0cVNVb1gydVdQaU5ZM1B4SThCV3A4RzMwVTFwTk9IY016UkxPaWtnakpHZUdBT0NPMzBwWWVTdzFWKzFXbzY4WFhwcjJiT0s4V0NYVS9FM2cvd1ZyZXRSR1MxaWkrMnpHMjgzZGNubEUza0EvTW94MTU2a1YxVXZjaE92Q08rM29ZVlBlbEdsSjdmbUh4VHNQOEFoWEdvcHF2aDNVOVF0WDFXN016MmtPeU9BTEdBV1hwNzRBOXpTd3N2cks1SnBPeTM2aGlJK3dmTkI3bllmR0c4ajFINGJhYmZSSTZSM1YzWnpLcmpEQU1RUUQ3ODF6NFNQTFdjWDBUTjhTK2FrbjZIcUZjSjFoUUFoR1JnOUtBUEJ2aTNaV3VtZkYzd0xjV050RGJ2UGN4ZVlZa0M3ejV5akp4MU9EWHE0U1RsaDZpYi9xeDUySmlvMW9OSHZWZVVlaUZBQlFCNTc4Zkl6SjhLdFp4Mk1MZmxLbGRtQi9qeE9iR2Z3V2FQd2ZjU2ZETHc4UjJ0Z3Y1RWorbFJpLzQwaXNOL0NpZGpYTWJoUUJEZFJyTEM0ZEZmNVRnRVo3VTR1ekUxZEhpdndxOGY2UjRaOEQyR2xhdERxU1hrRFM3MVN6ZGdNeU13NXg2RVY2V0t3MDZ0UnpqYTNxY09IcnhwMDFHVjcraDEzaHVEd1o0NDhRU2VKOVBzNUpOVnNaRmplU1pYakt1QjhwS0U0SkE2SEhhdWVvNjFDSHNwUFJtMEZTclM5b2xxanVOUTArejFHSll0UXRMZTZpVmc0U2VNT0FmWEJIV3VhTXBSK0YyT2h4VXQwY0g4ZGdCNElnQUFBR29XMkFQOSt1ckEvd0FSK2pPYkYvQjgwZWpWeG5VRkFCUUI0YjhhZjNueFk4QVJEcUxpTnY4QXlPditGZXBnL3dDQlVmOEFXeDUrSy9qUS9ycWU1VjVaNkFVQUZBSEgvRjYzKzFmRFR4REdCbkZxWlA4QXZraHY2VjBZUjJyUk1NU3IwcEdiOEJMajdSOExOSEdjbUl5eG44Skcvb1JXbVBWcThpY0c3MGtlaFZ4blNGQUJRQVVBZU42RHI4M2hEeFo0eFcrOFArSUxwTDNVak5ESloySmtSbHgxemtmcFhwVktTclU0V2t0RjFad3dtNlU1WGk5WDJPaC80V2piL3dEUXErTHYvQllmL2lxeCtwditlUDNtdjFsZnl2N2psL2lMNHFsOFc2SGI2WHAzaHJ4TEZPYnlDVGRjYWV5b0FyYzVJSnJmRDBWUms1U2t0bjFNYTFWMVlxS2k5K3g3WFhtSGVGQUJRQjRkOFFmOU8vYUc4SVdvNThpS09RajZOSS85QlhxWWYzY0pObm4xdGNURkh1TmVXZWdGQUJRQm0zbjluYTFhNmhwVDNFTXdlTm9MbUtPVUYwVmdRUVFPUWV0V3VhRFU3RXZsbW5FeXZDV202QjRTMG00MHpTcjJKYmExa01rd2x1Vll3bHY3eC9oNmQ2MHF6cVZwYzBscXlLY1lVbHl4WnFSZUlOR21sU09MVnRQa2tjaFZSYmxDV0o2QURQSnJOMHByVnBsS3BCOVJyK0l0RVIyUjlZMDFXVTRJTjBnSVBwMXAreW4yWWUwaDNIU2VJTkdpMmVacStucHZYY3U2NVFaSHFPZWxKVXB2b3c5cEh1T1RYTkplM2U0VFZMRm9FWUswZ3VFS3FUMEJPY0EwZXpuZTFoODhiWHVYbmtTT05wSGRWalViaXhPQUI2NXFMZENqTkhpUFF5UUJyT21rbnQ5cVQvR3RQWlQvQUpXUjdTSGRFMm9heHB1bXZHbW9haFoycnlmY1dlWlVMZlRKNXBScHlsOEt1TnpqSGRrbDVxVmpaUnh5WGw3Ylc4Y24zR2xsVkEzMEpQTkpRbExSSUhKTGRrVnJyV2wzWmNXdXBXVTVSUzdpT2RXMnFPcE9Ed1BlbTZjbHVnVTR2WmxpQzl0YmkwKzFRWE1FdHRnbnpra0RKZ2RUdUhIRlM0dE96V28xSk5YUnlkem8zaFQvQUlTcTE4WTNHb1FDOUttT0dacnRSRXdDbER0NXdjQW44YTZGVXE4am9wYWVoaTRVK2YycmVwMTFwY3dYa0N6Mms4VThMZmRraWNNcDdjRWNWenROT3pOazA5VVRVaGhRQjhzWDJ0YXg0WCtLUGkveEJvOFBudzI5Mjl0Y3huT0NKUzJ3a2VnWlIrT0IzcjNZMDRWYUVLYytxL0k4aHpuVHF5bkUyUGcvcEU5emMrUDdEeERhUGYzYjI4YjNGc1pDclN5WmQ5cFljZ2xzRDYxbmk1cEtuS0RzaThOQnR6ak5YTkh3YjRhdFg4VWFiNS93d3ZOTVJKaEo5c2UvbGRZU3Z6QmlEd2VRT0ttdFdmSTdWYi9JcWxUWE9yMDdmTWk4ZStCZkQxcDhVL0NlbjI5aHN0TlRlUnJ1UHpYUG1IUHJuSS9ERkZERVZIUW5KdlZiQldvUVZhTVV0R2FIeHk4QytIZEc4QnRxR25XSGszZHNZYmVKL05kdHFidW1DY0hxYWpCWW1wT3J5eWVqS3hkQ0VLZk1rVS9pYjRZMG53NThHWVgwZTErenRlejJzczU4eG0zdHNQUEpPT3A2VmVHcXpxWWozM3RjbXZUalRvZTZ0N0h1VTFyRGZhTzlwZFIrYmJ6d0dLUk00M0tWd1JrZXhyeTAzR1YwZWhaT05tZUFhWjRYdExqVnJXM3VQaFBmVzl2Sk1xUE8yb3lrUnFXd1dJOWh6WHJTck5SYlZYOER6WTBrNUplei9FWHhsb013K0lIaUhVSnRIZzhYYWU2aEhpdHJ2L1NMRVl4allwSlVqQnhrSHA5YUtOUmV5akZTNUg2YU1Lc0g3U1VtdVpma2E5dFlhSHJQd2swZVRTZEIxTHhQRlozTHhSMnR4Y21PYUV0a3RrcHdRUGx4eDBJck55bkN2SlNrbzNORW9Ub3JsWE5ZbThIYUhiV21pK0tyei9oQ3JqdzNjSnBrc1NTUzNUeSthckt4WUFOMHh0V3ByVkc1UVhQemE5aDBvSlJrK1RsMFBMdEExRHhQYmVDMjhOMk1aYXgxeEd1b3BjbjkzSEdYRXc5czdCbjIvd0I2dTZwQ2s2bnRIdkhUL0k0NFNxS0hJdG4vQUV6cXJ6VGJTNi9abXNiNmVFUGRXY3JtQjl4R3pmYzdXNDZISTlhd1Uyc1k0clovNUd6aW5oVTMwL3pQZC9BdW0ybWsrRWRLdGRQaEVOdUlGazJBay9NdzNNZWZVa212S3J6YzZqY2owYVVWR0NTTjZzalFLQU9ZOE8rRXRQMFh4RHIycVdzODB0enFzaXl6eHlNcFZDQ3hHMEFaSDNqMXpXMDhRNmtZdy9sTW9Vb3dsS1M2bEkvRDJ3RjM0bHVZYi9VWUo5ZDIrYzhVaXFZdHB6OGhBeVB4elYvV3BXaW1sN3BQMWVONU5QYzR2UmZDdWd3K0liVHl2RlBpbVF4WEFNYnpULzZQTTZIT3pkdHdRY0VlL05jMzl1VXFrdlpLSzEwdmJUNU01NDA0Y3k5NS9vZWdhNTRZMHpXUEUramE1Y1hjaVhXbGxqRWlPdXhzL3dCN0l6K1JGYVF4WEpDVUZhek9tZE9NNXFiZXhMNDIwRFR2RjJnUzZUcUYwOFVFanE1ZUYxREFxY2pxQ0tWSEVleG56eGFIVmhHckhsYkt2aXp3bnBmaWJ3dEJvTjVlU3hXc0pqS3ZFNmgva0dCbklJL1NxcFlyMlUvYUsxeFZLVWFrT1JzeE5HK0d0aHBkeEpNbmlmWFp0OEVrRzJXOVVoUTZsZHc0NmpPUjdpdFo0OVRWckl6amg0eGQrWmxKZmhOcDRJUC9BQWwvaVRqL0FLZjEvd0RpYXIrMFYvTEVuNnJIK1ovZVhmRW53eTBiVjlhdU5VczlZMURTYnU1WGJjbXl1QW9tOTJIcWUvWStsVFR4N2hIbGRtbDNLbmhvU2x6SjJaSmMvRG5RL3dEaEh0TzBhdzFmVU5OdDdKbmZmYTNTbzhyTmpKYzQ1NmUxU3NmNzduS3piQjRlSEtvSjJzTG9Idy8wN1NHdnMrSTlXdlV1N1NTMGRMcTdWMVZYeGxnTWZlR09ENzBUeHluYlJLenVPRkNNYis4M2MydEE4T2FWb3ZnOWZEdHZkdEphTEZMQ0paSFV5WWtMRThnWS9pOUt6cVlwVHFlMGJWeTRVNHdoeUpuT1gzd3cwSzc4SmFiNGVPczZoSFkyVFNPUExuUUdVdTI3NS9sd2NIcHhXMGN3dFVkVFM3TW5ob09DaGZSSFplRDlHdC9EK2d3YVphWHR4ZXhRRnNTM0VnZCtUbkJJN0RPQldGU3Q3YVRucDhqZWxCUWp5cDNOcW9OQW9BNWZVdjhBaVZlTTdHOUhGdHFTZlk1dlFTRG1NL1U4aXZQcS91Y1ZHcDBuby9Yb1l5OTJvcGQ5Qzk0djFCOU4wRzRrdCticVhFRUNqcVpIT0Z4K2Vmd3JYRzFuU290eDNlaTlXVlZseXgwT0RidzFwK2wzRThPclhiM0ZyWVd5WFVzYXc3V2tYTEJVMzd1Zm16MkhVYzE0N3dWT2pKeHF5dW9xNzAzOHIzN25MN0tNWGFUMkxpK0gwa1VQSDRHaTJNTXJ1MUVBNDl4V2l3aWVxdy8vQUpNVjdOUDdINGxhOThQVzBXdldjTnY0YmltZVN4TXN0bjlyMmhHM2daMzU1eDAvR29xWVNDclJqR2xlOGJ0WDgrNG5UU2trbzlDMG1qNlhiWE5zbXMrRWxzNExpVVFyTWwzNW9Ebm9DQWNqUHJXaXc5R0VrcTFDeWJ0ZTk5UjhrVTF6UXNhT2plSFBEV29SWHBrMGVLQ1MwdUhna1V5dWNiZjRzNTZFRUd0NkdEd3RWU3ZUdHl0cmRsd3BVNVgwMklQRE9rZUU5ZTB1VytpMGxJVWlrZEdEU01jQWNnOWU0SU5SaGNQZzhUVGRSUXRiellxY0tVNDNzVXJiUmJPK3NMVzgwL3dkRE5ET2hjRnI0b1FOeEE0UHFBRCtOWlJ3MU9wQ002ZEM2ZjhBZUpWT01rbkdINGo0ZEYwcUM5dFlkWjhKcFpSWE1naGptVzdNbzNub0NBZU00NjA0NGFqR2FqV284cWVsNzMxR29SVFNsQzF5ZS84QUM5dkRlU1IyZmc2QzVnVS9KS2IvQUdidndQU3JxWUdNWk5Rb0pyL0VPVkpKNlEvRVpZYU5vUDJ5UzAxbncydW5UaUZyaEQ5b01xT2kvZXdRZW80NHFhZUd3L000VnFYSzdYM3ZvS01JWHRLTml0YmFOYTMxdkhjMkhnbEpMV1ViNG5rdjlqTXA2RXJuaW9qaG9WRXAwOFBvOXZlRW9LU3VvYWVwMm5oVFRvOU8wMHJIcGlhYThqbG5nV2J6Um5vRHUrbGVyZzZLcFFzb2N0K2w3blJTaW9yYXh0VjFtZ1VBWS9pelRtMVRRYm1DSGk1VUNXQmgxRWk4cmo4Umo4YTVjWlJkYWk0cmZkZXFNNnNlYUxSeituYWd2aXZXOUlkQm0zc1lCZHpyMkU3ZktxbjNHR05jVkt0OWRxd2EyaXJ2MTIvQXlqTDJzbDVhL010M2xoRnFmaXpWN0s1ejVVK214SXhYcVBuZmtWcE9sR3RpYWxPV3ppdnpaVGlwVGNYMkZuMDN4SlpXanZGNGdoa1NCQ3lyTFpMbGdCMEpCL1duS2ppcWNicXJ0NUE0MUlyNHZ3R2FQZXRxWGlYUzcxMENOY2FQNWhVZEFTNm1wb1ZmYTE0VkgxaCtxQ011YWFma1dmSDMvSU5zUCt3aGIvOEFvZGFaai9Eai9pWDVqcjdMMVJoZUtyaVRTZFkxZTF0OGg5YXQ0eEIvMTEzQ05zZSsxZ2Z3cmp4azNRcXpoSC9sNGxiMTJmNEdWUnVFbWwxSWRkVStIcDc3U3JJRUxxdHBERGJEL3BvQ0ltL0hhUWZ3cWNRdnFybFJoOXRKTDEyZjRDbXZaM2l1cS80QnNYZW5MZCtJTFBRM251SXRPdGRQRWdpaGtNWmR0MndaSTVJQUhUM3JxblJVNjBjTzIxRlI2YWVSbzQza29kRWlsNGk4TzJXbHk2TlBhdGRHUTZsQXVKTGgzR04zb1Q3VmppY0hUb3VuS043OHk2dGsxS2FqWnJ1aTlIcHFlSU5jMWs2amMzWmp0SmxoaGlpbmFOVkd3RW5DbmtrbnJXeW9yRlZhbnRHN1Jka2s3ZENsSDJrbnpkQ0JOQ3M5UDhZV01FSm5lTzRzN2haQkxNMG5HVUhHVHgxTlFzTFRwWW1NWTMxVDNkK3d2WnFOUkpkbVhMZlFOY3NMZU8xMDd4QXFXc1EyeEpMWnE3S282QW5QTmF4d21JcHBRcDFkRnRkRktuT0t0R1docCtFOVNtMVhSSXJpNkNDNER2RTVRWVZpckZjajY0cm93ZGFWYWtwUzMxWDNNdWxKeWpkbXhYVWFCUUFVQVoya2FOWmFRMTIxbEdVTjFLWnBNblBKN0QwSHQ3MWhRdzFPaHpPQzNkeUlRVUwyNmlYZWoyMXpjM053WG5qbXVJVmdaNHBDcENna2pCSFE1TktlR2hPVGxyZHF3T0NiYk14L0I5bElwU2ErMWFXTnVHUjcxeXJEMEk5S3dlWFUzbzVTYTlXUjdCZFcvdk5hSFNyV0M5aHVvVUtQRGIvWmtWVDhvVElPTWZnSzZZMElSa3BwYkszeU5GQkozUS9WTk9nMU9HS0s2REZZNVVtWGFjZk1weUtkV2pHc2twZEhmN2dsRlMwWkhxR2sybC9mV04zY29XbXNuTHhIUEFKSGYxN0g4S1ZURHdxempPUzFqc0VvS1RUZlFXLzBxMHY3eXh1YmxDMHRtNWtpSVBRa1k1L1EvZ0tLbENGV1VaeVdzZGdsQlNhYjZFV3M2SFo2czhVbHg1MGM4V1FrMEVoamRRZW95TzFUWHd0T3UwNWJycXRHS2ROVDNLMWw0WHNiVzhpdW5sdmJxV0k3by90VncwZ1Erb0I0eldkUEEwNFNVMjIydTd1VEdsRk80N1V2RGRqZjNyWGUrNnRybHdGZDdXZG9qSUIwM1k2NHAxY0ZUcVM1OVUvSjJIS2xHVHVMcDNoeXlzWG5rUjdxVzRsak1Sbm1uWjVGVTlsSjZldkZGTEIwNmJiVjIzcGR1N0NOSlJLcDhJMnBCQjFIV0NEMiszUFdmOW53L21sOTdKOWl1Nys4MjlPc2JmVHJLSzBzNHhIQkVNS281L3lhNjZWS05LQ2hCV1NOWXhVVlpGbXRCaFFBVUFGQUJRQjRWNCswN3hGOE92RVk4VmVIYm02dmREZHY5S3NwWldkWWdUeU1FbkNuc2Y0VDdkZlZvVHA0bUhzcWl0TG96ejYwWjBKZTBocWoxVHdWNHQwdnhocENYK2t6WnhnU3d0OStGdlJoL1hvYTRLMUNWR1hMSTY2VldOV040blExaWFoUUFVQUZBSGszeFcrSmgweVUrSGZDWU41NGl1RDVSTVEzL1p5ZU1EMWYyN2RUNlY2R0Z3bk4rOHFhUlJ4NGpFOHZ1VTlXYnZ3bzhIWHZoclNqY2E3ZjNON3JGMEFaZk1uYVJZUjEyTGs5ZlU5L3BXV0tyeHF5dEJXU05NUFJkTlhrN3M3eXVRNkFvQUtBQ2dBb0FLQUNnQW9BWkxHa3NUeHlvcnh1Q3JLd3lDRDFCRkNkdFVEVnp4SHhkOE5OWDhMYXUzaVQ0YVRQRklNdE5wNm5PUjFJVUhobC93QmcvaDJBOVNsaTRWWSt6eEgzbm4xTU5LbkwybEg3amQ4Qi9HTFN0YWRkUDhRcU5HMWhUc1pac3JFN2V4UDNUN04rWnJLdmdaUTk2R3FOS09MalAzWjZNOVRVaGxES1FRZVFSM3JnT3dvNjFyR25hSFl2ZWF0ZVEybHN2VjVXeG4ySGNuMkhOWENuS283UlZ5WlRqQlhrenhYeEI4U05mOGVYNzZGOE43T2VPQnZsbTFCeHRZTDY1LzVaajMrOGUyRFhwVThMVHc2OXBYZnlPQ2VJbldmSlJYek81K0dQdzAwN3daRDlxbVlYdXR5RDk3ZHNQdTU2cWdQUWUvVS9wWExpY1hLdm90RWRGRERScGE3czlBcmtPa0tBQ2dBb0FLQUNnQW9BS0FDZ0FvQUtBT084Y2ZEcncvNHdRdnFOcjVWN2pDM2NHRmtIMTdNUHJtdW1oaXFsSDRYcDJNS3VIaFYzV3A1ci93QUlUOFMvQlJNUGhEV1JxT25OOHF4U01vTVlQZlpKa0RIK3lmd3J0K3NZYXZyVmpabkw3R3ZTMHB1Nkxta2ZCdlV0YnZrMUw0aWE1UGZUZGZzME1oSUhzWFBRZXlnZldwbmo0d1hMUWpZY2NIS2I1cXJ1ZXdhTG8rbjZIWUpaYVJadzJsc25SSWx4aytwOVQ3bm12T25PVlI4MG5kbmRHRVlLMFVYNmdvS0FDZ0FvQUtBQ2dBb0FLQUNnQW9BS0FDZ0FvQUtBQ2dBb0FLQUNnQW9BS0FDZ0FvQS8vOWs9IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6ImJiNjZjMjk0ZGUwODQ3ZTRiN2FhZDEyYzJjZDNmYjIwIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6dHJ1ZSwidXAiOnRydWUsImNyZWRNZ210IjpmYWxzZX0sIm1heE1zZ1NpemUiOjEyMDAsInBpblV2QXV0aFByb3RvY29scyI6WzFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjIwLCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjEyOCwidHJhbnNwb3J0cyI6WyJ1c2IiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fV19fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wOC0xMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ik1ldHRsZXNlbWkgVmlzaHdhYXMgSGF3ayBBdXRoZW50aWNhdG9yIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNTA4MTIwMDQiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblByb2ZpbGVzIjpbImNvbnN1bWVyIl0sImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDgtMTIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MX1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNi0wMi0xMSJ9LHsiYWFndWlkIjoiYzRkZGFmMTEtMzAzMi00ZTc3LWIzYjktM2EzNDAzNjliOWFkIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiJjNGRkYWYxMS0zMDMyLTRlNzctYjNiOS0zYTM0MDM2OWI5YWQiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiSElEIENyZXNjZW5kbyBGdXNpb24ifSwiZGVzY3JpcHRpb24iOiJISUQgQ3Jlc2NlbmRvIEZ1c2lvbiIsImFsdGVybmF0aXZlRGVzY3JpcHRpb25zIjp7ImVuLVVTIjoiSElEIENyZXNjZW5kbyBGdXNpb24ifSwiYXV0aGVudGljYXRvclZlcnNpb24iOjI2MjE0NCwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9LHsibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQy9qQ0NBcVNnQXdJQkFnSVVJUCtWUXVxLzFSdnNZb0hsdUJBaEVZUHZnVGd3Q2dZSUtvWkl6ajBFQXdJd2F6RUxNQWtHQTFVRUJoTUNWVk14RXpBUkJnTlZCQW9NQ2toSlJDQkhiRzlpWVd3eElqQWdCZ05WQkFzTUdVRjFkR2hsYm5ScFkyRjBiM0lnUVhSMFpYTjBZWFJwYjI0eEl6QWhCZ05WQkFNTUdrWkpSRThnUVhSMFpYTjBZWFJwYjI0Z1VtOXZkQ0JEUVNBeU1DQVhEVEkxTURJeE1URTJNREF3TWxvWUR6SXdOVEF3TWpFeE1UWXdNREF5V2pCbk1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDZ3dLU0VsRUlFZHNiMkpoYkRFaU1DQUdBMVVFQ3d3WlFYVjBhR1Z1ZEdsallYUnZjaUJCZEhSbGMzUmhkR2x2YmpFZk1CMEdBMVVFQXd3V1JrbEVUeUJCZEhSbGMzUmhkR2x2YmlCRFFTQXhNREJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCR3RMWjFBNjNEeExmTStPN1g3dVJiaUoyS2lIYVRwT3h4cm8xTGZOMUs3OGJmSWdtajRHbGFiZSswQTdDT3dmeFRvb3JwTmRrKyt0MUgyMDJrY3YvUytqZ2dFbU1JSUJJakFPQmdOVkhROEJBZjhFQkFNQ0FZWXdFZ1lEVlIwVEFRSC9CQWd3QmdFQi93SUJBREFmQmdOVkhTTUVHREFXZ0JTNzZEcGw5M3ZCMmg1RkRMdnlNTXZVQnlqM2l6QWRCZ05WSFE0RUZnUVVTN2VPWW80dnNrbE92aGhlNE5xYmtnZGJtak13UkFZRFZSMGZCRDB3T3pBNW9EZWdOWVl6YUhSMGNEb3ZMMk55YkM1b2VXUnlZVzUwYVdRdVkyOXRMMFpKUkU5QmRIUmxjM1JoZEdsdmJsSnZiM1JEUVRJdVkzSnNNSFlHQ0NzR0FRVUZCd0VCQkdvd2FEQS9CZ2dyQmdFRkJRY3dBb1l6YUhSMGNEb3ZMMk55YkM1b2VXUnlZVzUwYVdRdVkyOXRMMFpKUkU5QmRIUmxjM1JoZEdsdmJsSnZiM1JEUVRJdWNEZGpNQ1VHQ0NzR0FRVUZCekFCaGhsb2RIUndPaTh2YjJOemNDNW9lV1J5WVc1MGFXUXVZMjl0TUFvR0NDcUdTTTQ5QkFNQ0EwZ0FNRVVDSUVPdHRiNDllR0FOR2dybWpnek15bXZKcEM0dThGSFNHMFdINm9EWmVZMkxBaUVBdFlJVDF4NW41MVY3Mi9xMXdqcDMyenRCVVpuVko4R2wzempURFlSdzN5MD0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBVk1BQUFDc0NBWUFBQURHK0U4TUFBQUFJR05JVWswQUFIb2xBQUNBZ3dBQStmOEFBSURwQUFCMU1BQUE2bUFBQURxWUFBQVhiNUpmeFVZQUFBQUpjRWhaY3dBQUQyQUFBQTlnQVhwNFJZMEFBQXlnU1VSQlZIaGU3WjEvYkpUbEhjQnZqaGpOY0M0TytkWGVYVnRVVE16aVA3b1lYWlk1MUlrS2QxZk5uRkhqNW9oQm1BN2oyTVJzWm9sbXhoaE5Kb3J0MjRLZ3NpRnNpbTdUQWRNWVJGUUVGVGNWeHcvcndBRUZSQ2hRK3V1ZVBjLzFxUVAzVE5zKzMzdmV1K3ZuazN6UzQyZ2ZudmU5dDU4Kzc3M1hJd0VBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFVRXBrRzYvWFBwbklSUjhnSWg1dDQxcjljWWF0QmZ3UDlRM242eDIwVFp0UDFEY3BSTVRQTmRlVTE0dXVWdDJNcTIxRkJreHRNam1yTHBWcTBSODMxMVpYMzJydkxtTUtQMjMwanFtUDNEc05FZkh6ekVXN0V4Zk9HV21MOG9Xa2s4a2YxcVhTUFhYVnFhWEpVYVBPcUttcU9yTXVtZnByYlRMVm5VcWxMcmVmVmtaTW1QMTEvWk9sdzdsekVCRUhvam1yelVaVGJWMytMM1ZqeDA0d0lSMDlldlRKNDFLcEtkb2JqQ05Iamh3MWR1elk1TGgwamRLcjFMUHRwNWNCSnFTc1JoRlIwdDZnenJTVmNYR01EcW1xU1NZeit2WXdFODZhcXRTMXRkWHA2ODN0dWpGalVqVmprNVAxS3JXOTk5UExnVnpVNWR3WmlJZyttcUJlT3FmT2x1WW8wdW4wY1RxbVhmYVB3OHdLMWQ1TzZGUDh0MnJUNlZ2MHpTK2JzUGJlVytya29vK2NPd0VSVWNKY2RNRFc1aWlxcTZ1UEg1ZXE2VnQxRmxhbU9xSTc2MUkxMjA5SjEvUkY5a3ZsRWRQNmhtODdOeDRSVWRKc3d6MjJPcDlpWXFwWG81MzJqMlpsbWovcHBKTytxajkycDhlTU9kM2VmMHg1eERUWHRNKzU0WWlJa3VhaURsdWRJK2s5aFU4bmp0TzNDekUxZDQ0WU1XS012bjNRM0I0K2V2akorbmJmS3JXRTRYV2tpQmpLeTV2UHN1WDVsTHBVYW1adE1yM2YzSzZ0VHI1VHVGTlRsMHcrV3BOSzNhei9ycU8yT2ozTjNsMmlUSTZtT2pjWUViRVk1cHFldGZVNWlycnExRE8xeWRTQmNWV3BHK3hkaWJxcTVBeXpPdFgzTDdSM2xURDEwWExuQmlNaUZzTmNVK0hVM1VWeVZQSU1IZFdWcDlYV3FWTnJhdlA2OXZLcUVWV24ycjh1Y2Vxai9jNE5Sa1FzaHJtb2pGNHZPaENJS1NLRzFIMFJxZ0lncG9nWVVtS0tpQ2dnTVVWRUZKQ1lJaUlLU0V3UkVRVWtwb2lJQWhKVFJFUUJpU2tpb29ERUZCRlJRR0tLaUNnZ01VVkVGSkNZSWlJS1NFd1JFUVVrcG9pSUFoSlRRUzk3V0NVdWVFQWxMcHdkVnZOdjVpTDNuQWJyOXg1MC8xdkY5aUt0YXo0RE1hN0h3RHorcnZuMHg2eCsvT0tZZHpFMDIzR1JQbjdNTVhTcDNpZVRHOTNiWEdrU1V6bHZudnV5aW92anJwem5uTk9nMUFmL3VzMjc3TWhoMmZuSm9kNXZRTmU4K3FQK0pvNkxhZEVxOTV6NjRkZXVYV0JIcVF3NnUzdFVXM3VuMnJ4am4xcTlZYWRhc25xenVxbjVaWFh5TlF0VTR1S0hWQ0pUZ1lFbHBuS2FiNmE0cUpTWWZyVG5RTm5HOUlhSFgzTFBxUitlcUNNelZOaXovN0JhOGRaV2RlVjl6NnZFQkwyS3JaU3dFbE01aWFrL3hIUm8wZG5WbzU1ZDk2RWFmK01pdjZkSlNrRmlLaWN4OVllWURsM2VidG1qenB1MTFPL3hqMU5pS2ljeDlZZVl3aHRiZHFsVHB1cVZxcmtvNTloWEpTc3hsWk9ZK2tOTXd6UHJzVFhxenNWdnFMdVd2S0V5ZHk5VHVYdVdxMTh1ZkwxdzM3MUwxNnNWNjdjVkxpYUZwQ2VmVjQrKytFK1Z1R0MyYzMrVnBNUlVUbUxxRHpFTlQyTENiL1Vxc0ZFbE1nMy9uWk81S0ZTNFR6dEpQeDZYemxGVlV4YXFLWE5XcW8vYkR0dXZMRDY3MjlyVk4zNjZ4SVRxcVAxVmtoSlRPWW1wUDhRMFBJWFhoanJtNUZSSDdaakpEZXFPMzYrMVgxMTh1bnQ2MUMyUHJOYkg1Ukd4TDBXSnFaekUxQjlpR3A0QnhiUlBIYlpKZHkrekk0UmgvZ3Z2RjFiSXp2bVVnc1JVVG1McUR6RU56NkJpYXN3MHFoL3IwLzZRUFBucUIzN0hSekVscG5JU1UzK0lhWGdHSFZOak5sSi8vM0NQSFNrTVQ3L1dVcHBCSmFaeUVsTi9pR2w0dkdLcUhmK1R4WGFrY1B6eEZiMUNMYlhuVUltcG5NVFVIMklhSHQrWW1xaTl0MjJ2SFMwY1AxdndxbnMrY1VsTTVTU20vaERUOEhqSE5CZXA4MjUvMm80V2pudytyOFpQWCt5ZVV4d1NVem1KcVQvRU5EemVNZFYrNWFwSDdHaGgyWGV3UTJUK0loSlRPWW1wUDhRMFBDSXhtbVJPOVQreEk0YmxtVFV0aGRXeGMxNGhKYVp5RWxOL2lHbDRSR0thamRRdDgxNnhJNFpuK0ZXQ3gvOWdKYVp5RWxOL2lHbDRwRTZUejV5eHhJNFludmMvMnR2NzY2K09lUVdUbU1wSlRQMGhwdUdSaXVubzZ4KzNJOGJEaU9zZWRjNHJtTVJVVG1McUR6RU5qMVJNaDEzUmJFZU1CM1BNeHZyY0tUR1ZrNWo2UTB6REl4VlRjeEdxcTd2YmpocWVydTRldVcwWmpNUlVUbUxxRHpFTmoxaUE5SEd6ZGxPckhUVWVicDBmNHd2NWlhbWN4TlFmWWhvZXNaaG1HdFhDbFJ2dHFQR3diYmMrZnVKNmgzNWlLaWN4OVllWWhrY3NwanBpdHoyMnhvNGFEKzBkWFNveE1hYTM2U09tY2hKVGY0aHBlQ1JqR3VkclRmdUk3YW8rTVpVenpwaCs1MWQvVXVmT2VsckViLzc4S2JVaGhqZXVNQkRUOElqRk5LYmYwZjhzdHoyK3hqMi9Za3RNNVl3enBwVUNNUTJQV0V5MTU5eTIxSTRhSDZ2ZTNlNmNXOUVscG5JU1UzK0lhWGdxTGFaYjQ3b0lSVXpsSktiK0VOUHdWRnBNdCs4OTJQdS9xanJtVjFTSnFaekUxQjlpR3A1S2krbXVmZTBxbG5maEo2WnlFbE4vaUdsNEtpMm1oZmM0dmN6akdCcXN4RlJPWXVvUE1RMVB4WjNtZjh4cHZpekV0Q3docHVHcHRKanUySHVJbUlwQ1RNc1NZaHFlU292cEJ6djNtN0E1NTFkVWlhbWNjY2JVdk1IRTYwS3UyYmhUSFdqdnNpT0hoWmlHcDlKaXVtVDFadWZjaWk0eGxUUE9tQjVyZmhLYko5MGx2UGdoOWZyR2VONzloNWlHUnl5bUpmSWJVUFgzTEhmUHI5Z1NVem5qakNtL20yOGxwZ05HTEtZbDhydjVzWnppRzRtcG5NVFVIMklhSHNtWVRvLzV1c0grUTUyOVoxZXUrUlZiWWlvbk1mV0htSVpITEthWlJyWG9wVTEyMUhoWTM3S2JsYWs0eEhUd0V0TkJRVXdiMVlyMTIreW84WEQyektYdXVZV1FtTXBKVFAwaHB1RVJpK25rQnRYNnlTRTdhbmphMnZVcC9pVXh2VEcwa1pqS1NVejlJYWJoa1h6T05FNmVXTFhKUGE5UUVsTTVpYWsveERROFVqRTk4WnI1ZHNUdzlQVGs0M25idlNNbHBuSVNVMytJYVhpa1lucnE5Q2ZzaU9INXk3cC9tWmc1NXhWTVlpb25NZldIbUlaSEpLWTZaSmZjK1p3ZE1TeUhPN3YxTVJQamM2VjlFbE01aWFrL3hEUThJakhOTktvbHE3ZllFY015clhHVmUwNmhKYVp5RWxOL2lHbDRSR0lhMDhXblRkdjN4ZmNpL2M5S1RPVWtwdjRRMC9CSXhIVDh0RVYydEhDMGQralRlMzJzdXVZVGk4UlVUbUxxRHpFTmozZE05U24rM09jMzJOSENZSzdlbnpYelNmZDg0cEtZeWtsTS9TR200ZkdONmZBZnpMTWpoV1BHdkplZGM0bFZZaW9uTWZXSG1JYkhLNmFURzlUY3Y0VmRsZDYrY0kwSmwzcytjVXBNNVNTbS9oRFQ4QXc2cHRsSW5YL0huKzBvWWJpcGVWVTgveVZKZnlTbWNoSlRmNGhwZUFZVjAweURPdmYyWit3SXhhZTdKNjkrTlB2RjBseVI5a2xNNVNTbS9oRFQ4UFE3cGlaaytyVGVIR3YzUHJYZWZuWHhPZGplcWNaTlhlU2VVeWxKVE9Va3B2NFEwL0Frdm5WLzc3c3RmZGFKRDZsaFZ6U3JFNitlcjA2L2FiSEszTDFjL1NId0MvT1h2Ym0xTUEvWFBpczVpYW1jeE5RZllncUdnNGM3MVZYM1AxOVlDYnYyVjBsS1RPVWtwdjRRMDZGTlIxZTNlbmpadXlyeDNRZWMrNm1rSmFaeUVsTi9pT25RcEwyelN6V3QyTkI3U2wvS0Y1aytUMklxSnpIMWg1Z09IZkw1dkhxN1pZK2FNbWVsU2x5Z1Y2TGxHdEUraWFtY3hOUWZZbHJaZk54MldLMTZiNGU2MGJ6VFU3WlJKU1o1UE5hbEpqR1ZjOUp2bHFubGIyNHRYSUVNNmNwMy9xMk8vZjVjNTV3R1phWlJQZmpzUDV6L1ZySDkzY3FOK2h2TTQ2TER4RG5xcFhlM084Y3VwaXZlMnFZdXVlczU5NXo2NFFsWHoxZTc5N2VybHRhMml2RE5MYnZWMmsydGhYM3o2eWZXcW9sM1BxZE9NRC93TDlhbjhmcUh0V3NmbEwzRUZMRUVOS2U0NXVWSVpsVmU3cHJ0TUZmaHkrbEt2SVRFRkJGUlFHS0tpQ2dnTVVWRUZKQ1lJaUlLU0V3UkVRVWtwb2lJQWhKVFJFUUJpU2tpb29ERUZCRlJRR0tLaUNnZ01VVkVGSkNZSWlJS1NFd1JFUVVrcG9pSUFoSlRSRVFCS3phbXVhalZ1Y0dJaU1YeG9LMVBoWkZ0YUhKc0xDSmljY3hGdTJ4OUtvd3Jtc2M3TnhnUnNSaG1vbC9ZK2xRZzVqa00xMFlqSWtxYWkvSzJPaFZLcnVrRjU0WWpJa3FhaTNiWTZsUXd1YWpidWZHSWlCTG10T2ZjZDd3dFRnV1RpNlk3ZHdBaW9vUzVhSm10elJDZ1Buck51Uk1RRVgzTVJxMjJNa09JYk9ORzU4NUFSQnlNdWFZS2ZTbFVmOGhGaS9RT3lPdVZxbnZuSUNKK2tlYktmWDNUV2x1VklVdzJPazJ2VWx1SktpSU8yRnkwTjVGdHVzN1dCQXFZcU5aSDYvVEhmVHFzblluNlpyMnpFQkdQMEt4Q3MxR2Jic1NXUktaaGdxMEhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQnBrVWo4QjRBb20rTWJUKzNKQUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzEiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6ImM0ZGRhZjExMzAzMjRlNzdiM2I5M2EzNDAzNjliOWFkIiwib3B0aW9ucyI6eyJyayI6dHJ1ZSwiY2xpZW50UGluIjp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjp0cnVlLCJhbHdheXNVdiI6ZmFsc2V9LCJtYXhNc2dTaXplIjo1MTAsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6MSwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjo5NCwidHJhbnNwb3J0cyI6WyJuZmMiXSwiZm9yY2VQSU5DaGFuZ2UiOmZhbHNlLCJtaW5QSU5MZW5ndGgiOjQsImZpcm13YXJlVmVyc2lvbiI6MjYyMTQ0LCJyZW1haW5pbmdEaXNjb3ZlcmFibGVDcmVkZW50aWFscyI6MzB9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wMy0xNyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyNjIxNDQsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiSElEIENyZXNjZW5kbyBGdXNpb24iLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI1MDMxNzAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTAzLTE3IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjI2MjE0NH1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wNC0wMiJ9LHsiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjdiYWFiY2IwYjQ2YjBhMTM1ZTg3ODU1MWJhY2I3M2IzZWM5ODE5ZjMiXSwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiN2JhYWJjYjBiNDZiMGExMzVlODc4NTUxYmFjYjczYjNlYzk4MTlmMyJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiRm9vbmd0b25lIEZJRE8gQXV0aGVudGljYXRvciJ9LCJkZXNjcmlwdGlvbiI6IkZvb25ndG9uZSBGSURPIEF1dGhlbnRpY2F0b3IiLCJhbHRlcm5hdGl2ZURlc2NyaXB0aW9ucyI6eyJ6aC1UVyI6IuWuj-mAmuaVuOeivOenkeaKgEZJRE_ouqvku73pqZforYnlmagifSwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6Mn1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDQWpDQ0FhZWdBd0lCQWdJVVV2K3krZmpMSllPMzlLZE5STTRNQjQzTUNKY3dDZ1lJS29aSXpqMEVBd0l3ZFRFTE1Ba0dBMVVFQmhNQ1ZGY3hKakFrQmdOVkJBb01IVVp2YjI1bmRHOXVaU0JVWldOb2JtOXNiMmQ1SUVOdkxpeE1kR1F1TVNJd0lBWURWUVFMREJsQmRYUm9aVzUwYVdOaGRHOXlJRUYwZEdWemRHRjBhVzl1TVJvd0dBWURWUVFEREJGR2IyOXVaM1J2Ym1VZ1JrbEVUeUJEUVRBZ0Z3MHlOREV3TURRd01USXlNVEJhR0E4eU1EYzBNRGt5TWpBeE1qSXhNRm93ZFRFTE1Ba0dBMVVFQmhNQ1ZGY3hKakFrQmdOVkJBb01IVVp2YjI1bmRHOXVaU0JVWldOb2JtOXNiMmQ1SUVOdkxpeE1kR1F1TVNJd0lBWURWUVFMREJsQmRYUm9aVzUwYVdOaGRHOXlJRUYwZEdWemRHRjBhVzl1TVJvd0dBWURWUVFEREJGR2IyOXVaM1J2Ym1VZ1JrbEVUeUJEUVRCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQkJzc1lrdU1HdDBINnV1Y0VGZjB2OUtZQ3NSWTNraTBWdXJCcEhQRlVaa2p4ajlKaHFRT0s2SFBpVmF0N0xHODFqQ05EV05BZG92czJXc0RWeStVUVlDakV6QVJNQThHQTFVZEV3UUlNQVlCQWY4Q0FRQXdDZ1lJS29aSXpqMEVBd0lEU1FBd1JnSWhBUEZiSVdnNzUzbFBqV3JGNjZQWG1Hc0t5R3pKdzdEOVBpK2wzcmc4c2xLWkFpRUF1T0thaWVmQ3ZiYnVXREc5WHMvakpFMzUySGFkb1RlQ3dWeEpzSVpLbzdJPSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFLQUFBQUFsQ0FJQUFBQkswSFVSQUFBQUNYQklXWE1BQUE3RUFBQU94QUdWS3c0YkFBQWQwRWxFUVZSNDJ1MmJkMVJWMTdiR2o4YUtpRFJCcElpb2lLTFlleGV4OTk0Ukc0b05helRHMkJCN2kxMWppeHBiTkxFTFVnUjd4WWFLeGw1UXNhTWlSZkorZTAvWWJnR045NzUzN3g5dnVNY2VaNnl6ejlxcnpQTE5iNjYxanVIRHQrdi85V1g0Sm9KdkN2NTIvYjlXY0ZKUzBvY2s1VFBENjkvclZWNU0wODRYV3Z2Zjk1aGhwL29uK3NKLzZQcUM2RDczVTRhQytwZGtZdmlxQVNVa0pNWEhLNStKNnRmRXhLVDRoRVNlSkNaK1dUSC9KMEtSei9qNCtFUzFPeTRLOForL0VqOGRsUlI0bUpCNkpTY25xM05LdWJUMjA5dVo5aVR4MDB2cS8rTUE5SmNNNE1zalRFd25UMjBBdktzZm5uNWcvNDRIZit5YitTY24vNTE2ZmVCTy92RHgrOTkvSzhxV1BqNXZTdkpjbTU3K2tpR21mNjdKWGZ1VTdtU2VmLy9UbGQ0LzlML0d4c1ltNnlhbC96WDlGRExzTGpuNWF3Znd1ZEZxUnFQTlVYdWVaZ2g4VDA3elZrS0NtSXNtRTc3SmsvUW1ZdmlzMHlpYVUzcE5Tb2lQQ1EyOU5za3ZvbFBYRS9VYUhLdFY5MlNqWmhmNjlydXpmSG5zdFdzcEhYOXFYeG02WUliemJOdXM4ZWhodmhuK3BNZE1WTDV3M3B6cnFkMGREZ3NiTjNxVS84VHhmdVBIK1UrYXdEMWx3aytUeDQrYlBYM3FESCsvOCtjaTBKOG1PNW56d3dmM2p4d0tQMzcwU0dod1VLVlNycngrN01qaFEyRUhMNmlWcjBWRmRXblhPdkxTUlNxL2o0dEwwSGt6VjB6TWt4dC8vWFhqcitzM2I5emd2bmYzN3BzM2I4SkNRNElEQTRJUEJIS0hCQjNnbHNMK3ZYdHUzN3dwL2NyclZINzZOSVlXamg0K3RIWFR4cEcrZzhmL01Gb3pXUzVteHhnRzl1MDFkRUIvQ2ppQ0pqM0JtNmlyVnhxNzF6bDI1RkR5cDVZMWRmSkV6NDd0djJ6Y2h2VHFWYldia0t3NjY3MjF2eDZ0V2pNd2oxVkFMdlBBM0htRHpHeUNMTzBPbUZvSEdsc0VHSm1IMkRxZTgvUjZlZjZjcXVQRURIV3N3Y2pHOWI5Tyt1bkhxYW8rMEkzL1JPV3pnSlY1aFpMRnAwMmVpSVpTSHFLdGllTVBoNGNscE5vcHM3cDA0VUkrRXlOYmM1T2xDMzkrKytiTnl1VkxpenJZdWxldjdGNnRNdHFxNk9aYXMySzUrcldxRjh4bmFUQVlhRWVrSmlONS8vNDlYeGZObjJ1VXllRG03RlNpc0tORFhyTWlkdmtvNXpQSlZhdFNlWDQ5R0JLYzNXQkFlV2trUlNNVXZoL21tODFnb0VkZU5NdWV1WnlyeStYSVNFZHJDK3ZjT1JtU3JabUpqYWt4TjJVSFM3T2NCc09TQmZONWkzNUZjKzFiTkRYTC9wMjFpVkYrczl5V3ViSlR2M2UzTGxUWXMzTkh0NDd0Mzc1OWc1Q29WcWRxeFFhMWE2Z2pmNitKa1VZUXdvbGpSekliREgvOHZvVXlWbmpoM0xsekVXY3ZSMTVxMDZ5eHExTUJubHk4Y0o3SDV5TWk3dHkrL1ZrUDF1STFRa1c3YisvZFBkTzZiVUFPMHdObU5pRjJoVUx0QzRjNkZBbXhjVHlReDRwQ3FMM3loSytCdVN5Qzh6bmNuRGN2V1hTY1VWUVdNR2xZdTRhUndZQmtDK1cza2h1UjFhaFF0clJMWWUySmN0dGFJeW5FY2ZMNE1hWXRFWXNXbUUrcnhnMU1zMmUrZXZteUdFMVFRRUJvY0xBbzQ4cmx5Nk9IKzlxWW1vd2FPZ1NQRVNTWGl4WVEwNXpwVTFGSjVLVkwxNjlGRmJhMS9tbk05emhpcjI2ZEs1Wnl4V0syYjkxaWxUdG5qODRkQi9UcE5XelFBTytlbmxldlhKYmVHVCtDKzIzZFdtZDdtejdkdS83eCs5YUFmWHVSbzcybDZhcmx5NTQ5ZS9ZMEpxWktHYmNCdlh0U2ZoUWQvZmpSbzFldlhtcUJrOExxWDVaUC9QRUgwQVVGVTNqeC9MbFk3ZStiTitYTVpPalFxc1c3dDI4VitkU3AwYkpSZmIwSEsrQ3N1aXdlYkpJMU0vQkF1YXhyVWNTWU4xZDJDNk5zdUllVFRWNEtGam16WW0xWkRJWWVYVHFLY1gvV2cwVzdzVkZYdzB1VVJydW9OaVIvd2VCOEJVSnNuVkJ0ZU1teUYzMEdCT2EyQ01udmhIYVY1M2FGK055ZkxYZmtFRitKMmNLNlAya3pNWkdCdG1qb3dmMG1OdmJWeXhkY3IxKy9qamg3aGtrK2VoVDk2dVhMVityMS9Oa3oxSVAwODVzWjM3OS9qN0dLOTJ0ZUJjcHA1VUg5K2xpYjVFTHJ6UnZVSzFiUXZxbEgzZENnSUQzQ0M3YlQ5Yzl6WmlFUmJBdDc1M2JLbDlmWlBuK0pRbzVGN0d6eW14cURmdlJva3ljWGtBQ2M0RzM4ZFBiTWFWWFdDb3BJbkVNOUc5YXVrY1pSTUpLdFZxNTA4d2J1OUU1clpZb1ZvZEMwWHAzbURUM3UzN3NuTVVMR2tCSXA0eE93MmxYTGw2b2hQRm1NSGlmT1lUQjRkbXIvN3QyN1JuVnJOcXZ2cnZZVnJ3Zm5hWDZUZ0JEZTdkZXp4K0lGODNkczN3Yk9jMk5xMUhkekx2VEgxaTNidG16R1JqZi90djdFOFdOYVZNcklnOVVmNGg0L0NuY3JHMmhzR1dKZkdPV2xhTmZjSnNUZTZmbUpFNHBCalorQVJvUHpPd1dyT3VZVGI5NmZ4ZmpxaitNVWxhallxR2NaTXRiS3BVdldxRmhXbVo0eWVnWDZ4b3dZWm1tVUxlYkpFNW16ZHBVdFhoVFo2VUZ5MTU5LzFLOVY4L1RKazZLNWxjdVd0bW5XQ05YaWxObFVjd1lNdXJSdGphVGFOVy9TbzNNSHdGWkVMTjUvKzlaTndoc0tKdWdlUDNZVW5CZzVaQkFvMTcxait6SXVSYzZjUG9XazZsV3ZvaUpCSkswUnJRVmpSZEFNQXpneHlXSUlDZ3dRNG4zNzFpM0hmSllNWU5nZ24yRURmVEN2bWhYTERoL2s0OXZmbXllUG9oOXFDaWFjMzdwNWt3RWcrbng1Y2hFK1FBNithb3JmOE9zYXdzcmUzYnRBOHNidXRUVUZTMlRadDN1WDhYY0dCMHRUN0lrb1FFZEpPbk1mM044YnFYNVZERTVOaHhKeDM0aXUzZmRuTTlGck44ZzhmNmhqa2VlbkZQa21xaDFIVFp5MFAzdHU4ZU9RZkk3b0dGY09NREo3dEh1MzFFbEQ1WG00ZjgvdXdQMzc5RU1wN3VRQXMwaFByM2Irc1oyYVl1YmlnaHZYcjdNMXo0T3gvL2o5U0NyMDdOckpMTWQzUHIyOVVCc0NMV0p2Zy9uMzdkRU55RVZWUk5PVHg0K0wyK2xqY0NhREFmVzNhOUZVbks5VG01YllCekdDNFZGQXZvSVFaam15SEQxOFdJdml2TTRBbGk5ZWxOYzRCeUFzSTN4dy96N2lYcnB3QWM2S3d2RDdQcDVkS2FOTG5EdnVYWnk0RVRVZlBuaGdiMkZxa2pVVEFGRFkxc3JPSW85eFpnTUR1SFA3Rmw0b1l4UENrY2FEUlhxRWoyZFBuNGFGQkp0a3liUnB3enJLang4L2h0OUJHbzZFaDdkcjNoUm40UFZEQnc5Q0hobjgyN2R2UHh1REUxVmZlYlIzVDRDeHVRQ3ZwdDJEaFl1OU9ITmFOS2NvVEsxNXpjOXZmM2FUWUFCYzBYRUJrRHpJd3ZaSXhhcnhyMTVKdXF3UEpBU2VIMFlNOC9YeDd1Zmw2ZTNWdlY5UFQvd01pL2FvVWRXN1IzZWt3eFBsOXZMMDZlVTF5THMzWkVwekFwRVVvYTZQWjdkSjQ4Ynl2RytQN25XclZkWU13dGtoLzdKRkM2U01vMEJremtXYzBZaTB1T0NwRXlkbVRQV2JQYzNmYjhKUGVEQnFudWsvQmNZSDBCRWpNUjBRbnRkMzcvaVRrRWFZMTFJeTZSMk9EVE5vNUY0TEh1VFZwV1BFbVRPdVRnNzR1bm5Pck56WUI1cXpVTXZvTXVMMGFjMjhZbCsvSmxTdlhMWUVjelRObWFOem01WnJWLzZ5YWYwNkNBVFlBK29tcWUxek5haGRIWkRYRkt6M2pYTm56MkFXZURsbEVnSFlJc2hubXYwN3E5dzU0Sjd3RXROc21URWdlZzhMQ2NrNEJxdjRqRXFTVGpWdEVXaVNOMWppcmwwaGRIYlF1ZmpMY3hFcDJsV1dPT0xsa3lmWC9mMERjcHBpQkJLUEFXckk5dDAxYXpWVDBCVDg1TW5qNnVVVlBsV3BWQWxJTDhDQ0IrREIxY3VYcVZhK1RKVXlKWGt1Tno4VmM3VDM2ZDFUbitvSVVFdEk1bk5JZjIvTFhObWd3VWlaRzRjbzZwRGZ0UkR4MWFHWW94MVRQWFBxbEJhL0pVRE1tREs1aVh0dFdBeGhrdnAwaEx0d0kvSDZOYXNYc0xKZ2JQUzFhUDQ4UjJ0TE9JRzZHSklvM2VHYVlDUG1TRkxYcG1sajJqOTI1RWloL05hTGY1NTM3KzRkWEpZWllhT1VTYVZ3WW4yT3B5VTI2Tkl5Vnc3R2ZDVXlVcDRRTWpFc1g1OStiOVM4SEFXbmVIRDhSdytXSlFFQ1JKNXNtWUV4ZUJZMGhRZ1NHblFBUDhackR3WUhVY0IzNjllc0JuVjQvdnk1TE9OOG9tQkZ1U3EzZWhWNUtjaktMamlmbythN1ljNnVyeTVlU0ltc2lZa3lXREd0SkpVbVhKOCtmWCtPUENsK2JPdEVLblc2Uld2eXE4UlBVMGt0NUVoQ0hINHcxRFI3bHZWclZpdG9mK1hLVzVWR0tyOSsrS0JKUkpzaFQzYnYzRkcwZ0czVnNxWHFWcTMwK3RVcmhJSnhyRis3K3RmVks0bkhzT0xlM2J1c1c3T0srNmN4bzhEU3M2b1BpWUxGT0VCZ2xMcHZ6KzR0RzMvRGd6RWd3dHZjR2RNUjNMbXpaOG1KUVdieWJKOCtQZXRVcmFTNXI5cjczMk5IamNpVnlZQ0RuajExQ3QvRmxZOGZQZXBnWlU1UVdMWm80WklGUDBPeTZ0ZXFCdXBRNW5QcnB0KzBpU3RaUUVMQ3FSUEhNZWdpZHRZNEhCTzVlK2UyekhITnloVUVZRFJOelhvMXFxRGdKR1haNTcxK0NZRnFGODZmaHd5NkZMRExrelh6NlZNblJ3d2V4RFQxUVkyZ2JtYVVBNnFvenc4LzlXQ0NRWEx5blpXclVqelNEczVzZmJCSThkZVhJMFc3RW5vSnc1RytRNU1WbnFUd2JkSHhYek5tS0p6THBxRGl4MWIyQndzVmV4ZjlFRVVscFhJNTZVOHNpeXN1TG83SWdSd3BRNmNMMitYM0hkQmZyRjRqd0ZUV1ovcEhEaDBpaDRFSEVYb0poSVA3OWExYTFpMDJGdng3L2VUSkV4SVlrcEJZOVFMSFVGWEVtUlFGaTRocHAxWGorbVN4UDR3Y1RoVEhJRHhxVmhzOWZHajNqdTBJMk9janpsTFp4ZEVPL0FkTEVCTTlNa2pOTkJmTW5VMUFRVU5CQWZzUGhnVEJ0NUV5R1VHcG9vVkxGaW1JNjN2VXJGcWpZam55WTNRQWxsWXE3WnE2SnBVVXI4cXRXNGUyaFczemdSellDbjVXdTByRm1KZ243K1BpK0FuZUZ4ZjNqa0pqOTFxd05wVnZmdENXTjU4K2pTR0lRTDdvdEhhVkNuZ3dBeHZwT3hpemdLbFFtYVNEaW8zcTFySzFNSTErK0RCRkwrazlHREhnT0ZlK0g2TW8yS0ZJb0luVndVSXVPSFNLZGxWRnZvcThHT1pTWXE4aDI0VSszdW95aUFxaG91UHAwL2RseVpYQ3R5MXNucDg0bnF5K21HWkpWampGS04vQjVIL0FEdVhSdzN3UnNVUU8wcVJaMC93RDkrM1ZBcGdlNUhtNGR1VUtjaGhzZ3JRaFQ3Wk1oRDJtamR3TDVyTWtLeVdSc0RMT0tRc093cmMxaUtaTThqcDIxRWg0TzFZQ1grdmYyd3NGbysvWjA2WmlKVlFZUG5nZzdvVVJDRUdMVHgyOG9EUWN3c280Qi9JRmV5aGN1eFlWZGZVcTRBeEFrMUFSdVhmdCtKT2d6aXM5T25Xb1ZhbWNXTE9BeDE2VkNjUElDTlVrV3NFSEFwM3NjT0k3bXY4UkVTNWZ1bFNyY3ZueXJpNUVnZDA3LytSMUVpZmhCTjhaREpnUm5RYnMzU09TNGRlV2pScFk1OGw5OWNvVm5pQTA5TDF4L2E5cG91K25DbGFsY0tGM1gyWGh3dHJoVUtueXNkZWlrbE8xUzUxblI0K2k4cUM4OXFFRm5HSExFVjI2SmNUR3BpeU5xbXE3dVdEQkFWTXJ1SGRnYnN2SEFZSFlZWktPUzJ0c0ZoUmx4RE9uVHFFTU1CcGxOb3dhT2xpVUVSTVQ0MlJqaFIrSVZXcExmVXJtRmhmSHhCYk5teU1LQnFLcFJucHordVFKQWhJc0dtMWRpYngwTGVvcXVBMUxpbEN6V0cwaERERVJBaWYrK01QY0dkUHFWS2tJMEEzbzA0c3hFSmkvSHpwaytPQUI5SGpwNGdWSUV6Nms5YXZQQXU3ZXZpMEtocjVpVEtSdHdNYUl3UU1oNGVOR2p5SzNwbkZpTTVWN2R1bWtCM200SVFBTzNTVWJKSFlRdG1YaGpKeUNBWkFPRUhkUVBDd0plNlZObU1Udm16Y3haa25TVURPc2l0c2thK2FkZjJ4VDhlOGRudzhmUG5BcldyaG14WEsvTEYwQ1pnd2QyRitDZC9yTnBYUUtOcllJdG5JNFZMcDg3Ri9YUDFId2tjT2hUczRnc0twZzh6TnRPeVM4ZnAweWUxVnp0eFl0eWxEQmVqOEFWWEo5bDZscnV6YU1IanBRdmtSeE4rZkNDbGk5QjY3aUpKV0NXODcwOTlQN2tMZytMU3hmc29qSWpUSmcwZVZMdUdoaEcraGJzV1FSUFBsSWVOajhXVE9KbHloZVJDd0szcjVsQzBsUnd6bzFzeG9Na0xpaEEzM2d0RGc2WExSTHV6YVFjNnJ0M2JVVEF0elVvODc3OS9GNkhRdHBJQzlDL2NBcHdjTE8zSVFzams3bnpacFJwbGlSN1Z1M2xISXV0R3JGTWl5QUNyMjdkd1V3TlFVemNoZ1pyNk5nS2l5Y041ZEpBYmxZT1doUjBhMDRMRy9DMkRIZ01MYlNySDQ5RGFLMVBTNmVSSnc1aFJiM3FKNE5YeEhuSmoyRGlCZ1pEQUxzRXZ2UzczdG1DTkdGSWRJRTRMUVFmZUY4bUV2SmZabU56bmw2S1V2V2FwUk5mSytNNEsrWk0vZG5OZjRjUklzbi9iWnVMV2JZeUwyMnhOcUIzbjBzalkwdVhqaXZJUlYxR0dMSFZzMEpKN2R2M1JKMC9aQzYxMGFGc2FPR2cwVmczYUtmNXlGSGVZdFhrUEttRGV2SGpoeWUyV0N3TU1xS2ZERUNKUnFsYmpaUURmbmk5TVVLRmppcmh1ZlZLNWJabU9YQlY2U1JxMWN1MitjMUp6a0c4eGZNbVNYTmFwSVNJZzJMM3JKeGczQTBsRnJBeXZ6UGJiK1hMbG9ZZDBUQkJGZHlaZHFCcUJOeE5US3NjVVpwWWVHOE9UeUJjNkYxTEZ0UGxJakJraWJwU1ZhaTJ2dVpVeWR6ZjJmWXUydUhWaG11UjdZRytZZkFFNkZBYVFrMDJoTGVweVNMaGxKSTFrcU5aQVZDc3B4ZFg2c1pvYUpqMVpTZW56eHhjY0RBRCtwUzVFZVNoWGFWaFMyRlNLY25XZUpENXlMTzRsaDFxMVdCUUJKTEpvOGZaNVk5Q3prU1VkQ3pZL3NXRFR4cVZDeExDb0ZiMk9jMXd5b0Z0N1ZNTk83ZE83QVhpSU5ua3Y4Tkh6U0FFSTRSUEg3OENNMFJpZ2lIa1Jjdkl2MlZ5NWNTSnJFYi9XNlNNdkpuenpFZGx3SzI1VnlMMXE1Y0FaenduelJCSkJKNTZXSlJSd2NYUjRmbzZPZ2hQdDRtMmJJUVh6VUlrZGNaTm5LMHlwMFRMQ1ZsbXVZM0NhWkdJQUFEd0g4NjNmemJCaEd1ZzVXRnNObjNxWW1pdFBQd3dRTXdZOG1DK2ZvZElUV09KT0NSOUlLQ1d6WnVJR3ZSbWd1U0ZNRWlTUXB5WjhtOGJjdG15aGdacVJyQ3BEV1NDSUJ3eEpDQjRJRmJFYWZWSzVZakRXMGQvbE1XTFduU3BVdEJlVzJEVXhhWm5RNllXb2ZwZFB3eFRWS1ZsNnJkV1VLaFU5SWtrN3lubTdkS2t5WUoyWUZjUEg0VURkRkZUMEFsZ1lkVWtzOVNSUXNoOFRaTkczbDdkUjh6WXVpaStYTTd0R3FPQWk2citTTFl6WnlIRHVodlVKY0ZHRDFBRGJoaDBlVDFFQ3NiMDF3RjhwckJyZktiNXVhNW81VUZOV2xOTkNUbUJYSERyVDFxVk9VVmFsWW9XUnd2bE5XclBUdDMycG5uS1dKdks0c2JUeDQvZG5HMGgraFMwUFpyYWVIaGcvc2xpemdSTldtS2lFanNKRWFBRTc4c1cwTHV5NHRZSHJPbzRGWWNWbkU0UEV5L1p5QXNEdzhtNjRVRVVFYWphYlpEZUZpdFhDbjRnZWJCOHRheG8wY0lEYzRPK1lsTndEZ2paM2FGYkszSGp4bjlLRHBhTXhUU1lyeUZuNnBYS0FzZjFDOUhHL1JITnlpZGJOU1VYRlpiNkRoZ2JoUG1YQUxGZjF6b1VNNTFKR29KVW9DYUJIOWM2TWhwZW1mVnFqUUxIWm9meUxqQkoralY1Y2hMTU1tWEwxK20zeXJHLzJaTzlRZkJ0Q1FIcDRSTmFHazBmSnNjZjgwdkswZzZNUWdDRzU0QmZ5R2ZtVDk3NWd4L3Y4UGg0ZG9SQTdvbUpLUGcvcjI4cUVQalBDZjV4Z3ZoMG84ZlBWcXhaSEhVRlVXN2I5Kys0VE00TUFERzlQTEZDKzBRaUJ4SmVQNzgyY2U4OCtaTlVtSHRLM2crZCtaMGNuRzYyTGRycDNCR0xaQ0xrVDE3K3BSY2E4L09IZHI2dHZ5a1dlRjB2OGtncmVvUENacFg0TEk4SkI0dFg3d1E3MExIQkNPRUpzSVVrQkQ3b1A3cUZTdGdPVnI3R1M5VlJ1L2NHWkRMN09OU3BiS1lsVCtzYUltUGkxbXBTNVhYcDA0VFBQKzRWR2xwZTdoOGxmZ1hMOUtmSHZyeStRY0dtcUR1NnIxTFhmSFExcTMwVzBteUsvWDMxMTJhRTZTL1B2YzhmUXRmcnBDZ1drLzY1NkphZlNPaVFuM0xhYWFXa0xwVXB3K2k4YnFIK21HbmtVbWFRcG93L09sbWd5ckJzNTI2QnVRMEM3RlB0eHd0UzZ3cWhicytSVm1rRk44TnlaZml2b0c1TGFMLy9EUDlaZ09mTjIvOEZSWVNqSE9jUHhjaEF5WDVnNlJzM2JTUk9LcVp2TUozTGw5ZXYzYk5BWFd6UVZ6MjNyMjdpcGU4ZTBjN0dDOFJWenZCUklOclY2MkVjU2lyb1k4Zmc1OUhEeDBLRFFxQ3pZcDBhRzNEcjBycUtXZFVzQ1JKUUJXVFNrZ2dnRkdCQWlGY09hRnhJQkE2bzhFR240QXRONWpNVDI5aVNTeXVRNm1DQWdNdUsyYy9sRm5nbHpBMTRpSXRvS1RyMTY3SlRoR05YTDhXRmYzd0lZTVVMSlZNRCtyTEFFUkRQQ0YrNDVHZ3QrajR4WXZuRUFKOTNuSHp4bzExcTFmaDk1Smt4cWVhRktORlN1ZFZyM3Y2OU9tbEN4ZGtVc1JndUlpZVNIK3lINXlrWmtSeGo2TERTNVRPZUx0UVhVQ0ltakNSdUJ1U3VsMFlvbTRYN3N0aWZIWHNqK20zQzBYUXZUMjcxcXRlaGVSazRkelpmSVVpVlM3dFJpUWpySllwWG5TZnVvek9OWDNLNUVxbFNwRG1xcnU4SGlTUmFNNm5kODlGOCtlSllhSzV0czJhS0NzUEwxNjBidElJMmpsc29FK1ZzcVdnVjBoV1NaOWNYWWkxWTRZUDFWb2I0dE1QOHRLaW9jZlRweW10UVdXbHRjTmhCMXMzYVNnYmwxWEtsSlRrV05ZbytJeU5mVDE2bUc4OWRaUFkyOHNUQXRHbGJlc205ZXIwNitrSkNaZDB0a0pKVnpydDM2dEh1eFpOZVdYVTBDSFRKazlLWFh6MlpMSThiT3hlQnhPUkhtbWZwRWoySlltWE5EaXdiKy95cnNVMnJsT1dLY2pwUFdwVUUxWHhTZXdvWDZMWUlPOCtIVm8ycjF1dDhwMDd0OUV1a1lJeE14MlNQVksrRFd2WFFNU3FsaXNOTStlVmRzMmJTRlBhcVNORG1zTlRraEc5dm5JNXpLV0VzdUZ2LzNIRG45Z2NYcUxzcFVGREFuS1poNlRHM1pRTi82ekdGMzBHSmd2NVNxV3ZxUlJEMlc3ejZ0cEpPbFlvY1Z3Y09kK2FsU3RFRUNGQkIwb1dMZ2c0SHdvTGc4aUlRM1AxN2RHdFg2OGV5cTVudjc1NXNtVWgwS3Fuc1E1Q3dXancrNkZEdW5kb3A0R1NwSVpjYUdMVGhuVVU4RE9hSmNUSzh6NmVYUW1RNmg1cVg5UHNXVVhIZUNleW83VVJnd2VTMUFxdFRaT0RFdWw5ZmJ4VFQ1QTFPUkN3VDJnbStXaVZNbTdrUy9JVGpJRjN4MzAvY3N6SVlYZ2tOeEVYaXNCUFROYkp4Z3JTUUJsK01FVTlVZFNnZG8yWi9sTlNjNTdUTG81MnVQdjVpTE9OMVRTU3B1QUt4UW82QUFOU2gzUkRtT1AzdzN6MUU0Zm95WDQ1T2NLcUZjczlPN1hYc284TVRuU29mcGV5OGZEMnp1MVRUVnZzeTViN2dHaytOWEZTenVnRVd6c2NNTWtiaXRiNXFxbzJ3TWljeFBmR3pGbkpjc0l5S2UwcFR0bmJ4MDVKUTJFNjAvMG1YWXU2V3JOaU9XSElzcjdSdUc2dFU4ZVBUNTAwZ1V4WE9CUUFDQXVyV3JZVVh3ZjA2WW1VRzlldFBXdXEvNVhJeUk2dFcvRFFvMmJWc0pBUXpPWE83VnY4Q29pQlRuejE2dHhoeFpKRkZFWU9HU1RwQ2dtaWVwU0oxdHhrSkdSY0RldlVuRFYxQ3ZqY3ZtVXpIdUpWV0FONE1OSjNzTFptTHFzcmkrZk54VUVsL0hkdDF3YXUyNmhPVFRRWGRmVUt0Rm1RbGt0OHpuL2krQktGSFNIbjNFVWRiTmV2V1NWbVFTUXFYdEFCK01IMUlYZnY0K09CRmpBZlRRaXo2OXkyRlNCRUNHaFFxN29rMEJnY0dLQ3FVS21HcGZJS0hUWHpjQThQRFpYRnRkVy9MRWUxNEJ6VmxITUhqdll4TVRGcEZnRU5hVS9jSlFuaFVuUk16YnVyVmgydFhKM2tKOERJVERsMFoyNFRuTmMrNWRCZFRyTmdtd0xudW5aL2NmWk1tb09WbjNxd3NoM1V4N1BieW1WTFg3MTZ5YXlJUXlpYmtLbmxndUFxd2VhWHBZc3hRK1ZKNnJhL2U3WEsvQW83RGRpN0d4OXQ2bEczcVllN2Q0L3U2bUpzZllLVExPZ3NtRHVITEJBWTVIbXZicDBSSW9VNU02WjFhdE5TZjRoQVdnTVljRzc4VDkwdXJNZkFCQTltVDUrYW5QeEJTMTYxamF4bEN4Y004dTR0UjAwNnRtcXhkL2RPK1pXSVVOR3R1TGE4SUJNWk8yb0VjWUYyS0d1NzJxQTZoQU9pQU13MjhYQ0g5dE5GdWVKRm85U1ZaTG13ZU5RUHZaQzFEaTcwalJWcUZVNGNPNGFDZWJGdDh5WXk4UWYzNzRORHJrNEZTRWtZRDFqaXBUdVFsYkVIcC82UElmWFlyRW9GRStQZVBRNElpUHJ4cDdQdE9oNnY0M0dzZXUwVEhvM09lL1c2dFdEaHE5U3RUVVc3cW1ta1B4Z05PYVlDc3NiUGhDdEp6R3RVdHphTUJuYlFwVjJiSHAwN3FpZ1hnOHY2VGZnSkY5KzdhMmVaWXM3YjFKV21MbTFiYlZxdm9DNHdEckkxVjlmenNGdzNaNmY5ZTNiZnYzc1g5MFV1NUgrS0s3UnBpUWRUd09ScGJRcXRYVlZhSysxU1pOdVd6Ykt4OC92bWpZTHF0Q2I3L09UWnVBdVNRZzM2OVZGKytubjJyRjVkTzhrMDZYcm1WTCtqaHc5RnFsdW9STWMyelJwZlBILys3Sm5UcEVrOEdURms0TVJ4WTZVeWI1R3pVVUN2dUtiQ1RLOUZGYlN4bmpGbHN2Q0Q2dVhMUWdrSnh0QUM3SlYrVHh3N1d0SE45VWg0MkxIRGgzSGNoclZyZ0NqWUFmRE84NlVMRjRpbGxuSXV4TVRobmt5OFNiMjZVRE01K2dPR2F3Y0Z2L0xnZTFLNmcrL0pTUjhTTXp6NC9ybFQ3NUlod0pKQVZPMlVaTEp5aG1ZZXM4S05KbzhmcDVGRFFoZDQyTFMrTzJTQk9ZaGI0QWZNWENJVEdMVnV6U3JoNFR2KzJBN2RnRURKa1dhcHZIaitQTVFoRFB6K2ZWcnpRb1V3b1AzcVZvemlrWXNXbmpweFFtbE4xVEZVZ0RLNlIvRjR3SlFKNHpXSWxwRUg3TjJEeFlnSEF4VkVWbXF1V0xwWTVrTHlDaDhrY1BxTkgwYzdNTnZ0djIrVnlyekZ1eFQ4SjAxNHF1YjBjajRTMDVUaFlmRXRWQW5nOTNJVy85Yk5Hd3k0WjlmT0E3MzdNRFp5OGVHREJqTCtWbzBiUXRURk81V0piOS9XdGxuamxvMGFkR3JkVXRaNmVmZm80WERzU2M0NS9jUEI5d3orbFNSL1haSEZFWFdubGlmYVgxYytwRDlIK1prL0I2VC9wNElHYmxwaUlGL1RKNVQ2Q21uS0gwMHRvOHFhZlg2aHRiU0gxcEkrWlBTSGc3VFYwaVRsR1ZhV1Fwb0pwbTh0dzJGa21GNm5IM2FhZWYzelB4ditFMzh1U3ZPdkN1Mi9SckpJcEExSXZtcExTQm9HSk9yT0RtaGxxYU9Zbis1dlMvcktuMnN0S1YxcjJ0OW5VdmFoUDN5eUJwZW9lemYxejBVSmFXYVJrTHB3L2JIMzFKSG9YVXIvQnlRYTA1Yko5R0pSaHhHdmIxOC8vczlOWEtxbGg5TC9ob0svNXZyS3lsK3VrLzZ2Z2wvL2JucUcrT1YvSS81TFY1cld2bklXWDI3a2M1WC8yeDc4N2ZyMkIvQnYxemNGZjd2KzNldC9BT3Fxd1VFdWxwT1FBQUFBQUVsRlRrU3VRbUNDIn0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMTEtMDQiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJGb29uZ3RvbmUgRklETyBBdXRoZW50aWNhdG9yIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVMkYxMDAwMjAyNDExMDQwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMS0wNCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTAyLTI2In0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiODVkMjhkODMyNGUyM2FiNTBiMDI4NTkyYmRiYmY0ZTRhYzhhMTMxNyJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyI4NWQyOGQ4MzI0ZTIzYWI1MGIwMjg1OTJiZGJiZjRlNGFjOGExMzE3Il0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IEJpbyBTZXJpZXMgKEVudGVycHJpc2UgUHJvZmlsZSkifSwiZGVzY3JpcHRpb24iOiJZdWJpS2V5IEJpbyBTZXJpZXMgLSBGSURPIEVkaXRpb24gKEVudGVycHJpc2UgUHJvZmlsZSkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI4OTY1LCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjJ9LHsibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCIsInJlbW90ZV9oYW5kbGUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlESGpDQ0FnYWdBd0lCQWdJRUcwQlQ5ekFOQmdrcWhraUc5dzBCQVFzRkFEQXVNU3d3S2dZRFZRUURFeU5aZFdKcFkyOGdWVEpHSUZKdmIzUWdRMEVnVTJWeWFXRnNJRFExTnpJd01EWXpNVEFnRncweE5EQTRNREV3TURBd01EQmFHQTh5TURVd01Ea3dOREF3TURBd01Gb3dMakVzTUNvR0ExVUVBeE1qV1hWaWFXTnZJRlV5UmlCU2IyOTBJRU5CSUZObGNtbGhiQ0EwTlRjeU1EQTJNekV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRQy9qd1l1aEJWbHFhaVlXRU1zcldGaXNnSitQdE05MWVTcnBJNFRLN1U1M213Q0lhd1NESHk4dlVtazVOMktBajlhYnZUOU5QNVNNUzFoUWkzdXN4b1lHb25YUWdmTzZaWHlVQTlhK0tBa3FkRm5Cbmx5dWdTZUNPZXA4RWRaRmZzYVJGdE1qa3d6NUdjejJQeTR2SVl2Q2RNSFB0d2F6MGJWdXpuZXVlSUV6NlRuUWpFNjNSZHQyemJ3bmVid1RHNVp5YmVXU3dienkrQkozNFpIY1VoUEFZODl5SlFYdUUwSXpNWkZjRUJiUE5SYldFQ1JLZ2pxLy9xVDlubURPRlZsU1JDdDJ3aXFQU3psdXduK3Yrc3VRRUJzVWpUR01FZDI1dEtYWFRrTlcyMXdJV2J4ZVN5VW9UWHdMdkdTNnhsd1FTZ05wazJxWFl3ZjhpWGc3VldaQWdNQkFBR2pRakJBTUIwR0ExVWREZ1FXQkJRZ0l2ejBiTkdKaGpncFRva3N5S3BQOXh2OW9EQVBCZ05WSFJNRUNEQUdBUUgvQWdFQU1BNEdBMVVkRHdFQi93UUVBd0lCQmpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQWp2anVPTURTYStKWEZDTHlCS3N5Y1h0QlZac0o0VWUzTGJhRXNQWTRNWU4vaElRNVpNNXA3RWpmY25NRzRDdFlrTnNmTkhjMEFoQkxkcTQ1cm5UODdxLzZPM3ZVRXROTWFmYmhVNmt0aFg3WSs5WEZOOU5wbVl4citla1ZZNXhPeGk4aDlKRElnb01QNFZCMXVTMGF1bkwxSUdxck5vb0w5bW1Gbkwya0xWVmVlNi9WUjZDNStLU1RDTUNXcHBNdUpJWklJMnY5bzRka29aOFk3UVJqUWxMZll6ZDNxR3RLYnc3eGFGMVVzRy81eFViL0J0d2IyWDJnNElucGlCL3l0LzNDcFFYcGlXWC9LNG1CdlVLaUduMDVac3FlWTFneDRnMHhMQnFjVTlwc215UHpLK1ZzZ3cyamVSUTVKbEtEeXFFMGhlYmZDMXR2RnUwQ0NySkZjdz09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWZDQVlBQUFDR1ZzK01BQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBSFlZQUFCMkdBVjJpRTRFQUFBYk5TVVJCVkZoSHBWZDdUTlYxRkQvM2Q1OXdlUVNJZ1M5QVFBWGNGTEFRWmk5ZnBlVnoxdFkvV1RacjVXeHBjN1c1a25MYTVqSTNaODVzclMybk0yc2p0V3daUzdJVUg0SDR4Q25FUXg0REFaRjc0Vjd1czg4NXY5L2xJbkJ2VkovQjRQdjludS81bnUvNW52TTU1NmZ6QS9RdjBIYi9JclgzVkZLUG80NWNubTRpblVJV1l3TEZSbVpRVXV3akZHL04xaVJIaDFFWjBOUlZSdWRxdDFCZCsyblNLeVMvT2h5czArbGszZS8za1E5cXZENFpVdGE0VlZTVXVZMGVpcHlpVGhBZm9jb09SVmdEdXV3M3FLUmlBZDNyYmNFdGpUallJb2Y2V2FIc0NtelZQV0NNeCtjZ2g4dExxV01LYU1Xc1VqTHFvMlJ0SklRMG9Pem1lcnBRdTRlc1pnc09Oa0d4SDdkMGtkdlRUMTdzNE9NVTdWSThaaGpnR2FNK0FxOWlFTnU4UGlmMXVkejA3TXd2S1dmOEdsVm9DRVkwNFBDNVdkVGFYWUZiUjh2TnZMNSszS2dmYjV4Tk15YTlSYW1KaXluYU1sR1RWdEZscjZiYTl1K3BxbkVYNHVNdVJSZ2pTWUVock43dXRGRmU2bHFhbDdOZmt3NWltQUdIeW5QcGJrOFZtWTB4c3RucHRsRkNWQ1l0elR1Qk44M1FwTUxqVHRldmRQelNVbko3ZThta2p4WjM5ZlhiS0RmbGRacWJ2VStUVWdHbkJWRjZmUTJpUEhnNFcxNlVXVXd2emJrMTZzTVpFK1BuMHB2ejdKU2V1QXllczhsY3BDbWFLdW8vcCtxV3IyVWN3SUFIV3J2UDBZRXpoWEF0TEFic3NIaHA3aUdhbXZ5aWpQOHJ5cXJYVVdYOVhvb3d4eUF1Zk5CcnA0M1BPQkZYWmxrZjhNRFJpcWNweW93QXdwdXoyeCtmV3Z6L0R0ZGU5c21zenlndGNSNkMxd2JkekJsNk9scTVXTllZNG9HYXRoSk1ya1RFeDBqQVJTSEFWcys1cllrUU5YYitRZ2ZQTHNRNmdYeUluc3JlUWZtcG03UlZGWWZMODZuMWZpVU9rWXZTaGtVUHh2YnVrem95NksxaWhNMWhvM1h6VzZFdlNmWEErZHBpV0dhV2QrZG9Yekx6bUd3S1lGTENBc1JBbFBCQWhNbENGWFU3dEJVVlByOEhnVmNKSFdxK0YwMHBscitETVRkclA0enZ4WTExa05NaHhUK1NlVEdnK2Q0VjVMUUppdHlVR0pOQjhWRlpzamdZQlpNL0lJL1hDVGtqMHF5RE9wRjJBVlExN0NJalVwL0RuVDFVa0w1RjVnZGorc1Mxd2cxZ0UzZ2lnbTYwZkNYelNuUFhieUFQYklYditJRHBFMTZUaGFISVM5c2t5aGxtTUU1RjNjZnFBS2hxMkMwRTVQSDFnWWFYYUxQRGtaRzBIREpPbktXSHA1MUkwejVTT3V4OGUxV0F1WnpkSFFyVGtwOFRtalhvSStsYTB3R1pzenVicWJPM2lmUTZBL1c3dlZTWXNWM21SMEpLd2tLYzRXSGlCa21SOEkzQ0NnSTg3b09MNHF6VDVQK1JVSkJlakVPZ0FQSzhoWVB6YXRNK2VJVHAySU85eVRRbWVyb21QUnh4MXF4QWNzaWxlL3ViU2VFYmNXUUdZRUNnaGNMWTJIeUtqb2dqSDI1aE1wanBVdjFPdWdsaTRlaDJlUncwTzMyYkpqa3l1Q2dOemcwdnpsWU1TaVNzMHVvbzRNRzdoTU9qQ0VhWDF5RkUwblN2akJ6dVRuRXBLODZaOElvcUZBSXVidzhrZzlBckVhUkVXU1pJK2pINFhicDZnOUU5RW5KVDNvYVJ6RE4rTVVKQlFESG41NmE4b1VtRUJ1c094QnMvTjUrdEpFYlBrQUZEajhVR3ZPcy9JV3ZjU2dsR0JodlM3L0ZUWWZwV0dZZERZOGZQQXhXU0EzNXNUQzRwNCtMbTRBYXFJb1BlUXRmdWZLNkpoMFpoeGxic1VYT1NtWE5pZkQ1WlRBa3lEb2ZiYmNjbHhuQThXTkFxeENiUk55a2hYeFFwYUR3NjdmWFVZYnNpRzBLaHR2Mm9lSXZoOHJoUU1ZT2NFQXFYRy9lSSt6bmdPYzV5eHI4cTgySUFNMWMvRkxGT3BscXU1ZUZRWHJNWnpHY1ZDalliTFdHNUk0QlQxZXVScmxieHROT3RNaXREREVoTFhJSXluQUF2dU9FV0UzWDNOZEFmdDk0VmdhRzQyWElRdDBaWDZQZUNFL3FRRmU5cks2SHg3WVU1MEt2SDdmVzRmUytxN0tLQkp4c2dnQlg1cFNBR2gxaklyVmg1elE2dzNSZmFhaEJYbS9hQ2JDWlRqQ1VGVVR5V1pxVzlwNjJNakpQWFZxT3JQZ01PNE52NzRHa2Yrb3dmdE5WQkRRbmpGSnFIU3cxN3BYdmhXVzVLWnFlL1E0OU4vVVNUQ0FWV29RWEZJSEJIWFhlM0ZQclVEc3VHRG10Ri9oSEtUSHBla3hoaUFPUEkrU0pxNlM2SEY0STlZV3prQkpUbzQ2aVVNeldwOFBpci9SaWR1THhLWXNTa3NWOHZMbE9RdmhHWDJZbFIwT0JoQmpDK3UvZ0VjdlkwQXBLN1lrNDFOeGpQU1FuV0ZIVEY2NlVyamdldkI4Q3U1YStsMnZZU1JQdHVWRG83M2hoZE1TSG5VWDd0VGpzVlpHeEFsL1dwdGlPSUVRMWduTDI5bVg2L3RSMXRtbGtZajhXNFgrQ1NqV2NVREdZMU5wUy9DN2hTS3FpTUxNL2wyUW1TV1o3M0RkeitnaW84QkNFTllQUTQ2cW5rendYVWJxdkJreGpVUXNXZlpGZ2J1bzNyQWYrd043ak9POTAreW54NFBpM0wrMG5ZTDFTY2hEVWdBUDRnUFYvN0lkMXErMUhTaG11R2tJcVdSUGd5eE1GcVA4SGZqVG5qWHdZNWJRZmJKY3Q2T0l6S2dNSG90Ri9IZTFlZ3NheEhTcUc2d2ZkbVE1eDhOeVRGRnFCY3AyaVNvd0hSM3lrNSszNmhGN3ZYQUFBQUFFbEZUa1N1UW1DQyJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIxLTA4LTA2IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyODk2NSwidXJsIjoid3d3Lnl1Ymljby5jb20iLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ill1YmlLZXkgQmlvIChFbnRlcnByaXNlIFByb2ZpbGUpIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyMTA4MDYwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMyIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS40In0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIxLTA4LTA2IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyODk2NX1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMS0wOC0xOCJ9LHsiYWFndWlkIjoiYWRkOTI0MzMtMGQ2OS00MDI2LTgxNjYtMjliMjViY2U2NGU5IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiJhZGQ5MjQzMy0wZDY5LTQwMjYtODE2Ni0yOWIyNWJjZTY0ZTkiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiU2VjdXJpdHkgS2V5IFNlcmllcyB3aXRoIE5GQyAoRW50ZXJwcmlzZSBQcm9maWxlKSJ9LCJkZXNjcmlwdGlvbiI6Ill1YmlLZXkgQmlvIEZpZG8gRWRpdGlvbiAoRW50ZXJwcmlzZSBQcm9maWxlKSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk3MjgsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfSx7Im1ham9yIjoxLCJtaW5vciI6M30seyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AzODRyMV9lY2RzYV9zaGEzODRfcmF3IiwiZWQyNTUxOV9lZGRzYV9zaGE1MTJfcmF3Iiwic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwiLCJiYURlc2MiOnsic2VsZkF0dGVzdGVkRlJSIjowLjAsInNlbGZBdHRlc3RlZEZBUiI6MC4wLCJpQVBBUlRocmVzaG9sZCI6MC4wLCJtYXhUZW1wbGF0ZXMiOjUsIm1heFJldHJpZXMiOjMsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIiwiYmFEZXNjIjp7InNlbGZBdHRlc3RlZEZSUiI6MC4wLCJzZWxmQXR0ZXN0ZWRGQVIiOjAuMCwiaUFQQVJUaHJlc2hvbGQiOjAuMCwibWF4VGVtcGxhdGVzIjo1LCJtYXhSZXRyaWVzIjozLCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsInNtYXJ0LWNhcmQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURTRENDQWpDZ0F3SUJBZ0lVVWNtTVh6UklGT2dHVEswVGIzZ0V1Wllaa0JJd0RRWUpLb1pJaHZjTkFRRUxCUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JCSURFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURtNTU1YldZOVdXK3RPWTBySVdIbGRoK2FOYW5vQ1pDRmg3R2szWVpyUW1QVXcwaGtTRzZxWUhRdFArZlp5UzMzVkVydmcrQlFxbm11bWdOaGZ4RnJrd0VaRUxlaWRCY0M4QzRBZzRucXFpUFdwenN2STE3TmN4WWxJbkxOTEZjWlkvK2dPaU42Wk9UaWhPNS92QlpNYmo5cmlhQWNxbGlZbU5HSlBnVGNNR2FFQXlNekVNTnkybm02RXArcGpQNWFGNmdpMjF0L1VRRnN1SjFqMlJqL3luTS9TZFJ0K2VjYWw1T1lvdHhIa0ZiTDl2dnYyQTJPdjVJVFpDbHc0Yk9TOW5weXBRaW1PWjVRQVl5dG1ZYVFwV2wvcE1ZejZ6U2o4UnFrVkRORUpHcU5mVEtBMml2TFl3WDZsU3R0TVBhcGcwSjg0bDlYMHZvVk4vRnBTNFZDVkFnTUJBQUdqWmpCa01CMEdBMVVkRGdRV0JCUWdLRkFoRzZSYVcraFR5NTJkeGVUOGJDOTZIekFmQmdOVkhTTUVHREFXZ0JUUzd1OWFJbzA2YlZ3amx6M3loZFVtOFNWN2tqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQTRHQTFVZER3RUIvd1FFQXdJQmhqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFZTXpnTHJKTElyME9vdlFuQVpyUklHdWFiaUhTVUtTbWJMUldwUmtXZUF0c0NoREVIcFhjSi9iZ0ROS1lXb0hxUTh4UlVqQjRDeWVwWWV2YzNZbHJHOG83ekh4cGZWY2FvTDVTZXVKa3pIeEtuNGJUYVNwOStNdndhbW5wNjRrWk1pTmJGTGtuZlA5a1lLb1JIa01XaGVSSjFVc1AxejRTY21rQ2VJTGZzTXM2dnFvdnFqV0NsRnNKcEJjc2x1WUhXRjdiQkoxbjRSd2crQVRFb3BZNElnR3Y2WnZ3YytBOXIrQVQyaHFwb1NrWW9BbCtBTll3Z3NsT2Y5c0plMFYrVEE5WVkvVWxhQm1QUFRkMC8vcjl3dmNlUFdaa1BqS29BQy96VU5oZkRiaDRMVjhHSHMzbHlYMlhvbUwvTE5jOEpZenlJYURFaEdRdmVvUGhoL3RyMWc9PSIsIk1JSURSekNDQWpHZ0F3SUJBZ0lVZXg5blQ5dndaTlhTNDgzTGRpWUdmdzJTalNvd0N3WUpLb1pJaHZjTkFRRUxNQzR4TERBcUJnTlZCQU1NSTFsMVltbGpieUJCZEhSbGMzUmhkR2x2YmlCSmJuUmxjbTFsWkdsaGRHVWdRaUF4TUNBWERUSTFNRGd3TVRBd01EQXdNRm9ZRHprNU9Ua3hNak14TWpNMU9UVTVXakFuTVNVd0l3WURWUVFEREJ4WmRXSnBZMjhnUmtsRVR5QkJkSFJsYzNSaGRHbHZiaUJDTWlBeE1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBdTFNZXZueTlkeU85WlVDMzlTb01oTGNSL0RYcnRGL2NpTTEydGNpeTJFWEFaNk1rcml2VnRDZkVWTTlYNklTVEVuQlA2dVNZWW92NnBwdjZPNkpoMk5IbVltNHcrSm5TNFZuQ1BVN21IQU1mVkkyTUdUVE1WT2V3MHhVc0c3c0lTSWtJRFVCbXVrOFlLOWM1emljOSt2RlFHTElrc2RYTzVpVkZJZ05HNTNjR1hENFpMWm9BUGl1MFBFb3p4QXFZSWFJNGd4S2hPQTNTOC9XOG1JV3N1Nm9meWo0R3ZrRkc2WjdreUYzMTA3UDdtd0ZITHJJM0VOYVBXTU9GY1RhR2EwZHcrL3ZWUndqUmNFWkJWc3V1VC84N2NrU3MwYTVwa3QzdlpCbGFZZVQ4cHpTcmVWN21vd2NJTTkwTDJpYUFUbFAwbnhtYUU2bk95VGJvakZWbDJ3SURBUUFCbzJZd1pEQWRCZ05WSFE0RUZnUVVTWEVoM3NhM2J0RHVybTRNTS9DN1MxbFJ1dVl3SHdZRFZSMGpCQmd3Rm9BVTZyZENrSjRNZTJSNjIxUjhBN3A4VHAvWW9XRXdFZ1lEVlIwVEFRSC9CQWd3QmdFQi93SUJBREFPQmdOVkhROEJBZjhFQkFNQ0FZWXdDd1lKS29aSWh2Y05BUUVMQTRJQkFRQjVHYzNoYWZ0cDdoS3NFWnNvK2kvWjVuUnVxZG16RzJXQ2xVb1JVcWJhUHlnbG5KRGpLUi9rZmdPbDZpYmJGL3p0aG0zS21YUTdIY0RJUDJ4TWRHN1UyTDJpbWJKUUhxUGYvaDJIcW9qYjRyWmd1ZSs2VzRrdFNSNWVsUjlMMXJZcUUvU0dZTTRpRUtvVlFTdjdSVDFyeEllV2lLc3cvVnh4aS9RT25zeDNGN3g4MENDWWdCNEUzeVF4OFZUVzQ0MGhURXdUQTFlTUhPaXgzMnRQdHl5SElhOFBWVklmVnBIUUpCYU1WdnY1MDhVRWp3a2JVMnJuamZ6b1NUTlM5QTVqVVE4bUJTdmU5NXJqQjBkbzk4RVUrRHhkQnFYMitINmk1d2xJQ0ZnemhkemNzbmU5aEdLVDZselRYNGNJZEpzclkyK3hsZUswRkZReTZsR0VWTEVlIiwiTUlJRFNqQ0NBaktnQXdJQkFnSVVSMzhtcTI2U2Yyc3pWVjJCZEc2V0VON2t1V1V3RFFZSktvWklodmNOQVFFTEJRQXdMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3SUJjTk1qUXhNakF4TURBd01EQXdXaGdQT1RrNU9URXlNekV5TXpVNU5UbGFNQ1l4SkRBaUJnTlZCQU1NRzFsMVltbGpieUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRUlnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTlkwV2I5b1BvUm9Lb1F5V1BhSnB6MTF2cldUZzZ6VHRtTmoyVm9LUm55dktHUnFwemI4M3c1bDZZQTk2VVlrWUJEUVAwaWxPMkRQZTZ3V3FWUjV6RGZSemRjSDhiaCtMN2RHR3ZhZTZoUlRaaGtGa0NwWERzNEhjY2tuckRmOEZDbEo3SGUzOUpmNDIvRzFRbTJ6ejlXV21yUFh0Z2lLL3gwNUdqc1FmR3VERzF6ZjVRVFVVaWU4bHd5bUszVGZkT3ZOZWVKQUFQZTJwbjdJdGZSYityVnJOV2lEemxSbjJ2Tm5aMndQbzR3SC9XSjZkaFhaRytyTVdUK2E2Qm9jZzFVZkl3NmtkdW5HNGJUcFp6c3ZhY0ZZeVIwbXBmK0RlT25wU1dBbXl3SldIdlRsZjJZWHhGeWVYY1RBQ2RRbGNNTkdKMlZoWlE0OHh0UDUvUkJQLzhrQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZDaHk0Mm9raXFjVFMxaXFhL0hSV2prQm40SC9NQjhHQTFVZEl3UVlNQmFBRk9xM1FwQ2VESHRrZXR0VWZBTzZmRTZmMktGaE1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQW4rUkhJUGJ0TUVETmRUMWc4SC9SaXRBa1VkTGdBdDF0V0dXbmxqOWtuYnY0LzRHbFg3QzlwNDVlZlBPOS9hWkw2T1YxWFJLQmk2S210Qlc1SzdudVlFbk14LzVCcUJTYkxUN3JoZHVDNDlUQmVNYjlQSGRYc1RsU1ZOWWVmcjFkR2lkcjRqMHhWQlFMYjFya25EQWJkV0R6S2Z2bmF5S084RnJ3ZTdIeDg0M01HL3JKK2MwWHJ1VXZiZlZUQ0hMaUlXaE03b05EaEw4eG9iNnhVbzlLTEtjU0wrSXRZc08zLzlXYjhROUdqc3FMNEZYc0RjRzFTYVloN0twZnVNbU9peHF6SlpPMm5JaWNQWVJnMUkyU3VpVWZZTzcwdG1kSGNibCtrU1FtU1l0N3JxNHZpSUxnMkd4M2o5cklUdVdUamJhVWFTU1F4Z09tTVNIdXl6TUFDIiwiTUlJRFNEQ0NBakNnQXdJQkFnSVVEcUVSdys0Um5HU2dneGdVZXdKRkVQRFJaM1l3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRREk3WG5IK1p2RHdNQ1FVOE04WmVWNXFzY3VibHZWWWFhUnQzWWJheG45Z29kTHg1c3dIMGxYcmRnamg1aDdGcFZnQ2dZWVg3RTRibDF2YnpVTGVtck1XVDhOM1dNR1VlOFFBSmJCZWlvVjdXL0UraFRaUC8wU0tKVmEzZXdLQm82VUxlTW5mUVpEclZPUkFrOHdUTHEydjVMbGo1dk1qN0p0T290S2E5SjduSFM4a0xtelhYU2FqMFN3RVBoNU9BWlVUTlY0enMxYnZvVEFRUVdyTDQvSjlRdUt0NldDRkU1blVOaVJRY0ViVkY4bWxxSzJieDJ6Nm9rVmx0eURWTEN4WWJwVVRFTHZZMXVzUjNEVEdQVW9JQ2xPbTRjcnB3bkRSTFZIdmpZZVBHQkIvL3BFeXp4QS9nY1NjeGp3YUgxWlV3OWJuU2JIeXVyS3FiVGExS3ZqQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJUcXQwS1FuZ3g3WkhyYlZId0R1bnhPbjlpaFlUQWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQXFRYUNXTXhUR3FWVlg3U2s3a2tKbVV1ZVRTWUt1VTYrS0JCU2d3SVJubHc5SzdIZTFJcHhaMGhkd3BQTmlrS2ptY3lGZ0ZQemhJbXdISmd4eHVUOTBQdzN2WU9kY0pKTmt0RGczNVBYT2Z6U24xNWNGQXgxUk8wbVBUbUliOGRYaUVXT3B6b1h2ZHdYRE00MVphQ0RZTVQ3dzRJUXRNeXZFN3hVQlpxMmJqdEFucS9ORFVBN2JlNEg4SDNpcEMrLytOS2xVcmNVaCtqNDhLNjdXSTB1MW02RmVRdWVCQTduMDZqODI1cnFEcXNhTHM5VGI3S0FIQXc4UG1yV2FOUEcya2pLZXJ4UEVmZWNpdmxGYXdwMlJXWnZ4clZ0bjNUVjJTQnh5Q0pDa1hzTkQwNWRDRXJWSFNKSXMrQmR0VFZOWTlBd3R5UG1ueWIwdjRtU1R6dldkdz09IiwiTUlJRFBqQ0NBaWFnQXdJQkFnSVVYemVpRURKRU9UdDE0RjVuMG82WmYvYkJ3aVV3RFFZSktvWklodmNOQVFFTkJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNWjYvVHhNOHJJVCtFYW9Qdkc4MW9udE1Pby8ybVEyUkJ3SkhTMFFaY3hWYU5YdmwxMkxVaEJaNUxtaUJTY0laZDFSbngxb2Q1ODVoKy9kaEs3aEVtN0pBQUxrS0t0czFmTzUzS0dOTFp1ano1aDN3R25jcjRoeUtGMEc3NGIvVTNLOWhFNW1HTkQ2enFZY2hDUkFIZnJZTVlSREY0WUwwWDRENW5HZHh2cHBBeTZua0VtdFdtTW53TzNpMFRBdWNzcmJFNDg1SHZHTTRyMFZwZ1ZkSnB2Z1FqaVRKQ1RJcStEMzVod3RUOFFESXYrbkd2cGN5aTV3Y0lmQ2t6eUNpbUp1a2hZeTZLb3FOTUtRRWRwTmlTT3ZXeURNVE10MWJ3Q3ZFenB3OTF1K21zVXQ0cmowZWZuTzlzMFpPd2R3TVJEbkg0eGdVbDVaTHdyclBrZkMxLzBDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01COEdBMVVkSXdRWU1CYUFGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFNd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkRRVUFBNElCQVFDM0lXL3NnQjlwWjhhcEpOanh1R29YK0ZrSUxrczB3TU5yZFhML2NvVXZzcmh6c3ZsNm1lUE1yYkdKQnlKMVhucXVCNXNnY1JFTkZ4ZFFGbWEzbWlvOFVwZjFvd00xWnJlWHJKMG1BREcyQnBscWJKbnhpeVlhK1IxMXJlSUZUV2VJaE1OY1pLc0RackZBeVB1RmpDV1NRdkptTldlOW1GUllGZ05oWEpLa1hJYjVIMVhnRURsd2llZFlSTTdWb2xCTmxsZDZwUkZLbFg4dXN0Nk9UTU9lQURsMnhORjBtMUxUaFNkZXVYdkR5QzFnOStJTGZ6M1M2T0lZZ2MzaXJvUmNGRDM1NGc3cktmdTY3cUZBdzlnQzR5aTB4QlRQclk5NXJoNC9IcWFVWUNBL0w4bGRSazZIN1hrMzVEK1dWcG1xMlNoL3hUNUhpRnVoZjR3SmIwYksiLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVRuYmJHSVIyTkh2enFJS0ZBZVF3RzFYQmlzMHdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFRWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPc1hqM2swNEJhbjRUWWR0WktxRC9PUEp4eUR5YVBtQ0JVRlVpYVpJZ1R0ZVpuajNYMjVEaGdwWlpYc0M0RDB5ZEljcmxBNndOVUluT1JML0w5ekJiVEVJTUFWTUdvNmc3VUtBbWIyTUY2QUhibmhZSmQ5ZWlrdXBWTldTaEhOWU5jNEdCZE8xWU42QWZVcXZKaEhiZTNWNFNOTVBtQlJFS0pQVno3VGh3Z21nZ1RlOFdzMkswL3dzcXYyd1NFN3BiQ0JzVVpoSVg1MWJaTTNwcUR3SlBUbVJGRXZ0MC82dEc1ZU84RjNqMTRPWHFmRWhtam4xVnZ4S0RZUU9MWkF4Q3d3Z0MwUDRDZGZXdjN5OFBTUjhJMzU0aE8xWStHek5qdklxWDM4TktMeXd1SVlIRmVyT3hObHhFTUJ2RmhZQnVSdVlBa2tnVWFQcU42VUJoc0lMcnNDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNDb1JIaGl5Tm5iblhSV0lMNlpCWG9CWDlZVE1COEdBMVVkSXdRWU1CYUFGQ0FvVUNFYnBGcGI2RlBMblozRjVQeHNMM29mTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFDUUZhZkpJMS81V2c5Q0VFaW1FMVJQNTRSZ1F3VE5UT09Rc0xBQ1RlK3JJdGxGUXpDOVpEaHJWODI4eVg3anp5K0FBc3AzaXpLN1QxdGgyZGw3bSt0dTBzdzJQYS9vbGMwMm50NlB5SXczNDhnYUh6aEkxKzBLRTQ1cXh2RkRlTDJsTXhiUGZDWXZ5RUVhWXpqaVFFTFU1OTUxcFhHV3lLTWEvNGZMdE8rWktPWGhNdVZlcTRyWERQSTU0VzZKSE9pQWFpS2Rpdys1ZTNjMmt0L2pGSVF0TTZ2TVhnOUxORnpkakVUTnQyMFZYOVFldlJwRlpmdWNNRzl3Q2FRRG9GbFB6cFRNSktoUGV2L2ltSm1aWWhLZnIwbExjZW10cWpJeExBb3FaZE9ZZkhCZzYrdkFjZFBJL2lhdUdwVUF2N1grVUtObUR3aloyQmFINHNMd2hCMm0iXSwiaWNvbiI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsImljb25EYXJrIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwicHJvdmlkZXJMb2dvTGlnaHQiOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJwcm92aWRlckxvZ29EYXJrIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiRklET18yXzAiLCJGSURPXzJfMV9QUkUiLCJGSURPXzJfMSIsIkZJRE9fMl8zIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsImxhcmdlQmxvYktleSIsImNyZWRCbG9iIiwibWluUGluTGVuZ3RoIiwiaG1hYy1zZWNyZXQtbWMiLCJ0aGlyZFBhcnR5UGF5bWVudCIsInByZXZpZXdTaWduIl0sImFhZ3VpZCI6ImFkZDkyNDMzMGQ2OTQwMjY4MTY2MjliMjViY2U2NGU5Iiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJ1diI6ZmFsc2UsInBpblV2QXV0aFRva2VuIjp0cnVlLCJsYXJnZUJsb2JzIjp0cnVlLCJlcCI6ZmFsc2UsImJpb0Vucm9sbCI6ZmFsc2UsInVzZXJWZXJpZmljYXRpb25NZ210UHJldmlldyI6ZmFsc2UsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsInBlckNyZWRNZ210Uk8iOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjpmYWxzZSwiYWx3YXlzVXYiOnRydWV9LCJtYXhNc2dTaXplIjoxNTM2LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjgsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4LCJ0cmFuc3BvcnRzIjpbInVzYiIsInNtYXJ0LWNhcmQiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotOH0seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTM1fV0sIm1heFNlcmlhbGl6ZWRMYXJnZUJsb2JBcnJheSI6NDA5NiwiZm9yY2VQSU5DaGFuZ2UiOmZhbHNlLCJtaW5QSU5MZW5ndGgiOjQsImZpcm13YXJlVmVyc2lvbiI6MzI5NzI4LCJtYXhDcmVkQmxvYkxlbmd0aCI6MzIsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjoxLCJwcmVmZXJyZWRQbGF0Zm9ybVV2QXR0ZW1wdHMiOjMsInV2TW9kYWxpdHkiOjIsInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjoxMDAsImF0dGVzdGF0aW9uRm9ybWF0cyI6WyJwYWNrZWQiXSwidXZDb3VudFNpbmNlTGFzdFBpbkVudHJ5IjowLCJlbmNJZGVudGlmaWVyIjoiIiwidHJhbnNwb3J0c0ZvclJlc2V0IjpbInVzYiIsInNtYXJ0LWNhcmQiXSwicGluQ29tcGxleGl0eVBvbGljeSI6ZmFsc2UsIm1heFBJTkxlbmd0aCI6NjMsImVuY0NyZWRTdG9yZVN0YXRlIjoiIiwiYXV0aGVudGljYXRvckNvbmZpZ0NvbW1hbmRzIjpbMSwyLDNdfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjYtMDQtMjUiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NzI4LCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ill1YmlLZXkgQmlvIEZpZG8gRWRpdGlvbiAoRW50ZXJwcmlzZSBQcm9maWxlKSIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjYwNDI1MDAyIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25Qcm9maWxlcyI6WyJlbnRlcnByaXNlIl0sImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjYtMDQtMjUiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NzI4fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI2LTA1LTAxIn0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiMmZlYThmMzU3YzdhNTRhNTdmNDVjZGE3MmZhZmIzNGQxZDQ0OWZkNCJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyIyZmVhOGYzNTdjN2E1NGE1N2Y0NWNkYTcyZmFmYjM0ZDFkNDQ5ZmQ0Il0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJORU9XQVZFIEJhZGdlbyBGSURPMiJ9LCJkZXNjcmlwdGlvbiI6Ik5FT1dBVkUgQmFkZ2VvIEZJRE8yIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6Mn1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUVPRENDQTkyZ0F3SUJBZ0lEQUluQk1Bb0dDQ3FHU000OUJBTUNNSHN4Q3pBSkJnTlZCQVlUQWtaU01STXdFUVlEVlFRS0V3cERaWEowUlhWeWIzQmxNUmN3RlFZRFZRUUxFdzR3TURBeUlEUXpOREl3TWpFNE1ERWtNQ0lHQTFVRUF4TWJRMlZ5ZEVWMWNtOXdaU0JGYkd4cGNIUnBZeUJTYjI5MElFTkJNUmd3RmdZRFZRUmhFdzlPVkZKR1VpMDBNelF5TURJeE9EQXdIaGNOTVRnd01qSXlNak13TURBd1doY05Namd3TVRJeE1qTXdNREF3V2pCME1Rc3dDUVlEVlFRR0V3SkdVakVUTUJFR0ExVUVDaE1LUTJWeWRFVjFjbTl3WlRFWE1CVUdBMVVFQ3hNT01EQXdNaUEwTXpReU1ESXhPREF4SFRBYkJnTlZCQU1URkVObGNuUkZkWEp2Y0dVZ1NXUmxZM2x6SUVOQk1SZ3dGZ1lEVlFSaEV3OU9WRkpHVWkwME16UXlNREl4T0RBd1dUQVRCZ2NxaGtqT1BRSUJCZ2dxaGtqT1BRTUJCd05DQUFTTFZMKzFTVEp2YUVSTzVXQ1IrakdjQXhMdm1QQkRpWlkxTmdGRklocFg2T0FaQXBRWW10NnhTaDc0U3dNK21qZ25zU0VjYzRBMlVmMTM5RmdaNHJwWW80SUNWVENDQWxFd0V3WURWUjBqQkF3d0NvQUlUWjAxdEd1QlBMb3dTZ1lJS3dZQkJRVUhBUUVFUGpBOE1Eb0dDQ3NHQVFVRkJ6QUNoaTVvZEhSd09pOHZkM2QzTG1ObGNuUmxkWEp2Y0dVdVpuSXZjbVZtWlhKbGJtTmxMMlZqWDNKdmIzUXVZM0owTUZNR0ExVWRJQVJNTUVvd1NBWUpLb0Y2QVdrcEFRRUFNRHN3T1FZSUt3WUJCUVVIQWdFV0xXaDBkSEJ6T2k4dmQzZDNMbU5sY25SbGRYSnZjR1V1Wm5JdlkyaGhhVzVsTFdSbExXTnZibVpwWVc1alpUQ0NBV0FHQTFVZEh3U0NBVmN3Z2dGVE1EK2dQYUE3aGpsb2RIUndPaTh2ZDNkM0xtTmxjblJsZFhKdmNHVXVabkl2Y21WbVpYSmxibU5sTDJObGNuUmxkWEp2Y0dWZlpXTmZjbTl2ZEM1amNtd3dnWWFnZ1lPZ2dZQ0dmbXhrWVhBNkx5OXNZM0l4TG1ObGNuUmxkWEp2Y0dVdVpuSXZZMjQ5UTJWeWRFVjFjbTl3WlNVeU1FVnNiR2x3ZEdsakpUSXdVbTl2ZENVeU1FTkJMRzkxUFRBd01ESWxNakEwTXpReU1ESXhPREFzYnoxRFpYSjBSWFZ5YjNCbExHTTlSbEkvWTJWeWRHbG1hV05oZEdWU1pYWnZZMkYwYVc5dVRHbHpkRENCaHFDQmc2Q0JnSVorYkdSaGNEb3ZMMnhqY2pJdVkyVnlkR1YxY205d1pTNW1jaTlqYmoxRFpYSjBSWFZ5YjNCbEpUSXdSV3hzYVhCMGFXTWxNakJTYjI5MEpUSXdRMEVzYjNVOU1EQXdNaVV5TURRek5ESXdNakU0TUN4dlBVTmxjblJGZFhKdmNHVXNZejFHVWo5alpYSjBhV1pwWTJGMFpWSmxkbTlqWVhScGIyNU1hWE4wTUJFR0ExVWREZ1FLQkFoRGFRYmhURnRqY2pBT0JnTlZIUThCQWY4RUJBTUNBUVl3RWdZRFZSMFRBUUgvQkFnd0JnRUIvd0lCQURBS0JnZ3Foa2pPUFFRREFnTkpBREJHQWlFQW9FZXBITUM1WDlqQkthR3BoY0tqaWRoaU4rWm56N3YzUzNoYzMxL0F1bnNDSVFES3FvZ0syU1pPWFpjdnZIQ0I2VVFTYUEwbkxuNFJVd3kxZ3VEaXZiWmJ3Zz09IiwiTUlJQ0hUQ0NBY0tnQXdJQkFnSUNkZFV3Q2dZSUtvWkl6ajBFQXdJd2V6RUxNQWtHQTFVRUJoTUNSbEl4RXpBUkJnTlZCQW9UQ2tObGNuUkZkWEp2Y0dVeEZ6QVZCZ05WQkFzVERqQXdNRElnTkRNME1qQXlNVGd3TVNRd0lnWURWUVFERXh0RFpYSjBSWFZ5YjNCbElFVnNiR2x3ZEdsaklGSnZiM1FnUTBFeEdEQVdCZ05WQkdFVEQwNVVVa1pTTFRRek5ESXdNakU0TURBZUZ3MHhPREF4TWpJeU16QXdNREJhRncweU9EQXhNakl5TXpBd01EQmFNSHN4Q3pBSkJnTlZCQVlUQWtaU01STXdFUVlEVlFRS0V3cERaWEowUlhWeWIzQmxNUmN3RlFZRFZRUUxFdzR3TURBeUlEUXpOREl3TWpFNE1ERWtNQ0lHQTFVRUF4TWJRMlZ5ZEVWMWNtOXdaU0JGYkd4cGNIUnBZeUJTYjI5MElFTkJNUmd3RmdZRFZRUmhFdzlPVkZKR1VpMDBNelF5TURJeE9EQXdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBVHoyak5hS09LL01LZFcyZm1lMXRxNkdSRXVQdXVLVzlIZ1dZZ01Scmp2WlVUT3FMQU5KM01kNUhxdjFFTjF6TWQ0bFd0eWZ6UmxhN3J2NUFSQm9Pb1Rvell3TkRBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUJFR0ExVWREZ1FLQkFoTm5UVzBhNEU4dWpBT0JnTlZIUThCQWY4RUJBTUNBUVl3Q2dZSUtvWkl6ajBFQXdJRFNRQXdSZ0loQU1yaGI4U21mTkxlTE5nYUFWbVE2QU9NaUxOTFZIWDBrRlVPODBDblQzOEVBaUVBek5BZ3Y0ZEgrSERoWlNnWldKaWFQdS9uZlpUZXVHeTRNeWRQTXE1dXJzND0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZ0NBSUFBQUQ4R08yakFBQUNxVWxFUVZSSXgyUDgvLzgvQXkwQkV3T053YWdGcEZsdzhjS0Zpckl5UjN0N1MxT3owS0RnQmZQbS8vejVrM2l6dm4zOWxwK1RhMnRsdFdUUklvVG9meGhZdFhLbGxwcTZzcndDQWlrb1JJVkh2SDM3OWo5eDROU3BVMEF0UUkxVzVoWndRYWdQenA4N1YxMVppWEF2SXhqOVp6aDU0a1JOWlJXUlB2ajk2eGNET00wek1US2lCOUc4dVhQLy9mc0hORlJBU0xDK3NYSG03Tmx1YnU0UW0zYnQzTGx1N1ZwaUxHQ0VtY3VJYWNHWlU2ZkI0Y1dRWDFBUUd4L243T0l5YWVvVWJWMGRpSXZhbWx1ZVBYdEdVU1QvK2czMkhTT0Rob1lHUklTRmhhV3BwWVdWbFJVbytPSGpoNmI2Qm9vc2dIdnF6NTgvY0RsOWZmM003Q3dJZTgrZTNhdFhycVFnbWVJb2tES3pzL1gxOUVHeS94azZPem9mUDNwRVdVYkRzQVlZUkMzdGJSd2NIRUQyaC9mdjYycHFDUmVPakNUbVpFMHRyWnk4WEFqNzhLRkR5NVl1SmQ1MFZBc1ljZXBLVFU4M05qV0JxT251N0h4dy93RStPLzdqc2dDMzE1bVptUnVibTluWjJZRnF2bnorMGxCZmh6T2cvcU83bFFtL0IrRUFtSHdMaW9vZ0NvNGNPcnhrMFdJaVBVRWdrcEZCVW5LeW1aazVoTjNUMVhYM3poMWlZb0tKY0RUQkE0cUZ1Ym10bFl1YkM4aisrdlZyVFZVMXFIUWh6UWVNQkh5aHJLeGNXRndNVVhuNjFLbjVjK2RTdjhKSlNFeTB0ckdHc0NmMDk5KzZkUXN1eGNMQ0NySDdQNUlyU1lnRGVLRlMzOVRFeDhzSFpILy85cjJ1R2hGUU42NWZoMlZQTm9xcVRDVWxwZUt5VW1neGZQcE1TV0VSTUFNdVg3YXN2N2NYSXFpbHJZWHdGcnhlZy9xT3VHWlNkRXpNM3QxN0RoMDZDUFQwcGswYk4yM2NDSTlGWUtaSno4aEU5OEhmZjM4aEREWTJkaUw5MGRIZHBhdXJpeGF3ckN5c3JlM3R1bnE2aUxUWDBOQUFUb0lzVHg0L3RuZHdpSXlPQXRZRXhGakF6YzN0NCtzTEpMOTkvUW9zRTBWRlJlM3M3UnRibW9HVkZVcWNqVFlkaDc4RkFJaEJMbE5kN2p1MUFBQUFBRWxGVGtTdVFtQ0MifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiTk9UX0ZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjEtMDktMjEifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIxLTA5LTIxIn0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiNzljMTAwOTYyMmJiZWVkMjNiYTBjNDkzY2Y3NmFiMDg4YTFhZDUwNSJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyI3OWMxMDA5NjIyYmJlZWQyM2JhMGM0OTNjZjc2YWIwODhhMWFkNTA1Il0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IEJpbyBTZXJpZXMgLSBNdWx0aS1wcm90b2NvbCBFZGl0aW9uIn0sImRlc2NyaXB0aW9uIjoiWXViaUtleSBCaW8gU2VyaWVzIC0gTXVsdGktcHJvdG9jb2wgRWRpdGlvbiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjkyMjIsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6Mn1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiLCJyZW1vdGVfaGFuZGxlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJREhqQ0NBZ2FnQXdJQkFnSUVHMEJUOXpBTkJna3Foa2lHOXcwQkFRc0ZBREF1TVN3d0tnWURWUVFERXlOWmRXSnBZMjhnVlRKR0lGSnZiM1FnUTBFZ1UyVnlhV0ZzSURRMU56SXdNRFl6TVRBZ0Z3MHhOREE0TURFd01EQXdNREJhR0E4eU1EVXdNRGt3TkRBd01EQXdNRm93TGpFc01Db0dBMVVFQXhNaldYVmlhV052SUZVeVJpQlNiMjkwSUVOQklGTmxjbWxoYkNBME5UY3lNREEyTXpFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUUMvandZdWhCVmxxYWlZV0VNc3JXRmlzZ0orUHRNOTFlU3JwSTRUSzdVNTNtd0NJYXdTREh5OHZVbWs1TjJLQWo5YWJ2VDlOUDVTTVMxaFFpM3VzeG9ZR29uWFFnZk82Wlh5VUE5YStLQWtxZEZuQm5seXVnU2VDT2VwOEVkWkZmc2FSRnRNamt3ejVHY3oyUHk0dklZdkNkTUhQdHdhejBiVnV6bmV1ZUlFejZUblFqRTYzUmR0Mnpid25lYndURzVaeWJlV1N3Ynp5K0JKMzRaSGNVaFBBWTg5eUpRWHVFMEl6TVpGY0VCYlBOUmJXRUNSS2dqcS8vcVQ5bm1ET0ZWbFNSQ3Qyd2lxUFN6bHV3bit2K3N1UUVCc1VqVEdNRWQyNXRLWFhUa05XMjF3SVdieGVTeVVvVFh3THZHUzZ4bHdRU2dOcGsycVhZd2Y4aVhnN1ZXWkFnTUJBQUdqUWpCQU1CMEdBMVVkRGdRV0JCUWdJdnowYk5HSmhqZ3BUb2tzeUtwUDl4djlvREFQQmdOVkhSTUVDREFHQVFIL0FnRUFNQTRHQTFVZER3RUIvd1FFQXdJQkJqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFqdmp1T01EU2ErSlhGQ0x5QktzeWNYdEJWWnNKNFVlM0xiYUVzUFk0TVlOL2hJUTVaTTVwN0VqZmNuTUc0Q3RZa05zZk5IYzBBaEJMZHE0NXJuVDg3cS82TzN2VUV0Tk1hZmJoVTZrdGhYN1krOVhGTjlOcG1ZeHIrZWtWWTV4T3hpOGg5SkRJZ29NUDRWQjF1UzBhdW5MMUlHcXJOb29MOW1tRm5MMmtMVlZlZTYvVlI2QzUrS1NUQ01DV3BwTXVKSVpJSTJ2OW80ZGtvWjhZN1FSalFsTGZZemQzcUd0S2J3N3hhRjFVc0cvNXhVYi9CdHdiMlgyZzRJbnBpQi95dC8zQ3BRWHBpV1gvSzRtQnZVS2lHbjA1WnNxZVkxZ3g0ZzB4TEJxY1U5cHNteVB6SytWc2d3MmplUlE1SmxLRHlxRTBoZWJmQzF0dkZ1MENDckpGY3c9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFmQ0FZQUFBQ0dWcytNQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUhZWUFBQjJHQVYyaUU0RUFBQWJOU1VSQlZGaEhwVmQ3VE5WMUZELzNkNTl3ZVFTSWdTOUFRQVhjRkxBUVppOWZwZVZ6MXRZL1dUWnI1V3hwYzdXNWtuTGE1akkzWjg1c3JTMm5NMnNqdFd3WlM3SVVINEg0eENuRVF4NERBWkY3NFY3dXM4ODV2OS9sSW5CdlZKL0I0UHY5bnUvNW51LzVudk01NTZmekEvUXYwSGIvSXJYM1ZGS1BvNDVjbm00aW5VSVdZd0xGUm1aUVV1d2pGRy9OMWlSSGgxRVowTlJWUnVkcXQxQmQrMm5TS3lTL09oeXMwK2xrM2UvM2tROXF2RDRaVXRhNFZWU1V1WTBlaXB5aVRoQWZvY29PUlZnRHV1dzNxS1JpQWQzcmJjRXRqVGpZSW9mNldhSHNDbXpWUFdDTXgrY2doOHRMcVdNS2FNV3NVakxxbzJSdEpJUTBvT3ptZXJwUXU0ZXNaZ3NPTmtHeEg3ZDBrZHZUVDE3czRPTVU3Vkk4WmhqZ0dhTStBcTlpRU51OFBpZjF1ZHowN013dktXZjhHbFZvQ0VZMDRQQzVXZFRhWFlGYlI4dk52TDUrM0tnZmI1eE5NeWE5UmFtSml5bmFNbEdUVnRGbHI2YmE5dStwcW5FWDR1TXVSUmdqU1lFaHJON3V0RkZlNmxxYWw3TmZrdzVpbUFHSHluUHBiazhWbVkweHN0bnB0bEZDVkNZdHpUdUJOODNRcE1MalR0ZXZkUHpTVW5KN2U4bWtqeFozOWZYYktEZmxkWnFidlUrVFVnR25CVkY2ZlEyaVBIZzRXMTZVV1V3dnpiazE2c01aRStQbjBwdno3SlNldUF5ZXM4bGNwQ21hS3VvL3ArcVdyMlVjd0lBSFdydlAwWUV6aFhBdExBYnNzSGhwN2lHYW12eWlqUDhyeXFyWFVXWDlYb293eHlBdWZOQnJwNDNQT0JGWFpsa2Y4TURSaXFjcHlvd0F3cHV6MngrZld2ei9EdGRlOXNtc3p5Z3RjUjZDMXdiZHpCbDZPbHE1V05ZWTRvR2F0aEpNcmtURXgwakFSU0hBVnMrNXJZa1FOWGIrUWdmUExzUTZnWHlJbnNyZVFmbXBtN1JWRllmTDg2bjFmaVVPa1l2U2hrVVB4dmJ1a3pveTZLMWloTTFobzNYelc2RXZTZlhBK2RwaVdHYVdkK2RvWHpMem1Hd0tZRkxDQXNSQWxQQkFoTWxDRlhVN3RCVVZQcjhIZ1ZjSkhXcStGMDBwbHIrRE1UZHJQNHp2eFkxMWtOTWh4VCtTZVRHZytkNFY1TFFKaXR5VUdKTkI4VkZac2pnWUJaTS9JSS9YQ1RrajBxeURPcEYyQVZRMTdDSWpVcC9EblQxVWtMNUY1Z2RqK3NTMXdnMWdFM2dpZ202MGZDWHpTblBYYnlBUGJJWHYrSURwRTE2VGhhSElTOXNreWhsbU1FNUYzY2ZxQUtocTJDMEU1UEgxZ1lhWGFMUERrWkcwSERKT25LV0hwNTFJMHo1U091eDhlMVdBdVp6ZEhRclRrcDhUbWpYb0krbGEwd0dac3p1YnFiTzNpZlE2QS9XN3ZWU1lzVjNtUjBKS3drS2M0V0hpQmttUjhJM0NDZ0k4N29PTDRxelQ1UCtSVUpCZWpFT2dBUEs4aFlQemF0TStlSVRwMklPOXlUUW1lcm9tUFJ4eDFxeEFjc2lsZS91YlNlRWJjV1FHWUVDZ2hjTFkySHlLam9nakgyNWhNcGpwVXYxT3VnbGk0ZWgyZVJ3ME8zMmJKamt5dUNnTnpnMHZ6bFlNU2lTczB1b280TUc3aE1PakNFYVgxeUZFMG5TdmpCenVUbkVwSzg2WjhJb3FGQUl1Ync4a2c5QXJFYVJFV1NaSStqSDRYYnA2ZzlFOUVuSlQzb2FSekROK01VSkJRREhuNTZhOG9VbUVCdXNPeEJzL041K3RKRWJQa0FGRGo4VUd2T3MvSVd2Y1NnbEdCaHZTNy9GVFlmcFdHWWREWThmUEF4V1NBMzVzVEM0cDQrTG00QWFxSW9QZVF0ZnVmSzZKaDBaaHhsYnNVWE9TbVhOaWZENVpUQWt5RG9mYmJjY2x4bkE4V05BcXhDYlJOeWtoWHhRcGFEdzY3ZlhVWWJzaUcwS2h0djJvZUl2aDhyaFFNWU9jRUFxWEcvZUkrem5nT2M1eXhyOHE4MklBTTFjL0ZMRk9wbHF1NWVGUVhyTVp6R2NWQ2pZYkxXRzVJNEJUMWV1UnJsYnh0Tk90TWl0RERFaExYSUl5bkFBdnVPRVdFM1gzTmRBZnQ5NFZnYUc0MlhJUXQwWlg2UGVDRS9xUUZlOXJLNkh4N1lVNTBLdkg3Zlc0ZlMrcTdLS0JKeHNnZ0JYNXBTQUdoMWpJclZoNXpRNnczUmZhYWhCWG0vYUNiQ1pUakNVRlVUeVdacVc5cDYyTWpKUFhWcU9yUGdNTzROdjc0R2tmK293ZnROVkJEUW5qRkpxSFN3MTdwWHZoV1c1S1pxZS9RNDlOL1VTVENBVldvUVhGSUhCSFhYZTNGUHJVRHN1R0RtdEYvaEhLVEhwZWt4aGlBT1BJK1NKcTZTNkhGNEk5WVd6a0JKVG80NmlVTXpXcDhQaXIvUmlkdUx4S1lzU2tzVjh2TGxPUXZoR1gyWWxSME9CaEJqQyt1L2dFY3ZZMEFwSzdZazQxTnhqUFNRbldGSFRGNjZVcmpnZXZCOEN1NWErbDJ2WVNSUHR1VkRvNzNoaGRNU0huVVg3dFRqc1ZaR3hBbC9XcHRpT0lFUTFnbkwyOW1YNi90UjF0bWxrWWo4VzRYK0NTaldjVURHWTFOcFMvQzdoU0txaU1MTS9sMlFtU1daNzNEZHorZ2lvOEJDRU5ZUFE0NnFua3p3WFVicXZCa3hqVVFzV2ZaRmdidW8zckFmK3dON2pPTzkwK3lueDRQaTNMKzBuWUwxU2NoRFVnQVA0Z1BWLzdJZDFxKzFIU2htdUdrSXFXUlBneXhNRnFQOEhmalRualh3WTViUWZiSmN0Nk9JektnTUhvdEYvSGUxZWdzYXhIU3FHNndmZG1RNXg4TnlURkZxQmNwMmlTb3dIUjN5azUrMzZoRjd2WEFBQUFBRWxGVGtTdVFtQ0MifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0wNi0wNCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjkyMjIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWXViaUtleSBCaW8gU2VyaWVzIC0gTXVsdGktcHJvdG9jb2wgRWRpdGlvbiIsImNlcnRpZmljYXRlTnVtYmVyIjoiVTJGMTAwMDIwMjQwNjA0MDA1IiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMDYtMDQiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5MjIyfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI0LTA4LTEzIn0seyJhYWlkIjoiMDAyNCNGRTAxIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWlkIjoiMDAyNCNGRTAxIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkcrRCBFTVZGSURPIEFVVEhFTlRJQ0FUT1IifSwiZGVzY3JpcHRpb24iOiJHK0QgRU1WRklETyBBVVRIRU5USUNBVE9SIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoidWFmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbInNvZnR3YXJlIl0sImF0dGFjaG1lbnRIaW50IjpbImludGVybmFsIl0sInRjRGlzcGxheSI6WyJhbnkiXSwidGNEaXNwbGF5Q29udGVudFR5cGUiOiJ0ZXh0L3BsYWluIiwidGNEaXNwbGF5UE5HQ2hhcmFjdGVyaXN0aWNzIjpbeyJ3aWR0aCI6MzIwLCJoZWlnaHQiOjQ4MCwiYml0RGVwdGgiOjE2LCJjb2xvclR5cGUiOjIsImNvbXByZXNzaW9uIjowLCJmaWx0ZXIiOjAsImludGVybGFjZSI6MH1dLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQ0RUQ0NBYlNnQXdJQkFnSUVXYmUvcmpBS0JnZ3Foa2pPUFFRREFqQ0JqakVMTUFrR0ExVUVCaE1DUkVVeEVEQU9CZ05WQkFnTUIwSmhkbUZ5YVdFeER6QU5CZ05WQkFjTUJrMTFibWxqYURFYU1CZ0dBMVVFQ2d3UlIybGxjMlZqYTJVclJHVjJjbWxsYm5ReEpEQWlCZ05WQkFzTUcwMXZZbWxzWlNCVFpXTjFjbWwwZVNCSmJtNXZkbUYwYVc5dWN6RWFNQmdHQTFVRUF3d1JSa2xFVHkxVWIydGxibk5sY25abGNqRXdIaGNOTVRjd09URXlNVEV3T1RFMVdoY05NamN3T1RFeU1URXdPVEUxV2pDQmpqRUxNQWtHQTFVRUJoTUNSRVV4RURBT0JnTlZCQWdNQjBKaGRtRnlhV0V4RHpBTkJnTlZCQWNNQmsxMWJtbGphREVhTUJnR0ExVUVDZ3dSUjJsbGMyVmphMlVyUkdWMmNtbGxiblF4SkRBaUJnTlZCQXNNRzAxdlltbHNaU0JUWldOMWNtbDBlU0JKYm01dmRtRjBhVzl1Y3pFYU1CZ0dBMVVFQXd3UlJrbEVUeTFVYjJ0bGJuTmxjblpsY2pFd1dUQVRCZ2NxaGtqT1BRSUJCZ2dxaGtqT1BRTUJCd05DQUFSMy9qSUNJTG54dGkyQitXNXJrRlZaRTBseFVwQ25uY3NNeUVXMkNld1owV0JIZ1VkVmFjNDBSbytTaGFiZHQ1MlpUL250NXdoczBDNDdRSEJLdlZ6VE1Bb0dDQ3FHU000OUJBTUNBMGNBTUVRQ0lERHF1THVKR3JhRW9WS2pqbFlyUFBnQ3BUNjVMQzlRRWpsQk5MVHcxOEpJQWlBSmNvc2ErcTVldmlsNzlYaUMvOXF0L1BPYkwyby9qaVIrUnl0V0xQZFpTdz09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsLzlqLzRBQVFTa1pKUmdBQkFRQUFBUUFCQUFELzJ3QkRBQU1DQWdNQ0FnTURBd01FQXdNRUJRZ0ZCUVFFQlFvSEJ3WUlEQW9NREFzS0N3c05EaElRRFE0UkRnc0xFQllRRVJNVUZSVVZEQThYR0JZVUdCSVVGUlQvMndCREFRTUVCQVVFQlFrRkJRa1VEUXNORkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCVC93Z0FSQ0FESUFNZ0RBU0lBQWhFQkF4RUIvOFFBSEFBQkFBTUFBd0VCQUFBQUFBQUFBQUFBQUFjSUNRUUZCZ0lELzhRQUd3RUJBQUlEQVFFQUFBQUFBQUFBQUFBQUFBRURBZ1VHQkFmLzJnQU1Bd0VBQWhBREVBQUFBYXlqNkY1d0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFZ2QzZURUNXhMSjM2eEZvYzVsOGxHUFNYS3N6TkRNMDlOVmROKzhQOFpkTEtCSHBpZSt2aFR1b2ZOWE5Bdm0rTXlVbVJuMWRRWmdBSE00Y3cxTGljUDFWTGVRdWpUekoyZEpNMzM1cGhhYVVqZWFiS1VSdmRWN1NaMWRUUzZTdUZrd1EvYkhyNzY1dDJGMW1kazg3TlBxRStTWXlIUjFnQUxCMThsdnlUZWpQWFFxbXVnc2dZZFZWcDF5YUhmWExXM3ZVUWsycGFJcWQ1TXJZcUlQZmpkTE5tVFl5MitDVG94c2I2SXR0U3U2bEE5QlpIQTZxb0FCeU9PTkhQMnBQZW5qcnMvOEF4bW5jWWJMQ2lhNnoweFNtYVp0OUhSTWxVUnZkRitxem9ZdXMzbGRLVjF1NmlhbTN0N1BydEpuMEdlbnUvQTlEV0d4eEFBQWV2OGd4WEtrL09acWM5Sm1iS2xwTXpaR2t6TmthVE0yUnBOd002RXJoMWo4dzJPSWV5QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUC84UUFLQkFBQVFNREF3UUJCUUVBQUFBQUFBQUFCUUFFQmdJREJ4VVhJQUVRRXpZUkVoWXdOSEExLzlvQUNBRUJBQUVGQXY2YkdJU1JsTlliRmdVWlMzRk1tbFBndEtXMmJmU0xyRTFQU3VXK0MwdkJhWGd0THdXbDRMU2NpR0x5azFpZ09ScGtzUUl4ZTkrR0FRbXFVUEc3ZTAwc1BuN1lhM2U1ZEJ0cTk1eGFPWllIRkF5eEo3Y3BCa3hoSGkyODR0YnppMXZPTFRITFFKM1cxZDJIMWg2eXNFV3M1aDF5S0VPYlJyY2ZPZ1lpeUJGU1dRdDR5S1BTRjdJM3ZERW50eXlmN3R3amNvZlJoNENOTjVBTWxBSzNJd2x5M1ZadWNzVk1PajJYTExSbXA5SSsxR0pqMWRPMGg1YlNIbEFvQ1ZqcDlUWEhoWTlKZHBEeTJrUEp6aXc0MGJkc09tYW01ZFpIWWRCOHc1WVkrTmVVNCtycEx1emI5Ym1lL3dBUHRqWDZ2dlZaZitQdXZsaTRoMFlTOVpkQ1ZNejNhbkpzam9wM1BraTNQa2l4NU5UQjZSS2RUbzJGbEc1OGtXNThrVi9KRWhkV08ySEFsVjRnc2hrT2hLWDhyRit0cmZqUnkxSXd4NEcya1F5U1JSL0YzWERFbnR5eWY3dHdpc05mU2x5SUZOd2crWVNHaU5BNnF1dGRYT0VURzdFMzdCKzNLTkw3ZTA2dFBjWHg5NVh0Q0NXMElKYlFna0JnQXVPUDBheDBKUEV0b1FTMmhCTGFFRW1PTTQreHJ0V3FMRnNvVmFobVV4bGw2V0V2d3g2VWtJemZDNWVHUEtXOHFET3FkZEdyWFJxMTBhdGRHclhScTEwYXRkR3JYUnExMGFuTXRDdEtUZVlCN1drOUpIOGtjLzAzLzhRQUhSRUFBZ0lDQXdFQUFBQUFBQUFBQUFBQUFBRVJFZ0lRSUNFeFVQL2FBQWdCQXdFQlB3SDZ5eGs2UktGN3FVU2g0enlmUzFERW1aRVBXTE11QzlNdFdSWWJnc2h1UmVtWG5GT1NwVml4WTFKVmxXSlFOenlzV0xGaXhZYm43SC8veEFBdUVRQUJBd0VGQmdVRkFRQUFBQUFBQUFBQ0FBRURCQVVSRlNGU0VoUWdNVUZSRXlJeVlZRVFKRkJ4OERQLzJnQUlBUUlCQVQ4Qi9MVmxkNFBrajVyN2lwenpkUjBsUXhzN2lxci9BQVA5S09NNVgyUXpXNTFPbGJyVWpuc3VvSytXRjdqelpSbU1nc1k4dUNVL0NqYyt5cFl0Nm11TDl1aEZoYTRWdlVHdGxVMU1KUWt6RXJPa0dPVjNON3NsdmNHdGtFb1MraDcxYUZNeGc4cmMyVmxTdmU4WHp3Vlk3VUJzeXNzMkdaMmZyOU1MbTd0L2ZDa3M2V01YTjNiSlFRRlVGc0FzTG03dC9mQ29hWTZablkrcXF6WUlDZDFaWTN6WCszRFZVNVVzbTBQTG9vYlVHNjZWbGljSHVwN1Foa2lJRzZxaG5DbmtjajdMRTRQZFBha0hTOVZOVWRXVjNUc3FLbTNlUHpjMzRTRmpiWkpIWmNSWmk5eXdrZGF3a2Rhd2tkYXdrZGF3a05TaHBJb1BTMmY1ai8vRUFFTVFBQUVEQWdBSEN3b0VCUVVBQUFBQUFBRUNBd1FBRVJBU0V5RXhRWk1GSUNJak16VlJZWkdoMFJRd01qUlNZbkdCd2VGQ2M3R3lVM0NTcy9CVWNuU0N3di9hQUFnQkFRQUdQd0wrWnQyRVpLTUR3cERuby9McG9GOXM3b1BlMDk2UDlOV1lpTU1qb1EyQlhKcDdLM1dJUWtIeVZ6Vjd1QUFnRVpCZW41VnlhZXl1VFQyVnlhZXl1VFQyVnlhZXlyUHdvN3c5OW9HbEtpaFc1NzNTM25SL1NmcFZwVGVNeW84Qjl2T2hYbWk5SXVuYzVrOE1qOFo5a1VobGx0TFRTQlpLRWl3RkYrVStpTzBQeHVLdFJTMEpFcjNtMjdEdklyMUtaMko4YW13MjRrcEszMlZOZ3F4YkM0K09BZmtMK21CNkE5RmtPT05XdXBHTGJPTDlQWFhxVXpzVDQxNmxNN0UrTmVwVE94UGpRUzRYNG5XNjNtN3IwbDZPOGg5cFdoYmFyaW5JOGxwTHpMZ3NwQ3E0RjNJTDJkbHc2dmRQWDVobU95TVoxMVlRa2RacVBCWTlGcE5pZmFPczA1TWY0WDRXMjlhMWRGR1JNZHh2WlFQUlFPZ0RlajhoZjB3VC9nMy9BRzA3MFBSWE9MUEtNcTlGWS96WFRNMk1lQXZTazZVbldEVWlFdTJNb1hiVjdLOVJwVGF4aXJTYkVIVWQrMHRRdUk3YW5mcDljSGtRUEV3MGdXOTQ1ejlNSVVCSHNjL0sxb2piV3RFYmEwSmNzTTVISnFUd0YzT0NWTmlobklPWW1ManVXT1pJRmFJMjFyUkcydE92dUNQaU5wSzFXYzFEQy91Y284VklSanBIdmo3ZnBnbkJJc2wwaDRmTVorKysvbTlQazMvb1lOMWNiVGx6aGEvMmp6RzZQL0hjL2FjTzV1TDByL1lyQW0zK21SZnRPL2pwVWJKa0lVejlSM2dZRWJvSlR4TXRPYysrTTM2V3doSW5pd3pjaTM0VnpnTmczNFZ6Z05nMzRVSXMyWGxtTWtwV0xrMHB6L0lZSmNTSE15VWRHSmlweVNEcFFEckZjNERZTitGYzREWU4rRk9NdVRncHR4SlNvWkZHZy9MREozVVduaW1VNUpCNlZIVDNmcmczUVdrM1EyckpEL3FMSHZ2djIzbWxZamphZ3BLaHFJcVBOYXRkWXN0UHNyMWluWVVrY0JlaFEwb1ZxSW90eW03dEU4VytuMEYvNTBiMGZrTCttQ2Y4Ry83YWQ2QXlndFJRZU1rcUhCSHc2VFRNT0tuRlphRnVzOVpwK1VTTXNSaU1wNlY2dkdpcFJ1bzV5VDVnNDEzSUx2TE5EOXc2NmJreFhVdk1MRjBxVFNtbm0wdXRxMG9XTGcwVkNLcU9UL0JjSTdxMHl0cjlxMHl0cjlxMHl0cjlxOHNpRi9LNHBUeGk3ajlNRHM2U1g4czVhK0l1d3pDM1IxVnBsYlg3VnBsYlg3VnBsYlg3VUZlUm1Rb2Z4MWxYZG9wS0cwSmJRbk1FcEZnS2NsVEhReXlqV2RmVUt5eXJ0eG04ekxYc2pwK1Btc2VFOVpCOU5sZWRDdmxRVFBiWEFkMW0yT2p1ejFkdmRTSWVvdkFHdWNJdTJUWE9FWGJKcm5DTHRrMXpoRjJ5YTV3aTdaTmM0UmRzbXVjSXUyVFhPRVhiSnJuQ0x0azFkM2RTSU9vT2hSN0JSVHVjeXVhN3FXdmdJOGF5MDU3SHQ2TFl6SVI4Qi9NNy84UUFLQkFCQUFFQkJRZ0RBUUVBQUFBQUFBQUFBUkVBSVRGQlVXRVFjWUdSb2NIdzhTQXcwYkZ3LzlvQUNBRUJBQUUvSWY4QVRZam80YURUTTBPTVVZNjN2RXRCWkcrYUJGdUQraFhxOUc1RUNITnN1NWFCTlBWNjlYcjFldlY2OVhwYzVZZjJ5bVpPMFJaMVQraWdaNFRnaE9Eby9VVEJ1Nk4vTi9YQTMwYTQwU09RVmVxckFkMi9Tb01IZ3VyT214R0VobnBDQXVXMzRVU0xxaGxoTVNQZ1JvMGJwdHN0M082WGFhb2JpVkNFSk1pZVkwREUwM2htMEhVNHg4OWRxWEpCUm1FU0RiaXVxeTFicGl3TUx1SDlYQUdsM09XN2NzdjY0L1pSd1Zzb1N1T00rWXFmdWVRZk5GQ3FKdnd2VTZMVCsyNytCaFBuWmtIM093OVo4TmhaZWhhWW5KSERiQTVvUEJYblB5dk9mbEUyREc4eEZrYWJIbVJHSUdzak1hODUrVjV6OHEvVVBGZ2x3MDJwTmtaZkozejVObkh2SUNmbUZCM1c2MzdiRGFQTTVZZEkyK1d5K3RRRmJKdE4xdHNXYmN4NmZuUEFwWE5Pb0xqc1RCREJ1QkVjUXVlMG9ZSUdGdG9VSjJyQkxNaUxRZGhuQXBZTWxhamV1MUNoaUZnWGtJU3pMdFNnSmRrckc3WXd3ZzRaMEh6TkF2UmlKSG5TaENDMjY3L1JHc2N1WFljMGZwalRsTE1kaHZ3ZFZ2MlVjSU5CckNjVCtBNHhWajFsTjVqbUsyMWF0RVdNZEJlMEtmdzJRbFg2SElPaGVETFJkYnNrbkRxS3gvSFNpSjlCWnRScTB5OHhQTkljQ3ZTcWVsVTlLb2JRTmhJRyt5R3pEZGY3QUVHZ1Y2VlQwcW5wVk1OSUVqdWNTZ0RGRGdaQVVTV3JieFlCaXVWTFFsbnZFYXNlQmg5UytZWjVoNXRTR3NEZEZMeHNPWEdqVTUvQkZtdlB1OWVmZDY4KzcxNTkzcno3dlhuM2V2UHU5ZWZkNjgrNzB5aW42NExXQnVRUjF0dGJvTjlTVTZWR1dCdnYvd0JPLzlvQURBTUJBQUlBQXdBQUFCRDc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nm9Namc0eHZQMzc3Nm1wenl5dnplcHI3NzczajVUL3o1ZS96Nzc2NHB2OEF2cS82SUcrKysrdmMvd0QvQVA4QXRmOEF2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2L3hBQWVFUUVBQWdFRkFRRUFBQUFBQUFBQUFBQUJBQkV4RUNBaFVXRkJVUC9hQUFnQkF3RUJQeEQ5Yk1kQnF6TUVVTXoybG4yQmhFUnAyQmJVV0NabmhMQnhBcHhQS0ltWlExRDkyY1JEeHJBV29BdDBpd2hzYm9EVEhycEFSakNqV2htNXRHb016TDlTL1V2MUw5Uy9VWEw5ai8vRUFDZ1JBUUFCQVFVSUF3RUJBQUFBQUFBQUFBRUFFU0ZCWVhIaElERlJnWkdoc2RIQjhQRlFFUC9hQUFnQkFnRUJQeEQrc2IzMTl1TllEbzd0UFJGVTBFODV6dmtvZFZ2bU43ZTQrS3RKVSszdzd6SitHS3pWYkdHUll0VnFXL1RGZ1lxQmRQM0lDOVVhRllYUVZGdVpQMUlVbzBjSVhOTjlpWTVRRG15bEhoK09tdzNCSGkyWEFTek94OGY0dTE3akZIa0ZiRjlSK2dJVnQ1Rnc4Wis0d3BnMUc2dnlFdkJCT2JaRVViaGVUWVFTak54MnFxNFlabmVVVmRlSmZ5dW4xR3NyUTFDRm1zcUZVVVdabnFmVWF3QlVMa2U0TUpTNExiZmxqWnljT0J5ODdMMEtqY3hxcXdienZiM21LNmF6RmROWml1bXN4WFRXRlMxOUNXM25HMTA1ZjJQL3hBQW1FQUVBQVFNREJBTUFBd0VBQUFBQUFBQUJFUUFoTVJCQllTQlJjWUV3d2ZCd2thSFIvOW9BQ0FFQkFBRS9FUDVOdmNVNFpraTUrQXRLUTBIckJaN3FlZUp2bWppdEFOZWdyOU45VXpHTUFqc3NhU0dreEI2TmZwdnF2MDMxWDZiNnI5TjlWK20rcVBNVUpyL1NpeDgrbm9nNG9xbUJQYmtzREdOc2JLU0UvRVMweFRIQTJGa1N1Z0VJUVNXWGhjQXNGV1ZmVFIyQ3QxRmhLN0ZUSnRBcGVIU0RDekozZnVoTUVUQXZIUTBPTG05bG8xZ0RKa2VoZ3dZTkQreEUrV0RsQTcwYnA1N29jSWttNWtwdDNmdHJDTUlJUkJFUWFQMEtVd1hXV3VrT0lrdkQ0SEZkd2RQZ2xMMWpBdUpWK1krQ1lMQlUvaXdPQVYyeFpnTWhEQU1ZUGoxQnRJZ1lsdkJLVy95TkZKQkcycHNtMURBOWdvcXdoMkdPQVlUMGtKWkduaWtKdzFCMkp3WkJ2UmliZWhBZzdpSjFsdGlra2lMOGdqa2FNQkZRL3dCbmZ3Yys3cmRQYVlzSkovdlhQTmxnZDhCaGE3UjlzUkozVkpIS3hHdWVaRmIxZERFWnNLMnJMejBaQ2lvMmttNzhlaENUNEVTdCsrdktxSk43ditrNkJMSlRkT0hXZmg5dngzc2JSV2U0OWFOT0VRaCtkdXNhTlMwRUkvUU9Sb3lJU2wzbjJoWGQ0dW9HSHlxQVFHdVRKYUZHemE3WVpMYVkwbVdmdGR3MGwxMXpCYldUSnYxRHNzbkNrcEpFZFNJQ0phV1M0NGZIUXlyK0dURW50TTk5ZU01ZEREY2dIMVF4RVM1S0NiMnVKenVGTXFTRFM4U25DTHdpbGxUQWJDcnNvN1BOaHlRdnh0RkJLQlFobnNMZUczSkM5Wno4SVYzZEJMS2U3WUNDcHJMUmF2Rm05M2tUS1VnWE1rSmxWM1ZaK0IrNnNURllEWUZiV0RkRkFiQXBNRzRtUWJLQkVSQks0Rm51aUVpZVNtQUZkSzhKNFFIUXpac3pOVnl5L0Jjc2I2RW1tQ1BKOEpNaStaNkdiTm5QTTAreGN6MkZEVUtCZGdBQTRLa2FDZk93QzhhQVN0WHFZNlN0NGJNWW94QVNCK0o5Z3dURjVpSVdtQXRNU1ZEWW9LSjNDdWRtSjNab0VlSmdieVllejR2L0FQOEEvd0QvQVA4QS93RC9BUGdnUkw2eFFlaW9iMFJWL0JiOGpzb0EzYkVtTWpZd0pVcUNWaitUdi8vWiJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wNC0yMyJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDQtMjMifSx7ImFhaWQiOiIwMDI0IzE1NTAiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhaWQiOiIwMDI0IzE1NTAiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiRytEUGluS2V5c3RvcmVBbmRyb2lkIn0sImRlc2NyaXB0aW9uIjoiRytEIFBpbktleXN0b3JlQW5kcm9pZCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6InVhZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjJ9LHsibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X2RlciJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfZGVyIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsic29mdHdhcmUiXSwiYXR0YWNobWVudEhpbnQiOlsiaW50ZXJuYWwiXSwidGNEaXNwbGF5IjpbImFueSIsInByaXZpbGVnZWRfc29mdHdhcmUiXSwidGNEaXNwbGF5Q29udGVudFR5cGUiOiJpbWFnZS9wbmciLCJ0Y0Rpc3BsYXlQTkdDaGFyYWN0ZXJpc3RpY3MiOlt7IndpZHRoIjo1NDAsImhlaWdodCI6OTYwLCJiaXREZXB0aCI6MTYsImNvbG9yVHlwZSI6MiwiY29tcHJlc3Npb24iOjAsImZpbHRlciI6MCwiaW50ZXJsYWNlIjowfV0sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlCbURDQ0FUMENCR1FkUFIwd0NnWUlLb1pJemowRUF3SXdWakVMTUFrR0ExVUVCaE1DU1U0eEN6QUpCZ05WQkFnTUFrMUlNUTB3Q3dZRFZRUUhEQVJRVlU1Rk1Rc3dDUVlEVlFRS0RBSkhSREVMTUFrR0ExVUVDd3dDUkZNeEVUQVBCZ05WQkFNTUNFRlZWRWhTVDA5VU1CNFhEVEl6TURNeU5EQTJNRE13T1ZvWERUUXpNRE15TkRBMk1ETXdPVm93VmpFTE1Ba0dBMVVFQmhNQ1NVNHhDekFKQmdOVkJBZ01BazFJTVEwd0N3WURWUVFIREFSUVZVNUZNUXN3Q1FZRFZRUUtEQUpIUkRFTE1Ba0dBMVVFQ3d3Q1JGTXhFVEFQQmdOVkJBTU1DRUZWVkVoU1QwOVVNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVTSXBJL2RLWUNEWWh6d0Qyd1NmWUFPYi9uTmFpUGNXRjIxdnhaay9UZ0QwT0p0Y0QrT1BtNjRud1pkRldTRVlTVzdpT3FucG1KeWRlOG1nci90bkFpekFLQmdncWhrak9QUVFEQWdOSkFEQkdBaUVBM2J2aGF6UUZQd215WGx4Sy94Q1hmaDdnMVgxRW9iTEMzTCsyR09SeHA3Z0NJUUNmTkVUWC9tMkJlYlJMWEk0TE1QMUVRR1BYRkRmN09rNzRVN3hiaU00VmtBPT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCwvOWovNEFBUVNrWkpSZ0FCQVFBQUFRQUJBQUQvMndCREFBTUNBZ01DQWdNREF3TUVBd01FQlFnRkJRUUVCUW9IQndZSURBb01EQXNLQ3dzTkRoSVFEUTRSRGdzTEVCWVFFUk1VRlJVVkRBOFhHQllVR0JJVUZSVC8yd0JEQVFNRUJBVUVCUWtGQlFrVURRc05GQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJUL3dnQVJDQURJQU1nREFTSUFBaEVCQXhFQi84UUFIQUFCQUFNQUF3RUJBQUFBQUFBQUFBQUFBQWNJQ1FRRkJnSUQvOFFBR3dFQkFBSURBUUVBQUFBQUFBQUFBQUFBQUFFREFnVUdCQWYvMmdBTUF3RUFBaEFERUFBQUFheWo2RjV3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVnZDNlRFQ1eExKMzZ4Rm9jNWw4bEdQU1hLc3pORE0wOU5WZE4rOFA4WmRMS0JIcGllK3ZoVHVvZk5YTkF2bStNeVVtUm4xZFFaZ0FITTRjdzFMaWNQMVZMZVF1alR6SjJkSk0zMzVwaGFhVWplYWJLVVJ2ZFY3U1oxZFRTNlN1Rmt3US9iSHI3NjV0MkYxbWRrODdOUHFFK1NZeUhSMWdBTEIxOGx2eVRlalBYUXFtdWdzZ1lkVlZwMXlhSGZYTFczdlVRazJwYUlxZDVNcllxSVBmamRMTm1UWXkyK0NUb3hzYjZJdHRTdTZsQTlCWkhBNnFvQUJ5T09OSFAycFBlbmpycy84QXhtbmNZYkxDaWE2ejB4U21hWnQ5SFJNbFVSdmRGK3F6b1l1czNsZEtWMXU2aWFtM3Q3UHJ0Sm4wR2VudS9BOURXR3h4QUFBZXY4Z3hYS2svT1pxYzlKbWJLbHBNelpHa3pOa2FUTTJScE53TTZFcmgxajh3Mk9JZXlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQLzhRQUtCQUFBUU1EQXdRQkJRRUFBQUFBQUFBQUJRQUVCZ0lEQnhVWElBRVFFellSRWhZd05IQTEvOW9BQ0FFQkFBRUZBdjZiR0lTUmxOWWJGZ1VaUzNGTW1sUGd0S1cyYmZTTHJFMVBTdVcrQzB2QmFYZ3RMd1dsNExTY2lHTHlrMWlnT1Jwa3NRSXhlOStHQVFtcVVQRzdlMDBzUG43WWEzZTVkQnRxOTV4YU9aWUhGQXl4SjdjcEJreGhIaTI4NHRiemkxdk9MVEhMUUozVzFkMkgxaDZ5c0VXczVoMXlLRU9iUnJjZk9nWWl5QkZTV1F0NHlLUFNGN0kzdkRFbnR5eWY3dHdqY29mUmg0Q05ONUFNbEFLM0l3bHkzVlp1Y3NWTU9qMlhMTFJtcDlJKzFHSmoxZE8waDViU0hsQW9DVmpwOVRYSGhZOUpkcER5MmtQSnppdzQwYmRzT21hbTVkWkhZZEI4dzVZWStOZVU0K3JwTHV6YjlibWUvd0FQdGpYNnZ2VlpmK1B1dmxpNGgwWVM5WmRDVk16M2FuSnNqb3AzUGtpM1BraXg1TlRCNlJLZFRvMkZsRzU4a1c1OGtWL0pFaGRXTzJIQWxWNGdzaGtPaEtYOHJGK3RyZmpSeTFJd3g0RzJrUXlTUlIvRjNYREVudHl5Zjd0d2lzTmZTbHlJRk53ZytZU0dpTkE2cXV0ZFhPRVRHN0UzN0IrM0tOTDdlMDZ0UGNYeDk1WHRDQ1cwSUpiUWdrQmdBdU9QMGF4MEpQRXRvUVMyaEJMYUVFbU9NNCt4cnRXcUxGc29WYWhtVXhsbDZXRXZ3eDZVa0l6ZkM1ZUdQS1c4cURPcWRkR3JYUnExMGF0ZEdyWFJxMTBhdGRHclhScTEwYW5NdEN0S1RlWUI3V2s5Skg4a2MvMDMvOFFBSFJFQUFnSUNBd0VBQUFBQUFBQUFBQUFBQUFFUkVnSVFJQ0V4VVAvYUFBZ0JBd0VCUHdINnl4azZSS0Y3cVVTaDR6eWZTMURFbVpFUFdMTXVDOU10V1JZYmdzaHVSZW1YbkZPU3BWaXhZMUpWbFdKUU56eXNXTEZpeFlibjdILy94QUF1RVFBQkF3RUZCZ1VGQVFBQUFBQUFBQUFDQUFFREJBVVJGU0ZTRWhRZ01VRlJFeUl5WVlFUUpGQng4RFAvMmdBSUFRSUJBVDhCL0xWbGQ0UGtqNXI3aXB6emRSMGxReHM3aXFyL0FBUDlLT001WDJRelc1MU9sYnJVam5zdW9LK1dGN2p6WlJtTWdzWTh1Q1UvQ2pjK3lwWXQ2bXVMOXVoRmhhNFZ2VUd0bFUxTUpRa3pFck9rR09WM043c2x2Y0d0a0VvUytoNzFhRk14ZzhyYzJWbFN2ZThYendWWTdVQnN5c3MyR1oyZnI5TUxtN3QvZkNrczZXTVhOM2JKUVFGVUZzQXNMbTd0L2ZDb2FZNlpuWStxcXpZSUNkMVpZM3pYKzNEVlU1VXNtMFBMb29iVUc2NlZsaWNIdXA3UWhraUlHNnFobkNua2NqN0xFNFBkUGFrSFM5Vk5VZFdWM1RzcUttM2VQemMzNFNGamJaSkhaY1JaaTl5d2tkYXdrZGF3a2Rhd2tkYXdrTlNocElvUFMyZjVqLy9FQUVNUUFBRURBZ0FIQ3dvRUJRVUFBQUFBQUFFQ0F3UUFFUkFTRXlFeFFaTUZJQ0lqTXpWUllaR2gwUlF3TWpSU1luR0J3ZUZDYzdHeVUzQ1NzL0JVY25TQ3d2L2FBQWdCQVFBR1B3TCtadDJFWktNRHdwRG5vL0xwb0Y5czdvUGUwOTZQOU5XWWlNTWpvUTJCWEpwN0szV0lRa0h5VnpWN3VBQWdFWkJlbjVWeWFleXVUVDJWeWFleXVUVDJWeWFleXJQd283dzk5b0dsS2loVzU3M1MzblIvU2ZwVnBUZU15bzhCOXZPaFhtaTlJdW5jNWs4TWo4WjlrVWhsbHRMVFNCWktFaXdGRitVK2lPMFB4dUt0UlMwSkVyM20yN0R2SXIxS1oySjhhbXcyNGtwSzMyVk5ncXhiQzQrT0Fma0wrbUI2QTlGa09PTld1cEdMYk9MOVBYWHFVenNUNDE2bE03RStOZXBUT3hQalFTNFg0blc2M203cjBsNk84aDlwV2hiYXJpbkk4bHBMekxnc3BDcTRGM0lMMmRsdzZ2ZFBYNWhtT3lNWjExWVFrZFpxUEJZOUZwTmlmYU9zMDVNZjRYNFcyOWExZEZHUk1keHZaUVBSUU9nRGVqOGhmMHdUL2czL0FHMDcwUFJYT0xQS01xOUZZL3pYVE0yTWVBdlNrNlVuV0RVaUV1Mk1vWGJWN0s5UnBUYXhpclNiRUhVZCswdFF1STdhbmZwOWNIa1FQRXcwZ1c5NDV6OU1JVUJIc2MvSzFvamJXdEViYTBKY3NNNUhKcVR3RjNPQ1ZOaWhuSU9ZbUxqdVdPWklGYUkyMXJSRzJ0T3Z1Q1BpTnBLMVdjMURDL3VjbzhWSVJqcEh2ajdmcGduQklzbDBoNGZNWisrKy9tOVBrMy9vWU4xY2JUbHpoYS8yanpHNlAvSGMvYWNPNXVMMHIvWXJBbTMrbVJmdE8vanBVYkprSVV6OVIzZ1lFYm9KVHhNdE9jKytNMzZXd2hJbml3emNpMzRWemdOZzM0VnpnTmczNFVJczJYbG1Na3BXTGswcHovSVlKY1NITXlVZEdKaXB5U0RwUURyRmM0RFlOK0ZjNERZTitGT011VGdwdHhKU29aRkdnL0xESjNVV25pbVU1SkI2VkhUM2ZyZzNRV2szUTJySkQvcUxIdnZ2MjNtbFlqamFncEtocUlxUE5hdGRZc3RQc3IxaW5ZVWtjQmVoUTBvVnFJb3R5bTd0RThXK24wRi81MGIwZmtMK21DZjhHLzdhZDZBeWd0UlFlTWtxSEJIdzZUVE1PS25GWmFGdXM5WnArVVNNc1JpTXA2VjZ2R2lwUnVvNXlUNWc0MTNJTHZMTkQ5dzY2Ymt4WFV2TUxGMHFUU21ubTB1dHEwb1dMZzBWQ0txT1QvQmNJN3EweXRyOXEweXRyOXEweXRyOXE4c2lGL0s0cFR4aTdqOU1EczZTWDhzNWErSXV3ekMzUjFWcGxiWDdWcGxiWDdWcGxiWDdVRmVSbVFvZngxbFhkb3BLRzBKYlFuTUVwRmdLY2xUSFF5eWpXZGZVS3l5cnR4bTh6TFhzanArUG1zZUU5WkI5TmxlZEN2bFFUUGJYQWQxbTJPanV6MWR2ZFNJZW92QUd1Y0l1MlRYT0VYYkpybkNMdGsxemhGMnlhNXdpN1pOYzRSZHNtdWNJdTJUWE9FWGJKcm5DTHRrMWQzZFNJT29PaFI3QlJUdWN5dWE3cVd2Z0k4YXkwNTdIdDZMWXpJUjhCL003LzhRQUtCQUJBQUVCQlFnREFRRUFBQUFBQUFBQUFSRUFJVEZCVVdFUWNZR1JvY0h3OFNBdzBiRncvOW9BQ0FFQkFBRS9JZjhBVFlqbzRhRFRNME9NVVk2M3ZFdEJaRythQkZ1RCtoWHE5RzVFQ0hOc3U1YUJOUFY2OVhyMWV2VjY5WHBjNVlmMnltWk8wUloxVCtpZ1o0VGdoT0RvL1VUQnU2Ti9OL1hBMzBhNDBTT1FWZXFyQWQyL1NvTUhndXJPbXhHRWhucENBdVczNFVTTHFobGhNU1BnUm8wYnB0c3QzTzZYYWFvYmlWQ0VKTWllWTBERTAzaG0wSFU0eDg5ZHFYSkJSbUVTRGJpdXF5MWJwaXdNTHVIOVhBR2wzT1c3Y3N2NjQvWlJ3VnNvU3VPTStZcWZ1ZVFmTkZDcUp2d3ZVNkxUKzI3K0JoUG5aa0gzT3c5WjhOaFplaGFZbkpIRGJBNW9QQlhuUHl2T2ZsRTJERzh4RmthYkhtUkdJR3NqTWE4NStWNXo4cS9VUEZnbHcwMnBOa1pmSjN6NU5uSHZJQ2ZtRkIzVzYzN2JEYVBNNVlkSTIrV3krdFFGYkp0TjF0c1diY3g2Zm5QQXBYTk9vTGpzVEJEQnVCRWNRdWUwb1lJR0Z0b1VKMnJCTE1pTFFkaG5BcFlNbGFqZXUxQ2hpRmdYa0lTekx0U2dKZGtyRzdZd3dnNFowSHpOQXZSaUpIblNoQ0MyNjcvUkdzY3VYWWMwZnBqVGxMTWRodndkVnYyVWNJTkJyQ2NUK0E0eFZqMWxONWptSzIxYXRFV01kQmUwS2Z3MlFsWDZISU9oZURMUmRic2tuRHFLeC9IU2lKOUJadFJxMHk4eFBOSWNDdlNxZWxVOUtvYlFOaElHK3lHekRkZjdBRUdnVjZWVDBxbnBWTU5JRWp1Y1NnREZEZ1pBVVNXcmJ4WUJpdVZMUWxudkVhc2VCaDlTK1laNWg1dFNHc0RkRkx4c09YR2pVNS9CRm12UHU5ZWZkNjgrNzE1OTNyejd2WG4zZXZQdTllZmQ2OCs3MHlpbjY0TFdCdVFSMXR0Ym9OOVNVNlZHV0J2di93Qk8vOW9BREFNQkFBSUFBd0FBQUJENzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc2b01qZzR4dlAzNzc2bXB6eXl2emVwcjc3NzNqNVQvejVlL3o3NzY0cHY4QXZxLzZJRysrKyt2Yy93RC9BUDhBdGY4QXZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnYveEFBZUVRRUFBZ0VGQVFFQUFBQUFBQUFBQUFBQkFCRXhFQ0FoVVdGQlVQL2FBQWdCQXdFQlB4RDliTWRCcXpNRVVNejJsbjJCaEVScDJCYlVXQ1puaExCeEFweFBLSW1aUTFEOTJjUkR4ckFXb0F0MGl3aHNib0RUSHJwQVJqQ2pXaG01dEdvTXpMOVMvVXYxTDlTL1VYTDlqLy9FQUNnUkFRQUJBUVVJQXdFQkFBQUFBQUFBQUFFQUVTRkJZWEhoSURGUmdaR2hzZEhCOFBGUUVQL2FBQWdCQWdFQlB4RCtzYjMxOXVOWURvN3RQUkZVMEU4NXp2a29kVnZtTjdlNCtLdEpVKzN3N3pKK0dLelZiR0dSWXRWcVcvVEZnWXFCZFAzSUM5VWFGWVhRVkZ1WlAxSVVvMGNJWE5OOWlZNVFEbXlsSGgrT213M0JIaTJYQVN6T3g4ZjR1MTdqRkhrRmJGOVIrZ0lWdDVGdzhaKzR3cGcxRzZ2eUV2QkJPYlpFVWJoZVRZUVNqTngycXE0WVpuZVVWZGVKZnl1bjFHc3JRMUNGbXNxRlVVV1pucWZVYXdCVUxrZTRNSlM0TGJmbGpaeWNPQnk4N0wwS2pjeHFxd2J6dmIzbUs2YXpGZE5aaXVtc3hYVFdGUzE5Q1czbkcxMDVmMlAveEFBbUVBRUFBUU1EQkFNQUF3RUFBQUFBQUFBQkVRQWhNUkJCWVNCUmNZRXd3ZkJ3a2FIUi85b0FDQUVCQUFFL0VQNU52Y1U0WmtpNStBdEtRMEhyQlo3cWVlSnZtaml0QU5lZ3I5TjlVekdNQWpzc2FTR2t4QjZOZnB2cXYwMzFYNmI2cjlOOVYrbStxUE1VSnIvU2l4OCtub2c0b3FtQlBia3NER05zYktTRS9FUzB4VEhBMkZrU3VnRUlRU1dYaGNBc0ZXVmZUUjJDdDFGaEs3RlRKdEFwZUhTREN6SjNmdWhNRVRBdkhRME9MbTlsbzFnREprZWhnd1lORCt4RStXRGxBNzBicDU3b2NJa201a3B0M2Z0ckNNSUlSQkVRYVAwS1V3WFdXdWtPSWt2RDRIRmR3ZFBnbEwxakF1SlYrWStDWUxCVS9pd09BVjJ4WmdNaERBTVlQajFCdElnWWx2QktXL3lORkpCRzJwc20xREE5Z29xd2gyR09BWVQwa0paR25pa0p3MUIySndaQnZSaWJlaEFnN2lKMWx0aWtraUw4Z2prYU1CRlEvd0JuZndjKzdyZFBhWXNKSi92WFBObGdkOEJoYTdSOXNSSjNWSkhLeEd1ZVpGYjFkREVac0syckx6MFpDaW8ya203OGVoQ1Q0RVN0Kyt2S3FKTjd2K2s2QkxKVGRPSFdmaDl2eDNzYlJXZTQ5YU5PRVFoK2R1c2FOUzBFSS9RT1JveUlTbDNuMmhYZDR1b0dIeXFBUUd1VEphRkd6YTdZWkxhWTBtV2Z0ZHcwbDExekJiV1RKdjFEc3NuQ2twSkVkU0lDSmFXUzQ0ZkhReXIrR1RFbnRNOTllTTVkRERjZ0gxUXhFUzVLQ2IydUp6dUZNcVNEUzhTbkNMd2lsbFRBYkNyc283UE5oeVF2eHRGQktCUWhuc0xlRzNKQzlaejhJVjNkQkxLZTdZQ0NwckxSYXZGbTkza1RLVWdYTWtKbFYzVlorQis2c1RGWURZRmJXRGRGQWJBcE1HNG1RYktCRVJCSzRGbnVpRWllU21BRmRLOEo0UUhRelpzek5WeXkvQmNzYjZFbW1DUEo4Sk1pK1o2R2JOblBNMCt4Y3oyRkRVS0JkZ0FBNEtrYUNmT3dDOGFBU3RYcVk2U3Q0Yk1Zb3hBU0IrSjlnd1RGNWlJV21BdE1TVkRZb0tKM0N1ZG1KM1pvRWVKZ2J5WWV6NHYvQVA4QS93RC9BUDhBL3dEL0FQZ2dSTDZ4UWVpb2IwUlYvQmI4anNvQTNiRW1Nall3SlVxQ1ZqK1R2Ly9aIn0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTA0LTE2In1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wNC0xNiJ9LHsiYWFndWlkIjoiN2QxMzUxYTYtZTA5Ny00ODUyLWI4YmYtYzlhYzVjOWNlNGEzIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI3ZDEzNTFhNi1lMDk3LTQ4NTItYjhiZi1jOWFjNWM5Y2U0YTMiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiWXViaUtleSBCaW8gU2VyaWVzIC0gTXVsdGktcHJvdG9jb2wgRWRpdGlvbiJ9LCJkZXNjcmlwdGlvbiI6Ill1YmlLZXkgQmlvIFNlcmllcyAtIE11bHRpLXByb3RvY29sIEVkaXRpb24iLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5MjIyLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX0seyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AzODRyMV9lY2RzYV9zaGEzODRfcmF3Iiwic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciLCJlZDI1NTE5X2VkZHNhX3NoYTUxMl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIiwiYmFEZXNjIjp7InNlbGZBdHRlc3RlZEZSUiI6MC4wLCJzZWxmQXR0ZXN0ZWRGQVIiOjAuMCwiaUFQQVJUaHJlc2hvbGQiOjAuMCwibWF4VGVtcGxhdGVzIjo1LCJtYXhSZXRyaWVzIjo1LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo2LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjYsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIiwiYmFEZXNjIjp7InNlbGZBdHRlc3RlZEZSUiI6MC4wLCJzZWxmQXR0ZXN0ZWRGQVIiOjAuMCwiaUFQQVJUaHJlc2hvbGQiOjAuMCwibWF4VGVtcGxhdGVzIjo1LCJtYXhSZXRyaWVzIjo1LCJibG9ja1Nsb3dkb3duIjowfX1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJREhqQ0NBZ2FnQXdJQkFnSUVHMEJUOXpBTkJna3Foa2lHOXcwQkFRc0ZBREF1TVN3d0tnWURWUVFERXlOWmRXSnBZMjhnVlRKR0lGSnZiM1FnUTBFZ1UyVnlhV0ZzSURRMU56SXdNRFl6TVRBZ0Z3MHhOREE0TURFd01EQXdNREJhR0E4eU1EVXdNRGt3TkRBd01EQXdNRm93TGpFc01Db0dBMVVFQXhNaldYVmlhV052SUZVeVJpQlNiMjkwSUVOQklGTmxjbWxoYkNBME5UY3lNREEyTXpFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUUMvandZdWhCVmxxYWlZV0VNc3JXRmlzZ0orUHRNOTFlU3JwSTRUSzdVNTNtd0NJYXdTREh5OHZVbWs1TjJLQWo5YWJ2VDlOUDVTTVMxaFFpM3VzeG9ZR29uWFFnZk82Wlh5VUE5YStLQWtxZEZuQm5seXVnU2VDT2VwOEVkWkZmc2FSRnRNamt3ejVHY3oyUHk0dklZdkNkTUhQdHdhejBiVnV6bmV1ZUlFejZUblFqRTYzUmR0Mnpid25lYndURzVaeWJlV1N3Ynp5K0JKMzRaSGNVaFBBWTg5eUpRWHVFMEl6TVpGY0VCYlBOUmJXRUNSS2dqcS8vcVQ5bm1ET0ZWbFNSQ3Qyd2lxUFN6bHV3bit2K3N1UUVCc1VqVEdNRWQyNXRLWFhUa05XMjF3SVdieGVTeVVvVFh3THZHUzZ4bHdRU2dOcGsycVhZd2Y4aVhnN1ZXWkFnTUJBQUdqUWpCQU1CMEdBMVVkRGdRV0JCUWdJdnowYk5HSmhqZ3BUb2tzeUtwUDl4djlvREFQQmdOVkhSTUVDREFHQVFIL0FnRUFNQTRHQTFVZER3RUIvd1FFQXdJQkJqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFqdmp1T01EU2ErSlhGQ0x5QktzeWNYdEJWWnNKNFVlM0xiYUVzUFk0TVlOL2hJUTVaTTVwN0VqZmNuTUc0Q3RZa05zZk5IYzBBaEJMZHE0NXJuVDg3cS82TzN2VUV0Tk1hZmJoVTZrdGhYN1krOVhGTjlOcG1ZeHIrZWtWWTV4T3hpOGg5SkRJZ29NUDRWQjF1UzBhdW5MMUlHcXJOb29MOW1tRm5MMmtMVlZlZTYvVlI2QzUrS1NUQ01DV3BwTXVKSVpJSTJ2OW80ZGtvWjhZN1FSalFsTGZZemQzcUd0S2J3N3hhRjFVc0cvNXhVYi9CdHdiMlgyZzRJbnBpQi95dC8zQ3BRWHBpV1gvSzRtQnZVS2lHbjA1WnNxZVkxZ3g0ZzB4TEJxY1U5cHNteVB6SytWc2d3MmplUlE1SmxLRHlxRTBoZWJmQzF0dkZ1MENDckpGY3c9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFmQ0FZQUFBQ0dWcytNQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUhZWUFBQjJHQVYyaUU0RUFBQWJOU1VSQlZGaEhwVmQ3VE5WMUZELzNkNTl3ZVFTSWdTOUFRQVhjRkxBUVppOWZwZVZ6MXRZL1dUWnI1V3hwYzdXNWtuTGE1akkzWjg1c3JTMm5NMnNqdFd3WlM3SVVINEg0eENuRVF4NERBWkY3NFY3dXM4ODV2OS9sSW5CdlZKL0I0UHY5bnUvNW51LzVudk01NTZmekEvUXYwSGIvSXJYM1ZGS1BvNDVjbm00aW5VSVdZd0xGUm1aUVV1d2pGRy9OMWlSSGgxRVowTlJWUnVkcXQxQmQrMm5TS3lTL09oeXMwK2xrM2UvM2tROXF2RDRaVXRhNFZWU1V1WTBlaXB5aVRoQWZvY29PUlZnRHV1dzNxS1JpQWQzcmJjRXRqVGpZSW9mNldhSHNDbXpWUFdDTXgrY2doOHRMcVdNS2FNV3NVakxxbzJSdEpJUTBvT3ptZXJwUXU0ZXNaZ3NPTmtHeEg3ZDBrZHZUVDE3czRPTVU3Vkk4WmhqZ0dhTStBcTlpRU51OFBpZjF1ZHowN013dktXZjhHbFZvQ0VZMDRQQzVXZFRhWFlGYlI4dk52TDUrM0tnZmI1eE5NeWE5UmFtSml5bmFNbEdUVnRGbHI2YmE5dStwcW5FWDR1TXVSUmdqU1lFaHJON3V0RkZlNmxxYWw3TmZrdzVpbUFHSHluUHBiazhWbVkweHN0bnB0bEZDVkNZdHpUdUJOODNRcE1MalR0ZXZkUHpTVW5KN2U4bWtqeFozOWZYYktEZmxkWnFidlUrVFVnR25CVkY2ZlEyaVBIZzRXMTZVV1V3dnpiazE2c01aRStQbjBwdno3SlNldUF5ZXM4bGNwQ21hS3VvL3ArcVdyMlVjd0lBSFdydlAwWUV6aFhBdExBYnNzSGhwN2lHYW12eWlqUDhyeXFyWFVXWDlYb293eHlBdWZOQnJwNDNQT0JGWFpsa2Y4TURSaXFjcHlvd0F3cHV6MngrZld2ei9EdGRlOXNtc3p5Z3RjUjZDMXdiZHpCbDZPbHE1V05ZWTRvR2F0aEpNcmtURXgwakFSU0hBVnMrNXJZa1FOWGIrUWdmUExzUTZnWHlJbnNyZVFmbXBtN1JWRllmTDg2bjFmaVVPa1l2U2hrVVB4dmJ1a3pveTZLMWloTTFobzNYelc2RXZTZlhBK2RwaVdHYVdkK2RvWHpMem1Hd0tZRkxDQXNSQWxQQkFoTWxDRlhVN3RCVVZQcjhIZ1ZjSkhXcStGMDBwbHIrRE1UZHJQNHp2eFkxMWtOTWh4VCtTZVRHZytkNFY1TFFKaXR5VUdKTkI4VkZac2pnWUJaTS9JSS9YQ1RrajBxeURPcEYyQVZRMTdDSWpVcC9EblQxVWtMNUY1Z2RqK3NTMXdnMWdFM2dpZ202MGZDWHpTblBYYnlBUGJJWHYrSURwRTE2VGhhSElTOXNreWhsbU1FNUYzY2ZxQUtocTJDMEU1UEgxZ1lhWGFMUERrWkcwSERKT25LV0hwNTFJMHo1U091eDhlMVdBdVp6ZEhRclRrcDhUbWpYb0krbGEwd0dac3p1YnFiTzNpZlE2QS9XN3ZWU1lzVjNtUjBKS3drS2M0V0hpQmttUjhJM0NDZ0k4N29PTDRxelQ1UCtSVUpCZWpFT2dBUEs4aFlQemF0TStlSVRwMklPOXlUUW1lcm9tUFJ4eDFxeEFjc2lsZS91YlNlRWJjV1FHWUVDZ2hjTFkySHlLam9nakgyNWhNcGpwVXYxT3VnbGk0ZWgyZVJ3ME8zMmJKamt5dUNnTnpnMHZ6bFlNU2lTczB1b280TUc3aE1PakNFYVgxeUZFMG5TdmpCenVUbkVwSzg2WjhJb3FGQUl1Ync4a2c5QXJFYVJFV1NaSStqSDRYYnA2ZzlFOUVuSlQzb2FSekROK01VSkJRREhuNTZhOG9VbUVCdXNPeEJzL041K3RKRWJQa0FGRGo4VUd2T3MvSVd2Y1NnbEdCaHZTNy9GVFlmcFdHWWREWThmUEF4V1NBMzVzVEM0cDQrTG00QWFxSW9QZVF0ZnVmSzZKaDBaaHhsYnNVWE9TbVhOaWZENVpUQWt5RG9mYmJjY2x4bkE4V05BcXhDYlJOeWtoWHhRcGFEdzY3ZlhVWWJzaUcwS2h0djJvZUl2aDhyaFFNWU9jRUFxWEcvZUkrem5nT2M1eXhyOHE4MklBTTFjL0ZMRk9wbHF1NWVGUVhyTVp6R2NWQ2pZYkxXRzVJNEJUMWV1UnJsYnh0Tk90TWl0RERFaExYSUl5bkFBdnVPRVdFM1gzTmRBZnQ5NFZnYUc0MlhJUXQwWlg2UGVDRS9xUUZlOXJLNkh4N1lVNTBLdkg3Zlc0ZlMrcTdLS0JKeHNnZ0JYNXBTQUdoMWpJclZoNXpRNnczUmZhYWhCWG0vYUNiQ1pUakNVRlVUeVdacVc5cDYyTWpKUFhWcU9yUGdNTzROdjc0R2tmK293ZnROVkJEUW5qRkpxSFN3MTdwWHZoV1c1S1pxZS9RNDlOL1VTVENBVldvUVhGSUhCSFhYZTNGUHJVRHN1R0RtdEYvaEhLVEhwZWt4aGlBT1BJK1NKcTZTNkhGNEk5WVd6a0JKVG80NmlVTXpXcDhQaXIvUmlkdUx4S1lzU2tzVjh2TGxPUXZoR1gyWWxSME9CaEJqQyt1L2dFY3ZZMEFwSzdZazQxTnhqUFNRbldGSFRGNjZVcmpnZXZCOEN1NWErbDJ2WVNSUHR1VkRvNzNoaGRNU0huVVg3dFRqc1ZaR3hBbC9XcHRpT0lFUTFnbkwyOW1YNi90UjF0bWxrWWo4VzRYK0NTaldjVURHWTFOcFMvQzdoU0txaU1MTS9sMlFtU1daNzNEZHorZ2lvOEJDRU5ZUFE0NnFua3p3WFVicXZCa3hqVVFzV2ZaRmdidW8zckFmK3dON2pPTzkwK3lueDRQaTNMKzBuWUwxU2NoRFVnQVA0Z1BWLzdJZDFxKzFIU2htdUdrSXFXUlBneXhNRnFQOEhmalRualh3WTViUWZiSmN0Nk9JektnTUhvdEYvSGUxZWdzYXhIU3FHNndmZG1RNXg4TnlURkZxQmNwMmlTb3dIUjN5azUrMzZoRjd2WEFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJGSURPXzJfMCIsIkZJRE9fMl8xX1BSRSIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsImxhcmdlQmxvYktleSIsImNyZWRCbG9iIiwibWluUGluTGVuZ3RoIl0sImFhZ3VpZCI6IjdkMTM1MWE2ZTA5NzQ4NTJiOGJmYzlhYzVjOWNlNGEzIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJ1diI6ZmFsc2UsInBpblV2QXV0aFRva2VuIjp0cnVlLCJsYXJnZUJsb2JzIjp0cnVlLCJiaW9FbnJvbGwiOmZhbHNlLCJ1c2VyVmVyaWZpY2F0aW9uTWdtdFByZXZpZXciOmZhbHNlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6ZmFsc2UsImFsd2F5c1V2Ijp0cnVlfSwibWF4TXNnU2l6ZSI6MTI4MCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0Ijo4LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjEyOCwidHJhbnNwb3J0cyI6WyJ1c2IiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotOH0seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTM1fV0sIm1heFNlcmlhbGl6ZWRMYXJnZUJsb2JBcnJheSI6MTAyNCwibWluUElOTGVuZ3RoIjo2LCJmaXJtd2FyZVZlcnNpb24iOjMyOTIyMiwibWF4Q3JlZEJsb2JMZW5ndGgiOjMyLCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6MSwicHJlZmVycmVkUGxhdGZvcm1VdkF0dGVtcHRzIjozLCJ1dk1vZGFsaXR5IjoyLCJyZW1haW5pbmdEaXNjb3ZlcmFibGVDcmVkZW50aWFscyI6MjV9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0wNi0wNCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjkyMjIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWXViaUtleSBCaW8gU2VyaWVzIC0gTXVsdGktcHJvdG9jb2wgRWRpdGlvbiIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjQwNjA0MDA1IiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMDYtMDQiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5MjIyfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI0LTA2LTA0In0seyJhYWlkIjoiMDAyNCMxNTYwIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWlkIjoiMDAyNCMxNTYwIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkcrRG1PVFBLZXlzdG9yZUFuZHJvaWQifSwiZGVzY3JpcHRpb24iOiJHK0QgbU9UUEtleXN0b3JlQW5kcm9pZCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6InVhZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9LHsibWFqb3IiOjEsIm1pbm9yIjoyfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X2RlciJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfZGVyIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJzb2Z0d2FyZSJdLCJhdHRhY2htZW50SGludCI6WyJpbnRlcm5hbCJdLCJ0Y0Rpc3BsYXkiOlsiYW55Il0sInRjRGlzcGxheUNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbiIsImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlCbURDQ0FUMENCR1FkUFIwd0NnWUlLb1pJemowRUF3SXdWakVMTUFrR0ExVUVCaE1DU1U0eEN6QUpCZ05WQkFnTUFrMUlNUTB3Q3dZRFZRUUhEQVJRVlU1Rk1Rc3dDUVlEVlFRS0RBSkhSREVMTUFrR0ExVUVDd3dDUkZNeEVUQVBCZ05WQkFNTUNFRlZWRWhTVDA5VU1CNFhEVEl6TURNeU5EQTJNRE13T1ZvWERUUXpNRE15TkRBMk1ETXdPVm93VmpFTE1Ba0dBMVVFQmhNQ1NVNHhDekFKQmdOVkJBZ01BazFJTVEwd0N3WURWUVFIREFSUVZVNUZNUXN3Q1FZRFZRUUtEQUpIUkRFTE1Ba0dBMVVFQ3d3Q1JGTXhFVEFQQmdOVkJBTU1DRUZWVkVoU1QwOVVNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVTSXBJL2RLWUNEWWh6d0Qyd1NmWUFPYi9uTmFpUGNXRjIxdnhaay9UZ0QwT0p0Y0QrT1BtNjRud1pkRldTRVlTVzdpT3FucG1KeWRlOG1nci90bkFpekFLQmdncWhrak9QUVFEQWdOSkFEQkdBaUVBM2J2aGF6UUZQd215WGx4Sy94Q1hmaDdnMVgxRW9iTEMzTCsyR09SeHA3Z0NJUUNmTkVUWC9tMkJlYlJMWEk0TE1QMUVRR1BYRkRmN09rNzRVN3hiaU00VmtBPT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCwvOWovNEFBUVNrWkpSZ0FCQVFBQUFRQUJBQUQvMndCREFBTUNBZ01DQWdNREF3TUVBd01FQlFnRkJRUUVCUW9IQndZSURBb01EQXNLQ3dzTkRoSVFEUTRSRGdzTEVCWVFFUk1VRlJVVkRBOFhHQllVR0JJVUZSVC8yd0JEQVFNRUJBVUVCUWtGQlFrVURRc05GQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJUL3dnQVJDQURJQU1nREFTSUFBaEVCQXhFQi84UUFIQUFCQUFNQUF3RUJBQUFBQUFBQUFBQUFBQWNJQ1FRRkJnSUQvOFFBR3dFQkFBSURBUUVBQUFBQUFBQUFBQUFBQUFFREFnVUdCQWYvMmdBTUF3RUFBaEFERUFBQUFheWo2RjV3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVnZDNlRFQ1eExKMzZ4Rm9jNWw4bEdQU1hLc3pORE0wOU5WZE4rOFA4WmRMS0JIcGllK3ZoVHVvZk5YTkF2bStNeVVtUm4xZFFaZ0FITTRjdzFMaWNQMVZMZVF1alR6SjJkSk0zMzVwaGFhVWplYWJLVVJ2ZFY3U1oxZFRTNlN1Rmt3US9iSHI3NjV0MkYxbWRrODdOUHFFK1NZeUhSMWdBTEIxOGx2eVRlalBYUXFtdWdzZ1lkVlZwMXlhSGZYTFczdlVRazJwYUlxZDVNcllxSVBmamRMTm1UWXkyK0NUb3hzYjZJdHRTdTZsQTlCWkhBNnFvQUJ5T09OSFAycFBlbmpycy84QXhtbmNZYkxDaWE2ejB4U21hWnQ5SFJNbFVSdmRGK3F6b1l1czNsZEtWMXU2aWFtM3Q3UHJ0Sm4wR2VudS9BOURXR3h4QUFBZXY4Z3hYS2svT1pxYzlKbWJLbHBNelpHa3pOa2FUTTJScE53TTZFcmgxajh3Mk9JZXlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQLzhRQUtCQUFBUU1EQXdRQkJRRUFBQUFBQUFBQUJRQUVCZ0lEQnhVWElBRVFFellSRWhZd05IQTEvOW9BQ0FFQkFBRUZBdjZiR0lTUmxOWWJGZ1VaUzNGTW1sUGd0S1cyYmZTTHJFMVBTdVcrQzB2QmFYZ3RMd1dsNExTY2lHTHlrMWlnT1Jwa3NRSXhlOStHQVFtcVVQRzdlMDBzUG43WWEzZTVkQnRxOTV4YU9aWUhGQXl4SjdjcEJreGhIaTI4NHRiemkxdk9MVEhMUUozVzFkMkgxaDZ5c0VXczVoMXlLRU9iUnJjZk9nWWl5QkZTV1F0NHlLUFNGN0kzdkRFbnR5eWY3dHdqY29mUmg0Q05ONUFNbEFLM0l3bHkzVlp1Y3NWTU9qMlhMTFJtcDlJKzFHSmoxZE8waDViU0hsQW9DVmpwOVRYSGhZOUpkcER5MmtQSnppdzQwYmRzT21hbTVkWkhZZEI4dzVZWStOZVU0K3JwTHV6YjlibWUvd0FQdGpYNnZ2VlpmK1B1dmxpNGgwWVM5WmRDVk16M2FuSnNqb3AzUGtpM1BraXg1TlRCNlJLZFRvMkZsRzU4a1c1OGtWL0pFaGRXTzJIQWxWNGdzaGtPaEtYOHJGK3RyZmpSeTFJd3g0RzJrUXlTUlIvRjNYREVudHl5Zjd0d2lzTmZTbHlJRk53ZytZU0dpTkE2cXV0ZFhPRVRHN0UzN0IrM0tOTDdlMDZ0UGNYeDk1WHRDQ1cwSUpiUWdrQmdBdU9QMGF4MEpQRXRvUVMyaEJMYUVFbU9NNCt4cnRXcUxGc29WYWhtVXhsbDZXRXZ3eDZVa0l6ZkM1ZUdQS1c4cURPcWRkR3JYUnExMGF0ZEdyWFJxMTBhdGRHclhScTEwYW5NdEN0S1RlWUI3V2s5Skg4a2MvMDMvOFFBSFJFQUFnSUNBd0VBQUFBQUFBQUFBQUFBQUFFUkVnSVFJQ0V4VVAvYUFBZ0JBd0VCUHdINnl4azZSS0Y3cVVTaDR6eWZTMURFbVpFUFdMTXVDOU10V1JZYmdzaHVSZW1YbkZPU3BWaXhZMUpWbFdKUU56eXNXTEZpeFlibjdILy94QUF1RVFBQkF3RUZCZ1VGQVFBQUFBQUFBQUFDQUFFREJBVVJGU0ZTRWhRZ01VRlJFeUl5WVlFUUpGQng4RFAvMmdBSUFRSUJBVDhCL0xWbGQ0UGtqNXI3aXB6emRSMGxReHM3aXFyL0FBUDlLT001WDJRelc1MU9sYnJVam5zdW9LK1dGN2p6WlJtTWdzWTh1Q1UvQ2pjK3lwWXQ2bXVMOXVoRmhhNFZ2VUd0bFUxTUpRa3pFck9rR09WM043c2x2Y0d0a0VvUytoNzFhRk14ZzhyYzJWbFN2ZThYendWWTdVQnN5c3MyR1oyZnI5TUxtN3QvZkNrczZXTVhOM2JKUVFGVUZzQXNMbTd0L2ZDb2FZNlpuWStxcXpZSUNkMVpZM3pYKzNEVlU1VXNtMFBMb29iVUc2NlZsaWNIdXA3UWhraUlHNnFobkNua2NqN0xFNFBkUGFrSFM5Vk5VZFdWM1RzcUttM2VQemMzNFNGamJaSkhaY1JaaTl5d2tkYXdrZGF3a2Rhd2tkYXdrTlNocElvUFMyZjVqLy9FQUVNUUFBRURBZ0FIQ3dvRUJRVUFBQUFBQUFFQ0F3UUFFUkFTRXlFeFFaTUZJQ0lqTXpWUllaR2gwUlF3TWpSU1luR0J3ZUZDYzdHeVUzQ1NzL0JVY25TQ3d2L2FBQWdCQVFBR1B3TCtadDJFWktNRHdwRG5vL0xwb0Y5czdvUGUwOTZQOU5XWWlNTWpvUTJCWEpwN0szV0lRa0h5VnpWN3VBQWdFWkJlbjVWeWFleXVUVDJWeWFleXVUVDJWeWFleXJQd283dzk5b0dsS2loVzU3M1MzblIvU2ZwVnBUZU15bzhCOXZPaFhtaTlJdW5jNWs4TWo4WjlrVWhsbHRMVFNCWktFaXdGRitVK2lPMFB4dUt0UlMwSkVyM20yN0R2SXIxS1oySjhhbXcyNGtwSzMyVk5ncXhiQzQrT0Fma0wrbUI2QTlGa09PTld1cEdMYk9MOVBYWHFVenNUNDE2bE03RStOZXBUT3hQalFTNFg0blc2M203cjBsNk84aDlwV2hiYXJpbkk4bHBMekxnc3BDcTRGM0lMMmRsdzZ2ZFBYNWhtT3lNWjExWVFrZFpxUEJZOUZwTmlmYU9zMDVNZjRYNFcyOWExZEZHUk1keHZaUVBSUU9nRGVqOGhmMHdUL2czL0FHMDcwUFJYT0xQS01xOUZZL3pYVE0yTWVBdlNrNlVuV0RVaUV1Mk1vWGJWN0s5UnBUYXhpclNiRUhVZCswdFF1STdhbmZwOWNIa1FQRXcwZ1c5NDV6OU1JVUJIc2MvSzFvamJXdEViYTBKY3NNNUhKcVR3RjNPQ1ZOaWhuSU9ZbUxqdVdPWklGYUkyMXJSRzJ0T3Z1Q1BpTnBLMVdjMURDL3VjbzhWSVJqcEh2ajdmcGduQklzbDBoNGZNWisrKy9tOVBrMy9vWU4xY2JUbHpoYS8yanpHNlAvSGMvYWNPNXVMMHIvWXJBbTMrbVJmdE8vanBVYkprSVV6OVIzZ1lFYm9KVHhNdE9jKytNMzZXd2hJbml3emNpMzRWemdOZzM0VnpnTmczNFVJczJYbG1Na3BXTGswcHovSVlKY1NITXlVZEdKaXB5U0RwUURyRmM0RFlOK0ZjNERZTitGT011VGdwdHhKU29aRkdnL0xESjNVV25pbVU1SkI2VkhUM2ZyZzNRV2szUTJySkQvcUxIdnZ2MjNtbFlqamFncEtocUlxUE5hdGRZc3RQc3IxaW5ZVWtjQmVoUTBvVnFJb3R5bTd0RThXK24wRi81MGIwZmtMK21DZjhHLzdhZDZBeWd0UlFlTWtxSEJIdzZUVE1PS25GWmFGdXM5WnArVVNNc1JpTXA2VjZ2R2lwUnVvNXlUNWc0MTNJTHZMTkQ5dzY2Ymt4WFV2TUxGMHFUU21ubTB1dHEwb1dMZzBWQ0txT1QvQmNJN3EweXRyOXEweXRyOXEweXRyOXE4c2lGL0s0cFR4aTdqOU1EczZTWDhzNWErSXV3ekMzUjFWcGxiWDdWcGxiWDdWcGxiWDdVRmVSbVFvZngxbFhkb3BLRzBKYlFuTUVwRmdLY2xUSFF5eWpXZGZVS3l5cnR4bTh6TFhzanArUG1zZUU5WkI5TmxlZEN2bFFUUGJYQWQxbTJPanV6MWR2ZFNJZW92QUd1Y0l1MlRYT0VYYkpybkNMdGsxemhGMnlhNXdpN1pOYzRSZHNtdWNJdTJUWE9FWGJKcm5DTHRrMWQzZFNJT29PaFI3QlJUdWN5dWE3cVd2Z0k4YXkwNTdIdDZMWXpJUjhCL003LzhRQUtCQUJBQUVCQlFnREFRRUFBQUFBQUFBQUFSRUFJVEZCVVdFUWNZR1JvY0h3OFNBdzBiRncvOW9BQ0FFQkFBRS9JZjhBVFlqbzRhRFRNME9NVVk2M3ZFdEJaRythQkZ1RCtoWHE5RzVFQ0hOc3U1YUJOUFY2OVhyMWV2VjY5WHBjNVlmMnltWk8wUloxVCtpZ1o0VGdoT0RvL1VUQnU2Ti9OL1hBMzBhNDBTT1FWZXFyQWQyL1NvTUhndXJPbXhHRWhucENBdVczNFVTTHFobGhNU1BnUm8wYnB0c3QzTzZYYWFvYmlWQ0VKTWllWTBERTAzaG0wSFU0eDg5ZHFYSkJSbUVTRGJpdXF5MWJwaXdNTHVIOVhBR2wzT1c3Y3N2NjQvWlJ3VnNvU3VPTStZcWZ1ZVFmTkZDcUp2d3ZVNkxUKzI3K0JoUG5aa0gzT3c5WjhOaFplaGFZbkpIRGJBNW9QQlhuUHl2T2ZsRTJERzh4RmthYkhtUkdJR3NqTWE4NStWNXo4cS9VUEZnbHcwMnBOa1pmSjN6NU5uSHZJQ2ZtRkIzVzYzN2JEYVBNNVlkSTIrV3krdFFGYkp0TjF0c1diY3g2Zm5QQXBYTk9vTGpzVEJEQnVCRWNRdWUwb1lJR0Z0b1VKMnJCTE1pTFFkaG5BcFlNbGFqZXUxQ2hpRmdYa0lTekx0U2dKZGtyRzdZd3dnNFowSHpOQXZSaUpIblNoQ0MyNjcvUkdzY3VYWWMwZnBqVGxMTWRodndkVnYyVWNJTkJyQ2NUK0E0eFZqMWxONWptSzIxYXRFV01kQmUwS2Z3MlFsWDZISU9oZURMUmRic2tuRHFLeC9IU2lKOUJadFJxMHk4eFBOSWNDdlNxZWxVOUtvYlFOaElHK3lHekRkZjdBRUdnVjZWVDBxbnBWTU5JRWp1Y1NnREZEZ1pBVVNXcmJ4WUJpdVZMUWxudkVhc2VCaDlTK1laNWg1dFNHc0RkRkx4c09YR2pVNS9CRm12UHU5ZWZkNjgrNzE1OTNyejd2WG4zZXZQdTllZmQ2OCs3MHlpbjY0TFdCdVFSMXR0Ym9OOVNVNlZHV0J2di93Qk8vOW9BREFNQkFBSUFBd0FBQUJENzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc2b01qZzR4dlAzNzc2bXB6eXl2emVwcjc3NzNqNVQvejVlL3o3NzY0cHY4QXZxLzZJRysrKyt2Yy93RC9BUDhBdGY4QXZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnYveEFBZUVRRUFBZ0VGQVFFQUFBQUFBQUFBQUFBQkFCRXhFQ0FoVVdGQlVQL2FBQWdCQXdFQlB4RDliTWRCcXpNRVVNejJsbjJCaEVScDJCYlVXQ1puaExCeEFweFBLSW1aUTFEOTJjUkR4ckFXb0F0MGl3aHNib0RUSHJwQVJqQ2pXaG01dEdvTXpMOVMvVXYxTDlTL1VYTDlqLy9FQUNnUkFRQUJBUVVJQXdFQkFBQUFBQUFBQUFFQUVTRkJZWEhoSURGUmdaR2hzZEhCOFBGUUVQL2FBQWdCQWdFQlB4RCtzYjMxOXVOWURvN3RQUkZVMEU4NXp2a29kVnZtTjdlNCtLdEpVKzN3N3pKK0dLelZiR0dSWXRWcVcvVEZnWXFCZFAzSUM5VWFGWVhRVkZ1WlAxSVVvMGNJWE5OOWlZNVFEbXlsSGgrT213M0JIaTJYQVN6T3g4ZjR1MTdqRkhrRmJGOVIrZ0lWdDVGdzhaKzR3cGcxRzZ2eUV2QkJPYlpFVWJoZVRZUVNqTngycXE0WVpuZVVWZGVKZnl1bjFHc3JRMUNGbXNxRlVVV1pucWZVYXdCVUxrZTRNSlM0TGJmbGpaeWNPQnk4N0wwS2pjeHFxd2J6dmIzbUs2YXpGZE5aaXVtc3hYVFdGUzE5Q1czbkcxMDVmMlAveEFBbUVBRUFBUU1EQkFNQUF3RUFBQUFBQUFBQkVRQWhNUkJCWVNCUmNZRXd3ZkJ3a2FIUi85b0FDQUVCQUFFL0VQNU52Y1U0WmtpNStBdEtRMEhyQlo3cWVlSnZtaml0QU5lZ3I5TjlVekdNQWpzc2FTR2t4QjZOZnB2cXYwMzFYNmI2cjlOOVYrbStxUE1VSnIvU2l4OCtub2c0b3FtQlBia3NER05zYktTRS9FUzB4VEhBMkZrU3VnRUlRU1dYaGNBc0ZXVmZUUjJDdDFGaEs3RlRKdEFwZUhTREN6SjNmdWhNRVRBdkhRME9MbTlsbzFnREprZWhnd1lORCt4RStXRGxBNzBicDU3b2NJa201a3B0M2Z0ckNNSUlSQkVRYVAwS1V3WFdXdWtPSWt2RDRIRmR3ZFBnbEwxakF1SlYrWStDWUxCVS9pd09BVjJ4WmdNaERBTVlQajFCdElnWWx2QktXL3lORkpCRzJwc20xREE5Z29xd2gyR09BWVQwa0paR25pa0p3MUIySndaQnZSaWJlaEFnN2lKMWx0aWtraUw4Z2prYU1CRlEvd0JuZndjKzdyZFBhWXNKSi92WFBObGdkOEJoYTdSOXNSSjNWSkhLeEd1ZVpGYjFkREVac0syckx6MFpDaW8ya203OGVoQ1Q0RVN0Kyt2S3FKTjd2K2s2QkxKVGRPSFdmaDl2eDNzYlJXZTQ5YU5PRVFoK2R1c2FOUzBFSS9RT1JveUlTbDNuMmhYZDR1b0dIeXFBUUd1VEphRkd6YTdZWkxhWTBtV2Z0ZHcwbDExekJiV1RKdjFEc3NuQ2twSkVkU0lDSmFXUzQ0ZkhReXIrR1RFbnRNOTllTTVkRERjZ0gxUXhFUzVLQ2IydUp6dUZNcVNEUzhTbkNMd2lsbFRBYkNyc283UE5oeVF2eHRGQktCUWhuc0xlRzNKQzlaejhJVjNkQkxLZTdZQ0NwckxSYXZGbTkza1RLVWdYTWtKbFYzVlorQis2c1RGWURZRmJXRGRGQWJBcE1HNG1RYktCRVJCSzRGbnVpRWllU21BRmRLOEo0UUhRelpzek5WeXkvQmNzYjZFbW1DUEo4Sk1pK1o2R2JOblBNMCt4Y3oyRkRVS0JkZ0FBNEtrYUNmT3dDOGFBU3RYcVk2U3Q0Yk1Zb3hBU0IrSjlnd1RGNWlJV21BdE1TVkRZb0tKM0N1ZG1KM1pvRWVKZ2J5WWV6NHYvQVA4QS93RC9BUDhBL3dEL0FQZ2dSTDZ4UWVpb2IwUlYvQmI4anNvQTNiRW1Nall3SlVxQ1ZqK1R2Ly9aIn0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTA0LTE2In1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wNC0xNiJ9LHsiYWFndWlkIjoiMDdhOWY4OWMtNjQwNy00NTk0LTlkNTYtNjIxZDVmMWUzNThiIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiIwN2E5Zjg5Yy02NDA3LTQ1OTQtOWQ1Ni02MjFkNWYxZTM1OGIiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiTlhQIFNlbWljb25kdWN0cm9zIEZJRE8yIENvbmZvcm1hbmNlIFRlc3RpbmcgQ1RBUDIgQXV0aGVudGljYXRvIn0sImRlc2NyaXB0aW9uIjoiTlhQIFNlbWljb25kdWN0cm9zIEZJRE8yIENvbmZvcm1hbmNlIFRlc3RpbmcgQ1RBUDIgQXV0aGVudGljYXRvciIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19zdXJyb2dhdGUiLCJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUI3ekNDQVpXZ0F3SUJBZ0lVYitWdS8zM2N2Mlh1dnVjWnFBbXpPVXV0Z2drd0NnWUlLb1pJemowRUF3SXdUVEVMTUFrR0ExVUVCaE1DVlZNeEd6QVpCZ05WQkFvTUVrNVlVQ0JUWlcxcFkyOXVaSFZqZEc5eWN6RU9NQXdHQTFVRUN3d0ZRMEVnUVVFeEVUQVBCZ05WQkFNTUNFTkJJRVpKUkU4eU1CNFhEVEU1TURZeU56QTRNek15TmxvWERUTTVNRFl5TWpBNE16TXlObG93VFRFTE1Ba0dBMVVFQmhNQ1ZWTXhHekFaQmdOVkJBb01FazVZVUNCVFpXMXBZMjl1WkhWamRHOXljekVPTUF3R0ExVUVDd3dGUTBFZ1FVRXhFVEFQQmdOVkJBTU1DRU5CSUVaSlJFOHlNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVIQVhNWkxiM0NlTXdPeGcvVmNVendIeDF3a3VUQTRFS290b2loczZPUWVUU2NsS1hvWGNZcmo2WDhQQlQ4VlZxSHVsMytuQktqRGlCSStZeHIrcWYrcU5UTUZFd0hRWURWUjBPQkJZRUZFTXVMcWVCY3hpR05nTHpTbXhOREJnQlVmbkpNQjhHQTFVZEl3UVlNQmFBRkVNdUxxZUJjeGlHTmdMelNteE5EQmdCVWZuSk1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0NnWUlLb1pJemowRUF3SURTQUF3UlFJaEFKbmx3WUpwaVhYWklZbG12ZS9uanF4RVdoK0tkVXNZOWI5WElmS3Nsd3lJQWlBSFRkaHNVVkY0T3BpcHg4MElqK1V4RFJTdGxtZWdVQUVuTHJta2EzVjh4UT09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQU1jQUFBQkpDQVlBQUFDSnZ6SnVBQUFBQm1KTFIwUUEvd0QvQVArZ3ZhZVRBQUFOQjBsRVFWUjQydTNkZVZDVTV4MEg4R2NSaVdmVTRGRk4xWWcxWGtWQmc4NGtrMlE2MDhrazArblladW8wK2FlMWptM050Sm5VQm8zQTJtNUh2RFU2UmxEQUF5OUkxK2hlSENycWN1OXlzNHVnN0x1STkzMVVRRVE1M3Y2ZVpUR29DUHZ1dnMreno3djdNdk1kR0pSOTM0ZDVQK3o3L3A0TDhabm9MVDROelJVOTZlZ25pTEdQQTV0bURZNWZGeEVpZHI3YnRHVFN5alJiU0ZkVXV2UGp2TkcrcUdQbmdydWZSK1NCMVpPV3hVZUVpSjBrL1poSkpWWVU0bzBVV2RDa1BDc2EwUldMQlEwbTlndUZpM2d2aENlUTYvd0pOSjRsSEkvMC9SWWMyalQ3U2x6c2ZGN01iTi93Y1VtTWp1TzdwWFdWb1hZMnpiWjlvNjRiRnFPelgrOStIc3VUbHhxLzNqV1hGelBMRSthMEZGWXFiRVZXeERPVSt4QkxVUlhTdytjdDVpcTBHTDUraCtQUWE2emk0T0VkNUN5ZmhZYXhnZ1BPNTlNR1RaQ1pBZzZJTFE5K0F3cGFiWU5qYm4zeEhFamdTRDAxOGpSak1IcExFMFJiYkVWL3JxaEF3OW5DMFprTTNvZ0NXY0dCeituTXpwQWk4amc0UGxyTExhSFJybFVhKzF3NFhodHBIUDlPL3ZrbHVOZ2FKWVRqZVNoVktNbGNqV2F3aEFPL2d5U3loS005VFhFdGFWMUVFMmtjTVhydW51cVlmVFRKTmkxVTgvM2dPS1U5SFY5c0hHZEsraGRJRkViM3RBS1MrUEp5TklvTkhKMzVpaFVjT1BVcHc0M0VjZUJvdVFNazI2VFUyNzk4MWJIRnhCR25tV2oyQVJnL3BncmRnUWY4VDFqQjBjNW5vTit3Z2dQeTVQc3RvWFhFY1VDVVd0c3ZTYlJIZFpUN0tieCtBMmtjM3lTR041b3Rpc3MraGFNemJZQmtLUXM0Y0pwNUE1ckhDQTYrUlI5WUNSZDNCMmtjRUp2S1dEOUE5SWR3TGZkRGI4Y1ZDNGNtWi9ocEg0VFJsUTdJWDFuQTBWbmlOYUFKTE9EQU1TV056NmVBZzFmcU9KWElNSDdkMXpIRndMSDI4TFJheDMyNjcrSndBREZiME85WXdPRzFFbTlQT0RyUzBlMDk2K2MrSUkwRDhrUjV6RFpkbE5zcGRmVVF3SGFKQW82TzNMTEFNaCtIMFpVSHBncjBsdmR4ZENhVGRvbTNKeHc0TjlSRGN5amd3TzhlMldMMGZVQm4zd1pYanVjcGpyMXA0L0w4QkVaWHRLemdvRjdpZlJVT1hDelFiWjkrbGpTT3pyNFAreDg4YVVPMHhoYUdlK0JKNDRqYUhYWVhialZ1K1JrT3Z1UXNlbzhOSEoxQS9zRUFEdjZwSWFBbVBuWmVHMmtja0xzcVErMUl0MjZuVkh3QTlHa1V1WG9zVDNCa0Znek85VGNZamxpUWdSMGNGRXU4dmVIQXFVZ2VtME1CQjg1dTkyNm5iRXVGSE1kZEhPdFRwbG9kWlU1L3hHRkY3WGh3SXlzNHFKVjQrOExSa1lZYWtqZUUzYVNBb3lOYVovK0ZvSGNOR09rTFAvZVFOSTdJaERtdHBzb0FtNS9DY0FRR0xrYXhoSU5LaWJjdkhEajNqdzdNcDRBRFlqLy9aUWIzbW9DSDhCU2h4M0FIeDZIalk4NzRNd3huekt6aElGN2lkUVVIVG1iY2xITHlPQndQNXpFdVBZVHJiTDl5NS9XRjRsaTFML1FHUElRM3lqaFFtN0VhRFdFTEIrRVNyNnM0MnRNVjlidldSTFNReGdGcFZtcTR5YjJkOHpMMWxZSHcvK3cwY0dRVkRjaVZZWFFHaHJsL3dDSU9ZaVZlVjNIZzJBNEdHeW5nd0FNVFQvUStzTkFXNis1ckM4R3g5VWlJMlRtVXdwV0xCL2VhcXlrbUhjWkE1Y0VGaXdzRlR5a0IrVHViT0FpVmVJWGd3RVdDdzV0bVh5YU9BOTllNmV5ZjlUanRWY3ZOd0QzcnBIRXNUNXp6MkZTaHNMdjh3R3BCbTcwMVBnN1A3aXV1UXU4Q2xCMXdMZzBFY1d4bkZ3ZUJFcTlBSFB3amJWQUpEUnlRbXl2VExvMTQvbVI1aFZKbnovWGtkVjNGb1Q0ZExHaGdvVGR4ZFAvQUpWYzRuMkpDUTlyMUxPTVF2Y1FyRkFkT1R2d2tNd1VjdUhxMTgvbUhjRzZ4cDYvcENnNlkzVmNIRjhNaktlSndBRG1IZ3VHYzdBU0E1TENPUTlRU3J6czRPbURXWU9LNmQ1ckk0K0RhWTdUMmR4MTlHakI3RU04aXBJRWp0NngvcWVCK0FJWndPSUJZMFVJQ1BlVVZVc0FoV29uWEhSdzRGMU9IWlZQQWdXUDlTMEpwZitnSlR4Ymo5ZnJDRWErWjROYTBWOVp3R0tHNlNXQnVPeWNOSENLVmVOM0ZBV2s5K3UzTVdnbzQ4TWpkZzdnSG5UUU9tTjMzMEdSUlhQVUZITTduRDdFN0wyOUtDUWRPa3BkdzhDMjZRTXVyWmcyS2lVUE05SVpEbnp2TTdkbDlUT0t3b2tOaXIxWWlOUnc0eTd5QkE2ZG96NXQ1dm9Bajl1RDBHay82QzFqRUFlT2g0a1RHOFVpS09OcmhBZjIzM3NBQnBlVjdNR3Z3bnBSeFJDYk1iYyt2Q0tqMmFHQWVnemljL1I1K2o2T3p4SnVPNWxQSEFibDFaRWl1bEhFa3A0LzFlSWlJak1QekZCTUdjcG5Yb1hHMGNVRGF0TnVtV2FTSUkyWjMyQjI4WHBNdjRwRGFiZFhmSUdzSkE2a1dVdUlWQ1FmZmFnaXc3Vnd6NzZuVWNKdzBEUlJsVGppVE9LeG9uN1J3OEVnQm53OFRCWktCanJ0YTRoVUxCMDdWdmpIWlVzS3hJWFZLbVdPV200L2ljSzZ3TGgwY2pndlNpQWJBMXdVc2xIakZ4QUd6Qmh2M2J3eS9JUVVjc0czQTA4TEtBRTYwbVhKc2xuTHJKWWZEY1ZFYTBFaTRNRG5DUVA1SkV3Zk9RODJBUWluZ1NEazVXdFFWQzFuRFVWcU5KZ2dZYnM4V0RpZVFhZkM5Kzk0czhZcU5BK2ZVenNuRkxPTll0VGYwTWx6TURiNk1BODVwQllHQmgzZXA0WEJPeWYwQUwrRHNyUkl2Q1J5d25jSEYrTTBmbTFqRmNhWTR5Q1Q2QWdRTTRjZy9qNGFLVVlIcklYVlVjVGd1MEF6MGhiZEt2Q1J3NE5RY21aWEJJbzRkbVlzeWlhek93ZEtRZGRpUWh0QmtwM0xxT0p6dklPUkx2SnFYdDdraWhLTWpmZmVIVE9LSVZTODVCUVB5bW53UmgxcU4rZ0dNalFUbmtCdTlnd09YZU5QUUlkb2xYaEk0OEZJK0xEOXpwSndhbGVzck9PQzZDY2d2UitNQS9PZHdIb1dFNTVBbmV3V0h0MHE4QkhEOEwzbDkrRzJXY1VUdW10TldZQWs0SjY4b0l2Z1B3RmRldytHTkVxL1lPTHFXRDJXOWxMcys1ZTFxc1RvQS9XaHBuZys5aW9OMmlWZE1IRS8wZ1dmalkrZTNTNldIL0hqaG9BTDVvbmM5aGRYb0RhL2o2RmJpYlNGZDRoVVJSOXV4YlROcXBEUjhKR3BQMkFPNFY3OGpYL2d1cGJMcnd2UTZEdWQ1TENKOGUzVURyNFVseG11OXVObU5WQVllN2tzZks3OTd1UEs4WVVYcm1NTGhQSmN0aElFOEVtRk0xVjJZOE5RZ1JSeVJzSTFaVG1sZ2hReWc5LzBCVFZWb09uczRhSlI0UFV4UEcyeEthYkxUbXNOVDdYNndBYVluTVhYL2E4ME1Eb29sWHJmU3JPdGY3Z3R6eUhVNXc3SmxCSys4cFZyQUxBN0hPUjFEd1JSS3ZFTFRrcnA1VnIwdjRGaVJGTlpjWkZYY2tERzhsQ3JjMGNnMERrb2xYa0dwVHhsdXBMRnVsYXViWVhxNk5FK2NacUpaeHZEOG5od2xsUzhzUGNzcURrb2xYdGRHM2hvVWx4UFdSalJUd1BFMFNtZC9EejVmcGJIaVlVNVoveklaeGJOODI5TUZ5Q3dPU2lYZVBwTVZON21FeG5LZ3NOcWhZOHdTckpuN2V4bzRWUHRuWG9PTDRyRU1BK1dVbHFMKzlIQmt3T1lmWWcwNHkwQ3gzb0xSb0FtaXRNbzZkMEZsdUQ2b3E4Mnc2bm9hallXazFhZUNqZjYrLzUrWlE2Ky82aTh6K3ppOFZPS0ZQbzJtZzV2Q3J0SEFFYTIzZjlLOXpUSHBGeWJDOTV0STQxaWVHUDdFVkttNDZLY3djdkVXQnIzZHRqQ1B3MXNsM3BvRG83S3A3T3lrNVRROXRSbTJJWWltc1hrTmJIbG05VE1VdUo5bmc3R3ZWV3VrZ3VOWmlUY2QyV2pBZUdvSXFJVzFxVm9wNEdpRVo0enhQYlZYcGE0T2duK3ZwckVuSUd5V2FmS0gzbS9veDhnb3JrUXpYWDNnbFF3T2lpWGVEc1AycVJZcUcyYnF1RjVYVFluUzFyN3Y3cFlFUW5Bbzk0YmVOcFBkWTgrYnFZY2g2RnRMcldpYTBHcVFwSERRS1BIZU9Ub29qOFkrNUpEeWhXcStYMS90aGR1cnZUUzJXajU0ZkxTckt5SSt3QXNRTUpnYW1LU1VEeEIwK0xZSmxnaGRiSzVHTXp5NTBDU0hnMlNKdHlNZDNkdmJ3MHJxQkhDMHJkTFhSYmpTVnJpOWVnUCsvMjNTT0p3cnNGZTVzSm5rR3VRUEgxTEZRYXJFVzdwN1hLNFFHRzdqMEhKeFF0b2FyYmN0SW8zRE1Xc3dkU3JldTZOTnhpRjFISjFyOFI0VTY1eGJESUZWWGJQN0NPTzRxc3JnWGhmWVdBWDgzR25TT0hEU0M0Ymt5RGdramtQa0VtL3JrYTB6YlVKaHVJVURlc0RkYVd2VXNicTM0ZWRiU09OWXVYdDJnOW1xdUNuamtEZ09zVXE4Vi84N05Oc2RHTUp4Mk5NOGFTdjgvR3JTT0hBU2RXOFd5RGg4QUllakhabG9xcnNsWHRoci9FYmkycm1ORkhBMEt6WGNaRS9hdVV4OVpTQzhqcDAwanM2QmlZSGxNZzRmd09GSmlUYy9ZV0todXpDRTRJalcybVBFYUtmU3dIMUVBOGQvOXMvRXkvcTN5RGg4QUlkeitaMC9Dam5QSmsxUXNTY3dCT0NveGozZVlyVlRxYk9sa3NhQm84a2UvdExBeEdJTFdpdmprQ0FPWjV0V3UzaWVqMU0yejdwSUFVY0g3dWtXczQzUnVndGo0SFh2azhheElqRzgyV1JSWEpaeCtBb09GMHU4OXBRUlJrOWh1SVFEZXJoSnRCUG1mM3hCR2dmT2R6K0VsTWc0ZkFSSHR4SnZmaSt6K3k3c1doUFJRZ0hIYmR6RFRhS05LaFVmb05SeWhhUng0SndwQ2pMTE9Id0VSMThsM2hNN2ZsWW1Cb3krY0NpMXRqK1JiT01xYlYwb25sNUxHc2Uva2tPdmRXMW5JT1B3QVJ6ZFNyejNldHJMandLTzA3aG5tM1FiNFRoYlNPUEFTVDA1TWx2RzRVTTRuQldzOTUrVmVOUFF3K1NONGJjbzRHakJQZG8wMm9lbjEwTG5ZRDFwSEpFSmMxb0xLZ0pxWlJ3K2hNTUo1RE04VDZQNy91RWtjU2oxdGxpYTdZT0gvZ1drY2VCcytuNkt4WC82T2RKUUpGdzBXUVN5Z0xXMk5ta0RJM2V0amNpRUN6cEx6R3piL09rKytNdWQ5V000YmVRSnkyRGE3WXZXY1R1Nm44Znk1R1VKWCsrY2t5VjJralBIZk80UE52NFBXaFFFbWhmOWttY0FBQUFBU1VWT1JLNUNZSUk9IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiRklET18yXzAiLCJVMkZfVjIiXSwiZXh0ZW5zaW9ucyI6WyJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiIwN2E5Zjg5YzY0MDc0NTk0OWQ1NjYyMWQ1ZjFlMzU4YiIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlfSwibWF4TXNnU2l6ZSI6MTQ3MiwicGluVXZBdXRoUHJvdG9jb2xzIjpbMV19fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAxOS0wNy0xMSIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiTlhQIFNlbWljb25kdWN0b3JzIEZJRE8yIFRlc3RpbmcgQXV0aGVudGljYW9yIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAxOTAyMDYwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMy42IiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjEuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAxOS0wNy0xMSJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMTktMDctMTEifSx7ImFhZ3VpZCI6ImQ2MWQzYjg3LTNlN2MtNGFlYS05YzUwLTQ0MWMzNzE5MDNhZCIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiZDYxZDNiODctM2U3Yy00YWVhLTljNTAtNDQxYzM3MTkwM2FkIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IktleVZhdWx0IFNlY3AyNTZSMSBGSURPMiBDVEFQMiBBdXRoZW50aWNhdG9yIn0sImRlc2NyaXB0aW9uIjoiS2V5VmF1bHQgU2VjcDI1NlIxIEZJRE8yIENUQVAyIEF1dGhlbnRpY2F0b3IiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MiwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJ2b2ljZXByaW50X2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSJdLCJpc0ZyZXNoVXNlclZlcmlmaWNhdGlvblJlcXVpcmVkIjp0cnVlLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIl0sInRjRGlzcGxheSI6WyJhbnkiLCJoYXJkd2FyZSJdLCJ0Y0Rpc3BsYXlDb250ZW50VHlwZSI6InRleHQvcGxhaW4iLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQjZqQ0NBWkFDQ1FESVJQTzNSN1Z0TERBS0JnZ3Foa2pPUFFRREFqQjhNUXN3Q1FZRFZRUUdFd0pUU3pFUk1BOEdBMVVFQ2d3SVEzSmhlVzl1YVdNeElqQWdCZ05WQkFzTUdVRjFkR2hsYm5ScFkyRjBiM0lnUVhSMFpYTjBZWFJwYjI0eEZUQVRCZ05WQkFNTURHTnlZWGx2Ym1sakxtTnZiVEVmTUIwR0NTcUdTSWIzRFFFSkFSWVFhVzVtYjBCamNtRjViMjVwWXk1cGJ6QWdGdzB5TURBMk1UQXhNVFF5TWpoYUdBOHlNRGN3TURVeU9URXhOREl5T0Zvd2ZERUxNQWtHQTFVRUJoTUNVMHN4RVRBUEJnTlZCQW9NQ0VOeVlYbHZibWxqTVNJd0lBWURWUVFMREJsQmRYUm9aVzUwYVdOaGRHOXlJRUYwZEdWemRHRjBhVzl1TVJVd0V3WURWUVFEREF4amNtRjViMjVwWXk1amIyMHhIekFkQmdrcWhraUc5dzBCQ1FFV0VHbHVabTlBWTNKaGVXOXVhV011YVc4d1dUQVRCZ2NxaGtqT1BRSUJCZ2dxaGtqT1BRTUJCd05DQUFTVXc0UnQ2MTYzSFJ1WGVCcXhkN1BIY2Y1ZzlDbVMwaGNqazNqR1BrckE2VXpMU0t5YTZuNnlPMloxRWJzVFh0VTFSZ0FjUThVNjM1blByNHkvZkxHd01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lRQ3FhSU8vMWNkS3FlZzNCL3F3QVBHb2dDWFVpb2ZzNDZPNDR2U0ZuUFdGbWdJZ0QyRW4rcUlMejA2VHpQTm4wMEpPZ21nSWpMY1ZCeTVHU28yczN0WW15SkE9Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUxjQUFBQTZDQVlBQUFEeVFNaVpBQUFBQkdkQlRVRUFBTEdPZlB0Umt3QUFBQ0JqU0ZKTkFBQ0hEZ0FBakJJQUFRRlVBQUNDS3dBQWZUNEFBTyt2QUFBNjZ3QUFGSmNJSE5QSEFBQU1GbWxEUTFCSlEwTWdVSEp2Wm1sc1pRQUFXTU90bDNkVVU4a2V4K2VXRkVKQ0MwUkFTdWdkS2RLbDl5SWdIV3lFSkVBb0VSS0NpaDFaVkhBdHFJaUFEVjBCc2EwRmtFVkZSTEd3Q1BiK3NLQ2lySXNGR3lwdlVrRFg4OTRmNzV3MzU4eTluL3p1YjM3ei9jMmRPNWtCUU5HR2xaT1RoU29Ca00zUEUwUUYrakFURXBPWXBDY0FBUVFBZ0R3d1lyR0ZPZDZSa1dId0Z4aTcvN084dndHOVlibHFKWTRGL3JlaXpPRUsyUUFna1pCVE9FSjJOdVNqQU9EcTdCeEJIZ0NFTG1nM21KdVhJK1loeUtvQ0tCQUFJaTdtTkNtcml6bEZ5cFlTbjVnb1g4aGVBSkNwTEpZZ0RRQUZzVzVtUGpzTnhsRVFhN1RoYzNoOHlOV1FQZGpwTEE3a2U1QXRzN1BuUUZZa1F6Wk4rU0ZPMmo5aXBvekhaTEhTeGxtYWk2U1EvWGpDbkN6V2ZQRC9MdGxab3JFKzlHR2xwZ3VDb3NRNXczR3J5NXdUS21ZcTVGWitTbmdFWkJYSTUza2NpYitZNzZTTGdtSmwvb05zb1M4Y004QUFBQVVjbGw4b1pDM0lERkZtckxlTTdWZ0NTVnZvajRiejhvSmpaSndpbUJNbGk0L204N1BDdzJSeFZxWnpnOGQ0RzFmb0h6M21rOG9MQ0lZTVp4cDZ0Q0E5Smw2cUUrM0k1OFdGUTFhQTNDUE1qQTZWdFgxUWtPNGJQdVlqRUVXSk5SdENmcGNxQ0lpUyttRHEyY0t4dkRCck5rdlNGNXdMbUZkZWVreVF0QzJXd0JVbWhJMXA0SEQ5L0tVYU1BNlhIeXZUaHNIWjVSTWxhMXVja3hVcDg4ZTJjYk1DbzZUampCMFM1a2VQdGIyU0J5ZVlkQnl3Unhtc2tFaFpYKzl6OGlKanBOcHdGSVFCWCtBSG1FQUVhd3FZQXpJQXIzdXdhUkQra2o0SkFDd2dBR21BQzZ4a2xyRVc4WkluZkhpTkJnWGdMMGhjSUJ4djV5TjV5Z1g1MFA1MTNDcTlXb0ZVeWROOFNZdE04QlJ5TnE2SmUrQnVlQmk4ZXNGcWh6dmpMbVB0bUlwanZSTDlpWDdFSUdJQTBXeGNCeHVxem9KVkFIai93UllLNzF5WW5WZ0xmeXlINy9FSVR3bTloRWVFNjRRK3dtMFFCNTVJb3NpOFp2TUtCVDhwWjRLcG9BOUdDNUJsbC9KamRyZ3hWTzJBKytEdVVEL1Vqak53VFdDRlQ0YVplT09lTURjSGFQMVJvV2hjMi9leC9May9zZW9mODVIWkZjd1ZIR1FxVXNiZmpPKzQxODlSZkg4WUl3NjhoLzdzaWEzRWptQ2QyR25zQXRhS05RRW1kZ3ByeHJxd0UySWVud2xQSkROaHJMY29pYlpNR0ljMzVtUFRZRE5nOCtXbnZsbXkvc1hqSmN6anpzc1Rmd3krYzNMbUMzaHA2WGxNYjdnYWM1bkJmTGExSmRQT3hzNEdBUEhhTGwwNjNqSWthemJDdVBqZGx0c0dnRXNKTktaOXQ3RU1BRGorRkFENisrODJnemR3dXE4RDRFUVBXeVRJbDlyRXl6SDh4NkFBUmZoVmFBQWRZQUJNWVQ1MndCRzRBUy9nRDBKQUJJZ0JpV0FXSFBGMGtBMDF6d1VMd1RKUURFckJPckFKVklMdFlCZW9BL3ZCWWRBRVdzRnBjQTVjQWozZ09yZ0w1MFUvZUFtR3dIc3dnaUFJQ2FFaGRFUUQwVVdNRUF2RURuRkdQQkIvSkF5SlFoS1JaQ1FONFNNaVpDR3lIQ2xGeXBCS1pDZFNqL3lPSEVkT0l4ZVFYdVEyOGhBWlFONGduMUVNcGFLcXFEWnFqRTVDblZGdk5CU05RV2VpYVdndVdvQVdvV3ZRQ3JRRzNZYzJvcWZSUytoMXRBOTlpUTVqQUpQSEdKZ2Vab1U1WTc1WUJKYUVwV0lDYkRGV2dwVmpOZGdCckFXKzU2dFlIemFJZmNLSk9CMW40bFp3YmdiaHNUZ2J6OFVYNDZ2eFNyd09iOFE3OEt2NFEzd0kvMGFnRWJRSUZnUlhRakFoZ1pCR21Fc29KcFFUOWhDT0VjN0M3NmFmOEo1SUpES0lKa1FuK0YwbUVqT0lDNGlyaVZ1SkI0bHR4RjdpWStJd2lVVFNJRm1RM0VrUkpCWXBqMVJNMmtMYVJ6cEZ1a0xxSjMwa3k1TjF5WGJrQUhJU21VOHVKSmVUOTVKUGtxK1FuNUZINUpUa2pPUmM1U0xrT0hMejVkYks3Wlpya2JzczF5ODNRbEdtbUZEY0tUR1VETW95U2dYbEFPVXM1UjdscmJ5OHZMNjhpL3cwZVo3OFV2a0srVVB5NStVZnluK2lxbEROcWI3VUdWUVJkUTIxbHRwR3ZVMTlTNlBSakdsZXRDUmFIbTBOclo1Mmh2YUE5bEdCcm1DdEVLekFVVmlpVUtYUXFIQkY0WldpbktLUm9yZmlMTVVDeFhMRkk0cVhGUWVWNUpTTWxYeVZXRXFMbGFxVWppdmRWQnBXcGl2YktrY29aeXV2VnQ2cmZFSDV1UXBKeFZqRlg0V2pVcVN5UytXTXltTTZSamVnKzlMWjlPWDAzZlN6OUg1Vm9xcUphckJxaG1xcDZuN1ZidFVoTlJXMXlXcHhhdlBVcXRST3FQVXhNSVl4STVpUnhWakxPTXk0d2ZnOFFYdUM5d1R1aEZVVERreTRNdUdEK2tSMUwzV3Vlb242UWZYcjZwODFtQnIrR3BrYTZ6V2FOTzVyNHBybW10TTA1MnB1MHp5ck9UaFJkYUxiUlBiRWtvbUhKOTdSUXJYTXRhSzBGbWp0MHVyU0d0YlcwUTdVenRIZW9uMUdlMUNIb2VPbGs2R3pVZWVrem9BdVhkZERsNmU3VWZlVTdndW1HdE9ibWNXc1lIWXdoL1MwOUlMMFJIbzc5YnIxUnZSTjlHUDFDL1VQNnQ4M29CZzRHNlFhYkRSb054Z3kxRFdjYXJqUXNNSHdqcEdja2JOUnV0Rm1vMDZqRDhZbXh2SEdLNHliakorYnFKc0VteFNZTkpqY002V1plcHJtbXRhWVhqTWptam1iWlpwdE5lc3hSODBkek5QTnE4d3ZXNkFXamhZOGk2MFd2WllFU3hkTHZtV041VTBycXBXM1ZiNVZnOVZEYTRaMW1IV2hkWlAxcTBtR2s1SW1yWi9VT2VtYmpZTk5sczF1bTd1MktyWWh0b1cyTGJadjdNenQySFpWZHRmc2FmWUI5a3ZzbSsxZlQ3YVl6SjI4YmZJdEI3ckRWSWNWRHUwT1h4MmRIQVdPQnh3SG5BeWRrcDJxblc0NnF6cEhPcTkyUHU5Q2NQRnhXZUxTNnZMSjFkRTF6L1d3Njk5dVZtNlpibnZkbms4eG1jS2RzbnZLWTNkOWQ1YjdUdmMrRDZaSHNzY09qejVQUFUrV1o0M25JeThETDQ3WEhxOW4zbWJlR2Q3N3ZGLzUyUGdJZkk3NWZQQjE5VjNrMithSCtRWDZsZmgxKzZ2NHgvcFgrajhJMEE5SUMyZ0lHQXAwQ0Z3UTJCWkVDQW9OV2g5ME0xZzdtQjFjSHp3VTRoU3lLS1FqbEJvYUhWb1oraWpNUEV3UTFqSVZuUm95ZGNQVWUrRkc0Znp3cGdnUUVSeXhJZUorcEVsa2J1UWYwNGpUSXFkVlRYc2FaUnUxTUtvem1oNDlPM3B2OVBzWW41aTFNWGRqVFdORnNlMXhpbkV6NHVyalBzVDd4WmZGOXlWTVNsaVVjQ2xSTTVHWDJKeEVTb3BMMnBNMFBOMS8rcWJwL1RNY1poVFB1REhUWk9hOG1SZG1hYzdLbW5WaXR1SnMxdXdqeVlUaytPUzl5VjlZRWF3YTFuQktjRXAxeWhEYmw3MlovWkxqeGRuSUdlQzZjOHU0ejFMZFU4dFNuNmU1cDIxSUcwajNUQzlQSCtUNThpcDVyek9DTXJabmZNaU15S3pOSE0yS3p6cVlUYzVPemo3T1YrRm44anZtNk15Wk42YzN4eUtuT0tjdjF6VjNVKzZRSUZTd1I0Z0lad3FiODFUaE5xZExaQ3I2UmZRdzN5Ty9Ldi9qM0xpNVIrWXB6K1BQNjVwdlBuL1YvR2NGQVFXL0xjQVhzQmUwTDlSYnVHemh3MFhlaTNZdVJoYW5MRzVmWXJDa2FFbi8wc0NsZGNzb3l6S1gvVmxvVTFoVytHNTUvUEtXSXUyaXBVV1Bmd244cGFGWW9WaFFmSE9GMjRydEsvR1Z2SlhkcSt4WGJWbjFyWVJUY3JIVXByUzg5TXRxOXVxTHY5citXdkhyNkpyVU5kMXJIZGR1VzBkY3gxOTNZNzNuK3JveTViS0Nzc2NicG01bzNNamNXTEx4M2FiWm15NlVUeTdmdnBteVdiUzVyeUtzb25tTDRaWjFXNzVVcGxkZXIvS3BPbGl0VmIycStzTld6dFlyMjd5MkhkaXV2YjEwKytjZHZCMjNkZ2J1Ykt3eHJpbmZSZHlWdit2cDdyamRuYjg1LzFhL1IzTlA2WjZ2dGZ6YXZycW91bzU2cC9yNnZWcDcxemFnRGFLR2dYMHo5dlhzOTl2ZmZNRHF3TTZEaklPbGg4QWgwYUVYdnlmL2Z1Tnc2T0gySTg1SERodzFPbHA5akg2c3BCRnBuTjg0MUpUZTFOZWMyTng3UE9SNGU0dGJ5N0UvclArb2JkVnJyVHFoZG1MdFNjckpvcE9qcHdwT0RiZmx0QTJlVGp2OXVIMTIrOTB6Q1dldWRVenI2RDRiZXZiOHVZQnpaenE5TzArZGR6L2Zlc0gxd3ZHTHpoZWJMamxlYXV4eTZEcjJwOE9meDdvZHV4c3ZPMTF1N25IcGFlbWQwbnZ5aXVlVjAxZjlycDY3Rm56dDB2WHc2NzAzWW0vY3VqbmpadDh0enEzbnQ3TnV2NzZUZjJmazd0SjdoSHNsOTVYdWx6L1FlbER6TDdOL0hleHo3RHZ4ME85aDE2UG9SM2Nmc3grL2ZDSjg4cVcvNkNudGFma3ozV2YxeisyZXR3NEVEUFM4bVA2aS8yWE95NUhCNHIrVS82cCtaZnJxNk45ZWYzY05KUXoxdnhhOEhuMnorcTNHMjlwM2s5KzFEMGNPUDNpZi9YN2tROGxIalk5MW41dy9kWDZPLy94c1pPNFgwcGVLcjJaZlc3NkZmcnMzbWowNm1zTVNzQ1JiQVF4V05EVVZnRGUxQU5BUzRkNmhCd0NLZ3ZUc0pTbUk5THdvSWZEZldIbytreFJIQUdyaHVTdDJLUUJoY0kreURWWWp5RlI0RjIrOVk3d0FhbTgvWG1WRm1HcHZKNDFGaFNjWXdzZlIwYmZhQUpCYUFQZ3FHQjBkMlRvNituVTNGSHNiZ0xaYzZabFBYSWh3ZjcvRFdrdzkvYTkrT25rQjhHOHpJbXoxaFRLZFBRQUFBQWx3U0ZsekFBQVdKQUFBRmlRQm14WEdGQUFBRzg1SlJFRlVlRjd0WFFkMFZWWFdQbmw1NllVMGVhUVFrcENFR25vVkVBR1ZJaVJVYVk2QWpJcm9xQWc2T282S3VzQ0ZNemhpSFVCVW1pTEQvTXJJaUlDQTRDQzlRNUNhVU5Jb1VVZ2w3ZjdmdC9QZU0rVGRRRG9FMzE1cnIzUEx1ZmZkZTg5Mzl0bjc3SDMyVTNheTArMUtEdWJ5ZDBXYk52M29zRy9mUHFlTkc5Yzd1cmk0K2pab0VHaEtTRGpwdEdYTEZ0Znc4UEJnZkJiUHJLd3M0NFVMNTUxUnVqZHExQ2c0THkvZldGaFlZTGg2OWFwamRuYTI4Y3FWSzg2ZW5wN3VmbjUrZC9DZUJRVkZ4cUtpSXV2MzFMUWlRMzUrbnFONTE0WU1Cb05tTkRvWGNOc0JWeG1OeGdLVVdrcEtTcEttYVhrQkFRRzV6czR1aFU1T1RvV09qb2E4aElTRU0yRmhZVG5lM3ZYeWNmZk1jK2ZPSmZYbzBUTW5JaUlpZCtuU3hZa1BQdmlIdkY2OWVoZjA2M2Rmb2Z5QW5XNGZjSzlldlZydDNyM2JKVEV4MFQ4ek16TVkyNEd1cnE1QlNVbEpmdlhxK1RRQ1VEMThmSHdpYzNKeTNRRE9BRGMzVjM4Q2xTQXUvZ3hhOFkxS0VjQ2xIQjBkQ1VZcEFVTGw2K3NyeDQxR0orWHE2aUxuM04zZDVSeUo1eDJJMkJ0UVFVR0JRaWVSYlR5VDdHZG41NkRNVjdtNXVlcnk1Y3R5ckxDd0NGeWc4dkx5cEc1cHd1OXFIaDRlQlhpT2JOUTk2K1hsbFpPUmNTWEIzOS8vTXU1enJuNzkrdWZSOGM2MmJkczJMU01qSTZGUG56NVhSb3dZa1c4eW1jeDN1RDJwVG9IN1AvOVpaWGozM1hjQlV1L21odzRkaWtEamh6czRHQ0xSOE5Gb05IOFhGNWNJZ01XcHNMRHdtdmNpK0hBTzdLcE1wdnJLeDhkWE5XaGdBZ2o5d0Q3cWpqdnVVUFhxMVZOZVh0N0szOThQcFpjQ1dLU0VkSlpyQ1dhV3pzN081cnZXRHVYazVDaDBRZ0UyT3dJQmo4NnJmdm5sRjNYaHdrVTVscHFhb2k1ZFNzZitCWldTa2l4bGV2b3Y2Q0RzS0RJNFdBbnZVWVQzeXNmeEV4Z1pVdkNlcC9IOWpxSGpKd0w4cDFKVHovODhiZHEwN0w1OTd5MHlYMUpuNlpZRTk1RWpSOVhNbVRNODB0TXZ4UncvZmp3R0Rkd0czRHcvUDc4Skd0a0U2V3NvS1duZDNOeEVXalpzMkZCQnJWREJ3Y0VLcW9RS0NncFNnWUdCQUhJRE9VK3dVcnBpMkJmSnlwS2dJUUFJb2w5Ly9WVkJra3RKOEdSbFpRdEFDQ2lDQ0w4clFLTlU1WEhXdFVoYzNnZWRTcDZIOXlvUG9XT0s1Q2V4NDdBVGVudDd5eWhBZG5WMWszZno4dkpFcC9PWERzZk9CcFZGT2lNQUtmVUJVbHp2Ykgwbmxud3V2Z2ZVSEpXY25Lek9uRG1qVHA4K0xYenExQ25aNS9uU293RitsNnBRR3Znb251a0l2bGs4ZnV0QVpHVGtrZGpZMlBTUkkwZldHZERmRXVDZVBuMjYwNDgvL3RnRUtrVTNTT0NPQUVrWGZQU20yTGJxckd3d05tamp4bzFWaXhZdFZOT216VlIwZEpUQ1J4ZFFzNkVKRGhJQnlNWk5TMHV6TnU3NTgrZWx2SFRwRW82bG9tRi9VUmN2WGhUZzV1WmVoVFRNRUdEVU5TTDRDWHFvWGdycUIwYWhBQlVTRWlMYkRSdUd5Z2dWR2hvcW5kd3lDcEhZSWZrdENQYWZmLzVaSFR0MkRPVlJGUjkvV0lEUGpsdVNjRjBSUnEyekFQOWhkTG85QVFIK3UyTmlZdllNSERqdzNQRGh3MjlKd044VWNNK1lNY080YXRXcW1Jc1gwL3RCTjd3ckp5ZTdDeVNqVDBsd1Vjcmk0Nm5PblR1ckRoMDZxTmF0V3lzWVQ5S1lyRWZ3d3FoU0owNmNGRWwwOHVRSktYbU1UTkNXbGtxL1o2STZSZUZBb0hOVTQ3ZU1qbzVXVVZGUklqRFlHU3pBNTdjN2NlS0VPbmp3b05xN2Q2L2FzMmVQT256NHNFajZrbTBFNmE2aG5WSmdpMnlIaXJjREk4b1BvYUdOOWkxYjlubXV1Y3BOcFZvRDk0UUpFK3J2MkxHakg2UkZmd3pidlFIbStpVS9GTldHVHAwNnFaNDllNnJ1M2JzRHpHMHc1SHFKaEVsTlRWWDc5dTFUKy9mdmx3OGVIMzlFSk02Vks1Zk5WOXVwS2tSRG1kOC9NakpLTlcvZVRJUUttU01rN1JHZXA2b0ZGVkZ0Mzc1ZGJkdTJUVzNac2tXRUNWUkY4MTJLQ1pJOUF3Sm9COHJONkVUcnVuWHJ0bnZXckZrM1JjclVLTGhIalJyVkFCOWlNQXlnRWVBZTBGV2R6S2RFTW5mcTFGbjE3dDFiOWVyVkMyQnVKVktaK214OGZMejYzLy8rSng5dzU4NWRrTVJuYlF3ak85VThVZHJUZnFHZzZkU3BvK3JZc2FOcTA2YU42UDhVVEVsSlNlcW5uN2FxalJzM3FBMGJOZ2pZTFhZSGlhb2tiSUxMQVBvUDN0NzF2bW5WcXRYcUR6NTRQNW1qUkoya2NlUEd1ZU1EaklHTzl6MkdPZlpZaW1jTnZWL0RFS2o5NlU5LzByNzk5bHNOUXh5K2o2WkJ2ZEMyYjkraHZmbm1tMXIvL3YwMWZEZ05IMFd1c2ZPdHg2NnVyaHBVUk8ySko1N1F2dnh5dVhiMjdGa05nTllnZkRUbzdkcDc3NzBuN1FqaHBYZHRFZHAzZTNoNHhBc0RCZ3lNMnJKbDZ5MDVvV0ZEZmZ2MmpVUXYvenRlNmlKMjVXVUk2SGJ0Mm1sdnZQR0dkdURBQWZrQS9CRDhDQjkrK0tFMmVQQVFEYjBZZGUxZ3Jxc002YTVCSW10VHAwN1ZWcTllclVIZEZLRUY5Vk5idG15WjlzQUREMmpROVcydW83N3U3eCt3TXp3OGZNcUlFU09DY096V0l4aDhyVTBtMDVkNFNTcGY4dUNSa1pIYUs2Kzhvc0VJRVRCZnZYcFYyN1Jwa3padDJqUU5lcHlBM2xMWHpyY1grL241UVdnTjFqNzc3RE10TFMxTmdKNmVucTR0WHJ4WXUvZmVlNlV6bEw0R0VqMGZ1djFLZEpLQkw3MzBrbFYxdldsMDExMTN0Y1FEcmFEYkdMdnkwRU9HRE5IV3JGa2pZTTdMeXhOQVAvbmtrMXJEaGczdHFzYnZrS0ZyYXdNR0RCQmdVdzB0S2lyU1RwdzRvZjMxcjMvVk1NcmIxQ2RHSU9VVElpSWlubnZpaVNjbHJLRldDYjNTQjJCOUQvcTBTR29QRDAvdDhjY25hMGVQSHBXSFAzMzZ0S2doMGRIUmRrRGIyY3ErdnI3YXhJa1R0UzFidG9oNm1wV1ZWUkFiRy91eXI2L2ZVYjM2bnA1ZUdjRFozNkd5QkdLLzVnbjY4MUJZdnluWTFCalBNSDc4ZUEwV3NvQjYrL2J0MnBneFl6UTNOemViQjdXem5TMXNNQmkwVHAwNmFZc1dMYWE2OGpvd1pBU3VIb0k2ODdOZWZlQXBLeXdzZkhaYzNHQmY3RmMvUGYvODgrNGhJU0VmNGNFNHp5TkdJbnNnUWIxcjF5NnhqdTE2dEowcndoelYyN2R2bjNMKy9IbnhIRDMyMkdQR1pzMmFUZkR5OGpwVHNwNkZQVHc4TGpSdDJuVHluRGx6aXFQVHFvUEdqaDBiNHVQajh4TTJCY0EwQ2psOWg0ZVNZWVpXTDgvWjJjNFZaWTcrTDd6d3doQnNXMm44K0FuZWpSbzFtbVZSZTBzeU93VHN2SjJ3OTFwaC80WjAzWG5HTysrOHMvSGh3NGZYWHI1OE9ZTHhDM1BuemxWUVBTUzg5TkZISDVWSi9LcFFXRmlZaW91TEV5ZE84K2JOeFRtQUY1Q1lCK2p3Nm9jZmZsQmZmZldWT25ueXBQbUttaWM2a3U2KysyNU9iWXJEZ2pFWnNPYk5aKzFVM2VUcDZia0M3VDdDdkN2RW1LQ1JJMGQyM0x0Mzc2ZkFYZ3Z6WVNzQitMbWhvYUV2elp3NTh4M281R1hHdFpRSjdsR2pSb1YrKysyM1AxeTVjaVdjd0Y2K2ZMazArSnR2dnFsZWUrMjFLbmtNR2RmQWUrREJKSjZCTGx3RzY5RE56a2VpeXpjc3JKRjR5QmdFdFhMbFN2WHl5eTlMY0U5TkVRRThhZElrTldYS0ZJbS80Ty9TM2N3T3pBaEJPOVVZWlRabzBNQUVBWmR0M3JmU0k0ODg0ckZtelpvUHpwMDdOdzRxc1Bsb01WRUlRdkI4QlNrK2J0bXlaUm5td3plbXQ5NTZ5d01LL2c1c2lnR3daTWtTc1hEcGxlS3h5aktIbFhIanhsbW5oV2lFMGlnMW1Vd2xkSFlIK1UwNmQ4YU9mVkRidkhtejFLVnpBT0Nya1JrWWpCcmE3dDI3NVhjZ0xiU0hIMzZZdzU4OGgxNTlPMWNmOHh0RHlQWER0aTY5Kys2N0RoQ0d6d0lmWXUrVlp1QjBMOW9yQk52bEk2Z0w3Nk9RaXg5Ly9IRnA5TmRmZjcxS3dPSzFyNzc2cWpoMXFLK1BIajFhZEM2OXVpV1pMejk4K0hBdE9UbFpycDAxYTFhMWdvNlcrNFVMRjZUejhGM3ROa1R0TXd6SnQxQ1dTUXNXTEdEazRxTUF1UGhVU2pNRTBUSGc2Y1plenU3ZHUzY0Q2S1NYMFBsQ0tidCsvZnB5QWZGNlBIbnlaQUhua1NOSHhJT3BWK2Q2akE2bkhUeDRVRG9halZxOU9oVmxXTjhDYktnZVdvY09IWFRyMkxubUdXb0pKeXl1UzU5ODhvbHEwcVRKYzJVSldHOXY3MjFUcDA3MXhIYlpCT1YrSXdxNWdQRWY5RFp5MkxZY3F3d3o5aUFySzB0QUZCNGVybHVuUEJ3U0VxSWxKQ1JvdWJtNVd1Zk9uWFhybEpjWkFMUno1MDR0SXlORHBMZGVIVHZYRG50NWVXV3NXUEh2NG1EeTY5RGJiNy90QUhWMUdUWjE3OU9vVWFOUFVPb1RsUHJPR1BLcHVVdXdDNlUyOVczdVY1YlowOWF1WFN0UysvNzdCK3JXcVFqMzd0MWJnd0VxcnYycXFDY2NTVGdLTUVwUjc3eWRhNDhkSFkzYXdJR3h6YkI5UTRKK0h1RGg0V0VOeml2SnhHN256bDM3WXR1V2dvS0NQa0FoRmVsdFpPTVRUSlpqbFdGS1JScWpESE4xY0tnZVhYbjU4dVh5Yk9pTXV1ZHZ4SXlEb1dmMTBLRkR1b0U4ZHE1OWJ0dTIzU0NVNWFLR0RVT2ZScUY3SDE5ZnYzM3g4ZkhGNncxTEVsU1NCQlJTYWY3OCtTSzVPWHhiamxXRzU4eVpJNUZoOTl4enIrNzV5dkNkZDk0cDRQNzQ0NDkxejkrSTJTbElsTjU2NSsxYyt3elZkeHJLY3RHVUtjLzZ1YnU3Y3hXMnpYMm9LUUFmUGJEOUc4MllNY01Fc1c2ZGJ1RTBIYWZoTFB1VlpVcEhoajY2dUxqb25xOE1VOW9tSmlhSzlLMk0yMy9tekptaTJrQkgwejJ2eDZ4TDlRcWptL3crdDd0MnZkT21Ib1VCbytENjl1MHIrM1BuenBQcHo5TDF5SC81eTB2MDBNazJwMWxuejU2dE95UFZ0bTFiYmMyYXRYSnZDQ0NvWkp0bDRVZnBlbldaQXdNRFgwZFpMdUpDYjVQSjlCOXM2dDRMdHRsN0tKVlZmSC8zM1pvb0NEUHJQbGVVVjlVenlLVmtUTFhBZFk5MGlsUVhjZUV2RjY0eWRRUFgvbFdVWU9CYTB4MlVsK2hnc2poNit2ZnZMNHRxNlVVdFRYeFA1aENaT25XYWZNT1JJeDlRQnc0Y01KKzlsaElURTlRenp6eWp2TDNycWFlZWVrcEJFT2l1d09kNjBmRHdNRHJXdU5KSkdZMk82dXpacythenR3ZGxabWFXdXlIWjdwRGNPODI3TnBTZG5kMlpwUlhNVU9xdldiRExWQWwwZzFlRkNHNG5KeWRwbk9vbWdwUGVUYnJzSzBwY3c4ZnI5WUNrUjVhY0p3dzlpSXNiRENBK0RhQ05GczhxYzZKWWlLNTd1dXRmZlBFRnlVZnkvdnNmcU9lZWUxNGRPWEpFdko0bENTT0JXckhpMytyTEw1Y3JTSHIxNDQ4L29sd2lhUm5vbWJVUXZiVlF3ZEJKUmpHNFNNclJvOGZJYndVRTFIN0ljMDFSL2ZxbUNpMnM5UEh4TFRQMncyaDBDbU5wQlhkQlFmNDFybmdNOTljczlxd3NZWmlWeHFsdXN0eVR6MWxSZ3ZxRjl5My91MUZhTXU4SkY4RjZlTGlyWnMyYXFYbno1cW4wOUVzQ1lBc3gvWVFsM1FTelY5MTMzNzFxd29UeElpUisrdW5hcWR5RWhBVGNNMDNTVmd3YU5GQTFiOTVDUmdlT0ppVTd6Q3V2dkNMWEwxejRtZVFoQ1Fqd3h5ajduZVJjZWU2NWNxdXBkWURLSjJnc1pGWkhkUWxDUzdCc0JiZkI0RkNjdE01TU1DWWxtMUZWaUN2WkdZUENGZFRWVGN5NlJNbkpScTRvTVZha0lubnlQdjMwVXhraEdPQkZsWU9KYXlaTmVrd2sraE5QVERiWFVwSitncEk3SWlKY2t2NnNXdlZmZ0hLaDh2UHpVMTI2ZERIWEt1N3dsT1I4aDUwN2Q2cmx5LzhsaVhHWTZvMnFEQk1KV1dqNjlPa3lpajcwMEVQcTJMR2pBdlFCQS9yTFBkOTY2Mi9tV25XZnJsUXdUMGRTVWxLWjRDd3NMRWd6YnhZVDlMbW9rdlBHOUNSeStzNnlYMW1tMDRYR0g0WUszZk9WWVQ0bm40OU9vY3E0eXptRFEwY1E0MGYwenVzeGpUa2EyUFNPRGhzMlRGWjlBOGcyOVdnUXpwbnpyclppeFFyeHF0SkoxSzFiTjV0NjVMRmp4MnF3YTJRNUZzdXk1dHhwUkI0N2RseVc4VDMvL1BQYW5qMTdHTitzVzdldU1qcnJHeWpMVGRDN1AwZWhleThJMDRVb2Y1UGNVNlpNWWFvc2EyUVdKVW1USmsyc0tjb3FTd3hicFpScTFTckdmS1RxMUxScFU4bVV0SFhyVnB1a01PV2hEUnMyaXI3ZXAwOGY4NUViRXlVeUU5TXd6dUdiYjc2UkJFSFVqMHNUalU2bU1KczllellNeGtTMWFORWlHMzNiUW55SHQ5OStXN0pudmZQT082SkRVNnFYSm9ZRzAzamw3M0lVWVVob1NkWGxkaUNBMVNZcXNDeDY3YlhYWFNFMDdqUHYyaEJHMVA4emIvNUc2RDFXMS91Zi8veG44U3FpWVd4NlJrV1lxM1NLNTZRWDZKNnZERnZtemhsUXBYZitSZ3pqVUlLM0tJbExqbFoydm5rTVFUb1VaYm1vZGV1MkQ2SFF2UTlVNmJOTGxpeXhEY0NQakl4OEJvVlVZdUlWZ3B2NUtDekhLc05VRzZDTFNveEs2OVp0ZE90VWhHSE1hWm1abWFLV1ZHWHVmTWFNR2ZKK3NiR3h1dWZ0WEh0TUFYUC8vWVBhWVB1R05IbnlaUGQ2OWVvbFl0UG1QbFFKWVpoUHhMWXRqUjQ5dXI2Ym01dlY4N05qeHc3dCtQSGpWWGJBOU92WFQxendlL2JzWmMvU3JWTWU5dlQwMUtDS0NDaUhEaDJxVzZlOHpOWFlaODZjRWQyWkFWbDZkZXhjT3d6TVpYL3d3VWZ1Mkw0dXpaOC9ud0w0UTJ6cTNzZGtNdjN3M1hkcnk1NCtpNGlJbUk5Q0toTkFWQ21najl2Y3FLTDhqMy84USs1RnoxNWxBRTVnZi8zMTEzS1BlZlBtVllzNndiZ1pHcFpjcUFBZFZyZU9uV3VlWWRqdlFubGRncUNsclRVQjdTNkJmYVVaQnZiWk1XUEdYSC9Sd29nUkkrcWpJdGRWQ1lDWVpJZUIvSFFCODFobG1kTC9peSsrRUhEUzJvK0ppZEd0cDhjTXVkMjJiWnRjdTJyVnFtcE5IL0hnZ3crS3lzUmtNV1hOYXRpNVpobDIzVHNveXlRbVJHWDZCNmk0Tm91R3lSQjh2L2JxMWFzZHRtOU1yVnExK2dQMEYra2hqS2xJU1VtUk9JN0dqUnZiM0xnaVRJQlRnbE5GeWNuSmtiZ0w2dUVNZVN4ZGw1UDBUTDMyL3Z2dlN5dzRWUkhHbDNOS3JuVGRxdktnUVlQRXdHU1dySVVMRjBsSHJrek1pcDByenRTVHUzZnZYbVpFSUZRUmg2aW9xS2NBYk4xVk9CQjBLZjM3OSsrS2JSc3FjNEZ3ZUhqNGh3a0pDWTl6dTJ2WHJ1SVZTMDlQVjhPR0RaTms1RlVoNk9CY3A2bGF0bXlwNkFGUFNEZ2xEcENrcEdRNUh4UVVLTjQreG05d2Fvd3BqVjk4OFVVRnFWMXVsM2xGaVk2bW1UTm5jdFcxaEF4d2NUQ0hRcnJwK2Q3b1hPYWFkcXBteXNTM0QzejIyV2N6emZ0V0dqdDJyTmVtVFp2ZVF4dllMQkFtK2Z2N0g0bU9qaDRFTzZ4aVFWRDRNU04wSVU2R1N3OWhtQ2wrUkx0OCtiTDJ4ei8rc2NxU2piTW96Q08zYU5FaVNjRkczWmRxQjVuYk5QU1dMbDJxeGNYRjFlcTZSaTZCWXk0N1RoTmV1blJKUmhoR0VOcTVaaGlqK0wvdzNhOGhMaW5yMGFQSFBUNCtQaWV3YTlOR1ZKZURnb0tXUW9XK3JndTlUTWxOSXNBQnNMa1lzaCtteEtRemdlNWsvTENDTHE2bVRac21meWRSVmFKMHBudmI0dTdQeU1nUU43TmViNjFOb2dSbndCUWRNM2FxZm1LN3g4YkdqdmpvbzQ5V21BOHBxSWhCMEF4bXBhV2xqUUh3YlR5SW5wNWVGOFBEdzU1ZXQyN2RGK1pKZ01yVDJyVnJEYkJTWDNKMmxqOEVsVmhtdXFDNWtLRlliNTViWlYzY3pyOC81bWg4enozM3BIN3p6VGNpT1lZUEgrNERITTJFRHMwY0pEYjFqVVpqUVVoSXlBS29LdFgvNTVrZE8zYnNpV0hDT25uT2xmSHo1MytzWldmbkNNaTUxcEtMZHUyR21KMnZ4OHhIODlSVFQ4a2lGdGd4Ynd3ZE9qUVFCdU5zZDNkM3hsZmIxQ2VlQWdPRE5uYnAwcVV0OW11T3hvOGY3d1ZEOHgwTTA5WXBHYTRJNFl3R0pUbG5OTGlpbkt0S1RDYjd2TEdkaTVsVHQzVGswWWJpdERMdEt2N1RScnQyN1ZhNnVMandQd0Z0cm1FcWtZQ0FnSTBRbUgzaTQrT3ZxejVYSy9YcDA2Y2xlcUExOFR5WkVYWlBQLzIwdG4vL2ZnRjVabWFXOXZYWEsyV2hzWitmbjgzRDIvbjJaa1k2UXUzUS92blBmMHIwSm9uL3NQRHBwNTlxc05uS0hPSFJFZktoU3krNysrNjd1M0NtNnFZUmVsV2IrdlZOLzNKeUt0Ykh5WHpvenAyN1NIQVRaenhJN0sxMHZqenl5Q05RWjBKMTF3bmF1VzR6MjVRR0hvVVpKWFJxYXFxMFBVTitWNjVjS1JuRzlQNGJ4M0l0NDBWQ1EwTmZIVEprU1BsVG85VUd4Y2JHTmFHWHljdkw2eHE5aVU0YlNIbjVoeXZHZFJjV0ZvazNrSXVQcDArZkxta2ZxaHEzWXVlYng3REJSRHB6d1RYYjFES2R5d1hobjMvK3VUWnk1RWlKNGRHN2x1enA2Wm1CRHJFVStuUS8vdkV1amxVclZhc3V3Ny9wMjdWcjErQUxGeTZNZzdUdWpaZTFQakNuMWVpWUdUUm9rQ3l3NVRhUGNkWEpwazJiMUxwMTY5VG16WnNsQnRydU1MbjFDQ095eExSMzZOQlJuSHJkdTNlVGhkWUFxTVM1Y3hIMCt2WHJ4ZG5IMVVWb2UvT1YxeElFWUNhdStRNzNXaEVURS9QZmhRc1gyamh2cW90cVRGSEg4R1JDYng2Y2xaVTFIRUR2bVoyZGJmMlhLczV2TXRDZml3WG9yYnpycnJzaytKN3oybHhNelBXR1hJakFmNnBsMnVMTXpCcDdmenZwRUlITVJkUXRXOGFvOXUzYk1hNERaWHRaQWtlQnhQK0ZwMytEaTVvcG1OaE9FR2ptcTY4bDJHWHNBS2VnUzM4WEZoYTJ1bW5UcHV1aGR6UHl0TWFwVnF6UVVhTkdlUU9rZmFHRDN3dXAzQmRnRCtYYVNndEJOWkVGc3IxNjNTME9JcWdySWlWSS9COXlyaDdueWhjeUpRUmQ0N2VDazZldUU0VU0xMmN5WHpyL0NwdC9BRUJBdDJ6WlFyNC9WK0d6bmRCdUVuSkJpUXlCSmUxUVZzNXlnOEZBNlh3QllQNEpvRjRIUUsrZE5HblN5ZUhEaDlkNlk5WGVGSXVabGkxYlpsaTRjRkhFb1VPSGUyWmxaZlRFSS9USXpNeG9sSmVYWjMwV2ZsVG1PK0hLY0E2RGxCejhUM0pMR29lclYvTmtxUlZCenVWWFhEaDcvUGdKV1RtZW5KekV4YVoyMVFaRThKSmhyS21nb0dCSkp4RVZGYW1pbzZQbGY5NjV6UkhUNG9IbGNqZXFoY3d6UXdEdjNidFBjcW1rcHFhVStUMmRuVjJnTzN1Y2dZVCtDYURlMHJoeDVPYStmZTg3TW5YcTFOK2sxMDJpV2dkM2FZSWw3ZkRKSjU4MGdIVG9Dc0IyaEs3V1BqOC92elUrOUIyUUd0Ym5Zd05RbGFHRVljQVYxMUV5eFFJYmpDdkJLVEZnbkl1dVI2bkNhU1NtVDdDa1MrQ3d5YlFMWEwzT2xBb2NXcW51MU9WT1lBa1A0Q3A4Z2pRd01FZ0ZCd2ZKbWswbXJxR0E0RGZqOStIM0k5QTUydkg3bkQ1OVJvUUMxVDZPakF4TzQvZmlOK0YzMUNNYS94NGVIcWtBOGo1STVqMG1rMmxYY0hEd3Rva1RKNllOSENoSlRtOHB1dW5nMXFNRkN4WTRmdi85OXlFSER4NXFnWS9kT2lzcnN3WEFHM1AxNnRYSWpJd01Od0RTK3R3dUxxNlN5eU1zTEZ5aUNKbVppUTNLaHVYUXloUU9sRnpVL1N6RW9aYVpvU2lwR1BISFdCYU9CRlNCc3JLeVJlVzVmUGxYbk04Ulk0bHBHbGlISFNjdkx4L1g1c3ExUE1mN0VEQ0ZoZVRpamxLOGYyUEI1ZVRrRE1BVmc1U2psYnU3dThUWEFEZ0tJQkxRVW0yZzBVWWQyTmZYRCt3ajc4VnR2amV2c1FDWHhOL215TVU4SzBsSlNRSllkbTVLWk9aVFlYbnAwc1V5RFQ0U25vZnp6YjhDek1kdzczaUR3WGdnT0Rqd01Eck0vckZqLzNCeHlKQzRPcUVQM3BMZ0xvdm16Sm5qQkowdkNNTm1HQjY5QlNSUUJBRFd5R2gwak1ySXlHeUE5ZzJBUkxZdU0yS0RVNThuQUNqWnFOWUVCeGRMc3NEQUJnSVFQejlmNlFDVWdQWHErWUM5NVJwWFZ6ZndEVk5HUzBlaHBDT29pb3FLaFplbWNmdkc3ZS9vV056aG1CNk5JdzhOT1QyeWRNVE16Q3hKQk1TY01oeVpMbDY4SktOUWNuSUtPbWVxZ0prakZjSE5qbGVXQkdhejQ1c1U0dk5jd0h1blFDV01kM2YzU0w3ampvQlQ2R1NIQU9KamNYRng2ZVBIajcvcHFrVlZxRTZCKzNxMGZQa0t3K0xGaTl5Q2dnTEROMi9lN0FkcDErVFVxVk5la0g3UmtNVHVhTFFJQU5HYjZnNmtrVDhrdENNYTFXQVdlRllnVUlKU3lwTzVUY2xKeVVocHlrN0NrdEtWMHRab2RKSnpCb09EbEt4UFl1ZWc1TDBlc1ZNUWhPd0VWQVZvUnpBSFluWjJsb0NYNTZnNnNlU29BVlZOenBldFJoVy9pSWVIZXlHZUpSL3ZlUnJQamx0a0phQXovNExmT0FWMTVSZmM1d1JzbWJURXhET25ubnp5eVp4aHc0YmN0bGI1YlFQdTh0S0dEUnNNVzdkdWMxcTBhTEh6Z0FFRGdwT1N6bmx2Mzc3TjFkOC9vQ0VrcmlmVUZHY002ZDROR3pZTWhncGl6TTNOY1lLKzdncWcrQVBZOWFCK0dQUHo4eHdCU2dmVWxVV3RBUUVCUVJnbERPd2dBTjgxWVpwVW9Walh2Q3ZFcXBEV1ZySEsrR1F5cUFnZE1SbWRwQUNkSXcvR1dnR2tlV0ZCUVg0V0FKK01rU2ZYMWRXOUlDY25LeDNTUEExRzRsVW5KK01WUE1mWmJ0MjY1MEQ2WG9KNmxUcHMyTkQ4SmsyaTh6a2YvWHVtM3gyNHE1czRIdytwYUFFN0RMV3oxNEQ3OU9sRUEvVDNhNzR6UUtoRlJrWlpKU1pVQSt3MzFod2REY3lXVkVoRDJVNVZKYVgrSHdBUGdZNitjSnVJQUFBQUFFbEZUa1N1UW1DQyIsInN1cHBvcnRlZEV4dGVuc2lvbnMiOlt7ImlkIjoiY3JlZFByb3RlY3QiLCJmYWlsX2lmX3Vua25vd24iOnRydWV9LHsiaWQiOiJ0eEF1dGhTaW1wbGUiLCJmYWlsX2lmX3Vua25vd24iOnRydWV9LHsiaWQiOiJobWFjLXNlY3JldCIsImZhaWxfaWZfdW5rbm93biI6dHJ1ZX1dLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJGSURPXzJfMCJdLCJhYWd1aWQiOiJkNjFkM2I4Ny0zZTdjLTRhZWEtOWM1MC00NDFjMzcxOTAzYWQifX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjAtMTItMTIiLCJ1cmwiOiJodHRwczovL2NyYXlvbmljLmNvbS9rZXl2YXVsdCIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiQ3JheW9uaWMgS2V5VmF1bHQiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDIwMTExMDAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4zLjciLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMyJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMC0xMi0xMiJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjAtMTItMTIifSx7ImFhZ3VpZCI6ImM2MjEwMGRlLTc1OWItNGJmOC1iMjJiLTYzYjNlM2E4MDQwMSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiYzYyMTAwZGUtNzU5Yi00YmY4LWIyMmItNjNiM2UzYTgwNDAxIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlRva2VuIFJpbmcgMyBGSURPMiBBdXRoZW50aWNhdG9yIn0sImRlc2NyaXB0aW9uIjoiVG9rZW4gUmluZyAzIEZJRE8yIEF1dGhlbnRpY2F0b3IiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MiwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9LHsibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMzg0cjFfZWNkc2Ffc2hhMzg0X3JhdyIsInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCIsImJhc2ljX3N1cnJvZ2F0ZSJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDT3pDQ0FlR2dBd0lCQWdJVUlVM3ptdkJYZzF5SkpnMU5wL0R4OFR0M0VnOHdDZ1lJS29aSXpqMEVBd0l3ZHpFTE1Ba0dBMVVFQmhNQ1ZWTXhFVEFQQmdOVkJBZ01DRTVsZHlCWmIzSnJNUll3RkFZRFZRUUtEQTFVYjJ0bGJtbDZaU0JKYm1NdU1TSXdJQVlEVlFRTERCbEJkWFJvWlc1MGFXTmhkRzl5SUVGMGRHVnpkR0YwYVc5dU1Sa3dGd1lEVlFRRERCQlViMnRsYmlCU2FXNW5JRU5CSURBd01DQVhEVEkwTURnek1EQXpNRE0xT1ZvWUR6SXdOVGd3T0RJeU1ETXdNelU1V2pCek1Rc3dDUVlEVlFRR0V3SlZVekVSTUE4R0ExVUVDQXdJVG1WM0lGbHZjbXN4RmpBVUJnTlZCQW9NRFZSdmEyVnVhWHBsSUVsdVl5NHhJakFnQmdOVkJBc01HVUYxZEdobGJuUnBZMkYwYjNJZ1FYUjBaWE4wWVhScGIyNHhGVEFUQmdOVkJBTU1ERlJ2YTJWdUlGSnBibWNnTXpCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQkpZSGIwWEI0bU9TQjhkSEw3ek42QURNcUY2OVcwOWY1eG1YbzhNSnZBSUVFQ0kxWlZlUnBlMFBFR2pZdkloY0JDejFOaXFUTStzRmg0a05Ca082WDd5alRUQkxNQWtHQTFVZEV3UUNNQUF3SFFZRFZSME9CQllFRkRqMndZb1lKZEFjZ3JiRVpqMUNnU0p4dlR2WE1COEdBMVVkSXdRWU1CYUFGT2dhZXF5OStLQVR3a3N4NHBaZ1FzcHY2SlhDTUFvR0NDcUdTTTQ5QkFNQ0EwZ0FNRVVDSUNibUtnUDM4NzBWVEdmY2pqU1BWVWs5aVdZWjBuUG9nVHlsbEE2MktjejJBaUVBcnBqVWVLWGxGQ1VUekRQMEZ6emJSVlZ6K0wvai9HZTNvazgvV1VrR1RpST0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBRmdBQUFCWUNBSUFBQUQrOTZkakFBQUFCR2RCVFVFQUFMR1BDL3hoQlFBQUFDQmpTRkpOQUFCNkpnQUFnSVFBQVBvQUFBQ0E2QUFBZFRBQUFPcGdBQUE2bUFBQUYzQ2N1bEU4QUFBQUJtSkxSMFFBL3dEL0FQK2d2YWVUQUFBQUNYQklXWE1BQUM0akFBQXVJd0Y0cFQ5MkFBQUFCM1JKVFVVSDVnWWVGU2toSVkxcEhRQUFET0pKUkVGVWVOcnRuR21RSFZVVngvL25kdmRiTWxrbjYweVlMQVFTaHdFU1pnS1RoRkNJWmR4S2xoS0JzSlJVTEQ4b1NvRUxXcVdCS2t2NFFPa0hUWlZnNFZJS1dBcUNRdkVob3FXZ3FDUkVsaEFJaStEQVpBSlpKeVNUZWYzZTYrNXovSEJ2THkvSnpPczNtWmwwck55cXZDU3o5T3Y3NjNQUC8zL092VE1rSWpnMUFIV2lieUFyNHhRSU0wNkJNT01VQ0ROT2dURERQdEUza0hvSVFBQWdnVUFFUkVnamR3VHp4UXBFSkNKRWRPd3ZQTG5rYzVpWkhPYzRPU0pDejE4Q0lZdjIvbW4zcmtkMzJsTWRCQ2tlSVJGRXF2M1ZKZC9yS013dENndXBZM004Q1VBWUNqNlRyUTYvZG1qcjU3WUVGVllPZ1ZOd2NNamRWVnE4dnFNd3R5Z2lHRHFZc3I0MGtySGdmVkQ5MStxL0JRT2VNeTBuL25DekFnQUI1VlM1dDlSNlhWdkhobVdvdDZ3eUhSR0dBZ3RaQk9ERnRjOVY5MWJ5cy9KQk9hajd2Y3BSNVozdWxPWFREQVVXVXNNbHl3eURFSlBuOWY5ZStmS0xCemIxRitjVnVjckQ1MHNSSVZ2NWg3emN6SHpudzkwQWRFQU5IeEVaOWhINm5obWtxR2ZEVzMzMzl4YmJpbHhsUWowS2lxVEtYT1hPaDdydHlZNzRYSmRDZGtIb1FHQ2Z5YUk5RzNlOWVjZjJZbHRSZklrQkRVV0JDSVRLN3ZMWjkzWk82cGpNUHBPdDBvaHVGa0ZFTXFGc2RmaU5nVzFmZUQ0M000ZDBKb0ljS3ZlNlo2eHZuM05GcXdTaWJBVWdqZlhJSEloWUptemxEL2d2WHJNWkZsbDVTMWpxcGdhVlUrVWQ3cHdyV3hmZHRsaEV6T1RTcVdLMlFCd3BFOWR1THU5MG5Ta08rL1VUcEhKVWRXOWxjdWZVcGI4OFg4L2Y1TnAwUmpSTElHcGw0dFZidHZZL3N5L2ZVbUF2aFV4WTVBLzQxa1M3ODZGUUpsVDlCSmxWRVBxZUF5RkY3OXp6OW81ZjlCVG5UVWdyRTc0RWJuRGViN3B6TS9JcFpTS2pJR0tac05XK3YreDVjLzJyeGJZSmFXVkNVZVc5Y3NlUGxrNWRQazFTeTBRV1FTUmxZdkEvaDdmZXVNVnB6b0hTeTBScDRkZk9hRjNiSm9IQUlnQ1VNakZrQ2tSU0pnSTNlSEh0WmhCWkJVdUNkREt4MDUxMWFjdmk3M2JvMlJBUlVpZkk1QmpTWXB2N0V4RTJUUkdTSWFKVWY3eGU1Mk80ZDRtcmljMXVieW5mVWtqam81V2pxdnVyVFVzbUxidi9mS1NvSmtZSVFsK09pTWhxNEhLTjNVU3RUTHoyalpmM1A3VzN1R0JDcW1yQ29tRFFWem5WOWJzVlpGR2FhbUtFSVBSRjJlZDl6K3dIQUJWSFJPS3RpQWo2ZVRhdm50NXdSRVF5WWF2ZW4vWDAzdGRUbks5bFlsaDZJcVFJRE8rUXYveXhsWVc1UmZaWmpTaEJwZ0toQTk0ZjhQOXgxV1oyQXl1bkNLTGZSeEdJUUFDQnlDSnhnL3lzL0NYYjExRGVnaURsK294QUsxdnRmM3J2NjdkdEs4eU5xZ2thNXJzQUlrV2xkMHNkRzVZMnI1NmhVNnpnZUZ0NGRjcHdzaWszSTg5dVlPVVZpZWgwVElsWHBSUzdnVE05cDlOMXloSEtoQ2hibGQ0WjNMcnUzMDV6RGdwMUV5UUFsU1AzM2RMOEx5NXNXN2RBT0pRSkdZRlFOQUlDQWc2WVdTZ1FBQW9RUUJFa0JBRXdzM0NRMXRLalJpYUlLOEVMVjIwU2orMnB1VlErT3FjcTc1ZG5ySm5kL3YxekFSMlR4NVVhWXI3MTd4dGdFUUZFOUQ5RXY0WUQrcVV4Q3FGTXZIVERGcmVuNURTbm8yQXJyOThybkZaYzlzRDVnQW1mMGVwcjF3R2g1eC9QR3lRQ0FZbVFDQW5BNXJNcE1kVEt4TGUyN1gxeWQ3NDFsVmlTUlVFNUlJdTZIbDFwRmEzamw0bkdRQmdXQUJzb21vVUloRFdqOEZPcE9KQUFwcHJvZStEZDNudi9XNXczUWJ3NjMyMW1LNmp1cTU3Nzg2NEpwemZ4aUtxSjR3WWhpYUJBSWk3QzlaSXlJa1NFUUxxYTZIOW0zL1piWDg2M0ZvU2x6bnkwak5qazduQ1gzTmt4NDZPenRFeWdVYzl5L0NDaUp5OUNJbUNZbXhjUVM3aDJDRU50bk1RVWlIVExxTHpUM1hyakZtZUtUUmJWYjdkQVZFNjV2YVcyZGZNWGZHVlJKQlBwYy9Pb2dSQXhMQmpDT2pXSU1DUk1GaEJDNEVsUTRhR3ZFQ2RJOXZqNXoyNEtLbXcxMmFtcUNVZFZkbFdhVjgvUVhYbWdzWGJMcUlLSUl5SjZwV2lac0FBVytZTytkOGdiam9LWXZiYVhidGd5K09aQWJub3VWYnZGVnQ1Qkx6ODdmOTV2TDhDSTJpMmpDa0tHWjZHWEJoMTdhWWcyNGREYmMyL2MvdXFlamJzS2M5UHRUU2lTS2lPUXpvZTc3VWxwdS9KakNjSTRpR095Z0VCNDZHU3AvUVVIVEJiMVBkajc5Zy9mS3JSTllFOTByVHpVTXEvcHl2K2tjMko3QTEzNXNRUmhubm9VQmFGcVNwUkhqejJwWkRYUnYybi95N2RzemJjVW1FVTRuT25RTE1pbThnNzNqUFh0c3k5dGFhZ3JQNFlndU5aUWNZSkYvS3IvT29xQ25vUDducnZsMnVlc0pnc1dTV0NNaVlROWppT2lTZnRvdDg5dFhkczJncTc4R0lJdzlqSDIyc1FTdWlrNXRxZEt5b1N3YkxweWt6Y1lxSWsyKzVvcXhmYWNrRndtcHQyeXB6SmwyWlJ6N3V2VWJ6OUdNdEU0Q0VHaTBFaVlTeEdKWEVidDQwckt4S2JybnZ2Z2xVUE9qRnhRWllHeElReGlqVlZNL1didzJlUVArRTV6cnZPUmxSaGptVGhpMU44Tmo1WkE5RWZQTllKMDdLZkZnSVZ0ZDJ6dis4UDdFMCtmRUZTWWlCaTZ1Nk12UithQUUzUzdWYUJJUEFsS2Z0ZnZWK1NtNTBhbDNUS3FJTUtJMEFBTUhETVRpa2pWUVBCWjJhcm4xNzNiNzM2emFWNHhxSnFPRHVLTENBanh3Z0JBcEJTVmQ3cm4vTFJyU3VlMGNhYVFEa1JOUk1RekVRSUpxYU0wd3pTZHRoelljdE5MaFphQ1NTZlJJVGlDV1F3NmtNekNFSEtvOUU1cDBUY1h0MTU5V2l3VFk1MFlHZ01oWUlDVDhSL1BSQVFxR1JFU2lIS1V1NnY4OUpXYlZOR0NUYXg5ZFBqWVRTK3ZsZ1hsbE52bnpyNmk5Y3piMjRFd2NXbDg0elVhdE5oaTdBTkhoa3BFZjlCY3psRUEvbnJGczlVUFBDdVNDWjFmRVJlc0hDWmRGc0NteXQ1S1Uvdms4MzYxSExvcmIyUmkvQ2lrQWhIMm84Q0pWbFZjZ0FPc0gyeDQzMCt2Zlc3L0N3ZnpzL0tCeHhwV2JjRWFOVEtJUmFESU8reXJKdXVDUjd0SjBYaktSR01nSXZNajRVeVM1bEpiRENqeUs0RTM0QU40ZnYzMnR4L3FtOUJXOUtzTVRTRlJzSEpjcEVEYlN3NmtldEJiL3NBRmhaYmlXTFJiMG85MHFtSFNZY0lBUmNsUFFJcXFCejFuaXIxajQ2NFg3bnA5OHZ5bXdCTVNjTnpnQlZDYkhVVkFSSXBLdlc3blBjdW1Yemg5L0dXaVFSQ1NjTVMxTTlHRnBSS3d6L21aK1oxLzN2UHNyUzhYWnVhWkJhd1JTTGdUb2xFa1dBQXFSNGQ3U2t0dVhiUnczUUxkZ01UNHlrU0RJQkFuU0RMNzAxQ2g1aGsvb1lnRCtlZFh0MEZnNXhVSFRLUTNnM1NsZHBSU1FGVGVHdXdyei9uNDdLVjNud09NWmxkK2JFRkVhVUlSUVlSSlNFd3R5S2JFRkFKVVRobXhOQ3NwOUk0SkZnSllqaXJ2cTB3OHMybjFJMmtQUVdZREJHTEx4Qkx0dTRjZmlsSUdnVm4wZ2pqQ080WUVJUkJsa1ZjS1lORkZqM1NybkRyaHFhRUJFRkdITm83d3lHZ1R4UUVmRlUvaEtoQVJGYkpnRVFLVUltRlUrcXNmZVdMVnBFVVRzME1oRllpb0RJK045QkEyV1llRytUa1JnWm0vT1ZoQmdNQ2lnWjdCRlJ1V3RxNlpwU2xBeHJiZE1xb2dqT3dqN0tJZm1meUVRR0x5SGNHc0RvN21yMkV4Vk1FYTZCbHN2K24wOXBzWFJWdCsyUmtwYzRRSW9MWFFkR3ExcFJBUTZSZ0lLeW9kT1Vjb0JZdkswMkJmYWM0bE0xZitlSm0rN0FtWGljWkJ4TnRjVUtHaFlpS3FpUXVFSzZmV2Nla3kxVmJsZnE5cFhuSE40eXVRR1psb0hFVENVREhwa3dpMTVsS1BXRFVqdjBBQ3NTenl5d0VIc3VheGxjNUVPMU1Kc2pFUUxHR3lCRUxocEhqeFIxNHdWazJEU1NBS0pJTFMzc3FuSGwvWjNERTVzeFJTZ1pBYStVeWFpRkJFVWFPYWlmUUpjdWhnMytDRmQ1Njk0TElXSHB2TjIzRUNJYldHS3A0L1JkNHhQQmNxVUdFeFJRSkFyTHgxc0svVWZ2MzhydThzMFFjY2t0eXlOdEoyc1RuUnVXZEFSSGNXUkZkWWtjVEdadHhSQSsrNWM3cWJQL2JnY2ozLzhlbktqM2cwWnJHajdDaElHcXFvQjJzV2k3SlYrUU92T0ROLzJSTXJBWEFnS25zeTBUaUl4SUVRMDE4NDJpOGw2bEd5eUsreVYrR3IvcjZxT0RPZjVRVFpJSWdhUXpWRUQ5WU1Ba0dJQmc2VUxuK3dlM2JYVlBaWU9TY0JoVlFnakh4SzFJMC9zcklPdTVVaUFqdW5EdXdldlBqYlo3VmYzOGFCNkY1dTlpbWtBb0ZraDBxek9OSTdBZ1JoT0FVNnVMdDAxdVZ0RjkxMWxvaVFpcUZsZjZRcncyc01WZHhsSUpEUy8yT3g4MnBnZDJYMldWTS84MWkzaG5laSt0RWpHNm1QRnhwL3FWV1R3L2E4TUNBc3NLbDgwSGNtMmxjL3VRb0EreWVzS3orV0lDUjVMQ0ErS0NNUTNhZUhJdmFrVXZYWC9uSFY1TlAwV2ZtVGpFSTZFTW56dDdXSGhzeE91S0lEQSs2bjd6bXY3Y0xwN0owY1lubjBhR2hmQXppcTlMWnlxcjkvOE9LYmwzUjlhU0VIUXZZSjdzcVBlTlRmNldMSVVSRmh6bzJvbkRyUVgvclFKUzJmM0hBdUFGSlo5OUVqQndIRVhSbWRFY3crcUlpeTFjQ0I2c3g1azI3WXVBb0FqK3BaK2V5QkNETUJtOU8yeEFJV0lZc3FnNzV0cTNWUHJiYnppbjNPZmpWeGZDQUlVSkR3QjNaRW1UMUxEakFZZURjOHNhTDU5S2JncEUyUXlWRi83N1Bxc2ljc0x2UTJIb0dVUlljQzk1b2ZkQzMreE96QVo4dkpVRmQrckVDSW9EREZzVXJLMWovVEJWZ09sZlpYUC96NUpSZDkvUXhoVVJucnlvOTREUGxiaDZKUTk4cEI4cHcxQWN6aUZLem9hMDcyUlZFSHhQQkRXTEt3aFQyS28vNlBSQi83N08vL0Z3VmsveGR5amRzNDhiOHRJQ1BqRkFnelRvRXc0eFFJTS80SEJMYnFPVmNTL3NrQUFBQWxkRVZZZEdSaGRHVTZZM0psWVhSbEFESXdNakl0TURZdE16QlVNakU2TkRFNk16TXJNREE2TURBd0R1Y1BBQUFBSlhSRldIUmtZWFJsT20xdlpHbG1lUUF5TURJeUxUQTJMVE13VkRJeE9qUXhPak16S3pBd09qQXdRVk5mc3dBQUFBQkpSVTVFcmtKZ2dnPT0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJGSURPXzJfMSIsIkZJRE9fMl8wIiwiVTJGX1YyIl0sImV4dGVuc2lvbnMiOlsiY3JlZEJsb2IiLCJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwibGFyZ2VCbG9iS2V5Il0sImFhZ3VpZCI6ImM2MjEwMGRlNzU5YjRiZjhiMjJiNjNiM2UzYTgwNDAxIiwib3B0aW9ucyI6eyJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXYiOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJsYXJnZUJsb2JzIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZX0sInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN30seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTM1fV0sIm1heFNlcmlhbGl6ZWRMYXJnZUJsb2JBcnJheSI6NDA5NiwibWF4Q3JlZEJsb2JMZW5ndGgiOjY0fX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMTEtMjUiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJUb2tlbiBSaW5nIDMgRklETzIgQXV0aGVudGljYXRvciIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjQxMTI1MDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMTEtMjUiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6Mn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNC0xMS0yNyJ9LHsiYWFndWlkIjoiNWNhMWFiMWUtMTMzNy1mYTU3LWYxZDAtYTExN2U3MWNhNzAyIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI1Y2ExYWIxZS0xMzM3LWZhNTctZjFkMC1hMTE3ZTcxY2E3MDIiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiQWxsdGhlbnRpY2F0b3IgaU9TIEFwcDogcm9hbWluZyBCTEUgRklETzIgQWxsdGhlbnRpY2F0b3IifSwiZGVzY3JpcHRpb24iOiJBbGx0aGVudGljYXRvciBpT1MgQXBwOiByb2FtaW5nIEJMRSBGSURPMiBBbGx0aGVudGljYXRvciBmb3IgV2luZG93cywgTWFjLCBMaW51eCwgYW5kIEFsbHRoZW50aWNhdGUgZG9vciByZWFkZXJzIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjUsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwiLCJiYURlc2MiOnsic2VsZkF0dGVzdGVkRlJSIjowLjAsInNlbGZBdHRlc3RlZEZBUiI6MC4wLCJpQVBBUlRocmVzaG9sZCI6MC4wLCJtYXhUZW1wbGF0ZXMiOjAsIm1heFJldHJpZXMiOjAsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjowLCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmYWNlcHJpbnRfaW50ZXJuYWwiLCJiYURlc2MiOnsic2VsZkF0dGVzdGVkRlJSIjowLjAsInNlbGZBdHRlc3RlZEZBUiI6MC4wLCJpQVBBUlRocmVzaG9sZCI6MC4wLCJtYXhUZW1wbGF0ZXMiOjAsIm1heFJldHJpZXMiOjAsImJsb2NrU2xvd2Rvd24iOjB9fV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDcURDQ0FrNmdBd0lCQWdJVUdGQ2M2cmhlNEVpUmEvT1NxUE53dW9SMmprUXdDZ1lJS29aSXpqMEVBd0l3Z2FveEN6QUpCZ05WQkFZVEFsVlRNUTR3REFZRFZRUUlEQVZVWlhoaGN6RVFNQTRHQTFVRUJ3d0hTRzkxYzNSdmJqRVdNQlFHQTFVRUNnd05RV3hzZEdobGJuUnBZMkYwWlRFaU1DQUdBMVVFQ3d3WlFYVjBhR1Z1ZEdsallYUnZjaUJCZEhSbGMzUmhkR2x2YmpFV01CUUdBMVVFQXd3TlFXeHNkR2hsYm5ScFkyRjBaVEVsTUNNR0NTcUdTSWIzRFFFSkFSWVdhR1ZzY0VCaGJHeDBhR1Z1ZEdsallYUmxMbU52YlRBZUZ3MHlOREF6TVRReE5UVXlOVEphRncwek5EQXpNVEl4TlRVeU5USmFNSUdxTVFzd0NRWURWUVFHRXdKVlV6RU9NQXdHQTFVRUNBd0ZWR1Y0WVhNeEVEQU9CZ05WQkFjTUIwaHZkWE4wYjI0eEZqQVVCZ05WQkFvTURVRnNiSFJvWlc1MGFXTmhkR1V4SWpBZ0JnTlZCQXNNR1VGMWRHaGxiblJwWTJGMGIzSWdRWFIwWlhOMFlYUnBiMjR4RmpBVUJnTlZCQU1NRFVGc2JIUm9aVzUwYVdOaGRHVXhKVEFqQmdrcWhraUc5dzBCQ1FFV0ZtaGxiSEJBWVd4c2RHaGxiblJwWTJGMFpTNWpiMjB3V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVMySUFDNXQzaUVScTV4cHNFQXlxUHpqVGIrZWt4Kys1WjRWdTZZcm03U0ZmdHpjNUJkVVZpN3FuSnBab3RJZDJHZkZqYWQwWmprSWY4VDVSNWh0ZFZMbzFBd1RqQWRCZ05WSFE0RUZnUVVBeTVRT21JdGtCeCtSZ0ZuNEVmbFFWWWZuMUV3SHdZRFZSMGpCQmd3Rm9BVUF5NVFPbUl0a0J4K1JnRm40RWZsUVZZZm4xRXdEQVlEVlIwVEFRSC9CQUl3QURBS0JnZ3Foa2pPUFFRREFnTklBREJGQWlFQXdzSmFpOGdrQTE4Z3crYUxtVEt3dzBPSk55ZGdONG96ZUtlOTU3clJtNjBDSUVnd0FMbkJRa3IxQUZJVGliSkorVERQUDJ5TDVubzZIZFRFQUNBN21Id0giXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBS0FBQUFDTUNBWUFBQUQ3b2FKZ0FBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFET1ZKUkVGVWVOcnNYVjEyNGp3U2xUbjkzc3dLMmp6TjQ4QUtHbFlRc29LR0RVeGdCWUVWMEprTnhGa0JzQUtjRlRUOU9FL3g3TURmQ25xa2RLbS9pcEQ4SzhreTFEM0hKd25CdG5SVlVsVmRXVEpqQkFLQlFDQVFDQVFDZ1VBZ0VBZ0VBb0ZBSUJBSUJBS0JRQ0FRQ0FRQ2dVQWdFQWdFUWd0RVFSZnUzLytkOHg4UC9IajU5WjkvSnRSY3RiaGI4Qi9mK1BIRXVUdVFBZFlqYjh4LzdQZ3hSUituL05oeU1sTXlyMGJjclRsM1p6TEFZdktHL01jalAxWUZYMHVBekp6TTdZSTdZWGlMZ3E5OWgwNGNESGVEZ0FnVVJ2ZFdZbndNQ0g3ajM5K1EyVjF3dHlqNTZncTRXd1ZUOWdESW0wTFBIVGM0UGVQSDhsYmRNbkQzekkrNHdlbG44Q1RwVFJvZ0p5OEd3NXRidUZ3S2hwamRpT0haNU80QWhwamRoQUZDckxLQzdIWm8rZkpiRWVkY2Ezem9rRHZCMTFNWDNFV2VDWnhEejQwZDNpYURRRHU1TXVQenhkM2FwMndUZVNJdmhsaGw2ckhOZ3BVZWFuS25rMVY4Y09jbHBJa2NrMWRGVm5HTmhQVlF0Z21FTytleVRlU1F3QVgwM0dFQTdaa0RrZDk3WW53ck1MNVF1RnU3Q21raUIrUk5XWE5aeFRVeUZyQnNFemgzVG1TYnlDSjVNZlRhUlE4R21VNmxCd04zdG1RVkh5SE4xaFoza1NVQ044eU5yT0lhbmNvMmppVXAxMjVaUE9TdzZkUUFQVWtEUHR5eWQ5bm1pcmhySmR0RURja1RwUG1XVlh4SUQ4NWxtNDVrRlIvY05aSnRvcHJraFNBTjlGSjZJTzVhR21CZ3NvcVBHTWVhYkhPRDNGV1diYUlLNUlVc0RRUXRQUkIzNWR4RkpYRmVYMlFWMTZnbDJ4QjNINUN3QXRrbU1oQzRZZjJVVlp4TEQ2eEV0aUh1ek56cFpKdUJJVmorUWdSZVFDWVJQMEJDTVNVYW40azdMWGRmZ0ovS0x2aVc0NWVxMG9OV3RybFNxY1ZKTEJnQldYT1Rhd2tnZ3p1d3NLZW9FbVo0MmdhNEU2Tm1mSVBjRldiRE1NQmxBK1JhM29Dd0Q0QUxqTmh2amNmM0NEUGg5NytIKzZlQkd1Q0NHUlpKQVhjVDludkt6emQzSStCdTBnRjMzK0graVM1QjQ4ZUoveXFPT0FKTFBDbUYxNjYvOWVSYU1tYVlHbXU1Q01jSFJObVhCdTVpNXY2Qmc0d1pwc1k4amNaRllZbWM5MzVFSDg5MEJsakZ0YmlZeDZ5OExxRUhtV2JLREZOVGpqcFJwWWNESEQ3OFlEVDhrakN1MEFBTEsyYXc2RGF4U3EzSG8zcWl0VzBMWW10YkQ1MG1yT2JqVVpaSDQ2STZsaVd5cFFaWVpXaHZVNW5XRHpuMklGczNCdU1WZHpNSWxUdmpvRkZqY0toc2dMWmRpL1ZINUFON2pMMXVmRFNGc2svYkdMUW43b3h4Ym9Qd3FMWUI0aXhuYXhoMnl3cmdiS0ZMVDU0NEtaTnRkb0Z5Vnhobk5zd0xHaHRnRTlkaUhBRWNrQm02RUd6MEFJYlkydWg1UEhGWDFHbGkxdnpaMEZZR1dCcUx3TFhsL243ZTk2Z0xRQWkySWR0MHhaMFkwZVQrZ3FramIvTnVnS0tpYjVaY3l6YTAvVmtzWit1dUVOUWlxWW9kMjhiczJDU0NDLzd5cVVkMVJGb2JWK0hMTFFmSm5TdkZnZGMxc20yQXBiSk5JQ1QyY2phbDQ4NXJYWE4xYVlEZWcrY0dwTmFSQzdxU2JUcm56aVZQUGd6UXVYeFFJZlo3WU9iWkhCbm9oL3kwVFNkcmwzMHNHL1ZwZ0lXeWphZnN0eWpqdEJyYjlKdzdiN0d5YndQRXJzWEpidmNWOVQramErdkpiSW9yN3J5TCtGMFpvRVRDTEcyYjFuQk9WZXZhV3M3UDlvNDd5N0pLYlFQc2NwZDhVZW5XdTkzWDJDRmVoZlloWE5Hby9GaXliaDdrck12ZHFpVjNVM2c0OUxtclViL0xFYkNWOUdCWlRqRzZ0aDRzS20vQ25STlpwVzh1dUpIMDREaHoxYnEyYTVwTkNVbCtDdEVBamJLTlJ5UElTMlNiMERkbE1zVzJ3ZTNHMVhVTVdJU1ZKaHZ6TlFLOVo0Tzh3ZDdBeldQQ01uN00rSy8zNFBwQ3hFVW1DN0hpbmdVNCt6TkFjUVRoSTBSam5Yamo3V0hrdzRaNDRNY0lScHMrYkg0ZTdFSjVhWUJkTEIzc0MrWXlXMWRYOW9PYm5rRDhSYWdYNjAvK0dDQklENExNRVpGWjZOcCthRWJERE5iZkN0ZDhKcG9xWmV3eitXRHlvSUJNY3N0NjhqSkRRSjN5US9UcWRVL2NjaGZKMFVTZFRod1VrRGtpTXY5a3hVTGVHRlhSMnVBeGU4RmRRamIzRHVGUkJYY2IzY3pOZ01nc1JBTGsxVnE5MTVQWkZCOGVRN2phK3lKdGNrQmttb05rVWU4Mjg2MGl6Z0haWm5sRG5xU1d4eGcwSkRPN1l2SStCTWsyME9FR1Q4RjdqRUZETXE5UnR0a3l3NDVPbG94UWVKSTFDM3VuTCs4ZTQxTlRNdmtQb1l1Snh1cjcrMEpTNXZIUmQ3alBqRjd5MDNBRVZNa0V0OXhIMlVZR3liTXUxbDNBZ2kzcFNmb1lIMnBsbGJyNFpJbE1NWXFNZXJKQmR6RExIeFZQMHBlWEZWcGR3enl3VE9pR2hTM2J5Q0I1RTFLaGVqSUJVRWxXNmRRQVViQzlCREpEQ2JaVElHOFo4cHZUQTUwQXFDV3JkRzZBQ3BsZGEyQllWdWxONWhuUUJFQnRXU1VZQTBSa0prQ21iOW5HcWF6aUl6N3MwSk0wbGxVNlNVSnFCdHV1WlJ1dnNvb1B0eXpxNUdsdFNtdFpKYmdSVUJOc3U1SnR4UFh1dTVKVlBIb1NWKzdRaXF3UzVBaG82TlcyWkp2Z2Q1V3k3RW5Xbkxjbmk1NmswNjNoQmgwVHVta1piQ2ZRYTYvZStBeWVwTTNhRkNleVNxOE1zRVd3ZlVheVNzWnVGQTFuVTV6S0tyMHpRT3lXSzhnMlVsYVo5RWxXOGRDQk42emEyaFRuc3NwVlFDeitVZGRld0R2RzZEV281ZHhOMWUxRzRMTXBzVU1nRUFnRUFvRkFJQkFJQkFLQlFDQVFDQVFDZ1VBZ0VBZ0VBb0ZBSUJBSUJBS0JRQ0FRQ0RZUk9iL0I3M2Y0aWtmcGM3enJLSHBFL0Z4bjlUMDhsdi8rWXVscldoY0Mrd1dLSmFxdnQ3VEs3MU1Eb2xSeXNwTEZ6UElGMHNKWVp1anpFL3lzdS9YRUdKMGJYVkZiN09HbldMOXhzTGxGOE5VWUlQVFNSODNuQjV0N2lNQTdiSVhSYnE5bE5FQjFrcXYvVk9UU1U3QU90MmdEei9SbmNIRHRaZW91eTd4RHYrTlJiODRJYlNIWDkwNUMza0t1YXhmOEoyNWp2L2V3V3lERFRNaUdtZ01XMkc5dXJkNlZEUkNTaVJqK2ZCRzlWTGhlR1AzbUlqbG8yM05SWWlMWC8zNnBrcXpBT3RpdlVMNE1Bdm1rNUY0eGxQMWZjSjdvVkQvNW9RMG5VRGxFekp2QitmSytPWnlicURzMWFPbzBWSytGeWhPcnlacW1EV1NaaDFEbVY5Z2hvU2hwaytlTTRlTWoxRE5UK0lqUmQ5N2piZjQ1MHlWOG11dm1pTCt6aXhId0cvbzlSUldaSXpmY2RoUThLWDh2MENoN2theEFnendycEwyZngvLzNBREdNenBoRVlyUXlqTzQ3L3YrMXhvQmwyYmI4LzU4MTU3L0h4L3gvUytYY1UwRVN0VVdqM2dMaWF6VlprNDI5WjVlYkVZbS9WL3ovb3NHWGFzT0RvZS9aNWVaUFV5Z3JydWRDRTkvdmRJb0o1QUxQbXV0S0RnNVFudHltQWM1UnI1VVZQVUJCYkxuaEZEWFNFRWF6REFYcHVzeFJqbDVIVkk0eEhIdE5ZNTVRUTRwcnY4alJGdW9vN3Zzc2VyNWhGSDFBWlJQMS93dk9sUjFGbkp1aTBVV3RVODcrZnF0bVZxTmpqbEg0YzBSbFhraWo1dmNkeVVhSHpubFNZdmIvOGVNejFET0dzbVl3dW1WUTFxRnlyMXpqYlo1Um14emd1cGg3ZWYySkZRTlUzTzhCeFMxVzNiRE1EcEdSdkpSa3dUSDBOR3dvWWlQTVBaUkpTQm94Y25NTFpId0piSXFFNjdsR2piMHpaUGREYU13MS9oOXNtZllEL2hRanlkSlFwN01oQ3k2U3ZhUkJxSFdWOXoxQnVYYnl2bWcweThFVFlBMTJDMldONWFnTDEwMlVMSGlOWFMrTXhEdGtuT3JPV2hzbzd5TzQ3MFZaS0ZRMUM4WkQvNHZ5djJPSDJiQnBOOCsxb2V3UEtKNWNhanBBanM0ZG9sRk5sVXZXcW1GQ0F4OVF4N0FGR2Zxa3VyckNmZVdtbnkvb2MyRWNFVC8rb2JwbUtQdVRocDh5TEpEYjFlNU1CZ05HcHZEZDJnVkxFblFCc20wM1hBY0hVMFlwZzJkcERIZ0dSUmhneVdZOVVwTVRDWWE2azFSU01Nci9sQ092SlUwdVJzWjhMUEFjNTRKcnpEVXhzblRmZFhHSFFvZGhBWWNwQ2czYUdTQ1FNRVlaM0sraU9ORkdObHpEWmRlWkxSZ2JrcHNpNkhiaitzdGpCOE1qNmJtbThZNVJqT3lpWENkZk1reGR0Mm9qRzNhTk02dTJvV012cDhOZ3REK2hEblRXaktCZktuWkNrNGM0K3pKQUxML01La2dvb1lyU09GNDU5bVNLTHplTWhsVUdnYUVwY1VFSldWTUR6T29rVW8wTlVJbWJEa1h6Z2tvMkhJZTJkUzdFaFJrMDVOZUtkYzY2ckljSU1YaDVjRHlhbE1XSzBFWXh1b1pwTVBqYW9FaXZFTitPaTlvWVBRRlYrc1RTb0VKUFltVkJzTU5zK0xQbE5wVlo0c1V1b2dqUE1KcWZXQml2b1pXSjFrSVg5RU9IK1FIbGZUUVlneTR4YVRMNllXUGVHWXh2VVZTZXVpNzRyaXpqTkdURDN6VFo0eGhtSUk1S3J4QmlxRW52VzBIdi9na3lSTnF5TWIrenY4VlNjZCt2MEtzeitPd0JqUjZwNVhkbTVNajQ5elhxdEVZdTlRUXYrem5DOWU2UU5JSWxwQVExL2dsMHZ6TjhUNTZURzVLc1hHa2JLYlluNEVXMmNHM2g2ZDVBemxHdnpaVHkxQjhCMFZ5ZjFNM3lFbmVSSXlNZG96MmVYMUZHdVdJZlp5RmtiS1AybENkbE5IMjBNUnBCR1djb2dGNmdFUSsvUEZyVTQ5N3lTSVozc3E5Y0oxVG1ESlY1RDJWZUllTzdsNm9BdUVhc1orN2crM3M0UHpNWkIxd2pRVzJ6Z3JKS0Y3OUJnMHVzdWJaczIxa1ZsZUpUaVFTeFJicE9GVHhCejhZVjJxRFlDMTlyd2o0S20vaWNBejlucGpSUWlpcTNyZGpnRjJXSEJwMkFxN2hUN24vV2pOQ0YxOVBvWDBYeDNFUnhmYW1oZmpxakdCbktmR1FhYlZMc2hBOXp4QSs2N3l2dHE5NXZ5Yzk5VlJLZkRQMWZ2aXpuUVpHM2N1QXZkQldFUUNBUUNBUUNnVUFnRUFnRUFvRkFJQkFJQkFLQlFDQVFDQVFDZ1VBZ0VBZ0VBb0Z3TGZpL0FBTUFUYWl0NjluVVVTRUFBQUFBU1VWT1JLNUNZSUk9IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiRklET18yXzAiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6IjVjYTFhYjFlMTMzN2ZhNTdmMWQwYTExN2U3MWNhNzAyIiwib3B0aW9ucyI6eyJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsInV2Ijp0cnVlfSwibWF4TXNnU2l6ZSI6MTIwMCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6MTYsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4LCJ0cmFuc3BvcnRzIjpbInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi0yNTd9XSwiZmlybXdhcmVWZXJzaW9uIjo1fX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMDktMTciLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6NSwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJBbGx0aGVudGljYXRvciBpT1MgQXBwOiByb2FtaW5nIEJMRSBGSURPMiBBbGx0aGVudGljYXRvciBmb3IgV2luZG93cywgTWFjLCBMaW51eCwgYW5kIEFsbHRoZW50aWNhdGUgZG9vciByZWFkZXJzIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNDA5MTcwMDMiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0wOS0xNyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjo1fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI0LTEwLTExIn0seyJhYWlkIjoiMDAyNCMxNTYzIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWlkIjoiMDAyNCMxNTYzIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkcrREJpb1Byb21wdEtleXN0b3JlQW5kcm9pZCJ9LCJkZXNjcmlwdGlvbiI6IkcrRCBCaW9Qcm9tcHRLZXlzdG9yZUFuZHJvaWQiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJ1YWYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfSx7Im1ham9yIjoxLCJtaW5vciI6Mn1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9kZXIiXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX2RlciJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsic29mdHdhcmUiXSwiYXR0YWNobWVudEhpbnQiOlsiaW50ZXJuYWwiXSwidGNEaXNwbGF5IjpbImFueSIsInByaXZpbGVnZWRfc29mdHdhcmUiXSwidGNEaXNwbGF5Q29udGVudFR5cGUiOiJpbWFnZS9wbmciLCJ0Y0Rpc3BsYXlQTkdDaGFyYWN0ZXJpc3RpY3MiOlt7IndpZHRoIjo1NDAsImhlaWdodCI6OTYwLCJiaXREZXB0aCI6MTYsImNvbG9yVHlwZSI6MiwiY29tcHJlc3Npb24iOjAsImZpbHRlciI6MCwiaW50ZXJsYWNlIjowfV0sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlCbURDQ0FUMENCR1FkUFIwd0NnWUlLb1pJemowRUF3SXdWakVMTUFrR0ExVUVCaE1DU1U0eEN6QUpCZ05WQkFnTUFrMUlNUTB3Q3dZRFZRUUhEQVJRVlU1Rk1Rc3dDUVlEVlFRS0RBSkhSREVMTUFrR0ExVUVDd3dDUkZNeEVUQVBCZ05WQkFNTUNFRlZWRWhTVDA5VU1CNFhEVEl6TURNeU5EQTJNRE13T1ZvWERUUXpNRE15TkRBMk1ETXdPVm93VmpFTE1Ba0dBMVVFQmhNQ1NVNHhDekFKQmdOVkJBZ01BazFJTVEwd0N3WURWUVFIREFSUVZVNUZNUXN3Q1FZRFZRUUtEQUpIUkRFTE1Ba0dBMVVFQ3d3Q1JGTXhFVEFQQmdOVkJBTU1DRUZWVkVoU1QwOVVNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVTSXBJL2RLWUNEWWh6d0Qyd1NmWUFPYi9uTmFpUGNXRjIxdnhaay9UZ0QwT0p0Y0QrT1BtNjRud1pkRldTRVlTVzdpT3FucG1KeWRlOG1nci90bkFpekFLQmdncWhrak9QUVFEQWdOSkFEQkdBaUVBM2J2aGF6UUZQd215WGx4Sy94Q1hmaDdnMVgxRW9iTEMzTCsyR09SeHA3Z0NJUUNmTkVUWC9tMkJlYlJMWEk0TE1QMUVRR1BYRkRmN09rNzRVN3hiaU00VmtBPT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCwvOWovNEFBUVNrWkpSZ0FCQVFBQUFRQUJBQUQvMndCREFBTUNBZ01DQWdNREF3TUVBd01FQlFnRkJRUUVCUW9IQndZSURBb01EQXNLQ3dzTkRoSVFEUTRSRGdzTEVCWVFFUk1VRlJVVkRBOFhHQllVR0JJVUZSVC8yd0JEQVFNRUJBVUVCUWtGQlFrVURRc05GQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJUL3dnQVJDQURJQU1nREFTSUFBaEVCQXhFQi84UUFIQUFCQUFNQUF3RUJBQUFBQUFBQUFBQUFBQWNJQ1FRRkJnSUQvOFFBR3dFQkFBSURBUUVBQUFBQUFBQUFBQUFBQUFFREFnVUdCQWYvMmdBTUF3RUFBaEFERUFBQUFheWo2RjV3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVnZDNlRFQ1eExKMzZ4Rm9jNWw4bEdQU1hLc3pORE0wOU5WZE4rOFA4WmRMS0JIcGllK3ZoVHVvZk5YTkF2bStNeVVtUm4xZFFaZ0FITTRjdzFMaWNQMVZMZVF1alR6SjJkSk0zMzVwaGFhVWplYWJLVVJ2ZFY3U1oxZFRTNlN1Rmt3US9iSHI3NjV0MkYxbWRrODdOUHFFK1NZeUhSMWdBTEIxOGx2eVRlalBYUXFtdWdzZ1lkVlZwMXlhSGZYTFczdlVRazJwYUlxZDVNcllxSVBmamRMTm1UWXkyK0NUb3hzYjZJdHRTdTZsQTlCWkhBNnFvQUJ5T09OSFAycFBlbmpycy84QXhtbmNZYkxDaWE2ejB4U21hWnQ5SFJNbFVSdmRGK3F6b1l1czNsZEtWMXU2aWFtM3Q3UHJ0Sm4wR2VudS9BOURXR3h4QUFBZXY4Z3hYS2svT1pxYzlKbWJLbHBNelpHa3pOa2FUTTJScE53TTZFcmgxajh3Mk9JZXlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQLzhRQUtCQUFBUU1EQXdRQkJRRUFBQUFBQUFBQUJRQUVCZ0lEQnhVWElBRVFFellSRWhZd05IQTEvOW9BQ0FFQkFBRUZBdjZiR0lTUmxOWWJGZ1VaUzNGTW1sUGd0S1cyYmZTTHJFMVBTdVcrQzB2QmFYZ3RMd1dsNExTY2lHTHlrMWlnT1Jwa3NRSXhlOStHQVFtcVVQRzdlMDBzUG43WWEzZTVkQnRxOTV4YU9aWUhGQXl4SjdjcEJreGhIaTI4NHRiemkxdk9MVEhMUUozVzFkMkgxaDZ5c0VXczVoMXlLRU9iUnJjZk9nWWl5QkZTV1F0NHlLUFNGN0kzdkRFbnR5eWY3dHdqY29mUmg0Q05ONUFNbEFLM0l3bHkzVlp1Y3NWTU9qMlhMTFJtcDlJKzFHSmoxZE8waDViU0hsQW9DVmpwOVRYSGhZOUpkcER5MmtQSnppdzQwYmRzT21hbTVkWkhZZEI4dzVZWStOZVU0K3JwTHV6YjlibWUvd0FQdGpYNnZ2VlpmK1B1dmxpNGgwWVM5WmRDVk16M2FuSnNqb3AzUGtpM1BraXg1TlRCNlJLZFRvMkZsRzU4a1c1OGtWL0pFaGRXTzJIQWxWNGdzaGtPaEtYOHJGK3RyZmpSeTFJd3g0RzJrUXlTUlIvRjNYREVudHl5Zjd0d2lzTmZTbHlJRk53ZytZU0dpTkE2cXV0ZFhPRVRHN0UzN0IrM0tOTDdlMDZ0UGNYeDk1WHRDQ1cwSUpiUWdrQmdBdU9QMGF4MEpQRXRvUVMyaEJMYUVFbU9NNCt4cnRXcUxGc29WYWhtVXhsbDZXRXZ3eDZVa0l6ZkM1ZUdQS1c4cURPcWRkR3JYUnExMGF0ZEdyWFJxMTBhdGRHclhScTEwYW5NdEN0S1RlWUI3V2s5Skg4a2MvMDMvOFFBSFJFQUFnSUNBd0VBQUFBQUFBQUFBQUFBQUFFUkVnSVFJQ0V4VVAvYUFBZ0JBd0VCUHdINnl4azZSS0Y3cVVTaDR6eWZTMURFbVpFUFdMTXVDOU10V1JZYmdzaHVSZW1YbkZPU3BWaXhZMUpWbFdKUU56eXNXTEZpeFlibjdILy94QUF1RVFBQkF3RUZCZ1VGQVFBQUFBQUFBQUFDQUFFREJBVVJGU0ZTRWhRZ01VRlJFeUl5WVlFUUpGQng4RFAvMmdBSUFRSUJBVDhCL0xWbGQ0UGtqNXI3aXB6emRSMGxReHM3aXFyL0FBUDlLT001WDJRelc1MU9sYnJVam5zdW9LK1dGN2p6WlJtTWdzWTh1Q1UvQ2pjK3lwWXQ2bXVMOXVoRmhhNFZ2VUd0bFUxTUpRa3pFck9rR09WM043c2x2Y0d0a0VvUytoNzFhRk14ZzhyYzJWbFN2ZThYendWWTdVQnN5c3MyR1oyZnI5TUxtN3QvZkNrczZXTVhOM2JKUVFGVUZzQXNMbTd0L2ZDb2FZNlpuWStxcXpZSUNkMVpZM3pYKzNEVlU1VXNtMFBMb29iVUc2NlZsaWNIdXA3UWhraUlHNnFobkNua2NqN0xFNFBkUGFrSFM5Vk5VZFdWM1RzcUttM2VQemMzNFNGamJaSkhaY1JaaTl5d2tkYXdrZGF3a2Rhd2tkYXdrTlNocElvUFMyZjVqLy9FQUVNUUFBRURBZ0FIQ3dvRUJRVUFBQUFBQUFFQ0F3UUFFUkFTRXlFeFFaTUZJQ0lqTXpWUllaR2gwUlF3TWpSU1luR0J3ZUZDYzdHeVUzQ1NzL0JVY25TQ3d2L2FBQWdCQVFBR1B3TCtadDJFWktNRHdwRG5vL0xwb0Y5czdvUGUwOTZQOU5XWWlNTWpvUTJCWEpwN0szV0lRa0h5VnpWN3VBQWdFWkJlbjVWeWFleXVUVDJWeWFleXVUVDJWeWFleXJQd283dzk5b0dsS2loVzU3M1MzblIvU2ZwVnBUZU15bzhCOXZPaFhtaTlJdW5jNWs4TWo4WjlrVWhsbHRMVFNCWktFaXdGRitVK2lPMFB4dUt0UlMwSkVyM20yN0R2SXIxS1oySjhhbXcyNGtwSzMyVk5ncXhiQzQrT0Fma0wrbUI2QTlGa09PTld1cEdMYk9MOVBYWHFVenNUNDE2bE03RStOZXBUT3hQalFTNFg0blc2M203cjBsNk84aDlwV2hiYXJpbkk4bHBMekxnc3BDcTRGM0lMMmRsdzZ2ZFBYNWhtT3lNWjExWVFrZFpxUEJZOUZwTmlmYU9zMDVNZjRYNFcyOWExZEZHUk1keHZaUVBSUU9nRGVqOGhmMHdUL2czL0FHMDcwUFJYT0xQS01xOUZZL3pYVE0yTWVBdlNrNlVuV0RVaUV1Mk1vWGJWN0s5UnBUYXhpclNiRUhVZCswdFF1STdhbmZwOWNIa1FQRXcwZ1c5NDV6OU1JVUJIc2MvSzFvamJXdEViYTBKY3NNNUhKcVR3RjNPQ1ZOaWhuSU9ZbUxqdVdPWklGYUkyMXJSRzJ0T3Z1Q1BpTnBLMVdjMURDL3VjbzhWSVJqcEh2ajdmcGduQklzbDBoNGZNWisrKy9tOVBrMy9vWU4xY2JUbHpoYS8yanpHNlAvSGMvYWNPNXVMMHIvWXJBbTMrbVJmdE8vanBVYkprSVV6OVIzZ1lFYm9KVHhNdE9jKytNMzZXd2hJbml3emNpMzRWemdOZzM0VnpnTmczNFVJczJYbG1Na3BXTGswcHovSVlKY1NITXlVZEdKaXB5U0RwUURyRmM0RFlOK0ZjNERZTitGT011VGdwdHhKU29aRkdnL0xESjNVV25pbVU1SkI2VkhUM2ZyZzNRV2szUTJySkQvcUxIdnZ2MjNtbFlqamFncEtocUlxUE5hdGRZc3RQc3IxaW5ZVWtjQmVoUTBvVnFJb3R5bTd0RThXK24wRi81MGIwZmtMK21DZjhHLzdhZDZBeWd0UlFlTWtxSEJIdzZUVE1PS25GWmFGdXM5WnArVVNNc1JpTXA2VjZ2R2lwUnVvNXlUNWc0MTNJTHZMTkQ5dzY2Ymt4WFV2TUxGMHFUU21ubTB1dHEwb1dMZzBWQ0txT1QvQmNJN3EweXRyOXEweXRyOXEweXRyOXE4c2lGL0s0cFR4aTdqOU1EczZTWDhzNWErSXV3ekMzUjFWcGxiWDdWcGxiWDdWcGxiWDdVRmVSbVFvZngxbFhkb3BLRzBKYlFuTUVwRmdLY2xUSFF5eWpXZGZVS3l5cnR4bTh6TFhzanArUG1zZUU5WkI5TmxlZEN2bFFUUGJYQWQxbTJPanV6MWR2ZFNJZW92QUd1Y0l1MlRYT0VYYkpybkNMdGsxemhGMnlhNXdpN1pOYzRSZHNtdWNJdTJUWE9FWGJKcm5DTHRrMWQzZFNJT29PaFI3QlJUdWN5dWE3cVd2Z0k4YXkwNTdIdDZMWXpJUjhCL003LzhRQUtCQUJBQUVCQlFnREFRRUFBQUFBQUFBQUFSRUFJVEZCVVdFUWNZR1JvY0h3OFNBdzBiRncvOW9BQ0FFQkFBRS9JZjhBVFlqbzRhRFRNME9NVVk2M3ZFdEJaRythQkZ1RCtoWHE5RzVFQ0hOc3U1YUJOUFY2OVhyMWV2VjY5WHBjNVlmMnltWk8wUloxVCtpZ1o0VGdoT0RvL1VUQnU2Ti9OL1hBMzBhNDBTT1FWZXFyQWQyL1NvTUhndXJPbXhHRWhucENBdVczNFVTTHFobGhNU1BnUm8wYnB0c3QzTzZYYWFvYmlWQ0VKTWllWTBERTAzaG0wSFU0eDg5ZHFYSkJSbUVTRGJpdXF5MWJwaXdNTHVIOVhBR2wzT1c3Y3N2NjQvWlJ3VnNvU3VPTStZcWZ1ZVFmTkZDcUp2d3ZVNkxUKzI3K0JoUG5aa0gzT3c5WjhOaFplaGFZbkpIRGJBNW9QQlhuUHl2T2ZsRTJERzh4RmthYkhtUkdJR3NqTWE4NStWNXo4cS9VUEZnbHcwMnBOa1pmSjN6NU5uSHZJQ2ZtRkIzVzYzN2JEYVBNNVlkSTIrV3krdFFGYkp0TjF0c1diY3g2Zm5QQXBYTk9vTGpzVEJEQnVCRWNRdWUwb1lJR0Z0b1VKMnJCTE1pTFFkaG5BcFlNbGFqZXUxQ2hpRmdYa0lTekx0U2dKZGtyRzdZd3dnNFowSHpOQXZSaUpIblNoQ0MyNjcvUkdzY3VYWWMwZnBqVGxMTWRodndkVnYyVWNJTkJyQ2NUK0E0eFZqMWxONWptSzIxYXRFV01kQmUwS2Z3MlFsWDZISU9oZURMUmRic2tuRHFLeC9IU2lKOUJadFJxMHk4eFBOSWNDdlNxZWxVOUtvYlFOaElHK3lHekRkZjdBRUdnVjZWVDBxbnBWTU5JRWp1Y1NnREZEZ1pBVVNXcmJ4WUJpdVZMUWxudkVhc2VCaDlTK1laNWg1dFNHc0RkRkx4c09YR2pVNS9CRm12UHU5ZWZkNjgrNzE1OTNyejd2WG4zZXZQdTllZmQ2OCs3MHlpbjY0TFdCdVFSMXR0Ym9OOVNVNlZHV0J2di93Qk8vOW9BREFNQkFBSUFBd0FBQUJENzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc2b01qZzR4dlAzNzc2bXB6eXl2emVwcjc3NzNqNVQvejVlL3o3NzY0cHY4QXZxLzZJRysrKyt2Yy93RC9BUDhBdGY4QXZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnYveEFBZUVRRUFBZ0VGQVFFQUFBQUFBQUFBQUFBQkFCRXhFQ0FoVVdGQlVQL2FBQWdCQXdFQlB4RDliTWRCcXpNRVVNejJsbjJCaEVScDJCYlVXQ1puaExCeEFweFBLSW1aUTFEOTJjUkR4ckFXb0F0MGl3aHNib0RUSHJwQVJqQ2pXaG01dEdvTXpMOVMvVXYxTDlTL1VYTDlqLy9FQUNnUkFRQUJBUVVJQXdFQkFBQUFBQUFBQUFFQUVTRkJZWEhoSURGUmdaR2hzZEhCOFBGUUVQL2FBQWdCQWdFQlB4RCtzYjMxOXVOWURvN3RQUkZVMEU4NXp2a29kVnZtTjdlNCtLdEpVKzN3N3pKK0dLelZiR0dSWXRWcVcvVEZnWXFCZFAzSUM5VWFGWVhRVkZ1WlAxSVVvMGNJWE5OOWlZNVFEbXlsSGgrT213M0JIaTJYQVN6T3g4ZjR1MTdqRkhrRmJGOVIrZ0lWdDVGdzhaKzR3cGcxRzZ2eUV2QkJPYlpFVWJoZVRZUVNqTngycXE0WVpuZVVWZGVKZnl1bjFHc3JRMUNGbXNxRlVVV1pucWZVYXdCVUxrZTRNSlM0TGJmbGpaeWNPQnk4N0wwS2pjeHFxd2J6dmIzbUs2YXpGZE5aaXVtc3hYVFdGUzE5Q1czbkcxMDVmMlAveEFBbUVBRUFBUU1EQkFNQUF3RUFBQUFBQUFBQkVRQWhNUkJCWVNCUmNZRXd3ZkJ3a2FIUi85b0FDQUVCQUFFL0VQNU52Y1U0WmtpNStBdEtRMEhyQlo3cWVlSnZtaml0QU5lZ3I5TjlVekdNQWpzc2FTR2t4QjZOZnB2cXYwMzFYNmI2cjlOOVYrbStxUE1VSnIvU2l4OCtub2c0b3FtQlBia3NER05zYktTRS9FUzB4VEhBMkZrU3VnRUlRU1dYaGNBc0ZXVmZUUjJDdDFGaEs3RlRKdEFwZUhTREN6SjNmdWhNRVRBdkhRME9MbTlsbzFnREprZWhnd1lORCt4RStXRGxBNzBicDU3b2NJa201a3B0M2Z0ckNNSUlSQkVRYVAwS1V3WFdXdWtPSWt2RDRIRmR3ZFBnbEwxakF1SlYrWStDWUxCVS9pd09BVjJ4WmdNaERBTVlQajFCdElnWWx2QktXL3lORkpCRzJwc20xREE5Z29xd2gyR09BWVQwa0paR25pa0p3MUIySndaQnZSaWJlaEFnN2lKMWx0aWtraUw4Z2prYU1CRlEvd0JuZndjKzdyZFBhWXNKSi92WFBObGdkOEJoYTdSOXNSSjNWSkhLeEd1ZVpGYjFkREVac0syckx6MFpDaW8ya203OGVoQ1Q0RVN0Kyt2S3FKTjd2K2s2QkxKVGRPSFdmaDl2eDNzYlJXZTQ5YU5PRVFoK2R1c2FOUzBFSS9RT1JveUlTbDNuMmhYZDR1b0dIeXFBUUd1VEphRkd6YTdZWkxhWTBtV2Z0ZHcwbDExekJiV1RKdjFEc3NuQ2twSkVkU0lDSmFXUzQ0ZkhReXIrR1RFbnRNOTllTTVkRERjZ0gxUXhFUzVLQ2IydUp6dUZNcVNEUzhTbkNMd2lsbFRBYkNyc283UE5oeVF2eHRGQktCUWhuc0xlRzNKQzlaejhJVjNkQkxLZTdZQ0NwckxSYXZGbTkza1RLVWdYTWtKbFYzVlorQis2c1RGWURZRmJXRGRGQWJBcE1HNG1RYktCRVJCSzRGbnVpRWllU21BRmRLOEo0UUhRelpzek5WeXkvQmNzYjZFbW1DUEo4Sk1pK1o2R2JOblBNMCt4Y3oyRkRVS0JkZ0FBNEtrYUNmT3dDOGFBU3RYcVk2U3Q0Yk1Zb3hBU0IrSjlnd1RGNWlJV21BdE1TVkRZb0tKM0N1ZG1KM1pvRWVKZ2J5WWV6NHYvQVA4QS93RC9BUDhBL3dEL0FQZ2dSTDZ4UWVpb2IwUlYvQmI4anNvQTNiRW1Nall3SlVxQ1ZqK1R2Ly9aIn0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTA0LTE2In1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wNC0xNiJ9LHsiYWFndWlkIjoiYjkyYzNmOWEtYzAxNC00MDU2LTg4N2YtMTQwYTI1MDExNjNiIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiJiOTJjM2Y5YS1jMDE0LTQwNTYtODg3Zi0xNDBhMjUwMTE2M2IiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiU2VjdXJpdHkgS2V5IGJ5IFl1YmljbyJ9LCJkZXNjcmlwdGlvbiI6IlNlY3VyaXR5IEtleSBieSBZdWJpY28iLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6NTAyMDAsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJlZDI1NTE5X2VkZHNhX3NoYTUxMl9yYXciLCJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURIakNDQWdhZ0F3SUJBZ0lFRzBCVDl6QU5CZ2txaGtpRzl3MEJBUXNGQURBdU1Td3dLZ1lEVlFRREV5TlpkV0pwWTI4Z1ZUSkdJRkp2YjNRZ1EwRWdVMlZ5YVdGc0lEUTFOekl3TURZek1UQWdGdzB4TkRBNE1ERXdNREF3TURCYUdBOHlNRFV3TURrd05EQXdNREF3TUZvd0xqRXNNQ29HQTFVRUF4TWpXWFZpYVdOdklGVXlSaUJTYjI5MElFTkJJRk5sY21saGJDQTBOVGN5TURBMk16RXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFDL2p3WXVoQlZscWFpWVdFTXNyV0Zpc2dKK1B0TTkxZVNycEk0VEs3VTUzbXdDSWF3U0RIeTh2VW1rNU4yS0FqOWFidlQ5TlA1U01TMWhRaTN1c3hvWUdvblhRZ2ZPNlpYeVVBOWErS0FrcWRGbkJubHl1Z1NlQ09lcDhFZFpGZnNhUkZ0TWprd3o1R2N6MlB5NHZJWXZDZE1IUHR3YXowYlZ1em5ldWVJRXo2VG5RakU2M1JkdDJ6YnduZWJ3VEc1WnliZVdTd2J6eStCSjM0WkhjVWhQQVk4OXlKUVh1RTBJek1aRmNFQmJQTlJiV0VDUktnanEvL3FUOW5tRE9GVmxTUkN0MndpcVBTemx1d24rditzdVFFQnNValRHTUVkMjV0S1hYVGtOVzIxd0lXYnhlU3lVb1RYd0x2R1M2eGx3UVNnTnBrMnFYWXdmOGlYZzdWV1pBZ01CQUFHalFqQkFNQjBHQTFVZERnUVdCQlFnSXZ6MGJOR0poamdwVG9rc3lLcFA5eHY5b0RBUEJnTlZIUk1FQ0RBR0FRSC9BZ0VBTUE0R0ExVWREd0VCL3dRRUF3SUJCakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBanZqdU9NRFNhK0pYRkNMeUJLc3ljWHRCVlpzSjRVZTNMYmFFc1BZNE1ZTi9oSVE1Wk01cDdFamZjbk1HNEN0WWtOc2ZOSGMwQWhCTGRxNDVyblQ4N3EvNk8zdlVFdE5NYWZiaFU2a3RoWDdZKzlYRk45TnBtWXhyK2VrVlk1eE94aThoOUpESWdvTVA0VkIxdVMwYXVuTDFJR3FyTm9vTDltbUZuTDJrTFZWZWU2L1ZSNkM1K0tTVENNQ1dwcE11SklaSUkydjlvNGRrb1o4WTdRUmpRbExmWXpkM3FHdEtidzd4YUYxVXNHLzV4VWIvQnR3YjJYMmc0SW5waUIveXQvM0NwUVhwaVdYL0s0bUJ2VUtpR24wNVpzcWVZMWd4NGcweExCcWNVOXBzbXlQeksrVnNndzJqZVJRNUpsS0R5cUUwaGViZkMxdHZGdTBDQ3JKRmN3PT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZkNBWUFBQUNHVnMrTUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFIWVlBQUIyR0FWMmlFNEVBQUFiTlNVUkJWRmhIcFZkN1ROVjFGRC8zZDU5d2VRU0lnUzlBUUFYY0ZMQVFaaTlmcGVWejF0WS9XVFpyNVd4cGM3VzVrbkxhNWpJM1o4NXNyUzJuTTJzanRXd1pTN0lVSDRINHhDbkVReDREQVpGNzRWN3VzODg1djkvbEluQnZWSi9CNFB2OW51LzVudS81bnZNNTU2ZnpBL1F2MEhiL0lyWDNWRktQbzQ1Y25tNGluVUlXWXdMRlJtWlFVdXdqRkcvTjFpUkhoMUVaME5SVlJ1ZHF0MUJkKzJuU0t5Uy9PaHlzMCtsazNlLzNrUTlxdkQ0WlV0YTRWVlNVdVkwZWlweWlUaEFmb2NvT1JWZ0R1dXczcUtSaUFkM3JiY0V0alRqWUlvZjZXYUhzQ216VlBXQ014K2NnaDh0THFXTUthTVdzVWpMcW8yUnRKSVEwb096bWVycFF1NGVzWmdzT05rR3hIN2Qwa2R2VFQxN3M0T01VN1ZJOFpoamdHYU0rQXE5aUVOdThQaWYxdWR6MDdNd3ZLV2Y4R2xWb0NFWTA0UEM1V2RUYVhZRmJSOHZOdkw1KzNLZ2ZiNXhOTXlhOVJhbUppeW5hTWxHVFZ0RmxyNmJhOXUrcHFuRVg0dU11UlJnalNZRWhyTjd1dEZGZTZscWFsN05ma3c1aW1BR0h5blBwYms4Vm1ZMHhzdG5wdGxGQ1ZDWXR6VHVCTjgzUXBNTGpUdGV2ZFB6U1VuSjdlOG1ranhaMzlmWGJLRGZsZFpxYnZVK1RVZ0duQlZGNmZRMmlQSGc0VzE2VVdVd3Z6YmsxNnNNWkUrUG4wcHZ6N0pTZXVBeWVzOGxjcENtYUt1by9wK3FXcjJVY3dJQUhXcnZQMFlFemhYQXRMQWJzc0hocDdpR2FtdnlpalA4cnlxclhVV1g5WG9vd3h5QXVmTkJycDQzUE9CRlhabGtmOE1EUmlxY3B5b3dBd3B1ejJ4K2ZXdnovRHRkZTlzbXN6eWd0Y1I2QzF3YmR6Qmw2T2xxNVdOWVk0b0dhdGhKTXJrVEV4MGpBUlNIQVZzKzVyWWtRTlhiK1FnZlBMc1E2Z1h5SW5zcmVRZm1wbTdSVkZZZkw4Nm4xZmlVT2tZdlNoa1VQeHZidWt6b3k2SzFpaE0xaG8zWHpXNkV2U2ZYQStkcGlXR2FXZCtkb1h6THptR3dLWUZMQ0FzUkFsUEJBaE1sQ0ZYVTd0QlVWUHI4SGdWY0pIV3ErRjAwcGxyK0RNVGRyUDR6dnhZMTFrTk1oeFQrU2VUR2crZDRWNUxRSml0eVVHSk5COFZGWnNqZ1lCWk0vSUkvWENUa2owcXlET3BGMkFWUTE3Q0lqVXAvRG5UMVVrTDVGNWdkaitzUzF3ZzFnRTNnaWdtNjBmQ1h6U25QWGJ5QVBiSVh2K0lEcEUxNlRoYUhJUzlza3lobG1NRTVGM2NmcUFLaHEyQzBFNVBIMWdZYVhhTFBEa1pHMEhESk9uS1dIcDUxSTB6NVNPdXg4ZTFXQXVaemRIUXJUa3A4VG1qWG9JK2xhMHdHWnN6dWJxYk8zaWZRNkEvVzd2VlNZc1YzbVIwSkt3a0tjNFdIaUJrbVI4STNDQ2dJODdvT0w0cXpUNVArUlVKQmVqRU9nQVBLOGhZUHphdE0rZUlUcDJJTzl5VFFtZXJvbVBSeHgxcXhBY3NpbGUvdWJTZUViY1dRR1lFQ2doY0xZMkh5S2pvZ2pIMjVoTXBqcFV2MU91Z2xpNGVoMmVSdzBPMzJiSmpreXVDZ056ZzB2emxZTVNpU3MwdW9vNE1HN2hNT2pDRWFYMXlGRTBuU3ZqQnp1VG5FcEs4Nlo4SW9xRkFJdWJ3OGtnOUFyRWFSRVdTWkkrakg0WGJwNmc5RTlFbkpUM29hUnpETitNVUpCUURIbjU2YThvVW1FQnVzT3hCcy9ONSt0SkViUGtBRkRqOFVHdk9zL0lXdmNTZ2xHQmh2UzcvRlRZZnBXR1lkRFk4ZlBBeFdTQTM1c1RDNHA0K0xtNEFhcUlvUGVRdGZ1Zks2SmgwWmh4bGJzVVhPU21YTmlmRDVaVEFreURvZmJiY2NseG5BOFdOQXF4Q2JSTnlraFh4UXBhRHc2N2ZYVVlic2lHMEtodHYyb2VJdmg4cmhRTVlPY0VBcVhHL2VJK3puZ09jNXl4cjhxODJJQU0xYy9GTEZPcGxxdTVlRlFYck1aekdjVkNqWWJMV0c1STRCVDFldVJybGJ4dE5PdE1pdERERWhMWElJeW5BQXZ1T0VXRTNYM05kQWZ0OTRWZ2FHNDJYSVF0MFpYNlBlQ0UvcVFGZTlySzZIeDdZVTUwS3ZIN2ZXNGZTK3E3S0tCSnhzZ2dCWDVwU0FHaDFqSXJWaDV6UTZ3M1JmYWFoQlhtL2FDYkNaVGpDVUZVVHlXWnFXOXA2Mk1qSlBYVnFPclBnTU80TnY3NEdrZitvd2Z0TlZCRFFuakZKcUhTdzE3cFh2aFdXNUtacWUvUTQ5Ti9VU1RDQVZXb1FYRklIQkhYWGUzRlByVURzdUdEbXRGL2hIS1RIcGVreGhpQU9QSStTSnE2UzZIRjRJOVlXemtCSlRvNDZpVU16V3A4UGlyL1JpZHVMeEtZc1Nrc1Y4dkxsT1F2aEdYMllsUjBPQmhCakMrdS9nRWN2WTBBcEs3WWs0MU54alBTUW5XRkhURjY2VXJqZ2V2QjhDdTVhK2wydllTUlB0dVZEbzczaGhkTVNIblVYN3RUanNWWkd4QWwvV3B0aU9JRVExZ25MMjltWDYvdFIxdG1sa1lqOFc0WCtDU2pXY1VER1kxTnBTL0M3aFNLcWlNTE0vbDJRbVNXWjczRGR6K2dpbzhCQ0VOWVBRNDZxbmt6d1hVYnF2Qmt4alVRc1dmWkZnYnVvM3JBZit3TjdqT085MCt5bng0UGkzTCswbllMMVNjaERVZ0FQNGdQVi83SWQxcSsxSFNobXVHa0lxV1JQZ3l4TUZxUDhIZmpUbmpYd1k1YlFmYkpjdDZPSXpLZ01Ib3RGL0hlMWVnc2F4SFNxRzZ3ZmRtUTV4OE55VEZGcUJjcDJpU293SFIzeWs1KzM2aEY3dlhBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMV9QUkUiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6ImI5MmMzZjlhYzAxNDQwNTY4ODdmMTQwYTI1MDExNjNiIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWV9LCJtYXhNc2dTaXplIjoxMjAwLCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0Ijo4LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjEyOCwidHJhbnNwb3J0cyI6WyJ1c2IiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotOH1dfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjAtMDUtMTIiLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IlNlY3VyaXR5IEtleSBieSBZdWJpY28iLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDE5MTAxNzAwNSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4xLjEiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMyJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMC0wNS0xMiJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjAtMDUtMTIifSx7ImFhZ3VpZCI6IjU0ZDlmZWU4LWU2MjEtNDI5MS04YjE4LTcxNTdiOTljNWJlYyIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiNTRkOWZlZTgtZTYyMS00MjkxLThiMTgtNzE1N2I5OWM1YmVjIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkhJRCBDcmVzY2VuZG8gRW5hYmxlZCJ9LCJkZXNjcmlwdGlvbiI6IkhJRCBDcmVzY2VuZG8gRW5hYmxlZCIsImFsdGVybmF0aXZlRGVzY3JpcHRpb25zIjp7ImVuLVVTIjoiSElEIENyZXNjZW5kbyBFbmFibGVkIn0sImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMCwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDK2pDQ0FxR2dBd0lCQWdJVUI5ZjZ3ZVY0TFpqbk01UEJBV0V2alF3cXErMHdDZ1lJS29aSXpqMEVBd0l3YXpFTE1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBb01Da2hKUkNCSGJHOWlZV3d4SWpBZ0JnTlZCQXNNR1VGMWRHaGxiblJwWTJGMGIzSWdRWFIwWlhOMFlYUnBiMjR4SXpBaEJnTlZCQU1NR2taSlJFOGdRWFIwWlhOMFlYUnBiMjRnVW05dmRDQkRRU0F5TUI0WERUSXlNREl4TlRJeE16TXdOMW9YRFRRM01ESXhOVEl4TXpNd04xb3daakVMTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFvTUNraEpSQ0JIYkc5aVlXd3hJakFnQmdOVkJBc01HVUYxZEdobGJuUnBZMkYwYjNJZ1FYUjBaWE4wWVhScGIyNHhIakFjQmdOVkJBTU1GVVpKUkU4Z1FYUjBaWE4wWVhScGIyNGdRMEVnTXpCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQkdLdDVrdkpNSm9BTWdiY3laMW1NZ1B3Vi9xNVZaWFYwYlgzV0RlQlljdDUvZFJUeFdoZzNiUTJ6Sm1UbWIyL1JXdE4vY29WYTNJVmpOSElZbW5XcmpPamdnRW1NSUlCSWpBT0JnTlZIUThCQWY4RUJBTUNBWVl3RWdZRFZSMFRBUUgvQkFnd0JnRUIvd0lCQURBZkJnTlZIU01FR0RBV2dCUzc2RHBsOTN2QjJoNUZETHZ5TU12VUJ5ajNpekFkQmdOVkhRNEVGZ1FVMThkdFN3YVllYThRb0xzS3g4aFBpU05aVi93d1JBWURWUjBmQkQwd096QTVvRGVnTllZemFIUjBjRG92TDJOeWJDNW9lV1J5WVc1MGFXUXVZMjl0TDBaSlJFOUJkSFJsYzNSaGRHbHZibEp2YjNSRFFUSXVZM0pzTUhZR0NDc0dBUVVGQndFQkJHb3dhREEvQmdnckJnRUZCUWN3QW9ZemFIUjBjRG92TDJOeWJDNW9lV1J5WVc1MGFXUXVZMjl0TDBaSlJFOUJkSFJsYzNSaGRHbHZibEp2YjNSRFFUSXVjRGRqTUNVR0NDc0dBUVVGQnpBQmhobG9kSFJ3T2k4dmIyTnpjQzVvZVdSeVlXNTBhV1F1WTI5dE1Bb0dDQ3FHU000OUJBTUNBMGNBTUVRQ0lGcUNRVWdPWUdRMVNPRXgwSVdmaUFsc09LTS9KUTJYUStDaTV0aWpuUVJUQWlCaE5hMEU4aldzc2JBZitsR25BUU5BZTNuZTZYczNFeFpzaURHWXdoRVVwQT09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQVZNQUFBQ3NDQVlBQUFERytFOE1BQUFBSUdOSVVrMEFBSG9sQUFDQWd3QUErZjhBQUlEcEFBQjFNQUFBNm1BQUFEcVlBQUFYYjVKZnhVWUFBQUFKY0VoWmN3QUFEMkFBQUE5Z0FYcDRSWTBBQUF5Z1NVUkJWSGhlN1oxL2JKVGxIY0J2amhqTmNDNE8rZFhlWFZ0VVRNemlQN29ZWFpZNTFJa0tkMWZObkZIajVvaEJtQTdqMk1Sc1pvbG14aGhOSm9ydDI0S2dzaUZzaW03VEFkTVlSRlFFRlRjVnh3L3J3QUVGUkNoUSt1dWVQYy8xcVFQM1ROcyszM3ZldSt2bmszelM0MmdmbnZlOXQ1OCs3NzNYSXdFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBVUVwa0c2L1hQcG5JUlI4Z0loNXQ0MXI5Y1lhdEJmd1A5UTNuNngyMFRadFAxRGNwUk1UUE5kZVUxNHV1VnQyTXEyMUZCa3h0TWptckxwVnEwUjgzMTFaWDMycnZMbU1LUDIzMGpxbVAzRHNORWZIenpFVzdFeGZPR1dtTDhvV2trOGtmMXFYU1BYWFZxYVhKVWFQT3FLbXFPck11bWZwcmJUTFZuVXFsTHJlZlZrWk1tUDExL1pPbHc3bHpFQkVIb2ptcnpVWlRiVjMrTDNWangwNHdJUjA5ZXZUSjQxS3BLZG9iakNOSGpodzFkdXpZNUxoMGpkS3IxTFB0cDVjQkpxU3NSaEZSMHQ2Z3pyU1ZjWEdNRHFtcVNTWXordll3RTg2YXF0UzF0ZFhwNjgzdHVqRmpValZqazVQMUtyVzk5OVBMZ1Z6VTVkd1ppSWcrbXFCZU9xZk9sdVlvMHVuMGNUcW1YZmFQdzh3SzFkNU82RlA4dDJyVDZWdjB6Uytic1BiZVcrcmtvbytjT3dFUlVjSmNkTURXNWlpcXE2dVBINWVxNlZ0MUZsYW1PcUk3NjFJMTIwOUoxL1JGOWt2bEVkUDZobTg3Tng0UlVkSnN3ejIyT3A5aVlxcFhvNTMyajJabG1qL3BwSk8rcWo5MnA4ZU1PZDNlZjB4NXhEVFh0TSs1NFlpSWt1YWlEbHVkSStrOWhVOG5qdE8zQ3pFMWQ0NFlNV0tNdm4zUTNCNCtldmpKK25iZktyV0U0WFdraUJqS3k1dlBzdVg1bExwVWFtWnRNcjNmM0s2dFRyNVR1Rk5UbDB3K1dwTkszYXovcnFPMk9qM04zbDJpVEk2bU9qY1lFYkVZNXBxZXRmVTVpcnJxMURPMXlkU0JjVldwRyt4ZGlicXE1QXl6T3RYM0w3UjNsVEQxMFhMbkJpTWlGc05jVStIVTNVVnlWUElNSGRXVnA5WFdxVk5yYXZQNjl2S3FFVlduMnI4dWNlcWovYzROUmtRc2hybW9qRjR2T2hDSUtTS0cxSDBScWdJZ3BvZ1lVbUtLaUNnZ01VVkVGSkNZSWlJS1NFd1JFUVVrcG9pSUFoSlRSRVFCaVNraW9vREVGQkZSUUdLS2lDZ2dNVVZFRkpDWUlpSUtTRXdSRVFVa3BvaUlBaEpUUVM5N1dDVXVlRUFsTHB3ZFZ2TnY1aUwzbkFicjl4NTAvMXZGOWlLdGF6NERNYTdId0R6K3J2bjB4NngrL09LWWR6RTAyM0dSUG43TU1YU3AzaWVURzkzYlhHa1NVemx2bnZ1eWlvdmpycHpubk5PZzFBZi91czI3N01oaDJmbkpvZDV2UU5lOCtxUCtKbzZMYWRFcTk1ejY0ZGV1WFdCSHFRdzZ1M3RVVzN1bjJyeGpuMXE5WWFkYXNucXp1cW41WlhYeU5RdFU0dUtIVkNKVGdZRWxwbkthYjZhNHFKU1lmclRuUU5uRzlJYUhYM0xQcVIrZXFDTXpWTml6LzdCYThkWldkZVY5ejZ2RUJMMktyWlN3RWxNNWlhay94SFJvMGRuVm81NWQ5NkVhZitNaXY2ZEpTa0ZpS2ljeDlZZVlEbDNlYnRtanpwdTExTy94ajFOaUtpY3g5WWVZd2h0YmRxbFRwdXFWcXJrbzU5aFhKU3N4bFpPWStrTk13elByc1RYcXpzVnZxTHVXdktFeWR5OVR1WHVXcTE4dWZMMXczNzFMMTZzVjY3Y1ZMaWFGcENlZlY0KysrRStWdUdDMmMzK1ZwTVJVVG1McUR6RU5UMkxDYi9VcXNGRWxNZzMvblpPNUtGUzRUenRKUHg2WHpsRlZVeGFxS1hOV3FvL2JEdHV2TEQ2NzI5clZOMzY2eElUcXFQMVZraEpUT1ltcFA4UTBQSVhYaGpybTVGUkg3WmpKRGVxTzM2KzFYMTE4dW50NjFDMlByTmJINVJHeEwwV0pxWnpFMUI5aUdwNEJ4YlJQSGJaSmR5K3pJNFJoL2d2dkYxYkl6dm1VZ3NSVVRtTHFEekVOejZCaWFzdzBxaC9yMC82UVBQbnFCMzdIUnpFbHBuSVNVMytJYVhnR0hWTmpObEovLzNDUEhTa01UNy9XVXBwQkphWnlFbE4vaUdsNHZHS3FIZitUeFhha2NQenhGYjFDTGJYblVJbXBuTVRVSDJJYUh0K1ltcWk5dDIydkhTMGNQMXZ3cW5zK2NVbE01U1NtL2hEVDhIakhOQmVwODI1LzJvNFdqbncrcjhaUFgreWVVeHdTVXptSnFUL0VORHplTWRWKzVhcEg3R2hoMlhld1EyVCtJaEpUT1ltcFA4UTBQQ0l4bW1STzlUK3hJNGJsbVRVdGhkV3hjMTRoSmFaeUVsTi9pR2w0UkdLYWpkUXQ4MTZ4STRabitGV0N4LzlnSmFaeUVsTi9pR2w0cEU2VHo1eXh4STRZbnZjLzJ0djc2NitPZVFXVG1NcEpUUDBocHVHUml1bm82eCszSThiRGlPc2VkYzRybU1SVVRtTHFEekVOajFSTWgxM1JiRWVNQjNQTXh2cmNLVEdWazVqNlEwekRJeFZUY3hHcXE3dmJqaHFlcnU0ZXVXMFpqTVJVVG1McUR6RU5qMWlBOUhHemRsT3JIVFVlYnAwZjR3djVpYW1jeE5RZllob2VzWmhtR3RYQ2xSdnRxUEd3YmJjK2Z1SjZoMzVpS2ljeDlZZVloa2NzcGpwaXR6MjJ4bzRhRCswZFhTb3hNYWEzNlNPbWNoSlRmNGhwZUNSakd1ZHJUZnVJN2FvK01aVXp6cGgrNTFkL1V1Zk9lbHJFYi83OEtiVWhoamV1TUJEVDhJakZOS2JmMGY4c3R6Mit4ajIvWWt0TTVZd3pwcFVDTVEyUFdFeTE1OXkyMUk0YUg2dmUzZTZjVzlFbHBuSVNVMytJYVhncUxhWmI0N29JUlV6bEpLYitFTlB3VkZwTXQrODkyUHUvcWpybVYxU0pxWnpFMUI5aUdwNUtpK211ZmUwcWxuZmhKNlp5RWxOL2lHbDRLaTJtaGZjNHZjempHQnFzeEZST1l1b1BNUTFQeFozbWY4eHB2aXpFdEN3aHB1R3B0Smp1Mkh1SW1JcENUTXNTWWhxZVNvdnBCenYzbTdBNTUxZFVpYW1jY2NiVXZNSEU2MEt1MmJoVEhXanZzaU9IaFppR3A5Sml1bVQxWnVmY2lpNHhsVFBPbUI1cmZoS2JKOTBsdlBnaDlmckdlTjc5aDVpR1J5eW1KZkliVVBYM0xIZlByOWdTVXpuampDbS9tMjhscGdOR0xLWWw4cnY1c1p6aUc0bXBuTVRVSDJJYUhzbVlUby81dXNIK1E1MjlaMWV1K1JWYllpb25NZldIbUlaSExLYVpSclhvcFUxMjFIaFkzN0tibGFrNHhIVHdFdE5CUVV3YjFZcjEyK3lvOFhEMnpLWHV1WVdRbU1wSlRQMGhwdUVSaStua0J0WDZ5U0U3YW5qYTJ2VXAvaVV4dlRHMGtaaktTVXo5SWFiaGtYek9ORTZlV0xYSlBhOVFFbE01aWFrL3hEUThVakU5OFpyNWRzVHc5UFRrNDNuYnZTTWxwbklTVTMrSWFYaWtZbnJxOUNmc2lPSDV5N3AvbVpnNTV4Vk1ZaW9uTWZXSG1JWkhKS1k2WkpmYytad2RNU3lITzd2MU1SUGpjNlY5RWxNNWlhay94RFE4SWpITk5Lb2xxN2ZZRWNNeXJYR1ZlMDZoSmFaeUVsTi9pR2w0UkdJYTA4V25UZHYzeGZjaS9jOUtUT1VrcHY0UTAvQkl4SFQ4dEVWMnRIQzBkK2pUZTMyc3V1WVRpOFJVVG1McUR6RU5qM2RNOVNuKzNPYzMyTkhDWUs3ZW56WHpTZmQ4NHBLWXlrbE0vU0dtNGZHTjZmQWZ6TE1qaFdQR3ZKZWRjNGxWWWlvbk1mV0htSWJISzZhVEc5VGN2NFZkbGQ2K2NJMEpsM3MrY1VwTTVTU20vaERUOEF3NnB0bEluWC9Ibiswb1liaXBlVlU4L3lWSmZ5U21jaEpUZjRocGVBWVYwMHlET3ZmMlord0l4YWU3SjY5K05QdkYwbHlSOWtsTTVTU20vaERUOFBRN3BpWmsrclRlSEd2M1ByWGVmblh4T2RqZXFjWk5YZVNlVXlsSlRPVWtwdjRRMC9Ba3ZuVi83N3N0ZmRhSkQ2bGhWelNyRTYrZXIwNi9hYkhLM0wxYy9TSHdDL09YdmJtMU1BL1hQaXM1aWFtY3hOUWZZZ3FHZzRjNzFWWDNQMTlZQ2J2MlYwbEtUT1VrcHY0UTA2Rk5SMWUzZW5qWnV5cngzUWVjKzZta0phWnlFbE4vaU9uUXBMMnpTeld0Mk5CN1NsL0tGNWsrVDJJcUp6SDFoNWdPSGZMNXZIcTdaWSthTW1lbFNseWdWNkxsR3RFK2lhbWN4TlFmWWxyWmZOeDJXSzE2YjRlNjBielRVN1pSSlNaNVBOYWxKakdWYzlKdmxxbmxiMjR0WElFTTZjcDMvcTJPL2Y1YzU1d0daYVpSUGZqc1A1ei9Wckg5M2NxTitodk00NkxEeERucXBYZTNPOGN1cGl2ZTJxWXV1ZXM1OTV6NjRRbFh6MWU3OTdlcmx0YTJpdkROTGJ2VjJrMnRoWDN6NnlmV3FvbDNQcWRPTUQvd0w5YW44ZnFIdFdzZmxMM0VGTEVFTktlNDV1VklabFZlN3BydE1GZmh5K2xLdklURUZCRlJRR0tLaUNnZ01VVkVGSkNZSWlJS1NFd1JFUVVrcG9pSUFoSlRSRVFCaVNraW9vREVGQkZSUUdLS2lDZ2dNVVZFRkpDWUlpSUtTRXdSRVFVa3BvaUlBaEpUUkVRQkt6YW11YWpWdWNHSWlNWHhvSzFQaFpGdGFISnNMQ0ppY2N4RnUyeDlLb3dybXNjN054Z1JzUmhtb2wvWStsUWc1amtNMTBZaklrcWFpL0syT2hWS3J1a0Y1NFlqSWtxYWkzYlk2bFF3dWFqYnVmR0lpQkxtdE9mY2Q3d3RUZ1dUaTZZN2R3QWlvb1M1YUptdHpSQ2dQbnJOdVJNUUVYM01ScTIyTWtPSWJPTkc1ODVBUkJ5TXVhWUtmU2xVZjhoRmkvUU95T3VWcW52bklDSitrZWJLZlgzVFdsdVZJVXcyT2sydlVsdUpLaUlPMkZ5ME41RnR1czdXQkFxWXFOWkg2L1RIZlRxc25ZbjZacjJ6RUJHUDBLeENzMUdiYnNTV1JLWmhncTBIQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUJwa1VqOEI0QW9tK01iVCszSkFBQUFBRWxGVGtTdVFtQ0MiLCJzdXBwb3J0ZWRFeHRlbnNpb25zIjpbeyJpZCI6ImhtYWMtc2VjcmV0IiwiZmFpbF9pZl91bmtub3duIjpmYWxzZX1dLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCJdLCJleHRlbnNpb25zIjpbImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6IjU0ZDlmZWU4ZTYyMTQyOTE4YjE4NzE1N2I5OWM1YmVjIiwib3B0aW9ucyI6eyJyayI6dHJ1ZSwiY2xpZW50UGluIjp0cnVlfSwicGluVXZBdXRoUHJvdG9jb2xzIjpbMV19fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMi0wMS0wNCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMCwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJISUQgQ3Jlc2NlbmRvIEVuYWJsZWQiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDIyMDEwNDAwMiIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4zIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjMifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjItMDEtMDQiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzB9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjItMDItMDIifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyI1NzkxOGJjMzM4MDM1MDM5MDBlZjE1YWU5YjJhZWYwZDU0N2JkNmY1IiwiYzQ4Yjc4Y2FlYWU3YWY2NWMxY2RhNGEzYjliOWJmYTQ2YmJjMDY1YSIsImJkZWI3ZjAxNWE2NmU0Yzg0NDhiNDE0ZmZkNDFjYTY2OWJiYTZiNGEiLCJlMmRjYWI3ODA5OTA0MDI0MDE3NmIyMmEyMGQ2YzNkOTkzNTA4YmQxIiwiNGZmODg2ZTEwN2RkZDdmMTM2Y2JiNWZjYzlkZjIzMDA2ZTJjMmQyNyIsIjY4NDlhNGY4Y2NmNzlmMTQyMjQ5N2Q3NzljZGM5MDFhODFiNjAyMjEiLCJlM2UyNmYyMmU1NWEzZWUxYTQ0OTNkN2YwMjAwOTg1ZWFmZWUyNTcyIiwiOTliMDExODE5YTliMTUzOWIyOGI4NmY2MjU1NDdmMTczZWI1ZDU3YiJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyI1NzkxOGJjMzM4MDM1MDM5MDBlZjE1YWU5YjJhZWYwZDU0N2JkNmY1IiwiYzQ4Yjc4Y2FlYWU3YWY2NWMxY2RhNGEzYjliOWJmYTQ2YmJjMDY1YSIsImJkZWI3ZjAxNWE2NmU0Yzg0NDhiNDE0ZmZkNDFjYTY2OWJiYTZiNGEiLCJlMmRjYWI3ODA5OTA0MDI0MDE3NmIyMmEyMGQ2YzNkOTkzNTA4YmQxIiwiNGZmODg2ZTEwN2RkZDdmMTM2Y2JiNWZjYzlkZjIzMDA2ZTJjMmQyNyIsIjY4NDlhNGY4Y2NmNzlmMTQyMjQ5N2Q3NzljZGM5MDFhODFiNjAyMjEiLCJlM2UyNmYyMmU1NWEzZWUxYTQ0OTNkN2YwMjAwOTg1ZWFmZWUyNTcyIiwiOTliMDExODE5YTliMTUzOWIyOGI4NmY2MjU1NDdmMTczZWI1ZDU3YiJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiWXViaUtleSA1IFNlcmllcyJ9LCJkZXNjcmlwdGlvbiI6Ill1YmlLZXkgNSBTZXJpZXMiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCIsInJlbW90ZV9oYW5kbGUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlESGpDQ0FnYWdBd0lCQWdJRUcwQlQ5ekFOQmdrcWhraUc5dzBCQVFzRkFEQXVNU3d3S2dZRFZRUURFeU5aZFdKcFkyOGdWVEpHSUZKdmIzUWdRMEVnVTJWeWFXRnNJRFExTnpJd01EWXpNVEFnRncweE5EQTRNREV3TURBd01EQmFHQTh5TURVd01Ea3dOREF3TURBd01Gb3dMakVzTUNvR0ExVUVBeE1qV1hWaWFXTnZJRlV5UmlCU2IyOTBJRU5CSUZObGNtbGhiQ0EwTlRjeU1EQTJNekV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRQy9qd1l1aEJWbHFhaVlXRU1zcldGaXNnSitQdE05MWVTcnBJNFRLN1U1M213Q0lhd1NESHk4dlVtazVOMktBajlhYnZUOU5QNVNNUzFoUWkzdXN4b1lHb25YUWdmTzZaWHlVQTlhK0tBa3FkRm5Cbmx5dWdTZUNPZXA4RWRaRmZzYVJGdE1qa3d6NUdjejJQeTR2SVl2Q2RNSFB0d2F6MGJWdXpuZXVlSUV6NlRuUWpFNjNSZHQyemJ3bmVid1RHNVp5YmVXU3dienkrQkozNFpIY1VoUEFZODl5SlFYdUUwSXpNWkZjRUJiUE5SYldFQ1JLZ2pxLy9xVDlubURPRlZsU1JDdDJ3aXFQU3psdXduK3Yrc3VRRUJzVWpUR01FZDI1dEtYWFRrTlcyMXdJV2J4ZVN5VW9UWHdMdkdTNnhsd1FTZ05wazJxWFl3ZjhpWGc3VldaQWdNQkFBR2pRakJBTUIwR0ExVWREZ1FXQkJRZ0l2ejBiTkdKaGpncFRva3N5S3BQOXh2OW9EQVBCZ05WSFJNRUNEQUdBUUgvQWdFQU1BNEdBMVVkRHdFQi93UUVBd0lCQmpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQWp2anVPTURTYStKWEZDTHlCS3N5Y1h0QlZac0o0VWUzTGJhRXNQWTRNWU4vaElRNVpNNXA3RWpmY25NRzRDdFlrTnNmTkhjMEFoQkxkcTQ1cm5UODdxLzZPM3ZVRXROTWFmYmhVNmt0aFg3WSs5WEZOOU5wbVl4citla1ZZNXhPeGk4aDlKRElnb01QNFZCMXVTMGF1bkwxSUdxck5vb0w5bW1Gbkwya0xWVmVlNi9WUjZDNStLU1RDTUNXcHBNdUpJWklJMnY5bzRka29aOFk3UVJqUWxMZll6ZDNxR3RLYnc3eGFGMVVzRy81eFViL0J0d2IyWDJnNElucGlCL3l0LzNDcFFYcGlXWC9LNG1CdlVLaUduMDVac3FlWTFneDRnMHhMQnFjVTlwc215UHpLK1ZzZ3cyamVSUTVKbEtEeXFFMGhlYmZDMXR2RnUwQ0NySkZjdz09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWZDQVlBQUFDR1ZzK01BQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBSFlZQUFCMkdBVjJpRTRFQUFBYk5TVVJCVkZoSHBWZDdUTlYxRkQvM2Q1OXdlUVNJZ1M5QVFBWGNGTEFRWmk5ZnBlVnoxdFkvV1RacjVXeHBjN1c1a25MYTVqSTNaODVzclMybk0yc2p0V3daUzdJVUg0SDR4Q25FUXg0REFaRjc0Vjd1czg4NXY5L2xJbkJ2VkovQjRQdjludS81bnUvNW52TTU1NmZ6QS9RdjBIYi9JclgzVkZLUG80NWNubTRpblVJV1l3TEZSbVpRVXV3akZHL04xaVJIaDFFWjBOUlZSdWRxdDFCZCsyblNLeVMvT2h5czArbGszZS8za1E5cXZENFpVdGE0VlZTVXVZMGVpcHlpVGhBZm9jb09SVmdEdXV3M3FLUmlBZDNyYmNFdGpUallJb2Y2V2FIc0NtelZQV0NNeCtjZ2g4dExxV01LYU1Xc1VqTHFvMlJ0SklRMG9Pem1lcnBRdTRlc1pnc09Oa0d4SDdkMGtkdlRUMTdzNE9NVTdWSThaaGpnR2FNK0FxOWlFTnU4UGlmMXVkejA3TXd2S1dmOEdsVm9DRVkwNFBDNVdkVGFYWUZiUjh2TnZMNSszS2dmYjV4Tk15YTlSYW1KaXluYU1sR1RWdEZscjZiYTl1K3BxbkVYNHVNdVJSZ2pTWUVock43dXRGRmU2bHFhbDdOZmt3NWltQUdIeW5QcGJrOFZtWTB4c3RucHRsRkNWQ1l0elR1Qk44M1FwTUxqVHRldmRQelNVbko3ZThta2p4WjM5ZlhiS0RmbGRacWJ2VStUVWdHbkJWRjZmUTJpUEhnNFcxNlVXVXd2emJrMTZzTVpFK1BuMHB2ejdKU2V1QXllczhsY3BDbWFLdW8vcCtxV3IyVWN3SUFIV3J2UDBZRXpoWEF0TEFic3NIaHA3aUdhbXZ5aWpQOHJ5cXJYVVdYOVhvb3d4eUF1Zk5CcnA0M1BPQkZYWmxrZjhNRFJpcWNweW93QXdwdXoyeCtmV3Z6L0R0ZGU5c21zenlndGNSNkMxd2JkekJsNk9scTVXTllZNG9HYXRoSk1ya1RFeDBqQVJTSEFWcys1cllrUU5YYitRZ2ZQTHNRNmdYeUluc3JlUWZtcG03UlZGWWZMODZuMWZpVU9rWXZTaGtVUHh2YnVrem95NksxaWhNMWhvM1h6VzZFdlNmWEErZHBpV0dhV2QrZG9Yekx6bUd3S1lGTENBc1JBbFBCQWhNbENGWFU3dEJVVlByOEhnVmNKSFdxK0YwMHBscitETVRkclA0enZ4WTExa05NaHhUK1NlVEdnK2Q0VjVMUUppdHlVR0pOQjhWRlpzamdZQlpNL0lJL1hDVGtqMHF5RE9wRjJBVlExN0NJalVwL0RuVDFVa0w1RjVnZGorc1Mxd2cxZ0UzZ2lnbTYwZkNYelNuUFhieUFQYklYditJRHBFMTZUaGFISVM5c2t5aGxtTUU1RjNjZnFBS2hxMkMwRTVQSDFnWWFYYUxQRGtaRzBIREpPbktXSHA1MUkwejVTT3V4OGUxV0F1WnpkSFFyVGtwOFRtalhvSStsYTB3R1pzenVicWJPM2lmUTZBL1c3dlZTWXNWM21SMEpLd2tLYzRXSGlCa21SOEkzQ0NnSTg3b09MNHF6VDVQK1JVSkJlakVPZ0FQSzhoWVB6YXRNK2VJVHAySU85eVRRbWVyb21QUnh4MXF4QWNzaWxlL3ViU2VFYmNXUUdZRUNnaGNMWTJIeUtqb2dqSDI1aE1wanBVdjFPdWdsaTRlaDJlUncwTzMyYkpqa3l1Q2dOemcwdnpsWU1TaVNzMHVvbzRNRzdoTU9qQ0VhWDF5RkUwblN2akJ6dVRuRXBLODZaOElvcUZBSXVidzhrZzlBckVhUkVXU1pJK2pINFhicDZnOUU5RW5KVDNvYVJ6RE4rTVVKQlFESG41NmE4b1VtRUJ1c094QnMvTjUrdEpFYlBrQUZEajhVR3ZPcy9JV3ZjU2dsR0JodlM3L0ZUWWZwV0dZZERZOGZQQXhXU0EzNXNUQzRwNCtMbTRBYXFJb1BlUXRmdWZLNkpoMFpoeGxic1VYT1NtWE5pZkQ1WlRBa3lEb2ZiYmNjbHhuQThXTkFxeENiUk55a2hYeFFwYUR3NjdmWFVZYnNpRzBLaHR2Mm9lSXZoOHJoUU1ZT2NFQXFYRy9lSSt6bmdPYzV5eHI4cTgySUFNMWMvRkxGT3BscXU1ZUZRWHJNWnpHY1ZDalliTFdHNUk0QlQxZXVScmxieHROT3RNaXREREVoTFhJSXluQUF2dU9FV0UzWDNOZEFmdDk0VmdhRzQyWElRdDBaWDZQZUNFL3FRRmU5cks2SHg3WVU1MEt2SDdmVzRmUytxN0tLQkp4c2dnQlg1cFNBR2gxaklyVmg1elE2dzNSZmFhaEJYbS9hQ2JDWlRqQ1VGVVR5V1pxVzlwNjJNakpQWFZxT3JQZ01PNE52NzRHa2Yrb3dmdE5WQkRRbmpGSnFIU3cxN3BYdmhXVzVLWnFlL1E0OU4vVVNUQ0FWV29RWEZJSEJIWFhlM0ZQclVEc3VHRG10Ri9oSEtUSHBla3hoaUFPUEkrU0pxNlM2SEY0STlZV3prQkpUbzQ2aVVNeldwOFBpci9SaWR1THhLWXNTa3NWOHZMbE9RdmhHWDJZbFIwT0JoQmpDK3UvZ0VjdlkwQXBLN1lrNDFOeGpQU1FuV0ZIVEY2NlVyamdldkI4Q3U1YStsMnZZU1JQdHVWRG83M2hoZE1TSG5VWDd0VGpzVlpHeEFsL1dwdGlPSUVRMWduTDI5bVg2L3RSMXRtbGtZajhXNFgrQ1NqV2NVREdZMU5wUy9DN2hTS3FpTUxNL2wyUW1TV1o3M0RkeitnaW84QkNFTllQUTQ2cW5rendYVWJxdkJreGpVUXNXZlpGZ2J1bzNyQWYrd043ak9POTAreW54NFBpM0wrMG5ZTDFTY2hEVWdBUDRnUFYvN0lkMXErMUhTaG11R2tJcVdSUGd5eE1GcVA4SGZqVG5qWHdZNWJRZmJKY3Q2T0l6S2dNSG90Ri9IZTFlZ3NheEhTcUc2d2ZkbVE1eDhOeVRGRnFCY3AyaVNvd0hSM3lrNSszNmhGN3ZYQUFBQUFFbEZUa1N1UW1DQyJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIwLTA1LTEyIiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZdWJpS2V5IDUgU2VyaWVzIChVU0IpIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVMkYxMTAwMjAxOTEwMTcwMDgiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMS4xIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjMifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjAtMDUtMTIifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIwLTA1LTEyIn0seyJhYWd1aWQiOiI3MmEyYjViMS05NWE1LTRkZjktYTg4MS00MTkyYWZmNGY3MmUiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjcyYTJiNWIxLTk1YTUtNGRmOS1hODgxLTQxOTJhZmY0ZjcyZSIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJHb1RydXN0IElkZW0gS2V5IG1pbmkifSwiZGVzY3JpcHRpb24iOiJHb1RydXN0IElkZW0gS2V5IG1pbmkiLCJhbHRlcm5hdGl2ZURlc2NyaXB0aW9ucyI6eyJlbi1VUyI6IkdvVHJ1c3QgSWRlbSBLZXkgbWluaSJ9LCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MjYyMTQ1LCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH0seyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Iiwic2VjcDM4NHIxX2VjZHNhX3NoYTM4NF9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlCcVRDQ0FVK2dBd0lCQWdJQkFUQUtCZ2dxaGtqT1BRUURBakE3TVNBd0hnWURWUVFEREJkSGIxUnlkWE4wSUVaSlJFOHlJRkp2YjNRZ1EwRWdNVEVYTUJVR0ExVUVDZ3dPUjI5VWNuVnpkRWxFSUVsdVl5NHdJQmNOTWpFd016QXlNRFl4T0RRNFdoZ1BNakExTVRBeU1qTXdOakU0TkRoYU1Ec3hJREFlQmdOVkJBTU1GMGR2VkhKMWMzUWdSa2xFVHpJZ1VtOXZkQ0JEUVNBeE1SY3dGUVlEVlFRS0RBNUhiMVJ5ZFhOMFNVUWdTVzVqTGpCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQkl6a01kdE5adDBaT3pPK3UxZjJFS1pSU25maHZ5d2Job25CRjlOU1BxMldHN251UmkveXZaOGxEandwNWRhclE2T2RaZytIcWJTU2VYSlh3N1VwY2xTalFqQkFNQThHQTFVZEV3UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdFR01CMEdBMVVkRGdRV0JCUmpXeFRvMUVxMzNacnhmTERXc3NkZGJEL3ZaVEFLQmdncWhrak9QUVFEQWdOSUFEQkZBaUIrRTA5R3ptY1lsTTk1cVQvYWZuUFU5cTZYSm14T1NLV0FSTzUra2dVbldnSWhBSWE5bjVwNDB0Y0dmbWVGNi9XdllvakFOdXlrUXFoVms4V25mZzE1UzY5ciIsIk1JSUJ0RENDQVZxZ0F3SUJBZ0lKQU11amtWeWl3OTM5TUFvR0NDcUdTTTQ5QkFNQ01Ec3hJREFlQmdOVkJBTU1GMGR2VkhKMWMzUWdSa2xFVHpJZ1VtOXZkQ0JEUVNBeU1SY3dGUVlEVlFRS0RBNUhiMVJ5ZFhOMFNVUWdTVzVqTGpBZ0Z3MHlOVEE0TWprd09EVXlOVEZhR0E4eU1EVXdNRGd5T1RBNE5USTFNVm93T3pFZ01CNEdBMVVFQXd3WFIyOVVjblZ6ZENCR1NVUlBNaUJTYjI5MElFTkJJREl4RnpBVkJnTlZCQW9NRGtkdlZISjFjM1JKUkNCSmJtTXVNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVyM3puMFp0dUhMaGZNaEh2YXUrRWFBUmt5REFTeXV0VkYyOHhZc3RxTnlXdGJqYk9sN2w5eVNzV0V0Q2hhWktuYW5udG5YQmJIeTg1WjVPeTAwMGdlcU5GTUVNd0VnWURWUjBUQVFIL0JBZ3dCZ0VCL3dJQkFEQU9CZ05WSFE4QkFmOEVCQU1DQVFZd0hRWURWUjBPQkJZRUZMOU5iTW8wWENvNjl3OTNmUk5pbndiRkZqcm9NQW9HQ0NxR1NNNDlCQU1DQTBnQU1FVUNJUUNmb2wzRWZyejhWQ2dTa3RvdzZkM1VaUUo2Smk4TVpmYW1FbWtVWU9Qd0FRSWdTZlU5dXR0c3VuOWJrbHZrL0Z2bEdhMVM4cHhJSEVNd1JFUjlZbXZwSm9RPSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFqQ0FZQUFBRDE3Z2hhQUFBQUJHZEJUVUVBQUxHT2ZQdFJrd0FBQUNCalNGSk5BQUNIRHdBQWpBOEFBUDFTQUFDQlFBQUFmWGtBQU9tTEFBQTg1UUFBR2N4elBJVjNBQUFLTDJsRFExQkpRME1nVUhKdlptbHNaUUFBU01lZGxuZFVWTmNXaDgrOWQzcWh6VERTR1hxVExqQ0E5QzRnSFFSUkdHWUdHTW9Bd3d4TmJJaW9RRVFSRVFGRmtLQ0FBYU9oU0t5SVlpRW9xR0FQU0JCUVlqQ0txS2hrUnRaS2ZIbDU3K1hsOThlOTM5cG43M1AzMlh1ZnRTNEFKRThmTGk4RmxnSWdtU2ZnQjNvNDAxZUZSOUN4L1FBR2VJQUJwZ0F3V2VtcHZrSHV3VUFrTHpjWGVycklDZnlMM2d3QlNQeStaZWpwVDZlRC8wL1NyRlMrQUFESVg4VG1iRTQ2UzhUNUlrN0tGS1NLN1RNaXBzWWtpaGxHaVprdlNsREVjbUtPVytTbG4zMFcyVkhNN0dRZVc4VGluRlBaeVd3eDk0aDRlNGFRSTJMRVI4UUZHVnhPcG9odmkxZ3pTWmpNRmZGYmNXd3loNWtPQUlva3RnczRySGdSbTRpWXhBOE9kQkh4Y2dCd3BMZ3ZPT1lMRm5DeUJPSkR1YVNrWnZPNWNmRUN1aTVMajI1cWJjMmdlM0l5a3pnQ2dhRS9rNVhJNUxQcExpbkpxVXhlTmdDTFovNHNHWEZ0NmFJaVc1cGFXMW9hbWhtWmZsR28vN3I0TnlYdTdTSzlDdmpjTTRqVzk0ZnRyL3hTNmdCZ3pJcHFzK3NQVzh4K0FEcTJBaUIzL3crYjVpRUFKRVY5YTcveHhYbG80bm1KRndoU2JZeU5Nek16amJnY2xwRzRvTC9yZnpyOERYM3hQU1B4ZHIrWGgrN0tpV1VLa3dSMGNkMVlLVWtwUWo0OVBaWEo0dEFOL3p6RS96andyL05ZR3NpSjVmQTVQRkZFcUdqS3VMdzRVYnQ1Yks2QW04S2pjM24vcVluL01PeFBXcHhya1NqMW53QTF5Z2hJM2FBQzVPYytnS0lRQVJKNVVOejEzL3ZtZ3c4RjRwc1hwanF4T1BlZkJmMzdybkNKK0pIT2pmc2M1eElZVEdjSitSbUxhK0pyQ2RDQUFDUUJGY2dERmFBQmRJRWhNQU5Xd0JZNEFqZXdBdmlCWUJBTzFnSVdpQWZKZ0E4eVFTN1lEQXBBRWRnRjlvSktVQVBxUVNOb0FTZEFCemdOTG9ETDREcTRDZTZBQjJBRWpJUG5ZQWE4QWZNUUJHRWhNa1NCNUNGVlNBc3lnTXdnQm1RUHVVRStVQ0FVRGtWRGNSQVBFa0s1MEJhb0NDcUZLcUZhcUJINkZqb0ZYWUN1UWdQUVBXZ1Vtb0oraGQ3RENFeUNxYkF5ckEwYnd3ellDZmFHZytFMWNCeWNCdWZBK2ZCT3VBS3VnNC9CN2ZBRitEcDhCeDZCbjhPekNFQ0lDQTFSUXd3UkJ1S0MrQ0VSU0N6Q1J6WWdoVWc1VW9lMElGMUlMM0lMR1VHbWtYY29ESXFDb3FNTVViWW9UMVFJaW9WS1EyMUFGYU1xVVVkUjdhZ2UxQzNVS0dvRzlRbE5SaXVoRGRBMmFDLzBLblFjT2hOZGdDNUhONkRiMEpmUWQ5RGo2RGNZRElhRzBjRllZVHd4NFpnRXpEcE1NZVlBcGhWekhqT0FHY1BNWXJGWWVhd0IxZzdyaDJWaUJkZ0M3SDdzTWV3NTdDQjJIUHNXUjhTcDRzeHc3cmdJSEErWGh5dkhOZUhPNGdaeEU3aDV2QlJlQzIrRDk4T3o4ZG40RW53OXZndC9BeitPbnlkSUUzUUlkb1JnUWdKaE02R0MwRUs0UkhoSWVFVWtFdFdKMXNRQUlwZTRpVmhCUEU2OFFod2x2aVBKa1BSSkxxUklrcEMwazNTRWRKNTBqL1NLVENacmt4M0pFV1FCZVNlNWtYeVIvSmo4Vm9JaVlTVGhKY0dXMkNoUkpkRXVNU2p4UWhJdnFTWHBKTGxXTWtleVhQS2s1QTNKYVNtOGxMYVVpeFJUYW9OVWxkUXBxV0dwV1dtS3RLbTBuM1N5ZExGMGsvUlY2VWtackl5MmpKc01XeVpmNXJETVJaa3hDa0xSb0xoUVdKUXRsSHJLSmNvNEZVUFZvWHBSRTZoRjFHK28vZFFaV1JuWlpiS2hzbG15VmJKblpFZG9DRTJiNWtWTG9wWFFUdENHYU8rWEtDOXhXc0pac21OSnk1TEJKWE55aW5LT2NoeTVRcmxXdVR0eTcrWHA4bTd5aWZLNzVUdmtIeW1nRlBRVkFoUXlGUTRxWEZLWVZxUXEyaXF5RkFzVlR5amVWNEtWOUpVQ2xkWXBIVmJxVTVwVlZsSDJVRTVWM3E5OFVYbGFoYWJpcUpLZ1VxWnlWbVZLbGFKcXI4cFZMVk05cC9xTUxrdDNvaWZSSytnOTlCazFKVFZQTmFGYXJWcS8ycnk2am5xSWVwNTZxL29qRFlJR1F5TldvMHlqVzJOR1UxWFRWek5YczFuenZoWmVpNkVWcjdWUHExZHJUbHRITzB4N20zYUg5cVNPbkk2WFRvNU9zODVEWGJLdWcyNmFicDN1YlQyTUhrTXZVZStBM2sxOVdOOUNQMTYvU3YrR0FXeGdhY0ExT0dBd3NCUzkxSG9wYjJuZDBtRkRrcUdUWVlaaHMrR29FYzNJeHlqUHFNUG9oYkdtY1lUeGJ1TmU0MDhtRmlaSkp2VW1EMHhsVEZlWTVwbDJtZjVxcG0vR01xc3l1MjFPTm5jMzMyamVhZjV5bWNFeXpyS0R5KzVhVUN4OExiWlpkRnQ4dExTeTVGdTJXRTVaYVZwRlcxVmJEVE9vREg5R01lT0tOZHJhMlhxajlXbnJkemFXTmdLYkV6YS8yQnJhSnRvMjJVNHUxMW5PV1Y2L2ZNeE8zWTVwVjJzM1lrKzNqN1kvWkQvaW9PYkFkS2h6ZU9LbzRjaDJiSENjY05KelNuQTY1dlRDMmNTWjc5em1QT2RpNDdMZTVid3I0dXJoV3VqYTd5YmpGdUpXNmZiWVhkMDl6cjNaZmNiRHdtT2R4M2xQdEtlMzUyN1BZUzlsTDVaWG85Zk1DcXNWNjFmMGVKTzhnN3dydlovNDZQdndmYnA4WWQ4VnZudDhINjdVV3NsYjJlRUgvTHo4OXZnOTh0ZnhUL1AvUGdBVDRCOVFGZkEwMERRd043QTNpQklVRmRRVTlDYllPYmdrK0VHSWJvZ3dwRHRVTWpReXRERjBMc3cxckRSc1pKWHhxdldycm9jcmhIUERPeU93RWFFUkRSR3pxOTFXNzEwOUhta1JXUkE1dEVablRkYWFxMnNWMWlhdFBSTWxHY1dNT2htTmpnNkxib3Ird1BSajFqRm5ZN3hpcW1ObVdDNnNmYXpuYkVkMkdYdUtZOGNwNVV6RTJzV1d4azdHMmNYdGladUtkNGd2ajUvbXVuQXJ1UzhUUEJOcUV1WVMvUktQSkM0a2hTVzFKdU9TbzVOUDhXUjRpYnllRkpXVXJKU0JWSVBVZ3RTUk5KdTB2V2t6Zkc5K1F6cVV2aWE5VTBBVi9VejFDWFdGVzRXakdmWVpWUmx2TTBNelQyWkpaL0d5K3JMMXMzZGtUK1M0NTN5OURyV090YTQ3VnkxM2MrN29lcWYxdFJ1Z0RURWJ1amRxYk16Zk9MN0pZOVBSellUTmladC95RFBKSzgxN3ZTVnNTMWUrY3Y2bS9MR3RIbHViQ3lRSytBWEQyMnkzMVd4SGJlZHU3OTlodm1QL2prK0Y3TUpyUlNaRjVVVWZpbG5GMTc0eS9hcmlxNFdkc1R2N1N5eExEdTdDN09MdEd0cnRzUHRvcVhScFR1bllIdDg5N1dYMHNzS3kxM3VqOWw0dFgxWmVzNCt3VDdodnBNS25vbk8vNXY1ZCt6OVV4bGZlcVhLdWFxMVdxdDVSUFhlQWZXRHdvT1BCbGhybG1xS2E5NGU0aCs3V2V0UzIxMm5YbFIvR0hNNDQvTFErdEw3M2E4YlhqUTBLRFVVTkg0L3dqb3djRFR6YTAyalYyTmlrMUZUU0REY0xtNmVPUlI2NytZM3JONTB0aGkyMXJiVFdvdVBndVBENHMyK2p2eDA2NFgyaSt5VGpaTXQzV3Q5VnQxSGFDdHVoOXV6Mm1ZNzRqcEhPOE02QlV5dE9kWGZaZHJWOWIvVDlrZE5xcDZ2T3lKNHBPVXM0bTM5MjRWek91ZG56cWVlbkw4UmRHT3VPNm41d2NkWEYyejBCUGYyWHZDOWR1ZXgrK1dLdlUrKzVLM1pYVGwrMXVYcnFHdU5heDNYTDYrMTlGbjF0UDFqODBOWnYyZDkrdytwRzUwM3JtMTBEeXdmT0Rqb01YcmpsZXV2eWJhL2IxKytzdkRNd0ZESjBkemh5ZU9RdSsrN2t2YVI3TCs5bjNKOS9zT2toK21IaEk2bEg1WStWSHRmOXFQZGo2NGpseUpsUjE5RytKMEZQSG95eHhwNy9sUDdUaC9IOHArU241Uk9xRTQyVFpwT25wOXluYmo1Yi9XejhlZXJ6K2VtQ242Vi9ybjZoKytLN1h4eC82WnRaTlRQK2t2OXk0ZGZpVi9LdmpyeGU5cnA3MW4vMjhadmtOL056aFcvbDN4NTl4M2pYK3o3cy9jUjg1Z2ZzaDRxUGVoKzdQbmwvZXJpUXZMRHdHL2VFOC9zM0JDa2VBQUFBQ1hCSVdYTUFBQTdFQUFBT3hBR1ZLdzRiQUFBQUlYUkZXSFJEY21WaGRHbHZiaUJVYVcxbEFESXdNVGc2TURVNk1qZ2dNVFk2TkRJNk1UVDlod3JmQUFBSUhVbEVRVlJZUjUxWEMxQlU1eFgrZGxsZ1FkNFBVUkFmaVNoYU5HMWk3Qmh0bTA1S1VrblRXQitOUWEwWUcyT0Rsam9PR2sxaU81MXFOR1Fjazlva1JKczA0SXc2cHVOMFRFeFRhT3NZUzdTU3BocGYxS0FWQlJaaFdSNHJJTHQ3YjcvejM3dnNRaGFDL1M3L3N2ejN2TS81ei9teDZBU0dDWjJQL0ZnczhwZjY2SU5mak1WNE9XeFl6ZC9EZytaWFlFSGxKNS9qdmdXYjhPanFIV2hzY2FuOU8xVXVHRjRFaE1RVTN0cmhSdDdxbDNHcXNocElpQUY4UHFEck5wWVY1T0gxRjFjZ0pqb3FLRkxDSStJSE4yeDRFVENWLzN6Ykg1QThjUkZPVlY4Q1JpY0RVWkZBTkpmVml2SURGYWo2OXhlS1Rpa2tqNmJSRkgxdzVZSkJJdERmNmo5Vm5zYThaM2JRV3k4UVM2K3Q1anQzdDRyQTFzMEYyTHpxY1dPUDZMMWFwNHlLR0RmRzNDRUdDNFFZRUF5Tmp4KzExNXYwS1krdTE1R1dweU1uWDhjMFdVdDFaRCtoSStsaGZXSFJUdDNyOVpuVUJocFhiZFRQSVZ3L2p4RzZZODBXYzVkeWZRRzV3UmkwQnZLTGQyTi8yUWZNY3l4Z1o1Z0ZrdStXZG95Y09BWlYrMytOdXpQVGpIM0N0ZnNkT05ZVzAxRWZ3cERBSFkxUEIvKzJJV05mS2VLWHpEY0lCOENpTVZIQjFmdjJINDloWldFSk1NSU94SXpnRHUzVFdQNGRYVFRFaHZKWGlyRDBzVGtHTWRGVGZRWjEzMTRBWDNjakZiTXUrQ2xRaGFoaTd1WFRnc2praVJoejdCRHNPZG5xRFZnZkZxYXlMd0pmWEcvQzdDVy93czNMekY5S29sR2U4cWFuVnlsZnUzWWhYbnUrUUVnVnZNMnRhSmozRkRxcmp0TEhWTzdZMUw1RXdJZDJxclpRUkx6Nk5QWTkzRzlHYk80aVpCNHRKM21ZTXEvUEFNdTRIOUhEQ0s1d1E3R1BYamUxWXNhRDk2TGluUmVZaVdnaFUzQ3NmZzdPMHRmb2F3eUZSQ3RCdWdxNUMySFdSR1JXSFlidTlURXk4NkZyN2FSTDRuc3hpV0pwbkMwcEExbk9jMHFXTXErK3ljV3ozQU5FbXNwN2JzTVdic1hISCszQzZmZTI5U2x2ZS9jUUxsamk0Q3A5aS82bWtGbVVpODl1cmphTTNMb2RrM3gxaVBybWZZaWVQUlBadmhzWXViMkVLV2dtdDRlVU9ubGk0V210ZytabVNna1ZBWWV6RGFOemxnSnBTVHhEWHFTUFRrTDlYM2NyQWtIM3ljOXc0NGNyNEdtdVVlRVdNWVkzM2FyUUVuOWNnUFNEYnhqRVJBZUZoOW1zTENQV2tZbmFqQm53TlRTUkw0d0d0V055VnlPc1VYWXpRU0pPTXFHV3h2N0NWSmk0Tm1zZXJzeWFCYTM1SnBWTDFRdUxGNzFvZ0gzYTF6Q3BycmFmOHBLM2p5QithajVpNk5EcmJFNSsyTWFtMDFpdmlvSlJuTExNRkNpb1BXUFRMQXNGOTBrcHNsSDhKa2RSd3UxVVFpYjhwUUlUenY0TjRabnBpdTVFOVVWRTVPUmp3NWE5UUJ4VEZoR093azBCdytRSUc5TDdJMkNBNkF4UzdFY1k3R1NVRXBJaTYwYnE5aDNJMXVzeEl2Yzc2djMxbXk1TW03Y0IzM3FrQ0I1aFQ0NGpFNDhpajVoTkRQa0tCQXdZQk1vdXRYZ3E2RlhLeG1mVnZxQjljU0hHM3JNTTV5NWVBektZbnJCUVBnYndaZmNHU2NGQXlBRlNqOFVnYjMxMUR5NWFZdUErZUFqVzlCVGo5SWlCYnA2a0xzNEh2eVpwWUVFWU9nWHNUQU1aQk1JazNpdVoxa2hjdWVzQk5QNWlIVk9UeUhuRHdTUkdkN05aT1Z3b0xseUFqVDliUUNONHhDZ3FNdHhvVG41STdSaEZHRURBQUU0dnRRWkFUTExLWTJIbjZ2YkF3MGtuUFVCMmRhMFhXa01MN3YxNkZ0cHEzOFBMNi9QWmlHaVFNUEdYUFZ3aUU0Q1N3eWNZUVJFZ1Y0Z2lORG9jUDNrOGpXNG12VjVUcDhFZGw0REtEM2JpMDBOYkVXODJLMWNudlRmSGRiQTArUzZTNUFsRy93aUVxQUdibW15R2Fqa05HanBWMTB2NzdXNU1haitIaDc2UnBlamFlVGVZdGZnRnZQSDdJN3lrUkNtZVlJamtyNDVBaUJxUXJxV2hoK0o2MkV3YmtMQnlKYWJxSFVoYUV4aE1ULzl5RHhMR1BZNlQvNnBoRCtBRUZXMnNxYzViUnJzVkRCMEJDWDFRRGRnNHFmeklkckczVDc4SEVWT21ZSEp6RTBidDVhZzI4ZGJCU2xnbXpNZmVzZytCZEU1RXVUZElGQ1VObkNjbHhjdE1TbTVUdGhIRi9sRldHbFhxbVdQMWhVM2s4alVIL256aWpMeENXRUlpeHA5aDE3dndkOWhTT0N1STA1OWZRY29EcS9ETXVsMjhNekRjZnE5djh6VGNhTWFTUmQrRmZ2VXdpcGJuS1hxQnQxRUdFZ3QzUUdxVUFaR1I5RmpHcjRBRnBETVZjeGMraHlrL0tFYWR3Mm5zRTIyOEY4eGMvQ0ptUGxRSVoxdUhlVytnQ0M5NUcxdVJNM2s4NmkvdHg3NGRhMHdPOHJ4Wnpna2FEMi9kTmRvWXJpS2dNN0hRZUxzaSttNUV1U3QrdzRyK0I1QnFDcFZLRm8rYTIvRFRaK2NqbFMzMnBhM3ZBb2xCVnpTcG1YWTM1M3NjanY1dUEzTG5URGYyaWE0VHAxRC95Rko0dWhwWXlNbFVha3hRTDBlM0xUNEZrOXA0c3laTUE5UlhsQjA1Z2VVYk9JYWxveVdhVFVad2k5MU5HbFdNakZkelQvSk1iTnU4SEp1ZUR0eUl2YzFPM0ppN0RMYytyZUNCVFNPMVRYR0kxeDdjUk95TTd5SHo0OE93MEFuWlZ3WUlZL0M5c0xoa0gxNTVxWXlEaFVjd2lxTlp2ZU9TT3VuMXNPczU4Y1JUaitIQXppS0R3VVRqVDliQlZWNUt4WEdrdGxPcDhQbW91aFVSOWpSa1ZCN2dSZVYrZzFqcVRlVEtoU1FVdkpwUG4vM2tGbDdKNXhyWDhLbFBxdTlaMzErbk8xcmFUQ29EemxmMzhDcHU1MVU4VWE5Qkp0ZFkvUkxYQmY1OUhyRzZzN1RNcEpScmYvOXIvSmNNa0lqd3B3L1Y1MnYxMURtcmRRdi9MM2ovK0dmbXJvSE9pdVA2ZjJLenFDUmFLYXpCZUs1eCtrV2tjUzlLYnloWWIxSUtSSzZ4Z2pIby93VkR3Y09yVmIzaytleHhoanVGZ1phaEkySWt6MDJJdVQ4WFk5N2ZCOXRJS1Q2VnZFRmhkSjRoSVNJQ05qYXRmUjQxR2FQUWZmWXMxWTd1VTY0eHo5WUlPKzZxK2dUai8vbWhvVng4QzdDR2hrVGdUbkQ3OG4vMXE5TWZaczRqR2VwVWhqcWV1VTdTbmJ2Mm1oUjNoanN5UUdOaCtqUG8vdWlZWHBlWHJ6dUt0Z1Q5TnhuNi83K2g4SC9WUUNpSWtLRnlIUnJBL3dDNGUrTytaMWNuNFFBQUFBQkpSVTVFcmtKZ2dnPT0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xIiwiRklET18yXzFfUFJFIl0sImV4dGVuc2lvbnMiOlsidXZtIiwiY3JlZEJsb2IiLCJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwibGFyZ2VCbG9iS2V5IiwibWluUGluTGVuZ3RoIl0sImFhZ3VpZCI6IjcyYTJiNWIxOTVhNTRkZjlhODgxNDE5MmFmZjRmNzJlIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6dHJ1ZSwidXAiOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJsYXJnZUJsb2JzIjp0cnVlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6dHJ1ZSwiYWx3YXlzVXYiOmZhbHNlfSwibWF4TXNnU2l6ZSI6MTYwMCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0Ijo4LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjk2LCJ0cmFuc3BvcnRzIjpbInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi0zNX1dLCJtYXhTZXJpYWxpemVkTGFyZ2VCbG9iQXJyYXkiOjQwOTYsImZvcmNlUElOQ2hhbmdlIjpmYWxzZSwibWluUElOTGVuZ3RoIjo0LCJmaXJtd2FyZVZlcnNpb24iOjI2MjE0NSwibWF4Q3JlZEJsb2JMZW5ndGgiOjMyLCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6MiwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjUwfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI2LTA0LTIxIn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNi0wNC0yMSJ9LHsiYWFndWlkIjoiYTI1MzQyYzAtM2NkYy00NDE0LThlNDYtZjQ4MDdmY2E1MTFjIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiJhMjUzNDJjMC0zY2RjLTQ0MTQtOGU0Ni1mNDgwN2ZjYTUxMWMiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiWXViaUtleSA1IFNlcmllcyB3aXRoIE5GQyJ9LCJkZXNjcmlwdGlvbiI6Ill1YmlLZXkgNSBTZXJpZXMgd2l0aCBORkMiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDczLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH0seyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3IiwiZWQyNTUxOV9lZGRzYV9zaGE1MTJfcmF3Iiwic2VjcDM4NHIxX2VjZHNhX3NoYTM4NF9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlESGpDQ0FnYWdBd0lCQWdJRUcwQlQ5ekFOQmdrcWhraUc5dzBCQVFzRkFEQXVNU3d3S2dZRFZRUURFeU5aZFdKcFkyOGdWVEpHSUZKdmIzUWdRMEVnVTJWeWFXRnNJRFExTnpJd01EWXpNVEFnRncweE5EQTRNREV3TURBd01EQmFHQTh5TURVd01Ea3dOREF3TURBd01Gb3dMakVzTUNvR0ExVUVBeE1qV1hWaWFXTnZJRlV5UmlCU2IyOTBJRU5CSUZObGNtbGhiQ0EwTlRjeU1EQTJNekV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRQy9qd1l1aEJWbHFhaVlXRU1zcldGaXNnSitQdE05MWVTcnBJNFRLN1U1M213Q0lhd1NESHk4dlVtazVOMktBajlhYnZUOU5QNVNNUzFoUWkzdXN4b1lHb25YUWdmTzZaWHlVQTlhK0tBa3FkRm5Cbmx5dWdTZUNPZXA4RWRaRmZzYVJGdE1qa3d6NUdjejJQeTR2SVl2Q2RNSFB0d2F6MGJWdXpuZXVlSUV6NlRuUWpFNjNSZHQyemJ3bmVid1RHNVp5YmVXU3dienkrQkozNFpIY1VoUEFZODl5SlFYdUUwSXpNWkZjRUJiUE5SYldFQ1JLZ2pxLy9xVDlubURPRlZsU1JDdDJ3aXFQU3psdXduK3Yrc3VRRUJzVWpUR01FZDI1dEtYWFRrTlcyMXdJV2J4ZVN5VW9UWHdMdkdTNnhsd1FTZ05wazJxWFl3ZjhpWGc3VldaQWdNQkFBR2pRakJBTUIwR0ExVWREZ1FXQkJRZ0l2ejBiTkdKaGpncFRva3N5S3BQOXh2OW9EQVBCZ05WSFJNRUNEQUdBUUgvQWdFQU1BNEdBMVVkRHdFQi93UUVBd0lCQmpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQWp2anVPTURTYStKWEZDTHlCS3N5Y1h0QlZac0o0VWUzTGJhRXNQWTRNWU4vaElRNVpNNXA3RWpmY25NRzRDdFlrTnNmTkhjMEFoQkxkcTQ1cm5UODdxLzZPM3ZVRXROTWFmYmhVNmt0aFg3WSs5WEZOOU5wbVl4citla1ZZNXhPeGk4aDlKRElnb01QNFZCMXVTMGF1bkwxSUdxck5vb0w5bW1Gbkwya0xWVmVlNi9WUjZDNStLU1RDTUNXcHBNdUpJWklJMnY5bzRka29aOFk3UVJqUWxMZll6ZDNxR3RLYnc3eGFGMVVzRy81eFViL0J0d2IyWDJnNElucGlCL3l0LzNDcFFYcGlXWC9LNG1CdlVLaUduMDVac3FlWTFneDRnMHhMQnFjVTlwc215UHpLK1ZzZ3cyamVSUTVKbEtEeXFFMGhlYmZDMXR2RnUwQ0NySkZjdz09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWZDQVlBQUFDR1ZzK01BQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBSFlZQUFCMkdBVjJpRTRFQUFBYk5TVVJCVkZoSHBWZDdUTlYxRkQvM2Q1OXdlUVNJZ1M5QVFBWGNGTEFRWmk5ZnBlVnoxdFkvV1RacjVXeHBjN1c1a25MYTVqSTNaODVzclMybk0yc2p0V3daUzdJVUg0SDR4Q25FUXg0REFaRjc0Vjd1czg4NXY5L2xJbkJ2VkovQjRQdjludS81bnUvNW52TTU1NmZ6QS9RdjBIYi9JclgzVkZLUG80NWNubTRpblVJV1l3TEZSbVpRVXV3akZHL04xaVJIaDFFWjBOUlZSdWRxdDFCZCsyblNLeVMvT2h5czArbGszZS8za1E5cXZENFpVdGE0VlZTVXVZMGVpcHlpVGhBZm9jb09SVmdEdXV3M3FLUmlBZDNyYmNFdGpUallJb2Y2V2FIc0NtelZQV0NNeCtjZ2g4dExxV01LYU1Xc1VqTHFvMlJ0SklRMG9Pem1lcnBRdTRlc1pnc09Oa0d4SDdkMGtkdlRUMTdzNE9NVTdWSThaaGpnR2FNK0FxOWlFTnU4UGlmMXVkejA3TXd2S1dmOEdsVm9DRVkwNFBDNVdkVGFYWUZiUjh2TnZMNSszS2dmYjV4Tk15YTlSYW1KaXluYU1sR1RWdEZscjZiYTl1K3BxbkVYNHVNdVJSZ2pTWUVock43dXRGRmU2bHFhbDdOZmt3NWltQUdIeW5QcGJrOFZtWTB4c3RucHRsRkNWQ1l0elR1Qk44M1FwTUxqVHRldmRQelNVbko3ZThta2p4WjM5ZlhiS0RmbGRacWJ2VStUVWdHbkJWRjZmUTJpUEhnNFcxNlVXVXd2emJrMTZzTVpFK1BuMHB2ejdKU2V1QXllczhsY3BDbWFLdW8vcCtxV3IyVWN3SUFIV3J2UDBZRXpoWEF0TEFic3NIaHA3aUdhbXZ5aWpQOHJ5cXJYVVdYOVhvb3d4eUF1Zk5CcnA0M1BPQkZYWmxrZjhNRFJpcWNweW93QXdwdXoyeCtmV3Z6L0R0ZGU5c21zenlndGNSNkMxd2JkekJsNk9scTVXTllZNG9HYXRoSk1ya1RFeDBqQVJTSEFWcys1cllrUU5YYitRZ2ZQTHNRNmdYeUluc3JlUWZtcG03UlZGWWZMODZuMWZpVU9rWXZTaGtVUHh2YnVrem95NksxaWhNMWhvM1h6VzZFdlNmWEErZHBpV0dhV2QrZG9Yekx6bUd3S1lGTENBc1JBbFBCQWhNbENGWFU3dEJVVlByOEhnVmNKSFdxK0YwMHBscitETVRkclA0enZ4WTExa05NaHhUK1NlVEdnK2Q0VjVMUUppdHlVR0pOQjhWRlpzamdZQlpNL0lJL1hDVGtqMHF5RE9wRjJBVlExN0NJalVwL0RuVDFVa0w1RjVnZGorc1Mxd2cxZ0UzZ2lnbTYwZkNYelNuUFhieUFQYklYditJRHBFMTZUaGFISVM5c2t5aGxtTUU1RjNjZnFBS2hxMkMwRTVQSDFnWWFYYUxQRGtaRzBIREpPbktXSHA1MUkwejVTT3V4OGUxV0F1WnpkSFFyVGtwOFRtalhvSStsYTB3R1pzenVicWJPM2lmUTZBL1c3dlZTWXNWM21SMEpLd2tLYzRXSGlCa21SOEkzQ0NnSTg3b09MNHF6VDVQK1JVSkJlakVPZ0FQSzhoWVB6YXRNK2VJVHAySU85eVRRbWVyb21QUnh4MXF4QWNzaWxlL3ViU2VFYmNXUUdZRUNnaGNMWTJIeUtqb2dqSDI1aE1wanBVdjFPdWdsaTRlaDJlUncwTzMyYkpqa3l1Q2dOemcwdnpsWU1TaVNzMHVvbzRNRzdoTU9qQ0VhWDF5RkUwblN2akJ6dVRuRXBLODZaOElvcUZBSXVidzhrZzlBckVhUkVXU1pJK2pINFhicDZnOUU5RW5KVDNvYVJ6RE4rTVVKQlFESG41NmE4b1VtRUJ1c094QnMvTjUrdEpFYlBrQUZEajhVR3ZPcy9JV3ZjU2dsR0JodlM3L0ZUWWZwV0dZZERZOGZQQXhXU0EzNXNUQzRwNCtMbTRBYXFJb1BlUXRmdWZLNkpoMFpoeGxic1VYT1NtWE5pZkQ1WlRBa3lEb2ZiYmNjbHhuQThXTkFxeENiUk55a2hYeFFwYUR3NjdmWFVZYnNpRzBLaHR2Mm9lSXZoOHJoUU1ZT2NFQXFYRy9lSSt6bmdPYzV5eHI4cTgySUFNMWMvRkxGT3BscXU1ZUZRWHJNWnpHY1ZDalliTFdHNUk0QlQxZXVScmxieHROT3RNaXREREVoTFhJSXluQUF2dU9FV0UzWDNOZEFmdDk0VmdhRzQyWElRdDBaWDZQZUNFL3FRRmU5cks2SHg3WVU1MEt2SDdmVzRmUytxN0tLQkp4c2dnQlg1cFNBR2gxaklyVmg1elE2dzNSZmFhaEJYbS9hQ2JDWlRqQ1VGVVR5V1pxVzlwNjJNakpQWFZxT3JQZ01PNE52NzRHa2Yrb3dmdE5WQkRRbmpGSnFIU3cxN3BYdmhXVzVLWnFlL1E0OU4vVVNUQ0FWV29RWEZJSEJIWFhlM0ZQclVEc3VHRG10Ri9oSEtUSHBla3hoaUFPUEkrU0pxNlM2SEY0STlZV3prQkpUbzQ2aVVNeldwOFBpci9SaWR1THhLWXNTa3NWOHZMbE9RdmhHWDJZbFIwT0JoQmpDK3UvZ0VjdlkwQXBLN1lrNDFOeGpQU1FuV0ZIVEY2NlVyamdldkI4Q3U1YStsMnZZU1JQdHVWRG83M2hoZE1TSG5VWDd0VGpzVlpHeEFsL1dwdGlPSUVRMWduTDI5bVg2L3RSMXRtbGtZajhXNFgrQ1NqV2NVREdZMU5wUy9DN2hTS3FpTUxNL2wyUW1TV1o3M0RkeitnaW84QkNFTllQUTQ2cW5rendYVWJxdkJreGpVUXNXZlpGZ2J1bzNyQWYrd043ak9POTAreW54NFBpM0wrMG5ZTDFTY2hEVWdBUDRnUFYvN0lkMXErMUhTaG11R2tJcVdSUGd5eE1GcVA4SGZqVG5qWHdZNWJRZmJKY3Q2T0l6S2dNSG90Ri9IZTFlZ3NheEhTcUc2d2ZkbVE1eDhOeVRGRnFCY3AyaVNvd0hSM3lrNSszNmhGN3ZYQUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzFfUFJFIiwiRklET18yXzEiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwibGFyZ2VCbG9iS2V5IiwiY3JlZEJsb2IiLCJtaW5QaW5MZW5ndGgiXSwiYWFndWlkIjoiYTI1MzQyYzAzY2RjNDQxNDhlNDZmNDgwN2ZjYTUxMWMiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJsYXJnZUJsb2JzIjp0cnVlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6dHJ1ZSwiYWx3YXlzVXYiOmZhbHNlfSwibWF4TXNnU2l6ZSI6MTI4MCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0Ijo4LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjEyOCwidHJhbnNwb3J0cyI6WyJuZmMiLCJ1c2IiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotOH0seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTM1fV0sIm1heFNlcmlhbGl6ZWRMYXJnZUJsb2JBcnJheSI6NDA5NiwibWluUElOTGVuZ3RoIjo0LCJmaXJtd2FyZVZlcnNpb24iOjMyOTQ3MywibWF4Q3JlZEJsb2JMZW5ndGgiOjMyLCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6MSwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjEwMH19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTEwLTEyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3MywiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZdWJpS2V5IDUgU2VyaWVzIHdpdGggTkZDIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNDEwMTIwMDMiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0wNi0wNCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzMsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWXViaUtleSA1IFNlcmllcyB3aXRoIE5GQyIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjQwNjA0MDAwIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMDYtMDQiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDczfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI0LTExLTEyIn0seyJhYWd1aWQiOiIzYTY2Mjk2Mi1jNmQ0LTQwMjMtYmViYi05OGFlOTJlNzhlMjAiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjNhNjYyOTYyLWM2ZDQtNDAyMy1iZWJiLTk4YWU5MmU3OGUyMCIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IDUgRklQUyBTZXJpZXMgd2l0aCBMaWdodG5pbmcgKEVudGVycHJpc2UgUHJvZmlsZSkifSwiZGVzY3JpcHRpb24iOiJZdWJpS2V5IDUgRklQUyBTZXJpZXMgd2l0aCBMaWdodG5pbmcgKEVudGVycHJpc2UgUHJvZmlsZSkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2LCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX0seyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3IiwiZWQyNTUxOV9lZGRzYV9zaGE1MTJfcmF3Iiwic2VjcDM4NHIxX2VjZHNhX3NoYTM4NF9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjgsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjgsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlEU2pDQ0FqS2dBd0lCQWdJVVIzOG1xMjZTZjJzelZWMkJkRzZXRU43a3VXVXdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFSWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFOWTBXYjlvUG9Sb0tvUXlXUGFKcHoxMXZyV1RnNnpUdG1OajJWb0tSbnl2S0dScXB6YjgzdzVsNllBOTZVWWtZQkRRUDBpbE8yRFBlNndXcVZSNXpEZlJ6ZGNIOGJoK0w3ZEdHdmFlNmhSVFpoa0ZrQ3BYRHM0SGNja25yRGY4RkNsSjdIZTM5SmY0Mi9HMVFtMnp6OVdXbXJQWHRnaUsveDA1R2pzUWZHdURHMXpmNVFUVVVpZThsd3ltSzNUZmRPdk5lZUpBQVBlMnBuN0l0ZlJiK3JWck5XaUR6bFJuMnZObloyd1BvNHdIL1dKNmRoWFpHK3JNV1QrYTZCb2NnMVVmSXc2a2R1bkc0YlRwWnpzdmFjRll5UjBtcGYrRGVPbnBTV0FteXdKV0h2VGxmMllYeEZ5ZVhjVEFDZFFsY01OR0oyVmhaUTQ4eHRQNS9SQlAvOGtDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNoeTQyb2tpcWNUUzFpcWEvSFJXamtCbjRIL01COEdBMVVkSXdRWU1CYUFGT3EzUXBDZURIdGtldHRVZkFPNmZFNmYyS0ZoTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBbitSSElQYnRNRUROZFQxZzhIL1JpdEFrVWRMZ0F0MXRXR1dubGo5a25idjQvNEdsWDdDOXA0NWVmUE85L2FaTDZPVjFYUktCaTZLbXRCVzVLN251WUVuTXgvNUJxQlNiTFQ3cmhkdUM0OVRCZU1iOVBIZFhzVGxTVk5ZZWZyMWRHaWRyNGoweFZCUUxiMXJrbkRBYmRXRHpLZnZuYXlLTzhGcndlN0h4ODQzTUcvckorYzBYcnVVdmJmVlRDSExpSVdoTTdvTkRoTDh4b2I2eFVvOUtMS2NTTCtJdFlzTzMvOVdiOFE5R2pzcUw0RlhzRGNHMVNhWWg3S3BmdU1tT2l4cXpKWk8ybklpY1BZUmcxSTJTdWlVZllPNzB0bWRIY2JsK2tTUW1TWXQ3cnE0dmlJTGcyR3gzajlySVR1V1RqYmFVYVNTUXhnT21NU0h1eXpNQUMiLCJNSUlEUGpDQ0FpYWdBd0lCQWdJVVh6ZWlFREpFT1R0MTRGNW4wbzZaZi9iQndpVXdEUVlKS29aSWh2Y05BUUVOQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU1aNi9UeE04cklUK0Vhb1B2Rzgxb250TU9vLzJtUTJSQndKSFMwUVpjeFZhTlh2bDEyTFVoQlo1TG1pQlNjSVpkMVJueDFvZDU4NWgrL2RoSzdoRW03SkFBTGtLS3RzMWZPNTNLR05MWnVqejVoM3dHbmNyNGh5S0YwRzc0Yi9VM0s5aEU1bUdORDZ6cVljaENSQUhmcllNWVJERjRZTDBYNEQ1bkdkeHZwcEF5Nm5rRW10V21NbndPM2kwVEF1Y3NyYkU0ODVIdkdNNHIwVnBnVmRKcHZnUWppVEpDVElxK0QzNWh3dFQ4UURJdituR3ZwY3lpNXdjSWZDa3p5Q2ltSnVraFl5NktvcU5NS1FFZHBOaVNPdld5RE1UTXQxYndDdkV6cHc5MXUrbXNVdDRyajBlZm5POXMwWk93ZHdNUkRuSDR4Z1VsNVpMd3JyUGtmQzEvMENBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUI4R0ExVWRJd1FZTUJhQUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUU13RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCRFFVQUE0SUJBUUMzSVcvc2dCOXBaOGFwSk5qeHVHb1grRmtJTGtzMHdNTnJkWEwvY29VdnNyaHpzdmw2bWVQTXJiR0pCeUoxWG5xdUI1c2djUkVORnhkUUZtYTNtaW84VXBmMW93TTFacmVYckowbUFERzJCcGxxYkpueGl5WWErUjExcmVJRlRXZUloTU5jWktzRFpyRkF5UHVGakNXU1F2Sm1OV2U5bUZSWUZnTmhYSktrWEliNUgxWGdFRGx3aWVkWVJNN1ZvbEJObGxkNnBSRktsWDh1c3Q2T1RNT2VBRGwyeE5GMG0xTFRoU2RldVh2RHlDMWc5K0lMZnozUzZPSVlnYzNpcm9SY0ZEMzU0ZzdyS2Z1NjdxRkF3OWdDNHlpMHhCVFByWTk1cmg0L0hxYVVZQ0EvTDhsZFJrNkg3WGszNUQrV1ZwbXEyU2gveFQ1SGlGdWhmNHdKYjBiSyIsIk1JSURTakNDQWpLZ0F3SUJBZ0lVVG5iYkdJUjJOSHZ6cUlLRkFlUXdHMVhCaXMwd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JCSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVFZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU9zWGozazA0QmFuNFRZZHRaS3FEL09QSnh5RHlhUG1DQlVGVWlhWklnVHRlWm5qM1gyNURoZ3BaWlhzQzREMHlkSWNybEE2d05VSW5PUkwvTDl6QmJURUlNQVZNR282ZzdVS0FtYjJNRjZBSGJuaFlKZDllaWt1cFZOV1NoSE5ZTmM0R0JkTzFZTjZBZlVxdkpoSGJlM1Y0U05NUG1CUkVLSlBWejdUaHdnbWdnVGU4V3MySzAvd3NxdjJ3U0U3cGJDQnNVWmhJWDUxYlpNM3BxRHdKUFRtUkZFdnQwLzZ0RzVlTzhGM2oxNE9YcWZFaG1qbjFWdnhLRFlRT0xaQXhDd3dnQzBQNENkZld2M3k4UFNSOEkzNTRoTzFZK0d6Tmp2SXFYMzhOS0x5d3VJWUhGZXJPeE5seEVNQnZGaFlCdVJ1WUFra2dVYVBxTjZVQmhzSUxyc0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ0NvUkhoaXlObmJuWFJXSUw2WkJYb0JYOVlUTUI4R0ExVWRJd1FZTUJhQUZDQW9VQ0VicEZwYjZGUExuWjNGNVB4c0wzb2ZNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUNRRmFmSkkxLzVXZzlDRUVpbUUxUlA1NFJnUXdUTlRPT1FzTEFDVGUrckl0bEZRekM5WkRoclY4Mjh5WDdqenkrQUFzcDNpeks3VDF0aDJkbDdtK3R1MHN3MlBhL29sYzAybnQ2UHlJdzM0OGdhSHpoSTErMEtFNDVxeHZGRGVMMmxNeGJQZkNZdnlFRWFZemppUUVMVTU5NTFwWEdXeUtNYS80Zkx0TytaS09YaE11VmVxNHJYRFBJNTRXNkpIT2lBYWlLZGl3KzVlM2Mya3QvakZJUXRNNnZNWGc5TE5GemRqRVROdDIwVlg5UWV2UnBGWmZ1Y01HOXdDYVFEb0ZsUHpwVE1KS2hQZXYvaW1KbVpZaEtmcjBsTGNlbXRxakl4TEFvcVpkT1lmSEJnNit2QWNkUEkvaWF1R3BVQXY3WCtVS05tRHdqWjJCYUg0c0x3aEIybSIsIk1JSURTRENDQWpDZ0F3SUJBZ0lVVWNtTVh6UklGT2dHVEswVGIzZ0V1Wllaa0JJd0RRWUpLb1pJaHZjTkFRRUxCUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JCSURFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURtNTU1YldZOVdXK3RPWTBySVdIbGRoK2FOYW5vQ1pDRmg3R2szWVpyUW1QVXcwaGtTRzZxWUhRdFArZlp5UzMzVkVydmcrQlFxbm11bWdOaGZ4RnJrd0VaRUxlaWRCY0M4QzRBZzRucXFpUFdwenN2STE3TmN4WWxJbkxOTEZjWlkvK2dPaU42Wk9UaWhPNS92QlpNYmo5cmlhQWNxbGlZbU5HSlBnVGNNR2FFQXlNekVNTnkybm02RXArcGpQNWFGNmdpMjF0L1VRRnN1SjFqMlJqL3luTS9TZFJ0K2VjYWw1T1lvdHhIa0ZiTDl2dnYyQTJPdjVJVFpDbHc0Yk9TOW5weXBRaW1PWjVRQVl5dG1ZYVFwV2wvcE1ZejZ6U2o4UnFrVkRORUpHcU5mVEtBMml2TFl3WDZsU3R0TVBhcGcwSjg0bDlYMHZvVk4vRnBTNFZDVkFnTUJBQUdqWmpCa01CMEdBMVVkRGdRV0JCUWdLRkFoRzZSYVcraFR5NTJkeGVUOGJDOTZIekFmQmdOVkhTTUVHREFXZ0JUUzd1OWFJbzA2YlZ3amx6M3loZFVtOFNWN2tqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQTRHQTFVZER3RUIvd1FFQXdJQmhqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFZTXpnTHJKTElyME9vdlFuQVpyUklHdWFiaUhTVUtTbWJMUldwUmtXZUF0c0NoREVIcFhjSi9iZ0ROS1lXb0hxUTh4UlVqQjRDeWVwWWV2YzNZbHJHOG83ekh4cGZWY2FvTDVTZXVKa3pIeEtuNGJUYVNwOStNdndhbW5wNjRrWk1pTmJGTGtuZlA5a1lLb1JIa01XaGVSSjFVc1AxejRTY21rQ2VJTGZzTXM2dnFvdnFqV0NsRnNKcEJjc2x1WUhXRjdiQkoxbjRSd2crQVRFb3BZNElnR3Y2WnZ3YytBOXIrQVQyaHFwb1NrWW9BbCtBTll3Z3NsT2Y5c0plMFYrVEE5WVkvVWxhQm1QUFRkMC8vcjl3dmNlUFdaa1BqS29BQy96VU5oZkRiaDRMVjhHSHMzbHlYMlhvbUwvTE5jOEpZenlJYURFaEdRdmVvUGhoL3RyMWc9PSIsIk1JSURTRENDQWpDZ0F3SUJBZ0lVRHFFUncrNFJuR1NnZ3hnVWV3SkZFUERSWjNZd0RRWUpLb1pJaHZjTkFRRUxCUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURJN1huSCtadkR3TUNRVThNOFplVjVxc2N1Ymx2VllhYVJ0M1liYXhuOWdvZEx4NXN3SDBsWHJkZ2poNWg3RnBWZ0NnWVlYN0U0YmwxdmJ6VUxlbXJNV1Q4TjNXTUdVZThRQUpiQmVpb1Y3Vy9FK2hUWlAvMFNLSlZhM2V3S0JvNlVMZU1uZlFaRHJWT1JBazh3VExxMnY1TGxqNXZNajdKdE9vdEthOUo3bkhTOGtMbXpYWFNhajBTd0VQaDVPQVpVVE5WNHpzMWJ2b1RBUVFXckw0L0o5UXVLdDZXQ0ZFNW5VTmlSUWNFYlZGOG1scUsyYngyejZva1ZsdHlEVkxDeFlicFVURUx2WTF1c1IzRFRHUFVvSUNsT200Y3Jwd25EUkxWSHZqWWVQR0JCLy9wRXl6eEEvZ2NTY3hqd2FIMVpVdzliblNiSHl1cktxYlRhMUt2akFnTUJBQUdqWmpCa01CMEdBMVVkRGdRV0JCVHF0MEtRbmd4N1pIcmJWSHdEdW54T245aWhZVEFmQmdOVkhTTUVHREFXZ0JUUzd1OWFJbzA2YlZ3amx6M3loZFVtOFNWN2tqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQTRHQTFVZER3RUIvd1FFQXdJQmhqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFxUWFDV014VEdxVlZYN1NrN2trSm1VdWVUU1lLdVU2K0tCQlNnd0lSbmx3OUs3SGUxSXB4WjBoZHdwUE5pa0tqbWN5RmdGUHpoSW13SEpneHh1VDkwUHczdllPZGNKSk5rdERnMzVQWE9melNuMTVjRkF4MVJPMG1QVG1JYjhkWGlFV09wem9YdmR3WERNNDFaYUNEWU1UN3c0SVF0TXl2RTd4VUJacTJianRBbnEvTkRVQTdiZTRIOEgzaXBDKy8rTktsVXJjVWgrajQ4SzY3V0kwdTFtNkZlUXVlQkE3bjA2ajgyNXJxRHFzYUxzOVRiN0tBSEF3OFBtcldhTlBHMmtqS2VyeFBFZmVjaXZsRmF3cDJSV1p2eHJWdG4zVFYyU0J4eUNKQ2tYc05EMDVkQ0VyVkhTSklzK0JkdFRWTlk5QXd0eVBtbnliMHY0bVNUenZXZHc9PSIsIk1JSURSekNDQWpHZ0F3SUJBZ0lVZXg5blQ5dndaTlhTNDgzTGRpWUdmdzJTalNvd0N3WUpLb1pJaHZjTkFRRUxNQzR4TERBcUJnTlZCQU1NSTFsMVltbGpieUJCZEhSbGMzUmhkR2x2YmlCSmJuUmxjbTFsWkdsaGRHVWdRaUF4TUNBWERUSTFNRGd3TVRBd01EQXdNRm9ZRHprNU9Ua3hNak14TWpNMU9UVTVXakFuTVNVd0l3WURWUVFEREJ4WmRXSnBZMjhnUmtsRVR5QkJkSFJsYzNSaGRHbHZiaUJDTWlBeE1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBdTFNZXZueTlkeU85WlVDMzlTb01oTGNSL0RYcnRGL2NpTTEydGNpeTJFWEFaNk1rcml2VnRDZkVWTTlYNklTVEVuQlA2dVNZWW92NnBwdjZPNkpoMk5IbVltNHcrSm5TNFZuQ1BVN21IQU1mVkkyTUdUVE1WT2V3MHhVc0c3c0lTSWtJRFVCbXVrOFlLOWM1emljOSt2RlFHTElrc2RYTzVpVkZJZ05HNTNjR1hENFpMWm9BUGl1MFBFb3p4QXFZSWFJNGd4S2hPQTNTOC9XOG1JV3N1Nm9meWo0R3ZrRkc2WjdreUYzMTA3UDdtd0ZITHJJM0VOYVBXTU9GY1RhR2EwZHcrL3ZWUndqUmNFWkJWc3V1VC84N2NrU3MwYTVwa3QzdlpCbGFZZVQ4cHpTcmVWN21vd2NJTTkwTDJpYUFUbFAwbnhtYUU2bk95VGJvakZWbDJ3SURBUUFCbzJZd1pEQWRCZ05WSFE0RUZnUVVTWEVoM3NhM2J0RHVybTRNTS9DN1MxbFJ1dVl3SHdZRFZSMGpCQmd3Rm9BVTZyZENrSjRNZTJSNjIxUjhBN3A4VHAvWW9XRXdFZ1lEVlIwVEFRSC9CQWd3QmdFQi93SUJBREFPQmdOVkhROEJBZjhFQkFNQ0FZWXdDd1lKS29aSWh2Y05BUUVMQTRJQkFRQjVHYzNoYWZ0cDdoS3NFWnNvK2kvWjVuUnVxZG16RzJXQ2xVb1JVcWJhUHlnbG5KRGpLUi9rZmdPbDZpYmJGL3p0aG0zS21YUTdIY0RJUDJ4TWRHN1UyTDJpbWJKUUhxUGYvaDJIcW9qYjRyWmd1ZSs2VzRrdFNSNWVsUjlMMXJZcUUvU0dZTTRpRUtvVlFTdjdSVDFyeEllV2lLc3cvVnh4aS9RT25zeDNGN3g4MENDWWdCNEUzeVF4OFZUVzQ0MGhURXdUQTFlTUhPaXgzMnRQdHl5SElhOFBWVklmVnBIUUpCYU1WdnY1MDhVRWp3a2JVMnJuamZ6b1NUTlM5QTVqVVE4bUJTdmU5NXJqQjBkbzk4RVUrRHhkQnFYMitINmk1d2xJQ0ZnemhkemNzbmU5aEdLVDZselRYNGNJZEpzclkyK3hsZUswRkZReTZsR0VWTEVlIl0sImljb24iOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJpY29uRGFyayI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsInByb3ZpZGVyTG9nb0xpZ2h0IjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwicHJvdmlkZXJMb2dvRGFyayI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIkZJRE9fMl8wIiwiRklET18yXzFfUFJFIiwiRklET18yXzEiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwibGFyZ2VCbG9iS2V5IiwiY3JlZEJsb2IiLCJtaW5QaW5MZW5ndGgiXSwiYWFndWlkIjoiM2E2NjI5NjJjNmQ0NDAyM2JlYmI5OGFlOTJlNzhlMjAiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJsYXJnZUJsb2JzIjp0cnVlLCJlcCI6ZmFsc2UsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjpmYWxzZSwiYWx3YXlzVXYiOnRydWV9LCJtYXhNc2dTaXplIjoxNTM2LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjgsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4LCJ0cmFuc3BvcnRzIjpbInVzYiIsImxpZ2h0bmluZyJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi04fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotMzV9XSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5Ijo0MDk2LCJtaW5QSU5MZW5ndGgiOjgsImZpcm13YXJlVmVyc2lvbiI6MzI5NDc2LCJtYXhDcmVkQmxvYkxlbmd0aCI6MzIsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjoxLCJjZXJ0aWZpY2F0aW9ucyI6eyJGSVBTLUNNVlAtMyI6MiwiRklQUy1DTVZQLTMtUEhZIjozfSwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjEwMH19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTEyLTIxIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZdWJpS2V5IDUgRklQUyBTZXJpZXMgd2l0aCBMaWdodG5pbmcgKEVudGVycHJpc2UgUHJvZmlsZSkiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI0MTIyMTAwNiIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTEyLTIxIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3Nn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wMS0xMCJ9LHsiYWFndWlkIjoiMjBmMGJlOTgtOWFmOS05ODZhLTRiNDItOGVjYTRhY2IyOGU0IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiIyMGYwYmU5OC05YWY5LTk4NmEtNGI0Mi04ZWNhNGFjYjI4ZTQiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiRXhjZWxzZWN1IGVTZWN1IEZJRE8yIEZpbmdlcnByaW50IFNlY3VyaXR5IEtleSJ9LCJkZXNjcmlwdGlvbiI6IkV4Y2Vsc2VjdSBlU2VjdSBGSURPMiBGaW5nZXJwcmludCBTZWN1cml0eSBLZXkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MiwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwiLCJiYURlc2MiOnsic2VsZkF0dGVzdGVkRlJSIjowLjAsInNlbGZBdHRlc3RlZEZBUiI6MC4wLCJpQVBBUlRocmVzaG9sZCI6MC4wLCJtYXhUZW1wbGF0ZXMiOjAsIm1heFJldHJpZXMiOjAsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2ludGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDU0RDQ0FlMmdBd0lCQWdJSkFNOVJ6WXU0RUlJbE1Bb0dDQ3FHU000OUJBTUNNSDh4Q3pBSkJnTlZCQVlUQWtOT01Td3dLZ1lEVlFRS0RDTkZlR05sYkhObFkzVWdSR0YwWVNCVVpXTm9ibTlzYjJkNUlFTnZMaXdnVEhSa0xqRWVNQndHQTFVRUN3d1ZSWGhqWld4elpXTjFJRVpwWkc4Z1UyVnlkbVZ5TVNJd0lBWURWUVFEREJsRmVHTmxiSE5sWTNVZ1JtbGtieUJTYjI5MElFTkJJREF5TUNBWERURTVNVEF5TXpBNU5UQTBNMW9ZRHpJd05Ua3hNREV6TURrMU1EUXpXakIvTVFzd0NRWURWUVFHRXdKRFRqRXNNQ29HQTFVRUNnd2pSWGhqWld4elpXTjFJRVJoZEdFZ1ZHVmphRzV2Ykc5bmVTQkRieTRzSUV4MFpDNHhIakFjQmdOVkJBc01GVVY0WTJWc2MyVmpkU0JHYVdSdklGTmxjblpsY2pFaU1DQUdBMVVFQXd3WlJYaGpaV3h6WldOMUlFWnBaRzhnVW05dmRDQkRRU0F3TWpCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQkhscTJqVVFNYWxIai9CUmVRZWZHaXo0RXZZSnlGTFdQejRSZmhKR0txcWwrOG45NmhUMW01Z1hvVHZvTHJqU1U3WDBjQmVvVHNnaHloMjIreXJzNCtTalVEQk9NQjBHQTFVZERnUVdCQlErOFNHVzJCWGJxYjJkY0FPaVdKT1UrR0NzUGpBZkJnTlZIU01FR0RBV2dCUSs4U0dXMkJYYnFiMmRjQU9pV0pPVStHQ3NQakFNQmdOVkhSTUVCVEFEQVFIL01Bb0dDQ3FHU000OUJBTUNBMGtBTUVZQ0lRRHE4eElXMFpLNXl6M0VBem11eDg4TENUWU8xNTdmVGZ5T2lPekMyQUR5YXdJaEFPMVBXWWxlRmdILzNtdUQ4Y0JBTXIxMWZFS2RGL0FhQzE2ZnR4YWV6TlhIIl0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUl3QUFBQVlDQVlBQUFBb054VnJBQUFBQ1hCSVdYTUFBQjdDQUFBZXdnRnUwSFUrQUFBRklHbFVXSFJZVFV3NlkyOXRMbUZrYjJKbExuaHRjQUFBQUFBQVBEOTRjR0ZqYTJWMElHSmxaMmx1UFNMdnU3OGlJR2xrUFNKWE5VMHdUWEJEWldocFNIcHlaVk42VGxSamVtdGpPV1FpUHo0Z1BIZzZlRzF3YldWMFlTQjRiV3h1Y3pwNFBTSmhaRzlpWlRwdWN6cHRaWFJoTHlJZ2VEcDRiWEIwYXowaVFXUnZZbVVnV0UxUUlFTnZjbVVnTlM0MkxXTXhORElnTnprdU1UWXdPVEkwTENBeU1ERTNMekEzTHpFekxUQXhPakEyT2pNNUlDQWdJQ0FnSUNBaVBpQThjbVJtT2xKRVJpQjRiV3h1Y3pweVpHWTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5MekU1T1Rrdk1ESXZNakl0Y21SbUxYTjViblJoZUMxdWN5TWlQaUE4Y21SbU9rUmxjMk55YVhCMGFXOXVJSEprWmpwaFltOTFkRDBpSWlCNGJXeHVjenA0YlhBOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOGlJSGh0Ykc1ek9tUmpQU0pvZEhSd09pOHZjSFZ5YkM1dmNtY3ZaR012Wld4bGJXVnVkSE12TVM0eEx5SWdlRzFzYm5NNmNHaHZkRzl6YUc5d1BTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM0JvYjNSdmMyaHZjQzh4TGpBdklpQjRiV3h1Y3pwNGJYQk5UVDBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5NFlYQXZNUzR3TDIxdEx5SWdlRzFzYm5NNmMzUkZkblE5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5elZIbHdaUzlTWlhOdmRYSmpaVVYyWlc1MEl5SWdlRzF3T2tOeVpXRjBiM0pVYjI5c1BTSkJaRzlpWlNCUWFHOTBiM05vYjNBZ1EwTWdLRmRwYm1SdmQzTXBJaUI0YlhBNlEzSmxZWFJsUkdGMFpUMGlNakF4T0Mwd05TMHlNMVF4TkRvME1EbzFOU3N3T0Rvd01DSWdlRzF3T2sxdlpHbG1lVVJoZEdVOUlqSXdNVGt0TURVdE1EVlVNRGs2TXpNNk5EY3JNRGc2TURBaUlIaHRjRHBOWlhSaFpHRjBZVVJoZEdVOUlqSXdNVGt0TURVdE1EVlVNRGs2TXpNNk5EY3JNRGc2TURBaUlHUmpPbVp2Y20xaGREMGlhVzFoWjJVdmNHNW5JaUJ3YUc5MGIzTm9iM0E2UTI5c2IzSk5iMlJsUFNJeklpQndhRzkwYjNOb2IzQTZTVU5EVUhKdlptbHNaVDBpYzFKSFFpQkpSVU0yTVRrMk5pMHlMakVpSUhodGNFMU5Pa2x1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2TWpFNE5XWXlZbVl0T0RWbU9TMWpaalEzTFdGaU9EY3RPVEZqTTJJelpqQmlOemhsSWlCNGJYQk5UVHBFYjJOMWJXVnVkRWxFUFNKaFpHOWlaVHBrYjJOcFpEcHdhRzkwYjNOb2IzQTZaV014WlRnM01qRXROek0zWVMwd05UUmxMV0V6WVRrdE5URmtNVE16TkRabFpUSTVJaUI0YlhCTlRUcFBjbWxuYVc1aGJFUnZZM1Z0Wlc1MFNVUTlJbmh0Y0M1a2FXUTZNakU0TldZeVltWXRPRFZtT1MxalpqUTNMV0ZpT0RjdE9URmpNMkl6WmpCaU56aGxJajRnUEhodGNFMU5Pa2hwYzNSdmNuaytJRHh5WkdZNlUyVnhQaUE4Y21SbU9teHBJSE4wUlhaME9tRmpkR2x2YmowaVkzSmxZWFJsWkNJZ2MzUkZkblE2YVc1emRHRnVZMlZKUkQwaWVHMXdMbWxwWkRveU1UZzFaakppWmkwNE5XWTVMV05tTkRjdFlXSTROeTA1TVdNellqTm1NR0kzT0dVaUlITjBSWFowT25kb1pXNDlJakl3TVRndE1EVXRNak5VTVRRNk5EQTZOVFVyTURnNk1EQWlJSE4wUlhaME9uTnZablIzWVhKbFFXZGxiblE5SWtGa2IySmxJRkJvYjNSdmMyaHZjQ0JEUXlBb1YybHVaRzkzY3lraUx6NGdQQzl5WkdZNlUyVnhQaUE4TDNodGNFMU5Pa2hwYzNSdmNuaytJRHd2Y21SbU9rUmxjMk55YVhCMGFXOXVQaUE4TDNKa1pqcFNSRVkrSUR3dmVEcDRiWEJ0WlhSaFBpQThQM2h3WVdOclpYUWdaVzVrUFNKeUlqOCsvMFZ4UlFBQUdmVkpSRUZVYUFYVndYZmNuM1Y5Ny9IWDUvdjlYdGR2M0RzN0pKQUlBVUxZQlptQ2ltRFZEbGZ0dzIzSHFZdXFQVjBXdGRiV1I2M25WRzJybnJhT3RzaERyUlVmUFIzV1dTM0tWaEFaWVFvRVFrTFduZHp6TjY3cituN2U1MDRpS05XTzg1OCtuMm51aXNTL0ozRzhZWmVaMlpURUltRDg1K1JPTzBaU1VmaUhKUDZGSHlJRVdCakF3ek53Nm9iSTNDeWtDR2FHSk55aExNV3dnbnJvcE5KSUNCTlVjb29pME84Yit4ZkY2UExBcUlNY0dvZDJXK3pZRDlGZzQ5ckFnYjFpMFRKVEhXR0N1bzZVaGVFSmRpOW1WclNOOGNLWXE0MmQrOFNLQ1NPMmdBd2RJQlFRVFB4N1psRFZka2tXYnpUWmNLVEkzZGh2dnJHbHVlTTlkOFVUWDBScitqbW95WUNRT01Tc0JMcEFBakxRUnhwZ3hvK1JBbWxyNG9jSVpoZUdrRjVsQnBMNHJ3aElDWExEZkgrZ0R4ZUZrSGdDQ2VTd2Y3OGhFei9Lak1QRUQ1SWdSWHVSdWYyMHBZQlpRNzJmN1N0R0gzWW1UdnhGTWhjZ0F3bGlBUkxnR1d3R05BZldRcXdtaHNoQmNuNHNHT0ErbDhxQ3h4bVFCVTNEU1pJajhWOFRZRkMwallVRmJlMzFkUDJ5NVpBelR4QVM1TVpBZ1BHanpRQkIxWUR4QTlaWjBLa21jRUhJbWM5M0x2aTNIZkhJa3FaZWpUSWdNRUFPN2w4bnhrOGgzWUxuM1lRMGp1c00xTHlPRU01RTRzZUNnT3ovbFBZY0VJOXhRVHR4eEhnM251a1lJTDVyRWRnT0NDajRmZ1lTc1I1cVJhZWpxMEppdXFwNGdoUU5MdzFWNHNlRkFLOUZNcjVIUUxUalFneWJNY2lOZzdIbjFwV1hmT09oNnNTTDhQa2pNUWRMWUdHYXdkN2ZKWFl2UjBXZkVNQUMxQldFNGxaNkMvOU1tZjZPY3VUcFNJRDRrV1VHMG03RXZlbTJiYzVqaG8xWU94bVBPbk1UcDJhSjdJQ0JpWThKL1Q3UUFrWUFjWkFBUThFb2MwTzJ5TGJSVVVNQ001Q01kaHYyelRsa0kvSmpSR0FSUWhISWpYaU1HY2RLR25lTTBqS0lPeDZwVisvTFp1Y2o3eEFNU1B2bzZ4VjQ5UVhTT016Tnc4Z0VkRm93TXdNalk1RFNYcHJtclJUNkI0eFZpQjlkRWt0dUpOcU90SGMrOEpqK0VEcGQyeFRhakdnQUdlTWdkLzluWUU4STRJSVFRQ3dKZ0lNTFhCQU5tZ3lTa1IySzROejlJRHc2THpZZkxRcmp4NFlaTkRYMGVrNTNMQ0J4U0FwMmpwbGhnaFkxc3paeDAxWE5CWE1FdGhBcVFCVzk1aDAwNlF2RUVhaEp0TXVYVU1RWDBGUlgwMnA5aENMTm93Q2Vyc2Y4UHJCVi9LZkVZY1ovbnpqTStBSHVFQUwvSVRsZ1lNWmhCcTZiRVF2cFNVZEdIbFBWeEJWamRvNnk0UklnRU5zRU82SkJscEVDVkxVVGdoRkxRVFljSXlNS1FaTWhHMVFORktYNDVqMWlZdEpvSlVPVitDRU1HQUVDTUErSS93OENYR0NBTzFqa3Y4MVlJc2dPRW9lSXd5eEFYWW01L2M2cWxZWm5hREpINWN6SmhJQk1tT0FoMy9qbGdYVldRejZSWURBWVhzdEMvUmQwbGtNNUF2STNVSFRmUndCcWZ4NGpvMXVCTDJJUjZnRFpHMElBQk80UUkyRGdEaVlPc1FSeWtJTVpQMGpnR1VMaWNSWUFnUXZNT0VRQ015aGE0Qm5rUElFRUZxQm9RYTdBSFVJRUJEbmZpY2pwcEVseGlJREltczZZblprYmFESllNRHo3M2NnZm1Xa0NSWUxKQ1AwK1dBQUtIbWVBWkVnUUFnVGprTkUycEFnU2h3aklBb3pqZ1o5Qk9rK3d6c0JjN0FPK2d2aWt4S1A4SndTNEdERzRLRVhPRXF6cXRQQUEzekhqQzRLdC9CY0V5NEp4OFdpYk0ySmtLb29hZUFENEN1TGJHQlFseEJFalprR2Y5WFZ0bTRoZ0NJelp2K1hGRHowWU5wNk5MYXhFRG1YbnMweVpFeW9vMHhuSS9vaWNvYWtoUk1CZWczd1RVa24yMVJnbkU4UWhyUTRvZzJjSGJRZjI0cXdpMkhxU0JScUJBRE1lNXc2cGdNNFlESHFRR3pDRGtDQVZNT3lCSEN3QUFnR3hBRGw0Qm9zY1pxQU1DR0lMd2poVVBhRnN3QTZDN21GSm1ubFVIT1FaV2wxV2o0eXlSVUVna0J0bHlUMnRxQU43NTRXNXNXUkNjS3JnRExEamdPVUdDb0dkR0xjQy95cDRoQjlHRU9DWXFYWjRiVzdzUmRGMEZHYUdJQU1wUXNDZVpZRmZNN04zQ1A3YVFId2ZBVG1yUlBaTHJjaXZZR3lXV1ZlQ3RaTWdsNXJLM3BTaVBvYnpoOENBN3lNZ2kxR1pYZXB1cjR6R3BnMnJZbG5YQWplVWhEc1BXZVRQTGZMSDFVRGFmbSttTG95UnR2M0VaTmNtcXl4YU5DQnV2VDZldXdQeE10UnY0K3JSRzl4SU11ZzBNTlFCTE54UGEyUUx1WUZxQU1UbkE4L25vQ0lBeGlFaGd1Y0RMUFkrVGpQNEV1Tmo5K0RXSjRSQU5YTTZkTi9DeUxLeldKd0ZieUJFUUJCTFVJREZtUWR4WFVjcTdzVENnR0gvS1Bweno2QXplaElHTkEya05uamV3ZmJiUHNyWTZ2dG9UejRmYTE2SUJjZ1pXaU9RNjBmWWZ2K0htRmh4QjkzUm44UHp5M0RkanJHZEphbTdNWENRQkVYa0REUEdjZ1VXd1hBR2ZWMWZXMEJ1YXkzeTg3Zzl2OTIyRXcxYklUY3dnU0FGUThKajRINlpYVkZMSHdCbStTNEhBcng0OVRKN1I5a0t4dzhXd1FLUGs2QnNRUUdXemRZWG8vR2pkWk9qTWg4MkRwTWdKanRwOVVUODM5MWtGK2VHb2tqQ0piSU1seEJZcm5Wa3UydHZNdzlIbXZKckJRT1dPRkFFVGxuVkRoOXNXYmlnY2NOTTFCbkVraUFra0xFaEJIdDNHV3dWbWQrOGQ1dnp4ZS9FOU15ejdjeUx6NGZxRVNpVjJWbHMrUHllWW0yUFBrL0ZNc2dIRFBveldJQ3FnbTduQVR5L2dOazlyNkVvbjBkNzlFazBGWWNJQ0FIRUVvRVB2OHFqRDd5VFZjZGR3OFI0UXpXQUxCQmcrV0ZtRnIvS2JITUZVK1h6Q0FteWd3VW8weDcyUGZTWFBIRG4zN0xsS1E5aDFpZEV3R0ZtMXlvNng3eVZzdnRHNmhrd29EUDZOaFptTG1mWnhoWXBYWXpYSUFHQ2FDQzlpMTc5RnpUWFFUcmhRc3BONEl2ZkF1WlprcnBkY1pDZ0UyVm5lelpjSW1LME9ueDFkdGIrTGplNmVOVUsrMkRDanE5ZGhCQzA1QURTaUFYS1ZqU2FSalFpeEdESGdyM1Q0Rm5BcjBwODJ3V2R5RnRiSStHM1RUYmV1QkFRZ0JBTjVQTWpMVDUzeDRPNmV0c0MrODQvd2RaT1lpOXRpTzh5eTdjaTNjaEI0dHhXeXo0UzRjUWlRT2c2dlI1N1RGeVZnanlZWFNSWTFRQU9kR0o4cWFSckpQdG9VM1BRdVNuWUZhUFJObVdEakREWVdkVit2Um5aNEd3ejIyQkFOWlNWbmZpcW80N2xzNVBPVmZQTGJPMktVZHRNWDJBR0JRdzZFOWMwZCsxZHhkcmpOdEZPb0RoQ1ovOTU3SGhnSzBlZkM2RUc1eDRHaTc5T1NoOGdwS2NSL2Rjb3U2ZlFuNGZza0NKUS96M1ViMkJxelU2YVBvd3NPNWJoNEFKY3UvRG1xN1FuQnZTWlovdld0ek4yN0dsMEp6Y3lXQVRaOVZSemI2YmR2b2JONTRxaUJXcWdHb0lpdEVmM3NPZkFteGkzU0xkOUtWVi9GNjN1VnpqNkxJakZPbFJkZ0FVUUVBTU1xM3ZKZGhWcjFrSnVMY01tbjRvcW9MNFpQSU9SR0hDSUdWTkVUaEpnQnRuOXk4TUJyeDhkczdjRmhYZDJvaGcyZm1QTytuU1EzUXkyRDlOa1U5a3BpNDIvb0d5Rmk4cElrQXR2eE1TWW5SK0srQWtMell0RzIzWkJ1d3h2eXoyMTYwYVlRWkZBVVBWNy9xbWlzRDluVkxmMSt2U25lNDRzUU5ZVmplenRwZkhVUm40VHNNNHN2TS9FaVNIQlRGLzloVVg3MDdLdGo0NjAySVhJTjl6VmJKNGFpKy9mY25TNHNCcUl4bFcwWTN6ZHZnVSt1bTNhanpqdEtQNE1iRk10a0duT3M3ODNoUERKRU94UlNSZ2NpWGdieGtzRmxxS3RhS2Y0d3Y1UVY1MTZySjYweWptaDJtOVlFSlRzZm85ZS84aDlCemFld1JIelU0UUNGRnFFOEFhOHVvbWl1SVdtRDU2aExNRGlnN1JISHVTV2E3L0VzUDlSVG5uNnM0Z0dpL1cxeU41SUhPeWtNN0dNaFlVM3M3ajRVc1JxaWxBZ1BrNk92MDY3M3N0UjYyOG5oeHZJMmtoMy9DYm1GMStMdUkzeE5lRGg2VlQ5VnlHT1JQbG1HdjlUSmxidHhJRDU0Vi9TYWo4WGZDZHpleGV4TnRUVldVVGZnQm1ZUVREb0RYZlEwelltV3BBMm5vUDdDZmhnSHlIZmpvbURrampNeFBwQU9BNER6OXdnOFg3VityMlJUbno1WXEwSGRzL2xQeHdwN1RQQm1PTzdna0hsWEh2M3cvNnhpU24vK1ZNMnBiZFhzL1lrajJJNEVLRUtXNTU2VXZIbG1KaW9lbW9yYzBnclFRT1BIaGo2VzJuc2I4cUN4OFVJTVJpNDl0ZFpmMUFVWERCV3BvbUZTcjlsRnM0SkNBdk03WnIxUy92emZIekRlc01NRURSdXQ4NzNtcmNvcC9jRVdCOER6WFJQOTMvcU9pL09Qem45YW12VW5yd3dDNWdlOHRwZkJYeU5KN29iOUR1WW5XallhWjdGWXJaTk1jTksySktDalZkbWRCbkFnQnNmMGhIYjJMTHVkYVFESTFRVnlLQ3o2bVNPbWZvazduK00vRXQ0L1FpdFVlaU9nemNnN1dEWSt6MXlQb21pWEU5amY0aHBCNmIxcEhnNTR5dWZ3WEFBWmhBTlhDK25hbTRsOEI2NjQ5QktCOGdMTU5kN0o1VnVvNHFSRWJ1TXdjSnZZMkVNaTFDTVhvU3FEdGhseEFBZHpkSTBleWs3MzJJNG5PT3V1Mkg5NnROWnRUd3hyQ0FZeEFRTCsyL0NyTS9vYXVoVlQ2WlZkSmh1cnFldEEzUWlPS1FVamU4NnhZd3B3VTdIcjIwbmUwdjJkRzQvNit2dS9pcGdHOTlsZ0ZoaUhOSTR2VWE2SFBkdjdodndpYkZPT0RVQnVSSGpJeHlSSGVvR2drRU1zR3RHMzg3QjMxaDI3R29KRU9EUWJVTzNNdTdkbmxuWkVXWEJWTHNkTzVZNVhoNWVvQ2lLQ0ROeitVUFQrL3pqclpTUXdJQTZ3OXBKWnpEMGF3ZnorZWVTYVN3bWNwWFpOVFZxcDY5WlliOGlCOCtPUjk2ZFV2eGFNRVlsR1dCTFdKS0JBM0o5MjR6VFdPS29YRFNuSzl1WUpBUUVnd1BONk5XN2UydWd6ZG1RUVN3UjRORHViTWI5cjhqRlZxSStBZllab3QrSCtuRDBhU3o1QnNxMzBCdnNndkFObWozZ2ZoUmgrVFNodVJKNUJZaUdBaGdoNkI2S0JBYXNXSDQ2WDcveWMxanJLK3g3QURZKzgrWEUrQWNJd3dSaVNZWjIrVXRJWjFBM014UmhBbWt6bG42ZmJkc2FSSWVpT0pXRERKQkR3NEQyMkxjWTltQjJEa0o2TXJSZ3FuTXpUWDJBYkJ5VWtGalN3dXgwQ1F5ZmptN1BEZU5oMDZEVUYxcDl2WnpHcHVXQVFBWVpNTUFNM0NFQTNUWlFzSFd1MXMvVU1mL1ZVZDF3U2IrR1FRMEdtRUdJUUFwZmYzUi9mdTNLRmR6bEFqTlFnR1lJSjIyQVpwdjQwT2Zod2pNRHp6M2RMdDI1eCtSbzQrcmx0aXdQSVhTNHAxM3lKMVB6UnJzRnFRVjFBd1owUzJNNEJFazdESkZsckJpTnhZdlA1NFZrVml6T2laQnNFZW1uZ0xNRTQ0RDRuaG9vRE03aUlBT0R4V2dVMFRoSkF0d2d3WmZqSlhkc0RTZTJDUGtJVkFNQk1CRFFERGtrZFU3RXV1K2lIcndhZUFtVG96Zmd3R0lGcUlmNEJLVlAweDlDNWpxOHVZNVE4RDNHSWNwUWxOQ2RXTW5ldmN2NDlyYyt5ckxPSWl2WHJtQ3l1SXpLRFJOZ1BLN0pYZUJjek1BZHNQc3h1NDJOUjRINzhaVGhGT29LTUVEZzdHQjBmQ3NSMkx2L0JJNVl0eGtMOEowYnI2TzNQeE1MRGtwa0RwcWswT2tnWXJDanJXTWo5KzNSVGRNTGV2VTRUSzhlZzdJRmJwQU5oQWhCV0FObWNNUnlZNlNBL29MWXZNeTMxemxlMld1NGhDWEdZV1pRTmY3My9ZcEx5NVoybFFGS2pOQUNCZWhWMENtRUFBZGl5WG5kYm5ycDF1bm1qOHBSemw3ZnNuYmR3TTU1djNyZGx2RG95UnNNR2pIWUFUUFQwRXF3Y3NLd0VGRXczQ0NIUUlUVjBleWlXdUFHRVViS0VIN2FBUW5NREFRT0dHQXNDWVlBQTVSOWF5Zlk2UWw3dW1TVTdScm1lSEI3L2FUYkIxUGQ1NUI3RzNETFlMczVyQTAyQVVUVWdBdFNzWkhzTDJiUGdSdG9IQ3h2QUZ0RHNLMFlNSGxjQzA4cnlMMkU2aHFMNHFBUXVyZ21pVVhCc1A4d3ZkWXJxUGJNc243bDFaejZIRmkyNWtKeTNzaGdIa0xnQ1F3UUlDQVZzREI3TGIzZWJsYXRoUkJQWVhiZkNnNnlDRlpBLzVFN0dlNituZEZUWU0yRzB4bHJIME52NWdCWC9lTzlQSHczZEVZNUtDbHcwTEdCY0NvWW9KRk9TK3pjbVQrOVk1ZTJyMTVoZER2RzJuRmpVSUVCQnBoZ1VJdDJhUnk1eXJoOXU1anRpUlBXOFJ5djdIZmRqSUI0VEREREczdjR6bDNEZld1bmpORldvaDJNSmtMdEVJRUE5SVl3VmpLKzZhajRmK2dxbkxaSk4yWEYxd3ptaFJWVURObmFUQU1tNmdYUnpCbXQwcEE3VlEycmxoYzBibVFYTVFuUHJPa05PYzZDaUlZSFdCQ3FCTWtNWTRtRXhZQWxvMTlsOVRtczdXYlQ5ZEEvVnJUdDlCaXRXMVhRc1F5SjY2NVpQSFVIenM5aWd4THhCb3lyZ1FJNEh2UUJ6S1p3UVZtQTVEeTg2eVlxd2ZJV2RPSUZNSElDc2QwRFFUVlloelZYZ0UxQm1BVnp6RWFBSTRFYVl6L1lES2s2RnpwWGNNSFBQa3puS0NDdHA5b2ZlWnlBd0NGeWlBa0NtZXlSMUxxZFhQV1kyUU5tSjVES2hEdFlnUGJZa01YWi80dEZpQ3VBQXo5Qk00UisvMFkybjdPTGRjZEJLamtveVFCak05QTFSQmJVaXl5dW43QzdqbDRMVDFwanpDN0FZQWhtUEVFd2tLQnFJRHNFQzc4STlxYzFqRWVFK0I1MzBXbUZYMTQybXU2cWMvNndBeGx3QVFZSXFneGpIVmE4OHFKd3hVbXJ3bW1QUGx5L2Vxb2REeVN6NVhValltM0ZpcmFXeis0V1FTS1pFVnFnaXNNRVRhT09qR3lvYUhmRmNORkdsQmtMTERFTGcreC9IY3cvVWdRN0tyc2lRZzRxWkhtMjBlNlcyWnh4U0xkcHZKMmQrd3JzOVRsRExBMEdrVVUxZHpRVHU2RGlHSkxOWTN3V3RBME1wUHVCUzhIT0JZRUU4NHQvUXRINk9LdVhRZjlSOFBaVGFZK3NZdmIrQllZek1QS2tmUlRsUG1JOEh4ek1RQWIxNE1zRXU1SlEzSUw3eTRpRDgwaGpzN2hWVE84QjkxdG90MnBTVE1oQUJqU1EvWE1VNVZmQmQ3TTQyRUlJbDdGbTVSeWpKWHppejZDdXR2UGNOMlI2L1VUVGg4WDlINmZWK1J1cUdhQS9UcTUrZ2w0RnFmVU5Mdno1L2FRQ0pBNUtKbG9XN0dRelF4SW1ZK2o2MW9ZanVOYk4yRGNMR0ppQmVKd0JKVEIwUVFyVzNiREMvcUFzd3B1R3RTWE1PY2pFZmhrZG9DUEFYV1BITEV2dm5lOWpjajVpQWVlN2hLaHFlOGJ4YThMN1d1dmlLZmZkblIvKzVqMzYwbk9lVHBoTWlneEFZSlY0YW94V0ZvVEtsVUVHQm5JSTBYN1pqSmNIVkFtYjJEL2pmemJSc3U4b1dkK3p1c2tnaS9ZZys1MmpJZDZKR1dZUWdleUJQWlhPM2RBTkZ3ZlJkVEVtK1R0YXBSOFJ6SjZSM2VoMHdmWTNmR2JmZWJkZGMrekxWbEZySTRPcURXcUR3QUtnQThCYndmOG5LUVZDNjFOVU01OWgxU1MwT3RBZnZaaWk5UUpNc0xodEdja2dObk5RL2pMS2QwQThoNUFYcVB0L0Q5MVBFRk9tR1hZSmNSbGlpVGFqWmdyM2FiSmRoL1JPeEcraFBFV0ljeWk4SDVwM0kxK2ticUEvL0IzV3JvVTdiempBby9mRDFCR3c3YlpQTTZ5T3BDak9vYW4rbGY3c0IybFBRUVI2dTA5Z1pPUmtIREQ3SnRVUXFpR1BTUmFZREdaUEZvY1p3a3lyK3hXL0dRd3JqRUk4cmhXTVpZS1Z3T2RkZk1oZDU4VEMzcmxxTXB4ZnUyZ2FVUVNqY3QwV3NGY1gwaXVhYUpmS1JSYTBJcU5sTjM1ZzZQNnpMbjBPN0NHRG84R2VFWU05blJERzZMblB6dWMzYlp6aW9lWkFYcWJ4c0sxVmhPWERTcGpaQmFYQ1I4ejBCb2M1bHJpelBKcTl2U3p0MGlvVE95MWpVR24yMFdtL3U3M0J0cmZhM0QrWXRaT3pZRFRaYTNwVm1CczI5cnV0a3NyTWtCaFBRYis0dmgxK1R6QmxCbG02eTR5M0oyT0YwQmFMUnIyWVNTVjNQYmpxS1YrYm1WdjNVOFRla1pnRDhkbTQzMDNPRUFPWS9SdVI2Mm0xQ3RBODFYNElVOUJVbXlsYjc4ZktaZVErTEgveVpSVERXNm1iL2VEVGlMZVQycU1NRm9iTTd4NnkraFRJZmpUVy96Z3huWXNERmk2aUdaNkM2ZDlvcFl6eHh6UzZpbVp3QkdPajkxT0gyL0RnWklkVytmc1U2ZTIwT3JEbm9ST3BkU1duUGczV2JOcEh0cmV4c0RCQ3F6WEh5Q1EwRGlIQi9QUkd4aVpYWVBWZWN2TVFNcjVmR2huVitvVjVPeTFFRG5GQTJIR2x3bHVpQWNaaHhpRXU3VFhaZlVMSGhFS1hFM2hhNWF5aWhtaEdBOVJaLytUR2I3am43OGo5RVN4ZUhDd2NEMktZUlRBcmtvWG51UGpKQUgyRHRvS2xnaVV5V1BSTEp6djZoMWdFRnFmWi84aDIvYzBKeDNOcVVaSnlBMlo2aGRBV0kveXJSTGRUOEV6SE5zdWcwektpYVdlS2VnbkdMUU1wRE9hNWNpVFl5YlVMaTJiZE12NUduWFdoWVZlRHVtWjJ0c3hPRzQxSzJhR1czU0RwSlJZMElOaDVZQWdEQndMM3JJcjdGcWs0RFV0Z0JqRyttZXgzSW4wUk04aUNmak5nY0dEQTdDT1FhNUM5aUZpOEQxdFlqOWNnUVdmaUV1cnA5K0xWSDVIQ3ZaZzUrQno5UGl6MGw3R09YNEQ4RmhwYmpzUWhSaUlXNzZZWi9nSXAzb1hVWU0zMXBCTG01MkZRUVh0cVBhM3d2NUMvRkRPWW1ZYlRudjNieFBZT2Vnc2ZZZDJ4TUt3eWcycWVsajJiT2grTDZ5OW90MFJhZlJHNUJ1VnY0SG9ZeFBkTHV3OXczbmhiSFhjd1FJSWlRcEZnV0FsM3NNQVE4WWpnOWliN3JrUVlpWVU5SDdOMUxoRUVqWERROVl0RGYzODBQdE5xQmM5QUkrMEkyWDhwcFhDNXNHTWRJUWx4U0JTTUdsQ1lNV2cwYmRhOHZvVSs3ZG53REowSWV3N29ZMnNhZjlycWtmaHp2VmtubTh6Z3pHRGhUQUVSRVlOUlpkRWZhdXRZbDFlbnhIV0d5QWZjTGR0Znh6RjdWdG0yOC9wOXNTU21aT2U0Y3c0WUJ6bEdQd3QzLzVjUXdwc3d0ZzFySm1JUm5obUNnYUFUS21ZMGRkdm45VHdvT1F2bU9VUmFUUXlYSS84WThGVmNEekIwR002dll6ZzRoYlhIUDVNbVA1TzhXQklUaDVoQk5ROTBmb0d5ZlNHZXZ3aTJDMjlFZC94SXl2WUZEQmVQQmtwQ0FuR1laN0I0Rm1YN004RGxvT3N3N1NhbWtybitNWGo5RkxycGVlREgwVGlZZ1dkb2pYYW82L2NTZURiRDNxMWtiMmlYeCtQMlhGS01pSjhtMkRpeFBBMDE0TnhNdGxtTUowamI5dG5aWnh4bkRPZmtCQlFDdzJHamhjVkswMld5bmdWbHllWXhUSEJjQ3VFQ0M0eldXVm5pM21TNnJ3amNPWmU1dnNxNk9zcjJTZUl4QnBpNGJ1RDV4UUc3TEptOTBNRlNNQ1J3aVNMU202bjFqd3VWM3J1eXhjMHNrVVJyTXREcEdpZE1zWkNDL2FxeXp3cTlNa1VyekkxR0FveGEwRTdhNDVXdTdBLzFKMlBkY0Q4Q0JLcEV1OVNPbk1QTDk4M3o1eE50UFNzUkdHWW9Ba2pnRWdtL1o5OVFIeTRqbDNlRDdSOVVqbUFDT0JXSlE4VGlQbHYrMmZ0MTNCYkU2WVFhQ0RYdWh0a2FpdUxOb05lUXduNUdDcU5ZUHNteUk4YUlSYUx1UTY0YlFpRVFoeGxnRWV4b1RLL2pvSnloMVlHUlNSak1DMUVUQWsra1FFeGJVSDRYaEJrSXM3aEtwcFl2dzJ3RXIxbmltRFdBRVNJTWVtQTJTb3pQUi81OFlvUUV1QUNEWUpjZ0IzT1dPSEFkUWZ4N2FmUHE4TUZxVVovRWFFQUt3Ulo3ZmVZWEt5MGV1ZEt5R3BzYVZrekdTTnRnQk9USXBwdEdNMkFMS1hFQW1IZlJ1S0JnaWZGRUJsbjZsc1Ava091S1lQYVVvZXVvRUd3WXBIdnF4cjllSzl6a01EUytUelNzTURvSkF1ejJyRGNPaC9udktzVm5XTkR4TFFpWXB0MTFpekpmazdUVnpES1BNU0FBQmlIdzRONDV2ZVRoUGY2VFc5YnlsTEpndzZEQ3pOaVpUTmVZK0hxV0hoTEc5RUpOM1lpVTdNQklhYThSZ1NBbEVvdGZxSjkxODEzOTQxZlE3YitTUU1aVkFZWmttTFdSdWhodHlnUWgxQmlMVklzRGpFeElnUE5FRFFnREVwQUlCcmx1eUUyRG1UQ1dpQitnSmdBZGpCSE1FcEtJY1FqMGFPb2haZzRZanpHV3lKQWlVQ0FIVVFNTkIwa1JjRVFiYkJhNGlSL2kvd0gzRDVQTXBkMnQ1UUFBQUFCSlJVNUVya0pnZ2c9PSIsInN1cHBvcnRlZEV4dGVuc2lvbnMiOlt7ImlkIjoiaG1hYy1zZWNyZXQiLCJmYWlsX2lmX3Vua25vd24iOmZhbHNlfSx7ImlkIjoiY3JlZFByb3RlY3QiLCJmYWlsX2lmX3Vua25vd24iOmZhbHNlfV0sImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIkZJRE9fMl8wIl0sImFhZ3VpZCI6IjIwZjBiZTk4LTlhZjktOTg2YS00YjQyLThlY2E0YWNiMjhlNCJ9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMC0wOC0wMyIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiZVNlY3UgRklETzLCriBGaW5nZXJwcmludCBLZXkiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDE5MDcwODAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4xLjEiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMyJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMC0wOC0wMyJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjAtMDgtMDMifSx7ImFhZ3VpZCI6ImNhNGNmZjFiLTVhODEtNDQwNC04MTk0LTU5YWFiY2YxNjYwYiIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiY2E0Y2ZmMWItNWE4MS00NDA0LTgxOTQtNTlhYWJjZjE2NjBiIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IklEUHJpbWUgMzkzMCBGSURPIn0sImRlc2NyaXB0aW9uIjoiSURQcmltZSAzOTMwIEZJRE8iLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MiwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjowLCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjowLCJibG9ja1Nsb3dkb3duIjowfX0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQzZUQ0NBZEdnQXdJQkFnSUpBSmJUeXJ1MVgvSVBNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1DTXhJVEFmQmdOVkJBTU1HRWRsYldGc2RHOGdUWFZzZEdsQmNIQWdSa2xFVHlCRFFUQWVGdzB4T0RBMk1USXhORFExTlRCYUZ3MHlPREEyTURreE5EUTFOVEJhTUNNeElUQWZCZ05WQkFNTUdFZGxiV0ZzZEc4Z1RYVnNkR2xCY0hBZ1JrbEVUeUJEUVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTVZqS0hXcGJEN1RTbE14b2NqVGw2bklmN3gzMlBtc1E5ekd1TEdHcUEwVVFab0lxM1hMekw2TFlVdko1QTVnMHV5RkdsbEhFZkdBS3JFYUNROEZWdlBTL1VoMEZ5ZnpXaFJBemlUU2lqak1JSVZqampVdjltOXZGbWNYU2NnSGlnN09kejg4NThWMGtyTkg5OXFHbTN3amdhT2VyVFdtdCtqWENVZm4wMUlrVFB3eEcySGxnRWQ0NWpOTFNWN1Zvb2wrS2U4RTJraTRsRWtUZUh6Ym91bFI1R1VicDNuTWk3RTQ3Vk1RYTNiTndueldCYnNhQlNTUWhMazNtNUhhS2hoeGE2d0pESzQ3TmlNQ2tDa2RJSHVXU1FMVkFmbTg1VUFPTnRFT1B3aTBPdUszcWJlOHlLT0ZHZjBLaEI1TU1lQXltN01WL000VzBhNDlvZ1BEOXBNQ0F3RUFBYU1nTUI0d0RBWURWUjBUQkFVd0F3RUIvekFPQmdOVkhROEJBZjhFQkFNQ0FvUXdEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBSld6NXhMTWs1V05ZYkFiNnlPeEVDQm9aMldlQi9xbDRWSjNPLzMvdE5zeE9ZbnpMZVdvNTQwelFoOXJBbWF4ejdldW1CbHNrTXE0eUdQU05YQjl5Y1dHSGdrY0NlU3pOMnd2OENJekRCczJvQlpqVE5rNjVMQlpEc3NUT0J0TVcvK3VURkhRZmJ1TzNJU0xoSTBEWGZSRWk5TkRNM2pmazExeEhjc2ZoMlJNVitRZE5md1ZhWlpyQ3Erb3VHK0V2a3Y3S3FxK295dTBWRk0vdHo2OFRHbDZ5bGhQRlIxcWg5d3R0cFZqQU9PQ0VRQ0xxUDJkUDI4bHdZQnlDcUhRcVZId2J1anYvTFpqWm5LVzNMWW5kWml4UFBTUkNKc3NERHdKdmgvZjZuVHhnOVpFKy9KY1lyZTVDYUk4bnpWSGFTT0NqTko3RnpVTEc2NEppV092UTUwPSIsIk1JSURkVENDQWwyZ0F3SUJBZ0lKQUlDVVR2a2d0ajVDTUEwR0NTcUdTSWIzRFFFQkN3VUFNRkV4Q3pBSkJnTlZCQVlUQWtaU01Rd3dDZ1lEVlFRS0RBTkVTVk14Q3pBSkJnTlZCQXNNQWtOVE1TY3dKUVlEVlFRRERCNUhaVzFoYkhSdklFMTFiSFJwUVhCd0lFWkpSRThnVTNWaVkyRWdRMEV3SGhjTk1qQXdOekEzTVRRek56RTRXaGNOTXpBd056QTFNVFF6TnpFNFdqQlJNUXN3Q1FZRFZRUUdFd0pHVWpFTU1Bb0dBMVVFQ2d3RFJFbFRNUXN3Q1FZRFZRUUxEQUpEVXpFbk1DVUdBMVVFQXd3ZVIyVnRZV3gwYnlCTmRXeDBhVUZ3Y0NCR1NVUlBJRk4xWW1OaElFTkJNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXZBS09lcUM1L3AwRDFpc0NZS1FKbFZVT3JCNkk3RExvY3VuRS9SbThkdUdUYnl4UWh0M0NiRlZUdjNOMkxwMmZianhsSSszc09TR2szM0ZUWWtUcXhjZEpJcko3U3NrQmNVU05yZktPYVFULzZLUWNQNENtN1YrNjU1VHErVFd4eXhXUWhEeWd0MTVxb1A3TXVLNmJUOVN3cENqcGZLaGFNU215UWFNb1VjUkFiTHFkekJDYWMwaHpCK1plK2dxSmxuV1Y5VWFTSTJyRnNWdUg0WkUwY1JPK01PcGFMZ00vczI0OG5HR0hwMjJld1NRZmJuUGFCYmI4aXF5QVArY3U1MkdMc1VwS1JKZWJFK1I2K1BNUTlKQ2RXZVFaUjNEa2ZTaWRrdjNtY2I0anExaUl0YStNcUtoUm53cmZYaDkxMUtXTG5ZQWw5RU5DaExYMGM2U2oxUUlEQVFBQm8xQXdUakFkQmdOVkhRNEVGZ1FVV0x2aFJCVVBuOHVMSWY2OCtndi9OWkl3R1NJd0h3WURWUjBqQkJnd0ZvQVVXTHZoUkJVUG44dUxJZjY4K2d2L05aSXdHU0l3REFZRFZSMFRCQVV3QXdFQi96QU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFGTHJEaGFlZ2VLSHhZakgzRVAzdlVCS2huek0yMDZBU3hnZVlDTzJFYzlwT2xZSmFlcUZFK3NVYW1VVi9wd2pEbHFOYVNnRmd5N1R3ZVlrdk9tTW40cVNjc0hxdkozekdPQWlhZndhaDF2VUhmQ2xYUjgrYXhPMmlHT1VGMEpLclo5WVlqYkFhNS80SENsdjdqRlBPZE1XVE9ReW5nb2lIQXMzamt1WWpwQ0xGbEI0Vk9pM2Qxd2pBMXBuVGRCS2tBYjd0OG5UdncrL1hiRnZjUWE3M1ZIN3Nqdm9CcUQzZmRNZlJjdVZxNHFVWnRaVDZjR2FnVEhENjFUdHFoOW9NQ1pYY0RiUjFQR1puTmJxeWNzV1BESUswbnBtSzMvM2xmVjhjK1pzcnk2ZTE3MG1mSk1acDdPOG02Q1N6Ni9WTEsreURKZDc4NDF3cG1lS1RmNkluWkE9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFRd0FBQUFnQ0FZQUFBRG5sVVpxQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUVuUUFBQkowQWQ1bUgzZ0FBQUFaZEVWWWRGTnZablIzWVhKbEFIQmhhVzUwTG01bGRDQTBMakF1TWpIeElHbVZBQUFLMUVsRVFWUjRYdTFkRFhBY1pSbStOT0FmS29nNldPMFFjcmVYM083MVI0MW9IZFNxcURBT2czK2NZRVhCb2xYUlRFbjIyMHRhS1RjNjRtZ0JxekJpRVVWcEJkcWl3d2hxU2RJUzJ1cFlTZ3ZSdHBUU2NrbGpXekhhZ2pwU1JkcjR2THR2anJ2azI3dmR2ZDFMam43UHpETjN0L2QrNy90K2Y4Lys3OGFLME5EYWFyMnFPZFhab3FXeUg5UjBhMEZjdDY3V2RIR1Rab2pWQ2NQcVNlalcxb1F1SHNPeS9lQlRzRG1NLzU0WlQ5aitMV0dJZzdEZkIvc0JjRFBzZjRYZlA4WDNiMnVHMVpIUXpVOG1VdUtkeVdUSG01cWFjaS9qSEFLQnlpZjBiQnIrTHdhWElQWVBrTWRxZkw4WGRXcGxzMUFBMzEvUWpPdzk4TDhTOWI4QlhJUjIrbkRjNkRvemxzazBzbG5rUU14a1BHWE85RUp0Vm5ZR0Y0c1V5Vm5kOFVUYWVwOGJ3KzZMYWtCajVpemRiTkpTMXJ4RVdueVd4ZzM2RW1QZFdvUFBEZWpmN2VBVEdNc0hhRHpUdUM2aGJqME4vcFhtQXNydWdzMFdMUDhOdUJKalpKbVdFbGNsMDltUEoxSm1XMHRMNSt1aUhCdUdrWHNsalg4N25pNEV6Vm5rOUF2a3NRbjU3RVNkaHJCOEJNdVBqT1dQLy80T0hzUi9lN0Q4WWRUbGZ0UmhGZmdkTEc5SHUxd0FmenI1NWpBT2tpUUtodlZiR0I2QzAvL2krMmlOZVJ4OEZnbnZSZnhmYWluelNrN05FMGlJVVBiZjQzd1dtTlROZDdCcEtFQTdMWmZGQVk5enAzeVpUU01EaVFWaS9VK1NnNVFZQUlmT21HMmV3c1VqQS9yaFc3TDRCZXJtajloMFVvQjJPQitUWlRXNEIvazhPeUcveUNpT29XMUlZSDZIOFhQejlMYmNLemlsUUdocE1admhaeUhHd0czZzQyQms4NVo4bzkwRzhYME5pU3MxSXYyUUdrOEtkV3N6dDRzbklQOFJxUjltRFFYRElkWlNiQm9aMElsM1MyT1haWFlwRjQ4TVUxNHduSzFiZVc0MXBMM0ZFUUNKbFBWV3RERzJmdXlWck5SM3RCVGRTakI4WXJJRm95VnRubzJPQ3pCZ3hETkJCNnBYS01Id3hpRDlnSzNLYzZQY2t2QkdKUmkrTWNtQzBZRDRmZEs0WG9oOVcvWVRDWlJnZUtOdndjaGtHdEcyZTJXK2Frc2xHTDR4bVlKQmF4bHBUSStrTlJRZG1HUjNvVU1KaGpmNkZRdzZjQ3J6VTN0Q01MRFd1UXNkM1IrQXczS25CUTVLeW5qaGpkeE9ubkRpQ0VadUdqcnNZV2xNSnRwaVdVSzNCbVQvRmZFdWRoZzZVUGU2Rmd6MGJSNmZhNk1tblkza2xEd2hhWWpMVVU2ZXMyN3QwZ3p6bTdWZ1V1OTZENmZrSHhDYTYyVVZHQ01xOGcwMmpSUW5pbUJvUnZZaWFUd20ybnRmVzl2Q2s3VzBkWUhzL3dKMTYzazZlTVp1UTBXOUN3Ykc5SzFzT3FXQXZJVTBYNXRpRFp0TmJTakJjR0VFZ3RIV2Rzdko4RTJuQXVVeGlicDVoV005Mm9EZjJ5YjhYMEt4M3JFTkYwb3dvZ0htMGhKcHZqYVZZUGpDaVNBWWliVDFlV2tzSmliQ2svUG01VTVpYzhyeFFwbGRNUlBwN0hsc0hocVVZRVFESlJnaDRzVXVHSFNSRCtwSVYrVEo0eEgxTEc5ZGpDSFRpTWxSNFZpRzJFN0hSYmhBS0ZDQ0VRMlVZSVNJRjd0Z29KMnowamhNdEhPZWpsMndlUUZZL2xHWmZTbkZmRFlQQlVvd29rSENNQmRMODdXcEJNTVhLZ3FHSVM1dlRwdG5oMFhVKzA1Wm5BSkRGQXpENkRnZC9wNld4bUhHRGZGRk5oK0gwUWIwd2FPeU1tT0UrT1VOSS9jU0xsQTE2bDB3MEY2NzQ3cTRwUnBHY2RxYTdrdVI1VXRFSDQ1Z0Rtd0tpL0RaajgvN0lFUzM0ck96ZWFhWXpXbFVoM29SakpvelJNR29PQUVOYTBpMmRUR0dlRXA4VEZKbVBEdll2R3JVdTJDRVFicWhrc09GQnN5bGkyV3hhc1RqNk5kMTJwc1h2NTdUQ1FZbEdDNE1TVEJhVzYwM29vMWRiNnF6cVZ0ZlluTTU2QXBCdzlveG9Wd1JNWWxHTkszOTFWeWlLaWpCaUVZd21sUGRMYkpZdFNUYTdxSGlBK3Urb1FURGhTRUpCdHB2aGRUL0dIV3h2OXpXeFJpMHRQaUV0SHdKeGJWc1hoV1VZRVFqR0hSd0d1T2gwZ1Y1a1RPZU1pL2hoUHhEQ1lZTFF4Q01zMXF0Vmd6dThyZXZweXlQandId3NwVmgvU3VWV2pLZEN3U0dFb3lvQkFPNXA4MzNvcCtlazhXc0ZkRit3YThTVm9MaHdoQUVBMzdXVFBCYlJIVGNBZXhHdkpUTkhmUU1OY2Y2QnMrUDllYm54ZnFlUEpXWDJrQ1p6SGdmRXhqQ0dRSWxHTkVKQnNGK0VKRXVkc3ZpMW9iaVQ1eUtmOVNOWU9qV1pqVHlmYUhSdWQ5QUhvdFlwV0E0TnhxSlkxTGZUTlQ1SzJ3ZWk2MGZNaUFVRDRLakJmYm1qOGI2OHN0ajJ3N2FEMnFoZlUvMHh5NlpyekhTMnF1bHBUTmwrd3lJdWhjTWpCVTY2MVFObTJjdVBvUERSWVRSQmpwYlIyTUFPVjlIWnpPUTk4L3cvZll3aVBIdGZqZTBidjJGay9DUGVoR01PcnNPby9MdDY3bzFYRGdWdWlFL0J3THhqeEt4S09YRzJNNmR0aTM2dzhPUmRuR1A3VGNna0Z1ZEM4YlV2QTZqbGtpa084K1R0ZzJJTVhTWXpmeERDWVlMcXhBTUw3ZXZvNzd0dG5GLy8wbllrdGdoRVlseEhMcWF6SjJ0akVxYnM5aXlTV1huMnY0RFFBbEcvYU9zWUJqV0FUYnpEeVVZTGd3c0dMbHBLTHRWNnBOSkhWWjRZSExmL25mSkJXSUNoMkhkUUVYaTZld2xNcjhsZEo1SFl0djdoUktNK2tjNXdVRDc3R1V6LzFDQzRjS0FndUhwOUdkS1hNWG1FSXg4dTBRY1hQallhKzB5bVV3ajJ1dHhxZThpb280WDJ2WStvUVNqL2xGaGwrU1BiT1lmU2pCY0dFQXc2SG9LN0E2VW5jaW81OEdtcHN0ZWVCMUQ3OUJYNWVJZzRmM0RwM09wR09MTWwva2Z4eDJ4ekZyZmo4VlhnbEgvcUxCTHNvWE4vRU1KaGdzRENFWWlWZjcyZFdicEpkdzkrODZSaXNONDlnN3VoM1ZoRjRQRjZRbUovMUxxMWdJdTRobVZCQU1UOXU3eDcwd0pnL1RZZlU2aExKUmdWRWFGWFpJSDJNdy9sR0M0MEtkZ3pKNXRuZ0tmQjZTK21Qai8wSXdaSFMvbklnNUdSeHNoQmdOU2tTamxZaTVSQVBydVVsbWNZbUp5L1huRzNIRXhLNkRpRmtaRXhCall5Q21VUlNYQlFEdVBvQTVibzJiU3lMNmRVL0lFM2lxVW5nWU5tMmdEMTdOMCtHOFZwK1FmU2pCYzZGTXc0cnBsU2YwVUVURk5OaTlGei9ETVdHLytpRVFrSFBibU44UzJiWnQ0K2JoemowbjVKM2lCZEZzMWwvQUUxTDJ1QmFOV1RPcmlBNXlTSnlEdjc4cjgxSnllcnk2V1FBbUdDMzBJUnRPYzNHbG9wOE5TUDJQVXhWTmwxL1RyOHEyeHZ2eDY4UGtpc2ZnbmZsOGY2eDkwZlFVbDRuNUdHcStZdWpoeTVxenUxM0NSaWxDQzRZMTFLUmowV2tndEYvd21SU1VZTHZRaEdGNG1HQWFMWVBQeTJEZzBQZFl6OUg3c3BzeU45UXhVZkMwaVhmeUZQdG9uaTFsTUdxeGNwQ0tVWUhoajNRa0d4Q0twVysvbWRJSkJDWVlMUFFvR3ZZUWE5dVhmNzFscDY2SktsSHQ4L1FzVVIrMFhUWHVBRWd4dnJBL0JvTGZyMlFmSHIvR3psZW1LS1NNWXVua0hUU3pFbEw0K3NGYUNnZm8rQis3V2pPem4yTFFzbk5jR2lEMVVUdWJQb2RuRjVwR0F6cGdndnV0V0J1cjZIN3RPdXJpVWk1UUZYU1dLTXQvSEJONUVheVhVcit3OU1jRXBqdkdLNHZmSWJ3VmR3OElwbEFXTkJaUzVEdldoTjVYbjRlZG9xZDhvaUZ5eDJ3aytpdS8wSXVpbDlLd1RUc2tUNG1seER0cnpSbTVYalBVbzJwWGU2RzQ5Z2p4dncrZkNoTkdoY2Zod1FDOWphVExFRzl4b0dGZVd2aVkrVXVTbTJRK2NvWGR5Nk5ZaU5Pd3lWUHJIR0JoM0pvenVVQ3NlVDVtWFFmRi9qaGcveE9mWE5kMjhnam8wYUgzcExBbE5OR2R0TDVZaTU1dlFnYmVqNCs2Zy85Z3NNcUFPSDNIYVNmd0ViWGNEdm1lVGh2VXBUZTk2eTRRek03NlFtOVkwWjlGcGRQY202dk5wc0F0OXN0eHBPK3ZYNEViRTIwb1RDY3NHU29ubCtCL2Y2V2EvVmNWNTBhU1B4N3RPRGVFQnhnMTB4eStka29YZ2ZBZ3hGaURlMTlBTzMwTS9yRVFPOXlMbUE0aS9CYiszbCtibmtQSUhONFByVUwrMStGd0IyMnZob3gxaWYxRzgxWHBidkEyNVpqSytyMmx4UjI0YTFkOFJQekVmdXdvV2NzRVdpSk16WWorSTN3K1Z0S3NoSGdIL0FQWlNucWpUemZpOHhoNjd1blV1UGRyQTI4TnhZckgvQXozdEk0ajUrVE9MQUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIl0sImV4dGVuc2lvbnMiOlsiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiY2E0Y2ZmMWI1YTgxNDQwNDgxOTQ1OWFhYmNmMTY2MGIiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjp0cnVlLCJ1cCI6dHJ1ZX0sInBpblV2QXV0aFByb3RvY29scyI6WzFdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIyLTA3LTIyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiSURQcmltZSAzOTMwIEZJRE8iLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDIyMDcyMjAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIyLTA3LTIyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjQtMDYtMTgifSx7ImFhZ3VpZCI6ImFiMzJmMGM2LTIyMzktYWZiYi1jNDcwLWQyZWY0ZTI1NGRiNiIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiYWIzMmYwYzYtMjIzOS1hZmJiLWM0NzAtZDJlZjRlMjU0ZGI2IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlRFU1QgKERVTU1ZIFJFQ09SRCkifSwiZGVzY3JpcHRpb24iOiJURVNUIChEVU1NWSBSRUNPUkQpIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2ludGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQ0xEQ0NBZElDQ1FDdjF2bHFLZVc1ZWpBS0JnZ3Foa2pPUFFRREFqQ0JuREVMTUFrR0ExVUVCaE1DUTBneER6QU5CZ05WQkFnTUJrZGxibVYyWVRFUU1BNEdBMVVFQnd3SFZtVnljMjlwZURFUE1BMEdBMVVFQ2d3R1ZFOUxSVTR5TVNJd0lBWURWUVFMREJsQmRYUm9aVzUwYVdOaGRHOXlJRUYwZEdWemRHRjBhVzl1TVJNd0VRWURWUVFEREFwMGIydGxiakl1WTI5dE1TQXdIZ1lKS29aSWh2Y05BUWtCRmhGdlptWnBZMlZBZEc5clpXNHlMbU52YlRBZ0Z3MHhPVEExTVRRd05qVTBNakZhR0E4eU1EY3lNRFV5TURBMk5UUXlNVm93Z1p3eEN6QUpCZ05WQkFZVEFrTklNUTh3RFFZRFZRUUlEQVpIWlc1bGRtRXhFREFPQmdOVkJBY01CMVpsY25OdmFYZ3hEekFOQmdOVkJBb01CbFJQUzBWT01qRWlNQ0FHQTFVRUN3d1pRWFYwYUdWdWRHbGpZWFJ2Y2lCQmRIUmxjM1JoZEdsdmJqRVRNQkVHQTFVRUF3d0tkRzlyWlc0eUxtTnZiVEVnTUI0R0NTcUdTSWIzRFFFSkFSWVJiMlptYVdObFFIUnZhMlZ1TWk1amIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBVGpiU1pkNjEvN0hhb3h5b3hsM3loNnRqazN0TDZBU0NDdW0vMm5kcTg2RFFMdCtEVTZNVjZmNC8rK3VwQVBiVFpVNmpXbnZJTG92dG5zUmdDV3dVWVJNQW9HQ0NxR1NNNDlCQU1DQTBnQU1FVUNJRWlOZk5wQUxaSUg4bjFWeVhwRnlMSXpEZVpFWk9DUmlLaDQ0dW5pYUJaUEFpRUFvZGFuT2xQVUVDakdIRWYrRTRkVEtreUNscExpNEpkRUprVkhRcElYRUpBPSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFnQ0FZQUFBQnplbnIwQUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUtUMmxEUTFCUWFHOTBiM05vYjNBZ1NVTkRJSEJ5YjJacGJHVUFBSGphblZOblZGUHBGajMzM3ZSQ1M0aUFsRXR2VWhVSUlGSkNpNEFVa1NZcUlRa1FTb2dob2RrVlVjRVJSVVVFRzhpZ2lBT09qb0NNRlZFc0RJb0syQWZrSWFLT2c2T0lpc3I3NFh1amE5YTg5K2JOL3JYWFB1ZXM4NTJ6endmQUNBeVdTRE5STllBTXFVSWVFZUNEeDhURzRlUXVRSUVLSkhBQUVBaXpaQ0Z6L1NNQkFQaCtQRHdySXNBSHZnQUJlTk1MQ0FEQVRadkFNQnlIL3cvcVFwbGNBWUNFQWNCMGtUaExDSUFVQUVCNmprS21BRUJHQVlDZG1DWlRBS0FFQUdETFkyTGpBRkF0QUdBbmYrYlRBSUNkK0psN0FRQmJsQ0VWQWFDUkFDQVRaWWhFQUdnN0FLelBWb3BGQUZnd0FCUm1TOFE1QU5ndEFEQkpWMlpJQUxDM0FNRE9FQXV5QUFnTUFEQlJpSVVwQUFSN0FHRElJeU40QUlTWkFCUkc4bGM4OFN1dUVPY3FBQUI0bWJJOHVTUTVSWUZiQ0MxeEIxZFhMaDRvemtrWEt4UTJZUUpobWtBdXdubVpHVEtCTkEvZzg4d0FBS0NSRlJIZ2cvUDllTTRPcnM3T05vNjJEbDh0NnI4Ry95SmlZdVArNWMrcmNFQUFBT0YwZnRIK0xDK3pHb0E3Qm9CdC9xSWw3Z1JvWGd1Z2RmZUxacklQUUxVQW9PbmFWL053K0g0OFBFV2hrTG5aMmVYazVOaEt4RUpiWWNwWGZmNW53bC9BVi8xcytYNDgvUGYxNEw3aUpJRXlYWUZIQlBqZ3dzejBUS1VjejVJSmhHTGM1bzlIL0xjTC8vd2QweUxFU1dLNVdDb1U0MUVTY1k1RW1venpNcVVpaVVLU0tjVWwwdjlrNHQ4cyt3TSszelVBc0dvK0FYdVJMYWhkWXdQMlN5Y1FXSFRBNHZjQUFQSzdiOEhVS0FnRGdHaUQ0YzkzLys4Ly9VZWdKUUNBWmttU2NRQUFYa1FrTGxUS3N6L0hDQUFBUktDQktyQkJHL1RCR0N6QUJoekJCZHpCQy94Z05vUkNKTVRDUWhCQ0NtU0FISEpnS2F5Q1FpaUd6YkFkS21BdjFFQWROTUJSYUlhVGNBNHV3bFc0RGoxd0QvcGhDSjdCS0x5QkNRUkJ5QWdUWVNIYWlBRmlpbGdqamdnWG1ZWDRJY0ZJQkJLTEpDREppQlJSSWt1Uk5VZ3hVb3BVSUZWSUhmSTljZ0k1aDF4R3VwRTd5QUF5Z3Z5R3ZFY3hsSUd5VVQzVURMVkR1YWczR29SR29ndlFaSFF4bW84V29KdlFjclFhUFl3Mm9lZlFxMmdQMm84K1E4Y3d3T2dZQnpQRWJEQXV4c05Dc1Rnc0NaTmp5N0VpckF5cnhocXdWcXdEdTRuMVk4K3hkd1FTZ1VYQUNUWUVkMElnWVI1QlNGaE1XRTdZU0tnZ0hDUTBFZG9KTndrRGhGSENKeUtUcUV1MEpyb1IrY1FZWWpJeGgxaElMQ1BXRW84VEx4QjdpRVBFTnlRU2lVTXlKN21RQWtteHBGVFNFdEpHMG01U0kra3NxWnMwU0Jvams4bmFaR3V5QnptVUxDQXJ5SVhrbmVURDVEUGtHK1FoOGxzS25XSkFjYVQ0VStJb1VzcHFTaG5sRU9VMDVRWmxtREpCVmFPYVV0Mm9vVlFSTlk5YVFxMmh0bEt2VVllb0V6UjFtam5OZ3haSlM2V3RvcFhUR21nWGFQZHByK2gwdWhIZGxSNU9sOUJYMHN2cFIraVg2QVAwZHd3TmhoV0R4NGhuS0JtYkdBY1laeGwzR0srWVRLWVowNHNaeDFRd056SHJtT2VaRDVsdlZWZ3F0aXA4RlpIS0NwVktsU2FWR3lvdlZLbXFwcXJlcWd0VjgxWExWSStwWGxOOXJrWlZNMVBqcVFuVWxxdFZxcDFRNjFNYlUyZXBPNmlIcW1lb2IxUS9wSDVaL1lrR1djTk13MDlEcEZHZ3NWL2p2TVlnQzJNWnMzZ3NJV3NOcTRaMWdUWEVKckhOMlh4MktydVkvUjI3aXoycXFhRTVRek5LTTFlelV2T1VaajhINDVoeCtKeDBUZ25uS0tlWDgzNkszaFR2S2VJcEc2WTBUTGt4WlZ4cnFwYVhsbGlyU0t0UnEwZnJ2VGF1N2FlZHByMUZ1MW43Z1E1Qngwb25YQ2RIWjQvT0JaM25VOWxUM2FjS3B4Wk5QVHIxcmk2cWE2VWJvYnRFZDc5dXArNllucjVlZ0o1TWI2ZmVlYjNuK2h4OUwvMVUvVzM2cC9WSERGZ0dzd3drQnRzTXpoZzh4VFZ4Ynp3ZEw4ZmI4VkZEWGNOQVE2VmhsV0dYNFlTUnVkRThvOVZHalVZUGpHbkdYT01rNDIzR2JjYWpKZ1ltSVNaTFRlcE43cHBTVGJtbUthWTdURHRNeDgzTXphTE4xcGsxbXoweDF6TG5tK2ViMTV2ZnQyQmFlRm9zdHFpMnVHVkpzdVJhcGxudXRyeHVoVm81V2FWWVZWcGRzMGF0bmEwbDFydXR1NmNScDdsT2swNnJudFpudzdEeHRzbTJxYmNac09YWUJ0dXV0bTIyZldGblloZG50OFd1dys2VHZaTjl1bjJOL1QwSERZZlpEcXNkV2gxK2M3UnlGRHBXT3Q2YXpwenVQMzNGOUpicEwyZFl6eERQMkRQanRoUExLY1JwblZPYjAwZG5GMmU1YzRQemlJdUpTNExMTHBjK0xwc2J4dDNJdmVSS2RQVnhYZUY2MHZXZG03T2J3dTJvMjYvdU51NXA3b2Zjbjh3MG55bWVXVE56ME1QSVErQlI1ZEUvQzUrVk1HdmZySDVQUTArQlo3WG5JeTlqTDVGWHJkZXd0NlYzcXZkaDd4Yys5ajV5bitNKzR6dzMzakxlV1YvTU44QzN5TGZMVDhOdm5sK0YzME4vSS85ay8zci8wUUNuZ0NVQlp3T0pnVUdCV3dMNytIcDhJYitPUHpyYlpmYXkyZTFCaktDNVFSVkJqNEt0Z3VYQnJTRm95T3lRclNIMzU1ak9rYzVwRG9WUWZ1alcwQWRoNW1HTHczNE1KNFdIaFZlR1A0NXdpRmdhMFRHWE5YZlIzRU56MzBUNlJKWkUzcHRuTVU4NXJ5MUtOU28rcWk1cVBObzN1alM2UDhZdVpsbk0xVmlkV0Vsc1N4dzVMaXF1Tm01c3Z0Lzg3Zk9INHAzaUMrTjdGNWd2eUYxd2VhSE93dlNGcHhhcExoSXNPcFpBVEloT09KVHdRUkFxcUJhTUpmSVRkeVdPQ25uQ0hjSm5JaS9STnRHSTJFTmNLaDVPOGtncVRYcVM3Skc4Tlhra3hUT2xMT1c1aENlcGtMeE1EVXpkbXpxZUZwcDJJRzB5UFRxOU1ZT1NrWkJ4UXFvaFRaTzJaK3BuNW1aMnk2eGxoYkwreFc2THR5OGVsUWZKYTdPUXJBVlpMUXEyUXFib1ZGb28xeW9Ic21kbFYyYS96WW5LT1phcm5pdk43Y3l6eXR1UU41enZuLy90RXNJUzRaSzJwWVpMVnkwZFdPYTlyR281c2p4eGVkc0s0eFVGSzRaV0Jxdzh1SXEyS20zVlQ2dnRWNWV1ZnIwbWVrMXJnVjdCeW9MQnRRRnI2d3RWQ3VXRmZldmMxKzFkVDFndldkKzFZZnFHblJzK0ZZbUtyaFRiRjVjVmY5Z28zSGpsRzRkdnlyK1ozSlMwcWF2RXVXVFBadEptNmViZUxaNWJEcGFxbCthWERtNE4yZHEwRGQ5V3RPMzE5a1hiTDVmTktOdTdnN1pEdWFPL1BMaThaYWZKenMwN1AxU2tWUFJVK2xRMjd0TGR0V0hYK0c3UjdodDd2UFkwN05YYlc3ejMvVDdKdnR0VkFWVk4xV2JWWmZ0Sis3UDNQNjZKcXVuNGx2dHRYYTFPYlhIdHh3UFNBLzBISXc2MjE3blUxUjNTUFZSU2o5WXI2MGNPeHgrKy9wM3ZkeTBOTmcxVmpaekc0aU53UkhuazZmY0ozL2NlRFRyYWRveDdyT0VIMHg5MkhXY2RMMnBDbXZLYVJwdFRtdnRiWWx1NlQ4dyswZGJxM25yOFI5c2ZENXcwUEZsNVN2TlV5V25hNllMVGsyZnl6NHlkbFoxOWZpNzUzR0Rib3JaNzUyUE8zMm9QYisrNkVIVGgwa1gvaStjN3ZEdk9YUEs0ZFBLeTIrVVRWN2hYbXE4NlgyM3FkT284L3BQVFQ4ZTduTHVhcnJsY2E3bnVlcjIxZTJiMzZSdWVOODdkOUwxNThSYi8xdFdlT1QzZHZmTjZiL2ZGOS9YZkZ0MStjaWY5enN1NzJYY243cTI4VDd4ZjlFRHRRZGxEM1lmVlAxdiszTmp2M0g5cXdIZWc4OUhjUi9jR2hZUFAvcEgxanc5REJZK1pqOHVHRFlicm5qZytPVG5pUDNMOTZmeW5RODlrenlhZUYvNmkvc3V1RnhZdmZ2alY2OWZPMFpqUm9aZnlsNU8vYlh5bC9lckE2eG12MjhiQ3hoNit5WGd6TVY3MFZ2dnR3WGZjZHgzdm85OFBUK1I4SUg4by8yajVzZlZUMEtmN2t4bVRrLzhFQTVqei9HTXpMZHNBQUFBZ1kwaFNUUUFBZWlVQUFJQ0RBQUQ1L3dBQWdPa0FBSFV3QUFEcVlBQUFPcGdBQUJkdmtsL0ZSZ0FBQStkSlJFRlVlTnJFbDA5b1hGVVV4bi8zdnZmbWp6T2RtWmNtY1Nha21VeUdxb1FvbEJRWE1WMkovN0R1bExZR0ZIRlJOMEowSVFoU1VBcDIyWTB1dEJaTHNhSllNR2hBVFYxSU54SnIxWkttTnFVWU01a1lrMmttTXpHWm1mZnZ1aGhKdFVMbWpRN05XYjUzM3prZjN6bmZkOTRWMDVsK2dNZUJWNEY3dVQxeENUZ0dqSXZwVFA5RHdGZHNUendzZ2VOc1h4eVhRSFliQVdSMXdBYUN2ajhSQXBUQ1c5L0FMWmZCZFJHQkFGb2lqZ2dHUWFsbUFOZzY0UG11cmV1NHhTSjJZWmxBdXBmb252c1F3U0J1Y1pYcTVTdTQrWG1NN2wySVVBaGMxMDlLVDIrbXVMMzRPekljb3V2WVVjeG5SekNTeWMzMzFhbkxGTjUrbDVWM1RpSVRjWFRUUlBrQUlhWXovU1VnMXVpZ1d5d1M2RTJUL1hvY3JhME5nSTN2dnNlYW5TUFkxMHQ0Y0E4QXhROCtJdmZjWWJRMkV4bUpOR3BKMlQ4RG1vNXlYYXo1QmZTTkNybkRMN0wyNVRtVVcwVnFJU0xEUS9TY1BvRTVjZ0NuVUNBLytqTEJ2dDJ0WTBEb09zN0tDZ2lKbm9oVCsyVVdveXVGQ0Jnb3k2R2F1MHBrWUMrN0o4OGp3eUZtOXU2ak5uTU52WDNubGd4SXZ3d294MEZMSkpBQkE3ZFVKdENiUnVnNmVBcWhhNFN6QTZ4UFhhRDQvbWtBWXZzZncxMWJiWmhYTnFWYXowTUVnOGhvQkx4YnhLTVVHaUhXdjUwRUlOaVhCdHdXQTVBU1pWa28yd1lwLytVUENoc3RHcTFqclZxK1V1ck5HSkN5TEZUTlFqa08wdk1RNFhDZENTbFJHeHNvUEJJSG53U2c4c09QQ0FJdEJBRFl1VGw2VHIwSG1rWis5QldrbEFqRFFGa1dYcVZLNnNnYlJQWTlnTE44ZzlMWk1mVE96aGExUUVyc1hJN0kwQkRtTTA5ampod2djdjhnVHVGR25lNVNtVUFtVGZMMTF3RElQZjhDenZJeVdteEhpeGh3WEpSdGt6eDZCSUMxTHliNDQ1dnpteExURWdtc3VYbFdUcDdDbXAyai9Obm5CUHF5TFhKQ0liRHplU0xEUTJUUGpRT0ttY0ZocWxQVEdMdTY2ek1nQkhnS1oya0o1WGtZcWVUbTBtb1FQcHhRS2J6YU91YWhBd0NVUGhsai9lSWtvY3pkTjZXb0ZFalFPdG9SUXR4ODFnb1ZlSlVLZ1ZRUHNmMlBBckI2OWxNRUJnamc3elVVQ05tY3FuME5vVnNxRSt5L0IvM09UcFJsVS9ucEVucmJ6bWIzL244SG9DcFZndGxNZmVWZStSbG5jUWtaRHJYc2w2Z3hBRnlNN3E2NkQ4d3Y0SzZ0MVhkQWk4SkhKZzh0WWRiYlVTaFFjOHJ3cTN2TEFQd3p0RFlUdmIwRFpWdXRBU0R2Q0FNUWZlUkI3anJ6TVhKSGRHdHRqWTJ6OHVFWmpNNVVLd0FvTU9ySGpHU1N4S0duR3Z2V2NvR2xFMjloa1ByL1JxUnFOWXgwRDNwSHUrKytPcjh0WXVjWDZuL0pQb3hveTBHVWtTaTFxOWVvWExqb0c0QVdqNk9aSnNxeEc0cEFiOVFHNWRobzhSaGFQTmJVZFBzb0RtQkk0UG8yM295dVMrQ2xiUVF3cWdNVHdCTi9YYzhIYmxQaEtlQk5ZT0xQQVFESXNYcWJzcVpLR3dBQUFBQkpSVTVFcmtKZ2dnPT0iLCJzdXBwb3J0ZWRFeHRlbnNpb25zIjpbeyJpZCI6ImhtYWMtc2VjcmV0IiwiZmFpbF9pZl91bmtub3duIjpmYWxzZX1dLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiJhYjMyZjBjNjIyMzlhZmJiYzQ3MGQyZWY0ZTI1NGRiNiIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlfSwibWF4TXNnU2l6ZSI6MjA0OCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6OCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjo5NiwidHJhbnNwb3J0cyI6WyJ1c2IiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fV19fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiTk9UX0ZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjMtMDItMjgifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIzLTAyLTI4In0seyJhYWd1aWQiOiI3NjBlZGEzNi0wMGFhLTRkMjktODU1Yi00MDEyYTE4MmNkZWIiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6Ijc2MGVkYTM2LTAwYWEtNGQyOS04NTViLTQwMTJhMTgyY2RlYiIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJTZWN1cml0eSBLZXkgTkZDIGJ5IFl1YmljbyBQcmV2aWV3In0sImRlc2NyaXB0aW9uIjoiU2VjdXJpdHkgS2V5IE5GQyBieSBZdWJpY28gUHJldmlldyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzIsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfSx7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDM4NHIxX2VjZHNhX3NoYTM4NF9yYXciLCJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyIsImVkMjU1MTlfZWRkc2Ffc2hhNTEyX3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURLakNDQWhLZ0F3SUJBZ0lVZWYrVnZIa2NUUW5FRCsrd0pNL0l4elNVTGswd0RRWUpLb1pJaHZjTkFRRUxCUUF3SmpFa01DSUdBMVVFQXd3YldYVmlhV052SURJd01qTWdSa2xFVHlCUWNtVjJhV1YzSUVOQk1CNFhEVEl6TURreU5URXhNekkwTVZvWERUSTBNVEl6TVRFeE16STBNVm93SmpFa01DSUdBMVVFQXd3YldYVmlhV052SURJd01qTWdSa2xFVHlCUWNtVjJhV1YzSUVOQk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBb3VGTVRPS2FFMFl0ZXhPb2lzU3hwK0ViaTVJQTRlc0VTY3gxNmx6UWRxVjYvZVo4Mkt0SmVOWEV1TmtCVlpEcGMzMmdTdHV4TEJIOG1nc29IQkZhaTJEa2pmQm41cWJ3Ui9jNStzbmx3WnZqZ1ZBMGh6S3c5Q3dBZUF3UkQ1a3JXdDg4L0NWeUNrTWNnTFNHd1pzL3JqN0YvTHMzRWJnN01xTGJiUUo5Q296YmJMZEpVWUlIY1BwU1pQdG9NclpiNEd2bmk2aVZTOVV2Q0tncHFjNkxHUm1vWUdHNFpSM2xHSi9YUVpmdStHZUpXNjdpaW1Nai95b1hPd3h1Y3hpdlpIRms2Y1FTZ3d1d2lvZU5tNHd2azgzTGhTdVdjdGYya0F5UWNaN2tVbnBOZWUrZDRNZ3JtR1U0WE1GTGlUZ3V0YUIrZTlWOGQ1SlRrVU9IaUx6dGtRSURBUUFCbzFBd1RqQWRCZ05WSFE0RUZnUVVNNVNCNWJIclYranBJT01kSmw3dTdiY25UWTh3SHdZRFZSMGpCQmd3Rm9BVU01U0I1YkhyVitqcElPTWRKbDd1N2JjblRZOHdEQVlEVlIwVEJBVXdBd0VCL3pBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQUNvd1IzS1RMZmlkSnlRRk5xRUZmVXJmWjlhYTllZ3BPUXROUkpkTFN0SjZ4dTJXZkx3dkc0b2pHSmxCS05uZmE1REljeVFZZi84cUo0ZWxpQVZlTlh1WW1lTW1nTmdaWnl1WTZHMXlXQ0QyVjNzRDZaNHVqM1NiYURPSGozZ0h2c3pnUWhyaFQxaC9wdUhRa242K2hZS0FwNzdrTTdJYzZBWi9SRmJqcG1MTGsyRDBzRTFselQvMDJpK0JoN004c21haURaOSsrSkd6eGVTdW44VzFIbGVaVW0ycUtHbVJhNFhQZHJ5VDd4NktHVUduVTRhM2JwVW1WZVk5clEvc2ZNZDVaVG9vKzN1bkZXRHpvVlYydk51OCsrVkxDOXpvNDBGYUtRTHI5VkFKREo0eUxFTlI3S3JtVjhMMGNDWEtKR1pXQVd0RzVSR1RtSEloZCtuQjQxZz09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWZDQVlBQUFDR1ZzK01BQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBSFlZQUFCMkdBVjJpRTRFQUFBYk5TVVJCVkZoSHBWZDdUTlYxRkQvM2Q1OXdlUVNJZ1M5QVFBWGNGTEFRWmk5ZnBlVnoxdFkvV1RacjVXeHBjN1c1a25MYTVqSTNaODVzclMybk0yc2p0V3daUzdJVUg0SDR4Q25FUXg0REFaRjc0Vjd1czg4NXY5L2xJbkJ2VkovQjRQdjludS81bnUvNW52TTU1NmZ6QS9RdjBIYi9JclgzVkZLUG80NWNubTRpblVJV1l3TEZSbVpRVXV3akZHL04xaVJIaDFFWjBOUlZSdWRxdDFCZCsyblNLeVMvT2h5czArbGszZS8za1E5cXZENFpVdGE0VlZTVXVZMGVpcHlpVGhBZm9jb09SVmdEdXV3M3FLUmlBZDNyYmNFdGpUallJb2Y2V2FIc0NtelZQV0NNeCtjZ2g4dExxV01LYU1Xc1VqTHFvMlJ0SklRMG9Pem1lcnBRdTRlc1pnc09Oa0d4SDdkMGtkdlRUMTdzNE9NVTdWSThaaGpnR2FNK0FxOWlFTnU4UGlmMXVkejA3TXd2S1dmOEdsVm9DRVkwNFBDNVdkVGFYWUZiUjh2TnZMNSszS2dmYjV4Tk15YTlSYW1KaXluYU1sR1RWdEZscjZiYTl1K3BxbkVYNHVNdVJSZ2pTWUVock43dXRGRmU2bHFhbDdOZmt3NWltQUdIeW5QcGJrOFZtWTB4c3RucHRsRkNWQ1l0elR1Qk44M1FwTUxqVHRldmRQelNVbko3ZThta2p4WjM5ZlhiS0RmbGRacWJ2VStUVWdHbkJWRjZmUTJpUEhnNFcxNlVXVXd2emJrMTZzTVpFK1BuMHB2ejdKU2V1QXllczhsY3BDbWFLdW8vcCtxV3IyVWN3SUFIV3J2UDBZRXpoWEF0TEFic3NIaHA3aUdhbXZ5aWpQOHJ5cXJYVVdYOVhvb3d4eUF1Zk5CcnA0M1BPQkZYWmxrZjhNRFJpcWNweW93QXdwdXoyeCtmV3Z6L0R0ZGU5c21zenlndGNSNkMxd2JkekJsNk9scTVXTllZNG9HYXRoSk1ya1RFeDBqQVJTSEFWcys1cllrUU5YYitRZ2ZQTHNRNmdYeUluc3JlUWZtcG03UlZGWWZMODZuMWZpVU9rWXZTaGtVUHh2YnVrem95NksxaWhNMWhvM1h6VzZFdlNmWEErZHBpV0dhV2QrZG9Yekx6bUd3S1lGTENBc1JBbFBCQWhNbENGWFU3dEJVVlByOEhnVmNKSFdxK0YwMHBscitETVRkclA0enZ4WTExa05NaHhUK1NlVEdnK2Q0VjVMUUppdHlVR0pOQjhWRlpzamdZQlpNL0lJL1hDVGtqMHF5RE9wRjJBVlExN0NJalVwL0RuVDFVa0w1RjVnZGorc1Mxd2cxZ0UzZ2lnbTYwZkNYelNuUFhieUFQYklYditJRHBFMTZUaGFISVM5c2t5aGxtTUU1RjNjZnFBS2hxMkMwRTVQSDFnWWFYYUxQRGtaRzBIREpPbktXSHA1MUkwejVTT3V4OGUxV0F1WnpkSFFyVGtwOFRtalhvSStsYTB3R1pzenVicWJPM2lmUTZBL1c3dlZTWXNWM21SMEpLd2tLYzRXSGlCa21SOEkzQ0NnSTg3b09MNHF6VDVQK1JVSkJlakVPZ0FQSzhoWVB6YXRNK2VJVHAySU85eVRRbWVyb21QUnh4MXF4QWNzaWxlL3ViU2VFYmNXUUdZRUNnaGNMWTJIeUtqb2dqSDI1aE1wanBVdjFPdWdsaTRlaDJlUncwTzMyYkpqa3l1Q2dOemcwdnpsWU1TaVNzMHVvbzRNRzdoTU9qQ0VhWDF5RkUwblN2akJ6dVRuRXBLODZaOElvcUZBSXVidzhrZzlBckVhUkVXU1pJK2pINFhicDZnOUU5RW5KVDNvYVJ6RE4rTVVKQlFESG41NmE4b1VtRUJ1c094QnMvTjUrdEpFYlBrQUZEajhVR3ZPcy9JV3ZjU2dsR0JodlM3L0ZUWWZwV0dZZERZOGZQQXhXU0EzNXNUQzRwNCtMbTRBYXFJb1BlUXRmdWZLNkpoMFpoeGxic1VYT1NtWE5pZkQ1WlRBa3lEb2ZiYmNjbHhuQThXTkFxeENiUk55a2hYeFFwYUR3NjdmWFVZYnNpRzBLaHR2Mm9lSXZoOHJoUU1ZT2NFQXFYRy9lSSt6bmdPYzV5eHI4cTgySUFNMWMvRkxGT3BscXU1ZUZRWHJNWnpHY1ZDalliTFdHNUk0QlQxZXVScmxieHROT3RNaXREREVoTFhJSXluQUF2dU9FV0UzWDNOZEFmdDk0VmdhRzQyWElRdDBaWDZQZUNFL3FRRmU5cks2SHg3WVU1MEt2SDdmVzRmUytxN0tLQkp4c2dnQlg1cFNBR2gxaklyVmg1elE2dzNSZmFhaEJYbS9hQ2JDWlRqQ1VGVVR5V1pxVzlwNjJNakpQWFZxT3JQZ01PNE52NzRHa2Yrb3dmdE5WQkRRbmpGSnFIU3cxN3BYdmhXVzVLWnFlL1E0OU4vVVNUQ0FWV29RWEZJSEJIWFhlM0ZQclVEc3VHRG10Ri9oSEtUSHBla3hoaUFPUEkrU0pxNlM2SEY0STlZV3prQkpUbzQ2aVVNeldwOFBpci9SaWR1THhLWXNTa3NWOHZMbE9RdmhHWDJZbFIwT0JoQmpDK3UvZ0VjdlkwQXBLN1lrNDFOeGpQU1FuV0ZIVEY2NlVyamdldkI4Q3U1YStsMnZZU1JQdHVWRG83M2hoZE1TSG5VWDd0VGpzVlpHeEFsL1dwdGlPSUVRMWduTDI5bVg2L3RSMXRtbGtZajhXNFgrQ1NqV2NVREdZMU5wUy9DN2hTS3FpTUxNL2wyUW1TV1o3M0RkeitnaW84QkNFTllQUTQ2cW5rendYVWJxdkJreGpVUXNXZlpGZ2J1bzNyQWYrd043ak9POTAreW54NFBpM0wrMG5ZTDFTY2hEVWdBUDRnUFYvN0lkMXErMUhTaG11R2tJcVdSUGd5eE1GcVA4SGZqVG5qWHdZNWJRZmJKY3Q2T0l6S2dNSG90Ri9IZTFlZ3NheEhTcUc2d2ZkbVE1eDhOeVRGRnFCY3AyaVNvd0hSM3lrNSszNmhGN3ZYQUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzFfUFJFIiwiRklET18yXzEiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwibGFyZ2VCbG9iS2V5IiwiY3JlZEJsb2IiLCJtaW5QaW5MZW5ndGgiXSwiYWFndWlkIjoiNzYwZWRhMzYwMGFhNGQyOTg1NWI0MDEyYTE4MmNkZWIiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJsYXJnZUJsb2JzIjp0cnVlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6dHJ1ZSwiYWx3YXlzVXYiOmZhbHNlfSwibWF4TXNnU2l6ZSI6MTI4MCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0Ijo4LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjEyOCwidHJhbnNwb3J0cyI6WyJuZmMiLCJ1c2IiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotOH0seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTM1fV0sIm1heFNlcmlhbGl6ZWRMYXJnZUJsb2JBcnJheSI6NDA5NiwibWluUElOTGVuZ3RoIjo0LCJmaXJtd2FyZVZlcnNpb24iOjMyOTQ3MiwibWF4Q3JlZEJsb2JMZW5ndGgiOjMyLCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6MSwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjEwMH19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0wNC0wNyJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjQtMDQtMDcifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyJhOTdiMzMxOWVlY2RiNTk5M2M0MTg0Mjc2NDQxYjA1OWI0ODUwNmYxIl0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbImE5N2IzMzE5ZWVjZGI1OTkzYzQxODQyNzY0NDFiMDU5YjQ4NTA2ZjEiXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlRydXN0S2V5IEczMTAgVTJGIEF1dGhlbnRpY2F0b3IifSwiZGVzY3JpcHRpb24iOiJUcnVzdEtleSBHMzEwIFUyRiBBdXRoZW50aWNhdG9yIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJyZW1vdGVfaGFuZGxlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjI1NiwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNwVENDQWtxZ0F3SUJBZ0lCQVRBS0JnZ3Foa2pPUFFRREFqQ0JyekVMTUFrR0ExVUVCaE1DUzFJeEVUQVBCZ05WQkFnTUNGTmxiM1ZzTFZOcE1STXdFUVlEVlFRSERBcEhZVzVuYm1GdExVZDFNUmN3RlFZRFZRUUtEQTVsVjBKTklFTnZMaXdnVEhSa0xqRWlNQ0FHQTFVRUN3d1pRWFYwYUdWdWRHbGpZWFJ2Y2lCQmRIUmxjM1JoZEdsdmJqRWNNQm9HQTFVRUF3d1RaVmRDVFNCRFFTQkRaWEowYVdacFkyRjBaVEVkTUJzR0NTcUdTSWIzRFFFSkFSWU9hVzVtYjBCbExYZGliUzVqYjIwd0hoY05NVGd3TnpBeU1EVXpNVE01V2hjTk1qTXdOekF4TURVek1UTTVXakNCcnpFTE1Ba0dBMVVFQmhNQ1MxSXhFVEFQQmdOVkJBZ01DRk5sYjNWc0xWTnBNUk13RVFZRFZRUUhEQXBIWVc1bmJtRnRMVWQxTVJjd0ZRWURWUVFLREE1bFYwSk5JRU52TGl3Z1RIUmtMakVpTUNBR0ExVUVDd3daUVhWMGFHVnVkR2xqWVhSdmNpQkJkSFJsYzNSaGRHbHZiakVjTUJvR0ExVUVBd3dUWlZkQ1RTQkRRU0JEWlhKMGFXWnBZMkYwWlRFZE1Cc0dDU3FHU0liM0RRRUpBUllPYVc1bWIwQmxMWGRpYlM1amIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUUlmcUhpc2kwb08vZXlPcVNhRHJyOWl0RzJJeW1Ca0huU0RHUUlJWW1UK3ZxQThBZ084MW1vbWMyTGQ1UEdwRU42bXVFNTR3UEhRanZjL3lDaWg4dTJvMVV3VXpBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQU1CMEdBMVVkRGdRV0JCUzNKL2Z4aUF2MjJpcmRCczk4U09EaEY3a1UvakFMQmdOVkhROEVCQU1DQVFZd0VRWUpZSVpJQVliNFFnRUJCQVFEQWdBSE1Bb0dDQ3FHU000OUJBTUNBMGtBTUVZQ0lRRGM0MUxGSzRMSkNCVTJWVktJejdaNnN4UGhVRWtoOG5MU0xLNklYZGtQNXdJaEFJZUtWT1pjaGFWTzVhRjdmYmRYb1NyY3l5MVlZZVVlUExvamNLSTlmWDg0IiwiTUlJQ2dqQ0NBaWlnQXdJQkFnSUJBVEFLQmdncWhrak9QUVFEQWpDQm5URUxNQWtHQTFVRUJoTUNTMUl4RGpBTUJnTlZCQWdNQlZObGIzVnNNUkF3RGdZRFZRUUhEQWRIWVc1bmJtRnRNUmN3RlFZRFZRUUtEQTVsVjBKTklFTnZMaXdnVEhSa0xqRVpNQmNHQTFVRUN3d1FRMlZ5ZEdsbWFXTmhkR1VnVlc1cGRERVpNQmNHQTFVRUF3d1FaVmRDVFNCRFpYSjBhV1pwWTJGMFpURWRNQnNHQ1NxR1NJYjNEUUVKQVJZT2FXNW1iMEJsTFhkaWJTNWpiMjB3SUJjTk1qTXdOekV4TURNME5qRTBXaGdQTWpBM016QTJNamd3TXpRMk1UUmFNSUdkTVFzd0NRWURWUVFHRXdKTFVqRU9NQXdHQTFVRUNBd0ZVMlZ2ZFd3eEVEQU9CZ05WQkFjTUIwZGhibWR1WVcweEZ6QVZCZ05WQkFvTURtVlhRazBnUTI4dUxDQk1kR1F1TVJrd0Z3WURWUVFMREJCRFpYSjBhV1pwWTJGMFpTQlZibWwwTVJrd0Z3WURWUVFEREJCbFYwSk5JRU5sY25ScFptbGpZWFJsTVIwd0d3WUpLb1pJaHZjTkFRa0JGZzVwYm1adlFHVXRkMkp0TG1OdmJUQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJBaCtvZUt5TFNnNzk3STZwSm9PdXYySzBiWWpLWUdRZWRJTVpBZ2hpWlA2K29Ed0NBN3pXYWlaell0M2s4YWtRM3FhNFRuakE4ZENPOXovSUtLSHk3YWpWVEJUTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0hRWURWUjBPQkJZRUZMY245L0dJQy9iYUt0MEd6M3hJNE9FWHVSVCtNQXNHQTFVZER3UUVBd0lCQmpBUkJnbGdoa2dCaHZoQ0FRRUVCQU1DQUFjd0NnWUlLb1pJemowRUF3SURTQUF3UlFJaEFOVm5KZGUvL3RCTHE4TUREaStTQWQ2VWRZSVpTbmc0UE1xbXlOcnZaajY0QWlBWDB4U3pBaEZhQ0NwL3VocFZnbmxGK1hCZ3J3QUlzb3RaR1RCNnJrQjMxQT09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQStnQUFBRXhDQVlBQUFEdkRZZ3FBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRW5RQUFCSjBBZDVtSDNnQUFGaWNTVVJCVkhoZTdkMEhlQlhGMnNEeE43M1FDVFZBNkZJRkZLa0NVdXlBRXVtS1lrRlViSUNDSWlLQ1VnUUU3TDBnZGxRc0tDcFNySWdnU0MraEpuUkNKNEgwYjJmdmVELzBraENTbmMyZWsvL3Z1WG1ZZDQ2WGtKTno5c3k3TS9OT1FKWkZBQUFBQUFCQWdRclVmd0lBQUFBQWdBSkVnZzRBQUFBQWdBZVFvQU1BQUFBQTRBRWs2QUFBQUFBQWVBQUpPZ0FBQUFBQUhrQ0NEZ0FBQUFDQUI1Q2dBd0FBQUFEZ0FTVG9BQUFBQUFCNEFBazZBQUFBQUFBZVFJSU9BQUFBQUlBSGtLQURBQUFBQU9BQkpPZ0FBQUFBQUhnQUNUb0FBQUFBQUI1QWdnNEFBQUFBZ0FlUW9BTUFBQUFBNEFFazZBQUFBQUFBZUVCQWxrVzNQU3N6TlZYU0R5VEtxYTFiNWRTYWRaSzZlNCtrSHo5bTk0bjMvL21BY1FFaG9SSmN1cFFFUjBWSldKVktFdDZndm9SWHJ5WkJwVXBKUUNEMzRRQUFBQUJmNE5rRVBTc2pRMDV0M2lLSFB2cEVqdit3UU5MMzdaT3MxRFQ5S0lDekNZeU1sTkFhMWFURU5aMmxaSmZPRWxxaHZQV09EOUNQQWdBQUFQQWF6eVhvS2pFL012YzdTWHh6aHB4YXNWTDNBc2lQZ05BUUtkcXh2WlM5WTRBVWFkSlk5d0lBQUFEd0VrOGw2TWQvKzEzMmpIdEtVdGF0MXowQW5GYTg2OVZTWWRnUUNhdFNSZmNBQUFBQThBSlBKT2daSjA3SW5vbFQ1UEFISDR0a1p1cGVBS1lFaElkTGhWRWpKS3BYZHdrSUR0YTlBQUFBQUFwU2dTZm9wN1pzbFIwREIwbnExdTI2QjRBckFnS2syQldYU3BYSkV5U29hRkhkQ1FBQUFLQ2dGR2lDZnVMUDVSSS9ZSkJrSERtaWV3QzRMYnhSUTZuMjVpc1NFaFdsZXdBQUFBQVVoQUpMMEU4c1hTWTdicmxETXBPU2RBK0FnaEphcTRiVS9PaGRDUzVkV3ZjQUFBQUFjRnVCSEpDc2xyWEgzM2t2eVRuZ0VhbWJ0OHIyZ1lNa2cvY2tBQUFBVUdCY1Q5RFRqeDZUN2JmZElSbUhEdXNlQUY1dzhzKy9aT2NqajBrV2hSb0JBQUNBQXVIcUVuZDF4bm44QXcvSnNTL202SjV6RnhnWklVR2xTa2xJamVvU1ZLSzQ3Z1VLT2V0dG5MNXZ2NlR0aUplTUkwY2xLeTFOUDNEdUtrNFlLMlg2OU5JUkFBQUFBTGU0bXFBZlhiaklMZ3AzemtlcEJRWksrUGtOSktwL1B5bld1cVVFbHlrakFVRkIra0VBZjh0TVRaWFVYYnZrNkxmejVORE05eVY5ejE3OVNPNEZsaXdoNS8zd0RVWGpBQUFBQUplNWxxQm5KQ1ZMM0ZYWFNGckNUdDJUTzZFMXEwdkZVU09rZU5zMmRxSU9JSGN5VDU2VWd4OThMUHVmZVY0eWp4M1h2YmxUb2x0WGlaazZ5YnBDQk9nZUFBQUFBS2E1bHZFZW1mUDF1U1huVm1KUW9tZXMxSjR6VzRwZjBvN2tIRGhIZ1JFUlV2YlcvbExMZWcrcG85VE94YkZ2djVkVDhRazZBZ0FBQU9BR1Y3SmV0ZXgyLy9NdjZTZ1hyR1E4YXRCQWlYbHF2QVNHaCt0T0FIa1JWcVd5ZllSYTVNVXRkYy9aWloxS2tmM1B2cUFqQUFBQUFHNXdKVUUvc1hpSnBPL2FvNk96Q0FpUTBqZjNrK2loOTdPOEZuQ0l1dEZWN2RVWHoya20vY1NDUlpKKzVLaU9BQUFBQUpqbXloNTBWYm45NkdkZjZDaG5Lb0dvK2ZIN0VoZ1dxbnZ5eWZyeHN0TFRKZjNFQ2NrNGZseXlVdk5lM1Jwd2l6cXRJTGhZTVh1WnVsMFEwYUdiVmFlMjc1RE5WMTRqV1NrcHVpZG5sWjZaSXFXdjZhSWpBQUFBQUNZWlQ5QlZjcnl1ZVJ2SlBIeEU5K1FnT0ZpcXozcFBpalpwckR2eUxubmRlamsyZjZFay9icFlVclpzbFl6RWcvb1J3SGNFeDFTUmlOcTFwR2lIZGxLc1kzc0pxMWhSUDVKMysxNTZWZlpQbXFxam5CVzlyS05VZi9WRkhRRUFBQUF3eVhpQ25yeG1yV3pwMmwxSE9TdmE4UktwL3ZyTGVaNHR6RHlWSWtlKy9VNFNYM3RUVXRadDBMMkFud2dNbEtLZDJrdVpXL3RMc1JiTjgvdytTVDk2VkRaMXZGSXlEaDNXUGRrTEtsNWM2djd4c3dTR2hla2VBQUFBQUtZWTM0T2UvTmRLM1RxNzBuMTY1UzNweU1xUzQ0dC9sN2pPM1dUWGtPRWs1L0JQbVpseVl0NEMyWDdETGJKdDRDQkp5V09WOWVBU0phVEV0VjExbEROMVZGdnF6bDA2QWdBQUFHQ1M4UVQ5NVByY0pjc0JrUkZTN0pLMk9zbzlWU0YrOThUSnN1T21BWks2ZFp2dUJmeVlTdFIvV0NpYnUxNG5oK2Q4WThmbnFrU1hxM1FyWjFscGFaTEMrd29BQUFCd2hka0VQU3RMMHJadTEwSE93aHZVbDhEUWN5c01wNHErYmIvakhqbjQ2cHYyWG5lZ01NazhkbHgyRGg0bWU2WStZNy9YemtWRXpSb1NXTFNvam5LV3NpZVhKekFBQUFBQXlCZWpDYnJhM3A2Um5LeWpuS216bXMrRlNzNjMzVHBRa2hiOXBIdUFRaWdqUXhKZmVNVmVSWEl1U1hwQVJJUUVsNDNTVWM3U2Q1T2dBd0FBQUc0d080T2VtU21adVR6T0thaENlZDA2TzdYc05uN1lDRG01YklYdUFRbzN0WXJrd0ZzemRIUjI2dWkyZ05EY0ZYN0wyTGRmdHdBQUFBQ1laSHdQdWduN1gzdFRUbnozZzQ0QUtQc21UWk9rRlgvcENBQUFBSUN2TVhyTW10b1h2cWxMcktSdWpOTTkyWXNhTkZDaWh3M1ZVZlpPYm9xVExWMnVzMmZSY3kwdzBONXZHMXdtU2dLalN1bE93S09zZDJUR3psMlNjZUtFWko1STBwMjVFMXFyaHRUKzhsTUpqSWpRUFdlV2xaRWhjWjFqSldYakp0MlR2WkxkdWtxVmFaTjFCQUFBQU1BVTMwclFyWC9xdHR2dWtCTUxjN252M0Q0M3VvT1VIWEN6aE5lcks4SEZpdWtIQUkvTHpKUzB3NGZseE85L3lJSG5YN0lTYWVzOWxKdTNha0NBbEI4eFRNcmRmcXZ1T0RNU2RBQUFBTUI3ZkdxSmU5S3ExYmxPemtOaXFrajFqMlpLOVZkZmtLTE5tNUdjdzdjRUJrcElWSlNVNm55VjFKNHpXeW8rT1ZvQ3dzUDFnem13a3ZqRWwxK1RqS1J6bTNrSEFBQUFVUEI4SjBHM0VvOERyNzZoZzV5Rm45OUFhczcrU0lwZTFGVDNBTDVMRlhRcmMzMGYrNFpUVU1rU3VqZDdHWWNPeXhGMVBqb0FBQUFBbitJekNYcjZrYU9TOU10dk9zcGVjTVh5VXUzMWx5V2tkR25kQS9pSElvM09sOHJQVGJWZTVFRzZKM3RIUHZ0Q3R3QUFBQUQ0Q3A5SjBKTldycExNWThkMWxJM0FRS2s0ZHJTRWxDdXJPd0QvVXJ6TnhWTHFoajQ2eWw3eW55c2s0L2dKSFFFQUFBRHdCYjZUb1AvMnUyNWxMN3hlSFNuUjRSSWRBZjZwN0lCYkpTQTRXRWZaeU1pUXBKVXJkUUFBQUFEQUYvaE1ncDY4YnAxdVphOUVsNnZ0L2JxQVB3dXJYRWtpV2pYWFVmWk9yVjZyV3dBQUFBQjhnVThrNkZrWm1aSzJhYk9Pc2xmc3NrNjZCZmkzWW0zYjZGYjJVdmZ2MXkwQUFBQUF2c0JIRXZSME8way9tN0FLRlhRTDhHK2gxYXZwVnZZeVQzRFVHZ0FBQU9CTGZHYUplNjRFNkQ4QmY4ZHJIUUFBQVBBNy9wV2dBd0FBQUFEZ28walFBUUFBQUFEd0FCSjBBQUFBQUFBOGdBUWRBQUFBQUFBUElFRUhBQUFBQU1BRFNOQUJBQUFBQVBBQUVuUUFBQUFBQUR5QUJCMEFBQUFBQUE4Z1FRY0FBQUFBd0FOSTBBRUFBQUFBOEFBU2RBQUFBQUFBUElBRUhRQUFBQUFBRHlCQkJ3QUFBQURBQTBqUUFRQUFBQUR3QUJKMEFBQUFBQUE4Z0FRZEFBQUFBQUFQSUVFSEFBQUFBTUFEU05BQkFBQUFBUEFBRW5RQUFBQUFBRHlBQkIwQUFBQUFBQThnUVFjQUFBQUF3QU5JMEFFQUFBQUE4QUFTZEFBQUFBQUFQSUFFSFFBQUFBQUFEeUJCQndBQUFBREFBMGpRQVFBQUFBRHdBQkowQUFBQUFBQThnQVFkQUFBQUFBQVBJRUVIQUFBQUFNQURTTkFCQUFBQUFQQUFFblFBQUFBQUFEeUFCQjBBQUFBQUFBOGdRUWNBQUFBQXdBTkkwQUVBQUFBQThBQVNkQUFBQUFBQVBJQUVIUUFBQUFBQUR5QkJCd0FBQUFEQUEwalFBUUFBQUFEd0FCSjBBQUFBQUFBOGdBUWRBQUFBQUFBUENNaXk2TGJqc3RMVFpWT1hXRW5kR0tkN3NoYzFhS0JFRHh1cW8zL0tURTJWRGEzYVM4YWhRN3JuekJxc1hTNkJrWkU2TWljMVBrRk9yZCtnSS9pejBKZ1lDYTlYUjBmZWNXVCtBa2tZTUVoSFoxYWlSNnpFVEo2Z28zL0t5c2lRdU02eGtySnhrKzdKWHNsdVhhWEt0TWs2QWdBQUFHQUtDWG9lSEp6NXZ1eCtiS3lPNE0raSt2ZVQ2TWNmMVpGM2tLQURBQUFBL29jbDdnQUFBQUFBZUFBSk9nQUFBQUFBSGtDQ0RnQUFBQUNBQjVDZ0F3QUFBQURnQVNUb0FBQUFBQUI0QUFrNkFBQUFBQUFlUUlJT0FBQUFBSUFIa0tBREFBQUFBT0FCSk9nQUFBQUFBSGdBQ1RvQUFBQUFBQjVBZ2c0QUFBQUFnQWVRb0FNQUFBQUE0QUVrNkFBQUFBQUFlQUFKT2dBQUFBQUFIa0NDRGdBQUFBQ0FCd1JrV1hUYmNWbnA2YktwUzZ5a2JvelRQZG1MR2pSUW9vY04xZEUvWmFhbXlvWlc3U1hqMENIZGMyWU4xaTZYd01oSUhabHpjdlVhT2Y3anp6cnl2dVEvVjhqeFJUL3B5Rm5sQjk4ckV1Uy85M2tpR3AwdnhkcTEwWkYzSEptL1FCSUdETkxSbVpYb0VTc3hreWZvNkoreU1qSWtybk9zcEd6Y3BIdXlWN0piVjZreWJiS09BQUFBQUpoQ2dsNElKTDQ1US9ZOGNlWkVMYjhheHEyUmdPQmdIY0V0L3B5Z1o2V2xTVmFtc2N0UzRSTWdFaGdTWXYxcE5RQUEvME9OTThXRmo1MkE0Q0FKQ0FyU1VjRno5Zk9XenlJZzEwalFDd0VTZFAvanp3bjZ0cUhENU5TS2xUcENmZ1dWS0M2MVBuNWZBa05EZFE4QTRIUngzZnRJK2xuR21FNG9QL3dCS1gzVkZUb3FXQmxKU2JMbHhsc2s0L0FSM1dOV1pJdG1FalArQ1FrSVpIY3RjRFlrNklVQUNici84ZWNFUGE3ZnpYSnk4UklkSWI5Q2ExU1h1dk8rMFJFQTROL1d0V3duNlFjTzZNaWM2RW5qcFV6M1dCMFZvTXhNMlQ1MG1Cejd5cDNQaHVBSzVhWDI3SThscEZ3NTNRTWdKOXpHQWdBL0ZsYXJwbTRCQUNDUytORXMxNUx6Z0xBd3FUSjFFc2s1Y0E1STBBSEFqNFdXTDY5YkFJRENMbm5kZXRrejdpa2RtVmR1eUwxU3JFVnpIUUhJRFJKMEFQQmpZWTBhNmhZQW9ERExPSDVjNGdjL0tGa25UK29lczRwZGNabVV1KzBXSFFISUxSSjBBUEJqNFRWcjZCWUFvTkRLeXBMZGs1NlcxQzFiZFlkWklaV2lwY3I0c1JTRkEvS0FkdzBBK0t1Z0lBbXJVRUVIQUlEQzZ2QTMzOHJoRHo3V2tWbUJrUkVTODhJekVseXlwTzRCY0M1STBBSEFUd1dWS2lXQnhZcnFDQUJRR0tYRXg4dXVrYVB0V1hUamdvS2t3cWhIcE1qNWJLOEM4b29FSFFEOFZGRFJJaElZRnFZakFEQXJNek5UVHA0OEtZY09IWkt0MjdiSjBxVkxKVFUxVlQrS2dwQjVLa1YyREg1UU1vOGYxejFtcWFOWnkvVHNyaU1BZVVHQ0RnQitLcVJ5SlFrSUN0SVJBT1NOU3J6VDB0SWtPVGxaRWhNVFpmUG16Yko0OFdKNTcvMzNaZHo0OFRKNHlCQzVOalpXYXRldEsrZlZxeWQxcks5NkRScEk2N1p0NWJoTGlTSE9RTzA3ZjJxeW5GcTVXbmVZRmQ2b29WUWVPMW9rSUVEM0FNZ0xFblFBOEZPaFZXTjBDd0J5cGhMd0F3Y095TnExYTJYMjdObnk0a3N2eVdPalIwdS9tMjZTaTl1MWs2Yk5tdGxKZDZXWUdLblhzS0cwNjlCQmJyNzFWbmw4N0ZoNXdmcHZ2NWs3VitMajQyWHYzcjF5NU9oUk82bEh3VHE2NkNjNS9QNUhPaklyc0doUmlaaytSUUxEdzNVUGdMd2lRUWNBUHhWS2dUZ0FPVGgyN0poY2V2bmxVcmQrZllrc1ZreWlxMVNSSmsyYlNxKytmZVgrSVVOa3dsTlB5VWNmZnl6TGxpMlQ5UnMyeU80OWUwaThmVVRxN2oyeWMvZ0l5VXBQMXowR0JRUkk5Sk9QUzNqVnFyb0RRSDZRb0FPQW53cS9vSkZ1QWNEL1V2dkRGLy8rdTJ6WjZzN1JXM0JIcHZWN2pYL29FY2s0ZEZqM0dHUWw1MUVEYnBiU1hUdnJEZ0Q1UllJT0FINHF2RW9WM1FJQUZCYjdYMzFka24vN1hVZG1SVjdVVkNvT0hhd2pBRTRnUVFjQVB4UVFFU0VoWmNycUNBQlFHQnhmc2xUMlAvZVNqc3dLcmxoQnFqNDNWUUpEUTNVUEFDZVFvQU9BSHdvdVgwNENRb0oxQkFEd2QrbEhqa2pDc0llc2h2bDk1d0doSVZKNThnUUpLY3VOWU1CcEpPZ0E0SWRDU3BhVWdFQXU4UUJRR0toaWNQSERINUgwWFh0MGoxbGw3cnBEaXJkcXFTTUFUbUwwQmdCK0tLUkdOYzZpQllCQzRzRGI3OGlKK1F0MVpGYlI5dTJrNHIyRGRBVEFhU1RvQUR3bHBGeFpDYTFTMmJXdmtJb1YzVWxrcmU4UlVpbjZqUDhHRTE4UjlldnJid3dBOEdkSksxZkp2cW5QNk1pc0VPdnpKV2JLUkc0QUF3WUZaRmwwMjNGcXVjMm1MckdTdWpGTzkyUXZhdEJBaVI0MlZFZi9wSTZMMk5DcXZXUWNPcVI3enF6QjJ1VVNHQm1wSS93dDhjMFpzdWVKQ1RweVZzTzROUklRekQ1WHR4Mlp2MEFTQnVSODk3cEVqMWlKbVh6bTMzdFdSb2JFZFk2VmxJMmJkRS8yU25icktsV21UZGFSL3prVkh5OXhsM1UyZmxac1lKRWlVbWZCZHhKU0prcjNBRURCU2t4TWxLbzFhdGpIclpteWQ5Y3VpWXJ5OW5WdlhjdDJrbjdnZ0k3TWlaNDBYc3AwajlXUk05S1BIWk80YmowbGJVZTg3akVuTUNKQ3FuL3dqaFE1djZIdUFXQUNNK2dBQUFDQUQ5cjF4SGhYa25NSkRKVHlqejVFY2c2NGdBUWRBQUFBOERFSFA1MHRSei83UWtkbWxlamFXY3IwNnFrakFDYVJvQU1BQUFBKzVHVGNadGt6WnB5T3pBcXJjNTVVR1RlR2swRUFsL0JPZzA5UjlRaTI5cnRaMWwzUXd2aFgzTFU5Sk9ORWt2N09BQUFBQlMvanhBbUp2LzhCeVV3eVAwWUpMRlpNWXA2Zlp1OC9CK0FPRW5UNGpxd3MyVGY5ZVVuNjlYZkpPSExVNkZkbThrbXBPSHFrQkJVdG9yODVBS0N3eU16TWxQVDA5RE4rWldSa1dCOUh4dXJyQWpuS3NsNmJ1eWRNeWxXUjEzd0xDcFRvTWFNa29rWU4zVkY0cWZkOFR0Y0Y5UmpnRktxNEZ3TCtVc1g5Mk0rL3lJNWI3eFRyU3FoN3pDbDcvOTFTWWZDOU92SWVxcmc3aHlydXZpOGxKVVhXcmwwcmY2MWNLZnYzNzVjRGlZbjZFWkd3MEZBcFdiS2tsQzFiVm1yWHJpMzE2dGIxZkVWcHVDY3BLVW0yYnQwcXExYXZsajE3OXNpMjdkdGw0OGFOY3VyVUtUbDU4dVFaQjkwUkVSRVNFaElpcFVxVmtnYjE2MHVsU3BXa2F0V3FkcnR5NWNvUzdFTW5tMURGL1Q5OHFZcjdrZSsrbC9oN2hxaTdTTHJIbk5MOSswbmxVWThVdWlQVjB0TFNKTjRhR3l4ZnNVSVNFaElrTGk1T05sbGY2cnFRbkp5cy82di9wOTd6WVdGaFVyeDRjV25Zb0lGOUhhaFdyWm8wYnRUSXZqNzQwalVCM2tDQ1hnajRRNEtldW51UGJMWmVTeG1IaitnZWN5SmJ0NVFhTTkvMDlGNHJFblRua0tEN3BxTkhqOHJjYjcrVkR6NzhVSDc4NlNjNzBjcXRPdWVkSjQ4LzlwajA2TkZEOTZBd1VNbjJ0bTNiWlBIdnY4dWlIMytVdi83NlMxYXVXcVVmZFVaNGVMZzBiOVpNTHJqZ0FtblZzcVcwYk5IQ0hxQjdGUW42Zi9oS2dwNlNzRlBpcnVrdW1jZU82UjV6SWk1c0lqVm52aTJCNFdHNngzK3AxNys2d2Z2TEw3L0kvQVVMNVBjbFMrU1lRODl4cEpXWHRHM1RSdHBmY29tMHNLNEh6UzY2eUw1T0FEa2hRUzhFZkQxQnoweEprYTNYOTVlVHkvL1NQZVlFbFMwanRiK2VMU0ZseStvZWJ5SkJkdzRKZXU3OGJpVTE2OWF2MTVFekxySUdLbzNPUDE5SHVYUEFHa1MvL09xck11WHBwODg0azVGYnN6NzZTTHBkZTYyT3p0MnNUejZSNDhlUDY4aDVWMTV4aFVSSFIrdklHWjk5OXBrY09YcFVSODY3eEJxQTF2VFlVbGkxSEgzVHBrM3kyZXpaOHNtbm44cjZEUnZzUHJjRUJRWFpONFI2OWV3cFYxMTVwVFJvME1DZWFUTnAxYXBWc3V6UFAzV1VzeE1uVHNoREkwYllTM1JOZVhyeVpDbGF0S2lPOHE1OCtmTFMrZXFyZGVRc1gwalFzOUxTWkhPL20rWGtzdVc2eDV6Z2NtV2wxdXhaRWxxaHZPN3hQK28xcjI3UWZXaDlGcno3M250eThPQkI0MXRYQWdJQ3BGaXhZdEtqZTNmcGQvMzEwcng1YytQWGd6TlJOeXMvLytJTE9YTEU3S1JYNmRLbDgvVTVtMWZxNTN0bjVzd3pyb0J5aXJySjBydFhML3NhYndJSmVpSGcwd202OWZMYzg4enprdmpzQzFaYjl4a1NZRjBrcTc3OW1oUnIyVnozZUJjSnVuTkkwSFBuL2lGRDVNV1hYdEtSTSs2NzV4NTVlc29VSGVWTURhWm16Wm9sUXg5OFVCS3RnVlIrcU9XR2YvN3hoOVN2WDEvM25CdjFzZG1vU1JQWnNIR2o3bkhldDk5OEk1MDZkdFNSTTVvMmEyWXY1VGJsbmJmZmxyNTkrdWlvWUtrVkZkOS8vNzFNc2w1ZmFoQ3VscXdXTkRXUVUwdGZCOXg2cS8wOHhjVEUyQU4ycDAyZE5zMU91djJOU21vK3NCSXBFenlmb0Z2WG5GMFRKc3ZCTjk3U0hlYW9NVjNWMTErUzRtM2I2Qjcvb203c2ZqOXZuancxYVpLcytPc3ZWMi9ZblU2OTk2dFhxeWFENzcvZlR2UlVNdXVtMndjT2xMZmZlVWRIWnFpYkVic1RFbHhmTWFDMkxkVS8vM3lqdjlzTzdkdkxkM1BuR3JtR0t4U0pnNmNkKzIyeEhIemhGZVBKdWZVT2t6S0RCdnBFY2c3NGk0U2RPM1VyWjRjUEg1YnJiN2hCYnI3dHRud241NHFhelZPSkV2eVBXcXI2M3Z2djJ6Y2pldlh0YTg4a2V5RTVWOVJnY2NlT0hUSnE5R2o3QnMrMXNiR3lkTm15QWtzUWZFM3JWcTEwcS9CUk5YZ096akNiVFAydHpGMjMrMlZ5cm03eWZ2bmxsOUtrYVZQcDJidTNmVzBveVBlZXV0RzdkZHMydVcvd1lLblhzS0U4UFhWcXZsYUZuYXRldlhycGxqbHFsWm1xRCtPMkpVdVdHUC9kOXJGZVE2YVNjNFVFSFo2VmRpQlJkajN3c1BHWlRTV3lXVk1wZjlkQUhRRnd3eHJyZy90c2k3alVudUcyN2R2TDdDKytjR3k1V3BreVpldzcrL0FmNm5YMDg4OC9TNXQyN2VUbVcyK1ZMVnUzNmtlOEtmbmtTYnVHZ3ZyM1huSFZWZllXRXVTc1JpR3RKSjY2Yjc4a0RIL0V5akROSjVORjJsNHNGZTY5VzBmK1EyM1B1cnBMRitsdUphWHFNOFZyRGgwNkpBOC84b2g5WS9HTEw3ODg2K2VpRXk2eHJqMnEwS1ZwYzcvN1RyZmNNMy9oUXQweVE2MEl1QzQyZjhVZXo0WUVIWjZrOWxvbFBQaVFwRnNmVEthcHZWWXh6MCtYZ0pBUTNRUEFEY2VPSHJVclpXZEhWYzd0ZU9tbGRsVnRKMTE0d1FWRzczekRYV29mOWRBSEhwRExycnpTWHJMcVM5Uk5KMVhrVU4yRTZ0NnpwMnpjNU1MUldUNUk3ZE5WVmZJTEc3WEZNK0hoUnlUandQK2ZUR0ZLY01VS0VqTjVvZ1FZMmxOYkVOU0ttc2xQUHkwdFdyV1NoWXNXNlY3djJyeGxpejI3MysrbW0reDZLeWFGaG9aS2Q4Tkpwcko0OFdMZGNvZTZwcW9pb0NhcG14dnFkQmlUU05EaFBWbFpzdStsVnlYcHAxOTFoemtxS2E4MGFaeUVsQzJqZXdDNDVkang0L2J5OVRQWnZYdTNYRzRsWER0MzdkSTl6aW1NQTMxL3BXYkQybmZzS00rLytLTFBMeFgvOHF1djVLTG16V1hzRTAvWU54M3cvMEtDZzZWQ2hRbzZLanoydi9HMk8yT2hpQWlwK3Z4MHZ4b0xxV01UdTE1empUd3ljcVI5UEpxdlVMUG5IOCthWmMrbS83RjBxZTQxNDdycnJqTitzMW90Y1RkNVNzUy9xYU15MVZZaWsyN3MxMCszekNGQmgrY2MvMzJKSkQ3L3NvN01paHB3aXhTL3BKMk9BTGhKelo2cnMyYi9UUlg0NnRXbmo1SGtYRkhWeHVIN2xscURWN1ZFM09tajBncVNTaVNlR0RkT1dsNThzYXhZc1VMM29tN2R1b1h1YUtyamZ5eVZBOU9mMDVGQmdZRlNZZmhRS2RLa3NlN3dmU3RYcnJTdkRRdDhZTlk4TzN2MjdyVnZVczk4OTExalM5NVZYUWQxREp4SnUzYnZOcDR3bjI3ZXZIbTZaVVpFUklSOXlvcHBKT2p3bExUOSt5WGgvZ2Z0SmU2bVJUUy9TQ29NdlU5SEFBcUN1dHQ5T3JVOGJjZ0REOGlTUC83UVBjNEtDdzB0dEh0Wi9ZazZyL2lLcTYrVy9TNVUzaTRJYWx0SDMzNzlYSjE1OHJLYU5XdnFWdUdRZnV5NDdCeitpQ3MxZUlwZmVabVU2WGU5am55ZldsTGR2bE1uaVU5STBEMitTOTJzSG5qbm5USnQrblFqU1hxUklrV2syelhYNk1pY2IxM2FoNjZlbzNrLy9LQWpNOVRwS2lWS2xOQ1JPU1RvOEF6MVFhUUtvYml4MXlvb3FyVEVUSjFrL0F4M0FEbjc3Vi83MDlUeE4yckd3SlN5WmN0S0tjTjd4MkRXK3ZYcjdSVVdKcytoOTRMSlR6MWw3eE9GU0xPTEx0SXQvNmVPUVUwWU9VclNFbkozeWtWK2hOYXVLVlVtanBPQVFQOUlCMzc4OFVlNXFrc1h2OW9pb3FyUGp4ZzVVcDU1OWxuZDR5eFZqZHkweFM0VndUeVZraUovR0xxNS83Y0J0OTJtVzJhUm9NTXo5ci8rcGlUOStJdU96TEgzblU4ZUw2R1ZvblVQZ0lKeStoTDNvMGVQMmtmT3FBR0pLZVhMbDdjTFRzRTNxV3JIc1QxNnlJRkU4emR5QzlLZEF3ZEtWeXZSd0g4MGJkcFV0L3hmNHJ2dnkvRnZ6TTg0QmhhSmxKanBVeVNvU0JIZDQ5dlVxcXR1M2J2YnM4NytScTBzRy9iUVEvTGVlKy9wSHVlMGJObFNpaGN2cmlNejFMRm5LVmJ5Yk5ybXVEalp1MitmanB5bnpxcHYxN2F0anN3aVFZY25uUGhqcWV5ZlBGMUhacFVlY0xPVTZOQmVSd0FLa3BvTi9kc2JiNzVwL0FpY3BoZGVTQVYzSDZXV0w2cUNUMXUyYk5FOS9ra1ZNWnd3ZnJ5T29QYWVWNnRhVlVmK0xYbk5XdGs3ZWFxT0RBb01rSXBqUmtsazNicTZ3N2R0Mzc1ZHV2Zm80ZmZGRmUrOCsyN0h0MytwYXVSWFgzV1Zqc3pZdDMrLzdMZStUUHRtN2x6ZE1rTXRiM2ZyaUZZU2RCUzQ5RU9ISkdISWNIV0xVUGVZRTltaW1WUWN3cjV6d0N2VUhtSzFWRGt4TVZIR2pCMnJlODFSeGFiZ214WXRXaVJ2elppaEkvK2s5b1MrL2VhYlVyUm9VZDJEa2lWS1NGUlVsSTc4Vi9xeFk3Smo4SU9TZGRKd3hmR0FBQ25kNzNxSjZuYXQ3dkJ0YXNhOGQ5KytkaExvNzFRUnlSdjY5Yk5YRWpuSmRGVnlOWHYrNysxc1RsT3JERXp1ZFZjMzl1KzQvWFlkbVVlQ2pnSmxuM2MrYklTazc5NmplOHdKS2xWS3FreWZ6SG5uZ0llbzVlejc5dTJUOTk1L1g1SnpPQlBkS2VyOFV2Z2U5VG9aTlhxMFBRanpWMm9BT09LaGg2UkpreWE2QjByNUNoWHN5c2wrTFN0TGRqMDVRZEsyL2JOb3Bnbmg5ZXRKOUVNUDJvbTZQeGo3NUpPeTNNVVRENEtDZ3V4aW8ycGxoL3BTVzZaQ3JIR2xXeXV6ZHNUSHk1MkRCamw2TFd6ZXJKbVVLV1AyaUwxdnYvMVd0OHc0ZXV5WXJEdHRSWjdUb2l0V2xHYlc4K1FXRW5RVXFQMXZ6WkFUQzM3VWtVSFdoVE42L0JnSkxZVG5xQUplcHFwVXI5K3dRVjU2MmZ6Umltb2dWYTFhTlIzQmw2aXE3YVlxKzN1Rk92Sm82SkFoT3NMZkdqZHFwRnYrNjlDWGMrVG9aMS9veUp5Z01sRlM5YVhuSk5CUGpxejcrZWVmWmVxMGFUb3lSeFZydk9MeXkrV0Y1NTZUWDMvNlNiWnQyU0o3ZCsyeXYvYnMzQ2tiMXE2VmIrYk1zVyt3MWE5WFQvKy96UG5LK2w1T3poYXJxdVFkREI4LytyTjFEYy9JeU5DUjg5VEpGMDZ2TERoZCsvYnRqUjlKZHpvU2RCU1lFMzhza3dOVG50R1JRVlp5WHZxMi9sTHl5c3QxQndBdmVmT3R0MlRMMXEwNk1xZHExYXF1ZnNEQ0dXcnYrYlBQUDY4ajg2cFVxU0kzMzNTVFBEMTVzc3l6QnNFYjE2MlRyWEZ4c20vM2J0bTBmcjJzVzcxYTVuLy92VHozekRNeWNzUUl1YVpyVjZsWHQ2NEU1K05Va0tqU3BlV2RHVFBzbVRqOFUrM2F0WFhMUDUzYXZrTjJqeDVyejZLYkZCQVNMSlVuUENGaGZsSWdWKzAzSHpCd29JN01VTFBpdlhyMnROL3pjNzc4VWdiZWZydGRzRkNkQnFLMm82Z3Z0U2M1SmlaR0x1M1VTY2FPR1NQTGx5MlQyWjkrS3VjM2JLai9GdWVwRlVYM0R4N3MySjU3OVhQZWNMM1pvL1pVWWMrOWUvZnF5SG5mV2Rka2s5eGMzcTZRb0tOQXBDVWVsSVQ3SDNEbnZQTUxtMGpGQjVtVkFMeHF6dGRmNjVaWmxhS2o4NVZFb1dBY1BIaFFmdnI1WngyWlU3MTZkWGx2NWt3N0lYL3QxVmZsdm52dmxmYVhYR0tmbTYrU2RsWEJWLzAzS21GczE2NmQzSG5ISGZMNDZOSHk2YXhac3VMUFAyVlhmTHg4L09HSDlrQzNTdVhLK20vTm5TbVRKa21NOVQzd3YveDVXMHBHY3JMRVcyT2h6T1BtaTV0RjNYYUxsT2pZUVVlK2I5S1VLYkxWWUZIUjRsYmlQWFBHREhuM25YZnNtN3U1cFpiQWQrbmNXUmIvK3F1ZDBKdXlmY2NPZWY2RkYzU1VmNWRZMXpwVk1NNlVaT3UxL3FkMW5UUkIzY1Q5NGd0eksxRFU3LzhpbDQ5NkpFR0g2N0l5TTJYWDZMR1N2dGZjVVFoL1U4dTVZcDZkS29FY3F3UVVlbTUvd01JWnExZXZ0by9nTStuaTFxM2xqOFdMN2RteXZNeGlxMEc1U3VCanUzV3ppN3l0VzdOR2ZscTRVSHIyNkhIV0k0eHU2TnRYYnJqaEJoM2xuN3B4c05NYXZPZm1hOVdLRmNiUFdsLzExMTluL042NS9WTDdZLzJSR2d2dGZtcUtuRnF6VnZlWVU2Uk5hNms0OUg0ZCtUNjFEOXZKNVBUZjFFcXJEOTkvWDNyMzZtWFBMdWVGMmxMMTdQVHBjdis5OStiNTd6aWJxZGJmNzlTMVVhMEd1TFJqUngyWk1YL0JBdDF5bHFvUWIvSjBqOHN2dmRUMTFVMGs2SEJkNHRzelhUbmpVNEtESkhyQ0V4SWFYVkYzQUNqTWF0ZXFwVnZ3SmFabnoxVmkvY0Y3N3prNmU2U0tSN1ZxMVVyZWYvZGRlM25zeFBIajdSVWMveDZvcTVuMnA1OSsydEVCdkVvdTFIbi91ZmxTUzNWTksyZDlqek45Nzl4K3Fac2YvdWpvRHd2azhBY2Y2OGljNEhMbEpHYnlSQW53bytkeGl2V2VVYWQvbURKNjFDaTU3TExMZEpSMzZyVTdmdHc0WTZ0QURoOCtMSysrOXBxTzhrZGRnOVFOU3BOKytmVlgzWExXWHl0WEdpMHlhN3JLL1ptUW9NTlZTU3RYeWI0cDVndDZLS1g2OXBhU25meG5PUmVBL0ZHenBQQTlKaXZ6S3BkYkEvR0tGYzNkeUZWSjVnTkRoOXF6Nm1yZnV0cXZxcWhLMEcrKy9ycTkveHlGUzhxdVhiSnp4Q2dSZzBXemxJQ3dNSWw1ZnFxRWxETi9JOFl0TzNmdWxMY05IcmZZb25semUzdUxVOVFLbFJlZmYxNGlEWjFFOEpwMURWRjcwcDJnYmtvVU1WaW5aYzNhdGZaTkJhY3RNRFF6cjZpdFI4MnQxNFRiU05EaG12UkRoeVhoM3FIbXovaTBoRGVvSjlHUFBxeHVDZW9lQUlXWldtNFljdzc3Q09FZGE5ZXQweTB6cXJ0VTJWL05iTjh4Y0tDOXJIelV5SkV5ZVBCZ2U5OG5DcGRNZmJ4czVwRWp1c2Vjd0tKRkpNelBUcTZZK2U2Nzlubmdwb3daUGRyeFdpV3Fic1d0dDl5aUkyZHQyNzVkRmk1Y3FLUDhLVnEwcUhUcDBrVkh6bE5IdzZscTdrNVMrODlORm9qcjJyVnJnYXppSVVHSEs3TFMweVhob1Vja0xXR243akZIZlNCVmVYNmFCQnJlVndlZ1lLZ2pZYTYrOGtvWi8rU1Q5cEUzQ2RZQTVlamh3M0xNK2pwNjZKQnMzN0pGZnJNR0FXci8zMTEzM0dHZks5M200b3Z0R1V2NG5zVEVSTjB5STgyRllxV25VM3M5SHhzMVNwNFlNOGJZM2xSNDEvNlhYNVBrSlV0MVpGYkd3VU95OC9FbjdmM3UvdURreVpQeW5NRzk1NjFhdHBTT2h2WmgzM1AzM2NiMk1iL2w0SW9DVlRmRHBDVkxsdWlXTS9iczJTTWJOMjNTa2JPQ0FnUGwrcjU5ZGVRdUVuUzRJdkhEaitYRS9FVTZNaWNnT0VncVRaNGc0WngxRFBpZHFLZ29lZnl4eCt3cTIxOTgvcmtNZS9CQmUrbFpoUW9WN09XREVkYVhtcVdzVkttU05Mdm9Jcm5yemp2bDJXZWVzWXQvZlRGN05za1F6aWh1ODJaN0ZzWnR2QjRMcCtBeVVicmxqdU56djVORG4zK3BJOS8ydy96NWN1REFBUjA1NzVhYmJ6YjJ2cXhtalVzYm5YKytqcHlsNm5Ra0pTWHBLSC9hdFcxcmY1YWFvdjZ0VGw1dmY3Y1NmcWVXK1A5YjVjcVZwZW1GRitySVhTVG9NQzU1elZyWk4yNlNXb2VpZTh3cHFmYWRYNUgvd2g0QXZFTU5sOVN4TlN1V0xaT1JqenhpSityblFnMjQxQkozK0NiVGlleUNoUXRsbThIam1vRFRSZlhzTHBITm11cklCZGJZYTgrVEV5VE5ZR0xybGxtelp1bVc4OVFLcTY0R2wzZXJaZExYeGNicXlGbjc5dTJUcFV1ZFdaVlJxbFFwdTJxNUtXb2ZlbXBxcW83eWI5RWljNU4vM2J0M0w3QWlsU1RvTUNyanhBbEpHRHBjc2d6dUYvcGJXUDI2RXYzSWNEV2EwejBBZkozNmNMei8vdnRsMWtjZkdTM2tCZTh5ZmN5V3FnWjlkZGV1a3BDUW9Ic0Fjd0tDZzZYU0U0OUxnSXZITm1VZVBTWTdSNDF4WmFMRWxKU1VGSm56elRjNmNsNHo2enBUcGt3WkhabHhtY0hFOStOUFB0R3QvT3ZWcTVkdU9lK0VsUmNzWDc1Y1IvbW5ickNhb0c3WTlML3BKaDI1andRZHhtUmxaTWpPa2FNbE5jN2MyWVIvQ3l4V1ZHSmVtQzZCNGVHNkI0QS9HSFRublRKcDRrVEhpL2JBZDFSem9iaWZPa08zV2N1VzhzR0hIem82dXdPY1NVVHRXbEwydnJ0MTVJN2o4K2JMUVI5ZTZ2N3JiNzhaUFZxdGsrRXp3Slc2ZGV2cWx2TlU4VFZWaE0wSjZsZzRWU3ZERkxWVndRbTdkdTgydHYrOFpxMWFjbDd0MmpweUh3azZ6TWpLa3NUM1A1UmpYNW03Mi9sZmdRRlNjZXhqN0RzSC9Fem5xNjZTeVpNbUdWL2lERzlyMUtpUmJwbDE4T0JCNlgvTExkSzBlWE9aOWNrbmN2VG9VZjBJNEx4eXQvYVhzTHAxZE9TT3ZlTW1TdXFldlRyeUxWOS8vYlZ1T1U5OXhuUm8zMTVINW9TSGg4djVEUnZxeUZtN3JXVDEwS0ZET3NvZmRUUmtHNFBIa3FyejBKM1loejUzN2x6ZGNsNzMyTmdDblJnZ1FZY1J5ZXMzeUw2SlU5elpkOTZ6dTVTK3RxdU9BUGlEMHFWTHl5c3Z2MXhnKzcvZ0hlcGNZcmR1MHFoQjQ0WU5HK1Q2ZnYya2JvTUdjdS85OTh1eVpjdnM1YldBazlTS3Y4cVR4a3VBaTZkTFpCdytJZ21QakxKWE9Qb1NWUVRzeDU5KzBwSHoxUEZpNmlnMDA5UjFyR0tGQ2pweTFyRmp4K3lDbDA3cDM3Ky9iamx2MDZaTmpxeFVNcmE4UFN4TWJyNzVaaDBWREJKME9DN2orSEZKdUdld1pDV2YxRDNtaE5hcUlaVkdqMlRmT2VCSDFDRG15YkZqN2J2NFFJMGExblUrT2xwSDdsSEh1NzM4eWl2U3FrMGJhZFNraVR3d2JKaGRpTW50WTluZ3Y0clVyeWVsKy9mVGtUdVNmdmxORHMzK1FrZStRUzF0WDc5K3ZZNmNwMDcvS0ZteXBJN01LbUh3KzZ4WnMwYTM4cS85SlpkSThlTEZkZVNzbmJ0MnlmYnQyM1dVTitxbTZkSmx5M1RrckFiMTZ4ZklaODdwU05EaHJLd3MyZlg0azVLNmJZZnVNRWZ0TzYvNjh2TVNhUEE0Q0FEdVUvdjBidXpuN3FBVjNxVUd6N0hkdXVtb1lHemR0azJlZmU0NWFkMjJyZFNvVlV2NjNYU1RmRHhybGwwOUdjZ3pOYU02K0Y0SnFScWpPMXlRbVdsWGRVL1pibjZjNWhTVnpLVWF2REdtOWhxSHVyU1NvVnpac3JybHZOOFdMOWF0L0ZPbnBiUnMwVUpIenB2NzdiZTZsVGZ4Q1FuNVR2S3owKzNhYXd0ODlSNEpPaHgxY05hbmNuUzJDMFZJckRkT3hkRWpKYnhtRGQwQndCK28yZk9IaHcrMzkrb0JmN3ZuN3JzOWMxVGVYaXNwLytqamorV0dHMitVS3RXcVNZdFdyV1RNMkxHeTZNY2ZqUmF4Z24reWw3cFBlTUxWbFlDWngwOUl3cU9qZldhcHV5cUFabExWR1BkdWtKUXJWMDYzbkxkbnp4N2R5ci9Bd0VDNXllQ044dnh1V2ZqaGh4OTB5MW1oSVNGR2wvZm5GZ2s2SEhOeTR5YlpNL3BKVi9hZGw0aTlSa3BmVjdBektnQ2NWN2xTSmZ2dU5YQzY2dFdyUzQvdTNYWGtIV3JQK3ZJVksrVEo4ZVBsOGl1dmxFcldRTDlYbno3eXNaWEFxOEd5RTRXUTRQK0t0V2d1cGE3dnJTTjNKQzllSWdkbXZxY2piMU9uTEpoVXFuUnAzZkp0Y1hGeHV1V01LNjY0d3RqS2dwVXJWK2E1dG9lNnJuNWo2TWk5cGsyYkdxc1RjQzVJME9HSWpLUWtpYi83Zm5mT082OTdubFIrWWpUN3pnRS8xS2QzYjN0Sk0zQTZ0Ykppek9qUlVxeFlNZDNqUFdyUWVQTGtTWm45K2VkeXcwMDNTZjJHRGVXS3E2NlN6ejc3akpsMW5GV0Z3ZmRLa09GenVQOXQvOVJuNUpRUExIVlhOOEZNZW52R0RLbGVxNVlyWDA5UG02YS9xL01PSGpva3B4d2NoNWNvVVVMYXRtbWpJMmVwbFVqcW1MUzhVTmZUUHcyOUpxNjk1aHI3ODZhZ2thQWozN0l5TS8rejczekxOdDFqVGtCRWhGUjU1bW5PT3dmOGtGcGFOdUMyMjNRRS9GUFZxbFhsaVRGalBERjR5bzBUU1VteWNORWk2WDM5OVZLdlFRTzd5TnlPSFR1WVZjY1poWlF1TFpXZWZGeXRMZFk5NW1VbUpjdk9oMGRLVm5xNjd2RWVWWlRSeWFYYlo2SVN2cDA3ZDdyeXBhcXRtNkxPUVZjM0NaMmlyclU5ZS9UUWtiUFU3MVVWM2N5THpaczN5NEVEQjNUa0hQWHozbUJkcjcyQUJCMzVkdmlMcitUb3A1L3J5Q0RyalZQeHNSRVNjWjc1b3pBQXVLOSsvZnAyRWdaazU0NkJBK1hxcTY3U2tlL1l0MysvWFdTdVZwMDYwdmVHRzJURlgzL3BSNEQvVjZKamV5bldxWU9PM0pHODlFODU4UDZIT3ZJZXRRejZGTWNjNWs1V2x1T25USmljVWY1cXpoemRPamZ6RE8wL3Y3aDFhNm5nZ2VYdENnazY4a1h0Tzk4OVlwUjlVVEN0ZUxldUV0VzdwNDRBK0p0T25UcHg3amx5RkJ3Y0xEUGVla3N1YU5KRTkvaWVUei83ekM0c3B4SjFkUjR3OExjQTYvcFhlZXhvQ1NybHpwRmZmOXMvYWFxYzNPVHMvbVducVBPeTg3cFh1YkRKeU14MGZJYStUSmt5Y3ZsbGwrbklXVXYrK0VNeThsQ284THZ2djljdFovWHQwMGUzQ2g0Sk92SWwvdDRoa3BXU3FpTnpRdXZVdGo2MEhyTm4wUUg0cCtzOTlPRUk3MUw3SXIvKzZpdHAwcml4N3ZFOWFwbjdKNTkrS2syYk43Y3J3Q2NuSit0SFVOaUZsQ3NyRlI1OVdFZnV5RHg1VWhJZWZGZ3lyV1RZYTFUQ2VmVG9VUjJoSVBUcDFVdTNuTFZ2NzE1NzJmKzVPSGp3b1B5NWZMbU9uQk1SRWVHcEFyVWs2TWlYTkpmT080OTVkcW9FRlMycWV3RDRtMHJSMFZLdlhqMGRBVGtyVzdhc3pQdnVPN244MGt0MWoyOVNCWjFVQmZpTDI3YTE5MVVDU3RRMTEwalJEdTEwNUk1VGE5ZkovbGRmMTVGM3FKdFoxRzBvV0IwN2RwU1FrQkFkT2Vla2RmMDcxKzArYTlhdWRYU2YvZC9hWEh5eDBTUHd6aFVKT2p5di9NTVBzdThjOEhOTm1qUXhNZ0NBL3lwWnNxUjg5dW1uTXVUKysrMHplMzJaR25TMnZlUVNtZnZ0dDdvSGhWcGdnRVNQR2lrQkxwLzlmK0RGVnlYWlN0UzlKTjFIem1yM1o5SFIwWEp4cTFZNmN0YlhYMyt0VzdtemFORWlJemRzYmpSNDVudGVrS0REODlKVTlVN3VuZ0orclJyRjRaQUhZVllDTSttcHAyVFdSeDlKbGNxVmRhOXZTang0VUhyMDZpWHZ2ZisrN2tGaEZsNDFSc29QRytMcTFyNnNsQlRaT2ZJeHlYSzQwRmgrc1AzREcvcjI3YXRiempyWDVlcno1OC9YTGVlb2JWT205dG5uRlFrNlBPL2dxMi9Lc1o5LzBSRUFBUDkwVGRldXN1cXZ2K3paZERYWThsV3FJTmFBZ1FObDFpZWY2QjRVWm1WdTZDdmhEZHpkK25OcTlWclorOEpMT2lwNHhkamVtR3RxSlZGa1pLU09uTldoZlh2N2hxalQxT3FoL2Z2MzZ5aG5pWW1Kc3ZUUFAzWGtISFhXZTFSVWxJNjhnUVFkK1JMWm9wbHVtWk9WbWlZN0h4d2hxYnZObm9NSkFQQmRSYTJCdkpwTi84c2F3UFh1MWN2WVFOVzA5UFIwdWYyT08yVDVpaFc2QjRWVllHaW9WSmswUVFMQzNWM3Fudmo2MjVLMGFyV09DcGFwSTc3OGtYcW0xRWtYSnFnalVCczJhS0FqNTZqbDZyOHRYcXlqbkMzKy9YZjcrdWkwL2pmZHBGdmVRWUtPZktreTlTa0pLbVArcmxQR2dVU0pIL3lBSnl1TUFnQzhvM0xseWpKenhneFp1WHk1M0h2UFBSSlZ1clIreEhja0pTVkovNXR2Wm5rdjdCbzhaVzYvVFVmdXlGSlYzWWMvWWxkM0wyaXFOZ24xU1hJbndPQU11cHFkdjdsL2Z4MDU2N2ZmZnRPdG5QMzAwMCs2NVp6eTVjckpwWjA2NmNnN1NOQ1JMeUhXQzd2S00xTWtJTVRNSGJ2VG5WeTZYUFk5KzRLT0FBQTRNelhyVnExYU5aazZaWXBzMnJCQjNucmpEV25Wc3FWUHpjWnQyTGhSSmt5Y3FDTVVXdFpydHZ5ZHQwdG9yWnE2d3gycGNadGw3NHN2NjZqZ3FJU3pTSkVpT2tKT1ZCSWRHaHFxSStkMXZ2cHFDVFB3OTZ1Wjhkd1VmdnMxbDRuOHVWRFYyOVhxSzY4aFFVZStGV3ZkU3FLc0R3ODNKTDc4dWh6NzFmazNLQURBUHhVdlhsejYzWENEL0xSb2tXeGN0MDRtakJ0bkQ4cE1ERFNkOXRJcnI4aStmZnQwaE1JcU1EeGNLazk0VWlRb1NQZTRRNDI1VGhnNGMvcGNxSDNQNFM1WHMvZFY1Y3FXTlpxZ3EycnVqUnMzMXBGelZxMWFaUjg1bVJONy8vbXlaVHB5VHUvZXZYWExXd0t5REI0dW1KV2VMcHU2eEVycXhqamRrNzJvUVFNbGV0aFFIZjJUV3RhOG9WVjd5VGgwU1BlY1dZTzF5eVhRUi9lY21aVDQ1Z3paODhRRUhUbXJZZHdhQ1FnT3RuL1gyMjY5UTVKKy9sVS9ZazV3dWJKUzY2dlBKTVQ2czdBNk1uK0JKQXdZcEtNeks5RWpWbUltbi9uM25wV1JJWEdkWXlWbDR5YmRrNzJTM2JwS2xXbVRkZVIvVHNYSFM5eGxuZTNYc0VtQlJZcEluUVhmU1lnTFcwSk11SC9JRUhueEpYT0ZnKzYrNnk2WlBtMmFqcnhOZld3MmF0TEVudUUwNWR0dnZwRk9IVHZxeUJsTm16V1RWYXZON1N0OTUrMjNwVytmUGpyeU52VTdQSGJzbUh3emQ2NHN0QkozdGNSeXk5YXRSdlkzNXRld0J4NlE4ZVBHNmNoWmF0QmJ0VVlOdXppZEtYdDM3ZkpjQWFaL1c5ZXluYVFmT0tBamM2SW5qWmN5M1dOMWRPNTJUWGhLRHI3K3RvN2NFVkkxUnM2Yk0xdUNDbWg4cmQ2VGRSczBrQjA3ZHVnZTU2blZOdTNhdHRXUjd6cXZkbTE1YVBod0habngwc3N2eTMyREIrdklPUXQvK0VIYXRHbWpvLy8xeWFlZlN0OGJidENSTTlTNTUxczJiWkx3OEhEZDR4MGs2SVdBR3dtNmtuYndvTVJkM1UweTlwdi9rSXRzM1ZKcXZQMmFCQlRTZlVrazZNNGhRYzhkRXZUL1I0SitacjZVb1ArYlNnTFVUTFZLMk5XWG1xbFJsWVVORHBGeVRjMWFxWmwvRTROSUV2VC84SlVFUGVQNGNkbDQ5YldTN25MUjNOTDkra3JseDBmWnkrMEx3aVVkT3VTNmtGaGVYSFhsbGZMbDU1L3JDRGxSMThWcU5XdEttc05IOFkxNDZDRVpPMmFNanY3WGdOdHZseGt6WitySUdYMTY5N2JybFhnUlM5emhtQkRyQTdqeWxJbXVMTUZLWHJ4RTlyN3dzaG9wNng0QUFQSkdWVDZ1VkttUzNENWdnTXorOUZQWnNIYXQvUHpqajNMWEhYZEkxWmdZWTVXUmMyUHYzcjJ5Y3RVcUhhRXdDeXBXVENvOWFTVXhnZTRPM3c5L09FdU8vMWx3UzkyYlhYU1JicG14ZXMwYXljakkwQkZ5VXJac1dXblpvb1dPbkpQVFBuUjFBM0h4a2lVNmNrNlA3dDExeTN0STBPR280bTB2bGpKM3ViQWYzWG9USDN6eFZUbit4MUxkQVFDQU0xVFJvQmJObTh1enp6d2o2NjFrL2FlRkMyWFFYWGNWU0VYNHpNeE0rZnJycjNXRXdrNk5zMHBjMDFsSDdsQXJ6SFlPZjBReWtncm1WSUhhdFd2cmxoa25UcHl3dDd6ZzdGU2h6V3U2ZHRXUmM5U0t0SlNVRkIzOTA1NDllMlRMbGkwNmNrYjU4dVh0bFJOZVJZSU94NVcvWjVCRU5EZDd0MVBKU2t1VG5mYzlJR2t1TEtrSEFCUk82b2luWnMyYXlUUFRwc25Xelp2bHBSZGVrTnExYXVsSDNiSGtqejkwQzRXZE9rb3IrdUZoRWhUbDdzMml0QjN4c252aTVBSlp1ZGpDd0l6dDZWUnl2aW51N050eDhSL1hYbnV0NHlkaXFKVkMyN2R2MTlFL3FUb2hUcTl3Nk5LNXM5R0NldmxGZ2c3SEJZYUZTc3d6VXlTb2JCbmRZMDY2bFp3bkRIdFlzdEpabWdRQU1Fc2QrVFRndHR0azVZb1Y4dVRZc1JJUkVhRWZNVXZ0aVdjSkx2NFdVcmFzUkk4ZTZmcFM5eU1mZnlMSGZqTzNGenc3MWF0Vk0zclVtbHFsOHNNUFArZ0laNk4rSDgyYk5kT1JjK1prczFMSTZSVkU2amk2M2oxNzZzaWJTTkJoUkdpRkNsTDU2WW4vTFNCblV0SlB2OHErNTEvVUVRQUFacWxaZFZVdCtmTlBQNVVpTGhTblZVWHNmSFVKcmhjcjQvdURrbGRlSWNVdWRiYVE1Tm5ZUzkySGpaRDB3NGQxanp2VWxwUDY5ZXJweUF5VkhIcWhLS1N2TUZFUTlFeUZBSk9Ta2h6ZmYxN1J5bEZhdDI2dEkyOGlRWWN4eGR0Y0xLWHZ1RTFIWmlXcS9laS9zd1FRQU9DZURoMDZ5UEJodzNSa2pwcmhVL3RrbmFhSzN6bTlWUFhmMk50clJrQlFrRlI2L0ZFSkxGRmM5N2dqZmQ5KzJUVitrcXRMM1lPc24vWFNUcDEwWk1aZksxZkt0bTNiZElTenVlTHl5eDB2bnJsOHhZci9PUTlkSFgrcEtzYzdxVnUzYnZiNStsNUdnZzV6ckEvOWl2ZmZJeEV0blY4RzgyLzJmdlFISG5MOXJpNEFtS0FTTWllcG1TR25qOFhCZndvbTNYYmJiY2FYdXF2ZjM3OEhyazVRZzFUVENickpJOXdLdTlEeTVhWDhnME4wNUo2am4zOHBSeGY5cUNOM1hISEZGYnBsaGxycDhaWkhqOXp5b2hvMWFrakRCZzEwNUF4MTFPV3UzYnQxOUIrTEZ5OTJkR1dEdXRuVHorSHoxRTBnUVlkUjZwenlLcE1uU2xDcGtyckhISFV1YU1KREk0MmZadzBBcGgwL2ZseTNuUEhKcDUvSytnMGJkQVFubFM1Vnl0NlQ2WXRNSitmS1pvZXJMK09meXZUcUtSRk5MOUNSU3pJelpkZGpZeVg5NkZIZFlaNDZWVUVkOFdYU2pIZmVzWmRVNCt6VVB1NGIrL1hUa1RQVVRaTGZmdnROUi84eFo4NGMzWEpHMWFwVnBkSDU1K3ZJdTBqUVlWeFk1VXBTYWVwVDluSXMwMDdNV3lENzMzaGJSd0RnbTV4YzBoY2ZIeS8zRFI2c0kvOXk4T0JCT1hDZ1lFL3lVQU5WdFNmZE5EWHo0N1R3OEhBSk5KeWtxMldyTUNjZ09FZ3FqMzlDQWlMQ2RZODcxS1RJemtkSDI4bTZHOVJ5Nmw2R0MzdXA0N3pHUHZHRWpncWUweXVwbkthT0tYTzZFdnJjYjcvVnJmL2NxUDdsWHdsN2ZsMTd6VFdlcnQ3K054SjB1S0xFSmUyazFLMDM2Y2lzQTFPbXkvSEZ6aGFVQUFBM3JYQW9xVkg3Zi92ZGVLTWtKaWJxSHYraGt2T3UxMTRyelZxMHNDc3dGK1JnMXZSdVhKV2NGeTl1WnE5eDQ4YU5kY3NNTlNORzhTMnpJbXJWbEhMM0RySzNGcnJwMkxmZnk1SDVDM1JrbnFxOGJYclZ4NnV2dlNacjE2M1RVY0ZRMjVIZWZmZGR1ZW5tbXoxZFpMRmF0V3BTdlhwMUhUbERGWXI3KzJkZXRXcVZveXNhMU0zVVcvcjMxNUcza2FEREhkWUZ0ZUtRK3lTOFNTUGRZYzUvcW93K0xPbUhqK2dlQUhDT0dpQ1dLbFZLUjJhb1k3WHltOVNrcEtUSUxiZmU2bmdGWEM5UU15dlh4c2JhejVQYXM5akZTdFQ3MzNLTDdQN1gva1UzcUwzaHBtK0FoQVFIUzRrU0pYVGtyTXFWS3VtV0djdisvTk0rNHhobWxlMS9vNFRWcTZNamwyUm15YTZSb3lYTnBWVXN6WnMzTjE3Ti9ZU1ZFS3FibWtkZFhMNy9OM1hOWDdseXBWeDYrZVZ5eTRBQjh2R3NXZkxzYzg5NTlnYVhXam5VNy9ycmRlUU1kZU4xMTY1ZGRsc2w2MDcrN09mVnJpMjFyUzlmUUlJTzF3UkdSRWpNYzFNbDBOQXN3T25TZCszNXovbm9IbDhlQk1BM21TNEt0bnJOR2xtN2RxMk96dDNKa3lmbFppczUvOUxoL1h0ZW9LcVo5KzdiVjViODhmOG5kNmd6d2ovODZDTnBmT0dGOHRTa1NVWXFubWZucDU5L05uNWpvRW1USnNhVzBWY3luS0NyMzhYalk4YmtlYUROTVcyNUV4Z2VMbFVtUEduWC9uRlR4c0ZEc3ZPeHNTcTcxRDNtcUpVa1ExellyclBHdXZiMjZ0UEg4Vm9nT1ZGSjZXMjMzeTR0TDc3NHY4ZU5xZmZNcU5HalpmNzgrWGJzUmRmRnhqcTYvVWJkOEZRMzlSU256NmJ2MHFXTDQ1WG5UU0ZCaDZ2Q0tsZVdTbE1tNk1pc0UvTVh5WUYzM3RNUkFEakgxR3ptNmNaUG5KaW5wRVlOOUdLN2Q3Y0x3L2tiTldEdWU4TU5NaStiZ2R1UkkwZmswY2Nla3pyMTY4dTA2ZE9OejJ5ci9lK0RoNWl2b24zaGhSZnFsdk5hdDJxbFcrYk1mTzg5ZWVPTk44N3A5YnhwMHlZWlBIU290R3Zmbmtyd3VSVFpvTDVFM2VMT2RzTFRIWjgzWHc1OThaV096RklKWWFYb2FCMlpzMkRoUW1uVHJwMnNXNzllOTVpeGRkczJHVFo4dU5ScjBFQm12dnZ1Lzl5UVVxOTl0VHBvKy9idHVzZGIxQkwzZW5YcjZzZ1ozOCtiWjIvUCt2SG5uM1dQTTI2em5rZGZRWUlPMTVXOHJKTkUzVGxBUjJidG56UlZrbGF0MWhFQU9NUHA0MlhPUkNYWUw3MzhjcTZUR2pYejhONzc3OHRGelp2TC9BWHU3UXQxaTFxeVAyRGdRUG4ydSs5MFQvWlVrYjNoRHo4c05Xdlh0Z3ZrTFYyNjFQRmo1clpaQStiT1hidmFBMnlUMUw1Sms4V3hhdFdxWlg4UGs5UnpmODk5OTltSnh1clZxOCtZY0t2WDcwWXJLWC9ublhma3lxdXZsa1lYWENBdnZQaWl2WTFCSlM3SWhZQUFxWEQvUFJKYXZhcnVjSWwxamRvejdpbEpkV0VyUTdGaXhlVFJrU04xWkpaS3psdTJibTJ2eWpuczRERythb1dUbWhWWEs0SHFOMndvMDU5OVZrN21jSXppL2dNSDVOcnJybk4xWlZCdXFaVTl2WHYxMHBFelZOMEtkYzEyc3E3SUJkYjFSQjBONXl0STBGRWdLZ3krVDhJYW1OMUhwR1JaRjhHRSt4N2dmSFFBamxMRmNVeFRpZm5RQng2UUlVT0gyck1uYWhuM3Y2aytkWGFzS2lqVXRGa3p1ZVcyMnlUeDRFSDlxUDlReVp2NjJUNmJQVnYzNUU2eTlSbWdibkswYmQ5ZTZqWm9JSTg5L3Jnc3N4SStOVHVUbDlVSmFzQ29LajFQZk9vcGFYTGhoYkxpcjcvMEkrWlVybHhaenJjRzhhYW9HYkNTSmMwZmhacGhQWGNmZlBpaE5HL1ZTaXJGeE5oSnVOcUcwY2RLVWxwZGZMRlVybHBWTHJDZTA5c0dEclJ2TUozK2VsZS9ON1UzRldlbmxycFhHamRXclFmWFBlN0lPSFJJZG80Y0xWa1o1cmNXWG4vOTlVYmZFNmRUeWJSYWxWTzNmbjE1Y1Bod1diNTgrVGtueXVxMXJGYnpxTzB3YWxWSW5YcjE1S291WGV6cjJabXU2MmV5YnQwNnVlT3V1enhaMlYwbDZFN2U1TnV3Y2FOODl2bm5lYnBHWjBkVmJ6ZDlJOUpKQWRZUDc5eFAveStxV05lbUxyR1N1akZPOTJRdmF0QkFpUjQyVkVmL2xKbWFLaHRhdGJmZi9EbHBzSGE1QkVaRzZnaC9TM3h6aHV4NXdzeXk4b1p4YXlRZ2ovczVUbTNiTGx1NlhpZVpTY202eDV5aVYxNG0xWjZmN3NwUmIyNVFWVk1UQmd6UzBabVY2QkVyTVpQUC9IdlBzajRRNGpySFNzckdUYm9uZXlXN2RaVXEweWJyeVArY2lvK1h1TXM2R3o4L1A3QklFYW16NERzSktST2xlM3pML1VPR3lJc3Z2YVFqNTkxdERUeW1UNXVtSSsvN2ErVkthZDZ5cGFNRGlKeW80N0JxV0ltVU9ndjQ3MlJLTGVmK2Zja1MyYmxybDZ0N0piUHp6dHR2Uzk4K2ZYVGtIRFZ6cmhJNXA1YnNxeUovWmFLaTdKc3NIVHQwa1BQUFA5OHVQRlc2ZEdtN1VycmFUNm0rMU1CWmZhbVpNMVdJN3BkZmZwSHZ2djllL3N6REFEMC9IbjNrRVJsdEpRZ21YZHV0bTN4ejJ2RkdYalQ0dnZ0azhxUkpPbkxXdXBidEpOMkZRbWZSazhaTG1lNnhPakxJdWk0bFBEWkdEci8va2U1d2lmWGVxdlRVT0lseTRXZjgyWG8vcW1KcUJaR3dsaTlmM2k0NDFySkZDNmxRc2FKOWJWYlhqckRRVUVtM3JobHFtYnE2cWFxS0k4YkZ4Y212aXhmTGdmMzc1ZWl4WS9wdnlMdW5Ka3lRb1M1c3F6a1g2bmZRdWswYis5cm9sTCt2d1U1UTEveTFxMWI1VElFNGhSbDBGSmp3NnRVazJycVFpd3QzdEU1OE8wOE96SmlwSXdESUh6VTRpN0NTWnJlb0dXUzEzUEt0R1ROazJqUFAyRitxdlg3REJrOGs1NmFvZ2E3YTQrM2tmbnAxVStWQVlxSzlkUHFweVpPbDMwMDN5WVhObWttMW1qV2xkTm15VXJWR0RYdlphWXlWd0t1NDVubm4yZnVnSDNuMFVmbnhwNTljVGM3VlRZTjc3N2xIUitiME1YQmp4V2t2dmZLS2JMS1NIZVNDV3VvKytGNEpLbGRXZDdqRWVtL3RuVGhaVXZmdDB4M21YTnk2ZFlFZG1hVldMYWtiQkpPZmZsb2VlUEJCdStaSHA4c3VremFYWENMdE8zYTBieHlvN1RocTVuM0d6Sm15ZWZObVI1SnpaZlRqajl2NzQ3MUV6VXgzNjlaTlI4NXdLamxYTG1qU3hLZVNjNFVFSFFXcTFGVlhTS20renU1ZHljNyt5ZE1sZVczQm5tMEp3RDlFUmtaS2h3NGRkQVFUVkhKKy8rREI4dnFiYitvZWQ2aVZDZkVKQ1k0TnFQTmowSjEzMmttNmFaZDI2aVRGaXhYVGtUZXBsUlFQUGZ5d2E2dFdmRjFJVkpSVUdqUEtsVW1RMDJVY09pd0p3eDh4dnlyTitybWVuakxGOFFKbFhuZktlaC9jMUwrLzdOaXhRL2Q0dzVXWFgyN1BWSHZSRFE0ZkJlY0dFblFVTE9zQ0d6MXFoSVNmYjc3Z1V0YXBVNUp3NzFESk9PNjlJaHNBZkUvUEhqMTBDMDVUU3lZZkhEWk1YbjM5ZGQxVCtEU29YMThlZnVnaEhabFZwa3dadWV5eXkzVGtYVjkvODQwcyt2RkhIZUZzU2x6YVNZcGQza2xIN2tuNmRiRWNuR1grRklraVJZckl6Qmt6N01KeGhjbSsvZnZ0V1hzdnJaNXExS2lSSjR1d2hZYUdTdGV1WFhYa08walFVZUFDdzhJazVvVm5KTEJZVWQxalR1cTI3Wkx3MEVoN0R6WUE1SWVhZFZRRFJEaExMVzE4Y3R3NGVmSGxsM1ZQNGFNR2xhOWFQMytZOWZub0JqWHo5Y2pERHp0Nm5yRUphdlo4K0VNUGNleGFMZ1VFQmtybHNhTWxLTXI4S294L3NINVBlOFpQa2xNNzRuV0hPWTBiTjVZM1gzL2RmczhVSnF2WHJKRkI5OXpqNkZMdy9GQXJHa3pVSU1tdnBoZGVLTldxdW55cWdRTkkwT0VKWVZVcVMvU1RqOXN6NnFZZC8yNmVIUHp3WXgwQlFONm9Ra0d4RHUrN015MHFLa291YWRkT1I5NmpFckJKa3lmTHVBa1RDdTFTWnBVa1B6TnRtalJ2M2x6M3VFTVZ5K3ZhcFl1T3ZFc1ZhSHhuSmpWbGNrc3RkYS93MElQMnZuUTNaU1VueTg3aEl5VExoU0p1cWtMMytDZWY5T3dTYTFNKy9PZ2ptZkwwMHpvcWVGMDdkN1lUZFMvcGYrT05Qdm02SUVHSFo1VHEybGxLOXJwT1J3WlpIeFo3eDArUzVIWHJkUWNBNU0yd0J4N3dtWmtiOWU5ODdlV1g3VXJ3WHFVR1VsMnNRVjZ0bWpWMVQrR2lCcmNQRHg4dXQ5MTZxKzV4ajNydXh6Nyt1R3V6OXZueHhMaHhkcTBBNUU1VTdMVlNwTzNGT25KUDhyTGxjdUN0R1RveVI3MTJWVEhGeHcyZmR1QkZVNmRQOTh3UmhPb21YNlhvYUIwVnZLSkZpOHBWVjEybEk5OUNnZzd2c0M2dzBTTkhTRmdkODVVV3M1SlBTdnhkOTBtR0gxYy9CbUJldlhyMTdEdjB2a0FOWHRWZXZKaVlHTjNqVFdxUTkvdml4ZmJadW9WcFJpdzRPRmhHUFBTUVBEWnFWSUg5M09yMXJJNTE4L3J6dm52M2Joay9jYUtPY0ZhQmdWSnA5RWdKaUlqUUhlN1ovK3lMa2hKdmZxbTd1cmsxNHVHSDVaV1hYcExJQXZnNUM0SmF2cjF3L254N1paUVhoSVNFeUkzOSt1bW80RjNVdEtsVXJGaFJSNzZGQkIyZUVsUzBpTVM4K0t3RUZqZGY4Q010UGtGMmpoeHQ3NVVDZ0x4UWljeVRUendoVlNwWDFqM2VvLzZOSTBlTWtBY2ZlTUNPNjV4M252Mm5seFVyV3RRdS92VEJ1KzlLeFFvVmRLLy9VdWZjUHp0OXVuM2VlVUV2RVgxZzZGRHAwTDY5anJ6clJTc1IyN2h4bzQ1d051SFZxa241WVVQc3lSQTNaWjQ0SWZGRGgwdW1DM1VEMUxYdTFsdHVrZG1mZlNabHk3cDh4SnlMU3BRb0lVK09IU3MvTFZvazlldlYwNzNlY0Yxc3JHZHFXVnpmdDYvbmJ6Wm1od1FkbmhOZW83cFVmTUpLbkYwWXBCeWJNMWNTUC9oSVJ3Qnc3dFF4V0srLytxb25sN3FyV1ZrMUkzcjZyR3k1Y3VYc1A3MU8vWHU3ZCs4dWZ5NWRLamYxNitjVFM2L3pvbXJWcXZMTm5EbHkrNEFCbmhoTXFsbXc5MmJPbEVibm42OTd2TWsrZG0zRWlFSmJxeUF2eXZUcExlRU42K3ZJUFNmL1dpVUgzbnBIUitaMTdOQkJmdi8xVi91c2RGOU4wTTVFSmI2WFhYcXAvUG5ISC9MUThPR2UvTXhScTNDOE1HdXRLdnVyMmdTK2lnUWRubFNxeTlWU3NxY0wrOUd0RC9aOTQ1NlNrM0diZFFjQW5MdU9IVHZLMUNsVENuejI4M1JxbWVjTHp6NHJqNDRjK1k5L1Y2bFNwWHhxMEtwbXdsNS83VFg1K2NjZnBYV3JWcDU2anZOREpjSzM5Tzh2UzM3N1RkcTJhYU43dlVFZHUvYkY3Tm1lVDlMVnNXdno1czNURWM0bU1DeFVxancxWGdMY3Z0bGxqYlVPUFArU3EyTXR0WlhudTdselpkd1RUOWg3a1gyWnVsNDNhTkJBdnZqc001bno1WmYyVFQydlVqY05lbmJ2cnFPQ282NnA2clBPVjVHZ3c1UFUwU0RxZlBTd3V1YVhZbWFxL2VpRDdwZU1wR1RkQXdEbmJ1RHR0OXVWaEwyUVFLb2w5M08rK2twdXZmWFcvL24zcUprRlZZSGVsNmdCNmdWTm1zaUNIMzZRTDYzRVVTWHF2a3p0amZ6ZVNoNWVlZmxseit3Zi9iZksxbXRJSlRocU50S0wxR3RDblVoUXljUGJTN3dvNHJ6YVVtYWcrMFVJTTVPVEpXSFl3NUtabHFaN3pGT3Jib1k5K0tEOHNYaXhkTHZtR3ArY1RhOWJwNDY4L2NZYjlvMjhLNjY0d2lkdVVIcmh1RFZmcjJGQ2dnN1BDaXBTUktwTW15eUJMcHd6bkxwNWkreDZiSXhkNFIwQThrSU5CdFQrM2JkZWY5M2VRMTBRMUwraDMvWFgyOHZDczV1VlZUTWNCZlh2eXkrMXhGTU5VaGN0V0NBTDVzMlRYajE3K3N4WjlPcDNveEx6OTk5OVYzNzkrV2RwWS8xK3ZENkFWRFBwYXNaT0ZhOEw5OUFXQTFVYzY0UDMzcFB2di8xV0d0UjNmOG0yVDdOZWMrWHZ1bFBDckVUZGJhZFdyNVY5ejcyb0kvZlVybDFiWm4zOHNmeTRjS0ZjY2ZubG5qL3ZYMUhMOHo5OC8zMVo4ZWVmY3IxMVRmZWxMVDVxbVh2MTZ0VjE1TDdpeFl2N3hKR1JPU0ZCaDZkRjFLMGpGY2VPc2w2cDVsK3FSei8vU2c3Ty9rSkhBSkEzYWpDMWRNa1NWODhiVjN2TjI3VnRLejh2V2lSdnZ2Rkdqa3Y3MU5KcU5ZdnV5MVJpMjliNmVkVmU2YTF4Y2ZMVXhJbHk0UVVYMk0rRDE2aUNUajJ1dTA1K1hMREFUc3g3OXVqaFU4djAxZXRsN0pneHNtVHhZdW5Vc1dPQlBjZXFrSjc2L3A5OThvbjlQSGEzbmxOLzJlN2dOclhVdmRLNE1lckNvWHZjay9qcUc1Szh2bUNPdVczVnNxVjg5Y1VYc2x6WHRTampzZFVyYXUrMk9tTHhMeXNwVjZ1RjFHdmNpOWUwczFIdjFkaHUzWFRrUG5XZDhQblB1Q3lEMVRXeTB0TmxVNWRZU2QwWXAzdXlGelZvb0VRUEc2cWpmMUtWSHplMGFpOFpodzdwbmpOcnNIYTVCRVpHNmdoL1MzeHpodXg1WW9LT25OVXdibzBFR0w1NFpHVm1Tc0tJUitYb3g1L3BIbk1DcklGSXphOCtrWWc2ZFhTUE54Mlp2MEFTQmd6UzBabVY2QkVyTVpQUC9IdlB5c2lRdU02eGtySnhrKzdKWHNsdVhlMlZEUDRxN2NBQjJUVnVvdldjbUYwOVlRK0lIbnRVZ2wwNG9jQ0VHZSs4SS9Pc0FZTXBsM2JxSkRmMzc2OGovNUJodmMrK21qTkh4b3dkSytzM2JMQmpweFd4UHZOVW92ckl3dzlMOCtiTmN6MHpwQ3BnLzJZbFhFNGFkT2VkMHJwMWF4MjVUejIvTytMajVRdHJBUDY1OWJWMjNUbzVldlNvZnRROTZ1WkJ5WklscGRsRkY5bUplVGRyb09yTGV5RlBsMmw5SHE5WXNjSSs0bXpCd29WeTRzUUovWWdaYXRhd1JvMGE5cDdXL2pmZFpDKzdONUdVSjR3Y0xlbkhqdW5JbktqciswanhWaTEwVlBEMnYvbTJKSzFZcVNQM2hKOVhXeXJlYzVjOW0xK1ExUFZoN3R5NU1tUG1UUGx6K1hJNWZQaXdmc1FkNm5xdGlveDJ1T1FTT3pGdjJiS2xSUHBKSHFNKzg4YU5INitqLzNVeU9WbSt0cDU3RTUrTDZzYXRXbDNseTBqUUN3RmZUOUNWRE91RGMvTjF2U1YxeXpiZFkwNVk3VnBTNjh0UEpEQThYUGQ0RHdrNjREdlMwdExrajZWTDVaVlhYcEc1MzM0cng2MmtKcStEa2tCclFLdG1ORlV5cmdZZ25hKysyazVhdkw1VTJtMXFhSFB3NEVGWnZYcTFmUHZkZC9iZ2U4a2ZmMGk2TlM1UlgwNVNNMXhxb0swUzhoYlc3K1ZxNjNlaWlxdXBKTjJmcWJQSXY3RUcyTE0rK2NSK2JrK2VQR2tuOFBtaFh0dHF4VUZySzFGUlMxVGJ0V3RuRjhUeWhTWEo4RzFIamh5eHJ4T3E4T0RpeFl0bDlabzE5clhDeVFSU1hTdlVsaHgxcmJqOHNzdWtmZnYyOWg3emlFSnlidnZwUHBzOVczcjM3YXNqNTZqbmQxZDh2TTlzZmNvT0NYb2g0QThKdXBLOGJyMXM3WG1EWkNXYkwrWldzbmNQcVRMaGlRSy91NXNkRW5UQU41MDZkVXJXV0FNL2xiRC8vdnZ2RXArUUlJbFdJaGx2RFNoVWduTTZ0ZiszZkxseWRoRXhWZlN0V2JObTByQmhRMm5jcUpIZkozOG1wRnBqaVowN2Q4cWF0V3Z0UHpmRnhjbldyVnZ0Z2JtYVNVdEtTckpuNE05RS9RNmlTcGUybjNlMXY3R2FsVFRXcTF0WHFzVEUyTCtUeXBVcUZjcEI5dC9VYzdmV2VsNVhybG9sNjlldnQyZlAxR3lrZWw2M2JOa2kveDVvVm9xT3RtY08xWmM2NS82Q0N5NlFtalZyU2lQcnRSMVRwUW9KT1FxY1doMnliZHMyZXlXT3VsNm9tMURIamgyenY5UTFZL2VlUFpKOGh2R29TZ3lqSzFhMGJ6U3A2NFc2Z2FwdTJLbXE4dWRiMTRvcTF1dGIzWWdxek5SblhZdldyZTFyaGRQNjNYQ0R2UFhHR3pyeVhTVG9oWUMvSk9pS09yTjh6eU9qZFdSV3BXY21TK2xydXVySVcwalFBZjl4dG85aFpzZk55KzFRaU4vRnVjbnBlZVc1aEsvS3pmV0MxM2YyWG52OWRSbDB6ejA2Y282NnNmZkRkOS9aQlRoOUhRbDZJWEJrOWhkeTRPWFhkZVNzV2w5L2JpWG9MdDdwdGw2dXU2YzlLeW1ienY2YXlxL0FZc1drOHBoUkV1VEIxeFFKT2dBQUFIekp2bjM3cFBFRkY4akJzK1IwZWFHMkMveTFmTGxmck1BaFFRZDhFQWs2QUFBQWZJVktPVys1OVZaNTc0TVBkSTl6MUlxRjExNTV4UzRtNlE4NG53SUFBQUFBWU16N1ZtSnVJamxYeXBVcko5ZkZ4dXJJOTVHZ0F3QUFBQUNNK1BYWFg0M3NPLy9iblFNSCt2elo1NmNqUVFjQUFBQUFPRzdWNnRYU3EwK2ZNMWE5ZDBMRmloWGx2bnZ2MVpGL0lFRUhBQUFBQURocS9vSUZjdmtWVjhqK0F3ZDBqL09HUC9pZ2ZmeWxQeUZCQndBQUFBQTRJaTB0VFo1LzRRVzVOamJXU01YMnY5V3RXMWNHM242N2p2d0hDVG9BQUFBQUlGOVVwZmIxNjlmTDFWMjZ5SkFISHBDVWxCVDlpUE5VNWZZcGt5WkphR2lvN3ZFZkpPZ0FBQUFBZ0R6YnNHR0QzRGxva0Z6WXJKa3MrdkZIM1d0T3J4NDk1SXJMTDllUmZ5RkJCd0FBQUFDY2swT0hEc25zenorWHpsMjZTS01MTHBBMzMzcEwwdFBUOWFQbVJGZXNLTTlNbjY0ai8wT0NEZ0FBQUFESVVWSlNrcXhidDA3ZWV2dHRpYjN1T3FsZXE1WmRvZjM3SDM2d2w3ZTdJVHc4WEQ1NDd6Mkppb3JTUGY2SEJCMEFBQUFBSUptWm1YTHExQ2w3ZG56RHhvM3kxWnc1TXVxeHgrVHlLNitVV25YcTJFdllCOTU1cDh6NTVodGpSNmRsSnpBd1VCNTc5RkZwM2JxMTd2RlBKT2dBQUFBQVVNaWRPSEZDV3JkcEk0MmFOSkVhdFd2TCtZMGJ5M1U5ZXNqRVNaTms0YUpGa3BpWUtCa1pHZnEvZGwrZlhyMWs2SkFoT3ZKZkpPZ0FBQUFBVU1nVktWSkVkdTdhSmR1MmI3ZVhzM3RKMnpadDVPV1hYcEtnb0NEZDQ3OUkwQUVBQUFDZ2tGTkhsN1Z1MVVwSDN0SDB3Z3ZsMDFtekpDSWlRdmY0TnhKMEFBQUFBSURVT2U4ODNmS0dpMXUzbHJuZmZDT2xTcFhTUGY2UEJCMEFBQUFBSU0yYU5kT3RncVZtODYvcDBrVytuak5IU3BVc3FYc0xCeEowQUFBQUFJQlVxVnhadHdxT1NzNkgzSCsvZlBqQkIxSWtNbEwzRmg0azZBQUFBQUFBaVltSmtXTEZpdW5JZlNWS2xKQjNaOHlRcHlaT2xKQ1FFTjFidUpDZ0F3QUFBQUNrZVBIaUVoNFdwaVAzQkFZRXlHV1hYaXJMbHk2VlhyMTY2ZDdDaVFRZEFBQUFBR0RQV3J1OUR6MjZZa1Y1NmNVWDVhc3Z2ckJuOEFzN0VuUUFBQUFBZ0sxQmd3YTZaVlprUklUY1BXaVFyRnl4UW02OTVaWkNjY1o1YnBDZ0F3QUFBQUJzRnpacG9sdG1oSWVIeXgwREI4ckt2LzZTNlZPblNzbENWcVg5YkVqUUFRQUFBQUMyT25YcTZKYXpxc2JFeU5qSEg1Zk5HemZLODg4K0s5V3FWdFdQNEhRazZBQUFBQUFBVzNSMHRCUXRVa1JIK1ZQSitydjZYWCs5ZkQ5M3JteGN2MTVHUFB5d2xDOWZYaitLTXlGQkJ3QUFBQURZaWhZdEt1WHltRVNyLzIrZDg4NlRPKys0UXhiTm55OGIxcTJUdDk1OFV6cDA2TUFlODF3aVFRY0FBQUFBMk1MQ3dpU21TaFVkblZsQVFJQmQ1RTN0SDI5L3lTVnkzNzMzeXR5dnY1WU5hOWZhUmQrZWUrWVp1ZmppaSszOTVqZzNKT2dBQUFBQWdQOXEyYUtGL1dlNXNtV2xjZVBHMHJGREI3a3VOdFplb2o1enhneVpQMitlckxlUzhWM3g4VEx2dSsvazZjbVQ1ZEpPbmV6bDY4eVU1dzhKT2dBQUFBRGd2MFk5K3Fpa25Ub2x1eElTWk5tU0pmTGQzTG55MFFjZjJFWGUrdlR1TFczYnRMSDNxb2VHaHVyL0I1eENnZzRBQUFBQStDOFM3NEpEZ2c0QUFBQUFnQWVRb0FNQUFBQUE0QUVrNkFBQUFBQUFlQUFKT2dBQUFBQUFIdUFqQ1hxQS9iK3p5VHgxU3JjQS81YVpmRkszY2hERS9UY0FBQURBbC9qRUNENHdORVNDaWhYVFVmYVNWcTNSTGNDL25WeTJYTGV5RnhKVlJyY0FBQUFBK0FLZm1XSUx2NkN4Ym1YdjZOZHpkUXZ3WDFscGFYTHNoL2s2eWw1bzVXamRBZ0FBQU9BTGZDWkJqenkvb1c1bDc4UzhCWkorNkpDT0FQOTA3SmRmSlgzUFBoMWxMN0pGTTkwQ0FBQUE0QXQ4SmtFdmVuRXI2MStiODBiMGpLTkhaZmRUVDR0a1p1b2V3TDlrSkNmTDN2R1RSTEt5ZE0rWkJaVXZKK0hWcXVrSUFBQUFnQy93bVFROXJGcFZDYTFlWFVmWk8vcnA1NUw0eVdjNkF2eEhWbnE2N0JvNVdsSTNiOVU5MlN2ZXFZTUVCUHJNMnhzQUFBQ0F4V2RHOElHaG9WS3FWM2NkNVNBalEvYU9mRndPdlBPdVpGbHR3QjlrSkNWSi9JTVB5OUV2NXVpZUhGaUplYW5lUFhRQUFBQUF3RmY0MUJSYlZOL2VFbFNxcEk2eXAyWWE5ejQrVHJiZmZwZWMycnFOSmUvd1dlcTFmT3luWDJUenRUM2xtRXJPejdLMFhZbHNjWkVVeVVYTkJnQUFBQURlRXBCbDBXM0hxZVJpVTVkWVNkMFlwM3V5RnpWb29FUVBHNnFqN08xLzVYWFpOM0dLanM0dUlEaFlJcG8xbGFMdDIwbEVyUm9TVkxhc2ZnVHdxS3hNU1l2ZkpTYzNicFRqMy84Z0taczI2d2ZPTGlBMFJHcDgrb0ZFTnN3NVFWZXJTK0k2eDByS3hrMjZKM3NsdTNXVkt0TW02d2dBQUFDQUtUNlhvR2VtcHNubTJKNlNzbTZEN2dId3QxSTNYUytWeHp5bW8reVJvQU1BQUFEZTQzTlZwQUpEUTZUSzFFa1NXS1NJN2dHZ2hOV3ZLOUVqaHVzSUFBQUFnSzh4bTZBSEJGai95L2xvdFA5S1Q5ZU5zNHVvYzU1VW1qNUpBa0pDZEE5UXVBVlhLQy9WWG45SkFzUERkYzlacUhVenVWdzhvN2FKQUFBQUFERFBlSUllR0ptN21lN2NIQjExdXBLZE9rckY4V1BzUGJkQVlSWVVWVnFxdmYyYWhGYXNxSHZPTGlzdFZUS09IOWRSem9LclY5VXRBQUFBQUNZWlRkRFZPY3pCdWFpNnJwemFzVU8zY3NsSy9xTjZYQ2RWWG5sQkFvc1gwNTFBNFJKYXA3YlUrT1I5ZTFYSnVVZy9kRmpTOXgvUVVjNUNLbFRRTFFBQUFBQW1HZCtESG5aK2ZkM0tXZHFXYlpLeWM2ZU9jcTlFKzNaUzY4dFBKS0o1VTkwRCtEKzE3THhrMzE1UzY3T1BKTHhhTmQyYmU4Y1gveTZTa2FHakhBUUVTRmlWeWpvQUFBQUFZSkx4QkQzaXZOelA3QjMrK0RQZE9qZGhWYXRLemZmZmtlaEo0eVNrYWhYZEMvaWhvQ0NKYUhhaFZQLzRYYWt5Ym93RVJVYnFCM0pQVlhBLy9QRW5Pc3BaWUVTNGhGVS85eHNBQUFBQUFNNmQwV1BXbExURWc3S2hSVnVSekV6ZGs3MlF5cFhrdk8vbldFbEJoTzQ1ZDVrcEtYTHN4NS9sNER2dnlxblZheVh6V083MjJRS2VwYmFLUkpXV3lOWXRwY3lBbXlXeVhqMEpzQkwxdkVwYXRWcTJkZTlySDRONE5xRTFxa3VkSDc2eFo5SUJBQUFBbUdVOFFWYzJYZHREVWxhdDBWSE95ZzY1VnlyY2Q3ZU84aWY5eUJFNXVYR1RKQzlmSVNtYk5rdjZzV09TbFpxbUh3VzhLeWd5UW9LS0Y1ZndDeHBMa1NhTkpheGFOYnN2djFSU3ZxWHZUWEp5MlhMZGs3UFN0L1dYU28rTzBCRUFBQUFBazF4SjBQZTkvSnJzZitwcEhlVXNNREpTcW4veW5qMUxDTUJaQjk1NVQvWSsvbVR1amxnTENwU2FYMzRxa2ZWNUx3SUFBQUJ1TUw0SFhTblorYXBjTDhuTlRFNlcrRHZ2eTFQQk9BRFpPN3J3UjlrM2JtS3V6ejhQcTFWVElzNnJyU01BQUFBQXBybVNvS3NxMEVXdnZrSkhaNWNXbnlCYis5d29KemR2MFQwQThzeEt5STk4KzcwazNIWHZPVzN4aUxybEpydGFQQUFBQUFCM3VKS2dLK1h1dlAyY0J2dnB1L2JJMXRqZWN1anpMM05WekFyQS84bzRjVUoyVFpna0NmY01rYXlVVk4xN2RpSFZxa3FwMkd0MUJBQUFBTUFOcmlYb2tmWHFTdkhZcmpyS25VeVZYQXg5U0xiY2NMT2NXTHFNUkIzSXBjeFRwK1RncDdNbDdvcXVjdWkxdDNKMzV2bmZBZ0trM0gyREpEQTBWSGNBQUFBQWNJTXJSZUwrbG5ZZ1VlSTZkNU1NNjg5elppVU5vVFZyU05GMkYwdVJDNXJZN2FBU0pmU0RRQ0dYbFNucCt3L0lxVTF4a3JSa3FaejRkYkZrV0hGZUZMSGVZOVhmZWswQ0FsMjdmd2NBQUFEQTRtcUNyaHo1WVlHOUYxYlN6MkZHTHp1Y3pRejhQd2ZleW9FbGlrdXRPYk1sckhJbDNRTUFBQURBTGE0bjZDcUoyRFBwYVVsOCtYWGRBY0FMQXNKQ0plYlZGNlY0dXphNkJ3QUFBSUNiM0YvREdoQWdGUjRjSWlXdW93QVY0QmxCZ1ZKaDlFaVNjd0FBQUtBQUZjZ21VM1VtZXVWeFk2VG9wUjEwRDRBQ0V4Z281UjRZTEdYNjlOSWRBQUFBQUFxQyswdmNUNU9WbWlvN0h4c3JSejc2UlBjQWNKTmExbDV4ekNpSjZ0MVQ5d0FBQUFBb0tBV2FvTnVzYjUvNDNnZXliOElVeVV4TzFwMEFUQXVKcVN5VnAweVVvczB1MGowQUFBQUFDbExCSitqYXFlM2JaZWVESStUazhoVlcwcTQ3QVRndUlEUlVTbHpiUmFJZmUwU0NpaGJWdlFBQUFBQUttbWNTZENVclBWMk9mUCtEN0pzOFRkSjJ4TnV6NndDY0VSQVNMQkZOR3R0TDJpUHIxckU2T0tZUUFBQUE4QkpQSmVoL3kweEprZU8vTHBiRU45NldrMzhzc3hOM0FIbGdKZUdCUlNLbDJHV2RwTXl0TjBsay9mcDJVVGdBQUFBQTN1UEpCUDEwcWZ2M3kvRkZQMG5TYjcvTHlZMmJKRzNMTnNsS1M5T1BBdmkzQUNzaEQ2dFZVeUlibnk5RjI3YVJvcTFhU0ZDUkl2cFJBQUFBQUY3bCtRVDlINngvcXBwTlR6dDhSREpPSEpmMGc0Y2tLek5UUHdnVVhvSGhZUkpVdklRRWx5d3B3U1dLU3dDejVBQUFBSURQOGEwRUhRQUFBQUFBUDhVMEd3QUFBQUFBSGtDQ0RnQUFBQUNBQjVDZ0F3QUFBQURnQVNUb0FBQUFBQUI0QUFrNkFBQUFBQUFlUUlJT0FBQUFBSUFIa0tBREFBQUFBT0FCSk9nQUFBQUFBSGdBQ1RvQUFBQUFBQjVBZ2c0QUFBQUFnQWVRb0FNQUFBQUE0QUVrNkFBQUFBQUFlQUFKT2dBQUFBQUFIa0NDRGdBQUFBQ0FCNUNnQXdBQUFBRGdBU1RvQUFBQUFBQjRBQWs2QUFBQUFBQUZUdVQvQUVpNFBoc1dEcENoQUFBQUFFbEZUa1N1UW1DQyJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIwLTEyLTIxIiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJUcnVzdGtleSBTb2x1dGlvbnMgVDMxMCBVMkYgQXV0aGVudGljYXRvciIsImNlcnRpZmljYXRlTnVtYmVyIjoiVTJGMTEwMDIwMjAwODE0MDAzIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjMuNyIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4wLjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjAtMTItMjEifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIwLTEyLTIxIn0seyJhYWd1aWQiOiI2MDI4YjAxNy1iMWQ0LTRjMDItYjRiMy1hZmNkYWZjOTZiYjIiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjYwMjhiMDE3LWIxZDQtNGMwMi1iNGIzLWFmY2RhZmM5NmJiMiIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJXaW5kb3dzIEhlbGxvIFNvZnR3YXJlIEF1dGhlbnRpY2F0b3IifSwiZGVzY3JpcHRpb24iOiJXaW5kb3dzIEhlbGxvIFNvZnR3YXJlIEF1dGhlbnRpY2F0b3IiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInJzYXNzYV9wa2NzdjE1X3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19zdXJyb2dhdGUiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImV5ZXByaW50X2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmFjZXByaW50X2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJzb2Z0d2FyZSJdLCJpc0tleVJlc3RyaWN0ZWQiOmZhbHNlLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJzb2Z0d2FyZSJdLCJhdHRhY2htZW50SGludCI6WyJpbnRlcm5hbCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOltdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFFZ0FBQUJJQ0FZQUFBQlY3Yk5IQUFBQ2tVbEVRVlI0MnV5YWkzR0RNQXlHUXllZ0d6QUNuYUNNa0JIb0Joa2huU0FqMEEyU0RhQVQwRTZRYkVBM2NPWFc2WEVwQnRuSW1Ndjl1dE9sbHhqRi9xS0hMVGRSU20wZ2Rua0FBZ0FDSUFBQ0lBQUNJQUFDSUFnQUFSQUFBUkFBQVJBQUFSQkVBRkNTSklOS2twTHVTVHRTWmJRejc2VzI1emhLa3BGV1BidGF6NlE3NXZQdW9sdXVQbXF4bFpLMnlpNzZzOVJ6bmpscE4ySzdDckZXYVVBSE5TMEhUMEF0dzNZcERTanhiZG9QdWF6aUczdWs1NzljdklkZVdzYlFEN0w3TkFZb1dwS21MeThjaHVlTzVyZUI3S0tLclFuUUpkRFluOUFKWkhjNVFCVDdlbklOWTJoanhycUl0c3ZKV1NkeEZ4S3VZbE9sV0ptRTZ6UFBjc0p1TjdXRmlGN21lNURPQXdzNE95WnlHNlRPc3IvS1F6aURhSm0vbWN5MlYxVjArVDBKZVh4cXFscldDOW1HR3kzTzZ3d0ZhSTBTZFIrRU1nOUFFQUFDSUFCeXFWaVpiKy9wcmdGZE42cWIzMDZqM2xUV3MwQko3NlFqdzBrdE8rM2FkNjBQUWhNcmZNOVl3cUs3bFVQZTRqKy9PUjQwY0RhcUplSit4bzgwSnNXaWgxV1RCQWNiOHlzS3JiK1Rmb3dRS3kzdjU1d2JCa2s0OUZKYlF1c3FyNHNuYWRMOWhFdFhDM25PMUcxSEc2VWZ4SWo1b0RuSmxIUE9WVkFlcldHbXZZUXh3YzcwaGlUaDdCaWR5My8zWkZFNmlzeGY4ZXBOaFVDbDRuNWZ0WXFXS3pNUDNJSXF1YUZucXVYTzBzWjF5bi9SV3E2OVN1SzZHZFBYT1JmU3o0SFBuazFiTlhPMCtVWnplNUhxS0lvZE5Zd25IVlZjT1Vpdk5jU3R4ajRDR0ZZaFdBV2dYZ211RjRKemRNaG42d0RVbTFEcG1GeVZZN0l2UXFlVFJkb2QydjJGOGxObi9nY3BXK3JVc09pOW1BbUZ3bFNvM1B3OUpRM3ArOGJoZ25BTWtQTTYxM0J4T0JRcWMyRkVCNFNtUFFTQUFBaUFBQWlBQUFpQUFBaUFJQUFFUUFBRVFBQUVRUGNvM3dJTUFET1hnRmhPVGdodUFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJGSURPXzJfMCJdLCJhYWd1aWQiOiI2MDI4YjAxN2IxZDQ0YzAyYjRiM2FmY2RhZmM5NmJiMiIsIm9wdGlvbnMiOnsicGxhdCI6dHJ1ZSwicmsiOnRydWUsInVwIjp0cnVlfSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0IjoxMDAsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MzIsInRyYW5zcG9ydHMiOlsiaW50ZXJuYWwiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi0yNTd9XSwibWluUElOTGVuZ3RoIjo0LCJmaXJtd2FyZVZlcnNpb24iOjE5MDQyfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjAtMDgtMDUiLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IldpbmRvd3MgSGVsbG8gU29mdHdhcmUgQXV0aGVudGljYXRvciIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMTkwNDE4MDAzIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjMuNiIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4xLjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjAtMDgtMDUifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIwLTA4LTA1In0seyJhYWd1aWQiOiJiMTJlYWMzNS01ODZjLTQ4MDktYTRiMS1kODFhZjZjMzA1Y2YiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6ImIxMmVhYzM1LTU4NmMtNDgwOS1hNGIxLWQ4MWFmNmMzMDVjZiIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJTYWZlS2V5L0NsYXNzaWMgKE5GQykifSwiZGVzY3JpcHRpb24iOiJEZWVwbmV0IFNhZmVLZXkvQ2xhc3NpYyAoTkZDKSIsImFsdGVybmF0aXZlRGVzY3JpcHRpb25zIjp7ImVuLVVTIjoiRGVlcG5ldCBTYWZlS2V5L0NsYXNzaWMgKE5GQykifSwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNuVENDQWtTZ0F3SUJBZ0lJWGdmRlJROVdxeUV3Q2dZSUtvWkl6ajBFQXdJd2dhb3hLakFvQmdrcWhraUc5dzBCQ1FFV0czTjFjSEJ2Y25SQVpHVmxjRzVsZEhObFkzVnlhWFI1TG1OdmJURU5NQXNHQTFVRUN3d0VSa2xFVHpFWk1CY0dBMVVFQ2d3UVJHVmxjRzVsZENCVFpXTjFjbWwwZVRFUU1BNEdBMVVFQnd3SFJXNW5iR2x6YURFUU1BNEdBMVVFQ0F3SFJXNW5iR0Z1WkRFaE1COEdBMVVFQXd3WVptbGtieTVrWldWd2JtVjBjMlZqZFhKcGRIa3VZMjl0TVFzd0NRWURWUVFHRXdKSFFqQWdGdzB5TmpBek1qVXhNakkzTXpKYUdBOHlNRGMyTURNeU5URXlNamN6TWxvd2dhb3hLakFvQmdrcWhraUc5dzBCQ1FFV0czTjFjSEJ2Y25SQVpHVmxjRzVsZEhObFkzVnlhWFI1TG1OdmJURU5NQXNHQTFVRUN3d0VSa2xFVHpFWk1CY0dBMVVFQ2d3UVJHVmxjRzVsZENCVFpXTjFjbWwwZVRFUU1BNEdBMVVFQnd3SFJXNW5iR2x6YURFUU1BNEdBMVVFQ0F3SFJXNW5iR0Z1WkRFaE1COEdBMVVFQXd3WVptbGtieTVrWldWd2JtVjBjMlZqZFhKcGRIa3VZMjl0TVFzd0NRWURWUVFHRXdKSFFqQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJBSktHbXpFbnlpL2JhZ2h0MS9JM3JBdlVjOWVyaFFGN1NyR1JPbEdPY0hLWEtvazhuY1F2cWxNazB2eTBuanphanNSaCtlREx2SHllcGt4U3F5UlVUMmpVREJPTUIwR0ExVWREZ1FXQkJUNjZKYmJjck96aTVGcGMrK0dpZ2F6cGJZMUREQWZCZ05WSFNNRUdEQVdnQlQ2NkpiYmNyT3ppNUZwYysrR2lnYXpwYlkxRERBTUJnTlZIUk1FQlRBREFRSC9NQW9HQ0NxR1NNNDlCQU1DQTBjQU1FUUNJRDBGcFo4RnhFYjB0KzRhSk9VSkxieFRsb1Myc0pOK0VxVTJXVFdWbmlmckFpQUVkKzFrODNUTWNBenA4aE5VYUdPc0kzZzU0V28vV3ZSU0wvQXZ2SWsxNWc9PSIsIk1JSUNuVENDQWtTZ0F3SUJBZ0lJY2FEYXVUUjZBSTR3Q2dZSUtvWkl6ajBFQXdJd2dhb3hLakFvQmdrcWhraUc5dzBCQ1FFV0czTjFjSEJ2Y25SQVpHVmxjRzVsZEhObFkzVnlhWFI1TG1OdmJURU5NQXNHQTFVRUN3d0VSa2xFVHpFWk1CY0dBMVVFQ2d3UVJHVmxjRzVsZENCVFpXTjFjbWwwZVRFUU1BNEdBMVVFQnd3SFJXNW5iR2x6YURFUU1BNEdBMVVFQ0F3SFJXNW5iR0Z1WkRFaE1COEdBMVVFQXd3WVptbGtieTVrWldWd2JtVjBjMlZqZFhKcGRIa3VZMjl0TVFzd0NRWURWUVFHRXdKVlN6QWdGdzB5TkRBeU1qY3hNakUxTlRWYUdBOHlNRGMwTURJeU56RXlNVFUxTlZvd2dhb3hLakFvQmdrcWhraUc5dzBCQ1FFV0czTjFjSEJ2Y25SQVpHVmxjRzVsZEhObFkzVnlhWFI1TG1OdmJURU5NQXNHQTFVRUN3d0VSa2xFVHpFWk1CY0dBMVVFQ2d3UVJHVmxjRzVsZENCVFpXTjFjbWwwZVRFUU1BNEdBMVVFQnd3SFJXNW5iR2x6YURFUU1BNEdBMVVFQ0F3SFJXNW5iR0Z1WkRFaE1COEdBMVVFQXd3WVptbGtieTVrWldWd2JtVjBjMlZqZFhKcGRIa3VZMjl0TVFzd0NRWURWUVFHRXdKVlN6QlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJLalhiTjJxME1rVnNsbzZTekk4Zzc5ZHcyMC8zKytRUmxyUWhNM2h1cHBaNWk1RWxTRml5d3pXaHBpZzgxQXEwU0l1MkttbFRZcHQ4Nm1MTCtkQVo1R2pVREJPTUIwR0ExVWREZ1FXQkJTMEdDd05NaTZ2V2FKbEJyeStnT25oWXNydG9EQWZCZ05WSFNNRUdEQVdnQlMwR0N3Tk1pNnZXYUpsQnJ5K2dPbmhZc3J0b0RBTUJnTlZIUk1FQlRBREFRSC9NQW9HQ0NxR1NNNDlCQU1DQTBjQU1FUUNJR1pjbXFtQ2hYaTFoTDlkWjJYcjZOS08zaHlmTkJsNzVaMk1peHM5WFRxL0FpQjc3NTk1dkd1MFFxOUg5QUM3YlVYcDRQbTNTTEh1aytrQlk1bnZ3TVRueUE9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFNZ0FBQUJHQ0FNQUFBQytQQ3NFQUFBQWpWQk1WRVZIY0V3eVFVNHlRVTR5UVU1Y09FVXlRVTR5UVU0OFAwd3lRVTZUS2preVFVNHlRVTR5UVU0eVFVNHlRVTR5UVU0eVFVNHlRVTR5UVU0eVFVNHlRVTR5UVU0eVFVNi9IaTYvSGk0eVFVNHlRVTR5UVU0eVFVNHlRVTdBSGk2L0hpNi9IaTYvSGk2L0hpNHlRVTdBSGk2L0hpNi9IaTYvSGk2L0hpNi9IaTYvSGk2L0hpNi9IaTR5UVU2L0hpNWp3NFI3QUFBQUxYUlNUbE1BdS9RU0JkbnFDaG9DNGZ6QVFmbE1KdE5nTW41V295dWp5b3FWYmJVK0h0Z1I3S3l2bVl0dFY4aDdTYnlMWm5SeUFBQUluRWxFUVZSbzN1MWFoMjdqT0JDVjFhbmVyV3Bia1Z0c0svLy9lY2NtaWxSeEFoek9HeTl1c01BNm9qaWN4K21rSk9udEtIWXNrY0lxbHQ2UlFHcjF2YzM5Ni92UWYwc2trcXYxRXdxRDk5Ukp2QWs1a2lHUzZqMVZJaGtLUjZuZTk1cjBGNUJSOUwzOE53QUpvTXZvYnltNTZVYzhOZEJIbW5mRTRZZWV6UkdLV25MNmhpSExES2ZCdC9kSzlSMFZJdHNpZVZwdHZLVnZRN2RJZWZMZk14dEs5K014My8wTjBmYjY5ZldWYjNuYXEyOEpaUHNCa1h6d2REaHQzN0xTT24vTjZQTXRrZXp6T1pMVERLNkxjbVVhLzJxcmErL25uS01qdExXUDZUdHEwNlBRckNlL0VBbmdmM1BVUHFCS0ZvQmcwbjloOXhnbHNUTEI4RDBRN3hjMmoxV3ZPNGtwWGZJSkhTR093d3hJRlliZXJ3VUM1WEtsQlZmLytqclAzbFlVYy9PTGdjakxRSTc3cFFuWjd3WnkrcGpTNGJ5STQ3Y0QyVytuMUFMcEhZRThqOHZRT1V6VFZNQWFFQU1OTDFiOUFFOVVWNDg3bmd6U3VZdjd1Y0IxRlFnL3phOGN6YktLTEZJV2dDaCt1UWt0Uzl1VXJqRnJEcklDVGV6cW9TbFFvaHBTR3VEenA2U0I4OEltaWFtd2Fvb0dJL0tuaWVkcVJaWXFjNjVJbkhEa2FzQ0pEcEtyd2d6TWxZM3hIWTgyalhhUmdna1FJM0xrb2FlVU95RlJCcVhGMmswckllSUVPdVlUeHBKWjZnTlh2U1JMSzZSTjFTT0lLU3Jzb1ZQZENGek5STE1aVnpyUkZBNFhWL1JpSkRMM2tsNExRSUNaZVR3UEsrVlBBWVRPdVFsR0lIMWZCaHQrMElrNUlIMmhLQ1cvcU1ZaGNRdUI2eWI0S1JBMW9aTFNFd2xkNDRGUWNUeEwwNGlFT3ROVlJCN0ltcVlSb1RZbUI2UnJLRk82ZUJGd1FMU2dFbzhQR21helBsR3liQTFjbmVDSFFDTHlmbGltZmxvTjd3OUFsSVpZVkJvb1NseHIzSUV4Y0hXaWU5ZFVURGZEVE5CaGhwazFXRm9kSXBDYkpFMlREVm1nZzdJYVZZTU5Tc09iWjNWbFVoS3Jsb2Z0Y1MyT2E0Vm5WcENyVVNjSlltdG5DYUtsTHAyY3JzalVGb1BNRm9Ba3hLVHBmc1ZZNnlXWmgzOFAxcTNXYUUwZDdaU3F4dFJ6Q3Q4Z2pvbzN3SXZ3SUo0bncwM1F5d0JGSmFVbTB0S05jL0JFeWhWZ3BROGdzNmRSQzlSNEVWYTJLeGtQQklza1I2UDlJc1pXd0NBV2JHdlVjaFNIMnNFNFNMYlp3ZEhBb0s1aitYeFk3UjJ5VjdVdFhCSUF2RXFHaFFQUGdTaDRZN014ckFZaEI2UWMrUkJ4RVRNN0doUXBjMEU2UU1KcTVnaUVINHc4SmdRRk1ycWE1TXBzSnBiR1M4VnpYYnB6M3dCeG1Va01WSTlBTUY5aE1MTHB2cWVlNEtLMEFTRHJZQ0IyeDZVellqRUpCeVRoakhzVTFwZVo1cWhLTW9ic0d5QllkeHMreitHdEpVQXd5c0kwUnNKUGtCbGdlMGk0RVFNL3FVY2c2V3laUm1WQXRHQmlGS1NUdzYrVlBOZVNvZjRHU0RmWkhyb1NBUkpoSTNBNEtwQWlRb1dLRS9KREZ1T0VnZWpCVFBHaHdvRHdOMHlHTXdCUnNUUWF4M1NEdU5yVkQ0QTRnOUZQR2hpZmJkQ2NOSVVsaENtVkRFZ28xQjFZemRoOENKQm9FWWhSTEhQOUNaQmlYaUVtN0ZHMUNzVFV2Z1BpR0xNZ3J6TWd2RHlBQVFGcjIvTmpJTzR6SU5wbVNwVkIzYUNZRGFVL0F5S2NiWXdhd1c4dGNJMStDRVQwU3h4ekNaQ1NwR3RqUXVvUWZkMmxJUXFrRUV4cmpFd3pJS05HaU52TC9qTFhiNEEwTE5hSUVjOW5rYmhiYWlmdzR2YktQUkVYVHdlSzlTRlhQTk1JT2NPSlZsTDNjeUFrNWZHOURUWlVMdnhhd1ZxN3RuYTdiV296eDhQNUIwZjVaeHFaSldDaHVIM2V1ZUtjeTBkMWtwVElCRktIMVl2ejdGV01OQkpVVXlGSUpIaW1FY24zMWc4SFFUWVBzTktrQnVBVENWbVRMMUcwWUtGRHBzS3E2MEFzdnNmUUdjK25HaUU3bHhucnhyUDZpUU9SMjNJblZmMVFOT0pTdmVFN1N6Y3h4bHd0MXh3U28vWjVJSDNIM0IwZmxWSDNmNm9SYVZMQ1lxNkRKMFlUU1plS3JUNms0eXJ0bHFnZmc1TDBOcTdLMmxDTFZqNmtqQi9LZnpqVDdleEM2RXZ0aWlJSmNNSzJhK2xialVnbUxzcThhakFDTmM2OG9SZ211MXE0SzJjWktzbDZPbXhsek1CSERSTHVkSndraVZsajFldFpHcURoTXNURkYvRWxBamxNM0VBeDQ2aERmeVpBNkV1ZENQZGpKTTAxaXZSRUkzYVhKQ2FyK0dIblJiaG1PdTNYbVBIMGVwZlVpeTRmMExwQTFrSUwrMXBIeFVCK0JRS0h0b3g2U0laSGg2UEtnMTFwcU9ta0h3dkhNbDdIVlpKVmhMcllscTlvQkwyTXJTS2RjeDJjTkdibFJMZW9rMWlvY09RbzRvQWd1N0RGZWtGUEJ0dFBwM1ZLNFk4YUNXdEwrS0xLbFZhQWpEY0E3dEtSQnB5YXFtSS92d1lFOXJmamlZWVcwVURHRXBOU2h4d1V1WFBIcEJOVU9uL0FrcGljczJ1bVgzQ3pBc0dRWkNIQzFoNm5rUm5YY2d5YUlPN2taMEFrdzg4czJiTTl2Y0J0dlZzMWlKZ2htbEdud1dGYjFndnhpQTZvY2Vub3NtMTdzdFhVd1hCMlNZSEF5RkRva0t1c1pmNDR5eWczVGRNSkVkMklNclFlZXdqaXhNSHlFSzdDcTI3U0ZXRllybmJ1cXVtbXFSOFBScU1pQW1QbU1NellSNThZS0F1OWNnQm5wbTVnVFBJSXJrY1VOTTAxVlhFdFNMUDF4WWZBbUhObGxxZ29pdkd6QzdyRjhlOWVrSmFBdk9BMjhiK2sveHlJOUQrUWZ3R0UyU1FBdk4reDUrVC84UzNPTmVtSUNnQjlPbm4zbFVEMnR6eS9rTDdvZHN6ei9FNGRGbDM1a3d1ejdRbjlkejlqLzFVdnA5UHBRaTdTOXVRTGsvMHB6K0hNRzJLeVErK3F0OHZyZmFROW51NzNLd2FpSHZQZGJrZGtiTStQQzN6ZW90KzdBNUwzOG9uL01CNm43ZjJSWTFEN0EvNllxZDN0Ym9mcmJvdUVieDluSU4wUHU5ZHJaRHN1cWg3SEsrUWI5eEhNQk1nTmF1ZXc1NEJBdWg1YUdxaDJoMTM3dUx6ZVIwQjdQTjdiQWNocHU5M2l2VzQvYjlJNkVPTjJSTCtCQ0lTNnpUa25vNi9XQ05qZkhvODdJRUFPeDJOT3pQNXdYUVh5ZVg0OGlMcVdnRWo3ejhQdWowUXRBTm9ibGhTWmx0R1NpK1Qyc0s2UjArN3lpVVZkMUlna25ZL3FId3EvVU96cnhFZkErWE84NFNmcU9lV0ErVWgrQXFzYWdVREFpNEhnTS9YdDViNmpVdk5SYTM5OFhIWTdITFdBZXY2OGI2a1dNQkJ3SmM2KzVZRHMveHdRY3BXRjBzaVptRHpKSTlRNTJpdk1EamV5enkzTUhXY3FzM3ErY2dsa0NHMjcwNmlSNisybFFMeHlyS09YSzF5VXE4ZHNMdVI3TUNSd01DOVl1Y1QvQ2lCTjlKNGZzTTc2dE9EMWEvNERzZ1c5R1ZvRFFvSUFBQUFBU1VWT1JLNUNZSUk9IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMV9QUkUiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6ImIxMmVhYzM1NTg2YzQ4MDlhNGIxZDgxYWY2YzMwNWNmIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6dHJ1ZSwidXAiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZX0sIm1heE1zZ1NpemUiOjEwMjQsInBpblV2QXV0aFByb3RvY29scyI6WzFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjYsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6OTYsInRyYW5zcG9ydHMiOlsibmZjIiwidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN31dfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMDItMDYiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJTYWZlS2V5IiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNDAyMDYwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0wMi0wNiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTA0LTI5In0seyJhYWd1aWQiOiIzMGI1MDM1ZS1kMjk3LTRmYzEtYjAwYi1hZGRjOTZiYTZhOTciLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjMwYjUwMzVlLWQyOTctNGZjMS1iMDBiLWFkZGM5NmJhNmE5NyIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJPbmVTcGFuIEZJRE8gVG91Y2gifSwiZGVzY3JpcHRpb24iOiJPbmVTcGFuIEZJRE8gVG91Y2giLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MiwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfaW50ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MTAsIm1pbkxlbmd0aCI6NiwibWF4UmV0cmllcyI6NSwiYmxvY2tTbG93ZG93biI6MH19LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sImlzRnJlc2hVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZWQiOnRydWUsIm1hdGNoZXJQcm90ZWN0aW9uIjpbInNvZnR3YXJlIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsImJsdWV0b290aCJdLCJ0Y0Rpc3BsYXkiOlsiYW55Il0sInRjRGlzcGxheUNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbiIsImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlCNVRDQ0FZcWdBd0lCQWdJRWVDb091VEFLQmdncWhrak9QUVFEQWpCc01Rc3dDUVlEVlFRR0V3SlZVekVRTUE0R0ExVUVDaE1IVDI1bFUzQmhiakVpTUNBR0ExVUVDeE1aUVhWMGFHVnVkR2xqWVhSdmNpQkJkSFJsYzNSaGRHbHZiakVuTUNVR0ExVUVBeE1lVDI1bFUzQmhiaUJFYVdkcGNHRnpjeUJHU1VSUElGUnZkV05vSUVOQk1CNFhEVEU1TURReU9UQTVNVGcxT1ZvWERUUTBNRFF5T1RBNU1UZzFPVm93ZVRFTE1Ba0dBMVVFQmhNQ1ZWTXhFREFPQmdOVkJBb1RCMDl1WlZOd1lXNHhJakFnQmdOVkJBc1RHVUYxZEdobGJuUnBZMkYwYjNJZ1FYUjBaWE4wWVhScGIyNHhOREF5QmdOVkJBTVRLMDl1WlZOd1lXNGdSR2xuYVhCaGMzTWdSa2xFVHlCVWIzVmphQ0JCZEhSbGMzUmhkR2x2YmlCTFpYa3dXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUWZmMWxISTFCM1ZFanpnbitMTGdhQmpEYjU0ZUlKV3cvajN6VFhhVDN1bkVJWHBHUWptQjFLOVI4S2EvMTBnYjR1MkJzb1lYbHJMZnhHN204ek5VRmxvdzB3Q3pBSkJnTlZIUk1FQWpBQU1Bb0dDQ3FHU000OUJBTUNBMGtBTUVZQ0lRRHZxUUlXLysrdWxBbVlUTnZpNWJZZ2RkTDV3RkEzMjU1VkRLLzJnMVhRT1FJaEFPbzREeHF5UzI0Um5Sbk9kN1hXaXZ3T0xkSkJtQkJxTzJJNnM0T3lpbTBjIiwiTUlJQjF6Q0NBWHlnQXdJQkFnSUVlQ29PdVRBS0JnZ3Foa2pPUFFRREFqQnFNUXN3Q1FZRFZRUUdFd0pWVXpFUU1BNEdBMVVFQ2hNSFQyNWxVM0JoYmpFaU1DQUdBMVVFQ3hNWlFYVjBhR1Z1ZEdsallYUnZjaUJCZEhSbGMzUmhkR2x2YmpFbE1DTUdBMVVFQXhNY1QyNWxVM0JoYmlCRWFXZHBjR0Z6Y3lBM09EVWdSa2xFVHlCRFFUQWVGdzB4T0RBNE1ERXhNRFF3TURoYUZ3MDBPREE0TURFeE1EUXdNRGhhTUdveEN6QUpCZ05WQkFZVEFsVlRNUkF3RGdZRFZRUUtFd2RQYm1WVGNHRnVNU0l3SUFZRFZRUUxFeGxCZFhSb1pXNTBhV05oZEc5eUlFRjBkR1Z6ZEdGMGFXOXVNU1V3SXdZRFZRUURFeHhQYm1WVGNHRnVJRVJwWjJsd1lYTnpJRGM0TlNCR1NVUlBJRU5CTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFN3BnRXYrN3BCVzN2YWZpM0FHR0pSY1V3ZkxyTGJ2YmZvbzBaWnM0WS8xOGR4UFBzcjk3eVA4cUdQZVZWeEE1Y3F0dkRaMGUwVXFSWU5yeFlKdHIrU0tNUU1BNHdEQVlEVlIwVEJBVXdBd0VCL3pBS0JnZ3Foa2pPUFFRREFnTkpBREJHQWlFQWdPcVBwU20raitObDZtcWppNmE5aWJ0eVM2V05xV3hnUTNOSS8vbnEvWHNDSVFEbzF1SGdqNzZZVGZqSlBRSHRHT2NvczJDM3VwVWZTTWlaS1FncGNscjNnZz09IiwiTUlJQ3VUQ0NBbCtnQXdJQkFnSUpBS3E1Y2paWXhJNEFNQW9HQ0NxR1NNNDlCQU1DTUlHNE1Rc3dDUVlEVlFRR0V3SkNSVEVRTUE0R0ExVUVDQXdIUW5KaFltRnVkREVZTUJZR0ExVUVCd3dQVTNSeWIyMWlaV1ZyTFVKbGRtVnlNUnd3R2dZRFZRUUtEQk5XUVZORFR5QkVZWFJoSUZObFkzVnlhWFI1TVNJd0lBWURWUVFMREJsQmRYUm9aVzUwYVdOaGRHOXlJRUYwZEdWemRHRjBhVzl1TVIwd0d3WURWUVFEREJSV1FWTkRUeUJFVURjNE5VWkpSRThnVWs5UFZERWNNQm9HQ1NxR1NJYjNEUUVKQVJZTmFtOTJRSFpoYzJOdkxtTnZiVEFlRncweE9EQTBNVEV4TWpRMU1EUmFGdzB5T0RBME1EZ3hNalExTURSYU1JRzRNUXN3Q1FZRFZRUUdFd0pDUlRFUU1BNEdBMVVFQ0F3SFFuSmhZbUZ1ZERFWU1CWUdBMVVFQnd3UFUzUnliMjFpWldWckxVSmxkbVZ5TVJ3d0dnWURWUVFLREJOV1FWTkRUeUJFWVhSaElGTmxZM1Z5YVhSNU1TSXdJQVlEVlFRTERCbEJkWFJvWlc1MGFXTmhkRzl5SUVGMGRHVnpkR0YwYVc5dU1SMHdHd1lEVlFRRERCUldRVk5EVHlCRVVEYzROVVpKUkU4Z1VrOVBWREVjTUJvR0NTcUdTSWIzRFFFSkFSWU5hbTkyUUhaaGMyTnZMbU52YlRCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQkxEY1lpdUM5MkxSaXlxYUdBMU1SSUg3M21nT3BiZ3d2b3hzcituUEJqKzQzOHVJQk9NbjlwNGlUM2pLZmNCYURQczQ0K2dnMnRmWWxxRm9kN3JORnNHalVEQk9NQjBHQTFVZERnUVdCQlNlalQ5L2s4TE5GaCtWNHM1ZzRTYkUwTzM4VVRBZkJnTlZIU01FR0RBV2dCU2VqVDkvazhMTkZoK1Y0czVnNFNiRTBPMzhVVEFNQmdOVkhSTUVCVEFEQVFIL01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lRRFVNVlhkNFhTQTFicis2bjF3MlFrOVRjWDVvdVpEVmNhSHNGRERteDF6dFFJZ010RzNvQUJoNmJHVnphTE44MEh0a3ljV0FHVVZTdDdrRGRRWUlqTnpUQ1E9Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQURJQUFBQmFDQUlBQUFCMStwTFJBQUFBQ1hCSVdYTUFBQTdEQUFBT3d3SEhiNmhrQUFBQUIzUkpUVVVINHdvWERoa2xBZURrWGdBQUh2QkpSRUZVYU42Vm0zdXc1VmRWNTc5cnJiMS81OXg3dSsvdDI1MU91dE9TcCtrUTB1YkpTekFCQXo0QXhRRkhtQm10S2FRWVFSMVJxMGFuUkJKRlFNc3BBYUZHQlFjSkQzV3dpRVRHaEVmRWlFUEdCSGwwaDZSUmt1NDh1anY5U1BmdDEzMmQ4OXQ3cmUvOHNjL3Q3dURNVk0ycFU5Mm56cjNuZC9kdjdiWFdYdXV6dmtlZTNQZmszWi83N0RlLytkRGkwdW1wNGN5b2o1bDFRNFdxcVlvNDJhbGFTa0VJbUZJWERFdEdocW1hSlRGUlVhR0lhcGZOU1lHWXFvamtMZ01DU0ZKVk01QWlvS2dxREJLa2l2UVJwcVlDVWVsU21wcWUybnJodG10MzdFaTdkbjM5OWovNThNS3g0eEROZWFpV1JPQWtBeWxwa0xVdmdLcWw4S0ttQUZRMWdrSFNDd2hOR1FJR2sxa3dSRlJBSjRVMDAxcGRWVWd5V0NOVVFVSUlnb0JFZURMeldnTVVZYTFsZm03Mk45L3hqaFFSSkVtQ0FoRkxIVVNTRUxSZ1pmaHdPT1VSNFpGTW5UQnBONnFNS3ByTVZFVGNRMVFJU1pZRFFMaEFWQmhrc2tTQlNKaDJBeUFpUkFEQXd3R0lpS2d4dlBROUVTUUJoTHVDU0tZQVJBbUFYbFVZUkttaklGVFV3L3ZTUTBGUk13MVFRQW8wbVVmMThBaW5BS0lSQVhwV0FFd3FJaERBSWFBSWpRd3kxRFFRRUJHSWlwb2tlaEEwVllpcUdnVkU2TVVYWHhwQmtCQ1lHUVNNWU5SQlRtWmFTaEZJMTNVcGFiSU1NSm1xS3VoZ0RMc3VtUUZpQWpNeFlRQWViamxGQkVSRjBCbFVSVlZ5U2dBVUFNeE04MkRZcFVTaG1JWER1dHcxLzRPUW9sdTJidlVhQkJoT1FOWGF6dmUxQ2lNbkRVYlVBcGZ3a2pTSktBTWlGa0ZOT1lqY2RSUTFGVXZKVEZOS1FscFNNc3hTSlZSZ3FsNXIxMldBSmdpUDhCcWlTVFM4ZGwxR2dNS0lFSUNNTkJnTWF1bEZKS1hPYTgyNXF6VlNzbkNxUVd3WTQxSEtIU0ZkeWdSQWlxaElXT3FTU2JKQmlSZ09Pb0dHaHFtU1VZTTVaN01La2F3MHphQ0xKa0lvS21xcVRLS2xWTzBHaVVGM0tyd0hWRVJWUlJOSWlnQVMxYTNMQ2d3R1F5Qk1BUUxpYXBwVGhvaXFsWDRVaERBc3BhUXFZQkREM0VXRXFOS1J1K3kxVE9jdXZJU21uTHRTaXFrS2pDQUFVUk9HV3FiWGxLelVNZFJFQUErSUNCbmhJa2d0aUNKY3M1SSs3c2NwSlJHQldnUnowa0dYU0lyQ1REQVlBR3FtREVmQTZUa2xVU1FkUksyRHdjQkxHUXlIcEVxWFM0Mm9SUVFwZDE1RE5YTE9vOVd4NVZ6N0lncFJ5NkxWSzBNWTFRUmpBa1FFVTBRb0lBS0ltbVcxUklHbHBCQWs2N29VNFNKcWxzMHdHdldXTWtETEdSRUJBRXFFaVVUS0tlV1VjODZwOURXQ1hRNFhRSkUwcVhoRW1PWEJVQXhpWnJWV2VFMDVBUnpWa3JyT1N5R0RBSUVVREUycHVUeEVJaUpiWmdRc21RbENKRFFBUnNrMkdBd0hFQnQwWGQ4WG9wb0lHZTVRTXpHeG5NcDRWSXQ0MU9tcG1iNzBDb0ZCSUdxZDJYQ2xWQlBwUzFXVm5HeGNTMVN2dGU5eWR2Zm03NkpDTXBGVTBGU2RBbEJVUmNWVUJhd2VrTjRzbVppcTlPNEdpTXJLeXJLS3FTZ2pMSm1rTEtSQ0VPaTZhUldrbktyWHJrc1lEUHJ4T055N0pCNGg3cFp5R21vcHhTUFVsQXhWcSs0cUlxb2lDZ3BKRlJHcWVqQ1pxSWdBcWtLZ2VrMHFxdENrWWtwd09FaWlCa3N6VXpOcVlwWWtKNC93VWlNUWhOZnF0ZlJsSkVDeU5CNlYzb09CbkRxcWdkRU5Cd3dQMGgybDd5TmdtaXlacVFRSkVSRkVSREQwOUttVFdVMGhYajJjWGM0UlZOVmtSaGloSXBvRXFrcE1qRmhLSHg3alVtcDEweVNxSGw2OG5Xc2dVV3RsSU1JVFNMQjREYTlkTnd5dlZERXpOWFFwQzFuZEl4Qk9GYTIxVUVSVkVFeGYvL3JYcWpzUlpobUNZSmhhdUpzbGc0dFlMYVdkUWlyYVY2L2hXYUJxWG91YXJZeFhVa3FnTXRnamVvWmFvaWs5K3I2MHhBRmkzTmRTZWhIclM1R2NoSVJab3RDa2xqNEVYbm9UZFJBUUFLa2ZqejJDa0VvWUNVaTRMeTR0ZWkycWlYU3pKR3FXTE56RlVpMjlnSGt3N1BzQ3VFbk9PZFdJNm1GQ0VHcFF6V0JBamVFQWNzcXIvVWdoRVZBSnFJYTdxcGtJd1c0d1ZDQkVWWVVFdzkwOWtTRWlrOFBWdEpVcmorOTlsQXo4L3ora2xRZlBlQUVBSkFDZSs1dnRIUkc1NktKTFptYm4yMGFKbW9pUVNBRk84aThFdFZiTlNvb0tIYys4eXNTODdWclArTkhhRDg0dVNLQ2lrRlk4U1BzNENiSmRwejBDZ0VCYmJFVWx6MVEyaUFTSVVBUWFFWlpUVnZFS2lCQUtVQ1ovOWR5bG5MVkh1NGladnZZMXI3M2xsbHU2cnJ2L2dRZnUrTlNubHBhWElSQUJ6bGxIV3hiT3Z0SHlrVmpLZlhVS0kxd0FCZ2xSVUFJa0F4Q3p0aUFSVVFqUFdJSVFRaWlDYzU3TnhxOTk3V3QzN3R6NXlVOSs4aTF2ZWNzYjMvakdQLzdRaDNidDJ2WFdYL2lGU1ltM2RqTmt5OTV0VFdkdlRDQUlhdnNyTWFua1FLUmdDS2lxWmlxaTdqVWl6dHphWk0rNDVpT1Rtd1JBVUY3NXlsZDg4SU1mM0xCaHcrN2R1L3UrRjFFeU5tL2UvSzUzdmF2cnV2ZTg5L2NFNSs2Z3JCbnFIUHNCSVJKQ0JsVGdFU1FpSWdsRG9DQkxLU201YUFiNWYzRXJPYk1ta2dMY2V1dXRHemR1Zk9DQkIyNjQ0WWJCWU5BTXNMQ3c4T0NERC83c3ovN3N4ei8rOFNOSERqOHpJTmFzc2VhVkpOZDhnVEtwTUFHRXFxVkpEV1VKYWlwckJsOXowWE1EWjNMYkpJZ1h2ZWhGMTE1NzdTT1BQTEo5Ky9ZdmZ2R0x2L2lMdi9pbU43M3BFNS80aEtyZWNNTU5CdzhlZlBPYjN6enBSTWd6TGcvdzdMVW5vUWFGVURTS0EzU1N3UVF3SUF6Q1dvbG1VUUlRaUtMbENMTDVOd2hwV1J5QTRDVXZlZWx3T0R4eDRzUWRkOXh4NjYyM2lncUkyMisvL1RXdmVjMkhQL3poSzY2NDRuT2YreHpPZGZFempucjJQa0hDUGFyWG5MS2JvYWVwVklaR2hBcFVBVklpdkhxWEVxUmxkVHZqVWx6YnZUTWIyeExiM3IxN2I3dnROaEhCSlBidzZVOS8rczQ3Nzl5MGFkUHM3Q3kvd3gvT1dlT1o0RW5KY2phR1R4SVZxYUlhN2hITmRGSGRhL1Z4S1pJU0xNR1NxRUgwVEY3aW1mVUI5OTEzMzJnMDJyRmpCMGt4czVUVVZGUkU1TDc3N291STdkdTNUNVo3OW9tSnVjL2tDQUU5d3FHVzFFU2diRTBSQkFoWFFFMUpOcmVXRFZzSEYzNjNUcTJEWlZFVFVVeWVNckdKeUJYYnQrL1pzK2VhYTY1NTMrLy92blk1RGJzOEhLYWNYLzNxVjcvdWRhOXJsbWtCYnFabjRwakVtbVZGRmFZU0FGVFk2aWlJUUFFa3J3NlY4QWhXVlU4cElUVFVhcDRlYkwxay9QUis5Q1BXSW1maklGcmI5STF2ZkdNMEhwODRjZUkvL3Z6UFgzZmRkVis0NTU2VEowKzgrRVV2ZnVVclh2SFk0NCtyNnNNUFB6dzFNekRUOE9qSHBkWWFNWEVLVlRIVkx1bjB6QlFqaElDcG1XakxZMkJTVllGQ3hDeXJHU0JrU09yUURZcFh5MU1PMWV5TUtwUGdkWW1RbEw3MTVMN0YwNmVQSEhuNitQRVROOTkwMDB0dXZobEFST3pjdWV2S0s3Yy8vZlRSMnovMjBibno1cWFtQnVIMTlNTHBwY1hWVXB5a2lKakpoZWZQM25UZGZPbkg5eitxUkVnSVlrSUFBQ1F5QUlvZzJXVHZWUlVrUzJVRUNOYVFiS0lxWGFjcGljQnlScmdLZnZPM2YrZlBQL2JSNmVucG5ic2VUR1lFd3YycTUxeVZ6Tjc3M3ZlTlltVm1kanAzSnN6MEd1NnJxOFhkQVhSZHV1cVNXWTZXRjArN1lDQlFoZEFzZ2tBSWtLb1RnSWdHSTZkVzJpZ2pRQ2JXZm5Xc09ldGdXaExvUlZMU2xHeHFDclVJK09EK0F6LzVoamY4em0rOTg3azMzcEJ6YnY1MDRLbW4zditCRDN6cXJrK3QzekNUdTZRa0dJTkJ0MjdkMEV6SDQxSkx6SzJmMm45b2VWK3RLeVBuTkNQQ1RFU2dLZzBFcEJhMEFyR1VWUlNpZlJtYm1LSFcwd3ZTRFhXd0RoUVlMYWNvWXdKUmk1a0p5RnAyN2QzN3FqZSs0WHV2dk9xV20yK2FucHArOE9HSDd2N0M1MndvNithbXU2dzVxWUoxWExxa21CbVlpcW5JRkd1dEo1YWoxcG9vUmxneWlESUtSRlRXV2d5Q3poQ3Z5YXRvTWxFdUh5OUxvS3NOWnVoUUkyc3ZnL1RUUC9hcVU2Y1hQL1BsL3lVNVNRUzhpa0RCYng0NThPMjdQLzFkOHhzZmYzeXZUbGt5YVh4ck9FeURCSlJVcG14MVNiRXViOWw4L3VIRHA0NGZYODI1bTQxbENSd1NKUVFSZlNXRFFnQklJcGdjOUJHQWlBS2tqMWRsTUMxbXdnb1I3NHNPN1Axdi84OTF2RG83TzdmOWlpdjJIejU4K1VYUHV2UHV1d2M1ZmYvTk4vM0Y1ei83cS8vK1RZc25UaDU3enJWLzlkblBuRGMvZjNMNU9Ca1hYSEIrVGpXaFNtQzhOSjZiNFpaTjZkajUzWUVuVHgxYzhGdWV1L25Zc2NNSHZ4a1JJWXFVdFBRQ0ZSSnA3U0NZTEZSYUFRT3lqQkhMSHRVRzY5TDBockhIZWZNYlh2K1d0Mk5tNXFPLy9jNGZlTmt0OTkxMzM2Lzk4aTlkY01HV1BmdjJ2ZWU1ei92blJ4OVpQejM5MEgwUC8rNDczdjNZM3NmbjVtWVBITnEzNVlLdHo3bnEyZmQvNWU5MlhQWGNpUExGTC96eGRUZGVYa2RMLy9UUXQ1KzRhOCtoUTh2amZpYVpEYnN1NklKQUJBUlFWZmNBVktCbUd1NGViRUNzWldITkE4dnJZbVUxYVVEa3htZHYvOWN2dVdrOEh1OTc2dUFIUHYwWmg4ek56UTJuWjA2dmpuYnUrZmJIN3JyejlULytFeWRQblByQ0kvZE9iNTI1K1BMTFB2S1pQMzdrOFc5RDlQNnYvcDNxNlJ0ZmNQT1Z6NzUyeHpVM2Z0L04xOS8wdmRzM3puWGFMMVl2ZmQvWDNtdDFpakFBMG43NGgzOXcxNE83bGxkV3pUUVBwaFNvMVU4dUxWTXpCSGxtbnRDcHpWdFU4NkVuSG52clcvN0RwUmMvNjdmZjk0RnRXN2Q4ZmU5amw1Mi8rY21ubnJyczBrdis3cXYvZU5YMTEzN2Z0VGM4K2NRVGwxNXgrWTVuN3poNjlPZ3g3ditKSC9pM3d6emNmL0RSbWVuMDNPdDNuRHkxY09FRnMwbTViaXF1ZWZhNisrOTdhbnBHSGp1V3VtNlljNjYxTUR6bjlJSVhQRCtSRVJHcVNvSmVxU2J0M0ZPSVptZ2F6bS93NGl6anIrNTU0bHUvKzE3VThhbFRwOTd6OFQ4ZGJKajdvNy85MHV6Mnl6YU5seTU2em1VK1BYam95S0hvVGw4MTRGL3YvdHR0RzJlMnpFN3RQSFRYNnZHbGNUbDIvVFV2SDQ4UFhuN1JMQUhUWWU3bU1EejJ3aGRmOHJFUGY5bnJocFJ6ZUloSURSZENJSW10MHArVVFqSTVsY01SM3ZCSksyeHRacWhaWWFxaFdzWmVTMDE1ZVBGbFU5LzFySTNQMnJacDQ4WU5YWnJOeWVhbmRwN1llOEdXOHpkT2QxTkpWckpQeitSTjNkWWQyM2VjUEgyUVhDbmpjVWlnTE5VeTNuemVjRGhVOUlod1p3Z3d5SjJERUNna2hDQ2plaVVabE5ibndpdTgwc2MrSHNXNEYxUHBPcXFGTyt2WVYxZThFdXZYcCttcGxKSzNzd0pjNnNlYk5zeWxaQ2RYVGo1eGRNL3A1Uk1MVHk5ZGN0bDNuVnhlSEhUbmxYNmxsanBhUGIyOHVHKzhldnowNmZINnVRRVpERFQrVTcyMm9pTTE2TmFhK21Eb3BGa0tlQUhncThzY0RpKzg2c3FqaDQ5WlNocStldUlZekFTYXp0OHkySHkrNWE2VXdscVFzREphT1huNkJKWVdwdVpUalNxTTVTTjQrcDhPTDE1NXdmSEJFOXMyWHp0LzN2TU55cWhMN0ZaV2RqNzAwRUZKQ2RKcVlpbnVyZGNDbUVnR1FnQWhFWWhhRlFDRElTSUI1ZXFKaFgxZmY4QzZhWjJaV3U1WDBIWFExRzJZbTlxeVpXYlRwc0hVY0hZdzJEQTFQYkRvRllzbkZwN1l1M2RxeEcyWG5yZThjR0xQemtlSDJZNGRYdDB3V0Z5ZVBqbTdibk9wSTVEZGNGdk1qT1kzN2NzSEUrbk9hRXl5NVZDQkprc0tTTkN6cUdVMXplTlNKZ1pUdGlxa2p2dTZzdEl2ZGpZOVpaTFQ3SVp1OHdXRHVka3VtWWxNRDRlTC9laEV2N1N5dUhEODRLSEZJOGZyeHNIK0U0YzN6RTA5LzVYWExSODgvcVV2UHZRLzQrRlgvOGloS3k2OU1xa21TZEdmS3NzSG52ZjhpL2NmV2NIdVkzQUdtMmMzN29uRVlGdGdrQXg2VkVHc1Zkb0JVQVl6SkZFcnZZK2FWR1owTU5UaEFGRmpkVm14SG1RaVR2V2pwNTUrNnVsSG41amFQRk8wRjZUTjUyMjhlTXY1c20zcmwrLzY4dU9QSHY2YmV3cGZ1amcvT3owOW5JL1J5WVNsaU02OXRFM0tPVmNmZ3dGUlFTUVJkVVNEZWlUWmhnWGdodG5aODg0N2IrL0JRK3RpTkxWdWFoR3VxcHUzYmwxT25kZFNUNS9TWVRjNnVpNDJ6ejk5OHVTbTZYUjY2ZlNKUFUvMG8xR25uU3dWWm9uSzVaWFZzblJpRlg3azhQSEg5aDdhOS9qUmE3N255cG44VC8zQ2dVMXowK3RuWjhxNFZ4VkErbjdrSHBPR1Z6U2Q2YUJWaE1GczJvdVNlUGM3ZjJ0cWVucGhZZUhDYmRzWThmRHUzZHV2dXZwWjI3WTllZkR3K1Z1MmZPdWhCNi9iY2ZXQmhlTnpjM04vK0xYN2Yra1ZyL3pIcnkvODFDMnZYL2VxNllQSERxMmJtdWxTL3VTWC92ejFML3gzQnc0Y3VPSDFyMXA5MWVyQ3dqRlZQWDc4K1BZcnJsRFVJL3YzYk5pNDhjVE85NHRZTWdzVmdMV3dkUjdhZWs1dEwxUUQ3VDJTTkZXdjNwcTY3Lzd1N1JHTVdvNGNQZHFQUmxmditKNHVKK25IenpwdjQ0YWp4NWFQbjl5L2IxOUtXVXlUWm9VSjVPZ2pDN3QzZjJ2WE54NzA0am5uK2ZuNUxWdTJ6cy9QcjQ1R290MVM3VlpyZm5ML2twZ1c3MDJWZ1FpS2lnZ2JyNE1JMWN6ZDFYSUwwbC81bFY5WnYzNzlzZVBIaDFOVE0zUHpZMXZmMmhMYmRtRzk1TEoxNDZYMWg1NDRmdURBM095NjA4YUhIMzV3ZXV1bW5RZjJyaHRrSGNqaWdjUGowNnVqZnZFamYvcmhFMGRPM0h2dnZjY09INHZnb0JzY1BIamc2cXQzbkRwNVluWDU1T3pjaG1OSFI0UDFOVmwyWjQzYVdscENra0Fna3h5dklyV09XOWU2dXJxNnVqcUM2dXBvWEtZY1ErTjRqQWpaczFlUEhEcnA0N3B4Ym1sMWViV011cGxwMlhyQmhkZGV2WGwrZHZYUXdSTUhENnlzTEo4NmZyeU9lcmlYS0kvdDJiT3lOS3BsVWdIczJyVkxSZFRrK01sRlFJZXo0dTZXRTBadGJpRUNKRXFzOWFPSWlKdzdsNEpuOUlVU1paeG1KWG9uQzV4YzdHbFlPUlVlbnF3VFlPclNiWXVqMWNHeXpjM1BQZmJBTjQ0OGRqRG9YcHkxOU12anZpL2haeUZlTktEdklnSlRDR2lxVVdvakt3Uk1OVFZidGNtanFFRFZhNXpoR0NBWkhxTlZLU3VpTGprRUd1SC81ZGEzLytncmZ2aXY3N3I3RzE5OC93dWZNL1g3VDU1R1djYTY2Uis1YkhYTHRzVS9mT0JVbEJvUkVURmU3Yy9oZytlMjJTUW4zYnpUUmNWTWEzRVZFWkZFYUFNeEVlRWV5ZUlzWVdzcmkwQXQvWkdudXZtTnc1bnBidEJ0bUo1NncwLzk1QmMrLy9uUDNuMzNMZHU3NnkrMzFTOGZyRE9wRHJ1YlhsUTJMSTY5MWdobjhNS3RXMis3OVRkR28vSFU5UFNiZitabituNk1jem5FMm1BTGJNaXdqVWFEaUNSRXU0dWN6VXdKUnVPVEV3UWlBT0dWWHV1Sm8rUHgxRkt0ZjNEN3g2YW1wbWJXclgvRlZYdXV2SFRqUHgvb2h3dUgzL0dLelp2bVk2Z0UrSU12KzZHZmZzTWJadGJOZlBidXozN3A3NytVTEYxMzNmWG40TVFKVDIydnZaVldqRFlTSkFqUkJFRzA0V0swRVNPVHBYTTJzZjFQQUZGcVdWcHh4dUZEaDBnKy9mU1J3d3ZsaHUzOWk2NUt2L0RLNlpkZm0vLzZINDQ5NzlMTkJHOTkrOXR6enZ2MjdYdmIyOTUyODgwMzdkbno2TzIzZjdTNTZUblk5UnpncW9xZ2UxR1pjRDZka0JNMlR3eUZ0TFE3SVRCeWxudEdoTmVLNE8wZitZalhldWVkZC83ZW5jY2ZmbngxYWFVKzU2THVrZjByUC9QZUF3ZVBqVUZjZnZubDk5NTc3M3ZlODU3MTY5ZmZlT056M2VPWlhvVnpsMGF2TmxtdVRCaFZnNVJCQktpTmVaa1NldTZuK0IwYzZBeExpb2grdkxUVVA3QTdacWIwaDU0MzkvNmYyN1psMDJEM2swdUhEaDE2NFF0ZXVHSERocFdWbFowN2Q1N3pvWE1NSlpOWFZJT3c5aE9RNUNTRXFxSU5LNW1aSlFPOUwrVTdydkFkajZXbHBhOTg1U3NMQ3d0MGYrTHc2TEdEbzNmLzJkRmRlNWV2dVdMNm5uOWMrUGErbGR0dXU2M1VzbVBIam5lLys5MjdkKzkrSml6SEdoRmMyMEFCVkZOV0FjR1FJQ2hwd3BFaHRWYTFrS1RKN0F6NmZnYnJYcnZsUng1NTVLVXZmU2xFMU5LSFBuZlNzb25vai83NlhpOEYwU0RtWDk1eHh4My9rcldSa09hdERRbERBRlIzdXF2cUpNRzN3WjI3VHo2bGJUeURpSXAvQ1dKRnpxR0JrNEp0Z3EwcklucTZQd09vaVp3RjhPZThYc09MWnpjaFd3SVFJUk5qQmxWVjE2NUVCSU5RMDVtWjlZUGg4QmtmbGJVQnJhaUlpb28wRVlFSWdsRnFWR2NRUWZEL01YVDV6dkZITThWZ2F1QVJxaE0rRzR5SW1pWVNqU1laTWUxeW5sbTMvdVczdlB6d2tjT3F5bWpsckhpRUFFRXlZaTNNUlZVOUFrMTFFMnQ1aE5FcXR2WkJyRVU3STlUTVZDSW1hdy9HaFJkZUtKWWVmL3hKZDRjb0F5cENTa0t3SFR2UnNvQnplWGxsZVdrUkZHY2trUUJGSkFnRkE0THdkdGVEUEJpVm9tbzVkN1U2S0VRSURLSXdtRWp4OElpVWNrVHQ4ckI0eVNtTlM4bVdXK3FKV2c4ZU9scHFJYW1DUHB5TWx0MVRBQ0lXREJVanBFYlI0Z29oYUpZaklpVjFocW8xL1lhMThwK2dTcElFVVJBaFVJQ1FyaHVNeDZ0ZHptYWFJU0phU20vZFVDQlprZ2R6TjJnejMzRS9ibEloRlVCWW5RSlIxV2FGeEhBeUdoeU1xQmtta09vdUVLSlBLYlhSa0FCaU9Tc0E2V3VmMDhBc3RRanc2b09jUk5RRDRXV1FjZ3ZIM2lNbHBtUVJRYWpsMUxENVlEQXMvVGhaWmxTUWxuTDByRjRFRVI2dHhWQ2VPOFNoVkErQ09lZXU2MFFNcEVjb29LS21NTFdJeUdiSmxGN0pLTFdxcXJ2WENOQmJ2OUJnUVVyWnhHcVFZcXBTeG4zVThGTEhvNUVJQmJTVUNLeU9Wa1VRN2o0QnZpb1FkZmZHbkVrRVF5QVJRZENqQWhUUmxJeGs4MWw2UU1BUVVLRGE5MzB3ek5SVVMrbExyUkNxYUFpRjRhVVhBRTZoajBhamlDaDFyR3BCbHI2QTBmY2wzTHVVKzNHdktoRnRqczZHZEhsR05kWDJSSkNha1FDNGlycFk2dG9SR3FSbEUxS1VwUlFSbUVxdFJWU1NHWUpDbEZxb0dra0E2V3NsSW1nQ3VudEtxZFpTcTZlVVN1MmJEelRmYXR2WHhHUUFrNndOL2tUaHRYb3kwQ0hJcVRNemtBSFcya090UzZhcWZTbEp0RVFWTW5lNUh4ZUlSbkZSVlRLQ2F1TGhYbEdkT1p0N2lWcFVOSmxXai9CSVNmclNnMEd5ZWhYUnRuL05oMFZ0c3RZek9iQ05rNXFpcnBZKzZKVk9oS2taVUdvcGZkOTBndTFZS3pWRXBicTMvcTY2aXhKRXN0eVhudUcxOUtTWXFDcWlFVkdOV29vZ0lPWWVnNjR6a01FMWIyZnJLNUpIblVSaU94cEZxdFBNaVdSQk5xRmdZbFFLS0ZPNWpuc0JoRm9KYlFvVWtqQ2hXTTRoRnJVbVFKdlhhZ0lqSUhYa3Bpb3E0U0VRTWdBMzFmRzRGMHBFcXh1b01vay9qWWptTkFLWXRwRndjMnA2ZFNWeVRxMStkNkJmSHBzbDBVUkFnUWlxS0VSYVR2WUkxREdpa293STBhYWV0TkwzVFlIbjRkVkxDRXA3Vkc5U3dkemxiQ21DMnJaU0pMVTlhOGQ4S2RXc0EwV1RtbVdReGIxNkFFZ3Bxd3JBdnBTbVMxUkJJSkoxcHNsclJLMldGYlFhcFk3SDdjeGtvUHFZUkVwYXE3ZkQ3ZnRmK3BLTEw3cm9xMS83Mm9NUGZ0TURGSHB4QUpxTXRhd05WeUErbWZOVFJkeHJ6bDFERWRHVUI0U21GT0dxTmhrK2lqQUVDSU42VUVrUFY2RDJyaUltQWpNQ1h0MVVDVWs1cTFBa2JyemgrbmU5ODUzYnRtMWJXUjYvOWEzcG5udis1cGQrK1QvVkp1VUVvanBFU0JLU0dIV3luV3BtWnUzQUlqMG9va29SdFZwcXpva1I3b1RBb3dZNTZISmZpb0FndTJ4OVgwUU40b0NZcWtjTnNWSnJ5cG5CS2t5V2Z2TTNiak5kOXljZi9NckpreXNiNW1kZTlvUFArL21mZS9NZi9OR0gyT1FPeVlMUmZDaE5PbGNnb3UxWEw5cmxsRHhnU2R4RjZjbVViQ3JZM3RROHFzQmFKYUVpMVNOcWJiSUs5MURWVWlva1FLYWt0WXhGT3lVdnZmelNTeSs5OVAzdi9memRuLy9Fd2FlL2ZmWDJseXd0dnZwWmwxMFo0VTBrNWM2b3pVYVNTcW5uOUlXdERsSDNzTlI1alp5dERTWkZGSUtjTzlFa2s5QUJRL3BheEpKSWlJaVptWm9JeEtSNmJValkxRWkzWkdJWmtLL3QvTXY5VHoxRThwdTc3N255aXVzV0gwcW01aEVxays0ZUJCaEp6UmlUZWEyS3F0cVZPNjc1a1ZmL3VLbW9LRlFnbG9ES0VCSFR4cWUxemRVNVFaMlRnalVZWkpob01LTDlRc1RDOFdQLzdiKytOOGpEVHgwL2N2ajBiYmY5NnErOTdkY2ZmbWozdjNyTmo3M3M1Yys5NjMvY1B4NlBwV1ZpajhtWUdFeG9IVGVheE1XVDVHOC8vT0RlZi82V1I1aW9tamFLS3BwTTREWGF1TEhVYWltcm9KSDBWdVUydmJLN2s1S3pOU2x0Y2RmVWllTFU0dE4vK2FsL2VOMi9lZkYvLy9NL08zWHExTlJ3M1IxLzhmREJ3M3RTemxIcldaRUZTU0tKU090bHBjbWh6TlRVYTRVQWFtMXJ3d2s0clNsbHd5Rm1DbUhMNEJBMlFVNnRKUUk1cFFpdnhRRWhtVk1pNE80cStLdlBmUHowS1Z4ODhmbXpjOTMrSi9jOHN1ZWhyKzc4ekVUSm9JaEtURFFPbXRiYUl3SGdYdDF6QkZVZ2FxWFduQklFYWtaM0VTTWdxbDZLcFpZc2xFR29kbG5wREJ2UUNhR2w1QjRnTEtWeFB4cmtJUWlSMkgvNDRULzlpMSsvYXZ0Tk16UHpSNTUrL05ISEhsQlYwVGI5Q2hWR29CV1U2WXkwQ1FwVHE3VjBnMEhEUFFvVmhWbFdVUnQwcFZTSUVaSnpvcWdCS2lwWkNJUlhRcUo2emwycEJZUnBnZ1NnWm9PZ2M5S05vZmYrVzQvOGZmVnFlaFozQzl3OUpwSVd0bEcveUlRbGtSNmVVMnFpQURQVHBCRXdrVnJHcFhxYjZ4RU1TcTN1VVUxRlFIZ0ZrcGxwU3RBMjlrNVF1b2ZYQ25pckFVQkFOS3NSM3BKMWsrZjJwVVJRMWJnbWxnR1p6TFRwZUJxeUQ0UlNvcm9tMFpRZ0tPNmsxRnBGVFJta1RIVURqeUM5UnBoUXhBZ1hHQ0ljQU5tWE10R3RBVWtNZ2lhRERMcWFxU1l2dFkvS05qTnNiUlVqSW9UU0ZNUkpOZW1rSFFYaDRVcWhXUmZoUXFVVHB0bVNxampnSlN6SjB2S2lDRXhOMVpoUzBDTllheDEwd3hvQmhDVng5NG5PRDFCcFlRODRLS1NqcnpVbUJMZk56N1VmOTJDcjdwcDhEUFNXY1J3TWdtSXBOOFZENmZzQUZheGxUSWFYSGhKOXFSRkJDTlVvTEdYY1pyYXFOaHFQNk1VanFvZVRIdTFyRFVHMVZvWkRNZXI3Y2VtRFVFaWNLZlZJdFFrQnFPRVFTU0lDQ2hsWVkrQUtKZG9NVm96d0NCRWRqMGZob2FhdE15MjFCaWxCTlMxbDNHWHIrK3BrbDNJTlYxVjZtNHVIcUpUUmlBeWRhR0dDWVdpZElWREtXQ0JCRWdFd2dnMWlOWEhQV1JnZndlcGx3aTNNcWhkRDdzc29xZlhWTlVJaGF3ZU1GRVl0UFVTV2xzY0NVWlVRYWJOU245VGxQc3hkSVZXa2RlU2k5RHBSRGs5c3BaQ0FOOXRLQTdsSWV1WjdKVUVBWThwZzBKRUNCdHhGdFpaVmtoV1Y3c2lwZXJCTUJ0dVRhclpVaFJRV2MrMUxyeE5GWjFNazJxanZ4ZFM5Zlp2Q1dVUFZJbXBMTHg0Qko5amFDMmNMdklpVVU0cEdMeU5LalpUb3RaQU0wTlpNMkw1b29pSVlxUW9vS29KazVoN2hUaEZUYmVYREdTSW4wbzRqSmRzeExOSnlvV3JMY3dDYVRyS3h2QWkyQzd0WGt1a0YzL3RpSnhZWEYxZVdsL3UrNG13anRGWk9ORVFEVVZWNTVnTWkveWZ1ZUZiaEtPZXFVczhJWk05UTNjay9JaUxKTk9jOEdBNW1aK2R1dU9IRy93MGpKNmk3d1owdmtBQUFBQUJKUlU1RXJrSmdnZz09IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiRklET18yXzAiXSwiZXh0ZW5zaW9ucyI6WyJ1dm0iLCJleHRzIiwiaG1hYy1zZWNyZXQiLCJ0eEF1dGhTaW1wbGUiXSwiYWFndWlkIjoiMzBiNTAzNWVkMjk3NGZjMWIwMGJhZGRjOTZiYTZhOTciLCJvcHRpb25zIjp7InJrIjp0cnVlLCJ1cCI6dHJ1ZSwidXYiOmZhbHNlfSwibWF4TXNnU2l6ZSI6NDA5MH19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIwLTAyLTEzIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiT25lU3BhbiBGSURPIFRvdWNoIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyMDAyMTMwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMS4xIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjMifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMTktMTAtMjgiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDE4MDkyNjAxNiIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4zLjQiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMC4xIn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMy0xMi0xOSJ9LHsiYWFpZCI6IjAwMjQjMjMyMyIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFpZCI6IjAwMjQjMjMyMyIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJHK0RGYWNlSURLZXljaGFpbmlPUyJ9LCJkZXNjcmlwdGlvbiI6IkcrRCBGYWNlSURLZXljaGFpbmlPUyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6InVhZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjJ9LHsibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X2RlciJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmYWNlcHJpbnRfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiYXR0YWNobWVudEhpbnQiOlsiaW50ZXJuYWwiXSwidGNEaXNwbGF5IjpbImFueSIsInByaXZpbGVnZWRfc29mdHdhcmUiXSwidGNEaXNwbGF5Q29udGVudFR5cGUiOiJpbWFnZS9wbmciLCJ0Y0Rpc3BsYXlQTkdDaGFyYWN0ZXJpc3RpY3MiOlt7IndpZHRoIjo1NDAsImhlaWdodCI6OTYwLCJiaXREZXB0aCI6MTYsImNvbG9yVHlwZSI6MiwiY29tcHJlc3Npb24iOjAsImZpbHRlciI6MCwiaW50ZXJsYWNlIjowfV0sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlCbURDQ0FUMENCR1FkUFIwd0NnWUlLb1pJemowRUF3SXdWakVMTUFrR0ExVUVCaE1DU1U0eEN6QUpCZ05WQkFnTUFrMUlNUTB3Q3dZRFZRUUhEQVJRVlU1Rk1Rc3dDUVlEVlFRS0RBSkhSREVMTUFrR0ExVUVDd3dDUkZNeEVUQVBCZ05WQkFNTUNFRlZWRWhTVDA5VU1CNFhEVEl6TURNeU5EQTJNRE13T1ZvWERUUXpNRE15TkRBMk1ETXdPVm93VmpFTE1Ba0dBMVVFQmhNQ1NVNHhDekFKQmdOVkJBZ01BazFJTVEwd0N3WURWUVFIREFSUVZVNUZNUXN3Q1FZRFZRUUtEQUpIUkRFTE1Ba0dBMVVFQ3d3Q1JGTXhFVEFQQmdOVkJBTU1DRUZWVkVoU1QwOVVNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVTSXBJL2RLWUNEWWh6d0Qyd1NmWUFPYi9uTmFpUGNXRjIxdnhaay9UZ0QwT0p0Y0QrT1BtNjRud1pkRldTRVlTVzdpT3FucG1KeWRlOG1nci90bkFpekFLQmdncWhrak9QUVFEQWdOSkFEQkdBaUVBM2J2aGF6UUZQd215WGx4Sy94Q1hmaDdnMVgxRW9iTEMzTCsyR09SeHA3Z0NJUUNmTkVUWC9tMkJlYlJMWEk0TE1QMUVRR1BYRkRmN09rNzRVN3hiaU00VmtBPT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCwvOWovNEFBUVNrWkpSZ0FCQVFBQUFRQUJBQUQvMndCREFBTUNBZ01DQWdNREF3TUVBd01FQlFnRkJRUUVCUW9IQndZSURBb01EQXNLQ3dzTkRoSVFEUTRSRGdzTEVCWVFFUk1VRlJVVkRBOFhHQllVR0JJVUZSVC8yd0JEQVFNRUJBVUVCUWtGQlFrVURRc05GQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJUL3dnQVJDQURJQU1nREFTSUFBaEVCQXhFQi84UUFIQUFCQUFNQUF3RUJBQUFBQUFBQUFBQUFBQWNJQ1FRRkJnSUQvOFFBR3dFQkFBSURBUUVBQUFBQUFBQUFBQUFBQUFFREFnVUdCQWYvMmdBTUF3RUFBaEFERUFBQUFheWo2RjV3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVnZDNlRFQ1eExKMzZ4Rm9jNWw4bEdQU1hLc3pORE0wOU5WZE4rOFA4WmRMS0JIcGllK3ZoVHVvZk5YTkF2bStNeVVtUm4xZFFaZ0FITTRjdzFMaWNQMVZMZVF1alR6SjJkSk0zMzVwaGFhVWplYWJLVVJ2ZFY3U1oxZFRTNlN1Rmt3US9iSHI3NjV0MkYxbWRrODdOUHFFK1NZeUhSMWdBTEIxOGx2eVRlalBYUXFtdWdzZ1lkVlZwMXlhSGZYTFczdlVRazJwYUlxZDVNcllxSVBmamRMTm1UWXkyK0NUb3hzYjZJdHRTdTZsQTlCWkhBNnFvQUJ5T09OSFAycFBlbmpycy84QXhtbmNZYkxDaWE2ejB4U21hWnQ5SFJNbFVSdmRGK3F6b1l1czNsZEtWMXU2aWFtM3Q3UHJ0Sm4wR2VudS9BOURXR3h4QUFBZXY4Z3hYS2svT1pxYzlKbWJLbHBNelpHa3pOa2FUTTJScE53TTZFcmgxajh3Mk9JZXlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQLzhRQUtCQUFBUU1EQXdRQkJRRUFBQUFBQUFBQUJRQUVCZ0lEQnhVWElBRVFFellSRWhZd05IQTEvOW9BQ0FFQkFBRUZBdjZiR0lTUmxOWWJGZ1VaUzNGTW1sUGd0S1cyYmZTTHJFMVBTdVcrQzB2QmFYZ3RMd1dsNExTY2lHTHlrMWlnT1Jwa3NRSXhlOStHQVFtcVVQRzdlMDBzUG43WWEzZTVkQnRxOTV4YU9aWUhGQXl4SjdjcEJreGhIaTI4NHRiemkxdk9MVEhMUUozVzFkMkgxaDZ5c0VXczVoMXlLRU9iUnJjZk9nWWl5QkZTV1F0NHlLUFNGN0kzdkRFbnR5eWY3dHdqY29mUmg0Q05ONUFNbEFLM0l3bHkzVlp1Y3NWTU9qMlhMTFJtcDlJKzFHSmoxZE8waDViU0hsQW9DVmpwOVRYSGhZOUpkcER5MmtQSnppdzQwYmRzT21hbTVkWkhZZEI4dzVZWStOZVU0K3JwTHV6YjlibWUvd0FQdGpYNnZ2VlpmK1B1dmxpNGgwWVM5WmRDVk16M2FuSnNqb3AzUGtpM1BraXg1TlRCNlJLZFRvMkZsRzU4a1c1OGtWL0pFaGRXTzJIQWxWNGdzaGtPaEtYOHJGK3RyZmpSeTFJd3g0RzJrUXlTUlIvRjNYREVudHl5Zjd0d2lzTmZTbHlJRk53ZytZU0dpTkE2cXV0ZFhPRVRHN0UzN0IrM0tOTDdlMDZ0UGNYeDk1WHRDQ1cwSUpiUWdrQmdBdU9QMGF4MEpQRXRvUVMyaEJMYUVFbU9NNCt4cnRXcUxGc29WYWhtVXhsbDZXRXZ3eDZVa0l6ZkM1ZUdQS1c4cURPcWRkR3JYUnExMGF0ZEdyWFJxMTBhdGRHclhScTEwYW5NdEN0S1RlWUI3V2s5Skg4a2MvMDMvOFFBSFJFQUFnSUNBd0VBQUFBQUFBQUFBQUFBQUFFUkVnSVFJQ0V4VVAvYUFBZ0JBd0VCUHdINnl4azZSS0Y3cVVTaDR6eWZTMURFbVpFUFdMTXVDOU10V1JZYmdzaHVSZW1YbkZPU3BWaXhZMUpWbFdKUU56eXNXTEZpeFlibjdILy94QUF1RVFBQkF3RUZCZ1VGQVFBQUFBQUFBQUFDQUFFREJBVVJGU0ZTRWhRZ01VRlJFeUl5WVlFUUpGQng4RFAvMmdBSUFRSUJBVDhCL0xWbGQ0UGtqNXI3aXB6emRSMGxReHM3aXFyL0FBUDlLT001WDJRelc1MU9sYnJVam5zdW9LK1dGN2p6WlJtTWdzWTh1Q1UvQ2pjK3lwWXQ2bXVMOXVoRmhhNFZ2VUd0bFUxTUpRa3pFck9rR09WM043c2x2Y0d0a0VvUytoNzFhRk14ZzhyYzJWbFN2ZThYendWWTdVQnN5c3MyR1oyZnI5TUxtN3QvZkNrczZXTVhOM2JKUVFGVUZzQXNMbTd0L2ZDb2FZNlpuWStxcXpZSUNkMVpZM3pYKzNEVlU1VXNtMFBMb29iVUc2NlZsaWNIdXA3UWhraUlHNnFobkNua2NqN0xFNFBkUGFrSFM5Vk5VZFdWM1RzcUttM2VQemMzNFNGamJaSkhaY1JaaTl5d2tkYXdrZGF3a2Rhd2tkYXdrTlNocElvUFMyZjVqLy9FQUVNUUFBRURBZ0FIQ3dvRUJRVUFBQUFBQUFFQ0F3UUFFUkFTRXlFeFFaTUZJQ0lqTXpWUllaR2gwUlF3TWpSU1luR0J3ZUZDYzdHeVUzQ1NzL0JVY25TQ3d2L2FBQWdCQVFBR1B3TCtadDJFWktNRHdwRG5vL0xwb0Y5czdvUGUwOTZQOU5XWWlNTWpvUTJCWEpwN0szV0lRa0h5VnpWN3VBQWdFWkJlbjVWeWFleXVUVDJWeWFleXVUVDJWeWFleXJQd283dzk5b0dsS2loVzU3M1MzblIvU2ZwVnBUZU15bzhCOXZPaFhtaTlJdW5jNWs4TWo4WjlrVWhsbHRMVFNCWktFaXdGRitVK2lPMFB4dUt0UlMwSkVyM20yN0R2SXIxS1oySjhhbXcyNGtwSzMyVk5ncXhiQzQrT0Fma0wrbUI2QTlGa09PTld1cEdMYk9MOVBYWHFVenNUNDE2bE03RStOZXBUT3hQalFTNFg0blc2M203cjBsNk84aDlwV2hiYXJpbkk4bHBMekxnc3BDcTRGM0lMMmRsdzZ2ZFBYNWhtT3lNWjExWVFrZFpxUEJZOUZwTmlmYU9zMDVNZjRYNFcyOWExZEZHUk1keHZaUVBSUU9nRGVqOGhmMHdUL2czL0FHMDcwUFJYT0xQS01xOUZZL3pYVE0yTWVBdlNrNlVuV0RVaUV1Mk1vWGJWN0s5UnBUYXhpclNiRUhVZCswdFF1STdhbmZwOWNIa1FQRXcwZ1c5NDV6OU1JVUJIc2MvSzFvamJXdEViYTBKY3NNNUhKcVR3RjNPQ1ZOaWhuSU9ZbUxqdVdPWklGYUkyMXJSRzJ0T3Z1Q1BpTnBLMVdjMURDL3VjbzhWSVJqcEh2ajdmcGduQklzbDBoNGZNWisrKy9tOVBrMy9vWU4xY2JUbHpoYS8yanpHNlAvSGMvYWNPNXVMMHIvWXJBbTMrbVJmdE8vanBVYkprSVV6OVIzZ1lFYm9KVHhNdE9jKytNMzZXd2hJbml3emNpMzRWemdOZzM0VnpnTmczNFVJczJYbG1Na3BXTGswcHovSVlKY1NITXlVZEdKaXB5U0RwUURyRmM0RFlOK0ZjNERZTitGT011VGdwdHhKU29aRkdnL0xESjNVV25pbVU1SkI2VkhUM2ZyZzNRV2szUTJySkQvcUxIdnZ2MjNtbFlqamFncEtocUlxUE5hdGRZc3RQc3IxaW5ZVWtjQmVoUTBvVnFJb3R5bTd0RThXK24wRi81MGIwZmtMK21DZjhHLzdhZDZBeWd0UlFlTWtxSEJIdzZUVE1PS25GWmFGdXM5WnArVVNNc1JpTXA2VjZ2R2lwUnVvNXlUNWc0MTNJTHZMTkQ5dzY2Ymt4WFV2TUxGMHFUU21ubTB1dHEwb1dMZzBWQ0txT1QvQmNJN3EweXRyOXEweXRyOXEweXRyOXE4c2lGL0s0cFR4aTdqOU1EczZTWDhzNWErSXV3ekMzUjFWcGxiWDdWcGxiWDdWcGxiWDdVRmVSbVFvZngxbFhkb3BLRzBKYlFuTUVwRmdLY2xUSFF5eWpXZGZVS3l5cnR4bTh6TFhzanArUG1zZUU5WkI5TmxlZEN2bFFUUGJYQWQxbTJPanV6MWR2ZFNJZW92QUd1Y0l1MlRYT0VYYkpybkNMdGsxemhGMnlhNXdpN1pOYzRSZHNtdWNJdTJUWE9FWGJKcm5DTHRrMWQzZFNJT29PaFI3QlJUdWN5dWE3cVd2Z0k4YXkwNTdIdDZMWXpJUjhCL003LzhRQUtCQUJBQUVCQlFnREFRRUFBQUFBQUFBQUFSRUFJVEZCVVdFUWNZR1JvY0h3OFNBdzBiRncvOW9BQ0FFQkFBRS9JZjhBVFlqbzRhRFRNME9NVVk2M3ZFdEJaRythQkZ1RCtoWHE5RzVFQ0hOc3U1YUJOUFY2OVhyMWV2VjY5WHBjNVlmMnltWk8wUloxVCtpZ1o0VGdoT0RvL1VUQnU2Ti9OL1hBMzBhNDBTT1FWZXFyQWQyL1NvTUhndXJPbXhHRWhucENBdVczNFVTTHFobGhNU1BnUm8wYnB0c3QzTzZYYWFvYmlWQ0VKTWllWTBERTAzaG0wSFU0eDg5ZHFYSkJSbUVTRGJpdXF5MWJwaXdNTHVIOVhBR2wzT1c3Y3N2NjQvWlJ3VnNvU3VPTStZcWZ1ZVFmTkZDcUp2d3ZVNkxUKzI3K0JoUG5aa0gzT3c5WjhOaFplaGFZbkpIRGJBNW9QQlhuUHl2T2ZsRTJERzh4RmthYkhtUkdJR3NqTWE4NStWNXo4cS9VUEZnbHcwMnBOa1pmSjN6NU5uSHZJQ2ZtRkIzVzYzN2JEYVBNNVlkSTIrV3krdFFGYkp0TjF0c1diY3g2Zm5QQXBYTk9vTGpzVEJEQnVCRWNRdWUwb1lJR0Z0b1VKMnJCTE1pTFFkaG5BcFlNbGFqZXUxQ2hpRmdYa0lTekx0U2dKZGtyRzdZd3dnNFowSHpOQXZSaUpIblNoQ0MyNjcvUkdzY3VYWWMwZnBqVGxMTWRodndkVnYyVWNJTkJyQ2NUK0E0eFZqMWxONWptSzIxYXRFV01kQmUwS2Z3MlFsWDZISU9oZURMUmRic2tuRHFLeC9IU2lKOUJadFJxMHk4eFBOSWNDdlNxZWxVOUtvYlFOaElHK3lHekRkZjdBRUdnVjZWVDBxbnBWTU5JRWp1Y1NnREZEZ1pBVVNXcmJ4WUJpdVZMUWxudkVhc2VCaDlTK1laNWg1dFNHc0RkRkx4c09YR2pVNS9CRm12UHU5ZWZkNjgrNzE1OTNyejd2WG4zZXZQdTllZmQ2OCs3MHlpbjY0TFdCdVFSMXR0Ym9OOVNVNlZHV0J2di93Qk8vOW9BREFNQkFBSUFBd0FBQUJENzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc2b01qZzR4dlAzNzc2bXB6eXl2emVwcjc3NzNqNVQvejVlL3o3NzY0cHY4QXZxLzZJRysrKyt2Yy93RC9BUDhBdGY4QXZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnYveEFBZUVRRUFBZ0VGQVFFQUFBQUFBQUFBQUFBQkFCRXhFQ0FoVVdGQlVQL2FBQWdCQXdFQlB4RDliTWRCcXpNRVVNejJsbjJCaEVScDJCYlVXQ1puaExCeEFweFBLSW1aUTFEOTJjUkR4ckFXb0F0MGl3aHNib0RUSHJwQVJqQ2pXaG01dEdvTXpMOVMvVXYxTDlTL1VYTDlqLy9FQUNnUkFRQUJBUVVJQXdFQkFBQUFBQUFBQUFFQUVTRkJZWEhoSURGUmdaR2hzZEhCOFBGUUVQL2FBQWdCQWdFQlB4RCtzYjMxOXVOWURvN3RQUkZVMEU4NXp2a29kVnZtTjdlNCtLdEpVKzN3N3pKK0dLelZiR0dSWXRWcVcvVEZnWXFCZFAzSUM5VWFGWVhRVkZ1WlAxSVVvMGNJWE5OOWlZNVFEbXlsSGgrT213M0JIaTJYQVN6T3g4ZjR1MTdqRkhrRmJGOVIrZ0lWdDVGdzhaKzR3cGcxRzZ2eUV2QkJPYlpFVWJoZVRZUVNqTngycXE0WVpuZVVWZGVKZnl1bjFHc3JRMUNGbXNxRlVVV1pucWZVYXdCVUxrZTRNSlM0TGJmbGpaeWNPQnk4N0wwS2pjeHFxd2J6dmIzbUs2YXpGZE5aaXVtc3hYVFdGUzE5Q1czbkcxMDVmMlAveEFBbUVBRUFBUU1EQkFNQUF3RUFBQUFBQUFBQkVRQWhNUkJCWVNCUmNZRXd3ZkJ3a2FIUi85b0FDQUVCQUFFL0VQNU52Y1U0WmtpNStBdEtRMEhyQlo3cWVlSnZtaml0QU5lZ3I5TjlVekdNQWpzc2FTR2t4QjZOZnB2cXYwMzFYNmI2cjlOOVYrbStxUE1VSnIvU2l4OCtub2c0b3FtQlBia3NER05zYktTRS9FUzB4VEhBMkZrU3VnRUlRU1dYaGNBc0ZXVmZUUjJDdDFGaEs3RlRKdEFwZUhTREN6SjNmdWhNRVRBdkhRME9MbTlsbzFnREprZWhnd1lORCt4RStXRGxBNzBicDU3b2NJa201a3B0M2Z0ckNNSUlSQkVRYVAwS1V3WFdXdWtPSWt2RDRIRmR3ZFBnbEwxakF1SlYrWStDWUxCVS9pd09BVjJ4WmdNaERBTVlQajFCdElnWWx2QktXL3lORkpCRzJwc20xREE5Z29xd2gyR09BWVQwa0paR25pa0p3MUIySndaQnZSaWJlaEFnN2lKMWx0aWtraUw4Z2prYU1CRlEvd0JuZndjKzdyZFBhWXNKSi92WFBObGdkOEJoYTdSOXNSSjNWSkhLeEd1ZVpGYjFkREVac0syckx6MFpDaW8ya203OGVoQ1Q0RVN0Kyt2S3FKTjd2K2s2QkxKVGRPSFdmaDl2eDNzYlJXZTQ5YU5PRVFoK2R1c2FOUzBFSS9RT1JveUlTbDNuMmhYZDR1b0dIeXFBUUd1VEphRkd6YTdZWkxhWTBtV2Z0ZHcwbDExekJiV1RKdjFEc3NuQ2twSkVkU0lDSmFXUzQ0ZkhReXIrR1RFbnRNOTllTTVkRERjZ0gxUXhFUzVLQ2IydUp6dUZNcVNEUzhTbkNMd2lsbFRBYkNyc283UE5oeVF2eHRGQktCUWhuc0xlRzNKQzlaejhJVjNkQkxLZTdZQ0NwckxSYXZGbTkza1RLVWdYTWtKbFYzVlorQis2c1RGWURZRmJXRGRGQWJBcE1HNG1RYktCRVJCSzRGbnVpRWllU21BRmRLOEo0UUhRelpzek5WeXkvQmNzYjZFbW1DUEo4Sk1pK1o2R2JOblBNMCt4Y3oyRkRVS0JkZ0FBNEtrYUNmT3dDOGFBU3RYcVk2U3Q0Yk1Zb3hBU0IrSjlnd1RGNWlJV21BdE1TVkRZb0tKM0N1ZG1KM1pvRWVKZ2J5WWV6NHYvQVA4QS93RC9BUDhBL3dEL0FQZ2dSTDZ4UWVpb2IwUlYvQmI4anNvQTNiRW1Nall3SlVxQ1ZqK1R2Ly9aIn0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTA0LTE2In1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wNC0xNiJ9LHsiYWFndWlkIjoiNTYwYTc4MGMtYjZhZS00ZjAzLWIxMTAtMDgyZjg1NjQyNWI0IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI1NjBhNzgwYy1iNmFlLTRmMDMtYjExMC0wODJmODU2NDI1YjQiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiS1FDIFF1S2V5IEJpbyBGSURPMiBBdXRoZW50aWNhdG9yIn0sImRlc2NyaXB0aW9uIjoiS1FDIFF1S2V5IEJpbyBGSURPMiBBdXRoZW50aWNhdG9yIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfSx7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyIsImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIiwiYmFzaWNfc3Vycm9nYXRlIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCIsImJhRGVzYyI6eyJzZWxmQXR0ZXN0ZWRGUlIiOjAuMywic2VsZkF0dGVzdGVkRkFSIjowLjAwMiwiaUFQQVJUaHJlc2hvbGQiOjAuMCwibWF4VGVtcGxhdGVzIjo1LCJtYXhSZXRyaWVzIjo1LCJibG9ja1Nsb3dkb3duIjoxfX0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MTAsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDRmpDQ0FieWdBd0lCQWdJVVNRWjNocjhZczU2NHlKZWpva2swdkdyVUFNOHdDZ1lJS29aSXpqMEVBd0l3VnpFTE1Ba0dBMVVFQmhNQ1ZWTXhEREFLQmdOVkJBb01BMHRSUXpFYk1Ca0dBMVVFQ3d3U1FYVjBhR1Z1ZEdsallYUnZjaUJTYjI5ME1SMHdHd1lEVlFRRERCUkxVVU1nUVhSMFpYTjBZWFJwYjI0Z1VtOXZkREFlRncweU5URXdNVFl4T1RFME5UZGFGdzB6TlRFd01UUXhPVEUwTlRkYU1GY3hDekFKQmdOVkJBWVRBbFZUTVF3d0NnWURWUVFLREFOTFVVTXhHekFaQmdOVkJBc01Fa0YxZEdobGJuUnBZMkYwYjNJZ1VtOXZkREVkTUJzR0ExVUVBd3dVUzFGRElFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRd1dUQVRCZ2NxaGtqT1BRSUJCZ2dxaGtqT1BRTUJCd05DQUFRK3liZlZHNnIzZ0hBckJFbGcvMi9vNzRYQUhFWHlDaWYvY29aZnpXQncveGV2UTJsTnBXMjNjUlA3a05GQUJ5a2ltZG0rRnFtRTZFakhCeCtPK1JVY28yWXdaREFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VCTUE0R0ExVWREd0VCL3dRRUF3SUJCakFkQmdOVkhRNEVGZ1FVMmpzbTAwYUJiTmhIdVhJaWRxb2owZlYzbU1Nd0h3WURWUjBqQkJnd0ZvQVUyanNtMDBhQmJOaEh1WElpZHFvajBmVjNtTU13Q2dZSUtvWkl6ajBFQXdJRFNBQXdSUUlnSkgwaGd4T25RaTB2aDNHZ0tLMEpTSG1CQ0p2dUNMNmRnb24yaTcwV1RlNENJUUNNTHZIYnYyNHA0SCsrblMyaHJUbWVUc2ZYb2JDWldzcXFZL0xhdkY0dDBRPT0iLCJNSUlDbWpDQ0FrQ2dBd0lCQWdJQkFUQUtCZ2dxaGtqT1BRUURBakNCc0RFdk1DMEdBMVVFQXd3bVJrbEVUeklnUlc1MFpYSndjbWx6WlNCQmRIUmxjM1JoZEdsdmJpQlVSVk5VSUZKUFQxUXhKVEFqQmdrcWhraUc5dzBCQ1FFV0ZuUnZiMnh6UUdacFpHOWhiR3hwWVc1alpTNXZjbWN4RmpBVUJnTlZCQW9NRFVaSlJFOGdRV3hzYVdGdVkyVXhEREFLQmdOVkJBc01BME5YUnpFTE1Ba0dBMVVFQmhNQ1ZWTXhDekFKQmdOVkJBZ01Ba05CTVJZd0ZBWURWUVFIREExTmIzVnVkR0ZwYmlCV2FXVjNNQjRYRFRJeE1EVXhNekV6TVRrd09Gb1hEVEkyTVRFd016RXpNVGt3T0Zvd2djMHhPakE0QmdOVkJBTU1NVVpKUkU4eUlFVnVkR1Z5Y0hKcGMyVWdRWFIwWlhOMFlYUnBiMjRnUWtGVVEwZ2dTMFZaSUhCeWFXMWxNalUyZGpFeEpUQWpCZ2txaGtpRzl3MEJDUUVXRm5SdmIyeHpRR1pwWkc5aGJHeHBZVzVqWlM1dmNtY3hGakFVQmdOVkJBb01EVVpKUkU4Z1FXeHNhV0Z1WTJVeElqQWdCZ05WQkFzTUdVRjFkR2hsYm5ScFkyRjBiM0lnUVhSMFpYTjBZWFJwYjI0eEN6QUpCZ05WQkFZVEFsVlRNUXN3Q1FZRFZRUUlEQUpOV1RFU01CQUdBMVVFQnd3SlYyRnJaV1pwWld4a01Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRXJWSGNkQ3czZjNnNExTby9RT25qcnJXZVJaUHlnc2JFZ3Z2VzF4dmFmT3dNWEk2SzA5MEs5VlpEOFB3TERkZnBDdXNPdkU4U0o5ZThzS2tWSDBsdUVLTXNNQ293Q1FZRFZSMFRCQUl3QURBZEJnTlZIUTRFRmdRVUh0UHBtcStKbXJjUVlhT3VkSDg2bHBiYXptRXdDZ1lJS29aSXpqMEVBd0lEU0FBd1JRSWhBSTdYbkw2UG1lRFBpQVIrd09GYXFrcWoxL3hUbjQ4VFp1Y0RqN2h0aTdGRUFpQVdhS1g1WXBySitTZUlPSkZwTHgvZnNPTkpES285VEJEMG5PN1kyQ2dCSmc9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFnQUFBQUlBQ0FZQUFBRDBlTlQ2QUFCNThrbEVRVlI0bk96OVI1QmNXYjduK1gzUE9WZTRDaDFBUUd1UkFCS3BrRG9ycS9LVmVMSzdYM042MkROajAwYWowV2hENDRJYjdybmdsaXR5VDdPaDlZSkRHMDViTjN2bTZhcDZsU1V5czFJTHBFSkNhMFFnaEVlNHV1b2NMcTY3aDBkQVpFUUFTSWo3LzFpaGdBVGl1dlo3ZnZlSS8xSE9PWWNRUWdnaENrVS83QWNnaEJCQ2lCK2VCQUFoaEJDaWdDUUFDQ0dFRUFVa0FVQUlJWVFvSUFrQVFnZ2hSQUZKQUJCQ0NDRUtTQUtBRUVJSVVVQVNBSVFRUW9nQ2tnQWdoQkJDRkpBRUFDR0VFS0tBSkFBSUlZUVFCU1FCUUFnaGhDZ2dDUUJDQ0NGRUFVa0FFRUlJSVFwSUFvQVFRZ2hSUUJJQWhCQkNpQUtTQUNDRUVFSVVrQVFBSVlRUW9vQWtBQWdoaEJBRkpBRkFDQ0dFS0NBSkFFSUlJVVFCU1FBUVFnZ2hDa2dDZ0JCQ0NGRkFFZ0NFRUVLSUFwSUFJSVFRUWhTUUJBQWhoQkNpZ0NRQUNDR0VFQVVrQVVBSUlZUW9JQWtBUWdnaFJBRkpBQkJDQ0NFS1NBS0FFRUlJVVVBU0FJUVFRb2dDa2dBZ2hCQkNGSkFFQUNHRUVLS0FKQUFJSVlRUUJTUUJRQWdoaENnZ0NRQkNDQ0ZFQVVrQUVFSUlJUXBJQW9BUVFnaFJRQklBaEJCQ2lBS1NBQ0NFRUVJVWtBUUFJWVFRb29Ba0FBZ2hoQkFGSkFGQUNDR0VLQ0FKQUVJSUlVUUJTUUFRUWdnaENrZ0NnQkJDQ0ZGQUVnQ0VFRUtJQXBJQUlJUVFRaFNRQkFBaGhCQ2lnQ1FBQ0NHRUVBVWtBVUFJSVlRb0lBa0FRZ2doUkFGSkFCQkNDQ0VLU0FLQUVFSUlVVUFTQUlRUVFvZ0NrZ0FnaEJCQ0ZKQUVBQ0dFRUtLQUpBQUlJWVFRQlNRQlFBZ2hoQ2dnQ1FCQ0NDRkVBVWtBRUVJSUlRcElBb0FRUWdoUlFCSUFoQkJDaUFLU0FDQ0VFRUlVa0FRQUlZUVFvb0FrQUFnaGhCQUZKQUZBQ0NHRUtDQUpBRUlJSVVRQlNRQVFRZ2doQ2tnQ2dCQkNDRkZBRWdDRUVFS0lBcElBSUlRUVFoU1FCQUFoaEJDaWdDUUFDQ0dFRUFVa0FVQUlJWVFvSUFrQVFnZ2hSQUZKQUJCQ0NDRUtTQUtBRUVJSVVVQVNBSVFRUW9nQ2tnQWdoQkJDRkpBRUFDR0VFS0tBSkFBSUlZUVFCU1FCUUFnaGhDZ2dDUUJDQ0NGRUFVa0FFRUlJSVFwSUFvQVFRZ2hSUUJJQWhCQkNpQUtTQUNDRUVFSVVrQVFBSVlRUW9vQWtBQWdoaEJBRkpBRkFDQ0dFS0NBSkFFSUlJVVFCU1FBUVFnZ2hDa2dDZ0JCQ0NGRkFFZ0NFRUVLSUFwSUFJSVFRUWhTUUJBQWhoQkNpZ0NRQUNDR0VFQVVrQVVBSUlZUW9JQWtBUWdnaFJBRkpBQkJDQ0NFS1NBS0FFRUlJVVVBU0FJUVFRb2dDa2dBZ2hCQkNGSkFFQUNHRUVLS0FKQUFJSVlRUUJTUUJRQWdoaENnZ0NRQkNDQ0ZFQVVrQUVFSUlJUXBJQW9BUVFnaFJRQklBaEJCQ2lBS1NBQ0NFRUVJVWtBUUFJWVFRb29Ba0FBZ2hoQkFGSkFGQUNDR0VLQ0FKQUVJSUlVUUJTUUFRUWdnaENrZ0NnQkJDQ0ZGQUVnQ0VFRUtJQXBJQUlJUVFRaFNRQkFBaGhCQ2lnQ1FBQ0NHRUVBVWtBVUFJSVlRb0lBa0FRZ2doUkFGSkFCQkNDQ0VLU0FLQUVFSUlVVUFTQUlRUVFvZ0NrZ0FnaEJCQ0ZKQUVBQ0dFRUtLQUpBQUlJWVFRQlNRQlFBZ2hoQ2dnQ1FCQ0NDRkVBVWtBRUVJSUlRcElBb0FRUWdoUlFCSUFoQkJDaUFLU0FDQ0VFRUlVa0FRQUlZUVFvb0FrQUFnaGhCQUZKQUZBQ0NHRUtDQUpBRUlJSVVRQlNRQVFRZ2doQ2tnQ2dCQkNDRkZBRWdDRUVFS0lBcElBSUlRUVFoU1FCQUFoaEJDaWdDUUFDQ0dFRUFVa0FVQUlJWVFvSUFrQVFnZ2hSQUZKQUJCQ0NDRUtTQUtBRUVJSVVVQVNBSVFRUW9nQ2tnQWdoQkJDRkpBRUFDR0VFS0tBSkFBSUlZUVFCU1FCUUFnaGhDZ2dDUUJDQ0NGRUFVa0FFRUlJSVFwSUFvQVFRZ2hSUUJJQWhCQkNpQUtTQUNDRUVFSVVrQVFBSVlRUW9vQWtBQWdoaEJBRkpBRkFDQ0dFS0NBSkFFSUlJVVFCU1FBUVFnZ2hDa2dDZ0JCQ0NGRkFFZ0NFRUVLSUFwSUFJSVFRUWhTUUJBQWhoQkNpZ0NRQUNDR0VFQVVrQVVBSUlZUW9JQWtBUWdnaFJBRkpBQkJDQ0NFS1NBS0FFRUlJVVVBU0FJUVFRb2dDa2dBZ2hCQkNGSkFFQUNHRUVLS0FKQUFJSVlRUUJlUTk3QWZ3TURnY0N2V3dIMFloT0FlWnRiUTdsa3BKWTh6RHo1ek91ZjZmbGZvQlB3Zk93UTk1ZjA4UVp5MVJiTWtTUUlNeGlpQlFLS1YrMlBmd0hqbm5jQTZzYzZSSi9qbjBQSVV4V2o0YVB5Z0gwZ2FnM09EWnNDQWtBQlNiQklESGtaeXd4ZjNTKy83TDU2bVFQUUQ1MjU3UmpGSVc2bTJXR2hISzB3eUZJVm9yTWxKVWR1Y1Boek41Z01oU3NNNmlGSGpHRVBvRzN6T0VnVWZvK3pqbEhxdXJrL3ZKV29lMUZtMDBldUExU0pLVVMxZHZFcVVaWVZpbUZQb29MRGF6R3c1bHR2dUYxaWg4ejBNYjZDU1d4bEtUSkVyUVJqRThPc1RJVUlsU2FQQ1Z3YTE0WHg1YzQ3S2l6VmNLc013dnRsaGNhdE5KTEo3blV3bzBSaWt5UUdVRnl1TW0vODNaZkN6U09WQkdZYlFHcFNoNWhsTEpJd2g4N3ZUK09PZXdEclQ2Z2NQY091UjUwK1dmTW5YM1QzbVNwTFRhS1VtYWtqcEhsamtNRGt2K1hKVUdzdnoybGoyYXovdGhjRWFoY05ncy8yL2w4dGNkclNuN2huTEZwMUlLR1h6OXJIVm9YY3pYc0pBQkFCUlJsSER1NGl3ZmZuR0pMMDlmdy9jOHRrMVVLUVVCSFp2aWtqdWZpSld2TUtranloek9PYlNuS1ljaFd5YXJURTBPc1gxcWhLbkpZWHpmN3gvalhMSENnSE9XVHBKUVZnR1k1ZWY5eGJlWCtkVTdwNWl0dHhnYnFUQThGT0FwajA0bnViZjdJejhObGlvK29lZXpVRzh4TjkrbUhUY1pHNnB5NU5BT2poN2N3dGFwR241WmQ4T0c2ajdXL0wxK01PL1B5bkFSZFJLKytPWXFIMzU1anBtRkRwV3d4RWpacHh3RVJHbEtvVHJrVk85MUIrVXB5TUJvalY4eWhOcGpmS3pLNXNrYWU3Wk1NRGs1Zk51YnNNN2hMRGl0Z0VmMU81WjMrenZuUUlHNlEyTnpmV2FSYTlQejNKaHBzakMvUk5PbUpKMHNIell3RHB2a3QwTTNVTnpxVVh6dVB5eWxGQVpIYkxzWEJVcUJObFJMUGp1bVJ0bTdhNXlEZTZjWWZLMGtBQlJRdTVOdzV2d00vOHV2UHVjM2YvaUcwUFBZdTJjVHc4TmxvazVNbHJuYmZwMGM0Qm1GYzQ1bUp5TkpVanhQc1hseW1NTjdOM1AwMEE0OFl4Z2JycTRJQUVYUkN6cEdhMnJsMG9wL201NXY4UGR2bitJLy91UDdYTHV4eVBod2phMVR3MmdNN1NqYThNbmJvZEJxK1FUcmdQcDhtOWw2aXlEVUhONjdoWEsxek42ZDR5Z2MrYVhuRDlQUXJ1NzFiM2NTUHZ2eUV2L2ozM3pNaFl0ekRGZExiTnN5UmlVczArcTBlNWVMeGFBdGtKK0t0ZFk0QjU2bkNmMkFNQXlZMmxSbHovWUpEdTJkNHRpaGJXelpQRXExSEt5NENhUDFJejJWdVgvVnIrQk9EWFM5MGVMSzFRVytQbk9EODVkbk9IOTVsdW1aSnEwb0pvcGowQTZYT1RMYkRRQzJkOHVEOXdLUDlBdnhBOGxmYTBjbmNqanJRRnM4ejdCcFlwaG5EbTJqVXZHN0FXQlpGRG04Z3JhRUJYM2FZRFBIek93U1g1eTZ5dXhucHdIRGJLUEY1dEVxclNnaGliTTdCb0F3TUtUV3NkU01TSk1VNHhsMmJCNUZPY1g0YUkxOU84ZEpuVjE1M0VCRDhLU09abHJuaUtJTTM5ZDRxeWI3ZmZiMUZYNzUrNi81MjE5OXdrZWZuOGZWTzF5cGxiZytNNFJXM1FDd2xoT1lwbnNDcE4vMWEzeURyelZaWmxscXQ0bGFNVFFTOEExYmRrOFFoaDVqd3lWR2hrS3E1UXF3M0MyYmg0NzcrMjZzZUsvZHluYzdUaTBYYjlUNTZJdUxwS2V1YzMwbzVNYWVMZFRLSlZyTkRyWklBU0R2eTBaNW9ERDVVSUJXZUo3Qjl6WGpZelcrblpqbTFQazV2dnp1R3BzbmE0eFd5NHhQVk5pN2N4Tjd0bTlhY1d2V3VuNEFWWS9Ba0VBK0RPYnd2RnMvWXpmbkY3bDZ2Y0dsYTdOY3ZqN1BqWms2Wnk3Tk16T3p3SlhwQlJZVzJyVGloRFROTUNxZnRXU3R4V1c5V3hpOHZiVDd1M253VCtvUlo1VENhVVduRS9jR1hkQ2Vac2VXY1lhckFRdEw3VnVPY1QvUXhjQ2pxTEFCd0NsTmFqT1dtaDJnRGdSRWpUYjFra2U3MFNHSnN0c0hhZ3RCYU1BNjBxVTJKQW1aNTFHdkJYVGFDWjBreFVHZVBndkd1ZnlVSHF3NjhaNjZNTVAvL01zditKdC8vb0xQdnJpRWE4VDVEMGNwOVhvTGxDRk9JOVp5QldQeW5sNnlnYi96UFVOb05PMGtKWnR2UUNjQ1BDcWJOM0hrNERaZU9MYVRJM3VuMkxwNWxOczI5dDh6TG5zdmJ2MFVLS0pPU3JyUUFSWmhxVUs5MlFJSFM2MFd0a2h6QUxxTTZtYzZuRklZcTFER3NialVZV1oya1VzMzZwdzZXNlZhclRCVThkbStkWXdUeDNaUXE1YVlIQjNxMzA0L2JOM2xhdnVIdEp3dFY0YkEyZGtsUHY3cUl0K2NudWJMNzY1eDZjb3NOK2VXbUYzc0VIVTZMRFVpR3AwSVVvWFQrUndqamNObEt6LzM0bGFlVVNpblNEcmRjd3dPUEkrbGtUTE5PQ1pLMHUrOWpTSXBiQUJBYWRMTUVjVXArZWtuemYvWGlVblRETkwwamdFZ05YbTZKOG9nemIrU1Vad1Fad2xaa3QrYVVzWHBqck0yNzNyWFdsRXJyZnhJMVJkYi9PYmRiL25WT3lmNThMT3pwTE9MK1dXNzU0R3p4SEVHeW9LMUxEY0RkNVk1dWpQR0FHVkFRZEtPU0ZJTHJRaGFiZkI4bUtwdy9QQTIzaml4bjVlTzcySFA3Z21DUjJGSXh1bDhnbEtja2wrNVpYbVlUR0pzbW5hZllMR3NidFN5N3VkcEtja0QrczNGTnRNM1F6emxVYTFvdGw0WnBkVnNvUlM4L094Kzl1L2FCSXBIWW9rcE1OQUxvZkFHNXI4c0xEUTVmM1dCNzg1ZDVZdHZyL0hOMldtK1BuMkY2emZxTkpzeG5TUkRLWWROVXNneWNDcnYvbWVnMS8vaDU1cEhXdW9VT0oyZmwzc0J3RUljcDJUcDJzNHhSVkxZQU9DVXhmU3ZWTHNmQ3MvaHRFTjVHcGVxMndjQUJjYlRlYU5udW9kcWpWWWFwVFMrN3pEZHNlalZ4ejJKbklNc3praFJsRUs5WXNEN3c4L084OXNQVHZIM2YvaUt6MDVlSkYxbzVnMWMyUWZmNUY5VTFiMzhNMnQ4Z1RMQWdmSThna0RqbkNOdVpCQkZFQ2NRbHZGM2pQUGlzUjM4MlUrZTVrOWVQY3l4Zzl1WkdLK3R1Sm5CN3VFZjhxMHhtdnh6cFZUdkQrRHl6eDMrRS9vaFdZK01QQ0FDZWJxenBGbk1mQ2NDcTFnSVBKYWFFVGRuRnpsN1laWlBUMTdscmRjTzhwTlhEbEdwaEN0dXlycmxlVHcvMUhDQWM0NHNzL2s4bUlGQU1qTzN3Tis5L1EwZmZYYUo4NWR2TUxQUTVzYjBJdGV2ejlOcWQvSUFuQ3BjMEgzZVNuY25TYXJsbnYwTTZlWC9Ic3BYT0tjaElROU1EdEF1bjJPQ1FadmJ2SURGeTl4OWhRMEFTaWw4MzFDcEJzd1JBaUg0SHJWcUJlMDZaUHJPVnhNbTBIaUpvMTJyUUJLQjlxbFVmRW9sTHkvbzRTbDBnVDVVeWxPRVdxODR5VjY3TWMvZi8vNGIvdWFYbi9MWk41ZHBMemJBOTZBY1VDcjdhSzFXalhldjc4eW1GUGkrSnJFMmJ6QzBocUVxNDF0SE9mSDhQdDU4NlFBLy85RlR2UFQwTHJ4Z2VlTFl3NTd4cTVRaUNEUlVBcGd2UVZBaXJIaFV5Mld3Q21zSzlNRlpoeXlEeENXNDFORlk3REI3WTVIdnp0M2ttM00zcUM4MUtaVjgzaml4djd0a01OZGJmdnBEckt6b2p6Nm9YbEdmNWM5WTVqSisvK0ZaL3VaWG4vUEhUeTR3UGIrSVF1R3NwUjNIZ01JUFEweVF6NGZvVFdRVjY2ZTF3amxJcTJYSUlDWERhRTJsRkJBR1p1Q2lUMENCQXdDT2dTNDZEekQ0Slo5QUcxS3RpZTl5YUVscmJNbVJwcG9FZ3pJR1l6eU1VV2lsVU1vKzhWL2czb1FyclRXZXQ3THh2cm13eUQvKy9pdCs5LzdYZkhieU11M3BCUWdWdXVZVEdJTXhtdEJYUktsYlcwME8xNXROM1gzUGdNUmFrc1RTeVd6M3l0OWpaSEtVRjQ3djVjZXZIK0pQWG4yS0U4ZDJyR2o4dXpmMVVDa0Z2bFpnREdEQU54alBKL0FNSGExUjZtRS93b2ZnZGt2YVhUNDVxN2Q4VG11SDhRM0thcEkweStkNUpKYUxhY3F2QWc4ZGVOeVlYZUsxNXcrd2UvdllpcHUzem5VN1hkUURxOFhVcS9CbjlNcktoSmV1emZQMkg3L2xIMzc3RmU5OWVvYUxsK2FnMVlIQWg4QURtMkU4SDkydExhS1V5dGY2OStjeURMeEcwblo5TDE4cG5PbUdQZ05ZaFZFS3p4aTh4NnhxNUEraHVBR0FmS0plUGxrdkJReEpsSkJrR1lteldIdm5zYUlvelJ2QUpMR1FaamdMMXFaa21jdlhKVHY5eEg5WHJiVWtpU01NVjM2cFB2dnFJcjk2OXhTLy92MVhmSHp5RXUxbWszeUNnTUUzK1ppOXRaWjJQSENtSC9qdGRub1hjUG5WRmFSR2tTYVdxSmxBbGs4ZUhOMDB4dkhEMjNqOTVmMzg1SlhESEQrNG5XQlY0dzg4OUFxUXprRmlIZGp1M0pQRVlaT0VKUEN4enVaRFMwWFcremdNdkF5OXhsVTdVTnFCVlZBT0lGUmdIYWUvdnNMMHpDSmZucnJPdFJ1TC9PdGZQTWZlWFJQTHgxdlhyUlB3NE9weE9QTHZ2aG5veVZwWWFQUC8vczhmOGgvKzVrTysrTzR5bmFVb0gvVUpQZEFHcFEwS2hkWU81eFJXdWJ6WHZ6dmdmOHZETFBoSFl5MFNyWEJKZm83SnNyejN4UmxOWmpQUzdrV0xXRmJjQU5DZG9idGl6cFdqZThWeDkrWFkvWDhmK09VS05qMVhhMDBZcnV4T2J6UmEvUGFEMC96L2Z2azVuMzk1a1lYNVJmQTgxRWlKSU16WGVEdG44L2wrRy9naXVtNWxOREtJV2gxb3hhQVY1ZkVLVHgvY3dvOWVQc2lySi9ieDlJR3RETmVXeDRPenpLSjFyMjc4L1hqMjk0SHRMbWR3ZHNWblRzNVB0OG8vWTkwM3J0dDVva3BsQXFWcHhaWjRlbzdGMlFhL3JVY0VCbXJWZ0ovWncremJzeG1nMzBQMUlGN2J3UXR6ZjlVa3hOOS9kSnEvK2RXbmZQRE8xekMvQ09QRERHMGF6cGNIZG9PSWN5c3Y4MWNHbi92L2VKOTB0M3lYQnYvOHFIejNIeUhGRFFCaTNYcnJtbzFSSzAvS3dKVWI4N3p6d1hmODlvK24rUHpyU3l4Y244c3J1MVZEL0hEd1I3c04zenIwR201ckhUWnorZEJCSndXbDhVZXJQSFY0Qno5NjlUQnZ2bktBRjU3WnlkaHc1UzYzdGQ1bkxSNm13UUk2YXRYWXVNUGxReWErbnlmNXVRVisvL3R2YUVVSjlZVVcvKzdmdk1xV1RTUDluODh5bTNkRzNhZVdvTmVRbS81OG9meDJ6MStlNWZNdnovTWYvdUZ6UHZ2cUVpeTB1b0ZQWTdQK2dzZmxJMVN2c2MrTDJFakRMMzRvRWdERW11Vkw5eDFsdmZKSytydUxOL25IdDAveTIvZSs1ZDJQejdFd3Q1aDNZL3A2UmVPZldidWhic3plMkw5ejNXR1hKTW1IRk1hR09ISndpdGRmUHN4YnJ4M2twV2YyTUQ0eWRNdnhXc3RPYTQrclhzR201VDh2LzMyVXp4SkFqMVh4ZFkybzNxQnpjWnAzYnRacHR4TDI3Wm5pdi9qejV3WnZiWGtJYUVYTmdJMCt0bDYxdVh6c0g2QVRKZnpUNzc3aGYvaWI5M24vMDdNMFo1Wmd2SkxmVnhCMGw4em05U2o3M2RIUzRJdUhSQUtBK0Y2OWNWT3RGWlhRckdoTW96VGx3NVBuK05VN1gvUEhqODV4OWNaY2ZyVlRDZk5adDFyanV1UCs2ejNScWU2VlVUNHU3b2c2RnBwTlVBWXpVdUh3d1NsZWZYNGZyNS9ZeC9Fak8xWTAvbG1XRFd3Vks2My9rMHByelZDb3FaWkRibGhITnJNSXpRVSsrZXdDZi9mYkw5bTFZNXdYbjk0RnNHS3lhbThGaXI0UHlYQ3dsNkxWU2ZqMG00djg4KysrZ292WFlYU0VvYWtSQXFEVERSM3VOb0ZHaUlkQkFvQzRLK2Z5d2l4R2tWZk1HemhmWHAxWjRKT3ZMdk9iMzMzRGg1K2U0K3FsV2VoMFVMVVNRZWl0bU1tOVh2bmQ1WGRtcmN0citLZHhYanRnT0dUM3JrMjg4Y29CZnZIcVlWNTVZUS9iSmxmTy9GNmU2TFh4Y2YvQnE4LzFIOWY3ODNKNVdvQ3M5NCs2djI2c0gxUWVxVGtLUDVoN2J3elQxTkdKSXd5UTFTb1FoVEMveEgvOHV3OXBOSnY4MS8vaUZmNzZGOCt1T0NicjFnall5SEJBYnlYQjdkNnY2d3VMWEw1ZWg2c0xRQk9pS3RaM0tEUXV0c2hGdjNpVVNBQVEzNnM3QXJ2aVpEYzczK1NkRDAvejYzZFA4WWVQVG5QMXhrTGVOUjk2aEtVQXBWVjNxOWFObmVwNmMzYWNjNlRPa3NWcFBuNDdVbWJQemsyOC9Pd3VmdkxpUGw0L3NaZXRtOFp1T2I3WDRONUxnM3EzRFZ6V2Rpd0R2UkM1L2pyay9pUkExdzhKdlY5aVBmSk5jdHJ0L0xVdWJ4a0RGTzJaUldZL1BjZi9aM29CejJoT1BMT1RIVlBqeTBkdDlIUHBWdmFJRFU2Q2JYVlN2ang1bWVucE9nUWEwbksrekJPUHRMdHBkWkhyem90SGp3UUFjVnZMVnptM2xsaU5rNFJQdnJuTUh6NDR6enNmbnViMHVSbXlUZ1NCZ1NBZ01Jck1WOWg0QXlmYWdTRmE1eHhSNG5DdFR2NVBsWURkMnlkNTZZWGR2SEZpUHllZTNyV2k4Vit4NWVvOVBmdDdNeGc2Vmk4NVU2c0xURWxsMHBWVVhnQnZ2YzJrYzJDTW9sd05DWXloWFc4QkVWeWQ0ZU9URjNudjQvUDhsMzh4dnVLWTFSczJyU1VzT3Rlcks3RHloNjlOMS9uYnQ3L2tuLy93TlZjdXprQWxoTUJIbDh0a0xzUGVZOWZPUFdUUlFsa08zcmY1czJTdlcwZ0FFTGRsWGI0bWVYVTM1Mng5a1MrL3ZzcHYzLzJXMzMxNGltKy91MDQwMXdCZjR3VUIydXV1YzA4MmRyV2p1ak9oYmIrbjNPWlZHVVBEenExanZQajhmbjd4K2lGZWVYNC9oL2FzM05aenVkZi8vcTMydjMxK3VmdWFvc0ZpTTlhNmJuR28zci9aL0V2WFcwVVJhclJSK04waVVvVTh5YTk2enYxWDE2M3hFOVN2SGVDSTJnbk9UL0theTM0VnRPYjZiSU5mdmYwTm5sSWNPYnlkdzNzM0UzaGVQaW1WWG5YSTJ6eVFPOXhabE5oYmRydjhoOTkreWYvOS8vVnJUbjcwWGI0VDVYQ1p5b2lQQld5U3IxYllTUHV6ZWhXRXVMdmxuaitWYi9HYjViMDBSaXVVTHVJUTI5MUpBQkMzMVd1TEJyOHdqV2FIejc2NXhqc2ZuT1lQSDUzaHUzTXpkSm9kOEEzbGNrZ1FhaUxiUGRHNURWekdkVGtIVWRKYkkyOHhZWW1wcmNNOGZYZ25yejYzbTlkZTJNZFRlNmZvYmRhd3VwRytuOS94MjU4dzduNFBnOGZvbGRzakxDOWxTeHlRUUNjbWl4eHRQeVB1TGJPODk0ZjlHRm9PVlJ1ZXMwRSsyYlFUUVZEeFNQMUp0SUVrVG5ubjB6T2twSGkreCtHOWVYMkEzdks5Zk9obDQ0MkR0WTZQdnI3TXlkK2RoS1dyd0JoNnl3alZrUXJOUnJ0YkhHeUR6MmxnSHNwZGFwT0pydDZhL3l4eitYNUszWlVhY2RJYlludllqL0RSSWdGQTlMbHV6VjJsdWxlakF5MTRxeFB6OWFucnZQZmhHZDc1NEF3bnY3N0s0dHdTK1dKL0gvemxTV3h1blkxLzd5cG5jRm1VaXhKd0ZsTUsyRDQxekhOUDcrS05GL2Z6eHZNSE9MeDNLOXBidmdMcmIvcnlDRjVBbTFWZC9xSHY1Yzh6VG9BSXJDRnV4bUE4NHFVT09FZWhOaXp0ZmN3TW9BMUdHNHluK3BQczFxdjNzZE5hVVM1clBHT29OenFjdmpCTnBSTHkyb21sVzQ1SlU4ZHRpa2JlY3J1OVFCeXUyclJwdHQ1aW9kNkFSa1JlVmRRUkJCN2EweWl0SUhQckswR3NsaXRXOXVlRjNNT0UybUxwN2dVUTJidzZtM05ZejVHNGpDeVRPVGFyU1FBUUsvUytJSU5kai9YRkZ0OWVtT0dkRDc3amR4K2M0YU9UVjVpNU1RODJnOUJnUEEvbklMNFBrOWdVb0ZNTlNtUEtBWnNtcWp4emRDZHZ2WFNRTjE4OXlKRkRPekNldnVXWSt6YUR2bittSHV6bTMzZ1pNVGU0OWh4WWFyYnoxNmdXd253WlZKaFBuUFEwV1NrZ1c3MWYrWjN1OW5FOWo2M29IZEhkcXJjT3lGQmFvOGozbCtqLzhFWW1CTkR0RFhDT05FcWgxYUhWc2R5Y2J6SmZieEtuS1lFM2VPcGIyK0MvNjlicUh3eDFEamg5ZnBvNGN6QXhERGRqQ0VOY2xwTEZ5VUFaNjdVLzlzSFB5M0tvQnVVVXJvaDdSYXhEYnpNZ3RGM3VoZFFLN1JRNDJRdGdOUWtBWW9YVlk2R3RWc1RwOHpmNTZJc0wvUEhrVmI3NjVpb3pjNHVRV1ZSWXBsTEt2M0QyUGx5ZFJJbEZaU2tPZ3drMW04ZUhPSHB3Q3llZTM4dkxMeDdnNklFdFZFcmRqNnh6V0I3QUZiK0N6Rms2cllSNnZjVmNvMG16aytDc3hTbU5yN3M3UUsvNU9XVUVvV0cwVnNWWng5bnpOM0hBVTRlMmMyNm9UTFhzTVRWYUpmQUM0alRGclo0VjZPN3dEQi9YaHFEN2ZIcXZYMm96a3RqU2FEZHB0eXl0T0tMVGlrRTdsQWtJdlh2bzFsSGdEUG4vMll3a2pWbFliRE83MEdEcjVHai94M3ovanJmUVoyM3Z1N0hjTStHYzQ3TnZyL0RITDg1VHI3Y29UOVJvaytVL21FSFNUallVaUh2N2tEanlYUkI3TlRTY2NtRHpTYTc5RDZFTUM2eWdUTGU4Y216QjJXNFBrOHIzYVNFaGlRdFdzLzE3U0FBUXl5Y3B4WXF1eWpSSnVIQjVsbmMvUGNNN241em5veS9QYy9uR0hFUVJLSWZ2NTFkRnZXN2M5WjdzK2hOMnVodWZPQ3d1elZDK3grVDRNTThlMmM1ckovYnp4b3Y3ZVBhcGJWUXFwZVhIUFBCZ043cUQzbkp2eDJBTG8walNsT3MzNjN4OStqb2ZuYnpJNVd2emRLSk9YbjNRMTlpczI0QVp0V296aWR5Szg3THg4bjNjRmFnc3d3U2FjalhrcjMveERKNXZnTHk4OGUwZkMzZGVJUCtZWHNtNDNuQU5lV25lS0U1WWFuYTRPbDNuNHJWNXJseWJwNzdRaERURmthSjBnUEpZODNMUzVSbjlLcitTVmk1L1F6SkxveGx6OWRvQzM1MmJZV3BpcEY4RVNDbTlvbEZmdlNLZ3Q3ckV1Wlh2ejhXcjgvejZ2VlA4NDIrLzV1U3BxNlJSaGlxSEtBeUtmSnJIZXI0VHZXcVh2V0dnTEU3SVB6aTZXMjFRZzZlNkt4QWUwd0Q0Z0NtVFgrMTNuTzJtUDFDZUpnd01ucS94dmJWRzkyS1FBQ0RvRHZ4M3U4anlwcXNUcDF5Nk1zOG5YMS9pbzgvUDg5SG41emwzNlFhMkUwTVE5RXVmOXM5dkc1M2sxSjEzb0hYM0NpdjBHUjJ2Y2ZqQUZLK2UyTStiTHgvZzJhTTdxQTAwL3Iwamw1ZjYzTi9Hc0JNbFRNOHQ4c2xYRi9qYmYvNlNrOTljcGJXd0JKNlBWektraVVVYmpWWU9lNXNyOVA3cDJUcThVQk1uRmhhWHdCbTJIZHJHdi92cmwvZ3YvdlFGRGg3WVJMUFY0ZkwxUmRxZG1GTG81WTNBaXFmNTVBV0EvdGE4U1VvelNwaVphM0x1OGpUZm5wK2hWaXB6OXNvTkZoZmJaQ25vZkF2QWRWWUtXaGxvdTFXc2lKT1VhN04xVG41N2hkR2hLb2YzVGhDRzRZcTEvTmE1MjFZSDdBV0RRUmV1M2VTMzc1M2k3VDkrVFdkbUtaOE1Xd256MVFWcVk2dGdlb0hCeGZrZUEwRXBwRnoxQ2Z5UVVza25NSGxnY1hMbGYxdjVkc3FLVGh6bllkTXBqS2Zac1htY0xSTmoxS3JoTGNkNDN1UDVYYm9mSkFBSVlIQ2RzY0U1eTlXcjgzejJ6V1UrL09JQ24zMXptUXRYWmtsYkhkQ2Fjc21EKzlEbHI4aG5VSGZhY2Y0Zm5tWnlkSmhEKzZkNDhabjl2UExNWG80L3RaM3hrVnIvR052dEFuVURYYkwzbTNJUXh6QmY3M0RwNmdLdFN6ZWd0UVQ0cElHQjJHRzF3dDZoQjZDZkFDekVGUjlhQ1RBUHdOWHJaY29sbnhQSGQyTThHQnVxTURrMlRIMnBSWGtvSkhERkNBQk9LMnlXMHVsWUZoZmJiTjh5d3ZZdEkyelpQTWFtYjRlNWVHR0dxOU4xMmtzdDRpZ0RUN0hoODdUVytiTEwxREp6czhIcGN6ZVptS3l4ZGRNUW04S1ZEY0o2ZG8yYm0yOXkrY29jblN1ejBNeGdxa1pnRkpIU0d3dkVEdUxVNGVJWXRFZTFITEIxNnhnN3Q0MnhhWHljc2ZFU29WRjR5bUN4WkphQ3JoaTVzM3pPaENiTzRud0V3R21VVVl3TlY5aTNlNUpONDdWYmp2RUszQW9XK0trWG0rdDJuL2U2SEFldnBLOWRiL0RwMTVkNSsvMHp2UC94YWI0OU0wTzAyTXo3dFQyZjVVbHh2UkN3em01T3VtVlllMnZoYlFiS1k2Ulc0c2krS1g3OHlpRmVQM0dRbDUvZHlmallyWnY3S1BLTHdnZEZhNDN4SUNpRjFDbytWQU9JeS9tWm9tVEFkL2xWWlc5MjF1MGVZRGNBVVBYeU5lbExBV0FwVlFQR1JrcVlnVzllS2ZBd3d4Vjh2MmhmeDRCcUdTYkdhbXliR3VHcC9WczVmbWllWXdlbWVQK1RjM3p3OFRtK1BaL1NXbXBEQ3NiTGgweUE3a1RCTllaUUE2U0t1Sk53WTZiT3QyZW1tWm9hWnVaQWswMFRLejlmK1F5VWxTbEFxWHdzM3F4cWJiTWtvNVBFZVZwMENqd1A3U2xVdndiRzl6KzRYcmQvL25WMEtPdHdXbE9waHV6WU9zYUo1L2Z5L0pGdEhOeXpoYTJiaGdsOWcvRU1DdFd2WTZBZTVKZmhzWk8vZDg3WjdwOFVtYk9FeHFOU0RaZ1lxUXo4WEc2d0I2aG9pbmJHRVFONnMrZnoxajgvb1Y2ZlhlS3JzMWY1OElzTHZQL3BHYjQ5UFUxcnNRRmFvMElmMy9TTzdObllGTzE4Nlo0bGpsTXdQa1BEWmZidjNzd3JMeHpnalJNSGVQN29Ec2JIaGxjZWRxZHg4dnRNYVVVNU5BeVZQYVltaDVqZU1rcTlVc0x6UGZ3UWJPUlFubG9lczExOWZDOFhaRkN1K0xRNk1kRU5CV25LNXZFYVErWFZ3eG4wQ3g4VlZWZ0syRlFLMkRRK3hMYXRJNVFDbjhYRk5yT0xEZHFkaUNoS3lYdW5YSGQ4ZisyZlBJM0I2WHl1eGRKaXhNejhFak96U3pRYW5WdC8rRTQzZXJzenBRTGZOeEQ0NERLVTJmam4wamxIa3VieldTcERaWFp1RytQNFU3dDUvZm05dlA3Q1BwNDZzSTF5c0liWmltTGRKQUNJd3VoZHNLOXNUUE1yaUxuRkJwOTlmWVYzUHp6Tkh6ODl4N2RucjFHZmIwQ2M0ZzFWOEgyMW9aNU5XQjVpMEVwaG5hUFRUdklySjYycGpBOXg1TUEyWG43dUFEOSthUjh2UEwyYnFjbmxLN1BsQWg0Ylg0NjNMczZDVW1oZkUzaUdJQXdvaFNtZU5wUjhTSEFZOC8wQndGb29CejdXWlVTK0R5cXZBNkJYWExIbHowbGI5WU05dlVmZDFQZ0lSdzl0NDd1ek43ZzZVNmZSakppWnJSUEhBQTQvdVBOcmYxc0dsREpnSFZHYzBtekVMRFVqMnF1WFhON0Y3VTZVMW5ZL2wwcUQzdGpzOHQ1bkpZNVRjSlp5dWNUT2JaT2NPTDZIRThlMjg4cnoremwyYUN1Qko0My9nMVBjTDUwRWdBSngzZEtxcXZkbjV6RGRmczAweWZqbXUydTgrK0YzdlAzZXQzejI5VFhxTjV1UXBXRFU4aElvMWovYnY3ZXVYcEVYVVltVDdpQytBNm9sRHUyWjRxM1hEL09qVi9ieitqUDdtQmkvdGR0ZmEvTGxQVC9FbDFYcHZIcGJZdWtrQ1oxT1JLZVRvclhDdXU3dWhHb05QUUJBUmtRU1dlZ2trS1owT2ltWkhXeDQ4dWVUZWVBWDl6eDBpNTFiUmpsOFlDdlhaK3JNenpWWVdtclRiRVI1Y1plZ2hBSHNPdm9CTkE1ckhKbktTR3hDa21hMytTU3Q3TGJ2WmM1OFIrbGI2MHhFVVVvVzI3ejdwbmVZQVpLN1A1YmJmbTdTRExSaWVMakMwL3UyOHVPWDl2TGFzM3M0ZkhEYnFwb0Y0dDcxWG52NXdza25xNENVVXYyR0gvSzEyRitmdmNiN241empuWS9POHNXM1Y1aWZXUUxsME5VeW51S3VWN3pmcDNlOW0yV1dldHVTUlNuRUZqVlVZZCtlVGJ6Ni9CNWVmM2svTHgzZnZhTHh6KzlyZWZuVkQxbkVvOWUwT0tmenhydzdWNksvNGRDS3gzaXIzbC9yZmlXMzVWK1owNnQrMXBGMExINVpGYkk3TXUydWN6ZGE5K3RRVkFMRDFza1Jka3hOc25seW1vdVhiOUpzeFJEZjIxaUpVYUJOdHpiOHVvcnpyT1N3eEpsZDUrcUVWYmZoQmc1WENsTU9HQit2c252M09FY1BiZVBRM2luQ1lQa1VuZmM0T0t5eks3NExVdHptTmxhMThhcTdYRGxmY2l5dlY0OEVnSUp3NUNlUTJGcktxeWFiZmZybFJmNzVuVk84L2U1M2ZQcmxSV2FuRzVCRUVQZ0VYcmRyZXNQYjRpcUNRR08wWTNZaGcvbEdQcU5xdk1iVGgzZnc1bzhPODR0WEQvRGFNN3ZaUERHNjhqRS9vZVBpZGtWdjhSUDZKTmVvbS9GSVhSNldyTTE3bXp6ZlozaWt6Tmg0aFlueEd1VktpS3EzY0ZxVHdicktKUnZJTjZuS1hGNU90OStRcnYwMlZtL1UxR3pGdERzSldYZTQ2SllaZ25jelVEZkRXa2VhV2xUZ01UWlVZZXZrR0R1MmpySnRjb1RTTFV0ZjgwOUw2dklUdHhyNE8zRUhidmtQZVFpUXhuOVFZUU9BZHZra2JWZUF3bEIzVzlwMDd2SXMvL3plYWY3MjdTLzU1UE1MMU9lWDhnYmE5OUYrMEMzUW96WlVoMXdObktFMCtTUTQ0aFJLSHR0M1R2S0xIejNGbjczMU5LODh0NHVSYXZXV3g1elBUM3p5Wmpock5maWhXNjU3LzBQM2Nqd0s4cWVyMGRDdkxaRnpCSjZoRkhpVVN3R2xjb25BTjBSSmlzZnlFRlorRzJ2cm1kSllVcWZKck1ObERuWExNYXVHbUpZdnoxRjY1ZnlYcFhaRXA1bm12UmZLTFgvWUI5L2FPNjNnN0Q3eHhOcjhNR3NKU3g2YnhtdHNtYW94UGxJaHVNMkVQNjN6SWtCNTcwV3hQaWZpd1Noc0FDaUtYcGUxVmdwak5PV0JiVXd2M1p6bnR4K2U1cmZ2bitiekx5OVJ2MTRISExvYTRBY21QK0hvN25qNE9ndVA1QnNLUVpwWkZ1WlRjREcwWXFpVjJMWi9DMis5ZXBnZnYzS1FsNTVaMmZqYjdtV1pjNjZRM2VGRk5YZzFtODh6c2ZrY0ZRODh6MkM4YmhqVWhpekxCdllMZURnNnJZUjJFdVV6UGRYR2EvTGFLSy8yVjlJQjFXckkySENWb1hLUWJ5TFUrNW51ZDBMcCs3Zk50UkFnQWVESjF1MWliTWVXU21oV05LamZYWnJoYjM3NUJiLzgzYmQ4K05rWjVtWVh3Q2JnZTNpK3lhOHdldVBkNjdqeWQrUVhRMEdnQ1gyUCtsSUVjMHZRYWNMUUVFODl2WnUvL1BseDNucmpLVjUvZmk5alF5dXYvSmN2Yk9SVVYwUzlkMTBwRDYzQkdJMHhHazN2cXRjQitkWHh1bmJZVzNIck52OTF1ODkxdnRyd3JrY0R0RHN4U1piaE1wY1hHZElhanpWMUFLQjZQV3FwZzh5Q1o4QTRTa0ZJS2ZRcFYwdFV3K1VlZ1A1bVFJTi9JY1I5SUFIZ0NkV3J1YTVRbEh5MW9tcGU1aHh2di9zdC8vRWZQdWE5VDg0Unp6WEFVMUFOMFVHQU1RUDdwSzl6Z1hydkhKMGtEczg0b3NoQm1vRHlHZGsxd1M5K2ZJei84cTllNU1RenV3bFdqWnNPZHVuS09VNzBoa1N5UjJ5WUxrc3pPa2xLbGxueXVvYWFsVTMvT3ZWU3MzSmdOTWFBN3k5L1lUYzYrVmFJN3lNQjRBbmtuQ096RnExVVhyTis0SkttMFlyNHg5OS94VCsrL1NXZm5yeEVmRzBlaklYS0tPV1NZbm5MelBXUCtXdWRqNVhhMU5KYWltbE4xL3ZkL3BzT1RQR0wxNC93NTI4OXhZbW5kNjFvL0tYYlh6eE9zc3hoWGY3cmZqYkwrWTYxM2Qzc0h0ZmRIc1ZqUlFMQUU4aDFDKzJFb2IvaXl2L2FUSjMvNzk5K3hOLzgrZ3ZlLy9RY2l6Y1g4eXQvNHhQNDNSS2FySy9MdjNkL3ZhdTE0YUVTelVhYjl1SVNOQnJnQmV3OXZwOS84K2NuK0tzL09jYXJ6KzhqV0xVS29WZUdXSzc2eGFQbWR2Tm5uZXJOVWJqMXE3S0dNZ0IzcExySDU5SDR5WnY4S2g0OUVnQ2VRRW9weXVYbHJ2eWVQM3h3aXYveDd6N2tEKzk4Q3dzdEtKY3BUdzVoSFpodVNlREIyZFhydVQvb3J2TmZhTk9PWW9oU3dLTzhaek0vLzlGVC9LLy81UWxlUHI1M3hYSDVmYWx1aFVDUWNYOVJaTDF2M1NNMjRpR2VZQklBbmlCcGx1RWMrSjdCRE5RbHYzNXprZmMrTzh0LytzY3YrUGp6QzNCek1mOEh6L1ZuNjYrMzhlMVZTZE5hVVM1ck1tZW96N2U3RS80U3FBYnNmR0UvUDN2OUNQL3E1OC95L0xGZEs0N3ZkL3ZqcE5rWFFvaUhRQUxBRThJNVNHSkhSb3J2YVhvTmVweWsvRTkvK3hILzA5OS96Q2VmbmFNOTE0QktDWXhHbDRMK1ZjZTZKeGwxRTRCQzRYa2xqTExRanFHWmI1dTc5ZUFPL3R0Ly9UTC82azlmNE1YanUvRDF5Z2wvdllsKzY5bCtWUWdoeFAwakFlQXgxOXNrUnlsRnFXUlFhdVZiK3M0SFovamIzNXprN2JlL2dmazZESldwVGc3MXh5KzE3cFlZelc5bXpYcGIrYWFaWlhGaGlVNmFRck1OSm9TZFU3ejEraEgrOHVmUDhkb0xnOTMrbHN4MkczN2JLeTk4cjYrQUVFS0lqU2hzQUxBcW4yYWoxbEhCODFHVVdVc250bFJLSmk5WDJuWDEranp2Zlg2ZS8veVBuL1BoSitkaG9aRVBMcXFWN2Z5NkwveTczZjVoMlJDWWdKbUZCdTc2SExSYVVLcXc2K1g5L1B5TlovbFhmM2FNRjU3WnVlcll3ZnJsNjMrdVFnZ2g3cC9DQm9Bbmh1dXVSRjdWb1A3akg3N2szLy9IOS9uZ283TTA1cHBRcTRHWG9QMnczK2d2YjdPN2RubkQ3ZERrUy9aY3gwR3JEVmpLdXlmNDEzLzZQUC9WWDcvRVM4L3N4amVyeXBrcXVnVmRrRzUvSVlSNHlDUUFQSVo2RGJmV0NzOHpyTjR0OUkrZm4rTlg3MzdMMisrZHhsNmFoV3JJMEtZS1R2bGszY3FsNnkzdEMvbUdLRW9wMGl4anFSNlRkRnBRYjBEZ28zZHM0VTkvZEl3L2UrdHBYbjkrUDROVjE3S3NXOHlFVzRPS0VFS0loME1Dd0dQSVdrZXJZNm1XVjViM25aNnQ4OHMvZk1zLy9lRmIzbjduRkhaK01SL25NSkE2MTIxOEhjNnVmOGEvSXQ5R2RhaFNZcjdlSXBtcFE3TUpmcG5keC9meXM1OC96MS85OUJnL2V1a0FnNWYzRG9YU2VVVkNkVi9McGdnaGhMZ1hFZ0FlUTBvcC9QRFd2ZVBmLytROC84UC8vRWQrOCs0WkdqY1dJQXloV3M0M1R1bU8vZWVUL2RhNXpyLzd1N1dPT0VucDJDU3Y4SWVEcVZGKzh1YlQvTHUvZm9rM1hqcHdTNUdmM2wycERTdzFGRUlJOGVCSUFIaEkzSnFuM1MvdmsyYXQ2KzdRcHlnTkxLdUxvcFN2emx6aE4zODR4YnNmbmFOeGRnYkkwRnVHS1BrKzFya05UN3BUS3I4L20xbmE3WWpXWWh0YUVWUkQvS25OdlBYS1lYN3hKOGQ0N2NUK0ZZMS9scm51VnNJeTRVOElJUjVGRWdBZWd2WHRzTGRjTUNlT0xVR2dWeFQ1V1ZoczhjdDN2dUczSDV6aVY3LzdodG5wUlRBT3RNSFRKaS90cThoRHdBWWVxMUpRRG4xYW5SalhUbUdwQmI3SHRzUGJlZXZIUi9qNTYwZjU2ZXRQVVFwWFR2alRpbHYyVUJkQ0NQSG9rQUR3RUdpbE50QWJyaWlWOUMxWDA1OThjNGwvZVBzcmZ2WGUxNXc3T3dOWkJpTTFnbERsMjZpcWZQZS9EWlQ0Qi9MeXZzMTJUQ2RKSUk1QWFZS3BNVjUrOFJCLy9mUG5lZVBsQTJ5YkhPbit0R053ODBDWjdDK0VFSTh1Q1FDUGtjSEdmN0VWOGZXcHEvejY5OS93N2tlbk9YZnFHaXkxb1JKU0t1ZkRBNzNkMDN1L3IvMStGRnJsR3dPMU9oWTZiVWhUOEFKR2RvM3g2clA3K1BtUGovRGpsL2F6cGQvNGczWExHd01KSVlSNHRFa0ErSUVNTm9tOWZmZldkbjFzV2IwejJGSXo0Zzhmbk9FUEgzM0hyOS85aGpQbmJrQW5CcytBNTNXWDNPWGJsVzYwRDk1VDVOdWVaUm5FTVJqTjVNNEpmdnphUVg3MjJtRisrdG9odG13YXZlVzQzbEpCdWZRWFFvaEhtd1NBaDBBTi9QLzNXOW40SjZubDVLbkx2UFB4YVg3NXp0ZDgrZTFWT28wV2hBRjRQcVdTUmh1TmM3YS80YzU2SDV1MWxrNEdTWnpsRy92NGhwSE5ZN3o0OUM1KzhjWWhmdkxTVVE3djJ0SS9wbmMvMWptTUxQUVhRb2pIUW1FRGdIYjV0Ylg3Z2ZiZUhPd1dqNU9VcFhhSEtMWTR6MUR6TkVZNVVwczM5ODdsZnc1OGhXYzBGb2R6bW9XRk5xZk9UZlBPcDkveTIzZS80K1NYVjJqTzF2T3FQbFdmd00vN0ZkWjk1ZCs5WUZkSzRhUG9aQmxSdXdPeGcwQXp0VzJjRThkMjhiTTNqL0t6MTQ5d2NNL1cxWWYzcS93SklZUjRQQlEyQUR4TXMvTU52amw3bmJtRkZsN2dNVm9yVS9ZTXNjMXcxdUdjSThzZ0NBeGhhRkRXc3RUS3VIeDlscTlPMytDVGt4ZjUrdFFWbWd0TGtGa29seWlWZ3Z6cTNUbXN0ZXRxaWhYTHl4SlRCVkZFM3ZpSG1rMVQ0N3p5L0Q1Kzlzb2hmdno2WVE3dTJiN2lXT3Nzb0xwZC8vZnJGUkpDQ1BHZ1NRQjRVUHFONGExai9SZXVUdk4zYjUvazB2bHB5a0hJNk9RUUk3VXlyVTdVM1prdkwvWHJhVVZZMGlobmFYVWMxMllXdVhSbGtUTlhyak96MElSTVFja25ySGlZUU9FU1VNNXRZTUpmdmxLZzNiWmdFK2hrRU1DbXplT2NPTHFUbjd4OGtEOTU0eWtPNzF1KzhuZUFzL2s4QXkwdHZ4QkNQSFlrQUR4d2VXTStPQVJ3OXZ3Yy8rSHZQK2JzQjJjb2hTRmorN2N5TVZLaTJZNUpzd3pYTGR1bmxNUDNOTTRwTXB2UmlTeXRkb2RPRk9WWC9vR0Jia0VnRzY5M1d6L3lybjhGb2E5cHg5M0dQMDdCODlpMGJZUlhuOTNIVDE0NXdKKy9lWXlqaDdmZmNoTmFLM0RTOFMrRUVJOGpDUUFQVE40c3BxbGJVYmdIWUhxK3lka3ZyMER6RkoxbXlMVldoMnRqUTlEb1FKWUFwdHN2bi9WdkI5K0FNUkI0NFB2NGxTQ2ZxVS9lZmU4R3l2dXVwVUh1VmVuTE1rZmJaclE3S1VRcEJJYkp5UkZPSE4vTm15OGY0Q2N2SHVUbzRaVmovcG5OdS8yTlZuTDFMNFFRanlrSkFBK0JTek5JTXFEN0s3R1FXa2d6eUJ5UURpemV6d0FOMWtKSWZzV3RGWWFWdlFwdUhmWDlsY29iYitzY3JTU0ZScFEvaGxDemVlczRMeHpkeVU5Zk84SlBYei9LMHdjMk03Z1N3ZHBlajhaOWVDR0VFRUk4TklVTkFGYmx6Wm95My91ajk4SEsxckl5WElMTkk3QXdDcFJoOHpDbGtRcFIxY2ZaVmZ2MERxNVM4UE0rZTAvbkRYNzNRbnhkTS81N014S01COW9wYVBTNi9SVmpVeE84K3R3KzNuejVJSC94azJNY1c5WHQ3OGlML0JocC9ZVVE0ckZYMkFEd01GVkRqODJqRmFZWmc3Qk1lYnpHMXBFYVM2ME9jWmF1WFBuZit3OExtYzFJVThBdFR4UmNUK1BmcTg5anJhWFR5ZHQ5MmdtRUhyWEpJVjQ0c3BNZnZYU0FuN3g2bUdNSEJpYjh1ZnkrckxNWWJlVHFYd2dobmdBU0FCNEM1eHpPZGx0dmF5R3haSmtqelN4WmN1ZkNCUG0vckcrVy95Q2xGQjZLeFRpQnBTWjBMQVNhOFYxanZQemNQbjcyMmxQODJZK1BjUFRBZGpCNnhYRlM0bGNJSVo0c0VnQWVnaXh6ZE9JRWlDQlJSSEZDSjBxSTQ0VE1XdElIZEwrcU4xeVFaTkNLUVVFNHVZbFhuOS9QWC96a0dEOTkvU2hIRDI1WmNZenI3aUtvdFd6dEk0UVFUeElKQUErQmM2bzdhUy8vWmNpM3ozMFFWTGRNbjdXT0xITll5T2NTVEE0elBsSGwrV2YyOFdjL1BzVFBYanZFa1FPYkJ4OGttWE1rMWhGby9jQWVueEJDaUllanNBSGdoeTBGdkxvWWtHWDFwSDFySHRUMWRhOUNuNlBUc1dBZGZzVmo5OVp4amgvWndadXZIT1puUDNxS0l3ZFdUL2pMTi9ZSnRGVDRFMEtJSjVIKy9oOFI5OXZ5dXYyTVBJWThPRXIxeHZESmEvekdDWUUyYkpvYzV1aFQyM24rNlowY1c5WDRwMW1HdGZtWXY5Wkt4djZGRU9JSkpBR2dTTHJ2dHMyZ2sxcVdXbkZlZFhDVk9MWlllMnN2aFJCQ2lDZUhCSUFuWEcrdWdWS2dnaERDTWxHY2NPSGlERjk4ZlptVDMxNW1xUm10T01iemVrV0c4bU1sQndnaHhKT25zSE1BaXFSM0pSOEVCcTBVN2FaamJyYk9sOTllWTJwOG1KMVQ0L3ppamNOVUs2WDg1M3gvNEZnbmsvK0ZFT0lKSkFIZ0NkZmI1cmUzR2lEdkN2QWdUWm1iWCtLakw4NVJDa3ZVR3kzKzlQVkRiSjJhV0hGOEdsbDBvUE9hLzkwZ0lIbEFDQ0VlZnhJQUNpQVBBY3VyQWNLU0kwbDhYSnB4K3Z3TWphV0UyWVY1TkJuLzlpOWVKQ3lWZWtkMjl5Wll2aDJaRHlpRUVFOEdDUUFQUVY3dVgvVi9XYVhBNWJQdDF6YmozdDN6QkwwZ01NUnhnbHVLdWJiUTVqMVNObzhPczIzVE9EOTU1U0NlN3dNS3Y1cC9SSG9yRjJSRmdCQkNQQmtrQUR3RW9lOVJydmkwS0tOS1pjckRWWWFIUW94eXhGbDZ4eTUyQ3pqcnlMS1VKSEczYkFPOEZxNDNIS0JBK1I0UVE1WXhjMjJCMzczM0hjcHozSnhyOE5NZkhXUFRlSFg1dnAwbGpoMWhxQ1VFQ0NIRUUwQUN3RU9RNFVoVEMxaGNuSkdrR1owc0k3SVo3ZXd1bFlrY0dBZHAzSjJkdjg1ZWdINVk2UFkwK0JxeVdobE5oclVacDg1Zll5bUtXYWlubEVLZnYvNno1L3ZIR2cyQnY3d0ZzUXdIQ0NIRTQwMEN3RU13dDlTZ2Zua0d1QVMyUkhUS2NHbnpFTlE3a0tYTHMreDZCUVI3RGIzUkVCZ0lQRlE1SURENTFmZzZkd1R1VTBwUkxodTBNclE3S1hhaHliWG9PdTlxemJiTlE0eFAxbmpqdWYxb293R042VzZkYkozRFdUQkdFb0FRUWp5dUNoc0FyTXFMSUNqelE5emJ5b2F5c1pUQXpBSXdDL2lRbE9CS0IyaHg5NmJjQTBLb1ZYSGFvQ3I1c3I1OG92LzZod0p3eTFVQ3JkVmdnQ1RoeXVVWi91bnR6NGlUbUpzM2wvakZqNSttVmc3NngyYVpKVTJocEdVNFFBZ2hIbGVGRFFBUDAwaXRCRHMyd2VXZGdBRi9Fa2FIb0ZuTlp3ajIydkxCTWsxS2c2OUJhL0R5UmplT003UTJHSDhEUy9NRzg0S0NNRlNrcGtabVU0Z1R2ajUxbFZhVWtTYU95WWxoM256eFFQL0hmVTlqTk5MNEN5SEVZMHdDd0FPVHQ3Q2VwMjY1T0gvdXlFNytqLys3bjNQMjFERkdQRU80WlpocXBVTFNTY202T3hSWndHaUROaDVLcFRnVXJVYkU3T3dTRjYvTmN1SEtBdTNGQnRiRlpKUW9CZm5NUHRjYm5GOW5qNERXaXNCWE9IdzZVUXJ6YlM2a04vaDlLV1RMMURDaFp6aCtkRHZsSUFBVXVodE9zc3ptd3hCYVNYMEFJWVI0akVnQWVGRDY3YS9xdHNmTFMramVmT2tnengzWlFXWWRKYytnUWc5UEs4Z2NHZm5QV2d1bHdLQTlqYldReGluWGI5YjU0dXRML1ByZGIvajFIMDV6OG5SQ1Z1K0FTMUVxcERjeGNEMXpBbm9UQS9QanVyVUNmQSs4QktLVTc4NU84N2UvK1lKT0hEUGZhdk9ucnh4R21lVnhreVJ4ZUQ0WXA2UkNrQkJDUEVZa0FEeHd0N2FLMmloR1JpcTMvcWdIL3ExL2k5RmdTaDY3ZDB5d1kyb1VVTXpXWStydEZoZVRtOWdrb1UwRXlzTTNDclBPZVEyOXpnS3Q4MHFCWVRrZ3dvTXNJMXRxODhtWGwwZ3ppeDhHYkJzZjV2aFRPL3JIbGtwbXhlM0lxSUFRUWp3ZUNoc0F0T3V1cTcvTHFydjdxVGVoLzE0WjMzRGkyVDNjbUt1VDJnUlBhODVlbk1GMkVyQWQ3RkFaWDZuOHVhMnpPNkJmTmhnSVM0bzA4Y2hhSGR4TXpGZnFLa1Bsa05IQXB4Mm5QSE40RzZVd0dEZzRIdzR3T2g4T0VFSUk4V2dyYkFCNG5HM2RQTUxySnc2Z3RNYmk2RVFKbDYvVm9SM2pVcHRQRk93dCtXZnR3d0hXdWY0UGE2MEpRa2U3NmtFcklWMW84OW5KeS9pZW9aTmFrampoOVJmMm8zcVRBVnp2LzZUeEYwS0l4NEVFZ0ljZ3pTeEpZbkZwbXYrRjhiQzMrVGtOSkduZUl2dWV3dmNWdnBkM3VSL1lzd21VWXFrVHMxUnZrNmFXNjljV3lhS0VWcHFnVllCZjZvN3B1N1dIQU1pYmNLMFZucWV3bFJLUk1oQmxOR2JyZkhMeUV0WTZnc0F3WEsxeS9NalcvQWdObmg0Y0RwQ3l3VUlJOFNpVEFQQVFhSzBJQW8zemw3dlFiOWRVT3NEMzh5NzVmQ08vNVoveVBaOGorN2VTSmhseE8wVnJ4VWZxTWxldjNjUWxDWm5PQ0xXUFZubk5nL1dVREhia1A1OGsrWmgrV1BhSnJJVm1TdjNLTEI5WlMxZ0tDQUpESzBsNTd2QjJ3bkM1OGJmV1loMnlWRkFJSVI1aEVnQWVBcVZVdnIzdU9qZ2MxcnBicnF5ZjJyK0ZSaXZDV2t1Y1dLSWtZdmJtSXFRSmFlcmhHYkFiR1E3b0hxU1V3aGlOcXBYb09BdnRsT2JOUlQ3NTRoS2g3NU9rNEduRkM4ZDI5QjlYNzdsSjR5K0VFSTh1Q1FDUEdlc2N5blZuN0FPKzczSHN5SGJRampTemRLS1lyeHpNM0pnamJqU0pqU0VvaDNoR283ckhyMnM0b0x0dmdOWUt2MUlpSVlJbzRlYlZXZDVUaWpSemxIMmZ3TmNjUGJRRm93d29SVzhlb0xWMkhic2NpclhvVGRic1Q3dDRrUHFyTzVXczhCRGlDVlBZQVBERGxnSytkNHJsUmhWV2pyRVBsMHU4OHR4K3NKb3NzM2pLOEVHV3NuaXpEa2xHRWtDNXBDR0YyRm5XMDJya05Ra3N6cmw4NktKV0lrWkJJK0xtaFd1OGw4VDRHaEtia0tRcHp4N2RpVkc2ZXl6RTF1SXJqVFpTS09qK1dkNEo4c0dFZ040TmRodDlwVkRLNFpEM1VJZ25TV0VEd09Ob2VTYytSNVk1akZuK080M2krT0h0TkRzUk5uTTBremFmV2tmbjVoS3UwYUpKTmE4UG9McUxCTmF4TkxBM2Y4QXpCczlYYUJTZExJVjJ4c0wxZVQ3NDdEdzZCTThvZ3BMUDAvdTJkZWNzUU1ucjNxbTRiL0llRlpEWFZRaHhMeVFBUEtZR3EvMzJ1bVpyMVpCWG50dEx5ZmR3V0xRemZQTEZSZHJUQzZUelM2VGxrRkl0b0Z3MlJKRWp5K3lhaXZjTS9reVdrYS96TDVlQkNPS0k2MWVtZWZmRGpLUURvTENkbEtlUDdlcHVaWkFmYUszRE9vdFdDcTMxYmU5SDNOMUR2d1ozdllFSEdRNFE0a2tnQWVBeDFCdVQ3NVVZN3A2U0FSaXFsSGpqcFgwNDVYQk9ZVlBISDlzUmJxRU5jWVREUnlrd0ptL00xM1ovK2UvV1duRDVmZ09sME9DQ0NsRkRReU5pK3V3TXYrOVluTXFYT0NxdE9YNWt4OEN0T0NLWFVGWStnMTNNNGpIUjZ3bVN0MHlJSjRZRWdNZlVjcU1NaWJNRVd2Y25CaW9Neng3YVNkTEppTE9NVGlmaTgyK3VZQmViUkxNdG90akg5M3lNVVJpalZuVHozNDBEbkhVb0JaNm5LZmsrT0VlVVpCQ2xMRjZkNWNOUE5iN1RsRW8rNVpMUGdiMVRRRjVZcUtwTDVPUFh5eXNNeFBvNE1weURMSDh6OEpXL2N0ZklCMFhKK3lYRWswWUN3R05PYWZEZHJWMnl3OE5sM25qNUFHSG80MnRGdVZ6bXZVL1A0SzdlaEpZaUdSdW1QRkdtVkNyUmJIYklzbHVYR043Mi9yci83QndrY1Y0b1FGVktPQjFEdTgzTXBSbCtuMWppTktQVFNmanBtMGQ1WVVWUGdDTExNcElVd2tEMVE0dTRrKzRHVDBxaFVDUU9ia3d2Y21ObWdmbWxKc29hZ3NBajhEMVV0d1IwbnVqVy83cHFsWS8xSkhGS2xEcU1VNHhOVnRpMWFaalJzZHFLbjdYZElKaVRJUUVoSGtjU0FCNXpXcWwrcTV4Wmk5YTYzMHNiQmo2dnY3UVg2K1VOZXl1TytLelJodmttdENMaW9SRGZUemQwUlo1bGxvejhyc3RsRDFzeWRBelFqcGk3TXN2dmtyejN3VG9ZcllUczI3MXArVEVialllVlJtTU5ldFdaZXk5Vm1tVFVGOXQ4K2QxMXpsK1pvYjJVb0R4RHBlUjMzOGQ4eWVWNkNqLzE1SjhsYUNZWm5WWkNZQlRidDQzejNLSE5ITnkzbFMyYlIvcy8yNXVJdUpIN0VVSThHaVFBUEVHY2d5akxDTlRLNFlBVFIzZEJCbkhteUdMTHlhOHZ3M3lkenJWNU9yVVF2MXpDRHp5VW9sOXNhQzMzaGNvYmpWS2d5WURNaGlSWWFFVTByOC94MGVjRzdTdXFGWjkvK2ZObjJiVjFIQUN0Tk5yTCs2M3pna05PYWdYY2dSdHMvUUdqRFhHU3NWQnZjTzc4TkJjdUxiRFlUREJHNFdrSXd3RGpxL3g5WE9kR1Y3NVNLRSt6MUk1Sk9na21NR3paTk1SY2ZZbTVSb2NYanU1aTU3WUpZT1hFVWRrQlFvakhrd1NBSjRqV2lnQjF5MHp4U2hqeTVvdjdLWWMrRmQ5amRLekc3MzkvRXE3ZmhIYUhaRlBBOEhDSThSek5Sa3c2MENqZnlmSlFnS09UNUQrdmxjS3Zsa2t5QmUyRSt2VjUzbjAvSTJxbkxDeTIrZG1QRHZQcXMvdjd0K0djSTRyeVZtcHdXMkZ4WjU0eGxNS0FTaWtFcDVpZWEzRHV3alN0S01Vb3FKVkQvSkloUzJ5L211TmFhYU53U3RHSkU5STR3L004S21XUEs5Y1d1SHhqZ1RTekROVktqQTVYKzhmMHdxTHIxcG04bnlIT3FkNHlWSENhUnlabEtDQmZETnRiRmRIN2RXOHM0RktIczJ0ZnBpdkV2WkFBOEFUcGxlQjFMdDl3eU9qQnEyck5pOGYzWUxTSDV5dm02M1crYkhTZzBZQkdtMGJWSXd3MVdkWWIyMTM3MmRiYWZDc2pyVFdWUU5QV2hrN1FoazVHOC9vODc3UlQydTBVbkdQYjFCaTd0dVE5QVVvcHltV1BMT3R0aFNTckEyNW44TlhRQ2liR3l1emVOc0hWSGZOOGQybVcrSXlGbXcyeU5LRmU4U0gwd0Jsdzl2WTNjc2M3NmhhSmlQUDNLdFdhemt6S2ZLTkRNK2t3TkZSbTAwU05sNTdlUTdrVTVvOW5ZRW5uL1c2MHVsTVM4bC9ycTEvMVdOS0E4dko1UGRJWkpuNElFZ0NlVks0N1VVdXpZdCtCNTQ3dHdKSVJ4U25HOC9ucTVEblNxMHRFVjJPaWNrZ3dXcVZXODhnc3hIR0d0V3V2RTlBYkY5WmE0WmRDRWhmQlVrSTJ1OEJuSi9OcWhLV3l4Ny80MlhQczJUWkpHT1JYL2Nab3JIV2tXWVpXQ21PZTdONEE2OWIrL0pSYWJydDdrelJIaHlvY1BiQ1ZLSTY0TWRmaTBwVjVMclk3c0dEejVRR2RGTHp1RzJkVS9uZTlMSEMzdTg1NnhTVzZ5LzJjZ3lqQnpUVTVkMkdHUDc1L2lxSEFKMDRjcnh6ZncxQ3R0T3A1T2N4OWJMbVUxdjJoSVdVVTZsRXBIOUY5V1pYcWxoTzlEOEhFS2REYTRDbUZaOGlEbUJBUG1BU0FKMUMremorL2RGS3J6azRLT0hGc042WEFNRFJjNVI5R3kvenkxeWZoeGl4MEV1SnFtU0FvRVdjUnhKQXZBRmQzdllJY0hBNW9SL2tjQXEwVVFTVWt0aGJhR2NsQ2kvYytQc2RTSytMcWRKTi8rYk5uZU92bEEvM2JjTTdSN3FTVVM5NWQyNmduUTdybW54enNVcytEbGlQd1BiWnZHOGN6QWEzSTBtekh2QitXT0h0eG1paHVRMllCSDFWU2VDaVMza3hDV0ZOUGdIRzkrM1drQ2tEVFhtenk1VGZYU0oyaTNVN1FDdDU2OVNDNisyNjU3c3FEL3B5Ris3QWR0TllXcFhSZThSTE5iZmZNZnNCdTl3eTBwL1BKdGxxaHJHSjkyMndOL0tRSEpIbUNjRTVqYlVwbUhWbW1jSGQ3c2pMcFF0d25FZ0NlVUwyVHIrM1c0dys2bDVLOTNvQmpCM2VBOHVqRU1WZHZMUEZWdXdPTEhaaHZNT2Zua3dnZHkxMjhhNXNZdVB3enhtaENINHlxMEE0dHRCT1NtVVUrYlhkb3g1YVJhc2loblpOczJ6cmEvL25oV2duYjdiWjIzVzZGSiswODV5eDRubjhQdDdEOGlreE4xWGoxdWYwNFlLZ1NZdDVYbkQ1emxVNmpnd29NMVlvaE1JcTA0NWF2L05jeU1UQUFZeFZaNmtoRzh3TTduWWo2elVWT09vZHZGT05qRmFZMmpYQnMvOWI4VVNsRnIrUG1mdlhVNXg4RjJ5MUFsV0lma1lrQW50TDR2c1pvamRIcTNzYytGRGhTYkpZUnh5bHhrdUd5NWR1VWxSYmlRWkVBOElSVGdLK1cvenpvMklFdHRPT25TYU9VZnhvSytlRFQ4eVNYYmhKZlNtQzBSR20wUnJVYTBPNGtaT25hNmdRc2x3MTJ4R25lQ3hINmlpanh3YldoM3ViVW1XdjgzVzlPWXJUbTUyODh4UXRQNzhMMzg5WkRxM3hEb3ppeEJJSEpUN0EvTUFVb2EvcmJOaXVsdXJ0SFpkeTlELzNXMituL3VMVmd3WGg1RWFWbHl4djdiTVN1N1dPVVNnZXhpZVhDbFFWT241bk91KzJOb2V6NzRBeVJpbkdaNmwrbjlvY1U3dlNZWThqVXdGQkE3MmZUbE5iTkJ0K2N2c2I0U0kxcXhTZHVKeng3ZE1mS3VRRGRPU0hyN1FGdzBPODlTbE5MczUzUWJMU0lvb1Fvem5ET2duVVlzK29TK0h0ZXU2ei92QlZhTFE4cnVQVit0Z1pxWW9mbEVOODNxSUdOTlZiMzY2ZzdaSVBldEVsUFFhb1ZHTWhTYUxRUzZvc1I4NHRONWhaYURGVkRVSm8weXdEVm5XajU1SVhpSDVLc05GcEpBc0FUVGluVkg1ZDFxeGVWQXllTzdpRFFtckdoRU8xNy9MN2Vob1VGcUN2c2NCWGxkTCtsV011WFo3bEM0ZkxNYUswVllVVVJVWUUweGJYYWZQRHhPZXBMRWRkbkZrSERLOC91N2QrR1VZb3NXMTRERHovc2RaOUdZYlRHMHdyUGFJdzI0S2s3bnREWHBIdXd0UXhNZWx6eEEydTRpY0hoZ09Vd3RubGloQmVPNytUTFU5TjhjL29xMzBVZHlESTZIVXVhcFZqcjBGcjNHOWoxUGU2OHlRbkNnTmc2c0k2NXVSYWZmbmtSclJYV1Fybmk4OVMrcmJkOU9tdnByZTd0Y2FBR2ZqYkxMSzFXeXNKaXhPSmltMVk3SVU0emV1TUFBK1V2MXZWa0ZLbzd5MDZ2NjBQVnI1WFIvZTlxT2FSYzZRWlV4WHBHZGZvZklxMFUydmNCUzV5bXpDKzB1RDR6ejQzcEplYnJEU1pIeTFRcTVmeDEwZDJtdnpjM1EyTEFPc25yZFRzU0FBckV1dnpxVEdtRlVYUzcyRFhQUExVRFp4MnppeDFtWnBiNDlvc0xVRzhRenpTNUdUdjhBSXd4L1FJejYyMUV0TlpvRGFvYTRKeFAxSTdKNXBmNCt1UUZqSEpzM1R6TXptMmpiTnMwMWoxQVVhdDZPSmFEeEdDQm93Zk44eHhHYTN6UDRCdURNUjdLS1Z4MzBkZTljTTdTU1FaYml6eFloQ0hkclpkdjAyajJwMkFzbDIyT3JlM3V0SmpidDJzemI3NjhqMWFudzY5L3IvanM1SG1XenQwQXo2REdSeGdlOWtnenNGbTJ2aERUSFRaeWFNSktDS2tpaWpwY3VqS0xWWlpTeVdQSGpqRjJiaG1qV3NrbkJXcXRzTTdsRzBBeFVLbDQ5VkI1OTcrdGRmbjFyVEw5VUJPR0hrWXBralNsMmVuUTdzUTRtL1dITU83bFFzNngvdWtFcTkrVFdzbWo1QWNvN2Jwekx0Yi95VkJLRVFTS0RFUFNTWmlkVytUNmRJMzVlb3NvemlpRklWb3J0UFpXSDdqdSt4TGlkaVFBRkloVzRIcExBMWVkUTQ0ZDJNcGkreGcyYy94cXZNeUhINTBqdlR5UGE4ZkVZeFdxa3hWS29hYlRzbVRPRGZhR2ZxL0J3S0FVeXpPY1d6R256dDNnYjM3OU9WbVc4YU1UQi9tVE53NngzTnhCbkZsY21sQUt3M3dYd2grQXAzMjhVRkV1K1ZScklaV0tSNzJ1c1ZtQ2N4cG42VzdGM0h0K0s0OTN0M1JicUc3ZnZ5UHVKRnlmcVRNOXU4RG1pZEgrTWFtREtJcHgxbUJ0dnJWeS95WU1HRS9saFhxNlY1eitxdGZDOXcwLys5RlQ3Tnd4Umhnb3ZyMTBrODYxSzRDSG14aGxlTGhLSzAxcDFkdmdlcnRBcnVIMWRQbnMvdDZrUHUwRGJRY0xEYTZrR1NmTEpmYnUzTVRVK0FqUFBiV0RXclVFS0xMVUVxV1dKSEY0K3M3M3BUVjA0ZzRXdzBnMXdCOElOWEdhMEdxa0xEVVRPcTBFa2hSVUhvS015WHNmZXB0aGZiOE1peVpRQ3Mrb1BOaXRma3d1ZjYxN3JmM3FIcGZCT1NuVmNrZzFDRENhZkwxaWwrWDdwd1F1Vjk3TXc1TExISFFTMnUyRTY3VTZNM01ObGxvSjJydkQreU1kQU9JK2tRQlFJTXY3eU9jbmRUVlF3OTBMUEY0NHRoTlBRYW5rMDQ1VFBxdTNvTjZFcGlZYkxtR05oKzJXbDF2UFJjaGdRUnF0ODQyQ09nQ1pJMjUzK1BEamN5elVXeXdzdGRrNk5jUlRCN2IxZno0MG1nenZCNzNvVVVZelZDMHhPbEppYktUTVNMWE1YTkNrMlVxSWt4VGxUTDdLWWkxNmsrNENEY29RUlJubkx0N2tuUS9QOHNhTEI5ZzBNUXhBSmZBZzhMbzlMSHp2SGdsdVlKdGw1eHpHYUR4UGMvVEFWdjdzcmFmNTNTZG4rY1BGR1dpMW9kRmhicW1OeTlMdVprN3I2ZnVtMysraFZSNUNUQmlTZFdLSUVpNWRtK2VETHk1UUsrZDFBVjQ5dmhjdk1QaSt3ZmNoQy9PNkV2b3U5eG1HRlFETXdEeUNSaWZpNm8wNmwyL01NN3ZRSUlxN3ZTWWIrUnhrZWUrWDdvYVlmRmhIczU0K3BkV0JWeW1ONytYekNYQ3NmV3ZOQVVvcFBFK1JaYTQzVzVlRmVvTXIxK3FjdTN5VEM1Y24yTHR6OGpZSFNnSVE5NGNFZ0lMcU5UU0RkUUtxcFpBVHgzZGhVNWl1dDFpY2EzUHUyeXZRaXVqTU40aWlNbDZnOEwyOHE5Wm1kbDBkbjcxYUFWcm5JVU1CN1VhYmVLN09WMGxDdWVLemM5c1ExYUVLMnllR3U4dXRscnRBczh6bUY5TVBZSTMwNmdtT0k4Tmx0bXdlWmR1Mk1UWmRtMlZtZXBGbXV3MXhodlBXZnY5cDJuMkZBaDk4UXlkTytQU3J5NVRETW9tei9ObVBqekZjS2ZkL2ZqQ2tyZVV4VytkSW5Wc3hOZkhFOFYzOGIvNzFLMndhcS9HUC8vd2xyVk1YYWM3T1FybENzRzJja2RFU3JTZ2xpN0oxOWVTZzhsSUJ2cS9JYW1YSU1oYm5Xbno4eVJtU0tLTVVlaHplTmNtbVRhUDlROVl5aWZQVzk5UHg4UmZuZWUvak0zenkxV1d1WEZzZ1RTMHFERUhuZ2FML3VxNzFvVnZJdXJGSmUvbFN2dHRPcDd2RHcwMkJZUFhqRGt6KzNiRnNlSWxpMmhzTjhqeXdHZTA0NGZURjYvem1EMSt6dE5qZytKR2Q3Tjg1d1VpdHhzUjRwZnNabGNaLzR5UThEWklBVUZDNk93bHE5Y2svOEFPZVBicUQrV1lFbWVYM1l5VSsrZlFDekMvaG9wUmtiSWhhVmVHY0lyTHJteFhuM09CZUE5MHZvbGI1SUhFcjVzdnZydkdmL3U1em1rM0xqMTg2eEp1dnJLNFRFQk9HWG5jbTk3Mi9CcmQwOFE3ODNWQ2x4TGJOSSt5Y0d1WFNwbEV1MVdhWm5nV1hXZkxtb0RjbkF1N1U0ZXU2Vjg5S1FWRDI4YlNtM1VuNTh0UmxadXN0T2paaHk4UUliNzUwY0gwUHZIOTNDcVBCckRxaERWWEwvSGYvelkvNTZldEhHQnVwOHQvLzN5NEJONkE5akdLTVdyV01wVTByeXJwWDkydDdNZk50aUIxT1Fia2NrQURwekNMejN5enkyNFUySTdXUWw1N1p1U0lBYk1TN241emhIOTcraWwrK2ZaTFBUbDJIcFE2RWhsTEY3d2ZYOWF5Y3NLUW9DOFl6VktzQjR5TTF4b2JMQk9WVnoxdUJkNXZoTVFlWTNnNkxBLy9tR3c5ZmU5MWlTL25mYVFNdVdkdno3SDEybEFLLzZwT0dBUzZMT1h0K210bjVKVDcrNmp6N2RtN202SUZ0SEQ0d3hVdkhkN05uNXdTalF4V2tFZHVJRlROU3VoN0dOT05IaHdTQWdocHNRTFBNb2dmS0J0ZHFKVjQrdnBPTUZPMWdkaUhtWWl1Q1ZnU3RGdTNTVUgraTEzcS9Ob01OcmRhYVVxVkVSd2ZnVWpyMUp1OTllcDVtTzBWYjJMTnJsSjFiSi9zL1g2dUVaTTQ5a09HQTIxMEpEMVVyak5RcVZNb0J2dEc0TksrTVIybnRQUUM5MDB2djlYVXVnL2syMXhzUjc0MkVITm0xbVMyVEl4emN1M250RDNaRk85UWJDckMwV2pHbGtvZm41Vi9yQTdzMzhkZS9lSmEvKzgxSnJyL2ZBaXpSUW90cHJlbE5XOU5hcjdraEhYenZ3dEJRTW9iNUpRUDFCSzdOOGVXM1YvbkR4MmZadG5XU0E3czJmYyt0M2Q1SFg1M24xKzk4eWU4Ky9JNHZ2N3NPTS9YOE9WYUc4RU5GR3E5OXc2cStOSi84cWtPUGtlRXllM1pPY0dEM0pPTURleHBzVkpRNGlGSllZNk8vV3U5NWVKN0c5eFZ4SEpDMm1zek9MREo3OWdiZm5wM211d3N6dkRpOW0wYXJ3K0hweld3ZUcwWWJRMm9keWlod1dYOGxSZEhwN3FJbGwya2MrWDRZV21rQzN6QlU5cGdZcXpFNk1yVGltSHlWVERGZk93a0FCWGVuMCtqbXlXRmVmWFlQV1pSeFk3NUZIRWRjdnpnTm5ZeE9vNFAyQS94QW9VMCthMnE5Rzgva005cGRkd2E4SXN0ODBuWkVkRzJCejFQRnlIQ1o4YzFWL3VLdFo5aTZlVFNmOURhd3BMRlhObGpmaCtHQU8xM0VlMXJoK1JyZjk3RG9mTEcyWGQ2cHhRc2c3bnpQYlE4c29YU0FOajdXZENETk9ILytKbi8vOXVkY242NnphL3M0UTdXUXpDcVVjWGpHUitzRTVmbU0xMnBzbXhwaDcvWkpOazNXYnJsOTFaOTF0cm92QUg3eThsUDhYLy9QZjhsLy9zOWIrZTF2VHJKMDlRYk4yUVVZSGFHOGRaaGFLYURWU3NqczJ2cXdIWG1uVFpxQnIxTW9oL2tTQm11NWRPVW1mL2Viazl5WWJySjM5d1NqdFdwK1JaeGxaRGF2ZHFjMEdHZEpuU05OSFU0YnNpeEZBL1ZHaysvT3pmRDFxZXVjUG5lRGRLbWR6N2IwTlg2ZzF0ek5mc3NrUEdmQldTcWxrRDA3Ti9QaXNSMjg4UFFPdG5aN0tucXY0UjM3UWdiWG82NjZweVRMSU00bkdUZ0xlVEgvcER0M1lqM3llOWE5TXNES1FXSmh0c2taZTRNa3pwaWVtZVBEeVRFcTVRRFBHSklNVExmSVI0YTd6YnRmUU4yWElJN3o5ME5oTVJyR3hvWTR1SGVDRjQ3dDRzVmJBb0M5TCtlUng1RUVnSUpUZ0RhM253NDFOVDdDaWVON21LMjNzTmJ5Y2RuajlPa1o2TVRZeE9MODhrQTMrdnBPZDcydVhPaE5ob0kwOENGTmlPc3RQdm5pSW1FWTBHd2svUFMxUXp4M2JOZUtZOVBFNGQ5TFFiM1Zidk1DYUszeERDalB3L01VeTl2VHJmL21YYmZmMnZjZ0dxNUJscEoySW43My9sbis4UEU1bFBid3ZMd2hNcDVISlFneHZxTmFDZG0xWlp6bmorL21GNi91NS9sbjlqSTFNZEs3MGZ3Mzh0NkZTdGtNWE1ua3pkbm9jTWgvOTErOXhldlBIT1QvVWdyNVQvLzlMOEhkaExxSDJqWk00QnRhYXUyWHI2cDd0MWxteVRKSFlBekp0bEZjRkpPMFkzNzN6bW5lKytnQ3c3VVM1WktQNS9zNFo4bHMvdnkxQll6R3BRbHA2bWhubGs0Y2tjUVdhMU5jcGdDYmQ2bUhIcXBjeHZkQmFVV1NmSDhDNksvTUdGeVoxNjNmVkttV09MQm5FNjg4ZTVEamgzWU92anM0MTExMXNZNHg5a29sWkhTMEFtTVZhRVpnTStJb0dlaWQrTDcxQUFPUG9EY25Cd2dxSlZJL3hOcXMrMXd5TGx5ZTV1S2xHMmlqdS9NTnU0SEkzRHBrVVdUYUtLeFQwSW1YNnlWNG1oMDdKM245eFFOTWpJM3c0dE9EUnlpaUtPMzNtaFZOTVorMXVDMXI4eXQ1WTVhSEEzWnVIZU9WWi9jUnBURlpGclBVVExoeGFSYWloTGpkUWV0S2Z4blVSZ3ZsYUoyUDZZZlZrRWdiaUMxenN3dTgvOUZac3N4U0xodTJUSTJ3WlhLa2V6OXF4ZmJCYTZsUXVCRmFLY3JsSUMrcFcvTEIxOUJXK1l4dElJM1hkM3Q1bDd1aVV0S0FvZFcyTUYvSExqV0F1RHVNckFCRGsyNGE4RFZudGs3UTZIU1lIQzB6Tmo1Q3RSSlFLNWRYTEV0ejBGOG1tYVVaaTYwbVk5VXF2ZnE4VHgvWnpsLzh4YlA4OGN0TFhIcy9iNWhhOHgyeTJQWlhIZlRxUEt5RnRYbnZqZWZwdkI1QjRMSFlpdURtSWtrN1poWkhQa0hCNjAwZXlJZGYreHMvZGdmeWlidS9laTEyQllhR1lLaEt1UnJtYzFXNmxmRTNYQkkzelNESlp6dU1qVlRZdTMzbHpQcDgwNnlWaFloV3U5M0hhL3ZVRUNlZTJjMWN2Y21wTTljaGptZzF3TmNhSGVZVEJPMjZhMmJrMVFyTEpRWDRKS2tqeXl6UlVodlg2SkMxRTdEeHdDT1YxbitRelM5cHlEOVR2YmxHaHN1WjQrcU9UYlE2MFMzSGJHQUJ4eE5EQW9BWVdLNnUralAxZTdSV0hOMC9CYzVpazR5bGVzSW5LR2F1endHV0tIWUV2dXVYVndXMzdoQXdlTVVVbER4aUZVTXo0ZWFWV1Q1VWpwR2F6MGl0ekk5T0hHTFg5dkh1QTFiOVkzdGRlUGNVQW01ejVWZXJsWmphTk1yMlRhTnMyekxHK2NrYTg2dHF0UGVHTWZJcnlEVSs4ZTRFTm1VY0xqU1FsS0F6OEZYME5YamRiWG5qREdZYmZQZmREQjl0dWNod3JVcFlDbmhtLzFaMGZ6VkM5elV3dXZ0VUZMNWZ4cTBxbnZRWFAzbWFwYVUyLzdoM003Lzk0eWs2MStlSVpoZGhiSmpoaVRKS0srTFk1aE1EMS9wVVhONis0a0I1QmhmNmVXUHZiRDVXWUxvOUo4WXR6NzhhREFGSkNheFBQckZTUVJEbU0rSk5Ia3hjZjQzOXV0YWIwSnRjcDlCNUNISVpwZEJRcVpZWUh3NXZlUTZxTnc1d20xVVlpdTUzWWtWdmwrTEkvazM4Mjc5NG50R1JrTC8vNTYvNCtKTXp1SHFET0N4VERqeTBwM0RKMmtOVjc3RTRJT211Y3VpRmNwU0dvQnNLVXpNd0hOSjdYUWZUVllIMWV1bzZkSWQrQU05SGxUMUtnYjVsQ21EUlNRQVFmVXF4cXRoT2ZxTHpmTVBoL1ZPMDJnbjF4UmlySFY5cXhmV1pPaTVMaUZJSXl4NmdOdFFEME8vK1ZOMDZBZVVTSFd1aGtUSTdQYy83bjV5akZQaDAyaEZ2dm5LWWczdTNERHpvL1AvdXBmRlgzUDRLei9jTld6ZlYyTDkzRXdjdXpuSGg4azJpeU5KYTZwQ2s0QnVMZFhSN1ROYlErOUVkWis0MUNJSFJNRnJEamRSd1p2bmczcks0VGllRFpnZXNZbkdweFZlbmJqQlV6V3Z3ajViTDdOazFTbmNYK1lHR0t5OFdWQ25kK3ByczNEVEMvK0cvL1FrN05vL1N5bEorLzArTHNOQ0JLTTI3ODFYM3NhM2hwVnd1Z3VUNkc5Y0V4dUFtYStzZUl1ay85NHgrdWR2ZTcrdTlnaDRNaHBrRm15b0lOS1Z5bGFtSlVUYU5WTkQreWlmb1VvY0w3bEtyb0x0MGxZSG5uSWVzRWo5KytSQzFtcy8xS3d0OCt2bDVzc1VXVkRSdXVFeG9QTnBKdk80Ukk3dHFtRWxyVFZnTGNiVndROE5QUmFMOS9Cd1VSZDNMK3U0RXYrMWJ4dGcwTWNUUXdKTGIvakdyS3kwV1NIR2Z1YmlqM2hLcnZNQk1mdFlMQTUvREJ6YXowR3lUWmhscGt0Sk9ZaFptR3BDbVJOcFNMb2ZMazlMV2NVSGNvNVFpNk81Q21KVkRFZ3NrbHZOWFpnaytPWXUxamlEMEtWY0Nka3lONThlZytvL1JkUi84UnNLQUduaThnME1LRTZORDdOczV5ZjVkTTN4M2NZS0ZoUmF0ZGt3V3hXVGF3dzhBOUxxSFAzcFY0UHpRNE91Z1h4d3hueWlZVjRmVHVrUG1WWWlqRE51T09YditCcDducUZSOHRvelhHQjd5R1IvTEp6UVpzM3h0WTExKzBzdkg2ak9hclRZancyWEFVQXQ4M25qNUVGOThkNVZyTitxYytmb1NKQm5OWm9lT0NUQWVHSyszUmUzNlhrTmpWRjRBcUZ2Tkw5L01yOWUvZXB0TmxIUWVYN1EyR0tYSnNOZ01FaHVSUkJ2YkpFa3BoUWVrenRGWmJBT2FZS2pFNFgxVHZIQjhGM3UyVC9ZZnkzcUdqbnFUT0h0TFdZMWVYalp5L09BT0pzWnFaTzBZYUVMTEFLUExvZUVlR3UxZTNReWxOSjduWVR6eUxaZ0hMMlhsd3IvUG1IeUpjc2ZFWkZtR01ScHRvRllKS1FjZS9wMnFLeGFVQkFEUk45Q3ozdjJMbFYrV3NlRXFKNTdlZ1RHT0pNMW9SUkduVU5RWGxqQ3F0NTJMNjErSnJyZHl2bk9PcERzMHJGRG9Vb2hOWWxoc2MrcjBEYUxFNHZzK1h1anh5dE43MkxOejg0cUg2R3hlclYrejltSTZ5ODg5ditMc0ZkZnByVGJ3UFk5OU96ZHg3UEE4RjJmcTFPdHRsaHB0NnZVbXBBbVo4Zk5KYW1wOVovcmVHdkNrWTBsVUJ6WHdldlZ1eVhhcjlnV2hJV3BFUkRmbU9aa2toSjdQK0VoSXFSTHk3Tkh0akEwdHJ3eXcxcEU0UitpV2gzTXFsWkRCRm1QSHBpRisvdG9oWEp6eHorTTFQanA1a1hoK2tVeGxtSkZTdC9aL3Q0RmN4N055RHBMRTlpZnJyYXlSTURncmIvbk55Vi9tcE44UTl6YXNjaHNJSUFydy9YejFScU1EeEFrWW55MVRJL3o0bFlQOC9NMGp2SEJzKzhCOWQyZmUrMnZyUVZMazRTcHhyQ2dqN1BzK2xaRUtsRDN5VTZwZXNkZlF1b2VJQnZRQ1VQN2FKaVFKYkhqTllRSDBnbSthWm1SQUZzZjRSdE9KRTlxSkpaV3d0SUlFQUhGSHF0K2R1cHdGTm8wTmMvemdOcFlXV3R5c3Q4a1N5eGtjalhxYktFckluS0VVcnI4Qjd1a3RKOVJhVWZNMVNWQ2luVHBvdDdsd2FZWjN5d0ZCTGNBbUZxVTBld1pLcGQ2dnRieXJHeDdmODlpM1l4T0hkODR5ZmIzTzlJMTVscG90YkNmRmFwMlA0Mi9vNU03QWVQdnRqdy9EZkoxK1ZQRmdNY0V0TmZuMjdEVW1KcXVFZ1k4ZmVMeDROQ0FNOHpwMVdpc0NWalkrK1VTNjNuM2szVFBQUGJVVGpTWlZsb1hGRGw4M0ltakh4SjBFWXdhZXozcW1Ocmk3TmRydXRuOWUvdmw3Njl2dTljREVzY05pc2EwWU9pbU1oZXplT3M0THoremk5UmYyTXo3ZUMwdTkxeUlQQXV0WlErOVNiamx6VG0wYTRjaFRPL202a1VFbnB0MkpzYzcyeXpSdmRJSXNMQWVwalI1Zk5MMWVHcHQxaDRKdzJNeDFQNThGbnZGM0d4SUF4RjB0WHhFdlgwRnUyVFRLTThkMjBXakhLR2RKcmVWMFo0Ym1VZ3RzaWdwTC9YWmp4WlhkT3ZRbUZTb0ZsRXcrODc3WjRidHpOekNCd3NVcGdmSHhQSThkVzBjSGoxeHhmeHNhRHJqTjMyM2JPc2JUaDdjeE85L2t5dVY1cG1lWHFMZHNYaGVBNVpQN1JwL3ZiUitIVW1TWndtbndRNStra2tHY3NEUzl5QjgvdmtBU09YeWpHYTZHSER1MGpkNFVwOTdVUDJ0dGYwdy9QeW1DY3htZVp4Z2RxZkwwb1cxTXp5OXk0Zkk4OVdhYnExZG5JVW5vZEJKMG9QRlZyOWI5eG5kQnZPUEx2L1o1aHQ4cm56bXZ1a3NUTGUwNGhVNENSbE1iR2VMUTdzMDhjMkFiaytNcmUwcDZ4NjZuL0hLKzhxSDcranJYbnpmdzJyTzdXZmhmdmNZL2pZL3lodysvSTVxZUphcGJxRllaSGk5aE01M1hXcmlIMTFLSSswMENnTGl0NVliemR0ZEdpZ083cC9KQ0c4cWpIV1cwMmhtWEwwT24wOFpEazkzamFjNDVSOXhOOEtIdms0NzRaSXNkc29VR1gzOTdoU1JLOGZ3QXoxTll1NHVkMnlkVzlGaFlaMUVibUJ4NHA4WWdNQjZIOTIxaFliSE5wUnRMVE04dmNpWjJ0T01ZcmZvNTRKNGJ6RUhPNVV2QXlQTHRrRXREWlRwSkNXYnFMSnk1emgrYUVVRUFJOE5WZkYvejFONXRLNDRkREVHOXNlVEJvWUR4NFFvSDkweng4dkhkMk1UeVVlQno2ZW8wU1pTU3hTbCtXTXJIdnRYR1crc2Y0cXBWb1NoNWlxWlZ4SEVDU1FZbFEzbDRoT2VlMnM2elIzZXlaL2ZLcFgvTHd4UHI2NjFTS2krL0RDc25EVDU3ZUFmYnAwYVltaHltM1c3ejdzdzhMRVVRcEJpakNEeVBWaWNldUc4aEhqNEpBR0pOQnNkemU0M3F2bDBUZEtLVStYcVRwV1libTZWY3VaTFJUaExTTEVNWmoxSndtOGxmYTc3UC9QNk0wVlJDUllzeTBXSURXKzl3OXVKTlB2amtMSlZRWTdYQ2VKcnR2WW1CaW02UHhjYUdCQVliaE1FeW9XUERWZmJ2M3NTUnZUZTVlbTBMaldhSHk5Zm1hTGFpZkRHeERpbVZOOWJyY0NjclhvT1NRaWVXVmpPRVJwUG94Z0tmZjNHSjBiRlJqS2Z4amMvK2JnbGVwUlRHbUJWanlQMWVDZFY5WlF4czJUekM4MC92SW8xU2x0b2RGdXBMekhVV0lMSkVPcUdrZkt5OXk1WDhRN0s4Q2dIU3pOTElISjFXQkswWVBNUFE1RERQSGR2TlQxODd5dkdEVXd3Tjljcit1bnlaMkQwWUxCcVhaYlkvQVhOeWRJaWZ2WHFJVHo0OXgrZGZYYUxaakNGS1dWcktNQ2J2alNscXlWbnhhQ3BzQU5DdU95MUpob1MrVjMvMWM3K2JPLy9kR0krbkRtNGhqak15YS9PbDYzSEdsYXZ6RUZrb3BXamxnZXZ1bGFMWThPVlB2MUt0SDRDTlNSZGFmUDN0VlZDV0tIWDRKbDlqdDMzTEdMMXhic2k3YVoxMS9XSkRhM3ErQTkzNHF4L3VycTJUUEhka0I0dUxMZHJ0TnZWR203a2JDL2w0YzZoUTVYSi9PV1AvTnV6R2V3U1c1MTg0T3JFQ0M2b2M1bk1IV2hGWEw4endxOStlcE5sbzV4TUpsZUxBd0x3SXBWUzNkcjd0Ly9meXk2Q1pHaDlHSHpDNEpHTyswZWI2OUFMdFRrUjdxWVBMOHNjT3k4OW4vU1dmNzY5ZUQ0MVdDazhwWW10SmtveWtGZVhWK0J6bzBSR09IOXZCWC8vWmNmN0ZXOCt4Zldvay8zd0FXZWE2cytydjZWRUFkL2g4YkJ2bitlZDM4TnAzZTNuWEdKbzM1a21YbXFSYVFWQ21VbEg5WlRJS2g5M0FTZ2NoN3BmQ0JnQ3hkaXQzelZ2NWI3NHhQSDE0Q29jbHRSbjFaa3c3eXJnNVcwZXBmQlo3WG1mZWRSc28xdDJkYkswampydjdCbFI4c2lBZzdVUTA1cGY0L0t1VXpEb3FvVUdqVWNxeGJXcGkrYkhUbTR1dzBlZSs4ci9Ed0xCdnoyWWFqVGIxVHNUTWZJTldITk9aYllIWFczNlhyMGJ3UEVXUzNOdFlkKy8rODBZODM3NjNWRFpRcnRMMkRkUmJ6Snk2ekcraWhKTHZFUVFhb3gxN3QyOWFjUnNyNTBRc1Q0QUQyRFJaNWREK0xWeWZYZUx5alFYU09PUHNwUnUwMnhseG5LRjhnMW5Icm9FUFZsNjIxeW1ITm5rZ1NxSXM3L1pYQmpWUjQvaVJyZnprdGFQOHk1OCt3Nkg5VzFZZTNTMFBleit1eEFjbnh3NTY5dkFlYnI3VnhJUWhmL3o0TkF2WDZ1U0ZJeXhLRzVuVUp4NFpFZ0RFdXZXdWZIb24wVEFNT1hwd2lrNFcwMmduSkZIQ0Y5K2t6RTR2MFVoYVlDR29CdjNKVXhzOThlWGpyd3JQS0NBZ1hld1FMVFk1ZGZZNlE1VXduOUJsSEVGZ21Cd2JYVDdHRE43dnh1b0VERTc0MmpReHhKRkRVeXhHRVF1ekRXd0dGL3hwRnBzeHpVNEM3UWkwUWdYNWN6Wkc5NWZXcmJTK1JxRFhGWjhQQi9nNEI1MU9BbzJJcGNzMytlTkgzK0dGSG1oRnBSVDA5d3pvRFFmWWJqZUs3YzRQMEhwNTl2dlV4RERIRG0xamRxRkpacUhWaWJsd2NZNnMxUWFqeVlaSy9hNXZwZTY2Y09HK1d2bGV1VzVsUEVzU0piU01qNHZpZklkR1QxSFpNc3F6VCsva3JkZVA4TmFyaHppMGY5dUsyOHF5Kzc4R3JEZTdQN01XcnpzVXNIZkhHRysrY3BnMGMwU2ROcDlranZwY0hXeEd1Nk94YVF6V0p5amxSWnVXcTJndVAwK1F1UUxpd1pNQUlOWnN4ZFdqV25sMnFwVEx2SEJrTnlRYVh5bHdpbmRiWjRqbWw4QlpqQWtwQjVwT1lySHJyaERRcXczUXZmcHpEcWVCMElNMHBURzd4TWRmWHFJVEpVUXU3KzUvL3VtOGUzdjVlTmV2c05ZTEJHdDd2Z09QSVgvbWVGcXhhL3RtalBGUk5tTmt2TVlYWDlRNGRYNkdLemNXNk5RYkVEbGNOU09wVmdoOFJia1VZRW5KdWkxbkd1ZHJ3M3VyLzlmU0RUellHOUJxNTJ2QlZhV0M4d3kwSWk2ZXVVb3p6a2lTaExMbjhTZXZIMlJ5Yk9TVzE5RjFMMTBIQndQODBPT3BnMU00SEw2dmFTNjFXV3BFek1RSjJJdzBVL1FLNktsdUFuaWc4OWxWdHhhRW53YytwY0YxSERHT0pNbWdGZVBTRHVEQTl4bmJQczZMVCsvaXovL2tLSC81MWpQczM3WGwxcHRVdDJ0czcrRWhxdDR5d3VVYUFWb3B4b1pydkhTOENqaml6RklxQlh4ejZob3pzMDJhN1JqYU1haU1XSmNJUzRvZzBIaWVJbk9ReHZtbmJQbnpJRDBGNHNHUkFMQ0tmTmZ1Ym5sOC9OWjl0Q3Vsa09lUDdjQXBSNXlrekM0MCtES3oyS1VtblU3U1AwbkMramFlNlhIUUg1UDJ0U0tvQmNTeFQ5WnNzVFJUNTdQRWdqRlVmUStsTlM4L3M1dXg0VnIvY1p2dWVQajZudS9BL2ErcUhMZDl5eGd2UDN1QVdybkdjRGt2ekdOOGozTnBSckxZeW12aEp5bFpvR20yNC96NUdyb1RJamJPV29mdGZsSXJOUS93YVhvS1pwdk1ucjdLYjdWbXJEWkVFQ2plT0xHZnlmRlJZSGtjLzViTlQ3cUJJUFFEamg3WVNwSTViczQxbVYxc2tWckgvTTBsc2pnaFN5QUl2ZnM2eWZHT3VnRWppeDNad0d1V04rQVdWTGVNWU5sbmZQTW9MejI3bTUrKy9oUi85U2ZIT2J4djVaVi9KODBJakw3dkUvQjZCYTk2ajJ1UU1ZcmpoN2JUYWtaVUFzUFlVSlZ2ejE3bjh2VTYwek1wUkZtK0kyU2FMN1ZNMXJsbmdMaTdqSlVGRXVXVnZiM0NCb0I4SjAyRjloVDV5MkRRMmlmd0RMSFdkLzNFQkw3R1drZnFheEpyd0hnWVQvVjMwVlBLRnVJRDF3c0JxT1VsVWRWcWllZWYya0VuVG1pME1vTEE1OU92enBOTkw5RlNEcXBseWtNbEttVkRGT1cxOUpWYSs4enNmaWtiSDBKUFk0eWo2U3E0cEUybjJlSE0yV25lcTVZd1dsTXJoYnp5N0I0OGYvbGozbXNFZWwzWTYyM0xWby83N3RvNlFTbjBDY3MrMVhMQXhQZ3dPemVOY09YNlRhYm5Hc3pOTHRHWldZVFU1aHZqZUNiZm5NWW9sTy9qKzNyRld2UzFGS1RwVnd4VWltcEY0NmtTbWJWMG9neWloT2xyODd6ejhTbkNzcUVTQnZ6MFIyV01YdDRBeHhqZDI5Q1F6SGIzVCtzK3FTRHdPYkp2aXZwU2kwNWk4VHpGSjU5ZlluR3VEbEZLblBtVXFxWGwxMEFwMUgzc0RlaDFxVnZyU0t6Rk5lTjhUYjlMODBaL3FFU2xWb0ZOSWFXU1lmUGtNRWYzYmVYTlZ3L3g1b3Y3T2J4dis0cmJTek9iYngyOThVVWhHMWF0aEJ4L2FpdmxzbVprcU1MbXFYSE9uTDNPNlhObHJzM1VXYXkzeVpiYVpGayt6SUxMZXpQd0ZVcjdCTDdxZnpieTdSNlV0R1RmbzFjSk1OQU9OR1JaZmw0MkpwODBxdFRHVnlVOWlRb2JBSG83bFpaTEhoQ2dUSUJmOHdqS0htVUNramk5YmVQZ0hJU2hSMm9kVVpwaWRZRFdobklRVUFxOHZDZ0pac1ZTb1NlUlVubTM3TzBxbk5XR3lyejV3ajRxdmsrMWJJaVNtSk0zejhCaUE3UkdqMWNvbHdPMGNXUXVRMjlnWlpaeUJtMGdDTE44bG4ycFNpZXh6RGViZlBYdGxmNDRlTFZhNHJrak8yNDV2bGR5ZGoyMTRPRTJiWWlHelpQRCtFSEFjRFZnLzY0cHJoMlo0N3R6MS9uODlEWGUvZVFzUzR2VDBHam5QMTh1NVR1VytYNitXMStRQndEZlUzaDVvZmYrU2NxNTdOYnl6Q3kzQWNybEU4cWNjWlJLUG1weWlOUTVra2JDMStlbVVVWXhWUEhaUERIQ3M4ZDJEVDRiK2hmRHQ1a2hXYXVXZVBuNEhrSS95SGRBN3FSOCtuVkNQTGVVcjBKWVZiYjRmbG0rb25aa21jdkg5eHR0YUhXQUZFd0pKb2JZc1gyQ1RXTkRURzBlWXUvT3pieHdlRE92dm5TSWZUczMzM0tiUmlzcW9Ybmd2UmE5Um5xMVRST2oxSWJMYk5zOHdkNWQwNXphUGNFM095YzQrZlZsVGwyWTRlcUZhV2czdTVNWVBhZ29VQjQ2ekZES1IydU5GM2g0dmUvYW96QVA4eEZtUElWMW1yVFR5UXRmWVZCR1VRb0NqSy94bnZEejhub1ZOZ0JZcTRnaXkySWpBcFp3V1VnMDEyQldLK0pHNTY0VGhreVE5d0FrclFRNkVabjJtYStHTERZaWtpUWp0YjJ4M2lmWFlNTzB2QzN1OHZocXFWeml4V2QzazFySHpma1dNemRiM0RoOUZiS01acjFEMGtxSW5jUHJYdGxzcFB1elYyTmRkVy9ET2dlelRhN010NWhaYkJHM1UxcnRtUHBpbTllZTIwVVFodDkvbzNkN3ZsMTVqZjdlWThqL01EWmM0dERlTFd6Zk9zbFNmUk83OTA0d1BGWm1zZFhpazA1S3ROQUVtK1lCb0V0clRSeGJVTkF4RGsyNjdwbGZhZmQzWHltQ2tvL09Vb2dpN00xNVRzNHZvYldpNUJsYVVjeUpJenNKeXJkL0RaWW5TT2JQZG5pb3pQTlA3U0NPVXVZVzI3VGppTzlRZE9ZN3RCc1JtSHc0d0hqMzc0cXFOejlCcVR5Z2gwTVZPcDZIclliNUZzTzFrS2YyYmVQNGtlM3Mzem5KdHFrUjl1NmU1UGpCcmV3ZVdQWFFteWlvdFZyWDhzOTdzYnAyUk84ekNWRDJRM2J2Q0tuVlNteWVIR0Y4WkpqUm9UTFZhZ1ZQSzY3TUxKQzFJa2dkdXVSaGxTWkxMWm5MTU1xaDR6Ui9mOVFUZmxLNUQzbzlBRW5hSFROS016QWV0VnFiVmljbVN0TzczMERCRkRZQUpOYXkwT3h3L2NZQ01BZDRjS1hHVXBUbVZ4ekpuUWRxMDlCQTZxRGRJaDl0OGxoUWxodmJ4cGhiYXRQcEpOaTdIUCtrV2wxK053d0RUanl6bTNhY0VBUSsvL3pPMTN6eDZWbTRQRWRNQkdqU2Nqay9zYVgzY0hMVDNSWWpTcUU3TVN5K09jdmIxeGE0Y0dtR3N4ZG11SHJ0R0NlTzcyWnFhb1NSV2hrOTBKdnErdk1TMW5oLzZ2Wkx3SVpxSllacXNHV2l4dGF0bzlSS0pWTHIyREk1d2x5OWc4c1NQRFQxcFE2emkyMldtazNtRmpyUWFPSGlCQnNuZWNuajNvbStWMzU1RFM5Tm9oUkoyYzhieXFVbTBJQzVlVDcvZFp1NStSYm5iaXp3cjM1Nm5EZGUyTWZtVGFQTFQ2Vjc1ZHJiazJEd09kV0dRcDQvdW9OV0hGTU9QWDRiZk1zblgxNmtjM01KZ0V4NWVON2dROXpBR2srV3IveXp6SklrRHFVY0UwTVZOazhPTVR4YUl2QUNQS09wMWtMMjdkbksvbDBUSE53MXpvNnRZMHhNRHJGbFl2Uk90N3p1eDNLLzNPN3pNVEZhbzFvSnFaVkxUSTZVMkR3eHpKN3RZMXk4UGt0OXFVMmpHWkhHS1RmckxlYm5HN1FiSGJLbG1DeU44L2ZWdWY3dXo4dDM5RU0rcThlQTZYYVRkQkw2c3dBOHpUWGZNRGZYcE5XS0grckRlOVFVTmdBNEM4YTY3bmFsM1ZUb01ralRQRFhHZDBtS0draGM5N2hlMG5UWTFKSWxsaXk3OTFLNGo1TjhYTDIzL24zbCthbFdDZm56SHg5bDArUXdJN1dRZXIzQnhSc3pRQVB3SWV0dVhYTzMxL3RPK29zU1hONVlXc2Z5dHJNZHFOL2svQjhqRmx0dG5NMkxGYjMwM0I1R2FtVUdHL3oxN2h1Zzc5RGRPL2k0YXBVU0x6NnpDOTg0RGgvWVFydWRrRVVaVVpKeWVXYU9zMWNYdVh4eGhyT1hiaktkV1lqaVBIVGFnWjRuM2YzeldqNUt6dVU5REpuckhsQUNNb2pxWFA3b1cvNDJUUmdkQ3BpYUhLWTJIRklKODMzUiszTWk3bEMrZUh5OHlvOWZQc2hJT2Q5c2FLSFI1cHNvdzdVaUxBa0trL2U4cU5zUEI2MUY3M1czMXVHaUJCVW93ckxQcmgyYjJiOS9NMXMzVjVrY0dXSjBwTXpXcVhFMlR3NHhNVlpqY3FnTTV0WSszWHpjWFA4d2t4VnY0MjZURFV1Qno3NWQ0MHlPbHRtemM1S2poN2R5YlhxZXhhVTIwM09MM0p4cmNlN1NIR2N1ekhMNStpek45aExFblh3T2laT3Q3TDZYcnlEVjVPZm03bmNoTmJnMHlUOWZ0M3R2Q2p5c1V0Z0FZTFJpWXJUR29mMWJPWFYyUCtCakRtOWowMmlGcUIyUjN1V0sxUGNWTmxQVWw5cTRMTUY0QWR1M2pyRnYxeVJiTm85UXE0UXJOczhwRW1zZFR1VkZmNVpQaElvVFIzZXl0TlRpMUxsclhML1JJSjZaaCtFUzQxdUdVWmtpU3RMMWZ3OHQvZEwyU3VudWNrT05VcHBHczBYY1NBQkY0QnM2Y2NaU2Q0aG05ZXFGZTlHcmllRElsNEFOTmpwaEVQRDBvUjFzM3paT2xJQ05FMXJ0aEVzMzU5bHlkcG9MWXpYR3g2dGNuUmhsWm42UlJyT0Z0ZlFuNkJtajhtdVlOVGFxR29YRm9ReVVRNDkyTTJQcDVnSjRCdDk0eEhHK2pYTWFPN2pEYUlpMTBKM1YxNTNIb2hpcGxYam02WjNVV3kxbVpoZkpNc3Zac3pPazdRN050QTJlcGxRT05od0FlbnA5WmhhSVkwZ3lTMWdLT2JCM0M4Y1A3bUxiVkpXUmZrbmYxWTg3WDF5cWxFSS94TVova0hOdXVZeXlvanZ2SXYrTWpJeFVHQm1wc0dtaVJuM1BKRXZOaU5tNVJXN01OTmk2ZVliSnNScGJyZzV4WldLQmVxTkJKODd5c3NPYWxaK0hoLzgwSHltZTBubDlqQ1RGV1lmUzVHWEN0MDZ3Yy9zNHcwUGxXNDRwOHJ6QXdnYUFTa1Z6K01CVy9wdS9mSkdUdTZjb0djM2sxakdDa29kTjNWMlhpL1dxdlVWcFJocG5hS01ZR2FteGUrczRlM2VPczMzekVPVlNzT0tZd1JQU2sveWR2ZHZWOGZOSGR2R3ZmdllzazhNanpDM1dxVlpMakl5V1VMMmQwdTdCNEppOEFwcHBSbU94Zzhzc1E5VVMrM1pOc0hQYkJLVXd3S0s0Slo3ZHc1dlNtNzEvdTBhblVpMVRxUzZmZE9JMFlkUFVFRnMyalhKajN4TEhadWFZbjIzUmJIWm9SZ2xxWUlsZi8vYlcxS2d1OTcwb0JZRldSTll4TjllZ2s2Wk1qSTd3d3JGdGpBNVg4TzgwYmovNDFxMmFmVGc2Vk9IbDQzdUlrb3loYW9sZmVkOXc4c3NyK1hCWllGQ1YzbXUvOGZVQW5nSVYrbVE0Rmh0TnpseTV3ZkJFaVdNSEo1a2NLOSt4OFlmOE8ybnRlamIxL1NHb2JqWE1PL2N1alk1VUdCMnBrS1lKemEzNVVOR09iZU1jMmpmRjlNd2lDNHR0V3UwOHVPYTdDVXF2LzkzMGh2YXl6T2FCMG1rMGpyR0pNdnQyYkdiUDFwRmJqZ2tMUERPd3VBRWc5SGxxMzJhcWxSZjQwU3RQWVR6RmFMV0U3eGt5bCtMY25UOFVTbG1jMDkycnlmeEtLVFNLYWlXZ1ZpMHhWQzBUOXZlSXY4UHM4U2ZRNEU1NnZjSTdnenVtalF5WCtja3JUM0ZnenhUdE5DSDBmS29WRCt2eUNYejM4aG90WDNsYXROYWtjVVpxTFRhekdLTUlRNTlxTFdDc1ZNYW9sUU1WZDVyQnZSYnJ2ZElNUEordGt5T01qZFE0c0QybTJkbEd1NTBTeHpHSnphOWc3M21tdHdPbEZWbm1pRG9SMWxvODMyZHlxTUxJWkJYUE02em9QaGw0SHYzRkFkMmVqY0duTjdWNWpEZFBIQ0kwUGd1TmlCdHpUV1l1ellDMXBDbjR2czNmUjdXK09nKzlDWWhhSzNTb01FQzdHWEh1MGh4K1lOaTVaWmdqKzdjd1BsckdtTlduck40RVZQM0lyYnk1VzhPL211ZjVqTlI4Um1wbHBzYUhPTEJuTTNFN3BoV254Rm1LelN5VzdwTEx3YXo4aUQzbmgwMDVzQXF3RG9jRmwxZmdEQUpEclJReU1WYTY1WmdpYjlCVXpBRGdMRW9aeGtlcmpBeFZpSzBEWXlpdjg4dlVXMHVlcjZTeUtOY2RDTzFPUGxrOUhsNDB6cm51a0xUcjc1aTJmZXNJbXpjUDRiVEY1OEV2ejRKOFdDSkxIYWxMK3Z2R2UvZHg5bnBQYnlpQS9tejJPOVdjVjVSOGo5S0l4OGhJNWI0L2pqcy93TzRuTTgyd1ZuMXZnem00MlUzdmVVeHRHdWE1WXp1NWZHT1I2OU4xUHJRcHM5ZnJKTzBXU2F6eGd3RFAweHRhMmRGck1QTWxtaGJhYlM1ZG1lZkRUeTR5TVZRbGFxVzg5TUllS3FYbGs3aTFqdGc2UXJPeEVzOC9sRnZxLzZ2bDNxcVZESld5b1hLSDFScGliWmFYcWFwK2o1cnUvczJkd204UkZUTUE5RXZhYW94UmxEZllGdlI2U2ZPUGoxN1JmMXI0YmpxbCtsKzQxVjh3MzJoK3lFc1hyUlU2VVBpRWtGbXNoc0dPMU1HS2J2Y2kvMWlwL29TNFIrN0Vva0Rqc09iMlMrUFVxdi9xalYydkh0amZ1VzJjVjEvWVM3UFZKdlFVNzN4MmhwdFhGcUdUa0NpTjczdnJXbnJuQmx0RjhuZkdoQUVaR2UxV3hNY25MN08wMk9IR3pCTFdLUDdrbGNPckhuWDNkTC9PeVp3L3BMeUdUOTdnUDRJUDc0bXpjcy9Md1JmYzB0K1JiS0NVYzFFVk13QUFBMVBJNzk5TnVvSGZDdnloZ2w0NFdoN0RkdDBKdVVvLzVCbE1KaDhUZkZEVVFBanNXVzQvVjMzZTdqVHk0UHIvdCtxbTdzZnI5ZjFYL3JEaXJlc1BCUXdPQ1R5MVo1STBPVVNtRW1ibm04ek9OWEh6TWNRcHJyengxN2QzcE84clFoM1FhblZvWDUzaDgra0ZGcGM2akk1VTJUUXl4Tk5QNWVWK3RWYVVkSzl3MHFNZHUyK1hNMWUvMWYyZlZTdCtZdkFXeEwyUVNrb3JGRFFBUEtBUFFXOGkyajFOaFhwQ3JWZ2krTEMvaEwzdzkrRGR1bWQ4N3lxVmZtL0JMZTVUajhUOXREd25JSDljNVVxSkUwL3ZKRTRqTGw2cWMvYmFMTmNhR1pEbFMySk5yN2FDNmgrL3B2dnAvcTVVUGhjQTVlZExkWnNwNTg5ZDU1ZS8veHJQODFscWRYanRoWDByanJXMk4vL2d2anpsQjZvL0pKRC90c0xLSHFuSDRNazhUdnJsbE9YOERJVU5BQS9lb3pZZithRzY0M2pudy9URFBKckhwVUc2azE1UFR0NEQ0THBMcTdxRFhzYnc5TUdkdlBqTURKZXZ6dkdoVmR5NHVVQmlIUzV6ZUg1dkE2SjE3R2pYL1VGSFhodks5eFRKeUhBZUFoSjQvN09MTERZVG1uSE1jQzNrMktIdEE0Y3VkMUVzNzNqNGFPbzE4bzlnMW52eXlZdmVWK2dBc0NLRmM3OCtFby8zQ2Y5QmV6Q3YrZG85U3VQRDdtRmNpV3lnVVJ4OHlUSnJNUVByN0VlR0s3eHdaRGVMU3hIT0tYNzdRVVQ5NGsxd2xteW9RcVYyYjVNdGpkRUV0UkpLUTJNeHdzMHM4SFU3WVhURTU5RHVUV3paT3N6RTBCREFpb21kdDZ2RTk3aHdLLzlQM0VlUDB2Zi9VVkRvQU5Celh6dUU1Zk8xSmcvblpaSTM1MTVlZ2VXSmpXckYxc2hIait4Z2Fzc0lXam0rdlhpRCtxa3JlV1hIV29sUzZKSEZLWEYvNmVYNjlyZFgzUW1WZ1FFdytWN0dqUVpmbmJyQlAvMytXMHBselorOGVwUWRtMGRYSEdldGZXUUtBcTNYRHpkQVZUU1AzMmZoUVN0MEFCZ2NhNU9QeGcvamZzMjRmeEk4YnErRlV2bTJxcEFYV3NuWDNpdDhyZGd5TWN4YnJ4N21kNStjNDh5WkcyUXpkYkNXT0U3SnJNM0wyT3QxVkFwMHkvMUVGb2dTQ0R5SWg4cmdvRDdmNHZmdm55SjFHVmtDLy9hdm5xZFN1clhLMitQcWNmdHNpTWRUb1FPQUVHSmpySVBVV2tvRFY5bUg5MjNsejk4OGluSVovL3lINzVnNWY0M0d4WnNRYVB6eFlVemdRYkx4NmJFbVVKU0RDa3BCYTc3RnRiTTNlTWM1cHNhR2VPYklObDQ0dXFmL3M1NW4rZ0Zpc0xkQ0NMRk1Bb0FRWXQyTXp1czhERGFzUWVEeGIvN2lCQ2VPN0dDNE9zVC84OS8vQ3VhdVFhdUVIUittNnZ0RVdVSmkzYnBXNGZabUxTaXQwYjVDdSs2NjBtYWJHNWRtK2VMcnkzejQyUVZHaDZ2czI3SHBsdU9zYzJpWm15UEVMU1FBQ0NIV1RYZUxDVGpuNkhReXlxRUJyUmlwbG5qMjJHNys1YzhXZVArVE0zdysxNElrSmVza05EMUQxbTM4RmIyS2YydTV0NEdpVGFoODcwN2Z5N2QrYlhmNDl2UTFmdm43YjdFdTQ2M1hqL0hVbnFtVlJ4ZTlKS2NRZHlBQlFBaXhZZm5HSzQ1T25GRXFMWjlPWGoreGovLzlmLzBqL3RONGpYYytPRXZuMmh6TnVhVzg0UjZwb28yUFRST1c5d0M4MjJxQjVaOVJtWTh5THQ4ZTExTVFwOXo4N2hyL1N4UXp0N0NFMFQ3alF5VTJUeXh2K2pKNDVmODRydzRRNG42VEFDQ0UyRENsRkpXS3VhVlJuUndiNHYvMHYvMHB4dzVzNGYveDc5L21QLytuZDJHbURtbUltcWdSZUk2T2hiV1ZoTmIwTCtIVEJKc0JKWU91RG1HYkhiaTVTUHViSnI5dXAremFNc25oZlZPTWo5VDZ5d0oxdjQ0QnlBNGRRaXlUQUNDRTJEQUYvY0pBbWMySUkwZTViT2cxc2ovOTBWRyt1empOZCtldTgvVVhHZ3lNakpUd2RFQ3BuT0FaZzFOcld4M1EyOGdJWlRDZVlxamkwV3BsVERzUDZvdTRWc1NaOHpOOGMvbzZteWVHT0xSL1MzZnNmMlZaWnVrQkVDSW5BVUFJY1krV1ovUmxPTExNOVpjTEF2emlqYU1zTlR2ODhkQldMbDJmSjRwVFZPYlFSbE1LUEt3Q2w5M3h4bGV3TmdOdDhJeW1IUHBFYWNMNGFJMkZlaE90TmEwazRyT3ZMakZjTFRNOFZHTGI1ckdCby9PdGd4MlBib1ZBSVg1SXlqM3FPMmdJSVI0YjFqbjBiUzZ4RzYwT0o3Kzl6THRmWE9ETXVldkVFVlRMUGtPVkVGUmV4Mzg5QnZjWVNDeVFPWmJhRVl0TFRRTFA1K2lCTGZ6Vno1N215SUZ0L1dPY2MxaWJCdzhKQUVKSUQ0QVE0ajdxTmY3V1dyTE00dnY1MXMrMVNvbFhuei9BK01RdzMrM2FSQlNsMUNvbGF1VUFxeHhadXY3cmtHNW5BR0hvRS9xR3BXYUhTOU1MTE13MW1CZ1pJZ3o5VzQ2UjduOGhsa2tQZ0JEaXZyUE80YXpGbUlFSmZPUURCWE9MRFZ6bUNBS2Z3Q2ljY21EWE1oa1Flc01OR1E1dDg5b0F4bGY0MmhERktYTkxEUllYSThMQVkySzR3dkJJWmNXMFB5a0tKTVF5Q1FCQ2lBZmtZVzM1ZE91amtDWmZpRnZKRUlBUTRvR3gxdEdPTThpZ1hOYjlBa0kvRkxtNkVlTE9wQWRBQ0NHRUtLQWZObzRMSVlRUTRwRWdBVUFJSVlRb0lBa0FRZ2doUkFGSkFCQkNDQ0VLU0FLQUVFSUlVVUFTQUlRUVFvZ0NrZ0FnaEJCQ0ZKQUVBQ0dFRUtLQUpBQUlJWVFRQlNRQlFBZ2hoQ2dnQ1FCQ0NDRkVBVWtBRUVJSUlRcElBb0FRUWdoUlFCSUFoQkJDaUFLU0FDQ0VFRUlVa0FRQUlZUVFvb0FrQUFnaGhCQUZKQUZBQ0NHRUtDQUpBRUlJSVVRQlNRQVFRZ2doQ2tnQ2dCQkNDRkZBRWdDRUVFS0lBcElBSUlRUVFoU1FCQUFoaEJDaWdDUUFDQ0dFRUFVa0FVQUlJWVFvSUFrQVFnZ2hSQUZKQUJCQ0NDRUtTQUtBRUVJSVVVQVNBSVFRUW9nQ2tnQWdoQkJDRkpBRUFDR0VFS0tBSkFBSUlZUVFCU1FCUUFnaGhDZ2dDUUJDQ0NGRUFVa0FFRUlJSVFwSUFvQVFRZ2hSUUJJQWhCQkNpQUtTQUNDRUVFSVVrQVFBSVlRUW9vQWtBQWdoaEJBRkpBRkFDQ0dFS0NBSkFFSUlJVVFCU1FBUVFnZ2hDa2dDZ0JCQ0NGRkFFZ0NFRUVLSUFwSUFJSVFRUWhTUUJBQWhoQkNpZ0NRQUNDR0VFQVVrQVVBSUlZUW9JQWtBUWdnaFJBRkpBQkJDQ0NFS1NBS0FFRUlJVVVBU0FJUVFRb2dDa2dBZ2hCQkNGSkFFQUNHRUVLS0FKQUFJSVlRUUJTUUJRQWdoaENnZ0NRQkNDQ0ZFQVVrQUVFSUlJUXBJQW9BUVFnaFJRQklBaEJCQ2lBS1NBQ0NFRUVJVWtBUUFJWVFRb29Ba0FBZ2hoQkFGSkFGQUNDR0VLQ0FKQUVJSUlVUUJTUUFRUWdnaENrZ0NnQkJDQ0ZGQUVnQ0VFRUtJQXBJQUlJUVFRaFNRQkFBaGhCQ2lnQ1FBQ0NHRUVBVWtBVUFJSVlRb0lBa0FRZ2doUkFGSkFCQkNDQ0VLU0FLQUVFSUlVVUFTQUlRUVFvZ0NrZ0FnaEJCQ0ZKQUVBQ0dFRUtLQUpBQUlJWVFRQlNRQlFBZ2hoQ2dnQ1FCQ0NDRkVBVWtBRUVJSUlRcElBb0FRUWdoUlFCSUFoQkJDaUFLU0FDQ0VFRUlVa0FRQUlZUVFvb0FrQUFnaGhCQUZKQUZBQ0NHRUtDQUpBRUlJSVVRQlNRQVFRZ2doQ2tnQ2dCQkNDRkZBRWdDRUVFS0lBcElBSUlRUVFoU1FCQUFoaEJDaWdDUUFDQ0dFRUFVa0FVQUlJWVFvSUFrQVFnZ2hSQUZKQUJCQ0NDRUtTQUtBRUVJSVVVQVNBSVFRUW9nQ2tnQWdoQkJDRkpBRUFDR0VFS0tBSkFBSUlZUVFCU1FCUUFnaGhDZ2dDUUJDQ0NGRUFVa0FFRUlJSVFwSUFvQVFRZ2hSUUJJQWhCQkNpQUtTQUNDRUVFSVVrQVFBSVlRUW9vQWtBQWdoaEJBRkpBRkFDQ0dFS0NBSkFFSUlJVVFCU1FBUVFnZ2hDa2dDZ0JCQ0NGRkFFZ0NFRUVLSUFwSUFJSVFRUWhTUUJBQWhoQkNpZ0NRQUNDR0VFQVVrQVVBSUlZUW9JQWtBUWdnaFJBRkpBQkJDQ0NFS1NBS0FFRUlJVVVBU0FJUVFRb2dDa2dBZ2hCQkNGSkFFQUNHRUVLS0FKQUFJSVlRUUJTUUJRQWdoaENnZ0NRQkNDQ0ZFQVVrQUVFSUlJUXBJQW9BUVFnaFJRQklBaEJCQ2lBS1NBQ0NFRUVJVWtBUUFJWVFRb29Ba0FBZ2hoQkFGSkFGQUNDR0VLQ0FKQUVJSUlVUUJTUUFRUWdnaENrZ0NnQkJDQ0ZGQUVnQ0VFRUtJQXBJQUlJUVFRaFNRQkFBaGhCQ2lnQ1FBQ0NHRUVBVWtBVUFJSVlRb0lBa0FRZ2doUkFGSkFCQkNDQ0VLU0FLQUVFSUlVVUFTQUlRUVFvZ0NrZ0FnaEJCQ0ZKQUVBQ0dFRUtLQUpBQUlJWVFRQlNRQlFBZ2hoQ2dnQ1FCQ0NDRkVBVWtBRUVJSUlRcElBb0FRUWdoUlFCSUFoQkJDaUFLU0FDQ0VFRUlVa0FRQUlZUVFvb0FrQUFnaGhCQUZKQUZBQ0NHRUtDQUpBRUlJSVVRQlNRQVFRZ2doQ2tnQ2dCQkNDRkZBRWdDRUVFS0lBcElBSUlRUVFoU1FCQUFoaEJELy8zYnJRQUFBQUFCQWtMLzFJQmRGREFrQUFBd0pBQUFNQ1FBQURBa0FBQXdKQUFBTUNRQUFEQWtBQUF3SkFBQU1DUUFBREFrQUFBd0pBQUFNQlVGekJUaGxremE0QUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIkZJRE9fMl8wIiwiRklET18yXzEiLCJGSURPXzJfMV9QUkUiXSwiZXh0ZW5zaW9ucyI6WyJobWFjLXNlY3JldCIsImNyZWRQcm90ZWN0IiwibWluUGluTGVuZ3RoIiwiY3JlZEJsb2IiLCJsYXJnZUJsb2JLZXkiLCJlbnRlcnByaXNlQXR0ZXN0YXRpb24iXSwiYWFndWlkIjoiNTYwYTc4MGNiNmFlNGYwM2IxMTAwODJmODU2NDI1YjQiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjp0cnVlLCJ1cCI6dHJ1ZSwidXYiOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJsYXJnZUJsb2JzIjp0cnVlLCJlcCI6ZmFsc2UsImJpb0Vucm9sbCI6dHJ1ZSwidXNlclZlcmlmaWNhdGlvbk1nbXRQcmV2aWV3Ijp0cnVlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6ZmFsc2UsImFsd2F5c1V2Ijp0cnVlfSwibWF4TXNnU2l6ZSI6NzYwOSwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0IjoxNiwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoyNDEsInRyYW5zcG9ydHMiOlsidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN31dLCJtYXhTZXJpYWxpemVkTGFyZ2VCbG9iQXJyYXkiOjIwNDgsIm1pblBJTkxlbmd0aCI6NCwibWF4Q3JlZEJsb2JMZW5ndGgiOjMyLCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6OCwicHJlZmVycmVkUGxhdGZvcm1VdkF0dGVtcHRzIjo1LCJ1dk1vZGFsaXR5IjoyLCJyZW1haW5pbmdEaXNjb3ZlcmFibGVDcmVkZW50aWFscyI6MTUwLCJhdHRlc3RhdGlvbkZvcm1hdHMiOlsicGFja2VkIl19fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiTk9UX0ZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMTAtMDIifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTEwLTAyIn0seyJhYWd1aWQiOiIxYWM3MWY2NC00NjhkLTRmZTAtYmVmMS0wZTVmMmY1NTFmMTgiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjFhYzcxZjY0LTQ2OGQtNGZlMC1iZWYxLTBlNWYyZjU1MWYxOCIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IDUgU2VyaWVzIHdpdGggTkZDIChFbnRlcnByaXNlIFByb2ZpbGUpIn0sImRlc2NyaXB0aW9uIjoiWXViaUtleSA1IFNlcmllcyB3aXRoIE5GQyAoRW50ZXJwcmlzZSBQcm9maWxlKSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzMsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfSx7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciLCJzZWNwMzg0cjFfZWNkc2Ffc2hhMzg0X3JhdyIsImVkMjU1MTlfZWRkc2Ffc2hhNTEyX3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURNekNDQWh1Z0F3SUJBZ0lVU09FalRmLy95cVJmUFc3UXE4cXRJeUNyQWc4d0RRWUpLb1pJaHZjTkFRRUxCUUF3THpFdE1Dc0dBMVVFQXd3a1dYVmlhV052SUVaSlJFOGdVbTl2ZENCRFFTQlRaWEpwWVd3Z05EVXdNakF6TlRVMk1DQVhEVEkwTURVd01UQXdNREF3TUZvWUR6SXdOakF3TkRNd01EQXdNREF3V2pBdk1TMHdLd1lEVlFRRERDUlpkV0pwWTI4Z1JrbEVUeUJTYjI5MElFTkJJRk5sY21saGJDQTBOVEF5TURNMU5UWXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFDZHZsMjd3Mmd1MWZQWGVFRmJJZHF4MEJhbHZWRFZXclFQSjdIcXZpdUV0WkhseFNMeFNGdGNYcFRvbHZMdm9mOGY0dE1lclFUa1ZHemNtWXptMUVCVDRJSnVNbW9FcWZrRUVoV3BzQURNRnJqWmtxbFpZOUVxeFF6TG9WRUVvbkU1b0d4U2RWQ3hDY0xJYWNrcHlSL0NDWHZqMUJ0L2hUZ0U5aFRsRjRwUnF4TWt4M3BsRjd5OGREWmxSSFdzN3ZibmhtQkNHZUkwWlBFUTZubDJtQ2cycjc0YWRGMnU2SzlyckxmaEJDM1FMRThFUHJncVVzSStoa3VxMnRLNE0yU01PcDh1VVZWa3FVZXUzaDBrcjNXVkkwVzAycGtnck9naUZLTEZOa1NyYlloZGpNQkRqNWl6bXFmYzl4SlJLb0RYNjEycWQ4WkdWSHBUNUFZRlgrMWhBZ01CQUFHalJUQkRNQjBHQTFVZERnUVdCQlRaeVU1RGlRL2EyVUVnRTdxQkswemhJc1JOUmpBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQU1BNEdBMVVkRHdFQi93UUVBd0lCQmpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQVh2bkI0U0x1VUpmWU1TVkdBaHNzTC9TbVdsaTNGU2NjZ3h5ZHZLbEFDY2lkSUlXS1FxYTNxL1FTVUVRekM5RGdFZk1ncjdpQzFCa1RaYklMYm9WNlVaNWtuTnN2akVaV3VNZW9nSjh0Z1pzMWhWdkt3Wml6d0orbUVjbXNqaElyQll1b0wxVDZ5ck9KdktGZzFqditDeTRad0E5QnBrL1YzVU9pcjFWeUs4ZEN0eUh1NnZmb3NvdEFkWXg4RkF1UjI0M2dSVE1WNkp4OEpkaWcySkRJQVFNbHpWZURwU1VIWC9LMkhYUkh4SHdmZ2piZ1VqakJ1LzcycjhPZmVoeWh6SFhJM0s4Q0ZGZGZsTys4bkVPSkszeThGMWl2Z1M1dU4vOFNtY1l3L1NUUVl3aHJ4UHV3ejNuUDhiYU11bTRCQjJublltcEI2MHNYM2JsNWs4UVVTdz09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWZDQVlBQUFDR1ZzK01BQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBSFlZQUFCMkdBVjJpRTRFQUFBYk5TVVJCVkZoSHBWZDdUTlYxRkQvM2Q1OXdlUVNJZ1M5QVFBWGNGTEFRWmk5ZnBlVnoxdFkvV1RacjVXeHBjN1c1a25MYTVqSTNaODVzclMybk0yc2p0V3daUzdJVUg0SDR4Q25FUXg0REFaRjc0Vjd1czg4NXY5L2xJbkJ2VkovQjRQdjludS81bnUvNW52TTU1NmZ6QS9RdjBIYi9JclgzVkZLUG80NWNubTRpblVJV1l3TEZSbVpRVXV3akZHL04xaVJIaDFFWjBOUlZSdWRxdDFCZCsyblNLeVMvT2h5czArbGszZS8za1E5cXZENFpVdGE0VlZTVXVZMGVpcHlpVGhBZm9jb09SVmdEdXV3M3FLUmlBZDNyYmNFdGpUallJb2Y2V2FIc0NtelZQV0NNeCtjZ2g4dExxV01LYU1Xc1VqTHFvMlJ0SklRMG9Pem1lcnBRdTRlc1pnc09Oa0d4SDdkMGtkdlRUMTdzNE9NVTdWSThaaGpnR2FNK0FxOWlFTnU4UGlmMXVkejA3TXd2S1dmOEdsVm9DRVkwNFBDNVdkVGFYWUZiUjh2TnZMNSszS2dmYjV4Tk15YTlSYW1KaXluYU1sR1RWdEZscjZiYTl1K3BxbkVYNHVNdVJSZ2pTWUVock43dXRGRmU2bHFhbDdOZmt3NWltQUdIeW5QcGJrOFZtWTB4c3RucHRsRkNWQ1l0elR1Qk44M1FwTUxqVHRldmRQelNVbko3ZThta2p4WjM5ZlhiS0RmbGRacWJ2VStUVWdHbkJWRjZmUTJpUEhnNFcxNlVXVXd2emJrMTZzTVpFK1BuMHB2ejdKU2V1QXllczhsY3BDbWFLdW8vcCtxV3IyVWN3SUFIV3J2UDBZRXpoWEF0TEFic3NIaHA3aUdhbXZ5aWpQOHJ5cXJYVVdYOVhvb3d4eUF1Zk5CcnA0M1BPQkZYWmxrZjhNRFJpcWNweW93QXdwdXoyeCtmV3Z6L0R0ZGU5c21zenlndGNSNkMxd2JkekJsNk9scTVXTllZNG9HYXRoSk1ya1RFeDBqQVJTSEFWcys1cllrUU5YYitRZ2ZQTHNRNmdYeUluc3JlUWZtcG03UlZGWWZMODZuMWZpVU9rWXZTaGtVUHh2YnVrem95NksxaWhNMWhvM1h6VzZFdlNmWEErZHBpV0dhV2QrZG9Yekx6bUd3S1lGTENBc1JBbFBCQWhNbENGWFU3dEJVVlByOEhnVmNKSFdxK0YwMHBscitETVRkclA0enZ4WTExa05NaHhUK1NlVEdnK2Q0VjVMUUppdHlVR0pOQjhWRlpzamdZQlpNL0lJL1hDVGtqMHF5RE9wRjJBVlExN0NJalVwL0RuVDFVa0w1RjVnZGorc1Mxd2cxZ0UzZ2lnbTYwZkNYelNuUFhieUFQYklYditJRHBFMTZUaGFISVM5c2t5aGxtTUU1RjNjZnFBS2hxMkMwRTVQSDFnWWFYYUxQRGtaRzBIREpPbktXSHA1MUkwejVTT3V4OGUxV0F1WnpkSFFyVGtwOFRtalhvSStsYTB3R1pzenVicWJPM2lmUTZBL1c3dlZTWXNWM21SMEpLd2tLYzRXSGlCa21SOEkzQ0NnSTg3b09MNHF6VDVQK1JVSkJlakVPZ0FQSzhoWVB6YXRNK2VJVHAySU85eVRRbWVyb21QUnh4MXF4QWNzaWxlL3ViU2VFYmNXUUdZRUNnaGNMWTJIeUtqb2dqSDI1aE1wanBVdjFPdWdsaTRlaDJlUncwTzMyYkpqa3l1Q2dOemcwdnpsWU1TaVNzMHVvbzRNRzdoTU9qQ0VhWDF5RkUwblN2akJ6dVRuRXBLODZaOElvcUZBSXVidzhrZzlBckVhUkVXU1pJK2pINFhicDZnOUU5RW5KVDNvYVJ6RE4rTVVKQlFESG41NmE4b1VtRUJ1c094QnMvTjUrdEpFYlBrQUZEajhVR3ZPcy9JV3ZjU2dsR0JodlM3L0ZUWWZwV0dZZERZOGZQQXhXU0EzNXNUQzRwNCtMbTRBYXFJb1BlUXRmdWZLNkpoMFpoeGxic1VYT1NtWE5pZkQ1WlRBa3lEb2ZiYmNjbHhuQThXTkFxeENiUk55a2hYeFFwYUR3NjdmWFVZYnNpRzBLaHR2Mm9lSXZoOHJoUU1ZT2NFQXFYRy9lSSt6bmdPYzV5eHI4cTgySUFNMWMvRkxGT3BscXU1ZUZRWHJNWnpHY1ZDalliTFdHNUk0QlQxZXVScmxieHROT3RNaXREREVoTFhJSXluQUF2dU9FV0UzWDNOZEFmdDk0VmdhRzQyWElRdDBaWDZQZUNFL3FRRmU5cks2SHg3WVU1MEt2SDdmVzRmUytxN0tLQkp4c2dnQlg1cFNBR2gxaklyVmg1elE2dzNSZmFhaEJYbS9hQ2JDWlRqQ1VGVVR5V1pxVzlwNjJNakpQWFZxT3JQZ01PNE52NzRHa2Yrb3dmdE5WQkRRbmpGSnFIU3cxN3BYdmhXVzVLWnFlL1E0OU4vVVNUQ0FWV29RWEZJSEJIWFhlM0ZQclVEc3VHRG10Ri9oSEtUSHBla3hoaUFPUEkrU0pxNlM2SEY0STlZV3prQkpUbzQ2aVVNeldwOFBpci9SaWR1THhLWXNTa3NWOHZMbE9RdmhHWDJZbFIwT0JoQmpDK3UvZ0VjdlkwQXBLN1lrNDFOeGpQU1FuV0ZIVEY2NlVyamdldkI4Q3U1YStsMnZZU1JQdHVWRG83M2hoZE1TSG5VWDd0VGpzVlpHeEFsL1dwdGlPSUVRMWduTDI5bVg2L3RSMXRtbGtZajhXNFgrQ1NqV2NVREdZMU5wUy9DN2hTS3FpTUxNL2wyUW1TV1o3M0RkeitnaW84QkNFTllQUTQ2cW5rendYVWJxdkJreGpVUXNXZlpGZ2J1bzNyQWYrd043ak9POTAreW54NFBpM0wrMG5ZTDFTY2hEVWdBUDRnUFYvN0lkMXErMUhTaG11R2tJcVdSUGd5eE1GcVA4SGZqVG5qWHdZNWJRZmJKY3Q2T0l6S2dNSG90Ri9IZTFlZ3NheEhTcUc2d2ZkbVE1eDhOeVRGRnFCY3AyaVNvd0hSM3lrNSszNmhGN3ZYQUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzFfUFJFIiwiRklET18yXzEiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwibGFyZ2VCbG9iS2V5IiwiY3JlZEJsb2IiLCJtaW5QaW5MZW5ndGgiXSwiYWFndWlkIjoiMWFjNzFmNjQ0NjhkNGZlMGJlZjEwZTVmMmY1NTFmMTgiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJsYXJnZUJsb2JzIjp0cnVlLCJlcCI6ZmFsc2UsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjp0cnVlLCJhbHdheXNVdiI6ZmFsc2V9LCJtYXhNc2dTaXplIjoxMjgwLCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjgsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4LCJ0cmFuc3BvcnRzIjpbIm5mYyIsInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi04fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotMzV9XSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5Ijo0MDk2LCJtaW5QSU5MZW5ndGgiOjQsImZpcm13YXJlVmVyc2lvbiI6MzI5NDczLCJtYXhDcmVkQmxvYkxlbmd0aCI6MzIsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjoxLCJyZW1haW5pbmdEaXNjb3ZlcmFibGVDcmVkZW50aWFscyI6MTAwfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMTAtMTIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDczLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ill1YmlLZXkgNSBTZXJpZXMgd2l0aCBORkMgKEVudGVycHJpc2UgUHJvZmlsZSkiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI0MTAxMjAwMiIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTEwLTEyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3M31dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNC0xMC0yOSJ9LHsiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbImM3NjUwN2UzMTUzMjhmYmIwNmQ3MTg0YmRlZWYxMmFmMGUzMjdmNGUiXSwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiYzc2NTA3ZTMxNTMyOGZiYjA2ZDcxODRiZGVlZjEyYWYwZTMyN2Y0ZSJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiWXViaUtleSA1IFNlcmllcyAoRW50ZXJwcmlzZSBQcm9maWxlKSJ9LCJkZXNjcmlwdGlvbiI6Ill1YmlLZXkgNSBTZXJpZXMgKEVudGVycHJpc2UgUHJvZmlsZSkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDczLCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjJ9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50IiwicmVtb3RlX2hhbmRsZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURNekNDQWh1Z0F3SUJBZ0lVU09FalRmLy95cVJmUFc3UXE4cXRJeUNyQWc4d0RRWUpLb1pJaHZjTkFRRUxCUUF3THpFdE1Dc0dBMVVFQXd3a1dYVmlhV052SUVaSlJFOGdVbTl2ZENCRFFTQlRaWEpwWVd3Z05EVXdNakF6TlRVMk1DQVhEVEkwTURVd01UQXdNREF3TUZvWUR6SXdOakF3TkRNd01EQXdNREF3V2pBdk1TMHdLd1lEVlFRRERDUlpkV0pwWTI4Z1JrbEVUeUJTYjI5MElFTkJJRk5sY21saGJDQTBOVEF5TURNMU5UWXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFDZHZsMjd3Mmd1MWZQWGVFRmJJZHF4MEJhbHZWRFZXclFQSjdIcXZpdUV0WkhseFNMeFNGdGNYcFRvbHZMdm9mOGY0dE1lclFUa1ZHemNtWXptMUVCVDRJSnVNbW9FcWZrRUVoV3BzQURNRnJqWmtxbFpZOUVxeFF6TG9WRUVvbkU1b0d4U2RWQ3hDY0xJYWNrcHlSL0NDWHZqMUJ0L2hUZ0U5aFRsRjRwUnF4TWt4M3BsRjd5OGREWmxSSFdzN3ZibmhtQkNHZUkwWlBFUTZubDJtQ2cycjc0YWRGMnU2SzlyckxmaEJDM1FMRThFUHJncVVzSStoa3VxMnRLNE0yU01PcDh1VVZWa3FVZXUzaDBrcjNXVkkwVzAycGtnck9naUZLTEZOa1NyYlloZGpNQkRqNWl6bXFmYzl4SlJLb0RYNjEycWQ4WkdWSHBUNUFZRlgrMWhBZ01CQUFHalJUQkRNQjBHQTFVZERnUVdCQlRaeVU1RGlRL2EyVUVnRTdxQkswemhJc1JOUmpBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQU1BNEdBMVVkRHdFQi93UUVBd0lCQmpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQVh2bkI0U0x1VUpmWU1TVkdBaHNzTC9TbVdsaTNGU2NjZ3h5ZHZLbEFDY2lkSUlXS1FxYTNxL1FTVUVRekM5RGdFZk1ncjdpQzFCa1RaYklMYm9WNlVaNWtuTnN2akVaV3VNZW9nSjh0Z1pzMWhWdkt3Wml6d0orbUVjbXNqaElyQll1b0wxVDZ5ck9KdktGZzFqditDeTRad0E5QnBrL1YzVU9pcjFWeUs4ZEN0eUh1NnZmb3NvdEFkWXg4RkF1UjI0M2dSVE1WNkp4OEpkaWcySkRJQVFNbHpWZURwU1VIWC9LMkhYUkh4SHdmZ2piZ1VqakJ1LzcycjhPZmVoeWh6SFhJM0s4Q0ZGZGZsTys4bkVPSkszeThGMWl2Z1M1dU4vOFNtY1l3L1NUUVl3aHJ4UHV3ejNuUDhiYU11bTRCQjJublltcEI2MHNYM2JsNWs4UVVTdz09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWZDQVlBQUFDR1ZzK01BQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBSFlZQUFCMkdBVjJpRTRFQUFBYk5TVVJCVkZoSHBWZDdUTlYxRkQvM2Q1OXdlUVNJZ1M5QVFBWGNGTEFRWmk5ZnBlVnoxdFkvV1RacjVXeHBjN1c1a25MYTVqSTNaODVzclMybk0yc2p0V3daUzdJVUg0SDR4Q25FUXg0REFaRjc0Vjd1czg4NXY5L2xJbkJ2VkovQjRQdjludS81bnUvNW52TTU1NmZ6QS9RdjBIYi9JclgzVkZLUG80NWNubTRpblVJV1l3TEZSbVpRVXV3akZHL04xaVJIaDFFWjBOUlZSdWRxdDFCZCsyblNLeVMvT2h5czArbGszZS8za1E5cXZENFpVdGE0VlZTVXVZMGVpcHlpVGhBZm9jb09SVmdEdXV3M3FLUmlBZDNyYmNFdGpUallJb2Y2V2FIc0NtelZQV0NNeCtjZ2g4dExxV01LYU1Xc1VqTHFvMlJ0SklRMG9Pem1lcnBRdTRlc1pnc09Oa0d4SDdkMGtkdlRUMTdzNE9NVTdWSThaaGpnR2FNK0FxOWlFTnU4UGlmMXVkejA3TXd2S1dmOEdsVm9DRVkwNFBDNVdkVGFYWUZiUjh2TnZMNSszS2dmYjV4Tk15YTlSYW1KaXluYU1sR1RWdEZscjZiYTl1K3BxbkVYNHVNdVJSZ2pTWUVock43dXRGRmU2bHFhbDdOZmt3NWltQUdIeW5QcGJrOFZtWTB4c3RucHRsRkNWQ1l0elR1Qk44M1FwTUxqVHRldmRQelNVbko3ZThta2p4WjM5ZlhiS0RmbGRacWJ2VStUVWdHbkJWRjZmUTJpUEhnNFcxNlVXVXd2emJrMTZzTVpFK1BuMHB2ejdKU2V1QXllczhsY3BDbWFLdW8vcCtxV3IyVWN3SUFIV3J2UDBZRXpoWEF0TEFic3NIaHA3aUdhbXZ5aWpQOHJ5cXJYVVdYOVhvb3d4eUF1Zk5CcnA0M1BPQkZYWmxrZjhNRFJpcWNweW93QXdwdXoyeCtmV3Z6L0R0ZGU5c21zenlndGNSNkMxd2JkekJsNk9scTVXTllZNG9HYXRoSk1ya1RFeDBqQVJTSEFWcys1cllrUU5YYitRZ2ZQTHNRNmdYeUluc3JlUWZtcG03UlZGWWZMODZuMWZpVU9rWXZTaGtVUHh2YnVrem95NksxaWhNMWhvM1h6VzZFdlNmWEErZHBpV0dhV2QrZG9Yekx6bUd3S1lGTENBc1JBbFBCQWhNbENGWFU3dEJVVlByOEhnVmNKSFdxK0YwMHBscitETVRkclA0enZ4WTExa05NaHhUK1NlVEdnK2Q0VjVMUUppdHlVR0pOQjhWRlpzamdZQlpNL0lJL1hDVGtqMHF5RE9wRjJBVlExN0NJalVwL0RuVDFVa0w1RjVnZGorc1Mxd2cxZ0UzZ2lnbTYwZkNYelNuUFhieUFQYklYditJRHBFMTZUaGFISVM5c2t5aGxtTUU1RjNjZnFBS2hxMkMwRTVQSDFnWWFYYUxQRGtaRzBIREpPbktXSHA1MUkwejVTT3V4OGUxV0F1WnpkSFFyVGtwOFRtalhvSStsYTB3R1pzenVicWJPM2lmUTZBL1c3dlZTWXNWM21SMEpLd2tLYzRXSGlCa21SOEkzQ0NnSTg3b09MNHF6VDVQK1JVSkJlakVPZ0FQSzhoWVB6YXRNK2VJVHAySU85eVRRbWVyb21QUnh4MXF4QWNzaWxlL3ViU2VFYmNXUUdZRUNnaGNMWTJIeUtqb2dqSDI1aE1wanBVdjFPdWdsaTRlaDJlUncwTzMyYkpqa3l1Q2dOemcwdnpsWU1TaVNzMHVvbzRNRzdoTU9qQ0VhWDF5RkUwblN2akJ6dVRuRXBLODZaOElvcUZBSXVidzhrZzlBckVhUkVXU1pJK2pINFhicDZnOUU5RW5KVDNvYVJ6RE4rTVVKQlFESG41NmE4b1VtRUJ1c094QnMvTjUrdEpFYlBrQUZEajhVR3ZPcy9JV3ZjU2dsR0JodlM3L0ZUWWZwV0dZZERZOGZQQXhXU0EzNXNUQzRwNCtMbTRBYXFJb1BlUXRmdWZLNkpoMFpoeGxic1VYT1NtWE5pZkQ1WlRBa3lEb2ZiYmNjbHhuQThXTkFxeENiUk55a2hYeFFwYUR3NjdmWFVZYnNpRzBLaHR2Mm9lSXZoOHJoUU1ZT2NFQXFYRy9lSSt6bmdPYzV5eHI4cTgySUFNMWMvRkxGT3BscXU1ZUZRWHJNWnpHY1ZDalliTFdHNUk0QlQxZXVScmxieHROT3RNaXREREVoTFhJSXluQUF2dU9FV0UzWDNOZEFmdDk0VmdhRzQyWElRdDBaWDZQZUNFL3FRRmU5cks2SHg3WVU1MEt2SDdmVzRmUytxN0tLQkp4c2dnQlg1cFNBR2gxaklyVmg1elE2dzNSZmFhaEJYbS9hQ2JDWlRqQ1VGVVR5V1pxVzlwNjJNakpQWFZxT3JQZ01PNE52NzRHa2Yrb3dmdE5WQkRRbmpGSnFIU3cxN3BYdmhXVzVLWnFlL1E0OU4vVVNUQ0FWV29RWEZJSEJIWFhlM0ZQclVEc3VHRG10Ri9oSEtUSHBla3hoaUFPUEkrU0pxNlM2SEY0STlZV3prQkpUbzQ2aVVNeldwOFBpci9SaWR1THhLWXNTa3NWOHZMbE9RdmhHWDJZbFIwT0JoQmpDK3UvZ0VjdlkwQXBLN1lrNDFOeGpQU1FuV0ZIVEY2NlVyamdldkI4Q3U1YStsMnZZU1JQdHVWRG83M2hoZE1TSG5VWDd0VGpzVlpHeEFsL1dwdGlPSUVRMWduTDI5bVg2L3RSMXRtbGtZajhXNFgrQ1NqV2NVREdZMU5wUy9DN2hTS3FpTUxNL2wyUW1TV1o3M0RkeitnaW84QkNFTllQUTQ2cW5rendYVWJxdkJreGpVUXNXZlpGZ2J1bzNyQWYrd043ak9POTAreW54NFBpM0wrMG5ZTDFTY2hEVWdBUDRnUFYvN0lkMXErMUhTaG11R2tJcVdSUGd5eE1GcVA4SGZqVG5qWHdZNWJRZmJKY3Q2T0l6S2dNSG90Ri9IZTFlZ3NheEhTcUc2d2ZkbVE1eDhOeVRGRnFCY3AyaVNvd0hSM3lrNSszNmhGN3ZYQUFBQUFFbEZUa1N1UW1DQyJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTEwLTEyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3MywiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZdWJpS2V5IDUgU2VyaWVzIChFbnRlcnByaXNlIFByb2ZpbGUpIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVMkYxMDAwMjAyNDEwMTIwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblByb2ZpbGVzIjpbImVudGVycHJpc2UiXSwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMC0xMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzN9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjQtMTAtMjUifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyIxNGFiZWM4OGYzNTE4ZTM3YzRlNWJjN2EzZTkyNGZjZGY1NmE3OGQ3Il0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjE0YWJlYzg4ZjM1MThlMzdjNGU1YmM3YTNlOTI0ZmNkZjU2YTc4ZDciXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkVudGVycHJpc2UgU2VjdXJpdHkgS2V5IFNlcmllcyB3aXRoIE5GQyAoQ29uc3VtZXIgUHJvZmlsZSkifSwiZGVzY3JpcHRpb24iOiJFbnRlcnByaXNlIFNlY3VyaXR5IEtleSBTZXJpZXMgd2l0aCBORkMgKENvbnN1bWVyIFByb2ZpbGUpIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTcyOCwicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoyfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCIsInJlbW90ZV9oYW5kbGUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURTakNDQWpLZ0F3SUJBZ0lVUjM4bXEyNlNmMnN6VlYyQmRHNldFTjdrdVdVd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVJZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU5ZMFdiOW9Qb1JvS29ReVdQYUpwejExdnJXVGc2elR0bU5qMlZvS1JueXZLR1JxcHpiODN3NWw2WUE5NlVZa1lCRFFQMGlsTzJEUGU2d1dxVlI1ekRmUnpkY0g4YmgrTDdkR0d2YWU2aFJUWmhrRmtDcFhEczRIY2NrbnJEZjhGQ2xKN0hlMzlKZjQyL0cxUW0yeno5V1dtclBYdGdpSy94MDVHanNRZkd1REcxemY1UVRVVWllOGx3eW1LM1RmZE92TmVlSkFBUGUycG43SXRmUmIrclZyTldpRHpsUm4ydk5uWjJ3UG80d0gvV0o2ZGhYWkcrck1XVCthNkJvY2cxVWZJdzZrZHVuRzRiVHBaenN2YWNGWXlSMG1wZitEZU9ucFNXQW15d0pXSHZUbGYyWVh4RnllWGNUQUNkUWxjTU5HSjJWaFpRNDh4dFA1L1JCUC84a0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ2h5NDJva2lxY1RTMWlxYS9IUldqa0JuNEgvTUI4R0ExVWRJd1FZTUJhQUZPcTNRcENlREh0a2V0dFVmQU82ZkU2ZjJLRmhNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUFuK1JISVBidE1FRE5kVDFnOEgvUml0QWtVZExnQXQxdFdHV25sajlrbmJ2NC80R2xYN0M5cDQ1ZWZQTzkvYVpMNk9WMVhSS0JpNkttdEJXNUs3bnVZRW5NeC81QnFCU2JMVDdyaGR1QzQ5VEJlTWI5UEhkWHNUbFNWTlllZnIxZEdpZHI0ajB4VkJRTGIxcmtuREFiZFdEektmdm5heUtPOEZyd2U3SHg4NDNNRy9ySitjMFhydVV2YmZWVENITGlJV2hNN29ORGhMOHhvYjZ4VW85S0xLY1NMK0l0WXNPMy85V2I4UTlHanNxTDRGWHNEY0cxU2FZaDdLcGZ1TW1PaXhxekpaTzJuSWljUFlSZzFJMlN1aVVmWU83MHRtZEhjYmwra1NRbVNZdDdycTR2aUlMZzJHeDNqOXJJVHVXVGpiYVVhU1NReGdPbU1TSHV5ek1BQyIsIk1JSURSekNDQWpHZ0F3SUJBZ0lVZXg5blQ5dndaTlhTNDgzTGRpWUdmdzJTalNvd0N3WUpLb1pJaHZjTkFRRUxNQzR4TERBcUJnTlZCQU1NSTFsMVltbGpieUJCZEhSbGMzUmhkR2x2YmlCSmJuUmxjbTFsWkdsaGRHVWdRaUF4TUNBWERUSTFNRGd3TVRBd01EQXdNRm9ZRHprNU9Ua3hNak14TWpNMU9UVTVXakFuTVNVd0l3WURWUVFEREJ4WmRXSnBZMjhnUmtsRVR5QkJkSFJsYzNSaGRHbHZiaUJDTWlBeE1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBdTFNZXZueTlkeU85WlVDMzlTb01oTGNSL0RYcnRGL2NpTTEydGNpeTJFWEFaNk1rcml2VnRDZkVWTTlYNklTVEVuQlA2dVNZWW92NnBwdjZPNkpoMk5IbVltNHcrSm5TNFZuQ1BVN21IQU1mVkkyTUdUVE1WT2V3MHhVc0c3c0lTSWtJRFVCbXVrOFlLOWM1emljOSt2RlFHTElrc2RYTzVpVkZJZ05HNTNjR1hENFpMWm9BUGl1MFBFb3p4QXFZSWFJNGd4S2hPQTNTOC9XOG1JV3N1Nm9meWo0R3ZrRkc2WjdreUYzMTA3UDdtd0ZITHJJM0VOYVBXTU9GY1RhR2EwZHcrL3ZWUndqUmNFWkJWc3V1VC84N2NrU3MwYTVwa3QzdlpCbGFZZVQ4cHpTcmVWN21vd2NJTTkwTDJpYUFUbFAwbnhtYUU2bk95VGJvakZWbDJ3SURBUUFCbzJZd1pEQWRCZ05WSFE0RUZnUVVTWEVoM3NhM2J0RHVybTRNTS9DN1MxbFJ1dVl3SHdZRFZSMGpCQmd3Rm9BVTZyZENrSjRNZTJSNjIxUjhBN3A4VHAvWW9XRXdFZ1lEVlIwVEFRSC9CQWd3QmdFQi93SUJBREFPQmdOVkhROEJBZjhFQkFNQ0FZWXdDd1lKS29aSWh2Y05BUUVMQTRJQkFRQjVHYzNoYWZ0cDdoS3NFWnNvK2kvWjVuUnVxZG16RzJXQ2xVb1JVcWJhUHlnbG5KRGpLUi9rZmdPbDZpYmJGL3p0aG0zS21YUTdIY0RJUDJ4TWRHN1UyTDJpbWJKUUhxUGYvaDJIcW9qYjRyWmd1ZSs2VzRrdFNSNWVsUjlMMXJZcUUvU0dZTTRpRUtvVlFTdjdSVDFyeEllV2lLc3cvVnh4aS9RT25zeDNGN3g4MENDWWdCNEUzeVF4OFZUVzQ0MGhURXdUQTFlTUhPaXgzMnRQdHl5SElhOFBWVklmVnBIUUpCYU1WdnY1MDhVRWp3a2JVMnJuamZ6b1NUTlM5QTVqVVE4bUJTdmU5NXJqQjBkbzk4RVUrRHhkQnFYMitINmk1d2xJQ0ZnemhkemNzbmU5aEdLVDZselRYNGNJZEpzclkyK3hsZUswRkZReTZsR0VWTEVlIiwiTUlJRFBqQ0NBaWFnQXdJQkFnSVVYemVpRURKRU9UdDE0RjVuMG82WmYvYkJ3aVV3RFFZSktvWklodmNOQVFFTkJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNWjYvVHhNOHJJVCtFYW9Qdkc4MW9udE1Pby8ybVEyUkJ3SkhTMFFaY3hWYU5YdmwxMkxVaEJaNUxtaUJTY0laZDFSbngxb2Q1ODVoKy9kaEs3aEVtN0pBQUxrS0t0czFmTzUzS0dOTFp1ano1aDN3R25jcjRoeUtGMEc3NGIvVTNLOWhFNW1HTkQ2enFZY2hDUkFIZnJZTVlSREY0WUwwWDRENW5HZHh2cHBBeTZua0VtdFdtTW53TzNpMFRBdWNzcmJFNDg1SHZHTTRyMFZwZ1ZkSnB2Z1FqaVRKQ1RJcStEMzVod3RUOFFESXYrbkd2cGN5aTV3Y0lmQ2t6eUNpbUp1a2hZeTZLb3FOTUtRRWRwTmlTT3ZXeURNVE10MWJ3Q3ZFenB3OTF1K21zVXQ0cmowZWZuTzlzMFpPd2R3TVJEbkg0eGdVbDVaTHdyclBrZkMxLzBDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01COEdBMVVkSXdRWU1CYUFGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFNd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkRRVUFBNElCQVFDM0lXL3NnQjlwWjhhcEpOanh1R29YK0ZrSUxrczB3TU5yZFhML2NvVXZzcmh6c3ZsNm1lUE1yYkdKQnlKMVhucXVCNXNnY1JFTkZ4ZFFGbWEzbWlvOFVwZjFvd00xWnJlWHJKMG1BREcyQnBscWJKbnhpeVlhK1IxMXJlSUZUV2VJaE1OY1pLc0RackZBeVB1RmpDV1NRdkptTldlOW1GUllGZ05oWEpLa1hJYjVIMVhnRURsd2llZFlSTTdWb2xCTmxsZDZwUkZLbFg4dXN0Nk9UTU9lQURsMnhORjBtMUxUaFNkZXVYdkR5QzFnOStJTGZ6M1M2T0lZZ2MzaXJvUmNGRDM1NGc3cktmdTY3cUZBdzlnQzR5aTB4QlRQclk5NXJoNC9IcWFVWUNBL0w4bGRSazZIN1hrMzVEK1dWcG1xMlNoL3hUNUhpRnVoZjR3SmIwYksiLCJNSUlEU0RDQ0FqQ2dBd0lCQWdJVVVjbU1YelJJRk9nR1RLMFRiM2dFdVpZWmtCSXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFEbTU1NWJXWTlXVyt0T1kwcklXSGxkaCthTmFub0NaQ0ZoN0drM1laclFtUFV3MGhrU0c2cVlIUXRQK2ZaeVMzM1ZFcnZnK0JRcW5tdW1nTmhmeEZya3dFWkVMZWlkQmNDOEM0QWc0bnFxaVBXcHpzdkkxN05jeFlsSW5MTkxGY1pZLytnT2lONlpPVGloTzUvdkJaTWJqOXJpYUFjcWxpWW1OR0pQZ1RjTUdhRUF5TXpFTU55Mm5tNkVwK3BqUDVhRjZnaTIxdC9VUUZzdUoxajJSai95bk0vU2RSdCtlY2FsNU9Zb3R4SGtGYkw5dnZ2MkEyT3Y1SVRaQ2x3NGJPUzlucHlwUWltT1o1UUFZeXRtWWFRcFdsL3BNWXo2elNqOFJxa1ZETkVKR3FOZlRLQTJpdkxZd1g2bFN0dE1QYXBnMEo4NGw5WDB2b1ZOL0ZwUzRWQ1ZBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlFnS0ZBaEc2UmFXK2hUeTUyZHhlVDhiQzk2SHpBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBWU16Z0xySkxJcjBPb3ZRbkFaclJJR3VhYmlIU1VLU21iTFJXcFJrV2VBdHNDaERFSHBYY0ovYmdETktZV29IcVE4eFJVakI0Q3llcFlldmMzWWxyRzhvN3pIeHBmVmNhb0w1U2V1Smt6SHhLbjRiVGFTcDkrTXZ3YW1ucDY0a1pNaU5iRkxrbmZQOWtZS29SSGtNV2hlUkoxVXNQMXo0U2Nta0NlSUxmc01zNnZxb3ZxaldDbEZzSnBCY3NsdVlIV0Y3YkJKMW40UndnK0FURW9wWTRJZ0d2Nlp2d2MrQTlyK0FUMmhxcG9Ta1lvQWwrQU5Zd2dzbE9mOXNKZTBWK1RBOVlZL1VsYUJtUFBUZDAvL3I5d3ZjZVBXWmtQaktvQUMvelVOaGZEYmg0TFY4R0hzM2x5WDJYb21ML0xOYzhKWXp5SWFERWhHUXZlb1BoaC90cjFnPT0iLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVRuYmJHSVIyTkh2enFJS0ZBZVF3RzFYQmlzMHdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFRWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPc1hqM2swNEJhbjRUWWR0WktxRC9PUEp4eUR5YVBtQ0JVRlVpYVpJZ1R0ZVpuajNYMjVEaGdwWlpYc0M0RDB5ZEljcmxBNndOVUluT1JML0w5ekJiVEVJTUFWTUdvNmc3VUtBbWIyTUY2QUhibmhZSmQ5ZWlrdXBWTldTaEhOWU5jNEdCZE8xWU42QWZVcXZKaEhiZTNWNFNOTVBtQlJFS0pQVno3VGh3Z21nZ1RlOFdzMkswL3dzcXYyd1NFN3BiQ0JzVVpoSVg1MWJaTTNwcUR3SlBUbVJGRXZ0MC82dEc1ZU84RjNqMTRPWHFmRWhtam4xVnZ4S0RZUU9MWkF4Q3d3Z0MwUDRDZGZXdjN5OFBTUjhJMzU0aE8xWStHek5qdklxWDM4TktMeXd1SVlIRmVyT3hObHhFTUJ2RmhZQnVSdVlBa2tnVWFQcU42VUJoc0lMcnNDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNDb1JIaGl5Tm5iblhSV0lMNlpCWG9CWDlZVE1COEdBMVVkSXdRWU1CYUFGQ0FvVUNFYnBGcGI2RlBMblozRjVQeHNMM29mTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFDUUZhZkpJMS81V2c5Q0VFaW1FMVJQNTRSZ1F3VE5UT09Rc0xBQ1RlK3JJdGxGUXpDOVpEaHJWODI4eVg3anp5K0FBc3AzaXpLN1QxdGgyZGw3bSt0dTBzdzJQYS9vbGMwMm50NlB5SXczNDhnYUh6aEkxKzBLRTQ1cXh2RkRlTDJsTXhiUGZDWXZ5RUVhWXpqaVFFTFU1OTUxcFhHV3lLTWEvNGZMdE8rWktPWGhNdVZlcTRyWERQSTU0VzZKSE9pQWFpS2Rpdys1ZTNjMmt0L2pGSVF0TTZ2TVhnOUxORnpkakVUTnQyMFZYOVFldlJwRlpmdWNNRzl3Q2FRRG9GbFB6cFRNSktoUGV2L2ltSm1aWWhLZnIwbExjZW10cWpJeExBb3FaZE9ZZkhCZzYrdkFjZFBJL2lhdUdwVUF2N1grVUtObUR3aloyQmFINHNMd2hCMm0iLCJNSUlEU0RDQ0FqQ2dBd0lCQWdJVURxRVJ3KzRSbkdTZ2d4Z1Vld0pGRVBEUlozWXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFESTdYbkgrWnZEd01DUVU4TThaZVY1cXNjdWJsdlZZYWFSdDNZYmF4bjlnb2RMeDVzd0gwbFhyZGdqaDVoN0ZwVmdDZ1lZWDdFNGJsMXZielVMZW1yTVdUOE4zV01HVWU4UUFKYkJlaW9WN1cvRStoVFpQLzBTS0pWYTNld0tCbzZVTGVNbmZRWkRyVk9SQWs4d1RMcTJ2NUxsajV2TWo3SnRPb3RLYTlKN25IUzhrTG16WFhTYWowU3dFUGg1T0FaVVROVjR6czFidm9UQVFRV3JMNC9KOVF1S3Q2V0NGRTVuVU5pUlFjRWJWRjhtbHFLMmJ4Mno2b2tWbHR5RFZMQ3hZYnBVVEVMdlkxdXNSM0RUR1BVb0lDbE9tNGNycHduRFJMVkh2alllUEdCQi8vcEV5enhBL2djU2N4andhSDFaVXc5Ym5TYkh5dXJLcWJUYTFLdmpBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlRxdDBLUW5neDdaSHJiVkh3RHVueE9uOWloWVRBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBcVFhQ1dNeFRHcVZWWDdTazdra0ptVXVlVFNZS3VVNitLQkJTZ3dJUm5sdzlLN0hlMUlweFowaGR3cFBOaWtLam1jeUZnRlB6aEltd0hKZ3h4dVQ5MFB3M3ZZT2RjSkpOa3REZzM1UFhPZnpTbjE1Y0ZBeDFSTzBtUFRtSWI4ZFhpRVdPcHpvWHZkd1hETTQxWmFDRFlNVDd3NElRdE15dkU3eFVCWnEyYmp0QW5xL05EVUE3YmU0SDhIM2lwQysvK05LbFVyY1VoK2o0OEs2N1dJMHUxbTZGZVF1ZUJBN24wNmo4MjVycURxc2FMczlUYjdLQUhBdzhQbXJXYU5QRzJraktlcnhQRWZlY2l2bEZhd3AyUldadnhyVnRuM1RWMlNCeHlDSkNrWHNORDA1ZENFclZIU0pJcytCZHRUVk5ZOUF3dHlQbW55YjB2NG1TVHp2V2R3PT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsImljb25EYXJrIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwicHJvdmlkZXJMb2dvTGlnaHQiOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJwcm92aWRlckxvZ29EYXJrIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09In0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjYtMDQtMjUiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NzI4LCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IkVudGVycHJpc2UgU2VjdXJpdHkgS2V5IFNlcmllcyB3aXRoIE5GQyAoQ29uc3VtZXIgUHJvZmlsZSkiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlUyRjEwMDAyMDI2MDQyNTAxMyIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUHJvZmlsZXMiOlsiY29uc3VtZXIiXSwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNi0wNC0yNSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk3Mjh9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjYtMDUtMDEifSx7ImFhZ3VpZCI6IjZkNDRiYTliLWY2ZWMtMmU0OS1iOTMwLTBjOGZlOTIwY2I3MyIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiNmQ0NGJhOWItZjZlYy0yZTQ5LWI5MzAtMGM4ZmU5MjBjYjczIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlNlY3VyaXR5IEtleSBieSBZdWJpY28gd2l0aCBORkMifSwiZGVzY3JpcHRpb24iOiJTZWN1cml0eSBLZXkgYnkgWXViaWNvIHdpdGggTkZDIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjUwMTAwLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsiZWQyNTUxOV9lZGRzYV9zaGE1MTJfcmF3Iiwic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURIakNDQWdhZ0F3SUJBZ0lFRzBCVDl6QU5CZ2txaGtpRzl3MEJBUXNGQURBdU1Td3dLZ1lEVlFRREV5TlpkV0pwWTI4Z1ZUSkdJRkp2YjNRZ1EwRWdVMlZ5YVdGc0lEUTFOekl3TURZek1UQWdGdzB4TkRBNE1ERXdNREF3TURCYUdBOHlNRFV3TURrd05EQXdNREF3TUZvd0xqRXNNQ29HQTFVRUF4TWpXWFZpYVdOdklGVXlSaUJTYjI5MElFTkJJRk5sY21saGJDQTBOVGN5TURBMk16RXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFDL2p3WXVoQlZscWFpWVdFTXNyV0Zpc2dKK1B0TTkxZVNycEk0VEs3VTUzbXdDSWF3U0RIeTh2VW1rNU4yS0FqOWFidlQ5TlA1U01TMWhRaTN1c3hvWUdvblhRZ2ZPNlpYeVVBOWErS0FrcWRGbkJubHl1Z1NlQ09lcDhFZFpGZnNhUkZ0TWprd3o1R2N6MlB5NHZJWXZDZE1IUHR3YXowYlZ1em5ldWVJRXo2VG5RakU2M1JkdDJ6YnduZWJ3VEc1WnliZVdTd2J6eStCSjM0WkhjVWhQQVk4OXlKUVh1RTBJek1aRmNFQmJQTlJiV0VDUktnanEvL3FUOW5tRE9GVmxTUkN0MndpcVBTemx1d24rditzdVFFQnNValRHTUVkMjV0S1hYVGtOVzIxd0lXYnhlU3lVb1RYd0x2R1M2eGx3UVNnTnBrMnFYWXdmOGlYZzdWV1pBZ01CQUFHalFqQkFNQjBHQTFVZERnUVdCQlFnSXZ6MGJOR0poamdwVG9rc3lLcFA5eHY5b0RBUEJnTlZIUk1FQ0RBR0FRSC9BZ0VBTUE0R0ExVWREd0VCL3dRRUF3SUJCakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBanZqdU9NRFNhK0pYRkNMeUJLc3ljWHRCVlpzSjRVZTNMYmFFc1BZNE1ZTi9oSVE1Wk01cDdFamZjbk1HNEN0WWtOc2ZOSGMwQWhCTGRxNDVyblQ4N3EvNk8zdlVFdE5NYWZiaFU2a3RoWDdZKzlYRk45TnBtWXhyK2VrVlk1eE94aThoOUpESWdvTVA0VkIxdVMwYXVuTDFJR3FyTm9vTDltbUZuTDJrTFZWZWU2L1ZSNkM1K0tTVENNQ1dwcE11SklaSUkydjlvNGRrb1o4WTdRUmpRbExmWXpkM3FHdEtidzd4YUYxVXNHLzV4VWIvQnR3YjJYMmc0SW5waUIveXQvM0NwUVhwaVdYL0s0bUJ2VUtpR24wNVpzcWVZMWd4NGcweExCcWNVOXBzbXlQeksrVnNndzJqZVJRNUpsS0R5cUUwaGViZkMxdHZGdTBDQ3JKRmN3PT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZkNBWUFBQUNHVnMrTUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFIWVlBQUIyR0FWMmlFNEVBQUFiTlNVUkJWRmhIcFZkN1ROVjFGRC8zZDU5d2VRU0lnUzlBUUFYY0ZMQVFaaTlmcGVWejF0WS9XVFpyNVd4cGM3VzVrbkxhNWpJM1o4NXNyUzJuTTJzanRXd1pTN0lVSDRINHhDbkVReDREQVpGNzRWN3VzODg1djkvbEluQnZWSi9CNFB2OW51LzVudS81bnZNNTU2ZnpBL1F2MEhiL0lyWDNWRktQbzQ1Y25tNGluVUlXWXdMRlJtWlFVdXdqRkcvTjFpUkhoMUVaME5SVlJ1ZHF0MUJkKzJuU0t5Uy9PaHlzMCtsazNlLzNrUTlxdkQ0WlV0YTRWVlNVdVkwZWlweWlUaEFmb2NvT1JWZ0R1dXczcUtSaUFkM3JiY0V0alRqWUlvZjZXYUhzQ216VlBXQ014K2NnaDh0THFXTUthTVdzVWpMcW8yUnRKSVEwb096bWVycFF1NGVzWmdzT05rR3hIN2Qwa2R2VFQxN3M0T01VN1ZJOFpoamdHYU0rQXE5aUVOdThQaWYxdWR6MDdNd3ZLV2Y4R2xWb0NFWTA0UEM1V2RUYVhZRmJSOHZOdkw1KzNLZ2ZiNXhOTXlhOVJhbUppeW5hTWxHVFZ0RmxyNmJhOXUrcHFuRVg0dU11UlJnalNZRWhyTjd1dEZGZTZscWFsN05ma3c1aW1BR0h5blBwYms4Vm1ZMHhzdG5wdGxGQ1ZDWXR6VHVCTjgzUXBNTGpUdGV2ZFB6U1VuSjdlOG1ranhaMzlmWGJLRGZsZFpxYnZVK1RVZ0duQlZGNmZRMmlQSGc0VzE2VVdVd3Z6YmsxNnNNWkUrUG4wcHZ6N0pTZXVBeWVzOGxjcENtYUt1by9wK3FXcjJVY3dJQUhXcnZQMFlFemhYQXRMQWJzc0hocDdpR2FtdnlpalA4cnlxclhVV1g5WG9vd3h5QXVmTkJycDQzUE9CRlhabGtmOE1EUmlxY3B5b3dBd3B1ejJ4K2ZXdnovRHRkZTlzbXN6eWd0Y1I2QzF3YmR6Qmw2T2xxNVdOWVk0b0dhdGhKTXJrVEV4MGpBUlNIQVZzKzVyWWtRTlhiK1FnZlBMc1E2Z1h5SW5zcmVRZm1wbTdSVkZZZkw4Nm4xZmlVT2tZdlNoa1VQeHZidWt6b3k2SzFpaE0xaG8zWHpXNkV2U2ZYQStkcGlXR2FXZCtkb1h6THptR3dLWUZMQ0FzUkFsUEJBaE1sQ0ZYVTd0QlVWUHI4SGdWY0pIV3ErRjAwcGxyK0RNVGRyUDR6dnhZMTFrTk1oeFQrU2VUR2crZDRWNUxRSml0eVVHSk5COFZGWnNqZ1lCWk0vSUkvWENUa2owcXlET3BGMkFWUTE3Q0lqVXAvRG5UMVVrTDVGNWdkaitzUzF3ZzFnRTNnaWdtNjBmQ1h6U25QWGJ5QVBiSVh2K0lEcEUxNlRoYUhJUzlza3lobG1NRTVGM2NmcUFLaHEyQzBFNVBIMWdZYVhhTFBEa1pHMEhESk9uS1dIcDUxSTB6NVNPdXg4ZTFXQXVaemRIUXJUa3A4VG1qWG9JK2xhMHdHWnN6dWJxYk8zaWZRNkEvVzd2VlNZc1YzbVIwSkt3a0tjNFdIaUJrbVI4STNDQ2dJODdvT0w0cXpUNVArUlVKQmVqRU9nQVBLOGhZUHphdE0rZUlUcDJJTzl5VFFtZXJvbVBSeHgxcXhBY3NpbGUvdWJTZUViY1dRR1lFQ2doY0xZMkh5S2pvZ2pIMjVoTXBqcFV2MU91Z2xpNGVoMmVSdzBPMzJiSmpreXVDZ056ZzB2emxZTVNpU3MwdW9vNE1HN2hNT2pDRWFYMXlGRTBuU3ZqQnp1VG5FcEs4Nlo4SW9xRkFJdWJ3OGtnOUFyRWFSRVdTWkkrakg0WGJwNmc5RTlFbkpUM29hUnpETitNVUpCUURIbjU2YThvVW1FQnVzT3hCcy9ONSt0SkViUGtBRkRqOFVHdk9zL0lXdmNTZ2xHQmh2UzcvRlRZZnBXR1lkRFk4ZlBBeFdTQTM1c1RDNHA0K0xtNEFhcUlvUGVRdGZ1Zks2SmgwWmh4bGJzVVhPU21YTmlmRDVaVEFreURvZmJiY2NseG5BOFdOQXF4Q2JSTnlraFh4UXBhRHc2N2ZYVVlic2lHMEtodHYyb2VJdmg4cmhRTVlPY0VBcVhHL2VJK3puZ09jNXl4cjhxODJJQU0xYy9GTEZPcGxxdTVlRlFYck1aekdjVkNqWWJMV0c1STRCVDFldVJybGJ4dE5PdE1pdERERWhMWElJeW5BQXZ1T0VXRTNYM05kQWZ0OTRWZ2FHNDJYSVF0MFpYNlBlQ0UvcVFGZTlySzZIeDdZVTUwS3ZIN2ZXNGZTK3E3S0tCSnhzZ2dCWDVwU0FHaDFqSXJWaDV6UTZ3M1JmYWFoQlhtL2FDYkNaVGpDVUZVVHlXWnFXOXA2Mk1qSlBYVnFPclBnTU80TnY3NEdrZitvd2Z0TlZCRFFuakZKcUhTdzE3cFh2aFdXNUtacWUvUTQ5Ti9VU1RDQVZXb1FYRklIQkhYWGUzRlByVURzdUdEbXRGL2hIS1RIcGVreGhpQU9QSStTSnE2UzZIRjRJOVlXemtCSlRvNDZpVU16V3A4UGlyL1JpZHVMeEtZc1Nrc1Y4dkxsT1F2aEdYMllsUjBPQmhCakMrdS9nRWN2WTBBcEs3WWs0MU54alBTUW5XRkhURjY2VXJqZ2V2QjhDdTVhK2wydllTUlB0dVZEbzczaGhkTVNIblVYN3RUanNWWkd4QWwvV3B0aU9JRVExZ25MMjltWDYvdFIxdG1sa1lqOFc0WCtDU2pXY1VER1kxTnBTL0M3aFNLcWlNTE0vbDJRbVNXWjczRGR6K2dpbzhCQ0VOWVBRNDZxbmt6d1hVYnF2Qmt4alVRc1dmWkZnYnVvM3JBZit3TjdqT085MCt5bng0UGkzTCswbllMMVNjaERVZ0FQNGdQVi83SWQxcSsxSFNobXVHa0lxV1JQZ3l4TUZxUDhIZmpUbmpYd1k1YlFmYkpjdDZPSXpLZ01Ib3RGL0hlMWVnc2F4SFNxRzZ3ZmRtUTV4OE55VEZGcUJjcDJpU293SFIzeWs1KzM2aEY3dlhBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiXSwiZXh0ZW5zaW9ucyI6WyJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiI2ZDQ0YmE5YmY2ZWMyZTQ5YjkzMDBjOGZlOTIwY2I3MyIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOnRydWUsInVwIjp0cnVlfSwibWF4TXNnU2l6ZSI6MTIwMCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMV19fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMC0wNS0xMiIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiU2VjdXJpdHkgS2V5IGJ5IFl1YmljbyB3aXRoIE5GQyIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMTgwOTE4MDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjEuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4yIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIwLTA1LTEyIn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMC0wNS0xMiJ9LHsiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjRlMzAzOGY2YTRlYmZkNmNlYTJjZmUxNGU0NDhjNmY4ZjMwODUxNjciLCJiMzllNmE4ZjVlNGRhNzExNzEyMWIyYjE0ODFhYmIxZDE1ZjE1N2JiIiwiYjc2NjMyZTJjNzVlOTkyYzkwMjc3Zjk5YWZkMmMxMzk5NjhmM2QyZSJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyI0ZTMwMzhmNmE0ZWJmZDZjZWEyY2ZlMTRlNDQ4YzZmOGYzMDg1MTY3IiwiYjM5ZTZhOGY1ZTRkYTcxMTcxMjFiMmIxNDgxYWJiMWQxNWYxNTdiYiIsImI3NjYzMmUyYzc1ZTk5MmM5MDI3N2Y5OWFmZDJjMTM5OTY4ZjNkMmUiXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkdlbWFsdG8gTXVsdGlBcHAgRklETyBBdXRoZW50aWNhdG9yIn0sImRlc2NyaXB0aW9uIjoiR2VtYWx0byBNdWx0aUFwcCBGSURPIEF1dGhlbnRpY2F0b3IiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCIsInJlbW90ZV9oYW5kbGUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlFQ1RDQ0F2R2dBd0lCQWdJTVIzTUVDK1V0TW5IU0ZTeXRNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1Hb3hDekFKQmdOVkJBWVRBa1pTTVE0d0RBWURWUVFIREFWVWIzVnljekVRTUE0R0ExVUVDZ3dIUjJWdFlXeDBiekU1TURjR0ExVUVBd3d3UjJWdFlXeDBieUJDZFhOcGJtVnpjeUJUYjJ4MWRHbHZibk1nUTJWeWRHbG1hV05oZEdVZ1FYVjBhRzl5YVhSNU1CNFhEVEU1TURVd01qRTBNelUxTTFvWERUSTVNRFV3TVRFME16WTFNMW93VGpFTE1Ba0dBMVVFQmhNQ1JsSXhFekFSQmdOVkJBb01Da2RsYldGc2RHOGdVMEV4RERBS0JnTlZCQXNNQTBSSlV6RWNNQm9HQTFVRUF3d1RkM2QzTG5Sb1lXeGxjMmR5YjNWd0xtTnZiVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFLMXEzTUlCMGVrR0JiS3daMEZXS01Gb20xZWhzQXlFTDFVZkdYZTE4WlR5aHlWZytWY2h5L2lIOW8zc3EwZlBDa3VEeTI5aUFQanlXV09RVGY3cWRTMUVUcThpUnBLTlN4eHBsSmtWR25Tekx6Syt4Q0R4NU00ZGFISkxwODhXMkpPOEhMMFdjaThKcm9ObTNVejdZUit6NFVVMGFwek9iZGQybFJ3RUUwbXAxVERGSjBqeFQreGFobHpaQWxkZjkyLy9zV2Rkb1lSclRvZGMvamRlZkVYOWJtZ3dITlR0M3pIQkpvUDg4eW9RMTJuVUtIZXMzTjIvcVF4M0hqQTIreVNGZm1kWUFxZXJEZWo1Mm9ydkExVi9RcGQ4N1BWOURCTkkwdDl0QjAxdCs2UGJ1UG9qZmVxU2xOQm0xa1RxS3lVOU9LbVZ3OEJ3UUVYUUttVCt0MHNDQXdFQUFhT0J5akNCeHpBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQU1CMEdBMVVkRGdRV0JCUXZNcTMwUWplSExPeldtRGk1M0tFT2c4NkdqREFmQmdOVkhTTUVHREFXZ0JSM1ZmV25MV1ZEVW9oU2xZcnpnMjN5WWFBMmJqQU9CZ05WSFE4QkFmOEVCQU1DQVFZd1lRWURWUjBmQkZvd1dEQldvRlNnVW9aUWFIUjBjRG92TDJOeWJDMWljR3RwTG1kbGJXRnNkRzh1WTI5dEwwTlNUQzlIWlcxaGJIUnZRblZ6YVc1bGMzTlRiMngxZEdsdmJuTkRaWEowYVdacFkyRjBaVUYxZEdodmNtbDBlUzVqY213d0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFIY2tJbFFvcE5pQkNENm1NU2lFZzA3dGFvWlpOVlBMS0FTdjU0WnFYb2Z4aElkb3FscXRzL1c1TllKNlQrL0Z3aG43bVNlYkNLbnd1VWhhcUJ5VmtWdDdraGVCSXcvRjZhUGFBZFU4WUljdUw4Ymt2R1B2dDVvUW1VOTlidVVWMXBUYnJFZWRVMVJZbFdMZTRFdG42TFNpRXlLS3BzRG9CUUJIV3NKRWpnVnFIS0ZlUmtRL1dnRm1HYzErd3hSeUtBR0ZvdGhydHJhdzFyZXJLM3ArQk55MEdSdGZNTjd0T25UbjJnaU92dE90ZWJNQkNZenllUmwvOVhBTGZVQzhNdytPb3h2YzUxT0U3bGhlMnlqdU8zeEYzU2pFMGF4K2NXQWpHUUhodUl1VmRmWDhDVnUvUjVTRzUyekE5T280eXVnK2NqS2llQUFFdTJPUEgraW1JeU09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQVBRQUFBQWVDQUlBQUFDVWtxUk5BQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFBN0RBY2R2cUdRQUFBQVlkRVZZZEZOdlpuUjNZWEpsQUhCaGFXNTBMbTVsZENBMExqRXVOdjFPQ2VnQUFBeWpTVVJCVkhoZTdWejNXMVJYR3A1OTlvZnNEL3Z6L2czQVZJb3RsbWgwZFJXeHBwbDFsU3BxSXAyaG8wYXhKWWFzUTdQRm1HaVNUVFNKSUUwRVJTV3VqaFVyYlJpVU1vT1V3Q0Rpd09pKzk5NERjK2RPdlRPWXdleTh6L3Y0Z1BlYzd6dmx2ZC81emozM0luanBnUWQvVUhERlBURHdyTGxacTJyU2dEZXVOeDMvNW56VXh3ZEQxeXBDMSs1em1JcndFTVVYbnhlZXE2cHRiR2huVEQxNTBrY2NXRWQvL3lCS050UzNseFpmbDhjZm9lMFU1T2VXa3N0OGtKNTZQQ3c0TDJTTll2dlcvOVJjZktCU2FadWJOWHI5TUxuc0F0UVlIQlVaSHhPcXRFMU5IYVNRQytqcmUycG1Yd3VuSXlNR1VtSmMwZE9qWTd3OGZOQmFjdnBhZXVveFBuT3RDRjJ6YjJmV2llcnpkeHNiT2xRcXlzN1RwMFBFTkIvMDlnNHd6WURrOG5KTFE0TnA0MXgzSENxMlpIeFhjZVoyUTMwYlJreXQ3bnp4NGdVeE53cWp1Q0hyNDk5VXIxNlZMUlZHaTcyaVJGNmJSRjVSWXU4WWlVKzgxQ2VCSitNbDNyRmk3MmpHQ1A2ZFAzZno5azkrMUdwK0k4NHNJUzc2c01RbmpuWWF6VGoxazZSdlhKOVBMdlBCM05tWnZ1SVVXSUJCOUVYc0hTVVR4Mzk1NkN5NTdDeUtpNVFCVXZsb3Ywd0lGeEpoSEdJQktlb3N2ajFXamI0emd6WnFPWHF5WDBKWFZ6OHBNVTZBRWc0ZE9MTWtjQWZ0QmU2WVlZOWpUYUpEcEVhWUhoQ01nTmhyMDVwLy92dDBvZEpnNE9yTUlxQ0hYRVZKOXQ3Q1pVRTdhTWt4ellqbHVMQkd0bXRmY1V6TXBpL1BWOTBocG1rWXhhM1I5TDQxSTAwbVlpWVBEU1hPbUNIbVQ3cWhZL1NPazRtU2I5MXNKczRzWVVsZ2xsU1lPT3FYTW9KZjQySU9rOHQ4QUZQMGZXSnNpVXlVSkk4N1FpNDdoZWREK3BYTGRrcUZDU2I5R2lYK0U4TzllR0dXVHZlTVZIQUtpQzl3SWZhaTRndERpVTlNZ0RUdVZZaDc1clJrYXJwWlhSZ2RNYjRrMWFrZ0lrcGU4MkgyOExEOWRRWnIrN3pabjhpRWNoQ2hjTXdJejJhTXVZNzJFNmVsSkI0bDFta1l4ZDNaK1J1dENiamgxQjhYd24zTW5kb1c0c3dTM2wyeGh3NWF4bHJqSkc1aUtpUGxHTG5zRlBibmwwdUZKczB6Sjd4OHV1Y25Vc0VwL0o2Uk8zREJKNXhSY3Awd3VER3l3SzY0Qy9KS01WYmpLellFbDIyYnZ5Y09hQmpGcmRYMkxwaTdCYmN5Mm1lRDBDakhLRWd0eW1ZbFRSbVB6dHkrcFNiT0xHRWlpeHQzL3J3NW1YU0FNZHJFVUhCR0E3OU9EWkNyMVZwU2pUL2NMbTRJampWcnZJa1ZNaXhZWVZ2Y2QyclZrMlFKU0Q5WWZ1M3F4ejU5UlNtY0tUYUt1N3U3ZitQNmdxV0JPNE1XYmJmQnViTXpXRzBpTGNQb2M0cVpNUXZwWFgxZEczRm1DUk5XM05CQmZrNkpWQ2huRzRTT3AwMlN6NW1WemhZaUtCTW1ZanZyOU9iVnZlTEdkbXZSL0sxbWM4ZURTd04zYmQzOC9jaUlyWnk3cFBnNlVoR1dYeVF6TVJ3N1RuQlo0QjVNRS9GQnd5aHVCMUZaY1p0SnlzY2FoeHh4d3pwbnRuMGNURmh4ZDNmcnB2Z2owaGlETkVaZ2treU9MY1NGNm52WVBZLzlQM1dKSkdDMjFpZ2JjS080MGV3M0p5YzU4bHpMUlpTWDNhUzNMc1F2MXNQNWIyOStGWStEZUl2N1hHV3R1YmlSWnBITExtRENpbnZQenBQc3lhQ3R4VWRHNU9IUzBKRCsvWGMrUTdiSHZvcGVmTFJoUDFPWEw5d3ViaXpncE1RcmcwVnhHOUNnOFlZbmN0dEJzMG83ZTBZbU8yeWo3MzZTQktXeWtTbUFxYUo5bWNoeGlsL0sxU3YxVEFGZWNMdTRzYnNnSlY0WkxJcDdlSGlFWEI0L2VNUnRCMXN5dmtOZGtkZkhZNmFRTHliR2YwVXV2M3lKOVByOWxXZzUxOTNHeUh3bkpzeTk0cDQrSmJtL2Y1Q1VlR1V3Ri9lQ3Vadkp0WEhGQkJlM1BGbHU4dVRTUVN4ZnNuTmN4SDN2N2lOZk1Ua3BZSWlmWmNLNEsvK3RJeVZvRkJVcS9jUko3REhCejhqRnNYTWlKUnlHZThVOXhUL3htcktCT1N5MHl4WjFwNE9ITlJ5WWlUdm03Vm5wOVhWdEhQdU9VcVY5L3R6eTluMUNpMXZzSGJ0MGNWYXVvb1F2Wjc2WndsWWs2SVM0c2NWQjlPWGswL2cxTEVSQlNvd0NtZmVLcGJpZFRCb1AzYXhZdW92dmNiUWJ4YzJMdUJObXowZ2JISHhPelBGQldTbkVqY1dRYTlNcFVzYzM2OE1MZmpweG1WaG5ZVUtMRzhrQUJwRTV4T0pGc1RjN2lGSjBRdHlYTHR5SGQ0N09wZ2FrS0s4MmtCSXNsSlhjNE53R0lJTDMwU05WcElSamNMdTRxVk4wQnlqeGlaMzFab3B6NGo1VGJoSzVpVi82ck5FSllxeGdEWXQ4UVI3M05hUUpMdTV4STE5eDYvVWovL29nbXh1MmhRa2ZyYmY4WEFqVHZIcFZ0b1R6Mk1RN0ZtdElmeitQQS9uL2g4amQzZDBmdEdpNzNlTmVYa1I3d0pxYUI4UUhEWSs0TFlNNmFCQ1pudG9nVG5qSFhMMWlJV3d6K1Bua1pZNHVRUXhPWHE3SnlZSnR2RWJpZm10NnFuUGlCcjQ2VWlXamp0L2phUzF4alR0SFRIRnE4amZFQVExUFdtSUJDTnZ2ck5qTm1YaFlDQTlXR0ppenR4Y3ZIdWowWlkvN3puWU1QT3duRTR4dHpmS2dIUkp2azFyWU5zeVpsZG5XMXMyVXNRdTNpeHZlSmNJRXU1U0prdndrc2M2OTRNcmcrTEhxSllGWjZCbzFaU0x1RERwQytnRGYrQlFMRTVRaS81cFlwekdoeFkzRURodksvTnhTdnB3NXphVU41Y2tmZitVcXpDdmFYNXA0NlNLMTZqMGJObnlnN1BoVDJTTkJxVnBRMXZMbm9vWmdaWHZyb0I2WGlrNWR0WkI1Q3hQMzdITDBiU3EzaWp2S1h4cjNSWGJod1FObjdISi9RUm5VNmZyRDZXdkt4dndjVEZrWlp3WWQ0WHZVRTFqakN5b1k1N1RYS0hLNzVWRWdvdEhLWmJzNUdTRzJoaEZoT2JqYW96ZXN2TmtwcVBsTlVOb3NLRkZSaE1TdlBKMVhUWjIzRHczcFY3MzNHUWFFWFZmaUV6TjlTb3BhM1VtYnR3TTNpaHVMNVBRcFNjK2ZVM2ZwYTRHZE8wNndYL2g1N2NUdGhrT2N3d2NyVUpoZEY1MlZDbU9aRThjVGJUckJyLzJDNGliQjZVWWpTOVZ2VkhhY2FxUDA5K01QTlZRdlRQTWlHSXlOT2tTYnR3UDNpdnYzT2FFY0wyekpaTTdYU1B2eHMwZmN0dERWcFpzek00M3puakhxaGdVclJ1Z2xlTUY1dGVCc3U0bXl3YUlHS0g1YlF5OEtQQjBjQ2xxNG5lTWRJeWIxaWJseTJlVG94eUk4NG5ZY0huRWJUZGtWdDhId0ludHZJU2RwcGgvcnhsWlZVdDh2UVJCZTVZMkNzMjFjY1lPWGVuYzNVdUlHZmpweDJWL0NPYkNrUmlrc09HZHcwTTRPekpxNGRRTXVmZUJqRG12aTducjFMMDZORjdadTlvaDcxSlJkY2JlMFBQR1h4V09PVFNyNnhLOEx6NFVVR0tUV2FnWFYzVnhsZ3hkN2R0ZjNNR1ZHUmd6TGc3Z0hscUJNbUZoVmVac3BZdzBXeFIwZ2kwZFMxRkRmWGwvWHhvdjM3ejN1NjN0S1RKdkNFN2t0NEE4c2JneU4xSWViYlFmSWttb3VHWThHYW5YNnY1N1RVSmtKVXBFeFpaL1QvcTJzK1hHZk1iaU9Qdk5tbTZJTzVOOWR2c3Y4STIwMnpNVU5ZdldZTmtrK1kyb3lObnk4T0dOcVJuR1JrcGcyaGJtNFFha3dldUg4cllzWGJuT2FRWXV5M2wreHA5dG1FblhwNHYwbGdic1gvMk9iaTV3MkdidEp0ZzdsU1FuR0Y5b0FqN2dKN3QxOU5IMXFPamRzQ3hQV3J2N0NZUG9lL2NuVy9qY3FXcWx0NVRtdDRMeFdjS0g3TCtVdGVZMG1UN0lIZE0vb05uRDBIU1VUSlJTZHVrb0tXWUpGY1lOb21CT1VpWkpQL0ZCRFRKdkNvcmhCRno4enc0akpoTkZhRGNuUUxLS2srTHF2T0lWVDBRblNPaHhyT2ZVTitPZWYva0o4MFBDSW13S2lLVzU2K3JtUzhWQUFmY1JNbDVmZElJVllLTmJvUXVwMDg4NnI1MVczUk56UUtOc3RmTDN5L2JjWHpHV0toUDdEOS9ZT1dFK2dyWW5iT2FMWFdFT0lhVk5ZRTdlTGhEYW0raWQyYW0zbE5weTNBbDBubkVMWnExZDl6c25CZUl2NzdKbGJDQWtpTDBiZkZER0NrZUhVWnlrdVlzWFNYWFNmMmJmTmVJa2J0N1U4TGNra0lXT2o3bUdyeUR1YTd0ZFlGY3A3V0xEQ3hsdWR3MFA2a1NHclQ0V0hodlJMQXJkekRpeEJ0Q1F2eCtwZkdqcDZwSksreDVnL0hlTzB4TWtiUlpoeUc1SDc3M015TWVEMGFhNHJ2aGpTcnpIUkwxVDVDbU0wSGJZaWQybkpEVFJzckpGbXB1eVNWSVNtcVlWQ2xEelpMMm5UeG9POXZRUEV3U2g0aTd1aS9CWTZRSzk2VUFORnpOYTZzRnh5MlFYUUIwN1VmZzdoamFHZkpIMURwRE8zemRnZjVVSG44Uzg5Q29tWmFkK1N5Nll3R0F5YlBqcEFUelByejhFSTVkaEtWbFhXa2tKTzRkVFBWM3hGS1V3YmFKc0p6S0kvZDNaR2V6dlpmWElBanpPbXBkS3hnMHBGTUNERzZnNVRRajRzcDc0WXFqeHJkUXNidW5ZZmZZSk5sVVFWamhGSFNVWjQ3T0ZwMUpvUHMzVTJ2M2k0L092REFCbjJOcFNzeVpqejZlTm9ETUoyS0Q0cDRXaEJYc1gxYTAzRXRDbDRpN3Vqby9kMDBiWGkwMFlXRlNvdHZnWEtGMjF0M2FvbXpWZUhLOE9EYzhPQ2N4QTExNFh0enpkN2o5RVJaS1FlandqTmg0WHdrTnpJaUh3a2VjM05uVjFQTE85eWtKTzBQdTU2K0xCdGYzNDU3WmR5amVycDlqYWdkdEhUTTVBcy96b2lOQThHbWNicy9mU1gyemVibXhvMTF2NTJEeGFLOXZidVpwVzJ2cTRkUVhkRFpENXFNZFVkSTlWNHhiN2l1M2Nmd1VpTHVsT3Z0M3BDM3RPalF4bncxazFWUVY3cFdIVmVEQS9KV1JlV2QraEF4ZDA3TGJRMWpXMWxBOFBESXkwdG5Tajg0SDRyS2thRTVNQUl4NnhGaGdkVEpZOThXWG1IOXZYNFVSZXhhQVc4eGUyQkI2OEhYcjc4SHlocjFDMWJtSjc4QUFBQUFFbEZUa1N1UW1DQyJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDE5LTA3LTE2IiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJVbml2ZXJzYWwgU2Vjb25kIEZhY3RvciAoVTJGKSIsImNlcnRpZmljYXRlTnVtYmVyIjoiVTJGMTEwMDIwMTgwNTIzMDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjAuMSJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMTktMDctMTYifSx7ImFhZ3VpZCI6IjY4MzJkMjA1LTc1ZjItNDRjNy1hODY0LWU4NjhjNzk2ZDA2ZSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiNjgzMmQyMDUtNzVmMi00NGM3LWE4NjQtZTg2OGM3OTZkMDZlIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlByZWNpc2lvbiBJbm5hSVQgS2V5IEZJRE8gMiBMZXZlbCAyIGNlcnRpZmllZCJ9LCJkZXNjcmlwdGlvbiI6IlByZWNpc2lvbiBJbm5hSVQgS2V5IEZJRE8gMiBMZXZlbCAyIGNlcnRpZmllZCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MTAsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6MCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjAsImJsb2NrU2xvd2Rvd24iOjB9fV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlFUnpDQ0F5K2dBd0lCQWdJVGR3QUFBQ1FvaE5PUlBiMDBSZ0FBQUFBQUpEQU5CZ2txaGtpRzl3MEJBUXNGQURCSE1STXdFUVlLQ1pJbWlaUHlMR1FCR1JZRFkyOXRNUmt3RndZS0NaSW1pWlB5TEdRQkdSWUpVSEpsWTJsemFXOXVNUlV3RXdZRFZRUURFd3hRY21WamFYTnBiMjR0UTBFd0hoY05Nak13TXpBNU1EY3lNekE0V2hjTk16TXdNekE1TURjek16QTRXakNCc1RFTE1Ba0dBMVVFQmhNQ1NVNHhFekFSQmdOVkJBZ1RDbFJoYldsc0lFNWhaSFV4RURBT0JnTlZCQWNUQjBOb1pXNXVZV2t4S2pBb0JnTlZCQW9USVZCeVpXTnBjMmx2YmlCQ2FXOXRaWFJ5YVdNZ1NXNWthV0VnVUZaVUlFeFVSREVTTUJBR0ExVUVDeE1KUW1sdmJXVjBjbWxqTVJJd0VBWURWUVFERXdsd2NtVmphWE5wYjI0eEp6QWxCZ2txaGtpRzl3MEJDUUVXR0dSbGRtOXdjMEJ3Y21WamFYTnBiMjVwZEM1amJ5NXBiakNCbnpBTkJna3Foa2lHOXcwQkFRRUZBQU9CalFBd2dZa0NnWUVBa0s2VWtSZU95bVA2dThyWmNuMXZHbFBFekp6ZHUwN2dTMHNOd29nemRxOHpwQVJxVmhEc3d2UnU4STJxVXRsR0JNZW94Q3pZMWNMTWJ6QURKYzhMdWR0eW9tNnRGTXRIMWkrOXRuckNqWlM5ai9KYnE4SXBmNUtMVW9MOFVQZERFK0xRWGZ1cVlxcGtTYnB1NHRFSENtYTVtd3RyRkk0aFI5VWl1YU9aWTZjQ0F3RUFBYU9DQVVNd2dnRS9NQjBHQTFVZERnUVdCQlRFcFNQSSsvUHZueFl5bkF6Vno4cW9jdk5BVWpBZkJnTlZIU01FR0RBV2dCVDlxNDhOM0M2Y0ZNNFdkcGJUN2IvbkwzUWpvREJRQmdOVkhSOEVTVEJITUVXZ1E2QkJoajltYVd4bE9pOHZMeTlDZFdsc1pGTnlkaTVRUjFOUFRGVlVTVTlPVXk1TVQwTkJUQzlEWlhKMFJXNXliMnhzTDFCeVpXTnBjMmx2YmkxRFFTNWpjbXd3ZGdZSUt3WUJCUVVIQVFFRWFqQm9NR1lHQ0NzR0FRVUZCekFDaGxwbWFXeGxPaTh2THk5Q2RXbHNaRk55ZGk1UVIxTlBURlZVU1U5T1V5NU1UME5CVEM5RFpYSjBSVzV5YjJ4c0wwSjFhV3hrVTNKMkxsQkhVMDlNVlZSSlQwNVRMa3hQUTBGTVgxQnlaV05wYzJsdmJpMURRUzVqY25Rd0pRWUpLd1lCQkFHQ054UUNCQmdlRmdCREFHOEFaQUJsQUZNQWFRQm5BRzRBYVFCdUFHY3dEQVlEVlIwVEFRSC9CQUl3QURBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQWxjSXFqc2E0T1NqcUJJdTNqKzAxbnM0clBWcEVOcVIrMCsvTDFrem4zenZhaVg1WWpuSXdtUE1FdGZNOGxXQldKMXk4TXhxNmEzempQejAxR0E1Q3M1QUJoQzR0ckdhMmVtaE5nYWh3Zk85MXo4OTFMY2Q4TVZJYnl1MFA0Q0JweTFqREVtZU9mZ2czMzNhVXBwb2tyc3VRMDFPRUZHb203VFdnL0R3bkJaam9DdzBvbm5JcjJ2MHpsRFUwSndKRDIyYWhweGJKdHdnaG82bEVVT20ra2Q2OStFb092eUl6dlF2bWpXczNyTXZobnQ1ZE53N0tZbVV6eUdXRWFCSGxDcU9pNldzRyszTlRWbTM4Y0FRTlZiZjByRjFPaUROYTNHWHdQNW1pSEJlSWtXaW41b0R5OTlBeGgyeUp6YkVXMXhFYnVhY281OXgrNFlZTDZqSC9TUT09IiwiTUlJRGd6Q0NBbXVnQXdJQkFnSVFhWWpueE91azQ3QkdjK0VpaDI3Ym1qQU5CZ2txaGtpRzl3MEJBUXNGQURCSE1STXdFUVlLQ1pJbWlaUHlMR1FCR1JZRFkyOXRNUmt3RndZS0NaSW1pWlB5TEdRQkdSWUpVSEpsWTJsemFXOXVNUlV3RXdZRFZRUURFd3hRY21WamFYTnBiMjR0UTBFd0lCY05NVGt3T0RFek1USXpNRFUzV2hnUE1qRXhPVEE0TVRNeE1qUXdOVGRhTUVjeEV6QVJCZ29Ka2lhSmsvSXNaQUVaRmdOamIyMHhHVEFYQmdvSmtpYUprL0lzWkFFWkZnbFFjbVZqYVhOcGIyNHhGVEFUQmdOVkJBTVRERkJ5WldOcGMybHZiaTFEUVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBT3M1YXZSeGJ0Uk56YlFEcHZXZ0NNRkNXRVJBRjdKUzliVW0xSEpNemJnMVAzOVVUSnQ0TXJVR3phMTQzT1crVDJDdExhNll3dU9zdkVmb1ZBUm5DZjVRSHV1U3NDMlNTMWduZzEyR0NPYkdCYXNJQkhDMjFSOUhWc0kwVzR1eGY1a2NHTmg4WXlTdHBseFhQY0t4aWcydHJNRDFVNGl6bTRMZU51RlNxY1hmMXhrL2pySW9nZ252TUlWVVlLMFdNM3BSOTFsZWJuaWhzWG5SOEd0V2pBRmRwUUhBT1VZOTRSak45cThueEd1TXVOY2YrMkVaMFZMZVYzdEczaVFaeEp5bDN4OWRaQ3dLNzBXWGozR3RLZHBSL0ZTdWNyaURSTHFiVUZXdU1nS0FYaWZrNG9ranprNWZkNU9GbmV6UGlsN2gwalkzcStIS0tsSGpNOWI0N3dVQ0F3RUFBYU5wTUdjd0V3WUpLd1lCQkFHQ054UUNCQVllQkFCREFFRXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0hRWURWUjBPQkJZRUZQMnJqdzNjTHB3VXpoWjJsdFB0ditjdmRDT2dNQkFHQ1NzR0FRUUJnamNWQVFRREFnRUFNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUNWdVhuZWc1MjZCY1BRakJhdlg5UDYwZzBKSUpLYUowQ1JvUFVHODNJbE01cWx5S1FPcm1HNGZwL1BIbmhQRC9tQTdPNGNYTFZ1eERCKzJXK2duaExEaVZFSnBjanlwQjFHWGlWNWhxZmMwWHBtSFQ0OENhOURpdG4xRWVWZUIxdDhyV0NLMThYbzZ4NXhYTVQ5b1RVRHBQNDEwblZDMndmVlEyMUlYQTZia3pnUU1pSzdCQ0pnZ1dKOEhva2dQaG1QYjRSL3BQTndMdUNsdlJ4cHBuMjBaY0pxcFlRSGVJMDJyMExLaHdjZStrWnBqSkQraFVueXJvMjYyUktyT2Y5KzN5OHpyRllDMTBjYnNMVW1VSnM1cEp4eWdqNGZWR2JrQjlqdnNHMXhUdTYya284cVVYNW1YSk50ejNkUlBDRWNHeDR5MnJvbTZ1c2hBUHRxcjFJayJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFnVUFBQURUQ0FZQUFBQVJaR0FXQUFBQUNYQklXWE1BQUJjUkFBQVhFUUhLSnZNL0FBQWdBRWxFUVZSNG5PMmQvWFhiT05hSG1mZnMvOUpVWUUwRjFsWmdUUVZSS3JCU1FaUUtvbFFRdTRMSUZZeGNRZVFLSWxjUXVZS1ZLdEI3eExrNGc4RUFJQUNDRkVVK3p6bmM3TWdTUDBBUytPSGlmcnc3blU0RkFBQUF3UDhOdmdVQUFBQ2dCRkVBQUFBQUpZZ0NBQUFBS0VFVUFBQUFRQW1pQUFBQUFFb1FCUUFBQUZDQ0tBQUFBSUFTUkFFQUFBQ1VJQW9BQUFDZ0JGRUFBQUFBSllnQ0FBQUFLRUVVQUFBQVFBbWlBQUFBQUVvUUJRQUFBRkNDS0FBQUFJQVNSQUVBQUFDVUlBb0FBQUNnQkZFQUFBQUFKWWdDQUFBQUtFRVVBQUFBUUFtaUFBQUFBRW9RQlFBQUFGQ0NLQUFBQUlBU1JBRUFBQUNVSUFvQUFBQ2dCRkVBQUFBQUpZZ0NBQUFBS0VFVUFBQUFRQW1pQUFBQUFFb1FCUUFBQUZDQ0tBQUFBSUFTUkFFQUFBQ1VJQW9BQUFDZ0JGRUFBQUFBSllnQ0FBQUFLRUVVQUFBQVFBbWlBQUFBQUVvUUJRQUFBRkNDS09nZWs2RTNBQUFBWEFaRVFiZVlGa1d4SzRwaVhSVEZlT2lOQVFBQTdmTHVkRHJSNU4zZ0xBaTJSVkdNNUd4ZWk2S1lGVVZ4R0hyREFBQkFPMkFwNkFhbUlEaHpLNTloTVFBQWdGWkFGRnllUlZFVVB3MUJvRkRDWURyQWRnRUFnSlpCRkZ5V1ZWRVUzNDB6ZUpLbEE0VVNCdk1CdFFzQUFGd0FSTUZsR010QS84VTQrbWV4SEp4OUNaNjF6ODlXaEQ5RlJBQUFBRFFDam9idGN4N3dOOFp5d2JFb2lxVkVIZWljLy92ZStPeEZoTU8rcCswREFBQVhBa3RCZTV5dEF3OUZVZnd3Qk1HYkNBVlRFQlF5K0g4MFBydVRzTVZGSHhvRkFBQzZBNWFDZGxDRC9vMXh0R2NaM0t2Q0RxZGlYVEIvajlVQUFBQ3lnYVdnV1NiaU8vRERHTkNQNGo4d0Q4eERzQk5oOEdSOGZyWWEvQkpmQTBJWEFRQ2dGbGdLbW1FaUE3WHBEMUJrbU4zUFpSbkN0Qm9jNWZNSEVoNEJBRUFLaUlLOCtNU0F5NWt3aGJFYzU1UGpPSWdEQUFDSUJsR1FoNFZzZDQ2OVBjb2dIakpJTDJTNVlCZnczWW1JRE5keG4rVHYyeVl2SGdBQStnR2lJSjI1dHRteUVSWXlLSzhpbGdyT2xvUnZNdHVmQlFxRFFyNjc4b2lETjNGVVhFZnNFd0FBQmdhaUlKeUpETDV6K2RjbEJJNHlBTWVJZ2NLUmsrQmo1SExEVElURmU4OTNsRURZeXNZU0F3QUFsQ0FLN0V3MEVUQ1Z6WFRzTTNtVkFYd2RPZENPWlpCMnpmSy9KbVF5bklnNFdIakVpK0pWVzY1UUcwSUJBR0NBOUYwVWpEM0ZoUFMvcWY4L2xsb0RvZFExeTd2eUQ1aThSSVF2bW9Rc2M3aU9XUmorQ0M3ZmhBUExFZ0FBMTAvZlJjRk1jZ1RrNUVVR3gwM05nWEJscVgzZzR5Z3ovMDJOWTZxbGoxbWsrS25pUmZiWkZNcHlVeUJBQUlJd0owUTRHME1RLzZHWnZMeHBKdlZ0cGhkcktwYUYyRUZaRlVVS3pZSm9ZNk9KaXJHMlBLTCtqYkVrdE1GQ2xrSE10a3IxMndEb096Ni9vbWNKVlVZZ2dKTWhXd3FPeG94VHZTaHFUVDMzaTZOcUg5aHlHTVJ5bEFIeG9ZRnpuR296YzNPMjRmSjd5RzBwcVBLejBJbDF4Z1RvS3crTzNDVW1Ud20xVTlRUzVLU2pFNGlqTm5sYk0xbElaMmlpNE4wRnptRXN5bjNad0l2MEp1TGdFb09pdnZ5UlV4U29zdEl4bHBRVVoweUFQbUdMWHZJUitzNm1Xall2elpQMHVUaE5SMEx0ZythWWFJcjFTMFBLK3V5ZytGMk9zZXhKL1lOTlFnZjBwV0dmQm9BdTQ4cWk2dU11UUVoUEV3UjZWN2lYYzZjbVRDU0lncnlNeFN5M2xVSkY5eTJaMlc0azZkRmVoTWk4aFdNMnNTN3B5d3BaQlpZQ0dDS1RTSWRsbmFxSnhLYUR5d1F4M05JdnhJTW9xSS9LQ1hCK2dmNG5NL2ZVZ2UxRnR0ZkUzNDlFaVB3cFpqTWxFSnBXeTZuWGExSkh6TnhwRVFvQVE2SE9PelB5L0g0UkVDcDlEWHlpWDRpRDZJTTRwaGF2L1ZBbC9TSXorYjNGcWJFS1BZL0NWSFAyOFpuMWxFQlFac1ZyU0ZMa3k4UVl3Z3luUXhnWWRhMkNybmNtMWhHeHk4d2JjTXJ1TFlpQ3Z6SE5UTHJuL1NSQk5UOXJZWXgxNCtyMWFBZ3pUOEZNMjN3ejlsdlp6TFhIVjAwY21Fc0MreFlIV1ZlU3FSaVlFY0RRcVB2ZXVONlpYTmEvTG9Bb2lJRG9nNytwMnhCSExROUFuUVJEZFJocjlSbHloRDc2UEpSelIzYmtTRFRWZEJJbGdLNlJvd08zdmJ0OUdoamVtRENFZzA5QmZWNGtWbjZjSWVOZ1hRNXkvUE41L0NibmxlcWZBQURRQjRoQWlJRGxnM1JpeXlJcmRMK0V3a2poYTJPdkhXTnIvTGVQZzFhZ2FTWkNJWWYxQUFENnoxdFBIQTBMMHFMSGdTaUlKMFlNak1XVVA2MVJiMEJmMjlORGoxNk05TXMrcDBIMW5WVmlURE1BREl0dGovb0pSRUVFTEIrRWMzWWMvRjFtM0Q1Qk1KV0JkNmVGS0g1cUlBSEluZXozVHpuT1RrSWpxNndPNS9QL1E2dUNDQUJnMHBmNC9pTk9obkVnQ3FwNWswRjA3aEVES3BYeGVXRCtLVFA2dHJPQTNVb0NvMTl5SGd2UFd0cFdMQmNmNWFVQkFORFpTLzl3N1N5cGd4QUhvc0RQbzVicTA0YWV5dmhiaDlLQjNtcnBqMWNlY2JDV2EzaHUrZndBb1B1c3IzemlRTEcwQkJBRmRzNHZ3UWRQUVEwbEJ0cE1aWnpDU0t3V1BuRndFQ3ZJWjZ3R0FHQ3dsb25SMHhYMUQrZHovUytDSUEwY0RmL05xMmVwb01tS2gwMml4TUhTVTNKWjFWbmY5TWpyR0FEcXM5Y3lIT29aVmF2SWtTcjVKYkRPeXRiNEZ4SVpraWdJY2F6emxkdFU2VURyUE9SSExjT2hTak5jbFc1WVQyODhEVWh2N0dNa3l4d0wyVXl2M04yVlYwYnJNaW9FdFl2cHBYT2lad0s5MWc3YU4vQWR0S2lmSWFMNnJwQjhMTE1Nb21CTFVhTjJ3Vkx3TjArT2ZOOWplU2cvSmU3M1dadUJwemk4cUlGYjc0VEdXbXJqZWNLTGR5c09rVjh0TDl4QnE2RStwQ3hnWTJNUUNNMEhZVEtWZTZMcVkvZ3NTaTlHSjl1V1dMamt0WWFFMExhTkNoMmVSOVl6ZWRZc2JLSHRwU0tFVktpeHFrbnlRT2djZElKem11TWViN1BUMzJ3VHJuTjZPcDEycDNqT3YxbWNUcWR4UzIxN1BzLzE2WFE2Skp6cjFuT2VDODh4WjhaKzZsNkR1YjhVVXU3eCtiZ2J4N0hPOTNFZXVKOXpXKzFybnY4bTRuaXBiZXk2MXEzOHZXb2Y1MmRsbWVsYVE0N1h4bnRUbDYzc3kzZXNoNEJqUENUMEdUbG9xbjIzR2M1dGRlRm5aSEFiam9adTVnbG1kT1hnb21iYWJjMkdWQWppUkdiL2J4Ry92Wk5ab3MxVTJuZEhuWlhVVzNCVlo3eVZQQkMrZGxCNUs3NW5NSlcrbCtQdEc2amg4RkJ4clhmeWQxOU10MXB5K3BicFduOW80YkZ0TXBIai9zeVVvT2RPOXVVeWM2OERMWTJmNUx4SXl3c1hZMGpMQnpGVnZ4YlN5WWNTbS9KWXBUWlduZUhVMFJHbzlXZXo1TEtMZzVhMWNCWGhFRG1TZlM4SDVMSDdFTEVrcEFZT2ZYbEpSYUEwVVUzdVJnYk1aemxtWFhHNWpoajhWSnNzdGMrbTBsNU5YS3NTSTQveXpEWXRwRmRHWnRDY2ZOR1c5TlIxeExSOUlVTDBvV2VsaStHS29Fcml2NGtSQksvU2VWWU4xaE90czRoWnMzUWRVL2tvVkIwM3hSOGlOTGIzbXFza3ptVkdIb3RxR3hYRjBVWUV5cHVjYitwNmM0NXIvWlo0N0ZoZUhRNndPWmpJTzlPR0E2MjZaNVBFdGk4a1lWcUlyMEpUVlJKenNNMGdKRzErVHlaVHpUbTBDUWJsWElvbytDY3hncURxWVZYT1M4c0dPeUpWcnJuS1NXa20zd2s5anhCaGNNMmlZSjlvL2o1S083ZGRhLzRvMTVVeVdBN3BXbDJvaUpvMnc0aFZUSC9xTVorbC82aGl5S0pnTFAxZlc4OW9YWUYrRmVCVDhEZWhndUJWL0FaY0QrcEVCbUMxenR6a3pHUWtwc21mOGdLNlRJNXEzZllwY0wvZmUyeStuTlpZRHg5ZFlKQXN0T1dka05od25aVElGUDJZbDd6V1hPdnFseEFFaFJ5dnpqSGI5ck80UnRvVUJJVzhTNzMzK1VBVS9NVWtVQkE4ZVdZeFl4RUR2OFJjMzNZbmRDZlhzSE4wS0FjWjZFUHptWDlQR0lTdWdaRFpWeGNaaWZVbXBrTzYxb0ZsbE1sVWV5bEJrSVBSd0VLQ1k1bGVVTFQyMnQ4RFVmQVhJUTZDang2bkwxVjBJeldYUVU1dXhReS9jWFFxYTdGMGhLUXM3V04xc1dzV09yZVJpVnlHZEswbWt5c1dCQXBFZ1p0TEN0NXJuVmdFZ1NnSTQ2UGhqYTFRSGMrM0RuWSs3N1ZRUlJObFRSaGlyWU5yTi8xOWloZ3NydjFhcTBxQis5aGN1U0FBUDRSdE5nUVpEYXR4T2QzTjVmUFVqa2RsTXR0N1V0OU90SFNyS1d2aEkxa0dtRm5TTnl0aGtEcWIwanZyMTRUZlg0bytMSW1zQWsyWTE1NnFXcGxxWXkwR01VNjEwRC9lUkJUVzhha1pMSDBYQmViYS96VFNjL1N6UXhERTVqRlFQTXZEbXByU2RpSVAraUt5MDd1WGE1OWxGQWE2S0xpbVhQNTltRDMyMm54cEVDc0twaDFaeG9QTGNKUm40S0NGRGplVmw2S1g5SDM1d0J5c1lreE9UNDQxOVhXa0lEaEtXTTF2bW5VaGRSRGR5em1kSC9yZkk2SUpDaEVSTmc5MmwyTWlkSmRSVDUxQWJkeEVMaUgwMFE4R3dqa1kvZXRLY2o3RVpIa2ROUGdVMkhseG1HZGpzcE1wTVRCcEtGT2JLbWNhSXc2VU1EQTcyWjBqS29FQ0xkMWxTRUl1OUZwbkYvSkloKzV3WS9IL1VwT2haKzVUTlVNVEJUNUxnU3F0ZkhTWVoxY1JndUE1UWd4TXRUVi9QVVh4UWo2dnNtNG9jZkRmd0xYOWtTeGZtUHRkVzE2YXFwTE9Dc1REWDhMc2c0aTBkL0x2Qi9tOENZZk9TMW9LMnI3V1VFc0JKWGFoRU1kdjAySjBrSDc5dzBBZHJJTVpncVBoaXpaN21BYlVBYmVGSFM0QzE2V09BZlVESmxxNjQ5Q1V4MjlheVZtWFA4Sk95MUZmdGFicVdrcFFLV1pEbkhOMFVYRk5QZ1c1ZVpYN2FZYTFxbm9WbXd6bHQyMWNJbHp0UlNzQXBXTmU2ME9tUWtPS0VFdEJFM0hyUjgwSFNDLzNQTk5LTGVQSTFrMCt5WDB5MDJadnRIN1NOK0Vhck1XSjVZTi84bXdSRGRQQWRVcVZudFVsQ0dheTcxK2laTjlIT0wzZFNDZjdYVHJmdFdkUVdBWW1LTHExbk92QldEWkpxYkUvSko3aythaHFwNE4yWDNMTlV0b1dCU3B4VjhpMXhpVEp5b1V0WkxnT2F1bHZZUkhpV3kxYzhtdkwxd25oM0RxcVYrNk5pWmx0KzIyb2ZnaERFQVg2eSt3enVXNHNmZ1Rqd0hqblYra2diR1owbFZYTlY3WTJCcFhhK0pjbncxMW9ncUo3eTFMSlZsdEc4QTBBdXBJZTR2TEJVMEptczNYR3dhdk5HV3JxdGVZU0JpR3p0bHdSR1VkeFRBdjFBMXBGSkFPRHkvQWxvWTg2REtoaTdEOFlnaWpRSHdhZnVlakIwZ21zQWpyZlYwdW9uLzc3bncyYW91NDExV3NTR2xWZ0V4YXhBOWZRbGcrT05RYjNkV1RVeUtWNXEzbXRMd0hmcTB2ZHlxT0tveGFpRzhPUWs0RmRBNitKcVlrSG1WRnlDRDRGK29BVmM1TkQ0cDJQRGgrRXNYUXNiU1JRR1VsNVZ0dHNUa1VWK0VJb1I1YjY3WHZabjZ0ek5NWEcwSllaYkFJeTl2YzUxdHduTGJSOTNjaVpWWWJxbDFYa3NoTFVLZHVzc29lbWxrcUdabmgwUE1QekNzdnhKTE5mek5Vd0JGR2d2K1F4SnRjUVB3SmJHYzJwekpEYXpxaW1IbUF6YytFNlFPRGNXOG92eHlqcm9ZbUN1bWJGbmN6QTZ5NEJ0Q0VLcWh4enE5aUtlRzR5YVZTT1NBeWJQMUVzR3hIVGd4eE1Pc2FiOUdIbXhHWXM3MitPcGR4ZU1nUlJZSGFhSVZrTlErS2RIeDBQM0NhaHMzL1JQTGoxYzVoRTd1dGV6c0djT1MxbGZ6Nmg4aEFaRDY2NHBoVEhPWGpMTkJEdnI4QnovVFhUMHRDdVlXL3VIUHZPNWVzUkU3b016ZkRzc09ET3FJbFJ6UkJGZ2NzaFVLY3Ezdm5OOGgyMVpCRGEwYi9JUUZ3MU8xRWUwTXZBaC9tOUtHRnpwcjhRL3dZWGR4RXp6MnROY1p5RFhEUHo3UldFUGVXNjFpYWZrUnhKbkY0eVh1c2VhOEhGTWEybFJXQ285dUFwQmhTU3FNOW1xMHlOazRETzJ2WFFoU3dadkloMzh5elFYTGtYQWFMQ24wS2NtZTRkL2dXUEZiOExUZjZpaTRJY2RlK3ZpU0ZGV3VTNjFpYmJMRWUxdkxyTEJrM3ZEOEo1TlFTZXNnd2pDQUlaaWlnd0h4SWZWVTVMTDVaT1pCNDRNL2lhNk4xY2lBaFp5ZTlEVFBZUEZzZktWWVdvbUFkMnNycG9HcG8vd1pBVE5YV1JIUDRFdVlVdG91QnkzR3I5NUtwRmgrL2VNQlJSb005VXFqcVJLZ2M3bTVOWmlGUGl4MHhwV0hlQndtQmtPZDZob3NNYUJZZ2lXMEVsZ0V1UncxTFF4RFBjUmlnbTJQa2lFUzlmRXYwSGh1WW45UStHSWdyMG1jQk5SVWZpVTVWdkZsR3dDUEFqK09nUUUyTlppamlmMzhuWVZPWkMyNXJwSVZBWTNEdXNCVDZxMW1nUkJkQWw2bG9LQmowQTlCUlZsZmF6NWZLTzhya3J1K2huZWFaK0cycmVpU0ZhQ29xS2djK1gydEkyeTY0YVpCOGRnbUFwQS84M2h3K0RTbTM4dzFIQVNCWDRxSHB3YlNrK2ZSMWhsYVZBYnp0bVEzRHROTFVjTkRSZm15Nmg4aEk4V1Bxb3RYenV5aTZxckw1a05PdzVCMk1nOUlrQ24zbmRWaGZCWnlXd1JTa1U4ckI5aXpCdHZaZkIzSndWN1FORWlXMlFyMXBDOE0yKzlMYkRTZ0FBMTRRdUFrUHFlQXlPSVJWRTBnY3dueWp3S1h6emIxWCtCN1pNV3FuWjdFWnlmSE01NEtIQ3VtSHpFNmlheGJoZUZqTnZBck1oQUR1WExHME5rTXlRUklFK2dOMTYvQXBjczJpYnFkd25MbzRXODlPc1ptak1LTkhSMFR4UDMyRCs3RkhJTWZzQkdESTVIQ0FCV21kSW9zQVdSdWppMmZLNXpWVHVjMHEwaVl1UUtJVXE3aXlEYzFVSWxHM1c0dklyOE8xTGI3TmMyZTRBTGtsVE0zb3NCWENWRENHam9VTDVGYWlCZk81eEpMSGx4cmFselBSaHE0bFFGUzk3bE9OVVJUT1lPYjMzRmJuMGJSMlVhMEQzaVlKWjRQY0EycUp1WnNpUnpPcHpDdHdwcVhRN3c5cm9LODErOCt0QTI4WEprRVJCb1RuNEZUTG91enFEamFXSVM2eFRuVTBVK05DckhDNHFLaHZhQklrdmw3NnRnOXBiT3RNblQrYzROL2FES0lDKzRKc2dwSkFqOVRMa3dYZGZReHkxQjhlUWxnOEt5eHE0YnduQmZKanF6aVNxeWpicjRUSHJpckRCSElWMGJNNkV2aGRJYjZzM0lnK2dJK1R3YThsVmVsbVJVcnNmdXNjZ2w0Q0dKZ3AyaHFlK3J6UElzZjRmZ3lrNllrVklWWGlOS1VyTUIvN1YwOEdhbFJleEVrQlh5SkZtKzMyQWFBK2xxaG9wTkU4T1VUWWRxc1ZuYU1zSGhRejIraEtDcXpMZ3BhdWQ1UllGRzNuSUQvTFNtRDRUUGhGa0xoME1NcWtIZEpLOVpha3ZoWWRNRmdQTTBaZm51Nk5vWFF4ZHIyRGFHRU1VQlJ0TkZCUXlRTHBlWkwwMmVxNlpSQ2c3eThDdFl4WldxakxubjJjdi8zTTRKTnJTTit2b3l2dVZwUVBvR051S2R5V0U5eUlLNmxqQmxrTWVURHBHcXJYbUtQZFJaVDBjbk1QbzBKWVBDcGxaNkNHSFBsT1RzaFlVR1VSQjFkcW5hYXFxbXZuYndoSjlTWXdVTm44RTMreG1hblIwYlMrckFGU1JhemxyWFdNZGVXcE1OdUJ5bk9zWC9KNlFodjNjMTAva09kaVE1bmhZNkRmN3BrSVl1TW9OVjgyV1k5ZWpUTkZSdFgrYnFUUEZkUGxTOGZEckRwQkgvQW1nZytSNkpsWFcwRmhoa0ZvT0hmTHpLaE9YdmR3WFcxRWtHeXI2UzE5eUdLUlB3VkJGZ1RtcjlnMm1lM25Jekk2aWFyM0t6R2dXYXluWVZSUTd1clg4WnUxSXZPVERWaFJFTVRGOEt0WWtMSUlPY2toNDdsMmNoY0ZQNlJPcXNoS09wVy80UVY2Q3puQnJUTEFlcENLaWp5Zkx4SEE1VklmUm9ZcUN3aEFDSWRZQ216bmZGellZazBXd2NLalNxaG1RVGN3c0lzeG1qeFVXQ1hQL0xCMUFWOGx0NnYwaTc0WTVJUmhyZVEzMk5kT1dRek9ZL2RUYUl3eHNnbUF4NUtXZ0lZdUNkWVMxd1BWMzM3cS96ZUhJWnkyNHNRaUpxa0g0empMVFA0akErRnBoYVhCVmNGU1lWb0tuVE9GZkFFMFE2bE1UdzQwTSttZkx3VW0yczdQdW4vSnVZQjNvSnUrbHI5VXRQVFpoNEJJRXZzUnh2V2ZJb3FDSXRCYll6T2F4ZmdWVlN3am04WGNCcy81dkRxdkVTajcvNnJCUXpDdVdBc3laRjZGVzBIVjRSa0Z4VnlFTXZpSUk3QXhkRkpqV2dvZkk2bVpWZzN4c3llS0Y1ZmdoSFozTE9XcXZpWU4zeHVZVE5EUEQwb0dWQUs2QnFreWdNQ3h1SGNMZ2QwdS91a1lRL01YUVJVRmhtTjlIa2JPTldPZkJneGJpYUdOa1dRN1lCamhSS2EvcFhPbFZkU3ZCc2NJWkVhQkw4S3lDamswWW1CT2M5UVdUMUhVT1JNRmZhNUc2aWY1VFpDaUtiOEMrdGN6Z3F4eWlsaFpyd2FMQ1A2QVFZZkJkcnFkT1RvV1ZrY3RnUmNRQlhCRmJjYUFGVU55S0VMQlpVeEVFQm9pQ3Z6Qm4yT3VJWllTcUNBRnozOXNLRTZmTlduR0lFQ3BuSjV0ZmNnMnhhVnVuNG5XdGVDWGlBSzZRSmNzSW5TREhrbU91Q1lrdEI4VU9RZkJ2RUFWL1lkYlZ2b2tZREVORWdTa3dxdmI5eWFKcWR3SHh0anIzNGlWOUNsd1NHVnV1cFkvVjNxb3NMbTJSSTFWMDB4YWNhMDVuUGV2UXZSNHFPVVJCeWpQNDJlSkQ5VTc2T0gxL05sOHJ0ZjB4MU9jSFVmQTNLMk4yY1I4NEtJYjRDWmd6OW5WQVZNSEdJaVo4OGJZdVFtZjdhMlBaNE9zVkRnb2hXZVhxWGxNdWg4c2NBM3JWdGRRTjBjc2xPaTZSN2UvUUEySFFScnZGcGdMdU9ybXNtMXZTSEVNaGc3ZmVpZGd5R2Rvd0JZV0pMVHRhMWV6OXh2RlFyaU5VN0pPY2YxWG52alFLeXJ4ZUlMeXJyWmx6M1lFdWx5aG9JNXFqS3hFamRkczhWZHpzcmxnWWhKNXozV1dTSnExTk9mWWR1NCtZNkxFMjkzVTFJQXIreWQ2d0Rvd3NucXV1MzgwOFRvYzNqcWlDS29lbzl3NWhzQlZuUXAvS3Q4WGgycGdiMmJ1T21Vckl4bkxJTUxNTm1WblZ6Wk9mVXhUVXVkNlFHVjdkYTgwMVU2MUsyUjN5K3pxL3ZZUXdhT05aTGpLSTZTYXRFWFhQN1ppd2p4dXRUSHlkYlRWWWY0UFQ2Y1QyNyszaDlFOTJwOU5wSE5oT3E1T2R3K2wwbWhqZkhjdStxMWg3ampjL25VNTc3ZmZuNDh3Q3ozVXEzOWNKL1cwVDJ6cWdMVnpzQTg5bmJMbm1VSGFacjlsOHptSllCdXgvVW1QL204elhXdWZlTGpJY1AvUmR5OEZXamxmbi9vYStoNHVhNTJ2MlNibTMxSGZ0Vk5IdnVmclpOdGhlc0k5c2ZPdnRoV1hZTnNiREZTTU1wc1pBcmJCMXRMYUIyZldDK0k0L2t4Y2w1aHpONCtib2ZPdHNkUWF4bUhOUDdWQnl0ODhrc2RNOFpCQ3BWZVFXaDZuM05sVHNoVzUxQnVvUTlJRXNWWWpFQ2pKYlh4TjdyazF0ZGRyYkoxZ1FCUTF0dmIyd0RKdnRoWTRSQnE2WmdtMWdtUVUrakRzWnpPdGVuMDBRdE5GQmhHd3BMM3ZLU3hvN2MyMnFmVkptZXJFRGR1ekExTlMxTGhPdU5jZnpibnZmdGdublVzVXE4RjN6RWRQSDZOY1RTNHl3ckxPTkUwVkxsUUJQdWVaY1BMVFFiaGZiZW50aEdSL29Pc0tna0U1Qjc0QU9qbzR1ZEhBNE9EcWZtUFBwcWlCUVc4enNZbHVqY3dzOVR0UHRFM1B2VTZ3VjR3Z1IxUFMxaG9xK21HV3dPdTJlUXh4c0s4VExORkNZUGRSNGxoY1I0bVBma05pcWUvMkswR2U4cmVVZ2s2YVhYQzY2OWZiQ01tNDVoRUZoclAyN2ZoOHphMHhScTdNckVBVDZ1ZnBtR0hYRmtYNGMxOEN3YmRISG9tcjJ1c25RR2MwOUhXbmIxK3E3dCt1V085NnB2RTh4Zzh4QnpqTm1jRjFhanBHeUg5YzJDUkE1VmN1UVRXMWplVjk5d3FWS1hObnVXK3JTU1FxcG92eXF0bmZuLzRGS3h1S2xlNnQ5OFNpZXJiSGVzUXN0ZGJBdDNGSFZhbmVWWlgyUjM4ZDZEZHNxZ05sS2gzYU5xU1VhWXBmQnM5NWtJdHRVOXIrL1VFaWZlYjE3dWRjNXoyVkkxeHJMV001cjZvZzZVdTNWNVJ3ZUUybFhNOS8vcGlNcHkrZEczM2VRYzB1NTcyUFpYNTNVN2lIVU9jZXJBbEVRamtzWUxCT1RYQ3kwQjgxa0twL3J5WVNlNURncElVUVBraVZSNXhvRUFRQUF0QWlpSUE2VkN2ak8rTlZqQTlYWnhqS1k3MFVNcENqVWlaenZyZkg1WjJvYUFBQ0FDYUlnRGR2TSsxVm0zbDB4SzlxV0llcFlOZ0FBb09lUTBUQ05wZFFnMExPa25XZmpQeStRSHRoRVdUUCtOQVRCcS9oQUlBZ0FBTUFLbG9KNnpHWHdOYm1VMVdBaFZneWJrK0p2SFhFeUFnQ0Fqb0tsb0I2dVFWWlpEZGFaQzNTNG1Jb0Q0bmRQMUFLQ0FBQUF2Q0FLOG1JV1Fia1hCMEZibGNRY1RFUjQvTFE0UDlhdG5nWUFBQU1EVVpDWGlWUW4xRG5QM0w5a0ZnZEtEUHl5VlBJNkM1TVBEVVJEQUFCQXowRVU1T2M4OFA5dUthT2NReHo0eE1CUkJNbTBnY1ErQUFBd0FCQUZ6YkFYSjhRL0xIWHZkWEd3RHN6RU5SZWZBWnNZS0NRUjBWVExsQWdBQUJBTm9xQlp0aElHNkJJSDl6TFFieVZ5UUxjZVRHU1EzMHVFZytrelVJZ1krRjErMjRmMG15ZHQ4NFYycm96ditqYVZFdGxzM3h6N05yZVpZNTliK2Q3Qjh4MlRtYkZ2SGZOdk9jN1YxL2JibXNmYVd2YmhTdk90czdEOHBrNDYyNVU4RDZIbnZROElNYTd6dkxpWUo3VDUxcElPWE1kOFprS2VRL1BhZktSYy95N3luR00yMTMyTGFkZWRUTndHbGZrVlVkQU9TaHc4T281Mko1RUR5bnF3RWJId3hVaDFyUE9oUjJLZ1NjNlJJTysxOXZWMVFrMXpGb0kvQnBwZWVtNDR2NDdrT1hjSnRhbVJkVlBWR2tsOTN1ZnlQcG5aUFgzY3lHL2F2RjlqenlUQXgxMkwwVTY1dUpWcmJicHVRU3EzTW5GVGZVZVZpTzBGL3huQ1JRb0xvMGpJUVRxZGxGb0NxZWltZlpYNFNBOGhIRG1XQjlUMzllKzJ2VXl3TURySGZZMWFETGt4clRDS3NURUlqS1FUK2hpUnhNbTFieHVoOStTN0RIQ3BnODNCYzE1VDdUazVlbkpseER3L3JuMlk3ZnZxMk85T3M1TG85VU51Tk1Hcy8wNkYyT3JYa1ZKOFRFZnYwTjhDeE1WRUUrUXhnMEhNODJMRFBKYXJUUlg2UFJocGJYZEpxczU1YXZSbGswQ3hWN1ZmblpEOStkNlBpVEVodTVFb3J6ODYwdWMxeGhCRWdhMlFrZUw5QlFzREtkUFpYQ0lGWERPWUo2MjYyWStXejdId3ROK2RDSmdtNmo3RTRqT0ZqdVg4dm1pZlBVUlU0d3MxOThkeUwrZTJTQkI0dTRxbGlydUE3OFhndXI4ejQ1bGNWblNZTm1Gd0svK3RCc054QTRMQVpCMjRMUERGeUZvYVF1N25wYXBOelh2UUJhck9lU29EYk82MmlLWHEvWmpJTWZXVTlxRitZRmZMRUpZUGJBV0JkTzR2V0J6b0lBL1pWSHdESG1VVzh5cXoyZDlrMExoa05JRkxVQ2srZFNDMXM0K0RuTjluN1R1akN5OGpLTjVMKy9hNmt6RlF3a0RQNlhHcm1iNmJGZ1Nobk0vbnY1cW9oSHgwdWV5MHpsN3V2UjVKZHRQMzViKytXd29XeHRyY205YjVMTFRPNTVOV2tmQlNxQWV3U3gzUXdoQUVydlpiU3Z0MU9mTGhmTjdmdFArZUI0cEJuOE5TeXF6bHM3U1hNazNlYWpPV2Era3M2M0xRbk9uVU0zUXZuK2xtNVdWRGJUSUxGTElIMldMNmhkelBTeFY3ZWFaMjJqSk4xMGtWd1F2SHpIN2ZjRTJYcFFoNFJhOTlDL291Q3ZUWjRKdmNUUFhTckEwVDFpYmhoYm9tcDU2VURzbGNoOVhiYjZPWkxVZGFWY2F1b3RiaFl4MjR2bmorbHRLbU8yM2RWMThML2hucDYzRHQ3TFNsQkNVRWRFR1F1eTMwZC9zdTRqbjRKazY5b2RhNjNNOUxGZnNPbGtGM0RkNkZDSUxVSlJhWHY5Vkx3KytOS1FvUkJWZU1QbWl2alk1aFp3d1NNVjdKMTBqc1lHaGl0dDlXbGpsVXV3M0pCRjRYWlVKL01EcTY3OUxoRE1WY2JSTUdSVVBpYUNPemVGZHRFQjlMRW9KRjRScThYWkJicFVNTUtmckFObWpsbk9sL3pMaXZIR3pGU1RIMkJYVmhhNnRyc3BRVWljTG9EOGZuZFplYURscElxVDY3L0NUdE9pU0x3YzY0TjAxYysxNzZnSG1nZ0owa3ZqdE5QUzh1SnZJY05iVTgwU1RIeUNXaXo0N3ZOaTBxek9lbDEySGdmUmNGZW1kemI0VFFtUjcvVHpWdTlxNmpNd2xWdmpsMThKNXA3YmVROWxNdjVkb0kyZW42ZXJnNSt3NDkzNlk3MnBWbUFqYlgxeUV2aDhpb2t4UlIwUGJBUEJGUnFZUmxGMExtOUhOWWlBVk1jZFQ4U1dMWlhlamFUTWZDWHZ2KzlGMFVQQmpoSkQvRTVEMDJCalNsV1B0b3hxcXozamd6L0FaK090cnZyZVBtMWFYRkFheExNL0cxMXVIWjF0ZWhIaE10eXVmY3J1OW96OVpZaXdqYlNOdXJCRjZmTytnTFlXTmw4UlBwdFJXdjc2SmdMMFdDOUp0cTh4MUlpUlVmQXJZbENGdjdYWHBXNi9MNG5sa1NwUlJ5VGFGcVB5YmNzbzRKZHllRFYxVUlLTVJ6TUpZblFzdXVZUllBQUFQQ1NVUkJWTzVwcW85TXpQT3lEckJhK0p6MmlnWTgrWFZ5NVZ6WVdueEh2c203R1JQZUYzTE8rakdyM3NXSjQzNk41ZHhzZmNmWHZvOFZRL0FwV0dteDZ1WU5mc09KcUJMYnVyZmlUUVRCcGMxcFBvOXZrNWRJUjc2WWZSYzF6WnZLQVhGdGhFQkJQUTVHUnREWWV4b3pDTVRzMjdhVVlSNHJsOU9lK1Z6RzdyZHVwa2FiVSttOURMeG1Sa3NYc2VkYzlTN2VSTjZ2cDQ3blpNbkNVR29mUElncS9DaEs3NnVFR1UwUUJFR3NKSkdTcmYydVpYMU5KWVFLN1lBdWhZcmhkOVhKZ0RSU1RiN0hsczNjTzB2WjlWQ3FMR0IxbnFrY2JhQ0VnWjRsOGxZTDArMHFyMXF0bWQ3ejduU3FLbjRGR2RIWHAxNGl6WE5tT3RNKzV1RFcyMlB2TWExT0lzMm1NVWxkWXZldDR6cm5xZWJzR1hNdSt1OUM3L1hVcU84Ukt0cEMyMTVuYkhUbXFjbHpwb1l6YkZQUGRjcTlyYnFtT3MrTGI5OW1tMVFSZXE5VHpqZmtlZENmbjZvMk01K2J3bkgrdHUrRkV2SXVodERyT2djMkVBWHRnaWdBQUlET1F1bms5bGdZRG5sVEVRa2hxdFdXMEdZNWxGS2VBQURRRGxnSzJtRmRVUkxabC9mZWpQTTFHVkpxWEFBQWFCQkVRZk9ZdVJKc0hHV2R6MXlIQ3kyTHlsSUNBQURVaHVXRFpwa1lndUFvU1RzK0dDRStJMGVZbkJuKzhpZ0N3UFFpN24yWURBQUFOTStRYWg5Y0F0T1JVRjhtMk1qcy9rNzdtODdZU0xqeVZSdjhWWHl6S2dWOEo5OG5BUk1BQUNTRHBhQlo5TkNmVjR2ZmdKNGp3U3pXWXpvUm1uSENwaDhCVG9jQUFGQUxSRUY3MkdLRFRkR2dZODc2elVIZkZ1Y0xBQUNRREtLZ1dYUkx3RWhtOXlvRWNXNzRHNWhXaEoyUitldEJFeEVUdzNKdzdIdmxMZ0FBYUI1RVFiUHNESWZDYzFqaS84UWY0RS9qeUxhd1FuM2dQNmNEL1NXLy9XVVV6Ym1HYW1NQUFOQnhDRWxzbnFsUkJNVEdvNmRJejY2aWF0NHIvZ1FBQUpBRExBWE5vNHFBMktxTUhTWDVrSzlxMzh4VHlPUXhZM2xUQUFBWU9GZ0sya1hWNko0azFONGZpd0NZaXREWTRsd0lBQUE1UVJRQUFBQkFDY3NIQUFBQVVJSW9BQUFBZ0JKRUFRQUFBSlFnQ2dBQUFLQUVVUUFBQUFBbGlBSUFBQUFvUVJRQUFBQkFDYUlBQUFBQVNoQUZBQUFBVUlJb0FBQUFnQkpFQVFBQUFKUWdDZ0FBQUtBRVVRQUFBQUFsaUFJQUFBQW9RUlFBQUFCQUNhSUFBQUFBU2hBRkFBQUFVSUlvQUFBQWdCSkVBUUFBQUpRZ0NnQUFBS0FFVVFBQUFBQWxpQUlBQUFBb1FSUUFBQUJBQ2FJQUFBQUFTaEFGQUFBQVVJSW9BQUFBZ0JKRUFRQUFBSlFnQ2dBQUFLQUVVUUFBQUFBbGlBSUFBQUFvUVJRQUFBQkFDYUlBQUFBQVNoQUZBQUFBVUlJb0FBQUFnQkpFQVFBQUFKUWdDZ0FBQUtBRVVRQUFBQUFsaUFJQUFBQW9pcUlvL2g5Z044Wnl6eWlXV3dBQUFBQkpSVTVFcmtKZ2dnPT0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCJdLCJleHRlbnNpb25zIjpbImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6IjY4MzJkMjA1NzVmMjQ0YzdhODY0ZTg2OGM3OTZkMDZlIiwib3B0aW9ucyI6eyJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWV9LCJtYXhNc2dTaXplIjoyMjAwLCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxXX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMy0xMS0wNiJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjMtMTEtMDYifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyJkNzkwZGFiZWMxZjA3NzAyMzUwNjQzMTNjNWZlMzhhYjNkM2Y5OTZkIl0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbImQ3OTBkYWJlYzFmMDc3MDIzNTA2NDMxM2M1ZmUzOGFiM2QzZjk5NmQiXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ill1YmlLZXkgQmlvIE11bHRpLXByb3RvY29sIEVkaXRpb24gKENvbnN1bWVyIFByb2ZpbGUpIDFWREpTTi0yIn0sImRlc2NyaXB0aW9uIjoiWXViaUtleSBCaW8gTXVsdGktcHJvdG9jb2wgRWRpdGlvbiAoQ29uc3VtZXIgUHJvZmlsZSkgMVZESlNOLTIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NzI4LCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjJ9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50IiwicmVtb3RlX2hhbmRsZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURTakNDQWpLZ0F3SUJBZ0lVVG5iYkdJUjJOSHZ6cUlLRkFlUXdHMVhCaXMwd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JCSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVFZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU9zWGozazA0QmFuNFRZZHRaS3FEL09QSnh5RHlhUG1DQlVGVWlhWklnVHRlWm5qM1gyNURoZ3BaWlhzQzREMHlkSWNybEE2d05VSW5PUkwvTDl6QmJURUlNQVZNR282ZzdVS0FtYjJNRjZBSGJuaFlKZDllaWt1cFZOV1NoSE5ZTmM0R0JkTzFZTjZBZlVxdkpoSGJlM1Y0U05NUG1CUkVLSlBWejdUaHdnbWdnVGU4V3MySzAvd3NxdjJ3U0U3cGJDQnNVWmhJWDUxYlpNM3BxRHdKUFRtUkZFdnQwLzZ0RzVlTzhGM2oxNE9YcWZFaG1qbjFWdnhLRFlRT0xaQXhDd3dnQzBQNENkZld2M3k4UFNSOEkzNTRoTzFZK0d6Tmp2SXFYMzhOS0x5d3VJWUhGZXJPeE5seEVNQnZGaFlCdVJ1WUFra2dVYVBxTjZVQmhzSUxyc0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ0NvUkhoaXlObmJuWFJXSUw2WkJYb0JYOVlUTUI4R0ExVWRJd1FZTUJhQUZDQW9VQ0VicEZwYjZGUExuWjNGNVB4c0wzb2ZNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUNRRmFmSkkxLzVXZzlDRUVpbUUxUlA1NFJnUXdUTlRPT1FzTEFDVGUrckl0bEZRekM5WkRoclY4Mjh5WDdqenkrQUFzcDNpeks3VDF0aDJkbDdtK3R1MHN3MlBhL29sYzAybnQ2UHlJdzM0OGdhSHpoSTErMEtFNDVxeHZGRGVMMmxNeGJQZkNZdnlFRWFZemppUUVMVTU5NTFwWEdXeUtNYS80Zkx0TytaS09YaE11VmVxNHJYRFBJNTRXNkpIT2lBYWlLZGl3KzVlM2Mya3QvakZJUXRNNnZNWGc5TE5GemRqRVROdDIwVlg5UWV2UnBGWmZ1Y01HOXdDYVFEb0ZsUHpwVE1KS2hQZXYvaW1KbVpZaEtmcjBsTGNlbXRxakl4TEFvcVpkT1lmSEJnNit2QWNkUEkvaWF1R3BVQXY3WCtVS05tRHdqWjJCYUg0c0x3aEIybSIsIk1JSURQakNDQWlhZ0F3SUJBZ0lVWHplaUVESkVPVHQxNEY1bjBvNlpmL2JCd2lVd0RRWUpLb1pJaHZjTkFRRU5CUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTVo2L1R4TThySVQrRWFvUHZHODFvbnRNT28vMm1RMlJCd0pIUzBRWmN4VmFOWHZsMTJMVWhCWjVMbWlCU2NJWmQxUm54MW9kNTg1aCsvZGhLN2hFbTdKQUFMa0tLdHMxZk81M0tHTkxadWp6NWgzd0duY3I0aHlLRjBHNzRiL1UzSzloRTVtR05ENnpxWWNoQ1JBSGZyWU1ZUkRGNFlMMFg0RDVuR2R4dnBwQXk2bmtFbXRXbU1ud08zaTBUQXVjc3JiRTQ4NUh2R000cjBWcGdWZEpwdmdRamlUSkNUSXErRDM1aHd0VDhRREl2K25HdnBjeWk1d2NJZkNrenlDaW1KdWtoWXk2S29xTk1LUUVkcE5pU092V3lETVRNdDFid0N2RXpwdzkxdSttc1V0NHJqMGVmbk85czBaT3dkd01SRG5INHhnVWw1Wkx3cnJQa2ZDMS8wQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQjhHQTFVZEl3UVlNQmFBRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRTXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJEUVVBQTRJQkFRQzNJVy9zZ0I5cFo4YXBKTmp4dUdvWCtGa0lMa3Mwd01OcmRYTC9jb1V2c3JoenN2bDZtZVBNcmJHSkJ5SjFYbnF1QjVzZ2NSRU5GeGRRRm1hM21pbzhVcGYxb3dNMVpyZVhySjBtQURHMkJwbHFiSm54aXlZYStSMTFyZUlGVFdlSWhNTmNaS3NEWnJGQXlQdUZqQ1dTUXZKbU5XZTltRlJZRmdOaFhKS2tYSWI1SDFYZ0VEbHdpZWRZUk03Vm9sQk5sbGQ2cFJGS2xYOHVzdDZPVE1PZUFEbDJ4TkYwbTFMVGhTZGV1WHZEeUMxZzkrSUxmejNTNk9JWWdjM2lyb1JjRkQzNTRnN3JLZnU2N3FGQXc5Z0M0eWkweEJUUHJZOTVyaDQvSHFhVVlDQS9MOGxkUms2SDdYazM1RCtXVnBtcTJTaC94VDVIaUZ1aGY0d0piMGJLIiwiTUlJRFNqQ0NBaktnQXdJQkFnSVVSMzhtcTI2U2Yyc3pWVjJCZEc2V0VON2t1V1V3RFFZSktvWklodmNOQVFFTEJRQXdMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3SUJjTk1qUXhNakF4TURBd01EQXdXaGdQT1RrNU9URXlNekV5TXpVNU5UbGFNQ1l4SkRBaUJnTlZCQU1NRzFsMVltbGpieUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRUlnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTlkwV2I5b1BvUm9Lb1F5V1BhSnB6MTF2cldUZzZ6VHRtTmoyVm9LUm55dktHUnFwemI4M3c1bDZZQTk2VVlrWUJEUVAwaWxPMkRQZTZ3V3FWUjV6RGZSemRjSDhiaCtMN2RHR3ZhZTZoUlRaaGtGa0NwWERzNEhjY2tuckRmOEZDbEo3SGUzOUpmNDIvRzFRbTJ6ejlXV21yUFh0Z2lLL3gwNUdqc1FmR3VERzF6ZjVRVFVVaWU4bHd5bUszVGZkT3ZOZWVKQUFQZTJwbjdJdGZSYityVnJOV2lEemxSbjJ2Tm5aMndQbzR3SC9XSjZkaFhaRytyTVdUK2E2Qm9jZzFVZkl3NmtkdW5HNGJUcFp6c3ZhY0ZZeVIwbXBmK0RlT25wU1dBbXl3SldIdlRsZjJZWHhGeWVYY1RBQ2RRbGNNTkdKMlZoWlE0OHh0UDUvUkJQLzhrQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZDaHk0Mm9raXFjVFMxaXFhL0hSV2prQm40SC9NQjhHQTFVZEl3UVlNQmFBRk9xM1FwQ2VESHRrZXR0VWZBTzZmRTZmMktGaE1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQW4rUkhJUGJ0TUVETmRUMWc4SC9SaXRBa1VkTGdBdDF0V0dXbmxqOWtuYnY0LzRHbFg3QzlwNDVlZlBPOS9hWkw2T1YxWFJLQmk2S210Qlc1SzdudVlFbk14LzVCcUJTYkxUN3JoZHVDNDlUQmVNYjlQSGRYc1RsU1ZOWWVmcjFkR2lkcjRqMHhWQlFMYjFya25EQWJkV0R6S2Z2bmF5S084RnJ3ZTdIeDg0M01HL3JKK2MwWHJ1VXZiZlZUQ0hMaUlXaE03b05EaEw4eG9iNnhVbzlLTEtjU0wrSXRZc08zLzlXYjhROUdqc3FMNEZYc0RjRzFTYVloN0twZnVNbU9peHF6SlpPMm5JaWNQWVJnMUkyU3VpVWZZTzcwdG1kSGNibCtrU1FtU1l0N3JxNHZpSUxnMkd4M2o5cklUdVdUamJhVWFTU1F4Z09tTVNIdXl6TUFDIiwiTUlJRFJ6Q0NBakdnQXdJQkFnSVVleDluVDl2d1pOWFM0ODNMZGlZR2Z3MlNqU293Q3dZSktvWklodmNOQVFFTE1DNHhMREFxQmdOVkJBTU1JMWwxWW1samJ5QkJkSFJsYzNSaGRHbHZiaUJKYm5SbGNtMWxaR2xoZEdVZ1FpQXhNQ0FYRFRJMU1EZ3dNVEF3TURBd01Gb1lEems1T1RreE1qTXhNak0xT1RVNVdqQW5NU1V3SXdZRFZRUUREQnhaZFdKcFkyOGdSa2xFVHlCQmRIUmxjM1JoZEdsdmJpQkNNaUF4TUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUF1MU1ldm55OWR5TzlaVUMzOVNvTWhMY1IvRFhydEYvY2lNMTJ0Y2l5MkVYQVo2TWtyaXZWdENmRVZNOVg2SVNURW5CUDZ1U1lZb3Y2cHB2Nk82SmgyTkhtWW00dytKblM0Vm5DUFU3bUhBTWZWSTJNR1RUTVZPZXcweFVzRzdzSVNJa0lEVUJtdWs4WUs5YzV6aWM5K3ZGUUdMSWtzZFhPNWlWRklnTkc1M2NHWEQ0Wkxab0FQaXUwUEVvenhBcVlJYUk0Z3hLaE9BM1M4L1c4bUlXc3U2b2Z5ajRHdmtGRzZaN2t5RjMxMDdQN213RkhMckkzRU5hUFdNT0ZjVGFHYTBkdysvdlZSd2pSY0VaQlZzdXVULzg3Y2tTczBhNXBrdDN2WkJsYVllVDhwelNyZVY3bW93Y0lNOTBMMmlhQVRsUDBueG1hRTZuT3lUYm9qRlZsMndJREFRQUJvMll3WkRBZEJnTlZIUTRFRmdRVVNYRWgzc2EzYnREdXJtNE1NL0M3UzFsUnV1WXdId1lEVlIwakJCZ3dGb0FVNnJkQ2tKNE1lMlI2MjFSOEE3cDhUcC9Zb1dFd0VnWURWUjBUQVFIL0JBZ3dCZ0VCL3dJQkFEQU9CZ05WSFE4QkFmOEVCQU1DQVlZd0N3WUpLb1pJaHZjTkFRRUxBNElCQVFCNUdjM2hhZnRwN2hLc0Vac28raS9aNW5SdXFkbXpHMldDbFVvUlVxYmFQeWdsbkpEaktSL2tmZ09sNmliYkYvenRobTNLbVhRN0hjRElQMnhNZEc3VTJMMmltYkpRSHFQZi9oMkhxb2piNHJaZ3VlKzZXNGt0U1I1ZWxSOUwxcllxRS9TR1lNNGlFS29WUVN2N1JUMXJ4SWVXaUtzdy9WeHhpL1FPbnN4M0Y3eDgwQ0NZZ0I0RTN5UXg4VlRXNDQwaFRFd1RBMWVNSE9peDMydFB0eXlISWE4UFZWSWZWcEhRSkJhTVZ2djUwOFVFandrYlUycm5qZnpvU1ROUzlBNWpVUThtQlN2ZTk1cmpCMGRvOThFVStEeGRCcVgyK0g2aTV3bElDRmd6aGR6Y3NuZTloR0tUNmx6VFg0Y0lkSnNyWTIreGxlSzBGRlF5NmxHRVZMRWUiLCJNSUlEU0RDQ0FqQ2dBd0lCQWdJVVVjbU1YelJJRk9nR1RLMFRiM2dFdVpZWmtCSXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFEbTU1NWJXWTlXVyt0T1kwcklXSGxkaCthTmFub0NaQ0ZoN0drM1laclFtUFV3MGhrU0c2cVlIUXRQK2ZaeVMzM1ZFcnZnK0JRcW5tdW1nTmhmeEZya3dFWkVMZWlkQmNDOEM0QWc0bnFxaVBXcHpzdkkxN05jeFlsSW5MTkxGY1pZLytnT2lONlpPVGloTzUvdkJaTWJqOXJpYUFjcWxpWW1OR0pQZ1RjTUdhRUF5TXpFTU55Mm5tNkVwK3BqUDVhRjZnaTIxdC9VUUZzdUoxajJSai95bk0vU2RSdCtlY2FsNU9Zb3R4SGtGYkw5dnZ2MkEyT3Y1SVRaQ2x3NGJPUzlucHlwUWltT1o1UUFZeXRtWWFRcFdsL3BNWXo2elNqOFJxa1ZETkVKR3FOZlRLQTJpdkxZd1g2bFN0dE1QYXBnMEo4NGw5WDB2b1ZOL0ZwUzRWQ1ZBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlFnS0ZBaEc2UmFXK2hUeTUyZHhlVDhiQzk2SHpBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBWU16Z0xySkxJcjBPb3ZRbkFaclJJR3VhYmlIU1VLU21iTFJXcFJrV2VBdHNDaERFSHBYY0ovYmdETktZV29IcVE4eFJVakI0Q3llcFlldmMzWWxyRzhvN3pIeHBmVmNhb0w1U2V1Smt6SHhLbjRiVGFTcDkrTXZ3YW1ucDY0a1pNaU5iRkxrbmZQOWtZS29SSGtNV2hlUkoxVXNQMXo0U2Nta0NlSUxmc01zNnZxb3ZxaldDbEZzSnBCY3NsdVlIV0Y3YkJKMW40UndnK0FURW9wWTRJZ0d2Nlp2d2MrQTlyK0FUMmhxcG9Ta1lvQWwrQU5Zd2dzbE9mOXNKZTBWK1RBOVlZL1VsYUJtUFBUZDAvL3I5d3ZjZVBXWmtQaktvQUMvelVOaGZEYmg0TFY4R0hzM2x5WDJYb21ML0xOYzhKWXp5SWFERWhHUXZlb1BoaC90cjFnPT0iLCJNSUlEU0RDQ0FqQ2dBd0lCQWdJVURxRVJ3KzRSbkdTZ2d4Z1Vld0pGRVBEUlozWXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFESTdYbkgrWnZEd01DUVU4TThaZVY1cXNjdWJsdlZZYWFSdDNZYmF4bjlnb2RMeDVzd0gwbFhyZGdqaDVoN0ZwVmdDZ1lZWDdFNGJsMXZielVMZW1yTVdUOE4zV01HVWU4UUFKYkJlaW9WN1cvRStoVFpQLzBTS0pWYTNld0tCbzZVTGVNbmZRWkRyVk9SQWs4d1RMcTJ2NUxsajV2TWo3SnRPb3RLYTlKN25IUzhrTG16WFhTYWowU3dFUGg1T0FaVVROVjR6czFidm9UQVFRV3JMNC9KOVF1S3Q2V0NGRTVuVU5pUlFjRWJWRjhtbHFLMmJ4Mno2b2tWbHR5RFZMQ3hZYnBVVEVMdlkxdXNSM0RUR1BVb0lDbE9tNGNycHduRFJMVkh2alllUEdCQi8vcEV5enhBL2djU2N4andhSDFaVXc5Ym5TYkh5dXJLcWJUYTFLdmpBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlRxdDBLUW5neDdaSHJiVkh3RHVueE9uOWloWVRBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBcVFhQ1dNeFRHcVZWWDdTazdra0ptVXVlVFNZS3VVNitLQkJTZ3dJUm5sdzlLN0hlMUlweFowaGR3cFBOaWtLam1jeUZnRlB6aEltd0hKZ3h4dVQ5MFB3M3ZZT2RjSkpOa3REZzM1UFhPZnpTbjE1Y0ZBeDFSTzBtUFRtSWI4ZFhpRVdPcHpvWHZkd1hETTQxWmFDRFlNVDd3NElRdE15dkU3eFVCWnEyYmp0QW5xL05EVUE3YmU0SDhIM2lwQysvK05LbFVyY1VoK2o0OEs2N1dJMHUxbTZGZVF1ZUJBN24wNmo4MjVycURxc2FMczlUYjdLQUhBdzhQbXJXYU5QRzJraktlcnhQRWZlY2l2bEZhd3AyUldadnhyVnRuM1RWMlNCeHlDSkNrWHNORDA1ZENFclZIU0pJcytCZHRUVk5ZOUF3dHlQbW55YjB2NG1TVHp2V2R3PT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsImljb25EYXJrIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwicHJvdmlkZXJMb2dvTGlnaHQiOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJwcm92aWRlckxvZ29EYXJrIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09In0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjYtMDQtMjUiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NzI4LCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ill1YmlLZXkgQmlvIE11bHRpLXByb3RvY29sIEVkaXRpb24gKENvbnN1bWVyIFByb2ZpbGUpIDFWREpTTi0yIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVMkYxMDAwMjAyNjA0MjUwMTkiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblByb2ZpbGVzIjpbImNvbnN1bWVyIl0sImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjYtMDQtMjUiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NzI4fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI2LTA1LTAxIn0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiMWQ0YzQ2NzJmZmNiZDE0NDU2ZDg5YzdhMWM4YTJjMTJiYWYwMTkzOCJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyIxZDRjNDY3MmZmY2JkMTQ0NTZkODljN2ExYzhhMmMxMmJhZjAxOTM4Il0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJJRC1PbmUgS2V5In0sImRlc2NyaXB0aW9uIjoiSUQtT25lIEtleSAoVVNCIEMpIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjE2Nzc3MjE2LCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjJ9LHsibWFqb3IiOjEsIm1pbm9yIjoxfSx7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUMzakNDQWorZ0F3SUJBZ0lHQU9xMEFBQUNNQW9HQ0NxR1NNNDlCQU1FTUlHUk1Rc3dDUVlEVlFRR0V3SlZVekVMTUFrR0ExVUVDQXdDVmtFeER6QU5CZ05WQkFjTUJsSmxjM1J2YmpFdE1Dc0dBMVVFQ2d3a1NVUkZUVWxCSUVsa1pXNTBhWFI1SUdGdVpDQlRaV04xY21sMGVTQlZVMEVnVEV4RE1UVXdNd1lEVlFRRERDeEpSRVZOU1VFZ1NXUmxiblJwZEhrZ1lXNWtJRk5sWTNWeWFYUjVJRlZUUVNCTVRFTWdVbTl2ZENCRFFUQWdGdzB5TkRBNU1UZ3lNakF3TURCYUdBOHlNRFkwTURreE9USXhOVGsxT1Zvd2daRXhDekFKQmdOVkJBWVRBbFZUTVFzd0NRWURWUVFJREFKV1FURVBNQTBHQTFVRUJ3d0dVbVZ6ZEc5dU1TMHdLd1lEVlFRS0RDUkpSRVZOU1VFZ1NXUmxiblJwZEhrZ1lXNWtJRk5sWTNWeWFYUjVJRlZUUVNCTVRFTXhOVEF6QmdOVkJBTU1MRWxFUlUxSlFTQkpaR1Z1ZEdsMGVTQmhibVFnVTJWamRYSnBkSGtnVlZOQklFeE1ReUJTYjI5MElFTkJNSUdiTUJBR0J5cUdTTTQ5QWdFR0JTdUJCQUFqQTRHR0FBUUFsY1RZc0NWMkx4dXdLOFE1UEsrMDMvd1NBUFNwUVpSNmsxMlAycHFmQjFwN00zSlVmVXd2ZW1pdG9oS0pZMkVlcFBMYWRJaXd6MmdWYXJQQjZNRmMvSDRCUm12NXljVVloV3dKeVBpUmZxRkpRcmNuT3IyUW1HVW03bi9HWmhRS1Z6NXVyOEw3Tk9wbm9udnhjdWhjZXVqZWUxeEhwSVUrV3J5Q28yaHBOZlhvWWlLalBEQTZNQjBHQTFVZERnUVdCQlE3VmpsTDNhZ1NUWHZWQUZ5S2I0R0lFY3Awd3pBTEJnTlZIUThFQkFNQ0FQOHdEQVlEVlIwVEJBVXdBd0VCL3pBS0JnZ3Foa2pPUFFRREJBT0JqQUF3Z1lnQ1FnRStmYmJKRmNYaUZnUVpiWnIzeFFkVVdTbmdnMWhOcmtIRkhoNVE2UkVIWEhFWGF5eCtJbWYwMGlQb05wQUU2YzltQ1NUVmVXQnNHT3FEUzRCMzZSVlFvUUpDQWJYd01EK2wxRi9Mc3hSQmU0KzBNSGh3cjIwdjZoa20rczJLT1ZVcjJuK0lBejJjZ2hDQ2xMT1RkWFh2UUdsNDY1M1hYM3Z3WDlWcGd5UlNVVDF0aGlleCJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFESUFBQUF5Q0FJQUFBQ1JYUi9tQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUZpVUFBQllsQVVsU0pQQUFBQW9yU1VSQlZGaEh6VmhwY0ZQWEdkWHlubVF0WGlYTCswSWFzTUhHT3dZYkVsSktnRWtDQWFZTTAweWJNbWxMS0FOaG44bkNaZ2dwNUEvVWhJNHpoTkRTYVdjS0pHeUZNS0dCTkhIeGdvMXRHYk1iYi9LK3lKWWxXY3VUMUhOMWhWQmtXOUlQWW5MRzR6bnYzaXZkODc3dGZsZDhoOFBCRzRYR2UxMTFsWnJlem1IT1p1ZnpYWU5QRXc0ZXd3cGpFa0t5WnlYRkp5bGNneDd3bG5YODhIZkhEMTAzNmkwU0tTc1FDbjRVVFU1Z1d4dG5IekZhSTFUUzlUdCt2bVJscm12Q2lTZXlCclhESythVUdIVFc0RkF4Qk5IQkNZRE5aaC9zTnlaUGlUajUzelU4bnBBT3VtUjF0dmN2U2k5V3hRVER0blJpZ21FMmNVYWp1YlI1R3lNVTQ1SEtzczlPM2krVGlZWE14QmxwTkN4bVRoYk1ucit4RVp6bytHRHRhU0h3VERVQklqSFQyMlU0ZnZnYU9OOWdNTXhPL0RncU5vVC80NFYzd0xEYkhickJrYksyRHdRWFQ2bGw4cUNmZ2laQUlPRGI3YnpLNys4THA4UXM3R3pUUFhNUFBvSERFYTZTQ2pvMXVzRExBWXlNZk1ZZnpWLzg5M3gwTHdEb28rT0g2d01CeEhScGhnUldDeGVnQTdFbGtnVVZWaXhtZUh5U3dwelZMZ0FRQWM1SExCQUt5YVBEd1NkUzdBNUVNWjZ4eERUQ0JhZ01YMld4WUJkZVFLTHdwVDJkdXJQbDZ5L1hiNzVRdldGNGNNUnFzVDJYb3J5czNvUVJoVXFHa20wWU5tL1pzeENQWDkvYXJPMHpjSnc5UGpuOHNub3oxaXg5SThlZ043dSt5eC80ZUJFWDlRZlRpUFcxbFJtaEVSTHdOVXRQaUlNWW1HcDZYanlkZlhTdkYzWmlSY0p2djdwRFI4SVVVcUdRWDFuYVZQYk5Renh1TEpwdjQ0ZzU2YXhmQ0FKWkNGUDE5eGlMaXBlQk56L3NxeWg5SkE1aXJWWXVMVE1PSTIyUCtxMVdHMS9BWjFoQlExMkg4eE84eWRPaVlLMEloYXhvNDNrNjhzZDNYOUxyVEpUN2d6MGdhK0hrL3UyNkFvR1F1SHY3MjJjVWtUS1FFWU0xdHpBWlJGMmxFWWtZRUJpc28yVUlCRWpQam9OV0pQamdnUEdyTCtveDhwdTFoZmk4T3h0OHdjRkRiUGtCaVhRTHQzWGZJdkRxMHBZNzlSMnNpTUdnUERnb1ZFRjhXbjI5RmU0RFFiUWl6aC9lN2diUG1aV000QU1KQ1pmczMzWUpCTmg1YU1uZ3dBamx2dUhmaWJEODZzMHZVYjVueTdrSUpURVZ4OWxTTTZMcDRPMmI3ZXpqQXg1bVU5L1FnR1RPVElBNVFXQkNLMmY3UjBrWitJSmw2UXFsSE00bFMzM0NqeFB0Tmp1Kzk2M05jOEN2bkd2b2F0UFJGb096MkxObUpqaVg4TzdXZHdsWjEvZkFiRFVWclNBU0dhdFV5ZkJ4OE9EUW9FLzJYWFhPODNZWHY0NGtwZHdIL01nYUdqUnQreE54SDdCbnc0VXdaeVlDY0N0Tnc1WUhBNHpvU1pXQjJXckxpU3hnYW1Zc05ReEtGN0xoNEk0cjRQbHpKMDFKaTZMKzlRRmZzbEFTWlRMUjRwVlo0Q2MvcjBUMXB1Y0IvTTVaYkhBVGVFMUZVNUNFSmF1ZFFJeTNOZzFRbnBtZjRONWVKaGVmT0ZKS2VkSGhwZjA5dzVTUEIxK3l0SDNHUFVkSVVRQU83YjRDWDFCT3luY1FFeG9tQmIrajdvSWw2RGdGcHU0M2RJRk16NHVEVWVrZ3NpRlVJZDIxL2l6NDVMU28zTUpKT0REbzFKZ1lWeGJTTzNteVl2Yjg1OEUvK2ZBYjJBbStvRk0yenBhU0ZrTjVUWG1MTzk0cFVHbnJiclNCWk9Rbm9PUzZ6eHdZOWNJL2F3ZTZTV0R0UDdvY2hjUEhjVFN1cklGZWZkR2ZsMUorNHNoMWVURHBaU21zMWlmeGprS0ZuS0NjQWlyVmxVU1dSQ0xDbjN0ckdDeE1LZDIxZ1JoTUdSMHk3N1ZwYUpUcDFHaU1MUXNXeGxWcFdrNHMrSjUzemlPdDhLVjBDc0JzVm40aVNQT0RQcFBKaXZwT3h5bmcwOXMxblpSbjVzRmdUNkliSi9mMXF3OWJHdnZCOS8xbEdXNFc0eGxzREZsWWlWcDE0TE5mZ3ZmMTZFK2ZxSkpJUlhRS2NQQWNOcXM5NzRVazhPclNaczk0cDREeE5DMWFXaHF5Q3hJUkRIUWN3THVGSzJUYlZwMEVSd2orWWVzTHVKRFJLUytNYVMwSFBxK01DZ2JyYU5IU3pvVk9FRGg0ZkFGNWIxQ0QzZ0krR3VnbTBNbUF5RVBGWHZiQUNZWjJpdkw0NUFna08rVmVHT05iSVNKSXl1NVlld1k4WTBaQy9weEpabytzb1JMVmxhU1U1eFltbVl6ZThZRnpLVG8rUkNvbkJxNHFiZlpLQ0dUMy9xUEVEOEJIV3kraWNGRHVoYkZqQzY3NTk3OXFCM3BKMW53MEttdkVFcmJxZjgwZ2FibHg2RjY4N0lIc1F3bWd2TGFpemZQaUNZZE9TbEVXT3JPN3VPZy9ySmcwalhUS0MyUExJa0dnbE8xY1J3d0dieTVZa2thZFFvR2RibFczVTY2S0NiSFpmaUFMZStjVWtNaURYTzJBM25OanZPZnVnNitEb0pQOWUwa1picVowZkRUR2xnVWdlc3F1TmlMWHdGR1gwWTY2cmNLeUF2Vk40a1FnTXovT005Y0FxNWxMenlYblVrTk51NUFSdXVNUytadGI0TXJ1dlpzdVNtVWlyeFQyeExpeXFNSGUrLzFwY0xHRWVXUE5US1BCNHA1Q3FxSU5CRS9OOEphRjVNcWVTY3BIWFVXYnlObndBSGlsL2g0OTRnSGNvRE9mL3VzTkZCMDZOU2JHbFFXZ0hiaC9wN3Vtb2dWOHk5NUZ3MW9UTlJoa01Zd0FjUU9PcVBlc2lxZ0xTaFZKWVFBZER1M0RBS3laOThyVXlLZ1E4QjNyemlpajVMN3ZFTDVrQVJHUnNxTDE1eWpmc0hPK2JzalY5Y0xGTkx4U00ySThreEdCbFQzTGRRRGNxbW1uOFk2WHdWMzV3eEp5dkdxYXROY3UzcVgxeFFmOHlHSVlZVWZiME5kZk5vQ3YyamhIeEFwcHBXSFFWejF1WUhCMG9sQlJqbk1KTllYeWp0WkJlaTZOR0N3cjNwb2hkZGFDOTkvK0lrSWxjd2ZjZVBBakM4QWQ1c0IyVjlmN3pzNlhkWVBFWUhEaTNWclhiU0k5S3c3OUorVVdFNWZ0UEM1cnl6V2lJSmVwVUhYZjNmOEtPSktnb2E1ZHhQb3hGZUJmRnQ3WU9HdzVkYXdLZlBtYk9hR2hFdGdHZ3ozZHcxWXpVWk16TzVFU0tBQlNzMGl1MWQxb0ZZbEpVT3QxNXRWYjU0SUFTQ0RjaFFLNW1QcVhCWVNFU1Q1KzMyV3dYWWNYYXdkSW1jVkpjTE9NK0hGNlhnTHRxK3cyaHpKYVRzdTZ1cW9WZFFRVkgwbXdlaHVSOWUybHUxMGRycDdiTHdLU2haSUlFU1VIeUM5UGhmTW14OGFGb3lnZ2JOWFZKQmxUcGtkakFlemt2SGU0K3JCN3Q3b1JsMFBha1UyN0Y5S1JBKzlkQ29zZ25XTWdDRWdXZ01QcjJNSHZLZi8wN0p0d0RYWnRxSEVWMWRqRU1KZ0thZmppTDFMb1NFK0hEclVrTGpGc3hlL3k4UGpsMzZxMS9jYkFmeGZpLzNwaFNiZEc3OVhLalFrMDVncVZQRG8yQk5XMXZyb2REZ0xTU0NUeG14LzJHZzFXSkduU3p4Um9HRkZSRysvMlFJUXFKaGhuRi9LdXZrcUR4L0ZPUUU5WXpMWVpMOGJ6VjcxNnRMMXBLTUQzZ0p0Z0ZSRFVTV3dHV2ZRU2dZaWhXOEs1a0lzcFdrZ2hsTllPOXdLL3dCbFZNQzlKb0l5U2VaMjFQZ0RISWFUd1J3c1AvdE5IOTViWUhvL3U0ZzRuZUMzd0M3eTJJa29tbUpvVjVkbEFQblBnbUVyTGpSWE1YNXhxR0RiREhhN2had3Fhem5NWFRoRWtKc2RtellwR29MbG1uaW1NZXV1cnYwb1ZzeklTdGhwTng5Szh6NVNSY2g4TjBBU0EzQUJNbHNzTjY2UkJ3U2pFOXZqNDJMMmZMdWhxSDBZU3VaWk1PSkN6ZlQyRzRsUExvQWt5VUJmNHlPcEZTL0wzSFZ1ZzB4b1JjUk1jWjlodXhHQTFteXdsRjVablpLVkFEQjlYTDV4WktEVzRGMkMrc2JHbHVPaWF1cndQRjNiY1F1SFR4MDU5dXM0bHI0MTNoMVZROW15Y3JXQkIzUHJ0ODFXUmtRS0d6d2pKVDlQT1g2cDVEanRuUjlSamtkbGlibnlncWZ5dXFmbUJWajlraHIrZHBudXE5bk1XUFpUQWtIRHg4MU9WTStjK2w1QVl3NHBZZE5pc21NRlZpc2ZqL3gveHFPY1BSZFN2YXdBQUFBQkpSVTVFcmtKZ2dnPT0ifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMi0yNyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxNjc3NzIxNiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJJRC1PbmUgS2V5IChVU0IgQykiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlUyRjEwMDAyMDI0MTIyNzAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTEyLTI3IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjE2Nzc3MjE2fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTA2LTI2In0seyJhYWd1aWQiOiI5ZWI4NWJiNi05NjI1LTRhNzItODE1ZC0wNDg3ODMwY2NhYjIiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjllYjg1YmI2LTk2MjUtNGE3Mi04MTVkLTA0ODc4MzBjY2FiMiIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJFbnN1cml0eSBBVVRIIEJpb1BybyBEZXNrdG9wIn0sImRlc2NyaXB0aW9uIjoiRW5zdXJpdHkgQVVUSCBCaW9Qcm8gRGVza3RvcCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyMTIyLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2ludGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCIsImJhRGVzYyI6eyJzZWxmQXR0ZXN0ZWRGUlIiOjAuMCwic2VsZkF0dGVzdGVkRkFSIjowLjAsImlBUEFSVGhyZXNob2xkIjowLjAsIm1heFRlbXBsYXRlcyI6MCwibWF4UmV0cmllcyI6NSwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MTAsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURDVENDQWZHZ0F3SUJBZ0lKQUxLS2owc0tUWERsTUEwR0NTcUdTSWIzRFFFQkN3VUFNQ0V4SHpBZEJnTlZCQU1NRmtWdWMzVnlhWFI1SUZSb2FXNURJRkp2YjNRZ1EwRXdJQmNOTVRnd056SXpNVE16TnpJeFdoZ1BNakEyT0RBM01UQXhNek0zTWpGYU1DRXhIekFkQmdOVkJBTU1Ga1Z1YzNWeWFYUjVJRlJvYVc1RElGSnZiM1FnUTBFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURFaVpoNHRJY0FVUGZVa0NtWGJOd1dESUZ2V3h4R1BoSnEvL0ZzM3VQQkE0SlFVWGlBSFdVb2YwbU54ZlUzOXlmSzM5LzJ5WGdPSjVRb1pHenBRRUdTdzVTbm95MCs2MW9lSSswSVhrQWFNdmZWdnRtTm9PMk9KTzUrQUR0bER1NnJnSnVWNklwTExSNVNLWE9VMXpPUEhZckFQc1l4djNVTGcyNlc2M3pNVHFwQ05DZzRwendaUnlYamNMclVlQ3pGNFhjZitwL0c0MlpkR3pCZVpjNHoreWNjT014Qng0d3NHY1BnMUhGeXpYbDNKbXR5Zzd6VURFcWJqZUg4TnN5OStrVDMxbVZYb2NpZ0IzaEc3d2N0aUluNkE1bFBHTVBKb0k4NFJaZHJCM2VzOVFsSFpXU252ZEpHZWFMbk81WHE0bUlodWZiWTRzMVVxL3B2R3NBUEFnTUJBQUdqUWpCQU1CMEdBMVVkRGdRV0JCU09FbitWRmhJL1pHVVRTVWVoRXlPbHh4RnhMekFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VBTUFzR0ExVWREd1FFQXdJQkJqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFyYURvOHVtcmVqWE5ZUTZCUkJuNFhzRGVoRGxpajNMQU5NN0o3dGltYU5NZm94YWR3eVMxbnZBOGU3Y083T0F3M2llbFlqTzZvaVNwelVzdTZlSDJsb1owTEswZmtvaWFaWm5IS2IvNDZvNm85OTQ3aTh0dUFPeW9WckdQdzljMjlWb0lRa0UzUWovMFBKWm1VMFl1YmlsUlVOeDZsZEsyNWEwby9xOGxrN0JMMzJOaldkVHpLREpQZ2RLbXJ3bDFtM0syZUdtdjJaSWdBUDRwV1VtZzBERjRYUy9KYW5rRmliUlpoczZLZzBWMDJFOVBjYkd5WElvK2h4VTlRc2pqZ0lQdEZpRjgrVnZRYlBUVmVNMVpjMEN4UG0xWHgyMmtpM0llUHBhRGlnelMwS2Z4azVSbkZ0cVkvWk95VnRhbS9vQVA5dHEvTVRqRVF1MWZscnBwUlE9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFLZ0FBQUNvQ0FZQUFBQjBTNlcwQUFBQUNYQklXWE1BQUE3RUFBQU94QUdWS3c0YkFBQUU5bWxVV0hSWVRVdzZZMjl0TG1Ga2IySmxMbmh0Y0FBQUFBQUFQRDk0Y0dGamEyVjBJR0psWjJsdVBTTHZ1NzhpSUdsa1BTSlhOVTB3VFhCRFpXaHBTSHB5WlZONlRsUmplbXRqT1dRaVB6NGdQSGc2ZUcxd2JXVjBZU0I0Yld4dWN6cDRQU0poWkc5aVpUcHVjenB0WlhSaEx5SWdlRHA0YlhCMGF6MGlRV1J2WW1VZ1dFMVFJRU52Y21VZ09TNHhMV013TURJZ056a3VZVFpoTmpNNU5qaGhMQ0F5TURJMEx6QXpMekEyTFRFeE9qVXlPakExSUNBZ0lDQWdJQ0FpUGlBOGNtUm1PbEpFUmlCNGJXeHVjenB5WkdZOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6RTVPVGt2TURJdk1qSXRjbVJtTFhONWJuUmhlQzF1Y3lNaVBpQThjbVJtT2tSbGMyTnlhWEIwYVc5dUlISmtaanBoWW05MWREMGlJaUI0Yld4dWN6cDRiWEE5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM4aUlIaHRiRzV6T21SalBTSm9kSFJ3T2k4dmNIVnliQzV2Y21jdlpHTXZaV3hsYldWdWRITXZNUzR4THlJZ2VHMXNibk02Y0dodmRHOXphRzl3UFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzQm9iM1J2YzJodmNDOHhMakF2SWlCNGJXeHVjenA0YlhCTlRUMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzk0WVhBdk1TNHdMMjF0THlJZ2VHMXNibk02YzNSRmRuUTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl6Vkhsd1pTOVNaWE52ZFhKalpVVjJaVzUwSXlJZ2VHMXdPa055WldGMGIzSlViMjlzUFNKQlpHOWlaU0JRYUc5MGIzTm9iM0FnTWpVdU1URWdLRTFoWTJsdWRHOXphQ2tpSUhodGNEcERjbVZoZEdWRVlYUmxQU0l5TURJMExUQTRMVEl6VkRFeE9qQXpPalUyS3pBMU9qTXdJaUI0YlhBNlRXOWthV1o1UkdGMFpUMGlNakF5TkMwd09TMHdNMVF4TVRvek5UbzBNU3N3TlRvek1DSWdlRzF3T2sxbGRHRmtZWFJoUkdGMFpUMGlNakF5TkMwd09TMHdNMVF4TVRvek5UbzBNU3N3TlRvek1DSWdaR002Wm05eWJXRjBQU0pwYldGblpTOXdibWNpSUhCb2IzUnZjMmh2Y0RwRGIyeHZjazF2WkdVOUlqTWlJSGh0Y0UxTk9rbHVjM1JoYm1ObFNVUTlJbmh0Y0M1cGFXUTZZMlkyWXpkaU9ESXRaRFEzTXkwME1qa3pMVGsyTURNdFptVTJaakU0WkRNd04yVmlJaUI0YlhCTlRUcEViMk4xYldWdWRFbEVQU0o0YlhBdVpHbGtPbU5tTm1NM1lqZ3lMV1EwTnpNdE5ESTVNeTA1TmpBekxXWmxObVl4T0dRek1EZGxZaUlnZUcxd1RVMDZUM0pwWjJsdVlXeEViMk4xYldWdWRFbEVQU0o0YlhBdVpHbGtPbU5tTm1NM1lqZ3lMV1EwTnpNdE5ESTVNeTA1TmpBekxXWmxObVl4T0dRek1EZGxZaUkrSUR4NGJYQk5UVHBJYVhOMGIzSjVQaUE4Y21SbU9sTmxjVDRnUEhKa1pqcHNhU0J6ZEVWMmREcGhZM1JwYjI0OUltTnlaV0YwWldRaUlITjBSWFowT21sdWMzUmhibU5sU1VROUluaHRjQzVwYVdRNlkyWTJZemRpT0RJdFpEUTNNeTAwTWprekxUazJNRE10Wm1VMlpqRTRaRE13TjJWaUlpQnpkRVYyZERwM2FHVnVQU0l5TURJMExUQTRMVEl6VkRFeE9qQXpPalUyS3pBMU9qTXdJaUJ6ZEVWMmREcHpiMlowZDJGeVpVRm5aVzUwUFNKQlpHOWlaU0JRYUc5MGIzTm9iM0FnTWpVdU1URWdLRTFoWTJsdWRHOXphQ2tpTHo0Z1BDOXlaR1k2VTJWeFBpQThMM2h0Y0UxTk9raHBjM1J2Y25rK0lEd3ZjbVJtT2tSbGMyTnlhWEIwYVc5dVBpQThMM0prWmpwU1JFWStJRHd2ZURwNGJYQnRaWFJoUGlBOFAzaHdZV05yWlhRZ1pXNWtQU0p5SWo4K2thejdhUUFBT1BaSlJFRlVlSnp0dlhtWUpFZDlKdnhHUko1MVYxZmZQVDJqR1VsSVJoSWdSZ2RJQ0puTGxqaHNEQSt5eldJT3crUDFoMEdzYk9NMVJvRFBSZDQxR0l5V1EvZ0FCRVl5RXNLZjhhNWtJdzBnb1dOME16cEdNNUptZXFaNyt1NnV1L0tJWS8vSXpPcnNtdW81dTBkbG5POHpPVldWWFprVkdmSEdMMzVYUkJDbEZCSWs2RlhRRjdvQUNSSWNDUWxCRS9RMEVvSW02R2trQkUzUTAwZ0ltcUNua1JBMFFVOGpJV2lDbmtaQzBBUTlqWVNnQ1hvYUNVRVQ5RFFTZ2lib2FTUUVUZERUU0FpYW9LZVJFRFJCVHlNaGFJS2VSa0xRQkQyTmhLQUplaG9KUVJQME5CS0NKdWhwSkFSTjBOTklDSnFncDVFUU5FRlBJeUZvZ3A1R1F0QUVQWTJFb0FsNkdnbEJFL1EwRW9JbTZHa2tCRTNRMDBnSW1xQ25rUkEwUVU4aklXaUNua1pDMEFROWpZU2dDWG9hQ1VFVDlEUVNnaWJvYVNRRVRkRFRTQWlhb0tlUkVEUkJUeU1oYUlLZUJ2blFoejRFQUZCS1FkZDFMQzB0WWN1V0xkQjFFNE5Ed3dDQWhmazVXSmFPZERxRDJkazV1SzRQMy9maHRKclFkSWFoa1dFVSs0cmdubzlLdVFMUDkxRW9GdUE2SHBhWGxtRGJOcVJVY0YwWEN3c0xLQllMeUJlSzZCL29CNkVFZTUvZWpYUTZoY0doRVhBcGNHRC9ma2dod0FXSFZFQ2xYSVZwR21lZmRkWlpyNnczbXFPNnJvL1p0cFZ0Tmx2TU1IU1J5K2JjeGFVbDEzV2RocTdyWlNWbFM5ZjFsbVdadm1XbGZFM1QzT25wUXczUDg1ekJ3YUd5bEdMSk5FMXVXYlpjWGw3MGxwY3J6b3RlZEdiOXROTk9rN1ZhRmJ0M1B3M0hhVUVwZ2pQT2VCRUtoUndLaFR5MmI5K094eC8vS1c2NTVSYWNlKzQ1eU9kenlHWnoyTEpsQzM2NDQwY3diUk56TS9PWW1weUZabEwwOVJWeDJtbW5ZV0JvQUlQOS9kZzBObzV2MzNRVEpxZW1jTjY1NXlKZkxHTHo1azE0OXBtOStQRTk5MkI4MHhqeXVTeFNxVFFHQm9ld2I5OXptTmkvSDJlY2NRYVdscFpnbWlaU3FSUW1KaWFnbE1KbGwxMkd1Yms1UFBIRUV6QU1BL1ZHQzMybGZyejBwZWRoWm1vYWorL2FCU3RsZ1lKaVlHQUE5VVlkcldZTFRHT29WaXA0L3JubnNHWHJhZGk2ZFJ1eTZReXkyU3dZbzdCVE5zcVZLaWloNE1LSHJtdXdUQnVsdmo1a2MxblVxM1hVRzFVc0wxZVJ6ZVp4enowL3hQZSs5MTMwOVpWUXE5VlFxMVpCNmZySVBtMWQ3cktPb0lSQ0tnVXBKU2dsQTVUUXQ0K01qcnhIMS9WWFZLc1ZVRXJSYkxSUXJTeEQxM1UwNmdJejA0ZGdXelowUTRQbk9xQ0VnSE1malVZZFVzNURLUVZOMDhBWXhlTGlIQ2hsaWxMaUF4QkNDSjh4dUpPVEI2cHpjek1WSVdURDl6M1A5NzBXSWN5ZG1wcGFucHVibVRVTXZUNDFPZG1hbVpueFBNOXR6czdPTE5YcnRicGxMN2RjMTJ1MFdrNnowRmVjSklTNDBkWm9oQkF3eXFCckdnemRnR1Zab0pRaTJUenQyTkVUQkZVQVFBQ21hZkFkaCttNi9qYWlhKzgxRGVNWENhV01VZ0lwRklTU1VFcEMwelJvV2xCMHhpZ01Rdy91b3hRb0pRaHZCOFlvR0F0Nk1pRUVTaWtJSWVIN25BZ2hEQ0VFQU5oS0tTd3VMZzc0dmc5Q0tBekRBR01NakZFMEdsVXd4cURwQkZPSEpwRFA1L0d5ODgrRnJ1dElwMUl3VFJ2NVFnYXZlZTFsT0hSb2VuZTkwZnhUUXVqekJLQlNxcWJQZWNWeHZXcWoxWFNxdGJyRHVaQ2FwcldsWVQ2WGgyVlprRktCc1lESXBta2dsVXBCMTRQbjBqUU5oQkFRUWtBcGJUOUw5UDVuR1M4WVFRT3B4a0JadXdpdldseVlmNWZqZWU4d1RiTXY1Qm1VVXZCOUVUVFFjZjVHMUpCU0tuaGVDNTduUWRNWVVta2JXVE1EUTlkaG1qWlNLUnUyYmNPMFRGaVdqWFE2RGN1eW9ERUdUV2NCUVNnQkZLQVVndnY1SGp6WGhldDVhTFdhbUpvOGlOMjc5NXpkYUhqL2FOc2FGSkdvMTZ0NCt1a25GZGxONjRTZ1NRbHRlWjVmMTNWV2ZmYlp2V1g5d0lTNzU1bmRUcjFhYmRpVzBXZzFHN05sZ25LcjFlS2V6NTFLdVZ3alFMUFpiTTRwcFNvQWhGTEtWMHE1aEpBcUlZUlRTa09pMG9Ea2xDS2RTc0V3RFVncGc5NVBFSHlub3diL0k4anhVMHRRQWtncElXVWdCV3ZWK3VtKzRPOHpUUFBkU21HOFZxdEMwMWhRMmJIYU94RXBvVlNnOHlxbFlKb21Sa2RIY1BiWloyUExhVnNncFEvaGMyaU1BWVJBQ0FIQk9ZUUVQTTlGcTluRThsSU5ydXVpMVd5aDBXakNjVHk0cm9PVzY4RnhQUGkrSDF3bk9JUUlPcEJ0MnpBTUE0QUFBYUNraE05OW9xVE1LcVd5UWtxWXBnSFA5VkdyVlNHRmdPZjdNRTBUNlhRSzVmSVNscFlXMjNYRUdJTmhHTmkvZno4b3BaSVE0aE5DT09mY0pZVFU3cnZ2dmtVcFpZMFE0dm1jdDNSZGI3VWNwL0gwN3QyTDlXcXRhbGxXazFJNkQwWEt2dTgzcFpKMWdDeEJZVWxLMmZKOXp4WGhNRUlvaGE1cklDZFkzeHVGVTBwUUtTVjB3empMTU14ZjgzMytwbXBsN2tJcEpTekxnSlM4UGFTZENDSnA2ZnVCQWFmck9vYUhoekV5TW9KME9nMEFFRUxpNmFkMm8xSXBvOUdvdzNQZHRoUjBYUS9jbDFCU2dnc09wUkNxQ3dxVU1sQ3FnWUNDYWdTVUVlaTZCc1BRajlpWWhCQXd4Z0RHQUFEdHB5T0FaVmtnaENBVjZxTlNScit6K2g1S3FlaTVLQUFUZ01rWVMwc3ArNWFXbHJaRXYwRkFvV2thbkdZVHU1L2FEVTNUWUtkc1NLRUFvckMwdEJpb1BZSCtYUzBXaXMyWG4vOXl4N0tzQmNINXROTnF6bGNJZWRLMnpEdE0yM3FLTVFaSTlZSkwyUTBpcUFJaEZKUzBEWUlSSWNRN05FMy8xY0dCL2tzWW8vRGNKalNOQUdDUVVnREhQWUFISUtFRWRGMFhoQkRrODNrTURnNWllSGdZaG1HZ1VxbGczNzduc2JDd2lHcTFDaTQ0RE0wRVpiU3QwMUZLd1pnT2s1SDJQWU0zd1grQmtDRWdSQU1oRW9Tc1Q3TWRxN0hVSm5ySHVVQmF4KzRuT1NnRjBta0xBQ0NGRDZWVXFCNnBRSmRtaERDTjVRM0R5RnRXQ1VLSXJWSUsrTDZMY3RsRjA5QlJyVmVmTjh6VTF3MWQveHFsOU1BTEtWSFhsYUR4QmhlUzI1N3Z2WTFTN2QyY3E5Y1R3cWpPQ0lCZ1dEelpoNDZrcFJBQ3VxNWpkSFFVbXpadFFqcWRodS83bUorZng5VFVGR3ExR3BRU01FMEwrWHdlU2tVTnpYRzRGclpTSnA5emVLNEQwelJncDFLQUloQkNnWE1GN3Z1UVNvWkRzVUxRSVFrQ0VxTnQwQkN5WXFBRnFzdXBiR2dGS1FGS0EvMVQwN1QyQ01VWUE2VVVuSHRnVEFOaitpcURTM0t4elpIT24zRGYveE9tc1ZzWnBaOWdqRDBkZFpKVEtWVlBtcUJCRHczMEYrNzV6UGY5MXdndWYyTnBZZWx0U3FtTXJqTW9GVWlncURGUFJGb1NRaUNsQk9jY25BY0VMeGFMR0J3Y3hPRGdJRXpUUkxsY3hzVEVCT2JuNTFHcjFjQVlnMlZac2JJQ2dBekxvR0wzRHY0bWhJRG5lYUNVWXRPbVRUajc3TE5nbWd3QWdaQUNuSHVnaEVHQmdOS0FqQUFCOXprODM0WHZjM0R1ZzNNTzN4ZndYQS9sU2htdFZndWNTMGdCYkhUelJsS1pFQUpkWitIb3dFSTNHMnRMNDBpWVJPL2pIb0xJNkFJQUpmamIzWlo4dTVMeW43S1p6RFhGdnVLaEJtMmVNbGZaY1JNMG9wWlNDa0pLYUlSQktYblIzTnpDVmMxYS9UZUVFSU9SdFVncGdWSXl2RUxpUklkeElRUUNGeEJCSnBOQnFWVEM0T0JnR0FDUXFGUXFtSnFhd3ZKeTRCczFqTUJOYzNnbHhvbTVVaGJIOGNDNWoxd3VoM1BPT1FjREF3T1luSnpFTGJmY2lnY2Yyb2xtc3duTE1tQWFadHZDdCszQThqZE1vMjBjR1lZSjA5QkJHVVd6MVlSbG1uanBTMStDVERhTm4vNzBTU3pPVjJIbytvbFd3eEVSUFdzMGdrV3V1T2h6dHlOT3lzNzNrYkJub1pmRjg5eXI5azhjdkVvcWRZMXRXcDhMM0h3YlQ5TGpJT2hLejVNS29KUytQSlBKdnM4d3RIYzBhdlVoMy9laHNhQ1hkdTlkeDk0cWNXbnArejRzeThMWTJCaEdSMGVSeStYZyt6NW1aMmZ4ekRQUHRDMW8zL2RoR0lGcnhYWGRvMFl5b3U4QndQRHdNTTQrKzJ4a3Mxazg4Y1FUK09ZM3Y0bTc3cm9MbnVjZGUvVjBZSEJnQUpmLy9PV3dyVFIwWFVldDJvU21zUTBqWjZCR2FLSC9kdVdJQ0JlWG9ORlFIaWRyaE9oOS9Ed2hCQ2JUd0lYQ3dRTVRmNTFLcGQvWjE1Zi9aVUxvOUVaVDlJZ0VKU0FnTkhCMkUwTGdPSzF0UHZmZlNZbDhwMjZhUHhkSVNBRWxKWFJkQTBCT1d2UkhaT09jSTUvUFkzaDR1RzN3TEMwdDRhbW5uc0xDd2dKYzE0VmhHS3NxTzVJQ1IwTkU2dEhSVVd6ZHVoV1VVdHh6enoyNDdiYmJzR2ZQbmxWbGlmU3U2SGZpZWlTbHRDM2RnY0NoL3ZLWGI4ZXJYblVwempqakRFZ3BNVHM3aTNLNUR0TTB3Tmo2UlpHa2xLdDAvcFhnd3VyaHUxTmF4dXNuK203MFhKMmtqUCtORU1EUUtaUm13UE9jQzh0bDlSem4vQTFRK01tNlBOQWE2RXJRUU5FUEh0RHovUUlYNHRlYTVmb0hwSlRiQVVEVEtKUVNrTkhvVFE0Zk5rOFVudWVoV0N6aTlOTlBSemFiaGUvN21KbVp3ZVRrSkJxTkJnREFNQXlrMCtrVGFtd2hCR3pieGxsbm5ZVmlzWWk5ZS9maXBwdHV4Z01QM0EvUDg1REpwRUVJaGUvNzhEd1BuUE9qM3JOVUt1R1ZyM3dsdG0vZmp2SHhjYlJhRG1abVp1RjVQalNOd1RRdEFHcGQ5YmFJZk5GUUhpZGpSTWk0eEl3VE1FN0M2RFYrWFlUVkJGMVIyeGhqVUZMWnVxN2RZNXJHejNQT2Y2U1UycERSb1UzUUtIVEdPWWZuK1VUVHpEZFBUVTMrcHMvOU4zTXVOQnFTTmpBb09nMmQ5VXVLaXBKV2hCQjQrdW1uTVRjM0YwYUF0QTZENThRYW0xSUtLU1VtSnZaaHo1N2RhRFRxZU5XclhvazN2ZWtLU0NYYWFvWGcwWHNPMTNYYi90WEFZZS9DY1J6VWFqVU1EQXpnb29zdXdzREFBSmFYbC9IODg4KzNBeEc2cm9YbFBEbGl4cDgxYnZRY1NjZnNSc3hPd25YcW5oRTYzNjkxbmFGUnBGTFd2MHFwTG13MG1rK1hTdXZ2NU5keXVWd3dySElmalhvVHBtRmNxV3YwYTYxbWJkQnhIVEJLUUlnT043UkFDUmdVRkNpVlFRaU5kQ3JiUU9CdUlVRHdMN1RibzNmZHNQSlFobWxoZm1FUjB6TXpJQVRRTlIyMmJhL2JBMU1hU01mRnhYcTczSnFtb2Rsc2hxUXlZT2hXSUNrb0E5TllXem9GenhaWXVKRUQzZk04MUdvMVBQZmNjNGNOazVIMzRrUVI2Wlp4NGtYRGVCU2ZQeEk1TzRuYVNjYTRTaFFuWXZTNXM5NDZyd1dBU21VcGZmbmxsLytMNnpyYmQrN2NXUWtEVStzR2N1bWxsMElwQmN1eWtjdGxybmpMVzY3NHY2ZWR0Z1dlNjhQelhIREJ3WDBmcnV1RCt4dytsL0I5Q2M5M0E1ZUt6eEU0ZWpsOHpxR2toSlFDUWdSK1FoS3h0UDJnREVFakE1UVFFRXBBQ0F1SUhzVzdFZmtXUTNLSHZGWkJIQTRJeVhHeXZUVzRYb1h1cDhDUEdid1A3cTNDNUpSdTBqcmU2QnVKdUlzbzdoWmE2VFNySldRM1VxNUYyT2c1MnM3OER2MjY4em03UGJOU0VvT0RRNmhVYWovNDlLZi94eHNPSEpnQVc2ZFVPd0FndXE3RDkzMXMyN3J0N0E5KzhEY2Z1dURDbDZkTjA0YW1NVVR0RXVpa0FWbWtGQ0FLa0pKQVNCbkdzQVc0TDhERFlaSDdQbnpPNGZ0ZTZCdms4THd3ZnMwbGZGKzAvWVdjYzBpcHdyaTJiQk5VU2JURGpaVFFRSXVncEowNnAybmF1dXAwNFpOMk9YZnEzTkp4SDJhbk5SNDNmcnBKekxneDE4MVNqODVGcWx6OHUzRjA2cWZSOVhFMzFzbzFvUkJSQkVORHc3ajMzbnYvNW4vOHhaOS9STmQxV0phMUx1Mmp2ZmpGTDBhMVdrdTkvZTIvZE90TFhuSk9Xa2tKemtXSGk0V0dva3lHdzF4VWtRRFRLQmdZTEVzSHBScG95T2JnNFNtVURDUlVKQlc1THlDbERBa3A0UGxlUUZyTzRYcytCT2RoRkNld2pya1E0TDZIVnNzQllRekZ2ajRzekMrZ1dxMkdrWkZPQTAxMXZIYWU3L3o4d3VOSXhPeTB4bzgwakhlNmkrSi9pKzRmSjE2RWJqcG10KzkzTjZBQzZidXdNSS9YdnZZMVZ6Lzk5Rk9QM1h6VHpmK3dhZE9tSUp2cUpLRmxzem04NXJXWDNIVHBxeTU2c1ZDQXFXa3g1M29FaVpDWlVNRTRDMENHcVdkeFIzdzNpM2NscmsxQVFFQkJFT1JYNm9hR1ZNb0VvUlNVcmc0RlJrT3RERlVHcFNpYVRZNXl1WXpGeFhrNFRoT2VGK1pHUmgwR0FCQW1kbEFTcUJEeGc0Ymh5T0FYT3NwNTZna2JsMHJkZE11MWh2Tk80d2RZZXlqdVJyb0luZWU2cVFUeDd4NSs3Y3BuS1NVV0Z4ZnhnUS84MXQvUHpNdytlYzlQN3Q0NU9qSjYwaVFsVi8rMzM3bDYrOHZQL254ZmNSQ0dhUWYrVE5XOThCMlhybkhMbzBncUZSSDJhSVNJcEFvTlZRd0dLUWtxMVFwOHp3c01GTmVGSDZvSmdWdklCZWNBOXdIT2ZmaStGNmdoUW9IN0hFTHcwTGdKT3RxSzdrVkJxQUlnQXBVaURQV3RHSHF4MTY1RVBqN1ZvTlA0aVR2Uk80MmZ1Syt5VStlTTY0NXhzblpMTEZtTG1KM3QyMDNxcm5XdnpyOUpLVEU0T0lqRnhhVm5mL2QzZi9kbHk4dExqYjYrdnBNaXFiWjV5L2g1NlhRS21YUWEyVndmaEJTUUlqSnlSTnRRRUVMRVl1bEFsQmdSdmFlUmRJcUovcTROZDh5WlFKSEVqZ2psZzFLSy9sSmhSUitMNHNXQjRob21KNi9rYUhMT1F4VkJCa2FjNzRXR0hnOE5QYSt0TTN1ZXY2SkRoNFNYUWdUVFQ4U0tzYVFVQ1QwWGFKT1lVSXJBMEF2Vkd3Q0VIZjVFY1dLdU5uNVl1Mk4wRXJOVG9uV3p3aU1wRyttWW5VWlBOMExHUDhmdkUvOWIvUFd3MXVseW5qR0d1Ymw1Yk5vMGRzYnYvLzd2L2YzblAvLzVYN1Z0KzZUU0tEWEhhZTExZlErRUtQVDNGMk1ORWp5b2tqS1d1U1BiUTY2VUtqeWl6eEdKZzhhVVFrS3F3eDlpMVpDandxU0V0bTY3TmdnaFVCTHdYQitBSDU1VkllSGpsYWtDdllnUm1Kb09pNWdBSVdCdHFRaEVGanNRNUdIS3NOeENLZ2pPd2YxUU54WWkxTWZkTm1ranNrZm5na09HZnRMQWl5R2toTzhGSFl1UWxhSGNNSUxwSExwdWhDU005TXRBaXErbFkzWno3M1FPK2ZGNk9xeWVPK28rL3JsVFRZaDdSNDRrUlFFYzFoRUFnREdDNmVscG5MLzk1VmU5NDZwZnZlZXVPKy84UW4rcEJLYXRGUUkvTWpUUDRYUGM1MmcwNjJnMDZtQWFEY05vTkF4MUVqQkNvWVd1SUVUdEM5cldFeU8zandvbnV5a2xJWldDa2tIS1YwVGdTTHBGYVdyUnNYSmRjTDlJYW5aV0NnSHJHSFlEclRhb3FKVUFnbElVa0FxQlJ5NGFYbGI3NTVRSzhqcUREaExxeHlUUWl3M1RRSmFsMjNwV3ZMR0Q4Z1lkVUVnQndZUE82b2RlQ2NIRmlwRVhFdGgxSGJpT0E4L244UHpJTlVlaEZJT202V0NhRHRvbUd6cUlHUkhyY0YyejArS08vejErdnBORTNkeE4zYTd2ZHU4NDFnb3JLNld3dExpRVN5Kzk1UE9aVE9hZWhmbUZSd1VYYTM3L1NOQW9ZVE9TaHhKUEFocGhhSk1FS216WFdHYjFLdUtFTHZqUVAwa1FWaXhoMENrTjgzMVhELzNSUEpsSUdpc2xBNWRTZUR1bEFna0VrQml4WmV5OU91eHpNUHkycTNGRlNvYkVDM0lHZ2xPMDNkREJkNVJTTWQ5cjFBQUNmaVNrdXlCU1h3Z0JLS05nR29WcDZUSGlrREF0TC9nZXBSUlNCZDRSeC9IUWFEVFFhbm1vVm1wWUxpL0JkVGxzS3hYcW56S3NxeWk3ZmtVdDZKU2V3R29Qd0pHa1pYVGRrUXlmSTUwNzB1ZU8yZ0VoZ09zNE1BMkRYSHpSaFYvZHRldXBDeFlYRjJHYTVoR3U2dzR0bGJZbWhKRGd2Z2NoZkJEU1RWOGc3YVpiclZiR1BvU052QkpKQ0h5WnEyeWwwTVlnVWM5SDJBdFoySnVCZ09oeEtZQVY4a1pPZFNsbHFIcW9VRStPZEU4QnBVaElZaEdxSENLY3pSa040enh3ZlhXRVp6c2xTdkJLUVJSWi9jd0ViUzlINE5GUUNLUjA5d2hLUUs1Z2hxaW1NK1R6V1pSS2ZXQlVneEFTNWZJeVptZG5zYlM0Qk1lcHdiQk02TXhDa0wyUGtMQXIrWmtyVVNyVjFqMDduMkdsL0doZnM5YVEzKzIxODMzbi9hUFJjcTN2UmIvcGM0NTZ2YjU5YUhqNDgwT2pReDg1WWpCeERXaW1yaTFLSWF0YzhCem5Ib0QxQ2lzU0VMcnFZK3hWaFEwTkNDa1FML1VLR1ZlZGFVdm9lRVVIazk1WVc3Y2tJRkFnN1V0VUtKSGIrblNvUzR1MmpoMUl0UlZwSHFnalFvcDJSRXlxRlRWa2RaSnpKeG02U2JEVitwb1VBcjUwNFh0K20xeWxVaDhHQndmUWJEUXhOenVMZzFPVGNOd21iQ3NMUXJSUVAxM1JtVHQvZStYM3UrdWYzVHRlOSt1NnRpSlpuYUYyTkdKMmduTU93OUN1N2lzVmI4N25jdmNlcng2cVVjSVdUZHRhSkJyTmNTa1ExbXFnVjZLckhiNCtXRlhPRmZhMmJaZ3VpY1VBVnZWZUVVcEhvRjNrUUxKRUo3RGlDd1VBeW9MWXVrbFc5TmZvdCtLdTM0RElvU29SNnB2Qk9RRWgxSXJhSVFSRUtNMUZwSHZMRldzL0d0Nlp4a0NKRGlodFZVZFRVSEJjQjVSUVdKYUZNODQ4Q3dQREl6aHc0QUJtWnhaQkdXQmJCcUtJVGR3WVBKTGV1VmJLWERkeUhVMXFIdWw4dCs5MEVwQVFBaTQ5VktybC81WE5aQzdWZGYyNDNFN2E0bkpGMklwTVpNM00xbncyMHh3WkhMU2tFQ0NFS2hCUVR3amkrMTdndXBFeXpOVVVRWU9HVnY0S2sra3FPaWtvckl5UUt2UXdoVkl1ZW9Ed2I0ZEhnRHE2QjBIN3VuZ1ZySzdnK0dlMVVvWlEra2xmSEhHRUlVQ1lHMEFCRXN6ZVpFUURNZUtlaDZnY0s3cXJpaGw2S3g0UFFNa1ZTYTJrZ3VjRjBUS042ZENwQVFyU2x2NmVINFNDTStrVXpqdjNYSXdNTFdML3hBRlVxeldZcG9WdUdleEhNbjY2b2ROSU9aSUVYZXNlVWFqWk5FMDBtODIycXBIUDUrRTREcHJONW1HL296RUdvc2dsKy9kTmZQenh4eC8vaTNnbk9ockkrS1p4TUlFYkI0dUZkNTEyOXVubHpadTNaQXI1WEszVVYrU1diZVd6Nll6b0t4VWFWdHBPRzZhcDU3TzVaaWFkWWxSbnRtWm9VdGMwUlFqVmhCU0VDOTYyYnQzUVdvVlVvY3VKUXlrQkJiWXlESzhJc01OMDFWWDBWSWc1aGxZM1V4ZFAxanFpMDV1d3FtdTBqYkFWSXlabWRZT3VTRXNFMGx2VEFyMnoyV3FpV3ExQVNRWFR0TUxHaWpwQmtFUmoyeGx3TGpBeE1ZR0pBd2VoYVFaTTAxeVZ6TExXa0I2ZDYzeU5reTRlazI4LzBSRWtaZlQ5WXJHSXViazVMQzR1NHZUVFR3K21OOXMyYnJ2dE5oU0xSV3pmdmgzMWV2MndlbVJNQTZXYXZPMjI3NTQ5TlRXMXQxVHFQeVpKU2tyOS9XZzBHbi9tdEZyWDZvYUp3Y0ZCTU1aQ1NhMklaUmhlSnAzMkRkTTBMY05ReFVLK2xzM21kTk15N0dLeFVDMFZDc0syN1h3bWsvYUxBOFY2TnB2Sm1wYXA1M0w1V2phZDFuVk5TNXVXNlp1MnFTaWpobEtLU2ltaEFQQW9GdThMS0NIQWhZQXZCWlFNWlpRSy9tc1RNM3hEVkpBN0lySFJCRDFHdEIyZXEvd2RxOGhFQ1lWaG1MQ3NGRXd6bUJQZmFEU3d1RGdQempsTU14V1NYTFdKYnhnbVROUEM5TXcwOXV6WkErRXJXSFlXQVptRHhqMFdZc1pmSXh5UDFBUUNKN3pqT0ppWW1FQ2hVTUNOTjk2SWQ3LzczVmhhV3NMdTNidHgvLzMzNHlVdmVRaysvT0VQWTI1dXJrc1ZLZVR6QlJ3NE1QbU5tMi8reC9kRXMzR1BCdTBUMTE2TDczLy8reE0vK01FUE1EUTRnSkdSWWVpNlRnS0xXRUZJYVVnaGpKYnJvTkZxNE5EY1hKL24rMEF3cFBWSkVjeVMxSFdEMkphVjAzWE5NSFJkRm5NRm1zNmtxR0Vhc2xnb09NVmlVZHEycFdVejZXYXBWR3htTXBtc2JkbXNyMUNvcHZLMnlYU1dTcVZTVGphVFZwcW0yWlF5U2lrVmhDanFTMDQ5MzRQa0NOVU1EbDl3UUVvUXFTQmpCZ3pCQzhEWXFHSEo2dCtQOU1hbzRSMjNoV2F6RGtJb01wa3NzcGs4OHJrelVLbFdzTEF3RDBwcE9JMGwxTjA0aDFJdGJCcmJoRlE2aFNkMlBRWFhiU0dWU2tPcHVJLzB5RHJsV24vdjVtaGYreEVKY3JrY3Z2ZTk3K0hWcjM0MUxyamdBbnowb3gvRnhSZGZERTNUTURNemc4MmJONlBSYUlBeGhzNjhVRUlJYXJVcXpqcnJ6SGYzOXcvODdROS91T1B1TFZ1MkhGV0thZzg4OEFBcWxjbyswelRiNGNGb1lhN0lVbGFVdGxmRlNLZEk5SFFyRFJNOHJDNkUwSlZTOEtWZ1UvTXpCVDRkT09WOW4rYzU1MUFBR0tHV3BqR0RNYVlidXVIbk1sbmRUbG1hWVJxcVdNaDdmWVdpc216VHltYXo5WUZTcVdXbjdaeHQyNlJVS3RSem1iUnBtS2Fkem1hYTZVeGE2WWFlWnBRcXd6QUVwVlNUVWpJZXVwR0VsUEI4SDU3dmhRR0RNTklWamRreGQwRkVxc2dMMGsyVldBOVFDakNxQVlTaTNxaWhXaTBqazgyajFEZUlmTDZJK2ZrNTFHcFZXS1lGUWxuYjhLczM2aWdWKzNIUmhSZmhzY2NlUTZOUlJ5cVZEZHNJN2JhS3Y2NTFMbzVqSVdjMHRGTktrYzFtY2MwMTErQ0JCeDZBWlZubzcrOUhwVkxCbDc3MEpYenJXOS9DN2JmZmp2bjVlWlJLSmJSYXJjUHVKYVZFdFZyR3IvektXLzhpbDh1Kyt1REJnNnRtU1hRdDR3VVhYQURmOTBmMzc5Ly9ySzdyOXNqSUNMTFo3R0U5NEhpd2xrVVhuZ3c4aDZIYmhZZWRJaVJ5RUkwUkl0VGZBckxvdXNFenFaUm5tSVptR0FiTjU3TDFZaUVQd3pReXVWeXVPVkFxdFN6YnlxZnNsT292RmF2WlRDcGxXS2FkeStmcXVWeVdHTHFlTVExRDJ1bVV6elROVUZBYUVKcG1Vc0QxZ3J6VndDb1g4RVBybklTQ09USzNpQUprcURRSFpWTWdJSkNnNk5DTVFVS3FTd0xRME9jcW9ZS0lrUXIrQ2dKdzM0R1VCUDM5dzhqbENtalVXMWlZbndkaENDY2lCcVFtbENHVlNzSHpQRHo2eU1PbzFocElwM05oRFFXaldEdkJwVXRiUk8rUEo5RjdSYmNPaUh6enpUZWpYcTlqWUdBQVAvM3BUL0grOTc4ZjMvem1OM0hGRlZmZ3JXOTlLOTcvL3ZmakZhOTRCZDc2MXJkaWNYR3g2ejJWVXVqdjc4Y2pqenp5a1FjZmZQQnZSa1pHamloRnRYSzVES1hVSWNiWTgwS0ljNkpGRWVJM1BOWUhpbDl6aEtjR0FjQklFQjgvbWg0U3VwVTBJWVRtY1I4dDE4SDg0a0xCOS94QUdpcVZrMUxtcEZKZ2pBbkxOUE82cHVtNnJpT2Z5OUpjSmtzMFEwYyttM1ZLZlVYUHRpMHRrMHEzQmdiNnE1bHNPbTJZcHBrdkZtdjVmSmFhQnN0YXR1M2xNMW5PRE4wT2NqYW9JSVJTb1FUMWZCK1NTMEFvZUNLTXZZZCtWaWxVTE8wdjFFY0phWHN1RUwyb2VOMUthSm9CRUliRnhUbFV5c3NZR2RtTUxWdFB3L1QwRkRqM1k5S1V3SEZheUdReXVPRENDL0RBZ3p2aE5CdElwM0x0VWVGazljeW92aU5WZzNPT1VxbUUrKysvSDNmZmZUY0lJZmpoRDMrSUwzM3BTM0JkRi8vOHovK01kNzNyWGJqdXV1dnc2S09QZ25PT3BhV2xOcUhYbW9td3ZMeU1NODQ0NDFOS3FlL016ODlQNS9QNU5VbEtObTNhQkVvcGFyWGFyVkxLdHcwTkRXRmdZQUNSRHJvZVV5czJFbkhmM2twTVA5Qkwyd2tjb1VQZUN6T1VLS1ZTMTNWQkFLWXhUV1l6bVZZcVpUUEQwTTE4TGxjdkZZdStaVm01VE5vV3BmNitXaTZiUzlzcDIrZ3JGR3ZaWElicGxwSE9aREp1cnBEanVxNm5ORWFwWVJpY0JkYWx4Z1dINnpob3VVN3dtMHBpeFo1ZjdZZ0RTRGpWSlZnRHl1Y2VCZ2VHVVNvTllYWjJCcTJXQTlNMFFXbTBtQm1ReWVaUXJ6ZHczLzMzUWZpQVphWFF6UVhWN2YzUlFBaHByMDM2OE1NUFk4ZU9IZmp0My81dGZQR0xYOFR3OERBcWxRb3V2dmhpdk9VdGI4RlZWMTJGeXk2N0RQMzkvZmpxVjcrS3Q3M3RiWGo5NjE4UFhkZVBPaHMybDh0aDE2NWQzL3o2MTcvK0cxTEtOY09nSkpmTFJlOS9reER5ZDZWU0NhT2pveUNFdE9kZXg0bTZFcFU1UExxdzBWanJkem9iNEdqUmpuajVwVkt4cVNkUnBwSzNxa2NIdXJnbTByYnRHb2JPZEYzWHN0bHNvMWpJYzh1eXNxbVU3UTJVU3JWTUpwM3JLeFRsMk9pSTdCOG9zdjcrRWkwVUM5VEtwZ3lQKzZSV3FhTHBPTUhDRjFqUmVVRldrOVoxSEJRS0pZeU5ic0hDd2dLYXJRWk0wd3hjVUdGa0taZlBZMjV1QVEvYy95QW8xV0VZK21IQzVGaUpHYzJrcGVHSWR1ZWRkK0xXVzIvRmxWZGVpZDI3ZDJOMGRCVHZlOS83OE9sUGZ4cG5ubmttZHU3Y2lVOTg0aFB3UEE5LzhBZC9nR3V1dVFabm5ua21ETU9BNjdwb05CcEg5WE15UmxFczl1R0dHMjU0eTNlKzg1M3ZEdzBOZGYwZXlXYXo3VUlDMkpWT3A4OU5wOVB0S2EyZEU3WTYwOEU2SXhWUnczZSt4aXVqOC9PSlNPaGpKZXRhMTNiVGt6dU5pc0NPVW0yOW1Vc1JSSldpQld3OXJ6MDVNSW9rR1pyQkxjdEVNVi93QjB0OWNuaHdTSTV2R2lQbnZQaEYvSnp6enRiSE4yMnlQRWcydTdnQTMvTlh4ZEtqMFo4cXdIRWRaRE41akkxdFFhVlNoZXUwQWd1Zmt2QUFDdmsrUExON0x4NS83S2RJWjdLcmVINjg1SXd5K2t1bEVqN3dnUStnWEM3am1tdXV3ZWJObS9ISGYvekhlUGU3MzQxS3BZSmR1M1poYUdnSTk5OS9Qejd6bWM5Z1ptWUdoQkFNREF5ZzBXaTBoZHF4SUpWT1lXWjY1c252ZnZlN0w1TlM4czdWK2dDQWRNdzFmeWtoNUY1Q1NBcFlQYStsMjdUWCtQdUl6SjFURmpxWFcrbEVYRkt0SlpsN1djV0lFSlV4V2wvZjl6dzRyb2VtMDRMbnVNbzJMWC9ybHMzZUsxOTJ2bnpONWE5U0Y3LzZsUllzelp5ZW5ZSDBlSkR4RkdVenF1QitydE5FS3BYQmxpMHZRclZhaGUvNTBJMWcwVjFLQ0RTTndyYlRlT2pCaC9IODh3ZVJ6V1hicVlkSFFxUm4ycllOcFlLRmZyL3puZS9nOGNjZnh6dmYrVTVRU25IVFRUZEJTb2xDb1lETExyc01QL3JSanpBeE1RSERNUERKVDM0UysvZnZ4N1p0MnpBNk9vcEdvOUZlTyt0NGtjbGs4T1NUVC83cDNYZmYvYWxzTm51NEhoMFJOQnJTZmQ4ZkIvQy9LYVZ2V1V2cFhpdjIyeWxwTzljS2lxK0NFWjhVUnNqcXJKejRMTUxPaW4waFZJdjFnQkFTMVZvTnk1VXlVcWJsWEhyQmhjNjdmdjBkZVAyVnIwMHRPdzFqZG40ZVZtVHR0K3NXY0owV2NyaytqSTl2UTYxV2d4Q1IxQTBVaEZUS2h1djQyTEhqUi9DNUNLTk5SNitYZERxTjVlVmxqSTJONGRDaFE3ajY2cXN4UGo2T1JxT0JLNis4RW9PRGczamtrVWZnT0E1ODM4Y2IzL2hHM0hubm5SZ2NITVF2Ly9Jdkk1L1BZMkZob2IyTTBJbkNNQXkwV2kxMXh4MTNuTHRuejU2bkFsVW1wcVowK3FHaU5UY0JuQWJnRndDY0QyQ0lFTElKd0ZaQ1NJNFFZaHd0cE5adDJrRjB4RW04bGtUdU5oKzhNL3U3RTIyOXNrTXF2OUNJbDRGU0NzLzNNVDA3Q3diaXZmV05WelkrOHQ4K3lFWk9HOHRPVGg0TVZtWWpxL1UzMTJtaFZCckN5TWhtMUdybDhEN1JOR01na3lsZy8vN244TUFETzVHeTB5QzB5M3lURUlRRUt3VHUyTEVEMy9qR04zRDY2YWZqUXgvNkVLNi8vbnFjZi83NXVPS0tLL0NlOTd3SEgvdll4MUFxbGZDRkwzd0JlL2Z1eFYvOTFWL2hnZ3N1d056Y0hCcU54a2tUTTFZZXBlczZtWnljL05mcDZlazNSMUs5L2ZkT2drWit5RFVhTmcyZ0NDQUhZQWdCaVljQWJBVXdEcUNQRURKQUNPa0hrRnVMb05IbitHdjhmYWRhMFUwU2Q3N0dTUnozMzBYMzdTWjVPeVZ5L0cvcmlXNkdKYU1VcnU5aC84UkJiQnZmM0xqdVR6L2h2dWJLMTJhZm56eWdTNWVITTFBalNEaU9oMDFqMjFBcWxWQ3BMSWVMemdJSU03WXNPNDE3Ny9zSkp2YnZSeTVYeEZxUEVTMGg5UEdQZnh6WmJCWkRRME9ZbUpqQTYxNzNPbno3MjkvR1p6LzdXVXhOVGVHNjY2N0Q1WmRmam9NSEQrTENDeS9FWlpkZHRwSVFzdzdUaVR2aHVpNHN5L292akxGL2pOZlQ4YTRQMmdnUEFIaXEyeGVVVWxRcGxRY3dES0FFSUl1QTFHTUFOZ0hvQnpCS0NCa2xoT1FKSVhrQVZqZnl4b2Y2STBualR2MjRVeUt2SlkzajkxakxFOUROMkR0UkVyZjFWQ25CaFlET05KeDE1aG1ZbVoxTHYvZi91MXI3eXovNTFQSlYvK1h0eFgySER1amdFalIwOUFNRXBtRmdadVlnYk50RU9wMkY0emlJaG5raEJhVDBjZDU1TDhIQ3dqd2Nwd1hUU2tmSkRLdktJSVNBWVJnNDdiVFRNRDhmN0NGVnE5Vnd5U1dYWUhsNUdSLzV5RWR3d3cwMzRBMXZlQVBTNlRTdXVlWWFWS3RWTEM4dmczTitRdE0yam9iSWU3Qzh2UHhKQUxjd3h0cUxNaHl2QkYxdnBNTmpDTUMyOEhVQXdDQ0FFVUxJR0lBeFFzZ0lBS1BUMkRyUzRnT2Q1em9YUHVpbUozZGJYN1B6dXZqOUkwbHlKSWtNb0YyZjhXejRPQmhqV0Z4ZVJubXg3SDN4ci85bjlaZXVlbFB4dWYzN21BRU5Na3BQcEJMY2M2SHJLV3piOW5NUXdrVThxS0tVUWpxZHg0R0QrM0hmZlEvQXR0TGg3eDFlbmt3bWc0V0ZCVng5OWRYbzYrdkR0ZGRlaTN2dnZSZmo0K1A0d1E5K2dIUE9PUWZ2ZmU5N01UczdDeStjNHIyUllJd0JTcWxLcFVLNEVQL1ZzcXdiMnRPcVgyQ0NIZ3NZVnFSeENRR0pOeU1nOUFBaFpBQkFIa0NKRURJTWdNVWxiS2NLY1NUREw2NGV4QmROT0ZiOU9INXRITkYwazA3ZE9GNFd4aGptRnhaQUZCcTNmdU1mL0swdlBiTndZT29nVEdoQjRKUklnQ2c0TFI4ancrTVlIQnhCdlY1dE8rK2pyQ25iem1Ibnp2c0RxejZUZytxeW1FWTBmLzN4eHgvSGpUZmVpTm5aV1R6NzdMUDQ2RWMvaXJlLy9lMlluSnhFS3BWcUJ6MDJDbEY3Q0NIUWFyYWc2eG9XbDVaMmZQbkxYMzZ0NHppQlcrMC9BRUdQRlRvQ05TSXVoYmNoVUN0R0FBd1RRdnBDL2RoYWEvSllOMUozZnErYlJJNFROdTVYakpKN0kwZDR0SEowNUMvczdDRFBUMHpnMWRzdlh2N0cxNzlzemp1VmxGdXJBNFNGUGxMVm5pYTlkZXRaTUUwVHJWWXpKcGtsYkR1RlpyT0ZIWGYrR0p4TDZKYldOZXRGS1lXQmdRRk1URXpncnJ2dVFuOS9QeTY1NUJLa1VxbjJjcE1iNmQ2TE9uU3IxVUtyMVlKU0NvYXVnd3VCSFR0MnZLelZhajF1bXViUEZFR1BCVG9DS2J3WkFXbUxBRVlSU09nUkFKc0pJZjJFa0NJaEpBTkFYOHZJaTg0ZDZUVWliN1J1Zmo2ZlJ5NlhBMk9zWGM5eEF5NjY3dm45KzhXZi9kNUhLeCs4NXI4V25wNTRuc2JuS1JBU0dCVHBWQjVidDU0SjEyMkc5NGs2bkVBcWxjZVRUenlCeHgvZmhWeStnTFh5c3FTVXlHUXlTS2ZUN2JYK28wMGtOaEtNTVVncDBXZzAyc3UxQit0NFNlVHlPVXhPVGw3MzJHT1BmU3lkVHYrbkkraXhnQ0JRR2VMSENBS1BSVCtBQWlFazBwSDdBV3dpaExSRElFZFNMM1JkUnlhVFFWOWZIM0s1WEhzQnRUZ1lZNmpXYTVBdWIvelRWMi93dDI3L3VjTGtvVW5vaE1VeXFSUWN4OFB3OERnR0I0ZlJhTlJpQkpWZ1RJT202Ymo3N25zd083dUFUQ2JibnZiUzlZRko5OFNPOVVaRXpHZ0JZQ0ZFb0E0UjBqYm9MTXRDdmQ1NC9tdGYrL3BaeldhREp3UTlPUkFFRXJnZmdXUWVScUJTYkVPZ1pnd1RRa3FFa0NGQ1NDRSs3QThPRHFLL3YzK1ZDeXFlZS9ucy92MjQ0aFd2V3I3aGhzOWJzKzZ5elJzZUZLSGhIQzhWcnNtcWNQcnBaOE95TERTYmpiWStLcVZDSnBOQnVWekdqaDAvQWlFQllWZW1ScC9heUZ5a3ZuRE8yMUdud3owblVRY2k2T3NyNGZiYmIvK1ZuVHQzZm85Rnlja1JObG94L2hsRURjQXNnSDBBZGdINENZRHZBL2duQUg4UDRIcWwxUDlXU3QwaWhMZ0hnV0czSlpwY2xzdmwyc1pUM0NMUDUzSjQrSWxkK21pdXIvbnpyN3ZNbXE0c0V5MktOTkZvODloZ2g3MTh2cmhLUWhJU2JFU1J6ZlpCUVdCeTZpQk1JeEpFcDVhY0VSRWR4Mm5INnVNTG9xMGd6TEJWQk1FTzFnWmMxNzAxSWVpcGdRZGdCc0JQcFpUL0lLV2NvNVMrS2RxcEpKUEpIR2JoYTR5Qk1FSWYrK2tUL0EyWFh1WU1qQTFaMVhvZGpOQWd6eFNBeGpRMG16WG91b2w4dmdqWGRXSU5yNkNVd01EQUFPWVg1bEVwVjA1b1pZK1RBV1BCZWt6TlpoT080NndLaXgrT2dLQ0VCS080WlZsYng4Zkh2NVlROUFXQVV1b2hJY1RqaEpCZjgzMi9uWDhacjN1bEZGS1doWW5wS2JNeXY5ejhwVGRkUVdyQzFZZ3ZWcTBkRUVpbkZ2TDVZbWg4UlNGSUFpNThtS2FGYkRhUGc1TlRVR3J0OVpUV0V4RVJQUzlZNXNmenZEV2s1cXFyRUFVZUFoZWNNckw1d2xNSlFWOEFoRTdvM1VxcE9VcnBtempueUdReTdjaFpPNThCUUM2YnhmMlBQc0pPSHh4cnZQS3lWOWh6NVNWb0lGQmhZelBHNEhrdWZOOURzVGdBSVRpaVlad1FBdC96VUNqMEEwcGk4dUFVTERPMW9jK21hUnFrbEtqWDYyMzNVYWRmK0dpSWpEYkIxYk1KUVY4Z2tDQjc3Q0ZLNlVWS3FUTVpZNGNOOVVCQVFGOEs5c1FUVC9JckxyM2N5NCtVekhxekhpNkNGcEZVUTZOUmhXbFl5T1VLc2FFKzhpUUlGQXNGek03TW90RnNRVGZXZjVQcnlMaHpYUmYxZWgyYzgyT1FtbXVERUFJb01wMFE5QlNqczhHa2xQY3h4bjVMQ0tGYmxnWFROQS9UUjdQcERKN1p2OC9rMVdianJXKytnaTA1RFViazRmZHROdXJJNTR2UU5EM2NVVG9nc1JBQ2Rpb0x5ekl3Y1dCZlNKejFHK29qOTFHejJXelA1anhaVlNMMFBCMUtDSHFLMGVrYlZVcVZsVkpWUXNpVlVrcGtzOW5EOG1HRE9Ic0tPeDkvalB6Y2x0TWIyeTg0MzE0b0w2K3MxNG9nT3lwWVZGZWlXT3dINXg1VU9ET2NFQUxPZlpSS2cyZzVEY3hNVDRlNzM1MmNSUitGZGVOU3Mxdml6WW1DRUxLWUVQUVVvdE9KSHpXa0VHSW5wZlFTSWNUcHBtbTJkM0dPdzlCMTFKMld0dnVwdmQ2YlgvYzZiaFV6aHROcUJjdU9Bd0FVbU1iUWFEUmdHQ1l5bVF4ODN3TUpMYXJBeDByUTM5K1AyWmxwTkp0TkdJYUpFeVZwRkxZTjFqb05wT2J4NnBwSEF5R1lTd2g2Q3RGdDJJdVI5RUZLNlc4SklWZzZuWVpoR0lkSjBXdzZneWYyN0RZMVNScHZ1dklYdEhLdHpJaFNvY0ZFMnJQd21zMDY4dmxTZTRXUG9ETUVHMHVrVWxsa01oa2NQSEFRbE9yaFVIL3M3UjBsME1RdDlQV1VtaXRRSUVUYmx4RDBGS0l6YXRReHlYQVJnZFAvQ2dEdCtIaG4xbE1xbFNJUFBQb290cDkxZHZQczg4K3o1eXZMMEVEYmdwQlNCczhOU0pQUDk4SDMzVlU1QWo3MzBGZnNoK01HRzk0R3Z0RmphKzlJUXNhbDVzYVFNeWlya09TSmhLQ25BTjJHOW02SEVPSUJTdWt2Q0NIR0RjTm9wN3pGWVJrR3lyV2EvdHplZmM1YnJyeENFbHMzdU9PR1U1ZFhYRS8xZWdXcFZBNjJuWWJudWUwd3FGSUtqRkwwOVJVd05UVUoxL1dPdW5oR0pEVjkzMGU5WG05bk9tMWt0cE9VQXVsMDlvY0pRVThCdWszVlhrc2ZWVXJ0STRTOEo4bzBpdnlLRVpSU3lPV3llT3pwcDh3Y01ScHZmTVByakxsYW1iTFlVdVdNQnR0VXVxNkRZakdLOTBmcGZkRlFuNE5VRWdjUEhJUmhXRmlMYS9Gb1VCU3EzQ2lwR1g5R08yWGo0TUhKTHljRTNXQkUwdWRZSkNpbEZFS0kvWVFRVXlsMVdXVFZBeDN6OXhWZ1doYlorZkFqOHNKenptdWVlZTZMN0VxbEFvWWdtVVJCUWRNWVdzMEdsQUtLeGY2WXdSUUlXeTQ0Um9iSDREakJVTitaTkJTVk8xcUlJZEkxTnpZU0ZTalJ1cTZCVWVZODhPQUQxeVFFUFFWWVMvZGM2eEJDL0pneDlrN09lWjlsV2JCdCs3QzBQTnV5TUxlOFpFd2RPT1QreWhXL3FJU3VkT0dGRys5UUFxSUlORVpScTFlUlRtV1JTbVhnZVc1b0ZGRW9LY0FZeGFheHpaaVpuc0h5OG5LYnBCRUptODFtZXhYbGszRzZIeHVDblZnb0pFWTNqZVBwWjU3OTRnOTMzSFZ6UXRBTnhnbm1Xa29wNVg3RzJLOUhValJ5aGtkUVNpR1h5ZURSSjUvVVN1bHM0M1d2ZTYwNVhWa2lsSkQyL2lXRUVpZ3B3MWg5WHl6anFlMDVnR0hZR0I0WndkemNMS0pwRmxGYW5PdTZwNENZN1FlR25iTFFQekNFKys3ZitTL2YrYzQvdmFkZWJ5QWg2QWJqV0Eya3prTksrUXdoWkxOUzZuekdXTnVxNzd5M2J1ajBrY2QyaWNzdnVyZzF0bVhNcXRUcTBFS1hreVFFakRLMFdnM29tbzU4dmk4TWd3YXVKVUpXc3YwM2pZOWpkaWFRcEk3anROUGlUZ1dFa09qdjd3UFRkZno0eHovNTg5dStlK3R2elMvTUk1OHZKQVRkYUp5TTlKRlMza2twL1hYZjk0dTJiUjhXQmdVQTI3SnhZUHFRc1RROTEzckhHNjlFSGI0dU9JOXRaeEU0NkZ1dEpuTFpJclJ3NVRsQ2dvWElkRDF3MXV1YWhrT0hwbkhvMEZSN25ZR054Y29PZ1pzM2IwYWxVdkd1L2FOcmYyblhybDAzakkrUHczR2NvQndiWElyLzFEZ1pjb2FxUWNQenZHczh6OFA4L0h3N0FTTU96amsyajQzaFgzYmNsZjcydDI5cGJSMGVnMVJxVlh3b2NCRjVPRFI5QUpxbWcxSVc4Nit1dUo5ODN3VmoycnJHNmRlQ0ZENHN5OFNXMDdiaG5udnVmZlNESC96ZzZVODgrY1QvR1I0ZWdxYnI3YlZXRTRKdUVFNTBhTyswNmpubi84dzV2NjNSYUtCY0xyY1haNHYvanM0WThzV0M4ZG12L3EzeC9LNDkxWkhCUWZodFNSdGtxUnVtaFdwdENjdkw4K0VhOXl1NktCRE1DRlZLaExIN2phV0ZFQndEL1gzb0h4akFsNy84NVM5Ky9PTWZlL255OHZKa3lyYkRxVW14cFlJMnRDUUoxZ1d1NjE0amhHaVZ5MlhVNi9YRGhsK3BGUG9MQlV6TVRHZisrbSsreUxPYTdXaVdCaEozVFJGQTAzWE16aDZDNXprd1RYdGx2WDVFbm9hTmZZNWc2UnlGOGZITnFOWWI3dTllODN0disrYU4zL2dkU2dpS2hjS3E4a1JJQ0xxQk9GNzNVcmNqTkpnbVBNLzdlS3ZWYXEvOWZ0amlFRkppODlnWWJybmo5dlJ0dC96L3JXMURZeEFxYnZVRGpPcmczTVBNekdRd2Q1K1NWV1dWTXI2NTZ2clhoYTdyR0JzYnhhT1BQdmFUajM3MER6Yy84c2pEdHpGTmcyR2FYY2tKSkFUZEVLekg4TjQ1MUh1ZTk5ZSs3LzliclZaRHBWTHBhbUVidW81VU5tMSs3c3Rmb2RQN0RsWDcranMzeTFJd1RBUGx5aElXRitkaG1xbFZVMHcyWWxFd0FKQkNJSk5KSTUxTzQ5Ly8vZDgvZWYzMVgzalYxTlRrSEdQc3FOMGhJZWdHWVQya1oyZENpZWQ1SC9aOTMxdGFXbXBidVJHSlF3Yy9oa3I5ZUdyLzgvbnJ2L1MzWWloVDlLaE93WUo5S3dFQUJCUWEwekEzZnlpTUxvVlRsWldBaEFBaDZuaVNtNDVjQjJFOTlQV1hzTFJjWHJqOWpqc3V2ZnZ1dS8vTU1BeGtzOWxqNmhBSlFkY1pVWWl3YzJtY2t6MUNpYm5IOS8yUHRWb3RMQzB0ZFhVSENpRXdQanFLYjMzM3UvYS8vY3NkOWExam0rQXFzZUowVWdEVEdJVDBNVDkvQ08ydHhTV2daSFMvOVdFb0FXQlpGbVptWis2NGE4ZU96WHYyN0wxM2JHd011cTRmc3lzekllZ0dZR1hINC9VOUNDSHdmZit6blBQN0s1VUs2dlY2TzVram5uQ1NzbTNBWk5iLy9KdnJXV1Y2dVo0dDlRSFI5cEloVTNWbW9GSmV3c3owWkZocUNpWERlVTdrNUFrYWRDeUdlcjMrUnorNTV5ZFhlSzdiS2h4aHU1azE3M1BTSlVsd0dEYUNuQjFEL2NkOTM4ZkN3Z0o4MysvcUd4MFpITVREVHoyWis5SlgvdDRiei9iN29HeVZsVTVvc05udGNua2V2dStDMHNEVmRQSmhUUUpDR0tURW9oRHFGUzNIK2JSaEdJRnZVeDIvanBzUWRCMXhLbUxXWWQ3b1haN25mU2F5NmlOREtvSlNDa3BJakkyTmtuKzQ2U2JyeDNmc3FJK1BqWUlyc2FyQkNTVmdHb0hyTmNHRkM2WDRTYmlhVkJpZFl1Q2MzMTZ2MXpZcnBSNWdsSVg3UUozWWpST0NyaU1pb3B5S3cvZjlhNFVRejFVcUZkUnF0VlZTbEFUZWRxUXRDejVrNnJOZi9BcHhscHVOZkM0SEtBNkNhSnRIQWdVRnpqMTRUcFRwZER4WVdXNkhVZ1pLTlhBaC85QjF2U3VWVXMyZ3c1NmN1cEFRZEIxeEtpUm83SGNjMTNVLzdQcytscGFXSUlJZDlGWjlUeXFGc2FGaC9PaWhuZG0vKzd1dk81djZoNFdQa0ZZa2tLRGNGeENDQjV0bmhESDY0NEZTd1lwMGxHcUxsVXIxRlp5THYxelJoOWRCbHozcE95UUEwRjZJNFpRZEFNQTUvNysrNzMrdDJXeTJ3NkNkWlZKS1lYaG9pTjF3NDQzV1EvYytYQnNmMlFRaGcwZzNJUVNXYWFKU0xtTzV2QVRhM3Q3bTZBaHlSRFZrc2xuczI3Zi9qbDI3ZG0xaGpENUFLVmxYWDM5QzBQL2djRjMzRHp6UG0xOWNYRVM5WG0vUEw0bzc0UFBaREpicnRmVG5yLytTdEh6V1NxZFM3VGxLM09kWVhKeEZyVnFCYmRrNEZxbW5sSVJsbWlDVW9sSnQvTkgrL1JOWExDOHROVktwY0ZtZGRReVpKZ1JkQjV5cW9YMk4zNTJQTXA2aWpiVWkxMU1rYVlXUTJMeHBFKzY0KzBmWm0yNjZwYlZsZEROOHowVzlYc1BpOGdJV2x4WXh2ekFIRWk1bGZqUWZaU3FWaGdJV0gzcndvVXYzUHJQbjA0VkNBYVpsUW14QUpDb2g2RHBnSTkxS3grSjJFa0o4aTNQK2Y1ck5KcGFXbHRycjQ4ZjlwN3Ftb2RoWDFELzNsYS9vVDk3M2FDVnRwYkMwUEkvcTRpSnFsUnJtRitiZ3VuV1lsZ21sRHU5d3daRE9ZRmttS3BYYUhmdjI3ZCs4c0RCL3IyNFlnZTY3UVlrbUNVRlBFcWZTY2wvcklJVEFkZDMvN3Z1K0xKZkxhRGFicXlicVJVdnA1TkpwUEwzLytld24vdmpQcGNhVkMwcFFyMVRndVI2YXpRYVdsaFpnNk93d1Ewa3BCZE8wSUlUQTlQVE1IKzdldmZzS1F0QTBUZXRFcDdRY014S0MvZ3dnTk5DZThEenZ6Nk9oSGdCMFhXOGJiNjFXQzh2bE12cXlXZHgyMXgzWkc3NzZkWCs0cjE4MXBJOW1vd0hwZVppYm0wRzFzb3lVYllER3RsTU05cXVuTTd0Mzc3NTQ3OTVuL3pKWVA0cGh3OFJtRE91L0R0OS9Nc1NIMmhjYXZ1OS9pakgyaTdWYTdlSnF0WXBDb2RDZS9PWTREbHpYaFJRU21tRm9mL1c1THhpand3UE9sdk5PdDU5NTRtbEk0YVBWYW1Idm5xY3dQTHdGL1lPanlPVnlBQlFtSnZaLzhkQ2g2YXNkeHhHR1lheWJDK2xZa0JEMFp3eXU2LzRPWSt5aHhjWEY5cDVNclZZTG51ZUJjdzZsRk5LMmpVcWxZbHo3WjlkNTEzM3FXbTlrWU5CNDd0bG40VGd1NXVzVlRNN09ZN2gvQkFyWVo5dnBYN050ZTJlcjVjQTBUWEIrK01aZ0c0bGtpUDhaZzFMcVljZHhmci9SYUdCaFlRSDFlcjI5TVpjUUFwd0hUbm5Mc3JCWUtSdC8vQmQvcVdhZW5mVEhTOE9RZ3NCcmNVd2ZQSUE3YnYvWFQ5OTg4MDNiOXV6WnU3TlFLRURYTlp3cXFSbEhRdENmUVFnaFB1TzY3dlhSd2d2UlZvelJ2a3pSZTBJSXBoYm56VC81WDU4VE8vN3Rub05lclluNjdOS2U1Y21GbHpTYnpoOWxNaGxrczlsd1c2SVg1bG1TSWY1bkZKenpEeXVsYnZZODd6SkN5Q0FoWkVncFpVb3BXYWczTjVWU1ZRQ1Y1VmI5cVcvZC92Mjczcno5RWovZG42dU5idDdVYUIwOEVDNUk5c0xxMTZSWEZQd0VDYm9oR2VJVDlEUVNnaWJvYVNRRVRkRFRTQWlhb0tlUkVEUkJUeU1oYUlLZVJrTFFCRDJOaEtBSmVob0pRUlAwTkJLQ0p1aHBKQVJOME5OSUNKcWdwNUVRTkVGUEl5Rm9ncDVHUXRBRVBZMkVvQWw2R2dsQkUvUTBFb0ltNkdra0JFM1EwMGdJbXFDbmtSQTBRVThqSVdpQ25rWkMwQVE5allTZ0NYb2FDVUVUOURRU2dpYm9hU1FFVGREVFNBaWFvS2VSRURSQlR5TWhhSUtlUmtMUUJEMk5oS0FKZWhvSlFSUDBOQktDSnVocEpBUk4wTk5JQ0pxZ3A1RVFORUZQSXlGb2dwNUdRdEFFUFkzL0IwbGJ5WTBaNitOT0FBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMSIsIkZJRE9fMl8xX1BSRSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiOWViODViYjY5NjI1NGE3MjgxNWQwNDg3ODMwY2NhYjIiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsInV2IjpmYWxzZSwicGluVXZBdXRoVG9rZW4iOnRydWUsIm5vTWNHYVBlcm1pc3Npb25zV2l0aENsaWVudFBpbiI6ZmFsc2UsImxhcmdlQmxvYnMiOmZhbHNlLCJiaW9FbnJvbGwiOmZhbHNlLCJ1c2VyVmVyaWZpY2F0aW9uTWdtdFByZXZpZXciOmZhbHNlLCJ1dkJpb0Vucm9sbCI6ZmFsc2UsImF1dGhuckNmZyI6dHJ1ZSwidXZBY2ZnIjpmYWxzZSwiY3JlZE1nbXQiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjpmYWxzZSwiYWx3YXlzVXYiOnRydWV9LCJtYXhNc2dTaXplIjoxNTAwLCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjgsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTkyLCJ0cmFuc3BvcnRzIjpbInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XSwibWluUElOTGVuZ3RoIjo0LCJmaXJtd2FyZVZlcnNpb24iOjIxMjIsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjoxLCJwcmVmZXJyZWRQbGF0Zm9ybVV2QXR0ZW1wdHMiOjUsInV2TW9kYWxpdHkiOjIsInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjoyNX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0wOS0wNSJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjQtMDktMDUifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyIwNmFmNGE0ZjA1YWNhMDMyNDBkZGM2ZTk4NmVkZjc4OWU1NWE5YmQ5Il0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjA2YWY0YTRmMDVhY2EwMzI0MGRkYzZlOTg2ZWRmNzg5ZTU1YTliZDkiXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IklERU1JQSBTT0xWTyBGbHkgODAgUjMgRklETyBDYXJkIGMifSwiZGVzY3JpcHRpb24iOiJJREVNSUEgU09MVk8gRmx5IDgwIFIzIEZJRE8gQ2FyZCBjIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjExMDc0NDg4MzEsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH0seyJtYWpvciI6MSwibWlub3IiOjF9LHsibWFqb3IiOjEsIm1pbm9yIjoyfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQ3hEQ0NBaVdnQXdJQkFnSUdBT3JBQUFBQk1Bb0dDQ3FHU000OUJBTUVNSUdFTVFzd0NRWURWUVFHRXdKR1VqRU1NQW9HQTFVRUNBd0RTVVJHTVJNd0VRWURWUVFIREFwRGIzVnlZbVYyYjJsbE1TTXdJUVlEVlFRS0RCcEpSRVZOU1VFZ1UyVmpkWEpsSUZSeVlXNXpZV04wYVc5dWN6RXRNQ3NHQTFVRUF3d2tTVVJGVFVsQklGTmxZM1Z5WlNCVWNtRnVjMkZqZEdsdmJuTWdMU0JTYjI5MElFTkJNQ0FYRFRJMU1EZ3lPREl5TURBd01Gb1lEekl3TmpVd09ESTVNakUxT1RVNVdqQ0JoREVMTUFrR0ExVUVCaE1DUmxJeEREQUtCZ05WQkFnTUEwbEVSakVUTUJFR0ExVUVCd3dLUTI5MWNtSmxkbTlwWlRFak1DRUdBMVVFQ2d3YVNVUkZUVWxCSUZObFkzVnlaU0JVY21GdWMyRmpkR2x2Ym5NeExUQXJCZ05WQkFNTUpFbEVSVTFKUVNCVFpXTjFjbVVnVkhKaGJuTmhZM1JwYjI1eklDMGdVbTl2ZENCRFFUQ0JtekFRQmdjcWhrak9QUUlCQmdVcmdRUUFJd09CaGdBRUFDZThqZFNuVlRLdHprZ3NDS0pGdWlwV0w5dVVpenNScjYvaVRDZStES3JuMDJTbnBzUEhaeW80V1o1OHBVdTY2VDZrdmZCOGFHQTVpN2VxVUpTZ2hRdEdBRWJmbGRTekdJYnRXdlhQaEFqRVJleWZTbjNieG9FQlJmcHQxeGgybDFHSld0Z0VxNllJOVNxa0NJWFdCcDFSM3g2aWFiRTlIVzNPWUZRSURybUpVdUUwb3p3d09qQWRCZ05WSFE0RUZnUVV6K29kRVJ3VkVLTTRWZitzUFVQQ3B6VmV5UzR3Q3dZRFZSMFBCQVFEQWdEL01Bd0dBMVVkRXdRRk1BTUJBZjh3Q2dZSUtvWkl6ajBFQXdRRGdZd0FNSUdJQWtJQk8vbGVqanRwZmFyMHFsMDNTaEdmTVBPUERUeEhFWmRVclBTaXdkSThrb0lrcXRYZ0IvcWJvOFJ2K09DQiswdmVCc3NpNkpQOXJISWhlc2ZYZVJDNURjSUNRZ0d5Y2pvcnVLdzFDOHM0WDNqbGRXS0JSK0RVYzhUVzBpeEVnSjFXU3JtNkozdWxTd3c2Y0Y1MXplZkIwT0FodkYvaEE0Sjg3bnozeHVjRkwxS2JxakljblE9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFESUFBQUF5Q0FJQUFBQ1JYUi9tQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUZpVUFBQllsQVVsU0pQQUFBQW9yU1VSQlZGaEh6VmhwY0ZQWEdkWHlubVF0WGlYTCswSWFzTUhHT3dZYkVsSktnRWtDQWFZTTAweWJNbWxMS0FOaG44bkNaZ2dwNUEvVWhJNHpoTkRTYVdjS0pHeUZNS0dCTkhIeGdvMXRHYk1iYi9LK3lKWWxXY3VUMUhOMWhWQmtXOUlQWW5MRzR6bnYzaXZkODc3dGZsZDhoOFBCRzRYR2UxMTFsWnJlem1IT1p1ZnpYWU5QRXc0ZXd3cGpFa0t5WnlYRkp5bGNneDd3bG5YODhIZkhEMTAzNmkwU0tTc1FDbjRVVFU1Z1d4dG5IekZhSTFUUzlUdCt2bVJscm12Q2lTZXlCclhESythVUdIVFc0RkF4Qk5IQkNZRE5aaC9zTnlaUGlUajUzelU4bnBBT3VtUjF0dmN2U2k5V3hRVER0blJpZ21FMmNVYWp1YlI1R3lNVTQ1SEtzczlPM2krVGlZWE14QmxwTkN4bVRoYk1ucit4RVp6bytHRHRhU0h3VERVQklqSFQyMlU0ZnZnYU9OOWdNTXhPL0RncU5vVC80NFYzd0xEYkhickJrYksyRHdRWFQ2bGw4cUNmZ2laQUlPRGI3YnpLNys4THA4UXM3R3pUUFhNUFBvSERFYTZTQ2pvMXVzRExBWXlNZk1ZZnpWLzg5M3gwTHdEb28rT0g2d01CeEhScGhnUldDeGVnQTdFbGtnVVZWaXhtZUh5U3dwelZMZ0FRQWM1SExCQUt5YVBEd1NkUzdBNUVNWjZ4eERUQ0JhZ01YMld4WUJkZVFLTHdwVDJkdXJQbDZ5L1hiNzVRdldGNGNNUnFzVDJYb3J5czNvUVJoVXFHa20wWU5tL1pzeENQWDkvYXJPMHpjSnc5UGpuOHNub3oxaXg5SThlZ043dSt5eC80ZUJFWDlRZlRpUFcxbFJtaEVSTHdOVXRQaUlNWW1HcDZYanlkZlhTdkYzWmlSY0p2djdwRFI4SVVVcUdRWDFuYVZQYk5Renh1TEpwdjQ0ZzU2YXhmQ0FKWkNGUDE5eGlMaXBlQk56L3NxeWg5SkE1aXJWWXVMVE1PSTIyUCtxMVdHMS9BWjFoQlExMkg4eE84eWRPaVlLMEloYXhvNDNrNjhzZDNYOUxyVEpUN2d6MGdhK0hrL3UyNkFvR1F1SHY3MjJjVWtUS1FFWU0xdHpBWlJGMmxFWWtZRUJpc28yVUlCRWpQam9OV0pQamdnUEdyTCtveDhwdTFoZmk4T3h0OHdjRkRiUGtCaVhRTHQzWGZJdkRxMHBZNzlSMnNpTUdnUERnb1ZFRjhXbjI5RmU0RFFiUWl6aC9lN2diUG1aV000QU1KQ1pmczMzWUpCTmg1YU1uZ3dBamx2dUhmaWJEODZzMHZVYjVueTdrSUpURVZ4OWxTTTZMcDRPMmI3ZXpqQXg1bVU5L1FnR1RPVElBNVFXQkNLMmY3UjBrWitJSmw2UXFsSE00bFMzM0NqeFB0Tmp1Kzk2M05jOEN2bkd2b2F0UFJGb096MkxObUpqaVg4TzdXZHdsWjEvZkFiRFVWclNBU0dhdFV5ZkJ4OE9EUW9FLzJYWFhPODNZWHY0NGtwZHdIL01nYUdqUnQreE54SDdCbnc0VXdaeVlDY0N0Tnc1WUhBNHpvU1pXQjJXckxpU3hnYW1Zc05ReEtGN0xoNEk0cjRQbHpKMDFKaTZMKzlRRmZzbEFTWlRMUjRwVlo0Q2MvcjBUMXB1Y0IvTTVaYkhBVGVFMUZVNUNFSmF1ZFFJeTNOZzFRbnBtZjRONWVKaGVmT0ZKS2VkSGhwZjA5dzVTUEIxK3l0SDNHUFVkSVVRQU83YjRDWDFCT3luY1FFeG9tQmIrajdvSWw2RGdGcHU0M2RJRk16NHVEVWVrZ3NpRlVJZDIxL2l6NDVMU28zTUpKT0REbzFKZ1lWeGJTTzNteVl2Yjg1OEUvK2ZBYjJBbStvRk0yenBhU0ZrTjVUWG1MTzk0cFVHbnJiclNCWk9Rbm9PUzZ6eHdZOWNJL2F3ZTZTV0R0UDdvY2hjUEhjVFN1cklGZWZkR2ZsMUorNHNoMWVURHBaU21zMWlmeGprS0ZuS0NjQWlyVmxVU1dSQ0xDbjN0ckdDeE1LZDIxZ1JoTUdSMHk3N1ZwYUpUcDFHaU1MUXNXeGxWcFdrNHMrSjUzemlPdDhLVjBDc0JzVm40aVNQT0RQcFBKaXZwT3h5bmcwOXMxblpSbjVzRmdUNkliSi9mMXF3OWJHdnZCOS8xbEdXNFc0eGxzREZsWWlWcDE0TE5mZ3ZmMTZFK2ZxSkpJUlhRS2NQQWNOcXM5NzRVazhPclNaczk0cDREeE5DMWFXaHF5Q3hJUkRIUWN3THVGSzJUYlZwMEVSd2orWWVzTHVKRFJLUytNYVMwSFBxK01DZ2JyYU5IU3pvVk9FRGg0ZkFGNWIxQ0QzZ0krR3VnbTBNbUF5RVBGWHZiQUNZWjJpdkw0NUFna08rVmVHT05iSVNKSXl1NVlld1k4WTBaQy9weEpabytzb1JMVmxhU1U1eFltbVl6ZThZRnpLVG8rUkNvbkJxNHFiZlpLQ0dUMy9xUEVEOEJIV3kraWNGRHVoYkZqQzY3NTk3OXFCM3BKMW53MEttdkVFcmJxZjgwZ2FibHg2RjY4N0lIc1F3bWd2TGFpemZQaUNZZE9TbEVXT3JPN3VPZy9ySmcwalhUS0MyUExJa0dnbE8xY1J3d0dieTVZa2thZFFvR2RibFczVTY2S0NiSFpmaUFMZStjVWtNaURYTzJBM25OanZPZnVnNitEb0pQOWUwa1picVowZkRUR2xnVWdlc3F1TmlMWHdGR1gwWTY2cmNLeUF2Vk40a1FnTXovT005Y0FxNWxMenlYblVrTk51NUFSdXVNUytadGI0TXJ1dlpzdVNtVWlyeFQyeExpeXFNSGUrLzFwY0xHRWVXUE5US1BCNHA1Q3FxSU5CRS9OOEphRjVNcWVTY3BIWFVXYnlObndBSGlsL2g0OTRnSGNvRE9mL3VzTkZCMDZOU2JHbFFXZ0hiaC9wN3Vtb2dWOHk5NUZ3MW9UTlJoa01Zd0FjUU9PcVBlc2lxZ0xTaFZKWVFBZER1M0RBS3laOThyVXlLZ1E4QjNyemlpajVMN3ZFTDVrQVJHUnNxTDE1eWpmc0hPK2JzalY5Y0xGTkx4U00ySThreEdCbFQzTGRRRGNxbW1uOFk2WHdWMzV3eEp5dkdxYXROY3UzcVgxeFFmOHlHSVlZVWZiME5kZk5vQ3YyamhIeEFwcHBXSFFWejF1WUhCMG9sQlJqbk1KTllYeWp0WkJlaTZOR0N3cjNwb2hkZGFDOTkvK0lrSWxjd2ZjZVBBakM4QWQ1c0IyVjlmN3pzNlhkWVBFWUhEaTNWclhiU0k5S3c3OUorVVdFNWZ0UEM1cnl6V2lJSmVwVUhYZjNmOEtPSktnb2E1ZHhQb3hGZUJmRnQ3WU9HdzVkYXdLZlBtYk9hR2hFdGdHZ3ozZHcxWXpVWk16TzVFU0tBQlNzMGl1MWQxb0ZZbEpVT3QxNXRWYjU0SUFTQ0RjaFFLNW1QcVhCWVNFU1Q1KzMyV3dYWWNYYXdkSW1jVkpjTE9NK0hGNlhnTHRxK3cyaHpKYVRzdTZ1cW9WZFFRVkgwbXdlaHVSOWUybHUxMGRycDdiTHdLU2haSUlFU1VIeUM5UGhmTW14OGFGb3lnZ2JOWFZKQmxUcGtkakFlemt2SGU0K3JCN3Q3b1JsMFBha1UyN0Y5S1JBKzlkQ29zZ25XTWdDRWdXZ01QcjJNSHZLZi8wN0p0d0RYWnRxSEVWMWRqRU1KZ0thZmppTDFMb1NFK0hEclVrTGpGc3hlL3k4UGpsMzZxMS9jYkFmeGZpLzNwaFNiZEc3OVhLalFrMDVncVZQRG8yQk5XMXZyb2REZ0xTU0NUeG14LzJHZzFXSkduU3p4Um9HRkZSRysvMlFJUXFKaGhuRi9LdXZrcUR4L0ZPUUU5WXpMWVpMOGJ6VjcxNnRMMXBLTUQzZ0p0Z0ZSRFVTV3dHV2ZRU2dZaWhXOEs1a0lzcFdrZ2hsTllPOXdLL3dCbFZNQzlKb0l5U2VaMjFQZ0RISWFUd1J3c1AvdE5IOTViWUhvL3U0ZzRuZUMzd0M3eTJJa29tbUpvVjVkbEFQblBnbUVyTGpSWE1YNXhxR0RiREhhN2had3Fhem5NWFRoRWtKc2RtellwR29MbG1uaW1NZXV1cnYwb1ZzeklTdGhwTng5Szh6NVNSY2g4TjBBU0EzQUJNbHNzTjY2UkJ3U2pFOXZqNDJMMmZMdWhxSDBZU3VaWk1PSkN6ZlQyRzRsUExvQWt5VUJmNHlPcEZTL0wzSFZ1ZzB4b1JjUk1jWjlodXhHQTFteXdsRjVablpLVkFEQjlYTDV4WktEVzRGMkMrc2JHbHVPaWF1cndQRjNiY1F1SFR4MDU5dXM0bHI0MTNoMVZROW15Y3JXQkIzUHJ0ODFXUmtRS0d6d2pKVDlQT1g2cDVEanRuUjlSamtkbGlibnlncWZ5dXFmbUJWajlraHIrZHBudXE5bk1XUFpUQWtIRHg4MU9WTStjK2w1QVl3NHBZZE5pc21NRlZpc2ZqL3gveHFPY1BSZFN2YXdBQUFBQkpSVTVFcmtKZ2dnPT0ifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wOC0yNyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxMTA3NDQ4ODMxLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IklERU1JQSBTT0xWTyBGbHkgODAgUjMgRklETyBDYXJkIGMiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlUyRjEwMDAyMDI1MDgyNzAwMiIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTA4LTI3IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjExMDc0NDg4MzF9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDktMTEifSx7ImFhZ3VpZCI6IjMwYjUwMzVlLWQyOTctNGZmNy0wMTBiLWFkZGM5NmJhNmE5OCIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiMzBiNTAzNWUtZDI5Ny00ZmY3LTAxMGItYWRkYzk2YmE2YTk4IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ik9uZVNwYW4gRElHSVBBU1MgRlg3LUIifSwiZGVzY3JpcHRpb24iOiJPbmVTcGFuIERJR0lQQVNTIEZYNy1CIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfSx7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJpc0ZyZXNoVXNlclZlcmlmaWNhdGlvblJlcXVpcmVkIjp0cnVlLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJzb2Z0d2FyZSJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDSFRDQ0FjS2dBd0lCQWdJRUFUVCtFVEFLQmdncWhrak9QUVFEQWpCc01Rc3dDUVlEVlFRR0V3SlZVekVRTUE0R0ExVUVDaE1IVDI1bFUzQmhiakVpTUNBR0ExVUVDeE1aUVhWMGFHVnVkR2xqWVhSdmNpQkJkSFJsYzNSaGRHbHZiakVuTUNVR0ExVUVBeE1lVDI1bFUzQmhiaUJFU1VkSlVFRlRVeUJHV0RkR1NWQlRJRXd5SUVOQk1DQVhEVEkxTURFeU9URTBOVGd3TTFvWUR6SXdOVFV3TVRNd01UUTFPREF6V2pCc01Rc3dDUVlEVlFRR0V3SlZVekVRTUE0R0ExVUVDaE1IVDI1bFUzQmhiakVpTUNBR0ExVUVDeE1aUVhWMGFHVnVkR2xqWVhSdmNpQkJkSFJsYzNSaGRHbHZiakVuTUNVR0ExVUVBeE1lVDI1bFUzQmhiaUJFU1VkSlVFRlRVeUJHV0RkR1NWQlRJRXd5SUVOQk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRTdWZUZibDBGd0JXbkhLOXJhSzJkcldRQWFBeGQ3M3lLdHc1cEp4MzVFalNaM2hmT21mSi95YndrYnU4ZXpGaStSTlVBMEdjUENrSGtnTGljM21TRldhTlFNRTR3SFFZRFZSME9CQllFRkNqN25XU094Zk9PT3dwdWRRZUg0SVZGcGw4Yk1COEdBMVVkSXdRWU1CYUFGQ2o3bldTT3hmT09Pd3B1ZFFlSDRJVkZwbDhiTUF3R0ExVWRFd1FGTUFNQkFmOHdDZ1lJS29aSXpqMEVBd0lEU1FBd1JnSWhBT082TVNqWlZVZk9ZMjhTVkpVZGdZVjJicVlBNkR5KzhCQmtHalA4YW03QkFpRUFtazZBdVhGYWgxWFg3R01abWVUNGRzS3cxb2thenY5eFdHTWorOW5GUjRVPSIsIk1JSUNFakNDQWJpZ0F3SUJBZ0lFQVRVQkZUQUtCZ2dxaGtqT1BRUURBakJuTVFzd0NRWURWUVFHRXdKVlV6RVFNQTRHQTFVRUNoTUhUMjVsVTNCaGJqRWlNQ0FHQTFVRUN4TVpRWFYwYUdWdWRHbGpZWFJ2Y2lCQmRIUmxjM1JoZEdsdmJqRWlNQ0FHQTFVRUF4TVpUMjVsVTNCaGJpQkVTVWRKVUVGVFV5QkdXRGN0UWlCRFFUQWdGdzB5TlRBNU1ERXhNalV6TlRkYUdBOHlNRFUxTURrd01qRXlOVE0xTjFvd1p6RUxNQWtHQTFVRUJoTUNWVk14RURBT0JnTlZCQW9UQjA5dVpWTndZVzR4SWpBZ0JnTlZCQXNUR1VGMWRHaGxiblJwWTJGMGIzSWdRWFIwWlhOMFlYUnBiMjR4SWpBZ0JnTlZCQU1UR1U5dVpWTndZVzRnUkVsSFNWQkJVMU1nUmxnM0xVSWdRMEV3V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVJnbnltd2NhTGxaSlZ0NmdWTFJzVzRTT3BrSW5EN3dReHdXUkwyTFAyVmN0NkZaUjVYbGc0bW1INjk0bml3NHBSTkFiREpVU2NNSnd1T0tJczAvcTdXbzFBd1RqQWRCZ05WSFE0RUZnUVU1NTV4NVJuUXkzY2NCcDZROTRVbnRCQ3V3UEV3SHdZRFZSMGpCQmd3Rm9BVTU1NXg1Um5ReTNjY0JwNlE5NFVudEJDdXdQRXdEQVlEVlIwVEJBVXdBd0VCL3pBS0JnZ3Foa2pPUFFRREFnTklBREJGQWlFQWcwMXArK2l0Zk0xVGZOSHN5S1ZKRVRjQTdMdVdpUytqMzlmMnVrRm8rOGdDSUhUdTNsNmNCaUJxU2Qvbys2NzMwUnB5YStZek91TjJmdjRWbVpEWWY5NXIiXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBUUFBQUFCN0NBWUFBQUNiNEY3UUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFMaU1BQUM0akFYaWxQM1lBQUcxblNVUkJWSGhlN2IwSmxHWlhkUjU2L3JuR3J1cDVubWZOc2tCQ2FBS01CQWFCSlB3aWJHTHpESDdFOFV0aU8zNngzMHJJaXAvamVLM1lXWGFlczU3anJDU2Uxb29YTnJKQklBa0pNQWlFUUFnaE5IZXJ1OVh6WE5WZDFVUE4vL1MrNzl2bjNPRWZxcXBicllGMmZWWDdQL081WjlyNzdIUHV1ZmU2T2N4aER2OXdrZkhtSE9Zd2h3dkVxbFdyT3Z2NitoYlJQbDZ2aTVjNk01azZUYUNZeStVMnVYeGVEdjNtY2k0SEkxTW8xR3RUbFN1eStTeDloYXpDNE1aL3RWcmRuczB3dTZ4RFpwbHNObHZQS21yRzFXcTFqUWdwMFVYdXpTQk9aY3YyWEhiWml1M3dPZURxOWZQMVd2M0UxUGpZNGNIOUozN240SmYrOG96aXRzR2NBSmpEMndwMzNIRkgvc2lSSSt0S3BaS2JuSncwVHd6M0V2N0FDSGt3d0paOFBsOEhNdVNxZkM0UHhzblZhYTlOMWJabGNqbmpGUUR4K1VPZWN0VmFiUjA0cWROQ3dGUmdWTGdSbGtWWVpVWEdaZnFkbUxlZUFSaUZuRmV2MTJwTGNLMWw5SU9KS1BCWE9EUEpJcHRNMGJ2OGZ6RFRDRktCWUJpeWFnOEV0ZzFtQ1lQRm8zcjE5YTZ3YnFObDZtbnk3QmszOE9xdWY3djNDMy8xdXo1YVN6U1djdzQvdnNpQWVUakJOR0Z3Y0pBOHNNbGNNWXJGb3N5cXEyNEdFeFhDRE1VZjJzaG81WEo1TFppb1cweEZmdElQZmtHWXFaWmhTbHBBdDRMSkhHWW40OHdId3l6M2JnQnpGUm5ER0ttN1dnVkRCa2Fpd2JTTWt5VVRaZ3JtSHpPYmdYWU8vR0FHeE82TFpTeEwxenFVak44T3pVRXQ0alo0bWJOTm50NjdUV2hMWkcrNnhaVTJiVVVpbnpQTTh2Q1FPLzdDYzBjcVBZWE5CLy95THljVTBBTEoxcDFEQzl4d3d3MEZ3UFM0QnB3N2QyNDl3b3lMOUZzMEE4TzNXcTZ1Z20wZTFFQXhVMkNxVEQ1VHIxYXFuRlVXa1ltTW9RSmpvZk9xOWI1cXZib3lteUhqV1BmUUN0WkFrbm9mWnNDVlNhWXdCaVByMURzd3k2MmxUZjR5eUVBY1MySWs4WFlxTGFqdFFFT0FIMDc2VFNFS0l4TGhLZjhBODB6N0oxeE5ZUjRweitsbnhJRFkyaVoyMjB4aXpDSktHaGVjNFBVaTdyK0EzSzN2Y1IxYnI0QU5oVkY1Nm03cTlDbDMvSWMvZ0h4Mkg5djN4Yi82SW4xYm9UbTNPUWhyMTY3dFdMQm8wUi8wZEhmOURKaG12akVSUTZ6SlBDUDU5Z3RoZ0I4UVpzU2pJejFUWUVDbjNJRGNMUWE2OTJnS2dkTjhtdjBEMGlIZTFUNTZhOHdZZjhZY0RETkdZd09HU05hWXM4ejVNa0lZUkFScm4zUzNSK245SDNURmpkQUFJa0FBREE2NDQwOS96OVhxdFVmMmZ1RnpkL3VBSnN6dUN2OEFjZlhWVjM5bTBlTEYvMzFxcWl5VlNwQmg5cmFEczAxQSsvaHRRMUtZWGF3R1RKdm9BcnQrMXRGL2pJYlVSVFhxMnc4OVAvZHBsKzFmNEYwQTZqVTVlTktkL040VHJseXZUWTVQblY5dy9PR0h4M3hvQ3RRZjU5QUNQYjA5MTJDZDZpb1ZySkFyTlNPNHE5VzZxTmFPYXEycDNvN1FXV25pR3JtWlhFUW9uS2lWWHdORlFKd211a0MweXIrUmhPWUExQ0J4NWVBT2ZrbDM4THUwMUJKUmVkOXN0Q3BoZ3FoS1hpQmxlK2E1VEM0UHdoSXpFSmVYREt1N1VtZWg1d1BJdkNYbUJFQWJZTzNlUmVZWGc3WHFxRGVNWmtJaW5yZHlPVEk5TVk1UmxId0dTcWFKcVZYZUNXcnpoNVNnZ09BT2ZrbDM4THUwYUx5Q0NEOUphaDBKMUJhdElqZFE0MFZFcmFOR2RCSEk1TUg4WVBoTWxveHZoQjlkenVPRDNtekNuQUJvZ3l4dkFYRktidXlnUUFHdHdscFEwemdRZ1QxZUQvay81RFJybXUxZnE3U1hNMXJWVmkzUnF0MUZDSitKRW5rRkpQMWllcDEvblAzRjhOd3RCbkZqR0FYUVhSbHFWZlU1QVhEaDhCcHMxTWlOZjJ4Y05mRHMva0pYcDJrT0Y0OVc3WG1wYVRxMGl0K2VMbjRjSk9KSnFyUWd6dmhrZW1rQm51QWZYOCt0Mm5Udnh6ZlMwb2c1QWRBRzFXcjFNbWtiRFlBRXdxQm9waURVT0tnaUFmZTJJSnZkMHRRcTNwdEphcVlHdnplQ3duVkFjVStsL25nN3ViRnRGSlAvWnMzV3N1NDIySnJBNE1zU216YXRmVmR2YjkvSGNvVzg3bi9YcXZYdGZrRXZxR0VnLzJoQTFkOVFxOWM2UW5PZ1BldlpiR0ZaTGxjcXpXNnpxRVV6ZXE4V0lXOGlrbGVmVFVYZTJ0SmVlcndaOVhucjI2ei8xejlyR2tBQzQ4ZU91S0VuditrbXkxT3VXcXU3bW5QL2M5K0RmLzBaSHh6aGN1dHhZYzJhTmUrYnY3RHZheEI4T2J1RjV3ZC8yZ0JnUy9tWm14SzBxNnNIYnE2dExyU0pMc3NtYllNZjk3cStUY3Zmb2xqVGxiVC8xLzl0a3dBWU93b0I4TjF2dUttcEtWZXAxVGlzWDl6NzROOWM2NE1qWEpaTGdPNmV6by9rczduYzFPU2tHb0QzOGtXUWhuU1hJeXE3Y3Rtb0lxcnF0bCs1VXVFQkNxOGw4T2RDYURhNDJIVFQ0VUx5YkJYM1ltZ21JQTRiY1JZVXE3eHZKaVdMMENyOEVsSTJUZG5wQ1BFYnFXV2VudkJqYmQyaWI0SUw4K0MydGZmODcvM3lUT0N5RkFEWlhIWnp1VXdtNW4zMkJFRVBncEVteERmaWZxbTM0NGYzN3RQcnF0ZEpYS2VCZFB5M1ZhZEhZYm1McEpBK1NhM2lrVnJGZlNNSTljTGdiRXUrN3Jtb0RRSzF5dXVOcHNZeVhHSnFxSHNyUnI1NEFwTTNrQ0Yyd0NobXMrT2I1VWdnaW5vNTRacHJybnk0V3ExL3VBYlY1MkxSMDlQcmlzVXVDSk84U1lWTEFuWUlET2JYMFBKdHZPY3doeGh0eG1IdnIvMGJESnoweUJrOWVnaExnTWVoMVVMVHJWYTVCMEQ4RXBZQi85MnNoc3R5dkYxNzNkVVBsYWNxZDl2Ni8rTFEzZDNqT2p0N1hhRlFra2J3K25GSk1ybTgwZEJFYjdzV202RkFiMVY1ZTM3bE4vSHJXZGtibzBjT3U5UGZlOXpWSWdHZ1U2Zi9aZStYUHYrckZzTndtUXFBcTc0OE5WWDV5T3Zwa2E2dWJqZHYzbnpYMGRHdDVVQXozcmp1VGd1Y1Mzd2RuOTBsTDMxRGhxODcveFpTOTVLWE9ZblhtZmtiV3JhQU5oZnAvR2UvM3NUSkVnQlBmU3NXQUdqUGVpYno5OUFBN3ZSUmhNdFRBRnpyQlVDRVdWWVQwUmd6QjdXL1dDeTVoUXVYUUFqMGEyUFEwTDZicDlNMkxHam1JVElieHAvbU1zS00xL0pCTTJRVG95SGlyTkkxRkhMR05ETkVtTlUxTHdJWE12aGJsbUdtenJnQU5PVWtqOW5sWC9nbi95SjVneHRVeHhMZ3NCdUNBS2hYeXE3TTUxbFFWc1E1c1BmQno2KzNlSVlMYVlNZkcyemJ2dVhMOC9zWGZHVHAwdVZ1Y25LaWlTbFMvUVk3bWlaeU1Jd3Z5amh4OG9SYnMzcTlXN1JvaVp1WWlOK25FQmc5bVdmci9KTmhoT1VkQVk2ME0rR0MxVnorTnhrUmFCSTJEZkZUU0hpMUNQV2VjVWo3T0RIU1RyaGFKbXFQYWFNcnNIMk1LS1RaOG9ZalhiVG02ODRVM2dweG10bkZid1JUNVQ3OXkrRGtOQ3VQUUFCUUEzRFZoQUNvdTdPbFVuM0pqZ2NlbVBMUkxrOEJzRzdEMm9jNlN4MTN6K3ZyczkxOGVxS0IrTmUreGdxTndOZFJMVnE4MU0zdlg2aGJoMkgzbk8zTW5WZmJPUTUrVEVtL3NDc2IvTkJCYW5qcjNFYmgwZHFNNHhFaFRJQVJoY2dldVJJQmFiVDJuajVkMmd1dVZuRVNaU1RrYXZBTGFCZG0vdEZQaEthWUxlS2s0ZHM2OFR0dGRHREdMQk9CYmFyVkFOOGJUWEdiRTBjK3M0Z2JvSkEyd1psZitBd0haU3FZR3NEcDczODdMUURnbjZ2bUZ1OSsrSE9uTEZab3Vjc002emFzZnFpajJIbDNYMTgvQkFEdjV4dURHay9PcnNwalkyUHUzUGtSUyt0YlZ2ZHc0ZVlmOHpYbVp2Njh4V2Y1Y3JEb2FvZ25JWkdEa1BEaEVoamVQNTh2eEhIZ3oxdUVmSnVkeGFXSnE4RFU5ZUFYM0RuRTVRVkNQTDV4S0p0QmVydW95cUFTd3NxbFRDdW9PdjRuYVkrdDZjRXNsN2NUUGpUbGwwU1Q5eXc0cUdXTWxwNVd4eG1CdEphOFZTWnBQN21hb3ZuVXJaSzNoSSt2M3hhWWRUNkdLSHF6cFFuMVQzNEt2K2wyR2VGSndLY2hBQ29WN1FGVU1VNlpRN1pTWDdYbmtiODlhckZtM1pvL1hsaTNEZ0tnSXhZQTVBWlZOSml6cVBiQXdJQ3JJaW4zQWpnSUNnVXdMSmlZVE04OHlZQmtNRElvaFlBRUFnbHB4Y2dnK29sNEFNSDc4OXJWR2g4elprd0lnSnpsdzdSVDVVbTlJMEI1TVNmR1FWRlo2b2dKY1QwS0F6dW9CSC9HWi82TW10QkFDS1pqT1ZqbWZEN3ZoWTJWZ1NiakZvc2RybGdvd3E0VDA4aXJFdFdOd2tzdGhuZ0U0NVZLSFNnZlNvUHJxUXp3cHhBeWdXWjFabnNRNFZwRXJER1lxVi8vazdTbmZ1MC9zcHN0dG51WGQ1dG5IQlRaNHBEWUM5Ymdqa0lUNFFrL3d1ZVY4bzBNV0x5ZDhDV0tJV2ZzMTJSTEdYRm9DcmgreXhEdjMvMUx2eEwxVWNEbzhhTVFBTitCQmxCeEZTOEEyQ3ZWZXVhT0ExLysvQk1XSy9UT05PQTc4Y3Jsc3IzM3JnV1dnazU2TS9FemUweTU5ZVBWOFJKVTdxYXlsTEJnNGRzaEoyczFoWld5MlhxWmxqSit3WkNOTUsrQ08zUm8vMy9HZ0x5dHIzKytHSXZWdFBiQmovMUhEU3B2SWJZUlI0OGRsUURvN09qeVBqNnRvbVZjRGdNK2w4MjdLbFFzTW1GSXJ2ZktodHlqUVdocERiUmtYQW1NVnlwMWdVbHlpbDlGUjQyUGo3ano1NGZkeE1TNG1Kd1hDOGtZaHd6THQrRFNYMi9EOVV4TlpxV2JHa0VZRkV4SDRVTFVVQkV5SllzVGhJUUVHUWFHdEJqODVjbnNZT0J5QlcxTHZ3UXhNOGJsdGJpYnpIRG1FUWtoZVNGL0xyZmdadndDMm9ldlMyVHoxK3E4anNYTjY5MmpxSE5JQXd2ZEVOaTZmZ1hYWjc0VVFoUmFRWXN4d1lKRUtDdUZFUDE1Z2pNSUcrWkJQK1pCdnhxRUxFMFRkQlJ1aWZxa0VOeWhwUU1RMTl0aXk0V2lPZUdGNWRrK1VqSmszaS8vWC9oTmwzL3N4SEUzOUlNZ0FDcGFBbkNZVnQwc0JjRFAvZHduLy8zcFV3TS9uOHRsZW91bDRrSzBIUC9WaVh3empyM05oaDQrZ2Jlby8vRmpEWStDTnRRaGZVRkc5bGFBMW1SMHJxblpzZXg4RG1hYkhSczdNYzZBTmc3d1BhL3RjV1BqNDY2ZkdnRGlXb3lFRUpnRllnSEFOMGtuMG9DbnlKWVVBR1M2S3RaWGlhSGlLK0RkeVhMYXhUMnlMUVJBRlFMZ2ZDUUFPSUFGWkpITW45ZG0rK2J5T1RHWUJqMkZBUEtobG1LemJsU0NGbUFPYlpBTWdOMldLNllaV0p0YkJQYUp0QkQyaGIrU3hUVnRRd0pIL21CdUxWbUNsZ1EvaERNa2xMTUtGWlZwakZudGV1eHZDa1RXTXpDK2pUdHJFMTFWNVRGb2ZDVGlzcGhxSitSSGdhTTJSdjVNeHo2anRzTDJMMEM3WTEyUVZQa244MnlQbWVQTUtodkJJa2JSWjUwdWpkNS95dHVBeWM2REFEZ0pBUkJwQUJjaEFQN1BmL0VyRDU4WkhQcHdaMmZSZFhYYTY5UkRRMFZvbXpxTitEYWFRUU1ZRFQ4ZFVsbTNkNlFRUXA1NitpazNORHpzK3FFQmNOQlprY2s0WnM0R1I0OGVRY1BWTk5zb1RTSVpHWTREaXdPSmcwNGRGOExSMEVtblJrTm9zOGhPRGFDemhRQ2dCakRrQlFCbk5zUm5ab29SOHZRQ0FPMG5BY0FQVDlDTmZEaGphb1pYSEVtcUNKRTFsR1U2TkVVSkhtYnlONHJTRlBkQ3dKSUdXeHNnUVBzZEtIZkVXUFNqMEFNenMyVWlEUXhHem1zOW1xVEE5QUZzTHpJNDI1bW40NmFtSmlIZ0dRY0NIT25aejMxOUM2U0p3RU5wd3VXbVIvdFlVWGxuaEVYVTc2elRHSEpMbHJtdWozMEM5VSszSUpjQXc4ODg2UVVBbGdDb0kydlZLQUNzdFZxZ0E0T3p1NnNiWmljYXBVUEVSdUthT0tMQzdLaXJzeXRGbkZXNW5weU9PTGdqeXBOS25vSzdtZktleUtER01rU3d4ZVpzWUxFeFFKRlh2TFkyeGdvRGtwUUNralRsempqMERLTWhHaFZOTVM4S3lnVjVVbU9ncEs5Z1JyV0I3UVVUa0NybFJWMldpVWhlS0lHQ0Q2c1RLUFpNMExSZ1BoYXg3Ujh5NXA2SlpyRmFvS3FXS3J6Rnl3ZSt5anpzd29lN1lFN0FqMVN1VEZsN2VKb0V3L05oTUtibE8vTktuZDJ1cTd2WHpadTMwQzFZdU5SMXdEMDBQT2dPSGQ0TElYd2U4V3dad3JacjZPVUdoQmlOaEY4WVRhU1FSdEFYNDRsL2lOU2VRajdlanJGWnV1Tk90WkgybnlMQ1pISnF3RFFtZFF6UnVrT21FUUFkOWE3T0h0ZlQwK05LV0FkM3pKcTZYU2NhTXlLNms1VHdZMXcydk15TG9CS3BST3BLa2RSVzFEV3FicklOQkZxUzFBTHdaa056aHoxTlpINGo5aHM3UWd2L0JxVGFYVkJFVCtsQStoalMrYVJkQ2NRSkVNa1loZXRtQ2dGcURtWWE4ekNUcGx6cGtmYThDSVJNWXJLL3RHL2FjYWxnbWNWWHZCaFlvU2dRdVBsS2syT3hkOTU4TEI5SHNRUTg1RTZjUENyaHdmWTJ4cHNsSVdld2FPb3YrREpDVS94QWNhdzJsTXd0NHdwWFgrK3k4eGVpR3FpTEJEN051cHVDQUR1L2Y3ZXJRVWhTQ0dRUkJ2MEpxWnJiaW5tMXhPLzhoOTkvYVBUczJOMnJWeTF6aXhicDgyY2V1SFFxVlpzc0VLbHQ1aWsweDByN3dEVnRSczJCZi9vWGYrTDI3TjNsNXZjdk1DWkFIQ3Z6dEJsNVdCd3VBZGhzWFJnVUFaWVRDTXl2YjdsQjVhNWhnSVJyTUVJMElHR2tydFp3YVM0QnFHVmxzdHprcW1PZ05ld0JvTk9ZcjhtV2VKaXpWYW1SVU1qWkhrQllTdFZ0MXg0VlpSaUpkeDBpUWVWakdSb0tFeEM4MndRYnB1dFhoc1Fsalg5YklFU0YyVFpPQ3pDSnRUZlNjWXo1d2RpeVZCZVNjUU8wUndFaGV2NzhHUzBOdUo4VXJqczk0amh0WXpjRW1ITTJlY2ZJUUJ2dnVQOFhZTnBuQWdPb0FRejg2UHR1N05BK2pCMk1ZSTRoNU0yaVk2UldhcTZ3Y2QvRER4enkwZHMzMFIvL3lmOTRhUGprK2J2dnVlOHV0LzJLYmQ2M0ZWNUhLNzl1dEdnMGVQM2laejd0dnZ2ZEo5MzgrUXN1ZmhQdzZGRmtsWkhHRWlNZWNCSUFXSVBXb0pKR0E2T3Vwalk3QVd0MHRZYkxTZ0JBWThwa0xsNEFjS25FY2hnUVYwc1YzdXBqMlV3STZHNENMNTY2ZmtOaFBHWVJCV0FKWkZ3RW1oTTEra3lYTGR2QU5CMWJvM1BmUTR4NmdRV2FmVXdUQktPajUzU3R4WXVYWXFscGR5WGFJZEg3MHprYVhFQ1R4L1FvM0hDVHkxOS9rM2ZGR05QM0FCNTNtV3JabUIvdFJlNG5IMEFjL09tZVJ4NzhQM3hVb2UwU0lEeWpQVEl5cmgzbjlwUjlDNmxGZVFxWUJWR3I1RXg4Y1FnNWNMaUFFck5OQ3NuOHdhMmVQYncvZnp4UlNKQWltTjFVcy9aZ2FJalJlUFVvSmZLbHNBaGsxMEZzYjVXL1h4TEVGTUppUWhRank3STFNV3k2Y0ZBY0tSRExZdVVSelFqVzFCUGJQQWd4SU1vL0FsdWNhL1hFbisrclpnb2FVVE8xQzJON2RIWE5rekRsc21Ca3hBNkg0VitFeTZVUXZFVDRpY25LRUR6azFoK2NUWEZub0k0T2w3dnlPcVJLZzdkcWgzZStxSTAvTXI4MWxobW94OG5xWklIM0MxTkFkcTN4aDMvNFJ3L3RmSG5uM1IvNzZYdmM3WGZjSWo4TkhMUEl6cDZRQ2RMVFJvM0VRZWZqa0poWWRnd3hjek9QZ0xnb2FoWTVyWUZZYS8zUjlLMFEzR2EzdUFHLyt1dS82cjcvL2UrNytRdXdCR0FQK3ZpRTBzd0N1ZzFZcmJ2dW5ubHloL1FCa1FZUWxnQWhtTlh5cHY5cFNBbWdERHlBMDFucTFzQmlySlFHTUdsM0FVS2J4Zm40T2tSTEFONVR6MXM4eE5FU0FIODA3ZllYQnJFU3dMZXpDMUVRRDlxRjkvUUV2MVp0QXE4bVh4OHZLb2QrV3lBS2FJN1I2Qk5IVFlaWWZTTjRwMFlPNmhCMi9hWGhjSm1qME1hY1p3RWtpZEtHNUEyWGpvdkZ1eEJWTnpweVZnK0ljVWt3ZTNEOGUrczBVSlFvWHZzRStSdmU1ZkxYM2VoZE1jNGQyT3RPUC9jMDF2eTIrY2ZabjJQRGVEUHppVDFmZWZCelBtcUVxSHFOK0RlZi9YY1BQZlAwVTNmL3pQMzN1cXV1dWxJWnpZNXdVVEkrN0MyRmdzZ1Bia2h1T3o5dko5UzR3U2FUblpweVcwZEw1Y3ZGYnFVRGFhZWVmNnBOeHYzVzcvdy83dG5uZnVRV1lBbGcxNG5EK0IvREhDa3ZEd3FBQ2xaTVBiMTljamZHbEFDQUNzNDZnZ3N0Q05aVXQrbmFDRUw1WEtYczZsUCtHUXdVcGxpQUFNQVNJSnZscmF6cEJRRERxU2xFak5jZ0FPU0hQSFVhajIwRHU3V2hXc1ZsMFE3NUs2K1J2WHJvZ0t0UFRxZ01tdkYwMjh6bmkzclUrU20wNFNHVk4xVWJ4dmZ4Q05veTNUMHVFeGlCMThLMWZXRU5MRC9TQ2FoZjlkZ1JzeXRieTF0NTZ0L2lXWDhaV1F3UE9EUnhlRHRoTTdhbGJSVHNGaStLNkhPUG9mWkNtWG5iTU85dkhSTEpNUnNENlRYR0VJNStPVFUwNEJiT1greDZlL25leURaSUpFL21sQVpDN0gvMndCS2s5UEZQT2F3ZnZZZWhPam5samo3K3FLdU5uWGNabE5FMGdKcS8vMTkvOUxXdmZKbmZCN1MxVXdKeHpSc1FHb0VITXJpVE9IdkNSVkVBa3UxSUp5a1JCOVFjM2tCVytJU2JKc29GaWt5V0UyRVVLdEhPdDVvVWRtOGo1QzFMa3ZERDlCRkZYb2JHVVpNQ0J0Q21MUzYzYW8zTExsc1JVVTYwM015bHkxMTI4UktYWGJrYXRFYXBsTFV1WU9Vem1Mc2RyQmp0QzJNTVlJSXhYaGNiVTBoWTlKb0txMEhjQlUyQWdtaHEwdFVuSmx4OVpOUmhXblBRYlYzOXpMQno0Mk91dU8wS0xLZDRPNVdiaWtqRHZIa0hoTUpHak1aOGNhMVZhMTE5Zk56Vno1NkIwRGpqM1BDd2hFZDlhTmpWaGs0Ym5UN2xxZ01uMVVlNVpTdVJuTUl5V1JmVU85SGc3QWZyYitzVDgwVjgvTXZGSHlzQ3d2MjQ0RjBQVFNxd2V6L2VDdE5Fby93dFRIMXN1UUE4SHAxMUhjV2M2KzRzaXJwS0JkY0pkNm1RZFNXRUZUMlZzS3pzS0lMeFFEUVhMMWpvVHAwKzZjYkdKMVMybG4rKy9WbFhieGpoeW9IMHEvQkFjcWJpTkZKdTdjWW01aWZPSGR6cmF1T2pYSVVxSHV1SEppUi9qTmNybVYrQ1J4UHpFMjBGUU5pRUlzTnliUkVSR3p1aTBBRnRTTXllcE1ZNDdmT1FGaUVUYmwrV01DaENaNHNVbmd6ekhVeURkam05WDJTMmd4S2xyVzJTNUZhc2REVXdUQlZxVjNXL0o5Z3JCMTREd1lTN2NuQ2ZxeDQraUR4czJHVVhMYmJFUURwYjY3SlpZWnFvR0VJYVFJSXZPL1VHMTkzcktpZU91Zkx4bzI1cXo2dXVNblFLZE5wVmhrKzc2bG5VQVF4TXFwdzc2NnJuWUQ4MTZMSkxsbHA2bHAzdHlJeGhoTDUzRUd4S056VG9xaVBuWEUwRUlUSTY2bW9RS0xUVFgyRmpJN3AyWnY1OE5Kd3RXVUkvQnRJMVdHVHZIekVzU1NFRzJma0RDdUdwU1NJeFh2U24vQk41SXB5cVBDeW9FazhxOGhDVkVkMCtZNW5VdXV3MEtvVWcyOWZjUFJDaWl5QUVUcDQ4NWlZaFRDUEdiVWZKUDNpWVlFaUdCL0syS0tDWmNsdXZqR0lINHNuTDBTTUhOZXV6akN5LzZreTd5L3oyM3E5OTZUQXNMZEZlQTZENEFKSXp1c2pQM2thTkRONUE3SXlMb25TSDJveHZIUmpjMGV4UG90dFhPcFNiYmdQOGdpMVlaZ1Fha3J1OVZPMGpzTEU5b0hwbk1LdldCZ2U4Unl2WXhiSjhIcUZjZHRXRCsxMW0wUktwY01saXBJc1VycEc0VmdKdGl4OUZqK3NxT3lxY1diallWVTRQdXFsZE8xeDU5MDZVaFM5TFJTamJLa2srUHFsQ1psMndTUFZNZ296UGNGZUVkc0E3TEJBcVVYb1JKeGxmbUtRL1M0VzBGU3cvY212V0tvd01HY1h4L1pja3l5WVJabG42bnhpS3kvQm9ySGhTQ2taZ01LOWxjZlZITzRKNENUSzBvdEV6S3JxbHAvWmtkMVBBSmd3bUEwb3J5cmplN203WDI5UHJUa0FJY0x3R3hvNUltWmtKWjRvWTVFUHNUd0hlUDBubUZWRVcxOHdzWHdWYkdsTVE0aFVJYm9IMThIVkVzUTY1MnVUL2F3R3RNWTBHd0l3Z0FOQnhqWXdkYXdNeGsxNHNwWVFFR1J6WGxTay9NajdKKy92QllIRmdaeGhOdVgzSHM3TTk0TzB0MFErYnh2OEZuOWJJY2QyOEdvTzFCWEpRNmJtZTFUcHJPa0IxemkxZjZTcVF6bFJKbVNhM052VkNsZ1JDaWRqVkY0ZFFtcEFUZEhhWHdVeGVQWEZjYlVSUE05bG1qQURRalB6TkpKWDN2K2F5YTlZcENwY0E5TlBNRDVOMXFoMDlES3N4RnYzNHB6N0FId2MxVGZtTGxJMnJuVDlIanVPMmVwek9wNlZwTU5QUytUQzU3U2Y5Uno4TEMrT0E5dGpmL0F5V0l2S1RQeG5YNHRtWVl4MHRQdmVXOU1BVnl3dVFTVzFweFVtUnI0K3Z1SGs5WFR3dzU0YXc3QWxNR2hGK1lqSW1GNk1qdERHY0h2Uk4vNlhqa0xMcm1sN3FLNHdjT1JUUC9nQ3J3R1BoLyt5bmY2YnY5My9sWHovejRLTlBmdTIvL2RuZi9EYUNtRzBLYlFVQW1ZbmdaN0ZqMWQ4WU05WUdHb1ZESXN4VFV4cFB3Yjh0aFU3aG9JSmRFbDZkWkV4dXpFL1R4NEhiT3BLbWlnN0FIbXlSSlJCK0ZOZmlwd2pCVmF4ZE5kTTFyTGN5a1ByVUR1cm5NSmdid1lRUndDaExsN2tLdFFTMGpYeWdZcU9BTGp1dnJ5SHU2MEZEbnlieXphN2I0Q3I3WG9PZmVjYXQ0ZEhrOUI3TWNnenJTYlJ0Wmw2L1JoOEZHTnZaZFhXN091cGZPNHU2ZURCVjZDT3R2ZW1ELzhDVXZMNU1nSnVRK2ZXYmxNcmEzc0lKcHFQTnZJSTlqa05EVUFESlVxaGNJUXhndk9qYVFLcUY0R1Y1V3hoL1VXcWxvVCtabE16RCsvMTZyZ0NKQXdOeWpPc2JFakF0WHNIMXordDFJNlBuM1JRMHE0akpQWmxiV1VSbHNDQWY1bjBWTHYvZ2lId2pVdngxelovMzQybS84ZU9IRVVNVkVMRWU5Nzd2Zys3Mm0rN29XNzE2MDlVclY2MjdzMURzK0hmLy9GOStOblVHZ0dnckFOZ296Q3ljTFc5UytjbDRUZVExZ3dRRndkQVl0M1Y2U3VEWWJRUEsrN0ZpZ2NucEZ3bUJoTCszVzdmeWwzVXdteUdZamFCL29HQ3RZN0FleEl5OXdYdlJFeXJnaWxWWTEwY0hxWnJoczNEY2tWKzR5TlZPeGNzRUJsV1BIbkxaRmFzNXhYaWZRRVRTM2d5Tml3WTAreUU5L2pQOHNoSGJZK1E4bkhHZXRNdWxhUEZmQ3Q1WlByRFg1VmF2azFQOUFVc1dXaEgzT2l5RGtOYUlmYUpsZ3VJeW5GR3NYeGhYZzNSeTB0WE9ZTWJFRW9PcEZFZUdYT1lRckdaTUw1SUxpQ3crbmM5YkxpWHhkZytWTUJIRjRQTVVVWGh3TDRBemZnNk1UK0lUZzl6NHRHNGlpZm41Y2cwUTI0SjNvd3FGdk91R050UFYyZUZPRDUrMjY0UEV6R1lGR2ZQU00ra3Z5TnVIZTk5Zzgwa2kwbmhhc3B4UlVoZy9OZWhxNDJPcUE3VUF0dlVhaks5UGZQUisxOWUvd1BYUFgrajY1aTl5aTVlc2NJVlM4UTkrL2JPL2c4RVhvNzBHUUFhRGFjeFBoZ2REa3hFREpaaDc1aG1kd2dCbWtsckdDNFNPOGFZR0ZUdktNN3ZDNlBhVlRkbDltTFVZZTEwMWdSOU50ZEVzd0VoSWc3L2F4TGlyWXliTW9pR0pMTThWd0szYmFETWdEOEZSZ1JyZGhLa3BWOE9hUE5kaUxSZkEwZ2RxRDZzTXkya1dLM2RBYnQxNlZ6bDhJUGJ4bGloUFdEZzRJOFJKWVdXYmdkQy9sV09IblZ1eVRQMmR3V0NxUWQydFRhSU9ET2MxWmRJd2V5UUVOSDU4UHI1ZnJPOHdYcmdVV29uNmU1VTZoZ29WcGNNUGJDRWtHWkcrSWNTN0dEZkV4NCtsOTNiK1JlR0tZV0hlVGdia3JWT0c4MkVqVG44aGpMQXhhVm9jNDFJejBOMFcyRG5VK3FIUmpZK1B1Z20wQzh1cFAxYUZSZmJGTml2OUxVQ0c5eWZNMjhManZ6aE9oaHZJak5TQU1Vd29GS3drbHArdC92RVAzK2Y2KzNwZFoxZkpxTFBrdXJ1NzNaTEZ5M29yRTVQL3QwOHF0QlVBYWdNYWdTbko2SUhwZzU5dkdCTUdKZ2phQ3dNS2tBWWhraUlPRUxOemtJalpOWmhRTWZwelFJVXdIMThkeW5UZVZBUFFyazV2aFBrZ3RFVllNMExlMWVOSE1XT3YxSVpZZHRseXpPQnROMVNWYjdhdjMyVVhMMU01S1N3YXdUalVDakxvRU1lWFlKaTN5cHdFKzlydTUyZGNxVlRTc2ViKytYeE5lUWZTK0ZRaFRTS3R5b0NsQjY4Um5Uc2dvaVRKUVJRbkRLMGlrMVlOeHF5ckRaMXltZjc1V2s2UWFka2Vha08xYzJodmtpVXp1eDg4aExLTjQ0c29XS2hkcmVLdFVVVVFFQktpS3g3N0dCYVhRZHZuZVgzVUt5REVNd3NOTXJDaXc4N3JvSjFEbUk1b1d4Z3RzUnQxaE1XZW1VQzdoRGFuWFZGWkJveFozZzc4aVhlNGpsdHZkMTB3QzUzb04vUUw4K040ejBOcjRDUHoyZ3RnTnNxS2VmQ1g3V2grOHZLR3duMUFJc2dRUEVKQzBqSUl6TWpmaU11dFNXaFRBZ3JEVnUrQjVuZlhiYmRnelBDRk9rWmN4UlpMQmF6ZWVsRHU3S2YvNVcvOWdjMW9RSEtiTzRXYjNuWHpKd1pPbnRpeWZ0MGFxQTlRWlhHQnFBTTlBNmI4SWdZMS8wQnhlSUw0QjlNUWFtUlFSNWpOLzlIcWJkNDBTZWxUQlJOUWp2ajU3dmVlZE1lUEh3ZC9vZWJzWkI4eHpqc0o3NWMyM0huZXZrSWRTd1cwSUR0NTB4WXcxYUR1bld0ekRXcGlGbFJubmhnTUdaN0xoNVRPYjd2Q1phbjZENTZVK2gzbkdJTSsyZktVSzNGVFozaFlmaHhvZXNSMWFnTEN0T3dXTHBqdjNuSERPOTBkdDcvSHZmTWRON29ycnJqS1hRbTY5dHJyM2RYWFhBdHB2bFQxNGFPckJPMjYxdzgxTnJkbW5hc2VQQUJmc0FVdVp0VnVMZ2NEMUpZTVE3dlYvVkZtTWo3ZmRrU1QvcGxWcTNXWUtJT0JqdEd1T3hzNWFBTzhFNURwbXc4QnNVQmFrbWpoWXJzU3RDZHI3OURQVmtaakhJeU44WEVKbEd4UHI2VkRYc29UQWpUVFQ0TFFJU0cvd29aTkxyOW9DWllOMEVCT1E3RHhqVkRvVjRKalNSY0VzZXpoYWdxbEgvVjNJQXczalQzV0UyVXBGTURZeGJ3clVyaFRHOEVZWnBVWnhuaGhNc3NzWCtseWl4Y3JUaDVNVkZpNHhPVlFsc3dpTEdOUTdocmJvN2ZQbllObTA5c3pMOW80Tk1UMWI0M1poV2V2dmNFNWZ5Z3RvSXF4ZUc3UERsaWd0YkJOVWRZUHZlY24zWjIzM0tnYldFazZQVGpzVHA0NDZVWkh6aGN5MWNrZDMvdk80eTh3ajdZYUFLcHVKaHRCYW51cm1iL0ZySys0c1R1ZEprMFdsdFlLa3ZzRlVkcUVYNUtTZVNmdEVScmFWb09sQ2ZRRGNZUUVBd1IyQWw4YkEvQkFDMmV0TERvZ0IyWVFyY0RnQldrUVk4MlZYYnBjZ3hhang3S05icUVoZ3hhb2o0MkpXY2xRWVhEU3dsZVMzM0g3ZTkxOTk5MFBwcjlTNzJTSVlSSDVFTkQ2OVJ2YysrLzhnUHZvUis5ekN6a1FGY2JDb3Y0OEM5NEJ3VVVmZUNsL2J3WWhiR0Ztai80U2RqR3Jad1FKZC96VnVBWStjdGhWamg3UitRWnU2UEhXWHVYUWZsY21IUVR0ZTAwYVNNYS80b3Q1eExEckNtUVNDS3dLOHp0eXlGV1BISEUxTUJBMUxKTFplUjBzWXlEa2xKTGxwc1V6djlvNmxUOUJJUVo0NzFCWFJRdFJtUTM4VFl0a0dHZDlGTWNUSXdTTlUrTUp4RGk4SlVqVnZ3YTF1N3p6SlRmMXlvdHVhc2RMcnJwN2g4c2NPYUM3Qm53VGxSVlRCV1ZtZ29vUk8rTnc3eGNIMFM5SjVsWHR0aVBwVmdtak1zWVF4NlVWMlhLODg1WjMwOVVFWnNVNjhJVW5VK1hLZTczM05Fc0FYNERBVkNJdkJHSm1NeUZBZThvdnNzK0NsSjc1QmdIRDVVUWdlNXVKWHVxQXdkZU91REVqZTluc1ZKbGpXQ2VyZVZRbDJxeXhTR2tFWDFCb1p3R3p3YjQ5Y01NOHNNK0loM3d3NEZPMGE2ZXI3dDBqeHFoaVlMY0RyMEJ0b1hiMmpEOXlhNTdkUFQzdW94KzUxMjNlc2szWFpybWxSVm1NeUV4aXlkS2w3a01mK29oYnZkcE9HaExhdk9SR0l4T0FRcDJaSVhlNCsvcjZzQzYwdHp3cGpFRnlBYkJZdFcybWxsYUgyWndIbTJyYy80RG13ajBRenNMODZJU0lkaEMvUWtNMzYwNGh5UUczQURQbHVuWHIzZkxsS3lEYzRuN2hyZFFLaEVpZEp4SkpmQ0VxbGl6S1AwRjgvMk5sejZ2R2FMd3pRNkZNb0pCazZsQldRNmlGMVpVVWxvYjhvNy9TOEljdUgwY3UybjI2U0pzRjZmWWFoVEFQUjNIdmc4THA5S0RHS1ZYd0RDWktsb2dQb2hWQmZCbUo4dkh3bC9Dd2NxZ3M5UFArY2JEM3B6VkpmSFVaNzhaRTlUU1V6NTlWK1JpTHYremJtN1p2ZEwyWWV4cXBzNFRKaG5Fd01hRmUwVWFnK2JiQWpUZmU5SW5CZ1pOYlZxOWU2Ull2VGl3QjJEQXdZL1hlM0xNakZEWGhEcEF0ZGpaQWlhSTRac2JYRDNzQkVpYSs0M2EvdHR1OWhwbUk5MmpWYVBxM3hndWRQeE5HTU92VXFsZ0NLQThBQTV1SGZ5Q1ZkSXlXQTVFcW9RWVkva3o5eEIvVWZqRTJ5dVF2NlVFSFM0K1lmSnZTbWcwdXkvdTNma0JUVlgzZmUzL1M5YzZiQjBISXA3bVloV3JySVErVlgzVUFoVWQrMmZGcklBRDQvTUlrbHloZ21uQkduOHhMY0EvaEZxeGhid1ZwR1hIMU5XN0w1cTFxczZGaGFEZ3dsVC9Ld2VjVE5OTnhRNHpMR2VUQnV4ZGtWSjRRckovRndPUHNqbnpaRHlxYS9XQUdSWG9JNGI3RlM5d0g3bmlQdS9HZE43dU5HemU3TFZ1M2FlbkNoNVJPUUtQS1lBbFRQWEpRWlNQWWx0YWVmandsOHVPMWFwanRxbGp2Y2krQSt4SUlzbllnV0c3ZjJON0hsMG5ORlBtRk9EU1lsczhDY0FuQU5ieU5ZMDVBWHZYSHhNUnlaQ0hBc3RDNDZseFNuVGltT3hnc0k4ZWJTc242TTB2a1I3OXhDTEY1SENlRUJRRm1hWERHYnRyc3Z6WEEvTm50MTNoSGpKSEQwTGpRZDd4ZHkzSXZ3ekxsNSsrOTEzRzdFa1BYVlFLaGEwK2NISFpIb0dWTlFVQ05qWjJmZXZwN1Qvd3g4MmlyQVNBL0ZZZ1pjK2FQWm14U28wcmVwQVdrS2VXdlJvN0pHanRvQUkyelAyZDJhZ0IyOE1LSUh6cUlaM3RwQUp3bDZBK1Q2MmptR3hBR2treTZPYmpha3RVNUprc1RQSGo3TDd0bVBhd1lRUXJ5TWZBamswQW1ZY0MxQXplL3FOb3lsY1d0dTZ1dXVrYXp1VEVpdkRSeU0yN3cxSUQ3em5lKzVmNzI3ejd2UHYvQVg3dEhIMzNZSGVadFNCWFdFMEN0NTZhYmJtWkNKTWNnNXFrN0xGSEFWZG92dU9lZWo3bFZtSlZmZWVWbDk4UVRqK3Q5Q2VOZzdOdHV2Y085Rit2R0lGU1lYcWZkV0RJSUdLNjdlWkJJWVJCczJjNHVQVS9BbVBUelNRVExnbjRaZHlzWXZnZkM3TysvOFRYMzE1LzdYKzdCTC82ZDIvWHFxKzc2NjMvQzlWNTFyYXRRbzJMUnJmZ3B5TXY3aDdabWVhZ1IxTTZkbGZiRVMxSUVoZXVGYTBlUU8xamtZMW1HS0dnM2pqMk9MWTRabWh5Yjh1T0hOT2hHTkQ3ZlVlZkpTUHl4WFUzRDVST2dOdGxJWVBqeHordWJCbXZDMUs1b1kwVFhqaXpCOEI3MjN4NThid1NNVUhRQitaZlBuMU9wbUpwLzYxWXNjMTJZMGp2QjFSMmdvamM3NFFjUmlpVE5WMm1yQVdBd2ZlTFU0TUNXVmF1V3U4V0xGbHBsa1VFejA4eVdXT2EwWHdvTTUwOWtOMU8rRFdsb3Fpd1VUcjRUckdPc0kzYnMyT0gyNzk4Zno5NUExSGl3cEJxeXdSVXd3cGtjL1poNktTZzlZTWxBVmRkQkdjeE1NY09DbW9DQUJuOCttSlBwZ3ZwOTZwVGpHMzA0YUhoYjZmYmIzNFA2Vk56VTFJUUVINnU2Wjg4dTk3V3ZQK1pPRHB4MDQxaGI4bXRGNTlIcGUxL2I0MFpHUjl6NjlSdXhqRFptNVdEdjcxL2dUcHc0WVJ1REtGZUdMeTd0N1hNZnVPMDJWNExXOGRCREQ3cTlXS0tjaGlvOU9EamdkdTkrMWZYMjlyck5tN1pBNHhtQnNCbUV5cjdJYmRxdzFaMDVjOFp0dkFaYXdySmxibWwvbnhzZEhkV0xOTW1BK1kxYlhBWXo0Ylp0MjdWUHNYYnRPdTFWRFBOQklCUzh1N3ZYM2Z5dWQ3dmRKMCs0SGNlUHVhblRRMGgvSG9Mcm9EcytOdTZHb1VGUWpYNFBCTThwbEdYWjB1WHVscHR2ZFZkZWVZMmJCNkV4UERTazkvY1IzTy9nQnVpTjc3eEpHc1NxK2ZPaGhTeDNROGlMNnUrS2xTdmRkZEJvQnRHZTFHNm9jV3pkc2wwTWZKcWFScUw5a3dLQ05qb0wxQUlLMUhqZzRMaENIN1B0cVkwVXVLK0RmTkNnaW12anpoZ3BqRUhGMXhpMS9DZW55bXBybmlYZ3NCQWlTN0NtUFJLdUJHTGYrcEpsTHJlT2g2ZDh1ZW1INjU3YnN4UExNWDVMd25qelBlOThoN3ZqaHVzVmoyQU9JVDQxZ01OSGp1azlpdWlMVXpOcUFOMDlmT2NlUHdKaFROV0syczM0YlFtTkY3dXQ4VWpNUitjTUlEbDFPeEdOSG9nenZMU0J4R3dmaUlNa21QeDhWekNaRjJFZG85K28wMExIeFc1MmFDUEJYemtFc0pmb2c3U0RKKzJoSG5Sd1FDbzJXMXRJNTJCdU1QdTZqYTRDZFpKcGVCM215MWV1MWVzVlBRYk11dEwvRkdaK3p0U3NzK1dFakpVM2YrcHU5NjVYTVp1L1JBKzV3OVhXOEt5OWQ5Vk9Ibk9yMTYvWE92eTU1MzhFQnVVZEJ5dWdCalRNNzMzL3Uycm5UWnMyd3k4clpyejk5anZjaHovOEVYZkRsbTF1VVdlbnUrYWE2OXhQZit3ZnVmbmM1RVFiNTBiT3VYdCsrdU9ZSk42dHNqTEhkOTM4YnZjaHBPR3loSUtDTCtGY0EyWmVpZXRuSWZDNFZPR20zK2w4d1ZXUEhaYmdvdUQ1cVE5KzJOMkJwY0lvdjhRRTRYTFZsVmU3ajN6a1h0Zko5eGNBNzN2Zit5Vk1xSzBjUXJ2eGhiTHYyYkRlcmR0MkJhNWRjMzN6K3R6MjdWZWlmUGVEOFRyY2dRUDd0Yi94M3ZlKzMyMVl2MEZNU2RKajR5eXBtcHh0YjlvdDM1YkxYZnRTc2FqMU1RVU9EL1owOXZTNlRqN0ZPWERDbGlZb2kxcFpGdGlRam5sNHAzNTR5N1lUUE1PNjA4c0NhU0dZT3VIaHJWR3dRSTlBNWlUbFVodkJCako5SFdQRnUvUy9hWFhxakkvdmFRUDdPNERaQnJRVkFKbHNUcm5HRE50TXBnS0IwQkdOWVVtS1orcWtYOXBOU2kwQnBQcUQ2UlBNVHpVL1V2VlRRc0NZbjIrRzFTemxCWURhQlkyWkluYWN5ak1kQlJXdUJWQlhxZGVOWi9wRGRMVmFBZ24vSE5icFRBdEo1ejNwelJtejB3NlNqR09kaTdvejdzNVhkMGd0VGVVRkpEdlZCRUF5UmwwenVuend3L3JPaDhRbkF3d09Ec1p0b0xoRTNmSERwNXdwK1JVbGU1eVlyem5EN0lKQi8va0gvODQ5K0tVdnVHOTg4K3ZhWjlpOGVhdWE1UVlzSmViMzlia0hIL29pbGlmZkZqMzZsWWZkeWhVcnNaUzVXblg0N25lL28yWEpYVmdLZlBMam53QlQzK2V1d1N5Znc3WFFpU29meHczdmVuQnA4NTBubjNEZmZ1SmI3dEhISGtFZDVtbXB3TXBTcS9qNjMzL1ZQZjZ0YjdnZi92QUg3dUdISDhRTU51S3V3SkpKeDVKOVRaNS8vbG4zMkZjZmNUOTQ1dnZ1a2E4OEpMK3RXN2ZMSk9PejFsSDlFOFRKaDIxSzVzMXoxa2M5dFIreGJMbXJIRC9pRzV5TjZTZUd5S1NmNWMzNEZIdzhHcXd6QlNBckdIOFFWMzhlNWhWWlk4QmwvMDJVYWJqOVoxQ0lMeC9xQjNNUk5MVjJvSUlUZ1VrOTJncUFRcUdnMGNlS0pwbDBaa0w4bEVEdzZSdjlJamRuZmlPdHBXU1NNUE56TFVaQlFPYjNncUNzdFQrWjN4aGZ6QS9HanpRQmtKZ0lpRHZLekdUbnpVUUNHbzIyaUpnVlREM1VRbUNtVVZ5bVlZaE13bjVsQk9LdU81WVRmSVE0QkFkMFlVMnQ5Z2psdzkrNXBtY05rbnNMWmhzZEdWRWJLanQvN1RCemhwS0VOSFJGS3JDQ2FMZlprZGZVQU03WmR3WFlUaFF1RlFna3h1S2V3d1JVVFg1c2xWaUptWEVJUzRZVkVBamJ3R1JrTkc0eWN1MjhBbUhNZDkvZXZlNXpXUHQvNjF2ZmRLOGQzTzhXTEYzbWJvV3EvaUZvQ3JZNUM2QWNlL2UrQnJVVTZqN0xCT0w1RFM0L0ZtSXBrZ1ZEL1JDYXkzblVrNXJCdTk5OUs1WU43MGRaTVZOakxPUWhoTVZzdU42eFk4ZVVKZk9nSmtGVmx5OU1rUmZieHJlcnFpN1F6N1FBRXNjWlBUaDJ5bWlUV25lM3EzS3pFWDVSMzdDdC9YaTIvSEJsUGpBRW9aSER0ZkxjTEVUNzJjYXVoVWZYU3poaWE3QlpXY3l2R1hYMFRUT3M3d2hMbDNGcmxqY2ZGWjRKYlFVQTFweDVaaHd6YllMWUlKSGJNemlvMWF3dXY0YjRIR0RCVHRPV0FIU0Q0Uk5hUUtRQmlQbkI5RUVMNE95ZjBnUk1DQVJpbmdTN1FNM0x6cnBBQ3JCT2J5YmU5ODZzV2VmcWZMS3RwMGR2eDVFSkpva09zWGppd1JZK0FGTkZHaUZ3cFlkdEdzRVNYMVl6bzlEZ3I3USt2WFlrTk5ob01RT0ZOd0k0UHJpWHdiQkZQTTNvL2N4aWRsNW5JWllJRkt4VWsxazNwdWZaQjE2WWY2SHZ3b0RqbmtVWEJ2cTZWV3UwRDhIYmZHdkJqRWVPSEJZREU0ekxsNXZ1MnIzVGZSc2F4Tis4K0lKN2VkOCt0eFRyMlJXK0xBTGlXWkd0ekhVd2RBV1g2VUE3RmlCZ2J2dm9mVnArckZ5enhwMUgzUDBRakJQVUlNVDRNSGhBaU1YQ0QvLzh2K1VYOHNZZkgrTGkza1YrNDJaUjRZcXJYV0g3VlhxK1BydGx1OHRTdTRGL0RYWEpRbXZSTFVxazFiakVXQXlNYjdlbE9WNmg4aVBQMHRYWHVSTHlLbTY3RXJUZEZmaUNHSlROYWdQUTRoMW1EUjdlRS9CVnZ5Q3dydFptckszaDJFRDgzRW5zbTd4U005b0tBS2d5RXFrUmcrTmlZU0NrcUZFWXpPQ09tYitaQXVOVENMQ2hJN2NZUHdpQkpPT0hXZCtFUUNDbVVVT3o1aWgzWUdvak1QQXNpQU9ZWlJxZkdJdG9naVptUmRySHdGaDhmM3laak1vMVdrKzN2U0tMQjJBNHc1RjRCcE5IZHp1NmtDZXVyYlZoS0JkYjEzQ090dzJGMkhQRjhnU1RDTWt1TmF6RzJqY0ZKT2RhT1VZR2ErSURibnhzM0YyemZidnJ3ZklndmdRdEdYY05CekJVOWQyN2Q4bUg3Y2srWXppS0xJUzJFNHVoWGJqSk9JWCsrT2FPVjl4alVObEpYNFg2L2N3elAzQ3Z2UHdpTkpwdTk0NTMzdWczS0hFVnpLYVZ5WEUzQUMyQ003YSt2aVBVVWM4VlloaEZCSHBXclhJTHNSdzVmMnJRZFowNDZyWXZYdXhlMmZHUyt4cXU4ZkpUVDdwRHp6M2ppbVJzMUxQODZzdlNXT0NVUEtBc2xKQUtGQUM3N3J6d2NKRS9zOEYzSTVSMzczRGxYVHZjMUt1dnVNbWRyN2h4SHV6WnM5TlY5dTdSMjV3NDVqbVd4UEFjaHhxbjFoWUVOUkIzWUsrcklTOGVCaW9qRHg1eDVtMUZOU2FJL1IzK3pOTWpoQ2U4RENGZVRGVytzWW5WYVNUMVV3eVdyeFVZTlkzNG9tMEZBTlpFZXQ2VHpCQVlsTE5ERUFpeW8vUnhXS09BUUpVVGFWdTVZN3MxY0RCajhvd1B1d2tBa0wvOUYyYisxaHBBZWdsd01jVEJ5M3dtTWRBQ2NVYVRPWTdCaHpYaXVaZWZkeE04Q1hmOHFLc2VQK2FxSjlvUXo4K2ZPNk5qclNxWC93M2RNRERJejZ2U0IxM2xQVGR2MmVxVzhLMDhSTElIZlhnQmd1Zm1xeFAzaHVWZjF5eXNuRkVIOGtBWmJmaURBL3RkRjVqdTdnOS8xRjBKVlhvNVZNWFZxOWU2MjI2N3cvM0U5VGRvMXQ2QndhcytSVnRiRytDeS9ycWFXVW44QiszQThtQUJtUFRXRlN0Y1A3U2Izbmw5dXMvLzBYdnZjK3ZXYjlBRzhuWFgzZUR1dmVkamJoTm0xVldZYVRmV0t1NzYxU3ZWWHdONmtZck56bHc2Zk9DdUQrb1c1VnJNdmo5MTIzdDB1dTNaSHowandjOHhRUTJGYmJFTWJmNlRQM21YSzVhQ2RvUXhOSUMyUTZHQ3VzL3lpV0MzRDU1aU1sdTJRcmN3ZFR3WmZhcWRmVkFHWXhDbFlFYVdCbEpFZGVXQko0N1h6aDR6TlhiTnRMZ1pWOFNTSm9mOHNoaHZwb1h4cTgvOHZxR3hGR0xyTHdWTHJucDdxNGU1UXJzSENzajU4V3hnelZoWWtNcnJ2WURoYzNZc25FZ2tGMWhtSHcySWJXMEZnQW1YUnFZR1JVeWNaUDdtc0ptWVgrNlUzL1JDSUdnQjFBQ2l6VUJwQS9ITUgrOEJCRWtZR3ZYQ0NUOVdMcHBKNGlEZ21wMkRFNUlac2ZXbkprZDRPL0JZYTVibjl3dThlNUNPeC9VK2IvWEYvblppNzY0N1B5ajFXa2owOUNJSWtvOTg5RjdYeTl1UkNmQTJJVzhkSnNIQnZ4ZXorMWUvK3FqYTgxWXcvVDBmL1pqNzBBZnZkaHZXYmNUcytySTIzdFNmZGF4LzBYNnNQejhuelVkUWVVMldpbXRxNXM4cUhqeDEybjBicy84eU1NSEhQLzZQM1NjKzhVbjM3bHR1ZDN0MjczYjc5dS9WTGNhdmZlMVJWWWUzK243cTJ1dmNMZSs4eVUxQ2EvcjZDOC9yMXAvVnRTN05ZeFFNOThFUGZBaUM0S2ZFVUYvNytxTzZWY2xiajQ4Ly9nMDBkNC83OElmdWNiZmQraDYzSC9rLysrd3o3cHpmaHprelBPUUdRUlBvYzdhT1dnaUZQSGJzcUR0eDRyakxjR09PaDVrZ2lMa1JSdEpoSjg4UVJuYjJJUTh5QnM2NE1xN0RKWjdhUldPU21xRkV0TjB0d0RJbWd6eWxjYUFlR3M5b1g2b2hHajhCVmsyMW03ZkducDcwYXdFcEtBMklyMm9MSlkyQTYrck9pcndzN0hURE94cUlrRUxGbE1XYkhnM09HTC81cnovNyt5OCs5K3h2Yk5tMHptM2J1c1dLaWRJd1kyTVEvclBpYVR1ZGNzbmU2SVpOSHVhTzBhb1lzVjlVZU8vbjI1ei9kSm1EOEg1UGZmLzc3dmtYWDNUZEdEaW16cmFBVDlJT1o5SG9vNlBjQk1PQUNBVmdtV0hOWWMxWGdlckltWVMzU3ZtWk03MDhBb0dLR2Yra2tKazN6K1d3WnVXeDJvSyttZGlqWFdOK0ZEUmJLcmdQdlA4dU93SElINmIzWlR4emRoZ0RmVmh0MW8xbHh0S2xTLzJ1TXplZytGMStYcXNPeHZpaGUvbWxGMkdIRzM1NXFPS0ZUVnRkQlNxdTVaVnhDNjc3Q2RlTEpjd1Vaa1RPeEJ6WU9lbk9XUXgwdnRUQzZUNytGTDlZaEVGTzlaZ01vQXh3ZlY2TDYrY2E2Z0IxU3h1WUxNYzVucHowTXhYdkpQQnkvS2g3TjlmYWgvZERlNW9VbGRadWNEVys5UmhhenlkLy9sUHUxVmQzdXU4KzlSMlg0eWZqTm0xekV6dGVWRGtDT0x1eXJpeTd2WUxkK2hNalNNekttanRvUS9tTnJPZkxtb3lpc2NVMjJJQjEvY0NKZU9NV1lCM0RqRmdzWk4zQ2VkMTY0U2YzbXBpU3libWhXVnV3R0hYSXVxbWpmT0VHaFllZDJTaHQzT0p5RUlqMklCZUVKU2NLRUxYVHNjbUtmWkNHd2tEd1pXbUJVTXcwNktsYVJjaHR1OHJsYm4yL2R4bFl6eE5QZnROVmhnYjFVcEFLM0ovNTZYdmRiM3p5SHl2YzkxZzB3NyswWTc5NzRzbW5NYTZIM2VsVEF4Ti8rQjkvcXh0dFVBdmh6V0JESXdmTmdnMWs2bit3Yytab0NJdUlqQjdiRlM2M3phUXhoVGhHYk5Da0ZxRFRnT0Z1QUxXQXhDbkFzRG1vcFlBMEFuOFNVSTJMSDVxdENEK3BQL1JHa3VBRmNQYVRKUUtQc0dxRHpIZHcxSW5KYU9ra0Vlb2NoQmhFZWlOUUE0WjcrOXdQZnZSRDd5SjhKaGdML01yeHVuVWIzUG9ORzhYOGhNcHBOanJjZ2RPbjNZc3Z2dUQ5R1FJR1diSGFianZDeVVGUHl4Qm0vQ053SDhXU2hXMFY1c0Z3L29EMUdhTUtQRDZtSngrNWlaa0UzM0pjSDBFOW9Da3dLV2Zwc3p6WTQ1bWZqTVhyTTFlZVJCekQ5WWVIaG5XUWlkZm5PcHhQOXVWS0hjYkFaRVJRQWV0cGJwSmFPZkdqS2xnOURMR3ArdmtnUlpsQ24yT0p4WGN1MGgzSVlRTGdwbUtOQjZOUzRQS0RFZEJHdkNEK1EvMlprTXlyc1RoNFF2WFYreUV0bWN0QjY4cnpmWkRRVU1LbXRkNldwSEZheHRJUkFrSjNPU3ovSkVLNUFxVkJEK3U1WURkQzJhUXhwY0hsQ3N0QndXMk5sbkU3OXZwTlpzQlNtc2xRZzlsUXo5d0REendnUjFzQklBbUMxS2I2QnVZTXpHcG1VaERJM1JBM3hmeXd4OHdQTTVHT2xOejlaMk9hMnc0QkJZcnZDQVF5cGsvZEZhZ2s3Z0tnL0Rhb1d4RWpCREpMOUVjM21zY0dvNFVJbUluMEVNL0pFNVlPaUJ2WDRMMHR6K2dpSHJEeXlibHdSSmR1aGZhQnlhQmV2L1RjRDkzVFAzZ3FNWHQ0aEN3U1dVV0EzNnU3ZHJwdlB2bUV5L2lOSzVaZmR5VlFPTDZkTndrK3lFTUJsb2R3NE96S3MvbjIrbThFZ2tMN0VId2lqdy90WkRDb0ZVeU5nd0lRd29PZzhOQW1IRWVSYjRpb3JhQVpjWmU4ZmdhTXFZMDZUOGk3QnRVOHYzcWRHeG9hd294MHh1VW9FTkYzZFdnbVVSMTllU0xBbjNtcmFJb2pEN25aMzN5cWtNSVo2Z2dEbFRhM2RwMGRPZllldkg2Y0tkM1VMdmpVSjRReSt4Wjl3dnk0d3grdVU5MjdDMXJVRnFWbG5DSTBHRzRpa3ZsSmJLc3d2bGtPbm1Fb1QwM2FKUnFneTgrQVZsRzRmMlFGU3FQWWE2OXJzN2JGMHV3RXhxVkhxQ2xKVlVGNjlZMnlpZk5xcndHZ1VvUm1lRlFzTUh2YURHRnNNTE1iNDVQTWJtNGZuMjdhNVRhN3BXbDJONUxVTEM4Y2d1Uk5hZ2xKWWo0R1ZiMkpVbjhxSzN5VFVXalF6NncrRUFOcTFXb3hCUXBnallzQlpJTXFqU2dkUVVlVU9RREJWUnMrclYxbStaRUorWnF0STV5cDY1akZuM2RmK3RJWDNGRStIaHZxa2V6TkJIaTQ1NnRmL1lyN3poUGZjdVdUeHlGSSt1MWprU2hURmd6RzJaL0ZTeGFSZHM1c1BNL1BaOWp0UG5xeXhLRk5RQ3pyeVdNcUgrdkovUVM5NGd4Q09Lb1Q0L24wU3FQK3J1dWRCR1V3bjBJVmJNc0htbnBZQ3ZWKytOdmYxT1pqYnVVYVZ6MStXR09FWXlQa2E0YmxsK25zMUhvK3Jvck40aHBMaW90OER4L1VZU3NtNUVOTFBHN005bVlZSVVOcFpCR1IrVkZrN2ZTVHl0UTBZZktyVUJxdkk5Q0dvR0h3UVRDK3I2QUdlM25FM2dGSVRaUVRrV2tCTlN3SHUxd1BoQjdISU12WEVtMjhwd01mcnFwT0pPL3VHQW9Vbk9pL01BNVBuRHJ0em8yT3V6SXVQMWwyN3Z4NDNaMDZWM1BIaDZ0dWVJUmZDall0QjJYZWQvLzk5MnVXYVhYQ1FIalhMYmZlT1hqaStDMzkvYjF1d1lMNVNtakVOb3hOV3ZUbi9kaW9VVGorRkI3aUtzenNGc2I0OHJWdy9RZTdZalM3YWM1QXgwK2NkS2RPbmJKSEgrRVd2TkVhRnBpTXdzMHdManVDSnhtR3J3U3JIajFxYnBCT2oyRlE2b3M4NklDa01Halp6ejZjNzg0dmdrSHo2TGdDdElISm80ZmNPSVFDQnhOQmRmazFQdEg0Mmg1M0ZqUG9LR2FlYzVpMXoyTEc1TWJXd1lNSDNGTlBmZGU5QkpYL3ZEOHd4S3d6b3lPdWdQV3BISHk4VnB0SHVGNnFmWXpKcWxEYkMrczM2a01lRmNhdDJ5QldlK0dmZFpHZ0hSdlI2Nmo0bUMrMUh6NEdyU2JGandsbkNtUUtjSnNOK1JFVWxvSEhWTXRZT3l0UE5hSy9Qb3JHNjlmQVJObFZhMlRubzhBMTFJMFFNOUhQLzdFdWhhM2JkUTgvdXh3YURwY25ZOUFVQk1Xd3VqTmZhRGM1UHEwSWJTSy9ZcVdyN3Q5bjBRQUVDNVpDRnRVeHAzclczQlQ2ZWdxY1U2N3dZU0FLQXpBSy9Da0lLbWpqd2pYWFl5MjJ3RTNzZUFVemZNVUVRSWdMb3ZaWjdPeHlpN0ZrQ0gxaVZ3MVhOcVJkTThGaTh4TmYyZldib05YMXloMEI0MmZrNEY1SWRQWWR5Z25CdFdYOWRmQ2U1ODZNVk4zSVdOVk5UTmE1VmVPR3NFUWNnRERudUo0WUd6djU5UGVlK0svTW9xMEF1UGxtQ0lDVHgyL3A2K3ZSMjJuVWJPeEEybEltRGRyNWp6LzYwVE5ocHo4dHdkNFl2OWtPa3AxK1pvL0loeGsxaEhuaW0wOU9RUm9Xd0poMHB4RzdVeUVOMGNpTTNGdFFldlFEM3dqa2VHS3RXSlI2blNWaFZpajA5MEVTOTJOdDJPdjRrSkJVYjNRRU12QTVOVUNqRlEzUE0rZFhYeS8xZHhLejl6Zy8xcEZLazlFZGpkT25CdDFSekxxSGNlMjlQL3FoTzNMa2tEdUpKY2dVbGd5Y3ZhaGVoMUdsdC9oUzlRWVQ4TDBFS0x4dkV6SW9pQ2FJbWh0R05wZ1Uwd1JmZmM3ekFmUG5RNFZlSWliWHN3NExGenEzQUVRVGRjNHVYMkhQNlBOY0ErcXJOL2Z3cy9FUWloa1MzK2FEK0h4bHVDc1dsRWF2UTljMXJYRlJFcnMrQnl6enlrTUZoeENxZ3FrZDJwSnZHTXJxYlVEKzdVSjBMMWprTWt1V0lTWHlZZHVoM1dvRGR0Z29RTlgzL2NlM0ZSZXZ2bzVUdXIyZWJTSHI0K3VGOHZGdFRTVGVHY2lodnJWQ3lVME9ud0ZqY1BZUFJHYmlHUUJ1OEtITUM1ZWdIWmE2U2libktzVk9WKzJaNTJwOWZCTVFpR2JmUWplVkw3ckZIU1U5ajhBVG1tbXdoTDZUQUEyQjJPblI2R0Z1L2VJbnUzU0Z5N0FjQ1hESndsZUMxN0hzUmFPcWZlZERxOXZHWllyWGhqbW1TS2NIQjl3cGFIN2pFT2pqNDJOLy80T252dk1GNXRGZUFMejczWGNPbkRoeFM5KzhIb3dEKzhZZSsxRW1JM2hUbmF0L0N6ZC9zMXZIeDNiKzZUOXB0eGdOZHYybTdaYUpwWjJCVGc2Z3NoUUFCYjV0aDZtWlZ3SXBSeEp4WEx1MVNBR0FodTZmRDlWeUxkYXpRNXBkNUFsaTUyUmg1c2w0R05SU2pjSDh1ZlViTUVnSG1ycFVvQ2Q2bnh0aHBVVjhyVmZXVFowLzQ4WWduYm1uRWNIM1BBMCs4VVZtME1ZYktHZ2I0YnVJR2syK25tUkNhaXQxM211blgyTWhmTDRFUCt0VjQ1ZDl1S0hGbDF4QTBQQmpKMVVRZCttcklMcTVlYW5aSDlvSDErL1VMUGhVSUk4MTgzTmlTYUpncExxdXo0SWhQOVpBbWxGVURyYWJMeXVadnJzYnk2cWplc2NBTnhmMTloOW9CeUp1M2tFNDhGTnJWa2VNYzc2cWpTZmUyUDdLTnNwWTRNczd5T2c4ZThFWG8yaXpMaERLVlBkRWV4VmFZbVlaTklYekk2N0tqVVNxL05hMWFlSlZ1UGVCOFRENXlzdXVnalpnMmtCbHRGTjNyWUxaZjdHT01jZEwwRVkwbEpYbFQza0ZoOVZLcnVBRndaZjFUd1FHc084blVZOEsya29DQUlVOWNYckF2ZWNuYnJiYjV0d1RFMDI1SWZUekVNTE84VHhLTnY5SFR6MzUrSFBNZ3d2QWxxQmFKQk9abW9ySG1ZT21WLzJDUDAxSmRUS2Z4WW5XL2Q2dWRDUnZqL0tSR2V4SU00MWQxMHZZNC9UTlpwTHBBNlVkU2NRQnlXQ2ZCY1dzUFJqQ1cybkZrdDRMR0lqZnZLdEN0ZUl0cGhyVVBqSUd2NU5YTzNuU1prd2tUK1lweUFQWEFsTnp0dUw2VWdOYVNJMEdnZVZnZmZqYUxLck01bWQxRFBtR2V4VjFyUC9yV1BaVWR1OTB1UTFoc0NTdW5zamVyRWhIclFQdFpxQnZDREZJVFY2NzNsVmVldDdlQ3dnL3BSRkJZSW1DRzFyVHpwZmQxRFBmZDJXMmx6THc1QkZaVVU3ZURhbnNmdFVPU0dHTnErOE0wZ3cwQ2NLeWhyZGN1VVNvUWxQaTI0SENPQXY5SEFGbHphOVo1eXF2dktUYnJSbG9JWTFJcDhBTWYraUFoTHU1WWtxQ1dzM1VDOCs2cWVlZjFkdVdrekZWRnN5MDgrZjM2d1FrR1M4SVBURjNvdTZHWmsvR1MvcEdvWWxvVmFyNlJNS1A2SUMycHdOTUpHUjBDa0w0NlplZTFiY0tSa2JQUVJzNTUwWkFQTVhLQ1daaWNueDhRVS92d3o3NU5KdUFnS3BJaGhKekJkTWFQbUorejZnUnM3ZXdLeDNKMjZOOFpBYTdNWGJLcnJ6TkxqTnBqK0tGZkJJbTRzUVY4SlJDSEpDS2tuQ29BNkZlNTZoK1VxcWpZWkd4MU1vMEVGblhJeEVvQTJhK3JMNkRGeXRZSVZUSTVhWGFsbmU4NUNxdjdiSmJhL0MyMGhDd3FaNnhXWnVZMEJ0eCtLV2Z1TTBSSC8raFRianh4bGVSYStjZmc5SnVOemFNbUFnYXBnMS9GanRKWkhveUlSbTB4bGQ5clZrcmY2Z2ZpQkFvSk9BUGtOd0Y5MTZFUmJNL2ZWM0lheE84TXhCZXZSNmd1Tm93UVAwZ2JDdXZ2T2lxRUJaYU9xaWRySzMwNjh2QmRwUldNb20yT25wSWR6QXNvMGJDVHlEVWl4OUV6Zk9RRnZNZzhhNkZweHlmN2FCMngyVUs0MEp3ODZ0UnR2Rkc5cW03RlN1V3V5VkxscmpCazBHUUIvamEra3VsMGVCQkorUFpUeXFZMWh5WXR6ck0yNEVNajZsenlYSTdlczZKaW1XRzl5UGZmZHdORHcrQ1Rvbk9nTWJRaDN6YUZHUG1mMzcyczc5bVIwK0I2VFVBRGl3d1ZCT3pjUUQ2UVVlVC9oR3pwK3lNYStFV3Y5SHU4MmhqcDVtMHkwemFJelA0MHd3RHc4d1lZZEJZU0tDMEl3bDRjSE9QNmlSMzJBRytySkl6ZTZvM0UrbFFISjlYVFMvTkRETkxRQWptbDRLcko0L3B5R3NWS2h5LzNaK0YycTdPOTNFRU9nTUJ2UDJvRjQvNlk2OEU0ektkWmxITW9GbW9mQnpJdFlQN1hYSGpac2lhSXVSUTNpaWIxMjAvRWcvWDhDUVoxNUV5NlFZcG5qOWd4S2ZidUZtWk9YNE1ZWG1YR1lVNmp2enlYQkloRGZNVEtYLzdWSGtyNGxPR2dlVEdHcHFVZ1lwUHQ4TVNvQWp0aHZzaWRqc3VCK1lMNVNNaEhVMldEL2Jnci94UlZ2bDNkT2dGSGc1TEZ2cGxSc0hVcFU1WGdHQlJuZjFtclI3WlJUaE5IaDh1bFlxdU1IVEtkYTVhNVVxZEhYQVhYQ2ZXOHAxOEowQlhwK3Zac3MwVnNIYm0rd0wwT2ZZVFIxMG50Q3VseTdNY1djMytmQnN3VmUzV3NBNzBQQnU2RTRodEVScThJaWNUOGc1VUEvS290NWFTYUFzS0pBcXdReGhieis5NmhRZCszT25UM0E4YmdCWncxcDA1TzNTdXM2ZnZQL3FrUXRzOWdKdmVkZk9kcHdZR2J1bnA3WElMTVp1SmJmVHZoeWVaVDRhNXhkU3kwalM3WXFUc2ROSm1mZ3BUaXFSZGtXSy9wSjJtckdaUG1zRWZ2MjVnY05DZGhzcW90N0tFTVAxNnBCeEp4QUY4d0tpR1dVcXZ3K0twTDNZQVQ2aGhrSEtkcVZrUjRLRG1acVBOQ1BJQ1lNRXNLTzFCc3pIU2VYRE5xOE0xWUtvOG1Ja2ROam1NOVNpV0dlV0JFeWhCc25CUmhtWmpYVkF1dnFZS1lsMkRqL2V4ZVo4K3YzNmpjeEE2bkpqRjFNZ1h1YnNPUHAyR05hSVluc3lIOHZNVUl1TndoZ3VNTHliekRFV0dZWnpDS2pBL2xqY1phQjhLUTd3TWhFeHA4emFYUWZ2S2o0d1ltRkVtQ2VxOVo0NlFMcm8rMnFvSUJxcGpNR2VyUER0dmp5SG5DeDB1UDMraGN6cXhaK3BzTkNNam5IbUZCdVl2VlY2ZGhFU1k3R3VnbWxPWW90MU5RQ0NQc1JIZDZjZ01ENWtmUDNHdU1KYUZaeUQ0Mlc4SWdVTE9GZEMySFN0V3VnSm1TWjRnNVNuTjdyVWJIUlpWcmdnL1BlZlBrdUVuNzJxdXlOZTNuUjEySzFldGRFdVdMbkVuam1ONXdtV1FsUTdVaUlRL0RGYkZmTHhmQXl6TVF4YjhzRzVicjVKWEJHYUVzazFnN1BCdUFNY0lSOUNSd1pOdUdjYnBHTWJmS05yMDNMbGh6SzJWWC83RDMvMTMzN0dFaHJZYUFHZFdNZ1FaU0xPMm4ySEZkTkhzNjhPOUdXWi9oU2xOZ3oza29mZytEN2xqZTVRKzhrdllhWUxzbXUzTkFEWkVJQ0hsQ0loanhUWjBNdFNxQWdaSXVKVW1JSUFDUVJ0eUdIenlRcGw1NnlyY0RqT3lIZGdwSHBlRnlxeGRiOVlUQXllN2NwVU9BL0hGbitYS3BCc2JIM0hqNTRhMWowQTF0QjFZSnBuK3lVRWVLdzRESkx0OGxSMU9ncURoZ0lvR0Zjck85OWp6OUpveEk0OFBsOFNFZ1NsanBrMFFaMGRvSlFWcUZWaitNSzBZaWtJT3Ftajk5Q21YWDdISy9DbUFGSWFyU2dXRlhZZHJlTGlJYmpLeHBkZTErSUpMQ0lnTVZHbkdSd1Nsd1hUbDhnempKcDVQSnlpOXhZdGFRZTdZVlAwd08vT0ZuUmJGTmdqMVZ1Rno1N1EwVUFDalUraVJFQUZGUXBrZ0tDR3NDbGd2Rnp1S3JxTy9IeG9BQkVEZll0ZXpmTDBybmhtRk50RGorRVpqQ2d3SkFnanNBbFQrSXZxQTM1Nm9sS3RRcjhlaklxVXRqVWo0ZVN0cUsyc0lhVTdsdzZHSmhJa25pUTUrcDRDYnJ4U0diR3RjKyt6WW1IdHkxeXNENTg4Ti9jWHcyY0hmcmt5Vi8ra2YvZDUvK0F1ZkpFSjdEZUNtZDkwNVNBMmd1OU10Q0JvQVFVYVV5WC85eUlTM0dGQ3VLQ3oyTjNld2gzeThIOTEwbWNXSHlkSVEzMkRYYVcveS9YQkRROE9heVlKZk0zd2EvU2JnUFRoZ29UZGg4dWRybmdGMUtJRUkzT2xmdk5pWWtmN3k0ajNqNU1uRnFxdEFjNmhEamVSWmJUYzFvWjEwSFJzZDR0dDVlSys1ekZzeStoaElHWGxsTUZ0ckRZdTBjY0VTd3lGWW9ZcnJVVlRNYkxuT1R1MlMxL2g5ZUpRbFNib05Dc0dTM2JoRk8vdGtTcXJRTERJZi9DRXNybWRnVDJUWXdnYWs0WDE4MWtGbFFaaVlCMWJPaU55UVJEbFVLTlFsSUprUGl4dVlWOWRBNHNMbTdhNjZmdy9Da0tueTVXRWNEdHFzTmdHejNCc0FneEVxQzY0WnltZXdNY0hNcFYxUVkxbS9TZDhuMEZOK1BscUl6MlBBMUk1NGg0SzNTUm5PRUdTcnR3SVhJS3hLMEFMSTNHNFMyczBWVjduaW9pVmc4R1Y2ZFZrZEFwcUNtODhoVUpBekhTY2l6djc4U3ROUzlDa1BiVVVYQm1nVFJUK05TUGlGeUI2cDJBcXpkZ3lvb2I3NnRtUUNiTmZxMUpTcm9Fd29wUHFEVFRzOE1kNzV5c0RwWC96cW4vM1h2MzdxeWNlZnRkaHB0TlVBQWpqenRwNzUvWXhMTStrT2RzN2ttczFEV3RvWlJudWNqL2x4MW13SWErVkhFMlRYYVcrMkI1dkZLTmlFMkR0Q1VHdGJRUU1VTXdLWEFyeWVua0xFak1hbjVmaEtNbnNzbWVhRUc5djNtcXV0WGV1eVYxN2xzakNyeDQrZ25Ld0hENU9BOGN1VEVoWWNZTHh2em9NMGFUUVVET0I3QmZpTlB1NUg2R09kVUtkWmR6OWlvdGhLaWJMd0ZsOWgzVWFYN1o0SFA3WlJrdm5qNGNVdzVkUFZwWUZuTHo2MU9HSG1ORlVmREltdzRnM3Zjc1ViYjliSFVSaGQvdVFRcGJFc2lHQnFRNUVxdm5iS0tXU1pwMmtLdUxCOWh4RmhlWjVIWUY1SzU2OVBnbCtVbVFEaHNYQ1JCRklXUXRhV01xWnRLTDZQd3hPQ2ViNHJVV210YkRtU3NsT3RWWllpbURuZjIrdHlDM25Pb1JPQnZPVUxMYUplVWR4U0FjczlKS1RXc0FDei93cVVrOHdmRjhueU56TEl4YkxBRXZzU2FWY2lFNE9Qbi9SVmxOMys3a29EdXFpUlFXdmp4MmJZVHRKd0lEbXoyZHIvaCtDR3pHTzAxUURlZWVPTmQ1NGFITGlGNzZ2alNVQjFrQStMN1BoUjg5SHRQV2phWVBSMmIvSkg4V1JWSk5sRFBMUE96cy95YjI5eS9UODhkQWFxTHQvMzdoTUJzUTFJT1pMd2VZSFlrR09hNWVqd1BlTEIyVXBIZzhHSUROT0dOZUx6bFZEZ0VwZ2d6TUFPblpKZnZkcmx1Y21IQWNTanV2ckVHUDRvUEhqWUJJVlVPZlh3RFc5ZjhkZ3JYeXpTMlcxMnBoVjFRNFdHNnM4RFI3aU1qdWh5aHNiNmo4TmRET0JuUzg2YVBBbEpsWjR6WUc3SmNwZm5qbkZseW1XNmtSZVhCcjN6WEpacU4rL0hnK1NteVJtR1Q4Q0JHVU5yY0VCSkNEQi81Rm00NGxxMWp3aGw0dTFBZmVhTDZXbjZnMUU1TWhUelJadzhseW9IOWttUXF6bVpseHBWclEwMzJnekNMYjk1cStMbndKRFV0TGcwMG9FZW5uRWdRZjJtV3M5TnY4TDhoZEFvWGxPNUlzWm41cjdrY3BmTGVsTlBEbmxRdUJTWExIVWxyTnM3bGkyREhlb3pabnNlbm1KNGpnZTlrQVp6ajE3RXdhVVozV1Q2VW9ITEdLamN2ZjFRL2J2MUdIZDRia09YSkVWSU9RQzQ3YitKSWdRSFRMUEdvY3FmSm9VbnZ4S01ma3VDNWVZdFNMNHFISU1LMVk4bXd0WDlXNjhjT0xQcmxXZThPNFcyQXVER20yNkNBQmk4cGJ1ckEwdUFmdCtjQUFkcVpJVk4veHpBM2gzc0ZpQS9rU1dJN0JiWCt5Vk5XVnVFUlY1bW1jNmtBQmdhSHBaNkdQeUZoRFdOT0NEWU5JZ3dxRklDSU5WZGRhbmVIT1RadnZqMVh6bFFPT0NpM1gweXdidytNS0lOZGg0bXFmcUhpY0orQisycUtmNzV6b0Q2K2JOMjRFaU1rcmdtQmpncUpPS0RPZm4rQlJqY1lGSnFKSWhHWnJjWmxZekFiUXJiSUN0Q3E4aVdNS05SOHpoNVZPdDREaVNIdE54VTVGbFJNa2tHU3hJTk1Bb09NaU52ZmZGYXZMU21TeXNHTGJ5Tnh6SlFLREJOOWRoUk82akU1WTd5QlVIWVpLSFpaS0Z4WkNwVnRRMWY0RUVkaFdVVmMvb2NqWG5CWUNncjc1RHdDenoxNFZPdWpyN2tQb1FPRmtHVHFad2FVUHZ4b0JMWDR0SkkyTjdVQXBDZUNIMnVMc1FQaFZJV0FwV2ZMWE5ub0RtZHhkTHB6Q21YZzhsbFZKWG5Pbmh3aS9zdy9BQXB5bEtlbUhTanUzZnJ6QVBMbTg5eURMSnRJSVM1dEVMZjhlVXdCdGJDMThXc0hwSEZBKzRXNGNGTEx2ekV2b2JnYjBCcFJpQ1V0alM4RFFvb2RQZTZTZFNIZXg5YzdrUTg0ZHd0QzdkdithdWhWMThOWjVRanRCVUE3N2pweGp0UER3emV3dHNoQ3haNGFjT3h4NStFM2E1QjArd0s1ei9kOG1md2RIYkN1Mm1MTFczRFpqS2xBUXhEQThEZ1VDN20zWUMwWjhvRmh3WW5Cb0lFUUxvSEJEN1J4OE1wUE1WR0xZQm42a242Y2d6WDhWalQ2MUFRaU9mOWN6d2VDMGFZZW5XbnpmVFVGRkRlcEFESXpvYzZDeWJVaGg3dlBHQkprVG9Zd3pQd0lKcmNMT09PUEQ5UXFnd1FuenY1WkNLQ2c1L2ZIUkJoWnF1Zk9lc3FSdys2ekxsaFU1Zko4R0pXWEFPenJvUUFCUU1HRCs4YTVOZHRzdjBJQ2dya3oyelZKc2hYMmdEL3NBeml1cGt6TUhmdmxSNzU2TFFpODZHYjF5SVR3YzFiaUR6UHpvMnNhRmNkcHUzTXc5MEZZUXFoWmw5Z05xMUQ0YndvK3dRL3RuemlXaDdyZDlRdFI0MWgzUVlJQ3BTVit5dCtERmhaa1NmU0Z6WnUxcWxBQ2lvTytEelVmb2hpbnpjL21ZR2NrWXpmQ09BbTVSUmY4WVhWOFJUNnZzSmxDVitVd2lWZGxWb1Y3OXhrc2VyZzh3aThCa21YQk5RcTlrZFAraXN3aWdCNGQrU2REdU5mMGkrT1l2NzY1Zk1aWENwQ3k3SXdBOGNDaGZJVUQ2UkJDOGh3bndjVkExOTAxT3E1MWNPN1hubkFSNDFnbzZVVnVKZUF2M2dkYm8wdk95aGEyNnREZkJ6NmFWYnpZVDZOcmQ4YjdUYjRaWWIwWG1xbDEvd01wems5aFpjeWNEMmRnbzJIQk9oaG5zRVdSVWs1a2tpME1pQjFIQ28wWjZXQVZCNEpjSTNLd1RmMTlGT1l0UVl4eTRJWmt0a2hQbXFLVERIWW9aN3k1UlhUUVVuUnlWd3E2TGdybUNVSDFkcENlUEc0QU56WUt2SHNld1h0Y25DL0JKVE50R1FzcnVkSnZEdEFKalE3bDAxTXg3ZmQ1S0UyUndNWlA3cDFobXVUQ2ZKUXo4c3YvRWduQkRsejh0dDRJVDMzVDVqTzhpV2pJd09za1hnSHhVN29sZFFHRE5NU2hmV0JzTTZ2WFlmMStnRXdtTzIvTUU4cmJ5aXptYUZJZEZONGFJM1BqVDQybzBKSUJ0MktQUXZoQklFWG5RTmcrVGowMmZhZW1Da2ZrYTZlT09xbW9IRk1vTDM0VEFLUDA0NURFRk4wZFBGaG5HcE5HOE5XRGlPeVVkSXRQNWxXZC9OTHhFbitlVC84c0JBc2NvUkdmN1A2T00vOWdBNmpFQS9FZzBGRkxJdDRMb0tmTkdQN1VOaWllLyszamZmY2Y2L1NKdUJ6YThhbmZ2RXp2Ly9xanBkK2d6dWtDeGIwMmJBaVU4cGdxL0dmUDYzOHpKU2ZKZU52azJuL3dRMTdiR0ZRazF1eFpXbE9relJIUmtaMUY0QXZacUJRWVB3azBpNmd5UU1OZzRaanErbDBWMmgwQXZubnRtelRFVkxPNU96RUFOblVFWEl5RTZ5VnIzSjF6Q2c4TkpMSGVqNi9lWXVyN25pWk5ZQkNZQStmVU5qcGdSZk1ZRHAzRUNGeFhZQXVVaGFNNGpDb3M2UG50Y3pKTDEyQjZRdE14Q1BJWUNqRzRxelowOXZuZXE2LzBWVmUyKzBxVUdtcmxVbkVONmFrTUE2RFQyMkhmekpqZ2Jmb3dJQ1F1eTZEbWJWODhwaXJuSUdxTGNGQURRTnBWcTl6Wlo2Qkh6cWw2aktNcGpMaFA1aWRnbHRhRGoxUUhuVVBOMHE0TElKZ3FiOW1SM3JEMnQwdGhFREQwb09mWCtQMXMxQzUyUVhoaVV6cjM3cWJnc2JDN3ovd2dud0Zldmk2RWgvVzRuc1plUXJTTnFiUjcyaWI0cGJ0dU5adVpxQzJ5MFBvZGVUWmE0akRIUEhEdXBaNnVsM250aXZjNUl2UHVja3lOQW1FNloyRVlHNitmN0VIekYrZThuZUVBbGd1YjIyRVJxd0NFekZVQjBNWTBRcVB2TTFYVFprQys4bGJBVm5oVVgvZmgxMW03VWI1SmNHM1BaM1o4WUtyUWpEejdVc1ZhRjk2M0xsV081SXAxcS9hOThBRDBiM3Q1bXQ1M1ArelAvdWZkcjc4MHIvaXQrclo2QkZRaWJnYUhzazZCRnNpVWlwRmMzQXpmRU5OR3llZ0tXdXMxekJRK1NSZmlXZjNKUUFNcWZ5bXpaeURseHQ1MlNZQndDZmgrTVJhQlRPRTk0a2FNWFNNQUlObjZMa015S0lqaWhDa21pRlhZclpHaDFTaERWQnIwUk9IR1RBdjFOU3BuWHgxbHk5dlZMNDRQOXI0dEY4T2pNa3ZFYk9lT1RJK3lwcmZ1dDBPQWtHZ0VCUUEvZHV2Y1VYa3JZZDZPQUN3SnM5VEFJQUo5QjU4eHVOMk9CaFR6TTlUZmptbzlZRGVxd2lHekt4YmoyWExTNXBGZEZjRTE2OHRXKzdHWG5sSlRBYitSVFFURE5JQTJYZjFyT3BtVFVFM1RRNWllK0ZHRnVWM1dMOXppY0U0Mm5NQW8wNisvS0s0VWUvYXAvYVE0YTFTRXdBVWtyUklGZWZ5QmE1T2FHSjhyVG12bmVWOStpMVh1UElyTDBqNHNDelVDakwrK1F5V2kvS0l0LzQ2aTV3VlRmT2tBR2JZdkhmZTVLb1FTdVh6SSs3c0dEOHVVM2VsanBMdS8zZVVTbGlaWWJua1lhSmtlcWk0Vm5FenZUdjQrQWkwMkcva2JvYTFJK0hIbW5mWE9SYnYremswYUZxUlowN245dTF4WXdkZTA0TkNGWDF1emkrUDZwbFA3SHZvZ2M5WlRJeFJielpoNjdZcjdqcDlhdkRkSExqbnpwMTNmREtPZzRLUFIvS3J1ZVFyRmxvbVM2VHlXeWRUdmRKUlRraHltblpjbEF6QSs2MDBNZENnaXZFK2RWRExkRUlOQTFCVXNJWXZGanJFeE1WaWg2aFU2a1JuZEpyWjBRVjdsMllCMmp2NVRqa1FIOGpndW8rMzRUaGdteHEyZlRzRGlVQ09iSkR0QWZnV1I3NmNhU3A3TUtORWNWc0xBTzdlYzFPUWFycFVWUXhvbHN0aC9WdllzRWxQNEdtSmd6Ymx5VDQrR01TWGpEYkQ1dzZETnU2UVYvbkNTcVpMcU5oY3gvUFlibDN2cVVOY0ROcXVOV0MwWTdpK0dJOTloWld0THd1NlVZT2N3Z1BzNy91RHFqbUdoTm9NdlFoR3pxQmZxRkxtSjhCMDZNZjg1bTF1WXM4dVYrWCtCT09oVURxZWkydFEyTklydERtRmtGMVhnd1F3Zjc3aHByUU5taEdmbVVBY01tcUZUd1JDUzBHTE1FdmtpN1NLYkV5amZLa2hjU0RESkt6dUZzaTlpaW9kV0JkejN5WGYxNjh6Ky94K1E0VXpPWmRlQ0laWWh4Q2dJSUFEMStCNDVWa0FmZ1JrL094NU56TEp2UW9lRWU1MFhieURnemdxUDh4QTBvSm1JRVQwZHRuNDQ5T2EyNko0LzZUYm96R3ZkQnpZK2NjK2dBQjBpNWZCTHczZXFUbS9iemMwZ0FuVFpOUTNGSXp1MVRON2RuN1RSMVBPTGZHUFB2Nnp2emMwZVBvM3g4Yk91VFZyMW9NWjdmaW9DSTNHd2N6T1M2NXRXRGdaeXRic1NkUCs1WWdnZDlyTEk2UkxJdmFJYk0wV3QrUFZGMFVzTTlWQndjWmVHOFNCd2FhMTA5TGw3c1N1VjNYZm11QU9OVjlJa1Z6N2grdnlWelpmNkR6VVNhMjd4OGZBWERrSU1OTUEyRTU4b0NpellKR2JvbXBPUWJsaGk1dkNqQm9HdGhBVkNmbFpsdllRQ2dZNG56TmdIMmpkemZVejdJeFQyclFOU3dPYjhmaFJqVzdNWkNYTWNMd21EeWR4OWd6cmFqRUZya2NoeWZSOGpyMVk3RlJjWTFxSWRmaXovZmpoQzBmVnZIZWVxMlRxYm5UZkxoMWU0bWppcFUxejRMS0JBNnlPdlBsb3JXa0Fhbi9VeFZjQjROakp1SzZWNit4cHdNSGpMck5pbFJ0Ny9vZk1EdW5ZMWhCSkVDck1nQzhxb1Z0bGdyMkNaUXpYNVlRMkFWRi9ydWtGMkV2WFhPK21YdmlSNjdqdUhXNXExdzdkeXFNMlFIQzg4dGh2YnlmWHhtQjZhRDU4RVFqcldrZEZ1SHpxQk9QYmUvMjlJRXFVUEliM1N3V2w0N0c4M3ViL3Zkdjd5eTJyZHlmak42Q1JSMlJsNHhLb2MvM3UrNTFyK0h4WUJjdlRZOTk0V0p2SGZJMmUzbXVna014LzJmL0lGMzVWVm1BYURXRHJYVmpMM2NKSENwY3VYYVpPVTdIUk1Pd1VkaFFIRlUrelZhcFRVS1ZJV0o5aHVhQkRNT1VKSFlTaHljRXlPVFhlZ2liY0JFeCtGSk0wbWFJeCtMV2dxUlorU2grNzdjMm5wekM0SWUrYjJ6T0JPREFWRFE1N1QxN0dUVUlJa0tIWTBMbmxLN1JHYllhSnRkQXh2RitORWFiNy9lWmxncE5nZWJSM3NHZ0oxTE1SM2RQbE0vZVUxS215S2tQOEtGT3phemVieDRzUlVZS0VRcGo1d3E3bzQrT3V3TWRWT2ROM2RMckNtYk5pRWpJNHRRMHlQWWVCTm1vUmg4U0J4L0xwNEZQV25tbmdSY09Nd1RqY1BTK3MzeXlOWm5MUFRsZEdHMWZSMzFwbkl6OXFjaFFDMVBpeVdISndxY0d4b1hBSkFOTUNBaVB5V3Z5MEZ3OEc4ZVRmK012UFM4Vm1mTnZFcGJyT29XbUNpODNBdmxROWtCYzNEZmt3RHZkNDJBNjJNUWt0RXZsV0IwN29MVC9aODJmMVhBQ3Z6U1VLMVhnS08xVGRRZXk1TW9wQ0ZtYy9VK01rNDFQYnpPa09BWnVVRXhCSnpadHdKeWo2b3lhQ3Y0WXcvY3V1REdYUzdZTWlPMzlvRGZZa0plUEVibm5RNWZodEEya0FEVTlUVXVNNXoxZXlRUmdiei9vQWwza2FHc0JqM3RGZUFLemZ1SEZMdFZ6NUVQbStwNWNmWVRUR0YvTy9sZVFIYnBvNG04WEVUMUdmUHMxN3hLMEVRT3d4VFJBR0JoZ0JnM1JrWUVEUDFtczNuNGRZRW12QkdPd0svZ0s0SmgvTFpWd09mbVdKQURHVGxrNjI2VmZCK2plTEdac3FOaCt6UllBWUlDb3ZMSm9WUFBFa0cxL0NVWVg2TEgva3JBSEF3Y0FvU0t2NzdWQUplVFMydkd1bjY4Q0FMNEk1bVo1N09kd01zdXlZbmpNaTFGOHdMdS81RS9hS2Nkc2d0RmR6TVYvOFFOWGtZWnpKRTBmZDVPbVRhbVBHVVYwUWo4dTFFZ1FPM1ZYZStnTVQ4Y2s1blVOQStmaFFWaEVNR0x2UlJqbk12cWRPdU1sakIxMGUvY3FuOE1pb2VjelF2UFZjTE1HZUIzUERUV2JYM1FXNEM5Q2srSVZnTXIvZHVhQjJaWG16SVpnL245elR3Z1o5eVBnTTEzS1Q3Y0d5SXEyK0JveTBCZmd4RHphamtlOUxPc3htRkVmd1RtdDd0bGRMTzFMQnduL1lmUnA1S1VUK0NrLzZlWHVTdkc4aVhuRERERTR1OWZnZ0ZjTTkxYURabkllbXhxWFJSUW1BdGV0V1g0MDExejJVNXZONnU5QzB4dndSYVlCY1BKR1pXL2szRWEvVFJKeGRqRkxNRDZsSGs5L0Q0MEVnN1loSEZZOHNDWnRIa3djbmNEQUN6SkhoSVcxU1pibEx6Uy84WUlBckFDMUtSZ3BNYWlZYW1vMlBtVmp2cmhPVHNMekdMTForaFIwbXoyN3I5V0dJcXpjTjBZK3pIMVcxaG54SjNOM1cyM0xvRDZqdlVjWXc2S3hRdVBiWWlCNEN5a0tqNEw0Sm1UemM0bU5heGl6cWtkY09NQTNEcU54d0Q0RHFQbzhuODVueE11VVk1QisxTkdncEdXaDZwNDY0MnZuVHVBcTBBY1Fud3hhTFlDQXViWkIvRlZwZ3JjYmQrWnBuVmc0dEh2aXgxMlJUSUxDY1pGUUpBekFlWiswU0JGQVI0ZHp2NFQ0RVRjN0l1dFdZNXo0UW1kZklIdXVsUHhpYyt4RU1ZMXd4c1draGpHK1BRRU5qZ0gvVU5welpZWS9iQ2w2d3lvOS9NTGxFWUFNRnY4Z3VONTNoejdRdVVoVE9mZ2gvM203L2RDdXg3UDVmYVFodlJHNExEYWFSd2tKOFV1Ulc3aElBZFFxQUJEaSt6dS9kRFFzMUs0d2g3NDgwS1FGZ3ViYkFMYmZmL3VtQjQ4ZitsTTg0ODFOTVVmbmluR0QxRGhuZWxiUVRzS1RqR1JyOTVMWi91ZEtHdHhESk9FbTdOeGhYcWlLY0hCQmt3Z0FmSzBhVFJ3eFRGK3Z1Sk5UejByVTN1TXJSd3pwNk8vblNjNjdPZHdNMlFIMFNMQUcrUE93dzJ4QXpiN3VmanNHTW1hd0Qya1htMEFFTVlxcmVaRklMRDJ0N01xME5acXJvMUdpNGNXZnJmdzQwQ2hmZENrUjVKYlI4T0dIYWtlMEIyTFY5V1pBUHpYQmVnNHhGeHVOYWtiQzh3TUNJUTFBZFYzdFFtQ0VmcG1XWmZJMVZUcXJTRExjSXRxUWdHTmRiZkh2clI5ZTFQaythQ29qQ2FOS05IeVEzUVdlbUxYMWl2K0R2R1NKcDh2TElna3RVVzVwd2Y0SnJZcjRsRjBJWTRiYVhaV2tzcjFCdUVrRVAvaWZjTXN4TS9nWS9LemNOSzc4NWZaMW1kTWZaR0JKWGlQeDlhZkJUditWOXJvWWxXaEpUbUFTUGYrTVJiUTV6WXFraVg3dFM1dGNPUFBLRlA3SllpZXdhY2MyZGQzYVA3dHZ6ZnE3bmkxMmxldXZIWW1KVUt0eUR0VTRQS0pXUVRodnh4VE1qSTlBZHAwVkovMVEzTXgwZGFnVzdJVFU5SmlZbWZCMjRndzB4RDJTenRmc21wOHEvUjdYUGJoOGwwT0JzRFRBUkdRNk1NWXFacHRRM3oyV3ducy8xOXRzRExjY09peUZpQmpXRzVxRGg1Y3p0TjdFZ2ZXazNOUlB4bVRkTUlqQ29kWU1WTEI3Y1hJZDdoaU5Ed3hMY3h1QldiVjZmY1pVbmV3RGxJdk5wVjUrektOeWFXWXVkc05PZndzTEMrRVdqa0xmK1dBVFpnd21iL3VXamE1a3BZOVpnZE5XUWVTb3RUVnFTWnV5dlA1cEJlQ3ZNZHpQcXFxRVBrMzdtUzdlWmtUdEE4V0lrWGJ4R3VUTGhwaVpIb2VtTTJmNVZlVUpDMVFRQWs0Y1UzZ3pYTjRmL2I0NWpGYko2RUhFOVcvdVpLVi8rTkNFdVIzUVZiOEU0ZWZkN1hYMURXZ0JNREoxMko1LzRHcGFzazlFdFFJd1VWOHZVZi9uZ3d3LytOeDh0enV0eXd0cTFxMzhCczl1ZmMrQ0h4bTdUcmcySUl6SHRzbVdybzVrbURFYTZ5V1RNbHh0VTdHek9JRkx0UWN5QkE4TFVmN29zVDhiWGJqUGQ3QXk1YlFZT2Naa2Y3NTlyM1kyZVllZFlmcnlNZnFPQlFETnBEK1hTWnA2WTNvU083UFFYbWR0TTNnM2dTdG5LMW9qSXAwVVlvWHFZSllKWlcvbkRvWCtydDJ4MFIzWnp4M2FqQUY5TklGM25BTlhCckJFVXFnRDh4RkVqV0hnNndCaVpoNDFNVzZEQU5hRUo0YzV4NEdQcFYybDlldGd0clJ6bTdjdWZybU93SzZUQkx4ay9Sa01SN1RvSlAxb3JOOS9oSEY4SEg0QXNSbzRkY2FkKzhDUUNZd0hneGVrL09mRElnLy9Eckttc0xoOUlBTlFnQUxER0ZETk5pM1I0Y0hHemlMdmkvQllmVDZPSk9mMDZQZHphNG84M1prYXJqcHdKVFZGbWxVcG9MaEo5bUhxbXdzNzJDbThzM2g2bE1GQlk4bndKendYdzFWKzhXMkFsUkgrb29JMTJRNXE1a3d4dllTbC85a3Z3UXhaeExvUzVHcklIYkR5VWI3clZaWGdMT0lHeisvYTQ0UmVmaFFZd2dURmJzeVVBSTllemR4ejR5aGVlc0ZpTjE3bE1zSGJENmwrb1RGYitYRDFpN1gzQjZPSUdIZEpxMWxaSHRjTUZOdUUwMFdmUDNnMEl5V1paVncyMmxyam9Fcnc1U0JXdXVhUnZSdG5aY3J5RE1BL0x3YjU1ODExUE41YUgwcVFvQUl5c0pEWnVVa3dlaUxsRWJtcU53YTJZaUovR1RQV2FldWZOenZHN0ZRbndKT0R3aXovVUhrQ0ZTMDNtall5Z3gxeTk3NUV2dnV5anZTbHQ5cVpqOCtZTnZ6QXlNdnJuVkhlMW1YVWg4QzFDRFlDZHl1ZjFyUk5uaVVTTHZoNTJTZzZFdHZta3ZPbG9LT2NGRlB0dGcxazNXVEppdTRyT09yTUlzMG1SN0p0U3NkTXRXYnpDTFZ1NlZ1OFJESnVSTWNQSHk3eWthUnV3d1MvMlYxM0FxYzAxTWg5RlNZRE84ZXV1ZGZVTkc4ekQ0K3krM2U2TU5BQUtBQ3d4RVJGWG1DclVlaGEvOXRoZlJZOEZYM2dML1JpQUF1RDh5TWlmMit1dkdxczR1eXJ6NUo3ZVhRZVpTVUZpU0xkK3lwVjArRXZRU0tkb2dTaENIRk8yR1JNU3paSGl0T213ZHY3VElZNlpTRFA3NUcyUkxzYkZac2gwb1lWbjE2ZnhsZHBjODJLTEFuQVBadW1TTlc3RHV1MnVGOXFCYnYxNnhyYTlIalBGK0RTVGRzLzhKZ1I4aGdta3ZCSU9XWkZnL0xwcklBRDR2WUlZRkFEREwvMElMRDhCQWNEMVAyTm5qaDc0eW9OOGREVEM3RnJ1eHd3Yk5xMzkxT2o1c1QvVHdSYnZkNkhnL2UxOGpzOGw4QmtFZnU3NVVxTzVaSkhQbTlvcnllR1Z2SEJxMktYUU5FaVJMS1JzTllBdkRJM2xlZDBadG9WeWpuOVNzTms0Um5DYkVZZUZXVHYycnJ2bHk5YTVWU3MyNms0TGw1REc2SGJISnpCK0xCUkNPTjBoMzBTRHB0QktGOHk0OFd1dmNyVVdBdUFNQlVEUUFPQ0gzTDkyOEN0ZitvREZNRnlnZnZ6amdYbjl2ZGVYeTVWN3dxMnhaclQwVElFNyszb2V3QzhqVEVKZkl2Si9mc1I0TS9adm1lWlNrMTM0YlFqMmpTZisrM1gxbTBkMjE0Y3plcHJzcmttNGd4SlRQanFIb1Z1c21IVEdKMGJkNE9samFHY2VmT3JRSnJKOWNaZ25MRDNUaTlEcjZBanJDMXliMStCeGFtL3FJU3ZtbitWazVCK204d2VoN08zT1BBaFZkSk9MNTd0NmYvcFpnTW1oVTI1aThMampSMXB0ZEtrdHYzeG16NnRmVlFTUHkxSUE5TStidDc1YXFYeWNIZGthb1VuYUV6czN2R0dIQTZBbEUxMHdJZWVrbTMvbW1mWi9RNm1oREVsaTNWdjV6NHFteWZmMTBrV1ZTMGt1Z2xybEZSTmlORk1MZjg3dTU4NFB1WW5KVWRjM2I1RVlPQll3U2ROSVFvWitNa040Yk5mMkhleVNpa0l3blJ1YjErbnEvSWhyQXVPbkJ0d2tYeVB1TndCOTlEODVzMmZYaTdKNXhMbGNSbGk3ZHVXN0pxZktUL0V6enBUTzAxWlNqZG9NdmdpbFVPd3dxUnZ0QWN3V2w2aFpHN0taWGE2WDZOb1hERnozb3NyN1ptT2FVdm1nOWpHYVE5b01INEY4UitIUTBkSHR0bTk5UjNReU5SWW90Q3VxSWNvcm1XbXJDOERQTXBmMTVNckZycm9sZlJEb3pKNmQ3dHpPRjEyTjc1N2d0VkRRYWk1LzFlR0gvaTcxV3VGV3VmL1lZK1hLbFp2cnJyTDcvTGxSeW1Mdk94MGdaYjB0WUY1ZnIrc29kVXZGbzBvMk83Um96Z3RvNFV2WEdXOWd0ODZROVlWZitRMHM2OFVpVVNTenpxS01pQkxIamNlYzhXbmRkWGYxdXV1dmZUZUVRTUg4UGVjSFRZRHBUQnRJYWdZSnV5N1FZRmNPenUzc3pyclIxV3RnaTBmN1dRcUFYUys1cWdRQVBES1prYTd1NHNJZER6eVFPc2NlOHJqY2tGdXhjdGtERXhNVDkrbVZVdE9nZFFQd2RWbzlldmxJRnVzdnFtZHZPbFN3aSt1ZXQwK25YbUJKM29DQ3p6N0xpeXZyOUtrWTZwa1NETi9SMGVuV3JMVE51c0NvcWZSZzZpU00wUlAyQ0xTSEhKd2JYcmZPWmErNjFyc0FCSjNaL1lvYjJiTkRqMW5iQTlhWnZ6LzQ2SmZ1dEFneDBsZTh6TEJpellxN1hhMTJneHgrSnpTQ2Q1aGh2NUMzL1psY2JqbDNaRHM3TzVlN2V2WjJ2Y20yb1dPU3VOQUdUSFo4M0lWdkxKckxPTXRTWDBEbDBnUDA3UVpmdGxrVWNmYTFTTVJzYlkwUXpjc3crRlFrbHdLelEzcUV5QlZsRmVlWnVmSWExMy83KzgzdGNlYlZWOXpvM3AydVVxbllIWUJzNXQ4ZmZPUkx2MldoTVdaZjMzOWcyTFp0MjRmSEp5WWVsc28yalFDWUhwWXVtVHJkcGEwd2M0eExnL1oxdXJEYVhrVGJYRVNTTkJvellKdkZmclBKUHAxaUdpalNMUE9PQXMwU3g0MVZjNnIrZkIranZiejEwcUMwL1dxMzZBTWY5UzdEbVowdnU5SDl1eVFBOUlpNnE5OTY2TkdIdnV1REk3d0Z1dTJQQjJxMUtiNTVReDBYYjlwY0tIR1RKMDF1UnNJVm00aUZ1TlNFbnpZVWxYOVdmNmpYak5Ud2w3ekdSVkJqbTVsLzB0MU1kdGpHekVaN0l5WFQ2ZjU4Z3ByakpzcFdDK1RqYWdmZTR1Qkh4TG1FcjB3TDdrdEZ5VElhMmFQWkNDWEdhOTJsSDVrMWpjdnlOdUNsd0lJRml3cmxTdmxYZFF1bW9iRXZsRktEcEpGU2Y0amVrdDZZdjFaWFNoSEtOM3RxU0o1Q1krRHJvOFkvK2FNTUxkdFhqTnJnUnlhTjNDRThLVXc4S1Y5bTdlMEU3RVJ5ZGs5UkZBQzd2QkpwRWNaZ3pzcHlYclJtbVFZL2FkYTVZWXV1RldoODRJUXJueDFTM1hDaHJ4LzY4aGYvMGtkUDRkS1U0RExFNXMyYk4weE1UdXl0Vm1wYXR4bDhjN1ZvdGJUWGpCSGVWTHl4bDU0bTkwdDFZYzgveWsvMmlLVTAyTTBybUluUWhGL0NOL1p2UUZSY01LYlpZZEpDdC95OG1mV21BaFVya2RnZ3Z5UkNGS1RoZHcxNEtJalBtMXdLbExac2R3dVNTd0JVN3N3ckw3aXhJL3QwQjZDV3lmenpRNDkrK1k5OWFBb05wWnhEd0twVnF4Wmc4aDhjSFIxdlhpWWxSMCtiRmt3T2lsWURSQWo1TUl6MllCSkswaW9SNGYwVnB3SFJvRXhBam5hNXdkY0hwTU5iK2NkK1JNTHFFWWZIWWJGZkV1YVZETENLNnhjL1lsSHZvTUZadUpuWmFlSlBqbWFrTGhzNW1xODhhNURwWmZpRE93bXkxN1BGdWNhWGEvQ0RtOXJHK1BpNFhzZ3lhL2hyTnlQakN1czJ1QVVmdXMrN0FiVEhtWmVmYzJQSERtSUJscWxsQ203Ri9vY2VhdmxDbnRaNXprRllzM2JWRXhNVFU3ZngyR1lLZnNTMUdYY0FRdXkvTlJJanRuMGVzMGU3Z2RFYWwrS0tNUzV0YnMyd1dpVHFBbXVLRmJ3MThtc1JMbmZTZnhwNzVQSmVBaXFaN0RGMUg0VVBDVmJ5dUwyRmlVZDNlWXlYd29BQmpHOFptVFhPZTJLYzcyemtjZDVpaUFMRFd3TGdiUElMU0lUeEUvRjlkMzFFZGdHRk92TUtCY0FoVjg5a3YzWGdzWWZlNjBPYTBDYjNPUkJidDI3dEhaOGMvNlY2dFhvOVZvZ3RnYzVlaFZic2thTmV6eGh2MjNDeFg0K1V3L1ZodGxoQmk4MWdDT1Q3bXVUbVR4eFpReXc0TTY0WTRnV2t3aHVnZkZzaDRSMWIyOFJ0Uk11MEFkUGtNY3ZzWjRQR3JFS0R6SHdKSDZOTnhPQWROYkM0bUVac2FyYjNKaG5kUkFEVWJLajBmTUNIWUJpWGpUcUZHakY5elB5MFlYbXAyNEZkWFRaMG1oQ3VxZDlXOENITWI4VnExL3YrRDVrYjRDYmdtWmVlYytNbmo2QXcrZnYzUC9ibHBvK0NCclRQZnc1dk8yemF0R2tWQnBjMkpDYndoLzgyL1JkL3d3N1JGMmN5dVVWVm5ZZXEycUdRU3FVcFhjTnhxVXdoWDlpS0VaMEpnbyt2Q1crQ3ZHTFJtTXZsVnRZemJoNjlBalBWNnJWcHh4aVlvUWdtNGNQc2lHZDVwUld1MXR5YXlXUTNJSzBXMFh4dW8xS3BqSUFCRHljdWxnVUQ2aTBaeUYrWklFNXkwN3NFZjkyUU4wRkpRVXhYQStBWGV5Y2N2QkR0WWxUenBCWkFodWNEUDNMcllTRm9CanhONmpVRHBtT0tNWDB3cHFDWGlyU0dqemdERkdYRkt0Znp2cCtTbStBYnBya0VHQjg4dGorZnJXOS83YkhIRXQvMlMyTVdsNWpESEM0L1FKak9BN1FJSHhnWTBENFBtSFZ4cVZSYWlQVjVsbDhnS2hRNjFycXM2OFJzblMzbWl1dXI5V29KUXFZN2w4M2VWcTNXL05RZGk0Y0F5WVdVSmRPZHlXWTZPZk5UN2VkZENIN2ZrQytQbmQrL0NNRnBOcHdkVXlaaXJWanBldC83UWUrQUFLMVUzTmtkTDdqeXlMbFB2L2Jsdi8xejc5MFNzN3ZXSE9Zd2g0dkdOZGRjMHoweE1kRkorM2htdkZnOVgvMFV0SVIvbGMvbCt2c2hBS2cxdE1jMFlTRm9HUVhBWGQ0QnhXeXE3TTd2M3VGY2VlTG5kejd3Vi8vTGU3ZkUzRUdnT2N6aERjYUxMNzQ0dW52MzdsT2t3N3NPSHdOK0Y3eDdGeFFFTEZ1cVVCVGl2MmFOSXZpMUlPMGRHZW53VDlXb1ZpbnJJU0RvTktEcE1TY0E1akNIdHdBblRweDRCcXo3bi9VSk5wMGVCSUdSOWZwdUhVNktTU2NTUlJhbm1jajR6TWVveHU4cytvKzh6SVE1QVRDSE9ieEZ5R1V5bitkcjVpTkdEb0tnZ2VJM0NDVUZReEFXaURNNVlaL0Y4NlFQZ2lLdWJmbE9qemtCTUljNXZFVll1blRwTG5EK3NCZzdVTVRnTWFWbS8wZ3d3QzhRdnl4ZGdTRGhnejhnZmhjUUFja2JORzB4SndEbU1JZTNDTTgrK3l3L3BmeHNyT0lIcGs0d2VqVFRKNFZCQTFGdzhKdUgxQUFnQUdwVEU3WTNNS2NCekdFT2IyL1VxdFdCZUxZM2htOWs3aVNsdElXSXNPNG40NHZLcmpvNWFRS2dVcC94THQrY0FKakRITjVDMURPWjQvRnNEMlp1UXlZUWdvQklFejgzcjNWL0dWb0F6QnFXQUl5dno4M1BnRGtCTUljNXZJWEkxT3ZIMHJNOW1EcEpnY2xGcllTQ0hidmt6ajlmQUVybUQwc0E2QVgrS3UweEp3RG1NSWUzRkxXenNlcFBpaGxiSktHUXBFYWg0TDhxelVlTStRSlEzaEhnR1FBS2hsbGdUZ0RNWVE1dklhaWxrOUViWi9mQTNHbmhRR29sRktEdVQ0Njc2c1M0cTR5UCtUTUIzQVNjR1hNQ1lBNXplQXZCdS9XdEdEb2M2dEhCSHJoYlVoQVdpRk1aR3hWVklRQWMwOEVmbHBidkFFaGlUZ0RNWVE1dkpjRElrYm9mVVl0WlAwa1FHeUx2cm1IbXI0NmJCbENibXZRQ0FPbHE3ckMvU2x2TUNZQTV6T0V0UkxsY1BqRTFWZGJUZ2FSeXVlTEtGWmllK1A3QUN0YjRnWGgwbUx2N3BLQUpTT1d2bG5VbndDR092Z2RZZHk4Y2ZPZTF1L3hsMm1KT0FNeGhEbThod01ERCtOV21uV2J6T2hrN3Btb05URS9HOTFRQm8wZDJMeUJvZDU3NVNiVmEvWkRMMVQ3bGZ2dTNaOXdKblBHZ3dCem1NSWMzRGt1WEx1M09GckozRnJLRkZpOEk1QXhQTTc2Zkgyd1psK25QdXN4eWx3VUxJMDUrODNhWHlXWEdhNW5zamtMT2ZlTzF4eDQ3NTZQT1lRNXptTU1jNWpDSE9jeGhEbk9Zd3h6bU1JZC84SER1L3djLy9FZjkxM2JEbGdBQUFBQkpSVTVFcmtKZ2dnPT0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xX1BSRSIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsidXZtIiwiY3JlZEJsb2IiLCJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwibGFyZ2VCbG9iS2V5IiwibWluUGluTGVuZ3RoIl0sImFhZ3VpZCI6IjMwYjUwMzVlZDI5NzRmZjcwMTBiYWRkYzk2YmE2YTk4Iiwib3B0aW9ucyI6eyJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJsYXJnZUJsb2JzIjp0cnVlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwiYWx3YXlzVXYiOmZhbHNlfSwibWF4TXNnU2l6ZSI6NzYwOSwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0Ijo4LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjUwMCwidHJhbnNwb3J0cyI6WyJ1c2IiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fV0sIm1heFNlcmlhbGl6ZWRMYXJnZUJsb2JBcnJheSI6MjAwOCwibWluUElOTGVuZ3RoIjo0LCJtYXhDcmVkQmxvYkxlbmd0aCI6NjQsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjoxNSwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjEzOX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTA4LTI2IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiRElHSVBBU1MgRlg3RklQUyIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjUwODI2MDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDgtMjYiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MX1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0xMC0yMSJ9LHsiYWFndWlkIjoiNWNhMWFiMWUtZmE1Ny0xMzM3LWYxZDAtYTExNzM3MWNhNzAyIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI1Y2ExYWIxZS1mYTU3LTEzMzctZjFkMC1hMTE3MzcxY2E3MDIiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiQWxsdGhlbnRpY2F0b3IgQW5kcm9pZCBBcHAifSwiZGVzY3JpcHRpb24iOiJBbGx0aGVudGljYXRvciBBbmRyb2lkIEFwcDogcm9hbWluZyBCTEUgRklETzIgQWxsdGhlbnRpY2F0b3IgZm9yIFdpbmRvd3MsIE1hYywgTGludXgsIGFuZCBBbGx0aGVudGljYXRlIGRvb3IgcmVhZGVycyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjo1LCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsicnNhc3NhX3BrY3N2MTVfc2hhMjU2X3JhdyIsInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjowLCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmYWNlcHJpbnRfaW50ZXJuYWwiLCJiYURlc2MiOnsic2VsZkF0dGVzdGVkRlJSIjowLjAsInNlbGZBdHRlc3RlZEZBUiI6MC4wLCJpQVBBUlRocmVzaG9sZCI6MC4wLCJtYXhUZW1wbGF0ZXMiOjAsIm1heFJldHJpZXMiOjAsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIiwiYmFEZXNjIjp7InNlbGZBdHRlc3RlZEZSUiI6MC4wLCJzZWxmQXR0ZXN0ZWRGQVIiOjAuMCwiaUFQQVJUaHJlc2hvbGQiOjAuMCwibWF4VGVtcGxhdGVzIjowLCJtYXhSZXRyaWVzIjowLCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNxRENDQWs2Z0F3SUJBZ0lVR0ZDYzZyaGU0RWlSYS9PU3FQTnd1b1IyamtRd0NnWUlLb1pJemowRUF3SXdnYW94Q3pBSkJnTlZCQVlUQWxWVE1RNHdEQVlEVlFRSURBVlVaWGhoY3pFUU1BNEdBMVVFQnd3SFNHOTFjM1J2YmpFV01CUUdBMVVFQ2d3TlFXeHNkR2hsYm5ScFkyRjBaVEVpTUNBR0ExVUVDd3daUVhWMGFHVnVkR2xqWVhSdmNpQkJkSFJsYzNSaGRHbHZiakVXTUJRR0ExVUVBd3dOUVd4c2RHaGxiblJwWTJGMFpURWxNQ01HQ1NxR1NJYjNEUUVKQVJZV2FHVnNjRUJoYkd4MGFHVnVkR2xqWVhSbExtTnZiVEFlRncweU5EQXpNVFF4TlRVeU5USmFGdzB6TkRBek1USXhOVFV5TlRKYU1JR3FNUXN3Q1FZRFZRUUdFd0pWVXpFT01Bd0dBMVVFQ0F3RlZHVjRZWE14RURBT0JnTlZCQWNNQjBodmRYTjBiMjR4RmpBVUJnTlZCQW9NRFVGc2JIUm9aVzUwYVdOaGRHVXhJakFnQmdOVkJBc01HVUYxZEdobGJuUnBZMkYwYjNJZ1FYUjBaWE4wWVhScGIyNHhGakFVQmdOVkJBTU1EVUZzYkhSb1pXNTBhV05oZEdVeEpUQWpCZ2txaGtpRzl3MEJDUUVXRm1obGJIQkFZV3hzZEdobGJuUnBZMkYwWlM1amIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUzJJQUM1dDNpRVJxNXhwc0VBeXFQempUYitla3grKzVaNFZ1NllybTdTRmZ0emM1QmRVVmk3cW5KcFpvdElkMkdmRmphZDBaamtJZjhUNVI1aHRkVkxvMUF3VGpBZEJnTlZIUTRFRmdRVUF5NVFPbUl0a0J4K1JnRm40RWZsUVZZZm4xRXdId1lEVlIwakJCZ3dGb0FVQXk1UU9tSXRrQngrUmdGbjRFZmxRVllmbjFFd0RBWURWUjBUQVFIL0JBSXdBREFLQmdncWhrak9QUVFEQWdOSUFEQkZBaUVBd3NKYWk4Z2tBMThndythTG1US3d3ME9KTnlkZ040b3plS2U5NTdyUm02MENJRWd3QUxuQlFrcjFBRklUaWJKSitURFBQMnlMNW5vNkhkVEVBQ0E3bUh3SCJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFLQUFBQUNNQ0FZQUFBRDdvYUpnQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQURPVkpSRUZVZU5yc1hWMTI0andTbFRuOTNzd0syanpONDhBS0dsWVFzb0tHRFV4Z0JZRVYwSmtOeEZrQnNBS2NGVFQ5T0UveDdNRGZDbnFrZEttL2lwRDhLOGt5MUQzSEp3bkJ0blJWVWxWZFdUSmpCQUtCUUNBUUNBUUNnVUFnRUFnRUFvRkFJQkFJQkFLQlFDQVFDQVFDZ1VBZ0VBZ0VRZ3RFUVJmdTMvK2Q4eDhQL0hqNTlaOS9KdFJjdGJoYjhCL2YrUEhFdVR1UUFkWWpiOHgvN1BneFJSK24vTmh5TWxNeXIwYmNyVGwzWnpMQVl2S0cvTWNqUDFZRlgwdUF6SnpNN1lJN1lYaUxncTk5aDA0Y0RIZURnQWdVUnZkV1lud01DSDdqMzkrUTJWMXd0eWo1NmdxNFd3VlQ5Z0RJbTBMUEhUYzRQZVBIOGxiZE1uRDN6SSs0d2VsbjhDVHBUUm9nSnk4R3c1dGJ1RndLaHBqZGlPSFo1TzRBaHBqZGhBRkNyTEtDN0habytmSmJFZWRjYTN6b2tEdkIxMU1YM0VXZUNaeER6NDBkM2lhRFFEdTVNdVB6eGQzYXAyd1RlU0l2aGxobDZySE5ncFVlYW5LbmsxVjhjT2NscElrY2sxZEZWbkdOaFBWUXRnbUVPK2V5VGVTUXdBWDAzR0VBN1prRGtkOTdZbndyTUw1UXVGdTdDbWtpQitSTldYTlp4VFV5RnJCc0V6aDNUbVNieUNKNU1mVGFSUThHbVU2bEJ3TjN0bVFWSHlITjFoWjNrU1VDTjh5TnJPSWFuY28yamlVcDEyNVpQT1N3NmRRQVBVa0RQdHl5ZDlubWlyaHJKZHRFRGNrVHBQbVdWWHhJRDg1bG00NWtGUi9jTlpKdG9wcmtoU0FOOUZKNklPNWFHbUJnc29xUEdNZWFiSE9EM0ZXV2JhSUs1SVVzRFFRdFBSQjM1ZHhGSlhGZVgyUVYxNmdsMnhCM0g1Q3dBdGttTWhDNFlmMlVWWnhMRDZ4RXRpSHV6TnpwWkp1QklWaitRZ1JlUUNZUlAwQkNNU1VhbjRrN0xYZGZnSi9LTHZpVzQ1ZXEwb05XdHJsU3FjVkpMQmdCV1hPVGF3a2dnenV3c0tlb0VtWjQyZ2E0RTZObWZJUGNGV2JETU1CbEErUmEzb0N3RDRBTGpOaHZqY2YzQ0RQaDk3K0grNmVCR3VDQ0dSWkpBWGNUOW52S3p6ZDNJK0J1MGdGMzMrSCtpUzVCNDhlSi95cU9PQUpMUENtRjE2Ni85ZVJhTW1hWUdtdTVDTWNIUk5tWEJ1NWk1djZCZzR3WnBzWThqY1pGWVltYzkzNUVIODkwQmxqRnRiaVl4Nnk4THFFSG1XYktERk5UampwUnBZY0RIRDc4WURUOGtqQ3UwQUFMSzJhdzZEYXhTcTNIbzNxaXRXMExZbXRiRDUwbXJPYmpVWlpINDZJNmxpV3lwUVpZWldodlU1bldEem4ySUZzM0J1TVZkek1JbFR2am9GRmpjS2hzZ0xaZGkvVkg1QU43akwxdWZEU0Zzay9iR0xRbjdveHhib1B3cUxZQjRpeG5heGgyeXdyZ2JLRkxUNTQ0S1pOdGRvRnlWeGhuTnN3TEdodGdFOWRpSEFFY2tCbTZFR3owQUliWTJ1aDVQSEZYMUdsaTF2elowRllHV0JxTHdMWGwvbjdlOTZnTFFBaTJJZHQweFowWTBlVCtncWtqYi9OdWdLS2liNVpjeXphMC9Wa3NaK3V1RU5RaXFZb2QyOGJzMkNTQ0MvN3lxVWQxUkZvYlYrSExMUWZKblN2RmdkYzFzbTJBcGJKTklDVDJjamFsNDg1clhYTjFhWURlZytjR3BOYVJDN3FTYlRybnppVlBQZ3pRdVh4UUlmWjdZT2JaSEJub2gveTBUU2RybDMwc0cvVnBnSVd5amFmc3R5amp0QnJiOUp3N2I3R3lid1BFcnNYSmJ2Y1Y5VCtqYSt2SmJJb3I3cnlMK0YwWm9FVENMRzJiMW5CT1ZldmFXczdQOW80N3k3SktiUVBzY3BkOFVlbld1OTNYMkNGZWhmWWhYTkdvL0ZpeWJoN2tyTXZkcWlWM1UzZzQ5TG1yVWIvTEViQ1Y5R0JaVGpHNnRoNHNLbS9DblJOWnBXOHV1SkgwNERoejFicTJhNXBOQ1VsK0N0RUFqYktOUnlQSVMyU2IwRGRsTXNXMndlM0cxWFVNV0lTVkpodnpOUUs5WjRPOHdkN0F6V1BDTW43TStLLzM0UHBDeEVVbUM3SGluZ1U0K3pOQWNRVGhJMFJqblhqajdXSGt3NFo0NE1jSVJwcytiSDRlN0VKNWFZQmRMQjNzQytZeVcxZFg5b09ibmtEOFJhZ1g2MC8rR0NCSUQ0TE1FWkZaNk5wK2FFYkRETmJmQ3RkOEpwb3FaZXd6K1dEeW9JQk1jc3Q2OGpKRFFKM3lRL1RxZFUvY2NoZkowVVNkVGh3VWtEa2lNdjlreFVMZUdGWFIydUF4ZThGZFFqYjNEdUZSQlhjYjNjek5nTWdzUkFMazFWcTkxNVBaRkI4ZVE3amEreUp0Y2tCa21vTmtVZTgyODYwaXpnSFpabmxEbnFTV3h4ZzBKRE83WXZJK0JNazIwT0VHVDhGN2pFRkRNcTlSdHRreXc0NU9sb3hRZUpJMUMzdW5MKzhlNDFOVE12a1BvWXVKeHVyNyswSlM1dkhSZDdqUGpGN3kwM0FFVk1rRXQ5eEgyVVlHeWJNdTFsM0FnaTNwU2ZvWUgycGxsYnI0WklsTU1ZcU1lckpCZHpETEh4VlAwcGVYRlZwZHd6eXdUT2lHaFMzYnlDQjVFMUtoZWpJQlVFbFc2ZFFBVWJDOUJESkRDYlpUSUc4WjhwdlRBNTBBcUNXcmRHNkFDcGxkYTJCWVZ1bE41aG5RQkVCdFdTVVlBMFJrSmtDbWI5bkdxYXppSXo3czBKTTBsbFU2U1VKcUJ0dXVaUnV2c29vUHR5enE1R2x0U210WkpiZ1JVQk5zdTVKdHhQWHV1NUpWUEhvU1YrN1FpcXdTNUFobzZOVzJaSnZnZDVXeTdFblduTGNuaTU2azA2M2hCaDBUdW1rWmJDZlFhNi9lK0F5ZXBNM2FGQ2V5U3E4TXNFV3dmVWF5U3NadUZBMW5VNXpLS3IwelFPeVdLOGcyVWxhWjlFbFc4ZENCTjZ6YTJoVG5zc3BWUUN6K1VkZGV3RHZHNkRXbzVkeE4xZTFHNExNcHNVTWdFQWdFQW9GQUlCQUlCQUtCUUNBUUNBUUNnVUFnRUFnRUFvRkFJQkFJQkFLQlFDQVFDRFlST2IvQjczZjRpa2ZwYzd6cktIcEUvRnhuOVQwOGx2LytZdWxyV2hjQyt3V0tKYXF2dDdUSzcxTURvbFJ5c3BMRnpQSUYwc0pZWnVqekUveXN1L1hFR0owYlhWRmI3T0duV0w5eHNMbEY4TlVZSVBUU1I4M25CNXQ3aU1BN2JJWFJicTlsTkVCMWtxdi9WT1RTVTdBT3QyZ0R6L1JuY0hEdFplb3V5N3hEditOUmI4NEliU0hYOTA1QzNrS3VheGY4SjI1anYvZXdXeUREVE1pR21nTVcyRzl1cmQ2VkRSQ1NpUmorZkJHOVZMaGVHUDNtSWpsbzIzTlJZaUxYLzM2cGtxekFPdGl2VUw0TUF2bWs1RjR4bFAxZmNKN29WRC81b1EwblVEbEV6SnZCK2ZLK09aeWJxRHMxYU9vMFZLK0Z5aE9yeVpxbURXU1poMURtVjlnaG9TaHBrK2VNNGVNajFETlQrSWpSZDk3amJmNDUweVY4bXV2bWlMK3ppeEh3Ry9vOVJSV1pJemZjZGhROEtYOHYwQ2g3a2F4QWd6d3JwTDJmeC8vM0FER016cGhFWXJReWpPNDcvdisxeG9CbDJiYjgvNTgxNTcvSHgveC9TK1hjVTBFU3RVV2ozZ0xpYXpWWms0MjlaNWViRVltL1Yvei9vc0dYYXNPRG9lL1o1ZVpQVXlncnJ1ZENFOS92ZElvSjVBTFBtdXRLRGc1UW50eW1BYzVScjVVVlBVQkJiTG5oRkRYU0VFYXpEQVhwdXN4UmpsNUhWSTR4SEh0Tlk1NVFRNHBydjhqUkZ1b283dnNzZXI1aEZIMUFaUlAxL3d2T2xSMUZuSnVpMFVXdFU4NytmcXRtVnFOampsSDRjMFJsWGtpajV2Y2R5VWFIem5sU1l2Yi84ZU16MURPR3NtWXd1bVZRMXFGeXIxempiWjVSbXh6Z3VwaDdlZjJKRlFOVTNPOEJ4UzFXM2JETURwR1J2SlJrd1RIME5Hd29ZaVBNUFpSSlNCb3hjbk1MWkh3SmJJcUU2N2xHamIwelpQZERhTXcxL2g5c21mWUQvaFFqeWRKUXA3TWhDeTZTdmFSQnFIV1Y5ejFCdVhieXZtZzB5OEVUWUExMkMyV041YWdMMTAyVUxIaU5YUytNeER0a25Pck9XaHNvN3lPNDcwVlpLRlExQzhaRC80dnl2Mk9IMmJCcE44KzFvZXdQS0o1Y2FqcEFqczRkb2xGTmxVdldxbUZDQXg5UXg3QUZHZnFrdXJyQ2ZlV21ueS9vYzJFY0VULytvYnBtS1B1VGhwOHlMSkRiMWU1TUJnTkdwdkRkMmdWTEVuUUJzbTAzWEFjSFUwWXBnMmRwREhnR1JSaGd5V1k5VXBNVENZYTZrMVJTTU1yL2xDT3ZKVTB1UnNaOExQQWM1NEpyekRVeHNuVGZkWEdIUW9kaEFZY3BDZzNhR1NDUU1FWVozSytpT05GR05sekRaZGVaTFJnYmtwc2k2SGJqK3N0akI4TWo2Ym1tOFk1UmpPeWlYQ2RmTWt4ZHQyb2pHM2FOTTZ1Mm9XTXZwOE5ndEQraERuVFdqS0JmS25aQ2s0YzQrekpBTEwvTUtrZ29vWXJTT0Y0NTltU0tMemVNaGxVR2dhRXBjVUVKV1ZNRHpPb2tVbzBOVUltYkRrWHpna28ySEllMmRTN0VoUmswNU5lS2RjNjZySWNJTVhoNWNEeWFsTVdLMEVZeHVvWnBNUGphb0VpdkVOK09pOW9ZUFFGVitzVFNvRUpQWW1WQnNNTnMrTFBsTnBWWjRzVXVvZ2pQTUpxZldCaXZvWldKMWtJWDlFT0grUUhsZlRRWWd5NHhhVEw2WVdQZUdZeHZVVlNldWk3NHJpempOR1REM3pUWjR4aG1JSTVLcnhCaXFFbnZXMEh2L2dreVJOcXlNYit6djhWU2NkK3YwS3N6K093QmpSNnA1WGRtNU1qNDl6WHF0RVl1OVFRdit6bkM5ZTZRTklJbHBBUTEvZ2wwdnpOOFQ1NlRHNUtzWEdrYktiWW40RVcyY0czaDZkNUF6bEd2elpUeTFCOEIwVnlmMU0zeUVuZVJJeU1kb3oyZVgxRkd1V0lmWnlGa2JLUDJsQ2RsTkgyME1ScEJHV2NvZ0Y2Z0VRKy9QRnJVNDk3eVNJWjNzcTljSjFUbURKVjVEMlZlSWVPN2w2b0F1RWFzWis3ZyszczRQek1aQjF3alFXMnpnckpLRjc5QmcwdXN1YlpzMjFrVmxlSlRpUVN4UmJwT0ZUeEJ6OFlWMnFEWUMxOXJ3ajRLbS9pY0F6OW5walJRaWlxM3JkamdGMldIQnAyQXE3aFQ3bi9Xak5DRjE5UG9YMFh4M0VSeGZhbWhmanFqR0JuS2ZHUWFiVkxzaEE5enhBKzY3eXZ0cTk1dnljOTlWUktmRFAxZnZpem5RWkczY3VBdmRCV0VRQ0FRQ0FRQ2dVQWdFQWdFQW9GQUlCQUlCQUtCUUNBUUNBUUNnVUFnRUFnRUFvRndMZmkvQUFNQVRhaXQ2OW5VVVNFQUFBQUFTVVZPUks1Q1lJST0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJGSURPXzJfMCJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiNWNhMWFiMWVmYTU3MTMzN2YxZDBhMTE3MzcxY2E3MDIiLCJvcHRpb25zIjp7InJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwidXYiOnRydWV9LCJtYXhNc2dTaXplIjoxMjAwLCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0IjoxNiwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoxMjgsInRyYW5zcG9ydHMiOlsidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN30seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTI1N31dLCJmaXJtd2FyZVZlcnNpb24iOjV9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0wOS0xNyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjo1LCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IkFsbHRoZW50aWNhdG9yIEFuZHJvaWQgQXBwOiByb2FtaW5nIEJMRSBGSURPMiBBbGx0aGVudGljYXRvciBmb3IgV2luZG93cywgTWFjLCBMaW51eCwgYW5kIEFsbHRoZW50aWNhdGUgZG9vciByZWFkZXJzIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNDA5MTcwMDIiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0wOS0xNyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjo1fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI0LTEwLTExIn0seyJhYWd1aWQiOiJlYWJiNDZjYy1lMjQxLTgwYmYtYWU5ZS05NmZhNmQyOTc1Y2YiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6ImVhYmI0NmNjLWUyNDEtODBiZi1hZTllLTk2ZmE2ZDI5NzVjZiIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJUT0tFTjIgUElOIFBsdXMgU2VjdXJpdHkgS2V5IFNlcmllcyAifSwiZGVzY3JpcHRpb24iOiJUT0tFTjIgUElOIFBsdXMgU2VjdXJpdHkgS2V5IFNlcmllcyAiLCJhbHRlcm5hdGl2ZURlc2NyaXB0aW9ucyI6eyJmciI6IlPDqXJpZSBkZSBjbMOpcyBkZSBzw6ljdXJpdMOpIFRPS0VOMiBQSU4gUGx1cyJ9LCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9LHsibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyIsImVkMjU1MTlfZWRkc2Ffc2hhNTEyX3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NiwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo2LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQ0xEQ0NBZElDQ1FDdjF2bHFLZVc1ZWpBS0JnZ3Foa2pPUFFRREFqQ0JuREVMTUFrR0ExVUVCaE1DUTBneER6QU5CZ05WQkFnTUJrZGxibVYyWVRFUU1BNEdBMVVFQnd3SFZtVnljMjlwZURFUE1BMEdBMVVFQ2d3R1ZFOUxSVTR5TVNJd0lBWURWUVFMREJsQmRYUm9aVzUwYVdOaGRHOXlJRUYwZEdWemRHRjBhVzl1TVJNd0VRWURWUVFEREFwMGIydGxiakl1WTI5dE1TQXdIZ1lKS29aSWh2Y05BUWtCRmhGdlptWnBZMlZBZEc5clpXNHlMbU52YlRBZ0Z3MHhPVEExTVRRd05qVTBNakZhR0E4eU1EY3lNRFV5TURBMk5UUXlNVm93Z1p3eEN6QUpCZ05WQkFZVEFrTklNUTh3RFFZRFZRUUlEQVpIWlc1bGRtRXhFREFPQmdOVkJBY01CMVpsY25OdmFYZ3hEekFOQmdOVkJBb01CbFJQUzBWT01qRWlNQ0FHQTFVRUN3d1pRWFYwYUdWdWRHbGpZWFJ2Y2lCQmRIUmxjM1JoZEdsdmJqRVRNQkVHQTFVRUF3d0tkRzlyWlc0eUxtTnZiVEVnTUI0R0NTcUdTSWIzRFFFSkFSWVJiMlptYVdObFFIUnZhMlZ1TWk1amIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBVGpiU1pkNjEvN0hhb3h5b3hsM3loNnRqazN0TDZBU0NDdW0vMm5kcTg2RFFMdCtEVTZNVjZmNC8rK3VwQVBiVFpVNmpXbnZJTG92dG5zUmdDV3dVWVJNQW9HQ0NxR1NNNDlCQU1DQTBnQU1FVUNJRWlOZk5wQUxaSUg4bjFWeVhwRnlMSXpEZVpFWk9DUmlLaDQ0dW5pYUJaUEFpRUFvZGFuT2xQVUVDakdIRWYrRTRkVEtreUNscExpNEpkRUprVkhRcElYRUpBPSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFnQ0FZQUFBQnplbnIwQUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUtUMmxEUTFCUWFHOTBiM05vYjNBZ1NVTkRJSEJ5YjJacGJHVUFBSGphblZOblZGUHBGajMzM3ZSQ1M0aUFsRXR2VWhVSUlGSkNpNEFVa1NZcUlRa1FTb2dob2RrVlVjRVJSVVVFRzhpZ2lBT09qb0NNRlZFc0RJb0syQWZrSWFLT2c2T0lpc3I3NFh1amE5YTg5K2JOL3JYWFB1ZXM4NTJ6endmQUNBeVdTRE5STllBTXFVSWVFZUNEeDhURzRlUXVRSUVLSkhBQUVBaXpaQ0Z6L1NNQkFQaCtQRHdySXNBSHZnQUJlTk1MQ0FEQVRadkFNQnlIL3cvcVFwbGNBWUNFQWNCMGtUaExDSUFVQUVCNmprS21BRUJHQVlDZG1DWlRBS0FFQUdETFkyTGpBRkF0QUdBbmYrYlRBSUNkK0psN0FRQmJsQ0VWQWFDUkFDQVRaWWhFQUdnN0FLelBWb3BGQUZnd0FCUm1TOFE1QU5ndEFEQkpWMlpJQUxDM0FNRE9FQXV5QUFnTUFEQlJpSVVwQUFSN0FHRElJeU40QUlTWkFCUkc4bGM4OFN1dUVPY3FBQUI0bWJJOHVTUTVSWUZiQ0MxeEIxZFhMaDRvemtrWEt4UTJZUUpobWtBdXdubVpHVEtCTkEvZzg4d0FBS0NSRlJIZ2cvUDllTTRPcnM3T05vNjJEbDh0NnI4Ry95SmlZdVArNWMrcmNFQUFBT0YwZnRIK0xDK3pHb0E3Qm9CdC9xSWw3Z1JvWGd1Z2RmZUxacklQUUxVQW9PbmFWL053K0g0OFBFV2hrTG5aMmVYazVOaEt4RUpiWWNwWGZmNW53bC9BVi8xcytYNDgvUGYxNEw3aUpJRXlYWUZIQlBqZ3dzejBUS1VjejVJSmhHTGM1bzlIL0xjTC8vd2QweUxFU1dLNVdDb1U0MUVTY1k1RW1venpNcVVpaVVLU0tjVWwwdjlrNHQ4cyt3TSszelVBc0dvK0FYdVJMYWhkWXdQMlN5Y1FXSFRBNHZjQUFQSzdiOEhVS0FnRGdHaUQ0YzkzLys4Ly9VZWdKUUNBWmttU2NRQUFYa1FrTGxUS3N6L0hDQUFBUktDQktyQkJHL1RCR0N6QUJoekJCZHpCQy94Z05vUkNKTVRDUWhCQ0NtU0FISEpnS2F5Q1FpaUd6YkFkS21BdjFFQWROTUJSYUlhVGNBNHV3bFc0RGoxd0QvcGhDSjdCS0x5QkNRUkJ5QWdUWVNIYWlBRmlpbGdqamdnWG1ZWDRJY0ZJQkJLTEpDREppQlJSSWt1Uk5VZ3hVb3BVSUZWSUhmSTljZ0k1aDF4R3VwRTd5QUF5Z3Z5R3ZFY3hsSUd5VVQzVURMVkR1YWczR29SR29ndlFaSFF4bW84V29KdlFjclFhUFl3Mm9lZlFxMmdQMm84K1E4Y3d3T2dZQnpQRWJEQXV4c05Dc1Rnc0NaTmp5N0VpckF5cnhocXdWcXdEdTRuMVk4K3hkd1FTZ1VYQUNUWUVkMElnWVI1QlNGaE1XRTdZU0tnZ0hDUTBFZG9KTndrRGhGSENKeUtUcUV1MEpyb1IrY1FZWWpJeGgxaElMQ1BXRW84VEx4QjdpRVBFTnlRU2lVTXlKN21RQWtteHBGVFNFdEpHMG01U0kra3NxWnMwU0Jvams4bmFaR3V5QnptVUxDQXJ5SVhrbmVURDVEUGtHK1FoOGxzS25XSkFjYVQ0VStJb1VzcHFTaG5sRU9VMDVRWmxtREpCVmFPYVV0Mm9vVlFSTlk5YVFxMmh0bEt2VVllb0V6UjFtam5OZ3haSlM2V3RvcFhUR21nWGFQZHByK2gwdWhIZGxSNU9sOUJYMHN2cFIraVg2QVAwZHd3TmhoV0R4NGhuS0JtYkdBY1laeGwzR0srWVRLWVowNHNaeDFRd056SHJtT2VaRDVsdlZWZ3F0aXA4RlpIS0NwVktsU2FWR3lvdlZLbXFwcXJlcWd0VjgxWExWSStwWGxOOXJrWlZNMVBqcVFuVWxxdFZxcDFRNjFNYlUyZXBPNmlIcW1lb2IxUS9wSDVaL1lrR1djTk13MDlEcEZHZ3NWL2p2TVlnQzJNWnMzZ3NJV3NOcTRaMWdUWEVKckhOMlh4MktydVkvUjI3aXoycXFhRTVRek5LTTFlelV2T1VaajhINDVoeCtKeDBUZ25uS0tlWDgzNkszaFR2S2VJcEc2WTBUTGt4WlZ4cnFwYVhsbGlyU0t0UnEwZnJ2VGF1N2FlZHByMUZ1MW43Z1E1Qngwb25YQ2RIWjQvT0JaM25VOWxUM2FjS3B4Wk5QVHIxcmk2cWE2VWJvYnRFZDc5dXArNllucjVlZ0o1TWI2ZmVlYjNuK2h4OUwvMVUvVzM2cC9WSERGZ0dzd3drQnRzTXpoZzh4VFZ4Ynp3ZEw4ZmI4VkZEWGNOQVE2VmhsV0dYNFlTUnVkRThvOVZHalVZUGpHbkdYT01rNDIzR2JjYWpKZ1ltSVNaTFRlcE43cHBTVGJtbUthWTdURHRNeDgzTXphTE4xcGsxbXoweDF6TG5tK2ViMTV2ZnQyQmFlRm9zdHFpMnVHVkpzdVJhcGxudXRyeHVoVm81V2FWWVZWcGRzMGF0bmEwbDFydXR1NmNScDdsT2swNnJudFpudzdEeHRzbTJxYmNac09YWUJ0dXV0bTIyZldGblloZG50OFd1dys2VHZaTjl1bjJOL1QwSERZZlpEcXNkV2gxK2M3UnlGRHBXT3Q2YXpwenVQMzNGOUpicEwyZFl6eERQMkRQanRoUExLY1JwblZPYjAwZG5GMmU1YzRQemlJdUpTNExMTHBjK0xwc2J4dDNJdmVSS2RQVnhYZUY2MHZXZG03T2J3dTJvMjYvdU51NXA3b2Zjbjh3MG55bWVXVE56ME1QSVErQlI1ZEUvQzUrVk1HdmZySDVQUTArQlo3WG5JeTlqTDVGWHJkZXd0NlYzcXZkaDd4Yys5ajV5bitNKzR6dzMzakxlV1YvTU44QzN5TGZMVDhOdm5sK0YzME4vSS85ay8zci8wUUNuZ0NVQlp3T0pnVUdCV3dMNytIcDhJYitPUHpyYlpmYXkyZTFCaktDNVFSVkJqNEt0Z3VYQnJTRm95T3lRclNIMzU1ak9rYzVwRG9WUWZ1alcwQWRoNW1HTHczNE1KNFdIaFZlR1A0NXdpRmdhMFRHWE5YZlIzRU56MzBUNlJKWkUzcHRuTVU4NXJ5MUtOU28rcWk1cVBObzN1alM2UDhZdVpsbk0xVmlkV0Vsc1N4dzVMaXF1Tm01c3Z0Lzg3Zk9INHAzaUMrTjdGNWd2eUYxd2VhSE93dlNGcHhhcExoSXNPcFpBVEloT09KVHdRUkFxcUJhTUpmSVRkeVdPQ25uQ0hjSm5JaS9STnRHSTJFTmNLaDVPOGtncVRYcVM3Skc4Tlhra3hUT2xMT1c1aENlcGtMeE1EVXpkbXpxZUZwcDJJRzB5UFRxOU1ZT1NrWkJ4UXFvaFRaTzJaK3BuNW1aMnk2eGxoYkwreFc2THR5OGVsUWZKYTdPUXJBVlpMUXEyUXFib1ZGb28xeW9Ic21kbFYyYS96WW5LT1phcm5pdk43Y3l6eXR1UU41enZuLy90RXNJUzRaSzJwWVpMVnkwZFdPYTlyR281c2p4eGVkc0s0eFVGSzRaV0Jxdzh1SXEyS20zVlQ2dnRWNWV1ZnIwbWVrMXJnVjdCeW9MQnRRRnI2d3RWQ3VXRmZldmMxKzFkVDFndldkKzFZZnFHblJzK0ZZbUtyaFRiRjVjVmY5Z28zSGpsRzRkdnlyK1ozSlMwcWF2RXVXVFBadEptNmViZUxaNWJEcGFxbCthWERtNE4yZHEwRGQ5V3RPMzE5a1hiTDVmTktOdTdnN1pEdWFPL1BMaThaYWZKenMwN1AxU2tWUFJVK2xRMjd0TGR0V0hYK0c3UjdodDd2UFkwN05YYlc3ejMvVDdKdnR0VkFWVk4xV2JWWmZ0Sis3UDNQNjZKcXVuNGx2dHRYYTFPYlhIdHh3UFNBLzBISXc2MjE3blUxUjNTUFZSU2o5WXI2MGNPeHgrKy9wM3ZkeTBOTmcxVmpaekc0aU53UkhuazZmY0ozL2NlRFRyYWRveDdyT0VIMHg5MkhXY2RMMnBDbXZLYVJwdFRtdnRiWWx1NlQ4dyswZGJxM25yOFI5c2ZENXcwUEZsNVN2TlV5V25hNllMVGsyZnl6NHlkbFoxOWZpNzUzR0Rib3JaNzUyUE8zMm9QYisrNkVIVGgwa1gvaStjN3ZEdk9YUEs0ZFBLeTIrVVRWN2hYbXE4NlgyM3FkT284L3BQVFQ4ZTduTHVhcnJsY2E3bnVlcjIxZTJiMzZSdWVOODdkOUwxNThSYi8xdFdlT1QzZHZmTjZiL2ZGOS9YZkZ0MStjaWY5enN1NzJYY243cTI4VDd4ZjlFRHRRZGxEM1lmVlAxdiszTmp2M0g5cXdIZWc4OUhjUi9jR2hZUFAvcEgxanc5REJZK1pqOHVHRFlicm5qZytPVG5pUDNMOTZmeW5RODlrenlhZUYvNmkvc3V1RnhZdmZ2alY2OWZPMFpqUm9aZnlsNU8vYlh5bC9lckE2eG12MjhiQ3hoNit5WGd6TVY3MFZ2dnR3WGZjZHgzdm85OFBUK1I4SUg4by8yajVzZlZUMEtmN2t4bVRrLzhFQTVqei9HTXpMZHNBQUFBZ1kwaFNUUUFBZWlVQUFJQ0RBQUQ1L3dBQWdPa0FBSFV3QUFEcVlBQUFPcGdBQUJkdmtsL0ZSZ0FBQStkSlJFRlVlTnJFbDA5b1hGVVV4bi8zdnZmbWp6T2RtWmNtY1Nha21VeUdxb1FvbEJRWE1WMkovN0R1bExZR0ZIRlJOMEowSVFoU1VBcDIyWTB1dEJaTHNhSllNR2hBVFYxSU54SnIxWkttTnFVWU01a1lrMmttTXpHWm1mZnZ1aGhKdFVMbWpRN05XYjUzM3prZjN6bmZkOTRWMDVsK2dNZUJWNEY3dVQxeENUZ0dqSXZwVFA5RHdGZHNUendzZ2VOc1h4eVhRSFliQVdSMXdBYUN2ajhSQXBUQ1c5L0FMWmZCZFJHQkFGb2lqZ2dHUWFsbUFOZzY0UG11cmV1NHhTSjJZWmxBdXBmb252c1F3U0J1Y1pYcTVTdTQrWG1NN2wySVVBaGMxMDlLVDIrbXVMMzRPekljb3V2WVVjeG5SekNTeWMzMzFhbkxGTjUrbDVWM1RpSVRjWFRUUlBrQUlhWXovU1VnMXVpZ1d5d1M2RTJUL1hvY3JhME5nSTN2dnNlYW5TUFkxMHQ0Y0E4QXhROCtJdmZjWWJRMkV4bUpOR3BKMlQ4RG1vNXlYYXo1QmZTTkNybkRMN0wyNVRtVVcwVnFJU0xEUS9TY1BvRTVjZ0NuVUNBLytqTEJ2dDJ0WTBEb09zN0tDZ2lKbm9oVCsyVVdveXVGQ0Jnb3k2R2F1MHBrWUMrN0o4OGp3eUZtOXU2ak5uTU52WDNubGd4SXZ3d294MEZMSkpBQkE3ZFVKdENiUnVnNmVBcWhhNFN6QTZ4UFhhRDQvbWtBWXZzZncxMWJiWmhYTnFWYXowTUVnOGhvQkx4YnhLTVVHaUhXdjUwRUlOaVhCdHdXQTVBU1pWa28yd1lwLytVUENoc3RHcTFqclZxK1V1ck5HSkN5TEZUTlFqa08wdk1RNFhDZENTbFJHeHNvUEJJSG53U2c4c09QQ0FJdEJBRFl1VGw2VHIwSG1rWis5QldrbEFqRFFGa1dYcVZLNnNnYlJQWTlnTE44ZzlMWk1mVE96aGExUUVyc1hJN0kwQkRtTTA5ampod2djdjhnVHVGR25lNVNtVUFtVGZMMTF3RElQZjhDenZJeVdteEhpeGh3WEpSdGt6eDZCSUMxTHliNDQ1dnpteExURWdtc3VYbFdUcDdDbXAyai9Obm5CUHF5TFhKQ0liRHplU0xEUTJUUGpRT0ttY0ZocWxQVEdMdTY2ek1nQkhnS1oya0o1WGtZcWVUbTBtb1FQcHhRS2J6YU91YWhBd0NVUGhsai9lSWtvY3pkTjZXb0ZFalFPdG9SUXR4ODFnb1ZlSlVLZ1ZRUHNmMlBBckI2OWxNRUJnamc3elVVQ05tY3FuME5vVnNxRSt5L0IvM09UcFJsVS9ucEVucmJ6bWIzL244SG9DcFZndGxNZmVWZStSbG5jUWtaRHJYc2w2Z3hBRnlNN3E2NkQ4d3Y0SzZ0MVhkQWk4SkhKZzh0WWRiYlVTaFFjOHJ3cTN2TEFQd3p0RFlUdmIwRFpWdXRBU0R2Q0FNUWZlUkI3anJ6TVhKSGRHdHRqWTJ6OHVFWmpNNVVLd0FvTU9ySGpHU1N4S0duR3Z2V2NvR2xFMjloa1ByL1JxUnFOWXgwRDNwSHUrKytPcjh0WXVjWDZuL0pQb3hveTBHVWtTaTFxOWVvWExqb0c0QVdqNk9aSnNxeEc0cEFiOVFHNWRobzhSaGFQTmJVZFBzb0RtQkk0UG8yM295dVMrQ2xiUVF3cWdNVHdCTi9YYzhIYmxQaEtlQk5ZT0xQQVFESXNYcWJzcVpLR3dBQUFBQkpSVTVFcmtKZ2dnPT0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJGSURPXzJfMCIsIkZJRE9fMl8xX1BSRSIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsiY3JlZEJsb2IiLCJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwibGFyZ2VCbG9iS2V5IiwibWluUGluTGVuZ3RoIl0sImFhZ3VpZCI6ImVhYmI0NmNjZTI0MTgwYmZhZTllOTZmYTZkMjk3NWNmIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibGFyZ2VCbG9icyI6dHJ1ZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOnRydWUsImFsd2F5c1V2IjpmYWxzZX0sIm1heE1zZ1NpemUiOjE1MzYsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6OCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjo5NiwidHJhbnNwb3J0cyI6WyJ1c2IiLCJuZmMiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotOH1dLCJtYXhTZXJpYWxpemVkTGFyZ2VCbG9iQXJyYXkiOjIwNDgsImZvcmNlUElOQ2hhbmdlIjpmYWxzZSwibWluUElOTGVuZ3RoIjo2LCJmaXJtd2FyZVZlcnNpb24iOjEsIm1heENyZWRCbG9iTGVuZ3RoIjozMiwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjYsImNlcnRpZmljYXRpb25zIjp7IkZJRE8iOjF9LCJyZW1haW5pbmdEaXNjb3ZlcmFibGVDcmVkZW50aWFscyI6NTB9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMi0yNyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IlRPS0VOMiBQSU4gUGx1cyBTZWN1cml0eSBLZXkgU2VyaWVzIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNDEyMjcwMDQiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0wMS0xNyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyNTYsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiVE9LRU4yIFBJTiBQbHVzIFNlY3VyaXR5IEtleSBTZXJpZXMiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI0MDExNzAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4yIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjQifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMDEtMTciLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MjU2fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI0LTEyLTMwIn0seyJhYWd1aWQiOiI1MzQxNGQ1My01NTRlLTQ3MDAtMDAwMC0wMDAwMDAwMDAwMDAiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjUzNDE0ZDUzLTU1NGUtNDcwMC0wMDAwLTAwMDAwMDAwMDAwMCIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJTYW1zdW5nIFBhc3MifSwiZGVzY3JpcHRpb24iOiJTYW1zdW5nIFBhc3MiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MiwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJ0ZWUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsidGVlIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImludGVybmFsIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDcGpDQ0FrcWdBd0lCQWdJQkF6QU1CZ2dxaGtqT1BRUURBZ1VBTUlHbU1SOHdIUVlEVlFRREV4WlRZVzF6ZFc1bklFVnNaV04wY205dWFXTnpJRU5CTVJ3d0dnWURWUVFLRXhOVFlXMXpkVzVuSUVWc1pXTjBjbTl1YVdOek1SY3dGUVlEVlFRTEV3NVRZVzF6ZFc1bklFMXZZbWxzWlRFVE1CRUdBMVVFQnhNS1UzVjNiMjRnWTJsMGVURUxNQWtHQTFVRUJoTUNTMUl4S2pBb0Jnb0praWFKay9Jc1pBRUJEQnBUWVcxemRXNW5SR1YyYVdObFVtOXZkRU5CUzJWNVgwVkRRekFnRncweU16QTVNVEl3TURJNU5EUmFHQTh5TURZNU1USXpNVEUwTlRrMU9Wb3dnYVl4SHpBZEJnTlZCQU1URmxOaGJYTjFibWNnUld4bFkzUnliMjVwWTNNZ1EwRXhIREFhQmdOVkJBb1RFMU5oYlhOMWJtY2dSV3hsWTNSeWIyNXBZM014RnpBVkJnTlZCQXNURGxOaGJYTjFibWNnVFc5aWFXeGxNUk13RVFZRFZRUUhFd3BUZFhkdmJpQmphWFI1TVFzd0NRWURWUVFHRXdKTFVqRXFNQ2dHQ2dtU0pvbVQ4aXhrQVFFTUdsTmhiWE4xYm1kRVpYWnBZMlZTYjI5MFEwRkxaWGxmUlVORE1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRTdtMnUzWjF4WFZLZkpXTnlORTNITDJNME5aTU9vQURJWkxsczU5blJ0Q0h0dlIxbWdVMnlaTnRPY1lQTzU2dTVEaXJnN21rUzdTUk14ZVo2c1hlZTNLTmpNR0V3SHdZRFZSMGpCQmd3Rm9BVXNwbHphN2RuTVN5VGRIaXBKS2szUEdPUVJrRXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QU9CZ05WSFE4QkFmOEVCQU1DQVFZd0hRWURWUjBPQkJZRUZMS1pjMnUzWnpFc2szUjRxU1NwTnp4amtFWkJNQXdHQ0NxR1NNNDlCQU1DQlFBRFNBQXdSUUlnTk16b0Y3M0RrU1piMUZYMnFOdkdPZGY3eThaWUtRTnNXcmgyTmx3cVFqOENJUURkTzZpK2tlNWU1SytrRXBYbDlPWHUyOFd1dWwrWnk0Smc0bUZUS0NMU1VBPT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSFpsY25OcGIyNDlJakV1TVNJZ2QybGtkR2c5SWpVeWNIZ2lJR2hsYVdkb2REMGlOVEp3ZUNJZ2RtbGxkMEp2ZUQwaU1DQXdJRFV5TGpBZ05USXVNQ0lnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JaUI0Yld4dWN6cDRiR2x1YXowaWFIUjBjRG92TDNkM2R5NTNNeTV2Y21jdk1UazVPUzk0YkdsdWF5SStQR1JsWm5NK1BHTnNhWEJRWVhSb0lHbGtQU0pwTUNJK1BIQmhkR2dnWkQwaVRUTTJNQ3d3SUV3ek5qQXNPREF3SUV3d0xEZ3dNQ0JNTUN3d0lFd3pOakFzTUNCYUlqNDhMM0JoZEdnK1BDOWpiR2x3VUdGMGFENDhZMnhwY0ZCaGRHZ2dhV1E5SW1reElqNDhjR0YwYUNCa1BTSk5NallzTUNCRE16TXVPVGt4TURJM09Dd3dJRFF4TGpFek9UVTRNek1zTUM0NU56VWdORFV1T1RBNE56YzNPQ3cxTGpjM056YzNOemM0SUVNME9TNDNNVEF4T1RRMExEa3VOakExT1RFMk5qY2dOVElzTVRVdU9EWTFNRFUxTmlBMU1pd3lOaUJETlRJc016WXVNVE0wT1RRME5DQTBPUzQzTURrNE16TXpMRFF5TGpNNU5EUTBORFFnTkRVdU9UQTRNRFUxTml3ME5pNHlNakkxT0RNeklFTTBNUzR4TXpnNE5qRXhMRFV4TGpBeU5EWXpPRGtnTXpNdU9Ua3dNekExTml3MU1pQXlOaXcxTWlCRE1UZ3VNREE0T1RjeU1pdzFNaUF4TUM0NE5qQTNOemM0TERVeExqQXlORFl6T0RrZ05pNHdPVEUxT0RNek15dzBOaTR5TWpJMU9ETXpJRU15TGpJNU1ERTJOalkzTERReUxqTTVORFEwTkRRZ01Dd3pOaTR4TXpRNU5EUTBJREFzTWpZZ1F6QXNNVFV1T0RZMU1EVTFOaUF5TGpJNE9UZ3dOVFUyTERrdU5qQTFOVFUxTlRZZ05pNHdPVEE0TmpFeE1TdzFMamMzTnpjM056YzRJRU14TUM0NE5qQXdOVFUyTERBdU9UYzFJREU0TGpBd09EWXhNVEVzTUNBeU5pd3dJRm9pUGp3dmNHRjBhRDQ4TDJOc2FYQlFZWFJvUGp4c2FXNWxZWEpIY21Ga2FXVnVkQ0JwWkQwaWFUSWlJSGd4UFNJeU5uQjRJaUI1TVQwaU5USndlQ0lnZURJOUlqSTJjSGdpSUhreVBTSXdMakU1TlRreU1URTBPSEI0SWlCbmNtRmthV1Z1ZEZWdWFYUnpQU0oxYzJWeVUzQmhZMlZQYmxWelpTSStQSE4wYjNBZ2MzUnZjQzFqYjJ4dmNqMGlJekk1TWpsQ01pSWdiMlptYzJWMFBTSXdKU0krUEM5emRHOXdQanh6ZEc5d0lITjBiM0F0WTI5c2IzSTlJaU14UVRRd1EwTWlJRzltWm5ObGREMGlNVEF3SlNJK1BDOXpkRzl3UGp3dmJHbHVaV0Z5UjNKaFpHbGxiblErUEdOc2FYQlFZWFJvSUdsa1BTSnBNeUkrUEhCaGRHZ2daRDBpVFRNM0xqRTVORFEwTkRRc01DQk1NemN1TVRrME5EUTBOQ3cxTGpjeU1qSXlNakl5SUV3d0xEVXVOekl5TWpJeU1qSWdUREFzTUNCTU16Y3VNVGswTkRRME5Dd3dJRm9pUGp3dmNHRjBhRDQ4TDJOc2FYQlFZWFJvUGp4amJHbHdVR0YwYUNCcFpEMGlhVFFpUGp4d1lYUm9JR1E5SWsweExqZzRNelF5TWpFekxEQWdRekl1TmpJd056VTVPRGNzTUNBekxqWTBNelUyTkRBeUxEQXVNVGd4TmpFd09EY3hJRE11TmpRek5UWTBNRElzTVM0ek1qRXhNVGd4T1NCTU15NDJORE0xTmpRd01pd3hMalk0T1RFeE5UWXlJRXd5TGpNME1qYzVNek01TERFdU5qZzVNVEUxTmpJZ1RESXVNelF5Tnprek16a3NNUzR6TmpRNU1EWTFPU0JETWk0ek5ESTNPVE16T1N3eExqQTNPVFUzTlRjeklESXVNVFl6TVRrMk5qUXNNQzQ0T0RreE5UTXpOekVnTVM0NE5UZ3hOelk0TERBdU9EZzVNVFV6TXpjeElFTXhMalV5T1RNeE56ZzRMREF1T0RnNU1UVXpNemN4SURFdU5ERTJORGd6T1Rnc01TNHdOelV5TnpBNE9DQXhMak00TURnMU9USTNMREV1TWpReU1UVXhNRGtnUXpFdU16WTJOemsyT0Rnc01TNHpNREF5TmpZMU55QXhMak0yTURrd05EQTRMREV1TkRFeE56SXhPRFFnTVM0ek9EWXhORGswTVN3eExqVXhOekkxTnpreklFTXhMalV6TkRZd09EQXlMREl1TVRNd05EazNNeUF6TGpVeE1qUTBPVEF5TERJdU5EVTJNVEU0T0RjZ015NDNNekkxTlRnNE15d3pMalUxTlRVek56STNJRU16TGpjMU16Y3hPVE0zTERNdU5qWTNNRFU1T0NBekxqZ3dNRGM1TkRnNExETXVPVFl4TVRNME9EZ2dNeTQzTXpnd05EazROaXcwTGpReE16QXdPVFl6SUVNekxqWXhNVGd5TXpJeExEVXVNamc1TmpVeU1ETWdNaTQ0TXpnd05UY3lMRFV1TmpFeU1UYzVORGtnTVM0NE9UVTRNVEEwTXl3MUxqWXhNakUzT1RRNUlFTXdMamt4TlRjeU9URXpOaXcxTGpZeE1qRTNPVFE1SURBc05TNHlOVGs1T0RnNU1pQXdMRFF1TURnNE9EQXdOaUJNTUN3ekxqWTRPREkwTnpjeklFd3hMak01T1RRd09ESXpMRE11TmpnNE1qUTNOek1nVERFdU5EQXhNakUyTWpVc05DNHhPVEl6TVRnM09TQkRNUzQwTURFeU1UWXlOU3cwTGpRM09EWTFPRFlnTVM0MU9UWXdPREEzTXl3MExqWTJPVEk0TWpjMUlERXVPVEl4T0RVNU16SXNOQzQyTmpreU9ESTNOU0JETWk0eU56QTNOREEwTERRdU5qWTVNamd5TnpVZ01pNHpPRGd6T1RVMk9TdzBMalE1TVRVd05UZzVJREl1TkRNeE1UZzFOVElzTkM0ek1UVTBNVEEyTVNCRE1pNDBOVFl5TWprNU5pdzBMakl4TmpNNU9UQTFJREl1TkRjeE5EazNOamtzTkM0d05UUTJNekE0TlNBeUxqUXlNVEF3TnpBekxETXVPVEk0TmpRMk56RWdRekl1TVRVeE16UTBNRFlzTXk0eU5UQTVOamt4TVNBd0xqSTVOemt5TVRZM055d3lMamswTVRJNE9EazFJREF1TURjeU1URTVPVFEzTXl3eExqZzNNRE15TWpreUlFTXdMakF4TnpNME16WXdPRFVzTVM0Mk1EVTJOREU0T1NBd0xqQXlNemd6T1RBNU1USXNNUzR6T1Rrd056WXpOQ0F3TGpBMk1UYzBNRFUyTnpjc01TNHhOalF5TmpBeU1TQkRNQzR5TURBeU1qRTFPREVzTUM0ek1EZzROek13TURjZ01DNDVOVGN4TVRJM01qY3NNQ0F4TGpnNE16UXlNakV6TERBZ1dpQk5NVGd1T0RReE1URTROaXd3TGpBeU9UWTJNekV3T0RrZ1F6RTVMalUzTURRNE56Y3NNQzR3TWprMk5qTXhNRGc1SURJd0xqVTNOemc1TURFc01DNHlNRFk1TmpreE1qa2dNakF1TlRjM09Ea3dNU3d4TGpNek5UWTBOekEySUV3eU1DNDFOemM0T1RBeExERXVOekF3TnpVeU1UY2dUREU1TGpJNU1qRTROalFzTVM0M01EQTNOVEl4TnlCTU1Ua3VNamt5TVRnMk5Dd3hMak00TURRME5EUXhJRU14T1M0eU9USXhPRFkwTERFdU1EazNOREF3TlNBeE9TNHhNVFUyTURNc01DNDVNRGczT1RReU5TQXhPQzQ0TVRRME1EQXhMREF1T1RBNE56azBNalVnUXpFNExqUTVNVEl6TXpFc01DNDVNRGczT1RReU5TQXhPQzR6Tnprd05qZzRMREV1TURreE5qRTFPRFlnTVRndU16UXhOemNzTVM0eU5Ua3pOekEwT1NCRE1UZ3VNekk1Tnpnek5Td3hMak14TmpneE16TTBJREU0TGpNeU16QTROekVzTVM0ME1qWTJOVFF5T0NBeE9DNHpORFl5TlRZMkxERXVOVE13TVRjeU5EZ2dRekU0TGpRNU5ETXhNelFzTWk0eE16WTBNVFkwTnlBeU1DNDBOVEF6T1RFeUxESXVORFl6TVRFME1qVWdNakF1TmpZMk1ERTBOQ3d6TGpVME9USXhORFV5SUVNeU1DNDJPRGsyTlRJMkxETXVOalU1TURVMU5EY2dNakF1TnpNME1EUTVOaXd6TGprMU1EY3dPVEEzSURJd0xqWTNOVEU0T0RVc05DNHpPVGcwTVRNMUlFTXlNQzQxTlRFM056UXpMRFV1TWpZMU1UQXdPVE1nTVRrdU56Z3lORGswT1N3MUxqVTRORGd3TXpNeklERTRMamcxTVRBNU5qSXNOUzQxT0RRNE1ETXpNeUJETVRjdU9EYzROVGd4T0N3MUxqVTRORGd3TXpNeklERTJMamszTlRZME1qZ3NOUzR5TXpVME16YzRNeUF4Tmk0NU56VTJOREk0TERRdU1EYzNOVEF3TXpjZ1RERTJMamszTlRZME1qZ3NNeTQyTnpjNE9Ea3hPU0JNTVRndU16VTVOVEUxTkN3ekxqWTNOemc0T1RFNUlFd3hPQzR6TlRrNU1UY3lMRFF1TVRnd05qRTBPVGdnUXpFNExqTTFPVGt4TnpJc05DNDBOak13TlRNMU1pQXhPQzQxTlRVeE9ETTBMRFF1TmpVd05EUTVNRE1nTVRndU9EYzVOelUyTnl3MExqWTFNRFEwT1RBeklFTXhPUzR5TWpVM05UZ3pMRFF1TmpVd05EUTVNRE1nTVRrdU16UXlORGMyTVN3MExqUTNOVEUyTURreElERTVMak00TWpNNE5qVXNOQzR6TURBNE9ERTNOQ0JETVRrdU5EQTJNelU1TlN3MExqSXdOVFUyT1RZMklERTVMalF4T1RneE9USXNOQzR3TkRNNE1ERTBOaUF4T1M0ek56STRNVEEzTERNdU9URTJPVFF5T1NCRE1Ua3VNVEEyTkRJNE9Td3pMakkwTnpJMk9UWXpJREUzTGpJM01URTFNemNzTWk0NU5EQXdOemd5TVNBeE55NHdORGMzTmpJM0xERXVPRGd4TVRVeU15QkRNVFl1T1Rrd01UQTJPU3d4TGpZeE9UTTJNellnTVRZdU9UazVNRGd3TVN3eExqUXhOREl4TURVNElERTNMakF6TlRNd056UXNNUzR4T0RNd09UTTVNeUJETVRjdU1UY3lNekUxTXl3d0xqTXpNemd5TnpZNE5pQXhOeTQ1TWpJMU1Td3dMakF5T1RZMk16RXdPRGtnTVRndU9EUXhNVEU0Tml3d0xqQXlPVFkyTXpFd09Ea2dXaUJOTWpNdU1qTTJORGcwTlN3d0xqRTJOamc0TURJeE1TQk1Nak11TWpNMk1qSTVNU3cwTGpFeE1UTTNNelkySUVNeU15NHlNemN5TURZekxEUXVNVFUzT1RnME5qSWdNak11TWpRd09EZ3hPQ3cwTGpJd05EQTJOelExSURJekxqSTBPVFkzTmpRc05DNHlOREV4TlRFNU5DQkRNak11TWpjMU1USXlOaXcwTGpNM01USXpPVEV6SURJekxqTTROemMxTlRZc05DNDJNakUxT1RNd09DQXlNeTQzTkRZNU5Ea3hMRFF1TmpJeE5Ua3pNRGdnUXpJMExqRXhNRGd6TURFc05DNDJNakUxT1RNd09DQXlOQzR5TWpBMU9ETTJMRFF1TXpjeE1qTTVNVE1nTWpRdU1qUTRNVEExTnl3MExqSTBNVEUxTVRrMElFTXlOQzR5TlRrMk9UQTFMRFF1TVRnMU5USTFNaUF5TkM0eU5qRTNOall6TERRdU1UQTVOalV5TWpJZ01qUXVNalU1Tmprd05TdzBMakEwTWpFeE9UZzRJRXd5TkM0eU5UazJPVEExTERBdU1UWTJPRGd3TWpFeElFd3lOUzQxTnpnMk1EZ3pMREF1TVRZMk9EZ3dNakV4SUV3eU5TNDFOemcyTURnekxETXVPVEl4T0RVek1USWdRekkxTGpVNE5ETXdNRElzTkM0d01UZzJORFE1T1NBeU5TNDFOelEzTWpRMExEUXVNakUyTXprNU1EVWdNalV1TlRZM05ESTFNeXcwTGpJMk9ERTVNVGM0SUVNeU5TNDBOelEzTkRjMUxEVXVNalEyTmpjd056a2dNalF1TnpBM05EYzNMRFV1TlRZME16VTFNamtnTWpNdU56UTJPVFE1TVN3MUxqVTJORE0xTlRJNUlFTXlNaTQzT0RneU9UWXlMRFV1TlRZME16VTFNamtnTWpJdU1ESXdOVFUzTERVdU1qUTJOamN3TnprZ01qRXVPVEk1TlRVek1pdzBMakkyT0RFNU1UYzRJRU15TVM0NU1qTTROakV6TERRdU1qRTJNems1TURVZ01qRXVPVEUyTWprME5DdzBMakF4T0RZME5EazVJREl4TGpreE56azJPRFVzTXk0NU1qRTROVE14TWlCTU1qRXVPVEUzT1RZNE5Td3dMakUyTmpnNE1ESXhNU0JNTWpNdU1qTTJORGcwTlN3d0xqRTJOamc0TURJeE1TQmFJRTB6TkM0Mk1qazNOakl4TERBdU1ESTFPVFl6TmpJNE1pQkRNelV1TlRVek9UazFOaXd3TGpBeU5UazJNell5T0RJZ016WXVNell3TURNNE1pd3dMak16TmpnMU5EVXpOQ0F6Tmk0ME5UZzNOREkzTERFdU16RTVOVEF6T0RjZ1F6TTJMalEyTlRVM015d3hMak01TVRFNU5qa3lJRE0yTGpRMk9ETTRNVFFzTVM0ME5qVXhNVE0zT0NBek5pNDBOamt6TmpBM0xERXVOVEkyTVRnd01qSWdURE0yTGpRMk9UQXdOQ3d4TGpZMU5UYzFOREF5SUV3ek5pNDBOamczTWpBekxERXVOalkyTVRjNE9EUWdURE0yTGpRMk9EY3lNRE1zTVM0NE16Z3dNelkxTkNCTU16VXVNVFUxTXpZd05Td3hMamd6T0RBek5qVTBJRXd6TlM0eE5UVXhOU3d4TGpVek16VTFOVFUySUVNek5TNHhOVFEwTkRjeExERXVORGs0TnpNek5qSWdNelV1TVRVeE5Ea3NNUzQwTURVMk5ERXlNeUF6TlM0eE16azBPVEF4TERFdU16UTFNalkxTnpFZ1F6TTFMakV4TmpZMU5UVXNNUzR5TXpFek1qRTNJRE0xTGpBeE56QTRNRFFzTUM0NU5qWXdNelV6TURZZ016UXVOakU0TVRjM05Dd3dMamsyTmpBek5UTXdOaUJETXpRdU1qTTRNVFU0TWl3d0xqazJOakF6TlRNd05pQXpOQzR4TWpVMU9USXhMREV1TWpFM05UazVPVGtnTXpRdU1EazVOamMzTWl3eExqTTBOVEkyTlRjeElFTXpOQzR3T0RFM09UYzRMREV1TkRFMU5ESXhNeklnTXpRdU1EYzJNVEExT1N3eExqVXdPREV4TURFeUlETTBMakEzTmpFd05Ua3NNUzQxT1RJM09UUTJJRXd6TkM0d056WXhNRFU1TERNdU9UZzJPRGsyTnpJZ1F6TTBMakEzTmpFd05Ua3NOQzR3TlRRMk16QTROU0F6TkM0d09EQXhPVEEzTERRdU1USTNOakV4TlRFZ016UXVNRGc1TnpZMk5TdzBMakU0TmpFek1EVTNJRU16TkM0eE1USTFNelF5TERRdU16STNOVEU0SURNMExqSTBNemcxTURFc05DNDFOamd5TlRNeklETTBMall5TURrNE9Ua3NOQzQxTmpneU5UTXpJRU16TlM0d01EQTBNRFkwTERRdU5UWTRNalV6TXlBek5TNHhNelF4TXpNc05DNHpNamMxTVRnZ016VXVNVFUxTXpZd05TdzBMakU0TmpFek1EVTNJRU16TlM0eE5qWTVORFV5TERRdU1USTNOakV4TlRFZ016VXVNVGN3TmpJNE1pdzBMakExTkRZek1EZzFJRE0xTGpFMk9EazFOREVzTXk0NU9EWTRPVFkzTWlCTU16VXVNVFk0T1RVME1Td3pMakl5T0Rrd05qYzJJRXd6TkM0Mk16UTBORGsyTERNdU1qSTRPVEEyTnpZZ1RETTBMall6TkRRME9UWXNNaTQwTmpRNU16QXpOaUJNTXpZdU5EYzVNVFkyTnl3eUxqUTJORGt6TURNMklFd3pOaTQwTnpreE5qWTNMRE11T0RZNE5URXpNelFnUXpNMkxqUTNOekE1TURnc015NDVOalEwTXpBM09DQXpOaTQwTnpVME9ETTNMRFF1TURNNE5qZzVORFVnTXpZdU5EWXdNREUxTERRdU1qRXpPVGMzTlRjZ1F6TTJMak0zTWpneU9ESXNOUzR4TmprMU9EY3dOeUF6TlM0MU5UTTVPVFUyTERVdU5UQTRNekkwT1RjZ016UXVOakkyTURjNU1TdzFMalV3T0RNeU5EazNJRU16TXk0M01ETTROVFExTERVdU5UQTRNekkwT1RjZ016SXVPRGM1TXpNc05TNHhOamsxT0Rjd055QXpNaTQzT1RNMk1UWTBMRFF1TWpFek9UYzNOVGNnUXpNeUxqYzNOVGt6T0N3MExqQXpPRFk0T1RRMUlETXlMamMzTWpnMU56WXNNeTQ1TmpRME16QTNPQ0F6TWk0M056STROVGMyTERNdU9EWTROVEV6TXpRZ1RETXlMamMzTWpnMU56WXNNUzQyTmpZeE56ZzROQ0JETXpJdU56Y3lPRFUzTml3eExqVTNNREkyTVRRZ016SXVOemc0TnpJNExERXVOREE1TURrNE5UY2dNekl1TnprNU1UQTNOQ3d4TGpNeE9UVXdNemczSUVNek1pNDVNVFF4TlRFeExEQXVNek01TnpRMk9EVTFJRE16TGpjd016ZzFORFVzTUM0d01qVTVOak0yTWpneUlETTBMall5T1RjMk1qRXNNQzR3TWpVNU5qTTJNamd5SUZvZ1RURXlMakUwTkRjME5EY3NNQzR4TmpZNE9EQXlNVEVnVERFeUxqZ3dNakkyTVRZc05DNHlOakUxT1RrNU9DQk1NVE11TkRZd01UZ3dOQ3d3TGpFMk5qZzRNREl4TVNCTU1UVXVOVGcxTWpjME5pd3dMakUyTmpnNE1ESXhNU0JNTVRVdU56QXhPVEkxTlN3MUxqUXdOVEl4TURNMklFd3hOQzR6T1RVeU5qSXNOUzQwTURVeU1UQXpOaUJNTVRRdU16VTVPRE00TWl3d0xqVTFOVGt6TVRBMU5DQk1NVE11TkRZeU1qVTJNaXcxTGpRd05USXhNRE0ySUV3eE1pNHhNems0TlRZekxEVXVOREExTWpFd016WWdUREV4TGpJME16QTNOemtzTUM0MU5UVTVNekV3TlRRZ1RERXhMakl3TnpjNE9DdzFMalF3TlRJeE1ETTJJRXc1TGprd05EUXdOVGdzTlM0ME1EVXlNVEF6TmlCTU1UQXVNREUzTWpNNU55d3dMakUyTmpnNE1ESXhNU0JNTVRJdU1UUTBOelEwTnl3d0xqRTJOamc0TURJeE1TQmFJRTAzTGprd01USTFNalVzTUM0eE5qWTRPREF5TVRFZ1REZ3VPRFl6TWpVek5UZ3NOUzQwTURVeU1UQXpOaUJNTnk0ME5qUXpNVFF4TERVdU5EQTFNakV3TXpZZ1REWXVOelV6T0RJNE9ETXNNQzQxTlRVNU16RXdOVFFnVERZdU1ESTFPRFkyTURJc05TNDBNRFV5TVRBek5pQk1OQzQyTVRjeE5EazRNeXcxTGpRd05USXhNRE0ySUV3MUxqVTRNekUyT0RjekxEQXVNVFkyT0Rnd01qRXhJRXczTGprd01USTFNalVzTUM0eE5qWTRPREF5TVRFZ1dpQk5Namd1TXpBME9ETTJMRFV1TXpVd05Ua3lOVGNnVERJM0xqQXlORFl5TXpNc05TNHpOVEExT1RJMU55Qk1NamN1TURJME5qSXpNeXd3TGpFMk5qZzRNREl4TVNCTU1qZ3VPVFU1T0RjMU15d3dMakUyTmpnNE1ESXhNU0JNTXpBdU1UZzNPVGt3TXl3MExqTTRORE0xTlRRM0lFd3pNQzR4TVRZNE56UTRMREF1TVRZMk9EZ3dNakV4SUV3ek1TNDBNRFUwTlRneExEQXVNVFkyT0Rnd01qRXhJRXd6TVM0ME1EVTBOVGd4TERVdU16VXdOVGt5TlRjZ1RESTVMalUwT1RReU5ERXNOUzR6TlRBMU9USTFOeUJNTWpndU1qTXNNQzQ1T1RrZ1RESTRMak13TkRnek5pdzFMak0xTURVNU1qVTNJRm9pUGp3dmNHRjBhRDQ4TDJOc2FYQlFZWFJvUGp4amJHbHdVR0YwYUNCcFpEMGlhVFVpUGp4d1lYUm9JR1E5SWsweU5DNHpNelV5T1RZMkxESXVORGN3TURZME16SWdRekkxTGpNd09UWTFNRElzTWk0ME56QXdOalF6TWlBeU5pNHhNakV6TWpNc01pNDJOVFkyTURVMk5DQXlOaTQzTmpreU56WTRMRE11TURJNE9UY3pOVFlnUXpJM0xqUXhOekl6TURVc015NDBNREUyT1RnNE15QXlOeTQ1TWprMU1ERTNMRE11T1RBNE5ETXpOamNnTWpndU16QTJNRGt3TWl3MExqVTFNREkxTURFMUlFd3lOaTR6T1RVME5UY3pMRFV1TkRneU5UazVNemNnUXpJMkxqRTVOakE0Tmprc05TNHhORFl6TWpRM0lESTFMamt4T1RFNE16WXNOQzQ0T0RBd09USXpOaUF5TlM0MU5qUTNORGN6TERRdU5qZzBOakUzTURnZ1F6STFMakl4TURNeE1URXNOQzQwT0RreE5ERTNPU0F5TkM0NE1EQTBPVFF5TERRdU16a3hNakkxTkRjZ01qUXVNek0xTWprMk5pdzBMak01TVRJeU5UUTNJRU15TXk0NE1ETTJOREl5TERRdU16a3hNakkxTkRjZ01qTXVOREV3TkRNNU5TdzBMalE1TkRnMU9UVXpJREl6TGpFMU5UWTRPRFVzTkM0M01ESXhNamMyTmlCRE1qSXVPVEF3TlRreE15dzBMamt3T1RNNU5UYzVJREl5TGpjM016VTJNVGtzTlM0eE5EazFOREE1TXlBeU1pNDNOek0xTmpFNUxEVXVOREl5TWpBMU56TWdRekl5TGpjM016VTJNVGtzTlM0M016ZzBOamd6TVNBeU1pNDVOakU0TlRZeUxEVXVPVFkxTURNek9ERWdNak11TXpNNE5EUTBOeXcyTGpFd01EZ3pNREUzSUVNeU15NDNNVFEyT0Rjc05pNHlNemN6TkRFeU5TQXlOQzR5TmpnNE16azRMRFl1TXpneU1EY3hOVGdnTWpRdU9UazVPRFkwTml3MkxqVXpORFkyTXpneElFTXlOUzR6T1RnMk1EVTBMRFl1TmpFeE1UTTROaUF5TlM0M09UazNOamtzTmk0M01URTFOVFkwTkNBeU5pNHlNRFF6T1RRc05pNDRNemN6TkRZM05TQkRNall1TmpBNE5qY3lPU3cyTGprMk1qYzNPVGNnTWpZdU9UYzJPVFUwTXl3M0xqRXpNVGd4TURReklESTNMak13T1RJek9ETXNOeTR6TkRRM09UWXpNU0JETWpjdU5qUXhOVEl5TWl3M0xqVTFOelF5TkRneUlESTNMamt4TURFeE9EVXNOeTQ0TWprM016SXlOaUF5T0M0eE1UVXdNalk1TERndU1UWXlOemt3TnlCRE1qZ3VNekU1T1RNMU5DdzRMalE1TlRRNU1UYzRJREk0TGpReU1qTTRPVFlzT0M0NU1USTFNamsxTlNBeU9DNDBNakl6T0RrMkxEa3VOREUwTWpZeE16Y2dRekk0TGpReU1qTTRPVFlzT1M0M05USXpNakk0TXlBeU9DNHpORFE0TlRZM0xERXdMakV3TkRNeU1UTWdNamd1TVRnNU56a3dPQ3d4TUM0ME5qazFORElnUXpJNExqQXpORE0zT0Rnc01UQXVPRE0wTnpZeU9DQXlOeTQzT1RNNE1Ua3hMREV4TGpFM016RTRNVFlnTWpjdU5EWTNNRGN6TVN3eE1TNDBPRE0zTWpZMElFTXlOeTR4TkRBek1qY3lMREV4TGpjNU5EazROaUF5Tmk0M01qYzNOREV6TERFeUxqQTBPRE0xTXpRZ01qWXVNakk1TXpFMU15d3hNaTR5TkRRMU5ETTBJRU15TlM0M016QTRPRGt6TERFeUxqUTBNVEE1TURnZ01qVXVNVE15TnpjNE1pd3hNaTQxTXprd01EY3hJREkwTGpRek5EazRNVGdzTVRJdU5UTTVNREEzTVNCRE1qTXVNell3TlRrMk9Td3hNaTQxTXprd01EY3hJREl5TGpRMk9EazJPRElzTVRJdU16TXlPREV4SURJeExqYzJNREE1TlRjc01URXVPVEl3TURZeE5pQkRNakV1TURVeE1qSXpNeXd4TVM0MU1EWTVOVFE0SURJd0xqVXdNamsxTkRjc01UQXVPVEV3TlRJeU9DQXlNQzR4TVRVeU9Td3hNQzR4TXpBd05URXhJRXd5TWk0eE9USXdOalE1TERrdU1UWTFNVGd5TWpVZ1F6SXlMalF5TkRZMk16Y3NPUzQyTURRM016TTJNeUF5TWk0M05EQXpNek0xTERrdU9UUXlORE0zTnpRZ01qTXVNVE01TURjME15d3hNQzR4TnpnMk5URTVJRU15TXk0MU16YzRNVFV4TERFd0xqUXhORFV3T0RnZ01qUXVNREF6TURFeU5pd3hNQzQxTXpJd056azRJREkwTGpVek5EWTJOeXd4TUM0MU16SXdOems0SUVNeU5TNHdPRGcwTnpNMkxERXdMalV6TWpBM09UZ2dNalV1TlRBek9ESTROaXd4TUM0ME1UYzNNalVnTWpVdU56Z3dOek14T1N3eE1DNHhPRGt3TVRVeklFTXlOaTR3TlRjeU9Ea3hMRGt1T1RVNU9UUTRNeklnTWpZdU1UazJNRGcyT1N3NUxqWTROelkwTURnNElESTJMakU1TmpBNE5qa3NPUzR6TnpFd01qQTVOU0JETWpZdU1UazJNRGcyT1N3NUxqRTVOall5T1RneklESTJMakV6TWpNNU9USXNPUzR3TlRVeE1UVTNNeUF5Tmk0d01EVXdNak0yTERndU9UUTFOell6T1RJZ1F6STFMamczTnpZME9ERXNPQzQ0TXpjeE1qWTRNeUF5TlM0M01URTFNRFl4TERndU56UXhNelUwTmpZZ01qVXVOVEEyTlRrM05pdzRMalkxT1RnM05qZzFJRU15TlM0ek1ERXpORE14TERndU5UYzRNRFF4TmpjZ01qVXVNRFl3Tnpnek15dzRMalV4TURFME16UTVJREkwTGpjNE16ZzRMRGd1TkRVMU1URXdNak1nUXpJMExqVXdOamszTmpjc09DNDBNREEzT1RFMk9TQXlOQzR5TVRnNU9UY3lMRGd1TXpRd056VTFOQ0F5TXk0NU1UazVOREUyTERndU1qYzFNelU0TnpNZ1F6SXpMalE1T0Rjd01qVXNPQzR4T0RneE5qTXhPQ0F5TXk0d09EWTBOakkyTERndU1EZzBPRGcyTkRjZ01qSXVOamd5TVRnek9DdzNMamsyTkRneE16a2dRekl5TGpJM056a3dOU3czTGpnME5UQTVPRFk1SURJeExqa3hOVEUyTVRZc055NDJOemcxTmprME55QXlNUzQxT1RNNU5UTTRMRGN1TkRZMk1qazRNekVnUXpJeExqSTNNamMwTlRrc055NHlOVE16TVRJME5DQXlNUzR3TVRJME5UWTRMRFl1T1Rnd05qUTNOalFnTWpBdU9ERXpNRGcyTkN3MkxqWTBPRE13TXpreUlFTXlNQzQyTVRNM01UWXNOaTR6TVRVNU5qQXlJREl3TGpVeE5EQXpNRGdzTlM0NE9UZzVNakkwTXlBeU1DNDFNVFF3TXpBNExEVXVNemszTlRRM09UY2dRekl3TGpVeE5EQXpNRGdzTlM0d01UVTFNekV6TnlBeU1DNDJNRFUwTURnNUxEUXVOalEzT0RBNU1USWdNakF1TnpnNE1UWTFNU3cwTGpJNU16WTJOalVnUXpJd0xqazNNRGt5TVRNc015NDVNemt4TmpZMU15QXlNUzR5TWpnME5ERTBMRE11TmpJMk1USXdNVGdnTWpFdU5UWXdOekkxTkN3ekxqTTFNekE1T0RBeklFTXlNUzQ0T1RNd01Ea3pMRE11TURnd056a3dOVGtnTWpJdU1qazBNVGN6TERJdU9EWTFOall3TlRZZ01qSXVOelkxTWpVME9Dd3lMamN3TnpNMU1EWWdRekl6TGpJek5UazVNRFFzTWk0MU5Ea3dOREEyTXlBeU15NDNOVGt6TXpjM0xESXVORGN3TURZME16SWdNalF1TXpNMU1qazJOaXd5TGpRM01EQTJORE15SUZvZ1RUTXpMakV3TnpNMU1UVXNNaTQwTnpBd05qUXpNaUJETXpRdU1EZ3hOekExTERJdU5EY3dNRFkwTXpJZ016UXVPRGt6TXpjM09Td3lMalkxTmpZd05UWTBJRE0xTGpVME1UTXpNVFlzTXk0d01qZzVOek0xTmlCRE16WXVNVGc1TWpnMU5Dd3pMalF3TVRZNU9EZ3pJRE0yTGpjd01UVTFOalVzTXk0NU1EZzBNek0yTnlBek55NHdOemd4TkRVeExEUXVOVFV3TWpVd01UVWdURE0xTGpFMk56VXhNaklzTlM0ME9ESTFPVGt6TnlCRE16UXVPVFk0TVRReE9DdzFMakUwTmpNeU5EY2dNelF1TmpreE1qTTROQ3cwTGpnNE1EQTVNak0ySURNMExqTXpOamd3TWpJc05DNDJPRFEyTVRjd09DQkRNek11T1RneU16WTFPU3cwTGpRNE9URTBNVGM1SURNekxqVTNNalUwT1N3MExqTTVNVEl5TlRRM0lETXpMakV3TnpNMU1UVXNOQzR6T1RFeU1qVTBOeUJETXpJdU5UYzFOamszTVN3MExqTTVNVEl5TlRRM0lETXlMakU0TWpRNU5EUXNOQzQwT1RRNE5UazFNeUF6TVM0NU1qYzNORE16TERRdU56QXlNVEkzTmpZZ1F6TXhMalkzTWpZME5qRXNOQzQ1TURrek9UVTNPU0F6TVM0MU5EVTJNVFkzTERVdU1UUTVOVFF3T1RNZ016RXVOVFExTmpFMk55dzFMalF5TWpJd05UY3pJRU16TVM0MU5EVTJNVFkzTERVdU56TTRORFk0TXpFZ016RXVOek16T1RFeExEVXVPVFkxTURNek9ERWdNekl1TVRFd05EazVOU3cyTGpFd01EZ3pNREUzSUVNek1pNDBPRFkzTkRFNUxEWXVNak0zTXpReE1qVWdNek11TURRd09EazBOeXcyTGpNNE1qQTNNVFU0SURNekxqYzNNVGt4T1RRc05pNDFNelEyTmpNNE1TQkRNelF1TVRjd05qWXdNaXcyTGpZeE1URXpPRFlnTXpRdU5UY3hPREl6T1N3MkxqY3hNVFUxTmpRMElETTBMamszTmpRME9Ea3NOaTQ0TXpjek5EWTNOU0JETXpVdU16Z3dOekkzTnl3MkxqazJNamMzT1RjZ016VXVOelE1TURBNU1TdzNMakV6TVRneE1EUXpJRE0yTGpBNE1USTVNekVzTnk0ek5EUTNPVFl6TVNCRE16WXVOREV6TlRjM01TdzNMalUxTnpReU5EZ3lJRE0yTGpZNE1qRTNNek1zTnk0NE1qazNNekl5TmlBek5pNDRPRGN3T0RFNExEZ3VNVFl5Tnprd055QkRNemN1TURreE9Ua3dNaXc0TGpRNU5UUTVNVGM0SURNM0xqRTVORFEwTkRRc09DNDVNVEkxTWprMU5TQXpOeTR4T1RRME5EUTBMRGt1TkRFME1qWXhNemNnUXpNM0xqRTVORFEwTkRRc09TNDNOVEl6TWpJNE15QXpOeTR4TVRZNU1URTFMREV3TGpFd05ETXlNVE1nTXpZdU9UWXhPRFExTnl3eE1DNDBOamsxTkRJZ1F6TTJMamd3TmpRek16Y3NNVEF1T0RNME56WXlPQ0F6Tmk0MU5qVTROek01TERFeExqRTNNekU0TVRZZ016WXVNak01TVRJNExERXhMalE0TXpjeU5qUWdRek0xTGpreE1qTTRNakVzTVRFdU56azBPVGcySURNMUxqUTVPVGM1TmpFc01USXVNRFE0TXpVek5DQXpOUzR3TURFek56QXlMREV5TGpJME5EVTBNelFnUXpNMExqVXdNamswTkRJc01USXVORFF4TURrd09DQXpNeTQ1TURRNE16TXNNVEl1TlRNNU1EQTNNU0F6TXk0eU1EY3dNelkzTERFeUxqVXpPVEF3TnpFZ1F6TXlMakV6TWpZMU1UZ3NNVEl1TlRNNU1EQTNNU0F6TVM0eU5ERXdNak14TERFeUxqTXpNamd4TVNBek1DNDFNekl4TlRBMkxERXhMamt5TURBMk1UWWdRekk1TGpneU16STNPREVzTVRFdU5UQTJPVFUwT0NBeU9TNHlOelV3TURrMUxERXdMamt4TURVeU1qZ2dNamd1T0RnM016UTBPU3d4TUM0eE16QXdOVEV4SUV3ek1DNDVOalF4TVRrNExEa3VNVFkxTVRneU1qVWdRek14TGpFNU5qY3hPRFlzT1M0Mk1EUTNNek0yTXlBek1TNDFNVEl6T0RnekxEa3VPVFF5TkRNM056UWdNekV1T1RFeE1USTVNU3d4TUM0eE56ZzJOVEU1SUVNek1pNHpNRGs0TmprNUxERXdMalF4TkRVd09EZ2dNekl1TnpjMU1EWTNOU3d4TUM0MU16SXdOems0SURNekxqTXdOamN5TVRnc01UQXVOVE15TURjNU9DQkRNek11T0RZd05USTROU3d4TUM0MU16SXdOems0SURNMExqSTNOVGc0TXpVc01UQXVOREUzTnpJMUlETTBMalUxTWpjNE5qZ3NNVEF1TVRnNU1ERTFNeUJETXpRdU9ESTVNelEwTERrdU9UVTVPVFE0TXpJZ016UXVPVFk0TVRReE9DdzVMalk0TnpZME1EZzRJRE0wTGprMk9ERTBNVGdzT1M0ek56RXdNakE1TlNCRE16UXVPVFk0TVRReE9DdzVMakU1TmpZeU9UZ3pJRE0wTGprd05EUTFOQ3c1TGpBMU5URXhOVGN6SURNMExqYzNOekEzT0RVc09DNDVORFUzTmpNNU1pQkRNelF1TmpRNU56QXlPU3c0TGpnek56RXlOamd6SURNMExqUTRNelUyTVN3NExqYzBNVE0xTkRZMklETTBMakkzT0RZMU1qVXNPQzQyTlRrNE56WTROU0JETXpRdU1EY3pNemszT1N3NExqVTNPREEwTVRZM0lETXpMamd6TWpnek9ESXNPQzQxTVRBeE5ETTBPU0F6TXk0MU5UVTVNelE0TERndU5EVTFNVEV3TWpNZ1F6TXpMakkzT1RBek1UVXNPQzQwTURBM09URTJPU0F6TWk0NU9URXdOVEl4TERndU16UXdOelUxTkNBek1pNDJPVEU1T1RZMUxEZ3VNamMxTXpVNE56TWdRek15TGpJM01EYzFOek1zT0M0eE9EZ3hOak14T0NBek1TNDROVGcxTVRjMUxEZ3VNRGcwT0RnMk5EY2dNekV1TkRVME1qTTROaXczTGprMk5EZ3hNemtnUXpNeExqQTBPVGsxT1Rnc055NDRORFV3T1RnMk9TQXpNQzQyT0RjeU1UWTFMRGN1TmpjNE5UWTVORGNnTXpBdU16WTJNREE0Tml3M0xqUTJOakk1T0RNeElFTXpNQzR3TkRRNE1EQTRMRGN1TWpVek16RXlORFFnTWprdU56ZzBOVEV4Tml3MkxqazRNRFkwTnpZMElESTVMalU0TlRFME1USXNOaTQyTkRnek1ETTVNaUJETWprdU16ZzFOemN3T1N3MkxqTXhOVGsyTURJZ01qa3VNamcyTURnMU55dzFMamc1T0RreU1qUXpJREk1TGpJNE5qQTROVGNzTlM0ek9UYzFORGM1TnlCRE1qa3VNamcyTURnMU55dzFMakF4TlRVek1UTTNJREk1TGpNM056UTJNemdzTkM0Mk5EYzRNRGt4TWlBeU9TNDFOakF5TVRrNUxEUXVNamt6TmpZMk5TQkRNamt1TnpReU9UYzJNU3d6TGprek9URTJOalV6SURNd0xqQXdNRFE1TmpJc015NDJNall4TWpBeE9DQXpNQzR6TXpJM09EQXlMRE11TXpVek1EazRNRE1nUXpNd0xqWTJOVEEyTkRJc015NHdPREEzT1RBMU9TQXpNUzR3TmpZeU1qYzVMREl1T0RZMU5qWXdOVFlnTXpFdU5UTTNNekE1Tml3eUxqY3dOek0xTURZZ1F6TXlMakF3T0RBME5UTXNNaTQxTkRrd05EQTJNeUF6TWk0MU16RXpPVEkyTERJdU5EY3dNRFkwTXpJZ016TXVNVEEzTXpVeE5Td3lMalEzTURBMk5ETXlJRm9nVFRFekxqYzNNekl3TlRjc01pNDBOekF3TWpnMU9TQkRNVFF1TkRFMU5qSXhOQ3d5TGpRM01EQXlPRFU1SURFMUxqQXdPREU1TkRVc01pNDFPVEF4TURFeE5pQXhOUzQxTlRBNU1qVXNNaTQ0TWprMU16RTFPU0JETVRZdU1Ea3pNekE1TkN3ekxqQTJPVFkzTmpjeklERTJMalUwTWpJek9Ea3NNeTR6T1RZMk5qQXdOeUF4Tmk0NE9UWTJOelV4TERNdU9ERXdPRE00T1RjZ1RERTJMamc1TmpZM05URXNNaTQwT0RjeE9ERTRNU0JNTVRrdU1UTTVOVGt5TERJdU5EZzNNVGd4T0RFZ1RERTVMakV6T1RVNU1pd3hNaTQxTWpFNE1UZ3hJRXd4Tmk0NE9UWTJOelV4TERFeUxqVXlNVGd4T0RFZ1RERTJMamc1TmpZM05URXNNVEV1TURrMU9UVTJNeUJETVRZdU5UUXlNak00T1N3eE1TNDFORFF3T0RReklERTJMakE0T0RFeE56UXNNVEV1T0RrMk56azNOU0F4TlM0MU16UXpNVEE0TERFeUxqRTFNemN6T0RVZ1F6RTBMams0TURVd05ESXNNVEl1TkRFd05qYzVOU0F4TkM0ek9ESXpPVE1zTVRJdU5UTTRPVGN4TkNBeE15NDNNems1TnpjekxERXlMalV6T0RrM01UUWdRekV6TGpFMU1qazBNak1zTVRJdU5UTTRPVGN4TkNBeE1pNDFOelF5TVRRekxERXlMalF5TmpRd016TWdNVEl1TURBek56a3pOU3d4TWk0eU1EQTFOVEkxSUVNeE1TNDBNek16TnpJMkxERXhMamszTkRNME5EUWdNVEF1T1RJeE1UQXhOU3d4TVM0Mk5EWXlPRGtnTVRBdU5EWTJPVGd3TVN3eE1TNHlNVFl6T0RZeklFTXhNQzR3TVRJNE5UZzJMREV3TGpjNE5qUTRNellnT1M0Mk5EY3dNREF4TVN3eE1DNHlOakF3T1RRZ09TNHpOekEwTkRJNU1pdzVMall6TnpVM05Ea3hJRU01TGpBNU16VXpPVFlzT1M0d01UUTJPVGcwTkNBNExqazFOVEE0TnprMExEZ3VNekEyTkRFek1qSWdPQzQ1TlRVd09EYzVOQ3czTGpVeE16QTNOalU0SUVNNExqazFOVEE0TnprMExEWXVOekE0TXpBME5EY2dPUzR3T1RBME1qUTBOQ3cxTGprNU5UQXhOakl5SURrdU16WXlNVE0xT0RJc05TNHpOekUzT0RJMElFTTVMall6TXpVd01UQTNMRFF1TnpRNE9UQTFPVE1nT1M0NU9UTTBOelV6T1N3MExqSXlNamczTXpjeElERXdMalEwTWpBMU9EZ3NNeTQzT1RJNU56RXdNeUJETVRBdU9Ea3dOalF5TVN3ekxqTTJNamN4TURrNElERXhMalF3TlRZNE1qTXNNeTR3TXpVd01USTVNaUF4TVM0NU9EY3hOemt6TERJdU9EQTVOVEU1TkRrZ1F6RXlMalUyT0RZM05qTXNNaTQxT0RNek1URXpOQ0F4TXk0eE5qUXdNVGcwTERJdU5EY3dNREk0TlRrZ01UTXVOemN6TWpBMU55d3lMalEzTURBeU9EVTVJRm9nVFRRdU1UVXpOVFE1Tnpnc01DQkROQzQzT0RRNE9Ea3pOU3d3SURVdU16WTJNemcyTXpJc01DNHhNVGN5TVRNM01ERWdOUzQ0T1Rnd05EQTJPU3d3TGpNMU1UazVPRFEyTVNCRE5pNDBNamsyT1RVd05pd3dMalU0TmpReU5UZzJNaUEyTGpnNE9UQXdPRFEwTERBdU9UQXpOREF6TVRVMklEY3VNamMzTURFNU1qSXNNUzR6TURRd01ESTBNaUJETnk0Mk5qUTJPRE00Tml3eExqY3dOREkwTkRNeUlEY3VPVFk0T1RNeE16Z3NNaTR4TnpVNU5UZ2dPQzR4T1RBNE1EQXhOeXd5TGpjeE9URTBNelEwSUVNNExqUXhNak15TWpneUxETXVNall4T1RjeE5USWdPQzQxTWpNd09EUXhOU3d6TGpnME1qTXlNakk0SURndU5USXpNRGcwTVRVc05DNDBOakF4T1RVM01pQkRPQzQxTWpNd09EUXhOU3cxTGpBM056TTFORFEwSURndU5ERXlNekl5T0RJc05TNDJOakExTmpRd09DQTRMakU1TURnd01ERTNMRFl1TWpBNU5EWTNNallnUXpjdU9UWTRPVE14TXpnc05pNDNOVGd6TnpBME5DQTNMalkyTkRZNE16ZzJMRGN1TWpNeU9UUXlPVGtnTnk0eU56Y3dNVGt5TWl3M0xqWXpNelUwTWpJMUlFTTJMamc0T1RBd09EUTBMRGd1TURNek56ZzBNVFlnTmk0ME1qWTVNall3TXl3NExqTTFNVEV4T0RneElEVXVPRGc1TnpNek5Ua3NPQzQxT0RVeE9EZzROU0JETlM0ek5USXhPVFV3TWl3NExqZ3hPVFl4TmpJMUlEUXVOelk0TWpjMU1UVXNPQzQ1TXpZNE1qazVOU0EwTGpFek5qa3pOVFU0TERndU9UTTJPREk1T1RVZ1RESXVNalU1TlRNeE1EZ3NPQzQ1TXpZNE1qazVOU0JNTWk0eU5UazFNekV3T0N3eE1pNDFNakU0TlRNNUlFd3dMREV5TGpVeU1UZzFNemtnVERBc01DQk1OQzR4TlRNMU5EazNPQ3d3SUZvZ1RURTBMakV3TlRRNE9UY3NOQzQxT0RBeU16STFOaUJETVRNdU5qazFOamN5T0N3MExqVTRNREl6TWpVMklERXpMak14TURjM056RXNOQzQyTlRVMk16VXlOeUF4TWk0NU5UQTRNREk0TERRdU9EQTFOekkxT1RrZ1F6RXlMalU1TURneU9EVXNOQzQ1TlRVNE1UWTNJREV5TGpJM056a3lOemdzTlM0eE5qQXlNalU1TmlBeE1pNHdNVEl4TURBMkxEVXVOREUzTlRJME16TWdRekV4TGpjME5qSTNNelFzTlM0Mk56VTFNemMwTVNBeE1TNDFNemcxT1RVNUxEVXVPVGd4Tnprek9UUWdNVEV1TXpnNU1EWTRNU3cyTGpNek5qSTVNemt4SUVNeE1TNHlNemsxTkRBekxEWXVOamt3Tnprek9Ea2dNVEV1TVRZME56YzJOQ3czTGpBM01UY3pPRFF4SURFeExqRTJORGMzTmpRc055NDBPREF4T1RrMU55QkRNVEV1TVRZME56YzJOQ3czTGpnNE9ETXdNek0zSURFeExqSXpPVFUwTURNc09DNHlOekkwTmpReE15QXhNUzR6T0Rrd05qZ3hMRGd1TmpNeE9UWTNNVElnUXpFeExqVXpPRFU1TlRrc09DNDVPVEUwTnpBeE1pQXhNUzQzTkRZeU56TTBMRGt1TXpBeU56STVOamNnTVRJdU1ERXlNVEF3Tml3NUxqVTJOalEyTURVZ1F6RXlMakkzTnpreU56Z3NPUzQ0TWprME56WTJNU0F4TWk0MU9UQTRNamcxTERFd0xqQXpOakF6SURFeUxqazFNRGd3TWpnc01UQXVNVGcyT0RNMU5DQkRNVE11TXpFd056YzNNU3d4TUM0ek16WTVNall5SURFekxqWTVOVFkzTWpnc01UQXVOREV4T1RjeE5TQXhOQzR4TURVME9EazNMREV3TGpReE1UazNNVFVnUXpFMExqVXlOak00TWpjc01UQXVOREV4T1RjeE5TQXhOQzQ1TVRNM01ERXlMREV3TGpNek5qa3lOaklnTVRVdU1qWTRORGd6Tml3eE1DNHhPRFk0TXpVMElFTXhOUzQyTWpJNU1UazVMREV3TGpBek5qQXpJREUxTGpreU56RTJOelFzT1M0NE1qWTJNVGMzTkNBeE5pNHhPREl5TmpRMkxEa3VOVFUzT0Rnek9Ea2dRekUyTGpRek56QXhOVFlzT1M0eU9EazFNRGN6T1NBeE5pNDJNemt4TlRVc09DNDVOemM0T1RBME9DQXhOaTQzT0RnMk9ESTRMRGd1TmpJek56UTNPRGNnUXpFMkxqa3pPREl4TURZc09DNHlOamsyTURVeU5pQXhOeTR3TVRJNU56UTFMRGN1T0RnNE16QXpNemNnTVRjdU1ERXlPVGMwTlN3M0xqUTRNREU1T1RVM0lFTXhOeTR3TVRJNU56UTFMRGN1TURneU9ERTJOVFFnTVRZdU9UTTRNakV3Tml3MkxqY3dOamczTlRBeklERTJMamM0T0RZNE1qZ3NOaTR6TlRJek56VXdOaUJETVRZdU5qTTVNVFUxTERVdU9UazNPRGMxTURrZ01UWXVORE0zTURFMU5pdzFMalk0T1RFeE56QTFJREUyTGpFNE1qSTJORFlzTlM0ME1qWXhNREE1TkNCRE1UVXVPVEkzTVRZM05DdzFMakUyTWpjeU56UTNJREUxTGpZeU1qa3hPVGtzTkM0NU5UVTRNVFkzSURFMUxqSTJPRFE0TXpZc05DNDRNRFUzTWpVNU9TQkRNVFF1T1RFek56QXhNaXcwTGpZMU5UWXpOVEkzSURFMExqVXlOak00TWpjc05DNDFPREF5TXpJMU5pQXhOQzR4TURVME9EazNMRFF1TlRnd01qTXlOVFlnV2lCTk15NDVPRGMwTURjM09Td3lMakUyTVRNd05qSTRJRXd5TGpJMU9UVXpNVEE0TERJdU1UWXhNekEyTWpnZ1RESXVNalU1TlRNeE1EZ3NOaTQzTnpVMU1qTTJOeUJNTXk0NU9EYzBNRGMzT1N3MkxqYzNOVFV5TXpZM0lFTTBMak14T1RZNU1UYzNMRFl1TnpjMU5USXpOamNnTkM0Mk1qUXlPRFUwTWl3MkxqY3hOVFE0TnpNNElEUXVPVEF4TVRnNE56UXNOaTQxT1RVME1UUTRNU0JETlM0eE56YzNORFU1TXl3MkxqUTNOVE0wTWpJMElEVXVOREUyTWpJNE9USXNOaTR6TURrMU1qYzNOQ0ExTGpZeE5UVTVPVE1zTmk0d09UZ3pNamcyTmlCRE5TNDRNVFE1TmprMk9TdzFMamc0TmpjM01qSXlJRFV1T1Rjd01ETTFOVFVzTlM0Mk5EQTFOVEU1T0NBMkxqQTRNRGM1TmpnNExEVXVNell3TXpneU5qVWdRell1TVRreE1qRXlNRGdzTlM0d09EQTFOekEyTnlBMkxqSTBOamt6T0RnM0xEUXVOemd3TURNeE9Ea2dOaTR5TkRZNU16ZzROeXcwTGpRMk1ERTVOVGN5SUVNMkxqSTBOamt6T0RnM0xEUXVNVE01TmpRME9EUWdOaTR4T1RFeU1USXdPQ3d6TGpnek9UUTJNelF4SURZdU1EZ3dOemsyT0Rnc015NDFOVGt5T1RRd09DQkROUzQ1TnpBd016VTFOU3d6TGpJM09URXlORGMxSURVdU9ERTBPVFk1Tmprc015NHdNell4TWpBM015QTFMall4TlRVNU9UTXNNaTQ0TXpBeU9ESXdOQ0JETlM0ME1UWXlNamc1TWl3eUxqWXlORFEwTXpNMElEVXVNVGMzTnpRMU9UTXNNaTQwTmpFME9EYzNNU0EwTGprd01URTRPRGMwTERJdU16UXhOREUxTVRRZ1F6UXVOakkwTWpnMU5ESXNNaTR5TWpFek5ESTFOeUEwTGpNeE9UWTVNVGMzTERJdU1UWXhNekEyTWpnZ015NDVPRGMwTURjM09Td3lMakUyTVRNd05qSTRJRm9pUGp3dmNHRjBhRDQ4TDJOc2FYQlFZWFJvUGp3dlpHVm1jejQ4WnlCMGNtRnVjMlp2Y20wOUluUnlZVzV6YkdGMFpTZ3RNak16TGpBZ0xURTJNQzR3S1NJK1BHY2dZMnhwY0Mxd1lYUm9QU0oxY213b0kya3dLU0krUEdjZ2RISmhibk5tYjNKdFBTSjBjbUZ1YzJ4aGRHVW9Nak16TGpBZ01UWXdMakFwSWo0OFp5QjBjbUZ1YzJadmNtMDlJblJ5WVc1emJHRjBaU2d0TUM0d01EQXhPREExTlRVMU5UVTFOVEl3TnpVME9DQXdMakFwSWo0OFp5QmpiR2x3TFhCaGRHZzlJblZ5YkNnamFURXBJajQ4Y0c5c2VXZHZiaUJ3YjJsdWRITTlJakFzTUNBMU1pd3dJRFV5TERVeUlEQXNOVElnTUN3d0lpQnpkSEp2YTJVOUltNXZibVVpSUdacGJHdzlJblZ5YkNnamFUSXBJajQ4TDNCdmJIbG5iMjQrUEM5blBqd3ZaejQ4WnlCMGNtRnVjMlp2Y20wOUluUnlZVzV6YkdGMFpTZzNMalU0TXpNek16TXpNek16TXpNek1pQXhOQzQ0TURVMU5UVTFOVFUxTlRVMU5Ta2lQanhuSUdOc2FYQXRjR0YwYUQwaWRYSnNLQ05wTXlraVBqeG5JR05zYVhBdGNHRjBhRDBpZFhKc0tDTnBOQ2tpUGp4d2IyeDVaMjl1SUhCdmFXNTBjejBpTUN3d0lETTJMalEzT1RFMk5qY3NNQ0F6Tmk0ME56a3hOalkzTERVdU5qRXlNVGM1TkRrZ01DdzFMall4TWpFM09UUTVJREFzTUNJZ2MzUnliMnRsUFNKdWIyNWxJaUJtYVd4c1BTSWpSa1pHUmtaR0lqNDhMM0J2YkhsbmIyNCtQQzluUGp3dlp6NDhMMmMrUEdjZ2RISmhibk5tYjNKdFBTSjBjbUZ1YzJ4aGRHVW9OeTQxT0RNek16TXpNek16TXpNek56RWdNalF1TkRNeU1EZ3dNalUxTkRjM016TXBJajQ4WnlCamJHbHdMWEJoZEdnOUluVnliQ2dqYVRVcElqNDhjRzlzZVdkdmJpQndiMmx1ZEhNOUlqQXNNQ0F6Tnk0eE9UUTBORFEwTERBZ016Y3VNVGswTkRRME5Dd3hNaTQxTXprd01EY3hJREFzTVRJdU5UTTVNREEzTVNBd0xEQWlJSE4wY205clpUMGlibTl1WlNJZ1ptbHNiRDBpSTBaR1JrWkdSaUkrUEM5d2IyeDVaMjl1UGp3dlp6NDhMMmMrUEM5blBqd3ZaejQ4TDJjK1BDOXpkbWMrIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiRklET18yXzEiXSwiZXh0ZW5zaW9ucyI6WyJ1dm0iLCJkZXZpY2VQdWJLZXkiXSwiYWFndWlkIjoiNTM0MTRkNTM1NTRlNDcwMDAwMDAwMDAwMDAwMDAwMDAiLCJvcHRpb25zIjp7InBsYXQiOnRydWUsInJrIjpmYWxzZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOmZhbHNlLCJ1diI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWV9fX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTAzLTEyIn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNC0wMy0xMiJ9LHsiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbImJhYjE0ODcxODFmYTRiN2Y2MDY0YjdmNmJiYTZjZmY5ZWZkZmQ3MWUiXSwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiYmFiMTQ4NzE4MWZhNGI3ZjYwNjRiN2Y2YmJhNmNmZjllZmRmZDcxZSJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiU2VjdXJpdHkgS2V5IE5GQyBieSBZdWJpY28ifSwiZGVzY3JpcHRpb24iOiJTZWN1cml0eSBLZXkgTkZDIGJ5IFl1YmljbyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjg3MDcsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiLCJyZW1vdGVfaGFuZGxlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlESGpDQ0FnYWdBd0lCQWdJRUcwQlQ5ekFOQmdrcWhraUc5dzBCQVFzRkFEQXVNU3d3S2dZRFZRUURFeU5aZFdKcFkyOGdWVEpHSUZKdmIzUWdRMEVnVTJWeWFXRnNJRFExTnpJd01EWXpNVEFnRncweE5EQTRNREV3TURBd01EQmFHQTh5TURVd01Ea3dOREF3TURBd01Gb3dMakVzTUNvR0ExVUVBeE1qV1hWaWFXTnZJRlV5UmlCU2IyOTBJRU5CSUZObGNtbGhiQ0EwTlRjeU1EQTJNekV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRQy9qd1l1aEJWbHFhaVlXRU1zcldGaXNnSitQdE05MWVTcnBJNFRLN1U1M213Q0lhd1NESHk4dlVtazVOMktBajlhYnZUOU5QNVNNUzFoUWkzdXN4b1lHb25YUWdmTzZaWHlVQTlhK0tBa3FkRm5Cbmx5dWdTZUNPZXA4RWRaRmZzYVJGdE1qa3d6NUdjejJQeTR2SVl2Q2RNSFB0d2F6MGJWdXpuZXVlSUV6NlRuUWpFNjNSZHQyemJ3bmVid1RHNVp5YmVXU3dienkrQkozNFpIY1VoUEFZODl5SlFYdUUwSXpNWkZjRUJiUE5SYldFQ1JLZ2pxLy9xVDlubURPRlZsU1JDdDJ3aXFQU3psdXduK3Yrc3VRRUJzVWpUR01FZDI1dEtYWFRrTlcyMXdJV2J4ZVN5VW9UWHdMdkdTNnhsd1FTZ05wazJxWFl3ZjhpWGc3VldaQWdNQkFBR2pRakJBTUIwR0ExVWREZ1FXQkJRZ0l2ejBiTkdKaGpncFRva3N5S3BQOXh2OW9EQVBCZ05WSFJNRUNEQUdBUUgvQWdFQU1BNEdBMVVkRHdFQi93UUVBd0lCQmpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQWp2anVPTURTYStKWEZDTHlCS3N5Y1h0QlZac0o0VWUzTGJhRXNQWTRNWU4vaElRNVpNNXA3RWpmY25NRzRDdFlrTnNmTkhjMEFoQkxkcTQ1cm5UODdxLzZPM3ZVRXROTWFmYmhVNmt0aFg3WSs5WEZOOU5wbVl4citla1ZZNXhPeGk4aDlKRElnb01QNFZCMXVTMGF1bkwxSUdxck5vb0w5bW1Gbkwya0xWVmVlNi9WUjZDNStLU1RDTUNXcHBNdUpJWklJMnY5bzRka29aOFk3UVJqUWxMZll6ZDNxR3RLYnc3eGFGMVVzRy81eFViL0J0d2IyWDJnNElucGlCL3l0LzNDcFFYcGlXWC9LNG1CdlVLaUduMDVac3FlWTFneDRnMHhMQnFjVTlwc215UHpLK1ZzZ3cyamVSUTVKbEtEeXFFMGhlYmZDMXR2RnUwQ0NySkZjdz09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWZDQVlBQUFDR1ZzK01BQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBSFlZQUFCMkdBVjJpRTRFQUFBYk5TVVJCVkZoSHBWZDdUTlYxRkQvM2Q1OXdlUVNJZ1M5QVFBWGNGTEFRWmk5ZnBlVnoxdFkvV1RacjVXeHBjN1c1a25MYTVqSTNaODVzclMybk0yc2p0V3daUzdJVUg0SDR4Q25FUXg0REFaRjc0Vjd1czg4NXY5L2xJbkJ2VkovQjRQdjludS81bnUvNW52TTU1NmZ6QS9RdjBIYi9JclgzVkZLUG80NWNubTRpblVJV1l3TEZSbVpRVXV3akZHL04xaVJIaDFFWjBOUlZSdWRxdDFCZCsyblNLeVMvT2h5czArbGszZS8za1E5cXZENFpVdGE0VlZTVXVZMGVpcHlpVGhBZm9jb09SVmdEdXV3M3FLUmlBZDNyYmNFdGpUallJb2Y2V2FIc0NtelZQV0NNeCtjZ2g4dExxV01LYU1Xc1VqTHFvMlJ0SklRMG9Pem1lcnBRdTRlc1pnc09Oa0d4SDdkMGtkdlRUMTdzNE9NVTdWSThaaGpnR2FNK0FxOWlFTnU4UGlmMXVkejA3TXd2S1dmOEdsVm9DRVkwNFBDNVdkVGFYWUZiUjh2TnZMNSszS2dmYjV4Tk15YTlSYW1KaXluYU1sR1RWdEZscjZiYTl1K3BxbkVYNHVNdVJSZ2pTWUVock43dXRGRmU2bHFhbDdOZmt3NWltQUdIeW5QcGJrOFZtWTB4c3RucHRsRkNWQ1l0elR1Qk44M1FwTUxqVHRldmRQelNVbko3ZThta2p4WjM5ZlhiS0RmbGRacWJ2VStUVWdHbkJWRjZmUTJpUEhnNFcxNlVXVXd2emJrMTZzTVpFK1BuMHB2ejdKU2V1QXllczhsY3BDbWFLdW8vcCtxV3IyVWN3SUFIV3J2UDBZRXpoWEF0TEFic3NIaHA3aUdhbXZ5aWpQOHJ5cXJYVVdYOVhvb3d4eUF1Zk5CcnA0M1BPQkZYWmxrZjhNRFJpcWNweW93QXdwdXoyeCtmV3Z6L0R0ZGU5c21zenlndGNSNkMxd2JkekJsNk9scTVXTllZNG9HYXRoSk1ya1RFeDBqQVJTSEFWcys1cllrUU5YYitRZ2ZQTHNRNmdYeUluc3JlUWZtcG03UlZGWWZMODZuMWZpVU9rWXZTaGtVUHh2YnVrem95NksxaWhNMWhvM1h6VzZFdlNmWEErZHBpV0dhV2QrZG9Yekx6bUd3S1lGTENBc1JBbFBCQWhNbENGWFU3dEJVVlByOEhnVmNKSFdxK0YwMHBscitETVRkclA0enZ4WTExa05NaHhUK1NlVEdnK2Q0VjVMUUppdHlVR0pOQjhWRlpzamdZQlpNL0lJL1hDVGtqMHF5RE9wRjJBVlExN0NJalVwL0RuVDFVa0w1RjVnZGorc1Mxd2cxZ0UzZ2lnbTYwZkNYelNuUFhieUFQYklYditJRHBFMTZUaGFISVM5c2t5aGxtTUU1RjNjZnFBS2hxMkMwRTVQSDFnWWFYYUxQRGtaRzBIREpPbktXSHA1MUkwejVTT3V4OGUxV0F1WnpkSFFyVGtwOFRtalhvSStsYTB3R1pzenVicWJPM2lmUTZBL1c3dlZTWXNWM21SMEpLd2tLYzRXSGlCa21SOEkzQ0NnSTg3b09MNHF6VDVQK1JVSkJlakVPZ0FQSzhoWVB6YXRNK2VJVHAySU85eVRRbWVyb21QUnh4MXF4QWNzaWxlL3ViU2VFYmNXUUdZRUNnaGNMWTJIeUtqb2dqSDI1aE1wanBVdjFPdWdsaTRlaDJlUncwTzMyYkpqa3l1Q2dOemcwdnpsWU1TaVNzMHVvbzRNRzdoTU9qQ0VhWDF5RkUwblN2akJ6dVRuRXBLODZaOElvcUZBSXVidzhrZzlBckVhUkVXU1pJK2pINFhicDZnOUU5RW5KVDNvYVJ6RE4rTVVKQlFESG41NmE4b1VtRUJ1c094QnMvTjUrdEpFYlBrQUZEajhVR3ZPcy9JV3ZjU2dsR0JodlM3L0ZUWWZwV0dZZERZOGZQQXhXU0EzNXNUQzRwNCtMbTRBYXFJb1BlUXRmdWZLNkpoMFpoeGxic1VYT1NtWE5pZkQ1WlRBa3lEb2ZiYmNjbHhuQThXTkFxeENiUk55a2hYeFFwYUR3NjdmWFVZYnNpRzBLaHR2Mm9lSXZoOHJoUU1ZT2NFQXFYRy9lSSt6bmdPYzV5eHI4cTgySUFNMWMvRkxGT3BscXU1ZUZRWHJNWnpHY1ZDalliTFdHNUk0QlQxZXVScmxieHROT3RNaXREREVoTFhJSXluQUF2dU9FV0UzWDNOZEFmdDk0VmdhRzQyWElRdDBaWDZQZUNFL3FRRmU5cks2SHg3WVU1MEt2SDdmVzRmUytxN0tLQkp4c2dnQlg1cFNBR2gxaklyVmg1elE2dzNSZmFhaEJYbS9hQ2JDWlRqQ1VGVVR5V1pxVzlwNjJNakpQWFZxT3JQZ01PNE52NzRHa2Yrb3dmdE5WQkRRbmpGSnFIU3cxN3BYdmhXVzVLWnFlL1E0OU4vVVNUQ0FWV29RWEZJSEJIWFhlM0ZQclVEc3VHRG10Ri9oSEtUSHBla3hoaUFPUEkrU0pxNlM2SEY0STlZV3prQkpUbzQ2aVVNeldwOFBpci9SaWR1THhLWXNTa3NWOHZMbE9RdmhHWDJZbFIwT0JoQmpDK3UvZ0VjdlkwQXBLN1lrNDFOeGpQU1FuV0ZIVEY2NlVyamdldkI4Q3U1YStsMnZZU1JQdHVWRG83M2hoZE1TSG5VWDd0VGpzVlpHeEFsL1dwdGlPSUVRMWduTDI5bVg2L3RSMXRtbGtZajhXNFgrQ1NqV2NVREdZMU5wUy9DN2hTS3FpTUxNL2wyUW1TV1o3M0RkeitnaW84QkNFTllQUTQ2cW5rendYVWJxdkJreGpVUXNXZlpGZ2J1bzNyQWYrd043ak9POTAreW54NFBpM0wrMG5ZTDFTY2hEVWdBUDRnUFYvN0lkMXErMUhTaG11R2tJcVdSUGd5eE1GcVA4SGZqVG5qWHdZNWJRZmJKY3Q2T0l6S2dNSG90Ri9IZTFlZ3NheEhTcUc2d2ZkbVE1eDhOeVRGRnFCY3AyaVNvd0hSM3lrNSszNmhGN3ZYQUFBQUFFbEZUa1N1UW1DQyJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIzLTAyLTAyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyODcwNywidXJsIjoiaHR0cHM6Ly93d3cueXViaWNvLmNvbS8iLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IlNlY3VyaXR5IEtleSBORkMgYnkgWXViaWNvIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVMkYxMDAwMjAyMzAyMDIwMDIiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjMifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjMtMDItMDIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI4NzA3fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIzLTAyLTA4In0seyJhYWd1aWQiOiJlNDE2MjAxYi1hZmViLTQxY2EtYTAzZC0yMjgxYzI4MzIyYWEiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6ImU0MTYyMDFiLWFmZWItNDFjYS1hMDNkLTIyODFjMjgzMjJhYSIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJBVEtleS5Qcm8gQ1RBUDIuMSJ9LCJkZXNjcmlwdGlvbiI6IkFUS2V5LlBybyBDVEFQMi4xIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIwMDAxLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX0seyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbImVkMjU1MTlfZWRkc2Ffc2hhNTEyX3JhdyIsInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MTAsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwiLCJiYURlc2MiOnsic2VsZkF0dGVzdGVkRlJSIjowLjAyLCJzZWxmQXR0ZXN0ZWRGQVIiOjJFLTA1LCJpQVBBUlRocmVzaG9sZCI6MC4wLCJtYXhUZW1wbGF0ZXMiOjEwLCJtYXhSZXRyaWVzIjo1LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlCekRDQ0FYR2dBd0lCQWdJQkFUQUtCZ2dxaGtqT1BRUURBakJpTVFzd0NRWURWUVFHRXdKVFJURVNNQkFHQTFVRUNnd0pRVlJMWlhsRFFUQXdNU0l3SUFZRFZRUUxEQmxCZFhSb1pXNTBhV05oZEc5eUlFRjBkR1Z6ZEdGMGFXOXVNUnN3R1FZRFZRUURFeEpCZFhSb1pXNTBjbVZ1WkNCRFFTQXdNREF3SUJjTk1UWXdNakkyTURneE1UQTJXaGdQTWpBMU1EQXlNalV3T0RFeE1EWmFNR0l4Q3pBSkJnTlZCQVlUQWxORk1SSXdFQVlEVlFRS0RBbEJWRXRsZVVOQk1EQXhJakFnQmdOVkJBc01HVUYxZEdobGJuUnBZMkYwYjNJZ1FYUjBaWE4wWVhScGIyNHhHekFaQmdOVkJBTVRFa0YxZEdobGJuUnlaVzVrSUVOQklEQXdNREJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCQUpjV3FlQ3hnYTlLSmJGTzJUWmRqY2dydFpBZ2ZpOFRYS3UrdjVsY1I1Y2ViNUdKWXh5b0NqaHVlRVNMM2RkbU1Ja3BHeWhzRUV0ZkZVeUJ3c3lGVkNqRmpBVU1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdDZ1lJS29aSXpqMEVBd0lEU1FBd1JnSWhBTDRUYlAwMHNFTmJURVhHb2FnTTZIa2wyWElEcnhnS2JId293LzlHaWJZVEFpRUF1ZEltN0VHcWZ5YThReWdLY2JrUWZxcndlZlluQnZaS0kweHduL2tLV3g0PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFKWUFBQUE5Q0FJQUFBREF1QWVZQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUVuUUFBQkowQWQ1bUgzZ0FBQkd1U1VSQlZIaGU3WndKZkJQVjlzY3pTL1kwM1JjbzNYY0tCVndSQkhraVQ1OExxeHZDRTNBdG9JSUNCUVRaMmdJdFVpZ3RWR2loS1BvWEFSK3l5UExoQVJaWjFFZFZvUG9RcEtXMEJWcTZaYzlrbHZ4UE1yZlFsaVpObDdRUFAvbCtMblRtbkR1VHlmenV2ZWZjbTBrd3M5a3NjSEV2ZzZPL0x1NVpVQy84ejRCbk5MOFdZWVNJdDNZN0hHc0llSDVNL000c3RPL0NOa2pDc3dQSGFuLzVIUmYvcjBqSTZneis0NS90L2ZrYXRPL0NObWdneFhod0hMYk1OR00yMGQxVGFFYUFXeTREd3pHNEV2N2FYTmdIOWNMQ1I4WkJMOFRFSWpQSHlXTENjWUxvK2pRSHBEUFR0TzdpRlV4SWNucUQzOHZQOXQ2V2dYd3ViTk5VUXBGUVFET0RxODhTY2hudjdtS295bHVuQXU0bmxaNHVDUjJuZVVZS2lySmFQZHJwY2ppZEFXMjVjSmdXSnhWZFBZUTJvaHRmK2w3Rk5TKzg1K2xNQ1ZtRGtUT1pPQlBGMFRTSGJDNmNUcWRKcVAvdmxlOWswYWY4SGpycCsrQkpaVCttcGg0NVhEaVpUcFB3WXVJQ0FoZWJXVmJBbVZtam9XU3hhMWJlUlhTT2hQcmlzdG9UeDNHRkRDTUlqTUFKaGR2MVRkdHBqUmE1WFRpVHpwSHc4clNGQk9tQllSaXJOM0lVSXlBd0FVMlhMczVFYmhmT3BCTWtOSlRkcUQ1OGhKQktZRUxwTi80NTVjTjl6UlJOS09UbEc3NWc5SzU1bnRQcEJBa3ZUVjlNa0FvQkptQllUVlRXb3JEVU9iU3hEb1pUampKZVMzWjkxT0IwT2lRaHpNTU4xNnVxOXgzQ1pWSk9iL0FaTVVLb2RQTVlmTDhpS3A2amFGSXVMMSsvamFOTXFMWUw1OUFoQ1RHQjRNck1GSUlRd3piTnFHSnlWL0QyeURVTEdHTTlkRVRJYUVyVE4vSkdGMDZpUXhKU2xiZXFkdTYzZEVHRDBYdklNR2xJSUcvM2VlWnZzc2dZbU9BTFpmS3lOZmtjemZCMkY4NmdReEplU1VyRGNFSUFpU2l0anRtWWlxeFdJbGZPWlF4cWdaQmc2MnJMMW15MjJsenJuMDZoL1JKUzFiVlZuKzhsNUZMT1NIa01IQ1NQaTBRT0s3N2pucEtGUnBwTkRDNVRsR1ZzWnMyY2RkeDEwZm0wWDhLU2hSbG1NMnZwZ2liMTdTalltTEMwSk1hZ3dVakNWSG1yWXQxbnlPcWlzMm1uaEhTOTZtYitMa0l1TXpPTWNzQURzcWhRcXFvYVF1UHRZcnBWNi9YNEk5S2dZQUhMRVZKWithcGMxekRxSk5vcFljbVNkV1lURFRrblJwTEc0cktUbnYxL0NCN3lROGpRMitWTTBPQXpJWTh5S3EyQXdIRWhhYWlvdUw3cFMzU3dpMDZsUFJJeVd2M04zTzNXaHpNc3oweVpJYzZSSkNZU05pOEVBU2tNVklCYXBGUitiY1VuNkhnWG5VcnpaMmVnYnoxU2VrTGs3OHU3VytUU2UwdXZaWDFDa201b0g0SGhNZ25JQlZzZ0ttZWdtcVdnTkZQWE95Y3pNUEVWdE44U2h1TFNNeEZEN241MkpqZHZTMEhCQ1lsWXJLZW9wWXNXUmtVMVNaMmFrWnlTK3VlZnhVSlNDTmRTcjZwLzhJRUg1aWJOcnFtcGZTdHh1cWU3dTlGa0hEanc0WGVtVGQyOVorK09yM2JJNVFvN21iS0pOdlZMU0pnMWEyWnhjZkdzT2ZPOFBiMDRNMGVRUk83R0hGVERObnE5NGQwWk0rRk80QmhlVzErL01TZmIxOWZlWFcwM0pQcnJNR2FXNWVyVVBWNTZ3ZHJKR29DK0ppS3J2dHd2RUFsQlFGd3M5aDMzcE9XSndrWjNoelBSaGordW9KMDJjdUhDaGYzZkhwREw1VnFkYnVaNzd5QnJTeVRObmI4cGI3TmNKb2NyVXFuVThmRnh1M1pzQnp0RkdmZnMzUnZnNzYvVDZpUmlDVmordkh4bDcvNERuaDRlWnRzYUdnMUd5Z1J0VVJBZUhuNmhxRWlqMXBBa1dhOVNqUms5K3VsL1BNblhzY1hXclovdTNQbTFtOUxOYUtEdUc5RGZTZm9CYlpZUWxJdmR0aHJ0Tk9WRy9nNVM1RzVtV0RMUUl5NS9GYkoyQmlLeFdDcVhRV0VGSE1SV1pMMkx1ZlBtNStibisvajZnbjV3by9zUFNQait1Mk84QzdxQ1ZHbzVBMmMydzluQUloVEM2RzZ4MkpFUXczR1J4S0kza0phYU11WHRSSDhQZDV3a2w2ZWx0U29odENSUEgyK1JVS2pSYUZOU2xpQ3JFMmhiTEtRcDA5WGw2MHRYYkxpYW5GWCt5ZDNwU2NPOVlGbTBZUVdzcGF0eXI2Wm1sOEt4R1Z0czNyQ09NVy8rd28xNStkNWUzdGIrcDRxTGlyNnRYNHZvOUxxYXlsdFZsbEp0cDZqclZYejljYytQVmNqa0xNZUt4YUxmZnYrOXNMQ1F0N2ZJOXE5MmxKVlhDSVZDaXFMNkQrajM4RU1QSVljVGFKdUVGUm41bHhZc3Z2TGhxb3VMNXBFeVMxdDJCQWlQZEZYTkh3cy91ckpnMWFWWmMyN3RPWUljbmNlQ2hSL2xiTXIxOGJIcXAxWkhob2VmS0RpS2ZEYVk5ZjdNMnBxYlpTV1h5bTJYcWh1bFgyemJpZzZBVjVrM1IxV25ncGRRU0dYSktTdVJ0U1hXWmE5WEtPVHd4dXZxVlI4bXpVRlc1OUFHQ1NFS2xtZmtTV1FCaEVUcUh2NWd3S3Rqa2NNQndsTGVsN2dGRVFvM2tjanZxdldqNEU3c2kvTVhmSlNWczlIWDF3ZHVybHF0am91T1BuMnlBUGxzSTVGSVBEMDlsZTd1ZG9xSGg0ZENvVUFIQ0FUVHAwL0RNWXpqT0pGRWV1ck1xZUxpRXVSb3lzRkRoeS8rY1Zrb0V0RTBIUjBSOGRSVHJReTVIYVFORXBabmZXYXFyaElJQ2Nhb0RrdHRVOHN5RTJKeDBNd3ByRmFOU1VUYWMrZHFEcDNvck5XMkpVdVRjelp1OHJQR1A3VmFBOGxxd2ZGL0kxK0xZQjFxUFcrKzhacEdxOE54VENnVXA2Vi9qS3hOV2JzMlN5YVh3ZlZBUEo3MXdReGtkUm9PUzhpWnl6N09KYVFLczRtUkJvY0Z2UHdNc2p1RVJhK2cyYThUQ3FXQTR3aVJ2TE1lamxxeU5HVnQ5bm9mSDB2LzAyZzA4Ykd4SiszR1B3dG02OVcwbDZTa09TYWpFV1ppa0J2dFAzQ2d0cllHT1JvNGZlYUhzNy8rQXZNZmhtRUMvUU5lR2Y4eWNqZ05SeVVzei92U1dGR09DVW5hb0E1YjBwNldKVlFxQTZlK3dtbzFtRVNzK3Ftdzl2Z1o1R2d2eTlQU0llVDRlRnZpSDZUNzBWRlJSNDRjUkQ3YmdINGRrZEREWFRsMnpDaVk4K0U0VGpQc3Vxd055TkhBMnJXWm9COC9KQ1Ftdm9Xc3pzUWhDU0cvTEZ1NTBkSUZhVVlhR05Sanl2UEkwVWFDa3Q3R1lTb05IVkVvNHlOaU84QUp5elV2WDVtK0tuMjFsN2NYVEVtaC8vV09pejEyNUpDZCtjWnRZQlRsQjlLcXFxcGZ6NTB2K3UxM08rWDgrYUtTcTgwRDNzTDU4M1JhTFhSRVNGaTIvZCtYRVBDUVF5QW9LdnI5dSs5UFNxVlNsbVhkUFpTdlRabU1ITTdFSVFtcnRuNnRMeW1CNFo4MWFFSStuSWFzYlVmczQ5Vnp5Z3NzeEJLcHVQNzcwL1duTFhsNW15SVRaQk5LTjdmczlUbnBxek84ZlgxQVB4TkZ4Y2ZGSFQ2NEh5YmRxSkpqNU9adEdURGdnVUZEaHcwYVlyUGNQM0RRalBkbm93TWFDSThJZjJ6b0VDTkY0UVNoVXFuek5tOUJEb0VnTXlzTGpQeW8vdXFFQ2ZJdStZS1lRODIyZEhtT1VDSTNNNHc0b0dmUHQrMnRrTFZLMFB4RUhDYkxISWVUMHBKRmE1SFZZV1JTYWNyeXRPUVZLNzJ0NDZmQWJHWW9VKzdHSEppQm9ScXQwakNNS3VRS0gzOS9mejgvK0dlckJQajdRVmFLRG1qRWdnL25xVlVxekN5UUsyU2I4cENFcGRldUhUaHdTQzZUUWNvcWtZaW5kY2tvQ3JRdVllWDIvZnJMbHdVaUVhdlhCczE1Z3gvSDJnZTBCa2xQZi8rSlkxaXRIcGRKNm82ZVVKMHRjand5V1RURDhDUEhqcmtwRk5BZGVRdEdFbk9TNXZNVkhLS2gxeHVOaHJxNk9sVjlmWDFkbloyaTE3WHdRUFBERHoyWTBMY1BSWnVFcExDOHZHTDNOOStBRWNZR21tVWdSbXAxdXJHalIvbjUrZkdWblUzcnk5dy85bjNLK09jMURPS01URHF3N0NScFhaMXFrV05ZQ0tuMGdIZ3A3dVUvOEpMTnpOQlFXdkZqOUhCY0pPU01sT2NUZy9zZHpFY08yOHZjczVQbWZmSGw5c1pUTkpQSlJKdG95TjFCeHBycTZwUmxTNlpQVFVTK2xyaDU0MlpVWE4rQUh2NTZyVzdVcUpFYnNqTlBuanAxN1BoM01EdEVOVnFDcHBuSWlQQ1hYbndCN1RkaXo3NzlyMDUrM2MvUDEyZzB4c1hFN052enI5ajRCTXRYekRGTXI5T2RQSEVzSWp3Q1ZYVXlyY1NQNi9tNzZvdE9rUUl2UnFDT21aOXNSei9BTEdBdDM5Tm5vRFJaWUd1R05DVFE3OFduYjM3K0wwSXF1M1hvc09iOFJiZUVXT1J6REsxVzJ5YytmdGpRSVptWjJVb3ZEMDh2cjJVcHkwY01IeDRkSFlWcTJPWjI2SDEwOEdBb2FLZnRqSHJ1MmVCZWdScWRYaXdXWHk0dUhqOXhFczB3a01qQXRUMDU0Z2s3K2pFTXUvMnJyd0lDQW1CSTBXZzFKcG9PQ3czcGw5QlBKSEk0RmpURjNxZ0k3eGI2WlV4S1dsVDZndGpsSzNyT2ZCMDViQ0QwOGhYNit3Z0RmRWxmTDJTeVFjamlHZUxBUUtHL3I4U3ZWMW5HblhUQUVlQWVCUWYxMnYvTjF4Q1ErdDNYejZEWHd3QWhFZ3Fudk41RnNlYzI3NzR6WGFXMnJMY1JPRmI0ODgrZ0h3eHBETTNNblBFdXF0RVNKR241SFlPUlk1NS9kdlNZYytmT1V4UTFhc3dMVWJHOVlVaEFOZG9LbkE0NE8zRHNkK0xZQXJlKzhEOTFzNG8zUWxqbU54eWhXVlhIajRSWHVWMVpmK1hxVVVGUWdUTGhPQm4xMjhUM2tkVnNualZuYmtDdmtNalkrS0N3eUVHUFBnWnZtN2VYbHBVRkJvZUZSY1pFeE1aNysvVlk4TkZpM240M042N2ZVTGo3d0JsNjlBcWRPdjA5Wk8wWTBJRkN3NlBDb21JalkzdEh4TVREeVFORHdrZU5HWWZjZG9tSzY2UDA4cjEwNlJKc256eDFXcXJ3Q0krTU5SZ3Npd1p0eFY0dnRLUVBEdE9zYXB1U0ZBY3J3K1ZDL0Z1WG1TRVNvZC9IQ2U3Vkt6VjVhWDI5Q253ZW5wN1oyUnQrK3M5WjN0VUZDRW55dFNtVE5Db05iRnV6WXpObzhNRk14OWM5TU1wbytUQXlOamJHVGVFR2cycDVSVG52cUt5cWd2OXJxbXNxeXBFRktEejc4N0xrMUcyZmZ3RjVBREpaYVVuQzIrR2k2Mm4xcFRFemhqVzU1a212L25QRThML3BORnBvQ1I1ZW5oUCtPUWs1Yk5HeE5kSm12UGZ1T3hLWkdNWVIySVk3Mjdkdm42RkRoL0F1KzZCcnNMWmV2VjVuTkJrSmdvUVpUbGIyK2xEbzFQSDlQdjFzRy94TkdQQVFUREdoRG5UdUYxK1o4TkxMTDM3NjJSZGVQZ0dOVzJvTEVscCt0cWU3YU8ybDRaM0R5SXQyR3NqZnNsa21rOUUwRGJORGxVclRTbERzMkJwcE05emQzVU5EUWxuV0Vnb2dTTTk4ZHpweXRBWmNBOGpIVDJjWExsaXNycTJiTkhHQ201c2J4TmVRNEY2RVVMaDk1Njdubm50dTBLQ0h3VGhuM29kN3Y5bTdPajB0SmlwcVM5NG5RckY0NU9nN0h4TTFsOUFNTjlGdTJ1bFVNTXNJMmVZN0xKTkpjelprcTFRcXVJL3U3c29kdTNidFAyQnpzZFJ5NzlCbUozRDA2UEZ6NXkrQUV0Q0FJc01qUm84YWlSd09JSmZMWjgrYkh4MGJmL0hTNWQyN3YxNjVFajBPYjJtT0ZKVzFadlZuK1huNzl1eG1hUHJiQXdlVTNsNDlBM3VDTnpnNDJNZmJTNlhXbkRtREZwbWJUaXBna0NMSUg4TWZFOXpWMHJzQ0dPTGc5ZDJVL0ROVWJlTHZJNFpQR1AvU2psMjdRVUxJMXllLzlzYTFrc3N5YVF2clc1WitiTjFZdHk0N2RXVTYxTGZ1dFl5Uk1qNCtiTmpXTFhsby95NVdwS2Q3S0pWbWdhVUxMbDIwRUZrZFE2ZlZaYS9KQ0FrTlFmc05RRU9FOXc5aGxkL1Y2UTBVUllNRkpxQzhCYVl4a0FSVERSR3hTUyswSkJZNHhwbG9qbUc3b2RDczVRRitqR2hmTjhsZWx4a1k0QS9KS2c1ekRMRjQ3TGhXUHVWaE9ZNkdHUURMMmluZ3BwcytSTktZd3NLZmYvenByRWdxZ1hvOS9RTmVuVGdST1ZyaTBPSERHemJjK1pJWE5GTm9TVHA5QzcvU3hMZmcyMGtlTkxJZThMNU1wcXRYci9JV1BhakxzdjBUK3ZPN1NFS1lqMXVVbzB5VzM3SmoyTzRyY0JrbXVBeU9zVndHZjIwQXd6Q1FMSmdnaXdldjdSK0h5OStTQjAwYldpdmtpc2NMQ3JMWDMzbFVFSnEyQ1E2Mm5NTUVaN05ZT0RQckFIeXEwaUlyMGxZcGxXNXdwN1Y2M2VUSmsrd3NQVUlmaFNZMWZYcGlRY0VKWk5Hb29ZbFVWbGJ5dTQzUjZYUW1GaHJYbmErRExWdThpTUR3ek14czJENTkrb2VTUHkvUFRacnQ0ZW5PZTlFQzI0V3hpYnFpeXpDUjU2Mk9BMi9BNWgxdHpXc0h6a0Q1akJ3ZXRRWU5UYW5MVjM2emQ1OVVLb0hoWmZPbWpRa0pmWGo3M2F4YXZXYm5ycThsVWdtOHI1cWEydStQSGZYMnNhd3pWRlpWUHY3RVA3eTl2WXdHdzk5SGpFaEpYckpseTlic25FOFVibmNXN2U0Ryt2U2dSeDVaODNFNjJtOUVjWEhKZlE4TzlQSDFBWTJodzV3dlBDdFh5Skd2SmQ2YjhVSFJiNy90Mjd0YnI5TysrZWEwRzdjcWhZUVFKN0RSSTBkKzhQNmRlY2pTWmNrSERoM0dDY0xUM1gzYTFNUm5uM21hdC8veXk2L0xWNnlrR0FZWFlPTmZmckh4bXA5RlFoQ3hvZGYrMVlEN0MrTXEydWxVM25ocjZyY0hEeW9VQ3JWYS9jWnJrMU9UbHlGSGwyT1YwTnBkMm9mOVl6dHk1djlsYnQycWpvMVBnR2tvRE5BbWlpcjg2VXlYZlM1eE41WVcycEc3YlAvWXY2Uit3S3FNTmFTUXhERU04aEVZNjdwUlB3REZRaGVPWXpBYXd5T2laZFpQdmlEMU9IM2llSGg0T08vcUZwd1NKLzdhd0lRU2tra0lzYURsc0tGRHVsYy93TlVMMjB5djBBaVJTQVFTcXVwVlJ3N3Q2OTkvQUhKMEU2NWUyRGJTVjYydUtDMnJxNjIvWG5HalQ1LzRidGNQY1BYQ3RuSHUzSG1hb2FFTE1nd2JGaHJpdksrY09ZNUx3bnNlMTBCNmp5TVEvRC9leExnOFIvNHNRQUFBQUFCSlJVNUVya0pnZ2c9PSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzEiLCJGSURPXzJfMV9QUkUiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkQmxvYiIsImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJsYXJnZUJsb2JLZXkiLCJtaW5QaW5MZW5ndGgiXSwiYWFndWlkIjoiZTQxNjIwMWJhZmViNDFjYWEwM2QyMjgxYzI4MzIyYWEiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsInV2IjpmYWxzZSwicGluVXZBdXRoVG9rZW4iOnRydWUsIm5vTWNHYVBlcm1pc3Npb25zV2l0aENsaWVudFBpbiI6ZmFsc2UsImxhcmdlQmxvYnMiOnRydWUsImJpb0Vucm9sbCI6ZmFsc2UsInVzZXJWZXJpZmljYXRpb25NZ210UHJldmlldyI6ZmFsc2UsInV2QmlvRW5yb2xsIjp0cnVlLCJhdXRobnJDZmciOnRydWUsInV2QWNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjpmYWxzZSwiYWx3YXlzVXYiOnRydWV9LCJtYXhNc2dTaXplIjoyMDQ4LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxLDJdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjIwLCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjY0LCJ0cmFuc3BvcnRzIjpbInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi04fV0sIm1heFNlcmlhbGl6ZWRMYXJnZUJsb2JBcnJheSI6MTAyNCwiZm9yY2VQSU5DaGFuZ2UiOmZhbHNlLCJtaW5QSU5MZW5ndGgiOjQsImZpcm13YXJlVmVyc2lvbiI6MjAwMDEsIm1heENyZWRCbG9iTGVuZ3RoIjoyNTYsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjoxMCwidXZNb2RhbGl0eSI6Mn19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIyLTAzLTE1IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIwMDAxLCJ1cmwiOiJodHRwczovL3d3dy5hdXRoZW50cmVuZC5jb20vIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyMjAzMTUwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMyIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjItMDMtMTUiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MjAwMDF9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjItMDgtMDIifSx7ImFhaWQiOiIwMDI0IzIzNjEiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhaWQiOiIwMDI0IzIzNjEiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiRytEU0JBS2V5Y2hhaW5pT1MifSwiZGVzY3JpcHRpb24iOiJHK0QgU0JBS2V5Y2hhaW5pT1MiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJ1YWYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfSx7Im1ham9yIjoxLCJtaW5vciI6Mn1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9kZXIiXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsic29mdHdhcmUiXSwiYXR0YWNobWVudEhpbnQiOlsiaW50ZXJuYWwiXSwidGNEaXNwbGF5IjpbImFueSIsInByaXZpbGVnZWRfc29mdHdhcmUiXSwidGNEaXNwbGF5Q29udGVudFR5cGUiOiJpbWFnZS9wbmciLCJ0Y0Rpc3BsYXlQTkdDaGFyYWN0ZXJpc3RpY3MiOlt7IndpZHRoIjo1NDAsImhlaWdodCI6OTYwLCJiaXREZXB0aCI6MTYsImNvbG9yVHlwZSI6MiwiY29tcHJlc3Npb24iOjAsImZpbHRlciI6MCwiaW50ZXJsYWNlIjowfV0sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlCbURDQ0FUMENCR1FkUFIwd0NnWUlLb1pJemowRUF3SXdWakVMTUFrR0ExVUVCaE1DU1U0eEN6QUpCZ05WQkFnTUFrMUlNUTB3Q3dZRFZRUUhEQVJRVlU1Rk1Rc3dDUVlEVlFRS0RBSkhSREVMTUFrR0ExVUVDd3dDUkZNeEVUQVBCZ05WQkFNTUNFRlZWRWhTVDA5VU1CNFhEVEl6TURNeU5EQTJNRE13T1ZvWERUUXpNRE15TkRBMk1ETXdPVm93VmpFTE1Ba0dBMVVFQmhNQ1NVNHhDekFKQmdOVkJBZ01BazFJTVEwd0N3WURWUVFIREFSUVZVNUZNUXN3Q1FZRFZRUUtEQUpIUkRFTE1Ba0dBMVVFQ3d3Q1JGTXhFVEFQQmdOVkJBTU1DRUZWVkVoU1QwOVVNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVTSXBJL2RLWUNEWWh6d0Qyd1NmWUFPYi9uTmFpUGNXRjIxdnhaay9UZ0QwT0p0Y0QrT1BtNjRud1pkRldTRVlTVzdpT3FucG1KeWRlOG1nci90bkFpekFLQmdncWhrak9QUVFEQWdOSkFEQkdBaUVBM2J2aGF6UUZQd215WGx4Sy94Q1hmaDdnMVgxRW9iTEMzTCsyR09SeHA3Z0NJUUNmTkVUWC9tMkJlYlJMWEk0TE1QMUVRR1BYRkRmN09rNzRVN3hiaU00VmtBPT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCwvOWovNEFBUVNrWkpSZ0FCQVFBQUFRQUJBQUQvMndCREFBTUNBZ01DQWdNREF3TUVBd01FQlFnRkJRUUVCUW9IQndZSURBb01EQXNLQ3dzTkRoSVFEUTRSRGdzTEVCWVFFUk1VRlJVVkRBOFhHQllVR0JJVUZSVC8yd0JEQVFNRUJBVUVCUWtGQlFrVURRc05GQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJUL3dnQVJDQURJQU1nREFTSUFBaEVCQXhFQi84UUFIQUFCQUFNQUF3RUJBQUFBQUFBQUFBQUFBQWNJQ1FRRkJnSUQvOFFBR3dFQkFBSURBUUVBQUFBQUFBQUFBQUFBQUFFREFnVUdCQWYvMmdBTUF3RUFBaEFERUFBQUFheWo2RjV3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVnZDNlRFQ1eExKMzZ4Rm9jNWw4bEdQU1hLc3pORE0wOU5WZE4rOFA4WmRMS0JIcGllK3ZoVHVvZk5YTkF2bStNeVVtUm4xZFFaZ0FITTRjdzFMaWNQMVZMZVF1alR6SjJkSk0zMzVwaGFhVWplYWJLVVJ2ZFY3U1oxZFRTNlN1Rmt3US9iSHI3NjV0MkYxbWRrODdOUHFFK1NZeUhSMWdBTEIxOGx2eVRlalBYUXFtdWdzZ1lkVlZwMXlhSGZYTFczdlVRazJwYUlxZDVNcllxSVBmamRMTm1UWXkyK0NUb3hzYjZJdHRTdTZsQTlCWkhBNnFvQUJ5T09OSFAycFBlbmpycy84QXhtbmNZYkxDaWE2ejB4U21hWnQ5SFJNbFVSdmRGK3F6b1l1czNsZEtWMXU2aWFtM3Q3UHJ0Sm4wR2VudS9BOURXR3h4QUFBZXY4Z3hYS2svT1pxYzlKbWJLbHBNelpHa3pOa2FUTTJScE53TTZFcmgxajh3Mk9JZXlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQLzhRQUtCQUFBUU1EQXdRQkJRRUFBQUFBQUFBQUJRQUVCZ0lEQnhVWElBRVFFellSRWhZd05IQTEvOW9BQ0FFQkFBRUZBdjZiR0lTUmxOWWJGZ1VaUzNGTW1sUGd0S1cyYmZTTHJFMVBTdVcrQzB2QmFYZ3RMd1dsNExTY2lHTHlrMWlnT1Jwa3NRSXhlOStHQVFtcVVQRzdlMDBzUG43WWEzZTVkQnRxOTV4YU9aWUhGQXl4SjdjcEJreGhIaTI4NHRiemkxdk9MVEhMUUozVzFkMkgxaDZ5c0VXczVoMXlLRU9iUnJjZk9nWWl5QkZTV1F0NHlLUFNGN0kzdkRFbnR5eWY3dHdqY29mUmg0Q05ONUFNbEFLM0l3bHkzVlp1Y3NWTU9qMlhMTFJtcDlJKzFHSmoxZE8waDViU0hsQW9DVmpwOVRYSGhZOUpkcER5MmtQSnppdzQwYmRzT21hbTVkWkhZZEI4dzVZWStOZVU0K3JwTHV6YjlibWUvd0FQdGpYNnZ2VlpmK1B1dmxpNGgwWVM5WmRDVk16M2FuSnNqb3AzUGtpM1BraXg1TlRCNlJLZFRvMkZsRzU4a1c1OGtWL0pFaGRXTzJIQWxWNGdzaGtPaEtYOHJGK3RyZmpSeTFJd3g0RzJrUXlTUlIvRjNYREVudHl5Zjd0d2lzTmZTbHlJRk53ZytZU0dpTkE2cXV0ZFhPRVRHN0UzN0IrM0tOTDdlMDZ0UGNYeDk1WHRDQ1cwSUpiUWdrQmdBdU9QMGF4MEpQRXRvUVMyaEJMYUVFbU9NNCt4cnRXcUxGc29WYWhtVXhsbDZXRXZ3eDZVa0l6ZkM1ZUdQS1c4cURPcWRkR3JYUnExMGF0ZEdyWFJxMTBhdGRHclhScTEwYW5NdEN0S1RlWUI3V2s5Skg4a2MvMDMvOFFBSFJFQUFnSUNBd0VBQUFBQUFBQUFBQUFBQUFFUkVnSVFJQ0V4VVAvYUFBZ0JBd0VCUHdINnl4azZSS0Y3cVVTaDR6eWZTMURFbVpFUFdMTXVDOU10V1JZYmdzaHVSZW1YbkZPU3BWaXhZMUpWbFdKUU56eXNXTEZpeFlibjdILy94QUF1RVFBQkF3RUZCZ1VGQVFBQUFBQUFBQUFDQUFFREJBVVJGU0ZTRWhRZ01VRlJFeUl5WVlFUUpGQng4RFAvMmdBSUFRSUJBVDhCL0xWbGQ0UGtqNXI3aXB6emRSMGxReHM3aXFyL0FBUDlLT001WDJRelc1MU9sYnJVam5zdW9LK1dGN2p6WlJtTWdzWTh1Q1UvQ2pjK3lwWXQ2bXVMOXVoRmhhNFZ2VUd0bFUxTUpRa3pFck9rR09WM043c2x2Y0d0a0VvUytoNzFhRk14ZzhyYzJWbFN2ZThYendWWTdVQnN5c3MyR1oyZnI5TUxtN3QvZkNrczZXTVhOM2JKUVFGVUZzQXNMbTd0L2ZDb2FZNlpuWStxcXpZSUNkMVpZM3pYKzNEVlU1VXNtMFBMb29iVUc2NlZsaWNIdXA3UWhraUlHNnFobkNua2NqN0xFNFBkUGFrSFM5Vk5VZFdWM1RzcUttM2VQemMzNFNGamJaSkhaY1JaaTl5d2tkYXdrZGF3a2Rhd2tkYXdrTlNocElvUFMyZjVqLy9FQUVNUUFBRURBZ0FIQ3dvRUJRVUFBQUFBQUFFQ0F3UUFFUkFTRXlFeFFaTUZJQ0lqTXpWUllaR2gwUlF3TWpSU1luR0J3ZUZDYzdHeVUzQ1NzL0JVY25TQ3d2L2FBQWdCQVFBR1B3TCtadDJFWktNRHdwRG5vL0xwb0Y5czdvUGUwOTZQOU5XWWlNTWpvUTJCWEpwN0szV0lRa0h5VnpWN3VBQWdFWkJlbjVWeWFleXVUVDJWeWFleXVUVDJWeWFleXJQd283dzk5b0dsS2loVzU3M1MzblIvU2ZwVnBUZU15bzhCOXZPaFhtaTlJdW5jNWs4TWo4WjlrVWhsbHRMVFNCWktFaXdGRitVK2lPMFB4dUt0UlMwSkVyM20yN0R2SXIxS1oySjhhbXcyNGtwSzMyVk5ncXhiQzQrT0Fma0wrbUI2QTlGa09PTld1cEdMYk9MOVBYWHFVenNUNDE2bE03RStOZXBUT3hQalFTNFg0blc2M203cjBsNk84aDlwV2hiYXJpbkk4bHBMekxnc3BDcTRGM0lMMmRsdzZ2ZFBYNWhtT3lNWjExWVFrZFpxUEJZOUZwTmlmYU9zMDVNZjRYNFcyOWExZEZHUk1keHZaUVBSUU9nRGVqOGhmMHdUL2czL0FHMDcwUFJYT0xQS01xOUZZL3pYVE0yTWVBdlNrNlVuV0RVaUV1Mk1vWGJWN0s5UnBUYXhpclNiRUhVZCswdFF1STdhbmZwOWNIa1FQRXcwZ1c5NDV6OU1JVUJIc2MvSzFvamJXdEViYTBKY3NNNUhKcVR3RjNPQ1ZOaWhuSU9ZbUxqdVdPWklGYUkyMXJSRzJ0T3Z1Q1BpTnBLMVdjMURDL3VjbzhWSVJqcEh2ajdmcGduQklzbDBoNGZNWisrKy9tOVBrMy9vWU4xY2JUbHpoYS8yanpHNlAvSGMvYWNPNXVMMHIvWXJBbTMrbVJmdE8vanBVYkprSVV6OVIzZ1lFYm9KVHhNdE9jKytNMzZXd2hJbml3emNpMzRWemdOZzM0VnpnTmczNFVJczJYbG1Na3BXTGswcHovSVlKY1NITXlVZEdKaXB5U0RwUURyRmM0RFlOK0ZjNERZTitGT011VGdwdHhKU29aRkdnL0xESjNVV25pbVU1SkI2VkhUM2ZyZzNRV2szUTJySkQvcUxIdnZ2MjNtbFlqamFncEtocUlxUE5hdGRZc3RQc3IxaW5ZVWtjQmVoUTBvVnFJb3R5bTd0RThXK24wRi81MGIwZmtMK21DZjhHLzdhZDZBeWd0UlFlTWtxSEJIdzZUVE1PS25GWmFGdXM5WnArVVNNc1JpTXA2VjZ2R2lwUnVvNXlUNWc0MTNJTHZMTkQ5dzY2Ymt4WFV2TUxGMHFUU21ubTB1dHEwb1dMZzBWQ0txT1QvQmNJN3EweXRyOXEweXRyOXEweXRyOXE4c2lGL0s0cFR4aTdqOU1EczZTWDhzNWErSXV3ekMzUjFWcGxiWDdWcGxiWDdWcGxiWDdVRmVSbVFvZngxbFhkb3BLRzBKYlFuTUVwRmdLY2xUSFF5eWpXZGZVS3l5cnR4bTh6TFhzanArUG1zZUU5WkI5TmxlZEN2bFFUUGJYQWQxbTJPanV6MWR2ZFNJZW92QUd1Y0l1MlRYT0VYYkpybkNMdGsxemhGMnlhNXdpN1pOYzRSZHNtdWNJdTJUWE9FWGJKcm5DTHRrMWQzZFNJT29PaFI3QlJUdWN5dWE3cVd2Z0k4YXkwNTdIdDZMWXpJUjhCL003LzhRQUtCQUJBQUVCQlFnREFRRUFBQUFBQUFBQUFSRUFJVEZCVVdFUWNZR1JvY0h3OFNBdzBiRncvOW9BQ0FFQkFBRS9JZjhBVFlqbzRhRFRNME9NVVk2M3ZFdEJaRythQkZ1RCtoWHE5RzVFQ0hOc3U1YUJOUFY2OVhyMWV2VjY5WHBjNVlmMnltWk8wUloxVCtpZ1o0VGdoT0RvL1VUQnU2Ti9OL1hBMzBhNDBTT1FWZXFyQWQyL1NvTUhndXJPbXhHRWhucENBdVczNFVTTHFobGhNU1BnUm8wYnB0c3QzTzZYYWFvYmlWQ0VKTWllWTBERTAzaG0wSFU0eDg5ZHFYSkJSbUVTRGJpdXF5MWJwaXdNTHVIOVhBR2wzT1c3Y3N2NjQvWlJ3VnNvU3VPTStZcWZ1ZVFmTkZDcUp2d3ZVNkxUKzI3K0JoUG5aa0gzT3c5WjhOaFplaGFZbkpIRGJBNW9QQlhuUHl2T2ZsRTJERzh4RmthYkhtUkdJR3NqTWE4NStWNXo4cS9VUEZnbHcwMnBOa1pmSjN6NU5uSHZJQ2ZtRkIzVzYzN2JEYVBNNVlkSTIrV3krdFFGYkp0TjF0c1diY3g2Zm5QQXBYTk9vTGpzVEJEQnVCRWNRdWUwb1lJR0Z0b1VKMnJCTE1pTFFkaG5BcFlNbGFqZXUxQ2hpRmdYa0lTekx0U2dKZGtyRzdZd3dnNFowSHpOQXZSaUpIblNoQ0MyNjcvUkdzY3VYWWMwZnBqVGxMTWRodndkVnYyVWNJTkJyQ2NUK0E0eFZqMWxONWptSzIxYXRFV01kQmUwS2Z3MlFsWDZISU9oZURMUmRic2tuRHFLeC9IU2lKOUJadFJxMHk4eFBOSWNDdlNxZWxVOUtvYlFOaElHK3lHekRkZjdBRUdnVjZWVDBxbnBWTU5JRWp1Y1NnREZEZ1pBVVNXcmJ4WUJpdVZMUWxudkVhc2VCaDlTK1laNWg1dFNHc0RkRkx4c09YR2pVNS9CRm12UHU5ZWZkNjgrNzE1OTNyejd2WG4zZXZQdTllZmQ2OCs3MHlpbjY0TFdCdVFSMXR0Ym9OOVNVNlZHV0J2di93Qk8vOW9BREFNQkFBSUFBd0FBQUJENzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc2b01qZzR4dlAzNzc2bXB6eXl2emVwcjc3NzNqNVQvejVlL3o3NzY0cHY4QXZxLzZJRysrKyt2Yy93RC9BUDhBdGY4QXZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnYveEFBZUVRRUFBZ0VGQVFFQUFBQUFBQUFBQUFBQkFCRXhFQ0FoVVdGQlVQL2FBQWdCQXdFQlB4RDliTWRCcXpNRVVNejJsbjJCaEVScDJCYlVXQ1puaExCeEFweFBLSW1aUTFEOTJjUkR4ckFXb0F0MGl3aHNib0RUSHJwQVJqQ2pXaG01dEdvTXpMOVMvVXYxTDlTL1VYTDlqLy9FQUNnUkFRQUJBUVVJQXdFQkFBQUFBQUFBQUFFQUVTRkJZWEhoSURGUmdaR2hzZEhCOFBGUUVQL2FBQWdCQWdFQlB4RCtzYjMxOXVOWURvN3RQUkZVMEU4NXp2a29kVnZtTjdlNCtLdEpVKzN3N3pKK0dLelZiR0dSWXRWcVcvVEZnWXFCZFAzSUM5VWFGWVhRVkZ1WlAxSVVvMGNJWE5OOWlZNVFEbXlsSGgrT213M0JIaTJYQVN6T3g4ZjR1MTdqRkhrRmJGOVIrZ0lWdDVGdzhaKzR3cGcxRzZ2eUV2QkJPYlpFVWJoZVRZUVNqTngycXE0WVpuZVVWZGVKZnl1bjFHc3JRMUNGbXNxRlVVV1pucWZVYXdCVUxrZTRNSlM0TGJmbGpaeWNPQnk4N0wwS2pjeHFxd2J6dmIzbUs2YXpGZE5aaXVtc3hYVFdGUzE5Q1czbkcxMDVmMlAveEFBbUVBRUFBUU1EQkFNQUF3RUFBQUFBQUFBQkVRQWhNUkJCWVNCUmNZRXd3ZkJ3a2FIUi85b0FDQUVCQUFFL0VQNU52Y1U0WmtpNStBdEtRMEhyQlo3cWVlSnZtaml0QU5lZ3I5TjlVekdNQWpzc2FTR2t4QjZOZnB2cXYwMzFYNmI2cjlOOVYrbStxUE1VSnIvU2l4OCtub2c0b3FtQlBia3NER05zYktTRS9FUzB4VEhBMkZrU3VnRUlRU1dYaGNBc0ZXVmZUUjJDdDFGaEs3RlRKdEFwZUhTREN6SjNmdWhNRVRBdkhRME9MbTlsbzFnREprZWhnd1lORCt4RStXRGxBNzBicDU3b2NJa201a3B0M2Z0ckNNSUlSQkVRYVAwS1V3WFdXdWtPSWt2RDRIRmR3ZFBnbEwxakF1SlYrWStDWUxCVS9pd09BVjJ4WmdNaERBTVlQajFCdElnWWx2QktXL3lORkpCRzJwc20xREE5Z29xd2gyR09BWVQwa0paR25pa0p3MUIySndaQnZSaWJlaEFnN2lKMWx0aWtraUw4Z2prYU1CRlEvd0JuZndjKzdyZFBhWXNKSi92WFBObGdkOEJoYTdSOXNSSjNWSkhLeEd1ZVpGYjFkREVac0syckx6MFpDaW8ya203OGVoQ1Q0RVN0Kyt2S3FKTjd2K2s2QkxKVGRPSFdmaDl2eDNzYlJXZTQ5YU5PRVFoK2R1c2FOUzBFSS9RT1JveUlTbDNuMmhYZDR1b0dIeXFBUUd1VEphRkd6YTdZWkxhWTBtV2Z0ZHcwbDExekJiV1RKdjFEc3NuQ2twSkVkU0lDSmFXUzQ0ZkhReXIrR1RFbnRNOTllTTVkRERjZ0gxUXhFUzVLQ2IydUp6dUZNcVNEUzhTbkNMd2lsbFRBYkNyc283UE5oeVF2eHRGQktCUWhuc0xlRzNKQzlaejhJVjNkQkxLZTdZQ0NwckxSYXZGbTkza1RLVWdYTWtKbFYzVlorQis2c1RGWURZRmJXRGRGQWJBcE1HNG1RYktCRVJCSzRGbnVpRWllU21BRmRLOEo0UUhRelpzek5WeXkvQmNzYjZFbW1DUEo4Sk1pK1o2R2JOblBNMCt4Y3oyRkRVS0JkZ0FBNEtrYUNmT3dDOGFBU3RYcVk2U3Q0Yk1Zb3hBU0IrSjlnd1RGNWlJV21BdE1TVkRZb0tKM0N1ZG1KM1pvRWVKZ2J5WWV6NHYvQVA4QS93RC9BUDhBL3dEL0FQZ2dSTDZ4UWVpb2IwUlYvQmI4anNvQTNiRW1Nall3SlVxQ1ZqK1R2Ly9aIn0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTA0LTE2In1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wNC0xNiJ9LHsiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjg4NjI5OTk5OWQ3Y2NjYTc0ZDUwMjIyMWUyMDEyYTI2ODdhOTQxODMiXSwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiODg2Mjk5OTk5ZDdjY2NhNzRkNTAyMjIxZTIwMTJhMjY4N2E5NDE4MyJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiVmVyaU1hcmsoVE0pIEd1YXJkIDIuMSBGaW5nZXJwcmludCBTZWN1cml0eSBLZXkifSwiZGVzY3JpcHRpb24iOiJWZXJpTWFyayhUTSkgR3VhcmQgMi4xIEZpbmdlcnByaW50IFNlY3VyaXR5IEtleSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyLCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjJ9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50IiwicmVtb3RlX2hhbmRsZSJdLCJpc0tleVJlc3RyaWN0ZWQiOnRydWUsImlzRnJlc2hVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZWQiOnRydWUsIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjExMiwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQ2ZEQ0NBaU9nQXdJQkFnSUpBUDRmU1JRcFJwM3FNQW9HQ0NxR1NNNDlCQU1DTUlHWk1Rc3dDUVlEVlFRR0V3SlZVekVMTUFrR0ExVUVDQXdDUTBFeEVUQVBCZ05WQkFjTUNGTmhiaUJLYjNObE1SZ3dGZ1lEVlFRS0RBOVRlVzVoY0hScFkzTXNJRWx1WXk0eEREQUtCZ05WQkFzTUExQkRSREVWTUJNR0ExVUVBd3dNVTNsdVlYQjBhV056SUVOQk1Tc3dLUVlKS29aSWh2Y05BUWtCRmh4alpYSjBMV0YxZEdodmNtbDBlVUJ6ZVc1aGNIUnBZM011WTI5dE1DQVhEVEl3TURZd09ESXpOVEF3T1ZvWUR6SXdOVEV3TmpBNE1qTTFNREE1V2pDQm1URUxNQWtHQTFVRUJoTUNWVk14Q3pBSkJnTlZCQWdNQWtOQk1SRXdEd1lEVlFRSERBaFRZVzRnU205elpURVlNQllHQTFVRUNnd1BVM2x1WVhCMGFXTnpMQ0JKYm1NdU1Rd3dDZ1lEVlFRTERBTlFRMFF4RlRBVEJnTlZCQU1NREZONWJtRndkR2xqY3lCRFFURXJNQ2tHQ1NxR1NJYjNEUUVKQVJZY1kyVnlkQzFoZFhSb2IzSnBkSGxBYzNsdVlYQjBhV056TG1OdmJUQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJMUFFtNTBEZ0I5ODByZElJcDZIWU5vK25mUWVVaFBzbTRzNzhOUk9lTE1PaGV1S244WnhQWERIRCtTS3FCSEFuWE5idG9ROGc0Y2grcWlTK3NXdkp1T2pVREJPTUIwR0ExVWREZ1FXQkJSRG5XbzI0QzJQcEVTelZiSlB6MVpGVGViU0p6QWZCZ05WSFNNRUdEQVdnQlJEbldvMjRDMlBwRVN6VmJKUHoxWkZUZWJTSnpBTUJnTlZIUk1FQlRBREFRSC9NQW9HQ0NxR1NNNDlCQU1DQTBjQU1FUUNJRVNrazc2a3RGbkRCRHlTZWJKSHR3M1RjSklYVGZObzVOZzRBajg4Qkk3UkFpQnRFYjVveHVpOFN6c1VaNndjUVFqbjVhQjVuZDJhTkpCaFpLK2lGSEhHeGc9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUE0a0FBQUREQ0FZQUFBQXZCVlRDQUFBQUNYQklXWE1BQUM0akFBQXVJd0Y0cFQ5MkFBQWdBRWxFUVZSNG5PM2RUWEliT2JhRzRlU05tcXQ2QlZLdFFPb1ZtRjZCVlZOT0pLL0FySWpMc2VVeEI1WlhZR2x3T1MxNUJTV3RvS1FWbExTQ3RsYkFHM0IvYWFlWkpNV2ZjNUFBOG4waUZOMG1YUlovTWdFYzRPQmdVUDN2Ly8xYVZkVkpaZTkrUGgxOWRmaDNveHBNWmtkVlZSMTUvODc1ZEhUYmVoQUFBQUFBSXZ0RkFlSmZEci8yZFZWVldRYytDaER2cTZvNmFEMXA2enIzendvQUFBQkFHZjZINzNHNXdXUVdWbGh2SWdTSUQvUHA2THoxS0FBQUFBQjBnQ0J4dGN1cXFvNVhQbXZqdWFxcVlhZnZFZ0FBQUFBYUNCS1hHRXhtNDZxcXp0clBtUG9XSUphd2J4TUFBQUJBT1g3aHUvelpZRElMSzNzZlcwL1lHOCtuby92TzNpZ0ErQlRuS3FKb0dWQUtiWit4TEZESVBRNzBBRUZpZ3daTE42MG43SDJZVDBkWDNieExBUGhKMkJQOTN2QWp5YjVvR1ZBWTZ3S0YzT05BRDVCdUtoRUwxWHlaVDBjWHJVY0JBQUFBSUFFRWlUL0VLRlR6b0ZsN0FBQUFBRWdTUVdMY1FqV241UEVEQUlDSXFLSU9ZR3U5RHhJSGs5bEpwRUkxb1pMcFkrdFJBQUFBQUVoSXI0TkU3VU9Nc2ZuNkxaVk1BUUFBQU9TZzd5dUp0eEVLMVZ4VHlSUUFBQUJBTG5vYkpBNG1zNnNJaFdydTV0TVJoV29BQUFBQVpLT1hRZUpnTWp1UFVLam1LUlNxYVQwS0FBQUFBQW5yWFpDb1FqV2ZXMC9Zb3BJcEFBQUFnQ3oxS2tpTVdLam1uRUkxQUFBQUFITFV0NVhFR0lWcS9waFBSemV0UndFQUFBQWdBNzBKRWlNVnFnbVZUQzliandJQUFBQkFKbm9SSkVZcVZQTlFWZFc0OVNnQUFBQUFaS1Q0SURGaW9ab2hoV29BQUFBQTVLN29JREZTb1JvQ1JBQUFBQURGS0gwbE1VYWhtakdWVEFFQUFBQ1U0cGRTdjhsSWhXbyt6YWVqcTlhakFKQ1B4NnFxN2d4ZkxWa1ZBQUJrcnNnZ01WS2htaS96NlloQ05RQ3lwb2t1SnJzQUFNQjN4YVdiUmlwVUV5cVpucmNlQlFBQUFJRE1GUlVrUml4VWMwcWhHZ0FBQUFBbEttMGw4U1pDb1pvUUlENjJIZ1VBQUFDQUFoUVRKQTRtczh1cXFsNjFuckQxZGo0ZGVhOVVBZ0FBQUVCbmlnZ1NWYWptWGVzSlc5ZFVNZ1VBQUFCUXV1eURSQldxdVd3OVlldHVQaDFScUFZQUFBQkE4YklPRWxXb3huc2Y0bFBZaDloNkZBQUFBQUFLbFB0S1lnZ1FEMXVQMnFHU0tRQUFBSUJleWZZdy9VaUZhczduMDlGOTYxR2dRNFBKN0tpcXFxTU5Yc0U5RXh5QXI4RmtOdHpnRjN5bEw4RTJsQ2tWdHRQVS8xdTczYUdBM2paL1AvUXRaNjFIZjNhKzRYVy9rL2wwZE9IMWI2UGZHRDl0SjhzZ01WS2htai9tMDlGTjY5R2VXbmRqVWZIVlRtTmdVQThPNm83NFpKZTA2c0ZrVnYvZnV6QlFEUTFmL2NOUkxpOXJmQitiZU9RekxZdjJ2Qi9wR3FqYndIQk5IRy83Umh2M1l0akM4S2o3OEZIM0ltM29EaGJ1ejFYMzZxTitxcFFIZnVwalQ5WG1EMTlvNzdlNlhuUjliZlRmS1BoN0tVaDg2Zmw5WlI4a0xnVFJxd0xxZS9YTGpLT002SE0vYXJUYnYrci9iNTExdURCK3FuUVAxVzEya3BOKzZyT0dDK1BIYXRmK1psRDk3LytGZitTdjFqUDdlKzF4MGVzRHVIMmhBZDNYZGQ4SzFUUTYyK1lOdHUyTjlkeG85TzcxUFRFYnMwYmpoaDdxOC9kTW4xNzByTy9vUnJQVHZReHdHaE1naTUzTFBtME1RWGxtMUFZMjcwWHZUSlZGRC9YOXlJQ3hUZmZwc0RHSnR1djM4OXpzbjlUMmRkSkg2Wm83MTgrbUV3OGZQRmZhTk1qMkdCTnViRDRkRGJyOC9kdFFINzc0czIvZjBldzN5RUJZb1RGK3FqLy9yU2Z2OWxDUG4rbzJ1N1ArWGUzSVdPM0lKbVBJOE5yRGFRMlhMNzN1cklKRWZSRDN6Z1BwMEZFUCt4RFlEQ2F6NXF5bDU4MzExTGlSZXIwNnEydTQvdHhQblNjN3R2V2dTc0UzSlYvL2pjRm0vUk1yTUg5cWRDckpCT1dEeVN3TU9OKzNudGlkeXdTaEJ3MHl6aU8wZ2R0NjF1VE5WWjhEUnZWUnB4SHUwenQ5M2xFR2U0MUIzWGlIUG9BZ3NVTWQ5T0dNbnhvaXRnbmJlbERnRlRWZ0hFeG1ZNjI4TjYvRDU4WkVRejJXRzY1WStGbmJudVFXSk40NnorNkdEL2FvOEFGeWZZTjFGYUQwY3ZDakZPbndtYjlwUFptZStqdTZLR1gxYThjWmUyOFBqWHVoeTFuSVhnV0ptaVFZNjM1TWFaQ3h5cFB1eFY2YzA5djRmczQ3NnFPK2FJYmQ1UnBlTWFqYnh0cEJuY0hySTBoY1FtT244NDc3OEw2T243b2V0MjdyMnZzNzBwam1jaUgxKzFwdDE4clY1OGJFYUxOOVhiazRsazJRcUVJMW52c1FuL1VocmZ4d2M3WERVblFzUlE5K0VoanNXTGpPT1ZqVWdPYzh3aDZhZmRXemtGZkxHbXBQZlFrU05WRXpUbXpGY0J1bHQ1ZERCVSt4MDN4WE1mMjgxUTlmR1FRWkJJbVJKRHgycW5yUUhxVDgyVzhxWkNpTXJlTUtmVGEzamI3c1lkdENtMHZhb3llZDV2RFR2NUZGa0tqTy9YUHJDVnR2Uzd2WjlreHBpYW1veGs2ZDdEaVRWY05OdVE1TXJDVTQ0TnhVOUZYY2tvUEVRZ1lhaTdZZUVLUk1NOXN4cXBYdjZrbWY5ODdYdE43amxkRUVCVUdpczR6R1RsV0I0NmNqOWQycFQreHU0NU8rSTVNSjRJV3N5cjFxcUNpejRhUCsyRnBSVEQ1SWpGU281dE44T2hxM0hzMllCbjQ1TkhCTkQ1cDF5VEtOSW9QQnpyNlNINXlxZzdrcTVEdUlzb3BiYXBDWWFSdTRqYXdtYmhacElINFJvVks1bFM5cS83WWE2RG1NWVFnU0hXWGNidXc5bWRHbFFvUERwdnJjOWIyK240V3N5dThCNHJvVENHUmxFY21GaGJpNytYVDB2U3BxMG9mcHF4TzVjYjVadjVRVUlJWUdmakNaUFdyUWwxc2pGMlpaLzlKTmtJMXduUTRtc3hDWS9GMXdnRmpwKy9sYkRVcHlOQ04yWDlCM0VEckxmOEsxcGJZUUd3ajdWekp1QTdmeGZqQ1ozZWQ0YlNnUXVjOG9RS3lVR2ZLNHpmbUFrY1l3TUpENTJLbFNwa1FZUDkzazFDWm8vQlNDdzM4S0RoQXJYVk4vNmIzdVJCTk9kWnY1WldFRjhWeVRPNnQrL2pPWXpPYTZQbjVxdzdRSy9VRi9mS1d4MURkSkI0bHFYTDBybVJaeDFJVnV0RXRkSExtblZiM1Q0R2ZabVZkSjBjMzBXSGpqdHVpemd1SWs2TnEvVmNwRWlZT3hzelhuYkVIQ1RLcXVnejhMU2kxOXliRUNsK1RieXBvR1NibjJVOXNPOUx6SE1OaFRZV09ucWpHWmNkcDZKakY2amZmR21TeXBlNy9IeEcrOWdQSzhSK3p5Um0zWVQvKzlzaE1lOU1lTCt2VWxHeVRxcHZXdVpMcDE2a2lLR3Vrc09jM0t2aVFNZm02M21iV05xVEVnTFRVd2VjbFpDb0dpcnYyU1ZnOVg0YXlzTlFwY1JkN0dnZHJLcEFORkRjWnZDaGtRdm4rcC9WTWcyY2ZyTVJ1Ti9xT2tzVk9sTnVIUGxDWnpteHB0UVo4bTlKck8xR1p2SENqcVdxM2JrL0VMc1V0SUdSM1VQMVZWL2F1cXF0OVZTS2UyTEdPdlhrRThVQ1haTklORVJiamVOMjJyaWsrT05CTnptM0hGdm5VT2xzMTRkSzNuQTlLbVRnUEZ4dVJJOFowTUIvRXZ4MlROZDBrSGlvMXFmQ1VWODFyWi91bDc2TlBxU0hZMHJpaTkvemhMTFNWZEUvK1BoYlVGdXpqZU1sQ3N4OEhQMnhZcENnR2x6dGc4MVFKWmNMQWs3ZlMyc1pyNDdmY2xGeVEyaW45NGVsdkNHVE5xNVA3c3dlRG9jd3FCWW1QMnErOEQwcWF6THZhUVJpcG9sWXE3UEY1bVhJMVVwYjVQMXRUcVFIRmQ4WUxvbHBSckw4bXFRREdyZmZWOW96N3JjMC82ajNEZkpiRjlwNUhXeS9qcHY0NjNhQ3ZxZ082bTljeUd0UHI0MHVKWTNaNTk2MWVUQ2hJYjUzWjRYa0RYSlpRS2puUXNTRW82RFJRYlFVbmZaNytXZVJmenUrbGhNUWhTVFJjb2xhOFBFMlRiT3RobkVHR3Q4QUN4ZHRZczlLRFplU1l1RXFXZ3ZyVDAwcGNjZHBscDBLZ2IwTGZQZlJObkcrNXhydHZRZlJlNFhscTUvRDdlQ0cxWmFpdUpWdWNJcmZLd3oza2lxZWhoZ0ZqNzNNVm1iSFg2cFE5MDluVVpjUVdqYjhVZ1NEVnQwQ0NQVkw3VmpoT3FFTzNkcDZmaVkyTUFudTJ4SktWVDI5R25Jbk5ObmFTazk2aHV3RDdlcjZ1L3NaQ1N1dk40UUxGRDNSNC9MOHVvWEh6c2w5YS8waEZGMHA2ck5FOGxWQWpzY1lCWUMxV2hockgyay9KNWIreEFBMExYZTZ5bnhTQllTZXpQcXBTVnNMcC9zMndRRUlzQzFUNWxYdHl3aXBpdW5nZUl0VHBRakRLRzZ0bTJrSDJGc2UzSmlvSTB6Y0IrMmZPTGpwYXNUcDQyQThRTngyb25TUVNKV2gzeW5CbXVEN0hNdXBLcE9xQXVBNWJuSlFQV2s4Z053SUU2NDFVM2t4bGRsNmtIaUE5TEdvM1kzMGt0bks5ejdwWE9yWlhLTHM4MFhYYjlWMHJmY0F0Y1N0Zy9iU1QxQUhIWjllRjZiYnpnNm9YRGxkMm83WXlaV3ZhazYrTlIzMEhkSnA3b094aEdhQmNQbDN6L1NFQkNBV0xkWDNjNWtSQmxES1grT3ZVQU1hWHgwNkhHTnk5bElteFM2T1p3VFV4MXQwMDgxSG1RcUprRzd6MkM1N2xYTXRYbkZIT3Z5Wk4rWC9qYzdsLzYvUFQ2VHRRWm4wYm9qSy9xRXIyT1Vxa1UrS0R2NFZHTjd0ZE5ydWZHZDNLcTd5Vkd3M2VwRlF5UHp1Y2lZdVA5c0hEOWI1VGlvYy84U0ovN2ljSG4vdEI2cEw5U0NCRHJRTEFPU0I1MWZheTkzclVLMnJ3WFk3eVh3ekNiclBPdm9tblVGdkQycEtJUE4ydnV6NThtV0JTOG5qb0dES3lZSkVZcktyRUR4SHI4OUsyZFdOVmZSeDQzTlIzcXRYbU9jWTRTdVIrZTZuNTh4L0ZUek8vbTI5RTZTOXF6YmVPWHhRbkxadUQ3U3RmbUppdUo5NTBHaVpFSzFYeFE2ZGRzUmZxY0tsMVk0ZmRjTHJsSTE5Sk5kMThQRGlKMHhtL0M3OGo5dTEyaDJjSGM3aHB3TmI4VFhVT25DclE4OS9NZGJEZ2J0aFhOU25wMzlKc01PdGRxZk9iZnIwdTk5dUdPd1RyN0VidjNwWEV2N2pUWnFIdjR0ZzVhTkFBWlI3aW14eUh0TTNJV3phVnpYL1dzYzhLMkRrVFZYOXdvY09naWVFQkUyaTZ5YWtYRjJ0YmpweFhqcG5Ha2xjWmp0UTFkWnVkNGVGYi9lMk0xZnFwK1hFdm5FYjZiaThXRDhzTjdHRXhtOVI4M3lRNEpFNWMvQllFYWg5eG9nbkpsMXRmaW50V3VWeEs5TjdWZng1NUZkWExoL0RtRndmSEZzZ3RtVnd1ZHNkZmVsQkQ4SE9XZVJpeDFCM1Bsc2VxdHoraEtuOW5ZZVZYT1kyRHFlUitiWC85TkdqQmM3VGlCUXZwYU4rNzBmYm1zaXVzZVAxZjdlT1U0OERqUWdDTktJUnR0aWZBTXZLNDNPRWo2UmJvbno1V0dlTlhUQTcyTEZ1azR0VXA5OTZXQ3czMnZ5NXZHM3RZWSsrL0QzdVhiQWliYjY4RHd5bXQ3aHNZSFZ3b1dQU2ZDenBRQnNqalI4S0E0WUxoTHBrYjQ5elQyK0VjUG5hNzRkNGFOLythMnN5QXhRcUdhaDQ3M0w1bFFZK0cxdCtOWkRadmJBRndYK3FuZWgzVm5mS0NHTk9mdjJUVkFXV1krSFYzcXZNY2JwOG1IZ3pVTjBOWWFxNkFlUHVuemp6YlIwQmdJalBXK3htdStCL1lqeG5XdDZ5SEtDcTUrejFEWHdzZldYN0F4am5odW4rZGt6bHZyZGpJTWdocGJYbElzc3ROTUc3dGQrTitOYVJWaDA4cnVtNnhVWEdlUTVSQWorOHFsLzFDZ005U2czdnQ5NUR6WlhtZi9YTVY2L2FFTmFveWZ2SUw0OFpKeGJiMG5mK2V4a0FMRk90aGMxZDdWN2NTMzg1azdDUklqRmFvWkZyTEM1QlU4M0dtdlpxekJrRmRuL0U2clZybWw1VVVQRHB2VVdIZ2U3WEZoZU8xNjdRY3dIM1J1WTJGMWQ2aE9ZZkhlSU4wMGpxakI0U0pOM0h4MUtwUjFHQ00xMzdHeVo5MmZ1NnlxNno0OFRhUzRpVW1xM0JKSHhtTXV0eFViQzZxczY1MTlkZTc5R1lSN3RsR1B3dXY5MUpYSm94OHZ0b2RudGRlZEhQV2orM0xvMkdhY0x3a1M2L005RDFhbGltNW9aWnVpTnJ5K3pyNzkrOUhQU1l4VXFLYUlBRkdyclI1cE1KOUN2bkxzQVZINFR1YlQwYWtHWkpaeVN5a09zNDhuWFFZb1ZhT2hjeXFPY21oNEhwTkg1OVZwZ0xnb0REWjBiL3pXdUQrZU01ejh5RTBZN0wwTzUrZDIvVm5yZW56YmVzSkdqUE9CdmRyaDB4aUY1M1NHc25YZnRLa250VW0vNmxyMEt2NWxJdkVBMFRQN3F0SUUrMG1zejZET05uQytOdDkwY1FiMWpzSWU4YU91QXNRbXh6YmpRR210MzZrTnZOT2ZMeGJPVHJSU3QrSDFaRlhjSURGU0FaYTN1VmN5clg1OFZoNXBsRys3M3Fqc2NHT2RSVHpJZlIvUEdwRHV2YWZHU2lOUWZIYjQ1NjBHcHRabkwzNUtLVUJzQ2dNQzNSK3ZJNllJOXRWMXpNSGVKblJkZm5ENHA5ODREU3ErY1Z4RmZCdnorOUc5Rjd1aWNHaVBqbEp0a3pMazJXNWVhNEk5YXYrdENYYnZTWXhMenpiQ1FCaWovQjRtVXhPYlFCazd0Um5MZ3ZZNmlEdTB1TTZiQi9ocnkwUGRobjlQb1k2OWt1aGRxQ2Jad2Q4T1BEYkdKck42b2didlMrdUozZVd3bWpoTWNRWldqWUhIU3NPeVJtNHJDdjR0NzRQbkhLNFZyU3lXVUhRclZWKzBZcFBjYW8yKzk3dldFL3V6bm14cDhtZy9yanZxcjA2ZEpzMlc2WHpTdGlRYTZIcU5NYTgxYnVtTWM2QjRtSGg5aC9NVUMrdzRqcDlhMjdJMGZ2eWtQNTdwZXErZkM0SGRRRDhyMjNwTmN0Ui9yNjYyZmQ3WUUzL1hYS1dORmlSR0tGVHpwWlRHMXFuY2YxTHBkWEt1TkJzTHA0blBnbFVwcjNDcjhiVWVtQjRhclBCYW4rTVUremdBcENuMWJCT1B2c3dsblV6dHJuVi85ZFRWZ0ZYcGZURW1hUDVnOWRDT3JrT3Y3NjN6QUxHbTErRXhpVlNwTW5tcTQ2aVUwNi92UFRKQWxxVUFLODZwVnk0L0tyYmE1M2VjTi9iQ1B5MzJFMUdDeEFpRmFoNGk3Ym1JeGJwejdHcEdkcTI2WU1DNnY3T0ZnOEt1Z1M1NGRMQXJaN1EyWkIwa2xuaXVKZ3FqUVlmMWlvSFhTcUpIOEJtMTR2QWl6YVI3RGNTcnhkbDZtQmc3YldXNlN5VkFiRGcxbkdCdk9pamhWSUNPWERwa0lLd2EvelJyU1lRRCtHKzJuWkFQa3dFcThGUUhpTS9hLy8xVHUrc2VKRVlvVlBPc1plZ2lWZ2MwaTJQWklEMGsyTUI5cDhIUXA5WVR1eUZJM0lOU0Q2d0hScDRwYmxzclliOHllc002aURoMFdpV3dEaEtmRXBuVTlGeE5KSlhja0dNTmg5YktTZ3FNSjlnWHBieWFtS3hHdFhKTFM4ZFBqVm9TOVhndFpHbmVoNkR2cFdBeFBLL1Z4OGRHZ2FjSDdjOXZqWTljajhDSVZLZ21TdVd6aUt6TC9lY1FPRjNvZGU3N3ZvL0RwQVNCd0Y2c0QvWmVOUk8ycWFXTjVJNWlGNlFBZGhiYXNjYVpWbFpPSE03ZXRKNElTaUtBMHJGTmR3NEZlUjVTcmc2YUthOVZ4TmJLU2lyVVBueHd5TktyczdKWTZkN2VwWEZsM1pWdFQrTVlqb3ZHOWY5T3g4STlhVXRGY3l4OHBQWi9zVDlaZTlhbjkwcWlkNkdhcUpYUElyR2NEZnVRUThCa1BBT1QwMWsvS2JKT3gvUzgvN2ZGN0NoeUUyVm1lbGVxam1jNU9FOWxGYkhtOFZwSWViZm5zWXFZL1BoSlJhNDgwazVKT2QyQjlqT2JUa2EvdERLb2ErQkV3VjZkN25xbzFjWDNqWit6aGZGWTJNN3cyMHZWOWoyRHhHVUhRMXRLY3AvZFBwU2FheldvZnM1c0pzanF0UklrN2tHTmhXWFYyY3J3dk1SOWVadzVDbml5bmdSZE8rRFlRZEY3aGpYR3NONW54Q3FpSVJYZXNGNUZmTXFvdXJSSHR0amhzcUlwMkloMUcvWmltNjJqczBLdzk2dU96L3FnY2R6ZHdrOTQvUGVxcXY2MTZkbkFudW1tbmdGaTB2dnM5bUQ1bnJLcTRoZ3VWcVBVbnBCeWVzUWg1SHU1Tjc1L2sxbkJDeDFmaW1XMGdXV1VVdlpzT0FpMkRoS3RVMDFUblBpOWNhamVDanNlWThGc3hwZU9hZEduckhydjVOWTRCWGk0emNTU3Npdk5KcUppbjVOb3BkUVpEc3YzbFdNK3VWV0RsRlN4bEF4WnozU25zcEpZc2RLTURGbW12RmtIaVpiLzNsT2k2WDJzL0NWS3FYald3ZEZkaHR1WVBGWTl6eWhnczczU3RzRGxHaVFXVnhsTWpaMVZPdHgxcHRWZUNSTFRZRDFRMjZlanNWNFJQdE0rS2lBWGxvTU82NVJyeXozSHFRNnVDQkxUNVhMOFN1dVJ4RGxWSnErWVZOMlo1VDdSVGlmWmN3MFN3MEN2dEkyMWxqZGpscDJhVWtRdDluK2t0SEtWbmNRbUdEelNobStZSVVWR2treWQzL1pjcmcwa1dTUkUvWkxsb0krMng0NTFXbWlPcTRnMWorQ1dJSEUzbG0xMnArMUZya0ZpOExHd0ZRSEw5NUp6SHJuRlFDR2xpcHE1c3B5VjNPZmE5aGc0aHYxZHR3a1YxQUhXU1hWL2RTK0NSTEg4RG1oM0RHaVN3cnF2ei9iWUJ3VzMxcFZPeWJyWlRURTFNVHlEUktzRDB0Y3BhVVhBNm1aOHlEVFZ0R1l5aTBkS1lURzhHdHRqQllyTWxLSlhFbTRiVXc0U1NUbE5qM1hiL1ZSQVVUUHJJUGVBc2RST0NCSTNjQk1oVUR3b29mSFdqSmhWOVRxcWV2NFhzN1VGVUNFTDZ4TDB0WERQL1RtWXpHN3BDSkd3VkNmOVRPK1p6Q2MzRVY4Zkt1dHV5eVBJcFcvc01kZDAwM0J1aC9YQmtrdUVJdzl5djdrdEE1cmtEODkvZ1ZYUWI1MEtoZTU0eis2RzZuaC9FU3dpUmFrZjZOMFRscE92dERFMkNCSVhlQnptenZYYXVlSUwxNXc2cmdUVXpuU2dhcTVZOWJMSFoxcU9XQ2xBZGJBWXp1d2NPeFRtQUxDYzkyVHl2c2pRU1lqMmsxc2VvUDlRME5uSzFzRXVZNmx1V1Y3blcvTThUUDhiSFpJZUFyZy9XMC9hK2p5WXpPNHpuWFcxdkFuUE0xOE5zZHBqU2dXNVFvUjlJb1BKN01taGZQOHE0ZmQ4VkhHc08zVzZ0d1VOSW9EVWtHcUtiVmdITGlYdE9iVitMMkZmNGhIOVh6KzVCNG5WajBGZTJKLzRydldrclZ0ZHpMbDFPSllCeldIRXdYVEtxSEJhbGhDb3ZlL2dIYjJxRDJzZVRHWVBlaDAzZEppQUtTYjFzQTNySURIM2dqWGZoWVdTd1dUMmJMd0NkY0pxZWo5Rk93SWowdjdFWEF2WnZHbzlBcURwTWtMYStrdU90Y0w0ajFKU0x6bEdBekNSK3FRZTkzbGFUTCtQak05R1hNWDYvWEQ5OTFUc2N4Smo3RThzb1pBTkRMQ25yQnpLRHZBNExIaFhoOHFNK0hzd21YME5iUTdIYWFCbitwUWlhcm5TU1dydC9peURsdFQzdys3Q2V0c1ZZNm1laWhva0trVXJSb0daYkFyWnNCTGhpb2F0SVBQcDZOTDRrSDhySVlQaFRNZHBFRENpTDB3SG9vbFA2bGtHaVZTcjNaOWxLbVdKMzRmMVNpSmpxWjZLdlpKWTZiRFNHQWZ0Zjg0a0FHTXZCckM1OHdUU1R0ZHBCb3p6d1dSMmszbmxaU0NXbEFlaVRPWW13cUV3WDRsNzdhemZFOWQvVDBVUEV1VWkwaEovS0dSREVBWVVJbUkyZ3BVM21yQ3FWeGpwYkZFSzY0Rm95bFc1TGU5YkNvQ2twYlQ5aUpWRFliVk9qMkZBZHpvSkVyVy9LTWFLUUs2RmJBQ3NvR3lFdDh1ZlRWYTl3dmczaC9hakJBNEQwU1FuVUJ6TzVDTkkzQStwajVzcGNhOGxJdXRxSmJIU2VZYmoxaFAyVWk5a3cyQVIyTko4T3JyS01GQ3MxWWYyRXl3aWQ1WUQwVlR2QmV2WHhaN0UvWmdHaVFWV05xMlpGa2lpcitxbnpvTEU2c2RBNzdyMWhMMXNDdGtBMkV6bWdXSzFFQ3d5TzQ0Y1dhNktIU1JhOE1seWNQeVU0VG5PeUJQWEdmYldhWkFvTWM1UHJESXFaQU5nUXdvVWYwKzhtTTFMWHVuc3haU08rQUEyWWIwcWxsU1FxSm9HYjFwUDdJNVZSTVRDdFlhOWRSNGtSdHlmV0ZISUJpaVA5aWdPQzlpRDhYNHdtZDJ6cW9pTVdLZnFuU2JXUjF0bklGRWpJUzNzMndQV1NHRWxNZWIreExENS9LYjFLSUNzaFRaa1BoMkZUSUVQbWIrVjR6QURUTllEY3VDd24rc2dzZXJGMXVNU2dzUzBrSklKckpGRWtGakYzWi80YWpDWlhiWWU3UTZkQm1Ca1BoMkZsTTEvSjNyby9xWU9WQVdWZmRUSXdSZmoxemhPWVRWUjk5OWg2NG5kUFdsQ0hBQ3lrRXlRS0xIMko3NWpBQWFVU2F1S1ErMVZmTXI0VFg2bW5VSUdyTE56RGlObEZxMmtJTlY2anpCWlRBQ3lrbFNRR0hsLzRpVXBYVUM1d2w3RitYUjBwQXFvdWE0c0VpZ2lkUjdCejdqanZia1h4cXVJUWNwSGNmWFZxNzUvQU1BNnY2eDVyaE5oRldBd21ZVlp4TS9Pdi8vYi9zUVFLSFpja3RyNmQ5K1J3dm9kaHhhalRtVy8wcVRRV0JVVUxRL0g5aFltdE81SlZVT0tRdjg1bU15K0dGY0JyZXNIUkovSTFYbHc3MXBQN0lkVVU4UkdBVFRzTGJrZ3NkS2dUZzMxV2V0Slc0ZnFpRG83SkZSQmNldnhQZHhxWHhhQWhYc3RaQ29vbGV4VVA1WURXeStwVEdnQnExdzUzRXZIZzhuc2FqNGRSVnRKVjl2Z3NUS2FVaDBFOUFOQkl2YVcycDdFcGxqN0UxTW9aSlB6R1c5QVZrS2dGU2FpNXROUkNCTC9wWFJVNitJYjFnNFphQ0pWT29iR1kvL3ZXYXgwYXdXSXR3NVpCcytrbXBveW5TalRnZ1JleGtwNER5VWJKRWJlbjloMUlSdHVQcUFEbVFXTVp3eG9rREN2REJiM2ZibU5BUEc0OWVUK0xza0FNTVY0YVRPbSt5MjVodnNwNVpYRW1PY25WaDBYc3JIY081ZlNRY1JBTmpJSkdGbE5SSkswOTllcm1uQUlGRjFXNDlUdmV3V0l6OXl6eVN0dTRpMkZJMlJRaHFTRHhDcnUrWW4xdnA4dWJpN0xJSkdLcmNDZUVnNFl3ejZ0MDlhalFCbzg5OE9IbGZSN3k4bGNGY256Q2hBclZoSHR6YWNqNjhKOEpZNlpyTjlUenVjT1l3L0pCNGtTYTMvaVlVZG5HVmsyZW14V0JneXRDQmhqdEVlcmRIcUdITENLSm5VOUI1UWhtUHM3ckNydWMwUkdTTnNPQVdkVlZSOGRLeDAvVVVRdUN3U0p3QXBaQkltUjl5ZDJVY2pHTXNmK2tGUUR3RWNqWUF5ZDhHOVZWWDNxb1BEVXE0N1BrQVBXaWRGWGg4cm4vd3dtczVEOWM3cEpueGZ1bWJCeU9Kak1RdWJPWDQ2cmh6WE9OL1ZqT1JGeFdHQjdhaDBrY3F4YVR5VjVCTVl5RWM5UHJGVEk1bDZ6b3U1MHp0U0RZYWMxN0doRkZPaU4rWFQwcUZXOXNRcHJlQnpBdmNvcGU1MlFvbkJmRENhekM2M1NlWHRUSDcyaFB2UnhZZEwxVncyWVR5S2ZqZnJKSVMwU1A5d2JGMllaRmxhQjFucWZKV2RPOTFRdTZhYmZSTnlmV0hWUXlNWnlOWkVLaUVCRVdsMDhVaXBxakpWRlZpbVFyUGwwZE5uQkh0NWpCWXp2R3ovdkZFekVEQkFmNXRNUktlRytySU9XWXZaNWExWFVlcktTSUxHbnNnb1NKZGIreE5pRmJDeFgvaWhzQVhSQUUxbEhTa1AxZEV4YU9SSjMzdkhlM1M0OE0wa2JoZlVxYlVuZm1mbDdZVlc4djdJTEVodjdFMk9JV2NqRzhpWXNNY2NleUlMMkxZYkpyTitkVnhVcFRvQmtxYThlZHJCbnR5dmZBa1NxbWZyVDhXaVdEam8rSzl1UzlTSkIzeVo2MEpEalNtTGRRUHpSZXNMSEsrMnY4SDVQWDQxdlJ0SmRnQTdOcDZNYjUwRXlRU0tTMXFOQXNRNFFPZWc5SHVzcXV0bG5ZQ203NUUzcmlmMndpdGhqV1FhSlZmdzlEKzhqblUxbXVYR2FQVXRBeHpSbzlMb1hTVGRGOG5RUERBdGVrU0JBN0laMWx0ZWJBakt3UE1hcEJJazlsbTJRS0dIdzlkUjYxTWRWaEVJMmxvMWVTZWtUUUxhMG91Z3hvY1ZLSXJKUWNLQklnTmdkajYxQXVXZGdlYngrZ3NRZXl6cElWQ3BMckJTQkF3V0ticlAzS3FsdjJZbHlrQytRQm8vT201VkU1T2Fpb05UVDBGY2ZFU0IyUStNbDYwV0M4MXdMZ2cwbXM2SEQyWjkzN0xIdHQ5eFhFbVB2VHp5T2NKYU81ZGxuaDZ3bUF0MXptQUFDc3FCRDdFTy8rWitxcXY2TWZCeUZsM0FPNGdrRDZNNVpyeVllWkx5YTZESFc0N3p0bnNzK1NLemk3MDk4NDF6STVzWjRwdldTVXZsQUV1aHcwUnVoM3hsTVpxRnYvcWVxcXJOQzNuZFl1WHJOT1lqSnNKeFVyNDF6MjV1bzErdHhqOUZuOVZ3UlFhTEUzSi9vVnNoR001T21leE5KT3dXU3dLb0Rla0g3OSs5MW1IMEp3c1R0aC9sMGRNU1pjZCsvMzg0NVpXZ2NPQVdmbmp4ZTc1MCtYL1JZTVVGaTVQMkpsWE1oRyt1ZzdwM3kxUUYwaDcxTEtKNzZ4VnVkTTV5N2I4R2g5aDdtUE5scTNmYWt0TkxtRVNDOXlXWE1wTmRwZmV4RkZXRnJGVEpRMGtwaTdQMkpib1ZzTkh0ejNYcGlQNjVGZHdDOHlIclEwZnNWRGFTbEVTRG12dS93U1dPSmI4Rmg3bnNQSFY1L01wV1Y1OVBSbFZNeHBGekdUQjVCOGpPcHBxaEtDeEtyK1BzVFBRdlpXUCs3aDl6MFFLZHlQNE1MV0VuN29uSU9FRU5nK0ttcXFuOHJyZlN5c01JMGx0dHhVanQ0M2lOUU9rdzk3VlQxTWF3cm1nWlhGR1ZDVldLUUtESDNKN29Vc3RHK0IrdGc5NVdxekFHSXozcGd4VW9pVW5KakhDQ0d2V1p2cTZyNlhjSGJYZXR2N1AvdlgydkZzQTRNeHdVZmFVM2dkYmdBQUEvNFNVUkJWR0c1dit3NHNlSXVsMDZyaVdlcFZvalhxdjM3MWhNMmN0dVRDU2UvbFBqQmhoa1FGWmI1dS9Xa2oxREk1bDZIWmxzYU8rU2FoMFl2ZkVZY2pRRkVvb0dHOVFvTGV4eVJCT01WalREQmU3NVFJT1o3MzZvVXdEcmRjVmtLOTVGK3ZpNjVSOEsvK2JXblp4dUc5LzZxOWVqdXpsTXBpcWN4MzZWVDBQUjVNSms5cGxTd1NQZUFWMmJZTlFWclVDc3lTS3kwUDNFd21ZVVp3byt0SjMyRS9QV2haZWNUYnRUQlpIYnRVTnFZUUJHSVJCMjY5V0RxaVhRZ3BFRFh0OVdSRUNGQVhIditvSjZyQit5c3BtL3UxamlJU2laSWxFdGRoeDdwempmVzQ3czkzVGdXaHFJYVByNHJOZDMwbThqN0U3MEsyWXdkMHloSVBRWDhYVGgwNkF5T2tRckxnWG4yUldJU1poM2dIS2FVaXFucnhpdkFDZGYzYlFwSGYyamNacmtpM01RcUluNVNkSkFvTWZjbm1oZXljVzc0UXFCNG45dkJzYlZVem1wQ1hHRmdrc3MxcTBHVXgxbHhGS0ZDS3F4V0VaOVZxUklPTkphdzN0ZDVtVklGVUMwTVdKK2JXT3M4VUZTQTZIRm9mcVhGQ0t0N0dZVW9Qa2pzNFB4RTgwSTJhdmlzRy9kYUNHenZ0WWN6Q3lIdFl6Q1poWldVdndrVSswVURrczlWVmYwVHJvRlVpd3BVUHdMRXo2MG45dmZzc1A4WjJKcjZEYXRWUlBiWStyTnVOdzRTUEUvUHMwK29BOFdvL1U3bzk1d0R4SXBWZkN6VGg1WEUyT2NuVmlwa3MyeEQvVDdPbmRKT0t6VjhmdzRtczV1VVYyaTBnaFJTSWY1cXBGc3c4OVV2emNtTVYzVlJnVEF4azlLMU81ak14azRCWWtYbE9TUWtpd1BIOFoxSFFQZEc3VjBTTk43NzRQaGFEdFR2UkZsRmJSd3Q0eGtnUG1neEF2aEpMNExFS3Y3K3hFb2JuYzBHcmNvVDk1NjllcU5WeFl0VVVrakNaNmpYODFXRDdzVzlYZG1zZ01MRXN1LzdVQVVaL3RGRVIyZXJpN3BlYjUwTFpwR1NoMVNReVpFUnJSUjVqSU0rSnJZLzhjSXg3YlQyVHVNbHQ0a1NmYWIzVG1jaDFwNGpqQzJScWQ0RWlSSnpmK0tCQWtXellFc3BadGV0SjJ3ZGFNRDlxSm15NktzelNxMDQxMkQ3SDcyZVZTbE5Cem1seW1KM3VwZGVPaExtaldaNVEwbjBxMWpYaHE3WkMzWG9Ya1VGS2dvTElER1cvWVBuZllNZnZGYU1QcXZOVFdXUDRxbGo5bFV0VEZEK1paMkYxZGhTODNuTjJNZktSVStQaE1FR2VoVWtkckEvOGRpNlFkYXhGZDR6WkpVYXBuZk52VitlalgvWVd4aFNWdFF3L2tlTjQ2YURCb0xFZnRqbWV6NVFlczZmellEUitocFdaMzZsYTNiZFpJWUZDZ3NnTmFaVmUxUGVZMXdLbmZmblZlUGdUS3RyblgrUGtiS3ZhbThhbVN3N2owZlVSOTB1YktueGRFMmFLZFlwOXB6RVZUbzRQL0ZNQisxYjNvaERyVmg0blpPejZGVmovOWVEOHVQRHorTzJNMUNOZzVEckE0K0grdk0rZzJ1Q3hIN1k5WHV1QThadmV6b2ExL0M5cnVHTmo1TlFhdEdKZml5TGRteUN3Z0lvWGRoYWNNTjE3dTVDZ1lpSFE0MFZMbFFvSjdTdlgwTTcyK2ovYTZFOS9UNG1tRTlIcHBsTElmc3E4bmp2amZab1BqZmUrLzJxY1pKV0grdStaQmh4VEZkcHNZRkpSNnpWdXlDeDB2NUV6ZmJFU20vNXFFRFI1R3l6MElIcTlkOUdIcVJXV2gwOXJzdjZoMFA1bGNMN1VncmNrV01EK0MzbGxJcVA1ZG93MVhSVHg4MDlIcnFHbjErb3JyanZSTWErN3BqeFJZS2VqTnYxUTFXUEhCSW8rbEhBZHVjOEJqclVPS0U1VmxnckJFM1c2ZlFhNzUwNEYzNVp0RGd4V1MzME1WMzNKK0cxbkhLUDRTVjkyNVBZRkNOZnZjbTZrTTI5WnA1aXZvZFZEaHVyamF0K3ZHZklXRTBzbS9mM2U3RGl1cTEvdXU3UVNjTkRpanoyeHg1clQvdzRwVFA0Q3BSaW0rSlNCRWJiZEx6ck9iemtJS0grWk1qZWRteWl0MEZpQi9zVFBRclpwQlFvZG8wZ3NXeDkvbjdwMEpHcWRhdnYremhRaXVDajloT2ZwM3c4VTQ3VXBuZ2VGYkVMdDNZK2tVQ3hhM1dBU0tFYWJLU1g2YVkxcFZ4OFVNR0pHT3BDTm1ZemVOcGpPZXdvOVRRbEllWDBoTWF2UE1hcHBybDV5eldOaE4zVzZZUk9GdFAyNnBTOThQTlZLNW5OQ1pSN1V1ZzJGNDZLME5ZVnp5TVd0dUY2N21ZSUZKWDZHVFAxTkJVRWlOaGFyNFBFNmtjak9ZeTRQOUc4a0UwalVMeEtxTEh2d2prYnNZdlUxMVhFRUNCeUppSlNackxQZmd2TmxMMmxOdG43OW9MRi9jbDFRSHBmRjJCWi81OW5aNmhBTzRWSjVnUHRSM1g3akJVbzFzZEw5TVdUOWlBU0lHSXJmZDZUMkJSN2YrSkg2d05ZRzZtblhxV3RjMERLYVpuNnRoOHZ0RVcvRXlBaWRWcTFLeTJGYjNGLzhqdGxHLzJwTS9IbVlhSlhhYkJqRlVYSmxyN0RsTGF0dUs0bVZ2OTl6NkZ0ZmQyVHJUcWhpaWxaVnRnSlFXSTMreE1yNjBJMmxkN0hmRG9LRGV5bjFwUDljSmg3aDQyZjZSNVp1V3BRb0NlbEJGR3BGN25vNDJUR3NWSVd3NzdKdndlVFdiMTNNc3VKU2dVUXFXVGhSUGtNdFZwNVV2akUrcWY1ZEhSQ0NqWjJSWkFvYWpCaWJ1STJMMlJUbTA5SFk4MlNQYldlTEI5VklNdlNwOVhoTzJaOGtSdm53OWx6Y2FpZzhjL0JaUFpWQVdOV0U1WmFYWHVid09yYWNheXF0cUY0anliV1V5dmdzNjg2RzRYdE45Z0xRV0pEMko4WXViT3JDOW1ZYTh5UzlXbFY4VTRIMktJY2ZSaUFoZzc5anpCWVljWVhtVHFueXZaM2RiR2RzTUo0bTlQcW9nTEZGRkpQM1ZOT216VDIrNjJRdmlha2Z4K1JqUUlMQklsdHNmY25oa0kyTHJNOVNqK3RWeFZMSG1pSFJ2RzFCdG1sRlJYb3RiQ3FwcG5lMTRXV0wvK2kxVU1PeWtlMmRKekNCZDlneXl1dExqNWExeUh3b2t5R0UrMWw2MHIwd0xxeHF2aDdwbGxZZHhvSG5UUFpDQ3NFaVFzNjJwOW9Yc2ltS1FST2F2emVGcFNDK3F3VWtkL1VLQkljRmt6WDhMbG1lLzhvNERxdU8vUlR6a0JFQ1RUUjBmZHo2Rlk1Vk5HYjJ4ek9lMVRBZE5KaEdtWm5BWFZZZ1p0UFIwY1pqWmVlVkFtYlNYS1lJMGhjb29QOWlaWFgvc1Nta0VyU2FQeHlYVm44b2x6N1gwT0tDQVBzZnRIZzVWTFg4YitWVHAxVHdQaUZWVzhVYk56eENsVHF3c3JpdlZmMmtMVU8wekFQdXc2bU14Z3YzV2tzZEVRbGJIZ2hTRnloZy8ySkI3SE9uRkxqTjJ3TXNsUGZTL0pGRGZXL3RQSkNyajNxVk5SeEkyRDhrT2dBOVVtcm43L3AraVU0UkpFYXh5bjB2WkROT2dmS0hycU5WYUJsSDQwMHpOZnFpMk5KWWk5blk3ejBXd0tUa2s5NkRiOXBvcEd4RUZ6MS9qRDlGNXhHUG1RMlZQVzZVbHFkdTBiWjY3RTIxdy8xbmc4anZkOVY3aFF3M3pLZ3hpWjBMWWVmQ3cyOGh2bzU2ZWdJalMrNmhtOVk3VWFmMUlIaVlESzcxQm1EV0M2MFM0ODZQRDc1aXNicWkrdDAyVk1WS3pwdS9jWDlQRFQ2L3FRQ0lMWGo5WGpwcERGZTh1NWY3aHA5Q1pXdkVkVXZHbGk5ZHZpbDJWL01vYk5UWTVEOEhvSjlxVUcrVVFONHBNRjFQY2crY1FpVW4zV05mTlgvaHAvSHhCckJxMWlydXdrS25hSFZMSGZVVGZRYXBONDBLOTNxUHE3djVhSCsxMkl5NUVrVFNmVTFmSjloUjI1OW5YdTlmOHQrS3JmQTNmSzlSN2srd3lyL1lESzdVVUdiUHAxMXVvMERCVjVaQklyVmoyQXBUQUJjTmliazZ2YjFWLzBzQm85UFMrNjV1djkvVk4rZlRWL2JtSlQ4Vm5CTU5TWHEvdVZreC82bEhoTTlOdnFTbk1jZjFyRkZUdjFxTVdQSHdYdytiejBJTExOUVhHZVRqZVgzaXdFQ0s0TklpU1pFNmttZ294Y21oSnJYN2lNcmhNQm1sS2x5RlRFckowZS9rejVZRmdYUkw1MlhlVTgxVXFTS0lCRUFBTGhRa1pZTEFzUVhoWldrYkZZVUFaU1BJQkVBQUpoUzVzbmxrdFJEclBhc2MxUEpVZ0RRT1lKRUFBQmdRaWwyRnhTdDJkbURWaFJKUVFUUUtZN0FBQUFBZTFPQnFGc0N4TDBjSzhnR2dFNnhrZ2dBQVBiaVhKem1JVktWNUpTcXNMNm0wQnVBTG5GT0lnQUEyTmxnTWd0bjVuMDIvZ1NmdEtmeEtuYnFaYVBxY2ZONGg5am5CMTl1VUJrVEFOeXdrZ2dBQUhiaUVDQ0c0UEJpUGgxZHRaN3BrUE1oOHF1OFRlMXpBTkFmQklrQUFHQnJ4Z0hpczRMRHk5WXppVkhBR1BZTm5qbS9zcWY1ZExUdTdGWUFjRU9RQ0FBQXRxSWlOWDhiZldwaHorRnBia2MvUkFvV09XUWZRQ2VvYmdvQUFEYW1ZeTZzaXFwYzY4aUg3TTRHREs5NVBoMkYxZFRYV2duMWNON3R1d1RRVjZ3a0FnQ0FqUTBtczdDeTljYmdFN3RXa0pXOVJ1RHNzVi94WDV5YkNDQTJWaElCQU1CR3RBL1JJa0M4S3lWQXJQNjdxdmhWMVZBZldrL3U3elQyK3dFQWdrUUFBUEFpclpaWkZKWjVMakh3YVFTSzFxbW5CSWtBb2lOSUJBQUFteGdiSFpZL0xqVjlVdS9MZW9WMDJIb0VBSnl4SnhFQUFLeWxWY1JIZ3lDeEY4YzZEQ2F6c0QveFZldUozZjJXWTNFZkFQbGlKUkVBQUx6RWFoVXgrWE1RalZnZmdzOTVpUUNpSWtnRUFBQXZzVXFodEE2ZVVtVjl0dUZKNnhFQWNFU1FDQUFBVmhwTVpxRnd5dUdxNTdmdzBKZWpIUFErTFN1ZC90cDZCQUFjRVNRQ0FJQjFyQXFuM0xjZUtSdG5Hd0xJRmtFaUFBQll4K29JQmdxdkFFQW1DQklCQU1CU3FtcHFrV29LQU1nSVFTSUFBRmpGc21CSzM5Sk5BU0JiQklrQUFHQVZ5NFBjKzFhaGs0cWtBTEpGa0FnQUFHQm9NSmtkR1owckNRQ2RJRWdFQUFDcldCN2kzcWVWTmNzVjJJcFVYUUN4RVNRQ0FJQlZDQkozWTFVUnRzWnhHZ0NpSWtnRUFBQXhIQ29OczJpcUNQdkc4ajNPcDZQYjFvTUE0SWdnRVFBQXJHS2Q1bmplZXFROFkrTjM5TkI2QkFDY0VTUUNBSUJWck5NY3gxcHBLNUxlbTNXUXlINUVBTkVSSkFJQWdGV3NnOFFEaHlBcUpWY09WVTF2V284QWdET0NSQUFBc0lySEt0Yjd3V1JXWEJHYndXUjJhcjBYVWRpUENDQzZ3WHcrNTFNSEFBQkxEU1l6ajRIQ1U2aDJPcCtPaXFqYXFhRDMxbUVWOGN0OE9yS3VsQW9BTDJJbEVRQUFySE8zNXJsZEhZYWdxb1Q5aVk0QllxWDBWUUNJamlBUkFBQ3M0N1VuN2xpQllyYXBwODRCNHROOE9tSS9Jb0JPRUNRQ0FJQjFQRmV6NmtBeHU1VEt3V1FXQ3ZEODdSUWdCaGV0UndBZ0V2WWtBZ0NBdFFhVFdRZ1V6OWI5SFFNaHJmVjhQaDA5cHZ4dERDYXpJd1hPcjFwUDJnbXJpRWV4M3hzQTFGaEpCQUFBTDRteHFoV0NybjlDUURxWXpJYXRaenNXZ2tNRnkvODRCNGdWcTRnQXVzWktJZ0FBZUZHazFjU21CNjNZM1hTNXVxaUE5VHppZTcrYlQwZkpCY2tBK29VZ0VRQUF2RWhwbHZlT2UvRFdlVkNCbUc4L25rZG5xT0xxVUQrbnFzUWF5M1A0dmZQcHlPTjhTZ0RZR0VFaUFBRFlpSXExZkV6ZzAzcFd3QnArdmpZT25IL2NkTlZSd1dCZFdUVUVoRWY2ODNIckw4Znp4M3c2dXV6dzl3UEFOd1NKQUFCZ1k0UEo3RGJDbnJ3K3VwNVBSK2Q5L3hBQXBJSENOUUFBWUJzaEJmT0pUOHhVU0tjZEYvUitBR1NPSUJFQUFHeE0rd0ZQbGZLSi9UMW9INkxiUGtzQTJCWkJJZ0FBMklvS3F3d0pGUGRHZ0FnZ1NRU0pBQUJnYXdTS2V5TkFCSkFzZ2tRQUFMQ1RScURJSHNYdGZDRkFCSkF5cXBzQ0FJQzk2RGlKRzZxZWJ1VERmRHE2eU9CMUF1Z3hna1FBQUdCaU1KbUY0T2M5bitaU1liWDFmRDRkM1M1N0VnQlNRcm9wQUFBd29SV3lmMnUvSFg3NEZBN3FKMEFFa0F0V0VnRUFnTG5CWkJiTy9RdEI0MEdQUDkyN2NQNmg5bTRDUURZSUVnRUFnQXZ0VlJ6cnAwL0JZZ2dPTDFnNUJKQXJna1FBQU9DcVI4RWl3U0dBSWhBa0FnQ0FLQlFzbmlwWVBDN2tVdy9uUkY1VlZYVTVuNDRlVzg4Q1FJWUlFZ0VBUUhTRHlleEl3V0lJR2c4eit3YWVkZVRIelh3NnVtazlDd0NaSTBnRUFBQ2RHa3htSnpxVS96VGhzeFpES3VtdEFrTUswUUFvR2tFaUFBQkl5bUF5Q3dIalNlTW5kbXBxQ0FoRDZtZ0lCdS9aWXdpZ2J3Z1NBUUJBOHJUYStLdFdIQ3NGa0w4Mi92OG1CWEdlRlB6VjZ1RHZzUTRLNTlQUjE5Wi9CUUI5VWxYVi93UGhXSzN0TVBWdEdRQUFBQUJKUlU1RXJrSmdnZz09In0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMTEtMjIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJWZXJpTWFyayhUTSkgR3VhcmQgMi4xIEZpbmdlcnByaW50IFNlY3VyaXR5IEtleSIsImNlcnRpZmljYXRlTnVtYmVyIjoiVTJGMTAwMDIwMjQxMTIyMDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25Qcm9maWxlcyI6WyJlbnRlcnByaXNlIl0sImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMTEtMjIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6Mn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNi0wNS0wNiJ9LHsiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbImI4ZGQzNWYwMDg1YmY4YzJjOGRkZTAwY2EyOTAxOWUyYzMwODk5NGUiXSwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiYjhkZDM1ZjAwODViZjhjMmM4ZGRlMDBjYTI5MDE5ZTJjMzA4OTk0ZSJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiWXViaUtleSA1IENDTiBTZXJpZXMgd2l0aCBORkMifSwiZGVzY3JpcHRpb24iOiJZdWJpS2V5IDUgQ0NOIFNlcmllcyB3aXRoIE5GQyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzYsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6Mn1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiLCJyZW1vdGVfaGFuZGxlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlEU2pDQ0FqS2dBd0lCQWdJVVRuYmJHSVIyTkh2enFJS0ZBZVF3RzFYQmlzMHdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFRWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPc1hqM2swNEJhbjRUWWR0WktxRC9PUEp4eUR5YVBtQ0JVRlVpYVpJZ1R0ZVpuajNYMjVEaGdwWlpYc0M0RDB5ZEljcmxBNndOVUluT1JML0w5ekJiVEVJTUFWTUdvNmc3VUtBbWIyTUY2QUhibmhZSmQ5ZWlrdXBWTldTaEhOWU5jNEdCZE8xWU42QWZVcXZKaEhiZTNWNFNOTVBtQlJFS0pQVno3VGh3Z21nZ1RlOFdzMkswL3dzcXYyd1NFN3BiQ0JzVVpoSVg1MWJaTTNwcUR3SlBUbVJGRXZ0MC82dEc1ZU84RjNqMTRPWHFmRWhtam4xVnZ4S0RZUU9MWkF4Q3d3Z0MwUDRDZGZXdjN5OFBTUjhJMzU0aE8xWStHek5qdklxWDM4TktMeXd1SVlIRmVyT3hObHhFTUJ2RmhZQnVSdVlBa2tnVWFQcU42VUJoc0lMcnNDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNDb1JIaGl5Tm5iblhSV0lMNlpCWG9CWDlZVE1COEdBMVVkSXdRWU1CYUFGQ0FvVUNFYnBGcGI2RlBMblozRjVQeHNMM29mTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFDUUZhZkpJMS81V2c5Q0VFaW1FMVJQNTRSZ1F3VE5UT09Rc0xBQ1RlK3JJdGxGUXpDOVpEaHJWODI4eVg3anp5K0FBc3AzaXpLN1QxdGgyZGw3bSt0dTBzdzJQYS9vbGMwMm50NlB5SXczNDhnYUh6aEkxKzBLRTQ1cXh2RkRlTDJsTXhiUGZDWXZ5RUVhWXpqaVFFTFU1OTUxcFhHV3lLTWEvNGZMdE8rWktPWGhNdVZlcTRyWERQSTU0VzZKSE9pQWFpS2Rpdys1ZTNjMmt0L2pGSVF0TTZ2TVhnOUxORnpkakVUTnQyMFZYOVFldlJwRlpmdWNNRzl3Q2FRRG9GbFB6cFRNSktoUGV2L2ltSm1aWWhLZnIwbExjZW10cWpJeExBb3FaZE9ZZkhCZzYrdkFjZFBJL2lhdUdwVUF2N1grVUtObUR3aloyQmFINHNMd2hCMm0iLCJNSUlEUGpDQ0FpYWdBd0lCQWdJVVh6ZWlFREpFT1R0MTRGNW4wbzZaZi9iQndpVXdEUVlKS29aSWh2Y05BUUVOQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU1aNi9UeE04cklUK0Vhb1B2Rzgxb250TU9vLzJtUTJSQndKSFMwUVpjeFZhTlh2bDEyTFVoQlo1TG1pQlNjSVpkMVJueDFvZDU4NWgrL2RoSzdoRW03SkFBTGtLS3RzMWZPNTNLR05MWnVqejVoM3dHbmNyNGh5S0YwRzc0Yi9VM0s5aEU1bUdORDZ6cVljaENSQUhmcllNWVJERjRZTDBYNEQ1bkdkeHZwcEF5Nm5rRW10V21NbndPM2kwVEF1Y3NyYkU0ODVIdkdNNHIwVnBnVmRKcHZnUWppVEpDVElxK0QzNWh3dFQ4UURJdituR3ZwY3lpNXdjSWZDa3p5Q2ltSnVraFl5NktvcU5NS1FFZHBOaVNPdld5RE1UTXQxYndDdkV6cHc5MXUrbXNVdDRyajBlZm5POXMwWk93ZHdNUkRuSDR4Z1VsNVpMd3JyUGtmQzEvMENBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUI4R0ExVWRJd1FZTUJhQUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUU13RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCRFFVQUE0SUJBUUMzSVcvc2dCOXBaOGFwSk5qeHVHb1grRmtJTGtzMHdNTnJkWEwvY29VdnNyaHpzdmw2bWVQTXJiR0pCeUoxWG5xdUI1c2djUkVORnhkUUZtYTNtaW84VXBmMW93TTFacmVYckowbUFERzJCcGxxYkpueGl5WWErUjExcmVJRlRXZUloTU5jWktzRFpyRkF5UHVGakNXU1F2Sm1OV2U5bUZSWUZnTmhYSktrWEliNUgxWGdFRGx3aWVkWVJNN1ZvbEJObGxkNnBSRktsWDh1c3Q2T1RNT2VBRGwyeE5GMG0xTFRoU2RldVh2RHlDMWc5K0lMZnozUzZPSVlnYzNpcm9SY0ZEMzU0ZzdyS2Z1NjdxRkF3OWdDNHlpMHhCVFByWTk1cmg0L0hxYVVZQ0EvTDhsZFJrNkg3WGszNUQrV1ZwbXEyU2gveFQ1SGlGdWhmNHdKYjBiSyIsIk1JSURTakNDQWpLZ0F3SUJBZ0lVUjM4bXEyNlNmMnN6VlYyQmRHNldFTjdrdVdVd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVJZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU5ZMFdiOW9Qb1JvS29ReVdQYUpwejExdnJXVGc2elR0bU5qMlZvS1JueXZLR1JxcHpiODN3NWw2WUE5NlVZa1lCRFFQMGlsTzJEUGU2d1dxVlI1ekRmUnpkY0g4YmgrTDdkR0d2YWU2aFJUWmhrRmtDcFhEczRIY2NrbnJEZjhGQ2xKN0hlMzlKZjQyL0cxUW0yeno5V1dtclBYdGdpSy94MDVHanNRZkd1REcxemY1UVRVVWllOGx3eW1LM1RmZE92TmVlSkFBUGUycG43SXRmUmIrclZyTldpRHpsUm4ydk5uWjJ3UG80d0gvV0o2ZGhYWkcrck1XVCthNkJvY2cxVWZJdzZrZHVuRzRiVHBaenN2YWNGWXlSMG1wZitEZU9ucFNXQW15d0pXSHZUbGYyWVh4RnllWGNUQUNkUWxjTU5HSjJWaFpRNDh4dFA1L1JCUC84a0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ2h5NDJva2lxY1RTMWlxYS9IUldqa0JuNEgvTUI4R0ExVWRJd1FZTUJhQUZPcTNRcENlREh0a2V0dFVmQU82ZkU2ZjJLRmhNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUFuK1JISVBidE1FRE5kVDFnOEgvUml0QWtVZExnQXQxdFdHV25sajlrbmJ2NC80R2xYN0M5cDQ1ZWZQTzkvYVpMNk9WMVhSS0JpNkttdEJXNUs3bnVZRW5NeC81QnFCU2JMVDdyaGR1QzQ5VEJlTWI5UEhkWHNUbFNWTlllZnIxZEdpZHI0ajB4VkJRTGIxcmtuREFiZFdEektmdm5heUtPOEZyd2U3SHg4NDNNRy9ySitjMFhydVV2YmZWVENITGlJV2hNN29ORGhMOHhvYjZ4VW85S0xLY1NMK0l0WXNPMy85V2I4UTlHanNxTDRGWHNEY0cxU2FZaDdLcGZ1TW1PaXhxekpaTzJuSWljUFlSZzFJMlN1aVVmWU83MHRtZEhjYmwra1NRbVNZdDdycTR2aUlMZzJHeDNqOXJJVHVXVGpiYVVhU1NReGdPbU1TSHV5ek1BQyIsIk1JSURSekNDQWpHZ0F3SUJBZ0lVZXg5blQ5dndaTlhTNDgzTGRpWUdmdzJTalNvd0N3WUpLb1pJaHZjTkFRRUxNQzR4TERBcUJnTlZCQU1NSTFsMVltbGpieUJCZEhSbGMzUmhkR2x2YmlCSmJuUmxjbTFsWkdsaGRHVWdRaUF4TUNBWERUSTFNRGd3TVRBd01EQXdNRm9ZRHprNU9Ua3hNak14TWpNMU9UVTVXakFuTVNVd0l3WURWUVFEREJ4WmRXSnBZMjhnUmtsRVR5QkJkSFJsYzNSaGRHbHZiaUJDTWlBeE1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBdTFNZXZueTlkeU85WlVDMzlTb01oTGNSL0RYcnRGL2NpTTEydGNpeTJFWEFaNk1rcml2VnRDZkVWTTlYNklTVEVuQlA2dVNZWW92NnBwdjZPNkpoMk5IbVltNHcrSm5TNFZuQ1BVN21IQU1mVkkyTUdUVE1WT2V3MHhVc0c3c0lTSWtJRFVCbXVrOFlLOWM1emljOSt2RlFHTElrc2RYTzVpVkZJZ05HNTNjR1hENFpMWm9BUGl1MFBFb3p4QXFZSWFJNGd4S2hPQTNTOC9XOG1JV3N1Nm9meWo0R3ZrRkc2WjdreUYzMTA3UDdtd0ZITHJJM0VOYVBXTU9GY1RhR2EwZHcrL3ZWUndqUmNFWkJWc3V1VC84N2NrU3MwYTVwa3QzdlpCbGFZZVQ4cHpTcmVWN21vd2NJTTkwTDJpYUFUbFAwbnhtYUU2bk95VGJvakZWbDJ3SURBUUFCbzJZd1pEQWRCZ05WSFE0RUZnUVVTWEVoM3NhM2J0RHVybTRNTS9DN1MxbFJ1dVl3SHdZRFZSMGpCQmd3Rm9BVTZyZENrSjRNZTJSNjIxUjhBN3A4VHAvWW9XRXdFZ1lEVlIwVEFRSC9CQWd3QmdFQi93SUJBREFPQmdOVkhROEJBZjhFQkFNQ0FZWXdDd1lKS29aSWh2Y05BUUVMQTRJQkFRQjVHYzNoYWZ0cDdoS3NFWnNvK2kvWjVuUnVxZG16RzJXQ2xVb1JVcWJhUHlnbG5KRGpLUi9rZmdPbDZpYmJGL3p0aG0zS21YUTdIY0RJUDJ4TWRHN1UyTDJpbWJKUUhxUGYvaDJIcW9qYjRyWmd1ZSs2VzRrdFNSNWVsUjlMMXJZcUUvU0dZTTRpRUtvVlFTdjdSVDFyeEllV2lLc3cvVnh4aS9RT25zeDNGN3g4MENDWWdCNEUzeVF4OFZUVzQ0MGhURXdUQTFlTUhPaXgzMnRQdHl5SElhOFBWVklmVnBIUUpCYU1WdnY1MDhVRWp3a2JVMnJuamZ6b1NUTlM5QTVqVVE4bUJTdmU5NXJqQjBkbzk4RVUrRHhkQnFYMitINmk1d2xJQ0ZnemhkemNzbmU5aEdLVDZselRYNGNJZEpzclkyK3hsZUswRkZReTZsR0VWTEVlIiwiTUlJRFNEQ0NBakNnQXdJQkFnSVVEcUVSdys0Um5HU2dneGdVZXdKRkVQRFJaM1l3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRREk3WG5IK1p2RHdNQ1FVOE04WmVWNXFzY3VibHZWWWFhUnQzWWJheG45Z29kTHg1c3dIMGxYcmRnamg1aDdGcFZnQ2dZWVg3RTRibDF2YnpVTGVtck1XVDhOM1dNR1VlOFFBSmJCZWlvVjdXL0UraFRaUC8wU0tKVmEzZXdLQm82VUxlTW5mUVpEclZPUkFrOHdUTHEydjVMbGo1dk1qN0p0T290S2E5SjduSFM4a0xtelhYU2FqMFN3RVBoNU9BWlVUTlY0enMxYnZvVEFRUVdyTDQvSjlRdUt0NldDRkU1blVOaVJRY0ViVkY4bWxxSzJieDJ6Nm9rVmx0eURWTEN4WWJwVVRFTHZZMXVzUjNEVEdQVW9JQ2xPbTRjcnB3bkRSTFZIdmpZZVBHQkIvL3BFeXp4QS9nY1NjeGp3YUgxWlV3OWJuU2JIeXVyS3FiVGExS3ZqQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJUcXQwS1FuZ3g3WkhyYlZId0R1bnhPbjlpaFlUQWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQXFRYUNXTXhUR3FWVlg3U2s3a2tKbVV1ZVRTWUt1VTYrS0JCU2d3SVJubHc5SzdIZTFJcHhaMGhkd3BQTmlrS2ptY3lGZ0ZQemhJbXdISmd4eHVUOTBQdzN2WU9kY0pKTmt0RGczNVBYT2Z6U24xNWNGQXgxUk8wbVBUbUliOGRYaUVXT3B6b1h2ZHdYRE00MVphQ0RZTVQ3dzRJUXRNeXZFN3hVQlpxMmJqdEFucS9ORFVBN2JlNEg4SDNpcEMrLytOS2xVcmNVaCtqNDhLNjdXSTB1MW02RmVRdWVCQTduMDZqODI1cnFEcXNhTHM5VGI3S0FIQXc4UG1yV2FOUEcya2pLZXJ4UEVmZWNpdmxGYXdwMlJXWnZ4clZ0bjNUVjJTQnh5Q0pDa1hzTkQwNWRDRXJWSFNKSXMrQmR0VFZOWTlBd3R5UG1ueWIwdjRtU1R6dldkdz09IiwiTUlJRFNEQ0NBakNnQXdJQkFnSVVVY21NWHpSSUZPZ0dUSzBUYjNnRXVaWVprQkl3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRRG01NTViV1k5V1crdE9ZMHJJV0hsZGgrYU5hbm9DWkNGaDdHazNZWnJRbVBVdzBoa1NHNnFZSFF0UCtmWnlTMzNWRXJ2ZytCUXFubXVtZ05oZnhGcmt3RVpFTGVpZEJjQzhDNEFnNG5xcWlQV3B6c3ZJMTdOY3hZbEluTE5MRmNaWS8rZ09pTjZaT1RpaE81L3ZCWk1iajlyaWFBY3FsaVltTkdKUGdUY01HYUVBeU16RU1OeTJubTZFcCtwalA1YUY2Z2kyMXQvVVFGc3VKMWoyUmoveW5NL1NkUnQrZWNhbDVPWW90eEhrRmJMOXZ2djJBMk92NUlUWkNsdzRiT1M5bnB5cFFpbU9aNVFBWXl0bVlhUXBXbC9wTVl6NnpTajhScWtWRE5FSkdxTmZUS0EyaXZMWXdYNmxTdHRNUGFwZzBKODRsOVgwdm9WTi9GcFM0VkNWQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJRZ0tGQWhHNlJhVytoVHk1MmR4ZVQ4YkM5Nkh6QWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQVlNemdMckpMSXIwT292UW5BWnJSSUd1YWJpSFNVS1NtYkxSV3BSa1dlQXRzQ2hERUhwWGNKL2JnRE5LWVdvSHFROHhSVWpCNEN5ZXBZZXZjM1lsckc4bzd6SHhwZlZjYW9MNVNldUprekh4S240YlRhU3A5K012d2FtbnA2NGtaTWlOYkZMa25mUDlrWUtvUkhrTVdoZVJKMVVzUDF6NFNjbWtDZUlMZnNNczZ2cW92cWpXQ2xGc0pwQmNzbHVZSFdGN2JCSjFuNFJ3ZytBVEVvcFk0SWdHdjZadndjK0E5citBVDJocXBvU2tZb0FsK0FOWXdnc2xPZjlzSmUwVitUQTlZWS9VbGFCbVBQVGQwLy9yOXd2Y2VQV1prUGpLb0FDL3pVTmhmRGJoNExWOEdIczNseVgyWG9tTC9MTmM4Sll6eUlhREVoR1F2ZW9QaGgvdHIxZz09Il0sImljb24iOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJpY29uRGFyayI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsInByb3ZpZGVyTG9nb0xpZ2h0IjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwicHJvdmlkZXJMb2dvRGFyayI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTEwLTE2IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZdWJpS2V5IDUgQ0NOIFNlcmllcyB3aXRoIE5GQyIsImNlcnRpZmljYXRlTnVtYmVyIjoiVTJGMTAwMDIwMjUxMDE2MDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMTAtMTYiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTEwLTI0In0seyJhYWd1aWQiOiI5MDViNGNiNC1lZDZmLTRkYTktOTJmYy00NWUwZDRlOWI1YzciLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjkwNWI0Y2I0LWVkNmYtNGRhOS05MmZjLTQ1ZTBkNGU5YjVjNyIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IDUgRklQUyBTZXJpZXMgKEVudGVycHJpc2UgUHJvZmlsZSkifSwiZGVzY3JpcHRpb24iOiJZdWJpS2V5IDUgRklQUyBTZXJpZXMgKEVudGVycHJpc2UgUHJvZmlsZSkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2LCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH0seyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbImVkMjU1MTlfZWRkc2Ffc2hhNTEyX3JhdyIsInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Iiwic2VjcDM4NHIxX2VjZHNhX3NoYTM4NF9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjgsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo4LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlEU2pDQ0FqS2dBd0lCQWdJVVIzOG1xMjZTZjJzelZWMkJkRzZXRU43a3VXVXdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFSWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFOWTBXYjlvUG9Sb0tvUXlXUGFKcHoxMXZyV1RnNnpUdG1OajJWb0tSbnl2S0dScXB6YjgzdzVsNllBOTZVWWtZQkRRUDBpbE8yRFBlNndXcVZSNXpEZlJ6ZGNIOGJoK0w3ZEdHdmFlNmhSVFpoa0ZrQ3BYRHM0SGNja25yRGY4RkNsSjdIZTM5SmY0Mi9HMVFtMnp6OVdXbXJQWHRnaUsveDA1R2pzUWZHdURHMXpmNVFUVVVpZThsd3ltSzNUZmRPdk5lZUpBQVBlMnBuN0l0ZlJiK3JWck5XaUR6bFJuMnZObloyd1BvNHdIL1dKNmRoWFpHK3JNV1QrYTZCb2NnMVVmSXc2a2R1bkc0YlRwWnpzdmFjRll5UjBtcGYrRGVPbnBTV0FteXdKV0h2VGxmMllYeEZ5ZVhjVEFDZFFsY01OR0oyVmhaUTQ4eHRQNS9SQlAvOGtDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNoeTQyb2tpcWNUUzFpcWEvSFJXamtCbjRIL01COEdBMVVkSXdRWU1CYUFGT3EzUXBDZURIdGtldHRVZkFPNmZFNmYyS0ZoTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBbitSSElQYnRNRUROZFQxZzhIL1JpdEFrVWRMZ0F0MXRXR1dubGo5a25idjQvNEdsWDdDOXA0NWVmUE85L2FaTDZPVjFYUktCaTZLbXRCVzVLN251WUVuTXgvNUJxQlNiTFQ3cmhkdUM0OVRCZU1iOVBIZFhzVGxTVk5ZZWZyMWRHaWRyNGoweFZCUUxiMXJrbkRBYmRXRHpLZnZuYXlLTzhGcndlN0h4ODQzTUcvckorYzBYcnVVdmJmVlRDSExpSVdoTTdvTkRoTDh4b2I2eFVvOUtMS2NTTCtJdFlzTzMvOVdiOFE5R2pzcUw0RlhzRGNHMVNhWWg3S3BmdU1tT2l4cXpKWk8ybklpY1BZUmcxSTJTdWlVZllPNzB0bWRIY2JsK2tTUW1TWXQ3cnE0dmlJTGcyR3gzajlySVR1V1RqYmFVYVNTUXhnT21NU0h1eXpNQUMiLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVRuYmJHSVIyTkh2enFJS0ZBZVF3RzFYQmlzMHdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFRWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPc1hqM2swNEJhbjRUWWR0WktxRC9PUEp4eUR5YVBtQ0JVRlVpYVpJZ1R0ZVpuajNYMjVEaGdwWlpYc0M0RDB5ZEljcmxBNndOVUluT1JML0w5ekJiVEVJTUFWTUdvNmc3VUtBbWIyTUY2QUhibmhZSmQ5ZWlrdXBWTldTaEhOWU5jNEdCZE8xWU42QWZVcXZKaEhiZTNWNFNOTVBtQlJFS0pQVno3VGh3Z21nZ1RlOFdzMkswL3dzcXYyd1NFN3BiQ0JzVVpoSVg1MWJaTTNwcUR3SlBUbVJGRXZ0MC82dEc1ZU84RjNqMTRPWHFmRWhtam4xVnZ4S0RZUU9MWkF4Q3d3Z0MwUDRDZGZXdjN5OFBTUjhJMzU0aE8xWStHek5qdklxWDM4TktMeXd1SVlIRmVyT3hObHhFTUJ2RmhZQnVSdVlBa2tnVWFQcU42VUJoc0lMcnNDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNDb1JIaGl5Tm5iblhSV0lMNlpCWG9CWDlZVE1COEdBMVVkSXdRWU1CYUFGQ0FvVUNFYnBGcGI2RlBMblozRjVQeHNMM29mTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFDUUZhZkpJMS81V2c5Q0VFaW1FMVJQNTRSZ1F3VE5UT09Rc0xBQ1RlK3JJdGxGUXpDOVpEaHJWODI4eVg3anp5K0FBc3AzaXpLN1QxdGgyZGw3bSt0dTBzdzJQYS9vbGMwMm50NlB5SXczNDhnYUh6aEkxKzBLRTQ1cXh2RkRlTDJsTXhiUGZDWXZ5RUVhWXpqaVFFTFU1OTUxcFhHV3lLTWEvNGZMdE8rWktPWGhNdVZlcTRyWERQSTU0VzZKSE9pQWFpS2Rpdys1ZTNjMmt0L2pGSVF0TTZ2TVhnOUxORnpkakVUTnQyMFZYOVFldlJwRlpmdWNNRzl3Q2FRRG9GbFB6cFRNSktoUGV2L2ltSm1aWWhLZnIwbExjZW10cWpJeExBb3FaZE9ZZkhCZzYrdkFjZFBJL2lhdUdwVUF2N1grVUtObUR3aloyQmFINHNMd2hCMm0iLCJNSUlEU0RDQ0FqQ2dBd0lCQWdJVURxRVJ3KzRSbkdTZ2d4Z1Vld0pGRVBEUlozWXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFESTdYbkgrWnZEd01DUVU4TThaZVY1cXNjdWJsdlZZYWFSdDNZYmF4bjlnb2RMeDVzd0gwbFhyZGdqaDVoN0ZwVmdDZ1lZWDdFNGJsMXZielVMZW1yTVdUOE4zV01HVWU4UUFKYkJlaW9WN1cvRStoVFpQLzBTS0pWYTNld0tCbzZVTGVNbmZRWkRyVk9SQWs4d1RMcTJ2NUxsajV2TWo3SnRPb3RLYTlKN25IUzhrTG16WFhTYWowU3dFUGg1T0FaVVROVjR6czFidm9UQVFRV3JMNC9KOVF1S3Q2V0NGRTVuVU5pUlFjRWJWRjhtbHFLMmJ4Mno2b2tWbHR5RFZMQ3hZYnBVVEVMdlkxdXNSM0RUR1BVb0lDbE9tNGNycHduRFJMVkh2alllUEdCQi8vcEV5enhBL2djU2N4andhSDFaVXc5Ym5TYkh5dXJLcWJUYTFLdmpBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlRxdDBLUW5neDdaSHJiVkh3RHVueE9uOWloWVRBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBcVFhQ1dNeFRHcVZWWDdTazdra0ptVXVlVFNZS3VVNitLQkJTZ3dJUm5sdzlLN0hlMUlweFowaGR3cFBOaWtLam1jeUZnRlB6aEltd0hKZ3h4dVQ5MFB3M3ZZT2RjSkpOa3REZzM1UFhPZnpTbjE1Y0ZBeDFSTzBtUFRtSWI4ZFhpRVdPcHpvWHZkd1hETTQxWmFDRFlNVDd3NElRdE15dkU3eFVCWnEyYmp0QW5xL05EVUE3YmU0SDhIM2lwQysvK05LbFVyY1VoK2o0OEs2N1dJMHUxbTZGZVF1ZUJBN24wNmo4MjVycURxc2FMczlUYjdLQUhBdzhQbXJXYU5QRzJraktlcnhQRWZlY2l2bEZhd3AyUldadnhyVnRuM1RWMlNCeHlDSkNrWHNORDA1ZENFclZIU0pJcytCZHRUVk5ZOUF3dHlQbW55YjB2NG1TVHp2V2R3PT0iLCJNSUlEUnpDQ0FqR2dBd0lCQWdJVWV4OW5UOXZ3Wk5YUzQ4M0xkaVlHZncyU2pTb3dDd1lKS29aSWh2Y05BUUVMTUM0eExEQXFCZ05WQkFNTUkxbDFZbWxqYnlCQmRIUmxjM1JoZEdsdmJpQkpiblJsY20xbFpHbGhkR1VnUWlBeE1DQVhEVEkxTURnd01UQXdNREF3TUZvWUR6azVPVGt4TWpNeE1qTTFPVFU1V2pBbk1TVXdJd1lEVlFRRERCeFpkV0pwWTI4Z1JrbEVUeUJCZEhSbGMzUmhkR2x2YmlCQ01pQXhNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXUxTWV2bnk5ZHlPOVpVQzM5U29NaExjUi9EWHJ0Ri9jaU0xMnRjaXkyRVhBWjZNa3JpdlZ0Q2ZFVk05WDZJU1RFbkJQNnVTWVlvdjZwcHY2TzZKaDJOSG1ZbTR3K0puUzRWbkNQVTdtSEFNZlZJMk1HVFRNVk9ldzB4VXNHN3NJU0lrSURVQm11azhZSzljNXppYzkrdkZRR0xJa3NkWE81aVZGSWdORzUzY0dYRDRaTFpvQVBpdTBQRW96eEFxWUlhSTRneEtoT0EzUzgvVzhtSVdzdTZvZnlqNEd2a0ZHNlo3a3lGMzEwN1A3bXdGSExySTNFTmFQV01PRmNUYUdhMGR3Ky92VlJ3alJjRVpCVnN1dVQvODdja1NzMGE1cGt0M3ZaQmxhWWVUOHB6U3JlVjdtb3djSU05MEwyaWFBVGxQMG54bWFFNm5PeVRib2pGVmwyd0lEQVFBQm8yWXdaREFkQmdOVkhRNEVGZ1FVU1hFaDNzYTNidER1cm00TU0vQzdTMWxSdXVZd0h3WURWUjBqQkJnd0ZvQVU2cmRDa0o0TWUyUjYyMVI4QTdwOFRwL1lvV0V3RWdZRFZSMFRBUUgvQkFnd0JnRUIvd0lCQURBT0JnTlZIUThCQWY4RUJBTUNBWVl3Q3dZSktvWklodmNOQVFFTEE0SUJBUUI1R2MzaGFmdHA3aEtzRVpzbytpL1o1blJ1cWRtekcyV0NsVW9SVXFiYVB5Z2xuSkRqS1Iva2ZnT2w2aWJiRi96dGhtM0ttWFE3SGNESVAyeE1kRzdVMkwyaW1iSlFIcVBmL2gySHFvamI0clpndWUrNlc0a3RTUjVlbFI5TDFyWXFFL1NHWU00aUVLb1ZRU3Y3UlQxcnhJZVdpS3N3L1Z4eGkvUU9uc3gzRjd4ODBDQ1lnQjRFM3lReDhWVFc0NDBoVEV3VEExZU1IT2l4MzJ0UHR5eUhJYThQVlZJZlZwSFFKQmFNVnZ2NTA4VUVqd2tiVTJybmpmem9TVE5TOUE1alVROG1CU3ZlOTVyakIwZG85OEVVK0R4ZEJxWDIrSDZpNXdsSUNGZ3poZHpjc25lOWhHS1Q2bHpUWDRjSWRKc3JZMit4bGVLMEZGUXk2bEdFVkxFZSIsIk1JSURQakNDQWlhZ0F3SUJBZ0lVWHplaUVESkVPVHQxNEY1bjBvNlpmL2JCd2lVd0RRWUpLb1pJaHZjTkFRRU5CUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTVo2L1R4TThySVQrRWFvUHZHODFvbnRNT28vMm1RMlJCd0pIUzBRWmN4VmFOWHZsMTJMVWhCWjVMbWlCU2NJWmQxUm54MW9kNTg1aCsvZGhLN2hFbTdKQUFMa0tLdHMxZk81M0tHTkxadWp6NWgzd0duY3I0aHlLRjBHNzRiL1UzSzloRTVtR05ENnpxWWNoQ1JBSGZyWU1ZUkRGNFlMMFg0RDVuR2R4dnBwQXk2bmtFbXRXbU1ud08zaTBUQXVjc3JiRTQ4NUh2R000cjBWcGdWZEpwdmdRamlUSkNUSXErRDM1aHd0VDhRREl2K25HdnBjeWk1d2NJZkNrenlDaW1KdWtoWXk2S29xTk1LUUVkcE5pU092V3lETVRNdDFid0N2RXpwdzkxdSttc1V0NHJqMGVmbk85czBaT3dkd01SRG5INHhnVWw1Wkx3cnJQa2ZDMS8wQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQjhHQTFVZEl3UVlNQmFBRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRTXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJEUVVBQTRJQkFRQzNJVy9zZ0I5cFo4YXBKTmp4dUdvWCtGa0lMa3Mwd01OcmRYTC9jb1V2c3JoenN2bDZtZVBNcmJHSkJ5SjFYbnF1QjVzZ2NSRU5GeGRRRm1hM21pbzhVcGYxb3dNMVpyZVhySjBtQURHMkJwbHFiSm54aXlZYStSMTFyZUlGVFdlSWhNTmNaS3NEWnJGQXlQdUZqQ1dTUXZKbU5XZTltRlJZRmdOaFhKS2tYSWI1SDFYZ0VEbHdpZWRZUk03Vm9sQk5sbGQ2cFJGS2xYOHVzdDZPVE1PZUFEbDJ4TkYwbTFMVGhTZGV1WHZEeUMxZzkrSUxmejNTNk9JWWdjM2lyb1JjRkQzNTRnN3JLZnU2N3FGQXc5Z0M0eWkweEJUUHJZOTVyaDQvSHFhVVlDQS9MOGxkUms2SDdYazM1RCtXVnBtcTJTaC94VDVIaUZ1aGY0d0piMGJLIiwiTUlJRFNEQ0NBakNnQXdJQkFnSVVVY21NWHpSSUZPZ0dUSzBUYjNnRXVaWVprQkl3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRRG01NTViV1k5V1crdE9ZMHJJV0hsZGgrYU5hbm9DWkNGaDdHazNZWnJRbVBVdzBoa1NHNnFZSFF0UCtmWnlTMzNWRXJ2ZytCUXFubXVtZ05oZnhGcmt3RVpFTGVpZEJjQzhDNEFnNG5xcWlQV3B6c3ZJMTdOY3hZbEluTE5MRmNaWS8rZ09pTjZaT1RpaE81L3ZCWk1iajlyaWFBY3FsaVltTkdKUGdUY01HYUVBeU16RU1OeTJubTZFcCtwalA1YUY2Z2kyMXQvVVFGc3VKMWoyUmoveW5NL1NkUnQrZWNhbDVPWW90eEhrRmJMOXZ2djJBMk92NUlUWkNsdzRiT1M5bnB5cFFpbU9aNVFBWXl0bVlhUXBXbC9wTVl6NnpTajhScWtWRE5FSkdxTmZUS0EyaXZMWXdYNmxTdHRNUGFwZzBKODRsOVgwdm9WTi9GcFM0VkNWQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJRZ0tGQWhHNlJhVytoVHk1MmR4ZVQ4YkM5Nkh6QWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQVlNemdMckpMSXIwT292UW5BWnJSSUd1YWJpSFNVS1NtYkxSV3BSa1dlQXRzQ2hERUhwWGNKL2JnRE5LWVdvSHFROHhSVWpCNEN5ZXBZZXZjM1lsckc4bzd6SHhwZlZjYW9MNVNldUprekh4S240YlRhU3A5K012d2FtbnA2NGtaTWlOYkZMa25mUDlrWUtvUkhrTVdoZVJKMVVzUDF6NFNjbWtDZUlMZnNNczZ2cW92cWpXQ2xGc0pwQmNzbHVZSFdGN2JCSjFuNFJ3ZytBVEVvcFk0SWdHdjZadndjK0E5citBVDJocXBvU2tZb0FsK0FOWXdnc2xPZjlzSmUwVitUQTlZWS9VbGFCbVBQVGQwLy9yOXd2Y2VQV1prUGpLb0FDL3pVTmhmRGJoNExWOEdIczNseVgyWG9tTC9MTmM4Sll6eUlhREVoR1F2ZW9QaGgvdHIxZz09Il0sImljb24iOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJpY29uRGFyayI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsInByb3ZpZGVyTG9nb0xpZ2h0IjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwicHJvdmlkZXJMb2dvRGFyayI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIkZJRE9fMl8wIiwiRklET18yXzFfUFJFIiwiRklET18yXzEiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwibGFyZ2VCbG9iS2V5IiwiY3JlZEJsb2IiLCJtaW5QaW5MZW5ndGgiXSwiYWFndWlkIjoiOTA1YjRjYjRlZDZmNGRhOTkyZmM0NWUwZDRlOWI1YzciLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJsYXJnZUJsb2JzIjp0cnVlLCJlcCI6ZmFsc2UsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjpmYWxzZSwiYWx3YXlzVXYiOnRydWV9LCJtYXhNc2dTaXplIjoxNTM2LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjgsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4LCJ0cmFuc3BvcnRzIjpbInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi04fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotMzV9XSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5Ijo0MDk2LCJtaW5QSU5MZW5ndGgiOjgsImZpcm13YXJlVmVyc2lvbiI6MzI5NDc2LCJtYXhDcmVkQmxvYkxlbmd0aCI6MzIsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjoxLCJjZXJ0aWZpY2F0aW9ucyI6eyJGSVBTLUNNVlAtMyI6MiwiRklQUy1DTVZQLTMtUEhZIjozfSwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjEwMH19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTEyLTIxIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZdWJpS2V5IDUgRklQUyBTZXJpZXMgKEVudGVycHJpc2UgUHJvZmlsZSkiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI0MTIyMTAwNCIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTEyLTIxIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3Nn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wMS0xMCJ9LHsiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbImYzNjdjNzNjNThhNjdhOTU0MjA3Nzg5MDBkZmY0NzU5YTEzNTRmZWMiXSwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiZjM2N2M3M2M1OGE2N2E5NTQyMDc3ODkwMGRmZjQ3NTlhMTM1NGZlYyJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiYXV0aGVudG9uMSAtIENUQVAgMi4xIn0sImRlc2NyaXB0aW9uIjoiYXV0aGVudG9uMSAtIENUQVAgMi4xIiwiYWx0ZXJuYXRpdmVEZXNjcmlwdGlvbnMiOnsiZnItRlIiOiJhdXRoZW50b24xIC0gQ1RBUCAyLjEiLCJkZS1ERSI6ImF1dGhlbnRvbjEgLSBDVEFQIDIuMSJ9LCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MiwicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoyfSx7Im1ham9yIjoxLCJtaW5vciI6MH0seyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbInNvZnR3YXJlIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUZoRENDQkd5Z0F3SUJBZ0lNYlVJOSt6eUVRVVREK2RuQ01BMEdDU3FHU0liM0RRRUJDd1VBTUZzeEN6QUpCZ05WQkFZVEFrSkZNUmt3RndZRFZRUUtFeEJIYkc5aVlXeFRhV2R1SUc1MkxYTmhNVEV3THdZRFZRUURFeWhIYkc5aVlXeFRhV2R1SUVkRFF5QlNNeUJRWlhKemIyNWhiRk5wWjI0Z01pQkRRU0F5TURJd01CNFhEVEl6TURFeU5ERTFNREV3TTFvWERUSTJNREV5TkRFMU1ERXdNMW93Z2JZeEN6QUpCZ05WQkFZVEFrUkZNUTh3RFFZRFZRUUlFd1pDWVhsbGNtNHhFVEFQQmdOVkJBY1RDRUZ6WTJob1pXbHRNU293S0FZRFZRUUtFeUZCU1ZobFkzVjBhWFpsTG1OdmJTQW9RWGhsYkNCV2IyNWtaWEpvWVdkbGJpa3hFakFRQmdOVkJBc1RDV0YxZEdobGJuUnZiakVUTUJFR0ExVUVBeE1LUVVsWVpXTjFkR2wyWlRFdU1Dd0dDU3FHU0liM0RRRUpBUllmUVZoRlRDNVdUMDVFUlZKSVFVZEZUa0JCU1ZoRlExVlVTVlpGTGtOUFRUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQUtmLzRHekdBVW1KSDRSOW1DdmNKK0NnVFVnUDFETnI4ZE4ya0R2U0E5eHVJTWIxTlpKWFFneFNPT0FZcUlCekZOY2prTlZsODBZM2RybTR0UEpTbDNrZldXTTI2eFlMRnN2bDFCY3F0clByc3N5eElCdFg1a1RlMnArTTlSbGNaUWNFajVDYllwQVNwdVNUQnl6b091ZitWU2ZPVVZxRHpDREg0Q3FzRUN5dnlMS3JKdzlrak40QjZsRlh5em1ySVdxUm1HV0t4NGNzby93eFlJVU5jT1YrcDZJODRZMnoxbkZJV0VoY0E2ZGdySlFuRHBENUlHRUpkU3hUbjh0MlpuQU5wNEpFQXA4ajV3M3RiVTg5UktpM3lQQXV3c3hpM1hjbG9GQXRHeHcyd2s3bkp5aXpxOTh0TzVsd2ZnSE4vWW5nbFl3VTRVRm5PQnpQNU11elByRUNBd0VBQWFPQ0Flb3dnZ0htTUE0R0ExVWREd0VCL3dRRUF3SUZvRENCb3dZSUt3WUJCUVVIQVFFRWdaWXdnWk13VGdZSUt3WUJCUVVITUFLR1FtaDBkSEE2THk5elpXTjFjbVV1WjJ4dlltRnNjMmxuYmk1amIyMHZZMkZqWlhKMEwyZHpaMk5qY2pOd1pYSnpiMjVoYkhOcFoyNHlZMkV5TURJd0xtTnlkREJCQmdnckJnRUZCUWN3QVlZMWFIUjBjRG92TDI5amMzQXVaMnh2WW1Gc2MybG5iaTVqYjIwdlozTm5ZMk55TTNCbGNuTnZibUZzYzJsbmJqSmpZVEl3TWpBd1RRWURWUjBnQkVZd1JEQkNCZ29yQmdFRUFhQXlBU2dLTURRd01nWUlLd1lCQlFVSEFnRVdKbWgwZEhCek9pOHZkM2QzTG1kc2IySmhiSE5wWjI0dVkyOXRMM0psY0c5emFYUnZjbmt2TUFrR0ExVWRFd1FDTUFBd1NRWURWUjBmQkVJd1FEQStvRHlnT29ZNGFIUjBjRG92TDJOeWJDNW5iRzlpWVd4emFXZHVMbU52YlM5bmMyZGpZM0l6Y0dWeWMyOXVZV3h6YVdkdU1tTmhNakF5TUM1amNtd3dLZ1lEVlIwUkJDTXdJWUVmUVZoRlRDNVdUMDVFUlZKSVFVZEZUa0JCU1ZoRlExVlVTVlpGTGtOUFRUQWRCZ05WSFNVRUZqQVVCZ2dyQmdFRkJRY0RBZ1lJS3dZQkJRVUhBd1F3SHdZRFZSMGpCQmd3Rm9BVWxqUFI1bGdYV3pSMWlvRldaTlcrU042aGo4OHdIUVlEVlIwT0JCWUVGQzU3TE4zUlczOGRleFFoeGZIVy9XV3Q3Y0NRTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFDdnZQaW03am9GMEc0dk9lcFNGYkNSZ3RDd1JBeWVuOWZIekRTMjdXbnNUYkc5VW9xK3ppR3JjRCtVNUVuSDZVcm1GMUJxeFhMMUNqcUVQcm41WVF0WlNzM3Bmdm9uWGtGQ2h0aVlZT2dLNGdJcUp0Q1ZCYVgzSDRESGtJMVY3Qmg3YjR2alpBRDhjSkx4aUpmNkF2STRlMTFEOUs1dHBaN1laUUU1TXc0OVZEdFE4QTdwa2pPNndYakhGWFhnWTFsUHcrTFJRdVUzbTlLR0FNM0M0Z2Uwb3RwVzBYeUtEeHFzS1dPeG1NWDdJamhYRkRwS1lvcG1tTFBjVHo3ME9OdGJFMk5IeUlhM1V1amhjamJjcnBvTmttYUZpTGsycHFLUlpJb0hrWmFGTWQ5d2FROWYxbFMyd3dWUXh0SCt2TlY5TjNLK0huTDNuQi9DVTJFMGJ0SkgiLCJNSUlEWHpDQ0FrZWdBd0lCQWdJTEJBQUFBQUFCSVZoVENLSXdEUVlKS29aSWh2Y05BUUVMQlFBd1RERWdNQjRHQTFVRUN4TVhSMnh2WW1Gc1UybG5iaUJTYjI5MElFTkJJQzBnVWpNeEV6QVJCZ05WQkFvVENrZHNiMkpoYkZOcFoyNHhFekFSQmdOVkJBTVRDa2RzYjJKaGJGTnBaMjR3SGhjTk1Ea3dNekU0TVRBd01EQXdXaGNOTWprd016RTRNVEF3TURBd1dqQk1NU0F3SGdZRFZRUUxFeGRIYkc5aVlXeFRhV2R1SUZKdmIzUWdRMEVnTFNCU016RVRNQkVHQTFVRUNoTUtSMnh2WW1Gc1UybG5iakVUTUJFR0ExVUVBeE1LUjJ4dlltRnNVMmxuYmpDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTXdsZHBCNUJuZ2lGdlhBZzdhRXlpaWUvUVYyRWNXdGlITDhSZ0pEeDdLS25RUmZKTXN1UytGZ2drYmhVcXNNZ1Vkd2JOMWswZXYxTEtNUGdqME1LNjZYMTdZVWhoQjV1enNUZ0hlTUNPRkowbXBpTHg5ZStwWm8zNGtubFRpZkJ0Yyt5Y3NtV1ExejNyREk2U1lPZ3hYRzcxdUwwZ1JneWttbUtQWnBPL2JMeUNpUjVaMktZVmMzckhRVTNIVGdPdTV5THk2Yys5Qzd2L1U5QU9FR00raUNLNjVUcGpvV2M0emRRUTRnT3NDMHA2SHBzaytRTGpKZzZWZkx1UVNTYUdqbE9DWmdkYktmZC8rUkZPK3VJRW44clVBVlNORUNNV0VaWHJpWDc2MTN0MlNhZXI5ZndSUHZtMkw3RFd6Z1ZHa1dxUVBhYnVtRGszRjJ4bW1GZ2hjQ0F3RUFBYU5DTUVBd0RnWURWUjBQQVFIL0JBUURBZ0VHTUE4R0ExVWRFd0VCL3dRRk1BTUJBZjh3SFFZRFZSME9CQllFRkkvd1MzK29Ma1VrcmsxUSttT2FpOTdpM1J1OE1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQkxRTnZBVUtyK3lBenY5NVpVUlVtN2xnQUpRYXl6RTRhR0tBY3p5bXZtZExtNkFDMnVwQXJUOWZIeEQ0cS9jMmRLZzhkRWUzamdyMjVzYndNcGpqTTVSY09PNUxsWGJLcjhFcGJzVThZdDVDUnN1WlJqKzl4VGFHZFdQb080enpVaHc4bG8vczdhd2xPcXpKQ0s2ZkJkUm95VjNYcFlLQm92SGQ3TkFEZEJqKzFFYmRkVEtKZCs4MmNFSGhYWGlwYTAwOTVNSjZSTUczTnpkdlFYbWNJZmVnN2pMUWl0Q2h3cy96eXJWUTRQa1g0MjY4TlhTYjdoTGkxOFlJdkRRVkVUSTUzTzl6SnJsQUdvbWVjc014ODZPeVhTaGtET095eUdlTWxoTHhTNjd0dFZiOStFN2dVSlRiMG8ySExPMDJKUVpSN3JrcGVETWRtenRjcEhXRDlmIl0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQWJBQUFBR3hDQVlBQUFBREV1T1BBQUFBQ1hCSVdYTUFBQmNTQUFBWEVnRm5uOUpTQUFBRkZtbFVXSFJZVFV3NlkyOXRMbUZrYjJKbExuaHRjQUFBQUFBQVBEOTRjR0ZqYTJWMElHSmxaMmx1UFNMdnU3OGlJR2xrUFNKWE5VMHdUWEJEWldocFNIcHlaVk42VGxSamVtdGpPV1FpUHo0Z1BIZzZlRzF3YldWMFlTQjRiV3h1Y3pwNFBTSmhaRzlpWlRwdWN6cHRaWFJoTHlJZ2VEcDRiWEIwYXowaVFXUnZZbVVnV0UxUUlFTnZjbVVnTmk0d0xXTXdNRE1nTnprdU1UWTBOVEkzTENBeU1ESXdMekV3THpFMUxURTNPalE0T2pNeUlDQWdJQ0FnSUNBaVBpQThjbVJtT2xKRVJpQjRiV3h1Y3pweVpHWTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5MekU1T1Rrdk1ESXZNakl0Y21SbUxYTjViblJoZUMxdWN5TWlQaUE4Y21SbU9rUmxjMk55YVhCMGFXOXVJSEprWmpwaFltOTFkRDBpSWlCNGJXeHVjenA0YlhBOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOGlJSGh0Ykc1ek9tUmpQU0pvZEhSd09pOHZjSFZ5YkM1dmNtY3ZaR012Wld4bGJXVnVkSE12TVM0eEx5SWdlRzFzYm5NNmNHaHZkRzl6YUc5d1BTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM0JvYjNSdmMyaHZjQzh4TGpBdklpQjRiV3h1Y3pwNGJYQk5UVDBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5NFlYQXZNUzR3TDIxdEx5SWdlRzFzYm5NNmMzUkZkblE5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5elZIbHdaUzlTWlhOdmRYSmpaVVYyWlc1MEl5SWdlRzF3T2tOeVpXRjBiM0pVYjI5c1BTSkJaRzlpWlNCUWFHOTBiM05vYjNBZ01qSXVNU0FvVjJsdVpHOTNjeWtpSUhodGNEcERjbVZoZEdWRVlYUmxQU0l5TURJeExURXhMVEl3VkRFME9qUXdPalV3S3pBeE9qQXdJaUI0YlhBNlRXOWthV1o1UkdGMFpUMGlNakF5TXkwd05DMHhObFF4T0RveE9UbzFPU3N3TWpvd01DSWdlRzF3T2sxbGRHRmtZWFJoUkdGMFpUMGlNakF5TXkwd05DMHhObFF4T0RveE9UbzFPU3N3TWpvd01DSWdaR002Wm05eWJXRjBQU0pwYldGblpTOXdibWNpSUhCb2IzUnZjMmh2Y0RwRGIyeHZjazF2WkdVOUlqTWlJSEJvYjNSdmMyaHZjRHBKUTBOUWNtOW1hV3hsUFNKelVrZENJRWxGUXpZeE9UWTJMVEl1TVNJZ2VHMXdUVTA2U1c1emRHRnVZMlZKUkQwaWVHMXdMbWxwWkRvMk5HUmlaalU0WkMwNU9UWTRMVGc0TkRjdFlqTTVOUzA1TVRZNU5qVXhZVFF3TUdRaUlIaHRjRTFOT2tSdlkzVnRaVzUwU1VROUluaHRjQzVrYVdRNk5qUmtZbVkxT0dRdE9UazJPQzA0T0RRM0xXSXpPVFV0T1RFMk9UWTFNV0UwTURCa0lpQjRiWEJOVFRwUGNtbG5hVzVoYkVSdlkzVnRaVzUwU1VROUluaHRjQzVrYVdRNk5qUmtZbVkxT0dRdE9UazJPQzA0T0RRM0xXSXpPVFV0T1RFMk9UWTFNV0UwTURCa0lqNGdQSGh0Y0UxTk9raHBjM1J2Y25rK0lEeHlaR1k2VTJWeFBpQThjbVJtT214cElITjBSWFowT21GamRHbHZiajBpWTNKbFlYUmxaQ0lnYzNSRmRuUTZhVzV6ZEdGdVkyVkpSRDBpZUcxd0xtbHBaRG8yTkdSaVpqVTRaQzA1T1RZNExUZzRORGN0WWpNNU5TMDVNVFk1TmpVeFlUUXdNR1FpSUhOMFJYWjBPbmRvWlc0OUlqSXdNakV0TVRFdE1qQlVNVFE2TkRBNk5UQXJNREU2TURBaUlITjBSWFowT25OdlpuUjNZWEpsUVdkbGJuUTlJa0ZrYjJKbElGQm9iM1J2YzJodmNDQXlNaTR4SUNoWGFXNWtiM2R6S1NJdlBpQThMM0prWmpwVFpYRStJRHd2ZUcxd1RVMDZTR2x6ZEc5eWVUNGdQQzl5WkdZNlJHVnpZM0pwY0hScGIyNCtJRHd2Y21SbU9sSkVSajRnUEM5NE9uaHRjRzFsZEdFK0lEdy9lSEJoWTJ0bGRDQmxibVE5SW5JaVB6NnpPWFJsQUFCdU4wbEVRVlI0bk8yOWVidzFUVlhmKzYwelArTUxMNitDWUJCQkVFUkVva0VpaUdNY2JpU0tpa2E5R0RYR1JEU1JxREZxak9qVmE0eTVSSEZFY2NEZ2lFb1VIRkhqaEJCSHhJaUFnc3d6dk1EN0RHZDZ6cW43UjlXcVdsVmR2ZmMrejdQUFBydDdyKy9uMDZkNzl4N083dDdkOWFzMTFDcm52Y2N3RE1Nd2hzYmFXWDhCd3pBTXc3Z1pUTUFNd3pDTVFXSUNaaGlHWVF5U2piUCtBcmVDYys2c3Y0SXhVandzNWNYbHdJTFd4dHdaYWk3RW9BWE1NRzZGR1VWcVdZVE14eis5MzhmRXpWZzFUTUNNbFdDS1dMV2VPNGx3M2FySXpTSTg4ajlhciswVk54TTFZOHlZZ0JtalpJSmcxZnZkak0rMUhwODJ0Zmo0Nmp2STg2N250WjN6WUlKbWpBa1RNR01VOUFqV0xHSlZyUFhudU1hKytybDU0eHNDNDdJWStYb2YvZXVtcUptZ0dXUENCTXdZTERPSVZsT2tVTUxrcW0zWDJLL2ZjMXJDVlg5aEpWWSttbDArZmpldkJhMjFUZjlhMDdIUVRNeU1vV0VDWmd5S0thTFZXaGNDNVVzaGN1UjlhVkd2NndoWjQvL1BTOUNhTHNESytoS1JTb3V2OW5uMXZvYW82VzFYUFRZeE13YUhDWml4OUp4QXROSzJGaXpYRmFnMXl1ZlhmTFV0cjlWQ1ZvbmZxVkdMRUEzQjhuQ00yaFlSMDg4MTNxUEZEdlVhRXpOamtKaUFHVXZMQkd1bkZpMXRIYTFWZ2lWaXRhWUVhazA5bC9hVGw4NzdmUGYvMU45cERvZGJidnUyS0lsd0hRUEhzait1MDNOSzFJcjNrVVh4MkhXRmJLS1ltWkFaeTRZSm1MRlVuRVMwYWl0TFdVOXJ0V0JGZ1ZyM3BWQ3R4ZGNXKzVYSXBjK2pGRVg5Zlc3Wkl2TU44YUswb0pJSXVTeGF4K3J4RVdxZmV2N0lxL2NvUVV2YlBkWlpVOHpNS2pPV0RSTXdZeW1ZSWx6MXRvaFRzcUxJd3JWZUM1YUQ5ZmlhOWZqOE9ubS9pTmQ2WEVTODFodldXaTFpRUFSMFRxZWcySmFsc0tvcXNUcnljT1RVTmtHY1pQdW9FcmdrYU9SOVdoaTlFcm1XaUtYdmFWYVpzUXlZZ0JsblNvODdybWx0a2QyRFNWUjhLVFRyOWFJRWF3TzFyZmIzTGcxcnJSQ3dlY2ZDbENWV0MxaGhWZFdMRXFzakg1WWJhdjhOTFdoVTI4bzZLd1N0Y2pPYVZXWXNKVzZvTmJBQXE0VTRZR1lScm1nOUpmRWlXMVppWFlsbHRWRUxWVnpYUzdFL3ZrYy8xMXI2Qkt6alNyejFVNUxXSFFHalI3eklJblZEQkVzdDllTml2eEsyRzJRUk82THJwaFFYb3dpYy9wNzZ1OHNKR1c2anNxSU1WUWZNQWpNV3lnVGg2c1MyZEdLRnVBWjlhVjF0aUdncElkcWNzdDRBTmwzNW5scjR0SGhwRVhOVUdZbk1XY0JFTE9nSzJCR2xpR21CT3ZKWnhHNEFoMlN4T3V4YmV5VnFUbGx1MEhVL3h1MDEybFpaY1F6bVhqUVdoUW1Zc1JCbUZTNXk4b1FrVTlRV1ViS2dmTENpTm4wV3FOYXlSUmF0VFIrRnpDc1JVMkttLzRjV3IzV1U2M0tLZU0wcWFLM0dYZnJCUmZ5TFVyeU9VVUlqb2xXTGx3c0NkVWdXckFQeTQyS0o3OVdpcHkwMWliT2wySnZ2WmppYWtCbG5ncmtRalZQbHBNSkZ0clphb3FXdHFiUTQyUEpackRhQnJjYSsrajBiU3ZoYUZsaHRmZlc1RU9IV3JiQzY4Wi9rUXBUMWpXcDlXSWxZdlJ4RVVUc2dpNW5lVjc5ZVcydnAvN2d5RVVRRVRic1htNjVGRTdIbFpxZzZZQmFZY1NyY2hIQkpNb2FPUzBtc1Npd25iVlZOWEh6NXVCYXkydkthUmJ4MFBHNmU0aVVVSXFaY2ljZk1JR0pLdkxUcjhCQWxWa3E4cGkzcGZTNjdHcE9ZdWZ4L2o4bFprSzRoWk9sNHpCb3pUZ096d0l5NTB4QXZMV0JyRGVHU3JEL0pFQlMzb0JhZmV0bFc2KzFxWDcwVXJrVGF5UjFGaWoxNTdlaTN2dVo5QVU1SzVKQjFKMVdlZHJKRzdUcHNDZFcrV3U5WCs5SlNXV255MllWVmhuSXgwclhHekNKYmNvYXFBMmFCR1hOam10WGxHd09JVVlrWVltbjU0QUxjakZiVXRvTnRYNHFWN051bXU1eEV2RnBwODNYU3hrbkY2MVppWUhyL0pCRXJ4bmJSTDJUVFJHeS9XZzRjN0h1MUx6NlcxOWFXMlNIWjhwdEZ5Tkx4K1pBTU04eFcwMWdhVE1DTVcyWVc0WEpoT3cwZzFxNUNMVnhFb1lyYk8yU2gyaUd2ZDN4YnlGcmlsZHlHdE1XcjZTNmtMVjcxOFowR3RiWFNLMkswM1lwOTFwaDJLUllpcGtVcnJ2Y28xMXJNOWwxMFI0cUl5Ym9XTXArdFJmbk94WEdhVzlHNFZVekFqRnVpeDEyb2x6UjJLd3JYeGlUaG9pRldMZ2pXRG5DdWZ0NTMzWWVkZUplS2RjMlNwTkd5dUhvdEx6Y25JZlBkUnJ6UEVwc2tacDM0V0JVYjY4VEZLQzJzV3J6MlBPeEY0ZHFUNXlxeFMzRXpMV1F4VHJaR1RQb2dXRngxZk15c01lT1dNQUV6YmhyZnRrcUtPRmNkMzBKbEVkWnVRYUpnRVVUcm5JaVdFaTk1WG90WXNyaGN6andzM0lWKzh1RGtqbkJWeVJvdDRVcmJwOVRxK3NhMnAwenVtTVVxMDNHeXdxMm80bG90bDJJU0syRFhLekdqWFBhVnVFbTg3TUNyOUh6aUFPdG9sVG4xL1lyak5SRXpiZ1lUTU9QRXpHSjFVY2FXNm16Q0xWZTZCbVU1RjYydGN6NElsbDVxOGFxVE5qWjgxMTFZaTFZck1hTmpjZm55dUlDT2xYVmE3a09oMXhyei9aWlpYWFcrNVZwTVF1WXAwdVg3NG1KYXJIWmI2eWhlMjNGYnYzYzkvbzgxU212c2lCNXJ6RnlLeGtreEFUTk94QVR4a2dLN09zNlZ4bHE1eWswWXhVdUU2VnkwdU01NU9FKy9lSW1BMWU1Q2JYRzFxbW5vS3ZQVEVqTW1XbHhuUks5RlZtMG5NWXVXV3RNcW94emIxVXIwRU5kZzRVNTB3UnJUQWxZdkluYWJQc2ZOMXBWWWlvVnIxcGd4RjB6QWpKbnBjUmxxUzZiaktveFcxNWJQU1JlU2hLRUY2bng4TE9LbFJhd1dybTNLT05jc2lSbmFyVGtwcmpVcFFlT3NSTXczL3JlZnNQYVVic2JheFRncDRVUGlXT0lLTEt3eDM3WEFycXYxVGx5TEszZlhoZDluTDM3V09sbkkxbUpjVGdSTmYwZUhpWmd4SXlaZ3hsUW11UXk5U3RDSXlSTHJ5bFZZWkJQU2RRMmVieXpueUJhWkZpK3gzdXJNd21uRmQ2ZWx3VSt6dE03YStwTC83NmZzNnhVekppZDlGTzVGbjFQanhTSnJXV05pY1oxemNOMW44WkxFbXV1RWEyQ1A4QnZ0VWY0K2h6SE9LSlU5aUNLMnByKy91UlNOYVppQUdST1psS2hCZHN2SlZDVmFYSFJpeGlUUnVvQ3l2RVM0bEhqVkdZYTYvRk5MdVBwRWE1cVYxUlNxRzhBN2dYZUJ1ek51dnhsNEcvQU90YndOdUVyWjJoOFNXbmtYRDA1T2lpajZaZUM5Z0hzQWQ4VDFQWUgzQVc2UHk5M0IzeDdlMnlldVhtMUR2NUN0TWRrcWsyVXJIcmFzdCtNaDdaQ3RzWFB4MEhaOTE5V3JyYkRycU9MSmRLZXB1YUdzWWoxK1RHUFdtTkdMQ1pqUlM1L0xVRnRkWkpkaEt2UGtsY1hsY2x5ckpWb1hDS0lsTHNUYTZ0THV3azdkUXFlK0N5ZExmKzhWcTdlRCt5dmdiNEdYQUcraUZLcXJKenFEQVE5Y08rRjdMaEVFN1I3ZzdpQUkzUU9CaHdNZkRMd3YrSzN3MHBZUWE3ZGp5eUtyeFd6ZDVTbFVSTWcyeVVJbVdZWGlWa3hKTndRaGEyV0hicE1IcEV0bEZiSEc1Tm81aU9JazFyeE84QkNSTlplaTBZc0ptTkZobXN2UXFXSzd5dXFTSkEzZHVKMzNXYWhrT1Y5dGk4RHBSSTJXdTdBZXc2WEY2OFNpZFF5OEh0eHJnVCtOeTE4U3JDdXhuczZTSzNGNVRiVi9nM0NDN2dudTRjQkhBUDhRdUE5d1AvQTc0V1hUckxXT21LbUVqL1c0M3FDTWt4MzZQRnlocndwS3loQ1YxM3FLUWVVcFZobGR6WHJtZ1VOaWdvZFNYL21PWUM1Rm80SFZRalFLSm9pWE5EWjFoWGh4RnlWM29Xc0xWNzJrbUpmTExrT2RGdDhYNStwekZWSnRVMjF6RGR5TGdEOEEvaHA0UlZ4cW45VVF1Uy93UVFRTDdiSEFZNEJML2VuNHNsMExXdUZhZExsa1ZaM3MwUm8zSnNrYzF3a0c1eldDd1hyTndWVWYxdGQ4MkMvSkg3clNoMDdyTDZadm9SUmN3RVJzM2d4VkIwekFqRVNmeTVCZ2VVbDZmSnFIQzVWZFNCbmowa0oxMGNFRkR4ZXBMQy9LTE1PNkJGU2ZjRTJ5dVBSMzV3aDRGYmkvQVg0RGVEN3dGa0tyT1dhMkNURzFSd09mVExEU0hwQmRqa0pMekZxSkgxSTRXTTlEcGt0VHpTSmllcEg5OGpwSjBkOG5Eb0oydVhxSXpCS3R4VFY5ZHhPeCtURlVIVEFCTTRDWjQxMVMyYUpqZFZIR3R5NnE5VVY2eE11VnBhQTZiaVptRjY3aVFyZ1QzSE9CWHdkZUJMeGhIaWRvd053VGVCVHdDY0EvSmJnYXE1ZjBKWDcwWlM3MldXTTZRL0Y2dExpdVJndHNrcER0a2t0V0hiandlYW1LQitYOFl5WmlwOEJRZGNBRXpHaUpsMWhkS2Q3bFZLV0xHQU1wWWwyVmxYWEp3VVZmQ3BtSVd6MjJxODlkMkNyMzFCSlpBTjRLN3FYQXp4S0U2ODJNd3pVNGIrNGd1QmcvaDJDaDNYdjJWUHg2VUhSdGplbkN3RW5FYUZ0aFZ5aEY3QnBaeEtTaVI1cUx6T1Zab2JXZ3B1OXBJbmJyREZVSFRNQlduRXE4OUxKT1RwR1hERUJKcnRDcDhSZUFDeUpZY1gySnJ1VWxWbHBkVGFPVkZ0K0tjK252bUhnVnVHY0R2d0M4ZUc1blpUVjRLUEJwd0djREh6TFpLbXNLbVFnTFpUVVA3VkpzdVJORnZLNG95MHlMbUk2TnBUbklYSFFwa2wyS1JWek1ST3pXR0tvT21JQ3RNRDNpVlNkcmJMb3lQVjY3REdzMzRhWHFzVmhlNGphc0V6WHFLaG96Q2RkMTRNWGdmaEw0SmVDdDh6c2xLOGs5Z0k4Qy9oWHdHUENYeXFlbkNWbVJxVWhaamtwYll0ZnBXbUZYNkxvVnRVdHhEMVVjbUNuSkhTWmlOODlRZGNBRWJFV1pKbDZTcklGS20zYXhra1owRjRwNFhWTHIydktxeFVzbmFzZzBKek1uYUJ3RHp3WDNZOEN2WVM3QzArQVRnYzhuV0dYYi9lN0ZsbHV4cm5oZng4V21pZGdWUXJ6c1dzeFkzUFdoSEZXYXRrV1NPMHpFNXM5UWRjQUViQVdaUmJ6SU15TnYrU2hBVWJqT295d3VCNWU4RXEvb1F0VGlWV2NaNmtTTnVrSjhNem5qS3ZENzRKNEd2SUR4WnhHZU5ldkFod05mQVR3T3VEeFp5UHFLQmV2Sk0vY0lZclRyY3pwOUVqRUhWM3pYSXJ0R1NBU1JxdmVTM0hGb0lqWi9ocW9ETnBCNXhUaUplQkdUTlZ3YzErVkRyT3VTTHkwdXZZaGxkc0dWVlRWU29vYXl1bXFYWVVlNFBQQWNjRDhFL1BhcG5oVkRjd1Q4Y1Z3K0NuZ1N1TThtQ1VQZGE2eC92enI1UmhkWExxYlhvVjNMc3BQQUU2OVo1OVUvcWI2SVZlMVlVVXpBVm9oR3R1RWt5MHNHRjh1ZzVJdmtCSTNMeEhVallVT3FhelRqWFg1NnJBdUFQd1AzSGNDdkV2eEh4dG53aHdRaGV4YndkZUFlVFVmSXRKNjBGaTFFaFpEUkZiU09nRVV4U3RkdWo0ajUrSHFyWnI5aW1JQ3RDQTN4MHRPTTlJb1haYXhMeE91eTJ1NklGNVhMMElYUG5XUjFKZUY2SmJqdkI1NUJDSmdZWjg4QkllYjRPOEFYQWw4SjdzR3pXV1BPbFNXL1d0WlczNlNqNlRyeDFUWFNJMkpIWkJHVDE1bUlqUndUc0JYQTl6YzA2NVBFeStXeFhGcTR0SUNKOVNWcDhoM3hvdXN5YkZwZEI4QXpvOVgxbXJtZkFXTWU3QU0vUkJobjl4L0JmVEVwMGFQWEd2UGRqa3JMeGRnVU1KZmYzOEhubFNkWVhONWxDMHk5eEJnekptQ3JoVzVZMWh4cEVzb05WTXlMdG5qZEZ0ZVhYZWs2Rk11clR0YW8zVUphdUlvZTlZdkJmUXZ3M05NK2VtTXV2QTc0Y3NMdjlhM2dQbnhHYTR6eUdxaGpaUFdzMlM0cVVNZTlURFhnT2dXLzhvdlNRR2V6d3NhTkNkaklhU1J0U1BWdkVTNDlRRG1ONzFMaUpjS1ZCS3doWHVkUTA1L002aks4RHZ3Z3VQOU9xSnhoREl2ZkpFdzU4NVhnbmt6VEdwTkpLdVd4VXdMVm5MdXRZYkhWd3VWZEVDYUp4WGxQbm9GYTdVL3ZNUkViTHlaZ0k2YVZjU2p4aUNnd1VwUlhzZzNQK1RMbUplN0MyOGdDbGpJTzZWcGVtMHdXTC9rdS9BMjRmdy84MWlrZXYzSDZ2QVg0ZWtLeXgzZUMrNkRTSUpKNXg2YTVGTFZGMWhJdUlRbFd2UzJpUmtqaDk1VERCRTNFUm9vSjJFaVpsQzVQSGtTODZjTUE1UjN5dkZ3WEtOMkdXcngwMGtaTHZQVDRydDRHNldmQmZUM3cybE03ZW1QUi9CcndVdURid1gxdXYwdFJhRjJiblU2T1FvdFUyaWFYdEpJWVdCSzIrRDVkL05jWUlTWmdxMEVTTDZjbW9uUjVZa0laNnlXRGt5LzdidEtHV0YrdGJNTldJZDVPdy9SMmNOOEsvQUJXUldPTXZCYjRBdUIveDVqbTNicEMxamQvV3kxY0hiY2g1RWszWFo0OStwZ3Nhc2RlaVp6TDcwMUpIV2FGalE4VHNCSFNaMzNGakVPWlJWbW1RMG1XVjB6Y2tNb2F0WEQxcGNyckdaTnJ5MHUrQTM4TDdsOER2Mys2aDI2Y01VZkE5d0t2Q212My91MHNSZFJqVnowV1VxS0dzcnlPS2NXclhyUUZwb1hNa2pwR2lnbll5SmlRdENFWlg2MnE4aGNvQnlucmJFTXRZSFZSM3RyeXFvUHlBUHdtdUs4RS92WVVqOXRZTG40TitIdmdCOEI5VE5zU2czN3gwdWlZVjEyMnFpTmlYbGxsRFN0TVBzOUViQ1NZZ0kySUhzdkxSYXRyblJEekVnRXJ4SXZHWU9XZWJNTSs4V3JHdTM0VTNIOEU3ank5d3phV2xKY0Rud3Q4RjdoL25nVkRyZzFKOE9oRFcxTXQwWkx0STVkbmpFNHhNYktRclNzcnpFUnJaSmlBalJmdE5seHpaWTNESFVKVitmTTlXWWV0Q2h1dGhJMWU4ZG9IOTAzQVU3RjQxeXJ6VmtKYzdFMHgxWDZ0M3hvVGZHTmRXMXBTTlBpWVBDZFoydWRMSWRPTHhjTkdoZ25ZU0ppV2RlaHpyQ3E1RG4xcGZkWFZOU2FWaDVvb1h0ZkJmUVB3UGFkNnhNWlF1QUY4SFdIYzM5ZURXNTh1WXRCMkczYXEzcnN3eFlvV05EM3BaUkl4aTRlTkV4T3dFVEFwN3VYS0daVTdjUytYWTE5NnFTMHZLY283MWZLNkF1NUp3RStkOWtFYmcrSUc4QlRnbmNDM2dic3dXY1JxeTBuS1JJbDFsU3d1WDA3aGt2YXJUTVhrVHNUaVlhUERCR3c4MUducmFiQXlPV1ZlaTFlZHVLSG45THBBY0MrZUpGV2V0NEw3dDhBdkxPWjRqWUhoZ2FjUkxMSHZBbmUrTFdLZXNsMHFVdWhwVzJBMzR2YVJiUHNvWXVvOU5qNXNoSmlBRFJ4Zk5nQVF4U3VPOTBxekt2dHNmY2xFa3hjSlluWEpaMHZzSW5uU3ltWmhYbm9HS044Sjdrc0kwNThZeGlTZVFiaUF2aHZjZHI4bHRrNDdrYU1RTUs5bWd2WjVSdWphT2t1RG5RblduRTQwTWl0c3dKaUFEWmcrMXlGNXZGY3Ewa3RQMXFHNEQvMXNNYSttZUwwcmp2RXk4VEptNVljSUY5cC9BYmRWaWxqaFN0VENRM3ZtWjdHK3RJQVZRa1p3SnlZaG8rRktQS1hETkU0WkU3RHhvQk0zSmhicUpWdGZZblhwOGxBNlZYN0xUWjVCbWF2UmJmaUxpenBLWXpROGpYQ1JmUnU0S2p0Ulg4Y3d3UUlqVzErSHFLVjJMVkltZVloSUpsZWlXV0hEeEFSc29QUmxIYm9zTmtXMURhcllGOW42bWpqT3k1ZldWMkY1N1lIN0t1Q25ULzFvalRGeURId0hjQWZ3VmVWVE1qR2xqb2tWVnBqTFZwVUltUll3RVMvWk5sZmlTREVCR3paSlVDVHJrTGIxVmMrdXJCY1J0Y0x5b2gzekt0S2R2eDM0MGRNOVBtTUYrTS9BKzFBVUFaWjFLek5Sc2hHMUJaYUVpOG9TbzNJcCt0SVMwLy9QR0NBbVlBT2tTdHhJNDcxMDFpRmQxNkVJbUJZeExWNnpaQnpLLytOSHdYMDdkdWNidDg0dThHK0IrNEI3YkRjK2xkeUp0T05ndFpBZGtNWHJ3TUZoZEMrS0s3R1ZtV2hXMkVCcERTQTBscGhKQTVaZFY4QWtjYU8ydmk3UUZhL1dXSzltVmZuZkFQZTFXSVVOWTM3Y0NUd0plSGtqTVVrdCt2cldpVWwxYkRkZDMxNWQzejY0MUF1M3VHL1U3alNHZ3duWXNDa1NOMURpNWRvM2VDRmlyaFN2dXI1aGEwNHZYZ3J1M3dEdldzenhHU3ZFM3hCRTdFcC9KMDFmNDNVbnJaNU5YT0s2UlZhdGkxbTEwVnV4VnNYQkhEU0hwaGhMaWduWWdEaUo5ZVhidlZNUnNmT0VVbEoxMHNZazY0c3I0UDRkOExwVFAxSmpWZms5NEZ2bytQQzBKVllrS1pGRnJIYVR0N3dNSW1MRmRlNGIxN294REV6QWhrbEszRUFsYm5nViszS3FZQy9selh4ZUxYWFNSaXRkSGdnQmhtOEVmbmNoaDJlc010OFBQS3ZkV1V1V21PdFBWT3E3M25mSWJrVEpzSlZaR3VSNlQ1Z1ZOZ3hNd0FaQ1pYMUJDRFk3ZFJOdU9PVldpZGJWZWE4RXk3WFQ1YmNJcGFZbXhyMStGdHd6Rm5HZ3hzcXpEM3c5d1YwZGQ5WHhzSFROazYyd1BwZDV1dVpkSTlicnNoWFd1ZWFONWNjRWJGZ1VhZk0rVHBWQ0tWN1RibVFSc0NMdU5XbXc4a3ZBL1FkZ2IxRkhhYXc4Ynlaa0p0NDFQUjdXcWphak0yL1Q0aHRUQXZsMnZCY3dLMndJbUlBTmdNYU5sRzY0bUZHMTRjTmNYOGwxU0huelNuSGVFMDlLZVlVd05jcGJUL2NRRGFQREg5S2NrcWVPL1JhekxiZ2VFWFBaQXV1TWRUUXJiTGlZZ0EwSGJYMDVHbFUzYVBkQ1c5bFkwMUxtRTA4SGZ2MlVEOHd3V2h3Qi94WDRvOWxjaWJyeVRLY1Q1OHZaRmJaZHZ4VldYUDltaFMwM0ptQkx6aFRycXpOd3VaRjllRkx4U2lMMjUrQys4elFQempDbWNBMzRCa0xCNkxpckpXWjFhbjB0WW5wOWpoQWpsdnRnZzM0cnpGaHlyQkxIY09oWVg3NWhmYm1RSGwvNy84L0Y1N1o5NVRycDYzM2VGZU5lNzF6Z0FRNlpOWEx2WUpzeTV4dENGcWVVa2RnbnhCUDNzY0hncy9DSGhNSy9UeUZkb0hLZFNxMUVIUlBUQXJaUEZxOWR0ZDRCOWgzcysxaTVJOTRIUitvemorTC9zZW9jUzR3SjJCTFR5RHhzV2w5T3VVNTg2VDdVNDE5MHI3UFBkWko2bnM4a2pNa3hTbTRIUGhCNFArRGVjYm1EYmwwdU1RdmtCanNrMXpHNnJwYXJoRTdDbXdoeHh0Y0Fmd2U4WlJFSE15QytEL2hNY0EvcnFWcFBPTFdGTjhKMTd3Y1JzVDFneitjTVJpazF0ZTdqVE00dS93OFRyaVhHQkd3WVRMSytOdU9OdUtOdTJNSnRFcTJ5UHRkaFI3eGVCZTQ3Rm50OFM0Y2ppTlQ3QWc4SEhoWFg5eUwzQ09UbThiZll5RWxqZVVSb1dYY0pvdlpTNEUrQXZ5QU1Ibjh0cTVzSmVpZndUY0RQa2VZUGczWlc0aEhsWUg2eHdyU0lTVGFpR01LYkJDdnNpRENUczN5dUZmdGRja3pBbHA5NjNGZGYwVjdkMjlRaUpwYVg5dm0zc2c0QnVCSEZhMVV0Z0ljQ253ZzhFdmd3NElGeGYwdWtlbHExV1JzN25hN3RJZndZNHZPOUIvQWc0RFBpNjk0RS9EbndZdUIvQVM4a21BMnJ4RzhBdndCOFhuallsOWloNzR1dDZEYlg5OFU1UXFkdVZ3bmNnUXNlaVJzdWV6aTh5OFYrYmI2d0pjVjVQOXpmeExueHhsa3I5NkdNK1ZwSHBjdjc0TEc2NU9BeWNIY2ZQRnozaU12dHdOMGQzTTJINTJYQ3lycnlSaEgvK25Wd2p5Y0VCbGFGRHdBK2p0QXdQb3h3NGlaWVZhMzl0M29UdFM3azVzWHR3RjBsdUJyL0ovQmM0UDhRV3VGVjRLSEFid0gzeXVJaW9jVmpja1g2ZllLbGRRMjRBdHhGS045NUo4RzRsZVZkRHQ3dHcydXVFcnk2K3k1Yy9qS2pjNnBhUDJZQkc2b09tQVcyM0NUWG5sTkNSbkFoU3RGZWNaWG85UGxXdHBXNERudlQ1dmZCZlN1ckkxNGZBendCZUR6d1BtVFJxbTVsUDhQMkxJK0ZXcGhxRjVXT3ZiaDZ2d2QvZ2RDUWYzQk10UGwxNERrRTYyVHNMc2FYRXVhZyswL2hZY3NLNjNnblhNN09UZmRJZEt2dnh2dGozNFdPNFFaQnVDU21kb3o2ZmN3S1d6NHNqWDRKOGQyR1M5K2NSZGtvcjdJUHFaSTJYTHZXWVN2dTVRQitDdmpqVXorNnMyVUxlRFR3YzhBdkExOEcvbDU1bGw1QjkreDFEMTl2dCthbDBuTlQxZnVuUFY5L2J1di9KcGRXL0pKK0cveW5nMzhtOENMZ1h3TjN1L1hUdE5UOEVDRk9xM1oxeG9mUlB6YnNIRUc4Uk5CMjRtczJYVmo2Wm1JWXI3dG53SmlBTFMvNnhrazNsQXV1eEUzZmpYL1ZGdGlKcks5M2d2cyt4dDI5L0ZEZ3h3blpsVThBZjJtNmFHa1JhWW1RbmtpeFhrOWFXdThwWmc2bUsyeXQ3NWErL3hyNGg0Ti9PdkFyd09jeTNoYjNEY0FQa0lZZzFCMnhwb2lSUlV4YlltbmtnNnZtQ3ZNMkptd1FtQXR4dVdsbEg4ckF5eTNKUHFTOElXV1pOZXZRQVR3TGVNa0NEMnlSM0EzNEtvSjE4bDc5cmo3ZjJLN2pMT214eTFaYnZlalAxTnNkZHlEVjcrRHliMTAzeVBVK25TRlhmS1lILzVIQUkyTXM4MXNJYnJleDhVemdDM05hUGZSNEtpZ0ZURnRpdFFXV2lsckhlUE5hRkxGamx6L2Z4b1F0R1NaZ1MwYVZ2Q0dQMTF4TzVKQzZoL1ZOMmVsVjBoV3dwdlgxZG5EZnpUanZ5bzhIdm8yUUJ0OXdFOHA2a2xnMTNYbSsvZHBKUWdZOXdrV09iOWFpdFZadFR4SzE0bjlzZ0g4Q3VJOEN2aFY0QnVQS1dud1g4RlNDa0RFOUZsYU1sU1FQK0svdmxTMmZCemJmd0ZMcWx4NFRzT1VrM1pBdXA4Nm5lYjljS1dEMURabHF2Zm5wazFRNkNHNjFzVTFTdVFYOE8wS3cvN2JRY3hiNmhLc1FLaGNIdE5LTmQvWEZ3MXF1dldrQ1ZndFYvYmlJeDdoOEhmUUpXeUZrSHZ3OWdlOEI5MmpnYTRFM3puYjZCc0d2QUg4RjdrTzZWbGh0aVhVNmZMNXJpYVhpMXRIVElUTTlyR0hKSEV1TENkZ1M0ZW4wcENkWlg0V0FWYjFKWFRLcXQ5STh3SnZCUFdzQng3Wkk3a1Bvblg4T1RhdXJKVndka2ZMZE9GUzlYUXZhTkJHYlJieldHK3UwN2F2SDFYdGJ2NjhqUE9FL0Q5eERDVzdVc1NUcTNBbjhNS0hNMUhwNXpGcndPM1VTWFptVm1OenRxdE5YdTl5bHZKVDhEeE92SmNFRWJEblJzUy9uY3VYNVl1b0lTaGVpakEzckpHNVVQZmVpa1hzZThMS0ZIdHJwOGhCQ2x0cGpKbHRkdFdocGdiclJXTmY3MHVLeTJOVWlwdjhmbE1KU2lGZnM4V3ZCMGpFYy9idlgrK281M1BTaWNSNzhod0MvQk83TENXbjNZK0Rad0ZlQWUzQWpGdWJMYzVrR04vdnEzcEg3eGdjUmt3U3BBOEx2Y2dScEdJdXhaSmlBTFIvNlJwR3FBSzJzS2wwK3FsbnJrSnhSMVl4OVhRWDN2WXlub095akNNa29ENWhzZFUwU0xaMFJLUFh4SkI0aSt3cHg4MjFyckJVUGF5Vm5pR1dsZjErOUZwZldocklNOUcrN1NWZk01SC9XdjdjRHVDZjRud0IzTy9Bakp6L0ZTOGM3Q01meC80V0hMU3RYbDZWc1ppVDZydWRDem5tZHpHRnV4Q1hEQkd3NUVjdEw5eVQxN0xQSm4xLzFKdVU1SGZ2cXpUejhaY2FUb2ZaWTRIOEE5KzBYcno3aGFxVzlIOGphVjgrNUlGcXRsSGN0WXJVVkJtM3JxM1lWaXNVczZkeFM2MUs3d1BSYUw5cEtFeUdyclRFSGNBSDhkNEhiQkg1d3h2Tzd6RHdiK0JwdzkycDNGbG9aaWVuK1VlN0VkUCs0UEtoNTNRY0x1WlV3WStLMUJKaUFMUW0rNmozR0hsN3FwYnRjZmFPK0NZdE1LdVVDMGU2VFR1eHJiMFN4cjQ4RWZwWlVYZ2pLdFFpS0ZoazkvdXBBRmhjRTY0QllIMCt0dGFEVlk3ZGFBNUtUY0RyVlk2Yy95YUFRTUdWdGFjR1MzMXZpT0pMNnJaY2pRc2JkY1d5QWRZTmVDTmtGOFA4ZDNESEI1VHBrM2dEOERQRHZ3ME94a2xyeHhZNEhvNDRkeS8wakZoalpRblpLeUV5OGxnUVRzT1dpY0I5NjFkRDUwcFVrUlVvNzFwY3ZlK04xZ0QvOWp6OGpGSVFkT284QWZvS0o0cVd0cnRyaTBrSzE1OHVwdXZaY21DOUtpNWdJV2N1ZG1GeUlUcVhaVnkxZHlpcWxiRmc3YmtQS2hsYi8zanVVVnNPT09xNHR3di9lak1jdjk3ZUlsMXhQSG5EYjRMOFQzTHNJVnN5UWVRN3d4ZUJ1eStJMXpRcmJWdXQwRDhWT2dWaGdHNmpzVDUvSGhBSG1SbHdHVE1DV2o1YjdjQjBsWHBTQmFOMERMOUxtWGJlYVFCS3hueUZVTHgweTl3TitraUxtSld2dHh0UHVRdTBpRkxIU3k2NWUreXhtdFNYV1o0RWRrOVB2UFVCbGdhVnhmWFFGckU3U0tTd3ZKVjQ2L2Z0Yy9FNnl2MVc5dzVQbjFaU1U4Q1JpbDhEL0FMaTNBcjgvKzZsZk9sNEl2QUQ0cDNsWEo5WklPWWZlWnRVQlRCVTV5QjNCWklHWkczRTVNUUZiQWlyM1lYSTN1ZGo3STFmZ2tFR1pFbXpXUGNuT21DOVBKLzRGaEtsU2ZtRWhSM1o2M0E1OEQvQ1F0dVdseFV0YlhTSmMreTRJMUM1aGtma2w5V010YkRMbHhxSHZGekE5ZGl4VjZ2REtqZWVxekZMZmJseDFBOXRYQmttbXl0bUwyd2ZxKyt6UVRpWVJPaUoyTy9nZkJ2YzQ0RzlQK0Rzc0M1NHdxRGtLV0Y4eVJ4S3d5djNhc2NCUWlSeVlHM0ZwTVFGYkh0Sk5KMjRtcjI2NnFrRXJianBLQzJ4UzFRMEg4UFBBMnhkeVNLZkRHcUc2eHVQb3RDTGFiYWpGUzZ5blpHbEY4YnJtb25qNU1QWEdkZUM2eTg5ckFUdU04YkZERnovWHR5MnZQdUVBMVlPdjNJZ3B6a2xNNEZDL3RReVowQVBXWldiaDg4VHBQNVN3OW1WRDFxZFFSQXlBQjRML1FVTDVxYnVtblA5bDViY0pSWDZWUmQ2S09SWVppYTZiVmk4RG1qZDlIdFRjNjBZMHpoWVRzT1VpSlhERTdUVDdzcmJBZkw3eHRIalZXV2hOOFRvQTk3eUZIdEw4K1FMZ1N5a0dLV3VycXlWZTRpNFVDMHZFNm1vVXJxdHEzM1dmcmJGa2ZaRXRNTWxDYk1XOWttaklkOU11eFBobFU2TmFXV0dGdTloVkxtUEtTVXZQbzhTMXNncWJ5U1NOMDdoRzJkRHpjY0RYQWQ4dzA2K3dmTnhGbUNQdGE4cmR2VllZWFV0TTRvMVNuYjRvN3R0eUk4YUFtMWxqWjRRSjJKTGhzM0RwNmd2MU9KWmF2UHBLUm5YY2gzOFJsNkh5S09EL0pWU1hpTHRhNGlVQ3BzVkwzSVFpV1BWeWpTeGl1OEJ1bGNTaHg0T2xRY3hrNjB1K1F4SU0zYkJGbjFQaDJsS05ZajNlTHhWdHBwdTAwM0Z0MGhXd3ZyRm9MVktDaHdmL05lRCtCUGlsQ1c5WVZqendhOENYZ3J1Y2QzYzZnMHhJcXlmZVc4cmpzWTRhRHdZMnFIbVpNQUU3WTN6VnEzT3FjYVBIaGVqeVRkYXFkOWlxT28rc2Y0dFFnbWVJN0JERTYzMjY0dFdLZTBtV29SYXZxNFRaZDJVRzNpc09ydmhLd0Z3VUNGOEt4QTNYN3pZc3F0TlhQWElkQTVNZDZiZldNVEc2d3lhU2lNWGZlNXNncW5zRTErRytMMk56V3NEcWtsYTE5VkJjRjdLOUFmN2J3YjBJZU90TXY4cHk4U2VFR2FvZm5YZTEzTFpGc2t6RG15SDNtb3pMcXkwdytWeXp2TTRZRTdEbFFrK2RvdXNmYmlpaFNtNlBTcnlTOWVYSzdFTmtmUjNja0pNM25reHdjODBROXhMeGtxbmx0WGpkRlpjcndGMCtpcG1EYStJNjlOM01RMjE1RllWK1JiaDhPZVpyWXNNbVBYZ3RaSlMvZSszdTJpQlhTdTlrUmZxRysxQUphdnlYbmNRRzR1ZUtCWmkrM29QQi8yZHdUNDRmT2lTdUE4OGxDWmlJVENzVzFoZGI3bmcxbE5XMjF2ak5iSXFWTThRRWJIbHc4VS9SVzZ4Y2lQWE4xWnFzTW1WTVVUWlcvQldoZHpwRUhrNlkwNnNSOTBxV2w0TWpYN29PVytMMUhoZUVTNFRzS2lFV0pna2N5Zkp5WGJkaEVpOVhpdGJNNGlWZjNFV0x6T2ZmTzFsa3RUVkdhR2dsaVdSTExDNzEzVHF4TDUvUFRTMWNyYW9zeFhVQ0ljNzRQNEhmbVhZd1M4aHpnVzhEdDlrV3I4SUs4K1Y5Vkl1WXprUk1IWXZLaFdpVzJCbGlBbmFHVkRHUlNlbnpyYkZCcmRoWHMrYWhiUC9TS1IvUGFiRkJtQmJsam43eE9pYUlseDZnTEVrYkV2TzZBdHdWeGVzOWF2c3FLbzNlTjJKZVVSaVRjRlgvMzd2OG5VNFMwTmNkRm5tczNWM2FJcnNScndQSmZ1d1VHSFpWRW9sOHBuSlQxb1BhNndrMFFjWERMb0ovQ3JnL2lpZHlTTHdhZUJHaHZGaWsxd0tqTVdpYzB0c2hZeXAxeDFDeU9FMjh6aGdUc0xNbk5XQ1Y5VlZYMHE3SEJqWGRoN1I3MlZ3SDl3Y0xPNlQ1OGluQVozVjN0MXlITjJpNERsMndzTzV5OEo0b1h1OXhJZloxeFdYcmF5OWFYM1hNU3o1Zi9sK3l0bHdwcVBWM20wVGQ4RWw4TEswcGY4ZmpLS0s2Q241NnJGMmE2bk1MUzc2MStPNzFVbnlueHdDZkIvellsSU5aTmc2QVg2VVFNT2hhWVgyRHg1djNsMis0NXgzR1dXTUN0ankwZXNvYmFwRWFiYTNZVjU4Rmx1NnhGelBNUWFvWENCTXhNc1g2UW8zM2NqR0wwTWZFakJqbnV1S3pGWFlsdWhDditqanVDeVZlVHFYS1IzSHdyaFNIbXhXdStuV3U1N0UwanNjK05Kb3laa3VFVEt6QnZqbkl0SVdWNHFtVVN5MW9MVmVpZnhLNFgyVjRDUjB2Qk40Rjd1NTVWOHVWMkV6bWNEbXBRenFOaFh2ZWxaL2xzRGpZbVdFQ3RoeG9kNUxFUVpvcDlMN3NLZlpOdnRlSmFieVFZV1lmZmhid0VkM2RSZXlMc3RLR2xJQ3FzdzVUOGthMHZDUnA0M3A4dlloZmlpZUpTTGhTSFByRXE2Q3ZNZk9WUURTT3krbDEvQnluWWxxUzhhalQ5MzE4VXhIekVVdmVseDJkdXNOVHBJakg3NUZjaVI5RytBMitmOUxCTGlGL0Nid2MrTWZsN2tMWXFlNHYzNzdIZWhPa1hQbTVKbDVuZ0FuWTJlT2dqSC9SSHEvU1d1ckdxTzRaQXJpRGdib1BMd0ZmRG16TWJuM3B0SGxKaXhjUks4WjgrVHptUzRyMkhoTGlYa2V1SE9QVkVpL2dSUEd1bWQ3ank0YXdFRFBYUFhaSklpRnV5NHZsdDVlNGpXNmtteUxtdXgwZitUZzgrSzhBOXhNTXEzYm1OZUJQS1FTc0kreFVBNXNyRjMwbm5SNVZsWVB5UGpQeE9pUFdwci9FT0ExOEpUS3VIWEF2NW9oaXNualZOeGF5dmhQNG80VWMxWHo1Wk9BZjVZY2Q4WEpkNnl2RnZ0eUVBY3N1dWcyZEdrdUZLaEhGaE1IQUxscEFwK0V1YW54Mi9mOGxXZVVvZmxmSlRCVExVK0orMXdqdTBkWmdiVjFsUkZmWDd6M21Cd1AvZk40SHV3Q2VuemUxMWF2ZGlQVWNiQ25Xck5ZYkxsdXE2M0tQK1h5dkdtZUlXV0JMZ3JiQWZLNGFrSHJMdnV3aE5nY3UxNklvbi8zbndMc1hlQ3p6WUJ0NEVzMjBkR2xZSlltaGNCOFNHM0ZmV21DeVNLYmhMam5ab3hpazdMckpFRW00VHV0WVc4ai9hMWxsaFk5UmJhT3NpOHI2a211bk5kYXBUZ0xTQ1IzSkNuc2l1R2N6ckRxSmZ3emNTU2hXVERjR1ZzVENmRmxlcWxpanJDOTVqOFhCbGdPendNNmU1SmRYc1lnNjZLNVRlbHZKRzMzeEx3ZndHd3M4bUhueENjQWp5MTIxOVhWTTEvcEtBa2F3dE9vU1VXSjlTRVY2UGN0eXkyMTRKdUtsNmJIR1pEemFrVmloUGxoajZSejRZR0VtVjZvU2RHMkY2VW9qZlZPeGVBaS94V01XY2NCejVOM0FIM1ozYXhHYmxvM1l2TmNrRGxaWllHYU5uUUVtWUV1QXVoazZzekNUM1lkOTR0WEtQRXczMHo2NFAxdmt3Y3lCZGVBemdIUHR4SW5rUnFOYk1pcE5qZUp5VVY0dFhucCtyNko2ZXl2bWRWcXV3cFBTNDFiVUluWWpMb1VydFhJcDZsSlp1OFJoQTVUem5JbUlGZUlGc0EzK3N4ZHhzSFBraU00Y1ovVTlrZ1RNMFhUVlMzTEhobnBkeTlOaDRuVkdtSUNkTGVuaUY1ZEV2RG5xS2VhbmlWZHYvT3NWd09zV2RUUno0bjRFQVZNVXlRdksrcXFuU2tuVjVuM1gyaWltUm5FNVRiN1phQytEY05YMGlSaEJ5UFM4WjJrc25Nc3h3U1RtUHJ0UzAvbWd2NDVpT2llUEovdzJRK0t2Q0owNCt1TmdLV21xRlFlam0vQ1NyREJuY2JBenh3VHNES2g2Y01pTlVQbllVeTFFMnRsamhmdXdMLzcxY3VCdEN6aW1lZkxQZ0x2bGgzV2ozWXA5ZFN3d1NwZGhKMm5CNThLODlWaXFwUlF2WVlKTE1RM20xcGFZejJQaVd1ZGx6MVVGaSttS1dPSXk4T21uZW5UejUrK0IxK2FIK2g2cDQyQXBadWh5cDFGYlpaTE1rVnoxNWtJOGUwekF6aDd0UG5SVUEwOTlLVng5UWZlK2dhajhIMEtMTkJTMmdTZlFTZDZvTFk1VzhvYTJ3TVRxcUJ2cGxHM29KalRVeTA3TEVsTkxZWm02N2x4b2hhajdyb0QxWlNUaXdmOHp3cXdBUStIMXdDdTd1eWZGd2VyeWJXbE9NS29PbzZNbzZndWt6cW14SUV6QXpwYmtQblIwQ3ZocUs2dDNFQ285QTVjQnR3L3VMeGR4RkhQa0h3RVB5UThMSzRNWTg2RTdXYVdrejJzTFRGeGtSWEZlcHhwb3QyUUpHemRKK3Y2K25BdnRCbUdtNWlUd3JoVDRYZGVlVjZ4dk1rd1BvYWp5aHk3a3NPYkRFZkNTY2xjcmZ0Vks1dEN4WjEyRlk1MmNjR1ZXMkJsakFuYkcrUGJOSkRkSzdVS2N0UlNRZzFEMGIyZ0pIUDhFdUsxdGZXbExRMXRmTFF0c3orVWtoY0xDOEJNeTdZWWtYaTFYWXR5blJmNlFJTnk2UWtrNlR6Nk9oYU5oZ2JtdWtBRndkL0FmdFpBam5COHZJbmtoSnNYQk9pTG1HeDFIVCs5MFJTWmVaNEFKMk5sUnV4MEs4Zko1TE0rRzY3ZkFXbU5TRXE5bldEWHNMZ0lmVSs3U2pYVHRJcXZqWDRVTDBWZnVNWlcwMGFxd01TanhFbHhYNkpNclVjWEU5R0JuZmE3RU91MklQTEdNRm8xRURvQlBKUGpXaHNKZkFnZHQ4ZEpMMFhHa1lZRlJkUnlWQzlFNEkwekFGa3p0Y2xEdXczUWorYktHWFIwSDY4eTYzSmZBOGVMVFA1eTU4djdBby9MRFZweEh1OGkwZ0lrTFVUZk9ldUxIWkgzNWZoZlprT216d3ZxU1hjU2xLT2RvVWlMSGNmVi9lQXp3RDA3L21PYkcyNERYNUllVHJMQlV3aTBtY3RTdWZGMzF4b0ZWNURoclRNRE9odUtDcnkwd3lwdWx2bm42NGwvTkJJNGg4YkdFOGhDS1Z2SkdVWG1lM0Nqcnhya1k2Nld0TDljUXJpRmFYMExsU29TR0ZlWktkNnNXTFcxOXRkeUlUYUhmb1dNcEx6V0hOTzhGUjVtRVVkeDdQdDk3SGZIeWFuRmx4OUdFYk1HWWdKMHRoZVhsMnY3NGpvaXAxem0xTGo0WGNIKzFrRU9ZSDU5RWtYMVl1Szk4Ti81VlcyQmF1SFNqWEZ0ZVk3TytPaUttckRDWmZ1VUdRY2dMMGZlNUlrbHh2bERWK0dtNEVUMzRqMTNjNGQweW51QkdWQ1N4OGYwZHh5SWU1c3JpdjBYaVZPVkdOSXRzZ1ppQW5SM3A0dGZ1Q01xYnBDVmlrcVU0TVgzK25jQ2JGM01jYytHOWdBL0tEL3RpTzdWRlVZdFhLNTR6dXRqWEZKSXJVVnV0THBhYmNsMHJiTCtLRmNwNTB5N0UrdmZnWWNEdGl6cWlPZkEzN2QyZEdCaU50SG9vWm9kSUhVMXgvWnRnblIwbVlNdEJIVWpXcGFSbWNSM1duOFBmQSs5YTFMZWZBNDhDN2xudXF0MkhTY0I4T3dhbXJZZ2luaE5kYVdudUxFWmtmVlhvWTlNQ3BCTTZXdTdFZE01OE5SYXNUL2pmRDNqb1lvNXBMcndaZUhmLy9hTHZ2ejRyTEQzMkZGVTR6SVY0aHBpQW5TRzY5Nllzc2I2Q3ZxM1UrZDRNeERjUTB1aUh3c09CbmE2b2lQdlFVNDV2a3RpV0ZxeFdNa0xLcVBOMFpsVWVsZlhsdWxaU2NpUFNyVjZTUkV6Y2h5NmZ0L3JjTlFYL052QWZlTXJITkUvZUFid2xQMndKVDlOOTczb3EzOFJGRDJZMnpnQVRzTE9oMHhPTVlsWllZSlEzazk3WGw0R1llQ09oUlJvQ1d3U1hWS1Mya21vWFlrcmk4S1VWVnJqQVhLeTI0ZWpQcGhzcEtSN21sUVhyVk9WNnAwVE1SeUZUNXpMRndPaXZpK2dCSHNGd1d1NjNVUWlZVUZ0Z2Zja2NmWjNIZEErYUcvRnNNQUU3UTZUM3BrUklSdmkzWW1EVFNrY1ZRamFrQXI2M0F4L1MzVDFKdkFvclFtLzdNbVZlc3ZFa3ZUdzF2bU95dm9SV01vZEs2RWdXck84NWQ1UVdXRXZFQ2o0TU9IZWFCelJIcnRFYkUyNWxJdmE1RXRPa2xyNi84MmhDdGtCTXdCWkk2NEwzMWMzanl4dW8wK3VqWDd3U0J4VGpYcGFlTzRBSGxydFNRK3k2SWxhNEVhbGlYcTZNNFNUM0llT05lL1ZSdXhGbHJjOVI1L3hSeGNEb0RqMUk1L0NEZ0VzTE81eGI1elhsdzNUUGVEb1dXRjhIY3QyWDk2anp0R3NpR292QkJPd00wZkV2eXB1Z0UxQjJwZHVpTi9zUWNOZkJ2WFpCeHpBUEhrSTR5QW9kLzJwWllESVc3RkF2WG9uWENyb1BCYTgyZENLTWlMcFVyZGNkZ1U3OGkzYnlTK0lTblk3SFV2TXFPajkreTNWWWR5RHJBY3pUN2o4ZzM5dkc2V0lDZG5ZazYwbDZjYjU5SXhXV21aL0JBdHVqNmU5ZldoNU8vL2d2MnRsMFdzUTZEYS9yV2cvNmMwZnBQaFFtSEs4SVdlb0krUEs4TmNXTC9CdDBQdGVEVjdITHBlY053STNKYnI5QzBGekRDMUxGcWZWOTIvbzg0NVF4QVRzYk9oZThFcTllRVhPVHhTdnQyMk5ZYzRCOWFONXNaaUZTV21BdE4yS3I0VDMyMFlKekRldGhWWER4SFBqK2prRFJHWERUa3pnRUQ4M1k1ZElTQmF5bXZuKzBlN0RYaFM5dXgycHRMQmdUc0RORStjNlRHNUhTUlZGVTU2aDg5YjN1aTNjUzB2S0dnQVB1MzkwOXlRS3IzWWdwcGlPTnIxZld3eXFMRjJwUU0xVThESldWcUJmbGdxMEhNamZQNHdNV2NSUno0azBVbWJtdEJLZytkMklkZjA3V1YvVXZMQTYyWUV6QWxvTjBJNmw0V0ozVTBVbmljRDFDTnFRTXhQc0F0NVc3NmdTT1ZneXNzTVI4bnFCU3V3NlB4ZnJRbnoxbTk2SFFFdTNXdWZSZEFXdWQ0MVlNTVgzMmV4Tm1haDRDVnduandYcG9pVmlmbUJYV2wydUxtYkVBVE1ET0NGL2RBTW9WMFJFdTE3MjVKdmIwM25qNlgzOXV2Qjl3b2JzN3hWZ280ekMxQzFGbkcwcmEvSkUwMW8yNDJxcVJ6a04wcFlxdzF4WnRPcThxZmxoVTdlK3paTzhHM0hzaGgzTHJIQkdtR0txbzc2VkpsbGpSdVhSVDdrUGo5REVCTzN0Uy9NdVZyb2xPNEpneUJ0Wk15NGRoSlhEY2wwTEE2aGhMNFVaMFUwU01uRFdYM0llcllIRk5RNTJIVmxabklWNithM2tkcS9kMVJPeHV3TDBXZFNDM2lLZC9mcndKbmNTT2tEWGlYaVppWjRRSjJPTHA2N1VsSWZOMEt0UFh5UnV0ejBpUEo3aEpsbzczSWRUb1VkUlppRW5BZkxmUkxZUUxOV2JKMDdIQVZocDFQbzZWaUJWQzVodm5rMFlkUlAzNEluQ1BSUjNFSEhqbjVLZjdSS3QySzNaY2h4NUw1RGdMVE1ET0VPMDZySlk2WWFNVFFLWVVzZUxHR1pLQTNaUGtLcHlVZ1ZndmtvRFFFVEdWcExEcUNSeENjUTVjMXkzYnNzYmtITmRwOUozenVVNklndzJGdDdkMzk5MkhMU0VyMHVmN3ZDREdZakFCT3lOY0tUN3BabkhadDk2NmNhYUtGd3hId0J5OWpWOGR1K3E0dmNSYWNCVHV4VHBtVTN6bUtyc1RLeGRpczJOUXVXaUx6Z0E5blF3UGZrZ0NWdDBiZmVKVGR4YnJZU3gxQjNPV3p6Uk9BUk93QmRIcXFmbUdpSGs2UlgzN1hJalVueWZQdmZ0VWptRCs3TkJ4UCtsR3N1TkNwTElZWEhZcnByZ1hVYWdxRitMSzBiSStYWFZPWFhVK2ZiL3JzUDVkQ3Q3cmxJN2hOSmd3UG5LcUJlWjdPcEVleTBJOEswekF6aGdKSHJ2Sk4weGZObUtIWFlZekJteUhrQVRRb0M2K1c0dlhzWWlYcXl3STVmWktuOFVLQzVtZ01oSFRlZlZkNjZ0dm1TaGlkNmNUeDF4YTdtcnZibnBEYUF0V2J6a3BFN0hGWXdKMlJualZlMVByaVRkUVpjVTFyYkRyTktzTkxDVTdkTWFBMWJUaU5YcCtxOExOcGEwdXQrSXVRMFhUOWVkeXdvdDBCblNacWFteEwvMzRIc0RtYVgzN09STTdkMzJ1UC8xY3IyZzE3bFh0VFVtZlowa2RwNDhKMk9McGlGRERzdXIwK21qY05IUnZPdllZam9CdDB4U3dPbGJUY1NGV3JpKzl2Nit4WFhtVW9Hc1hxNjVTcjZlZjBaYlgxTEZnZDJjNEFpYWw5M3RJOTVlYjRnMVJyekgzNFJsaUFuYjJUT3I1MVRmVXBQZ1hNQ3dMYkp0aU9vNitMTVJheEZKRDI3T3NmUHhyQ29VcjBUVTZDZFg1MVM3SDVqbTl6SEJjaUFlRVRsNUZwME5ZV1ZsTmQyS1BGOFZZSUNaZ1MwQXJtYU5lZXR5SEhYWVpqb0J0MHBrUXNaWEEwWnZFUVVPNDZINmVDVmtYUFNhc3R6UGdTZ0ZMNzYwZWM0SG1kRGhMU1NWZ2s3d1pNM2xEWFAvN2pRVmdBblpHdUs3cm9iN3dXNVBrVFhzOEtCZmlCaUVPVmxFM2xzazE2Q1pZWGJWRllmR3ZMc295YlZsZW5ZNkN6L3NteHNIT01Td0JtNURrVkloUXc3WGZXdlQ3akFWakFuYjJkSUsvc3JTQ3hlcEZ6WnZta0dDYURJR3RzT3ByR0R2WmNpMXJ3WlhQYWZkWXdZb0xXcEZCNkpnY1k2eVdQaEZMNS9NQ3cybElaQnFEQ2ZTNUVadmlaVzdEczJVbzE5Mm91WWtnY08vcmp4aE9TMzF1OHRNdGQyS25nZFh4bk9wOXJjOWFhU29ScjRXcDdoajR4bXVhNTNpSDRWaGdja0FWVXowZDA3d2hEWStLc1FCTXdKYUhPcXRwbXR1aXlaQUVyQ2Z3UHlrTzFtcFFpeW52cFpHMkpJNGtXTDdlVjF0ZkxkZXNMeTJ3U1IwRUQvaWhOQ1FTUUczUkVLQ1p2Q0dOeDhhQ0dNcDFaOHpJZ0FXczFValdJdGFKMjdqdWMxcThMSW1qVGN1ZE9HMEE4OFJ6T1pRc1JNbittY0NKeE1pc3JyUEZCR3hrREZqQWF2cGNpTnJhU2k1RVIwZjhqQW9SZGkzNk9sSERkY1dyemtMc1BjY0RkeUhXOUhvL0dsNFM0d3d4QVJzWjB2b01nUmthdmFZbDVzckcxMWNOczlGbGtuVXE1N053eGRLMndLRDdmbUE0RnRna0Y2SXhQRXpBakdXanppS3NYVmM2aGxQdkE0S1FtWmhOSkFtK3VCQWJydGhKNHRYQlRCSGpMREFCTTVhVlRyTEFoRVoyMHZ1TUJsV3lTMnQ4Mk16aVpSaG5oUW1Zc2N6Y1RLTnBSVlM3Tk9NMXZpSCtMZXRXUDI1bE5ockdXVEVVMTdXeHV0eFVZK21yUVBzS3Q3aTlZdTZDMlBjOVovVWtqYVhIQk14WWRpWlpVMFYybUloV1l4emRLdFBKb0NPZnE1TmlnbVlzRlNaZ3hqTFRhbU9ib3VWN0JweTY0Q1pmWmJlWG5Jdk9yTUsrZlE2QllNSDJmSlpoTEEwbVlHZUV0aGJxeHRjM0d1bXovYlpuUXFmYWdTL1B5VnA4ckJ2bGRXRGQ1UlJ3UjFsdWF1VlFybFNaMVZ2TzF6cnEzUGxTNk15Q3pVeThSN1dyK2lhdFd1TVdNQUZiSEhWWkdpQTNNTFhsUUx0Y3pVcmNINVZnNi9PUnJJallFSzg3V1BlaE1kNXdVY0I4S0krRTc1OFNaSldRYTY0NFo0VHp0SUU2aDA1MUNpaXZ0Mm1XMlJpWmRBKzJ2QUJBTi9iSzZsNTNDOEVFN0pScDNQQzZ4OWJyeXFtc2pGYURQbFpheDFyUGhpdU43MFpjYjhidFRjSTRWZWRENGZHNk1PM0tvUnBUc2JhS2N3WnNWdWR5bmNic3czUi9sN0hTT1ZZUjlaNTdWSGNRT3AxUHVmOVgxUU53MnBpQW5SSjlWa1REVlZQRUpxcDF5NlhUK3Z5eDBHZDV5WGxZajhzR3VSSGVkTERsd3dUUE1wWkpyTExrUGx6VmpMckt1bDl6V2FpMmdlMTQ3amJKZ2lZaUprTFc1eFVZM2ZVM3hmSjNQZmZvV3ZWOHNzejBSNXVRblE0bVlIT21jUlBJT29tVnkvRUhpZG1JQzBkY083b1g3T2oyaER1dW5SRVF2WDVwdXlWYzY0U0dkaXN1Mnc1MlBCdzZ1S0ZpWWpJdDJyR3pHRml5NXNuWDNDYmgzRzE3MklubmNKdDhYamNwejNtekU4WDRyajlaMTVhLzNpN3VVOVZaV25maG1sdVBGNXFuVzlYTmhHek9tSUROaVNuQ2xSb1ExN1VpeFBXMXFYdkNydXZTYVRVZ05CNFBuVllEc3U3eWVaSkdkb2ZROEI0QVIxR2s1SnpkQUk2Y3F1KzNxaFlZbFV1YUhDL2NqcUoxM29lcDJYYmlra1FzbnMrNk16VkdGM2JybnFvN1VPbWVWUGVwM0xPSGhPdE9paUxMeGVaY093WnJRalluVE1CdWtXbkNSWGJkSkl1TGVCTkU5ODJXaTQyR3o3M2ZGSmRnc2t1bi9yOWpvV045eGZPaHhlc2NvZUdRWHU1YVBIL2J3QTBYUlUyZVg5V0dRcTVQaWRINGZQM0p1VG9QWENSTXJDeENKdGRqMzdVM0ptYXgvT3Q0NnlibGZadXVONmMrSjFwa2p2YThhbUJDZHN1WWdOMGtzd3FYV25SRHZCSEZLN2x4Q011Mmk3RUpKV1oxSXpLeEord1pUclZ0NVYrUlJxUnBmWkViRGhHdjg1VGlKVzZ4ZzdqL2hnOFdXS2RpL1FxU1lqTHhtcTNQNTNsS0VUdFBGakY5L1UxMFl3L2xtcHN3M1ZEZnRWZWNMM1YveW4xN0dNVkxNbC9sL1RmaStvaitPZFlFRTdLYnhBVHNKcGdRN08wSVYrejVhdUhhOUdIWklyakF6ams0NStHOGkrNGNWN3B6cE1jM1RjUWM4UTEzQUx1bmVRTG1nQWN1bDd0cUVkT05pRFMyMndRcjRRYTV6VXd4SFlKNFNmeExMREJKN0ZqSmhrRVNPRlFpaDQ0bGJwSTdCQ0ppNXdubldHSmljdTIxTWhMVGZYQjdYSmFkZTFBMGV0TTZUdm84YWJmMU9RY0gwZks2RWErejVLSjFjT2pESXM4ZnVjbVRoU0xyNk81ZHlXdjFaakFCT3dIVEVqU2s5eFVGUytKZDBvUGRkTmxucmhNUXp2dlE4NzJnMXRLSTdCQWFrcm9uM092S2VTVHdQTEx2WWxrNUJ1N2UzZDJNUGFBYUVPbnR4dGRyOGRvbldsOVU4UzlvRnE1ZEZkSjE2cW80R1BuY2FSRzdFRHRTZlZaWTAvci9ZVUtuYVptdk9VODRvQWYwdjZUdjJwTnpkQzdlbXdjK1htZnh1dEloZ2cwUEJ5NnNkWWNxQ1puUENVYkp4YTIvcGxsanMyTUNOaU9UckM3ZmNCVXE4Wko0Vm9wM3hlRDVqaThiamtzT0x2bHVQS0lsWUwwOTRkdUFSNXpHQ1RnOVhFTmN4TzJWR2dYQ2VUaFdycG8xdFgrZjRENjhFWmRqMysrdVdVVzBGU2JYajhSWHhiTGRKbGdXT3Fsam16ell1VFVtVVQ3Y1BYUXh4ekUzMUFVeHlmTHZDQmp4T290Q0pPL1hNZG85Qi9zK3ZPN0E1K3Z5MEdYUHdScTVJOVpLOURCcmJFWk13R2JBZDRXaXVOaWxvVldpcFFPK1d5amg4dmxta0JzaXVXK2llRjJtRkRIdHlwbllFM2JMM1FHZWhjSUNVK0pWM09ES2l0Z2lXMTdKK2lKbmc2MXk3S3ZBMFJtRHFCdG9hYVIxUExhd3dQejBiTmhCNGNxTzB6VEx2M1pkKy9oR2ZSMXVFWXpRYlE5N3dINUR5QTVkZEN1U0xUS2Q2TkcweGt6RStqRUJtOENzVnBlTHdpS2k1VXJoMm00SWw0aVhGckFMQk9HU1JRZlV4UXFUbnZBWU04SmFQV0ZQZGhQcTE0a0ZJWEdKRlBjaXgrbGJjMXV0TEw2NmZ1bU9yU3ZHMTZudG1XSmdJeUJkZDhyeUYyR1g2MHJYMkpSck1Jay80VnJjSlFqWVhpVms0aVU0aUs3RmxPZ1IzWkhpZGVoWVkrWlM3TWNFckljSjR0Vm5kVW1NUzF5RXJSNnRpRll0WU9mSWdxWFhPcTI1N2duTFpLU0RGekxWRzlZTm94WXdUWjNZSWIxaW5lM1ZESkN2TUxYbm9IYVYxZGJZcG5vOE1RdHhKRlkveEZnV1FUQzA1VjhuWGtEM0dwVDdlNWNzWUdrN0N0a2VXY2oyWGVqd0hoS3NNamZGR2pPWFlnOG1ZQTJtdVF4OU5aNkxPS2FMM0h1dEJlc2t5M2xLb1pQZThDeURtc2VDSE5kYVk3OTI4V3hoNGpVcnM0aVlUanJhcVBhUDBlclgxSjBuT1FmNmV0S1dsNDRmN2hMdTE5MFpsbFN5eXdWcmJKMG9aTEhkT1ZJbjJGeUtVekFCcStnUnIxVDN6TVdxRU9UQnlKdmFSZWhpbWkybGV6QnR1NURKbEt3d2w1TTV0R0RKT3NXL1hMYSttaUkyZ3A2d29JOWpyZG92bHU4UjRUZW9oVXYza3UwbWIxTTMxTFdRU1JidHBLSytvN2pXR3BZLzVHdE9ZcWhReHNxMDlTWDFKT1dlM3lVa2NlejZzSDA5THJvanV1VnlOdkllS2l6Z3NsdlJ4V3RjWElyYWRXa2lwakFCVXpURUt4WHBWRGUxSkdqVTlmaFNtcTBMbVZ3NnRwWEdlUG5TdXBMM2JWTUtsbzQvaUhoSmozZzBEWWhHTlNieFlhSm9PRlVDUjB1NFd1SmxOM3FnZG9uTHVpTmt2aXRzZGZ4TTNqeTY2eEFWSTB5S2tmZlgxdjhXb2ZPNlR4Q2pjd1NYNFM2d3F6cXIxOGxpVnhRcGNQbSszcGZ6N25JODdFaXBxMXpuSm1JS0U3Q0k3OTdVcWNGMEZOTjNkT3J4RVMyc0tGSXlqdXVDV2tUUUN2R2lLMWg2NExLdWxUaHhFUE5ZR3BJSklnYjV1Q1ZXMGVzdXRCdDdNaE5jNUZyTStoWjV3OWl1dWFibHI4U3JGakNkK0NKZUV5MWtZb1hwZTEzRVMxdGhuVW83UGlSN3BIbkc0cGM3SnNlRndVUU1NQUVEK3NVTFZYVWFsVjNvS2NhRm5JOVdsNGlWWkJBV0FrWlh2Q2FLRnQzNHc2akZTK2dSTWJtUHRWaXQwV04xVlc0Zm82UytYbHJYZnQ5ajJSanJOVGZKZmEwRnJFNnpQeVNJanJRTGU1VEpXN1dYWlpzY2Z0QldtSVFwcFBPc0JWUml2WnFWRjdHVkY3QWU4VXJKR3NwOUo4VjI1WUk4VDFsRlE2ZkFheEZySldYb3NWMnRlWmlteFI5RzFZRFVUTERFbEVmSDNJVnpvTSt0MkZyTGcxRmZlMHh3WDlNVnNDUEMvWHVEVXNqMDRQQmljYkVkOGVyZTk1VVY1aHNkVmFXdUltSVdFMlBGQmF3dllRTWxYdVE0bEZUUGtJUU1iWEZkb2kxZ0VnZHJEUTZkUmJpMFMwZSszMmg3d2hxWGI5dytsNkk4bm5ianJ1U04zV0RhdGRKM2Z1WEJhSzgxbU5wcDBnSW1ycngxNHZ4ZjVQdTRkaXQyeHRYNWZxOUxjZjlySzB4OVB5MWk4bDFXV3NSV1ZzRDZFamFveE12blFLMjRERnZDZFVsdFgzUTVEbGJYTkt3dlhKa1FiNXExTlhvM1RoOHpDdG1rRzNjbHp0TXQwbnVPVnVVNmc0a2lCdGxsM1JFeUY4cEthWXZza083Z2NPa0k2M24vZEVwOWtmbnBHeFlZS2l2U0tmR2E2MGtZR0NzcllCVXA1dFVTTDNMRmVGMHRRMFRyTXBVRjVydVdWMTBPS2wyd2ZySm9yYXh3MWRUSDdjc2JkeVhQeVdtd3F0ZVhVSFdZV3U1cldVVEl2QTlpc3U1QzFtQm53bHExRkpQV3FtWGRseGFZZzFSOHVmVWR2ZnB5TWxac0phMndsUlN3UnR4TGo4TklKYUhvaXBjSTFXWGdzZ3ZGZDJzQmE0bFhQZE55TFZ4OUpYbzZicHdENEIzQXU0SDNBRytKajk5SlRvRmFrU3Q0cFJ0YTQrWlpJN3RUN2dHOEYzQXZ3azE4ZTl5M1Buc2NOb21aenhhWkZxUStNU3NFVEhsaVV1ZlZxMy9tc3ZWRnRSOVdXTVJXVHNBbWlKY1dMcWxodUJQRksxbGREaTVIMFpKMXFpTHZ5blQ1bEcyRWNobjZzcGMxazNDOUR0d2ZBeThHL2haNEZmQjY0TTU1bnh6RFdHSGVHM2cvNFA3QVE0QkhnUHZId0IzOWJrWFpwL1ZrVFhWTzF4dUxGcXdrWEw0YlFnQ0tqRnBQSGx5dDYzeldsdUpLaWRoS0NWaFB4bUdLZTBHYWNESk5XNi9jaGlKZXR4R0U2emFpR3pFS25NUzkrcEkxSnFiRHF6WDd3S3ZCUFI5NEx2QTNCQXZyY1A2bnhEQ015TnZpOHFmeDhRNWhjdGhIZ0hzODhGamdmdURYeW51Mk5vaGtMUjNVZXBGTVF4bWkwMm9UTko2dVlNa0VyYkpBV1lWbVpWZ3BBYXRJRjVncjZ4cW1tWkpSTVM4bFhyY1IzSWRpZ2RXVjQ2Zk5wTnliVmZnZTRIbmdmZ2w0UG5EMTlJN2RNSXdwN0FGdmlNdnpDQmJhSjRIN0RPQ1R3VytIbDlXQzB4Zkxib2xaMFNiRW1GZFR3SWdUWU1aNG0vZktHblA1ZGZMZWxiSENWa2JBZXF5djFsZ3ZQVU90Q0ZoeUc4YmxOcCtUT1BSWUx6MUlVVDV6NmxpdXQ0RDdhZUJIQ1M3Q2VyU2lZUmhuejl1QVp3RS9EendNM0pPQVR3WHVVVnBkSWhxZE1XUlJvSHBqMzFGMEpJSEVVMVhEOTkzeWFUS3JzeGF5bFlxSHJZU0F0Y1JMSjIxUTFqYXJ4VXN5RFM4RHQwWExTNmZOdDJKZWs4by95ZmZnUGVDZUNmd1E4UExUT25qRE1PYktIc0hOK0VYQXc0RW5nL3M4WUxPMGdtcDNvbVFVOWxsb1FDRmUzcFdpZFV3dVhuMUVudEc1bm9YQjVZOGFQeXNoWUJYSm5QY04xeUZxb0xJTEtmR1NwSEdaYnRaaFBjNnJWZHVzYzZFZUE3OEQ3aW5BLzE3TU1SdUdjUXE4QlBnUzRPZUFid0gzajdwSkZURGoyRTZGcHkxZVJ5NElsNTZGSVZsaDFlSllBU3RzOUFMVzV6cEVaUjY2bkRLL1F5NFBkZEhuSkEwUkxSRXU3VGFzeGF2bE5wVC96NnZBZlNmd1RDd3B3ekRHd0JId0c4QUxnQzhEOXg5SW1ZdTFOWVo2M05yVzhTNFJNS21CZUFPNDRlTUVyaTVzSjB2TVpUZmpTcmtTUnk5Z2tVbXV3elJnMmNYcFVDamRoNWRRcWZMMGk1ZE8yT2o0dHdGK0hkelhBQzlid0FFYmhyRllyZ0wvRGZnajRLbmdQcUpyamVrQ3dicnRyYTBuYlgwbDhYSlp3R29ocStOak9pTnkxSXhhd0JvWlBUTFh6aHJkV1ZWMW5VTmQwL0FTd1Jxcnhhc3VEZFU3MmVRdThGM2d2cDB3TVpCaEdPUGxoY0RqZ0c4SDkwWGcxOE51YVl2NjB1V2htN3lSeElzZ1ZJZVVTeEl5c251eEdROGJxeFUyYWdHTEZOWVhjZkFnS3ZibDFHU1V0R3NkWG5CNWtISmRVWDVTekl0M2dQc3E0Q2NYZGJTR1ladzU3d0MrQW5ocDdMaWVhMXRqbnR3R0Z4WVlaZHlySlY2SEJLdnNVSXNZWlpiaTZLMncwUXBZWlgwVjR6QjhaWDM1S25tRDdwUW85U0RsT3ViVkZLL1hnZnRDNFBkTzhUZ053MWhPRG9DbkVkTHZud2J1am42WDRqbzk0a1ZidkE3aWN1akRPbGxwTG91WUxqNE1JN1hDUml0Z0VXMTl5VmlNb21RVTNYRmZyWWtwV3hYbCs0VExBYndjM0JkaldZYUdzZXI4REhBWDhDUGc3bG1LaW82SjRYTEZqWllMVVF2WFBuRGc0TUNIOWFGWGxsaVYwQ0hDT0VyV3ByOWtlRFNzcjA3cVBHcU9MN0wxcFdkVzF0T2hGQWticmpGL2ovby92QXJjWjJIaVpSaEc0RmVCSnhKQ0NuRlgwUzdSOVF6cFlUM25DR0dNWXBaMzhRcjUyTEYyNVJqVU5LZVlXa2JIS0FVczByUyt5R256cWVxR1UrNURYMTBrZEJNMkpnNVNmaE80ZjBtb1gyZ1loaUg4TnZEbHdOVUpRM3ZvaXRnMldjUjBKN3ZWdVo0VWt3ZWFpVzJEWm5RdXhGYm1JWTJCeXk0TG1DUnYxSXUrTVBURjBSdnplaGU0THdIKzRIUVAwVENNZ2ZMemhDbGIvanVoZ1lsSUd3VTVzZU9ZME9hSUcxSGlYZnMrdUJCM0NVVkJaTm4zc08vQ3NLQWJQbVlsMG9pRm5lb0JMcGpSVzJDMTlVVWUreVh1dzhLRkdKZHpyakZJMlpYaVZVeDdjQVI4STJGQW8yRVlSaC9QQUw2dmJZVTV5bWxYNmppOXRGTzZ2U282MnI2Y3VxbFo1WDVNVnRoWUJVeGZITnI2V2lkYVg1UVhoVGJSenhHc01tMTVGYjVsR3RiWGo0RDd3Y1VjbTJFWUErWVkrR1pDWVlPNHF4YXhvdEFDWlhzbENXZm5YZGwyU1Z1MVJaenhQU2FzU1NkK2xMR3dVUWxZSzNuRGhVWEdmeFdWTjZoNk5hNzBLZXRwVVNhTzlmcHpjTis0Z09NekRHTWM3QUpmRGJ5K1A2a2pqVmRGVGJKTGJwdWs4SUp1cjFKVklOK2VhMngwakVyQUlxM0E2QnJoQjkya2E0RWxONkl2THdRdFhxMjRGd0IzZ25zeVljSkp3ekNNV1hrNThIV0V3RmFrbFRIZEtYbEg3bmpyOXF1d3dNZ3pQOHMwTHFOMEk0NVJ3QVRuVmZVTlZIYVB1QWRkMTRXNDQ3b2xvaWFPOTNvR29mYVpZUmpHU2ZsNTRMa1RzaEpySzR3YzJ0RGl0ZU42eHFtT1BhVitOQUpXdXcrOWNoLzZoamxPQ0hoMkxnVGZ1QWpvQ1lhK0F0eFRGM0JzaG1HTWt4dkFVd2llSExVN2lWaGxoZW5hcmJVN2NkdVZoY1UzQ0xHd05SK1dVUW1YTUJvQmk2UWVoc3NYZ0xnUDAvZ3ZsQ211L01yYUJKODZyOWNCOEMyRW1tZUdZUmczeTh1QTc4NFBPd2tkVGlXZzBXakR5Qm1JdXYzYWpFa2NvM1lqamszQWhPUSsxQWtjY2Z5WGpvRkpIY1JhdkthNkRuOFgzQzh2L0xBTXd4Z2pQMElvL0t0MjZWaFlIUWJSN2tSdGtTWHZVV3p2TnRUN2F6ZmlLQmlqZ0RYZGgxNEZRbjM1Zyt1TG9HVjl5WVdVZnZnYmhCN1Q3bUtQeXpDTWtmSVc0T241WVNzenNUVStyQ05lc1hPKzZWVWJGdHRCVjRkWlR2TjRGc1VvQk14M2YzRElvaU1pVnZkZWlzVjFMYS9lMk5jTHdQMzJhUitVWVJncnhjOEFyeTdiTWxtblRHcktkcXpUbHZrcUJrWk1wM2RtZ1MwOVRtM1VHWWk2QXIwczJ2cVNIMzVTcVNoSCtFeWVUcWk4WVJpR01TL3VCSDY4M05VYUV0UVVNWmM3NHNVa3V5NWFZT1EyY1RUaUJlTVNNTWdpSTRPWEpRYldzcjUwRDJhYTlaWDRhM0IvdUpoak1ReGp4WGdlOE5aR3g1bCtWNklNWEM3V0tPdExGcGVUMjVJVk5uUkJHNXVBNGNzZkthV2hUbkFoZGt4dTJ1V2lITUN2QVc5ZTVBRVpockV5dklUbXVGSnRnVTF5SmFhMlRBMGJrbkZnYXcyeEdyUjR3UWdFckMvK3BjcW9TQkpIU2tOMTVYcURHY1ZyRDl4ekYzTllobUdzS0w5VVB1eTF3cXBPdVY1dnRKSTRvRk1YY2ZBTVhzQWluZmdYRGIreHl6OXUwOXdtQzE3elIzNEY4TWNMT0JqRE1GYVgzd1RlMlcxL09sWllJem10RURIS0RybDJJWTZHc1FpWWtNVExxZDZLTDNzbHJSKzZpSDMxVFVQd200Ukswb1poR0tmRm5ZQ0tzK3MycU5NeFY1VTZ0TXRRdDJlNmxGUXJuWDdRakVuQVhQempYTTVBMUJhWTlodTNoS3RackZjKzI0UDdYNHM0Q3NNd1Zwb2o0SGU2dTNYSHZQWXUxVzFiMGFiNXRuQ053bzA0SmdGcnhjUEVKYWluSjlBL2RpMWV2Zkd2TndDdlh0aVJHSWF4eXZ3MWNEVS9URUxqdStLbFJTd3RUaVZ2cU5kTGdZZEN1SVpza1kxRndPb2ZPUDNJcnF6R29YM0dSWmFPZW4wei92VXk0STBMT1JURE1GYWR2d2RlVys2YUpiVStkZExGQStVcnI5TFlNaEhISW1DZ1hJZzYwMGI5a092a1daVzExVlZrSHZaVmJmNTc0UHBDRHNNd2pGWG5UY0FiZThJWmFxa3RyTFVxZEZKMHlsMi9pQTJXUVF0WS9VTW8wN2kyd3RiVkQxMmIyMzF1UTkxcjRSV25mVENHWVJpUkkrQ1YzZDExKythVWhkVVJMdjBhTjZGelBtUUdMV0NSamorM2NnTktDWlUrNFdyRnZnb093YjNtTkkvQU1BeWo0dS95WnAySnFQZEoxYUZheEp4YXR4aUZtSTFCd0JLTkxKdldEenBKdU9xTEJNRHRFWkk0RE1Nd0ZzWGY5ei9WNmFEWCt5YThabFNNUmNBS3dXbFlZUzNCV3F1ZWJ5WnZBQndBYnozTmIyOFlobEhSU0Jycmk0ZWw3VVlTV3RHbXRiSVFoOHhZQkF5NjFwZXMrekozdE9uZDkza080SkF3dU5Bd0RHTlJ2TDI5dTlWZVRiTEdwcjEzMEl4SndBb2FZOEltbWRXOTFoY0VBYk1NUk1Nd0ZzbDdldmE3Q1cxVkgyT3l1alNqRXJDR2VYeGlFN3Z4bUlQVCticUdZUmk5N0U5L1NXL24zSFhidTFFeUtnRlQ5UG1LSjVyWWZiMlV3OVA0aG9aaEdCT3dqdk4weGlwZ04yTXk5NzdlMytKM01RekRPQ25XN2t4bnRBSVdhWm5TZll0aEdJWXhJTVl1WUlaaEdNWklNUUV6RE1Nd0Jva0ptR0VZaGpGSVRNQU13ekNNUVdJQ1poaUdZUXdTRXpERE1BeGprSmlBR1laaEdJUEVCTXd3RE1NWUpDWmdobUVZeGlBeEFUTU13ekFHaVFtWVlSaUdNVWhNd0F6RE1JeEJZZ0ptR0laaERCSVRNTU13REdPUW1JQVpobUVZZzhRRXpEQU13eGdrSm1DR1lSakdJREVCTXd6RE1BYUpDWmhoR0lZeFNFekFETU13akVGaUFtWVlobUVNRWhNd3d6QU1ZNUNZZ0JtR1lSaUR4QVRNTUF6REdDUW1ZSVpoR01ZZzJUanJMMkFZWTJRdExpNCs5c0J4WEF6RG1BOG1ZSVp4aSt3QUR3TGVEN2d2OEVEZ1hzQkY0QUpCdks0QmR3RnZCRjRKdkI1NE5mQjN3TkhpdjdKaGpBSVRNTU80Q1RhQVJ3S2ZBZnhEZ21pOTd3bmU3OGtDOWlmQXM0R1hZV0ptR0NmQkJNd3dUc0M5Z2NjRFh3ZzhETml1bnZkQm02Yml3TjBmdUQvd1NjQlhBMzhNL0Jqd0c4QTc1dlI5RFdQTW1JQVp4Z3hjQnI0TStCemdFWEdmQnorRFdubHlLRXp2TE41Nkh0ekhBaDhML0cvZ0djQ3pnTU5iK2RLR01YSXNDOUV3SnJBT2ZCcndPOEIzRU1RckNwY1dJRjh0eDJwcFBkYUxmSUNYNVZIQWp3Qy9CVHoyVkkvT01JYU5DWmhoOUhBNzhGUkNmT3JENlFoWExVUmFxR3JSNmxzOHBhakpCM3ZBZnpUd3k4QTNBZWRPOFRnTlk2aVlnQmxHZzRjRHZ3SjhKYkE1V2JocVVUcWFjZWtUc1VMSWJnUC9MY0RQRURJY0RjUElXQXpNTUNvK0NuZ21JY0dpeDFXb3Qvc0VxQkFqY2h6TXpiQVU3L0hnUHczY2ZZRW5BaSs5MVFNMGpKRmdGcGhoS0Q0RitFVTY0dFd5dXNTU3VpR0xDemtYaDhCQlk5bXZIc3RyYjlDMXlwcHV4VWZFN3laSkpJYXg2cGdGWmhpUnh4Q3kvKzRvc3dzbnhicU9IUno1dU8yekNMVVNOYlNGdGFhVzllcXhYalRPZy85QWNEOU5TT1YvK1J5UDNUQ0dpQW1ZWVFBUEphU3QzNGZDNzlkbmVZbHdIZm5TRWt2UDA3V2l0SGl0cS9WR1hPdEYzcmVtM3VPSkl2WmdjRDhCUEE1NDI5elBoR0VNQnhNd1krVzVCL0E5d1Azb2RSdDJFalM4Y2gyU1hZR0ZPOUNwNUE4WHhFZGJYU0plbTNHdEYzbWUrUHBqVkF6TmczOGt1TzhFL2cyd04rZnpZUmhEd1FUTVdIbStuakNBZUpwNE9iamhzMkRwcFlocHhkY2QrMnlGNFV2clM0UnFFOWlxMXNkeHJiK0xpSmxEV1dLZkQrNVBnZStmK3hreGpHRmdBbWFzTkI4SC9MdXdPVW04YmtTWG9SYXNmV0Rmd1lFdkV6UU80K3VPWEJBeCtWeXh2cEo0T2RqeW9SclZOa0VZdDhtaXR4bmZ0NjdXeDZqWTJEcjRid2IzZkVKTlJjTllOVXpBakpYbE12RE5sT1pPcEloNUtmRkt3a1h3M08zNnNKWkZaeGplMEJZWXdYb1M2MnRMaWRkT1hIUkc0cVQ0bWQ3SEhjQTNBbCtNRlFJMlZnOFRNR05sK1R6Q21LOEpya054RzRwNDdRRjdMZ2pYTG5BOUxydHhFWEU3SUNkMVNQeEtCR3lUS0Y0T2Rud29zbkdPYUxWUmlsNGZZb1U1RC80SjRINEtlUDR0blEzREdCNG1ZTVpLY2duNDBuSlhjNXlYaW5tSjFYWGRCOUc2NXVDcUQxTjlpWkR0a1FYc2tISU9TKzArM0FhMm8zaWRKd3RlbjRCSk5xSXNIalhnK1J6d3I0SGZWdi9NTUZZQkV6QmpKWGtjdVRDdjJsMlhoanBDaVZlMHZLNERWd2ppZFFXNFNoQ3hhMlFyVEFUc2lESUdKaGFZdUE3UHhkZUwrN0IyT2VveFk0NVN5TkxyUFBqSGdmc0k0RVZ6T0RlR01SUk13SXlWNUlubHc4NTRyMGJTeGw0VXI2dHh1U3N1V3NSMnliR3dXUVRzUEdYc1MvNS9QZGhaTDgxWTJDYncrWmlBR2F1RkNaaXhjbndZdWJxODJsMWtIcXB4WHBLNHNRZGNkM0F0V2w1M0FlK0pheEd3NjRUTXhIMUM3R3lhZ0luclVLd3Z5TEV5UFZaTWp3M1Q0OElLZCtMSEVHYUZmc090bnlMREdBUW1ZTWJLOFZoQzlsNVVGcDN0VjljNTFNa2J1NFQ0MTFXeWdHa3I3RnAwTWU3NU1xYlZFckF0c3V0UTRsNzZOWHFjV0QzUVdhZlRKL0h5NEI4RTdoOWlBbWFzRGlaZ3hrcXhCZnpqOWxOMXhRMUozaEFMVExJT3I1SGRpRmRrY2QwWW1LVGZGd0xtWU1PSHIxRUlYS3pVb2F0emJGWExJVm5FbXJVV04rT3hQZmNXem85aERBa1RNR09sdUJ2d0VmUzZENzNMUlhtMWdDVUxqRElEOFNwd05ib1ZyeEVTUGZaOVl4eVlneldmTXhGMXhpRms4Ukxoa2hUN25maDUyM0cvV0laU0w3SERZK0tISE43eW1US001Y2NFekZncDdrMllHTEp5SDZiRnErb2I1QmhZYllWSktuM2FkakdCdzZzRURsZG1GYTRSUkV6cUpCNzd2RitMMXc3UkZSbkZLdzJNcG55di90NHBwZjdoaEFIYTc1emZLVE9NcGNVRXpGZ3BIdGovVk8xQ2xCaFlzd0lIc091Q1lPMFIxdnZBZ1l2eEx4K25XWEdWZ0luNFZPSWxZOE4wVlk5OVg2YllweUxCdnVzK2xBUHdPM0hpU3hNd1l4V3dDUzJObGVJRDI3czdhZlNVMDZSb0sweGlYUHMrMWtLa08wRmxzWWhMVW9vQnk4U1hMZ3VlL3V5aXJxTDZuTDVwV3REYkc4Q0RidnJzR01hd01Bdk1XQ251MWQyVk1oQmQ2VUxVeVJ4MUJmb2tXRDRJVVV1d2pzV0ZHUDE3enNkdEgxeCtOMkxjcTFYZHZoWkNQV056eCsySmNpRzY5akVheGlneEFUTldpa3V6dmF5dXlGRllaQzZYbVpKTXd5UEs2dk1pWGtWbEo5ZDlUaEpHK3Baa2NhbTV4VHF1US9XZEhjREZHYytGWVF3ZEV6QmpwZWhwM0gzODAzTE5GWXUyMG5ReWhRaU02NHBNOFhuVjY0L1Y1Mm4zWlJKUStWemZGYTFtRnVLRVl6U00wV0V4TU1OUUxyZ1R2SDZXOXpSRngwMFFIOE13WnNjRXpGZ3BkaWM4NTBwaGF0WWo5STN0T01iTHVWd1ZRMWVPTC81RkhMQ2NudmZkSXIyNjN1R2F2TlkxUHV0bWp0RXd4b1FKbUxGU1RFZ3YxOEpTQzljNnNPSEtrazZwdEpNUEZUYWtUdUdhS3dXc1dFU3dmUDdjb3U2aDY5WStYS2NVemo3ckwrMnpGSHBqVlRBQk0xYUtOM1YzdVdwYkMxaFJsOURId2NZdUREamVWTXVHVjZManM1aTV4bWV1T1NWZXJxeDV1T2xoMDVYMUQzVVIzOXBhNjRpWmJ4K2pZWXdTUytJd1ZvcS9iZTl1Q1UyckxxRk1SQ25WNUxjSjQ3YTJVT256bEJVNGRLSGVOWUxBYlJDc3JTU0s1SEpSV3o3L1B4RTJiWTIxaEN0dEh3R3ZPdkZaTVl4aFlnSm1yQlF2SXpUeTBmV2dweVBSQWxaWGhCZUJrVWtvenhGQ1RlZFFBNDZkcXI3aDgrZUx1R2hYNUtZUHl6WjUyYW1XYlJmRVRGZWtyK2NGSzZ3dkIrNWR3S3ZuY2FJTVl3Q1lnQmtyeGR1QXY2T295S0ZGVEZ0ZjZ3UjMzcGJ2aXRkNXlva3JieERGaTV6eTdsemVKOFY4NjRLOTJ6NS9wbnp1T1VJUjN4MmZyVEx0VXB6b1F2eHpMSW5EV0IxTXdJeVY0ajNBQzRFSHg4b1ljWGZMaFNoeEw3Ryt6dEV1OVZRVTJxWDhUSmw4RWtMc2EwTlpYanNpWGc0dWVMaEFYczdINThSTktRSld4OE02L0VIOE1vYXhDbGdTaDdGU0hBRi9SREVRUzZmTk80TFExUEV2Y2V1ZEo0cU1DK09GTHdJWFhSUWRsT2hFNjJyTHhjV1hsdHdPY0Q2Kzd5TGxPb2xZZkozRXcwVEFhaGRpc3NLdUVzVFpNRllGczhDTWxlTjNnZGNScGxXSjZEaVY5OHFGU0o1ODhoeXFicUZ2MUQ1RVdWOHg3ZjFRdVJEWFl6eExyRG14dWk3NlVPSHFJbmxkaUNGbE1rY3RYbklBN3ErQWw4emxEQm5HTURBQk0xYU9WeE5jYlU4czNZaFF1aEUzQ09JakUwbldWZVpiTlF0MUFvZDh4aEdBejhrYk8yU0w2MUsxWEhSQjBDNHdtd3V4RUxGZkE5NDlsek5rR01QQUJNeFlTWjRPZkE1QkdTampTV3NFVVJNM29pN2tPNjN3YmozUDEyRjhEa0w4YTh2QnVTaFFsd2h6VDE1MmNObUg3VXUrNjQ2VUpJNldlQ1hlRHZ5UFd6d25oakUwVE1DTWxlUlBnZWNEbjVxdHNMcUVsQmF4TGRyVjZmVzZ0cjdXQ2ZOOUhjWHFHL0k1NTRqV2x3aVhpQmNxbmhhVE9Pb3N4R2JzeTRIN1NlRDE4ejlOaHJIVW1JQVpLOGtoOEZUZ28rbFViNjhGVEZlSjd5d3FWZjdZbC9OOXJRTUhNVDRtQXJidGczVjFrV0J0WFVhSkZ5RXVKdGFYaUpkT245Y0pISW5YRWl4S3cxZzFUTUNNbGVVUGdXY0QvN0pyaFlISzBIWGR1YmlTRmVaTFFkTVcyQ1loNVY3UzZDV0I0M3lNYzJueFNnSkd6ajZza3plYXNTOEg3dW4wVmhneGpGRmpBbWFzTEVmQU53TWZDOXkvSzJJaVlENldmbW9KV0cyRlNVS0lESUxlOXcwQjg5MEVqcFo0YmNXa0Q1MDZYOFMvSExnWEFOOHoxN05pR01QQkJNeFlhZDRBZkFQd1l3Uy9uVUpuSkVKWHdKS1FLZkVTQVZ3bmlNOEJwUXR4SnlaeGFBRnJpaGRWZ1dEMWZSSnZCYjRXdUQ2UEUyRVlBOFFFekZoNW5nMDhEUGhQcFJXbXkwdEJHUS9iaXVzamx3WHN1SHJQSmtIQUNndk01eVFPV2VveFh6cHBvNVYxNkFDT3dQMG40RVZ6UGhlR01TUk13SXlWeHdQZkJqd1ErT3orZUZpZDFPRXB4ZXRZdlg2ZElFUWlZQ21KZzF6elVLeXVPbW1qRnE5bTNPdXB3SS9POFJ3WXhoQXhBVE1NUW1YZUx5T294K05uVCtyUWxwY2VFQzFscUE0cEJVelM2RVhFSm9sWGI5TEc5d0gvZVg2SGJoaUR4UVRNTUNKM0FsOUtVSXBQYjQ4UGMrU3E4blV5aDQ4dmNqNEwyQTFLQWRzazEwSVVJWnZtTml6RTZ3ZUFyeUVvbzJHc09sYk0xekFVN3dEK0JmQkQ0V0ZIdkNpbld4R3JLazIzNHJON3NGTW1pakpob3hBdjE3VzhpdGpYQWJodkJyNktrSnR2R0laWllJYlI0UzZDTy9FVmhNU08yOXVWT3VwNEdPcjVEZkkwS3lrelVhWlRJUXRYSytPdzR6WjhJN2l2QTM3cXRBN1lNQWFLQ1poaE5QREFkeEZLVG4wSDhCSGcxc05UMm12aFZma29JYzBsUmtpaFQ1bUpQbGZWRUpkaFBWRmxZWFVkQXM4SDl3M0EvNW43RVJyRzhERVhvbUZNNEFYQUo0SDdzWEszaU14NnJESXZnclZOT1h1elR0U1FWSGs5eDFkdjBzWU5jTjhCUEI0VEw4UG93d1RNTUtad0RmaXpibEpGcW81UmlaaU9pZW1FRGRtdWF4dzJrellPZ0JjRUlUTU1vd2R6SVJyR0RLZ2JSYWZXUzlVTm9udFFoRTFQY0NrdXhEb0pSSytiUlhvM1QrRTRER05NbUlBWnhzblI5UktQS1VzOUhRTnJWUUZnL2ZwYXNKcVZObHdsWm9aaGRERUJNNHdaY1RSbmNKWXFIZkpZRWpaYTJZbmFFdXVNODhMRXl6Qk9oQW1ZWVp3QUpXSzZYaUprSVpQOXZ2MzI1aUxQbVhnWnhna3dBVE9NRTFLSldQVlVSN3pxMTNWRXEvRTVobUhNZ0FtWVlkd0VsVHV4SldUUUhRQmRQKy9VRGhNeHd6Z2hKbUNHY1pOTUViRytmWjM5Smw2R2NYT1lnQm5HTFNEaU0wWElwcjdmTUl5VFl3Sm1HSE9nSVdSVFgyc1l4cTFoQW1ZWWM4VEV5VEFXaDVXU01nekRNQWFKQ1poaEdJWXhTRXpBRE1Nd2pFRmlBbVlZaG1FTUVoTXd3ekFNWTVDWWdCbUdZUmlEeEFUTU1BekRHQ1FtWUlaaEdNWWdNUUV6RE1Nd0Jva0ptR0VZaGpGSVRNQU13ekNNUVdJQ1poaUdZUXdTRXpERE1BeGprSmlBR1laaEdJUEVCTXd3RE1NWUpDWmdobUVZeGlBeEFUTU13ekFHaVFtWVlSaUdNVWhNd0F6RE1JeEJZZ0ptR0laaERCSVRNTU13REdPUW1JQVp4Z3djTGZqLytUUDRuNFl4TkV6QURHTUdyckZZUVRrRXJpL3cveG5HRURFQk00d1plQU93djhEL2R3MTQwd0wvbjJFTUVSTXd3NWlCbHdKWEYvai8zZzY4Zm9IL3p6Q0dpQW1ZWWN6QU80Qy9YT0QvK3lQZ1lJSC96ekNHaUFtWVljekl6eXpvL3h3RFA3ZWcvMlVZUThZRXpEQm01TGVCbHkzZy8vd3U4QmNMK0QrR01YUk13QXhqUnQ0QWZEL0JRam90ZG9HbkVwSTRETU9ZakFtWVlaeUFId2QrNnhRLy81bW4vUG1HTVNaTXdBempCRndIdmdKNCtTbDg5dThEM3dqY09JWFBOb3d4WWdKbUdDZmtsY0FUZ2IrYjQyZStFUGdpNE00NWZxWmhqQjBUTU1PNENmNE1lRHp3ZTNQNHJKOEhQaE40OVJ3K3l6QldDUk13dzdoSlhnbzhBZmgvdURuTDZmWEFrd2lXMTF2bStMME1ZMVhZT09zdllCaEQ1aDNBVTRCbkFWOENmRHp3RU9CQ3ordnZKS1RpUHcvNENVeTRET05XTUFFempEbndTdURyZ0R1QUR3WWVBTndYdURzaDdmNGR3T3NJY2JPL0JxNmN6ZGMwakZGaEFtWVljK1FkaExqWTc1M3QxekNNbGNCaVlJWmhHTVlnTVFFekRNTXdCb2tKbUdFWWhqRklUTUFNd3pDTVFXSUNaaGlHWVF3U0V6RERNQXhqa0ppQUdZWmhHSVBFQk13d0RNTVlKQ1pnaG1FWXhpQXhBVE1Nd3pBR2lRbVlZUmlHTVVqR0xtRGVnOWZyQ1l0aEdJWXhJRVlyWVA3a29tUWlaaGlHTVNER0ttQzFHQ1ZMeTAyd3ZQcEViLzAwdnFGaEdNWUViS3FRNll6cUhQbXVLT25ITFZkaS9acldZN1pPNWRzYWhtSDBZKzNPZE1acWdlRzZBdFZaM0dRaFMyd0JtNmY2YlEzRE1Fb3VUbjlKYjl2V2lQMlBrakVKV0cxRnlYcnFqMHo3QjA3N040RzduY3BYTmd6RGFITkh6LzZiRWFXYnlBa1lCR01Sc0VLOFhGZWNqdFc2WHZUenpRdGpFN2o5TkwrOVlSaEd4WHUzZDAvcWJFK004ZmU4ZDlDTVJjQ0F3bTBJcFdEMWlaZCt2bllucHMvWkFkNzNWTCs1WVJoR3lmMjZ1L3FTMDlMMnRCaS96NjhaQldNUXNPTEhhRmhmM21XaE9sTExKQ0VyMkFadkFtWVl4aUo1Ly82bittTDVzOGI3UjhPZ0JjejEveUNGKzlCbjhlb1RzYjRmSGdnbjZVR25jd2lHWVJoTlBpaHZ0cnhET3BiZjhqTHAwRWlMVVFqYW9BV3N3b3Q1ckhvYng2NFNMMWNLbUJhMVk5cVppUUE4QUJzUFpoakdZcmdNM0tlN3V5TmVibnA4Mzd2UWlSK2xGVFlXQVVzL2loWXZzdldWTEMvZkZiRENuZGlYbWZnZ2VvT3FobUVZYytYK3dQdjFKMkxVM3FXMHVJYVFTWnNtc2E4Sm5xdkJNUllCQTVwanYrclkxdzIxdEVTc053RDZZT0RlaXpnSXd6QlduZzhBN2xudTZndHpGR0VSNmFDN1V0QlNPOVlRcjBHTDJaZ0V6TWMvS1lrai9saGF2QW9SYzZXUVRVcm04RHZnUDN4UlIySVl4c3JpZ0VkVE5NNjFoMGwzek91NHZoYXkya0x6cW4yaytzeEJNaVlCZ3lyK3BkMkhybXVCSGZxMk5kWks2Z0RnVXhaNElJWmhyQ1k3d0NkMGQyczM0RW04UzhjdUxMNHh6R2l3d2lXTVJjQmFQWXJhdkM3RXExckxqejR4cGY0ak1UZWlZUmlueThNSklZdUlib2ZxaEEzZE1aOG9ZajRudGRWQ05tZ0dMMkIxM0V0bElrclA0NWhzVWgrNklGcXkzSWo3YWhIVEthanBBcm9kL1ArMXlJTXpER1BsK0F4Z3ZSSEdvQ0ZlUG9kQ2RHZTgyU2x2dVErSHp1QUZyRWIxTUx3UFAxcGhnZmtzWGdmQWdTdGRpYnJuMGtub1dBTStGZGhlNkJFWmhyRXF2RGZ3VDhwZFdyZ0tyNUxQYlpvSVdCSXhIZC8zMGZLQ3pxRG53VE0yQVNzU09WUW16aEhoUnkzRWl5QmUrb2N2L01ZMGZ1eVBCajVrZ1Fka0dNYnE4TkhBUS9wVDUxc2hrY1BHMHJIQ2xJalZuenRveGlaZ0VIc1pUbFhncUN3c0xXTDdLREZEQ1pudnhzSTh3RzNnUDNmQkIyUVl4dmpaQUo1SW1nZXNsUzR2UzZjdGMrVTZ0V002bEtJenRCbkptTEF4Q1ZqNlllbzRHTEhINGt2cnE3VjBMREZLQzh3RGZBRnczMFVkbFdFWUs4RWpnVS9waVh2cGRveHVSL3pBeDg2NHo1NGxjUzlLWjl5UExZRURSaUpnOVk4aVl5VWtCcVl5ZGVSSDM2K1dXc0RxQUdnbm1lTkpDemd1d3pCV0F3ZjhlNHB5ZFVYc3k3Y0ZiS2FPdU10dDRhamlYekFTQWF1b2c1V1N5Q0hCVGYxREZ5TG1UbUNGL2QvQUJ5L3FpQXpER0RXZkRIeGlsVkd0bGxiY0s3VmZydDBSTDhJaFBlUEFCcy9ZQkN4ZEFHcmNRMkdCK2VySEIvYmlzdThiUFppcXRsajYwZThOL3FzWGRGQ0dZWXlYODhEWEFwZkN3NzdZbC9ZaTFaM3ZQVW9ST3lSMDFvdXlVbWFCTFRIVmVMQ21HMUVGT3ZkZEZpNzU4V1d0UlN5VlpLRjdZZkg1NEIrM3NDTTBER09NZkFudzBWUEdmS0hFeTNVNzM3b2RFMC9TRFI5RUxMa1A2MnIwWTRpSGpVYkFLcEliVVExa2xoLzAwTWVncHhLeFhhcUxnR3lHaXdYWHFkQ3hBWHc5Y01lQ0Q4NHdqSEh3SU9ESitXSEwrcXJqOTVLd2tkb3VyOW91RjU2WGdnM0pBaHZqVkNvd1RnRnJaaU1TZmtpZGlianZ1ejJZcG9qNS9na3dlUlQ0YjFqbzRSbUdNUWEyZ0c4Rjd0ZHZmZFZ4cjJSNXVkenhsczczUGprTW91UDRyZko0b3hHeVVRblloR3pFVkhhRnJodHhGOWgxall1QmFJclRMVE5WWEFoUEF2LzRSUnlnWVJpajRjdUJKN1FUTitvQnl6cnVKVmFYdEZkRnV5V0phTDUvUENzd0R2Y2hqRXpBS2pwK1pGVXo3TUNYcHZpdWgrdVVGMFFuSGtiUHZHRmJ3SDhESHJxd1F6TU1ZOGo4RStBYis4VXJWUTlDaVZlTWZVbjdWTGRYT2hHdENIMzRVcnhHSVZ6Q1dBVXNYUkRhQ2tPWjQwNkpGL2xpdUE1Y3I2eXhJaDVHanl2eC91Q2ZCdHh0UVFkb0dNWXd1Ui93Tk9EdTVlNmlzKzI3cnNNOVg0cVhMQ2wrSDl1ME5KWlZFdERHVnY5UU16b0JhODE1bzVNNW5MTEE2SXBZY1dHNE1pWlcxMHpzdUJJL0R2d1BBeGRQL1NnTnd4Z2k5d0tlQlR4NHN1dFF4S3NlN3ROcHAxd1dzWDJmUzBsSkNuMW4rQStNeDMwSUlaRnVyT2dMUk1aQmFML3lBYUhYc2dWc1J4ZmlkdHlXOVJhd1NUaFBHd1RCbDhXcC95VWRBZmRaNE44RjdzdmpQekVNd3dDNERmaGg0TkZkOGVwTWtVSVo5eExodWdaY2MzRE5oKzNyMFNyYmMxSEFZcEphbi9VMUd1RVNSaWxnTG1RZmlzQ2tpOFRsUXBpSDBRTGI5TGxuczEwdHRYaXQweFV3V2ZTRjRmNFYrTHZBZlZQOFlNTXdWcHZMd05PQlQ1MGdYcFRpcGEwdWJYa2w4VUs1RUwxeUg3b1ZTTjRRUmlsZ2lxWVY1c3FMWkpOd0VXdzFsczI0YkRoWTkxbkVSTGcwMmgzcnZocjg3ZUMrRXJoNktvZG1HTVlRZUIrQ2VEMnU3VGFzWFllZGpFT2k1VVZvU3E2cDVUcmRZVDhyWTMzQitBVk02THRRMWdrLy9nWlpyTGFxOVNhdzRVc0x6S0hjaHVyL0ZDTDJSZUF2Zy9zM3dEdFA1N2dNdzFoaTNoLzRjZUN4czhXOHRPVzE1NEtMVUF2V1ZiS0lTYktaV0Y4SHhJa3NsZlZWeEwvR1puM0JpQVZNdVJGcks4ejVVc1JFd0hiSmdyWHBnbnRSdXc5bHFTMndpWmJZWjRKL2IzQlBCbDQ4MzBNMERHT0orV2pnZTRFUHZybXhYdGQ5am50ZEJhNVFXbUFwL2tVNXM3eXVIRFJxNnd0R21JV29hV1Vra3NkWjZJdEdaL2hjQTY3NmZOSEloWk42UG5USGlmVlZyL2NBSHdYK3VlQy9nSzdhR1lZeExqWUo1YUdlQS80RTRsVm5HbDV6dWQzUmJkQlZsUFZGdCtCQ1BlNExHS2YxQlNPMndDcmt4enQyUVVPT0FLZEViRjFaV3hzdXV3elhYZHQ5MklxQjFSUnV4dnNBUHdiK1E4SDlWK0N0Y3p3NHd6Q1dnd2NDVHdFK3I3L3o3T2xtUSt0c1E0bDUxWjNvWklHNVBNeEhKckVzU2tlNUZiRytZQVVFck1wSWhQRGpFdDJJYTRRZmY4M0JtZytQSlZsam5USnhZeFlCMHhmTFdyVm1MYmdTL2NlRCt5L0Fjd2hYcm1FWXcrWThZYWIyL3dDOGY3ZnFoYzQybEV6b1BnL1FWZUNxQ3dKMmw0TzdQRnh4Y0NVSzJqVmZKbThVaVJzMHhHdXMxaGVzZ0lBcDZoNlJqTHR3WG9rWFdiRHF1TmRKeE10VFRLNWF4c3dlQnY2bmdlZEVhK3hQYi9YSURNTTRNejRSK0JyZ0U5cFcxelMzWVQzTzZ5cEJyTzRpaWhkS3ZDaXJiNlRZVnlOMWZpVllDUUZySlhTNGZFRzVlQkU0WllXSmdLMFJyRFBucDdzTysxSmt0UUFXWCtzendEK2FJR1RmQjd5Q2FCNGFockhVYkFBZkRud2w4Q2toMjFpbzI0RmluQmVUWSsvaUtyeXJXblFDaDFoZmRmeTk2VG9jcy9VRkt5SmdEVkpNTEpyZWp1eVBkclZnVFJDdjJrV2cxejRLcDRpWXB6R0c3Sjdndmd6OHZ3QitIdHh6Z044alhMR0dZU3dYbDRDUEF6NGYrSFR3cWdIdFM5Wm9WZGpvdGJ5QTk4amlzZ1ZXaUpmTFphTnVVSmFOV2lueGdoVVNzSVlWQmpHdFBsNWM4a1FTcTBySW9CU3cxb1ZhQ0ZrMDZUZm9GN0gwZWVmQi9Rdndud3Y4T2JoZkFYNFJlQjJodTJVWXh0bHdIbmd3OEFUZ1k0RVBCYitWbis3enZCU3pLZnV1NWJWSFY3enVJb2hYNFQ0a3hNU3VreWV2TEtaTWNTdm9PaFNjOThNOVp1ZE9ucFR1U3pGeVJMZWh5NW1JTW9oNUJ6Z0huSGR3MFljYXZaY0lWV0Z1aSt2TERpN0g1eTRDRndqWCt3NjVKSlZVOGtpWmpmSi9LWVdzSTVLN3dJdkIvU2J3RjhBcmdkZGlnbVlZcDhsRndnRGtEd0FlUlloeGZSRDR6ZkpsMDRUcldGbGRuUWtwVWVJbENSdFVBa1lVc1BqOGRSY0VMRlhkaUlPV2F3RzdLZXRycURxd01oYVkwTERFanRVRDUwcTNJY1RuYXRPTjBzbzZjbkU3WHJUaTd6NGlpcGl5eG83cHQ4WUtSVDRIN2lQQmYyUjgwMnVBMXdPdkJmY0s0Rlh4OGR1QU84aytpV0ZlaW9heEdCeWhaM29PZUMvZ0RzSVVKdzhBUGhEOFB3RHVDL3lEN2x0OVk2MkZ5NVBkZWRwbFdNK21mRDBLMGxVZkVqUlMzRXU1RGU4aVp4MUt4WTAwUCtFOHhXdklySnlBVlhTU09rU3NSTENpRzFGZTJPbHBpWEQ1OHFMVjVXR09DQmJkRWJrNGNLdXlSNnZDaDN3ZDFvRDdnN3QvK2IwTnd6Z2Q2bnVzVDd3NndrVTNXVU83RFhkOXJLYmhvK3RRaTVhdnhueWhDaWU0bUxUaHk2U05sUlV2V0ZFQjZ4a2J0b2F5eGlvUjAxZEZJV0MrdkdEMWNxaTJkK0s2VmVGKzBqaXpRc1NxYmNNd1RnZmYyTzRUcmxhV1lWMGFTcnNONjdqWEZkOGRySHpWWmN0TGkxZEttYWVjazNCbFdVa0JnNDRyVWRiSFVPNVU0dVVwTXd1MW43dnVkZWxGVEg2Wlowd3EzVytvWmIxSzRXOGxlclFTU1F6RG1EKzFnTFVXOGI3b2NJRysvdzlpdHFDdXNLSEZLNVdKY25tY1Y2cTA0ZFZnNVlaNGFmRk0zM2ZWckM5WVlRR0RpWm1KVFJGempVRHRCUEU2MElzUEx2Y0R5dVFPV1NTQlJJOC9heVY2UUNsZ0ptYUdNUi82cks1aWNUbGMwUEsrNlB0KzN5dTNJV3BDU2tvQms1SlJlb3FVWFJkalhqM2lwVE1PVjFhOFlNVUZER1lYTWFMbEpkdjBEMUFzTHVKcTJWRkxaODR4K3F0LzlGWEFOd0V6alBuUXRMcHFqNHN2Ny9sV3gxVzdETVZ0S1BVTnBWUlUzOXhlMXduQ1ZReFU3aEd2bFkxN2FWWmV3R0EyRVZQUEZiMHd1ajJ3T25BckYvTjVjdkxUSGxIRW9tdFJpOWlzc2JGQ3ZKeUptV0djQ0Q4NVVjT1RLN3ZyT29ZdHEwdUVxNTZJc25ZZGFpdE1QNWJYN2JteVFPK2hMNmRITWZHcU1BR0xUQkF4cnl3d3VlZ0xWNklFVlgwcFlKSXlxMTBKNTlTeVF6c3VOczBhYTdvVVYvb3FOb3hibzlkbFNCWXQzVms5Y2tGYzZ2dTlLVjR1Wng1ZTE0dUxyMUh0dzRGWE15dTdPRDBLWmNLR2laZkNCRXpSRURGUEVJNGpjUi82N0ZiUWNiRFVHNHNYZHUwK2xJdjVISG1nY3hJeFNoSFRBNTlGeU5ab1cyUFFiM21aUldZWUpYME5ma3ZBV2xiWEVibjZleDNuRm0rTEZOcE5BdWF6RzFIaVc3dStFaTVabkhJWitqek95eEkyZWpBQnEyaGtKMHE1cVU0MklsSElWQ2FpQ0ZrZHlCVzM0VG15a09sNG1CYXhUY0xBNTQ0bEZqTVZXekV4TU1FeWpKdWhJMTZORU1Ha1JDM2RVZDF6ZWRCeEVpcVVpNUFzWFB2RURFTWZPNzZvc2FPK084NHJmVmNUcjR3SldJTytGSHVWaFZnSGR0TkY3ck9BSFVaLzlyNFBGL2FlaHgwSDUzeHBnZlZaWVRvbXRrSElWS3dUTytMWExkYUdZY3hHUnhoOEtWNTFqSHRTb3RZZTRWNFhvZHJ6T2E0bGorVjFPanRaTERweFRUYXJhMkRpMWNRRXJJZWVtQmlvNUE1eVptSzYyS1A1ZitqRFJha3RzWDFDekd1WHR2VWxBbGFuMkNjcnpIVkZ6S3d3dzdnNWZMV2RPcVhLQW1zVktTaGNoMnFzVnhLeHVKYUVEQkd1QTUyZ29TMnVScUpHYzBabEU2OHVKbUFUVUNJR2plUU9ueS84T3Buamhxc0VqT0F1MkFKMnZCSXQxMDNrU0FJVzQyQ2JCQUhiOEpPekVodGYzekFNUlVzQXRJVWo5N1ZPM0tncjdFaVNoVmhRK3Y1T1loWmRnNUtabUdvWStrcTQ1UDhvbDJFbldRTk12UG93QVp1Q1hEaU41QTVYeGNGMDc2Mk9pUjBTTHVndHdrV2R4TXJuN2Ewb2NGcyt4OEZheVJ5cG1yMmpLRHBzZ21VWUowTzdEb3ZrRFVmdlFPWGVZZ1dVcnNFa2RNb2pvK2Z2a2dMZ1IwNkpKNWpMOENTczNIUXF0NEx2dXV2cVpZMlFhQ0h1UGtuQVNPbnhMaVpvdUN4VU91WWxqemZJRnRnc0tmVmdBbVlZSjZXVHdFRi85cUdJajR6UFNrS21VdW9QOUQ2VWFKRXpDOFZUMDNJVm5wblZOVlFkTUFFN0lRMFJrN1VqV0VSaUdhMlQ1eG5UbVlTYlpHRVNZZHVrSEFNbTJ5SitmZFU1Z0RRRmpHRVlKOFEzQmkvVGI0V2xOSHBLcTZ3dTNxMlhvMXE0Vk55OEZxMHpjeGtPVlFkTXdHNlNXWVFNdGNRVWVKMk1JY0pVWkJycWJTMStyaXoyYTFtSWhuSHIxTUtoWFhtdFl0M2krcFA0bFhZSnBuMlZZQ1ZyYXhtRlN4aXFEcGlBM1NJOWJzVzBMUllaV1h4U0xNdm54MXJZdEhDSkJWY25iNnpSRUM2enhBeGpObndwRkMwclRJOEgwNVU0a210UnhFMkozTEVTTDEzb29CWXVxdTB6ajNVTlZRY3NpZU1XbVpDcENIbkFzMU1YOGJIUFNSZ1NMOVBXVlNGWXZyVGlKR21qbFgzb2hua0pHc2FaVVl1WUpFNGMreXF0bnJLWXJ3eVpxZDJOK25rdGhMM0NGZitmM2JvM2lRbllIT2pKVk5Ra0lTTlc5aUJhVWJISDVweXlzSlNnYVd0cnphdDRsNGltV1YyR2NldjRMRjQ2SXpHSmtNL2J0WFdXc3BCZHRyWmFTUmttWEtlQUNkZ2M2UkV5RVM1Wml3ako4eW1qVUFSS3VSM1Rmdkp6aGV0UTNRRW1aSVp4TWpvZWszaVRKaEZ6YWwzdE82NzNxK2Zrc3pzeExqRGhtaWNtWUtkQUpXUnhNeUZDRmwrYXF0M1hyc0ZrYVlsdytmdzYyVERSTW93NTRmTjlXMXRqTklTczJKYy9vcmxHdmQ2WUl5WmdwOGdFSWF1dE1naENWYXg5OTdraWFTUysyVVRNTUc0QjN4Q1dsaWk1YWcyZGppbVlhQzBVeTBKY01MNHRPSFVtWTkrK3ZzZUdZY3lIamx2eGhOdkE4SVJycURwZ0Z0aUMwUmYyRkJlakw5ODI2OGNiaGpFRHM3Yll6YVNzMWd1SEpscGp3QVRzREtrditCNUIwNCtuQ1pUZFFJWXhINmJlU3laWVo0OEoyQkxSdWlFcWw2UGRNSWF4WUV5b2xwZEJ4OEFNd3pDTTFXVnQra3NNd3pBTVkva3dBVE1Nd3pBR2lRbVlZUmlHTVVqK2YrUEpmUGVjYXFwS0FBQUFBRWxGVGtTdVFtQ0MifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMy0wMy0yOCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6ImF1dGhlbnRvbjEgLSBDVEFQMi4xIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVMkYxMDAwMjAyMzAzMjgwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMy0wMy0yOCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIzLTEwLTAzIn0seyJhYWlkIjoiMDA2NiMwMDAxIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWlkIjoiMDA2NiMwMDAxIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkNBUFkgVUFGIn0sImRlc2NyaXB0aW9uIjoiQ0FQWSBVQUYiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MywicHJvdG9jb2xGYW1pbHkiOiJ1YWYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X2RlciJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfc3Vycm9nYXRlIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInRlZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJ0ZWUiXSwiYXR0YWNobWVudEhpbnQiOlsiaW50ZXJuYWwiXSwidGNEaXNwbGF5IjpbImFueSJdLCJ0Y0Rpc3BsYXlDb250ZW50VHlwZSI6InRleHQvcGxhaW4iLCJ0Y0Rpc3BsYXlQTkdDaGFyYWN0ZXJpc3RpY3MiOlt7IndpZHRoIjozMiwiaGVpZ2h0IjozMiwiYml0RGVwdGgiOjEsImNvbG9yVHlwZSI6MywiY29tcHJlc3Npb24iOjAsImZpbHRlciI6MCwiaW50ZXJsYWNlIjowLCJwbHRlIjpbeyJyIjoyNTUsImciOjI1NSwiYiI6MjU1fV19XSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZ0NBSUFBQUQ4R08yakFBQUtuMmxEUTFCcFkyTUFBRWpIbFpZSFVKUFpGc2Z2OTZVM1drTG9FSG9UcEJOQWVnMWRPdGdJU1lCUVFrZ0lLalpVRmxkZ0xhaUlnTEtnaXhRRjF3TElXaEFMdGtYQUF0WU5zaWlvNjJMQmhzcCt3Q1B1dnBrM2IvWmt6bmQvYytiY2M4Kzl1WGZtRHdCNWtDMFVac0FLQUdRS2NrUVIvbDZNdVBnRUJ1NHhnQUFCK1JrQUZUWkhMUFFNRHc4R2lNMk4vN1IzZDVCc3hHNWFUTmNDLzg0VXVUd3hCd0FvSE9Fa3JwaVRpZkJ4eERzNVFsRU9BQ2pFZ2Y3eUhPRTBseU5NRXlFTklueG9tbE5tdVhPYWsyYjUxa3hPVklRM3dxTUE0TWxzdGlnRkFOSmJKTTdJNWFRZ2RjZzBoSzBFWEw0QVlSK0UzVGlwYkM3Q0JRalB5OHpNbXVZakNKc2svYTFPeWo5cUpzbHFzdGtwTXA3ZHk0emhmZmhpWVFaNzViODhqdjl2bVJtU3VUWDBFU2VuaWdJaXBzZnBjMHZQQ3BLeElDazBiSTc1M0puOEdVNlZCRVRQTVVmc25UREhYTFpQa0d4dVJtandIQ2Z6L1ZpeU9qbXNxRGtXWlVYSTZ2UEV2cEZ6ekJaOVcwdVNIdTBwVzVmSGt0WE1TNDJLbmVOY2Zrem9ISXZUSTRPKzVYakw0aUpKaEt6blpKR2ZiSStaNHIvdGk4K1M1ZWVrUmdYSTlzaisxaHRQSENmcmdjdno4WlhGQmRHeUhHR09sNnkrTUNOY2xzL0w4SmZGeGJtUnNyazV5R1g3TmpkY2RqNXA3TUR3T1FhUndBYllBV3RnQldKemVDdW03elR3emhLdUZQRlRVbk1ZbnNpcjRURllBbzdsUElhTmxUVVRnT2szT1BzWHZ4bWNlVnNRSGY4dGxvMnM3ZlFiY2hjUGY0c2xDZ0ZvM1FVQXZmcGJ6RkFYQVBrU0FOcWxISWtvZHphR252NWdBQkhJQXhwUUE5cklIVElCRmtoM0RzQUZlQUJmRUFqQ1FCU0lCMHNCQjZTQ1RDQUN5OEZxc0I0VWdtS3dEZXdDRmFBYTdBZjE0REE0Q3RyQUtYQU9YQUxYUUMrNERlNERLUmdCejhFNGVBY21JUWpDUVJTSUNxbEJPcEFoWkE3WlFFeklEZktGZ3FFSUtCNUtoRklnQVNTQlZrTWJvV0tvRktxQWFxQUc2R2ZvSkhRT3VnTDFRWGVoSVdnTWVnMTlnbEV3R2FiQldyQVJQQjltd3A1d0VCd0ZMNEZUNEd3NER5NkF0OERsY0MxOENHNkZ6OEhYNE51d0ZINE9UNkFBaW9TaW8zUlJGaWdteWhzVmhrcEFKYU5FcUxXb0lsUVpxaGJWak9wQWRhTnVvcVNvRjZpUGFDeWFpbWFnTGRBdTZBQjBOSnFEemthdlJaZWdLOUQxNkZiMEJmUk45QkI2SFAwVlE4Rm9Zc3d4emhnV0pnNlRnbG1PS2NTVVllb3dKekFYTWJjeEk1aDNXQ3lXampYR09tSURzUEhZTk93cWJBbDJMN1lGMjRudHd3NWpKM0E0bkJyT0hPZUtDOE94Y1RtNFF0d2UzQ0hjV1Z3L2JnVDNBVS9DNitCdDhINzRCTHdBdndGZmhtL0VuOEgzNDUvaUp3a0tCRU9DTXlHTXdDV3NKR3dsSENCMEVHNFFSZ2lUUkVXaU1kR1ZHRVZNSTY0bmxoT2JpUmVKRDRodlNDU1NIc21KdEpERUorV1R5a2xIU0pkSlE2U1BaQ1d5R2RtYnZKZ3NJVzhoSHlSM2t1K1MzMUFvRkNPS0J5V0Jra1BaUW1tZ25LYzhvbnlRbzhwWnlySGt1SExyNUNybFd1WDY1VjdLRStRTjVUM2xsOHJueVpmSkg1Ty9JZjlDZ2FCZ3BPQ3R3RlpZcTFDcGNGSmhRR0ZDa2Fwb3JSaW1tS2xZb3Rpb2VFVnhWQW1uWktUa3E4UlZLbERhcjNSZWFaaUtvdXBUdmFrYzZrYnFBZXBGNmdnTlN6T21zV2hwdEdMYVlWb1BiVnhaU2RsT09VWjVoWEtsOG1sbEtSMUZONkt6NkJuMHJmU2o5RHYwVHlwYUtwNHFQSlhOS3MwcS9TcnZWVFZVUFZSNXFrV3FMYXEzVlQrcE1kUjgxZExWdHF1MXFUMVVSNnVicVM5VVg2NitULzJpK2dzTm1vYUxCa2VqU09Pb3hqMU5XTk5NTTBKemxlWit6ZXVhRTFyYVd2NWFRcTA5V3VlMVhtalR0VDIwMDdSM2FwL1JIdE9oNnJqcDhIVjI2cHpWZWNaUVpuZ3lNaGpsakF1TWNWMU4zUUJkaVc2TmJvL3VwSjZ4WHJUZUJyMFd2WWY2UkgybWZyTCtUdjB1L1hFREhZTVFnOVVHVFFiM0RBbUdUTU5VdzkyRzNZYnZqWXlOWW8wMkdiVVpqUnFyR3JPTTg0eWJqQitZVUV6Y1RiSk5hazF1bVdKTm1hYnBwbnROZTgxZ00zdXpWTE5Lc3h2bXNMbURPZDk4cjNuZlBNdzhwM21DZWJYekJpeklGcDRXdVJaTkZrT1dkTXRneXcyV2JaWXY1eHZNVDVpL2ZYNzMvSzlXOWxZWlZnZXM3bHNyV1FkYWI3RHVzSDV0WTJiRHNhbTB1V1ZMc2ZXelhXZmJidnZLenR5T1o3ZlBidENlYWg5aXY4bSt5LzZMZzZPRHlLSFpZY3pSd0RIUnNjcHhnRWxqaGpOTG1KZWRNRTVlVHV1Y1RqbDlkSFp3em5FKzZ2eW5pNFZMdWt1ankrZ0M0d1c4QlFjV0RMdnF1YkpkYTF5bGJneTNSTGNmM2FUdXV1NXM5MXIzeHg3NkhseVBPbytubnFhZWFaNkhQRjk2V1htSnZFNTR2ZmQyOWw3ajNlbUQ4dkgzS2ZMcDhWWHlqZmF0OEgza3ArZVg0dGZrTis1djc3L0t2ek1BRXhBVXNEMWdnS1hGNHJBYVdPT0Jqb0ZyQWk4RWtZTWlneXFDSGdlYkJZdUNPMExna01DUUhTRVBRZzFEQmFGdFlTQ01GYllqN0dHNGNYaDIrQzhMc1F2REYxWXVmQkpoSGJFNm9qdVNHcmtzc2pIeVhaUlgxTmFvKzlFbTBaTG9yaGo1bU1VeERUSHZZMzFpUzJPbGNmUGoxc1JkaTFlUDU4ZTNKK0FTWWhMcUVpWVcrUzdhdFdoa3NmM2l3c1YzbGhndldiSGt5bEwxcFJsTFR5K1RYOFplZGl3Umt4aWIySmo0bVIzR3JtVlBKTEdTcXBMR09kNmMzWnpuWEEvdVR1NFl6NVZYeW51YTdKcGNtanlhNHBxeUkyVXMxVDIxTFBVRjM1dGZ3WCtWRnBCV25mWStQU3o5WVBwVVJteEdTeVkrTXpIenBFQkprQzY0a0tXZHRTS3JUMmd1TEJSS3M1MnpkMldQaTRKRWRXSkl2RVRjbmtORHhNNTFpWW5rTzhsUXJsdHVaZTZINVRITGo2MVFYQ0ZZY1gybDJjck5LNS9tK2VYOXRBcTlpck9xYTdYdTZ2V3JoOVo0cnFsWkM2MU5XdHUxVG45ZHdicVJmUC84K3ZYRTllbnJmOTFndGFGMHc5dU5zUnM3Q3JRSzhndUd2L1AvcnFsUXJsQlVPTERKWlZQMTkranYrZC8zYkxiZHZHZnoxeUp1MGRWaXErS3k0czhsbkpLclAxai9VUDdEMUpia0xUMWJIYmJ1MjRiZEp0aDJaN3Y3OXZwU3hkSzgwdUVkSVR0YWR6SjJGdTE4dTJ2WnJpdGxkbVhWdTRtN0pidWw1Y0hsN1hzTTltemI4N2tpdGVKMnBWZGxTNVZtMWVhcTkzdTVlL3YzZWV4cnJ0YXFMcTcrOUNQL3g4RWEvNXJXV3FQYXN2M1kvYm43bnh5SU9kRDlFL09uaGpyMXV1SzZMd2NGQjZYMUVmVVhHaHdiR2hvMUc3YzJ3VTJTcHJGRGl3LzFIdlk1M041czBWelRRbThwUGdLT1NJNDgrem54NXp0SGc0NTJIV01lYXo1dWVMenFCUFZFVVN2VXVySjF2QzIxVGRvZTM5NTNNdkJrVjRkTHg0bGZMSDg1ZUVyM1ZPVnA1ZE5ienhEUEZKeVpPcHQzZHFKVDJQbmlYTXE1NGE1bFhmZlB4NTIvZFdIaGhaNkxRUmN2WC9LN2RMN2JzL3ZzWmRmTHA2NDRYemw1bFhtMTdackR0ZGJyOXRkUC9Hci82NGtlaDU3V0c0NDMybnVkZWp2NkZ2U2Q2WGZ2UDNmVDUrYWxXNnhiMTI2SDN1NjdFMzFuY0dEeGdIU1FPemg2TitQdXEzdTU5eWJ2NXovQVBDaDZxUEN3N0pIbW85cmZUSDlya1RwSVR3LzVERjEvSFBuNC9qQm4rUG52NHQ4L2p4UThvVHdwZTZyenRHSFVadlRVbU45WTc3TkZ6MGFlQzU5UHZpajhRL0dQcXBjbUw0Ly82ZkhuOWZHNDhaRlhvbGRUcjB2ZXFMMDUrTmJ1YmRkRStNU2pkNW52SnQ4WGZWRDdVUCtSK2JIN1UreW5wNVBMUCtNK2wzOHgvZEx4TmVqcmc2bk1xU2toVzhTZWtRSW94T0hrWkFCZUh3U0FFZzhBdFJjQTRxSlpqVHhqMEt5dW55SHd2M2hXUjgrWUF3RDdFUzBlbFE5QU1ESldJbTZFc0x3SEFPR0lSM2tBMk5aVzV2OHhjYkt0eld3dFVoc2lUY3FtcHQ0ZzJoQm5Dc0NYZ2FtcHliYXBxUzkxU0xQM0FPaDhONnZOcDAzNVBBQ3FNMTJjUGFDUi85OGErUytZendkMWpHaURkUUFBQUNCalNGSk5BQUI2SmdBQWdJUUFBUG9BQUFDQTZBQUFkVEFBQU9wZ0FBQTZtQUFBRjNDY3VsRThBQUFBQm1KTFIwUUEvd0QvQVArZ3ZhZVRBQUFBQ1hCSVdYTUFBQXNTQUFBTEVnSFMzWDc4QUFBQUIzUkpUVVVINGdjTkJDME0rWWVxL0FBQUFIZDBSVmgwVW1GM0lIQnliMlpwYkdVZ2RIbHdaU0E0WW1sdEFBbzRZbWx0Q2lBZ0lDQWdJRFF3Q2pNNE5ESTBPVFJrTURRd05EQXdNREF3TURBd01EQXdNRE00TkRJME9UUmtNRFF5TlRBd01EQXdNREF3TURBeE1HUTBNV1E0WTJRNU9HWXdNR0l5TURSbE9UZ3dNRGs1T0FwbFkyWTROREkzWlFxbVU4T09BQUFNUm5wVVdIUlNZWGNnY0hKdlptbHNaU0IwZVhCbElHbGpZd0FBV01PdG1XdVc1S2dSaGY5ckZWNENCQkFReStFVjUzai9HL0NIbE5WVjNabGplM3lzR2xvcENVRVFqM3N2bXV1ZmMxNy80RWpTMmhYT01WZlRXRU1OT29QRSs1WXUzVFZYS1pKckZnbWxGU3RkUXFpYmY4THBaRStUekdXOU5HcXFxWVljU3lnaHovQTYvcnorZDRjejYvVWEvVDVXa3ZYTHNyOTVYSCt2ZTR5YXRkU2s2Ymtzci9zcWwrWnpXOWZ6WU9UblBBTUxEbFhxYzUxZTV5Q3BWandYdnU1YmUwMlFMOXg1dS9GNTBPZlhBNjAvNzMrdGxQdS85Vi81NTBDWnlEeW1wdjNNME1Ja0NMR0sxdnQ2K0pkRm9TcjIxNWRGTTc3dXAzRHBadFdtKzNtUXZ4NXN1cE1TK25xaGZRMDBDZEJTLzdvL1hwWkt1L1N2TEtwL2JhbCtzUFM2SDlUM0I3OUY1L3RvR2Z0UDNpbERWdnVmdy85L3k2UC9ZaUJjT0d2NWN5bnlkVDIxVmNtdHlOZjEvUzk1cDBNOWp5TFgyNE90a25mMnQvdjJpdFNmOXh0UmFhVzhEMFFKNS9SS3VKLzNzOGFjOC9ndzhXVGkrVDZRcXZHV3ZWdFVjN2FTLzd4UDBqcHA0dThERWZSY1NucTdUNTUvV2hwK0hhWGsrRDVRMDVMdEZ3NTl2OUMxa2FMMTdUNHJLSnIzMjBBazRTanAzUmRub0p6eWZsOWFMVVUrT1ZzSnMzNEk4Nm8vVStQbkNvd1ZmTEFvbnlYazloNU5vdmJKZC9pMHRFOVI0eEZoTHU4djZDNGZCam9nbCtWRFFwNXkvQUg2UHdlYWhPaHR5UlN3NHRQeVlXa1AxSDJhR1Y1NXl5UHRMTG1YOERaUUNNZjh4RUNKM3lrZTlPTWVtSWczV3YxVkpqbXBNN2lSa0FZTXRRdjJnOE1lQ2pyQnlxQ2xKdGt5aGVFU1E2WGI4YjhJOHNmaGFaMW5ONTNkdkJZMXRFOGRhM3ljbm13OVJaejYrdFJQTWVOZTJpQTU3NVdwK2FlT0JPVWhVVyszQzBiYmg2NEt5YWhmZlI0ZmZRUEVHZkJVdmgrS29WRzhjVCs0SkN4RDFzdC9ESkRHOCtLeE9uY0dPdGh6b2xGNHFmRFNBVGR0QitwWTNGRU4xRmZGa29aVmpRSGFlT2tIQmpBbU5kN3ZpWUU2TDNWZUdydzBlR25NUTFnSEZCKytPU1M4ZUdueCs1VGE1dmNldDlISUI5ckEzVlIveEZPUjNqRW1tdEU4UkNrME9yQ01FN1dZZGppT2p5UnFKTFFSNjRrUWpYZmh4RmhKeUlqWnNURUlKa2VqRStiR3poeWR6b1B6NEl5RmNYSmVuQmZuelhsemR2cDdoNzFZbW9RanJqSnRCUkdsT2I1dDZLZElHNFNNWjRWbnpDNlZlNVVYWVY0aGRJS0lFRUlzbmFLVndjdk1LUGhEOElXY0lPRUQ4WEluZFFxRHJGU0NGV2tySkNZQjFXa2VEclluNVZtbGFGUGRJVFZ1R0RjWVBYV3VCOWV6b2paNFlSL0tuaUc1RVcybERGS2dHbWlMT2huaFFFNCt3QWJTaEl6Sm1RRXpDWmZ4VVNhU0dVdnp6Q0V6V01ZbkowdXliekp0aFlLQUtnU2pwRTdtV0NnRk1WcFlPelZKTVNtcFJPdTBRYUdESm9XbEZzSmRDUFA5eHhKVjZxM0NGRXVVNktuMm9IVmM1Qjd5ekZiUTdyZDBWQ0tqT3dWWUpweGFycVJFWmZhYUZramlDQ1FTQmhTb1RGeU5aNGl6T3FDanVsQlB6RnE5SVZzR0NleWhrVDh0bjFMdUpQTU9yWEdOdGExelBiam1uYlpyYUNTamtic20rTWhZcHpIVG9XUkRxRmpqZCtjM0RyZkpieVl4WHVneGhzNnlPcFoxVXFLenBFN1pkRktnZDhDLzQ0dStadWgrQXMwZjZud2tDNlBFQXd1VU9sVkQ1ekZPOVhERzhZTUl6a2dHU2tmbHBUQUxlWVFHUWRydE1Ic044NVFabVRzWmRKMC9FdlRvemNVU0YzNVo5RnRrL0pvOFgvekdIWnQwMklKRm0vQ2hJOE91SHJZTjZsSER4Z2Q3YityU2dsTjNUcFk3eU9Ca3RlTXJIeWs0eS9aOXFoc3ZpVjRrQ01Dc09LQmlzMUZjZ3dlcm5qY2poWHovRjdNRG95dkdObVBzZUd0YWpMdXh1Qm9wcXlpd1NCVE5rZHFKMGxPVVNkdkE5SUZxb1RFSk9oSUFvSFZ5ZWhhQW9GQ1pVQWVGaHo1QmVmZVkyN2pna2dVNmJDWUZIYUpFU0NxV29oSE9BQzFHTEdORlZuV3E3Y2haRkxORjFSbTFlZFFoR01vOTcxZXNZRVBOTWNKenNUYUx0ZTlJYnNYcU5UWndoRUtQS0pUWVdvK3RlMnlMMzk0ZnhNa2xtbzVvRnE5b2c5eGRLMUpoc1V1UEhkZjBXb0dqSFVtTjJISG9pRG1PTk9KZ21ZTUJCNWFNMWVNQklGSWdUaWc3empyaXhEOXp6amh4OEFLMUZsVzg2c0V3aTRRNkxnYmJDUEtOZFJ1ZmJNdHhrMUI3VzNTaTRXbGYwWlVMSHZqdzZMdkxqYVg0bnNJVDBweXNBelRBT2tJRi9qWFdERGwxbkRtMzhKS0lWRG42U0tUeHU3dklXcEJPRjRCTEFDdEpsaVZOa2VRSExGMXlYdXhLcCtRK0pLOU9kbEZoOUMxS3MzcEptYWdHaDhJWkdYcVhJNmgxMEhZandMUnNVaXRWeGdCMVRkaHRTVXN1alJScUhUdFdGc0RrRW1OVVBDOW1TMEFUcWdjRFV4R2tublFid0xFRElpSWpLYWhzTXVoSFJzaUJ0cG1NL1JJNm9jc2xjMVZBYzhyQ0w2dXFMR1plbTd3a2E5RFBnbUZBZUJWS1JsZ2dVTjdGTFlxekVuZUFLeUZmZEY2NGhmSmRnMElnbFRQaHcwVnhjSFpKeHpiUmxNUUd1SjhUSFZNQ20xUDFsRVpMaVpCbGJFWHlYQ25iVG5tMVJQS25Ba0NYaGlpY2tvcXZkTFlCaU5Pa2ZTZmRCbGxrQkJwOFlUTlYxR21MT1RYSXBqVXNhck9CUHVVT2tqR1REVmJ1d0IzRDlKb1RLNFZZUExIZ05KUzA3RDJOM1Fob1RTaXFORm5SM09sS2l3aFRMb2xFVFVCTTJuSTJvalFZQ1NRaFBqRTV6NTNNOEMwd0kxSk84NEhJZ3oxNGxpVFVmbEVYa3pUZDJBTlZZYnVNZ2tjeGhYTEhmcWFEdXFERGpMek1yV2NLbkFvRE9OZzRGREM1ck0zV1c2NmowRUVDVktWRGJYaXBWcFFuTHpjWXErV1JxZVBjZ0VlS0JWbUlTenNDbmI0OTFkeVpDRHNnOW5ubGU4UEF5QU96S2NCTVZQTWNQWk5TbVc1NUdiRlliS1VRQVZ0M0poVWVya1R2NDhyczYvQjh2ZUNoV0VCMm9CNnNnQXVCZzBKbEZwS2dTS1d1QVhWZ3JSQkdpTFVYSEZhT1JNL05DVEk3STJIYmg2d3BoTHFBd2tXaFZ1M3NkQnh4aVBTdmxCSXNYaG9wMkNvaWRJNWlnSXdoT0cwY3hxdWw4MWJ2TkdlZ2dkdUcwZGdoekVRRHhlYlNzdGoyck5yS21sWkFwc0pPc2V5eENwQVBnOGNDQVNDMXNLR1FXYjFmR01NT1B2T29nNk1ZSnJoVWJDb3lDZGVTVEZZMVFTMzVCUDFzTHJlUlBjeGsxUGcrWHpnV1d6YTVsQ3BYZUYycmtjUjBvcklWZXRhMkp4dW9wR1lkMVV5bTVNYktIWWxRZFREeDZKemRzYlBxN0g2aFhSdjRqWFlZYUg0NFpiTUIzNU5zd09PT1VuQWdIVFVHMFNOYk5xRWgzNk9WaWtRZ3ZsUnp4dzdFS0tsRDBReDJHVEUvWDRZbVlRSnRVTzRWNTV4MVZRWFkxVnRsQTB1YUpmZ0ZudEJkRzMxTmVyVm1WN1VOYkdXdFJMYWl2eW9BWHdlRkJMRFcyV2lIVk5pdFVFTDE2TmNOQW02ZUF3NEltRng5RjFSWnZaQVM3V2lLQmttMU9CY2dFa0E2QU5nemtGQWJWUXA5cmthcXQ3d3A5a3dvKzBBZEhlY0tmbUhUbE1iVnFubGp5TWJlRkRUWXpRQnRNNHoxM2FqTDFtZHZVSDNEaFczNGJGTUJETzR0a0d2eHluSnZXL1VpT0x0NWdqY040WXgyUTY0aE42QVcxR2ZzemFBUFFMc2JWSDZLeGNBU0VBZEoxU2c2NnFRVXR6THR1dXVRK0JvU3l2Q200UWhqczJ0dFlCaEpoYm96ODBrU05HT1haUU9zSDkwTkZyUkpsK25WbHVZTGtoV0QrR3ozVGJvc0Zqck1IWTJueU5zRnJiTGxoMkxoQzVwcEI2QXBmQnBNbVNrcXFwd0NiRmN2bmNuUUtuaWdrelNrMmU1WTFSdEUwbWJ1QUN3OURERXplNGYwWVpRK0tMT3hEVWFmZmFJRVY4NVhYNUQ1aGpzMnRIOFNHSXZPWndoa2JFRjE5WUVNR1hIQlZ4bkdueUI5d3ZkOXMwTEsxS2prbUVacC9VS2ZZWGkxQWJDUmRXMWdEYlZOZlMrMk05Q3E4VElvUGZvb2pMVDVjZElzam1uakNKNnhrTFlzNEFMSHdUU0grYUZTOTRKb1pwZXpVUlJhVVE1Z2ZIRklEMFlBU05KaUw0RHNCMjVueVlPVmtRMlpYZlZNMTZRMkVDUWtTRnF6alRuaER5WXpCRXFiT0dPQ0ZuTU1uWXcwV2NpRXNDWjRCbkhvQkJUUXJYWDZhTmM2ZStnd2tHMXBzaGhrYVBMRmJta0I5d3Urd1krR0hRQlIzcXNzdkZYSzBnV0tNeDV1V0UxaHhjMUFwZ2hpNGs2NFZ2ZUI3MUcvN0VKbTY4Z3ZWTEFwREQ0WGltYzU2c0E3T3h2b01neHVaN1k3RTMxVDBrWEFCbGFtRFhodGFHUm5uNVFoT0IvV1B0OWV3WXROQWtDSnlJQXgwVmlrL2lLZVlHcmZnQ2JnTW54Y0cyamRDTis5YkNJVDJpYXcyNkUrbndqcHduNWlGNC9vaGVpT2xzRWwwUnhJOGd5QlFEdGVrT0Z3MitXcXkvVUVEYVhaNk5USU9xUU9OVkFkWlBHT2toKzFPdUdrVUJvT05GL1V5TTdEOTVwZ0pHWHJmckh4T3ArYjQ0OFBEMS9maUVRNTdnOFFZTmQ5WjVYN2F5RGMvdlJnZVYrZnBmLzh4QnJEai84SDhPTmUrRS8zcno4Zi9QWjkrOXZJMjdMKyt0SmVYbC9POG55dUVURFBRS0t2VDJxdnI5RGw5YkdrUE4vSjBhY3BmVGovZGdEK0xESWwrYzJ5TVI2ZlFLdkhrWjVlM3grcjNENkM3dXQ5bjM3M2VYVjlsb1k0T3FjWlRneC9mSXIvR2hrS3ZzL3QyMC9EMmVTTTltMVIrSXZqK2hjVDlUb1JBclAzbFFBQUFDVjBSVmgwVW1GM0lIQnliMlpwYkdVZ2RIbHdaU0JwY0hSakFBcHBjSFJqQ2lBZ0lDQWdJQ0F3Q3NEVy9HWUFBQWVjU1VSQlZFakhyVlpiYkp4WEVaNDUvL2t2ZThtdWQrMWRyMk03ZHV6R3VUU2hpZEtFcGlGcEJDVVJFb1FLYUZVRVJSVkNvaytnVmp4Q0gzamlBZkhDRXc4b1NDQkJLd2pRb3BhV0ZBcE5RK3ZnSnMzRmNaeUxMN0c5YSsvTnYzZi8rMy9POEhEV2JtZ3JWQzduNlQ5ejVqOXpadWFiK1FhSlNCSXdoRmpLdWJxZk1yUlMxZ1FBSWtDRS8zMXhTY1FRYnl3N1AzbDlzZVpFR3VKOWcrbHZQdFJ2NnRyL3hRWm5pRTBuK3NGTGM3WW5pRWhqK0tmSlppenBtZU5ERzBxU0FPRmZqQkVBQWhBQjNDVlh3dmZwTUFCNDRXSzExbzd5S2Y3NWZUMkhSalBaaFBiMjdiWHJGUWNSaENRQVlBaUlRQVMwL2pPdXgxREpONFIzTDdWbGZpUXV6TGMxeENjT2xiNzI0T2Fuanc4OU1KcHArZUtkdVJZQWFBeUphTGJtbFZjRFJFQUFBaEJTaHJGRUJOdUx5bmFnUEJDU0lpSGx1alVpaW9TTXBlVHpEYjlzQjFzTDFwR3hybGdTWjNoc2UvNmxTL1ZiVlJjQWF1M3dSNi9NejlWOXhuRC9VUHFwWXdPV3J2M3N6YVZyWmVmeGc2VlRaOHROSnpxNXIrZnhnMzFURmVlSGY1dzlNcGI3K2lmNkFlRGxLN1hueDVlZk9qYkFLM2JvQm1La2tBQkFCZ1FBMjB2SkgzOWx1NkV4QUhodWZQbnlnck1wb2NXQ1hyM2EzSkszdnJDL3QrbUtoVWI0MHplVzVodEJOc0dmUDcreWR6QXpsTGRhdnJ5NjZDalVUSlhkcGl0Nk15YXozVmdROUtSMWxSWUEwRFUyV2tnTzVpMHZGT016YTdrVS85N25ocjl4dEMraHN4c3JIZ0JZblBtUjVJdzljM3h3ckRjUkMvanpWQ050OGVHZVJMVVZyWGt4QUN3Mmc0R2MyWjh6V1JCTElMQjBkbmQrVkc1alNkdDZrNDhkS083c1N4OFp5eGtjZzVnVWJJS1lIajFRL05UTzdpY2VMQmtjWjJzK0FJd1dFZzBuYWpoUkxHVFpEZ2Z6bHNFWlI4U050MjhzalNFQWJMTDRkeis3ZFhrdE9ETlpINTlaQ3lMU1ZENEprZ2JiMXBzRWdJRmNvamRqTkowWUFNWktpZE1Uc21LSGFZdXZ1dkU5eFFRQThLVEJBTUVKeFB0d1JrU0krUExsNnFtelpkc1QyUVEzZEpUVU9USTRLcWROemxLbTVnU2hrRFJTU09xY0xUYURwTUdFcE5GaUFnQllQcVhyREN0MnFBb0tBQllhL3JkL2VmMFhiNVhkVVB6cTdSV0RzeWNQbDU0OU9XeHk5aDRLMTcyV1JFSVMxMUFROVdXTjdoU2ZiL2czVjd5VXFRM21MUUJnL1Rrem0rVFh5azdMajdtR0FIQnBvWFZocnEwenRySVdyTFRDVCsvS2YvbmpmU09GWkJRVEFnSUFRL1JDMlFwaUFIQkQyWERpVFJiWEVDMWRHK3EyNXVyK2xjWDJRTTdzU1JzQXdBWnkxbEMzVlcxRnA4NHVCYkdZcWJvdlg2NTNwL25lTFdrL2twSWdrK0FBTUZWMjJvSFFHS2pDamdTOVB0VUVnTGR1cmRaYVlWL1dVR25iVmtwVzdQQjZ4VlVKa0VRY0FCN2EzblZwb1QwKzA1cGNtbzRFMlo0WTdyRjI5S1dubDkyVXFaMjdhWnM2L3VIZE90ZFEzU0lrSkEzMnlwWEc5TEpiWFlzWXc5MERLUlc2MFVJQ0FDTFJTUUFSY0FCNGVGZjN4TnphdVp0clFjd2trYzd3eWNOOUFMQzF4eG90V0pObFoyS3VkZUxlbkJBMFhYRVVUQk02MjkyZit1dTB6Um1PRnExUDdzZ3JBMFBkQ1V0bllTeTM5aVNVSmxjOTZ6c25obDhzVmE4dU9nbURmV1pQOTg2K3RKQ2thK3pwNDF0Ky9ZK1ZZc1o0OVA3aTVKSlRiWVZFeEJDQ21MNTZxRyswbUt5MW95L3VMMWk2cGtpbE4ydmtVbnpORXdONUN3QVFrS3QycURGOFpGL3hrWDN2OVdlTklSRnM3cksrOWZBV0pkd3pzR25qVkJJWm5IM3AvdDUxVEhjZ2Jtak1EV1YvenN4WW5KUUh5aEVDSUVtSXFJRE9FRHR5QXRXa0VaR0loQVJkUTBSZ2lBcXlzU1J0WFhscDFmL2RoV3ExRlI3YjNnVUFVcExHa0czMGJzYlVuOER1WWhaMUYwTkVBSWFvVUJURzVJV2lVL09JaUtDTXZYdW4vZHQzYWhyaXh3YlNHMFRFLzBNR1JBQVl6QnQ3QmxLNnh1NStCd0RrVS9wSXdYeGdKS3VDMlFrREVhazRzSC9Mdi9RQndvSVBEQVpFSklnNFkrb0lFQkFBcGFUL2d0a1ZadUFqREI4TUVXcXQ4Ry9URFJWSG9nN0gwbnFMVmR0cUsrd29BQkFCUTZpM3cxbzc3QUJobmE2RFNLNjZFUkUxbkxBZHhLQkkvL3lzWGJHRE01TjFGVTMxSWx5UGlkcDZZVHd4YTd1aDJCZ3Z4bWRzVi9WZ0JFWFhBSEN0N1B4bVlqbVc5TVowODlwU0d3QzRHNHEyTHg0NzBMZnFoaGZtMTZiS3pzbTloZE1UeTRXTXNhMllUQnE4YlBzM1Y3d2RwZVRGTzYzWnVuZGlkK0gyaXJ0M1MyYXhHZlRuek5mTzFnK09aQ3QyYU9uczhEMDVMeElwVTdPOTJPUk1KWlVsRFcxTHQvWDlGMjR0cllibDFhQTNhengzdnJKL09OdWJNZWNiZ1JmSm1acmYzMlcyQTdHdG1PcEptMWNXV2w0a0FXRFg1dFNkUm5CMExGK3h3K1cxY0hkL0dnRGFnVWlidkdLSHVzWlUwRmpMajhkS3FXZFBqdjc5MW1yZGlTek9Vb2EydWN1OGQzUEswcG1sTTVPem9aNkVxVE9ONFdneGVYUEZMV1VNQU9BYUk0TFJZcEl6TEtTTmJFTDNJakZiOWVZYmZxMGRhaHFxNUhHRHM5K2ZyMnd0SkVwWjA5SlJFdlhuekw5TU5VeU9zWVRiVlRkdGFuNGtpS0RoaEFONTB3dGxKcUVEZ0pDMHlkSmV2TGhpNmt4akRBQm1hOTZCa2N4OWc1bWZuMXNzWlUyTHN3NTQ3OVM5MHhNVlB4S0xUZSsxYXpVaWV2TkdzOW9LWm12dStablZlanRvK1pIdFJRc05iOW4yWDcxU2pXSkpSUFYyRUVUaXpHU3QyZ3FhVGtoRVRTZHNlUkVSemRmZFpkdFh3ZytwZ3crdEtiVnVWOTJGcG45MExLK0duNDlVK3FxU0paRnFuNnFrSlhYWWtZQVFPaU1qSW9TeDFGWDNXUzh4S1FseFE2V0RiMXIvUW9CL0FxWklHWEwzelRoRUFBQUFiR1ZZU1daTlRRQXFBQUFBQ0FBRUFSb0FCUUFBQUFFQUFBQStBUnNBQlFBQUFBRUFBQUJHQVNnQUF3QUFBQUVBQWdBQWgya0FCQUFBQUFFQUFBQk9BQUFBQUFBQUFFZ0FBQUFCQUFBQVNBQUFBQUVBQXFBQ0FBUUFBQUFCQUFBRVRhQURBQVFBQUFBQkFBQUNvd0FBQUFBT3lQNWZBQUFBSlhSRldIUmtZWFJsT21OeVpXRjBaUUF5TURFNExUQTNMVEV6VkRBME9qUTFPakV5S3pBd09qQXc2aFpPMGdBQUFDVjBSVmgwWkdGMFpUcHRiMlJwWm5rQU1qQXhPQzB3TnkweE0xUXdORG8wTlRveE1pc3dNRG93TUp0TDltNEFBQUFZZEVWWWRHVjRhV1k2UlhocFprbHRZV2RsVEdWdVozUm9BRFkzTlNBSkFNd0FBQUFZZEVWWWRHVjRhV1k2UlhocFprbHRZV2RsVjJsa2RHZ0FNVEV3TVFZbk5xOEFBQUFTZEVWWWRHVjRhV1k2UlhocFprOW1abk5sZEFBM09NblVleWNBQUFBb2RFVllkR2xqWXpwamIzQjVjbWxuYUhRQVEyOXdlWEpwWjJoMElFRndjR3hsSUVsdVl5NHNJREl3TVRndlRBVkJBQUFBRjNSRldIUnBZMk02WkdWelkzSnBjSFJwYjI0QVJHbHpjR3hoZVJjYmxiZ0FBQUFBU1VWT1JLNUNZSUk9In0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDE4LTA3LTIwIn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAxOC0wNy0yMCJ9LHsiYWFndWlkIjoiY2ZjYjEzYTItMjQ0Zi00YjM2LTkwNzctODJiNzlkNmE3ZGU3IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiJjZmNiMTNhMi0yNDRmLTRiMzYtOTA3Ny04MmI3OWQ2YTdkZTciLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiVVNCL05GQyBQYXNzY29kZSBBdXRoZW50aWNhdG9yIn0sImRlc2NyaXB0aW9uIjoiVVNCL05GQyBQYXNzY29kZSBBdXRoZW50aWNhdG9yIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X2RlciJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9pbnRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjozLCJibG9ja1Nsb3dkb3duIjowfX1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDQ1RDQ0FhK2dBd0lCQWdJSkFQQXplZ2NVNnNWQU1Bb0dDQ3FHU000OUJBTUNNSFl4Q3pBSkJnTlZCQVlUQWtSRk1TRXdId1lEVlFRS0V4aEpibVpwYm1WdmJpQlVaV05vYm05c2IyZHBaWE1nUVVjeEtUQW5CZ05WQkFzVElFTkJJR1p2Y2lCQmRYUm9aVzUwYVdOaGRHOXlJRUYwZEdWemRHRjBhVzl1TVJrd0Z3WURWUVFERXhCSmJtWnBibVZ2YmlCR1NVUlBJRU5CTUI0WERURTRNRFF5TlRFek16VXhNMW9YRFRJek1ETXhNREV6TXpVeE0xb3dkakVMTUFrR0ExVUVCaE1DUkVVeElUQWZCZ05WQkFvVEdFbHVabWx1Wlc5dUlGUmxZMmh1YjJ4dloybGxjeUJCUnpFcE1DY0dBMVVFQ3hNZ1EwRWdabTl5SUVGMWRHaGxiblJwWTJGMGIzSWdRWFIwWlhOMFlYUnBiMjR4R1RBWEJnTlZCQU1URUVsdVptbHVaVzl1SUVaSlJFOGdRMEV3V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVNWYkQ0bytRd2x0aXhUb09aU0ZFcHREeERhK2NaT21ueTlyUDhXeXh0Z2N3SDR5Tkl0Mzd6d2RqNThvR1VnakJDVWVEOFRETjUyQUFEYTlLU1ZPY3Nqb3lZd0pEQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUFNQTRHQTFVZER3RUIvd1FFQXdJQ0JEQUtCZ2dxaGtqT1BRUURBZ05JQURCRkFpQTFOaHF1Sk5QK1dyM0xlMjlSOUJjeGRBRUpkMllXeEhEeThaRWk5a2hqbUFJaEFLelJkOWY1ZGY0a1E5UUFVTlpyU2xUL215N09JWGlNeDB3SDhlTVk0MkZmIl0sImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIkZJRE9fMl8wIl0sImFhZ3VpZCI6ImNmY2IxM2EyLTI0NGYtNGIzNi05MDc3LTgyYjc5ZDZhN2RlNyJ9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMC0wNC0xNiIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiU0xFNzggQ1RBUCBVU0IvTkZDIFJlZiBEZXNpZ24iLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDE4MDkyNjAxNSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4zLjQiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMC4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIwLTA0LTE2In1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMC0wNC0xNiJ9LHsiYWFndWlkIjoiNzY2OTJkYzEtYzU2YS00OGQ5LThlN2QtMzFiNWNlZDQzMGFjIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI3NjY5MmRjMS1jNTZhLTQ4ZDktOGU3ZC0zMWI1Y2VkNDMwYWMiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiVmVyaU1hcmsgTkZDKyBVU0ItQSBTZWN1cml0eSBLZXkifSwiZGVzY3JpcHRpb24iOiJWZXJpTWFyayBORkMrIFVTQi1BIFNlY3VyaXR5IEtleSIsImFsdGVybmF0aXZlRGVzY3JpcHRpb25zIjp7ImVuLVVTIjoiVmVyaU1hcmsgTkZDKyBVU0ItQSBTZWN1cml0eSBLZXkifSwiYXV0aGVudGljYXRvclZlcnNpb24iOjI2MjE0NSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9LHsibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyIsInNlY3AzODRyMV9lY2RzYV9zaGEzODRfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlCdERDQ0FWcWdBd0lCQWdJSkFLMjkwc2g3cWlTOU1Bb0dDQ3FHU000OUJBTUNNRHN4SURBZUJnTlZCQU1NRjBkdlZISjFjM1FnUmtsRVR6SWdVbTl2ZENCRFFTQXpNUmN3RlFZRFZRUUtEQTVIYjFSeWRYTjBTVVFnU1c1akxqQWdGdzB5TlRBNU1UWXdOalF3TWpaYUdBOHlNRFV3TURreE5qQTJOREF5Tmxvd096RWdNQjRHQTFVRUF3d1hSMjlVY25WemRDQkdTVVJQTWlCU2IyOTBJRU5CSURNeEZ6QVZCZ05WQkFvTURrZHZWSEoxYzNSSlJDQkpibU11TUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFclRWWWJOa1hrT0xCbEVIZVlPQS94cnJnSThSZnIxZmN1MFVjdzRIcWdWZ0NJYTVBcVR2ZnliMHl3YTRSUWd5N0RobWwrc01waG1nenFnb2xEVGxLN0tORk1FTXdFZ1lEVlIwVEFRSC9CQWd3QmdFQi93SUJBREFPQmdOVkhROEJBZjhFQkFNQ0FRWXdIUVlEVlIwT0JCWUVGUEZpT3R1U1MybEtScmFPQllpQWQvYjZvdW4vTUFvR0NDcUdTTTQ5QkFNQ0EwZ0FNRVVDSVFEcDR2VDNZRmZXeWYwOWNKNGV3RnZ0NGV1QkVodTJkNWVvYml2VC9MZzN1UUlnU3JtVWpmUjBZQ3cyOWxhaTRFaHpFRTRSanJRM1hMcWRONzdlYmRkOWtGaz0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBTGtBQUFBb0NBWUFBQUNpbDF1NkFBQUFDWEJJV1hNQUFBV0pBQUFGaVFGdGFKMzZBQUFJREVsRVFWUjRuTzFjMFhIYk9CQjllM1AvZGdkaEtyQlNnWmtLckE2aVZIQzZDa0pYY0VvRlppbzR1NEl3Rlp4Y1FlZ09yQXIyUHJCTW9PVUNCQ2xLb2hLK0dZd0dJTEJZQW8rTEJiZ1VBV0RzNDU2WkMwUkFSTmNBS2dBMzZ0SXpNeTlpYldmTU9EWCtHTmh1Z3piQlh3RGtCMmx6WVNBaVZpay90MDVEUVVTVnVwZmkzRHFOaGQ0a0o2SVZnQStxZUFkZ3ljeXZZeWcxWThhWTZFVnlJbG9BZURBdXJabDVPNDVLTTJhTWl6OVRLM3ArdU1ZOU01ZGpLWFJoK0tieTgwbzJBUWhYMFhnV3lTU0hJL2lWS252cTJxVCt5bURtL053NnpOZ0hFVzBBTEFGc2lRZ0FWa2trSjZJU3hra0tnTldJK3ZXR3VFL1hmaGt6VitmUnBoK3NUZW9ZdWhOUjNpVkhMTjBDd0t2blpqYS8xM0J6blJrNjFzeGNwK3JScDM2Q3JEMVk5eWg4eU9BTWN2TzdBdHdSb3A4S1prYVRwSkt1OHdvZzgrdUZrblMyZ1J0RUxXY0xZQTNnT2xIV3RlaFRHYkw4OUFnZ1Q1UzNqc2piaXU3bXZVbzdQeTBTK3JMR1Flc2VsR1BJemFYTnF6RkhwYSs3NkxEeDZsUUJlU0hkaWc0OVNrT1BvZk9jT2xhNTBxRVFQYlp3RDNLQjJJMUlKVXQ0SjRHa2ZkR2hwRDhoeXc1Wnk4QUF4bEk1b3J5VklTTnBYR1FjK3VyZTZzOGd3bU9pckVMYTZQb0hrMXowcUVhYzUvV0FzU284WGJZeTNzMURzclFteW05Z2RSWWRmRS9ac3FlaVFka0RaY1VtSmphUm81SGNHL1NodXB1RUdDalhHc09EU0E1eGVVWWF5ejRQaTVYV25rNmx5RnBLV1pEa1ZvZEJ5NWhnd1d1NHB5dVh0Sll5djA3TERZb01lZzIzOUM0OW1adEFYUzNUSWtpcFpLMnhiL2xhTG9RaFE1TThwSHRqYlhJdmxVYTkxOEQ0V3ZmWldLMWNmbE1lZ3NxVG1YbjMzVWx5aEkyZ1A4OUxoRmViMUxHcVU4Y0tBWGZJbXFnaU1JaXRwejRnTURQYWxwWUNzQzFTbVhEejYwai9WdjJpUTcrWXZHc0VmTkVCRXhkZHJnTUVXeG42NkRxUEFYbFZnRGdGMmc5K0VScXpnR3lMYUtZUmhMMnZxeFBtcldYeE8yU2E5YTJKc2l4QWJaRTA4ZWFqRHdkc2kzQWR1L2xEZEJnaUw5SlBYNUozR2dxMFY3ZE53dVJtQVZtWlVkZlVvUS9KQTNKTmdxYyt3QVBuT1dvZ20yUzk4ZFJIaFpER3FTODZsaXBmeENxTDNGSVY1NGw5aFZDcGZCYXJQTEdZazBlVjF3RnZPdi9FZ1dNNktYOVN4ZFZReFR5c1ZYNW5sR2xkTm5EeFRUNDBWL3BDajFWbVZiSklyaFVCZ0xXY1FVWWhkZlplR0hIYTJXK3Q4b2RHTW1wNWJ5TFhBT0FyRVcySUtEdXczekhRWlV6MDJIU0ZVeHdqM0VLVE05VUlibFQrN2tBOWtneXZSZklTN2FmL0NzQmo4N28wZ3RaMUkxS3ZsUUQ4MHlWbkxJaDEwNi9qQWVBdkFOK0phQ3VFUC9SQis1WHhSdVcxUlEyaDBnVUhycUpKRDNBb1FHdUZ0a1YvZys2YkdZc1l4eWJZQ202SnRYQURSL2ovaUtpV3FNc3BRVTlzMTFpTk9wWUJVaWFSamM4VXhHZVNYSllleTErNjdZZ3pQcG9GSGhOaXpSZXdMYnFQTndBZUpOWjZLdmVtaVhJWGNyT2tYTHNFb3hPdHgzN3RMQWpHcmpEemxvanVBWHhTbHo0UjBaYVpMYXRlR2ZYdkIraFZEMmpUQzBMMFhDelRDdTBZZVIrMytIbU9mbTVVUmxrSmU3TmVxdnd1MFA2WFJqUkFpNWtMSWNHdHVsUktJSkMyQ3Ewbm1pY2VwU2diNDRxSTFuQWtYc0xlRU4wUjBlSmNTMjREWnE2SjZET2NTOVhnbG9pYUYweXZrTE45dEUvS05vZGFYV2F1SkxydkIxS0N3cVJlZGtqZlE1SHkwY1FTYmYvMUNvN29lMHU0RUdDdkxoRk53ZnAxZ3BsZm1ibGs1aVdBdDJodnZvRnBXSExBRWZoWmxkMEErQmZBVi9tMXZyOHRSdXAvNkZGZ2JwUWQzV2gwa2p6aW45K2d2UndDN2MxcDlQeDBpbURtV3NpdUp6TTdnem90eUp5a25tZ0FidStSajZoQ3BmS3J4RDNMU3VXZlQrSFBKMzMrSmt1UjVWdmZHUnZSVXVWdkozaENrUW85QWZVNWxOQWdvZ3J0dlkrRkp3QWZtVGtmUUtiWXFVeXA4bGRvbjRIdlFWYjBsdHZiVTZkQlNQN0dVNVk2NnpUaWsrK1N5QU9oNnoya0VKMklzbE9jWWtnLzBhTTEyWXZvSmI4K2xrNnBrSEhVWkhuUHpBVG5acjF2OHN5ODVQUlBFMnVWdnd1TlVXQ09QOGkreHRLNWlRejBzVFBLam9LK1grdGIvam5nL1BQTXk2K01lczFSM043U1JrUUxLYXNBZk1kcHZqWmF3NTJEYjRsbzcyMnU2RlBBK2JZK2R1am5JaHdMbWNxL05KcytjYk9xeExmTUd0YTlsVVMwRktPUXEydHJ0T2Y0SDVuakpmRERtQlN3UDUxY24vTG9zUldoMWhFVWt4dHRtc0F1UDdCcWdXR3h4dHV1L2hJQ2Q2SnQwQTZDU2trcm81OWpCR2dWc1RiR2RZWWpVUlBlcWxPZnI0d3MyYkg3V3c0WVJ6T1FhcVI1TnNmWG1xZ295VHNHbzFUMUZnTUpkV2dVWXJBTndsODc5U0w0R1VrK1JIK0dzOVRtZlNqNW9maHZreHNENXRqazEwanpiSTd2b0gvUVl1ZWY2eU1zUVBsbHpMeGw1Z3pBMzdBRHYzeThBUGdNNEMwZmNSbGpkOHo1VHZxSzZiUUQ4RVgwS1krbFQxK0kvcDhITkwyRGN4bTNzZjBJdTFPbGU5aHVhYXVkNkxOQWZJNzlzU3g2Nm4wd3FESG5KK25NK2UyWmNXbDdUR0xINEgyNTdzUC9pbjF5a0hHczBBNlVTc1VPem8ycE8vcFo0R2VvUnQxVjM5TXQ4NHJPUHBZbkpmbU13eUhFcTdDL2tmdUM4TW5QQW01WjF4dS9iL3liL0cvTVRQSUxncXc2Tlg0U2RnZTNENGhhU21tM1FUcys1OTI1cmV3cE1QUmZiV2VjQjJ2c1crUk5Da25aaFN5czBQYVo4L0ZVbXk1bWtsOFdkSGhGMWJOOXJmSlRDUjgrS21hU1h4YjBHOWkrSk0xVWZ0Sng0R05oSnZsbFFSL3JyVklieXRHdVBvMnBEdFRuSWpDVC9MS2dYNzNmRWRGakxFNmJpSzdsMWJyK2p2YmxkOWgwQXZQcHlrVkJ5UHc5Y1BrWkxyU2k5c3BDeDRlQUMrS3FSbE51d3BoSmZtR1FLTVNIQThWOG5OSmIzR05qZGxjdURFTE85K2dPazdEd0FtZkJ5ekYxbWpwbVMzN0JrSkRXSmxrdUNlQ0lYY0g5WCtJVVFvVlBqdjhCN1F5QzFNQytlaWNBQUFBQVNVVk9SSzVDWUlJPSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzEiLCJGSURPXzJfMV9QUkUiXSwiZXh0ZW5zaW9ucyI6WyJ1dm0iLCJjcmVkQmxvYiIsImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJsYXJnZUJsb2JLZXkiLCJtaW5QaW5MZW5ndGgiXSwiYWFndWlkIjoiNzY2OTJkYzFjNTZhNDhkOThlN2QzMWI1Y2VkNDMwYWMiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjp0cnVlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImxhcmdlQmxvYnMiOnRydWUsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjp0cnVlLCJhbHdheXNVdiI6ZmFsc2V9LCJtYXhNc2dTaXplIjoxNjAwLCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjgsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6OTYsInRyYW5zcG9ydHMiOlsibmZjIiwidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN30seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTM1fV0sIm1heFNlcmlhbGl6ZWRMYXJnZUJsb2JBcnJheSI6NDA5NiwiZm9yY2VQSU5DaGFuZ2UiOmZhbHNlLCJtaW5QSU5MZW5ndGgiOjQsImZpcm13YXJlVmVyc2lvbiI6MjYyMTQ1LCJtYXhDcmVkQmxvYkxlbmd0aCI6MzIsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjoyLCJyZW1haW5pbmdEaXNjb3ZlcmFibGVDcmVkZW50aWFscyI6NTB9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0xMC0yNyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyNjIxNDUsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiS2Vuc2luZ3RvbiBWZXJpTWFyayBORkMrIFVTQi1BIFNlY3VyaXR5IEtleSIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjUxMDI3MDAzIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25Qcm9maWxlcyI6WyJjb25zdW1lciJdLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTEwLTI3IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjI2MjE0NX1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNi0wMi0xMSJ9LHsiYWFndWlkIjoiOTFhZDZiOTMtMjY0Yi00OTg3LTg3MzctM2E2OTBjYWQ2OTE3IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI5MWFkNmI5My0yNjRiLTQ5ODctODczNy0zYTY5MGNhZDY5MTciLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiVG9rZW4gUmluZyBGSURPMiBBdXRoZW50aWNhdG9yIn0sImRlc2NyaXB0aW9uIjoiVG9rZW4gUmluZyBGSURPMiBBdXRoZW50aWNhdG9yIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX3N1cnJvZ2F0ZSIsImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQi9EQ0NBYUdnQXdJQkFnSVVFTC9Xa1pmbnhEdzlzODVYelVTSmd5Y0pqclF3Q2dZSUtvWkl6ajBFQXdJd2NURUxNQWtHQTFVRUJoTUNWVk14RVRBUEJnTlZCQWdNQ0U1bGR5QlpiM0pyTVJZd0ZBWURWUVFLREExVWIydGxibWw2WlNCSmJtTXVNU0l3SUFZRFZRUUxEQmxCZFhSb1pXNTBhV05oZEc5eUlFRjBkR1Z6ZEdGMGFXOXVNUk13RVFZRFZRUUREQXBVYjJ0bGJpQlNhVzVuTUI0WERUSXhNRFl5TVRFMk1UY3pORm9YRFRNeE1EWXhPVEUyTVRjek5Gb3dlekVMTUFrR0ExVUVCaE1DVlZNeEVUQVBCZ05WQkFnTUNFNWxkeUJaYjNKck1SWXdGQVlEVlFRS0RBMVViMnRsYm1sNlpTQkpibU11TVNJd0lBWURWUVFMREJsQmRYUm9aVzUwYVdOaGRHOXlJRUYwZEdWemRHRjBhVzl1TVIwd0d3WURWUVFEREJSVWIydGxiakVnUVhWMGFHVnVkR2xqWVhSdmNqQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJMY3dVNUFkblFhWWJsTGlXNFhzd0Q4czZ6ZVErbkVBdktLanh5MzJQSzFDV1V4dnY1UkFnUTZ3VVFKSllWVTRSY3FWZmRyR0ZxSTlkSUF1djFuZWMzeWpEVEFMTUFrR0ExVWRFd1FDTUFBd0NnWUlLb1pJemowRUF3SURTUUF3UmdJaEFMdCtIejNsK2dmWkdFQW0vZWU1TWdwMklCQ3crVVlMU2c3cjJMWFJDOVNrQWlFQTF6anplajZ0ejlzb1Mwb3oyVnM0RDZBdHpvWFkySFdaQmdZdDhHMUtuaUU9Il0sImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIkZJRE9fMl8wIiwiVTJGX1YyIl0sImV4dGVuc2lvbnMiOlsiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiOTFhZDZiOTMyNjRiNDk4Nzg3MzczYTY5MGNhZDY5MTciLCJvcHRpb25zIjp7InJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1diI6dHJ1ZX0sInBpblV2QXV0aFByb3RvY29scyI6WzFdfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjItMDEtMjUiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MiwidXJsIjoiaHR0cHM6Ly90b2tlbnJpbmcuY29tLyIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiVG9rZW4gUmluZyIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjIwMTI1MDAyIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4zIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIyLTAxLTI1IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjMtMDEtMTEifSx7ImFhZ3VpZCI6ImEwMjE0MGI3LTBjYmQtNDJlMS1hOWI1LWEzOWRhMjU0NTExNCIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiYTAyMTQwYjctMGNiZC00MmUxLWE5YjUtYTM5ZGEyNTQ1MTE0IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkZlaXRpYW4gQmlvUGFzcyBGSURPMiBQbHVzIChFbnRlcnByaXNlIFByb2ZpbGUpIn0sImRlc2NyaXB0aW9uIjoiRmVpdGlhbiBCaW9QYXNzIEZJRE8yIFBsdXMgKEVudGVycHJpc2UgUHJvZmlsZSkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9LHsibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUIyRENDQVg2Z0F3SUJBZ0lRQlRtazNad2lsRlhqc1p5d0hEbk1nREFLQmdncWhrak9QUVFEQWpCTE1Rc3dDUVlEVlFRR0V3SkRUakVkTUJzR0ExVUVDZ3dVUm1WcGRHbGhiaUJVWldOb2JtOXNiMmRwWlhNeEhUQWJCZ05WQkFNTUZFWmxhWFJwWVc0Z1JrbEVUeUJTYjI5MElFTkJNQ0FYRFRJeU1EWXdPREF3TURBd01Gb1lEekl3TlRJd05qQTNNak0xT1RVNVdqQkxNUXN3Q1FZRFZRUUdFd0pEVGpFZE1Cc0dBMVVFQ2d3VVJtVnBkR2xoYmlCVVpXTm9ibTlzYjJkcFpYTXhIVEFiQmdOVkJBTU1GRVpsYVhScFlXNGdSa2xFVHlCU2IyOTBJRU5CTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFbmZBS2Jqdk1YMUV5MWI2aytXUVFkTlZNdDlKZ0dXeUozUHZNNEJTSzVYcVRmbysrMG9Bai80dG53eUlMMEhGQlI5U3Qra3RqcVNYRGZqaVhBdXJzODZOQ01FQXdIUVlEVlIwT0JCWUVGTkdobUUyQmY4TzVhL1lIWjcxUUV2NlFSZkZVTUE4R0ExVWRFd0VCL3dRRk1BTUJBZjh3RGdZRFZSMFBBUUgvQkFRREFnRUdNQW9HQ0NxR1NNNDlCQU1DQTBnQU1FVUNJQnlSejRPQWxSWjlIejlLVjdnMlFOdEMwQzhKeEgveExKWThGWkVtdEozc0FpRUFzcmVUMCtlTmtOY1VqSTloNU9QQ29INk5tc09rZ3ZFQUJKWnJGMDdBRGtZPSIsIk1JSUIyVENDQVg2Z0F3SUJBZ0lRRlFOS1crN3piZy83ZCtsVHlySVd3REFLQmdncWhrak9QUVFEQWpCTE1Rc3dDUVlEVlFRR0V3SlZVekVkTUJzR0ExVUVDZ3dVUm1WcGRHbGhiaUJVWldOb2JtOXNiMmRwWlhNeEhUQWJCZ05WQkFNTUZFWmxhWFJwWVc0Z1JrbEVUeUJTYjI5MElFTkJNQ0FYRFRJeU1EWXdPREF3TURBd01Gb1lEekl3TlRJd05qQTNNak0xT1RVNVdqQkxNUXN3Q1FZRFZRUUdFd0pWVXpFZE1Cc0dBMVVFQ2d3VVJtVnBkR2xoYmlCVVpXTm9ibTlzYjJkcFpYTXhIVEFiQmdOVkJBTU1GRVpsYVhScFlXNGdSa2xFVHlCU2IyOTBJRU5CTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFc0ZZRUVoaUp1cXFuTWdRalNpaXZCalY3REdDVGY0WEJCSC9CN3V2WnNLeFhTaEYwTDh1RElTV1V2Y0V4aXhSczZnQjNvbGRTcmpveDZMOFQ5NE5PenFOQ01FQXdIUVlEVlIwT0JCWUVGRXU5aHlZUnJSeUp6d1JZdm5EU0NJeHJGaU8zTUE4R0ExVWRFd0VCL3dRRk1BTUJBZjh3RGdZRFZSMFBBUUgvQkFRREFnRUdNQW9HQ0NxR1NNNDlCQU1DQTBrQU1FWUNJUUNCME5GUVNOMHo0bFd6L3ljMzZld3JUQ3p0dEsvcUZ2bGFQT0toK1QxbzZ3SWhBUDBvS0tBK2NpY3NEeTNZM24rVmxQOGVCM1BCek1raHZXLzlJU1hDdytWQiIsIk1JSUIyRENDQVgrZ0F3SUJBZ0lSQU1zOFlYVkJvQk51WFVqcWZDb1g3eTR3Q2dZSUtvWkl6ajBFQXdJd1N6RUxNQWtHQTFVRUJoTUNWVk14SFRBYkJnTlZCQW9NRkVabGFYUnBZVzRnVkdWamFHNXZiRzluYVdWek1SMHdHd1lEVlFRRERCUkdaV2wwYVdGdUlFWkpSRThnUlVFZ1VtOXZkREFnRncweU16QXhNREV3TURBd01EQmFHQTh5TURVeU1USXpNVEl6TlRrMU9Wb3dTekVMTUFrR0ExVUVCaE1DVlZNeEhUQWJCZ05WQkFvTUZFWmxhWFJwWVc0Z1ZHVmphRzV2Ykc5bmFXVnpNUjB3R3dZRFZRUUREQlJHWldsMGFXRnVJRVpKUkU4Z1JVRWdVbTl2ZERCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQkQyTEhIQVFxWWJkUjFXWmx1ZXJ0TTMwcldob3JZYXZXbU1WYTRuZFg5UFp3dVJFcExRNG0xbkVscVFLTW5SRTgvNEMrUnF3aWF2K21wSTRreGQ1ZTV1alFqQkFNQjBHQTFVZERnUVdCQlMzWlpqeUdsaFo5OU4xdkxvVFBYVlVhNFpFWURBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUE0R0ExVWREd0VCL3dRRUF3SUJCakFLQmdncWhrak9QUVFEQWdOSEFEQkVBaUFvRCtSNmtvbElXYU5KejRoejAzRDNnZXMzR2JNQmpBV3BrT1VnOWF5Rmd3SWdiRXc3QVlTeWs2OE92eGdYZXpnbmRUUlRFdVNXVCtmZFJuTGFCTnNhVHcwPSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFGQUFBQUFVQ0FNQUFBQXRCa3JsQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUJIWnBWRmgwV0UxTU9tTnZiUzVoWkc5aVpTNTRiWEFBQUFBQUFEdy9lSEJoWTJ0bGRDQmlaV2RwYmowaTc3dS9JaUJwWkQwaVZ6Vk5NRTF3UTJWb2FVaDZjbVZUZWs1VVkzcHJZemxrSWo4K0lEeDRPbmh0Y0cxbGRHRWdlRzFzYm5NNmVEMGlZV1J2WW1VNmJuTTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlrRmtiMkpsSUZoTlVDQkRiM0psSURVdU5pMWpNREUwSURjNUxqRTFOamM1Tnl3Z01qQXhOQzh3T0M4eU1DMHdPVG8xTXpvd01pQWdJQ0FnSUNBZ0lqNGdQSEprWmpwU1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJajRnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJZ2VHMXNibk02ZUcxd1BTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGh0Ykc1ek9uQm9iM1J2YzJodmNEMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzl3YUc5MGIzTm9iM0F2TVM0d0x5SWdlRzFzYm5NNmVHMXdUVTA5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5dGJTOGlJSGh0Ykc1ek9uTjBVbVZtUFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdmMxUjVjR1V2VW1WemIzVnlZMlZTWldZaklpQjRiWEE2UTNKbFlYUnZjbFJ2YjJ3OUlrRmtiMkpsSUZCb2IzUnZjMmh2Y0NCRFF5QXlNREUwSUNoTllXTnBiblJ2YzJncElpQjRiWEE2UTNKbFlYUmxSR0YwWlQwaU1qQXhOaTB4TWkwek1GUXhORG96TXpvd09Dc3dPRG93TUNJZ2VHMXdPazF2WkdsbWVVUmhkR1U5SWpJd01UWXRNVEl0TXpCVU1EYzZNekU2TlRrck1EZzZNREFpSUhodGNEcE5aWFJoWkdGMFlVUmhkR1U5SWpJd01UWXRNVEl0TXpCVU1EYzZNekU2TlRrck1EZzZNREFpSUdSak9tWnZjbTFoZEQwaWFXMWhaMlV2Y0c1bklpQndhRzkwYjNOb2IzQTZTR2x6ZEc5eWVUMGlNakF4TmkweE1pMHpNRlF4TlRvek1Eb3lOeXN3T0Rvd01DWWplRGs3NXBhSDVMdTJJT2FjcXVhZ2grbWltQzB4SU9XM3N1YUprK1c4Z0NZamVFRTdJaUI0YlhCTlRUcEpibk4wWVc1alpVbEVQU0o0YlhBdWFXbGtPakpGTnpGQ1JrWkRRelkzUmpFeFJUWTVOemhFUVRsRFFrSTJORFl6Umprd0lpQjRiWEJOVFRwRWIyTjFiV1Z1ZEVsRVBTSjRiWEF1Wkdsa09qSkZOekZDUmtaRVF6WTNSakV4UlRZNU56aEVRVGxEUWtJMk5EWXpSamt3SWo0Z1BIaHRjRTFOT2tSbGNtbDJaV1JHY205dElITjBVbVZtT21sdWMzUmhibU5sU1VROUluaHRjQzVwYVdRNk1rVTNNVUpHUmtGRE5qZEdNVEZGTmprM09FUkJPVU5DUWpZME5qTkdPVEFpSUhOMFVtVm1PbVJ2WTNWdFpXNTBTVVE5SW5odGNDNWthV1E2TWtVM01VSkdSa0pETmpkR01URkZOamszT0VSQk9VTkNRalkwTmpOR09UQWlMejRnUEM5eVpHWTZSR1Z6WTNKcGNIUnBiMjQrSUR3dmNtUm1PbEpFUmo0Z1BDOTRPbmh0Y0cxbGRHRStJRHcvZUhCaFkydGxkQ0JsYm1ROUluSWlQejQ3N0pYRkFBQUFZRkJNVkVYLy8vOEVWcUlYWmF2RzJPb3FjTEcyek9Pa3d0MEJTSnRxbGNYVjR1K2F1dGxXaGJ6azdQVUFNWTlIY3JLanROYnE4ZmVBbDhhQm9zeno5dnBkanNHR3F0RjNuOHVUc05TWnBjNkpzTlQ1K3YweFlLbnU4UGZmNS9MNDhmZy9mcmljekpnWUFBQURBRWxFUVZSNDJrUlVDWmJESUFqRlhaT1kxVGF0TmMzOWJ6a3NTWWMzcjRNRTRmTUJBYUQ2emw4eS85VE9nZXQ4ZDVqZk43OGJ3TS9kRENScFI1MjF6WGZvakhKMDVJSXloQkFVU1ZBT05kR3pCWXQyZjdLRnJma0phQWtIaDlGWmhjRFhIUmtUS285TUxpaEdhYXZJbW5WM3F5RVgwRXByZ3ovNER3VUQ3a0NIUm5kOFFGTjQzR280VVZtRERnemE0dzI3b2l6ZEEyK2NLK3V1VXBqam8yK3h3Yy80Mlc1MHg1TEdZZURCc1IwSFZJeDV4OGlGNjBDYmxiVEVFa0ZyMjdiTkRCVVZTcTFPS1ZQYkU2MmIzRUg4RnFCZzVPT09FdWMydDhaSmlxTU91R3ArY0tqZzd3VkdjZW96cU40cHhnVlBRa2pGWWdiVkpLRFVoRENqWXJhd1A1cTRFVGdDOWZJTVJIdGl0cFFjQ3ZKT0VMY2JNc1FnbmNpUmtsanB5UWp2RzQ0anFCVUVURmlCaTFQRUl5ZWtPenNXK1R5NWNMSG9zNVIrZE1TMUx0U1N4ZjNnUUhjelIyQ0k0Z01OcFc0SVJBMVFNYTZ0SjQrQzZ1SHVHRThtTkRJeUZxZy9PUC9NTVV1ZVM2SXE4UzkwZEFlQkpTRXkvcUtrSytCTnd6OGNZWTRqYjVKNnU0aVdDSTJCMVo1NkxXNWtFYzRoa2RNcHN2VUM1NTg1U1gwUXViY2dOcXlmZ0RGRWNUdCs0MC8wUzVOeDB3YUN3M09La2NPYkE1SW4wQVlwMDFwamp3Mm42MjZVRGp0SHdhMjhpSHVUS3F0cnYrcmVXNDFOWjZpR2xyN3V1TEpDZmtGdGN0Y0cwNHNnbTFlTlMrWmFEbnBhVEVyR295WDVKSzJpTXo4eHMwbk93V0djUERONDlxYUNkNGJ6Sm96RFptL2FCSytFb3pMdytYaE5CaVl3SGYwc2lPdTFYUGtHL3pLd3ZxWUtjZlN3REVjSC9vVWUwN2VzL1dROHJJeWcyRE9Yajh0amtaZHVEQi9iOGh6RGxsTU1PQ1M1QkVuZDUzNGY4dGkzVVpjNGtNczN4THlhZk1Tc0poZEc4WFBxak5rNXRBZ08yNWZlS0NoblZkRGovSjBGTWtPc1UveE1CdjB3RmhZZUVHZlZIMTNmdURVMHlERkxhNGZjN1JuV0hCZnVURlYydEVtTndhZGM3YWMzVVkyamZCbDdIVDM2ZmUzNGlRTzVtTkNGRkJXMDdLalBncWhPTFUwMXZaOFB1ZVoySkNsRlpOOGprVXM2OXVrYTllUHA2K0VmTDRBRjUrTnl3U2Jpckh0Y0I4TWwvZ2t3QUVqa0s2NEtqSFBlQUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzEiLCJGSURPXzJfMV9QUkUiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkQmxvYiIsImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJsYXJnZUJsb2JLZXkiLCJtaW5QaW5MZW5ndGgiXSwiYWFndWlkIjoiYTAyMTQwYjcwY2JkNDJlMWE5YjVhMzlkYTI1NDUxMTQiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsInV2IjpmYWxzZSwicGluVXZBdXRoVG9rZW4iOnRydWUsIm5vTWNHYVBlcm1pc3Npb25zV2l0aENsaWVudFBpbiI6ZmFsc2UsImxhcmdlQmxvYnMiOnRydWUsImVwIjpmYWxzZSwiYmlvRW5yb2xsIjpmYWxzZSwidXNlclZlcmlmaWNhdGlvbk1nbXRQcmV2aWV3IjpmYWxzZSwidXZCaW9FbnJvbGwiOnRydWUsImF1dGhuckNmZyI6dHJ1ZSwidXZBY2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOnRydWUsImFsd2F5c1V2IjpmYWxzZX0sIm1heE1zZ1NpemUiOjE0MDAsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6NiwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjo5NiwidHJhbnNwb3J0cyI6WyJ1c2IiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fV0sIm1heFNlcmlhbGl6ZWRMYXJnZUJsb2JBcnJheSI6MTAyNCwibWluUElOTGVuZ3RoIjo0LCJtYXhDcmVkQmxvYkxlbmd0aCI6MzIsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjozLCJwcmVmZXJyZWRQbGF0Zm9ybVV2QXR0ZW1wdHMiOjUsInV2TW9kYWxpdHkiOjIsInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjoxMjh9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0wOS0yNiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IkZlaXRpYW4gQmlvUGFzcyBGSURPMiBQbHVzIChFbnRlcnByaXNlIFByb2ZpbGUpIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNDA5MjYwMDMiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0wOS0yNiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI0LTExLTIwIn0seyJhYWd1aWQiOiI1NzUzMzYyYi00ZTZiLTYzNDUtN2IyZi0yNTU0Mzg0MDRjNzUiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjU3NTMzNjJiLTRlNmItNjM0NS03YjJmLTI1NTQzODQwNGM3NSIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJXaVNFQ1VSRSBCbGVudGl0eSBGSURPMiBBdXRoZW50aWNhdG9yIn0sImRlc2NyaXB0aW9uIjoiV2lTRUNVUkUgQmxlbnRpdHkgRklETzIgQXV0aGVudGljYXRvciIsImFsdGVybmF0aXZlRGVzY3JpcHRpb25zIjp7InpoLVRXIjoiV2lTRUNVUkUgQmxlbnRpdHkgRklETzIg6Lqr5Lu96amX6K2J5ZmoIn0sImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH0seyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDTXpDQ0FkbWdBd0lCQWdJVWJhclY4UHFDOUluazFka29EWHVPNXpoUDgyZ3dDZ1lJS29aSXpqMEVBd0l3ZURFTE1Ba0dBMVVFQmhNQ1ZGY3hLakFvQmdOVkJBb01JVmRwVTBWRFZWSkZJRlJsWTJodWIyeHZaMmxsY3lCRGIzSndiM0poZEdsdmJqRWlNQ0FHQTFVRUN3d1pRWFYwYUdWdWRHbGpZWFJ2Y2lCQmRIUmxjM1JoZEdsdmJqRVpNQmNHQTFVRUF3d1FWMmxUUlVOVlVrVWdVbTl2ZENCRFFUQWdGdzB5TWpBek1qTXdOREF5TlRkYUdBOHlNRFV5TURNeE5UQTBNREkxTjFvd2VERUxNQWtHQTFVRUJoTUNWRmN4S2pBb0JnTlZCQW9NSVZkcFUwVkRWVkpGSUZSbFkyaHViMnh2WjJsbGN5QkRiM0p3YjNKaGRHbHZiakVpTUNBR0ExVUVDd3daUVhWMGFHVnVkR2xqWVhSdmNpQkJkSFJsYzNSaGRHbHZiakVaTUJjR0ExVUVBd3dRVjJsVFJVTlZVa1VnVW05dmRDQkRRVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCUE5XTEtBR09VZlJwQk9IRWZqZExyV1A2c0hrRlRFUE94VWRPenU1K1NWQVI0S3FOb3R2d2x0OFpUTEZ5NnRDVi85Q3ExZlFFSmNibHBBRzNNMnYrcGFqUHpBOU1CMEdBMVVkRGdRV0JCUk1ycHovVW9vbUV4RklTaDZhS1pRRzI3SmJqakFNQmdOVkhSTUVCVEFEQVFIL01BNEdBMVVkRHdFQi93UUVBd0lCQmpBS0JnZ3Foa2pPUFFRREFnTklBREJGQWlBZUlIRWlyQ1ZDdU95YTZoL3JhSDRPWlpicXU5NDM0WlVHWUJHUXRnRFRuUUloQU95bEEzejZLQ3dHTG5iRkJ3aUtEd2pjaDBqRXV6Tmd2ZGhMdHlobkVtUkoiXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZ0NBSUFBQUQ4R08yakFBQUFDWEJJV1hNQUFDNGpBQUF1SXdGNHBUOTJBQUFLVDJsRFExQlFhRzkwYjNOb2IzQWdTVU5ESUhCeWIyWnBiR1VBQUhqYW5WTm5WRlBwRmozMzN2UkNTNGlBbEV0dlVoVUlJRkpDaTRBVWtTWXFJUWtRU29naG9ka1ZVY0VSUlVVRUc4aWdpQU9Pam9DTUZWRXNESW9LMkFma0lhS09nNk9JaXNyNzRYdWphOWE4OStiTi9yWFhQdWVzODUyenp3ZkFDQXlXU0ROUk5ZQU1xVUllRWVDRHg4VEc0ZVF1UUlFS0pIQUFFQWl6WkNGei9TTUJBUGgrUER3cklzQUh2Z0FCZU5NTENBREFUWnZBTUJ5SC93L3FRcGxjQVlDRUFjQjBrVGhMQ0lBVUFFQjZqa0ttQUVCR0FZQ2RtQ1pUQUtBRUFHRExZMkxqQUZBdEFHQW5mK2JUQUlDZCtKbDdBUUJibENFVkFhQ1JBQ0FUWlloRUFHZzdBS3pQVm9wRkFGZ3dBQlJtUzhRNUFOZ3RBREJKVjJaSUFMQzNBTURPRUF1eUFBZ01BREJSaUlVcEFBUjdBR0RJSXlONEFJU1pBQlJHOGxjODhTdXVFT2NxQUFCNG1iSTh1U1E1UllGYkNDMXhCMWRYTGg0b3pra1hLeFEyWVFKaG1rQXV3bm1aR1RLQk5BL2c4OHdBQUtDUkZSSGdnL1A5ZU00T3JzN09ObzYyRGw4dDZyOEcveUppWXVQKzVjK3JjRUFBQU9GMGZ0SCtMQyt6R29BN0JvQnQvcUlsN2dSb1hndWdkZmVMWnJJUFFMVUFvT25hVi9OdytINDhQRVdoa0xuWjJlWGs1TmhLeEVKYlljcFhmZjVud2wvQVYvMXMrWDQ4L1BmMTRMN2lKSUV5WFlGSEJQamd3c3owVEtVY3o1SUpoR0xjNW85SC9MY0wvL3dkMHlMRVNXSzVXQ29VNDFFU2NZNUVtb3p6TXFVaWlVS1NLY1VsMHY5azR0OHMrd00rM3pVQXNHbytBWHVSTGFoZFl3UDJTeWNRV0hUQTR2Y0FBUEs3YjhIVUtBZ0RnR2lENGM5My8rOC8vVWVnSlFDQVprbVNjUUFBWGtRa0xsVEtzei9IQ0FBQVJLQ0JLckJCRy9UQkdDekFCaHpCQmR6QkMveGdOb1JDSk1UQ1FoQkNDbVNBSEhKZ0theUNRaWlHemJBZEttQXYxRUFkTk1CUmFJYVRjQTR1d2xXNERqMXdEL3BoQ0o3QktMeUJDUVJCeUFnVFlTSGFpQUZpaWxnampnZ1htWVg0SWNGSUJCS0xKQ0RKaUJSUklrdVJOVWd4VW9wVUlGVklIZkk5Y2dJNWgxeEd1cEU3eUFBeWd2eUd2RWN4bElHeVVUM1VETFZEdWFnM0dvUkdvZ3ZRWkhReG1vOFdvSnZRY3JRYVBZdzJvZWZRcTJnUDJvOCtROGN3d09nWUJ6UEViREF1eHNOQ3NUZ3NDWk5qeTdFaXJBeXJ4aHF3VnF3RHU0bjFZOCt4ZHdRU2dVWEFDVFlFZDBJZ1lSNUJTRmhNV0U3WVNLZ2dIQ1EwRWRvSk53a0RoRkhDSnlLVHFFdTBKcm9SK2NRWVlqSXhoMWhJTENQV0VvOFRMeEI3aUVQRU55UVNpVU15SjdtUUFrbXhwRlRTRXRKRzBtNVNJK2tzcVpzMFNCb2prOG5hWkd1eUJ6bVVMQ0FyeUlYa25lVEQ1RFBrRytRaDhsc0tuV0pBY2FUNFUrSW9Vc3BxU2hubEVPVTA1UVpsbURKQlZhT2FVdDJvb1ZRUk5ZOWFRcTJodGxLdlVZZW9FelIxbWpuTmd4WkpTNld0b3BYVEdtZ1hhUGRwcitoMHVoSGRsUjVPbDlCWDBzdnBSK2lYNkFQMGR3d05oaFdEeDRobktCbWJHQWNZWnhsM0dLK1lUS1laMDRzWngxUXdOekhybU9lWkQ1bHZWVmdxdGlwOEZaSEtDcFZLbFNhVkd5b3ZWS21xcHFyZXFndFY4MVhMVkkrcFhsTjlya1pWTTFQanFRblVscXRWcXAxUTYxTWJVMmVwTzZpSHFtZW9iMVEvcEg1Wi9Za0dXY05NdzA5RHBGR2dzVi9qdk1ZZ0MyTVpzM2dzSVdzTnE0WjFnVFhFSnJITjJYeDJLcnVZL1IyN2l6MnFxYUU1UXpOS00xZXpVdk9VWmo4SDQ1aHgrSngwVGdubktLZVg4MzZLM2hUdktlSXBHNlkwVExreFpWeHJxcGFYbGxpclNLdFJxMGZydlRhdTdhZWRwcjFGdTFuN2dRNUJ4MG9uWENkSFo0L09CWjNuVTlsVDNhY0tweFpOUFRyMXJpNnFhNlVib2J0RWQ3OXVwKzZZbnI1ZWdKNU1iNmZlZWIzbitoeDlMLzFVL1czNnAvVkhERmdHc3d3a0J0c016aGc4eFRWeGJ6d2RMOGZiOFZGRFhjTkFRNlZobFdHWDRZU1J1ZEU4bzlWR2pVWVBqR25HWE9NazQyM0diY2FqSmdZbUlTWkxUZXBON3BwU1RibW1LYVk3VER0TXg4M016YUxOMXBrMW16MHgxekxubStlYjE1dmZ0MkJhZUZvc3RxaTJ1R1ZKc3VSYXBsbnV0cnh1aFZvNVdhVllWVnBkczBhdG5hMGwxcnV0dTZjUnA3bE9rMDZybnRabnc3RHh0c20ycWJjWnNPWFlCdHV1dG0yMmZXRm5ZaGRudDhXdXcrNlR2Wk45dW4yTi9UMEhEWWZaRHFzZFdoMStjN1J5RkRwV090NmF6cHp1UDMzRjlKYnBMMmRZenhEUDJEUGp0aFBMS2NScG5WT2IwMGRuRjJlNWM0UHppSXVKUzRMTExwYytMcHNieHQzSXZlUktkUFZ4WGVGNjB2V2RtN09id3UybzI2L3VOdTVwN29mY244dzBueW1lV1ROejBNUElRK0JSNWRFL0M1K1ZNR3Zmckg1UFEwK0JaN1huSXk5akw1RlhyZGV3dDZWM3F2ZGg3eGMrOWo1eW4rTSs0enczM2pMZVdWL01OOEMzeUxmTFQ4TnZubCtGMzBOL0kvOWsvM3IvMFFDbmdDVUJad09KZ1VHQld3TDcrSHA4SWIrT1B6cmJaZmF5MmUxQmpLQzVRUlZCajRLdGd1WEJyU0ZveU95UXJTSDM1NWpPa2M1cERvVlFmdWpXMEFkaDVtR0x3MzRNSjRXSGhWZUdQNDV3aUZnYTBUR1hOWGZSM0VOejMwVDZSSlpFM3B0bk1VODVyeTFLTlNvK3FpNXFQTm8zdWpTNlA4WXVabG5NMVZpZFdFbHNTeHc1TGlxdU5tNXN2dC84N2ZPSDRwM2lDK043RjVndnlGMXdlYUhPd3ZTRnB4YXBMaElzT3BaQVRJaE9PSlR3UVJBcXFCYU1KZklUZHlXT0NubkNIY0puSWkvUk50R0kyRU5jS2g1TzhrZ3FUWHFTN0pHOE5Ya2t4VE9sTE9XNWhDZXBrTHhNRFV6ZG16cWVGcHAySUcweVBUcTlNWU9Ta1pCeFFxb2hUWk8yWitwbjVtWjJ5NnhsaGJMK3hXNkx0eThlbFFmSmE3T1FyQVZaTFFxMlFxYm9WRm9vMXlvSHNtZGxWMmEvelluS09aYXJuaXZON2N5enl0dVFONXp2bi8vdEVzSVM0WksycFlaTFZ5MGRXT2E5ckdvNXNqeHhlZHNLNHhVRks0WldCcXc4dUlxMkttM1ZUNnZ0VjVldWZyMG1lazFyZ1Y3QnlvTEJ0UUZyNnd0VkN1V0ZmZXZjMSsxZFQxZ3ZXZCsxWWZxR25ScytGWW1LcmhUYkY1Y1ZmOWdvM0hqbEc0ZHZ5citaM0pTMHFhdkV1V1RQWnRKbTZlYmVMWjViRHBhcWwrYVhEbTROMmRxMERkOVd0TzMxOWtYYkw1Zk5LTnU3ZzdaRHVhTy9QTGk4WmFmSnpzMDdQMVNrVlBSVStsUTI3dExkdFdIWCtHN1I3aHQ3dlBZMDdOWGJXN3ozL1Q3SnZ0dFZBVlZOMVdiVlpmdEorN1AzUDY2SnF1bjRsdnR0WGExT2JYSHR4d1BTQS8wSEl3NjIxN25VMVIzU1BWUlNqOVlyNjBjT3h4KysvcDN2ZHkwTk5nMVZqWnpHNGlOd1JIbms2ZmNKMy9jZURUcmFkb3g3ck9FSDB4OTJIV2NkTDJwQ212S2FScHRUbXZ0YllsdTZUOHcrMGRicTNucjhSOXNmRDV3MFBGbDVTdk5VeVduYTZZTFRrMmZ5ejR5ZGxaMTlmaTc1M0dEYm9yWjc1MlBPMzJvUGIrKzZFSFRoMGtYL2krYzd2RHZPWFBLNGRQS3kyK1VUVjdoWG1xODZYMjNxZE9vOC9wUFRUOGU3bkx1YXJybGNhN251ZXIyMWUyYjM2UnVlTjg3ZDlMMTU4UmIvMXRXZU9UM2R2Zk42Yi9mRjkvWGZGdDErY2lmOXpzdTcyWGNuN3EyOFQ3eGY5RUR0UWRsRDNZZlZQMXYrM05qdjNIOXF3SGVnODlIY1IvY0doWVBQL3BIMWp3OURCWStaajh1R0RZYnJuamcrT1RuaVAzTDk2ZnluUTg5a3p5YWVGLzZpL3N1dUZ4WXZmdmpWNjlmTzBaalJvWmZ5bDVPL2JYeWwvZXJBNnhtdjI4YkN4aDYreVhnek1WNzBWdnZ0d1hmY2R4M3ZvOThQVCtSOElIOG8vMmo1c2ZWVDBLZjdreG1Uay84RUE1anovR016TGRzQUFBQWdZMGhTVFFBQWVpVUFBSUNEQUFENS93QUFnT2tBQUhVd0FBRHFZQUFBT3BnQUFCZHZrbC9GUmdBQUF0aEpSRUZVZU5yc2x0OUxrMUVZeDcvdk50ZTB2WE9rN3lTN3F5V0JZdm5qSWt0R1UwdkRDd2t0VjRLWHB2M3dCLzRCQmlJYS9RQzF3amtWVXhOc1V1dXV6ZDFrNmlCTEN4SUZ6Y0RYT1Rad1k4cjJzcjFycDR1WFp1b2dncnlKZlM4ZWVMNmM1M3c0NStFNUhJb1Fnb09VQ0Flc0dDQUdpQUVBeVg2TFpkbjE5WFdHWWRScTlUOGdrTjFxYTIwVkRsVlpjWlVRWXB1WktTMHRIVGNhOXl3ejZIdXJxNnMvenM2U1Aya1h3R0kyQXpqS3FIUTYzZnQzazRTUXBvWUdBTVdGUlh2S0xtb0xBQXdPRFB3ZG9MZEhEMkJrYU9oMzg0M0o1SEs1OXBUVjFkd0U4R3A4ZlArT1M0dEw1cmZtSDZHUWtPNzBvTHV6YzJqd3VTb3AyZEJyT0N5bms1S085UFgzWjJaa01Da3BxeXZmR0lZQmNMKzl3MnFkS0NvcUNnUUNBSGllRjJvZlAzeGtNcjFXMElyYXVscHRRWUhQN3dORjdlMkJObDhESU8zNENRQU5kK3U3dTdvQVNFQUJxS3VwSllSVTZhNERvR1h4cWFvVXBad1dBOWFKQ1VKSTRRVXRnRlBxa3duU1F3RDY5UHJvVnhRTUJ0dmIyaWlLZXREUndmTjhLQlRpT083Wms2Y0Erbm9OTE1zQ3lNbzh6Zm45SE1mbG5Na0NzTFM0T0QwMURVQjM5Um9oeE9sMHloTVM0aWlSM1c2UGJMc3pCM0Z4Y2JSQ1FRaFJKQ1pLSkJLeFdDeVR5ZVJ5R29CVUt2MHkveG1BVGxjcGk0K1h5V1FhalFhQXorZWJtcHdFVUY1UkRrQ2xVaFZxQzNnU25wK2JpejRIbk44UHdPLzNSNXhBZ012TnprNW1ra1dVQ01EcTZuZkJkemcyQkRDdFVBQndPbDIvZklkQWlnNElCb09SS0lqbmVRVk5iM20zaWkrWGlFSHArd3pwR2VsdXQvdWwwUWdnRUFpVVhTbTdkZWYydlphV3RMUzBoWVd2SCtZKzVaL055OG5OamY1VVNDU1NTSXc0NFhEWTRkaFFLcFhEdzhOaWlxcHZiQndkZVZGMW93b0F1N2FXbW5yTTBLUGYzdDYrVkZMYzFOeDhQdS9jNk5pWVNDU0tQc2tldDJkNWVkbmo4VVFjcjlkclg3ZTczWnRDeXJKclZxczFIQTRUUXBaWFZyeGVyK0M3TjkwV2k4Vm1zKzBmQ3lyMnE0Z0JZb0QvQVBCekFJNlZOcUdRUFVxbkFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xIiwiRklET18yXzFfUFJFIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiI1NzUzMzYyYjRlNmI2MzQ1N2IyZjI1NTQzODQwNGM3NSIsIm9wdGlvbnMiOnsicmsiOnRydWUsImNsaWVudFBpbiI6dHJ1ZSwidXAiOnRydWUsInBpblV2QXV0aFRva2VuIjpmYWxzZSwiY3JlZE1nbXQiOnRydWV9LCJtYXhNc2dTaXplIjoxMDAwLCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0Ijo4LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjEyOCwidHJhbnNwb3J0cyI6WyJ1c2IiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fV0sImZpcm13YXJlVmVyc2lvbiI6Mn19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0wMi0yMyJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjQtMDItMjMifSx7ImFhZ3VpZCI6IjlmNzdlMjc5LWE2ZTItNGQ1OC1iNzAwLTMxZTU5NDNjNmE5OCIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiOWY3N2UyNzktYTZlMi00ZDU4LWI3MDAtMzFlNTk0M2M2YTk4IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ikh5cGVyIEZJRE8gUHJvIn0sImRlc2NyaXB0aW9uIjoiSHlwZXIgRklETyBQcm8iLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQnh6Q0NBV3lnQXdJQkFnSUNFQXN3Q2dZSUtvWkl6ajBFQXdJd09qRUxNQWtHQTFVRUJoTUNRMEV4RWpBUUJnTlZCQW9NQ1VoWlVFVlNVMFZEVlRFWE1CVUdBMVVFQXd3T1NGbFFSVkpHU1VSUElEQXlNREF3SUJjTk1UZ3dNVEF4TURBd01EQXdXaGdQTWpBME56RXlNekV5TXpVNU5UbGFNRG94Q3pBSkJnTlZCQVlUQWtOQk1SSXdFQVlEVlFRS0RBbElXVkJGVWxORlExVXhGekFWQmdOVkJBTU1Ea2haVUVWU1JrbEVUeUF3TWpBd01Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRXJLVUkxRzBTN2E2SU9MbG1IaXBMbEJ1eFRZanNFRVNRdnpRaDNkQjdkdnh4V1dtN2tXTDkxcnE2UzdheVpHMGdaUFIrellxZEZ6d0FZRGNHNCthWDY2TmdNRjR3SFFZRFZSME9CQllFRkxaWWNmTU13a1FBR2J0M3J5elpGUEZ5cG1zSU1COEdBMVVkSXdRWU1CYUFGTFpZY2ZNTXdrUUFHYnQzcnl6WkZQRnlwbXNJTUF3R0ExVWRFd1FGTUFNQkFmOHdEZ1lEVlIwUEFRSC9CQVFEQWdFR01Bb0dDQ3FHU000OUJBTUNBMGtBTUVZQ0lRQ0cyL3BwTUd0N3BrY1JpZTVZSW9oUzN1RFBJcm1pUmNUanFEY2xLVldnMGdJaEFOY1BORFpIRTIvelordUI1VGhHOU9adXMreFNiNGtua3JiQXlYS1gyem0vIl0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUkwQUFBQVdDQVlBQUFEOS94OGxBQUFBQkhOQ1NWUUlDQWdJZkFoa2lBQUFCM0ZKUkVGVWFJSHRtazF5MjlnUngzOE5JdExTekFuTW5NRE1Oa21WNmFxcHluSjRBOU1uTUNTU1ZhRzBNTHdRc1JCbHdTY1FkWUtSVmxtbFJHNW1HK29FUTUwZzFDNVVTSFFXai9oKy9OQkV0bWNtK3E4SXZFYS9ma0Qzdi92MVk0Vk5PQXhhL1BtN0tqLytZMW9hOC93cWYvbnIzL25UZDNmVzhXZjhadUd1SFduM213Z1h3QnZyZUdVdkJCcEFnOFBnSFo5Nnd5OWk0VE8rTGRyOUppS3ZWbGRqQnIyUll4WHNudFNCaXcyS2hvaThUYTRkTGpnTVdrOW82ak4rQ2VqMFBVUm13QmlKcm9tbzBRa2FaYWZwbnRTSjVBYVI2Z1pGYjB2M254M25Od2lwTXVpTlVCMmlFbEtKSnFEMWZIcnkvQ29xRjJzZHhqakYrZG81ak9Pd01WVmw2VTZpYTA2UEo3bnhUdEFBWHErdXhpeVk0cEk2NldMK21kQ2Y1WjdwbnRSUjUvdFVoa3QrRjFXSjVCVWl0WklOcWxPV01pYnNwYlZZcCsrQnZGaHJkNnczN0UxTllGVmVJMnA1VHpKaDhlOXh5Y1o0YlNxdmNzK0pqdmlQM0NXMlBNYU9HRjVRbzZLdlMyc1ZIWEY2Tk1ienE3ajc3ODNhWmNiWjN6N241THlnbHJ6amlMdmsrMFdZT1VTcXFOWVlIRS9vQk0yODA3aDdWeUQxekoxckJyMVJzdUJTeXRJRFZGb0lyNUpiRGhlMCt6UE9qcTZzQ3hZOFlxZFFSNEJKUWFJQmZGajkvZ2p6RVBZUEFQTWlLM3QvQVBLTUZvbUhKSTUxRC9QUDZONFFrZGZZSUdLcXVWd3RKdXVESVliTEdKaWlFaUpxMTQxQ1pXL0dZWENRNk82ZTFJbWNINEFhb2dWeEFWZkhxM1Uvemc2QWRoQWl2QWV4bUNMUUNlS2ExRGZxRlNEdk5DNjFaTnpSTVdEc0Z1cXJKUTFCakhPaHN6UTl0ZnREeUx4azVaYkZ2SlVzV3ZXSGdra2ZHUnlGTE9jTmxOdkMyTVdxTHZyZllTSTJUSzVGM2hyalYvQ0NXaTVkUm5qV0tMZkI0U0tuNjZrZ1VrWDBITTgzakJMSkZjTFR6OU1KZk9Nd1h3aExRdHBCQ1BJVHlFKzR0Rmc4REEzVEhBYXRUS1FhaDFuT0c0VCtETSt2bG1vYzFVdk9qb3huR3BrR2xmMVJ3amdpVlpRTDRJOVBZdnlnNTlQdXR4QjVDVUFGRC9ETWIvV1RLRk85NDlOUk9UV3FYaUlTVTI0Tko4T1lEZzNpeUVvZk9BQXBNaUFzNXVWN1dkMVpsaFNwNHU3WGdWRmk5enJkb211Y2ZJc2RTak1oR05VN0lDNWM4N0xHanNmRHBFQ3ZlTnMxa2FybkdYcTdaMGt6aVZaM2Z3aGtjL2MxWjBjcEE1MGVUNnlPZzlUcEJENkRudit6REM1Q3hWKzFBQUI5aStmN3NGL05PYnVJdlJBWG1TWnBGcURUYnlXczZ0Z1lRQ1k1K1UzSTZ4N1JEcHE1ZEYzRVFxNXk5Y2htNVp2dHlNNGowbG9yMndsMm0yNUh1RlRVejdGSWhKZGZsRmJUU09hVzVTcGx4VVZ6ekNhaFA2Tjcwa0tkZjZhUDZudmlYR21EOHBKdVAxOGJSTHkwcFdjKzlZYkp4elpSN0tGYVM1MWR4d3lPZHZ2UTN4SVZibWozZlpZUDF6dW5VUnU2SjNXeTVkR3VUdjRFY0JGcFpxN3YxKzU4aWluTDNic3BGTTF3ZWp5aDB4OG5VU3hTeFF0cWF5TkxhS0VGZHJBNVREcm9BemZHSG4yZjMrWEpiczRaVWN2VmJ2RU9JWStiVW5TcXpqZzcrdjFHM1NvTnNMQ01TV0dHRVlVYXlCQjNIOXJCRU9GeXd3Y3YyMkdDbzRFNjloM3VWNEJEdkNzQlVQNjFSczZTc3NTZUo3VkE5enRUOFE0d0wvY2FvRlJqYmFieEZpb2pWRWFaK2dQZ25taHUzK1dWZEt4cFEyUjFaMWxWOVM2eGFmbmdvWHBwZmRZNHh0T2s4SzhFRnpUREROUTRERnA1dHBFWkVqVUlqMWRidlA0UStONmlLKzR4Wkl1KzhjYlpWZStRUXFRcnRYemhXTUFDRDdjdy8zSUR5NnlkbTF1Y3FHVk5FWVlaQ3M2K3JsaTE0aHBIVTV2TUhDMjh3TWZWSm9wWFdPTUh2R0JZQ2pDYkhWSFJycThQRnlWRVNPbGE5Snp1eVNScHVpM202WXMxUFlGc04vZysrV1g2T0lVZXc1YVBLVElzRmNvbTZqN1lIOEF3Vjd1ZjByM3llU3ViWlhjNHUrUitZOWV1TmNJYlZLdUlaRnNTWWFscEdkdHUyZ2ZoNm4xZEVUTzk2WlhrMTdISkRyTXJTcTgzbFFGYlpiVytwUzdJd1ZrMTRhNHpocG90ZHR4bmlSM0diTXZ6UFFHSlRFUEsxc2RSUG4reDRpd2JmY0oyQm9oM09GL0tudUk3UkxjMzZBYTlFWnB4a3VpUmZSenpYZEtncld3S3RJS3NtMm1PbWw1U3B0MWkyZUlYWVBvMGkzbUx5dDRrb1V5UktoRTNkRS9lY0hvODRUQm81WG9iQUJIditIUThzWjVWS2JlYzlVcjcrMThQOUp4T1VIWkdpUTZzREFMbUhicjdVK0JGcnQxZ2pqaktUcVRVY2cyL1NtVFJ1OFVPMWF0TWdkMWFIZEZNckxJd0lpMHJQdEFPM2lKTVVhMUR0bDdUcllGbG5NWnNsNXVyWXM3UVpldzQ3YjVuSWlkRFh4RnArejF5aGdqWm92U081VU5qMjhTL2JLd3I4amZzV0VKL1JxZnZKOGNBcXUveGdpRktsZVNJSUR0RlZxOWVNckE1NHhZN2x1TGowaVQ3ellwenhiSVMrYWpUU0dXcEFUVWtZNGh5dS9iNEo0UDA3T24wZUVMM3BJRTZlY2NwZGt0VkwzTmQxM3dqNng1SG01eHQ2RCtvVEpMekYxdFJGekZkblgrc0wvcDJrZGsyVC9tQnpVVTdwSjNick81c04zZHdGTkx1MXhGcUNDWU5MQmppOGhFMFBsdXFBeTlXRzVBWkVWZjVMdllqN0FoN1U3eWdUZ1VQMFhxcUcrTUF3cFRGS2dXZUhrK01yUG9nOWZ4MzB6SElpT1U4TEU1bG5iNTB4OUJwNmpoWm1PT0RmRitsRTJSYlRHKytacFBwR2Q4RzVmL1RuQjVQVmdYdWZYNUF4eVdIeVNMaTNiUEQvSC9BL3MrOW91TW90eXdlbWxaWkkzRHcvSGZQWnhoMFQrcDArcVBraU4rR1R2OVh2RXQ2eHMvQmZ3R2hobW5ZY2F5ZGdRQUFBQUJKUlU1RXJrSmdnZz09IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMV9QUkUiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6IjlmNzdlMjc5YTZlMjRkNThiNzAwMzFlNTk0M2M2YTk4Iiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWV9LCJtYXhNc2dTaXplIjoyMDQ4LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0IjoxMCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjo5NiwidHJhbnNwb3J0cyI6WyJ1c2IiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fV19fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMC0wNy0xNyIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiSHlwZXIgRklET8KuIFBybyIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMTkwODA1MDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjMuNiIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4wLjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMTktMDgtMDgifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIwLTA3LTE3In0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiYmZmOTQ2ODM4YmM3M2JiNTMzMzM4ZTY3Nzg1ZWZiMGEwOWQxMzNiYiJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyJiZmY5NDY4MzhiYzczYmI1MzMzMzhlNjc3ODVlZmIwYTA5ZDEzM2JiIl0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IEJpbyBNdWx0aS1wcm90b2NvbCBFZGl0aW9uIChFbnRlcnByaXNlIFByb2ZpbGUpIn0sImRlc2NyaXB0aW9uIjoiWXViaUtleSBCaW8gTXVsdGktcHJvdG9jb2wgRWRpdGlvbiAoRW50ZXJwcmlzZSBQcm9maWxlKSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk3MjgsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6Mn1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiLCJyZW1vdGVfaGFuZGxlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRFNqQ0NBaktnQXdJQkFnSVVUbmJiR0lSMk5IdnpxSUtGQWVRd0cxWEJpczB3RFFZSktvWklodmNOQVFFTEJRQXdMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3SUJjTk1qUXhNakF4TURBd01EQXdXaGdQT1RrNU9URXlNekV5TXpVNU5UbGFNQ1l4SkRBaUJnTlZCQU1NRzFsMVltbGpieUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRUVnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBT3NYajNrMDRCYW40VFlkdFpLcUQvT1BKeHlEeWFQbUNCVUZVaWFaSWdUdGVabmozWDI1RGhncFpaWHNDNEQweWRJY3JsQTZ3TlVJbk9STC9MOXpCYlRFSU1BVk1HbzZnN1VLQW1iMk1GNkFIYm5oWUpkOWVpa3VwVk5XU2hITllOYzRHQmRPMVlONkFmVXF2SmhIYmUzVjRTTk1QbUJSRUtKUFZ6N1Rod2dtZ2dUZThXczJLMC93c3F2MndTRTdwYkNCc1VaaElYNTFiWk0zcHFEd0pQVG1SRkV2dDAvNnRHNWVPOEYzajE0T1hxZkVobWpuMVZ2eEtEWVFPTFpBeEN3d2dDMFA0Q2RmV3YzeThQU1I4STM1NGhPMVkrR3pOanZJcVgzOE5LTHl3dUlZSEZlck94Tmx4RU1CdkZoWUJ1UnVZQWtrZ1VhUHFONlVCaHNJTHJzQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZDQ29SSGhpeU5uYm5YUldJTDZaQlhvQlg5WVRNQjhHQTFVZEl3UVlNQmFBRkNBb1VDRWJwRnBiNkZQTG5aM0Y1UHhzTDNvZk1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQ1FGYWZKSTEvNVdnOUNFRWltRTFSUDU0UmdRd1ROVE9PUXNMQUNUZStySXRsRlF6QzlaRGhyVjgyOHlYN2p6eStBQXNwM2l6SzdUMXRoMmRsN20rdHUwc3cyUGEvb2xjMDJudDZQeUl3MzQ4Z2FIemhJMSswS0U0NXF4dkZEZUwybE14YlBmQ1l2eUVFYVl6amlRRUxVNTk1MXBYR1d5S01hLzRmTHRPK1pLT1hoTXVWZXE0clhEUEk1NFc2SkhPaUFhaUtkaXcrNWUzYzJrdC9qRklRdE02dk1YZzlMTkZ6ZGpFVE50MjBWWDlRZXZScEZaZnVjTUc5d0NhUURvRmxQenBUTUpLaFBldi9pbUptWlloS2ZyMGxMY2VtdHFqSXhMQW9xWmRPWWZIQmc2K3ZBY2RQSS9pYXVHcFVBdjdYK1VLTm1Ed2paMkJhSDRzTHdoQjJtIiwiTUlJRFNEQ0NBakNnQXdJQkFnSVVEcUVSdys0Um5HU2dneGdVZXdKRkVQRFJaM1l3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRREk3WG5IK1p2RHdNQ1FVOE04WmVWNXFzY3VibHZWWWFhUnQzWWJheG45Z29kTHg1c3dIMGxYcmRnamg1aDdGcFZnQ2dZWVg3RTRibDF2YnpVTGVtck1XVDhOM1dNR1VlOFFBSmJCZWlvVjdXL0UraFRaUC8wU0tKVmEzZXdLQm82VUxlTW5mUVpEclZPUkFrOHdUTHEydjVMbGo1dk1qN0p0T290S2E5SjduSFM4a0xtelhYU2FqMFN3RVBoNU9BWlVUTlY0enMxYnZvVEFRUVdyTDQvSjlRdUt0NldDRkU1blVOaVJRY0ViVkY4bWxxSzJieDJ6Nm9rVmx0eURWTEN4WWJwVVRFTHZZMXVzUjNEVEdQVW9JQ2xPbTRjcnB3bkRSTFZIdmpZZVBHQkIvL3BFeXp4QS9nY1NjeGp3YUgxWlV3OWJuU2JIeXVyS3FiVGExS3ZqQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJUcXQwS1FuZ3g3WkhyYlZId0R1bnhPbjlpaFlUQWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQXFRYUNXTXhUR3FWVlg3U2s3a2tKbVV1ZVRTWUt1VTYrS0JCU2d3SVJubHc5SzdIZTFJcHhaMGhkd3BQTmlrS2ptY3lGZ0ZQemhJbXdISmd4eHVUOTBQdzN2WU9kY0pKTmt0RGczNVBYT2Z6U24xNWNGQXgxUk8wbVBUbUliOGRYaUVXT3B6b1h2ZHdYRE00MVphQ0RZTVQ3dzRJUXRNeXZFN3hVQlpxMmJqdEFucS9ORFVBN2JlNEg4SDNpcEMrLytOS2xVcmNVaCtqNDhLNjdXSTB1MW02RmVRdWVCQTduMDZqODI1cnFEcXNhTHM5VGI3S0FIQXc4UG1yV2FOUEcya2pLZXJ4UEVmZWNpdmxGYXdwMlJXWnZ4clZ0bjNUVjJTQnh5Q0pDa1hzTkQwNWRDRXJWSFNKSXMrQmR0VFZOWTlBd3R5UG1ueWIwdjRtU1R6dldkdz09IiwiTUlJRFJ6Q0NBakdnQXdJQkFnSVVleDluVDl2d1pOWFM0ODNMZGlZR2Z3MlNqU293Q3dZSktvWklodmNOQVFFTE1DNHhMREFxQmdOVkJBTU1JMWwxWW1samJ5QkJkSFJsYzNSaGRHbHZiaUJKYm5SbGNtMWxaR2xoZEdVZ1FpQXhNQ0FYRFRJMU1EZ3dNVEF3TURBd01Gb1lEems1T1RreE1qTXhNak0xT1RVNVdqQW5NU1V3SXdZRFZRUUREQnhaZFdKcFkyOGdSa2xFVHlCQmRIUmxjM1JoZEdsdmJpQkNNaUF4TUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUF1MU1ldm55OWR5TzlaVUMzOVNvTWhMY1IvRFhydEYvY2lNMTJ0Y2l5MkVYQVo2TWtyaXZWdENmRVZNOVg2SVNURW5CUDZ1U1lZb3Y2cHB2Nk82SmgyTkhtWW00dytKblM0Vm5DUFU3bUhBTWZWSTJNR1RUTVZPZXcweFVzRzdzSVNJa0lEVUJtdWs4WUs5YzV6aWM5K3ZGUUdMSWtzZFhPNWlWRklnTkc1M2NHWEQ0Wkxab0FQaXUwUEVvenhBcVlJYUk0Z3hLaE9BM1M4L1c4bUlXc3U2b2Z5ajRHdmtGRzZaN2t5RjMxMDdQN213RkhMckkzRU5hUFdNT0ZjVGFHYTBkdysvdlZSd2pSY0VaQlZzdXVULzg3Y2tTczBhNXBrdDN2WkJsYVllVDhwelNyZVY3bW93Y0lNOTBMMmlhQVRsUDBueG1hRTZuT3lUYm9qRlZsMndJREFRQUJvMll3WkRBZEJnTlZIUTRFRmdRVVNYRWgzc2EzYnREdXJtNE1NL0M3UzFsUnV1WXdId1lEVlIwakJCZ3dGb0FVNnJkQ2tKNE1lMlI2MjFSOEE3cDhUcC9Zb1dFd0VnWURWUjBUQVFIL0JBZ3dCZ0VCL3dJQkFEQU9CZ05WSFE4QkFmOEVCQU1DQVlZd0N3WUpLb1pJaHZjTkFRRUxBNElCQVFCNUdjM2hhZnRwN2hLc0Vac28raS9aNW5SdXFkbXpHMldDbFVvUlVxYmFQeWdsbkpEaktSL2tmZ09sNmliYkYvenRobTNLbVhRN0hjRElQMnhNZEc3VTJMMmltYkpRSHFQZi9oMkhxb2piNHJaZ3VlKzZXNGt0U1I1ZWxSOUwxcllxRS9TR1lNNGlFS29WUVN2N1JUMXJ4SWVXaUtzdy9WeHhpL1FPbnN4M0Y3eDgwQ0NZZ0I0RTN5UXg4VlRXNDQwaFRFd1RBMWVNSE9peDMydFB0eXlISWE4UFZWSWZWcEhRSkJhTVZ2djUwOFVFandrYlUycm5qZnpvU1ROUzlBNWpVUThtQlN2ZTk1cmpCMGRvOThFVStEeGRCcVgyK0g2aTV3bElDRmd6aGR6Y3NuZTloR0tUNmx6VFg0Y0lkSnNyWTIreGxlSzBGRlF5NmxHRVZMRWUiLCJNSUlEUGpDQ0FpYWdBd0lCQWdJVVh6ZWlFREpFT1R0MTRGNW4wbzZaZi9iQndpVXdEUVlKS29aSWh2Y05BUUVOQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU1aNi9UeE04cklUK0Vhb1B2Rzgxb250TU9vLzJtUTJSQndKSFMwUVpjeFZhTlh2bDEyTFVoQlo1TG1pQlNjSVpkMVJueDFvZDU4NWgrL2RoSzdoRW03SkFBTGtLS3RzMWZPNTNLR05MWnVqejVoM3dHbmNyNGh5S0YwRzc0Yi9VM0s5aEU1bUdORDZ6cVljaENSQUhmcllNWVJERjRZTDBYNEQ1bkdkeHZwcEF5Nm5rRW10V21NbndPM2kwVEF1Y3NyYkU0ODVIdkdNNHIwVnBnVmRKcHZnUWppVEpDVElxK0QzNWh3dFQ4UURJdituR3ZwY3lpNXdjSWZDa3p5Q2ltSnVraFl5NktvcU5NS1FFZHBOaVNPdld5RE1UTXQxYndDdkV6cHc5MXUrbXNVdDRyajBlZm5POXMwWk93ZHdNUkRuSDR4Z1VsNVpMd3JyUGtmQzEvMENBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUI4R0ExVWRJd1FZTUJhQUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUU13RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCRFFVQUE0SUJBUUMzSVcvc2dCOXBaOGFwSk5qeHVHb1grRmtJTGtzMHdNTnJkWEwvY29VdnNyaHpzdmw2bWVQTXJiR0pCeUoxWG5xdUI1c2djUkVORnhkUUZtYTNtaW84VXBmMW93TTFacmVYckowbUFERzJCcGxxYkpueGl5WWErUjExcmVJRlRXZUloTU5jWktzRFpyRkF5UHVGakNXU1F2Sm1OV2U5bUZSWUZnTmhYSktrWEliNUgxWGdFRGx3aWVkWVJNN1ZvbEJObGxkNnBSRktsWDh1c3Q2T1RNT2VBRGwyeE5GMG0xTFRoU2RldVh2RHlDMWc5K0lMZnozUzZPSVlnYzNpcm9SY0ZEMzU0ZzdyS2Z1NjdxRkF3OWdDNHlpMHhCVFByWTk1cmg0L0hxYVVZQ0EvTDhsZFJrNkg3WGszNUQrV1ZwbXEyU2gveFQ1SGlGdWhmNHdKYjBiSyIsIk1JSURTakNDQWpLZ0F3SUJBZ0lVUjM4bXEyNlNmMnN6VlYyQmRHNldFTjdrdVdVd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVJZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU5ZMFdiOW9Qb1JvS29ReVdQYUpwejExdnJXVGc2elR0bU5qMlZvS1JueXZLR1JxcHpiODN3NWw2WUE5NlVZa1lCRFFQMGlsTzJEUGU2d1dxVlI1ekRmUnpkY0g4YmgrTDdkR0d2YWU2aFJUWmhrRmtDcFhEczRIY2NrbnJEZjhGQ2xKN0hlMzlKZjQyL0cxUW0yeno5V1dtclBYdGdpSy94MDVHanNRZkd1REcxemY1UVRVVWllOGx3eW1LM1RmZE92TmVlSkFBUGUycG43SXRmUmIrclZyTldpRHpsUm4ydk5uWjJ3UG80d0gvV0o2ZGhYWkcrck1XVCthNkJvY2cxVWZJdzZrZHVuRzRiVHBaenN2YWNGWXlSMG1wZitEZU9ucFNXQW15d0pXSHZUbGYyWVh4RnllWGNUQUNkUWxjTU5HSjJWaFpRNDh4dFA1L1JCUC84a0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ2h5NDJva2lxY1RTMWlxYS9IUldqa0JuNEgvTUI4R0ExVWRJd1FZTUJhQUZPcTNRcENlREh0a2V0dFVmQU82ZkU2ZjJLRmhNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUFuK1JISVBidE1FRE5kVDFnOEgvUml0QWtVZExnQXQxdFdHV25sajlrbmJ2NC80R2xYN0M5cDQ1ZWZQTzkvYVpMNk9WMVhSS0JpNkttdEJXNUs3bnVZRW5NeC81QnFCU2JMVDdyaGR1QzQ5VEJlTWI5UEhkWHNUbFNWTlllZnIxZEdpZHI0ajB4VkJRTGIxcmtuREFiZFdEektmdm5heUtPOEZyd2U3SHg4NDNNRy9ySitjMFhydVV2YmZWVENITGlJV2hNN29ORGhMOHhvYjZ4VW85S0xLY1NMK0l0WXNPMy85V2I4UTlHanNxTDRGWHNEY0cxU2FZaDdLcGZ1TW1PaXhxekpaTzJuSWljUFlSZzFJMlN1aVVmWU83MHRtZEhjYmwra1NRbVNZdDdycTR2aUlMZzJHeDNqOXJJVHVXVGpiYVVhU1NReGdPbU1TSHV5ek1BQyIsIk1JSURTRENDQWpDZ0F3SUJBZ0lVVWNtTVh6UklGT2dHVEswVGIzZ0V1Wllaa0JJd0RRWUpLb1pJaHZjTkFRRUxCUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JCSURFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURtNTU1YldZOVdXK3RPWTBySVdIbGRoK2FOYW5vQ1pDRmg3R2szWVpyUW1QVXcwaGtTRzZxWUhRdFArZlp5UzMzVkVydmcrQlFxbm11bWdOaGZ4RnJrd0VaRUxlaWRCY0M4QzRBZzRucXFpUFdwenN2STE3TmN4WWxJbkxOTEZjWlkvK2dPaU42Wk9UaWhPNS92QlpNYmo5cmlhQWNxbGlZbU5HSlBnVGNNR2FFQXlNekVNTnkybm02RXArcGpQNWFGNmdpMjF0L1VRRnN1SjFqMlJqL3luTS9TZFJ0K2VjYWw1T1lvdHhIa0ZiTDl2dnYyQTJPdjVJVFpDbHc0Yk9TOW5weXBRaW1PWjVRQVl5dG1ZYVFwV2wvcE1ZejZ6U2o4UnFrVkRORUpHcU5mVEtBMml2TFl3WDZsU3R0TVBhcGcwSjg0bDlYMHZvVk4vRnBTNFZDVkFnTUJBQUdqWmpCa01CMEdBMVVkRGdRV0JCUWdLRkFoRzZSYVcraFR5NTJkeGVUOGJDOTZIekFmQmdOVkhTTUVHREFXZ0JUUzd1OWFJbzA2YlZ3amx6M3loZFVtOFNWN2tqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQTRHQTFVZER3RUIvd1FFQXdJQmhqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFZTXpnTHJKTElyME9vdlFuQVpyUklHdWFiaUhTVUtTbWJMUldwUmtXZUF0c0NoREVIcFhjSi9iZ0ROS1lXb0hxUTh4UlVqQjRDeWVwWWV2YzNZbHJHOG83ekh4cGZWY2FvTDVTZXVKa3pIeEtuNGJUYVNwOStNdndhbW5wNjRrWk1pTmJGTGtuZlA5a1lLb1JIa01XaGVSSjFVc1AxejRTY21rQ2VJTGZzTXM2dnFvdnFqV0NsRnNKcEJjc2x1WUhXRjdiQkoxbjRSd2crQVRFb3BZNElnR3Y2WnZ3YytBOXIrQVQyaHFwb1NrWW9BbCtBTll3Z3NsT2Y5c0plMFYrVEE5WVkvVWxhQm1QUFRkMC8vcjl3dmNlUFdaa1BqS29BQy96VU5oZkRiaDRMVjhHSHMzbHlYMlhvbUwvTE5jOEpZenlJYURFaEdRdmVvUGhoL3RyMWc9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwiaWNvbkRhcmsiOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJwcm92aWRlckxvZ29MaWdodCI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsInByb3ZpZGVyTG9nb0RhcmsiOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0ifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNi0wNC0yNSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk3MjgsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWXViaUtleSBCaW8gTXVsdGktcHJvdG9jb2wgRWRpdGlvbiAoRW50ZXJwcmlzZSBQcm9maWxlKSIsImNlcnRpZmljYXRlTnVtYmVyIjoiVTJGMTAwMDIwMjYwNDI1MDA4IiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25Qcm9maWxlcyI6WyJlbnRlcnByaXNlIl0sImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjYtMDQtMjUiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NzI4fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI2LTA1LTAxIn0seyJhYWd1aWQiOiJiOWY2YjdiNi1mOTI5LTQxODktYmNhOS1kZDk1MTI0MGMxMzIiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6ImI5ZjZiN2I2LWY5MjktNDE4OS1iY2E5LWRkOTUxMjQwYzEzMiIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJEZWVwbmV0IFNhZmVLZXkvQ2xhc3NpYyAoVVNCKSJ9LCJkZXNjcmlwdGlvbiI6IkRlZXBuZXQgU2FmZUtleS9DbGFzc2ljIChVU0IpIiwiYWx0ZXJuYXRpdmVEZXNjcmlwdGlvbnMiOnsiZW4tVVMiOiJEZWVwbmV0IFNhZmVLZXkvQ2xhc3NpYyAoVVNCKSJ9LCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQ25UQ0NBa1NnQXdJQkFnSUljYURhdVRSNkFJNHdDZ1lJS29aSXpqMEVBd0l3Z2FveEtqQW9CZ2txaGtpRzl3MEJDUUVXRzNOMWNIQnZjblJBWkdWbGNHNWxkSE5sWTNWeWFYUjVMbU52YlRFTk1Bc0dBMVVFQ3d3RVJrbEVUekVaTUJjR0ExVUVDZ3dRUkdWbGNHNWxkQ0JUWldOMWNtbDBlVEVRTUE0R0ExVUVCd3dIUlc1bmJHbHphREVRTUE0R0ExVUVDQXdIUlc1bmJHRnVaREVoTUI4R0ExVUVBd3dZWm1sa2J5NWtaV1Z3Ym1WMGMyVmpkWEpwZEhrdVkyOXRNUXN3Q1FZRFZRUUdFd0pWU3pBZ0Z3MHlOREF5TWpjeE1qRTFOVFZhR0E4eU1EYzBNREl5TnpFeU1UVTFOVm93Z2FveEtqQW9CZ2txaGtpRzl3MEJDUUVXRzNOMWNIQnZjblJBWkdWbGNHNWxkSE5sWTNWeWFYUjVMbU52YlRFTk1Bc0dBMVVFQ3d3RVJrbEVUekVaTUJjR0ExVUVDZ3dRUkdWbGNHNWxkQ0JUWldOMWNtbDBlVEVRTUE0R0ExVUVCd3dIUlc1bmJHbHphREVRTUE0R0ExVUVDQXdIUlc1bmJHRnVaREVoTUI4R0ExVUVBd3dZWm1sa2J5NWtaV1Z3Ym1WMGMyVmpkWEpwZEhrdVkyOXRNUXN3Q1FZRFZRUUdFd0pWU3pCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQktqWGJOMnEwTWtWc2xvNlN6SThnNzlkdzIwLzMrK1FSbHJRaE0zaHVwcFo1aTVFbFNGaXl3eldocGlnODFBcTBTSXUyS21sVFlwdDg2bUxMK2RBWjVHalVEQk9NQjBHQTFVZERnUVdCQlMwR0N3Tk1pNnZXYUpsQnJ5K2dPbmhZc3J0b0RBZkJnTlZIU01FR0RBV2dCUzBHQ3dOTWk2dldhSmxCcnkrZ09uaFlzcnRvREFNQmdOVkhSTUVCVEFEQVFIL01Bb0dDQ3FHU000OUJBTUNBMGNBTUVRQ0lHWmNtcW1DaFhpMWhMOWRaMlhyNk5LTzNoeWZOQmw3NVoyTWl4czlYVHEvQWlCNzc1OTV2R3UwUXE5SDlBQzdiVVhwNFBtM1NMSHVrK2tCWTVudndNVG55QT09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQU1nQUFBQkdDQU1BQUFDK1BDc0VBQUFBalZCTVZFVkhjRXd5UVU0eVFVNHlRVTVjT0VVeVFVNHlRVTQ4UDB3eVFVNlRLamt5UVU0eVFVNHlRVTR5UVU0eVFVNHlRVTR5UVU0eVFVNHlRVTR5UVU0eVFVNHlRVTR5UVU2L0hpNi9IaTR5UVU0eVFVNHlRVTR5UVU0eVFVN0FIaTYvSGk2L0hpNi9IaTYvSGk0eVFVN0FIaTYvSGk2L0hpNi9IaTYvSGk2L0hpNi9IaTYvSGk2L0hpNHlRVTYvSGk1anc0UjdBQUFBTFhSU1RsTUF1L1FTQmRucUNob0M0ZnpBUWZsTUp0TmdNbjVXb3l1anlvcVZiYlUrSHRnUjdLeXZtWXR0VjhoN1NieUxablJ5QUFBSW5FbEVRVlJvM3UxYWgyN2pPQkNWMWFuZXJXcGJrVnRzSy8vL2VjY21pbFJ4QWh6T0d5OXVzTUE2b2ppY3grbWtKT250S0hZc2tjSXFsdDZSUUdyMXZjMzk2L3ZRZjBza2txdjFFd3FEOTlSSnZBazVraUdTNmoxVkloa0tSNm5lOTVyMEY1QlI5TDM4TndBSm9Ndm9ieW01NlVjOE5kQkhtbmZFNFllZXpSR0tXbkw2aGlITERLZkJ0L2RLOVIwVkl0c2llVnB0dktWdlE3ZEllZkxmTXh0SzkrTXgzLzBOMGZiNjlmV1ZiM25hcTI4SlpQc0JrWHp3ZERodDM3TFNPbi9ONlBNdGtlenpPWkxUREs2TGNtVWEvMnFyYSsvbm5LTWp0TFdQNlR0cTA2UFFyQ2UvRUFuZ2YzUFVQcUJLRm9CZzBuOWg5eGdsc1RMQjhEMFE3eGMyajFXdk80a3BYZklKSFNHT3d3eElGWWJlcndVQzVYS2xCVmYvK2pyUDNsWVVjL09MZ2NqTFFJNzdwUW5aN3daeStwalM0YnlJNDdjRDJXK24xQUxwSFlFOGo4dlFPVXpUVk1BYUVBTU5MMWI5QUU5VVY0ODduZ3pTdVl2N3VjQjFGUWcvemE4Y3piS0tMRklXZ0NoK3VRa3RTOXVVcmpGckRySUNUZXpxb1NsUW9ocFNHdUR6cDZTQjg4SW1pYW13YW9vR0kvS25pZWRxUlpZcWM2NUluSERrYXNDSkRwS3J3Z3pNbFkzeEhZODJqWGFSZ2drUUkzTGtvYWVVT3lGUkJxWEYyazBySWVJRU91WVR4cEpaNmdOWHZTUkxLNlJOMVNPSUtTcnNvVlBkQ0Z6TlJMTVpWenJSRkE0WFYvUmlKREwza2w0TFFJQ1plVHdQSytWUEFZVE91UWxHSUgxZkJodCswSWs1SUgyaEtDVy9xTVloY1F1QjZ5YjRLUkExb1pMU0V3bGQ0NEZRY1R4TDA0aUVPdE5WUkI3SW1xWVJvVFltQjZScktGTzZlQkZ3UUxTZ0VvOFBHbWF6UGxHeWJBMWNuZUNIUUNMeWZsaW1mbG9ON3c5QWxJWllWQm9vU2x4cjNJRXhjSFdpZTlkVVREZkRUTkJoaHBrMVdGb2RJcENiSkUyVERWbWdnN0lhVllNTlNzT2JaM1ZsVWhLcmxvZnRjUzJPYTRWblZwQ3JVU2NKWW10bkNhS2xMcDJjcnNqVUZvUE1Gb0FreEtUcGZzVlk2eVdaaDM4UDFxM1dhRTBkN1pTcXh0UnpDdDhnam9vM3dJdndJSjRudzAzUXl3QkZKYVVtMHRLTmMvQkV5aFZncFE4Z3M2ZFJDOVI0RVZhMkt4a1BCSXNrUjZQOUlzWld3Q0FXYkd2VWNoU0gyc0U0U0xiWndkSEFvSzVqK1h4WTdSMnlWN1V0WEJJQXZFcUdoUVBQZ1NoNFk3TXhyQVloQjZRYytSQnhFVE03R2hRcGMwRTZRTUpxNWdpRUg0dzhKZ1FGTXJxYTVNcHNKcGJHUzhWelhicHozd0J4bVVrTVZJOUFNRjloTUxMcHZxZWU0S0swQVNEcllDQjJ4NlV6WWpFSkJ5VGhqSHNVMXBlWjVxaEtNb2JzR3lCWWR4cyt6K0d0SlVBd3lzSTBSc0pQa0JsZ2UwaTRFUU0vcVVjZzZXeVpSbVZBdEdCaUZLU1R3NitWUE5lU29mNEdTRGZaSHJvU0FSSmhJM0E0S3BBaVFvV0tFL0pERnVPRWdlakJUUEdod29Ed04weUdNd0JSc1RRYXgzU0R1TnJWRDRBNGc5RlBHaGlmYmRDY05JVWxoQ21WREVnbzFCMVl6ZGg4Q0pCb0VZaFJMSFA5Q1pCaVhpRW03RkcxQ3NUVXZnUGlHTE1ncnpNZ3ZEeUFBUUZyMi9OaklPNHpJTnBtU3BWQjNhQ1lEYVUvQXlLY2JZd2F3Vzh0Y0kxK0NFVDBTeHh6Q1pDU3BHdGpRdW9RZmQybElRcWtFRXhyakV3eklLTkdpTnZML2pMWGI0QTBMTmFJRWM5bmtiaGJhaWZ3NHZiS1BSRVhUd2VLOVNGWFBOTUlPY09KVmxMM2N5QWs1Zkc5RFRaVUx2eGF3VnE3dG5hN2JXb3p4OFA1QjBmNVp4cVpKV0NodUgzZXVlS2N5MGQxa3BUSUJGS0gxWXZ6N0ZXTU5CSlVVeUZJSkhpbUVjbjMxZzhIUVRZUHNOS2tCdUFUQ1ZtVEwxRzBZS0ZEcHNLcTYwQXN2c2ZRR2MrbkdpRTdseG5yeHJQNmlRT1IyM0luVmYxUU5PSlN2ZUU3U3pjeHhsd3QxeHdTby9aNUlIM0gzQjBmbFZIM2Y2b1JhVkxDWXE2REowWVRTWmVLclQ2azR5cnRscWdmZzVMME5xN0sybENMVmo2a2pCL0tmempUN2V4QzZFdnRpaUlKY01LMmErbGJqVWdtTHNxOGFqQUNOYzY4b1JnbXUxcTRLMmNaS3NsNk9teGx6TUJIRFJMdWRKd2tpVmxqMWV0WkdxRGhNc1RGRi9FbEFqbE0zRUF4NDZoRGZ5WkE2RXVkQ1BkakpNMDFpdlJFSTNhWEpDYXIrR0huUmJobU91M1htUEgwZXBmVWl5NGYwTHBBMWtJTCsxcEh4VUIrQlFLSHRveDZTSVpIaDZQS2cxMXBxT21rSHd2SE1sN0hWWkpWaExyWWxxOW9CTDJNclNLZGN4MmNOR2JsUkxlb2sxaW9jT1FvNG9BZ3U3REZla0ZQQnR0UHAzVks0WThhQ1d0TCtLTEtsVmFBakRjQTd0S1JCcHlhcW1JL3Z3WUU5cmZqaVlZVzBVREdFcE5TaHh3VXVYUEhwQk5VT24vQWtwaWNzMnVtWDNDekFzR1FaQ0hDMWg2bmtSblhjZ3lhSU83a1owQWt3ODhzMmJNOXZjQnR2VnMxaUpnaG1sR253V0ZiMWd2eGlBNm9jZW5vc20xN3N0WFV3WEIyU1lIQXlGRG9rS3VzWmY0NHl5ZzNUZE1KRWQySU1yUWVld2ppeE1IeUVLN0NxMjdTRldGWXJuYnVxdW1tcVI4UFJxTWlBbVBtTU16WVI1OFlLQXU5Y2dCbnBtNWdUUElJcmtjVU5NMDFWWEV0U0xQMXhZZkFtSE5sbHFnb2l2R3pDN3JGOGU5ZWtKYUF2T0EyOGIray94eUk5RCtRZndHRTJTUUF2Tit4NStULzhTM09OZW1JQ2dCOU9ubjNsVUQydHp5L2tMN29kc3p6L0U0ZEZsMzVrd3V6N1FuOWR6OWovMVV2cDlQcFFpN1M5dVFMay8wcHorSE1HMkt5USsrcXQ4dnJmYVE5bnU3M0t3YWlIdlBkYmtka2JNK1BDM3plb3QrN0E1TDM4b24vTUI2bjdmMlJZMUQ3QS82WXFkM3Rib2ZyYm91RWJ4OW5JTjBQdTlkclpEc3VxaDdISytRYjl4SE1CTWdOYXVldzU0QkF1aDVhR3FoMmgxMzd1THplUjBCN1BON2JBY2hwdTkzaXZXNC9iOUk2RU9OMlJMK0JDSVM2elRrbm82L1dDTmpmSG84N0lFQU94Mk5PelA1d1hRWHllWDQ4aUxxV2dFajd6OFB1ajBRdEFOb2JsaFNabHRHU2krVDJzSzZSMCs3eWlVVmQxSWdrblkvcUh3cS9VT3pyeEVmQStYTzg0U2ZxT2VXQStVaCtBcXNhZ1VEQWk0SGdNL1h0NWI2alV2TlJhMzk4WEhZN0hMV0FldjY4YjZrV01CQndKYzYrNVlEcy94d1FjcFdGMHNpWm1EekpJOVE1Mml2TURqZXl6eTNNSFdjcXMzcStjZ2xrQ0cyNzA2aVI2KzJsUUx4eXJLT1hLMXlVcThkc0x1UjdNQ1J3TUM5WXVjVC9DaUJOOUo0ZnNNNzZ0T0QxYS80RHNnVzlHVm9EUW9JQUFBQUFTVVZPUks1Q1lJST0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xX1BSRSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiYjlmNmI3YjZmOTI5NDE4OWJjYTlkZDk1MTI0MGMxMzIiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZX0sIm1heE1zZ1NpemUiOjIwNDgsInBpblV2QXV0aFByb3RvY29scyI6WzFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjEwLCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjk2LCJ0cmFuc3BvcnRzIjpbInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wMi0yNSJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDItMjUifSx7ImFhZ3VpZCI6ImNjNDVmNjRlLTUyYTItNDUxYi04MzFhLTRlZGQ4MDIyYTIwMiIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiY2M0NWY2NGUtNTJhMi00NTFiLTgzMWEtNGVkZDgwMjJhMjAyIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlRvb3RoUGljIFBhc3NrZXkgUHJvdmlkZXIifSwiZGVzY3JpcHRpb24iOiJUb290aFBpYyBQYXNza2V5IFByb3ZpZGVyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X2RlciJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfc3Vycm9nYXRlIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhdHRlcm5faW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZhY2VwcmludF9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSJdLCJpc0tleVJlc3RyaWN0ZWQiOnRydWUsImlzRnJlc2hVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZWQiOnRydWUsIm1hdGNoZXJQcm90ZWN0aW9uIjpbInRlZSJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVsZXNzIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDRWpDQ0FiaWdBd0lCQWdJUkFJUVJzdjNEaUw5UDFhZjlvSjJ5bmpZd0NnWUlLb1pJemowRUF3SXdiekVMTUFrR0ExVUVCaE1DU1ZReEdEQVdCZ05WQkFvTUQxUnZiM1JvVUdsaklITXVjaTVzTGpFaU1DQUdBMVVFQ3d3WlFYVjBhR1Z1ZEdsallYUnZjaUJCZEhSbGMzUmhkR2x2YmpFaU1DQUdBMVVFQXd3WlZHOXZkR2hRYVdNZ1VHRnpjMnRsZVNCUWNtOTJhV1JsY2pBZ0Z3MHlOVEE0TURVeE1EQXdNekJhR0E4eU1EVTFNRGd3TlRFd01EQXpNRm93YnpFTE1Ba0dBMVVFQmhNQ1NWUXhHREFXQmdOVkJBb01EMVJ2YjNSb1VHbGpJSE11Y2k1c0xqRWlNQ0FHQTFVRUN3d1pRWFYwYUdWdWRHbGpZWFJ2Y2lCQmRIUmxjM1JoZEdsdmJqRWlNQ0FHQTFVRUF3d1pWRzl2ZEdoUWFXTWdVR0Z6YzJ0bGVTQlFjbTkyYVdSbGNqQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJMS1VWcVJRaXB2VE13Z3p1K3JQSGFvbmNvenRjbTJ1eGJlQjA5SXJiSmIzOERTVUxVNlV0S0I2My9GclBrZ2ZWSmtXUmxZbE03Q2tOYmd5ZWlKM25OeWpNekF4TUF3R0ExVWRFd0VCL3dRQ01BQXdJUVlMS3dZQkJBR0M1UndCQVFRRUVnUVF6RVgyVGxLaVJSdURHazdkZ0NLaUFqQUtCZ2dxaGtqT1BRUURBZ05JQURCRkFpRUE5VFdxZUJPNGFFTW9xVTZva3ZYYk5td3B6akxCS3g1Mkd2Vm5tNkVCbXp3Q0lDV0p2djFvSjR6d0tHcG5Tc3c4SjcvaWJEK2lXV0ZGY1lTUFBtVit6aExiIl0sImljb24iOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaUlITjBZVzVrWVd4dmJtVTlJbTV2SWo4K0NqeHpkbWNLSUNBZ2VHMXNibk02WkdNOUltaDBkSEE2THk5d2RYSnNMbTl5Wnk5a1l5OWxiR1Z0Wlc1MGN5OHhMakV2SWdvZ0lDQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWdvZ0lDQjRiV3h1Y3pweVpHWTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5MekU1T1Rrdk1ESXZNakl0Y21SbUxYTjViblJoZUMxdWN5TWlDaUFnSUhodGJHNXpPbk4yWnowaWFIUjBjRG92TDNkM2R5NTNNeTV2Y21jdk1qQXdNQzl6ZG1jaUNpQWdJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SUtJQ0FnZG1sbGQwSnZlRDBpTUNBd0lEWTJOaTQyTmpZMk9TQTJOall1TmpZMk5qa2lDaUFnSUdobGFXZG9kRDBpTmpZMkxqWTJOalk1SWdvZ0lDQjNhV1IwYUQwaU5qWTJMalkyTmpZNUlnb2dJQ0I0Yld3NmMzQmhZMlU5SW5CeVpYTmxjblpsSWdvZ0lDQnBaRDBpYzNabk1pSUtJQ0FnZG1WeWMybHZiajBpTVM0eElqNDhiV1YwWVdSaGRHRUtJQ0FnSUNCcFpEMGliV1YwWVdSaGRHRTRJajQ4Y21SbU9sSkVSajQ4WTJNNlYyOXlhd29nSUNBZ0lDQWdJQ0J5WkdZNllXSnZkWFE5SWlJK1BHUmpPbVp2Y20xaGRENXBiV0ZuWlM5emRtY3JlRzFzUEM5a1l6cG1iM0p0WVhRK1BHUmpPblI1Y0dVS0lDQWdJQ0FnSUNBZ0lDQnlaR1k2Y21WemIzVnlZMlU5SW1oMGRIQTZMeTl3ZFhKc0xtOXlaeTlrWXk5a1kyMXBkSGx3WlM5VGRHbHNiRWx0WVdkbElpQXZQand2WTJNNlYyOXlhejQ4TDNKa1pqcFNSRVkrUEM5dFpYUmhaR0YwWVQ0OFpHVm1jd29nSUNBZ0lHbGtQU0prWldaek5pSStQR05zYVhCUVlYUm9DaUFnSUNBZ0lDQnBaRDBpWTJ4cGNGQmhkR2d4T0NJS0lDQWdJQ0FnSUdOc2FYQlFZWFJvVlc1cGRITTlJblZ6WlhKVGNHRmpaVTl1VlhObElqNDhjR0YwYUFvZ0lDQWdJQ0FnSUNCcFpEMGljR0YwYURFMklnb2dJQ0FnSUNBZ0lDQmtQU0pOSURBc05UQXdJRWdnTlRBd0lGWWdNQ0JJSURBZ1dpSWdMejQ4TDJOc2FYQlFZWFJvUGp3dlpHVm1jejQ4WndvZ0lDQWdJSFJ5WVc1elptOXliVDBpYldGMGNtbDRLREV1TXpNek16TXpNeXd3TERBc0xURXVNek16TXpNek15d3dMRFkyTmk0Mk5qWTJOeWtpQ2lBZ0lDQWdhV1E5SW1jeE1DSStQR2NLSUNBZ0lDQWdJR2xrUFNKbk1USWlQanhuQ2lBZ0lDQWdJQ0FnSUdOc2FYQXRjR0YwYUQwaWRYSnNLQ05qYkdsd1VHRjBhREU0S1NJS0lDQWdJQ0FnSUNBZ2FXUTlJbWN4TkNJK1BHY0tJQ0FnSUNBZ0lDQWdJQ0IwY21GdWMyWnZjbTA5SW5SeVlXNXpiR0YwWlNneU56RXVPVE13TWl3eE5qRXVPVGcyT0NraUNpQWdJQ0FnSUNBZ0lDQWdhV1E5SW1jeU1DSStQSEJoZEdnS0lDQWdJQ0FnSUNBZ0lDQWdJR2xrUFNKd1lYUm9NaklpQ2lBZ0lDQWdJQ0FnSUNBZ0lDQnpkSGxzWlQwaVptbHNiRG9qTWpNeFpqSXdPMlpwYkd3dGIzQmhZMmwwZVRveE8yWnBiR3d0Y25Wc1pUcHViMjU2WlhKdk8zTjBjbTlyWlRwdWIyNWxJZ29nSUNBZ0lDQWdJQ0FnSUNBZ1pEMGliU0F3TERBZ1l5QXRNUzQyTURrc01qSXVNekkxSURndU1Ua3hMRE0xTGprMk1TQXlOeTQ1Tmprc05EVXVOekl5SURNNExqSTFNU3d4T0M0NE56Z2dOakF1TmpjM0xEUTVMamt3TmlBMk5TNDVOVFFzT1RJdU56VTJJRFV1T0Rjc05EY3VOalkwSUMweE9TNHdNVElzT1RRdU5ERXhJQzAyTWk0MU5UVXNNVEUzTGpFM015QXRORE11TURnMkxESXlMalV5TXlBdE9UWXVNak1zTVRVdU56STJJQzB4TXpFdU5qTTVMQzB4Tmk0NE16WWdMVFl5TGpZMk5Dd3ROVGN1TmpJMklDMDBPUzR4TlRZc0xURTFOUzR3TWpZZ01qY3VNemM0TEMweE9USXVPVGMxSURJd0xqTTJPU3d0TVRBdU1EazVJREk1TGpVeE5pd3RNalF1TkRBNUlESTRMamd5Tnl3dE5EY3VNRFV4SUd3Z0xUQXVOalkxTEMwNU1DNDVOVFlnWXlBdE1DNHhOVFFzTFRVdU1qSWdMVEF1TVRBMUxDMHhOUzR4TmpRZ0xUa3VNamN5TEMweE5TNHhOalFnTFRFd0xqRTFNaXd3SUMwNUxqTTNPQ3c1TGpnMk5DQXRPUzQxTkRFc01UVXVNRFUxSUd3Z0xUQXVNaXc0T1M0ME5qRWdZeUF3TGpVeU9Td3hOUzQ1TnpFZ0xUUXVOek16TERJMUxqSXlNeUF0TVRrdU5UUTRMRE15TGpRMU9DQXROVFF1TURZMExESTJMak01T1NBdE9ERXVOelkwTERneExqSXhPQ0F0TnpRdU1EZzFMREUwTXk0eU16a2dOaTQxTkRjc05USXVPRGd5SURVd0xqUTRPU3c1T1M0eU1EUWdNVEExTGprek55d3hNVEV1TmpjNElFTWdNVFF1TnpJekxESTVPUzQwTkRNZ09ESXVNREE0TERJMk1pNDNOeklnTVRBMUxqTXpNaXd4T1RrdU1URTRJREV5T1M0eE1qUXNNVE0wTGpFNE5pQXhNREl1TmpFMUxEWXlMakUzTXlBME1TNDJORGNzTXpFdU16RTBJREl6TGpjNU5pd3lNaTR5TnprZ01UY3VNVFl5TERFeExqTTROU0F4T0M0eU16WXNMVGd1TVRReUlHd2dNQzR6TWpJc0xUZ3lMakF3TmlCaklDMHdMakEwTEMwM0xqQTFNU0F4TGpVeE9Dd3RNVGN1TkRFNElDMDRMamN6TEMweE55NHhNVE1nTFRFd0xqZ3dPQ3d3TGpNeU1pQXRPUzQwTWpVc01UQXVNemc0SUMwNUxqVTJNeXd4Tnk0M09URWdlaUlnTHo0OEwyYytQR2NLSUNBZ0lDQWdJQ0FnSUNCMGNtRnVjMlp2Y20wOUluUnlZVzV6YkdGMFpTZ3pOVFF1TXpnMU15d3pNVFF1TWpVeEtTSUtJQ0FnSUNBZ0lDQWdJQ0JwWkQwaVp6STBJajQ4Y0dGMGFBb2dJQ0FnSUNBZ0lDQWdJQ0FnYVdROUluQmhkR2d5TmlJS0lDQWdJQ0FnSUNBZ0lDQWdJSE4wZVd4bFBTSm1hV3hzT2lNeU16Rm1NakE3Wm1sc2JDMXZjR0ZqYVhSNU9qRTdabWxzYkMxeWRXeGxPbTV2Ym5wbGNtODdjM1J5YjJ0bE9tNXZibVVpQ2lBZ0lDQWdJQ0FnSUNBZ0lDQmtQU0p0SURBc01DQmpJQzB4TGpnM055d3RORFF1TlRJMUlDMHlNUzQwT0Rnc0xUYzJMalUwT1NBdE5qQXVPVFVzTFRrMUxqWTROaUF0Tmk0Mk5qa3NMVE11TWpNMElDMHhOQzR6TVRFc0xUZ3VOVGtnTFRJd0xqTTRNaXd3TGpZMk55QXRNeTQxT1N3eE1TNHdNVElnTkM0NE5UTXNNVE11TURFNUlERXhMamswT0N3eE5pNDBOalVnTXpNdU9ESXlMREUyTGpReU1pQTFNeTR5TURnc05Ea3VOalkxSURVd0xqQXpNeXc0TlM0MU5qRWdMVEl1T1RjMkxETXpMall6TlNBdE1qY3VPRFV4TERZMExqQTNNeUF0TmpBdU5ETXpMRGN6TGprME5DQXROREl1TkRJeUxERXlMamcxTWlBdE9EWXVPVFF5TEMwNExqSTNOU0F0TVRBMExqQTBOQ3d0TkRrdU16YzBJQzB4Tmk0NU1UWXNMVFF3TGpZMU5DQXdMakU0T0N3dE9EY3VOVGcySURNNUxqUTNNeXd0TVRBNExqRTJOQ0F6TGpVd01Td3RNUzQ0TXpVZ055NHlOamdzTFRNdU5qZzVJREV3TGpVeU5Td3ROUzR4T1RVZ05DNDRNVFFzTFRJdU1qSTFJRGt1TWpjekxDMDJMalkwSURZdU1qRTBMQzB4TXk0d09UWWdMVE11TnpjekxDMDFMamswT1NBdE1UQXVNVFU0TEMwMExqa3lPQ0F0TVRNdU9ETXNMVE11TlRjMElDMHpOQzR3TlN3eE1pNDFOVGtnTFRVMkxqRTBPQ3d6Tnk0d09UUWdMVFkxTGpBMU55dzNNUzQ1TlRNZ0xURTBMalF6TERVMkxqUTFOeUF5TUM0ek1qSXNNVEV6TGpVek55QTNOaTR6TVN3eE1qY3VOVEUxSUVNZ0xUY3pMalEzT1N3eE1UVXVNVGMwSUMweE5pNDFNek1zT0RBdU1qY2dMVEl1TnpjMkxESXlMall4TXlBdE1DNDVORGtzTVRRdU9UVTRJQzB3TGpnd09DdzJMamtnTUN3d0lpQXZQand2Wno0OFp3b2dJQ0FnSUNBZ0lDQWdJSFJ5WVc1elptOXliVDBpZEhKaGJuTnNZWFJsS0RNd01pNDVOREk1TERNeE15NDNNamMxS1NJS0lDQWdJQ0FnSUNBZ0lDQnBaRDBpWnpJNElqNDhjR0YwYUFvZ0lDQWdJQ0FnSUNBZ0lDQWdhV1E5SW5CaGRHZ3pNQ0lLSUNBZ0lDQWdJQ0FnSUNBZ0lITjBlV3hsUFNKbWFXeHNPaU15TXpGbU1qQTdabWxzYkMxdmNHRmphWFI1T2pFN1ptbHNiQzF5ZFd4bE9tNXZibnBsY204N2MzUnliMnRsT201dmJtVWlDaUFnSUNBZ0lDQWdJQ0FnSUNCa1BTSk5JREFzTUNCRElDMHdMakV5Tml3ek1DNHdNekVnTFRJMExqWXhMRFUwTGpNeE1pQXROVFF1TVRNMExEVXpMalk0TnlBdE9ESXVPRE0xTERVekxqQTNPQ0F0TVRBM0xqSTRPU3d5T0M0MU9Ea2dMVEV3Tnk0Mk5Ea3NNQzR3T1RVZ0xURXdPQzR3TVRZc0xUSTRMamc0TkNBdE9ESXVOemt4TEMwMU5DNHhOQ0F0TlRNdU5EazNMQzAxTkM0eE1qUWdMVEl6TGpRMExDMDFOQzR4TURjZ01DNHhNamdzTFRNd0xqSTJNeUF3TERBZ2JTQXROVEl1TURZNUxEY3lMalkwT1NCaklETTVMamd4TVN3dE1DNDBNemtnTnpJdU5qSTNMQzB6TkM0d09UZ2dOekl1TURRMkxDMDNNeTQ0T1RjZ0xUQXVOVGt5TEMwME1DNDFNalFnTFRNMExqVXdNeXd0TnpNdU1ESXpJQzAzTlM0ek5qTXNMVGN5TGpJeU5TQXRNemt1T0RnNExEQXVOemM1SUMwM01TNHdOemNzTXpNdU56YzNJQzAzTUM0Mk9DdzNOQzQzT0NBd0xqTTRPU3cwTUM0eE5UWWdNek11TWpBeUxEY3hMamM1TXlBM015NDVPVGNzTnpFdU16UXlJaUF2UGp3dlp6NDhad29nSUNBZ0lDQWdJQ0FnSUhSeVlXNXpabTl5YlQwaWRISmhibk5zWVhSbEtESTBNQzR5TWpRMkxESXhOQzR6TkRNektTSUtJQ0FnSUNBZ0lDQWdJQ0JwWkQwaVp6TXlJajQ4Y0dGMGFBb2dJQ0FnSUNBZ0lDQWdJQ0FnYVdROUluQmhkR2d6TkNJS0lDQWdJQ0FnSUNBZ0lDQWdJSE4wZVd4bFBTSm1hV3hzT2lNeU16Rm1NakE3Wm1sc2JDMXZjR0ZqYVhSNU9qRTdabWxzYkMxeWRXeGxPbTV2Ym5wbGNtODdjM1J5YjJ0bE9tNXZibVVpQ2lBZ0lDQWdJQ0FnSUNBZ0lDQmtQU0p0SURBc01DQmpJREF1TWpFMExEVXVOREV4SUMweExqY3lOaXd4TlM0NUlEa3VNRFVzTVRVdU9TQXhNQzR3TkRrc01DQTVMalEwTkN3dE1UQXVNak0xSURrdU5URTVMQzB4TlM0ME1pQnNJQzB3TGpBeE5Dd3RNVGd4TGpJNE1pQmpJQzB3TGpBM055d3ROUzR6TmpRZ01DNDFORFFzTFRFMUxqRTNOQ0F0T1M0d09UWXNMVEUxTGpFME9TQXRPUzQ0TXpFc0xUQXVOVFlnTFRFd0xqQXdNU3c0TGpNeU5DQXRPUzQ1TlRJc01UWXVNVFkxSUhvaUlDOCtQQzluUGp4bkNpQWdJQ0FnSUNBZ0lDQWdkSEpoYm5ObWIzSnRQU0owY21GdWMyeGhkR1VvTVRnd0xqSTFNRFVzTkRjMUxqZzVORFVwSWdvZ0lDQWdJQ0FnSUNBZ0lHbGtQU0puTXpZaVBqeHdZWFJvQ2lBZ0lDQWdJQ0FnSUNBZ0lDQnBaRDBpY0dGMGFETTRJZ29nSUNBZ0lDQWdJQ0FnSUNBZ2MzUjViR1U5SW1acGJHdzZibTl1WlR0emRISnZhMlU2SXpJek1XWXlNRHR6ZEhKdmEyVXRkMmxrZEdnNk1UY3VPVEF5TURBd05ETTdjM1J5YjJ0bExXeHBibVZqWVhBNmNtOTFibVE3YzNSeWIydGxMV3hwYm1WcWIybHVPbTFwZEdWeU8zTjBjbTlyWlMxdGFYUmxjbXhwYldsME9qRXdPM04wY205clpTMWtZWE5vWVhKeVlYazZibTl1WlR0emRISnZhMlV0YjNCaFkybDBlVG94SWdvZ0lDQWdJQ0FnSUNBZ0lDQWdaRDBpVFNBd0xEQWdReUF0TkRjdU9ETTVMREFnTFRnMExqVTNOU3d0TXpVdU9UWXhJQzA0TkM0MU56VXNMVGd5TGpVMk1TSWdMejQ4TDJjK1BHY0tJQ0FnSUNBZ0lDQWdJQ0IwY21GdWMyWnZjbTA5SW5SeVlXNXpiR0YwWlNnME1EY3VNREEwT1N3ek9UTXVNek0wS1NJS0lDQWdJQ0FnSUNBZ0lDQnBaRDBpWnpRd0lqNDhjR0YwYUFvZ0lDQWdJQ0FnSUNBZ0lDQWdhV1E5SW5CaGRHZzBNaUlLSUNBZ0lDQWdJQ0FnSUNBZ0lITjBlV3hsUFNKbWFXeHNPbTV2Ym1VN2MzUnliMnRsT2lNeU16Rm1NakE3YzNSeWIydGxMWGRwWkhSb09qRTNMamt3TWpBd01EUXpPM04wY205clpTMXNhVzVsWTJGd09uSnZkVzVrTzNOMGNtOXJaUzFzYVc1bGFtOXBianB0YVhSbGNqdHpkSEp2YTJVdGJXbDBaWEpzYVcxcGREb3hNRHR6ZEhKdmEyVXRaR0Z6YUdGeWNtRjVPbTV2Ym1VN2MzUnliMnRsTFc5d1lXTnBkSGs2TVNJS0lDQWdJQ0FnSUNBZ0lDQWdJR1E5SWswZ01Dd3dJRU1nTUN3MU15NHhPRE1nTFRRd0xqWXhMRGd5TGpVMk1TQXRPRFF1TlRjMUxEZ3lMalUyTVNJZ0x6NDhMMmMrUEdjS0lDQWdJQ0FnSUNBZ0lDQjBjbUZ1YzJadmNtMDlJblJ5WVc1emJHRjBaU2d6TWpJdU5ETXdNaXd5Tmk0ME5qRTVLU0lLSUNBZ0lDQWdJQ0FnSUNCcFpEMGlaelEwSWo0OGNHRjBhQW9nSUNBZ0lDQWdJQ0FnSUNBZ2FXUTlJbkJoZEdnME5pSUtJQ0FnSUNBZ0lDQWdJQ0FnSUhOMGVXeGxQU0ptYVd4c09tNXZibVU3YzNSeWIydGxPaU15TXpGbU1qQTdjM1J5YjJ0bExYZHBaSFJvT2pFM0xqa3dNakF3TURRek8zTjBjbTlyWlMxc2FXNWxZMkZ3T25KdmRXNWtPM04wY205clpTMXNhVzVsYW05cGJqcHRhWFJsY2p0emRISnZhMlV0YldsMFpYSnNhVzFwZERveE1EdHpkSEp2YTJVdFpHRnphR0Z5Y21GNU9tNXZibVU3YzNSeWIydGxMVzl3WVdOcGRIazZNU0lLSUNBZ0lDQWdJQ0FnSUNBZ0lHUTlJazBnTUN3d0lFTWdORGN1T0RNNUxEQWdPRFF1TlRjMUxETTFMamsyTVNBNE5DNDFOelVzT0RJdU5UWXhJaUF2UGp3dlp6NDhad29nSUNBZ0lDQWdJQ0FnSUhSeVlXNXpabTl5YlQwaWRISmhibk5zWVhSbEtEazFMalkzTlRNc01UQTVMakF5TWpVcElnb2dJQ0FnSUNBZ0lDQWdJR2xrUFNKbk5EZ2lQanh3WVhSb0NpQWdJQ0FnSUNBZ0lDQWdJQ0JwWkQwaWNHRjBhRFV3SWdvZ0lDQWdJQ0FnSUNBZ0lDQWdjM1I1YkdVOUltWnBiR3c2Ym05dVpUdHpkSEp2YTJVNkl6SXpNV1l5TUR0emRISnZhMlV0ZDJsa2RHZzZNVGN1T1RBeU1EQXdORE03YzNSeWIydGxMV3hwYm1WallYQTZjbTkxYm1RN2MzUnliMnRsTFd4cGJtVnFiMmx1T20xcGRHVnlPM04wY205clpTMXRhWFJsY214cGJXbDBPakV3TzNOMGNtOXJaUzFrWVhOb1lYSnlZWGs2Ym05dVpUdHpkSEp2YTJVdGIzQmhZMmwwZVRveElnb2dJQ0FnSUNBZ0lDQWdJQ0FnWkQwaVRTQXdMREFnUXlBd0xDMDFNeTR4T0RNZ05EQXVOakVzTFRneUxqVTJNU0E0TkM0MU56VXNMVGd5TGpVMk1TSWdMejQ4TDJjK1BHY0tJQ0FnSUNBZ0lDQWdJQ0IwY21GdWMyWnZjbTA5SW5SeVlXNXpiR0YwWlNneU56TXVNVGMyTXl3ek1UTXVNelUwS1NJS0lDQWdJQ0FnSUNBZ0lDQnBaRDBpWnpVeUlqNDhjR0YwYUFvZ0lDQWdJQ0FnSUNBZ0lDQWdhV1E5SW5CaGRHZzFOQ0lLSUNBZ0lDQWdJQ0FnSUNBZ0lITjBlV3hsUFNKbWFXeHNPaU5tTmpnM01USTdabWxzYkMxdmNHRmphWFI1T2pFN1ptbHNiQzF5ZFd4bE9tNXZibnBsY204N2MzUnliMnRsT201dmJtVWlDaUFnSUNBZ0lDQWdJQ0FnSUNCa1BTSnRJREFzTUNCaklEQXNMVEV6TGpBeE9TQXRNVEF1TlRVMExDMHlNeTQxTnpJZ0xUSXpMalUzTWl3dE1qTXVOVGN5SUMweE15NHdNVGtzTUNBdE1qTXVOVGN6TERFd0xqVTFNeUF0TWpNdU5UY3pMREl6TGpVM01pQXdMREV6TGpBeE9TQXhNQzQxTlRRc01qTXVOVGN5SURJekxqVTNNeXd5TXk0MU56SWdReUF0TVRBdU5UVTBMREl6TGpVM01pQXdMREV6TGpBeE9TQXdMREFpSUM4K1BDOW5QanhuQ2lBZ0lDQWdJQ0FnSUNBZ2RISmhibk5tYjNKdFBTSjBjbUZ1YzJ4aGRHVW9NalE1TGpZd016VXNNamc1TGpjNE1UY3BJZ29nSUNBZ0lDQWdJQ0FnSUdsa1BTSm5OVFlpUGp4d1lYUm9DaUFnSUNBZ0lDQWdJQ0FnSUNCcFpEMGljR0YwYURVNElnb2dJQ0FnSUNBZ0lDQWdJQ0FnYzNSNWJHVTlJbVpwYkd3Nkl6SXpNV1l5TUR0bWFXeHNMVzl3WVdOcGRIazZNVHRtYVd4c0xYSjFiR1U2Ym05dWVtVnlienR6ZEhKdmEyVTZibTl1WlNJS0lDQWdJQ0FnSUNBZ0lDQWdJR1E5SW0wZ01Dd3dJR01nTFRFekxqQXhPU3d3SUMweU15NDFOeklzTVRBdU5UVTBJQzB5TXk0MU56SXNNak11TlRjeUlEQXNNVE11TURFNUlERXdMalUxTXl3eU15NDFOek1nTWpNdU5UY3lMREl6TGpVM015QXhNeTR3TVRrc01DQXlNeTQxTnpNc0xURXdMalUxTkNBeU15NDFOek1zTFRJekxqVTNNeUJESURJekxqVTNNeXd4TUM0MU5UUWdNVE11TURFNUxEQWdNQ3d3SUUwZ01TNDBNRElzTmpRdU5EVXlJRU1nTFRJeUxqQXhOeXcyTkM0NE9EUWdMVFF3TGpZMU9TdzBOeTR6TXpVZ0xUUXhMakl4TXl3eU5DNHpNellnTFRReExqYzJMREV1TmpJMklDMHlNeTR5TkRnc0xURTNMakUwTXlBdE1DNHhNeklzTFRFM0xqTXhNeUF5TXk0Mk1UUXNMVEUzTGpRNE9TQTBNUzR5TWprc0xUQXVNRGswSURReExqSXlOU3d5TXk0MU15QTBNUzR5TWpJc05EWXVOakl4SURJMExqSTRMRFkwTGpBeU9TQXhMalF3TWl3Mk5DNDBOVElpSUM4K1BDOW5Qand2Wno0OEwyYytQQzluUGp3dmMzWm5QZz09IiwibXVsdGlEZXZpY2VDcmVkZW50aWFsU3VwcG9ydCI6ImV4cGxpY2l0IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiRklET18yXzAiXSwiZXh0ZW5zaW9ucyI6W10sImFhZ3VpZCI6ImNjNDVmNjRlNTJhMjQ1MWI4MzFhNGVkZDgwMjJhMjAyIiwib3B0aW9ucyI6eyJwbGF0Ijp0cnVlLCJyayI6dHJ1ZSwidXAiOnRydWUsInV2Ijp0cnVlfSwidHJhbnNwb3J0cyI6WyJoeWJyaWQiLCJpbnRlcm5hbCJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XSwiZmlybXdhcmVWZXJzaW9uIjoxfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTA2LTA1In1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wNi0wNSJ9LHsiYWFndWlkIjoiMGJiNDM1NDUtZmQyYy00MTg1LTg3ZGQtZmViMGIyOTE2YWNlIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiIwYmI0MzU0NS1mZDJjLTQxODUtODdkZC1mZWIwYjI5MTZhY2UiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiU2VjdXJpdHkgS2V5IE5GQyBieSBZdWJpY28gLSBFbnRlcnByaXNlIEVkaXRpb24ifSwiZGVzY3JpcHRpb24iOiJTZWN1cml0eSBLZXkgTkZDIGJ5IFl1YmljbyAtIEVudGVycHJpc2UgRWRpdGlvbiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjg3MDcsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJlZDI1NTE5X2VkZHNhX3NoYTUxMl9yYXciLCJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJREhqQ0NBZ2FnQXdJQkFnSUVHMEJUOXpBTkJna3Foa2lHOXcwQkFRc0ZBREF1TVN3d0tnWURWUVFERXlOWmRXSnBZMjhnVlRKR0lGSnZiM1FnUTBFZ1UyVnlhV0ZzSURRMU56SXdNRFl6TVRBZ0Z3MHhOREE0TURFd01EQXdNREJhR0E4eU1EVXdNRGt3TkRBd01EQXdNRm93TGpFc01Db0dBMVVFQXhNaldYVmlhV052SUZVeVJpQlNiMjkwSUVOQklGTmxjbWxoYkNBME5UY3lNREEyTXpFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUUMvandZdWhCVmxxYWlZV0VNc3JXRmlzZ0orUHRNOTFlU3JwSTRUSzdVNTNtd0NJYXdTREh5OHZVbWs1TjJLQWo5YWJ2VDlOUDVTTVMxaFFpM3VzeG9ZR29uWFFnZk82Wlh5VUE5YStLQWtxZEZuQm5seXVnU2VDT2VwOEVkWkZmc2FSRnRNamt3ejVHY3oyUHk0dklZdkNkTUhQdHdhejBiVnV6bmV1ZUlFejZUblFqRTYzUmR0Mnpid25lYndURzVaeWJlV1N3Ynp5K0JKMzRaSGNVaFBBWTg5eUpRWHVFMEl6TVpGY0VCYlBOUmJXRUNSS2dqcS8vcVQ5bm1ET0ZWbFNSQ3Qyd2lxUFN6bHV3bit2K3N1UUVCc1VqVEdNRWQyNXRLWFhUa05XMjF3SVdieGVTeVVvVFh3THZHUzZ4bHdRU2dOcGsycVhZd2Y4aVhnN1ZXWkFnTUJBQUdqUWpCQU1CMEdBMVVkRGdRV0JCUWdJdnowYk5HSmhqZ3BUb2tzeUtwUDl4djlvREFQQmdOVkhSTUVDREFHQVFIL0FnRUFNQTRHQTFVZER3RUIvd1FFQXdJQkJqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFqdmp1T01EU2ErSlhGQ0x5QktzeWNYdEJWWnNKNFVlM0xiYUVzUFk0TVlOL2hJUTVaTTVwN0VqZmNuTUc0Q3RZa05zZk5IYzBBaEJMZHE0NXJuVDg3cS82TzN2VUV0Tk1hZmJoVTZrdGhYN1krOVhGTjlOcG1ZeHIrZWtWWTV4T3hpOGg5SkRJZ29NUDRWQjF1UzBhdW5MMUlHcXJOb29MOW1tRm5MMmtMVlZlZTYvVlI2QzUrS1NUQ01DV3BwTXVKSVpJSTJ2OW80ZGtvWjhZN1FSalFsTGZZemQzcUd0S2J3N3hhRjFVc0cvNXhVYi9CdHdiMlgyZzRJbnBpQi95dC8zQ3BRWHBpV1gvSzRtQnZVS2lHbjA1WnNxZVkxZ3g0ZzB4TEJxY1U5cHNteVB6SytWc2d3MmplUlE1SmxLRHlxRTBoZWJmQzF0dkZ1MENDckpGY3c9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFmQ0FZQUFBQ0dWcytNQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUhZWUFBQjJHQVYyaUU0RUFBQWJOU1VSQlZGaEhwVmQ3VE5WMUZELzNkNTl3ZVFTSWdTOUFRQVhjRkxBUVppOWZwZVZ6MXRZL1dUWnI1V3hwYzdXNWtuTGE1akkzWjg1c3JTMm5NMnNqdFd3WlM3SVVINEg0eENuRVF4NERBWkY3NFY3dXM4ODV2OS9sSW5CdlZKL0I0UHY5bnUvNW51LzVudk01NTZmekEvUXYwSGIvSXJYM1ZGS1BvNDVjbm00aW5VSVdZd0xGUm1aUVV1d2pGRy9OMWlSSGgxRVowTlJWUnVkcXQxQmQrMm5TS3lTL09oeXMwK2xrM2UvM2tROXF2RDRaVXRhNFZWU1V1WTBlaXB5aVRoQWZvY29PUlZnRHV1dzNxS1JpQWQzcmJjRXRqVGpZSW9mNldhSHNDbXpWUFdDTXgrY2doOHRMcVdNS2FNV3NVakxxbzJSdEpJUTBvT3ptZXJwUXU0ZXNaZ3NPTmtHeEg3ZDBrZHZUVDE3czRPTVU3Vkk4WmhqZ0dhTStBcTlpRU51OFBpZjF1ZHowN013dktXZjhHbFZvQ0VZMDRQQzVXZFRhWFlGYlI4dk52TDUrM0tnZmI1eE5NeWE5UmFtSml5bmFNbEdUVnRGbHI2YmE5dStwcW5FWDR1TXVSUmdqU1lFaHJON3V0RkZlNmxxYWw3TmZrdzVpbUFHSHluUHBiazhWbVkweHN0bnB0bEZDVkNZdHpUdUJOODNRcE1MalR0ZXZkUHpTVW5KN2U4bWtqeFozOWZYYktEZmxkWnFidlUrVFVnR25CVkY2ZlEyaVBIZzRXMTZVV1V3dnpiazE2c01aRStQbjBwdno3SlNldUF5ZXM4bGNwQ21hS3VvL3ArcVdyMlVjd0lBSFdydlAwWUV6aFhBdExBYnNzSGhwN2lHYW12eWlqUDhyeXFyWFVXWDlYb293eHlBdWZOQnJwNDNQT0JGWFpsa2Y4TURSaXFjcHlvd0F3cHV6MngrZld2ei9EdGRlOXNtc3p5Z3RjUjZDMXdiZHpCbDZPbHE1V05ZWTRvR2F0aEpNcmtURXgwakFSU0hBVnMrNXJZa1FOWGIrUWdmUExzUTZnWHlJbnNyZVFmbXBtN1JWRllmTDg2bjFmaVVPa1l2U2hrVVB4dmJ1a3pveTZLMWloTTFobzNYelc2RXZTZlhBK2RwaVdHYVdkK2RvWHpMem1Hd0tZRkxDQXNSQWxQQkFoTWxDRlhVN3RCVVZQcjhIZ1ZjSkhXcStGMDBwbHIrRE1UZHJQNHp2eFkxMWtOTWh4VCtTZVRHZytkNFY1TFFKaXR5VUdKTkI4VkZac2pnWUJaTS9JSS9YQ1RrajBxeURPcEYyQVZRMTdDSWpVcC9EblQxVWtMNUY1Z2RqK3NTMXdnMWdFM2dpZ202MGZDWHpTblBYYnlBUGJJWHYrSURwRTE2VGhhSElTOXNreWhsbU1FNUYzY2ZxQUtocTJDMEU1UEgxZ1lhWGFMUERrWkcwSERKT25LV0hwNTFJMHo1U091eDhlMVdBdVp6ZEhRclRrcDhUbWpYb0krbGEwd0dac3p1YnFiTzNpZlE2QS9XN3ZWU1lzVjNtUjBKS3drS2M0V0hpQmttUjhJM0NDZ0k4N29PTDRxelQ1UCtSVUpCZWpFT2dBUEs4aFlQemF0TStlSVRwMklPOXlUUW1lcm9tUFJ4eDFxeEFjc2lsZS91YlNlRWJjV1FHWUVDZ2hjTFkySHlLam9nakgyNWhNcGpwVXYxT3VnbGk0ZWgyZVJ3ME8zMmJKamt5dUNnTnpnMHZ6bFlNU2lTczB1b280TUc3aE1PakNFYVgxeUZFMG5TdmpCenVUbkVwSzg2WjhJb3FGQUl1Ync4a2c5QXJFYVJFV1NaSStqSDRYYnA2ZzlFOUVuSlQzb2FSekROK01VSkJRREhuNTZhOG9VbUVCdXNPeEJzL041K3RKRWJQa0FGRGo4VUd2T3MvSVd2Y1NnbEdCaHZTNy9GVFlmcFdHWWREWThmUEF4V1NBMzVzVEM0cDQrTG00QWFxSW9QZVF0ZnVmSzZKaDBaaHhsYnNVWE9TbVhOaWZENVpUQWt5RG9mYmJjY2x4bkE4V05BcXhDYlJOeWtoWHhRcGFEdzY3ZlhVWWJzaUcwS2h0djJvZUl2aDhyaFFNWU9jRUFxWEcvZUkrem5nT2M1eXhyOHE4MklBTTFjL0ZMRk9wbHF1NWVGUVhyTVp6R2NWQ2pZYkxXRzVJNEJUMWV1UnJsYnh0Tk90TWl0RERFaExYSUl5bkFBdnVPRVdFM1gzTmRBZnQ5NFZnYUc0MlhJUXQwWlg2UGVDRS9xUUZlOXJLNkh4N1lVNTBLdkg3Zlc0ZlMrcTdLS0JKeHNnZ0JYNXBTQUdoMWpJclZoNXpRNnczUmZhYWhCWG0vYUNiQ1pUakNVRlVUeVdacVc5cDYyTWpKUFhWcU9yUGdNTzROdjc0R2tmK293ZnROVkJEUW5qRkpxSFN3MTdwWHZoV1c1S1pxZS9RNDlOL1VTVENBVldvUVhGSUhCSFhYZTNGUHJVRHN1R0RtdEYvaEhLVEhwZWt4aGlBT1BJK1NKcTZTNkhGNEk5WVd6a0JKVG80NmlVTXpXcDhQaXIvUmlkdUx4S1lzU2tzVjh2TGxPUXZoR1gyWWxSME9CaEJqQyt1L2dFY3ZZMEFwSzdZazQxTnhqUFNRbldGSFRGNjZVcmpnZXZCOEN1NWErbDJ2WVNSUHR1VkRvNzNoaGRNU0huVVg3dFRqc1ZaR3hBbC9XcHRpT0lFUTFnbkwyOW1YNi90UjF0bWxrWWo4VzRYK0NTaldjVURHWTFOcFMvQzdoU0txaU1MTS9sMlFtU1daNzNEZHorZ2lvOEJDRU5ZUFE0NnFua3p3WFVicXZCa3hqVVFzV2ZaRmdidW8zckFmK3dON2pPTzkwK3lueDRQaTNMKzBuWUwxU2NoRFVnQVA0Z1BWLzdJZDFxKzFIU2htdUdrSXFXUlBneXhNRnFQOEhmalRualh3WTViUWZiSmN0Nk9JektnTUhvdEYvSGUxZWdzYXhIU3FHNndmZG1RNXg4TnlURkZxQmNwMmlTb3dIUjN5azUrMzZoRjd2WEFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xX1BSRSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiMGJiNDM1NDVmZDJjNDE4NTg3ZGRmZWIwYjI5MTZhY2UiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZX0sIm1heE1zZ1NpemUiOjEyMDAsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6OCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoxMjgsInRyYW5zcG9ydHMiOlsibmZjIiwidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN30seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTh9XSwibWluUElOTGVuZ3RoIjo0LCJmaXJtd2FyZVZlcnNpb24iOjMyODcwN319LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDIzLTAzLTI4IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyODcwNywidXJsIjoiaHR0cHM6Ly93d3cueXViaWNvLmNvbS9wcm9kdWN0cy8iLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IlNlY3VyaXR5IEtleSBORkMgYnkgWXViaWNvIC0gRW50ZXJwcmlzZSBFZGl0aW9uIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyMzAzMjgwMDMiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMyIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4zIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIzLTAyLTAyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyODcwNywidXJsIjoiaHR0cHM6Ly93d3cueXViaWNvLmNvbS8iLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IlNlY3VyaXR5IEtleSBORkMgYnkgWXViaWNvIC0gRW50ZXJwcmlzZSBFZGl0aW9uIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyMzAyMDIwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjMifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjMtMDItMDIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI4NzA3fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIzLTAzLTI5In0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiMWY0YmQwMjNkNTU5NmFiOGY1MDRmNmFmOTNmOThjZmY2M2E1ODUwNyJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyIxZjRiZDAyM2Q1NTk2YWI4ZjUwNGY2YWY5M2Y5OGNmZjYzYTU4NTA3Il0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IEJpbyBTZXJpZXMgKEVudGVycHJpc2UgUHJvZmlsZSkifSwiZGVzY3JpcHRpb24iOiJZdWJpS2V5IEJpbyBTZXJpZXMgLSBGSURPIEVkaXRpb24gKEVudGVycHJpc2UgUHJvZmlsZSkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc0LCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjJ9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50IiwicmVtb3RlX2hhbmRsZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURNekNDQWh1Z0F3SUJBZ0lVU09FalRmLy95cVJmUFc3UXE4cXRJeUNyQWc4d0RRWUpLb1pJaHZjTkFRRUxCUUF3THpFdE1Dc0dBMVVFQXd3a1dYVmlhV052SUVaSlJFOGdVbTl2ZENCRFFTQlRaWEpwWVd3Z05EVXdNakF6TlRVMk1DQVhEVEkwTURVd01UQXdNREF3TUZvWUR6SXdOakF3TkRNd01EQXdNREF3V2pBdk1TMHdLd1lEVlFRRERDUlpkV0pwWTI4Z1JrbEVUeUJTYjI5MElFTkJJRk5sY21saGJDQTBOVEF5TURNMU5UWXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFDZHZsMjd3Mmd1MWZQWGVFRmJJZHF4MEJhbHZWRFZXclFQSjdIcXZpdUV0WkhseFNMeFNGdGNYcFRvbHZMdm9mOGY0dE1lclFUa1ZHemNtWXptMUVCVDRJSnVNbW9FcWZrRUVoV3BzQURNRnJqWmtxbFpZOUVxeFF6TG9WRUVvbkU1b0d4U2RWQ3hDY0xJYWNrcHlSL0NDWHZqMUJ0L2hUZ0U5aFRsRjRwUnF4TWt4M3BsRjd5OGREWmxSSFdzN3ZibmhtQkNHZUkwWlBFUTZubDJtQ2cycjc0YWRGMnU2SzlyckxmaEJDM1FMRThFUHJncVVzSStoa3VxMnRLNE0yU01PcDh1VVZWa3FVZXUzaDBrcjNXVkkwVzAycGtnck9naUZLTEZOa1NyYlloZGpNQkRqNWl6bXFmYzl4SlJLb0RYNjEycWQ4WkdWSHBUNUFZRlgrMWhBZ01CQUFHalJUQkRNQjBHQTFVZERnUVdCQlRaeVU1RGlRL2EyVUVnRTdxQkswemhJc1JOUmpBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQU1BNEdBMVVkRHdFQi93UUVBd0lCQmpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQVh2bkI0U0x1VUpmWU1TVkdBaHNzTC9TbVdsaTNGU2NjZ3h5ZHZLbEFDY2lkSUlXS1FxYTNxL1FTVUVRekM5RGdFZk1ncjdpQzFCa1RaYklMYm9WNlVaNWtuTnN2akVaV3VNZW9nSjh0Z1pzMWhWdkt3Wml6d0orbUVjbXNqaElyQll1b0wxVDZ5ck9KdktGZzFqditDeTRad0E5QnBrL1YzVU9pcjFWeUs4ZEN0eUh1NnZmb3NvdEFkWXg4RkF1UjI0M2dSVE1WNkp4OEpkaWcySkRJQVFNbHpWZURwU1VIWC9LMkhYUkh4SHdmZ2piZ1VqakJ1LzcycjhPZmVoeWh6SFhJM0s4Q0ZGZGZsTys4bkVPSkszeThGMWl2Z1M1dU4vOFNtY1l3L1NUUVl3aHJ4UHV3ejNuUDhiYU11bTRCQjJublltcEI2MHNYM2JsNWs4UVVTdz09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWZDQVlBQUFDR1ZzK01BQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBSFlZQUFCMkdBVjJpRTRFQUFBYk5TVVJCVkZoSHBWZDdUTlYxRkQvM2Q1OXdlUVNJZ1M5QVFBWGNGTEFRWmk5ZnBlVnoxdFkvV1RacjVXeHBjN1c1a25MYTVqSTNaODVzclMybk0yc2p0V3daUzdJVUg0SDR4Q25FUXg0REFaRjc0Vjd1czg4NXY5L2xJbkJ2VkovQjRQdjludS81bnUvNW52TTU1NmZ6QS9RdjBIYi9JclgzVkZLUG80NWNubTRpblVJV1l3TEZSbVpRVXV3akZHL04xaVJIaDFFWjBOUlZSdWRxdDFCZCsyblNLeVMvT2h5czArbGszZS8za1E5cXZENFpVdGE0VlZTVXVZMGVpcHlpVGhBZm9jb09SVmdEdXV3M3FLUmlBZDNyYmNFdGpUallJb2Y2V2FIc0NtelZQV0NNeCtjZ2g4dExxV01LYU1Xc1VqTHFvMlJ0SklRMG9Pem1lcnBRdTRlc1pnc09Oa0d4SDdkMGtkdlRUMTdzNE9NVTdWSThaaGpnR2FNK0FxOWlFTnU4UGlmMXVkejA3TXd2S1dmOEdsVm9DRVkwNFBDNVdkVGFYWUZiUjh2TnZMNSszS2dmYjV4Tk15YTlSYW1KaXluYU1sR1RWdEZscjZiYTl1K3BxbkVYNHVNdVJSZ2pTWUVock43dXRGRmU2bHFhbDdOZmt3NWltQUdIeW5QcGJrOFZtWTB4c3RucHRsRkNWQ1l0elR1Qk44M1FwTUxqVHRldmRQelNVbko3ZThta2p4WjM5ZlhiS0RmbGRacWJ2VStUVWdHbkJWRjZmUTJpUEhnNFcxNlVXVXd2emJrMTZzTVpFK1BuMHB2ejdKU2V1QXllczhsY3BDbWFLdW8vcCtxV3IyVWN3SUFIV3J2UDBZRXpoWEF0TEFic3NIaHA3aUdhbXZ5aWpQOHJ5cXJYVVdYOVhvb3d4eUF1Zk5CcnA0M1BPQkZYWmxrZjhNRFJpcWNweW93QXdwdXoyeCtmV3Z6L0R0ZGU5c21zenlndGNSNkMxd2JkekJsNk9scTVXTllZNG9HYXRoSk1ya1RFeDBqQVJTSEFWcys1cllrUU5YYitRZ2ZQTHNRNmdYeUluc3JlUWZtcG03UlZGWWZMODZuMWZpVU9rWXZTaGtVUHh2YnVrem95NksxaWhNMWhvM1h6VzZFdlNmWEErZHBpV0dhV2QrZG9Yekx6bUd3S1lGTENBc1JBbFBCQWhNbENGWFU3dEJVVlByOEhnVmNKSFdxK0YwMHBscitETVRkclA0enZ4WTExa05NaHhUK1NlVEdnK2Q0VjVMUUppdHlVR0pOQjhWRlpzamdZQlpNL0lJL1hDVGtqMHF5RE9wRjJBVlExN0NJalVwL0RuVDFVa0w1RjVnZGorc1Mxd2cxZ0UzZ2lnbTYwZkNYelNuUFhieUFQYklYditJRHBFMTZUaGFISVM5c2t5aGxtTUU1RjNjZnFBS2hxMkMwRTVQSDFnWWFYYUxQRGtaRzBIREpPbktXSHA1MUkwejVTT3V4OGUxV0F1WnpkSFFyVGtwOFRtalhvSStsYTB3R1pzenVicWJPM2lmUTZBL1c3dlZTWXNWM21SMEpLd2tLYzRXSGlCa21SOEkzQ0NnSTg3b09MNHF6VDVQK1JVSkJlakVPZ0FQSzhoWVB6YXRNK2VJVHAySU85eVRRbWVyb21QUnh4MXF4QWNzaWxlL3ViU2VFYmNXUUdZRUNnaGNMWTJIeUtqb2dqSDI1aE1wanBVdjFPdWdsaTRlaDJlUncwTzMyYkpqa3l1Q2dOemcwdnpsWU1TaVNzMHVvbzRNRzdoTU9qQ0VhWDF5RkUwblN2akJ6dVRuRXBLODZaOElvcUZBSXVidzhrZzlBckVhUkVXU1pJK2pINFhicDZnOUU5RW5KVDNvYVJ6RE4rTVVKQlFESG41NmE4b1VtRUJ1c094QnMvTjUrdEpFYlBrQUZEajhVR3ZPcy9JV3ZjU2dsR0JodlM3L0ZUWWZwV0dZZERZOGZQQXhXU0EzNXNUQzRwNCtMbTRBYXFJb1BlUXRmdWZLNkpoMFpoeGxic1VYT1NtWE5pZkQ1WlRBa3lEb2ZiYmNjbHhuQThXTkFxeENiUk55a2hYeFFwYUR3NjdmWFVZYnNpRzBLaHR2Mm9lSXZoOHJoUU1ZT2NFQXFYRy9lSSt6bmdPYzV5eHI4cTgySUFNMWMvRkxGT3BscXU1ZUZRWHJNWnpHY1ZDalliTFdHNUk0QlQxZXVScmxieHROT3RNaXREREVoTFhJSXluQUF2dU9FV0UzWDNOZEFmdDk0VmdhRzQyWElRdDBaWDZQZUNFL3FRRmU5cks2SHg3WVU1MEt2SDdmVzRmUytxN0tLQkp4c2dnQlg1cFNBR2gxaklyVmg1elE2dzNSZmFhaEJYbS9hQ2JDWlRqQ1VGVVR5V1pxVzlwNjJNakpQWFZxT3JQZ01PNE52NzRHa2Yrb3dmdE5WQkRRbmpGSnFIU3cxN3BYdmhXVzVLWnFlL1E0OU4vVVNUQ0FWV29RWEZJSEJIWFhlM0ZQclVEc3VHRG10Ri9oSEtUSHBla3hoaUFPUEkrU0pxNlM2SEY0STlZV3prQkpUbzQ2aVVNeldwOFBpci9SaWR1THhLWXNTa3NWOHZMbE9RdmhHWDJZbFIwT0JoQmpDK3UvZ0VjdlkwQXBLN1lrNDFOeGpQU1FuV0ZIVEY2NlVyamdldkI4Q3U1YStsMnZZU1JQdHVWRG83M2hoZE1TSG5VWDd0VGpzVlpHeEFsL1dwdGlPSUVRMWduTDI5bVg2L3RSMXRtbGtZajhXNFgrQ1NqV2NVREdZMU5wUy9DN2hTS3FpTUxNL2wyUW1TV1o3M0RkeitnaW84QkNFTllQUTQ2cW5rendYVWJxdkJreGpVUXNXZlpGZ2J1bzNyQWYrd043ak9POTAreW54NFBpM0wrMG5ZTDFTY2hEVWdBUDRnUFYvN0lkMXErMUhTaG11R2tJcVdSUGd5eE1GcVA4SGZqVG5qWHdZNWJRZmJKY3Q2T0l6S2dNSG90Ri9IZTFlZ3NheEhTcUc2d2ZkbVE1eDhOeVRGRnFCY3AyaVNvd0hSM3lrNSszNmhGN3ZYQUFBQUFFbEZUa1N1UW1DQyJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTAyLTAxIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NCwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZdWJpS2V5IEJpbyBTZXJpZXMgKEVudGVycHJpc2UgUHJvZmlsZSkiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlUyRjEwMDAyMDI1MDIwMTAwNyIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTAyLTAxIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NH1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wMi0wNiJ9LHsiYWFndWlkIjoiNzM0MDIyNTEtZjJhOC00ZjAzLTg3M2UtM2NiNmRiNjA0YjAzIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI3MzQwMjI1MS1mMmE4LTRmMDMtODczZS0zY2I2ZGI2MDRiMDMiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoidVRydXN0IEZJRE8yIFNlY3VyaXR5IEtleSJ9LCJkZXNjcmlwdGlvbiI6InVUcnVzdCBGSURPMiBTZWN1cml0eSBLZXkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MTAwLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlEVWpDQ0FqcWdBd0lCQWdJR1EyRnNZV2xDTUEwR0NTcUdTSWIzRFFFQkN3VUFNRFV4TXpBeEJnTlZCQU1NS2tsa1pXNTBhWFlnUmtsRVR5QlNiMjkwSUVOQklGTmxjbWxoYkNBM05EQTROVGN3T1RJeE1UazNNREFnRncweU1EQTBNamt3TlRReE1qQmFHQTh5TURZd01EUXhPVEExTkRFeU1Gb3dOVEV6TURFR0ExVUVBd3dxU1dSbGJuUnBkaUJHU1VSUElGSnZiM1FnUTBFZ1UyVnlhV0ZzSURjME1EZzFOekE1TWpFeE9UY3dNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXRHQitFT0JwMkpkM3Y3VkVBa1pZVVF1dU8yL2E1MXZ0TC90dkdDSkhUYlErbTh1ZjNnRTZ0V3k4ekRZb2owWmQrKy9FSWpnZ2RSck9EMWRZSDVsK3k1aXBSVDNKc202WlUxTkJ1dFQrWDhLcjVLOFR4NkVROFMveVN4WXZGb1RKZHNQUHp0N1l0WlJ4SDhFN0dNYjdvTzh3ZWpLRDJnQlRyVEVTczNkMkZNWWE0ai90ckU2Myt0KzROcWNrSlcwdGVPNmVPRm1JYVhRS1B4L3d1SVgzUmVFOVpvTkNRT25OajNVWkROUlpaWEwxVkVUQ3JSb2dRY3ZqL2NRY1lGU3dTZUIyM1RrZXNOUXhSS3JpRWJlVitqOHlxVkUyVHV6SklQejRKMTB1Mk9tbXJSUU94dzhDZEVOWk1hajZFdC90WTUxYUdsQUhyNng5cFI4cVczUGhDUUlEQVFBQm8yWXdaREFkQmdOVkhRNEVGZ1FVR2QreU41R0hzYm9ZUS9YNHRweFozKzJqdHFBd0h3WURWUjBqQkJnd0ZvQVVHZCt5TjVHSHNib1lRL1g0dHB4WjMrMmp0cUF3RWdZRFZSMFRBUUgvQkFnd0JnRUIvd0lCQURBT0JnTlZIUThCQWY4RUJBTUNBUVl3RFFZSktvWklodmNOQVFFTEJRQURnZ0VCQUVWVDU4OXhCSTNldjZjSFVMN3FGSGVDTU8xUzJNVWh0OHdNVlA2R1dQb2QxRTFyeWt5eVM2ZSt2Qm9rT2ZaUFRFVDcrMmVGMFFCTlgvNzRHOTZWK3F2bDVuWkhJUnFJeFowY3p3M2UrYS80VS9ZYzM2bStyMnZncGp6UEluOUdGTDZzN3Rtd2cxK2JOeVB5VTZ5cGtFZVY0NkFjZjBiV2UvSUFiODVWUUpaV2RBR2hIU0oxZFVWYjg4bDdPZXFrUVJucWUzbTNjMjAxSkROQ2QxdzUvM0xVKzhmbW1qT21hdHNHd3c0eVJHdzNjR0RwV1E5aDFWWnBTdVVkZm03T2gvdWw3UG5majl1MDVnSVlhWEJvOXpYQXoxc2VQTFY3aGtmYlM3cnlQTDB4RFVlNkZiSUcyNjdyTkppaDRlSzZ5a05QRU5HaVJRZXc4dzFBU2RuTGlLbz0iLCJNSUlEUURDQ0FpaWdBd0lCQWdJQ0VBQXdEUVlKS29aSWh2Y05BUUVMQlFBd05URXpNREVHQTFVRUF3d3FTV1JsYm5ScGRpQkdTVVJQSUZKdmIzUWdRMEVnVTJWeWFXRnNJRGMwTURnMU56QTVNakV4T1Rjd01DQVhEVEl3TURReU9UQTJOVGMwTkZvWUR6SXdOVEF3TkRJeU1EWTFOelEwV2pBbk1TVXdJd1lEVlFRRERCeEpaR1Z1ZEdsMklFWkpSRThnU1c1MFpYSnRaV1JwWVhSbElFTkJNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXVvQW96VVNtdmVOdTJNY3NyTFJpRGMydlorT0RjSXpvV05GNjV6UlVROVVqRllXNWRZWGthTFlKUnNJejVzZGlnWXljTWlHZ2FvTkZPbHlSMHdTUlgwcFpTOUFXWFdNN3BSc1pRUDlUZHdEaGdudGlGU2RtZWVhaUtFU1lPVGgrWUdsc2RZNFIwWmZ2NU4zMkZwd3NIMHZZMkYvS2NyM0pYNmk1dktrekJTbTFtZ0VJZGZsTkFHOXMvRzA5TXBuejBNZS8xeUlqSnY5VjlERUFXSEpuNk1ZTitmYklCZm92bENLWVFYTlRHeGZBZ3lRODJnYXNCVldrdWlVRXp0WTJVYmZneUEycFVaODZPSWRpbkNxT3BnbDkyYlpoMWpWeE5GamVwdnlmV0ttbEFZWVN0dThqVDVrZXZBTlFGeXM0UU8wNjNsWkI5T3N0NEFvaE5Nc2hVUUlEQVFBQm8yWXdaREFkQmdOVkhRNEVGZ1FVdHQ3NjJEWGI2WHZpYmNFcitRWVdHOHJjRmo4d0h3WURWUjBqQkJnd0ZvQVVHZCt5TjVHSHNib1lRL1g0dHB4WjMrMmp0cUF3RWdZRFZSMFRBUUgvQkFnd0JnRUIvd0lCQURBT0JnTlZIUThCQWY4RUJBTUNBWVl3RFFZSktvWklodmNOQVFFTEJRQURnZ0VCQUZDbG1rRExlN0YvQ1JtUnU3MmlLS05xaUxmWVcwOExEN1RrUVdvejUzbklBanM4OHNNc2JmckVTanJBUEpjNGdzYkNGWlRMYzJGeDN6MTU2ZlR3V0VBK1BEY1lNRm5ya2FMVEJJdlhZWUVkUDUwdVJVd1Z4dHdNcTFIdURGTjVPYVhwOW1DNWZBUFNQSU84OVNXVVdiUTEzTCtuUjRJcUo3TzBoQnlLS2NXSzF6ZFR5OFRrNUxhZEhNSjVlTEZuSGFwWit1UnQ3YW1WQ3VmOEZhM3F1WVVBZjR3UUgyMllpaTBwdnAxR1ZpNEtwTVh1d2hMQWl2clEyNEF1K2kreWh3SHFWemdobDlFOEZKbG8wWWxLL2JySEpFczNHZEt3SFVBWkF2S2RQZmxrT0NZOHovY1NpYmRJRGhvd09XdEg2bEd2UWh4RHpYQitBbmt4TXVUTVFDOD0iLCJNSUlDdURDQ0FhQ2dBd0lCQWdJQ0VBUXdEUVlKS29aSWh2Y05BUUVMQlFBd0p6RWxNQ01HQTFVRUF3d2NTV1JsYm5ScGRpQkdTVVJQSUVsdWRHVnliV1ZrYVdGMFpTQkRRVEFnRncweU1EQTRNVFF4TmpNNU5UUmFHQTh5TURVd01Ea3dOakUyTXprMU5Gb3diekVMTUFrR0ExVUVCaE1DVlZNeEZUQVRCZ05WQkFvTURFbGtaVzUwYVhZZ1NXNWpMakVpTUNBR0ExVUVDd3daUVhWMGFHVnVkR2xqWVhSdmNpQkJkSFJsYzNSaGRHbHZiakVsTUNNR0ExVUVBd3djZFZSeWRYTjBJRVpKUkU4eUlGTmxZM1Z5YVhSNUlFdGxlU0JRTVRCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQkhYaHBsYjhmdTRMUDlYYzBnNURWWDF1MjYrcTJWU3BVRFZIM043TXYrcEtGTTh0T1BnM3hha2ZCZFh4ZS9DRUxJQ1BlaWJRVHVvelQ2NDFpRGxXc3NxamJ6QnRNQjBHQTFVZERnUVdCQlJldXU0cmNIN3Flc0VFbFRqSmRxcGRlcHk2YVRBSkJnTlZIUk1FQWpBQU1CTUdDeXNHQVFRQmd1VWNBZ0VCQkFRREFnUXdNQjhHQTFVZEl3UVlNQmFBRkxiZSt0ZzEyK2w3NG0zQksva0dGaHZLM0JZL01Bc0dBMVVkRHdRRUF3SUY0REFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBVXhWUDFQZkFiTlcyNXV2Z3BydXhsdGdnZlBib1lMY1FhYnpGSHNsZDJQM3JpaXBjMzRMWEx4bW96QnJqZHc1Ry9wa1RzVWpzanltTjhrNDU1U3d6eUZnVFlKeDY5RHlLV3hJaWpoY0NIS3Qya1F5cGZtaWFkMmdJRy93VldyQ1hnYzFuSUxvSUJEdUxVeUZmQ0g3ZWYzZ0x1aXJ5NnJvMlJWcTZHVUtXODNFL1NVSGRsVVRKa1NxcFc4RTNHT3ZmZkhORmpXSGI4YTE5b0VaZGZQM2tDejY1cDYvMk1TeHh2MndUdDhkUTVVbGRYQUVCWEJQU1Rmc3E1YmIwTnNxd252QkZrdkFhS2ordWV5US9TOW81UFFySW43SmhHaXBYcmF1NDM4aG10MFJFUTY3WFBGaTQ2Q3BNUzBUOXNCUEd5U0lvTE1tblRjbkhyMFVvdHBzQ3hRPT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBR1FBQUFBT0NBWUFBQURaamJsb0FBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFFblFBQUJKMEFkNW1IM2dBQUFmZmFWUllkRmhOVERwamIyMHVZV1J2WW1VdWVHMXdBQUFBQUFBOFAzaHdZV05yWlhRZ1ltVm5hVzQ5SXUrN3Z5SWdhV1E5SWxjMVRUQk5jRU5sYUdsSWVuSmxVM3BPVkdONmEyTTVaQ0kvUGlBOGVEcDRiWEJ0WlhSaElIaHRiRzV6T25nOUltRmtiMkpsT201ek9tMWxkR0V2SWlCNE9uaHRjSFJyUFNKQlpHOWlaU0JZVFZBZ1EyOXlaU0ExTGpZdFl6RTBPQ0EzT1M0eE5qUXdNellzSURJd01Ua3ZNRGd2TVRNdE1ERTZNRFk2TlRjZ0lDQWdJQ0FnSUNJK0lEeHlaR1k2VWtSR0lIaHRiRzV6T25Ka1pqMGlhSFIwY0RvdkwzZDNkeTUzTXk1dmNtY3ZNVGs1T1M4d01pOHlNaTF5WkdZdGMzbHVkR0Y0TFc1ekl5SStJRHh5WkdZNlJHVnpZM0pwY0hScGIyNGdjbVJtT21GaWIzVjBQU0lpSUhodGJHNXpPbmh0Y0QwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOTRZWEF2TVM0d0x5SWdlRzFzYm5NNlpHTTlJbWgwZEhBNkx5OXdkWEpzTG05eVp5OWtZeTlsYkdWdFpXNTBjeTh4TGpFdklpQjRiV3h1Y3pwd2FHOTBiM05vYjNBOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZjR2h2ZEc5emFHOXdMekV1TUM4aUlIaHRiRzV6T25odGNFMU5QU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2YlcwdklpQjRiV3h1Y3pwemRFVjJkRDBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5NFlYQXZNUzR3TDNOVWVYQmxMMUpsYzI5MWNtTmxSWFpsYm5RaklpQjRiV3h1Y3pwemRGSmxaajBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5NFlYQXZNUzR3TDNOVWVYQmxMMUpsYzI5MWNtTmxVbVZtSXlJZ2VHMXdPa055WldGMGIzSlViMjlzUFNKQlpHOWlaU0JRYUc5MGIzTm9iM0FnTWpFdU1TQW9UV0ZqYVc1MGIzTm9LU0lnZUcxd09rTnlaV0YwWlVSaGRHVTlJakl3TWpBdE1EUXRNVEJVTVRFNk5EWTZNVFl0TURRNk1EQWlJSGh0Y0RwTmIyUnBabmxFWVhSbFBTSXlNREl3TFRBMExURXdWREV4T2pRMk9qTXlMVEEwT2pBd0lpQjRiWEE2VFdWMFlXUmhkR0ZFWVhSbFBTSXlNREl3TFRBMExURXdWREV4T2pRMk9qTXlMVEEwT2pBd0lpQmtZenBtYjNKdFlYUTlJbWx0WVdkbEwzQnVaeUlnY0dodmRHOXphRzl3T2tOdmJHOXlUVzlrWlQwaU15SWdjR2h2ZEc5emFHOXdPa2xEUTFCeWIyWnBiR1U5SW5OU1IwSWdTVVZETmpFNU5qWXRNaTR4SWlCNGJYQk5UVHBKYm5OMFlXNWpaVWxFUFNKNGJYQXVhV2xrT2pVeU0yRmtNek5rTFRrd01qTXROR05sTlMwNU1HSm1MV1V6Wm1FeFpEZGpNR0ZsTmlJZ2VHMXdUVTA2Ukc5amRXMWxiblJKUkQwaVlXUnZZbVU2Wkc5amFXUTZjR2h2ZEc5emFHOXdPakJoTVRGbFpUZG1MV1E1WlRRdFlXTTBOQzFoTTJJMkxUbGxabVZrWVRBME5EQTVaaUlnZUcxd1RVMDZUM0pwWjJsdVlXeEViMk4xYldWdWRFbEVQU0o0YlhBdVpHbGtPbUk0WkdSbVlUQTVMVGRpTTJNdE5ETXdNeTFpTlRsbUxXRTJNVFF5WlRkaU1USmhZU0krSUR4NGJYQk5UVHBJYVhOMGIzSjVQaUE4Y21SbU9sTmxjVDRnUEhKa1pqcHNhU0J6ZEVWMmREcGhZM1JwYjI0OUltTnlaV0YwWldRaUlITjBSWFowT21sdWMzUmhibU5sU1VROUluaHRjQzVwYVdRNllqaGtaR1poTURrdE4ySXpZeTAwTXpBekxXSTFPV1l0WVRZeE5ESmxOMkl4TW1GaElpQnpkRVYyZERwM2FHVnVQU0l5TURJd0xUQTBMVEV3VkRFeE9qUTJPakUyTFRBME9qQXdJaUJ6ZEVWMmREcHpiMlowZDJGeVpVRm5aVzUwUFNKQlpHOWlaU0JRYUc5MGIzTm9iM0FnTWpFdU1TQW9UV0ZqYVc1MGIzTm9LU0l2UGlBOGNtUm1PbXhwSUhOMFJYWjBPbUZqZEdsdmJqMGlZMjl1ZG1WeWRHVmtJaUJ6ZEVWMmREcHdZWEpoYldWMFpYSnpQU0ptY205dElHRndjR3hwWTJGMGFXOXVMM1p1WkM1aFpHOWlaUzV3YUc5MGIzTm9iM0FnZEc4Z2FXMWhaMlV2Y0c1bklpOCtJRHh5WkdZNmJHa2djM1JGZG5RNllXTjBhVzl1UFNKellYWmxaQ0lnYzNSRmRuUTZhVzV6ZEdGdVkyVkpSRDBpZUcxd0xtbHBaRG8xTWpOaFpETXpaQzA1TURJekxUUmpaVFV0T1RCaVppMWxNMlpoTVdRM1l6QmhaVFlpSUhOMFJYWjBPbmRvWlc0OUlqSXdNakF0TURRdE1UQlVNVEU2TkRZNk16SXRNRFE2TURBaUlITjBSWFowT25OdlpuUjNZWEpsUVdkbGJuUTlJa0ZrYjJKbElGQm9iM1J2YzJodmNDQXlNUzR4SUNoTllXTnBiblJ2YzJncElpQnpkRVYyZERwamFHRnVaMlZrUFNJdklpOCtJRHd2Y21SbU9sTmxjVDRnUEM5NGJYQk5UVHBJYVhOMGIzSjVQaUE4ZUcxd1RVMDZTVzVuY21Wa2FXVnVkSE0rSUR4eVpHWTZRbUZuUGlBOGNtUm1PbXhwSUhOMFVtVm1PbXhwYm10R2IzSnRQU0pTWldabGNtVnVZMlZUZEhKbFlXMGlJSE4wVW1WbU9tWnBiR1ZRWVhSb1BTSmpiRzkxWkMxaGMzTmxkRG92TDJOakxXRndhUzF6ZEc5eVlXZGxMbUZrYjJKbExtbHZMMkZ6YzJWMGN5OWhaRzlpWlMxc2FXSnlZWEpwWlhNdlpqRTVPRFUzT0RBdE5tWXlZUzB4TVdVMExUZ3haVEl0TmpGak16TTVNemN6TmpoaU8yNXZaR1U5TnpNME5qazVNR1F0TVRJek5DMDBObUpqTFRsak56RXROR1ZtT1RVek5XSXdZV1ZoSWlCemRGSmxaanBFYjJOMWJXVnVkRWxFUFNKMWRXbGtPamxqWkRNMVpqZ3hMVFJrTVRZdE5UVTBZUzFpTWpVM0xXUTJaVEUyTXpSbE1qVXdaaUl2UGlBOEwzSmtaanBDWVdjK0lEd3ZlRzF3VFUwNlNXNW5jbVZrYVdWdWRITStJRHd2Y21SbU9rUmxjMk55YVhCMGFXOXVQaUE4TDNKa1pqcFNSRVkrSUR3dmVEcDRiWEJ0WlhSaFBpQThQM2h3WVdOclpYUWdaVzVrUFNKeUlqOCtub2FNYWdBQUJadEpSRUZVV0VmTm1HbHNWRlVVeC85djNreW5RNmZ0VE1mUUJVUVdCWWtVRVdrRENnWVZWR1JSMllLSWlaRW9Hc1FGaUlwYitHVDhRUHhrakd5QkVBdW0wbUtDTEFuR3hJaWFBTklLQXNWU3BBWWpiYWVkbWM3U1dkN2lQZmZkenN6clRJdUVxZVdYbkx4NzdqSzU3NTU3bGpkU28vc2VIVmxRdTBNbzNiZ0dJejdaSkhwU1hLaWFqK0NwSDFDdGgwUlAvK2k2RHVWYU84Sy9ua1hYcmxwMDF1K0hyYmdNa3NVaVp2U1ByaWl3T1BJeHVhMFJUZFVMMFhQdUlpejJQREdhUW92SGtUOStIQ2FlUHNMMXEyOXRSdnRudXlFWE9ybWU4SGxSZWZrRXZOdHEwTFpsYTdML1Jvajcva2FWN2tQejNKVUlIVC9COTBYb3FnWUpPdTROWE1BSnlZVTgxd2hJa21TTUpSVElIamNxci96QzlYUWFpKzRHbXdoSmxybE83K0Nvbklqcm44cE5RcHV6bFpmQ3RXQU94dFp0dytSTERWQUNYdWlhSm1iY1BKTE5obUJENWt2L1g5REJFODdLS3VqeEJHOFRrczJLYU90RkpObzZSSTlCNUxmelVJSmRTV01RV2pqTUhXRFFEZElYKzdnN01IYmZEcWdCditoaG00bkZvZmg4bVJMMFEvVUZ4S3hNeVBzSU1ycU1ZZkFmUE1iMW9hTDA3VmVoUmNKQ001QXRoY3d6OXdyTndMdDlMeXpXQXFFWjc2RWhCdmVTSjNOdmtNanAzM0Z1L0N3MFRWOEU3OVlhMFd1bVpNVWlkbnZzM04zSkdBVlZVM0RYc2E4d3JuNm5XZXAyWVV6dEYyS1ZHVzRNVlUwWkpTOGYvdnFqdk4wZmFpQ0loTkxPd2s5YlVyUklqeGcxazBpYlE1SkE2Z0wxaDJmVlluYXcwZVNlQ011d2ZCNHEwL0h1Mk1mN2U2RTkzTFp5QlcvbjNDQXErL0ZJODNuMG5MbUFsbGRlUXVqblUyTEVqSHZ4UE9peEdEOVUrOWhSS0pvekM2NW5uakFKelhFOS9iaFlZWVpDUStHak01TWh3cEp2aDYvMklHOW5nNHd4NnZPUE1hMjdIVk9EclZ5cTlBNjRuMk9IMk1jb1pJeHBiR3hxeUpoSFVqMkFwNmJqV2JZY2VpUXFOQ09jUnE4Mk00ODMxbE1lMUdMZHBuQ2x4cnRSdG1rZGIrZmNJSlNzSmVUeEE3TEp3K0hmZjBpTW1NbWZQSkhIWGluUGh0QlBKOUc2ZWlQK1hQVzZTUzR2WFFQdjdscXh3b3dlamNLOWZDRi9FdlNDU3FUVCtFMTJDSDBoYnlRb29jdk9ZVndJaXZOOTg1a09sVC9sQW1NZWlkVlZ4UHV1QitVQk5SNFVtb0VSdGd3djhXNW4zcEVlcmxqaGt1ZXBnR1BTQks0UGJnNlJMVkE2dW9SaXh1b3A0UWNoV2ExSS9OT0d6aS9yNGZ2Nlc1TjAxWDJEU01OWnNjS01wckdZeTBLZnFxVml0b1hsRVZvbnNjdnduMGtMTDdtZ29Ib0taRWN4dXdDR1VRbko0ZUI1Zy9CdXIySGh5c0hiaEJvS28reTkxNFEyMkFZaExFWUptRUY2TjVWLzVGbDloTFluU2RtM3lJcHBuc3p0WmFPVFZZN0ZZWWUvN3JEcGhZZUMwdlV2czZvcElqVERDNk10elFpZk9zTkNlaWdacmlqWHFIcVF6KzlsY0EzQzNORTJzbHdvWnBTT1RuN29kSk5rdHd1Rmp6d0E1OHhxa3hRK09KMVhaUU5SOHV4VDBIckRsdDJPd09IdmVadU1QRlJRdGFXb2dWVEJ3ZlppTGZiZzByeFY3T25tZllRZVpWNysyQUtoR2VUY0lCUVROUVNoK0xzUjE2NWgrTm9YeElpWm5vWnpSdnhtVlZZUlM4NTNIdHJES3EyOUpwbHcvQUNHcjN0UnJNaU9hOWw4YUlvd0NIbWFWV2JWMWhHZXc0WUt1Y2dKNTZScDVtOFN1bnlVMzdqbkc2alJJRXZtYTRWbWtIT0Q1STBhZ1lvTjc2RDhvemR4MytVVzJDcEt4WWdaWDkwaEk5WXo5NDIxdEtMN3V4L2hQM0EwUTdwcURvZ1YyWEhPdUorSHIrUnRwS3FtNlJMUFRVTkp0bStTZEdOUVpMRFlDbEE0ZTRib01jaTVRZXlqUjJMa2xnOVJzWGs5N0dOdUY3MW0yajdkeHArMFFmb3JKSHl5RWMxelY2Qmw4ZW9NdWNocWV6NTNnQkJVUFB0aDdtbTlETFV4Q00velN6SytTZEtoSEVNVldWOXlicERyUVRIK3J3M3ZRbllWaXg2MkNXWVVxOXVkWFpDS3VmM2hYcllRV2srcTlyOVY4Q3hkQ2ozTHZzaElsR1BLM2plK1BkSVpkSVBvaXNwQzBoVjA3dG1QcHVvRitHUCtjdGhjNVFQZStCdWxoSG1SRHZhUmVZdFI5c0ViVUdPcGFxc1hQUjVIOFVOeitIZU9HZUJmSjM1NkNMOEdkRDhBQUFBQVNVVk9SSzVDWUlJPSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIl0sImV4dGVuc2lvbnMiOlsiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiNzM0MDIyNTFmMmE4NGYwMzg3M2UzY2I2ZGI2MDRiMDMiLCJvcHRpb25zIjp7InJrIjp0cnVlLCJjbGllbnRQaW4iOnRydWV9LCJtYXhNc2dTaXplIjoyMjAwLCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxXSwiZmlybXdhcmVWZXJzaW9uIjoxMDB9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMC0wOC0yMSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyLCJ1cmwiOiJodHRwczovL3d3dy5pZGVudGl2LmNvbSIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoidVRydXN0IEZJRE8yIFNlY3VyaXR5IEtleSIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjAwODIxMDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjIiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMyJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMC0wOC0yMSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIyLTA0LTA3In0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiYzg4OWFiZDAxNjI3Yjk4ZDJmN2MxY2Q5ZDVkMTZkMmQwMjYyZjY5NiJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyJjODg5YWJkMDE2MjdiOThkMmY3YzFjZDlkNWQxNmQyZDAyNjJmNjk2Il0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJFZ2lzIFUyRiBCTEUgQXV0aGVudGljYXRvciJ9LCJkZXNjcmlwdGlvbiI6IkVnaXMgVTJGIEJMRSBBdXRoZW50aWNhdG9yIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwiLCJiYURlc2MiOnsic2VsZkF0dGVzdGVkRlJSIjowLjAsInNlbGZBdHRlc3RlZEZBUiI6MC4wLCJpQVBBUlRocmVzaG9sZCI6MC4wLCJtYXhUZW1wbGF0ZXMiOjAsIm1heFJldHJpZXMiOjAsImJsb2NrU2xvd2Rvd24iOjB9fV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVsZXNzIiwiYmx1ZXRvb3RoIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlCYkRDQ0FSR2dBd0lCQWdJQkFUQUtCZ2dxaGtqT1BRUURBakFkTVJzd0dRWURWUVFERXhKRloybHpkR1ZqSUVOQklHWnZjaUJWTWtZd0hoY05NVFl3TWpJMk1EZ3hNVEEyV2hjTk1Ua3dNakkxTURneE1UQTJXakFkTVJzd0dRWURWUVFERXhKRloybHpkR1ZqSUVOQklHWnZjaUJWTWtZd1dUQVRCZ2NxaGtqT1BRSUJCZ2dxaGtqT1BRTUJCd05DQUFSUDNBRTZWczV0RkJDSU1leG1kWGlSRmM4UWN5VHJjNm5sMWZFb0JLd01kQk10amYvdnpQanJyQWl0azVRMk9qTzlZTnkyNkNpNFRNSVlJd3I4WUJRb28wSXdRREFkQmdOVkhRNEVGZ1FVeUltcjBCWW51WTB2ZkJ6WjFkRnRMUUppOXBZd0h3WURWUjBqQkJnd0ZvQVVNdXJpUC9DMWlGZzR2cUJHMTVrNHZIaE9zM2d3Q2dZSUtvWkl6ajBFQXdJRFNRQXdSZ0loQUpRTU82bjZQSTlFUFl4Nk1qdXNJRm83R1BCMVk4WXB6K1VCbVVqNkNVbDJBaUVBaDBFMm1wYVRWVFJwMXBhV1VsSHZuWUdCdTNTMDRIcmQzN09SMGxYb1hSMD0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBTWdBQUFCcUNBWUFBQUQ1akI1N0FBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFEc0lBQUE3Q0FSVW9Tb0FBQUJ6WlNVUkJWSGhlN1owSFlGUkZHc2YvNmIwSFFraWpTSkVpZ2hwQWxONmJJQkE2eWlrSW5BVVZEanp1UEUrOXBsaG9LaXJxSVVWQUZGQzZpQ2pGQStsSWs2YVVRSUJBRXRLem0vdStlZTlsYTVMZHpTYlpsZm5wc0p2WnQ3UHo1czEvdnZubXpjenpLQ1lna1VpczRxbStTaVFTSzBpQlNDUmxJQVVpa1pTQkZJaEVVZ1pTSU5XSUhCMXhmVW9keGNvNWZ4NnBxOVpDbjU4UER3OFBOVmJpRExqSVBieThrUGpJS1BoR2hxdXhFbGVrVklGYysyRW45ajgyQVlVWm1lSmlTcHhIc1U0UEx6OC9QTEIxTFlMcTExZGpKYTVJNlYwc05ocHNPV1J3ZnZCVVh5VXVUeGsraUhJUlBUdzg0ZUVwZzFPRHNWZ2tMbzNkVGpyM3lHU3dQMGpjazlKOWtPMjdzUC94aVNqS3lJS0h0K0tEaUVQNWdoY1ZvVml2RjNHU2NpQXI0ZW5ycTc1VkxFYXhUa2R4NUlOOCt6V0M2dFVUY1JMWHhENkJrQ2k4QWdNUjJxUXhmTUxEcFVoc2dVcjMycmJ2UmVNaUJlSisyQ1VRZldFaEF1c2tvY1dzbVFpN3R5V0s4d3RFdk1RS0plNkZCelkxdkFzZ1VXaWpnVklnN29QOUFxbFhGeTNuejBaWTgyWWlUbEkrRzVJYW9iaXdTQXJFRGJIL1RqckxTWGF0YklLTFNyUS9WcHNnaVRzZ3A1cElKR1VnQlNLUmxJSDlQa2hkOGtIZWV4dGhMY2p4TktJb054ZFpQeCtEdnFDQTNOTGI2d1pZTWYzbjRlMk5pUHZ1S1JtcFlrVEJVdkZ1VEdvc2hzYWxEK0orT0UwZzJXZk9ZdStqNDVGM0pRMmVubVNZYmhlTlVPbnB5U2Z6all4RXgxMWIxVWdGS1JEM3gya0N1WFhxRFA0M2FBVHlVbE52djhtTlZPRjlvNlBSNWVoZWszWkJDc1Q5Y1o0UFFqWER3OHVUZ2pjOHFTSjRVcGZqZGdoYzZibDdKVjdWb3BEOGZwQk91a1JTQmxJZ0Vra1p1TFZBMkgwcUswZ2tGY1Z0QlNJRW9OZERuNWRQSVE4Nk5mQjdQYzhSbzgra1NDUVZ4VDBGd2haQ3A0TlBSRGdhL25rcUdyNHdGWTJtVDBHakY2YUk5M2RNL2lOOG9pTEZNWHlzUk9Jb2Jpa1Fydkw2b2lMRXB3eEJnK2VlUW9Qbm4wYURLYy9RSzRlbjBXakduMUQ3NFlmRTZqMXBSU1FWd2YwRVFoV2U3OGNFSlNVaWFkd2phcVFsaVdOR3dDYzhWTFVpYXFSRVlpZHVKeEMyQ0o3ZVhvZ2JPaGdCdFdQVldFdUM2OWREVEk5dVFpRFVJVk5qSlJMN2NDK0JzTzlCWGF1QXVEalVmcWl2R2xrNmRTYzhydmdpOUIySnhCSGNSeUFzRG43UkY2TkdsNDRJYm5pSEVsOEdRUTBiSU83aEFlQjE0WEo1c01RUjNNcUNjSGZKbHl4Qy9JaWhhb3daWmowcG52b1JOMlFnL0dwRUs3NklSR0luYmlNUVVmZkpDc1NuUEl5dzVrMUZuREZwbTdjZ2RkMTY5UzhENFMxYklPcitOc0tDeUJFdGliMjRqMERJaitEN0h2SERocWd4Qm5UNStUZzk2eDJjWDdpRUxJVmxWeXArUkFxOC9QeVZicFlVaWNRTzNFSWczUExyQzRzUTI3OHZRcG8wVm1NTlhQMW1LNjV2MzRYMC8vMkVHM3QrVW1NTlJMVzdIN1VIOWhNaWsvS1EySVByQzRTZGMvSWYvR3BHaTBwdUR0OFRPYjlrR1R4OGZhREx5Y0c1ano2bDc1aGFFWjZHejhQQ1BzRkIwaGVSMklYTEM0UmJmTzRheFhUcmpQQldMWlZJSTY1OTl6M1NkL3hZc2o0amRkVnFYTisxVy8zVVFHVGJaTlRvMmhuNmdrTHBpMGhzeHJVRndoVlpYMHorZ3k5aUJ6NEVUM28xaGljbVhsanhKWFM1dVhRbWRDcnF4dEFYbHF4UWp6REEwMDVpQi9TRFQxaUljUGFsTHlLeEJaY1dDRmRoWFg0ZVlucDJSNDFPN1pWSUl6S1BIa2ZhdW8xaVJWOEpYdDVJMi9RTjBuZGIraUxSSGRvaHVtTjc2bVpKWDBSaUc2NHJFUFk5cUtYM0RncEMwdVBXNTF5ZGZlOUQ2UEx5eFkxQXRoeDgzNE10QlQvMEozWGxhZ3Qvd3pzb0dMVjY5NlN6SmtHeEZaRkl5c0ZsQlNKYWVLcmd0ZnIwUkdpekppTE9tS3ZmL1lDMHpkL0NrNXp6RXJRdGQ4Z3B2N0Q4YytTY09hZjhiVVRjNEFHSWF0dGFPUGZTRjVHVWgyc0toQ3N1Qlg1c1FLMytmZUFkR0tSK29NQ1c0ZkxxcjZETFVYd1A0NzJvaENXaHVLTE1MUHo2MzBWcXJDbHNrY1FPSStydlNDU2w0WklDNFNyTElvaG9rNHlZN2wyVlNDTnU3RCtJeStzMkNVdFJHcDUrZnVUQWY0R2JCdzZxTVFhaTJyVkZ6YTZkeEwwVktROUpXYmlzQmVHNzQ0bVBqaEwzTU15NXZHWXQ4dFBTaEtWZ3VLdGtIQVRzaTl6TXdLVlZYMWxZQ1ord1VNVDA2azdmSjh0ajlwbEVZb3pMQ1VSVWNtcloyWExVNk54QmpUV1F2bnNQTGk1ZExycEk0czU0R1lFZDhVdkx2MFRXMFJQcXR3M0VEdXlQME9aTnlWTEpPVnFTMG5FOUM2SW5nZEIvQ2FPR3dqc2dRSTAwa1B2cmVZUzBhSTZhTEtBdUhjc01OYnQxUVhEakJzaTllRkg5dGdIdndFRDZqZUhRNTVFZkl3VWlLUVhuYlQxNitneDJEeG1Gdk5RcjhPUnVrWkhqYkN2Q2V1aUtFSm1jalB1V0x4VFBFamVGcytwWXV1SmJabmtxdUhFVGU0YU5Kai9sTUR4OWZFeWNmVnNSeFVlV3lqY3FDbDBPbTk3QkZ3VkxuOHV0UjkwWDE3SWdYTm1LUFZDcmYyOHI0bURzcjhDTXFQaFdLcjh2enc0ZVBsU0lVdnkyUkdLR3l3aEVXQTlxaVVPYk5rYjhrSUZxYk9YRHU1K0VObTlHdjAyL0wwVWlNY04xTEFoVlR1cnZJVDVsRUx4RFE5WEl5c2NuTkFTeGZYb3BkOWFsUUNSbXVJUkFOT3NSM0tnaDZqenhtQnBiZFNTT0hZbWcrblVwSDNKRVMyS0tTempwSWd2a3VFWjFiSStFa1VQRisvSmFjKzRTZVFiNm8wYjdCOFN6MjQzaENZN1h0KzFBMGExYkpmZEtTb1h5eWI5MC91TkZ1TDU3anpqZUhtZGQ1RjA2NmI5YlhFY2dGUGp4YmJ6b1NhbFpLaUlaeTdRNEwwRjFFdEYyMHhvRTE2bWp4aXJrcFY3R2pwNFBJZXZvY1RGZHhSTCtQZlV0UTNsbGtZbDVYZlJlQ2tTaVVlMWRMS1dDVVJlTG55Tk9yVGZQdVBVT3BoQkNJU3dFdmhFUllpMjZiMlNFUmZBT0N4VVA2ekhIdzlPTC9CajZycFh2Y0ZvKzlNcHBpOS9nM3dvS29wSWdTOEtXaXlwN0tXMkc1RGFrV2dXaXRiN2U0YUZvOXRhL2NkZXMxOUY4MW1zaTNEVjdwdGlJMmlzd1FBaklhZER2K1ZGcjMzRDZGUHFOTjBwK3I4V3NtYmp6bFJmaEYxdUxoQ0pGSWxHb2RndkNjNjU0NUNweDVEQ3hZMG5DOEJRUjRvY09SbUJjYlJUZXlyYld3Nm9RdkFJeE1DR09mbU9RNGZlR0RVYmRjV01SMDYwTEhVSGlrQUtSRU5VbUVHNmh1Vi9PSTFmMW5weWd4aHJnWjMyY2Vuc2V2ZEVMdjhCcFVEZU83NkNmKytBVEZHV1QrTXlvTzNFOGZLanJ4WU1BVWlTUzZyTWdhdVdMNmQ0WmZ0RlI0cjB4RjVhdFJQYXY1OFVBZ1RNTkNEdmd2TGxEeHNFanVMN3pSelhXUUdCU1BLSTdkU1NmcU5ERWo1ZmNubFRQS0JiOXBMNUlCLy9ZR0NTdldJVGdPK3FySHlnVVptVmhWODhCSWszeEJGa3JhWEZlQXFpYjFQcUxwZFJkU2xCakZmS3ZYTVdQZzRjaisrUXBxNk5ZZk1vOFloYVJmQS9hcmxtcFRIczNJdnZNT2V3YWtJS0N0R3VLUU1zNEYxRjhsVFNLZFpNczNZOTdkaU1yTTRzTW45S1c4VFBaUTBOQzBhSERnL0QzOXhkeHRsQkE1N3ZsMisrUWsyTnFOVG43UmJvaTNOV3NHWm8wdVZPTkJVNmMvQVdYVXkvQnkwdFo3MC8yWGxqVnBrMmFJTXFvUWN2SXpNVDJIN1lqaHl5K1p3VXN2WTU2Q3Z6N3pab2FWbzhlUFhvTVI0NGVoWmZaVUwxT3I4Tjk5OXlMdW5WTlJ5L3RKVGMzajhya1crUlIzclZyek5kTVI5ZW5iZXRrSkNZbVZvOUFSQVZsMzRQNi9TM212S25HR2toZHV4RUhKendsS3BKV3FjeXBpRUM0VnZDTlNVLy9BSExPWDBPdGZyM1ZEMVRvczhOVFhzQ0ZKY3NBNzdJbk1WYW1RSTRlTzRieEV5Ymk3TmxmNFUzNVlBb0xDOUN3WVVNc1c3b0lNVFZyaWpoYldQTFpNa3liL21kVmFOcjVGQ09mcmtPVE81dGczcHhadVBQT1JtbzhNT092TCtLelpTc1F5SU1rQko4bWkreTllWFBRdVhNbkVjZWNKQ0VOR3prYWFXbHBKV0t5SHlVZms1OTVHdFAvTkVXTkF6WnMzSXduSms0U1pheGNBdzdGVkFhRkdEUndJT2JNNXJwVCtyVXBqMisyZkl2SHgwOFFqWTZIaHlKQ0hWMm5nS0JBYk5tNFRnakVWSnBWQVZkT3FpRDhiSSs2azhhcmtRYUtzbk53N3YwRjBOSEZZSCtoVXVEQ3ByUjExSnFlbmI5QVdCTVQ2TE9FVWNQZ0U4bVBUcWpPamVhSzRlWHRTOEdiQk9LbEJub3ZoR1o3eFZpNGVERmVmdVVmUWh6aSsycGFuQWEzd3ZQZm5Xc2lEaVl2cndDM2J0MUNObDBQSldUVDM5a29vQXBrRE5jcmJ4S0dhUjd0RGNyM3pTMUZ6eDdkMExMVjNmVE9ReHlqSGV0TGpkNk9uVHV4ZDk4QjVVQUh5TW5KeGNKRmk0VzE4UEh4RVdsN2NmbyszdWpmcDQ4UUIxUGxBdUZXbFIrZnh1czFRdSswM0VZMGZkZVB5TmgvVU56ZmNMeHRLQjl1a2JqVnlEenlNMjVZMlNLSU42a0xiZEZjaUxrVUkxc0ZLRGN0dWV2Q2xadURrbS9iYjJZZVBIZ0lNMmUrSlZwb3JnaGFHdHhxK3ZuN1llcVU1OUNnZ2VXakpEeXAyK2xGMThBMFdKdGxZSmxIZTRQMmZXdm5OSGJNR0JRVkZZcjM0amc2bnZOeTQrWk5iUDVtaTRoM0JMYk9lL2Z1RTRMVDhzQzlpdkR3Y0hUdnppT1pDbFV2RUJLSFAzVU42b3ovZ3hwalFFLzkwRk52ekJGRHY1UnJMaEgxazBxQ0xyZ3VPeGZuRml3a0lWZytaS2YrVXhQRjhseXhJWGExaWNSeHVBOC83Yzh6a0o2ZUxpcVZxQVIwSGl3T1Bwc1haN3lBaHdjTVVBNnVFTlFyNEo2QmcwRkpRZnZIbFBZUFBvaTJiZHFRU0F6WFJ4UFNpaFdmaTY2ZEk3dys4MDFra2EvTDVhTEJYYmUyclZ1alMrZk9ha3dWQzBRVUJsVzJHcDNiSTZTeHFVbG4wbmZ1d3MxOSs4VW9VeVZMb3dRUE1xblhkK3pFalo4c3pYVmttMlJoNlZqVVZxNmRTMU5ZVUlpWFhuNFZKMDc4QWo4L1AxTngwT3VvRWNNeGF1UUk5V2pINGZUWU9yR2o2MmpJNVZkeW1BdFZTMkZNZUhnWWVuVHZWcEp2RG53dVhMRXZYa3JGMXEzYjFDTnQ1L1NwMHpodzRJRG8xbW5sd3FHSWVndERVd1lMcTZKUmRRTGhURkFHL0dKcUluNTRpaHBwZ085N25KbnpyaUlNYmlIVVZxSXlFUzBSV2FxQ0d4azQvZlljTmRZQVQzMUplblEwdkVQY2E5TnJyblRQUGo4VjI3ZnZvTk5UdWlWYUplQStkOS9ldlRGaitqVDE2SW9SR2hxQzNyMTdZZENnaC9Id3dBRU9oVUVVQmc5K0dFMnQ3SC9HMTZoZnZ6Nm9YYnUyeUw4eGZuNitXUER4SjhqTXpGSmp5b2ZUK0hUSlV1U1JxSTE5SHJaUWQ5OTFGenAyTk4wSG9jb0V3cWZHbFN3aXVaWEZDQmlUdm1zM2J1NC9SQjZmb3lNaGpzRXk5Q0lyY25YYmRtVCtmRXlKTkNJeStWNUV0VzBqbkhYekMrU3F2UHZlKzlpeTlUdjRCL2lYdEpCTUVYVWgyTitZTVdNNkF0VFJxWW9TV3lzV3I3N3lkOHlaOVJiZWZ1c05od09Qb3ZVajU5Z2FzYlZxb1hPbkRrTGN4bkJMZi9iY09YeXo1UnMxcG54NFJIRGJ0dTlGbzZIQjVjT08vK2pSSTlVWUExVm5RY2hFOG16WnVwT2VnSGVRNmZSMEZzNzV4WitoS0NORFdBN1JzbGNWcWhXaEpnUm41czYzdEJUa3A0Z05KS2lsNUhPZzBsUS9jRTFXclY2RDJYUG5JVGMzUjFRQ3JTeTVoYXhYdno3bXpuNGJ0V0ppUkp5ekVBNTZCUU8zNW1WZDl4SERoeUVvTUxDa3E4WEhjbUMvWWNuUzVhS2Jad3RyMTY4VG9pcHh6Q2t0SHI1dTJmSnVkT3hndVl0T2xRaUVNNkhMTHlEZm94TWk3bTJseGhySVBuTVdWelpzSm4vQWFCdlJxb1phbzJ2ZmIwZkdvY05xaElHSTF2Y2h2RVZ6TWZybXl2TDRZY2QyL1BOZi94SHZ1WFhWS2dEZmhBc0pEcVp1MVovUXVKR2w3K2NPTkdyWVVIUi9qSjExaG4yUkkwZU80TkRoSTJwTTJTeGU4cGtRcEZZMkRLZlpsUnp6T0N1UEZhOThnWEFtU1BVOHY2bU9sVTJvZVJYZmlYLzhSenpLZ0hJdE1sN1Y4Ryt5djFGdzlhclZSeWY0UmtaUzNoOVZMSTFhcUs3R2I3LzlobW5UWnVEeWxTc1dJMVk4dlB2czVNbm8ydFV3Zk9sdWNCZG83S05qeEgwS1BpOE80cnBSdUVFOWo5VmtPYmtoS0l0RjVIdWN2M0JCWEd1dG5uSDUxS2haQXdNSDloZC9tMVBwQXVIcUpPNTdVQitTTjJvejU4YWVmVWpmOFQreFZXaDF3OU5hTHE1Y2hYd1Npamt4dlhzSWYwUlBsbEJyZVZ3Rm5wTHkxNy85SFJjdVhoSVZTWU12UHZmYng0OTdESStNR2FYR3VpK3RXcllVVTJLTWZSR3U2QUgrL3NLdk9ISFNjb05BamN5c1cxaXo1aXY0cUpaVm82Q2dFUDM3OVVXTjZCcHFqQ21WS3hDdVNCUzh5UGVJSHpsVUxINHlodTg5WEZ6MnVaaDdSYmsyeVhoVkkzNmJXaGIyZzA2KzlwWWFhMHFkY1dPVmgvaW81K1VhRkdQNmpMOElwOXhYM2VtZXowVVRSOTgrdlRIbHVjbGtWYXFrTjEycHNHVWNscElpS3JuZXFQeUZzMDRXOUt1dnZsWmpMTm0yYlJzT0hqb2swdERncmhWM3EwYVNmMU1hbFZwcWZBcnM5SWFTNnEwOUFDZnJ4Q2xjL21xOTBuVnhKaFhRbVFkWnNyVDFtNUI1eEhKRUsrS2VsbUpEYlY3OVdOM3k0SDQwODk3N0M3QjIzWHI0cVphRHhjRVdMcDhzWGRzMnJURnR5dk1pL3ZkQ3A4NGRrSlNVQkQzVksyTkw3a3ZkeU9VclZ1THExV3RxakNrcnYvaFNXQXN1SDYyTWVEaThlNCt1cUYvUGRMS3NNWlZ2UVlqNlQwKzBPdW53L0tLbHlGTTNvUll0dU4ydzcyQ1pMbTk0N1VoNld1RVZYRXNYenpvMHg1OWFtMFRlVkVKcmpZMHVVTlhpQVIreUZqeGlOV3YySE9GamFIbm5DeTlHck9yVndac3pYMGRpa2pLbnFMTEl6YzBWTGZPZW4zNFNVemNjQ1QvdDNTdStmOEhLRnJIbXhOU01RYytlUGVpZHdjbG1lRlRxOHBYTCtIcmRXalhHQU05TTN2THRWbkVNbzMyUHU2TkRCZzB1c2J6V3FEeUJVQ1o0Ymt0STB6dmhIUmxPMXVJWGNaK0JBNzlQMjd3VmFSczJ3NHY2ajQ1VVp2b1MrUEVGV2NkUFVEaUp6S09VTm9Xc1l5ZkVvOW1LOHd2Rk1YYkRsWXkrZG1uMTE3aTJiVHZsbGRJMnlyZC9YQng4b3lMcHdPb1JCNWVWbDdjbmpsQitYbjcxVlhFWDJuZzRsN3RXMFZIUmVPbkZ2NksybFZFWlozUHgwaVU4TS9sNVBETDJjWXg5Zkp4ajRiSHhHRFZtTEZaOC9vV2FhdG1NSGpVQ1FVRUI0bHk1c212bjdrbU41YWJOVzVCMjFYVDZ5ZUxGUzhXeGZKeDJMSGMvNzcrL0xab2FUZkczUnVVSmhETkRGNDQzbXo0dzdrbnNIalFDdTRlT1ZzTGdFVGo0NUROa1BhNEt4OWdSMkNJVnBxZmowTlBQaS9SMnAxQzZISWFNeElFSlR5TW5OZFdodEVVaFV0cDVGeTlqLzRTbktOOGpEZmtlTkJ6N3gwMUNFVGw4ZEtUeWhTcUcrOUJYcWR5bVQ1K09HemN5eE14ZTdhSnI1QmZraTNsdFZRRlhQR1dtN3kweDI5ZXhjRXZNaXlvMG4xVmRDanpOdjIrZlBtUXBUWjExdHFTSERoMFdNd2cwamh6NUdXdStXcU1PWGloV2h3UFAzaDJhTXNURUo3RkdwWGF4V0NDOC9qdi8yblhrWDcrT2d1dnBJdkRmUlZuS3doM3ppMnNyL0QyMlVJWHBHWlMya3E1SW0wSmgrazIrY2hWS216cjU1TEJubXVhYkEvVngyYThTS1R1WWZrWGd2TjNNeU1DbDFNdFdMeTViRTY1d2YzdjVaUkxRRFRXMjh1RDhjTXZOZWFsbzBMcEF0akNNS2pjdjNHSkxvSFdaK1B1Wm1abjRlaTM1dFNvclZxN0VqWnNaSW4zdGNuRVhsQmQrZFd4djZSZWJVNmtDWVZnazJqUE1qUU8zMG81V1lBMytQaS9tc2tpYjRweVNObDgwczdSRitweDJCZE4zRkpFdk5XaG9yU0lIanVjSys5dHY1L0h5Sy85RU5qK21ydEl4L0w0alFVbEIrOGMybWpadElsYjk2WTEydk9Gelp5dXk5YnR0T0hQbXJHZ2d2bDYzUVl4eUdjUE8rWmpSb3hFUkVhN0dsRTZsQzBUaWZNd0Z3aTBpZDNVWXJuRDhFVmVVRFpzMll0bXk1U0src3VEZjQ2NE81OEhSd05ORmVKNFlMNlcxRmU0eThmMkxnQUEvY2U2YTBOaUs2SFJGZUh2MkhLeGR2NTY2bzJrbFpjWEhzTVhoS1RlOWhLTmZQcFVnRUZYUm5PSGJJWWh6TGZtbnl1Q0x6UldENXlCMTc5WVZDUW54b3JJeGloWHhGTmJqblhmbjQreFp5NmY5T290QS93QzBhblUzMmxCcjNqcjVQb2RDR3dvOEpKMWd0blM2UEhnYWZFSjhRa25qd1BDNTgvTGs3N1o5ajduejNoTmRLeTFlRTlHd2xNRWtMTnZXOHp0M1RmcmdVY2k3ZkZsMFRXNHJxRlh5cGY1d2w4TjcxQWdGUlRjVlc1TSs2YW5KT0hmMnJMQUlHbnpKbE12bWdiNTllMkhtZi82TjlSczI0cm1wMDhUOUFSYUhWaUc0ZGU3VXNRUGVuUGthSWlONTlNMDJwazU3QVl1WExFVVE3enBKY0Zvc3hnOC9tSThlSkVnTnJwenNwUE9OTzYybGRnVGVFTUxmMzArc1hiR0hCUjk5akZmKzhXOFNnckk2a2RIS2g0TnhXYkQxNElia2cvbnZpcmxkdHVBMEM4S3I3bmdqQnA1VHhXczdicmNncHFDb1pWSFo4TVhtZm5Udm50M3hLam5qTEI3dWJuVHIwdG5FYWVXS3dSc3BjR3Y2enZ6M1JaeXo0UW9ZRWhLQ3NOQlFoTktyb3lFc0xOUnVjVEE4Ulo2bjhITkRZSHplSERSeGFMQ0Z2Yjl0RzV2RndUak5naFJjdjQ0TGk1ZWg0RmEyU2FadUM2Z0l2UUlDY01lelQ2b1JDcUpnNlRObldoQytYQnp1YWRVU0gzMzRBWUtERGMrUVAzZnVIQ1k5K1F4K1BucFVITS9YZ1k5bDBRU0hCT085dVhQUXJ0Mzk2dEZsWTZzRmNRWDRadWxicythVU9oS21WSEhLZjBFaHZ0KzZCWFhySkNrZjJJRFRCQ0t4cERJRXdpMWxmRndjRm42eUFQV3NmSmNuN1QzK3hDUnFMUXZWb1UxRFY2dDU4K2I0NUtNUEVCMWx1VkdmT2U0a2tMTlVQa09HamNLMWExZE51cUlhbkhkZTg5R0ZMT3pISDlwblNlVW9scHZCRnpzZ0lCQWhvV0ZxakNrZE9yUVhkNXE1SlRWdSszaW84L0NSSTJLZCt1K051dFJvUC9oQVcvS0hETVBHR3Z3MyswbmNqWHRzck9WeWkvS1FBbkZMTEN1Q01ZLzk0VkhjZlhjTHNocksxSHkySWh4NDFkNjZkZXZ4OWJwMTZwRy9IL3IwN29Yd2lEQWhCdk95NFdIb2xpMWJvbFVyeThWNjVlR2dRRzR6SDZNaVZJTS9GbGU3Tmw3OHl3dmtuNFNRLzJHWXI4UldoU3ZRNjYrL2lXUEhqNnRIL3o1NHNOMERhTk82ZGNsUXR3YWZPMDhyU1JreUNJRlducnRmSG5ZTGhLOTN0UzZOZFNOWUd0WFZsTFM0cXdYK09Ha0NYUy9EVmo4c0VyRjI0dGRmeGI1UXJrbnBsckVzZUJPODJyR3hKdGFEMy9NQUJjZjM3TkZkamJVUHU1eDBkaTU5SWlKUXExOHZCTVRWRmp0OVNFcUh4Y0dGZStyTjJXTGVHRSs3WVNyaXBMT3oyYkJCQXl4ZXRCQTFhMFNMdU5MZ1RhK24vK1ZGckZxMWl2d1dRK3ZKbDV4Yld0NEhkK0tFSjlSWVUyeDEwcStucCtQTEwxY2pPeWZiNmdpU3JYQitXaWNuaTJGWVJ6aDkrZ3llbVBoSG5EcDlXalFDM0Jnb0RRUHc3RE5QNGFrbko2bEgyb2Q5QWxFUDVRVkQ5Sy80WDFJR3BCQXVNeTgvUC9IS0Y0MnBLb0V3eDQrZlJNcUlFU1NXVytKbUd1ZUI4OEticEVXRWgySCtPL09Rbkh5ZmVyUUJXd1Z5NHVSSkRCOHhHbGZTMGtURmRBVHlxSkNmbDQ5bkovUG0xVlBWV1B1WVAvOER2UGFHWWhXMUFRb2V1VXRNVE1Cbml6OUZYRnljK014ZTdKSzhkb0Y1TjBMdVpubjR5bEJtb0RMaTNlV054VkhWTkc3Y0VOT25UaFg5Y0c1UkdjNExUNU5QVDcrQlYvLzVMMlR3ZGtzT3dwV1JwM2F3Z0IwTzZ2ZTlyQ3grc3dXZXZieDY3Vm9TUkpGSk9mT28xckFoUXh3V0IrT0FEMktZVFNxRDdjRmgyRkNUd0xRZ291eTAzT3lnY3VDMUY4YnBjSXUvNzhBQkxQam9FL0czbzFnN1gwZURJK3pZOVNOK09mbUxhQVMwTkxqTEZoa1pnVDU5elI1dFlTZU9keG9sVllEaVlKc0gzaXBKcStTMndFSjRjdEpFTkd2V1JGUWNRenJGNHRFRnMrZStRMzZLNVJKamQ0Q24zUENNWmU3K2FUNFFueGV2MmUvY3NTUHFKTmwrMTl3YXBRcUUrOG42M0R3VTVlYWdLRWNHWndaZFRxNll2OFdPZTFuNCt2aWhWa3hOSk1USElUNnV0aHJpRUVOeDVzL1NLSS9ZMkZqaHJQS0dCN3pQclpaZVFudzhZbXZGWU9ueUZjTGgxdUMxNXZ6MEtPNSthWUgzd09WK3ZURThTblRyVnBiSmNYWUgvaDBLWE5udFplKysvZGkrYzZkb0JEVHJ3WGtLRFF0RDMzN1d0eksxaDFLZGRGN2JmWHJlZk9oSUlOcm9pOFE1OE14VkQrcDNOM2xwaG5nTVhXa1VVR1hNek1nVXJiNTI4Zmx5OFlOZW9pSWpIUm8xU3VNVmtXdzk2TDNXb1dFbm1aZm9Sa1ZGbGt3WS9HN2JEemgyL0pqd0R4ZytYcThyUXMvdTNaQlV4L0RvTTE2VXRIYjlCdVNROEQzVnB6VFpDNmZOVDNiaWFmUEo5MWtPR0pURm1FZkhVbDYzaTQwWHVJeTRmQXJJbW5TamZIN3c3anlyejlHM2gxSUZ3bzhwMEJYWXR0K3B4REY0c3p4M2JIeTR5ampxTHppVDR5ZE9JR1hvU0dTUkJkTkcwTGpyeU05aFhMSDhNenh3djIwVE04dWlkSUZJSkM0TUMrRnZMNzJDUlV1V21Feks1R0h3MW0yU3NXTHBFdlhJaWlIN1RoSzNKUFZ5S25iczJrbENNYlR2L0o2M0llM1RzNWNhVTNHa1FDUnV5ZWRmZkNtZXNPdkQ5K1JVNjhHVE01czJiNDVldlJ5YlZtSU5LUkNKMjFGSUR2MnlaWitMbTR1TTVoUHg2RlduOWcrSzNSZWRoUlNJeE8zNDc4SlBjZW5TSlpOUlBCWkhqZWhvREI5bStYaS9paUFGSW5FcmVGckp4bzJieFh0dEpFMTByOGc1SC9CUWYwU1RTSnlKRklqRXJkaTArUnZzM2JjUE9yMWUzQi9pd0hmUjR4TVRNTHlNeHhnNGloem1sYmdWL0lEUzdUdDJ3Sk5uSnF1M092UEplanpRcmgyZUdQY0grUG82OTBGTVVpQVNTUm5JTHBaRVVpckEvd0ZBenJnV1duZDBqQUFBQUFCSlJVNUVya0pnZ2c9PSJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDE4LTA5LTE0IiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJVbml2ZXJzYWwgU2Vjb25kIEZhY3RvciAoVTJGKSIsImNlcnRpZmljYXRlTnVtYmVyIjoiVTJGMTAwMDIwMTgwMjIxMDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjMuMiIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDE4LTA5LTE0In1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAxOC0wOS0xNCJ9LHsiYWFndWlkIjoiYzFmOWEwYmMtMWRkMi00MDRhLWIyN2YtOGUyOTA0N2E0M2ZkIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiJjMWY5YTBiYy0xZGQyLTQwNGEtYjI3Zi04ZTI5MDQ3YTQzZmQiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiWXViaUtleSA1IEZJUFMgU2VyaWVzIHdpdGggTkZDIn0sImRlc2NyaXB0aW9uIjoiWXViaUtleSA1IEZJUFMgU2VyaWVzIHdpdGggTkZDIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyODcwNiwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3IiwiZWQyNTUxOV9lZGRzYV9zaGE1MTJfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjYsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjYsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlESGpDQ0FnYWdBd0lCQWdJRUcwQlQ5ekFOQmdrcWhraUc5dzBCQVFzRkFEQXVNU3d3S2dZRFZRUURFeU5aZFdKcFkyOGdWVEpHSUZKdmIzUWdRMEVnVTJWeWFXRnNJRFExTnpJd01EWXpNVEFnRncweE5EQTRNREV3TURBd01EQmFHQTh5TURVd01Ea3dOREF3TURBd01Gb3dMakVzTUNvR0ExVUVBeE1qV1hWaWFXTnZJRlV5UmlCU2IyOTBJRU5CSUZObGNtbGhiQ0EwTlRjeU1EQTJNekV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRQy9qd1l1aEJWbHFhaVlXRU1zcldGaXNnSitQdE05MWVTcnBJNFRLN1U1M213Q0lhd1NESHk4dlVtazVOMktBajlhYnZUOU5QNVNNUzFoUWkzdXN4b1lHb25YUWdmTzZaWHlVQTlhK0tBa3FkRm5Cbmx5dWdTZUNPZXA4RWRaRmZzYVJGdE1qa3d6NUdjejJQeTR2SVl2Q2RNSFB0d2F6MGJWdXpuZXVlSUV6NlRuUWpFNjNSZHQyemJ3bmVid1RHNVp5YmVXU3dienkrQkozNFpIY1VoUEFZODl5SlFYdUUwSXpNWkZjRUJiUE5SYldFQ1JLZ2pxLy9xVDlubURPRlZsU1JDdDJ3aXFQU3psdXduK3Yrc3VRRUJzVWpUR01FZDI1dEtYWFRrTlcyMXdJV2J4ZVN5VW9UWHdMdkdTNnhsd1FTZ05wazJxWFl3ZjhpWGc3VldaQWdNQkFBR2pRakJBTUIwR0ExVWREZ1FXQkJRZ0l2ejBiTkdKaGpncFRva3N5S3BQOXh2OW9EQVBCZ05WSFJNRUNEQUdBUUgvQWdFQU1BNEdBMVVkRHdFQi93UUVBd0lCQmpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQWp2anVPTURTYStKWEZDTHlCS3N5Y1h0QlZac0o0VWUzTGJhRXNQWTRNWU4vaElRNVpNNXA3RWpmY25NRzRDdFlrTnNmTkhjMEFoQkxkcTQ1cm5UODdxLzZPM3ZVRXROTWFmYmhVNmt0aFg3WSs5WEZOOU5wbVl4citla1ZZNXhPeGk4aDlKRElnb01QNFZCMXVTMGF1bkwxSUdxck5vb0w5bW1Gbkwya0xWVmVlNi9WUjZDNStLU1RDTUNXcHBNdUpJWklJMnY5bzRka29aOFk3UVJqUWxMZll6ZDNxR3RLYnc3eGFGMVVzRy81eFViL0J0d2IyWDJnNElucGlCL3l0LzNDcFFYcGlXWC9LNG1CdlVLaUduMDVac3FlWTFneDRnMHhMQnFjVTlwc215UHpLK1ZzZ3cyamVSUTVKbEtEeXFFMGhlYmZDMXR2RnUwQ0NySkZjdz09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWZDQVlBQUFDR1ZzK01BQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBSFlZQUFCMkdBVjJpRTRFQUFBYk5TVVJCVkZoSHBWZDdUTlYxRkQvM2Q1OXdlUVNJZ1M5QVFBWGNGTEFRWmk5ZnBlVnoxdFkvV1RacjVXeHBjN1c1a25MYTVqSTNaODVzclMybk0yc2p0V3daUzdJVUg0SDR4Q25FUXg0REFaRjc0Vjd1czg4NXY5L2xJbkJ2VkovQjRQdjludS81bnUvNW52TTU1NmZ6QS9RdjBIYi9JclgzVkZLUG80NWNubTRpblVJV1l3TEZSbVpRVXV3akZHL04xaVJIaDFFWjBOUlZSdWRxdDFCZCsyblNLeVMvT2h5czArbGszZS8za1E5cXZENFpVdGE0VlZTVXVZMGVpcHlpVGhBZm9jb09SVmdEdXV3M3FLUmlBZDNyYmNFdGpUallJb2Y2V2FIc0NtelZQV0NNeCtjZ2g4dExxV01LYU1Xc1VqTHFvMlJ0SklRMG9Pem1lcnBRdTRlc1pnc09Oa0d4SDdkMGtkdlRUMTdzNE9NVTdWSThaaGpnR2FNK0FxOWlFTnU4UGlmMXVkejA3TXd2S1dmOEdsVm9DRVkwNFBDNVdkVGFYWUZiUjh2TnZMNSszS2dmYjV4Tk15YTlSYW1KaXluYU1sR1RWdEZscjZiYTl1K3BxbkVYNHVNdVJSZ2pTWUVock43dXRGRmU2bHFhbDdOZmt3NWltQUdIeW5QcGJrOFZtWTB4c3RucHRsRkNWQ1l0elR1Qk44M1FwTUxqVHRldmRQelNVbko3ZThta2p4WjM5ZlhiS0RmbGRacWJ2VStUVWdHbkJWRjZmUTJpUEhnNFcxNlVXVXd2emJrMTZzTVpFK1BuMHB2ejdKU2V1QXllczhsY3BDbWFLdW8vcCtxV3IyVWN3SUFIV3J2UDBZRXpoWEF0TEFic3NIaHA3aUdhbXZ5aWpQOHJ5cXJYVVdYOVhvb3d4eUF1Zk5CcnA0M1BPQkZYWmxrZjhNRFJpcWNweW93QXdwdXoyeCtmV3Z6L0R0ZGU5c21zenlndGNSNkMxd2JkekJsNk9scTVXTllZNG9HYXRoSk1ya1RFeDBqQVJTSEFWcys1cllrUU5YYitRZ2ZQTHNRNmdYeUluc3JlUWZtcG03UlZGWWZMODZuMWZpVU9rWXZTaGtVUHh2YnVrem95NksxaWhNMWhvM1h6VzZFdlNmWEErZHBpV0dhV2QrZG9Yekx6bUd3S1lGTENBc1JBbFBCQWhNbENGWFU3dEJVVlByOEhnVmNKSFdxK0YwMHBscitETVRkclA0enZ4WTExa05NaHhUK1NlVEdnK2Q0VjVMUUppdHlVR0pOQjhWRlpzamdZQlpNL0lJL1hDVGtqMHF5RE9wRjJBVlExN0NJalVwL0RuVDFVa0w1RjVnZGorc1Mxd2cxZ0UzZ2lnbTYwZkNYelNuUFhieUFQYklYditJRHBFMTZUaGFISVM5c2t5aGxtTUU1RjNjZnFBS2hxMkMwRTVQSDFnWWFYYUxQRGtaRzBIREpPbktXSHA1MUkwejVTT3V4OGUxV0F1WnpkSFFyVGtwOFRtalhvSStsYTB3R1pzenVicWJPM2lmUTZBL1c3dlZTWXNWM21SMEpLd2tLYzRXSGlCa21SOEkzQ0NnSTg3b09MNHF6VDVQK1JVSkJlakVPZ0FQSzhoWVB6YXRNK2VJVHAySU85eVRRbWVyb21QUnh4MXF4QWNzaWxlL3ViU2VFYmNXUUdZRUNnaGNMWTJIeUtqb2dqSDI1aE1wanBVdjFPdWdsaTRlaDJlUncwTzMyYkpqa3l1Q2dOemcwdnpsWU1TaVNzMHVvbzRNRzdoTU9qQ0VhWDF5RkUwblN2akJ6dVRuRXBLODZaOElvcUZBSXVidzhrZzlBckVhUkVXU1pJK2pINFhicDZnOUU5RW5KVDNvYVJ6RE4rTVVKQlFESG41NmE4b1VtRUJ1c094QnMvTjUrdEpFYlBrQUZEajhVR3ZPcy9JV3ZjU2dsR0JodlM3L0ZUWWZwV0dZZERZOGZQQXhXU0EzNXNUQzRwNCtMbTRBYXFJb1BlUXRmdWZLNkpoMFpoeGxic1VYT1NtWE5pZkQ1WlRBa3lEb2ZiYmNjbHhuQThXTkFxeENiUk55a2hYeFFwYUR3NjdmWFVZYnNpRzBLaHR2Mm9lSXZoOHJoUU1ZT2NFQXFYRy9lSSt6bmdPYzV5eHI4cTgySUFNMWMvRkxGT3BscXU1ZUZRWHJNWnpHY1ZDalliTFdHNUk0QlQxZXVScmxieHROT3RNaXREREVoTFhJSXluQUF2dU9FV0UzWDNOZEFmdDk0VmdhRzQyWElRdDBaWDZQZUNFL3FRRmU5cks2SHg3WVU1MEt2SDdmVzRmUytxN0tLQkp4c2dnQlg1cFNBR2gxaklyVmg1elE2dzNSZmFhaEJYbS9hQ2JDWlRqQ1VGVVR5V1pxVzlwNjJNakpQWFZxT3JQZ01PNE52NzRHa2Yrb3dmdE5WQkRRbmpGSnFIU3cxN3BYdmhXVzVLWnFlL1E0OU4vVVNUQ0FWV29RWEZJSEJIWFhlM0ZQclVEc3VHRG10Ri9oSEtUSHBla3hoaUFPUEkrU0pxNlM2SEY0STlZV3prQkpUbzQ2aVVNeldwOFBpci9SaWR1THhLWXNTa3NWOHZMbE9RdmhHWDJZbFIwT0JoQmpDK3UvZ0VjdlkwQXBLN1lrNDFOeGpQU1FuV0ZIVEY2NlVyamdldkI4Q3U1YStsMnZZU1JQdHVWRG83M2hoZE1TSG5VWDd0VGpzVlpHeEFsL1dwdGlPSUVRMWduTDI5bVg2L3RSMXRtbGtZajhXNFgrQ1NqV2NVREdZMU5wUy9DN2hTS3FpTUxNL2wyUW1TV1o3M0RkeitnaW84QkNFTllQUTQ2cW5rendYVWJxdkJreGpVUXNXZlpGZ2J1bzNyQWYrd043ak9POTAreW54NFBpM0wrMG5ZTDFTY2hEVWdBUDRnUFYvN0lkMXErMUhTaG11R2tJcVdSUGd5eE1GcVA4SGZqVG5qWHdZNWJRZmJKY3Q2T0l6S2dNSG90Ri9IZTFlZ3NheEhTcUc2d2ZkbVE1eDhOeVRGRnFCY3AyaVNvd0hSM3lrNSszNmhGN3ZYQUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzFfUFJFIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiJjMWY5YTBiYzFkZDI0MDRhYjI3ZjhlMjkwNDdhNDNmZCIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlfSwibWF4TXNnU2l6ZSI6MTIwMCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0Ijo4LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjEyOCwidHJhbnNwb3J0cyI6WyJuZmMiLCJ1c2IiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotOH1dLCJtaW5QSU5MZW5ndGgiOjYsImZpcm13YXJlVmVyc2lvbiI6MzI4NzA2LCJjZXJ0aWZpY2F0aW9ucyI6eyJGSVBTLUNNVlAtMiI6MiwiRklQUy1DTVZQLTItUEhZIjozfX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDIzLTAzLTI4IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyODcwNiwidXJsIjoiaHR0cHM6Ly93d3cueXViaWNvLmNvbS9wcm9kdWN0cyIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWXViaUtleSA1IEZJUFMgU2VyaWVzIHdpdGggTkZDIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyMzAzMjgwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMyIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4zIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIxLTAyLTE4IiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZSyA1IEZJUFMiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDIxMDExODAwNCIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4zLjciLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMyJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMS0wMi0xOCJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjMtMDMtMjkifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyIwZTMwNjU0Mjk4NTk2Y2FjNmJjYjhmOWQxMmZmZjQ2MWMwMTUzMWZhIl0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjBlMzA2NTQyOTg1OTZjYWM2YmNiOGY5ZDEyZmZmNDYxYzAxNTMxZmEiXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ill1YmlLZXkgNSBTZXJpZXMgd2l0aCBORkMifSwiZGVzY3JpcHRpb24iOiJZdWJpS2V5IDUgU2VyaWVzIHdpdGggTkZDIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NiwicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoyfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCIsInJlbW90ZV9oYW5kbGUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURQakNDQWlhZ0F3SUJBZ0lVWHplaUVESkVPVHQxNEY1bjBvNlpmL2JCd2lVd0RRWUpLb1pJaHZjTkFRRU5CUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTVo2L1R4TThySVQrRWFvUHZHODFvbnRNT28vMm1RMlJCd0pIUzBRWmN4VmFOWHZsMTJMVWhCWjVMbWlCU2NJWmQxUm54MW9kNTg1aCsvZGhLN2hFbTdKQUFMa0tLdHMxZk81M0tHTkxadWp6NWgzd0duY3I0aHlLRjBHNzRiL1UzSzloRTVtR05ENnpxWWNoQ1JBSGZyWU1ZUkRGNFlMMFg0RDVuR2R4dnBwQXk2bmtFbXRXbU1ud08zaTBUQXVjc3JiRTQ4NUh2R000cjBWcGdWZEpwdmdRamlUSkNUSXErRDM1aHd0VDhRREl2K25HdnBjeWk1d2NJZkNrenlDaW1KdWtoWXk2S29xTk1LUUVkcE5pU092V3lETVRNdDFid0N2RXpwdzkxdSttc1V0NHJqMGVmbk85czBaT3dkd01SRG5INHhnVWw1Wkx3cnJQa2ZDMS8wQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQjhHQTFVZEl3UVlNQmFBRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRTXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJEUVVBQTRJQkFRQzNJVy9zZ0I5cFo4YXBKTmp4dUdvWCtGa0lMa3Mwd01OcmRYTC9jb1V2c3JoenN2bDZtZVBNcmJHSkJ5SjFYbnF1QjVzZ2NSRU5GeGRRRm1hM21pbzhVcGYxb3dNMVpyZVhySjBtQURHMkJwbHFiSm54aXlZYStSMTFyZUlGVFdlSWhNTmNaS3NEWnJGQXlQdUZqQ1dTUXZKbU5XZTltRlJZRmdOaFhKS2tYSWI1SDFYZ0VEbHdpZWRZUk03Vm9sQk5sbGQ2cFJGS2xYOHVzdDZPVE1PZUFEbDJ4TkYwbTFMVGhTZGV1WHZEeUMxZzkrSUxmejNTNk9JWWdjM2lyb1JjRkQzNTRnN3JLZnU2N3FGQXc5Z0M0eWkweEJUUHJZOTVyaDQvSHFhVVlDQS9MOGxkUms2SDdYazM1RCtXVnBtcTJTaC94VDVIaUZ1aGY0d0piMGJLIiwiTUlJRFNqQ0NBaktnQXdJQkFnSVVSMzhtcTI2U2Yyc3pWVjJCZEc2V0VON2t1V1V3RFFZSktvWklodmNOQVFFTEJRQXdMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3SUJjTk1qUXhNakF4TURBd01EQXdXaGdQT1RrNU9URXlNekV5TXpVNU5UbGFNQ1l4SkRBaUJnTlZCQU1NRzFsMVltbGpieUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRUlnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTlkwV2I5b1BvUm9Lb1F5V1BhSnB6MTF2cldUZzZ6VHRtTmoyVm9LUm55dktHUnFwemI4M3c1bDZZQTk2VVlrWUJEUVAwaWxPMkRQZTZ3V3FWUjV6RGZSemRjSDhiaCtMN2RHR3ZhZTZoUlRaaGtGa0NwWERzNEhjY2tuckRmOEZDbEo3SGUzOUpmNDIvRzFRbTJ6ejlXV21yUFh0Z2lLL3gwNUdqc1FmR3VERzF6ZjVRVFVVaWU4bHd5bUszVGZkT3ZOZWVKQUFQZTJwbjdJdGZSYityVnJOV2lEemxSbjJ2Tm5aMndQbzR3SC9XSjZkaFhaRytyTVdUK2E2Qm9jZzFVZkl3NmtkdW5HNGJUcFp6c3ZhY0ZZeVIwbXBmK0RlT25wU1dBbXl3SldIdlRsZjJZWHhGeWVYY1RBQ2RRbGNNTkdKMlZoWlE0OHh0UDUvUkJQLzhrQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZDaHk0Mm9raXFjVFMxaXFhL0hSV2prQm40SC9NQjhHQTFVZEl3UVlNQmFBRk9xM1FwQ2VESHRrZXR0VWZBTzZmRTZmMktGaE1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQW4rUkhJUGJ0TUVETmRUMWc4SC9SaXRBa1VkTGdBdDF0V0dXbmxqOWtuYnY0LzRHbFg3QzlwNDVlZlBPOS9hWkw2T1YxWFJLQmk2S210Qlc1SzdudVlFbk14LzVCcUJTYkxUN3JoZHVDNDlUQmVNYjlQSGRYc1RsU1ZOWWVmcjFkR2lkcjRqMHhWQlFMYjFya25EQWJkV0R6S2Z2bmF5S084RnJ3ZTdIeDg0M01HL3JKK2MwWHJ1VXZiZlZUQ0hMaUlXaE03b05EaEw4eG9iNnhVbzlLTEtjU0wrSXRZc08zLzlXYjhROUdqc3FMNEZYc0RjRzFTYVloN0twZnVNbU9peHF6SlpPMm5JaWNQWVJnMUkyU3VpVWZZTzcwdG1kSGNibCtrU1FtU1l0N3JxNHZpSUxnMkd4M2o5cklUdVdUamJhVWFTU1F4Z09tTVNIdXl6TUFDIiwiTUlJRFNEQ0NBakNnQXdJQkFnSVVEcUVSdys0Um5HU2dneGdVZXdKRkVQRFJaM1l3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRREk3WG5IK1p2RHdNQ1FVOE04WmVWNXFzY3VibHZWWWFhUnQzWWJheG45Z29kTHg1c3dIMGxYcmRnamg1aDdGcFZnQ2dZWVg3RTRibDF2YnpVTGVtck1XVDhOM1dNR1VlOFFBSmJCZWlvVjdXL0UraFRaUC8wU0tKVmEzZXdLQm82VUxlTW5mUVpEclZPUkFrOHdUTHEydjVMbGo1dk1qN0p0T290S2E5SjduSFM4a0xtelhYU2FqMFN3RVBoNU9BWlVUTlY0enMxYnZvVEFRUVdyTDQvSjlRdUt0NldDRkU1blVOaVJRY0ViVkY4bWxxSzJieDJ6Nm9rVmx0eURWTEN4WWJwVVRFTHZZMXVzUjNEVEdQVW9JQ2xPbTRjcnB3bkRSTFZIdmpZZVBHQkIvL3BFeXp4QS9nY1NjeGp3YUgxWlV3OWJuU2JIeXVyS3FiVGExS3ZqQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJUcXQwS1FuZ3g3WkhyYlZId0R1bnhPbjlpaFlUQWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQXFRYUNXTXhUR3FWVlg3U2s3a2tKbVV1ZVRTWUt1VTYrS0JCU2d3SVJubHc5SzdIZTFJcHhaMGhkd3BQTmlrS2ptY3lGZ0ZQemhJbXdISmd4eHVUOTBQdzN2WU9kY0pKTmt0RGczNVBYT2Z6U24xNWNGQXgxUk8wbVBUbUliOGRYaUVXT3B6b1h2ZHdYRE00MVphQ0RZTVQ3dzRJUXRNeXZFN3hVQlpxMmJqdEFucS9ORFVBN2JlNEg4SDNpcEMrLytOS2xVcmNVaCtqNDhLNjdXSTB1MW02RmVRdWVCQTduMDZqODI1cnFEcXNhTHM5VGI3S0FIQXc4UG1yV2FOUEcya2pLZXJ4UEVmZWNpdmxGYXdwMlJXWnZ4clZ0bjNUVjJTQnh5Q0pDa1hzTkQwNWRDRXJWSFNKSXMrQmR0VFZOWTlBd3R5UG1ueWIwdjRtU1R6dldkdz09IiwiTUlJRFNEQ0NBakNnQXdJQkFnSVVVY21NWHpSSUZPZ0dUSzBUYjNnRXVaWVprQkl3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRRG01NTViV1k5V1crdE9ZMHJJV0hsZGgrYU5hbm9DWkNGaDdHazNZWnJRbVBVdzBoa1NHNnFZSFF0UCtmWnlTMzNWRXJ2ZytCUXFubXVtZ05oZnhGcmt3RVpFTGVpZEJjQzhDNEFnNG5xcWlQV3B6c3ZJMTdOY3hZbEluTE5MRmNaWS8rZ09pTjZaT1RpaE81L3ZCWk1iajlyaWFBY3FsaVltTkdKUGdUY01HYUVBeU16RU1OeTJubTZFcCtwalA1YUY2Z2kyMXQvVVFGc3VKMWoyUmoveW5NL1NkUnQrZWNhbDVPWW90eEhrRmJMOXZ2djJBMk92NUlUWkNsdzRiT1M5bnB5cFFpbU9aNVFBWXl0bVlhUXBXbC9wTVl6NnpTajhScWtWRE5FSkdxTmZUS0EyaXZMWXdYNmxTdHRNUGFwZzBKODRsOVgwdm9WTi9GcFM0VkNWQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJRZ0tGQWhHNlJhVytoVHk1MmR4ZVQ4YkM5Nkh6QWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQVlNemdMckpMSXIwT292UW5BWnJSSUd1YWJpSFNVS1NtYkxSV3BSa1dlQXRzQ2hERUhwWGNKL2JnRE5LWVdvSHFROHhSVWpCNEN5ZXBZZXZjM1lsckc4bzd6SHhwZlZjYW9MNVNldUprekh4S240YlRhU3A5K012d2FtbnA2NGtaTWlOYkZMa25mUDlrWUtvUkhrTVdoZVJKMVVzUDF6NFNjbWtDZUlMZnNNczZ2cW92cWpXQ2xGc0pwQmNzbHVZSFdGN2JCSjFuNFJ3ZytBVEVvcFk0SWdHdjZadndjK0E5citBVDJocXBvU2tZb0FsK0FOWXdnc2xPZjlzSmUwVitUQTlZWS9VbGFCbVBQVGQwLy9yOXd2Y2VQV1prUGpLb0FDL3pVTmhmRGJoNExWOEdIczNseVgyWG9tTC9MTmM4Sll6eUlhREVoR1F2ZW9QaGgvdHIxZz09IiwiTUlJRFJ6Q0NBakdnQXdJQkFnSVVleDluVDl2d1pOWFM0ODNMZGlZR2Z3MlNqU293Q3dZSktvWklodmNOQVFFTE1DNHhMREFxQmdOVkJBTU1JMWwxWW1samJ5QkJkSFJsYzNSaGRHbHZiaUJKYm5SbGNtMWxaR2xoZEdVZ1FpQXhNQ0FYRFRJMU1EZ3dNVEF3TURBd01Gb1lEems1T1RreE1qTXhNak0xT1RVNVdqQW5NU1V3SXdZRFZRUUREQnhaZFdKcFkyOGdSa2xFVHlCQmRIUmxjM1JoZEdsdmJpQkNNaUF4TUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUF1MU1ldm55OWR5TzlaVUMzOVNvTWhMY1IvRFhydEYvY2lNMTJ0Y2l5MkVYQVo2TWtyaXZWdENmRVZNOVg2SVNURW5CUDZ1U1lZb3Y2cHB2Nk82SmgyTkhtWW00dytKblM0Vm5DUFU3bUhBTWZWSTJNR1RUTVZPZXcweFVzRzdzSVNJa0lEVUJtdWs4WUs5YzV6aWM5K3ZGUUdMSWtzZFhPNWlWRklnTkc1M2NHWEQ0Wkxab0FQaXUwUEVvenhBcVlJYUk0Z3hLaE9BM1M4L1c4bUlXc3U2b2Z5ajRHdmtGRzZaN2t5RjMxMDdQN213RkhMckkzRU5hUFdNT0ZjVGFHYTBkdysvdlZSd2pSY0VaQlZzdXVULzg3Y2tTczBhNXBrdDN2WkJsYVllVDhwelNyZVY3bW93Y0lNOTBMMmlhQVRsUDBueG1hRTZuT3lUYm9qRlZsMndJREFRQUJvMll3WkRBZEJnTlZIUTRFRmdRVVNYRWgzc2EzYnREdXJtNE1NL0M3UzFsUnV1WXdId1lEVlIwakJCZ3dGb0FVNnJkQ2tKNE1lMlI2MjFSOEE3cDhUcC9Zb1dFd0VnWURWUjBUQVFIL0JBZ3dCZ0VCL3dJQkFEQU9CZ05WSFE4QkFmOEVCQU1DQVlZd0N3WUpLb1pJaHZjTkFRRUxBNElCQVFCNUdjM2hhZnRwN2hLc0Vac28raS9aNW5SdXFkbXpHMldDbFVvUlVxYmFQeWdsbkpEaktSL2tmZ09sNmliYkYvenRobTNLbVhRN0hjRElQMnhNZEc3VTJMMmltYkpRSHFQZi9oMkhxb2piNHJaZ3VlKzZXNGt0U1I1ZWxSOUwxcllxRS9TR1lNNGlFS29WUVN2N1JUMXJ4SWVXaUtzdy9WeHhpL1FPbnN4M0Y3eDgwQ0NZZ0I0RTN5UXg4VlRXNDQwaFRFd1RBMWVNSE9peDMydFB0eXlISWE4UFZWSWZWcEhRSkJhTVZ2djUwOFVFandrYlUycm5qZnpvU1ROUzlBNWpVUThtQlN2ZTk1cmpCMGRvOThFVStEeGRCcVgyK0g2aTV3bElDRmd6aGR6Y3NuZTloR0tUNmx6VFg0Y0lkSnNyWTIreGxlSzBGRlF5NmxHRVZMRWUiLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVRuYmJHSVIyTkh2enFJS0ZBZVF3RzFYQmlzMHdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFRWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPc1hqM2swNEJhbjRUWWR0WktxRC9PUEp4eUR5YVBtQ0JVRlVpYVpJZ1R0ZVpuajNYMjVEaGdwWlpYc0M0RDB5ZEljcmxBNndOVUluT1JML0w5ekJiVEVJTUFWTUdvNmc3VUtBbWIyTUY2QUhibmhZSmQ5ZWlrdXBWTldTaEhOWU5jNEdCZE8xWU42QWZVcXZKaEhiZTNWNFNOTVBtQlJFS0pQVno3VGh3Z21nZ1RlOFdzMkswL3dzcXYyd1NFN3BiQ0JzVVpoSVg1MWJaTTNwcUR3SlBUbVJGRXZ0MC82dEc1ZU84RjNqMTRPWHFmRWhtam4xVnZ4S0RZUU9MWkF4Q3d3Z0MwUDRDZGZXdjN5OFBTUjhJMzU0aE8xWStHek5qdklxWDM4TktMeXd1SVlIRmVyT3hObHhFTUJ2RmhZQnVSdVlBa2tnVWFQcU42VUJoc0lMcnNDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNDb1JIaGl5Tm5iblhSV0lMNlpCWG9CWDlZVE1COEdBMVVkSXdRWU1CYUFGQ0FvVUNFYnBGcGI2RlBMblozRjVQeHNMM29mTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFDUUZhZkpJMS81V2c5Q0VFaW1FMVJQNTRSZ1F3VE5UT09Rc0xBQ1RlK3JJdGxGUXpDOVpEaHJWODI4eVg3anp5K0FBc3AzaXpLN1QxdGgyZGw3bSt0dTBzdzJQYS9vbGMwMm50NlB5SXczNDhnYUh6aEkxKzBLRTQ1cXh2RkRlTDJsTXhiUGZDWXZ5RUVhWXpqaVFFTFU1OTUxcFhHV3lLTWEvNGZMdE8rWktPWGhNdVZlcTRyWERQSTU0VzZKSE9pQWFpS2Rpdys1ZTNjMmt0L2pGSVF0TTZ2TVhnOUxORnpkakVUTnQyMFZYOVFldlJwRlpmdWNNRzl3Q2FRRG9GbFB6cFRNSktoUGV2L2ltSm1aWWhLZnIwbExjZW10cWpJeExBb3FaZE9ZZkhCZzYrdkFjZFBJL2lhdUdwVUF2N1grVUtObUR3aloyQmFINHNMd2hCMm0iXSwiaWNvbiI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsImljb25EYXJrIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwicHJvdmlkZXJMb2dvTGlnaHQiOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJwcm92aWRlckxvZ29EYXJrIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09In0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMTItMjIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2LCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ill1YmlLZXkgNSBTZXJpZXMgd2l0aCBORkMiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlUyRjEwMDAyMDI0MTIyMjAwNiIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTEyLTIyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3Nn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wMS0xMCJ9LHsiYWFndWlkIjoiNzBlN2MzNmYtZjJmNi05ZTBkLTA3YTYtYmNjMjQzMjYyZTZiIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI3MGU3YzM2Zi1mMmY2LTllMGQtMDdhNi1iY2MyNDMyNjJlNmIiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiT25lS2V5IEZJRE8yIEJsdWV0b290aCBBdXRoZW50aWNhdG9yIn0sImRlc2NyaXB0aW9uIjoiT25lS2V5IEZJRE8yIEJsdWV0b290aCBBdXRoZW50aWNhdG9yIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjUsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfSx7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIiwiYmFzaWNfc3Vycm9nYXRlIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJibHVldG9vdGgiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNtRENDQWo2Z0F3SUJBZ0lJVU8zclZadytZSXd3Q2dZSUtvWkl6ajBFQXdJd2daY3hDekFKQmdOVkJBWVRBa05PTVJBd0RnWURWUVFJRXdkQ1JVbEtTVTVITVJBd0RnWURWUVFIRXdkSVFVbEVTVUZPTVI4d0hRWURWUVFLRXhaUFRrVkxSVmtnUjB4UFFrRk1JRU5QTGl3Z1RGUkVNUTh3RFFZRFZRUUxFd1pQVGtWTFJWa3hGREFTQmdOVkJBTVRDMDlPUlV0RldTQlNUMDlVTVJ3d0dnWUpLb1pJaHZjTkFRa0JGZzFrWlhaQWIyNWxhMlY1TG5Odk1CNFhEVEl6TVRFd056QXpOVEV3TUZvWERUTXpNVEV3TnpBek5URXdNRm93Z1pjeEN6QUpCZ05WQkFZVEFrTk9NUkF3RGdZRFZRUUlFd2RDUlVsS1NVNUhNUkF3RGdZRFZRUUhFd2RJUVVsRVNVRk9NUjh3SFFZRFZRUUtFeFpQVGtWTFJWa2dSMHhQUWtGTUlFTlBMaXdnVEZSRU1ROHdEUVlEVlFRTEV3WlBUa1ZMUlZreEZEQVNCZ05WQkFNVEMwOU9SVXRGV1NCU1QwOVVNUnd3R2dZSktvWklodmNOQVFrQkZnMWtaWFpBYjI1bGEyVjVMbk52TUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFQTl2TUxKUURtbnpmVGZDRUUzM1lFK05SNmhacnh5ejlURm9FazZVbzl4Uzd4dTh4TmdlNS9NblRnM0VYd2ZkSmlNUVVkWEhIdDNjV0FFR005cWJzSktOeU1IQXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QWRCZ05WSFE0RUZnUVVaY3VmU3pXQW1WQUp0dEFyVlFyYkdnVkYvdWt3Q3dZRFZSMFBCQVFEQWdFR01CRUdDV0NHU0FHRytFSUJBUVFFQXdJQUJ6QWVCZ2xnaGtnQmh2aENBUTBFRVJZUGVHTmhJR05sY25ScFptbGpZWFJsTUFvR0NDcUdTTTQ5QkFNQ0EwZ0FNRVVDSVFDREZCWE1LRVdQZHdGY3lac0RDN3VlUVNLQjVCbHJneU02S2pXRFdSdjZKQUlnSDhXSUpOaFpxVmZjMUxZaUkrSVRIWS9QbDlDNUJvQVZVb3Y3dk5wd0dPMD0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBR0FBQUFCZ0NBWUFBQURpbUhjNEFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFjVVNVUkJWSGdCN1ozUGJ4TkhGTWUvczNhTW9FRVlVVkdCVkdFT1VGV3FoQTBrb3BmR09WT0o1RlF1VllMVUhucEtxTlFlRzZmL0FQVEVvVWc0VWcrOUVkVDJWaW5PaVNvSnhad3FVYlU0VWdXdFZCUWpVQ3NTZTZmejFoZ1YvMGc4c3pPemEyYytraFhIV1NmeCs4NjhlZlBlekN6Z2NEZ2NEb2ZENFhBNEhBNkh3MkVOaHJoeU41dkcxbEFHSHNzQVBBMHV2akx4bFhrSHRuMGY5NStJYTZ2aTJnM3g4ZGJGOTFVa2EyWGt5bFhFa0hnSVFNYXVwL0xDZXVMQmpvbi9LZ3VPRExUQ1NZQ3llTndUZjZPRXhDYUpVa0hFUkNmQTNYTVorUDRVZUdEMFBLSkJDTUtYNGFPSTBkVXlJc0MrQUd1akUrSkR6MFJvOUc2VWtjQlY1RllXWUJGN0FxeU5USU94T2YydVJUTWNGU1JSc0NXRWVRRld6K1hoK1RkaWIvaFdMQWxoVGdBYVdQMGgwZUxaTFBvWnhvdnd0dVpORGRobUJMaWR6V0FvZFZNOHkySVFDSHJENXJnSkVmUUxRTVpQcFpiNnp1WHNUQlUrSDljZExla1ZZSENOMzBTN0NQb0VHSHpqTjZtS1NWeE9senZ5b0l2ZFlYd2lqWnI0ckJSa2FFQ1BBSGRHNHgvZjY0U0p6MXBQM1lBR3dydWdSc1R6QUx1VFNaeGRXVVFJd3ZjQWNqMjdGWTRyWVYxUkVtR2c5SUlGMTVOSkhlbnB1bXI5bVhnOGhUWElGZFZTTk5Fc1FKRndMdWpPNkFQVEFxUVQrN0dSL2JHbmF5OVZ2a1R4OFErd0RFVkZ4MVhyRGVvdWFPM01oSTNXUDVGK0R6RkhSRVY3cHFGSWlERWdNUVVMWEVpUElmWXcvd0lVVVJPQUloL1JPR0VZY2o4VC9TQUExVFpXeithaGdKb0FRME41V0tBUDNNLy84UEpRUURFS1lzcGRUb2J5UDc5aS9QNG5iYTh2bmJ5RzJPR0JYSElCa3FpR29YbFlvUHp2ZmZRTkZKRFFuRUF5R3BKM1FRMWZweVVQTW5EVWg2VEhSWVV4SURFWVJSWWplTksya1JlQThYNElTeUxDUHdWSkZIb0F6OERSQldhaEJ5ajhrVjFFT2xod0pvR2NBSnFLRUFQTlZsM0tSbklDMUpLdTllK0VKN2NTUkU0QVdwM3MyQjd1R2V3QjhKd0FPeUxYU09WbXdzRWFmVVJPdDV4L1pmTVJJc2RqeDJRdUQxY1Jpd2dxdkF3S2ZTa0FRYW5xZEdJNGVHNjlGS2tSU1JlRVNGMVFmdmcwSmc2TzRjS0JNV1QydkZvbkpnRktUMy9HZ25CUGk5VmxSQWIzTXpLWDkwVVB5TzQ5Z1N0dmZvcjgvdE5kcjJrV2IraEJZd0c1S1JJazd1aGJHV2VJbWNNWHNmVFd0VzJOM3dxdG9xQ2F3ZHlSanhGM1l0MER5SUNGb3g5QmxlWjc1eDk5amJnaU9SRkRCWllnZngvRytFM29kOHlLWG1RTnpwN0lYQjdiSG5EaitCZGRmMGJ6Z0Z0aW9HMVd6TWpsVEI4Nmo2bEQ3M2U4Zms2SVFPK3hFaWw1YkVQbThsZ0tRTWJzdEJxdThsd01ydXZ0Z3l1OVRxOFZIbDRQZkg5cmhFUURkT0dJNkFsL1hFSGNrTTBGVldDQnVhUHRnMmUxOWpRbzBHOFgyVkQwUTllUUlLMU12WDQrRU1JNFBsK1h1Vnd5Q3ZLTmIvZlA3ajNac2ZYUC8zbTlwMVJERUlLdXQ4K1V5ZmhqKzNNd0R6TllsUGU5Q2d5VDcyS2s0dCs5ci9ta1h0TEozNDhQbjRGeGtuV3BwZnB5QXRRVHhudEFKemZSemFEYmNXdWpmVFo4SUduQkJkVWdGUVhKQ2ZEdVR4WFFhdUErcGRkbDdxR2drMWtrVUNuS1YyQ1padEpOaGs2dDNVSzZ1bXArWVpiUDdzRWduWXlVM1hkU09vS2g5N1N5L3Z3aHpNS2x0NjhxckF0aVJvOTE2Ulptemg3K0FMM1NiUjVSZW1ZNk9lZEpOMDU1QWJoZmdrR29COUNpM0ZabTNyZ29XdldKSGQ5UGh1ODBqMmhPMW95U3FFdnZsNU1Yb0xGTDNPaEF2UEQ0dTdiWHlBWFJMSGRLdE81dVVQNklNcWZSdEg0aUtkMEQxTW9yYTZOMEVJZlJEUm9QM2xsc1N5azBvWlpjZlB3OTFsK01GMlJ3eWdOMVMxbFQ2dzlteUVZSFllSC96NjVLei9UVWNrR2NMWXUwaEZFQkpuLy9ESGZmL3Fiano4alFNdldCZ2toSG00K0FQS1V5bkZwQkp2bThDTU51aU1ZQkhjVjNxZ1VzMk5nNTZmdEZLS0FtUUJEcmNxUFJFRUVwNU1uZlB1K1lYTnNKU3Q1ZEZ0bFB5cENhUjloQzhRUVY5WklrNS9Pd0FCWFl5WDh2Q0ovZkt6Ukc1SDc1RUZmLytoWldTTENyVUNUY0dvZTFrU1dicHgvU1lEc3J3dEZUSW1QYU9nYVF5MXArZGljUXpHb3huazdUR2xrNURrWENDVURibFpnWDJWa1J3ZHFnNUxDU2k5SkdBdE5oRHZZTHY4ckhjaStJRlNGYlB4RitXWXFQeTlpdEpOVVA2V2dTWGdBYS9UbXNETWl4Z3JHaWpqTkY5U3pNR2xrcGlQNVl3bTZCWEkrM1YwdlAxN2N5Yml0eHllYTZvY2dJemhEMXhwRXJhWm1JNmhPQXFtV2I0aDhiYUJGNFZjeC9KcEVMS29OYTBMczJkSkJGb0pidkkrWUh0emE1ZlM2RG9mck5nZG5TK3RMdDZHdjVUY3lzanFhZVFLblpnWWlPMkZkSTdzdVpNSDd3MjJFYTZnMHB2LzhPZGFWV0QvOFNSdFpLTUlpN2dVTXJBM2NEaDFZYSthTVpXRGp5VEE2YXh3aDNFL0lnVmxtaTIvSFZHS2p6NGhtZE5DVUdhMlo1RC9MTHV5b3RJdkhhZ3E2NFhwWVk3UHA5UWRBejJLbEdZbzlPWk5FY1FWRm96SU83SnBWRUxIOFB5ZUZ5VkVaLzlkK0tNM1R5U0szV3VJRWJ2R09pRm4wd2VMM2JabWlPSjhLNEwyN2lGandYL2p4Wk1SWEJPQndPaDhQaGNEZ2NEb2ZENFhEMEdmOEI5V04yL2xkcWkzRUFBQUFBU1VWT1JLNUNZSUk9IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiXSwiZXh0ZW5zaW9ucyI6WyJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiI3MGU3YzM2ZmYyZjY5ZTBkMDdhNmJjYzI0MzI2MmU2YiIsIm9wdGlvbnMiOnsicmsiOnRydWUsInVwIjp0cnVlLCJ1diI6dHJ1ZX0sIm1heE1zZ1NpemUiOjEwMjQsInBpblV2QXV0aFByb3RvY29scyI6WzFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjEwLCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjUxMiwidHJhbnNwb3J0cyI6WyJ1c2IiLCJibGUiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fV0sImZpcm13YXJlVmVyc2lvbiI6NX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMi0xNiJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjQtMTItMTYifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyIwZTgwMjBkNzgyYjY3ZDAwZjQ3ODM5ZjQ0MmRkYzI0MmRiZTRmYzJmIl0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjBlODAyMGQ3ODJiNjdkMDBmNDc4MzlmNDQyZGRjMjQyZGJlNGZjMmYiXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlZlcmlNYXJrIERUIEZpbmdlcnByaW50IEtleSJ9LCJkZXNjcmlwdGlvbiI6IlZlcmlNYXJrIERUIEZpbmdlcnByaW50IEtleSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyLCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjJ9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50IiwicmVtb3RlX2hhbmRsZSJdLCJpc0tleVJlc3RyaWN0ZWQiOnRydWUsImlzRnJlc2hVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZWQiOnRydWUsIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjExMiwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQ2ZEQ0NBaU9nQXdJQkFnSUpBUDRmU1JRcFJwM3FNQW9HQ0NxR1NNNDlCQU1DTUlHWk1Rc3dDUVlEVlFRR0V3SlZVekVMTUFrR0ExVUVDQXdDUTBFeEVUQVBCZ05WQkFjTUNGTmhiaUJLYjNObE1SZ3dGZ1lEVlFRS0RBOVRlVzVoY0hScFkzTXNJRWx1WXk0eEREQUtCZ05WQkFzTUExQkRSREVWTUJNR0ExVUVBd3dNVTNsdVlYQjBhV056SUVOQk1Tc3dLUVlKS29aSWh2Y05BUWtCRmh4alpYSjBMV0YxZEdodmNtbDBlVUJ6ZVc1aGNIUnBZM011WTI5dE1DQVhEVEl3TURZd09ESXpOVEF3T1ZvWUR6SXdOVEV3TmpBNE1qTTFNREE1V2pDQm1URUxNQWtHQTFVRUJoTUNWVk14Q3pBSkJnTlZCQWdNQWtOQk1SRXdEd1lEVlFRSERBaFRZVzRnU205elpURVlNQllHQTFVRUNnd1BVM2x1WVhCMGFXTnpMQ0JKYm1NdU1Rd3dDZ1lEVlFRTERBTlFRMFF4RlRBVEJnTlZCQU1NREZONWJtRndkR2xqY3lCRFFURXJNQ2tHQ1NxR1NJYjNEUUVKQVJZY1kyVnlkQzFoZFhSb2IzSnBkSGxBYzNsdVlYQjBhV056TG1OdmJUQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJMUFFtNTBEZ0I5ODByZElJcDZIWU5vK25mUWVVaFBzbTRzNzhOUk9lTE1PaGV1S244WnhQWERIRCtTS3FCSEFuWE5idG9ROGc0Y2grcWlTK3NXdkp1T2pVREJPTUIwR0ExVWREZ1FXQkJSRG5XbzI0QzJQcEVTelZiSlB6MVpGVGViU0p6QWZCZ05WSFNNRUdEQVdnQlJEbldvMjRDMlBwRVN6VmJKUHoxWkZUZWJTSnpBTUJnTlZIUk1FQlRBREFRSC9NQW9HQ0NxR1NNNDlCQU1DQTBjQU1FUUNJRVNrazc2a3RGbkRCRHlTZWJKSHR3M1RjSklYVGZObzVOZzRBajg4Qkk3UkFpQnRFYjVveHVpOFN6c1VaNndjUVFqbjVhQjVuZDJhTkpCaFpLK2lGSEhHeGc9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUE0a0FBQUREQ0FZQUFBQXZCVlRDQUFBQUNYQklXWE1BQUM0akFBQXVJd0Y0cFQ5MkFBQWdBRWxFUVZSNG5PM2RUWEliT2JhRzRlU05tcXQ2QlZLdFFPb1ZtRjZCVlZOT0pLL0FySWpMc2VVeEI1WlhZR2x3T1MxNUJTV3RvS1FWbExTQ3RsYkFHM0IvYWFlWkpNV2ZjNUFBOG4waUZOMG1YUlovTWdFYzRPQmdVUDN2Ly8xYVZkVkpaZTkrUGgxOWRmaDNveHBNWmtkVlZSMTUvODc1ZEhUYmVoQUFBQUFBSXZ0RkFlSmZEci8yZFZWVldRYytDaER2cTZvNmFEMXA2enIzendvQUFBQkFHZjZINzNHNXdXUVdWbGh2SWdTSUQvUHA2THoxS0FBQUFBQjBnQ0J4dGN1cXFvNVhQbXZqdWFxcVlhZnZFZ0FBQUFBYUNCS1hHRXhtNDZxcXp0clBtUG9XSUphd2J4TUFBQUJBT1g3aHUvelpZRElMSzNzZlcwL1lHOCtuby92TzNpZ0ErQlRuS3FKb0dWQUtiWit4TEZESVBRNzBBRUZpZ3daTE42MG43SDJZVDBkWDNieExBUGhKMkJQOTN2QWp5YjVvR1ZBWTZ3S0YzT05BRDVCdUtoRUwxWHlaVDBjWHJVY0JBQUFBSUFFRWlUL0VLRlR6b0ZsN0FBQUFBRWdTUVdMY1FqV241UEVEQUlDSXFLSU9ZR3U5RHhJSGs5bEpwRUkxb1pMcFkrdFJBQUFBQUVoSXI0TkU3VU9Nc2ZuNkxaVk1BUUFBQU9TZzd5dUp0eEVLMVZ4VHlSUUFBQUJBTG5vYkpBNG1zNnNJaFdydTV0TVJoV29BQUFBQVpLT1hRZUpnTWp1UFVLam1LUlNxYVQwS0FBQUFBQW5yWFpDb1FqV2ZXMC9Zb3BJcEFBQUFnQ3oxS2tpTVdLam1uRUkxQUFBQUFITFV0NVhFR0lWcS9waFBSemV0UndFQUFBQWdBNzBKRWlNVnFnbVZUQzliandJQUFBQkFKbm9SSkVZcVZQTlFWZFc0OVNnQUFBQUFaS1Q0SURGaW9ab2hoV29BQUFBQTVLN29JREZTb1JvQ1JBQUFBQURGS0gwbE1VYWhtakdWVEFFQUFBQ1U0cGRTdjhsSWhXbyt6YWVqcTlhakFKQ1B4NnFxN2d4ZkxWa1ZBQUJrcnNnZ01WS2htaS96NlloQ05RQ3lwb2t1SnJzQUFNQjN4YVdiUmlwVUV5cVpucmNlQlFBQUFJRE1GUlVrUml4VWMwcWhHZ0FBQUFBbEttMGw4U1pDb1pvUUlENjJIZ1VBQUFDQUFoUVRKQTRtczh1cXFsNjFuckQxZGo0ZGVhOVVBZ0FBQUVCbmlnZ1NWYWptWGVzSlc5ZFVNZ1VBQUFCUXV1eURSQldxdVd3OVlldHVQaDFScUFZQUFBQkE4YklPRWxXb3huc2Y0bFBZaDloNkZBQUFBQUFLbFB0S1lnZ1FEMXVQMnFHU0tRQUFBSUJleWZZdy9VaUZhczduMDlGOTYxR2dRNFBKN0tpcXFxTU5Yc0U5RXh5QXI4RmtOdHpnRjN5bEw4RTJsQ2tWdHRQVS8xdTczYUdBM2paL1AvUXRaNjFIZjNhKzRYVy9rL2wwZE9IMWI2UGZHRDl0SjhzZ01WS2htai9tMDlGTjY5R2VXbmRqVWZIVlRtTmdVQThPNm83NFpKZTA2c0ZrVnYvZnV6QlFEUTFmL2NOUkxpOXJmQitiZU9RekxZdjJ2Qi9wR3FqYndIQk5IRy83Umh2M1l0akM4S2o3OEZIM0ltM29EaGJ1ejFYMzZxTitxcFFIZnVwalQ5WG1EMTlvNzdlNlhuUjliZlRmS1BoN0tVaDg2Zmw5WlI4a0xnVFJxd0xxZS9YTGpLT002SE0vYXJUYnYrci9iNTExdURCK3FuUVAxVzEya3BOKzZyT0dDK1BIYXRmK1psRDk3LytGZitTdjFqUDdlKzF4MGVzRHVIMmhBZDNYZGQ4SzFUUTYyK1lOdHUyTjlkeG85TzcxUFRFYnMwYmpoaDdxOC9kTW4xNzByTy9vUnJQVHZReHdHaE1naTUzTFBtME1RWGxtMUFZMjcwWHZUSlZGRC9YOXlJQ3hUZmZwc0RHSnR1djM4OXpzbjlUMmRkSkg2Wm83MTgrbUV3OGZQRmZhTk1qMkdCTnViRDRkRGJyOC9kdFFINzc0czIvZjBldzN5RUJZb1RGK3FqLy9yU2Z2OWxDUG4rbzJ1N1ArWGUzSVdPM0lKbVBJOE5yRGFRMlhMNzN1cklKRWZSRDN6Z1BwMEZFUCt4RFlEQ2F6NXF5bDU4MzExTGlSZXIwNnEydTQvdHhQblNjN3R2V2dTc0UzSlYvL2pjRm0vUk1yTUg5cWRDckpCT1dEeVN3TU9OKzNudGlkeXdTaEJ3MHl6aU8wZ2R0NjF1VE5WWjhEUnZWUnB4SHUwenQ5M2xFR2U0MUIzWGlIUG9BZ3NVTWQ5T0dNbnhvaXRnbmJlbERnRlRWZ0hFeG1ZNjI4TjYvRDU4WkVRejJXRzY1WStGbmJudVFXSk40NnorNkdEL2FvOEFGeWZZTjFGYUQwY3ZDakZPbndtYjlwUFptZStqdTZLR1gxYThjWmUyOFBqWHVoeTFuSVhnV0ptaVFZNjM1TWFaQ3h5cFB1eFY2YzA5djRmczQ3NnFPK2FJYmQ1UnBlTWFqYnh0cEJuY0hySTBoY1FtT244NDc3OEw2T243b2V0MjdyMnZzNzBwam1jaUgxKzFwdDE4clY1OGJFYUxOOVhiazRsazJRcUVJMW52c1FuL1VocmZ4d2M3WERVblFzUlE5K0VoanNXTGpPT1ZqVWdPYzh3aDZhZmRXemtGZkxHbXBQZlFrU05WRXpUbXpGY0J1bHQ1ZERCVSt4MDN4WE1mMjgxUTlmR1FRWkJJbVJKRHgycW5yUUhxVDgyVzhxWkNpTXJlTUtmVGEzamI3c1lkdENtMHZhb3llZDV2RFR2NUZGa0tqTy9YUHJDVnR2Uzd2WjlreHBpYW1veGs2ZDdEaVRWY05OdVE1TXJDVTQ0TnhVOUZYY2tvUEVRZ1lhaTdZZUVLUk1NOXN4cXBYdjZrbWY5ODdYdE43amxkRUVCVUdpczR6R1RsV0I0NmNqOWQycFQreHU0NU8rSTVNSjRJV3N5cjFxcUNpejRhUCsyRnBSVEQ1SWpGU281dE44T2hxM0hzMllCbjQ1TkhCTkQ1cDF5VEtOSW9QQnpyNlNINXlxZzdrcTVEdUlzb3BiYXBDWWFSdTRqYXdtYmhacElINFJvVks1bFM5cS83WWE2RG1NWVFnU0hXWGNidXc5bWRHbFFvUERwdnJjOWIyK240V3N5dThCNHJvVENHUmxFY21GaGJpNytYVDB2U3BxMG9mcHF4TzVjYjVadjVRVUlJWUdmakNaUFdyUWwxc2pGMlpaLzlKTmtJMXduUTRtc3hDWS9GMXdnRmpwKy9sYkRVcHlOQ04yWDlCM0VEckxmOEsxcGJZUUd3ajdWekp1QTdmeGZqQ1ozZWQ0YlNnUXVjOG9RS3lVR2ZLNHpmbUFrY1l3TUpENTJLbFNwa1FZUDkzazFDWm8vQlNDdzM4S0RoQXJYVk4vNmIzdVJCTk9kWnY1WldFRjhWeVRPNnQrL2pPWXpPYTZQbjVxdzdRSy9VRi9mS1d4MURkSkI0bHFYTDBybVJaeDFJVnV0RXRkSExtblZiM1Q0R2ZabVZkSjBjMzBXSGpqdHVpemd1SWs2TnEvVmNwRWlZT3hzelhuYkVIQ1RLcXVnejhMU2kxOXliRUNsK1RieXBvR1NibjJVOXNPOUx6SE1OaFRZV09ucWpHWmNkcDZKakY2amZmR21TeXBlNy9IeEcrOWdQSzhSK3p5Um0zWVQvKzlzaE1lOU1lTCt2VWxHeVRxcHZXdVpMcDE2a2lLR3Vrc09jM0t2aVFNZm02M21iV05xVEVnTFRVd2VjbFpDb0dpcnYyU1ZnOVg0YXlzTlFwY1JkN0dnZHJLcEFORkRjWnZDaGtRdm4rcC9WTWcyY2ZyTVJ1Ti9xT2tzVk9sTnVIUGxDWnpteHB0UVo4bTlKck8xR1p2SENqcVdxM2JrL0VMc1V0SUdSM1VQMVZWL2F1cXF0OVZTS2UyTEdPdlhrRThVQ1haTklORVJiamVOMjJyaWsrT05CTnptM0hGdm5VT2xzMTRkSzNuQTlLbVRnUEZ4dVJJOFowTUIvRXZ4MlROZDBrSGlvMXFmQ1VWODFyWi91bDc2TlBxU0hZMHJpaTkvemhMTFNWZEUvK1BoYlVGdXpqZU1sQ3N4OEhQMnhZcENnR2x6dGc4MVFKWmNMQWs3ZlMyc1pyNDdmY2xGeVEyaW45NGVsdkNHVE5xNVA3c3dlRG9jd3FCWW1QMnErOEQwcWF6THZhUVJpcG9sWXE3UEY1bVhJMVVwYjVQMXRUcVFIRmQ4WUxvbHBSckw4bXFRREdyZmZWOW96N3JjMC82ajNEZkpiRjlwNUhXeS9qcHY0NjNhQ3ZxZ082bTljeUd0UHI0MHVKWTNaNTk2MWVUQ2hJYjUzWjRYa0RYSlpRS2puUXNTRW82RFJRYlFVbmZaNytXZVJmenUrbGhNUWhTVFJjb2xhOFBFMlRiT3RobkVHR3Q4QUN4ZHRZczlLRFplU1l1RXFXZ3ZyVDAwcGNjZHBscDBLZ2IwTGZQZlJObkcrNXhydHZRZlJlNFhscTUvRDdlQ0cxWmFpdUpWdWNJcmZLd3oza2lxZWhoZ0ZqNzNNVm1iSFg2cFE5MDluVVpjUVdqYjhVZ1NEVnQwQ0NQVkw3VmpoT3FFTzNkcDZmaVkyTUFudTJ4SktWVDI5R25Jbk5ObmFTazk2aHV3RDdlcjZ1L3NaQ1N1dk40UUxGRDNSNC9MOHVvWEh6c2w5YS8waEZGMHA2ck5FOGxWQWpzY1lCWUMxV2hockgyay9KNWIreEFBMExYZTZ5bnhTQllTZXpQcXBTVnNMcC9zMndRRUlzQzFUNWxYdHl3aXBpdW5nZUl0VHBRakRLRzZ0bTJrSDJGc2UzSmlvSTB6Y0IrMmZPTGpwYXNUcDQyQThRTngyb25TUVNKV2gzeW5CbXVEN0hNdXBLcE9xQXVBNWJuSlFQV2s4Z053SUU2NDFVM2t4bGRsNmtIaUE5TEdvM1kzMGt0bks5ejdwWE9yWlhLTHM4MFhYYjlWMHJmY0F0Y1N0Zy9iU1QxQUhIWjllRjZiYnpnNm9YRGxkMm83WXlaV3ZhazYrTlIzMEhkSnA3b094aEdhQmNQbDN6L1NFQkNBV0xkWDNjNWtSQmxES1grT3ZVQU1hWHgwNkhHTnk5bElteFM2T1p3VFV4MXQwMDgxSG1RcUprRzd6MkM1N2xYTXRYbkZIT3Z5Wk4rWC9qYzdsLzYvUFQ2VHRRWm4wYm9qSy9xRXIyT1Vxa1UrS0R2NFZHTjd0ZE5ydWZHZDNLcTd5Vkd3M2VwRlF5UHp1Y2lZdVA5c0hEOWI1VGlvYy84U0ovN2ljSG4vdEI2cEw5U0NCRHJRTEFPU0I1MWZheTkzclVLMnJ3WFk3eVh3ekNiclBPdm9tblVGdkQycEtJUE4ydnV6NThtV0JTOG5qb0dES3lZSkVZcktyRUR4SHI4OUsyZFdOVmZSeDQzTlIzcXRYbU9jWTRTdVIrZTZuNTh4L0ZUek8vbTI5RTZTOXF6YmVPWHhRbkxadUQ3U3RmbUppdUo5NTBHaVpFSzFYeFE2ZGRzUmZxY0tsMVk0ZmRjTHJsSTE5Sk5kMThQRGlKMHhtL0M3OGo5dTEyaDJjSGM3aHB3TmI4VFhVT25DclE4OS9NZGJEZ2J0aFhOU25wMzlKc01PdGRxZk9iZnIwdTk5dUdPd1RyN0VidjNwWEV2N2pUWnFIdjR0ZzVhTkFBWlI3aW14eUh0TTNJV3phVnpYL1dzYzhLMkRrVFZYOXdvY09naWVFQkUyaTZ5YWtYRjJ0YmpweFhqcG5Ha2xjWmp0UTFkWnVkNGVGYi9lMk0xZnFwK1hFdm5FYjZiaThXRDhzTjdHRXhtOVI4M3lRNEpFNWMvQllFYWg5eG9nbkpsMXRmaW50V3VWeEs5TjdWZng1NUZkWExoL0RtRndmSEZzZ3RtVnd1ZHNkZmVsQkQ4SE9XZVJpeDFCM1Bsc2VxdHoraEtuOW5ZZVZYT1kyRHFlUitiWC85TkdqQmM3VGlCUXZwYU4rNzBmYm1zaXVzZVAxZjdlT1U0OERqUWdDTktJUnR0aWZBTXZLNDNPRWo2UmJvbno1V0dlTlhUQTcyTEZ1azR0VXA5OTZXQ3czMnZ5NXZHM3RZWSsrL0QzdVhiQWliYjY4RHd5bXQ3aHNZSFZ3b1dQU2ZDenBRQnNqalI4S0E0WUxoTHBrYjQ5elQyK0VjUG5hNzRkNGFOLythMnN5QXhRcUdhaDQ3M0w1bFFZK0cxdCtOWkRadmJBRndYK3FuZWgzVm5mS0NHTk9mdjJUVkFXV1krSFYzcXZNY2JwOG1IZ3pVTjBOWWFxNkFlUHVuemp6YlIwQmdJalBXK3htdStCL1lqeG5XdDZ5SEtDcTUrejFEWHdzZldYN0F4am5odW4rZGt6bHZyZGpJTWdocGJYbElzc3ROTUc3dGQrTitOYVJWaDA4cnVtNnhVWEdlUTVSQWorOHFsLzFDZ005U2czdnQ5NUR6WlhtZi9YTVY2L2FFTmFveWZ2SUw0OFpKeGJiMG5mK2V4a0FMRk90aGMxZDdWN2NTMzg1azdDUklqRmFvWkZyTEM1QlU4M0dtdlpxekJrRmRuL0U2clZybWw1VVVQRHB2VVdIZ2U3WEZoZU8xNjdRY3dIM1J1WTJGMWQ2aE9ZZkhlSU4wMGpxakI0U0pOM0h4MUtwUjFHQ00xMzdHeVo5MmZ1NnlxNno0OFRhUzRpVW1xM0JKSHhtTXV0eFViQzZxczY1MTlkZTc5R1lSN3RsR1B3dXY5MUpYSm94OHZ0b2RudGRlZEhQV2orM0xvMkdhY0x3a1M2L005RDFhbGltNW9aWnVpTnJ5K3pyNzkrOUhQU1l4VXFLYUlBRkdyclI1cE1KOUN2bkxzQVZINFR1YlQwYWtHWkpaeVN5a09zNDhuWFFZb1ZhT2hjeXFPY21oNEhwTkg1OVZwZ0xnb0REWjBiL3pXdUQrZU01ejh5RTBZN0wwTzUrZDIvVm5yZW56YmVzSkdqUE9CdmRyaDB4aUY1M1NHc25YZnRLa250VW0vNmxyMEt2NWxJdkVBMFRQN3F0SUUrMG1zejZET05uQytOdDkwY1FiMWpzSWU4YU91QXNRbXh6YmpRR210MzZrTnZOT2ZMeGJPVHJSU3QrSDFaRlhjSURGU0FaYTN1VmN5clg1OFZoNXBsRys3M3Fqc2NHT2RSVHpJZlIvUEdwRHV2YWZHU2lOUWZIYjQ1NjBHcHRabkwzNUtLVUJzQ2dNQzNSK3ZJNllJOXRWMXpNSGVKblJkZm5ENHA5ODREU3ErY1Z4RmZCdnorOUc5Rjd1aWNHaVBqbEp0a3pMazJXNWVhNEk5YXYrdENYYnZTWXhMenpiQ1FCaWovQjRtVXhPYlFCazd0Um5MZ3ZZNmlEdTB1TTZiQi9ocnkwUGRobjlQb1k2OWt1aGRxQ2Jad2Q4T1BEYkdKck42b2didlMrdUozZVd3bWpoTWNRWldqWUhIU3NPeVJtNHJDdjR0NzRQbkhLNFZyU3lXVUhRclZWKzBZcFBjYW8yKzk3dldFL3V6bm14cDhtZy9yanZxcjA2ZEpzMlc2WHpTdGlRYTZIcU5NYTgxYnVtTWM2QjRtSGg5aC9NVUMrdzRqcDlhMjdJMGZ2eWtQNTdwZXErZkM0SGRRRDhyMjNwTmN0Ui9yNjYyZmQ3WUUzL1hYS1dORmlSR0tGVHpwWlRHMXFuY2YxTHBkWEt1TkJzTHA0blBnbFVwcjNDcjhiVWVtQjRhclBCYW4rTVUremdBcENuMWJCT1B2c3dsblV6dHJuVi85ZFRWZ0ZYcGZURW1hUDVnOWRDT3JrT3Y3NjN6QUxHbTErRXhpVlNwTW5tcTQ2aVUwNi92UFRKQWxxVUFLODZwVnk0L0tyYmE1M2VjTi9iQ1B5MzJFMUdDeEFpRmFoNGk3Ym1JeGJwejdHcEdkcTI2WU1DNnY3T0ZnOEt1Z1M1NGRMQXJaN1EyWkIwa2xuaXVKZ3FqUVlmMWlvSFhTcUpIOEJtMTR2QWl6YVI3RGNTcnhkbDZtQmc3YldXNlN5VkFiRGcxbkdCdk9pamhWSUNPWERwa0lLd2EvelJyU1lRRCtHKzJuWkFQa3dFcThGUUhpTS9hLy8xVHUrc2VKRVlvVlBPc1plZ2lWZ2MwaTJQWklEMGsyTUI5cDhIUXA5WVR1eUZJM0lOU0Q2d0hScDRwYmxzclliOHllc002aURoMFdpV3dEaEtmRXBuVTlGeE5KSlhja0dNTmg5YktTZ3FNSjlnWHBieWFtS3hHdFhKTFM4ZFBqVm9TOVhndFpHbmVoNkR2cFdBeFBLL1Z4OGRHZ2FjSDdjOXZqWTljajhDSVZLZ21TdVd6aUt6TC9lY1FPRjNvZGU3N3ZvL0RwQVNCd0Y2c0QvWmVOUk8ycWFXTjVJNWlGNlFBZGhiYXNjYVpWbFpPSE03ZXRKNElTaUtBMHJGTmR3NEZlUjVTcmc2YUthOVZ4TmJLU2lyVVBueHd5TktyczdKWTZkN2VwWEZsM1pWdFQrTVlqb3ZHOWY5T3g4STlhVXRGY3l4OHBQWi9zVDlaZTlhbjkwcWlkNkdhcUpYUElyR2NEZnVRUThCa1BBT1QwMWsvS2JKT3gvUzgvN2ZGN0NoeUUyVm1lbGVxam1jNU9FOWxGYkhtOFZwSWViZm5zWXFZL1BoSlJhNDgwazVKT2QyQjlqT2JUa2EvdERLb2ErQkV3VjZkN25xbzFjWDNqWit6aGZGWTJNN3cyMHZWOWoyRHhHVUhRMXRLY3AvZFBwU2FheldvZnM1c0pzanF0UklrN2tHTmhXWFYyY3J3dk1SOWVadzVDbml5bmdSZE8rRFlRZEY3aGpYR3NONW54Q3FpSVJYZXNGNUZmTXFvdXJSSHR0amhzcUlwMkloMUcvWmltNjJqczBLdzk2dU96L3FnY2R6ZHdrOTQvUGVxcXY2MTZkbkFudW1tbmdGaTB2dnM5bUQ1bnJLcTRoZ3VWcVBVbnBCeWVzUWg1SHU1Tjc1L2sxbkJDeDFmaW1XMGdXV1VVdlpzT0FpMkRoS3RVMDFUblBpOWNhamVDanNlWThGc3hwZU9hZEduckhydjVOWTRCWGk0emNTU3Npdk5KcUppbjVOb3BkUVpEc3YzbFdNK3VWV0RsRlN4bEF4WnozU25zcEpZc2RLTURGbW12RmtIaVpiLzNsT2k2WDJzL0NWS3FYald3ZEZkaHR1WVBGWTl6eWhnczczU3RzRGxHaVFXVnhsTWpaMVZPdHgxcHRWZUNSTFRZRDFRMjZlanNWNFJQdE0rS2lBWGxvTU82NVJyeXozSHFRNnVDQkxUNVhMOFN1dVJ4RGxWSnErWVZOMlo1VDdSVGlmWmN3MFN3MEN2dEkyMWxqZGpscDJhVWtRdDluK2t0SEtWbmNRbUdEelNobStZSVVWR2treWQzL1pjcmcwa1dTUkUvWkxsb0krMng0NTFXbWlPcTRnMWorQ1dJSEUzbG0xMnArMUZya0ZpOExHd0ZRSEw5NUp6SHJuRlFDR2xpcHE1c3B5VjNPZmE5aGc0aHYxZHR3a1YxQUhXU1hWL2RTK0NSTEg4RG1oM0RHaVN3cnF2ei9iWUJ3VzMxcFZPeWJyWlRURTFNVHlEUktzRDB0Y3BhVVhBNm1aOHlEVFZ0R1l5aTBkS1lURzhHdHRqQllyTWxLSlhFbTRiVXc0U1NUbE5qM1hiL1ZSQVVUUHJJUGVBc2RST0NCSTNjQk1oVUR3b29mSFdqSmhWOVRxcWV2NFhzN1VGVUNFTDZ4TDB0WERQL1RtWXpHN3BDSkd3VkNmOVRPK1p6Q2MzRVY4Zkt1dHV5eVBJcFcvc01kZDAwM0J1aC9YQmtrdUVJdzl5djdrdEE1cmtEODkvZ1ZYUWI1MEtoZTU0eis2RzZuaC9FU3dpUmFrZjZOMFRscE92dERFMkNCSVhlQnptenZYYXVlSUwxNXc2cmdUVXpuU2dhcTVZOWJMSFoxcU9XQ2xBZGJBWXp1d2NPeFRtQUxDYzkyVHl2c2pRU1lqMmsxc2VvUDlRME5uSzFzRXVZNmx1V1Y3blcvTThUUDhiSFpJZUFyZy9XMC9hK2p5WXpPNHpuWFcxdkFuUE0xOE5zZHBqU2dXNVFvUjlJb1BKN01taGZQOHE0ZmQ4VkhHc08zVzZ0d1VOSW9EVWtHcUtiVmdITGlYdE9iVitMMkZmNGhIOVh6KzVCNG5WajBGZTJKLzRydldrclZ0ZHpMbDFPSllCeldIRXdYVEtxSEJhbGhDb3ZlL2dIYjJxRDJzZVRHWVBlaDAzZEppQUtTYjFzQTNySURIM2dqWGZoWVdTd1dUMmJMd0NkY0pxZWo5Rk93SWowdjdFWEF2WnZHbzlBcURwTWtMYStrdU90Y0w0ajFKU0x6bEdBekNSK3FRZTkzbGFUTCtQak05R1hNWDYvWEQ5OTFUc2N4Smo3RThzb1pBTkRMQ25yQnpLRHZBNExIaFhoOHFNK0hzd21YME5iUTdIYWFCbitwUWlhcm5TU1dydC9peURsdFQzdys3Q2V0c1ZZNm1laWhva0trVXJSb0daYkFyWnNCTGhpb2F0SVBQcDZOTDRrSDhySVlQaFRNZHBFRENpTDB3SG9vbFA2bGtHaVZTcjNaOWxLbVdKMzRmMVNpSmpxWjZLdlpKWTZiRFNHQWZ0Zjg0a0FHTXZCckM1OHdUU1R0ZHBCb3p6d1dSMmszbmxaU0NXbEFlaVRPWW13cUV3WDRsNzdhemZFOWQvVDBVUEV1VWkwaEovS0dSREVBWVVJbUkyZ3BVM21yQ3FWeGpwYkZFSzY0Rm95bFc1TGU5YkNvQ2twYlQ5aUpWRFliVk9qMkZBZHpvSkVyVy9LTWFLUUs2RmJBQ3NvR3lFdDh1ZlRWYTl3dmczaC9hakJBNEQwU1FuVUJ6TzVDTkkzQStwajVzcGNhOGxJdXRxSmJIU2VZYmoxaFAyVWk5a3cyQVIyTko4T3JyS01GQ3MxWWYyRXl3aWQ1WUQwVlR2QmV2WHhaN0UvWmdHaVFWV05xMlpGa2lpcitxbnpvTEU2c2RBNzdyMWhMMXNDdGtBMkV6bWdXSzFFQ3d5TzQ0Y1dhNktIU1JhOE1seWNQeVU0VG5PeUJQWEdmYldhWkFvTWM1UHJESXFaQU5nUXdvVWYwKzhtTTFMWHVuc3haU08rQUEyWWIwcWxsU1FxSm9HYjFwUDdJNVZSTVRDdFlhOWRSNGtSdHlmV0ZISUJpaVA5aWdPQzlpRDhYNHdtZDJ6cW9pTVdLZnFuU2JXUjF0bklGRWpJUzNzMndQV1NHRWxNZWIreExENS9LYjFLSUNzaFRaa1BoMkZUSUVQbWIrVjR6QURUTllEY3VDd24rc2dzZXJGMXVNU2dzUzBrSklKckpGRWtGakYzWi80YWpDWlhiWWU3UTZkQm1Ca1BoMkZsTTEvSjNyby9xWU9WQVdWZmRUSXdSZmoxemhPWVRWUjk5OWg2NG5kUFdsQ0hBQ3lrRXlRS0xIMko3NWpBQWFVU2F1S1ErMVZmTXI0VFg2bW5VSUdyTE56RGlObEZxMmtJTlY2anpCWlRBQ3lrbFNRR0hsLzRpVXBYVUM1d2w3RitYUjBwQXFvdWE0c0VpZ2lkUjdCejdqanZia1h4cXVJUWNwSGNmWFZxNzUvQU1BNnY2eDVyaE5oRldBd21ZVlp4TS9Pdi8vYi9zUVFLSFpja3RyNmQ5K1J3dm9kaHhhalRtVy8wcVRRV0JVVUxRL0g5aFltdE81SlZVT0tRdjg1bU15K0dGY0JyZXNIUkovSTFYbHc3MXBQN0lkVVU4UkdBVFRzTGJrZ3NkS2dUZzMxV2V0Slc0ZnFpRG83SkZSQmNldnhQZHhxWHhhQWhYc3RaQ29vbGV4VVA1WURXeStwVEdnQnExdzUzRXZIZzhuc2FqNGRSVnRKVjl2Z3NUS2FVaDBFOUFOQkl2YVcycDdFcGxqN0UxTW9aSlB6R1c5QVZrS2dGU2FpNXROUkNCTC9wWFJVNitJYjFnNFphQ0pWT29iR1kvL3ZXYXgwYXdXSXR3NVpCcytrbXBveW5TalRnZ1JleGtwNER5VWJKRWJlbjloMUlSdHVQcUFEbVFXTVp3eG9rREN2REJiM2ZibU5BUEc0OWVUK0xza0FNTVY0YVRPbSt5MjVodnNwNVpYRW1PY25WaDBYc3JIY081ZlNRY1JBTmpJSkdGbE5SSkswOTllcm1uQUlGRjFXNDlUdmV3V0l6OXl6eVN0dTRpMkZJMlJRaHFTRHhDcnUrWW4xdnA4dWJpN0xJSkdLcmNDZUVnNFl3ejZ0MDlhalFCbzg5OE9IbGZSN3k4bGNGY256Q2hBclZoSHR6YWNqNjhKOEpZNlpyTjlUenVjT1l3L0pCNGtTYTMvaVlVZG5HVmsyZW14V0JneXRDQmhqdEVlcmRIcUdITENLSm5VOUI1UWhtUHM3ckNydWMwUkdTTnNPQVdkVlZSOGRLeDAvVVVRdUN3U0p3QXBaQkltUjl5ZDJVY2pHTXNmK2tGUUR3RWNqWUF5ZDhHOVZWWDNxb1BEVXE0N1BrQVBXaWRGWGg4cm4vd3dtczVEOWM3cEpueGZ1bWJCeU9Kak1RdWJPWDQ2cmh6WE9OL1ZqT1JGeFdHQjdhaDBrY3F4YVR5VjVCTVl5RWM5UHJGVEk1bDZ6b3U1MHp0U0RZYWMxN0doRkZPaU4rWFQwcUZXOXNRcHJlQnpBdmNvcGU1MlFvbkJmRENhekM2M1NlWHRUSDcyaFB2UnhZZEwxVncyWVR5S2ZqZnJKSVMwU1A5d2JGMllaRmxhQjFucWZKV2RPOTFRdTZhYmZSTnlmV0hWUXlNWnlOWkVLaUVCRVdsMDhVaXBxakpWRlZpbVFyUGwwZE5uQkh0NWpCWXp2R3ovdkZFekVEQkFmNXRNUktlRytySU9XWXZaNWExWFVlcktTSUxHbnNnb1NKZGIreE5pRmJDeFgvaWhzQVhSQUUxbEhTa1AxZEV4YU9SSjMzdkhlM1M0OE0wa2JoZlVxYlVuZm1mbDdZVlc4djdJTEVodjdFMk9JV2NqRzhpWXNNY2NleUlMMkxZYkpyTitkVnhVcFRvQmtxYThlZHJCbnR5dmZBa1NxbWZyVDhXaVdEam8rSzl1UzlTSkIzeVo2MEpEalNtTGRRUHpSZXNMSEsrMnY4SDVQWDQxdlJ0SmRnQTdOcDZNYjUwRXlRU0tTMXFOQXNRNFFPZWc5SHVzcXV0bG5ZQ203NUUzcmlmMndpdGhqV1FhSlZmdzlEKzhqblUxbXVYR2FQVXRBeHpSbzlMb1hTVGRGOG5RUERBdGVrU0JBN0laMWx0ZWJBakt3UE1hcEJJazlsbTJRS0dIdzlkUjYxTWRWaEVJMmxvMWVTZWtUUUxhMG91Z3hvY1ZLSXJKUWNLQklnTmdkajYxQXVXZGdlYngrZ3NRZXl6cElWQ3BMckJTQkF3V0ticlAzS3FsdjJZbHlrQytRQm8vT201VkU1T2Fpb05UVDBGY2ZFU0IyUStNbDYwV0M4MXdMZ2cwbXM2SEQyWjkzN0xIdHQ5eFhFbVB2VHp5T2NKYU81ZGxuaDZ3bUF0MXptQUFDc3FCRDdFTy8rWitxcXY2TWZCeUZsM0FPNGdrRDZNNVpyeVllWkx5YTZESFc0N3p0bnNzK1NLemk3MDk4NDF6STVzWjRwdldTVXZsQUV1aHcwUnVoM3hsTVpxRnYvcWVxcXJOQzNuZFl1WHJOT1lqSnNKeFVyNDF6MjV1bzErdHhqOUZuOVZ3UlFhTEUzSi9vVnNoR001T21leE5KT3dXU3dLb0Rla0g3OSs5MW1IMEp3c1R0aC9sMGRNU1pjZCsvMzg0NVpXZ2NPQVdmbmp4ZTc1MCtYL1JZTVVGaTVQMkpsWE1oRyt1ZzdwM3kxUUYwaDcxTEtKNzZ4VnVkTTV5N2I4R2g5aDdtUE5scTNmYWt0TkxtRVNDOXlXWE1wTmRwZmV4RkZXRnJGVEpRMGtwaTdQMkpib1ZzTkh0ejNYcGlQNjVGZHdDOHlIclEwZnNWRGFTbEVTRG12dS93U1dPSmI4Rmg3bnNQSFY1L01wV1Y1OVBSbFZNeHBGekdUQjVCOGpPcHBxaEtDeEtyK1BzVFBRdlpXUCs3aDl6MFFLZHlQNE1MV0VuN29uSU9FRU5nK0ttcXFuOHJyZlN5c01JMGx0dHhVanQ0M2lOUU9rdzk3VlQxTWF3cm1nWlhGR1ZDVldLUUtESDNKN29Vc3RHK0IrdGc5NVdxekFHSXozcGd4VW9pVW5KakhDQ0d2V1p2cTZyNlhjSGJYZXR2N1AvdlgydkZzQTRNeHdVZmFVM2dkYmdBQUEvNFNVUkJWR0c1dit3NHNlSXVsMDZyaVdlcFZvalhxdjM3MWhNMmN0dVRDU2UvbFBqQmhoa1FGWmI1dS9Xa2oxREk1bDZIWmxzYU8rU2FoMFl2ZkVZY2pRRkVvb0dHOVFvTGV4eVJCT01WalREQmU3NVFJT1o3MzZvVXdEcmRjVmtLOTVGK3ZpNjVSOEsvK2JXblp4dUc5LzZxOWVqdXpsTXBpcWN4MzZWVDBQUjVNSms5cGxTd1NQZUFWMmJZTlFWclVDc3lTS3kwUDNFd21ZVVp3byt0SjMyRS9QV2haZWNUYnRUQlpIYnRVTnFZUUJHSVJCMjY5V0RxaVhRZ3BFRFh0OVdSRUNGQVhIditvSjZyQit5c3BtL3UxamlJU2laSWxFdGRoeDdwempmVzQ3czkzVGdXaHFJYVByNHJOZDMwbThqN0U3MEsyWXdkMHloSVBRWDhYVGgwNkF5T2tRckxnWG4yUldJU1poM2dIS2FVaXFucnhpdkFDZGYzYlFwSGYyamNacmtpM01RcUluNVNkSkFvTWZjbm1oZXljVzc0UXFCNG45dkJzYlZVem1wQ1hHRmdrc3MxcTBHVXgxbHhGS0ZDS3F4V0VaOVZxUklPTkphdzN0ZDVtVklGVUMwTVdKK2JXT3M4VUZTQTZIRm9mcVhGQ0t0N0dZVW9Qa2pzNFB4RTgwSTJhdmlzRy9kYUNHenZ0WWN6Q3lIdFl6Q1poWldVdndrVSswVURrczlWVmYwVHJvRlVpd3BVUHdMRXo2MG45dmZzc1A4WjJKcjZEYXRWUlBiWStyTnVOdzRTUEUvUHMwK29BOFdvL1U3bzk1d0R4SXBWZkN6VGg1WEUyT2NuVmlwa3MyeEQvVDdPbmRKT0t6VjhmdzRtczV1VVYyaTBnaFJTSWY1cXBGc3c4OVV2emNtTVYzVlJnVEF4azlLMU81ak14azRCWWtYbE9TUWtpd1BIOFoxSFFQZEc3VjBTTk43NzRQaGFEdFR2UkZsRmJSd3Q0eGtnUG1neEF2aEpMNExFS3Y3K3hFb2JuYzBHcmNvVDk1NjllcU5WeFl0VVVrakNaNmpYODFXRDdzVzlYZG1zZ01MRXN1LzdVQVVaL3RGRVIyZXJpN3BlYjUwTFpwR1NoMVNReVpFUnJSUjVqSU0rSnJZLzhjSXg3YlQyVHVNbHQ0a1NmYWIzVG1jaDFwNGpqQzJScWQ0RWlSSnpmK0tCQWtXellFc3BadGV0SjJ3ZGFNRDlxSm15NktzelNxMDQxMkQ3SDcyZVZTbE5Cem1seW1KM3VwZGVPaExtaldaNVEwbjBxMWpYaHE3WkMzWG9Ya1VGS2dvTElER1cvWVBuZllNZnZGYU1QcXZOVFdXUDRxbGo5bFV0VEZEK1paMkYxZGhTODNuTjJNZktSVStQaE1FR2VoVWtkckEvOGRpNlFkYXhGZDR6WkpVYXBuZk52VitlalgvWVd4aFNWdFF3L2tlTjQ2YURCb0xFZnRqbWV6NVFlczZmellEUitocFdaMzZsYTNiZFpJWUZDZ3NnTmFaVmUxUGVZMXdLbmZmblZlUGdUS3RyblgrUGtiS3ZhbThhbVN3N2owZlVSOTB1YktueGRFMmFLZFlwOXB6RVZUbzRQL0ZNQisxYjNvaERyVmg0blpPejZGVmovOWVEOHVQRHorTzJNMUNOZzVEckE0K0grdk0rZzJ1Q3hIN1k5WHV1QThadmV6b2ExL0M5cnVHTmo1TlFhdEdKZml5TGRteUN3Z0lvWGRoYWNNTjE3dTVDZ1lpSFE0MFZMbFFvSjdTdlgwTTcyK2ovYTZFOS9UNG1tRTlIcHBsTElmc3E4bmp2amZab1BqZmUrLzJxY1pKV0grdStaQmh4VEZkcHNZRkpSNnpWdXlDeDB2NUV6ZmJFU20vNXFFRFI1R3l6MElIcTlkOUdIcVJXV2gwOXJzdjZoMFA1bGNMN1VncmNrV01EK0MzbGxJcVA1ZG93MVhSVHg4MDlIcnFHbjErb3JyanZSTWErN3BqeFJZS2VqTnYxUTFXUEhCSW8rbEhBZHVjOEJqclVPS0U1VmxnckJFM1c2ZlFhNzUwNEYzNVp0RGd4V1MzME1WMzNKK0cxbkhLUDRTVjkyNVBZRkNOZnZjbTZrTTI5WnA1aXZvZFZEaHVyamF0K3ZHZklXRTBzbS9mM2U3RGl1cTEvdXU3UVNjTkRpanoyeHg1clQvdzRwVFA0Q3BSaW0rSlNCRWJiZEx6ck9iemtJS0grWk1qZWRteWl0MEZpQi9zVFBRclpwQlFvZG8wZ3NXeDkvbjdwMEpHcWRhdnYremhRaXVDajloT2ZwM3c4VTQ3VXBuZ2VGYkVMdDNZK2tVQ3hhM1dBU0tFYWJLU1g2YVkxcFZ4OFVNR0pHT3BDTm1ZemVOcGpPZXdvOVRRbEllWDBoTWF2UE1hcHBybDV5eldOaE4zVzZZUk9GdFAyNnBTOThQTlZLNW5OQ1pSN1V1ZzJGNDZLME5ZVnp5TVd0dUY2N21ZSUZKWDZHVFAxTkJVRWlOaGFyNFBFNmtjak9ZeTRQOUc4a0UwalVMeEtxTEh2d2prYnNZdlUxMVhFRUNCeUppSlNackxQZmd2TmxMMmxOdG43OW9MRi9jbDFRSHBmRjJCWi81OW5aNmhBTzRWSjVnUHRSM1g3akJVbzFzZEw5TVdUOWlBU0lHSXJmZDZUMkJSN2YrSkg2d05ZRzZtblhxV3RjMERLYVpuNnRoOHZ0RVcvRXlBaWRWcTFLeTJGYjNGLzhqdGxHLzJwTS9IbVlhSlhhYkJqRlVYSmxyN0RsTGF0dUs0bVZ2OTl6NkZ0ZmQyVHJUcWhpaWxaVnRnSlFXSTMreE1yNjBJMmxkN0hmRG9LRGV5bjFwUDljSmg3aDQyZjZSNVp1V3BRb0NlbEJGR3BGN25vNDJUR3NWSVd3NzdKdndlVFdiMTNNc3VKU2dVUXFXVGhSUGtNdFZwNVV2akUrcWY1ZEhSQ0NqWjJSWkFvYWpCaWJ1STJMMlJUbTA5SFk4MlNQYldlTEI5VklNdlNwOVhoTzJaOGtSdm53OWx6Y2FpZzhjL0JaUFpWQVdOV0U1WmFYWHVid09yYWNheXF0cUY0anliV1V5dmdzNjg2RzRYdE45Z0xRV0pEMko4WXViT3JDOW1ZYTh5UzlXbFY4VTRIMktJY2ZSaUFoZzc5anpCWVljWVhtVHFueXZaM2RiR2RzTUo0bTlQcW9nTEZGRkpQM1ZOT216VDIrNjJRdmlha2Z4K1JqUUlMQklsdHNmY25oa0kyTHJNOVNqK3RWeFZMSG1pSFJ2RzFCdG1sRlJYb3RiQ3FwcG5lMTRXV0wvK2kxVU1PeWtlMmRKekNCZDlneXl1dExqNWExeUh3b2t5R0UrMWw2MHIwd0xxeHF2aDdwbGxZZHhvSG5UUFpDQ3NFaVFzNjJwOW9Yc2ltS1FST2F2emVGcFNDK3F3VWtkL1VLQkljRmt6WDhMbG1lLzhvNERxdU8vUlR6a0JFQ1RUUjBmZHo2Rlk1Vk5HYjJ4ek9lMVRBZE5KaEdtWm5BWFZZZ1p0UFIwY1pqWmVlVkFtYlNYS1lJMGhjb29QOWlaWFgvc1Nta0VyU2FQeHlYVm44b2x6N1gwT0tDQVBzZnRIZzVWTFg4YitWVHAxVHdQaUZWVzhVYk56eENsVHF3c3JpdlZmMmtMVU8wekFQdXc2bU14Z3YzV2tzZEVRbGJIZ2hTRnloZy8ySkI3SE9uRkxqTjJ3TXNsUGZTL0pGRGZXL3RQSkNyajNxVk5SeEkyRDhrT2dBOVVtcm43L3AraVU0UkpFYXh5bjB2WkROT2dmS0hycU5WYUJsSDQwMHpOZnFpMk5KWWk5blk3ejBXd0tUa2s5NkRiOXBvcEd4RUZ6MS9qRDlGNXhHUG1RMlZQVzZVbHFkdTBiWjY3RTIxdy8xbmc4anZkOVY3aFF3M3pLZ3hpWjBMWWVmQ3cyOGh2bzU2ZWdJalMrNmhtOVk3VWFmMUlIaVlESzcxQm1EV0M2MFM0ODZQRDc1aXNicWkrdDAyVk1WS3pwdS9jWDlQRFQ2L3FRQ0lMWGo5WGpwcERGZTh1NWY3aHA5Q1pXdkVkVXZHbGk5ZHZpbDJWL01vYk5UWTVEOEhvSjlxVUcrVVFONHBNRjFQY2crY1FpVW4zV05mTlgvaHAvSHhCckJxMWlydXdrS25hSFZMSGZVVGZRYXBONDBLOTNxUHE3djVhSCsxMkl5NUVrVFNmVTFmSjloUjI1OW5YdTlmOHQrS3JmQTNmSzlSN2srd3lyL1lESzdVVUdiUHAxMXVvMERCVjVaQklyVmoyQXBUQUJjTmliazZ2YjFWLzBzQm85UFMrNjV1djkvVk4rZlRWL2JtSlQ4Vm5CTU5TWHEvdVZreC82bEhoTTlOdnFTbk1jZjFyRkZUdjFxTVdQSHdYdytiejBJTExOUVhHZVRqZVgzaXdFQ0s0TklpU1pFNmttZ294Y21oSnJYN2lNcmhNQm1sS2x5RlRFckowZS9rejVZRmdYUkw1MlhlVTgxVXFTS0lCRUFBTGhRa1pZTEFzUVhoWldrYkZZVUFaU1BJQkVBQUpoUzVzbmxrdFJEclBhc2MxUEpVZ0RRT1lKRUFBQmdRaWwyRnhTdDJkbURWaFJKUVFUUUtZN0FBQUFBZTFPQnFGc0N4TDBjSzhnR2dFNnhrZ2dBQVBiaVhKem1JVktWNUpTcXNMNm0wQnVBTG5GT0lnQUEyTmxnTWd0bjVuMDIvZ1NmdEtmeEtuYnFaYVBxY2ZONGg5am5CMTl1VUJrVEFOeXdrZ2dBQUhiaUVDQ0c0UEJpUGgxZHRaN3BrUE1oOHF1OFRlMXpBTkFmQklrQUFHQnJ4Z0hpczRMRHk5WXppVkhBR1BZTm5qbS9zcWY1ZExUdTdGWUFjRU9RQ0FBQXRxSWlOWDhiZldwaHorRnBia2MvUkFvV09XUWZRQ2VvYmdvQUFEYW1ZeTZzaXFwYzY4aUg3TTRHREs5NVBoMkYxZFRYV2duMWNON3R1d1RRVjZ3a0FnQ0FqUTBtczdDeTljYmdFN3RXa0pXOVJ1RHNzVi94WDV5YkNDQTJWaElCQU1CR3RBL1JJa0M4S3lWQXJQNjdxdmhWMVZBZldrL3U3elQyK3dFQWdrUUFBUEFpclpaWkZKWjVMakh3YVFTSzFxbW5CSWtBb2lOSUJBQUFteGdiSFpZL0xqVjlVdS9MZW9WMDJIb0VBSnl4SnhFQUFLeWxWY1JIZ3lDeEY4YzZEQ2F6c0QveFZldUozZjJXWTNFZkFQbGlKUkVBQUx6RWFoVXgrWE1RalZnZmdzOTVpUUNpSWtnRUFBQXZzVXFodEE2ZVVtVjl0dUZKNnhFQWNFU1FDQUFBVmhwTVpxRnd5dUdxNTdmdzBKZWpIUFErTFN1ZC90cDZCQUFjRVNRQ0FJQjFyQXFuM0xjZUtSdG5Hd0xJRmtFaUFBQll4K29JQmdxdkFFQW1DQklCQU1CU3FtcHFrV29LQU1nSVFTSUFBRmpGc21CSzM5Sk5BU0JiQklrQUFHQVZ5NFBjKzFhaGs0cWtBTEpGa0FnQUFHQm9NSmtkR1owckNRQ2RJRWdFQUFDcldCN2kzcWVWTmNzVjJJcFVYUUN4RVNRQ0FJQlZDQkozWTFVUnRzWnhHZ0NpSWtnRUFBQXhIQ29OczJpcUNQdkc4ajNPcDZQYjFvTUE0SWdnRVFBQXJHS2Q1bmplZXFROFkrTjM5TkI2QkFDY0VTUUNBSUJWck5NY3gxcHBLNUxlbTNXUXlINUVBTkVSSkFJQWdGV3NnOFFEaHlBcUpWY09WVTF2V284QWdET0NSQUFBc0lySEt0Yjd3V1JXWEJHYndXUjJhcjBYVWRpUENDQzZ3WHcrNTFNSEFBQkxEU1l6ajRIQ1U2aDJPcCtPaXFqYXFhRDMxbUVWOGN0OE9yS3VsQW9BTDJJbEVRQUFySE8zNXJsZEhZYWdxb1Q5aVk0QllxWDBWUUNJamlBUkFBQ3M0N1VuN2xpQllyYXBwODRCNHROOE9tSS9Jb0JPRUNRQ0FJQjFQRmV6NmtBeHU1VEt3V1FXQ3ZEODdSUWdCaGV0UndBZ0V2WWtBZ0NBdFFhVFdRZ1V6OWI5SFFNaHJmVjhQaDA5cHZ4dERDYXpJd1hPcjFwUDJnbXJpRWV4M3hzQTFGaEpCQUFBTDRteHFoV0NybjlDUURxWXpJYXRaenNXZ2tNRnkvODRCNGdWcTRnQXVzWktJZ0FBZUZHazFjU21CNjNZM1hTNXVxaUE5VHppZTcrYlQwZkpCY2tBK29VZ0VRQUF2RWhwbHZlT2UvRFdlVkNCbUc4L25rZG5xT0xxVUQrbnFzUWF5M1A0dmZQcHlPTjhTZ0RZR0VFaUFBRFlpSXExZkV6ZzAzcFd3QnArdmpZT25IL2NkTlZSd1dCZFdUVUVoRWY2ODNIckw4Znp4M3c2dXV6dzl3UEFOd1NKQUFCZ1k0UEo3RGJDbnJ3K3VwNVBSK2Q5L3hBQXBJSENOUUFBWUJzaEJmT0pUOHhVU0tjZEYvUitBR1NPSUJFQUFHeE0rd0ZQbGZLSi9UMW9INkxiUGtzQTJCWkJJZ0FBMklvS3F3d0pGUGRHZ0FnZ1NRU0pBQUJnYXdTS2V5TkFCSkFzZ2tRQUFMQ1RScURJSHNYdGZDRkFCSkF5cXBzQ0FJQzk2RGlKRzZxZWJ1VERmRHE2eU9CMUF1Z3hna1FBQUdCaU1KbUY0T2M5bitaU1liWDFmRDRkM1M1N0VnQlNRcm9wQUFBd29SV3lmMnUvSFg3NEZBN3FKMEFFa0F0V0VnRUFnTG5CWkJiTy9RdEI0MEdQUDkyN2NQNmg5bTRDUURZSUVnRUFnQXZ0VlJ6cnAwL0JZZ2dPTDFnNUJKQXJna1FBQU9DcVI4RWl3U0dBSWhBa0FnQ0FLQlFzbmlwWVBDN2tVdy9uUkY1VlZYVTVuNDRlVzg4Q1FJWUlFZ0VBUUhTRHlleEl3V0lJR2c4eit3YWVkZVRIelh3NnVtazlDd0NaSTBnRUFBQ2RHa3htSnpxVS96VGhzeFpES3VtdEFrTUswUUFvR2tFaUFBQkl5bUF5Q3dIalNlTW5kbXBxQ0FoRDZtZ0lCdS9aWXdpZ2J3Z1NBUUJBOHJUYStLdFdIQ3NGa0w4Mi92OG1CWEdlRlB6VjZ1RHZzUTRLNTlQUjE5Wi9CUUI5VWxYVi93UGhXSzN0TVBWdEdRQUFBQUJKUlU1RXJrSmdnZz09In0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjEtMDEtMDQiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJWZXJpTWFyayBEVCBGaW5nZXJwcmludCBLZXkiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlUyRjEwMDAyMDIxMDIwNDAwMiIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4yIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjMifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjEtMDEtMDQiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6Mn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNC0wNi0xOCJ9LHsiYWFndWlkIjoiNGZjODRmMTYtMjU0NS00ZTUzLWI4ZmMtN2JmNGQ3MjgyYTEwIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI0ZmM4NGYxNi0yNTQ1LTRlNTMtYjhmYy03YmY0ZDcyODJhMTAiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiWXViaUtleSA1IENDTiBTZXJpZXMgd2l0aCBORkMgKEVudGVycHJpc2UgUHJvZmlsZSkifSwiZGVzY3JpcHRpb24iOiJZdWJpS2V5IDUgQ0NOIFNlcmllcyB3aXRoIE5GQyAoRW50ZXJwcmlzZSBQcm9maWxlKSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzYsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfSx7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsiZWQyNTUxOV9lZGRzYV9zaGE1MTJfcmF3Iiwic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciLCJzZWNwMzg0cjFfZWNkc2Ffc2hhMzg0X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRFNEQ0NBakNnQXdJQkFnSVVVY21NWHpSSUZPZ0dUSzBUYjNnRXVaWVprQkl3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRRG01NTViV1k5V1crdE9ZMHJJV0hsZGgrYU5hbm9DWkNGaDdHazNZWnJRbVBVdzBoa1NHNnFZSFF0UCtmWnlTMzNWRXJ2ZytCUXFubXVtZ05oZnhGcmt3RVpFTGVpZEJjQzhDNEFnNG5xcWlQV3B6c3ZJMTdOY3hZbEluTE5MRmNaWS8rZ09pTjZaT1RpaE81L3ZCWk1iajlyaWFBY3FsaVltTkdKUGdUY01HYUVBeU16RU1OeTJubTZFcCtwalA1YUY2Z2kyMXQvVVFGc3VKMWoyUmoveW5NL1NkUnQrZWNhbDVPWW90eEhrRmJMOXZ2djJBMk92NUlUWkNsdzRiT1M5bnB5cFFpbU9aNVFBWXl0bVlhUXBXbC9wTVl6NnpTajhScWtWRE5FSkdxTmZUS0EyaXZMWXdYNmxTdHRNUGFwZzBKODRsOVgwdm9WTi9GcFM0VkNWQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJRZ0tGQWhHNlJhVytoVHk1MmR4ZVQ4YkM5Nkh6QWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQVlNemdMckpMSXIwT292UW5BWnJSSUd1YWJpSFNVS1NtYkxSV3BSa1dlQXRzQ2hERUhwWGNKL2JnRE5LWVdvSHFROHhSVWpCNEN5ZXBZZXZjM1lsckc4bzd6SHhwZlZjYW9MNVNldUprekh4S240YlRhU3A5K012d2FtbnA2NGtaTWlOYkZMa25mUDlrWUtvUkhrTVdoZVJKMVVzUDF6NFNjbWtDZUlMZnNNczZ2cW92cWpXQ2xGc0pwQmNzbHVZSFdGN2JCSjFuNFJ3ZytBVEVvcFk0SWdHdjZadndjK0E5citBVDJocXBvU2tZb0FsK0FOWXdnc2xPZjlzSmUwVitUQTlZWS9VbGFCbVBQVGQwLy9yOXd2Y2VQV1prUGpLb0FDL3pVTmhmRGJoNExWOEdIczNseVgyWG9tTC9MTmM4Sll6eUlhREVoR1F2ZW9QaGgvdHIxZz09IiwiTUlJRFNEQ0NBakNnQXdJQkFnSVVEcUVSdys0Um5HU2dneGdVZXdKRkVQRFJaM1l3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRREk3WG5IK1p2RHdNQ1FVOE04WmVWNXFzY3VibHZWWWFhUnQzWWJheG45Z29kTHg1c3dIMGxYcmRnamg1aDdGcFZnQ2dZWVg3RTRibDF2YnpVTGVtck1XVDhOM1dNR1VlOFFBSmJCZWlvVjdXL0UraFRaUC8wU0tKVmEzZXdLQm82VUxlTW5mUVpEclZPUkFrOHdUTHEydjVMbGo1dk1qN0p0T290S2E5SjduSFM4a0xtelhYU2FqMFN3RVBoNU9BWlVUTlY0enMxYnZvVEFRUVdyTDQvSjlRdUt0NldDRkU1blVOaVJRY0ViVkY4bWxxSzJieDJ6Nm9rVmx0eURWTEN4WWJwVVRFTHZZMXVzUjNEVEdQVW9JQ2xPbTRjcnB3bkRSTFZIdmpZZVBHQkIvL3BFeXp4QS9nY1NjeGp3YUgxWlV3OWJuU2JIeXVyS3FiVGExS3ZqQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJUcXQwS1FuZ3g3WkhyYlZId0R1bnhPbjlpaFlUQWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQXFRYUNXTXhUR3FWVlg3U2s3a2tKbVV1ZVRTWUt1VTYrS0JCU2d3SVJubHc5SzdIZTFJcHhaMGhkd3BQTmlrS2ptY3lGZ0ZQemhJbXdISmd4eHVUOTBQdzN2WU9kY0pKTmt0RGczNVBYT2Z6U24xNWNGQXgxUk8wbVBUbUliOGRYaUVXT3B6b1h2ZHdYRE00MVphQ0RZTVQ3dzRJUXRNeXZFN3hVQlpxMmJqdEFucS9ORFVBN2JlNEg4SDNpcEMrLytOS2xVcmNVaCtqNDhLNjdXSTB1MW02RmVRdWVCQTduMDZqODI1cnFEcXNhTHM5VGI3S0FIQXc4UG1yV2FOUEcya2pLZXJ4UEVmZWNpdmxGYXdwMlJXWnZ4clZ0bjNUVjJTQnh5Q0pDa1hzTkQwNWRDRXJWSFNKSXMrQmR0VFZOWTlBd3R5UG1ueWIwdjRtU1R6dldkdz09IiwiTUlJRFBqQ0NBaWFnQXdJQkFnSVVYemVpRURKRU9UdDE0RjVuMG82WmYvYkJ3aVV3RFFZSktvWklodmNOQVFFTkJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNWjYvVHhNOHJJVCtFYW9Qdkc4MW9udE1Pby8ybVEyUkJ3SkhTMFFaY3hWYU5YdmwxMkxVaEJaNUxtaUJTY0laZDFSbngxb2Q1ODVoKy9kaEs3aEVtN0pBQUxrS0t0czFmTzUzS0dOTFp1ano1aDN3R25jcjRoeUtGMEc3NGIvVTNLOWhFNW1HTkQ2enFZY2hDUkFIZnJZTVlSREY0WUwwWDRENW5HZHh2cHBBeTZua0VtdFdtTW53TzNpMFRBdWNzcmJFNDg1SHZHTTRyMFZwZ1ZkSnB2Z1FqaVRKQ1RJcStEMzVod3RUOFFESXYrbkd2cGN5aTV3Y0lmQ2t6eUNpbUp1a2hZeTZLb3FOTUtRRWRwTmlTT3ZXeURNVE10MWJ3Q3ZFenB3OTF1K21zVXQ0cmowZWZuTzlzMFpPd2R3TVJEbkg0eGdVbDVaTHdyclBrZkMxLzBDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01COEdBMVVkSXdRWU1CYUFGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFNd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkRRVUFBNElCQVFDM0lXL3NnQjlwWjhhcEpOanh1R29YK0ZrSUxrczB3TU5yZFhML2NvVXZzcmh6c3ZsNm1lUE1yYkdKQnlKMVhucXVCNXNnY1JFTkZ4ZFFGbWEzbWlvOFVwZjFvd00xWnJlWHJKMG1BREcyQnBscWJKbnhpeVlhK1IxMXJlSUZUV2VJaE1OY1pLc0RackZBeVB1RmpDV1NRdkptTldlOW1GUllGZ05oWEpLa1hJYjVIMVhnRURsd2llZFlSTTdWb2xCTmxsZDZwUkZLbFg4dXN0Nk9UTU9lQURsMnhORjBtMUxUaFNkZXVYdkR5QzFnOStJTGZ6M1M2T0lZZ2MzaXJvUmNGRDM1NGc3cktmdTY3cUZBdzlnQzR5aTB4QlRQclk5NXJoNC9IcWFVWUNBL0w4bGRSazZIN1hrMzVEK1dWcG1xMlNoL3hUNUhpRnVoZjR3SmIwYksiLCJNSUlEUnpDQ0FqR2dBd0lCQWdJVWV4OW5UOXZ3Wk5YUzQ4M0xkaVlHZncyU2pTb3dDd1lKS29aSWh2Y05BUUVMTUM0eExEQXFCZ05WQkFNTUkxbDFZbWxqYnlCQmRIUmxjM1JoZEdsdmJpQkpiblJsY20xbFpHbGhkR1VnUWlBeE1DQVhEVEkxTURnd01UQXdNREF3TUZvWUR6azVPVGt4TWpNeE1qTTFPVFU1V2pBbk1TVXdJd1lEVlFRRERCeFpkV0pwWTI4Z1JrbEVUeUJCZEhSbGMzUmhkR2x2YmlCQ01pQXhNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXUxTWV2bnk5ZHlPOVpVQzM5U29NaExjUi9EWHJ0Ri9jaU0xMnRjaXkyRVhBWjZNa3JpdlZ0Q2ZFVk05WDZJU1RFbkJQNnVTWVlvdjZwcHY2TzZKaDJOSG1ZbTR3K0puUzRWbkNQVTdtSEFNZlZJMk1HVFRNVk9ldzB4VXNHN3NJU0lrSURVQm11azhZSzljNXppYzkrdkZRR0xJa3NkWE81aVZGSWdORzUzY0dYRDRaTFpvQVBpdTBQRW96eEFxWUlhSTRneEtoT0EzUzgvVzhtSVdzdTZvZnlqNEd2a0ZHNlo3a3lGMzEwN1A3bXdGSExySTNFTmFQV01PRmNUYUdhMGR3Ky92VlJ3alJjRVpCVnN1dVQvODdja1NzMGE1cGt0M3ZaQmxhWWVUOHB6U3JlVjdtb3djSU05MEwyaWFBVGxQMG54bWFFNm5PeVRib2pGVmwyd0lEQVFBQm8yWXdaREFkQmdOVkhRNEVGZ1FVU1hFaDNzYTNidER1cm00TU0vQzdTMWxSdXVZd0h3WURWUjBqQkJnd0ZvQVU2cmRDa0o0TWUyUjYyMVI4QTdwOFRwL1lvV0V3RWdZRFZSMFRBUUgvQkFnd0JnRUIvd0lCQURBT0JnTlZIUThCQWY4RUJBTUNBWVl3Q3dZSktvWklodmNOQVFFTEE0SUJBUUI1R2MzaGFmdHA3aEtzRVpzbytpL1o1blJ1cWRtekcyV0NsVW9SVXFiYVB5Z2xuSkRqS1Iva2ZnT2w2aWJiRi96dGhtM0ttWFE3SGNESVAyeE1kRzdVMkwyaW1iSlFIcVBmL2gySHFvamI0clpndWUrNlc0a3RTUjVlbFI5TDFyWXFFL1NHWU00aUVLb1ZRU3Y3UlQxcnhJZVdpS3N3L1Z4eGkvUU9uc3gzRjd4ODBDQ1lnQjRFM3lReDhWVFc0NDBoVEV3VEExZU1IT2l4MzJ0UHR5eUhJYThQVlZJZlZwSFFKQmFNVnZ2NTA4VUVqd2tiVTJybmpmem9TVE5TOUE1alVROG1CU3ZlOTVyakIwZG85OEVVK0R4ZEJxWDIrSDZpNXdsSUNGZ3poZHpjc25lOWhHS1Q2bHpUWDRjSWRKc3JZMit4bGVLMEZGUXk2bEdFVkxFZSIsIk1JSURTakNDQWpLZ0F3SUJBZ0lVVG5iYkdJUjJOSHZ6cUlLRkFlUXdHMVhCaXMwd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JCSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVFZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU9zWGozazA0QmFuNFRZZHRaS3FEL09QSnh5RHlhUG1DQlVGVWlhWklnVHRlWm5qM1gyNURoZ3BaWlhzQzREMHlkSWNybEE2d05VSW5PUkwvTDl6QmJURUlNQVZNR282ZzdVS0FtYjJNRjZBSGJuaFlKZDllaWt1cFZOV1NoSE5ZTmM0R0JkTzFZTjZBZlVxdkpoSGJlM1Y0U05NUG1CUkVLSlBWejdUaHdnbWdnVGU4V3MySzAvd3NxdjJ3U0U3cGJDQnNVWmhJWDUxYlpNM3BxRHdKUFRtUkZFdnQwLzZ0RzVlTzhGM2oxNE9YcWZFaG1qbjFWdnhLRFlRT0xaQXhDd3dnQzBQNENkZld2M3k4UFNSOEkzNTRoTzFZK0d6Tmp2SXFYMzhOS0x5d3VJWUhGZXJPeE5seEVNQnZGaFlCdVJ1WUFra2dVYVBxTjZVQmhzSUxyc0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ0NvUkhoaXlObmJuWFJXSUw2WkJYb0JYOVlUTUI4R0ExVWRJd1FZTUJhQUZDQW9VQ0VicEZwYjZGUExuWjNGNVB4c0wzb2ZNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUNRRmFmSkkxLzVXZzlDRUVpbUUxUlA1NFJnUXdUTlRPT1FzTEFDVGUrckl0bEZRekM5WkRoclY4Mjh5WDdqenkrQUFzcDNpeks3VDF0aDJkbDdtK3R1MHN3MlBhL29sYzAybnQ2UHlJdzM0OGdhSHpoSTErMEtFNDVxeHZGRGVMMmxNeGJQZkNZdnlFRWFZemppUUVMVTU5NTFwWEdXeUtNYS80Zkx0TytaS09YaE11VmVxNHJYRFBJNTRXNkpIT2lBYWlLZGl3KzVlM2Mya3QvakZJUXRNNnZNWGc5TE5GemRqRVROdDIwVlg5UWV2UnBGWmZ1Y01HOXdDYVFEb0ZsUHpwVE1KS2hQZXYvaW1KbVpZaEtmcjBsTGNlbXRxakl4TEFvcVpkT1lmSEJnNit2QWNkUEkvaWF1R3BVQXY3WCtVS05tRHdqWjJCYUg0c0x3aEIybSIsIk1JSURTakNDQWpLZ0F3SUJBZ0lVUjM4bXEyNlNmMnN6VlYyQmRHNldFTjdrdVdVd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVJZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU5ZMFdiOW9Qb1JvS29ReVdQYUpwejExdnJXVGc2elR0bU5qMlZvS1JueXZLR1JxcHpiODN3NWw2WUE5NlVZa1lCRFFQMGlsTzJEUGU2d1dxVlI1ekRmUnpkY0g4YmgrTDdkR0d2YWU2aFJUWmhrRmtDcFhEczRIY2NrbnJEZjhGQ2xKN0hlMzlKZjQyL0cxUW0yeno5V1dtclBYdGdpSy94MDVHanNRZkd1REcxemY1UVRVVWllOGx3eW1LM1RmZE92TmVlSkFBUGUycG43SXRmUmIrclZyTldpRHpsUm4ydk5uWjJ3UG80d0gvV0o2ZGhYWkcrck1XVCthNkJvY2cxVWZJdzZrZHVuRzRiVHBaenN2YWNGWXlSMG1wZitEZU9ucFNXQW15d0pXSHZUbGYyWVh4RnllWGNUQUNkUWxjTU5HSjJWaFpRNDh4dFA1L1JCUC84a0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ2h5NDJva2lxY1RTMWlxYS9IUldqa0JuNEgvTUI4R0ExVWRJd1FZTUJhQUZPcTNRcENlREh0a2V0dFVmQU82ZkU2ZjJLRmhNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUFuK1JISVBidE1FRE5kVDFnOEgvUml0QWtVZExnQXQxdFdHV25sajlrbmJ2NC80R2xYN0M5cDQ1ZWZQTzkvYVpMNk9WMVhSS0JpNkttdEJXNUs3bnVZRW5NeC81QnFCU2JMVDdyaGR1QzQ5VEJlTWI5UEhkWHNUbFNWTlllZnIxZEdpZHI0ajB4VkJRTGIxcmtuREFiZFdEektmdm5heUtPOEZyd2U3SHg4NDNNRy9ySitjMFhydVV2YmZWVENITGlJV2hNN29ORGhMOHhvYjZ4VW85S0xLY1NMK0l0WXNPMy85V2I4UTlHanNxTDRGWHNEY0cxU2FZaDdLcGZ1TW1PaXhxekpaTzJuSWljUFlSZzFJMlN1aVVmWU83MHRtZEhjYmwra1NRbVNZdDdycTR2aUlMZzJHeDNqOXJJVHVXVGpiYVVhU1NReGdPbU1TSHV5ek1BQyJdLCJpY29uIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwiaWNvbkRhcmsiOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJwcm92aWRlckxvZ29MaWdodCI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsInByb3ZpZGVyTG9nb0RhcmsiOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xX1BSRSIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsImxhcmdlQmxvYktleSIsImNyZWRCbG9iIiwibWluUGluTGVuZ3RoIl0sImFhZ3VpZCI6IjRmYzg0ZjE2MjU0NTRlNTNiOGZjN2JmNGQ3MjgyYTEwIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibGFyZ2VCbG9icyI6dHJ1ZSwiZXAiOmZhbHNlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6dHJ1ZSwiYWx3YXlzVXYiOmZhbHNlfSwibWF4TXNnU2l6ZSI6MTUzNiwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0Ijo4LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjEyOCwidHJhbnNwb3J0cyI6WyJuZmMiLCJ1c2IiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotOH0seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTM1fV0sIm1heFNlcmlhbGl6ZWRMYXJnZUJsb2JBcnJheSI6NDA5NiwibWluUElOTGVuZ3RoIjo0LCJmaXJtd2FyZVZlcnNpb24iOjMyOTQ3NiwibWF4Q3JlZEJsb2JMZW5ndGgiOjMyLCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6MSwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjEwMH19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTEwLTE2IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZdWJpS2V5IDUgQ0NOIFNlcmllcyB3aXRoIE5GQyAoRW50ZXJwcmlzZSBQcm9maWxlKSIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjUxMDE2MDAyIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMTAtMTYiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTEwLTI0In0seyJhYWd1aWQiOiI2YWI1NmZhZC04ODFmLTRhNDMtYWNiMi0wYmUwNjU5MjQ1MjIiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjZhYjU2ZmFkLTg4MWYtNGE0My1hY2IyLTBiZTA2NTkyNDUyMiIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IDUgU2VyaWVzIHdpdGggTkZDIChFbnRlcnByaXNlIFByb2ZpbGUpIn0sImRlc2NyaXB0aW9uIjoiWXViaUtleSA1IFNlcmllcyB3aXRoIE5GQyAoRW50ZXJwcmlzZSBQcm9maWxlKSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzYsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfSx7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciLCJzZWNwMzg0cjFfZWNkc2Ffc2hhMzg0X3JhdyIsImVkMjU1MTlfZWRkc2Ffc2hhNTEyX3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRFNEQ0NBakNnQXdJQkFnSVVEcUVSdys0Um5HU2dneGdVZXdKRkVQRFJaM1l3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRREk3WG5IK1p2RHdNQ1FVOE04WmVWNXFzY3VibHZWWWFhUnQzWWJheG45Z29kTHg1c3dIMGxYcmRnamg1aDdGcFZnQ2dZWVg3RTRibDF2YnpVTGVtck1XVDhOM1dNR1VlOFFBSmJCZWlvVjdXL0UraFRaUC8wU0tKVmEzZXdLQm82VUxlTW5mUVpEclZPUkFrOHdUTHEydjVMbGo1dk1qN0p0T290S2E5SjduSFM4a0xtelhYU2FqMFN3RVBoNU9BWlVUTlY0enMxYnZvVEFRUVdyTDQvSjlRdUt0NldDRkU1blVOaVJRY0ViVkY4bWxxSzJieDJ6Nm9rVmx0eURWTEN4WWJwVVRFTHZZMXVzUjNEVEdQVW9JQ2xPbTRjcnB3bkRSTFZIdmpZZVBHQkIvL3BFeXp4QS9nY1NjeGp3YUgxWlV3OWJuU2JIeXVyS3FiVGExS3ZqQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJUcXQwS1FuZ3g3WkhyYlZId0R1bnhPbjlpaFlUQWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQXFRYUNXTXhUR3FWVlg3U2s3a2tKbVV1ZVRTWUt1VTYrS0JCU2d3SVJubHc5SzdIZTFJcHhaMGhkd3BQTmlrS2ptY3lGZ0ZQemhJbXdISmd4eHVUOTBQdzN2WU9kY0pKTmt0RGczNVBYT2Z6U24xNWNGQXgxUk8wbVBUbUliOGRYaUVXT3B6b1h2ZHdYRE00MVphQ0RZTVQ3dzRJUXRNeXZFN3hVQlpxMmJqdEFucS9ORFVBN2JlNEg4SDNpcEMrLytOS2xVcmNVaCtqNDhLNjdXSTB1MW02RmVRdWVCQTduMDZqODI1cnFEcXNhTHM5VGI3S0FIQXc4UG1yV2FOUEcya2pLZXJ4UEVmZWNpdmxGYXdwMlJXWnZ4clZ0bjNUVjJTQnh5Q0pDa1hzTkQwNWRDRXJWSFNKSXMrQmR0VFZOWTlBd3R5UG1ueWIwdjRtU1R6dldkdz09IiwiTUlJRFNEQ0NBakNnQXdJQkFnSVVVY21NWHpSSUZPZ0dUSzBUYjNnRXVaWVprQkl3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRRG01NTViV1k5V1crdE9ZMHJJV0hsZGgrYU5hbm9DWkNGaDdHazNZWnJRbVBVdzBoa1NHNnFZSFF0UCtmWnlTMzNWRXJ2ZytCUXFubXVtZ05oZnhGcmt3RVpFTGVpZEJjQzhDNEFnNG5xcWlQV3B6c3ZJMTdOY3hZbEluTE5MRmNaWS8rZ09pTjZaT1RpaE81L3ZCWk1iajlyaWFBY3FsaVltTkdKUGdUY01HYUVBeU16RU1OeTJubTZFcCtwalA1YUY2Z2kyMXQvVVFGc3VKMWoyUmoveW5NL1NkUnQrZWNhbDVPWW90eEhrRmJMOXZ2djJBMk92NUlUWkNsdzRiT1M5bnB5cFFpbU9aNVFBWXl0bVlhUXBXbC9wTVl6NnpTajhScWtWRE5FSkdxTmZUS0EyaXZMWXdYNmxTdHRNUGFwZzBKODRsOVgwdm9WTi9GcFM0VkNWQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJRZ0tGQWhHNlJhVytoVHk1MmR4ZVQ4YkM5Nkh6QWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQVlNemdMckpMSXIwT292UW5BWnJSSUd1YWJpSFNVS1NtYkxSV3BSa1dlQXRzQ2hERUhwWGNKL2JnRE5LWVdvSHFROHhSVWpCNEN5ZXBZZXZjM1lsckc4bzd6SHhwZlZjYW9MNVNldUprekh4S240YlRhU3A5K012d2FtbnA2NGtaTWlOYkZMa25mUDlrWUtvUkhrTVdoZVJKMVVzUDF6NFNjbWtDZUlMZnNNczZ2cW92cWpXQ2xGc0pwQmNzbHVZSFdGN2JCSjFuNFJ3ZytBVEVvcFk0SWdHdjZadndjK0E5citBVDJocXBvU2tZb0FsK0FOWXdnc2xPZjlzSmUwVitUQTlZWS9VbGFCbVBQVGQwLy9yOXd2Y2VQV1prUGpLb0FDL3pVTmhmRGJoNExWOEdIczNseVgyWG9tTC9MTmM4Sll6eUlhREVoR1F2ZW9QaGgvdHIxZz09IiwiTUlJRFNqQ0NBaktnQXdJQkFnSVVSMzhtcTI2U2Yyc3pWVjJCZEc2V0VON2t1V1V3RFFZSktvWklodmNOQVFFTEJRQXdMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3SUJjTk1qUXhNakF4TURBd01EQXdXaGdQT1RrNU9URXlNekV5TXpVNU5UbGFNQ1l4SkRBaUJnTlZCQU1NRzFsMVltbGpieUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRUlnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTlkwV2I5b1BvUm9Lb1F5V1BhSnB6MTF2cldUZzZ6VHRtTmoyVm9LUm55dktHUnFwemI4M3c1bDZZQTk2VVlrWUJEUVAwaWxPMkRQZTZ3V3FWUjV6RGZSemRjSDhiaCtMN2RHR3ZhZTZoUlRaaGtGa0NwWERzNEhjY2tuckRmOEZDbEo3SGUzOUpmNDIvRzFRbTJ6ejlXV21yUFh0Z2lLL3gwNUdqc1FmR3VERzF6ZjVRVFVVaWU4bHd5bUszVGZkT3ZOZWVKQUFQZTJwbjdJdGZSYityVnJOV2lEemxSbjJ2Tm5aMndQbzR3SC9XSjZkaFhaRytyTVdUK2E2Qm9jZzFVZkl3NmtkdW5HNGJUcFp6c3ZhY0ZZeVIwbXBmK0RlT25wU1dBbXl3SldIdlRsZjJZWHhGeWVYY1RBQ2RRbGNNTkdKMlZoWlE0OHh0UDUvUkJQLzhrQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZDaHk0Mm9raXFjVFMxaXFhL0hSV2prQm40SC9NQjhHQTFVZEl3UVlNQmFBRk9xM1FwQ2VESHRrZXR0VWZBTzZmRTZmMktGaE1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQW4rUkhJUGJ0TUVETmRUMWc4SC9SaXRBa1VkTGdBdDF0V0dXbmxqOWtuYnY0LzRHbFg3QzlwNDVlZlBPOS9hWkw2T1YxWFJLQmk2S210Qlc1SzdudVlFbk14LzVCcUJTYkxUN3JoZHVDNDlUQmVNYjlQSGRYc1RsU1ZOWWVmcjFkR2lkcjRqMHhWQlFMYjFya25EQWJkV0R6S2Z2bmF5S084RnJ3ZTdIeDg0M01HL3JKK2MwWHJ1VXZiZlZUQ0hMaUlXaE03b05EaEw4eG9iNnhVbzlLTEtjU0wrSXRZc08zLzlXYjhROUdqc3FMNEZYc0RjRzFTYVloN0twZnVNbU9peHF6SlpPMm5JaWNQWVJnMUkyU3VpVWZZTzcwdG1kSGNibCtrU1FtU1l0N3JxNHZpSUxnMkd4M2o5cklUdVdUamJhVWFTU1F4Z09tTVNIdXl6TUFDIiwiTUlJRFJ6Q0NBakdnQXdJQkFnSVVleDluVDl2d1pOWFM0ODNMZGlZR2Z3MlNqU293Q3dZSktvWklodmNOQVFFTE1DNHhMREFxQmdOVkJBTU1JMWwxWW1samJ5QkJkSFJsYzNSaGRHbHZiaUJKYm5SbGNtMWxaR2xoZEdVZ1FpQXhNQ0FYRFRJMU1EZ3dNVEF3TURBd01Gb1lEems1T1RreE1qTXhNak0xT1RVNVdqQW5NU1V3SXdZRFZRUUREQnhaZFdKcFkyOGdSa2xFVHlCQmRIUmxjM1JoZEdsdmJpQkNNaUF4TUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUF1MU1ldm55OWR5TzlaVUMzOVNvTWhMY1IvRFhydEYvY2lNMTJ0Y2l5MkVYQVo2TWtyaXZWdENmRVZNOVg2SVNURW5CUDZ1U1lZb3Y2cHB2Nk82SmgyTkhtWW00dytKblM0Vm5DUFU3bUhBTWZWSTJNR1RUTVZPZXcweFVzRzdzSVNJa0lEVUJtdWs4WUs5YzV6aWM5K3ZGUUdMSWtzZFhPNWlWRklnTkc1M2NHWEQ0Wkxab0FQaXUwUEVvenhBcVlJYUk0Z3hLaE9BM1M4L1c4bUlXc3U2b2Z5ajRHdmtGRzZaN2t5RjMxMDdQN213RkhMckkzRU5hUFdNT0ZjVGFHYTBkdysvdlZSd2pSY0VaQlZzdXVULzg3Y2tTczBhNXBrdDN2WkJsYVllVDhwelNyZVY3bW93Y0lNOTBMMmlhQVRsUDBueG1hRTZuT3lUYm9qRlZsMndJREFRQUJvMll3WkRBZEJnTlZIUTRFRmdRVVNYRWgzc2EzYnREdXJtNE1NL0M3UzFsUnV1WXdId1lEVlIwakJCZ3dGb0FVNnJkQ2tKNE1lMlI2MjFSOEE3cDhUcC9Zb1dFd0VnWURWUjBUQVFIL0JBZ3dCZ0VCL3dJQkFEQU9CZ05WSFE4QkFmOEVCQU1DQVlZd0N3WUpLb1pJaHZjTkFRRUxBNElCQVFCNUdjM2hhZnRwN2hLc0Vac28raS9aNW5SdXFkbXpHMldDbFVvUlVxYmFQeWdsbkpEaktSL2tmZ09sNmliYkYvenRobTNLbVhRN0hjRElQMnhNZEc3VTJMMmltYkpRSHFQZi9oMkhxb2piNHJaZ3VlKzZXNGt0U1I1ZWxSOUwxcllxRS9TR1lNNGlFS29WUVN2N1JUMXJ4SWVXaUtzdy9WeHhpL1FPbnN4M0Y3eDgwQ0NZZ0I0RTN5UXg4VlRXNDQwaFRFd1RBMWVNSE9peDMydFB0eXlISWE4UFZWSWZWcEhRSkJhTVZ2djUwOFVFandrYlUycm5qZnpvU1ROUzlBNWpVUThtQlN2ZTk1cmpCMGRvOThFVStEeGRCcVgyK0g2aTV3bElDRmd6aGR6Y3NuZTloR0tUNmx6VFg0Y0lkSnNyWTIreGxlSzBGRlF5NmxHRVZMRWUiLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVRuYmJHSVIyTkh2enFJS0ZBZVF3RzFYQmlzMHdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFRWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPc1hqM2swNEJhbjRUWWR0WktxRC9PUEp4eUR5YVBtQ0JVRlVpYVpJZ1R0ZVpuajNYMjVEaGdwWlpYc0M0RDB5ZEljcmxBNndOVUluT1JML0w5ekJiVEVJTUFWTUdvNmc3VUtBbWIyTUY2QUhibmhZSmQ5ZWlrdXBWTldTaEhOWU5jNEdCZE8xWU42QWZVcXZKaEhiZTNWNFNOTVBtQlJFS0pQVno3VGh3Z21nZ1RlOFdzMkswL3dzcXYyd1NFN3BiQ0JzVVpoSVg1MWJaTTNwcUR3SlBUbVJGRXZ0MC82dEc1ZU84RjNqMTRPWHFmRWhtam4xVnZ4S0RZUU9MWkF4Q3d3Z0MwUDRDZGZXdjN5OFBTUjhJMzU0aE8xWStHek5qdklxWDM4TktMeXd1SVlIRmVyT3hObHhFTUJ2RmhZQnVSdVlBa2tnVWFQcU42VUJoc0lMcnNDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNDb1JIaGl5Tm5iblhSV0lMNlpCWG9CWDlZVE1COEdBMVVkSXdRWU1CYUFGQ0FvVUNFYnBGcGI2RlBMblozRjVQeHNMM29mTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFDUUZhZkpJMS81V2c5Q0VFaW1FMVJQNTRSZ1F3VE5UT09Rc0xBQ1RlK3JJdGxGUXpDOVpEaHJWODI4eVg3anp5K0FBc3AzaXpLN1QxdGgyZGw3bSt0dTBzdzJQYS9vbGMwMm50NlB5SXczNDhnYUh6aEkxKzBLRTQ1cXh2RkRlTDJsTXhiUGZDWXZ5RUVhWXpqaVFFTFU1OTUxcFhHV3lLTWEvNGZMdE8rWktPWGhNdVZlcTRyWERQSTU0VzZKSE9pQWFpS2Rpdys1ZTNjMmt0L2pGSVF0TTZ2TVhnOUxORnpkakVUTnQyMFZYOVFldlJwRlpmdWNNRzl3Q2FRRG9GbFB6cFRNSktoUGV2L2ltSm1aWWhLZnIwbExjZW10cWpJeExBb3FaZE9ZZkhCZzYrdkFjZFBJL2lhdUdwVUF2N1grVUtObUR3aloyQmFINHNMd2hCMm0iLCJNSUlEUGpDQ0FpYWdBd0lCQWdJVVh6ZWlFREpFT1R0MTRGNW4wbzZaZi9iQndpVXdEUVlKS29aSWh2Y05BUUVOQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU1aNi9UeE04cklUK0Vhb1B2Rzgxb250TU9vLzJtUTJSQndKSFMwUVpjeFZhTlh2bDEyTFVoQlo1TG1pQlNjSVpkMVJueDFvZDU4NWgrL2RoSzdoRW03SkFBTGtLS3RzMWZPNTNLR05MWnVqejVoM3dHbmNyNGh5S0YwRzc0Yi9VM0s5aEU1bUdORDZ6cVljaENSQUhmcllNWVJERjRZTDBYNEQ1bkdkeHZwcEF5Nm5rRW10V21NbndPM2kwVEF1Y3NyYkU0ODVIdkdNNHIwVnBnVmRKcHZnUWppVEpDVElxK0QzNWh3dFQ4UURJdituR3ZwY3lpNXdjSWZDa3p5Q2ltSnVraFl5NktvcU5NS1FFZHBOaVNPdld5RE1UTXQxYndDdkV6cHc5MXUrbXNVdDRyajBlZm5POXMwWk93ZHdNUkRuSDR4Z1VsNVpMd3JyUGtmQzEvMENBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUI4R0ExVWRJd1FZTUJhQUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUU13RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCRFFVQUE0SUJBUUMzSVcvc2dCOXBaOGFwSk5qeHVHb1grRmtJTGtzMHdNTnJkWEwvY29VdnNyaHpzdmw2bWVQTXJiR0pCeUoxWG5xdUI1c2djUkVORnhkUUZtYTNtaW84VXBmMW93TTFacmVYckowbUFERzJCcGxxYkpueGl5WWErUjExcmVJRlRXZUloTU5jWktzRFpyRkF5UHVGakNXU1F2Sm1OV2U5bUZSWUZnTmhYSktrWEliNUgxWGdFRGx3aWVkWVJNN1ZvbEJObGxkNnBSRktsWDh1c3Q2T1RNT2VBRGwyeE5GMG0xTFRoU2RldVh2RHlDMWc5K0lMZnozUzZPSVlnYzNpcm9SY0ZEMzU0ZzdyS2Z1NjdxRkF3OWdDNHlpMHhCVFByWTk1cmg0L0hxYVVZQ0EvTDhsZFJrNkg3WGszNUQrV1ZwbXEyU2gveFQ1SGlGdWhmNHdKYjBiSyJdLCJpY29uIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwiaWNvbkRhcmsiOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJwcm92aWRlckxvZ29MaWdodCI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsInByb3ZpZGVyTG9nb0RhcmsiOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xX1BSRSIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsImxhcmdlQmxvYktleSIsImNyZWRCbG9iIiwibWluUGluTGVuZ3RoIl0sImFhZ3VpZCI6IjZhYjU2ZmFkODgxZjRhNDNhY2IyMGJlMDY1OTI0NTIyIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibGFyZ2VCbG9icyI6dHJ1ZSwiZXAiOmZhbHNlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6dHJ1ZSwiYWx3YXlzVXYiOmZhbHNlfSwibWF4TXNnU2l6ZSI6MTUzNiwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0Ijo4LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjEyOCwidHJhbnNwb3J0cyI6WyJuZmMiLCJ1c2IiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotOH0seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTM1fV0sIm1heFNlcmlhbGl6ZWRMYXJnZUJsb2JBcnJheSI6NDA5NiwibWluUElOTGVuZ3RoIjo0LCJmaXJtd2FyZVZlcnNpb24iOjMyOTQ3NiwibWF4Q3JlZEJsb2JMZW5ndGgiOjMyLCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6MSwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjEwMH19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTEyLTIyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZdWJpS2V5IDUgU2VyaWVzIHdpdGggTkZDIChFbnRlcnByaXNlIFByb2ZpbGUpIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNDEyMjIwMDIiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMi0yMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzZ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDEtMTAifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyI3N2I5ODU5MmUxOGZhZmQ5MjAyN2FmYjRhZjY4ODg3ZjUwYTJlM2I3Il0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjc3Yjk4NTkyZTE4ZmFmZDkyMDI3YWZiNGFmNjg4ODdmNTBhMmUzYjciXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IklERU1JQSBTT0xWTyBGbHkgODAgUjMgRklETyBDYXJkIGUifSwiZGVzY3JpcHRpb24iOiJJREVNSUEgU09MVk8gRmx5IDgwIFIzIEZJRE8gQ2FyZCBlIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjExMDc0NDg4MzEsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6Mn0seyJtYWpvciI6MSwibWlub3IiOjF9LHsibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQ3hEQ0NBaVdnQXdJQkFnSUdBT3JBQUFBQk1Bb0dDQ3FHU000OUJBTUVNSUdFTVFzd0NRWURWUVFHRXdKR1VqRU1NQW9HQTFVRUNBd0RTVVJHTVJNd0VRWURWUVFIREFwRGIzVnlZbVYyYjJsbE1TTXdJUVlEVlFRS0RCcEpSRVZOU1VFZ1UyVmpkWEpsSUZSeVlXNXpZV04wYVc5dWN6RXRNQ3NHQTFVRUF3d2tTVVJGVFVsQklGTmxZM1Z5WlNCVWNtRnVjMkZqZEdsdmJuTWdMU0JTYjI5MElFTkJNQ0FYRFRJMU1EZ3lPREl5TURBd01Gb1lEekl3TmpVd09ESTVNakUxT1RVNVdqQ0JoREVMTUFrR0ExVUVCaE1DUmxJeEREQUtCZ05WQkFnTUEwbEVSakVUTUJFR0ExVUVCd3dLUTI5MWNtSmxkbTlwWlRFak1DRUdBMVVFQ2d3YVNVUkZUVWxCSUZObFkzVnlaU0JVY21GdWMyRmpkR2x2Ym5NeExUQXJCZ05WQkFNTUpFbEVSVTFKUVNCVFpXTjFjbVVnVkhKaGJuTmhZM1JwYjI1eklDMGdVbTl2ZENCRFFUQ0JtekFRQmdjcWhrak9QUUlCQmdVcmdRUUFJd09CaGdBRUFDZThqZFNuVlRLdHprZ3NDS0pGdWlwV0w5dVVpenNScjYvaVRDZStES3JuMDJTbnBzUEhaeW80V1o1OHBVdTY2VDZrdmZCOGFHQTVpN2VxVUpTZ2hRdEdBRWJmbGRTekdJYnRXdlhQaEFqRVJleWZTbjNieG9FQlJmcHQxeGgybDFHSld0Z0VxNllJOVNxa0NJWFdCcDFSM3g2aWFiRTlIVzNPWUZRSURybUpVdUUwb3p3d09qQWRCZ05WSFE0RUZnUVV6K29kRVJ3VkVLTTRWZitzUFVQQ3B6VmV5UzR3Q3dZRFZSMFBCQVFEQWdEL01Bd0dBMVVkRXdRRk1BTUJBZjh3Q2dZSUtvWkl6ajBFQXdRRGdZd0FNSUdJQWtJQk8vbGVqanRwZmFyMHFsMDNTaEdmTVBPUERUeEhFWmRVclBTaXdkSThrb0lrcXRYZ0IvcWJvOFJ2K09DQiswdmVCc3NpNkpQOXJISWhlc2ZYZVJDNURjSUNRZ0d5Y2pvcnVLdzFDOHM0WDNqbGRXS0JSK0RVYzhUVzBpeEVnSjFXU3JtNkozdWxTd3c2Y0Y1MXplZkIwT0FodkYvaEE0Sjg3bnozeHVjRkwxS2JxakljblE9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFESUFBQUF5Q0FJQUFBQ1JYUi9tQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUZpVUFBQllsQVVsU0pQQUFBQW9yU1VSQlZGaEh6VmhwY0ZQWEdkWHlubVF0WGlYTCswSWFzTUhHT3dZYkVsSktnRWtDQWFZTTAweWJNbWxMS0FOaG44bkNaZ2dwNUEvVWhJNHpoTkRTYVdjS0pHeUZNS0dCTkhIeGdvMXRHYk1iYi9LK3lKWWxXY3VUMUhOMWhWQmtXOUlQWW5MRzR6bnYzaXZkODc3dGZsZDhoOFBCRzRYR2UxMTFsWnJlem1IT1p1ZnpYWU5QRXc0ZXd3cGpFa0t5WnlYRkp5bGNneDd3bG5YODhIZkhEMTAzNmkwU0tTc1FDbjRVVFU1Z1d4dG5IekZhSTFUUzlUdCt2bVJscm12Q2lTZXlCclhESythVUdIVFc0RkF4Qk5IQkNZRE5aaC9zTnlaUGlUajUzelU4bnBBT3VtUjF0dmN2U2k5V3hRVER0blJpZ21FMmNVYWp1YlI1R3lNVTQ1SEtzczlPM2krVGlZWE14QmxwTkN4bVRoYk1ucit4RVp6bytHRHRhU0h3VERVQklqSFQyMlU0ZnZnYU9OOWdNTXhPL0RncU5vVC80NFYzd0xEYkhickJrYksyRHdRWFQ2bGw4cUNmZ2laQUlPRGI3YnpLNys4THA4UXM3R3pUUFhNUFBvSERFYTZTQ2pvMXVzRExBWXlNZk1ZZnpWLzg5M3gwTHdEb28rT0g2d01CeEhScGhnUldDeGVnQTdFbGtnVVZWaXhtZUh5U3dwelZMZ0FRQWM1SExCQUt5YVBEd1NkUzdBNUVNWjZ4eERUQ0JhZ01YMld4WUJkZVFLTHdwVDJkdXJQbDZ5L1hiNzVRdldGNGNNUnFzVDJYb3J5czNvUVJoVXFHa20wWU5tL1pzeENQWDkvYXJPMHpjSnc5UGpuOHNub3oxaXg5SThlZ043dSt5eC80ZUJFWDlRZlRpUFcxbFJtaEVSTHdOVXRQaUlNWW1HcDZYanlkZlhTdkYzWmlSY0p2djdwRFI4SVVVcUdRWDFuYVZQYk5Renh1TEpwdjQ0ZzU2YXhmQ0FKWkNGUDE5eGlMaXBlQk56L3NxeWg5SkE1aXJWWXVMVE1PSTIyUCtxMVdHMS9BWjFoQlExMkg4eE84eWRPaVlLMEloYXhvNDNrNjhzZDNYOUxyVEpUN2d6MGdhK0hrL3UyNkFvR1F1SHY3MjJjVWtUS1FFWU0xdHpBWlJGMmxFWWtZRUJpc28yVUlCRWpQam9OV0pQamdnUEdyTCtveDhwdTFoZmk4T3h0OHdjRkRiUGtCaVhRTHQzWGZJdkRxMHBZNzlSMnNpTUdnUERnb1ZFRjhXbjI5RmU0RFFiUWl6aC9lN2diUG1aV000QU1KQ1pmczMzWUpCTmg1YU1uZ3dBamx2dUhmaWJEODZzMHZVYjVueTdrSUpURVZ4OWxTTTZMcDRPMmI3ZXpqQXg1bVU5L1FnR1RPVElBNVFXQkNLMmY3UjBrWitJSmw2UXFsSE00bFMzM0NqeFB0Tmp1Kzk2M05jOEN2bkd2b2F0UFJGb096MkxObUpqaVg4TzdXZHdsWjEvZkFiRFVWclNBU0dhdFV5ZkJ4OE9EUW9FLzJYWFhPODNZWHY0NGtwZHdIL01nYUdqUnQreE54SDdCbnc0VXdaeVlDY0N0Tnc1WUhBNHpvU1pXQjJXckxpU3hnYW1Zc05ReEtGN0xoNEk0cjRQbHpKMDFKaTZMKzlRRmZzbEFTWlRMUjRwVlo0Q2MvcjBUMXB1Y0IvTTVaYkhBVGVFMUZVNUNFSmF1ZFFJeTNOZzFRbnBtZjRONWVKaGVmT0ZKS2VkSGhwZjA5dzVTUEIxK3l0SDNHUFVkSVVRQU83YjRDWDFCT3luY1FFeG9tQmIrajdvSWw2RGdGcHU0M2RJRk16NHVEVWVrZ3NpRlVJZDIxL2l6NDVMU28zTUpKT0REbzFKZ1lWeGJTTzNteVl2Yjg1OEUvK2ZBYjJBbStvRk0yenBhU0ZrTjVUWG1MTzk0cFVHbnJiclNCWk9Rbm9PUzZ6eHdZOWNJL2F3ZTZTV0R0UDdvY2hjUEhjVFN1cklGZWZkR2ZsMUorNHNoMWVURHBaU21zMWlmeGprS0ZuS0NjQWlyVmxVU1dSQ0xDbjN0ckdDeE1LZDIxZ1JoTUdSMHk3N1ZwYUpUcDFHaU1MUXNXeGxWcFdrNHMrSjUzemlPdDhLVjBDc0JzVm40aVNQT0RQcFBKaXZwT3h5bmcwOXMxblpSbjVzRmdUNkliSi9mMXF3OWJHdnZCOS8xbEdXNFc0eGxzREZsWWlWcDE0TE5mZ3ZmMTZFK2ZxSkpJUlhRS2NQQWNOcXM5NzRVazhPclNaczk0cDREeE5DMWFXaHF5Q3hJUkRIUWN3THVGSzJUYlZwMEVSd2orWWVzTHVKRFJLUytNYVMwSFBxK01DZ2JyYU5IU3pvVk9FRGg0ZkFGNWIxQ0QzZ0krR3VnbTBNbUF5RVBGWHZiQUNZWjJpdkw0NUFna08rVmVHT05iSVNKSXl1NVlld1k4WTBaQy9weEpabytzb1JMVmxhU1U1eFltbVl6ZThZRnpLVG8rUkNvbkJxNHFiZlpLQ0dUMy9xUEVEOEJIV3kraWNGRHVoYkZqQzY3NTk3OXFCM3BKMW53MEttdkVFcmJxZjgwZ2FibHg2RjY4N0lIc1F3bWd2TGFpemZQaUNZZE9TbEVXT3JPN3VPZy9ySmcwalhUS0MyUExJa0dnbE8xY1J3d0dieTVZa2thZFFvR2RibFczVTY2S0NiSFpmaUFMZStjVWtNaURYTzJBM25OanZPZnVnNitEb0pQOWUwa1picVowZkRUR2xnVWdlc3F1TmlMWHdGR1gwWTY2cmNLeUF2Vk40a1FnTXovT005Y0FxNWxMenlYblVrTk51NUFSdXVNUytadGI0TXJ1dlpzdVNtVWlyeFQyeExpeXFNSGUrLzFwY0xHRWVXUE5US1BCNHA1Q3FxSU5CRS9OOEphRjVNcWVTY3BIWFVXYnlObndBSGlsL2g0OTRnSGNvRE9mL3VzTkZCMDZOU2JHbFFXZ0hiaC9wN3Vtb2dWOHk5NUZ3MW9UTlJoa01Zd0FjUU9PcVBlc2lxZ0xTaFZKWVFBZER1M0RBS3laOThyVXlLZ1E4QjNyemlpajVMN3ZFTDVrQVJHUnNxTDE1eWpmc0hPK2JzalY5Y0xGTkx4U00ySThreEdCbFQzTGRRRGNxbW1uOFk2WHdWMzV3eEp5dkdxYXROY3UzcVgxeFFmOHlHSVlZVWZiME5kZk5vQ3YyamhIeEFwcHBXSFFWejF1WUhCMG9sQlJqbk1KTllYeWp0WkJlaTZOR0N3cjNwb2hkZGFDOTkvK0lrSWxjd2ZjZVBBakM4QWQ1c0IyVjlmN3pzNlhkWVBFWUhEaTNWclhiU0k5S3c3OUorVVdFNWZ0UEM1cnl6V2lJSmVwVUhYZjNmOEtPSktnb2E1ZHhQb3hGZUJmRnQ3WU9HdzVkYXdLZlBtYk9hR2hFdGdHZ3ozZHcxWXpVWk16TzVFU0tBQlNzMGl1MWQxb0ZZbEpVT3QxNXRWYjU0SUFTQ0RjaFFLNW1QcVhCWVNFU1Q1KzMyV3dYWWNYYXdkSW1jVkpjTE9NK0hGNlhnTHRxK3cyaHpKYVRzdTZ1cW9WZFFRVkgwbXdlaHVSOWUybHUxMGRycDdiTHdLU2haSUlFU1VIeUM5UGhmTW14OGFGb3lnZ2JOWFZKQmxUcGtkakFlemt2SGU0K3JCN3Q3b1JsMFBha1UyN0Y5S1JBKzlkQ29zZ25XTWdDRWdXZ01QcjJNSHZLZi8wN0p0d0RYWnRxSEVWMWRqRU1KZ0thZmppTDFMb1NFK0hEclVrTGpGc3hlL3k4UGpsMzZxMS9jYkFmeGZpLzNwaFNiZEc3OVhLalFrMDVncVZQRG8yQk5XMXZyb2REZ0xTU0NUeG14LzJHZzFXSkduU3p4Um9HRkZSRysvMlFJUXFKaGhuRi9LdXZrcUR4L0ZPUUU5WXpMWVpMOGJ6VjcxNnRMMXBLTUQzZ0p0Z0ZSRFVTV3dHV2ZRU2dZaWhXOEs1a0lzcFdrZ2hsTllPOXdLL3dCbFZNQzlKb0l5U2VaMjFQZ0RISWFUd1J3c1AvdE5IOTViWUhvL3U0ZzRuZUMzd0M3eTJJa29tbUpvVjVkbEFQblBnbUVyTGpSWE1YNXhxR0RiREhhN2had3Fhem5NWFRoRWtKc2RtellwR29MbG1uaW1NZXV1cnYwb1ZzeklTdGhwTng5Szh6NVNSY2g4TjBBU0EzQUJNbHNzTjY2UkJ3U2pFOXZqNDJMMmZMdWhxSDBZU3VaWk1PSkN6ZlQyRzRsUExvQWt5VUJmNHlPcEZTL0wzSFZ1ZzB4b1JjUk1jWjlodXhHQTFteXdsRjVablpLVkFEQjlYTDV4WktEVzRGMkMrc2JHbHVPaWF1cndQRjNiY1F1SFR4MDU5dXM0bHI0MTNoMVZROW15Y3JXQkIzUHJ0ODFXUmtRS0d6d2pKVDlQT1g2cDVEanRuUjlSamtkbGlibnlncWZ5dXFmbUJWajlraHIrZHBudXE5bk1XUFpUQWtIRHg4MU9WTStjK2w1QVl3NHBZZE5pc21NRlZpc2ZqL3gveHFPY1BSZFN2YXdBQUFBQkpSVTVFcmtKZ2dnPT0ifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wOC0yNyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxMTA3NDQ4ODMxLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IklERU1JQSBTT0xWTyBGbHkgODAgUjMgRklETyBDYXJkIGUiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlUyRjEwMDAyMDI1MDgyNzAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTA4LTI3IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjExMDc0NDg4MzF9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDktMTEifSx7ImFhZ3VpZCI6IjUwNGQ3MTQ5LTRlNGMtMzg0MS00NTU1LTU1NDQ1YTY3NzM1NyIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiNTA0ZDcxNDktNGU0Yy0zODQxLTQ1NTUtNTU0NDVhNjc3MzU3IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IldpU0VDVVJFIEF1dGhUcm9uIFVTQiBGSURPMiBBdXRoZW50aWNhdG9yIn0sImRlc2NyaXB0aW9uIjoiV2lTRUNVUkUgQXV0aFRyb24gVVNCIEZJRE8yIEF1dGhlbnRpY2F0b3IiLCJhbHRlcm5hdGl2ZURlc2NyaXB0aW9ucyI6eyJ6aC1UVyI6IldpU0VDVVJFIEF1dGhUcm9uIFVTQiBGSURPMiDouqvku73pqZforYnlmagifSwiYXV0aGVudGljYXRvclZlcnNpb24iOjMsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJlZDI1NTE5X2VkZHNhX3NoYTUxMl9yYXciLCJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNNekNDQWRtZ0F3SUJBZ0lVYmFyVjhQcUM5SW5rMWRrb0RYdU81emhQODJnd0NnWUlLb1pJemowRUF3SXdlREVMTUFrR0ExVUVCaE1DVkZjeEtqQW9CZ05WQkFvTUlWZHBVMFZEVlZKRklGUmxZMmh1YjJ4dloybGxjeUJEYjNKd2IzSmhkR2x2YmpFaU1DQUdBMVVFQ3d3WlFYVjBhR1Z1ZEdsallYUnZjaUJCZEhSbGMzUmhkR2x2YmpFWk1CY0dBMVVFQXd3UVYybFRSVU5WVWtVZ1VtOXZkQ0JEUVRBZ0Z3MHlNakF6TWpNd05EQXlOVGRhR0E4eU1EVXlNRE14TlRBME1ESTFOMW93ZURFTE1Ba0dBMVVFQmhNQ1ZGY3hLakFvQmdOVkJBb01JVmRwVTBWRFZWSkZJRlJsWTJodWIyeHZaMmxsY3lCRGIzSndiM0poZEdsdmJqRWlNQ0FHQTFVRUN3d1pRWFYwYUdWdWRHbGpZWFJ2Y2lCQmRIUmxjM1JoZEdsdmJqRVpNQmNHQTFVRUF3d1FWMmxUUlVOVlVrVWdVbTl2ZENCRFFUQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJQTldMS0FHT1VmUnBCT0hFZmpkTHJXUDZzSGtGVEVQT3hVZE96dTUrU1ZBUjRLcU5vdHZ3bHQ4WlRMRnk2dENWLzlDcTFmUUVKY2JscEFHM00yditwYWpQekE5TUIwR0ExVWREZ1FXQkJSTXJwei9Vb29tRXhGSVNoNmFLWlFHMjdKYmpqQU1CZ05WSFJNRUJUQURBUUgvTUE0R0ExVWREd0VCL3dRRUF3SUJCakFLQmdncWhrak9QUVFEQWdOSUFEQkZBaUFlSUhFaXJDVkN1T3lhNmgvcmFINE9aWmJxdTk0MzRaVUdZQkdRdGdEVG5RSWhBT3lsQTN6NktDd0dMbmJGQndpS0R3amNoMGpFdXpOZ3ZkaEx0eWhuRW1SSiIsIk1JSURSakNDQXUyZ0F3SUJBZ0lVWlBoU0R0eEk1bGcycWd5KzdJR0RKaEdxUE9nd0NnWUlLb1pJemowRUF3SXdnWWN4Q3pBSkJnTlZCQVlUQWxSWE1ROHdEUVlEVlFRSURBWlVZV2x3WldreEVqQVFCZ05WQkFjTUNWTnZiV1YzYUdWeVpURVdNQlFHQTFVRUNnd05WMmxUUlVOVlVrVWdTVzVqTGpFZ01CNEdDU3FHU0liM0RRRUpBUllSWVdSdGFXNUFaWGhoYlhCc1pTNXZjbWN4R1RBWEJnTlZCQU1NRUZkcFUwVkRWVkpGSUZKdmIzUWdRMEV3SGhjTk1qRXdNVEk0TURneU56SXdXaGNOTXpFd01USTJNRGd5TnpJd1dqQ0JoekVMTUFrR0ExVUVCaE1DVkZjeER6QU5CZ05WQkFnTUJsUmhhWEJsYVRFU01CQUdBMVVFQnd3SlUyOXRaWGRvWlhKbE1SWXdGQVlEVlFRS0RBMVhhVk5GUTFWU1JTQkpibU11TVNBd0hnWUpLb1pJaHZjTkFRa0JGaEZoWkcxcGJrQmxlR0Z0Y0d4bExtOXlaekVaTUJjR0ExVUVBd3dRVjJsVFJVTlZVa1VnVW05dmRDQkRRVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCQmlXdkZhZi9JaEZNT1dOcWx3ZXFyNEdmTzBtdS8xQjE4SjAzT0crcFNsdFJpeDlHalJvakJ5YTRMQVJ5WE1QOG53MlhoOVB2d09CbTlRZWRNQzY2WEdqZ2dFek1JSUJMekFkQmdOVkhRNEVGZ1FVZCtZdmo2STNZOGNLSDNRUk5MbEM4L09wOTdjd2djY0dBMVVkSXdTQnZ6Q0J2SUFVZCtZdmo2STNZOGNLSDNRUk5MbEM4L09wOTdlaGdZMmtnWW93Z1ljeEN6QUpCZ05WQkFZVEFsUlhNUTh3RFFZRFZRUUlEQVpVWVdsd1pXa3hFakFRQmdOVkJBY01DVk52YldWM2FHVnlaVEVXTUJRR0ExVUVDZ3dOVjJsVFJVTlZVa1VnU1c1akxqRWdNQjRHQ1NxR1NJYjNEUUVKQVJZUllXUnRhVzVBWlhoaGJYQnNaUzV2Y21jeEdUQVhCZ05WQkFNTUVGZHBVMFZEVlZKRklGSnZiM1FnUTBHQ0ZHVDRVZzdjU09aWU5xb012dXlCZ3lZUnFqem9NQXdHQTFVZEV3RUIvd1FDTUFBd05nWURWUjBmQkM4d0xUQXJvQ21nSjRZbGFIUjBjRG92TDNkM2R5NWxlR0Z0Y0d4bExtOXlaeTlsZUdGdGNHeGxYMk5oTG1OeWJEQUtCZ2dxaGtqT1BRUURBZ05IQURCRUFpQmYzcDhMSjNQbGZNc3hUeldnakhhYWw2dXpJbzV0eDNvK0VVeWJkRFk0b2dJZ1Y2blIxTVVFMXdLejF1Qzcva0VOZy9GcEpPZXRGYUplUGNnb25lRXdzS0E9IiwiTUlJREVqQ0NBcmVnQXdJQkFnSVVMS0xCU1Z3RHE5aXQzcCsweXZ5Q1BrMkZGTG93Q2dZSUtvWkl6ajBFQXdJd2RqRUxNQWtHQTFVRUJoTUNWRmN4RHpBTkJnTlZCQWdNQmxSaGFYQmxhVEVQTUEwR0ExVUVCd3dHVkdGcGQyRnVNU293S0FZRFZRUUtEQ0ZYYVZORlExVlNSU0JVWldOb2JtOXNiMmRwWlhNZ1EyOXljRzl5WVhScGIyNHhHVEFYQmdOVkJBTU1FRmRwVTBWRFZWSkZJRkp2YjNRZ1EwRXdJQmNOTWpFd05EQTNNVEV4TmpBMFdoZ1BNakEzTVRBek1qWXhNVEUyTURSYU1IWXhDekFKQmdOVkJBWVRBbFJYTVE4d0RRWURWUVFJREFaVVlXbHdaV2t4RHpBTkJnTlZCQWNNQmxSaGFYZGhiakVxTUNnR0ExVUVDZ3doVjJsVFJVTlZVa1VnVkdWamFHNXZiRzluYVdWeklFTnZjbkJ2Y21GMGFXOXVNUmt3RndZRFZRUUREQkJYYVZORlExVlNSU0JTYjI5MElFTkJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVFSFVld1BwV2J4UXJLQjd6bEltR3RTRjAxbUtISlEyZjRhaUp2VVVKdENnbStMTUpIbUJjMElNZUZWTTBIYk5Nc3BYdWNVUTkzZmNLakJ5MTh2RUFncU9DQVI4d2dnRWJNQjBHQTFVZERnUVdCQlRId3pjSjNYb1JjMzczWTdOWElzYTJJZXBrZXpDQnN3WURWUjBqQklHck1JR29nQlRId3pjSjNYb1JjMzczWTdOWElzYTJJZXBrZTZGNnBIZ3dkakVMTUFrR0ExVUVCaE1DVkZjeER6QU5CZ05WQkFnTUJsUmhhWEJsYVRFUE1BMEdBMVVFQnd3R1ZHRnBkMkZ1TVNvd0tBWURWUVFLRENGWGFWTkZRMVZTUlNCVVpXTm9ibTlzYjJkcFpYTWdRMjl5Y0c5eVlYUnBiMjR4R1RBWEJnTlZCQU1NRUZkcFUwVkRWVkpGSUZKdmIzUWdRMEdDRkN5aXdVbGNBNnZZcmQ2ZnRNcjhnajVOaFJTNk1Bd0dBMVVkRXdFQi93UUNNQUF3TmdZRFZSMGZCQzh3TFRBcm9DbWdKNFlsYUhSMGNEb3ZMM2QzZHk1bGVHRnRjR3hsTG05eVp5OWxlR0Z0Y0d4bFgyTmhMbU55YkRBS0JnZ3Foa2pPUFFRREFnTkpBREJHQWlFQXZ4QytGcnBHSUhMN1dwOXU1ZDVQdHlFYU94U1pNWmVVTmNjN3ZrMjNSYThDSVFEdWJPeTVLQ25reVZmSHIrT3JQZk4rOElzRGpUaTdyR1NXV2loOUIyWS9aUT09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWdDQUlBQUFEOEdPMmpBQUFBQ1hCSVdYTUFBQzRqQUFBdUl3RjRwVDkyQUFBS1QybERRMUJRYUc5MGIzTm9iM0FnU1VORElIQnliMlpwYkdVQUFIamFuVk5uVkZQcEZqMzMzdlJDUzRpQWxFdHZVaFVJSUZKQ2k0QVVrU1lxSVFrUVNvZ2hvZGtWVWNFUlJVVUVHOGlnaUFPT2pvQ01GVkVzRElvSzJBZmtJYUtPZzZPSWlzcjc0WHVqYTlhODkrYk4vclhYUHVlczg1Mnp6d2ZBQ0F5V1NETlJOWUFNcVVJZUVlQ0R4OFRHNGVRdVFJRUtKSEFBRUFpelpDRnovU01CQVBoK1BEd3JJc0FIdmdBQmVOTUxDQURBVFp2QU1CeUgvdy9xUXBsY0FZQ0VBY0Iwa1RoTENJQVVBRUI2amtLbUFFQkdBWUNkbUNaVEFLQUVBR0RMWTJMakFGQXRBR0FuZitiVEFJQ2QrSmw3QVFCYmxDRVZBYUNSQUNBVFpZaEVBR2c3QUt6UFZvcEZBRmd3QUJSbVM4UTVBTmd0QURCSlYyWklBTEMzQU1ET0VBdXlBQWdNQURCUmlJVXBBQVI3QUdESUl5TjRBSVNaQUJSRzhsYzg4U3V1RU9jcUFBQjRtYkk4dVNRNVJZRmJDQzF4QjFkWExoNG96a2tYS3hRMllRSmhta0F1d25tWkdUS0JOQS9nODh3QUFLQ1JGUkhnZy9QOWVNNE9yczdPTm82MkRsOHQ2cjhHL3lKaVl1UCs1YytyY0VBQUFPRjBmdEgrTEMrekdvQTdCb0J0L3FJbDdnUm9YZ3VnZGZlTFpySVBRTFVBb09uYVYvTncrSDQ4UEVXaGtMbloyZVhrNU5oS3hFSmJZY3BYZmY1bndsL0FWLzFzK1g0OC9QZjE0TDdpSklFeVhZRkhCUGpnd3N6MFRLVWN6NUlKaEdMYzVvOUgvTGNMLy93ZDB5TEVTV0s1V0NvVTQxRVNjWTVFbW96ek1xVWlpVUtTS2NVbDB2OWs0dDhzK3dNKzN6VUFzR28rQVh1UkxhaGRZd1AyU3ljUVdIVEE0dmNBQVBLN2I4SFVLQWdEZ0dpRDRjOTMvKzgvL1VlZ0pRQ0Faa21TY1FBQVhrUWtMbFRLc3ovSENBQUFSS0NCS3JCQkcvVEJHQ3pBQmh6QkJkekJDL3hnTm9SQ0pNVENRaEJDQ21TQUhISmdLYXlDUWlpR3piQWRLbUF2MUVBZE5NQlJhSWFUY0E0dXdsVzREajF3RC9waENKN0JLTHlCQ1FSQnlBZ1RZU0hhaUFGaWlsZ2pqZ2dYbVlYNEljRklCQktMSkNESmlCUlJJa3VSTlVneFVvcFVJRlZJSGZJOWNnSTVoMXhHdXBFN3lBQXlndnlHdkVjeGxJR3lVVDNVRExWRHVhZzNHb1JHb2d2UVpIUXhtbzhXb0p2UWNyUWFQWXcyb2VmUXEyZ1AybzgrUThjd3dPZ1lCelBFYkRBdXhzTkNzVGdzQ1pOank3RWlyQXlyeGhxd1Zxd0R1NG4xWTgreGR3UVNnVVhBQ1RZRWQwSWdZUjVCU0ZoTVdFN1lTS2dnSENRMEVkb0pOd2tEaEZIQ0p5S1RxRXUwSnJvUitjUVlZakl4aDFoSUxDUFdFbzhUTHhCN2lFUEVOeVFTaVVNeUo3bVFBa214cEZUU0V0SkcwbTVTSStrc3FaczBTQm9qazhuYVpHdXlCem1VTENBcnlJWGtuZVRENURQa0crUWg4bHNLbldKQWNhVDRVK0lvVXNwcVNobmxFT1UwNVFabG1ESkJWYU9hVXQyb29WUVJOWTlhUXEyaHRsS3ZVWWVvRXpSMW1qbk5neFpKUzZXdG9wWFRHbWdYYVBkcHIraDB1aEhkbFI1T2w5Qlgwc3ZwUitpWDZBUDBkd3dOaGhXRHg0aG5LQm1iR0FjWVp4bDNHSytZVEtZWjA0c1p4MVF3TnpIcm1PZVpENWx2VlZncXRpcDhGWkhLQ3BWS2xTYVZHeW92VkttcXBxcmVxZ3RWODFYTFZJK3BYbE45cmtaVk0xUGpxUW5VbHF0VnFwMVE2MU1iVTJlcE82aUhxbWVvYjFRL3BINVovWWtHV2NOTXcwOURwRkdnc1YvanZNWWdDMk1aczNnc0lXc05xNFoxZ1RYRUpySE4yWHgyS3J1WS9SMjdpejJxcWFFNVF6TktNMWV6VXZPVVpqOEg0NWh4K0p4MFRnbm5LS2VYODM2SzNoVHZLZUlwRzZZMFRMa3haVnhycXBhWGxsaXJTS3RScTBmcnZUYXU3YWVkcHIxRnUxbjdnUTVCeDBvblhDZEhaNC9PQlozblU5bFQzYWNLcHhaTlBUcjFyaTZxYTZVYm9idEVkNzl1cCs2WW5yNWVnSjVNYjZmZWViM24raHg5TC8xVS9XMzZwL1ZIREZnR3N3d2tCdHNNemhnOHhUVnhiendkTDhmYjhWRkRYY05BUTZWaGxXR1g0WVNSdWRFOG85VkdqVVlQakduR1hPTWs0MjNHYmNhakpnWW1JU1pMVGVwTjdwcFNUYm1tS2FZN1REdE14ODNNemFMTjFwazFtejB4MXpMbm0rZWIxNXZmdDJCYWVGb3N0cWkydUdWSnN1UmFwbG51dHJ4dWhWbzVXYVZZVlZwZHMwYXRuYTBsMXJ1dHU2Y1JwN2xPazA2cm50Wm53N0R4dHNtMnFiY1pzT1hZQnR1dXRtMjJmV0ZuWWhkbnQ4V3V3KzZUdlpOOXVuMk4vVDBIRFlmWkRxc2RXaDErYzdSeUZEcFdPdDZhenB6dVAzM0Y5SmJwTDJkWXp4RFAyRFBqdGhQTEtjUnBuVk9iMDBkbkYyZTVjNFB6aUl1SlM0TExMcGMrTHBzYnh0M0l2ZVJLZFBWeFhlRjYwdldkbTdPYnd1Mm8yNi91TnU1cDdvZmNuOHcwbnltZVdUTnowTVBJUStCUjVkRS9DNStWTUd2ZnJINVBRMCtCWjdYbkl5OWpMNUZYcmRld3Q2VjNxdmRoN3hjKzlqNXluK00rNHp3MzNqTGVXVi9NTjhDM3lMZkxUOE52bmwrRjMwTi9JLzlrLzNyLzBRQ25nQ1VCWndPSmdVR0JXd0w3K0hwOEliK09QenJiWmZheTJlMUJqS0M1UVJWQmo0S3RndVhCclNGb3lPeVFyU0gzNTVqT2tjNXBEb1ZRZnVqVzBBZGg1bUdMdzM0TUo0V0hoVmVHUDQ1d2lGZ2EwVEdYTlhmUjNFTnozMFQ2UkpaRTNwdG5NVTg1cnkxS05TbytxaTVxUE5vM3VqUzZQOFl1WmxuTTFWaWRXRWxzU3h3NUxpcXVObTVzdnQvODdmT0g0cDNpQytON0Y1Z3Z5RjF3ZWFIT3d2U0ZweGFwTGhJc09wWkFUSWhPT0pUd1FSQXFxQmFNSmZJVGR5V09Dbm5DSGNKbklpL1JOdEdJMkVOY0toNU84a2dxVFhxUzdKRzhOWGtreFRPbExPVzVoQ2Vwa0x4TURVemRtenFlRnBwMklHMHlQVHE5TVlPU2taQnhRcW9oVFpPMlorcG41bVoyeTZ4bGhiTCt4VzZMdHk4ZWxRZkphN09RckFWWkxRcTJRcWJvVkZvbzF5b0hzbWRsVjJhL3pZbktPWmFybml2TjdjeXp5dHVRTjV6dm4vL3RFc0lTNFpLMnBZWkxWeTBkV09hOXJHbzVzanh4ZWRzSzR4VUZLNFpXQnF3OHVJcTJLbTNWVDZ2dFY1ZXVmcjBtZWsxcmdWN0J5b0xCdFFGcjZ3dFZDdVdGZmV2YzErMWRUMWd2V2QrMVlmcUduUnMrRlltS3JoVGJGNWNWZjlnbzNIamxHNGR2eXIrWjNKUzBxYXZFdVdUUFp0Sm02ZWJlTFo1YkRwYXFsK2FYRG00TjJkcTBEZDlXdE8zMTlrWGJMNWZOS051N2c3WkR1YU8vUExpOFphZkp6czA3UDFTa1ZQUlUrbFEyN3RMZHRXSFgrRzdSN2h0N3ZQWTA3TlhiVzd6My9UN0p2dHRWQVZWTjFXYlZaZnRKKzdQM1A2NkpxdW40bHZ0dFhhMU9iWEh0eHdQU0EvMEhJdzYyMTduVTFSM1NQVlJTajlZcjYwY094eCsrL3AzdmR5ME5OZzFWalp6RzRpTndSSG5rNmZjSjMvY2VEVHJhZG94N3JPRUgweDkySFdjZEwycENtdkthUnB0VG12dGJZbHU2VDh3KzBkYnEzbnI4UjlzZkQ1dzBQRmw1U3ZOVXlXbmE2WUxUazJmeXo0eWRsWjE5Zmk3NTNHRGJvclo3NTJQTzMyb1BiKys2RUhUaDBrWC9pK2M3dkR2T1hQSzRkUEt5MitVVFY3aFhtcTg2WDIzcWRPbzgvcFBUVDhlN25MdWFycmxjYTdudWVyMjFlMmIzNlJ1ZU44N2Q5TDE1OFJiLzF0V2VPVDNkdmZONmIvZkY5L1hmRnQxK2NpZjl6c3U3MlhjbjdxMjhUN3hmOUVEdFFkbEQzWWZWUDF2KzNOanYzSDlxd0hlZzg5SGNSL2NHaFlQUC9wSDFqdzlEQlkrWmo4dUdEWWJybmpnK09UbmlQM0w5NmZ5blE4OWt6eWFlRi82aS9zdXVGeFl2ZnZqVjY5Zk8wWmpSb1pmeWw1Ty9iWHlsL2VyQTZ4bXYyOGJDeGg2K3lYZ3pNVjcwVnZ2dHdYZmNkeDN2bzk4UFQrUjhJSDhvLzJqNXNmVlQwS2Y3a3htVGsvOEVBNWp6L0dNekxkc0FBQUFnWTBoU1RRQUFlaVVBQUlDREFBRDUvd0FBZ09rQUFIVXdBQURxWUFBQU9wZ0FBQmR2a2wvRlJnQUFBdGhKUkVGVWVOcnNsdDlMazFFWXg3L3ZOdGUwdlhPazd5UzdxeVdCWXZuaklrdEdVMHZEQ3drdFY0S1hwdjN3Qi80QkJpSWEvUUMxd2prVlV4TnNVdXV1emQxazZpQkxDeElGemNEWE9UWndZOHIyc3IxcnA0dVhadW9nZ3J5SmZTOGVlTDZjNTN3NDUrRTVISW9RZ29PVUNBZXNHQ0FHaUFFQXlYNkxaZG4xOVhXR1lkUnE5VDhna04xcWEyMFZEbFZaY1pVUVlwdVpLUzB0SFRjYTl5d3o2SHVycTZzL3pzNlNQMmtYd0dJMkF6aktxSFE2M2Z0M2s0U1Fwb1lHQU1XRlJYdktMbW9MQUF3T0RQd2RvTGRIRDJCa2FPaDM4NDNKNUhLNTlwVFYxZHdFOEdwOGZQK09TNHRMNXJmbUg2R1FrTzcwb0x1emMyand1U29wMmRCck9DeW5rNUtPOVBYM1oyWmtNQ2twcXl2ZkdJWUJjTCs5dzJxZEtDb3FDZ1FDQUhpZUYyb2ZQM3hrTXIxVzBJcmF1bHB0UVlIUDd3TkY3ZTJCTmw4RElPMzRDUUFOZCt1N3U3b0FTRUFCcUt1cEpZUlU2YTREb0dYeHFhb1VwWndXQTlhSkNVSkk0UVV0Z0ZQcWt3blNRd0Q2OVByb1Z4UU1CdHZiMmlpS2V0RFJ3Zk44S0JUaU9PN1prNmNBK25vTkxNc0N5TW84emZuOUhNZmxuTWtDc0xTNE9EMDFEVUIzOVJvaHhPbDB5aE1TNGlpUjNXNlBiTHN6QjNGeGNiUkNRUWhSSkNaS0pCS3hXQ3lUeWVSeUdvQlVLdjB5L3htQVRsY3BpNCtYeVdRYWpRYUF6K2VibXB3RVVGNVJEa0NsVWhWcUMzZ1NucCtiaXo0SG5OOFB3Ty8zUjV4QWdNdk56azVta2tXVUNNRHE2bmZCZHpnMkJEQ3RVQUJ3T2wyL2ZJZEFpZzRJQm9PUktJam5lUVZOYjNtM2lpK1hpRUhwK3d6cEdlbHV0L3VsMFFnZ0VBaVVYU203ZGVmMnZaYVd0TFMwaFlXdkgrWSs1Wi9OeThuTmpmNVVTQ1NTU0l3NDRYRFk0ZGhRS3BYRHc4TmlpcXB2YkJ3ZGVWRjFvd29BdTdhV21uck0wS1BmM3Q2K1ZGTGMxTng4UHUvYzZOaVlTQ1NLUHNrZXQyZDVlZG5qOFVRY3I5ZHJYN2U3M1p0Q3lySnJWcXMxSEE0VFFwWlhWcnhlcitDN045MFdpOFZtcyswZkN5cjJxNGdCWW9EL0FQQnpBSTZWTnFHUVBVcW5BQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiXSwiZXh0ZW5zaW9ucyI6WyJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiI1MDRkNzE0OTRlNGMzODQxNDU1NTU1NDQ1YTY3NzM1NyIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOnRydWUsInVwIjp0cnVlfSwibWF4TXNnU2l6ZSI6MTIwMCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6MjUsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4LCJ0cmFuc3BvcnRzIjpbInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi04fV0sImZpcm13YXJlVmVyc2lvbiI6Mn19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIxLTExLTExIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiQXV0aFRyb24gVVNCIEtleSBGSURPMiIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjEwNDIxMDAyIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjMiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMyJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMS0xMS0xMSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIxLTExLTExIn0seyJhYWd1aWQiOiIyYzJhZWVkOC04MTc0LTQxNTktODE0Yi00ODZlOTJhMjYxZDAiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjJjMmFlZWQ4LTgxNzQtNDE1OS04MTRiLTQ4NmU5MmEyNjFkMCIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJORU9XQVZFIFdJTktFTyBWMi4wIn0sImRlc2NyaXB0aW9uIjoiTkVPV0FWRSBXSU5LRU8gVjIuMCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMzYxOTk3NiwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9LHsibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJpc0tleVJlc3RyaWN0ZWQiOnRydWUsImlzRnJlc2hVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZWQiOnRydWUsIm1hdGNoZXJQcm90ZWN0aW9uIjpbInNvZnR3YXJlIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUIzakNDQVlXZ0F3SUJBZ0lVS3lVREdyaFJRYlUzcm1sbCtyZTF0WWJSczk0d0NnWUlLb1pJemowRUF3SXdQREVMTUFrR0ExVUVCaE1DUTBneEVEQU9CZ05WQkFvTUIxZEpVMlZMWlhreEd6QVpCZ05WQkFNTUVsTmxZV3hUVVNCSlQxUWdVazlQVkNCSFFUQWdGdzB5TkRBNE1Ea3hNVEEwTVRSYUdBOHlNRFkwTURjek1ERXhNRFF4TTFvd1BERUxNQWtHQTFVRUJoTUNRMGd4RURBT0JnTlZCQW9NQjFkSlUyVkxaWGt4R3pBWkJnTlZCQU1NRWxObFlXeFRVU0JKVDFRZ1VrOVBWQ0JIUVRCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQkZ5WTZPTkRsdWhuajM4M01SdzVKZndnTWtKcm5XMCtJdGxPVGg0Mm5ETHRmWmtyelJERmg5S0ZEYU9GKzIxWjJtOUtTTnFyMU1La3FqT2lSejJzNE5pall6QmhNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdId1lEVlIwakJCZ3dGb0FVeFRzZlRLZTVKdEg5dElVcFAzUjF5ZE9Xeklrd0hRWURWUjBPQkJZRUZNVTdIMHludVNiUi9iU0ZLVDkwZGNuVGxzeUpNQTRHQTFVZER3RUIvd1FFQXdJQmhqQUtCZ2dxaGtqT1BRUURBZ05IQURCRUFpQlJKREg0MGl5OGE3TE5nWmZMVWR1dzhiTER6a1Q5aTBvSXZWamVWZUxrVWdJZ1c1cjNCODR4NnQ4Y29MQ0pMb0ZMaXBaNzVuK04rM205OXpGTGRSbHZJZE09IiwiTUlJQ2REQ0NBaG1nQXdJQkFnSVVScFFMV1FybUdEU01HZy9vN3g3eC83b1VpWlV3Q2dZSUtvWkl6ajBFQXdJd1BERUxNQWtHQTFVRUJoTUNRMGd4RURBT0JnTlZCQW9NQjFkSlUyVkxaWGt4R3pBWkJnTlZCQU1NRWxObFlXeFRVU0JKVDFRZ1VrOVBWQ0JIUVRBZUZ3MHlOREE0TURreE1URXdNVGRhRncwME9UQTRNRE14TVRFd01UWmFNRG94Q3pBSkJnTlZCQVlUQWtOSU1SQXdEZ1lEVlFRS0RBZFhTVk5sUzJWNU1Sa3dGd1lEVlFRRERCQlRaV0ZzVTFFZ1NVOVVJRWxEUVNBeE1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRUIzNGJFOXlQZlFSY0VvSTBZRkI4ZWMwQ1NFMHVqbUdlQ1JGZGRCQkJVSkorNjNacnVWdW9yd1Bjb3BkMU5WUVpIZlRWaDNkVjRKcDdWN21Tckg2aHZxT0IrakNCOXpBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQU1COEdBMVVkSXdRWU1CYUFGTVU3SDB5bnVTYlIvYlNGS1Q5MGRjblRsc3lKTUUwR0NDc0dBUVVGQndFQkJFRXdQekE5QmdnckJnRUZCUWN3QW9ZeGFIUjBjRG92TDNCMVlteHBZeTUzYVhObGEyVjVMbU52YlM5amNuUXZjMlZoYkhOeGFXOTBjbTl2ZEdkaExtTmxjakJDQmdOVkhSOEVPekE1TURlZ05hQXpoakZvZEhSd09pOHZjSFZpYkdsakxuZHBjMlZyWlhrdVkyOXRMMk55YkM5elpXRnNjM0ZwYjNSeWIyOTBaMkV1WTNKc01CMEdBMVVkRGdRV0JCU29NYU9LOWxsWnlNTGtzd1o4T1h4MTh4ekY3REFPQmdOVkhROEJBZjhFQkFNQ0FZWXdDZ1lJS29aSXpqMEVBd0lEU1FBd1JnSWhBTHNCNnpCYlVWWHV5ajBuMkRNd0hkOEZ4MW16UDBwUjNuOVNIeFAyYWZTOEFpRUF6emF3Ynl6WS9vaThoMUIxNG45aHFCM256QmVUbms2akg1VHhZNmVTU2lrPSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFnQ0FJQUFBRDhHTzJqQUFBQ3FVbEVRVlJJeDJQOC8vOC9BeTBCRXdPTndhZ0ZwRmx3OGNLRmlySXlSM3Q3UzFPejBLRGdCZlBtLy96NWszaXp2bjM5bHArVGEydGx0V1RSSW9Ub2Z4aFl0WEtsbHBxNnNyd0NBaWtvUklWSHZIMzc5ajl4NE5TcFUwQXRRSTFXNWhad1FhZ1B6cDg3VjExWmlYQXZJeGo5WnpoNTRrUk5aUldSUHZqOTZ4Y0RPTTB6TVRLaUI5Rzh1WFAvL2ZzSE5GUkFTTEMrc1hIbTdObHVidTRRbTNidDNMbHU3VnBpTEdDRW1jdUlhY0daVTZmQjRjV1FYMUFRR3gvbjdPSXlhZW9VYlYwZGlJdmFtbHVlUFh0R1VTVC8rZzMySFNPRGhvWUdSSVNGaGFXcHBZV1ZsUlVvK09Iamg2YjZCb29zZ0h2cXo1OC9jRGw5ZmYzTTdDd0llOCtlM2F0WHJxUWdtZUlva0RLenMvWDE5RUd5L3hrNk96b2ZQM3BFV1ViRHNBWVlSQzN0YlJ3Y0hFRDJoL2Z2NjJwcUNSZU9qQ1RtWkUwdHJaeThYQWo3OEtGRHk1WXVKZDUwVkFzWWNlcEtUVTgzTmpXQnFPbnU3SHh3L3dFK08vN2pzZ0MzMTVtWm1SdWJtOW5aMllGcXZueiswbEJmaHpPZy9xTzdsUW0vQitFQW1Id0xpb29nQ280Y09yeGswV0lpUFVFZ2twRkJVbkt5bVprNWhOM1QxWFgzemgxaVlvS0pjRFRCQTRxRnVibXRsWXViQzhqKyt2VnJUVlUxcUhRaHpRZU1CSHlockt4Y1dGd01VWG42MUtuNWMrZFN2OEpKU0V5MHRyR0dzQ2YwOTkrNmRRc3V4Y0xDQ3JIN1A1SXJTWWdEZUtGUzM5VEV4OHNIWkgvLzlyMnVHaEZRTjY1ZmgyVlBOb3FxVENVbHBlS3lVbWd4ZlBwTVNXRVJNQU11WDdhc3Y3Y1hJcWlscllYd0ZyeGVnL3FPdUdaU2RFek0zdDE3RGgwNkNQVDBwazBiTjIzY0NJOUZZS1pKejhoRTk4SGZmMzhoRERZMmRpTDkwZEhkcGF1cml4YXdyQ3lzcmUzdHVucTZpTFRYME5BQVRvSXNUeDQvdG5kd2lJeU9BdFlFeEZqQXpjM3Q0K3NMSkw5OS9Rb3NFMFZGUmUzczdSdGJtb0dWRlVxY2pUWWRoNzhGQUloQkxsTmQ3anUxQUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzEiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkQmxvYiIsImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJsYXJnZUJsb2JLZXkiLCJtaW5QaW5MZW5ndGgiLCJ1dm0iXSwiYWFndWlkIjoiMmMyYWVlZDg4MTc0NDE1OTgxNGI0ODZlOTJhMjYxZDAiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjp0cnVlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImxhcmdlQmxvYnMiOnRydWUsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6dHJ1ZSwiYWx3YXlzVXYiOmZhbHNlfSwibWF4TXNnU2l6ZSI6MTIwMCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0IjoxNiwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoxNiwidHJhbnNwb3J0cyI6WyJ1c2IiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fV0sIm1heFNlcmlhbGl6ZWRMYXJnZUJsb2JBcnJheSI6MTAyNCwibWluUElOTGVuZ3RoIjo0LCJmaXJtd2FyZVZlcnNpb24iOjMzNjE5OTc2LCJtYXhDcmVkQmxvYkxlbmd0aCI6MjU2LCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6MzJ9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0xMS0wNCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMzYxOTk3NiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJORU9XQVZFIFdJTktFTyBWMi4wIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNTExMDQwMDIiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblByb2ZpbGVzIjpbImNvbnN1bWVyIl0sImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMTEtMDQiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzM2MTk5NzZ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0xMS0wNCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMzYxOTk3Nn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0xMi0wNSJ9LHsiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjNiYzEyMTFjMTJkOTUyYTMyYjAzYzU1Yjg4ZDNlYTZmN2QxNTJmMTgiLCI4ZGMyYTZmMjkzZWE0ODQ1YmI3NmE0MmM0MmI4OTYwMWFhYjU0N2Y4Il0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjNiYzEyMTFjMTJkOTUyYTMyYjAzYzU1Yjg4ZDNlYTZmN2QxNTJmMTgiLCI4ZGMyYTZmMjkzZWE0ODQ1YmI3NmE0MmM0MmI4OTYwMWFhYjU0N2Y4Il0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJHb1RydXN0IElkZW0gS2V5IFUyRiBBdXRoZW50aWNhdG9yIn0sImRlc2NyaXB0aW9uIjoiR29UcnVzdCBJZGVtIEtleSBVMkYgQXV0aGVudGljYXRvciIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyLCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50IiwicmVtb3RlX2hhbmRsZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQnpUQ0NBWE9nQXdJQkFnSUpBTFMzU2liR0RYVFBNQW9HQ0NxR1NNNDlCQU1DTURzeElEQWVCZ05WQkFNTUYwZHZWSEoxYzNRZ1JrbEVUeklnVW05dmRDQkRRU0F4TVJjd0ZRWURWUVFLREE1SGIxUnlkWE4wU1VRZ1NXNWpMakFlRncweE9URXlNRFF3TmpVNU5EQmFGdzAwT1RFeE1qWXdOalU1TkRCYU1Ec3hJREFlQmdOVkJBTU1GMGR2VkhKMWMzUWdSa2xFVHpJZ1VtOXZkQ0JEUVNBeE1SY3dGUVlEVlFRS0RBNUhiMVJ5ZFhOMFNVUWdTVzVqTGpCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQkE1bWpZc2pvd0FJMGpucGkvL0NKM0tuemhHYlRVbXN0TldxTjc4aW9HMUNUSzlnUGdQbDlVaUZPSk8vditGZkZLK1B4djEwYzYwNGR2bElEQWJLdytpallEQmVNQXdHQTFVZEV3RUIvd1FDTUFBd0RnWURWUjBQQVFIL0JBUURBZ0VHTUIwR0ExVWREZ1FXQkJTZ1d0WTBuRWNtUG1HREx1Q3djZUtlSlBTY296QWZCZ05WSFNNRUdEQVdnQlNnV3RZMG5FY21QbUdETHVDd2NlS2VKUFNjb3pBS0JnZ3Foa2pPUFFRREFnTklBREJGQWlBeG9WczZxajdEWDJ4aXhDampjRFVkeEJUSm1TVExiMGYxclJHd3JBQnpUUUloQVB0MFAzMnF6QWVlcEY0Ly90Z3p4cU5vS2tXRGNhUFBTWHJnK3h6cmxWSHciLCJNSUlCenpDQ0FYYWdBd0lCQWdJQ0FTQXdDZ1lJS29aSXpqMEVBd0l3T3pFZ01CNEdBMVVFQXd3WFIyOVVjblZ6ZENCR1NVUlBNaUJTYjI5MElFTkJJREV4RnpBVkJnTlZCQW9NRGtkdlZISjFjM1JKUkNCSmJtTXVNQ0lZRHpJd01Ua3hNakEwTURZMU9UUXdXaGdQTWpBMU1UQTBNRGN3TXpBMU1EQmFNRHN4SURBZUJnTlZCQU1NRjBkdlZISjFjM1FnUmtsRVR6SWdVbTl2ZENCRFFTQXhNUmN3RlFZRFZRUUtEQTVIYjFSeWRYTjBTVVFnU1c1akxqQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJBNW1qWXNqb3dBSTBqbnBpLy9DSjNLbnpoR2JUVW1zdE5XcU43OGlvRzFDVEs5Z1BnUGw5VWlGT0pPL3YrRmZGSytQeHYxMGM2MDRkdmxJREFiS3craWpaakJrTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0VHTUIwR0ExVWREZ1FXQkJTZ1d0WTBuRWNtUG1HREx1Q3djZUtlSlBTY296QWZCZ05WSFNNRUdEQVdnQlNnV3RZMG5FY21QbUdETHVDd2NlS2VKUFNjb3pBS0JnZ3Foa2pPUFFRREFnTkhBREJFQWlBa3JMTTVWM0RuRDBYY1ZVRlcrTk1GY0JaQ08xRnh5WXo0VmtQSDNBN0tHUUlnSGF5VGZVODhvSUVpTU5heDEzdGdaYW9oaE1BWEVNanFUeUl0YmNUVDhRYz0iLCJNSUlCcVRDQ0FVK2dBd0lCQWdJQkFUQUtCZ2dxaGtqT1BRUURBakE3TVNBd0hnWURWUVFEREJkSGIxUnlkWE4wSUVaSlJFOHlJRkp2YjNRZ1EwRWdNVEVYTUJVR0ExVUVDZ3dPUjI5VWNuVnpkRWxFSUVsdVl5NHdJQmNOTWpFd016QXlNRFl4T0RRNFdoZ1BNakExTVRBeU1qTXdOakU0TkRoYU1Ec3hJREFlQmdOVkJBTU1GMGR2VkhKMWMzUWdSa2xFVHpJZ1VtOXZkQ0JEUVNBeE1SY3dGUVlEVlFRS0RBNUhiMVJ5ZFhOMFNVUWdTVzVqTGpCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQkl6a01kdE5adDBaT3pPK3UxZjJFS1pSU25maHZ5d2Job25CRjlOU1BxMldHN251UmkveXZaOGxEandwNWRhclE2T2RaZytIcWJTU2VYSlh3N1VwY2xTalFqQkFNQThHQTFVZEV3UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdFR01CMEdBMVVkRGdRV0JCUmpXeFRvMUVxMzNacnhmTERXc3NkZGJEL3ZaVEFLQmdncWhrak9QUVFEQWdOSUFEQkZBaUIrRTA5R3ptY1lsTTk1cVQvYWZuUFU5cTZYSm14T1NLV0FSTzUra2dVbldnSWhBSWE5bjVwNDB0Y0dmbWVGNi9XdllvakFOdXlrUXFoVms4V25mZzE1UzY5ciJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFqQ0FZQUFBRDE3Z2hhQUFBQUJHZEJUVUVBQUxHT2ZQdFJrd0FBQUNCalNGSk5BQUNIRHdBQWpBOEFBUDFTQUFDQlFBQUFmWGtBQU9tTEFBQTg1UUFBR2N4elBJVjNBQUFLTDJsRFExQkpRME1nVUhKdlptbHNaUUFBU01lZGxuZFVWTmNXaDgrOWQzcWh6VERTR1hxVExqQ0E5QzRnSFFSUkdHWUdHTW9Bd3d4TmJJaW9RRVFSRVFGRmtLQ0FBYU9oU0t5SVlpRW9xR0FQU0JCUVlqQ0txS2hrUnRaS2ZIbDU3K1hsOThlOTM5cG43M1AzMlh1ZnRTNEFKRThmTGk4RmxnSWdtU2ZnQjNvNDAxZUZSOUN4L1FBR2VJQUJwZ0F3V2VtcHZrSHV3VUFrTHpjWGVycklDZnlMM2d3QlNQeStaZWpwVDZlRC8wL1NyRlMrQUFESVg4VG1iRTQ2UzhUNUlrN0tGS1NLN1RNaXBzWWtpaGxHaVprdlNsREVjbUtPVytTbG4zMFcyVkhNN0dRZVc4VGluRlBaeVd3eDk0aDRlNGFRSTJMRVI4UUZHVnhPcG9odmkxZ3pTWmpNRmZGYmNXd3loNWtPQUlva3RnczRySGdSbTRpWXhBOE9kQkh4Y2dCd3BMZ3ZPT1lMRm5DeUJPSkR1YVNrWnZPNWNmRUN1aTVMajI1cWJjMmdlM0l5a3pnQ2dhRS9rNVhJNUxQcExpbkpxVXhlTmdDTFovNHNHWEZ0NmFJaVc1cGFXMW9hbWhtWmZsR28vN3I0TnlYdTdTSzlDdmpjTTRqVzk0ZnRyL3hTNmdCZ3pJcHFzK3NQVzh4K0FEcTJBaUIzL3crYjVpRUFKRVY5YTcveHhYbG80bm1KRndoU2JZeU5Nek16amJnY2xwRzRvTC9yZnpyOERYM3hQU1B4ZHIrWGgrN0tpV1VLa3dSMGNkMVlLVWtwUWo0OVBaWEo0dEFOL3p6RS96andyL05ZR3NpSjVmQTVQRkZFcUdqS3VMdzRVYnQ1Yks2QW04S2pjM24vcVluL01PeFBXcHhya1NqMW53QTF5Z2hJM2FBQzVPYytnS0lRQVJKNVVOejEzL3ZtZ3c4RjRwc1hwanF4T1BlZkJmMzdybkNKK0pIT2pmc2M1eElZVEdjSitSbUxhK0pyQ2RDQUFDUUJGY2dERmFBQmRJRWhNQU5Xd0JZNEFqZXdBdmlCWUJBTzFnSVdpQWZKZ0E4eVFTN1lEQXBBRWRnRjlvSktVQVBxUVNOb0FTZEFCemdOTG9ETDREcTRDZTZBQjJBRWpJUG5ZQWE4QWZNUUJHRWhNa1NCNUNGVlNBc3lnTXdnQm1RUHVVRStVQ0FVRGtWRGNSQVBFa0s1MEJhb0NDcUZLcUZhcUJINkZqb0ZYWUN1UWdQUVBXZ1Vtb0oraGQ3RENFeUNxYkF5ckEwYnd3ellDZmFHZytFMWNCeWNCdWZBK2ZCT3VBS3VnNC9CN2ZBRitEcDhCeDZCbjhPekNFQ0lDQTFSUXd3UkJ1S0MrQ0VSU0N6Q1J6WWdoVWc1VW9lMElGMUlMM0lMR1VHbWtYY29ESXFDb3FNTVViWW9UMVFJaW9WS1EyMUFGYU1xVVVkUjdhZ2UxQzNVS0dvRzlRbE5SaXVoRGRBMmFDLzBLblFjT2hOZGdDNUhONkRiMEpmUWQ5RGo2RGNZRElhRzBjRllZVHd4NFpnRXpEcE1NZVlBcGhWekhqT0FHY1BNWXJGWWVhd0IxZzdyaDJWaUJkZ0M3SDdzTWV3NTdDQjJIUHNXUjhTcDRzeHc3cmdJSEErWGh5dkhOZUhPNGdaeEU3aDV2QlJlQzIrRDk4T3o4ZG40RW53OXZndC9BeitPbnlkSUUzUUlkb1JnUWdKaE02R0MwRUs0UkhoSWVFVWtFdFdKMXNRQUlwZTRpVmhCUEU2OFFod2x2aVBKa1BSSkxxUklrcEMwazNTRWRKNTBqL1NLVENacmt4M0pFV1FCZVNlNWtYeVIvSmo4Vm9JaVlTVGhKY0dXMkNoUkpkRXVNU2p4UWhJdnFTWHBKTGxXTWtleVhQS2s1QTNKYVNtOGxMYVVpeFJUYW9OVWxkUXBxV0dwV1dtS3RLbTBuM1N5ZExGMGsvUlY2VWtackl5MmpKc01XeVpmNXJETVJaa3hDa0xSb0xoUVdKUXRsSHJLSmNvNEZVUFZvWHBSRTZoRjFHK28vZFFaV1JuWlpiS2hzbG15VmJKblpFZG9DRTJiNWtWTG9wWFFUdENHYU8rWEtDOXhXc0pac21OSnk1TEJKWE55aW5LT2NoeTVRcmxXdVR0eTcrWHA4bTd5aWZLNzVUdmtIeW1nRlBRVkFoUXlGUTRxWEZLWVZxUXEyaXF5RkFzVlR5amVWNEtWOUpVQ2xkWXBIVmJxVTVwVlZsSDJVRTVWM3E5OFVYbGFoYWJpcUpLZ1VxWnlWbVZLbGFKcXI4cFZMVk05cC9xTUxrdDNvaWZSSytnOTlCazFKVFZQTmFGYXJWcS8ycnk2am5xSWVwNTZxL29qRFlJR1F5TldvMHlqVzJOR1UxWFRWek5YczFuenZoWmVpNkVWcjdWUHExZHJUbHRITzB4N20zYUg5cVNPbkk2WFRvNU9zODVEWGJLdWcyNmFicDN1YlQyTUhrTXZVZStBM2sxOVdOOUNQMTYvU3YrR0FXeGdhY0ExT0dBd3NCUzkxSG9wYjJuZDBtRkRrcUdUWVlaaHMrR29FYzNJeHlqUHFNUG9oYkdtY1lUeGJ1TmU0MDhtRmlaSkp2VW1EMHhsVEZlWTVwbDJtZjVxcG0vR01xc3l1MjFPTm5jMzMyamVhZjV5bWNFeXpyS0R5KzVhVUN4OExiWlpkRnQ4dExTeTVGdTJXRTVaYVZwRlcxVmJEVE9vREg5R01lT0tOZHJhMlhxajlXbnJkemFXTmdLYkV6YS8yQnJhSnRvMjJVNHUxMW5PV1Y2L2ZNeE8zWTVwVjJzM1lrKzNqN1kvWkQvaW9PYkFkS2h6ZU9LbzRjaDJiSENjY05KelNuQTY1dlRDMmNTWjc5em1QT2RpNDdMZTVid3I0dXJoV3VqYTd5YmpGdUpXNmZiWVhkMDl6cjNaZmNiRHdtT2R4M2xQdEtlMzUyN1BZUzlsTDVaWG85Zk1DcXNWNjFmMGVKTzhnN3dydlovNDZQdndmYnA4WWQ4VnZudDhINjdVV3NsYjJlRUgvTHo4OXZnOTh0ZnhUL1AvUGdBVDRCOVFGZkEwMERRd043QTNpQklVRmRRVTlDYllPYmdrK0VHSWJvZ3dwRHRVTWpReXRERjBMc3cxckRSc1pKWHhxdldycm9jcmhIUERPeU93RWFFUkRSR3pxOTFXNzEwOUhta1JXUkE1dEVablRkYWFxMnNWMWlhdFBSTWxHY1dNT2htTmpnNkxib3Ird1BSajFqRm5ZN3hpcW1ObVdDNnNmYXpuYkVkMkdYdUtZOGNwNVV6RTJzV1d4azdHMmNYdGladUtkNGd2ajUvbXVuQXJ1UzhUUEJOcUV1WVMvUktQSkM0a2hTVzFKdU9TbzVOUDhXUjRpYnllRkpXVXJKU0JWSVBVZ3RTUk5KdTB2V2t6Zkc5K1F6cVV2aWE5VTBBVi9VejFDWFdGVzRXakdmWVpWUmx2TTBNelQyWkpaL0d5K3JMMXMzZGtUK1M0NTN5OURyV090YTQ3VnkxM2MrN29lcWYxdFJ1Z0RURWJ1amRxYk16Zk9MN0pZOVBSellUTmladC95RFBKSzgxN3ZTVnNTMWUrY3Y2bS9MR3RIbHViQ3lRSytBWEQyMnkzMVd4SGJlZHU3OTlodm1QL2prK0Y3TUpyUlNaRjVVVWZpbG5GMTc0eS9hcmlxNFdkc1R2N1N5eExEdTdDN09MdEd0cnRzUHRvcVhScFR1bllIdDg5N1dYMHNzS3kxM3VqOWw0dFgxWmVzNCt3VDdodnBNS25vbk8vNXY1ZCt6OVV4bGZlcVhLdWFxMVdxdDVSUFhlQWZXRHdvT1BCbGhybG1xS2E5NGU0aCs3V2V0UzIxMm5YbFIvR0hNNDQvTFErdEw3M2E4YlhqUTBLRFVVTkg0L3dqb3djRFR6YTAyalYyTmlrMUZUU0REY0xtNmVPUlI2NytZM3JONTB0aGkyMXJiVFdvdVBndVBENHMyK2p2eDA2NFgyaSt5VGpaTXQzV3Q5VnQxSGFDdHVoOXV6Mm1ZNzRqcEhPOE02QlV5dE9kWGZaZHJWOWIvVDlrZE5xcDZ2T3lKNHBPVXM0bTM5MjRWek91ZG56cWVlbkw4UmRHT3VPNm41d2NkWEYyejBCUGYyWHZDOWR1ZXgrK1dLdlUrKzVLM1pYVGwrMXVYcnFHdU5heDNYTDYrMTlGbjF0UDFqODBOWnYyZDkrdytwRzUwM3JtMTBEeXdmT0Rqb01YcmpsZXV2eWJhL2IxKytzdkRNd0ZESjBkemh5ZU9RdSsrN2t2YVI3TCs5bjNKOS9zT2toK21IaEk2bEg1WStWSHRmOXFQZGo2NGpseUpsUjE5RytKMEZQSG95eHhwNy9sUDdUaC9IOHArU241Uk9xRTQyVFpwT25wOXluYmo1Yi9XejhlZXJ6K2VtQ242Vi9ybjZoKytLN1h4eC82WnRaTlRQK2t2OXk0ZGZpVi9LdmpyeGU5cnA3MW4vMjhadmtOL056aFcvbDN4NTl4M2pYK3o3cy9jUjg1Z2ZzaDRxUGVoKzdQbmwvZXJpUXZMRHdHL2VFOC9zM0JDa2VBQUFBQ1hCSVdYTUFBQTdFQUFBT3hBR1ZLdzRiQUFBQUlYUkZXSFJEY21WaGRHbHZiaUJVYVcxbEFESXdNVGc2TURVNk1qZ2dNVFk2TkRJNk1UVDlod3JmQUFBSUhVbEVRVlJZUjUxWEMxQlU1eFgrZGxsZ1FkNFBVUkFmaVNoYU5HMWk3Qmh0bTA1S1VrblRXQitOUWEwWUcyT0Rsam9PR2sxaU81MXFOR1Fjazlva1JKczA0SXc2cHVOMFRFeFRhT3NZUzdTU3BocGYxS0FWQlJaaFdSNHJJTHQ3YjcvejM3dnNRaGFDL1M3L3N2ejN2TS81ei9teDZBU0dDWjJQL0ZnczhwZjY2SU5mak1WNE9XeFl6ZC9EZytaWFlFSGxKNS9qdmdXYjhPanFIV2hzY2FuOU8xVXVHRjRFaE1RVTN0cmhSdDdxbDNHcXNocElpQUY4UHFEck5wWVY1T0gxRjFjZ0pqb3FLRkxDSStJSE4yeDRFVENWLzN6Ykg1QThjUkZPVlY4Q1JpY0RVWkZBTkpmVml2SURGYWo2OXhlS1Rpa2tqNmJSRkgxdzVZSkJJdERmNmo5Vm5zYThaM2JRV3k4UVM2K3Q1anQzdDRyQTFzMEYyTHpxY1dPUDZMMWFwNHlLR0RmRzNDRUdDNFFZRUF5Tmp4KzExNXYwS1krdTE1R1dweU1uWDhjMFdVdDFaRCtoSStsaGZXSFJUdDNyOVpuVUJocFhiZFRQSVZ3L2p4RzZZODBXYzVkeWZRRzV3UmkwQnZLTGQyTi8yUWZNY3l4Z1o1Z0ZrdStXZG95Y09BWlYrMytOdXpQVGpIM0N0ZnNkT05ZVzAxRWZ3cERBSFkxUEIvKzJJV05mS2VLWHpEY0lCOENpTVZIQjFmdjJINDloWldFSk1NSU94SXpnRHUzVFdQNGRYVFRFaHZKWGlyRDBzVGtHTWRGVGZRWjEzMTRBWDNjakZiTXUrQ2xRaGFoaTd1WFRnc2praVJoejdCRHNPZG5xRFZnZkZxYXlMd0pmWEcvQzdDVy93czNMekY5S29sR2U4cWFuVnlsZnUzWWhYbnUrUUVnVnZNMnRhSmozRkRxcmp0TEhWTzdZMUw1RXdJZDJxclpRUkx6Nk5QWTkzRzlHYk80aVpCNHRKM21ZTXEvUEFNdTRIOUhEQ0s1d1E3R1BYamUxWXNhRDk2TGluUmVZaVdnaFUzQ3NmZzdPMHRmb2F3eUZSQ3RCdWdxNUMySFdSR1JXSFlidTlURXk4NkZyN2FSTDRuc3hpV0pwbkMwcEExbk9jMHFXTXErK3ljV3ozQU5FbXNwN2JzTVdic1hISCszQzZmZTI5U2x2ZS9jUUxsamk0Q3A5aS82bWtGbVVpODl1cmphTTNMb2RrM3gxaVBybWZZaWVQUlBadmhzWXViMkVLV2dtdDRlVU9ubGk0V210ZytabVNna1ZBWWV6RGFOemxnSnBTVHhEWHFTUFRrTDlYM2NyQWtIM3ljOXc0NGNyNEdtdVVlRVdNWVkzM2FyUUVuOWNnUFNEYnhqRVJBZUZoOW1zTENQV2tZbmFqQm53TlRTUkw0d0d0V055VnlPc1VYWXpRU0pPTXFHV3h2N0NWSmk0Tm1zZXJzeWFCYTM1SnBWTDFRdUxGNzFvZ0gzYTF6Q3BycmFmOHBLM2p5QithajVpNk5EcmJFNSsyTWFtMDFpdmlvSlJuTExNRkNpb1BXUFRMQXNGOTBrcHNsSDhKa2RSd3UxVVFpYjhwUUlUenY0TjRabnBpdTVFOVVWRTVPUmp3NWE5UUJ4VEZoR093azBCdytRSUc5TDdJMkNBNkF4UzdFY1k3R1NVRXBJaTYwYnE5aDNJMXVzeEl2Yzc2djMxbXk1TW03Y0IzM3FrQ0I1aFQ0NGpFNDhpajVoTkRQa0tCQXdZQk1vdXRYZ3E2RlhLeG1mVnZxQjljU0hHM3JNTTV5NWVBektZbnJCUVBnYndaZmNHU2NGQXlBRlNqOFVnYjMxMUR5NWFZdUErZUFqVzlCVGo5SWlCYnA2a0xzNEh2eVpwWUVFWU9nWHNUQU1aQk1JazNpdVoxa2hjdWVzQk5QNWlIVk9UeUhuRHdTUkdkN05aT1Z3b0xseUFqVDliUUNONHhDZ3FNdHhvVG41STdSaEZHRURBQUU0dnRRWkFUTExLWTJIbjZ2YkF3MGtuUFVCMmRhMFhXa01MN3YxNkZ0cHEzOFBMNi9QWmlHaVFNUEdYUFZ3aUU0Q1N3eWNZUVJFZ1Y0Z2lORG9jUDNrOGpXNG12VjVUcDhFZGw0REtEM2JpMDBOYkVXODJLMWNudlRmSGRiQTArUzZTNUFsRy93aUVxQUdibW15R2Fqa05HanBWMTB2NzdXNU1haitIaDc2UnBlamFlVGVZdGZnRnZQSDdJN3lrUkNtZVlJamtyNDVBaUJxUXJxV2hoK0o2MkV3YmtMQnlKYWJxSFVoYUV4aE1ULzl5RHhMR1BZNlQvNnBoRCtBRUZXMnNxYzViUnJzVkRCMEJDWDFRRGRnNHFmeklkckczVDc4SEVWT21ZSEp6RTBidDVhZzI4ZGJCU2xnbXpNZmVzZytCZEU1RXVUZElGQ1VObkNjbHhjdE1TbTVUdGhIRi9sRldHbFhxbVdQMWhVM2s4alVIL256aWpMeENXRUlpeHA5aDE3dndkOWhTT0N1STA1OWZRY29EcS9ETXVsMjhNekRjZnE5djh6VGNhTWFTUmQrRmZ2VXdpcGJuS1hxQnQxRUdFZ3QzUUdxVUFaR1I5RmpHcjRBRnBETVZjeGMraHlrL0tFYWR3Mm5zRTIyOEY4eGMvQ0ptUGxRSVoxdUhlVytnQ0M5NUcxdVJNM2s4NmkvdHg3NGRhMHdPOHJ4Wnpna2FEMi9kTmRvWXJpS2dNN0hRZUxzaSttNUV1U3QrdzRyK0I1QnFDcFZLRm8rYTIvRFRaK2NqbFMzMnBhM3ZBb2xCVnpTcG1YWTM1M3NjanY1dUEzTG5URGYyaWE0VHAxRC95Rko0dWhwWXlNbFVha3hRTDBlM0xUNEZrOXA0c3laTUE5UlhsQjA1Z2VVYk9JYWxveVdhVFVad2k5MU5HbFdNakZkelQvSk1iTnU4SEp1ZUR0eUl2YzFPM0ppN0RMYytyZUNCVFNPMVRYR0kxeDdjUk95TTd5SHo0OE93MEFuWlZ3WUlZL0M5c0xoa0gxNTVxWXlEaFVjd2lxTlp2ZU9TT3VuMXNPczU4Y1JUaitIQXppS0R3VVRqVDliQlZWNUt4WEdrdGxPcDhQbW91aFVSOWpSa1ZCN2dSZVYrZzFqcVRlVEtoU1FVdkpwUG4vM2tGbDdKNXhyWDhLbFBxdTlaMzErbk8xcmFUQ29EemxmMzhDcHU1MVU4VWE5Qkp0ZFkvUkxYQmY1OUhyRzZzN1RNcEpScmYvOXIvSmNNa0lqd3B3L1Y1MnYxMURtcmRRdi9MM2ovK0dmbXJvSE9pdVA2ZjJLenFDUmFLYXpCZUs1eCtrV2tjUzlLYnloWWIxSUtSSzZ4Z2pIby93VkR3Y09yVmIzaytleHhoanVGZ1phaEkySWt6MDJJdVQ4WFk5N2ZCOXRJS1Q2VnZFRmhkSjRoSVNJQ05qYXRmUjQxR2FQUWZmWXMxWTd1VTY0eHo5WUlPKzZxK2dUai8vbWhvVng4QzdDR2hrVGdUbkQ3OG4vMXE5TWZaczRqR2VwVWhqcWV1VTdTbmJ2Mm1oUjNoanN5UUdOaCtqUG8vdWlZWHBlWHJ6dUt0Z1Q5TnhuNi83K2g4SC9WUUNpSWtLRnlIUnJBL3dDNGUrTytaMWNuNFFBQUFBQkpSVTVFcmtKZ2dnPT0ifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMS0wMy0wOSIsInVybCI6Imh0dHBzOi8vd3d3LmdvdHJ1c3RpZC5jb20vaWRlbS1rZXkiLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IlUyRiBBdXRoZW50aWNhdG9yIChJZGVtIFNlbnNlKSIsImNlcnRpZmljYXRlTnVtYmVyIjoiVTJGMTAwMDIwMTYwMzIzMDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjIuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4zLjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjAtMDktMTgiLCJ1cmwiOiJodHRwczovL3d3dy5nb3RydXN0aWQuY29tL2lkZW0ta2V5IiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJVMkYgQXV0aGVudGljYXRvciAoSWRlbSBTZW5zZSkiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlUyRjEwMDAyMDE2MDMyMzAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4yLjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMy4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIwLTA5LTExIiwidXJsIjoiaHR0cHM6Ly93d3cuZ290cnVzdGlkLmNvbS9pZGVtLWtleSIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiVTJGIEF1dGhlbnRpY2F0b3IgKElkZW0gU2Vuc2UpIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVMkYxMDAwMjAxNjAzMjMwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMi4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjMuMCJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjEtMDMtMDkifSx7ImFhZ3VpZCI6ImYyMTQ1ZTg2LTIxMWUtNDkzMS1iODc0LWUyMmJiYTdkMDFjYyIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiZjIxNDVlODYtMjExZS00OTMxLWI4NzQtZTIyYmJhN2QwMWNjIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IklELU9uZSBLZXkifSwiZGVzY3JpcHRpb24iOiJJRC1PbmUgS2V5IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjE2Nzc3MjE2LCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX0seyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AzODRyMV9lY2RzYV9zaGEzODRfcmF3Iiwic2VjcDUyMXIxX2VjZHNhX3NoYTUxMl9yYXciLCJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbIndpcmVkIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDM2pDQ0FqK2dBd0lCQWdJR0FPcTBBQUFDTUFvR0NDcUdTTTQ5QkFNRU1JR1JNUXN3Q1FZRFZRUUdFd0pWVXpFTE1Ba0dBMVVFQ0F3Q1ZrRXhEekFOQmdOVkJBY01CbEpsYzNSdmJqRXRNQ3NHQTFVRUNnd2tTVVJGVFVsQklFbGtaVzUwYVhSNUlHRnVaQ0JUWldOMWNtbDBlU0JWVTBFZ1RFeERNVFV3TXdZRFZRUUREQ3hKUkVWTlNVRWdTV1JsYm5ScGRIa2dZVzVrSUZObFkzVnlhWFI1SUZWVFFTQk1URU1nVW05dmRDQkRRVEFnRncweU5EQTVNVGd5TWpBd01EQmFHQTh5TURZME1Ea3hPVEl4TlRrMU9Wb3dnWkV4Q3pBSkJnTlZCQVlUQWxWVE1Rc3dDUVlEVlFRSURBSldRVEVQTUEwR0ExVUVCd3dHVW1WemRHOXVNUzB3S3dZRFZRUUtEQ1JKUkVWTlNVRWdTV1JsYm5ScGRIa2dZVzVrSUZObFkzVnlhWFI1SUZWVFFTQk1URU14TlRBekJnTlZCQU1NTEVsRVJVMUpRU0JKWkdWdWRHbDBlU0JoYm1RZ1UyVmpkWEpwZEhrZ1ZWTkJJRXhNUXlCU2IyOTBJRU5CTUlHYk1CQUdCeXFHU000OUFnRUdCU3VCQkFBakE0R0dBQVFBbGNUWXNDVjJMeHV3SzhRNVBLKzAzL3dTQVBTcFFaUjZrMTJQMnBxZkIxcDdNM0pVZlV3dmVtaXRvaEtKWTJFZXBQTGFkSWl3ejJnVmFyUEI2TUZjL0g0QlJtdjV5Y1VZaFd3SnlQaVJmcUZKUXJjbk9yMlFtR1VtN24vR1poUUtWejV1cjhMN05PcG5vbnZ4Y3VoY2V1amVlMXhIcElVK1dyeUNvMmhwTmZYb1lpS2pQREE2TUIwR0ExVWREZ1FXQkJRN1ZqbEwzYWdTVFh2VkFGeUtiNEdJRWNwMHd6QUxCZ05WSFE4RUJBTUNBUDh3REFZRFZSMFRCQVV3QXdFQi96QUtCZ2dxaGtqT1BRUURCQU9CakFBd2dZZ0NRZ0UrZmJiSkZjWGlGZ1FaYlpyM3hRZFVXU25nZzFoTnJrSEZIaDVRNlJFSFhIRVhheXgrSW1mMDBpUG9OcEFFNmM5bUNTVFZlV0JzR09xRFM0QjM2UlZRb1FKQ0FiWHdNRCtsMUYvTHN4UkJlNCswTUhod3IyMHY2aGttK3MyS09WVXIybitJQXoyY2doQ0NsTE9UZFhYdlFHbDQ2NTNYWDN2d1g5VnBneVJTVVQxdGhpZXgiXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBRElBQUFBeUNBSUFBQUNSWFIvbUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFGaVVBQUJZbEFVbFNKUEFBQUFvclNVUkJWRmhIelZocGNGUFhHZFh5bm1RdFhpWEwrMElhc01IR093WWJFbEpLZ0VrQ0FhWU0wMHliTW1sTEtBTmhuOG5DWmdncDVBL1VoSTR6aE5EU2FXY0tKR3lGTUtHQk5ISHhnbzF0R2JNYmIvSyt5SllsV2N1VDFITjFoVkJrVzlJUFluTEc0em52M2l2ZDg3N3RmbGQ4aDhQQkc0WEdlMTExbFpyZXptSE9adWZ6WFlOUEV3NGV3d3BqRWtLeVp5WEZKeWxjZ3g3d2xuWDg4SGZIRDEwMzZpMFNLU3NRQ240VVRVNWdXeHRuSHpGYUkxVFM5VHQrdm1SbHJtdkNpU2V5QnJYREsrYVVHSFRXNEZBeEJOSEJDWUROWmgvc055WlBpVGo1M3pVOG5wQU91bVIxdHZjdlNpOVd4UVREdG5SaWdtRTJjVWFqdWJSNUd5TVU0NUhLc3M5TzNpK1RpWVhNeEJscE5DeG1UaGJNbnIreEVaem8rR0R0YVNId1REVUJJakhUMjJVNGZ2Z2FPTjlnTU14Ty9EZ3FOb1QvNDRWM3dMRGJIYnJCa2JLMkR3UVhUNmxsOHFDZmdpWkFJT0RiN2J6SzcrOExwOFFzN0d6VFBYTVBQb0hERWE2U0NqbzF1c0RMQVl5TWZNWWZ6Vi84OTN4MEx3RG9vK09INndNQnhIUnBoZ1JXQ3hlZ0E3RWxrZ1VWVml4bWVIeVN3cHpWTGdBUUFjNUhMQkFLeWFQRHdTZFM3QTVFTVo2eHhEVENCYWdNWDJXeFlCZGVRS0x3cFQyZHVyUGw2eS9YYjc1UXZXRjRjTVJxc1QyWG9yeXMzb1FSaFVxR2ttMFlObS9ac3hDUFg5L2FyTzB6Y0p3OVBqbjhzbm96MWl4OUk4ZWdON3UreXgvNGVCRVg5UWZUaVBXMWxSbWhFUkx3TlV0UGlJTVltR3A2WGp5ZGZYU3ZGM1ppUmNKdnY3cERSOElVVXFHUVgxbmFWUGJOUXp4dUxKcHY0NGc1NmF4ZkNBSlpDRlAxOXhpTGlwZUJOei9zcXloOUpBNWlyVll1TFRNT0kyMlArcTFXRzEvQVoxaEJRMTJIOHhPOHlkT2lZSzBJaGF4bzQzazY4c2QzWDlMclRKVDdnejBnYStIay91MjZBb0dRdUh2NzIyY1VrVEtRRVlNMXR6QVpSRjJsRVlrWUVCaXNvMlVJQkVqUGpvTldKUGpnZ1BHckwrb3g4cHUxaGZpOE94dDh3Y0ZEYlBrQmlYUUx0M1hmSXZEcTBwWTc5UjJzaU1HZ1BEZ29WRUY4V24yOUZlNERRYlFpemgvZTdnYlBtWldNNEFNSkNaZnMzM1lKQk5oNWFNbmd3QWpsdnVIZmliRDg2czB2VWI1bnk3a0lKVEVWeDlsU002THA0TzJiN2V6akF4NW1VOS9RZ0dUT1RJQTVRV0JDSzJmN1Iwa1orSUpsNlFxbEhNNGxTMzNDanhQdE5qdSs5NjNOYzhDdm5Hdm9hdFBSRm9PejJMTm1KamlYOE83V2R3bFoxL2ZBYkRVVnJTQVNHYXRVeWZCeDhPRFFvRS8yWFhYTzgzWVh2NDRrcGR3SC9NZ2FHalJ0K3hOeEg3Qm53NFV3WnlZQ2NDdE53NVlIQTR6b1NaV0IyV3JMaVN4Z2FtWXNOUXhLRjdMaDRJNHI0UGx6SjAxSmk2TCs5UUZmc2xBU1pUTFI0cFZaNENjL3IwVDFwdWNCL001WmJIQVRlRTFGVTVDRUphdWRRSXkzTmcxUW5wbWY0TjVlSmhlZk9GSktlZEhocGYwOXc1U1BCMSt5dEgzR1BVZElVUUFPN2I0Q1gxQk95bmNRRXhvbUJiK2o3b0lsNkRnRnB1NDNkSUZNejR1RFVla2dzaUZVSWQyMS9pejQ1TFNvM01KSk9ERG8xSmdZVnhiU08zbXlZdmI4NThFLytmQWIyQW0rb0ZNMnpwYVNGa041VFhtTE85NHBVR25yYnJTQlpPUW5vT1M2enh3WTljSS9hd2U2U1dEdFA3b2NoY1BIY1RTdXJJRmVmZEdmbDFKKzRzaDFlVERwWlNtczFpZnhqa0tGbktDY0FpclZsVVNXUkNMQ24zdHJHQ3hNS2QyMWdSaE1HUjB5NzdWcGFKVHAxR2lNTFFzV3hsVnBXazRzK0o1M3ppT3Q4S1YwQ3NCc1ZuNGlTUE9EUHBQSml2cE94eW5nMDlzMW5aUm41c0ZnVDZJYkovZjFxdzliR3Z2QjkvMWxHVzRXNHhsc0RGbFlpVnAxNExOZmd2ZjE2RStmcUpKSVJYUUtjUEFjTnFzOTc0VWs4T3JTWnM5NHA0RHhOQzFhV2hxeUN4SVJESFFjd0x1RksyVGJWcDBFUndqK1llc0x1SkRSS1MrTWFTMEhQcStNQ2dicmFOSFN6b1ZPRURoNGZBRjViMUNEM2dJK0d1Z20wTW1BeUVQRlh2YkFDWVoyaXZMNDVBZ2tPK1ZlR09OYklTSkl5dTVZZXdZOFkwWkMvcHhKWm8rc29STFZsYVNVNXhZbW1ZemU4WUZ6S1RvK1JDb25CcTRxYmZaS0NHVDMvcVBFRDhCSFd5K2ljRkR1aGJGakM2NzU5NzlxQjNwSjFudzBLbXZFRXJicWY4MGdhYmx4NkY2ODdJSHNRd21ndkxhaXpmUGlDWWRPU2xFV09yTzd1T2cvckpnMGpYVEtDMlBMSWtHZ2xPMWNSd3dHYnk1WWtrYWRRb0dkYmxXM1U2NktDYkhaZmlBTGUrY1VrTWlEWE8yQTNuTmp2T2Z1ZzYrRG9KUDllMGtaYnFaMGZEVEdsZ1VnZXNxdU5pTFh3RkdYMFk2NnJjS3lBdlZONGtRZ016L09NOWNBcTVsTHp5WG5Va05OdTVBUnV1TVMrWnRiNE1ydXZac3VTbVVpcnhUMnhMaXlxTUhlKy8xcGNMR0VlV1BOVEtQQjRwNUNxcUlOQkUvTjhKYUY1TXFlU2NwSFhVV2J5Tm53QUhpbC9oNDk0Z0hjb0RPZi91c05GQjA2TlNiR2xRV2dIYmgvcDd1bW9nVjh5OTVGdzFvVE5SaGtNWXdBY1FPT3FQZXNpcWdMU2hWSllRQWREdTNEQUt5Wjk4clV5S2dROEIzcnppaWo1TDd2RUw1a0FSR1JzcUwxNXlqZnNITytic2pWOWNMRk5MeFNNMkk4a3hHQmxUM0xkUURjcW1tbjhZNlh3VjM1d3hKeXZHcWF0TmN1M3FYMXhRZjh5R0lZWVVmYjBOZGZOb0N2MmpoSHhBcHBwV0hRVnoxdVlIQjBvbEJSam5NSk5ZWHlqdFpCZWk2TkdDd3IzcG9oZGRhQzk5LytJa0lsY3dmY2VQQWpDOEFkNXNCMlY5Zjd6czZYZFlQRVlIRGkzVnJYYlNJOUt3NzlKK1VXRTVmdFBDNXJ5eldpSUplcFVIWGYzZjhLT0pLZ29hNWR4UG94RmVCZkZ0N1lPR3c1ZGF3S2ZQbWJPYUdoRXRnR2d6M2R3MVl6VVpNek81RVNLQUJTczBpdTFkMW9GWWxKVU90MTV0VmI1NElBU0NEY2hRSzVtUHFYQllTRVNUNSszMld3WFljWGF3ZEltY1ZKY0xPTStIRjZYZ0x0cSt3Mmh6SmFUc3U2dXFvVmRRUVZIMG13ZWh1UjllMmx1MTBkcnA3Ykx3S1NoWklJRVNVSHlDOVBoZk1teDhhRm95Z2diTlhWSkJsVHBrZGpBZXprdkhlNCtyQjd0N29SbDBQYWtVMjdGOUtSQSs5ZENvc2duV01nQ0VnV2dNUHIyTUh2S2YvMDdKdHdEWFp0cUhFVjFkakVNSmdLYWZqaUwxTG9TRStIRHJVa0xqRnN4ZS95OFBqbDM2cTEvY2JBZnhmaS8zcGhTYmRHNzlYS2pRazA1Z3FWUERvMkJOVzF2cm9kRGdMU1NDVHhteC8yR2cxV0pHblN6eFJvR0ZGUkcrLzJRSVFxSmhobkYvS3V2a3FEeC9GT1FFOVl6TFlaTDhielY3MTZ0TDFwS01EM2dKdGdGUkRVU1d3R1dmUVNnWWloVzhLNWtJc3BXa2dobE5ZTzl3Sy93QmxWTUM5Sm9JeVNlWjIxUGdESElhVHdSd3NQL3ROSDk1YllIby91NGc0bmVDM3dDN3kySWtvbW1Kb1Y1ZGxBUG5QZ21FckxqUlhNWDV4cUdEYkRIYTdoWndxYXpuTVhUaEVrSnNkbXpZcEdvTGxtbmltTWV1dXJ2MG9Wc3pJU3RocE54OUs4ejVTUmNoOE4wQVNBM0FCTWxzc042NlJCd1NqRTl2ajQyTDJmTHVocUgwWVN1WlpNT0pDemZUMkc0bFBMb0FreVVCZjR5T3BGUy9MM0hWdWcweG9SY1JNY1o5aHV4R0ExbXl3bEY1Wm5aS1ZBREI5WEw1eFpLRFc0RjJDK3NiR2x1T2lhdXJ3UEYzYmNRdUhUeDA1OXVzNGxyNDEzaDFWUTlteWNyV0JCM1BydDgxV1JrUUtHendqSlQ5UE9YNnA1RGp0blI5UmprZGxpYm55Z3FmeXVxZm1CVmo5a2hyK2RwbnVxOW5NV1BaVEFrSER4ODFPVk0rYytsNUFZdzRwWWROaXNtTUZWaXNmai94L3hxT2NQUmRTdmF3QUFBQUJKUlU1RXJrSmdnZz09IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiZjIxNDVlODYyMTFlNDkzMWI4NzRlMjJiYmE3ZDAxY2MiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjp0cnVlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImVwIjp0cnVlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJhbHdheXNVdiI6dHJ1ZX0sIm1heE1zZ1NpemUiOjEyNTAsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6MTYsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MjA4LCJ0cmFuc3BvcnRzIjpbIm5mYyIsInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi0zNX0seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTM2fV0sIm1pblBJTkxlbmd0aCI6NCwiZmlybXdhcmVWZXJzaW9uIjoxNjc3NzIxNiwiY2VydGlmaWNhdGlvbnMiOnsiRklETyI6M30sInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjo1MX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTEyLTI3IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjE2Nzc3MjE2LCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IklELU9uZSBLZXkiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI0MTIyNzAwNCIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTEyLTI3IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjE2Nzc3MjE2fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTA2LTI2In0seyJhYWd1aWQiOiI1MzMzNDY5My00YjNmLTQxOTgtODg1Ny01Mzc3MmRlMmFiNjUiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjUzMzM0NjkzLTRiM2YtNDE5OC04ODU3LTUzNzcyZGUyYWI2NSIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJQcmVjaXNpb24gSW5uYUlUIEtleSBGSURPIDIgTGV2ZWwgMiBjZXJ0aWZpZWQifSwiZGVzY3JpcHRpb24iOiJQcmVjaXNpb24gSW5uYUlUIEtleSBGSURPIDIgTGV2ZWwgMiBjZXJ0aWZpZWQiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwiLCJiYURlc2MiOnsic2VsZkF0dGVzdGVkRlJSIjowLjAsInNlbGZBdHRlc3RlZEZBUiI6MkUtMDYsImlBUEFSVGhyZXNob2xkIjowLjAsIm1heFRlbXBsYXRlcyI6MTAsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjAsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjAsImJsb2NrU2xvd2Rvd24iOjB9fSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUVSekNDQXkrZ0F3SUJBZ0lUZHdBQUFDUW9oTk9SUGIwMFJnQUFBQUFBSkRBTkJna3Foa2lHOXcwQkFRc0ZBREJITVJNd0VRWUtDWkltaVpQeUxHUUJHUllEWTI5dE1Sa3dGd1lLQ1pJbWlaUHlMR1FCR1JZSlVISmxZMmx6YVc5dU1SVXdFd1lEVlFRREV3eFFjbVZqYVhOcGIyNHRRMEV3SGhjTk1qTXdNekE1TURjeU16QTRXaGNOTXpNd016QTVNRGN6TXpBNFdqQ0JzVEVMTUFrR0ExVUVCaE1DU1U0eEV6QVJCZ05WQkFnVENsUmhiV2xzSUU1aFpIVXhFREFPQmdOVkJBY1RCME5vWlc1dVlXa3hLakFvQmdOVkJBb1RJVkJ5WldOcGMybHZiaUJDYVc5dFpYUnlhV01nU1c1a2FXRWdVRlpVSUV4VVJERVNNQkFHQTFVRUN4TUpRbWx2YldWMGNtbGpNUkl3RUFZRFZRUURFd2x3Y21WamFYTnBiMjR4SnpBbEJna3Foa2lHOXcwQkNRRVdHR1JsZG05d2MwQndjbVZqYVhOcGIyNXBkQzVqYnk1cGJqQ0JuekFOQmdrcWhraUc5dzBCQVFFRkFBT0JqUUF3Z1lrQ2dZRUFrSzZVa1JlT3ltUDZ1OHJaY24xdkdsUEV6SnpkdTA3Z1Mwc053b2d6ZHE4enBBUnFWaERzd3ZSdThJMnFVdGxHQk1lb3hDelkxY0xNYnpBREpjOEx1ZHR5b202dEZNdEgxaSs5dG5yQ2paUzlqL0picThJcGY1S0xVb0w4VVBkREUrTFFYZnVxWXFwa1NicHU0dEVIQ21hNW13dHJGSTRoUjlVaXVhT1pZNmNDQXdFQUFhT0NBVU13Z2dFL01CMEdBMVVkRGdRV0JCVEVwU1BJKy9Qdm54WXluQXpWejhxb2N2TkFVakFmQmdOVkhTTUVHREFXZ0JUOXE0OE4zQzZjRk00V2RwYlQ3Yi9uTDNRam9EQlFCZ05WSFI4RVNUQkhNRVdnUTZCQmhqOW1hV3hsT2k4dkx5OUNkV2xzWkZOeWRpNVFSMU5QVEZWVVNVOU9VeTVNVDBOQlRDOURaWEowUlc1eWIyeHNMMUJ5WldOcGMybHZiaTFEUVM1amNtd3dkZ1lJS3dZQkJRVUhBUUVFYWpCb01HWUdDQ3NHQVFVRkJ6QUNobHBtYVd4bE9pOHZMeTlDZFdsc1pGTnlkaTVRUjFOUFRGVlVTVTlPVXk1TVQwTkJUQzlEWlhKMFJXNXliMnhzTDBKMWFXeGtVM0oyTGxCSFUwOU1WVlJKVDA1VExreFBRMEZNWDFCeVpXTnBjMmx2YmkxRFFTNWpjblF3SlFZSkt3WUJCQUdDTnhRQ0JCZ2VGZ0JEQUc4QVpBQmxBRk1BYVFCbkFHNEFhUUJ1QUdjd0RBWURWUjBUQVFIL0JBSXdBREFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBbGNJcWpzYTRPU2pxQkl1M2orMDFuczRyUFZwRU5xUiswKy9MMWt6bjN6dmFpWDVZam5Jd21QTUV0Zk04bFdCV0oxeThNeHE2YTN6alB6MDFHQTVDczVBQmhDNHRyR2EyZW1oTmdhaHdmTzkxejg5MUxjZDhNVklieXUwUDRDQnB5MWpERW1lT2ZnZzMzM2FVcHBva3JzdVEwMU9FRkdvbTdUV2cvRHduQlpqb0N3MG9ubklyMnYwemxEVTBKd0pEMjJhaHB4Ykp0d2dobzZsRVVPbStrZDY5K0VvT3Z5SXp2UXZtaldzM3JNdmhudDVkTnc3S1ltVXp5R1dFYUJIbENxT2k2V3NHKzNOVFZtMzhjQVFOVmJmMHJGMU9pRE5hM0dYd1A1bWlIQmVJa1dpbjVvRHk5OUF4aDJ5SnpiRVcxeEVidWFjbzU5eCs0WVlMNmpIL1NRPT0iLCJNSUlEZ3pDQ0FtdWdBd0lCQWdJUWFZam54T3VrNDdCR2MrRWloMjdibWpBTkJna3Foa2lHOXcwQkFRc0ZBREJITVJNd0VRWUtDWkltaVpQeUxHUUJHUllEWTI5dE1Sa3dGd1lLQ1pJbWlaUHlMR1FCR1JZSlVISmxZMmx6YVc5dU1SVXdFd1lEVlFRREV3eFFjbVZqYVhOcGIyNHRRMEV3SUJjTk1Ua3dPREV6TVRJek1EVTNXaGdQTWpFeE9UQTRNVE14TWpRd05UZGFNRWN4RXpBUkJnb0praWFKay9Jc1pBRVpGZ05qYjIweEdUQVhCZ29Ka2lhSmsvSXNaQUVaRmdsUWNtVmphWE5wYjI0eEZUQVRCZ05WQkFNVERGQnlaV05wYzJsdmJpMURRVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPczVhdlJ4YnRSTnpiUURwdldnQ01GQ1dFUkFGN0pTOWJVbTFISk16YmcxUDM5VVRKdDRNclVHemExNDNPVytUMkN0TGE2WXd1T3N2RWZvVkFSbkNmNVFIdXVTc0MyU1MxZ25nMTJHQ09iR0Jhc0lCSEMyMVI5SFZzSTBXNHV4ZjVrY0dOaDhZeVN0cGx4WFBjS3hpZzJ0ck1EMVU0aXptNExlTnVGU3FjWGYxeGsvanJJb2dnbnZNSVZVWUswV00zcFI5MWxlYm5paHNYblI4R3RXakFGZHBRSEFPVVk5NFJqTjlxOG54R3VNdU5jZisyRVowVkxlVjN0RzNpUVp4SnlsM3g5ZFpDd0s3MFdYajNHdEtkcFIvRlN1Y3JpRFJMcWJVRld1TWdLQVhpZms0b2tqems1ZmQ1T0ZuZXpQaWw3aDBqWTNxK0hLS2xIak05YjQ3d1VDQXdFQUFhTnBNR2N3RXdZSkt3WUJCQUdDTnhRQ0JBWWVCQUJEQUVFd0RnWURWUjBQQVFIL0JBUURBZ0dHTUE4R0ExVWRFd0VCL3dRRk1BTUJBZjh3SFFZRFZSME9CQllFRlAycmp3M2NMcHdVemhaMmx0UHR2K2N2ZENPZ01CQUdDU3NHQVFRQmdqY1ZBUVFEQWdFQU1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQ1Z1WG5lZzUyNkJjUFFqQmF2WDlQNjBnMEpJSkthSjBDUm9QVUc4M0lsTTVxbHlLUU9ybUc0ZnAvUEhuaFBEL21BN080Y1hMVnV4REIrMlcrZ25oTERpVkVKcGNqeXBCMUdYaVY1aHFmYzBYcG1IVDQ4Q2E5RGl0bjFFZVZlQjF0OHJXQ0sxOFhvNng1eFhNVDlvVFVEcFA0MTBuVkMyd2ZWUTIxSVhBNmJremdRTWlLN0JDSmdnV0o4SG9rZ1BobVBiNFIvcFBOd0x1Q2x2UnhwcG4yMFpjSnFwWVFIZUkwMnIwTEtod2NlK2tacGpKRCtoVW55cm8yNjJSS3JPZjkrM3k4enJGWUMxMGNic0xVbVVKczVwSnh5Z2o0ZlZHYmtCOWp2c0cxeFR1NjJrbzhxVVg1bVhKTnR6M2RSUENFY0d4NHkycm9tNnVzaEFQdHFyMUlrIl0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQWdVQUFBRFRDQVlBQUFBUlpHQVdBQUFBQ1hCSVdYTUFBQmNSQUFBWEVRSEtKdk0vQUFBZ0FFbEVRVlI0bk8yZC9YWGJPTmFIbWZmcy85SlVZRTBGMWxaZ1RRVlJLckJTUVpRS29sUVF1NExJRll4Y1FlUUtJbGNRdVlLVkt0Qjd4TGs0ZzhFQUlBQ0NGRVUrenpuYzdNZ1NQMEFTK09IaWZydzduVTRGQUFBQXdQOE52Z1VBQUFDZ0JGRUFBQUFBSllnQ0FBQUFLRUVVQUFBQVFBbWlBQUFBQUVvUUJRQUFBRkNDS0FBQUFJQVNSQUVBQUFDVUlBb0FBQUNnQkZFQUFBQUFKWWdDQUFBQUtFRVVBQUFBUUFtaUFBQUFBRW9RQlFBQUFGQ0NLQUFBQUlBU1JBRUFBQUNVSUFvQUFBQ2dCRkVBQUFBQUpZZ0NBQUFBS0VFVUFBQUFRQW1pQUFBQUFFb1FCUUFBQUZDQ0tBQUFBSUFTUkFFQUFBQ1VJQW9BQUFDZ0JGRUFBQUFBSllnQ0FBQUFLRUVVQUFBQVFBbWlBQUFBQUVvUUJRQUFBRkNDS0FBQUFJQVNSQUVBQUFDVUlBb0FBQUNnQkZFQUFBQUFKWWdDQUFBQUtFRVVBQUFBUUFtaUFBQUFBRW9RQlFBQUFGQ0NLT2dlazZFM0FBQUFYQVpFUWJlWUZrV3hLNHBpWFJURmVPaU5BUUFBN2ZMdWREclI1TjNnTEFpMlJWR001R3hlaTZLWUZVVnhHSHJEQUFCQU8yQXA2QWFtSURoeks1OWhNUUFBZ0ZaQUZGeWVSVkVVUHcxQm9GRENZRHJBZGdFQWdKWkJGRnlXVlZFVTM0MHplSktsQTRVU0J2TUJ0UXNBQUZ3QVJNRmxHTXRBLzhVNCttZXhISng5Q1o2MXo4OVdoRDlGUkFBQUFEUUNqb2J0Y3g3d044Wnl3YkVvaXFWRUhlaWMvL3ZlK094RmhNTytwKzBEQUFBWEFrdEJlNXl0QXc5RlVmd3dCTUdiQ0FWVEVCUXkrSDgwUHJ1VHNNVkZIeG9GQUFDNkE1YUNkbENEL28xeHRHY1ozS3ZDRHFkaVhUQi9qOVVBQUFDeWdhV2dXU2JpTy9EREdOQ1A0ajh3RDh4RHNCTmg4R1I4ZnJZYS9CSmZBMElYQVFDZ0ZsZ0ttbUVpQTdYcEQxQmttTjNQWlJuQ3RCb2M1Zk1IRWg0QkFFQUtpSUs4K01TQXk1a3doYkVjNTVQak9JZ0RBQUNJQmxHUWg0VnNkNDY5UGNvZ0hqSklMMlM1WUJmdzNZbUlETmR4bitUdjJ5WXZIZ0FBK2dHaUlKMjV0dG15RVJZeUtLOGlsZ3JPbG9Sdk10dWZCUXFEUXI2NzhvaUROM0ZVWEVmc0V3QUFCZ2FpSUp5SkRMNXorZGNsQkk0eUFNZUlnY0tSaytCajVITERUSVRGZTg5M2xFRFl5c1lTQXdBQWxDQUs3RXcwRVRDVnpYVHNNM21WQVh3ZE9kQ09aWkIyemZLL0ptUXluSWc0V0hqRWkrSlZXNjVRRzBJQkFHQ0E5RjBVakQzRmhQUy9xZjgvbGxvRG9kUTF5N3Z5RDVpOFJJUXZtb1FzYzdpT1dSaitDQzdmaEFQTEVnQUExMC9mUmNGTWNnVGs1RVVHeDAzTmdYQmxxWDNnNHlnei8wMk5ZNnFsajFtaytLbmlSZmJaRk1weVV5QkFBSUl3SjBRNEcwTVEvNkdadkx4cEp2VnRwaGRyS3BhRjJFRlpGVVVLellKb1k2T0ppckcyUEtMK2piRWt0TUZDbGtITXRrcjEyd0RvT3o2L29tY0pWVVlnZ0pNaFd3cU94b3hUdlNocVRUMzNpNk5xSDloeUdNUnlsQUh4b1lGem5Hb3pjM08yNGZKN3lHMHBxUEt6MElsMXhnVG9LdytPM0NVbVR3bTFVOVFTNUtTakU0aWpObmxiTTFsSVoyaWk0TjBGem1Fc3luM1p3SXYwSnVMZ0VvT2l2dnlSVXhTb3N0SXhscFFVWjB5QVBtR0xYdklSK3M2bVdqWXZ6WlAwdVRoTlIwTHRnK2FZYUlyMVMwUEsrdXlnK0YyT3NleEovWU5OUWdmMHBXR2ZCb0F1NDhxaTZ1TXVRRWhQRXdSNlY3aVhjNmNtVENTSWdyeU14U3kzbFVKRjl5MloyVzRrNmRGZWhNaThoV00yc1M3cHl3cFpCWllDR0NLVFNJZGxuYXFKeEthRHl3UXgzTkl2eElNb3FJL0tDWEIrZ2Y0bk0vZlVnZTFGdHRmRTM0OUVpUHdwWmpNbEVKcFd5Nm5YYTFKSHpOeHBFUW9BUTZIT096UHkvSDRSRUNwOURYeWlYNGlENklNNHBoYXYvVkFsL1NJeitiM0ZxYkVLUFkvQ1ZIUDI4Wm4xbEVCUVpzVnJTRkxreThRWXdneW5ReGdZZGEyQ3JuY20xaEd4eTh3YmNNcnVMWWlDdnpITlRMcm4vU1JCTlQ5cllZeDE0K3IxYUFnelQ4Rk0yM3d6OWx2WnpMWEhWMDBjbUVzQyt4WUhXVmVTcVJpWUVjRFFxUHZldU42WlhOYS9Mb0FvaUlEb2c3K3AyeEJITFE5QW5RUkRkUmhyOVJseWhENzZQSlJ6UjNia1NEVFZkQklsZ0s2Um93TzN2YnQ5R2hqZW1EQ0VnMDlCZlY0a1ZuNmNJZU5nWFE1eS9QTjUvQ2JubGVxZkFBRFFCNGhBaUlEbGczUml5eUlyZEwrRXdramhhMk92SFdOci9MZVBnMWFnYVNaQ0lZZjFBQUQ2ejF0UEhBMEwwcUxIZ1NpSUowWU1qTVdVUDYxUmIwQmYyOU5EajE2TTlNcytwMEgxblZWaVRETUFESXR0ai9vSlJFRUVMQitFYzNZYy9GMW0zRDVCTUpXQmQ2ZUZLSDVxSUFISW5lejNUem5PVGtJanE2d081L1AvUTZ1Q0NBQmcwcGY0L2lOT2huRWdDcXA1azBGMDdoRURLcFh4ZVdEK0tUUDZ0ck9BM1VvQ28xOXlIZ3ZQV3RwV0xCY2Y1YVVCQU5EWlMvOXc3U3lwZ3hBSG9zRFBvNWJxMDRhZXl2aGJoOUtCM21ycGoxY2VjYkNXYTNodStmd0FvUHVzcjN6aVFMRzBCQkFGZHM0dndRZFBRUTBsQnRwTVpaekNTS3dXUG5Gd0VDdklaNndHQUdDd2xvblIweFgxRCtkei9TK0NJQTBjRGYvTnEyZXBvTW1LaDAyaXhNSFNVM0paMVZuZjlNanJHQURxczljeUhPb1pWYXZJa1NyNUpiRE95dGI0RnhJWmtpZ0ljYXp6bGR0VTZVRHJQT1JITGNPaFNqTmNsVzVZVDI4OERVaHY3R01reXh3TDJVeXYzTjJWVjBick1pb0V0WXZwcFhPaVp3SzkxZzdhTi9BZHRLaWZJYUw2cnBCOExMTU1vbUJMVWFOMndWTHdOMCtPZk45amVTZy9KZTczV1p1QnB6aThxSUZiNzRUR1dtcmplY0tMZHlzT2tWOHRMOXhCcTZFK3BDeGdZMk1RQ00wSFlUS1ZlNkxxWS9nc1NpOUdKOXVXV0xqa3RZYUUwTGFOQ2gyZVI5WXplZFlzYktIdHBTS0VWS2l4cWtueVFPZ2NkSUp6bXVNZWI3UFQzMndUcm5ONk9wMTJwM2pPdjFtY1RxZHhTMjE3UHMvMTZYUTZKSnpyMW5PZUM4OHhaOForNmw2RHViOFVVdTd4K2JnYng3SE85M0VldUo5elcrMXJudjhtNG5pcGJleTYxcTM4dldvZjUyZGxtZWxhUTQ3WHhudFRsNjNzeTNlc2g0QmpQQ1QwR1Rsb3FuMjNHYzV0ZGVGblpIQWJqb1p1NWdsbWRPWGdvbWJhYmMyR1ZBamlSR2IvYnhHL3ZaTlpvczFVMm5kSG5aWFVXM0JWWjd5VlBCQytkbEI1Szc1bk1KVytsK1B0RzZqaDhGQnhyWGZ5ZDE5TXQxcHkrcGJwV245bzRiRnRNcEhqL3N5VW9PZE85dVV5YzY4RExZMmY1THhJeXdzWFkwakxCekZWdnhiU3lZY1NtL0pZcFRaV25lSFUwUkdvOVdlejVMS0xnNWExY0JYaEVEbVNmUzhINUxIN0VMRWtwQVlPZlhsSlJhQTBVVTN1UmdiTVp6bG1YWEc1amhqOFZKc3N0YyttMGw1TlhLc1NJNC95ekRZdHBGZEdadENjZk5HVzlOUjF4TFI5SVVMMG9XZWxpK0dLb0VyaXY0a1JCSy9TZVZZTjFoT3RzNGhaczNRZFUva29WQjAzeFI4aU5MYjNtcXNrem1WR0hvdHFHeFhGMFVZRXlwdWNiK3A2YzQ1ci9aWjQ3RmhlSFE2d09aaklPOU9HQTYyNlo1UEV0aThrWVZxSXIwSlRWUkp6c00wZ0pHMStUeVpUelRtMENRYmxYSW9vK0NjeGdxRHFZVlhPUzhzR095SlZycm5LU1drbTN3azlqeEJoY00yaVlKOW8vajVLTzdkZGEvNG8xNVV5V0E3cFdsMm9pSm8ydzRoVlRIL3FNWitsLzZoaXlLSmdMUDFmVzg5b1hZRitGZUJUOERlaGd1QlYvQVpjRCtwRUJtQzF6dHprekdRa3BzbWY4Z0s2VEk1cTNmWXBjTC9mZTJ5K25OWllEeDlkWUpBc3RPV2RrTmh3blpUSUZQMllsN3pXWE92cWx4QUVoUnl2empIYjlyTzRSdG9VQklXOFM3MzMrVUFVL01Va1VCQThlV1l4WXhFRHY4UmMzM1luZENmWHNITjBLQWNaNkVQem1YOVBHSVN1Z1pEWlZ4Y1ppZlVtcGtPNjFvRmxsTWxVZXlsQmtJUFJ3RUtDWTVsZVVMVDIydDhEVWZBWElRNkNqeDZuTDFWMEl6V1hRVTV1eFF5L2NYUXFhN0YwaEtRczdXTjFzV3NXT3JlUmlWeUdkSzBta3lzV0JBcEVnWnRMQ3Q1cm5WZ0VnU2dJNDZQaGphMVFIYyszRG5ZKzc3VlFSUk5sVFJoaXJZTnJOLzE5aWhnc3J2MWFxMHFCKzloY3VTQUFQNFJ0TmdRWkRhdHhPZDNONWZQVWprZGxNdHQ3VXQ5T3RIU3JLV3ZoSTFrR21GblNOeXRoa0RxYjBqdnIxNFRmWDRvK0xJbXNBazJZMTU2cVdwbHFZeTBHTVU2MTBEL2VSQlRXOGFrWkxIMFhCZWJhL3pUU2MvU3pReERFNWpGUVBNdkRtcHJTZGlJUCtpS3kwN3VYYTU5bEZBYTZLTGltWFA1OW1EMzIybnhwRUNzS3BoMVp4b1BMY0pSbjRLQ0ZEamVWbDZLWDlIMzV3QnlzWWt4T1Q0NDE5WFdrSURoS1dNMXZtblVoZFJEZHl6bWRIL3JmSTZJSkNoRVJOZzkybDJNaWRKZFJUNTFBYmR4RUxpSDAwUThHd2prWS9ldEtjajdFWkhrZE5QZ1UySGx4bUdkanNwTXBNVEJwS0ZPYkttY2FJdzZVTURBNzJaMGpLb0VDTGQxbFNFSXU5RnBuRi9KSWgrNXdZL0gvVXBPaForNVROVU1UQlQ1TGdTcXRmSFNZWjFjUmd1QTVRZ3hNdFRWL1BVWHhRajZ2c200b2NmRGZ3TFg5a1N4Zm1QdGRXMTZhcXBMT0NzVERYOExzZzRpMGQvTHZCL204Q1lmT1Mxb0sycjdXVUVzQkpYYWhFTWR2MDJKMGtINzl3MEFkcklNWmdxUGhpelo3bUFiVUFiZUZIUzRDMTZXT0FmVURKbHE2NDlDVXgyOWF5Vm1YUDhKT3kxRmZ0YWJxV2twUUtXWkRuSE4wVVhGTlBnVzVlWlg3YVlhMXFub1Ztd3psdDIxY0lsenRSU3NBcFdOZTYwT21Ra09LRUV0QkUzSHJSODBIU0MvM1BOTktMZVBJMWswK3lYMHkwMlp2dEg3U04rRWFyTVdKNVlOLzhtd1JEZFBBZFVxVm50VWxDR2F5NzEraVpOOUhPTDNkU0NmN1hUcmZ0V2RRV0FZbUtMcTFuT3ZCV0RaSnFiRS9KSjdrK2FocXA0TjJYM0xOVXRvV0JTcHhWOGkxeGlUSnlvVXRaTGdPYXVsdllSSGlXeTFjOG12TDF3bmgzRHFxVis2TmlabHQrMjJvZmdoREVBWDZ5K3d6dVc0c2ZnVGp3SGpuVitrZ2JHWjBsVlhOVjdZMkJwWGErSmNudzExb2dxSjd5MUxKVmx0RzhBMEF1cEllNHZMQlUwSm1zM1hHd2F2TkdXcnF0ZVlTQmlHenRsd1JHVWR4VEF2MUExcEZKQU9EeS9BbG9ZODZES2hpN0Q4WWdpalFId2FmdWVqQjBnbXNBanJmVjB1b24vNzdudzJhb3U0MTFXc1NHbFZnRXhheEE5ZlFsZytPTlFiM2RXVFV5S1Y1cTNtdEx3SGZxMHZkeXFPS294YWlHOE9RazRGZEE2K0pxWWtIbVZGeUNENEYrb0FWYzVORDRwMlBEaCtFc1hRc2JTUlFHVWw1VnR0c1RrVVYrRUlvUjViNjdYdlpuNnR6Tk1YRzBKWVpiQUl5OXZjNTF0d25MYlI5M2NpWlZZYnFsMVhrc2hMVUtkdXNzb2VtbGtxR1puaDBQTVB6Q3N2eEpMTmZ6TlV3QkZHZ3YrUXhKdGNRUHdKYkdjMnB6SkRhenFpbUhtQXpjK0U2UU9EY1c4b3Z4eWpyb1ltQ3VtYkZuY3pBNnk0QnRDRUtxaHh6cTlpS2VHNHlhVlNPU0F5YlAxRXNHeEhUZ3h4TU9zYWI5R0hteEdZczcyK09wZHhlTWdSUllIYWFJVmtOUStLZEh4MFAzQ2FoczMvUlBMajFjNWhFN3V0ZXpzR2NPUzFsZno2aDhoQVpENjY0cGhUSE9YakxOQkR2cjhCei9UWFQwdEN1WVcvdUhQdk81ZXNSRTdvTXpmRHNzT0RPcUlsUnpSQkZnY3NoVUtjcTN2bk44aDIxWkJEYTBiL0lRRncxTzFFZTBNdkFoL205S0dGenByOFEvd1lYZHhFenoydE5jWnlEWERQejdSV0VQZVc2MWlhZmtSeEpuRjR5WHVzZWE4SEZNYTJsUldDbzl1QXBCaFNTcU05bXEweU5rNERPMnZYUWhTd1p2SWgzOHl6UVhMa1hBYUxDbjBLY21lNGQvZ1dQRmI4TFRmNmlpNEljZGUrdmlTRkZXdVM2MWliYkxFZTF2THJMQmszdkQ4SjVOUVNlc2d3akNBSVppaWd3SHhJZlZVNUxMNVpPWkI0NE0vaWE2TjFjaUFoWnllOURUUFlQRnNmS1ZZV29tQWQyc3Jwb0dwby93WkFUTlhXUkhQNEV1WVV0b3VCeTNHcjk1S3BGaCsvZU1CUlJvTTlVcWpxUktnYzdtNU5aaUZQaXgweHBXSGVCd21Ca09kNmhvc01hQllnaVcwRWxnRXVSdzFMUXhEUGNSaWdtMlBraUVTOWZFdjBIaHVZbjlRK0dJZ3IwbWNCTlJVZmlVNVZ2RmxHd0NQQWorT2dRRTJOWmlqaWYzOG5ZVk9aQzI1cnBJVkFZM0R1c0JUNnExbWdSQmRBbDZsb0tCajBBOUJSVmxmYXo1ZktPOHJrcnUraG5lYVorRzJyZWlTRmFDb3FLZ2MrWDJ0STJ5NjRhWkI4ZGdtQXBBLzgzaHcrRFNtMzh3MUhBU0JYNHFIcHdiU2srZlIxaGxhVkFienRtUTNEdE5MVWNORFJmbXk2aDhoSThXUHFvdFh6dXlpNnFyTDVrTk93NUIyTWc5SWtDbjNuZFZoZkJaeVd3UlNrVThyQjlpekJ0dlpmQjNKd1Y3UU5FaVcyUXIxcEM4TTIrOUxiRFNnQUExNFF1QWtQcWVBeU9JUlZFMGdjd255andLWHp6YjFYK0I3Wk1XcW5aN0VaeWZITTU0S0hDdW1IekU2aWF4YmhlRmpOdkFyTWhBRHVYTEcwTmtNeVFSSUUrZ04xNi9BcGNzMmlicWR3bkxvNFc4OU9zWm1qTUtOSFIwVHhQMzJEKzdGSElNZnNCR0RJNUhDQUJXbWRJb3NBV1J1amkyZks1elZUdWMwcTBpWXVRS0lVcTdpeURjMVVJbEczVzR2SXI4TzFMYjdOYzJlNEFMa2xUTTNvc0JYQ1ZEQ0dqb1VMNUZhaUJmTzV4SkxIbHhyYWx6UFJocTRsUUZTOTdsT05VUlRPWU9iMzNGYm4wYlIyVWEwRDNpWUpaNFBjQTJxSnVac2lSek9wekN0d3BxWFE3dzlyb0s4MSs4K3RBMjhYSmtFUkJvVG40RlRMb3V6cURqYVdJUzZ4VG5VMFUrTkNySEM0cUtodmFCSWt2bDc2dGc5cGJPdE1uVCtjNE4vYURLSUMrNEpzZ3BKQWo5VExrd1hkZlF4eTFCOGVRbGc4S3l4cTRid25CZkpqcXppU3F5amJyNFRIcmlyREJISVYwYk02RXZoZEliNnMzSWcrZ0krVHdhOGxWZWxtUlVyc2Z1c2NnbDRDR0pncDJocWUrcnpQSXNmNGZneWs2WWtWSVZYaU5LVXJNQi83VjA4R2FsUmV4RWtCWHlKRm0rMzJBYUErbHFob3BORThPVVRZZHFzVm5hTXNIaFF6MitoS0NxekxncGF1ZDVSWUZHM25JRC9MU21ENFRQaEZrTGgwTU1xa0hkSks5WmFrdmhZZE1GZ1BNMFpmbnU2Tm9YUXhkcjJEYUdFTVVCUnRORkJReVFMcGVaTDAyZXE2WlJDZzd5OEN0WXhaV3FqTG5uMmN2LzNNNEpOclNOK3ZveXZ1VnBRUG9HTnVLZHlXRTl5SUs2bGpCbGtNZVREcEdxclhtS1BkUlpUMGNuTVBvMEpZUENwbFo2Q0dIUGxPVHNoWVVHVVJCMWRxbmFhcXFtdm5id2hKOVNZd1VObjhFMyt4bWFuUjBiUytyQUZTUmF6bHJYV01kZVdwTU51QnluT3NYL0o2UWh2M2MxMC9rT2RpUTVuaFk2RGY3cGtJWXVNb05WODJXWTllalRORlJ0WCticVRQRmRQbFM4ZkRyRHBCSC9BbWdnK1I2SmxYVzBGaGhrRm9PSGZMektoT1h2ZHdYVzFFa0d5cjZTMTl5R0tSUHdWQkZnVG1yOWcybWUzbkl6STZpYXIzS3pHZ1dheW5ZVlJRN3VyWDhadTFJdk9URFZoUkVNVEY4S3RZa0xJSU9ja2g0N2wyY2hjRlA2Uk9xc2hLT3BXLzRRVjZDem5CclRMQWVwQ0tpanlmTHhIQTVWSWZSb1lxQ3doQUNJZFlDbXpuZkZ6WVlrMFd3Y0tqU3FobVFUY3dzSXN4bWp4VVdDWFAvTEIxQVY4bHQ2djBpNzRZNUlSaHJlUTMyTmRPV1F6T1kvZFRhSXd4c2dtQXg1S1dnSVl1Q2RZUzF3UFYzMzdxL3plSElaeTI0c1FpSnFrSDR6akxUUDRqQStGcGhhWEJWY0ZTWVZvS25UT0ZmQUUwUTZsTVR3NDBNK21mTHdVbTJzN1B1bi9KdVlCM29KdStscjlVdFBUWmg0QklFdnNSeHZXZklvcUNJdEJiWXpPYXhmZ1ZWU3dqbThYY0JzLzV2RHF2RVNqNy82ckJRekN1V0FzeVpGNkZXMEhWNFJrRnhWeUVNdmlJSTdBeGRGSmpXZ29mSTZtWlZnM3hzeWVLRjVmZ2hIWjNMT1dxdmlZTjN4dVlUTkRQRDBvR1ZBSzZCcWt5Z01DeHVIY0xnZDB1L3VrWVEvTVhRUlVGaG1OOUhrYk9OV09mQmd4YmlhR05rV1E3WUJqaFJLYS9wWE9sVmRTdkJzY0laRWFCTDhLeUNqazBZbUJPYzlRV1QxSFVPUk1GZmE1RzZpZjVUWkNpS2I4Qyt0Y3pncXh5aWxoWnJ3YUxDUDZBUVlmQmRycWRPVG9XVmtjdGdSY1FCWEJGYmNhQUZVTnlLRUxCWlV4RUVCb2lDdnpCbjJPdUlaWVNxQ0FGejM5c0tFNmZOV25HSUVDcG5KNXRmY2cyeGFWdW40bld0ZUNYaUFLNlFKY3NJblNESGttT3VDWWt0QjhVT1FmQnZFQVYvWWRiVnZva1lERU5FZ1Nrd3F2Yjl5YUpxZHdIeHRqcjM0aVY5Q2x3U0dWdXVwWS9WM3Fvc0xtMlJJMVYwMHhhY2EwNW5QZXZRdlI0cU9VUkJ5alA0MmVKRDlVNzZPSDEvTmw4cnRmMHgxT2NIVWZBM0syTjJjUjg0S0liNENaZ3o5blZBVk1IR0lpWjg4Yll1UW1mN2EyUFo0T3NWRGdvaFdlWHFYbE11aDhzY0EzclZ0ZFFOMGNzbE9pNlI3ZS9RQTJIUVJydkZwZ0x1T3Jtc20xdlNIRU1oZzdmZWlkZ3lHZG93QllXSkxUdGExZXo5eHZGUXJpTlU3Sk9jZjFYbnZqUUt5cnhlSUx5cnJabHozWUV1bHlob0k1cWpLeEVqZGRzOFZkenNybGdZaEo1ejNXV1NKcTFOT2ZZZHU0K1k2TEUyOTNVMUlBcit5ZDZ3RG93c25xdXUzODA4VG9jM2pxaUNLb2VvOXc1aHNCVm5RcC9LdDhYaDJwZ2IyYnVPbVVySXhuTElNTE1ObVZuVnpaT2ZVeFRVdWQ2UUdWN2RhODAxVTYxSzJSM3krenEvdllRd2FPTlpMaktJNlNhdEVYWFA3Wml3anh1dFRIeWRiVFZZZjRQVDZjVDI3KzNoOUU5MnA5TnBITmhPcTVPZHcrbDBtaGpmSGN1K3ExaDdqamMvblU1NzdmZm40OHdDejNVcTM5Y0ovVzBUMnpxZ0xWenNBODluYkxubVVIYVpyOWw4em1KWUJ1eC9VbVAvbTh6WFd1ZmVMakljUC9SZHk4RldqbGZuL29hK2g0dWE1MnYyU2JtMzFIZnRWTkh2dWZyWk50aGVzSTlzZk92dGhXWFlOc2JERlNNTXBzWkFyYkIxdExhQjJmV0MrSTQva3hjbDVoek40K2JvZk90c2RRYXhtSE5QN1ZCeXQ4OGtzZE04WkJDcFZlUVdoNm4zTmxUc2hXNTFCdW9ROUlFc1ZZakVDakpiWHhON3JrMXRkZHJiSjFnUUJRMXR2YjJ3REp2dGhZNFJCcTZaZ20xZ21RVStqRHNaek90ZW4wMFF0TkZCaEd3cEwzdktTeG83YzIycWZWSm1lckVEZHV6QTFOUzFMaE91TmNmemJudmZ0Z25uVXNVcThGM3pFZFBINk5jVFM0eXdyTE9ORTBWTGxRQlB1ZVpjUExUUWJoZmJlbnRoR1Ivb09zS2drRTVCNzRBT2pvNHVkSEE0T0RxZm1QUHBxaUJRVzh6c1lsdWpjd3M5VHRQdEUzUHZVNndWNHdnUjFQUzFob3ErbUdXd091MmVReHhzSzhUTE5GQ1lQZFI0bGhjUjRtUGZrTmlxZS8ySzBHZThyZVVnazZhWFhDNjY5ZmJDTW00NWhFRmhyUDI3Zmg4emEweFJxN01yRUFUNnVmcG1HSFhGa1g0YzE4Q3diZEhIb21yMnVzblFHYzA5SFduYjErcTd0K3VXTzk2cHZFOHhnOHhCempObWNGMWFqcEd5SDljMkNSQTVWY3VRVFcxamVWOTl3cVZLWE5udVcrclNTUXFwb3Z5cXRuZm4vNEZLeHVLbGU2dDk4U2llcmJIZXNRc3RkYkF0M0ZIVmFuZVZaWDJSMzhkNkRkc3FnTmxLaDNhTnFTVWFZcGZCczk1a0l0dFU5cisvVUVpZmViMTd1ZGM1ejJWSTF4ckxXTTVyNm9nNlV1M1Y1UndlRTJsWE05Ly9waU1weStkRzMzZVFjMHU1NzJQWlg1M1U3aUhVT2NlckFsRVFqa3NZTEJPVFhDeTBCODFrS3AvcnlZU2U1RGdwSVVRUGtpVlI1eG9FQVFBQXRBaWlJQTZWQ3ZqTytOVmpBOVhaeGpLWTcwVU1wQ2pVaVp6dnJmSDVaMm9hQUFDQUNhSWdEZHZNKzFWbTNsMHhLOXFXSWVwWU5nQUFvT2VRMFRDTnBkUWcwTE9rbldmalB5K1FIdGhFV1RQK05BVEJxL2hBSUFnQUFNQUtsb0o2ekdYd05ibVUxV0FoVmd5YmsrSnZIWEV5QWdDQWpvS2xvQjZ1UVZaWkRkYVpDM1M0bUlvRDRuZFAxQUtDQUFBQXZDQUs4bUlXUWJrWEIwRmJsY1FjVEVSNC9MUTRQOWF0bmdZQUFBTURVWkNYaVZRbjFEblAzTDlrRmdkS0RQeXlWUEk2QzVNUERVUkRBQUJBejBFVTVPYzg4UDl1S2FPY1F4ejR4TUJSQk1tMGdjUStBQUF3QUJBRnpiQVhKOFEvTEhYdmRYR3dEc3pFTlJlZkFac1lLQ1FSMFZUTGxBZ0FBQkFOb3FCWnRoSUc2QklIOXpMUWJ5VnlRTGNlVEdTUTMwdUVnK2t6VUlnWStGMSsyNGYwbXlkdDg0VjJyb3p2K2phVkV0bHMzeHo3TnJlWlk1OWIrZDdCOHgyVG1iRnZIZk52T2M3VjEvYmJtc2ZhV3ZiaFN2T3RzN0Q4cGs0NjI1VThENkhudlE4SU1hN3p2TGlZSjdUNTFwSU9YTWQ4WmtLZVEvUGFmS1JjL3k3eW5HTTIxMzJMYWRlZFROd0dsZmtWVWRBT1NodzhPbzUySjVFRHlucXdFYkh3eFVoMXJQT2hSMktnU2M2UklPKzE5dlYxUWsxekZvSS9CcHBlZW00NHY0N2tPWGNKdGFtUmRWUFZHa2w5M3VmeVBwblpQWDNjeUcvYXZGOWp6eVRBeDEyTDBVNjV1SlZyYmJwdVFTcTNNbkZUZlVlVmlPMEYveG5DUlFvTG8waklRVHFkbEZvQ3FlaW1mWlg0U0E4aEhEbVdCOVQzOWUrMnZVeXdNRHJIZlkxYURMa3hyVENLc1RFSWpLUVQraGlSeE1tMWJ4dWg5K1M3REhDcGc4M0JjMTVUN1RrNWVuSmx4RHcvcm4yWTdmdnEyTzlPczVMbzlVTnVOTUdzLzA2RjJPclhrVko4VEVmdjBOOEN4TVZFRStReGcwSE04MkxEUEphclRSWDZQUmhwYlhkSnFzNTVhdlJsazBDeFY3VmZuWkQ5K2Q2UGlURWh1NUVvcno4NjB1YzF4aEJFZ2EyUWtlTDlCUXNES2RQWlhDSUZYRE9ZSjYyNjJZK1d6N0h3dE4rZENKZ202ajdFNGpPRmp1WDh2bWlmUFVSVTR3czE5OGR5TCtlMlNCQjR1NHFsaXJ1QTc4WGd1cjh6NDVsY1ZuU1lObUZ3Sy8rdEJzTnhBNExBWkIyNExQREZ5Rm9hUXU3bnBhcE56WHZRQmFyT2VTb0RiTzYyaUtYcS9aaklNZldVOXFGK1lGZkxFSllQYkFXQmRPNHZXQnpvSUEvWlZId0RIbVVXOHlxejJkOWswTGhrTklGTFVDaytkU0MxczQrRG5OOW43VHVqQ3k4aktONUwrL2E2a3pGUXdrRFA2WEdybWI2YkZnU2huTS9udjVxb2hIeDB1ZXkwemw3dXZSNUpkdFAzNWIrK1d3b1d4dHJjbTliNUxMVE81NU5Xa2ZCU3FBZXdTeDNRd2hBRXJ2WmJTdnQxT2ZMaGZON2Z0UCtlQjRwQm44TlN5cXpsczdTWE1rM2Vhak9XYStrczYzTFFuT25VTTNRdm4rbG01V1ZEYlRJTEZMSUgyV0w2aGR6UFN4VjdlYVoyMmpKTjEwa1Z3UXZIekg3ZmNFMlhwUWg0UmE5OUMvb3VDdlRaNEp2Y1RQWFNyQTBUMWliaGhib21wNTZVRHNsY2g5WGJiNk9aTFVkYVZjYXVvdGJoWXgyNHZuaitsdEttTzIzZFYxOEwvaG5wNjNEdDdMU2xCQ1VFZEVHUXV5MzBkL3N1NGpuNEprNjlvZGE2M005TEZmc09sa0YzRGQ2RkNJTFVKUmFYdjlWTHcrK05LUW9SQlZlTVBtaXZqWTVoWnd3U01WN0oxMGpzWUdoaXR0OVdsamxVdXczSkJGNFhaVUovTURxNjc5TGhETVZjYlJNR1JVUGlhQ096ZUZkdEVCOUxFb0pGNFJxOFhaQmJwVU1NS2ZyQU5tamxuT2wvekxpdkhHekZTVEgyQlhWaGE2dHJzcFFVaWNMb0Q4Zm5kWmVhRGxwSXFUNjcvQ1R0T2lTTHdjNjROMDFjKzE3NmdIbWdnSjBrdmp0TlBTOHVKdkljTmJVODBTVEh5Q1dpejQ3dk5pMHF6T2VsMTJIZ2ZSY0ZlbWR6YjRUUW1SNy9UelZ1OXE2ak13bFZ2amwxOEo1cDdiZVE5bE12NWRvSTJlbjZlcmc1K3c0OTM2WTcycFZtQWpiWDF5RXZoOGlva3hSUjBQYkFQQkZScVlSbEYwTG05SE5ZaUFWTWNkVDhTV0xaWGVqYVRNZkNYdnYrOUYwVVBCamhKRC9FNUQwMkJqU2xXUHRveHFxejNqZ3ovQVorT3RydnJlUG0xYVhGQWF4TE0vRzExdUhaMXRlaEhoTXR5dWZjcnU5b3o5Wllpd2piU051ckJGNmZPK2dMWVdObDhSUHB0Uld2NzZKZ0wwV0M5SnRxOHgxSWlSVWZBcllsQ0Z2N1hYcFc2L0w0bmxrU3BSUnlUYUZxUHliY3NvNEpkeWVEVjFVSUtNUnpNSlluUXN1dVlSWUFBQVBDU1VSQlZPNXBxbzlNelBPeURyQmErSnoyaWdZOCtYVnk1VnpZV254SHZzbTdHUlBlRjNMTytqR3Izc1dKNDM2TjVkeHNmY2ZYdm84VlEvQXBXR214NnVZTmZzT0pxQkxidXJmaVRRVEJwYzFwUG85dms1ZElSNzZZZlJjMXpadktBWEZ0aEVCQlBRNUdSdERZZXhvekNNVHMyN2FVWVI0cmw5T2UrVnpHN3JkdXBrYWJVK205REx4bVJrc1hzZWRjOVM3ZVJONnZwNDduWk1uQ1VHb2ZQSWdxL0NoSzc2dUVHVTBRQkVHc0pKR1NyZjJ1WlgxTkpZUUs3WUF1aFlyaGQ5WEpnRFJTVGI3SGxzM2NPMHZaOVZDcUxHQjFucWtjYmFDRWdaNGw4bFlMMCswcXIxcXRtZDd6N25TcUtuNEZHZEhYcDE0aXpYTm1PdE0rNXVEVzIyUHZNYTFPSXMybU1VbGRZdmV0NHpybnFlYnNHWE11K3U5QzcvWFVxTzhSS3RwQzIxNW5iSFRtcWNsenBvWXpiRlBQZGNxOXJicW1PcytMYjk5bW0xUVJlcTlUempma2VkQ2ZuNm8yTTUrYnduSCt0dStGRXZJdWh0RHJPZ2MyRUFYdGdpZ0FBSURPUXVuazlsZ1lEbmxURVFraHF0V1cwR1k1bEZLZUFBRFFEbGdLMm1GZFVSTFpsL2ZlalBNMUdWSnFYQUFBYUJCRVFmT1l1UkpzSEdXZHoxeUhDeTJMeWxJQ0FBRFVodVdEWnBrWWd1QW9TVHMrR0NFK0kwZVluQm4rOGlnQ3dQUWk3bjJZREFBQU5NK1FhaDljQXRPUlVGOG0yTWpzL2s3N204N1lTTGp5VlJ2OFZYeXpLZ1Y4Sjk4bkFSTUFBQ1NEcGFCWjlOQ2ZWNHZmZ0o0andTeldZem9SbW5IQ3BoOEJUb2NBQUZBTFJFRjcyR0tEVGRHZ1k4NzZ6VUhmRnVjTEFBQ1FES0tnV1hSTHdFaG05eW9FY1c3NEc1aFdoSjJSK2V0QkV4RVR3M0p3N0h2bExnQUFhQjVFUWJQc0RJZkNjMWppLzhRZjRFL2p5TGF3UW4zZ1A2Y0QvU1cvL1dVVXpibUdhbU1BQU5CeENFbHNucWxSQk1UR282ZEl6NjZpYXQ0ci9nUUFBSkFETEFYTm80cUEyS3FNSFNYNWtLOXEzOHhUeU9ReFkzbFRBQUFZT0ZnSzJrWFY2SjRrMU40Zml3Q1lpdERZNGx3SUFBQTVRUlFBQUFCQUNjc0hBQUFBVUlJb0FBQUFnQkpFQVFBQUFKUWdDZ0FBQUtBRVVRQUFBQUFsaUFJQUFBQW9RUlFBQUFCQUNhSUFBQUFBU2hBRkFBQUFVSUlvQUFBQWdCSkVBUUFBQUpRZ0NnQUFBS0FFVVFBQUFBQWxpQUlBQUFBb1FSUUFBQUJBQ2FJQUFBQUFTaEFGQUFBQVVJSW9BQUFBZ0JKRUFRQUFBSlFnQ2dBQUFLQUVVUUFBQUFBbGlBSUFBQUFvUVJRQUFBQkFDYUlBQUFBQVNoQUZBQUFBVUlJb0FBQUFnQkpFQVFBQUFKUWdDZ0FBQUtBRVVRQUFBQUFsaUFJQUFBQW9RUlFBQUFCQUNhSUFBQUFBU2hBRkFBQUFVSUlvQUFBQWdCSkVBUUFBQUpRZ0NnQUFBS0FFVVFBQUFBQWxpQUlBQUFBb2lxSW8vaDlnTjhaeXp5aVdXd0FBQUFCSlJVNUVya0pnZ2c9PSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIl0sImV4dGVuc2lvbnMiOlsiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiNTMzMzQ2OTM0YjNmNDE5ODg4NTc1Mzc3MmRlMmFiNjUiLCJvcHRpb25zIjp7InJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwidXYiOnRydWV9LCJtYXhNc2dTaXplIjoyMjAwLCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxXX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMy0xMS0wNiJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjMtMTEtMDYifSx7ImFhZ3VpZCI6ImEzOTc1NTQ5LWIxOTEtZmQ2Ny1iOGZiLTAxN2UyOTE3ZmRiMyIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiYTM5NzU1NDktYjE5MS1mZDY3LWI4ZmItMDE3ZTI5MTdmZGIzIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkV4Y2Vsc2VjdSBlU2VjdSBGSURPMiBORkMgU2VjdXJpdHkgS2V5In0sImRlc2NyaXB0aW9uIjoiRXhjZWxzZWN1IGVTZWN1IEZJRE8yIE5GQyBTZWN1cml0eSBLZXkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MjU2LCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX0seyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbImVkMjU1MTlfZWRkc2Ffc2hhNTEyX3JhdyIsInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDU0RDQ0FlMmdBd0lCQWdJSkFNOVJ6WXU0RUlJbE1Bb0dDQ3FHU000OUJBTUNNSDh4Q3pBSkJnTlZCQVlUQWtOT01Td3dLZ1lEVlFRS0RDTkZlR05sYkhObFkzVWdSR0YwWVNCVVpXTm9ibTlzYjJkNUlFTnZMaXdnVEhSa0xqRWVNQndHQTFVRUN3d1ZSWGhqWld4elpXTjFJRVpwWkc4Z1UyVnlkbVZ5TVNJd0lBWURWUVFEREJsRmVHTmxiSE5sWTNVZ1JtbGtieUJTYjI5MElFTkJJREF5TUNBWERURTVNVEF5TXpBNU5UQTBNMW9ZRHpJd05Ua3hNREV6TURrMU1EUXpXakIvTVFzd0NRWURWUVFHRXdKRFRqRXNNQ29HQTFVRUNnd2pSWGhqWld4elpXTjFJRVJoZEdFZ1ZHVmphRzV2Ykc5bmVTQkRieTRzSUV4MFpDNHhIakFjQmdOVkJBc01GVVY0WTJWc2MyVmpkU0JHYVdSdklGTmxjblpsY2pFaU1DQUdBMVVFQXd3WlJYaGpaV3h6WldOMUlFWnBaRzhnVW05dmRDQkRRU0F3TWpCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQkhscTJqVVFNYWxIai9CUmVRZWZHaXo0RXZZSnlGTFdQejRSZmhKR0txcWwrOG45NmhUMW01Z1hvVHZvTHJqU1U3WDBjQmVvVHNnaHloMjIreXJzNCtTalVEQk9NQjBHQTFVZERnUVdCQlErOFNHVzJCWGJxYjJkY0FPaVdKT1UrR0NzUGpBZkJnTlZIU01FR0RBV2dCUSs4U0dXMkJYYnFiMmRjQU9pV0pPVStHQ3NQakFNQmdOVkhSTUVCVEFEQVFIL01Bb0dDQ3FHU000OUJBTUNBMGtBTUVZQ0lRRHE4eElXMFpLNXl6M0VBem11eDg4TENUWU8xNTdmVGZ5T2lPekMyQUR5YXdJaEFPMVBXWWxlRmdILzNtdUQ4Y0JBTXIxMWZFS2RGL0FhQzE2ZnR4YWV6TlhIIl0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUl3QUFBQVlDQVlBQUFBb054VnJBQUFBQ1hCSVdYTUFBQjdDQUFBZXdnRnUwSFUrQUFBRklHbFVXSFJZVFV3NlkyOXRMbUZrYjJKbExuaHRjQUFBQUFBQVBEOTRjR0ZqYTJWMElHSmxaMmx1UFNMdnU3OGlJR2xrUFNKWE5VMHdUWEJEWldocFNIcHlaVk42VGxSamVtdGpPV1FpUHo0Z1BIZzZlRzF3YldWMFlTQjRiV3h1Y3pwNFBTSmhaRzlpWlRwdWN6cHRaWFJoTHlJZ2VEcDRiWEIwYXowaVFXUnZZbVVnV0UxUUlFTnZjbVVnTlM0MkxXTXhORElnTnprdU1UWXdPVEkwTENBeU1ERTNMekEzTHpFekxUQXhPakEyT2pNNUlDQWdJQ0FnSUNBaVBpQThjbVJtT2xKRVJpQjRiV3h1Y3pweVpHWTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5MekU1T1Rrdk1ESXZNakl0Y21SbUxYTjViblJoZUMxdWN5TWlQaUE4Y21SbU9rUmxjMk55YVhCMGFXOXVJSEprWmpwaFltOTFkRDBpSWlCNGJXeHVjenA0YlhBOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOGlJSGh0Ykc1ek9tUmpQU0pvZEhSd09pOHZjSFZ5YkM1dmNtY3ZaR012Wld4bGJXVnVkSE12TVM0eEx5SWdlRzFzYm5NNmNHaHZkRzl6YUc5d1BTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM0JvYjNSdmMyaHZjQzh4TGpBdklpQjRiV3h1Y3pwNGJYQk5UVDBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5NFlYQXZNUzR3TDIxdEx5SWdlRzFzYm5NNmMzUkZkblE5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5elZIbHdaUzlTWlhOdmRYSmpaVVYyWlc1MEl5SWdlRzF3T2tOeVpXRjBiM0pVYjI5c1BTSkJaRzlpWlNCUWFHOTBiM05vYjNBZ1EwTWdLRmRwYm1SdmQzTXBJaUI0YlhBNlEzSmxZWFJsUkdGMFpUMGlNakF4T0Mwd05TMHlNMVF4TkRvME1EbzFOU3N3T0Rvd01DSWdlRzF3T2sxdlpHbG1lVVJoZEdVOUlqSXdNVGt0TURVdE1EVlVNRGs2TXpNNk5EY3JNRGc2TURBaUlIaHRjRHBOWlhSaFpHRjBZVVJoZEdVOUlqSXdNVGt0TURVdE1EVlVNRGs2TXpNNk5EY3JNRGc2TURBaUlHUmpPbVp2Y20xaGREMGlhVzFoWjJVdmNHNW5JaUJ3YUc5MGIzTm9iM0E2UTI5c2IzSk5iMlJsUFNJeklpQndhRzkwYjNOb2IzQTZTVU5EVUhKdlptbHNaVDBpYzFKSFFpQkpSVU0yTVRrMk5pMHlMakVpSUhodGNFMU5Pa2x1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2TWpFNE5XWXlZbVl0T0RWbU9TMWpaalEzTFdGaU9EY3RPVEZqTTJJelpqQmlOemhsSWlCNGJYQk5UVHBFYjJOMWJXVnVkRWxFUFNKaFpHOWlaVHBrYjJOcFpEcHdhRzkwYjNOb2IzQTZaV014WlRnM01qRXROek0zWVMwd05UUmxMV0V6WVRrdE5URmtNVE16TkRabFpUSTVJaUI0YlhCTlRUcFBjbWxuYVc1aGJFUnZZM1Z0Wlc1MFNVUTlJbmh0Y0M1a2FXUTZNakU0TldZeVltWXRPRFZtT1MxalpqUTNMV0ZpT0RjdE9URmpNMkl6WmpCaU56aGxJajRnUEhodGNFMU5Pa2hwYzNSdmNuaytJRHh5WkdZNlUyVnhQaUE4Y21SbU9teHBJSE4wUlhaME9tRmpkR2x2YmowaVkzSmxZWFJsWkNJZ2MzUkZkblE2YVc1emRHRnVZMlZKUkQwaWVHMXdMbWxwWkRveU1UZzFaakppWmkwNE5XWTVMV05tTkRjdFlXSTROeTA1TVdNellqTm1NR0kzT0dVaUlITjBSWFowT25kb1pXNDlJakl3TVRndE1EVXRNak5VTVRRNk5EQTZOVFVyTURnNk1EQWlJSE4wUlhaME9uTnZablIzWVhKbFFXZGxiblE5SWtGa2IySmxJRkJvYjNSdmMyaHZjQ0JEUXlBb1YybHVaRzkzY3lraUx6NGdQQzl5WkdZNlUyVnhQaUE4TDNodGNFMU5Pa2hwYzNSdmNuaytJRHd2Y21SbU9rUmxjMk55YVhCMGFXOXVQaUE4TDNKa1pqcFNSRVkrSUR3dmVEcDRiWEJ0WlhSaFBpQThQM2h3WVdOclpYUWdaVzVrUFNKeUlqOCsvMFZ4UlFBQUdmVkpSRUZVYUFYVndYZmNuM1Y5Ny9IWDUvdjlYdGR2M0RzN0pKQUlBVUxZQlptQ2ltRFZEbGZ0dzIzSHFZdXFQVjBXdGRiV1I2M25WRzJybnJhT3RzaERyUlVmUFIzV1dTM0tWaEFaWVFvRVFrTFduZHp6TjY3cituN2U1MDRpS05XTzg1OCtuMm51aXNTL0ozRzhZWmVaMlpURUltRDg1K1JPTzBaU1VmaUhKUDZGSHlJRVdCakF3ek53Nm9iSTNDeWtDR2FHSk55aExNV3dnbnJvcE5KSUNCTlVjb29pME84Yit4ZkY2UExBcUlNY0dvZDJXK3pZRDlGZzQ5ckFnYjFpMFRKVEhXR0N1bzZVaGVFSmRpOW1WclNOOGNLWXE0MmQrOFNLQ1NPMmdBd2RJQlFRVFB4N1psRFZka2tXYnpUWmNLVEkzZGh2dnJHbHVlTTlkOFVUWDBScitqbW95WUNRT01Tc0JMcEFBakxRUnhwZ3hvK1JBbWxyNG9jSVpoZUdrRjVsQnBMNHJ3aElDWExEZkgrZ0R4ZUZrSGdDQ2VTd2Y3OGhFei9Lak1QRUQ1SWdSWHVSdWYyMHBZQlpRNzJmN1N0R0gzWW1UdnhGTWhjZ0F3bGlBUkxnR1d3R05BZldRcXdtaHNoQmNuNHNHT0ErbDhxQ3h4bVFCVTNEU1pJajhWOFRZRkMwallVRmJlMzFkUDJ5NVpBelR4QVM1TVpBZ1BHanpRQkIxWUR4QTlaWjBLa21jRUhJbWM5M0x2aTNIZkhJa3FaZWpUSWdNRUFPN2w4bnhrOGgzWUxuM1lRMGp1c00xTHlPRU01RTRzZUNnT3ovbFBZY0VJOXhRVHR4eEhnM251a1lJTDVyRWRnT0NDajRmZ1lTc1I1cVJhZWpxMEppdXFwNGdoUU5MdzFWNHNlRkFLOUZNcjVIUUxUalFneWJNY2lOZzdIbjFwV1hmT09oNnNTTDhQa2pNUWRMWUdHYXdkN2ZKWFl2UjBXZkVNQUMxQldFNGxaNkMvOU1tZjZPY3VUcFNJRDRrV1VHMG03RXZlbTJiYzVqaG8xWU94bVBPbk1UcDJhSjdJQ0JpWThKL1Q3UUFrWUFjWkFBUThFb2MwTzJ5TGJSVVVNQ001Q01kaHYyelRsa0kvSmpSR0FSUWhISWpYaU1HY2RLR25lTTBqS0lPeDZwVisvTFp1Y2o3eEFNU1B2bzZ4VjQ5UVhTT016Tnc4Z0VkRm93TXdNalk1RFNYcHJtclJUNkI0eFZpQjlkRWt0dUpOcU90SGMrOEpqK0VEcGQyeFRhakdnQUdlTWdkLzluWUU4STRJSVFRQ3dKZ0lNTFhCQU5tZ3lTa1IySzROejlJRHc2THpZZkxRcmp4NFlaTkRYMGVrNTNMQ0J4U0FwMmpwbGhnaFkxc3paeDAxWE5CWE1FdGhBcVFCVzk1aDAwNlF2RUVhaEp0TXVYVU1RWDBGUlgwMnA5aENMTm93Q2Vyc2Y4UHJCVi9LZkVZY1ovbnpqTStBSHVFQUwvSVRsZ1lNWmhCcTZiRVF2cFNVZEdIbFBWeEJWamRvNnk0UklnRU5zRU82SkJscEVDVkxVVGdoRkxRVFljSXlNS1FaTWhHMVFORktYNDVqMWlZdEpvSlVPVitDRU1HQUVDTUErSS93OENYR0NBTzFqa3Y4MVlJc2dPRW9lSXd5eEFYWW01L2M2cWxZWm5hREpINWN6SmhJQk1tT0FoMy9qbGdYVldRejZSWURBWVhzdEMvUmQwbGtNNUF2STNVSFRmUndCcWZ4NGpvMXVCTDJJUjZnRFpHMElBQk80UUkyRGdEaVlPc1FSeWtJTVpQMGpnR1VMaWNSWUFnUXZNT0VRQ015aGE0Qm5rUElFRUZxQm9RYTdBSFVJRUJEbmZpY2pwcEVseGlJREltczZZblprYmFESllNRHo3M2NnZm1Xa0NSWUxKQ1AwK1dBQUtIbWVBWkVnUUFnVGprTkUycEFnU2h3aklBb3pqZ1o5Qk9rK3d6c0JjN0FPK2d2aWt4S1A4SndTNEdERzRLRVhPRXF6cXRQQUEzekhqQzRLdC9CY0V5NEp4OFdpYk0ySmtLb29hZUFENEN1TGJHQlFseEJFalprR2Y5WFZ0bTRoZ0NJelp2K1hGRHowWU5wNk5MYXhFRG1YbnMweVpFeW9vMHhuSS9vaWNvYWtoUk1CZWczd1RVa24yMVJnbkU4UWhyUTRvZzJjSGJRZjI0cXdpMkhxU0JScUJBRE1lNXc2cGdNNFlESHFRR3pDRGtDQVZNT3lCSEN3QUFnR3hBRGw0Qm9zY1pxQU1DR0lMd2poVVBhRnN3QTZDN21GSm1ubFVIT1FaV2wxV2o0eXlSVUVna0J0bHlUMnRxQU43NTRXNXNXUkNjS3JnRExEamdPVUdDb0dkR0xjQy95cDRoQjlHRU9DWXFYWjRiVzdzUmRGMEZHYUdJQU1wUXNDZVpZRmZNN04zQ1A3YVFId2ZBVG1yUlBaTHJjaXZZR3lXV1ZlQ3RaTWdsNXJLM3BTaVBvYnpoOENBN3lNZ2kxR1pYZXB1cjR6R3BnMnJZbG5YQWplVWhEc1BXZVRQTGZMSDFVRGFmbSttTG95UnR2M0VaTmNtcXl4YU5DQnV2VDZldXdQeE10UnY0K3JSRzl4SU11ZzBNTlFCTE54UGEyUUx1WUZxQU1UbkE4L25vQ0lBeGlFaGd1Y0RMUFkrVGpQNEV1Tmo5K0RXSjRSQU5YTTZkTi9DeUxLeldKd0ZieUJFUUJCTFVJREZtUWR4WFVjcTdzVENnR0gvS1Bweno2QXplaElHTkEya05uamV3ZmJiUHNyWTZ2dG9UejRmYTE2SUJjZ1pXaU9RNjBmWWZ2K0htRmh4QjkzUm44UHp5M0RkanJHZEphbTdNWENRQkVYa0REUEdjZ1VXd1hBR2ZWMWZXMEJ1YXkzeTg3Zzl2OTIyRXcxYklUY3dnU0FGUThKajRINlpYVkZMSHdCbStTNEhBcng0OVRKN1I5a0t4dzhXd1FLUGs2QnNRUUdXemRZWG8vR2pkWk9qTWg4MkRwTWdKanRwOVVUODM5MWtGK2VHb2tqQ0piSU1seEJZcm5Wa3UydHZNdzlIbXZKckJRT1dPRkFFVGxuVkRoOXNXYmlnY2NOTTFCbkVraUFra0xFaEJIdDNHV3dWbWQrOGQ1dnp4ZS9FOU15ejdjeUx6NGZxRVNpVjJWbHMrUHllWW0yUFBrL0ZNc2dIRFBveldJQ3FnbTduQVR5L2dOazlyNkVvbjBkNzlFazBGWWNJQ0FIRUVvRVB2OHFqRDd5VFZjZGR3OFI0UXpXQUxCQmcrV0ZtRnIvS2JITUZVK1h6Q0FteWd3VW8weDcyUGZTWFBIRG4zN0xsS1E5aDFpZEV3R0ZtMXlvNng3eVZzdnRHNmhrd29EUDZOaFptTG1mWnhoWXBYWXpYSUFHQ2FDQzlpMTc5RnpUWFFUcmhRc3BONEl2ZkF1WlprcnBkY1pDZ0UyVm5lelpjSW1LME9ueDFkdGIrTGplNmVOVUsrMkRDanE5ZGhCQzA1QURTaUFYS1ZqU2FSalFpeEdESGdyM1Q0Rm5BcjBwODJ3V2R5RnRiSStHM1RUYmV1QkFRZ0JBTjVQTWpMVDUzeDRPNmV0c0MrODQvd2RaT1lpOXRpTzh5eTdjaTNjaEI0dHhXeXo0UzRjUWlRT2c2dlI1N1RGeVZnanlZWFNSWTFRQU9kR0o4cWFSckpQdG9VM1BRdVNuWUZhUFJObVdEakREWVdkVit2Um5aNEd3ejIyQkFOWlNWbmZpcW80N2xzNVBPVmZQTGJPMktVZHRNWDJBR0JRdzZFOWMwZCsxZHhkcmpOdEZPb0RoQ1ovOTU3SGhnSzBlZkM2RUc1eDRHaTc5T1NoOGdwS2NSL2Rjb3U2ZlFuNGZza0NKUS96M1ViMkJxelU2YVBvd3NPNWJoNEFKY3UvRG1xN1FuQnZTWlovdld0ek4yN0dsMEp6Y3lXQVRaOVZSemI2YmR2b2JONTRxaUJXcWdHb0lpdEVmM3NPZkFteGkzU0xkOUtWVi9GNjN1VnpqNkxJakZPbFJkZ0FVUUVBTU1xM3ZKZGhWcjFrSnVMY01tbjRvcW9MNFpQSU9SR0hDSUdWTkVUaEpnQnRuOXk4TUJyeDhkczdjRmhYZDJvaGcyZm1QTytuU1EzUXkyRDlOa1U5a3BpNDIvb0d5Rmk4cElrQXR2eE1TWW5SK0srQWtMell0RzIzWkJ1d3h2eXoyMTYwYVlRWkZBVVBWNy9xbWlzRDluVkxmMSt2U25lNDRzUU5ZVmplenRwZkhVUm40VHNNNHN2TS9FaVNIQlRGLzloVVg3MDdLdGo0NjAySVhJTjl6VmJKNGFpKy9mY25TNHNCcUl4bFcwWTN6ZHZnVSt1bTNhanpqdEtQNE1iRk10a0duT3M3ODNoUERKRU94UlNSZ2NpWGdieGtzRmxxS3RhS2Y0d3Y1UVY1MTZySjYweWptaDJtOVlFSlRzZm85ZS84aDlCemFld1JIelU0UUNGRnFFOEFhOHVvbWl1SVdtRDU2aExNRGlnN1JISHVTV2E3L0VzUDlSVG5uNnM0Z0dpL1cxeU41SUhPeWtNN0dNaFlVM3M3ajRVc1JxaWxBZ1BrNk92MDY3M3N0UjYyOG5oeHZJMmtoMy9DYm1GMStMdUkzeE5lRGg2VlQ5VnlHT1JQbG1HdjlUSmxidHhJRDU0Vi9TYWo4WGZDZHpleGV4TnRUVldVVGZnQm1ZUVREb0RYZlEwelltV3BBMm5vUDdDZmhnSHlIZmpvbURrampNeFBwQU9BNER6OXdnOFg3VityMlJUbno1WXEwSGRzL2xQeHdwN1RQQm1PTzdna0hsWEh2M3cvNnhpU24vK1ZNMnBiZFhzL1lrajJJNEVLRUtXNTU2VXZIbG1KaW9lbW9yYzBnclFRT1BIaGo2VzJuc2I4cUN4OFVJTVJpNDl0ZFpmMUFVWERCV3BvbUZTcjlsRnM0SkNBdk03WnIxUy92emZIekRlc01NRURSdXQ4NzNtcmNvcC9jRVdCOER6WFJQOTMvcU9pL09Qem45YW12VW5yd3dDNWdlOHRwZkJYeU5KN29iOUR1WW5XallhWjdGWXJaTk1jTksySktDalZkbWRCbkFnQnNmMGhIYjJMTHVkYVFESTFRVnlLQ3o2bVNPbWZvazduK00vRXQ0L1FpdFVlaU9nemNnN1dEWSt6MXlQb21pWEU5amY0aHBCNmIxcEhnNTR5dWZ3WEFBWmhBTlhDK25hbTRsOEI2NjQ5QktCOGdMTU5kN0o1VnVvNHFSRWJ1TXdjSnZZMkVNaTFDTVhvU3FEdGhseEFBZHpkSTBleWs3MzJJNG5PT3V1Mkg5NnROWnRUd3hyQ0FZeEFRTCsyL0NyTS9vYXVoVlQ2WlZkSmh1cnFldEEzUWlPS1FVamU4NnhZd3B3VTdIcjIwbmUwdjJkRzQvNit2dS9pcGdHOTlsZ0ZoaUhOSTR2VWE2SFBkdjdodndpYkZPT0RVQnVSSGpJeHlSSGVvR2drRU1zR3RHMzg3QjMxaDI3R29KRU9EUWJVTzNNdTdkbmxuWkVXWEJWTHNkTzVZNVhoNWVvQ2lLQ0ROeitVUFQrL3pqclpTUXdJQTZ3OXBKWnpEMGF3ZnorZWVTYVN3bWNwWFpOVFZxcDY5WlliOGlCOCtPUjk2ZFV2eGFNRVlsR1dCTFdKS0JBM0o5MjR6VFdPS29YRFNuSzl1WUpBUUVnd1BONk5XN2UydWd6ZG1RUVN3UjRORHViTWI5cjhqRlZxSStBZllab3QrSCtuRDBhU3o1QnNxMzBCdnNndkFObWozZ2ZoUmgrVFNodVJKNUJZaUdBaGdoNkI2S0JBYXNXSDQ2WDcveWMxanJLK3g3QURZKzgrWEUrQWNJd3dSaVNZWjIrVXRJWjFBM014UmhBbWt6bG42ZmJkc2FSSWVpT0pXRERKQkR3NEQyMkxjWTltQjJEa0o2TXJSZ3FuTXpUWDJBYkJ5VWtGalN3dXgwQ1F5ZmptN1BEZU5oMDZEVUYxcDl2WnpHcHVXQVFBWVpNTUFNM0NFQTNUWlFzSFd1MXMvVU1mL1ZVZDF3U2IrR1FRMEdtRUdJUUFwZmYzUi9mdTNLRmR6bEFqTlFnR1lJSjIyQVpwdjQwT2Zod2pNRHp6M2RMdDI1eCtSbzQrcmx0aXdQSVhTNHAxM3lKMVB6UnJzRnFRVjFBd1owUzJNNEJFazdESkZsckJpTnhZdlA1NFZrVml6T2laQnNFZW1uZ0xNRTQ0RDRuaG9vRE03aUlBT0R4V2dVMFRoSkF0d2d3WmZqSlhkc0RTZTJDUGtJVkFNQk1CRFFERGtrZFU3RXV1K2lIcndhZUFtVG96Zmd3R0lGcUlmNEJLVlAweDlDNWpxOHVZNVE4RDNHSWNwUWxOQ2RXTW5ldmN2NDlyYyt5ckxPSWl2WHJtQ3l1SXpLRFJOZ1BLN0pYZUJjek1BZHNQc3h1NDJOUjRINzhaVGhGT29LTUVEZzdHQjBmQ3NSMkx2L0JJNVl0eGtMOEowYnI2TzNQeE1MRGtwa0RwcWswT2tnWXJDanJXTWo5KzNSVGRNTGV2VTRUSzhlZzdJRmJwQU5oQWhCV0FObWNNUnlZNlNBL29MWXZNeTMxemxlMld1NGhDWEdZV1pRTmY3My9ZcEx5NVoybFFGS2pOQUNCZWhWMENtRUFBZGl5WG5kYm5ycDF1bm1qOHBSemw3ZnNuYmR3TTU1djNyZGx2RG95UnNNR2pIWUFUUFQwRXF3Y3NLd0VGRXczQ0NIUUlUVjBleWlXdUFHRVViS0VIN2FBUW5NREFRT0dHQXNDWVlBQTVSOWF5Zlk2UWw3dW1TVTdScm1lSEI3L2FUYkIxUGQ1NUI3RzNETFlMczVyQTAyQVVUVWdBdFNzWkhzTDJiUGdSdG9IQ3h2QUZ0RHNLMFlNSGxjQzA4cnlMMkU2aHFMNHFBUXVyZ21pVVhCc1A4d3ZkWXJxUGJNc243bDFaejZIRmkyNWtKeTNzaGdIa0xnQ1F3UUlDQVZzREI3TGIzZWJsYXRoUkJQWVhiZkNnNnlDRlpBLzVFN0dlNituZEZUWU0yRzB4bHJIME52NWdCWC9lTzlQSHczZEVZNUtDbHcwTEdCY0NvWW9KRk9TK3pjbVQrOVk1ZTJyMTVoZER2RzJuRmpVSUVCQnBoZ1VJdDJhUnk1eXJoOXU1anRpUlBXOFJ5djdIZmRqSUI0VEREREczdjR6bDNEZld1bmpORldvaDJNSmtMdEVJRUE5SVl3VmpLKzZhajRmK2dxbkxaSk4yWEYxd3ptaFJWVURObmFUQU1tNmdYUnpCbXQwcEE3VlEycmxoYzBibVFYTVFuUHJPa05PYzZDaUlZSFdCQ3FCTWtNWTRtRXhZQWxvMTlsOVRtczdXYlQ5ZEEvVnJUdDlCaXRXMVhRc1F5SjY2NVpQSFVIenM5aWd4THhCb3lyZ1FJNEh2UUJ6S1p3UVZtQTVEeTg2eVlxd2ZJV2RPSUZNSElDc2QwRFFUVlloelZYZ0UxQm1BVnp6RWFBSTRFYVl6L1lES2s2RnpwWGNNSFBQa3puS0NDdHA5b2ZlWnlBd0NGeWlBa0NtZXlSMUxxZFhQV1kyUU5tSjVES2hEdFlnUGJZa01YWi80dEZpQ3VBQXo5Qk00UisvMFkybjdPTGRjZEJLamtveVFCak05QTFSQmJVaXl5dW43QzdqbDRMVDFwanpDN0FZQWhtUEVFd2tLQnFJRHNFQzc4STlxYzFqRWVFK0I1MzBXbUZYMTQybXU2cWMvNndBeGx3QVFZSXFneGpIVmE4OHFKd3hVbXJ3bW1QUGx5L2Vxb2REeVN6NVhValltM0ZpcmFXeis0V1FTS1pFVnFnaXNNRVRhT09qR3lvYUhmRmNORkdsQmtMTERFTGcreC9IY3cvVWdRN0tyc2lRZzRxWkhtMjBlNlcyWnh4U0xkcHZKMmQrd3JzOVRsRExBMEdrVVUxZHpRVHU2RGlHSkxOWTN3V3RBME1wUHVCUzhIT0JZRUU4NHQvUXRINk9LdVhRZjlSOFBaVGFZK3NZdmIrQllZek1QS2tmUlRsUG1JOEh4ek1RQWIxNE1zRXU1SlEzSUw3eTRpRDgwaGpzN2hWVE84QjkxdG90MnBTVE1oQUJqU1EvWE1VNVZmQmQ3TTQyRUlJbDdGbTVSeWpKWHppejZDdXR2UGNOMlI2L1VUVGg4WDlINmZWK1J1cUdhQS9UcTUrZ2w0RnFmVU5Mdno1L2FRQ0pBNUtKbG9XN0dRelF4SW1ZK2o2MW9ZanVOYk4yRGNMR0ppQmVKd0JKVEIwUVFyVzNiREMvcUFzd3B1R3RTWE1PY2pFZmhrZG9DUEFYV1BITEV2dm5lOWpjajVpQWVlN2hLaHFlOGJ4YThMN1d1dmlLZmZkblIvKzVqMzYwbk9lVHBoTWlneEFZSlY0YW94V0ZvVEtsVUVHQm5JSTBYN1pqSmNIVkFtYjJEL2pmemJSc3U4b1dkK3p1c2tnaS9ZZys1MmpJZDZKR1dZUWdleUJQWlhPM2RBTkZ3ZlJkVEVtK1R0YXBSOFJ6SjZSM2VoMHdmWTNmR2JmZWJkZGMrekxWbEZySTRPcURXcUR3QUtnQThCYndmOG5LUVZDNjFOVU01OWgxU1MwT3RBZnZaaWk5UUpNc0xodEdja2dObk5RL2pMS2QwQThoNUFYcVB0L0Q5MVBFRk9tR1hZSmNSbGlpVGFqWmdyM2FiSmRoL1JPeEcraFBFV0ljeWk4SDVwM0kxK2ticUEvL0IzV3JvVTdiempBby9mRDFCR3c3YlpQTTZ5T3BDak9vYW4rbGY3c0IybFBRUVI2dTA5Z1pPUmtIREQ3SnRVUXFpR1BTUmFZREdaUEZvY1p3a3lyK3hXL0dRd3JqRUk4cmhXTVpZS1Z3T2RkZk1oZDU4VEMzcmxxTXB4ZnUyZ2FVUVNqY3QwV3NGY1gwaXVhYUpmS1JSYTBJcU5sTjM1ZzZQNnpMbjBPN0NHRG84R2VFWU05blJERzZMblB6dWMzYlp6aW9lWkFYcWJ4c0sxVmhPWERTcGpaQmFYQ1I4ejBCb2M1bHJpelBKcTl2U3p0MGlvVE95MWpVR24yMFdtL3U3M0J0cmZhM0QrWXRaT3pZRFRaYTNwVm1CczI5cnV0a3NyTWtCaFBRYis0dmgxK1R6QmxCbG02eTR5M0oyT0YwQmFMUnIyWVNTVjNQYmpxS1YrYm1WdjNVOFRla1pnRDhkbTQzMDNPRUFPWS9SdVI2Mm0xQ3RBODFYNElVOUJVbXlsYjc4ZktaZVErTEgveVpSVERXNm1iL2VEVGlMZVQycU1NRm9iTTd4NnkraFRJZmpUVy96Z3huWXNERmk2aUdaNkM2ZDlvcFl6eHh6UzZpbVp3QkdPajkxT0gyL0RnWklkVytmc1U2ZTIwT3JEbm9ST3BkU1duUGczV2JOcEh0cmV4c0RCQ3F6WEh5Q1EwRGlIQi9QUkd4aVpYWVBWZWN2TVFNcjVmR2huVitvVjVPeTFFRG5GQTJIR2x3bHVpQWNaaHhpRXU3VFhaZlVMSGhFS1hFM2hhNWF5aWhtaEdBOVJaLytUR2I3am43OGo5RVN4ZUhDd2NEMktZUlRBcmtvWG51UGpKQUgyRHRvS2xnaVV5V1BSTEp6djZoMWdFRnFmWi84aDIvYzBKeDNOcVVaSnlBMlo2aGRBV0kveXJSTGRUOEV6SE5zdWcwektpYVdlS2VnbkdMUU1wRE9hNWNpVFl5YlVMaTJiZE12NUduWFdoWVZlRHVtWjJ0c3hPRzQxSzJhR1czU0RwSlJZMElOaDVZQWdEQndMM3JJcjdGcWs0RFV0Z0JqRyttZXgzSW4wUk04aUNmak5nY0dEQTdDT1FhNUM5aUZpOEQxdFlqOWNnUVdmaUV1cnA5K0xWSDVIQ3ZaZzUrQno5UGl6MGw3R09YNEQ4RmhwYmpzUWhSaUlXNzZZWi9nSXAzb1hVWU0zMXBCTG01MkZRUVh0cVBhM3d2NUMvRkRPWW1ZYlRudjNieFBZT2Vnc2ZZZDJ4TUt3eWcycWVsajJiT2grTDZ5OW90MFJhZlJHNUJ1VnY0SG9ZeFBkTHV3OXczbmhiSFhjd1FJSWlRcEZnV0FsM3NNQVE4WWpnOWliN3JrUVlpWVU5SDdOMUxoRUVqWERROVl0RGYzODBQdE5xQmM5QUkrMEkyWDhwcFhDNXNHTWRJUWx4U0JTTUdsQ1lNV2cwYmRhOHZvVSs3ZG53REowSWV3N29ZMnNhZjlycWtmaHp2VmtubTh6Z3pHRGhUQUVSRVlOUlpkRWZhdXRZbDFlbnhIV0d5QWZjTGR0Znh6RjdWdG0yOC9wOXNTU21aT2U0Y3c0WUJ6bEdQd3QzLzVjUXdwc3d0ZzFySm1JUm5obUNnYUFUS21ZMGRkdm45VHdvT1F2bU9VUmFUUXlYSS84WThGVmNEekIwR002dll6ZzRoYlhIUDVNbVA1TzhXQklUaDVoQk5ROTBmb0d5ZlNHZXZ3aTJDMjlFZC94SXl2WUZEQmVQQmtwQ0FuR1laN0I0Rm1YN004RGxvT3N3N1NhbWtybitNWGo5RkxycGVlREgwVGlZZ1dkb2pYYW82L2NTZURiRDNxMWtiMmlYeCtQMlhGS01pSjhtMkRpeFBBMDE0TnhNdGxtTUowamI5dG5aWnh4bkRPZmtCQlFDdzJHamhjVkswMld5bmdWbHllWXhUSEJjQ3VFQ0M0eldXVm5pM21TNnJ3amNPWmU1dnNxNk9zcjJTZUl4QnBpNGJ1RDV4UUc3TEptOTBNRlNNQ1J3aVNMU202bjFqd3VWM3J1eXhjMHNrVVJyTXREcEdpZE1zWkNDL2FxeXp3cTlNa1VyekkxR0FveGEwRTdhNDVXdTdBLzFKMlBkY0Q4Q0JLcEV1OVNPbk1QTDk4M3o1eE50UFNzUkdHWW9Ba2pnRWdtL1o5OVFIeTRqbDNlRDdSOVVqbUFDT0JXSlE4VGlQbHYrMmZ0MTNCYkU2WVFhQ0RYdWh0a2FpdUxOb05lUXduNUdDcU5ZUHNteUk4YUlSYUx1UTY0YlFpRVFoeGxnRWV4b1RLL2pvSnloMVlHUlNSak1DMUVUQWsra1FFeGJVSDRYaEJrSXM3aEtwcFl2dzJ3RXIxbmltRFdBRVNJTWVtQTJTb3pQUi81OFlvUUV1QUNEWUpjZ0IzT1dPSEFkUWZ4N2FmUHE4TUZxVVovRWFFQUt3Ulo3ZmVZWEt5MGV1ZEt5R3BzYVZrekdTTnRnQk9USXBwdEdNMkFMS1hFQW1IZlJ1S0JnaWZGRUJsbjZsc1Ava091S1lQYVVvZXVvRUd3WXBIdnF4cjllSzl6a01EUytUelNzTURvSkF1ejJyRGNPaC9udktzVm5XTkR4TFFpWXB0MTFpekpmazdUVnpES1BNU0FBQmlIdzRONDV2ZVRoUGY2VFc5YnlsTEpndzZEQ3pOaVpUTmVZK0hxV0hoTEc5RUpOM1lpVTdNQklhYThSZ1NBbEVvdGZxSjkxODEzOTQxZlE3YitTUU1aVkFZWmttTFdSdWhodHlnUWgxQmlMVklzRGpFeElnUE5FRFFnREVwQUlCcmx1eUUyRG1UQ1dpQitnSmdBZGpCSE1FcEtJY1FqMGFPb2haZzRZanpHV3lKQWlVQ0FIVVFNTkIwa1JjRVFiYkJhNGlSL2kvd0gzRDVQTXBkMnQ1UUFBQUFCSlJVNUVya0pnZ2c9PSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzFfUFJFIiwiRklET18yXzEiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkQmxvYiIsImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJsYXJnZUJsb2JLZXkiLCJtaW5QaW5MZW5ndGgiXSwiYWFndWlkIjoiYTM5NzU1NDliMTkxZmQ2N2I4ZmIwMTdlMjkxN2ZkYjMiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJsYXJnZUJsb2JzIjp0cnVlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6dHJ1ZSwiYWx3YXlzVXYiOmZhbHNlfSwibWF4TXNnU2l6ZSI6MTUzNiwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0Ijo4LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjk2LCJ0cmFuc3BvcnRzIjpbInVzYiIsIm5mYyJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi04fV0sIm1heFNlcmlhbGl6ZWRMYXJnZUJsb2JBcnJheSI6MjA0OCwiZm9yY2VQSU5DaGFuZ2UiOmZhbHNlLCJtaW5QSU5MZW5ndGgiOjQsImZpcm13YXJlVmVyc2lvbiI6MjU2LCJtYXhDcmVkQmxvYkxlbmd0aCI6MzIsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjo2LCJjZXJ0aWZpY2F0aW9ucyI6eyJGSURPIjoxfSwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjUwfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjItMDUtMDkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MjU2LCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IkV4Y2Vsc2VjdSBlU2VjdSBGSURPMiBORkMgU2VjdXJpdHkgS2V5IiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyMjA1MDkwMDIiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMiIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS40In0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIyLTA1LTA5IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjI1Nn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMy0xMi0wOCJ9LHsiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjQxODM3N2UyMTNkYjE0YWJjNjUwOWRiNWUxMGM5NTk4YjQyZjkyZWEiLCI1MjVlYTk2YzQ3YjlhNDc5MzNhMDliNDg3MWMzOThkZjY0MDdhYWE0Il0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjQxODM3N2UyMTNkYjE0YWJjNjUwOWRiNWUxMGM5NTk4YjQyZjkyZWEiLCI1MjVlYTk2YzQ3YjlhNDc5MzNhMDliNDg3MWMzOThkZjY0MDdhYWE0Il0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJGZWl0aWFuIE11bHRpUGFzcyBGSURPIFNlY3VyaXR5IEtleSJ9LCJkZXNjcmlwdGlvbiI6IkZlaXRpYW4gTXVsdGlQYXNzIEZJRE8gU2VjdXJpdHkgS2V5IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiLCJyZW1vdGVfaGFuZGxlIl0sImlzS2V5UmVzdHJpY3RlZCI6dHJ1ZSwiaXNGcmVzaFVzZXJWZXJpZmljYXRpb25SZXF1aXJlZCI6dHJ1ZSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQmZqQ0NBU1dnQXdJQkFnSUJBVEFLQmdncWhrak9QUVFEQWpBWE1SVXdFd1lEVlFRRERBeEdWQ0JHU1VSUElEQXlNREF3SUJjTk1UWXdOVEF4TURBd01EQXdXaGdQTWpBMU1EQTFNREV3TURBd01EQmFNQmN4RlRBVEJnTlZCQU1NREVaVUlFWkpSRThnTURJd01EQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJOQm1yUnFWT3h6dFRKVk4xOXZ0ZHFjTDd0S1Flb2wybm5NMi95WWd2a3NabnI1MFNLYlZnSUVrekhRVk91ODBMVkVFM2xWaGVPMUhqZ2d4QWxUNm80V2pZREJlTUIwR0ExVWREZ1FXQkJSSkZXUXQxYnZHM2pNNlhnbVYvSWNqTnRPL0N6QWZCZ05WSFNNRUdEQVdnQlJKRldRdDFidkczak02WGdtVi9JY2pOdE8vQ3pBTUJnTlZIUk1FQlRBREFRSC9NQTRHQTFVZER3RUIvd1FFQXdJQkJqQUtCZ2dxaGtqT1BRUURBZ05IQURCRUFpQXdmUHFnSVdJVUIrUUJCYVZHc2RIeTBzNVJNeGxrenBTWC96U3lUWm1VcFFJZ0Iyd0o2blpSTThvWC9uQTQzUmg2U0pvdk0yWHdDQ0gvLytMaXJCQWJCME09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUZBQUFBQVVDQU1BQUFBdEJrcmxBQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQkhacFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR3L2VIQmhZMnRsZENCaVpXZHBiajBpNzd1L0lpQnBaRDBpVnpWTk1FMXdRMlZvYVVoNmNtVlRlazVVWTNwcll6bGtJajgrSUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWtGa2IySmxJRmhOVUNCRGIzSmxJRFV1Tmkxak1ERTBJRGM1TGpFMU5qYzVOeXdnTWpBeE5DOHdPQzh5TUMwd09UbzFNem93TWlBZ0lDQWdJQ0FnSWo0Z1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNGdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlnZUcxc2JuTTZlRzF3UFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIaHRiRzV6T25Cb2IzUnZjMmh2Y0QwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOXdhRzkwYjNOb2IzQXZNUzR3THlJZ2VHMXNibk02ZUcxd1RVMDlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl0YlM4aUlIaHRiRzV6T25OMFVtVm1QU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2YzFSNWNHVXZVbVZ6YjNWeVkyVlNaV1lqSWlCNGJYQTZRM0psWVhSdmNsUnZiMnc5SWtGa2IySmxJRkJvYjNSdmMyaHZjQ0JEUXlBeU1ERTBJQ2hOWVdOcGJuUnZjMmdwSWlCNGJYQTZRM0psWVhSbFJHRjBaVDBpTWpBeE5pMHhNaTB6TUZReE5Eb3pNem93T0Nzd09Eb3dNQ0lnZUcxd09rMXZaR2xtZVVSaGRHVTlJakl3TVRZdE1USXRNekJVTURjNk16RTZOVGtyTURnNk1EQWlJSGh0Y0RwTlpYUmhaR0YwWVVSaGRHVTlJakl3TVRZdE1USXRNekJVTURjNk16RTZOVGtyTURnNk1EQWlJR1JqT21admNtMWhkRDBpYVcxaFoyVXZjRzVuSWlCd2FHOTBiM05vYjNBNlNHbHpkRzl5ZVQwaU1qQXhOaTB4TWkwek1GUXhOVG96TURveU55c3dPRG93TUNZamVEazc1cGFINUx1MklPYWNxdWFnaCttaW1DMHhJT1czc3VhSmsrVzhnQ1lqZUVFN0lpQjRiWEJOVFRwSmJuTjBZVzVqWlVsRVBTSjRiWEF1YVdsa09qSkZOekZDUmtaRFF6WTNSakV4UlRZNU56aEVRVGxEUWtJMk5EWXpSamt3SWlCNGJYQk5UVHBFYjJOMWJXVnVkRWxFUFNKNGJYQXVaR2xrT2pKRk56RkNSa1pFUXpZM1JqRXhSVFk1TnpoRVFUbERRa0kyTkRZelJqa3dJajRnUEhodGNFMU5Pa1JsY21sMlpXUkdjbTl0SUhOMFVtVm1PbWx1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2TWtVM01VSkdSa0ZETmpkR01URkZOamszT0VSQk9VTkNRalkwTmpOR09UQWlJSE4wVW1WbU9tUnZZM1Z0Wlc1MFNVUTlJbmh0Y0M1a2FXUTZNa1UzTVVKR1JrSkROamRHTVRGRk5qazNPRVJCT1VOQ1FqWTBOak5HT1RBaUx6NGdQQzl5WkdZNlJHVnpZM0pwY0hScGIyNCtJRHd2Y21SbU9sSkVSajRnUEM5NE9uaHRjRzFsZEdFK0lEdy9lSEJoWTJ0bGRDQmxibVE5SW5JaVB6NDc3SlhGQUFBQVlGQk1WRVgvLy84RVZxSVhaYXZHMk9vcWNMRzJ6T09rd3QwQlNKdHFsY1hWNHUrYXV0bFdoYnprN1BVQU1ZOUhjcktqdE5icThmZUFsOGFCb3N6ejl2cGRqc0dHcXRGM244dVRzTlNacGM2SnNOVDUrdjB4WUtudThQZmY1L0w0OGZnL2ZyaWN6SmdZQUFBREFFbEVRVlI0MmtSVUNaYkRJQWpGWFpPWTFUYXROYzM5Ynprc1NZYzNyNE1FNGZNQkFhRDZ6bDh5LzlUT2dldDhkNWpmTjc4YndNL2REQ1JwUjUyMXpYZm9qSEowNUlJeWhCQVVTVkFPTmRHekJZdDJmN0tGcmZrSmFBa0hoOUZaaGNEWEhSa1RLbzlNTGloR2FhdkltblYzcXlFWDBFcHJnei80RHdVRDdrQ0hSbmQ4UUZONDNHbzRVVm1ERGd6YTR3MjdvaXpkQTIrY0srdXVVcGpqbzIreHdjLzQyVzUweDVMR1llREJzUjBIVkl4NXg4aUY2MENibGJURUVrRnIyN2JOREJVVlNxMU9LVlBiRTYyYjNFSDhGcUJnNU9PT0V1YzJ0OFpKaXFNT3VHcCtjS2pnN3dWR2Nlb3pxTjRweGdWUFFrakZZZ2JWSktEVWhEQ2pZcmF3UDVxNEVUZ0M5ZklNUkh0aXRwUWNDdkpPRUxjYk1zUWduY2lSa2xqcHlRanZHNDRqcUJVRVRGaUJpMVBFSXlla096c1crVHk1Y0xIb3M1UitkTVMxTHRTU3hmM2dRSGN6UjJDSTRnTU5wVzRJUkExUU1hNnRKNCtDNnVIdUdFOG1OREl5RnFnL09QL01NVXVlUzZJcThTOTBkQWVCSlNFeS9xS2tLK0JOd3o4Y1lZNGpiNUo2dTRpV0NJMkIxWjU2TFc1a0VjNGhrZE1wc3ZVQzU1ODVTWDBRdWJjZ05xeWZnREZFY1R0KzQwLzBTNU54MHdhQ3czT0trY09iQTVJbjBBWXAwMXBqancybjYyNlVEanRId2EyOGlIdVRLcXRydityZVc0MU5aNmlHbHI3dXVMSkNma0Z0Y3RjRzA0c2dtMWVOUytaYURucGFURXJHb3lYNUpLMmlNejh4czBuT3dXR2NQRE40OXFhQ2Q0YnpKb3pEWm0vYUJLK0Vvekx3K1hoTkJpWXdIZjBzaU91MVhQa0cvekt3dnFZS2NmU3dERWNIL29VZTA3ZXMvV1E4ckl5ZzJET1hqOHRqa1pkdURCL2I4aHpEbGxNTU9DUzVCRW5kNTM0Zjh0aTNVWmM0a01zM3hMeWFmTVNzSmhkRzhYUHFqTms1dEFnTzI1ZmVLQ2huVmREai9KMEZNa09zVS94TUJ2MHdGaFllRUdmVkgxM2Z1RFUweURGTGE0ZmM3Um5XSEJmdVRGVjJ0RW1Od2FkYzdhYzNVWTJqZkJsN0hUMzZmZTM0aVFPNW1OQ0ZGQlcwN0tqUGdxaE9MVTAxdlo4UHVlWjJKQ2xGWk44amtVczY5dWthOWVQcDYrRWZMNEFGNStOeXdTYmlySHRjQjhNbC9na3dBRWprSzY0S2pIUGVBQUFBQUVsRlRrU3VRbUNDIn0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMTgtMTEtMDEiLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ik11bHRpUGFzcyBGSURPIFNlY3VyaXR5IEtleSIsImNlcnRpZmljYXRlTnVtYmVyIjoiVTJGMTAwMDIwMTgwMjI4MDA2IiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjAuMSIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4wLjEifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMTgtMTEtMDEifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDE4LTExLTAxIn0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiMmU3OTc5ZTA1Yzc3ZmY2ODdjY2VmMmIxNDVlMWUzMTY2MjIwZTZlNCJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyIyZTc5NzllMDVjNzdmZjY4N2NjZWYyYjE0NWUxZTMxNjYyMjBlNmU0Il0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IEJpbyBTZXJpZXMgLSBNdWx0aS1wcm90b2NvbCBFZGl0aW9uIn0sImRlc2NyaXB0aW9uIjoiWXViaUtleSBCaW8gU2VyaWVzIC0gTXVsdGktcHJvdG9jb2wgRWRpdGlvbiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzYsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6Mn1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiLCJyZW1vdGVfaGFuZGxlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRFNEQ0NBakNnQXdJQkFnSVVEcUVSdys0Um5HU2dneGdVZXdKRkVQRFJaM1l3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRREk3WG5IK1p2RHdNQ1FVOE04WmVWNXFzY3VibHZWWWFhUnQzWWJheG45Z29kTHg1c3dIMGxYcmRnamg1aDdGcFZnQ2dZWVg3RTRibDF2YnpVTGVtck1XVDhOM1dNR1VlOFFBSmJCZWlvVjdXL0UraFRaUC8wU0tKVmEzZXdLQm82VUxlTW5mUVpEclZPUkFrOHdUTHEydjVMbGo1dk1qN0p0T290S2E5SjduSFM4a0xtelhYU2FqMFN3RVBoNU9BWlVUTlY0enMxYnZvVEFRUVdyTDQvSjlRdUt0NldDRkU1blVOaVJRY0ViVkY4bWxxSzJieDJ6Nm9rVmx0eURWTEN4WWJwVVRFTHZZMXVzUjNEVEdQVW9JQ2xPbTRjcnB3bkRSTFZIdmpZZVBHQkIvL3BFeXp4QS9nY1NjeGp3YUgxWlV3OWJuU2JIeXVyS3FiVGExS3ZqQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJUcXQwS1FuZ3g3WkhyYlZId0R1bnhPbjlpaFlUQWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQXFRYUNXTXhUR3FWVlg3U2s3a2tKbVV1ZVRTWUt1VTYrS0JCU2d3SVJubHc5SzdIZTFJcHhaMGhkd3BQTmlrS2ptY3lGZ0ZQemhJbXdISmd4eHVUOTBQdzN2WU9kY0pKTmt0RGczNVBYT2Z6U24xNWNGQXgxUk8wbVBUbUliOGRYaUVXT3B6b1h2ZHdYRE00MVphQ0RZTVQ3dzRJUXRNeXZFN3hVQlpxMmJqdEFucS9ORFVBN2JlNEg4SDNpcEMrLytOS2xVcmNVaCtqNDhLNjdXSTB1MW02RmVRdWVCQTduMDZqODI1cnFEcXNhTHM5VGI3S0FIQXc4UG1yV2FOUEcya2pLZXJ4UEVmZWNpdmxGYXdwMlJXWnZ4clZ0bjNUVjJTQnh5Q0pDa1hzTkQwNWRDRXJWSFNKSXMrQmR0VFZOWTlBd3R5UG1ueWIwdjRtU1R6dldkdz09IiwiTUlJRFNqQ0NBaktnQXdJQkFnSVVUbmJiR0lSMk5IdnpxSUtGQWVRd0cxWEJpczB3RFFZSktvWklodmNOQVFFTEJRQXdMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3SUJjTk1qUXhNakF4TURBd01EQXdXaGdQT1RrNU9URXlNekV5TXpVNU5UbGFNQ1l4SkRBaUJnTlZCQU1NRzFsMVltbGpieUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRUVnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBT3NYajNrMDRCYW40VFlkdFpLcUQvT1BKeHlEeWFQbUNCVUZVaWFaSWdUdGVabmozWDI1RGhncFpaWHNDNEQweWRJY3JsQTZ3TlVJbk9STC9MOXpCYlRFSU1BVk1HbzZnN1VLQW1iMk1GNkFIYm5oWUpkOWVpa3VwVk5XU2hITllOYzRHQmRPMVlONkFmVXF2SmhIYmUzVjRTTk1QbUJSRUtKUFZ6N1Rod2dtZ2dUZThXczJLMC93c3F2MndTRTdwYkNCc1VaaElYNTFiWk0zcHFEd0pQVG1SRkV2dDAvNnRHNWVPOEYzajE0T1hxZkVobWpuMVZ2eEtEWVFPTFpBeEN3d2dDMFA0Q2RmV3YzeThQU1I4STM1NGhPMVkrR3pOanZJcVgzOE5LTHl3dUlZSEZlck94Tmx4RU1CdkZoWUJ1UnVZQWtrZ1VhUHFONlVCaHNJTHJzQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZDQ29SSGhpeU5uYm5YUldJTDZaQlhvQlg5WVRNQjhHQTFVZEl3UVlNQmFBRkNBb1VDRWJwRnBiNkZQTG5aM0Y1UHhzTDNvZk1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQ1FGYWZKSTEvNVdnOUNFRWltRTFSUDU0UmdRd1ROVE9PUXNMQUNUZStySXRsRlF6QzlaRGhyVjgyOHlYN2p6eStBQXNwM2l6SzdUMXRoMmRsN20rdHUwc3cyUGEvb2xjMDJudDZQeUl3MzQ4Z2FIemhJMSswS0U0NXF4dkZEZUwybE14YlBmQ1l2eUVFYVl6amlRRUxVNTk1MXBYR1d5S01hLzRmTHRPK1pLT1hoTXVWZXE0clhEUEk1NFc2SkhPaUFhaUtkaXcrNWUzYzJrdC9qRklRdE02dk1YZzlMTkZ6ZGpFVE50MjBWWDlRZXZScEZaZnVjTUc5d0NhUURvRmxQenBUTUpLaFBldi9pbUptWlloS2ZyMGxMY2VtdHFqSXhMQW9xWmRPWWZIQmc2K3ZBY2RQSS9pYXVHcFVBdjdYK1VLTm1Ed2paMkJhSDRzTHdoQjJtIiwiTUlJRFBqQ0NBaWFnQXdJQkFnSVVYemVpRURKRU9UdDE0RjVuMG82WmYvYkJ3aVV3RFFZSktvWklodmNOQVFFTkJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNWjYvVHhNOHJJVCtFYW9Qdkc4MW9udE1Pby8ybVEyUkJ3SkhTMFFaY3hWYU5YdmwxMkxVaEJaNUxtaUJTY0laZDFSbngxb2Q1ODVoKy9kaEs3aEVtN0pBQUxrS0t0czFmTzUzS0dOTFp1ano1aDN3R25jcjRoeUtGMEc3NGIvVTNLOWhFNW1HTkQ2enFZY2hDUkFIZnJZTVlSREY0WUwwWDRENW5HZHh2cHBBeTZua0VtdFdtTW53TzNpMFRBdWNzcmJFNDg1SHZHTTRyMFZwZ1ZkSnB2Z1FqaVRKQ1RJcStEMzVod3RUOFFESXYrbkd2cGN5aTV3Y0lmQ2t6eUNpbUp1a2hZeTZLb3FOTUtRRWRwTmlTT3ZXeURNVE10MWJ3Q3ZFenB3OTF1K21zVXQ0cmowZWZuTzlzMFpPd2R3TVJEbkg0eGdVbDVaTHdyclBrZkMxLzBDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01COEdBMVVkSXdRWU1CYUFGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFNd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkRRVUFBNElCQVFDM0lXL3NnQjlwWjhhcEpOanh1R29YK0ZrSUxrczB3TU5yZFhML2NvVXZzcmh6c3ZsNm1lUE1yYkdKQnlKMVhucXVCNXNnY1JFTkZ4ZFFGbWEzbWlvOFVwZjFvd00xWnJlWHJKMG1BREcyQnBscWJKbnhpeVlhK1IxMXJlSUZUV2VJaE1OY1pLc0RackZBeVB1RmpDV1NRdkptTldlOW1GUllGZ05oWEpLa1hJYjVIMVhnRURsd2llZFlSTTdWb2xCTmxsZDZwUkZLbFg4dXN0Nk9UTU9lQURsMnhORjBtMUxUaFNkZXVYdkR5QzFnOStJTGZ6M1M2T0lZZ2MzaXJvUmNGRDM1NGc3cktmdTY3cUZBdzlnQzR5aTB4QlRQclk5NXJoNC9IcWFVWUNBL0w4bGRSazZIN1hrMzVEK1dWcG1xMlNoL3hUNUhpRnVoZjR3SmIwYksiLCJNSUlEU0RDQ0FqQ2dBd0lCQWdJVVVjbU1YelJJRk9nR1RLMFRiM2dFdVpZWmtCSXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFEbTU1NWJXWTlXVyt0T1kwcklXSGxkaCthTmFub0NaQ0ZoN0drM1laclFtUFV3MGhrU0c2cVlIUXRQK2ZaeVMzM1ZFcnZnK0JRcW5tdW1nTmhmeEZya3dFWkVMZWlkQmNDOEM0QWc0bnFxaVBXcHpzdkkxN05jeFlsSW5MTkxGY1pZLytnT2lONlpPVGloTzUvdkJaTWJqOXJpYUFjcWxpWW1OR0pQZ1RjTUdhRUF5TXpFTU55Mm5tNkVwK3BqUDVhRjZnaTIxdC9VUUZzdUoxajJSai95bk0vU2RSdCtlY2FsNU9Zb3R4SGtGYkw5dnZ2MkEyT3Y1SVRaQ2x3NGJPUzlucHlwUWltT1o1UUFZeXRtWWFRcFdsL3BNWXo2elNqOFJxa1ZETkVKR3FOZlRLQTJpdkxZd1g2bFN0dE1QYXBnMEo4NGw5WDB2b1ZOL0ZwUzRWQ1ZBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlFnS0ZBaEc2UmFXK2hUeTUyZHhlVDhiQzk2SHpBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBWU16Z0xySkxJcjBPb3ZRbkFaclJJR3VhYmlIU1VLU21iTFJXcFJrV2VBdHNDaERFSHBYY0ovYmdETktZV29IcVE4eFJVakI0Q3llcFlldmMzWWxyRzhvN3pIeHBmVmNhb0w1U2V1Smt6SHhLbjRiVGFTcDkrTXZ3YW1ucDY0a1pNaU5iRkxrbmZQOWtZS29SSGtNV2hlUkoxVXNQMXo0U2Nta0NlSUxmc01zNnZxb3ZxaldDbEZzSnBCY3NsdVlIV0Y3YkJKMW40UndnK0FURW9wWTRJZ0d2Nlp2d2MrQTlyK0FUMmhxcG9Ta1lvQWwrQU5Zd2dzbE9mOXNKZTBWK1RBOVlZL1VsYUJtUFBUZDAvL3I5d3ZjZVBXWmtQaktvQUMvelVOaGZEYmg0TFY4R0hzM2x5WDJYb21ML0xOYzhKWXp5SWFERWhHUXZlb1BoaC90cjFnPT0iLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVIzOG1xMjZTZjJzelZWMkJkRzZXRU43a3VXVXdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFSWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFOWTBXYjlvUG9Sb0tvUXlXUGFKcHoxMXZyV1RnNnpUdG1OajJWb0tSbnl2S0dScXB6YjgzdzVsNllBOTZVWWtZQkRRUDBpbE8yRFBlNndXcVZSNXpEZlJ6ZGNIOGJoK0w3ZEdHdmFlNmhSVFpoa0ZrQ3BYRHM0SGNja25yRGY4RkNsSjdIZTM5SmY0Mi9HMVFtMnp6OVdXbXJQWHRnaUsveDA1R2pzUWZHdURHMXpmNVFUVVVpZThsd3ltSzNUZmRPdk5lZUpBQVBlMnBuN0l0ZlJiK3JWck5XaUR6bFJuMnZObloyd1BvNHdIL1dKNmRoWFpHK3JNV1QrYTZCb2NnMVVmSXc2a2R1bkc0YlRwWnpzdmFjRll5UjBtcGYrRGVPbnBTV0FteXdKV0h2VGxmMllYeEZ5ZVhjVEFDZFFsY01OR0oyVmhaUTQ4eHRQNS9SQlAvOGtDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNoeTQyb2tpcWNUUzFpcWEvSFJXamtCbjRIL01COEdBMVVkSXdRWU1CYUFGT3EzUXBDZURIdGtldHRVZkFPNmZFNmYyS0ZoTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBbitSSElQYnRNRUROZFQxZzhIL1JpdEFrVWRMZ0F0MXRXR1dubGo5a25idjQvNEdsWDdDOXA0NWVmUE85L2FaTDZPVjFYUktCaTZLbXRCVzVLN251WUVuTXgvNUJxQlNiTFQ3cmhkdUM0OVRCZU1iOVBIZFhzVGxTVk5ZZWZyMWRHaWRyNGoweFZCUUxiMXJrbkRBYmRXRHpLZnZuYXlLTzhGcndlN0h4ODQzTUcvckorYzBYcnVVdmJmVlRDSExpSVdoTTdvTkRoTDh4b2I2eFVvOUtMS2NTTCtJdFlzTzMvOVdiOFE5R2pzcUw0RlhzRGNHMVNhWWg3S3BmdU1tT2l4cXpKWk8ybklpY1BZUmcxSTJTdWlVZllPNzB0bWRIY2JsK2tTUW1TWXQ3cnE0dmlJTGcyR3gzajlySVR1V1RqYmFVYVNTUXhnT21NU0h1eXpNQUMiLCJNSUlEUnpDQ0FqR2dBd0lCQWdJVWV4OW5UOXZ3Wk5YUzQ4M0xkaVlHZncyU2pTb3dDd1lKS29aSWh2Y05BUUVMTUM0eExEQXFCZ05WQkFNTUkxbDFZbWxqYnlCQmRIUmxjM1JoZEdsdmJpQkpiblJsY20xbFpHbGhkR1VnUWlBeE1DQVhEVEkxTURnd01UQXdNREF3TUZvWUR6azVPVGt4TWpNeE1qTTFPVFU1V2pBbk1TVXdJd1lEVlFRRERCeFpkV0pwWTI4Z1JrbEVUeUJCZEhSbGMzUmhkR2x2YmlCQ01pQXhNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXUxTWV2bnk5ZHlPOVpVQzM5U29NaExjUi9EWHJ0Ri9jaU0xMnRjaXkyRVhBWjZNa3JpdlZ0Q2ZFVk05WDZJU1RFbkJQNnVTWVlvdjZwcHY2TzZKaDJOSG1ZbTR3K0puUzRWbkNQVTdtSEFNZlZJMk1HVFRNVk9ldzB4VXNHN3NJU0lrSURVQm11azhZSzljNXppYzkrdkZRR0xJa3NkWE81aVZGSWdORzUzY0dYRDRaTFpvQVBpdTBQRW96eEFxWUlhSTRneEtoT0EzUzgvVzhtSVdzdTZvZnlqNEd2a0ZHNlo3a3lGMzEwN1A3bXdGSExySTNFTmFQV01PRmNUYUdhMGR3Ky92VlJ3alJjRVpCVnN1dVQvODdja1NzMGE1cGt0M3ZaQmxhWWVUOHB6U3JlVjdtb3djSU05MEwyaWFBVGxQMG54bWFFNm5PeVRib2pGVmwyd0lEQVFBQm8yWXdaREFkQmdOVkhRNEVGZ1FVU1hFaDNzYTNidER1cm00TU0vQzdTMWxSdXVZd0h3WURWUjBqQkJnd0ZvQVU2cmRDa0o0TWUyUjYyMVI4QTdwOFRwL1lvV0V3RWdZRFZSMFRBUUgvQkFnd0JnRUIvd0lCQURBT0JnTlZIUThCQWY4RUJBTUNBWVl3Q3dZSktvWklodmNOQVFFTEE0SUJBUUI1R2MzaGFmdHA3aEtzRVpzbytpL1o1blJ1cWRtekcyV0NsVW9SVXFiYVB5Z2xuSkRqS1Iva2ZnT2w2aWJiRi96dGhtM0ttWFE3SGNESVAyeE1kRzdVMkwyaW1iSlFIcVBmL2gySHFvamI0clpndWUrNlc0a3RTUjVlbFI5TDFyWXFFL1NHWU00aUVLb1ZRU3Y3UlQxcnhJZVdpS3N3L1Z4eGkvUU9uc3gzRjd4ODBDQ1lnQjRFM3lReDhWVFc0NDBoVEV3VEExZU1IT2l4MzJ0UHR5eUhJYThQVlZJZlZwSFFKQmFNVnZ2NTA4VUVqd2tiVTJybmpmem9TVE5TOUE1alVROG1CU3ZlOTVyakIwZG85OEVVK0R4ZEJxWDIrSDZpNXdsSUNGZ3poZHpjc25lOWhHS1Q2bHpUWDRjSWRKc3JZMit4bGVLMEZGUXk2bEdFVkxFZSJdLCJpY29uIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwiaWNvbkRhcmsiOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJwcm92aWRlckxvZ29MaWdodCI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsInByb3ZpZGVyTG9nb0RhcmsiOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0ifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wMi0wMSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzYsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWXViaUtleSBCaW8gU2VyaWVzIC0gTXVsdGktcHJvdG9jb2wgRWRpdGlvbiIsImNlcnRpZmljYXRlTnVtYmVyIjoiVTJGMTAwMDIwMjUwMjAxMDAzIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDItMDEiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTAyLTA2In0seyJhYWd1aWQiOiIxOTA4M2MzZC04MzgzLTRiMTgtYmMwMy04ZjFjOWFiMmZkMWIiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjE5MDgzYzNkLTgzODMtNGIxOC1iYzAzLThmMWM5YWIyZmQxYiIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IDUgU2VyaWVzIn0sImRlc2NyaXB0aW9uIjoiWXViaUtleSA1IFNlcmllcyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzMsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfSx7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDM4NHIxX2VjZHNhX3NoYTM4NF9yYXciLCJlZDI1NTE5X2VkZHNhX3NoYTUxMl9yYXciLCJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURIakNDQWdhZ0F3SUJBZ0lFRzBCVDl6QU5CZ2txaGtpRzl3MEJBUXNGQURBdU1Td3dLZ1lEVlFRREV5TlpkV0pwWTI4Z1ZUSkdJRkp2YjNRZ1EwRWdVMlZ5YVdGc0lEUTFOekl3TURZek1UQWdGdzB4TkRBNE1ERXdNREF3TURCYUdBOHlNRFV3TURrd05EQXdNREF3TUZvd0xqRXNNQ29HQTFVRUF4TWpXWFZpYVdOdklGVXlSaUJTYjI5MElFTkJJRk5sY21saGJDQTBOVGN5TURBMk16RXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFDL2p3WXVoQlZscWFpWVdFTXNyV0Zpc2dKK1B0TTkxZVNycEk0VEs3VTUzbXdDSWF3U0RIeTh2VW1rNU4yS0FqOWFidlQ5TlA1U01TMWhRaTN1c3hvWUdvblhRZ2ZPNlpYeVVBOWErS0FrcWRGbkJubHl1Z1NlQ09lcDhFZFpGZnNhUkZ0TWprd3o1R2N6MlB5NHZJWXZDZE1IUHR3YXowYlZ1em5ldWVJRXo2VG5RakU2M1JkdDJ6YnduZWJ3VEc1WnliZVdTd2J6eStCSjM0WkhjVWhQQVk4OXlKUVh1RTBJek1aRmNFQmJQTlJiV0VDUktnanEvL3FUOW5tRE9GVmxTUkN0MndpcVBTemx1d24rditzdVFFQnNValRHTUVkMjV0S1hYVGtOVzIxd0lXYnhlU3lVb1RYd0x2R1M2eGx3UVNnTnBrMnFYWXdmOGlYZzdWV1pBZ01CQUFHalFqQkFNQjBHQTFVZERnUVdCQlFnSXZ6MGJOR0poamdwVG9rc3lLcFA5eHY5b0RBUEJnTlZIUk1FQ0RBR0FRSC9BZ0VBTUE0R0ExVWREd0VCL3dRRUF3SUJCakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBanZqdU9NRFNhK0pYRkNMeUJLc3ljWHRCVlpzSjRVZTNMYmFFc1BZNE1ZTi9oSVE1Wk01cDdFamZjbk1HNEN0WWtOc2ZOSGMwQWhCTGRxNDVyblQ4N3EvNk8zdlVFdE5NYWZiaFU2a3RoWDdZKzlYRk45TnBtWXhyK2VrVlk1eE94aThoOUpESWdvTVA0VkIxdVMwYXVuTDFJR3FyTm9vTDltbUZuTDJrTFZWZWU2L1ZSNkM1K0tTVENNQ1dwcE11SklaSUkydjlvNGRrb1o4WTdRUmpRbExmWXpkM3FHdEtidzd4YUYxVXNHLzV4VWIvQnR3YjJYMmc0SW5waUIveXQvM0NwUVhwaVdYL0s0bUJ2VUtpR24wNVpzcWVZMWd4NGcweExCcWNVOXBzbXlQeksrVnNndzJqZVJRNUpsS0R5cUUwaGViZkMxdHZGdTBDQ3JKRmN3PT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZkNBWUFBQUNHVnMrTUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFIWVlBQUIyR0FWMmlFNEVBQUFiTlNVUkJWRmhIcFZkN1ROVjFGRC8zZDU5d2VRU0lnUzlBUUFYY0ZMQVFaaTlmcGVWejF0WS9XVFpyNVd4cGM3VzVrbkxhNWpJM1o4NXNyUzJuTTJzanRXd1pTN0lVSDRINHhDbkVReDREQVpGNzRWN3VzODg1djkvbEluQnZWSi9CNFB2OW51LzVudS81bnZNNTU2ZnpBL1F2MEhiL0lyWDNWRktQbzQ1Y25tNGluVUlXWXdMRlJtWlFVdXdqRkcvTjFpUkhoMUVaME5SVlJ1ZHF0MUJkKzJuU0t5Uy9PaHlzMCtsazNlLzNrUTlxdkQ0WlV0YTRWVlNVdVkwZWlweWlUaEFmb2NvT1JWZ0R1dXczcUtSaUFkM3JiY0V0alRqWUlvZjZXYUhzQ216VlBXQ014K2NnaDh0THFXTUthTVdzVWpMcW8yUnRKSVEwb096bWVycFF1NGVzWmdzT05rR3hIN2Qwa2R2VFQxN3M0T01VN1ZJOFpoamdHYU0rQXE5aUVOdThQaWYxdWR6MDdNd3ZLV2Y4R2xWb0NFWTA0UEM1V2RUYVhZRmJSOHZOdkw1KzNLZ2ZiNXhOTXlhOVJhbUppeW5hTWxHVFZ0RmxyNmJhOXUrcHFuRVg0dU11UlJnalNZRWhyTjd1dEZGZTZscWFsN05ma3c1aW1BR0h5blBwYms4Vm1ZMHhzdG5wdGxGQ1ZDWXR6VHVCTjgzUXBNTGpUdGV2ZFB6U1VuSjdlOG1ranhaMzlmWGJLRGZsZFpxYnZVK1RVZ0duQlZGNmZRMmlQSGc0VzE2VVdVd3Z6YmsxNnNNWkUrUG4wcHZ6N0pTZXVBeWVzOGxjcENtYUt1by9wK3FXcjJVY3dJQUhXcnZQMFlFemhYQXRMQWJzc0hocDdpR2FtdnlpalA4cnlxclhVV1g5WG9vd3h5QXVmTkJycDQzUE9CRlhabGtmOE1EUmlxY3B5b3dBd3B1ejJ4K2ZXdnovRHRkZTlzbXN6eWd0Y1I2QzF3YmR6Qmw2T2xxNVdOWVk0b0dhdGhKTXJrVEV4MGpBUlNIQVZzKzVyWWtRTlhiK1FnZlBMc1E2Z1h5SW5zcmVRZm1wbTdSVkZZZkw4Nm4xZmlVT2tZdlNoa1VQeHZidWt6b3k2SzFpaE0xaG8zWHpXNkV2U2ZYQStkcGlXR2FXZCtkb1h6THptR3dLWUZMQ0FzUkFsUEJBaE1sQ0ZYVTd0QlVWUHI4SGdWY0pIV3ErRjAwcGxyK0RNVGRyUDR6dnhZMTFrTk1oeFQrU2VUR2crZDRWNUxRSml0eVVHSk5COFZGWnNqZ1lCWk0vSUkvWENUa2owcXlET3BGMkFWUTE3Q0lqVXAvRG5UMVVrTDVGNWdkaitzUzF3ZzFnRTNnaWdtNjBmQ1h6U25QWGJ5QVBiSVh2K0lEcEUxNlRoYUhJUzlza3lobG1NRTVGM2NmcUFLaHEyQzBFNVBIMWdZYVhhTFBEa1pHMEhESk9uS1dIcDUxSTB6NVNPdXg4ZTFXQXVaemRIUXJUa3A4VG1qWG9JK2xhMHdHWnN6dWJxYk8zaWZRNkEvVzd2VlNZc1YzbVIwSkt3a0tjNFdIaUJrbVI4STNDQ2dJODdvT0w0cXpUNVArUlVKQmVqRU9nQVBLOGhZUHphdE0rZUlUcDJJTzl5VFFtZXJvbVBSeHgxcXhBY3NpbGUvdWJTZUViY1dRR1lFQ2doY0xZMkh5S2pvZ2pIMjVoTXBqcFV2MU91Z2xpNGVoMmVSdzBPMzJiSmpreXVDZ056ZzB2emxZTVNpU3MwdW9vNE1HN2hNT2pDRWFYMXlGRTBuU3ZqQnp1VG5FcEs4Nlo4SW9xRkFJdWJ3OGtnOUFyRWFSRVdTWkkrakg0WGJwNmc5RTlFbkpUM29hUnpETitNVUpCUURIbjU2YThvVW1FQnVzT3hCcy9ONSt0SkViUGtBRkRqOFVHdk9zL0lXdmNTZ2xHQmh2UzcvRlRZZnBXR1lkRFk4ZlBBeFdTQTM1c1RDNHA0K0xtNEFhcUlvUGVRdGZ1Zks2SmgwWmh4bGJzVVhPU21YTmlmRDVaVEFreURvZmJiY2NseG5BOFdOQXF4Q2JSTnlraFh4UXBhRHc2N2ZYVVlic2lHMEtodHYyb2VJdmg4cmhRTVlPY0VBcVhHL2VJK3puZ09jNXl4cjhxODJJQU0xYy9GTEZPcGxxdTVlRlFYck1aekdjVkNqWWJMV0c1STRCVDFldVJybGJ4dE5PdE1pdERERWhMWElJeW5BQXZ1T0VXRTNYM05kQWZ0OTRWZ2FHNDJYSVF0MFpYNlBlQ0UvcVFGZTlySzZIeDdZVTUwS3ZIN2ZXNGZTK3E3S0tCSnhzZ2dCWDVwU0FHaDFqSXJWaDV6UTZ3M1JmYWFoQlhtL2FDYkNaVGpDVUZVVHlXWnFXOXA2Mk1qSlBYVnFPclBnTU80TnY3NEdrZitvd2Z0TlZCRFFuakZKcUhTdzE3cFh2aFdXNUtacWUvUTQ5Ti9VU1RDQVZXb1FYRklIQkhYWGUzRlByVURzdUdEbXRGL2hIS1RIcGVreGhpQU9QSStTSnE2UzZIRjRJOVlXemtCSlRvNDZpVU16V3A4UGlyL1JpZHVMeEtZc1Nrc1Y4dkxsT1F2aEdYMllsUjBPQmhCakMrdS9nRWN2WTBBcEs3WWs0MU54alBTUW5XRkhURjY2VXJqZ2V2QjhDdTVhK2wydllTUlB0dVZEbzczaGhkTVNIblVYN3RUanNWWkd4QWwvV3B0aU9JRVExZ25MMjltWDYvdFIxdG1sa1lqOFc0WCtDU2pXY1VER1kxTnBTL0M3aFNLcWlNTE0vbDJRbVNXWjczRGR6K2dpbzhCQ0VOWVBRNDZxbmt6d1hVYnF2Qmt4alVRc1dmWkZnYnVvM3JBZit3TjdqT085MCt5bng0UGkzTCswbllMMVNjaERVZ0FQNGdQVi83SWQxcSsxSFNobXVHa0lxV1JQZ3l4TUZxUDhIZmpUbmpYd1k1YlFmYkpjdDZPSXpLZ01Ib3RGL0hlMWVnc2F4SFNxRzZ3ZmRtUTV4OE55VEZGcUJjcDJpU293SFIzeWs1KzM2aEY3dlhBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMV9QUkUiLCJGSURPXzJfMSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJsYXJnZUJsb2JLZXkiLCJjcmVkQmxvYiIsIm1pblBpbkxlbmd0aCJdLCJhYWd1aWQiOiIxOTA4M2MzZDgzODM0YjE4YmMwMzhmMWM5YWIyZmQxYiIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImxhcmdlQmxvYnMiOnRydWUsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjp0cnVlLCJhbHdheXNVdiI6ZmFsc2V9LCJtYXhNc2dTaXplIjoxMjgwLCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjgsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4LCJ0cmFuc3BvcnRzIjpbInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi04fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotMzV9XSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5Ijo0MDk2LCJtaW5QSU5MZW5ndGgiOjQsImZpcm13YXJlVmVyc2lvbiI6MzI5NDczLCJtYXhDcmVkQmxvYkxlbmd0aCI6MzIsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjoxLCJyZW1haW5pbmdEaXNjb3ZlcmFibGVDcmVkZW50aWFscyI6MTAwfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMTAtMTIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDczLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ill1YmlLZXkgNSBTZXJpZXMiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI0MTAxMjAwNyIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTA2LTA0IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3MywiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZdWJpS2V5IDUgU2VyaWVzIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNDA2MDQwMDMiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0wNi0wNCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzN9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjQtMTEtMTIifSx7ImFhZ3VpZCI6ImRhMWZhMjYzLThiMjUtNDJiNi1hODIwLWMwMDM2ZjIxYmE3ZiIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiZGExZmEyNjMtOGIyNS00MmI2LWE4MjAtYzAwMzZmMjFiYTdmIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkFUS2V5LkNhcmQgTkZDIn0sImRlc2NyaXB0aW9uIjoiQVRLZXkuQ2FyZCBORkMiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6NTAxLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX0seyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwiLCJiYURlc2MiOnsic2VsZkF0dGVzdGVkRlJSIjowLjAxLCJzZWxmQXR0ZXN0ZWRGQVIiOjRFLTA1LCJpQVBBUlRocmVzaG9sZCI6MC4wLCJtYXhUZW1wbGF0ZXMiOjIsIm1heFJldHJpZXMiOjE1LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUJiVENDQVJTZ0F3SUJBZ0lCQVRBS0JnZ3Foa2pPUFFRREFqQXRNU3N3S1FZRFZRUUREQ0pCZFhSb1pXNTBjbVZ1WkNCQlZFdGxlU0JTYjI5MElFTkJJREl3TWpJd09UQTRNQ0FYRFRJeU1Ea3dPREE0TXpnMU4xb1lEekl3TmpJd09ESTVNRGd6T0RVM1dqQXRNU3N3S1FZRFZRUUREQ0pCZFhSb1pXNTBjbVZ1WkNCQlZFdGxlU0JTYjI5MElFTkJJREl3TWpJd09UQTRNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUUvTit2L1BieDY0dER2TU1pU2tjandQNU04RDJJVWZyR2wwSG56b0hNSkdVd2IrUjQ4TWV6V2kxSjNaQlhlT3BTSGZqcmd4RmZvM2lyTGVMVndJSzdDNk1qTUNFd0R3WURWUjBUQkFnd0JnRUIvd0lCQURBT0JnTlZIUThCQWY4RUJBTUNBUVl3Q2dZSUtvWkl6ajBFQXdJRFJ3QXdSQUlnV3FuM2VOK3kwVjkzM01HajNmUXJkclVYczhWbVVwckVzN0MwTlY5OERUSUNJRVlDKys5ZE80Y2phVVJ1VzRiZHRPeklxMFA0Y1RXZDdwU2NCYWpMTjNkeCJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFHb0FBQUFwQ0FJQUFBQlNqeXNDQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUVuUUFBQkowQWQ1bUgzZ0FBQW51U1VSQlZHaEQ3WnAzVkZSWEhzZC85RHBERzRiZTBUV2FZOHR1TE1mR0lXWTFHQk5OTkt0Ulkxbk5CaVJSMEUxMGRTTWk0aXBTckNzbm14VkRGNlVad1JKN0FZT0tyc2JGUkxEU2c0MCt3T3ozdmZ1RXh6QVlUT0NQeGZtZTc1bHo3Ky8rM2h2NGNOLzkzVHNEZmU4ekowdmEvNUJzVUk4Nld6WW9TOXYxZG5TY3NuZUpjc2RNU3lXSGRISktJY3NlczFVNnVXV1FWV0hrYnVGdGU0c29kOXowVkxJNzZqNnFJR2p6RDM5ZDF3TU91YkVxTkkzc00waFdHQlVqdkcxdkVZZHZIOGx5MzVzdkJIcEcrOGlzTitNNzcvT2hFT2dadlN6NDlwSlJFaGttazhsdmR6eFIvcnpQMlcxZkZud1oraTRaNUpwQjdzOXhKbmxra2lkZVZlTHQ3YkdmWk5jL0MyYTNmYm53OFlEVUcxd1NTVGVCdEZQSWpJZklhS3F4QnArcU1hMVN5TFQ2NXUybk53b0wxa1ltazBRbFFXd05QbFVqTTM5UkFNdUU5cE5sQnJtcDVMUmFnMC9WQ2FURjBsb1V0WGk5RmI1ckw1bXE1TFJhZzYrZDk1TThiOVpma0tPb2ZyUkRKbVg1S1NUdGJBSnE4TFZ6QWxGell3TnlqaTZZOHplaXg0VUZhQmNFUi9BMVJEVVoxdUJyY3lyWjVrNlp3M0tDaWNLSmtrYTh4cnJKWklDU29wSVBhL0MxR1h0Z3hjT0hTRGpoLy9FbW9xMDZPa0ZFOVJXbGlQeXdjbjBLbWF2a3d4cDhnbFBKL3F6M1ZKYXdtbWdqN3hDaTJLR3ZzaUIyZ2gwbm9BYWZZS3g2ZGNVbEdDMCtjK3Jrc21VNWE5YmtmUGtsZk56UEYwVVk4U3QrSy9hUmxjcFZHbnljMDhqeDVJZ0piUFE1U2lJOWxRbW93Y2NaaC8rbk53cWFHK29VVHgvRERWVlZMTE9wdms3eDZCRUxvcHUvY0drcTJZa3YxT0NEUGJFeGppSDZCcVdXOU9GL0V6VlVsQ0h6MGdlZnhBcEJnOTFFY1VTb3pxSUxOZmk0VlUrM0t1Y2k0bmUvVGt3aEM5QUVyTVpIM0FTODZyY2lsZVRJd2I1UHFXeEdKSGZ5TERIQnp2Q1ZGQmR2V0JzU3VqYTR1cnFHallvVnZYMUhWRmdFRXVKanZrRjNRM0RJeG5YcmJ4Y1YvZmZHalUzclE3ZUVSNG9kdFRraWNsTVkwblpFYlluWUdMWWxQSUsvaHhwdERZOUF3cmJJS0tIZlRYb2V2blJ5em5ZWnl1Smd3VTRYYmZoOFYrQWNnZ2lLeHJVbHF4RnBxcTFGa1dIWHdwM2h5ODA1YjBSYWVrVGd5RVpiTlgvV0hETTlJM045bzc2T0xpeWlRMlJNT2tleXNoUGo0OUd3bFZxSUxUYzFzekl5UlZwa1dMZ0o2Um9RNWVmbnN3dkZ1cHgzMFpESWhIU0FXd2gxazU2SEw0RjBxczU5aitDOW1PUmtNbUxCanZoUU1SSkpoNzlhZWZhTnFkamxzTXpPOEYyNmVOSGFXR3BoWUZKZXppMENyZkpkc0VobUxIR3lrcjgrY0lnUVVpcEJSMjVxZnVMWThiMEpDWllHSmk3V3RtSWoyY0hjaW1YYVNpeWNaRGFUMzFSVDVmNDQxc3RaWm1OblppbjB1MCtkNGtzbmw0UHlWMWd3ald4YkQ3WWQ4Y0Y0cnErdldJZGdRMFY1NndSOElYd0JpLzFCeWxsbU82VGZBQ0hFaThNbk1mODI4NERRNzF4NHpPM01yU1RhK3VYbDVVS0kxOTA3ZDZUYUJtQVhGdm9QSWRSOTZoUmZJdW1WWlgySFNQSGVqQ1F5WkVSZ3RmZ3dBWEYwNDIrZ1BEWFNKNDBjRU93NnZpVytpNjBNVFoydGJmdTdlYkpJcTdxT0Q3TFFOM2Ewa3ZzdVdDajBlYzJlL2lkSG1SejNGL3JkS3ZYNDBzbjFnTVNkUmRCQWwyR0MxZUtEVVVBS2dyaFZ2TGJ3TnB1QVhjUVg0T3ZQMkExdzc4UG50dE1MNGZOYitESHdZZWtVK2twbGRYVTE1cU9EcGZVWEFjdUVVTGRLTFQ0M3JIU2wzeDVGRnhNUTA3Q1ZFWXlkaXVJSmQvaTk2cmRTakE4VE1JV0V2L0N4d1Y3WWJQOGlQclRYcjFscmJtRHNidWY0cWtkZlBsRlZETitSUTRkdi9mVFR4bldoVVp2RHhZNE0yNHg2S3FRcWxaV1ZsUkp0UFh0eldjaWFJQllKOVAvVTBkSmFxbU5RVjh0OVFObU51bE5VaEZjMStMRHFaWkRUbzd4TGxTZlBaZHNOUXJlVkVReXlUWFZQa0hsOTZkOVR5VVk4bEVMU0h6ZHN3VkJOMFMya1BSK2ZpOXh1K1pJQTBPbnI1SW9heXRJNml1RTdlZnhFWWx5OEVXbmJTQzNFdGtibGJmOVV2alBoTFJRUUc2azU2MW9ZR0tNN2IrWXMxbFhScHBEUTl5ZTlNMjN5dThHcnVKM0RDNG1JdUZlMUR5Ky9saGtEZ1FvN21QOEt6U0tGSkRoam9LMHlDbVQ4RUxCNlBnZWYzRmdLYWk3V2RoNTJqcGg2OXVaVzRra2tGc09IeXB1U21JVGE2dW5nTExhSG5STnVJcVR5dW5iMVA5ajYyRWpNRDJabTd0eTZqUzhtZXNVUEhnakR6NFJkSkg3L2dNV2ZuajV4OHJ2RFJ6YUdyQmNHdXF4TzhCbUFIU3V5bnJ6YjBYa1JBNS8xOVNWY09ZYlU0bk9WMjQzNi9iQUpYdDZ1TnZZbVdycjM3OTFqeVdJeGZBZTd0dll4RFI4OEZDdnA2d01IRCs0M0FQc1ZIKy94d29CSStPWHpMbHdRT2lLZFBYVTZPUzYrdVpuN0hBVDY4ZWJOZTNmdk5qWTI1cHc3enlLbmpoMC9uSFVJRGZYNGtrZzNrYlArYnplT2RKZm5CckxiZHNUblllL2tabU9QYnBOQ1lhWm42R2JyME05RktGWmlNWHhkTEIxTVdRY09XQnRMMlBURVRMeDY1WW93OEV5SnNmSERCdzBST2lMNS9ublJuQTltZmhHNFhKZW9ndC85N05xMmZjcGJiMXViU1BHWW80dU53WnRqdkQ1Zkd2amFnSUdzUUtuaXE4ck53eW50WVc0M3VPcGNidTBkWVVKMVhQdXNqQ1JsWmNMR0plYnIzY0JrYTJhSmxaNUZXdlVyOEVGOW5GeTVQNCt0dzRqQndrZmlZZ1g2ZjdaNElmZWxUV2ZDUWRCLzRTZG83TitiWWtqYUxMZ3BkTU9FY2Q2c1hWUllpT01RR2dLK25NbXoyVUFQcVNNK1ZON0tpa28yQ2szMGVnTlBuS21XN3VXOFMwS0kxNi9EdDJ2YkRteFdaRWFTSTluY2c2YWlvRldyNTgwUXBvdUtnbGF1SGp0c1JCOUhsN2w4dFVtSWpYdlA1MjAyTkhHY2QyWmFPbXREYlEvdmZySTVQZnJkSjlkdS9Id21wL3Q5TnZmeDVTdlk0blRFcDNKb3c0bk4zZGJSMFZJdTlIa3hmSWNPWnRYVzFGdzRuM01wNzJKNzUrVmQ0STZWS2hvMmlGdisram03Q2YzMndvVTRIUXNka1hBS3hOa1pqZVNFeEJsVHBxRUJmRk1uVHVJSGxaUEdUMGlJaldkdHFBMWZLam5ob0txeWNuV3JEZEs1a3QwUlg3dlQxWkdzYkttdUFXYk43T2t6aEJERFo4cHRYR0pqWXZBNzQwS3hNWXBkc1pENlRCZHljckZmUWZHTjI3T0hSUjVXUFl6ZXZwTzFtYnhHamhyemgrRkNSNmxzYVdtcHJxNWhSS0M1TTJaaUVVU0R4K2ZEZ25HNzk2REVzWGJVNWdqc290Q2dzNjk0cDVKaE9rblR5YXpubk1aOUhVd0ZhN2ZpTGMrZE9hdUZuNVRvd2YzNy9BL1RKb0F6SW00d2VzYy91WDVMQzlyYVJOaUZ4TVhzd1hJRExtS2o1cGhxNmZHWHRtbjg2TEVvdUE0VzFrSmZxZnhYOUZlNGo5QjVKdXhhVUNJY0xHUldoaWF1L081bjBVZno1Q1ptcU5jNFJJNGZQUTZScjNaR2p4czJray9udE9paitmZ1RBdUxPTFZ2MTJPeHJxUHE1dHJpa3JxUzBSMTBMMzMvUVZNTnQvWnVhRktWUVNZbXdPMmd2aktEcTRad3ZkRXRLeTBwTEZBcEZRME5EV1dscFpVV0YyRkJyL1dHNlhWU0VNNGFkbVdVRS96bmdMNnF1cnJhNW1mdXdrZ252d2hyMTlmVjR4YXhzYkZTd0NCTWlyRkZmVjRkWE5VdkEvN1UrZkg4YWpobDRxSVYrRDZ0WDRYdjY1QW1tSGg3YkZZRTk4Z0ZCUi9VcWZFdjkvSEgraytqb045UUx6MkJQcS9mZ0F6SnNWZ2IvcnYvSzVjSi9CUGU0bE1yL0FjL0FSbjZsUmRRYUFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xIiwiRklET18yXzFfUFJFIl0sImV4dGVuc2lvbnMiOlsiY3JlZEJsb2IiLCJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwibGFyZ2VCbG9iS2V5IiwibWluUGluTGVuZ3RoIl0sImFhZ3VpZCI6ImRhMWZhMjYzOGIyNTQyYjZhODIwYzAwMzZmMjFiYTdmIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJ1diI6ZmFsc2UsInBpblV2QXV0aFRva2VuIjp0cnVlLCJub01jR2FQZXJtaXNzaW9uc1dpdGhDbGllbnRQaW4iOmZhbHNlLCJsYXJnZUJsb2JzIjp0cnVlLCJiaW9FbnJvbGwiOmZhbHNlLCJ1c2VyVmVyaWZpY2F0aW9uTWdtdFByZXZpZXciOmZhbHNlLCJ1dkJpb0Vucm9sbCI6dHJ1ZSwiYXV0aG5yQ2ZnIjp0cnVlLCJ1dkFjZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6ZmFsc2UsImFsd2F5c1V2Ijp0cnVlfSwibWF4TXNnU2l6ZSI6MjA0OCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMSwyXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0IjoxNiwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjo4MCwidHJhbnNwb3J0cyI6WyJuZmMiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fV0sIm1heFNlcmlhbGl6ZWRMYXJnZUJsb2JBcnJheSI6MTAyNCwiZm9yY2VQSU5DaGFuZ2UiOmZhbHNlLCJtaW5QSU5MZW5ndGgiOjQsImZpcm13YXJlVmVyc2lvbiI6NTAxLCJtYXhDcmVkQmxvYkxlbmd0aCI6NjQsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjozLCJ1dk1vZGFsaXR5IjoyLCJyZW1haW5pbmdEaXNjb3ZlcmFibGVDcmVkZW50aWFscyI6Mzh9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMy0xMS0wMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjo1MDEsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiQVRLZXkuQ2FyZCBORkMiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDIzMTEwMjAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIzLTExLTAyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjUwMX1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMy0xMi0wOCJ9LHsiYWFndWlkIjoiNjAwMmYwMzMtM2MwNy1jZTNlLWQwZjctMGZmZTVlZDQyNTQzIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI2MDAyZjAzMy0zYzA3LWNlM2UtZDBmNy0wZmZlNWVkNDI1NDMiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiRXhjZWxzZWN1IGVTZWN1IEZJRE8yIEZpbmdlcnByaW50IEtleSJ9LCJkZXNjcmlwdGlvbiI6IkV4Y2Vsc2VjdSBlU2VjdSBGSURPMiBGaW5nZXJwcmludCBLZXkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MjU2LCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH0seyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbImVkMjU1MTlfZWRkc2Ffc2hhNTEyX3JhdyIsInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCIsImJhRGVzYyI6eyJzZWxmQXR0ZXN0ZWRGUlIiOjAuMCwic2VsZkF0dGVzdGVkRkFSIjoxRS0wNSwiaUFQQVJUaHJlc2hvbGQiOjAuMCwibWF4VGVtcGxhdGVzIjozMCwibWF4UmV0cmllcyI6NSwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwiLCJiYURlc2MiOnsic2VsZkF0dGVzdGVkRlJSIjoxRS0wNSwic2VsZkF0dGVzdGVkRkFSIjowLjAxLCJpQVBBUlRocmVzaG9sZCI6MC4wLCJtYXhUZW1wbGF0ZXMiOjMwLCJtYXhSZXRyaWVzIjo1LCJibG9ja1Nsb3dkb3duIjowfX0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDU0RDQ0FlMmdBd0lCQWdJSkFNOVJ6WXU0RUlJbE1Bb0dDQ3FHU000OUJBTUNNSDh4Q3pBSkJnTlZCQVlUQWtOT01Td3dLZ1lEVlFRS0RDTkZlR05sYkhObFkzVWdSR0YwWVNCVVpXTm9ibTlzYjJkNUlFTnZMaXdnVEhSa0xqRWVNQndHQTFVRUN3d1ZSWGhqWld4elpXTjFJRVpwWkc4Z1UyVnlkbVZ5TVNJd0lBWURWUVFEREJsRmVHTmxiSE5sWTNVZ1JtbGtieUJTYjI5MElFTkJJREF5TUNBWERURTVNVEF5TXpBNU5UQTBNMW9ZRHpJd05Ua3hNREV6TURrMU1EUXpXakIvTVFzd0NRWURWUVFHRXdKRFRqRXNNQ29HQTFVRUNnd2pSWGhqWld4elpXTjFJRVJoZEdFZ1ZHVmphRzV2Ykc5bmVTQkRieTRzSUV4MFpDNHhIakFjQmdOVkJBc01GVVY0WTJWc2MyVmpkU0JHYVdSdklGTmxjblpsY2pFaU1DQUdBMVVFQXd3WlJYaGpaV3h6WldOMUlFWnBaRzhnVW05dmRDQkRRU0F3TWpCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQkhscTJqVVFNYWxIai9CUmVRZWZHaXo0RXZZSnlGTFdQejRSZmhKR0txcWwrOG45NmhUMW01Z1hvVHZvTHJqU1U3WDBjQmVvVHNnaHloMjIreXJzNCtTalVEQk9NQjBHQTFVZERnUVdCQlErOFNHVzJCWGJxYjJkY0FPaVdKT1UrR0NzUGpBZkJnTlZIU01FR0RBV2dCUSs4U0dXMkJYYnFiMmRjQU9pV0pPVStHQ3NQakFNQmdOVkhSTUVCVEFEQVFIL01Bb0dDQ3FHU000OUJBTUNBMGtBTUVZQ0lRRHE4eElXMFpLNXl6M0VBem11eDg4TENUWU8xNTdmVGZ5T2lPekMyQUR5YXdJaEFPMVBXWWxlRmdILzNtdUQ4Y0JBTXIxMWZFS2RGL0FhQzE2ZnR4YWV6TlhIIl0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUl3QUFBQVlDQVlBQUFBb054VnJBQUFBQ1hCSVdYTUFBQjdDQUFBZXdnRnUwSFUrQUFBRklHbFVXSFJZVFV3NlkyOXRMbUZrYjJKbExuaHRjQUFBQUFBQVBEOTRjR0ZqYTJWMElHSmxaMmx1UFNMdnU3OGlJR2xrUFNKWE5VMHdUWEJEWldocFNIcHlaVk42VGxSamVtdGpPV1FpUHo0Z1BIZzZlRzF3YldWMFlTQjRiV3h1Y3pwNFBTSmhaRzlpWlRwdWN6cHRaWFJoTHlJZ2VEcDRiWEIwYXowaVFXUnZZbVVnV0UxUUlFTnZjbVVnTlM0MkxXTXhORElnTnprdU1UWXdPVEkwTENBeU1ERTNMekEzTHpFekxUQXhPakEyT2pNNUlDQWdJQ0FnSUNBaVBpQThjbVJtT2xKRVJpQjRiV3h1Y3pweVpHWTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5MekU1T1Rrdk1ESXZNakl0Y21SbUxYTjViblJoZUMxdWN5TWlQaUE4Y21SbU9rUmxjMk55YVhCMGFXOXVJSEprWmpwaFltOTFkRDBpSWlCNGJXeHVjenA0YlhBOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOGlJSGh0Ykc1ek9tUmpQU0pvZEhSd09pOHZjSFZ5YkM1dmNtY3ZaR012Wld4bGJXVnVkSE12TVM0eEx5SWdlRzFzYm5NNmNHaHZkRzl6YUc5d1BTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM0JvYjNSdmMyaHZjQzh4TGpBdklpQjRiV3h1Y3pwNGJYQk5UVDBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5NFlYQXZNUzR3TDIxdEx5SWdlRzFzYm5NNmMzUkZkblE5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5elZIbHdaUzlTWlhOdmRYSmpaVVYyWlc1MEl5SWdlRzF3T2tOeVpXRjBiM0pVYjI5c1BTSkJaRzlpWlNCUWFHOTBiM05vYjNBZ1EwTWdLRmRwYm1SdmQzTXBJaUI0YlhBNlEzSmxZWFJsUkdGMFpUMGlNakF4T0Mwd05TMHlNMVF4TkRvME1EbzFOU3N3T0Rvd01DSWdlRzF3T2sxdlpHbG1lVVJoZEdVOUlqSXdNVGt0TURVdE1EVlVNRGs2TXpNNk5EY3JNRGc2TURBaUlIaHRjRHBOWlhSaFpHRjBZVVJoZEdVOUlqSXdNVGt0TURVdE1EVlVNRGs2TXpNNk5EY3JNRGc2TURBaUlHUmpPbVp2Y20xaGREMGlhVzFoWjJVdmNHNW5JaUJ3YUc5MGIzTm9iM0E2UTI5c2IzSk5iMlJsUFNJeklpQndhRzkwYjNOb2IzQTZTVU5EVUhKdlptbHNaVDBpYzFKSFFpQkpSVU0yTVRrMk5pMHlMakVpSUhodGNFMU5Pa2x1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2TWpFNE5XWXlZbVl0T0RWbU9TMWpaalEzTFdGaU9EY3RPVEZqTTJJelpqQmlOemhsSWlCNGJYQk5UVHBFYjJOMWJXVnVkRWxFUFNKaFpHOWlaVHBrYjJOcFpEcHdhRzkwYjNOb2IzQTZaV014WlRnM01qRXROek0zWVMwd05UUmxMV0V6WVRrdE5URmtNVE16TkRabFpUSTVJaUI0YlhCTlRUcFBjbWxuYVc1aGJFUnZZM1Z0Wlc1MFNVUTlJbmh0Y0M1a2FXUTZNakU0TldZeVltWXRPRFZtT1MxalpqUTNMV0ZpT0RjdE9URmpNMkl6WmpCaU56aGxJajRnUEhodGNFMU5Pa2hwYzNSdmNuaytJRHh5WkdZNlUyVnhQaUE4Y21SbU9teHBJSE4wUlhaME9tRmpkR2x2YmowaVkzSmxZWFJsWkNJZ2MzUkZkblE2YVc1emRHRnVZMlZKUkQwaWVHMXdMbWxwWkRveU1UZzFaakppWmkwNE5XWTVMV05tTkRjdFlXSTROeTA1TVdNellqTm1NR0kzT0dVaUlITjBSWFowT25kb1pXNDlJakl3TVRndE1EVXRNak5VTVRRNk5EQTZOVFVyTURnNk1EQWlJSE4wUlhaME9uTnZablIzWVhKbFFXZGxiblE5SWtGa2IySmxJRkJvYjNSdmMyaHZjQ0JEUXlBb1YybHVaRzkzY3lraUx6NGdQQzl5WkdZNlUyVnhQaUE4TDNodGNFMU5Pa2hwYzNSdmNuaytJRHd2Y21SbU9rUmxjMk55YVhCMGFXOXVQaUE4TDNKa1pqcFNSRVkrSUR3dmVEcDRiWEJ0WlhSaFBpQThQM2h3WVdOclpYUWdaVzVrUFNKeUlqOCsvMFZ4UlFBQUdmVkpSRUZVYUFYVndYZmNuM1Y5Ny9IWDUvdjlYdGR2M0RzN0pKQUlBVUxZQlptQ2ltRFZEbGZ0dzIzSHFZdXFQVjBXdGRiV1I2M25WRzJybnJhT3RzaERyUlVmUFIzV1dTM0tWaEFaWVFvRVFrTFduZHp6TjY3cituN2U1MDRpS05XTzg1OCtuMm51aXNTL0ozRzhZWmVaMlpURUltRDg1K1JPTzBaU1VmaUhKUDZGSHlJRVdCakF3ek53Nm9iSTNDeWtDR2FHSk55aExNV3dnbnJvcE5KSUNCTlVjb29pME84Yit4ZkY2UExBcUlNY0dvZDJXK3pZRDlGZzQ5ckFnYjFpMFRKVEhXR0N1bzZVaGVFSmRpOW1WclNOOGNLWXE0MmQrOFNLQ1NPMmdBd2RJQlFRVFB4N1psRFZka2tXYnpUWmNLVEkzZGh2dnJHbHVlTTlkOFVUWDBScitqbW95WUNRT01Tc0JMcEFBakxRUnhwZ3hvK1JBbWxyNG9jSVpoZUdrRjVsQnBMNHJ3aElDWExEZkgrZ0R4ZUZrSGdDQ2VTd2Y3OGhFei9Lak1QRUQ1SWdSWHVSdWYyMHBZQlpRNzJmN1N0R0gzWW1UdnhGTWhjZ0F3bGlBUkxnR1d3R05BZldRcXdtaHNoQmNuNHNHT0ErbDhxQ3h4bVFCVTNEU1pJajhWOFRZRkMwallVRmJlMzFkUDJ5NVpBelR4QVM1TVpBZ1BHanpRQkIxWUR4QTlaWjBLa21jRUhJbWM5M0x2aTNIZkhJa3FaZWpUSWdNRUFPN2w4bnhrOGgzWUxuM1lRMGp1c00xTHlPRU01RTRzZUNnT3ovbFBZY0VJOXhRVHR4eEhnM251a1lJTDVyRWRnT0NDajRmZ1lTc1I1cVJhZWpxMEppdXFwNGdoUU5MdzFWNHNlRkFLOUZNcjVIUUxUalFneWJNY2lOZzdIbjFwV1hmT09oNnNTTDhQa2pNUWRMWUdHYXdkN2ZKWFl2UjBXZkVNQUMxQldFNGxaNkMvOU1tZjZPY3VUcFNJRDRrV1VHMG03RXZlbTJiYzVqaG8xWU94bVBPbk1UcDJhSjdJQ0JpWThKL1Q3UUFrWUFjWkFBUThFb2MwTzJ5TGJSVVVNQ001Q01kaHYyelRsa0kvSmpSR0FSUWhISWpYaU1HY2RLR25lTTBqS0lPeDZwVisvTFp1Y2o3eEFNU1B2bzZ4VjQ5UVhTT016Tnc4Z0VkRm93TXdNalk1RFNYcHJtclJUNkI0eFZpQjlkRWt0dUpOcU90SGMrOEpqK0VEcGQyeFRhakdnQUdlTWdkLzluWUU4STRJSVFRQ3dKZ0lNTFhCQU5tZ3lTa1IySzROejlJRHc2THpZZkxRcmp4NFlaTkRYMGVrNTNMQ0J4U0FwMmpwbGhnaFkxc3paeDAxWE5CWE1FdGhBcVFCVzk1aDAwNlF2RUVhaEp0TXVYVU1RWDBGUlgwMnA5aENMTm93Q2Vyc2Y4UHJCVi9LZkVZY1ovbnpqTStBSHVFQUwvSVRsZ1lNWmhCcTZiRVF2cFNVZEdIbFBWeEJWamRvNnk0UklnRU5zRU82SkJscEVDVkxVVGdoRkxRVFljSXlNS1FaTWhHMVFORktYNDVqMWlZdEpvSlVPVitDRU1HQUVDTUErSS93OENYR0NBTzFqa3Y4MVlJc2dPRW9lSXd5eEFYWW01L2M2cWxZWm5hREpINWN6SmhJQk1tT0FoMy9qbGdYVldRejZSWURBWVhzdEMvUmQwbGtNNUF2STNVSFRmUndCcWZ4NGpvMXVCTDJJUjZnRFpHMElBQk80UUkyRGdEaVlPc1FSeWtJTVpQMGpnR1VMaWNSWUFnUXZNT0VRQ015aGE0Qm5rUElFRUZxQm9RYTdBSFVJRUJEbmZpY2pwcEVseGlJREltczZZblprYmFESllNRHo3M2NnZm1Xa0NSWUxKQ1AwK1dBQUtIbWVBWkVnUUFnVGprTkUycEFnU2h3aklBb3pqZ1o5Qk9rK3d6c0JjN0FPK2d2aWt4S1A4SndTNEdERzRLRVhPRXF6cXRQQUEzekhqQzRLdC9CY0V5NEp4OFdpYk0ySmtLb29hZUFENEN1TGJHQlFseEJFalprR2Y5WFZ0bTRoZ0NJelp2K1hGRHowWU5wNk5MYXhFRG1YbnMweVpFeW9vMHhuSS9vaWNvYWtoUk1CZWczd1RVa24yMVJnbkU4UWhyUTRvZzJjSGJRZjI0cXdpMkhxU0JScUJBRE1lNXc2cGdNNFlESHFRR3pDRGtDQVZNT3lCSEN3QUFnR3hBRGw0Qm9zY1pxQU1DR0lMd2poVVBhRnN3QTZDN21GSm1ubFVIT1FaV2wxV2o0eXlSVUVna0J0bHlUMnRxQU43NTRXNXNXUkNjS3JnRExEamdPVUdDb0dkR0xjQy95cDRoQjlHRU9DWXFYWjRiVzdzUmRGMEZHYUdJQU1wUXNDZVpZRmZNN04zQ1A3YVFId2ZBVG1yUlBaTHJjaXZZR3lXV1ZlQ3RaTWdsNXJLM3BTaVBvYnpoOENBN3lNZ2kxR1pYZXB1cjR6R3BnMnJZbG5YQWplVWhEc1BXZVRQTGZMSDFVRGFmbSttTG95UnR2M0VaTmNtcXl4YU5DQnV2VDZldXdQeE10UnY0K3JSRzl4SU11ZzBNTlFCTE54UGEyUUx1WUZxQU1UbkE4L25vQ0lBeGlFaGd1Y0RMUFkrVGpQNEV1Tmo5K0RXSjRSQU5YTTZkTi9DeUxLeldKd0ZieUJFUUJCTFVJREZtUWR4WFVjcTdzVENnR0gvS1Bweno2QXplaElHTkEya05uamV3ZmJiUHNyWTZ2dG9UejRmYTE2SUJjZ1pXaU9RNjBmWWZ2K0htRmh4QjkzUm44UHp5M0RkanJHZEphbTdNWENRQkVYa0REUEdjZ1VXd1hBR2ZWMWZXMEJ1YXkzeTg3Zzl2OTIyRXcxYklUY3dnU0FGUThKajRINlpYVkZMSHdCbStTNEhBcng0OVRKN1I5a0t4dzhXd1FLUGs2QnNRUUdXemRZWG8vR2pkWk9qTWg4MkRwTWdKanRwOVVUODM5MWtGK2VHb2tqQ0piSU1seEJZcm5Wa3UydHZNdzlIbXZKckJRT1dPRkFFVGxuVkRoOXNXYmlnY2NOTTFCbkVraUFra0xFaEJIdDNHV3dWbWQrOGQ1dnp4ZS9FOU15ejdjeUx6NGZxRVNpVjJWbHMrUHllWW0yUFBrL0ZNc2dIRFBveldJQ3FnbTduQVR5L2dOazlyNkVvbjBkNzlFazBGWWNJQ0FIRUVvRVB2OHFqRDd5VFZjZGR3OFI0UXpXQUxCQmcrV0ZtRnIvS2JITUZVK1h6Q0FteWd3VW8weDcyUGZTWFBIRG4zN0xsS1E5aDFpZEV3R0ZtMXlvNng3eVZzdnRHNmhrd29EUDZOaFptTG1mWnhoWXBYWXpYSUFHQ2FDQzlpMTc5RnpUWFFUcmhRc3BONEl2ZkF1WlprcnBkY1pDZ0UyVm5lelpjSW1LME9ueDFkdGIrTGplNmVOVUsrMkRDanE5ZGhCQzA1QURTaUFYS1ZqU2FSalFpeEdESGdyM1Q0Rm5BcjBwODJ3V2R5RnRiSStHM1RUYmV1QkFRZ0JBTjVQTWpMVDUzeDRPNmV0c0MrODQvd2RaT1lpOXRpTzh5eTdjaTNjaEI0dHhXeXo0UzRjUWlRT2c2dlI1N1RGeVZnanlZWFNSWTFRQU9kR0o4cWFSckpQdG9VM1BRdVNuWUZhUFJObVdEakREWVdkVit2Um5aNEd3ejIyQkFOWlNWbmZpcW80N2xzNVBPVmZQTGJPMktVZHRNWDJBR0JRdzZFOWMwZCsxZHhkcmpOdEZPb0RoQ1ovOTU3SGhnSzBlZkM2RUc1eDRHaTc5T1NoOGdwS2NSL2Rjb3U2ZlFuNGZza0NKUS96M1ViMkJxelU2YVBvd3NPNWJoNEFKY3UvRG1xN1FuQnZTWlovdld0ek4yN0dsMEp6Y3lXQVRaOVZSemI2YmR2b2JONTRxaUJXcWdHb0lpdEVmM3NPZkFteGkzU0xkOUtWVi9GNjN1VnpqNkxJakZPbFJkZ0FVUUVBTU1xM3ZKZGhWcjFrSnVMY01tbjRvcW9MNFpQSU9SR0hDSUdWTkVUaEpnQnRuOXk4TUJyeDhkczdjRmhYZDJvaGcyZm1QTytuU1EzUXkyRDlOa1U5a3BpNDIvb0d5Rmk4cElrQXR2eE1TWW5SK0srQWtMell0RzIzWkJ1d3h2eXoyMTYwYVlRWkZBVVBWNy9xbWlzRDluVkxmMSt2U25lNDRzUU5ZVmplenRwZkhVUm40VHNNNHN2TS9FaVNIQlRGLzloVVg3MDdLdGo0NjAySVhJTjl6VmJKNGFpKy9mY25TNHNCcUl4bFcwWTN6ZHZnVSt1bTNhanpqdEtQNE1iRk10a0duT3M3ODNoUERKRU94UlNSZ2NpWGdieGtzRmxxS3RhS2Y0d3Y1UVY1MTZySjYweWptaDJtOVlFSlRzZm85ZS84aDlCemFld1JIelU0UUNGRnFFOEFhOHVvbWl1SVdtRDU2aExNRGlnN1JISHVTV2E3L0VzUDlSVG5uNnM0Z0dpL1cxeU41SUhPeWtNN0dNaFlVM3M3ajRVc1JxaWxBZ1BrNk92MDY3M3N0UjYyOG5oeHZJMmtoMy9DYm1GMStMdUkzeE5lRGg2VlQ5VnlHT1JQbG1HdjlUSmxidHhJRDU0Vi9TYWo4WGZDZHpleGV4TnRUVldVVGZnQm1ZUVREb0RYZlEwelltV3BBMm5vUDdDZmhnSHlIZmpvbURrampNeFBwQU9BNER6OXdnOFg3VityMlJUbno1WXEwSGRzL2xQeHdwN1RQQm1PTzdna0hsWEh2M3cvNnhpU24vK1ZNMnBiZFhzL1lrajJJNEVLRUtXNTU2VXZIbG1KaW9lbW9yYzBnclFRT1BIaGo2VzJuc2I4cUN4OFVJTVJpNDl0ZFpmMUFVWERCV3BvbUZTcjlsRnM0SkNBdk03WnIxUy92emZIekRlc01NRURSdXQ4NzNtcmNvcC9jRVdCOER6WFJQOTMvcU9pL09Qem45YW12VW5yd3dDNWdlOHRwZkJYeU5KN29iOUR1WW5XallhWjdGWXJaTk1jTksySktDalZkbWRCbkFnQnNmMGhIYjJMTHVkYVFESTFRVnlLQ3o2bVNPbWZvazduK00vRXQ0L1FpdFVlaU9nemNnN1dEWSt6MXlQb21pWEU5amY0aHBCNmIxcEhnNTR5dWZ3WEFBWmhBTlhDK25hbTRsOEI2NjQ5QktCOGdMTU5kN0o1VnVvNHFSRWJ1TXdjSnZZMkVNaTFDTVhvU3FEdGhseEFBZHpkSTBleWs3MzJJNG5PT3V1Mkg5NnROWnRUd3hyQ0FZeEFRTCsyL0NyTS9vYXVoVlQ2WlZkSmh1cnFldEEzUWlPS1FVamU4NnhZd3B3VTdIcjIwbmUwdjJkRzQvNit2dS9pcGdHOTlsZ0ZoaUhOSTR2VWE2SFBkdjdodndpYkZPT0RVQnVSSGpJeHlSSGVvR2drRU1zR3RHMzg3QjMxaDI3R29KRU9EUWJVTzNNdTdkbmxuWkVXWEJWTHNkTzVZNVhoNWVvQ2lLQ0ROeitVUFQrL3pqclpTUXdJQTZ3OXBKWnpEMGF3ZnorZWVTYVN3bWNwWFpOVFZxcDY5WlliOGlCOCtPUjk2ZFV2eGFNRVlsR1dCTFdKS0JBM0o5MjR6VFdPS29YRFNuSzl1WUpBUUVnd1BONk5XN2UydWd6ZG1RUVN3UjRORHViTWI5cjhqRlZxSStBZllab3QrSCtuRDBhU3o1QnNxMzBCdnNndkFObWozZ2ZoUmgrVFNodVJKNUJZaUdBaGdoNkI2S0JBYXNXSDQ2WDcveWMxanJLK3g3QURZKzgrWEUrQWNJd3dSaVNZWjIrVXRJWjFBM014UmhBbWt6bG42ZmJkc2FSSWVpT0pXRERKQkR3NEQyMkxjWTltQjJEa0o2TXJSZ3FuTXpUWDJBYkJ5VWtGalN3dXgwQ1F5ZmptN1BEZU5oMDZEVUYxcDl2WnpHcHVXQVFBWVpNTUFNM0NFQTNUWlFzSFd1MXMvVU1mL1ZVZDF3U2IrR1FRMEdtRUdJUUFwZmYzUi9mdTNLRmR6bEFqTlFnR1lJSjIyQVpwdjQwT2Zod2pNRHp6M2RMdDI1eCtSbzQrcmx0aXdQSVhTNHAxM3lKMVB6UnJzRnFRVjFBd1owUzJNNEJFazdESkZsckJpTnhZdlA1NFZrVml6T2laQnNFZW1uZ0xNRTQ0RDRuaG9vRE03aUlBT0R4V2dVMFRoSkF0d2d3WmZqSlhkc0RTZTJDUGtJVkFNQk1CRFFERGtrZFU3RXV1K2lIcndhZUFtVG96Zmd3R0lGcUlmNEJLVlAweDlDNWpxOHVZNVE4RDNHSWNwUWxOQ2RXTW5ldmN2NDlyYyt5ckxPSWl2WHJtQ3l1SXpLRFJOZ1BLN0pYZUJjek1BZHNQc3h1NDJOUjRINzhaVGhGT29LTUVEZzdHQjBmQ3NSMkx2L0JJNVl0eGtMOEowYnI2TzNQeE1MRGtwa0RwcWswT2tnWXJDanJXTWo5KzNSVGRNTGV2VTRUSzhlZzdJRmJwQU5oQWhCV0FObWNNUnlZNlNBL29MWXZNeTMxemxlMld1NGhDWEdZV1pRTmY3My9ZcEx5NVoybFFGS2pOQUNCZWhWMENtRUFBZGl5WG5kYm5ycDF1bm1qOHBSemw3ZnNuYmR3TTU1djNyZGx2RG95UnNNR2pIWUFUUFQwRXF3Y3NLd0VGRXczQ0NIUUlUVjBleWlXdUFHRVViS0VIN2FBUW5NREFRT0dHQXNDWVlBQTVSOWF5Zlk2UWw3dW1TVTdScm1lSEI3L2FUYkIxUGQ1NUI3RzNETFlMczVyQTAyQVVUVWdBdFNzWkhzTDJiUGdSdG9IQ3h2QUZ0RHNLMFlNSGxjQzA4cnlMMkU2aHFMNHFBUXVyZ21pVVhCc1A4d3ZkWXJxUGJNc243bDFaejZIRmkyNWtKeTNzaGdIa0xnQ1F3UUlDQVZzREI3TGIzZWJsYXRoUkJQWVhiZkNnNnlDRlpBLzVFN0dlNituZEZUWU0yRzB4bHJIME52NWdCWC9lTzlQSHczZEVZNUtDbHcwTEdCY0NvWW9KRk9TK3pjbVQrOVk1ZTJyMTVoZER2RzJuRmpVSUVCQnBoZ1VJdDJhUnk1eXJoOXU1anRpUlBXOFJ5djdIZmRqSUI0VEREREczdjR6bDNEZld1bmpORldvaDJNSmtMdEVJRUE5SVl3VmpLKzZhajRmK2dxbkxaSk4yWEYxd3ptaFJWVURObmFUQU1tNmdYUnpCbXQwcEE3VlEycmxoYzBibVFYTVFuUHJPa05PYzZDaUlZSFdCQ3FCTWtNWTRtRXhZQWxvMTlsOVRtczdXYlQ5ZEEvVnJUdDlCaXRXMVhRc1F5SjY2NVpQSFVIenM5aWd4THhCb3lyZ1FJNEh2UUJ6S1p3UVZtQTVEeTg2eVlxd2ZJV2RPSUZNSElDc2QwRFFUVlloelZYZ0UxQm1BVnp6RWFBSTRFYVl6L1lES2s2RnpwWGNNSFBQa3puS0NDdHA5b2ZlWnlBd0NGeWlBa0NtZXlSMUxxZFhQV1kyUU5tSjVES2hEdFlnUGJZa01YWi80dEZpQ3VBQXo5Qk00UisvMFkybjdPTGRjZEJLamtveVFCak05QTFSQmJVaXl5dW43QzdqbDRMVDFwanpDN0FZQWhtUEVFd2tLQnFJRHNFQzc4STlxYzFqRWVFK0I1MzBXbUZYMTQybXU2cWMvNndBeGx3QVFZSXFneGpIVmE4OHFKd3hVbXJ3bW1QUGx5L2Vxb2REeVN6NVhValltM0ZpcmFXeis0V1FTS1pFVnFnaXNNRVRhT09qR3lvYUhmRmNORkdsQmtMTERFTGcreC9IY3cvVWdRN0tyc2lRZzRxWkhtMjBlNlcyWnh4U0xkcHZKMmQrd3JzOVRsRExBMEdrVVUxZHpRVHU2RGlHSkxOWTN3V3RBME1wUHVCUzhIT0JZRUU4NHQvUXRINk9LdVhRZjlSOFBaVGFZK3NZdmIrQllZek1QS2tmUlRsUG1JOEh4ek1RQWIxNE1zRXU1SlEzSUw3eTRpRDgwaGpzN2hWVE84QjkxdG90MnBTVE1oQUJqU1EvWE1VNVZmQmQ3TTQyRUlJbDdGbTVSeWpKWHppejZDdXR2UGNOMlI2L1VUVGg4WDlINmZWK1J1cUdhQS9UcTUrZ2w0RnFmVU5Mdno1L2FRQ0pBNUtKbG9XN0dRelF4SW1ZK2o2MW9ZanVOYk4yRGNMR0ppQmVKd0JKVEIwUVFyVzNiREMvcUFzd3B1R3RTWE1PY2pFZmhrZG9DUEFYV1BITEV2dm5lOWpjajVpQWVlN2hLaHFlOGJ4YThMN1d1dmlLZmZkblIvKzVqMzYwbk9lVHBoTWlneEFZSlY0YW94V0ZvVEtsVUVHQm5JSTBYN1pqSmNIVkFtYjJEL2pmemJSc3U4b1dkK3p1c2tnaS9ZZys1MmpJZDZKR1dZUWdleUJQWlhPM2RBTkZ3ZlJkVEVtK1R0YXBSOFJ6SjZSM2VoMHdmWTNmR2JmZWJkZGMrekxWbEZySTRPcURXcUR3QUtnQThCYndmOG5LUVZDNjFOVU01OWgxU1MwT3RBZnZaaWk5UUpNc0xodEdja2dObk5RL2pMS2QwQThoNUFYcVB0L0Q5MVBFRk9tR1hZSmNSbGlpVGFqWmdyM2FiSmRoL1JPeEcraFBFV0ljeWk4SDVwM0kxK2ticUEvL0IzV3JvVTdiempBby9mRDFCR3c3YlpQTTZ5T3BDak9vYW4rbGY3c0IybFBRUVI2dTA5Z1pPUmtIREQ3SnRVUXFpR1BTUmFZREdaUEZvY1p3a3lyK3hXL0dRd3JqRUk4cmhXTVpZS1Z3T2RkZk1oZDU4VEMzcmxxTXB4ZnUyZ2FVUVNqY3QwV3NGY1gwaXVhYUpmS1JSYTBJcU5sTjM1ZzZQNnpMbjBPN0NHRG84R2VFWU05blJERzZMblB6dWMzYlp6aW9lWkFYcWJ4c0sxVmhPWERTcGpaQmFYQ1I4ejBCb2M1bHJpelBKcTl2U3p0MGlvVE95MWpVR24yMFdtL3U3M0J0cmZhM0QrWXRaT3pZRFRaYTNwVm1CczI5cnV0a3NyTWtCaFBRYis0dmgxK1R6QmxCbG02eTR5M0oyT0YwQmFMUnIyWVNTVjNQYmpxS1YrYm1WdjNVOFRla1pnRDhkbTQzMDNPRUFPWS9SdVI2Mm0xQ3RBODFYNElVOUJVbXlsYjc4ZktaZVErTEgveVpSVERXNm1iL2VEVGlMZVQycU1NRm9iTTd4NnkraFRJZmpUVy96Z3huWXNERmk2aUdaNkM2ZDlvcFl6eHh6UzZpbVp3QkdPajkxT0gyL0RnWklkVytmc1U2ZTIwT3JEbm9ST3BkU1duUGczV2JOcEh0cmV4c0RCQ3F6WEh5Q1EwRGlIQi9QUkd4aVpYWVBWZWN2TVFNcjVmR2huVitvVjVPeTFFRG5GQTJIR2x3bHVpQWNaaHhpRXU3VFhaZlVMSGhFS1hFM2hhNWF5aWhtaEdBOVJaLytUR2I3am43OGo5RVN4ZUhDd2NEMktZUlRBcmtvWG51UGpKQUgyRHRvS2xnaVV5V1BSTEp6djZoMWdFRnFmWi84aDIvYzBKeDNOcVVaSnlBMlo2aGRBV0kveXJSTGRUOEV6SE5zdWcwektpYVdlS2VnbkdMUU1wRE9hNWNpVFl5YlVMaTJiZE12NUduWFdoWVZlRHVtWjJ0c3hPRzQxSzJhR1czU0RwSlJZMElOaDVZQWdEQndMM3JJcjdGcWs0RFV0Z0JqRyttZXgzSW4wUk04aUNmak5nY0dEQTdDT1FhNUM5aUZpOEQxdFlqOWNnUVdmaUV1cnA5K0xWSDVIQ3ZaZzUrQno5UGl6MGw3R09YNEQ4RmhwYmpzUWhSaUlXNzZZWi9nSXAzb1hVWU0zMXBCTG01MkZRUVh0cVBhM3d2NUMvRkRPWW1ZYlRudjNieFBZT2Vnc2ZZZDJ4TUt3eWcycWVsajJiT2grTDZ5OW90MFJhZlJHNUJ1VnY0SG9ZeFBkTHV3OXczbmhiSFhjd1FJSWlRcEZnV0FsM3NNQVE4WWpnOWliN3JrUVlpWVU5SDdOMUxoRUVqWERROVl0RGYzODBQdE5xQmM5QUkrMEkyWDhwcFhDNXNHTWRJUWx4U0JTTUdsQ1lNV2cwYmRhOHZvVSs3ZG53REowSWV3N29ZMnNhZjlycWtmaHp2VmtubTh6Z3pHRGhUQUVSRVlOUlpkRWZhdXRZbDFlbnhIV0d5QWZjTGR0Znh6RjdWdG0yOC9wOXNTU21aT2U0Y3c0WUJ6bEdQd3QzLzVjUXdwc3d0ZzFySm1JUm5obUNnYUFUS21ZMGRkdm45VHdvT1F2bU9VUmFUUXlYSS84WThGVmNEekIwR002dll6ZzRoYlhIUDVNbVA1TzhXQklUaDVoQk5ROTBmb0d5ZlNHZXZ3aTJDMjlFZC94SXl2WUZEQmVQQmtwQ0FuR1laN0I0Rm1YN004RGxvT3N3N1NhbWtybitNWGo5RkxycGVlREgwVGlZZ1dkb2pYYW82L2NTZURiRDNxMWtiMmlYeCtQMlhGS01pSjhtMkRpeFBBMDE0TnhNdGxtTUowamI5dG5aWnh4bkRPZmtCQlFDdzJHamhjVkswMld5bmdWbHllWXhUSEJjQ3VFQ0M0eldXVm5pM21TNnJ3amNPWmU1dnNxNk9zcjJTZUl4QnBpNGJ1RDV4UUc3TEptOTBNRlNNQ1J3aVNMU202bjFqd3VWM3J1eXhjMHNrVVJyTXREcEdpZE1zWkNDL2FxeXp3cTlNa1VyekkxR0FveGEwRTdhNDVXdTdBLzFKMlBkY0Q4Q0JLcEV1OVNPbk1QTDk4M3o1eE50UFNzUkdHWW9Ba2pnRWdtL1o5OVFIeTRqbDNlRDdSOVVqbUFDT0JXSlE4VGlQbHYrMmZ0MTNCYkU2WVFhQ0RYdWh0a2FpdUxOb05lUXduNUdDcU5ZUHNteUk4YUlSYUx1UTY0YlFpRVFoeGxnRWV4b1RLL2pvSnloMVlHUlNSak1DMUVUQWsra1FFeGJVSDRYaEJrSXM3aEtwcFl2dzJ3RXIxbmltRFdBRVNJTWVtQTJTb3pQUi81OFlvUUV1QUNEWUpjZ0IzT1dPSEFkUWZ4N2FmUHE4TUZxVVovRWFFQUt3Ulo3ZmVZWEt5MGV1ZEt5R3BzYVZrekdTTnRnQk9USXBwdEdNMkFMS1hFQW1IZlJ1S0JnaWZGRUJsbjZsc1Ava091S1lQYVVvZXVvRUd3WXBIdnF4cjllSzl6a01EUytUelNzTURvSkF1ejJyRGNPaC9udktzVm5XTkR4TFFpWXB0MTFpekpmazdUVnpES1BNU0FBQmlIdzRONDV2ZVRoUGY2VFc5YnlsTEpndzZEQ3pOaVpUTmVZK0hxV0hoTEc5RUpOM1lpVTdNQklhYThSZ1NBbEVvdGZxSjkxODEzOTQxZlE3YitTUU1aVkFZWmttTFdSdWhodHlnUWgxQmlMVklzRGpFeElnUE5FRFFnREVwQUlCcmx1eUUyRG1UQ1dpQitnSmdBZGpCSE1FcEtJY1FqMGFPb2haZzRZanpHV3lKQWlVQ0FIVVFNTkIwa1JjRVFiYkJhNGlSL2kvd0gzRDVQTXBkMnQ1UUFBQUFCSlJVNUVya0pnZ2c9PSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzFfUFJFIiwiRklET18yXzEiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkQmxvYiIsImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJsYXJnZUJsb2JLZXkiLCJtaW5QaW5MZW5ndGgiXSwiYWFndWlkIjoiNjAwMmYwMzMzYzA3Y2UzZWQwZjcwZmZlNWVkNDI1NDMiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsInV2IjpmYWxzZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImxhcmdlQmxvYnMiOnRydWUsImJpb0Vucm9sbCI6ZmFsc2UsInVzZXJWZXJpZmljYXRpb25NZ210UHJldmlldyI6ZmFsc2UsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjp0cnVlLCJhbHdheXNVdiI6ZmFsc2V9LCJtYXhNc2dTaXplIjoyMDQ4LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjgsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6OTYsInRyYW5zcG9ydHMiOlsidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN30seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTh9XSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5IjoyMDQ4LCJmb3JjZVBJTkNoYW5nZSI6ZmFsc2UsIm1pblBJTkxlbmd0aCI6NCwiZmlybXdhcmVWZXJzaW9uIjoyNTYsIm1heENyZWRCbG9iTGVuZ3RoIjozMiwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjYsInByZWZlcnJlZFBsYXRmb3JtVXZBdHRlbXB0cyI6MSwidXZNb2RhbGl0eSI6MiwiY2VydGlmaWNhdGlvbnMiOnsiRklETyI6MX0sInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjo1MH19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIzLTA1LTE2IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjI1NiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJFeGNlbHNlY3UgZVNlY3UgRklETzIgRmluZ2VycHJpbnQgS2V5IiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyMzA1MTYwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMy0wNS0xNiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyNTZ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjMtMTItMDgifSx7ImFhZ3VpZCI6IjVmZGI4MWI4LTUzZjAtNDk2Ny1hODgxLWY1ZWMyNmZlNGQxOCIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiNWZkYjgxYjgtNTNmMC00OTY3LWE4ODEtZjVlYzI2ZmU0ZDE4IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlZpbkNTUyBGSURPMiBBdXRoZW50aWNhdG9yIn0sImRlc2NyaXB0aW9uIjoiVmluQ1NTIEZJRE8yIEF1dGhlbnRpY2F0b3IiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MiwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCIsImJhc2ljX3N1cnJvZ2F0ZSJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlCOVRDQ0Fac0NGRFc0NGFnbHhaaVkvSjNESkZDNGU1bzc0MjIwTUFvR0NDcUdTTTQ5QkFNQ01Id3hDekFKQmdOVkJBWVRBbFpPTVJJd0VBWURWUVFJREFsSWIwTm9hVTFwYm1neER6QU5CZ05WQkFvTUJsWnBia05UVXpFUE1BMEdBMVVFQ3d3R1VtOXZkRU5CTVJZd0ZBWURWUVFEREExallTNTJhVzVqYzNNdWJtVjBNUjh3SFFZSktvWklodmNOQVFrQkZoQmhaRzFwYmtCMmFXNWpjM011Ym1WME1DQVhEVEU1TVRBeU16QTBNVGcxTkZvWUR6SXdOamt4TURFd01EUXhPRFUwV2pCOE1Rc3dDUVlEVlFRR0V3SldUakVTTUJBR0ExVUVDQXdKU0c5RGFHbE5hVzVvTVE4d0RRWURWUVFLREFaV2FXNURVMU14RHpBTkJnTlZCQXNNQmxKdmIzUkRRVEVXTUJRR0ExVUVBd3dOWTJFdWRtbHVZM056TG01bGRERWZNQjBHQ1NxR1NJYjNEUUVKQVJZUVlXUnRhVzVBZG1sdVkzTnpMbTVsZERCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQk8wWmxSTXFrT1BScUhOYTRYajdvVHZFS0hMdGpXZXh2dUFDOFdMbEs1M1RJR1hjMkpKM0diRWFWbzEwdEZqbkxITFhoZUthZFpDajJIRXozTkpTYVVJd0NnWUlLb1pJemowRUF3SURTQUF3UlFJaEFMSGVxa2NsOE83a3kxaVJYaWNWQUM3eDJ6c1UxMnZTM0JPVnlYQ2dlZEUzQWlCbE0rK3huek9PRXMybTNzRjgvWnRidzZVTC9BTVQxWlh0NWZ5cVVoSXVXdz09IiwiTUlJREhEQ0NBc0tnQXdJQkFnSUJBVEFLQmdncWhrak9QUVFEQWpCOE1Rc3dDUVlEVlFRR0V3SldUakVTTUJBR0ExVUVDQXdKU0c5RGFHbE5hVzVvTVE4d0RRWURWUVFLREFaV2FXNURVMU14RHpBTkJnTlZCQXNNQmxKdmIzUkRRVEVXTUJRR0ExVUVBd3dOWTJFdWRtbHVZM056TG01bGRERWZNQjBHQ1NxR1NJYjNEUUVKQVJZUVlXUnRhVzVBZG1sdVkzTnpMbTVsZERBZ0Z3MHlNekV3TWpVeU16VXhOVE5hR0E4eU1EY3pNVEF4TWpJek5URTFNMW93Z1pJeEN6QUpCZ05WQkFZVEFsWk9NUkl3RUFZRFZRUUlEQWxJYjBOb2FVMXBibWd4RHpBTkJnTlZCQW9NQmxacGJrTlRVekVpTUNBR0ExVUVDd3daUVhWMGFHVnVkR2xqWVhSdmNpQkJkSFJsYzNSaGRHbHZiakVaTUJjR0ExVUVBd3dRWm1sa2J6SXVkbWx1WTNOekxtNWxkREVmTUIwR0NTcUdTSWIzRFFFSkFSWVFZV1J0YVc1QWRtbHVZM056TG01bGREQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJEY2xsU2tOeXkyZWJWSnVVaDdFRFI0bytwZkZYdERSd0NYdW4wTC8ydTF3VjhRWW9wbXJLdk4yWW1XVTN4ZkVvdTlHWWxnOEZWU3lpdUk3WGhzblZUMmpnZ0VhTUlJQkZqQWRCZ05WSFE0RUZnUVV0VG10K0hrZ0JtaUtLdHhuNUFmcjUyMVRJc0V3Z2FRR0ExVWRJd1NCbkRDQm1hR0JnS1IrTUh3eEN6QUpCZ05WQkFZVEFsWk9NUkl3RUFZRFZRUUlEQWxJYjBOb2FVMXBibWd4RHpBTkJnTlZCQW9NQmxacGJrTlRVekVQTUEwR0ExVUVDd3dHVW05dmRFTkJNUll3RkFZRFZRUUREQTFqWVM1MmFXNWpjM011Ym1WME1SOHdIUVlKS29aSWh2Y05BUWtCRmhCaFpHMXBia0IyYVc1amMzTXVibVYwZ2hRMXVPR29KY1dZbVB5ZHd5UlF1SHVhTytOdHREQUpCZ05WSFJNRUFqQUFNQXNHQTFVZER3UUVBd0lFOERBVEJnc3JCZ0VFQVlMbEhBSUJBUVFFQXdJRklEQWhCZ3NyQmdFRUFZTGxIQUVCQkFRU0JCQmYyNEc0VS9CSlo2aUI5ZXdtL2swWU1Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lRRHpSMGhhMWJ0MVlBOTFKbUJWS3hUcUJON2dBaGhVbEJ1blJOT3VnaUoyaFFJZ1VtdXNRMEs2cHpSbjl6VGdsZE5yeXdsNkFVaXBQTzh0MVl6UHdRbHFKaU09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQU13QUFBRE1DQVlBQUFBL0lrenlBQUFBQkdkQlRVRUFBTEdQQy94aEJRQUFBQ0JqU0ZKTkFBQjZKZ0FBZ0lRQUFQb0FBQUNBNkFBQWRUQUFBT3BnQUFBNm1BQUFGM0NjdWxFOEFBQUFCbUpMUjBRQS93RC9BUCtndmFlVEFBQUFDWEJJV1hNQUFDNGpBQUF1SXdGNHBUOTJBQUFBQjNSSlRVVUg1QVVaQXdvMmsrT25Hd0FBSGU1SlJFRlVlTnJ0blhsNFpGV2Q5eisvZTJ1NVNYZlRXMUtoUVlRQkc2U1RBQU80NExpZ29nT01yL293ekRpS0RnNmlxS2lNSXlDRE9Bb2lJTDZJNG9Jb0xvQ0N3cWl2aU9JMk1Hd3FDaTEwS3IzUXJNM1dxYVFYT3Aza1ZsSjFmdThmcDlKME45bHFTVzdkcXZONW51cmtlVHAxNjl4YjkzdlBPYjhWSEE2SHcrRndPQndPaDhQaGNEZ2NEb2ZENFhBNEhBNkh3K0Z3T0J3T2g4UGhjRGdjRG9mRDRYQTRIQTZIdytGd09Cd09oOFBoY0RnY0RvZkQ0WEE0SEE1SHN5TlJEOEFSRDBhNjA0QWl6QlB3UlkwM2Z1K0lpSWlpaWdBR1JWV1JvcUtocWdxdGE0YWlIbjdOY0lKcGNrYTZNcWd4NG5sZUVtRUJzQUJZRExJWVdGSjZMUVlXQW5zQUxVQnl0MWNDTU1BWU1MclR6eEFZQW9aMytya1ZHQUMybEg0ZlJIVklWRWRVVFFGOERWYm5vcjRzaytJRTB5U01yR2hqYkdpTTFJSjBFbGlNc0NmSWZzQnlZSDlnUDJBWlZpRHpnVllnQlhqVTlqNFpGOVlJVmtDRHdHWWdCenhUZWowTlBJMnlFZEYrbE9kUUNVa2tEUGtSZ3JXYkk3dU9UakFOU3RpZEFhT0NKL05CWGd4MEFZY0FLNENYQUh0aVo0MWsxR09kQU1YT1VOdXdZbm9XZUJKNEhIak0vcTVQby9RTGJETnFSZ1VJZWdkbWZXQk9NQTNDYVBjU2lxWVZrZEUwSXZzQWh3Ti9WL3I1RXFBTnUzUnFCTWFBNTRBK3JKQWVBUjdGQ3VvcG9BL1Z6YURiQVEyeS9UWDdZQ2VZR0JOMmQ2QkdFWkVXaElPQW80SFhBNGRobDFmMU9IdE1oOEh1ZllaTHIrM1k1VnVJRlVvQktHTEZueXE5a29CZmVobnM3TFFaK0N0d04vQTdJQi8wOUZVOXVFWjU0alFWWVhjR1VCL1ZBOFNUWTRGamdTT3hzMGljSG9JaGR1K3lBVmdQUEF3OGdkM0RiQUdlUTNVRVlReVZNVUdMQ0FiRmxNN1QxM0doQ0FtUUpCQmc5MkZMZ1VXQWorTFhhc0J4dXJoTlRiaWlEWHdmVk9jamNoUndJdkQzd0Q3WWpYa2NHTU51Nmg4RS9nemNEenlFYWovb2tDQkdKVWZRRS9Vd0o4Y0pwczRKTzl1UlJCS0t4U1VxdkFsNEwvQnFyQ1VyRG94aE4rcDNBTDlIOVg2VXAxSXB5UStOS0F2VzFxOEplU0tjWU9xVS9DRnRxUEVCRmlLOERmZ0FkdG1Wam5wc00yUUF1QVAwSjhEZEdKNFJLS1o3NHlXUTNYR0NxVVBzSG9VQTVCamdvOERyaUlkUUZEdWIvQXoweHlpcnhDTmZLQWp6VmxlLzRhNEgzS2EvanNoM1pjQVVSVlc2RUQ0Qm5JRDF2TmM3QnJ0cC93SHdZekhGUjFURTFOS2NXeSs0R2FZT0NGZDBnS2NBaXhCNUwvQXg0RytpSHRjTWVScjRMcXJmd3hRZlIwVG53b0VZRlc2R2laaDhWd2F2V0tRby91SEFaNERqaUlmL1pBVDRHYXFYQ1R3QW1QVHFUVkdQYWRaeE0weUVoRjJsdllySWU0QnpzZkZjY2FBWHVBVGxwd2pEdFhBSXhnVW5tQWdJVjNSWWw1dlNoc2k1d0duWVlNZDZKdy9jaU9xRnhrczk1SnVRZExaeGwxOFQ0UVF6eDRTZDdlQjVvSG9nSWw4RTNrSThISThEd0VXb1hvVklVODBxTytNRU00ZUVYVzJJbDBLMWVDVHdWZUNWVVk5cGhqd00rZ21NM29LSUNiTHg5cVZVUXh5ZWJBMUJ2anVEOFpPb0tid2V1SWI0aU9WKzRGK0xxZVROQWswdEZuQXp6SndRZHJXVjRnTE42NENyc2VIMmNlQWU0SU9nV1JDYWRSbTJNMDR3czB6WWxRRVJnRmNBM3dFNm94N1REUGtENktrZ2F6dzFwQnJRQ1ZrSlRqQ3p5RmpuVW9wZUFwUVZDTmNDUjBROXBobXlDamdaZUFCVm1uMFp0ak51RHpPTEZDVUJ5dDRJbHhNZnNUeUY4dThnRDJDTUU4dHVPTUhNRXRZcHFYc2dYQXk4T2VyeHpKQmg0UHpOcjJ1N0hhTUV2VzRadGp0dVNUWUw1THN5b0VWUHZjUTV3UG5FSndUcENsRTlXeUh2WnBhSmNZS3BNV0ZuTy9nZUtNY0IxMkxUaHVQQW5TanZCSjRKc3M0YU5obHVTVlpyckJkL1ArQUM0aU9XelNpZlIzaEdWS01lUzEzakJGTkR3cTRPUkRVSjhuRnNkbVJjdUU0d3Q0RVM5NHpJMlNZdWErdTZ4em9uQmJXRktVNk9lanhsc0I3MFNoVXBCRDFPTE5QaFpwaGFJUjVnT29CenNCVWw0NEFDMzFGSnJzT3R4R2FFRTB3TkNMc3lxTzhEY2hKd1ZOVGpLWU1zcXRlTEtUaC95d3h4Z3FrRklralJMTWRXZG9uTE5WWGdPaEwrazFJMFVZOGxOc1RseTYxYndxNE1Palltd1B1QWc2SWVUeGs4aXVwUEtSclNhNXlEY3FZNHdWU0xDSkpJdkJSNFI5UkRLWk5iMVJRZVJkM3NVZzRUV3NsR3VqcEExTE1iUVRFdHpwRTFJV0ZYQmo5WVFERWNmQmZ4eWNjSFcrRDcvNG1mVkJleVh4NFRtNVd0Lzc5ZFJONEI1TUx1ekVwVW54QzhmRkVNclQxdUNnZEFoR0s0YlgrUXVNMHVxMEJYUmoySU9ETGhra3hRUk9uSFp0dWRDUEpyeEx0SmhZOTZlSWVGM1psV1BlSW9ocnZqNHNpdVBXRm5wdlJna2JjU240U3djWDZEZUZ0d3E3R3ltVFNXTEZ6UkJwNlBqYmlWOXdCbkFmc0MvZGc2VkxjQnQ2SGFtNXEvYUNqY3RvbldKcWhMdGVQNjJCSkpTeEQ1QmZDcXFNZFRCcHRSUFI2UmU5MXlySHltRGI0TXV6SzJhWTh2aDRCOEduZ3J0b21OWW50NHJBUitEZnhlMUt6RDg4SmkwZERhd0tIaHVsY3IrYVVMQU40TzNJRHRTUklYN2dEOVA4Q2c4K3lYejdSV3NpQ2JRL3c4cUt4Q09RVTRFOXNXVGJDTmE0NEJ2Z2o4UnNYN3NTcnY5MFQyRFRzelh0alpFZlg1elFyaGt2bW9NVDd3TnVJbEZvQjdFRy9RZWZZcm82encvckFyZzZJaUlrZUJmQTdiSW01MzBSV3gvUVovQ2R5RTZrb2dMQnJEdk5XTlVmUXQ3TzRBZERuSWI0bVhkV3dFK0VmZ1ZyY2NxNHl5ODJIeUs1YWlmZ0pVT3hBNUMxdTFjYkxtUHB1QjI0RWZvbm83NG05VlU2UWx4aEd4bzUzdEdNOEQ2OVcva25qNXN0WUJid1NlZG9LcGpMSy83UFRxVGFWeU85S0hjaTV3T3JaNzdVUXN3VDdScmtma1pqQ25pYkRYOE40KzRjRkxvejczaWpBaW9KckNwaDNIU1N3QXZhS2F3K1c4VkV6RlgzaVE3VU13byttaHZtdXhYdTQ3cC9wejREWEExeEg1bGJlazdRd1MvbDU2ekVMckpJMFRJaUN5SC9DeXFJZFNBWDlWVDhiRTZhVmlxbnBDcHJQOTVGc3pZQnQ4dmh2NFByYW40V1Q0d0tIQVpTQzM1UHVDMHdYdE1JZnV6VWhuSnVwck1TMTZ3STZvL2FPQXZhTWVUNW5rZ1FkUVhKSllGVlM5cEFpeU9idEVVMzBTMVk4Q253TzJUZk0ySC9oYjRNdUkzREpxQ3U4VGtjVmhkd2ZoaXZvVlRyNGxqWmlpWUdmTG1yV3luaU1HUUIvQ21jZXFvbVpyOEZJK3hYWlJ2Umc0QTl1WmFqb1MyRlRlYnlEOE4vQTJQQTFLVHNHNlJNVnJKNTdMc2FkUWNrNHYxVkhUVFd1UXphRkNBUXJYZ0o0Q3JKbmhXMVBBRzRBZklONjNFVGtpMzluaDVldHRmMlAzTHdjUm4zWjZPL01vbU1Hb0J4RjNhbTdsQ1hweVNCSEZTLzRXZUEvd3h6TGVQaCs3Ri9xNWV2eW5DcG53a0E1R085dWp2azdrT3hlUC8zb1k4V2pVdWp2cmtVUlIzQlJURmJOaUZrMnYzb1FXeGdEdVIvVms0Tll5RDdFM3RnRGVUMUNPTTBJaTZtV2FTaElwR28vNGxIemRHWVB0OFVMYUZSV3ZpbG56STdUMDVxQ1FCL0hXbzd3ZnVCSEtpby8xZ1ZjRFAwUzh6d043alhUdnlXam5rbWl1bEFqcWV3dUpUL1g5bmNrenN6MmxZeHBtMWZFV3JObEtla2hCOUdsVVR3ZStDeFRLUE14aTRDeEViaExNRzQzNFhvU3p6VExnUlZGOWVCVU1BczZXWEFObTNWTXRqL1pSaW9vZFFQVXM0SnRNN2F1WjhEREFxMEN1Ujd4UEFvdnlYUjBNelgwK3p2N1k2SVc0OFJ6b1pyZDdxWjQ1QyswSXNqa1F0Z3A2TG5BRk1GckJZVExBQlloOFQwVzdOWm13aGI5bm1kR1g3dERJZ1ZpTFh0elloRExreXNCV3o1ekdRZ1U5T1ZRWlJQVXp3R1hZdFhXNUpJQzNnOXlVR05NVEZQelpYcUpwd21jMHRSRGdnTG04WGpWa20wRG9LczlYejV3SEQ1Wm1taUhRendHWFVwbG93SlkwdWhxUnN4RG1oOTJ6S1JvaG5kK1NKcDcrRjRDdEJnckdOV3VvbWtpaWJVdDdtaEhRaTdISlo1V0taakZ3UHNpWFVka3I3TzVndEx2MlBodURZUERtWXpmOWNXUnpTMCtmODhIVWdNakMwNjFvWkFUVmk0RC9TK1dpU1FHbklGd0Rlb2pCc3oxYWFvaDE4TE1IOGR6d0F3eU9ITG9YbnF0QlZqV1I1bk1FUFgwZ01nSjZFZkFsS2pNRWdMV2lIUVB5QTlEWGp4WTNNd3Y3bXFYRTA4TVBNQ0lZdktKYmtsVkw1QWxRTnRKWmhsRXVCTDVLK1g2YW5la0crWDRxMlhhQ29GTFRmWTJ5QkdpTjltcFZUSWhDWXEzejhsZEw1SUlCbTR5RzZMQ29YZ0JjVFhrUkFidnpZdUFiS3Q1SkdMeXdWZ0djd21MaTIwOW5KT29CTkFwMUlSZ29tWnlGYmFDZkFxNmp1c1NORHVETGVIS0toL0ZyNUt0WlRQeHlZTWFwWnRaMjdFVGRDQVoyR0FJMm8zbzI4TE1xRDdjVStLSVI3elNqSkVhcUY4MmlxSytQSTNycVNqQUFFaG9ReVlHZXlkUjFBbWJDSXVCaThlVERHRWxVVWlldGVQQWVxQWpBdktpdlRSVzQzWDZOcUR2QnBOZVBiMHpsTWVEandPb3FEN2tIY0tINGZFVEVKTU91OGt6T0JTOEo0Z08wUkgxdEhORlRkNElCYXptVFloRThXUW42Y2FvUFRWOEFYS0RpblNxcVpVVTdxM2g0NlJhSXQyQ1NVUStnVWFoTHdRQ2tWdytneG5EM3R0eHZnWE9adnJER2RDd0FMbFRQZjVkbkNqSnowUWlwZ1NjZ3ZoWXlpR2ZBYUYxU3Q0SUJhT25KOFpvRkdVVE45Y0RsVkcvdFdRSmNhdnpFOGVDUm42R2ZKa3pORStKcklZT1NZSFN2T0cvRDZvTzZGZ3hBT3B0RGtRS3FYOEpXeXErV1pTQ1hJK2FWaWt5ZkhpQ0E3OFhpV2sxQlNrVW9Mb3BiM2ZUNkl4WTNnUzNoSk51QVR3TjMxZUNReTBHK2duS2dpakRhT1hVaW1tZ1JiSkgxdUpJR3htdENPNm9nTmxld0ZHbjdCSEEyOEZnTkR2bHloTXVBRHVOTnNkcFNHRDM0S0NYZXpyK1VlaDdxck10VkV4dkJwTE01d0lBbS80U3RLTE85Qm9mOUIrQy9VRzJaM0FpZ0pCN3JoZkxUcXV1SmxQemJWMUFYM2w4MXNSRU1RTkRURDR5QjBSdUFxNmkrN3FrQXB5QnlLcE5Zemp4VnBGQUVDS00rL3lwSXkxV25pZk5mVmsrc0JBT2xRRTFQUmtFdkJYNVRpME1DbjhKUHZnbngyTjJ4bVpROFl2TklocU0rOXlwSUlaNVRTdzJJbldBc0JwQWM2SG5ZYm1mVjBnRmNqSnJsaUtEN1B2OGZraDJrTkpFTlJYM1dWZENxU0V5LzYvb2lsaGN4Nk9rSE5lQW43cWU2dWdBN2N6Z2k1Nk1zeUMrWWNEOVRyZU0wU2xvOEVVL0VUVExWRWt2QkFBVFpmaWdVUWZrQjhOODFPdXlKaUp3bVVwRHdoYlVCdGhCZjAzSUFKRnpuc2VxSnJXQmdQUEdNSWVBaVlHME5EcGtFUHFFa2o1NGdFdUE1NG10YURsUklxcHRncWliV2dnSHdGTlJHTkY5Q2JUSUw5OFNhbWp0MmV4NXZKYjZXc2dDVkpFNHhWUk43d2FTeWZZZ3FxTjRFL0x4R2gzMHRJaC8yaXNiYktYUm1LL0cxbEFVSUNXZFZycDQ0UitEdUlQM3NDUG05V29leE5jNk9BdmF0OHBBZThDSGorLytMYlpzT2R0TS9TRHhya3dXZ013N3gzN3A4UnkvUFhTUW1SaFNCaFE5dmpmcDhJcU1oQkNPYkJnbVh0Wko0MTU0ckN6ZHMvRHB3TWRWSEY3Y0QvNG5xS21BVE1JVElBTGErY3R4SWdhU24rb1A4aXFWb0lnbkdMRVhrZGRnSHo2TGQvcXdQdUN2c3p0d0RzbjEwZEpBOTFzVjEwcTJNaGhBTVdBTkFlQU9BZmcva1dHd0x3R3A1QXlLbjl2ZjBmYUd0czMxWVJKNk4randySk1rVUNYRGhpblkwNVVQUkhJbkl4Y0JybVR5SFpoams1NkRucGRJTEhnMVh6Q2RZM1R5ZE5HSy9oOWtGQXlBRDJFTG50ZkNiK01EcDdkMGRSK0w3QmVDcHFFK3hRcVlVREw0SFJUMEk1TnZBTVV5ZGNOWUt2QlBrYXhqYThadHJZOVJRZ2dsNiswQVYxUHdQMVZlZEdXY2Y0Sk5paWdFMldqcU9UQ3FZc0RPRGx5OEk4QUZzLzg2WjhtYUVmd0pocE13NkNYR21vUVFENDkwQnZEeHdKWGJOWFF2ZWduZ25ZTk1LNHVpTG1YeUc4Y0NrL1F6d3BqS1A2UVBIb3lab3BnaUNoaE1NWUdjWlkrNmpkaEVBQWZBZjJPVklMZElLNWhxZnFjdEVMY1UycXlxWEZ3SHpteWxyb0NFRkUyUno0SGxGNEJwcU44c2NCbnlXZU5aWEZpWVZqQUF5U21YNVBubmlPZU5XVEVNS0Jpak5NdnBYeW05NVBoaytzSng0Vm1EeGdQa1QvbzhDeWtaZ2ZRWEg3UkZqdGpYUGdxeUJCWlBPNXNDVEFyWndSaHlYVWJWbVlzR2dJR3dIcnFXODBKOEI0SWZxK3liVlJHMW5HbFl3OXFtbm9Qb240QzlSajZjT21LZEE4ZUJkQzM3WUFpTUtxamNDMzJKbVM3TWg0QkkxNWs1VlJad2ZwakZRQmNUYkJ2d2k2ckhVQWZNUW44SUU4UStsSXZEREtPY0Jud0Fld0VabkQrMzIyZ0xjRGJ4ZjBLOTZuaFJic3MwakZtaUNKTyt3dXdQZ1VHdzZjNDJheGNTU0sxbSs0TU9zMjBiUU8vRk5iZ05OVlJUSklMS2ZLanZDYWNUK013VDZhSHE3dDJXMFZVbjMxc3FlRWg4YUpqUm1HdFlERHdKdmpub2dFZExLMnVjRVR5WTFBdHZLUENqV3N0aDhhcGdCRGIwa0EreTZUR1FZK0dQVVE0bVllU3BOOEgzUE1nMS9BWU5zcnJTWjRYNHFienJiQ0xTS0UwelZOTWNGdEw2R2g3RmgrczFLSUNLSmh0KzB6akxOc1lleHkvWWN5RWJpbVFCV0N3S1VKREZ2RUR2VTNVYWdQbU1ZSDVFOVFCYWpMRVlJQUVVWkFkMkN6WkFkUkNoU0VJSTF0ZG1TTllWZ1N0dmNJWlhtbm1GMEJ0OTNlSEFiakkxQmtGNkt5SUhZUkRvRFBJdnFRNlJTZzJaNE82MXJ0ODdvUTB0V3lpVHdOOEIrMk5DaWJjQmpvbWFESXNWZ0d0TjAyTjBHK0FnYUtMSmlURGdhdkpjQkx3RTZFT1pqejAwUnhrQ0dZRWYwd3A5SWNHZllsVm1ISjNuR0NnUnJLcjhObW1LR0xyVWVUeUxjREJ3YjlYZ2lZalhvRzRBKzYzZlpsYTNMRnhLazB3Q0xFSGtuY0RKd01QWUdWMng2OWtyZzI2aitBaGlaNmtZUHV6SjRhc1I0L3VIQWg3QVd5Z3cyeEdnTWVBYTRCZVdiWTZUV3BpUlBlb0p4bGNyM0JvaThFVGdGZUEzUXhzenZYUVZ5d0IzQTkwWDFOaUNmcnRCLzFDU0N5UUFzUU9SWHdLdWpIazlFUElyTnBIdzY2SG5oOHFRMEV5ekRKdC85RTVQUFJzUEFsYUo2dnNMZ1JLSUp1ek9JcXFoNEoyTHJMRXhWWTZFWE9CM2hEb3d5ZnJ5d00wUFFteVBzN2pnRU9BdDRHN2FMWERWc0EzNkVUV0YvWERDa2UvckxPc0NjQzBZUGFpT2Y4c0UrS1ZhQTNvYnE0NEkzcGpKRzBMTzU1cDlwYndiZEgrUi9zTXVDWnVSSjBOZUNQTDY3WU93TXJQTVErUnJ3M2hrY3F3QmNoREVYSUxzdXFVWTZNN2FNczNJTXdyWE1iTS9ZQTd3RFdCUDA5QkhhZW5BSmtCT0JDN0JCcjdYa1h1QU1oSHQzRnVsTWlOQktwc1BBUjBGdVI3eHJWRGdKRXZ2a3U5cThmQTB6K0o0L2xyd0dtNy9SckNRbUtvU1I3OHFVSXZ6bExkaWJkb2JING9PSXZKemRrc2RFQU5WRkNHY3pjd05MTi9BeDBJUjl1RWtBY2lhMlEwT3R4UUx3Q3VBN3FMNENFY3JwckQzbmdwRjFBMUFzZ0plNEgrVUQyUGlrZHdMZkEvbTlpdjgxRmUvNHNEdVR5WGUzU3pqRFBwU1RvYllHOTk3QWFUU0prV01TRXNBTEJLTW9xRWxqeFZKT3ArZ01JaWZneS9nZTBTSUN3aXVBdnl0emZQOEFjZ0JxRXRpbVdaL0J0b3gvZnFnMm1ub1ROZ3BoSzlXVjd1MEV1UngwdjNMcXRFZHlBd1dyTnhGMlpoRGYrNE9xdmcvN0pEa01XOExvUU9DOUlBOHBjZ2Z3dTdBcnN4SzBENUZpT3N3ajY1K2I5alBHRG15bkdIaWd1Z3prSXVDVlVaeHJIWkVBVGI5Z0ZXNXZsbmFncTRKakhrSFJ6Q3VWNnlXL29yMlVmQ2xIVUg2aTNUTGc3WWkzRURnRG0rVUsxdGh3Ti9CYm9CZGxBTkU4eUh4Z2YreWU5TTNBQVpRL0FSd0ZjamFxL3g1MlpVWm5zalNMZE5NZmRtVktjemlIQTk4RVhqYlJud0dQWTBQMDd3VDlDOHFUQW9QNTR0aVlMeDd6Vm04aTdKNUhvYkEvWG1LamVDcHBSRHF3KzZUVGdGZFZjREVialVIZ09PQ2VuZmN3cGYzZENwRGJLRDg0ZFJYb01VQi8wSk96MzZmbmc1b3ZBUit2WUl3aDFnVHRZMDNaZHdDWGl1cWQ2akhzNTRYa3V1ZkhQdExaQVlvblB2dGl2K2NQQWd2TC9Nem5nSDhCZmkzRkl1blZBMVArY2FSTGxDQ2JLMjN3WkNYd1B1QWJ2TkNLRlFBdkxiMU9BdG1Nc0VGaFF5cVJlaHJZRkhaM0RBR3BSQ0szQ0x3MmhMMndUNXdYRWM4TXlkbGd3aVdaUlh3cWU2RDQ3UHpRRlFYMUFGUHBnM2g4VmhrRHZvUHlXWVErTFRMaHhyekZSa3Vic0R2ekdNcDVpRHlFdGNvdEtlTXpGd0tuaWVxZGVONjBWUWtqWDlNSFBUbnluZTBZeitzUjFWTVErVHFUVnpEeHNEYjROdXlzNUpnNVB2YnBIUWV1RjlWUEtteWJ5R2UwTzNaMmF5K0lLWHhmdldRRytCemwzZHRISzNJa3dwM1QvV0ZkTEZQU3ZmMzRwZ0FpNjFGOVA3YW9lQlBWSXBrVFBPSWhtRjdnOHlxeXJSeHpiNUR0Ujcya0FhN0dtbzNMWVJIQ1c5VHptYzdJVkJlQ0FVajFiZ0tLSVBJRWRpMTZIZkZ0WUZTdjFQdnkxQURmUWxoZjJlTlN3ZFlhdUxHQ054OHR4Y0tTNlQ2M2JnUURFUFFNRVBUMGdlcEdWTThBdmtaemgrVFhFcUg2QXUyenpRYmdWMmlwV1ZhWjdMUjh1d2NvMXdPK0hKSGxURk9Vc0s0RXMrUEVzemtRMllycXVkajFxS3Y2VWh2cVBSUnFGYW9icWxxTjIxNUJHeWsvbFdNUmNNaDBmMVNYZ2dIc1RJTU1vL29GYkN4Uk0wY2ExNHA2Rjh3NjlmeFJxYVlYcHdpSWpGSlpHc1BCK0Q1aDUrU2UvN29WRE95WWxzZFE4eTFzeE91R3FNY1VjK3Jka0RJZ2FraG55d3VJbk9ROEt6blgvYVV3bGhSdjh1ZEtYUXNHeHUzdllrWjYrbTVDOWQrd1ZoUkgrU2lWbFlPZFM2b3ZPMXVwVkN3WlJWcW1tdURxWGpCZ1JkUFMxUWJpM3dhOEI2YTNsenRlZ0dKcklkY3pVUzhaRnlQU090WEdQeGFDQVFpeUEyQUtBSDhGL2hWck9uUm01NWxUeEZrY3A2T1Y1Nk1OSmlRMmdnRUlldnRKRHdIb0U2aCtFTGljK0hZMm5tdkdpSGsrL3h5UW9wRUVBeUNQOW8zYjI3ZWdPbDdhZEdQVTQ0b0JJVFlBMHpFNVB0TTRkMk1ubUhGS3hvQThSYTdDWmduMlJEMm1Pc2NKWm5vOHB0RkViQVVEMXV5c0dCVlBmb1BxdndDL3BOUWExdkVDQm9IaCtyY3NSODZVaG9kWUN3YWdaWFUvWm5RTVJGYVh6TTVYWUN2Tk8zWWxoK3FnMDB0MXhGNHdBQzFyTmhIMDlDRkN2NkRuWURQMm5veDZYSFhHTXloaDlKYmJlTk1RZ2hrbjNaTkREWGtOQzk4dExkSHV4SzFCeHRtZ3ZtODhkWmI0YW1nb3dRQUV2VGtTZ2FnaWZ5aUo1cXU0SlpvQzYwUU5xZDZCcWcvV3pEU2NZQUNTUFFPMFpQdEFlQmJWczdGeGFBOUhQYTRJMlFhc2pYb1FqVUJEQ21hY29DY0hRbjVrWk5sMTJHcU90OUJrYmJKTGJJUXF3K1lkUUlNTEJxeG9XcExQQVBvQXFpZGo2MTAxVjJOR1dJZExqNmdKRFM4WWdHQk5ianc2WUROcUxzR1cxYm1MNXZIWjNLZDQrYXJ5VEJ4QWt3aG1uQ0NiZzZJWWhOdFIvV2ZnVW16bHpVWm1HTGhYMEZya21UUTlUU1VZS00wMnEvb0FOb3FhVDRPK0cvZ1RqVHZiUEk2NnNLRmEwWFNDR1NmSTVzQlF3Sk5mZ1o0QVhFaGpkZzYrR3pPMkVXM1U1OEhjMHJTQ0FVaXY3aWQ0c0ErVVp6SG1mT0FmZ1YvUU9Ia2pJWEFyZmxJRHR4eXJDVTB0bUhHQ2JBNDh6NkRjZytxN2dZL1JHSDZMSGxUdndXMzJhNFlUVEltZ3A0OGcyNGVIYmt1UERWMEYrbGJnSzhUWEhLdkFqL0NrMzhXUDFRNG5tTjFJWmZ1UnRkdEJXUy9HbkFsNkluYVpGa1k5dGpKWmhlcE50c05XSTI3Tm9zRUpaaEtDYkE3MUtBRC9DM29TdHAzQ1N1SmhUY3NEVitENVQrS0NMV3VLRTh3VUJEMzlCRDA1UkJrMEl0ZWl2QlU0RDNpSStvNHp1UW5WR3pGRmd0NjRyaWpyRXllWUdaRE81bWhkdFJIUXA4WG9KY0R4d09leGpaN3FUVGozb3ZwWlJMYVhVZjIrMG1wZXU3eEhGRlFNRlI0TGFqdDdWM28rVTc3UENhWU1nbXlPZEc5T01Ud2lSZjBNcXNjQlh3Q2VvRDZFOHlEd0VVUWUwUmxieGhUUUlTcmJvdzN1L0Q3UDdMamZ0bFp3TEtVbVVSY0thSjdLNm5GUFcvZkFDYVlDZ3Q0KzBxdHpSbUd0cW40S09CWmJOUDBob3R2ajNBV2NvbkNmcU5JeTA5bkYzdVA5d0NNVmZPWnFyMWpZUGg2amxsdzlRT24zTE9YN3NyYWl1cWI2eTZCUXlHK25zZ3FwajZDYW04b003d1JUQlMzWkhDM1puQkhWdGFMbXM2REhBdWRnaXczT2xmTnpCUGd1eXJ0QlZvb1dTWmZSaUFnQThiWUROMU9lMkllQW00MmZOS2x3Mis3LzkwZkt2MkgvQUdTcjlSbWxzLzJRREJScjJTeG5sbEhnWmhWdmNLcU9GMDR3TlNDZHpaSE85cXNXZWN6a2kxOUVPUTQ0R2ZnSk50eG1OcFpyQnJzRSt4Q3FIMEhZRVBSc3RCVkN5eURJNWtvdEl2Z1JkcGFhS1Q5RDlmZWd5TVBQVjZDVllnRTg3MWxzYjUrWkZsbnNCNjVBWktoYWo1SEFlTXVMMjRHZmx2SFd1MUM5UWRTUW5xSk5vUE5velFKaGR4dUtqNmltRVRrSTJ4YjdUY0NoMkJiZjFUeW94ckJQN3grQlhwOWV0TStUNFpZTnRGUVIrcEx2NmtEdG5YQUV0dVhkWWRPODVYZW9mZ0RoY1JrenBOZnVLdEt3dXdPVU5NSjV3SmxNWFUxeUMzQ09tTEdyVlh4VGl4Q2VzQTFZMWdIb3ZpQlhBWDgvelZzZUJFNVZ1TTlUblhLR2RvS1paWWE2Mm1oTkxTQS9PdFNLeUFIWVpyWXZCN3FCRjJNYjNMWXd1WWlLMktYRnM4Q2ZzUjI2N3BCaWNTT2VSN3EzTnJsdytjNE14dk1RMVU2RVQySmJsQy9sK1h2RWxNWndvNmhlcnVJOTZac0N5VWxxQklUZEdWQmFFRGtKK0Fod01MdFdsUndCN2dNdUU5VmZBb1d5bDVKVE1OYlpUdEh6UVBWRmlQd0g4TS9Bc3AydXMyS2pPRzRGL1FMaTkxSXNFUFJPTFZnbm1EbG1wRE1ER0JIeDVpR1NBZllCOXNOK21ZdXdqVnVMV09malZ1QXByUGw2QTBiNzhhU1FmbVF6TWx6N3poWGFEWG50UU5DMFFqY2lyOEtLMmdEclViMUhyR0ZqUmpmM2FHYzducW9VUEcvUDByRU9CZVpqMituOUJlWFB4ZGFXTGY3UTBMUTNhcVhrdXpJQUNZVURFWGsxOEJLc2FEWUE5NkJrZ1h4YStoQ1hCT0Z3T0J3T2g4UGhjRGdjRG9mRDRYQTRIQTZIdytGd09Cd09oOFBoY0RnY0RvZkQ0WEE0SEE2SHcrRndPQndPaDhQaGNEZ2NEb2ZENFhBNEhBNkh3K0Z3T0J3T2g4UGhjRGdjRG9mRDRYQTRIQTZIdytGd09Cd09oOFBoY0RRWS94OFFMRXR3bHk4T05BQUFBQ1YwUlZoMFpHRjBaVHBqY21WaGRHVUFNakF5TUMwd05TMHlOVlF3TXpveE1EbzFOQzB3TkRvd01BV2pTNm9BQUFBbGRFVllkR1JoZEdVNmJXOWthV1o1QURJd01qQXRNRFV0TWpWVU1ETTZNVEE2TlRRdE1EUTZNREIwL3ZNV0FBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCJdLCJleHRlbnNpb25zIjpbImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6IjVmZGI4MWI4NTNmMDQ5NjdhODgxZjVlYzI2ZmU0ZDE4Iiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6dHJ1ZSwidXAiOnRydWV9LCJtYXhNc2dTaXplIjoxMjAwLCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxXX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIwLTA1LTI1IiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJWaW5DU1MgRklETzLCriBBdXRoZW50aWNhdG9yIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAxOTEyMjQwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjAuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMC0wNS0yNSJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjAtMDUtMjUifSx7ImFhZ3VpZCI6Ijc4YmEzOTkzLWQ3ODQtNGY0NC04ZDZlLWNjMGE4YWQ1MjMwZSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiNzhiYTM5OTMtZDc4NC00ZjQ0LThkNmUtY2MwYThhZDUyMzBlIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkZlaXRpYW4gZVBhc3MgRklETy1ORkMoQ1RBUDIuMSwgQ1RBUDIuMCwgVTJGKSJ9LCJkZXNjcmlwdGlvbiI6IkZlaXRpYW4gZVBhc3MgRklETy1ORkMoQ1RBUDIuMSwgQ1RBUDIuMCwgVTJGKSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH0seyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNYekNDQWNHZ0F3SUJBZ0lRWmxyZ1g3aHVmdmxsaVUvekdYaGl4REFLQmdncWhrak9QUVFEQkRCTE1Rc3dDUVlEVlFRR0V3SlZVekVkTUJzR0ExVUVDZ3dVUm1WcGRHbGhiaUJVWldOb2JtOXNiMmRwWlhNeEhUQWJCZ05WQkFNTUZFWkZTVlJKUVU0Z1JrbEVUeUJTYjI5MElFTkJNQ0FYRFRJMU1ERXdNVEF3TURBd01Gb1lEekl4TWpReE1qTXhNak0xT1RVNVdqQkxNUXN3Q1FZRFZRUUdFd0pWVXpFZE1Cc0dBMVVFQ2d3VVJtVnBkR2xoYmlCVVpXTm9ibTlzYjJkcFpYTXhIVEFiQmdOVkJBTU1GRVpGU1ZSSlFVNGdSa2xFVHlCU2IyOTBJRU5CTUlHYk1CQUdCeXFHU000OUFnRUdCU3VCQkFBakE0R0dBQVFBTTNLNFJsYmdLeEJzZkNqR1VRdFNLNjFKQ2FvTStabFhCYThTeE9Id0FJcWJIYTEraTdFbzIzUkd4cmZCeDhlVUJEZUV3U0xZNnlOaE1zWU1jbmh6WDhBQmVhMkdBeTVBeWQvMG8weVRYdDROS09nUlZrdHVXN2ZiQUtwT29iQWVyRGs3ck5PRmo1S0lhZmNYeW00eEFmRHBYRVBJTGlxWEZweXlSclJNay9NRGF5T2pRakJBTUIwR0ExVWREZ1FXQkJTVHZHYTRNNUVlckM1WGdkSXgxZ3N0MG5uZXp6QVBCZ05WSFJNQkFmOEVCVEFEQVFIL01BNEdBMVVkRHdFQi93UUVBd0lCQmpBS0JnZ3Foa2pPUFFRREJBT0Jpd0F3Z1ljQ1FnRmVSQ1hJeEk0bGhzSnM3NksrWlZGV2gzYlRtY3JZRTR5MzZYZGE4OUxHMVdqY3htS3YxQVF1cUZOM1BRbG94UmpmeGZoRk9xTGtxNWtHd0hSMlNhc2M4QUpCU2VVTlNqc0dVdE9PYkw2RTlsMVpmOXdrN1JTV3hIdGxzSDBHalNyRjBDYjJHV0kwMlZLTFdXUHdlWFpTSW5acHdsTnpyQ0JFTnBjRG0xNC9PeVVQV1VnPSIsIk1JSUNYRENDQWIyZ0F3SUJBZ0lRR2dIdFVWdW5taU91MjFxSkx5eGlvREFLQmdncWhrak9QUVFEQXpCTE1Rc3dDUVlEVlFRR0V3SlZVekVkTUJzR0ExVUVDZ3dVUm1WcGRHbGhiaUJVWldOb2JtOXNiMmRwWlhNeEhUQWJCZ05WQkFNTUZFWkZTVlJKUVU0Z1JrbEVUeUJTYjI5MElFTkJNQ0FYRFRJMU1ERXdNVEF3TURBd01Gb1lEekl4TURBeE1qTXhNak0xT1RVNVdqQkpNUXN3Q1FZRFZRUUdFd0pWVXpFZE1Cc0dBMVVFQ2d3VVJtVnBkR2xoYmlCVVpXTm9ibTlzYjJkcFpYTXhHekFaQmdOVkJBTU1Fa1pGU1ZSSlFVNGdSa2xFVHlCRFFTQXdNakIyTUJBR0J5cUdTTTQ5QWdFR0JTdUJCQUFpQTJJQUJHME9aNjlLdFpxd21Eb2hCU0dLb3QwZllSakZyRXFZMzRWWnByUEFXcVdqSUVRaHpmdUE1NGZGR1FpNEdyQWNMVDdTZnQwYkxlYm4rcWFBNWFMdFFjSUdKUDZ2OU5TSS8rQU1KU3U3L3owSFhVWVRKSXJxVnBGalJ5K015d3Zpc0tObU1HUXdIUVlEVlIwT0JCWUVGQ2pBemdUbWdQZGZDelVFRnR1VWk2TlZ5M0JJTUI4R0ExVWRJd1FZTUJhQUZKTzhacmd6a1I2c0xsZUIwakhXQ3kzU2VkN1BNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnRUdNQW9HQ0NxR1NNNDlCQU1EQTRHTUFEQ0JpQUpDQVhDWUNHTVdIVjJxNnd2RzJwbGVHZXNJY1BmVXdqNmsxY3pncituSGNuTXdhTGRxQUQwLytwZk1FckpwSGpMYUNoaFJkenFNbWNEVHNJU2pqa2s4YlNkekFrSUIyQVNxOWR2TkxtZFZJNkphUHgvWW1BQnV6d0h0OHRDaUZ6Tm4rNTg5YkYrQkM5enRQM3gzek00ZWdDd1BLOHYwNlM3Yk1waFBEenUyQnJPWFA2WVNrR1E9IiwiTUlJQjJUQ0NBWDZnQXdJQkFnSVFGUU5LVys3emJnLzdkK2xUeXJJV3dEQUtCZ2dxaGtqT1BRUURBakJMTVFzd0NRWURWUVFHRXdKVlV6RWRNQnNHQTFVRUNnd1VSbVZwZEdsaGJpQlVaV05vYm05c2IyZHBaWE14SFRBYkJnTlZCQU1NRkVabGFYUnBZVzRnUmtsRVR5QlNiMjkwSUVOQk1DQVhEVEl5TURZd09EQXdNREF3TUZvWUR6SXdOVEl3TmpBM01qTTFPVFU1V2pCTE1Rc3dDUVlEVlFRR0V3SlZVekVkTUJzR0ExVUVDZ3dVUm1WcGRHbGhiaUJVWldOb2JtOXNiMmRwWlhNeEhUQWJCZ05WQkFNTUZFWmxhWFJwWVc0Z1JrbEVUeUJTYjI5MElFTkJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVzRllFRWhpSnVxcW5NZ1FqU2lpdkJqVjdER0NUZjRYQkJIL0I3dXZac0t4WFNoRjBMOHVESVNXVXZjRXhpeFJzNmdCM29sZFNyam94Nkw4VDk0Tk96cU5DTUVBd0hRWURWUjBPQkJZRUZFdTloeVlSclJ5Snp3Ull2bkRTQ0l4ckZpTzNNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdEZ1lEVlIwUEFRSC9CQVFEQWdFR01Bb0dDQ3FHU000OUJBTUNBMGtBTUVZQ0lRQ0IwTkZRU04wejRsV3oveWMzNmV3clRDenR0Sy9xRnZsYVBPS2grVDFvNndJaEFQMG9LS0ErY2ljc0R5M1kzbitWbFA4ZUIzUEJ6TWtodlcvOUlTWEN3K1ZCIl0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUZBQUFBQVVDQU1BQUFBdEJrcmxBQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQkhacFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR3L2VIQmhZMnRsZENCaVpXZHBiajBpNzd1L0lpQnBaRDBpVnpWTk1FMXdRMlZvYVVoNmNtVlRlazVVWTNwcll6bGtJajgrSUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWtGa2IySmxJRmhOVUNCRGIzSmxJRFV1Tmkxak1ERTBJRGM1TGpFMU5qYzVOeXdnTWpBeE5DOHdPQzh5TUMwd09UbzFNem93TWlBZ0lDQWdJQ0FnSWo0Z1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNGdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlnZUcxc2JuTTZlRzF3UFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIaHRiRzV6T25Cb2IzUnZjMmh2Y0QwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOXdhRzkwYjNOb2IzQXZNUzR3THlJZ2VHMXNibk02ZUcxd1RVMDlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl0YlM4aUlIaHRiRzV6T25OMFVtVm1QU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2YzFSNWNHVXZVbVZ6YjNWeVkyVlNaV1lqSWlCNGJYQTZRM0psWVhSdmNsUnZiMnc5SWtGa2IySmxJRkJvYjNSdmMyaHZjQ0JEUXlBeU1ERTBJQ2hOWVdOcGJuUnZjMmdwSWlCNGJYQTZRM0psWVhSbFJHRjBaVDBpTWpBeE5pMHhNaTB6TUZReE5Eb3pNem93T0Nzd09Eb3dNQ0lnZUcxd09rMXZaR2xtZVVSaGRHVTlJakl3TVRZdE1USXRNekJVTURjNk16RTZOVGtyTURnNk1EQWlJSGh0Y0RwTlpYUmhaR0YwWVVSaGRHVTlJakl3TVRZdE1USXRNekJVTURjNk16RTZOVGtyTURnNk1EQWlJR1JqT21admNtMWhkRDBpYVcxaFoyVXZjRzVuSWlCd2FHOTBiM05vYjNBNlNHbHpkRzl5ZVQwaU1qQXhOaTB4TWkwek1GUXhOVG96TURveU55c3dPRG93TUNZamVEazc1cGFINUx1MklPYWNxdWFnaCttaW1DMHhJT1czc3VhSmsrVzhnQ1lqZUVFN0lpQjRiWEJOVFRwSmJuTjBZVzVqWlVsRVBTSjRiWEF1YVdsa09qSkZOekZDUmtaRFF6WTNSakV4UlRZNU56aEVRVGxEUWtJMk5EWXpSamt3SWlCNGJYQk5UVHBFYjJOMWJXVnVkRWxFUFNKNGJYQXVaR2xrT2pKRk56RkNSa1pFUXpZM1JqRXhSVFk1TnpoRVFUbERRa0kyTkRZelJqa3dJajRnUEhodGNFMU5Pa1JsY21sMlpXUkdjbTl0SUhOMFVtVm1PbWx1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2TWtVM01VSkdSa0ZETmpkR01URkZOamszT0VSQk9VTkNRalkwTmpOR09UQWlJSE4wVW1WbU9tUnZZM1Z0Wlc1MFNVUTlJbmh0Y0M1a2FXUTZNa1UzTVVKR1JrSkROamRHTVRGRk5qazNPRVJCT1VOQ1FqWTBOak5HT1RBaUx6NGdQQzl5WkdZNlJHVnpZM0pwY0hScGIyNCtJRHd2Y21SbU9sSkVSajRnUEM5NE9uaHRjRzFsZEdFK0lEdy9lSEJoWTJ0bGRDQmxibVE5SW5JaVB6NDc3SlhGQUFBQVlGQk1WRVgvLy84RVZxSVhaYXZHMk9vcWNMRzJ6T09rd3QwQlNKdHFsY1hWNHUrYXV0bFdoYnprN1BVQU1ZOUhjcktqdE5icThmZUFsOGFCb3N6ejl2cGRqc0dHcXRGM244dVRzTlNacGM2SnNOVDUrdjB4WUtudThQZmY1L0w0OGZnL2ZyaWN6SmdZQUFBREFFbEVRVlI0MmtSVUNaYkRJQWpGWFpPWTFUYXROYzM5Ynprc1NZYzNyNE1FNGZNQkFhRDZ6bDh5LzlUT2dldDhkNWpmTjc4YndNL2REQ1JwUjUyMXpYZm9qSEowNUlJeWhCQVVTVkFPTmRHekJZdDJmN0tGcmZrSmFBa0hoOUZaaGNEWEhSa1RLbzlNTGloR2FhdkltblYzcXlFWDBFcHJnei80RHdVRDdrQ0hSbmQ4UUZONDNHbzRVVm1ERGd6YTR3MjdvaXpkQTIrY0srdXVVcGpqbzIreHdjLzQyVzUweDVMR1llREJzUjBIVkl4NXg4aUY2MENibGJURUVrRnIyN2JOREJVVlNxMU9LVlBiRTYyYjNFSDhGcUJnNU9PT0V1YzJ0OFpKaXFNT3VHcCtjS2pnN3dWR2Nlb3pxTjRweGdWUFFrakZZZ2JWSktEVWhEQ2pZcmF3UDVxNEVUZ0M5ZklNUkh0aXRwUWNDdkpPRUxjYk1zUWduY2lSa2xqcHlRanZHNDRqcUJVRVRGaUJpMVBFSXlla096c1crVHk1Y0xIb3M1UitkTVMxTHRTU3hmM2dRSGN6UjJDSTRnTU5wVzRJUkExUU1hNnRKNCtDNnVIdUdFOG1OREl5RnFnL09QL01NVXVlUzZJcThTOTBkQWVCSlNFeS9xS2tLK0JOd3o4Y1lZNGpiNUo2dTRpV0NJMkIxWjU2TFc1a0VjNGhrZE1wc3ZVQzU1ODVTWDBRdWJjZ05xeWZnREZFY1R0KzQwLzBTNU54MHdhQ3czT0trY09iQTVJbjBBWXAwMXBqancybjYyNlVEanRId2EyOGlIdVRLcXRydityZVc0MU5aNmlHbHI3dXVMSkNma0Z0Y3RjRzA0c2dtMWVOUytaYURucGFURXJHb3lYNUpLMmlNejh4czBuT3dXR2NQRE40OXFhQ2Q0YnpKb3pEWm0vYUJLK0Vvekx3K1hoTkJpWXdIZjBzaU91MVhQa0cvekt3dnFZS2NmU3dERWNIL29VZTA3ZXMvV1E4ckl5ZzJET1hqOHRqa1pkdURCL2I4aHpEbGxNTU9DUzVCRW5kNTM0Zjh0aTNVWmM0a01zM3hMeWFmTVNzSmhkRzhYUHFqTms1dEFnTzI1ZmVLQ2huVmREai9KMEZNa09zVS94TUJ2MHdGaFllRUdmVkgxM2Z1RFUweURGTGE0ZmM3Um5XSEJmdVRGVjJ0RW1Od2FkYzdhYzNVWTJqZkJsN0hUMzZmZTM0aVFPNW1OQ0ZGQlcwN0tqUGdxaE9MVTAxdlo4UHVlWjJKQ2xGWk44amtVczY5dWthOWVQcDYrRWZMNEFGNStOeXdTYmlySHRjQjhNbC9na3dBRWprSzY0S2pIUGVBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMSIsIkZJRE9fMl8xX1BSRSJdLCJleHRlbnNpb25zIjpbImNyZWRCbG9iIiwiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsImxhcmdlQmxvYktleSIsIm1pblBpbkxlbmd0aCJdLCJhYWd1aWQiOiI3OGJhMzk5M2Q3ODQ0ZjQ0OGQ2ZWNjMGE4YWQ1MjMwZSIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImxhcmdlQmxvYnMiOnRydWUsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjp0cnVlLCJhbHdheXNVdiI6ZmFsc2V9LCJtYXhNc2dTaXplIjoyMDQ4LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjYsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6OTYsInRyYW5zcG9ydHMiOlsibmZjIiwidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN31dLCJtYXhTZXJpYWxpemVkTGFyZ2VCbG9iQXJyYXkiOjEwMjQsIm1pblBJTkxlbmd0aCI6NCwibWF4Q3JlZEJsb2JMZW5ndGgiOjMyLCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6MywicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjEyOH19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTAzLTAzIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiZVBhc3MgRklETy1ORkMgU2VyaWVzIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNTAzMDMwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wMy0wMyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTA0LTA5In0seyJhYWd1aWQiOiI1N2Y3ZGU1NC1jODA3LTRlYWItYjFjNi0xYzliZTc5ODRlOTIiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjU3ZjdkZTU0LWM4MDctNGVhYi1iMWM2LTFjOWJlNzk4NGU5MiIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IDUgRklQUyBTZXJpZXMifSwiZGVzY3JpcHRpb24iOiJZdWJpS2V5IDUgRklQUyBTZXJpZXMiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2LCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH0seyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AzODRyMV9lY2RzYV9zaGEzODRfcmF3IiwiZWQyNTUxOV9lZGRzYV9zaGE1MTJfcmF3Iiwic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjgsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjgsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlEUnpDQ0FqR2dBd0lCQWdJVWV4OW5UOXZ3Wk5YUzQ4M0xkaVlHZncyU2pTb3dDd1lKS29aSWh2Y05BUUVMTUM0eExEQXFCZ05WQkFNTUkxbDFZbWxqYnlCQmRIUmxjM1JoZEdsdmJpQkpiblJsY20xbFpHbGhkR1VnUWlBeE1DQVhEVEkxTURnd01UQXdNREF3TUZvWUR6azVPVGt4TWpNeE1qTTFPVFU1V2pBbk1TVXdJd1lEVlFRRERCeFpkV0pwWTI4Z1JrbEVUeUJCZEhSbGMzUmhkR2x2YmlCQ01pQXhNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXUxTWV2bnk5ZHlPOVpVQzM5U29NaExjUi9EWHJ0Ri9jaU0xMnRjaXkyRVhBWjZNa3JpdlZ0Q2ZFVk05WDZJU1RFbkJQNnVTWVlvdjZwcHY2TzZKaDJOSG1ZbTR3K0puUzRWbkNQVTdtSEFNZlZJMk1HVFRNVk9ldzB4VXNHN3NJU0lrSURVQm11azhZSzljNXppYzkrdkZRR0xJa3NkWE81aVZGSWdORzUzY0dYRDRaTFpvQVBpdTBQRW96eEFxWUlhSTRneEtoT0EzUzgvVzhtSVdzdTZvZnlqNEd2a0ZHNlo3a3lGMzEwN1A3bXdGSExySTNFTmFQV01PRmNUYUdhMGR3Ky92VlJ3alJjRVpCVnN1dVQvODdja1NzMGE1cGt0M3ZaQmxhWWVUOHB6U3JlVjdtb3djSU05MEwyaWFBVGxQMG54bWFFNm5PeVRib2pGVmwyd0lEQVFBQm8yWXdaREFkQmdOVkhRNEVGZ1FVU1hFaDNzYTNidER1cm00TU0vQzdTMWxSdXVZd0h3WURWUjBqQkJnd0ZvQVU2cmRDa0o0TWUyUjYyMVI4QTdwOFRwL1lvV0V3RWdZRFZSMFRBUUgvQkFnd0JnRUIvd0lCQURBT0JnTlZIUThCQWY4RUJBTUNBWVl3Q3dZSktvWklodmNOQVFFTEE0SUJBUUI1R2MzaGFmdHA3aEtzRVpzbytpL1o1blJ1cWRtekcyV0NsVW9SVXFiYVB5Z2xuSkRqS1Iva2ZnT2w2aWJiRi96dGhtM0ttWFE3SGNESVAyeE1kRzdVMkwyaW1iSlFIcVBmL2gySHFvamI0clpndWUrNlc0a3RTUjVlbFI5TDFyWXFFL1NHWU00aUVLb1ZRU3Y3UlQxcnhJZVdpS3N3L1Z4eGkvUU9uc3gzRjd4ODBDQ1lnQjRFM3lReDhWVFc0NDBoVEV3VEExZU1IT2l4MzJ0UHR5eUhJYThQVlZJZlZwSFFKQmFNVnZ2NTA4VUVqd2tiVTJybmpmem9TVE5TOUE1alVROG1CU3ZlOTVyakIwZG85OEVVK0R4ZEJxWDIrSDZpNXdsSUNGZ3poZHpjc25lOWhHS1Q2bHpUWDRjSWRKc3JZMit4bGVLMEZGUXk2bEdFVkxFZSIsIk1JSURQakNDQWlhZ0F3SUJBZ0lVWHplaUVESkVPVHQxNEY1bjBvNlpmL2JCd2lVd0RRWUpLb1pJaHZjTkFRRU5CUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTVo2L1R4TThySVQrRWFvUHZHODFvbnRNT28vMm1RMlJCd0pIUzBRWmN4VmFOWHZsMTJMVWhCWjVMbWlCU2NJWmQxUm54MW9kNTg1aCsvZGhLN2hFbTdKQUFMa0tLdHMxZk81M0tHTkxadWp6NWgzd0duY3I0aHlLRjBHNzRiL1UzSzloRTVtR05ENnpxWWNoQ1JBSGZyWU1ZUkRGNFlMMFg0RDVuR2R4dnBwQXk2bmtFbXRXbU1ud08zaTBUQXVjc3JiRTQ4NUh2R000cjBWcGdWZEpwdmdRamlUSkNUSXErRDM1aHd0VDhRREl2K25HdnBjeWk1d2NJZkNrenlDaW1KdWtoWXk2S29xTk1LUUVkcE5pU092V3lETVRNdDFid0N2RXpwdzkxdSttc1V0NHJqMGVmbk85czBaT3dkd01SRG5INHhnVWw1Wkx3cnJQa2ZDMS8wQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQjhHQTFVZEl3UVlNQmFBRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRTXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJEUVVBQTRJQkFRQzNJVy9zZ0I5cFo4YXBKTmp4dUdvWCtGa0lMa3Mwd01OcmRYTC9jb1V2c3JoenN2bDZtZVBNcmJHSkJ5SjFYbnF1QjVzZ2NSRU5GeGRRRm1hM21pbzhVcGYxb3dNMVpyZVhySjBtQURHMkJwbHFiSm54aXlZYStSMTFyZUlGVFdlSWhNTmNaS3NEWnJGQXlQdUZqQ1dTUXZKbU5XZTltRlJZRmdOaFhKS2tYSWI1SDFYZ0VEbHdpZWRZUk03Vm9sQk5sbGQ2cFJGS2xYOHVzdDZPVE1PZUFEbDJ4TkYwbTFMVGhTZGV1WHZEeUMxZzkrSUxmejNTNk9JWWdjM2lyb1JjRkQzNTRnN3JLZnU2N3FGQXc5Z0M0eWkweEJUUHJZOTVyaDQvSHFhVVlDQS9MOGxkUms2SDdYazM1RCtXVnBtcTJTaC94VDVIaUZ1aGY0d0piMGJLIiwiTUlJRFNqQ0NBaktnQXdJQkFnSVVUbmJiR0lSMk5IdnpxSUtGQWVRd0cxWEJpczB3RFFZSktvWklodmNOQVFFTEJRQXdMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3SUJjTk1qUXhNakF4TURBd01EQXdXaGdQT1RrNU9URXlNekV5TXpVNU5UbGFNQ1l4SkRBaUJnTlZCQU1NRzFsMVltbGpieUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRUVnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBT3NYajNrMDRCYW40VFlkdFpLcUQvT1BKeHlEeWFQbUNCVUZVaWFaSWdUdGVabmozWDI1RGhncFpaWHNDNEQweWRJY3JsQTZ3TlVJbk9STC9MOXpCYlRFSU1BVk1HbzZnN1VLQW1iMk1GNkFIYm5oWUpkOWVpa3VwVk5XU2hITllOYzRHQmRPMVlONkFmVXF2SmhIYmUzVjRTTk1QbUJSRUtKUFZ6N1Rod2dtZ2dUZThXczJLMC93c3F2MndTRTdwYkNCc1VaaElYNTFiWk0zcHFEd0pQVG1SRkV2dDAvNnRHNWVPOEYzajE0T1hxZkVobWpuMVZ2eEtEWVFPTFpBeEN3d2dDMFA0Q2RmV3YzeThQU1I4STM1NGhPMVkrR3pOanZJcVgzOE5LTHl3dUlZSEZlck94Tmx4RU1CdkZoWUJ1UnVZQWtrZ1VhUHFONlVCaHNJTHJzQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZDQ29SSGhpeU5uYm5YUldJTDZaQlhvQlg5WVRNQjhHQTFVZEl3UVlNQmFBRkNBb1VDRWJwRnBiNkZQTG5aM0Y1UHhzTDNvZk1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQ1FGYWZKSTEvNVdnOUNFRWltRTFSUDU0UmdRd1ROVE9PUXNMQUNUZStySXRsRlF6QzlaRGhyVjgyOHlYN2p6eStBQXNwM2l6SzdUMXRoMmRsN20rdHUwc3cyUGEvb2xjMDJudDZQeUl3MzQ4Z2FIemhJMSswS0U0NXF4dkZEZUwybE14YlBmQ1l2eUVFYVl6amlRRUxVNTk1MXBYR1d5S01hLzRmTHRPK1pLT1hoTXVWZXE0clhEUEk1NFc2SkhPaUFhaUtkaXcrNWUzYzJrdC9qRklRdE02dk1YZzlMTkZ6ZGpFVE50MjBWWDlRZXZScEZaZnVjTUc5d0NhUURvRmxQenBUTUpLaFBldi9pbUptWlloS2ZyMGxMY2VtdHFqSXhMQW9xWmRPWWZIQmc2K3ZBY2RQSS9pYXVHcFVBdjdYK1VLTm1Ed2paMkJhSDRzTHdoQjJtIiwiTUlJRFNEQ0NBakNnQXdJQkFnSVVEcUVSdys0Um5HU2dneGdVZXdKRkVQRFJaM1l3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRREk3WG5IK1p2RHdNQ1FVOE04WmVWNXFzY3VibHZWWWFhUnQzWWJheG45Z29kTHg1c3dIMGxYcmRnamg1aDdGcFZnQ2dZWVg3RTRibDF2YnpVTGVtck1XVDhOM1dNR1VlOFFBSmJCZWlvVjdXL0UraFRaUC8wU0tKVmEzZXdLQm82VUxlTW5mUVpEclZPUkFrOHdUTHEydjVMbGo1dk1qN0p0T290S2E5SjduSFM4a0xtelhYU2FqMFN3RVBoNU9BWlVUTlY0enMxYnZvVEFRUVdyTDQvSjlRdUt0NldDRkU1blVOaVJRY0ViVkY4bWxxSzJieDJ6Nm9rVmx0eURWTEN4WWJwVVRFTHZZMXVzUjNEVEdQVW9JQ2xPbTRjcnB3bkRSTFZIdmpZZVBHQkIvL3BFeXp4QS9nY1NjeGp3YUgxWlV3OWJuU2JIeXVyS3FiVGExS3ZqQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJUcXQwS1FuZ3g3WkhyYlZId0R1bnhPbjlpaFlUQWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQXFRYUNXTXhUR3FWVlg3U2s3a2tKbVV1ZVRTWUt1VTYrS0JCU2d3SVJubHc5SzdIZTFJcHhaMGhkd3BQTmlrS2ptY3lGZ0ZQemhJbXdISmd4eHVUOTBQdzN2WU9kY0pKTmt0RGczNVBYT2Z6U24xNWNGQXgxUk8wbVBUbUliOGRYaUVXT3B6b1h2ZHdYRE00MVphQ0RZTVQ3dzRJUXRNeXZFN3hVQlpxMmJqdEFucS9ORFVBN2JlNEg4SDNpcEMrLytOS2xVcmNVaCtqNDhLNjdXSTB1MW02RmVRdWVCQTduMDZqODI1cnFEcXNhTHM5VGI3S0FIQXc4UG1yV2FOUEcya2pLZXJ4UEVmZWNpdmxGYXdwMlJXWnZ4clZ0bjNUVjJTQnh5Q0pDa1hzTkQwNWRDRXJWSFNKSXMrQmR0VFZOWTlBd3R5UG1ueWIwdjRtU1R6dldkdz09IiwiTUlJRFNqQ0NBaktnQXdJQkFnSVVSMzhtcTI2U2Yyc3pWVjJCZEc2V0VON2t1V1V3RFFZSktvWklodmNOQVFFTEJRQXdMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3SUJjTk1qUXhNakF4TURBd01EQXdXaGdQT1RrNU9URXlNekV5TXpVNU5UbGFNQ1l4SkRBaUJnTlZCQU1NRzFsMVltbGpieUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRUlnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTlkwV2I5b1BvUm9Lb1F5V1BhSnB6MTF2cldUZzZ6VHRtTmoyVm9LUm55dktHUnFwemI4M3c1bDZZQTk2VVlrWUJEUVAwaWxPMkRQZTZ3V3FWUjV6RGZSemRjSDhiaCtMN2RHR3ZhZTZoUlRaaGtGa0NwWERzNEhjY2tuckRmOEZDbEo3SGUzOUpmNDIvRzFRbTJ6ejlXV21yUFh0Z2lLL3gwNUdqc1FmR3VERzF6ZjVRVFVVaWU4bHd5bUszVGZkT3ZOZWVKQUFQZTJwbjdJdGZSYityVnJOV2lEemxSbjJ2Tm5aMndQbzR3SC9XSjZkaFhaRytyTVdUK2E2Qm9jZzFVZkl3NmtkdW5HNGJUcFp6c3ZhY0ZZeVIwbXBmK0RlT25wU1dBbXl3SldIdlRsZjJZWHhGeWVYY1RBQ2RRbGNNTkdKMlZoWlE0OHh0UDUvUkJQLzhrQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZDaHk0Mm9raXFjVFMxaXFhL0hSV2prQm40SC9NQjhHQTFVZEl3UVlNQmFBRk9xM1FwQ2VESHRrZXR0VWZBTzZmRTZmMktGaE1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQW4rUkhJUGJ0TUVETmRUMWc4SC9SaXRBa1VkTGdBdDF0V0dXbmxqOWtuYnY0LzRHbFg3QzlwNDVlZlBPOS9hWkw2T1YxWFJLQmk2S210Qlc1SzdudVlFbk14LzVCcUJTYkxUN3JoZHVDNDlUQmVNYjlQSGRYc1RsU1ZOWWVmcjFkR2lkcjRqMHhWQlFMYjFya25EQWJkV0R6S2Z2bmF5S084RnJ3ZTdIeDg0M01HL3JKK2MwWHJ1VXZiZlZUQ0hMaUlXaE03b05EaEw4eG9iNnhVbzlLTEtjU0wrSXRZc08zLzlXYjhROUdqc3FMNEZYc0RjRzFTYVloN0twZnVNbU9peHF6SlpPMm5JaWNQWVJnMUkyU3VpVWZZTzcwdG1kSGNibCtrU1FtU1l0N3JxNHZpSUxnMkd4M2o5cklUdVdUamJhVWFTU1F4Z09tTVNIdXl6TUFDIiwiTUlJRFNEQ0NBakNnQXdJQkFnSVVVY21NWHpSSUZPZ0dUSzBUYjNnRXVaWVprQkl3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRRG01NTViV1k5V1crdE9ZMHJJV0hsZGgrYU5hbm9DWkNGaDdHazNZWnJRbVBVdzBoa1NHNnFZSFF0UCtmWnlTMzNWRXJ2ZytCUXFubXVtZ05oZnhGcmt3RVpFTGVpZEJjQzhDNEFnNG5xcWlQV3B6c3ZJMTdOY3hZbEluTE5MRmNaWS8rZ09pTjZaT1RpaE81L3ZCWk1iajlyaWFBY3FsaVltTkdKUGdUY01HYUVBeU16RU1OeTJubTZFcCtwalA1YUY2Z2kyMXQvVVFGc3VKMWoyUmoveW5NL1NkUnQrZWNhbDVPWW90eEhrRmJMOXZ2djJBMk92NUlUWkNsdzRiT1M5bnB5cFFpbU9aNVFBWXl0bVlhUXBXbC9wTVl6NnpTajhScWtWRE5FSkdxTmZUS0EyaXZMWXdYNmxTdHRNUGFwZzBKODRsOVgwdm9WTi9GcFM0VkNWQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJRZ0tGQWhHNlJhVytoVHk1MmR4ZVQ4YkM5Nkh6QWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQVlNemdMckpMSXIwT292UW5BWnJSSUd1YWJpSFNVS1NtYkxSV3BSa1dlQXRzQ2hERUhwWGNKL2JnRE5LWVdvSHFROHhSVWpCNEN5ZXBZZXZjM1lsckc4bzd6SHhwZlZjYW9MNVNldUprekh4S240YlRhU3A5K012d2FtbnA2NGtaTWlOYkZMa25mUDlrWUtvUkhrTVdoZVJKMVVzUDF6NFNjbWtDZUlMZnNNczZ2cW92cWpXQ2xGc0pwQmNzbHVZSFdGN2JCSjFuNFJ3ZytBVEVvcFk0SWdHdjZadndjK0E5citBVDJocXBvU2tZb0FsK0FOWXdnc2xPZjlzSmUwVitUQTlZWS9VbGFCbVBQVGQwLy9yOXd2Y2VQV1prUGpLb0FDL3pVTmhmRGJoNExWOEdIczNseVgyWG9tTC9MTmM4Sll6eUlhREVoR1F2ZW9QaGgvdHIxZz09Il0sImljb24iOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJpY29uRGFyayI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsInByb3ZpZGVyTG9nb0xpZ2h0IjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwicHJvdmlkZXJMb2dvRGFyayI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIkZJRE9fMl8wIiwiRklET18yXzFfUFJFIiwiRklET18yXzEiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwibGFyZ2VCbG9iS2V5IiwiY3JlZEJsb2IiLCJtaW5QaW5MZW5ndGgiXSwiYWFndWlkIjoiNTdmN2RlNTRjODA3NGVhYmIxYzYxYzliZTc5ODRlOTIiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJsYXJnZUJsb2JzIjp0cnVlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6ZmFsc2UsImFsd2F5c1V2Ijp0cnVlfSwibWF4TXNnU2l6ZSI6MTUzNiwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0Ijo4LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjEyOCwidHJhbnNwb3J0cyI6WyJ1c2IiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotOH0seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTM1fV0sIm1heFNlcmlhbGl6ZWRMYXJnZUJsb2JBcnJheSI6NDA5NiwibWluUElOTGVuZ3RoIjo4LCJmaXJtd2FyZVZlcnNpb24iOjMyOTQ3NiwibWF4Q3JlZEJsb2JMZW5ndGgiOjMyLCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6MSwiY2VydGlmaWNhdGlvbnMiOnsiRklQUy1DTVZQLTMiOjIsIkZJUFMtQ01WUC0zLVBIWSI6M30sInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjoxMDB9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMi0yMSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzYsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWXViaUtleSA1IEZJUFMgU2VyaWVzIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNDEyMjEwMDMiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMi0yMSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzZ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDEtMTAifSx7ImFhZ3VpZCI6ImJiNDA1MjY1LTQwY2YtNDExNS05M2U1LWEzMzJjMTk2OGQ4YyIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiYmI0MDUyNjUtNDBjZi00MTE1LTkzZTUtYTMzMmMxOTY4ZDhjIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IklELU9uZSBDYXJkIn0sImRlc2NyaXB0aW9uIjoiSUQtT25lIENhcmQiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MTY3NzcyMTYsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfSx7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDUyMXIxX2VjZHNhX3NoYTUxMl9yYXciLCJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyIsInNlY3AzODRyMV9lY2RzYV9zaGEzODRfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDMnpDQ0FqMmdBd0lCQWdJRTZyUUFBVEFLQmdncWhrak9QUVFEQkRDQmtURUxNQWtHQTFVRUJoTUNWVk14Q3pBSkJnTlZCQWdNQWxaQk1ROHdEUVlEVlFRSERBWlNaWE4wYjI0eExUQXJCZ05WQkFvTUpFbEVSVTFKUVNCSlpHVnVkR2wwZVNCaGJtUWdVMlZqZFhKcGRIa2dWVk5CSUV4TVF6RTFNRE1HQTFVRUF3d3NTVVJGVFVsQklFbGtaVzUwYVhSNUlHRnVaQ0JUWldOMWNtbDBlU0JWVTBFZ1RFeERJRkp2YjNRZ1EwRXdJQmNOTWpRd056STBNakUxT1RVNVdoZ1BNakEyTkRBM01qUXlNVFU1TlRsYU1JR1JNUXN3Q1FZRFZRUUdFd0pWVXpFTE1Ba0dBMVVFQ0F3Q1ZrRXhEekFOQmdOVkJBY01CbEpsYzNSdmJqRXRNQ3NHQTFVRUNnd2tTVVJGVFVsQklFbGtaVzUwYVhSNUlHRnVaQ0JUWldOMWNtbDBlU0JWVTBFZ1RFeERNVFV3TXdZRFZRUUREQ3hKUkVWTlNVRWdTV1JsYm5ScGRIa2dZVzVrSUZObFkzVnlhWFI1SUZWVFFTQk1URU1nVW05dmRDQkRRVENCbXpBUUJnY3Foa2pPUFFJQkJnVXJnUVFBSXdPQmhnQUVBSlhFMkxBbGRpOGJzQ3ZFT1R5dnROLzhFZ0QwcVVHVWVwTmRqOXFhbndkYWV6TnlWSDFNTDNwb3JhSVNpV05oSHFUeTJuU0lzTTlvRldxendlakJYUHgrQVVacitjbkZHSVZzQ2NqNGtYNmhTVUszSnpxOWtKaGxKdTUveG1ZVUNsYyticS9DK3pUcVo2Sjc4WExvWEhybzNudGNSNlNGUGxxOGdxTm9hVFgxNkdJaW96d3dPakFkQmdOVkhRNEVGZ1FVTzFZNVM5Mm9FazE3MVFCY2ltK0JpQkhLZE1Nd0N3WURWUjBQQkFRREFnRC9NQXdHQTFVZEV3UUZNQU1CQWY4d0NnWUlLb1pJemowRUF3UURnWXNBTUlHSEFrRUdNdzhjWEJJenBtQmFYTHExYkZzTGl1QTh0VmNGSU94ajNvMmEwM2U5c3Jza0NtTFowcDJNWXFNZ1QxSXBWVGFUVXJqU2dIaW5nUmZmc1lQZittbmNxQUpDQUlsMldydGd4VlFNQVd3ZCtlL1hDUitVWjVrcG1QaHBHNWpkZWZobktITmhIMjBjV21uYS9LNjZJeThYNnBxNllTNW5OUWdXaEszdEJQZjU3Q1V0a0RKbiIsIk1JSUMzakNDQWorZ0F3SUJBZ0lHQU9xMEFBQUNNQW9HQ0NxR1NNNDlCQU1FTUlHUk1Rc3dDUVlEVlFRR0V3SlZVekVMTUFrR0ExVUVDQXdDVmtFeER6QU5CZ05WQkFjTUJsSmxjM1J2YmpFdE1Dc0dBMVVFQ2d3a1NVUkZUVWxCSUVsa1pXNTBhWFI1SUdGdVpDQlRaV04xY21sMGVTQlZVMEVnVEV4RE1UVXdNd1lEVlFRRERDeEpSRVZOU1VFZ1NXUmxiblJwZEhrZ1lXNWtJRk5sWTNWeWFYUjVJRlZUUVNCTVRFTWdVbTl2ZENCRFFUQWdGdzB5TkRBNU1UZ3lNakF3TURCYUdBOHlNRFkwTURreE9USXhOVGsxT1Zvd2daRXhDekFKQmdOVkJBWVRBbFZUTVFzd0NRWURWUVFJREFKV1FURVBNQTBHQTFVRUJ3d0dVbVZ6ZEc5dU1TMHdLd1lEVlFRS0RDUkpSRVZOU1VFZ1NXUmxiblJwZEhrZ1lXNWtJRk5sWTNWeWFYUjVJRlZUUVNCTVRFTXhOVEF6QmdOVkJBTU1MRWxFUlUxSlFTQkpaR1Z1ZEdsMGVTQmhibVFnVTJWamRYSnBkSGtnVlZOQklFeE1ReUJTYjI5MElFTkJNSUdiTUJBR0J5cUdTTTQ5QWdFR0JTdUJCQUFqQTRHR0FBUUFsY1RZc0NWMkx4dXdLOFE1UEsrMDMvd1NBUFNwUVpSNmsxMlAycHFmQjFwN00zSlVmVXd2ZW1pdG9oS0pZMkVlcFBMYWRJaXd6MmdWYXJQQjZNRmMvSDRCUm12NXljVVloV3dKeVBpUmZxRkpRcmNuT3IyUW1HVW03bi9HWmhRS1Z6NXVyOEw3Tk9wbm9udnhjdWhjZXVqZWUxeEhwSVUrV3J5Q28yaHBOZlhvWWlLalBEQTZNQjBHQTFVZERnUVdCQlE3VmpsTDNhZ1NUWHZWQUZ5S2I0R0lFY3Awd3pBTEJnTlZIUThFQkFNQ0FQOHdEQVlEVlIwVEJBVXdBd0VCL3pBS0JnZ3Foa2pPUFFRREJBT0JqQUF3Z1lnQ1FnRStmYmJKRmNYaUZnUVpiWnIzeFFkVVdTbmdnMWhOcmtIRkhoNVE2UkVIWEhFWGF5eCtJbWYwMGlQb05wQUU2YzltQ1NUVmVXQnNHT3FEUzRCMzZSVlFvUUpDQWJYd01EK2wxRi9Mc3hSQmU0KzBNSGh3cjIwdjZoa20rczJLT1ZVcjJuK0lBejJjZ2hDQ2xMT1RkWFh2UUdsNDY1M1hYM3Z3WDlWcGd5UlNVVDF0aGlleCJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFESUFBQUF5Q0FJQUFBQ1JYUi9tQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUZpVUFBQllsQVVsU0pQQUFBQW9yU1VSQlZGaEh6VmhwY0ZQWEdkWHlubVF0WGlYTCswSWFzTUhHT3dZYkVsSktnRWtDQWFZTTAweWJNbWxMS0FOaG44bkNaZ2dwNUEvVWhJNHpoTkRTYVdjS0pHeUZNS0dCTkhIeGdvMXRHYk1iYi9LK3lKWWxXY3VUMUhOMWhWQmtXOUlQWW5MRzR6bnYzaXZkODc3dGZsZDhoOFBCRzRYR2UxMTFsWnJlem1IT1p1ZnpYWU5QRXc0ZXd3cGpFa0t5WnlYRkp5bGNneDd3bG5YODhIZkhEMTAzNmkwU0tTc1FDbjRVVFU1Z1d4dG5IekZhSTFUUzlUdCt2bVJscm12Q2lTZXlCclhESythVUdIVFc0RkF4Qk5IQkNZRE5aaC9zTnlaUGlUajUzelU4bnBBT3VtUjF0dmN2U2k5V3hRVER0blJpZ21FMmNVYWp1YlI1R3lNVTQ1SEtzczlPM2krVGlZWE14QmxwTkN4bVRoYk1ucit4RVp6bytHRHRhU0h3VERVQklqSFQyMlU0ZnZnYU9OOWdNTXhPL0RncU5vVC80NFYzd0xEYkhickJrYksyRHdRWFQ2bGw4cUNmZ2laQUlPRGI3YnpLNys4THA4UXM3R3pUUFhNUFBvSERFYTZTQ2pvMXVzRExBWXlNZk1ZZnpWLzg5M3gwTHdEb28rT0g2d01CeEhScGhnUldDeGVnQTdFbGtnVVZWaXhtZUh5U3dwelZMZ0FRQWM1SExCQUt5YVBEd1NkUzdBNUVNWjZ4eERUQ0JhZ01YMld4WUJkZVFLTHdwVDJkdXJQbDZ5L1hiNzVRdldGNGNNUnFzVDJYb3J5czNvUVJoVXFHa20wWU5tL1pzeENQWDkvYXJPMHpjSnc5UGpuOHNub3oxaXg5SThlZ043dSt5eC80ZUJFWDlRZlRpUFcxbFJtaEVSTHdOVXRQaUlNWW1HcDZYanlkZlhTdkYzWmlSY0p2djdwRFI4SVVVcUdRWDFuYVZQYk5Renh1TEpwdjQ0ZzU2YXhmQ0FKWkNGUDE5eGlMaXBlQk56L3NxeWg5SkE1aXJWWXVMVE1PSTIyUCtxMVdHMS9BWjFoQlExMkg4eE84eWRPaVlLMEloYXhvNDNrNjhzZDNYOUxyVEpUN2d6MGdhK0hrL3UyNkFvR1F1SHY3MjJjVWtUS1FFWU0xdHpBWlJGMmxFWWtZRUJpc28yVUlCRWpQam9OV0pQamdnUEdyTCtveDhwdTFoZmk4T3h0OHdjRkRiUGtCaVhRTHQzWGZJdkRxMHBZNzlSMnNpTUdnUERnb1ZFRjhXbjI5RmU0RFFiUWl6aC9lN2diUG1aV000QU1KQ1pmczMzWUpCTmg1YU1uZ3dBamx2dUhmaWJEODZzMHZVYjVueTdrSUpURVZ4OWxTTTZMcDRPMmI3ZXpqQXg1bVU5L1FnR1RPVElBNVFXQkNLMmY3UjBrWitJSmw2UXFsSE00bFMzM0NqeFB0Tmp1Kzk2M05jOEN2bkd2b2F0UFJGb096MkxObUpqaVg4TzdXZHdsWjEvZkFiRFVWclNBU0dhdFV5ZkJ4OE9EUW9FLzJYWFhPODNZWHY0NGtwZHdIL01nYUdqUnQreE54SDdCbnc0VXdaeVlDY0N0Tnc1WUhBNHpvU1pXQjJXckxpU3hnYW1Zc05ReEtGN0xoNEk0cjRQbHpKMDFKaTZMKzlRRmZzbEFTWlRMUjRwVlo0Q2MvcjBUMXB1Y0IvTTVaYkhBVGVFMUZVNUNFSmF1ZFFJeTNOZzFRbnBtZjRONWVKaGVmT0ZKS2VkSGhwZjA5dzVTUEIxK3l0SDNHUFVkSVVRQU83YjRDWDFCT3luY1FFeG9tQmIrajdvSWw2RGdGcHU0M2RJRk16NHVEVWVrZ3NpRlVJZDIxL2l6NDVMU28zTUpKT0REbzFKZ1lWeGJTTzNteVl2Yjg1OEUvK2ZBYjJBbStvRk0yenBhU0ZrTjVUWG1MTzk0cFVHbnJiclNCWk9Rbm9PUzZ6eHdZOWNJL2F3ZTZTV0R0UDdvY2hjUEhjVFN1cklGZWZkR2ZsMUorNHNoMWVURHBaU21zMWlmeGprS0ZuS0NjQWlyVmxVU1dSQ0xDbjN0ckdDeE1LZDIxZ1JoTUdSMHk3N1ZwYUpUcDFHaU1MUXNXeGxWcFdrNHMrSjUzemlPdDhLVjBDc0JzVm40aVNQT0RQcFBKaXZwT3h5bmcwOXMxblpSbjVzRmdUNkliSi9mMXF3OWJHdnZCOS8xbEdXNFc0eGxzREZsWWlWcDE0TE5mZ3ZmMTZFK2ZxSkpJUlhRS2NQQWNOcXM5NzRVazhPclNaczk0cDREeE5DMWFXaHF5Q3hJUkRIUWN3THVGSzJUYlZwMEVSd2orWWVzTHVKRFJLUytNYVMwSFBxK01DZ2JyYU5IU3pvVk9FRGg0ZkFGNWIxQ0QzZ0krR3VnbTBNbUF5RVBGWHZiQUNZWjJpdkw0NUFna08rVmVHT05iSVNKSXl1NVlld1k4WTBaQy9weEpabytzb1JMVmxhU1U1eFltbVl6ZThZRnpLVG8rUkNvbkJxNHFiZlpLQ0dUMy9xUEVEOEJIV3kraWNGRHVoYkZqQzY3NTk3OXFCM3BKMW53MEttdkVFcmJxZjgwZ2FibHg2RjY4N0lIc1F3bWd2TGFpemZQaUNZZE9TbEVXT3JPN3VPZy9ySmcwalhUS0MyUExJa0dnbE8xY1J3d0dieTVZa2thZFFvR2RibFczVTY2S0NiSFpmaUFMZStjVWtNaURYTzJBM25OanZPZnVnNitEb0pQOWUwa1picVowZkRUR2xnVWdlc3F1TmlMWHdGR1gwWTY2cmNLeUF2Vk40a1FnTXovT005Y0FxNWxMenlYblVrTk51NUFSdXVNUytadGI0TXJ1dlpzdVNtVWlyeFQyeExpeXFNSGUrLzFwY0xHRWVXUE5US1BCNHA1Q3FxSU5CRS9OOEphRjVNcWVTY3BIWFVXYnlObndBSGlsL2g0OTRnSGNvRE9mL3VzTkZCMDZOU2JHbFFXZ0hiaC9wN3Vtb2dWOHk5NUZ3MW9UTlJoa01Zd0FjUU9PcVBlc2lxZ0xTaFZKWVFBZER1M0RBS3laOThyVXlLZ1E4QjNyemlpajVMN3ZFTDVrQVJHUnNxTDE1eWpmc0hPK2JzalY5Y0xGTkx4U00ySThreEdCbFQzTGRRRGNxbW1uOFk2WHdWMzV3eEp5dkdxYXROY3UzcVgxeFFmOHlHSVlZVWZiME5kZk5vQ3YyamhIeEFwcHBXSFFWejF1WUhCMG9sQlJqbk1KTllYeWp0WkJlaTZOR0N3cjNwb2hkZGFDOTkvK0lrSWxjd2ZjZVBBakM4QWQ1c0IyVjlmN3pzNlhkWVBFWUhEaTNWclhiU0k5S3c3OUorVVdFNWZ0UEM1cnl6V2lJSmVwVUhYZjNmOEtPSktnb2E1ZHhQb3hGZUJmRnQ3WU9HdzVkYXdLZlBtYk9hR2hFdGdHZ3ozZHcxWXpVWk16TzVFU0tBQlNzMGl1MWQxb0ZZbEpVT3QxNXRWYjU0SUFTQ0RjaFFLNW1QcVhCWVNFU1Q1KzMyV3dYWWNYYXdkSW1jVkpjTE9NK0hGNlhnTHRxK3cyaHpKYVRzdTZ1cW9WZFFRVkgwbXdlaHVSOWUybHUxMGRycDdiTHdLU2haSUlFU1VIeUM5UGhmTW14OGFGb3lnZ2JOWFZKQmxUcGtkakFlemt2SGU0K3JCN3Q3b1JsMFBha1UyN0Y5S1JBKzlkQ29zZ25XTWdDRWdXZ01QcjJNSHZLZi8wN0p0d0RYWnRxSEVWMWRqRU1KZ0thZmppTDFMb1NFK0hEclVrTGpGc3hlL3k4UGpsMzZxMS9jYkFmeGZpLzNwaFNiZEc3OVhLalFrMDVncVZQRG8yQk5XMXZyb2REZ0xTU0NUeG14LzJHZzFXSkduU3p4Um9HRkZSRysvMlFJUXFKaGhuRi9LdXZrcUR4L0ZPUUU5WXpMWVpMOGJ6VjcxNnRMMXBLTUQzZ0p0Z0ZSRFVTV3dHV2ZRU2dZaWhXOEs1a0lzcFdrZ2hsTllPOXdLL3dCbFZNQzlKb0l5U2VaMjFQZ0RISWFUd1J3c1AvdE5IOTViWUhvL3U0ZzRuZUMzd0M3eTJJa29tbUpvVjVkbEFQblBnbUVyTGpSWE1YNXhxR0RiREhhN2had3Fhem5NWFRoRWtKc2RtellwR29MbG1uaW1NZXV1cnYwb1ZzeklTdGhwTng5Szh6NVNSY2g4TjBBU0EzQUJNbHNzTjY2UkJ3U2pFOXZqNDJMMmZMdWhxSDBZU3VaWk1PSkN6ZlQyRzRsUExvQWt5VUJmNHlPcEZTL0wzSFZ1ZzB4b1JjUk1jWjlodXhHQTFteXdsRjVablpLVkFEQjlYTDV4WktEVzRGMkMrc2JHbHVPaWF1cndQRjNiY1F1SFR4MDU5dXM0bHI0MTNoMVZROW15Y3JXQkIzUHJ0ODFXUmtRS0d6d2pKVDlQT1g2cDVEanRuUjlSamtkbGlibnlncWZ5dXFmbUJWajlraHIrZHBudXE5bk1XUFpUQWtIRHg4MU9WTStjK2w1QVl3NHBZZE5pc21NRlZpc2ZqL3gveHFPY1BSZFN2YXdBQUFBQkpSVTVFcmtKZ2dnPT0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiJiYjQwNTI2NTQwY2Y0MTE1OTNlNWEzMzJjMTk2OGQ4YyIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOnRydWUsInVwIjp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwiZXAiOnRydWUsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImFsd2F5c1V2Ijp0cnVlfSwibWF4TXNnU2l6ZSI6MTI1MCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0IjoxNiwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoyMDgsInRyYW5zcG9ydHMiOlsibmZjIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN30seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTM1fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotMzZ9XSwibWluUElOTGVuZ3RoIjo0LCJmaXJtd2FyZVZlcnNpb24iOjE2Nzc3MjE2LCJyZW1haW5pbmdEaXNjb3ZlcmFibGVDcmVkZW50aWFscyI6NTF9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0wOS0wNiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxNjc3NzIxNiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJJRC1PbmUgQ2FyZCIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjQwOTA2MDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25Qcm9maWxlcyI6WyJlbnRlcnByaXNlIl0sImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMDktMDYiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MTY3NzcyMTZ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjQtMDktMjAifSx7ImFhZ3VpZCI6IjJkM2JlYzI2LTE1ZWUtNGY1ZC04OGIyLTUzNjIyNDkwMjcwYiIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiMmQzYmVjMjYtMTVlZS00ZjVkLTg4YjItNTM2MjI0OTAyNzBiIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkhJRCBDcmVzY2VuZG8gS2V5IFYyIn0sImRlc2NyaXB0aW9uIjoiSElEIENyZXNjZW5kbyBLZXkgVjIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzAsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDK3pDQ0FxR2dBd0lCQWdJVUlMd0c1NmVYTEsrbUtXcDQ2SG9YT1krYjZNMHdDZ1lJS29aSXpqMEVBd0l3YXpFTE1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBb01Da2hKUkNCSGJHOWlZV3d4SWpBZ0JnTlZCQXNNR1VGMWRHaGxiblJwWTJGMGIzSWdRWFIwWlhOMFlYUnBiMjR4SXpBaEJnTlZCQU1NR2taSlJFOGdRWFIwWlhOMFlYUnBiMjRnVW05dmRDQkRRU0F5TUI0WERUSXlNVEV3TkRJeE1UQXlOMW9YRFRRM01URXdOREl4TVRBeU4xb3daakVMTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFvTUNraEpSQ0JIYkc5aVlXd3hJakFnQmdOVkJBc01HVUYxZEdobGJuUnBZMkYwYjNJZ1FYUjBaWE4wWVhScGIyNHhIakFjQmdOVkJBTU1GVVpKUkU4Z1FYUjBaWE4wWVhScGIyNGdRMEVnTlRCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQkNIbktQc2pLTmRBczBTQ05nc1dsUzREY29iazdBN2xrelFEa01rYUxuTGU2aWJXOHIrN2szcm44SVVTbys1eE1NTHRJRUovc3ZKTWdCWld4VW9EeHNXamdnRW1NSUlCSWpBT0JnTlZIUThCQWY4RUJBTUNBWVl3RWdZRFZSMFRBUUgvQkFnd0JnRUIvd0lCQURBZkJnTlZIU01FR0RBV2dCUzc2RHBsOTN2QjJoNUZETHZ5TU12VUJ5ajNpekFkQmdOVkhRNEVGZ1FVRERPRERaZFRpUFdyV25qRGlNd3NaZ3lvZXp3d1JBWURWUjBmQkQwd096QTVvRGVnTllZemFIUjBjRG92TDJOeWJDNW9lV1J5WVc1MGFXUXVZMjl0TDBaSlJFOUJkSFJsYzNSaGRHbHZibEp2YjNSRFFUSXVZM0pzTUhZR0NDc0dBUVVGQndFQkJHb3dhREEvQmdnckJnRUZCUWN3QW9ZemFIUjBjRG92TDJOeWJDNW9lV1J5WVc1MGFXUXVZMjl0TDBaSlJFOUJkSFJsYzNSaGRHbHZibEp2YjNSRFFUSXVjRGRqTUNVR0NDc0dBUVVGQnpBQmhobG9kSFJ3T2k4dmIyTnpjQzVvZVdSeVlXNTBhV1F1WTI5dE1Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lCMjRMZTJ6dDdaL1cvUDl6RTlOZnF6Z1BaakJJcEtrMXF1cWdiWlk2Ni9GQWlFQXRzUlk1YnhhTjlNREtHYWVmYVRTNnpnTVZieFVsRXBEbjQ5QzZWU1dnbUU9Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQVZNQUFBQ3NDQVlBQUFERytFOE1BQUFBSUdOSVVrMEFBSG9sQUFDQWd3QUErZjhBQUlEcEFBQjFNQUFBNm1BQUFEcVlBQUFYYjVKZnhVWUFBQUFKY0VoWmN3QUFEMkFBQUE5Z0FYcDRSWTBBQUF5Z1NVUkJWSGhlN1oxL2JKVGxIY0J2amhqTmNDNE8rZFhlWFZ0VVRNemlQN29ZWFpZNTFJa0tkMWZObkZIajVvaEJtQTdqMk1Sc1pvbG14aGhOSm9ydDI0S2dzaUZzaW03VEFkTVlSRlFFRlRjVnh3L3J3QUVGUkNoUSt1dWVQYy8xcVFQM1ROcyszM3ZldSt2bmszelM0MmdmbnZlOXQ1OCs3NzNYSXdFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBVUVwa0c2L1hQcG5JUlI4Z0loNXQ0MXI5Y1lhdEJmd1A5UTNuNngyMFRadFAxRGNwUk1UUE5kZVUxNHV1VnQyTXEyMUZCa3h0TWptckxwVnEwUjgzMTFaWDMycnZMbU1LUDIzMGpxbVAzRHNORWZIenpFVzdFeGZPR1dtTDhvV2trOGtmMXFYU1BYWFZxYVhKVWFQT3FLbXFPck11bWZwcmJUTFZuVXFsTHJlZlZrWk1tUDExL1pPbHc3bHpFQkVIb2ptcnpVWlRiVjMrTDNWangwNHdJUjA5ZXZUSjQxS3BLZG9iakNOSGpodzFkdXpZNUxoMGpkS3IxTFB0cDVjQkpxU3NSaEZSMHQ2Z3pyU1ZjWEdNRHFtcVNTWXordll3RTg2YXF0UzF0ZFhwNjgzdHVqRmpValZqazVQMUtyVzk5OVBMZ1Z6VTVkd1ppSWcrbXFCZU9xZk9sdVlvMHVuMGNUcW1YZmFQdzh3SzFkNU82RlA4dDJyVDZWdjB6Uytic1BiZVcrcmtvbytjT3dFUlVjSmNkTURXNWlpcXE2dVBINWVxNlZ0MUZsYW1PcUk3NjFJMTIwOUoxL1JGOWt2bEVkUDZobTg3Tng0UlVkSnN3ejIyT3A5aVlxcFhvNTMyajJabG1qL3BwSk8rcWo5MnA4ZU1PZDNlZjB4NXhEVFh0TSs1NFlpSWt1YWlEbHVkSStrOWhVOG5qdE8zQ3pFMWQ0NFlNV0tNdm4zUTNCNCtldmpKK25iZktyV0U0WFdraUJqS3k1dlBzdVg1bExwVWFtWnRNcjNmM0s2dFRyNVR1Rk5UbDB3K1dwTkszYXovcnFPMk9qM04zbDJpVEk2bU9qY1lFYkVZNXBxZXRmVTVpcnJxMURPMXlkU0JjVldwRyt4ZGlicXE1QXl6T3RYM0w3UjNsVEQxMFhMbkJpTWlGc05jVStIVTNVVnlWUElNSGRXVnA5WFdxVk5yYXZQNjl2S3FFVlduMnI4dWNlcWovYzROUmtRc2hybW9qRjR2T2hDSUtTS0cxSDBScWdJZ3BvZ1lVbUtLaUNnZ01VVkVGSkNZSWlJS1NFd1JFUVVrcG9pSUFoSlRSRVFCaVNraW9vREVGQkZSUUdLS2lDZ2dNVVZFRkpDWUlpSUtTRXdSRVFVa3BvaUlBaEpUUVM5N1dDVXVlRUFsTHB3ZFZ2TnY1aUwzbkFicjl4NTAvMXZGOWlLdGF6NERNYTdId0R6K3J2bjB4NngrL09LWWR6RTAyM0dSUG43TU1YU3AzaWVURzkzYlhHa1NVemx2bnZ1eWlvdmpycHpubk5PZzFBZi91czI3N01oaDJmbkpvZDV2UU5lOCtxUCtKbzZMYWRFcTk1ejY0ZGV1WFdCSHFRdzZ1M3RVVzN1bjJyeGpuMXE5WWFkYXNucXp1cW41WlhYeU5RdFU0dUtIVkNKVGdZRWxwbkthYjZhNHFKU1lmclRuUU5uRzlJYUhYM0xQcVIrZXFDTXpWTml6LzdCYThkWldkZVY5ejZ2RUJMMktyWlN3RWxNNWlhay94SFJvMGRuVm81NWQ5NkVhZitNaXY2ZEpTa0ZpS2ljeDlZZVlEbDNlYnRtanpwdTExTy94ajFOaUtpY3g5WWVZd2h0YmRxbFRwdXFWcXJrbzU5aFhKU3N4bFpPWStrTk13elByc1RYcXpzVnZxTHVXdktFeWR5OVR1WHVXcTE4dWZMMXczNzFMMTZzVjY3Y1ZMaWFGcENlZlY0KysrRStWdUdDMmMzK1ZwTVJVVG1McUR6RU5UMkxDYi9VcXNGRWxNZzMvblpPNUtGUzRUenRKUHg2WHpsRlZVeGFxS1hOV3FvL2JEdHV2TEQ2NzI5clZOMzY2eElUcXFQMVZraEpUT1ltcFA4UTBQSVhYaGpybTVGUkg3WmpKRGVxTzM2KzFYMTE4dW50NjFDMlByTmJINVJHeEwwV0pxWnpFMUI5aUdwNEJ4YlJQSGJaSmR5K3pJNFJoL2d2dkYxYkl6dm1VZ3NSVVRtTHFEekVOejZCaWFzdzBxaC9yMC82UVBQbnFCMzdIUnpFbHBuSVNVMytJYVhnR0hWTmpObEovLzNDUEhTa01UNy9XVXBwQkphWnlFbE4vaUdsNHZHS3FIZitUeFhha2NQenhGYjFDTGJYblVJbXBuTVRVSDJJYUh0K1ltcWk5dDIydkhTMGNQMXZ3cW5zK2NVbE01U1NtL2hEVDhIakhOQmVwODI1LzJvNFdqbncrcjhaUFgreWVVeHdTVXptSnFUL0VORHplTWRWKzVhcEg3R2hoMlhld1EyVCtJaEpUT1ltcFA4UTBQQ0l4bW1STzlUK3hJNGJsbVRVdGhkV3hjMTRoSmFaeUVsTi9pR2w0UkdLYWpkUXQ4MTZ4STRabitGV0N4LzlnSmFaeUVsTi9pR2w0cEU2VHo1eXh4STRZbnZjLzJ0djc2NitPZVFXVG1NcEpUUDBocHVHUml1bm82eCszSThiRGlPc2VkYzRybU1SVVRtTHFEekVOajFSTWgxM1JiRWVNQjNQTXh2cmNLVEdWazVqNlEwekRJeFZUY3hHcXE3dmJqaHFlcnU0ZXVXMFpqTVJVVG1McUR6RU5qMWlBOUhHemRsT3JIVFVlYnAwZjR3djVpYW1jeE5RZllob2VzWmhtR3RYQ2xSdnRxUEd3YmJjK2Z1SjZoMzVpS2ljeDlZZVloa2NzcGpwaXR6MjJ4bzRhRCswZFhTb3hNYWEzNlNPbWNoSlRmNGhwZUNSakd1ZHJUZnVJN2FvK01aVXp6cGgrNTFkL1V1Zk9lbHJFYi83OEtiVWhoamV1TUJEVDhJakZOS2JmMGY4c3R6Mit4ajIvWWt0TTVZd3pwcFVDTVEyUFdFeTE1OXkyMUk0YUg2dmUzZTZjVzlFbHBuSVNVMytJYVhncUxhWmI0N29JUlV6bEpLYitFTlB3VkZwTXQrODkyUHUvcWpybVYxU0pxWnpFMUI5aUdwNUtpK211ZmUwcWxuZmhKNlp5RWxOL2lHbDRLaTJtaGZjNHZjempHQnFzeEZST1l1b1BNUTFQeFozbWY4eHB2aXpFdEN3aHB1R3B0Smp1Mkh1SW1JcENUTXNTWWhxZVNvdnBCenYzbTdBNTUxZFVpYW1jY2NiVXZNSEU2MEt1MmJoVEhXanZzaU9IaFppR3A5Sml1bVQxWnVmY2lpNHhsVFBPbUI1cmZoS2JKOTBsdlBnaDlmckdlTjc5aDVpR1J5eW1KZkliVVBYM0xIZlByOWdTVXpuampDbS9tMjhscGdOR0xLWWw4cnY1c1p6aUc0bXBuTVRVSDJJYUhzbVlUby81dXNIK1E1MjlaMWV1K1JWYllpb25NZldIbUlaSExLYVpSclhvcFUxMjFIaFkzN0tibGFrNHhIVHdFdE5CUVV3YjFZcjEyK3lvOFhEMnpLWHV1WVdRbU1wSlRQMGhwdUVSaStua0J0WDZ5U0U3YW5qYTJ2VXAvaVV4dlRHMGtaaktTVXo5SWFiaGtYek9ORTZlV0xYSlBhOVFFbE01aWFrL3hEUThVakU5OFpyNWRzVHc5UFRrNDNuYnZTTWxwbklTVTMrSWFYaWtZbnJxOUNmc2lPSDV5N3AvbVpnNTV4Vk1ZaW9uTWZXSG1JWkhKS1k2WkpmYytad2RNU3lITzd2MU1SUGpjNlY5RWxNNWlhay94RFE4SWpITk5Lb2xxN2ZZRWNNeXJYR1ZlMDZoSmFaeUVsTi9pR2w0UkdJYTA4V25UZHYzeGZjaS9jOUtUT1VrcHY0UTAvQkl4SFQ4dEVWMnRIQzBkK2pUZTMyc3V1WVRpOFJVVG1McUR6RU5qM2RNOVNuKzNPYzMyTkhDWUs3ZW56WHpTZmQ4NHBLWXlrbE0vU0dtNGZHTjZmQWZ6TE1qaFdQR3ZKZWRjNGxWWWlvbk1mV0htSWJISzZhVEc5VGN2NFZkbGQ2K2NJMEpsM3MrY1VwTTVTU20vaERUOEF3NnB0bEluWC9Ibiswb1liaXBlVlU4L3lWSmZ5U21jaEpUZjRocGVBWVYwMHlET3ZmMlord0l4YWU3SjY5K05QdkYwbHlSOWtsTTVTU20vaERUOFBRN3BpWmsrclRlSEd2M1ByWGVmblh4T2RqZXFjWk5YZVNlVXlsSlRPVWtwdjRRMC9Ba3ZuVi83N3N0ZmRhSkQ2bGhWelNyRTYrZXIwNi9hYkhLM0wxYy9TSHdDL09YdmJtMU1BL1hQaXM1aWFtY3hOUWZZZ3FHZzRjNzFWWDNQMTlZQ2J2MlYwbEtUT1VrcHY0UTA2Rk5SMWUzZW5qWnV5cngzUWVjKzZta0phWnlFbE4vaU9uUXBMMnpTeld0Mk5CN1NsL0tGNWsrVDJJcUp6SDFoNWdPSGZMNXZIcTdaWSthTW1lbFNseWdWNkxsR3RFK2lhbWN4TlFmWWxyWmZOeDJXSzE2YjRlNjBielRVN1pSSlNaNVBOYWxKakdWYzlKdmxxbmxiMjR0WElFTTZjcDMvcTJPL2Y1YzU1d0daYVpSUGZqc1A1ei9Wckg5M2NxTitodk00NkxEeERucXBYZTNPOGN1cGl2ZTJxWXV1ZXM1OTV6NjRRbFh6MWU3OTdlcmx0YTJpdkROTGJ2VjJrMnRoWDN6NnlmV3FvbDNQcWRPTUQvd0w5YW44ZnFIdFdzZmxMM0VGTEVFTktlNDV1VklabFZlN3BydE1GZmh5K2xLdklURUZCRlJRR0tLaUNnZ01VVkVGSkNZSWlJS1NFd1JFUVVrcG9pSUFoSlRSRVFCaVNraW9vREVGQkZSUUdLS2lDZ2dNVVZFRkpDWUlpSUtTRXdSRVFVa3BvaUlBaEpUUkVRQkt6YW11YWpWdWNHSWlNWHhvSzFQaFpGdGFISnNMQ0ppY2N4RnUyeDlLb3dybXNjN054Z1JzUmhtb2wvWStsUWc1amtNMTBZaklrcWFpL0syT2hWS3J1a0Y1NFlqSWtxYWkzYlk2bFF3dWFqYnVmR0lpQkxtdE9mY2Q3d3RUZ1dUaTZZN2R3QWlvb1M1YUptdHpSQ2dQbnJOdVJNUUVYM01ScTIyTWtPSWJPTkc1ODVBUkJ5TXVhWUtmU2xVZjhoRmkvUU95T3VWcW52bklDSitrZWJLZlgzVFdsdVZJVXcyT2sydlVsdUpLaUlPMkZ5ME41RnR1czdXQkFxWXFOWkg2L1RIZlRxc25ZbjZacjJ6RUJHUDBLeENzMUdiYnNTV1JLWmhncTBIQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUJwa1VqOEI0QW9tK01iVCszSkFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiMmQzYmVjMjYxNWVlNGY1ZDg4YjI1MzYyMjQ5MDI3MGIiLCJvcHRpb25zIjp7InJrIjp0cnVlLCJjbGllbnRQaW4iOnRydWV9LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0Ijo1LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjgwfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjMtMDEtMjAiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzAsInVybCI6Imh0dHBzOi8vd3d3LmhpZGdsb2JhbC5jb20vIiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJISUQgQ3Jlc2NlbmRvIEtleSBWMiIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjMwMTIwMDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjMtMDEtMjAiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzB9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjMtMDEtMjQifSx7ImFhZ3VpZCI6IjQ4OWZmMzc2LWI0OGQtNjY0MC1iYjY5LTc4MmE4NjBjYTc5NSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiNDg5ZmYzNzYtYjQ4ZC02NjQwLWJiNjktNzgyYTg2MGNhNzk1IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ik1ldHRsZXNlbWkgVmlzaHdhYXMgRWFnbGUgQXV0aGVudGljYXRvciB1c2luZyBGSURPMiJ9LCJkZXNjcmlwdGlvbiI6Ik1ldHRsZXNlbWkgVmlzaHdhYXMgRWFnbGUgQXV0aGVudGljYXRvciB1c2luZyBGSURPMiIsImFsdGVybmF0aXZlRGVzY3JpcHRpb25zIjp7ImVuLVVTIjoiSGFyZHdhcmUgQXV0aGVudGljYXRpb24gd2l0aCBNZXR0bGVzZW1pIFZpc2h3YWFzIEVhZ2xlIEF1dGhlbnRpY2F0b3IgdXNpbmcgRklETzIifSwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MTAsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6MCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MTAsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6MCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDaFRDQ0FpcWdBd0lCQWdJVVdHNXpmaGFKUmdRWlhKS3ZoUVQ2RGRBU1daWXdDZ1lJS29aSXpqMEVBd0l3Z2FFeE1EQXVCZ05WQkFNTUowMWxkSFJzWlhObGJXa2dWbWx6YUhkaFlYTWdSV0ZuYkdVZ1FYVjBhR1Z1ZEdsallYUnZjakU4TURvR0ExVUVDZ3d6VFdWMGRHeGxjMlZ0YVNCVGVYTjBaVzF6SUdGdVpDQlVaV05vYm05c2IyZHBaWE1nVUhKcGRtRjBaU0JNYVcxcGRHVmtNU0l3SUFZRFZRUUxEQmxCZFhSb1pXNTBhV05oZEc5eUlFRjBkR1Z6ZEdGMGFXOXVNUXN3Q1FZRFZRUUdFd0pKVGpBZ0Z3MHlOVEEyTWpBd05qVXlNemxhR0E4eU1EVTFNRFl4TXpBMk5USXpPVm93Z2FFeE1EQXVCZ05WQkFNTUowMWxkSFJzWlhObGJXa2dWbWx6YUhkaFlYTWdSV0ZuYkdVZ1FYVjBhR1Z1ZEdsallYUnZjakU4TURvR0ExVUVDZ3d6VFdWMGRHeGxjMlZ0YVNCVGVYTjBaVzF6SUdGdVpDQlVaV05vYm05c2IyZHBaWE1nVUhKcGRtRjBaU0JNYVcxcGRHVmtNU0l3SUFZRFZRUUxEQmxCZFhSb1pXNTBhV05oZEc5eUlFRjBkR1Z6ZEdGMGFXOXVNUXN3Q1FZRFZRUUdFd0pKVGpCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQktBTXE0R1ExdEZ0dHNJUytFOUJYbmNnN3ZEN2twdER6R29TVS9McFF6cXpyQUk1NG41YTljZzYxTDBicEFmbzhWUHVJT1lKSzlObEFWVEdHWmlyTmtXalBEQTZNQXdHQTFVZEV3UUZNQU1CQWY4d0N3WURWUjBQQkFRREFnRUdNQjBHQTFVZERnUVdCQlRKYlpYUzhtZ0tXSHV5V0F0bVBVQVFOYjJrUURBS0JnZ3Foa2pPUFFRREFnTkpBREJHQWlFQXF3RmVQeWd4ZFZtRm1MVyttSGxqdTFGcHJrcDhCM0ZEYyt3ZWxsdFRRVklDSVFESlowdDQ2NHZyaFhyYXpjQThTTnJoR3JhMVlxK3ZCWHkrQmhOTUNQWGlNZz09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsLzlqLzRBQVFTa1pKUmdBQkFRQUFBUUFCQUFELzJ3Q0VBQVlFQlFZRkJBWUdCUVlIQndZSUNoQUtDZ2tKQ2hRT0R3d1FGeFFZR0JjVUZoWWFIU1VmR2hzakhCWVdJQ3dnSXlZbktTb3BHUjh0TUMwb01DVW9LU2dCQndjSENnZ0tFd29LRXlnYUZob29LQ2dvS0Nnb0tDZ29LQ2dvS0Nnb0tDZ29LQ2dvS0Nnb0tDZ29LQ2dvS0Nnb0tDZ29LQ2dvS0Nnb0tDZ29LQ2dvS1AvQUFCRUlBSUFBZ0FNQkVRQUNFUUVERVFIL3hBR2lBQUFCQlFFQkFRRUJBUUFBQUFBQUFBQUFBUUlEQkFVR0J3Z0pDZ3NRQUFJQkF3TUNCQU1GQlFRRUFBQUJmUUVDQXdBRUVRVVNJVEZCQmhOUllRY2ljUlF5Z1pHaENDTkNzY0VWVXRId0pETmljb0lKQ2hZWEdCa2FKU1luS0NrcU5EVTJOemc1T2tORVJVWkhTRWxLVTFSVlZsZFlXVnBqWkdWbVoyaHBhbk4wZFhaM2VIbDZnNFNGaG9lSWlZcVNrNVNWbHBlWW1acWlvNlNscHFlb3FhcXlzN1MxdHJlNHVickN3OFRGeHNmSXljclMwOVRWMXRmWTJkcmg0dVBrNWVibjZPbnE4Zkx6OVBYMjkvajUrZ0VBQXdFQkFRRUJBUUVCQVFBQUFBQUFBQUVDQXdRRkJnY0lDUW9MRVFBQ0FRSUVCQU1FQndVRUJBQUJBbmNBQVFJREVRUUZJVEVHRWtGUkIyRnhFeUl5Z1FnVVFwR2hzY0VKSXpOUzhCVmljdEVLRmlRMDRTWHhGeGdaR2lZbktDa3FOVFkzT0RrNlEwUkZSa2RJU1VwVFZGVldWMWhaV21Oa1pXWm5hR2xxYzNSMWRuZDRlWHFDZzRTRmhvZUlpWXFTazVTVmxwZVltWnFpbzZTbHBxZW9xYXF5czdTMXRyZTR1YnJDdzhURnhzZkl5Y3JTMDlUVjF0ZlkyZHJpNCtUbDV1Zm82ZXJ5OC9UMTl2ZjQrZnIvMmdBTUF3RUFBaEVERVFBL0FQcCtnQW9BS0FDZ0FvQUtBSUwyN3Q3RzJrdWIyZUszdDR4bDVKWENxbzl5YWFpNU95RTJvcTdPRnVmaTk0UWl1R2hndnA3c3I5NXJhMmtrVWZqam44SzZsZ2F6VjJySE84WFNYVTFmRGZ4RDhNZUliZ1crbmFwRjlyUEF0NTFNVWhQb0F3R1Q5TTFGVEMxYWF2SmFGd3hGT2JzbWRaWE9iQlFBVUFGQUJRQVVBRkFCUUFVQUZBQlFBeVdXT0dOcEpuU05GNUxNY0FmalRTYjJCdXhUT3I2Zi9aTTJwcmVRU1dFS083enh1R1FCYzd1UjZZTlZ5UzV1VzJwUE9yYzE5RHlTYlN0VytKT2wzL2lHL0dMWllYZlJOSGQ4STVBTzJhWWR5VDBCNC9EcjZDbkREU1ZOZk4vb2ppY0pWMDV2NUk1M3diNHJmVmZoanJPaVhtdldkaHEweEtXQ3FxeFNiUUFTbUl3QU1rTW83OC9TdHExSGtyUm1vM1hVeXBWZWFrNE4yZlF3dFJsbnNmaC80Y2gxRFNZTlhiVm5rbmh1SFdRelFBc0FzRVVnNTNkVzV5T2VocldLVXFzbW5hMzlYWm03eHB4VFY3bnNQZ1hWOVYwTHhBUEIvaW1aN21SNHZPMHUrays5Y1JqckcvOEF0ci9UNlo4NnZDTlNIdHFmelIzVXB5aEwyVS9rZDYrbzJVZDhMS1M3dDF2Q29jUU5JQTVVa2dIYjF4d2Z5cmtVSk5jMXREcDVsZTE5UzNVakNnQW9BS0FDZ0FvQXA2dnFWcG8rbVhHb2FqTUliUzNUZkpJUVR0SDBITlZDRG5KUmp1eVpTVUZ6UFk4bTFqNDlhUXN2a2VIdEt2dFVuSnd1UjVhc2ZZY3NmeUZlaERMWjd6ZGpqbGpvN1FWek4vdDM0dStLditRWnBVV2gycmRKSkl4R3dIMWt5MzVMVit6d2xMNG5ka2MrSnFmQ3JFa1B3VzF2VzVGbThhZUxMbTVQVXhRbHBNZlJuT0IvM3pTZVBoRFNsQ3cxZzV6MXFTTm40aTZKYitGL2hSYWVHdEprbUZ2ZFhzTm1Ia2JMa1NTNzI1QUhYQjdkS3p3OVIxYTdxUzZKc3V0QlU2S3B4N21INHorSDcrSE5VMVh4WTNpRzcwL1RZbzhSL1lWWVhDYmdzYVI5Y2JBY2ZoV3RIRSswaXFYTGQrZXhuVm9lemJxYzFrY0dKRjFMWHZETmg0eW5rdGRLak1vZTZlME5rN2ZKa00waCs4Y2hlZmYzcnF0eXhsS2t0Zlc1ei9GS0txYmZjYXVtV21ud2VQSm8vRFNhOXIraWFUTGEzZHJGWVRpV05aQU0vUHU3WjNBWXgzcUpTazZYN3kwVzdyVXVLaXFudVhhVmkzcnZ4QjFIeEZxbHBkWGVrZllKZEUxT0tXT1JRMitOV2syTkRKbmpjUmc4ZWxURERScHhhVHZ6TCttT2RlVTJtMWF6UFVmaUw4THRNOGIzOGVvWE41ZDJsOUZDSVVlTGFWMmdraktrZXJIb1JYQmg4WktndVZLNk95dmhZMVh6TjJaeFgvQ0FmRXJ3dno0WThVQyt0MCs3Qk01SEhvRWZjby9NVjFmV2NOVi9pUXNjL3NLOVA0SlhBZkZEeDE0Wk8zeGg0VGFXRmVHdUlWYU1mWGNOeUg5S1BxZENyL0NtSDFtdFQvaVJPdzhIL0YvdzE0bXZyZXdqYTZzNytkdGtjTnhId3plZ1pjajg4VnpWc0RWcExtM1J2VHhkT283Yk05R3JqT29LQUNnRHovNDlTbUw0VmEwVi9pOHBQemxTdXZBcTllSnpZdDJwTWwrQyttMmxwOE85RG1ndFlJNTVyY1BKS3NZRE9TU2VUMU5MR1RiclNUWThMRktrbWp1NjVUb0NnRHl6NDFhclpXR3NlQ1UxV1lRV0M2bDlzbWtLbGdCRUJqZ0FucTFkMkRnNVJueTcydDk1eDRxU1VvWDJ1V1BpTlkzUHhJOEJXcDhHMzBVMXBOT0hjTXpSTE9pa2dqSkdlR0FPQ08zMHBZZVN3MVYrMVdvNjhYWHByMmJPSzhXQ1hVL0UzZy93VnJldFJHUzFpaSsyekcyODNkY25sRTNrQS9Nb3gxNTZrVjFVdmNoT3ZDTyszb1lWUGVsR2xKN2ZtSHhUc1A4QWhYR29wcXZoM1U5UXRYMVc3TXoya095T0FMR0FXWHA3NEE5elN3c3ZySzVKcE95MzZoaUkrd2ZOQjduWWZHRzhqMUg0YmFiZlJJNlIzVjNaektyakRBTVFRRDc4MXo0U1BMV2NYMFROOFMrYWtuNkhxRmNKMWhRQWhHUmc5S0FQQnZpM1pXdW1mRjN3TGNXTnREYnZQY3hlWVlrQzd6NXlqSngxT0RYcTRTVGxoNmliL3F4NTJKaW8xb05IdlZlVWVpRkFCUUI1NzhmSXpKOEt0WngyTUxmbEtsZG1CL2p4T2JHZndXYVB3ZmNTZkRMdzhSMnRndjVFaitsUmkvNDBpc04vQ2lkalhNYmhRQkRkUnJMQzRkRmY1VGdFWjdVNHV6RTFkSGl2d3E4ZjZSNFo4RDJHbGF0RHFTWGtEUzcxU3pkZ015TXc1eDZFVjZXS3cwNnRSemphM3FjT0hyeHAwMUdWNytoMTNodUR3WjQ0OFFTZUo5UHM1Sk5Wc1pGamVTWlhqS3VCOHBLRTRKQTZISGF1ZW82MUNIc3BQUm0wRlNyUzlvbHFqdU5RMCt6MUdKWXRRdExlNmlWZzRTZU1PQWZYQkhXdWFNcFIrRjJPaHhVdDBjSDhkZ0I0SWdBQUFHb1cyQVA5K3VyQS93QVIrak9iRi9CODBlalZ4blVGQUJRQjRiOGFmM254WThBUkRxTGlOdjhBeU92K0ZlcGcvd0NCVWY4QVd4NStLL2pRL3JxZTVWNVo2QVVBRkFISC9GNjMrMWZEVHhER0JuRnFaUDhBdmtodjZWMFlSMnJSTU1TcjBwR2I4QkxqN1I4TE5IR2NtSXl4bjhKRy9vUldtUFZxOGljRzcwa2VoVnhuU0ZBQlFBVUFlTjZEcjgzaER4WjR4Vys4UCtJTHBMM1VqTkRKWjJKa1JseDF6a2ZwWHBWS1NyVTRXa3RGMVp3d202VTVYaTlYMk9oLzRXamIvd0RRcStMdi9CWWYvaXF4K3B2K2VQM212MWxmeXY3amwvaUw0cWw4VzZIYjZYcDNocnhMRk9ieUNUZGNhZXlvQXJjNUlKcmZEMFZSazVTa3RuMU1hMVYxWXFLaTkreDdYWG1IZUZBQlFCNGQ4UWY5Ty9hRzhJV281OGlLT1FqNk5JLzlCWHFZZjNjSk5ubjF0Y1RGSHVOZVdlZ0ZBQlFCbTNuOW5hMWE2aHBUM0VNd2VOb0xtS09VRjBWZ1FRUU9RZXRXdWFEVTdFdmxtbkV5dkNXbTZCNFMwbTQwelNyMkpiYTFrTWt3bHVWWXdsdjd4L2g2ZDYwcXpxVnBjMGxxeUtjWVVseXhacVJlSU5HbWxTT0xWdFBra2NoVlJibENXSjZBRFBKck4wcHJWcGxLcEI5UnIrSXRFUjJSOVkwMVdVNElOMGdJUHAxcCt5bjJZZTBoM0hTZUlOR2kyZVpxK25wdlhjdTY1UVpIcU9lbEpVcHZvdzlwSHVPVFhOSmUzZTRUVkxGb0VZSzBndUVLcVQwQk9jQTBlem5lMWg4OGJYdVhua1NPTnBIZFZqVWJpeE9BQjY1cUxkQ2pOSGlQUXlRQnJPbWtudDlxVC9HdFBaVC9BSldSN1NIZEUyb2F4cHVtdkdtb2FoWjJyeWZjV2VaVUxmVEo1cFJweWw4S3VOempIZGtsNXFWalpSeHlYbDdiVzhjbjNHbGxWQTMwSlBOSlFsTFJJSEpMZGtWcnJXbDNaY1d1cFdVNVJTN2lPZFcycU9wT0R3UGVtNmNsdWdVNHZabGlDOXRiaTArMVFYTUV0dGduemtrREpnZFR1SEhGUzR0T3pXbzFKTlhSeWR6bzNoVC9BSVNxMThZM0dvUUM5S21PR1pydFJFd0NsRHQ1d2NBbjhhNkZVcThqb3BhZWhpNFUrZjJyZXAxMXBjd1hrQ3oyazhVOExmZGtpY01wN2NFY1Z6dE5Pek5rMDlVVFVoaFFCOHNYMnRheDRYK0tQaS94Qm84UG53MjkyOXRjeG5PQ0pTMndrZWdaUitPQjNyM1kwNFZhRUtjK3EvSThoem5UcXluRTJQZy9wRTl6YytQN0R4RGFQZjNiMjhiM0ZzWkNyU3laZDlwWWNnbHNENjFuaTVwS25LRHNpOE5CdHpqTlhOSHdiNGF0WDhVYWI1L3d3dk5NUkpoSjlzZS9sZFlTdnpCaUR3ZVFPS210V2ZJN1ZiL0lxbFRYT3IwN2ZNaThlK0JmRDFwOFUvQ2VuMjloc3ROVGVScnVQelhQbUhQcm5JL0RGRkRFVkhRbkp2VmJCV29RVmFNVXRHYUh4eThDK0hkRzhCdHFHbldIazNkc1liZUovTmR0cWJ1bUNjSHFhakJZbXBPcnl5ZWpLeGRDRUtmTWtVL2liNFkwbnc1OEdZWDBlMSt6dGV6MnNzNTh4bTN0c1BQSk9PcDZWZUdxenFZajMzdGNtdlRqVG9lNnQ3SHVVMXJEZmFPOXBkUitiYnp3R0tSTTQzS1Z3UmtleHJ5MDNHVjBlaFpPTm1lQWFaNFh0TGpWclczdVBoUGZXOXZKTXFQTzJveWtScVd3V0k5aHpYclNyTlJiVlg4RHpZMGs1SmV6L0VYeGxvTXcrSUhpSFVKdEhnOFhhZTZoSGl0cnYvU0xFWXhqWXBKVWpCeGtIcDlhS05SZXlqRlM1SDZhTUtzSDdTVW11WmZrYTl0WWFIclB3azBlVFNkQjFMeFBGWjNMeFIydHhjbU9hRXRrdGtwd1FQbHh4MElyTnluQ3ZKU2tvM05Fb1RvcmxYTlltOEhhSGJXbWkrS3J6L2hDcmp3M2NKcGtzU1NTM1R5K2FyS3hZQU4weHRXcHJWRzVRWFB6YTloMG9KUmsrVGwwUEx0QTFEeFBiZUMyOE4yTVpheDF4R3VvcGNuOTNIR1hFdzlzN0JuMi93QjZ1NnBDazZudEh2SFQvSTQ0U3FLSEl0bi9BRXpxcnpUYlM2L1ptc2I2ZUVQZFdjcm1COXhHemZjN1c0NkhJOWF3VTJzWTRyWi81R3ppbmhVMzAvelBkL0F1bTJtaytFZEt0ZFBoRU51SUZrMkFrL013M01lZlVrbXZLcnpjNmpjajBhVVZHQ1NONnNqUUtBT1k4TytFdFAwWHhEcjJxV3M4MHR6cXNpeXp4eU1wVkNDeEcwQVpIM2oxelcwOFE2a1l3L2xNb1Vvd2xLUzZsSS9EMndGMzRsdVliL1VZSjlkMitjOFVpcVl0cHo4aEF5UHh6Vi9XcFdpbWw3cFAxZU41TlBjNHZSZkN1Z3crSWJUeXZGUGltUXhYQU1ielQvNlBNNkhPemR0d1FjRWUvTmMzOXVVcWt2WktLMTB2YlQ1TTU0MDRjeTk1L29lZ2E1NFkweldQRStqYTVjWGNpWFdsbGpFaU91eHMvd0I3SXorUkZhUXhYSkNVRmF6T21kT001cWJleEw0MjBEVHZGMmdTNlRxRjA4VUVqcTVlRjFEQXFjanFDS1ZIRWV4bnp4YUhWaEdySGxiS3ZpenducGZpYnd0Qm9ONWVTeFdzSmpLdkU2aC9rR0JuSUkvU3FwWXIyVS9hSzF4VktVYWtPUnN4TkcrR3RocGR4Sk1uaWZYWnQ4RWtHMlc5VWhRNmxkdzQ2ak9SN2l0WjQ5VFZySXpqaDR4ZCtabEpmaE5wNElQL0FBbC9pVGovQUtmMS93RGlhciswVi9MRW42ckgrWi9lWGZFbnd5MGJWOWF1TlVzOVkxRFNidTVYYmNteXVBb205MkhxZS9ZK2xUVHg3aEhsZG1sM0tuaG9TbHpKMlpKYy9EblEvd0RoSHRPMGF3MWZVTk50N0puZmZhM1NvOHJOakpjNDU2ZTFTc2Y3N25LemJCNGVIS29KMnNMb0h3LzA3U0d2cytJOVd2VXU3U1MwZExxN1YxVlh4bGdNZmVHT0Q3MFR4eW5iUkt6dU9GQ01iKzgzYzJ0QThPYVZvdmc5ZkR0dmR0SmFMRkxDSlpIVXlZa0xFOGdZL2k5S3pxWXBUcWUwYlZ5NFU0d2h5Sm5PWDN3dzBLNzhKYWI0ZU9zNmhIWTJUU09QTG5RR1V1Mjc1L2x3Y0hweFcwY3d0VWRUUzdNbmhvT0NoZlJIWmVEOUd0L0QrZ3dhWmFYdHhleFFGc1MzRWdkK1RuQkk3RE9CV0ZTdDdhVG5wOGplbEJRanlwM05xb05Bb0E1ZlV2OEFpVmVNN0c5SEZ0cVNmWTV2UVNEbU0vVThpdlBxL3VjVkdwMG5vL1hvWXk5Mm9wZDlDOTR2MUI5TjBHNGt0K2JxWEVFQ2pxWkhPRngrZWZ3clhHMW5Tb3R4M2VpOVdWVmx5eDBPRGJ3MXArbDNFOE9yWGIzRnJZV3lYVXNhdzdXa1hMQlUzN3VmbXoySFVjMTQ3d1ZPakp4cXl1b3E3MDM4cjM3bkw3S01YYVQyTGkrSDBrVVBINEdpMk1NcnUxRUE0OXhXaXdpZXF3Ly9BSk1WN05QN0g0bGE5OFBXMFd2V2NOdjRiaW1lU3hNc3RuOXIyaEczZ1ozNTV4MC9Hb3FZU0NyUmpHbGU4YnRYOCs0blRTa2tvOUMwbWo2WGJYTnNtcytFbHM0TGlVUXJNbDM1b0Rub0NBY2pQcldpdzlHRWtxMUN5YnRlOTlSOGtVMXpRc2FPamVIUERXb1JYcGswZUtDUzB1SGdrVXl1Y2JmNHM1NkVFR3Q2R0R3dFZTdlR0eXRyZGx3cFU1WDAySVBET2tlRTllMHVXK2kwbElVaWtkR0RTTWNBY2c5ZTRJTlJoY1BnOFRUZFJRdGJ6WXFjS1U0M3NVcmJSYk8rc0xXODAvd2RETkRPaGNGcjRvUU54QTRQcUFEK05aUncxT3BDTTZkQzZmOEFlSlZPTWtuR0g0ajRkRjBxQzl0WWRaOEpwWlJYTWdoam1XN01vM25vQ0FlTTQ2MDQ0YWpHYWpXbzhxZWw3MzFHb1JUU2xDMXllLzhBQzl2RGVTUjJmZzZDNWdVL0pLYi9BR2J2d1BTcnFZR01aTlFvSnIvRU9WSko2US9FWllhTm9QMnlTMDFudzJ1blRpRnJoRDlvTXFPaS9ld1FlbzQ0cWFlR3cvTTRWcVhLN1gzdm9LTUlYdEtOaXRiYU5hMzF2SGMySGdsSkxXVWI0bmt2OWpNcDZFcm5pb2pob1ZFcDA4UG85dmVFb0tTdW9hZXAybmhUVG85TzAwckhwaWFhOGpsbmdXYnpSbm9EdStsZXJnNktwUXNvY3QrbDduUlNpb3JheHRWMW1nVUFZL2l6VG0xVFFibUNIaTVVQ1dCaDFFaThyajhSajhhNWNaUmRhaTRyZmRlcU02c2VhTFJ6K25hZ3Zpdlc5SWRCbTNzWUJkenIyRTdmS3FuM0dHTmNWS3Q5ZHF3YTJpcnYxMi9BeWpMMnNsNWEvTXQzbGhGcWZpelY3SzV6NVUrbXhJeFhxUG5ma1ZwT2xHdGlhbE9Xeml2elpUaXBUY1gyRm4wM3hKWldqdkY0Z2hrU0JDeXJMWkxsZ0IwSkIvV25LamlxY2JxcnQ1QTQxSXI0dndHYVBldHFYaVhTNzEwQ05jYVA1aFVkQVM2bXBvVmZhMTRWSDFoK3FDTXVhYWZrV2ZIMy9JTnNQK3doYi84QW9kYVpqL0RqL2lYNWpyN0wxUmhlS3JpVFNkWTFlMXQ4aDlhdDR4Qi8xMTNDTnNlKzFnZndyanhrM1FxemhIL2w0bGIxMmY0R1ZSdUVtbDFJZGRVK0hwNzdTcklFTHF0cEREYkQvcG9DSW0vSGFRZndxY1F2cXJsUmg5dEpMMTJmNENtdlozaXVxLzRCc1hlbkxkK0lMUFEzbnVJdE90ZFBFZ2loa01aZHQyd1pJNUlBSFQzcnFuUlU2MGNPMjFGUjZhZVJvNDNrb2RFaWw0aThPMldseTZOUGF0ZEdRNmxBdUpMaDNHTjNvVDdWamljSFRvdW5LTjc4eTZ0azFLYWpacnVpOUhwcWVJTmMxazZqYzNaanRKbGhoaWluYU5WR3dFbkNua2tucld5b3JGVmFudEc3UmRrazdkQ2xIMmtuemRDQk5DczlQOFlXTUVKbmVPNHM3aFpCTE0wbkdVSEdUeDFOUXNMVHBZbU1ZMzFUM2Qrd3ZacU5SSmRtWExmUU5jc0xlTzEwN3hBcVdzUTJ4SkxacTdLbzZBblBOYXh3bUlwcFFwMWRGdGRGS25PS3RHV2hwK0U5U20xWFJJcmk2Q0M0RHZFNVFZVmlyRmNqNjRyb3dkYVZha3BTMzFYM011bEp5amRteFhVYUJRQVVBWjJrYU5aYVExMjFsR1VOMUtacE1uUEo3RDBIdDcxaFF3MU9oek9DM2R5SVFVTDI2aVhlajIxemMzTndYbmptdUlWZ1o0cENwQ2drakJIUTVOS2VHaE9UbHJkcXdPQ2JiTXgvQjlsSXBTYSsxYVdOdUdSNzF5ckQwSTlLd2VYVTNvNVNhOVdSN0JkVy92TmFIU3JXQzlodW9VS1BEYi9aa1ZUOG9USU9NZmdLNlkwSVJrcHBiSzN5TkZCSjNRL1ZOT2cxT0dLSzZERlk1VW1YYWNmTXB5S2RXakdza3BkSGY3Z2xGUzBaSHFHazJsL2ZXTjNjb1dtc25MeEhQQUpIZjE3SDhLVlREd3F6ak9TMWpzRW9LVFRmUVcvMHEwdjd5eHVibEMwdG01a2lJUFFrWTUvUS9nS0tsQ0ZXVVp5V3NkZ2xCU2FiNkVXczZIWjZzOFVseDUwYzhXUWswRWhqZFFlb3lPMVRYd3RPdTA1YnJxdEdLZE5UM0sxbDRYc2JXOGl1bmx2YnFXSTdvL3RWdzBnUStvQjR6V2RQQTA0U1UyMjJ1N3VUR2xGTzQ3VXZEZGpmM3JYZSs2dHJsd0ZkN1dkb2pJQjAzWTY0cDFjRlRxUzU5VS9KMkhLbEdUdUxwM2h5eXNYbmtSN3FXNGxqTVJubW5aNUZVOWxKNmV2RkZMQjA2YmJWMjNwZHU3Q05KUktwOEkycEJCMUhXQ0QyKzNQV2Y5bncvbWw5N0o5aXU3KzgyOU9zYmZUcktLMHM0eEhCRU1LbzUveWE2NlZLTktDaEJXU05ZeFVWWkZtdEJoUUFVQUZBQlFCNFY0KzA3eEY4T3ZFWThWZUhibTZ2ZERkdjlLc3BaV2RZZ1R5TUVuQ25zZjRUN2RmVm9UcDRtSHNxaXRMb3p6NjBaMEplMGhxajFUd1Y0dDB2eGhwQ1gra3paeGdTd3Q5K0Z2UmgvWG9hNEsxQ1ZHWExJNjZWV05XTjRuUTFpYWhRQVVBRkFIazN4VytKaDB5VStIZkNZTjU0aXVENVJNUTMvWnllTUQxZjI3ZFQ2VjZHRnduTis4cWFSUng0akU4dnVVOVdidndvOEhYdmhyU2pjYTdmM043ckYwQVpmTW5hUllSMTJMazlmVTkvcFdXS3J4cXl0QldTTk1QUmROWGs3czd5dVE2QW9BS0FDZ0FvQUtBQ2dBb0FaTEdrc1R4eW9yeHVDckt3eUNEMUJGQ2R0VURWenhIeGQ4Tk5YOExhdTNpVDRhVFBGSU10TnA2bk9SMUlVSGhsL3dCZy9oMkE5U2xpNFZZK3p4SDNubjFNTktuTDJsSDdqZDhCL0dMU3RhZGRQOFFxTkcxaFRzWlpzckU3ZXhQM1Q3Titackt2Z1pROTZHcU5LT0xqUDNaNk05VFVobERLUVFlUVIzcmdPd282MXJHbmFIWXZlYXRlUTJsc3ZWNVd4bjJIY24ySE5YQ25LbzdSVnlaVGpCWGt6eFh4QjhTTmY4ZVg3NkY4TjdPZU9CdmxtMUJ4dFlMNjUvNVpqMys4ZTJEWHBVOExUdzY5cFhmeU9DZUluV2ZKUlh6TzUrR1B3MDA3d1pEOXFtWVh1dHlEOTdkc1B1NTZxZ1BRZS9VL3BYTGljWEt2b3RFZEZERFJwYTdzOUFya09rS0FDZ0FvQUtBQ2dBb0FLQUNnQW9BS0FPTzhjZkRydy80d1F2cU5yNVY3akMzY0dGa0gxN01Qcm11bWhpcWxINFhwMk1LdUhoVjNXcDVyL3dBSVQ4Uy9CUk1QaERXUnFPbk44cXhTTW9NWVBmWkprREgreWZ3cnQrc1lhdnJWalpuTDdHdlMwcHU2TG1rZkJ2VXRidmsxTDRpYTVQZlRkZnMwTWhJSHNYUFFleWdmV3BuajR3WExRalljY0hLYjVxcnVld2FMbytuNkhZSlphUlp3MmxzblJJbHhrK3A5VDdubXZPbk9WUjgwbmRuZEdFWUswVVg2Z29LQUNnQW9BS0FDZ0FvQUtBQ2dBb0FLQUNnQW9BS0FDZ0FvQUtBQ2dBb0FLQUNnQW9BLy85az0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiNDg5ZmYzNzZiNDhkNjY0MGJiNjk3ODJhODYwY2E3OTUiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjp0cnVlLCJ1cCI6dHJ1ZSwiY3JlZE1nbXQiOmZhbHNlfSwibWF4TXNnU2l6ZSI6MTIwMCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6MjAsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4LCJ0cmFuc3BvcnRzIjpbInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTA4LTEyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiTWV0dGxlc2VtaSBWaXNod2FhcyBFYWdsZSBBdXRoZW5pdGljYXRvciIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjUwODEyMDAzIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25Qcm9maWxlcyI6WyJjb25zdW1lciJdLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTA4LTEyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjF9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjYtMDItMTEifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyI3MjgzMTVkZWU0ZWNjMDA2MDBhYjdlNWM3ZTE0NzY5MjNjOTE5MDlkIl0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjcyODMxNWRlZTRlY2MwMDYwMGFiN2U1YzdlMTQ3NjkyM2M5MTkwOWQiXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkcrRCBTdGFyS2V5IEZJRE8yLU5GQyJ9LCJkZXNjcmlwdGlvbiI6IkcrRCBTdGFyS2V5IEZJRE8yLU5GQyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjJ9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50IiwicmVtb3RlX2hhbmRsZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQ05qQ0NBWmVnQXdJQkFnSVFadmEzQnNaMXZvUXhMRjZsQVIxNFJUQUtCZ2dxaGtqT1BRUURCREEyTVFzd0NRWURWUVFHRXdKRVJURU1NQW9HQTFVRUNnd0RSeXRFTVJrd0Z3WURWUVFEREJCSEswUWdSa2xFVHlCU2IyOTBJRU5CTUNBWERUSTFNREV3TVRBd01EQXdNRm9ZRHpJeE1qUXhNak14TWpNMU9UVTVXakEyTVFzd0NRWURWUVFHRXdKRVJURU1NQW9HQTFVRUNnd0RSeXRFTVJrd0Z3WURWUVFEREJCSEswUWdSa2xFVHlCU2IyOTBJRU5CTUlHYk1CQUdCeXFHU000OUFnRUdCU3VCQkFBakE0R0dBQVFBYzlSU2p4bVBFa0pQWDRicUs3UnVmam5NUHk3M0ZvWUdmUWplNzVBOWY1UEorVnMzbjdkdGhPazNTQmo1SEYzcGdWQzcvYlNHbFBNMHc1c2plZUtzL0JRQitPeUI1OC94SFlicEk2ckpVakl0VDFUUFZySWJQUEljb2d4SVZjWUNmMWRNeHQ4M3hDc3RYM1EyeGxXcFo1T1lSb1h0SEJrTTcxUzlpVzdYaFk3a3BLZWpRakJBTUIwR0ExVWREZ1FXQkJSVE1IMFIyd0J2NDQrbm82d0Z6bzM0eE56YVpUQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01BNEdBMVVkRHdFQi93UUVBd0lCQmpBS0JnZ3Foa2pPUFFRREJBT0JqQUF3Z1lnQ1FnR1dEZ2FObHJzRis1MkNKejlYUCt1Qmt0S2JZcE1hL0lXM2wxa1M4NWhOaUp1bTFsL3VQVEhsQlhQYmxmZE54c0xjck1GMzJNdm5zd0FGd29lSTRxQzArQUpDQVNSMUtHUWlIZEYxcGpKMDIyVzM2a0RsL2RTUktlSkNuN2FORkUyWXlGQklvbXdBa1hDS0dVeVAyRGx6RlBFMW9DUFFCcDE4QVZzZWs3MUJlOXlBSjhNYyIsIk1JSUNNRENDQVpPZ0F3SUJBZ0lRY2haQWw5WTFobVdtcDVKMk93cFdzREFLQmdncWhrak9QUVFEQXpBMk1Rc3dDUVlEVlFRR0V3SkVSVEVNTUFvR0ExVUVDZ3dEUnl0RU1Sa3dGd1lEVlFRRERCQkhLMFFnUmtsRVR5QlNiMjkwSUVOQk1DQVhEVEkxTURFd01UQXdNREF3TUZvWUR6SXhNREF4TWpNeE1qTTFPVFU1V2pBME1Rc3dDUVlEVlFRR0V3SkVSVEVNTUFvR0ExVUVDZ3dEUnl0RU1SY3dGUVlEVlFRRERBNUhLMFFnUmtsRVR5QkRRU0F3TWpCMk1CQUdCeXFHU000OUFnRUdCU3VCQkFBaUEySUFCTEVoVk9QM29SZ0NrUGtuTDdad3llQnZZaFR6NDBJc0JMZFAvRUtuZkxPMGFCOEhPS0dVUTI4LzcvVXFaOVV5RGhtZERCTU94RHU5eWNCWVVUc1hZTGN0STFnWGhHZG51cmJNcjBKV0hRQXEvdFRrczJxUGN1aHVaRUJyRStGTVo2Tm1NR1F3SFFZRFZSME9CQllFRkE3UnJWRUV6OGlFY0VvUHUvZ3N0MTFsM2g0dE1COEdBMVVkSXdRWU1CYUFGRk13ZlJIYkFHL2pqNmVqckFYT2pmakUzTnBsTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0VHTUFvR0NDcUdTTTQ5QkFNREE0R0tBRENCaGdKQkxydnpwMzNMRmZQcW1uMDVCMnhRZlNKVmliN21Dc0c5OTFpV0wwZW8walVjaGZPTWdJTStqczJFRHJ2dVVIcFpYelB3VnBJTVY3eUgrYjdPbUxXaFRjY0NRVnJmUmttUDRaVDdaK250RERuempIMVVTN1dHNVdqdVRZSlBDYUcyTjVVYnZVc21KcnRjOXRzUFpNTGdhKzRDVDlGeGs3U01sNHdjNHEyQzNTN2czQ0ZXIl0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUZBQUFBQlFDQUlBQUFBQmMyWDZBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBQUIzUkpUVVVINHdJVURDMEZvT1VISUFBQUNjZEpSRUZVZU5ydG0ydFFWTmNkd1AvL2MrOCtXSmFDUEJZMUNnc0NvcERNYUQ3NEFNVWtpbU9uV20zeUlaMXBxOWlwbzdaV25hWk5NMDFzbTdiVXFLaGtMTlpIZk15MEg0cXRWdTFVTXlNMDBjNG9kc3hNd1ZDTkdsT0Z3UUJyV0o1N1grZmZEK2Z1Z3dWV05zR21OUGNNSDliTHVXZlA3Ly8rbjROSVJQQkZHZ3krWU1NQ3RvQXRZQXZZQXJhQUxXQUwyQUsyZ0MxZ0M5Z0N0b0F0WUF1WUFNYnFCSWlJSHROeGtsaVdRaDlpZmd2RytMWDRGU0lDUUNBUTZPem9hR3Q3ME5IZTN0ZmZqd0NBR0NFV0hQd0JETVBJTDhpZk5Xc1docWNCQUNpcWV2clVLWVlNQmo4UHZodGVZZkRuSVhNQmlIalNsNUltWms3eVpIbzhIbzlzazhXZUVURUdzQnhiZUloNDY5YXQvVFUxOVJmcWVucDZZTVF0UkE5VjAxWlhWTXllUFR0S2dxcWl2UFNEbCt5eS9Oa1Zpd0NFS05TU2xwYjJsUlhMdjdOdTNhUkprK0kyNlpERzM3dDJiZlUzdnZuY29tZE8vS0cydDZkSFlvd2hDdmtSSXVDSUEwWVFzbmpNSXFhSnB6R1dHbkY5UkFyK2t5RSs5UGtPN1A5dDZiejUzOXU0OGNQYmQyQmtUMlRSbmtDRUFKenpmZnYyclZ6eDFiOWZ1dVIwT0J4Mk95S2FUa2lFaUN5MnFvbGltQlpoMEZrQXhIWVJBT0p4YnhTN0ZUOUJPYm9TRW9EbzdYUG5ubjNtMlpNblQrSUl6aXhIaVYrTWl0VnIvbFpmNzNBNElsOGJHQmpRTkUyU1pWbVM0RkhCVEZGVlhkZUc5MElLeTFkVlZmZ1VjWkZJS0VEWGRjTXduRTZudytFQUlzWVlBTWdTMjdwNXk5V0dxOXZmMlA0SUh5WWlWVlVydnJYNjBzV0xUcWVUaUFCUjFiUkVseXRuMnJTUytmUG56SjJUbFpPVDVIYWJIalN5bW9rb3daVVFPenIwQndiZXVYZ3hLU2tKUnhzWlFoSWpRQVFpdjk5LzU5YnR5NWN2WDdseTVhTzdkelZOczBrU1k4eU9lUHpvVVFTbzNQN3JhRU9qNE9DY0U5RzIxN2JsWm1YbmVYT21aWHZ6dkRsVEprMys3b2FOTFMwdHVxN1RXSXp1N3U2c0tWUEY0aE16UEYxZFhXT3lyS1pwZDI3ZC90cktWVm1UbjhqejVvaWZuS2xaeDQ4ZUl5SWVNUk1pWHp0Nytvd25MVjNRVHN2MnppZ29QSFA2ZEpSRXhoajRrMC9HQkRpMHQwTUhEbVpQbVJwQ21EcjVpZXROMXlObmh2TndZR0JnVWRtaWg1MmQ0b2tzeTZmUG5pa29MQlNHaldOVUpQVDA5QlRQTExKSkVpTDI5dlhkK09CbWNrcktaNnc2eE80NGtVZ2hGOTk5ZCszcU5jSnJpS2lnc1BETVg4N0t3VVFZanRKL3FqM1IxdG9xYUJWVlBYVGtTRUZob1hnTng3bzJFa3VPeWNLaFJWancwOEt5c3A5czI5WS9NQ0JrMGR6Y2ZPM2F0WkIwVEdCRlVTb3JLMjAybTNqNi9Bc3ZsQzRvSGI4RmM4WGFpcm56NWpGRWtXVi85dHEyNkR4Y1YxZlgzZE50MnJhaWZuL3paczc1T0tVVkxycDE2OWFlL241RWxDV3BxYW1wdWJsNUVQQTdkZlVPdXdNUUZVMWJ2bkpGVG02T3lHbVBZNFFNK1RIMUVtTDVCV1VMOC9QelJEQ3p5M0xkaFFzQWdJQW1WVU5EZzNBQlNaSTJyTi93LzlFSmJ0NnlSZGQxUkpSa3VlSEtGU0ZqQmdBK242K2xwVVhJSmkwdExTOC83L0dKLzc5azFVUUFNRy91UEpmTEpaNzg2OFlOWVYweUFIeHc4MllnRUVoSVNFQUFUNmJINFhERUZVSU5idmk3L0krY0w4ck12cjUrSUhNbU11enlkL1BSU0pZQUVOeHV0d2lyb3d6ZDZaNk1sTlFKdnZZT0Fualk2V3QvOExGbllxWU1BSGMvdkN0Q2xLSHJ1VG01a2lURkpjN1dsdGF5c2pLbnc0blJqb1JtR1JpTUZnYm5qREdiYks3dmNpWXNLeThuQW1RWWVvc0grNHFRcjR0cUlhQW94My8vdXdXbGNlUU9TWkxTMHpNNlArN2d4RFZOdTNmL3ZnbDgvLzU5eGhnQnFKcm05WHJqdGgvT3RZQWlJeE01SUlhZEJmdEJNNUlpb3FhcW85RXVJMUJWbFl6NEVnZGpMSE5pNXZ1TmpaSXNjNFA3T2p2TjVxR3ZyeThrUzd2ZEhuL1VaYUsvUXlJZWpzRFJNUmtZaXFLTlVVanJ3QkhSbEFBTmpyS0RPbGhDUUFLTWUyUG9jcmtJd0NBQ0lIR0FJWWUvaEFnQWpQalRMK2RjNTF3M0RCWU9kUWpCVXdEaUZMa0R6ZzJVWlFLemUrZWFob3h4enMwbUYyQm9PalNJQUVEakJvKy9qMVFVeFd5NUVZVk1aUUJ3dTkyaWo3YkpOcCt2STk1RkU5Mko1VXVYMnUxMklHSWpoeTRDSU02QnFMNitYbENwbXZyYzRpVU1NWGJPRjhKUU5EVXRQUzNlV04zYjI4Y1F4VkZrU25LS0NUeGw2aFRoZmt4aXJhMXRqendIaXhvWkdSbkhqaDhiYmZQUTIvTmtVYkVkbUtqWWQrMnVTazVKd1ZHYmFGekFobUcwdDdjRFl3akFHRXRMVHplQjgvTUxFQkdKbUNUZHYzZlBNQXhabHVQQ2ptTm01R2tsQVVOa1k5K2JtT28xZE4zZjFZV0lRT1N3Tzd3NVhyTzBuREdqTU5IbEVpZGE3ZTN0dmIyOVk5WEtmSTVWQnlLMnRMWStmUGhReENaUHBpYzFOUlVJR0FHNGs1S3l2VjVCMk9YM3Z4ZHNwc2JwQ0tucTdmUG5GVVVSL0VYRnhlR1lEd0FsQzBzNTU0Z29BK3pZc1hPOFY5SGkwR2QvVFkzRFprTUFWZFBtbGN3WEhzWEU1Y09TSlV2RkFTS1RwUGVibWk1ZHZEVGVtVStmK3JQZjM4MFk0MFRjTUo1YnZEaFlEUUFnWWtuSi9HeXYxekFNQUxEYjdidXJxc2E3VmRmVTFOaGxtWWk0WVpTWGwzdXpzNFZ0aHhQZ0x5c3JEU0lSTnE4Mk5Qemk5ZGVqd3NCNENWZWNhUDM2OWJkdTNtU01FWkhrY0x6eTZxdmhlNC9RN05JRnBVVkZSUWJuUkpUb2NyMTE2SzNxdlhzL1hRTDhIR2tCNE9mYmZucityK2VjVGlmblhOUDFSV1ZsdWROeWg3bHFrV1Y1VjFXVmFHZzQ1elpaMnY2cnlsZCsrS091cnE3eFlzYWRIUjNyMW43NzhJRUR0bUREbDV5Y1hMVjdkMlFsTitodWFXYlJ6RDF2VnF1YUtwamRibmR0YlczSm5MbUhEeDRNS01wWWJVc2NocHRmT2thMjQvZjdxM2JzWERDL3BLNnVMaUV4VWZTWW1xNGZQbm9rT1NVNTBpWEQ1OUlVdkxEWnRXUG4zajE3RWwwdWthaUlLQkFJSktkTWVPcXBKNHVMaXpNeU0xTW5wTW8yYWRqTzVoSGRJWkNpS0Q5KytXV0pNVVFNS01yT1hic2NUbWY4WGtORW9HdWF6K2Q3OE9CQlkxUGo5YWJyZmIyOXJvUUU4eEFQVVZYVkhUdDN2dmoxRnpubmtScU92aEFYMkRYN2Z2UEc5dTEybXkzWTRuQ1JzWFJkNTRiQmlZQnpDTjEzVXFoU3BLSFpQM1E5endDSWN5WkpkcnZkREppTUJRSUIwU2Z6SWNJTFhUalJTRTBTb3NTWXhGaUlKNlF6RGxEOVp2WHlGU3Npbnc4UEhCci91SHAxMDZaTi83NzdrVHN4VWZSb1p0RWJYRFdzRWh4bVIwZ1lGVXR3MEY4TURGSFpLQlNNRk5sN2lWMllDS0xaSk01NytucG5QLzMwM3VycTZkT25EM3QzT1R5d1dFTFg5ZW85MVg4OFVkdlcxb1lBa2lTWmY1TVFWaXdON3ZFajhJYkE0ZWdPYjJPa3dFRm1Ud0FZdnRNMmRGMlM1YWxaV1JWcjE2NnVXQk5UYWlNRFEvQUN0ZkdmalNkcWErdnFMdmg4UGwzVnpNdnhDQ01aWnQ5eHBoUWNlbXdkb3pHSW1HeXoyU1pQbnJ4czJaZFhQYjhxdjZEQVpyT0ZkajVzWE1EWVJVV1VWWFIyZHZxNy9JRkFBSUNHMzlsb0ZmcW9pNE1ZUit6aG5XR0MwNW1hbHBvU3VvNGJURGtzTTFyL004MEN0b0F0WUF2WUFyYUFMV0FMMkFLMmdDMWdDOWdDdG9BdFlBdllBcmFBTGVEL3FmRWZibU1jVkNwOGJHOEFBQUFBU1VWT1JLNUNZSUk9In0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMTItMDkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJTdGFyS2V5IEZJRE8gTkZDIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVMkYwMDAwMjAyNTEyMDkwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblByb2ZpbGVzIjpbImNvbnN1bWVyIl0sImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMTItMDkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MX1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNi0wMy0yMCJ9LHsiYWFndWlkIjoiM2IyNGJmNDktMWQ0NS00NDg0LWE5MTctMTMxNzVkZjA4NjdiIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiIzYjI0YmY0OS0xZDQ1LTQ0ODQtYTkxNy0xMzE3NWRmMDg2N2IiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiWXViaUtleSA1IFNlcmllcyB3aXRoIExpZ2h0bmluZyAoRW50ZXJwcmlzZSBQcm9maWxlKSJ9LCJkZXNjcmlwdGlvbiI6Ill1YmlLZXkgNSBTZXJpZXMgd2l0aCBMaWdodG5pbmcgKEVudGVycHJpc2UgUHJvZmlsZSkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2LCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH0seyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AzODRyMV9lY2RzYV9zaGEzODRfcmF3IiwiZWQyNTUxOV9lZGRzYV9zaGE1MTJfcmF3Iiwic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlEU0RDQ0FqQ2dBd0lCQWdJVVVjbU1YelJJRk9nR1RLMFRiM2dFdVpZWmtCSXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFEbTU1NWJXWTlXVyt0T1kwcklXSGxkaCthTmFub0NaQ0ZoN0drM1laclFtUFV3MGhrU0c2cVlIUXRQK2ZaeVMzM1ZFcnZnK0JRcW5tdW1nTmhmeEZya3dFWkVMZWlkQmNDOEM0QWc0bnFxaVBXcHpzdkkxN05jeFlsSW5MTkxGY1pZLytnT2lONlpPVGloTzUvdkJaTWJqOXJpYUFjcWxpWW1OR0pQZ1RjTUdhRUF5TXpFTU55Mm5tNkVwK3BqUDVhRjZnaTIxdC9VUUZzdUoxajJSai95bk0vU2RSdCtlY2FsNU9Zb3R4SGtGYkw5dnZ2MkEyT3Y1SVRaQ2x3NGJPUzlucHlwUWltT1o1UUFZeXRtWWFRcFdsL3BNWXo2elNqOFJxa1ZETkVKR3FOZlRLQTJpdkxZd1g2bFN0dE1QYXBnMEo4NGw5WDB2b1ZOL0ZwUzRWQ1ZBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlFnS0ZBaEc2UmFXK2hUeTUyZHhlVDhiQzk2SHpBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBWU16Z0xySkxJcjBPb3ZRbkFaclJJR3VhYmlIU1VLU21iTFJXcFJrV2VBdHNDaERFSHBYY0ovYmdETktZV29IcVE4eFJVakI0Q3llcFlldmMzWWxyRzhvN3pIeHBmVmNhb0w1U2V1Smt6SHhLbjRiVGFTcDkrTXZ3YW1ucDY0a1pNaU5iRkxrbmZQOWtZS29SSGtNV2hlUkoxVXNQMXo0U2Nta0NlSUxmc01zNnZxb3ZxaldDbEZzSnBCY3NsdVlIV0Y3YkJKMW40UndnK0FURW9wWTRJZ0d2Nlp2d2MrQTlyK0FUMmhxcG9Ta1lvQWwrQU5Zd2dzbE9mOXNKZTBWK1RBOVlZL1VsYUJtUFBUZDAvL3I5d3ZjZVBXWmtQaktvQUMvelVOaGZEYmg0TFY4R0hzM2x5WDJYb21ML0xOYzhKWXp5SWFERWhHUXZlb1BoaC90cjFnPT0iLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVIzOG1xMjZTZjJzelZWMkJkRzZXRU43a3VXVXdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFSWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFOWTBXYjlvUG9Sb0tvUXlXUGFKcHoxMXZyV1RnNnpUdG1OajJWb0tSbnl2S0dScXB6YjgzdzVsNllBOTZVWWtZQkRRUDBpbE8yRFBlNndXcVZSNXpEZlJ6ZGNIOGJoK0w3ZEdHdmFlNmhSVFpoa0ZrQ3BYRHM0SGNja25yRGY4RkNsSjdIZTM5SmY0Mi9HMVFtMnp6OVdXbXJQWHRnaUsveDA1R2pzUWZHdURHMXpmNVFUVVVpZThsd3ltSzNUZmRPdk5lZUpBQVBlMnBuN0l0ZlJiK3JWck5XaUR6bFJuMnZObloyd1BvNHdIL1dKNmRoWFpHK3JNV1QrYTZCb2NnMVVmSXc2a2R1bkc0YlRwWnpzdmFjRll5UjBtcGYrRGVPbnBTV0FteXdKV0h2VGxmMllYeEZ5ZVhjVEFDZFFsY01OR0oyVmhaUTQ4eHRQNS9SQlAvOGtDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNoeTQyb2tpcWNUUzFpcWEvSFJXamtCbjRIL01COEdBMVVkSXdRWU1CYUFGT3EzUXBDZURIdGtldHRVZkFPNmZFNmYyS0ZoTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBbitSSElQYnRNRUROZFQxZzhIL1JpdEFrVWRMZ0F0MXRXR1dubGo5a25idjQvNEdsWDdDOXA0NWVmUE85L2FaTDZPVjFYUktCaTZLbXRCVzVLN251WUVuTXgvNUJxQlNiTFQ3cmhkdUM0OVRCZU1iOVBIZFhzVGxTVk5ZZWZyMWRHaWRyNGoweFZCUUxiMXJrbkRBYmRXRHpLZnZuYXlLTzhGcndlN0h4ODQzTUcvckorYzBYcnVVdmJmVlRDSExpSVdoTTdvTkRoTDh4b2I2eFVvOUtMS2NTTCtJdFlzTzMvOVdiOFE5R2pzcUw0RlhzRGNHMVNhWWg3S3BmdU1tT2l4cXpKWk8ybklpY1BZUmcxSTJTdWlVZllPNzB0bWRIY2JsK2tTUW1TWXQ3cnE0dmlJTGcyR3gzajlySVR1V1RqYmFVYVNTUXhnT21NU0h1eXpNQUMiLCJNSUlEU0RDQ0FqQ2dBd0lCQWdJVURxRVJ3KzRSbkdTZ2d4Z1Vld0pGRVBEUlozWXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFESTdYbkgrWnZEd01DUVU4TThaZVY1cXNjdWJsdlZZYWFSdDNZYmF4bjlnb2RMeDVzd0gwbFhyZGdqaDVoN0ZwVmdDZ1lZWDdFNGJsMXZielVMZW1yTVdUOE4zV01HVWU4UUFKYkJlaW9WN1cvRStoVFpQLzBTS0pWYTNld0tCbzZVTGVNbmZRWkRyVk9SQWs4d1RMcTJ2NUxsajV2TWo3SnRPb3RLYTlKN25IUzhrTG16WFhTYWowU3dFUGg1T0FaVVROVjR6czFidm9UQVFRV3JMNC9KOVF1S3Q2V0NGRTVuVU5pUlFjRWJWRjhtbHFLMmJ4Mno2b2tWbHR5RFZMQ3hZYnBVVEVMdlkxdXNSM0RUR1BVb0lDbE9tNGNycHduRFJMVkh2alllUEdCQi8vcEV5enhBL2djU2N4andhSDFaVXc5Ym5TYkh5dXJLcWJUYTFLdmpBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlRxdDBLUW5neDdaSHJiVkh3RHVueE9uOWloWVRBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBcVFhQ1dNeFRHcVZWWDdTazdra0ptVXVlVFNZS3VVNitLQkJTZ3dJUm5sdzlLN0hlMUlweFowaGR3cFBOaWtLam1jeUZnRlB6aEltd0hKZ3h4dVQ5MFB3M3ZZT2RjSkpOa3REZzM1UFhPZnpTbjE1Y0ZBeDFSTzBtUFRtSWI4ZFhpRVdPcHpvWHZkd1hETTQxWmFDRFlNVDd3NElRdE15dkU3eFVCWnEyYmp0QW5xL05EVUE3YmU0SDhIM2lwQysvK05LbFVyY1VoK2o0OEs2N1dJMHUxbTZGZVF1ZUJBN24wNmo4MjVycURxc2FMczlUYjdLQUhBdzhQbXJXYU5QRzJraktlcnhQRWZlY2l2bEZhd3AyUldadnhyVnRuM1RWMlNCeHlDSkNrWHNORDA1ZENFclZIU0pJcytCZHRUVk5ZOUF3dHlQbW55YjB2NG1TVHp2V2R3PT0iLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVRuYmJHSVIyTkh2enFJS0ZBZVF3RzFYQmlzMHdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFRWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPc1hqM2swNEJhbjRUWWR0WktxRC9PUEp4eUR5YVBtQ0JVRlVpYVpJZ1R0ZVpuajNYMjVEaGdwWlpYc0M0RDB5ZEljcmxBNndOVUluT1JML0w5ekJiVEVJTUFWTUdvNmc3VUtBbWIyTUY2QUhibmhZSmQ5ZWlrdXBWTldTaEhOWU5jNEdCZE8xWU42QWZVcXZKaEhiZTNWNFNOTVBtQlJFS0pQVno3VGh3Z21nZ1RlOFdzMkswL3dzcXYyd1NFN3BiQ0JzVVpoSVg1MWJaTTNwcUR3SlBUbVJGRXZ0MC82dEc1ZU84RjNqMTRPWHFmRWhtam4xVnZ4S0RZUU9MWkF4Q3d3Z0MwUDRDZGZXdjN5OFBTUjhJMzU0aE8xWStHek5qdklxWDM4TktMeXd1SVlIRmVyT3hObHhFTUJ2RmhZQnVSdVlBa2tnVWFQcU42VUJoc0lMcnNDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNDb1JIaGl5Tm5iblhSV0lMNlpCWG9CWDlZVE1COEdBMVVkSXdRWU1CYUFGQ0FvVUNFYnBGcGI2RlBMblozRjVQeHNMM29mTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFDUUZhZkpJMS81V2c5Q0VFaW1FMVJQNTRSZ1F3VE5UT09Rc0xBQ1RlK3JJdGxGUXpDOVpEaHJWODI4eVg3anp5K0FBc3AzaXpLN1QxdGgyZGw3bSt0dTBzdzJQYS9vbGMwMm50NlB5SXczNDhnYUh6aEkxKzBLRTQ1cXh2RkRlTDJsTXhiUGZDWXZ5RUVhWXpqaVFFTFU1OTUxcFhHV3lLTWEvNGZMdE8rWktPWGhNdVZlcTRyWERQSTU0VzZKSE9pQWFpS2Rpdys1ZTNjMmt0L2pGSVF0TTZ2TVhnOUxORnpkakVUTnQyMFZYOVFldlJwRlpmdWNNRzl3Q2FRRG9GbFB6cFRNSktoUGV2L2ltSm1aWWhLZnIwbExjZW10cWpJeExBb3FaZE9ZZkhCZzYrdkFjZFBJL2lhdUdwVUF2N1grVUtObUR3aloyQmFINHNMd2hCMm0iLCJNSUlEUGpDQ0FpYWdBd0lCQWdJVVh6ZWlFREpFT1R0MTRGNW4wbzZaZi9iQndpVXdEUVlKS29aSWh2Y05BUUVOQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU1aNi9UeE04cklUK0Vhb1B2Rzgxb250TU9vLzJtUTJSQndKSFMwUVpjeFZhTlh2bDEyTFVoQlo1TG1pQlNjSVpkMVJueDFvZDU4NWgrL2RoSzdoRW03SkFBTGtLS3RzMWZPNTNLR05MWnVqejVoM3dHbmNyNGh5S0YwRzc0Yi9VM0s5aEU1bUdORDZ6cVljaENSQUhmcllNWVJERjRZTDBYNEQ1bkdkeHZwcEF5Nm5rRW10V21NbndPM2kwVEF1Y3NyYkU0ODVIdkdNNHIwVnBnVmRKcHZnUWppVEpDVElxK0QzNWh3dFQ4UURJdituR3ZwY3lpNXdjSWZDa3p5Q2ltSnVraFl5NktvcU5NS1FFZHBOaVNPdld5RE1UTXQxYndDdkV6cHc5MXUrbXNVdDRyajBlZm5POXMwWk93ZHdNUkRuSDR4Z1VsNVpMd3JyUGtmQzEvMENBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUI4R0ExVWRJd1FZTUJhQUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUU13RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCRFFVQUE0SUJBUUMzSVcvc2dCOXBaOGFwSk5qeHVHb1grRmtJTGtzMHdNTnJkWEwvY29VdnNyaHpzdmw2bWVQTXJiR0pCeUoxWG5xdUI1c2djUkVORnhkUUZtYTNtaW84VXBmMW93TTFacmVYckowbUFERzJCcGxxYkpueGl5WWErUjExcmVJRlRXZUloTU5jWktzRFpyRkF5UHVGakNXU1F2Sm1OV2U5bUZSWUZnTmhYSktrWEliNUgxWGdFRGx3aWVkWVJNN1ZvbEJObGxkNnBSRktsWDh1c3Q2T1RNT2VBRGwyeE5GMG0xTFRoU2RldVh2RHlDMWc5K0lMZnozUzZPSVlnYzNpcm9SY0ZEMzU0ZzdyS2Z1NjdxRkF3OWdDNHlpMHhCVFByWTk1cmg0L0hxYVVZQ0EvTDhsZFJrNkg3WGszNUQrV1ZwbXEyU2gveFQ1SGlGdWhmNHdKYjBiSyIsIk1JSURSekNDQWpHZ0F3SUJBZ0lVZXg5blQ5dndaTlhTNDgzTGRpWUdmdzJTalNvd0N3WUpLb1pJaHZjTkFRRUxNQzR4TERBcUJnTlZCQU1NSTFsMVltbGpieUJCZEhSbGMzUmhkR2x2YmlCSmJuUmxjbTFsWkdsaGRHVWdRaUF4TUNBWERUSTFNRGd3TVRBd01EQXdNRm9ZRHprNU9Ua3hNak14TWpNMU9UVTVXakFuTVNVd0l3WURWUVFEREJ4WmRXSnBZMjhnUmtsRVR5QkJkSFJsYzNSaGRHbHZiaUJDTWlBeE1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBdTFNZXZueTlkeU85WlVDMzlTb01oTGNSL0RYcnRGL2NpTTEydGNpeTJFWEFaNk1rcml2VnRDZkVWTTlYNklTVEVuQlA2dVNZWW92NnBwdjZPNkpoMk5IbVltNHcrSm5TNFZuQ1BVN21IQU1mVkkyTUdUVE1WT2V3MHhVc0c3c0lTSWtJRFVCbXVrOFlLOWM1emljOSt2RlFHTElrc2RYTzVpVkZJZ05HNTNjR1hENFpMWm9BUGl1MFBFb3p4QXFZSWFJNGd4S2hPQTNTOC9XOG1JV3N1Nm9meWo0R3ZrRkc2WjdreUYzMTA3UDdtd0ZITHJJM0VOYVBXTU9GY1RhR2EwZHcrL3ZWUndqUmNFWkJWc3V1VC84N2NrU3MwYTVwa3QzdlpCbGFZZVQ4cHpTcmVWN21vd2NJTTkwTDJpYUFUbFAwbnhtYUU2bk95VGJvakZWbDJ3SURBUUFCbzJZd1pEQWRCZ05WSFE0RUZnUVVTWEVoM3NhM2J0RHVybTRNTS9DN1MxbFJ1dVl3SHdZRFZSMGpCQmd3Rm9BVTZyZENrSjRNZTJSNjIxUjhBN3A4VHAvWW9XRXdFZ1lEVlIwVEFRSC9CQWd3QmdFQi93SUJBREFPQmdOVkhROEJBZjhFQkFNQ0FZWXdDd1lKS29aSWh2Y05BUUVMQTRJQkFRQjVHYzNoYWZ0cDdoS3NFWnNvK2kvWjVuUnVxZG16RzJXQ2xVb1JVcWJhUHlnbG5KRGpLUi9rZmdPbDZpYmJGL3p0aG0zS21YUTdIY0RJUDJ4TWRHN1UyTDJpbWJKUUhxUGYvaDJIcW9qYjRyWmd1ZSs2VzRrdFNSNWVsUjlMMXJZcUUvU0dZTTRpRUtvVlFTdjdSVDFyeEllV2lLc3cvVnh4aS9RT25zeDNGN3g4MENDWWdCNEUzeVF4OFZUVzQ0MGhURXdUQTFlTUhPaXgzMnRQdHl5SElhOFBWVklmVnBIUUpCYU1WdnY1MDhVRWp3a2JVMnJuamZ6b1NUTlM5QTVqVVE4bUJTdmU5NXJqQjBkbzk4RVUrRHhkQnFYMitINmk1d2xJQ0ZnemhkemNzbmU5aEdLVDZselRYNGNJZEpzclkyK3hsZUswRkZReTZsR0VWTEVlIl0sImljb24iOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJpY29uRGFyayI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsInByb3ZpZGVyTG9nb0xpZ2h0IjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwicHJvdmlkZXJMb2dvRGFyayI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzFfUFJFIiwiRklET18yXzEiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwibGFyZ2VCbG9iS2V5IiwiY3JlZEJsb2IiLCJtaW5QaW5MZW5ndGgiXSwiYWFndWlkIjoiM2IyNGJmNDkxZDQ1NDQ4NGE5MTcxMzE3NWRmMDg2N2IiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJsYXJnZUJsb2JzIjp0cnVlLCJlcCI6ZmFsc2UsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjp0cnVlLCJhbHdheXNVdiI6ZmFsc2V9LCJtYXhNc2dTaXplIjoxNTM2LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjgsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4LCJ0cmFuc3BvcnRzIjpbInVzYiIsImxpZ2h0bmluZyJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi04fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotMzV9XSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5Ijo0MDk2LCJtaW5QSU5MZW5ndGgiOjQsImZpcm13YXJlVmVyc2lvbiI6MzI5NDc2LCJtYXhDcmVkQmxvYkxlbmd0aCI6MzIsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjoxLCJyZW1haW5pbmdEaXNjb3ZlcmFibGVDcmVkZW50aWFscyI6MTAwfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMTItMjIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2LCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ill1YmlLZXkgNSBTZXJpZXMgd2l0aCBMaWdodG5pbmcgKEVudGVycHJpc2UgUHJvZmlsZSkiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI0MTIyMjAwMyIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTEyLTIyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3Nn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wMS0xMCJ9LHsiYWFndWlkIjoiMzBiNTAzNWUtZDI5Ny00ZmYxLTAxMGItYWRkYzk2YmE2YTk4IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiIzMGI1MDM1ZS1kMjk3LTRmZjEtMDEwYi1hZGRjOTZiYTZhOTgiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiT25lU3BhbiBESUdJUEFTUyBGWDFhIn0sImRlc2NyaXB0aW9uIjoiT25lU3BhbiBESUdJUEFTUyBGWDFhIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfSx7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIiwiYmFEZXNjIjp7InNlbGZBdHRlc3RlZEZSUiI6MC4wMywic2VsZkF0dGVzdGVkRkFSIjoxRS0wNSwiaUFQQVJUaHJlc2hvbGQiOjAuMCwibWF4VGVtcGxhdGVzIjo1LCJtYXhSZXRyaWVzIjozLCJibG9ja1Nsb3dkb3duIjowfX0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJpc0ZyZXNoVXNlclZlcmlmaWNhdGlvblJlcXVpcmVkIjp0cnVlLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJzb2Z0d2FyZSJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNFRENDQWJhZ0F3SUJBZ0lFZUtTV3NUQUtCZ2dxaGtqT1BRUURBakJtTVFzd0NRWURWUVFHRXdKVlV6RVFNQTRHQTFVRUNoTUhUMjVsVTNCaGJqRWlNQ0FHQTFVRUN4TVpRWFYwYUdWdWRHbGpZWFJ2Y2lCQmRIUmxjM1JoZEdsdmJqRWhNQjhHQTFVRUF4TVlUMjVsVTNCaGJpQkVTVWRKVUVGVFV5QkdXREZoSUVOQk1DQVhEVEkwTURVeU5EQTRNelkxT0ZvWUR6SXdOVFF3TlRJMU1EZ3pOalU0V2pCbU1Rc3dDUVlEVlFRR0V3SlZVekVRTUE0R0ExVUVDaE1IVDI1bFUzQmhiakVpTUNBR0ExVUVDeE1aUVhWMGFHVnVkR2xqWVhSdmNpQkJkSFJsYzNSaGRHbHZiakVoTUI4R0ExVUVBeE1ZVDI1bFUzQmhiaUJFU1VkSlVFRlRVeUJHV0RGaElFTkJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVDRTdqelRHa001eFQrenUraWlxa01zRllpN2d4MlgwVXhkdGFGYnhYa1BSK21zR0lITWlRRGUyaFdzbnVuV09HVEVDM3REVDkwbkFyRjhDZUZXZTJXNk5RTUU0d0hRWURWUjBPQkJZRUZFaTRnekZqclJsdnJOamtRd2syWFk2UzE0Q0lNQjhHQTFVZEl3UVlNQmFBRkVpNGd6RmpyUmx2ck5qa1F3azJYWTZTMTRDSU1Bd0dBMVVkRXdRRk1BTUJBZjh3Q2dZSUtvWkl6ajBFQXdJRFNBQXdSUUloQUs2WTFneUJtajFLL1Y1TUtEUHA0NnppcENJbHQvWFcweG5TcHNJUXZxeGtBaUI5dzhOamJvWnNTWm5lZzNKNnB3Zys5ZzJsWnRhN0h6WmpsZStMS201UXhRPT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBTFFBQUFEdUNBTUFBQUNuQnQyUkFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBNFJwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFBRHcvZUhCaFkydGxkQ0JpWldkcGJqMGk3N3UvSWlCcFpEMGlWelZOTUUxd1EyVm9hVWg2Y21WVGVrNVVZM3ByWXpsa0lqOCtJRHg0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJa0ZrYjJKbElGaE5VQ0JEYjNKbElEY3VNaTFqTURBd0lEYzVMakZpTmpWaE56bGlOQ3dnTWpBeU1pOHdOaTh4TXkweU1qb3dNVG93TVNBZ0lDQWdJQ0FnSWo0Z1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNGdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlnZUcxc2JuTTZlRzF3VFUwOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXRiUzhpSUhodGJHNXpPbk4wVW1WbVBTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZjMVI1Y0dVdlVtVnpiM1Z5WTJWU1pXWWpJaUI0Yld4dWN6cDRiWEE5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM4aUlIaHRjRTFOT2s5eWFXZHBibUZzUkc5amRXMWxiblJKUkQwaWVHMXdMbVJwWkRveVlqRmtaVFF5TlMxaE5tVmtMVEF5TkRVdFlUWTBaaTFpWTJZNU9HVmlOR0k0T0RjaUlIaHRjRTFOT2tSdlkzVnRaVzUwU1VROUluaHRjQzVrYVdRNk1EQkZRMFJETkRjM01qVXdNVEZGUkVJME1URkRNRGM1TnpNNU5rUkdPREVpSUhodGNFMU5Pa2x1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2TURCRlEwUkRORFkzTWpVd01URkZSRUkwTVRGRE1EYzVOek01TmtSR09ERWlJSGh0Y0RwRGNtVmhkRzl5Vkc5dmJEMGlRV1J2WW1VZ1VHaHZkRzl6YUc5d0lESXpMalFnS0ZkcGJtUnZkM01wSWo0Z1BIaHRjRTFOT2tSbGNtbDJaV1JHY205dElITjBVbVZtT21sdWMzUmhibU5sU1VROUluaHRjQzVwYVdRNllqUmxNV1kxTXpJdE16WmlPQzFqTURRMUxUZ3hPVE10TVRCaFpEZzVPV1F3WWpWbElpQnpkRkpsWmpwa2IyTjFiV1Z1ZEVsRVBTSmhaRzlpWlRwa2IyTnBaRHB3YUc5MGIzTm9iM0E2TWpZeFlXSmlZMll0WXpnMU5DMHpNelExTFRneU1HSXRObVV3WlRZek5USTRNalZqSWk4K0lEd3ZjbVJtT2tSbGMyTnlhWEIwYVc5dVBpQThMM0prWmpwU1JFWStJRHd2ZURwNGJYQnRaWFJoUGlBOFAzaHdZV05yWlhRZ1pXNWtQU0p5SWo4Ky9CUVBud0FBQVlCUVRGUkZXbHRqTFMwd1cxdGRURTFUWm1WbUl5UWppNHVTYld4dFZWVlk2T2pvR3h3Yk1ERXlSRVJMU2twTUxqQXhrWkdWYkcxM05EVTQvdjcrdXJxOHlzdk5lbnA3OC9QeitmbjVVVkpXTEMwdW1wcWNjM0p6WVdGaXFxdXRpb3FOc2JLelFVSkdsWldZT3p4Q3dzUEZNVEkwTkRVMmc0S0VvcUtsT1RrK3JxNnlLaXd1aElTS1pHUnJmSHlCMGRMVUV4UVROemc1TWpRMTI5dmJkWFY1bloyZ0tDa3AvUHo4cGFXb3pNM1BPRGs2dGJhNFQwOVRQVDQvS1Nvc1lXRmx4Y2JIQ2dzS2JHcHN2YjdBUjBkTVYxaGFJQ0lpYTJwcUpTWW1hV3B2UGo5REppY3F4OGpLYVdsb1MwcFhaMmRvejlEU1hsOW11TGk2YjNCNE9qczlsNWljdjhEQ1IwZFFqNCtVSGg4ZFpHTmtoNGlNWGw1ZzF0YlhGaGdZcjYreFptZHZaMlpuYVdocGIyOXdaMmhySHlBZmg0YUlZMlJtZjMrQXA2aXFFUklRRGc4T0xpOHZGUllWU0VoVUhSNGVNak16S2lzckR4QVBhbWxxMytEZ2EydHJKaWNuR0JrWSsvdjdqNCtSYkd4d1kySmpsNWVaTHpBd0t5NHVhMnByLy8vL1M1WXBPUUFBQUlCMFVrNVQvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vd0E0QlV0bkFBQWZXa2xFUVZSNDJ1eWRpMXZhU052R0RRU0R4TVRpRVR4R0c5VFNxckJJTGFMMUFIeFVYVS9GRTJWMWdjVmpsRkFLMXRyZy91dmY4MHhBclFZSTl0MlZ2YTVPSU9SRStIRnp6ek16eVpBMC9QMGZUQTIvb0g5Qi80TCtCZjBMdXViMHR1bTNMNVhTYjAxdjZ3NzZTOFFVS3BOUzZrdmFOVjVuMEY5NEoxK29uSnloK1M5MUJkM3FjWXFGQWxVUk9oTTZqZFVWOUZ2T3lsZFYyclN2dE5ZVGRKZGdaZm5LUW9QUysvYTM5UVQ5dFZrVXF3aGR5SVRQNnd3NklJclY3RkdvTzZXRjZwN09tUDZMMEhWbkQ4RmEzZFAxcG5TWERxV2RvWHBUZWttSDB1SDlRbjBwdmVUV2tSSFA2dzFhVjBZczFKazlxaGN1VGxPZGVWcVAwczdRZnVhWFBYNCs1SWw2YW5uL1FYdVk2akFqL3VmcUh2cVUzcSs3RWxGUExTL1VXV2NsSXFzalRvZS8xcG1uOVNoZFg5QzY0blJvUDE5bjBHSjFlNFRQNnd4NlJsZWN6dGRWOU9pMDZpb1JMVjExQlMzcUNubjduZjgxcFFINnNxNmdmNk4wbFlnVFRmVUV2VjNRQTMwNU1WNG4wT1NZNHFSVGo2Y3ZUOXZxU1dtUDA2VkRhY3RwU3gxQnQzSjhkYVVMSWN1NXJiVitvRHROdko3bTFyNGwzRlUvMEgvc3UvVmtSSXRsNGt2OVFFL3BnVWFsUHgvVURYU3J6U0s2ZE5UeUxPa0pjMnU5UURlbFUxQ01WMjhFWElJL091c0Z1bTBpcmF2dVliRlk1dWZxQkxvMXVLOUhhUWg1bHZSWnJMVStvSnYyTFNGZFNsK205MDQvTjlVSDlPRytKYVVyNUYxYVVoTm5MWFVCM1JuZVQ2ZjFRSU05VXVlZjg1MzFBRDAxQVY0VmRTbWREcDJmei9mVkFmUlhYenBsQ3J2ZHV1d1J1anovUFBQMithRTdsME5lSjIvVmxSRXQ0ZjNMejZHdTU0ZnVtZzNsWjNsOUdURnRzdXhQbU9vQ2VqbnNMRmgxbkNnS0VhVlBRMS9yUk9tQ0Ruc1VpRDMyVCt0QjZjNVpVOWhKdVhWNkd1eFJMNTUyOGpxalI5aHllUnArZm51MERvakw0ZVZsWFVydnB3RjZQMzNRK3V6UU1XcldJczdxTEZ6UzgvTm5wOEt6UTc5ZG81YlRWbkcwZWg4VnFKcnVtK2JQNWsvOXp3LzlSbHhPVTBPam96cVVUbHRDbHZsNmdHNEY2SkExTWhUNUFWcXJENVp6T1pST1pTenpFMXdkMkVOMFdrZGRMamZQU2hLZzhSUXZGZUFMd0xqQUY4Z3JQbkRHbXcrYlFrcDYvbDlUdXZYdDE2NkhpU3pwcEsxV2wzWFVpakVQRTNMZWpjbXpvSzRvRkdhOXk3UGVUTnJXK2ZYeHpuQi9iMXYvWjlCZFRYKzBUYjcrMEdCYnRXRmFMYjdhL0xaaTR0d2lJTE5GWnFJeXI2cGM1QzJ1b0FyT3dxekY1VGNhTHppT0Mrd1lPYi9OYUxRWi9jWEIvTWF6ZTdMeXBhdjFaNkU3eHljQjE3alRMQ3dObFUxV3QzaUhWaWl4OC9lbFYxZlpseTJuMXRGUjE2aWFoa3JqU0hFQnJsa3lmcHByYW4wNmRHdFQzNHVHaG9zZG9SbDJiSzJRc0ZuTDNub1hIM2RUNmd3TWxOMGJzdXpQaXFLVkRLVmtKWS9pQXB5QmI5WDg2YmUzVDROdS9hM3hUWU9OYXhhR0VCajJ5SW9VN3BpQ2dlWHhsVXp5WkRua3Z6SlI0MjZSRXp3dFVwUllISGljTENhKytIUTZLU2VCSC8xcnZQVUowRTFiZnphc2N1QUtvckVvM3ZzSS9FRDRDRmI5Wko0dmZXeTU1S1R1M29sejZuQTdjcXFiT0tuWlluTEM3cTNXajAyMVFyOXRHM3ZUY05HOHRJUytFSzEzd0QrQWxFYjNHVlFNNXgxUmFYN1dPVXZOVWpBaWt6aU5jMDU0d0FoZXFHWG44dXd5SkJnQnQyaGRtdnBhRTNUVDRJc05ZQjRxZWhsMTVzdnJSd0JMeUNYUXUyOVNSSVpOVkdZeXFaSTZTeTlra2lBdlkvMExzT0Zuc1FhYmFvRCt3L05uZzIxSElNeWpKTjlZclE3dFBPaFFCNGRJNXR6RlpTUnppZzYzMncwQkhOOE8wMVlScDl3a3Q3bko4Q0N4TEVzNWw1ZEQ0ZkJ5Q01qaHh4Q0ZkYjNRYncvR1hqUVlBMmhuWklieURrbzhTRDRZSGlVb1dXRHNjTGdjTG55UUo4eGlpV1BGaFZaNE9oeGtKU3gwL0pCa2ZNZ090OFBobHRVcDJTMno5dVdRQ2FsTmVUREphSnMrNks3SjE4Qk1Bak5HVHA5S1hDSi9BRXlZSGZjWEFxY3FOMkc5OXlRL3lBL003anRXOGdySVdFNkp5ckxKWkFxRlRXSHZMRHM2clFPNnRhdTc4Y1dHZjZjWmRSNzErUjVwYWlXNmtubXlxRVNDbWhKSnJZVHZBU0Q0eDRGV1VTRWh3VWlXZ1JGQVpSRW40WVU4Y05xaExLZE1JUmlXblpTVzFvK1Uzbjd0SWRGWmdLSUtWQVpxSCtqcGltQ2F1ZmQ4bkh4a05JcXZQakxyVXgvcTY4UDA0RmREQTRINEZLdCtBNGNkLzJWaU1vVm5LZDk0VmVqT1JzOEdtQU1DeHhEdUdLaXRyc2lNRU9EOGZxeHRxS1BTNU8xY01ka2V2RDVNeHRzcHJqaVVsc00wQjg4QU4rTldpT3l5WWtvamRuald1ZFJVQmZycjd0aWZabU9nZWFoNXlLZTYyQmRaQ3BnTnZkZHI4YlY0ZkcwTkg3L0RhTzFvalY0N2lxOGQwV3QwL0M3Uk5NekJ3amk5aHRPMHVoM01IdUZvalF5d0JZNGZwOTVlUTlEczUxeEY3SEFhLzlaam1xWFczbGFHbm43OXNjRjJzUU5LdTBpczhQa0VmeXpMNUpJTWt5TkQ4WUhQaFlVY3M4REFLTGZBNUhBeXQ1QlRsK1JnQ3FkaGJnR1hrNDNJQ05iZ0ZyZ0pic2ZnU0YyQ3EyRzNkQXk0SFlndHNpcDEyTWtlVklSdTZoaDdZMXU5YU41cFJwbmhFZUd1R2Z5b3grbm1uMGtNYzlNYkRBcEk3V1pObGxRS2NpTVZhYW9BM2RvSTBRNkV2dGhSODRsVkNDYi9WV1NWTzJzdytDVldaR1UyWkVtRlVwQVpoMXZMUTdlL0hudGpOdTVjckViVUhDMUVrLzg2TXFRUFRHL1F4cklRLzZSMEdpeGljcnAvS3d2OWRReUVYalZlckE2cHpOeGE4aG1RaWRqUm9FMENxV1d2QmFoTnk3TWRyZVdnNTFCby84WHF6cWpxamQrZml4bXBZNXhkQnVxVUpaMUttYnl1cG5MUUIxaXVySzZ1TG1IUlovWDFKcDhMR2FsN0RZTEVzbklHcFE1NW5aTmxvTHMrTmI0STJveXJPeVRZeWNIazh5RWpkY3dnUTcyUFNBMnV0bjNWaHY2dDR6VzByeTVXbDlBY3NwQmpuaEg1NW1aaHpVQU1rcm0wb0t2RmNXM29nOWNmTjh5cnF4ZkUwWTVZOGptUmlkUXhLR1JZSlczWlM0Znk5a0ZONk5iZHhoZG82V1prZGd1TUZuSVd5dVlvSFU5VS9jUUVia2ZyMlE0Mmk4YXptdXNNbkFSaEQwLzBwa3l6aGxZdDZNNnh4ajlKTnNTS0ovdWpvMHVma095ZmZOVTMwdDlUQlNlZU9CNDhPZWo3M3BHZ3F5QW4rMGY2RGliN2sxbzdaR0pCQmVLSDZnOXZwRk1MK3NzWXNmU0ZXaGpHbVVmTWNXWmtwYjN0NEdCenBmMmtwd0pOTmo2OCtPN2x3TUhBeS9XMncwcGZqKzZaYWwrWjdudlYxcjR5eWNRZnJjNWRHeUtRRXdzV0NDQ2h2T00zTGVodGdDNjVRN3puanR1UDZKaWJhK2tCZjhTVFZ5L2JoOHRTSjdJbjR5Y2RON0RkVFVmZitGUzJMRFY5Mkw3ZG53UWp4WHNHNStZNmFBMS9DQkpreGZRbEZPWjVhVnNMK3VUMTJJYlplTkVNUWRySCtwbUgyWTgrWHU5am9va2JnTWhHYjBiR0Q4dFFaN01IN2NQUk9IZ1YzRW9QdHc4a3NtV1krOGRIYnVqZkNWMDAyZmZ1K0pIV0MxZ0ZZZVVRbURvVXBxYTBvQWNieHpac3hndFNoQ3NsUzkvWnRLZjlCSC9xUk1jeDBHYWprK3NkY1cyV2tYY2QwWGl1Zitwa3BEOFpwenZlaldoL3UzakgrbVQwOXZ2RTZiNlZaT0tScVcxb2FoT2FPcHpwMTRCdWJkejlDTkE3SkIveU1lWkJsS1A3dG04UzZOZkRka0lkSDlqVWxEQSt2TjRmcFR2YXByOWZEUjRzRHRQMDRiam10L3UvK1BSQVhJMGRVVFhRYlBmUmowckZvQWhLaDBsT25CM1dnbTdaL1FpMXBSMml0TmpML0JpWUU1NzFUN0RQSEJNZFhuK0pQMlI4YkgxWUM0WitOVTNITytaYU9rWU9Sam9PNTQ3ajlNQ0JsdFR4dy9VT3VtZXcrM3QzTno2dnZrVVAzM2tlN0pDNURtS2htTCswV0NCODlMUnFRQTgyUXFObFI0Vm1yNWtmM3gvdGZubVRoWjkwcytkNDRIdTdCelNQVDU5b3dDUjYyZytqek9MVjRkeFV5OVRLVlg4YkUrMXY3OUhJaS9USmREeCszSDV5TWpVeWRUSjFNTmNUdjluZW9oOHEzZUFHZitUVm1IZWtCZDBDWmNzcTF6eUVSelBrM2dmUThla3AzR05pY3JHbGJYTUUrRy9vN3Uxc1ZrUEFsWjdvWVZ2SDluREx5ZUhoeXZGbWZ4Uyt4dU9mSkh2ejhqc2RQOTZNWDErUGRmVDJNb3NRMHFlbTQxcjJFSW5TSWU5YU9XamJCVUFEdGZnQU9udXorRDJLcjNSMysvZ2tuU1daLzNIT2dhV0RpMWw2Y21xeSsvdkE0Y0NuazZudWtXanU1YUJHTkV2TzlkT0o0ODJiWlBmNllQYlFzeklRajNZdlBsQUJhbnBGZTZEU2REbG8vd1hhNDdIU1dXYTdoWHh5UE5uZTdxRkxtbXBBZjE5TVJLY212eDl1SHJZYzk3V01ESTVFaTkvM29ZMVdodVB4NGMyZTdxdSt0cjcrWlB0MGdyNUNCejVRR3V5QlN1K0IwclMycHduMEtDcjlDRHJSTmtuczBiTTV2YjVJTWd6ZFA4Yzh0Z2Q4TWhPZEdra20ydzQzUGRQOUhZdUhORE4zOVZqcGJCS1dKbzdidnQzRUpnZDZlcE56ay9Ib1pGdmlzVDNrVzArdlZmSTBIb3g3bEJIcHZnRWFtUmRIamdjbTUxQml6RWthUWVHNDNYTjlOZEE5T05MZFBUSThzTm1kaUhlOE8xN1QySEJ6SkJvL1h1em82VG51Z2VjaWxJelRmWm9aa1NWS1Y3Q0hiUWN6SWtTUGh4bVJKakVnNFJtTURrUHRBeVRPNWw1MmEwU1BMRFBYSGUwWkh0NDgzaDd1TzdrQ0owVy92OVQ0UlVnNGd0QzR1TGpZQnMvdHhTU1VYdjIwVnNpVHEzbGFWZHJoRUI4cVRXQ3dUSWtQLzlHWEFLR2pMZTg4V3JVS2VuS09TY1RqVUJ4dTkvZVBlQktRNHlhak41cXg4U3FhUzNwQVpud21iNktUait3RzlpaG14Q3BLNzR6aW9jQ0gwUVBOT2s2cU5QSGhQcXdDeFQzdGs1ckZjeUs1TWhYTkpub0dQQjNUbTU1NE5qcWxGV1RJdDJ2L0dFL2NKcnBqL0pIMVFXbTNHdklxZWRyczMya2V4Y1Bmanp3TldmRmdwUU8xVGpKbzZKNlhtemZhRlNGNmVMdzdta2prbUhqMjJBTnhiTHhNZlRCNzA3YWRMSzNLUmozdGZZK3FCZUJwOFU3cEtoa1JXb2lQbEw1SkxBeTh1MXFMcmlXZ3hnQ1Z5clprdVNvbi9DWjlQVkVhMUx1Tzl2U05YNVdyd3lhU2JYUEQ4U2pLSE0zMnJ4LzhYK0p4aTd5azlGNmxFaEV6b3JZOTRFTVNrK3R0M3lHdkgxOXRyazh4OGZKMSsrR1g3U2ZEbmg3UDhNbTc3ZVB5cllVNE03WGUxb0x4WTNCN3ZUdVIwRGlNRUpRVnZTSFA1ZEJRR290RHo4aGNlL3RLKzl6SmNjWDJWbnpoYXJwOVpRVmFKVmNWdmh1MnRvNVA1bUIvSzNOVEhiU0cyVEI2eURwS1JGVGE4YmdZTDZZMU91Y1pIdTVncXJWWXM5QVlPUjRlNjFtanM1VTNqTk5NeC9Dd2g2SGoyZ2RzUUdsRkxOYnlLc1hwVVR5UFVBWWE4Mk04SHMvcU9BQUEyeVVTT3JiREhaWnIyNkRTaWx3dGVqU1E2QUhGT0ZzTyt0ODk4b0Z4V21HclZVMFJHazlPL1JUMEFsTktTWGd1L0N5MFhDbmtEUmJ0Z1djcHhTZERBMmJpMmhDMEdUbU9NL3JOaG1zSTdNeFBRMWN1eGk4QTJtcDE4RStEQnVLb3djOEpRNUZSNGpLcmRUU3l4QVhwSitxdGhyeFM0Ukt2RkQzd3c1NmtOR2hzOEFlRUdmVXNxSHBHRkx6bXRvNEdERGRQd2I2RHhvWXRYZEVlVDh5SWdHd1VsZ0JUVmpLbVVOcUNoMmp6R1ZaMllLZVRwZUJOOGllVkxsKzRZSVhKK3BTTXlDekUvTTFMRHJmYmJybzhQWnVINGV6czgrZlBweE9Yb1l6YjRSYkZKVVBOM29hNlI3RkVCT2psM3l2YUF5dE10VUl6dEpsYmNzaHMzaklCcUovUEVQbjA5SFRpOVBUejJlZHprd0xZYmk1UjYwNHhUcGRxZWJPVlFsNEV2VmdyTkJQekIzd3lHNzZjZ0hSNmlzenpCSHZpRkwvQi9FU0lkYmo1U0l5cFhXa1NQU3lWN0ZFTWVUVkM1NWlnVFhDN001YUppZlB6Q1pENjlCd2R2WmUyWEU0UTBlRWJUT1JsTjJzMU03a2FQWDFYOXpncTI3QWxoVXVOMExtYm9HMUdGazJYNStmSWZKN0syMEVmQlQ5UHNYdlQ1MFQwczdNMDYyQjVXeTNVcWowcUZpNHR1NWdSMFI2MWVackpCVzBSbVE5WkxKZUF2ZWRsRWJhVVdGbVU4dnRuOCtqemM3dERwUHcxeEw0ZmxkYU0wNE83TDh5MlFPMzJ5QVhORWJkazJnUG9jOHZzUGVCYmNNVjdpUVkvTy9VQ3RabXBMZVRkRnVQMC8xQnBKZ2JNZHBNcEJkUjVSSVlxem1QczhDa0V3TFBQZVlmTUI1TTFGZU9WNHpSNDJtemNFV3FFWm1KQlFiU25RaWJUWHNyT0VtQU5hb1hOWENJMWFNMWE5ZSs3ZXVFQzltandxL2JRWHlMbWFJTlJsQ3dXazhrVVZqU3NjVWN0SWZYbkNidWJHc291MUdLUDRxSGUyVXJRdGNWcHhoQjBzSmNUSUVWZVMrQjdTVllzWjFEY25Jc2l4U1ZyaFU1WFZCcnNnWDBDOVVJenNZMFpoMlVlQ210VFJXSkN6VnF3a0V5N1dWRm5JVU9nK2FyUUpIcFk5ZHNqRWJPSnMxalJzQ2hWb2RFaFdFUjYzWkxBNkkzVExLOVU5UFJXTVhxSVZvZW9FNW94OVByazAvbjUrYzhaV2FtZTJNd0VRRit5SW05STZsUmE1SldLclhHRU5xck5MYjFLZzlBcy9uVmxQcVdIR1J3U0FuK2NodDJVUHFsQmFWR3FuQkc3aS9ZQXBhMktMbWdtOWliQ2ZnYWhKeFM5Q1F4eXVnL0ZwTDc5UXpIT3M1VTh2UjdZOEpneDVFRjFXdGFwZEs5QkRBUHpmSmpWeVN6bTBkVjUyZTVuOU5xamxCRTFxNlp2UXVLZnhCN1l5VllYOUFLOXhvbjdOUW1OVWsrY1dtVEZsMlYwUWxkVXVzZnRhb0E0TGVpSFptSi8raVFVT2lUclpwWk5BQTBsREd2UUI4MnFTcGVyZXh4L1lENkEwZ1Rhb2N2VHVmY2JZZ2lZenlSV3Y5TDJjNkEyeVpRZWYyQkdWQ29lckRubXVJYUcxVUN6ejZGWDZYakN6RjRDOUxsWWd6MlVQV2phcE4yOG9GTnBxV0tjN21GbGppZ3Q2NFRPMGQ4Qy9PZmEzS0g2WTJLZlpWM3huQTVvZzNoWFlkSlN1a09VdVEyanFyU3V1c2RDNzdlSUhTM3RyY0VkQ3V1RlZ1UzV4TXJYakw2UVIxWEtpQjVvTGlNMFVWcVBwNW5yRDlabFl1bGEzS0hZOXlmT0oyWjE1Y1M3NkZFdUkzYXdiaVArNVFLVmx2VXAvVjQwQWZTcFVsdkM1bTllbE15TUxudEl4WkNYeW1ncFBVWTVMalpXVmFWMVJZOWNMTVppOE5pdmpabTFnTkpodDJKTDZndDVwV0pjVStreFhqWnVRSndHcFdWUmx6M2VHOWdVUXJPMVVhZWd6VzZ5VWphbXhxcXBwajBVMlFpMVBJalRWcXV1V2w2dTE4RHVZY1NyRFpvTlhWb3V3N0tlQmk1V1RhVmlKeFh0cmhQSGtwdkRSc0NvVzNSYktUMmVqZ1dmcEhUSVlyR0VSZDZ2eXg3eVhZbW9CZDJCOWxodGhscWV3NjNQSGpFREtSRFBhOHlJK1ZBb25XRjVuVXJ6dDkyQk5ET2lCUFpBcFVXM1cxL0k2NDA1c0k1M1dsdklVOEI4Rk1XeVFhYTJXbDRacFIzY2h1cHBVU2YwZTJzR0dnQm45cHI4SWVQZkJVVkZqdFVhcHpVOVRhSFNBVlRhSWVzNWZaRzdQcHFoem1xcFRXT1NITUtTTUNUeXJpT2RKV0t4d3FTZEVTSGtvZExOUHF2YnJRK2E3bTFtendGNnI1YTZoMlRGRXpLc01xUGo0QWNxTGJHVkdnR2V5L1RTaHIrNTJTZkxPbXQ1MlY0YmE0RVc0Z1JmazZYeG40cXN3dW1ybXNvS1Zja2V5ZE9KQVBHMDdOWVhQVWo0Q09OeDNGcHFUQ3drN05abzAxVTFOYkI4eFlNMUhmUG5RU2dSbTEzNDEwWjkwTDN2SS94bmJJdlhBRTNaSVVITjlGcG5JNkJ5Yytzd0hTSC9uUngxeS9wQzNzMU5vcGREZjV4TjZHKzZTRjVJVHBZVjlCek9JNFZMeGFwcFY0L25Zd040MmlVNkhLTGVRd2dHTm9PSHVreTZvVFA1ZkQ0c3NRNmJucU0xZDBwRDRiSmM5a3lBRVJ1MmJsbm5JWVRjZFV4Z0xhZm41NWQ2cFVhaDhkeGloTTdkNlBRMFh3cDU1VTh6QjlRU2tkSjVMTThRNUozbis1ZVhKcDFDRnpKQURVSnp1ZytMVlRscVNrN0pCUVFYL2hGVzBYa3NyemNtVUtGemkrWFNxMC9vVENianRZUFFVVVl2dEtxMHBXS3YzZ0NHUE5tdDk0VCtnc0hBVWhiWXFVVmZXVjZ3WndvSzYvRHJQbXBhNWJDWXFuUXhJN0k2anlDRHF3TzhGNmd2MDFXcHdSV3lJdGtwM2pFVDEzZGVEajFkdVhBQjZJOW1jb1JKbE1VYXpnVEVmQ3hla2RLU3FrSXR5VE1SYUh4S29od3g2TjE1YjBucHZWU3FmRWFFT08wamw4UFFmVEluQ3dhQnhzZ2UvSUtaU3RTU0t5RE0rRnd5eS9yOHVrOFVxUWZWdzFYc1lTVFJ3NnBmNlp0Y05HYVcrSkFsbmQ1TGxjK05raElKQkRoQmNBR3prTkI3MGhhVmxnZzBLbDBPT21oc2JyYldwalJHRUU2aVFtbE1KdTE0TFVGOUZLOVMwenpqcGx6Q1VRMjdEc0wrcUhDRmMrTlhhc2dieFN0RDFOSWRpSWtkY1pJUzJrdWxVNmxVWG1MNXg4Z3pIRW1DTExtRVdHMW5iQ1dxb2ozSUNmMW13UVZDeTFJdEovUVp3M3MvUkZQNENWT2hrTWxyL3dFWVlzWk13TTl4UnM0b3NMeFBNTlRRd1FhVnBoUStYS1czR0hqYWhaZFZVR3JxT3NIRWVzMnNraUgzeVRTWndsNjdYU3Fkem5kRWxnS2Nlc1dBQ01YT2NMRmFPZ1VoTk95cWt0SmJhdUVDMERKYkd6VDZlaU1pOGZsUXltUXk1YjNlREh3VXRDVmN2cGtaSVNBRWtGbHcyTUhZMThtYkdxRUxQRjhKdWx1MXh5Z0xGU2FsMWo0d3RHR05nMWFHRjRUTzV6TUF6WXB1bHk4U0VXWUVEaktoNExMemtXWmJvdGFlTlVGVzliU2xnajJDUkdrb1hLaGErekRsYm1Mdmp3U0s0alBldkRkRGxIWTRmQkdpdEREaktFaVJaczVRYXpjMzRtbSs1R202bkQyd0dFZG9wZll1YmlEMm05NkFhSmNrZThadXAyU1dLQjJaOFRsNE96dkVjZVpFN2J0RXBTVTFlcFQ1UjlGMzdGNGZXSEtCUFZqcENmM3ljbEFSK2VzdjdFZ0JHWkZWOEZvR2tEbWdiZVVMY1A1ZzlBbWRONG5TdHhueHFHeEd4TU5pSURYMXBHNmJDMHkwTi9yaW00RVRmRzRXRDJqSnJraUFzNW5OaHZpVCtwdXE1MXo0cW5FNnNJUVo4U24yS1BZYlMxekhqcTdmSEIwZHhXSUdTQUFjbzIrWXAvMS9tNFM4MjR5bzJZZHA2eE1xTFZqUjA5TFR1eUtEcG9ub2RheTM5LzExYit5YVRpdzh2VFB5WGVGUzlvVCtvRnJMR3dVci9neTBLcmg2clpXZjZqMWRDbmxLcFJLUktMMHo1QlBSSHJFNjZha09HYkZLM2VOYkE2bmx5ZUtUUGYwUFFQTjZsSWFNNkdhcHVvRXVTR3A5T3FRZDhyNFhsV1pGa2VYckJscjFkTHB5dnp3SWVRQmRQMHJmVlUzcE1pVWlSZytpZEQxNW1nOVg2ZFdMY2JyRzV0WS9iUStTRVMwVjRyVFpCaTBYUEh3czlkWmZ5Q3RyajFVQ0xkWVJkSlUyNHZkUFJVK3pjajBwVFZyamxrcC93VFkyUTlWVXJpZDdWR2tqRHBMQ0JaVUdlOVJOTVM1VnJrL2Zaa1M1anV5aFNCSlZzVFZPbEFaN3NIVmxqMEsxcW1uUVNKU3VJM3RBYzAweVZjMklXUGVvRzZWalFkNXVyNmowVmFNSDRqVFVQZXBJYVJ0UGdhY3RwTzR4cG5YNWwzNjgwQTZKSHF5Y01kUUh0Tjh1VWJ6SnNsZnVRanQvWDMxNi9XYjFBcHRib3VpMEplc0JPc2hsaUtlaE9wMVh2bXRCVDQwMS90bHcwVHdLN2hBemdYcFFPaGNVbkFWS0lkZjV5OGduV3REVG50MFhObVB6RUI1a29TSTNDOC9PdkpDd2pXYWtBcFZDUzJkY2MxclF2LzIxaGNkNmgwQnBscStIdWlsWW1vWGdrZG16cEZJbWUrU0w1bFhjRmdZeEp6WmI4U3JwWG44ZFFKc0ZPeVZKWHN2ZW5pa3ZHYnMwcjVkM3ZQdjZUN01SY2lJdjhuWnJOdmZjanFZNWx4T2lod21ZVFJsSGgrYjE4djQrNlJuODJBQ3RSTHhPUFR0clRqNjcwQUVRbXJMdlFld0lTNUUyN2NzcE52VnV2Y1pJUGNwRHFMYUxhODlyRUlZT1dFRm5KYiszRndwNUhWeVROblNyNTFQamh3YXVlUWlyVE95czhMelFDLzRoTzFXUTdLbTlWQXFFOXJ3dGQxM1RiMXVlQnR2TzBpajJOT0pubjdXQVlZSUNWcFlvN3g1ZWkxVVcyc3BkakxYemFPdjFCNmpwcVZJWHFPRHphYzBZbGtRN1pVZWhRNkd3M1dmckxIdUI0YW14clk0Tk01U0tSV3JETTJtZEEyYUh2U0FWRk5OZUNLb2REcUd2L0ZXUm0ySXR1OThhL00xTGJrSXRVV2JtT2NSbUdQT1FJeU5SbEpRSGI1Z3k4a3lzcWNKRnMvdis2bjc5QnZPaVREclFTVTdoS1Bsdll5OHcwY0NvREhhV3BFd3FCSVpXSXY2RFNsZjY3b3ErM3ZKZzJJdUlSR3ZlN3ZiSEdTYjNMNHFjak5xR3JPQm1pdUtkZU5vNmIzZHhINXNxWGxOOTNEQzU5ZEdBRVVSVVZHeW5OV0JJRksrS2tpUkQ4Um9weWVLaSs4dUtVOFhycUNSTDcwamVYM0gvZmFVVnhVMlN1WGlNbTdGQ3c1Q2lDcnlkblA4RlE3OFpxSExKL2NteDZaWVhEVFpPaUtpK0JvL1lLWmRndEptRHdhQ1pERUYxeWx5YXZWMUtwa3VyZzdqRjNYdlVUZTV2VWR5SHVUZ3lCMjFtK0ZTclNFbDRMaEs4WVNMbjJSMHp3Y0d1S3RCZlBmM1RMUitndHJkMFM0MDMwcUI0Y3JjWmx0eUVodHlRaGhXTGkzaFI1SEVTTzNiQnE3cWNGK0VkOEQ2Y0lIZWNJVGQvZ2RvakxHUFZXOEhnVGxteWpDTDNBNkxJRTNDcEFnUzdndGNVQ3VlQldiQjkrbEwxamd5ZHNjWUJvUFlIaElnYStWZ0ZUd255dktMK2paWlgrNkZRc0pDSEdWaEZLZGc5Q3BDTEd5aklJbUczQ1VraHQ2dmhKUjdtWVV3cFpCbk9VZ29NbU5tdzFKT3dCMnFoQUJxREx6QUw4czV3Q0dUT0tDN0JQUHpIMitvMzdHZ0s3cjVxK1JDMDdRU0dSb3ZaRVpLQ25VOTRsUm9sQmNId2ExQ0lqR3NKSzRLVGRUeEJSalJvNDVFSjBCTytBZUlUY2g2WmVWSWhBa1lvK2dwMm5NRnZZUWR1TDNabXlPREpYdk53MTkrdE9tNk5ndFM3M3d4bUxqQXpaQldKb29yS1hFUWlQekdMY3hSYkZKMVNmd0IxVXdJSmlTaGRSTVZaZ24vM0F4UlVZQlNhRE9CakNob3FrdE1iRGlPeTRwamhnc09kT205QzAzUjA5V3B5N0wzWnp3bExveTRyL3ZHZVYzLzFvajlVMFZGZzlDU3hpZnFDMmhmdFFCQkJUcnlIa1lJMlVKZVFWWGhmTHRVWmdLcnlvamxRY21mR204OTd2WGE3SWtjRVk3Qy9VL2VkY3pxUHgvcE9Qb0ZGaklJd0ZIRmhBMHlWaEl4Z3NPTWt2a3JxRTVkQTdzRkJLMlVlTFNoazdCbFltbEhmQXpOT3A5MEppN3pZd3dXSVdZZFA0TXk5VTEwMTNLT290ZS9OMXFzdHozdXpqUXNJTXhHZlE1YXhueG9hVWNHY3BFNlI2ZUp5MGw4SmYzbEpNNEZSaTFPVWFselZFL2dENEJvN1RwRkNVQ0tkaUZ5UkpjNTI5SEdsdGJaYldIMzVOblp5OHFubmpRR3hoWm1aaUhwTG4zdlhXSEk4dXMrTTQvNzFsKzdQdUJ3NmtrdVcxZGRJUkJBNFcyOXlzS25tKzI2OWJldHBmRFUxT1BZaFp2TnpBUUlPYVlrOFp1Nm1sMG92UDZhbHBlSVc5NWZkdnBiMkVpSHpRK3BFNlNrRU9Gdnc2Sy9EOXJkUHVTMWJWOXZZOEt2TmswOGYvM3B2TVB1NW1sSWd3QVZnckk3SUF1NTJsZ3lsa2ZxS2lTTWR0RGkvT1hhVTlBd3ZkajMxQm5oZDcxckdKZ2RlVFcwMWppV1BZckhZUm05c0kwWlNBd3lZRERncUx0TklEYmlGZ2ZUOHVKOWdVWVBoVVlyMXZqOWErMnVocCtPNFphWHpaKzdhMTlxNVByblZ2VFV5TXJYVnNydmIySGpWQ0dtM3BRVm1XbURZSFJ6OFBqZzQyTi9ZL3dsUy8rN1dJRWt0K0d6cDM5MjlncmQ4YXV5SDk3VzB3QkkxNFdKWWdldDJyMkFNKzRYWHhxdXJscXV4c2JGUGszTk4xVzQ1WGYzK2lLMXZPNXYrMkY1Y1dWOS85KzVkTzZaM01MbStUa1p0MDIyYmJac0RydzRnRGJ6YXZKZW10MWZhWVB4eVpXVnVaV1dsSGQ2S2I4Znh5c0RBOUFDa2crTGpBTWZUQTlNSEJ5ODM1NXAwM0I3eGYzRm45d3JmOXgvYTd6OEsvZmN2NkYvUXY2Qi9RZGRWK244QkJnQzdDbVlkaDZwWXlBQUFBQUJKUlU1RXJrSmdnZz09IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMV9QUkUiLCJGSURPXzJfMSJdLCJleHRlbnNpb25zIjpbInV2bSIsImNyZWRCbG9iIiwiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsImxhcmdlQmxvYktleSIsIm1pblBpbkxlbmd0aCJdLCJhYWd1aWQiOiIzMGI1MDM1ZWQyOTc0ZmYxMDEwYmFkZGM5NmJhNmE5OCIsIm9wdGlvbnMiOnsicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJ1diI6ZmFsc2UsInBpblV2QXV0aFRva2VuIjp0cnVlLCJsYXJnZUJsb2JzIjp0cnVlLCJiaW9FbnJvbGwiOmZhbHNlLCJ1c2VyVmVyaWZpY2F0aW9uTWdtdFByZXZpZXciOmZhbHNlLCJ1dkJpb0Vucm9sbCI6dHJ1ZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsImFsd2F5c1V2Ijp0cnVlfSwibWF4TXNnU2l6ZSI6ODA5MiwicGluVXZBdXRoUHJvdG9jb2xzIjpbMSwyXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0Ijo4LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjMyMiwidHJhbnNwb3J0cyI6WyJ1c2IiLCJuZmMiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fV0sIm1heFNlcmlhbGl6ZWRMYXJnZUJsb2JBcnJheSI6NDA1NiwibWluUElOTGVuZ3RoIjo0LCJtYXhDcmVkQmxvYkxlbmd0aCI6NjQsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjo0LCJwcmVmZXJyZWRQbGF0Zm9ybVV2QXR0ZW1wdHMiOjMsInV2TW9kYWxpdHkiOjIsInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjoxNjV9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0wOC0wMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ik9uZVNwYW4gRElHSVBBU1MgRlgxYSIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjQwODAyMDAzIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMDgtMDIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MX1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNC0wOC0wMyJ9LHsiYWFndWlkIjoiY2I2OTQ4MWUtOGZmNy00MDM5LTkzZWMtMGEyNzI5YTE1NGE4IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiJjYjY5NDgxZS04ZmY3LTQwMzktOTNlYy0wYTI3MjlhMTU0YTgiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiWXViaUtleSA1IFNlcmllcyJ9LCJkZXNjcmlwdGlvbiI6Ill1YmlLZXkgNSBTZXJpZXMiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6NTAxMDAsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJlZDI1NTE5X2VkZHNhX3NoYTUxMl9yYXciLCJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURIakNDQWdhZ0F3SUJBZ0lFRzBCVDl6QU5CZ2txaGtpRzl3MEJBUXNGQURBdU1Td3dLZ1lEVlFRREV5TlpkV0pwWTI4Z1ZUSkdJRkp2YjNRZ1EwRWdVMlZ5YVdGc0lEUTFOekl3TURZek1UQWdGdzB4TkRBNE1ERXdNREF3TURCYUdBOHlNRFV3TURrd05EQXdNREF3TUZvd0xqRXNNQ29HQTFVRUF4TWpXWFZpYVdOdklGVXlSaUJTYjI5MElFTkJJRk5sY21saGJDQTBOVGN5TURBMk16RXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFDL2p3WXVoQlZscWFpWVdFTXNyV0Zpc2dKK1B0TTkxZVNycEk0VEs3VTUzbXdDSWF3U0RIeTh2VW1rNU4yS0FqOWFidlQ5TlA1U01TMWhRaTN1c3hvWUdvblhRZ2ZPNlpYeVVBOWErS0FrcWRGbkJubHl1Z1NlQ09lcDhFZFpGZnNhUkZ0TWprd3o1R2N6MlB5NHZJWXZDZE1IUHR3YXowYlZ1em5ldWVJRXo2VG5RakU2M1JkdDJ6YnduZWJ3VEc1WnliZVdTd2J6eStCSjM0WkhjVWhQQVk4OXlKUVh1RTBJek1aRmNFQmJQTlJiV0VDUktnanEvL3FUOW5tRE9GVmxTUkN0MndpcVBTemx1d24rditzdVFFQnNValRHTUVkMjV0S1hYVGtOVzIxd0lXYnhlU3lVb1RYd0x2R1M2eGx3UVNnTnBrMnFYWXdmOGlYZzdWV1pBZ01CQUFHalFqQkFNQjBHQTFVZERnUVdCQlFnSXZ6MGJOR0poamdwVG9rc3lLcFA5eHY5b0RBUEJnTlZIUk1FQ0RBR0FRSC9BZ0VBTUE0R0ExVWREd0VCL3dRRUF3SUJCakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBanZqdU9NRFNhK0pYRkNMeUJLc3ljWHRCVlpzSjRVZTNMYmFFc1BZNE1ZTi9oSVE1Wk01cDdFamZjbk1HNEN0WWtOc2ZOSGMwQWhCTGRxNDVyblQ4N3EvNk8zdlVFdE5NYWZiaFU2a3RoWDdZKzlYRk45TnBtWXhyK2VrVlk1eE94aThoOUpESWdvTVA0VkIxdVMwYXVuTDFJR3FyTm9vTDltbUZuTDJrTFZWZWU2L1ZSNkM1K0tTVENNQ1dwcE11SklaSUkydjlvNGRrb1o4WTdRUmpRbExmWXpkM3FHdEtidzd4YUYxVXNHLzV4VWIvQnR3YjJYMmc0SW5waUIveXQvM0NwUVhwaVdYL0s0bUJ2VUtpR24wNVpzcWVZMWd4NGcweExCcWNVOXBzbXlQeksrVnNndzJqZVJRNUpsS0R5cUUwaGViZkMxdHZGdTBDQ3JKRmN3PT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZkNBWUFBQUNHVnMrTUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFIWVlBQUIyR0FWMmlFNEVBQUFiTlNVUkJWRmhIcFZkN1ROVjFGRC8zZDU5d2VRU0lnUzlBUUFYY0ZMQVFaaTlmcGVWejF0WS9XVFpyNVd4cGM3VzVrbkxhNWpJM1o4NXNyUzJuTTJzanRXd1pTN0lVSDRINHhDbkVReDREQVpGNzRWN3VzODg1djkvbEluQnZWSi9CNFB2OW51LzVudS81bnZNNTU2ZnpBL1F2MEhiL0lyWDNWRktQbzQ1Y25tNGluVUlXWXdMRlJtWlFVdXdqRkcvTjFpUkhoMUVaME5SVlJ1ZHF0MUJkKzJuU0t5Uy9PaHlzMCtsazNlLzNrUTlxdkQ0WlV0YTRWVlNVdVkwZWlweWlUaEFmb2NvT1JWZ0R1dXczcUtSaUFkM3JiY0V0alRqWUlvZjZXYUhzQ216VlBXQ014K2NnaDh0THFXTUthTVdzVWpMcW8yUnRKSVEwb096bWVycFF1NGVzWmdzT05rR3hIN2Qwa2R2VFQxN3M0T01VN1ZJOFpoamdHYU0rQXE5aUVOdThQaWYxdWR6MDdNd3ZLV2Y4R2xWb0NFWTA0UEM1V2RUYVhZRmJSOHZOdkw1KzNLZ2ZiNXhOTXlhOVJhbUppeW5hTWxHVFZ0RmxyNmJhOXUrcHFuRVg0dU11UlJnalNZRWhyTjd1dEZGZTZscWFsN05ma3c1aW1BR0h5blBwYms4Vm1ZMHhzdG5wdGxGQ1ZDWXR6VHVCTjgzUXBNTGpUdGV2ZFB6U1VuSjdlOG1ranhaMzlmWGJLRGZsZFpxYnZVK1RVZ0duQlZGNmZRMmlQSGc0VzE2VVdVd3Z6YmsxNnNNWkUrUG4wcHZ6N0pTZXVBeWVzOGxjcENtYUt1by9wK3FXcjJVY3dJQUhXcnZQMFlFemhYQXRMQWJzc0hocDdpR2FtdnlpalA4cnlxclhVV1g5WG9vd3h5QXVmTkJycDQzUE9CRlhabGtmOE1EUmlxY3B5b3dBd3B1ejJ4K2ZXdnovRHRkZTlzbXN6eWd0Y1I2QzF3YmR6Qmw2T2xxNVdOWVk0b0dhdGhKTXJrVEV4MGpBUlNIQVZzKzVyWWtRTlhiK1FnZlBMc1E2Z1h5SW5zcmVRZm1wbTdSVkZZZkw4Nm4xZmlVT2tZdlNoa1VQeHZidWt6b3k2SzFpaE0xaG8zWHpXNkV2U2ZYQStkcGlXR2FXZCtkb1h6THptR3dLWUZMQ0FzUkFsUEJBaE1sQ0ZYVTd0QlVWUHI4SGdWY0pIV3ErRjAwcGxyK0RNVGRyUDR6dnhZMTFrTk1oeFQrU2VUR2crZDRWNUxRSml0eVVHSk5COFZGWnNqZ1lCWk0vSUkvWENUa2owcXlET3BGMkFWUTE3Q0lqVXAvRG5UMVVrTDVGNWdkaitzUzF3ZzFnRTNnaWdtNjBmQ1h6U25QWGJ5QVBiSVh2K0lEcEUxNlRoYUhJUzlza3lobG1NRTVGM2NmcUFLaHEyQzBFNVBIMWdZYVhhTFBEa1pHMEhESk9uS1dIcDUxSTB6NVNPdXg4ZTFXQXVaemRIUXJUa3A4VG1qWG9JK2xhMHdHWnN6dWJxYk8zaWZRNkEvVzd2VlNZc1YzbVIwSkt3a0tjNFdIaUJrbVI4STNDQ2dJODdvT0w0cXpUNVArUlVKQmVqRU9nQVBLOGhZUHphdE0rZUlUcDJJTzl5VFFtZXJvbVBSeHgxcXhBY3NpbGUvdWJTZUViY1dRR1lFQ2doY0xZMkh5S2pvZ2pIMjVoTXBqcFV2MU91Z2xpNGVoMmVSdzBPMzJiSmpreXVDZ056ZzB2emxZTVNpU3MwdW9vNE1HN2hNT2pDRWFYMXlGRTBuU3ZqQnp1VG5FcEs4Nlo4SW9xRkFJdWJ3OGtnOUFyRWFSRVdTWkkrakg0WGJwNmc5RTlFbkpUM29hUnpETitNVUpCUURIbjU2YThvVW1FQnVzT3hCcy9ONSt0SkViUGtBRkRqOFVHdk9zL0lXdmNTZ2xHQmh2UzcvRlRZZnBXR1lkRFk4ZlBBeFdTQTM1c1RDNHA0K0xtNEFhcUlvUGVRdGZ1Zks2SmgwWmh4bGJzVVhPU21YTmlmRDVaVEFreURvZmJiY2NseG5BOFdOQXF4Q2JSTnlraFh4UXBhRHc2N2ZYVVlic2lHMEtodHYyb2VJdmg4cmhRTVlPY0VBcVhHL2VJK3puZ09jNXl4cjhxODJJQU0xYy9GTEZPcGxxdTVlRlFYck1aekdjVkNqWWJMV0c1STRCVDFldVJybGJ4dE5PdE1pdERERWhMWElJeW5BQXZ1T0VXRTNYM05kQWZ0OTRWZ2FHNDJYSVF0MFpYNlBlQ0UvcVFGZTlySzZIeDdZVTUwS3ZIN2ZXNGZTK3E3S0tCSnhzZ2dCWDVwU0FHaDFqSXJWaDV6UTZ3M1JmYWFoQlhtL2FDYkNaVGpDVUZVVHlXWnFXOXA2Mk1qSlBYVnFPclBnTU80TnY3NEdrZitvd2Z0TlZCRFFuakZKcUhTdzE3cFh2aFdXNUtacWUvUTQ5Ti9VU1RDQVZXb1FYRklIQkhYWGUzRlByVURzdUdEbXRGL2hIS1RIcGVreGhpQU9QSStTSnE2UzZIRjRJOVlXemtCSlRvNDZpVU16V3A4UGlyL1JpZHVMeEtZc1Nrc1Y4dkxsT1F2aEdYMllsUjBPQmhCakMrdS9nRWN2WTBBcEs3WWs0MU54alBTUW5XRkhURjY2VXJqZ2V2QjhDdTVhK2wydllTUlB0dVZEbzczaGhkTVNIblVYN3RUanNWWkd4QWwvV3B0aU9JRVExZ25MMjltWDYvdFIxdG1sa1lqOFc0WCtDU2pXY1VER1kxTnBTL0M3aFNLcWlNTE0vbDJRbVNXWjczRGR6K2dpbzhCQ0VOWVBRNDZxbmt6d1hVYnF2Qmt4alVRc1dmWkZnYnVvM3JBZit3TjdqT085MCt5bng0UGkzTCswbllMMVNjaERVZ0FQNGdQVi83SWQxcSsxSFNobXVHa0lxV1JQZ3l4TUZxUDhIZmpUbmpYd1k1YlFmYkpjdDZPSXpLZ01Ib3RGL0hlMWVnc2F4SFNxRzZ3ZmRtUTV4OE55VEZGcUJjcDJpU293SFIzeWs1KzM2aEY3dlhBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiXSwiZXh0ZW5zaW9ucyI6WyJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiJjYjY5NDgxZThmZjc0MDM5OTNlYzBhMjcyOWExNTRhOCIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOnRydWUsInVwIjp0cnVlfSwibWF4TXNnU2l6ZSI6MTIwMCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMV19fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMC0wNS0xMiIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWXViaUtleSA1QSIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMTgxMDMxMDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjAuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4wLjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjAtMDUtMTIifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIwLTA1LTEyIn0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiOTZmMGNjYzEzNWRmZjlkY2Q2YjNmZmUxODUyZmUwNmU4ZjVjYWJlYiJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyI5NmYwY2NjMTM1ZGZmOWRjZDZiM2ZmZTE4NTJmZTA2ZThmNWNhYmViIl0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJJbXByb3ZlSUQgQXV0aGVudGljYXRvciJ9LCJkZXNjcmlwdGlvbiI6IkltcHJvdmVJRCBBdXRoZW50aWNhdG9yIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjQ1LCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjJ9LHsibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjYsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDYlRDQ0FoT2dBd0lCQWdJSkFLTTlGcWswK1g5L01Bb0dDQ3FHU000OUJBTUNNSUdSTVFzd0NRWURWUVFHRXdKVlV6RVJNQThHQTFVRUNBd0lWbWx5WjJsdWFXRXhFREFPQmdOVkJBY01CMEZ6YUdKMWNtNHhHREFXQmdOVkJBb01EMGx0Y0hKdmRtVkpSQ3dnU1c1akxqRWlNQ0FHQTFVRUN3d1pRWFYwYUdWdWRHbGpZWFJ2Y2lCQmRIUmxjM1JoZEdsdmJqRWZNQjBHQTFVRUF3d1dTVzF3Y205MlpVbEVJRVpKUkU4Z1VtOXZkQ0JEUVRBZ0Z3MHlNakV5TURFd09USTVOVGhhR0E4eU1EVXlNVEV5TXpBNU1qazFPRm93Z1pFeEN6QUpCZ05WQkFZVEFsVlRNUkV3RHdZRFZRUUlEQWhXYVhKbmFXNXBZVEVRTUE0R0ExVUVCd3dIUVhOb1luVnliakVZTUJZR0ExVUVDZ3dQU1cxd2NtOTJaVWxFTENCSmJtTXVNU0l3SUFZRFZRUUxEQmxCZFhSb1pXNTBhV05oZEc5eUlFRjBkR1Z6ZEdGMGFXOXVNUjh3SFFZRFZRUUREQlpKYlhCeWIzWmxTVVFnUmtsRVR5QlNiMjkwSUVOQk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRWZYMHNGeWtpdkNHOTVQaTVqV1dnME1zYTB4b1hxRzVSKzZYb2hrUFNPV3FtY0pXK0NrQzREV09BQUR6RERZWnVoeDBzMUIvVWsyQm9WaTltUklxYWdxTlFNRTR3SFFZRFZSME9CQllFRk1KcEtoM1hjZlJOaVhWV2Y2UG51ZFppMk1zM01COEdBMVVkSXdRWU1CYUFGTUpwS2gzWGNmUk5pWFZXZjZQbnVkWmkyTXMzTUF3R0ExVWRFd1FGTUFNQkFmOHdDZ1lJS29aSXpqMEVBd0lEU0FBd1JRSWdNOTBZVjBUVDM5VjdCRHhuZkZLSmJqVS9IdkVuSnNrY0ZnV1Y5L3RLcmZrQ0lRRGZDQ1RmQ3p3WVJXSnBYcnVOOHdSZjREWTFFYTY0Z2pqSTlqNWxsaElQdHc9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFnQ0FJQUFBRDhHTzJqQUFBQUNYQklXWE1BQUM0akFBQXVJd0Y0cFQ5MkFBQUtUMmxEUTFCUWFHOTBiM05vYjNBZ1NVTkRJSEJ5YjJacGJHVUFBSGphblZOblZGUHBGajMzM3ZSQ1M0aUFsRXR2VWhVSUlGSkNpNEFVa1NZcUlRa1FTb2dob2RrVlVjRVJSVVVFRzhpZ2lBT09qb0NNRlZFc0RJb0syQWZrSWFLT2c2T0lpc3I3NFh1amE5YTg5K2JOL3JYWFB1ZXM4NTJ6endmQUNBeVdTRE5STllBTXFVSWVFZUNEeDhURzRlUXVRSUVLSkhBQUVBaXpaQ0Z6L1NNQkFQaCtQRHdySXNBSHZnQUJlTk1MQ0FEQVRadkFNQnlIL3cvcVFwbGNBWUNFQWNCMGtUaExDSUFVQUVCNmprS21BRUJHQVlDZG1DWlRBS0FFQUdETFkyTGpBRkF0QUdBbmYrYlRBSUNkK0psN0FRQmJsQ0VWQWFDUkFDQVRaWWhFQUdnN0FLelBWb3BGQUZnd0FCUm1TOFE1QU5ndEFEQkpWMlpJQUxDM0FNRE9FQXV5QUFnTUFEQlJpSVVwQUFSN0FHRElJeU40QUlTWkFCUkc4bGM4OFN1dUVPY3FBQUI0bWJJOHVTUTVSWUZiQ0MxeEIxZFhMaDRvemtrWEt4UTJZUUpobWtBdXdubVpHVEtCTkEvZzg4d0FBS0NSRlJIZ2cvUDllTTRPcnM3T05vNjJEbDh0NnI4Ry95SmlZdVArNWMrcmNFQUFBT0YwZnRIK0xDK3pHb0E3Qm9CdC9xSWw3Z1JvWGd1Z2RmZUxacklQUUxVQW9PbmFWL053K0g0OFBFV2hrTG5aMmVYazVOaEt4RUpiWWNwWGZmNW53bC9BVi8xcytYNDgvUGYxNEw3aUpJRXlYWUZIQlBqZ3dzejBUS1VjejVJSmhHTGM1bzlIL0xjTC8vd2QweUxFU1dLNVdDb1U0MUVTY1k1RW1venpNcVVpaVVLU0tjVWwwdjlrNHQ4cyt3TSszelVBc0dvK0FYdVJMYWhkWXdQMlN5Y1FXSFRBNHZjQUFQSzdiOEhVS0FnRGdHaUQ0YzkzLys4Ly9VZWdKUUNBWmttU2NRQUFYa1FrTGxUS3N6L0hDQUFBUktDQktyQkJHL1RCR0N6QUJoekJCZHpCQy94Z05vUkNKTVRDUWhCQ0NtU0FISEpnS2F5Q1FpaUd6YkFkS21BdjFFQWROTUJSYUlhVGNBNHV3bFc0RGoxd0QvcGhDSjdCS0x5QkNRUkJ5QWdUWVNIYWlBRmlpbGdqamdnWG1ZWDRJY0ZJQkJLTEpDREppQlJSSWt1Uk5VZ3hVb3BVSUZWSUhmSTljZ0k1aDF4R3VwRTd5QUF5Z3Z5R3ZFY3hsSUd5VVQzVURMVkR1YWczR29SR29ndlFaSFF4bW84V29KdlFjclFhUFl3Mm9lZlFxMmdQMm84K1E4Y3d3T2dZQnpQRWJEQXV4c05Dc1Rnc0NaTmp5N0VpckF5cnhocXdWcXdEdTRuMVk4K3hkd1FTZ1VYQUNUWUVkMElnWVI1QlNGaE1XRTdZU0tnZ0hDUTBFZG9KTndrRGhGSENKeUtUcUV1MEpyb1IrY1FZWWpJeGgxaElMQ1BXRW84VEx4QjdpRVBFTnlRU2lVTXlKN21RQWtteHBGVFNFdEpHMG01U0kra3NxWnMwU0Jvams4bmFaR3V5QnptVUxDQXJ5SVhrbmVURDVEUGtHK1FoOGxzS25XSkFjYVQ0VStJb1VzcHFTaG5sRU9VMDVRWmxtREpCVmFPYVV0Mm9vVlFSTlk5YVFxMmh0bEt2VVllb0V6UjFtam5OZ3haSlM2V3RvcFhUR21nWGFQZHByK2gwdWhIZGxSNU9sOUJYMHN2cFIraVg2QVAwZHd3TmhoV0R4NGhuS0JtYkdBY1laeGwzR0srWVRLWVowNHNaeDFRd056SHJtT2VaRDVsdlZWZ3F0aXA4RlpIS0NwVktsU2FWR3lvdlZLbXFwcXJlcWd0VjgxWExWSStwWGxOOXJrWlZNMVBqcVFuVWxxdFZxcDFRNjFNYlUyZXBPNmlIcW1lb2IxUS9wSDVaL1lrR1djTk13MDlEcEZHZ3NWL2p2TVlnQzJNWnMzZ3NJV3NOcTRaMWdUWEVKckhOMlh4MktydVkvUjI3aXoycXFhRTVRek5LTTFlelV2T1VaajhINDVoeCtKeDBUZ25uS0tlWDgzNkszaFR2S2VJcEc2WTBUTGt4WlZ4cnFwYVhsbGlyU0t0UnEwZnJ2VGF1N2FlZHByMUZ1MW43Z1E1Qngwb25YQ2RIWjQvT0JaM25VOWxUM2FjS3B4Wk5QVHIxcmk2cWE2VWJvYnRFZDc5dXArNllucjVlZ0o1TWI2ZmVlYjNuK2h4OUwvMVUvVzM2cC9WSERGZ0dzd3drQnRzTXpoZzh4VFZ4Ynp3ZEw4ZmI4VkZEWGNOQVE2VmhsV0dYNFlTUnVkRThvOVZHalVZUGpHbkdYT01rNDIzR2JjYWpKZ1ltSVNaTFRlcE43cHBTVGJtbUthWTdURHRNeDgzTXphTE4xcGsxbXoweDF6TG5tK2ViMTV2ZnQyQmFlRm9zdHFpMnVHVkpzdVJhcGxudXRyeHVoVm81V2FWWVZWcGRzMGF0bmEwbDFydXR1NmNScDdsT2swNnJudFpudzdEeHRzbTJxYmNac09YWUJ0dXV0bTIyZldGblloZG50OFd1dys2VHZaTjl1bjJOL1QwSERZZlpEcXNkV2gxK2M3UnlGRHBXT3Q2YXpwenVQMzNGOUpicEwyZFl6eERQMkRQanRoUExLY1JwblZPYjAwZG5GMmU1YzRQemlJdUpTNExMTHBjK0xwc2J4dDNJdmVSS2RQVnhYZUY2MHZXZG03T2J3dTJvMjYvdU51NXA3b2Zjbjh3MG55bWVXVE56ME1QSVErQlI1ZEUvQzUrVk1HdmZySDVQUTArQlo3WG5JeTlqTDVGWHJkZXd0NlYzcXZkaDd4Yys5ajV5bitNKzR6dzMzakxlV1YvTU44QzN5TGZMVDhOdm5sK0YzME4vSS85ay8zci8wUUNuZ0NVQlp3T0pnVUdCV3dMNytIcDhJYitPUHpyYlpmYXkyZTFCaktDNVFSVkJqNEt0Z3VYQnJTRm95T3lRclNIMzU1ak9rYzVwRG9WUWZ1alcwQWRoNW1HTHczNE1KNFdIaFZlR1A0NXdpRmdhMFRHWE5YZlIzRU56MzBUNlJKWkUzcHRuTVU4NXJ5MUtOU28rcWk1cVBObzN1alM2UDhZdVpsbk0xVmlkV0Vsc1N4dzVMaXF1Tm01c3Z0Lzg3Zk9INHAzaUMrTjdGNWd2eUYxd2VhSE93dlNGcHhhcExoSXNPcFpBVEloT09KVHdRUkFxcUJhTUpmSVRkeVdPQ25uQ0hjSm5JaS9STnRHSTJFTmNLaDVPOGtncVRYcVM3Skc4Tlhra3hUT2xMT1c1aENlcGtMeE1EVXpkbXpxZUZwcDJJRzB5UFRxOU1ZT1NrWkJ4UXFvaFRaTzJaK3BuNW1aMnk2eGxoYkwreFc2THR5OGVsUWZKYTdPUXJBVlpMUXEyUXFib1ZGb28xeW9Ic21kbFYyYS96WW5LT1phcm5pdk43Y3l6eXR1UU41enZuLy90RXNJUzRaSzJwWVpMVnkwZFdPYTlyR281c2p4eGVkc0s0eFVGSzRaV0Jxdzh1SXEyS20zVlQ2dnRWNWV1ZnIwbWVrMXJnVjdCeW9MQnRRRnI2d3RWQ3VXRmZldmMxKzFkVDFndldkKzFZZnFHblJzK0ZZbUtyaFRiRjVjVmY5Z28zSGpsRzRkdnlyK1ozSlMwcWF2RXVXVFBadEptNmViZUxaNWJEcGFxbCthWERtNE4yZHEwRGQ5V3RPMzE5a1hiTDVmTktOdTdnN1pEdWFPL1BMaThaYWZKenMwN1AxU2tWUFJVK2xRMjd0TGR0V0hYK0c3UjdodDd2UFkwN05YYlc3ejMvVDdKdnR0VkFWVk4xV2JWWmZ0Sis3UDNQNjZKcXVuNGx2dHRYYTFPYlhIdHh3UFNBLzBISXc2MjE3blUxUjNTUFZSU2o5WXI2MGNPeHgrKy9wM3ZkeTBOTmcxVmpaekc0aU53UkhuazZmY0ozL2NlRFRyYWRveDdyT0VIMHg5MkhXY2RMMnBDbXZLYVJwdFRtdnRiWWx1NlQ4dyswZGJxM25yOFI5c2ZENXcwUEZsNVN2TlV5V25hNllMVGsyZnl6NHlkbFoxOWZpNzUzR0Rib3JaNzUyUE8zMm9QYisrNkVIVGgwa1gvaStjN3ZEdk9YUEs0ZFBLeTIrVVRWN2hYbXE4NlgyM3FkT284L3BQVFQ4ZTduTHVhcnJsY2E3bnVlcjIxZTJiMzZSdWVOODdkOUwxNThSYi8xdFdlT1QzZHZmTjZiL2ZGOS9YZkZ0MStjaWY5enN1NzJYY243cTI4VDd4ZjlFRHRRZGxEM1lmVlAxdiszTmp2M0g5cXdIZWc4OUhjUi9jR2hZUFAvcEgxanc5REJZK1pqOHVHRFlicm5qZytPVG5pUDNMOTZmeW5RODlrenlhZUYvNmkvc3V1RnhZdmZ2alY2OWZPMFpqUm9aZnlsNU8vYlh5bC9lckE2eG12MjhiQ3hoNit5WGd6TVY3MFZ2dnR3WGZjZHgzdm85OFBUK1I4SUg4by8yajVzZlZUMEtmN2t4bVRrLzhFQTVqei9HTXpMZHNBQUFBZ1kwaFNUUUFBZWlVQUFJQ0RBQUQ1L3dBQWdPa0FBSFV3QUFEcVlBQUFPcGdBQUJkdmtsL0ZSZ0FBQXRoSlJFRlVlTnJzbHQ5TGsxRVl4Ny92TnRlMHZYT2s3eVM3cXlXQll2bmpJa3RHVTB2REN3a3RWNEtYcHYzd0IvNEJCaUlhL1FDMXdqa1ZVeE5zVXV1dXpkMWs2aUJMQ3hJRnpjRFhPVFp3WThyMnNyMXJwNHVYWnVvZ2dyeUpmUzhlZUw2YzUzdzQ1K0U1SElvUWdvT1VDQWVzR0NBR2lBRUF5WDZMWmRuMTlYV0dZZFJxOVQ4Z2tOMXFhMjBWRGxWWmNaVVFZcHVaS1MwdEhUY2E5eXd6Nkh1cnE2cy96czZTUDJrWHdHSTJBempLcUhRNjNmdDNrNFNRcG9ZR0FNV0ZSWHZLTG1vTEFBd09EUHdkb0xkSEQyQmthT2gzODQzSjVISzU5cFRWMWR3RThHcDhmUCtPUzR0TDVyZm1INkdRa083MG9MdXpjMmp3dVNvcDJkQnJPQ3luazVLTzlQWDNaMlprTUNrcHF5dmZHSVlCY0wrOXcycWRLQ29xQ2dRQ0FIaWVGMm9mUDN4a01yMVcwSXJhdWxwdFFZSFA3d05GN2UyQk5sOERJTzM0Q1FBTmQrdTd1N29BU0VBQnFLdXBKWVJVNmE0RG9HWHhxYW9VcFp3V0E5YUpDVUpJNFFVdGdGUHFrd25TUXdENjlQcm9WeFFNQnR2YjJpaUtldERSd2ZOOEtCVGlPTzdaazZjQStub05MTXNDeU1vOHpmbjlITWZsbk1rQ3NMUzRPRDAxRFVCMzlSb2h4T2wweWhNUzRpaVIzVzZQYkxzekIzRnhjYlJDUVFoUkpDWktKQkt4V0N5VHllUnlHb0JVS3YweS94bUFUbGNwaTQrWHlXUWFqUWFBeitlYm1wd0VVRjVSRGtDbFVoVnFDM2dTbnArYml6NEhuTjhQd08vM1I1eEFnTXZOems1bWtrV1VDTURxNm5mQmR6ZzJCREN0VUFCd09sMi9mSWRBaWc0SUJvT1JLSWpuZVFWTmIzbTNpaStYaUVIcCt3enBHZWx1dC91bDBRZ2dFQWlVWFNtN2RlZjJ2WmFXdExTMGhZV3ZIK1krNVovTnk4bk5qZjVVU0NTU1NJdzQ0WERZNGRoUUtwWER3OE5paXFwdmJCd2RlVkYxb3dvQXU3YVdtbnJNMEtQZjN0NitWRkxjMU54OFB1L2M2TmlZU0NTS1Bza2V0MmQ1ZWRuajhVUWNyOWRyWDdlNzNadEN5ckpyVnFzMUhBNFRRcFpYVnJ4ZXIrQzdOOTBXaThWbXMrMGZDeXIycTRnQllvRC9BUEJ6QUk2Vk5xR1FQVXFuQUFBQUFFbEZUa1N1UW1DQyJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIzLTAxLTE3IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjQ1LCJ1cmwiOiJodHRwczovL3d3dy5pbXByb3ZlaWQuY29tLyIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiSW1wcm92ZUlEIEF1dGhlbnRpY2F0b3IiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlUyRjAwMDIwMjMwMTE3MDAyIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjMtMDEtMTciLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6NDV9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjMtMDUtMTgifSx7ImFhZ3VpZCI6IjAwNzY2MzFiLWQ0YTAtNDI3Zi01NzczLTBlYzcxYzllMDI3OSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiMDA3NjYzMWItZDRhMC00MjdmLTU3NzMtMGVjNzFjOWUwMjc5IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkhZUFIgRklETzIgQXV0aGVudGljYXRvciJ9LCJkZXNjcmlwdGlvbiI6IkhZUFIgRklETzIgQXV0aGVudGljYXRvciIsImFsdGVybmF0aXZlRGVzY3JpcHRpb25zIjp7ImVuLVVTIjoiSFlQUiBGSURPMiBBdXRoZW50aWNhdG9yIn0sImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZhY2VwcmludF9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJ2b2ljZXByaW50X2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZXllcHJpbnRfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhdHRlcm5faW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImhhbmRwcmludF9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibG9jYXRpb25faW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbInNvZnR3YXJlIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWxlc3MiLCJuZXR3b3JrIiwid2lmaV9kaXJlY3QiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNBekNDQWFnQ0NRQ0czVXI0enFZOTNqQUtCZ2dxaGtqT1BRUURBakNCaHpFTE1Ba0dBMVVFQmhNQ1ZWTXhDekFKQmdOVkJBZ01BazVaTVJFd0R3WURWUVFIREFoT1pYY2dXVzl5YXpFU01CQUdBMVVFQ2d3SlNGbFFVaUJEYjNKd01SQXdEZ1lEVlFRTERBZFNiMjkwSUVOQk1SRXdEd1lEVlFRRERBaG9lWEJ5TG1OdmJURWZNQjBHQ1NxR1NJYjNEUUVKQVJZUWMzVndjRzl5ZEVCb2VYQnlMbU52YlRBZ0Z3MHlNakE1TVRNd01qQTRNalphR0E4eU1EY3lNRGd6TVRBeU1EZ3lObG93Z1ljeEN6QUpCZ05WQkFZVEFsVlRNUXN3Q1FZRFZRUUlEQUpPV1RFUk1BOEdBMVVFQnd3SVRtVjNJRmx2Y21zeEVqQVFCZ05WQkFvTUNVaFpVRklnUTI5eWNERVFNQTRHQTFVRUN3d0hVbTl2ZENCRFFURVJNQThHQTFVRUF3d0lhSGx3Y2k1amIyMHhIekFkQmdrcWhraUc5dzBCQ1FFV0VITjFjSEJ2Y25SQWFIbHdjaTVqYjIwd1dUQVRCZ2NxaGtqT1BRSUJCZ2dxaGtqT1BRTUJCd05DQUFRc0VRT2cvQjUzcktJRkpuNG5VZlBOVlBxekRaVkxoV2lmS2xxU1lYVmcxWjY4OG1PYkE2Q25sK1BKVXcyNzI3RW1JRTJZSEF3QkJmUHdQeSs5Mk5FU01Bb0dDQ3FHU000OUJBTUNBMGtBTUVZQ0lRQ1dUbHlsU3lFeWhvVEJzZzdVVlozYW5aM3k5Wm1CT3RkZGgyZm5TNzBhYlFJaEFKRlFzemdROTRGTFZQUHVrbDcvam43Z3RibXNvM0VxTWRXT1ZlRW85SzBSIl0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQ05nQUFBallDQVlBQUFBQURJTFBBQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQkFOcFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR3L2VIQmhZMnRsZENCaVpXZHBiajBpNzd1L0lpQnBaRDBpVnpWTk1FMXdRMlZvYVVoNmNtVlRlazVVWTNwcll6bGtJajgrSUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWtGa2IySmxJRmhOVUNCRGIzSmxJRFV1Tmkxak1UUTFJRGM1TGpFMk16UTVPU3dnTWpBeE9DOHdPQzh4TXkweE5qbzBNRG95TWlBZ0lDQWdJQ0FnSWo0Z1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNGdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlnZUcxc2JuTTZlRzF3VFUwOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXRiUzhpSUhodGJHNXpPbk4wVW1WbVBTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZjMVI1Y0dVdlVtVnpiM1Z5WTJWU1pXWWpJaUI0Yld4dWN6cDRiWEE5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM4aUlIaHRiRzV6T21SalBTSm9kSFJ3T2k4dmNIVnliQzV2Y21jdlpHTXZaV3hsYldWdWRITXZNUzR4THlJZ2VHMXdUVTA2VDNKcFoybHVZV3hFYjJOMWJXVnVkRWxFUFNKMWRXbGtPalZFTWpBNE9USTBPVE5DUmtSQ01URTVNVFJCT0RVNU1FUXpNVFV3T0VNNElpQjRiWEJOVFRwRWIyTjFiV1Z1ZEVsRVBTSjRiWEF1Wkdsa09rUTRSVGhFUmpjd056TTFOekV4UlRrNU1UVTFSVVUyTkVNM01FRXdOREV4SWlCNGJYQk5UVHBKYm5OMFlXNWpaVWxFUFNKNGJYQXVhV2xrT2tRNFJUaEVSalpHTnpNMU56RXhSVGs1TVRVMVJVVTJORU0zTUVFd05ERXhJaUI0YlhBNlEzSmxZWFJ2Y2xSdmIydzlJa0ZrYjJKbElGQm9iM1J2YzJodmNDQkRReUF5TURFNUlDaE5ZV05wYm5SdmMyZ3BJajRnUEhodGNFMU5Pa1JsY21sMlpXUkdjbTl0SUhOMFVtVm1PbWx1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2TVRCaE1qSmtNR1V0TWpVek55MDBaalUxTFdFek5UY3RaakUzWXprMFkyWmxOVGt4SWlCemRGSmxaanBrYjJOMWJXVnVkRWxFUFNKaFpHOWlaVHBrYjJOcFpEcHdhRzkwYjNOb2IzQTZPVGc1WVRBelkyWXROamxoWlMweFpEUXdMV0kwT1dZdE9XUXhNVEZsTUdVMllqTTFJaTgrSUR4a1l6cDBhWFJzWlQ0Z1BISmtaanBCYkhRK0lEeHlaR1k2YkdrZ2VHMXNPbXhoYm1jOUluZ3RaR1ZtWVhWc2RDSStVSEpwYm5ROEwzSmtaanBzYVQ0Z1BDOXlaR1k2UVd4MFBpQThMMlJqT25ScGRHeGxQaUE4TDNKa1pqcEVaWE5qY21sd2RHbHZiajRnUEM5eVpHWTZVa1JHUGlBOEwzZzZlRzF3YldWMFlUNGdQRDk0Y0dGamEyVjBJR1Z1WkQwaWNpSS9QbDJEeXgwQUFKeWRTVVJCVkhqYTdOMy9iVnhWR29EaEUwUUJLV0VhUUVvSkxpRWRyRHZZTklDU2lBSVFGWkJVc05rS0dDckFpQUlZS2lCYmdYY09NeFAvVVBJU2tuakdubmtlNlVqMmhEL2dzM1dVZSsvTHVZOHVMeThIQUFBQUFBQUFBQUR3Zmw4WkFRQUFBQUFBQUFBQWZKakFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBSUxBQmdBQUFBQUFBQUFBZ3NBR0FBQUFBQUFBQUFDQ3dBWUFBQUFBQUFBQUFJTEFCZ0FBQUFBQUFBQUFnc0FHQUFBQUFBQUFBQUNDd0FZQUFBQUFBQUFBQUlMQUJnQUFBQUFBQUFBQWdzQUdBQUFBQUFBQUFBQ0N3QVlBQUFBQUFBQUFBTUxYUmdEc2ZQUGsyMVA4ejM2eVhoZCsrZ0FBQUNkdFhocytOZ2IyYUdrRThMY1cyd1YzWmJWZEFIL3J0NHZ2REFFUTJBQW5hZDQ0L2RkNlBkMWVwRDh5RWdBQWdKTTJydytmR3dNSDluYmMvSitBVnV2MXg3V3ZWOXV2TDdiL0xCeTdzL1g2MFJnNGdOdjc3UHorZisvNXM2VlJBY0JwZVhSNWVXa0t3RitPL0FTYjIxSE5qYjNRVHg4QUFPQ2t6V3ZHWDR5QkIyYTFYZk5CNzYvakt0RFpmUTdINFBmaEZCdnV2MTEwTS9mZVA2NTlMNGlFSStJRUcyQnlnZzF3ekNxcUFRQUFnSjFkbE9EYWtZZGtjZTEzOXVrSGZxL25nOTJmeDFWMHN6UTJIcGlYd3lrMjNIOVAvdWJQbCtObWZMTWFOMDhzQXdBZUNJRU5jSXdYTTZJYUFBQUEvcWszNi9YTUdEZ2l1d2UrWjdjK1g0M05nOTE1NnMxeU9QR0crKzNWMkx6Q2IyRVVQR0JuSC9oOHR3Zi91dDJYbDBZRkFQZWJ3QVk0QnFJYUFBQUFQdGM4NVVOZ3d5bFliTmU4ai9KOCs5azg2V1k1cnFJYnJ6WGhQbmw5N1hjVmpzblplejY3R0ZjUnBPZ0dBTzZaUjVlWGw2WUEvT1diSjk4K3BIL2RMeG5WUFBMVEJ3QUFZTzNQOVhwc0RQQ1gzVVBlR1o4dGgxTnVPSnk1TC85dWYrYUVMYmQ3OFM2NEVVRENBZngyOFowaEFFNndBUjRVSjlVQUFBQndsNWJiYTA1Z2N4OW1ydlB0OTZ0eDlaQjNPUVEzN00rTUNYNFlUckhoZEoyTm02ZmRYTnphandVM0FMQW5UckFCM3Jtbko5anNJNnB4Z2cwQUFBRFQrWHI5YUF6d1VWYnI5V1o0d010K09NVUdQbXk1M1l2bm5ueGhISEEzbkdBRFRBSWI0SjE3Rk5nczF1dmZZMzhuMVFoc0FBQUFtT2FEMnorTkFUN0pjcjMrT3pZUGVGZkd3UjJZQWVTNU1VQjZPNjdpeHpkRC9BaGZqTUFHbUFRMndEc0hEbXdXWXhQVXpOTnFudXg3TC9UVEJ3QUFZT3VYQTF5WHdyRlpqYzJEM2RmRGFRcDhPWXV4T2NVRytIZ1gyNzFZL0FpZlNXQURURjhaQVhEZ2krSm5ZM1B6Y2w0Y2Z6L2N4QVFBQU9Dd1hoc0JmTGJGdUhuUFo1NDg4dFJZK0V5cjlYcGxEUENQelB2dDMyLzM0cmtudnhqdXdRUEFKeFBZQVB1MkdLSWFBQUFBN3ErbEVjQVh0UmliMS9yOFoyeGV3VFpqbXpOajRSTzlOQUw0WlBNKy9QTnhkVy8rMlhhUEJnQStrc0FHMklmRkVOVUFBQUR3TU14WEtheU1BZTdFNDdHSmJYNGE3aEh4YWViKy9NWVk0TE10eHMyVGJaNXQ5MmdBSUFoc2dMdjhDN3FvQmdBQWdJZkl3MXU0ZTR0eGRlL0l3MTMraVIrTUFMNm8zV3VrNWlsajg3U3hjeU1CZ1BjVDJBQmYwbUtJYWdBQUFIajRmallDMkt2YkQzZWZHZ2xoT2J6T0QrN0szSDkvM083SDd1OER3QzBDRytCekxZYW9CZ0FBZ09NeVQ3QjVhd3h3RVBQaDdveHM1bjJtRjJOejd3bHVlMmtFY0tmbWlXTFhUeGs3SDA0WkF3Q0JEZkJKRmtOVUF3QUF3SEh6bWlnNHJNVjZQUitiZTAvek5JVXpJK0dhNVhwZEdBUHN4WlB0UHJ4N0ZyQXdFZ0JPbGNBRytGanpMODJpR2dBQWdQMWZpM0VZWGhNRjk4ZjVldjAwTnZlazV0ZE9VV0Q2d1FoZ3IzYW4yc3k5ZUo0MGRtWWtBSndhZ1ExUUZrTlVBd0FBY0NqbjIyc3hENUlQd3drMmNQOHN4dFVwQ2krR0NQSFV2VnF2bFRIQVFjelgrVjBQSHdIZ0pBaHNnTnNXUTFRREFBQndhT2RqOHhCNWVtb2NCL0YyYkY1QkF0dy9Nenk4L3Zxb2haR2NySmRHQUFlMTJPN0RmNDVOK0NnTUIrQ29DV3lBNjNiSE80cHE0UC9zM2U5MTIwaTY0T0YzNzVudm80MWdjQ05vZFFSbVI5QjJCRVpIWURzQ1N4SFlqc0RvQ0t5T29Oa1J0Q2FDNFdTZ0RIWlpKbW45bHlnU0JSUlF6M01PanUvT2Z1SkxOUVM0ZnE0Q0FJRHh0SEVkMXlTdmpHUTBmeGdCVE9LZTZiaVNlblZoRnhzb3djM3dNYTB2TkVZQ3dCd0piSUM3RDhFQUFBQ01wNDNiY1UxaUI1dnhPQ1lLcG1OM1hFbTZGc1pSbGQrTkFJcVIxaGgyLzVEWERtTUF6STdBQmdBQUFLQU1iZHlQYTVLMFVMRXdubEdzd3M0SU1EWHBmaW0wcWN2bjJCenJCNVQzYkN1MEFXQldCRFlBQUFBQTQydmo0YmhtNTFjakdvMWRiR0NhRmlHMHFVV0thNzRZQXhUOW5DdTBBV0FXQkRZQUFBQUE0MnJqNmJnbWNVelVlUDR3QXBpMFJRaHRhbUFYRzVqR002L1FCb0JKRTlnQUFBQUFqS2VONStPYXBBa0xFV05aaGtWYm1JTkZiQ0tiYis2bnM1VHUwM1ljZytrOC8vNjl2czVpY3hRcUFFeUd3QVlBQUFCZ0hHM3NGOWZzMk1WbVBCWnRZVDdTdlhTM2c0S0YzWGs1TndLWWpIVC8vYmk5SDU4WkJ3QlRJYkFCQUFBQUdGNGJMNHRya3JmR05ockhSTUU4NzhPN2hWMmh6VHlzMWxkbkREQXBOME9iMWpnQUtKM0FCZ0FBQUdCWWJidzhya2xPd3lMd1dKWkdBTE8wVzlqOU95enN6b1ZkYkdDYW11M3pjVHJLYjJFY0FKUktZQU1BQUFBd25EWU9pMnQySEJNMWpxdHdUQlRNV1JQWEM3dW54akZwSy9kcm1MVEY5bDdzR0Q4QWlpU3dBUUFBQUJoR0c4ZkZOY212eGppYXY0d0FabThSbTkxc0xPeE8yeGNqZ0ZrOE42ZGpvOTRiQlFBbEVkZ0FBQUFBNU5mRzhYRk5zakRLMGRnUkFlcTZaLzhuSEJzMVZjdHd0Qi9NUVFvZFA4VW1mUFFNREVBUkJEWUFBQUFBZWJYUlQxeVRwSVVHeDBTTlk3VytMbzBCcW5FU2pvMmFzbk1qZ05rNERjZEdBVkFJZ1EwQUFBQkFQbTMwRjlmc3ZETFcwU3lOQUtxemlNM3VDV2RoWVhkcTkydFJKTXp2dVRydExpWTJCMkEwQWhzQUFBQ0FQTnJvUDY1SkxDcU01M2NqZ0dwOURNZVVUTTBYSTREWlNhSGp0OWpzYU5NWUJ3QkRFOWdBQUFBQTlLK05QSEZOMG9UalNzYVNka080TWdhb1Zyci9wa1hkVDJFM215bm9Zbk84SHpBL2k5aEVqKytOQW9BaENXd0FBQUFBK3RWR3ZyaG1aMkhNbzdrd0FxaGVXdEMxbTgwMG5Cc0J6RllLSFZQd2FEY2JBQVlqc0FFQUFBRG9UeHY1NDVya3JWR1A1ZzhqQU1KdU5sUFJoVjFzWU80V1lUY2JBQVlpc0FFQUFBRG9SeHZEeERWSk9pTEtndTQ0bGtZQTNMRGJ6Y2JSZmVYNjNRaGc5bTd1WnVNWkdZQnNCRFlBQUFBQXgydGp1TGhtNTdXeGorSXFIQk1GM05iRUpySTVNNG9pZmQ3ZXU0SDVXNnl2LzNoT0JpQVhnUTBBQUFEQWNkb1lQcTVKZmpYNjBUZ21DbmpJeDlpRU5vMVJGQ1hGTlYrTUFhcVJkckQ1Rm83d0F5QURnUTBBQUFEQTRkb1lKNjVKL012YzhTeU5BSGhFT2lycTcrM3ZCOHBoRnh1b1R6ckM3ODl3aEI4QVBSTFlBQUFBQUJ5bWpmSGltaDJSelRoVzYrdlNHSUJIbkd4L1Azd051eWVVd3ZGK1VLZGQ5UGplS0FEb2c4QUdBQUFBNE9YYUdEK3VTUndUTlI3SFJBSDcvSzZ3ZTBJNXpvMEFxcFdPaTBySFJva2VBVGlLd0FZQUFBRGdaZG9vSTY1SkZyNk8wZGdKQWRoSGltditERWRHbFdDMXZqcGpnR3FsblIvL0R0RWpBRWNRMkFBQUFBRHNyNDF5NHBxa0NZc0VZMGxIUksyTUFkakR6U09qR0pkZGJLQnU2ZGxaOUFqQXdRUTJBQUFBQVB0cG84ekYwZGUrbXRFc2pRQjQ0ZStSdEh1Q0kwckdzd283a0VIdFJJOEFIRXhnQXdBQUFQQzhOc3I5Uy9oZmZUMmorY01JZ0JkS3U0NzlKeHp4TjZZdlJnQ0U2QkdBQXdoc0FBQUFBSjdXUnRuL3dqVXQxamErcGxIWUJRRTRSRnJNZFVUSmVKWmhCekxnK2puNlArSElWUUQySkxBQkFBQUFlRndiMDlnK2Z1R3JHbzNJQmppVUkwckdjMjRFd0ZhS0h2OE8wU01BZXhEWUFBQUFBRHlzamVrc2ZEb21hanlPaVFLTy9WM2ppSkxoTGRmWHBURUFONlRuL2svR0FNQlRCRFlBQUFBQTk3VXhyVjBGWG9mRjJiRXNqUUE0VWpxYTVNOXdSTW5RdmhnQmNNZjc5ZlhOY3pVQWp4SFlBQUFBQU56V3hqU1A3Rmo0NmtheENyc2dBTWNUMlF5djI5N0RBVzU2dmIwZmkyd0F1RWRnQXdBQUFIQ3RqV25HTllsam9zYnp1eEVBUFVpTHVYOXZmeGN4akhNakFCNlFZc2YvaE9nUmdEc0VOZ0FBQUFBYmJVdzNya2xlK3dwSHN6UUNvRWZwZDlGN1l4aEVGM2F4QVI2V29rYzdpd0Z3aThBR0FBQUFZUHB4VFpJV0FTd0FqQ01kRWJVeUJxQkhuMmJ3ZTJrcTdFSUdQUFY4YldjeEFINFEyQUFBQUFDMWEyTStpNWh2ZloyanVUQUN3TytuU2ZxOHZxNk1BWGpDMXhEWkFCQUNHd0FBQUtCdWJjeHI4WExoS3gzTlgwWUFaUG85bFhaUE9ER0tiRkpjODhVWWdHZWtkNFpQeGdCUU40RU5BQUFBVUtzMjVyY3pRRG9pcXZIVmppTHRZR01IQkNEWHZmM1BFTm5rWkJjYllCL3Z3ODVpQUZVVDJBQUFBQUExYW1PK2Z6bisydGM3bXFVUkFKbUliUEpLY1kyai9vRGEzeU1BZUliQUJnQUFBS2hORy9QK1MvRlh2dUxSL0dFRVFFYTd5S1l4aWl6T2pRRHdQZ0hBVS81aEJBQUFBRUJGMnBqL1g0YW5IV3pTRGdlT3VoaGUydjFnWlF3OFlQSEkvLzZ2dUIxTExJeUtaNlRJNXUvMTljdjZ1alNPWHFYNzk4OWhsNkE1TzluK04vU1FtNEZ5RTBJMjludXZTRDlUdjNudUJxaUh3QVlBQUFDb1JSdjEvRXZURk5sMHZ2TEJwY1dWcFRId2dKZitYTnhjQkY1cy8zeDE1LzlOdmRMUFI5ckpSbVRUUC9PY3Y1Y2VCWGE2L1c5dWQxLys1L2JQSmtRNGJKNjVtKzM5V0dRRFVBR0JEUUFBQUZDRE51cmF4ajB0eEhlK2RwaXNtN0hXOG9ILy8yWjdwVVhlZjIzL1hCaGJWVVEyTUl5Yi8zMDlGT2ZzQXB6RmpmdnhxYkZWNWZURy9WaGtBekJ6QWhzQUFBQmc3dHFvSzY1SjByK20vYzFYRDdPMTJsN0xPLzk3RTllTHV5bTBXeGpWcklsc1lIeTcvL2J1M285MzkrS2Z0dmRpMGMyOGlXd0FLaUd3QVFBQUFPYXNqZnJpbW1UM0w2bVhmZ1NnS3F2dGRYT1hoZDN1TnJ0RjNzYVlabmUvRjlsQWVTNGYrRzl5Y2VkK2ZHSk1zeUt5QWFpQXdBWUFBQUNZcXpicWpHdDJmZzJCRFhCL2tiZUp6Y0x1cjJHQmR5NTJrYzMvaGtWZEtObnl6clBaNlozN01kT1h2dE5QWVNkSmdObjZIeU1BQUFBQVpxaU51dU9hNUxVZkErQUJxL1hWcmE4MzYrdi9ycStmMTlkNTJQMWs2bmFSaldBS3BpUGRkei9IWnNlVC83TzlMMy9lM3FmeEhnSkFnUVEyQUFBQXdOeTA0Uysxa3lZY0JRTThMeTN3bnNVbXRFazdvS1IvZFg5aExKTzBPNTVFWkFQVGxPNjlIN2IzNHArMy83ZjQwZnNJQUFVUjJBQUFBQUJ6MG9hL3pMN0pMamJBUzZ6aTl1NDJZcHZwRWRuQVBPeDJ0OW5GajJJYjd5VUFGRUJnQXdBQUFNeEZHLzRTKzY1ZmpRQTQwRlhjajIyV3hqSUp1OGdHbUlkVjNJNXR6c014VWxONlB6a3pCb0Q1RU5nQUFBQUFjOUNHdU9ZaGk3Q0xBWEM4WFd6elMxamNuWXBUdnhkaGx0Szk5eXl1ajVIcXR2ZG95dlZ4KzY0Q3dBd0liQUFBQUlDcGE4TWk0bE1jRXdYMGFSWFhpN3RwZHh0SFNQbjlDSXdqSFJuMTIvWisvRnM0UXFwa1gwTmtBekFMQWhzQUFBQmd5dHF3ZVBpY1YwWUFaSkxpbWhUWjJOV203TitUNzQwQlptMjN5OWpQY2IyckRlWDVGSnZkeFFDWU1JRU5BQUFBTUZWdGlHdjJZUWNiSUxkVlhPOXFZeGVGOG53S095ZEFMWGE3MnZ6ZkVENldKaDNiK21lSWJBQW1UV0FEQUFBQVRGRWI0cHA5cGIvTUY5a0FRK2xpczRQQ0wrdHJhUnpGU0w4ekxlcENQZEt1Tm1keEhUNnVqS1NZNS9LdjJ6OEJtQ0NCRFFBQUFEQTFiWWhyWHNveFVjRFFsckdKYk5MaWJtY2NSYkJ6QXRTcDI5NkwzNFR3c1FTbjIvc3hBQk1rc0FFQUFBQ21wQTF4elNIc1lBT01aUldiM1JPRU51T3pjd0xVN1NJMjRhTWR4c1ozNnAwR1lKb0VOZ0FBQU1CVXRPRXZvZy9WaEYwTGdIR3RRbWhUZ3ZTNzRKc3hRTldXSWJRcDVkM216QmdBcGtWZ0F3QUFBRXhCRytLYVl5Mk1BQ2pBS3E1RG13dmpHTzMzZ2QrcHdES3VRNXVWY1l6aVk5aHBFbUJTQkRZQUFBQkE2ZHF3RU5pSHQwWUFGR1MxdnQ2RUhSVEcvTjNhR2dPd3ZRZW42UEczRU5xTUliM24yR2tTWUNJRU5nQUFBRURKMmhEWDlDWDl4ZjJKTVFDRldjWW1za214emNvNEJtVlJGN2lwVzE4L3I2L3o5WFZsSElOSnorZmZQS2NEVElQQUJnQUFBQ2hWRytLYXZ0bUNIaWhWT2k0cTdhQmdZWGRZZjRaRlhlQmF1ditlYmUvSG5YRU1wb2xOWkFOQTRRUTJBQUFBUUluYUVOZms4S3NSQUlVN2k4ME9DaGRHTVlnVTEveHBETUFkS2JSSlIwYWxIY1l1aldNUWkvWDF5UmdBeWlhd0FRQUFBRXJUaHJnbUY3c1VBRk93aXMyUlViK0VZNk9Ha0k2SnNxZ0xQR1FabStqeFE5aGRiQWp2dzQ2VEFFVVQyQUFBQUFBbGFVTmNrMHY2MThkdmpBR1lrR1ZjSHh0Rlh1KzN2NE1CSHZKNWV6KzJ1MWgrNlYyb01RYUFNZ2xzQUFBQWdGSzBJYTdKSmNVMWFTY0kvL0lZbUtLejJPeWdzRFNLck5JdU5xZkdBRHdpUFVlKzJWNmVLZk5KTzA1K013YUFNZ2xzQUFBQWdCSzBJYTdKUlZ3RHpPbGU1cGlTZkU2MnY0c2RKd2c4SmUxaVl6ZWJ2QnpkQjFBb2dRMEFBQUF3dGpiRU5ibUlhNEM1U2NlVS9MeTl2OUUvaTdyQVB1eG1rMTg2dXUrMU1RQ1VSV0FEQUFBQWpLa05jVTB1NGhwZ3JsYXhpV3pPalNMYjcyYUx1c0ErN0dhVFYzcFBhb3dCb0J3Q0d3QUFBR0FzYllocmNoSFhBRFU0aTAxb3N6S0szbG5VQmZhMTI4M21OOCtldlV0SDluMHpCb0J5Q0d3QUFBQ0FNYlFocnNsRlhBUFVkczlMa1UxbkZMMDY4WHNhZUtGdSt3enFDTDkrcGFQN3pvd0JvQXdDR3dBQUFHQm9iVmkweTBWY0E5UW8zZk4rQzdzbjlHMFJGbldCbHorTHB1anhzMUgwNnVQMm5nekF5QVEyQUFBQXdKRGFFTmZrSXE0QmF0ZUYzUlA2bGhaMVQ0MEJlS0VQc1RrMnluTnBmOUk3MUlreEFJeExZQU1BQUFBTXBRMXhUUzdpR29EYjk4TUxvK2lOUlYzZ0VCY2hldXhURTV2b0VZQVJDV3dBQUFDQUliUWhyc2xGWEFOd1c3b2ZwcDBUUGhoRkw5SU9OaFoxZ1dPZVUwV1AvWGkvdmw0YkE4QjRCRFlBQUFCQWJtMklhM0lSMXdBODdyTjdaRy9Tb3U3Q0dJQUQ3S0xIYzZQb2hWM0ZBRVlrc0FFQUFBQnlha05jazR1NEJ1QjV5M0JFU1Y4czZnTEhPSXROYU9QWjlUZ24zcThBeGlPd0FRQUFBSEpwdzEvKzVpS3VBWGo1UFhOcEZFZHB3bEZSd0hFdVBNUDI0blU0S2dwZ0ZBSWJBQUFBSUljMnhEVzVpR3NBWHU1cWUrL3NqT0lvam9vQytuaVcvZCt3czlpeFBvVmR4UUFHSjdBQkFBQUErdGFHdUNhWGJuMzlIT0lhZ0VQOXRyN09qZUVvZnNjRHg5cEZqeGRHY2JBbTdDb0dNRGlCRFFBQUFOQ25OaXk4NWRMRlptRVlnT09jdVo4ZXBkbk9FT0FZS2JKNUUzWVdPNFpkeFFBR0pyQUJBQUFBK3RLR3VDYVhMaXdHQStTNHI5b1I3REJwMTRUR0dJQWVwSHZ4WjJNNG1QY3ZnQUVKYkFBQUFJQSt0T0V2ZDNQcFFsd0RrT3YrbW80b0Vka2N4dTk5b0M4ZlBPOGVyQW03aWdFTVJtQURBQUFBSEtzTmkyeTVkR0d4QVNDbnl4RFpIR3F4ZlFZQThOdzdybmRoVnpHQVFRaHNBQUFBZ0dPMElhN0pwUXVMREFCREVOa2M3dFA2T2pFR3dQUHZxRTY4a3dFTVEyQURBQUFBSEtvTmY1R2JTeGNXRndDR0pMSTVURnJVL1dnTWdPZmcwUzNXMTJ0akFNaExZQU1BQUFBY29nMXhUUzVkV0ZRQUdJUEk1akR2MTllcE1RQ2VoMGYzeVFnQThoTFlBQUFBQUMvVmhyZ21seTRzSmdDTVNXUnpHSXU2Z09maThUWHI2OHdZQVBJUjJBQUFBQUF2MFlhNEpwY3VMQ0lBbEVCazgzS0xjRFFKNFBtNEJPOWlFOW9Ba0lIQUJnQUFBTmhYRytLYVhMcXdlQUJRRXBITnk5bkZCdkNjUEw2VDlmWFJHQUR5RU5nQUFBQUErMmhEWEpOTEZ4WU5BRW9rc25tWkpoeE5BbmhlTHVYZDdkUVlBUG9uc0FFQUFBQ2UwNGE0SnBjdUxCWUFsQ3hGTmgrTVlXL3BhSklUWXdBeVBUZDN4ckEzdTRvQlpDQ3dBUUFBQUo3U2hyZ21seTdFTlFEdTEvUGlhQklncDk5Q1pMT3Z4ZllDb0VjQ0d3QUFBT0F4YllocmN1bkNZaTNBMU83YjU4YXdsL2V4T1M0S0lJZjBETDAwaHIxNGx3UG9tY0FHQUFBQWVFZ2Iva0kybHk3RU5RQlRkQloyVHRpWFhXeUFuTjdFNWdnL250WnMzK3NBNkluQUJnQUFBTGlyRFhGTkxsMklhd0Ntek00Sit6OUxuQm9Ea01uVit2cGwreWRQRXp3QzlFaGdBd0FBQU56VWhyZ21seTdFTlFCellPZUUvWHd5QWlBamtjMSttdGdjM1FkQUR3UTJBQUFBd0U0YjRwcGN1aERYQU16RjFmYWVibEgzYVl2dEJaQkxpaDAvR01PejBpNDJKOFlBY0R5QkRRQUFBSkMwSWE3SnBRdHhEY0RjcEVYZE44YndMRWVUQUVNOGE1OGJ3NU5TWEdNWEc0QWVDR3dBQUFDQU5zUTF1WFFocmdHWXEyWFlPZUU1aTdDTERaRGYyZnE2TUlZbnZRdTcyQUFjVFdBREFBQUFkV3REWEpOTEYrSWFnTG43SEJaMW4yTVhHMkFJNmJsN1pReVBzb3NOUUE4RU5nQUFBRkN2TnNRMXVYUWhyZ0dvUmJyZlh4ckRveFpoRnhzZ3Y2dllITjEzWlJTUHNvc053SkVFTmdBQUFGQ25Oc1ExdVhRaHJnR295ZFgydm05UjkzRjJzUUdHa0dKSFIvYzk3bVQ3SGdqQWdRUTJBQUFBVUo4MnhEVzVkQ0d1QWFpUlJkMm5MZFpYWXd6QVFNL2puVEU4NnAwUkFCeE9ZQU1BQUFCMWFVTmNrMHNYNGhxQTJuOFBkTWJ3S0x2WUFFTkp3YU9qK3g3V2hGMXNBQTRtc0FFQUFJQjZ0Q0d1eWFVTGNRMEFtMFhkbFRFOCtoelNHQU13Z0N2UDVrOFNQQUljU0dBREFBQUFkV2hEWEpOTEYvNENINENOdEtqN3hoZ2VaVkVYR0lxait4N1hySy9YeGdEd2NnSWJBQUFBbUw4MnhEVzVkQ0d1QWVDMnRLaDdiZ3dQU2d1Nko4WUFET1R6K2xvYXc0UGVHUUhBeXdsc0FBQUFZTjdhRU5mazBvVzRCb0NIbmNVbXRPRzJGTmU4TndaZ1FPbDUvY29ZN2xsc0x3QmVRR0FEQUFBQTg5V0d1Q2FYTHNRMUFEek5vdTdEM2hvQk1LQ1Y1M2IzWTRDK0NHd0FBQUJnbnRvUTErVFNoYitrQitCNWpvcDZXTE45VGdFWXlzWDI0djQ3WTJNTUFQc1QyQUFBQU1EOHBLTVh4RFY1ZENHdUFXQi9uOE5SVVE5NVp3VEF3T3dxOXJEV0NBRDJKN0FCQUFDQWVVbGh6U2RqeUtJTGNRMEFMK2QzeDMybjJ3dGdLQ211c2F2WWZZSkhnQmNRMkFBQUFNQjhwTGltTllZc3VyQkFDc0JoSEJYMU1JdTZ3TkRTcm1KTFk3amx4RHNrd1A0RU5nQUFBREFQNHBwOHVoRFhBSENjcy9XMU1vWmIwblBMaVRFQUEvTmNmOTliSXdEWWo4QUdBQUFBcGs5Y2swOFgvaEllZ0g3NGZYS2Y1eGRnYUt1d3E5aGRpM0JzSDhCZUJEWUFBQUF3YmVLYWZMcXdHQXBBZjVicjY4SVlibkZNRkRDR2RGVFV5aGpjandGZVNtQURBQUFBMHlXdXlhY0xjUTBBL2Z1d3ZxNk00WWNtTmpzbkFBenBhbnMvNXRwckl3QjRuc0FHQUFBQXBrbGNrMDhYNGhvQThsaXRyeS9HY010Ykl3QkdrSFlVV3hyRER5ZmVMd0dlSjdBQkFBQ0E2UkhYNU5PRnVBYUF2TTdDMFNRM3BWMFRUb3dCR0lIbi90c0Vqd0RQRU5nQUFBREF0SWhyOHVuQ1g3SURNSXh6SS9naHhUV09KZ0hHc0ZwZm40M2hoMFZzanU0RDRCRUNHd0FBQUpnT2NVMCtYWWhyQUJqMjk4N1NHSDZ3YXdJd2xoUThYaG5ERDk0M0FaNGdzQUVBQUlCcEVOZmswNFc0Qm9EaDJjWG0yaUxzbWdDTUk4VTFYNHpoQjhFandCTUVOZ0FBQUZBK2NVMCtYWWhyQUJqSE11eGljNU5qb29DeHBHT2lWc2J3WGJPK1RvMEI0R0VDR3dBQUFDaWJ1Q2FmTHNRMUFJekw3NkZyNzR3QUdFbmF4Y2F1WXRmc1lnUHdDSUVOQUFBQWxFdGNrMDhYRmpVQkdOOXErenNKdXlZQTQ3OGZySXpoTysrZ0FJOFEyQUFBQUVDWnhEWDVkQ0d1QWFBY2RrMjRadGNFd1AxNGZDZmgyRDZBQndsc0FBQUFvRHppbW55NkVOY0FVSlpWMk1WbXg0SXVNUGE3d3NvWXZ2dlZDQUR1RTlnQUFBQkFXY1ExK1hRaHJnR2dUSFpOMkdqQ01WR0ErM0VKQkk4QUR4RFlBQUFBUURuRU5mbDBJYTRCb0Z5cnNJdk5qbU9pZ0xIZkcxYkc0SmdvZ0ljSWJBQUFBS0FNNHBwOHVoRFhBRkMrTDBid25RVmRZR3gyc2Rsd1RCVEFIUUliQUFBQUdKKzRKcDh1eERVQVRNUGwrbG9hZzJPaWdORmRySzhyWTRpRkVRRGNKckFCQUFDQWNZbHI4dWxDWEFQQXROZzFZV05oQk1DSVVseGpWekhCSThBOUFoc0FBQUFZajdnbW55N0VOUUJNejNKOXJZd2gzaG9CTUxMUFJ1QitESENYd0FZQUFBREdJYTdKcHd0eERRRFRaUmVielk0Sko4WUFqT2hxKzE1UnU0VVJBRndUMkFBQUFNRHd4RFg1ZENHdUFXRDZ2OHV1akNGZUd3RXdNc2RFYllMSHhoZ0FOZ1EyQUFBQU1DeHhUVDVkaUdzQW1BZUx1aEcvR2dFd3NzdllITjFYdTRVUkFHd0liQUFBQUdBNDRwcDh1aERYQURDdjMydTFXeGdCVUlEZmpVRHdDTEFqc0FFQUFJQmhpR3Z5NlVKY0E4QzhyTmJYUmVVek9BbVJEVkRHdTBidHgvYTVGd05zQ1d3QUFBQWdQM0ZOUGwySWF3Q1lKN3NtV05RRnlubm5xSm5nRVdCTFlBTUFBQUI1aVd2eTZVSmNBOEI4cFIxc1ZwWFB3TEVrUUFtK0dJSEFCaUFSMkFBQUFFQSs0cHA4dWhEWEFEQi90UjhUZFJxYm5STUF4clJhWDh2S1p5QjRCQWlCRFFBQUFPUWlyc21uQzNFTkFIV3dhNEpkRTRBeTFINXNuK0FSSUFRMkFBQUFrSU80SnA4dXhEVUExR08xdmk0cm44RXJQd1pBQVM2TVFQQUlJTEFCQUFDQWZvbHI4dWxDWEFOQWZXcmZOV0hoUndBb3dOWDJmYVJtZ2tlZ2VnSWJBQUFBNkkrNEpwOHV4RFVBMVBzN3NHYU9KUUZLOFlmN01VRGRCRFlBQUFEUUQzRk5QbDJJYXdDb1Y5bzFvZmFqU1JaK0RJQUNYR3p2eWU3RkFKVVMyQUFBQU1EeHhEWDVkQ0d1QVFDN0pnQ1VRZkFJVURHQkRRQUFBQnhIWEpOUEYrSWFBRWhxWDlCOTVVY0FLRVR0d2VQQ2p3QlFNNEVOQUFBQUhFNWNrMDhYNGhvQTJFbEhraXdyL3Z3TFB3SkFJV28vSnVvblB3SkF6UVEyQUFBQWNCaHhUVDVkaUdzQTRDN0hSQUdVb2VaZHhSYStmcUJtQWhzQUFBQjRPWEZOUGwySWF3RGdJYlVmRTdYd0l3QVU0cStLUC92SittcjhDQUMxRXRnQUFBREF5NGhyOHVsQ1hBTUFqMW10cjh1S1A3OWpTWUJTMUI0ODJsRU1xSmJBQmdBQUFQWW5yc21uQzNFTkFEeG5XZkZudDZBTGxPS3E4dnZ4S3o4Q1FLMEVOZ0FBQUxBZmNVMCtYWWhyQUdBZmYxVDgyUVUyZ1B1eCt6SEFxQVEyQUFBQThEeHhUVDVkaUdzQVlGL0wyT3ljVUt1Rkh3R2dvUHR4clFRMlFMVUVOZ0FBQVBBMGNVMCtYWWhyQU9DbGxoVi9kb3U2UUNrdW85N2c4V1I5Tlg0RWdCb0piQUFBQU9CeDRwcDh1aERYQU1BaC9xcjRzLy9MMXc4VVpGbnhaeGM4QWxVUzJBQUFBTUREeERYNWRDR3VBWUJETFN2KzdCWjBnWkxVSER5Nkh3TlZFdGdBQUFEQWZlS2FmTG9RMXdEQU1Xbytsc1NDTGxDU1pjV2YvU2RmUDFBamdRMEFBQURjSnE3SnB3dHhEUUQwWVZucDV6NVpYNDJ2SHloRXpjR2plekZRSllFTkFBQUFYQlBYNU5PRnVBWUErbEx6c1NTTnJ4OG95TExTejIxSE1hQktBaHNBQUFEWUVOZmswNFc0QmdENmRGbnhaN2VvQzVTazV1RFIvUmlvanNBR0FBQUF4RFU1ZFNHdUFZQytMU3YrN1AveTlRTUZxVGw0Ykh6OVFHMEVOZ0FBQU5ST1hKTlBGK0lhQU1obFdlbm50bU1DNEY3c2Znd3dDb0VOQUFBQU5SUFg1Tk9GdUFZQWNxcDExNFRHVncrNEh4ZkJqbUpBZFFRMkFBQUExRXBjazA4WDRob0F5TzNmbFg3dXhsY1BGRWJ3Q0ZBSmdRMEFBQUExRXRmazA0VzRCZ0NHY0ZueFozY3NDVkNTV29OSDkyS2dPZ0liQUFBQWFpT3V5YWNMY1EwQURLWG13T2JFMXcrNEg3c1hBd3hOWUFNQUFFQk54RFg1ZENHdUFZQ2gxYnFvYTljRW9DVExpais3K3pGUUZZRU5BQUFBdFJEWDVOT0Z1QVlBeHJDcTlIUGJOUUZ3UDNZL0JoaWN3QVlBQUlBYWlHdnk2VUpjQXdCaitYZWxuL3NuWHoxUW1GV2xuOXNPTmtCVkJEWUFBQURNbmJnbW55N0VOUUF3cGxxUGlMSmpBbENhdjl5UEFlWlBZQU1BQU1DY2lXdnk2VUpjQXdCalcxWDZ1UnRmUFZDWXEwby85Nzk4OVVCTkJEWUFBQURNbGJnbW55N0VOUUJRZ2xwM3NHbDg5WUQ3c2ZzeHdOQUVOZ0FBQU15UnVDYWZMc1ExQUZDU2xSRUF1QmNEa0ovQUJnQUFnTGtSMStUVGhiZ0dBRXF6cXZSekwzejFnSHV4ZXpIQWtBUTJBQUFBekltNEpwOHV4RFVBVUtLVkVRQVU0ZElJQU9aTllBTUFBTUJjaUd2eTZVSmNBd0NsK20rbG4vdkVWdzhVNXNvSUFPWk5ZQU1BQU1BY2lHdnk2VUpjQXdBbHEzVkI5OVJYRHhSbVZlbm5YdmpxZ1ZvSWJBQUFBSmc2Y1UwK1hZaHJBS0IwamlRQktNTi9qUUJnM2dRMkFBQUFUSm00SnA4dXhEVUFBQUFBOEozQUJnQUFnS2tTMStUVGhiZ0dBS2FpMWgxc2Z2TFZBNFZaVnZxNUcxODlVQXVCRFFBQUFGTWtyc21uQzNFTkFFekpWYVdmKzhSWEQxQ0V4Z2lBV2doc0FBQUFtQnB4VFQ1ZGlHc0FBQUFPY1dVRUFQTW1zQUVBQUdCS3hEWDVkQ0d1QVlDcHVqUUNBUGRpQVBJUzJBQUFBREFWNHBwOHVoRFhBTUNVMlRVQkFBQXlFOWdBQUFBd0JlS2FmTG9RMXdBQTA3TXdBb0FpL0dRRVFDMEVOZ0FBQUpST1hKTlBGK0lhQUFDQXZ0UzRvOWlKcngyb2hjQUdBQUNBa29scjh1bENYQU1BYzdFeUFvQWlYQm9Cd0h3SmJBQUFBQ2lWdUNhZkxzUTFBREFuL3pVQ0FBRElTMkFEQUFCQWljUTErWFFocmdFQUFBQ0FGeEhZQUFBQVVCcHhUVDVkaUdzQUFBQUE0TVVFTmdBQUFKUkVYSk5QRitJYUFBQUFBRGlJd0FZQUFJQlNpR3Z5NlVKY0F3QUFBQUFIRTlnQUFBQlFBbkZOUGwySWF3QUFBQURnS0FJYkFBQUF4aWF1eWFjTGNRMEFBQUFBSEUxZ0F3QUF3SmpFTmZsMElhNEJBQUFBZ0Y0SWJBQUFBQmlMdUNhZkxzUTFBQUFBQU5BYmdRMEFBQUJqRU5mazA0VzRCZ0FBQUFCNkpiQUJBQUJnYU9LYWZMb1Exd0FBQUFCQTd3UTJBQUFBREVsY2swOFg0aG9BQUFBQXlFSmdBd0FBd0ZERU5mbDBJYTRCQUFBQWdHd0VOZ0FBQUF4QlhKTlBGK0lhQUtqZFA0MEFBQUR5RXRnQUFBQ1FtN2dtbnk3RU5RQkF4S2tSQUxnZkE1Q1h3QVlBQUlDY3hEWDVkQ0d1QVFBQUtNbUpFUURNbDhBR0FBQ0FYTVExK1hRaHJnRUE2blpwQkFCRitNc0lnRm9JYkFBQUFNaEJYSk5QRitJYUFJQXJJd0FBWUVnQ0d3QUFBUG9tcnNtbkMzRU5BSERmd2dnQVJuZHFCQUR6SnJBQkFBQ2dUK0thZkxvUTF3QUFBSlRxeEFnQTVrMWdBd0FBUUYvRU5mbDBJYTRCQUFDZ1BJN3NBNm9oc0FFQUFLQVA0cHA4dWhEWEFBQ1BXMVQ2dWYveTFRT0ZxZldJcUV0ZlBWQUxnUTBBQUFESEV0ZmswNFc0QmdBQVlBb2NFUVV3Y3dJYkFBQUFqaUd1eWFjTGNRMEE4THpHQ0FDSzhFOGpBSmczZ1EwQUFBQ0hFdGZrMDRXNEJnRFlUMVBwNTNZa0NWQWFSMFFCekp6QUJnQUFnRU9JYS9McFFsd0RBT3l2MWgwVHJuejFRR0ZxUFNMSy9SaW9oc0FHQUFDQWx4TFg1Tk9GdUFZQWVKbFRJd0J3UHdZZ1A0RU5BQUFBTHlHdXlhY0xjUTBBOEhKTnBaL2JrU1JBU1dyZHZXYnBxd2RxSXJBQkFBQmdYK0thZkxvUTF3QUFoMmtxL2R5T0pBRktZdmNhZ0FvSWJBQUFBTmlIdUNhZkxzUTFBTUJoYWwzUUZkY0FwV2txL2R3clh6MVFFNEVOQUFBQXp4SFg1Tk9GdUFZQU9GeXRSNUk0SGdvb1RWUHA1LzZ2cng2b2ljQUdBQUNBcDRocjh1bENYQU1BSEdkaEJBQkYrS25TejIxSE1hQXFBaHNBQUFBZUk2N0pwd3R4RFFCd3ZIOVYrcm4vOHRVRGhXa3EvZHgyRkFPcUlyQUJBQURnSWVLYWZMb1Exd0FBL1dpTUFLQUlwMFlBTUg4Q0d3QUFBTzRTMStUVGhiZ0dBT2pQb3RMUHZmVFZBKzdGN3NjQVF4UFlBQUFBY0pPNEpwOHV4RFVBUUgvc2xnQlFocWJTejMzbHF3ZHFJN0FCQUFCZ1IxeVRUeGZpR2dDZ1gwM0ZuMzNwNndjSzhsT2xuL3ZTVncvVVJtQURBQUJBSXE3SnB3dHhEUURRdjFwM3NMRmpBdUIrN0g0TU1BcUJEUUFBQU9LYWZMb1Exd0FBZWJ5cTlIUGJNUUVvemFMU3ovMXZYejFRRzRFTkFBQkEzY1ExK1hRaHJnRUE4bGxVK3JsWHZucWdJS2NWZjNiQkkxQWRnUTBBQUVDOXhEWDVkQ0d1QVFEeXFYbEI5NysrZnFBZ2k0by91eU9pZ09vSWJBQUFBT29rcnNtbkMzRU5BSkRYb3VMUHZ2VDFBd1g1eWYwWW9CNENHd0FBZ1BxSWEvTHBRbHdEQU9SWDg0THV5dGNQRkdUaFhneFFENEVOQUFCQVhjUTErWFFocmdFQWhyR28rTE92ZlAxQUlacnQ1VjRNVUFtQkRRQUFRRDNFTmZsMElhNEJBSWJSUkwwTHVrdGZQMUNRUmNXZi9TOWZQMUFqZ1EwQUFFQWR4RFg1ZENHdUFRQ0dzNmo0czY5OC9VQkJYcmtmQTlSRllBTUFBREIvNHBwOHVoRFhBQUREcW5sQjk5KytmcUFnaTRvLys2V3ZINmlSd0FZQUFHRGV4RFg1ZENHdUFRQ0c5N3JpejI1QkZ5aEZFL1VlMStkK0RGVHJIMFlBQUFBd1crS2FmRkpZMHhrREFEQ3cwL1YxVXZIbnQ2QUxsS0xtMkhIcDZ3ZHFaUWNiQUFDQWVSTFg1Q091QVFER3NxajRzNi9XMTVVZkFhQVFOUi9YSjNZRXFpV3dBUUFBbUI5eFRUN2lHZ0JnVEc4ci91d1dkSUdTMUx5RHpiOTkvVUN0QkRZQUFBRHpJcTdKUjF3REFJd3BIUTExV3ZIbi84dVBBRkNJMTVWL2ZzRWpVQzJCRFFBQXdIeUlhL0lSMXdBQVk3T2dDMUNHWDkyUEFlb2tzQUVBQUpnSGNVMCs0aG9Bb0FTMUwrZ3UvUWdBaFZpNEZ3UFVTV0FEQUFBd2ZlS2FmTVExQUVBcGF0N0J4bTRKUUNuU1VYMU54Wi9mY1gxQTFRUTJBQUFBMHlhdXlVZGNBd0NVb3Ziam9aWitCSUJDdkszODh3c2VnYW9KYkFBQUFLWkxYSk9QdUFZQUtFbnR4MFBaTVFFb2hlQVJvR0lDR3dBQWdHa1MxK1FqcmdFQVNuSVNGblR0bUFDVW9QYmpvZEs5K01xUEFWQXpnUTBBQU1EMGlHdnlFZGNBQUtWSmNjMUp4WjkvdGIwQXh2YXU4cysvOUNNQTFFNWdBd0FBTUMzaW1uekVOUUJBaVdvL0htcnBSd0FvUk8yN2lmM2Jqd0JRTzRFTkFBREFkSWhyOGhIWEFBQWxjanhVeEY5K0RJQUMxTDZiV0hMaHh3Q29uY0FHQUFCZ0dzUTErWWhyQUlCU2VmNnpndzFRaHJlVmYvN0w5WFhseHdDb25jQUdBQUNnZk9LYWZNUTFBRURKM2xYKytkT0M3c3FQQVRBeXU0bUpIUUcrRTlnQUFBQ1VUVnlUajdnR0FDalo2ZnBxS3AvQjBvOEJVQUR2NUk3ckEvaE9ZQU1BQUZBdWNVMCs0aG9Bb0hUdmpNQ0NMdUIrWElpbEVRQUliQUFBQUVvbHJzbEhYQU1BbE01eEpCdExJd0JHdGdpN2lhVjc4WlVmQlFDQkRRQUFRSW5FTmZtSWF3Q0FLVWpQZ2llVnoyQVpGblNCOGIwMWd2akRDQUEyQkRZQUFBQmxFZGZrSTY0QkFLYkNjU1FXZElIeE5kN1B2MXNhQWNDR3dBWUFBS0FjNHBwOHhEVUF3RlFzd25Fa3lZVVJBQ1B6Zmg2eFdsK1h4Z0N3OFE4akFBQUFHRjNhL3Y5YmJCWlQ2Sis0QmdDWWtvOUc4SDFCZDJVTXdNanNKaVoyQkxoRllBTUFBREN1Rk5mOHViNU9qU0lMY1EwQU1DVk5pSzRUQzdyQTJOcnQrM3J0L2pJQ2dHdU9pQUlBQUJpUHVDWXZjUTBBTURWMnI5bjQzUWdBOStQUlhZWGdFZUFXZ1EwQUFNQTR4RFY1aVdzQWdLbHBZck5qUXUzU2d1NmxNUUFqYXJmMzVOcUphd0R1RU5nQUFBQU1UMXlUbDdnR0FKaWlkMGJ3blFWZFlHeHZqZUE3eDBNQjNDR3dBUUFBR0phNEppOXhEUUF3MVdmRTFoaSsrOE1JZ0JFdHRoZUNSNEI3QkRZQUFBRERFZGZrSmE0QkFLYnEvZlpac1hicGVDZ0x1c0NZUGhyQmR4ZmJleklBTndoc0FBQUFoaUd1eVV0Y0F3Qk0rVG5SOFZBYjRocGdUSXV3ZTgyTzNjUUFIaUN3QVFBQXlFOWNrNWU0QmdDWU1ydlhYTE9nQzR6SjdqVWJkaE1EZUlUQUJnQUFJQzl4VFY3aUdnQmc2cytLZHEvWnNLQUxqR2tSZHEvWmNUd1V3Q01FTmdBQUFQbUlhL0lTMXdBQVUvY3A3RjZ6NDdrT0dQdCt6SWJkeEFBZUliQUJBQURJUTF5VGw3Z0dBSmk2Wm4yMXh2REQ3MFlBaktUMTd2NkQzY1FBbmlDd0FRQUE2Sis0Smk5eERRQXdCeCtONElmVitybzBCc0Q5ZUhUZXRRR2VJTEFCQUFEb2w3Z21MM0VOQURBSGk3Qjd6VTFmakFBWXlWbHNkaFJqdzI1aUFFOFEyQUFBQVBSSFhKT1h1QVlBbUF1N0pkem1PQkpnckhmNGQ4Ynd3eXJzSmdid0pJRU5BQUJBUDhRMWVZbHJBSUM1YUdPemd3MGJLYTVaR1FNd2dvL2JkM2syN0NZRzhBeUJEUUFBd1BIRU5YbUphd0NBT1QwMzJyM210aitNQUJoQmVuOS9id3kzZU84R2VJYkFCZ0FBNERqaW1yekVOUURBbktURjNNWVlmcmp5ckFlTTVKTVIzTkp0NzhrQVBFRmdBd0FBY0RoeFRWN2lHZ0JnVHBxd2U4MWRudldBTWJUaHFMNjdmamNDZ09jSmJBQUFBQTRqcnNsTFhBTUF6TTFYSTdqbml4RUFJN3pMMjczbXR0WDZXaG9Ed1BNRU5nQUFBQzhucnNsTFhBTUF6RTBiZGt1NGF4bWJSVjJBSVgzY3Z0TnpUZXdJc0NlQkRRQUF3TXVJYS9JUzF3QUFjM3grdEZ2Q2ZSWjBnYUV0MXRkN1k3akhPempBbmdRMkFBQUEreFBYNUNXdUFRRG02R3ZZTGVHdTFmcTZNQVpnNFBkNVIvWGRsOTdCcjR3QllEOENHd0FBZ1AySWEvSVMxd0FBYy9SNmUzR2IzV3VBb2FXZGF4cGpjRDhHT0liQUJnQUE0SG5pbXJ6RU5RREFYSjhoN1padzM1Vm5QMkJnNlYzK296SGNzMXhmbDhZQXNEK0JEUUFBd05QRU5YbUphd0NBdVhJMDFNUFMwVkNPSXdHR2ZLZi9aZ3dQc25zTndBc0piQUFBQUI0bnJzbExYQU1BekpXam9SNTNiZ1RBZ05MT05ZMHgzTE9LVGZBSXdBc0liQUFBQUI0bXJzbExYQU1BelBrNTB0RlFEMHVMdVN0akFBYXlXRi92amVGQllrZUFBd2hzQUFBQTdoUFg1Q1d1QVFEbTdGczRHdW94amlNQmhueXZkelRVdzlJeGZYYXZBVGlBd0FZQUFPQTJjVTFlNGhvQVlNN1NUZ2tMWTNqUWNuc0JET0ZyaUIwZmsyTEhLMk1BZURtQkRRQUF3RFZ4VFY3aUdnQmd6dEl6NUNkamVKVGpTSUNocE5qeHRURThLSVUxbjQwQjREQUNHd0FBZ0ExeFRWN2lHZ0JnN3MrU2ppSjUzQ3JzWGdNTVErejROTHZYQUJ4QllBTUFBQ0N1eVUxY0F3RE1YVHFLcERHR1I5bTlCaGpxM1Y3cytEVHY1Z0JIRU5nQUFBQzFFOWZrSmE0QkFPYnVMQnhGOHBTVjUwRmdJQ211YVl6aFVkMzJuZ3pBZ1FRMkFBQkF6Y1ExZVlsckFJQzVXNnl2ajhid0pMdlhBRU00Mjk2VGNUOEd5RVpnQXdBQTFFcGNrNWU0QmdDWXV5WWNSZktjbFdkQ1lBQnBGekd4NDlPNnNIc053TkVFTmdBQVFJM0VOWG1KYXdDQUdwNG52MjMvNUhGMlN3QnlTKy8xWDQzQi9SaGdDQUliQUFDZ051S2F2TVExQUVBTnZucWVmTmJLY3lFd3dQdTkyUEY1NTJIM0dvQmVDR3dBQUlDYWlHdnlFdGNBQURYNEZKdmpTSGphQnlNQU1rdnY5NDB4UE9scWZYMDJCb0IrQ0d3QUFJQmFpR3Z5RXRjQUFEVm8xOWQ3WTNqV2NuMWRHQU9Ra1ozRTl2TWxOcEVOQUQwUTJBQUFBRFVRMStRbHJnRUFhcEIycmZscURIczVOd0lnbzdTVFdHc016N0o3RFVEUEJEWUFBTURjaVd2eUV0Y0FBRFZJejVMaW12MHN0eGRBRG0zWVNXeGZLWGEwZXcxQWp3UTJBQURBbklscjhoTFhBQUExT04wK1U1NFl4ZDdQaUFBNXRDRjIzTmNxN0Y0RDBEdUJEUUFBTUZmaW1yekVOUUJBTGMrVTMwSmNzNi8wZkxneUJpQURPNG05ekFjakFPaWZ3QVlBQUpnamNVMWU0aG9Bb0tabnlzWW85cEtPSWJHZ0MrU3cyMG1NL1N6WDE0VXhBUFJQWUFNQUFNeU51Q1l2Y1EwQTRKbVNoM3lKVFdRRDBDZkg5TDJjMkJFZ0U0RU5BQUF3SnhaQzhoTFhBQUNlS1huSWFuMmRHUVBRTTNITnk2VjM5a3RqQU1oRFlBTUFBTXlGaFpDOHhEVUFnR2RLSG1PM0JLQnY0cHFYYzFRZlFHWUNHd0FBWUE0c2hPUWxyZ0VBUEZQeW1PWDZ1akFHb0VmaW1zT2NoNlA2QUxJUzJBQUFBRk5uSVNRdmNRMEE0Sm1TNTU0WEFmb2lyamxNT2hicXN6RUE1Q1d3QVFBQXBzeENTRjdpR2dEQU15VlBTYnNsckl3QjZJbTQ1bkNPaGdJWWdNQUdBQUNZS2dzaGVZbHJBQURQbER4bEZYWkxBUG9qcmpsY2VuZGZHZ05BZmdJYkFBQmdpaXlFNUNXdUFRQnEwSGltUFBxWjhjb1lnQjY4RG5ITm9kSjkyTzQxQUFQNWh4RUFBQUFUSTY3SlMxd0RBTlRBVGduSHVRaTdKUUQ5YU5mWFYyTTRXSXByeEk0QUE3R0REUUFBTUNYaW1yekVOUUJBRGNRMXg3bmFQamNDSE90OWlHdU9zZlFPRHpBc2dRMEFBREFWNHBxOHhEVUFRQTNhOWZWM2lHdU9jUjUyU3dDT2w4S2FUOFp3TUxFandBZ0VOZ0FBd0JTSWEvSVMxd0FBTlRnTE95VWNhN20rUGhzRGNPVDcvYmZZQkk4Y0xzV09LMk1BR05ZL2pBQUFBQ2ljdUNZdmNRMEFVTVB6Wk5vbG9UV0tvOWd0QVRoV0U1dTR4dnY5Y1M1RDdBZ3dDb0VOQUFCUU1uRk5YdUlhQU1EekpQdXlXd0p3ak5QdC9kZ1JmZjI4eXdNd0FrZEVBUUFBcGJJWWtwZTRCZ0NZdS9RYytSL1BrNzFZaHQwU2dNTzE2K3Z2RU5mMDRVTnNkckFCWUFRQ0d3QUFvRVRpbXJ6RU5RREEzTFZoTWJjdmpvWUNqbm0zLzdxOU9ONHl4STRBbzNKRUZBQUFVQnB4VFY3aUdnQmc3cytTbjJJVDJOQ1B0RnZDeWhpQUYyclcxemZ2OXIwUk93SVV3QTQyQUFCQVNjUTFlWWxyQUlBNU85MCtTN1pHMFpzTHo0L0FBVjdIWmhjeDcvYjlFVHNDRkVCZ0F3QUFsRUpjazVlNEJnQ1lzOWF6Wk85V1liY0U0T1hTTG1MZndoRjlmUkk3QWhUQ0VWRUFBRUFKeERWNWlXc0FnRGsvUnpvU0t0OHo1SlV4QUh0SzcvTmZ2ZGYzenRGUUFBV3hndzBBQURBMmNVMWU0aG9BWUs0V3NUbUNwRFdLM3AydnI2VXhBSHQ2NzcwK216Y2hkZ1FvaGgxc0FBQ0FNWWxyOGhMWEFBQnpkYmErUGhwREZwZmIrUUxzODA2ZmpvTmFHRVVXWWtlQXdnaHNBQUNBc1locjhoTFhBQUJ6NUFpU3ZOSXVDVytNQWRqRDYrMzkrTVFvc2xpRzJCR2dPSTZJQWdBQXhpQ3V5VXRjQXdETTBWbHNqb1R5REpuM09YSmxETUF6Ny9QZnRwZTRKZyt4STBDaDdHQURBQUFNVFZ5VGw3Z0dBSmliUld4MlNXaU1JcXZQNit2Q0dJQW52SS9OOFh6Q21yeFNYSE5sREFEbHNZTU5BQUF3SkhGTlh1SWFBR0J1ejQ2ZnRzK1BqWEZrdFZ4Zkg0d0JlTVRwOWw3OEtjUTF1WjF2NzhrQUZNZ09OZ0FBd0ZERU5YbUphd0NBT1duRFF1NVFIRVVDUFBVZXY5dTFodnpTTG1KbnhnQlFMb0VOQUFBd0JIRk5YdUlhQUdBdTB2TmlDbXNXUmpHWVg4SlJKTUI5Yld6Q21zWW9CckhhdnRzRFVEQ0JEUUFBa0p1NEppOXhEUUF3bDJmR0ZOYTBSakg0cytTbE1RQTNMR0lUMWl5TVlqQzduY1RFamdDRkU5Z0FBQUE1aVd2eUV0Y0FBSE40WGt6SGo3d0x4MEVOcmZNc0NkelF4Q2FzYVkxaWNCOUM3QWd3Q1FJYkFBQWdGM0ZOWHVJYUFHRHEydGpzV2lPc0dkNWxPSW9FdUg1M1Q2SGpSNk1ZeGJsM2U0RHBFTmdBQUFBNWlHdnlFdGNBQUZQV3htWWh0ekdLVWF6VzF5L0dBTjdid3c1aVk3dFlYMmZHQURBZEFoc0FBS0J2NHBxOHhEVUF3RlMxSWF3WjI5WDZlclA5RTZqM25WMVlNejQ3aVFGTWtNQUdBQURvazdnbUwzRU5BREJGYlFoclNucWV2RFFHcVBaOVhWaFRoaFE1L2hKaVI0REpFZGdBQUFCOUVkZmtKYTRCQUtiMmJQZzZoRFdsUFU5ZUdBTlVKOTJEVTFUVGhyQ21CT0lhZ0FrVDJBQUFBSDBRMStRbHJnRUFwcUtKelNLdUhSTEswbm1laE9xY3huVllRMW52OTNZU0E1Z29nUTBBQUhBc2NVMWU0aG9BWUFvVzYrdHRXTWd0VWJkOXBnVHEwRzd2eHd1aktQTDkzazVpQUJNbXNBRUFBSTRocnNsTFhBTUFsUDRzbUk2QmV1ZDVzRmhwbDRRUHhnQ3oxOFIxV05NWVI1RStlNzhIbUQ2QkRRQUFjQ2h4VFY3aUdnQ2dWTHRqUjE2SFk2QktsdUthWDliWGxWSEFiTFhyNjlmdC9aaHlwWGQ3c1NQQURBaHNBQUNBUTRocjhoTFhBQUNsYWVKNnQ1ckdPSXFYb2hweERjeVR5SEZhdW5CTUg4QnNDR3dBQUlDWEV0ZmtKYTRCQUVwNjdtdGpjK1NJWjcvcEVOZkEvSnh1NzhVcHFtbU1ZekljMHdjd013SWJBQURnSmNRMWVZbHJBSUN4TmJGWndFMUhqaXlNWTNKMmNjMmxVY0RraVdxbXpURjlBRE1rc0FFQUFQWWxyc2xMWEFNQWpDVTkzKzJpR3M5NjB5V3VnZW03R1RnMnhqRlo0aHFBbVJMWUFBQUEreERYNUNXdUFRQ0cxTVJtOGZaVmJCWnpUNHhrRnQ2RXVBYW01dlRPL1pqcEU5Y0F6SmpBQmdBQWVJNjRKaTl4RFFDUVd4UFhDN2lMc0N2Q1hKOHBsOFlBeFR1OWN6OFdPTTdMS3NRMUFMTW1zQUVBQUo0aXJzbExYQU1BNUxEWVhqOXRuK01hSS9GTUNReXUyZDZEMC9WcSs2ZWdacjVTVlBNbXhEVUFzeWF3QVFBQW52STF4RFc1V0FnQkFJN1Z4UFh1TkdJYXo1VEFlRTV2M0lQRk5QVkpVVTNhdWNZeGZRQXpKN0FCQUFDZTRpOEU4N0FRQWdEc2E3ZEl1L3N6aFRSTmlLRHhUQWxEVzl6NDg1OXhIZFEwUmxNMWNRMUFSUVEyQUFBQXc3SVFBZ0IxYXVMaFJkakZqZjg3eFRNbkQvenY0SmtTK3ZQUTdqSzdrSEhuMVNQL085eDB1YjBmaTJzQUtpR3dBWWo0ZjBZQU1CbkwyUHlySUpncUN5RkFLZjRNaS9jQVUzUzFmYWE4TUlvczJ0Z2Nrd3Z3bkJUVi9MSzlMd05RQ1lFTkFBREFNTVExQUFBY3d6RWsrZTJlMTBVMndGUEVOUUNWK2g4akFBQUF5RTVjQXdEQU1jUTF3K20yeis4QUR4SFhBRlJNWUFNQUFKQ1h1QVlBZ0dPSWE0YlhoY2dHdUU5Y0ExQTVnUTBBQUVBKzRob0FBSTZSRm5OL0RuSE5HTG9RMlFDMzd3bnBmaXl1QWFqWVA0d0FBQUFnQzNFTkFBREhzRlBDK0hiUDgxK05BcXEvRndqdUFMQ0REUUFBUUFiaUdnQUFqbkVSNHBwU2RHRmhIV3Iyd1QwQWdCMDcyQUFBQVBSTFhBTUF3REc2c0pqNy85bTcxK080alN3QW83Y2N3V2F3NVJBY2drSlFCcTBRbUlHVUFaWEJWUWJjRE1ZWmpET0FNK0Jtc0lPZGhrVkpwRFFQOUF6UU9LY0sxU3ovYkpLb29mdlQ3U1YrVDBZbTJZQy83d0hZTUlFTkFBREFmUHpQTndBQXJqRk9TbmkwRFlzMGZjNFgyVUQveHVsaDR4U3h2YTBBNENWWFJBRUFBTXhEWEFNQXdLV2U2K2RKY2MyeVpaZ3VCTDBiUWx3RHdCdE1zQUVBQUxpZXVBWUFnRXVabExBdTArZCtrMnlnUC92NlBuNjJGUUM4eGdRYkFBQ0E2NGhyQUFDNDFIaVkrM3VJYTlZbXd5UWI2UEgzK284UTF3RHdFd0liQUFDQXk0bHJBQUM0MVBnNTBxU0VkWC8vUkRiUWh3ZS96d0Njd2hWUkFBQUFseEhYQUFCd3FmRXc5OUUyck43MDk0RHJvbUNkeHNEeC9lSFoyUW9BVGlHd0FRQUFPSis0QmdDQVN6ak03Yy8wZDRISUJ0WmxYOS9IZzYwQTRGU3VpQUlBQURpUHVBWUFnRXVNaDdsL2hMaW1SeG11bDRHMS9jNk9WL1FOdGdLQWN3aHNBQUFBVGlldUFRRGdFdU5uU0llNS9YK1BSVGF3Yk0vMTkvUkQvUm9BenVLS0tBQUFnTk9JYXdBQU9OZDRnUHZnYytSbVROOW4xMFhCOGd4eHZCSnFieXNBdUpRSk5nQUFBTDhtcmdFQTRGempJZTQ3bnlNM0o4TWtHMWlhcHpoZTBTZXVBZUFxQWhzQUFJQ2ZFOWNBQUhDdThmUGpHTmM0ek4zdTkxOWtBL2MzWFFuMVBsd0pCY0FNWEJFRkFBRHdObkVOQUFEbm1BNXpuMnpGNWsxL1I3Z3VDdTVqWDkvSFFrY0FabU9DRFFBQXdPdkVOUUFBbkdNWHh5dEl4RFZNTWt5eWdYdDRERmRDQWRDQUNUWUFBQUEvRXRjQUFIQ09oemdlNk1MM3ByOHJUTEtCOW9iNjkvek9WZ0RRZ3NBR0FBRGdXN3NRMXdBQWNCcFhrSENLNmU4TGtRMjA4MVRmeDgrMkFvQldYQkVGQUFBQUFBRG4reFN1SU9GMEdhNkxnaGJHb09aOWZjUTFBRFJsZ2cwQUFBQUFBSnpPMUJvdWxYVTF5UWJtWVdvTkFEZGxnZzBBQUFBQUFKekcxQnF1bFdHU0RWekwxQm9BN3NJRUd3QUFBQUFBK0xsZEhLT0l3Vll3ZzZ5clNUWnd2c2M0eG83Q0dnQnV6Z1FiQUFBQUFBQjQzWGlBKzNCNDNvVzRobmxsbUdRRDU5alhkL0ZEaUdzQXVCTVRiQUFBQUFBQTRFY1pEbkpwL3pNMk1za0czamErZ3o4Zm5vKzJBb0I3RTlnQUFBQUFBTUJYNDVTRU1heloyUXB1SU9zcXNvRWZQZFgzOFdBckFGZ0NnUTBBQUFBQUFCeW5KSHc2UEkrMmdodkx1b3BzNEdpSTR4VnFPMXNCd0pMOFpnc0FBQUFBQU5pNFBEeS9oN2lHKy80TWZyQU5iTndZT2o3VTkvSE9kZ0N3TkNiWUFBQUFBQUN3VmJzNEh1YnViUVVMa0hVMXlZWXRHZ1BIY1lyWXM2MEFZS2tFTmdBQUFBQUFiTTBRcmg5aG1iS3VJaHUyWWxmZng0T3RBR0RwWEJFRkFBQUFBTUJXREhFOHlIWDlDRXVXNGJvbytqZStnOS9WWjdBZEFLeUJDVFlBQUFBQUFQUnV2SExrOCtINWFDdFlpYXlyU1RiMFpvamoxWHhQdGdLQXRSSFlBQUFBQUFEUXF5bXNlYXhmdzVwa1hVVTI5R0E0UEo5ZS9Gd0R3T29JYkFBQUFBQUE2STJ3aGw1a1hVVTJyTlVRd2hvQU9pR3dBUUFBQUFDZ0Y4SWFlcFIxRmRtd0prTUlhd0Rvak1BR0FBQUFBSUMxR3c3UGx4RFcwSytzcThpR3BkdkhNWFJNV3dGQWJ3UTJBQUFBQUFDczFSQW1KTEFkMDgrNXlJWWwydFgzOGM1V0FOQXJnUTBBQUFBQUFHdXppK09FaENkYndjWmtYVVUyTE9sbmNud2Y3MjBGQUwwVDJBQUFBQUFBc0JZWkRuSWg2eXF5NFY2ZTQrczFVSVB0QUdBckJEWUFBQUFBQUN6WmNIaStISjdIT0I3cUFpSWI3bU9NR3orSGEva0EyQ2lCRFFBQUFBQUFTelJlLy9RbFhBTUZiOG02aW15NHhjK2E2V0VBYko3QUJnQUFBQUNBcFJqaUdOVmt1SFlFVHBGMUZka3d0MmxhelJnNW1oNEdBQ0d3QVFBQUFBRGcvdkx3L0NkTXE0RkxmMzlHSWh1dTlWemZ3NmJWQU1BckJEWUFBQUFBQU55RDZRZ3duNnlyeUlaTHVKSVBBRTRnc0FFQUFBQUE0RmJHcUdZNnhCMXNCOHdxNnlxeTRSVGplM2lhSENaeUJJQVRDR3dBQUFBQUFHaEpWQU8zazNVVjJmQWFVUTBBWEVGZ0F3QUFBQURBM0VRMWNEOVpWNUVORWFJYUFKaU53QVlBQUFBQWdHdU5oN2E3Y0lnTFM1RjFGZGxzei9EZCt4Z0FtSW5BQmdBQUFBQ0FTNHhUYW5aeFBNVGQyUTVZbkt5cnlLWi9MOS9GZTlzQkFHMEliQUFBQUFBQU9NVVEzeDdpbWxJRHk1ZDFGZG4wWlFvYy93eFRhZ0RnWmdRMkFBQUFBQUM4NXVVQjd2ajFZRXRnbGJLdUlwdjEydFgzOEo4aGNBU0F1eEhZQUFBQUFBQXdIdGErUEx6ZGh3TmM2RW5XVldTemZFTjlCLzlWMzhjN1d3SUF5eUN3QVFBQUFBRFlscUUrMDJRYTAybGdHN0t1SXB0bHZZOWZ4alRpUmdCWU1JRU5BQUFBQUVDZnBxazA0L1AzaTY4ZDNzSjJaVjFGTnJjMXhOZVlabm9mNzJ3TEFLeUx3QVlBQUFBQVlMMkdGODkwYURzR05EdGJBN3doNnlxeWFXTjhCMy8yUGdhQS9naHNBQUFBQUFDV1ovZmk2L0dROXIveGRTTE45TjlNb2dFdWxYVVYyY3p2WDRmbjM0Zm5vNjBBZ0w0SWJBQWlQdGtDZ05VWWJBRUFjTVhuaUMrMmdRWDhITDcxbVhabmU0QWJ5N3FLYk9aWDZ2ckJWZ0JBUHdRMkFQNGxBUUFBd0JZTS92NERnQjlrWFVVMjh5dDFGZGtBUUNkK3N3VUFBQUFBQUFDYmxTRUNhYVdFZUFrQXVpR3dBUUFBQUFBQTJMWU1rVTBySlVRMkFOQUZnUTBBQUFBQUFBQVpJcHRXU29oc0FHRDFCRFlBQUFBQUFBQ01Na1EyclpRUTJRREFxZ2xzQUFBQUFBQUFtR1NJYkZvcEliSUJnTlVTMkFBQUFBQUFBUEJTaHNpbWxSSWlHd0JZSllFTkFBQUFBQUFBMzhzUTJiUlNRbVFEQUtzanNBRUFBQUFBQU9BMUdTS2JWa3FJYkFCZ1ZRUTJBQUFBQUFBQXZDVkRaTk5LQ1pFTkFLeUd3QVlBQUFBQUFJQ2Z5UkRadEZKQ1pBTUFxeUN3QVFBQUFBQUE0RmN5UkRhdGxCRFpBTURpQ1d3QUFBQUFBQUE0UlliSXBwVVNJaHNBV0RTQkRRQUFBQUFBQUtmS0VObTBVa0prQXdDTEpiQUJBQUFBQUFEZ0hCa2ltMVpLaUd3QVlKRUVOZ0FBQUFBQUFKd3JRMlRUU2dtUkRRQXNqc0FHQUFBQUFBQ0FTMlNJYkZvcEliSUJnRVVSMkFBQUFBQUFBSENwREpGTkt5VkVOZ0N3R0FJYkFBQUFBQUFBcnBFaHNtbWxoTWdHQUJaQllBTUFBQUFBQU1DMU1rUTJyWlFRMlFEQTNRbHNBQUFBQUFBQW1FT0d5S2FWRWlJYkFMZ3JnUTBBQUFBQUFBQnp5UkRadEZKQ1pBTUFkeU93QVFBQUFBQUFZRTRaSXB0V1NvaHNBT0F1QkRZQUFBQUFBQURNTFVOazAwb0prUTBBM0p6QUJnQUFBQUFBZ0JZeVJEYXRsQkRaQU1CTkNXd0FBQUFBQUFCb0pVTmswMG9Ka1EwQTNJekFCZ0FBQUFBQWdKWXlSRGF0bEJEWkFNQk5DR3dBQUFBQUFBQm9MVU5rMDBvSmtRMEFOQ2V3QVFBQUFBQUE0Qll5UkRhdGxCRFpBRUJUQWhzQUFBQUFBQUJ1SlVOazAwb0prUTBBTkNPd0FRQUFBQUFBNEpZeVJEYXRsQkRaQUVBVEFoc0FBQUFBQUFCdUxVTmswMG9Ka1EwQXpFNWdBd0FBQUFBQXdEMWtpR3hhS1NHeUFZQlpDV3dBQUFBQUFBQzRsd3lSVFNzbFJEWUFNQnVCRFFBQUFBQUFBUGVVSWJKcHBZVElCZ0JtSWJBQkFBQUFBQURnM2pKRU5xMlVFTmtBd05VRU5nQUFBQUFBQUN4QmhzaW1sUklpR3dDNGlzQUdBQUFBQUFDQXBjZ1EyYlJTUW1RREFCY1QyQUFBQUFBQUFMQWtHU0tiVmtxSWJBRGdJZ0liQUFBQUFBQUFsaVpEWk5OS0NaRU5BSnhOWUFNQUFBQUFBTUFTWlloc1dpa2hzZ0dBc3doc0FBQUFBQUFBV0tvTWtVMHJKVVEyQUhBeWdRMEFBQUFBQUFCTGxpR3lhYVdFeUFZQVRpS3dBUUFBQUFBQVlPa3lSRGF0bEJEWkFNQXZDV3dBQUFBQUFBQllnd3lSVFNzbFJEWUE4Rk1DR3dBQUFBQUFBTllpUTJUVFNnbVJEUUM4U1dBREFBQUFBQURBbW1TSWJGb3BJYklCZ0ZjSmJBQUFBQUFBQUZpYkRKRk5LeVZFTmdEd0E0RU5BQUFBQUFBQWE1UWhzbW1saE1nR0FMNGhzQUVBQUFBQUFHQ3RNa1EyclpRUTJRREFQd1EyQUFBQUFBQUFyRm1HeUthVkVpSWJBUGcvZ1EwQUFBQUFBQUJybHlHeWFhV0V5QVlBQkRZQUFBQUFBQUIwSVVOazAwb0prUTBBR3lld0FRQUFBQUFBb0JjWklwdFdTb2hzQU5nd2dRMEFBQUFBQUFBOXlSRFp0RkpDWkFQQVJnbHNBQUFBQUFBQTZFMkd5S2FWRWlJYkFEWklZQU1BQUFBQUFFQ1BNa1EyclpRUTJRQ3dNUUliQUFBQUFBQUFlcFVoc21tbGhNZ0dnQTBSMkFBQUFBQUFBTkN6REpGTkt5VkVOZ0JzaE1BR0FBQUFBQUNBM21XSWJGb3BJYklCWUFNRU5nQUFBQUFBQUd4QmhzaW1sUklpR3dBNko3QUJBQUFBQUFCZ0t6SkVOcTJVRU5rQTBER0JEUUFBQUFBQUFGdVNJYkpwcFlUSUJvQk9DV3dBQUFBQUFBRFltZ3lSVFNzbFJEWUFkRWhnQXdBQUFBQUF3QlpsaUd4YUtTR3lBYUF6QWhzQUFBQUFBQUMyS2tOazAwb0prUTBBSFJIWUFBQUFBQUFBc0dVWklwdFdTb2hzQU9qRS93Umc3OTZPNURpU05JeitENnZJYXJBVUFTSlFBeDhScU1HTUJEc2l1QWdVZ2FOQml3QVJzQm9zQ21pUUFORUk5S1c4S2kvbm1JWFZ1MmM5dUZsK2xpR3dBUUFBQUFBQTRPdzZJcHNwRlpFTkFBY2dzQUVBQUFBQUFBQ1J6YVNLeUFhQW5SUFlBQUFBQUFBQXdHY2RrYzJVaXNnR2dCMFQyQUFBQUFBQUFNQmZPaUtiS1JXUkRRQTdKYkFCQUFBQUFBQ0FiM1ZFTmxNcUloc0Fka2hnQXdBQUFBQUFBTi9yaUd5bVZFUTJBT3lNd0FZQUFBQUFBQUNlMWhIWlRLbUliQURZRVlFTkFBQUFBQUFBL0ZoSFpET2xJcklCWUNjRU5nQUFBQUFBQUxEV0VkbE1xWWhzQU5nQmdRMEFBQUFBQUFEOFhFZGtNNlVpc2dGZzR3UTJBQUFBQUFBQThEd2RrYzJVaXNnR2dBMFQyQUFBQUFBQUFNRHpkVVEyVXlvaUd3QTJTbUFEQUFBQUFBQUFMOU1SMlV5cGlHd0EyQ0NCRFFBQUFBQUFBTHhjUjJRenBTS3lBV0JqQkRZQUFBQUFBQUR3T2gyUnpaU0t5QWFBRFJIWUFBQUFBQUFBd090MVJEWlRLaUliQURaQ1lBTUFBQUFBQUFCdjB4SFpUS21JYkFEWUFJRU5BQUFBQUFBQXZGMUhaRE9sSXJJQjRNNEVOZ0FBQUFBQUFIQWRIWkhObElySUJvQTdFdGdBQUFBQUFBREE5WFJFTmxNcUloc0E3a1JnQXdBQUFBQUFBTmZWRWRsTXFZaHNBTGdEZ1EwQUFBQUFBQUJjWDBka002VWlzZ0hneGdRMkFBQUFBQUFBTUtNanNwbFNFZGtBY0VNQ0d3QUFBQUFBQUpqVEVkbE1xWWhzQUxnUmdRMEFBQUFBQUFETTZvaHNwbFJFTmdEY2dNQUdBQUFBQUFBQTVuVkVObE1xSWhzQWhnbHNBQUFBQUFBQTREWTZJcHNwRlpFTkFJTUVOZ0FBQUFBQUFIQTdIWkhObElySUJvQWhBaHNBQUFBQUFBQzRyWTdJWmtwRlpBUEFBSUVOQUFBQUFBQUEzRjVIWkRPbElySUI0TW9FTmdBQUFBQUFBSEFmSFpITmxJcklCb0FyRXRnQUFBQUFBQURBL1hSRU5sTXFJaHNBcmtSZ0F3QUFBQUFBQVBmVkVkbE1xWWhzQUxnQ2dRMEFBQUFBQUFEY1gwZGtNNlVpc2dIZ2pRUTJBQUFBQUFBQXNBMGRrYzJVaXNnR2dEY1EyQUFBQUFBQUFNQjJkRVEyVXlvaUd3QmVTV0FEQUFBQUFBQUEyOUlSMlV5cGlHd0FlQVdCRFFBQUFBQUFBR3hQUjJRenBTS3lBZUNGQkRZQUFBQUFBQUN3VFIyUnpaU0t5QWFBRnhEWUFBQUFBQUFBd0haMVJEWlRLaUliQUo1SllBTUFBQUFBQUFEYjFoSFpUS21JYkFCNEJvRU5BQUFBQUFBQWJGOUhaRE9sSXJJQjRDY0VOZ0FBQUFBQUFMQVBIWkhObElySUJvQUZnUTBBQUFBQUFBRHNSMGRrTTZVaXNnSGdCd1EyQUFBQUFBQUFzQzhka2MyVWlzZ0dnQ2NJYkFBQUFBQUFBR0IvT2lLYktSV1JEUUIvSTdBQkFBQUFBQUNBZmVxSWJLWlVSRFlBZkVWZ0F3QUFBQUFBQVB2VkVkbE1xWWhzQUhna3NBRUFBQUFBQUlCOTY0aHNwbFJFTmdCRVlBTUFBQUFBQUFCSDBCSFpUS21JYkFCT1QyQURBQUFBQUFBQXg5QVIyVXlwaUd3QVRrMWdBd0FBQUFBQUFNZlJFZGxNcVloc0FFNUxZQU1BQUFBQUFBREgwaEhaVEttSWJBQk9TV0FEQUFBQUFBQUF4OU1SMlV5cGlHd0FUa2RnQXdBQUFBQUFBTWZVRWRsTXFZaHNBRTVGWUFNQUFBQUFBQURIMVJIWlRLbUliQUJPUTJBREFBQUFBQUFBeDlZUjJVeXBpR3dBVGtGZ0F3QUFBQUFBQU1mWEVkbE1xWWhzQUE1UFlBTUFBQUFBQUFEbjBCSFpUS21JYkFBT1RXQURBQUFBQUFBQTU5RVIyVXlwaUd3QURrdGdBd0FBQUFBQUFPZlNFZGxNcVloc0FBNUpZQU1BQUFBQUFBRG4weEhaVEttSWJBQU9SMkFEQUFBQUFBQUE1OVFSMlV5cGlHd0FEa1ZnQXdBQUFBQUFBT2ZWRWRsTXFZaHNBQTVEWUFNQUFBQUFBQURuMWhIWlRLbUliQUFPUVdBREFBQUFBQUFBZEVRMlV5b2lHNERkRTlnQUFBQUFBQUFBRngyUnpaU0t5QVpnMXdRMkFBQUFBQUFBd0JjZGtjMlVpc2dHWUxjRU5nQUFBQUFBQU1EWE9pS2JLUldSRGNBdUNXd0FBQUFBQUFDQXYrdUliS1pVUkRZQXV5T3dBUUFBQUFBQUFKN1NFZGxNcVloc0FIWkZZQU1BQUFBQUFBRDhTRWRrTTZVaXNnSFlEWUVOQUFBQUFBQUFzTklSMlV5cGlHd0Fka0ZnQXdBQUFBQUFBUHhNUjJRenBTS3lBZGc4Z1EwQUFBQUFBQUR3SEIyUnpaU0t5QVpnMHdRMkFBQUFBQUFBd0hOMVJEWlRLaUliZ00wUzJBQUFBQUFBQUFBdjBSSFpUS21JYkFBMlNXQURBQUFBQUFBQXZGUkhaRE9sSXJJQjJCeUJEUUFBQUFBQUFQQWFIWkhObElySUJtQlRCRFlBQUFBQUFBREFhM1ZFTmxNcUlodUF6UkRZQUFBQUFBQUFBRy9SRWRsTXFZaHNBRFpCWUFNQUFBQUFBQUM4VlVka002VWlzZ0c0TzRFTkFBQUFBQUFBY0EwZGtjMlVpc2dHNEs0RU5nQUFBQUFBQU1DMWRFUTJVeW9pRzRDN0VkZ0FBQUFBQUFBQTE5UVIyVXlwaUd3QTdrSmdBd0FBQUFBQUFGeGJSMlF6cFNLeUFiZzVnUTBBQUFBQUFBQXdvU095bVZJUjJRRGNsTUFHQUFBQUFBQUFtTklSMlV5cGlHd0Fia1pnQXdBQUFBQUFBRXpxaUd5bVZFUTJBRGNoc0FFQUFBQUFBQUNtZFVRMlV5b2lHNEJ4QWhzQUFBQUFBQURnRmpvaW15a1ZrUTNBS0lFTkFBQUFBQUFBY0NzZGtjMlVpc2dHWUl6QUJnQUFBQUFBQUxpbGpzaG1Ta1ZrQXpCQ1lBTUFBQUFBQUFEY1drZGtNNlVpc2dHNE9vRU5BQUFBQUFBQWNBOGRrYzJVaXNnRzRLb0VOZ0FBQUFBQUFNQzlkRVEyVXlvaUc0Q3JFZGdBQUFBQUFBQUE5OVFSMlV5cGlHd0Fya0pnQXdBQUFBQUFBTnhiUjJRenBTS3lBWGd6Z1EwQUFBQUFBQUN3QlIyUnpaU0t5QWJnVFFRMkFBQUFBQUFBd0ZaMFJEWlRLaUliZ0ZjVDJBQUFBQUFBQUFCYjBoSFpUS21JYkFCZVJXQURBQUFBQUFBQWJFMUhaRE9sSXJJQmVER0JEUUFBQUFBQUFMQkZIWkhObElySUJ1QkZCRFlBQUFBQUFBREFWblZFTmxNcUlodUFaeFBZQUFBQUFBQUFBRnZXRWRsTXFZaHNBSjVGWUFNQUFBQUFBQUJzWFVka002VWlzZ0g0S1lFTkFBQUFBQUFBc0FjZGtjMlVpc2dHWUVsZ0F3QUFBQUFBQU94RlIyUXpwU0t5QWZnaGdRMEFBQUFBQUFDd0p4MlJ6WlNLeUFiZ1NRSWJBQUFBQUFBQVlHODZJcHNwRlpFTndIY0VOZ0FBQUFBQUFNQWVkVVEyVXlvaUc0QnZDR3dBQUFBQUFBQ0F2ZXFJYktaVVJEWUFmeExZQUFBQUFBQUFBSHZXRWRsTXFZaHNBRDRSMkFBQUFBQUFBQUI3MXhIWlRLbUliQUFFTmdBQUFBQUFBTUFoZEVRMlV5b2lHK0RrQkRZQUFBQUFBQURBVVhSRU5sTXFJaHZneEFRMkFBQUFBQUFBd0pGMFJEWlRLaUliNEtRRU5nQUFBQUFBQU1EUmRFUTJVeW9pRytDRUJEWUFBQUFBQUFEQUVYVkVObE1xSWh2Z1pBUTJBQUFBQUFBQXdGRjFSRFpUS2lJYjRFUUVOZ0FBQUFBQUFNQ1JkVVEyVXlvaUcrQWtCRFlBQUFBQUFBREEwWFZFTmxNcUlodmdCQVEyQUFBQUFBQUF3QmwwUkRaVEtpSWI0T0FFTmdBQUFBQUFBTUJaZEVRMlV5b2lHK0RBQkRZQUFBQUFBQURBbVhSRU5sTXFJaHZnb0FRMkFBQUFBQUFBd05sMFJEWlRLaUliNElBRU5nQUFBQUFBQU1BWmRVUTJVeW9pRytCZ0JEWUFBQUFBQUFEQVdYVkVObE1xSWh2Z1FBUTJBQUFBQUFBQXdKbDFSRFpUS2lJYjRDQUVOZ0FBQUFBQUFNRFpkVVEyVXlvaUcrQUFCRFlBQUFBQUFBQUFJcHRKRlpFTnNITUNHd0FBQUFBQUFJRFBPaUtiS1JXUkRiQmpBaHNBQUFBQUFBQ0F2M1JFTmxNcUlodGdwd1EyQUFBQUFBQUFBTi9xaUd5bVZFUTJ3QTRKYkFBQUFBQUFBQUMrMXhIWlRLbUliSUNkRWRnQUFBQUFBQUFBUEswanNwbFNFZGtBT3lLd0FRQUFBQUFBQVBpeGpzaG1Ta1ZrQSt5RXdBWUFBQUFBQUFCZ3JTT3ltVklSMlFBN0lMQUJBQUFBQUFBQStMbU95R1pLUldRRGJKekFCdmphUHgrWFF3QUFBQUFBQUw3WEVkbE1xWWhzZ0EwVDJBQi9kMWtLLzIwTUFBQUFBQUFBVCtxSWJLWlVSRGJBUmdsc2dLZjhaakVFQUFBQUFBRDRvWTUzS1ZNcUlodGdnd1Eyd0dveC9QWGorV0FVQUFBQUFBQUEzK21JYktaVVJEYkF4Z2hzZ0pYZlA1NTNFZGtBQUFBQUFBQThwU095bVZJUjJRQWJJckFCZnViaDQvbnZ4MThBQUFBQUFBQysxUkhaVEttSWJJQ05FTmdBejNINWdzM2xTelovR0FVQUFBQUFBTUIzT2lLYktSV1JEYkFCQWh2Z3ViNUVObTBVQUFBQUFBQUEzK21JYktaVVJEYkFuUWxzZ0plNkxJYi9NZ1lBQUFBQUFJRHZkRVEyVXlvaUcrQ09CRGJBYS96VGNnZ0FBQUFBQVBDa2p2Y29VeW9pRytCT0JEYkFXNWJEeTVWUkg0d0NBQUFBQUFEZ0d4MlJ6WlNLeUFhNEE0RU44QlovUkdRREFBQUFBQUR3bEk3SVprcEZaQVBjbU1BR2VLdUhqK2UvSDM4QkFBQUFBQUQ0UzBka002VWlzZ0Z1U0dBRFhNUGxDemFYTDluOFlSUUFBQUFBQUFEZjZJaHNwbFJFTnNDTkNHeUFhL2tTMmJSUkFBQUFBQUFBZktNanNwbFNFZGtBTnlDd0FhN3RzaHoreXhnQUFBQUFBQUMrMFJIWlRLbUliSUJoQWh0Z3dqOHRpQUFBQUFBQUFOL3BlSWN5cFNLeUFRWUpiSURKQmZGeVpkUUhvd0FBQUFBQUFQaFRSMlF6cFNLeUFZWUliSUJKZitSelpQUGVLQUFBQUFBQUFQN1VFZGxNcVloc2dBRUNHMkRhdzhmenkrTXZBQUFBQUFBQW4zVkVObE1xSWh2Z3lnUTJ3QzFjcm9tNmZNbm1kNk1BQUFBQUFBRDRVMGRrTTZVaXNnR3VTR0FEM01vbHN2bjFjVkVFQUFBQUFBRGdzNDdJWmtwRlpBTmNpY0FHdUxYTGd2aWJNUUFBQUFBQUFQeXBJN0taVWhIWkFGY2dzQUh1NGQrV1JBQUFBQUFBZ0c5MHZEK1pVaEhaQUc4a3NBSHV1U1Qra3M5WFJ3RUFBQUFBQUNDeW1WUVIyUUJ2SUxBQjd1bmg0M24zOGJ3M0NnQUFBQUFBZ0U4Nklwc3BGWkVOOEVvQ0crRGVMcEhOTDQrL0FBQUFBQUFBaUd3bVZVUTJ3Q3NJYklBdHVGd1RkZm1TemU5R0FRQUFBQUFBOEVsSFpET2xJcklCWGtoZ0EyekZKYkw1OVhGWkJBQUFBQUFBUUdRenFTS3lBVjVBWUFOc3pXVkovTTBZQUFBQUFBQUFQdW1JYktaVVJEYkFNd2xzZ0MzNjkrT2krTUVvQUFBQUFBQUFSRGFES2lJYjRCa0VOc0NXRjhWM0Vka0FBQUFBQUFCY2RFUTJVeW9pRytBbkJEYkFsajNrYzJUellCUUFBQUFBQUFBaW0wRVZrUTJ3SUxBQnRrNWtBd0FBQUFBQThKZU95R1pLUldRRC9JREFCdGlEeXpWUjd4NFhSZ0FBQUFBQWdMUHJpR3ltVkVRMndCTUVOc0JlZkhoY0ZOc29BQUFBQUFBQVJEYURLaUliNEc4RU5zRGUvTU95Q0FBQUFBQUE4RW5IZTVNcEZaRU44QldCRGJEblpmR0RVUUFBQUFBQUFDZlhFZGxNcVkvbmY0MEJ1QkRZQUh0ZUZ0OUZaQU1BQUFBQUFOQVIyVXo1SHlNQUxnUTJ3SjQ5NUhOazgyQVVBQUFBQUFEQXlYVkVOZ0JqQkRiQTNvbHNBQUFBQUFBQVB1dUliQUJHQ0d5QUk3aGNFL1h1Y1drRUFBQUFBQUE0czQ3SUJ1RHFCRGJBVVh4NFhCYmJLQUFBQUFBQWdKUHJpR3dBcmtwZ0F4ek5QeXlNQUFBQUFBQUFJaHVBYXhMWUFFZGRHSC9ONTYvYUFBQUFBQUFBbkZWSFpBTndGUUliNEtoKy8zamVSV1FEQUFBQUFBQ2NXMGRrOHhiL01RTGdRbUFESE5uRHgvUEw0eThBQUFBQUFNQlpkVVEyQUc4aXNBR083bjArZjhsR1pBTUFBQUFBQUp4WlIyUUQ4R29DRytBTUx0ZEUvZks0T0FJQUFBQUFBSnhWUjJRRDhDb0NHK0JNTGd2anY0MEJBQUFBQUFBNHNZN0lCdURGQkRiQTJmeG1hUVFBQUFBQUFFNnU0MzBKd0lzSWJJQ3pMbzIvNXZQVlVRQUFBQUFBQUdmVUVka0FQSnZBQmppcjN6K2VkeEhaQUFBQUFBQUE1OVVSMlFBOGk4QUdPTE9IaitjWFl3QUFBQUFBQUU2c0k3SlplVEFDNEVKZ0E1emRleU1BQUFBQUFBQk9yaU95K1JHM0lRQ2ZDR3dBQUFBQUFBQUE2SWhzQUg1SVlBTUFBQUFBQUFEQVJVZGtBL0FrZ1EwQUFBQUFBQUFBWDNSRU5nRGZFZGdBQUFBQUFBQUE4TFdPeUFiZ0d3SWJBQUFBQUFBQUFQNnVJN0lCK0pQQUJnQUFBQUFBQUlDbmRFUTJBSjhJYkFBQUFBQUFBQUQ0a2M2NUk1djMvZ0xBaGNBR0FBQUFBQUFBZ0pYT2VTT2I5eDQvY0NHd0FRQUFBQUFBQU9Cbk9xNkxBazVNWUFNQUFBQUFBQURBYzNSRU5zQkpDV3dBQUFBQUFBQUFlSzZPeUFZNElZRU5BQUFBQUFBQUFDL1JFZGtBSnlPd0FRQUFBQUFBQU9DbE9pSWI0RVFFTmdBQUFBQUFBQUM4Umtka0E1eUV3QVlBQUFBQUFBQ0ExK29jTjdMNTRQRUNYd2hzQUFBQUFBQUFBSGlMempFam13ZVBGdmhDWUFNQUFBQUFBQURBVzNWY0Z3VWNtTUFHQUFBQUFBQUFnR3ZvaUd5QWd4TFlBQUFBQUFBQUFIQXRIWkVOY0VBQ0d3QUFBQUFBQUFDdXFTT3lBUTVHWUFNQUFBQUFBQURBdFhWRU5zQ0JDR3dBQUFBQUFBQUFtTkFSMlFBSEliQUJBQUFBQUFBQVlFcEhaQU1jZ01BR0FBQUFBQUFBZ0VtZGZVWTIvL0hvZ0M4RU5nQUFBQUFBQUFCTTYvaVNEYkJqQWhzQUFBQUFBQUFBYnFFanNnRjJTbUFEQUFBQUFBQUF3SzEwUkRiQURnbHNBQUFBQUFBQUFMaWxqc2dHMkJtQkRRQUFBQUFBQUFDMzFoSFpBRHNpc0FFQUFBQUFBQURnSGpvaUcyQW5CRFlBQUFBQUFBQUEzRXRIWkFQc2dNQUdBQUFBQUFBQWdIdnFiRE95ZWZCb2dDOEVOZ0FBQUFBQUFBRGNXMmQ3a2MwSGp3WDRRbUFEQUFBQUFBQUF3QlowWEJjRmJKVEFCZ0FBQUFBQUFJQ3Q2SWhzZ0EwUzJBQUFBQUFBQUFDd0pSMlJEYkF4QWhzQUFBQUFBQUFBdHFZanNnRTJSR0FEQUFBQUFBQUF3QloxUkRiQVJnaHNBQUFBQUFBQUFOaXFqc2dHMkFDQkRRQUFBQUFBQUFCYjFybFBaUFBCNklFdkJEWUFBQUFBQUFBQWJGM245cEhOZzdFRFh3aHNBQUFBQUFBQUFOaURqdXVpZ0RzUjJBQUFBQUFBQUFDd0Z4MlJEWEFIQWhzQUFBQUFBQUFBOXFRanNnRnVUR0FEQUFBQUFBQUF3TjUwUkRiQURRbHNBQUFBQUFBQUFOaWpqc2dHdUJHQkRRQUFBQUFBQUFCNzFSSFpBRGNnc0FFQUFBQUFBQUJnenpvaUcyQ1l3QVlBQUFBQUFBQ0F2ZXRjTjdMNXcwaUJyd2xzQUFBQUFBQUFBRGlDamkvWkFFTUVOZ0FBQUFBQUFBQWNSVWRrQXd3UTJBQUFBQUFBQUFCd0pCMlJEWEJsQWhzQUFBQUFBQUFBanFZanNnR3VTR0FEQUFBQUFBQUF3QkYxUkRiQWxRaHNBQUFBQUFBQUFEaXFqc2dHdUFLQkRRQUFBQUFBQUFCSDFoSFpBRzhrc0FFQUFBQUFBQURnNkRvdmkyd2VqQXo0bXNBR0FBQUFBQUFBZ0RQb1BEK3krVC9qQXI0bXNBRUFBQUFBQUFEZ0xEcXVpd0plUVdBREFBQUFBQUFBd0psMFJEYkFDd2xzQUFBQUFBQUFBRGlianNnR2VBR0JEUUFBQUFBQUFBQm4xQkhaQU04a3NBRUFBQUFBQUFEZ3JEb2lHK0FaQkRZQUFBQUFBQUFBbkZsSFpBUDhoTUFHQUFBQUFBQUFnTFByZkJ2WnZEY1M0R3NDR3dBQUFBQUFBQUQ0TnJKNWJ4ekExLzdMQ0FBQUFBQUFBQURna3pZQzRDa0NHd0FBQUFBQUFBRDRTeHNCOEhldWlBSUFBQUFBQUFBQWdBV0JEUUFBQUFBQUFBQUFMQWhzQUFBQUFBQUFBQUJnUVdBREFBQUFBQUFBQUFBTEFoc0FBQUFBQUFBQUFGZ1EyQUFBQUFBQUFBQUF3SUxBQmdBQUFBQUFBQUFBRmdRMkFBQUFBQUFBQUFDd0lMQUJBQUFBQUFBQUFJQUZnUTBBQUFBQUFBQUFBQ3dJYkFBQUFBQUFBQUFBWUVGZ0F3QUFBQUFBQUFBQUN3SWJBQUFBQUFBQUFBQllFTmdBQUFBQUFBQUFBTUNDd0FZQUFBQUFBQUFBQUJZRU5nQUFBQUFBQUFBQXNDQ3dBUUFBQUFBQUFBQ0FCWUVOQUFBQUFBQUFBQUFzQ0d3QUFBQUFBQUFBQUdCQllBTUFBQUFBQUFBQUFBc0NHd0FBQUFBQUFBQUFXQkRZQUFBQUFBQUFBQURBZ3NBR0FBQUFBQUFBQUFBV0JEWUFBQUFBQUFBQUFMQWdzQUVBQUFBQUFBQUFnQVdCRFFBQUFBQUFBQUFBTEFoc0FBQUFBQUFBQUFCZ1FXQURBQUFBQUFBQUFBQUxBaHNBQUFBQUFBQUFBRmdRMkFBQUFBQUFBQUFBd0lMQUJnQUFBQUFBQUFBQUZnUTJBQUFBQUFBQUFBQ3dJTEFCQUFBQUFBQUFBSUFGZ1EwQUFBQUFBQUFBQUN3SWJBQUFBQUFBQUFBQVlFRmdBd0FBQUFBQUFBQUFDd0liQUFBQUFBQUFBQUJZRU5nQUFBQUFBQUFBQU1DQ3dBWUFBQUFBQUFBQUFCWUVOZ0FBQUFBQUFBQUFzQ0N3QVFBQUFBQUFBQUNBQllFTkFBQUFBQUFBQUFBc0NHd0FBQUFBQUFBQUFHQkJZQU1BQUFBQUFBQUFBQXNDR3dBQUFBQUFBQUFBV0JEWUFBQUFBQUFBQUFEQWdzQUdBQUFBQUFBQUFBQVdCRFlBQUFBQUFBQUFBTEFnc0FFQUFBQUFBQUFBZ0FXQkRRQUFBQUFBQUFBQUxBaHNBQUFBQUFBQUFBQmdRV0FEQUFBQUFBQUFBQUFMQWhzQUFBQUFBQUFBQUZnUTJBQUFBQUFBQUFBQXdJTEFCZ0FBQUFBQUFBQUFGZ1EyQUFBQUFBQUFBQUN3SUxBQkFBQUFBQUFBQUlBRmdRMEFBQUFBQUFBQUFDd0liQUFBQUFBQUFBQUFZRUZnQXdBQUFBQUFBQUFBQ3dJYkFBQUFBQUFBQUFCWUVOZ0FBQUFBQUFBQUFNQ0N3QVlBQUFBQUFBQUFBQllFTmdBQUFBQUFBQUFBc0NDd0FRQUFBQUFBQUFDQUJZRU5BQUFBQUFBQUFBQXNDR3dBQUFBQUFBQUFBR0JCWUFNQUFBQUFBQUFBQUFzQ0d3QUFBQUFBQUFBQVdCRFlBQUFBQUFBQUFBREFnc0FHQUFBQUFBQUFBQUFXQkRZQUFBQUFBQUFBQUxBZ3NBRUFBQUFBQUFBQWdBV0JEUUFBQUFBQUFBQUFMQWhzQUFBQUFBQUFBQUJnUVdBREFBQUFBQUFBQUFBTEFoc0FBQUFBQUFBQUFGZ1EyQUFBQUFBQUFBQUF3SUxBQmdBQUFBQUFBQUFBRmdRMkFBQUFBQUFBQUFDd0lMQUJBQUFBQUFBQUFJQUZnUTBBQUFBQUFBQUFBQ3dJYkFBQUFBQUFBQUFBWUVGZ0F3QUFBQUFBQUFBQUN3SWJBQUFBQUFBQUFBQllFTmdBQUFBQUFBQUFBTUNDd0FZQUFBQUFBQUFBQUJZRU5nQUFBQUFBQUFBQXNDQ3dBUUFBQUFBQUFBQ0FCWUVOQUFBQUFBQUFBQUFzQ0d3QUFBQUFBQUFBQUdCQllBTUFBQUFBQUFBQUFBc0NHd0FBQUFBQUFBQUFXQkRZQUFBQUFBQUFBQURBZ3NBR0FBQUFBQUFBQUFBV0JEWUFBQUFBQUFBQUFMQWdzQUVBQUFBQUFBQUFnQVdCRFFBQUFBQUFBQUFBTEFoc0FBQUFBQUFBQUFCZ1FXQURBQUFBQUFBQUFBQUxBaHNBQUFBQUFBQUFBRmdRMkFBQUFBQUFBQUFBd0lMQUJnQUFBQUFBQUFBQUZnUTJBQUFBQUFBQUFBQ3dJTEFCQUFBQUFBQUFBSUFGZ1EwQUFBQUFBQUFBQUN3SWJBQUFBQUFBQUFBQVlFRmdBd0FBQUFBQUFBQUFDd0liQUFBQUFBQUFBQUJZRU5nQUFBQUFBQUFBQU1DQ3dBWUFBQUFBQUFBQUFCWUVOZ0FBQUFBQUFBQUFzQ0N3QVFBQUFBQUFBQUNBQllFTkFBQUFBQUFBQUFBc0NHd0FBQUFBQUFBQUFHQkJZQU1BQUFBQUFBQUFBQXNDR3dBQUFBQUFBQUFBV0JEWUFBQUFBQUFBQUFEQWdzQUdBQUFBQUFBQUFBQVdCRFlBQUFBQUFBQUFBTEFnc0FFQUFBQUFBQUFBZ0FXQkRRQUFBQUFBQUFBQUxBaHNBQUFBQUFBQUFBQmdRV0FEQUFBQUFBQUFBQUFMQWhzQUFBQUFBQUFBQUZnUTJBQUFBQUFBQUFBQXdJTEFCZ0FBQUFBQUFBQUFGZ1EyQUFBQUFBQUFBQUN3SUxBQkFBQUFBQUFBQUlBRmdRMEFBQUFBQUFBQUFDd0liQUFBQUFBQUFBQUFZRUZnQXdBQUFBQUFBQUFBQ3dJYkFBQUFBQUFBQUFCWUVOZ0FBQUFBQUFBQUFNQ0N3QVlBQUFBQUFBQUFBQllFTmdBQUFBQUFBQUFBc0NDd0FRQUFBQUFBQUFDQUJZRU5BQUFBQUFBQUFBQXNDR3dBQUFBQUFBQUFBR0JCWUFNQUFBQUFBQUFBQUFzQ0d3QUFBQUFBQUFBQVdCRFlBQUFBQUFBQUFBREFnc0FHQUFBQUFBQUFBQUFXQkRZQUFBQUFBQUFBQUxBZ3NBRUFBQUFBQUFBQWdBV0JEUUFBQUFBQUFBQUFMQWhzQUFBQUFBQUFBQUJnUVdBREFBQUFBQUFBQUFBTEFoc0FBQUFBQUFBQUFGZ1EyQUFBQUFBQUFBQUF3SUxBQmdBQUFBQUFBQUFBRmdRMkFBQUFBQUFBQUFDd0lMQUJBQUFBQUFBQUFJQUZnUTBBQUFBQUFBQUFBQ3dJYkFBQUFBQUFBQUFBWUVGZ0F3QUFBQUFBQUFBQUN3SWJBQUFBQUFBQUFBQllFTmdBQUFBQUFBQUFBTUNDd0FZQUFBQUFBQUFBQUJZRU5nQUFBQUQvejk0ZDFjYU5obUVZOVVXSkZFSWdCRUlnRElRd2FCa0VncGRCSUhRWkRJUkFDSVQ5TFkrMGxYYjF0RTFta3JIbkhPbVQ3OS9yUi80QkFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBZ1BLWENRQUFBQUFBdUhVQ0d3QUFvTXpqRHVOZVRRRUFBQUFBd0swUzJBQUFBTDh5ajd1ZlJEWUFBQUFBQU53b2dRMEFBUEE3anVQdVRsOEFBQUFBQUxncEFoc0FBT0IzdlV6cm4yeCttQUlBQUFBQWdGc2lzQUVBQVA3RThrelVFdG5NcGdBQUFBQUE0RllJYkFBQWdMYzRqSHMwQXdBQUFBQUF0MEJnQXdBQXZOWFR0SVkyQUFBQUFBQ3dhd0liQUFEZ1BlWnhkOVA2ZEJRQUFBQUFBT3lTd0FZQUFIaXY0N2o3MHhjQUFBQUFBSFpIWUFNQUFKeUR5QVlBQUFBQWdOMFMyQUFBQU9leVBCTzFQQmMxbXdJQUFBQUFnRDBSMkFBQUFPZDJHUGZkREFBQUFBQUE3SVhBQmdBQXVJUnYweHJhQUFBQUFBREE1Z2xzQUFDQVM1bW45Y21vVjFNQUFBQUFBTEJsQWhzQUFPQ1NqdVB1VDE4QUFBQUFBTmdrZ1EwQUFIQnBJaHNBQUFBQUFEWk5ZQU1BQUh5RTVabW81Ym1vMlJRQUFBQUFBR3lOd0FZQUFQaEloM0hmelFBQUFBQUF3SllJYkFBQWdJLzJiVnBER3dBQUFBQUEyQVNCRFFBQThCbm1jZmZUK25RVUFBQUFBQUJjTllFTkFBRHdXWDVNYTJUellnb0FBQUFBQUs2WndBWUFBUGhNeDNGM3B5OEFBQUFBQUZ3bGdRMEFBUERabG1laWxqL1p6S1lBQUFBQUFPQWFDV3dBQUlCcnNFUTJoM0ZQcGdBQUFBQUE0Tm9JYkFBQWdHdnlPSzJoRFFBQUFBQUFYQTJCRFFBQWNHM21hWDB5NnRVVUFBQUFBQUJjQTRFTkFBQndqWDVNYTJUellnb0FBQUFBQUQ2YndBWUFBTGhXeDNGM3B5OEFBQUFBQUh3YWdRMEFBSERObG1laWxqL1p6S1lBQUFBQUFPQ3pDR3dBQUlCcnQwUTJoMGxrQXdBQUFBREFKeEhZQUFBQVczRTRIUUFBQUFBQWZDaUJEUUFBc0NYenVJZHAvYXNOQUFBQUFBQjhDSUVOQUFDd05jL2o3aWVSRFFBQUFBQUFIMFJnQXdBQWJORngzTmZURndBQUFBQUFMa3BnQXdBQWJOWHlCNXZsVHpiUHBnQUFBQUFBNEpJRU5nQUF3Sll0a2MzRHVOa1VBQUFBQUFCY2lzQUdBQURZZzhQcEFBQUFBQURnN0FRMkFBREFYc3pUK2plYlYxTUFBQUFBQUhCT0Foc0FBR0JQbnNmZFR5SWJBQUFBQUFET1NHQURBQURzelhIYzE5TVhBQUFBQUFEZVRXQURBQURzMGZJSG0rVlBOcyttQUFBQUFBRGd2UVEyQUFEQVhpMlJ6Y080MlJRQUFBQUFBTHlId0FZQUFOaTd3N2hITXdBQUFBQUE4RllDR3dBQTRCWThUV3RvODJvS0FBQUFBQUQrbE1BR0FBQzRGZk80KzBsa0F3QUFBQURBSHhMWUFBQUF0K1E0N3U3MEJRQUFBQUNBM3lLd0FRQUFiczNMdFA3SjVvY3BBQUFBQUFENEhRSWJBQURnRmkzUFJDMlJ6V3dLQUFBQUFBQitSV0FEQUFEY3NzTzRSek1BQUFBQUFGQUVOZ0FBd0sxN210YlE1dFVVQUFBQUFBRDhINEVOQUFEQStsVFU4bVNVeUFZQUFBQUFnUDhRMkFBQUFLeU80KzdHL1cwS0FBQUFBQUIrSnJBQkFBRDQxOHU0YjJZQUFBQUFBT0JuQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBQUFBQUFBZ0NHd0FBQUFBQUFBQUFDQUliQUFBQUFBQUFBQUFJQWhzQUFBQUFBQUFBQUFnQ0d3QUFBQUFBQUFBQUNBSWJBQUFBQUFBQUFBQUlBaHNBQUFBQUFBQUFBQWdDR3dBQUFBQUFBQUFBQ0FJYkFBQUFBQUFBQUFBSUFoc0FBQUFBYnNIUkJBQUFBTUJiQ1d3QUFBQUEyTHQ1M0tNWkFBQUFnTGNTMkFBQUFBQ3daL080Z3hrQUFBQ0E5eERZQUFBQUFMQlgzeWR4RFFBQUFIQUdYMHdBQUFBQXdBNHRZYzFzQmdBQUFPQWMvTUVHQUFBQWdMMFIxd0FBQUFCbkpiQUJBQUFBWUUvRU5RQUFBTURaQ1d3QUFBQUEySVBYY1ErVHVBWUFBQUM0Z0M4bUFBQUFBR0RqbHJqbWZ0elJGQUFBQU1BbCtJTU5BQUFBQUZzbXJnRUFBQUF1VG1BREFBQUF3RmFKYXdBQUFJQVBJYkFCQUFBQVlJdVdxRVpjQXdEOHc4NjkzVFFRUTFFVU5aSWJTd2twSWFXa0EwcHdDWlJBQ1NsbE9naTJSQkFJNGp4SVp1enhXdEp0NEh4dlhRQ0FXVVFUQUFBQUFOQ1pVMXd6bVFJQUFBQ1lndzgyQUFBQUFQUkVYQU1BQUFETVRtQURBQUFBUUMvRU5RQUFBTUFpQkRZQUFBQUE5T0F0aUdzQUFBQ0FoUWhzQUFBQUFHaGR5cmNONGhvQUFBQmdJUUliQUFBQUFGcVc4dTNNQUFBQUFDeEpZQU1BQUFCQXExSVExd0FBQUFBTkVOZ0FBQUFBMEtKOUVOY0FBQUFBallnbUFBQUFBS0F4SmF4SlpnQUFBQUJhNFlNTkFBQUFBQzBSMXdBQUFBRE5FZGdBQUFBQTBBcHhEUUFBQU5Ba2dRMEFBQUFBUzV2eWJZTzRCZ0FBQUdoVU5BRUFBQUFBQ3lweHpTYmZ3UlFBQUFCQXEzeXdBUUFBQUdBcDRob0FBQUNnQ3dJYkFBQUFBSllncmdFQUFBQzZJYkFCQUFBQVlHNGxxaEhYQUFBQUFOMklKZ0FBQUFCZ1JxZTRaaklGQUFBQTBBc2ZiQUFBQUFDWWk3Z0dBQUFBNkpMQUJnQUFBSUE1aUdzQUFBQ0FiZ2xzQUFBQUFIaTJ0eUN1QVFBQUFEb21zQUVBQUFEZ21WSytiUkRYQUFBQUFCMFQyQUFBQUFEd0xDbmZ6Z3dBQUFCQTd3UTJBQUFBQUR4REN1SWFBQUFBWUNVRU5nQUFBQUE4Mmo2SWF3QUFBSUFWaVNZQUFBQUE0SUZLV0pQTUFBQUFBS3lKRHpZQUFBQUFQSXE0QmdBQUFGZ2xnUTBBQUFBQWp5Q3VBUUFBQUZaTFlBTUFBQURBZjB6NXRrRmNBd0FBQUt4WU5BRUFBQUFBZHlweHpTYmZ3UlFBQUFEQW12bGdBd0FBQU1BOXhEVUFBQURBTUFRMkFBQUFBTnhLWEFNQUFBQU1SV0FEQUFBQXdDMUtWQ091QVFBQUFJWVNUUUFBQUFEQWxVNXh6V1FLQUFBQVlDUSsyQUFBQUFCd0RYRU5BQUFBTUN5QkRRQUFBQUNYaUdzQUFBQ0FvUWxzQUFBQUFLaDVEK0lhQUFBQVlIQUNHd0FBQUFET1NVRmNBd0FBQUNDd0FRQUFBT0JQS2QvT0RBQUFBQUFDR3dBQUFBQitTMEZjQXdBQUFQQkZZQU1BQUFEQWQ2OUJYQU1BQUFEd1F6UUJBQUFBQUo5S1dKUE1BQUFBQVBDVER6WUFBQUFBRk9JYUFBQUFnRE1FTmdBQUFBQ0lhd0FBQUFBcUJEWUFBQUFBNDVxQ3VBWUFBQURnb21nQ0FBQUFnQ0dWdUdhVDcyQUtBQUFBZ0RvZmJBQUFBQURHSTY0QkFBQUF1TUhMOFhpMEFnQUFBQUFBQUFBQW5PR0REUUFBQUFBQUFBQUFWQWhzQUFBQUFBQUFBQUNnUW1BREFBQUFBQUFBQUFBVkFoc0FBQUFBQUFBQUFLZ1EyQUFBQUFBQUFBQUFRSVhBQmdBQUFBQUFBQUFBS2dRMkFBQUFBQUFBQUFCUUliQUJBQUFBQUFBQUFJQ0tEd0hhdFFNQkFBQUFBRUgrMWh0TVVCd0pOZ0FBQUFBQUFBQUFNQVFiQUFBQUFBQUFBQUFZZ2cwQUFBQUFBQUFBQUF6QkJnQUFBQUFBQUFBQWhtQURBQUFBQUFBQUFBQkRzQUVBQUFBQUFBQUFnQ0hZQUFBQUFBQUFBQURBRUd3QUFBQUFBQUFBQUdBSU5nQUFBQUFBQUFBQU1BUWJBQUFBQUFBQUFBQVlnZzBBQUFBQUFBQUFBQXpCQmdBQUFBQUFBQUFBaG1BREFBQUFBQUFBQUFCRHNBRUFBQUFBQUFBQWdDSFlBQUFBQUFBQUFBREFFR3dBQUFBQUFBQUFBR0FJTmdBQUFBQUFBQUFBTUFRYkFBQUFBQUFBQUFBWWdnMEFBQUFBQUFBQUFBekJCZ0FBQUFBQUFBQUFobUFEQUFBQUFBQUFBQUJEc0FFQUFBQUFBQUFBZ0NIWUFBQUFBQUFBQUFEQUVHd0FBQUFBQUFBQUFHQUlOZ0FBQUFBQUFBQUFNQVFiQUFBQUFBQUFBQUFZZ2cwQUFBQUFBQUFBQUF6QkJnQUFBQUFBQUFBQWhtQURBQUFBQUFBQUFBQkRzQUVBQUFBQUFBQUFnQ0hZQUFBQUFBQUFBQURBRUd3QUFBQUFBQUFBQUdBSU5nQUFBQUFBQUFBQU1BUWJBQUFBQUFBQUFBQVlnZzBBQUFBQUFBQUFBQXpCQmdBQUFBQUFBQUFBaG1BREFBQUFBQUFBQUFCRHNBRUFBQUFBQUFBQWdDSFlBQUFBQUFBQUFBREFFR3dBQUFBQUFBQUFBR0FJTmdBQUFBQUFBQUFBTUFRYkFBQUFBQUFBQUFBWWdnMEFBQUFBQUFBQUFBekJCZ0FBQUFBQUFBQUFobUFEQUFBQUFBQUFBQUJEc0FFQUFBQUFBQUFBZ0NIWUFBQUFBQUFBQUFEQUVHd0FBQUFBQUFBQUFHQUlOZ0FBQUFBQUFBQUFNQVFiQUFBQUFBQUFBQUFZZ2cwQUFBQUFBQUFBQUF6QkJnQUFBQUFBQUFBQWhtQURBQUFBQUFBQUFBQkRzQUVBQUFBQUFBQUFnQ0hZQUFBQUFBQUFBQURBRUd3QUFBQUFBQUFBQUdBSU5nQUFBQUFBQUFBQU1BUWJBQUFBQUFBQUFBQVlnZzBBQUFBQUFBQUFBQXpCQmdBQUFBQUFBQUFBaG1BREFBQUFBQUFBQUFCRHNBRUFBQUFBQUFBQWdDSFlBQUFBQUFBQUFBREFFR3dBQUFBQUFBQUFBR0FJTmdBQUFBQUFBQUFBTUFRYkFBQUFBQUFBQUFBWWdnMEFBQUFBQUFBQUFBekJCZ0FBQUFBQUFBQUFobUFEQUFBQUFBQUFBQUJEc0FFQUFBQUFBQUFBZ0NIWUFBQUFBQUFBQUFEQUVHd0FBQUFBQUFBQUFHQUlOZ0FBQUFBQUFBQUFNQVFiQUFBQUFBQUFBQUFZZ2cwQUFBQUFBQUFBQUF6QkJnQUFBQUFBQUFBQWhtQURBQUFBQUFBQUFBQkRzQUVBQUFBQUFBQUFnQ0hZQUFBQUFBQUFBQURBRUd3QUFBQUFBQUFBQUdBSU5nQUFBQUFBQUFBQU1BUWJBQUFBQUFBQUFBQVlnZzBBQUFBQUFBQUFBQXpCQmdBQUFBQUFBQUFBaG1BREFBQUFBQUFBQUFCRHNBRUFBQUFBQUFBQWdDSFlBQUFBQUFBQUFBREFFR3dBQUFBQUFBQUFBR0FJTmdBQUFBQUFBQUFBTUFRYkFBQUFBQUFBQUFBWWdnMEFBQUFBQUFBQUFBekJCZ0FBQUFBQUFBQUFobUFEQUFBQUFBQUFBQUJEc0FFQUFBQUFBQUFBZ0NIWUFBQUFBQUFBQUFEQUVHd0FBQUFBQUFBQUFHQUlOZ0FBQUFBQUFBQUFNQVFiQUFBQUFBQUFBQUFZZ2cwQUFBQUFBQUFBQUF6QkJnQUFBQUFBQUFBQWhtQURBQUFBQUFBQUFBQkRzQUVBQUFBQUFBQUFnQ0hZQUFBQUFBQUFBQURBRUd3QUFBQUFBQUFBQUdBSU5nQUFBQUFBQUFBQU1BUWJBQUFBQUFBQUFBQVlnZzBBQUFBQUFBQUFBQXpCQmdBQUFBQUFBQUFBaG1BREFBQUFBQUFBQUFCRHNBRUFBQUFBQUFBQWdDSFlBQUFBQUFBQUFBREFFR3dBQUFBQUFBQUFBR0FJTmdBQUFBQUFBQUFBTUFRYkFBQUFBQUFBQUFBWWdnMEFBQUFBQUFBQUFBekJCZ0FBQUFBQUFBQUFobUFEQUFBQUFBQUFBQUJEc0FFQUFBQUFBQUFBZ0NIWUFBQUFBQUFBQUFEQUVHd0FBQUFBQUFBQUFHQUlOZ0FBQUFBQUFBQUFNQVFiQUFBQUFBQUFBQUFZZ2cwQUFBQUFBQUFBQUF6QkJnQUFBQUFBQUFBQWhtQURBQUFBQUFBQUFBQkRzQUVBQUFBQUFBQUFnQ0hZQUFBQUFBQUFBQURBRUd3QUFBQUFBQUFBQUdBSU5nQUFBQUFBQUFBQU1BUWJBQUFBQUFBQUFBQVlnZzBBQUFBQUFBQUFBQXpCQmdBQUFBQUFBQUFBaG1BREFBQUFBQUFBQUFCRHNBRUFBQUFBQUFBQWdDSFlBQUFBQUFBQUFBREFFR3dBQUFBQUFBQUFBR0FJTmdBQUFBQUFBQUFBTUFRYkFBQUFBQUFBQUFBWWdnMEFBQUFBQUFBQUFBekJCZ0FBQUFBQUFBQUFobUFEQUFBQUFBQUFBQUJEc0FFQUFBQUFBQUFBZ0NIWUFBQUFBQUFBQUFEQUVHd0FBQUFBQUFBQUFHQUlOZ0FBQUFBQUFBQUFNQVFiQUFBQUFBQUFBQUFZZ2cwQUFBQUFBQUFBQUF6QkJnQUFBQUFBQUFBQWhtQURBQUFBQUFBQUFBQkRzQUVBQUFBQUFBQUFnQ0hZQUFBQUFBQUFBQURBRUd3QUFBQUFBQUFBQUdBSU5nQUFBQUFBQUFBQU1BUWJBQUFBQUFBQUFBQVlnZzBBQUFBQUFBQUFBQXpCQmdBQUFBQUFBQUFBaG1BREFBQUFBQUFBQUFCRHNBRUFBQUFBQUFBQWdDSFlBQUFBQUFBQUFBREFFR3dBQUFBQUFBQUFBR0FJTmdBQUFBQUFBQUFBTUFRYkFBQUFBQUFBQUFBWWdnMEFBQUFBQUFBQUFBekJCZ0FBQUFBQUFBQUFobUFEQUFBQUFBQUFBQUJEc0FFQUFBQUFBQUFBZ0NIWUFBQUFBQUFBQUFEQUVHd0FBQUFBQUFBQUFHQUlOZ0FBQUFBQUFBQUFNQVFiQUFBQUFBQUFBQUFZZ2cwQUFBQUFBQUFBQUF6QkJnQUFBQUFBQUFBQWhtQURBQUFBQUFBQUFBQkRzQUVBQUFBQUFBQUFnQ0hZQUFBQUFBQUFBQURBRUd3QUFBQUFBQUFBQUdBSU5nQUFBQUFBQUFBQU1BUWJBQUFBQUFBQUFBQVlnZzBBQUFBQUFBQUFBQXpCQmdBQUFBQUFBQUFBaG1BREFBQUFBQUFBQUFCRHNBRUFBQUFBQUFBQWdDSFlBQUFBQUFBQUFBREFFR3dBQUFBQUFBQUFBR0FJTmdBQUFBQUFBQUFBTUFRYkFBQUFBQUFBQUFBWWdnMEFBQUFBQUFBQUFBekJCZ0FBQUFBQUFBQUFobUFEQUFBQUFBQUFBQUJEc0FFQUFBQUFBQUFBZ0NIWUFBQUFBQUFBQUFEQUVHd0FBQUFBQUFBQUFHQUlOZ0FBQUFBQUFBQUFNQVFiQUFBQUFBQUFBQUFZZ2cwQUFBQUFBQUFBQUF6QkJnQUFBQUFBQUFBQWhtQURBQUFBQUFBQUFBQkRzQUVBQUFBQUFBQUFnQ0hZQUFBQUFBQUFBQURBRUd3QUFBQUFBQUFBQUdBSU5nQUFBQUFBQUFBQU1BUWJBQUFBQUFBQUFBQVlnZzBBQUFBQUFBQUFBQXpCQmdBQUFBQUFBQUFBaG1BREFBQUFBQUFBQUFCRHNBRUFBQUFBQUFBQWdDSFlBQUFBQUFBQUFBREFFR3dBQUFBQUFBQUFBR0FJTmdBQUFBQUFBQUFBTUFRYkFBQUFBQUFBQUFBWWdnMEFBQUFBQUFBQUFBekJCZ0FBQUFBQUFBQUFobUFEQUFBQUFBQUFBQUJEc0FFQUFBQUFBQUFBZ0NIWUFBQUFBQUFBQUFEQUVHd0FBQUFBQUFBQUFHQUlOZ0FBQUFBQUFBQUFNQVFiQUFBQUFBQUFBQUFZZ2cwQUFBQUFBQUFBQUF6QkJnQUFBQUFBQUFBQWhtQURBQUFBQUFBQUFBQkRzQUVBQUFBQUFBQUFnQ0hZQUFBQUFBQUFBQURBRUd3QUFBQUFBQUFBQUdBSU5nQUFBQUFBQUFBQU1BUWJBQUFBQUFBQUFBQVlnZzBBQUFBQUFBQUFBQXpCQmdBQUFBQUFBQUFBaG1BREFBQUFBQUFBQUFCRHNBRUFBQUFBQUFBQWdDSFlBQUFBQUFBQUFBREFFR3dBQUFBQUFBQUFBR0FJTmdBQUFBQUFBQUFBTUFRYkFBQUFBQUFBQUFBWWdnMEFBQUFBQUFBQUFBekJCZ0FBQUFBQUFBQUFobUFEQUFBQUFBQUFBQUJEc0FFQUFBQUFBQUFBZ0NIWUFBQUFBQUFBQUFEQUVHd0FBQUFBQUFBQUFHQUlOZ0FBQUFBQUFBQUFNQVFiQUFBQUFBQUFBQUFZZ2cwQUFBQUFBQUFBQUF6QkJnQUFBQUFBQUFBQWhtQURBQUFBQUFBQUFBQkRzQUVBQUFBQUFBQUFnQ0hZQUFBQUFBQUFBQURBRUd3QUFBQUFBQUFBQUdBSU5nQUFBQUFBQUFBQU1BUWJBQUFBQUFBQUFBQVlnZzBBQUFBQUFBQUFBQXpCQmdBQUFBQUFBQUFBaG1BREFBQUFBQUFBQUFCRHNBRUFBQUFBQUFBQWdDSFlBQUFBQUFBQUFBREFFR3dBQUFBQUFBQUFBR0FJTmdBQUFBQUFBQUFBTUFRYkFBQUFBQUFBQUFBWWdnMEFBQUFBQUFBQUFBekJCZ0FBQUFBQUFBQUFobUFEQUFBQUFBQUFBQUJEc0FFQUFBQUFBQUFBZ0NIWUFBQUFBQUFBQUFEQUVHd0FBQUFBQUFBQUFHQUlOZ0FBQUFBQUFBQUFNQVFiQUFBQUFBQUFBQUFZZ2cwQUFBQUFBQUFBQUF6QkJnQUFBQUFBQUFBQWhtQURBQUFBQUFBQUFBQkRzQUVBQUFBQUFBQUFnQ0hZQUFBQUFBQUFBQURBRUd3QUFBQUFBQUFBQUdBSU5nQUFBQUFBQUFBQU1BUWJBQUFBQUFBQUFBQVlnZzBBQUFBQUFBQUFBQXpCQmdBQUFBQUFBQUFBaG1BREFBQUFBQUFBQUFCRHNBRUFBQUFBQUFBQWdDSFlBQUFBQUFBQUFBREFFR3dBQUFBQUFBQUFBR0FJTmdBQUFBQUFBQUFBTUFRYkFBQUFBQUFBQUFBWWdnMEFBQUFBQUFBQUFBekJCZ0FBQUFBQUFBQUFobUFEQUFBQUFBQUFBQUJEc0FFQUFBQUFBQUFBZ0NIWUFBQUFBQUFBQUFEQUVHd0FBQUFBQUFBQUFHQUlOZ0FBQUFBQUFBQUFNQVFiQUFBQUFBQUFBQUFZZ2cwQUFBQUFBQUFBQUF6QkJnQUFBQUFBQUFBQWhtQURBQUFBQUFBQUFBQkRzQUVBQUFBQUFBQUFnQ0hZQUFBQUFBQUFBQURBRUd3QUFBQUFBQUFBQUdBSU5nQUFBQUFBQUFBQU1BUWJBQUFBQUFBQUFBQVlnZzBBQUFBQUFBQUFBQXpCQmdBQUFBQUFBQUFBaG1BREFBQUFBQUFBQUFCRHNBRUFBQUFBQUFBQWdDSFlBQUFBQUFBQUFBREFFR3dBQUFBQUFBQUFBR0FJTmdBQUFBQUFBQUFBTUFRYkFBQUFBQUFBQUFBWWdnMEFBQUFBQUFBQUFBekJCZ0FBQUFBQUFBQUFobUFEQUFBQUFBQUFBQUJEc0FFQUFBQUFBQUFBZ0NIWUFBQUFBQUFBQUFEQUVHd0FBQUFBQUFBQUFHQUlOZ0FBQUFBQUFBQUFNQVFiQUFBQUFBQUFBQUFZZ2cwQUFBQUFBQUFBQUF6QkJnQUFBQUFBQUFBQWhtQURBQUFBQUFBQUFBQkRzQUVBQUFBQUFBQUFnQ0hZQUFBQUFBQUFBQURBRUd3QUFBQUFBQUFBQUdBSU5nQUFBQUFBQUFBQU1BUWJBQUFBQUFBQUFBQVlnZzBBQUFBQUFBQUFBQXpCQmdBQUFBQUFBQUFBaG1BREFBQUFBQUFBQUFCRHNBRUFBQUFBQUFBQWdDSFlBQUFBQUFBQUFBREFFR3dBQUFBQUFBQUFBR0FJTmdBQUFBQUFBQUFBTUFRYkFBQUFBQUFBQUFBWWdnMEFBQUFBQUFBQUFBekJCZ0FBQUFBQUFBQUFobUFEQUFBQUFBQUFBQUJEc0FFQUFBQUFBQUFBZ0NIWUFBQUFBQUFBQUFEQUVHd0FBQUFBQUFBQUFHQUlOZ0FBQUFBQUFBQUFNQVFiQUFBQUFBQUFBQUFZZ2cwQUFBQUFBQUFBQUF6QkJnQUFBQUFBQUFBQWhtQURBQUFBQUFBQUFBQkRzQUVBQUFBQUFBQUFnQ0hZQUFBQUFBQUFBQURBRUd3QUFBQUFBQUFBQUdBSU5nQUFBQUFBQUFBQU1BUWJBQUFBQUFBQUFBQVlnZzBBQUFBQUFBQUFBQXpCQmdBQUFBQUFBQUFBaG1BREFBQUFBQUFBQUFCRHNBRUFBQUFBQUFBQWdDSFlBQUFBQUFBQUFBREFFR3dBQUFBQUFBQUFBR0FJTmdBQUFBQUFBQUFBTUFRYkFBQUFBQUFBQUFBWWdnMEFBQUFBQUFBQUFBekJCZ0FBQUFBQUFBQUFobUFEQUFBQUFBQUFBQUJEc0FFQUFBQUFBQUFBZ0NIWUFBQUFBQUFBQUFEQUVHd0FBQUFBQUFBQUFHQUlOZ0FBQUFBQUFBQUFNQVFiQUFBQUFBQUFBQUFZZ2cwQUFBQUFBQUFBQUF6QkJnQUFBQUFBQUFBQWhtQURBQUFBQUFBQUFBQkRzQUVBQUFBQUFBQUFnQ0hZQUFBQUFBQUFBQURBRUd3QUFBQUFBQUFBQUdBSU5nQUFBQUFBQUFBQU1BUWJBQUFBQUFBQUFBQVlnZzBBQUFBQUFBQUFBQXpCQmdBQUFBQUFBQUFBaG1BREFBQUFBQUFBQUFCRHNBRUFBQUFBQUFBQWdDSFlBQUFBQUFBQUFBREFFR3dBQUFBQUFBQUFBR0FJTmdBQUFBQUFBQUFBTUFRYkFBQUFBQUFBQUFBWWdnMEFBQUFBQUFBQUFBekJCZ0FBQUFBQUFBQUFobUFEQUFBQUFBQUFBQUJEc0FFQUFBQUFBQUFBZ0NIWUFBQUFBQUFBQUFEQUVHd0FBQUFBQUFBQUFHQUlOZ0FBQUFBQUFBQUFNQVFiQUFBQUFBQUFBQUFZZ2cwQUFBQUFBQUFBQUF6QkJnQUFBQUFBQUFBQWhtQURBQUFBQUFBQUFBQkRzQUVBQUFBQUFBQUFnQ0hZQUFBQUFBQUFBQURBRUd3QUFBQUFBQUFBQUdBSU5nQUFBQUFBQUFBQU1BUWJBQUFBQUFBQUFBQVlnZzBBQUFBQUFBQUFBQXpCQmdBQUFBQUFBQUFBaG1BREFBQUFBQUFBQUFCRHNBRUFBQUFBQUFBQWdDSFlBQUFBQUFBQUFBREFFR3dBQUFBQUFBQUFBR0FJTmdBQUFBQUFBQUFBTUFRYkFBQUFBQUFBQUFBWWdnMEFBQUFBQUFBQUFBekJCZ0FBQUFBQUFBQUFobUFEQUFBQUFBQUFBQUJEc0FFQUFBQUFBQUFBZ0NIWUFBQUFBQUFBQUFEQUVHd0FBQUFBQUFBQUFHQUlOZ0FBQUFBQUFBQUFNQVFiQUFBQUFBQUFBQUFZZ2cwQUFBQUFBQUFBQUF6QkJnQUFBQUFBQUFBQVJ0WDhuRStBVWNrNEFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJGSURPXzJfMCJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiMDA3NjYzMWJkNGEwNDI3ZjU3NzMwZWM3MWM5ZTAyNzkiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjp0cnVlLCJ1cCI6dHJ1ZSwidXYiOnRydWUsImNyZWRNZ210Ijp0cnVlfSwibWF4TXNnU2l6ZSI6MTIwMCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6MjAsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4fX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjItMTAtMjAiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MiwidXJsIjoiaHR0cHM6Ly93d3cuaHlwci5jb20vIiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJIWVBSIEZJRE8yIE1vYmlsZSBBdXRoZW50aWNhdG9yIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyMjEwMjAwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMi0xMC0yMCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIzLTAxLTExIn0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiNTU2ZDI3ZjM4YjIzMWJiM2Q4MThiZmMxYjYxNWYyNjBmNmIwOGYyMCJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyI1NTZkMjdmMzhiMjMxYmIzZDgxOGJmYzFiNjE1ZjI2MGY2YjA4ZjIwIl0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJNSyBLZXlwYXNzIFMxIn0sImRlc2NyaXB0aW9uIjoiTUsgS2V5cGFzcyBTMSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozLCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUIrekNDQWFLZ0F3SUJBZ0lKQUk5Z2luMUFEMytETUFvR0NDcUdTTTQ5QkFNQ01Ga3hDekFKQmdOVkJBWVRBbFpPTVJNd0VRWURWUVFJREFwT2IzSjBhQ0JUYVdSbE1RNHdEQVlEVlFRSERBVklZVTV2YVRFUk1BOEdBMVVFQ2d3SVRVc2dSM0p2ZFhBeEVqQVFCZ05WQkFNTUNXMXJMbU52YlM1MmJqQWVGdzB4T0RFeU1qUXdNekV3TlRGYUZ3MHlPREV5TWpFd016RXdOVEZhTUZreEN6QUpCZ05WQkFZVEFsWk9NUk13RVFZRFZRUUlEQXBPYjNKMGFDQlRhV1JsTVE0d0RBWURWUVFIREFWSVlVNXZhVEVSTUE4R0ExVUVDZ3dJVFVzZ1IzSnZkWEF4RWpBUUJnTlZCQU1NQ1cxckxtTnZiUzUyYmpCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQk8xcndpM05rbVd6ZDBPR0o1T09jYU1ScXdWOFpEaVhUQzV1UXhVMnVQaElSNUN4VVU3QjcxZG5zZ0xpajVua2FaRWE5aGtmMkp6NmYvaWgzK0h4REVtalV6QlJNQjBHQTFVZERnUVdCQlJWYlNmeml5TWJzOWdZdjhHMkZmSmc5ckNQSURBZkJnTlZIU01FR0RBV2dCUlZiU2Z6aXlNYnM5Z1l2OEcyRmZKZzlyQ1BJREFQQmdOVkhSTUJBZjhFQlRBREFRSC9NQW9HQ0NxR1NNNDlCQU1DQTBjQU1FUUNJQkVQZW1hL2p0YU8xLzFxZVdNNlNyckp0R0JsY25HQ0pkazN0RmVaTnpDdEFpQXpDaU5XQmJyUTJLbEtzdys3UXEveDFBYnpVdncrU3lXbFBuSjBtVXJET3c9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFoWUFBQURmQkFNQUFBQllFWWUxQUFBQUcxQk1WRVVBVEpoQWViS0Fwc3kvMHVYZXUxem16SVh2M2E3Mzd0Yi8vLy9MWm42U0FBQVB5RWxFUVZSNDJ1MmRUWktqT2hMSEFXKzhWRlJ0V0ZMMGhpWDJiRGhBZGI4TDlHSU84R0ptRGpBeDhaWklldDNOc2NjSUJQcElTU2tNMWVDeUYxM1JHQXZwUnlyL3FRK1NKTkUrcHk3OCtmV3VmNzZCWjlIRS9LaGw4K0oySUd1NlhYM01DaU9xOXdQRm9yWlk1QW9LSW82a3phNVpJQXpqTzRvRnNWZ29YOTZzb2l6ZmNHYjQrMWlrMFdZQnMrQVdpa3p0UDhJaW1HWXIrMk1ScnQyZktCYXRWZkJadFpscVpKTHRta1VhNlRrZExJckU3WW5ZMURmcXBOa3ppNUJoL0JmSHdzZjRSb0NYdDA5MW8zTGVOWXNzMGl4QUZsNUZKVm52S2dRZWt1MmFoZDlzZitCWWVCWDFaZ3hNNkVoMU8yL2ZMRTR4Z3VwZzRWTlVsdlNkb3ovcGZMT2ZadGNzZk5VRHpBSml3WHc5citjZ1dCUm53V1hYTEU0eG5oTmswZnE2U0R1eTRQM0J2Yk5JWWp3bnlNS25xRjJiU2NOcGhPL1lONHM4eGl3QUZ0d2J0VXdzWHJzRHNIREdXKzg0RnY0eDZzQ2lMSVN0N0o2Rnl6QitJRm5ZaWxwMXRyOFFnSGJ2TDF5RzhSM0p3anRHdlZuTndLSk8rOTYwZXhhd3JQNTh4N0ZnL2xoV3hoZkQzMmIzTEU1b3p3bXdhUDE5cnRkU0VWL2NydEx1UE81MEdjYXZkeVFMRWlpTm5BWVd0MDVTWkFkZ2NVS2JoY1dDaDl5UEdLZjJuYVhrT3grbk9nM2pPNUlGOVUzakRDZmtFNVhxQ0N4eW5LQUNMUHlLT25TaVpyU2d0RHNDaXhSckZoYUxjRXhmRDhMQ3ljN25PMTJHOGZNZHlZSWhmQTlKMHFxN2tuMlpoWWRGaXZPY0Zvc1dFY1V5L0dyTUxsam92ZnpYTzVZRndlanpNTWRYZFVkaG9abjIzMWdXSEJuUWwyWFpkWWRob2QzUDcxZ1dRVVhkN3lmQkdjYVBkeXlMSXFpb2gyU2hHTWFmYUJaSi9LcmtJVmprQ0JVeFdMQzRhZlhqc0VqaiswZ2R2MEI3REJaS083QytrOFF0UFIySUJjb3d2bmtWTmVzZWhJVmlHRGdXQjFiVUlJdFRaQXgrWUVVTnNwaDcreThVaXdNcmFwZ0Z3akMrK2JySTZZRll6SWJ4RThIaXlJcUtZSEdPbWVNaitLWFovYk1nQzJUMTIyTW9xc1hpeTRKNDY1dG5HdWQ4WUJaVjdUR000RnBSY2VDZ0UyREJQWVl4eXVyWFAxMHNEcTJvTmd2QS9abXkrazhYaTJNcktzQ0NodUt0cjUyTHhiRVZGV0RoTll6ZWUvN2haSEZzUllWWStBeWpsOVcvWEN6WXNSVVZZc0VUcjJIODBibFl0QWZ2SWdDTHppZXJmNy8veDhuaTRJb0tzdkRLNnRmT3hZSWZYRkZCRmw3RDZKd3NqcTZvTUFzYVdHaUdXZFJIbnNaeHNnREVNUXV6T0xxaU9saFEvM29peU9Md2l1cGc0WTIzSEN3T3I2Z3VGclhYTUVBVzVPaUs2bUxoamJkQUZzZFhWQmNMdjZ4Q0xPaXhwM0Y4TEh6eEZzamkrSXJxWk5INUpqNGhGc25oRmRYTndoZHZBU3pZNFlOT0R3dkFNTTRlRnZYeEZkWERncm9kQU1EaUFSVFZ3NExIK0l0SFVGUVBDOHZzZlRyeUVPN0N3NEpIeEJlUGJoZUdZZmpqenVLaC9ZWHBQZjNqa2ZhaGRjUVFoOEE0OVFGRzdINFcxUEVGRkhlU0I0NDdEY05JUS9OYWp6d2VNYnhuY0w3enZwbGYxcWVNS1J2L0NYcmRydjB2dml4dnVNaFNvNWZwWmNIeDgrRDNxQ3FUOW1ja1l1T1NrTWpTcGswQ1hPVlZ5akJVaUJxVHdxYyt3K0kzN0JxOHgrQzgxbkpWZlhOZG40Mkh4aXh0TXd1dVhFem4xd0t0S0d4WGZsVXUrWXBrd2NGbXJUdmZXVGdyd1BSdEVCTUxyamxxTFpFZGpzVUZWcnpnMDVOQTExOTFIdnppcnNISWdwcmpaRU96VkJnb0ZxWnZlOFd4b05EUk5kZEhMSitydEd4a1FRd1d0UWM2aGdWM1NWNUlDQW5nQmJIclpvaE80cDFrSGxpOEdmTW53Q3pUYXhRTDU1UmRpQVVGMnJUaWVtcnRlLzZSZ1hOSnhMY2hGOEdDT25jM2gxaHdRQnpYVzJmbjNnYzFRQmExZDZjMmdnVng3bTRPQm91MWZYdlgyMzlSZXgrTWhWaHcvMDd0TUF2cTN2WWVaTUh0RnFIMzVaeVhtTVY4bHlFV3JmOG5ZUllrY2FiUkNnOGkvdEVoV2NUdmdKNGFsdDNDUXZabTNtV1ZSV2syNWFXQ2ZoSmtNVmV5ajA1TG92cjVKUU9xMWZieEVWMEhyb1lBTVZ0b3FWRlJadndreUtJMVNpeVUyN1ltaTFoVjVhWWtVdDJlbU8xNGFwZldaRWdXeEl4aWl2a1NhN0tJVmRYVzZrbTFaay9NUm1vRkZOTkZHeFFMYnQ4a01oMVprMFhzZnZEQ1ZodWlWb05acFRDZ1dLSzJMc1NDMm82TVRiZHRWUmFScWdyWURsVUZpRmx5MUFKZGo2ckZoRmpVUUxWcXlYZFZGbkdxeWlCYzZuMnpNNFlVa0xVUjVXQ0lCUUVLb1BJcXE3S0lVOVVXempjMU93eTdSempTTXMzRUFpdzQ2TkxKZUhCVkZuR3FXb2NheHVEQm10bnh1RkwxQUF1NEFGbVJkVmxFcVNvQnI2alVnNWxGVU5naEYyWlk2bVRSZ3NiS3hxUHJzb2hTVmRod2xJWXhzMDR0WEtSeU9NQ2locDNZaUhoZEZqR3F5bUdIMGxvc1RFNTU1N2l2WVJZRjNNamg4Tm9zSWxTVndUZFphWmlEUlFWVFRSRXNDRnlsOFZjcnM0aFFWUXAvelUwV1dhaFhxY2NETEJ3RjBFMVlSS2hxNjdqZ0FoWkZGSXZNWWFMNXlpd2lOaXU1V0pDcFlWWXZjc0dkKzQ2ZkJmT3lPSy9OQXErcXJZTlVZYkE0UTY3a0hoWm5SeWRiblFWZVZldWd3YU5adFB0a2dWZlZZbThzVHF1elFHZUpXY3JpZkMrTHlzRWlXNTBGZXBPOGkwWDdPQ3pRcXJxVVJYWWNGbWhWL1F3c3NLcGFSN1BnNjJqcUI3TEE3Z0Z1bzFsMFc3SGdHMmtxV2xWZHNWYUlSZEo1UXRWbExOaG1MSkNxNm9yQkY3RHdqODJTSUF1NkdRdWtxbEtITC9Hd1dEWm1EN05vdHhtYjRWWFZNWDhSWm5HR3FTcXR6U05aRkp1TTJTTlUxYVVLSGhhT09iNTZQZ3lFWTh5Y0tITU5qWnN0V0NCVjFkSDdQU3djYzcvRWJPM0pNV2ZFZkgxczlUbStHRlYxekY1NldERGZ4c3ZLY0IzNm5jazlMT2dtOCtCUnFscjdaclZoZ3dmSnRxcUJ1WlpvS3crTFlpeDFFeFk0VmFXd0wvR3hLS0IrcGEwTEV0UFl1TFg0Vk1GZEpOK0dCVTVWT2R4L2ZDeUNhOHYyaW10ckxVcFdzSHRydG1HQjNOSkhiTVBndVpkRmNNK0JiSHBqZkoxcExMUnQwenpaWkowOVVsVnJLL3JnNU94bDBkbSsrS0l2M0RLalRNMXFKQXROeVl0dDlsOUVxaW96UXpGT2tnQ0wyaXlPT1RhNDU3cUY1am9MQmNZbDJXWmZUcXlxRW1OL0ZrbENMS2FDeCtkQnJoYnJRbTNKOUVSQlk3Q1luaHQ1VXpZRWJNTUNtZlpnTnAvK1BkUnZROHU5TE9iZWw1VTNFb1ZkL0xSeTk5SjBaUUp0aHF1RzJyMTg2Zmk4cC9HMEhRdmM0MmZBWHRjUUMrcmY2K3JZUDVzRExPenFiY1FDT1ZhdG8xazQ5dTAyL2hPYUVJdTAyNDRGVWxWNVBBdnFOd3Z3QkgxVGRlVjZLZjFHTExBendIVTBDK2krYS9HQzU5Sk9GbW0zSlF2azQyZWNSTE5nU2FCbzZyUWFKNHRtVXhiWUdXQVd6Y0sycFZOZ09OU0VXTHgybTdKQUp4TzZSTE13MjVvR3ZGRGVtU3dJUE8yMkdRdWNxcG93c2c3QlFvZVJObjVqZSswc0ZuclB4RDZUdVp3RlB2bllWYTgzZ29YNmVHOFc2SG12bmMxQ296a1hrSlRhcDhHdytOKy90TSsvd1pONGFYNmNENS9MeDVDemFycnA2VndFZUh2a1k5L3BGMytSK21zR2xUSDc5Tnk0VXNCT1VqTW9qUzR3VHlTTm9LcTQ3N1g1QzI3ZG4vMmxxVUN5V1BKaGZqL3daTEZuRnFnbkdKOHNQaHNMaG4wVS9oT3dvUGc0NStGWjFPaDBFWS9QZ3VDeUFud0dGalRaVGxLUHhxTGVVRVlPeG9JbEc3ck9nN0VneVlhdWMrOHNTbWhpSXZ1Y0xMUlJkNEhNSWZLWUxMaVM1K05LMExsbEhwS0ZuSUFxeTlCVTFlT3pvSjRWdjgvR292WGxsUHBrTE9xUE5JdWRzeWcrMGl4MnpzSy9aUDdaV2VUZEoyVmg3emw0N1Q0ckN5MWI3ZVlvZGo4Mll3cU50TnFZdkg5dGNBZmpWRjRXY2pQWmIzWmUzZlB6WlBGazhXVHhaUEZrOFdUeFpQRms4V1R4WlBGazhXVHhaUEZrOFdUeFpQSGdMSzVsR2RpUDdmbXc4cTczdE9temRER2IramRoY2JscmMwRHJmUEFEVjJYMTdiOGtXVzhuenlJV05GbUR4ZEpsSWJYaGRmSzdXWkNWV0l6TGhSem9McXpDc09ESkloYlhaalVXUEZtSnhiZ2NRZ0FESVFtR1JidUlCWE04QjVnczZ5SlpyRm1mZFJaeVhjUXkraGwzSmRaMi9DeUtSYXRMclRESXdtcEVzdXkrTm5lekdCeHdmaDhMc21oVmZrMFdkZlNtUTVCRmYxZXo0YStqandSWkxIdjMrZEJIMW1GUlJPK29nbG53VVVvNDBObDVnMk94eUdPeGJrVVc2U29zZWdQTC9UZHdHeFpkdDJZZmFmUXdzaHBDVVRXd25NN2d0K01PRnRTd2NXWkVveXFMT1ZMVldHUm1PUHdsRlBOV3E3Sm90U2F3UWRLS09WNjR6QTkrM3Y2UUtidmIyV1RCNVh2Rmh2cTlhUm1QS3ZYbENrTjhtZG0rVTNPNyttTjdmWEZuTnIya0pldUxvK05UNHZKa2tXMU5uckJRVTJjcEcycVowdmtwZTZxbEdpR0ptMFhmbHJseGwwVExNYWl4SU5wckN5dkZRcFZJdnJZemJaa3N5Tm9zdUxwcmhGcWJyWWdTVldwWi8yd1d0Y0tDcTJVWUxHcjFPNFVGVlljMVdnRXlKYUhCSWxtYnhWQzFWd1cvdXR1S3F2OEpzR2pIOTgxVjZ0RGlaTE5JOUJRL2xUWWFrREMwQW1UeXhzMVpjR1dYbWFnTEVXd3VvaHFGT05JL0x6Nm03NnFFajFORytCcUxTamJ1OW9PWG9aT3JMUHJ4dU1CYkRiVTNXTkI1d011SCszTVpESU9LVkV0bFpiTElwdXZmMUZENDR6dFpLQThMTW5HNzZkQWpTSDhwR1RUSXRHNjVXMVA3MzBrVzhxVzFSRkpRNHM1NnRFS2lvRlBkcFlBaFJ3WkVYTEtZVTdscUxCcUZoZWFLRjdNWS9Wd2pyOFdUS1pSajBublZvM0UzSGhac2Jod2REVTE0ZW9NRkdmOE8zK25hTVFsTVBSeW5VejY1Qm1CeDZ0Wm5NY0E0aVd2TmplMHZTR1ZWcVpMdHpjVkM2U1AxbklFek0xbE0yZ0N3R0hRc2x4SGdxUEJNU2NHbnNqaHZ3V0tBVWNucXppelU0S0hxSmhrTXNwaENuOEppd2FlZkY4TXQxMkoyQVNNZGdiSFpnVmNRaTJvVEZnTEdDV0tSS3JIeTJBb1BpMjVpY1pKeWtCb3MyTlQ2WW5CSSt2aEZ3TWpGTlRpWms2czBIOGhDQ0FiRUlzT3pLRlFXWjNWMkk0S0ZJTkMvd2U4OG9aZ3ZZYkRvTm1MUlgvbE9GbVFNeUNybEZKQkY1Mk14U01pdEFLSys3TzlEV1FqUGZSY0xkVHhDbHR2RklPYkRTM1p1MzlPMC9IZ1dGR2FCOXhmdGNQemVQakpvaUxDTGRDemd3MWt3bUVXQ1prSGtBRTdWRVp0Rk4wMXorRm1jYWhGMDllcnMwaEdReFhrcnU1aHZZcEFGVGVTUHExRStuQ3hPSVJaWno0TTEwZ2xOOFFVZk9SWWhGc1Y5TEhyaHNsaU1JV2pIcXlBTG9nN0NXOWxFZ0VVeC9yMzYvRVU5cDQ0L2pjTWtoV1BpWkVIa1dHNTlIZWxiS0N3MXlLS1F5eHF5M2FKdVY1MUZNLzZnVjBxZXVYWGtOSTFIYW5HeFFockdFTCtMNkYxblVjL3ZFVzJHZUc0SmkzRmhtU2lzRlJiRC9NbzFVVmtVWXNDcGpGTzUrUG1VTjNNZXAxNFNuVVUvdmhYUlpKOUZ6Mkl4VkVSTVlNbHg2bFVmcC9iVnljUnRxd3dXdDM5ZituRnFMVWZYK2JLNTMzbmR6R1l4VFdzcExHcHova0xMN2FEUFh5Z3NwbGRSak5OREZndHRFcWxXbHlhNXJDQ2QwMFRxTEdUV2tlbUU1ajRXRGNCaWV0Kzh3b0xDTEY3VnlWd09zSkR2L2FJaEZxazZyNVhQSSttem1sNWRaekc5LzBTbTl1dnVZakdYcjdKZ05vdmhlaWFMVEova3Y5Z3NxRDdmZVhLeXFGenpuZW9ySEhRV3crbXpJZWQzc1hqcFFCWkRvMTVWVFIzNEdDeSttQXNlb3R5WGRoNmJqVVZOZzlIR3hhSnl6b1BMbzFWbnNlQXlaQzlHRzkxa2p4SmJ1T3ZtMmp1N0ZseVY0Nmk5Ti9ENnlEVzBnZWh0dURINzI2L1ZicGZ6SWJBK3Q4YzhqVThXYTZ5UlBoZ0x1dTBqN1FkaGNSMFh6TGJNZEhBVUZrVWZFMitaTHVkQUxNZ0haSDA0Q292dDg2SWNqa1h6Wk5HSGxyMnphSDdMbGNXV292OER3aWZFektwNHJVZ0FBQUFBU1VWT1JLNUNZSUk9In0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMTktMDEtMDciLCJ1cmwiOiJtay5jb20udm4iLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IlUyRiBBdXRoZW50aWNhdG9yIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVMkYxMTAwMjAxODA3MDkwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMy4zIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjEifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDE5LTAxLTA3In0seyJhYWd1aWQiOiJkNzE2MDE5YS05ZjRlLTQwNDEtOTc1MC0xN2M3OGY4YWU4MWEiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6ImQ3MTYwMTlhLTlmNGUtNDA0MS05NzUwLTE3Yzc4ZjhhZTgxYSIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJlVG9rZW4gRnVzaW9uIEJJTyJ9LCJkZXNjcmlwdGlvbiI6ImVUb2tlbiBGdXNpb24gQklPIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfSx7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sImlzRnJlc2hVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZWQiOmZhbHNlLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURkVENDQWwyZ0F3SUJBZ0lKQUlDVVR2a2d0ajVDTUEwR0NTcUdTSWIzRFFFQkN3VUFNRkV4Q3pBSkJnTlZCQVlUQWtaU01Rd3dDZ1lEVlFRS0RBTkVTVk14Q3pBSkJnTlZCQXNNQWtOVE1TY3dKUVlEVlFRRERCNUhaVzFoYkhSdklFMTFiSFJwUVhCd0lFWkpSRThnVTNWaVkyRWdRMEV3SGhjTk1qQXdOekEzTVRRek56RTRXaGNOTXpBd056QTFNVFF6TnpFNFdqQlJNUXN3Q1FZRFZRUUdFd0pHVWpFTU1Bb0dBMVVFQ2d3RFJFbFRNUXN3Q1FZRFZRUUxEQUpEVXpFbk1DVUdBMVVFQXd3ZVIyVnRZV3gwYnlCTmRXeDBhVUZ3Y0NCR1NVUlBJRk4xWW1OaElFTkJNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXZBS09lcUM1L3AwRDFpc0NZS1FKbFZVT3JCNkk3RExvY3VuRS9SbThkdUdUYnl4UWh0M0NiRlZUdjNOMkxwMmZianhsSSszc09TR2szM0ZUWWtUcXhjZEpJcko3U3NrQmNVU05yZktPYVFULzZLUWNQNENtN1YrNjU1VHErVFd4eXhXUWhEeWd0MTVxb1A3TXVLNmJUOVN3cENqcGZLaGFNU215UWFNb1VjUkFiTHFkekJDYWMwaHpCK1plK2dxSmxuV1Y5VWFTSTJyRnNWdUg0WkUwY1JPK01PcGFMZ00vczI0OG5HR0hwMjJld1NRZmJuUGFCYmI4aXF5QVArY3U1MkdMc1VwS1JKZWJFK1I2K1BNUTlKQ2RXZVFaUjNEa2ZTaWRrdjNtY2I0anExaUl0YStNcUtoUm53cmZYaDkxMUtXTG5ZQWw5RU5DaExYMGM2U2oxUUlEQVFBQm8xQXdUakFkQmdOVkhRNEVGZ1FVV0x2aFJCVVBuOHVMSWY2OCtndi9OWkl3R1NJd0h3WURWUjBqQkJnd0ZvQVVXTHZoUkJVUG44dUxJZjY4K2d2L05aSXdHU0l3REFZRFZSMFRCQVV3QXdFQi96QU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFGTHJEaGFlZ2VLSHhZakgzRVAzdlVCS2huek0yMDZBU3hnZVlDTzJFYzlwT2xZSmFlcUZFK3NVYW1VVi9wd2pEbHFOYVNnRmd5N1R3ZVlrdk9tTW40cVNjc0hxdkozekdPQWlhZndhaDF2VUhmQ2xYUjgrYXhPMmlHT1VGMEpLclo5WVlqYkFhNS80SENsdjdqRlBPZE1XVE9ReW5nb2lIQXMzamt1WWpwQ0xGbEI0Vk9pM2Qxd2pBMXBuVGRCS2tBYjd0OG5UdncrL1hiRnZjUWE3M1ZIN3Nqdm9CcUQzZmRNZlJjdVZxNHFVWnRaVDZjR2FnVEhENjFUdHFoOW9NQ1pYY0RiUjFQR1puTmJxeWNzV1BESUswbnBtSzMvM2xmVjhjK1pzcnk2ZTE3MG1mSk1acDdPOG02Q1N6Ni9WTEsreURKZDc4NDF3cG1lS1RmNkluWkE9PSIsIk1JSUM2VENDQWRHZ0F3SUJBZ0lKQUpiVHlydTFYL0lQTUEwR0NTcUdTSWIzRFFFQkN3VUFNQ014SVRBZkJnTlZCQU1NR0VkbGJXRnNkRzhnVFhWc2RHbEJjSEFnUmtsRVR5QkRRVEFlRncweE9EQTJNVEl4TkRRMU5UQmFGdzB5T0RBMk1Ea3hORFExTlRCYU1DTXhJVEFmQmdOVkJBTU1HRWRsYldGc2RHOGdUWFZzZEdsQmNIQWdSa2xFVHlCRFFUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU1WaktIV3BiRDdUU2xNeG9jalRsNm5JZjd4MzJQbXNROXpHdUxHR3FBMFVRWm9JcTNYTHpMNkxZVXZKNUE1ZzB1eUZHbGxIRWZHQUtyRWFDUThGVnZQUy9VaDBGeWZ6V2hSQXppVFNpampNSUlWampqVXY5bTl2Rm1jWFNjZ0hpZzdPZHo4ODU4VjBrck5IOTlxR20zd2pnYU9lclRXbXQralhDVWZuMDFJa1RQd3hHMkhsZ0VkNDVqTkxTVjdWb29sK0tlOEUya2k0bEVrVGVIemJvdWxSNUdVYnAzbk1pN0U0N1ZNUWEzYk53bnpXQmJzYUJTU1FoTGszbTVIYUtoaHhhNndKREs0N05pTUNrQ2tkSUh1V1NRTFZBZm04NVVBT050RU9Qd2kwT3VLM3FiZTh5S09GR2YwS2hCNU1NZUF5bTdNVi9NNFcwYTQ5b2dQRDlwTUNBd0VBQWFNZ01CNHdEQVlEVlIwVEJBVXdBd0VCL3pBT0JnTlZIUThCQWY4RUJBTUNBb1F3RFFZSktvWklodmNOQVFFTEJRQURnZ0VCQUpXejV4TE1rNVdOWWJBYjZ5T3hFQ0JvWjJXZUIvcWw0VkozTy8zL3ROc3hPWW56TGVXbzU0MHpRaDlyQW1heHo3ZXVtQmxza01xNHlHUFNOWEI5eWNXR0hna2NDZVN6TjJ3djhDSXpEQnMyb0JaalROazY1TEJaRHNzVE9CdE1XLyt1VEZIUWZidU8zSVNMaEkwRFhmUkVpOU5ETTNqZmsxMXhIY3NmaDJSTVYrUWROZndWYVpackNxK291RytFdmt2N0txcStveXUwVkZNL3R6NjhUR2w2eWxoUEZSMXFoOXd0dHBWakFPT0NFUUNMcVAyZFAyOGx3WUJ5Q3FIUXFWSHdidWp2L0xaalpuS1czTFluZFppeFBQU1JDSnNzRER3SnZoL2Y2blR4ZzlaRSsvSmNZcmU1Q2FJOG56VkhhU09Dak5KN0Z6VUxHNjRKaVdPdlE1MD0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBUXdBQUFBZ0NBWUFBQURubFVacUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFFblFBQUJKMEFkNW1IM2dBQUFBWmRFVllkRk52Wm5SM1lYSmxBSEJoYVc1MExtNWxkQ0EwTGpBdU1qSHhJR21WQUFBSzFFbEVRVlI0WHUxZERYQWNaUm0rTk9BZktvZzZXTzBRY3JlWDNPNzFSNDFvSGRTcXFEQU9nMytjWUVYQm9sWFJURW4yMjB0YUtUYzY0bWdCcXpCaUVVVnBCZHFpd3docVNkSVMydXBZU2d2UnRwVFNja2xqV3pIYWdqcFNSZHI0dkx0dmpydmsyN3ZkdmQxTGpuN1B6RE4zdC9kKzcvdCtmOC8rNzhhSzBORGFhcjJxT2RYWm9xV3lIOVIwYTBGY3Q2N1dkSEdUWm9qVkNjUHFTZWpXMW9RdUhzT3kvZUJUc0RtTS81NFpUOWorTFdHSWc3RGZCL3NCY0RQc2Y0WGZQOFgzYjJ1RzFaSFF6VThtVXVLZHlXVEhtNXFhY2kvakhBS0J5aWYwYkJyK0x3YVhJUFlQa01kcWZMOFhkV3BsczFBQTMxL1FqT3c5OEw4UzliOEJYSVIyK25EYzZEb3psc2swc2xua1FNeGtQR1hPOUVKdFZuWUdGNHNVeVZuZDhVVGFlcDhidys2TGFrQmo1aXpkYk5KUzFyeEVXbnlXeGczNkVtUGRXb1BQRGVqZjdlQVRHTXNIYUR6VHVDNmhiajBOL3BYbUFzcnVnczBXTFA4TnVCSmpaSm1XRWxjbDA5bVBKMUptVzB0TDUrdWlIQnVHa1hzbGpYODduaTRFelZuazlBdmtzUW41N0VTZGhyQjhCTXVQak9XUC8vNE9Ic1IvZTdEOFlkVGxmdFJoRmZnZExHOUh1MXdBZnpyNTVqQU9raVFLaHZWYkdCNkMwLy9pKzJpTmVSeDhGZ252UmZ4ZmFpbnpTazdORTBpSVVQYmY0M3dXbU5UTmQ3QnBLRUE3TFpmRkFZOXpwM3laVFNNRGlRVmkvVStTZzVRWUFJZk9tRzJld3NVakEvcmhXN0w0QmVybWo5aDBVb0IyT0IrVFpUVzRCL2s4T3lHL3lDaU9vVzFJWUg2SDhYUHo5TGJjS3ppbFFHaHBNWnZoWnlIR3dHM2c0MkJrODVaOG85MEc4WDBOaVNzMUl2MlFHazhLZFdzenQ0c25JUDhScVI5bURRWERJZFpTYkJvWjBJbDNTMk9YWlhZcEY0OE1VMTR3bksxYmVXNDFwTDNGRVFDSmxQVld0REcyZnV5VnJOUjN0QlRkU2pCOFlySUZveVZ0bm8yT0N6Qmd4RE5CQjZwWEtNSHd4aUQ5Z0szS2M2UGNrdkJHSlJpK01jbUMwWUQ0ZmRLNFhvaDlXL1lUQ1pSZ2VLTnZ3Y2hrR3RHMmUyVytha3NsR0w0eG1ZSkJheGxwVEkra05SUWRtR1Izb1VNSmhqZjZGUXc2Y0NyelUzdENNTERXdVFzZDNSK0F3M0tuQlE1S3luamhqZHhPbm5EaUNFWnVHanJzWVdsTUp0cGlXVUszQm1UL0ZmRXVkaGc2VVBlNkZnejBiUjZmYTZNbW5ZM2tsRHdoYVlqTFVVNmVzMjd0MGd6em03VmdVdTk2RDZma0h4Q2E2MlVWR0NNcThnMDJqUlFuaW1Cb1J2WWlhVHdtMm50Zlc5dkNrN1cwZFlIcy93SjE2M2s2ZU1adVEwVzlDd2JHOUsxc09xV0F2SVUwWDV0aURadE5iU2pCY0dFRWd0SFdkc3ZKOEUybkF1VXhpYnA1aFdNOTJvRGYyeWI4WDBLeDNyRU5GMG93b2dIbTBoSnB2amFWWVBqQ2lTQVlpYlQxZVdrc0ppYkNrL1BtNVU1aWM4cnhRcGxkTVJQcDdIbHNIaHFVWUVRREpSZ2g0c1V1R0hTUkQrcElWK1RKNHhIMUxHOWRqQ0hUaU1sUjRWaUcyRTdIUmJoQUtGQ0NFUTJVWUlTSUY3dGdvSjJ6MGpoTXRIT2VqbDJ3ZVFGWS9sR1pmU25GZkRZUEJVb3dva0hDTUJkTDg3V3BCTU1YS2dxR0lTNXZUcHRuaDBYVSswNVpuQUpERkF6RDZEZ2QvcDZXeG1IR0RmRkZOaCtIMFFiMHdhT3lNbU9FK09VTkkvY1NMbEExNmwwdzBGNjc0N3E0cFJwR2NkcWE3a3VSNVV0RUg0NWdEbXdLaS9EWmo4LzdJRVMzNHJPemVhYVl6V2xVaDNvUmpKb3pSTUdvT0FFTmEwaTJkVEdHZUVwOFRGSm1QRHZZdkdyVXUyQ0VRYnFoa3NPRkJzeWxpMld4YXNUajZOZDEycHNYdjU3VENRWWxHQzRNU1RCYVc2MDNvbzFkYjZxenFWdGZZbk01NkFwQnc5b3hvVndSTVlsR05LMzkxVnlpS2lqQmlFWXdtbFBkTGJKWXRTVGE3cUhpQSt1K29RVERoU0VKQnRwdmhkVC9HSFd4djl6V3hSaTB0UGlFdEh3SnhiVnNYaFdVWUVRakdIUndHdU9oMGdWNWtUT2VNaS9oaFB4RENZWUxReENNczFxdFZnenU4cmV2cHl5UGp3SHdzcFZoL1N1VldqS2RDd1NHRW95b0JBTzVwODMzb3ArZWs4V3NGZEYrd2E4U1ZvTGh3aEFFQTM3V1RQQmJSSFRjQWV4R3ZKVE5IZlFNTmNmNkJzK1A5ZWJueGZxZVBKV1gya0NaekhnZkV4akNHUUlsR05FSkJzRitFSkV1ZHN2aTFvYmlUNXlLZjlTTllPaldaalR5ZmFIUnVkOUFIb3RZcFdBNE54cUpZMUxmVE5UNUsyd2VpNjBmTWlBVUQ0S2pCZmJtajhiNjhzdGoydzdhRDJxaGZVLzB4eTZacnpIUzJxdWxwVE5sK3d5SXVoY01qQlU2NjFRTm0yY3VQb1BEUllUUkJqcGJSMk1BT1Y5SFp6T1E5OC93L2ZZd2lQSHRmamUwYnYyRmsvQ1BlaEdNT3JzT28vTHQ2N28xWERnVnVpRS9Cd0x4anhLeEtPWEcyTTZkdGkzNnc4T1JkbkdQN1RjZ2tGdWRDOGJVdkE2amxraWtPOCtUdGcySU1YU1l6ZnhEQ1lZTHF4QU1MN2V2bzc3dHRuRi8vMG5Za3RnaEVZbHhITHFhekoydGpFcWJzOWl5U1dYbjJ2NERRQWxHL2FPc1lCaldBVGJ6RHlVWUxnd3NHTGxwS0x0VjZwTkpIVlo0WUhMZi9uZkpCV0lDaDJIZFFFWGk2ZXdsTXI4bGRKNUhZdHY3aFJLTStrYzV3VUQ3N0dVei8xQ0M0Y0tBZ3VIcDlHZEtYTVhtRUl4OHUwUWNYUGpZYSsweW1Vd2oydXR4cWU4aW9vNFgydlkrb1FTai9sRmhsK1NQYk9ZZlNqQmNHRUF3NkhvSzdBNlVuY2lvNThHbXBzdGVlQjFENzlCWDVlSWc0ZjNEcDNPcEdPTE1sL2tmeHgyeHpGcmZqOFZYZ2xIL3FMQkxzb1hOL0VNSmhnc0RDRVlpVmY3MmRXYnBKZHc5Kzg2UmlzTjQ5Zzd1aDNWaEY0UEY2UW1KLzFMcTFnSXU0aG1WQkFNVDl1N3g3MHdKZy9UWWZVNmhMSlJnVkVhRlhaSUgyTXcvbEdDNDBLZGd6SjV0bmdLZkI2UyttUGovMEl3WkhTL25JZzVHUnhzaEJnTlNrU2psWWk1UkFQcnVVbG1jWW1KeS9YbkczSEV4SzZEaUZrWkV4QmpZeUNtVVJTWEJRRHVQb0E1Ym8yYlN5TDZkVS9JRTNpcVVuZ1lObTJnRDE3TjArRzhWcCtRZlNqQmM2Rk13NHJwbFNmMFVFVEZOTmk5RnovRE1XRy8raUVRa0hQYm1OOFMyYlp0NCtiaHpqMG41SjNpQmRGczFsL0FFMUwydUJhTldUT3JpQTV5U0p5RHY3OHI4MUp5ZXJ5NldRQW1HQzMwSVJ0T2MzR2xvcDhOU1AyUFV4Vk5sMS9UcjhxMnh2dng2OFBraXNmZ25mbDhmNng5MGZRVWw0bjVHR3ErWXVqaHk1cXp1MTNDUmlsQ0M0WTExS1JqMFdrZ3RGL3dtUlNVWUx2UWhHRjRtR0FhTFlQUHkyRGcwUGRZejlIN3Nwc3lOOVF4VWZDMGlYZnlGUHRvbmkxbE1HcXhjcENLVVlIaGozUWtHeENLcFcrL21kSUpCQ1lZTFBRb0d2WVFhOXVYZjcxbHA2NkpLbEh0OC9Rc1VSKzBYVFh1QUVneHZyQS9Cb0xmcjJRZkhyL0d6bGVtS0tTTVl1bmtIVFN6RWxMNCtzRmFDZ2ZvK0IrN1dqT3puMkxRc25OY0dpRDFVVHViUG9kbkY1cEdBenBnZ3Z1dFdCdXI2SDd0T3VyaVVpNVFGWFNXS010L0hCTjVFYXlYVXIrdzlNY0VwanZHSzR2Zklid1ZkdzhJcGxBV05CWlM1RHZXaE41WG40ZWRvcWQ4b2lGeXgyd2sraXUvMEl1aWw5S3dUVHNrVDRtbHhEdHJ6Um01WGpQVW8ycFhlNkc0OWdqeHZ3K2ZDaE5HaGNmaHdRQzlqYVRMRUc5eG9HRmVXdmlZK1V1U20yUStjb1hkeTZOWWlOT3d5VlBySEdCaDNKb3p1VUNzZVQ1bVhRZkYvamhnL3hPZlhOZDI4Z2pvMGFIM3BMQWxOTkdkdEw1WWk1NXZRZ2JlajQrNmcvOWdzTXFBT0gzSGFTZndFYlhjRHZtZVRodlVwVGU5Nnk0UXpNNzZRbTlZMFo5RnBkUGNtNnZOcHNBdDlzdHhwTyt2WDRFYkUyMG9UQ2NzR1NvbmwrQi9mNldhL1ZjVjUwYVNQeDd0T0RlRUJ4ZzEweHkrZGtvWGdmQWd4RmlEZTE5QU8zME0vckVRTzl5TG1BNGkvQmIrM2wrYm5rUElITjRQclVMKzErRndCMjJ2aG94MWlmMUc4MVhwYnZBMjVaaksrcjJseFIyNGExZDhSUHpFZnV3b1djc0VXaUpNellqK0kzdytWdEtzaEhnSC9BUFpTbnFqVHpmaTh4aDY3dW5VdVBkckEyOE54WXJIL0F6M3RJNGo1K1RPTEFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJGSURPXzJfMCIsIkZJRE9fMl8xIiwiRklET18yXzFfUFJFIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsIm1pblBpbkxlbmd0aCJdLCJhYWd1aWQiOiJkNzE2MDE5YTlmNGU0MDQxOTc1MDE3Yzc4ZjhhZTgxYSIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwidXYiOmZhbHNlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibm9NY0dhUGVybWlzc2lvbnNXaXRoQ2xpZW50UGluIjpmYWxzZSwiYmlvRW5yb2xsIjpmYWxzZSwidXNlclZlcmlmaWNhdGlvbk1nbXRQcmV2aWV3Ijp0cnVlLCJ1dkJpb0Vucm9sbCI6dHJ1ZSwiYXV0aG5yQ2ZnIjp0cnVlLCJ1dkFjZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6ZmFsc2UsImFsd2F5c1V2IjpmYWxzZX0sInBpblV2QXV0aFByb3RvY29scyI6WzEsMl0sIm1heENyZWRlbnRpYWxJZExlbmd0aCI6OTYsInRyYW5zcG9ydHMiOlsidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN31dLCJmb3JjZVBJTkNoYW5nZSI6ZmFsc2UsIm1pblBJTkxlbmd0aCI6NCwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjQsInByZWZlcnJlZFBsYXRmb3JtVXZBdHRlbXB0cyI6MywidXZNb2RhbGl0eSI6MiwiY2VydGlmaWNhdGlvbnMiOnsiRklETyI6M30sInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjoyNTV9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNi0wMS0yMCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6ImVUb2tlbiBGdXNpb24gQmlvIDIiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI2MDEyMDAwMiIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUHJvZmlsZXMiOlsiY29uc3VtZXIiXSwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wOC0wMSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6ImVUb2tlbiBGdXNpb24gQklPIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNTA4MDEwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblByb2ZpbGVzIjpbImNvbnN1bWVyIl0sImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDgtMDEiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6Mn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNi0wMy0yMCJ9LHsiYWFndWlkIjoiNTcyMzU2OTQtNTFhNS00YTRkLWE4MWEtZjQyMTg1ZGY2NTAyIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI1NzIzNTY5NC01MWE1LTRhNGQtYTgxYS1mNDIxODVkZjY1MDIiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiU0hBTE8gQVVUSCJ9LCJkZXNjcmlwdGlvbiI6IlNIQUxPIEFVVEgiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MTMxMDgxLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX0seyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUJtRENDQVQ2Z0F3SUJBZ0lVQklnZlhwZDV3a01xeGhLV3RoWGo1cnA0d3o4d0NnWUlLb1pJemowRUF3SXdLVEVuTUNVR0ExVUVBd3dlUVZoRlRFd2dWVEpHSUVOQklGTmxjbWxoYkNBeE5ESXlORFUwTVRjMU1CNFhEVEl3TURJd016QTBOVGd3TmxvWERUUTNNRFl5TVRBME5UZ3dObG93S1RFbk1DVUdBMVVFQXd3ZVFWaEZURXdnVlRKR0lFTkJJRk5sY21saGJDQXhOREl5TkRVME1UYzFNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVlc2NNSko4RE9FbTM2ZHVTemV5bStFSE1lNzNGT29NSlNodjFqbVByNFAzS29tZFVBeSsxM3IvZW55d0w2RDBhNDFINmZvUlNWdTBCSThXbnN4eERjYU5FTUVJd0RBWURWUjBUQkFVd0F3RUIvekFUQmdOVkhTVUVEREFLQmdnckJnRUZCUWNEQXpBZEJnTlZIUTRFRmdRVTJSZTRJdTJJLytLWHV3SDZFTUprM3FyTS9XQXdDZ1lJS29aSXpqMEVBd0lEU0FBd1JRSWhBUFJDcXJEc0lBTW9GOWJTUk5KOWppZVN6RURTVU1Ray8vNGtUR0xiM0dlRkFpQmRnNTVNUXU0clM3VFBxRFVZaGxLUlB4OHV4enhBQmMwUUY0ZUM4K0VyRFE9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFRQUFBQUVBQ0FZQUFBQmNjcWhtQUFBQUNYQklXWE1BQUFzU0FBQUxFZ0hTM1g3OEFBQUFHM1JGV0hSVGIyWjBkMkZ5WlFCRFpXeHplWE1nVTNSMVpHbHZJRlJ2YjJ6QnArRjhBQUFNMkVsRVFWUjRuTzNkZmRCbWRWbkE4ZThGaTRKaEVDcElEbE5rTlU2YU1tSkRJME5EallpNElLQVRacE5OK1E2Q0NGSlpFN2JrQzVFdmxQRm0yaDlOMmF6NWdwQ2hwcE4vQ0NvS3VxS0RTa3N5eGJUQ3NyeFlxQ3k3ZS9YSE9XdmJ5ajdQczg5OTd2dDN6dS8zL2N3dytOZDVyaG04dnZjNTV6NzNmVWRtSXFsTllRQ2tkaGtBcVdFR1FHcVlBWkFhWmdDa2hoa0FxV0VHUUdxWUFaQWFaZ0NraGhrQXFXRUdRR3FZQVpBYVpnQ2toaGtBcVdFR1FHcVlBWkFhWmdDV0VSSDdBcjhCL0E1d1JObHAxTEFFYmdldUJLN0xnUmJYQUN3aEl2WURMZ05lVlhvV3FiY0R1QkM0ZUlnSUdJQTk2SmYvQ3VBVnBXZVJkdk13OEV1WitkVlpEMlFBSGtGRXJLRTcxWEw1TlZZWFplYTZXUTlpQUhiVEwvOVZ3TXRMenlJdDRhck1QSFBXZ3hpQVhmU24vVmZpOG12OERNQ1FYSDVOakFFWXlpN0wveklnQ284anJZUUJHRUovemIvemJyL0xyNmt3QUxQcWwvOXlmSjlmMDJNQVp0RXYvMlhBcTB2UElxMkNBVml0L3ByLzNjQnJTczhpclpJQldBMlhYNVV3QUh1clArMy9LMXgrVFo4QjJCdGU4NnN5Qm1DbHZOdXZDaG1BbGZDMFg1VXlBTXZwbDMvbkRUOGY4bEZORE1CU1hINVZ6Z0RzU2Y4MVhqdFArMTErMWNnQVBKSisrZDhObkZWNkZtbU9ETUR1K3RQK3Z3QmVXM29XYWM0TXdLNWNmalhHQU96azhxdEJCZ0IrZU0xL0tYQk82Vm1rQlRJQS9mSy9DM2hkNlZta0JXczdBTDd5cTNIdEJtQ1g1VDhiMytkWG05b01nTXN2QVMwR3dPV1hmcWl0QUxqODB2L1RUZ0M4MnkvOWlEWUMwQy8vMjRIelNzOGlqVWo5QWVpWC84K0I4MHZQSW8xTTNRRncrYVVsWFptWk0zL2lkWlFCY1BtbFpWMlltVytaOVNDakM0RFgvTkt5ZmdBY2xabmZtdlZBb3dwQXYvenZBTTdGdC9xa1IvSXc4THJNdkdxSWc0MG1BQzcvUW0wRk5nUDNBOThISGdKMkZKMUl5MGxnSS9EWG1YbmpVQWNkUlFCYy9ybDZHUGc2Y0FOd0kzQUw4QjkwaS85d1pycjREU3NlZ0lqWWgvKzc0ZWZ5RDJNNzhBVmdQZkJQd0oyWnViM3NTQnFqb2dIb2wvOFM0QTI0L0VONEVQZ0EzVGNpMytLcnU1WlRMQUQ5YWYvRndPOFZHYUF1RHdGL0QxeWNtYmVYSGtiVFVTUUEvZksvRGZqOWhmL3h1aVRkZGYyNW1mbkYwc05vZWhZZUFKZC9NRDhBM2d5OE16TWZLajJNcG1taEFYRDVCL09md0c5bTV2V2xCOUcwTFN3QS9RMi9QOE5yL2xuZERKeVdtWGVXSGtUVHQ1QUE3SEszLzRLNS83RzYvU3R3ZW1aK3QvUWdxc1BjQTlBdi84N1RmdC9xVzczUEFLZGs1b09sQjFFOTVob0FsMzh3RzRCZnpjejdTdytpdXN3dEFDNy9ZRFlCejg3TU8wb1BvdnJNSlFBdS8yQzJBaWRuNXFkS0Q2STZEUjZBZnZuZkN2d0JMditzTHM3TVB5bzloT28xYUFENjVYOEw4SWVESGJSZHQ5Q2QrbnZUVDNNeldBRDZoM3plREx3UlgvbG50UTA0S1RNL1hYb1ExVzNJQUx5UjdycmY1Wi9kMWNDTHN2Um50Vlc5UVFJUUVVY0Ezd1FlTS9QQnRCWDQ1Y3o4U3VsQlZMK2hBdkJid04vTlBvN292c0RqVkYvOXRRaERCZUFzNFBMWnh4RndndGYrV2hRRE1DNjNBVS8zNDcxYUZBTXdMcjd2cjRVeUFPTnlqTi9zbzBVeUFPUHhYOERQWnViM1N3K2lkaGlBOGJnbU0wOHJQWVRhWWdERzQ0OHo4NjJsaDFCYkRNQjRuSnFaMTVZZVFtMHhBT1B4MU15OHRmUVFhb3NCR0ljZHdDR1orVURwUWRRV0F6QU9Ed0NIK3c2QUZzMEFqTU4zZ0ovMkNVQXRtZ0VZaHp1QkoyZm0xdEtEcUMwR1lCdzhBMUFSQm1BY3ZnczgwWHNBV2pRRE1BNEpQQzR6N3lzOWlOcGlBTWJqNlpuNXRkSkRxQzBHWUR4ZW1KbFhseDVDYlRFQTQ3RXVNeThxUFlUYVlnREc0N3JNWEZ0NkNMWEZBSXpIM2NDUm1mbTkwb09vSFFaZ1hINGxNejliZWdpMXd3Q015NldaZVg3cElkUU9BekF1ZHdDLzRBTkJXaFFETUQ1K01ZZ1d4Z0NNejZlQkV6TnpSK2xCVkQ4RE1EN2JnT016ODRiU2c2aCtCbUNjUGdtc3pjenRwUWRSM1F6QU9PMmdlelQ0bXRLRHFHNEdZTHcyQXMveWV3STFUd1pnM0s3SXpOZVdIa0wxTWdEanRoMDRJek0vVW5vUTFja0FqTi85d0xIK1pvRG13UUJNdzBiZ3VNejhUdWxCVkJjRE1CMWZCcDZibVZ0S0Q2SjZHSUJwdVFsNFFXWnVLajJJNm1BQXB1ZGJkTThJZUU5QU16TUEwM1FQOEFyZzJoemlQNkNhWlFDbWF4dHdHZkNtelB6djBzTm9tZ3pBOUgwRE9BLzRsSjhnMU40eUFIWFlBWHdNV0FkczhMSkFLMlVBNnJJZHVBNzRTK0F6bmhGb09RYWdYaHVCOWNEVmRHY0Z4a0Evd2dEVUw0Rk53UFhBamNEWGdHOERtekx6d1pLRHFUd0QwS1p0L1QvZkEvNm4vOS9lTnhpMzdjQnR3SHVBZng3cVBvOEJrS1psQi9BbTRHMURSTUFBU05PekZUZ21NemZNZWlBRElFM1RSWm01YnRhREdBQnBtcTdLekROblBZZ0JrS2JKQUVnTk13QlN3d3lBMURBRElEWE1BRWdOTXdCU3d3eUExREFESURWc1ZBRjRFZkNobVE4a2FhVkdGWUJEZ0Z1QncyWSttS1NWR0U4QUFDTGlkT0Q5d0FHREhGRFNVc1lWQUlDSWVDWndMdkFNWU0xZ0IxWUphNEQ5Z1lQN2Y2OEI5aTA2a1hZMXZnQ29UaEZ4RVBBazRPZUFvNEJqZ0djRFB3NUV3ZEZhWmdCVVRrUThDamdXT0IzNGRlQ0paU2RxamdIUU9QUXhPQms0R3pnZXp3b1d3UUJvWENKaUg3ckxnNHVBNTJBSTVza0FhSno2RUt3RjNnSDhmT0Z4YW1VQU5HNFI4Vmk2czRHemdmMEtqMU1iQTZEeGk0Z0FUZ0xlQnh4ZWVKeWFHQUJOUjBROEdmZ0FjSFRwV1NwaEFEUXQvU1BqNjRFVFNzOVNBUU9nNlltSUE0Ri9wTHNzME9vWkFFMVRINEhyZ09OS3p6SmhCa0RURlJHUEJ6NUg5M2l4OXA0QjBMUkZ4RlBwZnJMOHgwclBNa0VHUU5NWEVTOEgzb3RQRGU0dEE2RHA2NThUdUFZNHBmUXNFMk1BVkllSU9CTFlRUGZ4WXEyTUFWQTlJbUlkOENlbDU1Z1FBNkI2Uk1SUDBIMnZwTjhyc0RJR1FIV0ppQXVCUHkwOXgwUVlBTlVsSW40UytDYncyTkt6VElBQlVIMGk0aCtBbDVTZVl3SU1nT29URVd1Qmo1V2VZd0lNZ09yVGY0bkl2d09QTHozTHlCa0ExU2tpUGdxY1ducU9rVE1BcWxORW5BZThxL1FjSTJjQVZLZUlPQmE0dnZRY0kyY0FWS2VJT0F6NE52N081RklNZ09vVUVZOEcvZzA0b3ZRc0kyWUFWSytJdUFtL1FIUXBCa0QxaW9oUEFzOHRQY2VJR1FEVkt5SStETHl3OUJ3alpnQlVyNGhZRDd5NDlCd2paZ0JVTDg4QWxtVUFWSytJK0FSd1l1azVSc3dBcUY0UmNUUHd6Tkp6akpnQlVKMGk0bEhBUm53T1lDa0dRSFhxbndTOEE5aS84Q2hqWmdCVUp6OExzQ0lHUUhXS2lOY0RsNWFlWStRTWdPb1VFVmNEcDVXZVkrUU1nT3JUZnlQUVJ1RFEwck9NbkFGUWZTTGlST0FUcGVlWUFBT2cra1RFM3dLL1hYcU9DVEFBcWt0RVBBRzREVGk0OUN3VFlBQlVsNGk0QUhoNzZUa213Z0NvSGhGeElOMXZBL3IwMzhvWUFOVWpJczRIM2xsNmpna3hBS3BEUkJ3S2ZCMTRRdWxaSnNRQXFBNFI4VGZBeTByUE1URUdRTk1YRWM4SHJnWDJMVDNMeEJnQVRWdi9jK0EzQVllWG5tV0NESUNtS3lMMkJ6NE9IRjk0bEtreUFKcW1pTmdYZUMvd3U2Vm5tVEFEb09tSmlIMkFTNEFMU3M4eWNRWkEwOUsvOGw4Q3ZLSDBMQlV3QUpxT2lEZ0FlQS93MHRLelZPS3l6RHhuMW9NWUFNMWRSUHdVOEg3ZzJOS3pWT1NWbWZtK1dROWlBRFEzRVJGMFArNXhPWEJZNFhGcWNqdHdkR1krTU91QkRJRG1JaUtPb0x2ZVB3TWY4aG5TSnVCNW1YbkxFQWN6QUJwVVJCd0NuQU84SGovWFA3UzdnQk16ODZ0REhkQUFhQkFSY1NUZDgveXZ3dS96bTRlNzZGNzVOd3g1VUFPZ1ZlbXY3dzhGbmdPOEJQZzE0SUNpUTlYckx1Q2t6UHpLMEFjMkFGcFMvK0RPZnNDamdTY0JUd09PQm80RGpnSWVVMjY2SnN4dCtXSGdBRVRFVStpdS80NmkreitOcG0wTjNlSWZCRHdPZjZwcjBlYTYvREJnQUNMaWVjQUhnUU1IT2FEVXRya3ZQd3dVZ0lnNENQZ0dmcXhUR3NKQ2xoK0dDOERwd0VkbUgwZHEzbHp1OXUvSlVBRTRpKzVwTDBtcmR6ZmQ4cy85bFg4bkF5Q053OTNBMnN5OGFaRi8xQUJJNVJWWmZqQUFVbW1iNlc3NDNWemlqeHNBcVp5aXl3OEdRQ3FsK1BLREFaQksyQXc4djhRMS8rNE1nTFJZbzFsK01BRFNJbTJoZTU5L0ZNc1BCa0JhbEh2b1h2bS9WSHFRWFJrQWFmN3VvWHVmLzR1bEI5bWRBWkRtYXpOdzhoaVhId3lBTkUralhuNHdBTks4alBhMGYxY0dRQnJlSkpZZkRJQTB0QzEwVC9pTjZtNy9uaGdBYVRqMzByM1ZkMlBwUVZiS0FFakR1SmZ1aHQvblN3K3lOd3lBTkx0SkxqOFlBR2xXOTlMZDhQdEM2VUZXd3dCSXE3ZUY3cFYva3NzUEJrQmFyY2t2UHhnQWFUVzJBS2RNOFpwL2R3WkEyanZWTEQ4WUFHbHYzRWQzMnYrNTBvTU14UUJJSzNNZjNTdi9EYVVIR1pJQmtKWlg1ZktEQVpDV1UrM3lnd0dRbGxMMThvTUJrUGFrK3VXSDRRSndKbkRGN09OSW85REU4c053QVRnQitKZlp4NUdLYTJiNVliZ0E3QTk4Q1hqYXpBZVR5cmtmZUVGbWZyYjBJSXN5U0FBQUl1SVhnWThDUHpQSUFhWEYyZ1Nja1puWGx4NWtrUVlMQUVCRUhBeThHSGdHc045Z0I1Ym1aeHR3SzdBK016ZVhIbWJSQmcyQXBHa3hBRkxERElEVU1BTWdOY3dBU0EwekFGTERESURVTUFNZ05jd0FTQTB6QUZMRERJRFVNQU1nTmN3QVNBMHpBRkxERElEVU1BTWdOY3dBU0EzN1gzRVE2V29IT3ZMVUFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xX1BSRSIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiI1NzIzNTY5NDUxYTU0YTRkYTgxYWY0MjE4NWRmNjUwMiIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsIm5vTWNHYVBlcm1pc3Npb25zV2l0aENsaWVudFBpbiI6ZmFsc2UsImNyZWRNZ210Ijp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWUsInNldE1pblBJTkxlbmd0aCI6ZmFsc2UsIm1ha2VDcmVkVXZOb3RScWQiOnRydWV9LCJtYXhNc2dTaXplIjoyMDQ4LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjE2LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjczLCJ0cmFuc3BvcnRzIjpbInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XSwibWluUElOTGVuZ3RoIjo0LCJmaXJtd2FyZVZlcnNpb24iOjEzMTA4MSwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjI1fX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDItMTMiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MTMxMDgxLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IlNIQUxPIEFVVEgiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI1MDIxMzAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTAyLTEzIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEzMTA4MX1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wMy0yNiJ9LHsiYWFndWlkIjoiMjQ2NzMxNDktNmM4Ni00MmU3LTk4ZDktNDMzZmI1YjczMjk2IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiIyNDY3MzE0OS02Yzg2LTQyZTctOThkOS00MzNmYjViNzMyOTYiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiWXViaUtleSA1IFNlcmllcyB3aXRoIExpZ2h0bmluZyJ9LCJkZXNjcmlwdGlvbiI6Ill1YmlLZXkgNSBTZXJpZXMgd2l0aCBMaWdodG5pbmciLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2LCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH0seyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbImVkMjU1MTlfZWRkc2Ffc2hhNTEyX3JhdyIsInNlY3AzODRyMV9lY2RzYV9zaGEzODRfcmF3Iiwic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlEU0RDQ0FqQ2dBd0lCQWdJVVVjbU1YelJJRk9nR1RLMFRiM2dFdVpZWmtCSXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFEbTU1NWJXWTlXVyt0T1kwcklXSGxkaCthTmFub0NaQ0ZoN0drM1laclFtUFV3MGhrU0c2cVlIUXRQK2ZaeVMzM1ZFcnZnK0JRcW5tdW1nTmhmeEZya3dFWkVMZWlkQmNDOEM0QWc0bnFxaVBXcHpzdkkxN05jeFlsSW5MTkxGY1pZLytnT2lONlpPVGloTzUvdkJaTWJqOXJpYUFjcWxpWW1OR0pQZ1RjTUdhRUF5TXpFTU55Mm5tNkVwK3BqUDVhRjZnaTIxdC9VUUZzdUoxajJSai95bk0vU2RSdCtlY2FsNU9Zb3R4SGtGYkw5dnZ2MkEyT3Y1SVRaQ2x3NGJPUzlucHlwUWltT1o1UUFZeXRtWWFRcFdsL3BNWXo2elNqOFJxa1ZETkVKR3FOZlRLQTJpdkxZd1g2bFN0dE1QYXBnMEo4NGw5WDB2b1ZOL0ZwUzRWQ1ZBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlFnS0ZBaEc2UmFXK2hUeTUyZHhlVDhiQzk2SHpBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBWU16Z0xySkxJcjBPb3ZRbkFaclJJR3VhYmlIU1VLU21iTFJXcFJrV2VBdHNDaERFSHBYY0ovYmdETktZV29IcVE4eFJVakI0Q3llcFlldmMzWWxyRzhvN3pIeHBmVmNhb0w1U2V1Smt6SHhLbjRiVGFTcDkrTXZ3YW1ucDY0a1pNaU5iRkxrbmZQOWtZS29SSGtNV2hlUkoxVXNQMXo0U2Nta0NlSUxmc01zNnZxb3ZxaldDbEZzSnBCY3NsdVlIV0Y3YkJKMW40UndnK0FURW9wWTRJZ0d2Nlp2d2MrQTlyK0FUMmhxcG9Ta1lvQWwrQU5Zd2dzbE9mOXNKZTBWK1RBOVlZL1VsYUJtUFBUZDAvL3I5d3ZjZVBXWmtQaktvQUMvelVOaGZEYmg0TFY4R0hzM2x5WDJYb21ML0xOYzhKWXp5SWFERWhHUXZlb1BoaC90cjFnPT0iLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVRuYmJHSVIyTkh2enFJS0ZBZVF3RzFYQmlzMHdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFRWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPc1hqM2swNEJhbjRUWWR0WktxRC9PUEp4eUR5YVBtQ0JVRlVpYVpJZ1R0ZVpuajNYMjVEaGdwWlpYc0M0RDB5ZEljcmxBNndOVUluT1JML0w5ekJiVEVJTUFWTUdvNmc3VUtBbWIyTUY2QUhibmhZSmQ5ZWlrdXBWTldTaEhOWU5jNEdCZE8xWU42QWZVcXZKaEhiZTNWNFNOTVBtQlJFS0pQVno3VGh3Z21nZ1RlOFdzMkswL3dzcXYyd1NFN3BiQ0JzVVpoSVg1MWJaTTNwcUR3SlBUbVJGRXZ0MC82dEc1ZU84RjNqMTRPWHFmRWhtam4xVnZ4S0RZUU9MWkF4Q3d3Z0MwUDRDZGZXdjN5OFBTUjhJMzU0aE8xWStHek5qdklxWDM4TktMeXd1SVlIRmVyT3hObHhFTUJ2RmhZQnVSdVlBa2tnVWFQcU42VUJoc0lMcnNDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNDb1JIaGl5Tm5iblhSV0lMNlpCWG9CWDlZVE1COEdBMVVkSXdRWU1CYUFGQ0FvVUNFYnBGcGI2RlBMblozRjVQeHNMM29mTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFDUUZhZkpJMS81V2c5Q0VFaW1FMVJQNTRSZ1F3VE5UT09Rc0xBQ1RlK3JJdGxGUXpDOVpEaHJWODI4eVg3anp5K0FBc3AzaXpLN1QxdGgyZGw3bSt0dTBzdzJQYS9vbGMwMm50NlB5SXczNDhnYUh6aEkxKzBLRTQ1cXh2RkRlTDJsTXhiUGZDWXZ5RUVhWXpqaVFFTFU1OTUxcFhHV3lLTWEvNGZMdE8rWktPWGhNdVZlcTRyWERQSTU0VzZKSE9pQWFpS2Rpdys1ZTNjMmt0L2pGSVF0TTZ2TVhnOUxORnpkakVUTnQyMFZYOVFldlJwRlpmdWNNRzl3Q2FRRG9GbFB6cFRNSktoUGV2L2ltSm1aWWhLZnIwbExjZW10cWpJeExBb3FaZE9ZZkhCZzYrdkFjZFBJL2lhdUdwVUF2N1grVUtObUR3aloyQmFINHNMd2hCMm0iLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVIzOG1xMjZTZjJzelZWMkJkRzZXRU43a3VXVXdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFSWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFOWTBXYjlvUG9Sb0tvUXlXUGFKcHoxMXZyV1RnNnpUdG1OajJWb0tSbnl2S0dScXB6YjgzdzVsNllBOTZVWWtZQkRRUDBpbE8yRFBlNndXcVZSNXpEZlJ6ZGNIOGJoK0w3ZEdHdmFlNmhSVFpoa0ZrQ3BYRHM0SGNja25yRGY4RkNsSjdIZTM5SmY0Mi9HMVFtMnp6OVdXbXJQWHRnaUsveDA1R2pzUWZHdURHMXpmNVFUVVVpZThsd3ltSzNUZmRPdk5lZUpBQVBlMnBuN0l0ZlJiK3JWck5XaUR6bFJuMnZObloyd1BvNHdIL1dKNmRoWFpHK3JNV1QrYTZCb2NnMVVmSXc2a2R1bkc0YlRwWnpzdmFjRll5UjBtcGYrRGVPbnBTV0FteXdKV0h2VGxmMllYeEZ5ZVhjVEFDZFFsY01OR0oyVmhaUTQ4eHRQNS9SQlAvOGtDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNoeTQyb2tpcWNUUzFpcWEvSFJXamtCbjRIL01COEdBMVVkSXdRWU1CYUFGT3EzUXBDZURIdGtldHRVZkFPNmZFNmYyS0ZoTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBbitSSElQYnRNRUROZFQxZzhIL1JpdEFrVWRMZ0F0MXRXR1dubGo5a25idjQvNEdsWDdDOXA0NWVmUE85L2FaTDZPVjFYUktCaTZLbXRCVzVLN251WUVuTXgvNUJxQlNiTFQ3cmhkdUM0OVRCZU1iOVBIZFhzVGxTVk5ZZWZyMWRHaWRyNGoweFZCUUxiMXJrbkRBYmRXRHpLZnZuYXlLTzhGcndlN0h4ODQzTUcvckorYzBYcnVVdmJmVlRDSExpSVdoTTdvTkRoTDh4b2I2eFVvOUtMS2NTTCtJdFlzTzMvOVdiOFE5R2pzcUw0RlhzRGNHMVNhWWg3S3BmdU1tT2l4cXpKWk8ybklpY1BZUmcxSTJTdWlVZllPNzB0bWRIY2JsK2tTUW1TWXQ3cnE0dmlJTGcyR3gzajlySVR1V1RqYmFVYVNTUXhnT21NU0h1eXpNQUMiLCJNSUlEUGpDQ0FpYWdBd0lCQWdJVVh6ZWlFREpFT1R0MTRGNW4wbzZaZi9iQndpVXdEUVlKS29aSWh2Y05BUUVOQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU1aNi9UeE04cklUK0Vhb1B2Rzgxb250TU9vLzJtUTJSQndKSFMwUVpjeFZhTlh2bDEyTFVoQlo1TG1pQlNjSVpkMVJueDFvZDU4NWgrL2RoSzdoRW03SkFBTGtLS3RzMWZPNTNLR05MWnVqejVoM3dHbmNyNGh5S0YwRzc0Yi9VM0s5aEU1bUdORDZ6cVljaENSQUhmcllNWVJERjRZTDBYNEQ1bkdkeHZwcEF5Nm5rRW10V21NbndPM2kwVEF1Y3NyYkU0ODVIdkdNNHIwVnBnVmRKcHZnUWppVEpDVElxK0QzNWh3dFQ4UURJdituR3ZwY3lpNXdjSWZDa3p5Q2ltSnVraFl5NktvcU5NS1FFZHBOaVNPdld5RE1UTXQxYndDdkV6cHc5MXUrbXNVdDRyajBlZm5POXMwWk93ZHdNUkRuSDR4Z1VsNVpMd3JyUGtmQzEvMENBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUI4R0ExVWRJd1FZTUJhQUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUU13RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCRFFVQUE0SUJBUUMzSVcvc2dCOXBaOGFwSk5qeHVHb1grRmtJTGtzMHdNTnJkWEwvY29VdnNyaHpzdmw2bWVQTXJiR0pCeUoxWG5xdUI1c2djUkVORnhkUUZtYTNtaW84VXBmMW93TTFacmVYckowbUFERzJCcGxxYkpueGl5WWErUjExcmVJRlRXZUloTU5jWktzRFpyRkF5UHVGakNXU1F2Sm1OV2U5bUZSWUZnTmhYSktrWEliNUgxWGdFRGx3aWVkWVJNN1ZvbEJObGxkNnBSRktsWDh1c3Q2T1RNT2VBRGwyeE5GMG0xTFRoU2RldVh2RHlDMWc5K0lMZnozUzZPSVlnYzNpcm9SY0ZEMzU0ZzdyS2Z1NjdxRkF3OWdDNHlpMHhCVFByWTk1cmg0L0hxYVVZQ0EvTDhsZFJrNkg3WGszNUQrV1ZwbXEyU2gveFQ1SGlGdWhmNHdKYjBiSyIsIk1JSURTRENDQWpDZ0F3SUJBZ0lVRHFFUncrNFJuR1NnZ3hnVWV3SkZFUERSWjNZd0RRWUpLb1pJaHZjTkFRRUxCUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURJN1huSCtadkR3TUNRVThNOFplVjVxc2N1Ymx2VllhYVJ0M1liYXhuOWdvZEx4NXN3SDBsWHJkZ2poNWg3RnBWZ0NnWVlYN0U0YmwxdmJ6VUxlbXJNV1Q4TjNXTUdVZThRQUpiQmVpb1Y3Vy9FK2hUWlAvMFNLSlZhM2V3S0JvNlVMZU1uZlFaRHJWT1JBazh3VExxMnY1TGxqNXZNajdKdE9vdEthOUo3bkhTOGtMbXpYWFNhajBTd0VQaDVPQVpVVE5WNHpzMWJ2b1RBUVFXckw0L0o5UXVLdDZXQ0ZFNW5VTmlSUWNFYlZGOG1scUsyYngyejZva1ZsdHlEVkxDeFlicFVURUx2WTF1c1IzRFRHUFVvSUNsT200Y3Jwd25EUkxWSHZqWWVQR0JCLy9wRXl6eEEvZ2NTY3hqd2FIMVpVdzliblNiSHl1cktxYlRhMUt2akFnTUJBQUdqWmpCa01CMEdBMVVkRGdRV0JCVHF0MEtRbmd4N1pIcmJWSHdEdW54T245aWhZVEFmQmdOVkhTTUVHREFXZ0JUUzd1OWFJbzA2YlZ3amx6M3loZFVtOFNWN2tqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQTRHQTFVZER3RUIvd1FFQXdJQmhqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFxUWFDV014VEdxVlZYN1NrN2trSm1VdWVUU1lLdVU2K0tCQlNnd0lSbmx3OUs3SGUxSXB4WjBoZHdwUE5pa0tqbWN5RmdGUHpoSW13SEpneHh1VDkwUHczdllPZGNKSk5rdERnMzVQWE9melNuMTVjRkF4MVJPMG1QVG1JYjhkWGlFV09wem9YdmR3WERNNDFaYUNEWU1UN3c0SVF0TXl2RTd4VUJacTJianRBbnEvTkRVQTdiZTRIOEgzaXBDKy8rTktsVXJjVWgrajQ4SzY3V0kwdTFtNkZlUXVlQkE3bjA2ajgyNXJxRHFzYUxzOVRiN0tBSEF3OFBtcldhTlBHMmtqS2VyeFBFZmVjaXZsRmF3cDJSV1p2eHJWdG4zVFYyU0J4eUNKQ2tYc05EMDVkQ0VyVkhTSklzK0JkdFRWTlk5QXd0eVBtbnliMHY0bVNUenZXZHc9PSIsIk1JSURSekNDQWpHZ0F3SUJBZ0lVZXg5blQ5dndaTlhTNDgzTGRpWUdmdzJTalNvd0N3WUpLb1pJaHZjTkFRRUxNQzR4TERBcUJnTlZCQU1NSTFsMVltbGpieUJCZEhSbGMzUmhkR2x2YmlCSmJuUmxjbTFsWkdsaGRHVWdRaUF4TUNBWERUSTFNRGd3TVRBd01EQXdNRm9ZRHprNU9Ua3hNak14TWpNMU9UVTVXakFuTVNVd0l3WURWUVFEREJ4WmRXSnBZMjhnUmtsRVR5QkJkSFJsYzNSaGRHbHZiaUJDTWlBeE1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBdTFNZXZueTlkeU85WlVDMzlTb01oTGNSL0RYcnRGL2NpTTEydGNpeTJFWEFaNk1rcml2VnRDZkVWTTlYNklTVEVuQlA2dVNZWW92NnBwdjZPNkpoMk5IbVltNHcrSm5TNFZuQ1BVN21IQU1mVkkyTUdUVE1WT2V3MHhVc0c3c0lTSWtJRFVCbXVrOFlLOWM1emljOSt2RlFHTElrc2RYTzVpVkZJZ05HNTNjR1hENFpMWm9BUGl1MFBFb3p4QXFZSWFJNGd4S2hPQTNTOC9XOG1JV3N1Nm9meWo0R3ZrRkc2WjdreUYzMTA3UDdtd0ZITHJJM0VOYVBXTU9GY1RhR2EwZHcrL3ZWUndqUmNFWkJWc3V1VC84N2NrU3MwYTVwa3QzdlpCbGFZZVQ4cHpTcmVWN21vd2NJTTkwTDJpYUFUbFAwbnhtYUU2bk95VGJvakZWbDJ3SURBUUFCbzJZd1pEQWRCZ05WSFE0RUZnUVVTWEVoM3NhM2J0RHVybTRNTS9DN1MxbFJ1dVl3SHdZRFZSMGpCQmd3Rm9BVTZyZENrSjRNZTJSNjIxUjhBN3A4VHAvWW9XRXdFZ1lEVlIwVEFRSC9CQWd3QmdFQi93SUJBREFPQmdOVkhROEJBZjhFQkFNQ0FZWXdDd1lKS29aSWh2Y05BUUVMQTRJQkFRQjVHYzNoYWZ0cDdoS3NFWnNvK2kvWjVuUnVxZG16RzJXQ2xVb1JVcWJhUHlnbG5KRGpLUi9rZmdPbDZpYmJGL3p0aG0zS21YUTdIY0RJUDJ4TWRHN1UyTDJpbWJKUUhxUGYvaDJIcW9qYjRyWmd1ZSs2VzRrdFNSNWVsUjlMMXJZcUUvU0dZTTRpRUtvVlFTdjdSVDFyeEllV2lLc3cvVnh4aS9RT25zeDNGN3g4MENDWWdCNEUzeVF4OFZUVzQ0MGhURXdUQTFlTUhPaXgzMnRQdHl5SElhOFBWVklmVnBIUUpCYU1WdnY1MDhVRWp3a2JVMnJuamZ6b1NUTlM5QTVqVVE4bUJTdmU5NXJqQjBkbzk4RVUrRHhkQnFYMitINmk1d2xJQ0ZnemhkemNzbmU5aEdLVDZselRYNGNJZEpzclkyK3hsZUswRkZReTZsR0VWTEVlIl0sImljb24iOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJpY29uRGFyayI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsInByb3ZpZGVyTG9nb0xpZ2h0IjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwicHJvdmlkZXJMb2dvRGFyayI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzFfUFJFIiwiRklET18yXzEiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwibGFyZ2VCbG9iS2V5IiwiY3JlZEJsb2IiLCJtaW5QaW5MZW5ndGgiXSwiYWFndWlkIjoiMjQ2NzMxNDk2Yzg2NDJlNzk4ZDk0MzNmYjViNzMyOTYiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJsYXJnZUJsb2JzIjp0cnVlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6dHJ1ZSwiYWx3YXlzVXYiOmZhbHNlfSwibWF4TXNnU2l6ZSI6MTUzNiwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0Ijo4LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjEyOCwidHJhbnNwb3J0cyI6WyJ1c2IiLCJsaWdodG5pbmciXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotOH0seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTM1fV0sIm1heFNlcmlhbGl6ZWRMYXJnZUJsb2JBcnJheSI6NDA5NiwibWluUElOTGVuZ3RoIjo0LCJmaXJtd2FyZVZlcnNpb24iOjMyOTQ3NiwibWF4Q3JlZEJsb2JMZW5ndGgiOjMyLCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6MSwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjEwMH19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTEyLTIyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZdWJpS2V5IDUgU2VyaWVzIHdpdGggTGlnaHRuaW5nIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNDEyMjIwMDciLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMi0yMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzZ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDEtMTAifSx7ImFhZ3VpZCI6IjM1N2YyNzE4LTQzNGYtNDEyNC04YTU4LTdlMjhjNWU0YTJmYyIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiMzU3ZjI3MTgtNDM0Zi00MTI0LThhNTgtN2UyOGM1ZTRhMmZjIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkRlZXBuZXQgU2FmZUtleS9DbGFzc2ljIChORkMpIn0sImRlc2NyaXB0aW9uIjoiRGVlcG5ldCBTYWZlS2V5L0NsYXNzaWMgKE5GQykiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9LHsibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDblRDQ0FrU2dBd0lCQWdJSVhnZkZSUTlXcXlFd0NnWUlLb1pJemowRUF3SXdnYW94S2pBb0Jna3Foa2lHOXcwQkNRRVdHM04xY0hCdmNuUkFaR1ZsY0c1bGRITmxZM1Z5YVhSNUxtTnZiVEVOTUFzR0ExVUVDd3dFUmtsRVR6RVpNQmNHQTFVRUNnd1FSR1ZsY0c1bGRDQlRaV04xY21sMGVURVFNQTRHQTFVRUJ3d0hSVzVuYkdsemFERVFNQTRHQTFVRUNBd0hSVzVuYkdGdVpERWhNQjhHQTFVRUF3d1labWxrYnk1a1pXVndibVYwYzJWamRYSnBkSGt1WTI5dE1Rc3dDUVlEVlFRR0V3SkhRakFnRncweU5qQXpNalV4TWpJM016SmFHQTh5TURjMk1ETXlOVEV5TWpjek1sb3dnYW94S2pBb0Jna3Foa2lHOXcwQkNRRVdHM04xY0hCdmNuUkFaR1ZsY0c1bGRITmxZM1Z5YVhSNUxtTnZiVEVOTUFzR0ExVUVDd3dFUmtsRVR6RVpNQmNHQTFVRUNnd1FSR1ZsY0c1bGRDQlRaV04xY21sMGVURVFNQTRHQTFVRUJ3d0hSVzVuYkdsemFERVFNQTRHQTFVRUNBd0hSVzVuYkdGdVpERWhNQjhHQTFVRUF3d1labWxrYnk1a1pXVndibVYwYzJWamRYSnBkSGt1WTI5dE1Rc3dDUVlEVlFRR0V3SkhRakJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCQUpLR216RW55aS9iYWdodDEvSTNyQXZVYzllcmhRRjdTckdST2xHT2NIS1hLb2s4bmNRdnFsTWswdnkwbmp6YWpzUmgrZURMdkh5ZXBreFNxeVJVVDJqVURCT01CMEdBMVVkRGdRV0JCVDY2SmJiY3JPemk1RnBjKytHaWdhenBiWTFEREFmQmdOVkhTTUVHREFXZ0JUNjZKYmJjck96aTVGcGMrK0dpZ2F6cGJZMUREQU1CZ05WSFJNRUJUQURBUUgvTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUQwRnBaOEZ4RWIwdCs0YUpPVUpMYnhUbG9TMnNKTitFcVUyV1RXVm5pZnJBaUFFZCsxazgzVE1jQXpwOGhOVWFHT3NJM2c1NFdvL1d2UlNML0F2dklrMTVnPT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBTWdBQUFCR0NBTUFBQUMrUENzRUFBQUFqVkJNVkVWSGNFd3lRVTR5UVU0eVFVNWNPRVV5UVU0eVFVNDhQMHd5UVU2VEtqa3lRVTR5UVU0eVFVNHlRVTR5UVU0eVFVNHlRVTR5UVU0eVFVNHlRVTR5UVU0eVFVNHlRVTYvSGk2L0hpNHlRVTR5UVU0eVFVNHlRVTR5UVU3QUhpNi9IaTYvSGk2L0hpNi9IaTR5UVU3QUhpNi9IaTYvSGk2L0hpNi9IaTYvSGk2L0hpNi9IaTYvSGk0eVFVNi9IaTVqdzRSN0FBQUFMWFJTVGxNQXUvUVNCZG5xQ2hvQzRmekFRZmxNSnROZ01uNVdveXVqeW9xVmJiVStIdGdSN0t5dm1ZdHRWOGg3U2J5TFpuUnlBQUFJbkVsRVFWUm8zdTFhaDI3ak9CQ1YxYW5lcldwYmtWdHNLLy8vZWNjbWlsUnhBaHpPR3k5dXNNQTZvamljeCtta0pPbnRLSFlza2NJcWx0NlJRR3IxdmMzOTYvdlFmMHNra3F2MUV3cUQ5OVJKdkFrNWtpR1M2ajFWSWhrS1I2bmU5NXIwRjVCUjlMMzhOd0FKb012b2J5bTU2VWM4TmRCSG1uZkU0WWVlelJHS1duTDZoaUhMREtmQnQvZEs5UjBWSXRzaWVWcHR2S1Z2UTdkSWVmTGZNeHRLOStNeDMvME4wZmI2OWZXVmIzbmFxMjhKWlBzQmtYendkRGh0MzdMU09uL042UE10a2V6ek9aTFRESzZMY21VYS8ycXJhKy9ubktNanRMV1A2VHRxMDZQUXJDZS9FQW5nZjNQVVBxQktGb0JnMG45aDl4Z2xzVExCOEQwUTd4YzJqMVd2TzRrcFhmSUpIU0dPd3d4SUZZYmVyd1VDNVhLbEJWZi8ranJQM2xZVWMvT0xnY2pMUUk3N3BRblo3d1p5K3BqUzRieUk0N2NEMlcrbjFBTHBIWUU4ajh2UU9VelRWTUFhRUFNTkwxYjlBRTlVVjQ4N25nelN1WXY3dWNCMUZRZy96YThjemJLS0xGSVdnQ2grdVFrdFM5dVVyakZyRHJJQ1RlenFvU2xRb2hwU0d1RHpwNlNCODhJbWlhbXdhb29HSS9LbmllZHFSWllxYzY1SW5IRGthc0NKRHBLcndnek1sWTN4SFk4MmpYYVJnZ2tRSTNMa29hZVVPeUZSQnFYRjJrMHJJZUlFT3VZVHhwSlo2Z05YdlNSTEs2Uk4xU09JS1Nyc29WUGRDRnpOUkxNWlZ6clJGQTRYVi9SaUpETDNrbDRMUUlDWmVUd1BLK1ZQQVlUT3VRbEdJSDFmQmh0KzBJazVJSDJoS0NXL3FNWWhjUXVCNnliNEtSQTFvWkxTRXdsZDQ0RlFjVHhMMDRpRU90TlZSQjdJbXFZUm9UWW1CNlJyS0ZPNmVCRndRTFNnRW84UEdtYXpQbEd5YkExY25lQ0hRQ0x5ZmxpbWZsb043dzlBbElaWVZCb29TbHhyM0lFeGNIV2llOWRVVERmRFROQmhocGsxV0ZvZElwQ2JKRTJURFZtZ2c3SWFWWU1OU3NPYlozVmxVaEtybG9mdGNTMk9hNFZuVnBDclVTY0pZbXRuQ2FLbExwMmNyc2pVRm9QTUZvQWt4S1RwZnNWWTZ5V1poMzhQMXEzV2FFMGQ3WlNxeHRSekN0OGdqb28zd0l2d0lKNG53MDNReXdCRkphVW0wdEtOYy9CRXloVmdwUThnczZkUkM5UjRFVmEyS3hrUEJJc2tSNlA5SXNaV3dDQVdiR3ZVY2hTSDJzRTRTTGJad2RIQW9LNWorWHhZN1IyeVY3VXRYQklBdkVxR2hRUFBnU2g0WTdNeHJBWWhCNlFjK1JCeEVUTTdHaFFwYzBFNlFNSnE1Z2lFSDR3OEpnUUZNcnFhNU1wc0pwYkdTOFZ6WGJwejN3QnhtVWtNVkk5QU1GOWhNTExwdnFlZTRLSzBBU0RyWUNCMng2VXpZakVKQnlUaGpIc1UxcGVaNXFoS01vYnNHeUJZZHhzK3orR3RKVUF3eXNJMFJzSlBrQmxnZTBpNEVRTS9xVWNnNld5WlJtVkF0R0JpRktTVHc2K1ZQTmVTb2Y0R1NEZlpIcm9TQVJKaEkzQTRLcEFpUW9XS0UvSkRGdU9FZ2VqQlRQR2h3b0R3TjB5R013QlJzVFFheDNTRHVOclZENEE0ZzlGUEdoaWZiZENjTklVbGhDbVZERWdvMUIxWXpkaDhDSkJvRVloUkxIUDlDWkJpWGlFbTdGRzFDc1RVdmdQaUdMTWdyek1ndkR5QUFRRnIyL05qSU80eklOcG1TcFZCM2FDWURhVS9BeUtjYll3YXdXOHRjSTErQ0VUMFN4eHpDWkNTcEd0alF1b1FmZDJsSVFxa0VFeHJqRXd6SUtOR2lOdkwvakxYYjRBMExOYUlFYzlua2JoYmFpZnc0dmJLUFJFWFR3ZUs5U0ZYUE5NSU9jT0pWbEwzY3lBazVmRzlEVFpVTHZ4YXdWcTd0bmE3Yldveng4UDVCMGY1WnhxWkpXQ2h1SDNldWVLY3kwZDFrcFRJQkZLSDFZdno3RldNTkJKVVV5RklKSGltRWNuMzFnOEhRVFlQc05La0J1QVRDVm1UTDFHMFlLRkRwc0txNjBBc3ZzZlFHYytuR2lFN2x4bnJ4clA2aVFPUjIzSW5WZjFRTk9KU3ZlRTdTemN4eGx3dDF4d1NvL1o1SUgzSDNCMGZsVkgzZjZvUmFWTENZcTZESjBZVFNaZUtyVDZrNHlydGxxZ2ZnNUwwTnE3SzJsQ0xWajZrakIvS2Z6alQ3ZXhDNkV2dGlpSUpjTUsyYStsYmpVZ21Mc3E4YWpBQ05jNjhvUmdtdTFxNEsyY1pLc2w2T214bHpNQkhEUkx1ZEp3a2lWbGoxZXRaR3FEaE1zVEZGL0VsQWpsTTNFQXg0NmhEZnlaQTZFdWRDUGRqSk0wMWl2UkVJM2FYSkNhcitHSG5SYmhtT3UzWG1QSDBlcGZVaXk0ZjBMcEExa0lMKzFwSHhVQitCUUtIdG94NlNJWkhoNlBLZzExcHFPbWtId3ZITWw3SFZaSlZoTHJZbHE5b0JMMk1yU0tkY3gyY05HYmxSTGVvazFpb2NPUW80b0FndTdERmVrRlBCdHRQcDNWSzRZOGFDV3RMK0tMS2xWYUFqRGNBN3RLUkJweWFxbUkvdndZRTlyZmppWVlXMFVER0VwTlNoeHdVdVhQSHBCTlVPbi9Ba3BpY3MydW1YM0N6QXNHUVpDSEMxaDZua1JuWGNneWFJTzdrWjBBa3c4OHMyYk05dmNCdHZWczFpSmdobWxHbndXRmIxZ3Z4aUE2b2Nlbm9zbTE3c3RYVXdYQjJTWUhBeUZEb2tLdXNaZjQ0eXlnM1RkTUpFZDJJTXJRZWV3aml4TUh5RUs3Q3EyN1NGV0ZZcm5idXF1bW1xUjhQUnFNaUFtUG1NTXpZUjU4WUtBdTljZ0JucG01Z1RQSUlya2NVTk0wMVZYRXRTTFAxeFlmQW1ITmxscWdvaXZHekM3ckY4ZTlla0phQXZPQTI4YitrL3h5STlEK1Fmd0dFMlNRQXZOK3g1K1QvOFMzT05lbUlDZ0I5T25uM2xVRDJ0enkva0w3b2RzenovRTRkRmwzNWt3dXo3UW45ZHo5ai8xVXZwOVBwUWk3Uzl1UUxrLzBweitITUcyS3lRKytxdDh2cmZhUTludTczS3dhaUh2UGRia2RrYk0rUEMzemVvdCs3QTVMMzhvbi9NQjZuN2YyUlkxRDdBLzZZcWQzdGJvZnJib3VFYng5bklOMFB1OWRyWkRzdXFoN0hLK1FiOXhITUJNZ05hdWV3NTRCQXVoNWFHcWgyaDEzN3VMemVSMEI3UE43YkFjaHB1OTNpdlc0L2I5STZFT04yUkwrQkNJUzZ6VGtubzYvV0NOamZIbzg3SUVBT3gyTk96UDV3WFFYeWVYNDhpTHFXZ0VqN3o4UHVqMFF0QU5vYmxoU1psdEdTaStUMnNLNlIwKzd5aVVWZDFJZ2tuWS9xSHdxL1VPenJ4RWZBK1hPODRTZnFPZVdBK1VoK0Fxc2FnVURBaTRIZ00vWHQ1YjZqVXZOUmEzOThYSFk3SExXQWV2NjhiNmtXTUJCd0pjNis1WURzL3h3UWNwV0Ywc2labUR6Skk5UTUyaXZNRGpleXp5M01IV2NxczNxK2NnbGtDRzI3MDZpUjYrMmxRTHh5cktPWEsxeVVxOGRzTHVSN01DUndNQzlZdWNUL0NpQk45SjRmc003NnRPRDFhLzREc2dXOUdWb0RRb0lBQUFBQVNVVk9SSzVDWUlJPSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzEiLCJGSURPXzJfMV9QUkUiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkQmxvYiIsImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJsYXJnZUJsb2JLZXkiLCJtaW5QaW5MZW5ndGgiXSwiYWFndWlkIjoiMzU3ZjI3MTg0MzRmNDEyNDhhNTg3ZTI4YzVlNGEyZmMiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJsYXJnZUJsb2JzIjp0cnVlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6dHJ1ZSwiYWx3YXlzVXYiOmZhbHNlfSwibWF4TXNnU2l6ZSI6MjA0OCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0Ijo2LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjk2LCJ0cmFuc3BvcnRzIjpbIm5mYyIsInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5IjoxMDI0LCJtaW5QSU5MZW5ndGgiOjQsIm1heENyZWRCbG9iTGVuZ3RoIjozMiwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjMsInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjoxMjh9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiTk9UX0ZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjYtMDMtMjUifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI2LTAzLTI1In0seyJhYWd1aWQiOiI0MmRmMTdkZS0wNmJhLTQxNzctYTJiYi02NzAxYmUxMzgwZDYiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjQyZGYxN2RlLTA2YmEtNDE3Ny1hMmJiLTY3MDFiZTEzODBkNiIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJGZWl0aWFuIEJpb1Bhc3MgRklETzIgUGx1cyBBdXRoZW50aWNhdG9yIn0sImRlc2NyaXB0aW9uIjoiRmVpdGlhbiBCaW9QYXNzIEZJRE8yIFBsdXMgQXV0aGVudGljYXRvciIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX0seyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQjJUQ0NBWDZnQXdJQkFnSVFGUU5LVys3emJnLzdkK2xUeXJJV3dEQUtCZ2dxaGtqT1BRUURBakJMTVFzd0NRWURWUVFHRXdKVlV6RWRNQnNHQTFVRUNnd1VSbVZwZEdsaGJpQlVaV05vYm05c2IyZHBaWE14SFRBYkJnTlZCQU1NRkVabGFYUnBZVzRnUmtsRVR5QlNiMjkwSUVOQk1DQVhEVEl5TURZd09EQXdNREF3TUZvWUR6SXdOVEl3TmpBM01qTTFPVFU1V2pCTE1Rc3dDUVlEVlFRR0V3SlZVekVkTUJzR0ExVUVDZ3dVUm1WcGRHbGhiaUJVWldOb2JtOXNiMmRwWlhNeEhUQWJCZ05WQkFNTUZFWmxhWFJwWVc0Z1JrbEVUeUJTYjI5MElFTkJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVzRllFRWhpSnVxcW5NZ1FqU2lpdkJqVjdER0NUZjRYQkJIL0I3dXZac0t4WFNoRjBMOHVESVNXVXZjRXhpeFJzNmdCM29sZFNyam94Nkw4VDk0Tk96cU5DTUVBd0hRWURWUjBPQkJZRUZFdTloeVlSclJ5Snp3Ull2bkRTQ0l4ckZpTzNNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdEZ1lEVlIwUEFRSC9CQVFEQWdFR01Bb0dDQ3FHU000OUJBTUNBMGtBTUVZQ0lRQ0IwTkZRU04wejRsV3oveWMzNmV3clRDenR0Sy9xRnZsYVBPS2grVDFvNndJaEFQMG9LS0ErY2ljc0R5M1kzbitWbFA4ZUIzUEJ6TWtodlcvOUlTWEN3K1ZCIiwiTUlJQjJEQ0NBWCtnQXdJQkFnSVJBTXM4WVhWQm9CTnVYVWpxZkNvWDd5NHdDZ1lJS29aSXpqMEVBd0l3U3pFTE1Ba0dBMVVFQmhNQ1ZWTXhIVEFiQmdOVkJBb01GRVpsYVhScFlXNGdWR1ZqYUc1dmJHOW5hV1Z6TVIwd0d3WURWUVFEREJSR1pXbDBhV0Z1SUVaSlJFOGdSVUVnVW05dmREQWdGdzB5TXpBeE1ERXdNREF3TURCYUdBOHlNRFV5TVRJek1USXpOVGsxT1Zvd1N6RUxNQWtHQTFVRUJoTUNWVk14SFRBYkJnTlZCQW9NRkVabGFYUnBZVzRnVkdWamFHNXZiRzluYVdWek1SMHdHd1lEVlFRRERCUkdaV2wwYVdGdUlFWkpSRThnUlVFZ1VtOXZkREJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCRDJMSEhBUXFZYmRSMVdabHVlcnRNMzByV2hvcllhdldtTVZhNG5kWDlQWnd1UkVwTFE0bTFuRWxxUUtNblJFOC80QytScXdpYXYrbXBJNGt4ZDVlNXVqUWpCQU1CMEdBMVVkRGdRV0JCUzNaWmp5R2xoWjk5TjF2TG9UUFhWVWE0WkVZREFQQmdOVkhSTUJBZjhFQlRBREFRSC9NQTRHQTFVZER3RUIvd1FFQXdJQkJqQUtCZ2dxaGtqT1BRUURBZ05IQURCRUFpQW9EK1I2a29sSVdhTkp6NGh6MDNEM2dlczNHYk1CakFXcGtPVWc5YXlGZ3dJZ2JFdzdBWVN5azY4T3Z4Z1hlemduZFRSVEV1U1dUK2ZkUm5MYUJOc2FUdzA9IiwiTUlJQjJEQ0NBWDZnQXdJQkFnSVFCVG1rM1p3aWxGWGpzWnl3SERuTWdEQUtCZ2dxaGtqT1BRUURBakJMTVFzd0NRWURWUVFHRXdKRFRqRWRNQnNHQTFVRUNnd1VSbVZwZEdsaGJpQlVaV05vYm05c2IyZHBaWE14SFRBYkJnTlZCQU1NRkVabGFYUnBZVzRnUmtsRVR5QlNiMjkwSUVOQk1DQVhEVEl5TURZd09EQXdNREF3TUZvWUR6SXdOVEl3TmpBM01qTTFPVFU1V2pCTE1Rc3dDUVlEVlFRR0V3SkRUakVkTUJzR0ExVUVDZ3dVUm1WcGRHbGhiaUJVWldOb2JtOXNiMmRwWlhNeEhUQWJCZ05WQkFNTUZFWmxhWFJwWVc0Z1JrbEVUeUJTYjI5MElFTkJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVuZkFLYmp2TVgxRXkxYjZrK1dRUWROVk10OUpnR1d5SjNQdk00QlNLNVhxVGZvKyswb0FqLzR0bnd5SUwwSEZCUjlTdCtrdGpxU1hEZmppWEF1cnM4Nk5DTUVBd0hRWURWUjBPQkJZRUZOR2htRTJCZjhPNWEvWUhaNzFRRXY2UVJmRlVNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdEZ1lEVlIwUEFRSC9CQVFEQWdFR01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lCeVJ6NE9BbFJaOUh6OUtWN2cyUU50QzBDOEp4SC94TEpZOEZaRW10SjNzQWlFQXNyZVQwK2VOa05jVWpJOWg1T1BDb0g2Tm1zT2tndkVBQkpackYwN0FEa1k9Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUZBQUFBQVVDQU1BQUFBdEJrcmxBQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQkhacFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR3L2VIQmhZMnRsZENCaVpXZHBiajBpNzd1L0lpQnBaRDBpVnpWTk1FMXdRMlZvYVVoNmNtVlRlazVVWTNwcll6bGtJajgrSUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWtGa2IySmxJRmhOVUNCRGIzSmxJRFV1Tmkxak1ERTBJRGM1TGpFMU5qYzVOeXdnTWpBeE5DOHdPQzh5TUMwd09UbzFNem93TWlBZ0lDQWdJQ0FnSWo0Z1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNGdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlnZUcxc2JuTTZlRzF3UFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIaHRiRzV6T25Cb2IzUnZjMmh2Y0QwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOXdhRzkwYjNOb2IzQXZNUzR3THlJZ2VHMXNibk02ZUcxd1RVMDlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl0YlM4aUlIaHRiRzV6T25OMFVtVm1QU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2YzFSNWNHVXZVbVZ6YjNWeVkyVlNaV1lqSWlCNGJYQTZRM0psWVhSdmNsUnZiMnc5SWtGa2IySmxJRkJvYjNSdmMyaHZjQ0JEUXlBeU1ERTBJQ2hOWVdOcGJuUnZjMmdwSWlCNGJYQTZRM0psWVhSbFJHRjBaVDBpTWpBeE5pMHhNaTB6TUZReE5Eb3pNem93T0Nzd09Eb3dNQ0lnZUcxd09rMXZaR2xtZVVSaGRHVTlJakl3TVRZdE1USXRNekJVTURjNk16RTZOVGtyTURnNk1EQWlJSGh0Y0RwTlpYUmhaR0YwWVVSaGRHVTlJakl3TVRZdE1USXRNekJVTURjNk16RTZOVGtyTURnNk1EQWlJR1JqT21admNtMWhkRDBpYVcxaFoyVXZjRzVuSWlCd2FHOTBiM05vYjNBNlNHbHpkRzl5ZVQwaU1qQXhOaTB4TWkwek1GUXhOVG96TURveU55c3dPRG93TUNZamVEazc1cGFINUx1MklPYWNxdWFnaCttaW1DMHhJT1czc3VhSmsrVzhnQ1lqZUVFN0lpQjRiWEJOVFRwSmJuTjBZVzVqWlVsRVBTSjRiWEF1YVdsa09qSkZOekZDUmtaRFF6WTNSakV4UlRZNU56aEVRVGxEUWtJMk5EWXpSamt3SWlCNGJYQk5UVHBFYjJOMWJXVnVkRWxFUFNKNGJYQXVaR2xrT2pKRk56RkNSa1pFUXpZM1JqRXhSVFk1TnpoRVFUbERRa0kyTkRZelJqa3dJajRnUEhodGNFMU5Pa1JsY21sMlpXUkdjbTl0SUhOMFVtVm1PbWx1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2TWtVM01VSkdSa0ZETmpkR01URkZOamszT0VSQk9VTkNRalkwTmpOR09UQWlJSE4wVW1WbU9tUnZZM1Z0Wlc1MFNVUTlJbmh0Y0M1a2FXUTZNa1UzTVVKR1JrSkROamRHTVRGRk5qazNPRVJCT1VOQ1FqWTBOak5HT1RBaUx6NGdQQzl5WkdZNlJHVnpZM0pwY0hScGIyNCtJRHd2Y21SbU9sSkVSajRnUEM5NE9uaHRjRzFsZEdFK0lEdy9lSEJoWTJ0bGRDQmxibVE5SW5JaVB6NDc3SlhGQUFBQVlGQk1WRVgvLy84RVZxSVhaYXZHMk9vcWNMRzJ6T09rd3QwQlNKdHFsY1hWNHUrYXV0bFdoYnprN1BVQU1ZOUhjcktqdE5icThmZUFsOGFCb3N6ejl2cGRqc0dHcXRGM244dVRzTlNacGM2SnNOVDUrdjB4WUtudThQZmY1L0w0OGZnL2ZyaWN6SmdZQUFBREFFbEVRVlI0MmtSVUNaYkRJQWpGWFpPWTFUYXROYzM5Ynprc1NZYzNyNE1FNGZNQkFhRDZ6bDh5LzlUT2dldDhkNWpmTjc4YndNL2REQ1JwUjUyMXpYZm9qSEowNUlJeWhCQVVTVkFPTmRHekJZdDJmN0tGcmZrSmFBa0hoOUZaaGNEWEhSa1RLbzlNTGloR2FhdkltblYzcXlFWDBFcHJnei80RHdVRDdrQ0hSbmQ4UUZONDNHbzRVVm1ERGd6YTR3MjdvaXpkQTIrY0srdXVVcGpqbzIreHdjLzQyVzUweDVMR1llREJzUjBIVkl4NXg4aUY2MENibGJURUVrRnIyN2JOREJVVlNxMU9LVlBiRTYyYjNFSDhGcUJnNU9PT0V1YzJ0OFpKaXFNT3VHcCtjS2pnN3dWR2Nlb3pxTjRweGdWUFFrakZZZ2JWSktEVWhEQ2pZcmF3UDVxNEVUZ0M5ZklNUkh0aXRwUWNDdkpPRUxjYk1zUWduY2lSa2xqcHlRanZHNDRqcUJVRVRGaUJpMVBFSXlla096c1crVHk1Y0xIb3M1UitkTVMxTHRTU3hmM2dRSGN6UjJDSTRnTU5wVzRJUkExUU1hNnRKNCtDNnVIdUdFOG1OREl5RnFnL09QL01NVXVlUzZJcThTOTBkQWVCSlNFeS9xS2tLK0JOd3o4Y1lZNGpiNUo2dTRpV0NJMkIxWjU2TFc1a0VjNGhrZE1wc3ZVQzU1ODVTWDBRdWJjZ05xeWZnREZFY1R0KzQwLzBTNU54MHdhQ3czT0trY09iQTVJbjBBWXAwMXBqancybjYyNlVEanRId2EyOGlIdVRLcXRydityZVc0MU5aNmlHbHI3dXVMSkNma0Z0Y3RjRzA0c2dtMWVOUytaYURucGFURXJHb3lYNUpLMmlNejh4czBuT3dXR2NQRE40OXFhQ2Q0YnpKb3pEWm0vYUJLK0Vvekx3K1hoTkJpWXdIZjBzaU91MVhQa0cvekt3dnFZS2NmU3dERWNIL29VZTA3ZXMvV1E4ckl5ZzJET1hqOHRqa1pkdURCL2I4aHpEbGxNTU9DUzVCRW5kNTM0Zjh0aTNVWmM0a01zM3hMeWFmTVNzSmhkRzhYUHFqTms1dEFnTzI1ZmVLQ2huVmREai9KMEZNa09zVS94TUJ2MHdGaFllRUdmVkgxM2Z1RFUweURGTGE0ZmM3Um5XSEJmdVRGVjJ0RW1Od2FkYzdhYzNVWTJqZkJsN0hUMzZmZTM0aVFPNW1OQ0ZGQlcwN0tqUGdxaE9MVTAxdlo4UHVlWjJKQ2xGWk44amtVczY5dWthOWVQcDYrRWZMNEFGNStOeXdTYmlySHRjQjhNbC9na3dBRWprSzY0S2pIUGVBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMSIsIkZJRE9fMl8xX1BSRSJdLCJleHRlbnNpb25zIjpbImNyZWRCbG9iIiwiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsImxhcmdlQmxvYktleSIsIm1pblBpbkxlbmd0aCJdLCJhYWd1aWQiOiI0MmRmMTdkZTA2YmE0MTc3YTJiYjY3MDFiZTEzODBkNiIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwidXYiOmZhbHNlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibm9NY0dhUGVybWlzc2lvbnNXaXRoQ2xpZW50UGluIjpmYWxzZSwibGFyZ2VCbG9icyI6dHJ1ZSwiYmlvRW5yb2xsIjpmYWxzZSwidXNlclZlcmlmaWNhdGlvbk1nbXRQcmV2aWV3IjpmYWxzZSwidXZCaW9FbnJvbGwiOnRydWUsImF1dGhuckNmZyI6dHJ1ZSwidXZBY2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOnRydWUsImFsd2F5c1V2IjpmYWxzZX0sIm1heE1zZ1NpemUiOjE0MDAsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6NiwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjo5NiwidHJhbnNwb3J0cyI6WyJ1c2IiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fV0sIm1heFNlcmlhbGl6ZWRMYXJnZUJsb2JBcnJheSI6MTAyNCwibWluUElOTGVuZ3RoIjo0LCJtYXhDcmVkQmxvYkxlbmd0aCI6MzIsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjozLCJwcmVmZXJyZWRQbGF0Zm9ybVV2QXR0ZW1wdHMiOjUsInV2TW9kYWxpdHkiOjIsInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjoxMjh9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0wOS0yNiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IkZlaXRpYW4gQmlvUGFzcyBGSURPMiBQbHVzIEF1dGhlbnRpY2F0b3IiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI0MDkyNjAwNSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTA5LTI2IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjF9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjQtMTEtMjAifSx7ImFhZ3VpZCI6ImQ3YTQyM2FkLTNlMTktNDQ5Mi05MjAwLTc4MTM3ZGNjYzEzNiIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiZDdhNDIzYWQtM2UxOS00NDkyLTkyMDAtNzgxMzdkY2NjMTM2IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlZpdm9LZXkgQXBleCBGSURPMiJ9LCJkZXNjcmlwdGlvbiI6IlZpdm9LZXkgQXBleCBGSURPMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNOekNDQWIyZ0F3SUJBZ0lVYzhjUkVzWThrK3R1L0FsNWFmWUVZUjBuQzVjd0NnWUlLb1pJemowRUF3SXdhVEVMTUFrR0ExVUVCaE1DVlZNeEVEQU9CZ05WQkFvTUIxWnBkbTlMWlhreElqQWdCZ05WQkFzTUdVRjFkR2hsYm5ScFkyRjBiM0lnUVhSMFpYTjBZWFJwYjI0eEpEQWlCZ05WQkFNTUcxWnBkbTlMWlhrZ1FYUjBaWE4wWVhScGIyNGdVbTl2ZENCRFFUQWVGdzB5TWpBNE1UQXhOelF3TURsYUZ3MHpNakE0TURreE56UXdNRGxhTUdreEN6QUpCZ05WQkFZVEFsVlRNUkF3RGdZRFZRUUtEQWRXYVhadlMyVjVNU0l3SUFZRFZRUUxEQmxCZFhSb1pXNTBhV05oZEc5eUlFRjBkR1Z6ZEdGMGFXOXVNU1F3SWdZRFZRUUREQnRXYVhadlMyVjVJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdRMEV3ZGpBUUJnY3Foa2pPUFFJQkJnVXJnUVFBSWdOaUFBVGtqMDRvNWc1cWQ5SmIvb200YkQ0bHhXd2NscFNrUm1Gcy9sSk5XUklrVytrb3Q2Ni93Ukh1MlN1LzFCVEplZ1NFalBOMlUwVityMnFKK3hWY3VYam96dlNLcHRzMmFpMzF0QnV0bnFZWG92Mlg0Vk0wRzE0R0ZJaUhEam1xVXF1akpqQWtNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnRUdNQW9HQ0NxR1NNNDlCQU1DQTJnQU1HVUNNRTFUb25xRVp5czdTd1RNUGNxaTN2N2lKM2hrbHpua1ozenpWd1BJdDI2MFFPZHVUZXlaWi9oMndEVkR0dGZYbUFJeEFKVFVHeS9PdlNHZXR4Vytna0NyeC9RQlNQa0kwYlRVRVhua3c5bDMzVGlHb3c2VUxaKzUwUSs5Ni9jR2hLYmtwUT09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWdDQVlBQUFCemVucjBBQUFNT25wVVdIUlNZWGNnY0hKdlptbHNaU0IwZVhCbElHVjRhV1lBQUhqYXBaaHJjaU01RG9ULzh4UjdCQklrK0RnT254Rjdnem4rZnFESzZyYmJIVE85WTltcVVsV0pCSkdKUk5KdS8vWGY0LzdEVDVTUVhOSlNjOHZaODVOYWF0STVxZjcxMCs5NzhPbSszeDk1YnZINTAzWDN2aUZjaWh6ajYyUE56L01mMThON2dOZWhjNlkvRFZUbmMyTjh2dEhTTTM3OU10QXpjN1NJN0h3OUE3Vm5vQ2l2RytFWm9MK1c1WE9yNWVjbGpQMDZybytWMU5lZnM3ZFVQNGY5eStkQzlwWXlUeFRaTVVUUGU0eFBBTkgreE1YT1NlWGRibnQ3NXp4R3ZkYy9CaU1oMytYcC9kT0k2RmlvNmR1SFBxSHlQZ3ZmWDNkZjBVcnlQQksvSkRtL2o5OWVkMEcvM0lqdmVlVG5tVk45enVUejlYajhlRVgwSmZ2MmQ4NnE1NjZaVmZTVVNYVitGdlhPbXAzd0hJTWttN282UXN1KzhLY01VZTZyOGFxd2VrS0Y1U2N6RHM1YkVKQTRJWVVWZWpoaDMrTU1reENUYkNlRkU1RXA4VjZzc1VpVEdRMi9aSzl3cE1RV0Y4aEtuQmYyRk9VZFM3alROai9kbmEweTh3bzhLb0hCZ3ZIaVQxL3VUNzl3anBWQ0NMNitjMFZjSXBac3dqRGs3SjNIUUNTY0o2bDZFL3p4K3ZwanVFWVFWTXV5bFVnanNlTTF4TkR3UXduaUJUcnlvSEo4MVdBbzZ4bUFGREcxRWt5SUlBQnFJV3JJd1JlUkVnS0pyQURVQ1YxaWtnRUNRVlVXUVVxS01ZTk5GWnVhcjVSd0h4VVZManV1STJZZ29USEhBall0ZHNCS1NlRlBTUlVPZFkyYVZEVnIwYXBOZTQ0NVpjMDVsMnlpMkVzc3lSVXR1WlJTU3l1OXhwcXExbHhMcmJYVjNxUkZSRk5iYnFYVjFscnZ6TmtadWZQdHpnTzlEeGx4cEtGdTVGRkdIVzMwQ1gxbW1qcnpMTFBPTnZ1U0ZSZjZzZklxcTY2MitnNGJLdTIwZGVkZGR0MXQ5d1BWVG5RbkhUMzVsRk5QTy8yTjJnUHJMNjgvUUMwOHFNbEZ5aDRzYjlTNFdzckhFTUhrUkEwekFCT1hBb2dYZ3dCQ2kySG1hMGhKRERuRHpEY3huUk9DVk1Oc0JVTU1CTk1Pb2lkOFlPZmtoYWdoOTY5d2N5Vjl3azMrWCtTY1FmZUh5UDJLMjNlb0xXdEQ4eUwycWtKTHF1bWc1NWt1dFZ1amt3WXFxOFNseERwYjNyUFFzdFBzMjFNTWUyU3ljaFlCclRKS0lwQTk0aDZ6NTBaYWlQV3dNZ0krTGV5NmxJc3phK0JPMTd4ZHoza1BQVDBzb2FiNnJDeS8wOExDbktPcGJ2SmhXUUNTSXJHdjBRZkxCTUFvdlczbTliMXN0RmhkSFR3OUFLWlZCRk9Wazd5clRyNCtoRnl1MHhLNXlKR0psKytrWitSTW9TS2dsYVdVM0hRVW5kc3QxYjV6Q2FPdFRJaE0yb0d4c3NLanhYNWgwZW16c0J5V1N4WWpnKzgrMTRvTXdHZ3JqWk5pZHhNYys0SVNJOFRzbjJ6Nm5wV3BZeWF4aStsVVE5OVRSaUkvYVk0U0o4dXRxL1N5b0wwdWFzTTFLTGdoSENUUUdMZU4wOGwzc2hFYjMvSXNNZmVSK2hnc0xMZWxoMXoxdG9BOHp0TkhrUUdqcHV0OW5yWjVBaFFET013bjVhdUhkT2Fjd2tKbkJacDJMQmw4TWNkUVo5N1pMNlBnc0t2d3pYVWRQZEFFRzhnMTZMRThsVEpnMlN4Ykl2UktQTXRJRkl1V2xIS1kxQVBwWndvTmpKU0poRnJJanZxd1R3TlFOa2hUbmN0dkVwNDZURTZaRFBXdHdpUEQ1N3BybXF2ZlJNSVMzMmN5UWt5cXBibzBxZXQrVW9Qb2VnRmVqVDVJRHFPVlExbG9OdHBkN1JrYmsyamhhZHE3dEx3eWRjTVhTcHNMcVYwRVF0RVVnVU02UnliVnRRTkE2ank1YWJPN2hWdHFUUmJsclJOUjhZVVVndEdrMU1iY01yTGJvMG8zTGk4Z3BUNHBaM1JqZ3o4aVpha0czVUZaUlE1S25La01LNUNvOEw2UFFFNHFBaXpkNVVCaUlua2hWNXd1VWxxTW1Nd1ZSMVY2elFKenYxWU5NcHBuS2NHNENtdG5BVjhsbjJGUmxmQkkxbEY3aU1DVU1seTNBbGdYQ3pIU1FmSXkvSXJVSzhSdXhCSVNwZG9DblZLcjBZLzN0QnhLSHl2bmFCbzZkWkkyUUpJRWtmT29uWWxUckdzdVJIaUVreEx5eE5CYUtJYkNVeEV5bUZiTzZRcUNYNk51VXNodlNaUGFSQXZtVWdHVzN1YlFOTUNMbktVd0Q0WEUwR2dQUGp5WVltUVkzTURHd1hCa2IwSjI2RDFRY2M1cVM0WW9VckZSSmQ4Ti9LNEpCbFZLa0lDcFZ1U1VGbUlCbXBoTGM0bzBRM2c0ZVZLZ2dCc3JBblBFNEhnbzBZaVN4ZExSNTRBWFdZVDZZNzFxZWVxMGoyQVpSQzdjVGFVbUdDdU5pYWcvNHkwcjZLYWEyUXFXTC9kQVFWTnBDQUJDajdqNU9PZXlFbnhwYng3VUdqV2QyNTJhMlNpeHNWYzJ0RG9wcmErVTVqakk5cmExR3Jxb1BCeEg0Y0FpMGlOWXQ3Z0J6Mkp0ZlE4ckg5cVEwU292TDhhdVF4WVdlblc4VlZDMWlvRmZxWkx6VGFtZHRqYmZ6OUJ0dUVCeklaUmwwblVRWjFvZzd6dVp6TkJ4V095ZTFJSmhnTlpBQzRETjVwUFF5Z1dyU2FhbGc0MGZYWlV1YVBWczZtTnlKbGNYTi9LeDZhcTBMZlRHVW5nWTlhV2hMSlFVV2grQWFnc2l6SVNNUUpjeTRzb0pKQlBFaUsxRHJyYmpGYTVqTEZzZWhwREtma1dJMzlrQzl4akg5azFvYUYwdXNseG9UdzhvRlJnN3RXYitnQzZBcFNidWhrRHlkdWpqaGRhaXRXRXR0cEVVL0pOMUV0U0RkYnVzUHQ0dWlFS0JCRzJ0NXBQSWNhR1VXQitsd1ZlaXQvUUlhN3M1cUQrNkJGcWFrU1NLTnBZTTdKbjA2cHJLQW5OZldTWmlXT2svdGhLaVowd2tkZUY2SUJEZHFGdkI2QlpUTTE4UHV3WTNVQXAwSHdSWXFiYzRRWW1sRU1HcDlhQTBwa3hrS3VpZ3JjeTlQUS9EYWlDZ25aSTdYTTJNMlJFV3NvSis0czNLc0V5UkZkTkdOQnR4VHhFMVIxZm5JTU5VRVNqWklwR0xUUTEyNjZjTWlVZDJONi9XUUxsOVpKQTJ4QjFCRFh2cXpZVGVOcGVzT1FBalR3RVB0Q1B2U0NIa1J0QnNuK3ZFb21BYVJHU1pETUhPRVV4Y3k5VkFPd1NzZXpWaGZDVXNYd0t3czhkZWt5WWs2TUEyQjFkV1NMZGhZSGZxd3VwQUVSeEhNWGRDVHFuQlNBN045K3lEbUp1Tk1McldyU2F5akcvdGF0TDdCMXlqRTdBazloWFlDV0JCbzd6UlA2cWF4R0pkc2lDTGdRaklPNEZTSkxSUjlwbW9xblh4R0oxUzZTSERaQ3lGWnRRRjNiWGtZUm1vQ1hxVDhoZ1ZpQ1lFcEJ0WTVxME04eFNBbEVhclJ4WUtpWkFsZnJjNUVoYVI0U3JsS3pKS3R6QUgyWWs0UFpFYkg1ZUJzMkdaUnpmQnNINlVyUWtYUjdPN0xHMXNsWjRrRXNRa3RPNFhUTzVwVC9KWTBMVms0bkFUaEZPQUhGWi9RbHVlZkN5NEVWYVRNSUY0eVIySzdLQXlDeXkybktQOG1BOE44eHJKaWJSakJmQ3dWaE5qV29QTUdXR3phbkhtZ2dUWXJBcXhzYlkxc3hPYU5DcUptaFFhWmVpUmR3YnYwN3dCeXB2dnpnRFlVQm9NSlhyczBEdUF4MGVaZjZkQUtMU0tOMWl6SWtqZGhIaFp3NFF1TmRHNVhoUFJ5dVpISXA0akRkTGtZTHdJUmdQRklRQXU3YXFGT3JJaFRqZmRhMTNnd2FVVWxHQkYyMmVjakV5U1lxcXVxOE5uZWF5SW1xNVBETXZHdGw5WlJURU9UcXhTUDNoSmJMeDlBbU84Q2JZdFZUN1hleGRkQ0oySVR1TWU5eUdYdEJyUWQ5M05kaDgwZC9ZOW0rMkRXQTliMkx5SUVhTVRsM0tkV2xzM0I5d2ZZYmhvaWpsZlV1SHByaExlR3ZRNUNlK2p1YXVHbUtLdjF1LzdsZWZvR20yMlNManVwMksrMEN0S25LMGNYUlJPc2hzNjVrN3hZS0g1clpUQU5KR2xWK2RpR2hDQytZSWxsRWl4TW9BdWtxYzVieXZNSTNSd1JJRXUwdGJ3a2JSZ01BZTdBVHdWSTlFSWtFdjZJTmxjV081Vkc1dWF6SVZGN2FvSkZpMk9JcVFabTdYRmpTMDR5WTZ4RDA5QlVNdkJ0aUNWTHlRemZjbTJjL24yZDNkRnZOdS9DWDl6dEgyQkdWbkVHaWRhRFNlZkFaZ0d1c0h4WE1NL3M4TzhVTFRFT2Fad1pLTm9XMDRDcVBjaDdENCtEaU9DOHVFa094dkNLbytsaFBsMjhMSG1IcHdsR1VrcUxiMk9rUVQwU3VzRUVrcHozWVA5QndTeTJLNUxMek9SUDNvVVNYNU1LZUlQSDJFZm5LS2dycG5JckloU0dPWkkyVUtSS2NRVTIyRWUyYStzYk53SUxDSk8rK1hjL2ZDdm9yVTI5OUh1dmovUzZUZTdyREd2YjBQOEJlcEJaTklFUU5XRWE3dEJ6cWtIaXdXYkI1UVFGemZBQnBGUDdEM3BPSGdUcW1uYWhvdzJSUkZPYW8vdnl0WHUyZS9SWVp6WXZFKy9TVFd3N3IzdGdJME1rSTljN3BmMVk2Tk5BKzIzQi9TN21jM0IyZytWeEo2eHJzNHVtMFpwdmpoaXU5Z2RDenNTbzhyMUx1WHZGdjNqNkQ1ZmlPR0pkV3h6VUV0dzhvRStIZGswZWd6aTNUQmtzWHhRSzVFcWcrbHdzb2xESDBzSjEwNloyTmx4UWhQQU5KYmdoMjZucE1kaFlYcTlib1MyTFY1dFoxdU42K2JYMkIwSlFEWWFRWG5NYlBtbyt2alBsMlZIOS9NRis0ZUhyUS9WUFpUR3dWbEJNWFlHZEJMY0pKdjRReVFnd2hvcHhOZTJqYmd4dmZESXF0d2M2NjMyUk1rMmY4bEFkb2I5ajRKZGhMZEYyZGNvMENXMi9WMzFyb1NtcGVIdXlpWlNHMm5WVDIvejgyOXIrSGRIOS9WQ3M2NXI2N01TeDJZdStJT2NwNC9sMFNHZ2xscG5udXo2TVpkb2svanF0cmtzMjlGWUY4V2VUTHBoSVVJR01QY050YlUrcytUZmlhOGQzYzhYeWpsbjJmL3Yvd2RPT1pIMThWYVdBUUFBQVlWcFEwTlFTVU5ESUhCeWIyWnBiR1VBQUhpY2ZaRTlTTU5BSE1WZlc2V2xWRVRzSU1VaFFuV3lJQ3JpS0ZVc2dvWFNWbWpWd2VUU0wyalNrS1M0T0FxdUJRYy9GcXNPTHM2Nk9yZ0tndUFIaUtPVGs2S0xsUGkvcE5BaXhvUGpmcnk3OTdoN0IzaWJWYVlZUFJPQW9wcDZPaEVYY3ZsVndmK0tBSUlZd0FnaUlqTzBaR1l4QzlmeGRROFBYKzlpUE12OTNKK2pUeTRZRFBBSXhITk0wMDNpRGVLWlRWUGp2RThjWm1WUkpqNG5IdGZwZ3NTUFhKY2NmdU5jc3RuTE04TjZOajFQSENZV1NsMHNkVEVyNndyeE5IRlVWbFRLOStZY2xqbHZjVmFxZGRhK0ozOWhxS0N1WkxoT2N4Z0pMQ0dKRkFSSXFLT0NLa3pFYUZWSk1aQ20vYmlMUDJMN1UrU1N5RlVCSThjQ2FsQWcybjd3UC9qZHJWR2NtblNTUW5HZzk4V3lQa1lCL3k3UWFsalc5N0ZsdFU0QTN6TndwWGI4dFNZdyswbDZvNk5GajREK2JlRGl1cU5KZThEbERqRDBwSW02YUVzK210NWlFWGcvbzIvS0E0TzNRSERONmEyOWo5TUhJRXRkTGQ4QUI0ZkFXSW15MTEzZUhlanU3ZDh6N2Y1K0FIb21jcXA3SGppQkFBQU5HR2xVV0hSWVRVdzZZMjl0TG1Ga2IySmxMbmh0Y0FBQUFBQUFQRDk0Y0dGamEyVjBJR0psWjJsdVBTTHZ1NzhpSUdsa1BTSlhOVTB3VFhCRFpXaHBTSHB5WlZONlRsUmplbXRqT1dRaVB6NEtQSGc2ZUcxd2JXVjBZU0I0Yld4dWN6cDRQU0poWkc5aVpUcHVjenB0WlhSaEx5SWdlRHA0YlhCMGF6MGlXRTFRSUVOdmNtVWdOQzQwTGpBdFJYaHBkaklpUGdvZ1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNEtJQ0E4Y21SbU9rUmxjMk55YVhCMGFXOXVJSEprWmpwaFltOTFkRDBpSWdvZ0lDQWdlRzFzYm5NNmVHMXdUVTA5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5dGJTOGlDaUFnSUNCNGJXeHVjenB6ZEVWMmREMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzk0WVhBdk1TNHdMM05VZVhCbEwxSmxjMjkxY21ObFJYWmxiblFqSWdvZ0lDQWdlRzFzYm5NNlpHTTlJbWgwZEhBNkx5OXdkWEpzTG05eVp5OWtZeTlsYkdWdFpXNTBjeTh4TGpFdklnb2dJQ0FnZUcxc2JuTTZSMGxOVUQwaWFIUjBjRG92TDNkM2R5NW5hVzF3TG05eVp5OTRiWEF2SWdvZ0lDQWdlRzFzYm5NNmRHbG1aajBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5MGFXWm1MekV1TUM4aUNpQWdJQ0I0Yld4dWN6cDRiWEE5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM4aUNpQWdJSGh0Y0UxTk9rUnZZM1Z0Wlc1MFNVUTlJbWRwYlhBNlpHOWphV1E2WjJsdGNEbzJPV0V4WW1Nd05TMDBNMkprTFRSaE1qUXRPVFEzTUMwMU5HTTRZVEkzWXpjeFltTWlDaUFnSUhodGNFMU5Pa2x1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2TURKbVpHSmxabVl0TVRKbE9TMDBNems0TFRoa01EUXRNRFUwTXpFeFlXWmxZakUySWdvZ0lDQjRiWEJOVFRwUGNtbG5hVzVoYkVSdlkzVnRaVzUwU1VROUluaHRjQzVrYVdRNlpHTmpOamt5WXpjdFlqSmlOUzAwTldGbExXRm1PR1F0WmpBeVpXVXdZVEk1WkRVMUlnb2dJQ0JrWXpwR2IzSnRZWFE5SW1sdFlXZGxMM0J1WnlJS0lDQWdSMGxOVURwQlVFazlJakl1TUNJS0lDQWdSMGxOVURwUWJHRjBabTl5YlQwaVYybHVaRzkzY3lJS0lDQWdSMGxOVURwVWFXMWxVM1JoYlhBOUlqRTJOakF4TlRJNU1ERXdNelUzT0RBaUNpQWdJRWRKVFZBNlZtVnljMmx2YmowaU1pNHhNQzR6TUNJS0lDQWdkR2xtWmpwUGNtbGxiblJoZEdsdmJqMGlNU0lLSUNBZ2VHMXdPa055WldGMGIzSlViMjlzUFNKSFNVMVFJREl1TVRBaVBnb2dJQ0E4ZUcxd1RVMDZTR2x6ZEc5eWVUNEtJQ0FnSUR4eVpHWTZVMlZ4UGdvZ0lDQWdJRHh5WkdZNmJHa0tJQ0FnSUNBZ2MzUkZkblE2WVdOMGFXOXVQU0p6WVhabFpDSUtJQ0FnSUNBZ2MzUkZkblE2WTJoaGJtZGxaRDBpTHlJS0lDQWdJQ0FnYzNSRmRuUTZhVzV6ZEdGdVkyVkpSRDBpZUcxd0xtbHBaRHBoWWpsallUUmtOQzB4TURRM0xUUmpaR1F0T0RBeU5pMDBPVEkxWWpZNU9ETmpZbU1pQ2lBZ0lDQWdJSE4wUlhaME9uTnZablIzWVhKbFFXZGxiblE5SWtkcGJYQWdNaTR4TUNBb1YybHVaRzkzY3lraUNpQWdJQ0FnSUhOMFJYWjBPbmRvWlc0OUlqSXdNakl0TURndE1UQlVNVEE2TXpVNk1ERWlMejRLSUNBZ0lEd3ZjbVJtT2xObGNUNEtJQ0FnUEM5NGJYQk5UVHBJYVhOMGIzSjVQZ29nSUR3dmNtUm1Pa1JsYzJOeWFYQjBhVzl1UGdvZ1BDOXlaR1k2VWtSR1BnbzhMM2c2ZUcxd2JXVjBZVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBbzhQM2h3WVdOclpYUWdaVzVrUFNKM0lqOCs2SE10TndBQUFBWmlTMGRFQVA4QUFBQkJNdndOOVFBQUFBbHdTRmx6QUFBTEV3QUFDeE1CQUpxY0dBQUFBQWQwU1UxRkIrWUlDaEVqQVBCSlI3d0FBQWtEU1VSQlZGakRyWlo3YkZQM0ZjYy85MkhIZHB6NEZjZHhERW5JQzVLUThBeVFVSkpRQ3BRV05saGJ0STJxYTlWdTA5Uk9rL2JmMUQvMlI2ZjlXMDFiSjIzYTFrbnRpbWdSN1doWFNpbWxrSklHU0VsREFpSGs2UkRIZVRoeDdOajRmZS8rSUppWUFLMm1mZis2dXVmYzMvbWVjNzduM0orZ3Fxb0tvS3FRVWhTU0tZVlVTaUdSU3VJTDNNTHJEK0gxaDVnT1J2Q0hJZ1RDTVc3RkVpaUtTbG1CbWNmV2xqSTg0ZWZTb0JlZFJzWnMxSkZ2eXFheTBFYVowNHFJZ2lpS2lKS0lMSXJJa29RZ2tJWndoMEFrbHFCM2RJcXJOMzI0cHdKNC9TRVNLUVVBZGNGWlhYalFheVhXbCtSVFUrSmdZTXhINjQxeGtndStraWhRbG05aWE5VnlncEVZWjNwRzBXczFsTmh6V2VteVVWdGFnRkduVFJPUUFWSXBoWEEwUnZCV2xCNzNGTDVRRkhFeFRVQWppVlE0VEFpQ1NJWFRqRG5Yd01Yck4ra2M5YVY5dExKSS9Zb0Nxb3J0ZUtZRG5MazJSaXlaQWpYS1hEaUN3NlFuR291amt5VmtXYnBMd0I4SWNySG5CdlYxVmVUb3MzaS92WS9KWUNSOWNFcFJhYWt1cEtsMkJZSWdNTzRMY09MeUlHN2ZQQnBacE1KaFJpTkxsQmVZeURVYTZCbWE0T0x3MU8wU0E3a0dMUWMyVjFCVG5NL0FpSnVDUEJ2TG5RNEFSSUJJTk1hZmo1M20weTg3S01vMzhXeExMVTV6ZHBxQW9xb1UyMDA0clRrNExVYXVqZm00T1JNQ0FlcFhPRGk0cllZZk42L0diczZodFh1RTlxSEpkT3VzUmgzUHRkUlFXK0tnOCtwMTNqdDFqdUI4S0xNRkF1QU4zdUx3cVhiOHdSQUg5elR4NG1OcitOZlpIa2FtZzBpaXdKZTlZMlJwdGNTU1NhNjZweEVFVUJYSU54bklNMldUcFpINDZycUhFZDk4dW4wdWk1RkRUVFVVV0xJNTNkN0IrYTZyK09mREdTS1UwMm9FUXJFNHg5dTZtSjIveFU5L3NKTVhkcXpodmZPOVhQUE1NRFFkWk9LTEt5aEFKSkZLQys3Q3dBVDVaaU95TE5IZU40WUtpSUpBdWNQRTA0OVVZekZvT2Y1NUt4M1grNGtua3R3anJVVUVGZ3p4WklxelhYMkVJMUYrOGN4dURtNnI1c1NsZmpxR0pna3ZCTTZTSlFyTkJuSjFHbUpKaFdQdGZjeEg0eVFWRlZrVXFDdks0NG1ObGVnMWNQVFVHYTcwRDZlbjVIYXE5eElRQkF4YVRYck9Vb3JLeFQ0M2lYYys0cVVETzNtOHZvSWN2Wlp6dldPSW9rQlRaU0dXckJSbW5jaXRwRUlnWWFKOWNKcVpVSlF0NVU2MnJ5bEZUVVk1ZHFxTjdxRlIxRHZ6QzJnMU1xSW9aaElRSlJGYnJoSGZYRERkUDFWVjZSandrSGp2RTU3YjIwSlQzUXB5OUZsRTRnbjBrU24rOHRkL2NPVHdNVFkxYnVCWHI3ek1velhyQ0VWVGJLb3FJakEzeTRuV2RucmRZd2lMYXE2cUtqa0dIYklzWnk2aVNDekdGeGV2OFBjUHp6SVZDR1hzZ0pTaXNzcVZ4NDhlMzhhYXFuS1NpUVN2L1BKbHZtaHRRNnVSU2FaUzVGbXRIRDF5bUVMWE10eGpIazU4ZVlIaDhTbEVNYlBjT3EyV0hadlcwbHkvRHFOQmYzY01GVVVsUDgvSzgzdWJxVjd1eUJDS0pBcjBqZnY0Mndlbk9YZXBDelVaeCtzWlI2dTVuWVVzU2ZobVp3a0ZBL1QwOVhQc2RDc2ozcVhCemNac2RqZHVwTEtraUVVZElkMk1BYmVIU2Q4c0IzZHZwYjZpQ0kwazNYVVNCTWI5ODd4MW9wV0oyU0JWMWRWSWkreXJLc294VzJ5Y3ZuaVpLWDhnbyt5Q0lPQzBtWG15dVFGWmt1anBIMFJGemRTQVRxdkZaVFB6bXcvTzhQMkdPZzdzYU1DY2M0WCttMTVVUmVIbWJJaWtvcUNxQW4yajQ3ejB3dk1JcUlSRElSQUVEdXpmejh4OG1FUWltUTVxTXVqUmFtUnNwbHkyYlZ6RGlHZUNNeDNmc08rUlRSajF1a3dDa2lSaXM1cXc1eG81M3RiRjVHeVFRMDlzUXhKRkVza2toejgrUi8vNE5QdWIxdUUwYWpuZjloWDc5dTVGRWtVVVJlR214NFBkYnFlaHJvcld6cXZvczdUczJiYVpQSXNaUlZFNTI5SEo1ZDRCOUxvc3JCYnowaWtBTU9YbVVGdGN3T211SUYvZmNGTmU1T1RuVCswaW5raXlaZlU0cTh1V1k5T3F2UGE3MTdqVTFVMldWb3ZWWWlZY0RqTVhERkZXdkl6ZnZ2b3EyemV1WVdKbWxxclNFb3dHUFdjN3ZxRzdmNWlVb3BCdk1XRzNXakswa2FhU1o4NWxjMjBGNW13OWlxclNPemhLZC84SXZVT2pUQVpDV0EwYVBqeitiNjcyM1NCYmw0VXNDZ1RtNWtnbUV1UVlkRXhPKzNqem4yOGlxMGxFU2FMZmZSTzNkNUlCOXhqSmxJSkdsbGxadkF5SHpYci9UYWpWeUR5eWZqVXBSZVdkaytmcGNYdDU0OGpIcUlwS1kxMGxrMTRQSFoyZEdYc3NRMnpBd1BBSW5aMlhXYnVwZ2ZkUHQyTFE2WmlZOWFPUkpSN2R1SmF0Nit2UzA3T0VBSUF1UzB1Unk4SHorN2J6N3FmbjZmUDRpQ1JTUE5WU2p5OHlneXpMRkMxenBRTUtnckF3VW1xYVVDb2VKOTlpeGpzemgwYVdNR1ViMk5XNGtjSjhPOFpzQS9jaWc0QldJek16TzhlNHo4K0wrM2R3OUxNMnVvYTl4Qk1KMW0rczV3K3Z2NTdlNVJxTmhORmdJQnFMRTB2RUVSYmVHd3dHNG9rVUdsbkdsV2RoWjJNOWdYQ1lDZDhNSzB1V0x5R1F2cExkd2JRL3dCL2ZQazZXWGsvTGhtcGFPM3U1TWpDNkVGaE5aOTFZczRJZlBybWRTMTA5bk8vdVJVeFg0L2JLTGJCWjJGSlh6YkJuQXZlNGw1L3MzNFBkWW41NEJRRHNGaFBOOWJYODZkMlR6SWZDUExabERYWnpEcjdaT1h5QkVGMURIcUxKRktGd2hKU2lFbzNGbWZZSGtFU1JJa2NlK1JZekJvT2VGUzRuVndlRzZld2JaUC8yUnZMTUp1NEgrWDR2TjlldG9yMjdqMU5mWHljY2pmSHNFMDJVRlRVUUNJVjU0L0JIWEI3MExQbkdscHZEMHp0YnlMT2E4Zm5uK095ckRyb0dScWd1S1dKOTljb013ZDUzREJmRGFOQnhjTmRXSEpaY0xnNk00ZmZQWVRQblVPcHlZRFBuM3Zld2JJT09va0lINWh3amlVU0Nid1pHTU9yMTdHellnTkZnNEVHUUgyUW9jUlh3MHI0bWZ2L1dmemg1b1pzc3ZaNVFKTWExb1RHVVROa0FNRFU3eCtjWExsT1luMGRiWnpjQ3NMdGhQU1V1NTVJZjAzY2lvSkZsTnRXdTR1RDJTWTZlL1JyM2tVOUlLaXJ6MFRnc2pVODBudUJrV3dkYVdlSldMTTZXbWtyV1ZWV2l5OUx5TU1nUE01cHlzdmxlY3oxZW41L1c3a0hVKzJTK0dMRkVnbmd5U2ZreUo4MzE2N0E5UUhqZnFvSEZLSFRZT2JTbmlRM2x5MEFRSHVvckFDNjdsZDJOOVJTN25Id1hmQ3NCQWFnb1djWnplMXVvS3k2NHg2cXl1Qi81VmpON214cW9LaXRCZ1A4UGdUc1hrcHFLRW43MjFDNVdsemlYTUZSVktMQmFlR1puTXpVVnBROGN1Zitad08ycm1VaFZXUkcvUHJTWCtsWEZkek5Vb2JTd2dFTlA3bUJsYVRHUytKMlB2UDhxL2pZb3FzclVqSjhMUGYxc3FhM0VQVDZCS3o4UHB6M3ZvZVAySVB3WCt1aXFqb2NEZFBnQUFBQUFTVVZPUks1Q1lJST0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJGSURPXzJfMCJdLCJleHRlbnNpb25zIjpbXSwiYWFndWlkIjoiZDdhNDIzYWQzZTE5NDQ5MjkyMDA3ODEzN2RjY2MxMzYiLCJvcHRpb25zIjp7InJrIjp0cnVlLCJ1cCI6dHJ1ZSwidXYiOnRydWV9LCJtYXhNc2dTaXplIjoxMjAwLCJ0cmFuc3BvcnRzIjpbIm5mYyJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMi0wOC0xNCJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjItMDgtMTQifSx7ImFhZ3VpZCI6ImIzMzE1MTY2LWYzNmMtYjA1Zi1mZWE4LTY2YTNkZmRhZDE3MSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiYjMzMTUxNjYtZjM2Yy1iMDVmLWZlYTgtNjZhM2RmZGFkMTcxIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkxlZGdlciBOYW5vIEdlbjUgRklETzIgQXV0aGVudGljYXRvciJ9LCJkZXNjcmlwdGlvbiI6IkxlZGdlciBOYW5vIEdlbjUgRklETzIgQXV0aGVudGljYXRvciIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxMDcwNCwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbImVkMjU1MTlfZWRkc2Ffc2hhNTEyX3JhdyIsInNlY3AyNTZrMV9lY2RzYV9zaGEyNTZfcmF3Iiwic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9pbnRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjozLCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2ludGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjMsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6WyJhbnkiLCJoYXJkd2FyZSJdLCJ0Y0Rpc3BsYXlDb250ZW50VHlwZSI6InRleHQvcGxhaW4iLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQmdUQ0NBU2NDRkZNMVFDRFhnMTIyRjljdldGVm1xZUdYM3RRV01Bb0dDQ3FHU000OUJBTUNNRU14Q3pBSkJnTlZCQVlUQWtaU01ROHdEUVlEVlFRS0RBWk1aV1JuWlhJeEl6QWhCZ05WQkFNTUdreGxaR2RsY2lCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVOQk1CNFhEVEkwTURVek1ERTBNVGswTUZvWERUTTBNRFV5T0RFME1UazBNRm93UXpFTE1Ba0dBMVVFQmhNQ1JsSXhEekFOQmdOVkJBb01Ca3hsWkdkbGNqRWpNQ0VHQTFVRUF3d2FUR1ZrWjJWeUlFWkpSRThnUVhSMFpYTjBZWFJwYjI0Z1EwRXdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBVEs3blh5SDRwZ04zVE13Q1dTb01EUmU0RVY4SmwzWHp1aGljWi8yZ3ZoK3p6M1dtVzBPWi9FY1JZRUE4RjI2Y2VldU1jZDIxV1FSUktXcGpXRCtKV2lNQW9HQ0NxR1NNNDlCQU1DQTBnQU1FVUNJUUQ4SiswL2I4UGVZakZSUVlrVVJjcWhheDI3b2x3MWpZL3Bic2toQnVScDRBSWdPQUhiNm4rN2ZOZmZ5b3hwZUNxM1ZaN0Ixak4zd3FtUE5mbmFlQWpkb1hzPSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFTWUFBQUVBQ0FZQUFBQWVNZHZ4QUFBQUFYTlNSMElBcnM0YzZRQUFBSVJsV0VsbVRVMEFLZ0FBQUFnQUJRRVNBQU1BQUFBQkFBRUFBQUVhQUFVQUFBQUJBQUFBU2dFYkFBVUFBQUFCQUFBQVVnRW9BQU1BQUFBQkFBSUFBSWRwQUFRQUFBQUJBQUFBV2dBQUFBQUFBQUVzQUFBQUFRQUFBU3dBQUFBQkFBT2dBUUFEQUFBQUFRQUJBQUNnQWdBRUFBQUFBUUFBQVNhZ0F3QUVBQUFBQVFBQUFRQUFBQUFBZTZTQ2t3QUFBQWx3U0ZsekFBQXVJd0FBTGlNQmVLVS9kZ0FBQVZscFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWxoTlVDQkRiM0psSURZdU1DNHdJajRLSUNBZ1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNEtJQ0FnSUNBZ1BISmtaanBFWlhOamNtbHdkR2x2YmlCeVpHWTZZV0p2ZFhROUlpSUtJQ0FnSUNBZ0lDQWdJQ0FnZUcxc2JuTTZkR2xtWmowaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOTBhV1ptTHpFdU1DOGlQZ29nSUNBZ0lDQWdJQ0E4ZEdsbVpqcFBjbWxsYm5SaGRHbHZiajR4UEM5MGFXWm1Pazl5YVdWdWRHRjBhVzl1UGdvZ0lDQWdJQ0E4TDNKa1pqcEVaWE5qY21sd2RHbHZiajRLSUNBZ1BDOXlaR1k2VWtSR1BnbzhMM2c2ZUcxd2JXVjBZVDRLR1Y3aEJ3QUFENjVKUkVGVWVBSHQzTHVPSkdjVkIvQmQ5bUlITmhMaUloT1FPRWFDQ0RraUlDTkc0ZzM4Q2p3SkNRbENCQVNJQk42Q2hBZ0pKRVJpSkF2WkFveXhmRm52aGUvczlKRnFlM3RtdWs5L3A2ZDY1MWZTTjFWZFZlZFV6YTlxL2wyOTlzeWRPM2Z1dkQvR3N6R2ViT2F4Ykt6WDROSG0rdnhxekdONmNESHpkU0Z3ZjdQODh6R1Blem5OM05mcnZhL2oyanpkWEs5UHZ6SVdUQVFJRUZpVmdHQmExZVZ3TWdRSWhJQmdjaDhRSUxBNkFjRzB1a3ZpaEFnUUVFenVBUUlFVmljZ21GWjNTWndRQVFLQ3lUMUFnTURxQkFUVDZpNkpFeUpBUURDNUJ3Z1FXSjJBWUZyZEpYRkNCQWdJSnZjQUFRS3JFeEJNcTdza1RvZ0FBY0hrSHJndEF2RkxvcVl6RVJCTVozS2hGcWQ1ZDdPYzg4VW1pNWNJaEJXdlMzRFd1RHIvUE1ReDUrYWQ2Qmk5dzJ2VE8rZUhkN2c5RldtVWYwN2o5bnpuTi8rZEh2VkdFTVh4OTVpK1BVWmN2SDJmb1BLQ1IvMVB4L2pqR0crT0VYL1Q2YWdUR3ZXbXF3WEMvdDRZL3hranJsMTQ1L1VZaTZZaGtDWnZqZVZ2alBGNHMyN01URTBDY1EvR2c4N0hZM3gvak4rUEVWT3MzemNUY3QvUFpqd3gvV1VjK0wwNEE5UEpCZklIOE9RSFh2a0I4d2IvNXpqUEdLYlRDanc4OW5Bemd1bU56VW5FeWNRVGs2bGZJQUlwbm5Cam1IWUxSRGpGSjRBWXNXenFGNGkvcHZyNUdKa0o1U1BPQ0tZTW81am5jdm1FRkJLWUtDQzhKMkx1MFNvL3NzVkg1Nk9tZmY5TjZhaURLQ1pBNEZZSlpFQ1Z2Mm5CVktaVFNJQkFsNEJnNnBMVmx3Q0Jzb0JnS3RNcEpFQ2dTMEF3ZGNucVM0QkFXVUF3bGVrVUVpRFFKU0NZdW1UMUpVQ2dMQ0NZeW5RS0NSRG9FaEJNWGJMNkVpQlFGaEJNWlRxRkJBaDBDUWltTGxsOUNSQW9Dd2ltTXAxQ0FnUzZCQVJUbDZ5K0JBaVVCUVJUbVU0aEFRSmRBb0twUzFaZkFnVEtBb0twVEtlUUFJRXVBY0hVSmFzdkFRSmxBY0ZVcGxOSWdFQ1hnR0Rxa3RXWEFJR3lnR0FxMHlra1FLQkxRREIxeWVwTGdFQlpRRENWNlJRU0lOQWxJSmk2WlBVbFFLQXNJSmpLZEFvSkVPZ1NFRXhkc3ZvU0lGQVdFRXhsT29VRUNIUUpDS1l1V1gwSkVDZ0xDS1l5blVJQ0JMb0VCRk9Yckw0RUNKUUZCRk9aVGlFQkFsMENncWxMVmw4Q0JNb0NncWxNcDVBQWdTNEJ3ZFFscXk4QkFtVUJ3VlNtVTBpQVFKZUFZT3FTMVpjQWdiS0FZQ3JUS1NSQW9FdEFNSFhKNmt1QVFGbEFNSlhwRkJJZzBDVWdtTHBrOVNWQW9Dd2dtTXAwQ2drUTZCSVFURjJ5K2hJZ1VCWVFUR1U2aFFRSWRBa0lwaTVaZlFrUUtBc0lwaktkUWdJRXVnUUVVNWVzdmdRSWxBVUVVNWxPSVFFQ1hRS0NxVXRXWHdJRXlnS0NxVXlua0FDQkxnSEIxQ1dyTHdFQ1pRSEJWS1pUU0lCQWw4RDkwZmpMVGZOSFkzNXZqR2ViMTNkM0xDL1h4VzRQRi92RWE5UHBCT0phUEJnanI5Y2hSODdybU5mK2tGcjdFcmhPSU83SnZMZnkvc3g3TG1xWHk4dlhzZS96VElvdjM0d3RZM3I5WW5idzEvamhNSjFXSUM5c3ZKbVlDS3hGSU83TG1DSlhqc21GcjBhRFg0OFI0UlEzK2I0ZjdUSUY0K0FmakJGVHJydDQ1V3VYUUliU3Q4WUJmanpHNDhXQmNsdXN5cHRrZVYxeWUxejMvNDd4aHpHZWptRWlNRU1nNzZWL2oyYS8zVFNNK3kvdnhldU9FZnRHQm4xeDNZNzdidC8zd1B2MnM5L2xBdkZ4TzZZZmpSRVhzam8rSExYeFVUd20xKy9Dd2RmakJhYmNTL0hPR1FsMVRMTkl5ZmpoTUoxV0lKK1U0ck44WEw5OXIyRmNyM2pTL1dnTTEyMGdtS1lLNUQyVmI2Q1Y1czhpbVBJZHQ5SWdhdkpFcXZYcWpoT0lHMkRmVUZydXQrL0g5dVBPVHZWdEZjaVBkYVh2UDRPcFZLeG9WUUxMMExucXhISy9uRisxcjIwRXFnSkhQYkI0MTZ5eXF5TkFvRTFBTUxYUmFreUFRRlZBTUZYbDFCRWcwQ1lnbU5wb05TWkFvQ29nbUtweTZnZ1FhQk1RVEcyMEdoTWdVQlVRVEZVNWRRUUl0QWtJcGpaYWpRa1FxQW9JcHFxY09nSUUyZ1FFVXh1dHhnUUlWQVVFVTFWT0hRRUNiUUtDcVkxV1l3SUVxZ0tDcVNxbmpnQ0JOZ0hCMUVhck1RRUNWUUhCVkpWVFI0QkFtNEJnYXFQVm1BQ0Jxb0JncXNxcEkwQ2dUVUF3dGRGcVRJQkFWVUF3VmVYVUVTRFFKaUNZMm1nMUprQ2dLaUNZcW5McUNCQm9FeEJNYmJRYUV5QlFGUkJNVlRsMUJBaTBDUWltTmxxTkNSQ29DZ2ltcXB3NkFnVGFCQVJURzYzR0JBaFVCUVJUVlU0ZEFRSnRBb0twalZaakFnU3FBb0twS3FlT0FJRTJBY0hVUnFzeEFRSlZBY0ZVbFZOSGdFQ2JnR0JxbzlXWUFJR3FnR0NxeXFralFLQk5RREMxMFdwTWdFQlZRREJWNWRRUklOQW1JSmphYURVbVFLQXFJSmlxY3VvSUVHZ1RFRXh0dEJvVElGQVZFRXhWT1hVRUNMUUpDS1kyV28wSkVLZ0tDS2FxbkRvQ0JOb0VCRk1icmNZRUNGUUZCRk5WVGgwQkFtMENncW1OVm1NQ0JLb0NncWtxcDQ0QWdUWUJ3ZFJHcXpFQkFsVUJ3VlNWVTBlQVFKdUFZR3FqMVpnQWdhcUFZS3JLcVNOQW9FMUFNTFhSYWt5QVFGVkFNRlhsMUJFZzBDWWdtTnBvTlNaQW9Db2dtS3B5NmdnUWFCTVFURzIwR2hNZ1VCVVFURlU1ZFFRSXRBa0lwalphalFrUXFBb0lwcXFjT2dJRTJnUUVVeHV0eGdRSVZBVUVVMVZPSFFFQ2JRS0NxWTFXWXdJRXFnS0NxU3FuamdDQk5nSEIxRWFyTVFFQ1ZRSEJWSlZUUjRCQW00QmdhcVBWbUFDQnFvQmdxc3FwSTBDZ1RVQXd0ZEZxVElCQVZVQXdWZVhVRVNEUUppQ1kybWcxSmtDZ0tpQ1lxbkxxQ0JCb0V4Qk1iYlFhRXlCUUZSQk1WVGwxQkFpMENRaW1ObHFOQ1JDb0NnaW1xcHc2QWdUYUJBUlRHNjNHQkFoVUJRUlRWVTRkQVFKdEFvS3BqVlpqQWdTcUFvS3BLcWVPQUlFMkFjSFVScXN4QVFKVkFjRlVsVk5IZ0VDYmdHQnFvOVdZQUlHcWdHQ3F5cWtqUUtCTlFEQzEwV3BNZ0VCVlFEQlY1ZFFSSU5BbUlKamFhRFVtUUtBcUlKaXFjdW9JRUdnVEVFeHR0Qm9USUZBVkVFeFZPWFVFQ0xRSkNLWTJXbzBKRUtnS0NLYXFuRG9DQk5vRTdyZDExdmdjQk9MNlB4bmozaGpQenVHRUR6ekhwMlAvR0tZekV4Qk1aM2JCSnB4dUJsQUUwbWViZnEveUQrL2Q4VDNtOXp5QlQ0dFRDQWltVXlpdjZ4anhneHJUbTJQOFpJd3Z4NGlQOUsvU0QyOThMNitOOGFjeC9qNkdjQm9JSmdLZEF2R3hLNllmamhFL2dQSGtFMDg4c2J6dk9IVC9mZnV1YmIrZkRaT1lIbHpNZkQwWEFVOU01M0tsNXA1blBqVmxRT1hyQ0phWWRyMk9iY3NuajF6T2ZaOFg3dml5N0prOWNyZmNGcStYZlhLLzNMN2NsclU1WCs2VHk0L0h4bmhpK2lKM01qOHZBY0YwWHRkcjl0bkdEL3p5aDM2NUhNZGF2czdsbkc5dmo5ZTdwcXYyWDI1YjF1YjZuQyszYlM4djk4bmwvSy9OK1hxN3h1dVZDd2ltbFYrZzV0TjdWWDl3WDlYdnEvbDJXRS83ZkdkWnp4azVFd0xIQ2VUSHVlTzZxTDVSQWNGMG8vd08zaURnYWFrQjlkUXRCZE9weFIydlc4QVRVN2Z3Q2ZvTHBoTWdPOFJKQlR3eG5aUzc1MkNDcWNkVlZ3SUVqaEFRVEVmZ0tWMmxnSTl5cTd3c2g1MlVZRHJNeTk3ckYvQlJidjNYNk5vempQK1A2ZGdMNlIzcVd1YldIZmkveUJzZVRGNDB1WWxYUitXS0o2YWJ1R1E5eDh3Znhwem5VUzc3UWQzZUwvZVArWExiY2ptMzVickw1dGtydHgvNmVsa1h5OHZYMlN2bnkrMjVYODV6SC9NekU0Z25KaGZ4ekM3YTVuVHpsM2x6bnQvRjlqdlY5dXZMOXN2MU1WL1dMSmN2MjViNzVEeDdWVjh2NjViTDJYYzVYMjdQNVllYkhmenk3bExxdE10SDVVcGN5TitOOGRZWWo4YUlKNmhER2thd3ZUdkdYemUxOFV1aHBsNkJ1R1p4amI0MnhnL0dpTDh1RUZQK1VGNjh1dDFmNHo2TVgrTDk4eGp2alpGbVk5SFVLQkJ2a25FL3ZqM0dMemZIT1NSUFl0L284WG5VZmp4R3JLaU9kNkxKbUxiZnVTL1crdG9oSUlUMlYyVzF2OVd4ZStZVDZ2ZEdvMnFlUEsrTEo1NlB4b2cvR3BaUFRHUHgyaW1LWTRvVGlUOHhZVHF0UVBqSEQ1dzNnNnZkNDhuSlUvelZSak8zWmk3RVUxTSt5ZWU2Zlk0VCswWW1mUkpmWXNRVTgzMy9NWHg1TU85SXovbE8vaVd1Z1RlRms3TTc0QjRDeXpmTnVFLzN6WWpjOS82K1FiVEh1ZGlGQUFFQ2N3UUUweHhIWFFnUW1DZ2dtQ1ppYWtXQXdCd0J3VFRIVVJjQ0JDWUtDS2FKbUZvUklEQkhRREROY2RTRkFJR0pBb0pwSXFaV0JBak1FUkJNY3h4MUlVQmdvb0JnbW9pcEZRRUNjd1FFMHh4SFhRZ1FtQ2dnbUNaaWFrV0F3QndCd1RUSFVSY0NCQ1lLQ0thSm1Gb1JJREJIUURETmNkU0ZBSUdKQW9KcElxWldCQWpNRVJCTWN4eDFJVUJnb29CZ21vaXBGUUVDY3dRRTB4eEhYUWdRbUNnZ21DWmlha1dBd0J3QndUVEhVUmNDQkNZS0NLYUptRm9SSURCSFFERE5jZFNGQUlHSkFvSnBJcVpXQkFqTUVSQk1jeHgxSVVCZ29vQmdtb2lwRlFFQ2N3UUUweHhIWFFnUW1DZ2dtQ1ppYWtXQXdCd0J3VFRIVVJjQ0JDWUtDS2FKbUZvUklEQkhRREROY2RTRkFJR0pBb0pwSXFaV0JBak1FUkJNY3h4MUlVQmdvb0JnbW9pcEZRRUNjd1FFMHh4SFhRZ1FtQ2dnbUNaaWFrV0F3QndCd1RUSFVSY0NCQ1lLQ0thSm1Gb1JJREJIUURETmNkU0ZBSUdKQW9KcElxWldCQWpNRVJCTWN4eDFJVUJnb29CZ21vaXBGUUVDY3dRRTB4eEhYUWdRbUNnZ21DWmlha1dBd0J3QndUVEhVUmNDQkNZS0NLYUptRm9SSURCSFFERE5jZFNGQUlHSkFvSnBJcVpXQkFqTUVSQk1jeHgxSVVCZ29vQmdtb2lwRlFFQ2N3UUUweHhIWFFnUW1DaHdmMEt2RExkN0UzcHBzYi9BczdIcjAvMTN2NVY3eHIxNTkxWis1emZ6VFVlZVBCN2o2Q3lZRVV5ZmJBd2UzWXpGclQ1cS9OQkZRSmxlRmdnYndmMnlTK2VhSjV2bUh4OTdrQm5COU00NGlZZGp2REZHbkpoM3FJSFFPRVVRUFJqai9USCtOb1p3R2doYlU1cThQZFovWjR3dngzQmZiaUZOZmhuM1plVEovOGI0N296ZWNZTkgwd2lWbUJ2bllmQ2JjYTFpaXBBeXZTaVFiN2kvR0t2ZHorZGpFRSs0Y2IwK3pRdjQ0bVU5N0ZWZStNT3E3RjBSaUhmOWVQZVBKOVF2S2cxdVdVMys4MExNWjl6cnQ0eXYvTzNHZlhyVUUrcU1pNVVua1BQdDd5YUNLN2ZsY3N4aml2VzU3dm1LSFY5MmJjOTF5ejdMMHR3ZTY1YkwrWHE1Ynl4dm45LzI5bmlkeDRybDdmTmVIaU9YdCtmYlBlSjFUTXRqWDZ6WnZTNzN6ZjF6bmpYbUx3dWtVY3lYeTNsdG9pS1dZOHJ0eTIwWFcxNzh1dHcvOTgzNWNzL3RkZms2NTFmdG05dGkzNXppL1BMMXZ1ZWF0WWNjTTJ0eW5yVTV6L1V4MzdWdXViMjhQQ09ZNHVBSnRldEVsdHR5T2VmWDFWNjJQZXR6dm4zYzVmcmw4bVg5c241NzMxeS9xMjY1NzY3bFhKZnpYVDJ1Nm4vZC9zdGF5OWNMWEhZZGx1djNNVi91bjhzNVg1N0Y5cnA4bmZPcjlzMXQyL3RlOXpycnR1ZmJkYkY5MTdydHV1Vit1L2JmdFc1WGo0UFg1WC9xUDdoUUFRRUNCTG9FQkZPWHJMNEVDSlFGQkZPWlRpRUJBbDBDZ3FsTFZsOENCTW9DZ3FsTXA1QUFnUzRCd2RRbHF5OEJBbVVCd1ZTbVUwaUFRSmVBWU9xUzFaY0FnYktBWUNyVDNWaGgyLy9VZG1QZmtRTVQyQktJLy9NNy96UkV6cmQyOFhKbEF2SEwxbkhkNHRjQlRGY0xwRkhjMis3dnE2M1dzRFd1Vi93dHA2ZHhnNysrT2FOWnY1NnlhV2ZXSlBEYXBtLzhJcS9wYW9IOHl3dHBkdlhldHE1RjRQVUlvMzlzenViek1mZlJiaTJYNXZMemlMOFErUFV4UHR6c2trOEZsMWZjdmkxcDhxL3hyY2Q5L2NFWWNhLzdHRHdRVmp6bEU5T24vd2ViYTBWNVU2V0pxZ0FBQUFCSlJVNUVya0pnZ2c9PSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIl0sImV4dGVuc2lvbnMiOlsiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiYjMzMTUxNjZmMzZjYjA1ZmZlYTg2NmEzZGZkYWQxNzEiLCJvcHRpb25zIjp7InJrIjpmYWxzZSwiY2xpZW50UGluIjp0cnVlLCJ1cCI6dHJ1ZSwidXYiOnRydWV9LCJtYXhNc2dTaXplIjoxMDI0LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxXX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0xMS0yOCJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMTEtMjgifSx7ImFhZ3VpZCI6ImJhNzZhMjcxLTZlYjYtNDE3MS04NzRkLWI2NDI4ZGJlMzQzNyIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiYmE3NmEyNzEtNmViNi00MTcxLTg3NGQtYjY0MjhkYmUzNDM3IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkFUS2V5LlByb1MifSwiZGVzY3JpcHRpb24iOiJBVEtleS5Qcm9TIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjUwMDAxLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH0seyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3IiwiZWQyNTUxOV9lZGRzYV9zaGE1MTJfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwiLCJiYURlc2MiOnsic2VsZkF0dGVzdGVkRlJSIjowLjAyLCJzZWxmQXR0ZXN0ZWRGQVIiOjJFLTA1LCJpQVBBUlRocmVzaG9sZCI6MC4wLCJtYXhUZW1wbGF0ZXMiOjEwLCJtYXhSZXRyaWVzIjo1LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQmJUQ0NBUlNnQXdJQkFnSUJBVEFLQmdncWhrak9QUVFEQWpBdE1Tc3dLUVlEVlFRRERDSkJkWFJvWlc1MGNtVnVaQ0JCVkV0bGVTQlNiMjkwSUVOQklESXdNakl3T1RBNE1DQVhEVEl5TURrd09EQTRNemcxTjFvWUR6SXdOakl3T0RJNU1EZ3pPRFUzV2pBdE1Tc3dLUVlEVlFRRERDSkJkWFJvWlc1MGNtVnVaQ0JCVkV0bGVTQlNiMjkwSUVOQklESXdNakl3T1RBNE1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRS9OK3YvUGJ4NjR0RHZNTWlTa2Nqd1A1TThEMklVZnJHbDBIbnpvSE1KR1V3YitSNDhNZXpXaTFKM1pCWGVPcFNIZmpyZ3hGZm8zaXJMZUxWd0lLN0M2TWpNQ0V3RHdZRFZSMFRCQWd3QmdFQi93SUJBREFPQmdOVkhROEJBZjhFQkFNQ0FRWXdDZ1lJS29aSXpqMEVBd0lEUndBd1JBSWdXcW4zZU4reTBWOTMzTUdqM2ZRcmRyVVhzOFZtVXByRXM3QzBOVjk4RFRJQ0lFWUMrKzlkTzRjamFVUnVXNGJkdE96SXEwUDRjVFdkN3BTY0JhakxOM2R4Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUpZQUFBQTlDQUlBQUFEQXVBZVlBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRW5RQUFCSjBBZDVtSDNnQUFCR3VTVVJCVkhoZTdad0pmQlBWOXNjelMvWTAzUmNvM1hjS0JWd1JCSGtpVDU4THF4dkNFM0F0b0lJQ0JRVFoyZ0l0VWlndFZHaWhLUG9YQVIreXlQTGhBUlpaMUVkVm9Qb1FwS1cwQlZxNlpjOWtsdnhQTXJmUWxpWk5sN1FQUC9sK0xuVG1uRHVUeWZ6dXZlZmNtMGt3czlrc2NIRXZnNk8vTHU1WlVDLzh6NEJuTkw4V1lZU0l0M1k3SEdzSWVINU0vTTRzdE8vQ05rakNzd1BIYW4vNUhSZi9yMGpJNmd6KzQ1L3QvZmthdE8vQ05tZ2d4WGh3SExiTU5HTTIwZDFUYUVhQVd5NER3ekc0RXY3YVhOZ0g5Y0xDUjhaQkw4VEVJalBIeVdMQ2NZTG8ralFIcERQVHRPN2lGVXhJY25xRDM4dlA5dDZXZ1h3dWJOTlVRcEZRUURPRHE4OFNjaG52N21Lb3lsdW5BdTRubFo0dUNSMm5lVVlLaXJKYVBkcnBjamlkQVcyNWNKZ1dKeFZkUFlRMm9odGYrbDdGTlMrODUrbE1DVm1Ea1RPWk9CUEYwVFNIYkM2Y1RxZEpxUC92bGU5azBhZjhIanJwKytCSlpUK21waDQ1WERpWlRwUHdZdUlDQWhlYldWYkFtVm1qb1dTeGExYmVSWFNPaFByaXN0b1R4M0dGRENNSWpNQUpoZHYxVGR0cGpSYTVYVGlUenBIdzhyU0ZCT21CWVJpck4zSVVJeUF3QVUyWExzNUViaGZPcEJNa05KVGRxRDU4aEpCS1lFTHBOLzQ1NWNOOXpSUk5LT1RsRzc1ZzlLNTVudFBwQkFrdlRWOU1rQW9CSm1CWVRWVFdvckRVT2JTeERvWlRqakplUzNaOTFPQjBPaVFoek1NTjE2dXE5eDNDWlZKT2IvQVpNVUtvZFBNWWZMOGlLcDZqYUZJdUwxKy9qYU5NcUxZTDU5QWhDVEdCNE1yTUZJSVF3emJOcUdKeVYvRDJ5RFVMR0dNOWRFVElhRXJUTi9KR0YwNmlReEpTbGJlcWR1NjNkRUdEMFh2SU1HbElJRy8zZWVadnNzZ1ltT0FMWmZLeU5ma2N6ZkIyRjg2Z1F4SmVTVXJEY0VJQWlTaXRqdG1ZaXF4V0lsZk9aUXhxZ1pCZzYyckwxbXkyMmx6cm4wNmgvUkpTMWJWVm4rOGw1RkxPU0hrTUhDU1BpMFFPSzc3am5wS0ZScHBOREM1VGxHVnNaczJjZGR4MTBmbTBYOEtTaFJsbU0ydnBnaWIxN1NqWW1MQzBKTWFnd1VqQ1ZIbXJZdDFueU9xaXMybW5oSFM5Nm1iK0xrSXVNek9NY3NBRHNxaFFxcW9hUXVQdFlycFY2L1g0STlLZ1lBSExFVkpaK2FwYzF6RHFKTm9wWWNtU2RXWVREVGtuUnBMRzRyS1RudjEvQ0I3eVE4alEyK1ZNME9BeklZOHlLcTJBd0hFaGFhaW91TDdwUzNTd2kwNmxQUkl5V3YzTjNPM1doek1zejB5WkljNlJKQ1lTTmk4RUFTa01WSUJhcEZSK2JjVW42SGdYblVyeloyZWdiejFTZWtMazc4dTdXK1RTZTB1dlpYMUNrbTVvSDRIaE1nbklCVnNnS21lZ21xV2dORlBYT3ljek1QRVZ0TjhTaHVMU014RkQ3bjUySmpkdlMwSEJDWWxZcktlb3BZc1dSa1UxU1oyYWtaeVMrdWVmeFVKU0NOZFNyNnAvOElFSDVpYk5ycW1wZlN0eHVxZTd1OUZrSERqdzRYZW1UZDI5WisrT3IzYkk1UW83bWJLSk52VkxTSmcxYTJaeGNmR3NPZk84UGIwNE0wZVFSTzdHSEZURE5ucTk0ZDBaTStGTzRCaGVXMSsvTVNmYjE5ZmVYVzAzSlByck1HYVc1ZXJVUFY1NndkckpHb0MrSmlLcnZ0d3ZFQWxCUUZ3czloMzNwT1dKd2taM2h6UFJoait1b0owMmN1SENoZjNmSHBETDVWcWRidVo3N3lCclN5VE5uYjhwYjdOY0pvY3JVcW5VOGZGeHUzWnNCenRGR2ZmczNSdmc3Ni9UNmlSaUNWait2SHhsNy80RG5oNGVadHNhR2cxR3lnUnRVUkFlSG42aHFFaWoxcEFrV2E5U2pSazkrdWwvUE1uWHNjWFdyWi91M1BtMW05TE5hS0R1RzlEZlNmb0JiWllRbEl2ZHRocnROT1ZHL2c1UzVHNW1XRExRSXk1L0ZiSjJCaUt4V0NxWFFXRUZITVJXWkwyTHVmUG01K2JuKy9qNmduNXdvL3NQU1BqK3UyTzhDN3FDVkdvNUEyYzJ3OW5BSWhUQzZHNngySkVRdzNHUnhLSTNrSmFhTXVYdFJIOFBkNXdrbDZlbHRTb2h0Q1JQSDIrUlVLalJhRk5TbGlDckUyaGJMS1FwMDlYbDYwdFhiTGlhbkZYK3lkM3BTY085WUZtMFlRV3NwYXR5cjZabWw4S3hHVnRzM3JDT01XLyt3bzE1K2Q1ZTN0YitwNHFMaXI2dFg0dm85THFheWx0VmxsSnRwNmpyVlh6OWNjK1BWY2prTE1lS3hhTGZmdis5c0xDUXQ3Zkk5cTkybEpWWENJVkNpcUw2RCtqMzhFTVBJWWNUYUp1RUZSbjVseFlzdnZMaHFvdUw1cEV5UzF0MkJBaVBkRlhOSHdzL3VySmcxYVZaYzI3dE9ZSWNuY2VDaFIvbGJNcjE4YkhxcDFaSGhvZWZLRGlLZkRhWTlmN00ycHFiWlNXWHltMlhxaHVsWDJ6YmlnNkFWNWszUjFXbmdwZFFTR1hKS1N1UnRTWFdaYTlYS09Ud3h1dnFWUjhtelVGVzU5QUdDU0VLbG1ma1NXUUJoRVRxSHY1Z3dLdGprY01Cd2xMZWw3Z0ZFUW8za2NqdnF2V2o0RTdzaS9NWGZKU1ZzOUhYMXdkdXJscXRqb3VPUG4yeUFQbHNJNUZJUEQwOWxlN3Vkb3FIaDRkQ29VQUhDQVRUcDAvRE1ZempPSkZFZXVyTXFlTGlFdVJveXNGRGh5LytjVmtvRXRFMEhSMFI4ZFJUclF5NUhhUU5FcFpuZldhcXJoSUlDY2FvRGt0dFU4c3lFMkp4ME13cHJGYU5TVVRhYytkcURwM29yTlcySlV1VGN6WnU4clBHUDdWYUE4bHF3ZkYvSTErTFlCMXFQVysrOFpwR3E4TnhUQ2dVcDZWL2pLeE5XYnMyU3lhWHdmVkFQSjcxd1F4a2RSb09TOGlaeXo3T0phUUtzNG1SQm9jRnZQd01zanVFUmErZzJhOFRDcVdBNHdpUnZMTWVqbHF5TkdWdDlub2ZIMHYvMDJnMDhiR3hKKzNHUHd0bTY5VzBsNlNrT1NhakVXWmlrQnZ0UDNDZ3RyWUdPUm80ZmVhSHM3LytBdk1maG1FQy9RTmVHZjh5Y2pnTlJ5VXN6L3ZTV0ZHT0NVbmFvQTViMHA2V0pWUXFBNmUrd21vMW1FU3MrcW13OXZnWjVHZ3Z5OVBTSWVUNGVGdmlINlQ3MFZGUlI0NGNSRDdiZ0g0ZGtkRERYVGwyekNpWTgrRTRUalBzdXF3TnlOSEEycldab0I4L0pDUW12b1dzenNRaENTRy9MRnU1MGRJRmFVWWFHTlJqeXZQSTBVYUNrdDdHWVNvTkhWRW80eU5pTzhBSnl6VXZYNW0rS24yMWw3Y1hURW1oLy9XT2l6MTI1SkNkK2NadFlCVGxCOUtxcXFwZno1MHYrdTEzTytYOCthS1NxODBEM3NMNTgzUmFMWFJFU0ZpMi9kK1hFUENRUXlBb0t2cjl1KzlQU3FWU2xtWGRQWlN2VFptTUhNN0VJUW1ydG42dEx5bUI0WjgxYUVJK25JYXNiVWZzNDlWenlnc3N4QktwdVA3NzAvV25MWGw1bXlJVFpCTktON2ZzOVRucHF6TzhmWDFBUHhORnhjZkZIVDY0SHliZHFKSmo1T1p0R1REZ2dVRkRodzBhWXJQY1AzRFFqUGRub3dNYUNJOElmMnpvRUNORjRRU2hVcW56Tm05QkRvRWdNeXNMalB5by91cUVDZkl1K1lLWVE4MjJkSG1PVUNJM000dzRvR2ZQdCsydGtMVkswUHhFSENiTEhJZVQwcEpGYTVIVllXUlNhY3J5dE9RVks3MnQ0NmZBYkdZb1UrN0dISmlCb1JxdDBqQ01LdVFLSDM5L2Z6OC8rR2VyQlBqN1FWYUtEbWpFZ2cvbnFWVXF6Q3lRSzJTYjhwQ0VwZGV1SFRod1NDNlRRY29xa1lpbmRja29DclF1WWVYMi9mckxsd1VpRWF2WEJzMTVneC9IMmdlMEJrbFBmLytKWTFpdEhwZEo2bzZlVUowdGNqd3lXVFREOENQSGpya3BGTkFkZVF0R0VuT1M1dk1WSEtLaDF4dU5ocnE2T2xWOWZYMWRuWjJpMTdYd1FQUEREejJZMExjUFJadUVwTEM4dkdMM045K0FFY1lHbW1VZ1JtcDF1ckdqUi9uNStmR1ZuVTNyeTl3LzluM0srT2MxRE9LTVREcXc3Q1JwWFoxcWtXTllDS24wZ0hncDd1VS84SkxOek5CUVd2Rmo5SEJjSk9TTWxPY1RnL3NkekVjTzI4dmNzNVBtZmZIbDlzWlROSlBKUkp0b3lOMUJ4cHJxNnBSbFM2WlBUVVMrbHJoNTQyWlVYTitBSHY1NnJXN1VxSkVic2pOUG5qcDE3UGgzTUR0RU5WcUNwcG5JaVBDWFhud0I3VGRpejc3OXIwNSszYy9QMTJnMHhzWEU3TnZ6cjlqNEJNdFh6REZNcjlPZFBIRXNJandDVlhVeXJjU1A2L203Nm90T2tRSXZScUNPbVo5c1J6L0FMR0F0MzlObm9EUlpZR3VHTkNUUTc4V25iMzcrTDBJcXUzWG9zT2I4UmJlRVdPUnpESzFXMnljK2Z0alFJWm1aMlVvdkQwOHZyMlVweTBjTUh4NGRIWVZxMk9aMjZIMTA4R0FvYUtmdGpIcnUyZUJlZ1JxZFhpd1dYeTR1SGo5eEVzMHdrTWpBdFQwNTRnazcrakVNdS8ycnJ3SUNBbUJJMFdnMUpwb09DdzNwbDlCUEpISTRGalRGM3FnSTd4YjZaVXhLV2xUNmd0amxLM3JPZkIwNWJDRDA4aFg2K3dnRGZFbGZMMlN5UWNqaUdlTEFRS0cvcjhTdlYxbkduWFRBRWVBZUJRZjEydi9OMXhDUSt0M1h6NkRYd3dBaEVncW52TjVGc2VjMjc3NHpYYVcyckxjUk9GYjQ4OCtnSHd4cERNM01uUEV1cXRFU0pHbjVIWU9SWTU1L2R2U1ljK2ZPVXhRMWFzd0xVYkc5WVVoQU5kb0tuQTQ0TzNEc2QrTFlBcmUrOEQ5MXM0bzNRbGptTnh5aFdWWEhqNFJYdVYxWmYrWHFVVUZRZ1RMaE9CbjEyOFQza2RWc25qVm5ia0N2a01qWStLQ3d5RUdQUGdadm03ZVhscFVGQm9lRlJjWkV4TVo3Ky9WWThORmkzbjQzTjY3ZlVMajd3Qmw2OUFxZE92MDlaTzBZMElGQ3c2UENvbUlqWTN0SHhNVER5UU5Ed2tlTkdZZmNkb21LNjZQMDhyMTA2Ukpzbnp4MVdxcndDSStNTlJnc2l3WnR4VjR2dEtRUER0T3NhcHVTRkFjcncrVkMvRnVYbVNFU29kL0hDZTdWS3pWNWFYMjlDbndlbnA3WjJSdCsrczlaM3RVRkNFbnl0U21UTkNvTmJGdXpZek5vOE1GTXg5YzlNTXBvK1RBeU5qYkdUZUVHZzJwNVJUbnZxS3lxZ3Y5cnFtc3F5cEVGS0R6Nzg3TGsxRzJmZndGNUFESlphVW5DMitHaTYybjFwVEV6aGpXNTVrbXYvblBFOEwvcE5GcG9DUjVlbmhQK09RazViTkd4TmRKbXZQZnVPeEtaR01ZUjJJWTcyN2R2bjZGRGgvQXUrNkJyc0xaZXZWNW5OQmtKZ29RWlRsYjIrbERvMVBIOVB2MXNHL3hOR1BBUVRER2hEblR1RjErWjhOTExMMzc2MlJkZVBnR05XMm9MRWxwK3RxZTdhTzJsNFozRHlJdDJHc2pmc2xrbWs5RTBEYk5EbFVyVFNsRHMyQnBwTTl6ZDNVTkRRbG5XRWdvZ1NNOThkenB5dEFaY0E4akhUMmNYTGxpc3JxMmJOSEdDbTVzYnhOZVE0RjZFVUxoOTU2N25ubnR1MEtDSHdUaG4zb2Q3djltN09qMHRKaXBxUzk0blFyRjQ1T2c3SHhNMWw5QU1OOUZ1MnVsVU1Nc0kyZVk3TEpOSmN6WmtxMVFxdUkvdTdzb2R1M2J0UDJCenNkUnk3OUJtSjNEMDZQRno1eStBRXRDQUlzTWpSbzhhaVJ3T0lKZkxaOCtiSHgwYmYvSFM1ZDI3djE2NUVqME9iMm1PRkpXMVp2Vm4rWG43OXV4bWFQcmJBd2VVM2w0OUEzdUNOemc0Mk1mYlM2WFduRG1ERnBtYlRpcGdrQ0xJSDhNZkU5elYwcnNDR09MZzlkMlUvRE5VYmVMdkk0WlBHUC9TamwyN1FVTEkxeWUvOXNhMWtzc3lhUXZyVzVaK2JOMVl0eTQ3ZFdVNjFMZnV0WXlSTWo0K2JOaldMWGxvL3k1V3BLZDdLSlZtZ2FVTExsMjBFRmtkUTZmVlphL0pDQWtOUWZzTlFFT0U5dzlobGQvVjZRMFVSWU1GSnFDOEJhWXhrQVJURFJHeFNTKzBKQlk0eHBsb2ptRzdvZENzNVFGK2pHaGZOOGxlbHhrWTRBL0pLZzV6RExGNDdMaFdQdVZoT1k2R0dRREwyaW5ncHBzK1JOS1l3c0tmZi96cHJFZ3FnWG85L1FOZW5UZ1JPVnJpME9IREd6YmMrWklYTkZOb1NUcDlDNy9TeExmZzIwa2VOTEllOEw1TXBxdFhyL0lXUGFqTHN2MFQrdk83U0VLWWoxdVVvMHlXMzdKajJPNHJjQmttdUF5T3NWd0dmMjBBd3pDUUxKZ2dpd2V2N1IrSHk5K1NCMDBiV2l2a2lzY0xDckxYMzNsVUVKcTJDUTYybk1NRVo3TllPRFByQUh5cTBpSXIwbFlwbFc1d3A3VjYzZVRKayt3c1BVSWZoU1kxZlhwaVFjRUpaTkdvb1lsVVZsYnl1NDNSNlhRbUZoclhuYStETFZ1OGlNRHd6TXhzMkQ1OStvZVNQeS9QVFpydDRlbk9lOUVDMjRXeGlicWl5ekNSNTYyT0EyL0E1aDF0eldzSHprRDVqQndldFFZTlRhbkxWMzZ6ZDU5VUtvSGhaZk9talFrSmZYajczYXhhdldibnJxOGxVZ204cjVxYTJ1K1BIZlgyc2F3elZGWlZQdjdFUDd5OXZZd0d3OTlIakVoSlhySmx5OWJzbkU4VWJuY1c3ZTRHK3ZTZ1J4NVo4M0U2Mm05RWNYSEpmUThPOVBIMUFZMmh3NXd2UEN0WHlKR3ZKZDZiOFVIUmI3L3QyN3RicjlPKytlYTBHN2NxaFlRUUo3RFJJMGQrOFA2ZGVjalNaY2tIRGgzR0NjTFQzWDNhMU1Sbm4zbWF0Ly95eTYvTFY2eWtHQVlYWU9OZmZySHhtcDlGUWhDeG9kZisxWUQ3QytNcTJ1bFUzbmhyNnJjSER5b1VDclZhL2NacmsxT1RseUZIbDJPVjBOcGQyb2Y5WXp0eTV2OWxidDJxam8xUGdHa29ETkFtaWlyODZVeVhmUzV4TjVZVzJwRzdiUC9ZdjZSK3dLcU1OYVNReERFTThoRVk2N3BSUHdERlFoZU9ZekFhd3lPaVpkWlB2aUQxT0gzaWVIaDRPTy9xRnB3U0ovN2F3SVFTa2trSXNhRGxzS0ZEdWxjL3dOVUwyMHl2MEFpUlNBUVNxdXBWUnc3dDY5OS9BSEowRTY1ZTJEYlNWNjJ1S0MycnE2Mi9YbkdqVDUvNGJ0Y1BjUFhDdG5IdTNIbWFvYUVMTWd3YkZocml2SytjT1k1THduc2UxMEI2anlNUS9EL2V4TGc4Ui80c1FBQUFBQUJKUlU1RXJrSmdnZz09IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMSIsIkZJRE9fMl8xX1BSRSJdLCJleHRlbnNpb25zIjpbImNyZWRCbG9iIiwiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsImxhcmdlQmxvYktleSIsIm1pblBpbkxlbmd0aCJdLCJhYWd1aWQiOiJiYTc2YTI3MTZlYjY0MTcxODc0ZGI2NDI4ZGJlMzQzNyIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwidXYiOmZhbHNlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibm9NY0dhUGVybWlzc2lvbnNXaXRoQ2xpZW50UGluIjpmYWxzZSwibGFyZ2VCbG9icyI6dHJ1ZSwiYmlvRW5yb2xsIjpmYWxzZSwidXNlclZlcmlmaWNhdGlvbk1nbXRQcmV2aWV3IjpmYWxzZSwidXZCaW9FbnJvbGwiOnRydWUsImF1dGhuckNmZyI6dHJ1ZSwidXZBY2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOmZhbHNlLCJhbHdheXNVdiI6dHJ1ZX0sIm1heE1zZ1NpemUiOjIwNDgsInBpblV2QXV0aFByb3RvY29scyI6WzEsMl0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6MjAsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6NjQsInRyYW5zcG9ydHMiOlsidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN30seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTh9XSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5IjoxMDI0LCJmb3JjZVBJTkNoYW5nZSI6ZmFsc2UsIm1pblBJTkxlbmd0aCI6NCwiZmlybXdhcmVWZXJzaW9uIjo1MDAwMSwibWF4Q3JlZEJsb2JMZW5ndGgiOjI1NiwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjEwLCJ1dk1vZGFsaXR5IjoyfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjItMDYtMjMiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6NTAwMDEsInVybCI6Imh0dHBzOi8vYXV0aGVudHJlbmQuY29tL2F0a2V5LXByby8iLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IkFUS2V5LlBybyIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjIwNjIzMDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjMiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNC4xIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIyLTA2LTIzIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjUwMDAxfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIyLTEwLTA3In0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiMmViOWZmMzU3MmY2NzYyOGQxMjkxYTNiNTc5MjRmODE4YWFkOWU3MiJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyIyZWI5ZmYzNTcyZjY3NjI4ZDEyOTFhM2I1NzkyNGY4MThhYWQ5ZTcyIl0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJIeXBlciBGSURPIFUyRiBNaW5pIFNlY3VyaXR5IEtleSJ9LCJkZXNjcmlwdGlvbiI6Ikh5cGVyIEZJRE8gVTJGIE1pbmkgU2VjdXJpdHkgS2V5IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiLCJyZW1vdGVfaGFuZGxlIl0sImlzS2V5UmVzdHJpY3RlZCI6dHJ1ZSwiaXNGcmVzaFVzZXJWZXJpZmljYXRpb25SZXF1aXJlZCI6dHJ1ZSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQnh6Q0NBV3lnQXdJQkFnSUNFQXN3Q2dZSUtvWkl6ajBFQXdJd09qRUxNQWtHQTFVRUJoTUNRMEV4RWpBUUJnTlZCQW9NQ1VoWlVFVlNVMFZEVlRFWE1CVUdBMVVFQXd3T1NGbFFSVkpHU1VSUElEQXlNREF3SUJjTk1UZ3dNVEF4TURBd01EQXdXaGdQTWpBME56RXlNekV5TXpVNU5UbGFNRG94Q3pBSkJnTlZCQVlUQWtOQk1SSXdFQVlEVlFRS0RBbElXVkJGVWxORlExVXhGekFWQmdOVkJBTU1Ea2haVUVWU1JrbEVUeUF3TWpBd01Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRXJLVUkxRzBTN2E2SU9MbG1IaXBMbEJ1eFRZanNFRVNRdnpRaDNkQjdkdnh4V1dtN2tXTDkxcnE2UzdheVpHMGdaUFIrellxZEZ6d0FZRGNHNCthWDY2TmdNRjR3SFFZRFZSME9CQllFRkxaWWNmTU13a1FBR2J0M3J5elpGUEZ5cG1zSU1COEdBMVVkSXdRWU1CYUFGTFpZY2ZNTXdrUUFHYnQzcnl6WkZQRnlwbXNJTUF3R0ExVWRFd1FGTUFNQkFmOHdEZ1lEVlIwUEFRSC9CQVFEQWdFR01Bb0dDQ3FHU000OUJBTUNBMGtBTUVZQ0lRQ0cyL3BwTUd0N3BrY1JpZTVZSW9oUzN1RFBJcm1pUmNUanFEY2xLVldnMGdJaEFOY1BORFpIRTIvelordUI1VGhHOU9adXMreFNiNGtua3JiQXlYS1gyem0vIl0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUkwQUFBQVdDQVlBQUFEOS94OGxBQUFBQkhOQ1NWUUlDQWdJZkFoa2lBQUFCM0ZKUkVGVWFJSHRtazF5MjlnUngzOE5JdExTekFuTW5NRE1Oa21WNmFxcHluSjRBOU1uTUNTU1ZhRzBNTHdRc1JCbHdTY1FkWUtSVmxtbFJHNW1HK29FUTUwZzFDNVVTSFFXai9oKy9OQkV0bWNtK3E4SXZFYS9ma0Qzdi92MVk0Vk5PQXhhL1BtN0tqLytZMW9hOC93cWYvbnIzL25UZDNmVzhXZjhadUd1SFduM213Z1h3QnZyZUdVdkJCcEFnOFBnSFo5Nnd5OWk0VE8rTGRyOUppS3ZWbGRqQnIyUll4WHNudFNCaXcyS2hvaThUYTRkTGpnTVdrOW82ak4rQ2VqMFBVUm13QmlKcm9tbzBRa2FaYWZwbnRTSjVBYVI2Z1pGYjB2M254M25Od2lwTXVpTlVCMmlFbEtKSnFEMWZIcnkvQ29xRjJzZHhqakYrZG81ak9Pd01WVmw2VTZpYTA2UEo3bnhUdEFBWHErdXhpeVk0cEk2NldMK21kQ2Y1WjdwbnRSUjUvdFVoa3QrRjFXSjVCVWl0WklOcWxPV01pYnNwYlZZcCsrQnZGaHJkNnczN0UxTllGVmVJMnA1VHpKaDhlOXh5Y1o0YlNxdmNzK0pqdmlQM0NXMlBNYU9HRjVRbzZLdlMyc1ZIWEY2Tk1ienE3ajc3ODNhWmNiWjN6N241THlnbHJ6amlMdmsrMFdZT1VTcXFOWVlIRS9vQk0yODA3aDdWeUQxekoxckJyMVJzdUJTeXRJRFZGb0lyNUpiRGhlMCt6UE9qcTZzQ3hZOFlxZFFSNEJKUWFJQmZGajkvZ2p6RVBZUEFQTWlLM3QvQVBLTUZvbUhKSTUxRC9QUDZONFFrZGZZSUdLcXVWd3RKdXVESVliTEdKaWlFaUpxMTQxQ1pXL0dZWENRNk82ZTFJbWNINEFhb2dWeEFWZkhxM1Uvemc2QWRoQWl2QWV4bUNMUUNlS2ExRGZxRlNEdk5DNjFaTnpSTVdEc0Z1cXJKUTFCakhPaHN6UTl0ZnREeUx4azVaYkZ2SlVzV3ZXSGdra2ZHUnlGTE9jTmxOdkMyTVdxTHZyZllTSTJUSzVGM2hyalYvQ0NXaTVkUm5qV0tMZkI0U0tuNjZrZ1VrWDBITTgzakJMSkZjTFR6OU1KZk9Nd1h3aExRdHBCQ1BJVHlFKzR0Rmc4REEzVEhBYXRUS1FhaDFuT0c0VCtETSt2bG1vYzFVdk9qb3huR3BrR2xmMVJ3amdpVlpRTDRJOVBZdnlnNTlQdXR4QjVDVUFGRC9ETWIvV1RLRk85NDlOUk9UV3FYaUlTVTI0Tko4T1lEZzNpeUVvZk9BQXBNaUFzNXVWN1dkMVpsaFNwNHU3WGdWRmk5enJkb211Y2ZJc2RTak1oR05VN0lDNWM4N0xHanNmRHBFQ3ZlTnMxa2FybkdYcTdaMGt6aVZaM2Z3aGtjL2MxWjBjcEE1MGVUNnlPZzlUcEJENkRudit6REM1Q3hWKzFBQUI5aStmN3NGL05PYnVJdlJBWG1TWnBGcURUYnlXczZ0Z1lRQ1k1K1UzSTZ4N1JEcHE1ZEYzRVFxNXk5Y2htNVp2dHlNNGowbG9yMndsMm0yNUh1RlRVejdGSWhKZGZsRmJUU09hVzVTcGx4VVZ6ekNhaFA2Tjcwa0tkZjZhUDZudmlYR21EOHBKdVAxOGJSTHkwcFdjKzlZYkp4elpSN0tGYVM1MWR4d3lPZHZ2UTN4SVZibWozZlpZUDF6dW5VUnU2SjNXeTVkR3VUdjRFY0JGcFpxN3YxKzU4aWluTDNic3BGTTF3ZWp5aDB4OG5VU3hTeFF0cWF5TkxhS0VGZHJBNVREcm9BemZHSG4yZjMrWEpiczRaVWN2VmJ2RU9JWStiVW5TcXpqZzcrdjFHM1NvTnNMQ01TV0dHRVlVYXlCQjNIOXJCRU9GeXd3Y3YyMkdDbzRFNjloM3VWNEJEdkNzQlVQNjFSczZTc3NTZUo3VkE5enRUOFE0d0wvY2FvRlJqYmFieEZpb2pWRWFaK2dQZ25taHUzK1dWZEt4cFEyUjFaMWxWOVM2eGFmbmdvWHBwZmRZNHh0T2s4SzhFRnpUREROUTRERnA1dHBFWkVqVUlqMWRidlA0UStONmlLKzR4Wkl1KzhjYlpWZStRUXFRcnRYemhXTUFDRDdjdy8zSUR5NnlkbTF1Y3FHVk5FWVlaQ3M2K3JsaTE0aHBIVTV2TUhDMjh3TWZWSm9wWFdPTUh2R0JZQ2pDYkhWSFJycThQRnlWRVNPbGE5Snp1eVNScHVpM202WXMxUFlGc04vZysrV1g2T0lVZXc1YVBLVElzRmNvbTZqN1lIOEF3Vjd1ZjByM3llU3ViWlhjNHUrUitZOWV1TmNJYlZLdUlaRnNTWWFscEdkdHUyZ2ZoNm4xZEVUTzk2WlhrMTdISkRyTXJTcTgzbFFGYlpiVytwUzdJd1ZrMTRhNHpocG90ZHR4bmlSM0diTXZ6UFFHSlRFUEsxc2RSUG4reDRpd2JmY0oyQm9oM09GL0tudUk3UkxjMzZBYTlFWnB4a3VpUmZSenpYZEtncld3S3RJS3NtMm1PbWw1U3B0MWkyZUlYWVBvMGkzbUx5dDRrb1V5UktoRTNkRS9lY0hvODRUQm81WG9iQUJIditIUThzWjVWS2JlYzlVcjcrMThQOUp4T1VIWkdpUTZzREFMbUhicjdVK0JGcnQxZ2pqaktUcVRVY2cyL1NtVFJ1OFVPMWF0TWdkMWFIZEZNckxJd0lpMHJQdEFPM2lKTVVhMUR0bDdUcllGbG5NWnNsNXVyWXM3UVpldzQ3YjVuSWlkRFh4RnArejF5aGdqWm92U081VU5qMjhTL2JLd3I4amZzV0VKL1JxZnZKOGNBcXUveGdpRktsZVNJSUR0RlZxOWVNckE1NHhZN2x1TGowaVQ3ellwenhiSVMrYWpUU0dXcEFUVWtZNGh5dS9iNEo0UDA3T24wZUVMM3BJRTZlY2NwZGt0VkwzTmQxM3dqNng1SG01eHQ2RCtvVEpMekYxdFJGekZkblgrc0wvcDJrZGsyVC9tQnpVVTdwSjNick81c04zZHdGTkx1MXhGcUNDWU5MQmppOGhFMFBsdXFBeTlXRzVBWkVWZjVMdllqN0FoN1U3eWdUZ1VQMFhxcUcrTUF3cFRGS2dXZUhrK01yUG9nOWZ4MzB6SElpT1U4TEU1bG5iNTB4OUJwNmpoWm1PT0RmRitsRTJSYlRHKytacFBwR2Q4RzVmL1RuQjVQVmdYdWZYNUF4eVdIeVNMaTNiUEQvSC9BL3MrOW91TW90eXdlbWxaWkkzRHcvSGZQWnhoMFQrcDArcVBraU4rR1R2OVh2RXQ2eHMvQmZ3R2hobW5ZY2F5ZGdRQUFBQUJKUlU1RXJrSmdnZz09In0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMTktMDgtMDIiLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ikh5cGVyIEZJRE_CriBNaW5pIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVMkYxMDAwMjAxODA5MTgwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMy40IiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjEuMCJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMTktMDgtMDIifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyJjZDlkZDc3Y2Y1ODBkZmUwNWQ5ZDA4OTg2NWExNjRkYmI2NDMyY2QyIl0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbImNkOWRkNzdjZjU4MGRmZTA1ZDlkMDg5ODY1YTE2NGRiYjY0MzJjZDIiXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlRydXN0S2V5IFQxMTAgVTJGIEF1dGhlbnRpY2F0b3IifSwiZGVzY3JpcHRpb24iOiJUcnVzdEtleSBUMTEwIFUyRiBBdXRoZW50aWNhdG9yIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwicmVtb3RlX2hhbmRsZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoyNTYsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDcFRDQ0FrcWdBd0lCQWdJQkFUQUtCZ2dxaGtqT1BRUURBakNCcnpFTE1Ba0dBMVVFQmhNQ1MxSXhFVEFQQmdOVkJBZ01DRk5sYjNWc0xWTnBNUk13RVFZRFZRUUhEQXBIWVc1bmJtRnRMVWQxTVJjd0ZRWURWUVFLREE1bFYwSk5JRU52TGl3Z1RIUmtMakVpTUNBR0ExVUVDd3daUVhWMGFHVnVkR2xqWVhSdmNpQkJkSFJsYzNSaGRHbHZiakVjTUJvR0ExVUVBd3dUWlZkQ1RTQkRRU0JEWlhKMGFXWnBZMkYwWlRFZE1Cc0dDU3FHU0liM0RRRUpBUllPYVc1bWIwQmxMWGRpYlM1amIyMHdIaGNOTVRnd056QXlNRFV6TVRNNVdoY05Nak13TnpBeE1EVXpNVE01V2pDQnJ6RUxNQWtHQTFVRUJoTUNTMUl4RVRBUEJnTlZCQWdNQ0ZObGIzVnNMVk5wTVJNd0VRWURWUVFIREFwSFlXNW5ibUZ0TFVkMU1SY3dGUVlEVlFRS0RBNWxWMEpOSUVOdkxpd2dUSFJrTGpFaU1DQUdBMVVFQ3d3WlFYVjBhR1Z1ZEdsallYUnZjaUJCZEhSbGMzUmhkR2x2YmpFY01Cb0dBMVVFQXd3VFpWZENUU0JEUVNCRFpYSjBhV1pwWTJGMFpURWRNQnNHQ1NxR1NJYjNEUUVKQVJZT2FXNW1iMEJsTFhkaWJTNWpiMjB3V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVFJZnFIaXNpMG9PL2V5T3FTYURycjlpdEcySXltQmtIblNER1FJSVltVCt2cUE4QWdPODFtb21jMkxkNVBHcEVONm11RTU0d1BIUWp2Yy95Q2loOHUybzFVd1V6QVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUFNQjBHQTFVZERnUVdCQlMzSi9meGlBdjIyaXJkQnM5OFNPRGhGN2tVL2pBTEJnTlZIUThFQkFNQ0FRWXdFUVlKWUlaSUFZYjRRZ0VCQkFRREFnQUhNQW9HQ0NxR1NNNDlCQU1DQTBrQU1FWUNJUURjNDFMRks0TEpDQlUyVlZLSXo3WjZzeFBoVUVraDhuTFNMSzZJWGRrUDV3SWhBSWVLVk9aY2hhVk81YUY3ZmJkWG9TcmN5eTFZWWVVZVBMb2pjS0k5Zlg4NCIsIk1JSUNnakNDQWlpZ0F3SUJBZ0lCQVRBS0JnZ3Foa2pPUFFRREFqQ0JuVEVMTUFrR0ExVUVCaE1DUzFJeERqQU1CZ05WQkFnTUJWTmxiM1ZzTVJBd0RnWURWUVFIREFkSFlXNW5ibUZ0TVJjd0ZRWURWUVFLREE1bFYwSk5JRU52TGl3Z1RIUmtMakVaTUJjR0ExVUVDd3dRUTJWeWRHbG1hV05oZEdVZ1ZXNXBkREVaTUJjR0ExVUVBd3dRWlZkQ1RTQkRaWEowYVdacFkyRjBaVEVkTUJzR0NTcUdTSWIzRFFFSkFSWU9hVzVtYjBCbExYZGliUzVqYjIwd0lCY05Nak13TnpFeE1ETTBOakUwV2hnUE1qQTNNekEyTWpnd016UTJNVFJhTUlHZE1Rc3dDUVlEVlFRR0V3SkxVakVPTUF3R0ExVUVDQXdGVTJWdmRXd3hFREFPQmdOVkJBY01CMGRoYm1kdVlXMHhGekFWQmdOVkJBb01EbVZYUWswZ1EyOHVMQ0JNZEdRdU1Sa3dGd1lEVlFRTERCQkRaWEowYVdacFkyRjBaU0JWYm1sME1Sa3dGd1lEVlFRRERCQmxWMEpOSUVObGNuUnBabWxqWVhSbE1SMHdHd1lKS29aSWh2Y05BUWtCRmc1cGJtWnZRR1V0ZDJKdExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCQWgrb2VLeUxTZzc5N0k2cEpvT3V2MkswYllqS1lHUWVkSU1aQWdoaVpQNitvRHdDQTd6V2FpWnpZdDNrOGFrUTNxYTRUbmpBOGRDTzl6L0lLS0h5N2FqVlRCVE1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdIUVlEVlIwT0JCWUVGTGNuOS9HSUMvYmFLdDBHejN4STRPRVh1UlQrTUFzR0ExVWREd1FFQXdJQkJqQVJCZ2xnaGtnQmh2aENBUUVFQkFNQ0FBY3dDZ1lJS29aSXpqMEVBd0lEU0FBd1JRSWhBTlZuSmRlLy90QkxxOE1ERGkrU0FkNlVkWUlaU25nNFBNcW15TnJ2Wmo2NEFpQVgweFN6QWhGYUNDcC91aHBWZ25sRitYQmdyd0FJc290WkdUQjZya0IzMUE9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUErZ0FBQUV4Q0FZQUFBRHZEWWdxQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUVuUUFBQkowQWQ1bUgzZ0FBRmljU1VSQlZIaGU3ZDBIZUJYRjJzRHhONzNRQ1RWQTZGSUZGS2tDVXV5QUV1bUtZa0ZVYklDQ0lpS0NVZ1FFN0wwZ2RsUXNLQ3BTcklnZ1NDK2hKblJDSjRIMGIyZnZlRC8wa2hDU25jMmVrLy92dVhtWWQ0NlhrSk56OXN5N00vTk9RSlpGQUFBQUFBQkFnUXJVZndJQUFBQUFnQUpFZ2c0QUFBQUFnQWVRb0FNQUFBQUE0QUVrNkFBQUFBQUFlQUFKT2dBQUFBQUFIa0NDRGdBQUFBQ0FCNUNnQXdBQUFBRGdBU1RvQUFBQUFBQjRBQWs2QUFBQUFBQWVRSUlPQUFBQUFJQUhrS0FEQUFBQUFPQUJKT2dBQUFBQUFIZ0FDVG9BQUFBQUFCNUFnZzRBQUFBQWdBZVFvQU1BQUFBQTRBRWs2QUFBQUFBQWVFQkFsa1czUFNzek5WWFNEeVRLcWExYjVkU2FkWks2ZTQra0h6OW05NG4zLy9tQWNRRWhvUkpjdXBRRVIwVkpXSlZLRXQ2Z3ZvUlhyeVpCcFVwSlFDRDM0UUFBQUFCZjROa0VQU3NqUTA1dDNpS0hQdnBFanYrd1FOTDM3Wk9zMURUOUtJQ3pDWXlNbE5BYTFhVEVOWjJsWkpmT0VscWh2UFdPRDlDUEFnQUFBUEFhenlYb0tqRS9NdmM3U1h4emhweGFzVkwzQXNpUGdOQVFLZHF4dlpTOVk0QVVhZEpZOXdJQUFBRHdFazhsNk1kLysxMzJqSHRLVXRhdDF6MEFuRmE4NjlWU1lkZ1FDYXRTUmZjQUFBQUE4QUpQSk9nWkowN0lub2xUNVBBSEg0dGtadXBlQUtZRWhJZExoVkVqSktwWGR3a0lEdGE5QUFBQUFBcFNnU2ZvcDdac2xSMERCMG5xMXUyNkI0QXJBZ0trMkJXWFNwWEpFeVNvYUZIZENRQUFBS0NnRkdpQ2Z1TFA1UkkvWUpCa0hEbWlld0M0TGJ4UlE2bjI1aXNTRWhXbGV3QUFBQUFVaEFKTDBFOHNYU1k3YnJsRE1wT1NkQStBZ2hKYXE0YlUvT2hkQ1M1ZFd2Y0FBQUFBY0Z1QkhKQ3NsclhIMzNrdnlUbmdFYW1idDhyMmdZTWtnL2NrQUFBQVVHQmNUOURUang2VDdiZmRJUm1IRHVzZUFGNXc4cysvWk9jamowa1doUm9CQUFDQUF1SHFFbmQxeG5uOEF3L0pzUy9tNko1ekZ4Z1pJVUdsU2tsSWplb1NWS0s0N2dVS09ldHRuTDV2djZUdGlKZU1JMGNsS3kxTlAzRHVLazRZSzJYNjlOSVJBQUFBQUxlNG1xQWZYYmpJTGdwM3prZXBCUVpLK1BrTkpLcC9QeW5XdXFVRWx5a2pBVUZCK2tFQWY4dE1UWlhVWGJ2azZMZno1TkRNOXlWOXoxNzlTTzRGbGl3aDUvM3dEVVhqQUFBQUFKZTVscUJuSkNWTDNGWFhTRnJDVHQyVE82RTFxMHZGVVNPa2VOczJkcUlPSUhjeVQ1NlVneDk4TFB1ZmVWNHlqeDNYdmJsVG9sdFhpWms2eWJwQ0JPZ2VBQUFBQUthNWx2RWVtZlAxdVNYblZtSlFvbWVzMUo0elc0cGYwbzdrSERoSGdSRVJVdmJXL2xMTGVnK3BvOVRPeGJGdnY1ZFQ4UWs2QWdBQUFPQUdWN0pldGV4Mi8vTXY2U2dYckdROGF0QkFpWGxxdkFTR2grdE9BSGtSVnFXeWZZUmE1TVV0ZGMvWlpaMUtrZjNQdnFBakFBQUFBRzV3SlVFL3NYaUpwTy9hbzZPekNBaVEwamYzaytpaDk3TzhGbkNJdXRGVjdkVVh6MmttL2NTQ1JaSis1S2lPQUFBQUFKam15aDUwVmJuOTZHZGY2Q2huS29HbytmSDdFaGdXcW52eXlmcnhzdExUSmYzRUNjazRmbHl5VXZOZTNScHdpenF0SUxoWU1YdVp1bDBRMGFHYlZhZTI3NUROVjE0aldTa3B1aWRubFo2WklxV3Y2YUlqQUFBQUFDWVpUOUJWY3J5dWVSdkpQSHhFOStRZ09GaXF6M3BQaWpacHJEdnlMbm5kZWprMmY2RWsvYnBZVXJac2xZekVnL29Sd0hjRXgxU1JpTnExcEdpSGRsS3NZM3NKcTFoUlA1SjMrMTU2VmZaUG1xcWpuQlc5cktOVWYvVkZIUUVBQUFBd3lYaUNucnhtcld6cDJsMUhPU3ZhOFJLcC92ckxlWjR0ekR5VklrZSsvVTRTWDN0VFV0WnQwTDJBbndnTWxLS2Qya3VaVy90THNSYk44L3crU1Q5NlZEWjF2Rkl5RGgzV1Bka0xLbDVjNnY3eHN3U0doZWtlQUFBQUFLWVkzNE9lL05kSzNUcTcwbjE2NVMzcHlNcVM0NHQvbDdqTzNXVFhrT0VrNS9CUG1abHlZdDRDMlg3RExiSnQ0Q0JKeVdPVjllQVNKYVRFdFYxMWxETjFWRnZxemwwNkFnQUFBR0NTOFFUOTVQcmNKY3NCa1JGUzdKSzJPc285VlNGKzk4VEpzdU9tQVpLNmRadnVCZnlZU3RSL1dDaWJ1MTRuaCtkOFk4Zm5xa1NYcTNRcloxbHBhWkxDK3dvQUFBQndoZGtFUFN0TDByWnUxMEhPd2h2VWw4RFFjeXNNcDRxK2JiL2pIam40NnB2MlhuZWdNTWs4ZGx4MkRoNG1lNlkrWTcvWHprVkV6Um9TV0xTb2puS1dzaWVYSnpBQUFBQUF5QmVqQ2JyYTNwNlJuS3lqbkttem1zK0ZTczYzM1RwUWtoYjlwSHVBUWlnalF4SmZlTVZlUlhJdVNYcEFSSVFFbDQzU1VjN1NkNU9nQXdBQUFHNHdPNE9lbVNtWnVUek9LYWhDZWQwNk83WHNObjdZQ0RtNWJJWHVBUW8zdFlya3dGc3pkSFIyNnVpMmdORGNGWDdMMkxkZnR3QUFBQUNZWkh3UHVnbjdYM3RUVG56M2c0NEFLUHNtVFpPa0ZYL3BDQUFBQUlDdk1Yck1tdG9YdnFsTHJLUnVqTk05MllzYU5GQ2lodzNWVWZaT2JvcVRMVjJ1czJmUmN5MHcwTjV2RzF3bVNnS2pTdWxPd0tPc2QyVEd6bDJTY2VLRVpKNUkwcDI1RTFxcmh0VCs4bE1KaklqUVBXZVdsWkVoY1oxakpXWGpKdDJUdlpMZHVrcVZhWk4xQkFBQUFNQVUzMHJRclgvcXR0dnVrQk1MYzdudjNENDN1b09VSFhDemhOZXJLOEhGaXVrSEFJL0x6SlMwdzRmbHhPOS95SUhuWDdJU2FlczlsSnUzYWtDQWxCOHhUTXJkZnF2dU9ETVNkQUFBQU1CN2ZHcUplOUtxMWJsT3prTmlxa2oxajJaSzlWZGZrS0xObTVHY3c3Y0VCa3BJVkpTVTZueVYxSjR6V3lvK09Wb0N3c1AxZ3ptd2t2akVsMStUaktSem0za0hBQUFBVVBCOEowRzNFbzhEcjc2aGc1eUZuOTlBYXM3K1NJcGUxRlQzQUw1TEZYUXJjMzBmKzRaVFVNa1N1amQ3R1ljT3l4RjFQam9BQUFBQW4rSXpDWHI2a2FPUzlNdHZPc3BlY01YeVV1MzFseVdrZEduZEEvaUhJbzNPbDhyUFRiVmU1RUc2SjN0SFB2dEN0d0FBQUFENENwOUowSk5XcnBMTVk4ZDFsSTNBUUtrNGRyU0VsQ3VyT3dEL1Vyek54VkxxaGo0NnlsN3lueXNrNC9nSkhRRUFBQUR3QmI2VG9QLzJ1MjVsTDd4ZUhTblI0UklkQWY2cDdJQmJKU0E0V0VmWnlNaVFwSlVyZFFBQUFBREFGL2hNZ3A2OGJwMXVaYTlFbDZ2dC9icUFQd3VyWEVraVdqWFhVZlpPclY2cld3QUFBQUI4Z1U4azZGa1ptWksyYWJPT3NsZnNzazY2QmZpM1ltM2I2RmIyVXZmdjF5MEFBQUFBdnNCSEV2UjBPMGsvbTdBS0ZYUUw4RytoMWF2cFZ2WXlUM0RVR2dBQUFPQkxmR2FKZTY0RTZEOEJmOGRySFFBQUFQQTcvcFdnQXdBQUFBRGdvMGpRQVFBQUFBRHdBQkowQUFBQUFBQThnQVFkQUFBQUFBQVBJRUVIQUFBQUFNQURTTkFCQUFBQUFQQUFFblFBQUFBQUFEeUFCQjBBQUFBQUFBOGdRUWNBQUFBQXdBTkkwQUVBQUFBQThBQVNkQUFBQUFBQVBJQUVIUUFBQUFBQUR5QkJCd0FBQUFEQUEwalFBUUFBQUFEd0FCSjBBQUFBQUFBOGdBUWRBQUFBQUFBUElFRUhBQUFBQU1BRFNOQUJBQUFBQVBBQUVuUUFBQUFBQUR5QUJCMEFBQUFBQUE4Z1FRY0FBQUFBd0FOSTBBRUFBQUFBOEFBU2RBQUFBQUFBUElBRUhRQUFBQUFBRHlCQkJ3QUFBQURBQTBqUUFRQUFBQUR3QUJKMEFBQUFBQUE4Z0FRZEFBQUFBQUFQSUVFSEFBQUFBTUFEU05BQkFBQUFBUEFBRW5RQUFBQUFBRHlBQkIwQUFBQUFBQThnUVFjQUFBQUF3QU5JMEFFQUFBQUE4QUFTZEFBQUFBQUFQSUFFSFFBQUFBQUFEeUJCQndBQUFBREFBMGpRQVFBQUFBRHdBQkowQUFBQUFBQThnQVFkQUFBQUFBQVBDTWl5NkxianN0TFRaVk9YV0VuZEdLZDdzaGMxYUtCRUR4dXFvMy9LVEUyVkRhM2FTOGFoUTdybnpCcXNYUzZCa1pFNk1pYzFQa0ZPcmQrZ0kvaXowSmdZQ2E5WFIwZmVjV1QrQWtrWU1FaEhaMWFpUjZ6RVRKNmdvMy9LeXNpUXVNNnhrckp4ays3SlhzbHVYYVhLdE1rNkFnQUFBR0FLQ1hvZUhKejV2dXgrYkt5TzRNK2krdmVUNk1jZjFaRjNrS0FEQUFBQS9vY2w3Z0FBQUFBQWVBQUpPZ0FBQUFBQUhrQ0NEZ0FBQUFDQUI1Q2dBd0FBQUFEZ0FTVG9BQUFBQUFCNEFBazZBQUFBQUFBZVFJSU9BQUFBQUlBSGtLQURBQUFBQU9BQkpPZ0FBQUFBQUhnQUNUb0FBQUFBQUI1QWdnNEFBQUFBZ0FlUW9BTUFBQUFBNEFFazZBQUFBQUFBZUFBSk9nQUFBQUFBSGtDQ0RnQUFBQUNBQndSa1dYVGJjVm5wNmJLcFM2eWtib3pUUGRtTEdqUlFvb2NOMWRFL1phYW15b1pXN1NYajBDSGRjMllOMWk2WHdNaElIWmx6Y3ZVYU9mN2p6enJ5dnVRL1Y4anhSVC9weUZubEI5OHJFdVMvOTNraUdwMHZ4ZHExMFpGM0hKbS9RQklHRE5MUm1aWG9FU3N4a3lmbzZKK3lNaklrcm5Pc3BHemNwSHV5VjdKYlY2a3liYktPQUFBQUFKaENnbDRJSkw0NVEvWThjZVpFTGI4YXhxMlJnT0JnSGNFdC9weWdaNldsU1ZhbXNjdFM0Uk1nRWhnU1l2MXBOUUFBLzBPTk04V0ZqNTJBNENBSkNBclNVY0Z6OWZPV3p5SWcxMGpRQ3dFU2RQL2p6d242dHFIRDVOU0tsVHBDZmdXVktDNjFQbjVmQWtORGRROEE0SFJ4M2Z0SStsbkdtRTRvUC93QktYM1ZGVG9xV0JsSlNiTGx4bHNrNC9BUjNXTldaSXRtRWpQK0NRa0laSGN0Y0RZazZJVUFDYnIvOGVjRVBhN2Z6WEp5OFJJZEliOUNhMVNYdXZPKzBSRUE0Ti9XdFd3bjZRY082TWljNkVuanBVejNXQjBWb014TTJUNTBtQno3eXAzUGh1QUs1YVgyN0k4bHBGdzUzUU1nSjl6R0FnQS9GbGFycG00QkFDQ1MrTkVzMTVMemdMQXdxVEoxRXNrNWNBNUkwQUhBajRXV0w2OWJBSURDTG5uZGV0a3o3aWtkbVZkdXlMMVNyRVZ6SFFISURSSjBBUEJqWVkwYTZoWUFvRERMT0g1YzRnYy9LRmtuVCtvZXM0cGRjWm1VdSswV0hRSElMUkowQVBCajRUVnI2QllBb05ES3lwTGRrNTZXMUMxYmRZZFpJWldpcGNyNHNSU0ZBL0tBZHcwQStLdWdJQW1yVUVFSEFJREM2dkEzMzhyaER6N1drVm1Ca1JFUzg4SXpFbHl5cE80QmNDNUkwQUhBVHdXVktpV0J4WXJxQ0FCUUdLWEV4OHV1a2FQdFdYVGpnb0trd3FoSHBNajViSzhDOG9vRUhRRDhWRkRSSWhJWUZxWWpBREFyTXpOVFRwNDhLWWNPSFpLdDI3YkowcVZMSlRVMVZUK0tncEI1S2tWMkRINVFNbzhmMXoxbXFhTlp5L1RzcmlNQWVVR0NEZ0IrS3FSeUpRa0lDdElSQU9TTlNyelQwdElrT1RsWkVoTVRaZlBtemJKNDhXSjU3LzMzWmR6NDhUSjR5QkM1TmpaV2F0ZXRLK2ZWcXlkMXJLOTZEUnBJNjdadDViaExpU0hPUU8wN2YycXluRnE1V25lWUZkNm9vVlFlTzFva0lFRDNBTWdMRW5RQThGT2hWV04wQ3dCeXBoTHdBd2NPeU5xMWEyWDI3Tm55NGtzdnlXT2pSMHUvbTI2U2k5dTFrNmJObXRsSmQ2V1lHS25Yc0tHMDY5QkJicjcxVm5sODdGaDV3ZnB2djVrN1YrTGo0Mlh2M3IxeTVPaFJPNmxId1RxNjZDYzUvUDVIT2pJcnNHaFJpWmsrUlFMRHczVVBnTHdpUVFjQVB4VktnVGdBT1RoMjdKaGNldm5sVXJkK2ZZa3NWa3lpcTFTUkprMmJTcSsrZmVYK0lVTmt3bE5QeVVjZmZ5ekxsaTJUOVJzMnlPNDllMGk4ZlVUcTdqMnljL2dJeVVwUDF6MEdCUVJJOUpPUFMzalZxcm9EUUg2UW9BT0Fud3Evb0pGdUFjRC9VdnZERi8vK3Uyelo2czdSVzNCSHB2VjdqWC9vRWNrNGRGajNHR1FsNTFFRGJwYlNYVHZyRGdENVJZSU9BSDRxdkVvVjNRSUFGQmI3WDMxZGtuLzdYVWRtUlY3VVZDb09IYXdqQUU0Z1FRY0FQeFFRRVNFaFpjcnFDQUJRR0J4ZnNsVDJQL2VTanN3S3JsaEJxajQzVlFKRFEzVVBBQ2VRb0FPQUh3b3VYMDRDUW9KMUJBRHdkK2xIamtqQ3NJZXNodmw5NXdHaElWSjU4Z1FKS2N1TllNQnBKT2dBNElkQ1NwYVVnRUF1OFFCUUdLaGljUEhESDVIMFhYdDBqMWxsN3JwRGlyZHFxU01BVG1MMEJnQitLS1JHTmM2aUJZQkM0c0RiNzhpSitRdDFaRmJSOXUyazRyMkRkQVRBYVNUb0FEd2xwRnhaQ2ExUzJiV3ZrSW9WM1Vsa3JlOFJVaW42alA4R0UxOFI5ZXZyYnd3QThHZEpLMWZKdnFuUDZNaXNFT3Z6SldiS1JHNEFBd1lGWkZsMDIzRnF1YzJtTHJHU3VqRk85MlF2YXRCQWlSNDJWRWYvcEk2TDJOQ3F2V1FjT3FSN3pxekIydVVTR0JtcEkvd3Q4YzBac3VlSkNUcHlWc080TlJJUXpENVh0eDJadjBBU0J1Ujg5N3BFajFpSm1Yem0zM3RXUm9iRWRZNlZsSTJiZEUvMlNuYnJLbFdtVGRhUi96a1ZIeTl4bDNVMmZsWnNZSkVpVW1mQmR4SlNKa3IzQUVEQlNreE1sS28xYXRqSHJabXlkOWN1aVlyeTluVnZYY3Qya243Z2dJN01pWjQwWHNwMGo5V1JNOUtQSFpPNGJqMGxiVWU4N2pFbk1DSkNxbi93amhRNXY2SHVBV0FDTStnQUFBQ0FEOXIxeEhoWGtuTUpESlR5ano1RWNnNjRnQVFkQUFBQThERUhQNTB0UnovN1FrZG1sZWphV2NyMDZxa2pBQ2FSb0FNQUFBQSs1R1RjWnRrelpweU96QXFyYzU1VUdUZUdrMEVBbC9CT2cwOVI5UWkyOXJ0WjFsM1F3dmhYM0xVOUpPTkVrdjdPQUFBQUJTL2p4QW1Kdi84QnlVd3lQMFlKTEZaTVlwNmZadTgvQitBT0VuVDRqcXdzMlRmOWVVbjY5WGZKT0hMVTZGZG04a21wT0hxa0JCVXRvcjg1QUtDd3lNek1sUFQwOUROK1pXUmtXQjlIeHVyckFqbktzbDZidXlkTXlsV1IxM3dMQ3BUb01hTWtva1lOM1ZGNHFmZDhUdGNGOVJqZ0ZLcTRGd0wrVXNYOTJNKy95STViN3hUclNxaDd6Q2w3LzkxU1lmQzlPdkllcXJnN2h5cnV2aThsSlVYV3JsMHJmNjFjS2Z2Mzc1Y0RpWW42RVpHdzBGQXBXYktrbEMxYlZtclhyaTMxNnRiMWZFVnB1Q2NwS1VtMmJ0MHFxMWF2bGoxNzlzaTI3ZHRsNDhhTmN1clVLVGw1OHVRWkI5MFJFUkVTRWhJaXBVcVZrZ2IxNjB1bFNwV2thdFdxZHJ0eTVjb1M3RU1ubTFERi9UOThxWXI3a2UrK2wvaDdocWk3U0xySG5OTDkrMG5sVVk4VXVpUFYwdExTSk40YUd5eGZzVUlTRWhJa0xpNU9ObGxmNnJxUW5KeXMvNnYvcDk3ellXRmhVcng0Y1duWW9JRjlIYWhXclpvMGJ0VEl2ajc0MGpVQjNrQ0NYZ2o0UTRLZXVudVBiTFplU3htSGorZ2VjeUpidDVRYU05LzA5RjRyRW5UbmtLRDdwcU5IajhyY2I3K1ZEejc4VUg3ODZTYzcwY3F0T3VlZEo0OC85cGowNk5GRDk2QXdVTW4ydG0zYlpQSHZ2OHVpSDMrVXYvNzZTMWF1V3FVZmRVWjRlTGcwYjlaTUxyamdBbW5Wc3FXMGJOSENIcUI3RlFuNmYvaEtncDZTc0ZQaXJ1a3VtY2VPNlI1eklpNXNJalZudmkyQjRXRzZ4MytwMTcrNndmdkxMNy9JL0FVTDVQY2xTK1NZUTg5eHBKV1h0RzNUUnRwZmNvbTBzSzRIelM2NnlMNU9BRGtoUVM4RWZEMUJ6MHhKa2EzWDk1ZVR5Ly9TUGVZRWxTMGp0YitlTFNGbHkrb2VieUpCZHc0SmV1NzhiaVUxNjlhdjE1RXpMcklHS28zT1AxOUh1WFBBR2tTLy9PcXJNdVhwcDg4NGs1RmJzejc2U0xwZGU2Mk96dDJzVHo2UjQ4ZVA2OGg1VjE1eGhVUkhSK3ZJR1o5OTlwa2NPWHBVUjg2N3hCcUExdlRZVWxpMUhIM1RwazN5MmV6WjhzbW5uOHI2RFJ2c1ByY0VCUVhaTjRSNjlld3BWMTE1cFRSbzBNQ2VhVE5wMWFwVnN1elBQM1dVc3hNblRzaERJMGJZUzNSTmVYcnlaQ2xhdEtpTzhxNTgrZkxTK2VxcmRlUXNYMGpRczlMU1pITy9tK1hrc3VXNng1emdjbVdsMXV4WkVscWh2Tzd4UCtvMXIyN1FmV2g5RnJ6NzNudHk4T0JCNDF0WEFnSUNwRml4WXRLamUzZnBkLzMxMHJ4NWMrUFhnek5STnlzLy8rSUxPWExFN0tSWDZkS2w4L1U1bTFmcTUzdG41c3d6cm9CeWlyckowcnRYTC9zYWJ3SUplaUhnMHdtNjlmTGM4OHp6a3Zqc0MxWmI5eGtTWUYwa3E3NzltaFJyMlZ6M2VCY0p1bk5JMEhQbi9pRkQ1TVdYWHRLUk0rNjc1eDU1ZXNvVUhlVk1EYVptelpvbFF4OThVQkt0Z1ZSK3FPV0dmLzd4aDlTdlgxLzNuQnYxc2Rtb1NSUFpzSEdqN25IZXQ5OThJNTA2ZHRTUk01bzJhMll2NVRibG5iZmZscjU5K3Vpb1lLa1ZGZDkvLzcxTXNsNWZhaEN1bHF3V05EV1FVMHRmQjl4NnEvMDh4Y1RFMkFOMnAwMmROczFPdXYyTlNtbytzQklwRXp5Zm9GdlhuRjBUSnN2Qk45N1NIZWFvTVYzVjExK1M0bTNiNkI3L29tN3Nmajl2bmp3MWFaS3MrT3N2VjIvWW5VNjk5NnRYcXlhRDc3L2ZUdlJVTXV1bTJ3Y09sTGZmZVVkSFpxaWJFYnNURWx4Zk1hQzJMZFUvLzN5anY5c083ZHZMZDNQbkdybUdLeFNKZzZjZCsyMnhISHpoRmVQSnVmVU9rektEQnZwRWNnNzRpNFNkTzNVclo0Y1BINWJyYjdoQmJyN3R0bnduNTRxYXpWT0pFdnlQV3FyNjN2dnYyemNqZXZYdGE4OGtleUU1VjlSZ2NjZU9IVEpxOUdqN0JzKzFzYkd5ZE5teUFrc1FmRTNyVnExMHEvQlJOWGdPempDYlRQMnR6RjIzKzJWeXJtN3lmdm5sbDlLa2FWUHAyYnUzZlcwb3lQZWV1dEc3ZGRzMnVXL3dZS25Yc0tFOFBYVnF2bGFGbmF0ZXZYcnBsamxxbFptcUQrTzJKVXVXR1AvZDlyRmVRNmFTYzRVRUhaNlZkaUJSZGozd3NQR1pUU1d5V1ZNcGY5ZEFIUUZ3d3hycmcvdHNpN2pVbnVHMjdkdkw3QysrY0d5NVdwa3laZXc3Ky9BZjZuWDA4ODgvUzV0MjdlVG1XMitWTFZ1MzZrZThLZm5rU2J1R2d2cjNYbkhWVmZZV0V1U3NSaUd0Sko2NmI3OGtESC9FeWpETko1TkYybDRzRmU2OVcwZitRMjNQdXJwTEYrbHVKYVhxTThWckRoMDZKQTgvOG9oOVkvR0xMNzg4NitlaUV5NnhyajJxMEtWcGM3LzdUcmZjTTMvaFF0MHlRNjBJdUM0MmY4VWV6NFlFSFo2azlsb2xQUGlRcEZzZlRLYXB2Vll4ejArWGdKQVEzUVBBRGNlT0hyVXJaV2RIVmM3dGVPbWxkbFZ0SjExNHdRVkc3M3pEWFdvZjlkQUhIcERMcnJ6U1hyTHFTOVJOSjFYa1VOMkU2dDZ6cDJ6YzVNTFJXVDVJN2ROVlZmSUxHN1hGTStIaFJ5VGp3UCtmVEdGS2NNVUtFak41b2dRWTJsTmJFTlNLbXNsUFB5MHRXcldTaFlzVzZWN3YycnhsaXoyNzMrK21tK3g2S3lhRmhvWktkOE5KcHJKNDhXTGRjb2U2cHFvaW9DYXBteHZxZEJpVFNORGhQVmxac3UrbFZ5WHBwMTkxaHprcUthODBhWnlFbEMyamV3QzQ1ZGp4NC9ieTlUUFp2WHUzWEc0bFhEdDM3ZEk5emltTUEzMS9wV2JEMm5mc0tNKy8rS0xQTHhYLzhxdXY1S0xteldYc0UwL1lOeDN3LzBLQ2c2VkNoUW82S2p6MnYvRzJPMk9oaUFpcCt2eDB2eG9McVdNVHUxNXpqVHd5Y3FSOVBKcXZVTFBuSDgrYVpjK20vN0YwcWU0MTQ3cnJyak4rczFvdGNUZDVTc1MvcWFNeTFWWWlrMjdzMTArM3pDRkJoK2NjLzMySkpENy9zbzdNaWhwd2l4Uy9wSjJPQUxoSnpaNnJzMmIvVFJYNDZ0V25qNUhrWEZIVnh1SDdsbHFEVjdWRTNPbWowZ3FTU2lTZUdEZE9XbDU4c2F4WXNVTDNvbTdkdW9YdWFLcmpmeXlWQTlPZjA1RkJnWUZTWWZoUUtkS2tzZTd3ZlN0WHJyU3ZEUXQ4WU5ZOE8zdjI3clZ2VXM5ODkxMWpTOTVWWFFkMURKeEp1M2J2TnA0d24yN2V2SG02WlVaRVJJUjl5b3BwSk9qd2xMVDkreVhoL2dmdEplNm1SVFMvU0NvTXZVOUhBQXFDdXR0OU9yVThiY2dERDhpU1AvN1FQYzRLQ3cwdHRIdFovWWs2ci9pS3E2K1cvUzVVM2k0SWFsdEgzMzc5WEoxNThyS2FOV3ZxVnVHUWZ1eTQ3QnoraUNzMWVJcGZlWm1VNlhlOWpueWZXbExkdmxNbmlVOUkwRDIrUzkyc0huam5uVEp0K25RalNYcVJJa1drMnpYWDZNaWNiMTNhaDY2ZW8zay8vS0FqTTlUcEtpVktsTkNST1NUbzhBejFRYVFLb2JpeDF5b29xclRFVEoxay9BeDNBRG43N1YvNzA5VHhOMnJHd0pTeVpjdEtLY043eDJEVyt2WHI3UlVXSnMraDk0TEpUejFsN3hPRlNMT0xMdEl0LzZlT1FVMFlPVXJTRW5KM3lrVitoTmF1S1ZVbWpwT0FRUDlJQjM3ODhVZTVxa3NYdjlvaW9xclBqeGc1VXA1NTlsbmQ0eXhWamR5MHhTNFZ3VHlWa2lKL0dMcTUvN2NCdDkybVcyYVJvTU16OXIvK3BpVDkrSXVPekxIM25VOGVMNkdWb25VUGdJSnkraEwzbzBlUDJrZk9xQUdKS2VYTGw3Y0xUc0UzcVdySHNUMTZ5SUZFOHpkeUM5S2RBd2RLVnl2UndIODBiZHBVdC94ZjRydnZ5L0Z2ek04NEJoYUpsSmpwVXlTb1NCSGQ0OXZVcXF0dTNidmJzODcrUnEwc0cvYlFRL0xlZSsvcEh1ZTBiTmxTaWhjdnJpTXoxTEZuS1ZieWJOcm11RGpadTIrZmpweW56cXB2MTdhdGpzd2lRWWNublBoanFleWZQRjFIWnBVZWNMT1U2TkJlUndBS2twb04vZHNiYjc1cC9BaWNwaGRlU0FWM0g2V1dMNnFDVDF1MmJORTkva2tWTVp3d2ZyeU9vUGFlVjZ0YVZVZitMWG5OV3RrN2VhcU9EQW9Na0lwalJrbGszYnE2dzdkdDM3NWR1dmZvNGZmRkZlKzgrMjdIdDMrcGF1UlhYM1dWanN6WXQzKy83TGUrVFB0bTdsemRNa010YjNmcmlGWVNkQlM0OUVPSEpHSEljSFdMVVBlWUU5bWltVlFjd3I1endDdlVIbUsxVkRreE1WSEdqQjJyZTgxUnhhYmdteFl0V2lSdnpaaWhJLytrOW9TKy9lYWJVclJvVWQyRGtpVktTRlJVbEk3OFYvcXhZN0pqOElPU2RkSnd4ZkdBQUNuZDczcUo2bmF0N3ZCdGFzYThkOSsrZGhMbzcxUVJ5UnY2OWJOWEVqbkpkRlZ5Tlh2KzcrMXNUbE9yREV6dWRWYzM5dSs0L1hZZG1VZUNqZ0psbjNjK2JJU2s3OTZqZTh3SktsVktxa3lmekhubmdJZW81ZXo3OXUyVDk5NS9YNUp6T0JQZEtlcjhVdmdlOVRvWk5YcTBQUWp6VjJvQU9PS2hoNlJKa3lhNkIwcjVDaFhzeXNsK0xTdExkajA1UWRLMi9iTm9wZ25oOWV0SjlFTVAyb202UHhqNzVKT3kzTVVURDRLQ2d1eGlvMnBsaC9wU1c2WkNySEdsV3l1emRzVEh5NTJEQmpsNkxXemVySm1VS1dQMmlMMXZ2LzFXdDh3NGV1eVlyRHR0Ulo3VG9pdFdsR2JXOCtRV0VuUVVxUDF2elpBVEMzN1VrVUhXaFRONi9CZ0pMWVRucUFKZXBxcFVyOSt3UVY1NjJmelJpbW9nVmExYU5SM0JsNmlxN2FZcSszdUZPdkpvNkpBaE9zTGZHamRxcEZ2KzY5Q1hjK1RvWjEvb3lKeWdNbEZTOWFYbkpOQlBqcXo3K2VlZlplcTBhVG95UnhWcnZPTHl5K1dGNTU2VFgzLzZTYlp0MlNKN2QrMnl2L2JzM0NrYjFxNlZiK2JNc1crdzFhOVhULysvelBuSytsNU96aGFycXVRZERCOC8rck4xRGMvSXlOQ1I4OVRKRjA2dkxEaGQrL2J0alI5SmR6b1NkQlNZRTM4c2t3TlRudEdSUVZaeVh2cTIvbEx5eXN0MUJ3QXZlZk90dDJUTDFxMDZNcWRxMWFxdWZzRENHV3J2K2JQUFA2OGo4NnBVcVNJMzMzU1RQRDE1c3N5ekJzRWIxNjJUclhGeHNtLzNidG0wZnIyc1c3MWE1bi8vdlR6M3pETXljc1FJdWFaclY2bFh0NjRFNStOVWtLalNwZVdkR1RQc21UajhVKzNhdFhYTFA1M2F2a04yang1cno2S2JGQkFTTEpVblBDRmhmbElnViswM0h6QndvSTdNVUxQaXZYcjJ0Ti96Yzc3OFVnYmVmcnRkc0ZDZEJxSzJvNmd2dFNjNUppWkdMdTNVU2NhT0dTUExseTJUMlo5K0t1YzNiS2ovRnVlcEZVWDNEeDdzMko1NzlYUGVjTDNaby9aVVljKzllL2ZxeUhuZldkZGtrOXhjM3E2UW9LTkFwQ1VlbElUN0gzRG52UE1MbTBqRkI1bVZBTHhxenRkZjY1WlpsYUtqODVWRW9XQWNQSGhRZnZyNVp4MlpVNzE2ZFhsdjVrdzdJWC90MVZmbHZudnZsZmFYWEdLZm02K1NkbFhCVi8wM0ttRnMxNjZkM0huSEhmTDQ2Tkh5NmF4WnN1TFBQMlZYZkx4OC9PR0g5a0MzU3VYSyttL05uU21USmttTTlUM3d2L3g1VzBwR2NyTEVXMk9oek9QbWk1dEYzWGFMbE9qWVFVZStiOUtVS2JMVllGSFI0bGJpUFhQR0RIbjNuWGZzbTd1NXBaYkFkK25jV1JiLytxdWQwSnV5ZmNjT2VmNkZGM1NVZjVkWTF6cFZNTTZVWk91MS9xZDFuVFJCM2NUOTRndHpLMURVNy84aWw0OTZKRUdINjdJeU0yWFg2TEdTdnRmY1VRaC9VOHU1WXA2ZEtvRWNxd1FVZW01L3dNSVpxMWV2dG8vZ00rbmkxcTNsajhXTDdkbXl2TXhpcTBHNVN1Qmp1M1d6aTd5dFc3TkdmbHE0VUhyMjZISFdJNHh1Nk50WGJyamhCaDNsbjdweHNOTWF2T2ZtYTlXS0ZjYlBXbC8xMTE5bi9ONjUvVkw3WS8yUkdndnRmbXFLbkZxelZ2ZVlVNlJOYTZrNDlINGQrVDYxRDl2SjVQVGYxRXFyRDk5L1gzcjM2bVhQTHVlRjJsTDE3UFRwY3YrOTkrYjU3emlicWRiZjc5UzFVYTBHdUxSalJ4MlpNWC9CQXQxeWxxb1FiL0owajhzdnZkVDExVTBrNkhCZDR0c3pYVG5qVTRLREpIckNFeElhWFZGM0FDak1hdGVxcFZ2d0phWm56MVZpL2NGNzd6azZlNlNLUjdWcTFVcmVmL2RkZTNuc3hQSGo3UlVjL3g2b3E1bjJwNTkrMnRFQnZFb3UxSG4vdWZsU1MzVk5LMmQ5anpOOTc5eCtxWnNmL3Vqb0R3dms4QWNmNjhpYzRITGxKR2J5UkFud28rZHhpdldlVWFkL21ESjYxQ2k1N0xMTGRKUjM2clU3ZnR3NFk2dEFEaDgrTEsrKzlwcU84a2RkZzlRTlNwTisrZlZYM1hMV1h5dFhHaTB5YTdySy9abVFvTU5WU1N0WHliNHA1Z3Q2S0tYNjlwYVNuZnhuT1JlQS9GR3pwUEE5Sml2ektwZGJBL0dLRmMzZHlGVko1Z05EaDlxejZtcmZ1dHF2cXFoSzBHKysvcnE5L3h5RlM4cXVYYkp6eENnUmcwV3psSUN3TUlsNWZxcUVsRE4vSThZdE8zZnVsTGNOSHJmWW9ubHplM3VMVTlRS2xSZWZmMTRpRFoxRThKcDFEVkY3MHAyZ2Jrb1VNVmluWmMzYXRmWk5CYWN0TURRenI2aXRSODJ0MTRUYlNORGhtdlJEaHlYaDNxSG16L2kwaERlb0o5R1BQcXh1Q2VvZUFJV1pXbTRZY3c3N0NPRWRhOWV0MHkwenFydFUyVi9OYk44eGNLQzlySHpVeUpFeWVQQmdlOThuQ3BkTWZieHM1cEVqdXNlY3dLSkZKTXpQVHE2WStlNjc5bm5ncG93WlBkcnhXaVdxYnNXdHQ5eWlJMmR0Mjc1ZEZpNWNxS1A4S1ZxMHFIVHAwa1ZIemxOSHc2bHE3azVTKzg5TkZvanIyclZyZ2F6aUlVR0hLN0xTMHlYaG9VY2tMV0duN2pGSGZTQlZlWDZhQkJyZVZ3ZWdZS2dqWWE2Kzhrb1ovK1NUOXBFM0NkWUE1ZWpodzNMTStqcDY2SkJzMzdKRmZyTUdBV3IvMzExMzNHR2ZLOTNtNG92dEdVdjRuc1RFUk4weUk4MkZZcVduVTNzOUh4czFTcDRZTThiWTNsUjQxLzZYWDVQa0pVdDFaRmJHd1VPeTgvRW43ZjN1L3VEa3laUHluTUc5NTYxYXRwU09odlpoMzNQMzNjYjJNYi9sNElvQ1ZUZkRwQ1ZMbHVpV00vYnMyU01iTjIzU2tiT0NBZ1BsK3I1OWRlUXVFblM0SXZIRGorWEUvRVU2TWljZ09FZ3FUWjRnNFp4MURQaWRxS2dvZWZ5eHgrd3EyMTk4L3JrTWUvQkJlK2xaaFFvVjdPV0RFZGFYbXFXc1ZLbVNOTHZvSXJucnpqdmwyV2Vlc1l0L2ZURjdOc2tRemlodTgyWjdGc1p0dkI0THArQXlVYnJsanVOenY1TkRuMytwSTkvMncvejVjdURBQVIwNTc1YWJiemIydnF4bWpVc2JuWCsranB5bDZuUWtKU1hwS0gvYXRXMXJmNWFhb3Y2dFRsNXZmN2NTZnFlVytQOWI1Y3FWcGVtRkYrcklYU1RvTUM1NXpWclpOMjZTV29laWU4d3BxZmFkWDVIL3doNEF2RU1ObDlTeE5TdVdMWk9Sanp4aUorcm5RZzI0MUJKMytDYlRpZXlDaFF0bG04SGptb0RUUmZYc0xwSE5tdXJJQmRiWWE4K1RFeVROWUdMcmxsbXpadW1XODlRS3E2NEdsM2VyWmRMWHhjYnF5Rm43OXUyVHBVdWRXWlZScWxRcHUycTVLV29mZW1wcXFvN3liOUVpYzVOLzNidDNMN0FpbFNUb01Dcmp4QWxKR0RwY3NnenVGL3BiV1AyNkV2M0ljRFdhMHowQWZKMzZjTHovL3Z0bDFrY2ZHUzNrQmU4eWZjeVdxZ1o5ZGRldWtwQ1FvSHNBY3dLQ2c2WFNFNDlMZ0l2SE5tVWVQU1k3UjQxeFphTEVsSlNVRkpuenpUYzZjbDR6NnpwVHBrd1pIWmx4bWNIRTkrTlBQdEd0L092VnE1ZHVPZStFbFJjc1g3NWNSL21uYnJDYW9HN1k5TC9wSmgyNWp3UWR4bVJsWk1qT2thTWxOYzdjMllSL0N5eFdWR0plbUM2QjRlRzZCNEEvR0hUbm5USnA0a1RIaS9iQWQxUnpvYmlmT2tPM1djdVc4c0dISHpvNnV3T2NTVVR0V2xMMnZydDE1STdqOCtiTFFSOWU2djdyYjc4WlBWcXRrK0V6d0pXNmRldnFsdk5VOFRWVmhNMEo2bGc0VlN2REZMVlZ3UW03ZHU4MnR2KzhacTFhY2w3dDJqcHlId2s2ek1qS2tzVDNQNVJqWDVtNzIvbGZnUUZTY2V4ajdEc0gvRXpucTY2U3laTW1HVi9pREc5cjFLaVJicGwxOE9CQjZYL0xMZEswZVhPWjlja25jdlRvVWYwSTRMeHl0L2FYc0xwMWRPU092ZU1tU3VxZXZUcnlMVjkvL2JWdU9VOTl4blJvMzE1SDVvU0hoOHY1RFJ2cXlGbTdyV1QxMEtGRE9zb2ZkVFJrRzRQSGtxcnowSjNZaHo1MzdsemRjbDczMk5nQ25SZ2dRWWNSeWVzM3lMNkpVOXpaZDk2enU1Uyt0cXVPQVBpRDBxVkx5eXN2djF4Zys3L2dIZXBjWXJkdTBxaEI0NFlORytUNmZ2Mmtib01HY3UvOTk4dXlaY3ZzNWJXQWs5U0t2OHFUeGt1QWk2ZExaQncrSWdtUGpMSlhPUG9TVlFUc3g1OSswcEh6MVBGaTZpZzAwOVIxckdLRkNqcHkxckZqeCt5Q2wwN3AzNysvYmpsdjA2Wk5qcXhVTXJhOFBTeE1icjc1WmgwVkRCSjBPQzdqK0hGSnVHZXdaQ1dmMUQzbWhOYXFJWlZHajJUZk9lQkgxQ0RteWJGajdidjRRSTBhMW5VK09scEg3bEhIdTczOHlpdlNxazBiYWRTa2lUd3diSmhkaU1udFk5bmd2NHJVcnllbCsvZlRrVHVTZnZsTkRzMytRa2UrUVMxdFg3OSt2WTZjcDA3L0tGbXlwSTdNS21Idys2eFpzMGEzOHEvOUpaZEk4ZUxGZGVTc25idDJ5ZmJ0MjNXVU4rcW02ZEpseTNUa3JBYjE2eGZJWjg3cFNORGhyS3dzMmZYNGs1SzZiWWZ1TUVmdE82LzY4dk1TYVBBNENBRHVVL3YwYnV6bjdxQVYzcVVHejdIZHV1bW9ZR3pkdGsyZWZlNDVhZDIycmRTb1ZVdjYzWFNUZkR4cmxsMDlHY2d6TmFNNitGNEpxUnFqTzF5UW1XbFhkVS9aYm42YzVoU1Z6S1VhdkRHbTlocUh1clNTb1Z6WnNycmx2TjhXTDlhdC9GT25wYlJzMFVKSHpwdjc3YmU2bFRmeENRbjVUdkt6MCszYWF3dDg5UjRKT2h4MWNOYW5jblMyQzBWSXJEZE94ZEVqSmJ4bURkMEJ3QitvMmZPSGh3KzM5K29CZjd2bjdyczljMVRlWGlzcC8rampqK1dHRzIrVUt0V3FTWXRXcldUTTJMR3k2TWNmalJheGduK3lsN3BQZU1MVmxZQ1p4MDlJd3FPamZXYXB1eXFBWmxMVkdQZHVrSlFyVjA2M25MZG56eDdkeXIvQXdFQzV5ZUNOOHZ4dVdmamhoeDkweTFtaElTRkdsL2ZuRmdrNkhITnk0eWJaTS9wSlYvYWRsNGk5UmtwZlY3QXpLZ0NjVjdsU0pmdnVOWEM2NnRXclM0L3UzWFhrSFdyUCt2SVZLK1RKOGVQbDhpdXZsRXJXUUw5WG56N3lzWlhBcThHeUU0V1E0UCtLdFdndXBhN3ZyU04zSkM5ZUlnZG12cWNqYjFPbkxKaFVxblJwM2ZKdGNYRnh1dVdNSzY2NHd0aktncFVyVithNXRvZTZybjVqNk1pOXBrMmJHcXNUY0M1STBPR0lqS1FraWIvN2ZuZk9PNjk3bmxSK1lqVDd6Z0UvMUtkM2IzdEpNM0E2dGJKaXpPalJVcXhZTWQzalBXclFlUExrU1puOStlZHl3MDAzU2YyR0RlV0txNjZTeno3N2pKbDFuRldGd2ZkS2tPRnp1UDl0LzlSbjVKUVBMSFZYTjhGTWVudkdES2xlcTVZclgwOVBtNmEvcS9NT0hqb2tweHdjaDVjb1VVTGF0bW1qSTJlcGxVanFtTFM4VU5mVFB3MjlKcTY5NWhyNzg2YWdrYUFqMzdJeU0vK3o3M3pMTnQxalRrQkVoRlI1NW1uT093ZjhrRnBhTnVDMjIzUUUvRlBWcWxYbGlURmpQREY0eW8wVFNVbXljTkVpNlgzOTlWS3ZRUU83eU55T0hUdVlWY2NaaFpRdUxaV2VmRnl0TGRZOTVtVW1KY3ZPaDBkS1ZucTY3dkVlVlpUUnlhWGJaNklTdnAwN2Q3cnlwYXF0bTZMT1FWYzNDWjJpcnJVOWUvVFFrYlBVNzFVVjNjeUx6WnMzeTRFREIzVGtIUFh6M21CZHI3MkFCQjM1ZHZpTHIrVG9wNS9yeUNEcmpWUHhzUkVTY1o3NW96QUF1SzkrL2ZwMkVnWms1NDZCQStYcXE2N1NrZS9ZdDMrL1hXU3VWcDA2MHZlR0cyVEZYMy9wUjREL1Y2SmpleW5XcVlPTzNKRzg5RTg1OFA2SE92SWV0UXo2Rk1jYzVrNVdsdU9uVEppY1VmNXF6aHpkT2pmekRPMC92N2gxYTZuZ2dlWHRDZ2s2OGtYdE85ODlZcFI5VVRDdGVMZXVFdFc3cDQ0QStKdE9uVHB4N2pseUZCd2NMRFBlZWtzdWFOSkU5L2llVHovN3pDNHNweEoxZFI0dzhMY0E2L3BYZWV4b0NTcmx6cEZmZjlzL2FhcWMzT1RzL21XbnFQT3k4N3BYdWJESnlNeDBmSWErVEpreWN2bGxsK25JV1V2KytFTXk4bENvOEx2dnY5Y3RaL1h0MDBlM0NoNEpPdklsL3Q0aGtwV1NxaU56UXV2VXRqNjBIck5uMFFINHArczk5T0VJNzFMN0lyLys2aXRwMHJpeDd2RTlhcG43SjU5K0trMmJON2Nyd0NjbkordEhVTmlGbENzckZSNTlXRWZ1eUR4NVVoSWVmRmd5cldUWWExVENlZlRvVVIyaElQVHAxVXUzbkxWdjcxNTcyZis1T0hqd29QeTVmTG1PbkJNUkVlR3BBclVrNk1pWE5KZk9PNDk1ZHFvRUZTMnFld0Q0bTByUjBWS3ZYajBkQVRrclc3YXN6UHZ1TzduODBrdDFqMjlTQloxVUJmaUwyN2ExOTFVQ1N0UTExMGpSRHUxMDVJNVRhOWZKL2xkZjE1RjNxSnRaMUcwb1dCMDdkcFNRa0JBZE9lZWtkZjA3MSswK2E5YXVkWFNmL2QvYVhIeXgwU1B3emhVSk9qeXYvTU1Qc3U4YzhITk5talF4TWdDQS95cFpzcVI4OXVtbk11VCsrKzB6ZTMyWkduUzJ2ZVFTbWZ2dHQ3b0hoVnBnZ0VTUEdpa0JMcC85ZitERlZ5WFpTdFM5Sk4xSHptcjNaOUhSMFhKeHExWTZjdGJYWDMrdFc3bXphTkVpSXpkc2JqUjQ1bnRla0tERDg5SlU5VTd1bmdKK3JSckY0WkFIWVZZQ00rbXBwMlRXUng5SmxjcVZkYTl2U2p4NFVIcjA2aVh2dmYrKzdrRmhGbDQxUnNvUEcrTHExcjZzbEJUWk9mSXh5WEs0MEZoK3NQM0RHL3IyN2F0Ynpqclg1ZXJ6NTgvWExlZW9iVk9tOXRubkZRazZQTy9ncTIvS3NaOS8wUkVBQVA5MFRkZXVzdXF2dit6WmREWFk4bFdxSU5hQWdRTmwxaWVmNkI0VVptVnU2Q3ZoRGR6ZCtuTnE5VnJaKzhKTE9pcDR4ZGplbUd0cUpWRmtaS1NPbk5XaGZYdjdocWpUMU9xaC9mdjM2eWhuaVltSnN2VFBQM1hrSEhYV2UxUlVsSTY4Z1FRZCtSTFpvcGx1bVpPVm1pWTdIeHdocWJ2Tm5vTUpBUEJkUmEyQnZKcE4vOHNhd1BYdTFjdllRTlcwOVBSMHVmMk9PMlQ1aWhXNkI0VlZZR2lvVkprMFFRTEMzVjNxbnZqNjI1SzBhcldPQ3BhcEk3NzhrWHFtMUVrWEpxZ2pVQnMyYUtBajU2amw2cjh0WHF5am5DMysvWGY3K3VpMC9qZmRwRnZlUVlLT2ZLa3k5U2tKS21QK3JsUEdnVVNKSC95QUp5dU1BZ0M4bzNMbHlqSnp4Z3hadVh5NTNIdlBQUkpWdXJSK3hIY2tKU1ZKLzV0dlpua3Y3Qm84Wlc2L1RVZnV5RkpWM1ljL1lsZDNMMmlxTmduMVNYSW53T0FNdXBxZHY3bC9meDA1NjdmZmZ0T3RuUDMwMDArNjVaenk1Y3JKcFowNjZjZzdTTkNSTHlIV0M3dktNMU1rSU1UTUhidlRuVnk2WFBZOSs0S09BQUE0TXpYclZxMWFOWms2WllwczJyQkIzbnJqRFduVnNxVlB6Y1p0MkxoUkpreWNxQ01VV3RacnR2eWR0MHRvclpxNnd4MnBjWnRsNzRzdjY2amdxSVN6U0pFaU9rSk9WQklkR2hxcUkrZDF2dnBxQ1RQdzk2dVo4ZHdVZnZzMWw0bjh1VkRWMjlYcUs2OGhRVWUrRld2ZFNxS3NEdzgzSkw3OHVoejcxZmszS0FEQVB4VXZYbHo2M1hDRC9MUm9rV3hjdDA0bWpCdG5EOHBNRERTZDl0SXJyOGkrZmZ0MGhNSXFNRHhjS2s5NFVpUW9TUGU0UTQyNVRoZzRjL3BjcUgzUDRTNVhzL2RWNWNxV05acWdxMnJ1alJzMzFwRnpWcTFhWlI4NW1STjcvL215WlRweVR1L2V2WFhMV3dLeURCNHVtSldlTHB1NnhFcnF4ampkazcyb1FRTWxldGhRSGYyVFd0YThvVlY3eVRoMFNQZWNXWU8xeXlYUVIvZWNtWlQ0NWd6Wjg4UUVIVG1yWWR3YUNRZ090bi9YMjI2OVE1SisvbFUvWWs1d3ViSlM2NnZQSk1UNnM3QTZNbitCSkF3WXBLTXpLOUVqVm1JbW4vbjNucFdSSVhHZFl5Vmw0eWJkazcyUzNicEtsV21UZGVSL1RzWEhTOXhsbmUzWHNFbUJSWXBJblFYZlNZZ0xXMEpNdUgvSUVIbnhKWE9GZys2KzZ5NlpQbTJhanJ4TmZXdzJhdExFbnVFMDVkdHZ2cEZPSFR2cXlCbE5teldUVmF2TjdTdDk1KzIzcFcrZlBqcnlOdlU3UEhic21Id3pkNjRzdEJKM3RjUnl5OWF0UnZZMzV0ZXdCeDZROGVQRzZjaFphdEJidFVZTnV6aWRLWHQzN2ZKY0FhWi9XOWV5bmFRZk9LQWpjNklualpjeTNXTjFkTzUyVFhoS0RyNyt0bzdjRVZJMVJzNmJNMXVDQ21oOHJkNlRkUnMwa0IwN2R1Z2U1Nm5WTnUzYXR0V1I3enF2ZG0xNWFQaHdIWm54MHNzdnkzMkRCK3ZJT1F0LytFSGF0R21qby8vMXlhZWZTdDhiYnRDUk05UzU1MXMyYlpMdzhIRGQ0eDBrNklXQUd3bTZrbmJ3b01SZDNVMHk5cHYva0l0czNWSnF2UDJhQkJUU2ZVa2s2TTRoUWM4ZEV2VC9SNEorWnI2VW9QK2JTZ0xVVExWSzJOV1htcWxSbFlVTkRwRnlUYzFhcVpsL0U0TklFdlQvOEpVRVBlUDRjZGw0OWJXUzduTFIzTkw5K2tybHgwZlp5KzBMd2lVZE91UzZrRmhlWEhYbGxmTGw1NS9yQ0RsUjE4VnFOV3RLbXNOSDhZMTQ2Q0VaTzJhTWp2N1hnTnR2bHhrelorcklHWDE2OTdicmxYZ1JTOXpobUJEckE3anlsSW11TE1GS1hyeEU5cjd3c2hvcDZ4NEFBUEpHVlQ2dVZLbVMzRDVnZ016KzlGUFpzSGF0L1B6amozTFhIWGRJMVpnWVk1V1JjMlB2M3IyeWN0VXFIYUV3Q3lwV1RDbzlhU1V4Z2U0TzN3OS9PRXVPLzFsd1M5MmJYWFNSYnBteGVzMGF5Y2pJMEJGeVVyWnNXV25ab29XT25KUFRQblIxQTNIeGtpVTZjazZQN3QxMXkzdEkwT0dvNG0wdmxqSjN1YkFmM1hvVEgzenhWVG4reDFMZEFRQ0FNMVRSb0JiTm04dXp6endqNjYxay9hZUZDMlhRWFhjVlNFWDR6TXhNK2ZycnIzV0V3azZOczBwYzAxbEg3bEFyekhZT2YwUXlrZ3JtVklIYXRXdnJsaGtuVHB5d3Q3emc3RlNoeld1NmR0V1JjOVNLdEpTVUZCMzkwNTQ5ZTJUTGxpMDZja2I1OHVYdGxSTmVSWUlPeDVXL1o1QkVORGQ3dDFQSlNrdVRuZmM5SUdrdUxLa0hBQlJPNm9pblpzMmF5VFBUcHNuV3padmxwUmRla05xMWF1bEgzYkhrano5MEM0V2RPa29yK3VGaEVoVGw3czJpdEIzeHNudmk1QUpadWRqQ3dJenQ2VlJ5dmludTdOdHg4Ui9YWG51dDR5ZGlxSlZDMjdkdjE5RS9xVG9oVHE5dzZOSzVzOUdDZXZsRmdnN0hCWWFGU3N3elV5U29iQm5kWTA2Nmxad25ESHRZc3RKWm1nUUFNRXNkK1RUZ3R0dGs1WW9WOHVUWXNSSVJFYUVmTVV2dGlXY0pMdjRXVXJhc1JJOGU2ZnBTOXlNZmZ5TEhmak8zRnp3NzFhdFZNM3JVbWxxbDhzTVBQK2dJWjZOK0g4MmJOZE9SYytaa3MxTEk2UlZFNmppNjNqMTc2c2liU05CaFJHaUZDbEw1NlluL0xTQm5VdEpQdjhxKzUxL1VFUUFBWnFsWmRWVXQrZk5QUDVVaUxoU25WVVhzZkhVSnJoY3I0L3VEa2xkZUljVXVkYmFRNU5uWVM5MkhqWkQwdzRkMWp6dlVscFA2OWVycHlBeVZISHFoS0tTdk1GRVE5RXlGQUpPU2toemZmMTdSeWxGYXQyNnRJMjhpUVljeHhkdGNMS1h2dUUxSFppV3EvZWkvc3dRUUFPQ2VEaDA2eVBCaHczUmtqcHJoVS90a25hYUszem05VlBYZjJOdHJSa0JRa0ZSNi9GRUpMRkZjOTdnamZkOSsyVFYra3F0TDNZT3NuL1hTVHAxMFpNWmZLMWZLdG0zYmRJU3p1ZUx5eXgwdm5ybDh4WXIvT1E5ZEhYK3BLc2M3cVZ1M2J2YjUrbDVHZ2c1enJBLzlpdmZmSXhFdG5WOEc4Mi8yZnZRSEhuTDlyaTRBbUtBU01pZXBtU0duajhYQmZ3b20zWGJiYmNhWHVxdmYzNzhIcms1UWcxVFRDYnJKSTl3S3U5RHk1YVg4ZzBOMDVKNmpuMzhwUnhmOXFDTjNYSEhGRmJwbGhscnA4WlpIajl6eW9obzFha2pEQmcxMDVBeDExT1d1M2J0MTlCK0xGeTkyZEdXRHV0blR6K0h6MUUwZ1FZZFI2cHp5S3BNblNsQ3BrcnJISEhVdWFNSkRJNDJmWncwQXBoMC9mbHkzblBISnA1L0srZzBiZEFRbmxTNVZ5dDZUNll0TUorZktab2VyTCtPZnl2VHFLUkZOTDlDUlN6SXpaZGRqWXlYOTZGSGRZWjQ2VlVFZDhXWFNqSGZlc1pkVTQrelVQdTRiKy9YVGtUUFVUWkxmZnZ0TlIvOHhaODRjM1hKRzFhcFZwZEg1NSt2SXUwalFZVnhZNVVwU2FlcFQ5bklzMDA3TVd5RDczM2hiUndEZ201eGMwaGNmSHkvM0RSNnNJLzl5OE9CQk9YQ2dZRS95VUFOVnRTZmRORFh6NDdUdzhIQUpOSnlrcTJXck1DY2dPRWdxajM5Q0FpTENkWTg3MUtUSXprZEgyOG02RzlSeTZsNkdDM3VwNDd6R1B2R0VqZ3FlMHl1cG5LYU9LWE82RXZyY2I3L1ZyZi9jcVA3bFh3bDdmbDE3elRXZXJ0NytOeEowdUtMRUplMmsxSzAzNmNpc0ExT215L0hGemhhVUFBQTNyWEFvcVZIN2YvdmRlS01rSmlicUh2K2hrdk91MTE0cnpWcTBzQ3N3RitSZzF2UnVYSldjRnk5dVpxOXg0OGFOZGNzTU5TTkc4UzJ6SW1yVmxITDNEckszRnJycDJMZmZ5NUg1QzNSa25xcThiWHJWeDZ1dnZTWnIxNjNUVWNGUTI1SGVmZmRkdWVubW16MWRaTEZhdFdwU3ZYcDFIVGxERllyNysyZGV0V3FWb3lzYTFNM1VXL3IzMTVHM2thRERIZFlGdGVLUSt5UzhTU1BkWWM1L3FvdytMT21IaitnZUFIQ09HaUNXS2xWS1IyYW9ZN1h5bTlTa3BLVElMYmZlNm5nRlhDOVFNeXZYeHNiYXo1UGFzOWpGU3RUNzMzS0w3UDdYL2tVM3FMM2hwbStBaEFRSFM0a1NKWFRrck1xVkt1bVdHY3YrL05NKzR4aG1sZTEvbzRUVnE2TWpsMlJteWE2Um95WE5wVlVzelpzM04xN04vWVNWRUtxYm1rZGRYTDcvTjNYTlg3bHlwVng2K2VWeXk0QUI4dkdzV2ZMc2M4OTU5Z2FYV2puVTcvcnJkZVFNZGVOMTE2NWRkbHNsNjA3KzdPZlZyaTIxclM5ZlFJSU8xd1JHUkVqTWMxTWwwTkFzd09uU2QrMzV6L25vSGw4ZUJNQTNtUzRLdG5yTkdsbTdkcTJPenQzSmt5ZmxaaXM1LzlMaC9YdGVvS3FaOSs3YlY1Yjg4ZjhuZDZnendqLzg2Q05wZk9HRjh0U2tTVVlxbm1mbnA1OS9ObjVqb0VtVEpzYVcwVmN5bktDcjM4WGpZOGJrZWFETk1XMjVFeGdlTGxVbVBHblgvbkZUeHNGRHN2T3hzU3E3MUQzbXFKVWtRMXpZcnJQR3V2YjI2dFBIOFZvZ09WRko2VzIzM3k0dEw3NzR2OGVOcWZmTXFOR2paZjc4K1hic1JkZkZ4anE2L1ViZDhGUTM5UlNuejZidjBxV0w0NVhuVFNGQmg2dkNLbGVXU2xNbTZNaXNFL01YeVlGMzN0TVJBRGpIMUd6bTZjWlBuSmlucEVZTjlHSzdkN2NMdy9rYk5XRHVlOE1OTWkrYmdkdVJJMGZrMGNjZWt6cjE2OHUwNmRPTnoyeXIvZStEaDVpdm9uM2hoUmZxbHZOYXQycWxXK2JNZk84OWVlT05OODdwOWJ4cDB5WVpQSFNvdEd2Zm5rcnd1UlRab0w1RTNlTE9kc0xUSFo4M1h3NTk4WldPekZJSllhWG9hQjJaczJEaFFtblRycDJzVzc5ZTk1aXhkZHMyR1RaOHVOUnIwRUJtdnZ2dS85eVFVcTk5dFRwbysvYnR1c2RiMUJMM2VuWHI2c2daMzgrYloyL1ArdkhubjNXUE0yNnpua2RmUVlJTzE1VzhySk5FM1RsQVIyYnRuelJWa2xhdDFoRUFPTVBwNDJYT1JDWFlMNzM4Y3E2VEdqWHo4Tjc3Nzh0RnpadkwvQVh1N1F0MWkxcXlQMkRnUVBuMnUrOTBUL1pVa2IzaER6OHNOV3ZYdGd2a0xWMjYxUEZqNXJaWkErYk9YYnZhQTJ5VDFMNUprOFd4YXRXcVpYOFBrOVJ6Zjg5OTk5bUp4dXJWcTgrWWNLdlg3MFlyS1gvbm5YZmt5cXV2bGtZWFhDQXZ2UGlpdlkxQkpTN0loWUFBcVhEL1BSSmF2YXJ1Y0lsMWpkb3o3aWxKZFdFclE3Rml4ZVRSa1NOMVpKWkt6bHUyYm0ydnlqbnM0REcrYW9XVG1oVlhLNEhxTjJ3bzA1OTlWazdtY0l6aS9nTUg1TnJycm5OMVpWQnVxWlU5dlh2MTBwRXpWTjBLZGMxMnNxN0lCZGIxUkIwTjV5dEkwRkVnS2d5K1Q4SWFtTjFIcEdSWkY4R0UreDdnZkhRQWpsTEZjVXhUaWZuUUJ4NlFJVU9IMnJNbmFobjN2NmsrZFhhc0tpalV0Rmt6dWVXMjJ5VHg0RUg5cVA5UXladjYyVDZiUFZ2MzVFNnk5Um1nYm5LMGJkOWU2alpvSUk4OS9yZ3NzeEkrTlR1VGw5VUphc0NvS2oxUGZPb3BhWExoaGJMaXI3LzBJK1pVcmx4WnpyY0c4YWFvR2JDU0pjMGZoWnBoUFhjZmZQaWhORy9WU2lyRnhOaEp1TnFHMGNkS1VscGRmTEZVcmxwVkxyQ2UwOXNHRHJSdk1KMytlbGUvTjdVM0ZXZW5scnBYR2pkV3JRZlhQZTdJT0hSSWRvNGNMVmtaNXJjV1huLzk5VWJmRTZkVHliUmFsVk8zZm4xNWNQaHdXYjU4K1Rrbnl1cTFyRmJ6cU8wd2FsVkluWHIxNUtvdVhlenIyWm11NjJleWJ0MDZ1ZU91dXp4WjJWMGw2RTdlNU51d2NhTjg5dm5uZWJwR1owZFZiemQ5STlKSkFkWVA3OXhQL3krcVdOZW1MckdTdWpGTzkyUXZhdEJBaVI0MlZFZi9sSm1hS2h0YXRiZmYvRGxwc0hhNUJFWkc2Z2gvUzN4emh1eDV3c3l5OG9aeGF5UWdqL3M1VG0zYkxsdTZYaWVaU2NtNng1eWlWMTRtMVo2ZjdzcFJiMjVRVlZNVEJnelMwWm1WNkJFck1aUFAvSHZQc2o0UTRqckhTc3JHVGJvbmV5VzdkWlVxMHlicnlQK2NpbytYdU1zNkd6OC9QN0JJRWFtejREc0pLUk9sZTN6TC9VT0d5SXN2dmFRajU5MXREVHltVDV1bUkrLzdhK1ZLYWQ2eXBhTURpSnlvNDdCcVdJbVVPZ3Y0NzJSS0xlZitmY2tTMmJscmw2dDdKYlB6enR0dlM5OCtmWFRrSERWenJoSTVwNWJzcXlKL1phS2k3SnNzSFR0MGtQUFBQOTh1UEZXNmRHbTdVcnJhVDZtKzFNQlpmYW1aTTFXSTdwZGZmcEh2dnY5ZS9zekRBRDAvSG4za0VSbHRKUWdtWGR1dG0zeHoydkZHWGpUNHZ2dGs4cVJKT25MV3VwYnRKTjJGUW1mUms4WkxtZTZ4T2pMSXVpNGxQRFpHRHIvL2tlNXdpZlhlcXZUVU9JbHk0V2Y4MlhvL3FtSnFCWkd3bGk5ZjNpNDQxckpGQzZsUXNhSjliVmJYanJEUVVFbTNyaGxxbWJxNnFhcUtJOGJGeGNtdml4ZkxnZjM3NWVpeFkvcHZ5THVuSmt5UW9TNXNxemtYNm5mUXVrMGIrOXJvbEwrdndVNVExL3kxcTFiNVRJRTRoUmwwRkpqdzZ0VWsycnFRaXd0M3RFNThPMDhPekppcEl3RElIelU0aTdDU1pyZW9HV1MxM1BLdEdUTmsyalBQMkYrcXZYN0RCazhrNTZhb2dhN2E0KzNrZm5wMVUrVkFZcUs5ZFBxcHlaT2wzMDAzeVlYTm1rbTFtaldsZE5teVVyVkdEWHZaYVl5VndLdTQ1bm5uMmZ1Z0gzbjBVZm54cDU5Y1RjN1ZUWU43NzdsSFIrYjBNWEJqeFdrdnZmS0tiTEtTSGVTQ1d1bysrRjRKS2xkV2Q3akVlbS90blRoWlV2ZnQweDNtWE55NmRZRWRtYVZXTGFrYkJKT2ZmbG9lZVBCQnUrWkhwOHN1a3phWFhDTHRPM2EwYnh5bzdUaHE1bjNHekpteWVmTm1SNUp6WmZUamo5djc0NzFFelV4MzY5Wk5SODV3S2psWExtalN4S2VTYzRVRUhRV3ExRlZYU0ttK3p1NWR5YzcreWRNbGVXM0JubTBKd0Q5RVJrWktodzRkZEFRVFZISisvK0RCOHZxYmIrb2VkNmlWQ2ZFSkNZNE5xUE5qMEoxMzJrbTZhWmQyNmlURml4WFRrVGVwbFJRUFBmeXdhNnRXZkYxSVZKUlVHalBLbFVtUTAyVWNPaXdKd3g4eHZ5ck4rcm1lbmpMRjhRSmxYbmZLZWgvYzFMKy83Tml4US9kNHc1V1hYMjdQVkh2UkRRNGZCZWNHRW5RVUxPc0NHejFxaElTZmI3N2dVdGFwVTVKdzcxREpPTzY5SWhzQWZFL1BIajEwQzA1VFN5WWZIRFpNWG4zOWRkMVQrRFNvWDE4ZWZ1Z2hIWmxWcGt3WnVleXl5M1RrWFY5Lzg0MHMrdkZISGVGc1NsemFTWXBkM2tsSDdrbjZkYkVjbkdYK0ZJa2lSWXJJekJrejdNSnhoY20rL2Z2dFdYc3ZyWjVxMUtpUko0dXdoWWFHU3RldVhYWGtPMGpRVWVBQ3c4SWs1b1ZuSkxCWVVkMWpUdXEyN1pMdzBFaDdEellBNUllYWRWUURSRGhMTFcxOGN0dzRlZkhsbDNWUDRhTUdsYTlhUDMrWTlmbm9Calh6OWNqRER6dDZuckVKYXZaOCtFTVBjZXhhTGdVRUJrcmxzYU1sS01yOEtveC9zSDVQZThaUGtsTTc0bldIT1kwYk41WTNYMy9kZnM4VUpxdlhySkZCOTl6ajZGTHcvRkFyR2t6VUlNbXZwaGRlS05XcXVueXFnUU5JME9FSllWVXFTL1NUajlzejZxWWQvMjZlSFB6d1l4MEJRTjZvUWtHeER1KzdNeTBxS2tvdWFkZE9SOTZqRXJCSmt5Zkx1QWtUQ3UxU1pwVWtQek50bWpSdjNsejN1RU1WeSt2YXBZdU92RXNWYUh4bkpqVmxja3N0ZGEvdzBJUDJ2blEzWlNVbnk4N2hJeVRMaFNKdXFrTDMrQ2VmOU93U2ExTSsvT2dqbWZMMDB6b3FlRjA3ZDdZVGRTL3BmK09OUHZtNklFR0haNVRxMmxsSzlycE9Sd1paSHhaN3gwK1M1SFhyZFFjQTVNMndCeDd3bVprYjllOTg3ZVdYN1Vyd1hxVUdVbDJzUVY2dG1qVjFUK0dpQnJjUER4OHV0OTE2cSs1eGozcnV4ejcrdUd1ejl2bnh4TGh4ZHEwQTVFNVU3TFZTcE8zRk9uSlA4ckxsY3VDdEdUb3lSNzEyVlRIRnh3MmZkdUJGVTZkUDk4d1JoT29tWDZYb2FCMFZ2S0pGaThwVlYxMmxJOTlDZ2c3dnNDNncwU05IU0ZnZDg1VVdzNUpQU3Z4ZDkwbUdIMWMvQm1CZXZYcjE3RHYwdmtBTlh0VmV2SmlZR04zalRXcVE5L3ZpeGZiWnVvVnBSaXc0T0ZoR1BQU1FQRFpxVklIOTNPcjFySTUxOC9yenZudjNiaGsvY2FLT2NGYUJnVkpwOUVnSmlJalFIZTdaLyt5TGtoSnZmcW03dXJrMTR1R0g1WldYWHBMSUF2ZzVDNEphdnIxdy9ueDdaWlFYaElTRXlJMzkrdW1vNEYzVXRLbFVyRmhSUjc2RkJCMmVFbFMwaU1TOCtLd0VGamRmOENNdFBrRjJqaHh0NzVVQ2dMeFFpY3lUVHp3aFZTcFgxajNlby82TkkwZU1rQWNmZU1DTzY1eDNudjJubHhVcld0UXUvdlRCdSs5S3hRb1ZkSy8vVXVmY1B6dDl1bjNlZVVFdkVYMWc2RkRwMEw2OWpyenJSU3NSMjdoeG80NXdOdUhWcWtuNVlVUHN5UkEzWlo0NElmRkRoMHVtQzNVRDFMWHUxbHR1a2RtZmZTWmx5N3A4eEp5TFNwUW9JVStPSFNzL0xWb2s5ZXZWMDczZWNGMXNyR2RxV1Z6ZnQ2L25ielptaHdRZG5oTmVvN3BVZk1KS25GMFlwQnliTTFjU1AvaElSd0J3N3RReFdLKy8rcW9ubDdxcldWazFJM3I2ckd5NWN1WHNQNzFPL1h1N2QrOHVmeTVkS2pmMTYrY1RTNi96b21yVnF2TE5uRGx5KzRBQm5oaE1xbG13OTJiT2xFYm5uNjk3dk1rK2RtM0VpRUpicXlBdnl2VHBMZUVONit2SVBTZi9XaVVIM25wSFIrWjE3TkJCZnYvMVYvdXNkRjlOME01RUpiNlhYWHFwL1BuSEgvTFE4T0dlL014UnEzQzhNR3V0S3Z1cjJnUytpZ1FkbmxTcXk5VlNzcWNMKzlHdEQvWjk0NTZTazNHYmRRY0FuTHVPSFR2SzFDbFRDbnoyODNScW1lY0x6ejRyajQ0YytZOS9WNmxTcFh4cTBLcG13bDUvN1RYNStjY2ZwWFdyVnA1Nmp2TkRKY0szOU84dlMzNzdUZHEyYWFON3ZVRWR1L2JGN05tZVQ5TFZzV3Z6NXMzVEVjNG1NQ3hVcWp3MVhnTGN2dGxsamJVT1BQK1NxMk10dFpYbnU3bHpaZHdUVDloN2tYMlp1bDQzYU5CQXZ2anNNNW56NVpmMlRUMnZVamNOZW5idnJxT0NvNjZwNnJQT1Y1R2d3NVBVMFNEcWZQU3d1dWFYWW1hcS9laUQ3cGVNcEdUZEF3RG5idUR0dDl1VmhMMlFRS29sOTNPKytrcHV2ZlhXLy9uM3FKa0ZWWUhlbDZnQjZnVk5tc2lDSDM2UUw2M0VVU1hxdmt6dGpmemVTaDVlZWZsbHord2YvYmZLMW10SUpUaHFOdEtMMUd0Q25VaFF5Y1BiUzd3bzRyemFVbWFnKzBVSU01T1RKV0hZdzVLWmxxWjd6Rk9yYm9ZOStLRDhzWGl4ZEx2bUdwK2NUYTlicDQ2OC9jWWI5bzI4SzY2NHdpZHVVSHJodURWZnIyRkNnZzdQQ2lwU1JLcE1teXlCTHB3em5McDVpK3g2Ykl4ZDRSMEE4a0lOQnRUKzNiZGVmOTNlUTEwUTFMK2gzL1hYMjh2Q3M1dVZWVE1jQmZYdnl5KzF4Rk1OVWhjdFdDQUw1czJUWGoxNytzeFo5T3Azb3hMejk5OTlWMzc5K1dkcFkvMSt2RDZBVkRQcGFzWk9GYThMOTlBV0ExVWM2NFAzM3BQdnYvMVdHdFIzZjhtMlQ3TmVjK1h2dWxQQ3JFVGRiYWRXcjVWOXo3Mm9JL2ZVcmwxYlpuMzhzZnk0Y0tGY2Nmbmxuai92WDFITDh6OTgvMzFaOGVlZmNyMTFUZmVsTFQ1cW1YdjE2dFYxNUw3aXhZdjd4SkdST1NGQmg2ZEYxSzBqRmNlT3NsNnA1bCtxUnovL1NnN08va0pIQUpBM2FqQzFkTWtTVjg4YlYzdk4yN1Z0S3o4dldpUnZ2dkZHamt2NzFOSnFOWXZ1eTFSaTI5YjZlZFZlNmExeGNmTFV4SWx5NFFVWDJNK0QxNmlDVGoydXUwNStYTERBVHN4Nzl1amhVOHYwMWV0bDdKZ3hzbVR4WXVuVXNXT0JQY2Vxa0o3Ni9wOTk4b245UEhhM25sTi8yZTdnTnJYVXZkSzRNZXJDb1h2Y2svanFHNUs4dm1DT3VXM1ZzcVY4OWNVWHNselh0U2pqc2RVcmF1KzJPbUx4THlzcFY2dUYxR3ZjaTllMHMxSHYxZGh1M1hUa1BuV2Q4UG5QdUN5RDFUV3kwdE5sVTVkWVNkMFlwM3V5RnpWb29FUVBHNnFqZjFLVkh6ZTBhaThaaHc3cG5qTnJzSGE1QkVaRzZnaC9TM3h6aHV4NVlvS09uTlV3Ym8wRUdMNTRaR1ZtU3NLSVIrWG94NS9wSG5NQ3JJRkl6YTgra1lnNmRYU1BOeDJadjBBU0JnelMwWm1WNkJFck1aUFAvSHZQeXNpUXVNNnhrckp4ays3SlhzbHVYZTJWRFA0cTdjQUIyVFZ1b3ZXY21GMDlZUStJSG50VWdsMDRvY0NFR2UrOEkvT3NBWU1wbDNicUpEZjM3NjhqLzVCaHZjKyttak5IeG93ZEsrczNiTEJqcHhXeFB2TlVvdnJJd3c5TDgrYk5jejB6cENwZy8yWWxYRTRhZE9lZDBycDFheDI1VHoyL08rTGo1UXRyQVA2NTliVjIzVG81ZXZTb2Z0UTk2dVpCeVpJbHBkbEZGOW1KZVRkcm9PckxleUZQbDJsOUhxOVlzY0krNG16QndvVnk0c1FKL1lnWmF0YXdSbzBhOXA3Vy9qZmRaQys3TjVHVUo0d2NMZW5IanVuSW5LanIrMGp4VmkxMFZQRDJ2L20ySksxWXFTUDNoSjlYV3lyZWM1YzltMStRMVBWaDd0eTVNbVBtVFBseitYSTVmUGl3ZnNRZDZucXRpb3gydU9RU096RnYyYktsUlBwSkhxTSs4OGFOSDYrai8zVXlPVm0rdHA1N0U1K0w2c2F0V2wzbHkwalFDd0ZmVDlDVkRPdURjL04xdlNWMXl6YmRZMDVZN1ZwUzY4dFBKREE4WFBkNER3azY0RHZTMHRMa2o2Vkw1WlZYWHBHNTMzNHJ4NjJrSnErRGtrQnJRS3RtTkZVeXJnWWduYSsrMms1YXZMNVUybTFxYUhQdzRFRlp2WHExZlB2ZGQvYmdlOGtmZjBpNk5TNVJYMDVTTTF4cW9LMFM4aGJXNytWcTYzZWlpcXVwSk4yZnFiUEl2N0VHMkxNKytjUitiaytlUEdrbjhQbWhYdHRxeFVGcksxRlJTMVRidFd0bkY4VHloU1hKOEcxSGpoeXhyeE9xOE9EaXhZdGw5Wm8xOXJYQ3lRUlNYU3ZVbGh4MXJiajhzc3VrZmZ2MjloN3ppRUp5YnZ2cFBwczlXM3IzN2FzajU2am5kMWQ4dk05c2Zjb09DWG9oNEE4SnVwSzhicjFzN1htRFpDV2JMK1pXc25jUHFUTGhpUUsvdTVzZEVuVEFONTA2ZFVyV1dBTS9sYkQvL3Z2dkVwK1FJSWxXSWhsdkRTaFVnbk02dGYrM2ZMbHlkaEV4VmZTdFdiTm0wckJoUTJuY3FKSGZKMzhtcEZwamlaMDdkOHFhdFd2dFB6ZkZ4Y25XclZ2dGdibWFTVXRLU3JKbjRNOUUvUTZpU3BlMm4zZTF2N0dhbFRUV3ExdFhxc1RFMkwrVHlwVXFGY3BCOXQvVWM3ZldlbDVYcmxvbDY5ZXZ0MmZQMUd5a2VsNjNiTmtpL3g1b1ZvcU90bWNPMVpjNjUvNkNDeTZRbWpWclNpUHJ0UjFUcFFvSk9RcWNXaDJ5YmRzMmV5V091bDZvbTFESGpoMnp2OVExWS9lZVBaSjhodkdvU2d5aksxYTBielNwNjRXNmdhcHUyS21xOHVkYjE0b3ExdXRiM1lncXpOUm5YWXZXcmUxcmhkUDYzWENEdlBYR0d6cnlYU1RvaFlDL0pPaUtPck44enlPamRXUldwV2NtUytscnV1cklXMGpRQWY5eHRvOWhac2ZOeSsxUWlOL0Z1Y25wZWVXNWhLL0t6ZldDMTNmMlhudjlkUmwwenowNmNvNjZzZmZEZDkvWkJUaDlIUWw2SVhCazloZHk0T1hYZGVTc1dsOS9iaVhvTHQ3cHRsNnV1NmM5S3ltYnp2NmF5cS9BWXNXazhwaFJFdVRCMXhRSk9nQUFBSHpKdm4zN3BQRUZGOGpCcytSMGVhRzJDL3kxZkxsZnJNQWhRUWQ4RUFrNkFBQUFmSVZLT1crNTlWWjU3NE1QZEk5ejFJcUYxMTU1eFM0bTZRODRud0lBQUFBQVlNejdWbUp1SWpsWHlwVXJKOWZGeHVySTk1R2dBd0FBQUFDTStQWFhYNDNzTy8vYm5RTUgrdnpaNTZjalFRY0FBQUFBT0c3VjZ0WFNxMCtmTTFhOWQwTEZpaFhsdm52djFaRi9JRUVIQUFBQUFEaHEvb0lGY3ZrVlY4aitBd2Qwai9PR1AvaWdmZnlsUHlGQkJ3QUFBQUE0SWkwdFRaNS80UVc1TmpiV1NNWDJ2OVd0VzFjRzNuNjdqdndIQ1RvQUFBQUFJRjlVcGZiMTY5ZkwxVjI2eUpBSEhwQ1VsQlQ5aVBOVTVmWXBreVpKYUdpbzd2RWZKT2dBQUFBQWdEemJzR0dEM0Rsb2tGellySmtzK3ZGSDNXdE9yeDQ5NUlyTEw5ZVJmeUZCQndBQUFBQ2NrME9IRHNuc3p6K1h6bDI2U0tNTExwQTMzM3BMMHRQVDlhUG1SRmVzS005TW42NGovME9DRGdBQUFBRElVVkpTa3F4YnQwN2VldnR0aWIzdU9xbGVxNVpkb2YzN0gzNndsN2U3SVR3OFhENTQ3ejJKaW9yU1BmNkhCQjBBQUFBQUlKbVptWExxMUNsN2RuekR4bzN5MVp3NU11cXh4K1R5SzYrVVduWHEyRXZZQjk1NXA4ejU1aHRqUjZkbEp6QXdVQjU3OUZGcDNicTE3dkZQSk9nQUFBQUFVTWlkT0hGQ1dyZHBJNDJhTkpFYXRXdkwrWTBieTNVOWVzakVTWk5rNGFKRmtwaVlLQmtaR2ZxL2RsK2ZYcjFrNkpBaE92SmZKT2dBQUFBQVVNZ1ZLVkpFZHU3YUpkdTJiN2VYczN0SjJ6WnQ1T1dYWHBLZ29DRGQ0NzlJMEFFQUFBQ2drRk5IbDdWdTFVcEgzdEgwd2d2bDAxbXpKQ0lpUXZmNE54SjBBQUFBQUlEVU9lODgzZktHaTF1M2xybmZmQ09sU3BYU1BmNlBCQjBBQUFBQUlNMmFOZE90Z3FWbTg2L3Awa1crbmpOSFNwVXNxWHNMQnhKMEFBQUFBSUJVcVZ4WnR3cU9TczZIM0grL2ZQakJCMUlrTWxMM0ZoNGs2QUFBQUFBQWlZbUprV0xGaXVuSWZTVktsSkIzWjh5UXB5Wk9sSkNRRU4xYnVKQ2dBd0FBQUFDa2VQSGlFaDRXcGlQM0JBWUV5R1dYWGlyTGx5NlZYcjE2NmQ3Q2lRUWRBQUFBQUdEUFdydTlEejI2WWtWNTZjVVg1YXN2dnJCbjhBczdFblFBQUFBQWdLMUJnd2E2WlZaa1JJVGNQV2lRckZ5eFFtNjk1WlpDY2NaNWJwQ2dBd0FBQUFCc0Z6WnBvbHRtaEllSHl4MERCOHJLdi82UzZWT25Tc2xDVnFYOWJFalFBUUFBQUFDMk9uWHE2SmF6cXNiRXlOakhINWZOR3pmSzg4OCtLOVdxVnRXUDRIUWs2QUFBQUFBQVczUjB0QlF0VWtSSCtWUEorcnY2WFgrOWZEOTNybXhjdjE1R1BQeXdsQzlmWGorS015RkJCd0FBQUFEWWloWXRLdVh5bUVTci8yK2Q4ODZUTysrNFF4Yk5ueThiMXEyVHQ5NThVenAwNk1BZTgxd2lRUWNBQUFBQTJNTEN3aVNtU2hVZG5WbEFRSUJkNUUzdEgyOS95U1Z5MzczM3l0eXZ2NVlOYTlmYVJkK2VlK1ladWZqaWkrMzk1amczSk9nQUFBQUFnUDlxMmFLRi9XZTVzbVdsY2VQRzByRkRCN2t1TnRaZW9qNXp4Z3laUDIrZXJMZVM4VjN4OFRMdnUrL2s2Y21UNWRKT25lemw2OHlVNXc4Sk9nQUFBQURndjBZOStxaWtuVG9sdXhJU1pObVNKZkxkM0xueTBRY2YyRVhlK3ZUdUxXM2J0TEgzcW9lR2h1ci9CNXhDZ2c0QUFBQUErQzhTNzRKRGdnNEFBQUFBZ0FlUW9BTUFBQUFBNEFFazZBQUFBQUFBZUFBSk9nQUFBQUFBSHVBakNYcUEvYit6eVR4MVNyY0EvNWFaZkZLM2NoREUvVGNBQUFEQWwvakVDRDR3TkVTQ2loWFRVZmFTVnEzUkxjQy9uVnkyWExleUZ4SlZScmNBQUFBQStBS2ZtV0lMdjZDeGJtWHY2TmR6ZFF2d1gxbHBhWExzaC9rNnlsNW81V2pkQWdBQUFPQUxmQ1pCanp5L29XNWw3OFM4QlpKKzZKQ09BUDkwN0pkZkpYM1BQaDFsTDdKRk05MENBQUFBNEF0OEprRXZlbkVyNjErYjgwYjBqS05IWmZkVFQ0dGtadW9ld0w5a0pDZkwzdkdUUkxLeWRNK1pCWlV2SitIVnF1a0lBQUFBZ0Mvd21RUTlyRnBWQ2ExZVhVZlpPL3JwNTVMNHlXYzZBdnhIVm5xNjdCbzVXbEkzYjlVOTJTdmVxWU1FQlByTTJ4c0FBQUNBeFdkRzhJR2hvVktxVjNjZDVTQWpRL2FPZkZ3T3ZQT3VaRmx0d0I5a0pDVkovSU1QeTlFdjV1aWVIRmlKZWFuZVBYUUFBQUFBd0ZmNDFCUmJWTi9lRWxTcXBJNnlwMllhOXo0K1RyYmZmcGVjMnJxTkplL3dXZXExZk95blgyVHp0VDNsbUVyT3o3SzBYWWxzY1pFVXlVWE5CZ0FBQUFEZUVwQmwwVzNIcWVSaVU1ZFlTZDBZcDN1eUZ6Vm9vRVFQRzZxajdPMS81WFhaTjNHS2pzNHVJRGhZSXBvMWxhTHQyMGxFclJvU1ZMYXNmZ1R3cUt4TVNZdmZKU2MzYnBUajMvOGdLWnMyNndmT0xpQTBSR3A4K29GRU5zdzVRVmVyUytJNngwckt4azI2SjNzbHUzV1ZLdE1tNndnQUFBQ0FLVDZYb0dlbXBzbm0ySjZTc202RDdnSHd0MUkzWFMrVnh6eW1vK3lSb0FNQUFBRGU0M05WcEFKRFE2VEsxRWtTV0tTSTdnR2doTld2SzlFamh1c0lBQUFBZ0s4eG02QUhCRmoveS9sb3RQOUtUOWVOczR1b2M1NVVtajVKQWtKQ2RBOVF1QVZYS0MvVlhuOUpBc1BEZGM5WnFIVXp1Vnc4bzdhSkFBQUFBRERQZUlJZUdKbTdtZTdjSEIxMXVwS2RPa3JGOFdQc1BiZEFZUllVVlZxcXZmMmFoRmFzcUh2T0xpc3RWVEtPSDlkUnpvS3JWOVV0QUFBQUFDWVpUZERWT2N6QnVhaTZycHphc1VPM2NzbEsvcU42WENkVlhubEJBb3NYMDUxQTRSSmFwN2JVK09SOWUxWEp1VWcvZEZqUzl4L1FVYzVDS2xUUUxRQUFBQUFtR2QrREhuWitmZDNLV2RxV2JaS3ljNmVPY3E5RSszWlM2OHRQSktKNVU5MEQrRCsxN0x4azMxNVM2N09QSkx4YU5kMmJlOGNYL3k2U2thR2pIQVFFU0ZpVnlqb0FBQUFBWUpMeEJEM2l2TnpQN0IzKytEUGRPamRoVmF0S3pmZmZrZWhKNHlTa2FoWGRDL2lob0NDSmFIYWhWUC80WGFreWJvd0VSVWJxQjNKUFZYQS8vUEVuT3NwWllFUzRoRlUvOXhzQUFBQUFBTTZkMFdQV2xMVEVnN0toUlZ1UnpFemRrNzJReXBYa3ZPL25XRWxCaE80NWQ1a3BLWExzeDUvbDREdnZ5cW5WYXlYeldPNzIyUUtlcGJhS1JKV1d5Tll0cGN5QW15V3lYajBKc0JMMXZFcGF0VnEyZGU5ckg0TjROcUUxcWt1ZEg3NnhaOUlCQUFBQW1HVThRVmMyWGR0RFVsYXQwVkhPeWc2NVZ5cmNkN2VPOGlmOXlCRTV1WEdUSkM5ZklTbWJOa3Y2c1dPU2xacW1Id1c4S3lneVFvS0tGNWZ3Q3hwTGtTYU5KYXhhTmJzdnYxUlN2cVh2VFhKeTJYTGRrN1BTdC9XWFNvK08wQkVBQUFBQWsxeEowUGU5L0pyc2YrcHBIZVVzTURKU3FuL3luajFMQ01CWkI5NTVUL1krL21UdWpsZ0xDcFNhWDM0cWtmVjVMd0lBQUFCdU1MNEhYU25aK2FwY0w4bk5URTZXK0R2dnkxUEJPQURaTzdyd1I5azNibUt1eno4UHExVlRJczZyclNNQUFBQUFwcm1Tb0tzcTBFV3Z2a0pIWjVjV255QmIrOXdvSnpkdjBUMEE4c3hLeUk5OCs3MGszSFh2T1czeGlMcmxKcnRhUEFBQUFBQjN1SktnSytYdXZQMmNCdnZwdS9iSTF0amVjdWp6TDNOVnpBckEvOG80Y1VKMlRaZ2tDZmNNa2F5VVZOMTdkaUhWcWtxcDJHdDFCQUFBQU1BTnJpWG9rZlhxU3ZIWXJqcktuVXlWWEF4OVNMYmNjTE9jV0xxTVJCM0lwY3hUcCtUZ3A3TWw3b3F1Y3VpMXQzSjM1dm5mQWdLazNIMkRKREEwVkhjQUFBQUFjSU1yUmVMK2xuWWdVZUk2ZDVNTTY4OXpaaVVOb1RWclNORjJGMHVSQzVyWTdhQVNKZlNEUUNHWGxTbnArdy9JcVUxeGtyUmtxWno0ZGJGa1dIRmVGTEhlWTlYZmVrMENBbDI3ZndjQUFBREE0bXFDcmh6NVlZRzlGMWJTejJGR0x6dWN6UXo4UHdmZXlvRWxpa3V0T2JNbHJISWwzUU1BQUFEQUxhNG42Q3FKMkRQcGFVbDgrWFhkQWNBTEFzSkNKZWJWRjZWNHV6YTZCd0FBQUlDYjNGL0RHaEFnRlI0Y0lpV3Vvd0FWNEJsQmdWSmg5RWlTY3dBQUFLQUFGY2dtVTNVbWV1VnhZNlRvcFIxMEQ0QUNFeGdvNVI0WUxHWDY5TklkQUFBQUFBcUMrMHZjVDVPVm1pbzdIeHNyUno3NlJQY0FjSk5hMWw1eHpDaUo2dDFUOXdBQUFBQW9LQVdhb051c2I1LzQzZ2V5YjhJVXlVeE8xcDBBVEF1SnFTeVZwMHlVb3MwdTBqMEFBQUFBQ2xMQkoramFxZTNiWmVlREkrVGs4aFZXMHE0N0FUZ3VJRFJVU2x6YlJhSWZlMFNDaWhiVnZRQUFBQUFLbW1jU2RDVXJQVjJPZlArRDdKczhUZEoyeE51ejZ3Q2NFUkFTTEJGTkd0dEwyaVByMXJFNk9LWVFBQUFBOEJKUEplaC95MHhKa2VPL0xwYkVOOTZXazM4c3N4TjNBSGxnSmVHQlJTS2wyR1dkcE15dE4wbGsvZnAyVVRnQUFBQUEzdVBKQlAxMHFmdjN5L0ZGUDBuU2I3L0x5WTJiSkczTE5zbEtTOU9QQXZpM0FDc2hENnRWVXlJYm55OUYyN2FSb3ExYVNGQ1JJdnBSQUFBQUFGN2wrUVQ5SDZ4L3FwcE5UenQ4UkRKT0hKZjBnNGNrS3pOVFB3Z1VYb0hoWVJKVXZJUUVseXdwd1NXS1N3Q3o1QUFBQUlEUDhhMEVIUUFBQUFBQVA4VTBHd0FBQUFBQUhrQ0NEZ0FBQUFDQUI1Q2dBd0FBQUFEZ0FTVG9BQUFBQUFCNEFBazZBQUFBQUFBZVFJSU9BQUFBQUlBSGtLQURBQUFBQU9BQkpPZ0FBQUFBQUhnQUNUb0FBQUFBQUI1QWdnNEFBQUFBZ0FlUW9BTUFBQUFBNEFFazZBQUFBQUFBZUFBSk9nQUFBQUFBSGtDQ0RnQUFBQUNBQjVDZ0F3QUFBQURnQVNUb0FBQUFBQUI0QUFrNkFBQUFBQUFGVHVUL0FFaTRQaHNXRHBDaEFBQUFBRWxGVGtTdVFtQ0MifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMC0xMi0yMSIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiVHJ1c3RLZXkgU29sdXRpb25zIFQxMTAgVTJGIEF1dGhlbnRpY2F0b3IiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlUyRjExMDAyMDIwMDgxNDAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4zLjciLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMC4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIwLTEyLTIxIn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMC0xMi0yMSJ9LHsiYWFndWlkIjoiOTdlNmE4MzAtYzk1Mi00NzQwLTk1ZmMtN2M3OGRjOTdjZTQ3IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI5N2U2YTgzMC1jOTUyLTQ3NDAtOTVmYy03Yzc4ZGM5N2NlNDciLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiWXViaUtleSBCaW8gU2VyaWVzIC0gTXVsdGktcHJvdG9jb2wgRWRpdGlvbiAoRW50ZXJwcmlzZSBQcm9maWxlIn0sImRlc2NyaXB0aW9uIjoiWXViaUtleSBCaW8gU2VyaWVzIC0gTXVsdGktcHJvdG9jb2wgRWRpdGlvbiAoRW50ZXJwcmlzZSBQcm9maWxlKSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzQsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfSx7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDM4NHIxX2VjZHNhX3NoYTM4NF9yYXciLCJlZDI1NTE5X2VkZHNhX3NoYTUxMl9yYXciLCJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwiLCJiYURlc2MiOnsic2VsZkF0dGVzdGVkRlJSIjowLjAsInNlbGZBdHRlc3RlZEZBUiI6MC4wLCJpQVBBUlRocmVzaG9sZCI6MC4wLCJtYXhUZW1wbGF0ZXMiOjUsIm1heFJldHJpZXMiOjUsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwiLCJiYURlc2MiOnsic2VsZkF0dGVzdGVkRlJSIjowLjAsInNlbGZBdHRlc3RlZEZBUiI6MC4wLCJpQVBBUlRocmVzaG9sZCI6MC4wLCJtYXhUZW1wbGF0ZXMiOjUsIm1heFJldHJpZXMiOjUsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjYsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo2LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlETXpDQ0FodWdBd0lCQWdJVVNPRWpUZi8veXFSZlBXN1FxOHF0SXlDckFnOHdEUVlKS29aSWh2Y05BUUVMQlFBd0x6RXRNQ3NHQTFVRUF3d2tXWFZpYVdOdklFWkpSRThnVW05dmRDQkRRU0JUWlhKcFlXd2dORFV3TWpBek5UVTJNQ0FYRFRJME1EVXdNVEF3TURBd01Gb1lEekl3TmpBd05ETXdNREF3TURBd1dqQXZNUzB3S3dZRFZRUUREQ1JaZFdKcFkyOGdSa2xFVHlCU2IyOTBJRU5CSUZObGNtbGhiQ0EwTlRBeU1ETTFOVFl3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRQ2R2bDI3dzJndTFmUFhlRUZiSWRxeDBCYWx2VkRWV3JRUEo3SHF2aXVFdFpIbHhTTHhTRnRjWHBUb2x2THZvZjhmNHRNZXJRVGtWR3pjbVl6bTFFQlQ0SUp1TW1vRXFma0VFaFdwc0FETUZyalprcWxaWTlFcXhRekxvVkVFb25FNW9HeFNkVkN4Q2NMSWFja3B5Ui9DQ1h2ajFCdC9oVGdFOWhUbEY0cFJxeE1reDNwbEY3eThkRFpsUkhXczd2Ym5obUJDR2VJMFpQRVE2bmwybUNnMnI3NGFkRjJ1Nks5cnJMZmhCQzNRTEU4RVByZ3FVc0kraGt1cTJ0SzRNMlNNT3A4dVVWVmtxVWV1M2gwa3IzV1ZJMFcwMnBrZ3JPZ2lGS0xGTmtTcmJZaGRqTUJEajVpem1xZmM5eEpSS29EWDYxMnFkOFpHVkhwVDVBWUZYKzFoQWdNQkFBR2pSVEJETUIwR0ExVWREZ1FXQkJUWnlVNURpUS9hMlVFZ0U3cUJLMHpoSXNSTlJqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUFNQTRHQTFVZER3RUIvd1FFQXdJQkJqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFYdm5CNFNMdVVKZllNU1ZHQWhzc0wvU21XbGkzRlNjY2d4eWR2S2xBQ2NpZElJV0tRcWEzcS9RU1VFUXpDOURnRWZNZ3I3aUMxQmtUWmJJTGJvVjZVWjVrbk5zdmpFWld1TWVvZ0o4dGdaczFoVnZLd1ppendKK21FY21zamhJckJZdW9MMVQ2eXJPSnZLRmcxanYrQ3k0WndBOUJway9WM1VPaXIxVnlLOGRDdHlIdTZ2Zm9zb3RBZFl4OEZBdVIyNDNnUlRNVjZKeDhKZGlnMkpESUFRTWx6VmVEcFNVSFgvSzJIWFJIeEh3ZmdqYmdVampCdS83MnI4T2ZlaHloekhYSTNLOENGRmRmbE8rOG5FT0pLM3k4RjFpdmdTNXVOLzhTbWNZdy9TVFFZd2hyeFB1d3ozblA4YmFNdW00QkIybm5ZbXBCNjBzWDNibDVrOFFVU3c9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFmQ0FZQUFBQ0dWcytNQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUhZWUFBQjJHQVYyaUU0RUFBQWJOU1VSQlZGaEhwVmQ3VE5WMUZELzNkNTl3ZVFTSWdTOUFRQVhjRkxBUVppOWZwZVZ6MXRZL1dUWnI1V3hwYzdXNWtuTGE1akkzWjg1c3JTMm5NMnNqdFd3WlM3SVVINEg0eENuRVF4NERBWkY3NFY3dXM4ODV2OS9sSW5CdlZKL0I0UHY5bnUvNW51LzVudk01NTZmekEvUXYwSGIvSXJYM1ZGS1BvNDVjbm00aW5VSVdZd0xGUm1aUVV1d2pGRy9OMWlSSGgxRVowTlJWUnVkcXQxQmQrMm5TS3lTL09oeXMwK2xrM2UvM2tROXF2RDRaVXRhNFZWU1V1WTBlaXB5aVRoQWZvY29PUlZnRHV1dzNxS1JpQWQzcmJjRXRqVGpZSW9mNldhSHNDbXpWUFdDTXgrY2doOHRMcVdNS2FNV3NVakxxbzJSdEpJUTBvT3ptZXJwUXU0ZXNaZ3NPTmtHeEg3ZDBrZHZUVDE3czRPTVU3Vkk4WmhqZ0dhTStBcTlpRU51OFBpZjF1ZHowN013dktXZjhHbFZvQ0VZMDRQQzVXZFRhWFlGYlI4dk52TDUrM0tnZmI1eE5NeWE5UmFtSml5bmFNbEdUVnRGbHI2YmE5dStwcW5FWDR1TXVSUmdqU1lFaHJON3V0RkZlNmxxYWw3TmZrdzVpbUFHSHluUHBiazhWbVkweHN0bnB0bEZDVkNZdHpUdUJOODNRcE1MalR0ZXZkUHpTVW5KN2U4bWtqeFozOWZYYktEZmxkWnFidlUrVFVnR25CVkY2ZlEyaVBIZzRXMTZVV1V3dnpiazE2c01aRStQbjBwdno3SlNldUF5ZXM4bGNwQ21hS3VvL3ArcVdyMlVjd0lBSFdydlAwWUV6aFhBdExBYnNzSGhwN2lHYW12eWlqUDhyeXFyWFVXWDlYb293eHlBdWZOQnJwNDNQT0JGWFpsa2Y4TURSaXFjcHlvd0F3cHV6MngrZld2ei9EdGRlOXNtc3p5Z3RjUjZDMXdiZHpCbDZPbHE1V05ZWTRvR2F0aEpNcmtURXgwakFSU0hBVnMrNXJZa1FOWGIrUWdmUExzUTZnWHlJbnNyZVFmbXBtN1JWRllmTDg2bjFmaVVPa1l2U2hrVVB4dmJ1a3pveTZLMWloTTFobzNYelc2RXZTZlhBK2RwaVdHYVdkK2RvWHpMem1Hd0tZRkxDQXNSQWxQQkFoTWxDRlhVN3RCVVZQcjhIZ1ZjSkhXcStGMDBwbHIrRE1UZHJQNHp2eFkxMWtOTWh4VCtTZVRHZytkNFY1TFFKaXR5VUdKTkI4VkZac2pnWUJaTS9JSS9YQ1RrajBxeURPcEYyQVZRMTdDSWpVcC9EblQxVWtMNUY1Z2RqK3NTMXdnMWdFM2dpZ202MGZDWHpTblBYYnlBUGJJWHYrSURwRTE2VGhhSElTOXNreWhsbU1FNUYzY2ZxQUtocTJDMEU1UEgxZ1lhWGFMUERrWkcwSERKT25LV0hwNTFJMHo1U091eDhlMVdBdVp6ZEhRclRrcDhUbWpYb0krbGEwd0dac3p1YnFiTzNpZlE2QS9XN3ZWU1lzVjNtUjBKS3drS2M0V0hpQmttUjhJM0NDZ0k4N29PTDRxelQ1UCtSVUpCZWpFT2dBUEs4aFlQemF0TStlSVRwMklPOXlUUW1lcm9tUFJ4eDFxeEFjc2lsZS91YlNlRWJjV1FHWUVDZ2hjTFkySHlLam9nakgyNWhNcGpwVXYxT3VnbGk0ZWgyZVJ3ME8zMmJKamt5dUNnTnpnMHZ6bFlNU2lTczB1b280TUc3aE1PakNFYVgxeUZFMG5TdmpCenVUbkVwSzg2WjhJb3FGQUl1Ync4a2c5QXJFYVJFV1NaSStqSDRYYnA2ZzlFOUVuSlQzb2FSekROK01VSkJRREhuNTZhOG9VbUVCdXNPeEJzL041K3RKRWJQa0FGRGo4VUd2T3MvSVd2Y1NnbEdCaHZTNy9GVFlmcFdHWWREWThmUEF4V1NBMzVzVEM0cDQrTG00QWFxSW9QZVF0ZnVmSzZKaDBaaHhsYnNVWE9TbVhOaWZENVpUQWt5RG9mYmJjY2x4bkE4V05BcXhDYlJOeWtoWHhRcGFEdzY3ZlhVWWJzaUcwS2h0djJvZUl2aDhyaFFNWU9jRUFxWEcvZUkrem5nT2M1eXhyOHE4MklBTTFjL0ZMRk9wbHF1NWVGUVhyTVp6R2NWQ2pZYkxXRzVJNEJUMWV1UnJsYnh0Tk90TWl0RERFaExYSUl5bkFBdnVPRVdFM1gzTmRBZnQ5NFZnYUc0MlhJUXQwWlg2UGVDRS9xUUZlOXJLNkh4N1lVNTBLdkg3Zlc0ZlMrcTdLS0JKeHNnZ0JYNXBTQUdoMWpJclZoNXpRNnczUmZhYWhCWG0vYUNiQ1pUakNVRlVUeVdacVc5cDYyTWpKUFhWcU9yUGdNTzROdjc0R2tmK293ZnROVkJEUW5qRkpxSFN3MTdwWHZoV1c1S1pxZS9RNDlOL1VTVENBVldvUVhGSUhCSFhYZTNGUHJVRHN1R0RtdEYvaEhLVEhwZWt4aGlBT1BJK1NKcTZTNkhGNEk5WVd6a0JKVG80NmlVTXpXcDhQaXIvUmlkdUx4S1lzU2tzVjh2TGxPUXZoR1gyWWxSME9CaEJqQyt1L2dFY3ZZMEFwSzdZazQxTnhqUFNRbldGSFRGNjZVcmpnZXZCOEN1NWErbDJ2WVNSUHR1VkRvNzNoaGRNU0huVVg3dFRqc1ZaR3hBbC9XcHRpT0lFUTFnbkwyOW1YNi90UjF0bWxrWWo4VzRYK0NTaldjVURHWTFOcFMvQzdoU0txaU1MTS9sMlFtU1daNzNEZHorZ2lvOEJDRU5ZUFE0NnFua3p3WFVicXZCa3hqVVFzV2ZaRmdidW8zckFmK3dON2pPTzkwK3lueDRQaTNMKzBuWUwxU2NoRFVnQVA0Z1BWLzdJZDFxKzFIU2htdUdrSXFXUlBneXhNRnFQOEhmalRualh3WTViUWZiSmN0Nk9JektnTUhvdEYvSGUxZWdzYXhIU3FHNndmZG1RNXg4TnlURkZxQmNwMmlTb3dIUjN5azUrMzZoRjd2WEFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJGSURPXzJfMCIsIkZJRE9fMl8xX1BSRSIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsImxhcmdlQmxvYktleSIsImNyZWRCbG9iIiwibWluUGluTGVuZ3RoIl0sImFhZ3VpZCI6Ijk3ZTZhODMwYzk1MjQ3NDA5NWZjN2M3OGRjOTdjZTQ3Iiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJ1diI6ZmFsc2UsInBpblV2QXV0aFRva2VuIjp0cnVlLCJsYXJnZUJsb2JzIjp0cnVlLCJlcCI6dHJ1ZSwiYmlvRW5yb2xsIjpmYWxzZSwidXNlclZlcmlmaWNhdGlvbk1nbXRQcmV2aWV3IjpmYWxzZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOmZhbHNlLCJhbHdheXNVdiI6dHJ1ZX0sIm1heE1zZ1NpemUiOjEyODAsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6OCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoxMjgsInRyYW5zcG9ydHMiOlsidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN30seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTh9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi0zNX1dLCJtYXhTZXJpYWxpemVkTGFyZ2VCbG9iQXJyYXkiOjQwOTYsIm1pblBJTkxlbmd0aCI6NiwiZmlybXdhcmVWZXJzaW9uIjozMjk0NzQsIm1heENyZWRCbG9iTGVuZ3RoIjozMiwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjEsInByZWZlcnJlZFBsYXRmb3JtVXZBdHRlbXB0cyI6MywidXZNb2RhbGl0eSI6MiwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjEwMH19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTAyLTAxIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NCwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZdWJpS2V5IEJpbyBTZXJpZXMgLSBNdWx0aS1wcm90b2NvbCBFZGl0aW9uIChFbnRlcnByaXNlIFByb2ZpbGUpIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNTAyMDEwMDYiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wMi0wMSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzR9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDItMDYifSx7ImFhZ3VpZCI6ImY1NzNmMjA5LWI3ZmItYjI2MS02NzFhLWQ3Y2Y2MjRjYzgxMiIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiZjU3M2YyMDktYjdmYi1iMjYxLTY3MWEtZDdjZjYyNGNjODEyIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkV4Y2Vsc2VjdSBlU2VjdSBGSURPMiBQUk8rIFNlY3VyaXR5IEtleSJ9LCJkZXNjcmlwdGlvbiI6IkV4Y2Vsc2VjdSBlU2VjdSBGSURPMiBQUk8rIFNlY3VyaXR5IEtleSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyNTYsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfSx7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciLCJlZDI1NTE5X2VkZHNhX3NoYTUxMl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwiLCJiYURlc2MiOnsic2VsZkF0dGVzdGVkRlJSIjoxRS0wNSwic2VsZkF0dGVzdGVkRkFSIjowLjAxLCJpQVBBUlRocmVzaG9sZCI6MC4wLCJtYXhUZW1wbGF0ZXMiOjMwLCJtYXhSZXRyaWVzIjo1LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCIsImJhRGVzYyI6eyJzZWxmQXR0ZXN0ZWRGUlIiOjAuMCwic2VsZkF0dGVzdGVkRkFSIjoxRS0wNSwiaUFQQVJUaHJlc2hvbGQiOjAuMCwibWF4VGVtcGxhdGVzIjozMCwibWF4UmV0cmllcyI6NSwiYmxvY2tTbG93ZG93biI6MH19XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNTRENDQWUyZ0F3SUJBZ0lKQU05UnpZdTRFSUlsTUFvR0NDcUdTTTQ5QkFNQ01IOHhDekFKQmdOVkJBWVRBa05PTVN3d0tnWURWUVFLRENORmVHTmxiSE5sWTNVZ1JHRjBZU0JVWldOb2JtOXNiMmQ1SUVOdkxpd2dUSFJrTGpFZU1Cd0dBMVVFQ3d3VlJYaGpaV3h6WldOMUlFWnBaRzhnVTJWeWRtVnlNU0l3SUFZRFZRUUREQmxGZUdObGJITmxZM1VnUm1sa2J5QlNiMjkwSUVOQklEQXlNQ0FYRFRFNU1UQXlNekE1TlRBME0xb1lEekl3TlRreE1ERXpNRGsxTURReldqQi9NUXN3Q1FZRFZRUUdFd0pEVGpFc01Db0dBMVVFQ2d3alJYaGpaV3h6WldOMUlFUmhkR0VnVkdWamFHNXZiRzluZVNCRGJ5NHNJRXgwWkM0eEhqQWNCZ05WQkFzTUZVVjRZMlZzYzJWamRTQkdhV1J2SUZObGNuWmxjakVpTUNBR0ExVUVBd3daUlhoalpXeHpaV04xSUVacFpHOGdVbTl2ZENCRFFTQXdNakJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCSGxxMmpVUU1hbEhqL0JSZVFlZkdpejRFdllKeUZMV1B6NFJmaEpHS3FxbCs4bjk2aFQxbTVnWG9Udm9McmpTVTdYMGNCZW9Uc2doeWgyMit5cnM0K1NqVURCT01CMEdBMVVkRGdRV0JCUSs4U0dXMkJYYnFiMmRjQU9pV0pPVStHQ3NQakFmQmdOVkhTTUVHREFXZ0JRKzhTR1cyQlhicWIyZGNBT2lXSk9VK0dDc1BqQU1CZ05WSFJNRUJUQURBUUgvTUFvR0NDcUdTTTQ5QkFNQ0Ewa0FNRVlDSVFEcTh4SVcwWks1eXozRUF6bXV4ODhMQ1RZTzE1N2ZUZnlPaU96QzJBRHlhd0loQU8xUFdZbGVGZ0gvM211RDhjQkFNcjExZkVLZEYvQWFDMTZmdHhhZXpOWEgiXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSXdBQUFBWUNBWUFBQUFvTnhWckFBQUFDWEJJV1hNQUFCN0NBQUFld2dGdTBIVStBQUFGSUdsVVdIUllUVXc2WTI5dExtRmtiMkpsTG5odGNBQUFBQUFBUEQ5NGNHRmphMlYwSUdKbFoybHVQU0x2dTc4aUlHbGtQU0pYTlUwd1RYQkRaV2hwU0hweVpWTjZUbFJqZW10ak9XUWlQejRnUEhnNmVHMXdiV1YwWVNCNGJXeHVjenA0UFNKaFpHOWlaVHB1Y3pwdFpYUmhMeUlnZURwNGJYQjBhejBpUVdSdlltVWdXRTFRSUVOdmNtVWdOUzQyTFdNeE5ESWdOemt1TVRZd09USTBMQ0F5TURFM0x6QTNMekV6TFRBeE9qQTJPak01SUNBZ0lDQWdJQ0FpUGlBOGNtUm1PbEpFUmlCNGJXeHVjenB5WkdZOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6RTVPVGt2TURJdk1qSXRjbVJtTFhONWJuUmhlQzF1Y3lNaVBpQThjbVJtT2tSbGMyTnlhWEIwYVc5dUlISmtaanBoWW05MWREMGlJaUI0Yld4dWN6cDRiWEE5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM4aUlIaHRiRzV6T21SalBTSm9kSFJ3T2k4dmNIVnliQzV2Y21jdlpHTXZaV3hsYldWdWRITXZNUzR4THlJZ2VHMXNibk02Y0dodmRHOXphRzl3UFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzQm9iM1J2YzJodmNDOHhMakF2SWlCNGJXeHVjenA0YlhCTlRUMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzk0WVhBdk1TNHdMMjF0THlJZ2VHMXNibk02YzNSRmRuUTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl6Vkhsd1pTOVNaWE52ZFhKalpVVjJaVzUwSXlJZ2VHMXdPa055WldGMGIzSlViMjlzUFNKQlpHOWlaU0JRYUc5MGIzTm9iM0FnUTBNZ0tGZHBibVJ2ZDNNcElpQjRiWEE2UTNKbFlYUmxSR0YwWlQwaU1qQXhPQzB3TlMweU0xUXhORG8wTURvMU5Tc3dPRG93TUNJZ2VHMXdPazF2WkdsbWVVUmhkR1U5SWpJd01Ua3RNRFV0TURWVU1EazZNek02TkRjck1EZzZNREFpSUhodGNEcE5aWFJoWkdGMFlVUmhkR1U5SWpJd01Ua3RNRFV0TURWVU1EazZNek02TkRjck1EZzZNREFpSUdSak9tWnZjbTFoZEQwaWFXMWhaMlV2Y0c1bklpQndhRzkwYjNOb2IzQTZRMjlzYjNKTmIyUmxQU0l6SWlCd2FHOTBiM05vYjNBNlNVTkRVSEp2Wm1sc1pUMGljMUpIUWlCSlJVTTJNVGsyTmkweUxqRWlJSGh0Y0UxTk9rbHVjM1JoYm1ObFNVUTlJbmh0Y0M1cGFXUTZNakU0TldZeVltWXRPRFZtT1MxalpqUTNMV0ZpT0RjdE9URmpNMkl6WmpCaU56aGxJaUI0YlhCTlRUcEViMk4xYldWdWRFbEVQU0poWkc5aVpUcGtiMk5wWkRwd2FHOTBiM05vYjNBNlpXTXhaVGczTWpFdE56TTNZUzB3TlRSbExXRXpZVGt0TlRGa01UTXpORFpsWlRJNUlpQjRiWEJOVFRwUGNtbG5hVzVoYkVSdlkzVnRaVzUwU1VROUluaHRjQzVrYVdRNk1qRTROV1l5WW1ZdE9EVm1PUzFqWmpRM0xXRmlPRGN0T1RGak0ySXpaakJpTnpobElqNGdQSGh0Y0UxTk9raHBjM1J2Y25rK0lEeHlaR1k2VTJWeFBpQThjbVJtT214cElITjBSWFowT21GamRHbHZiajBpWTNKbFlYUmxaQ0lnYzNSRmRuUTZhVzV6ZEdGdVkyVkpSRDBpZUcxd0xtbHBaRG95TVRnMVpqSmlaaTA0TldZNUxXTm1ORGN0WVdJNE55MDVNV016WWpObU1HSTNPR1VpSUhOMFJYWjBPbmRvWlc0OUlqSXdNVGd0TURVdE1qTlVNVFE2TkRBNk5UVXJNRGc2TURBaUlITjBSWFowT25OdlpuUjNZWEpsUVdkbGJuUTlJa0ZrYjJKbElGQm9iM1J2YzJodmNDQkRReUFvVjJsdVpHOTNjeWtpTHo0Z1BDOXlaR1k2VTJWeFBpQThMM2h0Y0UxTk9raHBjM1J2Y25rK0lEd3ZjbVJtT2tSbGMyTnlhWEIwYVc5dVBpQThMM0prWmpwU1JFWStJRHd2ZURwNGJYQnRaWFJoUGlBOFAzaHdZV05yWlhRZ1pXNWtQU0p5SWo4Ky8wVnhSUUFBR2ZWSlJFRlVhQVhWd1hmY24zVjk3L0hYNS92OVh0ZHYzRHM3SkpBSUFVTFlCWm1DaW1EVkRsZnR3MjNIcVl1cVBWMFd0ZGJXUjYzblZHMnJucmFPdHNoRHJSVWZQUjNXV1MzS1ZoQVpZUW9FUWtMV25kenpONjdyK243ZTUwNGlLTldPODU4K24ybnVpc1MvSjNHOFlaZVoyWlRFSW1EODUrUk9PMFpTVWZpSEpQNkZIeUlFV0JqQXd6Tnc2b2JJM0N5a0NHYUdKTnloTE1Xd2ducm9wTkpJQ0JOVWNvb2kwTzhiK3hmRjZQTEFxSU1jR29kMlcrellEOUZnNDlyQWdiMWkwVEpUSFdHQ3VvNlVoZUVKZGk5bVZyU044Y0tZcTQyZCs4U0tDU08yZ0F3ZElCUVFUUHg3WmxEVmRra1dielRaY0tUSTNkaHZ2ckdsdWVNOWQ4VVRYMFJyK2ptb3lZQ1FPTVNzQkxwQUFqTFFSeHBneG8rUkFtbHI0b2NJWmhlR2tGNWxCcEw0cndoSUNYTERmSCtnRHhlRmtIZ0NDZVN3Zjc4aEV6L0tqTVBFRDVJZ1JYdVJ1ZjIwcFlCWlE3MmY3U3RHSDNZbVR2eEZNaGNnQXdsaUFSTGdHV3dHTkFmV1Fxd21oc2hCY240c0dPQStsOHFDeHhtUUJVM0RTWklqOFY4VFlGQzBqWVVGYmUzMWRQMnk1WkF6VHhBUzVNWkFnUEdqelFCQjFZRHhBOVpaMEtrbWNFSEltYzkzTHZpM0hmSElrcVplalRJZ01FQU83bDhueGs4aDNZTG4zWVEwanVzTTFMeU9FTTVFNHNlQ2dPei9sUFljRUk5eFFUdHh4SGczbnVrWUlMNXJFZGdPQ0NqNGZnWVNzUjVxUmFlanEwSml1cXA0Z2hRTkx3MVY0c2VGQUs5Rk1yNUhRTFRqUWd5Yk1jaU5nN0huMXBXWGZPT2g2c1NMOFBrak1RZExZR0dhd2Q3ZkpYWXZSMFdmRU1BQzFCV0U0bFo2Qy85TW1mNk9jdVRwU0lENGtXVUcwbTdFdmVtMmJjNWpobzFZT3htUE9uTVRwMmFKN0lDQmlZOEovVDdRQWtZQWNaQUFROEVvYzBPMnlMYlJVVU1DTTVDTWRodjJ6VGxrSS9KalJHQVJRaEhJalhpTUdjZEtHbmVNMGpLSU94NnBWKy9MWnVjajd4QU1TUHZvNnhWNDlRWFNPTXpOdzhnRWRGb3dNd01qWTVEU1hwcm1yUlQ2QjR4VmlCOWRFa3R1Sk5xT3RIYys4SmorRURwZDJ4VGFqR2dBR2VNZ2QvOW5ZRThJNElJUVFDd0pnSU1MWEJBTm1neVNrUjJLNE56OUlEdzZMellmTFFyang0WVpORFgwZWs1M0xDQnhTQXAyanBsaGdoWTFzelp4MDFYTkJYTUV0aEFxUUJXOTVoMDA2UXZFRWFoSnRNdVhVTVFYMEZSWDAycDloQ0xOb3dDZXJzZjhQckJWL0tmRVljWi9uempNK0FIdUVBTC9JVGxnWU1aaEJxNmJFUXZwU1VkR0hsUFZ4QlZqZG82eTRSSWdFTnNFTzZKQmxwRUNWTFVUZ2hGTFFUWWNJeU1LUVpNaEcxUU5GS1g0NWoxaVl0Sm9KVU9WK0NFTUdBRUNNQStJL3c4Q1hHQ0FPMWprdjgxWUlzZ09Fb2VJd3l4QVhZbTUvYzZxbFlabmFESkg1Y3pKaElCTW1PQWgzL2psZ1hWV1F6NlJZREFZWHN0Qy9SZDBsa001QXZJM1VIVGZSd0JxZng0am8xdUJMMklSNmdEWkcwSUFCTzRRSTJEZ0RpWU9zUVJ5a0lNWlAwamdHVUxpY1JZQWdRdk1PRVFDTXloYTRCbmtQSUVFRnFCb1FhN0FIVUlFQkRuZmljanBwRWx4aUlESW1zNlluWmtiYURKWU1EejczY2dmbVdrQ1JZTEpDUDArV0FBS0htZUFaRWdRQWdUamtORTJwQWdTaHdqSUFvempnWjlCT2srd3pzQmM3QU8rZ3Zpa3hLUDhKd1M0R0RHNEtFWE9FcXpxdFBBQTN6SGpDNEt0L0JjRXk0Sng4V2liTTJKa0tvb2FlQUQ0Q3VMYkdCUWx4QkVqWmtHZjlYVnRtNGhnQ0l6WnYrWEZEejBZTnA2TkxheEVEbVhuczB5WkV5b28weG5JL29pY29ha2hSTUJlZzN3VFVrbjIxUmduRThRaHJRNG9nMmNIYlFmMjRxd2kySHFTQlJxQkFETWU1dzZwZ000WURIcVFHekNEa0NBVk1PeUJIQ3dBQWdHeEFEbDRCb3NjWnFBTUNHSUx3amhVUGFGc3dBNkM3bUZKbW5sVUhPUVpXbDFXajR5eVJVRWdrQnRseVQydHFBTjc1NFc1c1dSQ2NLcmdETERqZ09VR0NvR2RHTGNDL3lwNGhCOUdFT0NZcVhaNGJXN3NSZEYwRkdhR0lBTXBRc0NlWllGZk03TjNDUDdhUUh3ZkFUbXJSUFpMcmNpdllHeVdXVmVDdFpNZ2w1ckszcFNpUG9iemg4Q0E3eU1naTFHWlhlcHVyNHpHcGcycllsblhBamVVaERzUFdlVFBMZkxIMVVEYWZtK21Mb3lSdHYzRVpOY21xeXhhTkNCdXZUNmV1d1B4TXRSdjQrclJHOXhJTXVnME1OUUJMTnhQYTJRTHVZRnFBTVRuQTgvbm9DSUF4aUVoZ3VjRExQWStUalA0RXVOajkrRFdKNFJBTlhNNmROL0N5TEt6V0p3RmJ5QkVRQkJMVUlERm1RZHhYVWNxN3NUQ2dHSC9LUHB6ejZBemVoSUdOQTJrTm5qZXdmYmJQc3JZNnZ0b1R6NGZhMTZJQmNnWldpT1E2MGZZZnYrSG1GaHhCOTNSbjhQenkzRGRqckdkSmFtN01YQ1FCRVhrRERQR2NnVVd3WEFHZlYxZlcwQnVheTN5ODdnOXY5MjJFdzFiSVRjd2dTQUZROEpqNEg2WlhWRkxId0JtK1M0SEFyeDQ5VEo3UjlrS3h3OFd3UUtQazZCc1FRR1d6ZFlYby9HamRaT2pNaDgyRHBNZ0pqdHA5VVQ4Mzkxa0YrZUdva2pDSmJJTWx4QllyblZrdTJ0dk13OUhtdkpyQlFPV09GQUVUbG5WRGg5c1diaWdjY05NMUJuRWtpQWtrTEVoQkh0M0dXd1ZtZCs4ZDV2enhlL0U5TXl6N2N5THo0ZnFFU2lWMlZscytQeWVZbTJQUGsvRk1zZ0hEUG96V0lDcWdtN25BVHkvZ05rOXI2RW9uMGQ3OUVrMEZZY0lDQUhFRW9FUHY4cWpEN3lUVmNkZHc4UjRReldBTEJCZytXRm1Gci9LYkhNRlUrWHpDQW15Z3dVbzB4NzJQZlNYUEhEbjM3TGxLUTloMWlkRXdHRm0xeW82eDd5VnN2dEc2aGt3b0RQNk5oWm1MbWZaeGhZcFhZelhJQUdDYUNDOWkxNzlGelRYUVRyaFFzcE40SXZmQXVaWmtycGRjWkNnRTJWbmV6WmNJbUswT254MWR0YitMamU2ZU5VSysyRENqcTlkaEJDMDVBRFNpQVhLVmpTYVJqUWl4R0RIZ3IzVDRGbkFyMHA4MndXZHlGdGJJK0czVFRiZXVCQVFnQkFONVBNakxUNTN4NE82ZXRzQys4NC93ZFpPWWk5dGlPOHl5N2NpM2NoQjR0eFd5ejRTNGNRaVFPZzZ2UjU3VEZ5VmdqeVlYU1JZMVFBT2RHSjhxYVJySlB0b1UzUFF1U25ZRmFQUk5tV0RqRERZV2RWK3ZSblo0R3d6MjJCQU5aU1ZuZmlxbzQ3bHM1UE9WZlBMYk8yS1VkdE1YMkFHQlF3NkU5YzBkKzFkeGRyak50Rk9vRGhDWi85NTdIaGdLMGVmQzZFRzV4NEdpNzlPU2g4Z3BLY1IvZGNvdTZmUW40ZnNrQ0pRL3ozVWIyQnF6VTZhUG93c081Ymg0QUpjdS9EbXE3UW5CdlNaWi92V3R6TjI3R2wwSnpjeVdBVFo5VlJ6YjZiZHZvYk41NHFpQldxZ0dvSWl0RWYzc09mQW14aTNTTGQ5S1ZWL0Y2M3VWemo2TElqRk9sUmRnQVVRRUFNTXEzdkpkaFZyMWtKdUxjTW1uNG9xb0w0WlBJT1JHSENJR1ZORVRoSmdCdG45eThNQnJ4OGRzN2NGaFhkMm9oZzJmbVBPK25TUTNReTJEOU5rVTlrcGk0Mi9vR3lGaThwSWtBdHZ4TVNZblIrSytBa0x6WXRHMjNaQnV3eHZ5ejIxNjBhWVFaRkFVUFY3L3FtaXNEOW5WTGYxK3ZTbmU0NHNRTllWamV6dHBmSFVSbjRUc000c3ZNL0VpU0hCVEYvOWhVWDcwN0t0ajQ2MDJJWElOOXpWYko0YWkrL2ZjblM0c0JxSXhsVzBZM3pkdmdVK3VtM2Fqemp0S1A0TWJGTXRrR25Pczc4M2hQREpFT3hSU1JnY2lYZ2J4a3NGbHFLdGFLZjR3djVRVjUxNnJKNjB5am1oMm05WUVKVHNmbzllLzhoOUJ6YWV3Ukh6VTRRQ0ZGcUU4QWE4dW9taXVJV21ENTZoTE1EaWc3UkhIdVNXYTcvRXNQOVJUbm42czRnR2kvVzF5TjVJSE95a003R01oWVUzczdqNFVzUnFpbEFnUGs2T3YwNjczc3RSNjI4bmh4dkkya2gzL0NibUYxK0x1STN4TmVEaDZWVDlWeUdPUlBsbUd2OVRKbGJ0eElENTRWL1NhajhYZkNkemV4ZXhOdFRWV1VUZmdCbVlRVERvRFhmUTB6WW1XcEEybm9QN0NmaGdIeUhmam9tRGtqak14UHBBT0E0RHo5d2c4WDdWK3IyUlRuejVZcTBIZHMvbFB4d3A3VFBCbU9PN2drSGxYSHYzdy82eGlTbi8rVk0ycGJkWHMvWWtqMkk0RUtFS1c1NTZVdkhsbUppb2Vtb3JjMGdyUVFPUEhoajZXMm5zYjhxQ3g4VUlNUmk0OXRkWmYxQVVYREJXcG9tRlNyOWxGczRKQ0F2TTdacjFTL3Z6Zkh6RGVzTU1FRFJ1dDg3M21yY29wL2NFV0I4RHpYUlA5My9xT2kvT1B6bjlhbXZVbnJ3d0M1Z2U4dHBmQlh5Tko3b2I5RHVZbldqWWFaN0ZZclpOTWNOSzJKS0NqVmRtZEJuQWdCc2YwaEhiMkxMdWRhUURJMVFWeUtDejZtU09tZm9rN24rTS9FdDQvUWl0VWVpT2d6Y2c3V0RZK3oxeVBvbWlYRTlqZjRocEI2YjFwSGc1NHl1ZndYQUFaaEFOWEMrbmFtNGw4QjY2NDlCS0I4Z0xNTmQ3SjVWdW80cVJFYnVNd2NKdlkyRU1pMUNNWG9TcUR0aGx4QUFkemRJMGV5azczMkk0bk9PdXUySDk2dE5adFR3eHJDQVl4QVFMKzIvQ3JNL29hdWhWVDZaVmRKaHVycWV0QTNRaU9LUVVqZTg2eFl3cHdVN0hyMjBuZTB2MmRHNC82K3Z1L2lwZ0c5OWxnRmhpSE5JNHZVYTZIUGR2N2h2d2liRk9PRFVCdVJIakl4eVJIZW9HZ2tFTXNHdEczODdCMzFoMjdHb0pFT0RRYlVPM011N2RubG5aRVdYQlZMc2RPNVk1WGg1ZW9DaUtDRE56K1VQVCsvempyWlNRd0lBNnc5cEpaekQwYXdmeitlZVNhU3dtY3BYWk5UVnFwNjlaWWI4aUI4K09SOTZkVXZ4YU1FWWxHV0JMV0pLQkEzSjkyNHpUV09Lb1hEU25LOXVZSkFRRWd3UE42Tlc3ZTJ1Z3pkbVFRU3dSNE5EdWJNYjlyOGpGVnFJK0FmWVpvdCtIK25EMGFTejVCc3EzMEJ2c2d2QU5tajNnZmhSaCtUU2h1Uko1QllpR0FoZ2g2QjZLQkFhc1dINDZYNy95YzFqcksreDdBRFkrOCtYRStBY0l3d1JpU1laMitVdElaMUEzTXhSaEFta3psbjZmYmRzYVJJZWlPSldEREpCRHc0RDIyTGNZOW1CMkRrSjZNclJncW5NelRYMkFiQnlVa0ZqU3d1eDBDUXlmam03UERlTmgwNkRVRjFwOXZaekdwdVdBUUFZWk1NQU0zQ0VBM1RaUXNIV3Uxcy9VTWYvVlVkMXdTYitHUVEwR21FR0lRQXBmZjNSL2Z1M0tGZHpsQWpOUWdHWUlKMjJBWnB2NDBPZmh3ak1EenozZEx0MjV4K1JvNCtybHRpd1BJWFM0cDEzeUoxUHpScnNGcVFWMUF3WjBTMk00QkVrN0RKRmxyQmlOeFl2UDU0VmtWaXpPaVpCc0VlbW5nTE1FNDRENG5ob29ETTdpSUFPRHhXZ1UwVGhKQXR3Z3daZmpKWGRzRFNlMkNQa0lWQU1CTUJEUUREa2tkVTdFdXUraUhyd2FlQW1Ub3pmZ3dHSUZxSWY0QktWUDB4OUM1anE4dVk1UThEM0dJY3BRbE5DZFdNbmV2Y3Y0OXJjK3lyTE9JaXZYcm1DeXVJektEUk5nUEs3SlhlQmN6TUFkc1BzeHU0Mk5SNEg3OFpUaEZPb0tNRURnN0dCMGZDc1IyTHYvQkk1WXR4a0w4SjBicjZPM1B4TUxEa3BrRHBxazBPa2dZckNqcldNajkrM1JUZE1MZXZVNFRLOGVnN0lGYnBBTmhBaEJXQU5tY01SeVk2U0Evb0xZdk15MzF6bGUyV3U0aENYR1lXWlFOZjczL1lwTHk1WjJsUUZLak5BQ0JlaFYwQ21FQUFkaXlYbmRibnJwMXVubWo4cFJ6bDdmc25iZHdNNTV2M3JkbHZEb3lSc01HakhZQVRQVDBFcXdjc0t3RUZFdzNDQ0hRSVRWMGV5aVd1QUdFVWJLRUg3YUFRbk1EQVFPR0dBc0NZWUFBNVI5YXlmWTZRbDd1bVNVN1JybWVIQjcvYVRiQjFQZDU1QjdHM0RMWUxzNXJBMDJBVVRVZ0F0U3NaSHNMMmJQZ1J0b0hDeHZBRnREc0swWU1IbGNDMDhyeUwyRTZocUw0cUFRdXJnbWlVWEJzUDh3dmRZcnFQYk1zbjdsMVp6NkhGaTI1a0p5M3NoZ0hrTGdDUXdRSUNBVnNEQjdMYjNlYmxhdGhSQlBZWGJmQ2c2eUNGWkEvNUU3R2U2K25kRlRZTTJHMHhsckgwTnY1Z0JYL2VPOVBIdzNkRVk1S0NsdzBMR0JjQ29Zb0pGT1MremNtVCs5WTVlMnIxNWhkRHZHMm5GalVJRUJCcGhnVUl0MmFSeTV5cmg5dTVqdGlSUFc4Unl2N0hmZGpJQjRURERERzN2NHpsM0RmV3Vuak5GV29oMk1Ka0x0RUlFQTlJWXdWaksrNmFqNGYrZ3FuTFpKTjJYRjF3em1oUlZVRE5uYVRBTW02Z1hSekJtdDBwQTdWUTJybGhjMGJtUVhNUW5Qck9rTk9jNkNpSVlIV0JDcUJNa01ZNG1FeFlBbG8xOWw5VG1zN1diVDlkQS9WclR0OUJpdFcxWFFzUXlKNjY1WlBIVUh6czlpZ3hMeEJveXJnUUk0SHZRQnpLWndRVm1BNUR5ODZ5WXF3ZklXZE9JRk1ISUNzZDBEUVRWWWh6VlhnRTFCbUFWenpFYUFJNEVhWXovWURLazZGenBYY01IUFBrem5LQ0N0cDlvZmVaeUF3Q0Z5aUFrQ21leVIxTHFkWFBXWTJRTm1KNURLaER0WWdQYllrTVhaLzR0RmlDdUFBejlCTTRSKy8wWTJuN09MZGNkQktqa295UUJqTTlBMVJCYlVpeXl1bjdDN2psNExUMXBqekM3QVlBaG1QRUV3a0tCcUlEc0VDNzhJOXFjMWpFZUUrQjUzMFdtRlgxNDJtdTZxYy82d0F4bHdBUVlJcWd4akhWYTg4cUp3eFVtcndtbVBQbHkvZXFvZER5U3o1WFVqWW0zRmlyYVd6KzRXUVNLWkVWcWdpc01FVGFPT2pHeW9hSGZGY05GR2xCa0xMREVMZyt4L0hjdy9VZ1E3S3JzaVFnNHFaSG0yMGU2VzJaeHhTTGRwdkoyZCt3cnM5VGxETEEwR2tVVTFkelFUdTZEaUdKTE5ZM3dXdEEwTXBQdUJTOEhPQllFRTg0dC9RdEg2T0t1WFFmOVI4UFpUYVkrc1l2YitCWVl6TVBLa2ZSVGxQbUk4SHh6TVFBYjE0TXNFdTVKUTNJTDd5NGlEODBoanM3aFZUTzhCOTF0b3QycFNUTWhBQmpTUS9YTVU1VmZCZDdNNDJFSUlsN0ZtNVJ5akpYeml6NkN1dHZQY04yUjYvVVRUaDhYOUg2ZlYrUnVxR2FBL1RxNStnbDRGcWZVTkx2ejUvYVFDSkE1S0psb1c3R1F6UXhJbVkrajYxb1lqdU5iTjJEY0xHSmlCZUp3QkpUQjBRUXJXM2JEQy9xQXN3cHVHdFNYTU9jakVmaGtkb0NQQVhXUEhMRXZ2bmU5amNqNWlBZWU3aEtocWU4YnhhOEw3V3V2aUtmZmRuUi8rNWozNjBuT2VUcGhNaWd4QVlKVjRhb3hXRm9US2xVRUdCbklJMFg3WmpKY0hWQW1iMkQvamZ6YlJzdThvV2QrenVza2dpL1lnKzUyaklkNkpHV1lRZ2V5QlBaWE8zZEFORndmUmRURW0rVHRhcFI4UnpKNlIzZWgwd2ZZM2ZHYmZlYmRkYyt6TFZsRnJJNE9xRFdxRHdBS2dBOEJid2Y4bktRVkM2MU5VTTU5aDFTUzBPdEFmdlppaTlRSk1zTGh0R2NrZ05uTlEvakxLZDBBOGg1QVhxUHQvRDkxUEVGT21HWFlKY1JsaWlUYWpaZ3IzYWJKZGgvUk94RytoUEVXSWN5aThINXAzSTEra2JxQS8vQjNXcm9VN2J6akFvL2ZEMUJHdzdiWlBNNnlPcENqT29hbitsZjdzQjJsUFFRUjZ1MDlnWk9Sa0hERDdKdFVRcWlHUFNSYVlER1pQRm9jWndreXIreFcvR1F3cmpFSThyaFdNWllLVndPZGRmTWhkNThUQzNybHFNcHhmdTJnYVVRU2pjdDBXc0ZjWDBpdWFhSmZLUlJhMElxTmxOMzVnNlA2ekxuME83Q0dEbzhHZUVZTTluUkRHNkxuUHp1YzNiWnppb2VaQVhxYnhzSzFWaE9YRFNwalpCYVhDUjh6MEJvYzVscml6UEpxOXZTenQwaW9UT3kxalVHbjIwV20vdTczQnRyZmEzRCtZdFpPellEVFphM3BWbUJzMjlydXRrc3JNa0JoUFFiKzR2aDErVHpCbEJsbTZ5NHkzSjJPRjBCYUxScjJZU1NWM1BianFLVitibVZ2M1U4VGVrWmdEOGRtNDMwM09FQU9ZL1J1UjYybTFDdEE4MVg0SVU5QlVteWxiNzhmS1plUStMSC95WlJURFc2bWIvZURUaUxlVDJxTU1Gb2JNN3g2eStoVElmalRXL3pneG5Zc0RGaTZpR1o2QzZkOW9wWXp4eHpTNmltWndCR09qOTFPSDIvRGdaSWRXK2ZzVTZlMjBPckRub1JPcGRTV25QZzNXYk5wSHRyZXhzREJDcXpYSHlDUTBEaUhCL1BSR3hpWlhZUFZlY3ZNUU1yNWZHaG5WK29WNU95MUVEbkZBMkhHbHdsdWlBY1poeGlFdTdUWFpmVUxIaEVLWEUzaGE1YXlpaG1oR0E5UlovK1RHYjdqbjc4ajlFU3hlSEN3Y0QyS1lSVEFya29YbnVQakpBSDJEdG9LbGdpVXlXUFJMSnp2NmgxZ0VGcWZaLzhoMi9jMEp4M05xVVpKeUEyWjZoZEFXSS95clJMZFQ4RXpITnN1ZzB6S2lhV2VLZWduR0xRTXBET2E1Y2lUWXliVUxpMmJkTXY1R25YV2hZVmVEdW1aMnRzeE9HNDFLMmFHVzNTRHBKUlkwSU5oNVlBZ0RCd0wzcklyN0ZxazREVXRnQmpHK21leDNJbjBSTThpQ2ZqTmdjR0RBN0NPUWE1QzlpRmk4RDF0WWo5Y2dRV2ZpRXVycDkrTFZINUhDdlpnNStCejlQaXowbDdHT1g0RDhGaHBianNRaFJpSVc3NllaL2dJcDNvWFVZTTMxcEJMbTUyRlFRWHRxUGEzd3Y1Qy9GRE9ZbVliVG52M2J4UFlPZWdzZllkMnhNS3d5ZzJxZWxqMmJPaCtMNnk5b3QwUmFmUkc1QnVWdjRIb1l4UGRMdXc5dzNuaGJIWGN3UUlJaVFwRmdXQWwzc01BUThZamc5aWI3cmtRWWlZVTlIN04xTGhFRWpYRFE5WXREZjM4MFB0TnFCYzlBSSswSTJYOHBwWEM1c0dNZElRbHhTQlNNR2xDWU1XZzBiZGE4dm9VKzdkbndESjBJZXc3b1kyc2FmOXJxa2ZoenZWa25tOHpnekdEaFRBRVJFWU5SWmRFZmF1dFlsMWVueEhXR3lBZmNMZHRmeHpGN1Z0bTI4L3A5c1NTbVpPZTRjdzRZQnpsR1B3dDMvNWNRd3Bzd3RnMXJKbUlSbmhtQ2dhQVRLbVkwZGR2bjlUd29PUXZtT1VSYVRReVhJLzhZOEZWY0R6QjBHTTZ2WXpnNGhiWEhQNU1tUDVPOFdCSVRoNWhCTlE5MGZvR3lmU0dldndpMkMyOUVkL3hJeXZZRkRCZVBCa3BDQW5HWVo3QjRGbVg3TThEbG9Pc3c3U2Fta3JuK01YajlGTHJwZWVESDBUaVlnV2RvalhhbzYvY1NlRGJEM3Exa2IyaVh4K1AyWEZLTWlKOG0yRGl4UEEwMTROeE10bG1NSjBqYjl0blpaeHhuRE9ma0JCUUN3MkdqaGNWSzAyV3luZ1ZseWVZeFRIQmNDdUVDQzR6V1dWbmkzbVM2cndqY09aZTV2c3E2T3NyMlNlSXhCcGk0YnVENXhRRzdMSm05ME1GU01DUndpU0xTbTZuMWp3dVYzcnV5eGMwc2tVUnJNdERwR2lkTXNaQ0MvYXF5endxOU1rVXJ6STFHQW94YTBFN2E0NVd1N0EvMUoyUGRjRDhDQktwRXU5U09uTVBMOTgzejV4TnRQU3NSR0dZb0FramdFZ20vWjk5UUh5NGpsM2VEN1I5VWptQUNPQldKUThUaVBsdisyZnQxM0JiRTZZUWFDRFh1aHRrYWl1TE5vTmVRd241R0NxTllQc215SThhSVJhTHVRNjRiUWlFUWh4bGdFZXhvVEsvam9KeWgxWUdSU1JqTUMxRVRBaytrUUV4YlVINFhoQmtJczdoS3BwWXZ3MndFcjFuaW1EV0FFU0lNZW1BMlNvelBSLzU4WW9RRXVBQ0RZSmNnQjNPV09IQWRRZng3YWZQcThNRnFVWi9FYUVBS3dSWjdmZVlYS3kwZXVkS3lHcHNhVmt6R1NOdGdCT1RJcHB0R00yQUxLWEVBbUhmUnVLQmdpZkZFQmxuNmxzUC9rT3VLWVBhVW9ldW9FR3dZcEh2cXhyOWVLOXprTURTK1R6U3NNRG9KQXV6MnJEY09oL252S3NWbldORHhMUWlZcHQxMWl6SmZrN1RWekRLUE1TQUFCaUh3NE40NXZlVGhQZjZUVzlieWxMSmd3NkRDek5pWlROZVkrSHFXSGhMRzlFSk4zWWlVN01CSWFhOFJnU0FsRW90ZnFKOTE4MTM5NDFmUTdiK1NRTVpWQVlaa21MV1J1aGh0eWdRaDFCaUxWSXNEakV4SWdQTkVEUWdERXBBSUJybHV5RTJEbVRDV2lCK2dKZ0FkakJITUVwS0ljUWowYU9vaFpnNFlqekdXeUpBaVVDQUhVUU1OQjBrUmNFUWJiQmE0aVIvaS93SDNENVBNcGQydDVRQUFBQUJKUlU1RXJrSmdnZz09IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMV9QUkUiLCJGSURPXzJfMSJdLCJleHRlbnNpb25zIjpbImNyZWRCbG9iIiwiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsImxhcmdlQmxvYktleSIsIm1pblBpbkxlbmd0aCJdLCJhYWd1aWQiOiJmNTczZjIwOWI3ZmJiMjYxNjcxYWQ3Y2Y2MjRjYzgxMiIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwidXYiOmZhbHNlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibGFyZ2VCbG9icyI6dHJ1ZSwiYmlvRW5yb2xsIjpmYWxzZSwidXNlclZlcmlmaWNhdGlvbk1nbXRQcmV2aWV3IjpmYWxzZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOnRydWUsImFsd2F5c1V2IjpmYWxzZX0sIm1heE1zZ1NpemUiOjIwNDgsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6OCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjo5NiwidHJhbnNwb3J0cyI6WyJ1c2IiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotOH1dLCJtYXhTZXJpYWxpemVkTGFyZ2VCbG9iQXJyYXkiOjIwNDgsImZvcmNlUElOQ2hhbmdlIjpmYWxzZSwibWluUElOTGVuZ3RoIjo0LCJmaXJtd2FyZVZlcnNpb24iOjI1NiwibWF4Q3JlZEJsb2JMZW5ndGgiOjMyLCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6NiwicHJlZmVycmVkUGxhdGZvcm1VdkF0dGVtcHRzIjoxLCJ1dk1vZGFsaXR5IjoyLCJjZXJ0aWZpY2F0aW9ucyI6eyJGSURPIjoxfSwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjUwfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTEwLTMwIn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0xMC0zMCJ9LHsiYWFndWlkIjoiMDA1YjIwZTEtZjE0Ni00Yjg3LThmM2EtMzY4NDhmZjYwZWE2IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiIwMDViMjBlMS1mMTQ2LTRiODctOGYzYS0zNjg0OGZmNjBlYTYiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiU0VDT1JBIElEIFYyIFBheSBFZGl0aW9uIE0ifSwiZGVzY3JpcHRpb24iOiJTRUNPUkEgSUQgVjIgYnkgSW5maW5lb24gUGF5IEVkaXRpb24gTSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH0seyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNRRENDQWVhZ0F3SUJBZ0lIVUdGNVRVVmtNVEFLQmdncWhrak9QUVFEQWpDQmtqRUxNQWtHQTFVRUJoTUNSRVV4S1RBbkJnTlZCQXNNSUVOQklHWnZjaUJCZFhSb1pXNTBhV05oZEc5eUlFRjBkR1Z6ZEdGMGFXOXVNU0V3SHdZRFZRUUtEQmhKYm1acGJtVnZiaUJVWldOb2JtOXNiMmRwWlhNZ1FVY3hOVEF6QmdOVkJBTU1MRWx1Wm1sdVpXOXVJRVpKUkU4eUlGSnZiM1FnUTBFZ1UyVnlhV0ZzSURVd05qRTNPVFJFTkRVMk5ETXhNQ0FYRFRJMU1EVXpNVEl5TURBd01Gb1lEekl3TlRBeE1qTXdNak13TURBd1dqQ0JrakVMTUFrR0ExVUVCaE1DUkVVeEtUQW5CZ05WQkFzTUlFTkJJR1p2Y2lCQmRYUm9aVzUwYVdOaGRHOXlJRUYwZEdWemRHRjBhVzl1TVNFd0h3WURWUVFLREJoSmJtWnBibVZ2YmlCVVpXTm9ibTlzYjJkcFpYTWdRVWN4TlRBekJnTlZCQU1NTEVsdVptbHVaVzl1SUVaSlJFOHlJRkp2YjNRZ1EwRWdVMlZ5YVdGc0lEVXdOakUzT1RSRU5EVTJORE14TUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFL1h4TGxLTFE1cEdFUnVzc3Q0THlGcUxmY21aL296RTdHMERScnFLaEthM09FVUVEVEt3dnFQQy9Gbkd3UU1EMDFRblZpZWVYRFVXdFJrYWpRN0RJRzZNak1DRXdEd1lEVlIwVEJBZ3dCZ0VCL3dJQkFEQU9CZ05WSFE4QkFmOEVCQU1DQUFRd0NnWUlLb1pJemowRUF3SURTQUF3UlFJZ0E3U3Bua1ExVWJ4KzZSRUY3RlJKWGs3anpLTzhwWEtMZWRUcXUwVzAxVk1DSVFEK3VycjgydDhYQ3krVFVSVUVnVGt0bnBOUVBvZmQvSUlFYXQ4RUp3ak1pZz09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUljQUFBQThDQVlBQUFCTTZxbThBQUFBQkdkQlRVRUFBTEdPZlB0Umt3QUFBQ0JqU0ZKTkFBQ0hEd0FBakE4QUFQMVNBQUNCUUFBQWZYa0FBT21MQUFBODVRQUFHY3h6UElWM0FBQUtMMmxEUTFCSlEwTWdVSEp2Wm1sc1pRQUFTTWVkbG5kVVZOY1doOCs5ZDNxaHpUQUNVb2JldThBQTBudVRYa1ZobUJsZ0tBTU9NelN4SWFJQ0VVVkVtaUpJVU1TQTBWQWtWa1N4RUJSVXNBY2tDQ2d4R0VWVUxHOUcxb3V1ckx6Mzh2TDc0Nnh2N2JQM3VmdnN2YzlhRndDU3B5K1hsd1pMQVpES0UvQ0RQSnpwRVpGUmRPd0FnQUVlWUlBcEFFeFdScnBmc0hzSUVNbkx6WVdlSVhJQ1h3UUI4SHBZdkFKdzA5QXpnRTRILzUra1dlbDhnZWlZQUJHYnN6a1pMQkVYaURnbFM1QXV0cytLbUJxWExHWVlKV2ErS0VFUnk0azVZWkVOUHZzc3NxT1kyYWs4dG9qRk9hZXpVOWxpN2hYeHRrd2hSOFNJcjRnTE03bWNMQkhmRXJGR2lqQ1ZLK0kzNHRoVURqTURBQlJKYkJkd1dJa2lOaEV4aVI4UzVDTGk1UURnU0FsZmNkeFhMT0JrQzhTWGNrbEx6K0Z6RXhJRmRCMldMdDNVMnBwQjkrUmtwWEFFQXNNQUppdVp5V2ZUWGRKUzA1bThIQUFXNy94Wk11TGEwa1ZGdGpTMXRyUTBORE15L2FwUS8zWHpiMHJjMjBWNkdmaTVaeEN0LzR2dHIvelNHZ0JneklscXMvT0xMYTRLZ000dEFNamQrMkxUT0FDQXBLaHZIZGUvdWc5TlBDK0pBa0c2amJGeFZsYVdFWmZETWhJWDlBLzlUNGUvb2ErK1p5USs3by95MEYwNThVeGhpb0F1cmhzckxTVk55S2RucEROWkhMcmhuNGY0SHdmK2RSNEdRWng0RHAvREUwV0VpYWFNeTBzUXRadkg1Z3E0YVR3NmwvZWZtdmdQdy82a3hia1dpZEw0RVZCampJRFVkU3BBZnUwSEtBb1JJTkg3eFYzL28yKysrREFnZm5uaEtwT0xjLy92Ti8xbndhWGlKWU9iOERuT0pTaUV6aEx5TXhmM3hNOFNvQUVCU0FJcWtBZktRQjNvQUVOZ0JxeUFMWEFFYnNBYitJTVFFQWxXQXhaSUJLbUFEN0pBSHRnRUNrRXgyQW4yZ0dwUUJ4cEJNMmdGeDBFbk9BWE9nMHZnR3JnQmJvUDdZQlJNZ0dkZ0Zyd0dDeEFFWVNFeVJJSGtJUlZJRTlLSHpDQUdaQSs1UWI1UUVCUUp4VUlKRUE4U1FublFacWdZS29PcW9YcW9HZm9lT2dtZGg2NUFnOUJkYUF5YWhuNkgzc0VJVElLcHNCS3NCUnZERE5nSjlvRkQ0RlZ3QXJ3R3pvVUw0QjF3SmR3QUg0VTc0UFB3TmZnMlBBby9nK2NRZ0JBUkdxS0tHQ0lNeEFYeFI2S1FlSVNQckVlS2tBcWtBV2xGdXBFKzVDWXlpc3dnYjFFWUZBVkZSeG1pYkZHZXFGQVVDN1VHdFI1VmdxcEdIVVoxb0hwUk4xRmpxRm5VUnpRWnJZaldSOXVndmRBUjZBUjBGcm9RWFlGdVFyZWpMNkp2b3lmUXJ6RVlEQTJqamJIQ2VHSWlNVW1ZdFpnU3pENU1HK1ljWmhBempwbkRZckh5V0gyc0hkWWZ5OFFLc0lYWUt1eFI3Rm5zRUhZQyt3Wkh4S25nekhEdXVDZ2NENWVQcThBZHdaM0JEZUVtY1F0NEtid20zZ2J2ajJmamMvQ2wrRVo4Ti80NmZnSy9RSkFtYUJQc0NDR0VKTUltUWlXaGxYQ1I4SUR3a2tna3FoR3RpWUZFTG5FanNaSjRqSGlaT0VaOFM1SWg2WkZjU05Fa0lXa0g2UkRwSE9rdTZTV1pUTllpTzVLanlBTHlEbkl6K1FMNUVmbU5CRVhDU01KTGdpMnhRYUpHb2tOaVNPSzVKRjVTVTlKSmNyVmtybVNGNUFuSjY1SXpVbmdwTFNrWEthYlVlcWthcVpOU0kxSnowaFJwVTJsLzZWVHBFdWtqMGxla3AyU3dNbG95YmpKc21RS1pneklYWk1ZcENFV2Q0a0poVVRaVEdpa1hLUk5VREZXYjZrVk5vaFpUdjZNT1VHZGxaV1NYeVliSlpzdld5SjZXSGFVaE5DMmFGeTJGVmtvN1RodW12VnVpdE1ScENXZko5aVd0UzRhV3pNc3RsWE9VNDhnVnliWEozWlo3SjArWGQ1TlBsdDhsM3luL1VBR2xvS2NRcUpDbHNGL2hvc0xNVXVwUzI2V3NwVVZMankrOXB3Z3I2aWtHS2E1VlBLallyemlucEt6a29aU3VWS1YwUVdsR21hYnNxSnlrWEs1OFJubGFoYUppcjhKVktWYzVxL0tVTGt0M29xZlFLK205OUZsVlJWVlBWYUZxdmVxQTZvS2F0bHFvV3I1YW05cERkWUk2UXoxZXZWeTlSMzFXUTBYRFR5TlBvMFhqbmlaZWs2R1pxTGxYczA5elhrdGJLMXhycTFhbjFwUzJuTGFYZHE1MmkvWURIYktPZzg0YW5RYWRXN29ZWFladXN1NCszUnQ2c0o2RlhxSmVqZDUxZlZqZlVwK3J2MDkvMEFCdFlHM0FNMmd3R0RFa0dUb1paaHEyR0k0WjBZeDhqZktOT28yZUcyc1lSeG52TXU0ei9taGlZWkppMG1oeTMxVEcxTnMwMzdUYjlIY3pQVE9XV1kzWkxYT3l1YnY1QnZNdTh4Zkw5SmR4bHUxZmRzZUNZdUZuc2RXaXgrS0RwWlVsMzdMVmN0cEt3eXJXcXRacWhFRmxCREJLR0pldDBkYk8xaHVzVDFtL3RiRzBFZGdjdC9uTjF0QTIyZmFJN2RSeTdlV2M1WTNMeCszVTdKaDI5WGFqOW5UN1dQc0Q5cU1PcWc1TWh3YUh4NDdxam16SEpzZEpKMTJuSktlalRzK2RUWno1enUzTzh5NDJMdXRjenJraXJoNnVSYTREYmpKdW9XN1Ziby9jMWR3VDNGdmNaejBzUE5aNm5QTkVlL3A0N3ZJYzhWTHlZbmsxZTgxNlczbXY4KzcxSWZrRSsxVDdQUGJWOCtYN2R2dkJmdDUrdS8wZXJOQmN3VnZSNlEvOHZmeDMrejhNMEE1WUUvQmpJQ1l3SUxBbThFbVFhVkJlVUY4d0pUZ20rRWp3NnhEbmtOS1ErNkU2b2NMUW5qREpzT2l3NXJENWNOZndzdkRSQ09PSWRSSFhJaFVpdVpGZFVkaW9zS2ltcUxtVmJpdjNySnlJdG9ndWpCNWVwYjBxZTlXVjFRcXJVMWFmanBHTVljYWNpRVhIaHNjZWlYM1A5R2MyTU9maXZPSnE0MlpaTHF5OXJHZHNSM1k1ZTVwanh5bmpUTWJieFpmRlR5WFlKZXhPbUU1MFNLeEluT0c2Y0t1NUw1SThrK3FTNXBQOWt3OGxmMG9KVDJsTHhhWEdwcDdreWZDU2ViMXB5bW5aYVlQcCt1bUY2YU5yYk5ic1dUUEw5K0UzWlVBWnF6SzZCRlRSejFTL1VFZTRSVGlXYVo5Wmsva21LeXpyUkxaME5pKzdQMGN2WjN2T1pLNTc3cmRyVVd0WmEzdnlWUE0yNVkydGMxcFh2eDVhSDdlK1o0UDZob0lORXhzOU5oN2VSTmlVdk9tbmZKUDhzdnhYbThNM2R4Y29GV3dzR04vaXNhV2xVS0tRWHppeTFYWnIzVGJVTnU2MmdlM20yNnUyZnl4aUYxMHROaW11S0g1ZndpcTUrbzNwTjVYZmZOb1J2Mk9nMUxKMC8wN01UdDdPNFYwT3V3NlhTWmZsbG8zdjl0dmRVVTR2THlwL3RTZG16NVdLWlJWMWV3bDdoWHRISzMwcnU2bzBxblpXdmE5T3JMNWQ0MXpUVnF0WXU3MTJmaDk3MzlCK3gvMnRkVXAxeFhYdkRuQVAzS24zcU85bzBHcW9PSWc1bUhud1NXTllZOSszakcrYm14U2FpcHMrSE9JZEdqMGNkTGkzMmFxNStZamlrZElXdUVYWU1uMDArdWlONzF5LzYybzFiSzF2bzdVVkh3UEhoTWVlZmgvNy9mQnhuK005SnhnblduL1EvS0cybmRKZTFBRjE1SFRNZGlaMmpuWkZkZzJlOUQ3WjAyM2IzZjZqMFkrSFRxbWVxamt0ZTdyMERPRk13WmxQWjNQUHpwMUxQemR6UHVIOGVFOU16LzBMRVJkdTlRYjJEbHowdVhqNWt2dWxDMzFPZldjdjIxMCtkY1hteXNtcmpLdWQxeXl2ZGZSYjlMZi9aUEZUKzREbFFNZDFxK3RkTjZ4dmRBOHVIend6NURCMC9xYnJ6VXUzdkc1ZHU3M2k5dUJ3NlBDZGtlaVIwVHZzTzFOM1UrNit1SmQ1YitIK3hnZm9CMFVQcFI1V1BGSjgxUEN6N3M5dG81YWpwOGRjeC9vZkJ6KytQODRhZi9aTHhpL3ZKd3Fla0o5VVRLcE1OaytaVFoyYWRwKys4WFRsMDRsbjZjOFdaZ3AvbGY2MTlybk84eDkrYy95dGZ6WmlkdUlGLzhXbjMwdGV5cjg4OUdyWnE1NjVnTGxIcjFOZkw4d1h2WkYvYy9ndDQyM2Z1L0Iza3d0Wjc3SHZLei9vZnVqKzZQUHh3YWZVVDUvK0JRT1k4L3h2SnR3UEFBQUFDWEJJV1hNQUFBN0VBQUFPeEFHVkt3NGJBQUFBSjNSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCUWFHOTBiM05vYjNBZ1EwTWdLRTFoWTJsdWRHOXphQ20rNzRhQUFBQUFCM1JKVFVVSDNRb0hFVEVKRjNiekdBQUFBQ0YwUlZoMFEzSmxZWFJwYjI0Z1ZHbHRaUUF5TURFeE9qQTNPakEzSURFM09qTTBPalUwdkpjZWVnQUFHS0JKUkVGVWVGN3RYUWxnRkZXYS9xclBIT1JPeUVFNHdvMEJRUVJVRkJGRUdBRVZCRzltVUhDRW1aMGRjY1pqMWRtWmNWMVhSUkR2YzhSWlhZOFpBWFVRUkJBUVBBQXZrQnRDSUVCQzdqdnA3dlM1MzE5VlRibzdqUVFNRWJRL3FIVFZlNjlldmVONy8vSGVxMjdGUitBTWc4L3BocmV5Rmw2WERaNHlmaDZ1Z0tla0hCNVhGWHgxRG5pS2ErQXBPQXgzU1FuRHE0QnFIeFNMRWI0b0F3d21FNHlKU1ZEU0VtSHNsQUpEdkJVK2d4Rkdhekt2VTJITVNJRXhLeFdHdENRWUVtSmh6RTZIb2ovMzU0YlRtaHplUmdlOGRleDhIcllsbjhHNWZpTTh0anA0OWxiQlcxdERjdFRCNTdZenBZZUhDMUlSbjlFSVE1U0NxRDRqRVhYRlVGaUc5b014TGgzR0xqelM0cUVZekZDaXJLeTVQT0g0a0R3ajVEZ040RDVVRHVkM1cyQmZzeGxOZVp2aDJWZ0FWMlUrTzZnSkJuQWtJNXFwRFBDaW5JY2RKdVRBUEx3UHJQMEh3WHBKTGt5ZGV5RHFvZ0ZhWmhIOFlQeW81SERsRjhHNWZUTWFubHRLUW54T0tXQmpxSlBkSDhmUkdzV0RxZ0FPSGs0ZUNreTlzbUhJVFVIYytKc1FjL1hGTUtZa2FSbEZjRXJRcnVUd3VUMXdiYzJEYmZscU5MNzFJVno3RDhEbnFDVUZLTzRScTVLQnlvVC9iQ1NESFQ2ekJkR2pMb0oxMUhtSXVYNGN6Qm1aVkFrbUxiTUlUam5hbkJ5VjlRNjh2ZkVRZXFaM3dMaXpzOVF3NTQ0RHFIM21HZGhlWHdkZkk0MUcvak1oa1dTZzdxZWNFSnZCaXdhNFVVTjZ4TUk2NldMRVRCaUR1RnV2WjVvSWZpeTBLVGxtTGxpUGhlL3VBT0tqeUFnM1lEWGhtK2V2eHVCa0N3Nm1Yd2lsUWFoZ1lVcnBjcEVRRGhLaUdLYUVMRVNOSFkzWWE4Y2hkdW80TmE4SWZueTBHVGx1Zi9velBQWGhiaUF0VGd1US9uZlNpNml5bzN6WlRDUzh2eGFGVTZaVE1uUWtLV29aYVlKbFFGL0UvZWZOaUIwMUNvYlVlUFcyQ0U0ZnRCazVsTno1d0xCc0VRakJxR3JFYmVQNzRjWGZYSUJ0aW9LRStLRkllSEEyWWlkUHBIZlJVVThVd2VrSVVmZ25EWlZWMWJYSXE2U1hrVUkzMHhmR1F1aGd4Yzc4Q3ZXMHgzdWZvRXZ0bDBqNC9Zd0lNYzRBbkRRNTNFY3FjS2p6TU5TL3NnUzlVbUtBK2laTmxZVEM0NFhQS25ZR0VIUFZTUFV6Z2pNREowd09VVUxsTSsvRHdVNWRnY0lHTkx5MVFnMVB5TTBBR2tpUVFFanVoYlZZTUgyd2RuMEs4UDZtUTVpN2RDZWVYN2tIWCswdDEwTWphQXVja00xaC8vd3JsRjQ2SFVxVGg0YWxURUQ1NERZMW90dTNieU12cHgrRzMvWVBWQWhCTEVaTjU5aWN1SDNxMlhoaTVqRDEvcmJFSjd0S01lclBxd0NIazdhdHpJOFFOSUI3ZGtuQXVvY25JQ3VSSGhQeDZlWWlPRndlRE8yZmdjUVlUWUpGMERxMG1oeVZkenlNMmlmbXdZd2Nhby9taVNpWjJuYWhDdDNyZHFITWJNSGN0N2RnUjM0bExGRm0zREF5QjlkZmxLT25iRHZVMjF4SXZ2bHR1QldLcGlnaEJ2V1pWSU1xTE5OaVF0R3IxekJFd1dYM3I4REhuK1NUUEFiMDZwT0dyNStlaEhpNjF4RzBEc2NsaDQrai8xRHVDUGdLeWtnSnFnN05ETlhoSXpGS1lEcS9OenA5OEI0TUtiRjYrS25GQTI5c3hsLy9zUVZJb3EzalpYa2FuVEFZRkhpTDYzQVB2YUpIcGczR3F5VEZqTG5yZ0k0c0U3MGtIS25INHpQT3hSM1hEZEp6aWVCNCtGNmJvK21iblRpWU9nUW9hR3hCREZudmNPSUlVbCtkaTg0YlZyVWJNUVJQck5wTDYxWm1WNGw2TzE3NTNYQjRGdjBTSzUrNkN2ZGNkWllhWE9kd0FXYVJLTHdRL2xQQVJHVEdpZUdZa3NPeFpRZUt6NW5BTmswa2d6VDlyVUdCQi9Yd21lM290RzAxekgyNjZlRWFLbXNkV0wrbkRLdTJscUNpeG81LzN0bjJIb295NUVtQU5nUThQaVJTS3BRdW5BcUwzKzdRVWN4blo4MTRoMms4SEFJY0EzWVg5cjF5RFhwMFN0QlRSSEE4aENXSGMrZGVITTQ5RHhiMENMSXZOR0tVdzlTN0I3SzJMb2RpRGU2UXdpb2JPby83R3lER0lEdXJTL2NVSEh4MmtoN2JkbEQ2endlR2RnWm9hSjRWYjhYV1p5ZkRLS29qQklYVk50ejNmMVEvOE9MUkc4OUJaanRLdDU4Q1dxZ1Y1ODc5S01vZFMyTDBEQ0dHTEkvUjBMenNBbVJ0YjBrTWdkVnNoRUpDUUVablFqU2lhQWllRW9nazBPRW10U2xBd2lLYk5zbHIvejZjeDBVUllwd0VXdlJlOFpocERKUWw5T0RPOTFLVkdKS1NrTG55ZFNna1FWaFFDUG5FUUpSREJGSzRTYkcyZ051cjVjMUhDQUV0TkVaUEoxU0xlMzJTcUhXNDliTWZIMEhrS0xwNE10bFJSbG9FanpJdkdxRjBTMEhucWsxNlNDc1JNcUpyYkUyWTk2OGR1UExCajZIMGZCUVAwdTBWdkxlaEFGMW5MWVl5OEFrb0ErWWplZnJiMkxTclRJMEx4UFpEMWZqRGMxOEF2U21kUkZ3WUZSVFVOMkgyMDUvaGx2bnJNUEh1WlRoVVVxZW5CdVl2L2c1ai83UUN5clVrOU9BbjRhYXJHNGhsVzRwdzM4S3ZvTno0SnUyWXA5RGs5Y0xoOU9CM0wyeUFNdVpsS0dmTmd6TDhXY3grOGxQOWpuRFFLdmtPNjZCTS9sOG9aN1A4bDd5a3FyNllhVzlpN2RZamF2ejM0WXVkcGNpWXRRUkszN2xJSFBVQzIyRUJsUEd2NEtXVk5MekRRTXE0WVBsdVhQZklHajV2QWU1NWZMMGF2blpiTVViUmZaYzJWQVk4RHVXcXYyUEpad1ZxM01uZ3FNMWhXL3NwU2taUFVlMk00Rjcxd1kxcVpPMVpDVXZ2WU9NekZPVjFEblNjdVFpSXBqcHE4cUIzUmh6MlBIbWxIZ3RzTzFDRnMyY3ZBVHBZaEhHNC8rcGNPR2szUFBiT1ZtMlpQNXJoSWdSczlEUks2MUZJRDZSVGFqTlIxWWt2dVQrSDVQQ2JTdXhRTmIzZ1NCM3lGLzhLM2JPMEZkN3VzeGZqUUhFOUVHdEJHdXRSOXVaTmFyZ2YweDVlZ3pjK3pnUFM0MkJrZmgvZk54clQ2UDRXc1I2Z0xRTXp4NDVzVHkxdndPV0RPMkg1Zi85Q3V6RUVqeTNhaXJ0Zi9WcXJRNHlaOTdCTVJ0NHJFNEowczUrYk13Sy9HZE5MVHgyTTl6Y2V4S1NIMXJEdXZFL2FSVzE3TmtJVEpVaVZIVk5HOWNDaXV5OVIwL3BSWEV0ais0WTNLRFo1ajltRVFUbEp1R1ZrZDl6K0RBZU9oRW5aQmJKdG9zS0dOLzg4QmpkYytQMTlGdzZxNUpEZDNHVVRacE1Za2tFZ01SUzZxMFZJZnV6KzR4S2pOVWhOamtFMENTT2RoWGdMSHZwZ0Z4NWJ1Z3RJNjZCMWhKczlJU3BKZG50bHhXSFcvN0RSQW1BVVcwTWEwQmNnQWNRUWxZYWxEZFFsTngzWjZjeExSMElITmxJczQ4VDJDYXlXanI0OTA1aUlIVW8xNmVFeDZ2NlBVQ1JraStOOVVnNVJYd0xtK1NGSDhhR0tSdTA2QUhrazVOMFBzcHhTQjVtUU8xaE5NdG1Bd3pVa0NzdktPdi8yenVWd1NMNGhjTkNUbXZUSER6UURYa2dsWkNyZ2ZkVjJ0VXp5M01YTGR1SGwxU1J3QURKcHp3M3YxVkc3aDIyMTVWQU5ibjl4STU4VnJRMU1EamkxL09MQjhmbjNDbkZQQWlvNTZwNTdIVjU3RmMrQ2JRbVovVVNVRmZGM1R0ZERUaEFocGtBR095SkRPbGR0ZEVZS3k5bHhaa3FaYXpzbm9WOGM0MXk2emlVUnZxUzNVUzhqU0VlOHhZakpQVlBWMGFpQ28xMGMwNm5aQ2JpUzBtTFdvQ3hZWk1UNklkSkZTQkdHR0lJZVdjMUVVa2ttUktFcmZsNUtES2F3UEVvVHl5bEVsT0tTMUUrRkVmTVRIMXBOdDVvZEpkS2lwQUZmdjNBMWZNdHV3VWR6SjNDSTZ5cXVUekttUGFxSi9rQk12R2M1MENWUmt6STFEb3p0bDQ1TkwwM0JYVmVlcFk1NHRkemRrdkZ2VDM0T20xODY2a2dVMGt1NUpJMFF5V3FDa2ZiS3BPeEVuSnRJa3NnOGo0Q0RycUs2VVpYcUp3cU5IQTh0aEJtZGVCYmNpaktma2ZiVUkvclZTU0NrVTRRckhXVGR4UjloZCtGY2pvNlN2MStEZnp4OE9YWStQNFVqanlOSEVyS3p5aGx2RHlESHdKeGtMSG55S25VeFQwMUR1Nk1MTy9TZFI4YmovWGxYNEw3ZlhhZ2xiQ1dTUlVKSVBsSWNJVks5QXd0dU93OGIrWXhGajF5T2U2NWdKOVhyUkxTWVVCb2lPYjdkWDRXOUJaUVVNa0x0VHZ4NlVpN09GZklTWTBuVWlSVDFVa2RZekZpL294Z05jcTZqbU1SZm5jOEJTYlVBbHhEUWg0OGVHSXRodkgvdUxVTng0NGljb3l2ZExwc1RiOU9tQ1lRaUtzeHZtRk5TcEhDZ2ZUZC9JdDVsdWI5K1poSzZ5MHE1U0dMQ3hrUWxKUDJKd3RDMGFTdmNGV1c4UFZScWVLREVKaUJtMG1nOXBHMmdqbXk5TXpobXNPbXBTWlNHbEJnNk1nZGtrUFVraE41cE9vMkNvYzVwOE9EL0pqYVFVMFRvU1NCVzlicTBmTUNSOWNkSi9USG55bHcxVG5BRDlUMWREeTJlaDFGR2FnQSsrUHFRV2c4VkpPcTF3enByNXpwdUVqMHZaYU0zVlY1angvWkNFbC9IdTE4VmFwMHJ3N1BSZ1FkdlBFZUwwREhqOHQ2OGwvR1NQZTJ1bDFiczFpSjBXTlRGVGYzWjdQanRUMStGM0M3TnUvRjdpcHBURFhCRnpjSjlFbTFrc0greGtlV1RHNlVGQXVHR2VWQU9qR2swL3RvUWl0L3Q1Q090UERlR3VLSFpNcHI5bFdaVWFLbkNvVFZwd2tIdGEvL052RWdRTlJlQWRESHMzQ0s1OUVRaEUyMHZyODdYN0FXVzEwVDEyRmszaFAxSUVWdEk2aUsza2ZCVm9pcDBiSlh0QmY2QndzOGhmV24vQk9EaXN6S1FJb3VFY2ovejNsUHBvQ2tTb0ZyVXVaN21kb3BWSlhJelRHSnZ5U1JRY0pGUENBYm5oaDI4bnhtRlFPd05VMFpYL2FvTm9kZEhDaDJPektyUkdTYThQZUFOZlhEZ3pyWXdqV3lrYW9CUjY1UllkbUNHdmszQUQ1OTBycjgrUE4vbXQwR0lEV0t3NnAxdllwcHVzcE11QUdibVovUnZmZUFBYXFSa3E2VDNjaXg0L0FOS2gwa0dYVWpZaWNMZy9HTHZNY2xoN3BHdFg3VWZmbGgxMmhaSHl5TEVDRk13cDFGbkRDVktMVHRqeUp4L0llZlhpNUJ6NnlKMHYyMFJaajBycmlVSklHQm5GOGgyU2gxSEt0alJEQk1ZbWJkWmxRVEJVRVRkNmw2T1dBOTI4VUxhRVFaUFVRWHJybGNnQ0NaNFNzV0RpU0FjUk5rNHZRSGloQkprWDUwVEJmUXFDaWorRHpUeVU3d3F2L2RFSXRVR3FBWEZUbU16UUtXR0hlUkNQalZjSVVkOGROSUMxRW83SUVUak4wT2tpYXZvZ0g3MU0wZTRqZ3NObE40Vjc2S1dFc0YvMEFoRkpUMmNLa3FNU2p1cUpONlBFUHZsZElUQmtDUkdWTE83NklkQzU5YXp1MFMzMmlKUVZVc0FUQXl3K0RVQmlSRlB6MkRkdkluNGdtN3dad3V1REQ0ZXZ3SnJYcHlDQlRPYXQwdjZ4UGdOTUxyQ2N1V29RZWxqUnlrME9vTU41bE1OZzJsd04vWi91SVVpRTd6RlIrRGNGVHc3OTdPRWRGQVk2V0VKWEt2aCtibmRFbkZCanhSYzJDdTF4VEdLM2tpL1RQMkZMeUpWakZmOWZnK1pFYzdWOUlsYTBtMFJNWHVqVmRlNy9XQ3dqdXJQZXJlY0lKRTltRDZQRzQzdnJkSkRJZ2lGVzdZcHltWWlvbzRkdmZ0SXZYcmVHcHdqMnhyRXdGU0o0VVZ4WFlES0lleE9OMXppUmdzeFNad1l1dFZKU2NIZTBLbUd3VHI0MkR2RFplbSs2ay8zNjFjL1k4aWdEaVAyYjd1MHB6cnRyVnB1N01Edjltb3ZiN1VHdWRra2g3d3VxbmYrTnlHdlZYeTJ1eHpWYWp3VGtIaTlrcUtSMHM2NzV3MVJvNGNDY1ltc2YwczNTYndZSXpxZzd1blg5SkNmTWNLb2xZbEQ2T3BMNTBtYzFZeDczdmhHaXdpQVJKMzltOFVvQ3Btam1LRE9wakpXRXREZGZmVGQ3V3E0SDJ1L2xObFhua2orTkdhdkhkRmRpMmhIR0F4V0MySm5UU1kxWlArRTBEZ1FQcElqRTlWM3pZZkhkdUp6OCtGRzJ4bUpZOVJqY1Bka2RPOUNDU0MyZzhXSUNub2pGLzVoS1FvcUdtbWordkRQalFmUmE4WTcyRlpRZzF0RDlvUU02cGFNZnVsMEJtUmh6MnBDZVdrRDVpM1pwc1p0eUN2SHc0dDVuaUN2bURLZWVjMlVxZngyaG1ydHBQelhIVFJLcFFXRXFuSTBRNUVrVFE2VWpnM2VDOUVxQkdmMUU0U0M5LzVqTkxDRFhwMjBaSndWWHh5cFE4N1UxMkVZK1R5dSs4K1Z5SmM5RlJrZHNHTFZQcXFLNEExTWY1bEJxWjFmclYxa3h1TXUyWGgwK2Q4dy9MZnZxc3YxYXA3bERaaHozVUFreTRweE8wTWxoeElkaGZSL1BrT2Y1YUEvS0FqeWRwdno4KzlRZWU5Y1BlUVlJTDhVRVlQQ00vOW5DQ1Q0YUZ5NGVQOGZMYUUvSkJpQnoyaFozS1BReXNJRWV2SlFhSS9RSTQrVmo1cUlPTWFNMElDdVNmanJuQkhxY3IzcTlrZlRvOGhKQm1RdmJXZlpVRUFVMWVLMzB3ZmovTjdhaXEwZjF3M3ZpdW1UY2xVQ3FDTkpOaloxcEVjanhxcVV1OXFPWEo0dnVQVVlkcUcvN09HS3BvWnI4ZElPNFpJY0QwZWJKUGFhaVRBUDdFLzFJck9pTGJNeUlRVjFqOHhENC9LVyt4TDhjTGg4OEIyZ1VaWW5Sem55QTFZaC9kZ3R5KzE2ZkRsSGpUdHc0dzV4NExERTB6aVRZMzlsK0NsamlkdW5wU2s4V0FOWEdEZFFzRXZXTC9TMFpmdjVySkFOTjVVTmRCWDl6Nkl4V1J3d3ZTMnd5ZDZTUGZxeitGbXBkbUlvZlBqTDlDRjRlczVGbEFKc096bGthVi95Mmxhc2ZpNjg4eEk4Tyt0OGRRMGxGSCsvYXlSbWp1c0RiRDRDbFBJKzJYY2g5MzliaERFRE1ySHRwYWw2eW1BVWw5SXowdHNSZVpWdytEY202VGhZeGp6eUtLa1k3OHV2WUxZdDU3S09oNkJYRTN3dUx3NW5uZzlmWlJPbFJmQkNrQVlGVGRpRjlOZmZRSWRwRS9TdzlvWVU5MlRHUWZ2Z3E0SnFyQ1FwWkszazVwSGQwVkhkK3RjNlBMa3FENVVWRFlpTGo4WmRFL3Jxb1Q4T0hGL3VhUG5laW5QSGZoVDJ2eFJtcExJTFdrNjYrQ2c3M1NoSHlzS0hFWC9MOVhwb0JEOFYrSnFjcVBucnk0ai80N1R3THpXNTloL0d3UjREWVZWZm1nNC9aZHVFM1VqNDllMUlmZWtCUFNTQ014MU5HM2VpZHQ1TFNIdnJNU2htYzNoeUNGeDdDbEhVZHd6SklYTWRNdTBibWt5aEJDbUdLYmNuMHQ5L0ZlWWV3YnVnSWppelVQM1E0M0J1UDRUMHQ1N1FRNzdIMWpmM3lVWjIvaW9ZYzdOSWdwYnZrQWhaVE1pRWQwY3BEdmNjaHZyWDZIN3BDTXUyQ0U1TE9ENzlDb1VEeDhIVU5TZUlHSUpqU281QWxFeitKUnJmKzVocVJxUkRPRDRwY0tFUXBsNjlrUGJpbzRnYVJmODlndE1hcm0wRktMdm5MdmpvOVhUYXNCUkttQlhmWTBvT1A0UTVHZSsranN4VjhtVXAxWFIxSzdVSUZYNWVlZFhkNjc2OEdoU05IbytTY1RQVnIyK0k0UFNEYy8xM0tQN0ZMM0g0d2pGSS9OVk1aSCt6SWl3eEJLMlNISDU0YXVwUmZ2M3RzSCswbGlvbGdmSWlocUhCL3JWazVrVWRQNzJ3WE5pZnhzMHpNSGVXNy9hSTRNZUVNNjhBcGIrNGljN0dRU1ErTUFmSmY3NVRqemsyamlzNUFtRk1qRVBHaW9YSVhQY09sT3hFZWl3N1NZTGd5UldaZ1pEdk1oZnl1RC9mamNOZEJxSjR4RTJvZjJXUmxpQ0Nkb09QWFZOOTd3SWM2amdNK2IxekVETitETHFXN1d3Vk1RUW5KRGxDMGZqK3g2ajYvWU53SHpwQU1zaVAxb1RmakNJL2Y2RjkyWDBqNHUrZWd3N1hYd1hyT1gzMDJBamFFcDdLYXRqKzlRbnFuMzRkRFp2ZmhRWGRFWHZkWkNTLzhBQUg5NGw5RGNWSmswTnVFaW5ocmJmRDhkWFhLTDMwUmw0WlZZa0J5TTloU0t3L2xRWlJOUjdJbm9jb1dNN3BpK2dKbHlEK3JsdGdqRy9lSVJYQnlhRjIvbXV3TDFzRDU1ZGI0R284d0paMkkyWDJ2WWovMDJ5WU9nV3Y2YlFXUDBoeWhNSzJaQzFxbjEwSSs1bzExRmRSSklxL1VLSFQzZks3Q1M0U3BaWi9EOExhNVdMRVhuMFpZaWFNZ1BXOElUREV0ZjhLNUprRStZSmc1ODQ4Mk41YmlhYmxuOEorWUIxYldIdnYxNXpSSDBrUC9CNXh0MTJqWHY4UXRDazUvSEFYbDZQNkw4L0E5dUV5K0FycldIQVR5U0xHcTVubm9ZK1RYMTZ5TTFUNzBSM0ZrZ2hUVGhwaXJwdUk2Q3VIdzVUYWlUNTR1cDYyR2NFeTZhY0xyOTBKMTg1OThEUld3UGJpUjdDdFh3OFUxclBONnJYMm9yUTJKS1hBTW1Jd2toKzlGNWErYmJjcDZKU1F3dytmaDlKazZXbzB2cnFZZW5BdEsxUFBxaVN4UWxhVk1PRWh2NzNpNWxITHMzcVlvckpneXMyQ3RlOFFXQzhiQ0ZOMkYwUmRPdXduU1F5dnZQZjc3UzY0RCt4SDA0YWRjSDY5QmU3U1FyajNGYkk5NUJzZFJXVWIxY0Vrd3lONjdHWG9NRzBTb3NkZkFtTksyNnZtVTBxT1VEUyt0UksyVDViQi9zNG1lS3ZMMU5GdnBFVFJwSW80VG40N1JlRHZmaUdMdktqWW9EYVFRS0daWlZCaVlEcTNMNnlYRDRReGlkSW12Z3NzUS9yQjNLOHJwVS83N3JWc0xhUm0zdkpxT0xmc2hYdlhBYmg5SmZBY3FrYlQ2bTN3Yk44SHI2ZVJhY1Q3ODdDTy9uYVIyc3ZHWmFNYUZqMzdFa1NmTnhweE43ZjlGL0dGb2wzSjRZZlB3eEd5Y3o4TnFOVndMTjJBcG4xYjRDdVQ5MGpkYkpEbVgzQlNkNkVkSll0QUk0Lzhrd1lVdTBYYk9TL25Fc2RETlZlaVlFN3ZER08zTlBXUWQzTU1GcnJYSFZOZ3lFcUJrcFlFWTNJOGxNUVk5UzR0WHhNVUE3MHRBMDFway95MlhDQVlMM3RCWkR1Z2w4OVM5NkRvTGp3VGVxdnI0YWx1Z0srOEJ0NlNLcmpMcStCdHFvTzNzWUdkWHdGdllUWGMrUno5U2cxOExuYThTM3VpVmpkUnRSYjEwQ0NEZ2ZkS1c4UW53Tnl0SzZMRkhoczdFcGJCZmFIb1B6TFFIdmhSeUJFS2J5TTluclZmd2xWZGlQb0gzNkpZUFJEd1k0Q3hQS0xZakpRV0hEMHlncG9KRTFwMHVSYXJSanBQZmpUUXJSN1M0RnA0Y3dvTi9ta2VJYUtNVEpKQ2RrMjErS1pFZGlXSklSMHJJMW55bHkvZDFFZ3EwRDdsV3J3MHlWOTdqdVFyNmxQeUZnTEl1VVo0YlVPMzVOSEVneVFpMFdXM3Y1SDJRNGM3cHNJeWlGSnh5RkNZTXR2Mld3NU9CS2NGT2NMQm5WOE01LzQ4TkszYmhxYnQzNUl3MUwxYjg5bUlKV3hrRWJueWc0RWRlRWhIK2pzM2NFNVBHNXZObjRMUXFnWmZOM2Yyc2FBNTZCb0M4ejBXaEVoQ0FDR0NtMzlGTmRhcXp6R2J1OE0wb2lzczZiMFJOWDQ0ekQyNkl1cUMwK3VydDA5YmNyU0FTUFdLS29wMEIxdzdDdUJZK1ExY203ZkFZMnVFOXpDTjE0cHFTaHVLZGlkSEw4VytKajFrSkV2MXBDUDk1TkhJcEJGS1B2MWpYZnNNaFVZWS95RjUrdlAyZi9vbGdKODY0bjN4V2RTTUJtTUhHRk9UWU9pY0FHTjhJaXhEQnlINm1sR3FTalBFSk1Cd2dwTlM3WTB6aHh6ZkE2bUJ0NklXWGdmSjBXQWpVYWl6QzByaGtWK3o5dFhCUjNmUVYxTERjTHFBNWJ5bWZlQnBvSzFTUTlWbGE2SzdTTnZGUlJVbTc2WUdFWVRHSU8wUHhXcW1HV09CTVM0YVNseVVacXVrVUFXa3NaTlRTWUJPRlAxZU16czhHYVpPdEhFNnBjS1FRT2xtcFVxa2ZTTjdoYzg4QVA4UGNZRjVBS1ArcWgwQUFBQUFTVVZPUks1Q1lJST0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsiY3JlZEJsb2IiLCJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwibGFyZ2VCbG9iS2V5IiwibWluUGluTGVuZ3RoIl0sImFhZ3VpZCI6IjAwNWIyMGUxZjE0NjRiODc4ZjNhMzY4NDhmZjYwZWE2Iiwib3B0aW9ucyI6eyJyayI6dHJ1ZSwiY2xpZW50UGluIjp0cnVlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsIm5vTWNHYVBlcm1pc3Npb25zV2l0aENsaWVudFBpbiI6ZmFsc2UsImxhcmdlQmxvYnMiOnRydWUsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6ZmFsc2UsImFsd2F5c1V2IjpmYWxzZX0sIm1heE1zZ1NpemUiOjExNTAsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6MzUsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MjU2LCJ0cmFuc3BvcnRzIjpbIm5mYyJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5IjoxMDI0LCJtaW5QSU5MZW5ndGgiOjQsIm1heENyZWRCbG9iTGVuZ3RoIjozMiwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjM1fX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDktMjkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJTRUNPUkHihKIgSUQgVjIgUGF5IEVkaXRpb24gTSIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjUwOTI5MDAyIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25Qcm9maWxlcyI6WyJjb25zdW1lciJdLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTA5LTI5IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjF9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjYtMDMtMjAifSx7ImFhaWQiOiIwMDI0IzIzNDEiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhaWQiOiIwMDI0IzIzNDEiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiRytERmFjZVZvaWNlS2V5Y2hhaW5pT1MifSwiZGVzY3JpcHRpb24iOiJHK0QgRmFjZVZvaWNlS2V5Y2hhaW5pT1MiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJ1YWYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoyfSx7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9kZXIiXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmFjZXByaW50X2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJhbGwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InZvaWNlcHJpbnRfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbInNvZnR3YXJlIl0sImF0dGFjaG1lbnRIaW50IjpbImludGVybmFsIl0sInRjRGlzcGxheSI6WyJhbnkiLCJwcml2aWxlZ2VkX3NvZnR3YXJlIl0sInRjRGlzcGxheUNvbnRlbnRUeXBlIjoiaW1hZ2UvcG5nIiwidGNEaXNwbGF5UE5HQ2hhcmFjdGVyaXN0aWNzIjpbeyJ3aWR0aCI6NTQwLCJoZWlnaHQiOjk2MCwiYml0RGVwdGgiOjE2LCJjb2xvclR5cGUiOjIsImNvbXByZXNzaW9uIjowLCJmaWx0ZXIiOjAsImludGVybGFjZSI6MH1dLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQm1EQ0NBVDBDQkdRZFBSMHdDZ1lJS29aSXpqMEVBd0l3VmpFTE1Ba0dBMVVFQmhNQ1NVNHhDekFKQmdOVkJBZ01BazFJTVEwd0N3WURWUVFIREFSUVZVNUZNUXN3Q1FZRFZRUUtEQUpIUkRFTE1Ba0dBMVVFQ3d3Q1JGTXhFVEFQQmdOVkJBTU1DRUZWVkVoU1QwOVVNQjRYRFRJek1ETXlOREEyTURNd09Wb1hEVFF6TURNeU5EQTJNRE13T1Zvd1ZqRUxNQWtHQTFVRUJoTUNTVTR4Q3pBSkJnTlZCQWdNQWsxSU1RMHdDd1lEVlFRSERBUlFWVTVGTVFzd0NRWURWUVFLREFKSFJERUxNQWtHQTFVRUN3d0NSRk14RVRBUEJnTlZCQU1NQ0VGVlZFaFNUMDlVTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFU0lwSS9kS1lDRFloendEMndTZllBT2Ivbk5haVBjV0YyMXZ4WmsvVGdEME9KdGNEK09QbTY0bndaZEZXU0VZU1c3aU9xbnBtSnlkZThtZ3IvdG5BaXpBS0JnZ3Foa2pPUFFRREFnTkpBREJHQWlFQTNidmhhelFGUHdteVhseEsveENYZmg3ZzFYMUVvYkxDM0wrMkdPUnhwN2dDSVFDZk5FVFgvbTJCZWJSTFhJNExNUDFFUUdQWEZEZjdPazc0VTd4YmlNNFZrQT09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsLzlqLzRBQVFTa1pKUmdBQkFRQUFBUUFCQUFELzJ3QkRBQU1DQWdNQ0FnTURBd01FQXdNRUJRZ0ZCUVFFQlFvSEJ3WUlEQW9NREFzS0N3c05EaElRRFE0UkRnc0xFQllRRVJNVUZSVVZEQThYR0JZVUdCSVVGUlQvMndCREFRTUVCQVVFQlFrRkJRa1VEUXNORkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCVC93Z0FSQ0FESUFNZ0RBU0lBQWhFQkF4RUIvOFFBSEFBQkFBTUFBd0VCQUFBQUFBQUFBQUFBQUFjSUNRUUZCZ0lELzhRQUd3RUJBQUlEQVFFQUFBQUFBQUFBQUFBQUFBRURBZ1VHQkFmLzJnQU1Bd0VBQWhBREVBQUFBYXlqNkY1d0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFZ2QzZURUNXhMSjM2eEZvYzVsOGxHUFNYS3N6TkRNMDlOVmROKzhQOFpkTEtCSHBpZSt2aFR1b2ZOWE5Bdm0rTXlVbVJuMWRRWmdBSE00Y3cxTGljUDFWTGVRdWpUekoyZEpNMzM1cGhhYVVqZWFiS1VSdmRWN1NaMWRUUzZTdUZrd1EvYkhyNzY1dDJGMW1kazg3TlBxRStTWXlIUjFnQUxCMThsdnlUZWpQWFFxbXVnc2dZZFZWcDF5YUhmWExXM3ZVUWsycGFJcWQ1TXJZcUlQZmpkTE5tVFl5MitDVG94c2I2SXR0U3U2bEE5QlpIQTZxb0FCeU9PTkhQMnBQZW5qcnMvOEF4bW5jWWJMQ2lhNnoweFNtYVp0OUhSTWxVUnZkRitxem9ZdXMzbGRLVjF1NmlhbTN0N1BydEpuMEdlbnUvQTlEV0d4eEFBQWV2OGd4WEtrL09acWM5Sm1iS2xwTXpaR2t6TmthVE0yUnBOd002RXJoMWo4dzJPSWV5QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUC84UUFLQkFBQVFNREF3UUJCUUVBQUFBQUFBQUFCUUFFQmdJREJ4VVhJQUVRRXpZUkVoWXdOSEExLzlvQUNBRUJBQUVGQXY2YkdJU1JsTlliRmdVWlMzRk1tbFBndEtXMmJmU0xyRTFQU3VXK0MwdkJhWGd0THdXbDRMU2NpR0x5azFpZ09ScGtzUUl4ZTkrR0FRbXFVUEc3ZTAwc1BuN1lhM2U1ZEJ0cTk1eGFPWllIRkF5eEo3Y3BCa3hoSGkyODR0YnppMXZPTFRITFFKM1cxZDJIMWg2eXNFV3M1aDF5S0VPYlJyY2ZPZ1lpeUJGU1dRdDR5S1BTRjdJM3ZERW50eXlmN3R3amNvZlJoNENOTjVBTWxBSzNJd2x5M1ZadWNzVk1PajJYTExSbXA5SSsxR0pqMWRPMGg1YlNIbEFvQ1ZqcDlUWEhoWTlKZHBEeTJrUEp6aXc0MGJkc09tYW01ZFpIWWRCOHc1WVkrTmVVNCtycEx1emI5Ym1lL3dBUHRqWDZ2dlZaZitQdXZsaTRoMFlTOVpkQ1ZNejNhbkpzam9wM1BraTNQa2l4NU5UQjZSS2RUbzJGbEc1OGtXNThrVi9KRWhkV08ySEFsVjRnc2hrT2hLWDhyRit0cmZqUnkxSXd4NEcya1F5U1JSL0YzWERFbnR5eWY3dHdpc05mU2x5SUZOd2crWVNHaU5BNnF1dGRYT0VURzdFMzdCKzNLTkw3ZTA2dFBjWHg5NVh0Q0NXMElKYlFna0JnQXVPUDBheDBKUEV0b1FTMmhCTGFFRW1PTTQreHJ0V3FMRnNvVmFobVV4bGw2V0V2d3g2VWtJemZDNWVHUEtXOHFET3FkZEdyWFJxMTBhdGRHclhScTEwYXRkR3JYUnExMGFuTXRDdEtUZVlCN1drOUpIOGtjLzAzLzhRQUhSRUFBZ0lDQXdFQUFBQUFBQUFBQUFBQUFBRVJFZ0lRSUNFeFVQL2FBQWdCQXdFQlB3SDZ5eGs2UktGN3FVU2g0enlmUzFERW1aRVBXTE11QzlNdFdSWWJnc2h1UmVtWG5GT1NwVml4WTFKVmxXSlFOenlzV0xGaXhZYm43SC8veEFBdUVRQUJBd0VGQmdVRkFRQUFBQUFBQUFBQ0FBRURCQVVSRlNGU0VoUWdNVUZSRXlJeVlZRVFKRkJ4OERQLzJnQUlBUUlCQVQ4Qi9MVmxkNFBrajVyN2lwenpkUjBsUXhzN2lxci9BQVA5S09NNVgyUXpXNTFPbGJyVWpuc3VvSytXRjdqelpSbU1nc1k4dUNVL0NqYyt5cFl0Nm11TDl1aEZoYTRWdlVHdGxVMU1KUWt6RXJPa0dPVjNON3NsdmNHdGtFb1MraDcxYUZNeGc4cmMyVmxTdmU4WHp3Vlk3VUJzeXNzMkdaMmZyOU1MbTd0L2ZDa3M2V01YTjNiSlFRRlVGc0FzTG03dC9mQ29hWTZablkrcXF6WUlDZDFaWTN6WCszRFZVNVVzbTBQTG9vYlVHNjZWbGljSHVwN1Foa2lJRzZxaG5DbmtjajdMRTRQZFBha0hTOVZOVWRXVjNUc3FLbTNlUHpjMzRTRmpiWkpIWmNSWmk5eXdrZGF3a2Rhd2tkYXdrZGF3a05TaHBJb1BTMmY1ai8vRUFFTVFBQUVEQWdBSEN3b0VCUVVBQUFBQUFBRUNBd1FBRVJBU0V5RXhRWk1GSUNJak16VlJZWkdoMFJRd01qUlNZbkdCd2VGQ2M3R3lVM0NTcy9CVWNuU0N3di9hQUFnQkFRQUdQd0wrWnQyRVpLTUR3cERuby9McG9GOXM3b1BlMDk2UDlOV1lpTU1qb1EyQlhKcDdLM1dJUWtIeVZ6Vjd1QUFnRVpCZW41VnlhZXl1VFQyVnlhZXl1VFQyVnlhZXlyUHdvN3c5OW9HbEtpaFc1NzNTM25SL1NmcFZwVGVNeW84Qjl2T2hYbWk5SXVuYzVrOE1qOFo5a1VobGx0TFRTQlpLRWl3RkYrVStpTzBQeHVLdFJTMEpFcjNtMjdEdklyMUtaMko4YW13MjRrcEszMlZOZ3F4YkM0K09BZmtMK21CNkE5RmtPT05XdXBHTGJPTDlQWFhxVXpzVDQxNmxNN0UrTmVwVE94UGpRUzRYNG5XNjNtN3IwbDZPOGg5cFdoYmFyaW5JOGxwTHpMZ3NwQ3E0RjNJTDJkbHc2dmRQWDVobU95TVoxMVlRa2RacVBCWTlGcE5pZmFPczA1TWY0WDRXMjlhMWRGR1JNZHh2WlFQUlFPZ0RlajhoZjB3VC9nMy9BRzA3MFBSWE9MUEtNcTlGWS96WFRNMk1lQXZTazZVbldEVWlFdTJNb1hiVjdLOVJwVGF4aXJTYkVIVWQrMHRRdUk3YW5mcDljSGtRUEV3MGdXOTQ1ejlNSVVCSHNjL0sxb2piV3RFYmEwSmNzTTVISnFUd0YzT0NWTmlobklPWW1ManVXT1pJRmFJMjFyUkcydE92dUNQaU5wSzFXYzFEQy91Y284VklSanBIdmo3ZnBnbkJJc2wwaDRmTVorKysvbTlQazMvb1lOMWNiVGx6aGEvMmp6RzZQL0hjL2FjTzV1TDByL1lyQW0zK21SZnRPL2pwVWJKa0lVejlSM2dZRWJvSlR4TXRPYysrTTM2V3doSW5pd3pjaTM0VnpnTmczNFZ6Z05nMzRVSXMyWGxtTWtwV0xrMHB6L0lZSmNTSE15VWRHSmlweVNEcFFEckZjNERZTitGYzREWU4rRk9NdVRncHR4SlNvWkZHZy9MREozVVduaW1VNUpCNlZIVDNmcmczUVdrM1EyckpEL3FMSHZ2djIzbWxZamphZ3BLaHFJcVBOYXRkWXN0UHNyMWluWVVrY0JlaFEwb1ZxSW90eW03dEU4VytuMEYvNTBiMGZrTCttQ2Y4Ry83YWQ2QXlndFJRZU1rcUhCSHc2VFRNT0tuRlphRnVzOVpwK1VTTXNSaU1wNlY2dkdpcFJ1bzV5VDVnNDEzSUx2TE5EOXc2NmJreFhVdk1MRjBxVFNtbm0wdXRxMG9XTGcwVkNLcU9UL0JjSTdxMHl0cjlxMHl0cjlxMHl0cjlxOHNpRi9LNHBUeGk3ajlNRHM2U1g4czVhK0l1d3pDM1IxVnBsYlg3VnBsYlg3VnBsYlg3VUZlUm1Rb2Z4MWxYZG9wS0cwSmJRbk1FcEZnS2NsVEhReXlqV2RmVUt5eXJ0eG04ekxYc2pwK1Btc2VFOVpCOU5sZWRDdmxRVFBiWEFkMW0yT2p1ejFkdmRTSWVvdkFHdWNJdTJUWE9FWGJKcm5DTHRrMXpoRjJ5YTV3aTdaTmM0UmRzbXVjSXUyVFhPRVhiSnJuQ0x0azFkM2RTSU9vT2hSN0JSVHVjeXVhN3FXdmdJOGF5MDU3SHQ2TFl6SVI4Qi9NNy84UUFLQkFCQUFFQkJRZ0RBUUVBQUFBQUFBQUFBUkVBSVRGQlVXRVFjWUdSb2NIdzhTQXcwYkZ3LzlvQUNBRUJBQUUvSWY4QVRZam80YURUTTBPTVVZNjN2RXRCWkcrYUJGdUQraFhxOUc1RUNITnN1NWFCTlBWNjlYcjFldlY2OVhwYzVZZjJ5bVpPMFJaMVQraWdaNFRnaE9Eby9VVEJ1Nk4vTi9YQTMwYTQwU09RVmVxckFkMi9Tb01IZ3VyT214R0VobnBDQXVXMzRVU0xxaGxoTVNQZ1JvMGJwdHN0M082WGFhb2JpVkNFSk1pZVkwREUwM2htMEhVNHg4OWRxWEpCUm1FU0RiaXVxeTFicGl3TUx1SDlYQUdsM09XN2NzdjY0L1pSd1Zzb1N1T00rWXFmdWVRZk5GQ3FKdnd2VTZMVCsyNytCaFBuWmtIM093OVo4TmhaZWhhWW5KSERiQTVvUEJYblB5dk9mbEUyREc4eEZrYWJIbVJHSUdzak1hODUrVjV6OHEvVVBGZ2x3MDJwTmtaZkozejVObkh2SUNmbUZCM1c2MzdiRGFQTTVZZEkyK1d5K3RRRmJKdE4xdHNXYmN4NmZuUEFwWE5Pb0xqc1RCREJ1QkVjUXVlMG9ZSUdGdG9VSjJyQkxNaUxRZGhuQXBZTWxhamV1MUNoaUZnWGtJU3pMdFNnSmRrckc3WXd3ZzRaMEh6TkF2UmlKSG5TaENDMjY3L1JHc2N1WFljMGZwalRsTE1kaHZ3ZFZ2MlVjSU5CckNjVCtBNHhWajFsTjVqbUsyMWF0RVdNZEJlMEtmdzJRbFg2SElPaGVETFJkYnNrbkRxS3gvSFNpSjlCWnRScTB5OHhQTkljQ3ZTcWVsVTlLb2JRTmhJRyt5R3pEZGY3QUVHZ1Y2VlQwcW5wVk1OSUVqdWNTZ0RGRGdaQVVTV3JieFlCaXVWTFFsbnZFYXNlQmg5UytZWjVoNXRTR3NEZEZMeHNPWEdqVTUvQkZtdlB1OWVmZDY4KzcxNTkzcno3dlhuM2V2UHU5ZWZkNjgrNzB5aW42NExXQnVRUjF0dGJvTjlTVTZWR1dCdnYvd0JPLzlvQURBTUJBQUlBQXdBQUFCRDc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nm9Namc0eHZQMzc3Nm1wenl5dnplcHI3NzczajVUL3o1ZS96Nzc2NHB2OEF2cS82SUcrKysrdmMvd0QvQVA4QXRmOEF2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2L3hBQWVFUUVBQWdFRkFRRUFBQUFBQUFBQUFBQUJBQkV4RUNBaFVXRkJVUC9hQUFnQkF3RUJQeEQ5Yk1kQnF6TUVVTXoybG4yQmhFUnAyQmJVV0NabmhMQnhBcHhQS0ltWlExRDkyY1JEeHJBV29BdDBpd2hzYm9EVEhycEFSakNqV2htNXRHb016TDlTL1V2MUw5Uy9VWEw5ai8vRUFDZ1JBUUFCQVFVSUF3RUJBQUFBQUFBQUFBRUFFU0ZCWVhIaElERlJnWkdoc2RIQjhQRlFFUC9hQUFnQkFnRUJQeEQrc2IzMTl1TllEbzd0UFJGVTBFODV6dmtvZFZ2bU43ZTQrS3RKVSszdzd6SitHS3pWYkdHUll0VnFXL1RGZ1lxQmRQM0lDOVVhRllYUVZGdVpQMUlVbzBjSVhOTjlpWTVRRG15bEhoK09tdzNCSGkyWEFTek94OGY0dTE3akZIa0ZiRjlSK2dJVnQ1Rnc4Wis0d3BnMUc2dnlFdkJCT2JaRVViaGVUWVFTak54MnFxNFlabmVVVmRlSmZ5dW4xR3NyUTFDRm1zcUZVVVdabnFmVWF3QlVMa2U0TUpTNExiZmxqWnljT0J5ODdMMEtqY3hxcXdienZiM21LNmF6RmROWml1bXN4WFRXRlMxOUNXM25HMTA1ZjJQL3hBQW1FQUVBQVFNREJBTUFBd0VBQUFBQUFBQUJFUUFoTVJCQllTQlJjWUV3d2ZCd2thSFIvOW9BQ0FFQkFBRS9FUDVOdmNVNFpraTUrQXRLUTBIckJaN3FlZUp2bWppdEFOZWdyOU45VXpHTUFqc3NhU0dreEI2TmZwdnF2MDMxWDZiNnI5TjlWK20rcVBNVUpyL1NpeDgrbm9nNG9xbUJQYmtzREdOc2JLU0UvRVMweFRIQTJGa1N1Z0VJUVNXWGhjQXNGV1ZmVFIyQ3QxRmhLN0ZUSnRBcGVIU0RDekozZnVoTUVUQXZIUTBPTG05bG8xZ0RKa2VoZ3dZTkQreEUrV0RsQTcwYnA1N29jSWttNWtwdDNmdHJDTUlJUkJFUWFQMEtVd1hXV3VrT0lrdkQ0SEZkd2RQZ2xMMWpBdUpWK1krQ1lMQlUvaXdPQVYyeFpnTWhEQU1ZUGoxQnRJZ1lsdkJLVy95TkZKQkcycHNtMURBOWdvcXdoMkdPQVlUMGtKWkduaWtKdzFCMkp3WkJ2UmliZWhBZzdpSjFsdGlra2lMOGdqa2FNQkZRL3dCbmZ3Yys3cmRQYVlzSkovdlhQTmxnZDhCaGE3UjlzUkozVkpIS3hHdWVaRmIxZERFWnNLMnJMejBaQ2lvMmttNzhlaENUNEVTdCsrdktxSk43ditrNkJMSlRkT0hXZmg5dngzc2JSV2U0OWFOT0VRaCtkdXNhTlMwRUkvUU9Sb3lJU2wzbjJoWGQ0dW9HSHlxQVFHdVRKYUZHemE3WVpMYVkwbVdmdGR3MGwxMXpCYldUSnYxRHNzbkNrcEpFZFNJQ0phV1M0NGZIUXlyK0dURW50TTk5ZU01ZEREY2dIMVF4RVM1S0NiMnVKenVGTXFTRFM4U25DTHdpbGxUQWJDcnNvN1BOaHlRdnh0RkJLQlFobnNMZUczSkM5Wno4SVYzZEJMS2U3WUNDcHJMUmF2Rm05M2tUS1VnWE1rSmxWM1ZaK0IrNnNURllEWUZiV0RkRkFiQXBNRzRtUWJLQkVSQks0Rm51aUVpZVNtQUZkSzhKNFFIUXpac3pOVnl5L0Jjc2I2RW1tQ1BKOEpNaStaNkdiTm5QTTAreGN6MkZEVUtCZGdBQTRLa2FDZk93QzhhQVN0WHFZNlN0NGJNWW94QVNCK0o5Z3dURjVpSVdtQXRNU1ZEWW9LSjNDdWRtSjNab0VlSmdieVllejR2L0FQOEEvd0QvQVA4QS93RC9BUGdnUkw2eFFlaW9iMFJWL0JiOGpzb0EzYkVtTWpZd0pVcUNWaitUdi8vWiJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wNC0xNiJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDQtMTYifSx7ImFhZ3VpZCI6IjZlMjRkMzg1LTAwNGEtMTZhMC03YmZlLWVmZDk2Mzg0NWIzNCIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiNmUyNGQzODUtMDA0YS0xNmEwLTdiZmUtZWZkOTYzODQ1YjM0IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkxlZGdlciBTdGF4IEZJRE8yIEF1dGhlbnRpY2F0b3IifSwiZGVzY3JpcHRpb24iOiJMZWRnZXIgU3RheCBGSURPMiBBdXRoZW50aWNhdG9yIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEwNjA1LCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NmsxX2VjZHNhX3NoYTI1Nl9yYXciLCJlZDI1NTE5X2VkZHNhX3NoYTUxMl9yYXciLCJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfaW50ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MTAsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6MywiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfaW50ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MTAsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6MywiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbImFueSIsImhhcmR3YXJlIl0sInRjRGlzcGxheUNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbiIsImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlCZ1RDQ0FTY0NGRk0xUUNEWGcxMjJGOWN2V0ZWbXFlR1gzdFFXTUFvR0NDcUdTTTQ5QkFNQ01FTXhDekFKQmdOVkJBWVRBa1pTTVE4d0RRWURWUVFLREFaTVpXUm5aWEl4SXpBaEJnTlZCQU1NR2t4bFpHZGxjaUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRU5CTUI0WERUSTBNRFV6TURFME1UazBNRm9YRFRNME1EVXlPREUwTVRrME1Gb3dRekVMTUFrR0ExVUVCaE1DUmxJeER6QU5CZ05WQkFvTUJreGxaR2RsY2pFak1DRUdBMVVFQXd3YVRHVmtaMlZ5SUVaSlJFOGdRWFIwWlhOMFlYUnBiMjRnUTBFd1dUQVRCZ2NxaGtqT1BRSUJCZ2dxaGtqT1BRTUJCd05DQUFUSzduWHlINHBnTjNUTXdDV1NvTURSZTRFVjhKbDNYenVoaWNaLzJndmgrenozV21XME9aL0VjUllFQThGMjZjZWV1TWNkMjFXUVJSS1dwaldEK0pXaU1Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lRRDhKKzAvYjhQZVlqRlJRWWtVUmNxaGF4MjdvbHcxalkvcGJza2hCdVJwNEFJZ09BSGI2bis3Zk5mZnlveHBlQ3EzVlo3QjFqTjN3cW1QTmZuYWVBamRvWHM9Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQVNZQUFBRUFDQVlBQUFBZU1kdnhBQUFBQVhOU1IwSUFyczRjNlFBQUFJUmxXRWxtVFUwQUtnQUFBQWdBQlFFU0FBTUFBQUFCQUFFQUFBRWFBQVVBQUFBQkFBQUFTZ0ViQUFVQUFBQUJBQUFBVWdFb0FBTUFBQUFCQUFJQUFJZHBBQVFBQUFBQkFBQUFXZ0FBQUFBQUFBRXNBQUFBQVFBQUFTd0FBQUFCQUFPZ0FRQURBQUFBQVFBQkFBQ2dBZ0FFQUFBQUFRQUFBU2FnQXdBRUFBQUFBUUFBQVFBQUFBQUFlNlNDa3dBQUFBbHdTRmx6QUFBdUl3QUFMaU1CZUtVL2RnQUFBVmxwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFBRHg0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJbGhOVUNCRGIzSmxJRFl1TUM0d0lqNEtJQ0FnUEhKa1pqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWo0S0lDQWdJQ0FnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJS0lDQWdJQ0FnSUNBZ0lDQWdlRzFzYm5NNmRHbG1aajBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5MGFXWm1MekV1TUM4aVBnb2dJQ0FnSUNBZ0lDQThkR2xtWmpwUGNtbGxiblJoZEdsdmJqNHhQQzkwYVdabU9rOXlhV1Z1ZEdGMGFXOXVQZ29nSUNBZ0lDQThMM0prWmpwRVpYTmpjbWx3ZEdsdmJqNEtJQ0FnUEM5eVpHWTZVa1JHUGdvOEwzZzZlRzF3YldWMFlUNEtHVjdoQndBQUQ2NUpSRUZVZUFIdDNMdU9KR2NWQi9CZDltSUhOaExpSWhPUU9FYUNDRGtpSUNORzRnMzhDandKQ1FsQ0JBU0lCTjZDaEFnSkpFUmlKQXZaQW95eGZGbnZoZS9zOUpGcWUzdG11azkvcDZkNjUxZlNOMVZkVmVkVXphOXEvbDI5OXN5ZE8zZnV2RC9Hc3pHZWJPYXhiS3pYNE5IbSt2eHF6R042Y0RIemRTRndmN1A4OHpHUGV6bk4zTmZydmEvajJqemRYSzlQdnpJV1RBUUlFRmlWZ0dCYTFlVndNZ1FJaElCZ2NoOFFJTEE2QWNHMHVrdmloQWdRRUV6dUFRSUVWaWNnbUZaM1Nad1FBUUtDeVQxQWdNRHFCQVRUNmk2SkV5SkFRREM1QndnUVdKMkFZRnJkSlhGQ0JBZ0lKdmNBQVFLckV4Qk1xN3NrVG9nQUFjSGtIcmd0QXZGTG9xWXpFUkJNWjNLaEZxZDVkN09jODhVbWk1Y0loQld2UzNEV3VEci9QTVF4NSthZDZCaTl3MnZUTytlSGQ3ZzlGV21VZjA3ajluem5OLytkSHZWR0VNWHg5NWkrUFVaY3ZIMmZvUEtDUi8xUHgvampHRytPRVgvVDZhZ1RHdldtcXdYQy90NFkveGtqcmwxNDUvVVlpNlloa0NadmplVnZqUEY0czI3TVRFMENjUS9HZzg3SFkzeC9qTitQRVZPczN6Y1RjdC9QWmp3eC9XVWMrTDA0QTlQSkJmSUg4T1FIWHZrQjh3Yi81empQR0tiVENqdzg5bkF6Z3VtTnpVbkV5Y1FUazZsZklBSXBubkJqbUhZTFJEakZKNEFZc1d6cUY0aS9wdnI1R0prSjVTUE9DS1lNbzVqbmN2bUVGQktZS0NDOEoyTHUwU28vc3NWSDU2T21mZjlONmFpREtDWkE0RllKWkVDVnYybkJWS1pUU0lCQWw0Qmc2cExWbHdDQnNvQmdLdE1wSkVDZ1MwQXdkY25xUzRCQVdVQXdsZWtVRWlEUUpTQ1l1bVQxSlVDZ0xDQ1l5blFLQ1JEb0VoQk1YYkw2RWlCUUZoQk1aVHFGQkFoMENRaW1MbGw5Q1JBb0N3aW1NcDFDQWdTNkJBUlRsNnkrQkFpVUJRUlRtVTRoQVFKZEFvS3BTMVpmQWdUS0FvS3BUS2VRQUlFdUFjSFVKYXN2QVFKbEFjRlVwbE5JZ0VDWGdHRHFrdFdYQUlHeWdHQXEweWtrUUtCTFFEQjF5ZXBMZ0VCWlFEQ1Y2UlFTSU5BbElKaTZaUFVsUUtBc0lKaktkQW9KRU9nU0VFeGRzdm9TSUZBV0VFeGxPb1VFQ0hRSkNLWXVXWDBKRUNnTENLWXluVUlDQkxvRUJGT1hyTDRFQ0pRRkJGT1pUaUVCQWwwQ2dxbExWbDhDQk1vQ2dxbE1wNUFBZ1M0QndkUWxxeThCQW1VQndWU21VMGlBUUplQVlPcVMxWmNBZ2JLQVlDclRLU1JBb0V0QU1IWEo2a3VBUUZsQU1KWHBGQklnMENVZ21McGs5U1ZBb0N3Z21NcDBDZ2tRNkJJUVRGMnkraElnVUJZUVRHVTZoUVFJZEFrSXBpNVpmUWtRS0FzSXBqS2RRZ0lFdWdRRVU1ZXN2Z1FJbEFVRVU1bE9JUUVDWFFLQ3FVdFdYd0lFeWdLQ3FVeW5rQUNCTGdIQjFDV3JMd0VDWlFIQlZLWlRTSUJBbDhEOTBmakxUZk5IWTM1dmpHZWIxM2QzTEMvWHhXNFBGL3ZFYTlQcEJPSmFQQmdqcjljaFI4N3JtTmYra0ZyN0VyaE9JTzdKdkxmeS9zeDdMbXFYeTh2WHNlL3pUSW92MzR3dFkzcjlZbmJ3MS9qaE1KMVdJQzlzdkptWUNLeEZJTzdMbUNKWGpzbUZyMGFEWDQ4UjRSUTMrYjRmN1RJRjQrQWZqQkZUcnJ0NDVXdVhRSWJTdDhZQmZqekc0OFdCY2x1c3lwdGtlVjF5ZTF6My80N3hoekdlam1FaU1FTWc3NlYvajJhLzNUU00reS92eGV1T0VmdEdCbjF4M1k3N2J0LzN3UHYyczkvbEF2RnhPNllmalJFWHNqbytITFh4VVR3bTErL0N3ZGZqQmFiY1MvSE9HUWwxVExOSXlmamhNSjFXSUorVTRyTjhYTDk5cjJGY3IzalMvV2dNMTIwZ21LWUs1RDJWYjZDVjVzOGltUElkdDlJZ2F2SkVxdlhxamhPSUcyRGZVRnJ1dCsvSDl1UE9UdlZ0RmNpUGRhWHZQNE9wVkt4b1ZRTEwwTG5xeEhLL25GKzFyMjBFcWdKSFBiQjQxNnl5cXlOQW9FMUFNTFhSYWt5QVFGVkFNRlhsMUJFZzBDWWdtTnBvTlNaQW9Db2dtS3B5NmdnUWFCTVFURzIwR2hNZ1VCVVFURlU1ZFFRSXRBa0lwalphalFrUXFBb0lwcXFjT2dJRTJnUUVVeHV0eGdRSVZBVUVVMVZPSFFFQ2JRS0NxWTFXWXdJRXFnS0NxU3FuamdDQk5nSEIxRWFyTVFFQ1ZRSEJWSlZUUjRCQW00QmdhcVBWbUFDQnFvQmdxc3FwSTBDZ1RVQXd0ZEZxVElCQVZVQXdWZVhVRVNEUUppQ1kybWcxSmtDZ0tpQ1lxbkxxQ0JCb0V4Qk1iYlFhRXlCUUZSQk1WVGwxQkFpMENRaW1ObHFOQ1JDb0NnaW1xcHc2QWdUYUJBUlRHNjNHQkFoVUJRUlRWVTRkQVFKdEFvS3BqVlpqQWdTcUFvS3BLcWVPQUlFMkFjSFVScXN4QVFKVkFjRlVsVk5IZ0VDYmdHQnFvOVdZQUlHcWdHQ3F5cWtqUUtCTlFEQzEwV3BNZ0VCVlFEQlY1ZFFSSU5BbUlKamFhRFVtUUtBcUlKaXFjdW9JRUdnVEVFeHR0Qm9USUZBVkVFeFZPWFVFQ0xRSkNLWTJXbzBKRUtnS0NLYXFuRG9DQk5vRUJGTWJyY1lFQ0ZRRkJGTlZUaDBCQW0wQ2dxbU5WbU1DQktvQ2dxa3FwNDRBZ1RZQndkUkdxekVCQWxVQndWU1ZVMGVBUUp1QVlHcWoxWmdBZ2FxQVlLcktxU05Bb0UxQU1MWFJha3lBUUZWQU1GWGwxQkVnMENZZ21OcG9OU1pBb0NvZ21LcHk2Z2dRYUJNUVRHMjBHaE1nVUJVUVRGVTVkUVFJdEFrSXBqWmFqUWtRcUFvSXBxcWNPZ0lFMmdRRVV4dXR4Z1FJVkFVRVUxVk9IUUVDYlFLQ3FZMVdZd0lFcWdLQ3FTcW5qZ0NCTmdIQjFFYXJNUUVDVlFIQlZKVlRSNEJBbTRCZ2FxUFZtQUNCcW9CZ3FzcXBJMENnVFVBd3RkRnFUSUJBVlVBd1ZlWFVFU0RRSmlDWTJtZzFKa0NnS2lDWXFuTHFDQkJvRXhCTWJiUWFFeUJRRlJCTVZUbDFCQWkwQ1FpbU5scU5DUkNvQ2dpbXFwdzZBZ1RhQkFSVEc2M0dCQWhVQlFSVFZVNGRBUUp0QW9LcGpWWmpBZ1NxQW9LcEtxZU9BSUUyQWNIVVJxc3hBUUpWQWNGVWxWTkhnRUNiZ0dCcW85V1lBSUdxZ0dDcXlxa2pRS0JOUURDMTBXcE1nRUJWUURCVjVkUVJJTkFtSUpqYWFEVW1RS0FxSUppcWN1b0lFR2dURUV4dHRCb1RJRkFWRUV4Vk9YVUVDTFFKQ0tZMldvMEpFS2dLQ0thcW5Eb0NCTm9FN3JkMTF2Z2NCT0w2UHhuajNoalB6dUdFRHp6SHAyUC9HS1l6RXhCTVozYkJKcHh1QmxBRTBtZWJmcS95RCsvZDhUM205enlCVDR0VENBaW1VeWl2NnhqeGd4clRtMlA4Wkl3dng0aVA5Sy9TRDI5OEw2K044YWN4L2o2R2NCb0lKZ0tkQXZHeEs2WWZqaEUvZ1BIa0UwODhzYnp2T0hUL2ZmdXViYitmRFpPWUhsek1mRDBYQVU5TTUzS2w1cDVuUGpWbFFPWHJDSmFZZHIyT2Jjc25qMXpPZlo4WDd2aXk3Sms5Y3JmY0ZxK1hmWEsvM0w3Y2xyVTVYKzZUeTQvSHhuaGkraUozTWo4dkFjRjBYdGRyOXRuR0QvenloMzY1SE1kYXZzN2xuRzl2ajllN3BxdjJYMjViMXViNm5DKzNiUzh2OThubC9LL04rWHE3eHV1VkN3aW1sVitnNXRON1ZYOXdYOVh2cS9sMldFLzdmR2RaenhrNUV3TEhDZVRIdWVPNnFMNVJBY0Ywby93TzNpRGdhYWtCOWRRdEJkT3B4UjJ2VzhBVFU3ZndDZm9McGhNZ084UkpCVHd4blpTNzUyQ0NxY2RWVndJRWpoQVFURWZnS1YybGdJOXlxN3dzaDUyVVlEck15OTdyRi9CUmJ2M1g2Tm96alArUDZkZ0w2UjNxV3ViV0hmaS95QnNlVEY0MHVZbFhSK1dLSjZhYnVHUTl4OHdmeHB6blVTNzdRZDNlTC9lUCtYTGJjam0zNWJyTDV0a3J0eC82ZWxrWHk4dlgyU3ZueSsyNVg4NXpIL016RTRnbkpoZnh6QzdhNW5UemwzbHpudC9GOWp2Vjl1dkw5c3YxTVYvV0xKY3YyNWI3NUR4N1ZWOHY2NWJMMlhjNVgyN1A1WWViSGZ6eTdsTHF0TXRINVVwY3lOK044ZFlZajhhSUo2aERHa2F3dlR2R1h6ZTE4VXVocGw2QnVHWnhqYjQyeGcvR2lMOHVFRlArVUY2OHV0MWY0ejZNWCtMOTh4anZqWkZtWTlIVUtCQnZrbkUvdmozR0x6ZkhPU1JQWXQvbzhYblVmanhHcktpT2Q2TEptTGJmdVMvVyt0b2hJSVQyVjJXMXY5V3hlK1lUNnZkR28ycWVQSytMSjU2UHhvZy9HcFpQVEdQeDJpbUtZNG9UaVQ4eFlUcXRRUGpIRDV3M2c2dmQ0OG5KVS96VlJqTzNaaTdFVTFNK3llZTZmWTRUKzBZbWZSSmZZc1FVODMzL01YeDVNTzlJei9sTy9pV3VnVGVGazdNNzRCNEN5emZOdUUvM3pZamM5LzYrUWJUSHVkaUZBQUVDY3dRRTB4eEhYUWdRbUNnZ21DWmlha1dBd0J3QndUVEhVUmNDQkNZS0NLYUptRm9SSURCSFFERE5jZFNGQUlHSkFvSnBJcVpXQkFqTUVSQk1jeHgxSVVCZ29vQmdtb2lwRlFFQ2N3UUUweHhIWFFnUW1DZ2dtQ1ppYWtXQXdCd0J3VFRIVVJjQ0JDWUtDS2FKbUZvUklEQkhRREROY2RTRkFJR0pBb0pwSXFaV0JBak1FUkJNY3h4MUlVQmdvb0JnbW9pcEZRRUNjd1FFMHh4SFhRZ1FtQ2dnbUNaaWFrV0F3QndCd1RUSFVSY0NCQ1lLQ0thSm1Gb1JJREJIUURETmNkU0ZBSUdKQW9KcElxWldCQWpNRVJCTWN4eDFJVUJnb29CZ21vaXBGUUVDY3dRRTB4eEhYUWdRbUNnZ21DWmlha1dBd0J3QndUVEhVUmNDQkNZS0NLYUptRm9SSURCSFFERE5jZFNGQUlHSkFvSnBJcVpXQkFqTUVSQk1jeHgxSVVCZ29vQmdtb2lwRlFFQ2N3UUUweHhIWFFnUW1DZ2dtQ1ppYWtXQXdCd0J3VFRIVVJjQ0JDWUtDS2FKbUZvUklEQkhRREROY2RTRkFJR0pBb0pwSXFaV0JBak1FUkJNY3h4MUlVQmdvb0JnbW9pcEZRRUNjd1FFMHh4SFhRZ1FtQ2dnbUNaaWFrV0F3QndCd1RUSFVSY0NCQ1lLQ0thSm1Gb1JJREJIUURETmNkU0ZBSUdKQW9KcElxWldCQWpNRVJCTWN4eDFJVUJnb29CZ21vaXBGUUVDY3dRRTB4eEhYUWdRbUNod2YwS3ZETGQ3RTNwcHNiL0FzN0hyMC8xM3Y1Vjd4cjE1OTFaKzV6ZnpUVWVlUEI3ajZDeVlFVXlmYkF3ZTNZekZyVDVxL05CRlFKbGVGZ2did2YyeVMrZWFKNXZtSHg5N2tCbkI5TTQ0aVlkanZERkduSmgzcUlIUU9FVVFQUmpqL1RIK05vWndHZ2hiVTVxOFBkWi9aNHd2eDNCZmJpRk5maG4zWmVUSi84YjQ3b3plY1lOSDB3aVZtQnZuWWZDYmNhMWlpcEF5dlNpUWI3aS9HS3ZkeitkakVFKzRjYjArelF2NDRtVTk3RlZlK01PcTdGMFJpSGY5ZVBlUEo5UXZLZzF1V1UzKzgwTE1aOXpydDR5di9PM0dmWHJVRStxTWk1VW5rUFB0N3lhQ0s3Zmxjc3hqaXZXNTd2bUtIVjkyYmM5MXl6N0wwdHdlNjViTCtYcTVieXh2bjkvMjluaWR4NHJsN2ZOZUhpT1h0K2ZiUGVKMVRNdGpYNnpadlM3M3pmMXpualhtTHd1a1VjeVh5M2x0b2lLV1k4cnR5MjBYVzE3OHV0dy85ODM1Y3MvdGRmazY1MWZ0bTl0aTM1emkvUEwxdnVlYXRZY2NNMnR5bnJVNXovVXgzN1Z1dWIyOFBDT1k0dUFKdGV0RWx0dHlPZWZYMVY2MlBldHp2bjNjNWZybDhtWDlzbjU3MzF5L3EyNjU3NjdsWEpmelhUMnU2bi9kL3N0YXk5Y0xYSFlkbHV2M01WL3VuOHM1WDU3RjlycDhuZk9yOXMxdDIvdGU5enJydHVmYmRiRjkxN3J0dXVWK3UvYmZ0VzVYajRQWDVYL3FQN2hRQVFFQ0JMb0VCRk9Yckw0RUNKUUZCRk9aVGlFQkFsMENncWxMVmw4Q0JNb0NncWxNcDVBQWdTNEJ3ZFFscXk4QkFtVUJ3VlNtVTBpQVFKZUFZT3FTMVpjQWdiS0FZQ3JUM1ZoaDIvL1VkbVBma1FNVDJCS0kvL003L3pSRXpyZDI4WEpsQXZITDFuSGQ0dGNCVEZjTHBGSGMyKzd2cTYzV3NEV3VWL3d0cDZkeGc3KytPYU5adjU2eWFXZldKUERhcG0vOElxL3Bhb0g4eXd0cGR2WGV0cTVGNFBVSW8zOXN6dWJ6TWZmUmJpMlg1dkx6aUw4UStQVXhQdHpza2s4RmwxZmN2aTFwOHEveHJjZDkvY0VZY2EvN0dEd1FWanpsRTlPbi93ZWJhMFY1VTZXSnFnQUFBQUJKUlU1RXJrSmdnZz09IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiXSwiZXh0ZW5zaW9ucyI6WyJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiI2ZTI0ZDM4NTAwNGExNmEwN2JmZWVmZDk2Mzg0NWIzNCIsIm9wdGlvbnMiOnsicmsiOmZhbHNlLCJjbGllbnRQaW4iOnRydWUsInVwIjp0cnVlLCJ1diI6dHJ1ZX0sIm1heE1zZ1NpemUiOjEwMjQsInBpblV2QXV0aFByb3RvY29scyI6WzFdfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTAzLTI3In1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wMy0yNyJ9LHsiYWFndWlkIjoiZWU4ODI4NzktNzIxYy00OTEzLTk3NzUtM2RmY2NlOTcwNzJhIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiJlZTg4Mjg3OS03MjFjLTQ5MTMtOTc3NS0zZGZjY2U5NzA3MmEiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiWXViaUtleSA1IFNlcmllcyJ9LCJkZXNjcmlwdGlvbiI6Ill1YmlLZXkgNSBTZXJpZXMiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI4NzA2LCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciLCJlZDI1NTE5X2VkZHNhX3NoYTUxMl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlESGpDQ0FnYWdBd0lCQWdJRUcwQlQ5ekFOQmdrcWhraUc5dzBCQVFzRkFEQXVNU3d3S2dZRFZRUURFeU5aZFdKcFkyOGdWVEpHSUZKdmIzUWdRMEVnVTJWeWFXRnNJRFExTnpJd01EWXpNVEFnRncweE5EQTRNREV3TURBd01EQmFHQTh5TURVd01Ea3dOREF3TURBd01Gb3dMakVzTUNvR0ExVUVBeE1qV1hWaWFXTnZJRlV5UmlCU2IyOTBJRU5CSUZObGNtbGhiQ0EwTlRjeU1EQTJNekV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRQy9qd1l1aEJWbHFhaVlXRU1zcldGaXNnSitQdE05MWVTcnBJNFRLN1U1M213Q0lhd1NESHk4dlVtazVOMktBajlhYnZUOU5QNVNNUzFoUWkzdXN4b1lHb25YUWdmTzZaWHlVQTlhK0tBa3FkRm5Cbmx5dWdTZUNPZXA4RWRaRmZzYVJGdE1qa3d6NUdjejJQeTR2SVl2Q2RNSFB0d2F6MGJWdXpuZXVlSUV6NlRuUWpFNjNSZHQyemJ3bmVid1RHNVp5YmVXU3dienkrQkozNFpIY1VoUEFZODl5SlFYdUUwSXpNWkZjRUJiUE5SYldFQ1JLZ2pxLy9xVDlubURPRlZsU1JDdDJ3aXFQU3psdXduK3Yrc3VRRUJzVWpUR01FZDI1dEtYWFRrTlcyMXdJV2J4ZVN5VW9UWHdMdkdTNnhsd1FTZ05wazJxWFl3ZjhpWGc3VldaQWdNQkFBR2pRakJBTUIwR0ExVWREZ1FXQkJRZ0l2ejBiTkdKaGpncFRva3N5S3BQOXh2OW9EQVBCZ05WSFJNRUNEQUdBUUgvQWdFQU1BNEdBMVVkRHdFQi93UUVBd0lCQmpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQWp2anVPTURTYStKWEZDTHlCS3N5Y1h0QlZac0o0VWUzTGJhRXNQWTRNWU4vaElRNVpNNXA3RWpmY25NRzRDdFlrTnNmTkhjMEFoQkxkcTQ1cm5UODdxLzZPM3ZVRXROTWFmYmhVNmt0aFg3WSs5WEZOOU5wbVl4citla1ZZNXhPeGk4aDlKRElnb01QNFZCMXVTMGF1bkwxSUdxck5vb0w5bW1Gbkwya0xWVmVlNi9WUjZDNStLU1RDTUNXcHBNdUpJWklJMnY5bzRka29aOFk3UVJqUWxMZll6ZDNxR3RLYnc3eGFGMVVzRy81eFViL0J0d2IyWDJnNElucGlCL3l0LzNDcFFYcGlXWC9LNG1CdlVLaUduMDVac3FlWTFneDRnMHhMQnFjVTlwc215UHpLK1ZzZ3cyamVSUTVKbEtEeXFFMGhlYmZDMXR2RnUwQ0NySkZjdz09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWZDQVlBQUFDR1ZzK01BQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBSFlZQUFCMkdBVjJpRTRFQUFBYk5TVVJCVkZoSHBWZDdUTlYxRkQvM2Q1OXdlUVNJZ1M5QVFBWGNGTEFRWmk5ZnBlVnoxdFkvV1RacjVXeHBjN1c1a25MYTVqSTNaODVzclMybk0yc2p0V3daUzdJVUg0SDR4Q25FUXg0REFaRjc0Vjd1czg4NXY5L2xJbkJ2VkovQjRQdjludS81bnUvNW52TTU1NmZ6QS9RdjBIYi9JclgzVkZLUG80NWNubTRpblVJV1l3TEZSbVpRVXV3akZHL04xaVJIaDFFWjBOUlZSdWRxdDFCZCsyblNLeVMvT2h5czArbGszZS8za1E5cXZENFpVdGE0VlZTVXVZMGVpcHlpVGhBZm9jb09SVmdEdXV3M3FLUmlBZDNyYmNFdGpUallJb2Y2V2FIc0NtelZQV0NNeCtjZ2g4dExxV01LYU1Xc1VqTHFvMlJ0SklRMG9Pem1lcnBRdTRlc1pnc09Oa0d4SDdkMGtkdlRUMTdzNE9NVTdWSThaaGpnR2FNK0FxOWlFTnU4UGlmMXVkejA3TXd2S1dmOEdsVm9DRVkwNFBDNVdkVGFYWUZiUjh2TnZMNSszS2dmYjV4Tk15YTlSYW1KaXluYU1sR1RWdEZscjZiYTl1K3BxbkVYNHVNdVJSZ2pTWUVock43dXRGRmU2bHFhbDdOZmt3NWltQUdIeW5QcGJrOFZtWTB4c3RucHRsRkNWQ1l0elR1Qk44M1FwTUxqVHRldmRQelNVbko3ZThta2p4WjM5ZlhiS0RmbGRacWJ2VStUVWdHbkJWRjZmUTJpUEhnNFcxNlVXVXd2emJrMTZzTVpFK1BuMHB2ejdKU2V1QXllczhsY3BDbWFLdW8vcCtxV3IyVWN3SUFIV3J2UDBZRXpoWEF0TEFic3NIaHA3aUdhbXZ5aWpQOHJ5cXJYVVdYOVhvb3d4eUF1Zk5CcnA0M1BPQkZYWmxrZjhNRFJpcWNweW93QXdwdXoyeCtmV3Z6L0R0ZGU5c21zenlndGNSNkMxd2JkekJsNk9scTVXTllZNG9HYXRoSk1ya1RFeDBqQVJTSEFWcys1cllrUU5YYitRZ2ZQTHNRNmdYeUluc3JlUWZtcG03UlZGWWZMODZuMWZpVU9rWXZTaGtVUHh2YnVrem95NksxaWhNMWhvM1h6VzZFdlNmWEErZHBpV0dhV2QrZG9Yekx6bUd3S1lGTENBc1JBbFBCQWhNbENGWFU3dEJVVlByOEhnVmNKSFdxK0YwMHBscitETVRkclA0enZ4WTExa05NaHhUK1NlVEdnK2Q0VjVMUUppdHlVR0pOQjhWRlpzamdZQlpNL0lJL1hDVGtqMHF5RE9wRjJBVlExN0NJalVwL0RuVDFVa0w1RjVnZGorc1Mxd2cxZ0UzZ2lnbTYwZkNYelNuUFhieUFQYklYditJRHBFMTZUaGFISVM5c2t5aGxtTUU1RjNjZnFBS2hxMkMwRTVQSDFnWWFYYUxQRGtaRzBIREpPbktXSHA1MUkwejVTT3V4OGUxV0F1WnpkSFFyVGtwOFRtalhvSStsYTB3R1pzenVicWJPM2lmUTZBL1c3dlZTWXNWM21SMEpLd2tLYzRXSGlCa21SOEkzQ0NnSTg3b09MNHF6VDVQK1JVSkJlakVPZ0FQSzhoWVB6YXRNK2VJVHAySU85eVRRbWVyb21QUnh4MXF4QWNzaWxlL3ViU2VFYmNXUUdZRUNnaGNMWTJIeUtqb2dqSDI1aE1wanBVdjFPdWdsaTRlaDJlUncwTzMyYkpqa3l1Q2dOemcwdnpsWU1TaVNzMHVvbzRNRzdoTU9qQ0VhWDF5RkUwblN2akJ6dVRuRXBLODZaOElvcUZBSXVidzhrZzlBckVhUkVXU1pJK2pINFhicDZnOUU5RW5KVDNvYVJ6RE4rTVVKQlFESG41NmE4b1VtRUJ1c094QnMvTjUrdEpFYlBrQUZEajhVR3ZPcy9JV3ZjU2dsR0JodlM3L0ZUWWZwV0dZZERZOGZQQXhXU0EzNXNUQzRwNCtMbTRBYXFJb1BlUXRmdWZLNkpoMFpoeGxic1VYT1NtWE5pZkQ1WlRBa3lEb2ZiYmNjbHhuQThXTkFxeENiUk55a2hYeFFwYUR3NjdmWFVZYnNpRzBLaHR2Mm9lSXZoOHJoUU1ZT2NFQXFYRy9lSSt6bmdPYzV5eHI4cTgySUFNMWMvRkxGT3BscXU1ZUZRWHJNWnpHY1ZDalliTFdHNUk0QlQxZXVScmxieHROT3RNaXREREVoTFhJSXluQUF2dU9FV0UzWDNOZEFmdDk0VmdhRzQyWElRdDBaWDZQZUNFL3FRRmU5cks2SHg3WVU1MEt2SDdmVzRmUytxN0tLQkp4c2dnQlg1cFNBR2gxaklyVmg1elE2dzNSZmFhaEJYbS9hQ2JDWlRqQ1VGVVR5V1pxVzlwNjJNakpQWFZxT3JQZ01PNE52NzRHa2Yrb3dmdE5WQkRRbmpGSnFIU3cxN3BYdmhXVzVLWnFlL1E0OU4vVVNUQ0FWV29RWEZJSEJIWFhlM0ZQclVEc3VHRG10Ri9oSEtUSHBla3hoaUFPUEkrU0pxNlM2SEY0STlZV3prQkpUbzQ2aVVNeldwOFBpci9SaWR1THhLWXNTa3NWOHZMbE9RdmhHWDJZbFIwT0JoQmpDK3UvZ0VjdlkwQXBLN1lrNDFOeGpQU1FuV0ZIVEY2NlVyamdldkI4Q3U1YStsMnZZU1JQdHVWRG83M2hoZE1TSG5VWDd0VGpzVlpHeEFsL1dwdGlPSUVRMWduTDI5bVg2L3RSMXRtbGtZajhXNFgrQ1NqV2NVREdZMU5wUy9DN2hTS3FpTUxNL2wyUW1TV1o3M0RkeitnaW84QkNFTllQUTQ2cW5rendYVWJxdkJreGpVUXNXZlpGZ2J1bzNyQWYrd043ak9POTAreW54NFBpM0wrMG5ZTDFTY2hEVWdBUDRnUFYvN0lkMXErMUhTaG11R2tJcVdSUGd5eE1GcVA4SGZqVG5qWHdZNWJRZmJKY3Q2T0l6S2dNSG90Ri9IZTFlZ3NheEhTcUc2d2ZkbVE1eDhOeVRGRnFCY3AyaVNvd0hSM3lrNSszNmhGN3ZYQUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzFfUFJFIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiJlZTg4Mjg3OTcyMWM0OTEzOTc3NTNkZmNjZTk3MDcyYSIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlfSwibWF4TXNnU2l6ZSI6MTIwMCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0Ijo4LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjEyOCwidHJhbnNwb3J0cyI6WyJ1c2IiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotOH1dLCJtaW5QSU5MZW5ndGgiOjQsImZpcm13YXJlVmVyc2lvbiI6MzI4NzA2fX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjAtMDUtMTIiLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ill1YmlLZXkgNSBTZXJpZXMgKFVTQikiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDE5MTAxNzAwMiIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4xLjEiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMyJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMC0wNS0xMiJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjAtMDUtMTIifSx7ImFhZ3VpZCI6Ijg4NzY2MzFiLWQ0YTAtNDI3Zi01NzczLTBlYzcxYzllMDI3OSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiODg3NjYzMWItZDRhMC00MjdmLTU3NzMtMGVjNzFjOWUwMjc5IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlNvbG8gU2VjcDI1NlIxIEZJRE8yIENUQVAyIEF1dGhlbnRpY2F0b3IifSwiZGVzY3JpcHRpb24iOiJTb2xvIFNlY3AyNTZSMSBGSURPMiBDVEFQMiBBdXRoZW50aWNhdG9yIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlCOURDQ0Fab0NDUURFUjJPU2ovUytqREFLQmdncWhrak9QUVFEQWpDQmdERUxNQWtHQTFVRUJoTUNWVk14RVRBUEJnTlZCQWdNQ0UxaGNubHNZVzVrTVJJd0VBWURWUVFLREFsVGIyeHZJRXRsZVhNeEVEQU9CZ05WQkFzTUIxSnZiM1FnUTBFeEZUQVRCZ05WQkFNTURITnZiRzlyWlhsekxtTnZiVEVoTUI4R0NTcUdTSWIzRFFFSkFSWVNhR1ZzYkc5QWMyOXNiMnRsZVhNdVkyOXRNQ0FYRFRFNE1URXhNVEV5TlRFME1sb1lEekl3TmpneE1ESTVNVEkxTVRReVdqQ0JnREVMTUFrR0ExVUVCaE1DVlZNeEVUQVBCZ05WQkFnTUNFMWhjbmxzWVc1a01SSXdFQVlEVlFRS0RBbFRiMnh2SUV0bGVYTXhFREFPQmdOVkJBc01CMUp2YjNRZ1EwRXhGVEFUQmdOVkJBTU1ESE52Ykc5clpYbHpMbU52YlRFaE1COEdDU3FHU0liM0RRRUpBUllTYUdWc2JHOUFjMjlzYjJ0bGVYTXVZMjl0TUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFV0hBTjBDQ0pWWmRNczBva3RaNW05M3V4bUIxaXlxOEVMUkx0cVZGTFNPaUhRRWFiNTZxUlRCL1F6cnBHQVkrK1kybXcrdlJ1UU1OaEJpVTBLendqQmpBS0JnZ3Foa2pPUFFRREFnTklBREJGQWlFQXo5U2xyQVhJbEV1ODd2cmE1NHJJQ1BzKzRiMHFocDNQZHpjVGc3cnZuUDBDSUdqeHpsdGVRUXgralFHZDdyd1NadUU1UldVUFZ5Z1loVXN0UU85ek5VT3MiXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBTFFBQUFDMENBTUFBQUFLRS9ZQUFBQUFCR2RCVFVFQUFMR1BDL3hoQlFBQUFDQmpTRkpOQUFCNkpnQUFnSVFBQVBvQUFBQ0E2QUFBZFRBQUFPcGdBQUE2bUFBQUYzQ2N1bEU4QUFBQytsQk1WRVgvLy8vdzhQRFgxOWUrdmIybHBLU2tvNk8vdnI3YTJkbjE5UFg2K3ZxN3VycDZlSGhmWEZ4R1FrTXNLU29qSHlBekx6Qk5Ta3RvWldhS2lJalMwZExZMTlpRGdZSDgrL3paMk5sNGRuY3hMUzZYbFpXNnVibjQrUGpvNStkNGRYWWxJU0k1TlRhdXJLMysvdjY0dDdjc0tDbFpWbGZ2Nysram9hSGs1T1E1TmpmcjYrdmczK0JsWW1KV1UxU29wcWZIeHNZbUl5TTlPVHBTVDFBL1BEMDRORFY4ZVhyVzFkWDgvUHplM3Q2SGhZVXRLaXE4dXJzdkt5emo0K1B2N3U1ZlhGMW5aR1hSME5Fbkl5VGg0T0QwOVBRckp5aGFWMWptNXVaK2ZIMUVRRUhGeE1US3ljcTN0YmFpb0tHTmk0eTJ0TFh1N2U3R3hjV3hzTENlbkp5Umo1Q21wYVhRejgrUmo0OC9PenpFdzhTV2xKUlZVbE1tSWlOVFVGR1VrcFA5L2YzSXg4ZUlob1pIUkVWa1lXS2tvcUtlblozVTA5TmhYbC9UMHRKS1IwZDdlWGtrSUNHQ2dJQnNhbXByYVduVjFOUXFKaWRyYUdubDVlVzBzN05YVkZUczdPeEZRVUwyOXZZK09qdDJjM1FvSkNWY1dWcWFtSm5NeTh2TnpNeWJtWm82TnpqbjV1YzNNelRwNmVsWVZWWDcrL3RtWkdSaVgyRE96YzFTVGsrVms1T1BqWTNxNnVvME1URnRhMnVCZjM5TVNVcUdoSVZlVzF2THlzdXdyNitxcUtpM3RyWTFNVEx5OHZMajR1SmJXRm5LeWNsQ1B6OHBKU2FxcWFsSVJVYmMzTnlzcTZ1eXNiR3pzckoxY25QZjN0OHpNREV1S2l1Wmw1aWhuNkNjbXByMjlmWEp5TWhQVEUyTGlJbjM5L2RkV2xzOE9EbHpjWEZ5Y0hDQWZuNVVVVktYbHBaTFIwaDBjbkpZVlZhNXVMaERRRUNRam82Zm5aNUpSa1p4Ym05allHRXdMQzFNU0VsbFkyUHo4L05CUGo5UlRrN2IydHJEd3NKUVRVMnBwNmh3Ylc1T1MweUxpWXBnWFY3UHpzNzUrZmxxWjJneUxpODdPRGpDd2NHZG01dUpoNGVycXFwQVBUNm5wYWJRME5DRWdZSitlM3p4OGZHdHJLekF2Nzl5YjNDRmc0U1NrSkZ1YTJ5MXM3Uzl1N3l3cnEvRHdzT01pb3VFZ29QYzI5dVlscGU5dkwxOWVudnQ3ZTNkM2QwMk1qT3ZyYTdwNk9pZ25wOXBabWQzZEhYQndNRGk0ZUZHUTBSL2ZYNk9qSXh2YkczVzF0YWMxMlY0QUFBQUFXSkxSMFFBaUFVZFNBQUFBQWQwU1UxRkIrSUpHaGM2SEkwdDhtQUFBQTJUU1VSQlZIamE3Vng1ZkJSRkZpN0NIVWthUkF5M3dVQzR4SkFBUzdqQ0VRZ29rVlBrVEJpeWlrQ0d5NFVWQ1VIT29JYVFjQ2NZZ3NncHl4RkFFVGNDSWdSdzVVZ011QXJveGd0V0ZQQllWMTEzZjcvTjFPdWVldFZkM1RNMUVTWi85UGRQcHQ1Ui9hVzd1dnBWMWFzaXhJWU5HelpzMkxCaHc0WU5HelpzMkxCaHc0WU5HelpzU0tOU1FPVXFWYXRWcitGdkhsNmladUE5dFlLQ0ZSVzE2OXhiOXo1ZnE2cDNQMFBJSGFSY3YwRkR4WUNnUnI3ZDhjYW9qaVozakhMVEIwSVZJWm85R0ZaUlNUZHZvWmdpdkdYRkpOMHFWTEZBVU91S1NMcUtZbzAyYlNzZTZZZGFlQ0N0dEt0d3BNTWU5c1JaVVNJcUd1bjJPb0tSVVIwNlJ1cGtuU1E3Mnp0TytnSE1MdmdQbmFQTFpDRmR1bmJqV0hldldLU2I5RUFYaUlweHkzdjJ3cVI3Vnl6U2ZWRDlzWDJSb2w4ZHBJbVQrOFRjYWRLQnFQNytuS1lldnRVREtoVHBxcWorUjNqVm8wZzEwT2paTXY2eFFZTUhEeG9TUDFTUzlJQmh3eCt2TytLSndKRSsveitqVVAyamVWVkViNFl4T3JlQXNlTVNOTGZReFBHZHZTWHRtSkQwUjlib25ueEs3Z2xxbUlnYndXTmVPajA5U2QrVDE1cnNGZW51VS9RZGJISlRIMGczeDFVNHAzcnp4TnBPY3lvR09LZWpqNzBKNlJtSlJqOWxabEpOYWRKOStDb2FQaFB4Snc4ZW5hTVVJYUpZR3hHVG5tVVNMOHorc3l6cEdzYWFucDFhYlk2NVErTmd4UVRCalMxSkR6YnpVNTZyTDh0NnJxaWFsSG1wOWNUbTgyTk5yNjJrUEc5QmVvRzVuN0pRTm82Y2IxWlRtd2VHVkRKWUwxcHNjVzJsMlJKVDBnTVRyQnlYcGtteVhtWmVWOElMTC9LMmpwZXd1bHV2OU9YaE03RmtkcGdKNll3VjJLeFQ1dU5aSzdtUnh5cEowcFZNWGl6QTZqWFlkaTNTUks2anNWL05WTnlYckRjaC9RaVNaTU9keUptT1pMRWJKRm5mdDBLeHdzdTVic3VRalV5Y0Y2aEpONkVuLzRwRFNIb0RlaE1XYmxiOW9oc2dzN21TcEVucmxaYXNsZkdhNGF0SXVJWDU0dy9VVmlIcGJlZ0JiV2VPOXpKeHdrT3lyT2VNMkdISk90a0JkaWhjallwRzdtaktwTGVJZE5wT1ZzNUUxMzBSMmIwbVM3cnN1cnRHVzdIK0N6WGFuY2NramJEM0tpYmZtU1lndlFlVnVYZGtMNU92bGlkZDFsNkhXelNTdk9vdWsrN29hWEpmc2I3SWRJK0E5RDVXbk1KZGRCMjZSTDR2ckFtSmlaaGUyNFQxZnBjK2laVVA4SjdvOGFjTFNNOW14WU9jM3d4a09OODMwbVZ3OUVsL2VhYUF0Tk1WUTc3T3lvbThXeERUdkNFZ2pUcWRmWnpmVUdTNDNtZlNMalJwdi95UUlZNTdzMHhSaXhXZjRWMzJNODAwQVduMElBYnhqbkZNODFTNVNMdlFPajJJSiswYWloMW14YW04K1Z0TTgxY2o2WHhVTE9BZDMyYWFJK1VtWFlhalhHajBOdDhJa25qYmUvaUdveU9kZzRyVmVNZGpaZzNIVjh6SGpidEZtU0NjRmQvaFRZOHpUVzhqYVlLNlN0MWsxYnRNTTlGYlh0RjFUakRzMFd0UDRsdGRTRWdtM3dnUVVNTkpGcEJHMFEzZkNQb2h3eTNFV3l4RVhsbDY1U2FrZEpZTmlySlk4UlJ2aVQ2b3l3V2tUN05pQTg3dkRESWM1alhwcGNpcm8xNDVIQ2s3RVM3MDREOEZMWkZoZ1lCME1pc3U1YTVRZ083S1VPSXQwR3V2S08vcGxLaGZWdjVXVm02TE9zSk4yRENWeVdNTEJhUlIyZGtGTzZKM1lhL1huTW43bUhURDZwd3VCbjhlenhMK01aOURoZzRVdDRRVEFlbCtxQ1BLUW81OTBWMDQ3ejNwSE83ekY0V2ptYzZkc0lvT1doc2hBUnJUWUk0VFJhVEpCVmJ1VWNnYzcwZDJSZDZUeGoyQ0MzVmUzVkRzRXM4cCtDQVB5MnZUeVltY0VpYTVlRWFyb2dnOWtlemRRdEo0SURvN1IzT3Nna1pjOHlRNGsxekZnQldIbjMxWEwxTWY2bGdrMmpFU1pKZnduTUtIUkVnYU4xNWxwUm9oanNjWGtBdVhraFV2c0ZoZGw2dUJtMHhrNHQ4ck43Ly9IQjZnWHN3M0lUMEREOFozVG1yVS9xTzVIK01MUENuRm1mU3pITmVxY0UveXhjZGFtYVVVRVJQUzVFUEwraS9LVGpLTkxGRThBWDBScWxyWlhTYW1wTWxaQzcrOEs1S2NDYW5meGdQbnEzZ2RJTW5jemgxRmlValA2Vy8rZ0xaS2N5N3JrTTlaVVk1c3hGdEhtTFNRV0JZTENlZnkwajR4dVVEMkdxK1pZamdpc2swNWp3dlFXK2NlRU5rZFlOTWpabE85VCt3VU9YYVFYOFpXOGVrUjhXajgzRDhFUzBURnV6cnA3UllmTFVZR1pwUHFQWk1NYzdSVEdudWlab1d3K09UbmRCV2VXbVUyQjV0LytTUzZmTnlUVlhaejZwRm80WU9mV3N4NGN5bnEvTElQTnZZbE00Tkh5NEVMN3NtYzlQQ1VPdjE3Ynh0VjJ0UFN0dmhTNnFyUDl1Ly83UFBVVXJrRm4wcER4bVpsaGsrYXUrL29TRWU1R2R1d1ljT0dEUnMyYk5pd1ljTkdoY1hsY0JlK01ORnVvZHJ3L3I2dlRONFIxS1ZEekMvRnlxM3FLSFNYdjFsS2tQNUs1ZHpLM3lRbFNLK0hQR3BuVlg5emxDQmRvSEord3Q4VUpVZ0h3cHlkODMxL001UWdmUTA0aDI3eW9VNS9rYTZjQXB4ZjlUYy9DZEtsc0V3VStxQy82VW1RdmdTY0U2NzdtNTBFNlgvQzZtTENjSCtUa3lBOUVQSmRFbnhaVmZBWDZmYkFPZklyZjFPVElMMEhwc3NqVFhQdHc5WWtUUjgzdXMzZWRzbHIwWkl4Y1RSeFFaeWVXMHgxckR4ZzJMcXZ6NDQ3bmpYeFd2WDgzNE4wTGl6QXhqWTNzYys0Z1hKRThrNnlIUTdmVUVtVVErQ3ppQzZRdWxQeTRsRUdseEo4dmhLUmhvNzBHdGovRkd1eUZCSjlGTzlBY3VGMWQ1NEc1STZNRVhoOWkwUEZDZUc2R2hxTzNVMGt3Wk4rSGppbm1Held5dGlyR0xCRGk3VWhUL2tkZ1J2ZEpSTDNLZjFkV2JCak0wcDJ3WllqWFFTTFppazN4Yll4cDdSbWNmcFcwb1ZtYW1Hbm1rVlJUSk9DNG5JTWJwT3BHZVErZGxGekJmTGVycld0M1dFdHMzWmVOSkVDSmowU25uMWVOYkhwQm1qTm9lYzd3K3QyK3pva1RmU1lBZnJQYWNrWUZFSmFSN3pyWnlHa3lZMityTzRUdWJJTThsUys5cGwwSDdnTGVhVml5K2hEVkwwUVpaVTFuVWRGaDJHLzRuZTAwRUh2Ri9LOVN4eEVmLzlBVFdhalBtWVBEY3ljN3hFWk1OS1QxWWVWTWtOc09ZSnFlM0VyZFE1d2gxUmxBc3ZmMytqOGJpSVRldE5MZnNUcWYxRjFKcEdCbS9UVDdteUVSNFZ2OHhrNkp2aitVOTF0cEM5WnR3eGEyRXJkZGRtUlpCcTlFOURKMEwyeFAvSDZEaTVaYlljdnBEdWpwSjV0SXNOL1U5VVBldkY3VkF5TC9qWHBFcnR1Y3l1a1NjRkw0NkFmZ1JGOERWL1FHcVN5SjFUU0FWeUN2U0JTV2tJRDdIQ2pvcDFMdmhGK1ExNEYzL2RFVUJuc0RReWgvZDFadmdKSXNoOVBKQUNrejhFT2pMeXhNQzdjMmRkZ2Q4VHNmbHlpQ3NoQmVJajJCUjl3ZXByeGZVcGRBNmZkNVBmOGduaklWaGVrWmxicW9odWM5N09XV25YYUVFUFFiVGtsRG1NRmJYRkRwb25Vc1RpWjhSY25hejZFUUFjMFZiSmJ0aUx0NnVzYzBJa1ozcVpDT2dVaTNDQzhHTFdiSWRUNUtOTFNGaHVab1piVUhWekhxNU55Z1pHR2I4b1N5RmZSZDV6WHFQUnhVUTEwSTBrM2VBWnA5RDg0Z2JRYnVmNGlROHYyTzVaK1JYYS9sb2gwU21VUVZJTnYxR0krSG9Ea3gwdHRCYmhGVmVxOTIwY0xNOXgrejlOeXFidU1EbDZZT1c1VndlM3lrZFk0RTNJREJCZTQxK1dxNGdFcUwyakNXVzQvK2gvaGVQVnozdTNYNU92V2VTVldwRkdNVkZQTncxcUF6VDd6UkZvYm05SEdza1BiZ2xwY1l1aVl0elRUZWJiNHBBdVJCSkJPdVlaRTI5V1lHcDlaYzhFVGFTMU9nazI3MnJCbnZhdVFzSWk3WXRxc3BUcGY1N0lBSWdVZ3pYLzZJYXhSVHZWam9wT2VTR3Q3cjBMb2pUeXVsdWhtUjJOT1prQlNJcDhvRjN5TnlFQTQ3M0VRcW5xZFNlaXUxdENZREZPNDQ1WEI5T2JDSHRDaGxGcWc2THI1RThiM1FxZEVKTHhJSkNBa1hVUGRBOFFtbUdCUG1UZUhITFdtbitwdjZlOUJycC9OVEEvYUNMbVNXa3ZMKys0b00rWVNUNHROaHFtOGJ1N05nL0JWOE9wMGtoZGNsaEErMDlSMjZ3RC9sNlFTL1EzeWxiU1doWHRPNndiVzBPSW4zdFFJWjBLNG9wVHQ5QzN6dEJOMU02UW15bVFqbTVBT2V3RlkzMURMTmVrTVRxSTNOVWJUVWRsVm9xWjExL0xvc0ptMi9CM2xKMDF1UTNmcUxGWExOQ1pKRWQyMVdSUExnSWVWTkNCczR5Q0Vubnd3aENuKzQzNEdQR0NNWDB5OGh1bEt3RUFZNjJlcnNRNGtUazh6MnYxSW8xbThYakNBQmxjVFlQb21HeDExUU45TDVUZERGWkR2SzVFb2E3N21jaDRheUdyNG5NK0I5OFdZTnZ3Yi9hcjF3eUk2TGtpR1FXVlhKQjlEcXpoaHFBSUNCNGs0eEp4MENBUy9kQ3VpMi9DMFBxTjFOeDFydjhYSjZGQzJkdHF2cmovNEU1M2ZUWHhMNlJjeVZpSlgxbUpKTGdhbUZDSmhtMFVHRE1oMEhWZ2E3SENld0FrZE5NT2FUb2J4NHpQWW8zUklkejdFQURybGVjeDd6cGFMbjBQVWZoOG1SOVdzNkt2NFcrSDRrc3ArMWQwbEd2blRscjJXazZ2N1hZNXpuNXRpMktpVS9qdVIxalpIL2hkSzZ1NlNZKzdiR3JiK0JKV3MySzd6YTZvbFNaZm8wcFRWTXk3bVhXTC81WnFYcVdpbXAzTkZ2Q2Fkcng0d0ErdHl4ZHBaRHg5MzNUTGhmejlYcWZzS0ZPT0tESTY5VlV2ZHRsYlNVOXVnc25IOFYvRjlseFJ0ZlZNN0pTeFZnck0xYVZJUFZsK0N2Nk9sRU9HK2oxQkJRRlNxNmd5cDduMU50bm9za3hycldwUFc5cldzaEo3Zk1TTE9jTGsyc3dSdTZzYTVRMGJOZHRIQk5Vb0R1Zkc1QjlMa0ovNDV0NTdHWDIzSGdueWgyMVNxL1VqMC83VFNIMnlTa0NsN1JPWk5laWFtZVloVjZRWTF1T3FleTlpYzdqN0FxOFd4STRVbWJzKzY5RDNFWjkra0ZTejdtQjBVVi9LRzdOa2V2bUZSN3F5am96YmxOalgvSEVCUWVNdThpdWlZOXB0KzY3cXJlMEFPcVRDQXJ1MXBmOU9Rd28rMDAzbkozelRrQUVmVUJKYS9vcnVJWEJyVkh5Ny9icUc3Z2R1MDZ3cTdDVkZzQlY2bXhpaFNObDU0NnlkMTNTN0k0Vzg2M3BKbWlKUGZ6ZWwzMGs1dno5N3pPeGpwRks4UHZ2QTdma21FT0RyMFlFejVLN3Q3S0x3eXB2bkFMdm4rcG1IRGhnMGJObXpZc0dIRGhnMGJkdy8vQjJaSElKNkRtNlQ4QUFBQUpYUkZXSFJrWVhSbE9tTnlaV0YwWlFBeU1ERTRMVEE1TFRJMlZESXpPalU0T2pJNEt6QXlPakF3ZnpQWWRRQUFBQ1YwUlZoMFpHRjBaVHB0YjJScFpua0FNakF4T0Mwd09TMHlObFF5TXpvMU9Eb3lPQ3N3TWpvd01BNXVZTWtBQUFCWGVsUllkRkpoZHlCd2NtOW1hV3hsSUhSNWNHVWdhWEIwWXdBQWVKemo4Z3dJY1ZZb0tNcFB5OHhKNVZJQUF5TUxMbU1MRXlNVFM1TVVBeE1nUklBMHcyUURJN05VSU12WTFNakV6TVFjeEFmTGdFaWdTaTRBNmhjUmRQSkNOWlVBQUFBQVNVVk9SSzVDWUlJPSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIl0sImV4dGVuc2lvbnMiOlsiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiODg3NjYzMWJkNGEwNDI3ZjU3NzMwZWM3MWM5ZTAyNzkiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWV9LCJtYXhNc2dTaXplIjoxMjAwLCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxXX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIwLTA0LTAyIiwidXJsIjoiaHR0cHM6Ly9zb2xva2V5cy5jb20iLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IlNvbG8gRklETzIgQXV0aGVudGljYXRvciIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMTkxMDAxMDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjMuNiIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4wLjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjAtMDQtMDIifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIwLTA0LTAyIn0seyJhYWd1aWQiOiJmZWMwNjdhMS1mMWQwLTRjNWUtYjRjMC1jYzMyMzc0NzU0NjEiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6ImZlYzA2N2ExLWYxZDAtNGM1ZS1iNGMwLWNjMzIzNzQ3NTQ2MSIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJLWDcwMSBTbWFydFRva2VuIEZJRE8ifSwiZGVzY3JpcHRpb24iOiJLWDcwMSBTbWFydFRva2VuIEZJRE8iLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9LHsibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjAsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MTAsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6MCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQmFEQ0NBUStnQXdJQkFnSVVKVXI1VEJMK1IvckZmelRmR3E4dERkYXdBd2t3Q2dZSUtvWkl6ajBFQXdJd0lURWZNQjBHQTFVRUF3d1dTMlY1V0dWdWRHbGpJRVpKUkU4Z1VtOXZkQ0JEUVRBZ0Z3MHlNREEzTWpnd09UUTBOVEphR0E4eU1EY3dNRGN4TmpBNU5EUTFNbG93SVRFZk1CMEdBMVVFQXd3V1MyVjVXR1Z1ZEdsaklFWkpSRThnVW05dmRDQkRRVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCTUtJMmtHK2ptQTdIYVdvcFBkbnZoQndSY2JxZyttSlJTYU9oU3FkQmZJMDBzY0l4Mzl5ZWhzNE5DSUVkemxPZ0NFdHdIR2hURnpJRkFYYWhnU2hVcGVqSXpBaE1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdDd1lEVlIwUEJBUURBZ0lFTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUhNOVc5b25DSENJeWlsd0JWa1YrUlUxRHNUSk5pYmZ4YTZWL0hKRlBlUVVBaUI2OXFPL3c5YnhlYnErWmQ2QnRrU1hqVDNIS2ZOZVhZUDdQOWIvd016cGpRPT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBTWdBQUFESUNBWUFBQUN0V0s2ZUFBQUpWRWxFUVZSNDJ1MmRUVzhXVlJTQSs0LzhTL3dRZG5ZbHJLUXI2YXFKQzQwc01NRkVEUXNXSkRZYVVqUWcwVkNKUkFzU0JRb3FSZHF4WitLUTZmak96TDB6OTl4N3pyelBrMHlrV05wMzJubmVjKzQ1OTJOakF3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUtJNWZ2SFRZZnZpSndJck9icDF1M3I1NGNmVjRkYmw2dW41emJmWGkrMmQ2cTlyWDFTdjc5NnJ2SXR3OHVoR2RYeC9wenIrL3YzcStOdDNWMThKSkxuNyt5L1Z0ZjI5YXZ1N0c5WEZiejZyenQvOHBOcmErN0wrK1ByUGQ2cURsMC9QTGUzNWtmdHEzNjljbTE5ZDlYL1BmMSsvVVQzYnZIQkdpcjdyK2NWTGJrU3BqaDYvYy9McjU5WHhEeC8weTVCWWtGdVBINXg1UUlZdStUejVmTzlpWFBueDY2RDdsVXRrMlgvMm00OTdmbk53Y0U0ZStCQXh1cGRFR3F2M1ZVc3hGQ0dVQkpFSUVmcWdkQjhhajJLSTNCSWhwdHl6UkJUejZWUm8xT2k3SkJVemxUNDkrR2k2RkRNRWtkUmg2b1BTVGtVOHBTQ1NQczY1WDdrazhwaU5ISFBsc0NKSlBiQ1dNVVVLTVNZS01qVnllSlVrSnFVYXUwUTBjemZZSFlUUHZXUU1VMFNPMUdKTUVDVGx3K0pCa3RUM0s1ZXBNWW1rVmlubGFLNnNZd3lwUkdtSUVTbUkvR0pUUHl5V0pkR1F3OXdZYk9xZzNFSVVrYXBVZEVWS1VSQ3RCNmE1TEZXNHRPL1Z4QnVDakQwMDVHakt2NnBSNDQrOTZ2ak9lL3B5UkFneWQyRHVSUkp0T2N5TVJWN2QzSzIwQk5GTXMrcXliUTR4SWdUUlNxK3NTWkpERGpOcGxxUkJtb0w4czUvK0Y1bXNkT3RZa0ZLUzVKS2phWm9pU0d5VktzZDRZNklnMHVqS0tVaHVTZVFkUGZmOUlZZ0hPWXhHa0p5U3BPcnJ4Rnp5UFJIRWd4ekdCZEdXcElRY2pFRml4aHdQcjVhVjQvUUtmYTJsQk5HU3BKUWNadVptV1JkRXZRRVljRWxSd09JZ1Zuc3VVMGs1elBSQkxBdFN6NmtxTEVmc05CTlo4MUh5b1VvbFNXazVUSXcvekF1U3F3azRGRDBleGVmQkphbzlLU1VwTFllcHVWaFdCU25TNitqS2NUcjJtZnB6emRGUjE1REVnaHltcHJ4YkZNUkNhaVhUV09iOFhFdFd0S1krYkNYNk9HWlRLOU9DRkU2dDVzclJrR0xSVkc1SlNoWVp6TWxoVVpEU1ZhdFVjaURKQXVTd0tFako2QkVqUjh4MlFFamlWQTVyZ3BTTUhpRnk5QzNsclFzS0k3SllrU1RtWWN3aGlXazVyQWxTS25xRXlCSFN6UjhyQ1NPSmt3MGFMQXB5OG1UWGRGcVZxalRzVVpJVXU1VzRsTU9TSUxQMnJNb3g1a2pZUC9Fb2ljenpXanM1ckFoU3J5dlBLY2RwS2lmZlU3TjRnQ1FMa01PS0lGbVh6d2JLMGExUzFSSkhScm1RVHJ5RnpuVXVTZHpKWVVXUWJPbFZxQnp0dFNlZGZ4TzdMZ1ZKSE10aFJoQ3JjaVNTUkQ1L25TVnhLNGNGUWVxdGV5ekwwZk0xcEtUYlhFSENCRFFWTFVnaUd5V0Vyc01Ja2NTMUhDWUUwVjR0R0NoSFVKUHlOQlVjTERRTWlSTFlkYmNnU2N3dWprUEZCdk83dFhzUVJIV3RlVVMxYWxTUUZWOUxlamZkdit0TDBXSitKeDRsYVRjVTVmWEx3ckdOSlZCY0VDT2wzTUZHWlRlOTZxNVZFU2xhRWVMTS8rK09Yd0xuY0htVFpMRXNVcENBUVhGd3V0ZDZ3T3MwYXFBZjBtNDgxbDlyYUhEdlpPQys5cEtVRkVSbFlWUkE1T2crNlA5N3NGYzh4R055akhYblE2cGpTSUlnNm9LRXJDRmYxWGRwLzd0YWtnbHlySkprZFBBK0VrbXNyRXhjVzBsS0NxSXh2WDNPWUh4VlV5OVdqbTdWS21RUzV0aWNNQXRScEpFRVFUd0xjbjluUEhxTVZNM2Fra3lXbzdXWFZsQ1VISG5kRnRhS0w2YXZzYzZDeUp5dUZGMzczbXJWUkZsRHhrMWE4NThXZmZJVGdwUVZaTTU1aDAwa0NwMnA3Q1dDSU1pYXAxaEpCT2xFaE5IcE5DT3ZXMlBCRWlrV2cvVHAzN01aWUUrWko5WlR1aDM2V2pLUUgzck5NaitLUVRwbDNueGwzcUdCZDZmc0dqVlhiRVZqc0Qzb1h5bkp3UHd1eXJ3SW9yS0RZbXlqc0s4eEdDVkp0K1BlU3VWNkpRbG9GRnFJSGpRS2x6YlZaRW8zZmNWRFBQcnUzNG9DbzlOUkpreC9vWXVPSUJ1VzFwMnZFbUZVa29pT2U4dzVJOGlCSUxOTHFha2w2VXY1dWgzMnQ0dWx1bE5LeHBxS0FWVTJLM0xFYnVnbTFhMW1YUWpUM1ZNdW1OTGVzQ0hSbXBDeGQvK1FkZlVoRWNTYkhFTUxwaFpSRW1iSmJWd0pXS0pKSFQyZTdOYi9QVFAyR0pKa2dldlNRN1l1WXNudE9temFFRm5halpWREhyUWx5c0dtRGFrRXlYWEVzNHdSQWxiekpaVWtRQTV2RzhoTmVjMXMrK05sNDdqUW5keG5TcUwxb0htVWc0M2p2RzA5cWlnSmNyRDFxTTdtMWJuU3JOaGpEMktudkFla2NPc3FCNXRYenpuK0lFYzFTL0Zza0ZCQlBKNDJKZXRSVXI5bTh3Zm5XQk9ramlMZUQ5QnhzcU43ckJ4cmU3cVVOVUdzSDhGV1I3bWVNdTVTSXdkSHNIR0lwL29obmpKbEhUazR4SE1aeDBDUExGNkt4Y3A2Y3F0eWNBeDBwQ0NoODVwVUpYbVladVVjY2l4QUVwT0NLQzJreWltSnpHYjFKb2VGMTJ4T0VvdUNUT28vR0pQRTI1akQwb1JKVTMwU3E0SllTTFZDdHhMcUlsdmpsSDdJWkNlVXFUOTNDNUtZV1U5aVdoQURxVmJNNFRkTk9iZjB3eVhqaUxuUFJXbEpaQzArZ29Ta1dnRjcyNnBmZ1NzQmhmWkJNbDdsc0NLSmllVysxZ1dKbnVxaGRJVysxcEs3a0tTVXc0SWtKbzV3OHlDSUNVa0MwNndseVZFNktwclk1dFNMSVBXWXBNQ00zeGhCU20zeXBpbEhTVWtReEZQNTE2Z2dPZVFvSlFtQ2VFcTNEQXFTVTQ0U2twZ1E1TlhOWFZWQnRGNTM5amxiaHNZZzBvUXNJVWR1U1V3STh1Ymc0SnlXSElkYmwxVnZzTzZUNUpyOUd5aUlkaFhMeW02SE9TUXhVY1VTbmwrOHBDS0lwRzg1WHIvcTdveVJnbWllNVdGdEsxQnRTY3pjNjlHdDI4bmxlTFo1SWF2OWRVTlJNNXBFZE5QWGFaOWNMVW5NbldRbDZaREg2SkZ0QUI4aFNPb29ZbjBUYVkwajRzemRyNHhGNUYwL2hSd3Z0bmVLMmw5dkk1UTY3WW9RSkdVSDJzc082eW5Ya1pnWmUyaElvajB3THhaUklnVkpJWW0zNHdkU1NHSitTeUNSWkdxNjllZVZUODNlWEQxR21kT0pueUNJTUhYcXU1dHRjVHJJTlBXcGEySE1SbzYrQm1Kb05KR1VTcU1ocUNwTGJBbzJVWkRtblRXMC9DdWZWN0xIVVdMdzducHo2OWQzNzlXUlFTUm95c0VTWWVSamtVZ2lqdWRmcER6NDlYRUdrb29OU1RORGtBWkpsMlFBTDFHbFNiOUVDUGxZL240eGg4NTAzaHhFQUxuSEpyTEluK1h2WEVVTVdESFEvMjlybnhSeUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnRy8rQlFCOWQ4SDU5Q1pJQUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzEiXSwiZXh0ZW5zaW9ucyI6WyJobWFjLXNlY3JldCIsImNyZWRQcm90ZWN0Il0sImFhZ3VpZCI6ImZlYzA2N2ExZjFkMDRjNWViNGMwY2MzMjM3NDc1NDYxIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6dHJ1ZSwidXAiOnRydWUsImNyZWRNZ210Ijp0cnVlfSwibWF4TXNnU2l6ZSI6MTIwMCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMSwyXSwidHJhbnNwb3J0cyI6WyJ1c2IiLCJuZmMiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fV19fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMy0wMy0yNyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IktYNzAxIFNtYXJ0VG9rZW4gRklETyIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjMwMzI3MDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjMtMDMtMjciLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MX1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMy0xMC0xMCJ9LHsiYWFndWlkIjoiMzBiNTAzNWUtZDI5Ny00ZmYxLWIwMGItYWRkYzk2YmE2YTk4IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiIzMGI1MDM1ZS1kMjk3LTRmZjEtYjAwYi1hZGRjOTZiYTZhOTgiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiT25lU3BhbiBESUdJUEFTUyBGWDEgQklPIn0sImRlc2NyaXB0aW9uIjoiT25lU3BhbiBESUdJUEFTUyBGWDEgQklPIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfSx7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCIsImJhRGVzYyI6eyJzZWxmQXR0ZXN0ZWRGUlIiOjAuMDMsInNlbGZBdHRlc3RlZEZBUiI6MUUtMDUsImlBUEFSVGhyZXNob2xkIjowLjAsIm1heFRlbXBsYXRlcyI6NSwibWF4UmV0cmllcyI6MywiYmxvY2tTbG93ZG93biI6MH19XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJpc0ZyZXNoVXNlclZlcmlmaWNhdGlvblJlcXVpcmVkIjp0cnVlLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJzb2Z0d2FyZSJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJibHVldG9vdGgiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNEakNDQWJTZ0F3SUJBZ0lFZUljYkNUQUtCZ2dxaGtqT1BRUURBakJsTVFzd0NRWURWUVFHRXdKVlV6RVFNQTRHQTFVRUNoTUhUMjVsVTNCaGJqRWlNQ0FHQTFVRUN4TVpRWFYwYUdWdWRHbGpZWFJ2Y2lCQmRIUmxjM1JoZEdsdmJqRWdNQjRHQTFVRUF4TVhUMjVsVTNCaGJpQkVTVWRKVUVGVFV5QkdXREVnUTBFd0lCY05Nak13T0RBME1USXpOVEkyV2hnUE1qQTFNekE0TURReE1qTTFNalphTUdVeEN6QUpCZ05WQkFZVEFsVlRNUkF3RGdZRFZRUUtFd2RQYm1WVGNHRnVNU0l3SUFZRFZRUUxFeGxCZFhSb1pXNTBhV05oZEc5eUlFRjBkR1Z6ZEdGMGFXOXVNU0F3SGdZRFZRUURFeGRQYm1WVGNHRnVJRVJKUjBsUVFWTlRJRVpZTVNCRFFUQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJHRGd2VzdjbU51VGp6N3VrRUI0Y0xDUE53KzJlNU5TeHNoblNLTHVpbHJNZE1LNkpBWlZtSW5zQjVvbDdmT2E2YTFzdzU3Z2gxM050dTBkaFdyb21EbWpVREJPTUIwR0ExVWREZ1FXQkJUbm04TjgvSnZDZU5RY1Y3RXUyVU8xWFU0VEVqQWZCZ05WSFNNRUdEQVdnQlRubThOOC9KdkNlTlFjVjdFdTJVTzFYVTRURWpBTUJnTlZIUk1FQlRBREFRSC9NQW9HQ0NxR1NNNDlCQU1DQTBnQU1FVUNJUURESUZabmxUSGtvQlVBNEJ1TE4vQUI3N0IzMjkwS2tNYXpld3VaQ3c3c1R3SWdOdDlxV2dxMU5INnI3aFBHUGtwSHJDMmRVM202N0V1L1o5SkwxUVhiZW8wPSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFMUUFBQUR1Q0FNQUFBQ25CdDJSQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUE0UnBWRmgwV0UxTU9tTnZiUzVoWkc5aVpTNTRiWEFBQUFBQUFEdy9lSEJoWTJ0bGRDQmlaV2RwYmowaTc3dS9JaUJwWkQwaVZ6Vk5NRTF3UTJWb2FVaDZjbVZUZWs1VVkzcHJZemxrSWo4K0lEeDRPbmh0Y0cxbGRHRWdlRzFzYm5NNmVEMGlZV1J2WW1VNmJuTTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlrRmtiMkpsSUZoTlVDQkRiM0psSURjdU1pMWpNREF3SURjNUxqRmlOalZoTnpsaU5Dd2dNakF5TWk4d05pOHhNeTB5TWpvd01Ub3dNU0FnSUNBZ0lDQWdJajRnUEhKa1pqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWo0Z1BISmtaanBFWlhOamNtbHdkR2x2YmlCeVpHWTZZV0p2ZFhROUlpSWdlRzFzYm5NNmVHMXdUVTA5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5dGJTOGlJSGh0Ykc1ek9uTjBVbVZtUFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdmMxUjVjR1V2VW1WemIzVnlZMlZTWldZaklpQjRiV3h1Y3pwNGJYQTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzhpSUhodGNFMU5Pazl5YVdkcGJtRnNSRzlqZFcxbGJuUkpSRDBpZUcxd0xtUnBaRG95WWpGa1pUUXlOUzFoTm1Wa0xUQXlORFV0WVRZMFppMWlZMlk1T0dWaU5HSTRPRGNpSUhodGNFMU5Pa1J2WTNWdFpXNTBTVVE5SW5odGNDNWthV1E2TURCRlEwUkRORGMzTWpVd01URkZSRUkwTVRGRE1EYzVOek01TmtSR09ERWlJSGh0Y0UxTk9rbHVjM1JoYm1ObFNVUTlJbmh0Y0M1cGFXUTZNREJGUTBSRE5EWTNNalV3TVRGRlJFSTBNVEZETURjNU56TTVOa1JHT0RFaUlIaHRjRHBEY21WaGRHOXlWRzl2YkQwaVFXUnZZbVVnVUdodmRHOXphRzl3SURJekxqUWdLRmRwYm1SdmQzTXBJajRnUEhodGNFMU5Pa1JsY21sMlpXUkdjbTl0SUhOMFVtVm1PbWx1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2WWpSbE1XWTFNekl0TXpaaU9DMWpNRFExTFRneE9UTXRNVEJoWkRnNU9XUXdZalZsSWlCemRGSmxaanBrYjJOMWJXVnVkRWxFUFNKaFpHOWlaVHBrYjJOcFpEcHdhRzkwYjNOb2IzQTZNall4WVdKaVkyWXRZemcxTkMwek16UTFMVGd5TUdJdE5tVXdaVFl6TlRJNE1qVmpJaTgrSUR3dmNtUm1Pa1JsYzJOeWFYQjBhVzl1UGlBOEwzSmtaanBTUkVZK0lEd3ZlRHA0YlhCdFpYUmhQaUE4UDNod1lXTnJaWFFnWlc1a1BTSnlJajgrL0JRUG53QUFBWUJRVEZSRldsdGpMUzB3VzF0ZFRFMVRabVZtSXlRamk0dVNiV3h0VlZWWTZPam9HeHdiTURFeVJFUkxTa3BNTGpBeGtaR1ZiRzEzTkRVNC92Nyt1cnE4eXN2TmVucDc4L1B6K2ZuNVVWSldMQzB1bXBxY2MzSnpZV0ZpcXF1dGlvcU5zYkt6UVVKR2xaV1lPenhDd3NQRk1USTBORFUyZzRLRW9xS2xPVGsrcnE2eUtpd3VoSVNLWkdScmZIeUIwZExVRXhRVE56ZzVNalExMjl2YmRYVjVuWjJnS0NrcC9QejhwYVdvek0zUE9EazZ0YmE0VDA5VFBUNC9LU29zWVdGbHhjYkhDZ3NLYkdwc3ZiN0FSMGRNVjFoYUlDSWlhMnBxSlNZbWFXcHZQajlESmljcXg4akthV2xvUzBwWFoyZG96OURTWGw5bXVMaTZiM0I0T2pzOWw1aWN2OERDUjBkUWo0K1VIaDhkWkdOa2g0aU1YbDVnMXRiWEZoZ1lyNit4Wm1kdloyWm5hV2hwYjI5d1oyaHJIeUFmaDRhSVkyUm1mMytBcDZpcUVSSVFEZzhPTGk4dkZSWVZTRWhVSFI0ZU1qTXpLaXNyRHhBUGFtbHEzK0RnYTJ0ckppY25HQmtZKy92N2o0K1JiR3h3WTJKamw1ZVpMekF3S3k0dWEycHIvLy8vUzVZcE9RQUFBSUIwVWs1VC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy93QTRCVXRuQUFBZldrbEVRVlI0MnV5ZGkxdmFTTnZHRFFTRHhNVGlFVHhHRzlUU3FyQklMYUwxQUh4VVhVL0ZFMlYxZ2NWamxGQUsxdHJnL3V2ZjgweEFyUVlJOXQyVnZhNU9JT1JFK0hGenp6TXp5WkEwL1AwZlRBMi9vSDlCLzRMK0JmMEx1dWIwdHVtM0w1WFNiMDF2Nnc3NlM4UVVLcE5TNmt2YU5WNW4wRjk0SjErb25KeWgrUzkxQmQzcWNZcUZBbFVST2hNNmpkVVY5RnZPeWxkVjJyU3Z0TllUZEpkZ1pmbktRb1BTKy9hMzlRVDl0VmtVcXdoZHlJVFA2d3c2SUlyVjdGR29PNldGNnA3T21QNkwwSFZuRDhGYTNkUDFwblNYRHFXZG9YcFRla21IMHVIOVFuMHB2ZVRXa1JIUDZ3MWFWMFlzMUprOXFoY3VUbE9kZVZxUDBzN1FmdWFYUFg0KzVJbDZhbm4vUVh1WTZqQWovdWZxSHZxVTNxKzdFbEZQTFMvVVdXY2xJcXNqVG9lLzFwbW45U2hkWDlDNjRuUm9QMTluMEdKMWU0VFA2d3g2UmxlY3p0ZFY5T2kwNmlvUkxWMTFCUzNxQ25uN25mODFwUUg2c3E2Z2Y2TjBsWWdUVGZVRXZWM1FBMzA1TVY0bjBPU1k0cVJUajZjdlQ5dnFTV21QMDZWRGFjdHBTeDFCdDNKOGRhVUxJY3U1cmJWK29EdE52SjdtMXI0bDNGVS8wSC9zdS9Wa1JJdGw0a3Y5UUUvcGdVYWxQeC9VRFhTcnpTSzZkTlR5TE9rSmMydTlRRGVsVTFDTVYyOEVYSUkvT3VzRnVtMGlyYXZ1WWJGWTV1ZnFCTG8xdUs5SGFRaDVsdlJackxVK29KdjJMU0ZkU2wrbTkwNC9OOVVIOU9HK0phVXI1RjFhVWhObkxYVUIzUm5lVDZmMVFJTTlVdWVmODUzMUFEMDFBVjRWZFNtZERwMmZ6L2ZWQWZSWFh6cGxDcnZkdXV3UnVqei9QUFAyK2FFN2wwTmVKMi9WbFJFdDRmM0x6Nkd1NTRmdW1nM2xaM2w5R1RGdHN1eFBtT29DZWpuc0xGaDFuQ2dLRWFWUFExL3JST21DRG5zVWlEMzJUK3RCNmM1WlU5aEp1WFY2R3V4Ukw1NTI4anFqUjloeWVScCtmbnUwRG9qTDRlVmxYVXJ2cHdGNlAzM1ErdXpRTVdyV0lzN3FMRnpTOC9ObnA4S3pRNzlkbzViVFZuRzBlaDhWcUpydW0rYlA1ay85encvOVJseE9VME9qb3pxVVRsdENsdmw2Z0c0RjZKQTFNaFQ1QVZxckQ1WnpPWlJPWlN6ekUxd2QyRU4wV2tkZExqZlBTaEtnOFJRdkZlQUx3TGpBRjhnclBuREdtdytiUWtwNi9sOVR1dlh0MTY2SGlTenBwSzFXbDNYVWlqRVBFM0xlamNtem9LNG9GR2E5eTdQZVROclcrZlh4em5CL2Ixdi9aOUJkVFgrMFRiNyswR0JidFdGYUxiN2EvTFppNHR3aUlMTkZacUl5cjZwYzVDMnVvQXJPd3F6RjVUY2FMemlPQyt3WU9iL05hTFFaL2NYQi9NYXplN0x5cGF2MVo2RTd4eWNCMTdqVExDd05sVTFXdDNpSFZpaXg4L2VsVjFmWmx5Mm4xdEZSMTZpYWhrcmpTSEVCcmxreWZwcHJhbjA2ZEd0VDM0dUdob3Nkb1JsMmJLMlFzRm5MM25vWEgzZFQ2Z3dNbE4wYnN1elBpcUtWREtWa0pZL2lBcHlCYjlYODZiZTNUNE51L2EzeFRZT05heGFHRUJqMnlJb1U3cGlDZ2VYeGxVenlaRG5rdnpKUjQyNlJFend0VXBSWUhIaWNMQ2ErK0hRNktTZUJILzFydlBVSjBFMWJmemFzY3VBS29yRW8zdnNJL0VENENGYjlaSjR2Zld5NTVLVHUzb2x6Nm5BN2NxcWJPS25aWW5MQzdxM1dqMDIxUXI5dEczdlRjTkc4dElTK0VLMTN3RCtBbEViM0dWUU01eDFSYVg3V09Vdk5VakFpa3ppTmMwNTR3QWhlcUdYbjh1d3lKQmdCdDJoZG12cGFFM1RUNElzTllCNHFlaGwxNXN2clJ3Qkx5Q1hRdTI5U1JJWk5WR1l5cVpJNlN5OWtraUF2WS8wTHNPRm5zUWFiYW9EK3cvTm5nMjFISU15akpOOVlyUTd0UE9oUUI0ZEk1dHpGWlNSemlnNjMydzBCSE44TzAxWVJwOXdrdDduSjhDQ3hMRXM1bDVkRDRmQnlDTWpoeHhDRmRiM1Fidy9HWGpRWUEyaG5aSWJ5RGtvOFNENFlIaVVvV1dEc2NMZ2NMbnlRSjh4aWlXUEZoVlo0T2h4a0pTeDAvSkJrZk1nT3Q4UGhsdFVwMlMyejl1V1FDYWxOZVRESmFKcys2SzdKMThCTUFqTkdUcDlLWENKL0FFeVlIZmNYQXFjcU4yRzk5eVEveUEvTTdqdFc4Z3JJV0U2SnlyTEpaQXFGVFdIdkxEczZyUU82dGF1NzhjV0dmNmNaZFI3MStSNXBhaVc2a25teXFFU0NtaEpKcllUdkFTRDR4NEZXVVNFaHdVaVdnUkZBWlJFbjRZVThjTnFoTEtkTUlSaVduWlNXMW8rVTNuN3RJZEZaZ0tJS1ZBWnFIK2pwaW1DYXVmZDhuSHhrTklxdlBqTHJVeC9xNjhQMDRGZERBNEg0Rkt0K0E0Y2QvMlZpTW9WbktkOTRWZWpPUnM4R21BTUN4eER1R0tpdHJzaU1FT0Q4ZnF4dHFLUFM1TzFjTWRrZXZENU14dHNwcmppVWxzTTBCODhBTitOV2lPeXlZa29qZG5qV3VkUlVCZnJyN3RpZlptT2dlYWg1eUtlNjJCZFpDcGdOdmRkcjhiVjRmRzBOSDcvRGFPMW9qVjQ3aXE4ZDBXdDAvQzdSTk16QndqaTlodE8wdWgzTUh1Rm9qUXl3Qlk0ZnA5NWVROURzNTF4RjdIQWEvOVpqbXFYVzNsYUdubjc5c2NGMnNRTkt1MGlzOFBrRWZ5ekw1SklNa3lORDhZSFBoWVVjczhEQUtMZkE1SEF5dDVCVGwrUmdDcWRoYmdHWGs0M0lDTmJnRnJnSmJzZmdTRjJDcTJHM2RBeTRIWWd0c2lwMTJNa2VWSVJ1NmhoN1kxdTlhTjVwUnBuaEVlR3VHZnlveCtubW4wa01jOU1iREFwSTdXWk5sbFFLY2lNVmFhb0EzZG9JMFE2RXZ0aFI4NGxWQ0NiL1ZXU1ZPMnN3K0NWV1pHVTJaRW1GVXBBWmgxdkxRN2UvSG50ak51NWNyRWJVSEMxRWsvODZNcVFQVEcvUXhySVEvNlIwR2l4aWNycC9Ld3Y5ZFF5RVhqVmVyQTZwek54YThobVFpZGpSb0UwQ3FXV3ZCYWhOeTdNZHJlV2c1MUJvLzhYcXpxanFqZCtmaXhtcFk1eGRCdXFVSloxS21ieXVwbkxRQjFpdXJLNnVMbUhSWi9YMUpwOExHYWw3RFlMRXNuSUdwUTU1blpObG9McytOYjRJMm95ck95VFl5Y0hrOHlFamRjd2dRNzJQU0EydXRuM1ZodjZ0NHpXMHJ5NVdsOUFjc3BCam5oSDU1bVpoelVBTWtybTBvS3ZGY1czb2c5Y2ZOOHlycXhmRTBZNVk4am1SaWRReEtHUllKVzNaUzRmeTlrRk42TmJkeGhkbzZXWmtkZ3VNRm5JV3l1WW9IVTlVL2NRRWJrZnIyUTQyaThhem11c01uQVJoRDAvMHBreXpobFl0Nk02eHhqOUpOc1NLSi91am8wdWZrT3lmZk5VMzB0OVRCU2VlT0I0OE9lajczcEdncXlBbiswZjZEaWI3azFvN1pHSkJCZUtINmc5dnBGTUwrc3NZc2ZTRldoakdtVWZNY1daa3BiM3Q0R0J6cGYya3B3Sk5OajY4K083bHdNSEF5L1cydzBwZmorNlphbCtaN252VjFyNHl5Y1FmcmM1ZEd5S1FFd3NXQ0NDaHZPTTNMZWh0Z0M2NVE3em5qdHVQNkppYmEra0JmOFNUVnkvYmg4dFNKN0luNHljZE43RGRUVWZmK0ZTMkxEVjkyTDdkbndRanhYc0c1K1k2YUExL0NCSmt4ZlFsRk9aNWFWc0wrdVQxMkliWmVORU1RZHJIK3BtSDJZOCtYdTlqb29rYmdNaEdiMGJHRDh0UVo3TUg3Y1BST0hnVjNFb1B0dzhrc21XWSs4ZEhidWpmQ1YwMDJmZnUrSkhXQzFnRlllVVFtRG9VcHFhMG9BY2J4elpzeGd0U2hDc2xTOS9adEtmOUJIL3FSTWN4MEdhamsrc2RjVzJXa1hjZDBYaXVmK3BrcEQ4WnB6dmVqV2gvdTNqSCttVDA5dnZFNmI2VlpPS1JxVzFvYWhPYU9wenAxNEJ1YmR6OUNOQTdKQi95TWVaQmxLUDd0bThTNk5mRGRrSWRIOWpVbERBK3ZONGZwVHZhcHI5ZkRSNHNEdFAwNGJqbXQvdS8rUFJBWEkwZFVUWFFiUGZSajByRm9BaEtoMGxPbkIzV2dtN1ovUWkxcFIyaXROakwvQmlZRTU3MVQ3RFBIQk1kWG4rSlAyUjhiSDFZQzRaK05VM0hPK1phT2tZT1Jqb081NDdqOU1DQmx0VHh3L1VPdW1ldyszdDNOejZ2dmtVUDMza2U3SkM1RG1LaG1MKzBXQ0I4OUxScVFBODJRcU5sUjRWbXI1a2YzeC90Zm5tVGhaOTBzK2Q0NEh1N0J6U1BUNTlvd0NSNjJnK2p6T0xWNGR4VXk5VEtWWDhiRSsxdjc5SElpL1RKZER4KzNINXlNalV5ZFRKMU1OY1R2OW5lb2g4cTNlQUdmK1RWbUhla0JkMENaY3NxMXp5RVJ6UGszZ2ZROGVrcDNHTmljckdsYlhNRStHL283dTFzVmtQQWxaN29ZVnZIOW5ETHllSGh5dkZtZnhTK3h1T2ZKSHZ6OGpzZFA5Nk1YMStQZGZUMk1vc1EwcWVtNDFyMkVJblNJZTlhT1dqYkJVQUR0ZmdBT251eitEMktyM1IzKy9na25TV1ovM0hPZ2FXRGkxbDZjbXF5Ky92QTRjQ25rNm51a1dqdTVhQkdORXZPOWRPSjQ4MmJaUGY2WVBiUXN6SVFqM1l2UGxBQmFucEZlNkRTZERsby93WGE0N0hTV1dhN2hYeHlQTm5lN3FGTG1tcEFmMTlNUktjbXZ4OXVIclljOTdXTURJNUVpOS8zb1kxV2h1UHg0YzJlN3F1K3RyNytaUHQwZ3I1Q0J6NVFHdXlCU3UrQjByUzJwd24wS0NyOUNEclJOa25zMGJNNXZiNUlNZ3pkUDhjOHRnZDhNaE9kR2trbTJ3NDNQZFA5SFl1SE5ETjM5VmpwYkJLV0pvN2J2dDNFSmdkNmVwTnprL0hvWkZ2aXNUM2tXMCt2VmZJMEhveDdsQkhwdmdFYW1SZEhqZ2NtNTFCaXpFa2FRZUc0M1hOOU5kQTlPTkxkUFRJOHNObWRpSGU4TzE3VDJIQnpKQm8vWHV6bzZUbnVnZWNpbEl6VGZab1prU1ZLVjdDSGJRY3pJa1NQaHhtUkpqRWc0Um1NRGtQdEF5VE81bDUyYTBTUExEUFhIZTBaSHQ0ODNoN3VPN2tDSjBXL3Y5VDRSVWc0Z3RDNHVMallCcy90eFNTVVh2MjBWc2lUcTNsYVZkcmhFQjhxVFdDd1RJa1AvOUdYQUtHakxlODhXclVLZW5LT1NjVGpVQnh1OS9lUGVCS1E0eWFqTjVxeDhTcWFTM3BBWm53bWI2S1RqK3dHOWlobXhDcEs3NHppb2NDSDBRUE5PazZxTlBIaFBxd0N4VDN0azVyRmN5SzVNaFhOSm5vR1BCM1RtNTU0TmpxbEZXVEl0MnYvR0UvY0pycGovSkgxUVdtM0d2SXFlZHJzMzJrZXhjUGZqendOV2ZGZ3BRTzFUakpvNko2WG16ZmFGU0Y2ZUx3N21ramttSGoyMkFOeGJMeE1mVEI3MDdhZExLM0tSajN0ZlkrcUJlQnA4VTdwS2hrUldvaVBsTDVKTEF5OHUxcUxyaVdneGdDVnlyWmt1U29uL0NaOVBWRWExTHVPOXZTTlg1V3J3eWFTYlhQRDhTaktITTMycngvOFgrSnhpN3lrOUY2bEVoRXpvclk5NEVNU2srdHQzeUd2SDE5dHJrOHg4ZkoxKytHWDdTZkRuaDdQOE1tNzdlUHlyWVU0TTdYZTFvTHhZM0I3dlR1UjBEaU1FSlFWdlNIUDVkQlFHb3REejhoY2UvdEsrOXpKY2NYMlZuemhhcnA5WlFWYUpWY1Z2aHUydG81UDVtQi9LM05USGJTRzJUQjZ5RHBLUkZUYThiZ1lMNlkxT3VjWkh1NWdxclZZczlBWU9SNGU2MW1qczVVM2pOTk14L0N3aDZIajJnZHNRR2xGTE5ieUtzWHBVVHlQVUFZYTgyTThIcy9xT0FBQTJ5VVNPcmJESFpacjI2RFNpbHd0ZWpTUTZBSEZPRnNPK3Q4OThvRnhXbUdyVlUwUkdrOU8vUlQwQWxOS1NYZ3UvQ3kwWENua0RSYnRnV2NweFNkREEyYmkyaEMwR1RtT00vck5obXNJN014UFExY3V4aThBMm1wMThFK0RCdUtvd2M4SlE1RlI0aktyZFRTeXhBWHBKK3F0aHJ4UzRSS3ZGRDN3dzU2a05HaHM4QWVFR2ZVc3FIcEdGTHptdG80R0REZFB3YjZEeG9ZdFhkRWVUOHlJZ0d3VWxnQlRWakttVU5xQ2gyanpHVloyWUtlVHBlQk44aWVWTGwrNFlJWEorcFNNeUN6RS9NMUxEcmZiYnJvOFBadUg0ZXpzOCtmUHB4T1hvWXpiNFJiRkpVUE4zb2E2UjdGRUJPamwzeXZhQXl0TXRVSXp0SmxiY3NoczNqSUJxSi9QRVBuMDlIVGk5UFR6MmVkemt3TFliaTVSNjA0eFRwZHFlYk9WUWw0RXZWZ3JOQlB6QjN3eUc3NmNnSFI2aXN6ekJIdmlGTC9CL0VTSWRiajVTSXlwWFdrU1BTeVY3RkVNZVRWQzU1aWdUWEM3TTVhSmlmUHpDWkQ2OUJ3ZHZaZTJYRTRRMGVFYlRPUmxOMnMxTTdrYVBYMVg5emdxMjdBbGhVdU4wTG1ib0cxR0ZrMlg1K2ZJZko3SzIwRWZCVDlQc1h2VDUwVDBzN00wNjJCNVd5M1VxajBxRmk0dHU1Z1IwUjYxZVpySkJXMFJtUTlaTEplQXZlZGxFYmFVV0ZtVTh2dG44K2p6Yzd0RHBQdzF4TDRmbGRhTTA0TzdMOHkyUU8zMnlBWE5FYmRrMmdQb2M4dnNQZUJiY01WN2lRWS9PL1VDdFptcExlVGRGdVAwLzFCcEpnYk1kcE1wQmRSNVJJWXF6bVBzOENrRXdMUFBlWWZNQjVNMUZlT1Y0elI0Mm16Y0VXcUVabUpCUWJTblFpYlRYc3JPRW1BTmFvWE5YQ0kxYU0xYTllKzdldUVDOW1qd3EvYlFYeUxtYUlOUmxDd1drOGtVVmpTc2NVY3RJZlhuQ2J1Ykdzb3UxR0tQNHFIZTJVclF0Y1ZweGhCMHNKY1RJRVZlUytCN1NWWXNaMURjbklzaXhTVnJoVTVYVkJyc2dYMEM5VUl6c1kwWmgyVWVDbXRUUldKQ3pWcXdrRXk3V1ZGbklVT2crYXJRSkhwWTlkc2pFYk9KczFqUnNDaFZvZEVoV0VSNjNaTEE2STNUTEs5VTlQUldNWHFJVm9lb0U1b3g5UHJrMC9uNStjOFpXYW1lMk13RVFGK3lJbTlJNmxSYTVKV0tyWEdFTnFyTkxiMUtnOUFzL25WbFBxV0hHUndTQW4rY2h0MlVQcWxCYVZHcW5CRzdpL1lBcGEyS0xtZ205aWJDZmdhaEp4UzlDUXh5dWcvRnBMNzlRekhPczVVOHZSN1k4Smd4NUVGMVd0YXBkSzlCREFQemZKalZ5U3ptMGRWNTJlNW45TnFqbEJFMXE2WnZRdUtmeEI3WXlWWVg5QUs5eG9uN05RbU5VaytjV21URmwyVjBRbGRVdXNmdGFvQTRMZWlIWm1KLytpUVVPaVRyWnBaTkFBMGxER3ZRQjgycVNwZXJleHgvWUQ2QTBnVGFvY3ZUdWZjYllnaVl6eVJXdjlMMmM2QTJ5WlFlZjJCR1ZDb2VyRG5tdUlhRzFVQ3p6NkZYNlhqQ3pGNEM5TGxZZ3oyVVBXamFwTjI4b0ZOcHFXS2M3bUZsamlndDY0VE8wZDhDL09mYTNLSDZZMktmWlYzeG5BNW9nM2hYWWRKU3VrT1V1UTJqcXJTdXVzZEM3N2VJSFMzdHJjRWRDdXVGVnVTNXhNclhqTDZRUjFYS2lCNW9MaU0wVVZxUHA1bnJEOVpsWXVsYTNLSFk5eWZPSjJaMTVjUzc2RkV1STNhd2JpUCs1UUtWbHZVcC9WNDBBZlNwVWx2QzVtOWVsTXlNTG50SXhaQ1h5bWdwUFVZNUxqWldWYVYxUlk5Y0xNWmk4Tml2alptMWdOSmh0MkpMNmd0NXBXSmNVK2t4WGpadVFKd0dwV1ZSbHozZUc5Z1VRck8xVWFlZ3pXNnlVamFteHFxcHBqMFUyUWkxUElqVFZxdXVXbDZ1MThEdVljU3JEWm9OWFZvdXc3S2VCaTVXVGFWaUp4WHRyaFBIa3B2RFJzQ29XM1JiS1QyZWpnV2ZwSFRJWXJHRVJkNnZ5eDd5WFltb0JkMkI5bGh0aGxxZXc2M1BIakVES1JEUGE4eUkrVkFvbldGNW5Vcnp0OTJCTkRPaUJQWkFwVVczVzEvSTY0MDVzSTUzV2x2SVU4QjhGTVd5UWFhMldsNFpwUjNjaHVwcFVTZjBlMnNHR2dCbjlwcjhJZVBmQlVWRmp0VWFwelU5VGFIU0FWVGFJZXM1ZlpHN1BwcWh6bXFwVFdPU0hNS1NNQ1R5cmlPZEpXS3h3cVNkRVNIa29kTE5QcXZiclErYTdtMW16d0Y2cjVhNmgyVEZFektzTXFQajRBY3FMYkdWR2dHZXkvVFNocis1MlNmTE9tdDUyVjRiYTRFVzRnUmZrNlh4bjRxc3d1bXJtc29LVmNrZXlkT0pBUEcwN05ZWFBVajRDT054M0ZwcVRDd2s3TlpvMDFVMU5iQjh4WU0xSGZQblFTZ1JtMTM0MTBaOTBMM3ZJL3huYkl2WEFFM1pJVUhOOUZwbkk2QnljK3N3SFNIL25SeDF5L3BDM3MxTm9wZERmNXhONkcrNlNGNUlUcFlWOUJ6T0k0Vkx4YXBwVjQvbll3TjQyaVU2SEtMZVF3Z0dOb09IdWt5Nm9UUDVmRDRzc1E2Ym5xTTFkMHBENGJKYzlreUFFUnUyYmxubklZVGNkVXhnTGFmbjU1ZDZwVWFoOGR4aWhNN2Q2UFEwWHdwNTVVOHpCOVFTa2RKNUxNOFE1SjNuKzVlWEpwMUNGekpBRFVKenVnK0xWVGxxU2s3SkJRUVgvaEZXMFhrc3J6Y21VS0Z6aStYU3EwL29UQ2JqdFlQUVVVWXZ0S3EwcFdLdjNnQ0dQTm10OTRUK2dzSEFVaGJZcVVWZldWNndad29LNi9EclBtcGE1YkNZcW5ReEk3STZqeUNEcXdPOEY2Z3YwMVdwd1JXeUl0a3AzakVUMTNkZURqMWR1WEFCNkk5bWNvUkpsTVVhemdURWZDeGVrZEtTcWtJdHlUTVJhSHhLb2h3eDZOMTViMG5wdlZTcWZFYUVPTzBqbDhQUWZUSW5Dd2FCeHNnZS9JS1pTdFNTS3lETStGd3l5L3I4dWs4VXFRZlZ3MVhzWVNUUnc2cGY2WnRjTkdhVytKQWxuZDVMbGMrTmtoSUpCRGhCY0FHemtOQjcwaGFWbGdnMEtsME9PbWhzYnJiV3BqUkdFRTZpUW1sTUp1MTRMVUY5Rks5UzB6empwbHpDVVEyN0RzTCtxSENGYytOWGFzZ2J4U3REMU5JZGlJa2RjWklTMmt1bFU2bFVYbUw1eDhnekhFbUNMTG1FV0cxbmJDV3FvajNJQ2YxbXdRVkN5MUl0Si9RWnczcy9SRlA0Q1ZPaGtNbHIvd0VZWXNaTXdNOXhSczRvc0x4UE1OVFF3UWFWcGhRK1hLVzNHSGphaFpkVlVHcnFPc0hFZXMyc2tpSDN5VFNad2w2N1hTcWR6bmRFbGdLY2VzV0FDTVhPY0xGYU9nVWhOT3lxa3RKYmF1RUMwREpiR3pUNmVpTWk4ZmxReW1ReTViM2VESHdVdENWY3Zwa1pJU0FFa0ZsdzJNSFkxOG1iR3FFTFBGOEp1bHUxeHlnTEZTYWwxajR3dEdHTmcxYUdGNFRPNXpNQXpZcHVseThTRVdZRURqS2g0TEx6a1daYm90YWVOVUZXOWJTbGdqMkNSR2tvWEtoYSt6RGxibUx2andTSzRqUGV2RGREbEhZNGZCR2l0RERqS0VpUlpzNVFhemMzNG1tKzVHbTZuRDJ3R0Vkb3BmWXViaUQybTk2QWFKY2tlOFp1cDJTV0tCMlo4VGw0T3p2RWNlWkU3YnRFcFNVMWVwVDVSOUYzN0Y0ZldIS0JQVmpwQ2YzeWNsQVIrZXN2N0VnQkdaRlY4Rm9Ha0RtZ2JlVUxjUDVnOUFtZE40blN0eG54cUd4R3hNTmlJRFgxcEc2YkMweTBOL3JpbTRFVGZHNFdEMmpKcmtpQXM1bk5odmlUK3B1cTUxejRxbkU2c0lRWjhTbjJLUFliUzF6SGpxN2ZIQjBkeFdJR1NBQWNvMitZcC8xL200UzgyNHlvMllkcDZ4TXFMVmpSMDlMVHV5S0Rwb25vZGF5MzkvMTFiK3lhVGl3OHZUUHlYZUZTOW9UK29GckxHd1VyL2d5MEtyaDZyWldmNmoxZENubEtwUktSS0wwejVCUFJIckU2NmFrT0diRkszZU5iQTZubHllS1RQZjBQUVBONmxJYU02R2FwdW9FdVNHcDlPcVFkOHI0WGxXWkZrZVhyQmxyMWRMcHl2endJZVFCZFAwcmZWVTNwTWlVaVJnK2lkRDE1bWc5WDZkV0xjYnJHNXRZL2JRK1NFUzBWNHJUWkJpMFhQSHdzOWRaZnlDdHJqMVVDTGRZUmRKVTI0dmRQUlUremNqMHBUVnJqbGtwL3dUWTJROVZVcmlkN1ZHa2pEcExDQlpVR2U5Uk5NUzVWcmsvZlprUzVqdXloU0JKVnNUVk9sQVo3c0hWbGowSzFxbW5RU0pTdUkzdEFjMDB5VmMySVdQZW9HNlZqUWQ1dXI2ajBWYU1INGpUVVBlcElhUnRQZ2FjdHBPNHhwblg1bDM2ODBBNkpIcXljTWRRSHROOHVVYnpKc2xmdVFqdC9YMzE2L1diMUFwdGJvdWkwSmVzQk9zaGxpS2VoT3AxWHZtdEJUNDAxL3RsdzBUd0s3aEF6Z1hwUU9oY1VuQVZLSWRmNXk4Z25XdERUbnQwWE5tUHpFQjVrb1NJM0M4L092SkN3aldha0FwVkNTMmRjYzFyUXYvMjFoY2Q2aDBCcGxxK0h1aWxZbW9YZ2tkbXpwRkltZStTTDVsWGNGZ1l4SnpaYjhTcnBYbjhkUUpzRk95VkpYc3ZlbmlrdkdiczByNWQzdlB2NlQ3TVJjaUl2OG5ack52ZmNqcVk1bHhPaWh3bVlUUmxIaCtiMTh2NCs2Um44MkFDdFJMeE9QVHRyVGo2NzBBRVFtckx2UWV3SVM1RTI3Y3NwTnZWdXZjWklQY3BEcUxhTGE4OXJFSVlPV0VGbkpiKzNGd3A1SFZ5VE5uU3I1MVBqaHdhdWVRaXJUT3lzOEx6UUMvNGhPMVdRN0ttOVZBcUU5cnd0ZDEzVGIxdWVCdHZPMGlqMk5PSm5uN1dBWVlJQ1ZwWW83eDVlaTFVVzJzcGRqTFh6YU92MUI2anBxVklYcU9EemFjMFlsa1E3WlVlaFE2R3czV2ZyTEh1QjRhbXhyWTROTTVTS1JXckRNMm1kQTJhSHZTQVZGTk5lQ0tvZERxR3YvRldSbTJJdHU5OGEvTTFMYmtJdFVXYm1PY1JtR1BPUUl5TlJsSlFIYjVneThreXNxY0pGcy92KzZuNzlCdk9pVERyUVNVN2hLUGx2WXk4dzBjQ29ESGFXcEV3cUJJWldJdjZEU2xmNjdvcSszdkpnMkl1SVJHdmU3dmJIR1NiM0w0cWNqTnFHck9CbWl1S2RlTm82YjNkeEg1c3FYbE45M0RDNTlkR0FFVVJVVkd5bk5XQklGSytLa2lSRDhSb3B5ZUtpKzh1S1U4WHJxQ1JMNzBqZVgzSC9mYVVWeFUyU3VYaU1tN0ZDdzVDaUNyeWRuUDhGUTc4WnFITEovY214NlpZWERUWk9pS2krQm8vWUtaZGd0Sm1Ed2FDWkRFRjF5bHlhdlYxS3BrdXJnN2pGM1h2VVRlNXZVZHlIdVRneUIyMW0rRlNyU0VsNExoSzhZU0xuMlIwendjR3VLdEJmUGYzVExSK2d0cmQwUzQwMzBxQjRjcmNabHR5RWh0eVFoaFdMaTNoUjVIRVNPM2JCcTdxY0YrRWQ4RDZjSUhlY0lUZC9nZG9qTEdQVlc4SGdUbG15akNMM0E2TElFM0NwQWdTN2d0Y1VDdWVCV2JCOStsTDFqZ3lkc2NZQm9QWUhoSWdhK1ZnRlR3bnl2S0wralpaWCs2RlFzSkNIR1ZoRktkZzlDcENMR3lqSUltRzNDVWtodDZ2aEpSN21ZVXdwWkJuT1Vnb01tTm13MUpPd0IycWhBQnFETHpBTDhzNXdDR1RPS0M3QlBQekgyK28zN0dnSzdyNXErUkMwN1FTR1JvdlpFWktDblU5NGxSb2xCY0h3YTFDSWpHc0pLNEtUZFR4QlJqUm80NUVKMEJPK0FlSVRjaDZaZVZJaEFrWW8rZ3Aybk1GdllRZHVMM1pteU9ESlh2TncxOSt0T202Tmd0Uzczd3htTGpBelpCV0pvb3JLWEVRaVB6R0xjeFJiRkoxU2Z3QjFVd0lKaVNoZFJNVlpnbi8zQXhSVVlCU2FET0JqQ2hvcWt0TWJEaU95NHBqaGdzT2RPbTlDMDNSMDlXcHk3TDNaendsTG95NHIvdkdlVjMvMW9qOVUwVkZnOUNTeGlmcUMyaGZ0UUJCQlRyeUhrWUkyVUplUVZYaGZMdFVaZ0tyeW9qbFFjbWZHbTg5N3ZYYTdJa2NFWTdDL1UvZWRjenFQeC9wT1BvRkZqSUl3RkhGaEEweVZoSXhnc09Na3ZrcnFFNWRBN3NGQksyVWVMU2hrN0JsWW1sSGZBek5PcDkwSmk3ell3d1dJV1lkUDRNeTlVMTAxM0tPb3RlL04xcXN0ejN1empRc0lNeEdmUTVheG54b2FVY0djcEU2UjZlSnkwbDhKZjNsSk00RlJpMU9VYWx6VkUvZ0Q0Qm83VHBGQ1VDS2RpRnlSSmM1MjlIR2x0YlpiV0gzNU5uWnk4cW5ualFHeGhabVppSHBMbjN2WFdISTh1cytNNC83MWwrN1B1Qnc2a2t1VzFkZElSQkE0VzI5eXNLbm0rMjY5YmV0cGZEVTFPUFloWnZOekFRSU9hWWs4WnU2bWwwb3ZQNmFscGVJVzk1ZmR2cGIyRWlIelErcEU2U2tFT0Z2dzZLL0Q5cmRQdVMxYlY5dlk4S3ZOazA4Zi8zcHZNUHU1bWxJZ3dBVmdySTdJQXU1MmxneWxrZnFLaVNNZHREaS9PWGFVOUF3dmRqMzFCbmhkNzFyR0pnZGVUVzAxamlXUFlySFlSbTlzSTBaU0F3eVlERGdxTHROSURiaUZnZlQ4dUo5Z1VZUGhVWXIxdmo5YSsydWhwK080WmFYelorN2ExOXE1UHJuVnZUVXlNclhWc3J2YjJIalZDR20zcFFWbVdtRFlIUno4UGpnNDJOL1kvd2xTLys3V0lFa3QrR3pwMzkyOWdyZDhhdXlIOTdXMHdCSTE0V0pZZ2V0MnIyQU0rNFhYeHF1cmxxdXhzYkZQazNOTjFXNDVYZjMraUsxdk81disyRjVjV1Y5LzkrNWRPNlozTUxtK1RrWnQwMjJiYlpzRHJ3NGdEYnphdkplbXQxZmFZUHh5WldWdVpXV2xIZDZLYjhmeHlzREE5QUNrZytMakFNZlRBOU1IQnk4MzU1cDAzQjd4ZjNGbjl3cmY5eC9hN3o4Sy9mY3Y2Ri9RdjZCL1FkZFYrbjhCQmdDN0NtWWRoNnBZeUFBQUFBQkpSVTVFcmtKZ2dnPT0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xX1BSRSIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsidXZtIiwiY3JlZEJsb2IiLCJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwibGFyZ2VCbG9iS2V5IiwibWluUGluTGVuZ3RoIl0sImFhZ3VpZCI6IjMwYjUwMzVlZDI5NzRmZjFiMDBiYWRkYzk2YmE2YTk4Iiwib3B0aW9ucyI6eyJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsInV2IjpmYWxzZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImxhcmdlQmxvYnMiOnRydWUsImJpb0Vucm9sbCI6ZmFsc2UsInVzZXJWZXJpZmljYXRpb25NZ210UHJldmlldyI6ZmFsc2UsInV2QmlvRW5yb2xsIjp0cnVlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwiYWx3YXlzVXYiOnRydWV9LCJtYXhNc2dTaXplIjo4MDkyLCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxLDJdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjgsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MzIyLCJ0cmFuc3BvcnRzIjpbInVzYiIsImJsZSIsIm5mYyJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5Ijo0MDU2LCJtaW5QSU5MZW5ndGgiOjQsIm1heENyZWRCbG9iTGVuZ3RoIjo2NCwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjQsInByZWZlcnJlZFBsYXRmb3JtVXZBdHRlbXB0cyI6MywidXZNb2RhbGl0eSI6MiwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjE2NX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIzLTExLTE2IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiT25lU3BhbiBESUdJUEFTUyBGWDEgQklPIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyMzExMTYwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMy0xMS0xNiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIzLTEyLTE5In0seyJhYWd1aWQiOiJiMjY3MjM5Yi05NTRmLTQwNDEtYTAxYi1lZTRmMzNjMTQ1YjYiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6ImIyNjcyMzliLTk1NGYtNDA0MS1hMDFiLWVlNGYzM2MxNDViNiIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJhdXRoZW50b24xIC0gQ1RBUDIuMSJ9LCJkZXNjcmlwdGlvbiI6ImF1dGhlbnRvbjEgLSBDVEFQMi4xIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjYsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfSx7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MTAsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6MCwiYmxvY2tTbG93ZG93biI6MH19LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUZoRENDQkd5Z0F3SUJBZ0lNYlVJOSt6eUVRVVREK2RuQ01BMEdDU3FHU0liM0RRRUJDd1VBTUZzeEN6QUpCZ05WQkFZVEFrSkZNUmt3RndZRFZRUUtFeEJIYkc5aVlXeFRhV2R1SUc1MkxYTmhNVEV3THdZRFZRUURFeWhIYkc5aVlXeFRhV2R1SUVkRFF5QlNNeUJRWlhKemIyNWhiRk5wWjI0Z01pQkRRU0F5TURJd01CNFhEVEl6TURFeU5ERTFNREV3TTFvWERUSTJNREV5TkRFMU1ERXdNMW93Z2JZeEN6QUpCZ05WQkFZVEFrUkZNUTh3RFFZRFZRUUlFd1pDWVhsbGNtNHhFVEFQQmdOVkJBY1RDRUZ6WTJob1pXbHRNU293S0FZRFZRUUtFeUZCU1ZobFkzVjBhWFpsTG1OdmJTQW9RWGhsYkNCV2IyNWtaWEpvWVdkbGJpa3hFakFRQmdOVkJBc1RDV0YxZEdobGJuUnZiakVUTUJFR0ExVUVBeE1LUVVsWVpXTjFkR2wyWlRFdU1Dd0dDU3FHU0liM0RRRUpBUllmUVZoRlRDNVdUMDVFUlZKSVFVZEZUa0JCU1ZoRlExVlVTVlpGTGtOUFRUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQUtmLzRHekdBVW1KSDRSOW1DdmNKK0NnVFVnUDFETnI4ZE4ya0R2U0E5eHVJTWIxTlpKWFFneFNPT0FZcUlCekZOY2prTlZsODBZM2RybTR0UEpTbDNrZldXTTI2eFlMRnN2bDFCY3F0clByc3N5eElCdFg1a1RlMnArTTlSbGNaUWNFajVDYllwQVNwdVNUQnl6b091ZitWU2ZPVVZxRHpDREg0Q3FzRUN5dnlMS3JKdzlrak40QjZsRlh5em1ySVdxUm1HV0t4NGNzby93eFlJVU5jT1YrcDZJODRZMnoxbkZJV0VoY0E2ZGdySlFuRHBENUlHRUpkU3hUbjh0MlpuQU5wNEpFQXA4ajV3M3RiVTg5UktpM3lQQXV3c3hpM1hjbG9GQXRHeHcyd2s3bkp5aXpxOTh0TzVsd2ZnSE4vWW5nbFl3VTRVRm5PQnpQNU11elByRUNBd0VBQWFPQ0Flb3dnZ0htTUE0R0ExVWREd0VCL3dRRUF3SUZvRENCb3dZSUt3WUJCUVVIQVFFRWdaWXdnWk13VGdZSUt3WUJCUVVITUFLR1FtaDBkSEE2THk5elpXTjFjbVV1WjJ4dlltRnNjMmxuYmk1amIyMHZZMkZqWlhKMEwyZHpaMk5qY2pOd1pYSnpiMjVoYkhOcFoyNHlZMkV5TURJd0xtTnlkREJCQmdnckJnRUZCUWN3QVlZMWFIUjBjRG92TDI5amMzQXVaMnh2WW1Gc2MybG5iaTVqYjIwdlozTm5ZMk55TTNCbGNuTnZibUZzYzJsbmJqSmpZVEl3TWpBd1RRWURWUjBnQkVZd1JEQkNCZ29yQmdFRUFhQXlBU2dLTURRd01nWUlLd1lCQlFVSEFnRVdKbWgwZEhCek9pOHZkM2QzTG1kc2IySmhiSE5wWjI0dVkyOXRMM0psY0c5emFYUnZjbmt2TUFrR0ExVWRFd1FDTUFBd1NRWURWUjBmQkVJd1FEQStvRHlnT29ZNGFIUjBjRG92TDJOeWJDNW5iRzlpWVd4emFXZHVMbU52YlM5bmMyZGpZM0l6Y0dWeWMyOXVZV3h6YVdkdU1tTmhNakF5TUM1amNtd3dLZ1lEVlIwUkJDTXdJWUVmUVZoRlRDNVdUMDVFUlZKSVFVZEZUa0JCU1ZoRlExVlVTVlpGTGtOUFRUQWRCZ05WSFNVRUZqQVVCZ2dyQmdFRkJRY0RBZ1lJS3dZQkJRVUhBd1F3SHdZRFZSMGpCQmd3Rm9BVWxqUFI1bGdYV3pSMWlvRldaTlcrU042aGo4OHdIUVlEVlIwT0JCWUVGQzU3TE4zUlczOGRleFFoeGZIVy9XV3Q3Y0NRTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFDdnZQaW03am9GMEc0dk9lcFNGYkNSZ3RDd1JBeWVuOWZIekRTMjdXbnNUYkc5VW9xK3ppR3JjRCtVNUVuSDZVcm1GMUJxeFhMMUNqcUVQcm41WVF0WlNzM3Bmdm9uWGtGQ2h0aVlZT2dLNGdJcUp0Q1ZCYVgzSDRESGtJMVY3Qmg3YjR2alpBRDhjSkx4aUpmNkF2STRlMTFEOUs1dHBaN1laUUU1TXc0OVZEdFE4QTdwa2pPNndYakhGWFhnWTFsUHcrTFJRdVUzbTlLR0FNM0M0Z2Uwb3RwVzBYeUtEeHFzS1dPeG1NWDdJamhYRkRwS1lvcG1tTFBjVHo3ME9OdGJFMk5IeUlhM1V1amhjamJjcnBvTmttYUZpTGsycHFLUlpJb0hrWmFGTWQ5d2FROWYxbFMyd3dWUXh0SCt2TlY5TjNLK0huTDNuQi9DVTJFMGJ0SkgiLCJNSUlEWHpDQ0FrZWdBd0lCQWdJTEJBQUFBQUFCSVZoVENLSXdEUVlKS29aSWh2Y05BUUVMQlFBd1RERWdNQjRHQTFVRUN4TVhSMnh2WW1Gc1UybG5iaUJTYjI5MElFTkJJQzBnVWpNeEV6QVJCZ05WQkFvVENrZHNiMkpoYkZOcFoyNHhFekFSQmdOVkJBTVRDa2RzYjJKaGJGTnBaMjR3SGhjTk1Ea3dNekU0TVRBd01EQXdXaGNOTWprd016RTRNVEF3TURBd1dqQk1NU0F3SGdZRFZRUUxFeGRIYkc5aVlXeFRhV2R1SUZKdmIzUWdRMEVnTFNCU016RVRNQkVHQTFVRUNoTUtSMnh2WW1Gc1UybG5iakVUTUJFR0ExVUVBeE1LUjJ4dlltRnNVMmxuYmpDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTXdsZHBCNUJuZ2lGdlhBZzdhRXlpaWUvUVYyRWNXdGlITDhSZ0pEeDdLS25RUmZKTXN1UytGZ2drYmhVcXNNZ1Vkd2JOMWswZXYxTEtNUGdqME1LNjZYMTdZVWhoQjV1enNUZ0hlTUNPRkowbXBpTHg5ZStwWm8zNGtubFRpZkJ0Yyt5Y3NtV1ExejNyREk2U1lPZ3hYRzcxdUwwZ1JneWttbUtQWnBPL2JMeUNpUjVaMktZVmMzckhRVTNIVGdPdTV5THk2Yys5Qzd2L1U5QU9FR00raUNLNjVUcGpvV2M0emRRUTRnT3NDMHA2SHBzaytRTGpKZzZWZkx1UVNTYUdqbE9DWmdkYktmZC8rUkZPK3VJRW44clVBVlNORUNNV0VaWHJpWDc2MTN0MlNhZXI5ZndSUHZtMkw3RFd6Z1ZHa1dxUVBhYnVtRGszRjJ4bW1GZ2hjQ0F3RUFBYU5DTUVBd0RnWURWUjBQQVFIL0JBUURBZ0VHTUE4R0ExVWRFd0VCL3dRRk1BTUJBZjh3SFFZRFZSME9CQllFRkkvd1MzK29Ma1VrcmsxUSttT2FpOTdpM1J1OE1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQkxRTnZBVUtyK3lBenY5NVpVUlVtN2xnQUpRYXl6RTRhR0tBY3p5bXZtZExtNkFDMnVwQXJUOWZIeEQ0cS9jMmRLZzhkRWUzamdyMjVzYndNcGpqTTVSY09PNUxsWGJLcjhFcGJzVThZdDVDUnN1WlJqKzl4VGFHZFdQb080enpVaHc4bG8vczdhd2xPcXpKQ0s2ZkJkUm95VjNYcFlLQm92SGQ3TkFEZEJqKzFFYmRkVEtKZCs4MmNFSGhYWGlwYTAwOTVNSjZSTUczTnpkdlFYbWNJZmVnN2pMUWl0Q2h3cy96eXJWUTRQa1g0MjY4TlhTYjdoTGkxOFlJdkRRVkVUSTUzTzl6SnJsQUdvbWVjc014ODZPeVhTaGtET095eUdlTWxoTHhTNjd0dFZiOStFN2dVSlRiMG8ySExPMDJKUVpSN3JrcGVETWRtenRjcEhXRDlmIl0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQWJBQUFBR3hDQVlBQUFBREV1T1BBQUFBQ1hCSVdYTUFBQmNTQUFBWEVnRm5uOUpTQUFBRkZtbFVXSFJZVFV3NlkyOXRMbUZrYjJKbExuaHRjQUFBQUFBQVBEOTRjR0ZqYTJWMElHSmxaMmx1UFNMdnU3OGlJR2xrUFNKWE5VMHdUWEJEWldocFNIcHlaVk42VGxSamVtdGpPV1FpUHo0Z1BIZzZlRzF3YldWMFlTQjRiV3h1Y3pwNFBTSmhaRzlpWlRwdWN6cHRaWFJoTHlJZ2VEcDRiWEIwYXowaVFXUnZZbVVnV0UxUUlFTnZjbVVnTmk0d0xXTXdNRE1nTnprdU1UWTBOVEkzTENBeU1ESXdMekV3THpFMUxURTNPalE0T2pNeUlDQWdJQ0FnSUNBaVBpQThjbVJtT2xKRVJpQjRiV3h1Y3pweVpHWTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5MekU1T1Rrdk1ESXZNakl0Y21SbUxYTjViblJoZUMxdWN5TWlQaUE4Y21SbU9rUmxjMk55YVhCMGFXOXVJSEprWmpwaFltOTFkRDBpSWlCNGJXeHVjenA0YlhBOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOGlJSGh0Ykc1ek9tUmpQU0pvZEhSd09pOHZjSFZ5YkM1dmNtY3ZaR012Wld4bGJXVnVkSE12TVM0eEx5SWdlRzFzYm5NNmNHaHZkRzl6YUc5d1BTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM0JvYjNSdmMyaHZjQzh4TGpBdklpQjRiV3h1Y3pwNGJYQk5UVDBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5NFlYQXZNUzR3TDIxdEx5SWdlRzFzYm5NNmMzUkZkblE5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5elZIbHdaUzlTWlhOdmRYSmpaVVYyWlc1MEl5SWdlRzF3T2tOeVpXRjBiM0pVYjI5c1BTSkJaRzlpWlNCUWFHOTBiM05vYjNBZ01qSXVNU0FvVjJsdVpHOTNjeWtpSUhodGNEcERjbVZoZEdWRVlYUmxQU0l5TURJeExURXhMVEl3VkRFME9qUXdPalV3S3pBeE9qQXdJaUI0YlhBNlRXOWthV1o1UkdGMFpUMGlNakF5TXkwd05DMHhObFF4T0RveE9UbzFPU3N3TWpvd01DSWdlRzF3T2sxbGRHRmtZWFJoUkdGMFpUMGlNakF5TXkwd05DMHhObFF4T0RveE9UbzFPU3N3TWpvd01DSWdaR002Wm05eWJXRjBQU0pwYldGblpTOXdibWNpSUhCb2IzUnZjMmh2Y0RwRGIyeHZjazF2WkdVOUlqTWlJSEJvYjNSdmMyaHZjRHBKUTBOUWNtOW1hV3hsUFNKelVrZENJRWxGUXpZeE9UWTJMVEl1TVNJZ2VHMXdUVTA2U1c1emRHRnVZMlZKUkQwaWVHMXdMbWxwWkRvMk5HUmlaalU0WkMwNU9UWTRMVGc0TkRjdFlqTTVOUzA1TVRZNU5qVXhZVFF3TUdRaUlIaHRjRTFOT2tSdlkzVnRaVzUwU1VROUluaHRjQzVrYVdRNk5qUmtZbVkxT0dRdE9UazJPQzA0T0RRM0xXSXpPVFV0T1RFMk9UWTFNV0UwTURCa0lpQjRiWEJOVFRwUGNtbG5hVzVoYkVSdlkzVnRaVzUwU1VROUluaHRjQzVrYVdRNk5qUmtZbVkxT0dRdE9UazJPQzA0T0RRM0xXSXpPVFV0T1RFMk9UWTFNV0UwTURCa0lqNGdQSGh0Y0UxTk9raHBjM1J2Y25rK0lEeHlaR1k2VTJWeFBpQThjbVJtT214cElITjBSWFowT21GamRHbHZiajBpWTNKbFlYUmxaQ0lnYzNSRmRuUTZhVzV6ZEdGdVkyVkpSRDBpZUcxd0xtbHBaRG8yTkdSaVpqVTRaQzA1T1RZNExUZzRORGN0WWpNNU5TMDVNVFk1TmpVeFlUUXdNR1FpSUhOMFJYWjBPbmRvWlc0OUlqSXdNakV0TVRFdE1qQlVNVFE2TkRBNk5UQXJNREU2TURBaUlITjBSWFowT25OdlpuUjNZWEpsUVdkbGJuUTlJa0ZrYjJKbElGQm9iM1J2YzJodmNDQXlNaTR4SUNoWGFXNWtiM2R6S1NJdlBpQThMM0prWmpwVFpYRStJRHd2ZUcxd1RVMDZTR2x6ZEc5eWVUNGdQQzl5WkdZNlJHVnpZM0pwY0hScGIyNCtJRHd2Y21SbU9sSkVSajRnUEM5NE9uaHRjRzFsZEdFK0lEdy9lSEJoWTJ0bGRDQmxibVE5SW5JaVB6NnpPWFJsQUFCdU4wbEVRVlI0bk8yOWVidzFUVlhmKzYwelArTUxMNitDWUJCQkVFUkVva0VpaUdNY2JpU0tpa2E5R0RYR1JEU1JxREZxak9qVmE0eTVSSEZFY2NEZ2lFb1VIRkhqaEJCSHhJaUFnc3d6dk1EN0RHZDZ6cW43UjlXcVdsVmR2ZmMrejdQUFBydDdyKy9uMDZkNzl4N083dDdkOWFzMTFDcm52Y2N3RE1Nd2hzYmFXWDhCd3pBTXc3Z1pUTUFNd3pDTVFXSUNaaGlHWVF5U2piUCtBcmVDYys2c3Y0SXhVandzNWNYbHdJTFd4dHdaYWk3RW9BWE1NRzZGR1VWcVdZVE14eis5MzhmRXpWZzFUTUNNbFdDS1dMV2VPNGx3M2FySXpTSTg4ajlhciswVk54TTFZOHlZZ0JtalpJSmcxZnZkak0rMUhwODJ0Zmo0Nmp2STg2N250WjN6WUlKbWpBa1RNR01VOUFqV0xHSlZyUFhudU1hKytybDU0eHNDNDdJWStYb2YvZXVtcUptZ0dXUENCTXdZTERPSVZsT2tVTUxrcW0zWDJLL2ZjMXJDVlg5aEpWWSttbDArZmpldkJhMjFUZjlhMDdIUVRNeU1vV0VDWmd5S0thTFZXaGNDNVVzaGN1UjlhVkd2NndoWjQvL1BTOUNhTHNESytoS1JTb3V2OW5uMXZvYW82VzFYUFRZeE13YUhDWml4OUp4QXROSzJGaXpYRmFnMXl1ZlhmTFV0cjlWQ1ZvbmZxVkdMRUEzQjhuQ00yaFlSMDg4MTNxUEZEdlVhRXpOamtKaUFHVXZMQkd1bkZpMXRIYTFWZ2lWaXRhWUVhazA5bC9hVGw4NzdmUGYvMU45cERvZGJidnUyS0lsd0hRUEhzait1MDNOSzFJcjNrVVh4MkhXRmJLS1ltWkFaeTRZSm1MRlVuRVMwYWl0TFdVOXJ0V0JGZ1ZyM3BWQ3R4ZGNXKzVYSXBjK2pGRVg5Zlc3Wkl2TU44YUswb0pJSXVTeGF4K3J4RVdxZmV2N0lxL2NvUVV2YlBkWlpVOHpNS2pPV0RSTXdZeW1ZSWx6MXRvaFRzcUxJd3JWZUM1YUQ5ZmlhOWZqOE9ubS9pTmQ2WEVTODFodldXaTFpRUFSMFRxZWcySmFsc0tvcXNUcnljT1RVTmtHY1pQdW9FcmdrYU9SOVdoaTlFcm1XaUtYdmFWYVpzUXlZZ0JsblNvODdybWx0a2QyRFNWUjhLVFRyOWFJRWF3TzFyZmIzTGcxcnJSQ3dlY2ZDbENWV0MxaGhWZFdMRXFzakg1WWJhdjhOTFdoVTI4bzZLd1N0Y2pPYVZXWXNKVzZvTmJBQXE0VTRZR1lScm1nOUpmRWlXMVppWFlsbHRWRUxWVnpYUzdFL3ZrYy8xMXI2Qkt6alNyejFVNUxXSFFHalI3eklJblZEQkVzdDllTml2eEsyRzJRUk82THJwaFFYb3dpYy9wNzZ1OHNKR1c2anNxSU1WUWZNQWpNV3lnVGg2c1MyZEdLRnVBWjlhVjF0aUdncElkcWNzdDRBTmwzNW5scjR0SGhwRVhOVUdZbk1XY0JFTE9nSzJCR2xpR21CT3ZKWnhHNEFoMlN4T3V4YmV5VnFUbGx1MEhVL3h1MDEybFpaY1F6bVhqUVdoUW1Zc1JCbUZTNXk4b1FrVTlRV1ViS2dmTENpTm4wV3FOYXlSUmF0VFIrRnpDc1JVMkttLzRjV3IzV1U2M0tLZU0wcWFLM0dYZnJCUmZ5TFVyeU9VVUlqb2xXTGx3c0NkVWdXckFQeTQyS0o3OVdpcHkwMWliT2wySnZ2WmppYWtCbG5ncmtRalZQbHBNSkZ0clphb3FXdHFiUTQyUEpackRhQnJjYSsrajBiU3ZoYUZsaHRmZlc1RU9IV3JiQzY4Wi9rUXBUMWpXcDlXSWxZdlJ4RVVUc2dpNW5lVjc5ZVcydnAvN2d5RVVRRVRic1htNjVGRTdIbFpxZzZZQmFZY1NyY2hIQkpNb2FPUzBtc1Npd25iVlZOWEh6NXVCYXkydkthUmJ4MFBHNmU0aVVVSXFaY2ljZk1JR0pLdkxUcjhCQWxWa3E4cGkzcGZTNjdHcE9ZdWZ4L2o4bFprSzRoWk9sNHpCb3pUZ096d0l5NTB4QXZMV0JyRGVHU3JEL0pFQlMzb0JhZmV0bFc2KzFxWDcwVXJrVGF5UjFGaWoxNTdlaTN2dVo5QVU1SzVKQjFKMVdlZHJKRzdUcHNDZFcrV3U5WCs5SlNXV255MllWVmhuSXgwclhHekNKYmNvYXFBMmFCR1hOam10WGxHd09JVVlrWVltbjU0QUxjakZiVXRvTnRYNHFWN051bXU1eEV2RnBwODNYU3hrbkY2MVppWUhyL0pCRXJ4bmJSTDJUVFJHeS9XZzRjN0h1MUx6NlcxOWFXMlNIWjhwdEZ5Tkx4K1pBTU04eFcwMWdhVE1DTVcyWVc0WEpoT3cwZzFxNUNMVnhFb1lyYk8yU2gyaUd2ZDN4YnlGcmlsZHlHdE1XcjZTNmtMVjcxOFowR3RiWFNLMkswM1lwOTFwaDJLUllpcGtVcnJ2Y28xMXJNOWwxMFI0cUl5Ym9XTXArdFJmbk94WEdhVzlHNFZVekFqRnVpeDEyb2x6UjJLd3JYeGlUaG9pRldMZ2pXRG5DdWZ0NTMzWWVkZUplS2RjMlNwTkd5dUhvdEx6Y25JZlBkUnJ6UEVwc2tacDM0V0JVYjY4VEZLQzJzV3J6MlBPeEY0ZHFUNXlxeFMzRXpMV1F4VHJaR1RQb2dXRngxZk15c01lT1dNQUV6YmhyZnRrcUtPRmNkMzBKbEVkWnVRYUpnRVVUcm5JaVdFaTk1WG90WXNyaGN6andzM0lWKzh1RGtqbkJWeVJvdDRVcmJwOVRxK3NhMnAwenVtTVVxMDNHeXdxMm80bG90bDJJU0syRFhLekdqWFBhVnVFbTg3TUNyOUh6aUFPdG9sVG4xL1lyak5SRXpiZ1lUTU9QRXpHSjFVY2FXNm16Q0xWZTZCbVU1RjYydGN6NElsbDVxOGFxVE5qWjgxMTFZaTFZck1hTmpjZm55dUlDT2xYVmE3a09oMXhyei9aWlpYWFcrNVZwTVF1WXAwdVg3NG1KYXJIWmI2eWhlMjNGYnYzYzkvbzgxU212c2lCNXJ6RnlLeGtreEFUTk94QVR4a2dLN09zNlZ4bHE1eWswWXhVdUU2VnkwdU01NU9FKy9lSW1BMWU1Q2JYRzFxbW5vS3ZQVEVqTW1XbHhuUks5RlZtMG5NWXVXV3RNcW94emIxVXIwRU5kZzRVNTB3UnJUQWxZdkluYWJQc2ZOMXBWWWlvVnIxcGd4RjB6QWpKbnBjUmxxUzZiaktveFcxNWJQU1JlU2hLRUY2bng4TE9LbFJhd1dybTNLT05jc2lSbmFyVGtwcmpVcFFlT3NSTXczL3JlZnNQYVVic2JheFRncDRVUGlXT0lLTEt3eDM3WEFycXYxVGx5TEszZlhoZDluTDM3V09sbkkxbUpjVGdSTmYwZUhpWmd4SXlaZ3hsUW11UXk5U3RDSXlSTHJ5bFZZWkJQU2RRMmVieXpueUJhWkZpK3gzdXJNd21uRmQ2ZWx3VSt6dE03YStwTC83NmZzNnhVekppZDlGTzVGbjFQanhTSnJXV05pY1oxemNOMW44WkxFbXV1RWEyQ1A4QnZ0VWY0K2h6SE9LSlU5aUNLMnByKy91UlNOYVppQUdST1psS2hCZHN2SlZDVmFYSFJpeGlUUnVvQ3l2RVM0bEhqVkdZYTYvRk5MdVBwRWE1cVYxUlNxRzhBN2dYZUJ1ek51dnhsNEcvQU90YndOdUVyWjJoOFNXbmtYRDA1T2lpajZaZUM5Z0hzQWQ4VDFQWUgzQVc2UHk5M0IzeDdlMnlldVhtMUR2NUN0TWRrcWsyVXJIcmFzdCtNaDdaQ3RzWFB4MEhaOTE5V3JyYkRycU9MSmRLZXB1YUdzWWoxK1RHUFdtTkdMQ1pqUlM1L0xVRnRkWkpkaEt2UGtsY1hsY2x5ckpWb1hDS0lsTHNUYTZ0THV3azdkUXFlK0N5ZExmKzhWcTdlRCt5dmdiNEdYQUcraUZLcXJKenFEQVE5Y08rRjdMaEVFN1I3ZzdpQUkzUU9CaHdNZkRMd3YrSzN3MHBZUWE3ZGp5eUtyeFd6ZDVTbFVSTWcyeVVJbVdZWGlWa3hKTndRaGEyV0hicE1IcEV0bEZiSEc1Tm81aU9JazFyeE84QkNSTlplaTBZc0ptTkZobXN2UXFXSzd5dXFTSkEzZHVKMzNXYWhrT1Y5dGk4RHBSSTJXdTdBZXc2WEY2OFNpZFF5OEh0eHJnVCtOeTE4U3JDdXhuczZTSzNGNVRiVi9nM0NDN2dudTRjQkhBUDhRdUE5d1AvQTc0V1hUckxXT21LbUVqL1c0M3FDTWt4MzZQRnlocndwS3loQ1YxM3FLUWVVcFZobGR6WHJtZ1VOaWdvZFNYL21PWUM1Rm80SFZRalFLSm9pWE5EWjFoWGh4RnlWM29Xc0xWNzJrbUpmTExrT2RGdDhYNStwekZWSnRVMjF6RGR5TGdEOEEvaHA0UlZ4cW45VVF1Uy93UVFRTDdiSEFZNEJML2VuNHNsMExXdUZhZExsa1ZaM3MwUm8zSnNrYzF3a0c1eldDd1hyTndWVWYxdGQ4MkMvSkg3clNoMDdyTDZadm9SUmN3RVJzM2d4VkIwekFqRVNmeTVCZ2VVbDZmSnFIQzVWZFNCbmowa0oxMGNFRkR4ZXBMQy9LTE1PNkJGU2ZjRTJ5dVBSMzV3aDRGYmkvQVg0RGVEN3dGa0tyT1dhMkNURzFSd09mVExEU0hwQmRqa0pMekZxSkgxSTRXTTlEcGt0VHpTSmllcEg5OGpwSjBkOG5Eb0oydVhxSXpCS3R4VFY5ZHhPeCtURlVIVEFCTTRDWjQxMVMyYUpqZFZIR3R5NnE5VVY2eE11VnBhQTZiaVptRjY3aVFyZ1QzSE9CWHdkZUJMeGhIaWRvd053VGVCVHdDY0EvSmJnYXE1ZjBKWDcwWlM3MldXTTZRL0Y2dExpdVJndHNrcER0a2t0V0hiandlYW1LQitYOFl5WmlwOEJRZGNBRXpHaUpsMWhkS2Q3bFZLV0xHQU1wWWwyVmxYWEp3VVZmQ3BtSVd6MjJxODlkMkNyMzFCSlpBTjRLN3FYQXp4S0U2ODJNd3pVNGIrNGd1QmcvaDJDaDNYdjJWUHg2VUhSdGplbkN3RW5FYUZ0aFZ5aEY3QnBaeEtTaVI1cUx6T1Zab2JXZ3B1OXBJbmJyREZVSFRNQlduRXE4OUxKT1RwR1hERUJKcnRDcDhSZUFDeUpZY1gySnJ1VWxWbHBkVGFPVkZ0K0tjK252bUhnVnVHY0R2d0M4ZUc1blpUVjRLUEJwd0djREh6TFpLbXNLbVFnTFpUVVA3VkpzdVJORnZLNG95MHlMbUk2TnBUbklYSFFwa2wyS1JWek1ST3pXR0tvT21JQ3RNRDNpVlNkcmJMb3lQVjY3REdzMzRhWHFzVmhlNGphc0V6WHFLaG96Q2RkMTRNWGdmaEw0SmVDdDh6c2xLOGs5Z0k4Qy9oWHdHUENYeXFlbkNWbVJxVWhaamtwYll0ZnBXbUZYNkxvVnRVdHhEMVVjbUNuSkhTWmlOODlRZGNBRWJFV1pKbDZTcklGS20zYXhra1owRjRwNFhWTHIydktxeFVzbmFzZzBKek1uYUJ3RHp3WDNZOEN2WVM3QzArQVRnYzhuV0dYYi9lN0ZsbHV4cm5oZng4V21pZGdWUXJ6c1dzeFkzUFdoSEZXYXRrV1NPMHpFNXM5UWRjQUViQVdaUmJ6SU15TnYrU2hBVWJqT295d3VCNWU4RXEvb1F0VGlWV2NaNmtTTnVrSjhNem5qS3ZENzRKNEd2SUR4WnhHZU5ldkFod05mQVR3T3VEeFp5UHFLQmV2Sk0vY0lZclRyY3pwOUVqRUhWM3pYSXJ0R1NBU1JxdmVTM0hGb0lqWi9ocW9ETnBCNXhUaUplQkdUTlZ3YzErVkRyT3VTTHkwdXZZaGxkc0dWVlRWU29vYXl1bXFYWVVlNFBQQWNjRDhFL1BhcG5oVkRjd1Q4Y1Z3K0NuZ1N1TThtQ1VQZGE2eC92enI1UmhkWExxYlhvVjNMc3BQQUU2OVo1OVUvcWI2SVZlMVlVVXpBVm9oR3R1RWt5MHNHRjh1ZzVJdmtCSTNMeEhVallVT3FhelRqWFg1NnJBdUFQd1AzSGNDdkV2eEh4dG53aHdRaGV4YndkZUFlVFVmSXRKNjBGaTFFaFpEUkZiU09nRVV4U3RkdWo0ajUrSHFyWnI5aW1JQ3RDQTN4MHRPTTlJb1haYXhMeE91eTJ1NklGNVhMMElYUG5XUjFKZUY2SmJqdkI1NUJDSmdZWjg4QkllYjRPOEFYQWw4SjdzR3pXV1BPbFNXL1d0WlczNlNqNlRyeDFUWFNJMkpIWkJHVDE1bUlqUndUc0JYQTl6YzA2NVBFeStXeFhGcTR0SUNKOVNWcDhoM3hvdXN5YkZwZEI4QXpvOVgxbXJtZkFXTWU3QU0vUkJobjl4L0JmVEVwMGFQWEd2UGRqa3JMeGRnVU1KZmYzOEhubFNkWVhONWxDMHk5eEJnekptQ3JoVzVZMWh4cEVzb05WTXlMdG5qZEZ0ZVhYZWs2Rk11clR0YW8zVUphdUlvZTlZdkJmUXZ3M05NK2VtTXV2QTc0Y3NMdjlhM2dQbnhHYTR6eUdxaGpaUFdzMlM0cVVNZTlURFhnT2dXLzhvdlNRR2V6d3NhTkNkaklhU1J0U1BWdkVTNDlRRG1ONzFMaUpjS1ZCS3doWHVkUTA1L002aks4RHZ3Z3VQOU9xSnhoREl2ZkpFdzU4NVhnbmt6VEdwTkpLdVd4VXdMVm5MdXRZYkhWd3VWZEVDYUp4WGxQbm9GYTdVL3ZNUkViTHlaZ0k2YVZjU2p4aUNnd1VwUlhzZzNQK1RMbUplN0MyOGdDbGpJTzZWcGVtMHdXTC9rdS9BMjRmdy84MWlrZXYzSDZ2QVg0ZWtLeXgzZUMrNkRTSUpKNXg2YTVGTFZGMWhJdUlRbFd2UzJpUmtqaDk1VERCRTNFUm9vSjJFaVpsQzVQSGtTODZjTUE1UjN5dkZ3WEtOMkdXcngwMGtaTHZQVDRydDRHNldmQmZUM3cybE03ZW1QUi9CcndVdURid1gxdXYwdFJhRjJiblU2T1FvdFUyaWFYdEpJWVdCSzIrRDVkL05jWUlTWmdxMEVTTDZjbW9uUjVZa0laNnlXRGt5LzdidEtHV0YrdGJNTldJZDVPdy9SMmNOOEsvQUJXUldPTXZCYjRBdUIveDVqbTNicEMxamQvV3kxY0hiY2g1RWszWFo0OStwZ3Nhc2RlaVp6TDcwMUpIV2FGalE4VHNCSFNaMzNGakVPWlJWbW1RMG1XVjB6Y2tNb2F0WEQxcGNyckdaTnJ5MHUrQTM4TDdsOER2Mys2aDI2Y01VZkE5d0t2Q212My91MHNSZFJqVnowV1VxS0dzcnlPS2NXclhyUUZwb1hNa2pwR2lnbll5SmlRdENFWlg2MnE4aGNvQnlucmJFTXRZSFZSM3RyeXFvUHlBUHdtdUs4RS92WVVqOXRZTG40TitIdmdCOEI5VE5zU2czN3gwdWlZVjEyMnFpTmlYbGxsRFN0TVBzOUViQ1NZZ0kySUhzdkxSYXRyblJEekVnRXJ4SXZHWU9XZWJNTSs4V3JHdTM0VTNIOEU3ank5d3phV2xKY0Rud3Q4RjdoL25nVkRyZzFKOE9oRFcxTXQwWkx0STVkbmpFNHhNYktRclNzcnpFUnJaSmlBalJmdE5seHpaWTNESFVKVitmTTlXWWV0Q2h1dGhJMWU4ZG9IOTAzQVU3RjQxeXJ6VmtKYzdFMHgxWDZ0M3hvVGZHTmRXMXBTTlBpWVBDZFoydWRMSWRPTHhjTkdoZ25ZU0ppV2RlaHpyQ3E1RG4xcGZkWFZOU2FWaDVvb1h0ZkJmUVB3UGFkNnhNWlF1QUY4SFdIYzM5ZURXNTh1WXRCMkczYXEzcnN3eFlvV05EM3BaUkl4aTRlTkV4T3dFVEFwN3VYS0daVTdjUytYWTE5NnFTMHZLY283MWZLNkF1NUp3RStkOWtFYmcrSUc4QlRnbmNDM2dic3dXY1JxeTBuS1JJbDFsU3d1WDA3aGt2YXJUTVhrVHNUaVlhUERCR3c4MUducmFiQXlPV1ZlaTFlZHVLSG45THBBY0MrZUpGV2V0NEw3dDhBdkxPWjRqWUhoZ2FjUkxMSHZBbmUrTFdLZXNsMHFVdWhwVzJBMzR2YVJiUHNvWXVvOU5qNXNoSmlBRFJ4Zk5nQVF4U3VPOTBxekt2dHNmY2xFa3hjSlluWEpaMHZzSW5uU3ltWmhYbm9HS044Sjdrc0kwNThZeGlTZVFiaUF2aHZjZHI4bHRrNDdrYU1RTUs5bWd2WjVSdWphT2t1RG5RblduRTQwTWl0c3dKaUFEWmcrMXlGNXZGY3Ewa3RQMXFHNEQvMXNNYSttZUwwcmp2RXk4VEptNVljSUY5cC9BYmRWaWxqaFN0VENRM3ZtWjdHK3RJQVZRa1p3SnlZaG8rRktQS1hETkU0WkU3RHhvQk0zSmhicUpWdGZZblhwOGxBNlZYN0xUWjVCbWF2UmJmaUxpenBLWXpROGpYQ1JmUnU0S2p0Ulg4Y3d3UUlqVzErSHFLVjJMVkltZVloSUpsZWlXV0hEeEFSc29QUmxIYm9zTmtXMURhcllGOW42bWpqT3k1ZldWMkY1N1lIN0t1Q25ULzFvalRGeURId0hjQWZ3VmVWVE1qR2xqb2tWVnBqTFZwVUltUll3RVMvWk5sZmlTREVCR3paSlVDVHJrTGIxVmMrdXJCY1J0Y0x5b2gzekt0S2R2eDM0MGRNOVBtTUYrTS9BKzFBVUFaWjFLek5Sc2hHMUJaYUVpOG9TbzNJcCt0SVMwLy9QR0NBbVlBT2tTdHhJNDcxMDFpRmQxNkVJbUJZeExWNnpaQnpLLytOSHdYMDdkdWNidDg0dThHK0IrNEI3YkRjK2xkeUp0T05ndFpBZGtNWHJ3TUZoZEMrS0s3R1ZtV2hXMkVCcERTQTBscGhKQTVaZFY4QWtjYU8ydmk3UUZhL1dXSzltVmZuZkFQZTFXSVVOWTM3Y0NUd0plSGtqTVVrdCt2cldpVWwxYkRkZDMxNWQzejY0MUF1M3VHL1U3alNHZ3duWXNDa1NOMURpNWRvM2VDRmlyaFN2dXI1aGEwNHZYZ3J1M3dEdldzenhHU3ZFM3hCRTdFcC9KMDFmNDNVbnJaNU5YT0s2UlZhdGkxbTEwVnV4VnNYQkhEU0hwaGhMaWduWWdEaUo5ZVhidlZNUnNmT0VVbEoxMHNZazY0c3I0UDRkOExwVFAxSmpWZms5NEZ2bytQQzBKVllrS1pGRnJIYVR0N3dNSW1MRmRlNGIxN294REV6QWhrbEszRUFsYm5nViszS3FZQy9selh4ZUxYWFNSaXRkSGdnQmhtOEVmbmNoaDJlc010OFBQS3ZkV1V1V21PdFBWT3E3M25mSWJrVEpzSlZaR3VSNlQ1Z1ZOZ3hNd0FaQ1pYMUJDRFk3ZFJOdU9PVldpZGJWZWE4RXk3WFQ1YmNJcGFZbXhyMStGdHd6Rm5HZ3hzcXpEM3c5d1YwZGQ5WHhzSFROazYyd1BwZDV1dVpkSTlicnNoWFd1ZWFONWNjRWJGZ1VhZk0rVHBWQ0tWN1RibVFSc0NMdU5XbXc4a3ZBL1FkZ2IxRkhhYXc4Ynlaa0p0NDFQUjdXcWphak0yL1Q0aHRUQXZsMnZCY3dLMndJbUlBTmdNYU5sRzY0bUZHMTRjTmNYOGwxU0huelNuSGVFMDlLZVlVd05jcGJUL2NRRGFQREg5S2NrcWVPL1JhekxiZ2VFWFBaQXV1TWRUUXJiTGlZZ0EwSGJYMDVHbFUzYVBkQ1c5bFkwMUxtRTA4SGZ2MlVEOHd3V2h3Qi94WDRvOWxjaWJyeVRLY1Q1OHZaRmJaZHZ4VldYUDltaFMwM0ptQkx6aFRycXpOd3VaRjllRkx4U2lMMjUrQys4elFQempDbWNBMzRCa0xCNkxpckpXWjFhbjB0WW5wOWpoQWpsdnRnZzM0cnpGaHlyQkxIY09oWVg3NWhmYm1RSGwvNy84L0Y1N1o5NVRycDYzM2VGZU5lNzF6Z0FRNlpOWEx2WUpzeTV4dENGcWVVa2RnbnhCUDNzY0hncy9DSGhNSy9UeUZkb0hLZFNxMUVIUlBUQXJaUEZxOWR0ZDRCOWgzcysxaTVJOTRIUitvemorTC9zZW9jUzR3SjJCTFR5RHhzV2w5T3VVNTg2VDdVNDE5MHI3UFBkWko2bnM4a2pNa3hTbTRIUGhCNFArRGVjYm1EYmwwdU1RdmtCanNrMXpHNnJwYXJoRTdDbXdoeHh0Y0Fmd2U4WlJFSE15QytEL2hNY0EvcnFWcFBPTFdGTjhKMTd3Y1JzVDFneitjTVJpazF0ZTdqVE00dS93OFRyaVhHQkd3WVRMSytOdU9OdUtOdTJNSnRFcTJ5UHRkaFI3eGVCZTQ3Rm50OFM0Y2ppTlQ3QWc4SEhoWFg5eUwzQ09UbThiZll5RWxqZVVSb1dYY0pvdlpTNEUrQXZ5QU1Ibjh0cTVzSmVpZndUY0RQa2VZUGczWlc0aEhsWUg2eHdyU0lTVGFpR01LYkJDdnNpRENUczN5dUZmdGRja3pBbHA5NjNGZGYwVjdkMjlRaUpwYVg5dm0zc2c0QnVCSEZhMVV0Z0ljQ253ZzhFdmd3NElGeGYwdWtlbHExV1JzN25hN3RJZndZNHZPOUIvQWc0RFBpNjk0RS9EbndZdUIvQVM4a21BMnJ4RzhBdndCOFhuallsOWloNzR1dDZEYlg5OFU1UXFkdVZ3bmNnUXNlaVJzdWV6aTh5OFYrYmI2d0pjVjVQOXpmeExueHhsa3I5NkdNK1ZwSHBjdjc0TEc2NU9BeWNIY2ZQRnozaU12dHdOMGQzTTJINTJYQ3lycnlSaEgvK25Wd2p5Y0VCbGFGRHdBK2p0QXdQb3h3NGlaWVZhMzl0M29UdFM3azVzWHR3RjBsdUJyL0ovQmM0UDhRV3VGVjRLSEFid0gzeXVJaW9jVmpja1g2ZllLbGRRMjRBdHhGS045NUo4RzRsZVZkRHQ3dHcydXVFcnk2K3k1Yy9qS2pjNnBhUDJZQkc2b09tQVcyM0NUWG5sTkNSbkFoU3RGZWNaWG85UGxXdHBXNERudlQ1dmZCZlN1ckkxNGZBendCZUR6d1BtVFJxbTVsUDhQMkxJK0ZXcGhxRjVXT3ZiaDZ2d2QvZ2RDUWYzQk10UGwxNERrRTYyVHNMc2FYRXVhZyswL2hZY3NLNjNnblhNN09UZmRJZEt2dnh2dGozNFdPNFFaQnVDU21kb3o2ZmN3S1d6NHNqWDRKOGQyR1M5K2NSZGtvcjdJUHFaSTJYTHZXWVN2dTVRQitDdmpqVXorNnMyVUxlRFR3YzhBdkExOEcvbDU1bGw1QjkreDFEMTl2dCthbDBuTlQxZnVuUFY5L2J1di9KcGRXL0pKK0cveW5nMzhtOENMZ1h3TjN1L1hUdE5UOEVDRk9xM1oxeG9mUlB6YnNIRUc4Uk5CMjRtczJYVmo2Wm1JWXI3dG53SmlBTFMvNnhrazNsQXV1eEUzZmpYL1ZGdGlKcks5M2d2cyt4dDI5L0ZEZ3h3blpsVThBZjJtNmFHa1JhWW1RbmtpeFhrOWFXdThwWmc2bUsyeXQ3NWErL3hyNGg0Ti9PdkFyd09jeTNoYjNEY0FQa0lZZzFCMnhwb2lSUlV4YlltbmtnNnZtQ3ZNMkptd1FtQXR4dVdsbEg4ckF5eTNKUHFTOElXV1pOZXZRQVR3TGVNa0NEMnlSM0EzNEtvSjE4bDc5cmo3ZjJLN2pMT214eTFaYnZlalAxTnNkZHlEVjcrRHliMTAzeVBVK25TRlhmS1lILzVIQUkyTXM4MXNJYnJleDhVemdDM05hUGZSNEtpZ0ZURnRpdFFXV2lsckhlUE5hRkxGamx6L2Z4b1F0R1NaZ1MwYVZ2Q0dQMTF4TzVKQzZoL1ZOMmVsVjBoV3dwdlgxZG5EZnpUanZ5bzhIdm8yUUJ0OXdFOHA2a2xnMTNYbSsvZHBKUWdZOXdrV09iOWFpdFZadFR4SzE0bjlzZ0g4Q3VJOEN2aFY0QnVQS1dud1g4RlNDa0RFOUZsYU1sU1FQK0svdmxTMmZCemJmd0ZMcWx4NFRzT1VrM1pBdXA4Nm5lYjljS1dEMURabHF2Zm5wazFRNkNHNjFzVTFTdVFYOE8wS3cvN2JRY3hiNmhLc1FLaGNIdE5LTmQvWEZ3MXF1dldrQ1ZndFYvYmlJeDdoOEhmUUpXeUZrSHZ3OWdlOEI5MmpnYTRFM3puYjZCc0d2QUg4RjdrTzZWbGh0aVhVNmZMNXJpYVhpMXRIVElUTTlyR0hKSEV1TENkZ1M0ZW4wcENkWlg0V0FWYjFKWFRLcXQ5STh3SnZCUFdzQng3Wkk3a1Bvblg4T1RhdXJKVndka2ZMZE9GUzlYUXZhTkJHYlJieldHK3UwN2F2SDFYdGJ2NjhqUE9FL0Q5eERDVzdVc1NUcTNBbjhNS0hNMUhwNXpGcndPM1VTWFptVm1OenRxdE5YdTl5bHZKVDhEeE92SmNFRWJEblJzUy9uY3VYNVl1b0lTaGVpakEzckpHNVVQZmVpa1hzZThMS0ZIdHJwOGhCQ2x0cGpKbHRkdFdocGdiclJXTmY3MHVLeTJOVWlwdjhmbE1KU2lGZnM4V3ZCMGpFYy9idlgrK281M1BTaWNSNzhod0MvQk83TENXbjNZK0Rad0ZlQWUzQWpGdWJMYzVrR04vdnEzcEg3eGdjUmt3U3BBOEx2Y2dScEdJdXhaSmlBTFIvNlJwR3FBSzJzS2wwK3FsbnJrSnhSMVl4OVhRWDN2WXlub095akNNa29ENWhzZFUwU0xaMFJLUFh4SkI0aSt3cHg4MjFyckJVUGF5Vm5pR1dsZjErOUZwZldocklNOUcrN1NWZk01SC9XdjdjRHVDZjRud0IzTy9Bakp6L0ZTOGM3Q01meC80V0hMU3RYbDZWc1ppVDZydWRDem5tZHpHRnV4Q1hEQkd3NUVjdEw5eVQxN0xQSm4xLzFKdVU1SGZ2cXpUejhaY2FUb2ZaWTRIOEE5KzBYcno3aGFxVzlIOGphVjgrNUlGcXRsSGN0WXJVVkJtM3JxM1lWaXNVczZkeFM2MUs3d1BSYUw5cEtFeUdyclRFSGNBSDhkNEhiQkg1d3h2Tzd6RHdiK0JwdzkycDNGbG9aaWVuK1VlN0VkUCs0UEtoNTNRY0x1WlV3WStLMUJKaUFMUW0rNmozR0hsN3FwYnRjZmFPK0NZdE1LdVVDMGU2VFR1eHJiMFN4cjQ4RWZwWlVYZ2pLdFFpS0ZoazkvdXBBRmhjRTY0QllIMCt0dGFEVlk3ZGFBNUtUY0RyVlk2Yy95YUFRTUdWdGFjR1MzMXZpT0pMNnJaY2pRc2JkY1d5QWRZTmVDTmtGOFA4ZDNESEI1VHBrM2dEOERQRHZ3ME94a2xyeHhZNEhvNDRkeS8wakZoalpRblpLeUV5OGxnUVRzT1dpY0I5NjFkRDUwcFVrUlVvNzFwY3ZlK04xZ0QvOWp6OGpGSVFkT284QWZvS0o0cVd0cnRyaTBrSzE1OHVwdXZaY21DOUtpNWdJV2N1ZG1GeUlUcVhaVnkxZHlpcWxiRmc3YmtQS2hsYi8zanVVVnNPT09xNHR3di9lak1jdjk3ZUlsMXhQSG5EYjRMOFQzTHNJVnN5UWVRN3d4ZUJ1eStJMXpRcmJWdXQwRDhWT2dWaGdHNmpzVDUvSGhBSG1SbHdHVE1DV2o1YjdjQjBsWHBTQmFOMERMOUxtWGJlYVFCS3hueUZVTHgweTl3TitraUxtSld2dHh0UHVRdTBpRkxIU3k2NWUreXhtdFNYV1o0RWRrOVB2UFVCbGdhVnhmWFFGckU3U0tTd3ZKVjQ2L2Z0Yy9FNnl2MVc5dzVQbjFaU1U4Q1JpbDhEL0FMaTNBcjgvKzZsZk9sNEl2QUQ0cDNsWEo5WklPWWZlWnRVQlRCVTV5QjNCWklHWkczRTVNUUZiQWlyM1lYSTN1ZGo3STFmZ2tFR1pFbXpXUGNuT21DOVBKLzRGaEtsU2ZtRWhSM1o2M0E1OEQvQ1F0dVdseFV0YlhTSmMreTRJMUM1aGtma2w5V010YkRMbHhxSHZGekE5ZGl4VjZ2REtqZWVxekZMZmJseDFBOXRYQmttbXl0bUwyd2ZxKyt6UVRpWVJPaUoyTy9nZkJ2YzQ0RzlQK0Rzc0M1NHdxRGtLV0Y4eVJ4S3d5djNhc2NCUWlSeVlHM0ZwTVFGYkh0Sk5KMjRtcjI2NnFrRXJianBLQzJ4UzFRMEg4UFBBMnhkeVNLZkRHcUc2eHVQb3RDTGFiYWpGUzZ5blpHbEY4YnJtb25qNU1QWEdkZUM2eTg5ckFUdU04YkZERnovWHR5MnZQdUVBMVlPdjNJZ3B6a2xNNEZDL3RReVowQVBXWldiaDg4VHBQNVN3OW1WRDFxZFFSQXlBQjRML1FVTDVxYnVtblA5bDViY0pSWDZWUmQ2S09SWVppYTZiVmk4RG1qZDlIdFRjNjBZMHpoWVRzT1VpSlhERTdUVDdzcmJBZkw3eHRIalZXV2hOOFRvQTk3eUZIdEw4K1FMZ1N5a0dLV3VycXlWZTRpNFVDMHZFNm1vVXJxdHEzM1dmcmJGa2ZaRXRNTWxDYk1XOWttaklkOU11eFBobFU2TmFXV0dGdTloVkxtUEtTVXZQbzhTMXNncWJ5U1NOMDdoRzJkRHpjY0RYQWQ4dzA2K3dmTnhGbUNQdGE4cmR2VllZWFV0TTRvMVNuYjRvN3R0eUk4YUFtMWxqWjRRSjJKTGhzM0RwNmd2MU9KWmF2UHBLUm5YY2gzOFJsNkh5S09EL0pWU1hpTHRhNGlVQ3BzVkwzSVFpV1BWeWpTeGl1OEJ1bGNTaHg0T2xRY3hrNjB1K1F4SU0zYkJGbjFQaDJsS05ZajNlTHhWdHBwdTAwM0Z0MGhXd3ZyRm9MVktDaHdmL05lRCtCUGlsQ1c5WVZqendhOENYZ3J1Y2QzYzZnMHhJcXlmZVc4cmpzWTRhRHdZMnFIbVpNQUU3WTN6VnEzT3FjYVBIaGVqeVRkYXFkOWlxT28rc2Y0dFFnbWVJN0JERTYzMjY0dFdLZTBtV29SYXZxNFRaZDJVRzNpc09ydmhLd0Z3VUNGOEt4QTNYN3pZc3F0TlhQWElkQTVNZDZiZldNVEc2d3lhU2lNWGZlNXNncW5zRTErRytMMk56V3NEcWtsYTE5VkJjRjdLOUFmN2J3YjBJZU90TXY4cHk4U2VFR2FvZm5YZTEzTFpGc2t6RG15SDNtb3pMcXkwdytWeXp2TTRZRTdEbFFrK2RvdXNmYmlpaFNtNlBTcnlTOWVYSzdFTmtmUjNja0pNM25reHdjODBROXhMeGtxbmx0WGpkRlpjcndGMCtpcG1EYStJNjlOM01RMjE1RllWK1JiaDhPZVpyWXNNbVBYZ3RaSlMvZSszdTJpQlhTdTlrUmZxRysxQUphdnlYbmNRRzR1ZUtCWmkrM29QQi8yZHdUNDRmT2lTdUE4OGxDWmlJVENzVzFoZGI3bmcxbE5XMjF2ak5iSXFWTThRRWJIbHc4VS9SVzZ4Y2lQWE4xWnFzTW1WTVVUWlcvQldoZHpwRUhrNlkwNnNSOTBxV2w0TWpYN29PVytMMUhoZUVTNFRzS2lFV0pna2N5Zkp5WGJkaEVpOVhpdGJNNGlWZjNFV0x6T2ZmTzFsa3RUVkdhR2dsaVdSTExDNzEzVHF4TDUvUFRTMWNyYW9zeFhVQ0ljNzRQNEhmbVhZd1M4aHpnVzhEdDlrV3I4SUs4K1Y5Vkl1WXprUk1IWXZLaFdpVzJCbGlBbmFHVkRHUlNlbnpyYkZCcmRoWHMrYWhiUC9TS1IvUGFiRkJtQmJsam43eE9pYUlseDZnTEVrYkV2TzZBdHdWeGVzOWF2c3FLbzNlTjJKZVVSaVRjRlgvMzd2OG5VNFMwTmNkRm5tczNWM2FJcnNScndQSmZ1d1VHSFpWRW9sOHBuSlQxb1BhNndrMFFjWERMb0ovQ3JnL2lpZHlTTHdhZUJHaHZGaWsxd0tqTVdpYzB0c2hZeXAxeDFDeU9FMjh6aGdUc0xNbk5XQ1Y5VlZYMHE3SEJqWGRoN1I3MlZ3SDl3Y0xPNlQ1OGluQVozVjN0MXlITjJpNERsMndzTzV5OEo0b1h1OXhJZloxeFdYcmF5OWFYM1hNU3o1Zi9sK3l0bHdwcVBWM20wVGQ4RWw4TEswcGY4ZmpLS0s2Q241NnJGMmE2bk1MUzc2MStPNzFVbnlueHdDZkIvellsSU5aTmc2QVg2VVFNT2hhWVgyRHg1djNsMis0NXgzR1dXTUN0ankwZXNvYmFwRWFiYTNZVjU4Rmx1NnhGelBNUWFvWENCTXhNc1g2UW8zM2NqR0wwTWZFakJqbnV1S3pGWFlsdWhDditqanVDeVZlVHFYS1IzSHdyaFNIbXhXdStuV3U1N0UwanNjK05Kb3laa3VFVEt6QnZqbkl0SVdWNHFtVVN5MW9MVmVpZnhLNFgyVjRDUjB2Qk40Rjd1NTVWOHVWMkV6bWNEbXBRenFOaFh2ZWxaL2xzRGpZbVdFQ3RoeG9kNUxFUVpvcDlMN3NLZlpOdnRlSmFieVFZV1lmZmhid0VkM2RSZXlMc3RLR2xJQ3FzdzVUOGthMHZDUnA0M3A4dlloZmlpZUpTTGhTSFByRXE2Q3ZNZk9WUURTT3krbDEvQnluWWxxUzhhalQ5MzE4VXhIekVVdmVseDJkdXNOVHBJakg3NUZjaVI5RytBMitmOUxCTGlGL0Nid2MrTWZsN2tMWXFlNHYzNzdIZWhPa1hQbTVKbDVuZ0FuWTJlT2dqSC9SSHEvU1d1ckdxTzRaQXJpRGdib1BMd0ZmRG16TWJuM3B0SGxKaXhjUks4WjgrVHptUzRyMkhoTGlYa2V1SE9QVkVpL2dSUEd1bWQ3ank0YXdFRFBYUFhaSklpRnV5NHZsdDVlNGpXNmtteUxtdXgwZitUZzgrSzhBOXhNTXEzYm1OZUJQS1FTc0kreFVBNXNyRjMwbm5SNVZsWVB5UGpQeE9pUFdwci9FT0ExOEpUS3VIWEF2NW9oaXNualZOeGF5dmhQNG80VWMxWHo1Wk9BZjVZY2Q4WEpkNnl2RnZ0eUVBY3N1dWcyZEdrdUZLaEhGaE1IQUxscEFwK0V1YW54Mi9mOGxXZVVvZmxmSlRCVExVK0orMXdqdTBkWmdiVjFsUkZmWDd6M21Cd1AvZk40SHV3Q2VuemUxMWF2ZGlQVWNiQ25Xck5ZYkxsdXE2M0tQK1h5dkdtZUlXV0JMZ3JiQWZLNGFrSHJMdnV3aE5nY3UxNklvbi8zbndMc1hlQ3p6WUJ0NEVzMjBkR2xZSlltaGNCOFNHM0ZmV21DeVNLYmhMam5ab3hpazdMckpFRW00VHV0WVc4ai9hMWxsaFk5UmJhT3NpOHI2a211bk5kYXBUZ0xTQ1IzSkNuc2l1R2N6ckRxSmZ3emNTU2hXVERjR1ZzVENmRmxlcWxpanJDOTVqOFhCbGdPendNNmU1SmRYc1lnNjZLNVRlbHZKRzMzeEx3ZndHd3M4bUhueENjQWp5MTIxOVhWTTEvcEtBa2F3dE9vU1VXSjlTRVY2UGN0eXkyMTRKdUtsNmJIR1pEemFrVmloUGxoajZSejRZR0VtVjZvU2RHMkY2VW9qZlZPeGVBaS94V01XY2NCejVOM0FIM1ozYXhHYmxvM1l2TmNrRGxaWllHYU5uUUVtWUV1QXVoazZzekNUM1lkOTR0WEtQRXczMHo2NFAxdmt3Y3lCZGVBemdIUHR4SW5rUnFOYk1pcE5qZUp5VVY0dFhucCtyNko2ZXl2bWRWcXV3cFBTNDFiVUluWWpMb1VydFhJcDZsSlp1OFJoQTVUem5JbUlGZUlGc0EzK3N4ZHhzSFBraU00Y1ovVTlrZ1RNMFhUVlMzTEhobnBkeTlOaDRuVkdtSUNkTGVuaUY1ZEV2RG5xS2VhbmlWZHYvT3NWd09zV2RUUno0bjRFQVZNVXlRdksrcXFuU2tuVjVuM1gyaWltUm5FNVRiN1phQytEY05YMGlSaEJ5UFM4WjJrc25Nc3h3U1RtUHJ0UzAvbWd2NDVpT2llUEovdzJRK0t2Q0owNCt1TmdLV21xRlFlam0vQ1NyREJuY2JBenh3VHNES2g2Y01pTlVQbllVeTFFMnRsamhmdXdMLzcxY3VCdEN6aW1lZkxQZ0x2bGgzV2ozWXA5ZFN3d1NwZGhKMm5CNThLODlWaXFwUlF2WVlKTE1RM20xcGFZejJQaVd1ZGx6MVVGaSttS1dPSXk4T21uZW5UejUrK0IxK2FIK2g2cDQyQXBadWh5cDFGYlpaTE1rVnoxNWtJOGUwekF6aDd0UG5SVUEwOTlLVng5UWZlK2dhajhIMEtMTkJTMmdTZlFTZDZvTFk1VzhvYTJ3TVRxcUJ2cGxHM29KalRVeTA3TEVsTkxZWm02N2x4b2hhajdyb0QxWlNUaXdmOHp3cXdBUStIMXdDdTd1eWZGd2VyeWJXbE9NS29PbzZNbzZndWt6cW14SUV6QXpwYmtQblIwQ3ZocUs2dDNFQ285QTVjQnR3L3VMeGR4RkhQa0h3RVB5UThMSzRNWTg2RTdXYVdrejJzTFRGeGtSWEZlcHhwb3QyUUpHemRKK3Y2K25BdnRCbUdtNWlUd3JoVDRYZGVlVjZ4dk1rd1BvYWp5aHk3a3NPYkRFZkNTY2xjcmZ0Vks1dEN4WjEyRlk1MmNjR1ZXMkJsakFuYkcrUGJOSkRkSzdVS2N0UlNRZzFEMGIyZ0pIUDhFdUsxdGZXbExRMXRmTFF0c3orVWtoY0xDOEJNeTdZWWtYaTFYWXR5blJmNlFJTnk2UWtrNlR6Nk9oYU5oZ2JtdWtBRndkL0FmdFpBam5COHZJbmtoSnNYQk9pTG1HeDFIVCs5MFJTWmVaNEFKMk5sUnV4MEs4Zko1TE0rRzY3ZkFXbU5TRXE5bldEWHNMZ0lmVSs3U2pYVHRJcXZqWDRVTDBWZnVNWlcwMGFxd01TanhFbHhYNkpNclVjWEU5R0JuZmE3RU91MklQTEdNRm8xRURvQlBKUGpXaHNKZkFnZHQ4ZEpMMFhHa1lZRlJkUnlWQzlFNEkwekFGa3p0Y2xEdXczUWorYktHWFIwSDY4eTYzSmZBOGVMVFA1eTU4djdBby9MRFZweEh1OGkwZ0lrTFVUZk9ldUxIWkgzNWZoZlprT216d3ZxU1hjU2xLT2RvVWlMSGNmVi9lQXp3RDA3L21PYkcyNERYNUllVHJMQlV3aTBtY3RTdWZGMzF4b0ZWNURoclRNRE9odUtDcnkwd3lwdWx2bm42NGwvTkJJNGg4YkdFOGhDS1Z2SkdVWG1lM0Nqcnhya1k2Nld0TDljUXJpRmFYMExsU29TR0ZlWktkNnNXTFcxOXRkeUlUYUhmb1dNcEx6V0hOTzhGUjVtRVVkeDdQdDk3SGZIeWFuRmx4OUdFYk1HWWdKMHRoZVhsMnY3NGpvaXAxem0xTGo0WGNIKzFrRU9ZSDU5RWtYMVl1Szk4Ti81VlcyQmF1SFNqWEZ0ZVk3TytPaUttckRDWmZ1VUdRY2dMMGZlNUlrbHh2bERWK0dtNEVUMzRqMTNjNGQweW51QkdWQ1N4OGYwZHh5SWU1c3JpdjBYaVZPVkdOSXRzZ1ppQW5SM3A0dGZ1Q01xYnBDVmlrcVU0TVgzK25jQ2JGM01jYytHOWdBL0tEL3RpTzdWRlVZdFhLNTR6dXRqWEZKSXJVVnV0THBhYmNsMHJiTCtLRmNwNTB5N0UrdmZnWWNEdGl6cWlPZkEzN2QyZEdCaU50SG9vWm9kSUhVMXgvWnRnblIwbVlNdEJIVWpXcGFSbWNSM1duOFBmQSs5YTFMZWZBNDhDN2xudXF0MkhTY0I4T3dhbXJZZ2luaE5kYVdudUxFWmtmVlhvWTlNQ3BCTTZXdTdFZE01OE5SYXNUL2pmRDNqb1lvNXBMcndaZUhmLy9hTHZ2ejRyTEQzMkZGVTR6SVY0aHBpQW5TRzY5Nllzc2I2Q3ZxM1UrZDRNeERjUTB1aUh3c09CbmE2b2lQdlFVNDV2a3RpV0ZxeFdNa0xLcVBOMFpsVWVsZlhsdWxaU2NpUFNyVjZTUkV6Y2h5NmZ0L3JjTlFYL052QWZlTXJITkUvZUFid2xQMndKVDlOOTczb3EzOFJGRDJZMnpnQVRzTE9oMHhPTVlsWllZSlEzazk3WGw0R1llQ09oUlJvQ1d3U1hWS1Mya21vWFlrcmk4S1VWVnJqQVhLeTI0ZWpQcGhzcEtSN21sUVhyVk9WNnAwVE1SeUZUNXpMRndPaXZpK2dCSHNGd1d1NjNVUWlZVUZ0Z2Zja2NmWjNIZEErYUcvRnNNQUU3UTZUM3BrUklSdmkzWW1EVFNrY1ZRamFrQXI2M0F4L1MzVDFKdkFvclFtLzdNbVZlc3ZFa3ZUdzF2bU95dm9SV01vZEs2RWdXck84NWQ1UVdXRXZFQ2o0TU9IZWFCelJIcnRFYkUyNWxJdmE1RXRPa2xyNi84MmhDdGtCTXdCWkk2NEwzMWMzanl4dW8wK3VqWDd3U0J4VGpYcGFlTzRBSGxydFNRK3k2SWxhNEVhbGlYcTZNNFNUM0llT05lL1ZSdXhGbHJjOVI1L3hSeGNEb0RqMUk1L0NEZ0VzTE81eGI1elhsdzNUUGVEb1dXRjhIY3QyWDk2anp0R3NpR292QkJPd00wZkV2eXB1Z0UxQjJwZHVpTi9zUWNOZkJ2WFpCeHpBUEhrSTR5QW9kLzJwWllESVc3RkF2WG9uWENyb1BCYTgyZENLTWlMcFVyZGNkZ1U3OGkzYnlTK0lTblk3SFV2TXFPajkreTNWWWR5RHJBY3pUN2o4ZzM5dkc2V0lDZG5ZazYwbDZjYjU5SXhXV21aL0JBdHVqNmU5ZldoNU8vL2d2MnRsMFdzUTZEYS9yV2cvNmMwZnBQaFFtSEs4SVdlb0krUEs4TmNXTC9CdDBQdGVEVjdITHBlY053STNKYnI5QzBGekRDMUxGcWZWOTIvbzg0NVF4QVRzYk9oZThFcTllRVhPVHhTdnQyMk5ZYzRCOWFONXNaaUZTV21BdE4yS3I0VDMyMFlKekRldGhWWER4SFBqK2prRFJHWERUa3pnRUQ4M1k1ZElTQmF5bXZuKzBlN0RYaFM5dXgycHRMQmdUc0RORStjNlRHNUhTUlZGVTU2aDg5YjN1aTNjUzB2S0dnQVB1MzkwOXlRS3IzWWdwcGlPTnIxZld3eXFMRjJwUU0xVThESldWcUJmbGdxMEhNamZQNHdNV2NSUno0azBVbWJtdEJLZytkMklkZjA3V1YvVXZMQTYyWUV6QWxvTjBJNmw0V0ozVTBVbmljRDFDTnFRTXhQc0F0NVc3NmdTT1ZneXNzTVI4bnFCU3V3NlB4ZnJRbnoxbTk2SFFFdTNXdWZSZEFXdWQ0MVlNTVgzMmV4Tm1haDRDVnduandYcG9pVmlmbUJYV2wydUxtYkVBVE1ET0NGL2RBTW9WMFJFdTE3MjVKdmIwM25qNlgzOXV2Qjl3b2JzN3hWZ280ekMxQzFGbkcwcmEvSkUwMW8yNDJxcVJ6a04wcFlxdzF4WnRPcThxZmxoVTdlK3paTzhHM0hzaGgzTHJIQkdtR0txbzc2VkpsbGpSdVhSVDdrUGo5REVCTzN0Uy9NdVZyb2xPNEpneUJ0Wk15NGRoSlhEY2wwTEE2aGhMNFVaMFUwU01uRFdYM0llcllIRk5RNTJIVmxabklWNithM2tkcS9kMVJPeHV3TDBXZFNDM2lLZC9mcndKbmNTT2tEWGlYaVppWjRRSjJPTHA2N1VsSWZOMEt0UFh5UnV0ejBpUEo3aEpsbzczSWRUb1VkUlppRW5BZkxmUkxZUUxOV2JKMDdIQVZocDFQbzZWaUJWQzVodm5rMFlkUlAzNEluQ1BSUjNFSEhqbjVLZjdSS3QySzNaY2h4NUw1RGdMVE1ET0VPMDZySlk2WWFNVFFLWVVzZUxHR1pLQTNaUGtLcHlVZ1ZndmtvRFFFVEdWcExEcUNSeENjUTVjMXkzYnNzYmtITmRwOUozenVVNklndzJGdDdkMzk5MkhMU0VyMHVmN3ZDREdZakFCT3lOY0tUN3BabkhadDk2NmNhYUtGd3hId0J5OWpWOGR1K3E0dmNSYWNCVHV4VHBtVTN6bUtyc1RLeGRpczJOUXVXaUx6Z0E5blF3UGZrZ0NWdDBiZmVKVGR4YnJZU3gxQjNPV3p6Uk9BUk93QmRIcXFmbUdpSGs2UlgzN1hJalVueWZQdmZ0VWptRCs3TkJ4UCtsR3N1TkNwTElZWEhZcnByZ1hVYWdxRitMSzBiSStYWFZPWFhVK2ZiL3JzUDVkQ3Q3cmxJN2hOSmd3UG5LcUJlWjdPcEVleTBJOEswekF6aGdKSHJ2Sk4weGZObUtIWFlZekJteUhrQVRRb0M2K1c0dlhzWWlYcXl3STVmWktuOFVLQzVtZ01oSFRlZlZkNjZ0dm1TaGlkNmNUeDF4YTdtcnZibnBEYUF0V2J6a3BFN0hGWXdKMlJualZlMVByaVRkUVpjVTFyYkRyTktzTkxDVTdkTWFBMWJUaU5YcCtxOExOcGEwdXQrSXVRMFhUOWVkeXdvdDBCblNacWFteEwvMzRIc0RtYVgzN09STTdkMzJ1UC8xY3IyZzE3bFh0VFVtZlowa2RwNDhKMk9McGlGRERzdXIwK21qY05IUnZPdllZam9CdDB4U3dPbGJUY1NGV3JpKzl2Nit4WFhtVW9Hc1hxNjVTcjZlZjBaYlgxTEZnZDJjNEFpYWw5M3RJOTVlYjRnMVJyekgzNFJsaUFuYjJUT3I1MVRmVXBQZ1hNQ3dMYkp0aU9vNitMTVJheEZKRDI3T3NmUHhyQ29VcjBUVTZDZFg1MVM3SDVqbTl6SEJjaUFlRVRsNUZwME5ZV1ZsTmQyS1BGOFZZSUNaZ1MwQXJtYU5lZXR5SEhYWVpqb0J0MHBrUXNaWEEwWnZFUVVPNDZINmVDVmtYUFNhc3R6UGdTZ0ZMNzYwZWM0SG1kRGhMU1NWZ2s3d1pNM2xEWFAvN2pRVmdBblpHdUs3cm9iN3dXNVBrVFhzOEtCZmlCaUVPVmxFM2xzazE2Q1pZWGJWRllmR3ZMc295YlZsZW5ZNkN6L3NteHNIT01Td0JtNURrVkloUXc3WGZXdlQ3akFWakFuYjJkSUsvc3JTQ3hlcEZ6WnZta0dDYURJR3RzT3ByR0R2WmNpMXJ3WlhQYWZkWXdZb0xXcEZCNkpnY1k2eVdQaEZMNS9NQ3cybElaQnFEQ2ZTNUVadmlaVzdEczJVbzE5Mm91WWtnY08vcmp4aE9TMzF1OHRNdGQyS25nZFh4bk9wOXJjOWFhU29ScjRXcDdoajR4bXVhNTNpSDRWaGdja0FWVXowZDA3d2hEWStLc1FCTXdKYUhPcXRwbXR1aXlaQUVyQ2Z3UHlrTzFtcFFpeW52cFpHMkpJNGtXTDdlVjF0ZkxkZXNMeTJ3U1IwRUQvaWhOQ1FTUUczUkVLQ1p2Q0dOeDhhQ0dNcDFaOHpJZ0FXczFValdJdGFKMjdqdWMxcThMSW1qVGN1ZE9HMEE4OFJ6T1pRc1JNbittY0NKeE1pc3JyUEZCR3hrREZqQWF2cGNpTnJhU2k1RVIwZjhqQW9SZGkzNk9sSERkY1dyemtMc1BjY0RkeUhXOUhvL0dsNFM0d3d4QVJzWjB2b01nUmthdmFZbDVzckcxMWNOczlGbGtuVXE1N053eGRLMndLRDdmbUE0RnRna0Y2SXhQRXpBakdXanppS3NYVmM2aGxQdkE0S1FtWmhOSkFtK3VCQWJydGhKNHRYQlRCSGpMREFCTTVhVlRyTEFoRVoyMHZ1TUJsV3lTMnQ4Mk16aVpSaG5oUW1Zc2N6Y1RLTnBSVlM3Tk9NMXZpSCtMZXRXUDI1bE5ockdXVEVVMTdXeHV0eFVZK21yUVBzS3Q3aTlZdTZDMlBjOVovVWtqYVhIQk14WWRpWlpVMFYybUloV1l4emRLdFBKb0NPZnE1TmlnbVlzRlNaZ3hqTFRhbU9ib3VWN0JweTY0Q1pmWmJlWG5Jdk9yTUsrZlE2QllNSDJmSlpoTEEwbVlHZUV0aGJxeHRjM0d1bXovYlpuUXFmYWdTL1B5VnA4ckJ2bGRXRGQ1UlJ3UjFsdWF1VlFybFNaMVZ2TzF6cnEzUGxTNk15Q3pVeThSN1dyK2lhdFd1TVdNQUZiSEhWWkdpQTNNTFhsUUx0Y3pVcmNINVZnNi9PUnJJallFSzg3V1BlaE1kNXdVY0I4S0krRTc1OFNaSldRYTY0NFo0VHp0SUU2aDA1MUNpaXZ0Mm1XMlJpWmRBKzJ2QUJBTi9iSzZsNTNDOEVFN0pScDNQQzZ4OWJyeXFtc2pGYURQbFpheDFyUGhpdU43MFpjYjhidFRjSTRWZWRENGZHNk1PM0tvUnBUc2JhS2N3WnNWdWR5bmNic3czUi9sN0hTT1ZZUjlaNTdWSGNRT3AxUHVmOVgxUU53MnBpQW5SSjlWa1REVlZQRUpxcDF5NlhUK3Z5eDBHZDV5WGxZajhzR3VSSGVkTERsd3dUUE1wWkpyTExrUGx6VmpMckt1bDl6V2FpMmdlMTQ3amJKZ2lZaUprTFc1eFVZM2ZVM3hmSjNQZmZvV3ZWOHNzejBSNXVRblE0bVlIT21jUlBJT29tVnkvRUhpZG1JQzBkY083b1g3T2oyaER1dW5SRVF2WDVwdXlWYzY0U0dkaXN1Mnc1MlBCdzZ1S0ZpWWpJdDJyR3pHRml5NXNuWDNDYmgzRzE3MklubmNKdDhYamNwejNtekU4WDRyajlaMTVhLzNpN3VVOVZaV25maG1sdVBGNXFuVzlYTmhHek9tSUROaVNuQ2xSb1ExN1VpeFBXMXFYdkNydXZTYVRVZ05CNFBuVllEc3U3eWVaSkdkb2ZROEI0QVIxR2s1SnpkQUk2Y3F1KzNxaFlZbFV1YUhDL2NqcUoxM29lcDJYYmlra1FzbnMrNk16VkdGM2JybnFvN1VPbWVWUGVwM0xPSGhPdE9paUxMeGVaY093WnJRalluVE1CdWtXbkNSWGJkSkl1TGVCTkU5ODJXaTQyR3o3M2ZGSmRnc2t1bi9yOWpvV045eGZPaHhlc2NvZUdRWHU1YVBIL2J3QTBYUlUyZVg5V0dRcTVQaWRINGZQM0p1VG9QWENSTXJDeENKdGRqMzdVM0ptYXgvT3Q0NnlibGZadXVONmMrSjFwa2p2YThhbUJDZHN1WWdOMGtzd3FYV25SRHZCSEZLN2x4Q011Mmk3RUpKV1oxSXpLeEord1pUclZ0NVYrUlJxUnBmWkViRGhHdjg1VGlKVzZ4ZzdqL2hnOFdXS2RpL1FxU1lqTHhtcTNQNTNsS0VUdFBGakY5L1UxMFl3L2xtcHN3M1ZEZnRWZWNMM1YveW4xN0dNVkxNbC9sL1RmaStvaitPZFlFRTdLYnhBVHNKcGdRN08wSVYrejVhdUhhOUdIWklyakF6ams0NStHOGkrNGNWN3B6cE1jM1RjUWM4UTEzQUx1bmVRTG1nQWN1bDd0cUVkT05pRFMyMndRcjRRYTV6VXd4SFlKNFNmeExMREJKN0ZqSmhrRVNPRlFpaDQ0bGJwSTdCQ0ppNXdubldHSmljdTIxTWhMVGZYQjdYSmFkZTFBMGV0TTZUdm84YWJmMU9RY0gwZks2RWErejVLSjFjT2pESXM4ZnVjbVRoU0xyNk81ZHlXdjFaakFCT3dIVEVqU2s5eFVGUytKZDBvUGRkTmxucmhNUXp2dlE4NzJnMXRLSTdCQWFrcm9uM092S2VTVHdQTEx2WWxrNUJ1N2UzZDJNUGFBYUVPbnR4dGRyOGRvbldsOVU4UzlvRnE1ZEZkSjE2cW80R1BuY2FSRzdFRHRTZlZaWTAvci9ZVUtuYVptdk9VODRvQWYwdjZUdjJwTnpkQzdlbXdjK1htZnh1dEloZ2cwUEJ5NnNkWWNxQ1puUENVYkp4YTIvcGxsanMyTUNOaU9UckM3ZmNCVXE4Wko0Vm9wM3hlRDVqaThiamtzT0x2bHVQS0lsWUwwOTRkdUFSNXpHQ1RnOVhFTmN4TzJWR2dYQ2VUaFdycG8xdFgrZjRENjhFWmRqMysrdVdVVzBGU2JYajhSWHhiTGRKbGdXT3Fsam16ell1VFVtVVQ3Y1BYUXh4ekUzMUFVeHlmTHZDQmp4T290Q0pPL1hNZG85Qi9zK3ZPN0E1K3Z5MEdYUHdScTVJOVpLOURCcmJFWk13R2JBZDRXaXVOaWxvVldpcFFPK1d5amg4dmxta0JzaXVXK2llRjJtRkRIdHlwbllFM2JMM1FHZWhjSUNVK0pWM09ES2l0Z2lXMTdKK2lKbmc2MXk3S3ZBMFJtRHFCdG9hYVIxUExhd3dQejBiTmhCNGNxTzB6VEx2M1pkKy9oR2ZSMXVFWXpRYlE5N3dINUR5QTVkZEN1U0xUS2Q2TkcweGt6RStqRUJtOENzVnBlTHdpS2k1VXJoMm00SWw0aVhGckFMQk9HU1JRZlV4UXFUbnZBWU04SmFQV0ZQZGhQcTE0a0ZJWEdKRlBjaXgrbGJjMXV0TEw2NmZ1bU9yU3ZHMTZudG1XSmdJeUJkZDhyeUYyR1g2MHJYMkpSck1Jay80VnJjSlFqWVhpVms0aVU0aUs3RmxPZ1IzWkhpZGVoWVkrWlM3TWNFckljSjR0Vm5kVW1NUzF5RXJSNnRpRll0WU9mSWdxWFhPcTI1N2duTFpLU0RGekxWRzlZTm94WXdUWjNZSWIxaW5lM1ZESkN2TUxYbm9IYVYxZGJZcG5vOE1RdHhKRlkveEZnV1FUQzA1VjhuWGtEM0dwVDdlNWNzWUdrN0N0a2VXY2oyWGVqd0hoS3NNamZGR2pPWFlnOG1ZQTJtdVF4OU5aNkxPS2FMM0h1dEJlc2t5M2xLb1pQZThDeURtc2VDSE5kYVk3OTI4V3hoNGpVcnM0aVlUanJhcVBhUDBlclgxSjBuT1FmNmV0S1dsNDRmN2hMdTE5MFpsbFN5eXdWcmJKMG9aTEhkT1ZJbjJGeUtVekFCcStnUnIxVDN6TVdxRU9UQnlKdmFSZWhpbWkybGV6QnR1NURKbEt3d2w1TTV0R0RKT3NXL1hMYSttaUkyZ3A2d29JOWpyZG92bHU4UjRUZW9oVXYza3UwbWIxTTMxTFdRU1JidHBLSytvN2pXR3BZLzVHdE9ZcWhReHNxMDlTWDFKT1dlM3lVa2NlejZzSDA5THJvanV1VnlOdkllS2l6Z3NsdlJ4V3RjWElyYWRXa2lwakFCVXpURUt4WHBWRGUxSkdqVTlmaFNtcTBMbVZ3NnRwWEdlUG5TdXBMM2JWTUtsbzQvaUhoSmozZzBEWWhHTlNieFlhSm9PRlVDUjB1NFd1SmxOM3FnZG9uTHVpTmt2aXRzZGZ4TTNqeTY2eEFWSTB5S2tmZlgxdjhXb2ZPNlR4Q2pjd1NYNFM2d3F6cXIxOGxpVnhRcGNQbSszcGZ6N25JODdFaXBxMXpuSm1JS0U3Q0k3OTdVcWNGMEZOTjNkT3J4RVMyc0tGSXlqdXVDV2tUUUN2R2lLMWg2NExLdWxUaHhFUE5ZR3BJSklnYjV1Q1ZXMGVzdXRCdDdNaE5jNUZyTStoWjV3OWl1dWFibHI4U3JGakNkK0NKZUV5MWtZb1hwZTEzRVMxdGhuVW83UGlSN3BIbkc0cGM3SnNlRndVUU1NQUVEK3NVTFZYVWFsVjNvS2NhRm5JOVdsNGlWWkJBV0FrWlh2Q2FLRnQzNHc2akZTK2dSTWJtUHRWaXQwV04xVlc0Zm82UytYbHJYZnQ5ajJSanJOVGZKZmEwRnJFNnpQeVNJanJRTGU1VEpXN1dYWlpzY2Z0QldtSVFwcFBPc0JWUml2WnFWRjdHVkY3QWU4VXJKR3NwOUo4VjI1WUk4VDFsRlE2ZkFheEZySldYb3NWMnRlWmlteFI5RzFZRFVUTERFbEVmSDNJVnpvTSt0MkZyTGcxRmZlMHh3WDlNVnNDUEMvWHVEVXNqMDRQQmljYkVkOGVyZTk1VVY1aHNkVmFXdUltSVdFMlBGQmF3dllRTWxYdVE0bEZUUGtJUU1iWEZkb2kxZ0VnZHJEUTZkUmJpMFMwZSszMmg3d2hxWGI5dytsNkk4bm5ianJ1U04zV0RhdGRKM2Z1WEJhSzgxbU5wcDBnSW1ycngxNHZ4ZjVQdTRkaXQyeHRYNWZxOUxjZjlySzB4OVB5MWk4bDFXV3NSV1ZzRDZFamFveE12blFLMjRERnZDZFVsdFgzUTVEbGJYTkt3dlhKa1FiNXExTlhvM1RoOHpDdG1rRzNjbHp0TXQwbnVPVnVVNmc0a2lCdGxsM1JFeUY4cEthWXZza083Z2NPa0k2M24vZEVwOWtmbnBHeFlZS2l2U0tmR2E2MGtZR0NzcllCVXA1dFVTTDNMRmVGMHRRMFRyTXBVRjVydVdWMTBPS2wyd2ZySm9yYXh3MWRUSDdjc2JkeVhQeVdtd3F0ZVhVSFdZV3U1cldVVEl2QTlpc3U1QzFtQm53bHExRkpQV3FtWGRseGFZZzFSOHVmVWR2ZnB5TWxac0phMndsUlN3UnR4TGo4TklKYUhvaXBjSTFXWGdzZ3ZGZDJzQmE0bFhQZE55TFZ4OUpYbzZicHdENEIzQXU0SDNBRytKajk5SlRvRmFrU3Q0cFJ0YTQrWlpJN3RUN2dHOEYzQXZ3azE4ZTl5M1Buc2NOb21aenhhWkZxUStNU3NFVEhsaVV1ZlZxMy9tc3ZWRnRSOVdXTVJXVHNBbWlKY1dMcWxodUJQRksxbGREaTVIMFpKMXFpTHZ5blQ1bEcyRWNobjZzcGMxazNDOUR0d2ZBeThHL2haNEZmQjY0TTU1bnh6RFdHSGVHM2cvNFA3QVE0QkhnUHZId0IzOWJrWFpwL1ZrVFhWTzF4dUxGcXdrWEw0YlFnQ0tqRnBQSGx5dDYzeldsdUpLaWRoS0NWaFB4bUdLZTBHYWNESk5XNi9jaGlKZXR4R0U2emFpR3pFS25NUzkrcEkxSnFiRHF6WDd3S3ZCUFI5NEx2QTNCQXZyY1A2bnhEQ015TnZpOHFmeDhRNWhjdGhIZ0hzODhGamdmdURYeW51Mk5vaGtMUjNVZXBGTVF4bWkwMm9UTko2dVlNa0VyYkpBV1lWbVpWZ3BBYXRJRjVncjZ4cW1tWkpSTVM4bFhyY1IzSWRpZ2RXVjQ2Zk5wTnliVmZnZTRIbmdmZ2w0UG5EMTlJN2RNSXdwN0FGdmlNdnpDQmJhSjRIN0RPQ1R3VytIbDlXQzB4Zkxib2xaMFNiRW1GZFR3SWdUWU1aNG0vZktHblA1ZGZMZWxiSENWa2JBZXF5djFsZ3ZQVU90Q0ZoeUc4YmxOcCtUT1BSWUx6MUlVVDV6NmxpdXQ0RDdhZUJIQ1M3Q2VyU2lZUmhuejl1QVp3RS9EendNM0pPQVR3WHVVVnBkSWhxZE1XUlJvSHBqMzFGMEpJSEVVMVhEOTkzeWFUS3JzeGF5bFlxSHJZU0F0Y1JMSjIxUTFqYXJ4VXN5RFM4RHQwWExTNmZOdDJKZWs4by95ZmZnUGVDZUNmd1E4UExUT25qRE1PYktIc0hOK0VYQXc0RW5nL3M4WUxPMGdtcDNvbVFVOWxsb1FDRmUzcFdpZFV3dVhuMUVudEc1bm9YQjVZOGFQeXNoWUJYSm5QY04xeUZxb0xJTEtmR1NwSEdaYnRaaFBjNnJWZHVzYzZFZUE3OEQ3aW5BLzE3TU1SdUdjUXE4QlBnUzRPZUFid0gzajdwSkZURGoyRTZGcHkxZVJ5NElsNTZGSVZsaDFlSllBU3RzOUFMVzV6cEVaUjY2bkRLL1F5NFBkZEhuSkEwUkxSRXU3VGFzeGF2bE5wVC96NnZBZlNmd1RDd3B3ekRHd0JId0c4QUxnQzhEOXg5SW1ZdTFOWVo2M05yVzhTNFJNS21CZUFPNDRlTUVyaTVzSjB2TVpUZmpTcmtTUnk5Z2tVbXV3elJnMmNYcFVDamRoNWRRcWZMMGk1ZE8yT2o0dHdGK0hkelhBQzlid0FFYmhyRllyZ0wvRGZnajRLbmdQcUpyamVrQ3dicnRyYTBuYlgwbDhYSlp3R29ocStOak9pTnkxSXhhd0JvWlBUTFh6aHJkV1ZWMW5VTmQwL0FTd1Jxcnhhc3VEZFU3MmVRdThGM2d2cDB3TVpCaEdPUGxoY0RqZ0c4SDkwWGcxOE51YVl2NjB1V2htN3lSeElzZ1ZJZVVTeEl5c251eEdROGJxeFUyYWdHTEZOWVhjZkFnS3ZibDFHU1V0R3NkWG5CNWtISmRVWDVTekl0M2dQc3E0Q2NYZGJTR1ladzU3d0MrQW5ocDdMaWVhMXRqbnR3R0Z4WVlaZHlySlY2SEJLdnNVSXNZWlpiaTZLMncwUXBZWlgwVjR6QjhaWDM1S25tRDdwUW85U0RsT3ViVkZLL1hnZnRDNFBkTzhUZ053MWhPRG9DbkVkTHZud2J1am42WDRqbzk0a1ZidkE3aWN1akRPbGxwTG91WUxqNE1JN1hDUml0Z0VXMTl5VmlNb21RVTNYRmZyWWtwV3hYbCs0VExBYndjM0JkaldZYUdzZXI4REhBWDhDUGc3bG1LaW82SjRYTEZqWllMVVF2WFBuRGc0TUNIOWFGWGxsaVYwQ0hDT0VyV3ByOWtlRFNzcjA3cVBHcU9MN0wxcFdkVzF0T2hGQWticmpGL2ovby92QXJjWjJIaVpSaEc0RmVCSnhKQ0NuRlgwUzdSOVF6cFlUM25DR0dNWXBaMzhRcjUyTEYyNVJqVU5LZVlXa2JIS0FVczByUyt5R256cWVxR1UrNURYMTBrZEJNMkpnNVNmaE80ZjBtb1gyZ1loaUg4TnZEbHdOVUpRM3ZvaXRnMldjUjBKN3ZWdVo0VWt3ZWFpVzJEWm5RdXhGYm1JWTJCeXk0TG1DUnYxSXUrTVBURjBSdnplaGU0THdIKzRIUVAwVENNZ2ZMemhDbGIvanVoZ1lsSUd3VTVzZU9ZME9hSUcxSGlYZnMrdUJCM0NVVkJaTm4zc08vQ3NLQWJQbVlsMG9pRm5lb0JMcGpSVzJDMTlVVWUreVh1dzhLRkdKZHpyakZJMlpYaVZVeDdjQVI4STJGQW8yRVlSaC9QQUw2dmJZVTV5bWxYNmppOXRGTzZ2U282MnI2Y3VxbFo1WDVNVnRoWUJVeGZITnI2V2lkYVg1UVhoVGJSenhHc01tMTVGYjVsR3RiWGo0RDd3Y1VjbTJFWUErWVkrR1pDWVlPNHF4YXhvdEFDWlhzbENXZm5YZGwyU1Z1MVJaenhQU2FzU1NkK2xMR3dVUWxZSzNuRGhVWEdmeFdWTjZoNk5hNzBLZXRwVVNhTzlmcHpjTis0Z09NekRHTWM3QUpmRGJ5K1A2a2pqVmRGVGJKTGJwdWs4SUp1cjFKVklOK2VhMngwakVyQUlxM0E2QnJoQjkya2E0RWxONkl2THdRdFhxMjRGd0IzZ25zeVljSkp3ekNNV1hrNThIV0V3RmFrbFRIZEtYbEg3bmpyOXF1d3dNZ3pQOHMwTHFOMEk0NVJ3QVRuVmZVTlZIYVB1QWRkMTRXNDQ3b2xvaWFPOTNvR29mYVpZUmpHU2ZsNTRMa1RzaEpySzR3YzJ0RGl0ZU42eHFtT1BhVitOQUpXdXcrOWNoLzZoamxPQ0hoMkxnVGZ1QWpvQ1lhK0F0eFRGM0JzaG1HTWt4dkFVd2llSExVN2lWaGxoZW5hcmJVN2NkdVZoY1UzQ0xHd05SK1dVUW1YTUJvQmk2UWVoc3NYZ0xnUDAvZ3ZsQ211L01yYUJKODZyOWNCOEMyRW1tZUdZUmczeTh1QTc4NFBPd2tkVGlXZzBXakR5Qm1JdXYzYWpFa2NvM1lqamszQWhPUSsxQWtjY2Z5WGpvRkpIY1JhdkthNkRuOFgzQzh2L0xBTXd4Z2pQMElvL0t0MjZWaFlIUWJSN2tSdGtTWHZVV3p2TnRUN2F6ZmlLQmlqZ0RYZGgxNEZRbjM1Zyt1TG9HVjl5WVdVZnZnYmhCN1Q3bUtQeXpDTWtmSVc0T241WVNzenNUVStyQ05lc1hPKzZWVWJGdHRCVjRkWlR2TjRGc1VvQk14M2YzRElvaU1pVnZkZWlzVjFMYS9lMk5jTHdQMzJhUitVWVJncnhjOEFyeTdiTWxtblRHcktkcXpUbHZrcUJrWk1wM2RtZ1MwOVRtM1VHWWk2QXIwczJ2cVNIMzVTcVNoSCtFeWVUcWk4WVJpR01TL3VCSDY4M05VYUV0UVVNWmM3NHNVa3V5NWFZT1EyY1RUaUJlTVNNTWdpSTRPWEpRYldzcjUwRDJhYTlaWDRhM0IvdUpoak1ReGp4WGdlOE5aR3g1bCtWNklNWEM3V0tPdExGcGVUMjVJVk5uUkJHNXVBNGNzZkthV2hUbkFoZGt4dTJ1V2lITUN2QVc5ZTVBRVpockV5dklUbXVGSnRnVTF5SmFhMlRBMGJrbkZnYXcyeEdyUjR3UWdFckMvK3BjcW9TQkpIU2tOMTVYcURHY1ZyRDl4ekYzTllobUdzS0w5VVB1eTF3cXBPdVY1dnRKSTRvRk1YY2ZBTVhzQWluZmdYRGIreHl6OXUwOXdtQzE3elIzNEY4TWNMT0JqRE1GYVgzd1RlMlcxL09sWllJem10RURIS0RybDJJWTZHc1FpWWtNVExxZDZLTDNzbHJSKzZpSDMxVFVQd200Ukswb1poR0tmRm5ZQ0tzK3MycU5NeFY1VTZ0TXRRdDJlNmxGUXJuWDdRakVuQVhQempYTTVBMUJhWTlodTNoS3RackZjKzI0UDdYNHM0Q3NNd1Zwb2o0SGU2dTNYSHZQWXUxVzFiMGFiNXRuQ053bzA0SmdGcnhjUEVKYWluSjlBL2RpMWV2Zkd2TndDdlh0aVJHSWF4eXZ3MWNEVS9URUxqdStLbFJTd3RUaVZ2cU5kTGdZZEN1SVpza1kxRndPb2ZPUDNJcnF6R29YM0dSWmFPZW4wei92VXk0STBMT1JURE1GYWR2d2RlVys2YUpiVStkZExGQStVcnI5TFlNaEhISW1DZ1hJZzYwMGI5a092a1daVzExVlZrSHZaVmJmNTc0UHBDRHNNd2pGWG5UY0FiZThJWmFxa3RyTFVxZEZKMHlsMi9pQTJXUVF0WS9VTW8wN2kyd3RiVkQxMmIyMzF1UTkxcjRSV25mVENHWVJpUkkrQ1YzZDExKythVWhkVVJMdjBhTjZGelBtUUdMV0NSamorM2NnTktDWlUrNFdyRnZnb093YjNtTkkvQU1BeWo0dS95WnAySnFQZEoxYUZheEp4YXR4aUZtSTFCd0JLTkxKdldEenBKdU9xTEJNRHRFWkk0RE1Nd0ZzWGY5ei9WNmFEWCt5YThabFNNUmNBS3dXbFlZUzNCV3F1ZWJ5WnZBQndBYnozTmIyOFlobEhSU0Jycmk0ZWw3VVlTV3RHbXRiSVFoOHhZQkF5NjFwZXMrekozdE9uZDkza080SkF3dU5Bd0RHTlJ2TDI5dTlWZVRiTEdwcjEzMEl4SndBb2FZOEltbWRXOTFoY0VBYk1NUk1Nd0ZzbDdldmE3Q1cxVkgyT3l1alNqRXJDR2VYeGlFN3Z4bUlQVCticUdZUmk5N0U5L1NXL24zSFhidTFFeUtnRlQ5UG1LSjVyWWZiMlV3OVA0aG9aaEdCT3dqdk4weGlwZ04yTXk5NzdlMytKM01RekRPQ25XN2t4bnRBSVdhWm5TZll0aEdJWXhJTVl1WUlaaEdNWklNUUV6RE1Nd0Jva0ptR0VZaGpGSVRNQU13ekNNUVdJQ1poaUdZUXdTRXpERE1BeGprSmlBR1laaEdJUEVCTXd3RE1NWUpDWmdobUVZeGlBeEFUTU13ekFHaVFtWVlSaUdNVWhNd0F6RE1JeEJZZ0ptR0laaERCSVRNTU13REdPUW1JQVpobUVZZzhRRXpEQU13eGdrSm1DR1lSakdJREVCTXd6RE1BYUpDWmhoR0lZeFNFekFETU13akVGaUFtWVlobUVNRWhNd3d6QU1ZNUNZZ0JtR1lSaUR4QVRNTUF6REdDUW1ZSVpoR01ZZzJUanJMMkFZWTJRdExpNCs5c0J4WEF6RG1BOG1ZSVp4aSt3QUR3TGVEN2d2OEVEZ1hzQkY0QUpCdks0QmR3RnZCRjRKdkI1NE5mQjN3TkhpdjdKaGpBSVRNTU80Q1RhQVJ3S2ZBZnhEZ21pOTd3bmU3OGtDOWlmQXM0R1hZV0ptR0NmQkJNd3dUc0M5Z2NjRFh3ZzhETml1bnZkQm02Yml3TjBmdUQvd1NjQlhBMzhNL0Jqd0c4QTc1dlI5RFdQTW1JQVp4Z3hjQnI0TStCemdFWEdmQnorRFdubHlLRXp2TE41Nkh0ekhBaDhML0cvZ0djQ3pnTU5iK2RLR01YSXNDOUV3SnJBT2ZCcndPOEIzRU1RckNwY1dJRjh0eDJwcFBkYUxmSUNYNVZIQWp3Qy9CVHoyVkkvT01JYU5DWmhoOUhBNzhGUkNmT3JENlFoWExVUmFxR3JSNmxzOHBhakpCM3ZBZnpUd3k4QTNBZWRPOFRnTlk2aVlnQmxHZzRjRHZ3SjhKYkE1V2JocVVUcWFjZWtUc1VMSWJnUC9MY0RQRURJY0RjUElXQXpNTUNvK0NuZ21JY0dpeDFXb3Qvc0VxQkFqY2h6TXpiQVU3L0hnUHczY2ZZRW5BaSs5MVFNMGpKRmdGcGhoS0Q0RitFVTY0dFd5dXNTU3VpR0xDemtYaDhCQlk5bXZIc3RyYjlDMXlwcHV4VWZFN3laSkpJYXg2cGdGWmhpUnh4Q3kvKzRvc3dzbnhicU9IUno1dU8yekNMVVNOYlNGdGFhVzllcXhYalRPZy85QWNEOU5TT1YvK1J5UDNUQ0dpQW1ZWVFBUEphU3QzNGZDNzlkbmVZbHdIZm5TRWt2UDA3V2l0SGl0cS9WR1hPdEYzcmVtM3VPSkl2WmdjRDhCUEE1NDI5elBoR0VNQnhNd1krVzVCL0E5d1Azb2RSdDJFalM4Y2gyU1hZR0ZPOUNwNUE4WHhFZGJYU0plbTNHdEYzbWUrUHBqVkF6TmczOGt1TzhFL2cyd04rZnpZUmhEd1FUTVdIbStuakNBZUpwNE9iamhzMkRwcFlocHhkY2QrMnlGNFV2clM0UnFFOWlxMXNkeHJiK0xpSmxEV1dLZkQrNVBnZStmK3hreGpHRmdBbWFzTkI4SC9MdXdPVW04YmtTWG9SYXNmV0Rmd1lFdkV6UU80K3VPWEJBeCtWeXh2cEo0T2RqeW9SclZOa0VZdDhtaXR4bmZ0NjdXeDZqWTJEcjRid2IzZkVKTlJjTllOVXpBakpYbE12RE5sT1pPcEloNUtmRkt3a1h3M08zNnNKWkZaeGplMEJZWXdYb1M2MnRMaWRkT1hIUkc0cVQ0bWQ3SEhjQTNBbCtNRlFJMlZnOFRNR05sK1R6Q21LOEpya054RzRwNDdRRjdMZ2pYTG5BOUxydHhFWEU3SUNkMVNQeEtCR3lUS0Y0T2Rud29zbkdPYUxWUmlsNGZZb1U1RC80SjRINEtlUDR0blEzREdCNG1ZTVpLY2duNDBuSlhjNXlYaW5tSjFYWGRCOUc2NXVDcUQxTjlpWkR0a1FYc2tISU9TKzArM0FhMm8zaWRKd3RlbjRCSk5xSXNIalhnK1J6d3I0SGZWdi9NTUZZQkV6QmpKWGtjdVRDdjJsMlhoanBDaVZlMHZLNERWd2ppZFFXNFNoQ3hhMlFyVEFUc2lESUdKaGFZdUE3UHhkZUwrN0IyT2VveFk0NVN5TkxyUFBqSGdmc0k0RVZ6T0RlR01SUk13SXlWNUlubHc4NTRyMGJTeGw0VXI2dHh1U3N1V3NSMnliR3dXUVRzUEdYc1MvNS9QZGhaTDgxWTJDYncrWmlBR2F1RkNaaXhjbndZdWJxODJsMWtIcXB4WHBLNHNRZGNkM0F0V2w1M0FlK0pheEd3NjRUTXhIMUM3R3lhZ0luclVLd3Z5TEV5UFZaTWp3M1Q0OElLZCtMSEVHYUZmc090bnlMREdBUW1ZTWJLOFZoQzlsNVVGcDN0VjljNTFNa2J1NFQ0MTFXeWdHa3I3RnAwTWU3NU1xYlZFckF0c3V0UTRsNzZOWHFjV0QzUVdhZlRKL0h5NEI4RTdoOWlBbWFzRGlaZ3hrcXhCZnpqOWxOMXhRMUozaEFMVExJT3I1SGRpRmRrY2QwWW1LVGZGd0xtWU1PSHIxRUlYS3pVb2F0emJGWExJVm5FbXJVV04rT3hQZmNXem85aERBa1RNR09sdUJ2d0VmUzZENzNMUlhtMWdDVUxqRElEOFNwd05ib1ZyeEVTUGZaOVl4eVlneldmTXhGMXhpRms4Ukxoa2hUN25maDUyM0cvV0laU0w3SERZK0tISE43eW1US001Y2NFekZncDdrMllHTEp5SDZiRnErb2I1QmhZYllWSktuM2FkakdCdzZzRURsZG1GYTRSUkV6cUpCNzd2RitMMXc3UkZSbkZLdzJNcG55di90NHBwZjdoaEFIYTc1emZLVE9NcGNVRXpGZ3BIdGovVk8xQ2xCaFlzd0lIc091Q1lPMFIxdnZBZ1l2eEx4K25XWEdWZ0luNFZPSWxZOE4wVlk5OVg2YllweUxCdnVzK2xBUHdPM0hpU3hNd1l4V3dDUzJObGVJRDI3czdhZlNVMDZSb0sweGlYUHMrMWtLa08wRmxzWWhMVW9vQnk4U1hMZ3VlL3V5aXJxTDZuTDVwV3REYkc4Q0RidnJzR01hd01Bdk1XQ251MWQyVk1oQmQ2VUxVeVJ4MUJmb2tXRDRJVVV1d2pzV0ZHUDE3enNkdEgxeCtOMkxjcTFYZHZoWkNQV056eCsySmNpRzY5akVheGlneEFUTldpa3V6dmF5dXlGRllaQzZYbVpKTXd5UEs2dk1pWGtWbEo5ZDlUaEpHK3Baa2NhbTV4VHF1US9XZEhjREZHYytGWVF3ZEV6QmpwZWhwM0gzODAzTE5GWXUyMG5ReWhRaU02NHBNOFhuVjY0L1Y1Mm4zWlJKUStWemZGYTFtRnVLRVl6U00wV0V4TU1OUUxyZ1R2SDZXOXpSRngwMFFIOE13WnNjRXpGZ3BkaWM4NTBwaGF0WWo5STN0T01iTHVWd1ZRMWVPTC81RkhMQ2NudmZkSXIyNjN1R2F2TlkxUHV0bWp0RXd4b1FKbUxGU1RFZ3YxOEpTQzljNnNPSEtrazZwdEpNUEZUYWtUdUdhS3dXc1dFU3dmUDdjb3U2aDY5WStYS2NVemo3ckwrMnpGSHBqVlRBQk0xYUtOM1YzdVdwYkMxaFJsOURId2NZdUREamVWTXVHVjZManM1aTV4bWV1T1NWZXJxeDV1T2xoMDVYMUQzVVIzOXBhNjRpWmJ4K2pZWXdTUytJd1ZvcS9iZTl1Q1UyckxxRk1SQ25WNUxjSjQ3YTJVT256bEJVNGRLSGVOWUxBYlJDc3JTU0s1SEpSV3o3L1B4RTJiWTIxaEN0dEh3R3ZPdkZaTVl4aFlnSm1yQlF2SXpUeTBmV2dweVBSQWxaWGhCZUJrVWtvenhGQ1RlZFFBNDZkcXI3aDgrZUx1R2hYNUtZUHl6WjUyYW1XYlJmRVRGZWtyK2NGSzZ3dkIrNWR3S3ZuY2FJTVl3Q1lnQmtyeGR1QXY2T295S0ZGVEZ0ZjZ3UjMzcGJ2aXRkNXlva3JieERGaTV6eTdsemVKOFY4NjRLOTJ6NS9wbnp1T1VJUjN4MmZyVEx0VXB6b1F2eHpMSW5EV0IxTXdJeVY0ajNBQzRFSHg4b1ljWGZMaFNoeEw3Ryt6dEV1OVZRVTJxWDhUSmw4RWtMc2EwTlpYanNpWGc0dWVMaEFYczdINThSTktRSld4OE02L0VIOE1vYXhDbGdTaDdGU0hBRi9SREVRUzZmTk80TFExUEV2Y2V1ZEo0cU1DK09GTHdJWFhSUWRsT2hFNjJyTHhjV1hsdHdPY0Q2Kzd5TGxPb2xZZkozRXcwVEFhaGRpc3NLdUVzVFpNRllGczhDTWxlTjNnZGNScGxXSjZEaVY5OHFGU0o1ODhoeXFicUZ2MUQ1RVdWOHg3ZjFRdVJEWFl6eExyRG14dWk3NlVPSHFJbmxkaUNGbE1rY3RYbklBN3ErQWw4emxEQm5HTURBQk0xYU9WeE5jYlU4czNZaFF1aEUzQ09JakUwbldWZVpiTlF0MUFvZDh4aEdBejhrYk8yU0w2MUsxWEhSQjBDNHdtd3V4RUxGZkE5NDlsek5rR01QQUJNeFlTWjRPZkE1QkdTampTV3NFVVJNM29pN2tPNjN3YmozUDEyRjhEa0w4YTh2QnVTaFFsd2h6VDE1MmNObUg3VXUrNjQ2VUpJNldlQ1hlRHZ5UFd6d25oakUwVE1DTWxlUlBnZWNEbjVxdHNMcUVsQmF4TGRyVjZmVzZ0cjdXQ2ZOOUhjWHFHL0k1NTRqV2x3aVhpQmNxbmhhVE9Pb3N4R2JzeTRIN1NlRDE4ejlOaHJIVW1JQVpLOGtoOEZUZ28rbFViNjhGVEZlSjd5d3FWZjdZbC9OOXJRTUhNVDRtQXJidGczVjFrV0J0WFVhSkZ5RXVKdGFYaUpkT245Y0pISW5YRWl4S3cxZzFUTUNNbGVVUGdXY0QvN0pyaFlISzBIWGR1YmlTRmVaTFFkTVcyQ1loNVY3UzZDV0I0M3lNYzJueFNnSkd6ajZza3plYXNTOEg3dW4wVmhneGpGRmpBbWFzTEVmQU53TWZDOXkvSzJJaVlENldmbW9KV0cyRlNVS0lESUxlOXcwQjg5MEVqcFo0YmNXa0Q1MDZYOFMvSExnWEFOOHoxN05pR01QQkJNeFlhZDRBZkFQd1l3Uy9uVUpuSkVKWHdKS1FLZkVTQVZ3bmlNOEJwUXR4SnlaeGFBRnJpaGRWZ1dEMWZSSnZCYjRXdUQ2UEUyRVlBOFFFekZoNW5nMDhEUGhQcFJXbXkwdEJHUS9iaXVzamx3WHN1SHJQSmtIQUNndk01eVFPV2VveFh6cHBvNVYxNkFDT3dQMG40RVZ6UGhlR01TUk13SXlWeHdQZkJqd1ErT3orZUZpZDFPRXB4ZXRZdlg2ZElFUWlZQ21KZzF6elVLeXVPbW1qRnE5bTNPdXB3SS9POFJ3WXhoQXhBVE1NUW1YZUx5T294K05uVCtyUWxwY2VFQzFscUE0cEJVelM2RVhFSm9sWGI5TEc5d0gvZVg2SGJoaUR4UVRNTUNKM0FsOUtVSXBQYjQ4UGMrU3E4blV5aDQ4dmNqNEwyQTFLQWRzazEwSVVJWnZtTml6RTZ3ZUFyeUVvbzJHc09sYk0xekFVN3dEK0JmQkQ0V0ZIdkNpbld4R3JLazIzNHJON3NGTW1pakpob3hBdjE3VzhpdGpYQWJodkJyNktrSnR2R0laWllJYlI0UzZDTy9FVmhNU08yOXVWT3VwNEdPcjVEZkkwS3lrelVhWlRJUXRYSytPdzR6WjhJN2l2QTM3cXRBN1lNQWFLQ1poaE5QREFkeEZLVG4wSDhCSGcxc05UMm12aFZma29JYzBsUmtpaFQ1bUpQbGZWRUpkaFBWRmxZWFVkQXM4SDl3M0EvNW43RVJyRzhERVhvbUZNNEFYQUo0SDdzWEszaU14NnJESXZnclZOT1h1elR0U1FWSGs5eDFkdjBzWU5jTjhCUEI0VEw4UG93d1RNTUtad0RmaXpibEpGcW81UmlaaU9pZW1FRGRtdWF4dzJrellPZ0JjRUlUTU1vd2R6SVJyR0RLZ2JSYWZXUzlVTm9udFFoRTFQY0NrdXhEb0pSSytiUlhvM1QrRTRER05NbUlBWnhzblI5UktQS1VzOUhRTnJWUUZnL2ZwYXNKcVZObHdsWm9aaGRERUJNNHdaY1RSbmNKWXFIZkpZRWpaYTJZbmFFdXVNODhMRXl6Qk9oQW1ZWVp3QUpXSzZYaUprSVpQOXZ2MzI1aUxQbVhnWnhna3dBVE9NRTFLSldQVlVSN3pxMTNWRXEvRTVobUhNZ0FtWVlkd0VsVHV4SldUUUhRQmRQKy9VRGhNeHd6Z2hKbUNHY1pOTUViRytmWjM5Smw2R2NYT1lnQm5HTFNEaU0wWElwcjdmTUl5VFl3Sm1HSE9nSVdSVFgyc1l4cTFoQW1ZWWM4VEV5VEFXaDVXU01nekRNQWFKQ1poaEdJWXhTRXpBRE1Nd2pFRmlBbVlZaG1FTUVoTXd3ekFNWTVDWWdCbUdZUmlEeEFUTU1BekRHQ1FtWUlaaEdNWWdNUUV6RE1Nd0Jva0ptR0VZaGpGSVRNQU13ekNNUVdJQ1poaUdZUXdTRXpERE1BeGprSmlBR1laaEdJUEVCTXd3RE1NWUpDWmdobUVZeGlBeEFUTU13ekFHaVFtWVlSaUdNVWhNd0F6RE1JeEJZZ0ptR0laaERCSVRNTU13REdPUW1JQVp4Z3djTGZqLytUUDRuNFl4TkV6QURHTUdyckZZUVRrRXJpL3cveG5HRURFQk00d1plQU93djhEL2R3MTQwd0wvbjJFTUVSTXd3NWlCbHdKWEYvai8zZzY4Zm9IL3p6Q0dpQW1ZWWN6QU80Qy9YT0QvK3lQZ1lJSC96ekNHaUFtWVljekl6eXpvL3h3RFA3ZWcvMlVZUThZRXpEQm01TGVCbHkzZy8vd3U4QmNMK0QrR01YUk13QXhqUnQ0QWZEL0JRam90ZG9HbkVwSTRETU9ZakFtWVlaeUFId2QrNnhRLy81bW4vUG1HTVNaTXdBempCRndIdmdKNCtTbDg5dThEM3dqY09JWFBOb3d4WWdKbUdDZmtsY0FUZ2IrYjQyZStFUGdpNE00NWZxWmhqQjBUTU1PNENmNE1lRHp3ZTNQNHJKOEhQaE40OVJ3K3l6QldDUk13dzdoSlhnbzhBZmgvdURuTDZmWEFrd2lXMTF2bStMME1ZMVhZT09zdllCaEQ1aDNBVTRCbkFWOENmRHp3RU9CQ3ordnZKS1RpUHcvNENVeTRET05XTUFFempEbndTdURyZ0R1QUR3WWVBTndYdURzaDdmNGR3T3NJY2JPL0JxNmN6ZGMwakZGaEFtWVljK1FkaExqWTc1M3QxekNNbGNCaVlJWmhHTVlnTVFFekRNTXdCb2tKbUdFWWhqRklUTUFNd3pDTVFXSUNaaGlHWVF3U0V6RERNQXhqa0ppQUdZWmhHSVBFQk13d0RNTVlKQ1pnaG1FWXhpQXhBVE1Nd3pBR2lRbVlZUmlHTVVqR0xtRGVnOWZyQ1l0aEdJWXhJRVlyWVA3a29tUWlaaGlHTVNER0ttQzFHQ1ZMeTAyd3ZQcEViLzAwdnFGaEdNWUViS3FRNll6cUhQbXVLT25ITFZkaS9acldZN1pPNWRzYWhtSDBZKzNPZE1acWdlRzZBdFZaM0dRaFMyd0JtNmY2YlEzRE1Fb3VUbjlKYjl2V2lQMlBrakVKV0cxRnlYcnFqMHo3QjA3N040RzduY3BYTmd6RGFITkh6LzZiRWFXYnlBa1lCR01Sc0VLOFhGZWNqdFc2WHZUenpRdGpFN2o5TkwrOVlSaEd4WHUzZDAvcWJFK004ZmU4ZDlDTVJjQ0F3bTBJcFdEMWlaZCt2bllucHMvWkFkNzNWTCs1WVJoR3lmMjZ1L3FTMDlMMnRCaS96NjhaQldNUXNPTEhhRmhmM21XaE9sTExKQ0VyMkFadkFtWVl4aUo1Ly82bittTDVzOGI3UjhPZ0JjejEveUNGKzlCbjhlb1RzYjRmSGdnbjZVR25jd2lHWVJoTlBpaHZ0cnhET3BiZjhqTHAwRWlMVVFqYW9BV3N3b3Q1ckhvYng2NFNMMWNLbUJhMVk5cVppUUE4QUJzUFpoakdZcmdNM0tlN3V5TmVibnA4Mzd2UWlSK2xGVFlXQVVzL2loWXZzdldWTEMvZkZiRENuZGlYbWZnZ2VvT3FobUVZYytYK3dQdjFKMkxVM3FXMHVJYVFTWnNtc2E4Sm5xdkJNUllCQTVwanYrclkxdzIxdEVTc053RDZZT0RlaXpnSXd6QlduZzhBN2xudTZndHpGR0VSNmFDN1V0QlNPOVlRcjBHTDJaZ0V6TWMvS1lrai9saGF2QW9SYzZXUVRVcm04RHZnUDN4UlIySVl4c3JpZ0VkVE5NNjFoMGwzek91NHZoYXkya0x6cW4yaytzeEJNaVlCZ3lyK3BkMkhybXVCSGZxMk5kWks2Z0RnVXhaNElJWmhyQ1k3d0NkMGQyczM0RW04UzhjdUxMNHh6R2l3d2lXTVJjQmFQWXJhdkM3RXExckxqejR4cGY0ak1UZWlZUmlueThNSklZdUlib2ZxaEEzZE1aOG9ZajRudGRWQ05tZ0dMMkIxM0V0bElrclA0NWhzVWgrNklGcXkzSWo3YWhIVEthanBBcm9kL1ArMXlJTXpER1BsK0F4Z3ZSSEdvQ0ZlUG9kQ2RHZTgyU2x2dVErSHp1QUZyRWIxTUx3UFAxcGhnZmtzWGdmQWdTdGRpYnJuMGtub1dBTStGZGhlNkJFWmhyRXF2RGZ3VDhwZFdyZ0tyNUxQYlpvSVdCSXhIZC8zMGZLQ3pxRG53VE0yQVNzU09WUW16aEhoUnkzRWl5QmUrb2N2L01ZMGZ1eVBCajVrZ1Fka0dNYnE4TkhBUS9wVDUxc2hrY1BHMHJIQ2xJalZuenRveGlaZ0VIc1pUbFhncUN3c0xXTDdLREZEQ1pudnhzSTh3RzNnUDNmQkIyUVl4dmpaQUo1SW1nZXNsUzR2UzZjdGMrVTZ0V002bEtJenRCbkptTEF4Q1ZqNlllbzRHTEhINGt2cnE3VjBMREZLQzh3RGZBRnczMFVkbFdFWUs4RWpnVS9waVh2cGRveHVSL3pBeDg2NHo1NGxjUzlLWjl5UExZRURSaUpnOVk4aVl5VWtCcVl5ZGVSSDM2K1dXc0RxQUdnbm1lTkpDemd1d3pCV0F3ZjhlNHB5ZFVYc3k3Y0ZiS2FPdU10dDRhamlYekFTQWF1b2c1V1N5Q0hCVGYxREZ5TG1UbUNGL2QvQUJ5L3FpQXpER0RXZkRIeGlsVkd0bGxiY0s3VmZydDBSTDhJaFBlUEFCcy9ZQkN4ZEFHcmNRMkdCK2VySEIvYmlzdThiUFppcXRsajYwZThOL3FzWGRGQ0dZWXlYODhEWEFwZkN3NzdZbC9ZaTFaM3ZQVW9ST3lSMDFvdXlVbWFCTFRIVmVMQ21HMUVGT3ZkZEZpNzU4V1d0UlN5VlpLRjdZZkg1NEIrM3NDTTBER09NZkFudzBWUEdmS0hFeTNVNzM3b2RFMC9TRFI5RUxMa1A2MnIwWTRpSGpVYkFLcEliVVExa2xoLzAwTWVncHhLeFhhcUxnR3lHaXdYWHFkQ3hBWHc5Y01lQ0Q4NHdqSEh3SU9ESitXSEwrcXJqOTVLd2tkb3VyOW91RjU2WGdnM0pBaHZqVkNvd1RnRnJaaU1TZmtpZGlianZ1ejJZcG9qNS9na3dlUlQ0YjFqbzRSbUdNUWEyZ0c4Rjd0ZHZmZFZ4cjJSNXVkenhsczczUGprTW91UDRyZko0b3hHeVVRblloR3pFVkhhRnJodHhGOWgxall1QmFJclRMVE5WWEFoUEF2LzRSUnlnWVJpajRjdUJKN1FUTitvQnl6cnVKVmFYdEZkRnV5V0phTDUvUENzd0R2Y2hqRXpBS2pwK1pGVXo3TUNYcHZpdWgrdVVGMFFuSGtiUHZHRmJ3SDhESHJxd1F6TU1ZOGo4RStBYis4VXJWUTlDaVZlTWZVbjdWTGRYT2hHdENIMzRVcnhHSVZ6Q1dBVXNYUkRhQ2tPWjQwNkpGL2xpdUE1Y3I2eXhJaDVHanl2eC91Q2ZCdHh0UVFkb0dNWXd1Ui93Tk9EdTVlNmlzKzI3cnNNOVg0cVhMQ2wrSDl1ME5KWlZFdERHVnY5UU16b0JhODE1bzVNNW5MTEE2SXBZY1dHNE1pWlcxMHpzdUJJL0R2d1BBeGRQL1NnTnd4Z2k5d0tlQlR4NHN1dFF4S3NlN3ROcHAxd1dzWDJmUzBsSkNuMW4rQStNeDMwSUlaRnVyT2dMUk1aQmFML3lBYUhYc2dWc1J4ZmlkdHlXOVJhd1NUaFBHd1RCbDhXcC95VWRBZmRaNE44RjdzdmpQekVNd3dDNERmaGg0TkZkOGVwTWtVSVo5eExodWdaY2MzRE5oKzNyMFNyYmMxSEFZcEphbi9VMUd1RVNSaWxnTG1RZmlzQ2tpOFRsUXBpSDBRTGI5TGxuczEwdHRYaXQweFV3V2ZTRjRmNFYrTHZBZlZQOFlNTXdWcHZMd05PQlQ1MGdYcFRpcGEwdWJYa2w4VUs1RUwxeUg3b1ZTTjRRUmlsZ2lxWVY1c3FMWkpOd0VXdzFsczI0YkRoWTkxbkVSTGcwMmgzcnZocjg3ZUMrRXJoNktvZG1HTVlRZUIrQ2VEMnU3VGFzWFllZGpFT2k1VVZvU3E2cDVUcmRZVDhyWTMzQitBVk02THRRMWdrLy9nWlpyTGFxOVNhdzRVc0x6S0hjaHVyL0ZDTDJSZUF2Zy9zM3dEdFA1N2dNdzFoaTNoLzRjZUN4czhXOHRPVzE1NEtMVUF2V1ZiS0lTYktaV0Y4SHhJa3NsZlZWeEwvR1puM0JpQVZNdVJGcks4ejVVc1JFd0hiSmdyWHBnbnRSdXc5bHFTMndpWmJZWjRKL2IzQlBCbDQ4MzBNMERHT0orV2pnZTRFUHZybXhYdGQ5am50ZEJhNVFXbUFwL2tVNXM3eXVIRFJxNnd0R21JV29hV1Vra3NkWjZJdEdaL2hjQTY3NmZOSEloWk42UG5USGlmVlZyL2NBSHdYK3VlQy9nSzdhR1lZeExqWUo1YUdlQS80RTRsVm5HbDV6dWQzUmJkQlZsUFZGdCtCQ1BlNExHS2YxQlNPMndDcmt4enQyUVVPT0FLZEViRjFaV3hzdXV3elhYZHQ5MklxQjFSUnV4dnNBUHdiK1E4SDlWK0N0Y3p3NHd6Q1dnd2NDVHdFK3I3L3o3T2xtUSt0c1E0bDUxWjNvWklHNVBNeEhKckVzU2tlNUZiRytZQVVFck1wSWhQRGpFdDJJYTRRZmY4M0JtZytQSlZsam5USnhZeFlCMHhmTFdyVm1MYmdTL2NlRCt5L0Fjd2hYcm1FWXcrWThZYWIyL3dDOGY3ZnFoYzQybEV6b1BnL1FWZUNxQ3dKMmw0TzdQRnh4Y0NVSzJqVmZKbThVaVJzMHhHdXMxaGVzZ0lBcDZoNlJqTHR3WG9rWFdiRHF1TmRKeE10VFRLNWF4c3dlQnY2bmdlZEVhK3hQYi9YSURNTTRNejRSK0JyZ0U5cFcxelMzWVQzTzZ5cEJyTzRpaWhkS3ZDaXJiNlRZVnlOMWZpVllDUUZySlhTNGZFRzVlQkU0WllXSmdLMFJyRFBucDdzTysxSmt0UUFXWCtzendEK2FJR1RmQjd5Q2FCNGFockhVYkFBZkRud2w4Q2toMjFpbzI0RmluQmVUWSsvaUtyeXJXblFDaDFoZmRmeTk2VG9jcy9VRkt5SmdEVkpNTEpyZWp1eVBkclZnVFJDdjJrV2cxejRLcDRpWXB6R0c3Sjdndmd6OHZ3QitIdHh6Z044alhMR0dZU3dYbDRDUEF6NGYrSFR3cWdIdFM5Wm9WZGpvdGJ5QTk4amlzZ1ZXaUpmTFphTnVVSmFOV2lueGdoVVNzSVlWQmpHdFBsNWM4a1FTcTBySW9CU3cxb1ZhQ0ZrMDZUZm9GN0gwZWVmQi9Rdndud3Y4T2JoZkFYNFJlQjJodTJVWXh0bHdIbmd3OEFUZ1k0RVBCYitWbis3enZCU3pLZnV1NWJWSFY3enVJb2hYNFQ0a3hNU3VreWV2TEtaTWNTdm9PaFNjOThNOVp1ZE9ucFR1U3pGeVJMZWh5NW1JTW9oNUJ6Z0huSGR3MFljYXZaY0lWV0Z1aSt2TERpN0g1eTRDRndqWCt3NjVKSlZVOGtpWmpmSi9LWVdzSTVLN3dJdkIvU2J3RjhBcmdkZGlnbVlZcDhsRndnRGtEd0FlUlloeGZSRDR6ZkpsMDRUcldGbGRuUWtwVWVJbENSdFVBa1lVc1BqOGRSY0VMRlhkaUlPV2F3RzdLZXRycURxd01oYVkwTERFanRVRDUwcTNJY1RuYXRPTjBzbzZjbkU3WHJUaTd6NGlpcGl5eG83cHQ4WUtSVDRIN2lQQmYyUjgwMnVBMXdPdkJmY0s0Rlh4OGR1QU84aytpV0ZlaW9heEdCeWhaM29PZUMvZ0RzSVVKdzhBUGhEOFB3RHVDL3lEN2x0OVk2MkZ5NVBkZWRwbFdNK21mRDBLMGxVZkVqUlMzRXU1RGU4aVp4MUt4WTAwUCtFOHhXdklySnlBVlhTU09rU3NSTENpRzFGZTJPbHBpWEQ1OHFMVjVXR09DQmJkRWJrNGNLdXlSNnZDaDN3ZDFvRDdnN3QvK2IwTnd6Z2Q2bnVzVDd3NndrVTNXVU83RFhkOXJLYmhvK3RRaTVhdnhueWhDaWU0bUxUaHk2U05sUlV2V0ZFQjZ4a2J0b2F5eGlvUjAxZEZJV0MrdkdEMWNxaTJkK0s2VmVGKzBqaXpRc1NxYmNNd1RnZmYyTzRUcmxhV1lWMGFTcnNONjdqWEZkOGRySHpWWmN0TGkxZEttYWVjazNCbFdVa0JnNDRyVWRiSFVPNVU0dVVwTXd1MW43dnVkZWxGVEg2Wlowd3EzVytvWmIxSzRXOGxlclFTU1F6RG1EKzFnTFVXOGI3b2NJRysvdzlpdHFDdXNLSEZLNVdKY25tY1Y2cTA0ZFZnNVlaNGFmRk0zM2ZWckM5WVlRR0RpWm1KVFJGempVRHRCUEU2MElzUEx2Y0R5dVFPV1NTQlJJOC9heVY2UUNsZ0ptYUdNUi82cks1aWNUbGMwUEsrNlB0KzN5dTNJV3BDU2tvQms1SlJlb3FVWFJkalhqM2lwVE1PVjFhOFlNVUZER1lYTWFMbEpkdjBEMUFzTHVKcTJWRkxaODR4K3F0LzlGWEFOd0V6alBuUXRMcHFqNHN2Ny9sV3gxVzdETVZ0S1BVTnBWUlUzOXhlMXduQ1ZReFU3aEd2bFkxN2FWWmV3R0EyRVZQUEZiMHd1ajJ3T25BckYvTjVjdkxUSGxIRW9tdFJpOWlzc2JGQ3ZKeUptV0djQ0Q4NVVjT1RLN3ZyT29ZdHEwdUVxNTZJc25ZZGFpdE1QNWJYN2JteVFPK2hMNmRITWZHcU1BR0xUQkF4cnl3d3VlZ0xWNklFVlgwcFlKSXlxMTBKNTlTeVF6c3VOczBhYTdvVVYvb3FOb3hibzlkbFNCWXQzVms5Y2tGYzZ2dTlLVjR1Wng1ZTE0dUxyMUh0dzRGWE15dTdPRDBLWmNLR2laZkNCRXpSRURGUEVJNGpjUi82N0ZiUWNiRFVHNHNYZHUwK2xJdjVISG1nY3hJeFNoSFRBNTlGeU5ab1cyUFFiM21aUldZWUpYME5ma3ZBV2xiWEVibjZleDNuRm0rTEZOcE5BdWF6RzFIaVc3dStFaTVabkhJWitqek95eEkyZWpBQnEyaGtKMHE1cVU0MklsSElWQ2FpQ0ZrZHlCVzM0VG15a09sNG1CYXhUY0xBNTQ0bEZqTVZXekV4TU1FeWpKdWhJMTZORU1Ha1JDM2RVZDF6ZWRCeEVpcVVpNUFzWFB2RURFTWZPNzZvc2FPK084NHJmVmNUcjR3SldJTytGSHVWaFZnSGR0TkY3ck9BSFVaLzlyNFBGL2FlaHgwSDUzeHBnZlZaWVRvbXRrSElWS3dUTytMWExkYUdZY3hHUnhoOEtWNTFqSHRTb3RZZTRWNFhvZHJ6T2E0bGorVjFPanRaTERweFRUYXJhMkRpMWNRRXJJZWVtQmlvNUE1eVptSzYyS1A1ZitqRFJha3RzWDFDekd1WHR2VWxBbGFuMkNjcnpIVkZ6S3d3dzdnNWZMV2RPcVhLQW1zVktTaGNoMnFzVnhLeHVKYUVEQkd1QTUyZ29TMnVScUpHYzBabEU2OHVKbUFUVUNJR2plUU9ueS84T3Buamhxc0VqT0F1MkFKMnZCSXQxMDNrU0FJVzQyQ2JCQUhiOEpPekVodGYzekFNUlVzQXRJVWo5N1ZPM0tncjdFaVNoVmhRK3Y1T1loWmRnNUtabUdvWStrcTQ1UDhvbDJFbldRTk12UG93QVp1Q1hEaU41QTVYeGNGMDc2Mk9pUjBTTHVndHdrV2R4TXJuN2Ewb2NGcyt4OEZheVJ5cG1yMmpLRHBzZ21VWUowTzdEb3ZrRFVmdlFPWGVZZ1dVcnNFa2RNb2pvK2Z2a2dMZ1IwNkpKNWpMOENTczNIUXF0NEx2dXV2cVpZMlFhQ0h1UGtuQVNPbnhMaVpvdUN4VU91WWxqemZJRnRnc0tmVmdBbVlZSjZXVHdFRi85cUdJajR6UFNrS21VdW9QOUQ2VWFKRXpDOFZUMDNJVm5wblZOVlFkTUFFN0lRMFJrN1VqV0VSaUdhMlQ1eG5UbVlTYlpHRVNZZHVrSEFNbTJ5SitmZFU1Z0RRRmpHRVlKOFEzQmkvVGI0V2xOSHBLcTZ3dTNxMlhvMXE0Vk55OEZxMHpjeGtPVlFkTXdHNlNXWVFNdGNRVWVKMk1JY0pVWkJycWJTMStyaXoyYTFtSWhuSHIxTUtoWFhtdFl0M2krcFA0bFhZSnBuMlZZQ1ZyYXhtRlN4aXFEcGlBM1NJOWJzVzBMUllaV1h4U0xNdm54MXJZdEhDSkJWY25iNnpSRUM2enhBeGpObndwRkMwclRJOEgwNVU0a210UnhFMkozTEVTTDEzb29CWXVxdTB6ajNVTlZRY3NpZU1XbVpDcENIbkFzMU1YOGJIUFNSZ1NMOVBXVlNGWXZyVGlKR21qbFgzb2hua0pHc2FaVVl1WUpFNGMreXF0bnJLWXJ3eVpxZDJOK25rdGhMM0NGZitmM2JvM2lRbllIT2pKVk5Ra0lTTlc5aUJhVWJISDVweXlzSlNnYVd0cnphdDRsNGltV1YyR2NldjRMRjQ2SXpHSmtNL2J0WFdXc3BCZHRyWmFTUmttWEtlQUNkZ2M2UkV5RVM1Wml3ako4eW1qVUFSS3VSM1Rmdkp6aGV0UTNRRW1aSVp4TWpvZWszaVRKaEZ6YWwzdE82NzNxK2Zrc3pzeExqRGhtaWNtWUtkQUpXUnhNeUZDRmwrYXF0M1hyc0ZrYVlsdytmdzYyVERSTW93NTRmTjlXMXRqTklTczJKYy9vcmxHdmQ2WUl5WmdwOGdFSWF1dE1naENWYXg5OTdraWFTUysyVVRNTUc0QjN4Q1dsaWk1YWcyZGppbVlhQzBVeTBKY01MNHRPSFVtWTkrK3ZzZUdZY3lIamx2eGhOdkE4SVJycURwZ0Z0aUMwUmYyRkJlakw5ODI2OGNiaGpFRHM3Yll6YVNzMWd1SEpscGp3QVRzREtrditCNUIwNCtuQ1pUZFFJWXhINmJlU3laWVo0OEoyQkxSdWlFcWw2UGRNSWF4WUV5b2xwZEJ4OEFNd3pDTTFXVnQra3NNd3pBTVkva3dBVE1Nd3pBR2lRbVlZUmlHTVVqK2YrUEpmUGVjYXFwS0FBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsiY3JlZEJsb2IiLCJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwibGFyZ2VCbG9iS2V5IiwibWluUGluTGVuZ3RoIl0sImFhZ3VpZCI6ImIyNjcyMzliOTU0ZjQwNDFhMDFiZWU0ZjMzYzE0NWI2Iiwib3B0aW9ucyI6eyJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsImxhcmdlQmxvYnMiOnRydWUsImVwIjpmYWxzZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJhbHdheXNVdiI6ZmFsc2V9LCJtYXhNc2dTaXplIjoxMjAwLCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxLDJdLCJtYXhTZXJpYWxpemVkTGFyZ2VCbG9iQXJyYXkiOjEwMjQsIm1pblBJTkxlbmd0aCI6NCwibWF4Q3JlZEJsb2JMZW5ndGgiOjMyLCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6OH19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIzLTAzLTI4IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjUsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiYXV0aGVudG9uMSAtIENUQVAyLjEiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDIzMDMyODAwNiIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIzLTAzLTI4IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjV9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjMtMTAtMDMifSx7ImFhZ3VpZCI6ImI1MGQ1ZTBhLTdmODEtNDk1OS05YjEyLWY0NTQwNzQwNzUwMyIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiYjUwZDVlMGEtN2Y4MS00OTU5LTliMTItZjQ1NDA3NDA3NTAzIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IklEUHJpbWUgMzk0MCBGSURPIn0sImRlc2NyaXB0aW9uIjoiSURQcmltZSAzOTQwIEZJRE8iLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MiwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9pbnRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoyNTYsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50IiwicmVtb3RlX2hhbmRsZSJdLCJpc0tleVJlc3RyaWN0ZWQiOmZhbHNlLCJpc0ZyZXNoVXNlclZlcmlmaWNhdGlvblJlcXVpcmVkIjp0cnVlLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUM2VENDQWRHZ0F3SUJBZ0lKQUpiVHlydTFYL0lQTUEwR0NTcUdTSWIzRFFFQkN3VUFNQ014SVRBZkJnTlZCQU1NR0VkbGJXRnNkRzhnVFhWc2RHbEJjSEFnUmtsRVR5QkRRVEFlRncweE9EQTJNVEl4TkRRMU5UQmFGdzB5T0RBMk1Ea3hORFExTlRCYU1DTXhJVEFmQmdOVkJBTU1HRWRsYldGc2RHOGdUWFZzZEdsQmNIQWdSa2xFVHlCRFFUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU1WaktIV3BiRDdUU2xNeG9jalRsNm5JZjd4MzJQbXNROXpHdUxHR3FBMFVRWm9JcTNYTHpMNkxZVXZKNUE1ZzB1eUZHbGxIRWZHQUtyRWFDUThGVnZQUy9VaDBGeWZ6V2hSQXppVFNpampNSUlWampqVXY5bTl2Rm1jWFNjZ0hpZzdPZHo4ODU4VjBrck5IOTlxR20zd2pnYU9lclRXbXQralhDVWZuMDFJa1RQd3hHMkhsZ0VkNDVqTkxTVjdWb29sK0tlOEUya2k0bEVrVGVIemJvdWxSNUdVYnAzbk1pN0U0N1ZNUWEzYk53bnpXQmJzYUJTU1FoTGszbTVIYUtoaHhhNndKREs0N05pTUNrQ2tkSUh1V1NRTFZBZm04NVVBT050RU9Qd2kwT3VLM3FiZTh5S09GR2YwS2hCNU1NZUF5bTdNVi9NNFcwYTQ5b2dQRDlwTUNBd0VBQWFNZ01CNHdEQVlEVlIwVEJBVXdBd0VCL3pBT0JnTlZIUThCQWY4RUJBTUNBb1F3RFFZSktvWklodmNOQVFFTEJRQURnZ0VCQUpXejV4TE1rNVdOWWJBYjZ5T3hFQ0JvWjJXZUIvcWw0VkozTy8zL3ROc3hPWW56TGVXbzU0MHpRaDlyQW1heHo3ZXVtQmxza01xNHlHUFNOWEI5eWNXR0hna2NDZVN6TjJ3djhDSXpEQnMyb0JaalROazY1TEJaRHNzVE9CdE1XLyt1VEZIUWZidU8zSVNMaEkwRFhmUkVpOU5ETTNqZmsxMXhIY3NmaDJSTVYrUWROZndWYVpackNxK291RytFdmt2N0txcStveXUwVkZNL3R6NjhUR2w2eWxoUEZSMXFoOXd0dHBWakFPT0NFUUNMcVAyZFAyOGx3WUJ5Q3FIUXFWSHdidWp2L0xaalpuS1czTFluZFppeFBQU1JDSnNzRER3SnZoL2Y2blR4ZzlaRSsvSmNZcmU1Q2FJOG56VkhhU09Dak5KN0Z6VUxHNjRKaVdPdlE1MD0iLCJNSUlEZFRDQ0FsMmdBd0lCQWdJSkFJQ1VUdmtndGo1Q01BMEdDU3FHU0liM0RRRUJDd1VBTUZFeEN6QUpCZ05WQkFZVEFrWlNNUXd3Q2dZRFZRUUtEQU5FU1ZNeEN6QUpCZ05WQkFzTUFrTlRNU2N3SlFZRFZRUUREQjVIWlcxaGJIUnZJRTExYkhScFFYQndJRVpKUkU4Z1UzVmlZMkVnUTBFd0hoY05NakF3TnpBM01UUXpOekU0V2hjTk16QXdOekExTVRRek56RTRXakJSTVFzd0NRWURWUVFHRXdKR1VqRU1NQW9HQTFVRUNnd0RSRWxUTVFzd0NRWURWUVFMREFKRFV6RW5NQ1VHQTFVRUF3d2VSMlZ0WVd4MGJ5Qk5kV3gwYVVGd2NDQkdTVVJQSUZOMVltTmhJRU5CTUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUF2QUtPZXFDNS9wMEQxaXNDWUtRSmxWVU9yQjZJN0RMb2N1bkUvUm04ZHVHVGJ5eFFodDNDYkZWVHYzTjJMcDJmYmp4bEkrM3NPU0drMzNGVFlrVHF4Y2RKSXJKN1Nza0JjVVNOcmZLT2FRVC82S1FjUDRDbTdWKzY1NVRxK1RXeHl4V1FoRHlndDE1cW9QN011SzZiVDlTd3BDanBmS2hhTVNteVFhTW9VY1JBYkxxZHpCQ2FjMGh6QitaZStncUpsbldWOVVhU0kyckZzVnVINFpFMGNSTytNT3BhTGdNL3MyNDhuR0dIcDIyZXdTUWZiblBhQmJiOGlxeUFQK2N1NTJHTHNVcEtSSmViRStSNitQTVE5SkNkV2VRWlIzRGtmU2lka3YzbWNiNGpxMWlJdGErTXFLaFJud3JmWGg5MTFLV0xuWUFsOUVOQ2hMWDBjNlNqMVFJREFRQUJvMUF3VGpBZEJnTlZIUTRFRmdRVVdMdmhSQlVQbjh1TElmNjgrZ3YvTlpJd0dTSXdId1lEVlIwakJCZ3dGb0FVV0x2aFJCVVBuOHVMSWY2OCtndi9OWkl3R1NJd0RBWURWUjBUQkFVd0F3RUIvekFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBRkxyRGhhZWdlS0h4WWpIM0VQM3ZVQktobnpNMjA2QVN4Z2VZQ08yRWM5cE9sWUphZXFGRStzVWFtVVYvcHdqRGxxTmFTZ0ZneTdUd2VZa3ZPbU1uNHFTY3NIcXZKM3pHT0FpYWZ3YWgxdlVIZkNsWFI4K2F4TzJpR09VRjBKS3JaOVlZamJBYTUvNEhDbHY3akZQT2RNV1RPUXluZ29pSEFzM2prdVlqcENMRmxCNFZPaTNkMXdqQTFwblRkQktrQWI3dDhuVHZ3Ky9YYkZ2Y1FhNzNWSDdzanZvQnFEM2ZkTWZSY3VWcTRxVVp0WlQ2Y0dhZ1RIRDYxVHRxaDlvTUNaWGNEYlIxUEdabk5icXljc1dQRElLMG5wbUszLzNsZlY4Yytac3J5NmUxNzBtZkpNWnA3TzhtNkNTejYvVkxLK3lESmQ3ODQxd3BtZUtUZjZJblpBPT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBUXdBQUFBZ0NBWUFBQURubFVacUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFFblFBQUJKMEFkNW1IM2dBQUFBWmRFVllkRk52Wm5SM1lYSmxBSEJoYVc1MExtNWxkQ0EwTGpBdU1qSHhJR21WQUFBSzFFbEVRVlI0WHUxZERYQWNaUm0rTk9BZktvZzZXTzBRY3JlWDNPNzFSNDFvSGRTcXFEQU9nMytjWUVYQm9sWFJURW4yMjB0YUtUYzY0bWdCcXpCaUVVVnBCZHFpd3docVNkSVMydXBZU2d2UnRwVFNja2xqV3pIYWdqcFNSZHI0dkx0dmpydmsyN3ZkdmQxTGpuN1B6RE4zdC9kKzcvdCtmOC8rNzhhSzBORGFhcjJxT2RYWm9xV3lIOVIwYTBGY3Q2N1dkSEdUWm9qVkNjUHFTZWpXMW9RdUhzT3kvZUJUc0RtTS81NFpUOWorTFdHSWc3RGZCL3NCY0RQc2Y0WGZQOFgzYjJ1RzFaSFF6VThtVXVLZHlXVEhtNXFhY2kvakhBS0J5aWYwYkJyK0x3YVhJUFlQa01kcWZMOFhkV3BsczFBQTMxL1FqT3c5OEw4UzliOEJYSVIyK25EYzZEb3psc2swc2xua1FNeGtQR1hPOUVKdFZuWUdGNHNVeVZuZDhVVGFlcDhidys2TGFrQmo1aXpkYk5KUzFyeEVXbnlXeGczNkVtUGRXb1BQRGVqZjdlQVRHTXNIYUR6VHVDNmhiajBOL3BYbUFzcnVnczBXTFA4TnVCSmpaSm1XRWxjbDA5bVBKMUptVzB0TDUrdWlIQnVHa1hzbGpYODduaTRFelZuazlBdmtzUW41N0VTZGhyQjhCTXVQak9XUC8vNE9Ic1IvZTdEOFlkVGxmdFJoRmZnZExHOUh1MXdBZnpyNTVqQU9raVFLaHZWYkdCNkMwLy9pKzJpTmVSeDhGZ252UmZ4ZmFpbnpTazdORTBpSVVQYmY0M3dXbU5UTmQ3QnBLRUE3TFpmRkFZOXpwM3laVFNNRGlRVmkvVStTZzVRWUFJZk9tRzJld3NVakEvcmhXN0w0QmVybWo5aDBVb0IyT0IrVFpUVzRCL2s4T3lHL3lDaU9vVzFJWUg2SDhYUHo5TGJjS3ppbFFHaHBNWnZoWnlIR3dHM2c0MkJrODVaOG85MEc4WDBOaVNzMUl2MlFHazhLZFdzenQ0c25JUDhScVI5bURRWERJZFpTYkJvWjBJbDNTMk9YWlhZcEY0OE1VMTR3bksxYmVXNDFwTDNGRVFDSmxQVld0REcyZnV5VnJOUjN0QlRkU2pCOFlySUZveVZ0bm8yT0N6Qmd4RE5CQjZwWEtNSHd4aUQ5Z0szS2M2UGNrdkJHSlJpK01jbUMwWUQ0ZmRLNFhvaDlXL1lUQ1pSZ2VLTnZ3Y2hrR3RHMmUyVytha3NsR0w0eG1ZSkJheGxwVEkra05SUWRtR1Izb1VNSmhqZjZGUXc2Y0NyelUzdENNTERXdVFzZDNSK0F3M0tuQlE1S3luamhqZHhPbm5EaUNFWnVHanJzWVdsTUp0cGlXVUszQm1UL0ZmRXVkaGc2VVBlNkZnejBiUjZmYTZNbW5ZM2tsRHdoYVlqTFVVNmVzMjd0MGd6em03VmdVdTk2RDZma0h4Q2E2MlVWR0NNcThnMDJqUlFuaW1Cb1J2WWlhVHdtMm50Zlc5dkNrN1cwZFlIcy93SjE2M2s2ZU1adVEwVzlDd2JHOUsxc09xV0F2SVUwWDV0aURadE5iU2pCY0dFRWd0SFdkc3ZKOEUybkF1VXhpYnA1aFdNOTJvRGYyeWI4WDBLeDNyRU5GMG93b2dIbTBoSnB2amFWWVBqQ2lTQVlpYlQxZVdrc0ppYkNrL1BtNVU1aWM4cnhRcGxkTVJQcDdIbHNIaHFVWUVRREpSZ2g0c1V1R0hTUkQrcElWK1RKNHhIMUxHOWRqQ0hUaU1sUjRWaUcyRTdIUmJoQUtGQ0NFUTJVWUlTSUY3dGdvSjJ6MGpoTXRIT2VqbDJ3ZVFGWS9sR1pmU25GZkRZUEJVb3dva0hDTUJkTDg3V3BCTU1YS2dxR0lTNXZUcHRuaDBYVSswNVpuQUpERkF6RDZEZ2QvcDZXeG1IR0RmRkZOaCtIMFFiMHdhT3lNbU9FK09VTkkvY1NMbEExNmwwdzBGNjc0N3E0cFJwR2NkcWE3a3VSNVV0RUg0NWdEbXdLaS9EWmo4LzdJRVMzNHJPemVhYVl6V2xVaDNvUmpKb3pSTUdvT0FFTmEwaTJkVEdHZUVwOFRGSm1QRHZZdkdyVXUyQ0VRYnFoa3NPRkJzeWxpMld4YXNUajZOZDEycHNYdjU3VENRWWxHQzRNU1RCYVc2MDNvbzFkYjZxenFWdGZZbk01NkFwQnc5b3hvVndSTVlsR05LMzkxVnlpS2lqQmlFWXdtbFBkTGJKWXRTVGE3cUhpQSt1K29RVERoU0VKQnRwdmhkVC9HSFd4djl6V3hSaTB0UGlFdEh3SnhiVnNYaFdVWUVRakdIUndHdU9oMGdWNWtUT2VNaS9oaFB4RENZWUxReENNczFxdFZnenU4cmV2cHl5UGp3SHdzcFZoL1N1VldqS2RDd1NHRW95b0JBTzVwODMzb3ArZWs4V3NGZEYrd2E4U1ZvTGh3aEFFQTM3V1RQQmJSSFRjQWV4R3ZKVE5IZlFNTmNmNkJzK1A5ZWJueGZxZVBKV1gya0NaekhnZkV4akNHUUlsR05FSkJzRitFSkV1ZHN2aTFvYmlUNXlLZjlTTllPaldaalR5ZmFIUnVkOUFIb3RZcFdBNE54cUpZMUxmVE5UNUsyd2VpNjBmTWlBVUQ0S2pCZmJtajhiNjhzdGoydzdhRDJxaGZVLzB4eTZacnpIUzJxdWxwVE5sK3d5SXVoY01qQlU2NjFRTm0yY3VQb1BEUllUUkJqcGJSMk1BT1Y5SFp6T1E5OC93L2ZZd2lQSHRmamUwYnYyRmsvQ1BlaEdNT3JzT28vTHQ2N28xWERnVnVpRS9Cd0x4anhLeEtPWEcyTTZkdGkzNnc4T1JkbkdQN1RjZ2tGdWRDOGJVdkE2amxraWtPOCtUdGcySU1YU1l6ZnhEQ1lZTHF4QU1MN2V2bzc3dHRuRi8vMG5Za3RnaEVZbHhITHFhekoydGpFcWJzOWl5U1dYbjJ2NERRQWxHL2FPc1lCaldBVGJ6RHlVWUxnd3NHTGxwS0x0VjZwTkpIVlo0WUhMZi9uZkpCV0lDaDJIZFFFWGk2ZXdsTXI4bGRKNUhZdHY3aFJLTStrYzV3VUQ3N0dVei8xQ0M0Y0tBZ3VIcDlHZEtYTVhtRUl4OHUwUWNYUGpZYSsweW1Vd2oydXR4cWU4aW9vNFgydlkrb1FTai9sRmhsK1NQYk9ZZlNqQmNHRUF3NkhvSzdBNlVuY2lvNThHbXBzdGVlQjFENzlCWDVlSWc0ZjNEcDNPcEdPTE1sL2tmeHgyeHpGcmZqOFZYZ2xIL3FMQkxzb1hOL0VNSmhnc0RDRVlpVmY3MmRXYnBKZHc5Kzg2UmlzTjQ5Zzd1aDNWaEY0UEY2UW1KLzFMcTFnSXU0aG1WQkFNVDl1N3g3MHdKZy9UWWZVNmhMSlJnVkVhRlhaSUgyTXcvbEdDNDBLZGd6SjV0bmdLZkI2UyttUGovMEl3WkhTL25JZzVHUnhzaEJnTlNrU2psWWk1UkFQcnVVbG1jWW1KeS9YbkczSEV4SzZEaUZrWkV4QmpZeUNtVVJTWEJRRHVQb0E1Ym8yYlN5TDZkVS9JRTNpcVVuZ1lObTJnRDE3TjArRzhWcCtRZlNqQmM2Rk13NHJwbFNmMFVFVEZOTmk5RnovRE1XRy8raUVRa0hQYm1OOFMyYlp0NCtiaHpqMG41SjNpQmRGczFsL0FFMUwydUJhTldUT3JpQTV5U0p5RHY3OHI4MUp5ZXJ5NldRQW1HQzMwSVJ0T2MzR2xvcDhOU1AyUFV4Vk5sMS9UcjhxMnh2dng2OFBraXNmZ25mbDhmNng5MGZRVWw0bjVHR3ErWXVqaHk1cXp1MTNDUmlsQ0M0WTExS1JqMFdrZ3RGL3dtUlNVWUx2UWhHRjRtR0FhTFlQUHkyRGcwUGRZejlIN3Nwc3lOOVF4VWZDMGlYZnlGUHRvbmkxbE1HcXhjcENLVVlIaGozUWtHeENLcFcrL21kSUpCQ1lZTFBRb0d2WVFhOXVYZjcxbHA2NkpLbEh0OC9Rc1VSKzBYVFh1QUVneHZyQS9Cb0xmcjJRZkhyL0d6bGVtS0tTTVl1bmtIVFN6RWxMNCtzRmFDZ2ZvK0IrN1dqT3puMkxRc25OY0dpRDFVVHViUG9kbkY1cEdBenBnZ3Z1dFdCdXI2SDd0T3VyaVVpNVFGWFNXS010L0hCTjVFYXlYVXIrdzlNY0VwanZHSzR2Zklid1ZkdzhJcGxBV05CWlM1RHZXaE41WG40ZWRvcWQ4b2lGeXgyd2sraXUvMEl1aWw5S3dUVHNrVDRtbHhEdHJ6Um01WGpQVW8ycFhlNkc0OWdqeHZ3K2ZDaE5HaGNmaHdRQzlqYVRMRUc5eG9HRmVXdmlZK1V1U20yUStjb1hkeTZOWWlOT3d5VlBySEdCaDNKb3p1VUNzZVQ1bVhRZkYvamhnL3hPZlhOZDI4Z2pvMGFIM3BMQWxOTkdkdEw1WWk1NXZRZ2JlajQrNmcvOWdzTXFBT0gzSGFTZndFYlhjRHZtZVRodlVwVGU5Nnk0UXpNNzZRbTlZMFo5RnBkUGNtNnZOcHNBdDlzdHhwTyt2WDRFYkUyMG9UQ2NzR1NvbmwrQi9mNldhL1ZjVjUwYVNQeDd0T0RlRUJ4ZzEweHkrZGtvWGdmQWd4RmlEZTE5QU8zME0vckVRTzl5TG1BNGkvQmIrM2wrYm5rUElITjRQclVMKzErRndCMjJ2aG94MWlmMUc4MVhwYnZBMjVaaksrcjJseFIyNGExZDhSUHpFZnV3b1djc0VXaUpNellqK0kzdytWdEtzaEhnSC9BUFpTbnFqVHpmaTh4aDY3dW5VdVBkckEyOE54WXJIL0F6M3RJNGo1K1RPTEFBQUFBRWxGVGtTdVFtQ0MiLCJzdXBwb3J0ZWRFeHRlbnNpb25zIjpbeyJpZCI6ImhtYWMtc2VjcmV0IiwiZmFpbF9pZl91bmtub3duIjpmYWxzZX1dLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJGSURPXzJfMCJdLCJhYWd1aWQiOiJiNTBkNWUwYS03ZjgxLTQ5NTktOWIxMi1mNDU0MDc0MDc1MDMifX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjEtMDEtMDYiLCJ1cmwiOiJodHRwczovL3d3dy50aGFsZXNncm91cC5jb20vZW4_Z2NsaWQ9Q2owS0NRaUEzTlhfQlJEUUFSSXNBTEEzZklLLXp4aU5VMXFROWdtLVNKdFF1MlVMdVl1eEp0VW9fWWxqelhiNWtiWTUxMHh1dUpvY1hFd2FBcGo1RUFMd193Y0IiLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IklEUHJpbWUgMzk0MCBGSURPIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyMDExMTgwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMS4xIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjMifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjAtMDYtMTYifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIxLTAxLTA2In0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiM2UyYzQyYTU5ZTg1NTEzZjllZGFjOGNmNzRjMzk1M2Y1NzkzZGFiNiJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyIzZTJjNDJhNTllODU1MTNmOWVkYWM4Y2Y3NGMzOTUzZjU3OTNkYWI2Il0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJPbmVLZXkgVTJGIEF1dGhlbnRpY2F0b3IifSwiZGVzY3JpcHRpb24iOiJPbmVLZXkgVTJGIEF1dGhlbnRpY2F0b3IiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MiwicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoyfSx7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDbURDQ0FqNmdBd0lCQWdJSVVPM3JWWncrWUl3d0NnWUlLb1pJemowRUF3SXdnWmN4Q3pBSkJnTlZCQVlUQWtOT01SQXdEZ1lEVlFRSUV3ZENSVWxLU1U1SE1SQXdEZ1lEVlFRSEV3ZElRVWxFU1VGT01SOHdIUVlEVlFRS0V4WlBUa1ZMUlZrZ1IweFBRa0ZNSUVOUExpd2dURlJFTVE4d0RRWURWUVFMRXdaUFRrVkxSVmt4RkRBU0JnTlZCQU1UQzA5T1JVdEZXU0JTVDA5VU1Sd3dHZ1lKS29aSWh2Y05BUWtCRmcxa1pYWkFiMjVsYTJWNUxuTnZNQjRYRFRJek1URXdOekF6TlRFd01Gb1hEVE16TVRFd056QXpOVEV3TUZvd2daY3hDekFKQmdOVkJBWVRBa05PTVJBd0RnWURWUVFJRXdkQ1JVbEtTVTVITVJBd0RnWURWUVFIRXdkSVFVbEVTVUZPTVI4d0hRWURWUVFLRXhaUFRrVkxSVmtnUjB4UFFrRk1JRU5QTGl3Z1RGUkVNUTh3RFFZRFZRUUxFd1pQVGtWTFJWa3hGREFTQmdOVkJBTVRDMDlPUlV0RldTQlNUMDlVTVJ3d0dnWUpLb1pJaHZjTkFRa0JGZzFrWlhaQWIyNWxhMlY1TG5Odk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRUE5dk1MSlFEbW56ZlRmQ0VFMzNZRStOUjZoWnJ4eXo5VEZvRWs2VW85eFM3eHU4eE5nZTUvTW5UZzNFWHdmZEppTVFVZFhISHQzY1dBRUdNOXFic0pLTnlNSEF3RHdZRFZSMFRBUUgvQkFVd0F3RUIvekFkQmdOVkhRNEVGZ1FVWmN1ZlN6V0FtVkFKdHRBclZRcmJHZ1ZGL3Vrd0N3WURWUjBQQkFRREFnRUdNQkVHQ1dDR1NBR0crRUlCQVFRRUF3SUFCekFlQmdsZ2hrZ0JodmhDQVEwRUVSWVBlR05oSUdObGNuUnBabWxqWVhSbE1Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lRQ0RGQlhNS0VXUGR3RmN5WnNEQzd1ZVFTS0I1QmxyZ3lNNktqV0RXUnY2SkFJZ0g4V0lKTmhacVZmYzFMWWlJK0lUSFkvUGw5QzVCb0FWVW92N3ZOcHdHTzA9Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUdBQUFBQmdDQVlBQUFEaW1IYzRBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBY1VTVVJCVkhnQjdaM1BieE5IRk1lL3MzYU1vRUVZVVZHQlZHRU9VRldxaEEwa29wZkdPVk9KNUZRdVZZTFVIbnBLcU5RZUc2Zi9BUFRFb1VnNFVnKzlFZFQyVmluT2lTb0p4WndxVWJVNFVnV3RWQlFqVUNzU2U2ZnoxaGdWLzBnOHN6T3phMmMra2hYSFdTZngrODY4ZWZQZXpDemdjRGdjRG9mRDRYQTRIQTZIdzJFTmhyaHlONXZHMWxBR0hzc0FQQTB1dmpMeGxYa0h0bjBmOTUrSWE2dmkyZzN4OGRiRjkxVWthMlhreWxYRWtIZ0lRTWF1cC9MQ2V1TEJqb24vS2d1T0RMVENTWUN5ZU53VGY2T0V4Q2FKVWtIRVJDZkEzWE1aK1A0VWVHRDBQS0pCQ01LWDRhT0kwZFV5SXNDK0FHdWpFK0pEejBSbzlHNlVrY0JWNUZZV1lCRjdBcXlOVElPeE9mMnVSVE1jRlNSUnNDV0VlUUZXeitYaCtUZGliL2hXTEFsaFRnQWFXUDBoMGVMWkxQb1p4b3Z3dHVaTkRkaG1CTGlkeldBb2RWTTh5MklRQ0hyRDVyZ0pFZlFMUU1aUHBaYjZ6dVhzVEJVK0g5Y2RMZWtWWUhDTjMwUzdDUG9FR0h6ak42bUtTVnhPbHp2eW9JdmRZWHdpalpyNHJCUmthRUNQQUhkRzR4L2Y2NFNKejFwUDNZQUd3cnVnUnNUekFMdVRTWnhkV1VRSXd2Y0FjajI3Rlk0cllWMVJFbUdnOUlJRjE1TkpIZW5wdW1yOW1YZzhoVFhJRmRWU05ORXNRSkZ3THVqTzZBUFRBcVFUKzdHUi9iR25heTlWdmtUeDhRK3dERVZGeDFYckRlb3VhTzNNaEkzV1A1RitEekZIUkVWN3BxRklpREVnTVFVTFhFaVBJZll3L3dJVVVST0FJaC9ST0dFWWNqOFQvU0FBMVRaV3orYWhnSm9BUTBONVdLQVAzTS8vOFBKUVFERUtZc3BkVG9ieVA3OWkvUDRuYmE4dm5ieUcyT0dCWEhJQmtxaUdvWGxZb1B6dmZmUU5GSkRRbkVBeUdwSjNRUTFmcHlVUE1uRFVoNlRIUllVeElERVlSUllqZU5LMmtSZUE4WDRJU3lMQ1B3VkpGSG9BejhEUkJXYWhCeWo4a1YxRU9saHdKb0djQUpxS0VBUE5WbDNLUm5JQzFKS3U5ZStFSjdjU1JFNEFXcDNzMkI3dUdld0I4SndBT3lMWFNPVm13c0VhZlVST3Q1eC9aZk1SSXNkangyUXVEMWNSaXdncXZBd0tmU2tBUWFucWRHSTRlRzY5RktrUlNSZUVTRjFRZnZnMEpnNk80Y0tCTVdUMnZGb25KZ0ZLVDMvR2duQlBpOVZsUkFiM016S1g5MFVQeU80OWdTdHZmb3I4L3ROZHIya1diK2hCWXdHNUtSSWs3dWhiR1dlSW1jTVhzZlRXdFcyTjN3cXRvcUNhd2R5Ump4RjNZdDBEeUlDRm94OUJsZVo3NXg5OWpiZ2lPUkZEQlpZZ2Z4L0crRTNvZDh5S1htUU56cDdJWEI3YkhuRGorQmRkZjBiemdGdGlvRzFXek1qbFRCODZqNmxENzNlOGZrNklRTyt4RWlsNWJFUG04bGdLUU1ic3RCcXU4bHdNcnV2dGd5dTlUcThWSGw0UGZIOXJoRVFEZE9HSTZBbC9YRUhja00wRlZXQ0J1YVB0ZzJlMTlqUW8wRzhYMlZEMFE5ZVFJSzFNdlg0K0VNSTRQbCtYdVZ3eUN2S05iL2ZQN2ozWnNmWFAvM205cDFSREVJS3V0OCtVeWZoaiszTXdEek5ZbFBlOUNneVQ3MktrNHQrOXIvbWtYdExKMzQ4UG40RnhrbldwcGZweUF0UVR4bnRBSnpmUnphRGJjV3VqZlRaOElHbkJCZFVnRlFYSkNmRHVUeFhRYXVBK3BkZGw3cUdnazFra1VDbktWMkNaWnRKTmhrNnQzVUs2dW1wK1laYlA3c0Vnbll5VTNYZFNPb0toOTdTeS92d2h6TUtsdDY4cXJBdGlSbzkxNlJabXpoNytBTDNTYlI1UmVtWTZPZWRKTjA1NUFiaGZna0dvQjlDaTNGWm0zcmdvV3ZXSkhkOVBodTgwajJoTzFveVNxRXZ2bDVNWG9MRkwzT2hBdlBENHU3Ylh5QVhSTEhkS3RPNXVVUDZJTXFmUnRINGlLZDBEMU1vcmE2TjBFSWZSRFJvUDNsbHNTeWswb1paY2ZQdzkxbCtNRjJSd3lnTjFTMWxUNnc5bXlFWUhZZUgvejY1S3ovVFVja0djTFl1MGhGRUJKbi8vREhmZi9xYmp6OGpRTXZXQmdraEhtNCtBUEtVeW5GcEJKdm04Q01OdWlNWUJIY1YzcWdVczJOZzU2ZnRGS0tBbVFCRHJjcVBSRUVFcDVNbmZQdStZWE5zSlN0NWRGdGxQeXBDYVI5aEM4UVFWOVpJazUvT3dBQlhZeVg4dkNKL2ZLelJHNUg3NUVGZi8raFpXU0xDclVDVGNHb2Uxa1NXYnB4L1NZRHNyd3RGVEltUGFPZ2FReTFwK2RpY1F6R294bms3VEdsazVEa1hDQ1VEYmxaZ1gyVmtSd2RxZzVMQ1NpOUpHQXROaER2WUx2OHJIY2krSUZTRmJQeEYrV1lxUHk5aXRKTlVQNldnU1hnQWEvVG1zRE1peGdyR2lqak5GOVN6TUdsa3BpUDVZd202QlhJKzNWMHZQMTdjeWJpdHh5ZWE2b2NnSXpoRDF4cEVyYVptSTZoT0FxbVdiNGg4YmFCRjRWY3gvSnBFTEtvTmEwTHMyZEpCRm9KYnZJK1lIdHphNWZTNkRvZnJOZ2RuUyt0THQ2R3Y1VGN5c2pxYWVRS25aZ1lpTzJGZEk3c3VaTUg3dzIyRWE2ZzBwdi84T2RhVldELzhTUnRaS01JaTdnVU1yQTNjRGgxWWErYU1aV0RqeVRBNmF4d2gzRS9JZ1ZsbWkyL0hWR0tqejRobWROQ1VHYTJaNUQvTEx1eW90SXZIYWdxNjRYcFlZN1BwOVFkQXoyS2xHWW85T1pORWNRVkZveklPN0pwVkVMSDhQeWVGeVZFWi85ZCtLTTNUeVNLM1d1SUVidkdPaUZuMHdlTDNiWm1pT0o4SzRMMjdpRmp3WC9qeFpNUlhCT0J3T2g4UGhjRGdjRG9mRDRYRDBHZjhCOVdOMi9sZHFpM0VBQUFBQVNVVk9SSzVDWUlJPSJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0wNy0xNSJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjQtMDctMTUifSx7ImFhZ3VpZCI6IjhjOTdhNzMwLTNmN2ItNDFhNi04N2Q2LTFlOWI2MmJkYTZmMCIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiOGM5N2E3MzAtM2Y3Yi00MWE2LTg3ZDYtMWU5YjYyYmRhNmYwIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkZULUpDT1MgRklETyBGaW5nZXJwcmludCBDYXJkIn0sImRlc2NyaXB0aW9uIjoiRlQtSkNPUyBGSURPIEZpbmdlcnByaW50IENhcmQiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlCZmpDQ0FTV2dBd0lCQWdJQkFUQUtCZ2dxaGtqT1BRUURBakFYTVJVd0V3WURWUVFEREF4R1ZDQkdTVVJQSURBeU1EQXdJQmNOTVRZd05UQXhNREF3TURBd1doZ1BNakExTURBMU1ERXdNREF3TURCYU1CY3hGVEFUQmdOVkJBTU1ERVpVSUVaSlJFOGdNREl3TURCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQk5CbXJScVZPeHp0VEpWTjE5dnRkcWNMN3RLUWVvbDJubk0yL3lZZ3Zrc1pucjUwU0tiVmdJRWt6SFFWT3U4MExWRUUzbFZoZU8xSGpnZ3hBbFQ2bzRXallEQmVNQjBHQTFVZERnUVdCQlJKRldRdDFidkczak02WGdtVi9JY2pOdE8vQ3pBZkJnTlZIU01FR0RBV2dCUkpGV1F0MWJ2RzNqTTZYZ21WL0ljak50Ty9DekFNQmdOVkhSTUVCVEFEQVFIL01BNEdBMVVkRHdFQi93UUVBd0lCQmpBS0JnZ3Foa2pPUFFRREFnTkhBREJFQWlBd2ZQcWdJV0lVQitRQkJhVkdzZEh5MHM1Uk14bGt6cFNYL3pTeVRabVVwUUlnQjJ3SjZuWlJNOG9YL25BNDNSaDZTSm92TTJYd0NDSC8vK0xpckJBYkIwTT0iLCJNSUlCMkRDQ0FYNmdBd0lCQWdJUUdCVXJRYmREcm0yMEZabkRzWDJDQlRBS0JnZ3Foa2pPUFFRREFqQkxNUXN3Q1FZRFZRUUdFd0pWVXpFZE1Cc0dBMVVFQ2d3VVJtVnBkR2xoYmlCVVpXTm9ibTlzYjJkcFpYTXhIVEFiQmdOVkJBTU1GRVpsYVhScFlXNGdSa2xFVHlCU2IyOTBJRU5CTUNBWERURTRNRFF3TVRBd01EQXdNRm9ZRHpJd05EZ3dNek14TWpNMU9UVTVXakJMTVFzd0NRWURWUVFHRXdKVlV6RWRNQnNHQTFVRUNnd1VSbVZwZEdsaGJpQlVaV05vYm05c2IyZHBaWE14SFRBYkJnTlZCQU1NRkVabGFYUnBZVzRnUmtsRVR5QlNiMjkwSUVOQk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRXNGWUVFaGlKdXFxbk1nUWpTaWl2QmpWN0RHQ1RmNFhCQkgvQjd1dlpzS3hYU2hGMEw4dURJU1dVdmNFeGl4UnM2Z0Izb2xkU3Jqb3g2TDhUOTROT3pxTkNNRUF3SFFZRFZSME9CQllFRkV1OWh5WVJyUnlKendSWXZuRFNDSXhyRmlPM01BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0RnWURWUjBQQVFIL0JBUURBZ0VHTUFvR0NDcUdTTTQ5QkFNQ0EwZ0FNRVVDSURIU2IybWJOREFVTlh2cFBVMG9XS2VOeWUwZlEybDlEMDFBUjIrc0xaZGhBaUVBbzN3ejY4NElGTVZzQ0NSbXVKcXhINkZRUkVTTnFlenVvMUUrS2tHeFd1TT0iLCJNSUlCMkRDQ0FYNmdBd0lCQWdJUUZaOTd3czJKR1BFb2E1TkkrcDh6MWpBS0JnZ3Foa2pPUFFRREFqQkxNUXN3Q1FZRFZRUUdFd0pEVGpFZE1Cc0dBMVVFQ2d3VVJtVnBkR2xoYmlCVVpXTm9ibTlzYjJkcFpYTXhIVEFiQmdOVkJBTU1GRVpsYVhScFlXNGdSa2xFVHlCU2IyOTBJRU5CTUNBWERURTRNRFF3TVRBd01EQXdNRm9ZRHpJd05EZ3dNek14TWpNMU9UVTVXakJMTVFzd0NRWURWUVFHRXdKRFRqRWRNQnNHQTFVRUNnd1VSbVZwZEdsaGJpQlVaV05vYm05c2IyZHBaWE14SFRBYkJnTlZCQU1NRkVabGFYUnBZVzRnUmtsRVR5QlNiMjkwSUVOQk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRW5mQUtianZNWDFFeTFiNmsrV1FRZE5WTXQ5SmdHV3lKM1B2TTRCU0s1WHFUZm8rKzBvQWovNHRud3lJTDBIRkJSOVN0K2t0anFTWERmamlYQXVyczg2TkNNRUF3SFFZRFZSME9CQllFRk5HaG1FMkJmOE81YS9ZSFo3MVFFdjZRUmZGVU1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0RnWURWUjBQQVFIL0JBUURBZ0VHTUFvR0NDcUdTTTQ5QkFNQ0EwZ0FNRVVDSVFDM3NUMWxCakdlRit4S1RwelYxS1lVMmNrYWhUZDRtTEp5ellPaGFIdjRpZ0lnRDJKWWtmeUg1UTRCcG84cnJvTzBJdDdvWWpGMmtneS9lU1ozVTlHbGFxdz0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBRkFBQUFBVUNBTUFBQUF0QmtybEFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFCSFpwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFBRHcvZUhCaFkydGxkQ0JpWldkcGJqMGk3N3UvSWlCcFpEMGlWelZOTUUxd1EyVm9hVWg2Y21WVGVrNVVZM3ByWXpsa0lqOCtJRHg0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJa0ZrYjJKbElGaE5VQ0JEYjNKbElEVXVOaTFqTURFMElEYzVMakUxTmpjNU55d2dNakF4TkM4d09DOHlNQzB3T1RvMU16b3dNaUFnSUNBZ0lDQWdJajRnUEhKa1pqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWo0Z1BISmtaanBFWlhOamNtbHdkR2x2YmlCeVpHWTZZV0p2ZFhROUlpSWdlRzFzYm5NNmVHMXdQU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2SWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhodGJHNXpPbkJvYjNSdmMyaHZjRDBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5d2FHOTBiM05vYjNBdk1TNHdMeUlnZUcxc2JuTTZlRzF3VFUwOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXRiUzhpSUhodGJHNXpPbk4wVW1WbVBTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZjMVI1Y0dVdlVtVnpiM1Z5WTJWU1pXWWpJaUI0YlhBNlEzSmxZWFJ2Y2xSdmIydzlJa0ZrYjJKbElGQm9iM1J2YzJodmNDQkRReUF5TURFMElDaE5ZV05wYm5SdmMyZ3BJaUI0YlhBNlEzSmxZWFJsUkdGMFpUMGlNakF4TmkweE1pMHpNRlF4TkRvek16b3dPQ3N3T0Rvd01DSWdlRzF3T2sxdlpHbG1lVVJoZEdVOUlqSXdNVFl0TVRJdE16QlVNRGM2TXpFNk5Ua3JNRGc2TURBaUlIaHRjRHBOWlhSaFpHRjBZVVJoZEdVOUlqSXdNVFl0TVRJdE16QlVNRGM2TXpFNk5Ua3JNRGc2TURBaUlHUmpPbVp2Y20xaGREMGlhVzFoWjJVdmNHNW5JaUJ3YUc5MGIzTm9iM0E2U0dsemRHOXllVDBpTWpBeE5pMHhNaTB6TUZReE5Ub3pNRG95Tnlzd09Eb3dNQ1lqZURrNzVwYUg1THUySU9hY3F1YWdoK21pbUMweElPVzNzdWFKaytXOGdDWWplRUU3SWlCNGJYQk5UVHBKYm5OMFlXNWpaVWxFUFNKNGJYQXVhV2xrT2pKRk56RkNSa1pEUXpZM1JqRXhSVFk1TnpoRVFUbERRa0kyTkRZelJqa3dJaUI0YlhCTlRUcEViMk4xYldWdWRFbEVQU0o0YlhBdVpHbGtPakpGTnpGQ1JrWkVRelkzUmpFeFJUWTVOemhFUVRsRFFrSTJORFl6Umprd0lqNGdQSGh0Y0UxTk9rUmxjbWwyWldSR2NtOXRJSE4wVW1WbU9tbHVjM1JoYm1ObFNVUTlJbmh0Y0M1cGFXUTZNa1UzTVVKR1JrRkROamRHTVRGRk5qazNPRVJCT1VOQ1FqWTBOak5HT1RBaUlITjBVbVZtT21SdlkzVnRaVzUwU1VROUluaHRjQzVrYVdRNk1rVTNNVUpHUmtKRE5qZEdNVEZGTmprM09FUkJPVU5DUWpZME5qTkdPVEFpTHo0Z1BDOXlaR1k2UkdWelkzSnBjSFJwYjI0K0lEd3ZjbVJtT2xKRVJqNGdQQzk0T25odGNHMWxkR0UrSUR3L2VIQmhZMnRsZENCbGJtUTlJbklpUHo0NzdKWEZBQUFBWUZCTVZFWC8vLzhFVnFJWFphdkcyT29xY0xHMnpPT2t3dDBCU0p0cWxjWFY0dSthdXRsV2hiems3UFVBTVk5SGNyS2p0TmJxOGZlQWw4YUJvc3p6OXZwZGpzR0dxdEYzbjh1VHNOU1pwYzZKc05UNSt2MHhZS251OFBmZjUvTDQ4ZmcvZnJpY3pKZ1lBQUFEQUVsRVFWUjQya1JVQ1piRElBakZYWk9ZMVRhdE5jMzliemtzU1ljM3I0TUU0Zk1CQWFENnpsOHkvOVRPZ2V0OGQ1amZONzhid00vZERDUnBSNTIxelhmb2pISjA1SUl5aEJBVVNWQU9OZEd6Qll0MmY3S0ZyZmtKYUFrSGg5RlpoY0RYSFJrVEtvOU1MaWhHYWF2SW1uVjNxeUVYMEVwcmd6LzREd1VEN2tDSFJuZDhRRk40M0dvNFVWbUREZ3phNHcyN29pemRBMitjSyt1dVVwampvMit4d2MvNDJXNTB4NUxHWWVEQnNSMEhWSXg1eDhpRjYwQ2JsYlRFRWtGcjI3Yk5EQlVWU3ExT0tWUGJFNjJiM0VIOEZxQmc1T09PRXVjMnQ4WkppcU1PdUdwK2NLamc3d1ZHY2VvenFONHB4Z1ZQUWtqRllnYlZKS0RVaERDallyYXdQNXE0RVRnQzlmSU1SSHRpdHBRY0N2Sk9FTGNiTXNRZ25jaVJrbGpweVFqdkc0NGpxQlVFVEZpQmkxUEVJeWVrT3pzVytUeTVjTEhvczVSK2RNUzFMdFNTeGYzZ1FIY3pSMkNJNGdNTnBXNElSQTFRTWE2dEo0K0M2dUh1R0U4bU5ESXlGcWcvT1AvTU1VdWVTNklxOFM5MGRBZUJKU0V5L3FLa0srQk53ejhjWVk0amI1SjZ1NGlXQ0kyQjFaNTZMVzVrRWM0aGtkTXBzdlVDNTU4NVNYMFF1YmNnTnF5ZmdERkVjVHQrNDAvMFM1Tngwd2FDdzNPS2tjT2JBNUluMEFZcDAxcGpqdzJuNjI2VURqdEh3YTI4aUh1VEtxdHJ2K3JlVzQxTlo2aUdscjd1dUxKQ2ZrRnRjdGNHMDRzZ20xZU5TK1phRG5wYVRFckdveVg1SksyaU16OHhzMG5Pd1dHY1BETjQ5cWFDZDRiekpvekRabS9hQksrRW96THcrWGhOQmlZd0hmMHNpT3UxWFBrRy96S3d2cVlLY2ZTd0RFY0gvb1VlMDdlcy9XUThySXlnMkRPWGo4dGprWmR1REIvYjhoekRsbE1NT0NTNUJFbmQ1MzRmOHRpM1VaYzRrTXMzeEx5YWZNU3NKaGRHOFhQcWpOazV0QWdPMjVmZUtDaG5WZERqL0owRk1rT3NVL3hNQnYwd0ZoWWVFR2ZWSDEzZnVEVTB5REZMYTRmYzdSbldIQmZ1VEZWMnRFbU53YWRjN2FjM1VZMmpmQmw3SFQzNmZlMzRpUU81bU5DRkZCVzA3S2pQZ3FoT0xVMDF2WjhQdWVaMkpDbEZaTjhqa1VzNjl1a2E5ZVBwNitFZkw0QUY1K055d1NiaXJIdGNCOE1sL2drd0FFamtLNjRLakhQZUFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xX1BSRSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiOGM5N2E3MzAzZjdiNDFhNjg3ZDYxZTliNjJiZGE2ZjAiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsInV2IjpmYWxzZSwidXNlclZlcmlmaWNhdGlvbk1nbXRQcmV2aWV3IjpmYWxzZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlfSwibWF4TXNnU2l6ZSI6MTAyNCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6NiwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjo5Nn19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIwLTA0LTI0IiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJGVC1KQ09TIEZJRE_CriBGaW5nZXJwcmludCBDYXJkIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyMDA0MTcwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMiIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4zIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIwLTA0LTI0In1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMC0wNC0yNCJ9LHsiYWFndWlkIjoiOTliZjQ2MTAtZWMyNi00MjUyLWIzMWYtNzM4MGNjZDU5ZGI1IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI5OWJmNDYxMC1lYzI2LTQyNTItYjMxZi03MzgwY2NkNTlkYjUiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiWlRQYXNzIFNtYXJ0QXV0aCJ9LCJkZXNjcmlwdGlvbiI6IlpUUGFzcyBTbWFydEF1dGgiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6NDUsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfSx7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQ1Z6Q0NBZjJnQXdJQkFnSUpBSk1jOFcxSU9TTmhNQW9HQ0NxR1NNNDlCQU1DTUlHR01Rc3dDUVlEVlFRR0V3SlZVekVSTUE4R0ExVUVDQXdJVm1seVoybHVhV0V4RURBT0JnTlZCQWNNQjBGemFHSjFjbTR4RlRBVEJnTlZCQW9NREZwVVVHRnpjeXdnU1c1akxqRWlNQ0FHQTFVRUN3d1pRWFYwYUdWdWRHbGpZWFJ2Y2lCQmRIUmxjM1JoZEdsdmJqRVhNQlVHQTFVRUF3d09XbFJRWVhOeklGSnZiM1FnUTBFd0lCY05Nak13T1RFME1UQTFOVEEyV2hnUE1qQTFNekE1TURZeE1EVTFNRFphTUlHR01Rc3dDUVlEVlFRR0V3SlZVekVSTUE4R0ExVUVDQXdJVm1seVoybHVhV0V4RURBT0JnTlZCQWNNQjBGemFHSjFjbTR4RlRBVEJnTlZCQW9NREZwVVVHRnpjeXdnU1c1akxqRWlNQ0FHQTFVRUN3d1pRWFYwYUdWdWRHbGpZWFJ2Y2lCQmRIUmxjM1JoZEdsdmJqRVhNQlVHQTFVRUF3d09XbFJRWVhOeklGSnZiM1FnUTBFd1dUQVRCZ2NxaGtqT1BRSUJCZ2dxaGtqT1BRTUJCd05DQUFTSis2MUxKZjk2MC8wQ3p2amRTMU11ZWtOLzMvTjVEWHg4UStOTHQ2b2g5TmRPREFUVHlqUkNDODBlbkM2cnlSUXJQMWpFZUFUdG1LSnFQVEpwQUdaem8xQXdUakFkQmdOVkhRNEVGZ1FVbFE2OENqelJreTJ4Y0JML2M0N3pwNmpRK0xNd0h3WURWUjBqQkJnd0ZvQVVsUTY4Q2p6Umt5MnhjQkwvYzQ3enA2alErTE13REFZRFZSMFRCQVV3QXdFQi96QUtCZ2dxaGtqT1BRUURBZ05JQURCRkFpQmJIYUF5OVU2RlJMbkp1bEhQNzZkRjdWaXNLN0hDMFNwS0R2clY5THRqVUFJaEFMWktzSTVNWFJ5MkMyZjkxWGFJaGZPd01CZUo1UExoV1JrY2R5YlcwcjZNIl0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWdDQUlBQUFEOEdPMmpBQUFBQ1hCSVdYTUFBQzRqQUFBdUl3RjRwVDkyQUFBS1QybERRMUJRYUc5MGIzTm9iM0FnU1VORElIQnliMlpwYkdVQUFIamFuVk5uVkZQcEZqMzMzdlJDUzRpQWxFdHZVaFVJSUZKQ2k0QVVrU1lxSVFrUVNvZ2hvZGtWVWNFUlJVVUVHOGlnaUFPT2pvQ01GVkVzRElvSzJBZmtJYUtPZzZPSWlzcjc0WHVqYTlhODkrYk4vclhYUHVlczg1Mnp6d2ZBQ0F5V1NETlJOWUFNcVVJZUVlQ0R4OFRHNGVRdVFJRUtKSEFBRUFpelpDRnovU01CQVBoK1BEd3JJc0FIdmdBQmVOTUxDQURBVFp2QU1CeUgvdy9xUXBsY0FZQ0VBY0Iwa1RoTENJQVVBRUI2amtLbUFFQkdBWUNkbUNaVEFLQUVBR0RMWTJMakFGQXRBR0FuZitiVEFJQ2QrSmw3QVFCYmxDRVZBYUNSQUNBVFpZaEVBR2c3QUt6UFZvcEZBRmd3QUJSbVM4UTVBTmd0QURCSlYyWklBTEMzQU1ET0VBdXlBQWdNQURCUmlJVXBBQVI3QUdESUl5TjRBSVNaQUJSRzhsYzg4U3V1RU9jcUFBQjRtYkk4dVNRNVJZRmJDQzF4QjFkWExoNG96a2tYS3hRMllRSmhta0F1d25tWkdUS0JOQS9nODh3QUFLQ1JGUkhnZy9QOWVNNE9yczdPTm82MkRsOHQ2cjhHL3lKaVl1UCs1YytyY0VBQUFPRjBmdEgrTEMrekdvQTdCb0J0L3FJbDdnUm9YZ3VnZGZlTFpySVBRTFVBb09uYVYvTncrSDQ4UEVXaGtMbloyZVhrNU5oS3hFSmJZY3BYZmY1bndsL0FWLzFzK1g0OC9QZjE0TDdpSklFeVhZRkhCUGpnd3N6MFRLVWN6NUlKaEdMYzVvOUgvTGNMLy93ZDB5TEVTV0s1V0NvVTQxRVNjWTVFbW96ek1xVWlpVUtTS2NVbDB2OWs0dDhzK3dNKzN6VUFzR28rQVh1UkxhaGRZd1AyU3ljUVdIVEE0dmNBQVBLN2I4SFVLQWdEZ0dpRDRjOTMvKzgvL1VlZ0pRQ0Faa21TY1FBQVhrUWtMbFRLc3ovSENBQUFSS0NCS3JCQkcvVEJHQ3pBQmh6QkJkekJDL3hnTm9SQ0pNVENRaEJDQ21TQUhISmdLYXlDUWlpR3piQWRLbUF2MUVBZE5NQlJhSWFUY0E0dXdsVzREajF3RC9waENKN0JLTHlCQ1FSQnlBZ1RZU0hhaUFGaWlsZ2pqZ2dYbVlYNEljRklCQktMSkNESmlCUlJJa3VSTlVneFVvcFVJRlZJSGZJOWNnSTVoMXhHdXBFN3lBQXlndnlHdkVjeGxJR3lVVDNVRExWRHVhZzNHb1JHb2d2UVpIUXhtbzhXb0p2UWNyUWFQWXcyb2VmUXEyZ1AybzgrUThjd3dPZ1lCelBFYkRBdXhzTkNzVGdzQ1pOank3RWlyQXlyeGhxd1Zxd0R1NG4xWTgreGR3UVNnVVhBQ1RZRWQwSWdZUjVCU0ZoTVdFN1lTS2dnSENRMEVkb0pOd2tEaEZIQ0p5S1RxRXUwSnJvUitjUVlZakl4aDFoSUxDUFdFbzhUTHhCN2lFUEVOeVFTaVVNeUo3bVFBa214cEZUU0V0SkcwbTVTSStrc3FaczBTQm9qazhuYVpHdXlCem1VTENBcnlJWGtuZVRENURQa0crUWg4bHNLbldKQWNhVDRVK0lvVXNwcVNobmxFT1UwNVFabG1ESkJWYU9hVXQyb29WUVJOWTlhUXEyaHRsS3ZVWWVvRXpSMW1qbk5neFpKUzZXdG9wWFRHbWdYYVBkcHIraDB1aEhkbFI1T2w5Qlgwc3ZwUitpWDZBUDBkd3dOaGhXRHg0aG5LQm1iR0FjWVp4bDNHSytZVEtZWjA0c1p4MVF3TnpIcm1PZVpENWx2VlZncXRpcDhGWkhLQ3BWS2xTYVZHeW92VkttcXBxcmVxZ3RWODFYTFZJK3BYbE45cmtaVk0xUGpxUW5VbHF0VnFwMVE2MU1iVTJlcE82aUhxbWVvYjFRL3BINVovWWtHV2NOTXcwOURwRkdnc1YvanZNWWdDMk1aczNnc0lXc05xNFoxZ1RYRUpySE4yWHgyS3J1WS9SMjdpejJxcWFFNVF6TktNMWV6VXZPVVpqOEg0NWh4K0p4MFRnbm5LS2VYODM2SzNoVHZLZUlwRzZZMFRMa3haVnhycXBhWGxsaXJTS3RScTBmcnZUYXU3YWVkcHIxRnUxbjdnUTVCeDBvblhDZEhaNC9PQlozblU5bFQzYWNLcHhaTlBUcjFyaTZxYTZVYm9idEVkNzl1cCs2WW5yNWVnSjVNYjZmZWViM24raHg5TC8xVS9XMzZwL1ZIREZnR3N3d2tCdHNNemhnOHhUVnhiendkTDhmYjhWRkRYY05BUTZWaGxXR1g0WVNSdWRFOG85VkdqVVlQakduR1hPTWs0MjNHYmNhakpnWW1JU1pMVGVwTjdwcFNUYm1tS2FZN1REdE14ODNNemFMTjFwazFtejB4MXpMbm0rZWIxNXZmdDJCYWVGb3N0cWkydUdWSnN1UmFwbG51dHJ4dWhWbzVXYVZZVlZwZHMwYXRuYTBsMXJ1dHU2Y1JwN2xPazA2cm50Wm53N0R4dHNtMnFiY1pzT1hZQnR1dXRtMjJmV0ZuWWhkbnQ4V3V3KzZUdlpOOXVuMk4vVDBIRFlmWkRxc2RXaDErYzdSeUZEcFdPdDZhenB6dVAzM0Y5SmJwTDJkWXp4RFAyRFBqdGhQTEtjUnBuVk9iMDBkbkYyZTVjNFB6aUl1SlM0TExMcGMrTHBzYnh0M0l2ZVJLZFBWeFhlRjYwdldkbTdPYnd1Mm8yNi91TnU1cDdvZmNuOHcwbnltZVdUTnowTVBJUStCUjVkRS9DNStWTUd2ZnJINVBRMCtCWjdYbkl5OWpMNUZYcmRld3Q2VjNxdmRoN3hjKzlqNXluK00rNHp3MzNqTGVXVi9NTjhDM3lMZkxUOE52bmwrRjMwTi9JLzlrLzNyLzBRQ25nQ1VCWndPSmdVR0JXd0w3K0hwOEliK09QenJiWmZheTJlMUJqS0M1UVJWQmo0S3RndVhCclNGb3lPeVFyU0gzNTVqT2tjNXBEb1ZRZnVqVzBBZGg1bUdMdzM0TUo0V0hoVmVHUDQ1d2lGZ2EwVEdYTlhmUjNFTnozMFQ2UkpaRTNwdG5NVTg1cnkxS05TbytxaTVxUE5vM3VqUzZQOFl1WmxuTTFWaWRXRWxzU3h3NUxpcXVObTVzdnQvODdmT0g0cDNpQytON0Y1Z3Z5RjF3ZWFIT3d2U0ZweGFwTGhJc09wWkFUSWhPT0pUd1FSQXFxQmFNSmZJVGR5V09Dbm5DSGNKbklpL1JOdEdJMkVOY0toNU84a2dxVFhxUzdKRzhOWGtreFRPbExPVzVoQ2Vwa0x4TURVemRtenFlRnBwMklHMHlQVHE5TVlPU2taQnhRcW9oVFpPMlorcG41bVoyeTZ4bGhiTCt4VzZMdHk4ZWxRZkphN09RckFWWkxRcTJRcWJvVkZvbzF5b0hzbWRsVjJhL3pZbktPWmFybml2TjdjeXp5dHVRTjV6dm4vL3RFc0lTNFpLMnBZWkxWeTBkV09hOXJHbzVzanh4ZWRzSzR4VUZLNFpXQnF3OHVJcTJLbTNWVDZ2dFY1ZXVmcjBtZWsxcmdWN0J5b0xCdFFGcjZ3dFZDdVdGZmV2YzErMWRUMWd2V2QrMVlmcUduUnMrRlltS3JoVGJGNWNWZjlnbzNIamxHNGR2eXIrWjNKUzBxYXZFdVdUUFp0Sm02ZWJlTFo1YkRwYXFsK2FYRG00TjJkcTBEZDlXdE8zMTlrWGJMNWZOS051N2c3WkR1YU8vUExpOFphZkp6czA3UDFTa1ZQUlUrbFEyN3RMZHRXSFgrRzdSN2h0N3ZQWTA3TlhiVzd6My9UN0p2dHRWQVZWTjFXYlZaZnRKKzdQM1A2NkpxdW40bHZ0dFhhMU9iWEh0eHdQU0EvMEhJdzYyMTduVTFSM1NQVlJTajlZcjYwY094eCsrL3AzdmR5ME5OZzFWalp6RzRpTndSSG5rNmZjSjMvY2VEVHJhZG94N3JPRUgweDkySFdjZEwycENtdkthUnB0VG12dGJZbHU2VDh3KzBkYnEzbnI4UjlzZkQ1dzBQRmw1U3ZOVXlXbmE2WUxUazJmeXo0eWRsWjE5Zmk3NTNHRGJvclo3NTJQTzMyb1BiKys2RUhUaDBrWC9pK2M3dkR2T1hQSzRkUEt5MitVVFY3aFhtcTg2WDIzcWRPbzgvcFBUVDhlN25MdWFycmxjYTdudWVyMjFlMmIzNlJ1ZU44N2Q5TDE1OFJiLzF0V2VPVDNkdmZONmIvZkY5L1hmRnQxK2NpZjl6c3U3MlhjbjdxMjhUN3hmOUVEdFFkbEQzWWZWUDF2KzNOanYzSDlxd0hlZzg5SGNSL2NHaFlQUC9wSDFqdzlEQlkrWmo4dUdEWWJybmpnK09UbmlQM0w5NmZ5blE4OWt6eWFlRi82aS9zdXVGeFl2ZnZqVjY5Zk8wWmpSb1pmeWw1Ty9iWHlsL2VyQTZ4bXYyOGJDeGg2K3lYZ3pNVjcwVnZ2dHdYZmNkeDN2bzk4UFQrUjhJSDhvLzJqNXNmVlQwS2Y3a3htVGsvOEVBNWp6L0dNekxkc0FBQUFnWTBoU1RRQUFlaVVBQUlDREFBRDUvd0FBZ09rQUFIVXdBQURxWUFBQU9wZ0FBQmR2a2wvRlJnQUFBdGhKUkVGVWVOcnNsdDlMazFFWXg3L3ZOdGUwdlhPazd5UzdxeVdCWXZuaklrdEdVMHZEQ3drdFY0S1hwdjN3Qi80QkJpSWEvUUMxd2prVlV4TnNVdXV1emQxazZpQkxDeElGemNEWE9UWndZOHIyc3IxcnA0dVhadW9nZ3J5SmZTOGVlTDZjNTN3NDUrRTVISW9RZ29PVUNBZXNHQ0FHaUFFQXlYNkxaZG4xOVhXR1lkUnE5VDhna04xcWEyMFZEbFZaY1pVUVlwdVpLUzB0SFRjYTl5d3o2SHVycTZzL3pzNlNQMmtYd0dJMkF6aktxSFE2M2Z0M2s0U1Fwb1lHQU1XRlJYdktMbW9MQUF3T0RQd2RvTGRIRDJCa2FPaDM4NDNKNUhLNTlwVFYxZHdFOEdwOGZQK09TNHRMNXJmbUg2R1FrTzcwb0x1emMyand1U29wMmRCck9DeW5rNUtPOVBYM1oyWmtNQ2twcXl2ZkdJWUJjTCs5dzJxZEtDb3FDZ1FDQUhpZUYyb2ZQM3hrTXIxVzBJcmF1bHB0UVlIUDd3TkY3ZTJCTmw4RElPMzRDUUFOZCt1N3U3b0FTRUFCcUt1cEpZUlU2YTREb0dYeHFhb1VwWndXQTlhSkNVSkk0UVV0Z0ZQcWt3blNRd0Q2OVByb1Z4UU1CdHZiMmlpS2V0RFJ3Zk44S0JUaU9PN1prNmNBK25vTkxNc0N5TW84emZuOUhNZmxuTWtDc0xTNE9EMDFEVUIzOVJvaHhPbDB5aE1TNGlpUjNXNlBiTHN6QjNGeGNiUkNRUWhSSkNaS0pCS3hXQ3lUeWVSeUdvQlVLdjB5L3htQVRsY3BpNCtYeVdRYWpRYUF6K2VibXB3RVVGNVJEa0NsVWhWcUMzZ1NucCtiaXo0SG5OOFB3Ty8zUjV4QWdNdk56azVta2tXVUNNRHE2bmZCZHpnMkJEQ3RVQUJ3T2wyL2ZJZEFpZzRJQm9PUktJam5lUVZOYjNtM2lpK1hpRUhwK3d6cEdlbHV0L3VsMFFnZ0VBaVVYU203ZGVmMnZaYVd0TFMwaFlXdkgrWSs1Wi9OeThuTmpmNVVTQ1NTU0l3NDRYRFk0ZGhRS3BYRHc4TmlpcXB2YkJ3ZGVWRjFvd29BdTdhV21uck0wS1BmM3Q2K1ZGTGMxTng4UHUvYzZOaVlTQ1NLUHNrZXQyZDVlZG5qOFVRY3I5ZHJYN2U3M1p0Q3lySnJWcXMxSEE0VFFwWlhWcnhlcitDN045MFdpOFZtcyswZkN5cjJxNGdCWW9EL0FQQnpBSTZWTnFHUVBVcW5BQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJjcmVkQmxvYiIsIm1pblBpbkxlbmd0aCJdLCJhYWd1aWQiOiI5OWJmNDYxMGVjMjY0MjUyYjMxZjczODBjY2Q1OWRiNSIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImVwIjpmYWxzZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjp0cnVlLCJhbHdheXNVdiI6ZmFsc2V9LCJtYXhNc2dTaXplIjoxMDI0LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxLDJdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjEwLCJ0cmFuc3BvcnRzIjpbIm5mYyJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XSwiZm9yY2VQSU5DaGFuZ2UiOmZhbHNlLCJtaW5QSU5MZW5ndGgiOjQsIm1heENyZWRCbG9iTGVuZ3RoIjozMiwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjF9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiTk9UX0ZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjMtMTEtMjQifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIzLTExLTI0In0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiNDVmN2U1MmQxYjhjNmFhNzNjODEzNjQwZWExOTRiN2ZmYjNlYTVjZCJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyI0NWY3ZTUyZDFiOGM2YWE3M2M4MTM2NDBlYTE5NGI3ZmZiM2VhNWNkIl0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IDUgU2VyaWVzIChFbnRlcnByaXNlIFByb2ZpbGUpIn0sImRlc2NyaXB0aW9uIjoiWXViaUtleSA1IFNlcmllcyAoRW50ZXJwcmlzZSBQcm9maWxlKSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk3MjgsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6Mn1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiLCJyZW1vdGVfaGFuZGxlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRFBqQ0NBaWFnQXdJQkFnSVVYemVpRURKRU9UdDE0RjVuMG82WmYvYkJ3aVV3RFFZSktvWklodmNOQVFFTkJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNWjYvVHhNOHJJVCtFYW9Qdkc4MW9udE1Pby8ybVEyUkJ3SkhTMFFaY3hWYU5YdmwxMkxVaEJaNUxtaUJTY0laZDFSbngxb2Q1ODVoKy9kaEs3aEVtN0pBQUxrS0t0czFmTzUzS0dOTFp1ano1aDN3R25jcjRoeUtGMEc3NGIvVTNLOWhFNW1HTkQ2enFZY2hDUkFIZnJZTVlSREY0WUwwWDRENW5HZHh2cHBBeTZua0VtdFdtTW53TzNpMFRBdWNzcmJFNDg1SHZHTTRyMFZwZ1ZkSnB2Z1FqaVRKQ1RJcStEMzVod3RUOFFESXYrbkd2cGN5aTV3Y0lmQ2t6eUNpbUp1a2hZeTZLb3FOTUtRRWRwTmlTT3ZXeURNVE10MWJ3Q3ZFenB3OTF1K21zVXQ0cmowZWZuTzlzMFpPd2R3TVJEbkg0eGdVbDVaTHdyclBrZkMxLzBDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01COEdBMVVkSXdRWU1CYUFGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFNd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkRRVUFBNElCQVFDM0lXL3NnQjlwWjhhcEpOanh1R29YK0ZrSUxrczB3TU5yZFhML2NvVXZzcmh6c3ZsNm1lUE1yYkdKQnlKMVhucXVCNXNnY1JFTkZ4ZFFGbWEzbWlvOFVwZjFvd00xWnJlWHJKMG1BREcyQnBscWJKbnhpeVlhK1IxMXJlSUZUV2VJaE1OY1pLc0RackZBeVB1RmpDV1NRdkptTldlOW1GUllGZ05oWEpLa1hJYjVIMVhnRURsd2llZFlSTTdWb2xCTmxsZDZwUkZLbFg4dXN0Nk9UTU9lQURsMnhORjBtMUxUaFNkZXVYdkR5QzFnOStJTGZ6M1M2T0lZZ2MzaXJvUmNGRDM1NGc3cktmdTY3cUZBdzlnQzR5aTB4QlRQclk5NXJoNC9IcWFVWUNBL0w4bGRSazZIN1hrMzVEK1dWcG1xMlNoL3hUNUhpRnVoZjR3SmIwYksiLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVRuYmJHSVIyTkh2enFJS0ZBZVF3RzFYQmlzMHdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFRWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPc1hqM2swNEJhbjRUWWR0WktxRC9PUEp4eUR5YVBtQ0JVRlVpYVpJZ1R0ZVpuajNYMjVEaGdwWlpYc0M0RDB5ZEljcmxBNndOVUluT1JML0w5ekJiVEVJTUFWTUdvNmc3VUtBbWIyTUY2QUhibmhZSmQ5ZWlrdXBWTldTaEhOWU5jNEdCZE8xWU42QWZVcXZKaEhiZTNWNFNOTVBtQlJFS0pQVno3VGh3Z21nZ1RlOFdzMkswL3dzcXYyd1NFN3BiQ0JzVVpoSVg1MWJaTTNwcUR3SlBUbVJGRXZ0MC82dEc1ZU84RjNqMTRPWHFmRWhtam4xVnZ4S0RZUU9MWkF4Q3d3Z0MwUDRDZGZXdjN5OFBTUjhJMzU0aE8xWStHek5qdklxWDM4TktMeXd1SVlIRmVyT3hObHhFTUJ2RmhZQnVSdVlBa2tnVWFQcU42VUJoc0lMcnNDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNDb1JIaGl5Tm5iblhSV0lMNlpCWG9CWDlZVE1COEdBMVVkSXdRWU1CYUFGQ0FvVUNFYnBGcGI2RlBMblozRjVQeHNMM29mTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFDUUZhZkpJMS81V2c5Q0VFaW1FMVJQNTRSZ1F3VE5UT09Rc0xBQ1RlK3JJdGxGUXpDOVpEaHJWODI4eVg3anp5K0FBc3AzaXpLN1QxdGgyZGw3bSt0dTBzdzJQYS9vbGMwMm50NlB5SXczNDhnYUh6aEkxKzBLRTQ1cXh2RkRlTDJsTXhiUGZDWXZ5RUVhWXpqaVFFTFU1OTUxcFhHV3lLTWEvNGZMdE8rWktPWGhNdVZlcTRyWERQSTU0VzZKSE9pQWFpS2Rpdys1ZTNjMmt0L2pGSVF0TTZ2TVhnOUxORnpkakVUTnQyMFZYOVFldlJwRlpmdWNNRzl3Q2FRRG9GbFB6cFRNSktoUGV2L2ltSm1aWWhLZnIwbExjZW10cWpJeExBb3FaZE9ZZkhCZzYrdkFjZFBJL2lhdUdwVUF2N1grVUtObUR3aloyQmFINHNMd2hCMm0iLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVIzOG1xMjZTZjJzelZWMkJkRzZXRU43a3VXVXdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFSWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFOWTBXYjlvUG9Sb0tvUXlXUGFKcHoxMXZyV1RnNnpUdG1OajJWb0tSbnl2S0dScXB6YjgzdzVsNllBOTZVWWtZQkRRUDBpbE8yRFBlNndXcVZSNXpEZlJ6ZGNIOGJoK0w3ZEdHdmFlNmhSVFpoa0ZrQ3BYRHM0SGNja25yRGY4RkNsSjdIZTM5SmY0Mi9HMVFtMnp6OVdXbXJQWHRnaUsveDA1R2pzUWZHdURHMXpmNVFUVVVpZThsd3ltSzNUZmRPdk5lZUpBQVBlMnBuN0l0ZlJiK3JWck5XaUR6bFJuMnZObloyd1BvNHdIL1dKNmRoWFpHK3JNV1QrYTZCb2NnMVVmSXc2a2R1bkc0YlRwWnpzdmFjRll5UjBtcGYrRGVPbnBTV0FteXdKV0h2VGxmMllYeEZ5ZVhjVEFDZFFsY01OR0oyVmhaUTQ4eHRQNS9SQlAvOGtDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNoeTQyb2tpcWNUUzFpcWEvSFJXamtCbjRIL01COEdBMVVkSXdRWU1CYUFGT3EzUXBDZURIdGtldHRVZkFPNmZFNmYyS0ZoTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBbitSSElQYnRNRUROZFQxZzhIL1JpdEFrVWRMZ0F0MXRXR1dubGo5a25idjQvNEdsWDdDOXA0NWVmUE85L2FaTDZPVjFYUktCaTZLbXRCVzVLN251WUVuTXgvNUJxQlNiTFQ3cmhkdUM0OVRCZU1iOVBIZFhzVGxTVk5ZZWZyMWRHaWRyNGoweFZCUUxiMXJrbkRBYmRXRHpLZnZuYXlLTzhGcndlN0h4ODQzTUcvckorYzBYcnVVdmJmVlRDSExpSVdoTTdvTkRoTDh4b2I2eFVvOUtMS2NTTCtJdFlzTzMvOVdiOFE5R2pzcUw0RlhzRGNHMVNhWWg3S3BmdU1tT2l4cXpKWk8ybklpY1BZUmcxSTJTdWlVZllPNzB0bWRIY2JsK2tTUW1TWXQ3cnE0dmlJTGcyR3gzajlySVR1V1RqYmFVYVNTUXhnT21NU0h1eXpNQUMiLCJNSUlEUnpDQ0FqR2dBd0lCQWdJVWV4OW5UOXZ3Wk5YUzQ4M0xkaVlHZncyU2pTb3dDd1lKS29aSWh2Y05BUUVMTUM0eExEQXFCZ05WQkFNTUkxbDFZbWxqYnlCQmRIUmxjM1JoZEdsdmJpQkpiblJsY20xbFpHbGhkR1VnUWlBeE1DQVhEVEkxTURnd01UQXdNREF3TUZvWUR6azVPVGt4TWpNeE1qTTFPVFU1V2pBbk1TVXdJd1lEVlFRRERCeFpkV0pwWTI4Z1JrbEVUeUJCZEhSbGMzUmhkR2x2YmlCQ01pQXhNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXUxTWV2bnk5ZHlPOVpVQzM5U29NaExjUi9EWHJ0Ri9jaU0xMnRjaXkyRVhBWjZNa3JpdlZ0Q2ZFVk05WDZJU1RFbkJQNnVTWVlvdjZwcHY2TzZKaDJOSG1ZbTR3K0puUzRWbkNQVTdtSEFNZlZJMk1HVFRNVk9ldzB4VXNHN3NJU0lrSURVQm11azhZSzljNXppYzkrdkZRR0xJa3NkWE81aVZGSWdORzUzY0dYRDRaTFpvQVBpdTBQRW96eEFxWUlhSTRneEtoT0EzUzgvVzhtSVdzdTZvZnlqNEd2a0ZHNlo3a3lGMzEwN1A3bXdGSExySTNFTmFQV01PRmNUYUdhMGR3Ky92VlJ3alJjRVpCVnN1dVQvODdja1NzMGE1cGt0M3ZaQmxhWWVUOHB6U3JlVjdtb3djSU05MEwyaWFBVGxQMG54bWFFNm5PeVRib2pGVmwyd0lEQVFBQm8yWXdaREFkQmdOVkhRNEVGZ1FVU1hFaDNzYTNidER1cm00TU0vQzdTMWxSdXVZd0h3WURWUjBqQkJnd0ZvQVU2cmRDa0o0TWUyUjYyMVI4QTdwOFRwL1lvV0V3RWdZRFZSMFRBUUgvQkFnd0JnRUIvd0lCQURBT0JnTlZIUThCQWY4RUJBTUNBWVl3Q3dZSktvWklodmNOQVFFTEE0SUJBUUI1R2MzaGFmdHA3aEtzRVpzbytpL1o1blJ1cWRtekcyV0NsVW9SVXFiYVB5Z2xuSkRqS1Iva2ZnT2w2aWJiRi96dGhtM0ttWFE3SGNESVAyeE1kRzdVMkwyaW1iSlFIcVBmL2gySHFvamI0clpndWUrNlc0a3RTUjVlbFI5TDFyWXFFL1NHWU00aUVLb1ZRU3Y3UlQxcnhJZVdpS3N3L1Z4eGkvUU9uc3gzRjd4ODBDQ1lnQjRFM3lReDhWVFc0NDBoVEV3VEExZU1IT2l4MzJ0UHR5eUhJYThQVlZJZlZwSFFKQmFNVnZ2NTA4VUVqd2tiVTJybmpmem9TVE5TOUE1alVROG1CU3ZlOTVyakIwZG85OEVVK0R4ZEJxWDIrSDZpNXdsSUNGZ3poZHpjc25lOWhHS1Q2bHpUWDRjSWRKc3JZMit4bGVLMEZGUXk2bEdFVkxFZSIsIk1JSURTRENDQWpDZ0F3SUJBZ0lVVWNtTVh6UklGT2dHVEswVGIzZ0V1Wllaa0JJd0RRWUpLb1pJaHZjTkFRRUxCUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JCSURFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURtNTU1YldZOVdXK3RPWTBySVdIbGRoK2FOYW5vQ1pDRmg3R2szWVpyUW1QVXcwaGtTRzZxWUhRdFArZlp5UzMzVkVydmcrQlFxbm11bWdOaGZ4RnJrd0VaRUxlaWRCY0M4QzRBZzRucXFpUFdwenN2STE3TmN4WWxJbkxOTEZjWlkvK2dPaU42Wk9UaWhPNS92QlpNYmo5cmlhQWNxbGlZbU5HSlBnVGNNR2FFQXlNekVNTnkybm02RXArcGpQNWFGNmdpMjF0L1VRRnN1SjFqMlJqL3luTS9TZFJ0K2VjYWw1T1lvdHhIa0ZiTDl2dnYyQTJPdjVJVFpDbHc0Yk9TOW5weXBRaW1PWjVRQVl5dG1ZYVFwV2wvcE1ZejZ6U2o4UnFrVkRORUpHcU5mVEtBMml2TFl3WDZsU3R0TVBhcGcwSjg0bDlYMHZvVk4vRnBTNFZDVkFnTUJBQUdqWmpCa01CMEdBMVVkRGdRV0JCUWdLRkFoRzZSYVcraFR5NTJkeGVUOGJDOTZIekFmQmdOVkhTTUVHREFXZ0JUUzd1OWFJbzA2YlZ3amx6M3loZFVtOFNWN2tqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQTRHQTFVZER3RUIvd1FFQXdJQmhqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFZTXpnTHJKTElyME9vdlFuQVpyUklHdWFiaUhTVUtTbWJMUldwUmtXZUF0c0NoREVIcFhjSi9iZ0ROS1lXb0hxUTh4UlVqQjRDeWVwWWV2YzNZbHJHOG83ekh4cGZWY2FvTDVTZXVKa3pIeEtuNGJUYVNwOStNdndhbW5wNjRrWk1pTmJGTGtuZlA5a1lLb1JIa01XaGVSSjFVc1AxejRTY21rQ2VJTGZzTXM2dnFvdnFqV0NsRnNKcEJjc2x1WUhXRjdiQkoxbjRSd2crQVRFb3BZNElnR3Y2WnZ3YytBOXIrQVQyaHFwb1NrWW9BbCtBTll3Z3NsT2Y5c0plMFYrVEE5WVkvVWxhQm1QUFRkMC8vcjl3dmNlUFdaa1BqS29BQy96VU5oZkRiaDRMVjhHSHMzbHlYMlhvbUwvTE5jOEpZenlJYURFaEdRdmVvUGhoL3RyMWc9PSIsIk1JSURTRENDQWpDZ0F3SUJBZ0lVRHFFUncrNFJuR1NnZ3hnVWV3SkZFUERSWjNZd0RRWUpLb1pJaHZjTkFRRUxCUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURJN1huSCtadkR3TUNRVThNOFplVjVxc2N1Ymx2VllhYVJ0M1liYXhuOWdvZEx4NXN3SDBsWHJkZ2poNWg3RnBWZ0NnWVlYN0U0YmwxdmJ6VUxlbXJNV1Q4TjNXTUdVZThRQUpiQmVpb1Y3Vy9FK2hUWlAvMFNLSlZhM2V3S0JvNlVMZU1uZlFaRHJWT1JBazh3VExxMnY1TGxqNXZNajdKdE9vdEthOUo3bkhTOGtMbXpYWFNhajBTd0VQaDVPQVpVVE5WNHpzMWJ2b1RBUVFXckw0L0o5UXVLdDZXQ0ZFNW5VTmlSUWNFYlZGOG1scUsyYngyejZva1ZsdHlEVkxDeFlicFVURUx2WTF1c1IzRFRHUFVvSUNsT200Y3Jwd25EUkxWSHZqWWVQR0JCLy9wRXl6eEEvZ2NTY3hqd2FIMVpVdzliblNiSHl1cktxYlRhMUt2akFnTUJBQUdqWmpCa01CMEdBMVVkRGdRV0JCVHF0MEtRbmd4N1pIcmJWSHdEdW54T245aWhZVEFmQmdOVkhTTUVHREFXZ0JUUzd1OWFJbzA2YlZ3amx6M3loZFVtOFNWN2tqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQTRHQTFVZER3RUIvd1FFQXdJQmhqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFxUWFDV014VEdxVlZYN1NrN2trSm1VdWVUU1lLdVU2K0tCQlNnd0lSbmx3OUs3SGUxSXB4WjBoZHdwUE5pa0tqbWN5RmdGUHpoSW13SEpneHh1VDkwUHczdllPZGNKSk5rdERnMzVQWE9melNuMTVjRkF4MVJPMG1QVG1JYjhkWGlFV09wem9YdmR3WERNNDFaYUNEWU1UN3c0SVF0TXl2RTd4VUJacTJianRBbnEvTkRVQTdiZTRIOEgzaXBDKy8rTktsVXJjVWgrajQ4SzY3V0kwdTFtNkZlUXVlQkE3bjA2ajgyNXJxRHFzYUxzOVRiN0tBSEF3OFBtcldhTlBHMmtqS2VyeFBFZmVjaXZsRmF3cDJSV1p2eHJWdG4zVFYyU0J4eUNKQ2tYc05EMDVkQ0VyVkhTSklzK0JkdFRWTlk5QXd0eVBtbnliMHY0bVNUenZXZHc9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwiaWNvbkRhcmsiOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJwcm92aWRlckxvZ29MaWdodCI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsInByb3ZpZGVyTG9nb0RhcmsiOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0ifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNi0wNC0yNSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk3MjgsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWXViaUtleSA1IFNlcmllcyAoRW50ZXJwcmlzZSBQcm9maWxlKSIsImNlcnRpZmljYXRlTnVtYmVyIjoiVTJGMTAwMDIwMjYwNDI1MDAzIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25Qcm9maWxlcyI6WyJlbnRlcnByaXNlIl0sImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjYtMDQtMjUiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NzI4fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI2LTA1LTAxIn0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiZDgwMzE5MTFhZTA5MjM2NGY2MGVmMjFlMzI4YTZhNDVhZDFkOGQwOSJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyJkODAzMTkxMWFlMDkyMzY0ZjYwZWYyMWUzMjhhNmE0NWFkMWQ4ZDA5Il0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJORU9XQVZFIFdpbmtlbyBGSURPMiJ9LCJkZXNjcmlwdGlvbiI6Ik5FT1dBVkUgV2lua2VvIEZJRE8yIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6Mn1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDZERDQ0FobWdBd0lCQWdJVVJwUUxXUXJtR0RTTUdnL283eDd4LzdvVWlaVXdDZ1lJS29aSXpqMEVBd0l3UERFTE1Ba0dBMVVFQmhNQ1EwZ3hFREFPQmdOVkJBb01CMWRKVTJWTFpYa3hHekFaQmdOVkJBTU1FbE5sWVd4VFVTQkpUMVFnVWs5UFZDQkhRVEFlRncweU5EQTRNRGt4TVRFd01UZGFGdzAwT1RBNE1ETXhNVEV3TVRaYU1Eb3hDekFKQmdOVkJBWVRBa05JTVJBd0RnWURWUVFLREFkWFNWTmxTMlY1TVJrd0Z3WURWUVFEREJCVFpXRnNVMUVnU1U5VUlFbERRU0F4TUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFQjM0YkU5eVBmUVJjRW9JMFlGQjhlYzBDU0UwdWptR2VDUkZkZEJCQlVKSis2M1pydVZ1b3J3UGNvcGQxTlZRWkhmVFZoM2RWNEpwN1Y3bVNySDZodnFPQitqQ0I5ekFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VBTUI4R0ExVWRJd1FZTUJhQUZNVTdIMHludVNiUi9iU0ZLVDkwZGNuVGxzeUpNRTBHQ0NzR0FRVUZCd0VCQkVFd1B6QTlCZ2dyQmdFRkJRY3dBb1l4YUhSMGNEb3ZMM0IxWW14cFl5NTNhWE5sYTJWNUxtTnZiUzlqY25RdmMyVmhiSE54YVc5MGNtOXZkR2RoTG1ObGNqQkNCZ05WSFI4RU96QTVNRGVnTmFBemhqRm9kSFJ3T2k4dmNIVmliR2xqTG5kcGMyVnJaWGt1WTI5dEwyTnliQzl6WldGc2MzRnBiM1J5YjI5MFoyRXVZM0pzTUIwR0ExVWREZ1FXQkJTb01hT0s5bGxaeU1Ma3N3WjhPWHgxOHh6RjdEQU9CZ05WSFE4QkFmOEVCQU1DQVlZd0NnWUlLb1pJemowRUF3SURTUUF3UmdJaEFMc0I2ekJiVVZYdXlqMG4yRE13SGQ4RngxbXpQMHBSM245U0h4UDJhZlM4QWlFQXp6YXdieXpZL29pOGgxQjE0bjlocUIzbnpCZVRuazZqSDVUeFk2ZVNTaWs9IiwiTUlJQjNqQ0NBWVdnQXdJQkFnSVVLeVVER3JoUlFiVTNybWxsK3JlMXRZYlJzOTR3Q2dZSUtvWkl6ajBFQXdJd1BERUxNQWtHQTFVRUJoTUNRMGd4RURBT0JnTlZCQW9NQjFkSlUyVkxaWGt4R3pBWkJnTlZCQU1NRWxObFlXeFRVU0JKVDFRZ1VrOVBWQ0JIUVRBZ0Z3MHlOREE0TURreE1UQTBNVFJhR0E4eU1EWTBNRGN6TURFeE1EUXhNMW93UERFTE1Ba0dBMVVFQmhNQ1EwZ3hFREFPQmdOVkJBb01CMWRKVTJWTFpYa3hHekFaQmdOVkJBTU1FbE5sWVd4VFVTQkpUMVFnVWs5UFZDQkhRVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCRnlZNk9ORGx1aG5qMzgzTVJ3NUpmd2dNa0pyblcwK0l0bE9UaDQybkRMdGZaa3J6UkRGaDlLRkRhT0YrMjFaMm05S1NOcXIxTUtrcWpPaVJ6MnM0TmlqWXpCaE1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0h3WURWUjBqQkJnd0ZvQVV4VHNmVEtlNUp0SDl0SVVwUDNSMXlkT1d6SWt3SFFZRFZSME9CQllFRk1VN0gweW51U2JSL2JTRktUOTBkY25UbHN5Sk1BNEdBMVVkRHdFQi93UUVBd0lCaGpBS0JnZ3Foa2pPUFFRREFnTkhBREJFQWlCUkpESDQwaXk4YTdMTmdaZkxVZHV3OGJMRHprVDlpMG9JdlZqZVZlTGtVZ0lnVzVyM0I4NHg2dDhjb0xDSkxvRkxpcFo3NW4rTiszbTk5ekZMZFJsdklkTT0iLCJNSUlESVRDQ0FzZWdBd0lCQWdJVWFiMFNBaUMyWTdzYWVVQzFzOGliY0VDWFovNHdDZ1lJS29aSXpqMEVBd0l3T2pFTE1Ba0dBMVVFQmhNQ1EwZ3hFREFPQmdOVkJBb01CMWRKVTJWTFpYa3hHVEFYQmdOVkJBTU1FRk5sWVd4VFVTQkpUMVFnU1VOQklERXdIaGNOTWpReE1ESXhNVE16T1RFMFdoY05NelF4TURFNU1UTXpPVEV6V2pDQnlqRUxNQWtHQTFVRUJoTUNSbEl4RFRBTEJnTlZCQWdNQkZCQlEwRXhFVEFQQmdOVkJBY01DRWRoY21SaGJtNWxNUkF3RGdZRFZRUUtEQWRPUlU5WFFWWkZNU0l3SUFZRFZRUUxEQmxCZFhSb1pXNTBhV05oZEc5eUlFRjBkR1Z6ZEdGMGFXOXVNVUF3UGdZRFZRUURERGRPUlU5WFFWWkZJRUpoWkdkbGJ5QkdTVVJQTWlBdElFWkpSRThnVlRKR0lFRjBkR1Z6ZEdGMGFXOXVJRU5sY25ScFptbGpZWFJsTVNFd0h3WUpLb1pJaHZjTkFRa0JGaEpqYjI1MFlXTjBRRzVsYjNkaGRtVXVabkl3V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVJQUzZIWnliUWgzSXJyWkRRRUJaaHRnZDFvUEk2cmtnMzJEdHhuMVk4U2ZiWEpsYW0xa2FuQ1h0c2Nab2ZqWUtpS1RxSkwrR1lwaXJYNGptZFh1Y0F2bzRJQkdEQ0NBUlF3Q1FZRFZSMFRCQUl3QURBZkJnTlZIU01FR0RBV2dCU29NYU9LOWxsWnlNTGtzd1o4T1h4MTh4ekY3REJMQmdnckJnRUZCUWNCQVFRL01EMHdPd1lJS3dZQkJRVUhNQUtHTDJoMGRIQTZMeTl3ZFdKc2FXTXVkMmx6Wld0bGVTNWpiMjB2WTNKMEwzTmxZV3h6Y1dsdmRHbGpZVEV1WTJWeU1CTUdBMVVkSlFRTU1Bb0dDQ3NHQVFVRkJ3TUNNRUFHQTFVZEh3UTVNRGN3TmFBem9ER0dMMmgwZEhBNkx5OXdkV0pzYVdNdWQybHpaV3RsZVM1amIyMHZZM0pzTDNObFlXeHpjV2x2ZEdsallURXVZM0pzTUIwR0ExVWREZ1FXQkJUWUF4a1JyZ2tqWlBZTzhoNHlpbXBGclIyTkNUQU9CZ05WSFE4QkFmOEVCQU1DQjRBd0V3WUxLd1lCQkFHQzVSd0NBUUVFQkFNQ0FBTXdDZ1lJS29aSXpqMEVBd0lEU0FBd1JRSWdULzltTTdJTGFWTUJySXJIaG9oTUVXNmRENzFMMDdUZ1BDSExMaHQ4dWU4Q0lRREJ5cERZQzVsM1dDalNhUVF1NWFJRms3ZkIzRXJ0ZzN4RW5FNXVWWlM2R0E9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFnQ0FJQUFBRDhHTzJqQUFBQ3FVbEVRVlJJeDJQOC8vOC9BeTBCRXdPTndhZ0ZwRmx3OGNLRmlySXlSM3Q3UzFPejBLRGdCZlBtLy96NWszaXp2bjM5bHArVGEydGx0V1RSSW9Ub2Z4aFl0WEtsbHBxNnNyd0NBaWtvUklWSHZIMzc5ajl4NE5TcFUwQXRRSTFXNWhad1FhZ1B6cDg3VjExWmlYQXZJeGo5WnpoNTRrUk5aUldSUHZqOTZ4Y0RPTTB6TVRLaUI5Rzh1WFAvL2ZzSE5GUkFTTEMrc1hIbTdObHVidTRRbTNidDNMbHU3VnBpTEdDRW1jdUlhY0daVTZmQjRjV1FYMUFRR3gvbjdPSXlhZW9VYlYwZGlJdmFtbHVlUFh0R1VTVC8rZzMySFNPRGhvWUdSSVNGaGFXcHBZV1ZsUlVvK09Iamg2YjZCb29zZ0h2cXo1OC9jRGw5ZmYzTTdDd0llOCtlM2F0WHJxUWdtZUlva0RLenMvWDE5RUd5L3hrNk96b2ZQM3BFV1ViRHNBWVlSQzN0YlJ3Y0hFRDJoL2Z2NjJwcUNSZU9qQ1RtWkUwdHJaeThYQWo3OEtGRHk1WXVKZDUwVkFzWWNlcEtUVTgzTmpXQnFPbnU3SHh3L3dFK08vN2pzZ0MzMTVtWm1SdWJtOW5aMllGcXZueiswbEJmaHpPZy9xTzdsUW0vQitFQW1Id0xpb29nQ280Y09yeGswV0lpUFVFZ2twRkJVbkt5bVprNWhOM1QxWFgzemgxaVlvS0pjRFRCQTRxRnVibXRsWXViQzhqKyt2VnJUVlUxcUhRaHpRZU1CSHlockt4Y1dGd01VWG42MUtuNWMrZFN2OEpKU0V5MHRyR0dzQ2YwOTkrNmRRc3V4Y0xDQ3JIN1A1SXJTWWdEZUtGUzM5VEV4OHNIWkgvLzlyMnVHaEZRTjY1ZmgyVlBOb3FxVENVbHBlS3lVbWd4ZlBwTVNXRVJNQU11WDdhc3Y3Y1hJcWlscllYd0ZyeGVnL3FPdUdaU2RFek0zdDE3RGgwNkNQVDBwazBiTjIzY0NJOUZZS1pKejhoRTk4SGZmMzhoRERZMmRpTDkwZEhkcGF1cml4YXdyQ3lzcmUzdHVucTZpTFRYME5BQVRvSXNUeDQvdG5kd2lJeU9BdFlFeEZqQXpjM3Q0K3NMSkw5OS9Rb3NFMFZGUmUzczdSdGJtb0dWRlVxY2pUWWRoNzhGQUloQkxsTmQ3anUxQUFBQUFFbEZUa1N1UW1DQyJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wMy0xMyJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDMtMTMifSx7ImFhZ3VpZCI6ImExZjUyYmU1LWRmYWItNDM2NC1iNTFjLTJiZDQ5NmIxNGE1NiIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiYTFmNTJiZTUtZGZhYi00MzY0LWI1MWMtMmJkNDk2YjE0YTU2IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ik9DVEFUQ08gRXpGaW5nZXIyIEZJRE8yIEFVVEhFTlRJQ0FUT1IifSwiZGVzY3JpcHRpb24iOiJPQ1RBVENPIEV6RmluZ2VyMiBGSURPMiBBVVRIRU5USUNBVE9SIiwiYWx0ZXJuYXRpdmVEZXNjcmlwdGlvbnMiOnsiZW4tVVMiOiJPQ1RBVENPIEV6RmluZ2VyMiBGSURPMiBBVVRIRU5USUNBVE9SIFYgMS4wIiwia28tS1IiOiLsmKXtg4DsvZQg7J207KeA7ZWR6rGwMiBGSURPMiDsnbjspp3quLAgViAxLjAifSwiYXV0aGVudGljYXRvclZlcnNpb24iOjUsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiLCJiYXNpY19zdXJyb2dhdGUiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIl0sInRjRGlzcGxheSI6WyJhbnkiXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUR0RENDQXB5Z0F3SUJBZ0lCQVRBTkJna3Foa2lHOXcwQkFRc0ZBREJ5TVFzd0NRWURWUVFHRXdKTFVqRVpNQmNHQTFVRUNnd1FUME5VUVZSRFR5QkRUeTRzSUV4VVJERWlNQ0FHQTFVRUN3d1pRWFYwYUdWdWRHbGpZWFJ2Y2lCQmRIUmxjM1JoZEdsdmJqRWtNQ0lHQTFVRUF3d2JUME5VUVZSRFR5QlNiMjkwSUVOQklFTmxjblJwWm1sallYUmxNQjRYRFRJd01ESXhNVEEwTWpZd00xb1hEVEkyTURJd09UQTBNall3TTFvd2NqRUxNQWtHQTFVRUJoTUNTMUl4R1RBWEJnTlZCQW9NRUU5RFZFRlVRMDhnUTA4dUxDQk1WRVF4SWpBZ0JnTlZCQXNNR1VGMWRHaGxiblJwWTJGMGIzSWdRWFIwWlhOMFlYUnBiMjR4SkRBaUJnTlZCQU1NRzA5RFZFRlVRMDhnVW05dmRDQkRRU0JEWlhKMGFXWnBZMkYwWlRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTFpZYSs5WVpMSm40Rldja0RuWS9FUm9DdU8zVEJ0YTBXM2Y4UjlTWTVkNXNCazJRaXVwY2lJL2w3ZndQckgzRkRrZVZQWGVqTWUra1QwVm9KSmUrTjlFTVdlcjAvNVBYSVA5N25ydVljcjBEeGJoWnBlc1FFZVU4QmVJVXVucE5ObkVKcG94b0pUd29EbXU4M1pLazRtOGcwL1BmcEp3RGhtUENBcW03OXNGdFA4ZzdsQzlxbXM1VEQvNlBOeisyYWV3S1hUUUFSMW9wZmhuV0RVc0ladHVVZkVSaGxHd3hVN1graDNvUTJrU0d3NWhvbGZLU2IwZzNwd0dUY1RWTnZmVU1YSDdDYWlUcS9LN1QvamRBQ0QrOWFOanRjZDNQeVFlckE4U2EyTjI4cnZrTjhZZktvRFBnNWdBMzc4T05EVjNCaHJodFk4VWlEa0JjVHNYQVFFQ0F3RUFBYU5WTUZNd0VnWURWUjBUQVFIL0JBZ3dCZ0VCL3dJQkFEQWRCZ05WSFE0RUZnUVVPQ21LMzEwR3UzcTlEZlgvYnZkcHNmNEdJOFV3Q3dZRFZSMFBCQVFEQWdIMk1CRUdDV0NHU0FHRytFSUJBUVFFQXdJQUJ6QU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFuRFRjWm5lSy9oMFFiOHNGeGdGUzhGYTVkalFuU0pRVU1GWi9rek9zUGgxRFZGREY0bkRHL0hsVStkN0thTmhhUTdYTHQ3eEFqaHpFeVR5SGFNSDc2Z0gwOHIzM05kVlovNHNNaDlHSUxVNmJTbUpZT3RkVmkzekIzcDY5Ym5ZWkhKVnF2SktYNWxFc1Nwbi9vcEtZbHZ0bzJuMC80czRhd0poK3ErQmt5VlNQVFJNWDZMZmJuNklSdTRjYmVTMFcxM3RzUTVTYnBBbzlOSDJGQVR6Vk1NS1NHRWRpUW5mWXlnZFd2dURDTFV0UUYxd0dtR1NZc0VQRlRWNlBHMVZQNUhTNGZockJOYnVyaTM4TklVb2Nma3BmbU9JeStoSFpnZnZwWnpvcmsxR3ZGM1BaUkl0Sm5UVHY1VWpxMHFEOHJucjgxcXd2R2xUQ0pJQnRFVW1Od1E9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFFZ0FBQUJJQ0FZQUFBQlY3Yk5IQUFBU1ZVbEVRVlI0MnUyYkIxaFU1OUxITVdvU3I3bCtWdmFjczQxbVRkU3JSb05ZQUNrTGlvb0ZTeFE3Z1lpaWlLSkdEZGdWTEhSRWxsMmFxSUJpamVLTlhmRmFZbUtOSFNtN0N4cGo5UHRpaklXNTg1NXpGcFpsRjFkRlkveDRuMmVlcFN5NzUveDIvalB6enJ5WW1kV3UybFc3YWxmdHFsMjFxM2E5dzJ1RFdscGZmdDI3VWV5RitLYXJUaDV1dHZUSTFjYWhCd3IvWjE3dXpVWnpjMDgyV3JCL1k4T2xlYlBNMXQrd00xUG1mL3ovQXdwQUhUTmxVZnNHeVRmVFdzU2YrMVcwNmhoWUxOb0gxbk8zZzhXTUxCQk9UZ2RxUWhJd28rSkJQRFFTeElQV0F1MFY4NlNKWCthbEJrdFB6RFpMdldIKy9zTEpoTHIxMDFSVG1xWGRmQ0JLT2crUzZKTWdEVHNNbG90eWpRS1M5ZzhIaWV0U0VOdUhnTkIrSVRRWm0xcFFOK3Jua1dhaDhNRjc1em4xMG92bkNyS0xub3N6cm9INEZRQ0piZWVDcU5OTWFPRzQ3TmxIb2NjanpUSXZmZmorQUZJV2RtMjJyZVNoWkhzUnZDNGdwdDAwTVAvaTIrY2Zyamk3OEwzeHBJODJhbUlrdVhkQkg1QjQ5VEhvRkhVYytzWWZod0d4aDZGUFdDNjBEc29DeGp1aFdrQ00xV1JvMGkvNkR6UDVyVzd2QmFCL1pHbU9Xdjc3bDNKQXJkS3ZRUERCMjNEc3Vob0tWQ1ZRckM0QmxacDd2RjJzZ1VPWENtRGVoanpvNHFzRWlXeVpRVUMwWkRMVVgzSmE4VjRBYXBoVjhyMFdVUHV0QmZEdmF4clFhRXBlYUQvZEtJYUpzZnRCN0xTb0NpQ0c5b0VHMDNhZlp6UGozMzI1NTJwMml2ZmVoUlpiVktBOFp4b2NyUkhQR2hWN0NFUTk1bGNCOVBHMDd5Nzg3UUdWbEpTTVBIV3I1SG1yblJyNFpMTUt6aGVVdkJRZ1lvZXZxY0Z5UkZ4bGlWbE9nZm9yenliK3JlRVVGUlUxd0JzOFNXNHk3a2NOL0hOak1XeTZXTzVCWldpUDBYNUgreiswUDlDZUd3SjBFYUcybkphbEE4Z2ZHZzlPK04wc3NhREx1M08zWFJMcU02NEtNZVdtN05wQ3BuUVR5SlJmbXJzb2ZBV3lwT25tc3FRZ2dhc2lrSEpKOHNldnh3aGNrZ2FZdXlUM21CcDJ3UDdtYlJXNWVWQ2pSZitnQm9kZGhYRHlsbWFIV2wwNlJLVlN0UzR1TG02R0lKdVdscFphcTlWMzNEU2EwakI4L25WZFFLbm4xVUNQU0toSTgyNnJvYVh5eW9LL1RGNEMxOVNHbEN6NVU4cFZNVmJnSW8rbW5OWWRwUnhqTkZTdk5RK3A3aXYrcExzdUxxTTdod0RkNlZzMDhoajZqT3F5K0NIVmRmbGR5alpjUTltdFZWTzlvbFZNbi9qU3RvTlN5bnBOeklMeElYdGhoU0x2VCtmVng2TUUwVC9sbXErL1lHZVdtVm5YMFB2ZnZYdjNuMnAxU2FCS1UvcnI3aXNhc0Y1eWtJMUJqTzA4YU9XL0NXSk8zSVlpaldiVzJ5eDE2ekQ5RS83QmVvWnpVZ0xsbkhDSnRsLzdtTEZiQ3NLdTgwSFlLUmlFSFdhQXNQME1ZRHA5ODVUdXRsZ3Q2QjYybGU0Wk1aOTJqQjVDdXlSOTN0d3BwUlh4c0JaOWxaUzVVNktnV1o4VW9mT1ViZTF6ajEyK2tibm5IQ3lYSC85ZDZwYVVZZTZVY0lYcXEzekErTzk0SkY2NGY0ZGt5WDd2Sml1T1NTeENEMzdNVnNmRWxQbU56WklMWFR0dHZINUNPSHNYTUlNaW9lWDBiQWpJdVFpbmIzRVN4ZGkyNU0xekNRMzlnSkVwT3B2TGxER1U4em8xNDdBYVA2bUZJUDVpTG9pN3pnWnhsMkFRZFprRndtNGhaWFNQc0l1VVUvd2lBc1BNSWJTZXFXK0JrZ25oYitpWTlzTm9JWlBiQ0J3VEFzeGQ1VWZvb2VsUFJONGJnZmJiZXJuSi9IMHhEY0pQcDlaZGQyMWYzWFZYOXpSY2ZDVFpLL055N3BaTEdzaFhWWXBMWlNqUjBXK015NmRlbVIrYXV5UzVDbHpsdWJSejdDT2h3M0lROS9vV3hPakdZcnQ1Yk0xQklBbDdMSDZDSG5LSWNsM3ZUbVQzS3U5MTU4NmRUeERPajNoVGx3R2d2djUxTk1jUFNOQm5mWWJBUHU2QmVSLzBMamZsWktaL1JuTnRmRUVRZy9TRE5yNWVNWWxiYndRTzdacmNCUVBxYnNZMTlxbklhUVdJSFJkeWxXcHZCTlJyQVF0SjFETVU2RDR4K1pTTDNJdmNCTjVZSGJRUDBPcml4VFhFd0NwU3E5VnRNTEIyUkFDZDhHZnRpNHJ1Mk9EM2d1dlhyMzlFbmdjNkFSU2ZZNE9lOUFQZTdDaGpFaGM0SjlvS2VrUWNvejVmV1ViMVNiaUtYdTFOUEJWajBYdzlRSS94L1ViVU9CaVJUTjRVd2F5aFpRbFB4REp1anlOeFhnd1NVcVgyUVVnT29Td2tvV1BZODlhRFVuSjNIYmdvMDJnMDQ5Rlc0MFh0UnJ1RTlodWZucXVyVzU2aGxhQ2RSdHVFZngrS1lEd1JuaDErbllvMlZ0K1RkRE1sWlIrM2tHNjM0REhWZVRsWWVpU2YzSjkzOVJlZDE3NzNSdUFJbkpXMktLY2ZoZTdSSU9tN0VxVHV5OWs5RGd2SlpRbENXb3lRRm9IUWVRMEVodTh2eXk5UTNjT0wrZE1JZ0lmNHFWN0RDODFCcjFpSk56d0Z6WXRMMFJwSC9Ma1RtZ2YrYmd4K1B4dS9Yb2VQUjhuZjhPbjdJZHArSWgzaWNmcXdjblBQTmZRSXlGa2s3WWhlYkRrVGJOd1NJRHJqMVBPQ1F0Vm00clUxbnAwb0Y2VVhKWlAvSnZiZ2RzZFNqekNRc3BCV2dOU3RBcExJWlRWNHovOE9Db3ZVQnFFUWJ5Q0JFZVhTOHN3Wkl4NVF6Y3JQdjk4WWdYUkhVUFB3dFU3eG5uZ0hMUTkvRm9GQVkvQnhHNGxYK0hoblh0U2gyM1RMMmM4WmdSOVF0cXVmNFgzRVd6Z29QNjVST0tTSW85emtUOFNla1NEeFhBUFNnYXRBT29DSDFFOExDUU8wYkNWMEhwVUJsNjhWVnNvVVhIRFZUTDUzNzE2am11MmZRUjBTdC9DMTR4SE1yL2hlQmZqOTNLS2lYNFQ0dTNyazl3NmhCK3NKSE9KM01vdy9NTTBuQWZXdnBZQWhZbWRUOS9SR05RSUhLMW8veWwzK1dEUWttdTJ0U0FhdkJja2doT1M1bW9OVTdrMHJnSkhGd3VxVS8rakNLY1FMbmtBS3RqZmJhSVE2cElMbVloTzcxVkFSV1dvemxNQmRhVXQxV3ZZbjAzUkNPU1J6VjBWV0M0ZllUMTR2NXNnVXpnSzNwRWRDTDl6Z0RVZEFYcEZjRTN4SVJBVWs0azJrSWRVdkhLd0hwc0FQRi9KNU9LVlp4Y1gzUkcrM0l3c2Y0QWZTbndQRWZrQS9rKys3ZTJVMndPeDJoc0JoSVRWRFNGM0R5OUNUSWwvNXpSam5WQWtDeXFlOUVvRDVNZzZFSTJJUlVneUloMFZWUUVKdjBrSVNlMFFBMlFyY0xsQTlSZTB2SlM3K0YrNzhMUkhPT1cwMnhPdVJkeGlSc1oyV1RPY0FFVFAzQmR6R1BFVkl3MTh0N3Jnb0ZKU25IR2p2QktCSHhYT1FSbktRUk1ONGIrSWhFVzhTZVVTQjg5ZGJ5d3FMUzliOGxYQjBheVkrNDdFZUhianF3QlBhSnJnQ0VCcHRNUU53UTN3TGk5ZVhHd09SYllQQVhmR1k4a1pBWXhNNVNLUFhzVTF3WmlUeEppMGszcHNHUjRCb1FEUllEVXd0OEYvMmZiTjNwWEdBY2NnZTRUd2hnQ2FHNWdKdGpidjRaaFdBbUdZVFVXcGhRTGttaGI3VXZnb0RXREkxVk1GT0JxanhQS1F4NnlzZ2xVdE9GMUlVeVE2L00yNUpyZCtkS1JGOFFBTDNyZHNxc0J1ZkNZd0lNNWs1eHFIbUU4dEJFZGtKbk9XRmpFTkNjOU84cDM5Q2M3elJPL1M0WktBbktjc2hVVnBJQmlVWHhVcU9kay9FN0tBTWVjYzZrVTViOWwxNHd2U09Bb2I1Q2hqS2g0UFVnb2VFWGlUb0dWVkc2anlUWHBDMEtpZ1BKVEJmcFFMOUZROXBvb0tETkE0aGpWMWZTWElFRWlzNTlDYWhaeHp4b2p2bTdzblc3d3FnMk14VGxOMjR6ZmZwZG5PQUVYN0ZRYUlSa29DSDFId0NVTzBYa3V0T011a0ZjWGUrZ0I2U0RNS3YwNEh4UzBWUUtVRDdKQ01rM3B2RzZYZ1RRcUwxSkVkN3JNZkFwemhZUTRYWTZ5MnZ6THBrMzBqWmhwVXhGbDhESS9GRG1mbnFRWm9FdE0wc0JKUjB6cVRYcEpBa016SVZSUDRaN0lTUzhVc0R4cGVEeEVsT1VUa3U2VWxPT0N3R3FMNkpHUGlVMlkwZGxJMy95dFl1K2JDcFhwSFBtRllCM0FSREMwbnN5M2tUZ1lTU282VUJ4SU1lbU5RYzcrMlRmVTQ0T2czRVV6ZUNhQXFCdEFHOWlVQXlJcmt4T3BMVFFob2VDMVMvUkh4VDVVbktYZEh1YmJNaEFSZmZPNTNxdGZZNTB4WnJuMVpUZ0xIeDV5QlpJaVFwRDBuclRkS3B4SVBLVEFsb2ZjYUg3SDBxSEowTzBtbWJRUnl3aVlQa3Y4R0E1QlFHSmFlYjVlaUJDWUQ3dUh1VWl5S1l0RW5lTkJpeUNhVmtTY013SzEyamJaZUM4TE5BWU5wT0E2Yk5WSVNFWm9PZ3JCR1VwWTQzRVVpVzA0Z0gvV0ZLM1JBK0ovSXczbHdhV0FSbWdYVDZacEFRU01TYkNDU0RrcXNteXlFazRkQTRvUHNsa3JMK0dscUEwQ21sR1NsRWE3UkgxVDJ6QWU0WmgyRFJkNXkyajNnbTdES1A2MzBqSU9HbjAzbElBUnlrbGp3a3JlVFFtK2cyd1FUUVRSTUFsZVFwYzg0QzQ1a0Nsa0haWURtRFFNb0VDZXRORlpKamVNa3hQaStRbkRiTFlTa2dISW9lNVpFQWxGdlNBM1RuamFURXA5eVVGcThLQzZYYnd0eFpJY09FRUMxd1hsOU1PNndGMFJjTDJONDNHZXVJL2hYRUR3ZzRTRUl5QjJ1TGtGcnprRmpKK2JPUTZFNXNGdHRxQ3FDN1ozR3pLZTJmQWxhQlc4QnE1aGFFbEkzZXBJWEVTVTZrTHprdEpGWnlpVVlreDVVQ29xR2tIRUJZL1JMS0tEZjVid2pyUENhR0ZMekF1UVJhY3hlRlBYcERSekxkSUNad2xYK0doYXNkMWxlZWJOdkZSUmxQdWNyektPZDF2OUI5SXA4SmV5OERVZmNGM0lDZzIyd1FmODROQ0VTZGVVZ2RnemhJbnhGSTB6bEk1Wkx6WjcySjZoa0JaQlpuQ3FCblJjVWFHQmk0QTZRVE40Rk5jQTRIQ2IzSllvWXh5YVZXU0c2aW9xcmtkQ0dONUt2djhnMHZtbWNrYmxPaVFPaUJYdFkzRmhoM2ZLNGJsZyt5ZFdXMExMNk1kbzBEeGpVR0dKY290bE1wY2xvSklzY2xJTzRkVW5sQTBQMGJIdEtjaWtsS1o5NmJPZ1labGh6eHByWkJXRWtuM2ljVEVsTUFQU1g3bGcyN3p1R25uQXJXczNKWVNOYXp0b0tWdnVTcXkzSVRYcERsUmxSVTMxVjdURno3Uk5wUDI3RTAzTlpsZTkvMlBLU2UzSkNBaGNST1VuaElXbStxUm5LVTdYSm82N1ZocDRtYk82NlBRcnpJMVQ4SEpKTXl3V2JPOWdwSXJPU3lXTWxKZGVPU1ZuSysyaXhYV1hKVk43d1YxYmQyTHljeDBHUFNiZXRLZE5xNlpFakFRakl3U2VIR1RkOFlsWnlvNDR4eXlURWRnc0VTZHcwYmQ1K0xOQlhRZm0xN1lNL2huOEZ5Y0JwWXp0d0cxZ1RTN0cxZ280VVVsRjBPeVdDVzA1WUNrNVF2TEFYWXVHU2t4MVMxcll1UVpCV1EyRW1LWThVa3BSS2tLcEtiVlM0NU5pNTFDQUs2ZHdUTWp6a0N4Y1ZxUDFPbmw5L3FOdGxYS1BLQUdab09Wbk4yZ1BYY0hSd2tRNUpEU0JXU1N5L1BjdnJWTjRGRXZXRERxOXRqcXRUVzdjZTFkUTFMYnFFUnlmSER5MjQ2a3VNaDBYWXJvRy9BTmlnb1ZEL0QrdTh6VS9zblhmbWVMZ3VJVENaOEZ1MEQwYWlOWURWM0oxaC9zNk95NUlJNHlVa0Q5VW9CZno0dStaRzRWRFhMR1pXY1RvOUpNcmc2eVMydklqa0pLN25RQ3NuMTFKZmNuSExKQ2UwV2crM1lUWERtL0MyOFQ4MVpzb013dFg5U0Q4RWMwdlVpMGt2eG5yOEhoS015d0dvZWdiU1RnNFRlVkJHWHNuWGlFcEZjUnFVc1IrdFgzNmIybU5pNHRMWXFKR09TMDhZbEIyMWNxcHJsaEQyWFFxZVJHK0Q0RHpmNDJYeko5SmNxd05UcVVwazJtMmt0djBBRkFTdjNZOEczQVN4bm85d0lLQU9Tc3lqUGNyemtqRzU0azZwbU9kME5yNjdraHVwSVRodVhXTW10MUpIY1VoM0pMVUpRaGlYSDJJZURnMDhXblB6cHB2YmU4bDk2RkVVbWxCaUxNdldIZnNXWTJWWXFUb0ROaUF5RWtNTjUwMXdqa3F1dStqYllZMG8wMm1QU2JldFdLUVU4akpRQ2VwSVQ5VjZJTlZRMHE0U0xWd3EwOS9RVW5jSDdsZlkyNUZBQm1Xa1pHaG5uSHIwQ2puNWJRRFJ1TXdadm5iaWtLN2tnSTVMN1dqZkxLU3YxbUdwQ2NoSURXVTdvRkE1dEJpWEQyclNUb0ZKcGRFOTJwQnVkN1pzWXNCMzVhV1VWU0VSeXkrUjUwTjU3RTBoOHM2dG11WmxiZGFwdkExbk96M0NXbzAxbzY1YVhBcFVrRjFZaE9UZk9tOFN1NFdEUkx3RW1oTzdsZzNHbGV6aFZVRkRRNUxXbmxlUXdBYjdZSTJNbk1INjhtQS9CRVllZ0RXWTVpVThtV0FVVFQ2cEdjbFAxc3B5dlhwWjdZZlVkclZOOVY1V2NCRXNCc1R2K0RNRU1tNzBMdmp0OEdWVHFLc2VGTDVXV2xsclZXQ3VCbko1QWQ3eGYzVkVWb3V1VldEUDE4TWtHTVdZN0MvOXNMQ3B6akdjNVF4dGV2UjVUbFZKQVo4T3JMem54Z0FqY3g4VkFPNjhVbUxMaWV6aHc0aHA3Mk5QQXRaNGlROFVhYjBTUjB4UmtqUHVpYzhpM1VYcmZZUVVldU9vQWRFZFlWdDRiUWVxekdTeW5ab0ZsWUhVYlhzTlpqamJTK3haNm9RMUNHN0FPT294TWcxSHpka1BTMXJOdzlVWVJZTm8yY3RaSXMrVzFaZldDU1NYRlo3ZW5waHphSnZYVHdmOWNneldwSjJGc3lGN29OakVUTEVha2cyVDBCZ3p3YUpQUWkzd1JrSjkySDVmR1RWSW1rYTRBUWhxUDN1U05rdnNTYlpnY21DRnl6R1JKMEhaNEduZ0diWWVRdUtPdzdmdUwraWRKRE5rRGN0STFQLzh0L0xjaFA0Z2JpcUN1dk93cGQyTGtaa2dXVk9TY3hTQi9IR2FzUG9oQk5CZUd6OWtOZzJidWhJRkJPL0RtZDRCWDhDNFlzMkFQSzVlUStLTVF0K2swNUNBTWNqQ2lXR1h5dnlDUUUycTczc0JoS2RNT01aSGpKWGdCdDE4RmxDRWpNWVBJdzRoRVhzYUloK2ZoOWZWOXJUUmVRN1B2RmhqMEF2ajQ5THltWUwwR21OM2syQjQ1QVBvdVRYZUo5T3FTZ3dMa21BbnZWV1Z2Q2NvVGxQc1p0QVhrU0ovWnU3NUk3WFQvL3YzR3FQdmU1QVE3WHZnUi9xVHFreG9DUXY1ZjR6WjM4Sk05OU5udXJRVGZOeTFEdEc1azMwTU9WcUZsY09BMFYvbkRsNDkwNUVsazhyOThaL004UG5jZjhVb0VNb2NjQVNaQXlQbHFzOXBWdTJwWDdhcGR0YXQyMWE3YTlVYlhmd0Z2VUVFSDRZYXFsQUFBQUFCSlJVNUVya0pnZ2c9PSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIkZJRE9fMl8wIl0sImFhZ3VpZCI6ImExZjUyYmU1ZGZhYjQzNjRiNTFjMmJkNDk2YjE0YTU2Iiwib3B0aW9ucyI6eyJ1diI6dHJ1ZX0sImZpcm13YXJlVmVyc2lvbiI6NX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIwLTAzLTIwIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiT0NUQVRDTyBFekZpbmdlcjIgRklETzIgQVVUSEVOVElDQVRPUiIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjAwMzIwMDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjMiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMyJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMC0wMy0yMCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIxLTA3LTI3In0seyJhYWd1aWQiOiJjMzQ3OTk3MC1lNThhLTRmNzAtODM2Zi04NTNiZjQyZmIwNjMiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6ImMzNDc5OTcwLWU1OGEtNGY3MC04MzZmLTg1M2JmNDJmYjA2MyIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IDUgU2VyaWVzIHdpdGggTGlnaHRuaW5nIChFbnRlcnByaXNlIFByb2ZpbGUpIn0sImRlc2NyaXB0aW9uIjoiWXViaUtleSA1IFNlcmllcyB3aXRoIExpZ2h0bmluZyAoRW50ZXJwcmlzZSBQcm9maWxlKSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk3MjgsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfSx7Im1ham9yIjoxLCJtaW5vciI6M30seyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3IiwiZWQyNTUxOV9lZGRzYV9zaGE1MTJfcmF3Iiwic2VjcDM4NHIxX2VjZHNhX3NoYTM4NF9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwic21hcnQtY2FyZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRFNEQ0NBakNnQXdJQkFnSVVVY21NWHpSSUZPZ0dUSzBUYjNnRXVaWVprQkl3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRRG01NTViV1k5V1crdE9ZMHJJV0hsZGgrYU5hbm9DWkNGaDdHazNZWnJRbVBVdzBoa1NHNnFZSFF0UCtmWnlTMzNWRXJ2ZytCUXFubXVtZ05oZnhGcmt3RVpFTGVpZEJjQzhDNEFnNG5xcWlQV3B6c3ZJMTdOY3hZbEluTE5MRmNaWS8rZ09pTjZaT1RpaE81L3ZCWk1iajlyaWFBY3FsaVltTkdKUGdUY01HYUVBeU16RU1OeTJubTZFcCtwalA1YUY2Z2kyMXQvVVFGc3VKMWoyUmoveW5NL1NkUnQrZWNhbDVPWW90eEhrRmJMOXZ2djJBMk92NUlUWkNsdzRiT1M5bnB5cFFpbU9aNVFBWXl0bVlhUXBXbC9wTVl6NnpTajhScWtWRE5FSkdxTmZUS0EyaXZMWXdYNmxTdHRNUGFwZzBKODRsOVgwdm9WTi9GcFM0VkNWQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJRZ0tGQWhHNlJhVytoVHk1MmR4ZVQ4YkM5Nkh6QWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQVlNemdMckpMSXIwT292UW5BWnJSSUd1YWJpSFNVS1NtYkxSV3BSa1dlQXRzQ2hERUhwWGNKL2JnRE5LWVdvSHFROHhSVWpCNEN5ZXBZZXZjM1lsckc4bzd6SHhwZlZjYW9MNVNldUprekh4S240YlRhU3A5K012d2FtbnA2NGtaTWlOYkZMa25mUDlrWUtvUkhrTVdoZVJKMVVzUDF6NFNjbWtDZUlMZnNNczZ2cW92cWpXQ2xGc0pwQmNzbHVZSFdGN2JCSjFuNFJ3ZytBVEVvcFk0SWdHdjZadndjK0E5citBVDJocXBvU2tZb0FsK0FOWXdnc2xPZjlzSmUwVitUQTlZWS9VbGFCbVBQVGQwLy9yOXd2Y2VQV1prUGpLb0FDL3pVTmhmRGJoNExWOEdIczNseVgyWG9tTC9MTmM4Sll6eUlhREVoR1F2ZW9QaGgvdHIxZz09IiwiTUlJRFNqQ0NBaktnQXdJQkFnSVVUbmJiR0lSMk5IdnpxSUtGQWVRd0cxWEJpczB3RFFZSktvWklodmNOQVFFTEJRQXdMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3SUJjTk1qUXhNakF4TURBd01EQXdXaGdQT1RrNU9URXlNekV5TXpVNU5UbGFNQ1l4SkRBaUJnTlZCQU1NRzFsMVltbGpieUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRUVnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBT3NYajNrMDRCYW40VFlkdFpLcUQvT1BKeHlEeWFQbUNCVUZVaWFaSWdUdGVabmozWDI1RGhncFpaWHNDNEQweWRJY3JsQTZ3TlVJbk9STC9MOXpCYlRFSU1BVk1HbzZnN1VLQW1iMk1GNkFIYm5oWUpkOWVpa3VwVk5XU2hITllOYzRHQmRPMVlONkFmVXF2SmhIYmUzVjRTTk1QbUJSRUtKUFZ6N1Rod2dtZ2dUZThXczJLMC93c3F2MndTRTdwYkNCc1VaaElYNTFiWk0zcHFEd0pQVG1SRkV2dDAvNnRHNWVPOEYzajE0T1hxZkVobWpuMVZ2eEtEWVFPTFpBeEN3d2dDMFA0Q2RmV3YzeThQU1I4STM1NGhPMVkrR3pOanZJcVgzOE5LTHl3dUlZSEZlck94Tmx4RU1CdkZoWUJ1UnVZQWtrZ1VhUHFONlVCaHNJTHJzQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZDQ29SSGhpeU5uYm5YUldJTDZaQlhvQlg5WVRNQjhHQTFVZEl3UVlNQmFBRkNBb1VDRWJwRnBiNkZQTG5aM0Y1UHhzTDNvZk1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQ1FGYWZKSTEvNVdnOUNFRWltRTFSUDU0UmdRd1ROVE9PUXNMQUNUZStySXRsRlF6QzlaRGhyVjgyOHlYN2p6eStBQXNwM2l6SzdUMXRoMmRsN20rdHUwc3cyUGEvb2xjMDJudDZQeUl3MzQ4Z2FIemhJMSswS0U0NXF4dkZEZUwybE14YlBmQ1l2eUVFYVl6amlRRUxVNTk1MXBYR1d5S01hLzRmTHRPK1pLT1hoTXVWZXE0clhEUEk1NFc2SkhPaUFhaUtkaXcrNWUzYzJrdC9qRklRdE02dk1YZzlMTkZ6ZGpFVE50MjBWWDlRZXZScEZaZnVjTUc5d0NhUURvRmxQenBUTUpLaFBldi9pbUptWlloS2ZyMGxMY2VtdHFqSXhMQW9xWmRPWWZIQmc2K3ZBY2RQSS9pYXVHcFVBdjdYK1VLTm1Ed2paMkJhSDRzTHdoQjJtIiwiTUlJRFBqQ0NBaWFnQXdJQkFnSVVYemVpRURKRU9UdDE0RjVuMG82WmYvYkJ3aVV3RFFZSktvWklodmNOQVFFTkJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNWjYvVHhNOHJJVCtFYW9Qdkc4MW9udE1Pby8ybVEyUkJ3SkhTMFFaY3hWYU5YdmwxMkxVaEJaNUxtaUJTY0laZDFSbngxb2Q1ODVoKy9kaEs3aEVtN0pBQUxrS0t0czFmTzUzS0dOTFp1ano1aDN3R25jcjRoeUtGMEc3NGIvVTNLOWhFNW1HTkQ2enFZY2hDUkFIZnJZTVlSREY0WUwwWDRENW5HZHh2cHBBeTZua0VtdFdtTW53TzNpMFRBdWNzcmJFNDg1SHZHTTRyMFZwZ1ZkSnB2Z1FqaVRKQ1RJcStEMzVod3RUOFFESXYrbkd2cGN5aTV3Y0lmQ2t6eUNpbUp1a2hZeTZLb3FOTUtRRWRwTmlTT3ZXeURNVE10MWJ3Q3ZFenB3OTF1K21zVXQ0cmowZWZuTzlzMFpPd2R3TVJEbkg0eGdVbDVaTHdyclBrZkMxLzBDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01COEdBMVVkSXdRWU1CYUFGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFNd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkRRVUFBNElCQVFDM0lXL3NnQjlwWjhhcEpOanh1R29YK0ZrSUxrczB3TU5yZFhML2NvVXZzcmh6c3ZsNm1lUE1yYkdKQnlKMVhucXVCNXNnY1JFTkZ4ZFFGbWEzbWlvOFVwZjFvd00xWnJlWHJKMG1BREcyQnBscWJKbnhpeVlhK1IxMXJlSUZUV2VJaE1OY1pLc0RackZBeVB1RmpDV1NRdkptTldlOW1GUllGZ05oWEpLa1hJYjVIMVhnRURsd2llZFlSTTdWb2xCTmxsZDZwUkZLbFg4dXN0Nk9UTU9lQURsMnhORjBtMUxUaFNkZXVYdkR5QzFnOStJTGZ6M1M2T0lZZ2MzaXJvUmNGRDM1NGc3cktmdTY3cUZBdzlnQzR5aTB4QlRQclk5NXJoNC9IcWFVWUNBL0w4bGRSazZIN1hrMzVEK1dWcG1xMlNoL3hUNUhpRnVoZjR3SmIwYksiLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVIzOG1xMjZTZjJzelZWMkJkRzZXRU43a3VXVXdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFSWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFOWTBXYjlvUG9Sb0tvUXlXUGFKcHoxMXZyV1RnNnpUdG1OajJWb0tSbnl2S0dScXB6YjgzdzVsNllBOTZVWWtZQkRRUDBpbE8yRFBlNndXcVZSNXpEZlJ6ZGNIOGJoK0w3ZEdHdmFlNmhSVFpoa0ZrQ3BYRHM0SGNja25yRGY4RkNsSjdIZTM5SmY0Mi9HMVFtMnp6OVdXbXJQWHRnaUsveDA1R2pzUWZHdURHMXpmNVFUVVVpZThsd3ltSzNUZmRPdk5lZUpBQVBlMnBuN0l0ZlJiK3JWck5XaUR6bFJuMnZObloyd1BvNHdIL1dKNmRoWFpHK3JNV1QrYTZCb2NnMVVmSXc2a2R1bkc0YlRwWnpzdmFjRll5UjBtcGYrRGVPbnBTV0FteXdKV0h2VGxmMllYeEZ5ZVhjVEFDZFFsY01OR0oyVmhaUTQ4eHRQNS9SQlAvOGtDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNoeTQyb2tpcWNUUzFpcWEvSFJXamtCbjRIL01COEdBMVVkSXdRWU1CYUFGT3EzUXBDZURIdGtldHRVZkFPNmZFNmYyS0ZoTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBbitSSElQYnRNRUROZFQxZzhIL1JpdEFrVWRMZ0F0MXRXR1dubGo5a25idjQvNEdsWDdDOXA0NWVmUE85L2FaTDZPVjFYUktCaTZLbXRCVzVLN251WUVuTXgvNUJxQlNiTFQ3cmhkdUM0OVRCZU1iOVBIZFhzVGxTVk5ZZWZyMWRHaWRyNGoweFZCUUxiMXJrbkRBYmRXRHpLZnZuYXlLTzhGcndlN0h4ODQzTUcvckorYzBYcnVVdmJmVlRDSExpSVdoTTdvTkRoTDh4b2I2eFVvOUtMS2NTTCtJdFlzTzMvOVdiOFE5R2pzcUw0RlhzRGNHMVNhWWg3S3BmdU1tT2l4cXpKWk8ybklpY1BZUmcxSTJTdWlVZllPNzB0bWRIY2JsK2tTUW1TWXQ3cnE0dmlJTGcyR3gzajlySVR1V1RqYmFVYVNTUXhnT21NU0h1eXpNQUMiLCJNSUlEU0RDQ0FqQ2dBd0lCQWdJVURxRVJ3KzRSbkdTZ2d4Z1Vld0pGRVBEUlozWXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFESTdYbkgrWnZEd01DUVU4TThaZVY1cXNjdWJsdlZZYWFSdDNZYmF4bjlnb2RMeDVzd0gwbFhyZGdqaDVoN0ZwVmdDZ1lZWDdFNGJsMXZielVMZW1yTVdUOE4zV01HVWU4UUFKYkJlaW9WN1cvRStoVFpQLzBTS0pWYTNld0tCbzZVTGVNbmZRWkRyVk9SQWs4d1RMcTJ2NUxsajV2TWo3SnRPb3RLYTlKN25IUzhrTG16WFhTYWowU3dFUGg1T0FaVVROVjR6czFidm9UQVFRV3JMNC9KOVF1S3Q2V0NGRTVuVU5pUlFjRWJWRjhtbHFLMmJ4Mno2b2tWbHR5RFZMQ3hZYnBVVEVMdlkxdXNSM0RUR1BVb0lDbE9tNGNycHduRFJMVkh2alllUEdCQi8vcEV5enhBL2djU2N4andhSDFaVXc5Ym5TYkh5dXJLcWJUYTFLdmpBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlRxdDBLUW5neDdaSHJiVkh3RHVueE9uOWloWVRBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBcVFhQ1dNeFRHcVZWWDdTazdra0ptVXVlVFNZS3VVNitLQkJTZ3dJUm5sdzlLN0hlMUlweFowaGR3cFBOaWtLam1jeUZnRlB6aEltd0hKZ3h4dVQ5MFB3M3ZZT2RjSkpOa3REZzM1UFhPZnpTbjE1Y0ZBeDFSTzBtUFRtSWI4ZFhpRVdPcHpvWHZkd1hETTQxWmFDRFlNVDd3NElRdE15dkU3eFVCWnEyYmp0QW5xL05EVUE3YmU0SDhIM2lwQysvK05LbFVyY1VoK2o0OEs2N1dJMHUxbTZGZVF1ZUJBN24wNmo4MjVycURxc2FMczlUYjdLQUhBdzhQbXJXYU5QRzJraktlcnhQRWZlY2l2bEZhd3AyUldadnhyVnRuM1RWMlNCeHlDSkNrWHNORDA1ZENFclZIU0pJcytCZHRUVk5ZOUF3dHlQbW55YjB2NG1TVHp2V2R3PT0iLCJNSUlEUnpDQ0FqR2dBd0lCQWdJVWV4OW5UOXZ3Wk5YUzQ4M0xkaVlHZncyU2pTb3dDd1lKS29aSWh2Y05BUUVMTUM0eExEQXFCZ05WQkFNTUkxbDFZbWxqYnlCQmRIUmxjM1JoZEdsdmJpQkpiblJsY20xbFpHbGhkR1VnUWlBeE1DQVhEVEkxTURnd01UQXdNREF3TUZvWUR6azVPVGt4TWpNeE1qTTFPVFU1V2pBbk1TVXdJd1lEVlFRRERCeFpkV0pwWTI4Z1JrbEVUeUJCZEhSbGMzUmhkR2x2YmlCQ01pQXhNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXUxTWV2bnk5ZHlPOVpVQzM5U29NaExjUi9EWHJ0Ri9jaU0xMnRjaXkyRVhBWjZNa3JpdlZ0Q2ZFVk05WDZJU1RFbkJQNnVTWVlvdjZwcHY2TzZKaDJOSG1ZbTR3K0puUzRWbkNQVTdtSEFNZlZJMk1HVFRNVk9ldzB4VXNHN3NJU0lrSURVQm11azhZSzljNXppYzkrdkZRR0xJa3NkWE81aVZGSWdORzUzY0dYRDRaTFpvQVBpdTBQRW96eEFxWUlhSTRneEtoT0EzUzgvVzhtSVdzdTZvZnlqNEd2a0ZHNlo3a3lGMzEwN1A3bXdGSExySTNFTmFQV01PRmNUYUdhMGR3Ky92VlJ3alJjRVpCVnN1dVQvODdja1NzMGE1cGt0M3ZaQmxhWWVUOHB6U3JlVjdtb3djSU05MEwyaWFBVGxQMG54bWFFNm5PeVRib2pGVmwyd0lEQVFBQm8yWXdaREFkQmdOVkhRNEVGZ1FVU1hFaDNzYTNidER1cm00TU0vQzdTMWxSdXVZd0h3WURWUjBqQkJnd0ZvQVU2cmRDa0o0TWUyUjYyMVI4QTdwOFRwL1lvV0V3RWdZRFZSMFRBUUgvQkFnd0JnRUIvd0lCQURBT0JnTlZIUThCQWY4RUJBTUNBWVl3Q3dZSktvWklodmNOQVFFTEE0SUJBUUI1R2MzaGFmdHA3aEtzRVpzbytpL1o1blJ1cWRtekcyV0NsVW9SVXFiYVB5Z2xuSkRqS1Iva2ZnT2w2aWJiRi96dGhtM0ttWFE3SGNESVAyeE1kRzdVMkwyaW1iSlFIcVBmL2gySHFvamI0clpndWUrNlc0a3RTUjVlbFI5TDFyWXFFL1NHWU00aUVLb1ZRU3Y3UlQxcnhJZVdpS3N3L1Z4eGkvUU9uc3gzRjd4ODBDQ1lnQjRFM3lReDhWVFc0NDBoVEV3VEExZU1IT2l4MzJ0UHR5eUhJYThQVlZJZlZwSFFKQmFNVnZ2NTA4VUVqd2tiVTJybmpmem9TVE5TOUE1alVROG1CU3ZlOTVyakIwZG85OEVVK0R4ZEJxWDIrSDZpNXdsSUNGZ3poZHpjc25lOWhHS1Q2bHpUWDRjSWRKc3JZMit4bGVLMEZGUXk2bEdFVkxFZSJdLCJpY29uIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwiaWNvbkRhcmsiOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJwcm92aWRlckxvZ29MaWdodCI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsInByb3ZpZGVyTG9nb0RhcmsiOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xX1BSRSIsIkZJRE9fMl8xIiwiRklET18yXzIiLCJGSURPXzJfMyJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJsYXJnZUJsb2JLZXkiLCJjcmVkQmxvYiIsIm1pblBpbkxlbmd0aCIsImhtYWMtc2VjcmV0LW1jIiwidGhpcmRQYXJ0eVBheW1lbnQiLCJwcmV2aWV3U2lnbiJdLCJhYWd1aWQiOiJjMzQ3OTk3MGU1OGE0ZjcwODM2Zjg1M2JmNDJmYjA2MyIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImxhcmdlQmxvYnMiOnRydWUsImVwIjpmYWxzZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwicGVyQ3JlZE1nbXRSTyI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOnRydWUsImFsd2F5c1V2IjpmYWxzZX0sIm1heE1zZ1NpemUiOjE1MzYsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6OCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoxMjgsInRyYW5zcG9ydHMiOlsidXNiIiwic21hcnQtY2FyZCJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi04fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotMzV9XSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5Ijo0MDk2LCJmb3JjZVBJTkNoYW5nZSI6ZmFsc2UsIm1pblBJTkxlbmd0aCI6NCwiZmlybXdhcmVWZXJzaW9uIjozMjk3MjgsIm1heENyZWRCbG9iTGVuZ3RoIjozMiwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjEsInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjoxMDAsImxvbmdUb3VjaEZvclJlc2V0IjpmYWxzZSwiZW5jSWRlbnRpZmllciI6IiIsInRyYW5zcG9ydHNGb3JSZXNldCI6WyJVU0IiLCJORkMiLCJzbWFydC1jYXJkIl0sInBpbkNvbXBsZXhpdHlQb2xpY3kiOmZhbHNlLCJtYXhQSU5MZW5ndGgiOjYzLCJlbmNDcmVkU3RvcmVTdGF0ZSI6IiIsImF1dGhlbnRpY2F0b3JDb25maWdDb21tYW5kcyI6WzEsMiwzXX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI2LTA0LTI1IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTcyOCwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZdWJpS2V5IDUgU2VyaWVzIHdpdGggTGlnaHRuaW5nIChFbnRlcnByaXNlIFByb2ZpbGUpIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNjA0MjUwMDQiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblByb2ZpbGVzIjpbImVudGVycHJpc2UiXSwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNi0wNC0yNSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk3Mjh9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjYtMDUtMDEifSx7ImFhZ3VpZCI6IjBmMDBjYzIyLTQ2NDAtNDFlNy05NTg1LTM4NGVjNzNmZmU5YiIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiMGYwMGNjMjItNDY0MC00MWU3LTk1ODUtMzg0ZWM3M2ZmZTliIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlRhZ2xpbyBDVEFQMi4xIEJJTyJ9LCJkZXNjcmlwdGlvbiI6IlRhZ2xpbyBDVEFQMi4xIEJJTyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyNTA3LCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH0seyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjAsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDQ2pDQ0FiQ2dBd0lCQWdJSVhRcEtpLzRMZnNrd0NnWUlLb1pJemowRUF3SXdRakVMTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFvVENsUmhaMnhwYnlCTVRFTXhIakFjQmdOVkJBTVRGVlJGVTFRZ1JrbEVUeUJTYjI5MElFTkJJRVZEUXpBZ0Z3MHlOREEyTWpnd01EQXdNREJhR0E4eU1EVTBNRFl5TnpJek5UazFPVm93UWpFTE1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBb1RDbFJoWjJ4cGJ5Qk1URU14SGpBY0JnTlZCQU1URlZSRlUxUWdSa2xFVHlCU2IyOTBJRU5CSUVWRFF6QlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJGVGxwM0R0WGQvcjZvUmJqUzNpcmszNjU4TlEvdkRUWEw2c1lYekMyYTI0akhPMXpQZk1rMERtbWVTT0ZtUytXM1kyalpNY1V1aWErMGRmeS91QThuR2pnWTB3Z1lvd0RBWURWUjBUQkFVd0F3RUIvekFkQmdOVkhRNEVGZ1FVRnNzeGkvY1NPMHpseTV1cEoxT0plYXdZV0dzd1d3WURWUjBqQkZRd1VxRkdwRVF3UWpFTE1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBb1RDbFJoWjJ4cGJ5Qk1URU14SGpBY0JnTlZCQU1URlZSRlUxUWdSa2xFVHlCU2IyOTBJRU5CSUVWRFE0SUlYUXBLaS80TGZza3dDZ1lJS29aSXpqMEVBd0lEU0FBd1JRSWdVWHg4dWJyQitZVzhSTHpUT1I2Qy9sSy9oMnIyUEJTRnlPUWc1eTlCcWNZQ0lRRDM4Rjd1QkQ1SjFPMlJ1ZlFoT2w5MW9GdGNUM0tKRWtYRFBTOVpVQ0J5dGc9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFFMEFBQUFnQ0FZQUFBQlhZL1UwQUFBQUNYQklXWE1BQUFLdUFBQUNyZ0Z0N0RJYUFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCM2QzY3VhVzVyYzJOaGNHVXViM0pubSs0OEdnQUFDSE5KUkVGVWFJSHRtWDl3WEZVVnh6L2Y5emFiTG9Gb0FTbE42ZkJEQmdzSWd3cUkvRlJuQkVRRnh4R1VYMVZJazVjMHBVTlRPOE1neVhZakl6OHNkYkROajkzS3BGUUhJUzA2MVZvS2hUSU8wQTRnNktBVktPV0hoVmJxbERTa1AwS3kyWGY4NDcydDYyWjMyWkFHUnFiZm1aMTk5NXg3enpuM3UvZWRjKzlkbVJrSE1EbzRIM1VBLzQ4NFFOb0h3QUhTUGdBT2tQWUI4TEVscmFtcGFhcm5lWjhmRDl1UlVzcUVkTDBMVDl4aTlzcitjTmJRMEhDSm1WV1Y2bE5UVS9PN2VEdytQQlkvemMzTnNlSGg0YzBFaTZJQ29MNisvbXpnVGtrdHlXVHk4YkhZTDBrYXNDSURxeFBTc3hWdzU4MW0veHFMTXpQNzQvdjEyYkpsU3pXd2F5eCsrdnY3WTY3clJvRjk1RXVxQmM0QkxnVEdqN1M0V1g5Q3VoUjRPQTAzSnFTc2FnOHdBR3dDTmpqUTNXSzJzUXgvcVp6bnM0QlRKVDFuWnMrRnNxRmR1M2J0SGQwVXlvT2szbkJQK3VwWWJaVWtiYm5rQXNkWHcvbjljQTl3WmFpcUNqK0hBMmY3MEp5UTdnWG14czE2aTlsTEpwTmU5dG56dkFYQXFXYTJLcGxNemgvalBONFhlL2Z1blIrTHhWYlgxTlQ4YWF5MmlwSzJTS3JzaFJYQUorZVluUWRjMVNZOWJYQVg0T1oxRi9CRDRLeUVkRkhjYk10WUE5dmZXTFpzMlI3RytGcG1VWlMwWHZnbDhFMWdYeDVyTmJ1N1RkcGt3YXFiWEdEWU5HRE5BdW1NSDVudEdXMHd0YlcxaDdpdWV6WXdXZElSa3ZwOTMxK1hTcVUyNWZaTEpCS1JyVnUzZmxuU05LQkMwb3UrN3c4RFNOb0lET2JiYm1wcU9qaVR5WnppdXU1YjdlM3RiMmJsczJiTk9teG9hT2d5eDNFKzVmdis5a2drc3JLam8yTm5xVGdMYmprUzBsWEFOV0Z6WXE2dTFleWhTamdaNkFZS0hWeFAzQU0vTCtXMEVPcnI2eStLUkNML2xyUkdVamR3aDVsMVN0clkwTkJ3U2JhZjUzbVR0MjNiOXJ5a3RjQWlZS0daUFNScGJTajdRU0g3NlhTNjNjeldEdzhQWDVhVk5UWTJucE5PcHpkSnVzZk1icGZVbmNsa1hxcXZyeitoVkt3alNFdEpGY0R0T2FJSllXN2JoNXZNZHNiTnJoZGNCTHhld083MXQwb25sbkk4SWhESHFRSjZ6V3lGbVMweXM0WEFtMERFekdibGRGME1uR0ptVHdISHU2NDdEWGdCeUFBSngzSHVMMkwva055MjUza0grYjcvQUhBbzhBQkJldGtJSENIcGpwS3g1Z3ZlaG91QnFibXkxK0dnUW9OYnpkWWVDaWNDSHJBNVIrVm1vTEdVNDN6MDl2YXVUQ2FUVTFLcDFPV3BWR3AyS3BXYUsrbUdVSDAwd1BUcDA2dUFTd0VjeDdreG1VeSsydEhSOGJLa3V3RFh6QTdwN094OG94eC9abllwTUFYWVdsTlRjMDB5bWJ4WDBweFFmWEZ6YzNPczJOZ1JwRm13ajhtWDdldVhrTzVyazM2OFNLb0V1TUZzTUc2V09pbklaOThBbGhQa2xLK1ZFM3dXUFQwOW1YeFpKcFBaSGo1R0FhcXFxbzRseU1NMk9EajQ5MncvU1ZzQUhNZTVvRngva3M0UEh4L1BicVpkMTkwUXlpYnMzcjE3YXVHUmhRdkJpTmRLNE9jMFR6TzRzaGVtSjZUYXVObVRBSmViWllEVndPb0ZVdFVBZkxiY0NlU2lycTV1RW5DeTY3cXU0empSWEYwbWs0a28yQ3Y2UzVjdUhlenU3czdLRDVhRWplNXk4Tk1Ba3ZZVmhmYjI5dDJlNXcwQU1jZHhEaXMyc0JCcEk0NDVBMEcreUNLN3d6MEJlUGluMG5FM20yM1A3UjlXenFjVFVnUTRIempkZ1EzVFlIMUlia0Y0bmpmRGNad09vS0xRL0NXOVJWQjgzQmt6Wmt3QjNncmxwNFpkQ3VYWGdwQlVIZnA0TjArMUI0ajV2ajhxMHZyeTJnWU01YlRUNGZkbVFVTStZY3NsOXgvQmEzbzVRWDY4RC9oSmk5bU9VcFB3UE85dzRCY0VaOFVrOEZzek8wdFNJb3lCWkRLNXcvTzhaNEF2T283VFZsdGJlMHMwR2owS3lCYUs5ejJtWmVIN3ZoT3UyblNleWdEeVYza3VDcEgyTjRMSlp2RnUzQ3ozQUwwU1dBcDB0SnE5bHhYZUpoMldoaGtXRklDakNmTGF0K05tYThxWmhKbGRJQ2tHYk4yNWMyZFRUMDlQcHE2dXJqOGtiZC9xOUgyL3lYR2NSNERySXBISWRiN3ZaOGV2N092ciszVTV2Z0FjeHhrME13cGNJSHdpL0M1Ni9pMUUyaHBnWGs3N25WeGwzS3dsdDUyUXFvRzV3QndndDZ5M2wwc1lnS1RKQUdiMlNyWW9TTW9Xb0gya3VhNGJOYk9JcEI0ejJ5eHBBTmlRU3FYV2pUS243UWg5VkdjRnMyZlByaVlzT283akZEM1ZqQ0J0UGp3K0gxN2t2d1hodFVJRHc5ZXdDV2dGOHQvL0FlQm5aWWNmSUIwR095RXJjRjAzR3E2a1FZQ1pNMmRPTkxOVndNR1NtcnU2dXJabSszWjFkWTNLbVpsdERyOC9sNVVORGc2ZUZ6NzJUWm8wcWVqQmZnUnBabVp0MGx3TEtpSEFuL1A3SktUVENHNHN6aWhpZDJIYzdPMHk0OC82ZlNtc2dGL3dQTy9jZ1lHQnY4UmlzVE5EOVhzQTZYUjZxdU00aHdMNHZ2K0c1M21iZ1ZlQXZ6cU9zNnF6cy9PWlVmaDdUTkk4NE55NnVycXZtdG1yanVPMFNrTFM4bEozZWdXUFVhMW1Ed0hyQUFUUFp1V1MxQlk0ZXBiaWhLMCtDZUxsQnA5RlgxL2ZrOER6QklYZ2lWZ3N0aHU0SS9UYkM3Qmt5WklYek93U2dud2o0RFBBdDRBVzMvZWY5anp2N25MOVRaa3laUzJ3SHFoMEhPY3gxM1hma0hRbThGb21rMmtwTmJib2RiZmdFUUEzWEdrSnFYbytQR2h3SjhVUCtvOEEzeXUxcmNqQzkvM1ZrbTRDZmcvQjVyYWlvdUpDU1czQWc1SldtZGs5d05YUmFQUzdFUHhvd0xWQWxhU3JhMnBxb3BsTTVoZ3ptMGV3bDV6ZDJOaDRUQ2FUMlJ2YW5wUGo3MWVoN0ZHQWVEenVWMVpXZnQzTTVwblpNak5iS2FuRmRkM1RseXhaOGo4N2doSGNGTXVkYlpKbmtJaWJIWm1RamlKNFhVOHBZbWVYNExZallVRzlXWDRKMzIrb3I2Ly92cVRmQVBjbms4a3JjM1dlNTcwTW5PQTR6cm1kbloxUGpWY01VT0pxeUlLSzlXalkzQUhjU25CVmRCTEJ6VWNmd1FGM0hiQ2kxV3ozZUFZS0lPa3JBR2EyTFZmdWVkNDBnbTJPdWE3NzBuakhVZXJtdGxyQm5veDRzQi9yQ1Q4ZkpiWUJTR3BzYUdpWVlHYi9KTGhjdUJhb0JKWXZYcno0blZJRzlnZEtrUll4K01ONEJ6QWFEQTBOM1IyTlJyOURjRTArTTBkbGtucWkwV2pkaHhGSDBaeDJxM1RzTFdabG4rVStMRnh4eFJYdXhJa1R2eVRwT0RNN0V0Z3VhWDFYVjlkKytadXhIQlFsN1FDSzQyUDdEL3Q0NGorSXdULzFUTWt6N2dBQUFBQkpSVTVFcmtKZ2dnPT0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJGSURPXzJfMCIsIkZJRE9fMl8xIiwiRklET18yXzFfUFJFIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJjcmVkQmxvYiIsImxhcmdlQmxvYktleSIsImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6IjBmMDBjYzIyNDY0MDQxZTc5NTg1Mzg0ZWM3M2ZmZTliIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6dHJ1ZSwidXAiOnRydWUsInV2Ijp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibGFyZ2VCbG9icyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImFsd2F5c1V2Ijp0cnVlfSwibWF4TXNnU2l6ZSI6MTAyNCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMSwyXSwidHJhbnNwb3J0cyI6WyJuZmMiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fV0sIm1heFNlcmlhbGl6ZWRMYXJnZUJsb2JBcnJheSI6MjA0OCwibWluUElOTGVuZ3RoIjo0LCJmaXJtd2FyZVZlcnNpb24iOjI1MDcsIm1heENyZWRCbG9iTGVuZ3RoIjoxMjgsInByZWZlcnJlZFBsYXRmb3JtVXZBdHRlbXB0cyI6MywidXZNb2RhbGl0eSI6MiwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjUwfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjYtMDEtMTYiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MjUwNywiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJUYWdsaW8gQ1RBUDIuMSBCSU8iLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI2MDExNjAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUHJvZmlsZXMiOlsiY29uc3VtZXIiXSwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNi0wMS0xNiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyNTA3fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI2LTAxLTI2In0seyJhYWd1aWQiOiJmZjRkYWM0NS1lZGU4LTRlYzItYWNlZC1jZjY2MTAzZjQzMzUiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6ImZmNGRhYzQ1LWVkZTgtNGVjMi1hY2VkLWNmNjYxMDNmNDMzNSIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IDUgU2VyaWVzIn0sImRlc2NyaXB0aW9uIjoiWXViaUtleSA1IFNlcmllcyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzYsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfSx7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDM4NHIxX2VjZHNhX3NoYTM4NF9yYXciLCJlZDI1NTE5X2VkZHNhX3NoYTUxMl9yYXciLCJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURTakNDQWpLZ0F3SUJBZ0lVUjM4bXEyNlNmMnN6VlYyQmRHNldFTjdrdVdVd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVJZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU5ZMFdiOW9Qb1JvS29ReVdQYUpwejExdnJXVGc2elR0bU5qMlZvS1JueXZLR1JxcHpiODN3NWw2WUE5NlVZa1lCRFFQMGlsTzJEUGU2d1dxVlI1ekRmUnpkY0g4YmgrTDdkR0d2YWU2aFJUWmhrRmtDcFhEczRIY2NrbnJEZjhGQ2xKN0hlMzlKZjQyL0cxUW0yeno5V1dtclBYdGdpSy94MDVHanNRZkd1REcxemY1UVRVVWllOGx3eW1LM1RmZE92TmVlSkFBUGUycG43SXRmUmIrclZyTldpRHpsUm4ydk5uWjJ3UG80d0gvV0o2ZGhYWkcrck1XVCthNkJvY2cxVWZJdzZrZHVuRzRiVHBaenN2YWNGWXlSMG1wZitEZU9ucFNXQW15d0pXSHZUbGYyWVh4RnllWGNUQUNkUWxjTU5HSjJWaFpRNDh4dFA1L1JCUC84a0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ2h5NDJva2lxY1RTMWlxYS9IUldqa0JuNEgvTUI4R0ExVWRJd1FZTUJhQUZPcTNRcENlREh0a2V0dFVmQU82ZkU2ZjJLRmhNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUFuK1JISVBidE1FRE5kVDFnOEgvUml0QWtVZExnQXQxdFdHV25sajlrbmJ2NC80R2xYN0M5cDQ1ZWZQTzkvYVpMNk9WMVhSS0JpNkttdEJXNUs3bnVZRW5NeC81QnFCU2JMVDdyaGR1QzQ5VEJlTWI5UEhkWHNUbFNWTlllZnIxZEdpZHI0ajB4VkJRTGIxcmtuREFiZFdEektmdm5heUtPOEZyd2U3SHg4NDNNRy9ySitjMFhydVV2YmZWVENITGlJV2hNN29ORGhMOHhvYjZ4VW85S0xLY1NMK0l0WXNPMy85V2I4UTlHanNxTDRGWHNEY0cxU2FZaDdLcGZ1TW1PaXhxekpaTzJuSWljUFlSZzFJMlN1aVVmWU83MHRtZEhjYmwra1NRbVNZdDdycTR2aUlMZzJHeDNqOXJJVHVXVGpiYVVhU1NReGdPbU1TSHV5ek1BQyIsIk1JSURTakNDQWpLZ0F3SUJBZ0lVVG5iYkdJUjJOSHZ6cUlLRkFlUXdHMVhCaXMwd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JCSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVFZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU9zWGozazA0QmFuNFRZZHRaS3FEL09QSnh5RHlhUG1DQlVGVWlhWklnVHRlWm5qM1gyNURoZ3BaWlhzQzREMHlkSWNybEE2d05VSW5PUkwvTDl6QmJURUlNQVZNR282ZzdVS0FtYjJNRjZBSGJuaFlKZDllaWt1cFZOV1NoSE5ZTmM0R0JkTzFZTjZBZlVxdkpoSGJlM1Y0U05NUG1CUkVLSlBWejdUaHdnbWdnVGU4V3MySzAvd3NxdjJ3U0U3cGJDQnNVWmhJWDUxYlpNM3BxRHdKUFRtUkZFdnQwLzZ0RzVlTzhGM2oxNE9YcWZFaG1qbjFWdnhLRFlRT0xaQXhDd3dnQzBQNENkZld2M3k4UFNSOEkzNTRoTzFZK0d6Tmp2SXFYMzhOS0x5d3VJWUhGZXJPeE5seEVNQnZGaFlCdVJ1WUFra2dVYVBxTjZVQmhzSUxyc0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ0NvUkhoaXlObmJuWFJXSUw2WkJYb0JYOVlUTUI4R0ExVWRJd1FZTUJhQUZDQW9VQ0VicEZwYjZGUExuWjNGNVB4c0wzb2ZNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUNRRmFmSkkxLzVXZzlDRUVpbUUxUlA1NFJnUXdUTlRPT1FzTEFDVGUrckl0bEZRekM5WkRoclY4Mjh5WDdqenkrQUFzcDNpeks3VDF0aDJkbDdtK3R1MHN3MlBhL29sYzAybnQ2UHlJdzM0OGdhSHpoSTErMEtFNDVxeHZGRGVMMmxNeGJQZkNZdnlFRWFZemppUUVMVTU5NTFwWEdXeUtNYS80Zkx0TytaS09YaE11VmVxNHJYRFBJNTRXNkpIT2lBYWlLZGl3KzVlM2Mya3QvakZJUXRNNnZNWGc5TE5GemRqRVROdDIwVlg5UWV2UnBGWmZ1Y01HOXdDYVFEb0ZsUHpwVE1KS2hQZXYvaW1KbVpZaEtmcjBsTGNlbXRxakl4TEFvcVpkT1lmSEJnNit2QWNkUEkvaWF1R3BVQXY3WCtVS05tRHdqWjJCYUg0c0x3aEIybSIsIk1JSURTRENDQWpDZ0F3SUJBZ0lVVWNtTVh6UklGT2dHVEswVGIzZ0V1Wllaa0JJd0RRWUpLb1pJaHZjTkFRRUxCUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JCSURFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURtNTU1YldZOVdXK3RPWTBySVdIbGRoK2FOYW5vQ1pDRmg3R2szWVpyUW1QVXcwaGtTRzZxWUhRdFArZlp5UzMzVkVydmcrQlFxbm11bWdOaGZ4RnJrd0VaRUxlaWRCY0M4QzRBZzRucXFpUFdwenN2STE3TmN4WWxJbkxOTEZjWlkvK2dPaU42Wk9UaWhPNS92QlpNYmo5cmlhQWNxbGlZbU5HSlBnVGNNR2FFQXlNekVNTnkybm02RXArcGpQNWFGNmdpMjF0L1VRRnN1SjFqMlJqL3luTS9TZFJ0K2VjYWw1T1lvdHhIa0ZiTDl2dnYyQTJPdjVJVFpDbHc0Yk9TOW5weXBRaW1PWjVRQVl5dG1ZYVFwV2wvcE1ZejZ6U2o4UnFrVkRORUpHcU5mVEtBMml2TFl3WDZsU3R0TVBhcGcwSjg0bDlYMHZvVk4vRnBTNFZDVkFnTUJBQUdqWmpCa01CMEdBMVVkRGdRV0JCUWdLRkFoRzZSYVcraFR5NTJkeGVUOGJDOTZIekFmQmdOVkhTTUVHREFXZ0JUUzd1OWFJbzA2YlZ3amx6M3loZFVtOFNWN2tqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQTRHQTFVZER3RUIvd1FFQXdJQmhqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFZTXpnTHJKTElyME9vdlFuQVpyUklHdWFiaUhTVUtTbWJMUldwUmtXZUF0c0NoREVIcFhjSi9iZ0ROS1lXb0hxUTh4UlVqQjRDeWVwWWV2YzNZbHJHOG83ekh4cGZWY2FvTDVTZXVKa3pIeEtuNGJUYVNwOStNdndhbW5wNjRrWk1pTmJGTGtuZlA5a1lLb1JIa01XaGVSSjFVc1AxejRTY21rQ2VJTGZzTXM2dnFvdnFqV0NsRnNKcEJjc2x1WUhXRjdiQkoxbjRSd2crQVRFb3BZNElnR3Y2WnZ3YytBOXIrQVQyaHFwb1NrWW9BbCtBTll3Z3NsT2Y5c0plMFYrVEE5WVkvVWxhQm1QUFRkMC8vcjl3dmNlUFdaa1BqS29BQy96VU5oZkRiaDRMVjhHSHMzbHlYMlhvbUwvTE5jOEpZenlJYURFaEdRdmVvUGhoL3RyMWc9PSIsIk1JSURSekNDQWpHZ0F3SUJBZ0lVZXg5blQ5dndaTlhTNDgzTGRpWUdmdzJTalNvd0N3WUpLb1pJaHZjTkFRRUxNQzR4TERBcUJnTlZCQU1NSTFsMVltbGpieUJCZEhSbGMzUmhkR2x2YmlCSmJuUmxjbTFsWkdsaGRHVWdRaUF4TUNBWERUSTFNRGd3TVRBd01EQXdNRm9ZRHprNU9Ua3hNak14TWpNMU9UVTVXakFuTVNVd0l3WURWUVFEREJ4WmRXSnBZMjhnUmtsRVR5QkJkSFJsYzNSaGRHbHZiaUJDTWlBeE1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBdTFNZXZueTlkeU85WlVDMzlTb01oTGNSL0RYcnRGL2NpTTEydGNpeTJFWEFaNk1rcml2VnRDZkVWTTlYNklTVEVuQlA2dVNZWW92NnBwdjZPNkpoMk5IbVltNHcrSm5TNFZuQ1BVN21IQU1mVkkyTUdUVE1WT2V3MHhVc0c3c0lTSWtJRFVCbXVrOFlLOWM1emljOSt2RlFHTElrc2RYTzVpVkZJZ05HNTNjR1hENFpMWm9BUGl1MFBFb3p4QXFZSWFJNGd4S2hPQTNTOC9XOG1JV3N1Nm9meWo0R3ZrRkc2WjdreUYzMTA3UDdtd0ZITHJJM0VOYVBXTU9GY1RhR2EwZHcrL3ZWUndqUmNFWkJWc3V1VC84N2NrU3MwYTVwa3QzdlpCbGFZZVQ4cHpTcmVWN21vd2NJTTkwTDJpYUFUbFAwbnhtYUU2bk95VGJvakZWbDJ3SURBUUFCbzJZd1pEQWRCZ05WSFE0RUZnUVVTWEVoM3NhM2J0RHVybTRNTS9DN1MxbFJ1dVl3SHdZRFZSMGpCQmd3Rm9BVTZyZENrSjRNZTJSNjIxUjhBN3A4VHAvWW9XRXdFZ1lEVlIwVEFRSC9CQWd3QmdFQi93SUJBREFPQmdOVkhROEJBZjhFQkFNQ0FZWXdDd1lKS29aSWh2Y05BUUVMQTRJQkFRQjVHYzNoYWZ0cDdoS3NFWnNvK2kvWjVuUnVxZG16RzJXQ2xVb1JVcWJhUHlnbG5KRGpLUi9rZmdPbDZpYmJGL3p0aG0zS21YUTdIY0RJUDJ4TWRHN1UyTDJpbWJKUUhxUGYvaDJIcW9qYjRyWmd1ZSs2VzRrdFNSNWVsUjlMMXJZcUUvU0dZTTRpRUtvVlFTdjdSVDFyeEllV2lLc3cvVnh4aS9RT25zeDNGN3g4MENDWWdCNEUzeVF4OFZUVzQ0MGhURXdUQTFlTUhPaXgzMnRQdHl5SElhOFBWVklmVnBIUUpCYU1WdnY1MDhVRWp3a2JVMnJuamZ6b1NUTlM5QTVqVVE4bUJTdmU5NXJqQjBkbzk4RVUrRHhkQnFYMitINmk1d2xJQ0ZnemhkemNzbmU5aEdLVDZselRYNGNJZEpzclkyK3hsZUswRkZReTZsR0VWTEVlIiwiTUlJRFNEQ0NBakNnQXdJQkFnSVVEcUVSdys0Um5HU2dneGdVZXdKRkVQRFJaM1l3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRREk3WG5IK1p2RHdNQ1FVOE04WmVWNXFzY3VibHZWWWFhUnQzWWJheG45Z29kTHg1c3dIMGxYcmRnamg1aDdGcFZnQ2dZWVg3RTRibDF2YnpVTGVtck1XVDhOM1dNR1VlOFFBSmJCZWlvVjdXL0UraFRaUC8wU0tKVmEzZXdLQm82VUxlTW5mUVpEclZPUkFrOHdUTHEydjVMbGo1dk1qN0p0T290S2E5SjduSFM4a0xtelhYU2FqMFN3RVBoNU9BWlVUTlY0enMxYnZvVEFRUVdyTDQvSjlRdUt0NldDRkU1blVOaVJRY0ViVkY4bWxxSzJieDJ6Nm9rVmx0eURWTEN4WWJwVVRFTHZZMXVzUjNEVEdQVW9JQ2xPbTRjcnB3bkRSTFZIdmpZZVBHQkIvL3BFeXp4QS9nY1NjeGp3YUgxWlV3OWJuU2JIeXVyS3FiVGExS3ZqQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJUcXQwS1FuZ3g3WkhyYlZId0R1bnhPbjlpaFlUQWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQXFRYUNXTXhUR3FWVlg3U2s3a2tKbVV1ZVRTWUt1VTYrS0JCU2d3SVJubHc5SzdIZTFJcHhaMGhkd3BQTmlrS2ptY3lGZ0ZQemhJbXdISmd4eHVUOTBQdzN2WU9kY0pKTmt0RGczNVBYT2Z6U24xNWNGQXgxUk8wbVBUbUliOGRYaUVXT3B6b1h2ZHdYRE00MVphQ0RZTVQ3dzRJUXRNeXZFN3hVQlpxMmJqdEFucS9ORFVBN2JlNEg4SDNpcEMrLytOS2xVcmNVaCtqNDhLNjdXSTB1MW02RmVRdWVCQTduMDZqODI1cnFEcXNhTHM5VGI3S0FIQXc4UG1yV2FOUEcya2pLZXJ4UEVmZWNpdmxGYXdwMlJXWnZ4clZ0bjNUVjJTQnh5Q0pDa1hzTkQwNWRDRXJWSFNKSXMrQmR0VFZOWTlBd3R5UG1ueWIwdjRtU1R6dldkdz09IiwiTUlJRFBqQ0NBaWFnQXdJQkFnSVVYemVpRURKRU9UdDE0RjVuMG82WmYvYkJ3aVV3RFFZSktvWklodmNOQVFFTkJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNWjYvVHhNOHJJVCtFYW9Qdkc4MW9udE1Pby8ybVEyUkJ3SkhTMFFaY3hWYU5YdmwxMkxVaEJaNUxtaUJTY0laZDFSbngxb2Q1ODVoKy9kaEs3aEVtN0pBQUxrS0t0czFmTzUzS0dOTFp1ano1aDN3R25jcjRoeUtGMEc3NGIvVTNLOWhFNW1HTkQ2enFZY2hDUkFIZnJZTVlSREY0WUwwWDRENW5HZHh2cHBBeTZua0VtdFdtTW53TzNpMFRBdWNzcmJFNDg1SHZHTTRyMFZwZ1ZkSnB2Z1FqaVRKQ1RJcStEMzVod3RUOFFESXYrbkd2cGN5aTV3Y0lmQ2t6eUNpbUp1a2hZeTZLb3FOTUtRRWRwTmlTT3ZXeURNVE10MWJ3Q3ZFenB3OTF1K21zVXQ0cmowZWZuTzlzMFpPd2R3TVJEbkg0eGdVbDVaTHdyclBrZkMxLzBDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01COEdBMVVkSXdRWU1CYUFGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFNd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkRRVUFBNElCQVFDM0lXL3NnQjlwWjhhcEpOanh1R29YK0ZrSUxrczB3TU5yZFhML2NvVXZzcmh6c3ZsNm1lUE1yYkdKQnlKMVhucXVCNXNnY1JFTkZ4ZFFGbWEzbWlvOFVwZjFvd00xWnJlWHJKMG1BREcyQnBscWJKbnhpeVlhK1IxMXJlSUZUV2VJaE1OY1pLc0RackZBeVB1RmpDV1NRdkptTldlOW1GUllGZ05oWEpLa1hJYjVIMVhnRURsd2llZFlSTTdWb2xCTmxsZDZwUkZLbFg4dXN0Nk9UTU9lQURsMnhORjBtMUxUaFNkZXVYdkR5QzFnOStJTGZ6M1M2T0lZZ2MzaXJvUmNGRDM1NGc3cktmdTY3cUZBdzlnQzR5aTB4QlRQclk5NXJoNC9IcWFVWUNBL0w4bGRSazZIN1hrMzVEK1dWcG1xMlNoL3hUNUhpRnVoZjR3SmIwYksiXSwiaWNvbiI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsImljb25EYXJrIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwicHJvdmlkZXJMb2dvTGlnaHQiOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJwcm92aWRlckxvZ29EYXJrIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMV9QUkUiLCJGSURPXzJfMSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJsYXJnZUJsb2JLZXkiLCJjcmVkQmxvYiIsIm1pblBpbkxlbmd0aCJdLCJhYWd1aWQiOiJmZjRkYWM0NWVkZTg0ZWMyYWNlZGNmNjYxMDNmNDMzNSIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImxhcmdlQmxvYnMiOnRydWUsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjp0cnVlLCJhbHdheXNVdiI6ZmFsc2V9LCJtYXhNc2dTaXplIjoxNTM2LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjgsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4LCJ0cmFuc3BvcnRzIjpbInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi04fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotMzV9XSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5Ijo0MDk2LCJtaW5QSU5MZW5ndGgiOjQsImZpcm13YXJlVmVyc2lvbiI6MzI5NDc2LCJtYXhDcmVkQmxvYkxlbmd0aCI6MzIsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjoxLCJyZW1haW5pbmdEaXNjb3ZlcmFibGVDcmVkZW50aWFscyI6MTAwfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMTItMjIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2LCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ill1YmlLZXkgNSBTZXJpZXMiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI0MTIyMjAwNSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTEyLTIyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3Nn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wMS0xMCJ9LHsiYWFndWlkIjoiYmE4NmRjNTYtNjM1Zi00MTQxLWFlZjYtMDAyMjdiMWI5YWY2IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiJiYTg2ZGM1Ni02MzVmLTQxNDEtYWVmNi0wMDIyN2IxYjlhZjYiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiVHJ1VSBXaW5kb3dzIEF1dGhlbnRpY2F0b3IifSwiZGVzY3JpcHRpb24iOiJUcnVVIFdpbmRvd3MgQXV0aGVudGljYXRvciIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsic29mdHdhcmUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsic29mdHdhcmUiXSwiY3J5cHRvU3RyZW5ndGgiOjI1NiwiYXR0YWNobWVudEhpbnQiOlsiaW50ZXJuYWwiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNTekNDQWZLZ0F3SUJBZ0lVVzNYSzh5eXdiQVdsaWdsaXhJRjYzZHZxWXk4d0NnWUlLb1pJemowRUF3SXdmREVMTUFrR0ExVUVCaE1DVlZNeEVUQVBCZ05WQkFnTUNFTnZiRzl5WVdSdk1ROHdEUVlEVlFRSERBWkVaVzUyWlhJeEV6QVJCZ05WQkFvTUNsUnlkVlVzSUVsdVl5NHhJakFnQmdOVkJBc01HVUYxZEdobGJuUnBZMkYwYjNJZ1FYUjBaWE4wWVhScGIyNHhFREFPQmdOVkJBTU1CM1J5ZFhVdVlXa3dJQmNOTWpNeE1UQXpNakF6TmpVeFdoZ1BNakExTXpFd01qWXlNRE0yTlRGYU1Id3hDekFKQmdOVkJBWVRBbFZUTVJFd0R3WURWUVFJREFoRGIyeHZjbUZrYnpFUE1BMEdBMVVFQnd3R1JHVnVkbVZ5TVJNd0VRWURWUVFLREFwVWNuVlZMQ0JKYm1NdU1TSXdJQVlEVlFRTERCbEJkWFJvWlc1MGFXTmhkRzl5SUVGMGRHVnpkR0YwYVc5dU1SQXdEZ1lEVlFRRERBZDBjblYxTG1GcE1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRU5BdmJ0Y2NNcjdqL1NSV21xSUVaVFJXTkp5ajZtc1lyNWxHZUFnZFNHeUM5TzAzNTZSSWVjdWFWaU9xejBEeGdTMWYvNUtQYlpwMXQweUQyZlZSWDk2TlFNRTR3SFFZRFZSME9CQllFRkE1dEwxMGc4OHQycVhsUGxoSVNJMmRJemxhVk1COEdBMVVkSXdRWU1CYUFGQTV0TDEwZzg4dDJxWGxQbGhJU0kyZEl6bGFWTUF3R0ExVWRFd0VCL3dRQ01BQXdDZ1lJS29aSXpqMEVBd0lEUndBd1JBSWdYZnV2anNwKzR2NWlHT3FuZ1VnT2cxaG1iZ0ZQRk1nSWp5V3hDS3F3L2Q4Q0lGaW1MTlhMREl3QStvSWJQMXlPZnFFOHhrNnE3LzRMV09WWWtSQUxvQkMyIl0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQkFBQUFBUUFDQVlBQUFCL0hTdURBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFGMEtTVVJCVkhnQjdOMTlqSjdsZlNmNkMyemlBWTlqeHVBWkQyYWhZQ2Zubk9pa29FUTVTdVZJU2M3bWxLcE5sUXJuanpSVWNjNXFTVnV6bFRad0NsbXBNUTMwYUJPekJhMVdIZ281MnRXTU5qUTYwbGlORHBGS1RycHRWcG0yMmlvUkpOTFpzNGtkVW1Md3ZOZ2VnMmNjRHk5bW45OWpoaGpqbDNsNW51ZStyL3Y2ZktSWjAwMUtzWm01bi92NlhyK1h5ejd3MFY5L1BRRUFBQUNOZG5rQ0FBQUFHazhBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVlltNERLZmVhYUkybFg2d3NBb0VubVRsK2V4bWMzcGYydHIvaHJvRnFYZmVDanYvNTZBaXEzNVlwWDJrSEFiZTk4TVFFQTVPNnBGemVtc1dQWHBzbFhya2hBUFFnQW9HYTJyMXRJWDdydVVEc1FBQURJemRNbnIwcGpSNjlOei96OHFnVFVpd0FBYWlvcUFhSWlRQkFBQU9RZ1N2eEhwb2ZTVXk5dFRFQTltUUVBTlJVZm5wR2MvMm9yQ0RBZkFBQ29LMzMra0E4VkFKQUI4d0VBZ0RxS2N2K0hwb2IxK1VNbUJBQ1FrUjNyVDZUZGc5UGFBZ0NBU2gwNDFaZEdaZ2IxK1VObXRBQkFSaWJtTjZTSlp6ZVlEd0FBVkNKSy9FZVBiazc3WndjU2tCOEJBR1JvY1Q2QXRnQUFvRmVpenorbSsrdnpoM3hwQVlETVJSWEE3czNUYVVmL2lRUUEwR25SNS8vb3pHQTZzTkNYZ0x3SkFLQWh0QVVBQUowVWcvMzJUZzdyODRjR0VRQkF3MFFJc0hQZ1dPcS8vSFFDQUZndWEvMmd1UVFBMEVEV0JnSUFLL0hVaXh2VHlNeVFnejgwbEFBQUdpeUNnRCs5L2psdEFRREFSVVdmZnd6NFUrNFB6U1lBZ0FLWUR3QUFuRS8wK2NmQlB6WU1BYzFuRFNBVUlEN1VKK2I2MCswRHMybFhLd2dBQU1xbXp4L0twQUlBQ21NK0FBQ1VMUzRGb3M4L2J2K0JzZ2dBb0ZDM1hIa3kzYnZsc0xZQUFDaUVQbjlBQUFDRk14OEFBSm90U3Z4SGoyNU8rMmNIRWxBMk13Q2djREVmSUc0Q2JyOTZOdTBjT0pZQWdPWVliZDM0Ni9NSEZxa0FBTjVrUGdBQU5FT1UrejgwTmF6UEgzZ0xGUURBbStJbFllL2tjSHFtOWRLZ0xRQUE4dlBtWjdrK2YrQThWQUFBRjdUejZ0bDArOEF4UVFBQTFOemlXcjhZOGdkd0lTb0FnQXNhUHo2UUp1Yjd0UVVBUUkwdEh2ejErUU9Yb2dJQVdKS29BdmpEb2NQcDFxdE9KZ0NnZXRiNkFjc2xBQUNXeGRwQUFLaFc5UG1QVEErMXEvUUFsa01BQUt4SWhBQ3hOckQvOHRNSkFPaSt4VDUvYS8yQWxSSUFBQ3RtYlNBQTlNWlRMMjVNWThldXRkWVBXQlVCQUxCcUVRVDg2ZlhQYVFzQWdBN1Q1dzkwa2dBQTZCanpBUUNnTTZMRVAvcjhuM3BwWXdMb0ZHc0FnWTZKbDVTSnVmNTArOEJzMnRVS0FnQ0E1ZEhuRDNTVENnQ2dLOHdIQUlEbGlYTC9oNmFHOWZrRFhTTUFBTHBxeC9vVGFmZmd0TFlBQUxpQUE2ZjYwc2pNb0Q1L29PdTBBQUJkTlRHL0lVMDh1OEY4QUFBNFI1VDRqeDdkblBiUERpU0FYaEFBQUQwUjh3SGlaa05iQUFDa2RwOS9UUGZYNXcvMGtoWUFvT2VpQ21EMzV1bTBvLzlFQW9DU1JKLy9vek9ENmNCQ1h3TG9OUUVBVUJsdEFRQ1VJZ2I3N1owYzF1Y1BWRW9BQUZSdXNTMUFFQUJBMDFqckI5U0pBQUNvQldzREFXaWFwMTdjbUVabWhoejhnZG9RQUFDMUVrSEFsNjQ3bExhdlcwZ0FrS1BvODQ4QmY4cjlnYm9SQUFDMVpENEFBTG1KUHY4NCtNZm1HNEE2RWdBQXRSWWh3SzdXRndEVWxUNS9JQmNDQUtEMnpBY0FvSzRtNXZyYmZmNXgrdzlRZHdJQUlCc3hGeURtQTJnTEFLQnErdnlCSEFrQWdPeVlEd0JBVmFMRWYvVG81clIvZGlBQjVHWnRBc2hNREZlS0c1ZGZiUVVCNWdNQTBDdWpyUnQvZmY1QXpsUUFBRmt6SHdDQWJvdHkvNGVtaHZYNUE5bFRBUUJrTFY3RzlrNE9wMmRhTDJmYUFnRG9wRGMvWS9UNUF3MmhBZ0JvRlBNQkFGaXR4YlYrTWVRUG9FbFVBQUNOc2pnZlFGc0FBQ3V4ZVBEWDV3ODBrUW9Bb0xHaUNtRDM1dW0wby85RUFvQ0xzZFlQS0lFQUFHZzhiUUVBWEVqMCtZOU1ENldKK2Y0RTBIUUNBS0FZRVFMc0hEaVcraTgvblFBbzIyS2Z2N1YrUUVrRUFFQlJyQTBFNEtrWE42YXhZOWRhNndjVVJ3QUFGQ21DZ0QrOS9qbHRBUUFGMGVjUGxFNEFBQlROZkFDQTVvc1MvK2p6ajAweEFDV3pCaEFvV3J3TVRzejFwOXNIWnRPdVZoQUFRSFBvOHdkNEt4VUFBRzh3SHdDZ09hTGMvNkdwWVgzK0FHY1JBQUNjNDVZclQ2Wjd0eHpXRmdDUW9Uanc3NTBjMXVjUGNCNENBSUFMTUI4QUlCOVI0ajk2ZEhQYVB6dVFBRGcvTXdBQUxpRG1BOFFOMHUxWHo2YWRBOGNTQVBVVWZmNHgzVitmUDhERnFRQUFXQUx6QVFEcUovcjhINTBaVEFjVytoSUFsNllDQUdBSjN1d3BiYjFzYWdzQXFKWStmNENWVVFFQXNBSTdyNTVOdHc4Y0V3UUE5SkMxZmdDcm93SUFZQVhHancra2lmbCtiUUVBUGZMVWl4dlR5TXlRZ3ovQUtxZ0FBRmlscUFMNDBuV0gwdloxQ3dtQXpvbysveGp3cDl3ZllQVUVBQUFkWW0wZ1FPZEVuMzhjL0dNakN3Q2RJUUFBNkxBSUFYYTF2Z0JZUG4zK0FOMGpBQURvQW1zREFaWXZ5djBmbWhwdTMvNEQwSGtDQUlBdWlpRGdUNjkvVGxzQXdFWG84d2ZvRFFFQVFBK1lEd0R3ZGxIaVAzcDBjOW8vTzVBQTZENXJBQUY2SUlaWXhjM1dyN2FDQVBNQkFGSzd6ejl1L2ZYNUEvU09DZ0NBSGpNZkFDaVpQbitBNmdnQUFDcXlZLzJKdEh0d1dsc0FVSVE0OE8rZEhOYm5EMUFoTFFBQUZabVkzNUFtbnQxZ1BnRFFhSXRyL2FMY0g0QnFDUUFBS3JZNEgwQmJBTkEwK3Z3QjZrVUxBRUNOUkJYQTdzM1RhVWYvaVFTUUsydjlBT3BKQUFCUVE5b0NnQnhGbi8vSTlGQ2FtTzlQQU5TUEFBQ2d4aGJiQWdRQlFKMHQ5dm52YjMwcDl3ZW9Md0VBUU0xWkd3alUyVk12Ymt4ang2NjExZzhnQXdJQWdFeEVFUENsNnc2bDdlc1dFa0RWOVBrRDVFY0FBSkFaOHdHQUtrV0ovK2pSelduLzdFQUNJQzhDQUlCTVJRaXdxL1VGMEN1anJSdC9mZjRBK1JJQUFHVE1mQUNnRjZMYy82R3BZWDMrQUprVEFBQTBRTXdGaVBrQTJnS0FUb29ELzk3SllYMytBS2taQkFBQURXSStBTkFKK3Z3Qm1tbHRBcUF4bm5wcFkvdW03dmFyWjlQT2dXTUpZTG5HWnplMXAvdnI4d2RvSGhVQUFBMWxQZ0N3SE5Ibi8rak1ZRHF3MEpjQWFDWVZBQUFOOVdidmJ1dWxYbHNBY0NINi9BSEtvUUlBb0JBN3I1NU50dzhjRXdRQWJWSGlIK1grMXZvQmxFTUZBRUFoeG84UHBJbjVmbTBCUUhycXhZMXBaR2JJd1IrZ01Db0FBQW9VVlFCL09IUTQzWHJWeVFTVUkvcjhZOENmY24rQU1na0FBQXBtYlNDVUlXNzZSNmFIMnB0Q0FDaVhBQUNBZGdnUWF3UDdMeitkZ09iUTV3L0EyUVFBQUxSWkd3ak5FdVgrRDAwTnQ2ZjhBMEFRQUFEd0ZoRUUvT24xejJrTGdFd2RPTldYUm1ZRzlma0Q4RFlDQUFET3kzd0F5RXVVK0k4ZTNaejJ6dzRrQURnZmF3QUJPSzhZRmpZeDE1OXVINWhOdTFwQkFGQmYwZWNmMC8zMStRTndNU29BQUxnazh3R2dudlQ1QTdBY0FnQUFsdXlXSzArbWU3Y2MxaFlBRllzRC85N0pZWDMrQUN5TEFBQ0FaVE1mQUtxeHVOWXZ5djBCWUxuTUFBQmcyV0krUU53ODNuNzFiTm81Y0N3QjNhZlBINERWVWdFQXdLcVlEd0RkRlgzK2NmQlg3Zy9BYXFrQUFHQlYzdXhGYmgxU3RBVkE1OFRQMXNqMFVKcVk3MDhBMEFrcUFBRG9xSjFYejZiYkI0NEpBbUNGRnZ2ODk3ZStsUHNEMEVrK1ZhaWRLQ01lY25DQWJJMGZIMGozSExxaFBTY0FXSjZKdWY3MHUvOTRrMTUveUZpOHgycUxvNjU4c2xBN1VmTDQrSTAvVGJ1dU9aS0FQQzIyQmR6eDdMWjBZR0ZkQWk0dSt2enYvdGtOYWM4TDE3ZC9mb0Q4ckwvOGRQdjk5ZkVibnpXemc5cGFzL1dtZC8xeGdocVpldldLdEduTmErbTNOeDF0cDZmenA5ZWtnd3Q5Q2NqUFhPdm45OGtYQjlKVTYwQ3piZDFDNmw5ek9nRy9FTGY4WHoweW1QN3Q5SmIyNXgrUXB4M3I1OUlEV3crbEhmMXo2YTlmZXFjcU9HckxEQUJxcWYveTE5TFhiajdZK3ZYTVlTRktJdmZORExVUEVVQytZa2lnNmg0NFkvVG90ZnI4SVhPM1hIVXk3ZHAwcFAxcmlBcWVhSU5UeVVOZHFRQ2dsbDUrL2ZMMGpzdGVUN2UrOFRDOTRSMHZwNTBEczJuTDJsZlNnWmY3MmxVQlFINmlKUEpiclZ1UnFBVFl2bTRoUVltaTNEOE9DQk56RzFxZmQ1Y2xJRDlSN3YrNWEyZlN2eHlhZk12UTI5RmptOU0veks5UFVGY3FBS2kxcjkxMDhHMlR4Q05SamVGSVNxc2dieEVBZk9tNlE3WUZVSXczVjJicURZYXNSU1ZiYkx0WnJGUmRGRC9qTWZzRzZrd0FRSzNkY3VYSjlQQS9lZTY4LzFsN1AvTE1ZUHNHQmNoWHpQcUkxZ0JCQUUwVkpmNmpSemVuL2JNRENjaFhsUG5mTzNUNGdwOVhFZkM1b0tMdXRBQlFhekVRNmRaV0NIQytCMjJVRUg5MHd3bHRBWkM1R1BMNXQvTWIyZ01ERjl0K29DbkdaemVsKzErNDNxMC9aQ3pXK2oxNDNmUHRtLzhMRGJOOTZzV05hZXpZdFFucVRnVUF0UmVILzJnRnVKUm9DL2pMVnVwcVVDRGtLMzdlb3hyQS9tUnlGMzMrajg0TXBnTzIyRUMyb3MvL3MyK1UrMTlLbFA0Yi9FY09WQUJRZTNFckdEMVc3N255NXhmOTcwVlpWcXhlc1RZUThoVS83OUhXYy9EVXV2US9YWG5LMmtDeUV3ZUFQYTBiLzdnSlBQYmEyZ1RrYVdmcjBCOXIvVzVaUW1WYVZQcjg5WWwzSnNpQkNnQ3ljTzVhd0VzNTh3SzJWUkFBbVRNZmdGeEVuMzhjQXF6MWc3ekZnWC8zdGROcGU5K3BKZjMzcmYwak55b0F5RUtzQlh5bDlVTDFnZlh6Uy9ydng2M2hiMTU5M0h3QXlOemlmQUJyQTZtejZQMzlWOC9ma1A3aDVIcHIvU0JUWi9mNWIxcjc2cEwvOTBabWhzejRJQ3NxQU1qSzR6YyttN2F0NEJBUTh3RkdqeHJNQWptTEtvRGRtNmZUanY0VENlb2crdnpqODhYTFArUXIrdncvT1hEc3ZHdjlMc1hhUDNJa0FDQXJGMXNMZUNueGtJNFhOZXRaSUcvYUFxaGFsUGlQVEEvNVBJSE14ZWZKN3NHcFpSLzhGOTM5c3hzRWdHUkhBRUIySHI3K3VTVU5aTG1RQXd2cjJnT2FiQXVBdkMxdUN4QUUwQ3Y2L0tFWjRqMXkxNllqcTNxZmpOYWZ2VlBEQ1hJakFDQTc4YkwvMkkzUHJqaXRYUlFQN3RGajF3b0NJR1BXQnRJclVlNy9VT3RsMzZBdnlGZVUrOS9WdXZIdnhHZUd0WC9reWhCQXNoTnJ3dDV4MmV2cDFsV2t0bUY3MzBKN2JlQmxsMTJXL3V1cEt4T1FuOFcxZ2Q5NmFXUDdKbWZUMnRjU2ROS0JVMzNwVHc1ZjExN3JOMmVnTEdRcER2NmYzblEwL2RGMXo2ZjNMSEc2LzhYRVhLbjQ3SUVjcVFBZ1M4dGRDM2dwNWdOQU01Z1BRS2RFaWYvbzBjMXAvK3hBQXZJVjRmQzlRNGM3OXJrUTc0eS8rNDgzYVFNaVd5b0F5RktzQlp4OWRXMzdCcjhUWXNWWS9MMnNEWVM4eGRyQS9jYzN0Zjk2dFZWQ2xDdjYvTzkvNFhyRHZTQmoyOWFkU2w4Y2ZxRzkxaS9lOHpvbDF2NnBIQ1ZuS2dESTJtb0hBbDZJK1FDUVAvTUJXQzU5L3BDL0tQZi9iT3ZaSDJ2OU9zM2FQNXBBQUVEV1ZyTVc4RkswQlVBemJGKzNrTDUwM1NGdEFWeFFQTy8zVGc2NzhZZk03V3dkK2lQNDdWU0w2TGtNL3FNSnRBQ1F0YWxYcjJpLzFNY0xmcWN0dGdYRTdlSEJsL3RVQTBDbWpyMjJ0dDBXRUQvRDIxclBpazZXZ3BLMzZPSDk4MlBYdE12OTQvTUV5Rk5VZzBaVjZFYzNuR2dQaXU2R3FBNTFLVVFUcUFBZ2U1MWFDM2dwMmdJZ2YvRzh1UDNxMmZZdEVXV0xQditvOGpMSUMvSTExSHFtM3pkMHVDdnRvR2VMNTBRTS9uUDdUeE9vQUNCN25Wb0xlQ214Tm5EbndHeTZMSjBaTlBieTY1Y2xJQy94dlBpSGsrdmJhd09qRXFBYjFVUFVXL1Q1UjduL2t5OWU3VGtPbVZwYzYvZkFkYy8zcEwwcktvV3MvYU1wVkFEUUNMRVc4TEViZjlxekhsL3pBYUFackEwc1J6eTNSNmFIMHNSOGZ3THkxZTArLzNNWi9FZlRDQUJvakIzclQ2UUh0ajZmZWlrK0ZPNCtkSU8yQU1qY3pxdG4yeE9qQlFITkU2VzdVZTYvdi9XbDNCL3lGV1grdXpZZDZYcTUvN21pWXNpRkQwMGlBS0JSdXJVVzhGTE1CNEQ4V1J2WVBCTnovZTJkM2ZwMklWL1I1My9YNXFuMllPWmUrMjdyR1JKRFFxRkpCQUEwU2pmWEFsNUs5QmJ2bngxSW8wZXZUVUMrSWdqNHc2SERYWjhyUXZkRW4zKzBhVm5yQi9tS1B2OVBEaHhyVjJmMXF0ei9YTmIrMFVTR0FOSW9zY1lwUGlUZWMrWFBVNi9GSU1Lb1BvamJ3L2xXR0JDREFvSDhSSmdYUXdLdERjeFBsUGgvOWNoZytyZlRXNnoxZzR6dFdEK1hIdGg2cUgzcjM2MjFmcGRpN1I5TnBRS0F4b21CZ0YrNytXQmxhZkdpWjFvM1VGK1pHdFlXQUptTHRvQ2RGZDVBc1RSUmZhWFBIL0pXVlovL3VlTFcvNTVETjdqOXA1RlVBTkE0TDc5K2VVL1dBbDVLbEJISDJzQXRhMTlKQjE3dWExY0ZBUG1KTXZLL09mRk9hd05yS3NyOTQwVTlWblJaNndkNWluTC96MTA3ay83bDBHUXRockhHN0JBdFJEU1ZDZ0FhNjJzM0hhek5STzlJa1BjZjM1VEdad2NTa0s5NHB2enA5Yy9aRmxBRDhWeU42ZHhlMGlGdnU2NDVVbW1mLzdtcy9hUHBWQURRV05HRGY5dkdla3p6anB2REQ2eWZOeDhBTXRjZTl0a0s4OHdIcU01aW4vLy9lZmc2ZmY2UXNTanpqKzFOVmZiNW4wL2MvbnRQbzhrRUFEUld2QmplZXVYSld0M1V4V0VoUHVpMEJVRGU0dVV3QmdWR3k1RnRBYjB6UHJ1cHZaTExyVC9rSzliNlBYamQ4KzJiLzdxRnFESDRiK3lZYlU0MG14WUFHaTBPLzlFS1VGZlJFakQreG0waWtLZDR6c1Nnd0tqd29UdWl6Ly9SbWNGMHdLMGNaQ3Y2L0QvN1JybC9YVm43UndsVUFOQm9VYTViMVZyQXBYalBsYWZhRlFIYUFpQmY4WnlKQVhTeCtTTktXclVGZEU2OGlPOXAzZmpIamR5eDE5WW1JRSt4U1NYVytsVTkzZjlpb3NMb3IwKzhNMEhUcVFDZzhlcXlGdkJTenJ6b2JoVUVRT2FpRWlBcUFnd0tYTG5vODQrWGNXdjlJRzl4NE45OTdYVGEzbmNxMVptMWY1UkVCUUNORnoyNnI3UmVJR01JWDUzRnJlRnZYbjNjZkFESVhJUjRmenUvd2RyQUZZb2UzSC8xL0EzcEgwNnV0OVlQTW5WMm4vK210YSttdXJQMmo1S29BS0FZajkvNGJIdHFkeTdHamw2YlJvOGFSQU01TXg5ZzZhTFBQNTU3WHNJaFg5SG4vOG1CWTdWYTYzY3AxdjVSR2dFQXhiamx5cFBwNFgveVhNcEpmQ2pGQy9GVEwyMU1RTDYwQlZ4WWxQaVBUQTk1emtIbTRqbTNlM0FxbTRQL29zLzk0eTlwdjZRb0FnQ0tFdnRtNnp5QTVrSU9MS3hyRDhLeUxRRHl0dlBxMmZiTm1DQkFuejgwUmJ4WDdkcDBKTXYzcTJnNTJqczFuS0FrQWdDS0VpL2RqOTM0YkhicDlLTDRvQm85ZHEwZ0FES21MZUJNdWY5RHJaZHVBN2NnWDlIbnZ5dnpaNW0xZjVUSUVFQ0tFdXU2M25IWjYrbldERlBxc0wxdm9iMDJjTU9hMC9wa0lWT0xhd08vOWRMRzlvM1pwcld2cFZJY09OV1gvdVR3ZGUyMWZuTUduVUtXb3MvLzA1dU9wbnUzSEU3dnFmbDAvNHVKT1V2eExJYlNxQUNnT0xtc0Jid1U4d0dnR1VxWUR4QWwvcU5ITjZmOXN3TUp5RmVFbHZjT0hjNytlV1h3SHlWVEFVQnhZaTNnN0t0cjJ6ZnBPWXNWWS9GNzJMN3VWUHIvVGwxcGJTQmtLb1pQN1QrK3FmM1h1VlluWFV6MCtkLy93dldxbGlCamNmQy9yM1h3ajVML2VQL0lYYXo5TS9pUFVxa0FvRmk1RGdTOEVQTUJJSDlObWcrZ3p4L3lGK1grbjIwOWsySjRhVk5FSzlMdlB2ZExDVW9sQUtCWU9hNEZ2QlJ0QWRBTTI5Y3RwQzlkZHlqTE10dDREdTJkSEhiakQ1bmI5Y2JCUC9lV3lYTVovRWZwdEFCUXJLbFhyMmkvWE1lTGRsTXN0Z1hFN1dIOC9uNzI4cm9FNU9mWWEydmJiUUZSMGJPdDlZektvZVEyK3Z6Ly9OZzE2YUhKNjlMUFhubEhBdklVMVpGUkpSbnZFekU0dVVtaVd0SWxDYVZUQVVEUm1qSVE4RUswQlVEK0lxajgxVmFvRjdkeGRSVjkvbEY5RkNFQWtLZFk2eGQ5L2sxcWp6eGIzUHJmYytnR3QvOFVUd1VBUll1QmdEbXZCYnlVV0J1NGMyQTJYZGI2NjhsWHJ6QW9FRElVNi9LaW5EN1dCa1lsUUoycWxxTFBQOHI5bjN6eDZ0Yno5TElFNUdkeHJkOEQxejNmNkcwazQ4YzNXZnNIU1FVQXRLc0FIcnZ4cDQzKzBBdm1BMEF6N0ZoL0l1MGVuSzcwbWVWNUFzMndjK0JZZS9Cb1V5c2hGMW43Qjc4Z0FJRFV6SUdBRnhJZmdudGUyR3I5RFdRdVpuM0VpM3N2ZzRBbzhZOXkvLzJ0TCtYK2tLOG84OSsxNlVoankvM1BGWlZLQWtzNFF3c0FwRE1EQVc5dGhRQk5yd0lJVVVMOG0xY2ZUMXZXdnBJT3ZOeW5MUUF5RlNIZTM4NXY2Rmxid01SY2Y3ci9oZXZiSmJUSy9TRlA3VDcvTFlmVG5kZk9GUEhPRTc3YmVuYjlYMGNHRTNDR0NnQjRRMGxWQUdlTE10N1IxaGVRcjNpUjM3MTVPdTNvUDVFNkxmcjg0emxoclIva0svcjhQemx3ckpGci9TN0Yyajk0S3hVQThJYW9Bb2dQeGZkYytmTlVraWovaTFMaXFBVFFGZ0I1aWtHQmYzM2luUjFkR3hnbC9sOXQzWnI5MitrdDdlY2prS2Y0alArajRSY2F1ZGJ2VXF6OWc3ZFRBUUJuYWZwYXdFczVzTEF1N1huaGVtc0RJWE14RzJEbkttNzZvaXBJbnova3JiUSsvM05aK3dmbnB3SUF6dEwwdFlDWHNtbnRhKzIxZ2VZRFFONmlYUDl2VHJ4ejJmTUJvdHcvWHBqMStVTytvdHovODBPVDZhN04wOFgwK1ovUHlNeVExaVU0RHhVQWNCNWZ1K2xnMFIrYUlSTHovY2MzcGZIWmdRVGtLNTVsZjNyOWN4ZDlwc1hQZTB6SjlySU0rU3E1ei85YzF2N0JoUWtBNER4S0hRaDRQdlo5UXpPY2IyMWdsUGlQSHQyYzlndjZJR3RSNW4vdjBPSGlMeThXN1huKytqUXgzNStBdDlNQ0FPZFIwbHJBUzRrUzRoZ2NwQzBBOGhaRFBxT3FKMFNiMC9qc3B2WmFQN2Yra0s5dDYwNmxMdzYva0hhMXdyMU9EUDlzZ2hqODkvWFpheEp3ZmlvQTRBTGk4Qit0QUx4VnRBU010dzRSQmdWQ3ZxSTgySUEveUZlVSszKzJkZWlQY24vZXl0by91RGdWQUhBQmMyL2NkSmM2RVBCQzNuUGxxWFpGZ0xXQmtDOEQvaUJmc2VIamdhMkhpcDN1ZnpHeHdTU0dtQUlYSnY2SGk0aStXTGRrYnhmVkVmZHVPZHl1a1BBQ0FnRGRGNSszajkzdzA3Ujc4M1R4US83T0oyNzl2MlZlRVZ5U0NnQzRpRmdMK0VvckFQakErdm5FMjBXL1lRd1dNeDhBQUxwanFCVzZQM2pkOCswKy8wMXJYMDJjbjdWL3NEU3VOdUVTeG84UHBHZE8ra0M1bU5zMnZwaWV1T25nbVNGRWJpVUFZTldpeno4K1Z4Ky84Vm5WZHBjUXQvKzJGY0hTQ0FCZ0NhS25qRXVMRldPUHRWNVVvaW9BQUZpWitCeDk0dVlEN2M5VndmcWw3WGxoYXdLV1JnQUFTeEFsWlJOejlza3V4ZG56QVlhc1VRU0FKWXViL29ldmY2NzlPZXJndnpTeDlzOVFZbGk2dFFsWWt1Z3RpdzltSDhoTEUwRkF0QVhFQi9Qb3NXdXREUVNBQzRqQVBNcjlWZEF0MzlneFZacXdISVlBd2hMRldzQjNYUGE2dFlETHRMMXZJZDIyOGFXMHJ2Vm5aemdQQVB4QzlQbC9ldFBSOW8zL2UvcE9KWmJIMmo5WVBpMEFzQXl4Rm5EU1RmYXk5Vi8rV3J1UE1kb0MzRzRBUUVvNzFzKzFCL3pwODErWmVCOGJNNk1KbGswQUFNc1FWUUErYkZadWNUNUE5RGVhRHdCQWlSYjcvQi9ZZXFqOXVjaktlQitEbFJFQXdETEZtaGxyQVZjblhuNWlQc0M5UTRjRkFRQVVJY3I5NzlvODNUNzhXK3UzT2dkTzlWbjdCeXNrQUlBVnNCYXdNMjdiK0dMN1JXam53R3dDZ0thS0FYK3gxdS8yZ1dPSjFidi9zTFYvc0ZJQ0FGaUJHR1luZWU2TUtIL2N2WG5LZkFBQUdpZHUrdVB6VFo5LzU4UjJJZk9ZWU9Xc0FZUVZHcGtlVER2NlQvaEE3NURGK1FDM1hIblMya0FBc2hidGJmY05IVmJxMzJIdHdYL1cvc0dxcUFDQUZZcUJnT096bXhLZEZXMEJNUjhncWdMTUJ3QWdKNHQ5L3ZFNTV2RGZlVkY5NmZZZlZrY0FBS3RnTFdEM3hGeUFtQStnTFFDQUhPd2NPS2JQdjR1cy9ZUE9FQURBS2tRVndON0o0VVIzTExZRlJQL2t0blduRWdEVXplSmF2OTJ0bTM5dGdkM2o4QStkWVFZQXJGSU1CSXkxZ0VyOXVpZUNnTWR2L0dsNzhJLzVBQURVZ1Q3LzN2bnVYTC9oeTlBaEtnQ2dBL2JORENhNmIzRStRS3hUQW9BcVJKOS9mQTQ5ZnVPekR2ODk4dWpNVUFJNlF3QUFIWEJ3b2M5QXdCNktkVXJXQmdMUWEvRzVFMzMrMXZyMWpyVi8wRmtDQU9pUXNhUFhwTG5UZnFSNlpYRSt3R090R3hqYkFnRG9wc1UrLy9qY2NmRHZIV3Yvb1BQV2JMM3BYWCtjZ0ZWNytmWEwweXV0QU9BRDYrY1R2Yk5wN1d2dGpRRmIxcjZTRHJ6Y2wrWlByMGtBMEFsUjd2LzVvY24yYXI4dHd1YWVHNWtaYXM5YUFqckhFRURvb1BIakErMzFQMTRTZWkvbUE4UU56YmRlMnBoR1RRb0dZQlhpNFAvSjF1ZDVmS2E3OGE5RzNQNGIvQWVkcDE0Wk9zeGF3T3BFOEdJK0FBQ3JFV0Z5RFBqVDUxK3RrV21ELzZBYlZBQkFoMWtMV0wzRitRQTcraytrZlRORDFnWUNjRW5iMXAxcWwvcjcvSzVlRFA2Ym1POVBRT2RkOW9HUC92cnJDZWlvT0lER0xUVDFFQzhTbzhldUZRUUE4RFpSN3YvWjFtMS9sUHRURDNjOHU4M2tmK2dTUXdDaEMrYmVHRVIzcTF1RVd0amV0NUIyOU0rMUJ3VEd5a1lBQ0R0YmgvNEh0aDV5NjE4ak1jZG5ZbTVEQXJyRERBRG9rdjJ6QTlZQzFzaGlXMEJVWmtSckFBRGxpZ04vZkI3czNqeXR6NzlHNHRiL1d3Yi9RVmVwQUlBdXNSYXdudnJYbkU0ZjNYREMya0NBQWcyMXd1QUhyM3MrN1lvQmYyc2MvT3ZHMmovb1B0ZVQwRVd4RmpBR0FsSS9zVGJ3aWRidFQ3d0VEbG5iQ05CbzBlY2Z6L3Q0N2l2M3J5ZHIvNkEzQkFEUVpYYlMxMXVzZVhyNCt1ZXNEUVJvcU9qemYrTG1BKzNuUGZXMTU0V3RDZWcrQVFCMFdaU3lUY3haWlZOblo4OEhVQTBBMEF4eDB4OEJyejcvK290dFBZYjBRbStzVFVEWFJVOWJ2SWg0QWFtM0NBS2lQTlRhUUlCOFJaQjcxK2FwOXZZWDhqQjJUTFVrOUlvS0FPaUI2R3NibjkyVXlNUFo4d0VBeU1OaW4vL2pOejdyOEorUmFKV2NGTGhEendnQW9FZGlMYUFQdUx4RXYyaTBCWmdQQUZCdk85YlB0US8rOGR4V2JaZVBlQzhhTXlzSmVrb0FBRDB5ZDNxTkQ3a01MYzRIZUt6MVltaytBRUM5TFBiNVA3RDFVUHQ1VFY2OEYwSHZDUUNnaDJLOWpiV0FlZHErYnFIZEZuRHYwR0ZCQUVERm90ei9yczNUN2NPL3RYNTVPbkNxejlvL3FJQUFBSHJNV3NDOHhYeUFlT0hjT1RDYkFPaTk2UE9QdFg2M0R4eEw1T3YrdzliK1FSVUVBTkJqc1JaUTRwMjNLRFBkdlhuS2ZBQ0FIb3FiL25qdTZ2UFBYMnpiTVJjSnFtRU5JRlJnWkhvdzdlZy80UVVtYzR2ekFXNjU4cVMxZ1FCZEVtMVg5dzBkVnVyZkVPM0JmOWIrUVdWVUFFQUZZaUNndFlETnNiZzJNS29DekFjQTZJekZQdjk0dmpyOE4wZFVRYnI5aCtvSUFLQWkxZ0kyVDh3RmlQa0EyZ0lBVm1mbndERjkvZzFrN1I5VVR3QUFGWWtxZ0wyVHc0bG1XV3dMK0pvYks0QmxpK2ZtWXpmOE5PMXUzZnhyazJzZWgzK29uaGtBVUtFWUNCaHJBUjBVbXllQ2dLZ0dpRUZINWdNQVhKdysvK2FMejBORGtLRjZLZ0NnWXZ0bUJoUE50VGdmWUplcDFRQnZFMzMrOFh4OC9NWm5IZjRienVBL3FJYzFXMjk2MXg4bm9ES3pyNjF0SHd6ZmMrWFBFODBWTDdZZjNmQlNtais5SmgxYzZFc0FwWXQ1S1YrKy9tZnBBK3ZuMHpzdWV6M1JYRzcvb1Q1VUFFQU5qQjI5SnMyZDl1UFlkR2ZQQjdBdEFDaFZCS0xSSWhYUFE1VlJ6V2Z0SDlTTENnQ29nWmRmdnp5OTBnb0E0aGFFNXV0ZmM3cTlNV0RMMmxmU2daZjcybFVCQUUwWHdlZGRnOVB0MVg1YmhLREZHSmtaYXM4OEF1ckJsU1BVeFBoeGF3RkxFL01CSHIveHArMytWNENtT3J2UDM1clVzc1I3amRKL3FCY0JBTlNJdFlEbDZiLzh0ZlNaMW90eHRBVjRNUWFhSnNyOTQrRC9HWU5RaXpReVBaU0FlckVHRUdyRVdzQnlMYzRIMk5GL0l1MmJHYkkyRU1oYWZJN3QyblRFNTFuQll2RGZ4SHgvQXVybHNnOTg5TmVOWFlVYWlZTmczQVpUdG5oeEdqMTJyU0FBeUVxVSszKzJkZHQvKzhDeFJObnVlSGFiMWthb0lVTUFvV2JtM2hnSWQ2dGJrNkp0NzF0SU8vcm5yQTBFc2hGOS9uOTAzZk51L1VtalI2OU5FM01iRWxBL1pnQkFEZTJmSGJBV2tMZXNEVFFmQUtpck9QREhjMHFmUHlGdS9mZlBia3BBUGFrQWdCcXlGcEN6eGRyQXFBYXdOaENvazFqcjkyRHJ4ajl1L3VNNUJTSFcvdjNYVTFjbW9KNWNNVUpOeFZyQUdBZ0lpMkp0NEJPdFc3WjQyUjZ5UXh1b3lPSmF2M2dlS2ZmbmJOYitRZjBKQUtER29vY096aFZsdGc5Zi81eTJBS0RuZGc0Y1MwL2NmS0Q5SElKejNYUG9oZ1RVbXdBQWFpeldBazdNV2FIRDI1MDlIMkRidWxNSm9KdmlwaitDeDkyYnAvWDVjMTZ4dmNiVWY2aS90UW1vdGVpbGl4Y3ZMMXljVHdRQmo5LzRVMnNEZ2E2SWRxTzdOaysxNTVEQXhZd2RVN1VJT1ZBQkFEVVhhZnE0YWJwY3d0bnpBUUJXYTdIUC8vRWJuM1g0NTVLaVpkSHRQK1JCQUFBWmlMV0FQbGhaaXVqTHRUWVFXSTE0ZnNUQjMxby9saUxlVDhiTUxJSnNDQUFnQTNPbjE2U1I2Y0VFUzdFNEgrQ3gxZ3U4YlFIQVVpMzIrY2Z6WTR0bkIwdms4QTk1TVFNQU1qRXh2Nkc5RnRES0paWnErN3FGZGx1QStRREF4VVM1LzEyRFV5cUhXTFlEcC9xcy9ZUE1xQUNBakZnTHlFckVmSUM0MVRNZkFEamJZcDkvclBWeitHY2w3ais4TlFGNVdiUDFwbmY5Y1FLeU1QWHFGZTErelBkYytmTUV5OUcvNW5TN2VpUmU4dWRQcjBrSEYvb1NVSzU0SG54NTY4L2FBLzdlY2RuckNaWXJxc3ZjL2tOK3RBQkFac2FPWHRPNjBUMXVNQk1yc2pnZllFZi9pYlJ2WmtoYkFCUm0yN3BUNmE3TjA5ckpXSlgyNEQ5ci95QkxBZ0RJVEF3RWpMV0F5cmxaamJqMWl5L3pBYUFNVWU3LzJkYm54dTBEeHhLczF2anhUYllUUWFiTUFJQU1XUXRJcHl6T0I5RC9DODIxczNYb2p6NS9oMzg2SWQ0LzRqMEV5Sk1BQURJVVZRQjdKNGNUZE1KaVc4RFhianJZYmcwQW1pSEsvQis3NGFkcDkrWnBiV04wakxWL2tEY3RBSkNwWjM1K2xiV0FkRlFFQVE5Yzk3eTJBTWpjVU90bitiNmh3ejRmNkRpRC95Qi9LZ0FnWS90bUJoTjBXclFGUEhIVHdmYWNDYmVHa0kvRnRYNlAzL2lzd3o5ZFlmQWY1TThhUU1qWTdHdHJyUVdrYStJQThkRU5MMWtiQ0JtSU9SNWZ2djVuNlFQcjU2MzFveXRpQVBGZm4zaG5BdkttQWdBeUYyc0I1MDc3VWFZN3pwNFBFR1hGUUwxRVVCZURQT1BuVk1VTzNkSWUvSGZjNEQ5b0FoVUFrTG1YWDc4OHZkSUtBT0xXQjdxbGY4M3B0SE5nTm0xWiswbzY4SEpmdXlvQXFFNEVjbmNOVHFlN05rKzNnenJvcHBHWm9mYnNJU0IvaGdCQ0E0eTNVdm5iTmg1UDI5WXRKT2ltbUErd1k4TmNld1hVcUVuUTBIUFI1Ly9KZ1dQdGxYNXUvT21GdVAwMytBK2FROTB3Tk1TKzZhRUV2ZEIvK1d2cE05Y2NhYmNGUk44eDBCczcxcysxQi94OXhvQk9lc2phWVdnV0ZRRFFFTllDMG11TDh3RWlCUGpLMUxDMWdkQWw4VnpmdGVtSTV6czlGMnYvbFA1RHMxejJnWS8rdWxHeDBCQnhJSHVzZFR2a1pvZ3F4SXZpNkxGckJRSFFJVkh1LzluV2JYK1UrME1WN25oMlc3c0ZBR2dPUXdDaFFlWk9yMm12ZjdyVkxSRVYyTjYza0hiMHo2WExMcnNzL2RkVFZ5Wmc1WGExRHY1L2ROM3pidjJwVE14NW1aamJrSUJtTVFNQUdpYUdzMWtMU0ZXaUNtWDM1aW56QVdDRjRzQWZQei82L0tsU2UrM2Y3S1lFTkk4S0FHZ1lhd0dwZzFnYkdOVUExZ2JDMHNSYXZ3ZGJOLzV4OHg4L1AxQ2xXUHVua2d1YXlSQkFhS0JZQzdpai80VFNVU29YYXdQamEzeDJvUFY5dWNsOEFEaUhQbi9xeHRvL2FEWjF3dEJRZHJSVEp6c0hadFBEMXorbkxRRE9zck4xNkgvaTVnTU8vOVRLUFlkdVNFQnpDUUNnb1dKdGp3U2ZPbGxjR3hqOXphcFRLRmw4LzBjZ3Rudnp0RDUvYWlXMnVaajZEODJtQlFBYWJPem90ZTFXQUMrWTFFa0VBWEg0c1RhUTBrU2YvMzFEaHdWZzFGSU1FQjQ3cG5vUW1rNEZBRFJZcFBqanB2aFNVekViNEltYkRwNFplaWFrb3NHaXp6Kyt6eCsvOFZtSGYyb3IzaGZjL2tQekNRQ2c0V0l0b0E5MDZpelduVDNXT2hpWkQwQVR4ZmQxSFB5dDlhUE80ajFoek93Z0tJSUFBQnB1N3ZTYU5ESTltS0RPenA0UEVHWFNrTHZGUHYvNHZ0N2llNXFhYy9pSGNwZ0JBQVdZbU4rUW5qbDVsZEpUYWk4T1N0RVdZRDRBdVlweS83c0dwMVMwa0kyblR4b2FEQ1ZSQVFDRnNCYVFuTVI4Z01kdi9HbTdieHB5c05qbkgydjlIUDdKeVVOVHd3a294NXF0Tjczcmp4UFFlRk92WHRIdVAzM1BsVDlQa0lOM1hQWjZ1Mm9sRGxQenA5ZWtnd3Q5Q2Vvb3ZrKy92UFZuYVVmL1hQdjdGbklSMVZadS82RXNXZ0NnSUdOSHIybmRyQjQzaUlxc0xNNEhpSldXKzJhR3RBVlFHOXZXblVwM2JaN1dYa1dXMm9QL3JQMkQ0Z2dBb0NBeEVERFcvQ2lySmtkeHV4cGY1Z05RdFNqMy8yenJPWHI3d0xFRXVSby9idTBmbE1nTUFDaE1UUHIxZ1UvT1lqNUFURmZYWjAwVmRyWU8vZEhuNy9CUHp1STlJTllFQStVUkFFQ0I5azRhK0VQZXpsNGJHSzBCMEcxUjVoL2ZiN3MzVDJ1akludlcva0c1dEFCQWdaNzUrVlhXQXRJSUVRUThjTjN6MmdMb21xSFc5OWg5UTRjOUwya01nLytnYkNvQW9GQjdyZjJoUWFJdDRJblc3V3pNdDRnREc2eldtMnY5V3Q5WER2ODBpY0YvVURackFLRlFNUkRRV2tDYUpnNXFNU2pRMmtCV0kvcjhIOWg2S0gxZy9YeUNKb2xCd0g5OTRwMEpLSmNLQUNoWXJBV2NPKzB4UUxPY1BSOGcxclRCVWtXQUZBTW05Zm5UUk8zQmY4Y04vb1BTcVFDQWdyMzgrdVhwbFZZQTRKYUxKdXBmY3pyOTV0WEgwNWExcjZRREwvZTFxd0xnZk5wOS9xM1E2TTVyWjlvQkVqVFJ5TXhRZXdZUVVEWlhmMUM0OGRadHdNR0ZkUW1hNnV6NUFIQzJ4VDcveDI5OHR0MDZBazBWdC84Ry93RkJBQUNrZmRORENacnVNNjJEWHJRRjNQYk9GeFBzV0QvWFB2akg5NFZ5ZjVyTytsOWdrUUFBZUhNdElEVGQ0bnlBeDFvSFA5c0N5clRZNXg5RC9wVDdVNEpZKzZmMEgxZ2tBQURhWWkyZ2dZQ1VZdnU2aFhaYndMMURod1VCaFloeS83czJUN2NQLzliNlVSSnIvNEN6ZWRzSDJxSS9NTllEUVVsaVBzQ3VUV1lEbE9DdXdhbDArOEN4QkNVWlBYcHQrL01kWUpFQUFIalQvdGtCVlFBQTBBRHR0WCtDZmVBYzN2U0JOODJkWHBOR0RBUUVnT3lOdFc3L2hmckF1VHdWZ0xlSU5VRUdBZ0pBdnF6OUF5NUVBQUM4VGZRTUFnQjV1dWZRRFFuZ2ZBUUF3TnZFdWlBM0J3Q1FuMWo3Wi9BZmNDRUNBT0M4OUE0Q1FGN2ljOXZhUCtCaXZOMEQ1MlV0SUFEa0pUNjMzZjRERnlNQUFDNG8xZ0o2a1FDQStvdlA2ekV6ZklCTEVBQUFGM1JtTGVCZ0FnRHF6ZUVmV0FvQkFIQlJFL01ickFVRWdCcDcrcVRodmNEU0NBQ0FTN0lXRUFEcTY2R3A0UVN3RkFJQTRKSmlMYUNCZ0FCUVA5YitBY3NoQUFDV1pPem9OZFlDQWtDTnRBZi9XZnNITElPM2VXQkpZaUNnS2dBQXFJL3g0OWIrQWNzakFBQ1dMQ1lNZTlFQWdPckY1M0dzNndWWURnRUFzQ3g3SncwYUFvQ3FXZnNIcklRQUFGaVdHQWhvTFNBQVZDY0cvMW43QjZ5RUFBQll0cjNXRFFGQVpReitBMVpLQUFBc1cvUWRHZ2dJQUwwWG43L204UUFySlFBQVZzUmFRQURvcmZiZ3YrTUcvd0VyNSswZFdKRllDemgyWkhNQ0FIckROaDVndFFRQXdJcU50MjRoRGk2c1N3QkFkOFhCMytBL1lMVUVBTUNxN0pzZVNnQkFkKzE1WVdzQ1dDMEJBTEFxMWdJQ1FIZkYycitEQzMwSllMVUVBTUNxeFZwQUF3RUJvRHVzL1FNNnhSczdzR3JXQWdKQWQ0d2EvQWQwa0FBQTZJajlzd09xQUFDZ2crTGdINVAvQVRyRjJ6clFFYkVXY01SQVFBRG9HSWQvb05NRUFFREh4SG9pQXdFQllQV3MvUU82UVFBQWROU28yd29BV0xWN0R0MlFBRHBOQUFCMFZLd0ZkR01CQUNzWGEvOE0vZ082UVFBQWRGejBMQm9JQ0FETEY1K2YxdjRCM2VJTkhlZzRhd0VCWUdYaTg5UHRQOUF0QWdDZ0sySXRvQmNZQUZnNmEvK0FiaE1BQUYxeFppM2dZQUlBbHNiaEgrZzJBUURRTlJQekc2d0ZCSUFsK081Y3Z5RzZRTmNKQUlDdXNoWVFBQzd0MFptaEJOQnRBZ0NncTJJdG9JR0FBSEJoMXY0QnZTSUFBTHB1N09nMTFnSUN3SG0wQi85Wit3ZjBpRGR5b090aUlLQXFBQUI0dXhqODUvWWY2QlVCQU5BVFhuQUE0SzNpYzlIZ1A2Q1hCQUJBeit5ZEhFNEF3QmtqMHdiL0FiMGxBQUI2SmdZQ1dnc0lBR2NHLzAzTTl5ZUFYaElBQUQyMWQwb1ZBQUFZL0FkVVFRQUE5RlQwTzQ0ZTlkSURRTGxHemNVQktpSUFBSHB1Lyt5QXRZQUFGQ2tPL3Q4eStBK29pRGR3b09kaUxlRFlrYzBKQUVwakt3NVFKUUVBVUlueDR3TUdBZ0pRRkd2L2dLb0pBSURLbUFVQVFFbjJ2TEExQVZSSkFBQlV4bHBBQUVvUmEvOE9MdlFsZ0NvSkFJQkt4VnBBQXdFQmFEcHIvNEE2OE5ZTlZDcjZJY2RuTnlVQWFDcHIvNEM2RUFBQWxiTVdFSUNtaW9QL21KazNRRTE0NHdZcUYyc0JSNmFIRWdBMGpjTS9VQ2NDQUtBV1lpMlNnWUFBTk1tQlUzM1cvZ0cxSWdBQWFzTmFRQUNhNVA3RDF2NEI5U0lBQUdvajFnSzZLUUdnQ1dMdG44Ri9RTjBJQUlCYUdaa2VOQkFRZ0t5MUIvOVord2ZVa0xkc29GWmlJS0MxZ0FEa0xLclozUDREZFNRQUFHb24xZ0o2Y1FJZ1I5YitBWFVtQUFCcUo2b0E5azRPSndESWpjTS9VR2NDQUtDV1lpQ2d0WUFBNU9TN2MvMkcyUUsxSmdBQWFtdmZ6R0FDZ0Z3OE9qT1VBT3BNQUFEVTFzR0ZQZ01CQWNpQ3RYOUFEZ1FBUUsyTkhiM0dXa0FBYXMzYVB5QVgzcXFCV291QmdHTkhOaWNBcUtzWS9PZjJIOGlCQUFDb3ZmSGoxZ0lDVUUveCtXVHdINUFMQVFDUUJXc0JBYWlqa1dtRC80QjhDQUNBTEZnTENFRGR4T0MvaWZuK0JKQUxBUUNRamIxVHFnQUFxQStELzREY0NBQ0FiRVNmNWVoUkwxc0FWRy9VNEQ4Z1F3SUFJQ3Y3Wndlc0JRU2dVbkh3LzViQmYwQ0d2RVVEV2JFV0VJQ3FXZnNINUVvQUFHUW4xZ0lhQ0FoQUZhejlBM0ltQUFDeVpCWUFBRlhZODhMV0JKQXJBUUNRcFZnTE9ERm45UklBdlJOci93NHU5Q1dBWEFrQWdHeU56QXdaQ0FoQXoxajdCK1RPbXpPUXJlakRISi9kbEFDZzI2ejlBNXBBQUFCa0xkWUNlaUVEb0p2aWMyYk03Qm1nQVFRQVFOYmFhd0c5bEFIUVJUNW5nS1lRQUFEWmkzVk0xZ0lDMEEwSFR2Vlord2MwaGdBQWFBUnJBUUhvaHZzUFcvc0hOSWNBQUdpRVdBdm9oZ2FBVG9xMWYrYk1BRTBpQUFBYVkyUjYwRnBBQURxaVBmalAyaitnWWJ3cEE0MFJBd0d0QlFTZ0U2S3F6TzAvMERRQ0FLQlJyQVVFWUxXcy9RT2FTZ0FBTkVwVUFleWRIRTRBc0ZJTy8wQlRDUUNBeG9tQmdOWUNBckFTMzUzck4xUVdhQ3dCQU5CSSsyWUdFd0FzMTZNelF3bWdxUVFBUUNNZFhPZ3pFQkNBWmJIMkQyZzZBUURRV0dOSHI3RVdFSUFsc2ZZUEtJRTNZNkN4WWlEZzJKSE5DUUF1SlFiL3VmMEhtazRBQURUYStIRnJBUUc0dVBpY01QZ1BLSUVBQUdnOGF3RUJ1SmlSYVlQL2dESUlBSURHc3hZUWdBdUp3WDhUOC8wSm9BUUNBS0FJZTZkVUFRRHdkZ2IvQVNVUkFBQkZpUDdPMGFOZThnRDRoVkdELzREQ0NBQ0FZdXlmSGJBV0VJQzJPUGgveStBL29ERGVoSUZpV0FzSXdDSnIvNEFTQ1FDQW9zUmFRQU1CQWNwbTdSOVFLZ0VBVUJ5ekFBREt0dWVGclFtZ1JBSUFvRGl4Rm5CaXpzb25nQkxGMnIrREMzMEpvRVFDQUtCSUl6TkRCZ0lDRk1qYVA2QmszbjZCSWtYLzUvanNwZ1JBT2F6OUEwb25BQUNLRldzQnZRZ0NsQ0dlOTJObXdBQ0ZFd0FBeFdxdkJmUXlDRkFFejNzQUFRQlF1RmdEWlMwZ1FMTWRPTlZuN1I5QUVnQUFXQXNJMEhEM0g3YjJEeUFJQUlEaXhWcEFOME1BelJSci84eDdBVGhEQUFEUU1qSTlhQzBnUU1PMEIvOVord2Z3Sm0rN0FPbk1RRUJyQVFHYUphcTczUDREL0lJQUFPQU4xZ0lDTkllMWZ3QnZKd0FBZUVOVUFleWRIRTRBNU0vaEgrRHRCQUFBWjRtQmdOWUNBdVR0dTNQOWhyc0NuSWNBQU9BYysyWUdFd0Q1ZW5SbUtBSHdkZ0lBZ0hNY1hPZ3pFQkFnVTliK0FWeVlBQURnUE1hT1htTXRJRUJtclAwRHVEaHZ0d0RuRVFNQng0NXNUZ0RrSXdiL3VmMEh1REFCQU1BRmpCKzNGaEFnRi9HOE52Z1A0T0lFQUFBWFlTMGdRQjVHcGczK0E3Z1VBUURBUlZnTENGQi9NZmh2WXI0L0FYQnhBZ0NBUzlnN3BRb0FvTTRNL2dOWUdnRUF3Q1ZFWCtub1VTK1hBSFUwYXZBZndKSUpBQUNXWVAvc2dMV0FBRFVUQi8vOXM1c1NBRXZqYlJaZ0Nhd0ZCS2lmV1Bzbm5BVllPazlNZ0NXS3RZQUdBZ0xVZzdWL0FNc25BQUJZQnJNQUFPcmhua00zSkFDV1J3QUFzQXl4Rm5CaXpxb3BnQ3JGMmorRC93Q1dUd0FBc0V3ak0wTjZUZ0VxWk8wZndNcDRnd1ZZcHJoMUdqZDFHcUFTMXY0QnJKd0FBR0FGWWkyZ0YxQ0Ezb3JuN3BoWkxBQXJKZ0FBV0lIMldrQXZvUUE5NWJrTHNEb0NBSUFWaXZWVDFnSUM5TWFCVTMzVy9nR3NrZ0FBWUJXc0JRVG9qZnNQYjAwQXJJNEFBR0FWWWkyZ0d5bUE3ckwyRDZBekJBQUFxelF5UFdndElFQ1h0QWYvV2ZzSDBCSGVXQUZXS1FZQ1dnc0kwQjNqeHplNS9RZm9FQUVBUUFkWUN3alFlZkZjamVjckFKMGhBQURvZ0tnQzJEczVuQURvSEd2L0FEcExBQURRSVRFUTBGcEFnTTZJd1grR3JBSjBsZ0FBb0lQMnpRd21BRmJQNEQrQXpoTUFBSFRRd1lVK0F3RUJWc25hUDREdUVBQUFkTmpZMFd1c0JRUllJV3YvQUxySEd5cEFoOFZBd0xFam14TUF5eGVELzl6K0EzU0hBQUNnQzhhUFd3c0lzRnp4M0RUNEQ2QjdCQUFBWFdJdElNRHlqRXdQSlFDNlJ3QUEwQ1hXQWdJc1hReittNWp2VHdCMGp3QUFvSXYyVHFrQ0FGZ0tnLzhBdWs4QUFOQkYwYzg2ZXRSTExjREZqQnI4QjlBVEFnQ0FMdHMvTzJBdElNQUZ4TUYvLyt5bUJFRDNlU01GNkRKckFRRXVMTmIrQ1VrQmVzUFRGcUFIWWkyZ2dZQUFiMlh0SDBCdkNRQUFlc1FzQUlDM3V1ZlFEUW1BM2hFQUFQUklyQVdjbUxQaUNpREUyaitEL3dCNlN3QUEwRU1qTTBONlhRR1N0WDhBVmZBV0N0QkRjZHMxYnRvMVVEaHIvd0NxSVFBQTZMRllDK2pGRnloVlBQL0d6RVFCcUlRQUFLREgybXNCdmZ3Q2hmTDhBNmlPQUFDZ0FySDJ5bHBBb0RSUHQ1NTcxdjRCVkVjQUFGQVJhd0dCMGp3ME5ad0FxSTRBQUtBaXNSYlFUUmhRQ212L0FLb25BQUNvME1qMG9MV0FRT08xQi85Wit3ZFFPVytkQUJXS2dZRFdBZ0pOTjM1OGs5dC9nQm9RQUFCVXpGcEFvTW5pK1JiUE9RQ3FKd0FBcUZoVUFleWROQmdMYUNaci93RHFRd0FBVUFNeEVOQmFRS0JwWXZDZllhY0E5U0VBQUtpSmZUT0RDYUJKRFA0RHFCY0JBRUJOSEZ6b014QVFhSXg0bnBsdkFsQXZBZ0NBR2hrN2VvMjFnRUQyMm9QL2podjhCMUEzM2pJQmFpUUdBbzRkMlp3QWNoYUQvOXorQTlTUEFBQ2dac2FQV3dzSTVDdWVYd2IvQWRTVEFBQ2docXdGQkhMbCtRVlFYd0lBZ0JxeUZoRElVYXo5aStjWEFQVWtBQUNvcWIxVGJ0R0F2Rmo3QjFCdkFnQ0Ftb28rMnRHalhxYUJQSXdhL0FkUWV3SUFnQnJiUHp0Z0xTQlFlKzIxZjdPYkVnRDE1cTBTb01hc0JRUnlFR3YvaEpVQTllZEpEVkJ6c1JiUVFFQ2dycXo5QThpSEFBQWdBMllCQUhWMXo2RWJFZ0I1RUFBQVpDRFdhazNNOVNlQU9vbTFmd2IvQWVSREFBQ1FpWkdaSVQyMlFHM0U4OGphUDRDOGVKTUV5RVRjc28yYnNnM1VSRHlQM1A0RDVFVUFBSkNSV0F2b2hSdW9XanlIeHN3bUFjaU9BQUFnSSsyMWdGNjZnWXA1RGdIa1NRQUFrSmxZdDJVdElGQ1ZwMXZQSDJ2L0FQSWtBQURJa0xXQVFGVWVtaHBPQU9SSkFBQ1FvVmdMNkFZTzZEVnIvd0R5SmdBQXlOVEk5S0MxZ0VEUHRBZi9XZnNIa0RWdmpnQ1ppb0dBMWdJQ3ZUSiszTm8vZ053SkFBQXlaaTBnMEF2eG5Jbm5EUUI1RXdBQVpDeXFBUFpPR3NnRmRKZTFmd0ROSUFBQXlGd01CTFFXRU9pV0dQeG42Q2hBTXdnQUFCcGczOHhnQXVnR2cvOEFta01BQU5BQUJ4ZjZEQVFFT2k2ZUsrYU1BRFNIQUFDZ0ljYU9YbU10SU5BeDdjRi94dzMrQTJnU2I0b0FEUkVEQWNlT2JFNEFuUkNELzl6K0F6U0xBQUNnUWNhUFd3c0lyRjQ4Und6K0EyZ2VBUUJBdzFnTENLeVc1d2hBTXdrQUFCckdXa0JnTldMdFh6eEhBR2dlQVFCQUErMmRHallRRUZnUmEvOEFtc3ZiSVVBRFJmK3V0WURBY28wYS9BZlFhQUlBZ0liYVB6dWdDZ0JZc3ZiYVA4RWhRS041TXdSb0tHc0JnZVdJdFg5Q1E0Qm04NVFIYUxCWUMyZ2dJSEFwMXY0QmxFRUFBTkJ3MGRNTGNESDNITG9oQWRCOEFnQ0Fob3QxWGhOei9RbmdmR0x0bjhGL0FHVVFBQUFVWUdSbVNHOHY4RGJ4WExEMkQ2QWMzZ1lCQ21BdElIQSs4Vnh3K3c5UURnRUFRQ0ZpTGFBWGZXQlJQQS9HekFnQktJb0FBS0FRc1Jad1pIb3dBUVNIZjREeUNBQUFDakl4djhGYVFDQTkzWG9PV1BzSFVCNEJBRUJockFVRUhwb2FUZ0NVUndBQVVKaFlDMmdnSUpUTDJqK0FjZ2tBQUFvMGR2UWFhd0doUU8zQmY5YitBUlRMMng5QWdXSWdvQ29BS00vNGNXdi9BRW9tQUFBb2xMV0FVSmI0ZVkrZmV3REtKUUFBS0ZSVUFleWROQWdNU21IdEh3QUNBSUNDeFVCQWF3R2grV0x3bjdWL0FBZ0FBQXEzYjJZd0FjMW04QjhBUVFBQVVMaURDMzBHQWtLRHhjKzNlUjhBQkFFQUFOWUNRa08xQi84ZE4vZ1BnRE84N1FIUUhnZzRkbVJ6QXBvbEJ2KzUvUWRna1FBQWdMYngxaTNod1lWMUNXaUdPUGdiL0FmQTJRUUFBTHhwMy9SUUFwckJtazhBemlVQUFPQk4xZ0pDTThUYXYvaDVCb0N6Q1FBQWVJdTlVOE1HQWtMbXJQMEQ0SHk4NFFId0Z0RTNiQzBnNUd2VTREOEFMa0FBQU1EYjdKOGRVQVVBR1dxdi9SUGdBWEFCM3U0QWVCdHJBU0ZQc2ZaUGVBZkFoZmlFQU9DOFlpMmdnWUNRRDJ2L0FMZ1VBUUFBRnhTOXhFQWU3amwwUXdLQWl4RUFBSEJCc1Vac1lxNC9BZlVXYS84TS9nUGdVZ1FBQUZ6VXlNeVFubUtvc2ZqNXRQWVBnS1h3UmdmQVJWa0xDUFVXUDU5dS93RllDZ0VBQUpjVWF3RWRNS0IrNHVkeXpLd09BSlpJQUFEQUpjVmF3Skhwd1FUVWk4TS9BTXNoQUFCZ1NTYm1OMWdMQ0RYeWRPdm4wZG8vQUpaREFBREFrbGtMQ1BYeDBOUndBb0RsRUFBQXNHU3hGdEJBUUtpZXRYOEFySVFBQUlCbEdUdDZqYldBVUtIMjREOXIvd0JZQVc5d0FDeExEQVJVQlFEVkdUOXU3UjhBS3lNQUFHRFpyQVdFYXNUUFhmejhBY0JLQ0FBQVdMYW9BdGc3YVFBWjlKcTFmd0NzaGdBQWdCV0pnWURXQWtMdnhPQS9hLzhBV0EwQkFBQXJ0bTltTUFHOVlmQWZBS3NsQUFCZ3hRNHU5QmtJQ0QwUVAyZm1iZ0N3V2dJQUFGYkZXa0RvcnZiZ3YrTUcvd0d3ZXQ3WUFGaVZHQWc0ZG1SekFyb2pCdis1L1FlZ0V3UUFBS3phZU90Mjh1REN1Z1IwVmh6OERmNERvRk1FQUFCMHhMN3BvUVIwbG5XYkFIU1NBQUNBanJBV0VEb3IxdjdGenhVQWRJb0FBSUNPMlRzMWJDQWdkSWkxZndCMG1yYzBBRG9tK3BXdEJZVFZHelg0RDRBdUVBQUEwRkg3WndkVUFjQXF0TmYrQ2RJQTZBSnZhQUIwbExXQXNEcXg5aytJQmtBMytIUUJvT05pTGFDQmdMQjgxdjRCMEUwQ0FBQzZJbnFZZ2VXNTU5QU5DUUM2UlFBQVFGZkUrcktKdWY0RUxFMnMvVFA0RDRCdUVnQUEwRFVqTTBONm1XRUo0dWZFMmo4QXVzMWJHUUJkWXkwZ0xFMzhuTGo5QjZEYkJBQUFkRldzQlhTd2dRdUxuNDh4TXpNQTZBRUJBQUJkRldzQlI2WUhFM0IrRHY4QTlJb0FBSUN1bTVqZllDMGduTWZUclo4TGEvOEE2QlVCQUFBOVlTMGd2TjFEVThNSkFIcEZBQUJBVDhSYVFBTUI0UmVzL1FPZzF3UUFBUFRNMk5GcnJBV0U5TWJnUDJ2L0FPZ3hiMkVBOUV3TUJGUUZBQ21OSDdmMkQ0RGVFd0FBMEZNeDhkekJoNUxGOTMrc3h3U0FYaE1BQU5CemV5Y05QcU5jMXY0QlVCVUJBQUE5RndNQnJRV2tSREg0ejlvL0FLb2lBQUNnRW51dFA2TkFCdjhCVUNVQkFBQ1ZpRDVvQXdFcFNYeS9tMzhCUUpVRUFBQlV4bHBBU3RFZS9IZmM0RDhBcXVXdEM0REt4RnJBc1NPYkV6U2Q3UmNBMUlFQUFJQktqYmR1UlE4dXJFdlFWSEh3Ti9nUGdEb1FBQUJRdVgzVFF3bWFhczhMV3hNQTFJRUFBSURLV1F0SVU4WGF2NE1MZlFrQTZrQUFBRUF0eEZwQUF3RnBHbXYvQUtnVGIxb0ExSUsxZ0RUTnFNRi9BTlNNQUFDQTJ0Zy9PNkFLZ0VhSWczOU0vZ2VBT3ZHV0JVQnR4RnJBRVFNQmFRQ0hmd0RxU0FBQVFLM0V1alFEQWNtWnRYOEExSlVBQUlEYUdYVjdTc2J1T1hSREFvQTZFZ0FBVUR1eEZ0QU5Lam1LdFg4Ry93RlFWd0lBQUdvcGVxZ05CQ1FuOGYxcTdSOEFkZWJOQ29CYXNoYVEzTVQzcTl0L0FPcE1BQUJBYmNWYVFBY3FjbUR0SHdBNUVBQUFVRnRuMWdJT0pxZzdoMzhBY2lBQUFLRFdKdVkzV0F0SXJYMTNydC9RU2dDeUlBQUFvUGFzQmFUT0hwMFpTZ0NRQXdFQUFMVVhhd0VOQktTT3JQMERJQ2NDQUFDeU1IYjBHbXNCcVpYMjREOXIvd0RJaURjcEFMSVFBd0ZWQVZBbk1malA3VDhBT1JFQUFKQU5CeTdxSXI0UERmNERJRGNDQUFDeXNuZHlPRUhWclAwRElFY0NBQUN5RWdNQnJRV2tTakg0eiswL0FEa1NBQUNRbmIxVHFnQ29qc0YvQU9SS0FBQkFkcUwvMmtCQXFoRGZkK1pRQUpBckFRQUFXYklXa0Y2TGcvLys0d01KQUhMbHpRbUFMTVZhd0xFam14UDBpaTBVQU9ST0FBQkF0c1pidDdFSEY5WWw2RFpyL3dCb0FnRUFBRm5iTnoyVW9OdjJ2TEExQVVEdUJBQUFaTTFhUUxvdDF2NGRYT2hMQUpBN0FRQUEyWXUxZ0FZQzBpM1cvZ0hRRk42V0FNaWV0WUIweTZqQmZ3QTBpQUFBZ0ViWVB6dWdDb0NPaW9OL1RQNEhnS2J3cGdSQUk4UmF3QkVEQWVrZ2gzOEFta1lBQUVCanhKbzJBd0hwaEFPbitxejlBNkJ4QkFBQU5NcW9XMXM2NFA3RDF2NEIwRHdDQUFBYUpkWUN1cmxsTldMdG44Ri9BRFNSQUFDQXhvbmViUU1CV1luMjREOXIvd0JvS0c5SEFEU090WUNzVkZTUHVQMEhvS2tFQUFBMFVxd0ZkSkJqT2F6OUE2RHBCQUFBTk5LWnRZQ0RDWmJLNFIrQXBoTUFBTkJZRS9NYnJBVmtTYjQ3MTI5NEpBQ05Kd0FBb05Hc0JXUXBIcDBaU2dEUWRBSUFBQm90MWdJYUNNakZXUHNIUUNrRUFBQTAzdGpSYTZ3RjVMeXMvUU9nSk42R0FHaThHQWlvQ29EemljRi9idjhCS0lVQUFJQWlPT2h4cnZoK01QZ1BnSklJQUFBb3h0N0o0UVNMUnFZTi9nT2dMQUlBQUlvUkF3R3RCU1RFNEwrSitmNEVBQ1VSQUFCUWxMMVRxZ0JJQnY4QlVDUUJBQUJGaWI1dkF3SExObW9lQkFDRkVnQUFVQnhyQWNzVkIvOXZHZndIUUtHOC9RQlFuRmdMT0haa2M2STh0a0VBVURJQkFBQkZHajgra0E0dXJFdVV3OW8vQUVvbkFBQ2dXUHVzZ1N2S25oZTJKZ0FvMmRvRUFJV0t0WUJicm5nbDBYemZlbkZqT3JqUWx3Q2daQ29BQUNpYWt2QXlQTjBLZXdDZ2RBSUFBQUFBS0lBQUFBQUFBQW9nQUFBQUFJQUNDQUFBQUFDZ0FBSUFBQUFBS0lBQUFBQUFBQW9nQUFBQUFJQUNDQUFBQUFDZ0FBSUFBQUFBS0lBQUFBQUFBQW9nQUFBQUFJQUNDQUFBQUFDZ0FBSUFBQUFBS0lBQUFBQUFBQW9nQUFBQUFJQUNDQUFBQUFDZ0FBSUFBQUFBS0lBQUFBQUFBQW9nQUFBQUFJQUNDQUFBQUFDZ0FBSUFBQUFBS0lBQUFBQUFBQW9nQUFBQUFJQUNDQUFBQUFDZ0FBSUFBQUFBS0lBQUFBQUFBQW9nQUFBQUFJQUNDQUFBQUFBU05KOEFBQUFBQUFvZ0FBQUFBSUFDQ0FBQUFBQ2dBQUlBQUFBQUtJQUFBQUFBQUFvZ0FBQUFBSUFDQ0FBQUFBQ2dBQUlBQUFBQUtJQUFBQUFBQUFvZ0FBQUFBSUFDQ0FBQUFBQ2dBQUlBQUFBQUtJQUFBQUFBQUFvZ0FBQUFBSUFDQ0FBQUFBQ2dBQUlBQUFBQUtJQUFBQUFBQUFvZ0FBQUFBSUFDckUwQUFFQXQvZFc3Ly85VWhhOU1EcWR2dmJReGxlQzJqUyttZTRjT3B5cjgweC85andsNlNRVUFBQUFBRkVBQUFBQUFBQVVRQUFBQUFFQUJCQUFBQUFCUUFBRUFBQUFBRkVBQUFBQUFBQVd3QnBDZSt5Ly82WnVKL0Qzd2xZZlRrMC85VldKNUhuMzR5NG1VVHN6TnA3bTV1ZlpmSDU2YWF2L1BrNU5uZm4yaDlldmhxZWxFYzMxNHh3ZlQzWGQ5TGxYaDkrNytRam84V2NiMzE2ZDJmaUw5ZHV1ckNwLzQ5RDlMQU5TUEFBQ2doOTUvNjNzVFMvT2pBejlwQndJL2J2MzYvV2QrMEFvR3B0T1BEdjRra2IvKy92NDB2R1VvMFYwYit0Zjdjd2JnTFFRQUFOVFN1N2ZmM1A0MVFwTlBmZkxNTFdZRUF0OTcrb2Z0UU9EN3JWOEZBZ0FBU3ljQUFDQWJjYVA1a1E5OXNQMFZEazlPdFFPQmJ6NzE3ZlM5WjM2WUFBQzRNQUVBQU5tSzh1YVAvMXA4ZmF3ZEJueDE5SWxXSVBBRE13UUFBTTVEQUFCQUkwUVlzT2UrejdmLytzbS8vSFlyRFBpYUlBQUE0Q3pXQUFMUU9GRVI4STAvL3c5cHo3MmZUOE5EZ3drQUFBRUFBQTBtQ0FBQStBVUJBQUNORjBIQW56M3k1ZlR4Mno2V0FBQktKUUFBb0FpTE13SWVmZmpMcWdFQWdDSUpBQUFveXZ0dmZXKzdHdURET3o2WUFBQktJZ0FBb0RoUkRmRFFnMTlNZCs2Nkl3RUFsRUlBQUVDeDd0ejE2ZlQ1M1o5TEFBQWxFQUFBVUxUZi91UW4ybHNDQUFDYVRnQUFRUEZpUzhEZUI3NllBQUNhVEFBQUFDMGYrZEFIVlFJQUFJMG1BQUNBTjBRbGdNR0FBRUJUQ1FBQTRDd3hHUEJUTzM4ckFRQTBqUUFBQU00UkljRHcwR0FDQUdnU0FRQUFuR05ELy9yMDBJT0dBZ0lBelNJQUFJRHplUGYybTl1VkFBQUFUU0VBQUlBTGlGa0FXZ0VBZ0tZUUFBREFCVVFyd0o3NzdrNEFBRTBnQUFDQWkzai9yZTlONzd2bHZRa0FJSGNDQUFDNGhEdDMzWkVBQUhJbkFBQ0FTMUFGQUFBMGdRQUFBSmJnSXgvNllBSUF5Tm5hQkVEUFBQbVgzMDZsbVp1ZlR5Zm01dEx3MEZCN3FGNTh2V3Y3dHZhdk9mbU4yLzYzOU5YUkoxcS9sL2tFQUpBakFRQTk5Ny84cjcrUmN2QmYvdE0zVXhXK092cTE5aUdEWm5wZzd5T0pNOXBCd0xhYld6ZnJ2NUxlZjh2LzNBNEY2aXorZVgvanRvK2xyNDkvSXdFQTVFZ0FBRUFsNGliOSs4LzhzUDBWaHJjTXBUdDNmYm9WQnJ5My9kZDE5T0VkdnlJQUFBQ3lKUUFBb0JZT1QwNmxCNzV5cGtJaWJ0by8xd29ENmhZRXhEREFxQVRRQmdBQTVNZ1FRQUJxNTV0UGZUdDk0dFAvck4wU1V6ZTJBUUFBdVJJQUFGQmJNUThqZ29Db0RxaUxxQUlBQU1pUkFBQ0FXb3ZELys5ODdnL1Nqdzc4Sk5YQisyNzU1UVFBa0NNQkFBQzFGejMzdjMvM0Yyb1JBcng3KzgzWnJUQUVBQWdDQUFDeUVDSEFIKzc1azFvTTROdFMweTBGQUFBWEl3QUFJQnRuTmdVOG5LcjJQMnk3S1FFQTVFWUFBRUJXdmpQeDkrbDdULzh3VlNuYUFBQUFjaU1BQUNBN1ZhOEgzTEpsU3dJQXlJMEFBSURzZlArWkgxWmFCWERkMEdBQ0FNaU5BQUNBTEgxbjR1OVNWV3dCQUFCeUpBQUFJRXN4QzZBcXc3WUFBQUFaRWdBQWtLWFlDQkJmQUFBc2pRQUFnR3o5Nk1DenFTcmFBQUNBM0FnQUFNaldpZm01VkpWK0FRQUFrQmtCQUFEWjBnSUFBTEIwQWdBQUFBQW9nQUFBZ0d5WnhnOEFzSFFDQUFDeVZXVUx3TnpjZkFJQXlJa0FBSUJzVlZrQmNFSUFBQUJrUmdBQVFMWTJyTzlQQUFBc2pRQUFnR3hkdDJVd1ZjSDJBUUFnUndJQUFMSzBvWDk5ZXRmMm0xTVZCQUFBUUk0RUFBQms2WDIzdkRkVjVhWDVrd2tBSURjQ0FBQ3k5T0VkdjVLcTh1TURCeE1BUUc0RUFBQmtaM2hvS0gzODF6NldxdktqQXo5SkFBQzVFUUFBa0owcUQvL0JDa0FBSUVjQ0FBQ3lFcmYvZCs3NmRLclM5NS81WVFJQXlJMEFBSUNzVkg3NGYvb0hDUUFnUndJQUFMSng1NjQ3S2kvLy85RkIvZjhBUUo0RUFBQms0ZU8zZmF6eTIvL3dOOS85K3dRQWtDTUJBQUMxRjRmL1BmZDlQbFV0aHYvcC93Y0FjclUyQVVDTlJkbC9IVzcrdy9jYy9nR0FqQWtBQUtpbG1QWWZ0Lzd2di9XOXFTNisrWmYvYndJQXlKVUFBSUJhV1Z6elYvV3d2M01kbnB4SzM1blEvdzhBNUVzQUFFRGxOcXhmbno3OG9WOUp2M0hieDJwMTQzODI1ZjhBUU80RUFBRDAxUERRWU5yUTM1L2V2ZjNtOU81dE42ZjN0UTc4OGRkMTk5WFJyeVVBZ0p3SkFBQjY2QnRQL1B0VXF1RXRReWxYVHo3MTdYUjRjam9CQU9STUFBRFFRemtmZ2t2bTloOEFhSUxMRXdCd1FYSDRkL3NQQURTQkFBQUFMaUFtLzM5OS9Cc0pBS0FKQkFBQWNBRVA3M3M4blppYlR3QUFUU0FBQUlEemlOTC83MHo4ZlFJQWFBb0JBQUNjSTByL3Z6cjZSQUlBYUJJQkFBQ2NKUTcvdjNmM0Z4SkF5ZnJYbkU1QTh3Z0FBT0FOMGU4ZmgzOVQvNEc2bUR0ZHpldDYvK1d2cFZJTXJYMGxWV0h1OUpvRXZTWUFBSUEzT1B3RGRUUDNXaldIeFA3TFZRQjAyOXhyam1MMG51ODZBR2g1NEN1UHBCOGYrRWtDb0t3S2dDMVhWRlVCNENoRzc2MU5BRkN3S1B0L1pOL2o2Y21udnAwQTZxYXFRK0sydmxPcEZGdXFhZ0Y0VFFzQXZTY0FBS0JZaXozL2J2NkJ1cHF2NkpDNDVZcFhVeW5XcjZtbTJtSCtkUlVBOUo3dk9nQ0tGTlArZitkei84TGhINmkxeVZldlNGV0lGb0JTNWdCc1g3ZVFxakQ1OGpzUzlKb0FBSURpZlAvcEg3UU8vMzlnNEI5UWUxV1dpVzliMS93MmdHMFZIZjVEVmVFT1pkTUNBRUJSSHQ3M2VQcjYrRGNTMVptYm0wdFY2ZS92Yi8yL1pRUS9HL3JYcHlwRWRRMmRNL2xxZGEvcjIvb1cwak0vdnlvMTJaYTFMNmVxVEwzaUtFYnZxUUFBb0FnL092Q1RkRWZyMXQvaHYzcHpjL09wS3RjTkRhWlNuQWs3eU4xOGhidml0NytqK1JVQXQxejE4MVNWeVZkVUFOQjdZaWNBR2kwRy9YMTkvQy9TVjBlZlNGRFZyWGdWaG9lR1VoVk9WQmp3Tk5HQlUzMnBLanMyekxXdXFWT2piYSt3emVIZ1FuWC9iaW1YQUFDQXh2cWJpYjlQait4N1RLOS96Ynd3VmQyL2orRXQxUnlLUzFKbGkwY1R6VmU0S3o0R0FkNXk1Y25HdGdHMGYzOVhuVXhWT0xDd0xrRVZCQUFBTkU0TStYdThkZVAvL1dkK21PQnNKUVVBNzk1K2M2ckNTL1BWSEtpYUtzckU1MW9oUUZVVCtlT0EzTlFBWUVkL2RXSFZsQUdBVkVRQUFFQWpSTm54ZHliK0xqMzVsOTkyOEsrNUtvZkVWVlVXMzJ2UjZsQlZ1OFBrNUdTaXN5SUVxR3BWM1czdmZER05IYjAyTlZHVkFVQ1ZyUjJVVFFBQVFOWml1RjhjL0dPNG45N2pmTVMvcXlvT3FGWGRpdmZhdTdkVjkvdDhRY3ROeDBXdmVGVUJ3SllyWG1sa0c4QlE2L2Uxby85RXFzcEJMUUJVeEJZQUFMSVdKZDBPLy9tcHFrODhRb2ZoTGMzZkJQQ3VDb01PYXdBN3IrcCs4VjNYSEVsTmMrdVYxYmFxUEhPeW5JR2sxSXNBQUlDc3hZSHVpL2ZlbmNqTGp3NDhtNnJ5L2x2ZW01cnUvYmY4Y3FxS01LN3pxajRzeGh5QXVERnZrczlVR0dwRW9ETjMyakdNYXZqT0F5QjdIL25RQjlPbmR2NVdJaDhuNXF2cnZTMmhEZURkMjI5S1Zmbnh3WjhrT212cWxiV1ZIeGgzYldwT0ZVRE1OZGhTWWFCeFVQOC9GUklBQU5BSWQrNzZkQm9lYW41cGQxUEU3SWFxZkhqSHI2UW1pMEdIVlcwN2lOdC9GUUNkTjNkNlRlV0h4dHMydnRpZUJaQzdxR1Q0VE1VdERVM2Rxa0FlREFFRUtFRDA1SGF6THpjT0cxV3ZWNHRXZ0QzMzNaMSsvKzR2Sk9xdjBrMEFyZS9WOTkzeTNzWnVpL2p3aHo2WXF2TGpBd2NUM1hGZ29hK3luZldMN3RvOG5UNzMzQytsbk1VOGd5MFZ0ek1JQUtpU0FBQ2dBRTgrOWUzMDFkRW5VcmU4YTl2TjZXdGYvWGVwYXUrLzliM3RWb0N2ai85Rm90NStkTEM2R1FBaHZsZWFHZ0Q4NW0wZlMxWDVrZkwvcnBtWTYwODdCNDZsS20zck81VjJiNTVLSXpONXJ0T00wdi80cWxMMC84ZGFSNmlLRmdBQVZpMTZmcjg2K3JWVUIxb0I4aEFWQUZXV2lqZDFaa1NVLzFlNUFlQjdUemN6VkttRGd6VVpITGR6WUxieVEvUktST24vN3NIcU4xUk16RzFJVUNVQkFBQWRFUlVHVmZaMUw0cFdnSWNlL0dLaS9pWXJiQU9JNzVQM05YQWJRQVJnVlZJQjBEMHhCNkF1cStOMkQwNm5iZXRPcFZ6RTRmL2g2NTlML1plZlRsV0xTZzZva2dBQWdJNzUwbGNlU1hVUVU5NnJQZ2h4YWQ5NzVnZXBTbmZ1dWlNMVNkeitmL3pYcWl2L1B6TnJaRHJSUFJQejlUZzg5bC8rV25yNG4vd3NpeEJnOGZCZmRkOS9pTkwvZ3dzMkFGQXRBUUFBSFZPdlZvQTcyck1KcUsvL2RxRDZPUUJOcWdLb092VDZieFhQZFNqQnhJbisydXlQWHd3QmRxeXZicVhucGRUcDhCK1UvMU1IQWdBQU9xb3VyUURoM3p6NFIrMVNiK3FwRGtQNDdyL3Y4NDM0SHFuNjlqLzg1Ky8rWGFLNzZyQU84R3dSQWp5dzlWQjdzbjdkUkREeCtJM1AxdWJ3SC9ZZkgwaFFOUUVBQUIxWGwxYUFXUGYyenovVHJETHZKdW4yZXNxbGlPK1JUKzM4Uk1yZG5sYVFVYldxV3pwS01YcjAybFEzbjJrRkFISFRQbFNEdy9iNnkwKzMxeFZHTUZHSG52OUZUNSs4eXZSL2FrRUFBRURIMWFrVjRMYy8rWWxHRG50cml1L1ZvQW9nMmtWeS9oNkpmLzVvWjZpUy92L2VpUjN5ZFdrRE9Oc3RWNTFNVDl4MHNGME5VRVVRRUFmLytMLzl4TTBIMHUwVnIwczhuMis5dERGQkhRZ0FBT2lLT3JVQ05LWE11NG5xc2pZdXZrZHlYQjhaY3k3cU1QRHlPeFBLLzN0cGZIWlRxcXZGYW9CN2h3NzNKQWc0KytBZi83ZnJkT3UvS0c3K254SUFVQk1DQUFDNjVnLzMvRW1sdTk0WGFRV29yLzljazROamZJL0Urc2ljZ3FMbys0ODVGM1h3TjkvOSswVHY3SjhkcUdVVndLTG91Nzl0NDR2dGlvQUlBMjU3NTRzZERRUGkwQjkvLy9oNzEvbmd2MmlzaG0wYmxHdHRBb0F1aWJMZ2FBVzQrNjdQcGFwRkswRGNVdFpoOEJ5L0VBRlJWQUZVWGNJZVluM2tvdzkvT2YzKzNWK29SWEIxTVhINC83TkgvblU3dUtoYS9Kejd1ZXF0R0FZWVZRQjFITDUzcm1nTmlLOXdaZzNldW5SZ29hKzlEaTlDalBqL203cEFiM3lFQmpGb2NNc1ZyN2ErWGs3YjNyR1FibTM5dmVvd2EyQ3AzUDVUTndJQUFMcnE2K1BmU0IvZThTdTFPT0RGRGU5dmZmcC9yLzNocmpRUnpOVGgreU5FQ1BBZkgvOTM2ZmMrLzRWMGVLcWVQZTFSOWg4My8zVTQvSWM2ekhFb1VWUUI3Qnc0VnV1YjczTkZaVUI4N2VpdjcrckFUblA3VDkxb0FRQ2c2eDdZKzBndER0MVIzdjNGZSs5TzFNczNuL3AyclVLWk9Gai8yU05mcnVWZ3dFL3QvSzMwdGEvK3U5b2Mvc09mdDBJK2VtK3hDb0Q2Y3Z0UEhRa0FBT2k2eFZhQU92akloejdZUGtSUkgzSDRyOXNRdWNVUUlDYnMxMEdVL0VkN3d0MTMzWm5xSkFaOS9yZ213ejVMVlBkWkFLVnorMDhkZVdJQTBCUFJDbENYaWU4eE5UM0hpZTlOOXVSZmZqdlZVWHl2Zk9PSmY1OCtmdHZIVWhVMnJGL2ZEaUgrWSt2V3Z5NXRFbWY3dXR2L1NrVVZ3TWgwZmFwQitJV25YdHpvOXA5YUVnQUEwRE4xYWdYWWM1OVdnRHFKSVhKMUNZak9GZFVBZSs3Ny9KdEJRQnpLdTIzeDRQOFhmLzRmMmlGRUhiY1RSR1hQazAvVk03Z3BTUnd5bnpsNVZhSStvdlIvN0pqYmYrcEpBQUJBejlTcEZTQnVVN1VDMUV2ZEQ1T0xRVUFjeXZmYysvbjBrUjBmN0dnWUVGVXBuOXI1aVhhcC8xLzlQLzkzYlEvK2l4eis2MlB2MUxCV2dCcUowdi9KQzJ3MmdLclpBZ0JBVDlWcEswQWNzTDd6M2IrdDdiVDMwc1F3d005RmUwYU5CdHlkVHh6S1AvNXJIMnQvaGVpRGIzOGRQTk1QSDFVdUVYYWRtRDkvdFVzYzlEZjA5N2MzRHZTMy9sN3Yzblp6KytlaDdyL3ZzN245cjVmMmpmT1J6V24zNEZTaVdrci9xVHNCQUFBOUY2MEFzV3F0NnR2TnhWYUEyUHRPUFR3KytrUzZ2M1hMbnBNNHlNZFhTZUx3ZjNoU2NGWW40OGNIMHJhK1UrbTJkNzZZcUVZRU1TTXpaakpRYjJxRkFPaTV1clVDUkNVQTlmRE45c0hTTFdhZG5mbjVmU0pSUHlQVGcwclBLeEl0R1BjY3VrRXJCclhuT3hTQVN0UnJLOEFkNlYzYnlyckJyYk12ZmVXUlJIMDUvTmRYYkFXSVE2Z1FvUGYySHI3T256dFpFQUFBVUptNmJBVUkvK2JCUDZyMXdMV1MxSGtqUU9taTlGL3ZmNzNGSVhUUEMxdmRSUGZRNk5GcjA4UjhmNEljZURJQVVKazZ0UUxFQUxaLy9wazdFdlZRcDNDSU0rTGZSMTErWHJtNGd3dDk2ZTZmS1VmdmhUajh4OVIveUlXbkFnQ1ZxbE1yd0c5LzhoUHBmYmRVdjUyQWVvVkRuQkgvUGd6K3k0Y1FvUHNjL3NtUkp3SUFsYXZUYlc5TW9OY0tVQTkxQ29kS0YyWC84ZStEdkFnQnVzZmhuMXg1R2dCUU9hMEFYTWk5ZXg2MEZhQmlxakh5RmlIQTcvN2pUUWJVZGRDK21TR0hmN0lsQUFDZ0ZyUUNjRDVSR2ZKL2ZQRlB6QU9vU1B5NS85N2RYMUQ2bjdrNC9NZDJnSU1MNnhJckY1VVVVVkd4ZjNZZ1FhNEVBQURVaGxZQXp1ZkhCMytTSHQ3M2VLTDM5UDAzUjRRQW4vdkhtOXFsNnl6ZmdWTm5LaW1lK2ZsVkNYSW1BQUNnTnVyV0N2REZlKzlPMU1NM24vcTJNdlFlaXo5dmZmL05FNlhyZXllSHRRUXN3L2pzcHZTN3ovMlNQek1hUVFBQVFLM1VxUlhnSXgvNllQclV6dDlLMU1OWFI1OFFBdlJJL0RuSG56Zk45TlJMRzlzdEFmRXJGeFlIL2lqNUg1a1pUTkFVQWdBQWFxZE9yUUIzN3ZwMEdoN3k4bGNYUW9EdWMvZ3ZReHh1b3hKQU5jRDVSYXVFa24rYVNBQUFRTzNVcVJVZzVnRHN1VThyUUowSUFickg0Yjg4VVFWd3g3UGIwc2owa0NDZzVlbVRWN1gvUEtKVnd2cEVtc2gzTlFDMVZLZFdnUGZmK2w2dEFEVVRoMVNEQVRzci9qd2Qvc3MxZm55ZzNSWVFOOThsQmdGeDhJOXkvL2d6RUlUUVpBSUFBR3BMS3dBWEV5SFJIWGYrUWJ0aWhKVnJyL3I3L0JjTS9LTjk4STJiN3pnRWw5QWFFRGY4VDcyNDhjMkR2M0ovU2lBQUFLQzI0bUQzd0ZjZVRuV2dGYUNlWWtYZzc5MzlyOUtQRHZ3a3NYeng1L1k3bi9zWDZmdlAxS1BhaG5xSWcvOWlhOENlNTdjMmJsaGczUGJIWUw4N2ZySTk3WjBhZHZDbktBSUFBR3J0T3hOL24vN211MytmNmtBclFEMUZVUFE3bi9zRGN3R1c2ZXZqZjVGKy8rNHZ0UDc4cGhOY3lNVDhoblkxUUlRQjhXc2Nubk1VLzl6UjN2RHAxdThqYnZ0anRaOGVmMHEwTmdGQXpUMjQ5K0hXNGZzL3RHL2hxM2IzWFhlbTd6MzlnL2JOTS9VUy9ldFBQdlZYNmM4ZS90ZHBlTXRRNHZ3aU1QblNWeDV4NjgreVJGWEE1Q3NiMjlVQS9aZWZUcmRjT1o5MmJKaEwyOWFkU3R2WExhUzZpWC9lT1BUL29IVzdQekczd1dFZjNpQUFBS0Qyb2tjNVdnRWVldkNMcVE3K3pZTi8xTDV4cnN0OEFuNGhEcmVmK1BRL1M1L2ErWW4wMjYwdlFjQXZ4UGRyM1BwSHI3L3ZYVllqRHROUkdSQmZZVEVRMk5hMzBQcjFaT3BmODFwUFE0RTQ3QjlZV0plbVhubEhldWJrbGVtWm42OTM0SWNMRUFBQWtJWEZWb0NQZk9pRHFXcHhxUHpubjdralBUSmlDbjFkeFNFM3ZtZGllT1BIYi90WUt0MzNuLzVCK3RMZVI1VDcweFhuQmdJaFFvR2hLMTVPVzlhK2tyYTg0NVUwdFBiVnRQN3kxOUtXSzE1cC8rZm4vbnFodisvY2EydmFmeDJIL01YLytTY3ZyMnYvdW5qb2Q5aUhwUk1BQUpDTk9yVUMvUFluUDlFNllQNmRNdW9hT3pORThwRjJhMENwUVVBYy9COXYvZjU5bjlKcjdjUDZRbDg2MlBwS0NrNmdOc1JsQUdSanNSV2dMdTYvNy9PMUNDTzR1TVVnSUZvRG5uenEyNDFmRzNpbTFQOGI3ZFYrc1NIQjRSK0FSU29BQU1oS2xIWEhJYTRPdDdsYUFmS3lHQVNFMzJoOS8vem1iZjgwdmUvV1gwNU5FYmY5ZjlQNitmaG02K2REano4QTV5TUFBQ0E3ait4N1BMMy9sdmZXWXNDYlZvQTh4U0U1dnVKNzZNTTdQcGcrMHZyS01ReUlRLy8zV3Q5N1QvN2x0OVBoS2YzOUFGeWNBQUF1b0tvU1ViYzJ6ZWI3cWpQaTl4TnJ6S0lFdnc3dS9Pd2Q2ZDR2UHVqbk4wUHhNeG5sOHZFVlljRDdXc0ZTaEFIdjNuNXpMVGNJeEQ5dlZNSDh0d00vU2YrNUZUejVuZ05nT1M3N3dFZC8vZlVFQU1CYlJBRHc3bTAzcGZmZitzdnRYOSsxZlZ0UFp6N0VZZjlIcllOKzNPeC9yM1hUSDFVbUR2d0FySVlBQUFCZ2lTSUFlTmUybTl1L1JwWEFodjcrTkR3MCtHWXdzRmcxY0xIcWdUakV6ODNOdGY4NkR2a3ZURTZudWZuNTFxOVQ3ZjhzRHYyVFUxTU8rd0IwbkFBQUFBQUFDbUFOSUFBQUFCUkFBQUFBQUFBRkVBQUFBQUJBQVFRQUFBQUFVQUFCQUFBQUFCUkFBQUFBQUFBRkVBQUFBQUJBQVFRQUFBQUFVQUFCQUFBQUFCUkFBQUFBQUFBRkVBQUFBQUJBQVFRQUFBQUFVQUFCQUFBQUFCUkFBQUFBQUFBRkVBQUFBQUJBQVFRQUFBQUFVQUFCQUFBQUFCUkFBQUFBQUFBRkVBQUFBQUJBQVFRQUFBQUFVQUFCQUFBQUFCUkFBQUFBQUFBRkVBQUFBQUJBQVFRQUFBQUFVQUFCQUFBQUFCUkFBQUFBQUFBRkVBQUFBQUJBQVFRQUFBQUFVQUFCQUFBQUFCUkFBQUFBQUFBRkVBQUFBQUJBQVFRQUFBQUFVQUFCQUFBQUFCUkFBQUFBQUFBRkVBQUFBQUJBQVFRQUFBQUFVQUFCQUFBQUFCUkFBQUFBQUFBRkVBQUFBQUJBQVFRQUFBQUFVQUFCQUFBQUFCUkFBQUFBQUFBRkVBQUFBQUJBQVFRQUFBQUFVQUFCQUFBQUFCUkFBQUFBQUFBRkVBQUFBQUJBQVFRQUFBQUFVQUFCQUFBQUFCUkFBQUFBQUFBRkVBQUFBQUJBQVFRQUFBQUFVQUFCQUFBQUFCUkFBQUFBQUFBRkVBQUFBQUJBQVFRQUFBQUFVQUFCQUFBQUFCUkFBQUFBQUFBRkVBQUFBQUJBQVFRQUFBQUFVQUFCQUFBQUFCUkFBQUFBQUFBRkVBQUFBQUJBQVFRQUFBQUFVQUFCQUFBQUFCUkFBQUFBQUFBRkVBQUFBQUJBQVFRQUFBQUFVQUFCQUFBQUFCUkFBQUFBQUFBRkVBQUFBQUJBQVFRQUFBQUFVQUFCQUFBQUFCUkFBQUFBQUFBRkVBQUFBQUJBQVFRQUFBQUFVQUFCQUFBQUFCUkFBQUFBQUFBRkVBQUFBQUJBQVFRQUFBQUFVQUFCQUFBQUFCUkFBQUFBQUFBRkVBQUFBQUJBQVFRQUFBQUFVQUFCQUFEL3ZSMDdFQUFBQUFBUTVHODl5SVVSQUFBREFnQUFBQUFHQkFBQUFBQU1DQUFBQUFBWUVBQUFBQUF3SUFBQUFBQmdRQUFBQUFEQWdBQUFBQUNBQVFFQUFBQUFBd0lBQUFBQUJnUUFBQUFBREFnQUFBQUFHQkFBQUFBQU1DQUFBQUFBWUVBQUFBQUF3SUFBQUFBQWdBRUJBQUFBQUFNQ0FBQUFBQVlFQUFBQUFBd0lBQUFBQUJnUUFBQUFBREFnQUFBQUFHQkFBQUFBQU1DQUFBQUFBSUFCQVFBQUFBQURBZ0FBQUFBR0JBQUFBQUFNQ0FBQUFBQVlFQUFBQUFBd0lBQUFBQUJnSURQSTh6U0ZiYmxjQUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIkZJRE9fMl8wIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiJiYTg2ZGM1NjYzNWY0MTQxYWVmNjAwMjI3YjFiOWFmNiIsIm9wdGlvbnMiOnsicGxhdCI6dHJ1ZSwicmsiOnRydWUsInVwIjp0cnVlLCJ1diI6dHJ1ZX0sIm1heE1zZ1NpemUiOjIwNDgsInBpblV2QXV0aFByb3RvY29scyI6WzFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjEwMCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoxMjgsInRyYW5zcG9ydHMiOlsiaW50ZXJuYWwiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fV0sImZpcm13YXJlVmVyc2lvbiI6MX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJSRVZPS0VEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjMtMTItMjAiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MX0seyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMy0xMS0wNyJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjMtMTItMjAifSx7ImFhZ3VpZCI6IjNlMDc4ZmZkLTRjNTQtNDU4Ni04YmFhLWE3N2RhMTEzYWVjNSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiM2UwNzhmZmQtNGM1NC00NTg2LThiYWEtYTc3ZGExMTNhZWM1IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkhpZGVleiBLZXkgMyBGSURPMiJ9LCJkZXNjcmlwdGlvbiI6IkhpZGVleiBLZXkgMyBGSURPMiIsImFsdGVybmF0aXZlRGVzY3JpcHRpb25zIjp7InVrLVVBIjoiRklETzIgS2V5IC0g0LLRltC0IEhpZGVleiJ9LCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwiaXNLZXlSZXN0cmljdGVkIjp0cnVlLCJpc0ZyZXNoVXNlclZlcmlmaWNhdGlvblJlcXVpcmVkIjp0cnVlLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWxlc3MiLCJibHVldG9vdGgiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNyVENDQWxTZ0F3SUJBZ0lSQUxoZDk0LzQzMTJJbXpraWVtOWtVdmd3Q2dZSUtvWkl6ajBFQXdJd2dhY3hDekFKQmdOVkJBWVRBbFZUTVFzd0NRWURWUVFJREFKRVJURU9NQXdHQTFVRUJ3d0ZSRzkyWlhJeEdqQVlCZ05WQkFvTUVVaHBaR1ZsZWlCSGNtOTFjQ0JKYm1NdU1TVXdJd1lEVlFRTERCeElhV1JsWlhvZ1EyVnlkR2xtYVdOaGRHVWdRWFYwYUc5eWFYUjVNUmN3RlFZRFZRUUREQTVJYVdSbFpYb2dVbTl2ZENCRFFURWZNQjBHQ1NxR1NJYjNEUUVKQVJZUWJHVm5ZV3hBYUdsa1pXVjZMbU52YlRBZUZ3MHhPVEV4TWpjeE5ERXdNVFJhRncweU9URXhNall4TkRFd01UUmFNSUdnTVFzd0NRWURWUVFHRXdKVlV6RUxNQWtHQTFVRUNBd0NSRVV4R2pBWUJnTlZCQW9NRVVocFpHVmxlaUJIY205MWNDQkpibU11TVNVd0l3WURWUVFMREJ4SWFXUmxaWG9nUTJWeWRHbG1hV05oZEdVZ1FYVjBhRzl5YVhSNU1TQXdIZ1lEVlFRRERCZElhV1JsWlhvZ1MyVjVJRVpKUkU4Z1VtOXZkQ0JEUVRFZk1CMEdDU3FHU0liM0RRRUpBUllRYkdWbllXeEFhR2xrWldWNkxtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCQ0JMeWovbTNSRHpZM0lGZDNNc3lnNGV4bWtMR01oQzZhR0grVW16bDAxYmJUbW82SVFjT2FvcStyYUlGd0d2aTNzd0lDSVBDcVVLS21Hb2hyU1VvS3VqWmpCa01CMEdBMVVkRGdRV0JCUUs4WVY5ellhWEVhZzYzL05Ca2h5dUFRM3ZQREFmQmdOVkhTTUVHREFXZ0JTbW9pM0Zpa3kxcTJpVFhaR01DSjdJTlNGcW1qQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUFNQTRHQTFVZER3RUIvd1FFQXdJQmhqQUtCZ2dxaGtqT1BRUURBZ05IQURCRUFpQW5OOHpkdHdGcEQwTzFoWlYwellTdmhTeGk4bjgwQjdobDJJN3dKR1VveXdJZ1BxR3VVb3ZrYTl6K0t6dlVzZitHTmRTNVlibng2NU96eXF4Q05UeEtqVlE9IiwiTUlJQ3NUQ0NBbGlnQXdJQkFnSVJBUCtXM1F0bndNeVhhZnVRb05hWGNxVXdDZ1lJS29aSXpqMEVBd0l3Z2FjeEN6QUpCZ05WQkFZVEFsVlRNUXN3Q1FZRFZRUUlEQUpFUlRFT01Bd0dBMVVFQnd3RlJHOTJaWEl4R2pBWUJnTlZCQW9NRVVocFpHVmxlaUJIY205MWNDQkpibU11TVNVd0l3WURWUVFMREJ4SWFXUmxaWG9nUTJWeWRHbG1hV05oZEdVZ1FYVjBhRzl5YVhSNU1SY3dGUVlEVlFRRERBNUlhV1JsWlhvZ1VtOXZkQ0JEUVRFZk1CMEdDU3FHU0liM0RRRUpBUllRYkdWbllXeEFhR2xrWldWNkxtTnZiVEFlRncweE9URXhNamN4TkRBNE1ETmFGdzB6T1RFeE1qY3hOREE0TUROYU1JR25NUXN3Q1FZRFZRUUdFd0pWVXpFTE1Ba0dBMVVFQ0F3Q1JFVXhEakFNQmdOVkJBY01CVVJ2ZG1WeU1Sb3dHQVlEVlFRS0RCRklhV1JsWlhvZ1IzSnZkWEFnU1c1akxqRWxNQ01HQTFVRUN3d2NTR2xrWldWNklFTmxjblJwWm1sallYUmxJRUYxZEdodmNtbDBlVEVYTUJVR0ExVUVBd3dPU0dsa1pXVjZJRkp2YjNRZ1EwRXhIekFkQmdrcWhraUc5dzBCQ1FFV0VHeGxaMkZzUUdocFpHVmxlaTVqYjIwd1dUQVRCZ2NxaGtqT1BRSUJCZ2dxaGtqT1BRTUJCd05DQUFUdXRoLzNjY1ZsSS9oR3lKN3pTTmFxaENMRHlLTTlKdVpOamNUc25EQVl5UkRPcHpZRVdpTHFzM2pkZlZLZDNWZ3Y4L2orZm9ETVNNcEkrbXdqT3ovcG8yTXdZVEFkQmdOVkhRNEVGZ1FVcHFJdHhZcE10YXRvazEyUmpBaWV5RFVoYXBvd0h3WURWUjBqQkJnd0ZvQVVwcUl0eFlwTXRhdG9rMTJSakFpZXlEVWhhcG93RHdZRFZSMFRBUUgvQkFVd0F3RUIvekFPQmdOVkhROEJBZjhFQkFNQ0FZWXdDZ1lJS29aSXpqMEVBd0lEUndBd1JBSWdONGdNKzl1M05CTE1rZEVXMVBhREc5T2xaWmlVYjZ2aENNTU5pNDVxMDZzQ0lCOEE4S2w4dFJWL0drSllQUytydXkwbkxTM1YrdENGelRJRWlCQVlrN2lBIl0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUlBQUFBQ0FDQVlBQUFHME9WRmRBQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQXlScFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR3L2VIQmhZMnRsZENCaVpXZHBiajBpNzd1L0lpQnBaRDBpVnpWTk1FMXdRMlZvYVVoNmNtVlRlazVVWTNwcll6bGtJajgrSUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWtGa2IySmxJRmhOVUNCRGIzSmxJRFV1TXkxak1ERXhJRFkyTGpFME5UWTJNU3dnTWpBeE1pOHdNaTh3TmkweE5EbzFOam95TnlBZ0lDQWdJQ0FnSWo0Z1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNGdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlnZUcxc2JuTTZlRzF3UFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdklpQjRiV3h1Y3pwNGJYQk5UVDBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5NFlYQXZNUzR3TDIxdEx5SWdlRzFzYm5NNmMzUlNaV1k5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5elZIbHdaUzlTWlhOdmRYSmpaVkpsWmlNaUlIaHRjRHBEY21WaGRHOXlWRzl2YkQwaVFXUnZZbVVnVUdodmRHOXphRzl3SUVOVE5pQW9UV0ZqYVc1MGIzTm9LU0lnZUcxd1RVMDZTVzV6ZEdGdVkyVkpSRDBpZUcxd0xtbHBaRG94TWpGRE9VSTJPVFZCTURFeE1VVTFRa1JCUkVRd1FrSkZNVVpGUmpoR1JDSWdlRzF3VFUwNlJHOWpkVzFsYm5SSlJEMGllRzF3TG1ScFpEb3hNakZET1VJMlFUVkJNREV4TVVVMVFrUkJSRVF3UWtKRk1VWkZSamhHUkNJK0lEeDRiWEJOVFRwRVpYSnBkbVZrUm5KdmJTQnpkRkpsWmpwcGJuTjBZVzVqWlVsRVBTSjRiWEF1YVdsa09qRXlNVU01UWpZM05VRXdNVEV4UlRWQ1JFRkVSREJDUWtVeFJrVkdPRVpFSWlCemRGSmxaanBrYjJOMWJXVnVkRWxFUFNKNGJYQXVaR2xrT2pFeU1VTTVRalk0TlVFd01URXhSVFZDUkVGRVJEQkNRa1V4UmtWR09FWkVJaTgrSUR3dmNtUm1Pa1JsYzJOeWFYQjBhVzl1UGlBOEwzSmtaanBTUkVZK0lEd3ZlRHA0YlhCdFpYUmhQaUE4UDNod1lXTnJaWFFnWlc1a1BTSnlJajgrdnI1WElnQUFFLzlKUkVGVWVOcGlERGw2Z1FFUDRBTGlCQ0NlaGtzQkV3N3gvMUNzRGRXOEQwa01CYkJnMFFnQ0FrRDhFVW5jQ1VvL1JsTERpRzRBaWdRT0lJdWs5aThRTTZPN0FKOW1kSFgva2NQZ1B3bWFVUXhoSXRGbWRIQUZaQUEzRUo4aEVCdi9jY2pyZ0F5SUIySmpNbDBBRG9OcERCUUFGaUlDaXFBTFlHQWRpWmIvUjNZQkk1NkF3dXRDOUx4d2dBVGJQZEhEQU9ZS0pTQytoMGR6QUJDN0FQRmViSUhJaUpZdkNBWXNRQUF4RWlnUHdvSDRDeEJ2SlNVYS94TndFU08rQWdVNVN6T2lhY0xxUFNZMHpWWUVFZytHSVN4a1pHZEdwQXdHVHdmcFpKUUZjQmY4SjdNOEFPbjV4MFFndGNHd0U3RkpHUmZZUzJxOUFBTDlCTEwxVFBSQ0ZSMFVZVWtQeUNBTmlFOHdVVkNnZ29BbHNoZnFTQzFNa0wwQWNrVWpPV21CQ1Z0dFE0VHRqTGhpQVNTeEJ5ME5JR010OURBRENDQkM1UUU2K0F6RVBHaGkzNkR0Q0dTd0hJaWppSzFYR0loTXpmK2hsak9pWVc0MGZpY1FSNkxwU3lhM2dZTWM1b3hFSnJrS0xPcm40S3FpbWZCWURET0FpWUV5Z081d2tQbXF1QXBVRUJDbE1ITVI0NUJiUUx3ZHVVQitEY1RuZ2RpSWdmWUF1VlpnaFlXQUNCQjNrOUcwUU1hVHlYRE1MNUFEUXFHY1plUVVSVWdnaDV6bURSTTBIdzhZWUVKcmRGU1JFSS9tQkZJN1NZWDVRaWpkU29MalQ1RllQc0NBQ2JZcU9ZRkEvRklUbkliUzV0aHFvMVFhT3dLNWtEdUZyU1NjUTJRTGwxUWdCeld2SHoyNldBZ1VGdEpBL0FTTC9CMW90ajBHN2ROS1FodjhvS2hrSmFJNEpycVQ5QlJOSXlqRS9nQ3hDcDRtekZtMGhJWVhBQVFRcWUwQmxBWVYxS0x2UUx3ZmlPL1NvcHVJREh5QWVETUo1Y3QvWWhVU0FpZWdobTNHRWEvWTR2Y2ZVaE9Nb2hENGp5Vk55QkRiOXdHQ3E0UTYzTGhDb0FHTDVZeDRMQ2VVNHYrVDRvQWxRRnhQWmhtUDdwQUxoQnlCN2dBeklJNG1Zd1FKRnpERTBlckM2WUNUVkxTY0FVZjNGMjhubTlxVzR4cWdtSW92RGREQ2NuU3pzOUFkOEo4T2xxTTdvaDViZFV3dndBZk42bUFIYUE5QVUvQXpja2w0Z0lMVVRXbmFZV0tDOWdrb3RaemNCa3dmT2YyKzUxU0lnakpZRFl2c0FDNGlOVXZna2ZNaTBvd21tSjNJRHBoSHBPWWxlT1MyRVdrR082eDJSWFpBT0pHYVk2bVlHK1l6UWR0d2xCU3JETkRHS1RtNVlCb0x0RjMzbndxT0lCYnN3MWNiZnFGREllU0l6d0hjZEN3TjVaQWRnQnljTFRTMEZEbXFINk9Id0Njb1hVMm55Z2dqQ3ZpeE5SaG81UHZQdU5JQVJvT0J4aTBqdkMyaUR6VHFsaFBWTDJDRVJra1poUll6QS9GR2ZPVUdDNEdnQXJtOEU0dmNHaURleEFBWmNBUjF4MDJoUmJrNWpvS0hrZHl1R2E3QmloQW9wcmkwWkNJaDRZQndEeEZxclVucFRRRUVFQ1hqQThRQ0RTQXVoUGE0U0NscFFaUGpvTkhYUmJSMEhCT1Z6ZHZPZ0RtRWZKMEJNc1dGN3ZrU3BKamlCZUtYYVBLZ1Nub2hBL2FaSDZQQkVnQUZhQTd6d0tIdUk5U1R5T01wdldpTkFBazArVmw0N0QyTFpPY3ZlZ2VBSHBMbC9UalV2RVB6akFBWkxaMTBORE5XNEZESGl1U2VCN1FNZ01WUVN5NFM0V0JoR21UWFNDVHpGWENva1dmQXYzaUdyQUNvZ3hvWWc2MUZUV1NTcFRaNGlHU3ZINTdhbjJCQWtEcEVDUU84ZEdxOEV3TTJNK0NmWFBnUFRiMXhwS1NBWWh5R3dVSjlzSGdlbC91d2RXVC9FNXNDZGpOQVZpcWhCOVIvaHFFRGNLV0kvNFJhNCt2UlBHL0JRUDVDczhHYUluQ09FQWN5UU5hcGdjQk1xTWFURE1NRFlGczZnUkVBNjVBVVp6QU1Ud0R5MjJ3b3V4czVBSkM3NEVwMGNJZ250TEdFM0lwY1FhZEFTRVZxaXNNREFIa0lnSmJEQVREUGdzWXdCZEhrd3BIazk5QXBNRHhBQVdDSnBRcWtOZ2dqc1NCMXBsSEJxNC9lSVdOaUlHRnVuUUt3a3R3WW9ySTcwTWNUTkVFQjhCMkx3c0JCVW1qZG9ySjVMdGhhZ3Z1d0tGeEZvNFlKcVdNTDk2am9CbE1zWW51WWNGZ0NhaUZ5MGlBUURwQ2cxb3ZLOWgvRkl0YU5iZDBXREx5bFFaSjJST3ZqdTBGN2Mwb001QzFDSTZYd3c3YVk2UXI2eWpsa0FFb0J3VFRPNDd1aHZibjdOTGJuQW83SVFHa0pZdXNZclJrR3JiOVhXTVF1dzdJamNnQ0F0bHhaa1RBbU1CUUFxSE1uaWtWY0QxZHY4RGdEOXRtRm9SZ0lVNUU2ZHpockpHd0RJcWR3RkVSREtSRG1ZbW5TYjhMbUwwSnpVOWRBclNWOEF3cURFT3dDWWxkaTJ5R0VCa1cxY0F3b01BMVN6ejlHODN3ZG9RZ2pkVzRPdWNEVUhXU2VCMFdNREpySG13bHBZaUhSRWxnZ2dQcnVsN0RJZjRQbXRRME1rSzBCMUJ3OEJRM1ArVUlMTmkxcU5ibXBNVGs2ZzRIMGZZWFVCS0IxVDJSUGoxRWpMMmVnTldOcmFPaFpVSXRSR00wK2l1WUdXV2pneUZZRzdKdFJXS0J0ZjJkb1EwUUJxY1BGREMzQWJrSGJJcUNTL0RZOWtnOUFBUEt1TFNTTElBb2ZOYVJBSkJJU0k3c1FXa1NRSlVaSm1kM3dKYXhlSW9nc0VJd3VoRDBJMG9ORzBVTmxSUTlaVVlFUUJSS0lrUkhkeUNMeUlTcVFJZ3NpcU1nS29ZY1NwRkRyOUovaDM2WXp1N1A3ejZ5N2Z4LzhvTE96TzNPK25jdVpNMmZPaHVFZklLT1lmZ1cwUUVIaFB4RUJXSm1oTUNzekxvUXlhbW1NS1BOeER3NmVsMzcvamhpMkNWZ1pBMlRnRzIySHBJSHp2SXZ3cWxOc09VVGFHM3JHZCtvK2tTWmdNVlVXei9oczlNaUw1MERRWFU2Y2htM3d5SS81YnRMek82Tkd3SHlxV0k5R1hyR1Rpd3JMTjBkNkM2V3YwSGpHT2lydlhoUUlHRkVZRzJRMGcvdGV2a0EzNVNza2JkTU5sVVJFM1ZnUXNFZHpZYlNOOGh6dytmd1BORURuYUt4Q3o2YXlVZzB5QytDVWxlK1JaemVZOFhnZHBKZUVVK1pIamJVQXV1UzlzdGtDUmoyRXYwaHYzTFM3Yno4OTEydWpwQTlvejg4R0FXN043QWRWc01heVRuR1R5bm5ra3Vjb3JVK01FdUFtL0ZaSUhzUUlDK2dPTzgzbE91b1FyYWJHQU8yNFBXTmcvTWdndlNPTHViNkRGS2xqcWJTQVVSZFZOU3Ftc1hHMGVPTFE0bVc0Y1NQZ2lpTDlLU1RjNUtLRUtsREh0K2tOUWtBSjhQN3c2UDFmQ3RIRWZsQkh0Qm55UzhBekpnMUQ1cXlIYUFQcnVGWmhOZHF1UzhCRkpxMExOT01GUlFEWHFVdklPS05MZ093VC9BQVN4c2c0QVFkRmJudTl3NHNBMlZuaTNlL2Zjb2duYmpDSzJRWXZBdVRsNkhTSU43QTdOMHBwYlNvQ2prUkl5VEVKUEhaMld0SmNXUUlhMGxCNGdaMjBqaEJZSXhPUTY3aVlCZWtKWEVrS1UvczVtUUJ4T2hGUGZZeEErcUpZSHRzRUFjSTV1Z3orSDh6a1pvRUZJUlhlQVg4N1NtT012WlVodGdDeFd2eERRRzZJckxlUndQSjhqUEU4N29KOUw1UmxqcjgzaWFWa1ZVakNvNk5pdWFiOXdkWXM1SFFNTHhRdElJeW1WNjBwdkpjZElsWElEbURabVV5L0w3WlE4TlVBOTZ5MlVJOTUwdjl6TWlFWm5sMmd3bkNoUWUyRnJTRzB6R2xJd0VTUDlZQUpCU1FJaWtJZ1lFSW1vL2lzTWx4SUhrUURYRnk4REJHeDBZbDh3d1VIOWNBWU5sd1B6cWJ4NTFzSUE1YVpmeHJ3UHRPSHNibDRVZjFJd0F2bXdnekRoZmNFdU1mMDZUWE9zTk9IQkhBZnNxZzFYSGk1ei93SFF4b1hCcENBMjh5Rk9ndUY2ZTVFbzg3UVpManNRdFVGSklBN0h6elpBZ0hEOEcvUVR4bm9QbWZEOU43SXBOM3hlaXRJd2hjTGxSR2FKNTRUd3JDT1E0cFdhQkxjZUhMS3VSem1Cc0lXeTVWQzk3ZHJJUWl2UXFlVEFLNkpiSUgwUUwzYlJVRkFsK0o2ZmhvUWNNSnRuWkVwTlVrWjEyTXVmSTRpZlJkSEFMZXBXQnB6QXJoUW8wTmNGMEM4VkR6a2VJd0pXT1psRlBIYUdrUHNqYW53WnhYcHZXNEVkQ3R1YW80aEFadzJPMWMxQ3pneGhVbmJud1p2L3hQWHpUa0MraFhLeWFHWXYvMENOejFBQnVlYnZ5OG13blBPWFp1OUZDRU8yVXhhZXd3SWtKMjdNUHpmNVNBRS9JVGtoNUVFTmtaY2VNNjVxMFJIRlZZQjR3ZkluNlY2SFZIaHh6UENHZ2xyaTlHRm5aNWpSWmJzQmFuaXExL2hkUWxBMUVqTDQ4OFJFMzRodFFCZnd2c2hBSUV1Tk9zYy8rTVdkeldNN1VueUltcWhUeHpqbHErTlZiK1Zkd1lod0MxdXROK2hxVXZzOCtNZzFPUTE4QVRBSkxKUElPay9IT1hoZUNTOFd5NG9aaTVYQkQwNGlTUThoSVRmdmp6aTRrOTJYTWJ6Z1doOWZrN2EySHRITjhLZHFUeFNWR1pCd2t5R3ovRGpvb2R4UWdMdGI2UnljblFwSkQ3UE1haVJGL05WZ1BtTjE1UGdZZkV4M1FXQWViUFlHaGFGM1BlN3FOejZWQjlrYWdCN1RCWENwdmpPb3VEaU02ZkdmSmROaitBRDFIZXhrcFdnamtLdEMvR0JBZkhwNGNPbUdiVjVldnkrTkJ2TXBrWFdFcHErcGtKeUJ4aTcwbHNpREkvRTNnTHp1OE1zZmduUTNybUdXbEZGY1h4NTZGSmtKSVNhbU1aTkw1bWlmYkNJb3VncTlwS0V5cEl3QTgydWxOME1OQXNxK3hKaG9XQ1o1YU9YVnBiYUE3T1hrZDZNb3FMOEVKUm1ENU1rUDVRYTJBUExNc3pmUFd0M2h0T1ptVDJQTTJmbTNQMkhnOWR6WnZiTTNtdk43TDNXWHV1L0dzRWZVRytRemtNQ1padCtCcXVQbzY5K1R0QkZVNHRVWWlOS09yMytvUzkxTkhtditoQ2c4ZjVPUHpzc1gvcUZ3VEVGdkdkWU40aDFucUJQVkZvUi9jelVKbHFvTGNKNUtFYVhyZ2szUzBKS2s2eFJ5dm45dGFveHZ0K3orRDJvZ3owamdmQVBTWGx2cUw4dXNwZm9kM0hBMmhVSDNKdmFocmxQM2lEenhhNWlwMU1BQlF1SFR6MkR5THc0VjVLSG1XRXFUcFFLOFJCVEFIdGorOVNKY0p0K1ozNm5sTVdYQ2EvSml2QXVOWHBNZjk2VG5JWGpOMW9CbUpOZjlnelFsaFFHNkM5OXVrLzFDQlRpNlBVUjJsaXJGcWs1bjcvVG9CbHVyMUp3ZUZ6NzlEUUZZRFg4aFZSeUpKS1MxdktxblNYbE5DZUVkYXcrM1Qra2VNKzhEYTcxS0FSUDk2UHkvL2pTcU1ETGVFREhZcXNFMHlFVVdnRndVcjJ1SFlYaFkyU0N0dGkwbSs0Unhza3FqQ3pUdlBhcjByVjRGR0pad2piUFZvdmppTDV0ZWpXREFseXZIVG9rdFVOUGJJQ0w5MTYxV0hxcFNiY3laMnNYRk9JV2oxS3kvLzUrZ3ZZbVNhV1EvVlZGVkFERDZ2UmN6UE54VG96U3dlVHRjWDlXanBHVXNFUG5lNk1RU1FKTFRHcmhvaUlvZ0NsRUZ5ZkdlcVBhNFF3WVViVGJtc2pmY3A5SEdlSldMcHF0WTdzNmp3cXdUUHdMOFFVQjErZGdxZFNSK0VXYUh5dWtkcTFOVzB6UnNWNllCd1dZcWpkemM0enpHQUI4NVh1azU4SlVteVZmNE5zWTV6TDIxelJDQVNBMkphQjZWWVJ6V09FTzBnNC9LdzVlNFBBNlhjZm1xWWpuRWdtM1hXSzY5ZU1vQUY0ekNPUk9zenkrUzIzMFZpa3o2RG9FbzBNVklVcW00QWkxbHFiWFd3RkllVnhzZWV3RzdjaEYwdHhVTFBYQ01vbGVZNHUzeDZaNktBQlBMNXN3NTFvY2EraWlyM1F5VEFVYnhZNUMxNEFIanZLZC9kSlNnSGFkbzhLcXpiMGpkblRaRHZGZ0tJUnR3b0VvWDRxTC9LeWtDbkM1aEpjRS9GeVY0MUlubzB4Z0F1SnNQSVNFWW82TnF3Qmp4RDkvRlB3cTVZMGRxZ244NmVTU09WNVZSZWdNT1E1TzBORlJGWUNrL2FCeURjenZiR04rNCtUUWNDeFZSWGdnNEJoMkd0dHNGWUFkcnRkOEdqSUZ5emE0Y2M4ZDdsYlpyUFdSOHh1MkNvQXBVUjFxOVpaWVZxcHphRGdtcTZ5MlZuMC9UR3BRc1ZVckFBc0xMMGtHUVJVRGRESG9VQ3lRclhHS2xPTW5EQ0FNdlRoSUFhcm5FU0poZm5KaldWaFFnNmg2VjNXKzl6OWUvM0dIdmlhOFlGdVdPUHJmbTJoUVdPUGdPaDJxOWpJYktqaE9kcW5DSDI2aXZoSk1XODJYU3VRUllYaXZWQ3RBTFhPQ3NHa0NJajhwOENCQWp2dTRDandLaUZ0a2wvT2pBdmVkb0pwYTlOQ2RSZ0hNRkVDNmtsOVNheEhyU0pEa1lhSnZ1MklJM3d6ZWgxSUo1eTRpdC83NVB0K1BWVlAvUHdVSTh1SmRVTEJPODdTVHZwVm0vSDI3VGcwTEN6WVc0MEw2MUswQUpDb0crWXo1N2JpQ2RCalRaMFlkMjU4cjRhN3h2S0NmenZkQlZrSi9GSUJFeXVFQkJ3NE1hU2d2V0pmUmZiWkw5S0NOUm9DZDI2QzZkOGg4bUNsWjJqZWtzZkU1N3l5dit5eFpqS2JGWEZka2lUQWFmT1Erb0tTV1FOZ0NaMExPT3pzcTQrdVZhcGpNZVVPWTg2NDdNTFdrd2cvYkZqNVQ4czBmK25NRHJ2bDNqc2NEcXRDd1VpamQrWWtJSGhLRUF4YU5YcDNqRHJQUmtXVjBNYnVnbTNJOEhqYlRJUkZlQjFFQS9QMDJ4RGFUY3R4aHNvWm1abmk5amh5UFJZdmx3MHFVMTI0VWdJaWV6eXhPYU12NVdvQzN3R1VaWElkU0dCL2tlQnltaUE4N2JCWFlJK2l1SDhLcm9NdXk4WnR5dnZBeGNYUHYxcUh0OWRyMnh6a2ZnMDdMNHdnMlBWenlETncraTVNbVNQcFZ0dXFCY1Nxc2gxTm95K1QxVFN4QXZ5ZFora0tZOGplTFovWFBidDlheTR2Y0k4WEJiS25rNGVFWGg1RmpkOGk4U083ZU9aSk9abS9Xc0MwODlJSmFBZUtsaWNNanVNT3lBUXB4cmhPSFBBRTYzd1VXeDVHa2d4UHJlNm15LzJIdWVNenlZcnhhajNkam5odTBIdjA4YUhuc0FpUDhhZ1VBc0ZyWlZNMGlUT3hwTis2NXdXcXhTL0poaXB2bi9hTDZwTi9Fdm9JZ3BFbXozTmczSEl2RmY5Ky9sdi9pbnlBRk1QYTBiWldVUjZSMmtSR0hiSENEbExPMWJUQ3ZsbmxjQ2poNFRRVGJlNWlUUmVZWUUyRWFYdUgzVUFmTkc5ZXBjRzBBRStkQUo1UE1RTER1RnN0aklabnlaWEFKV3pqZ1dyVXBvOWhibGFDUGswM2RRWkN1YlgxdStBWUQ5d1ZzVm81NC81Nnd0QXpZSlR2UnlhaXU1cDZ0OEIrUzJnWFVJeXNBZ1BiTnhzZE1HRG1ldHBPY3JGTEhHV3JHMlpRR21uYjBNOGVtMFNnVU1lU1ZFV1FRUnFzTzF4OFpLWU9jekZJREtmZzJYbHBvOXVBYmZzYTI0YWdjUVZDWkVTRWN4dklGWVROeEJpT2M3QktEc0h5YnNpNHI5T0dMUkpJZGx5WnVxbXBsR0gzcmRqVlhIT0lCSG9hdzJBT2NkME1sSmdOcEVxSklBa2tJS0wwajVEak1sY2xPbHBGQjdFVllqWU9adXVqZUZmY2lhVkRGVWxXVGJkT2dqU1MySCs5ME1yVUdNUWpMQTM1ZnBHTytQT21GMGlTTHZsVnZhcW5QNzlSOFcrSmtHNG9ucFV5UEh5VDQyOU82V0QzbzRqdjFKdWY0S01sNkoyTmZRTDF6bzg5MGtLcmdEYktvRzBqdTRVWUp6cVRab3d2R2Jmcmg3NitsekVUV0RNQXZNbHl0SWo0ajlkK0JJUXZvUzlTa3JodXlMaHhKalp4Vmtxd2NDcG0vTzZWY3IyK25Mb0IycS9telIrcFBPWSt6QzRwNzZGZmdTeVphZW9qK1BVUk40TGlnNEJXVSt5OWxKWkJHVmc1RkdlREQ3ZW1SUmJ6bHlHaCtzUkVYYjJUWk9KeEp2ZlZ0d0hieTJ6MUk2TkR3dFdyZit6UksrSTFXQUMvWVJCb3ZsVWhjNXN2blJTTlhDdzZjWlN0MUxXVDZkNFVFUnlmM09BV294bGM2RjVZOGczYWhsTjJkZTNNczdMMDZyWjNudVcrY1pkTjF2Wkk3TkVQMWNMYWhpWW1ERUdHMHJyRDcxMUhBV0Nrd2tjQkJCSUhVajBVZXZGNUhqalREVzlZaEx2NEZNRmJCN28vL0pJVUFBQUFBU1VWT1JLNUNZSUkiLCJzdXBwb3J0ZWRFeHRlbnNpb25zIjpbeyJpZCI6ImhtYWMtc2VjcmV0IiwiZmFpbF9pZl91bmtub3duIjpmYWxzZX1dLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCJdLCJleHRlbnNpb25zIjpbImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6IjNlMDc4ZmZkNGM1NDQ1ODY4YmFhYTc3ZGExMTNhZWM1Iiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6dHJ1ZSwidXAiOnRydWV9LCJtYXhNc2dTaXplIjoyMDQ4LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxXSwiZmlybXdhcmVWZXJzaW9uIjoxfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIyLTA3LTExIn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMi0wNy0xMSJ9LHsiYWFndWlkIjoiZmM1Y2EyMzctNjlhMC00ZjNjLWFmZTQtMWViYzY2ZGVmNmRmIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiJmYzVjYTIzNy02OWEwLTRmM2MtYWZlNC0xZWJjNjZkZWY2ZGYiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiQ2xpZmUgS2V5IDIifSwiZGVzY3JpcHRpb24iOiJDbGlmZSBLZXkgMiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyNTcwLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX0seyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQnpqQ0NBWFdnQXdJQkFnSVVFVjJ1WTBWMDFqcWJYUEVqTWZZekNlKzVWQnd3Q2dZSUtvWkl6ajBFQXdJd0lERWVNQndHQTFVRUF3d1ZRMmhwY0hkdmJpQkdTVVJQTWlCRFFTQXdNREF4TUNBWERUSXpNRE13TnpBek1UZ3dORm9ZRHpJd056TXdNakl5TURNeE9EQTBXakFnTVI0d0hBWURWUVFEREJWRGFHbHdkMjl1SUVaSlJFOHlJRU5CSURBd01ERXdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBU2NJMVRqVUxPVU9MT1N2Skk4aVg3amxqL3NhMWdpT2RCRXEyMFc2d2tYbnp4UUo2S2cxTnVvaHNlK2lJUzQwcU1DeXkzQXBhWnh3TlIrLzI4VkdtUHdvNEdLTUlHSE1CMEdBMVVkRGdRV0JCUXo4OUpRWFR4YnlqU2xTMzVtc1BIN2F5aUdlekJGQmdOVkhTTUVQakE4b1NTa0lqQWdNUjR3SEFZRFZRUUREQlZEYUdsd2QyOXVJRVpKUkU4eUlFTkJJREF3TURHQ0ZCRmRybU5GZE5ZNm0xenhJekgyTXdudnVWUWNNQThHQTFVZEV3UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdFR01Bb0dDQ3FHU000OUJBTUNBMGNBTUVRQ0lEd2g4U0FzSXRRS2FLdGExa3QyYnYycHJ2RjVVdFdBa1RWMGVnOGtMZkxLQWlBZ2V4OXhwS0dDTFBlaSs4VHVFa3h5S1FDOUY2N3Q5NkhWdlFQRSt1VWZCUT09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQVRBQUFBQ3dDQUlBQUFBSFhxWElBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFBN0RBY2R2cUdRQUFCRHVTVVJCVkhoZTdaMzdieDNsRVlZVDMyTW50cE5nVEc0NGNlemNuTmhKYk1jWEhJSkVnYW9xUmRBaVZSVUNTdFVXa0hvQlVWVlZJWUNVcXFHa3YvU0hsbFpJdEZLTG9QK2srM0crMTl2TmE1L2p2Y3pzenA0emp4NmhKR2QzM3RuZEdVN2lPUGFCYmNkeHpPQUw2VGlHOElWMEhFUDRRanFPSVh3aEhjY1F2cENPWXdoZlNNY3hoQytrNHhqQ0Y5SnhET0VMNlRpRzhJVjBIRVA0UWpxT0lYd2hIY2NRdnBDT1l3aGZTTWN4aEMrazR4aWlSeGZ5MnZ6UkgzMW45dDNYRmo1NisvcDdyeTk4ZStzVVhuQ2NXdW5taFp3NU1mYmZQejlWMGcvZVhFSTV4OUduMnhZeXZOM1JSc202dGppRkpNZFJvRXNXa3RhbUdwSHRPSEkwZXlGcFErcnk2dHdrR25LY2NqUnlJU2VQRE5GS0dCSDlPVTVSR3JhUUx6OTNsbmJBb09qVmNmTFRtSVY4ZHZNa3piMXgwYmZqNUtFWkMwbXozaUJ4QVk2VERlc0xTZlBkUkwvNjlBNHV4bkgydys1Q0RnMzIwV1EzV2x5VjQzVEU2RUxTTkhlSC9sYnA3SXZGaGFRNTdqSnhrWTZ6RjdZVzhxL3ZyOVA0ZHFXNFdzZlpoYUdGcEtudGJuLzF5aFZjdHVPa3NMS1FOSys5NFAxZkwrUGlIV2NIRXd0Sms5cFQ0aFk0VG92NkY1SUdOS000T1NkLysyQ0Q2bGdRelRsTzdRdEpvOW5CUjQrTjRCdzVLS0pHMFpEVDg5UzVrRFNVZTRwREgyWng0Y3FUbXh2RlJJbUhvZEJhUkN1VnNIVHgyTXZQblgzOWhia0g3NjFTRzUyZE9UR0dFajBHVGRHTnhXdDRRWnJhRnBLZU5JbURVdHplV0tlYlVsNlVUa0Z0VkN5YUVJVWlwSHp0aFRrRWRDL0hqeDJsZ2RsVEhDMUVQUXRKVHpjdGp0aGhmV1dacmw5RGhPMUFMVlhtYjM4aS8vL2Q2ZU9IS0VYUWM2Y09JNmE3bUJnZnB3blpWNXhabWhvV2toNXFJbDdlZ1M2NEdwSGRndHFyUm1TTFFoSGlJcVpib0pISUpVcVVvT3FGcEdjWnhXczcwRVZXTC9wb1FhMVdJSUxsV0Z1Y29naHhrZFI4YUJJS2lFSkZxWFFoNlNsRzhWb0x1clo2UlU4dHFHZHRrU29IMWRjUVNVMkdCcUN3S0ZlSU9oY1N2OXFDTHNtSWx5L01vNy90N2ZkL3ZrVDlxNHBVSWY3MWh5MnFyeUhDbWdrOStwS2lhSDZxVzhoMkQyOXQrU1pkaktBelo4NGdwajBidDFicExCTEh0YUNyVUJXUlFsQnhKUkhXTk9pSmk0alNPYWxvSWRzOU5yb0dLVkc5S0ZRdGlCZGEwTFhvaVR3aHFMaWV5R3NPOUt5bFJQV2NWTEdRRTRjSDkzeGdkQUhsUlYxUmt1THJxeXY0SmQvSmppS3NPU1NQV0Z3RTVLR0toZHo5dE1wOHFzMXVOMit0eHJLcXhDejhwSms3U1pYMVJGNFRTS1pJUTJUa1FYMGhkejhuYXJxTVcrdHJzV1psaEZEOHFKbHZPRlJjeWY2K2c4Z3pUM3FjTkVSTVpxcGJ5UGhUYXJlTXNXRDFyRnkvamg4MWNDZXBzcDdJTXc4TmxiaUl5WXp1UXRMam9WNExHNnRaNE5UMGFIS05lajY3ZVJKNUVsQnhKUkZtbTNNemo5Tm9pWXVrekNndTVQTlBuVWsvRzJxMHNMR2FIWklSVkJWaEVsQmxQWkZuR0JvdERaR1VHY1dGVEQrVnE1Y3ZVYU1GbkpzOUY2dFpJeGxCVlJFbUFWVldFbUdHb1FIVEVFbVowVnJJZjN5NG1YNHExR1VCWXgyYi9QUUhGNUlwMUJOaEVsQmxQWkZuRlpveERjZkdSaEdXRGEyRlREOFBhckdBc1k1bGtoRlVGV0VTVUdVbEVXWVZHak1OaDRlSEVaWU5sWVg4N080M1g3b20vcGo2SzJDc1k1LzBJQ3FKSkFtb3NwN0lNd2xObW9aSXlvektRb2JIOE1mVzF6aWs1Z29ZQ3phQzlCVHFpVEFKcUxLU0NETUpEWnVHU01xTS9FTEdUNVNMUDZibThocUxOSWowSUNxSkpBbW9zcDdJczBmNEF4Nk5uTGhJeW96OFFpWVBnRHJMYTM5L2Y2elRJQWI2RDZZSFVjUHA0NGNRSmdFVlZ4SmhKcUdwRXhjeG1kRmFTR3FyZ0xGYTQwZ1BvcEpJa29BcTY0azhlOURVaVl1WXpBZ3ZaSExycWEyOHhpSU5KVDJJR2c0UFNmN2VnWW9yaVRCN3FINnlEakx5b0xLUTFGWmVZNm5ta2g1RUpaRWtBVlhXRTNuMm9QRVRGQUY1a0Z6SWd3ZFJqZHJLNWVEZ1lDelNhR2dXeFYyOStnaVNKS0RpU2lMTUpEU0VJcUowVGlRWE10NTBhaXV2c1ZUVGVXYmpaSG9XTlVTU0JGUlpUK1RaZzRhd3ZGT1BIRWZwbkFqL2xqVkFuZVVTSmJvQ21rVnhUMHo1aDFzbG9WRXNLWXJtUjNnaHFhMjhva3EzUU9Nb0xtSWtvTXA2SXM4a05JMkZSYmxDR0ZwSWxPZ2lhQmJGOVErM2lrTXpXVUFVS29ya1F2YjE5VkZ6dVVTVjdvTEdVVnpFU0VDVjlVU2VWV2dzc3pzNU1ZNFNKWkJjU09vdmx5alJkZEFzaW9zWUlhaTRrZ2l6RGMzbnZ1SzAwdmhDcWtQaktDNWlKS0RLZWlMUFBEU2x1OTFjdTRWRGhmQ0ZWSWRtVVZ6RUNFSEZsVVJZbzNqODlPbjExWlViaTlkRWZtdmFEckdGcEFYTEpVcDBMelNPNGlKR0FxcXNKL0tjaC9HRnJBS2FSWEVSSXdRVlZ4Smh6c1A0UWxZRWphTzRpSkdBS3V1SlBDZUZMMlJGMEN5S2l4Z2hxTGlTQ0hOU3lDemswdFVGMnJIc0hwMmNSSlZ1aDhaUlhNUklRSlgxUko2emc4eEMwbzdsRWlWNkFKcEZjUkVqQkJWWEVtSE9EcjZRbFVMaktDNWlKS0RLZWlMUGFlRUxXU2swaStJaVJnZ3FyaVRDbkJhK2tGVkQ0eWd1WWlTZ3lrcCsvZUFPOGh4ZnlPcWhjUlFYTVJMYys4VU5LcTRrOGh4ZnlGcWdjUlFYTVJKUVpTVS8vL2dKNVBVOHZwQTE4TVc5TFpwSVdSRWp3WGZ2bktiaVNpS3Y1L0dGckFjYVIzRVJJd0ZWVm5KK1J2RXp0aHVFTDJROWZQWHBIWnBJV1JFandkcy92RVRGbFVSZWIrTUxXUnMwanVJaVJnS3FyT1RveUFEeWVoaGZ5TnFnY1JRWE1SSjg4dTR5RlZjU2VUMk1MMlNkMERpS2l4Z0pxTEtTQ0pPRGhrM1E2YWtwWklqaUMxa25OSTdpSWtZQzdZOE1KeUt2TkRSbTRpSkdtdm9YOHNxbGk2alNrOUE0aW9zWUNhaXlrZ2dyd2R6c09ab3hEUkVtVGYwTEdVU1Zub1RHVVZ6RVNLRDlrZUZFNUJWaVlHQ0Fwa3REaENrZ3M1QUI2amlYS05HcjBEaUtpNWpTaENkRmxaVkVYaUhTYzZVbndoVHdoYXdmR2tkeEVWT084MmZQaGlkRmxmVkVhazdTUTZVbnduVHdoVFFCamFPNGlDbEI4ckNvc3BKSXpjUDY2a3JTcEtySTA4SEVRZ1pScFZlaGNSUVhNVVZKUHltcXJDZXlNNU51VWsrRXFTRzJrTXRMaTlSNkxsR2xWK252UDBqaktPdVhuenlKcEVMUXc2TGlTaUk3RzlTaG5zaFRRMndoQTlSNkxsR2loNkZ4RkJjeCthRW5GYVRLZXFLRC9kaGFYNk1PbGV6djYwT2tHbFlXOGducDc1SFFPTDcvclJrYVIxbi8vbUdSLyt2UlkwcWs0a3FpaWYyZzN2UkVuaVpXRmpLSUtqME1qYU80aU1rRFBhTkVxcXduK21nUE5hYm56YVZGUkdvaXVaQUJ1b1pjb2tRUEUvNmtSK01vNjkyM2xwQ1VEWHBBSkJWWEVxMjBJZjVsVERVaVVobXhoYnovem5MNEwxMURYbU9wWG9iR1VWekVaSU9lRGttVjlVUTNlMEV0cVlwSVpZVGZJVXQrR2lHcTlEQTBpK0srOGRJOGt2YURIczJlVW5FbDBkQXVxQmxWRWFtUDVFS0dlM2Znd0FHNmtyeWlWZytUbmtVTkVkTVJlaWp0cE1wNm9xMkhvV1pVUmFRKzhndDVlMk9kTGlhWHFOWERwQWRSd3l3ZmJxV0gwa0VxcmlUYVNrRnRxSXJJU2hCZXlNOC8zdlEzeWZLa1oxRkR4TFNCSGtkbnFiS2VhSzdGK3NveXRhRXFVaXRCK00rUTRjYUZoU3ovRjdVbzE2dWtCMUhEdTIrMi9YRHJ6Sm5UOUN6MmxZb3JpZjVhVUFPcWpvMk9JclVTNUJjeTZHK1M1VWtHVVVuRTdJSWVSQmFwc3A1b3NYdC92eHJRV3NpUjRXRzZzTHlpWXErU1RLR1NiN3k0eDRkYjZSRmtsNG9yaVM1YlVBTktibGIrQ1dUQ0N4bUk5Njc4bTJRUUZYdVZaQkNWUkV3S3V2L1pwY3A2b3RHcUZoSmhGYUsxa0lNRGZiNlRKVW1tVU1sbk5rNGlxUVhkK2J4U2NTWFJhd3RxUUVNa1ZZajhRZ2JpdlFzTE9UODdTMWVZMTBlbkhrSFIzdVAyOG5ReWlFb2lLV1NWKzh1cUlGWFdFeDNyTHlSaXFrVnhJWU05OVNiNTZ2Zk9KeGNldmJQeUdGNHJDaFVVOS9Mc1JBeWllMTVNS3E1a2JEaENEY2lLakdwUldjaEF2SGMzTHgvdmtaMU14bVZQY1ZCK3FJNkdTSklZYnFxc0p6cldYRWdFVkk3dVFnYkRRb3JzNUpIRGgxSGFIak1uRHlmWDIwRWNuUk1xSXU3a2thRVlSRGU4bUZSY3lkaHc0TkRJQ0RVZ0pRSXFSMnNoQThudGs5ckpJRW9iSTduU0xPS2N6TkRwR2lMSjN5UjNST2s2cUdJaGcyRWhUNTU0akM2N21LaHVodlJsWmhjblo0UE9GYmUvLzJBTW9sdGRUQ3F1Wkd3NGNPWGlSV3FndkNoZEI0b0xHVWpmUWFrM3llRHdFSDZYVlR2cEM4d3JTbVNBVHRRUVNmNG11Ymx4WWU0ODZ0YUI3a0lHa3R2M3ozdGJnanNaUkVEbEpKL2NtRnhhWVdPZExOQ0o0aUpHWXJnM2I2MVNjU1hSc2ZSQ29taE5WTGVRd2ZqWkFySmYwQll4VlpFa3BxK3JqTEhhdnRCWkdpS3BPVytTWDl6YlFzZWlPNG1LTmFHK2tJSDBUUndhL0dZbisvdjc2UzZVRkVscWpJNk9wb1BTVjFUZVdMTXpDK2NuNlN4eGtTUXgzT3ZMMTZtNGt1aFliaUZScmo2cVdNaEEraVpldjNRcy9pTGRpL0lPRFE3R3lsS01qV0VQby9FWDA5Y2laYXpjR1RwRlF5UTE1MDBTN2JhZ0JvcUpXdlZSMFVJRzB2Znh5ei9oQzJuVDdaQnlvY1Qzbkx3NFAwZlZncmMzMXVPcjZhdVFOZGJ2QUIydklaSWtuc3Z0dGF0VVhFbDBMTkV6Q3RWS2RRczVNdHl2ZHl1ek9EODdPejAxTlRFK2Z2elkwU3NYTDlDckhVU1graXVCbVBiUThSb2lTZUtoVUdVbFIwY0cwSEhwbmxHbFZxcGJ5QURkeWlCZXFHb244M3BqOFZwczc4RjdLOVM1a2pHdUhYU3doa2lTZUNKSHhnYXB1SkxvdUZ6UEtGRTNsUzVrZ0c1bEZLOFpXMHYwVk1rYUpONzc1VTJrdG9HTzF4Qko1UjVIL040UVZGbkoyRzJFMnNndXpxK2JxaGN5UUhjeml0ZGEwSjJxWHZSUjdTcEcxeGVua04wR09sNURKRW04NGN6UGpGTnhKV05jZ05ySUtFNDJRQTBMR2FDN21ZaVhXOUF0cThESHBoOUY5dmIyMCtzbnFMY0t6UElGR3NQRzBsa2FJa3ppRFljcUs0bXdGdFJKRm5HbUFlcFp5QURkMExRNG9rVmZYeC9kTzNHbnB4NTZVN3I3MWhMMVU1bm9ZRC9vTEEyUkpQR0c4OHpHU1NxdUpQTHk5engvZmhabkdxQzJoUXpRRFNWeFVBcTZqMlZjWExpQ29pbW9nU3I5VDU1dnFFcm5Lb2t3aVRjY3Fxd2t3bHBRUDUzRk9UYW9jeUVEcnp6UC84cWVmT2ZWUFRZbmNHbCtubTVyQnk5ZjZQUU5MU2l4ZWo5Nit6cGF5UXhWMEJCSitSY1NwNlY0NDZWNUtxNGs4bndoUzBLM3RaMDR1alJqaHdhb2NvMk9IeTd5MlVWVVJFbUVTY3czVlZZU1lkdmJvNGNPVVZmdHhBbG1NTEdRQWJxeldSd2U2c2ZKN1RrMVBmcVgzNjNSaVhaRWw0V2dVaG9pS2M5Q1RveVA0NXlIK2YzUEZxbTRrc2pMM0RPT05vT1ZoUXpRbmUxNmNkbEZvV3BLSWt4aXZxbXlrZ2piM2w2NGZJbDYyeTBPdFlTaGhZelEvZTFXY2JYbG9Kb2FJaW5iUXE2dGZQTk5lenRBeFpWRVdJYWVjWndsekMxa2dPNXZsM243NWpTdXN6UlVXVW1FU2N3M1ZWWVNZZnMxaklPTVlYRWhJM1NYdTBOY214eFVYME1rQ2IzaFVIRWxFZGF4Wnh4aERMc0xHZmpxMHp0MG81dnJFemYrLzJsQXNsQ1Foa2dTbW04cXJpR1MyamM4TVg0RVJ4akQ5RUpHNkY0M1VWeUpEcFNsSVpLYXM1QkJoTFhwR2EvWm93RUxHYUhiM1JUUnZUSVVxaUdTaE9hYmltdUlwTDBhM2xwZncydjJhTXhDUnVpbVd4WWRWd1dsaTRzWXVUY2NxcThoa25iMWpGODFTY01XTWtMMzNacm9zbktvRFhFUkl6ZmZWRjljeFBoQ1ZzUHh5V0Y2QVBYNjlZTTc2S3dtSmc3ci9ndDl4SWpPTjBXSWk1aFV6L2k1VlJxOGtHbm9NVlFzbXJBQjlTWXJNcVRubTFJRVJZQXZaRjNRODlEei9qdjdmRlpLalZDcmdpSmdlL3Y4MmJPeTgwMUJnaUtndFpQNGtXRzZiU0hUMElNcDc3L3Y1L2hYaS9XaTl4VVBFTkNhNzc2K1B2eEVDTW9TRWFWOUlRM3kyZDBjWDV2d056KytpdE1heTlUUkVicW84cUwwOWpaOXBRVkJCZ2Y2S0xTa3FOc0VlbXNoZTV3WG4zNmNKblZmWDM5aHJ0aS8ySFNLNFF2cE9JYndoWFFjUS9oQ09vNGhmQ0VkeHhDK2tJNWpDRjlJeHpHRUw2VGpHTUlYMG5FTTRRdnBPSWJ3aFhRY1EvaENPbzRoZkNFZHh4QytrSTVqQ0Y5SXh6R0VMNlRqR01JWDBuRU00UXZwT0lid2hYUWNRL2hDT280aGZDRWR4eEMra0k1akNGOUl4ekdFTDZUakdNSVgwbkVNNFF2cE9JYndoWFFjUS9oQ09vNGhmQ0VkeHhDK2tJNWpDRjlJeHpHRUw2VGptR0Y3KzMrcVlNSlpwZ3g1dGdBQUFBQkpSVTVFcmtKZ2dnPT0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJjcmVkQmxvYiIsImhtYWMtc2VjcmV0IiwibGFyZ2VCbG9iS2V5IiwibWluUGluTGVuZ3RoIl0sImFhZ3VpZCI6ImZjNWNhMjM3NjlhMDRmM2NhZmU0MWViYzY2ZGVmNmRmIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibGFyZ2VCbG9icyI6dHJ1ZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjp0cnVlLCJhbHdheXNVdiI6ZmFsc2V9LCJtYXhNc2dTaXplIjoxMjAwLCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjIwLCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjEyOCwidHJhbnNwb3J0cyI6WyJ1c2IiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fV0sIm1heFNlcmlhbGl6ZWRMYXJnZUJsb2JBcnJheSI6MjA0OCwiZm9yY2VQSU5DaGFuZ2UiOmZhbHNlLCJtaW5QSU5MZW5ndGgiOjQsImZpcm13YXJlVmVyc2lvbiI6MjU3MCwibWF4Q3JlZEJsb2JMZW5ndGgiOjMyLCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6MSwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjUwfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMTItMDgiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MjU3MCwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJDbGlmZSBLZXkgMiAiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI1MTIwODAwMiIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUHJvZmlsZXMiOlsiY29uc3VtZXIiXSwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0xMi0wOCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyNTcwfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTEyLTE5In0seyJhYWd1aWQiOiJlYzMxYjRjYy0yYWNjLTRiOGUtOWMwMS1iYWRlMDBjY2JlMjYiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6ImVjMzFiNGNjLTJhY2MtNGI4ZS05YzAxLWJhZGUwMGNjYmUyNiIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJLZXlYZW50aWMgRklETzIgU2VjcDI1NlIxIEZJRE8yIENUQVAyIEF1dGhlbnRpY2F0b3IifSwiZGVzY3JpcHRpb24iOiJLZXlYZW50aWMgRklETzIgU2VjcDI1NlIxIEZJRE8yIENUQVAyIEF1dGhlbnRpY2F0b3IiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MiwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjowLCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjAsImJsb2NrU2xvd2Rvd24iOjB9fSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJpc0ZyZXNoVXNlclZlcmlmaWNhdGlvblJlcXVpcmVkIjp0cnVlLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUJhRENDQVErZ0F3SUJBZ0lVSlVyNVRCTCtSL3JGZnpUZkdxOHREZGF3QXdrd0NnWUlLb1pJemowRUF3SXdJVEVmTUIwR0ExVUVBd3dXUzJWNVdHVnVkR2xqSUVaSlJFOGdVbTl2ZENCRFFUQWdGdzB5TURBM01qZ3dPVFEwTlRKYUdBOHlNRGN3TURjeE5qQTVORFExTWxvd0lURWZNQjBHQTFVRUF3d1dTMlY1V0dWdWRHbGpJRVpKUkU4Z1VtOXZkQ0JEUVRCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQk1LSTJrRytqbUE3SGFXb3BQZG52aEJ3UmNicWcrbUpSU2FPaFNxZEJmSTAwc2NJeDM5eWVoczROQ0lFZHpsT2dDRXR3SEdoVEZ6SUZBWGFoZ1NoVXBlakl6QWhNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3Q3dZRFZSMFBCQVFEQWdJRU1Bb0dDQ3FHU000OUJBTUNBMGNBTUVRQ0lITTlXOW9uQ0hDSXlpbHdCVmtWK1JVMURzVEpOaWJmeGE2Vi9ISkZQZVFVQWlCNjlxTy93OWJ4ZWJxK1pkNkJ0a1NYalQzSEtmTmVYWVA3UDliL3dNenBqUT09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQU1nQUFBRElDQVlBQUFDdFdLNmVBQUFKVkVsRVFWUjQydTJkVFc4V1ZSU0ErNC84Uy93UWRuWWxyS1FyNmFxSkM0MHNNTUZFRFFzV0pEWWFValFnMFZDSlJBc1NCUW9xUmRxeForS1E2ZmpPekwwejk5eDd6cnpQazB5a1dOcDMybm5lYys0NTkyTmpBd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFLSTVmdkhUWWZ2aUp3SXJPYnAxdTNyNTRjZlY0ZGJsNnVuNXpiZlhpKzJkNnE5clgxU3Y3OTZydkl0dzh1aEdkWHgvcHpyKy92M3ErTnQzVjE4SkpMbjcreS9WdGYyOWF2dTdHOVhGYno2cnp0LzhwTnJhKzdMKytQclBkNnFEbDAvUExlMzVrZnRxMzY5Y20xOWQ5WC9QZjErL1VUM2J2SEJHaXI3citjVkxia1Nwamg2L2MvTHI1OVh4RHgvMHk1QllrRnVQSDV4NVFJWXUrVHo1Zk85aVhQbng2NkQ3bFV0azJYLzJtNDk3Zm5Od2NFNGUrQkF4dXBkRUdxdjNWVXN4RkNHVUJKRUlFZnFnZEI4YWoyS0kzQklocHR5elJCVHo2VlJvMU9pN0pCVXpsVDQ5K0dpNkZETUVrZFJoNm9QU1RrVThwU0NTUHM2NVg3a2s4cGlOSEhQbHNDSkpQYkNXTVVVS01TWUtNalZ5ZUpVa0pxVWF1MFEwY3pmWUhZVFB2V1FNVTBTTzFHSk1FQ1RsdytKQmt0VDNLNWVwTVlta1ZpbmxhSzZzWXd5cFJHbUlFU21JL0dKVFB5eVdKZEdRdzl3WWJPcWczRUlVa2FwVWRFVktVUkN0QjZhNUxGVzR0Ty9WeEJ1Q2pEMDA1R2pLdjZwUjQ0Kzk2dmpPZS9weVJBZ3lkMkR1UlJKdE9jeU1SVjdkM0syMEJORk1zK3F5YlE0eElnVFJTcStzU1pKRERqTnBscVJCbW9MOHM1LytGNW1zZE90WWtGS1M1SktqYVpvaVNHeVZLc2Q0WTZJZzB1aktLVWh1U2VRZFBmZjlJWWdIT1l4R2tKeVNwT3JyeEZ6eVBSSEVneHpHQmRHV3BJUWNqRUZpeGh3UHI1YVY0L1FLZmEybEJOR1NwSlFjWnVabVdSZEV2UUVZY0VsUndPSWdWbnN1VTBrNXpQUkJMQXRTejZrcUxFZnNOQk5aODFIeW9Vb2xTV2s1VEl3L3pBdVNxd2s0RkQwZXhlZkJKYW85S1NVcExZZXB1VmhXQlNuUzYraktjVHIybWZwenpkRlIxNURFZ2h5bXByeGJGTVJDYWlYVFdPYjhYRXRXdEtZK2JDWDZPR1pUSzlPQ0ZFNnQ1c3JSa0dMUlZHNUpTaFlaek1saFVaRFNWYXRVY2lESkF1U3dLRWpKNkJFalI4eDJRRWppVkE1cmdwU01IaUZ5OUMzbHJRc0tJN0pZa1NUbVljd2hpV2s1ckFsU0tucUV5QkhTelI4ckNTT0prdzBhTEFweThtVFhkRnFWcWpUc1VaSVV1NVc0bE1PU0lMUDJyTW94NWtqWVAvRW9pY3p6V2pzNXJBaFNyeXZQS2NkcEtpZmZVN040Z0NRTGtNT0tJRm1YendiSzBhMVMxUkpIUnJtUVRyeUZ6blV1U2R6SllVV1FiT2xWcUJ6dHRTZWRmeE83TGdWSkhNdGhSaENyY2lTU1JENS9uU1Z4SzRjRlFlcXRleXpMMGZNMXBLVGJYRUhDQkRRVkxVZ2lHeVdFcnNNSWtjUzFIQ1lFMFY0dEdDaEhVSlB5TkJVY0xEUU1pUkxZZGJjZ1Njd3Vqa1BGQnZPN3RYc1FSSFd0ZVVTMWFsU1FGVjlMZWpmZHYrdEwwV0orSng0bGFUY1U1ZlhMd3JHTkpWQmNFQ09sM01GR1pUZTk2cTVWRVNsYUVlTE0vKytPWHdMbmNIbVRaTEVzVXBDQVFYRnd1dGQ2d09zMGFxQWYwbTQ4MWw5cmFIRHZaT0MrOXBLVUZFUmxZVlJBNU9nKzZQOTdzRmM4eEdOeWpIWG5RNnBqU0lJZzZvS0VyQ0ZmMVhkcC83dGFrZ2x5ckpKa2RQQStFa21zckV4Y1cwbEtDcUl4dlgzT1lIeFZVeTlXam03VkttUVM1dGljTUF0UnBKRUVRVHdMY245blBIcU1WTTNha2t5V283V1hWbENVSEhuZEZ0YUtMNmF2c2M2Q3lKeXVGRjM3M21yVlJGbER4azFhODU4V2ZmSVRncFFWWk01NWgwMGtDcDJwN0NXQ0lNaWFwMWhKQk9sRWhOSHBOQ092VzJQQkVpa1dnL1RwMzdNWllFK1pKOVpUdWgzNldqS1FIM3JOTWorS1FUcGwzbnhsM3FHQmQ2ZnNHalZYYkVWanNEM29YeW5Kd1B3dXlyd0lvcktEWW15anNLOHhHQ1ZKdCtQZVN1VjZKUWxvRkZxSUhqUUtsemJWWkVvM2ZjVkRQUHJ1MzRvQ285TlJKa3gvb1l1T0lCdVcxcDJ2RW1GVWtvaU9lOHc1SThpQklMTkxxYWtsNlV2NXVoMzJ0NHVsdWxOS3hwcUtBVlUySzNMRWJ1Z20xYTFtWFFqVDNWTXVtTkxlc0NIUm1wQ3hkLytRZGZVaEVjU2JIRU1McGhaUkVtYkpiVndKV0tKSkhUMmU3TmIvUFRQMkdKSmtnZXZTUTdZdVlzbnRPbXphRUZuYWpaVkRIclFseXNHbURha0V5WFhFczR3UkFsYnpKWlVrUUE1dkc4aE5lYzFzKytObDQ3alFuZHhuU3FMMW9IbVVnNDNqdkcwOXFpZ0pjckQxcU03bTFiblNyTmhqRDJLbnZBZWtjT3NxQjV0WHp6bitJRWMxUy9Gc2tGQkJQSjQySmV0UlVyOW04d2ZuV0JPa2ppTGVEOUJ4c3FON3JCeHJlN3FVTlVHc0g4RldSN21lTXU1U0l3ZEhzSEdJcC9vaG5qSmxIVGs0eEhNWngwQ1BMRjZLeGNwNmNxdHljQXgwcENDaDg1cFVKWG1ZWnVVY2NpeEFFcE9DS0Mya3lpbUp6R2IxSm9lRjEyeE9Fb3VDVE9vL0dKUEUyNWpEMG9SSlUzMFNxNEpZU0xWQ3R4THFJbHZqbEg3SVpDZVVxVDkzQzVLWVdVOWlXaEFEcVZiTTRUZE5PYmYwd3lYamlMblBSV2xKWkMwK2dvU2tXZ0Y3MjZwZmdTc0JoZlpCTWw3bHNDS0ppZVcrMWdXSm51cWhkSVcrMXBLN2tLU1V3NElrSm81dzh5Q0lDVWtDMDZ3bHlWRTZLcHJZNXRTTElQV1lwTUNNM3hoQlNtM3lwaWxIU1VrUXhGUDUxNmdnT2VRb0pRbUNlRXEzREFxU1U0NFNrcGdRNU5YTlhWVkJ0RjUzOWpsYmhzWWcwb1FzSVVkdVNVd0k4dWJnNEp5V0hJZGJsMVZ2c082VDVKcjlHeWlJZGhYTHltNkhPU1F4VWNVU25sKzhwQ0tJcEc4NVhyL3E3b3lSZ21pZTVXRnRLMUJ0U2N6YzY5R3QyOG5sZUxaNUlhdjlkVU5STTVwRWROUFhhWjljTFVuTW5XUWw2WkRINkpGdEFCOGhTT29vWW4wVGFZMGo0c3pkcjR4RjVGMC9oUnd2dG5lSzJsOXZJNVE2N1lvUUpHVUgyc3NPNnluWGtaZ1plMmhJb2owd0x4WlJJZ1ZKSVltMzR3ZFNTR0orU3lDUlpHcTY5ZWVWVDgzZVhEMUdtZE9KbnlDSU1IWHF1NXR0Y1RySU5QV3BhMkhNUm82K0JtSm9OSkdVU3FNaHFDcExiQW8yVVpEbW5UVzAvQ3VmVjdMSFVXTHc3bnB6NjlkMzc5V1JRU1JveXNFU1llUmprVWdpanVkZnBEejQ5WEVHa29vTlNUTkRrQVpKbDJRQUwxR2xTYjlFQ1BsWS9uNHhoODUwM2h4RUFMbkhKckxJbitYdlhFVU1XREhRLzI5cm54UnlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0cvK0JRQjlkOEg1OUNaSUFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCJdLCJleHRlbnNpb25zIjpbImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6ImVjMzFiNGNjMmFjYzRiOGU5YzAxYmFkZTAwY2NiZTI2Iiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6dHJ1ZSwidXAiOnRydWUsInV2Ijp0cnVlfSwibWF4TXNnU2l6ZSI6MTIwMCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMV0sInRyYW5zcG9ydHMiOlsidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN31dfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjEtMDgtMDUiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJLZXlYZW50aWMgRklETzIgU2VjcDI1NlIxIEZJRE8yIENUQVAyIEF1dGhlbnRpY2F0b3IiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDIxMDgwNTAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4yIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjMifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjEtMDgtMDUiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6Mn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMy0xMi0wOCJ9LHsiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbImM1N2QwNjQxNjUzMjI1YjE3M2JjNmI0ZDk1ODc5Zjg3OTE1MjIyZjkiLCI5MjM4ODFmZTJmMjE0ZWU0NjU0ODQzNzFhZWI3MmU5N2Y1YTU4ZTBhIiwiNGI1NDYxNDIzNmM0YzRlOTNiZWIyZDNkYzFiNzViNjI5NzhlZTQ4OCIsImNlNjhkMWI3NWZiNGNkM2RhMDc3ZmQzZjgzM2M0ZDZlMjBiZjI4N2MiXSwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiYzU3ZDA2NDE2NTMyMjViMTczYmM2YjRkOTU4NzlmODc5MTUyMjJmOSIsIjkyMzg4MWZlMmYyMTRlZTQ2NTQ4NDM3MWFlYjcyZTk3ZjVhNThlMGEiLCI0YjU0NjE0MjM2YzRjNGU5M2JlYjJkM2RjMWI3NWI2Mjk3OGVlNDg4IiwiY2U2OGQxYjc1ZmI0Y2QzZGEwNzdmZDNmODMzYzRkNmUyMGJmMjg3YyJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiRmVpdGlhbiBCaW9QYXNzIEZJRE8gU2VjdXJpdHkgS2V5In0sImRlc2NyaXB0aW9uIjoiRmVpdGlhbiBCaW9QYXNzIEZJRE8gU2VjdXJpdHkgS2V5IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiLCJyZW1vdGVfaGFuZGxlIl0sImlzS2V5UmVzdHJpY3RlZCI6dHJ1ZSwiaXNGcmVzaFVzZXJWZXJpZmljYXRpb25SZXF1aXJlZCI6dHJ1ZSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQmZqQ0NBU1dnQXdJQkFnSUJBVEFLQmdncWhrak9QUVFEQWpBWE1SVXdFd1lEVlFRRERBeEdWQ0JHU1VSUElEQXlNREF3SUJjTk1UWXdOVEF4TURBd01EQXdXaGdQTWpBMU1EQTFNREV3TURBd01EQmFNQmN4RlRBVEJnTlZCQU1NREVaVUlFWkpSRThnTURJd01EQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJOQm1yUnFWT3h6dFRKVk4xOXZ0ZHFjTDd0S1Flb2wybm5NMi95WWd2a3NabnI1MFNLYlZnSUVrekhRVk91ODBMVkVFM2xWaGVPMUhqZ2d4QWxUNm80V2pZREJlTUIwR0ExVWREZ1FXQkJSSkZXUXQxYnZHM2pNNlhnbVYvSWNqTnRPL0N6QWZCZ05WSFNNRUdEQVdnQlJKRldRdDFidkczak02WGdtVi9JY2pOdE8vQ3pBTUJnTlZIUk1FQlRBREFRSC9NQTRHQTFVZER3RUIvd1FFQXdJQkJqQUtCZ2dxaGtqT1BRUURBZ05IQURCRUFpQXdmUHFnSVdJVUIrUUJCYVZHc2RIeTBzNVJNeGxrenBTWC96U3lUWm1VcFFJZ0Iyd0o2blpSTThvWC9uQTQzUmg2U0pvdk0yWHdDQ0gvLytMaXJCQWJCME09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUZBQUFBQVVDQU1BQUFBdEJrcmxBQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQkhacFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR3L2VIQmhZMnRsZENCaVpXZHBiajBpNzd1L0lpQnBaRDBpVnpWTk1FMXdRMlZvYVVoNmNtVlRlazVVWTNwcll6bGtJajgrSUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWtGa2IySmxJRmhOVUNCRGIzSmxJRFV1Tmkxak1ERTBJRGM1TGpFMU5qYzVOeXdnTWpBeE5DOHdPQzh5TUMwd09UbzFNem93TWlBZ0lDQWdJQ0FnSWo0Z1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNGdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlnZUcxc2JuTTZlRzF3UFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIaHRiRzV6T25Cb2IzUnZjMmh2Y0QwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOXdhRzkwYjNOb2IzQXZNUzR3THlJZ2VHMXNibk02ZUcxd1RVMDlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl0YlM4aUlIaHRiRzV6T25OMFVtVm1QU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2YzFSNWNHVXZVbVZ6YjNWeVkyVlNaV1lqSWlCNGJYQTZRM0psWVhSdmNsUnZiMnc5SWtGa2IySmxJRkJvYjNSdmMyaHZjQ0JEUXlBeU1ERTBJQ2hOWVdOcGJuUnZjMmdwSWlCNGJYQTZRM0psWVhSbFJHRjBaVDBpTWpBeE5pMHhNaTB6TUZReE5Eb3pNem93T0Nzd09Eb3dNQ0lnZUcxd09rMXZaR2xtZVVSaGRHVTlJakl3TVRZdE1USXRNekJVTURjNk16RTZOVGtyTURnNk1EQWlJSGh0Y0RwTlpYUmhaR0YwWVVSaGRHVTlJakl3TVRZdE1USXRNekJVTURjNk16RTZOVGtyTURnNk1EQWlJR1JqT21admNtMWhkRDBpYVcxaFoyVXZjRzVuSWlCd2FHOTBiM05vYjNBNlNHbHpkRzl5ZVQwaU1qQXhOaTB4TWkwek1GUXhOVG96TURveU55c3dPRG93TUNZamVEazc1cGFINUx1MklPYWNxdWFnaCttaW1DMHhJT1czc3VhSmsrVzhnQ1lqZUVFN0lpQjRiWEJOVFRwSmJuTjBZVzVqWlVsRVBTSjRiWEF1YVdsa09qSkZOekZDUmtaRFF6WTNSakV4UlRZNU56aEVRVGxEUWtJMk5EWXpSamt3SWlCNGJYQk5UVHBFYjJOMWJXVnVkRWxFUFNKNGJYQXVaR2xrT2pKRk56RkNSa1pFUXpZM1JqRXhSVFk1TnpoRVFUbERRa0kyTkRZelJqa3dJajRnUEhodGNFMU5Pa1JsY21sMlpXUkdjbTl0SUhOMFVtVm1PbWx1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2TWtVM01VSkdSa0ZETmpkR01URkZOamszT0VSQk9VTkNRalkwTmpOR09UQWlJSE4wVW1WbU9tUnZZM1Z0Wlc1MFNVUTlJbmh0Y0M1a2FXUTZNa1UzTVVKR1JrSkROamRHTVRGRk5qazNPRVJCT1VOQ1FqWTBOak5HT1RBaUx6NGdQQzl5WkdZNlJHVnpZM0pwY0hScGIyNCtJRHd2Y21SbU9sSkVSajRnUEM5NE9uaHRjRzFsZEdFK0lEdy9lSEJoWTJ0bGRDQmxibVE5SW5JaVB6NDc3SlhGQUFBQVlGQk1WRVgvLy84RVZxSVhaYXZHMk9vcWNMRzJ6T09rd3QwQlNKdHFsY1hWNHUrYXV0bFdoYnprN1BVQU1ZOUhjcktqdE5icThmZUFsOGFCb3N6ejl2cGRqc0dHcXRGM244dVRzTlNacGM2SnNOVDUrdjB4WUtudThQZmY1L0w0OGZnL2ZyaWN6SmdZQUFBREFFbEVRVlI0MmtSVUNaYkRJQWpGWFpPWTFUYXROYzM5Ynprc1NZYzNyNE1FNGZNQkFhRDZ6bDh5LzlUT2dldDhkNWpmTjc4YndNL2REQ1JwUjUyMXpYZm9qSEowNUlJeWhCQVVTVkFPTmRHekJZdDJmN0tGcmZrSmFBa0hoOUZaaGNEWEhSa1RLbzlNTGloR2FhdkltblYzcXlFWDBFcHJnei80RHdVRDdrQ0hSbmQ4UUZONDNHbzRVVm1ERGd6YTR3MjdvaXpkQTIrY0srdXVVcGpqbzIreHdjLzQyVzUweDVMR1llREJzUjBIVkl4NXg4aUY2MENibGJURUVrRnIyN2JOREJVVlNxMU9LVlBiRTYyYjNFSDhGcUJnNU9PT0V1YzJ0OFpKaXFNT3VHcCtjS2pnN3dWR2Nlb3pxTjRweGdWUFFrakZZZ2JWSktEVWhEQ2pZcmF3UDVxNEVUZ0M5ZklNUkh0aXRwUWNDdkpPRUxjYk1zUWduY2lSa2xqcHlRanZHNDRqcUJVRVRGaUJpMVBFSXlla096c1crVHk1Y0xIb3M1UitkTVMxTHRTU3hmM2dRSGN6UjJDSTRnTU5wVzRJUkExUU1hNnRKNCtDNnVIdUdFOG1OREl5RnFnL09QL01NVXVlUzZJcThTOTBkQWVCSlNFeS9xS2tLK0JOd3o4Y1lZNGpiNUo2dTRpV0NJMkIxWjU2TFc1a0VjNGhrZE1wc3ZVQzU1ODVTWDBRdWJjZ05xeWZnREZFY1R0KzQwLzBTNU54MHdhQ3czT0trY09iQTVJbjBBWXAwMXBqancybjYyNlVEanRId2EyOGlIdVRLcXRydityZVc0MU5aNmlHbHI3dXVMSkNma0Z0Y3RjRzA0c2dtMWVOUytaYURucGFURXJHb3lYNUpLMmlNejh4czBuT3dXR2NQRE40OXFhQ2Q0YnpKb3pEWm0vYUJLK0Vvekx3K1hoTkJpWXdIZjBzaU91MVhQa0cvekt3dnFZS2NmU3dERWNIL29VZTA3ZXMvV1E4ckl5ZzJET1hqOHRqa1pkdURCL2I4aHpEbGxNTU9DUzVCRW5kNTM0Zjh0aTNVWmM0a01zM3hMeWFmTVNzSmhkRzhYUHFqTms1dEFnTzI1ZmVLQ2huVmREai9KMEZNa09zVS94TUJ2MHdGaFllRUdmVkgxM2Z1RFUweURGTGE0ZmM3Um5XSEJmdVRGVjJ0RW1Od2FkYzdhYzNVWTJqZkJsN0hUMzZmZTM0aVFPNW1OQ0ZGQlcwN0tqUGdxaE9MVTAxdlo4UHVlWjJKQ2xGWk44amtVczY5dWthOWVQcDYrRWZMNEFGNStOeXdTYmlySHRjQjhNbC9na3dBRWprSzY0S2pIUGVBQUFBQUVsRlRrU3VRbUNDIn0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMTgtMTEtMDEiLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IkZlaXRpYW4gQmlvUGFzcyBGSURPIFUyRiBTZWN1cml0eSBLZXkiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlUyRjEwMDAyMDE4MDIyODAwNSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4wLjEiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMC4xIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDE4LTExLTAxIn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAxOC0xMS0wMSJ9LHsiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbImRmYWJiMWY2NjY1MzAzZDhkMTljZmQwZmUxYjM0YzRhZTA1ODY1NTgiXSwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiZGZhYmIxZjY2NjUzMDNkOGQxOWNmZDBmZTFiMzRjNGFlMDU4NjU1OCJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiRmVpdGlhbiBCaW9QYXNzIEZJRE8yIFBsdXMgKEVudGVycHJpc2UgUHJvZmlsZSkifSwiZGVzY3JpcHRpb24iOiJGZWl0aWFuIEJpb1Bhc3MgRklETzIgUGx1cyAoRW50ZXJwcmlzZSBQcm9maWxlKSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjJ9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6ImZpbmdlcnByaW50X2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCIsInJlbW90ZV9oYW5kbGUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQjJUQ0NBWDZnQXdJQkFnSVFGUU5LVys3emJnLzdkK2xUeXJJV3dEQUtCZ2dxaGtqT1BRUURBakJMTVFzd0NRWURWUVFHRXdKVlV6RWRNQnNHQTFVRUNnd1VSbVZwZEdsaGJpQlVaV05vYm05c2IyZHBaWE14SFRBYkJnTlZCQU1NRkVabGFYUnBZVzRnUmtsRVR5QlNiMjkwSUVOQk1DQVhEVEl5TURZd09EQXdNREF3TUZvWUR6SXdOVEl3TmpBM01qTTFPVFU1V2pCTE1Rc3dDUVlEVlFRR0V3SlZVekVkTUJzR0ExVUVDZ3dVUm1WcGRHbGhiaUJVWldOb2JtOXNiMmRwWlhNeEhUQWJCZ05WQkFNTUZFWmxhWFJwWVc0Z1JrbEVUeUJTYjI5MElFTkJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVzRllFRWhpSnVxcW5NZ1FqU2lpdkJqVjdER0NUZjRYQkJIL0I3dXZac0t4WFNoRjBMOHVESVNXVXZjRXhpeFJzNmdCM29sZFNyam94Nkw4VDk0Tk96cU5DTUVBd0hRWURWUjBPQkJZRUZFdTloeVlSclJ5Snp3Ull2bkRTQ0l4ckZpTzNNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdEZ1lEVlIwUEFRSC9CQVFEQWdFR01Bb0dDQ3FHU000OUJBTUNBMGtBTUVZQ0lRQ0IwTkZRU04wejRsV3oveWMzNmV3clRDenR0Sy9xRnZsYVBPS2grVDFvNndJaEFQMG9LS0ErY2ljc0R5M1kzbitWbFA4ZUIzUEJ6TWtodlcvOUlTWEN3K1ZCIiwiTUlJQjJEQ0NBWDZnQXdJQkFnSVFCVG1rM1p3aWxGWGpzWnl3SERuTWdEQUtCZ2dxaGtqT1BRUURBakJMTVFzd0NRWURWUVFHRXdKRFRqRWRNQnNHQTFVRUNnd1VSbVZwZEdsaGJpQlVaV05vYm05c2IyZHBaWE14SFRBYkJnTlZCQU1NRkVabGFYUnBZVzRnUmtsRVR5QlNiMjkwSUVOQk1DQVhEVEl5TURZd09EQXdNREF3TUZvWUR6SXdOVEl3TmpBM01qTTFPVFU1V2pCTE1Rc3dDUVlEVlFRR0V3SkRUakVkTUJzR0ExVUVDZ3dVUm1WcGRHbGhiaUJVWldOb2JtOXNiMmRwWlhNeEhUQWJCZ05WQkFNTUZFWmxhWFJwWVc0Z1JrbEVUeUJTYjI5MElFTkJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVuZkFLYmp2TVgxRXkxYjZrK1dRUWROVk10OUpnR1d5SjNQdk00QlNLNVhxVGZvKyswb0FqLzR0bnd5SUwwSEZCUjlTdCtrdGpxU1hEZmppWEF1cnM4Nk5DTUVBd0hRWURWUjBPQkJZRUZOR2htRTJCZjhPNWEvWUhaNzFRRXY2UVJmRlVNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdEZ1lEVlIwUEFRSC9CQVFEQWdFR01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lCeVJ6NE9BbFJaOUh6OUtWN2cyUU50QzBDOEp4SC94TEpZOEZaRW10SjNzQWlFQXNyZVQwK2VOa05jVWpJOWg1T1BDb0g2Tm1zT2tndkVBQkpackYwN0FEa1k9IiwiTUlJQjJEQ0NBWCtnQXdJQkFnSVJBTXM4WVhWQm9CTnVYVWpxZkNvWDd5NHdDZ1lJS29aSXpqMEVBd0l3U3pFTE1Ba0dBMVVFQmhNQ1ZWTXhIVEFiQmdOVkJBb01GRVpsYVhScFlXNGdWR1ZqYUc1dmJHOW5hV1Z6TVIwd0d3WURWUVFEREJSR1pXbDBhV0Z1SUVaSlJFOGdSVUVnVW05dmREQWdGdzB5TXpBeE1ERXdNREF3TURCYUdBOHlNRFV5TVRJek1USXpOVGsxT1Zvd1N6RUxNQWtHQTFVRUJoTUNWVk14SFRBYkJnTlZCQW9NRkVabGFYUnBZVzRnVkdWamFHNXZiRzluYVdWek1SMHdHd1lEVlFRRERCUkdaV2wwYVdGdUlFWkpSRThnUlVFZ1VtOXZkREJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCRDJMSEhBUXFZYmRSMVdabHVlcnRNMzByV2hvcllhdldtTVZhNG5kWDlQWnd1UkVwTFE0bTFuRWxxUUtNblJFOC80QytScXdpYXYrbXBJNGt4ZDVlNXVqUWpCQU1CMEdBMVVkRGdRV0JCUzNaWmp5R2xoWjk5TjF2TG9UUFhWVWE0WkVZREFQQmdOVkhSTUJBZjhFQlRBREFRSC9NQTRHQTFVZER3RUIvd1FFQXdJQkJqQUtCZ2dxaGtqT1BRUURBZ05IQURCRUFpQW9EK1I2a29sSVdhTkp6NGh6MDNEM2dlczNHYk1CakFXcGtPVWc5YXlGZ3dJZ2JFdzdBWVN5azY4T3Z4Z1hlemduZFRSVEV1U1dUK2ZkUm5MYUJOc2FUdzA9Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUZBQUFBQVVDQU1BQUFBdEJrcmxBQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQkhacFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR3L2VIQmhZMnRsZENCaVpXZHBiajBpNzd1L0lpQnBaRDBpVnpWTk1FMXdRMlZvYVVoNmNtVlRlazVVWTNwcll6bGtJajgrSUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWtGa2IySmxJRmhOVUNCRGIzSmxJRFV1Tmkxak1ERTBJRGM1TGpFMU5qYzVOeXdnTWpBeE5DOHdPQzh5TUMwd09UbzFNem93TWlBZ0lDQWdJQ0FnSWo0Z1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNGdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlnZUcxc2JuTTZlRzF3UFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIaHRiRzV6T25Cb2IzUnZjMmh2Y0QwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOXdhRzkwYjNOb2IzQXZNUzR3THlJZ2VHMXNibk02ZUcxd1RVMDlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl0YlM4aUlIaHRiRzV6T25OMFVtVm1QU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2YzFSNWNHVXZVbVZ6YjNWeVkyVlNaV1lqSWlCNGJYQTZRM0psWVhSdmNsUnZiMnc5SWtGa2IySmxJRkJvYjNSdmMyaHZjQ0JEUXlBeU1ERTBJQ2hOWVdOcGJuUnZjMmdwSWlCNGJYQTZRM0psWVhSbFJHRjBaVDBpTWpBeE5pMHhNaTB6TUZReE5Eb3pNem93T0Nzd09Eb3dNQ0lnZUcxd09rMXZaR2xtZVVSaGRHVTlJakl3TVRZdE1USXRNekJVTURjNk16RTZOVGtyTURnNk1EQWlJSGh0Y0RwTlpYUmhaR0YwWVVSaGRHVTlJakl3TVRZdE1USXRNekJVTURjNk16RTZOVGtyTURnNk1EQWlJR1JqT21admNtMWhkRDBpYVcxaFoyVXZjRzVuSWlCd2FHOTBiM05vYjNBNlNHbHpkRzl5ZVQwaU1qQXhOaTB4TWkwek1GUXhOVG96TURveU55c3dPRG93TUNZamVEazc1cGFINUx1MklPYWNxdWFnaCttaW1DMHhJT1czc3VhSmsrVzhnQ1lqZUVFN0lpQjRiWEJOVFRwSmJuTjBZVzVqWlVsRVBTSjRiWEF1YVdsa09qSkZOekZDUmtaRFF6WTNSakV4UlRZNU56aEVRVGxEUWtJMk5EWXpSamt3SWlCNGJYQk5UVHBFYjJOMWJXVnVkRWxFUFNKNGJYQXVaR2xrT2pKRk56RkNSa1pFUXpZM1JqRXhSVFk1TnpoRVFUbERRa0kyTkRZelJqa3dJajRnUEhodGNFMU5Pa1JsY21sMlpXUkdjbTl0SUhOMFVtVm1PbWx1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2TWtVM01VSkdSa0ZETmpkR01URkZOamszT0VSQk9VTkNRalkwTmpOR09UQWlJSE4wVW1WbU9tUnZZM1Z0Wlc1MFNVUTlJbmh0Y0M1a2FXUTZNa1UzTVVKR1JrSkROamRHTVRGRk5qazNPRVJCT1VOQ1FqWTBOak5HT1RBaUx6NGdQQzl5WkdZNlJHVnpZM0pwY0hScGIyNCtJRHd2Y21SbU9sSkVSajRnUEM5NE9uaHRjRzFsZEdFK0lEdy9lSEJoWTJ0bGRDQmxibVE5SW5JaVB6NDc3SlhGQUFBQVlGQk1WRVgvLy84RVZxSVhaYXZHMk9vcWNMRzJ6T09rd3QwQlNKdHFsY1hWNHUrYXV0bFdoYnprN1BVQU1ZOUhjcktqdE5icThmZUFsOGFCb3N6ejl2cGRqc0dHcXRGM244dVRzTlNacGM2SnNOVDUrdjB4WUtudThQZmY1L0w0OGZnL2ZyaWN6SmdZQUFBREFFbEVRVlI0MmtSVUNaYkRJQWpGWFpPWTFUYXROYzM5Ynprc1NZYzNyNE1FNGZNQkFhRDZ6bDh5LzlUT2dldDhkNWpmTjc4YndNL2REQ1JwUjUyMXpYZm9qSEowNUlJeWhCQVVTVkFPTmRHekJZdDJmN0tGcmZrSmFBa0hoOUZaaGNEWEhSa1RLbzlNTGloR2FhdkltblYzcXlFWDBFcHJnei80RHdVRDdrQ0hSbmQ4UUZONDNHbzRVVm1ERGd6YTR3MjdvaXpkQTIrY0srdXVVcGpqbzIreHdjLzQyVzUweDVMR1llREJzUjBIVkl4NXg4aUY2MENibGJURUVrRnIyN2JOREJVVlNxMU9LVlBiRTYyYjNFSDhGcUJnNU9PT0V1YzJ0OFpKaXFNT3VHcCtjS2pnN3dWR2Nlb3pxTjRweGdWUFFrakZZZ2JWSktEVWhEQ2pZcmF3UDVxNEVUZ0M5ZklNUkh0aXRwUWNDdkpPRUxjYk1zUWduY2lSa2xqcHlRanZHNDRqcUJVRVRGaUJpMVBFSXlla096c1crVHk1Y0xIb3M1UitkTVMxTHRTU3hmM2dRSGN6UjJDSTRnTU5wVzRJUkExUU1hNnRKNCtDNnVIdUdFOG1OREl5RnFnL09QL01NVXVlUzZJcThTOTBkQWVCSlNFeS9xS2tLK0JOd3o4Y1lZNGpiNUo2dTRpV0NJMkIxWjU2TFc1a0VjNGhrZE1wc3ZVQzU1ODVTWDBRdWJjZ05xeWZnREZFY1R0KzQwLzBTNU54MHdhQ3czT0trY09iQTVJbjBBWXAwMXBqancybjYyNlVEanRId2EyOGlIdVRLcXRydityZVc0MU5aNmlHbHI3dXVMSkNma0Z0Y3RjRzA0c2dtMWVOUytaYURucGFURXJHb3lYNUpLMmlNejh4czBuT3dXR2NQRE40OXFhQ2Q0YnpKb3pEWm0vYUJLK0Vvekx3K1hoTkJpWXdIZjBzaU91MVhQa0cvekt3dnFZS2NmU3dERWNIL29VZTA3ZXMvV1E4ckl5ZzJET1hqOHRqa1pkdURCL2I4aHpEbGxNTU9DUzVCRW5kNTM0Zjh0aTNVWmM0a01zM3hMeWFmTVNzSmhkRzhYUHFqTms1dEFnTzI1ZmVLQ2huVmREai9KMEZNa09zVS94TUJ2MHdGaFllRUdmVkgxM2Z1RFUweURGTGE0ZmM3Um5XSEJmdVRGVjJ0RW1Od2FkYzdhYzNVWTJqZkJsN0hUMzZmZTM0aVFPNW1OQ0ZGQlcwN0tqUGdxaE9MVTAxdlo4UHVlWjJKQ2xGWk44amtVczY5dWthOWVQcDYrRWZMNEFGNStOeXdTYmlySHRjQjhNbC9na3dBRWprSzY0S2pIUGVBQUFBQUVsRlRrU3VRbUNDIn0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMDktMjYiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJGZWl0aWFuIEJpb1Bhc3MgRklETzIgUGx1cyAoRW50ZXJwcmlzZSBQcm9maWxlKSIsImNlcnRpZmljYXRlTnVtYmVyIjoiVTJGMTAwMDIwMjQwOTI2MDA0IiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMDktMjYiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MX1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNC0xMS0yMCJ9LHsiYWFndWlkIjoiNWQ2MjkyMTgtZDNhNS0xMWVkLWFmYTEtMDI0MmFjMTIwMDAyIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI1ZDYyOTIxOC1kM2E1LTExZWQtYWZhMS0wMjQyYWMxMjAwMDIiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiU3dpc3NiaXQgaVNoaWVsZCBLZXkgUHJvIn0sImRlc2NyaXB0aW9uIjoiU3dpc3NiaXQgaVNoaWVsZCBLZXkgUHJvIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQ2lUQ0NBZzZnQXdJQkFnSVVPa21VMzVJaWNYb1ZQamZ2d3BHN01ONnRIUFV3Q2dZSUtvWkl6ajBFQXdNd1F6RUxNQWtHQTFVRUJoTUNSRVV4RkRBU0JnTlZCQW9NQzFOM2FYTnpZbWwwSUVGSE1SNHdIQVlEVlFRRERCVlRkMmx6YzJKcGRDQkdTVVJQSUZKdmIzUWdRMEV3SUJjTk1qRXhNREEzTURrek1EUXlXaGdQTWpBMU1URXdNRGN3T1RNd05ESmFNRU14Q3pBSkJnTlZCQVlUQWtSRk1SUXdFZ1lEVlFRS0RBdFRkMmx6YzJKcGRDQkJSekVlTUJ3R0ExVUVBd3dWVTNkcGMzTmlhWFFnUmtsRVR5QlNiMjkwSUVOQk1IWXdFQVlIS29aSXpqMENBUVlGSzRFRUFDSURZZ0FFdGdPQzdJS3hpcE1KN2JWUFRUODNPZTkweHpIUENlYnh5Q3RnL1dyc1RyUmFTbllpZ21KQ0I4L2pxQk40T1FHMmRaNWpjTnNMNlN3SG9zWURSSmMrTzF6azlpNUdFWldmM0lyOTkyQTZkdU1zcDUxbHE0ZkFnYS9VelROOS9FYnpvNEhBTUlHOU1CMEdBMVVkRGdRV0JCVGZ4emc4R0d6WUFpZEtMNjN1aFNpcmFYSklLREIrQmdOVkhTTUVkekIxZ0JUZnh6ZzhHR3pZQWlkS0w2M3VoU2lyYVhKSUtLRkhwRVV3UXpFTE1Ba0dBMVVFQmhNQ1JFVXhGREFTQmdOVkJBb01DMU4zYVhOelltbDBJRUZITVI0d0hBWURWUVFEREJWVGQybHpjMkpwZENCR1NVUlBJRkp2YjNRZ1EwR0NGRHBKbE4rU0luRjZGVDQzNzhLUnV6RGVyUnoxTUF3R0ExVWRFd1FGTUFNQkFmOHdEZ1lEVlIwUEFRSC9CQVFEQWdFR01Bb0dDQ3FHU000OUJBTURBMmtBTUdZQ01RRHN2NEs2TmZKdmZ2emQwT3lnd0ovQUJpTHRndEpXaFhUZVVsbHRkcWE0V3NPTTl0dng2MzZ2NUZJdlpSa0sxWG9DTVFDZG9QUSthNGZEQkVpTnVqMFdzMzN1VVFoR3Jwc2VQREdmVlhuNGtFcGJUSUJlT2RWQXgvL1RyTUMvU1ZiK2JzZz0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBTkVBQUFETUNBSUFBQUJpRU5IOUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFEc01BQUE3REFjZHZxR1FBQUNadlNVUkJWSGhlN1owSGRCelYxWURYRFRlYXNTazJFRXd4WU1DQUFRT0duMERvRUNkQUNLWWtRQ0NoQkVpQUVFZ2doSVFFSEFpaGR4TEFYYkxhRnExNjc3MnZldTk5cC9lWjFYL2Z6RXBhMWdXRFo2V1Y5dDN6SFIwZGczWm4zL3ZtdnZ0bTU3MnhqT0hBTWJXQm5jTXgxWEVnNTFSVkhYVVROYzF0OW9LS3QrTHpINDNNdXptOGRIMUV3NmxSblN0dGd5c2M3bU5paVdPYzFERk9FalBib2FDdm9jZFgyWWRPaStxNE9MTCsxdkRTeHlOejM0N1BpeTJvcUd2dGNCTUUyT0wxNXR0aXY4NEpndERXMFpGVTVubzNyZndSVzhsMVlhVnJ0cFlmL1hYdG5HMXRsbWkzSlU2eUpJOVpVakdoQlBRNDlIdlU2Tnh0cmNkc3JUMTdlOFgxdTBzZXR4Vi9rRjZlV2w3YjJkVWxpcUxYbmdQR3ZwMWpHTWJWMUJxV1ZmS2NOZmZHOE5JendocU9EdStjdjZmUEVqbHNpU0VzTnNiaTRDeXh2STZBQ1EzMDduYXdxUGZCZ1lqaHd5SUdqZzdyT0hOMzNTMWhKWCsyNVVmbGx0VzN0SE1jNTNWby83RVA1d2lDS0sxdi9peTk5S0dvb3ZVN3lsZnNiSm9UMW9ja2k1ZVI1dkNMamJaWVNmVEdtRkFEK2gyY2krV1FDZUNEblowYjFudmN6c1pMZHBROUdsUDBaV1paWlZNclJWRmVrL1lUL3M1QmhnUGhQa2dxdkN1aWFNM3Ura1hoUFhPaVJpeFdHZ2tPMkpseDRiQnpvUWxwc1ZMSUFUREJVTUpLelkwYVdSTGVzemFzN3Q0OUJaK2xGVlUwdEJ3NDIzM0RPWjduYTV2YlBrc3Z1V3RQNFNrN1hmUEMreTF4ZW02elEwYWw5bnA3VE1nRFZvQjI4UkpJc2lDODc3UWQxZmRGRm55VldkYlkxZ0h6QWE5VmU4V2tjekR2YU92b2hCcnVvYWpDTThQckYwVDJJNWRoSUljWGhaZkdneWxtYjlCUUM5cEJjUzlBOGx1d3AvZWM4TnJIWWdxaWM4czZ1N28xVGZPNjljMllkTTVOa01sbHJ1ZGljaS9jVnJvb3ZCdkpDelVqSkZKc0crYkFnQ0hnaVZPd3hJbEx3am8zYkM5NTBaYWJVVkczdjhKdTBqbFhTL3Q3YWVVM2haVXUzOTVnaVJ6U3B3c3NydHN3QndlSk1oUTRzMmZnMkcxMW04SkxQc21vYUdqcjJPZlZrMG5uN1BubGoxcUx6OWhWTnkrOEQya0xOUno4OUg5cERHWS93TVFDVFNuSStXRzlaKytxL1oyOUpLR29jbkI0Mkt1WFQwdzY5MVpjM3ZWaEpjdkNPOUJmR2pVY1RuS1lnd2ZWZHJwMk5tYjU3cmFiZHhlOW41QlgwOUx1MWNzbkpwMTdOQ0wzekczbGgwWDBvMG9PQ2J2WGkySXdCd2FjQVhQaXhJWGh2V3UvTHYxZGRGNUtkWk5YTDUrWWRPN204TktqdjY3MVZuSXdZL1Y3T1F6bVlIQXc0TnljaUtGanZxcTVMYklzdkxMRHE1ZFBURHEzUHFKKy9zNE8vYy8wYnhwOFh3aURPVWpzK3ZBYTQxNndvLzN5NkliUHF3ZThldm5FcEhPblJuZWlMKzl0RTk4MDdQVnlHTXkzWXRPck9oZ25vMGJQdG5XOTYzSjc5ZktKU2VkVzJnYjE2eU9jZnJrRk80ZjVYaGp5eEhJV3A3ZzZkdWpOT3NhcmwwOU1PcmZDNGJZa2U5QlZGcjlYd1dDK0swNEJYRnJsZEcrcDU3MTYrY1NrYzhmRWt1Z2VLZXdjNXRCeGl1RFNDWEhFNncwSHZDWjhqSk5Dem9HaGZuK1B3WHhYRE9maXFkZSt6VGs5ejJIbk1JZU9OOCtScnpYczQrNFM3QndtQUdEbk1GTU5kZzR6MVdEbkxORWhqMStEQkpyUWRjNW83cWg5RVJsS3dPZWRZdTFtdVhPR1dQdkVWeksvL3hSTnpKa2docGc3ZTRGUFozeE0vM1lMS0xQV09jTWVReWwwUXJzbm1WQXRDclg3QWl1eHlFWXN0Uk5IT29obERuSjVMSFdza3pyZVNhMk1vMWJGVXlmR1V5ZU5jM0xDN09HVUJQTGtCSEpWSEhWTUxMbkVSczZieXB2VFpwVno0MWxxVWpqOUZ6aVA1MXFSV3d0MXQ0NktKVmM0U2ZCcGRRSjFaaks5THBXK0tKMitQSU8rS291K05wdTVJWWU5SlkvZGxNL2VWc0QrcklDOXM1RDllU0Y3bDg3bW9sbkMzVVhzZmNYbzU2WTg5cklNR2hSY2JDZTlqZWJYcElGZzlqaG5wQzVJWXhHUXpORHZNSEFzc3BGd0hwOFVUNTZaVEsxUG82L01vbS9JWlVDbWU0cTVoOHY0SnlyNTUycUV2OVFLcjlZTGJ6UUs3elFMSDdTSUg3ZEtuN1ZKLzJ1WHZ1NlF0blZLMjd1a0hWM1NUcDFkczRYZDNWSmtqeFRXTGNIbmZhS1MyNWpKTEl2Vm5ZTUc5R3ZWUURBYm5ETk8wUEdzTmkrR1dHS0hURWFkbGtpdlQyT3V6VUdKNnBGeTlvVWEvdlVHNGNOV0VXU0s2SkdkQTBycWtKSTdxcFlRYWlXbDFkSmFFNk8xc0ZvN3AzVndXaGVuOWZCYXI2RDE2ZlRQTGdaRnpTMTdoaVJQbVZ2OXVGVzh2WUE3UG82eVJPbUZoMS9iQm9JWjdOeUVhbnFKQnBYWmtYYnk1SGpxZ2xUNjJoeG1jeEgzWkNYL1NwM3dmb3U0clZPMDkwc1pRMHF4VzZtbDFWWVd5VFFpZVNqRnc2dGpzbWRzM3lzdFF5QUdCYytlYnZtWEpkeUo0SnhSN1BvMWNpQ1kyYzdwdVEwUzJ4RU9jblVpRFdNRUZDdC9yQmJlYlJIRHUyVklZMldFMnNScVBXQ1k3S0VWRDZkNlJNMGphMk9xWjh6ai9XUWhIWkRDdzd1a1gyRG52aDF2ZWtPNURRcVJ0Y2tVVkdtUGxNUFFLVzd2bE5LR2xHcEtoWkdSVnNBdHJOYUJvcFBUZG5aSzl4WnpNSUhGemgwUVBiMHR0S0haL3RWWnpPUGxIQXlnem42bGlsUzdlWTJRWWNUMFFDYkQ4YTBCbGVzTzdOeUI4QTZtYmhoTVZ6ako5ZWswVFBpM05BaldYcm1HVXFFK3cwbnR1d1oyN3R2UW5WdGdJMDZNSjYvUFlaNTM4V0hkY2dXaDlnc29zWGtQRk1kM0NlemMvakV5WEJTeHhJYXV0TjFSd0w3UktLUU15WjI4cG1EWkRpR3djL3RIZDI2cGpUdzNoWDZ3bFB1c1ZTeDJxNk9TQnd0M2lJR2QyeGRnbXc1a3VIV3A5TU5sM0xZT3lVV3AzTUZ1dzQzalFJR2QyeGQ2aGx0c0o4NUpvVUM0N1oxU0E2M2k2czJzd001OWsvRU1kNWlWV0pOTTNWL0tiZFdGazdCdzVnVjI3cHZvazRiNVZ1TGtCT3BuaGV3bmJXSXR6bkJtQjNidW0rak9IUnRIM3BqTHZOa2t3S1NCdzhLWkhkaTVjWXhSRmNvNEczbFJPdjBuRjU4MnJNQXMxWHNvT013TDdOdzR1bkFMck1TcGlhaU1pK2lSZTRUOWJMS040OUFDT3plT1Bxb3VqeVZ2eUdYZWJoYXJLRlhHT1M0d2daMGJKNHFZWnlYT1M2WC9VTTBsRDhyREVzNXhnWW9lWHR2ZEpkMFgwczdwbGR6Y2FHSzVrOXlVei82dlhXeGpOUVYvZFIrd0dCUzFpRzRKM2JNWkg3TE9lYjlVSlM1QVNZN1BHSmJaS2Z4NkM5NUo4NkRiT1FGNFd3REdkRm56QXRsMjl0SE1hRnM3cGJ1THVKV2g2eHg4NWlnQ2p1YTJmUGF6TnFtWm1hS3JJNkxxb1dRUERPTDlndGJOby9VUXJhd0cvZEhJYVBXMFdndFFhbzFPTmFWV2taTlV6a3pneUYzNkIwa2NVTFkwQ2pmbnNjYzY5ZlVRZ0YrUEJJSmdjMjV1REhGZUNnVkpMbmt3c05kSFFHZEdHUnNRd1MyMWpGQXpoNVg0QWRuYUsrL3BsbmQzeWRzNjVhODZwQy9hcFUvYnhJOWJ4WTlheEE5YXhQZWJ4ZmVheFhkMTN0R0JLYzVNQkk0Y1BnNThpci9XQ2ZlVmNPdlQ2U01kb2JuV0VGMGljUjl1SjYvUFpxQ2JHeGdOUnJRQUJRelpVQ2xtRFN1N3U2VjNXOFNYYTRXbnE3aEh5cmtIU3ptWXhHMHU1TzRzNUc0cllEY1ZzTGZtTWJma01UZmxNamZtTWpma01OZm5NTmRsSTY3VitkSE1CQzNqelVXZjRvcE01cHdVK3ZnNDhqRGJYdDBST0lMRk9mMmEzTHdZOUUzWEF5V2N2VThlQ1V5U2c0b05Ycm1VVUhkMVNTKzVoTHVMMmF1em1YVnA5QmxKYUhVN2xEWEh4NkYxL0N1Y0ZIemtvNEZZOGlnSENXa0FPTUtPZ0xOaTFyRFVUaTYwb1M4WTUvaDFSMEFKRnVkUU1ZSFdwVjZVVHI5VWk3N3BDc1ExT1JBT0tyYjBZZVhmamVJdmlya042ZlJKOGVRUkRoSUdkRU42eE1UbU1VWk43VXZFckFNK0ZMVDgxQXlwRXdTTGMrakRFOGM1cVIvbnNSKzNTczJzK2NNcUNEY2tldElHbGIvWENUQktRbFpEKzNSQWN4dTJHYjhZdjRjT0U1L2FyenNDU2hBNUYwMmNua2ovcG95TDZaVUhSUE96bkZ2MjVJNm9yOVVMMStVd0sySkoxT0xvUlBkcGVyOUR3Z1NJb0hBTytqc1Npam55b2pUbVpaZVFNNkpRWmwrV2c1RzZobEkvYkpFMjViTW54bEZ6OVhlY3RoTTl4QWtlNXhiWlNKaFN3UnkrbGxKRkdBak5DOVV6Qm9uVDJpcy9YTWF0VHFUbXc5c1pJNHZmWVdDbWh1bDNidHlBWmJIazdRWHNyaTY1bXpmNUxoSkdRUlBWTnh2RUgyWXhpMjNlMmhIbnRta2pTSnliRTAyY0dFODlXTW81K3hYQzdLc2tmWUlXMVNQL3Vvdy9QWkhTYytxVXo5UXd2a3kvYzNxU1cyQWx6MHFtZjEvRlo0K29ncWxydWp5ZXNUcEtmYnRadkQ2SFJVK1FncmVEU3M3dkdEQlRTWkE0dDhST1hweE8vNlZXZ0VIUTFGcHVERXJEM0JIbEQ5WDhlYWswbEl6RzIva2ZBMllxbVg3bklPdEVFMGM1eUt1eW1IODFDaTdLNUpXcmJ0bmo2SmZ2MTIvWFFaczFnM0I0WUoxZWdzUzVGVTd5cGx6bS9SYWhpVEhUT1VpWlhieTJyVlBhbE1lQzFwUFhSL3lPQVRPVlRMTnpxS0pIUDFmcTl5OTkwU2EyYzJiT1dTVnRySTVXUDJnUnI4NWlGcUlaS3hZdUNBZ1M1MDZPSnpjWHNaQ1F1Z1V6bldQVk1TZ1F0elNLbDJiUWFEdDY3Rnd3RUFUT29Tc1hxeE1vS0xuQ3UrVStVNy8xSWhWUHpvanljcTF3WVJxTjNnNWZKUWtHZ3NTNTB4T3BoMHE1cUI1NTBGVG5SbVZQMnBEeXh4ciszQlFLdlIxMkxoaVlmdWNpa0FkbkpGR1BsSFBXUG5uSVZPZUdKVS9pb1B4MEZYZDI4dmpWWUw4RHdFdzlRZUxjbWlUcTBYTE9aclp6OEdweEEvS1RsZHlaMkxuZ0lYaWNlNndjM1I1c3JuTXdVanY3NVNjcXVEWFl1ZUJoMXVjNWNPNUo3RnhRRVNSekNLam5qTHMxeloxRERJdWUrQUg1ZDNoc0RTcUN4TG5UOUhsclpJL0pkd2lQU0o2VVFmUmw2MXFZdDJMbmdvUWdjVzUxQXZYTEVpNnNXKzRWekhTT2tEMVp3OHFMTHY3ODFQSHJjNzd2anBrV2dzUzVrK09welVYY3RrNnBpemZ6ZXdoRzhSUzcxWC9XQ3h2U0dmdzlSTEFRSk02aDcxc0wyQy9heFRaVGQwUVhWVTh0cmI3YkxGNlZ4YUJsdytBY3ZwRnAyZ2tDNTlEUEZVNjBoNnZwOTVXb25yRk9YdHZhTVg1ZmlYSHpIRTUxMDB1UU9IZTBmdi9jR3dHNGZ3NUt1dGcrK1VIOWNaSGU1VjdZdWVsbG1wMEQ5Tnl6MUlidUUvNXJuZm4zQ1V2YVdPR28rcUpMdUNpTldZTHZFdzRHZ3NTNUJWYnk3R1RxbVdvK1owUUJTOHlOVmxiN2I3dDBSd0Y3QXRwTmtyQkU0RlEzclV5L2M5RDkrcnF2SHlTUUQ1ZHhDUU95NlF1cTNiSW5ZMWgreWNYRDdCVXRpUURuY0ZVM2pRU0pjOER5V1BMT1FqYThSK29UVFY3Zkttc2VtRWxFOWtpUGxITm5KZE9MNFUxUnRqTjJ2aG4zejhEM3dEQUJZdnFkQTZDekk0bWxkclJSK2lkdFlpT3JTcWJ1SVF5dkpXcm9vc24vT3REZXVlY21VL0JlaHVoZTV3d216TVB5QlpUZ2NXNitsYncwZy81SGcxQk1LR3dBTm5XbEZVOGxxWDdWSVQxWnlWMmR6WnllU0IzbnBHRHVNdDg0Z0NnOTUza3hVdUNCbWZpZlRXSkMvZS9LeEhsaTROdXd3VW5RT09lR2tnNm1FVTlWOHZFRDhvanA4d2c5MnpHS3A1SFI0Z2JrdDVyRng4cjVXL1BZaTlPWTA1Qjg1SkVPWXFFTlBTTUE3ZjVuZEo1ZjE4NElab1Iyd2VNY05ObXFPT3JuaGV6WEhWS25xYXUvZkFQbUowT1NWa0dxOWo3NXd4YnBMeTdoc1FwdWN4SGF3L1dIMmN5bEdjeUZhY3c1S2RTYVpHcDFJdHA1ODhSNGFtVWNkWHdjQ1Y0ZXE3UENES0I0Qlk3UldhWnp0QU54bEE3YTAxUGYxaFB0aG1sRHUyRXVBV3pFWWh1eHlFWXN0S0puUFM2d0VwQ2g1OFhzNnlTWnlNVEJhV0ZRT0Fmb2pRWE5mV1VtODNxREFJTmc0TFpNaHhmbVZNK2c0R2xpdEJLM21qSW93L1FDeHR6M1c4UXREY0xMdGNKejFmeVRGZHl2eXpnby91NHU5dTR0L0pOODlzZDU3QzE1N00yNWlKdHkwU2JEMzVzYmM1bnJnUnptMmh6dkhyOVhaekUvekdLdXlxU3Z6S1EzWnRLWFo5SlFhVnlhVGwrU1JsK1VScTlQb3k5SW84NVBwYzVOb2RZbVUyY2xVV2NrVWFjbVVqOUlvRmJwKzlHQ3dXRHFJanV5ME92WnhIaU5uZHMzMEM1UmNQcVMwSlMvcmVEQUEwYnh2blZBQTh5RzJuRklSUHZ6MTlGb0EvWGNFVFYxU0hIMnk5RzlVbGkzdEwwTDZhaHZvQzU5MUNwOTJDcDkwQUoyU3UrMWlJZkN1L3IrNWY5cEV0OXFFdi9kS0w3WktQNnJVZHpTS01MNTlzOEc0ZFVHNGUvMXdpdDF3bDlyQmNqRUw3cUVQN21FRjJyNFAxYnp6MWJ4djYrQ1U0Si92SUwvVFRuM0VKd1lwZHpkUmR3ZGFMdHQ5cHBzWmtNNnl0TS9TRVFXTHJhUjNxMExna3ErSUhJdUdsMmxnMUhtcC9sb29Xc25yeW1CR21EM0VTQ2ZxS0g5MUVuWk15cUJoWjUrUWV2aHRTNWVhOWNmRjlIQ2FKQVhvUnhzMEtrL05PcG9oSXRDMUZCYXRVNFZwVlVTU2dXaGxCTktHYUdVRWtxSld5bDJLNFdqU3NHb2tqK3E1STBxMlNOSzVyQ1NQcVRBaVpFMEtFUHQ2MENuaHd5bkI5UWtIN1dDdGVMejFmd0RwZHlOT2N5NlZCcFNJTHE1WVVJN3YyYWZGb0xGT1FDMGkwUmx5b1owK3RVNkFWcDVhbEpkVUlYSGc5RDBuOFl2Y0RJWUQrVUJaUDNFRUFBVnlnTjBoc0JrbkZUUVNUSWdvTk9qU1gvV0JSZ1ozaTFES24yMm1yK3prSVV4K3VSNFZCUk81cnpwVFhoQjVCd0FKVWcwY1VvQzJvZ3V2RnZxTVhWTi82d1BhQ3haODRDSW9HQTNyOVZTV3NhUXNxdExnaFA0M21LWW9kTXdkMEU3eEUvTUxYeGJmaW9KT3VkZ0ptR0htUVQ5ajNvZUJwZkF6U1JDSVhqVjB5ZDRpa2JWSFowU2xJTXdBVnFUaEhhTDl5YTg2ZEl1dUp6VE0vOTg5TjByZFg4SkMyVUsxRldtZmlVUmlrSExIaWhKWWNEOW9FVjhxSlM3TUkzK3hxMkVVMjllY0Rsbk5BRjZ0Q0Y1UlFiOVdyMEFGVFJqOWxmK29SbGdYaTJ0UXNVQzA5NHJNcG5sc1JRYVp3M3pmTHRnQ2dndTV3d2lpVGxSYUlYRVBVWHMxazZwUFFEUEp3bk5nUElZR3RQZXAveTVScmdxYS93aEdWT2Y3WUxST2IwaElOVmRrRW8vVThVbkQ4aW03Mm9kc2dFVDRWN0JrelFnditRUy9pK0xXZWFZanRvdUdKM1RUenRvaTZOanlldHltUDgwaVpXa3l1SFpoRWtCN1RnZ2FISDk4bk0xL0laMCtvaUoyczZ2RndKSE1EcG5vTGZDNmdUcW5tTHVxdzZwa2Rhd2RXWUZUTXM2T2MzYWgzWnlPVGVGV21ERmVjNUFQL2tXVzhselV1akhLamlZdy9hSkhselptUld5TnRiS2FYQXkvN3lRUFNtZW1nL2FUZGtJRzd6TzZTTXNOTVRoZG5KREJ2MThqWkEwcVBTTCtNcUphY0dyYU1INWxnYngybXpHKytTTXFSbGhnOWM1QUp6VHJ4SXZpeVdoNEgyNVRrZ2RVb1lEY0d0ZHlNYXc1RWtZVUg1ZnlhOU5waGZFNk5wTlFhb0xhdWNBUGRYQmZHS0ZrN3cyaDNtMW5zOFlrb2ZNdlhVOWhFUHhqRFd6MnVkdDBvL3oyQlZPZlJ1aEtkQXUySjBEaklaQVR4UW1yODJtLzFiSEp3OHFmWUxIM0dXd0lSdXM2c2tZVnA2dDR0ZWwwZ3R0eGlNMEFyeVQwQXh3RHRDZG14dERIT3RFejl0OHlTWEFWQjltWHBMSmEvNURNZURNYldTMFQ5cWtuK2F6eDhWUnFLa2pzWFBBZUtxRFV4QUcyU3N5R0Rndnc3c2xGNlhTZ1hodWY0aUZXL0xBMFBGTUZiODJoZGEzMThET0dVQmI2T1pCdGp2S1RxNVBveDR1WlQ5ckU0dEcxU0Y4RGVYUUFvYUxPa3A3cjFtOEpwdGRZcXpDTkZyYnJ3dk1Zc1k0WjZCckJ5ZmlZaHR4WmhKMVJ5SHp6M3JCMnF1NEtBM013emNEZk0vd2pJMkludWhlK2Q1aWJtVThOYzhRRGpzM0NiU0ZmbXZuUWl0eFlqeDVSU2J6U0JuL1FZc0Vvd05Nd1FnWnp5MitUNGphV0k3K3hGR1lTU3dPOUU1Q004ODV3RGdMMFJEZ1htb256MHFpYjgxam42MFdQbTBUNC9xVmNrSnQ1N1JoRWQweGl6UGZRUWEwVXkydC9xZEp2QzRuOE5lSFo2UnpnT0VjMGc0U0hscDJlbTRLZldNdTg1c3lEa2JiclIxUzRvQlNTcWd0ckRZZ2VDakZJNmpvV2hTNnJJY3QzRTkwODlyT0x1bStZdlJWR0dyWXdNMGtacXB6RXhqbVJhR2x4VWM1eURNU3FmL0xaRFlYc2s5WDhhODFpSisyU1dIZHNyTmZUaDlDNjZaS0NhV0tWR29wdEh5cmxVUHJDNkdoZXdXdFgvQU1pSjVCMFFQWmNVUkM2d2xnS2dmRE5FRHFVRHEwdnViRkYrYjdBamtZNEZRRXI2STFOVEM2U1JwYVphUHFTMittUHVDREp3MHEwRzVuSjlQb0JpZnMzSDZaU0hoQU5GcmdEdWF0aWlQUFNxWTJaRERYNWJKM0ZIQVBsSEpQVlBEUDEvQ3YxQWxiR29TM204UVBXOFV2MnRIaVBEaXo5L1JJVUQ3Yit1VFlmam1oWDA0YWtGTUcwV0srekdFbFd5ZDNXTWtmVVlHQ1VVU2hHMUgwZlNrbTFCSkNoUnhjUnFoUUJsUVNhaFdwdWlnVmhyWUdHaVZtT0JONmVHMVExTnl5eHFxZUtic1d4Q3BqY0dEL2JCQTJaTkNCL2NwL3hqdm55NFI4ZW52TnM2SzlubGJFVWlmSFV6REpQVCtOdWpTRHZpcUx2ajZIdVRXUHVhMkF2YXVRdmE4WUdmbnJNdTdSY3ZDUysxMGw5MHdWOTF3MS8zdzEvMmNYLzZLTGY4bkZ2K3ppWDZrVi9nYlVJVjZ0bitRZjN4M29WR2pyMXh1RWZ6VUlielFLYnpZS2J6V0o3elNqaGRZZnRZcWZ0MHRmdGt2Yk82V0lIc25XRHhNakdkSXpKT1plWG9Qc0dORDhCMWtXMHYvSGJSS1VkSXZ0MkxtRFpDTG5vZDA2MEFZbzZGK2kwU1U5eUgrTGJjUVJkclFuQ05USVVQOGQ3MFRwOEtRRXRQM0M2a1RxdEVScVRSSUYyWEZ0TW5WT0NuVmVDclV1RmUzVmNFRXFkV0VxdFQ2TnVRaElSMXlzYzhuM0JiSXZjR2tHYzFrR2Mza21zekdUZ2FrMzFBTS96R1orbE1QY2tNdmNuTXY4SkorNUU4NkhFaGJPQkVqUFVOcEg5c2dsYm5WQTFBSTNLOUp2SWRaMmRjdTNGN0RMWUJwaE5HWWd0SnRWenZtaEMrZTE4Q0F4L3NSQWZ4RW9FeWV4SXVZZUdwQjlBUmk4ZklGVFlxR05XR1FubGpxSXd4MVFIaERMblNUMHlxbUoxUGtwOUhYWnpFT2wzTDhhUlNoTW14Z3RjTGRNUS8zcTZKY2ZLR0ZQakF2a1BldXoyVGxnUWlCZnNTSU5qTTJMRHBLSnZ6SVYzK1B4SGg2a1p3TjAyUE5qMEYycnkyT1JmSkFJWWVqZjBTWFYwU29YbUhRSFV4a29aS0hHT0NPSjh0N2FCUGcxNmFFenk1Mzdma3lZT2wxNC9kTVoxeEZxMDNVcDFNTmwzSzR1cVlWUkF6RzNVTFN4Z2xIbGhScjBxQ3B3M1hzQWZvMXo2R0RuZ290OXlnZmFvZDJQaVNWV1lsMEtEYk9jK0g0WmFqdlY3TnNJNGVYS1NSWG1TWmVsTTFEN1l1ZENHOE8vQ0hTbi9qVlp6TDhhQTdYYXZJWlNZVFo5dGI0TUVUc1g4b0IyZTVBRXF4T29CMHE0UGQxU3I2blA0ek9pZ1VZM21OeVlNNzdpR2xLczMyRWNPdGk1bVlSZTJ4MmxQNmRxUzZOUVRacjh6Q0NJRmtiN3RGWDhTUjV6QXZRNGRnNkRKSWhDazFtWVZ6NVp5Y0VjMC9UckpoMmM5bVc3ZEdjQmMyTGc3aG5HenMwa2pLb3VHaTBOMlZ6RTZvLzFOdm41TGQyOHRyMVR1cWVJUFRsdzMvUmo1MllZK25pMzFFN2VsTXQ4MFM2MXNLcHM2dXkxVjlEQ3V1VmZsbkNuSkl3N0I2TDdIY01oZ3AyYllZQUJrV2l6NzZzeW1iZWJ4Q3BTNVUwZFh2c0VMYUpIZnJDVWc1a0tkZzZqZzV4eno0MGhOcVRSLzZnVENrY1YydFFySnYyaUZ0VXJQMVRHbldvNEY0R2R3K2pPellraExraWxYM0lKV2NNS1llbzNFbEFnUnZmS0Q1ZHhweVZpNXpBR3VuUHc4OXdVNnJscVBuVlFIalYxYzc1SjU1TDBaZjNZT2N5RWMydVRxV2VxK0NUMGJEUlR4MVpoZkd3MW5NUDFIR2JDZzdPVHFkOVg4b245OHJEWnprWDJ5TCtDT1FTTXJkZzVETUx3SUlaWW0wSTlYY1VubXAzbllONjZwMXQrQUY4cndVd3k3aHpVYzMrbzVsUE1ydWQ2ZVcxWGwzeGZNZmNEN0J6R2krNGN6RnZQVDZQLzdCSXl6SjYzZG5IYXRrNXBjMUVnVnh4aTUyWVl1bk56WTRpTDArbFg2b1M4VWNYY1hZTGFXZTIvN2RMdGhleEsvSDByeGd0eWpwaHZKVGRtTVc4MGllV2t5ZmVwTnpQYVI2M2lyZm5NY2REanlMbTlEdURRd2M3Tk1IVG5GdG5KYTNPWmoxdkZCa2FWVEwyZnFZN1czbTRTcjh0bGx1UDc1ekFJRUE0ODBEZFlodUZ2WjVmVXcydG1LdWNacXlMVjF4dUVLN09ZeVdlQytSM0RvWU9kbTBub3pzMkpKazVPSUI4cVkrTUhaTkxVWWc3MExYR3JmM0VKRjZjeFN3TzNPeE4yYmlhaFM3RFlSbDZZQ3BOV3Z0Q3RLS1lPckpLK0k5Z3pWZnc1eWZSQ1kvc0k3RnhJbzFkeUlBRlU5NXZ5MkU5YXhXYlc1UDJVYVdVc2NWRDVUUm0vT29HYVB6Nk8reC9Hb1lPZG14a1lCa1NnZlRET1RhR2ZydUpnWURYM1VSbVFNSWRFVDFTdnZMbVlBNjNuR01MQisvb2R5YUdEblF0ZW9MOE5vTzhodyttUEdEM09TZDFSd1A2M1hXeWdOY0hVZ1ZYMWpMVnoycGNkMGkzNTdPU0Q1N0J6b1lWaG15RmNCUHBsbVFNOUQralZlaUZ2Qk4ycWFlNUtDREM0bWxMZmJoYmhMUTZ6Nlc4YUNPR0FvSE51NHN6R0dFUVQ4NktKeFZaaVpUeDFUVFlEVTRlRUFibFBNSDlsSzB5QnMwZVVsMXpDK1duMEhKaEFoSXB6aG0yUnZwdlR6QW9pOXNMM1AwMzhEdmlvQml5d292M0xUb29uTDBxamYxN0VRaWNsRHNqZHZDYWJyeHg2cUt1MVYzNmtYTDliRS9vQ25QUHRHaE1KS3VmbVdnbkk2b3ZzeEJJN09hdXdUYkxVcnVNZ0QzZVFVRFlkNlNDUGlpV1h4WkxMNDhoajQ4Z1Q0cWtUNDlGK2VHdVNxSE5UcUV2UzZSOWxNL2NVc3krNGVLaTBDdHpLSU5xbXhOc3A1a1lMbzMzV0p2MjBnRDB1VHQ5OExoU2NnM3grcElNNEpaRzZJSTIrTEpPK1F1ZnlXY0hHRE1RVm1jeVZPc1lPaHpCUVhtZHNjcGpIYk1wbmJpOWs3eXBpZjFIQy9hcVVlN3lDZjdvSzdmSzVwVUg0cUZVTTc1RXloNVZHVmlNRHR1TWhlRnhHcUgrdkV5N1BZQTUzR0tPTmZ3ZVpSckE0cDIvRmVrb2lXcmI1UkNYM2NoMXY3SVFLclRBTGVGVUhiZXhhanpaMkJaUGVhQlQrM1NTODB5eSszeXArM0NwKzNpWkNHdHZaSlVYMHlMWmVPV0ZBeVJoV2lrWVZGNFdlT3pBa2VUZ1ZhUkc0UUZmbUJwUkh5dmpURStuREFuYzEyQ0Fvbk5QTE9LaGRMa3lqNGZ6ZTFTMUJNVnZzUmhTT0tnVXpuMEszVW9SUWk5M2VEYXpMQ2JXQ1JMdFgxNHp2WHQzTWFxQlhGNi9CL0dCSVJGdTJjNnBIbVpLSGhrTDJoUGY5dWxQYWxNOGVIUnZJSFRZTmdzVTVmWjB3ek5MLzNTUkNrb2M1bEtUdlhRK0lzd3ZqUThFa3dBRDYyd0RTbUtZRGxrMkZhRDVCS3g0NEpWNnRGeTdKb05HeitRTXFIQkJVemtHSkErVkxDeHVBV1JtTy9VY3ZXcnN2UVIwSnhiUXg1dmgza0xrRWxYTS96R0xlYXhIcmFGVTI5UW83amdNRUROL2xwQUlsNXRWWnpOR0J1My9KbDZCeTdxb3NCc3BxS0hITTNZTUR4LzRDV25sRTBxeDlLTW10VHFBV1FGOWc1M0FFTkZnVmtwejZacU53VlJhOWRPSTVKSUJmQjVrTGRpNlVvNU5ES3d1OU8zL3B2WUNkd3hIQUlHVXRZMGg1b1VhNEpKMDVQSEM3cE84TmRpNDBRMURSWFNRd1k3c3hsem5XU2FMSDhCc0RxMS9YQkFMc1hBaUdvbm1hR0cxN2wzUi9DWGRxSWpVdlp2elphSDc5RWlDd2M2RVdpZ2R0R2h6VkkvKzJnajh2bGRZZllhZzc1OWNwZ1FNN0YxS2hqWTMxOEo2NGZ2bTVhbjVEQnN4VjlWdElEUHc2SlhCZzUwSW5KTTNUeVd1T2Zobm1EVmRrMGdGODBzMkJ3YzZGU0lqYVdBdXJSdmRLejFiekd6T1paYkhqOHdic0hIYk85SUFDemkxNUtnaDFXNmYwWkFWM1NUbzkrUjBYdER6ZzF4MkJCanMzdTBQVzBJWGZ0Q0hsUDAzaVBjWHN1bFRxQ0llM3dhZkJOZ1BzM0t3TWFEOUc4Y0Q4dE1TdDd1cVMvK1FTYnNwbFRrbWdGdHFtTDcxTmdKMmJmU0dveUxaaXR4cmVKYjFhTDl4VHpGMmNUaDhYUjg2SHBwNFlVbjNiZjRvSkt1ZXV6bUkrYUVIN1cybFRjbi9zN0FnNFBTVU5mVnRQeUo1ZVFhdW4xWndSWlhlWEJEMzZRQW0zTVpOZUZVK2k5QWFORExiNXRmeTBFRlRPWFpQRmZOZ2lOakVtYjhNeCswTFQ5N09CMFhOVTh2VHdXaU9qbFJCcThxQzh1MXQ2dTFsNHJvYmZYTVJlbWNtY2xrZ2Q2ZER2Tlo5WXhlalg4dE5DVURtM01ZTjVyVjZBMDdSUDBOeXlCeGlXWmpVaVlraG5VR2RBUVBUcDlBcmdrNmVMOThBa29KM1RXbG10aVVWcHpFV3A1U1JhWnBFK0pEdjc1YkJ1NmRNMmNVdWo4RXcxZjI4eGUwMDJ2VGFGUHM0SnBkdjQ5ZDVwSDB6OUNBcm5BUDJ4cE9la1VMOHU0ejVvRmFONjVkaCtoSzF2Tm1QdFJjVDB5dEc5Y2xRUElxSmIydE10UWJyYTFTWHQ2SlMyZGtwZmRVai9iUmMvYXhNL2FoSGZheEZoK3ZsNmcvaEtIZjk4RGY5VUpmZFFHWGRYRVh0ekhudGxGbk5lS2cyemhHV3hwSGZoRnN4TWpmUm1tT2ZYNE5OSXNEZ1hUY3lMSWVBNExzOWs3aXhpSHk3akhpMUhnSUt6R1BpWUJxRE9yMHE1QjB1NSswdllYNWF3a0s3dUxtTHZLbVIvVnNEZVZzRCtKSis5SlkrOU1ZZTlOcHU5S3BPNUxJTlpuMGF2VGFaaDZGeVZRRUhYSE81QUZkdGN2Um05QktGcUV3U0xjekhFbkJoaXNaMDRObzQ4SlpFNkk0azZNeG14Sm1rMkF4L1Q0SFFna1FLSFRrMUVpL2doWGYwZ2dUcEpYOU8vTW82Qzdqbk9TYTdRbC9zZjVTQVB0NU9MYkdoWWdCYno2bVdrTkMvQk41ajZFVHpPR1VBN0FuREtoaFRHcDBaRWZ3TnZydG9uSUphQjM3OERlN1ZxY0JGY3prRjdvYk5XUDEvOTlwSUphZlJNTmlIWkJETkZNaitDTGM5TnRpUG13UGkxMnd3aTZKekR6SHF3YzVpcEJqdUhtV3F3YzVpcDVxQ2RvN0J6R0hNd25JdW5YbXNRdlhyNWhJOXpzYVFsWmN3U3kvdi9QUWJ6WFFIblVpRFBFYThmMkxrVkRyY2wyWU9kdzVnQWpKWkpubFhPMFMzMXZGY3ZuNWgwYnFWMUFPbnA0Q3hXeW1JbC9WOEZnemtZd0J6d0o1WUQ3Vlk3QnQrc3BiMTYrY1NrYzZkRmRWaWlSaTAyQmdGLzV2ZGFHTXpCWUtNc050cGlweTJSSTJ1dG5lL1dqSHIxOG9sSjV5N2FVemQvUnp2Nk0waDE4R2UrTDRUQkhDUmdtNE8xUkxzUDI5RzJNYXIraStwK3IxNCtNZW5jcmVFbHk3NTJ6WWthdHNSSkZqdmovMW9Zek1IZ1lDeHg0cHlJd1JWZjE5d1JXUnBSMWVIVnl5Y21uZnR0Wk83WjI4b1dSdlJiNGlXa0tpN3BNTjhWY0FiTWlSTVhoZmVldDdYMG1aaTh0T3BtcjE0K01lbmNPL0Y1TjRhVkhCUFdnWkljL0NVYVhyRjJtSU1HaEFObmRITlc3Rzc5Y1ZqUlI0bjVycFoycjE0K01lbWNzNkR5dDdhU3MzYlh6US92OVFxTFp4S1lnOGNRTG9aY3NMdm4zTjJ1Wnh3bHlTVlZROE1qWHIxOFl0SzV1dGFPRDlQTGJ3MHJXYkd0emhJeGFJbVgwV1FDcHpyTVFVR2lLN3RRbFlYM0g3K3Q5cmJ3NGkreUtwczd1aVJKOHVybEU1UE9FU1NaVmw3N0oydnVKVHRLbDRSM3c2aU1YZ1ZmcThOOEsyQUllT0lVTEhIQzRXRWRHM2VXL05XZW0xTlZUOVA3dURnSE1lbWNxcW9kblYyUk9hV1B4aFN1RGFzOUxLSVBaVXNubUtkZk9zSG1ZZmJHcU9IMEs4QVdHN1Z3VDgrNnNKcW5iSVgyL1BLZW5sN1BmcGJOVHpvSElRaENRMnY3bDVsbDkwWVVuTGFqZWtGNEg3cHVnaTZkUUdHSWF6dk1Yb0FWNEFZWTRoUVhodmV1MlY3NVlGVEI5dXl5bG80dVVkekhONjFHZk1NNUNKWmxLeHBhUGswcHVpK3ljTzN1dXFYaDNYTWpoMUhtaE5vT1FQSkJ6Z1AvY05vTFNZeGgxSmd1R0VwWXFYbFJ3NGVIZGEwTHEzMHdzdkRMak9LYTVqWklYbDZmOWhYK3prRlFGRlhaMlBwVlp2bWowWVViZHBRZXY3TnhibGd2dW9BQ0ZTSVlEVytEaDlxUUJRMm1EQnBNalFIUXhzemIzYjF5UjhQR25hVlBXZ3UzWjVlN1d0b1podkdhdEovWWgzTVFITWMxdExSSDU1YTlhTS9idEtmMDdMQzY1V0h0aDRYM1d2WU1XcUxkM25lRklSeXFQVXdJSWVnWmh3RUg1a1FNd21DNmZIZmJPYnRyYjlzRGs0WThxT0dhMnpzUG5PR00yTGR6RURBZWQzVjNwMWZXZlp4WjhaU2o1T2F3NHJWYlM1ZC83WnE3dFFYZENnQkhrRHlHN3ZIRWhBN1E0OUR2a2NQenQ3VWN1OVYxM3JheVc4T0tuM2FVZkpaWmtWVlYzOVBUczg4ckkzdkhmcDJEMERTTkpNbjYxdmI0b29yM0V3dWVpczc3YVVUWlpWRU5aMXU3VG5FTXJuSzZUM0FTSitocjBER3pIUXI2R25wOHRXTndyYlZ6WTFUOTdSR2xUOGZrZjVpVW4xUmMyZFRlQ2ZVWTJPTDE1dHZpUU00Wkljdnk0T0JnZFZOclNuVnpXR1g3NTlVRDc3cmNiOVl4VytyNTE0QUc5Q2h3ek95bm5vY2UvM2NkODI3TjZCZlYvWHVxMnROcW1sM05yVU5EUTRxaWVGMDV1UGgyNTNEZ01EZXdjemltTnNiRy9oKzlQNytLZktPK1JnQUFBQUJKUlU1RXJrSmdnZz09IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiXSwiZXh0ZW5zaW9ucyI6WyJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiI1ZDYyOTIxOGQzYTUxMWVkYWZhMTAyNDJhYzEyMDAwMiIsIm9wdGlvbnMiOnsicmsiOnRydWUsImNsaWVudFBpbiI6dHJ1ZX0sIm1heE1zZ1NpemUiOjEyMDAsInBpblV2QXV0aFByb3RvY29scyI6WzFdLCJ0cmFuc3BvcnRzIjpbInVzYiIsIm5mYyJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDIzLTA5LTEzIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiU3dpc3NiaXQgaVNoaWVsZCBLZXkgUHJvIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyMzA5MTMwMDIiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMy0wOS0xMyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI0LTAyLTEzIn0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiMGE0ZWRjN2NlNThmNmFiNzVkNzhmZDFkYzI1NThlYmM2MmNhMGUxNyJdLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyIwYTRlZGM3Y2U1OGY2YWI3NWQ3OGZkMWRjMjU1OGViYzYyY2EwZTE3Il0sImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IDUgU2VyaWVzIHdpdGggTkZDIC0gRW5oYW5jZWQgUElOIChFbnRlcnByaXNlIFByb2ZpbGUpIn0sImRlc2NyaXB0aW9uIjoiWXViaUtleSA1IFNlcmllcyB3aXRoIE5GQyAtIEVuaGFuY2VkIFBJTiAoRW50ZXJwcmlzZSBQcm9maWxlKSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzYsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6Mn1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiLCJyZW1vdGVfaGFuZGxlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlEU0RDQ0FqQ2dBd0lCQWdJVURxRVJ3KzRSbkdTZ2d4Z1Vld0pGRVBEUlozWXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQ0lERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFESTdYbkgrWnZEd01DUVU4TThaZVY1cXNjdWJsdlZZYWFSdDNZYmF4bjlnb2RMeDVzd0gwbFhyZGdqaDVoN0ZwVmdDZ1lZWDdFNGJsMXZielVMZW1yTVdUOE4zV01HVWU4UUFKYkJlaW9WN1cvRStoVFpQLzBTS0pWYTNld0tCbzZVTGVNbmZRWkRyVk9SQWs4d1RMcTJ2NUxsajV2TWo3SnRPb3RLYTlKN25IUzhrTG16WFhTYWowU3dFUGg1T0FaVVROVjR6czFidm9UQVFRV3JMNC9KOVF1S3Q2V0NGRTVuVU5pUlFjRWJWRjhtbHFLMmJ4Mno2b2tWbHR5RFZMQ3hZYnBVVEVMdlkxdXNSM0RUR1BVb0lDbE9tNGNycHduRFJMVkh2alllUEdCQi8vcEV5enhBL2djU2N4andhSDFaVXc5Ym5TYkh5dXJLcWJUYTFLdmpBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlRxdDBLUW5neDdaSHJiVkh3RHVueE9uOWloWVRBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBcVFhQ1dNeFRHcVZWWDdTazdra0ptVXVlVFNZS3VVNitLQkJTZ3dJUm5sdzlLN0hlMUlweFowaGR3cFBOaWtLam1jeUZnRlB6aEltd0hKZ3h4dVQ5MFB3M3ZZT2RjSkpOa3REZzM1UFhPZnpTbjE1Y0ZBeDFSTzBtUFRtSWI4ZFhpRVdPcHpvWHZkd1hETTQxWmFDRFlNVDd3NElRdE15dkU3eFVCWnEyYmp0QW5xL05EVUE3YmU0SDhIM2lwQysvK05LbFVyY1VoK2o0OEs2N1dJMHUxbTZGZVF1ZUJBN24wNmo4MjVycURxc2FMczlUYjdLQUhBdzhQbXJXYU5QRzJraktlcnhQRWZlY2l2bEZhd3AyUldadnhyVnRuM1RWMlNCeHlDSkNrWHNORDA1ZENFclZIU0pJcytCZHRUVk5ZOUF3dHlQbW55YjB2NG1TVHp2V2R3PT0iLCJNSUlEU2pDQ0FqS2dBd0lCQWdJVVRuYmJHSVIyTkh2enFJS0ZBZVF3RzFYQmlzMHdEUVlKS29aSWh2Y05BUUVMQlFBd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdJQmNOTWpReE1qQXhNREF3TURBd1doZ1BPVGs1T1RFeU16RXlNelU1TlRsYU1DWXhKREFpQmdOVkJBTU1HMWwxWW1samJ5QkdTVVJQSUVGMGRHVnpkR0YwYVc5dUlFRWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPc1hqM2swNEJhbjRUWWR0WktxRC9PUEp4eUR5YVBtQ0JVRlVpYVpJZ1R0ZVpuajNYMjVEaGdwWlpYc0M0RDB5ZEljcmxBNndOVUluT1JML0w5ekJiVEVJTUFWTUdvNmc3VUtBbWIyTUY2QUhibmhZSmQ5ZWlrdXBWTldTaEhOWU5jNEdCZE8xWU42QWZVcXZKaEhiZTNWNFNOTVBtQlJFS0pQVno3VGh3Z21nZ1RlOFdzMkswL3dzcXYyd1NFN3BiQ0JzVVpoSVg1MWJaTTNwcUR3SlBUbVJGRXZ0MC82dEc1ZU84RjNqMTRPWHFmRWhtam4xVnZ4S0RZUU9MWkF4Q3d3Z0MwUDRDZGZXdjN5OFBTUjhJMzU0aE8xWStHek5qdklxWDM4TktMeXd1SVlIRmVyT3hObHhFTUJ2RmhZQnVSdVlBa2tnVWFQcU42VUJoc0lMcnNDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRkNDb1JIaGl5Tm5iblhSV0lMNlpCWG9CWDlZVE1COEdBMVVkSXdRWU1CYUFGQ0FvVUNFYnBGcGI2RlBMblozRjVQeHNMM29mTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFDUUZhZkpJMS81V2c5Q0VFaW1FMVJQNTRSZ1F3VE5UT09Rc0xBQ1RlK3JJdGxGUXpDOVpEaHJWODI4eVg3anp5K0FBc3AzaXpLN1QxdGgyZGw3bSt0dTBzdzJQYS9vbGMwMm50NlB5SXczNDhnYUh6aEkxKzBLRTQ1cXh2RkRlTDJsTXhiUGZDWXZ5RUVhWXpqaVFFTFU1OTUxcFhHV3lLTWEvNGZMdE8rWktPWGhNdVZlcTRyWERQSTU0VzZKSE9pQWFpS2Rpdys1ZTNjMmt0L2pGSVF0TTZ2TVhnOUxORnpkakVUTnQyMFZYOVFldlJwRlpmdWNNRzl3Q2FRRG9GbFB6cFRNSktoUGV2L2ltSm1aWWhLZnIwbExjZW10cWpJeExBb3FaZE9ZZkhCZzYrdkFjZFBJL2lhdUdwVUF2N1grVUtObUR3aloyQmFINHNMd2hCMm0iLCJNSUlEU0RDQ0FqQ2dBd0lCQWdJVVVjbU1YelJJRk9nR1RLMFRiM2dFdVpZWmtCSXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFEbTU1NWJXWTlXVyt0T1kwcklXSGxkaCthTmFub0NaQ0ZoN0drM1laclFtUFV3MGhrU0c2cVlIUXRQK2ZaeVMzM1ZFcnZnK0JRcW5tdW1nTmhmeEZya3dFWkVMZWlkQmNDOEM0QWc0bnFxaVBXcHpzdkkxN05jeFlsSW5MTkxGY1pZLytnT2lONlpPVGloTzUvdkJaTWJqOXJpYUFjcWxpWW1OR0pQZ1RjTUdhRUF5TXpFTU55Mm5tNkVwK3BqUDVhRjZnaTIxdC9VUUZzdUoxajJSai95bk0vU2RSdCtlY2FsNU9Zb3R4SGtGYkw5dnZ2MkEyT3Y1SVRaQ2x3NGJPUzlucHlwUWltT1o1UUFZeXRtWWFRcFdsL3BNWXo2elNqOFJxa1ZETkVKR3FOZlRLQTJpdkxZd1g2bFN0dE1QYXBnMEo4NGw5WDB2b1ZOL0ZwUzRWQ1ZBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlFnS0ZBaEc2UmFXK2hUeTUyZHhlVDhiQzk2SHpBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBWU16Z0xySkxJcjBPb3ZRbkFaclJJR3VhYmlIU1VLU21iTFJXcFJrV2VBdHNDaERFSHBYY0ovYmdETktZV29IcVE4eFJVakI0Q3llcFlldmMzWWxyRzhvN3pIeHBmVmNhb0w1U2V1Smt6SHhLbjRiVGFTcDkrTXZ3YW1ucDY0a1pNaU5iRkxrbmZQOWtZS29SSGtNV2hlUkoxVXNQMXo0U2Nta0NlSUxmc01zNnZxb3ZxaldDbEZzSnBCY3NsdVlIV0Y3YkJKMW40UndnK0FURW9wWTRJZ0d2Nlp2d2MrQTlyK0FUMmhxcG9Ta1lvQWwrQU5Zd2dzbE9mOXNKZTBWK1RBOVlZL1VsYUJtUFBUZDAvL3I5d3ZjZVBXWmtQaktvQUMvelVOaGZEYmg0TFY4R0hzM2x5WDJYb21ML0xOYzhKWXp5SWFERWhHUXZlb1BoaC90cjFnPT0iLCJNSUlEUnpDQ0FqR2dBd0lCQWdJVWV4OW5UOXZ3Wk5YUzQ4M0xkaVlHZncyU2pTb3dDd1lKS29aSWh2Y05BUUVMTUM0eExEQXFCZ05WQkFNTUkxbDFZbWxqYnlCQmRIUmxjM1JoZEdsdmJpQkpiblJsY20xbFpHbGhkR1VnUWlBeE1DQVhEVEkxTURnd01UQXdNREF3TUZvWUR6azVPVGt4TWpNeE1qTTFPVFU1V2pBbk1TVXdJd1lEVlFRRERCeFpkV0pwWTI4Z1JrbEVUeUJCZEhSbGMzUmhkR2x2YmlCQ01pQXhNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXUxTWV2bnk5ZHlPOVpVQzM5U29NaExjUi9EWHJ0Ri9jaU0xMnRjaXkyRVhBWjZNa3JpdlZ0Q2ZFVk05WDZJU1RFbkJQNnVTWVlvdjZwcHY2TzZKaDJOSG1ZbTR3K0puUzRWbkNQVTdtSEFNZlZJMk1HVFRNVk9ldzB4VXNHN3NJU0lrSURVQm11azhZSzljNXppYzkrdkZRR0xJa3NkWE81aVZGSWdORzUzY0dYRDRaTFpvQVBpdTBQRW96eEFxWUlhSTRneEtoT0EzUzgvVzhtSVdzdTZvZnlqNEd2a0ZHNlo3a3lGMzEwN1A3bXdGSExySTNFTmFQV01PRmNUYUdhMGR3Ky92VlJ3alJjRVpCVnN1dVQvODdja1NzMGE1cGt0M3ZaQmxhWWVUOHB6U3JlVjdtb3djSU05MEwyaWFBVGxQMG54bWFFNm5PeVRib2pGVmwyd0lEQVFBQm8yWXdaREFkQmdOVkhRNEVGZ1FVU1hFaDNzYTNidER1cm00TU0vQzdTMWxSdXVZd0h3WURWUjBqQkJnd0ZvQVU2cmRDa0o0TWUyUjYyMVI4QTdwOFRwL1lvV0V3RWdZRFZSMFRBUUgvQkFnd0JnRUIvd0lCQURBT0JnTlZIUThCQWY4RUJBTUNBWVl3Q3dZSktvWklodmNOQVFFTEE0SUJBUUI1R2MzaGFmdHA3aEtzRVpzbytpL1o1blJ1cWRtekcyV0NsVW9SVXFiYVB5Z2xuSkRqS1Iva2ZnT2w2aWJiRi96dGhtM0ttWFE3SGNESVAyeE1kRzdVMkwyaW1iSlFIcVBmL2gySHFvamI0clpndWUrNlc0a3RTUjVlbFI5TDFyWXFFL1NHWU00aUVLb1ZRU3Y3UlQxcnhJZVdpS3N3L1Z4eGkvUU9uc3gzRjd4ODBDQ1lnQjRFM3lReDhWVFc0NDBoVEV3VEExZU1IT2l4MzJ0UHR5eUhJYThQVlZJZlZwSFFKQmFNVnZ2NTA4VUVqd2tiVTJybmpmem9TVE5TOUE1alVROG1CU3ZlOTVyakIwZG85OEVVK0R4ZEJxWDIrSDZpNXdsSUNGZ3poZHpjc25lOWhHS1Q2bHpUWDRjSWRKc3JZMit4bGVLMEZGUXk2bEdFVkxFZSIsIk1JSURQakNDQWlhZ0F3SUJBZ0lVWHplaUVESkVPVHQxNEY1bjBvNlpmL2JCd2lVd0RRWUpLb1pJaHZjTkFRRU5CUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTVo2L1R4TThySVQrRWFvUHZHODFvbnRNT28vMm1RMlJCd0pIUzBRWmN4VmFOWHZsMTJMVWhCWjVMbWlCU2NJWmQxUm54MW9kNTg1aCsvZGhLN2hFbTdKQUFMa0tLdHMxZk81M0tHTkxadWp6NWgzd0duY3I0aHlLRjBHNzRiL1UzSzloRTVtR05ENnpxWWNoQ1JBSGZyWU1ZUkRGNFlMMFg0RDVuR2R4dnBwQXk2bmtFbXRXbU1ud08zaTBUQXVjc3JiRTQ4NUh2R000cjBWcGdWZEpwdmdRamlUSkNUSXErRDM1aHd0VDhRREl2K25HdnBjeWk1d2NJZkNrenlDaW1KdWtoWXk2S29xTk1LUUVkcE5pU092V3lETVRNdDFid0N2RXpwdzkxdSttc1V0NHJqMGVmbk85czBaT3dkd01SRG5INHhnVWw1Wkx3cnJQa2ZDMS8wQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQjhHQTFVZEl3UVlNQmFBRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRTXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJEUVVBQTRJQkFRQzNJVy9zZ0I5cFo4YXBKTmp4dUdvWCtGa0lMa3Mwd01OcmRYTC9jb1V2c3JoenN2bDZtZVBNcmJHSkJ5SjFYbnF1QjVzZ2NSRU5GeGRRRm1hM21pbzhVcGYxb3dNMVpyZVhySjBtQURHMkJwbHFiSm54aXlZYStSMTFyZUlGVFdlSWhNTmNaS3NEWnJGQXlQdUZqQ1dTUXZKbU5XZTltRlJZRmdOaFhKS2tYSWI1SDFYZ0VEbHdpZWRZUk03Vm9sQk5sbGQ2cFJGS2xYOHVzdDZPVE1PZUFEbDJ4TkYwbTFMVGhTZGV1WHZEeUMxZzkrSUxmejNTNk9JWWdjM2lyb1JjRkQzNTRnN3JLZnU2N3FGQXc5Z0M0eWkweEJUUHJZOTVyaDQvSHFhVVlDQS9MOGxkUms2SDdYazM1RCtXVnBtcTJTaC94VDVIaUZ1aGY0d0piMGJLIiwiTUlJRFNqQ0NBaktnQXdJQkFnSVVSMzhtcTI2U2Yyc3pWVjJCZEc2V0VON2t1V1V3RFFZSktvWklodmNOQVFFTEJRQXdMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3SUJjTk1qUXhNakF4TURBd01EQXdXaGdQT1RrNU9URXlNekV5TXpVNU5UbGFNQ1l4SkRBaUJnTlZCQU1NRzFsMVltbGpieUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRUlnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTlkwV2I5b1BvUm9Lb1F5V1BhSnB6MTF2cldUZzZ6VHRtTmoyVm9LUm55dktHUnFwemI4M3c1bDZZQTk2VVlrWUJEUVAwaWxPMkRQZTZ3V3FWUjV6RGZSemRjSDhiaCtMN2RHR3ZhZTZoUlRaaGtGa0NwWERzNEhjY2tuckRmOEZDbEo3SGUzOUpmNDIvRzFRbTJ6ejlXV21yUFh0Z2lLL3gwNUdqc1FmR3VERzF6ZjVRVFVVaWU4bHd5bUszVGZkT3ZOZWVKQUFQZTJwbjdJdGZSYityVnJOV2lEemxSbjJ2Tm5aMndQbzR3SC9XSjZkaFhaRytyTVdUK2E2Qm9jZzFVZkl3NmtkdW5HNGJUcFp6c3ZhY0ZZeVIwbXBmK0RlT25wU1dBbXl3SldIdlRsZjJZWHhGeWVYY1RBQ2RRbGNNTkdKMlZoWlE0OHh0UDUvUkJQLzhrQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZDaHk0Mm9raXFjVFMxaXFhL0hSV2prQm40SC9NQjhHQTFVZEl3UVlNQmFBRk9xM1FwQ2VESHRrZXR0VWZBTzZmRTZmMktGaE1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQW4rUkhJUGJ0TUVETmRUMWc4SC9SaXRBa1VkTGdBdDF0V0dXbmxqOWtuYnY0LzRHbFg3QzlwNDVlZlBPOS9hWkw2T1YxWFJLQmk2S210Qlc1SzdudVlFbk14LzVCcUJTYkxUN3JoZHVDNDlUQmVNYjlQSGRYc1RsU1ZOWWVmcjFkR2lkcjRqMHhWQlFMYjFya25EQWJkV0R6S2Z2bmF5S084RnJ3ZTdIeDg0M01HL3JKK2MwWHJ1VXZiZlZUQ0hMaUlXaE03b05EaEw4eG9iNnhVbzlLTEtjU0wrSXRZc08zLzlXYjhROUdqc3FMNEZYc0RjRzFTYVloN0twZnVNbU9peHF6SlpPMm5JaWNQWVJnMUkyU3VpVWZZTzcwdG1kSGNibCtrU1FtU1l0N3JxNHZpSUxnMkd4M2o5cklUdVdUamJhVWFTU1F4Z09tTVNIdXl6TUFDIl0sImljb24iOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJpY29uRGFyayI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsInByb3ZpZGVyTG9nb0xpZ2h0IjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwicHJvdmlkZXJMb2dvRGFyayI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTA2LTIxIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJZdWJpS2V5IDUgU2VyaWVzIHdpdGggTkZDIC0gRW5oYW5jZWQgUElOIChFbnRlcnByaXNlIFByb2ZpbGUpIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJVMkYxMDAwMjAyNTA2MjEwMDIiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wNi0yMSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzZ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDYtMTkifSx7ImFhZ3VpZCI6ImJiODc4ZDdiLWNmNTQtNDc4NC1iMzkwLTM1NzAzMDQ5NzA0MyIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiYmI4NzhkN2ItY2Y1NC00Nzg0LWIzOTAtMzU3MDMwNDk3MDQzIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IlRydVUgRklETzIgQXV0aGVudGljYXRvciJ9LCJkZXNjcmlwdGlvbiI6IlRydVUgRklETzIgQXV0aGVudGljYXRvciIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19zdXJyb2dhdGUiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbInNvZnR3YXJlIl0sImNyeXB0b1N0cmVuZ3RoIjoyNTYsImF0dGFjaG1lbnRIaW50IjpbImludGVybmFsIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6W10sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQkFBQUFBUUFDQVlBQUFCL0hTdURBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFGMEtTVVJCVkhnQjdOMTlqSjdsZlNmNkMyemlBWTlqeHVBWkQyYWhZQ2Zubk9pa29FUTVTdVZJU2M3bWxLcE5sUXJuanpSVWNjNXFTVnV6bFRad0NsbXBNUTMwYUJPekJhMVdIZ281MnRXTU5qUTYwbGlORHBGS1RycHRWcG0yMmlvUkpOTFpzNGtkVW1Md3ZOZ2VnMmNjRHk5bW45OWpoaGpqbDNsNW51ZStyL3Y2ZktSWjAwMUtzWm01bi92NlhyK1h5ejd3MFY5L1BRRUFBQUNOZG5rQ0FBQUFHazhBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVVFBQUFBQUVBQkJBQUFBQUJRQUFFQUFBQUFGRUFBQUFBQUFBVlltNERLZmVhYUkybFg2d3NBb0VubVRsK2V4bWMzcGYydHIvaHJvRnFYZmVDanYvNTZBaXEzNVlwWDJrSEFiZTk4TVFFQTVPNnBGemVtc1dQWHBzbFhya2hBUFFnQW9HYTJyMXRJWDdydVVEc1FBQURJemRNbnIwcGpSNjlOei96OHFnVFVpd0FBYWlvcUFhSWlRQkFBQU9RZ1N2eEhwb2ZTVXk5dFRFQTltUUVBTlJVZm5wR2MvMm9yQ0RBZkFBQ29LMzMra0E4VkFKQUI4d0VBZ0RxS2N2K0hwb2IxK1VNbUJBQ1FrUjNyVDZUZGc5UGFBZ0NBU2gwNDFaZEdaZ2IxK1VObXRBQkFSaWJtTjZTSlp6ZVlEd0FBVkNKSy9FZVBiazc3WndjU2tCOEJBR1JvY1Q2QXRnQUFvRmVpenorbSsrdnpoM3hwQVlETVJSWEE3czNUYVVmL2lRUUEwR25SNS8vb3pHQTZzTkNYZ0x3SkFLQWh0QVVBQUowVWcvMzJUZzdyODRjR0VRQkF3MFFJc0hQZ1dPcS8vSFFDQUZndWEvMmd1UVFBMEVEV0JnSUFLL0hVaXh2VHlNeVFnejgwbEFBQUdpeUNnRCs5L2psdEFRREFSVVdmZnd6NFUrNFB6U1lBZ0FLWUR3QUFuRS8wK2NmQlB6WU1BYzFuRFNBVUlEN1VKK2I2MCswRHMybFhLd2dBQU1xbXp4L0twQUlBQ21NK0FBQ1VMUzRGb3M4L2J2K0JzZ2dBb0ZDM1hIa3kzYnZsc0xZQUFDaUVQbjlBQUFDRk14OEFBSm90U3Z4SGoyNU8rMmNIRWxBMk13Q2djREVmSUc0Q2JyOTZOdTBjT0pZQWdPWVliZDM0Ni9NSEZxa0FBTjVrUGdBQU5FT1UrejgwTmF6UEgzZ0xGUURBbStJbFllL2tjSHFtOWRLZ0xRQUE4dlBtWjdrK2YrQThWQUFBRjdUejZ0bDArOEF4UVFBQTFOemlXcjhZOGdkd0lTb0FnQXNhUHo2UUp1Yjd0UVVBUUkwdEh2ejErUU9Yb2dJQVdKS29BdmpEb2NQcDFxdE9KZ0NnZXRiNkFjc2xBQUNXeGRwQUFLaFc5UG1QVEErMXEvUUFsa01BQUt4SWhBQ3hOckQvOHRNSkFPaSt4VDUvYS8yQWxSSUFBQ3RtYlNBQTlNWlRMMjVNWThldXRkWVBXQlVCQUxCcUVRVDg2ZlhQYVFzQWdBN1Q1dzkwa2dBQTZCanpBUUNnTTZMRVAvcjhuM3BwWXdMb0ZHc0FnWTZKbDVTSnVmNTArOEJzMnRVS0FnQ0E1ZEhuRDNTVENnQ2dLOHdIQUlEbGlYTC9oNmFHOWZrRFhTTUFBTHBxeC9vVGFmZmd0TFlBQUxpQUE2ZjYwc2pNb0Q1L29PdTBBQUJkTlRHL0lVMDh1OEY4QUFBNFI1VDRqeDdkblBiUERpU0FYaEFBQUQwUjh3SGlaa05iQUFDa2RwOS9UUGZYNXcvMGtoWUFvT2VpQ21EMzV1bTBvLzlFQW9DU1JKLy9vek9ENmNCQ1h3TG9OUUVBVUJsdEFRQ1VJZ2I3N1owYzF1Y1BWRW9BQUZSdXNTMUFFQUJBMDFqckI5U0pBQUNvQldzREFXaWFwMTdjbUVabWhoejhnZG9RQUFDMUVrSEFsNjQ3bExhdlcwZ0FrS1BvODQ4QmY4cjlnYm9SQUFDMVpENEFBTG1KUHY4NCtNZm1HNEE2RWdBQXRSWWh3SzdXRndEVWxUNS9JQmNDQUtEMnpBY0FvSzRtNXZyYmZmNXgrdzlRZHdJQUlCc3hGeURtQTJnTEFLQnErdnlCSEFrQWdPeVlEd0JBVmFMRWYvVG81clIvZGlBQjVHWnRBc2hNREZlS0c1ZGZiUVVCNWdNQTBDdWpyUnQvZmY1QXpsUUFBRmt6SHdDQWJvdHkvNGVtaHZYNUE5bFRBUUJrTFY3RzlrNE9wMmRhTDJmYUFnRG9wRGMvWS9UNUF3MmhBZ0JvRlBNQkFGaXR4YlYrTWVRUG9FbFVBQUNOc2pnZlFGc0FBQ3V4ZVBEWDV3ODBrUW9Bb0xHaUNtRDM1dW0wby85RUFvQ0xzZFlQS0lFQUFHZzhiUUVBWEVqMCtZOU1ENldKK2Y0RTBIUUNBS0FZRVFMc0hEaVcraTgvblFBbzIyS2Z2N1YrUUVrRUFFQlJyQTBFNEtrWE42YXhZOWRhNndjVVJ3QUFGQ21DZ0QrOS9qbHRBUUFGMGVjUGxFNEFBQlROZkFDQTVvc1MvK2p6ajAweEFDV3pCaEFvV3J3TVRzejFwOXNIWnRPdVZoQUFRSFBvOHdkNEt4VUFBRzh3SHdDZ09hTGMvNkdwWVgzK0FHY1JBQUNjNDVZclQ2Wjd0eHpXRmdDUW9Uanc3NTBjMXVjUGNCNENBSUFMTUI4QUlCOVI0ajk2ZEhQYVB6dVFBRGcvTXdBQUxpRG1BOFFOMHUxWHo2YWRBOGNTQVBVVWZmNHgzVitmUDhERnFRQUFXQUx6QVFEcUovcjhINTBaVEFjVytoSUFsNllDQUdBSjN1d3BiYjFzYWdzQXFKWStmNENWVVFFQXNBSTdyNTVOdHc4Y0V3UUE5SkMxZmdDcm93SUFZQVhHancra2lmbCtiUUVBUGZMVWl4dlR5TXlRZ3ovQUtxZ0FBRmlscUFMNDBuV0gwdloxQ3dtQXpvbysveGp3cDl3ZllQVUVBQUFkWW0wZ1FPZEVuMzhjL0dNakN3Q2RJUUFBNkxBSUFYYTF2Z0JZUG4zK0FOMGpBQURvQW1zREFaWXZ5djBmbWhwdTMvNEQwSGtDQUlBdWlpRGdUNjkvVGxzQXdFWG84d2ZvRFFFQVFBK1lEd0R3ZGxIaVAzcDBjOW8vTzVBQTZENXJBQUY2SUlaWXhjM1dyN2FDQVBNQkFGSzd6ejl1L2ZYNUEvU09DZ0NBSGpNZkFDaVpQbitBNmdnQUFDcXlZLzJKdEh0d1dsc0FVSVE0OE8rZEhOYm5EMUFoTFFBQUZabVkzNUFtbnQxZ1BnRFFhSXRyL2FMY0g0QnFDUUFBS3JZNEgwQmJBTkEwK3Z3QjZrVUxBRUNOUkJYQTdzM1RhVWYvaVFTUUsydjlBT3BKQUFCUVE5b0NnQnhGbi8vSTlGQ2FtTzlQQU5TUEFBQ2d4aGJiQWdRQlFKMHQ5dm52YjMwcDl3ZW9Md0VBUU0xWkd3alUyVk12Ymt4ang2NjExZzhnQXdJQWdFeEVFUENsNnc2bDdlc1dFa0RWOVBrRDVFY0FBSkFaOHdHQUtrV0ovK2pSelduLzdFQUNJQzhDQUlCTVJRaXdxL1VGMEN1anJSdC9mZjRBK1JJQUFHVE1mQUNnRjZMYy82R3BZWDMrQUprVEFBQTBRTXdGaVBrQTJnS0FUb29ELzk3SllYMytBS2taQkFBQURXSStBTkFKK3Z3Qm1tbHRBcUF4bm5wcFkvdW03dmFyWjlQT2dXTUpZTG5HWnplMXAvdnI4d2RvSGhVQUFBMWxQZ0N3SE5Ibi8rak1ZRHF3MEpjQWFDWVZBQUFOOVdidmJ1dWxYbHNBY0NINi9BSEtvUUlBb0JBN3I1NU50dzhjRXdRQWJWSGlIK1grMXZvQmxFTUZBRUFoeG84UHBJbjVmbTBCUUhycXhZMXBaR2JJd1IrZ01Db0FBQW9VVlFCL09IUTQzWHJWeVFTVUkvcjhZOENmY24rQU1na0FBQXBtYlNDVUlXNzZSNmFIMnB0Q0FDaVhBQUNBZGdnUWF3UDdMeitkZ09iUTV3L0EyUVFBQUxSWkd3ak5FdVgrRDAwTnQ2ZjhBMEFRQUFEd0ZoRUUvT24xejJrTGdFd2RPTldYUm1ZRzlma0Q4RFlDQUFET3kzd0F5RXVVK0k4ZTNaejJ6dzRrQURnZmF3QUJPSzhZRmpZeDE1OXVINWhOdTFwQkFGQmYwZWNmMC8zMStRTndNU29BQUxnazh3R2dudlQ1QTdBY0FnQUFsdXlXSzArbWU3Y2MxaFlBRllzRC85N0pZWDMrQUN5TEFBQ0FaVE1mQUtxeHVOWXZ5djBCWUxuTUFBQmcyV0krUU53ODNuNzFiTm81Y0N3QjNhZlBINERWVWdFQXdLcVlEd0RkRlgzK2NmQlg3Zy9BYXFrQUFHQlYzdXhGYmgxU3RBVkE1OFRQMXNqMFVKcVk3MDhBMEFrcUFBRG9xSjFYejZiYkI0NEpBbUNGRnZ2ODk3ZStsUHNEMEVrK1ZhaWRLQ01lY25DQWJJMGZIMGozSExxaFBTY0FXSjZKdWY3MHUvOTRrMTUveUZpOHgycUxvNjU4c2xBN1VmTDQrSTAvVGJ1dU9aS0FQQzIyQmR6eDdMWjBZR0ZkQWk0dSt2enYvdGtOYWM4TDE3ZC9mb0Q4ckwvOGRQdjk5ZkVibnpXemc5cGFzL1dtZC8xeGdocVpldldLdEduTmErbTNOeDF0cDZmenA5ZWtnd3Q5Q2NqUFhPdm45OGtYQjlKVTYwQ3piZDFDNmw5ek9nRy9FTGY4WHoweW1QN3Q5SmIyNXgrUXB4M3I1OUlEV3crbEhmMXo2YTlmZXFjcU9HckxEQUJxcWYveTE5TFhiajdZK3ZYTVlTRktJdmZORExVUEVVQytZa2lnNmg0NFkvVG90ZnI4SVhPM1hIVXk3ZHAwcFAxcmlBcWVhSU5UeVVOZHFRQ2dsbDUrL2ZMMGpzdGVUN2UrOFRDOTRSMHZwNTBEczJuTDJsZlNnWmY3MmxVQlFINmlKUEpiclZ1UnFBVFl2bTRoUVltaTNEOE9DQk56RzFxZmQ1Y2xJRDlSN3YrNWEyZlN2eHlhZk12UTI5RmptOU0veks5UFVGY3FBS2kxcjkxMDhHMlR4Q05SamVGSVNxc2dieEVBZk9tNlE3WUZVSXczVjJicURZYXNSU1ZiYkx0WnJGUmRGRC9qTWZzRzZrd0FRSzNkY3VYSjlQQS9lZTY4LzFsN1AvTE1ZUHNHQmNoWHpQcUkxZ0JCQUUwVkpmNmpSemVuL2JNRENjaFhsUG5mTzNUNGdwOVhFZkM1b0tMdXRBQlFhekVRNmRaV0NIQytCMjJVRUg5MHd3bHRBWkM1R1BMNXQvTWIyZ01ERjl0K29DbkdaemVsKzErNDNxMC9aQ3pXK2oxNDNmUHRtLzhMRGJOOTZzV05hZXpZdFFucVRnVUF0UmVILzJnRnVKUm9DL2pMVnVwcVVDRGtLMzdlb3hyQS9tUnlGMzMrajg0TXBnTzIyRUMyb3MvL3MyK1UrMTlLbFA0Yi9FY09WQUJRZTNFckdEMVc3N255NXhmOTcwVlpWcXhlc1RZUThoVS83OUhXYy9EVXV2US9YWG5LMmtDeUV3ZUFQYTBiLzdnSlBQYmEyZ1RrYVdmcjBCOXIvVzVaUW1WYVZQcjg5WWwzSnNpQkNnQ3ljTzVhd0VzNTh3SzJWUkFBbVRNZmdGeEVuMzhjQXF6MWc3ekZnWC8zdGROcGU5K3BKZjMzcmYwak55b0F5RUtzQlh5bDlVTDFnZlh6Uy9ydng2M2hiMTU5M0h3QXlOemlmQUJyQTZtejZQMzlWOC9ma1A3aDVIcHIvU0JUWi9mNWIxcjc2cEwvOTBabWhzejRJQ3NxQU1qSzR6YyttN2F0NEJBUTh3RkdqeHJNQWptTEtvRGRtNmZUanY0VENlb2crdnpqODhYTFArUXIrdncvT1hEc3ZHdjlMc1hhUDNJa0FDQXJGMXNMZUNueGtJNFhOZXRaSUcvYUFxaGFsUGlQVEEvNVBJSE14ZWZKN3NHcFpSLzhGOTM5c3hzRWdHUkhBRUIySHI3K3VTVU5aTG1RQXd2cjJnT2FiQXVBdkMxdUN4QUUwQ3Y2L0tFWjRqMXkxNllqcTNxZmpOYWZ2VlBEQ1hJakFDQTc4YkwvMkkzUHJqaXRYUlFQN3RGajF3b0NJR1BXQnRJclVlNy9VT3RsMzZBdnlGZVUrOS9WdXZIdnhHZUd0WC9reWhCQXNoTnJ3dDV4MmV2cDFsV2t0bUY3MzBKN2JlQmxsMTJXL3V1cEt4T1FuOFcxZ2Q5NmFXUDdKbWZUMnRjU2ROS0JVMzNwVHc1ZjExN3JOMmVnTEdRcER2NmYzblEwL2RGMXo2ZjNMSEc2LzhYRVhLbjQ3SUVjcVFBZ1M4dGRDM2dwNWdOQU01Z1BRS2RFaWYvbzBjMXAvK3hBQXZJVjRmQzlRNGM3OXJrUTc0eS8rNDgzYVFNaVd5b0F5RktzQlp4OWRXMzdCcjhUWXNWWS9MMnNEWVM4eGRyQS9jYzN0Zjk2dFZWQ2xDdjYvTzkvNFhyRHZTQmoyOWFkU2w4Y2ZxRzkxaS9lOHpvbDF2NnBIQ1ZuS2dESTJtb0hBbDZJK1FDUVAvTUJXQzU5L3BDL0tQZi9iT3ZaSDJ2OU9zM2FQNXBBQUVEV1ZyTVc4RkswQlVBemJGKzNrTDUwM1NGdEFWeFFQTy8zVGc2NzhZZk03V3dkK2lQNDdWU0w2TGtNL3FNSnRBQ1F0YWxYcjJpLzFNY0xmcWN0dGdYRTdlSEJsL3RVQTBDbWpyMjJ0dDBXRUQvRDIxclBpazZXZ3BLMzZPSDk4MlBYdE12OTQvTUV5Rk5VZzBaVjZFYzNuR2dQaXU2R3FBNTFLVVFUcUFBZ2U1MWFDM2dwMmdJZ2YvRzh1UDNxMmZZdEVXV0xQditvOGpMSUMvSTExSHFtM3pkMHVDdnRvR2VMNTBRTS9uUDdUeE9vQUNCN25Wb0xlQ214Tm5EbndHeTZMSjBaTlBieTY1Y2xJQy94dlBpSGsrdmJhd09qRXFBYjFVUFVXL1Q1UjduL2t5OWU3VGtPbVZwYzYvZkFkYy8zcEwwcktvV3MvYU1wVkFEUUNMRVc4TEViZjlxekhsL3pBYUFackEwc1J6eTNSNmFIMHNSOGZ3THkxZTArLzNNWi9FZlRDQUJvakIzclQ2UUh0ajZmZWlrK0ZPNCtkSU8yQU1qY3pxdG4yeE9qQlFITkU2VzdVZTYvdi9XbDNCL3lGV1grdXpZZDZYcTUvN21pWXNpRkQwMGlBS0JSdXJVVzhGTE1CNEQ4V1J2WVBCTnovZTJkM2ZwMklWL1I1My9YNXFuMllPWmUrMjdyR1JKRFFxRkpCQUEwU2pmWEFsNUs5QmJ2bngxSW8wZXZUVUMrSWdqNHc2SERYWjhyUXZkRW4zKzBhVm5yQi9tS1B2OVBEaHhyVjJmMXF0ei9YTmIrMFVTR0FOSW9zY1lwUGlUZWMrWFBVNi9GSU1Lb1BvamJ3L2xXR0JDREFvSDhSSmdYUXdLdERjeFBsUGgvOWNoZytyZlRXNnoxZzR6dFdEK1hIdGg2cUgzcjM2MjFmcGRpN1I5TnBRS0F4b21CZ0YrNytXQmxhZkdpWjFvM1VGK1pHdFlXQUptTHRvQ2RGZDVBc1RSUmZhWFBIL0pXVlovL3VlTFcvNTVETjdqOXA1RlVBTkE0TDc5K2VVL1dBbDVLbEJISDJzQXRhMTlKQjE3dWExY0ZBUG1KTXZLL09mRk9hd05yS3NyOTQwVTlWblJaNndkNWluTC96MTA3ay83bDBHUXRockhHN0JBdFJEU1ZDZ0FhNjJzM0hhek5STzlJa1BjZjM1VEdad2NTa0s5NHB2enA5Yy9aRmxBRDhWeU42ZHhlMGlGdnU2NDVVbW1mLzdtcy9hUHBWQURRV05HRGY5dkdla3p6anB2REQ2eWZOeDhBTXRjZTl0a0s4OHdIcU01aW4vLy9lZmc2ZmY2UXNTanpqKzFOVmZiNW4wL2MvbnRQbzhrRUFEUld2QmplZXVYSld0M1V4V0VoUHVpMEJVRGU0dVV3QmdWR3k1RnRBYjB6UHJ1cHZaTExyVC9rSzliNlBYamQ4KzJiLzdxRnFESDRiK3lZYlU0MG14WUFHaTBPLzlFS1VGZlJFakQreG0waWtLZDR6c1Nnd0tqd29UdWl6Ly9SbWNGMHdLMGNaQ3Y2L0QvN1JybC9YVm43UndsVUFOQm9VYTViMVZyQXBYalBsYWZhRlFIYUFpQmY4WnlKQVhTeCtTTktXclVGZEU2OGlPOXAzZmpIamR5eDE5WW1JRSt4U1NYVytsVTkzZjlpb3NMb3IwKzhNMEhUcVFDZzhlcXlGdkJTenJ6b2JoVUVRT2FpRWlBcUFnd0tYTG5vODQrWGNXdjlJRzl4NE45OTdYVGEzbmNxMVptMWY1UkVCUUNORnoyNnI3UmVJR01JWDUzRnJlRnZYbjNjZkFESVhJUjRmenUvd2RyQUZZb2UzSC8xL0EzcEgwNnV0OVlQTW5WMm4vK210YSttdXJQMmo1S29BS0FZajkvNGJIdHFkeTdHamw2YlJvOGFSQU01TXg5ZzZhTFBQNTU3WHNJaFg5SG4vOG1CWTdWYTYzY3AxdjVSR2dFQXhiamx5cFBwNFgveVhNcEpmQ2pGQy9GVEwyMU1RTDYwQlZ4WWxQaVBUQTk1emtIbTRqbTNlM0FxbTRQL29zLzk0eTlwdjZRb0FnQ0tFdnRtNnp5QTVrSU9MS3hyRDhLeUxRRHl0dlBxMmZiTm1DQkFuejgwUmJ4WDdkcDBKTXYzcTJnNTJqczFuS0FrQWdDS0VpL2RqOTM0YkhicDlLTDRvQm85ZHEwZ0FES21MZUJNdWY5RHJaZHVBN2NnWDlIbnZ5dnpaNW0xZjVUSUVFQ0tFdXU2M25IWjYrbldERlBxc0wxdm9iMDJjTU9hMC9wa0lWT0xhd08vOWRMRzlvM1pwcld2cFZJY09OV1gvdVR3ZGUyMWZuTUduVUtXb3MvLzA1dU9wbnUzSEU3dnFmbDAvNHVKT1V2eExJYlNxQUNnT0xtc0Jid1U4d0dnR1VxWUR4QWwvcU5ITjZmOXN3TUp5RmVFbHZjT0hjNytlV1h3SHlWVEFVQnhZaTNnN0t0cjJ6ZnBPWXNWWS9GNzJMN3VWUHIvVGwxcGJTQmtLb1pQN1QrK3FmM1h1VlluWFV6MCtkLy93dldxbGlCamNmQy9yM1h3ajVML2VQL0lYYXo5TS9pUFVxa0FvRmk1RGdTOEVQTUJJSDlObWcrZ3p4L3lGK1grbjIwOWsySjRhVk5FSzlMdlB2ZExDVW9sQUtCWU9hNEZ2QlJ0QWRBTTI5Y3RwQzlkZHlqTE10dDREdTJkSEhiakQ1bmI5Y2JCUC9lV3lYTVovRWZwdEFCUXJLbFhyMmkvWE1lTGRsTXN0Z1hFN1dIOC9uNzI4cm9FNU9mWWEydmJiUUZSMGJPdDlZektvZVEyK3Z6Ly9OZzE2YUhKNjlMUFhubEhBdklVMVpGUkpSbnZFekU0dVVtaVd0SWxDYVZUQVVEUm1qSVE4RUswQlVEK0lxajgxVmFvRjdkeGRSVjkvbEY5RkNFQWtLZFk2eGQ5L2sxcWp6eGIzUHJmYytnR3QvOFVUd1VBUll1QmdEbXZCYnlVV0J1NGMyQTJYZGI2NjhsWHJ6QW9FRElVNi9LaW5EN1dCa1lsUUoycWxxTFBQOHI5bjN6eDZ0Yno5TElFNUdkeHJkOEQxejNmNkcwazQ4YzNXZnNIU1FVQXRLc0FIcnZ4cDQzKzBBdm1BMEF6N0ZoL0l1MGVuSzcwbWVWNUFzMndjK0JZZS9Cb1V5c2hGMW43Qjc4Z0FJRFV6SUdBRnhJZmdudGUyR3I5RFdRdVpuM0VpM3N2ZzRBbzhZOXkvLzJ0TCtYK2tLOG84OSsxNlVoankvM1BGWlZLQWtzNFF3c0FwRE1EQVc5dGhRQk5yd0lJVVVMOG0xY2ZUMXZXdnBJT3ZOeW5MUUF5RlNIZTM4NXY2Rmxid01SY2Y3ci9oZXZiSmJUSy9TRlA3VDcvTFlmVG5kZk9GUEhPRTc3YmVuYjlYMGNHRTNDR0NnQjRRMGxWQUdlTE10N1IxaGVRcjNpUjM3MTVPdTNvUDVFNkxmcjg0emxoclIva0svcjhQemx3ckpGci9TN0Yyajk0S3hVQThJYW9Bb2dQeGZkYytmTlVraWovaTFMaXFBVFFGZ0I1aWtHQmYzM2luUjFkR3hnbC9sOXQzWnI5MitrdDdlY2prS2Y0alArajRSY2F1ZGJ2VXF6OWc3ZFRBUUJuYWZwYXdFczVzTEF1N1huaGVtc0RJWE14RzJEbkttNzZvaXBJbnova3JiUSsvM05aK3dmbnB3SUF6dEwwdFlDWHNtbnRhKzIxZ2VZRFFONmlYUDl2VHJ4ejJmTUJvdHcvWHBqMStVTytvdHovODBPVDZhN04wOFgwK1ovUHlNeVExaVU0RHhVQWNCNWZ1K2xnMFIrYUlSTHovY2MzcGZIWmdRVGtLNTVsZjNyOWN4ZDlwc1hQZTB6SjlySU0rU3E1ei85YzF2N0JoUWtBNER4S0hRaDRQdlo5UXpPY2IyMWdsUGlQSHQyYzlndjZJR3RSNW4vdjBPSGlMeThXN1huKytqUXgzNStBdDlNQ0FPZFIwbHJBUzRrUzRoZ2NwQzBBOGhaRFBxT3FKMFNiMC9qc3B2WmFQN2Yra0s5dDYwNmxMdzYva0hhMXdyMU9EUDlzZ2hqODkvWFpheEp3ZmlvQTRBTGk4Qit0QUx4VnRBU010dzRSQmdWQ3ZxSTgySUEveUZlVSszKzJkZWlQY24vZXl0by91RGdWQUhBQmMyL2NkSmM2RVBCQzNuUGxxWFpGZ0xXQmtDOEQvaUJmc2VIamdhMkhpcDN1ZnpHeHdTU0dtQUlYSnY2SGk0aStXTGRrYnhmVkVmZHVPZHl1a1BBQ0FnRGRGNSszajkzdzA3Ujc4M1R4US83T0oyNzl2MlZlRVZ5U0NnQzRpRmdMK0VvckFQakErdm5FMjBXL1lRd1dNeDhBQUxwanFCVzZQM2pkOCswKy8wMXJYMDJjbjdWL3NEU3VOdUVTeG84UHBHZE8ra0M1bU5zMnZwaWV1T25nbVNGRWJpVUFZTldpeno4K1Z4Ky84Vm5WZHBjUXQvKzJGY0hTQ0FCZ0NhS25qRXVMRldPUHRWNVVvaW9BQUZpWitCeDk0dVlEN2M5VndmcWw3WGxoYXdLV1JnQUFTeEFsWlJOejlza3V4ZG56QVlhc1VRU0FKWXViL29ldmY2NzlPZXJndnpTeDlzOVFZbGk2dFFsWWt1Z3RpdzltSDhoTEUwRkF0QVhFQi9Qb3NXdXREUVNBQzRqQVBNcjlWZEF0MzlneFZacXdISVlBd2hMRldzQjNYUGE2dFlETHRMMXZJZDIyOGFXMHJ2Vm5aemdQQVB4QzlQbC9ldFBSOW8zL2UvcE9KWmJIMmo5WVBpMEFzQXl4Rm5EU1RmYXk5Vi8rV3J1UE1kb0MzRzRBUUVvNzFzKzFCL3pwODErWmVCOGJNNk1KbGswQUFNc1FWUUErYkZadWNUNUE5RGVhRHdCQWlSYjcvQi9ZZXFqOXVjaktlQitEbFJFQXdETEZtaGxyQVZjblhuNWlQc0M5UTRjRkFRQVVJY3I5NzlvODNUNzhXK3UzT2dkTzlWbjdCeXNrQUlBVnNCYXdNMjdiK0dMN1JXam53R3dDZ0thS0FYK3gxdS8yZ1dPSjFidi9zTFYvc0ZJQ0FGaUJHR1luZWU2TUtIL2N2WG5LZkFBQUdpZHUrdVB6VFo5LzU4UjJJZk9ZWU9Xc0FZUVZHcGtlVER2NlQvaEE3NURGK1FDM1hIblMya0FBc2hidGJmY05IVmJxMzJIdHdYL1cvc0dxcUFDQUZZcUJnT096bXhLZEZXMEJNUjhncWdMTUJ3QWdKNHQ5L3ZFNTV2RGZlVkY5NmZZZlZrY0FBS3RnTFdEM3hGeUFtQStnTFFDQUhPd2NPS2JQdjR1cy9ZUE9FQURBS2tRVndON0o0VVIzTExZRlJQL2t0blduRWdEVXplSmF2OTJ0bTM5dGdkM2o4QStkWVFZQXJGSU1CSXkxZ0VyOXVpZUNnTWR2L0dsNzhJLzVBQURVZ1Q3LzN2bnVYTC9oeTlBaEtnQ2dBL2JORENhNmIzRStRS3hUQW9BcVJKOS9mQTQ5ZnVPekR2ODk4dWpNVUFJNlF3QUFIWEJ3b2M5QXdCNktkVXJXQmdMUWEvRzVFMzMrMXZyMWpyVi8wRmtDQU9pUXNhUFhwTG5UZnFSNlpYRSt3R090R3hqYkFnRG9wc1UrLy9qY2NmRHZIV3Yvb1BQV2JMM3BYWCtjZ0ZWNytmWEwweXV0QU9BRDYrY1R2Yk5wN1d2dGpRRmIxcjZTRHJ6Y2wrWlByMGtBMEFsUjd2LzVvY24yYXI4dHd1YWVHNWtaYXM5YUFqckhFRURvb1BIakErMzFQMTRTZWkvbUE4UU56YmRlMnBoR1RRb0dZQlhpNFAvSjF1ZDVmS2E3OGE5RzNQNGIvQWVkcDE0Wk9zeGF3T3BFOEdJK0FBQ3JFV0Z5RFBqVDUxK3RrV21ELzZBYlZBQkFoMWtMV0wzRitRQTcraytrZlRORDFnWUNjRW5iMXAxcWwvcjcvSzVlRFA2Ym1POVBRT2RkOW9HUC92cnJDZWlvT0lER0xUVDFFQzhTbzhldUZRUUE4RFpSN3YvWjFtMS9sUHRURDNjOHU4M2tmK2dTUXdDaEMrYmVHRVIzcTF1RVd0amV0NUIyOU0rMUJ3VEd5a1lBQ0R0YmgvNEh0aDV5NjE4ak1jZG5ZbTVEQXJyRERBRG9rdjJ6QTlZQzFzaGlXMEJVWmtSckFBRGxpZ04vZkI3czNqeXR6NzlHNHRiL1d3Yi9RVmVwQUlBdXNSYXdudnJYbkU0ZjNYREMya0NBQWcyMXd1QUhyM3MrN1lvQmYyc2MvT3ZHMmovb1B0ZVQwRVd4RmpBR0FsSS9zVGJ3aWRidFQ3d0VEbG5iQ05CbzBlY2Z6L3Q0N2l2M3J5ZHIvNkEzQkFEUVpYYlMxMXVzZVhyNCt1ZXNEUVJvcU9qemYrTG1BKzNuUGZXMTU0V3RDZWcrQVFCMFdaU3lUY3haWlZOblo4OEhVQTBBMEF4eDB4OEJyejcvK290dFBZYjBRbStzVFVEWFJVOWJ2SWg0QWFtM0NBS2lQTlRhUUlCOFJaQjcxK2FwOXZZWDhqQjJUTFVrOUlvS0FPaUI2R3NibjkyVXlNUFo4d0VBeU1OaW4vL2pOejdyOEorUmFKV2NGTGhEendnQW9FZGlMYUFQdUx4RXYyaTBCWmdQQUZCdk85YlB0US8rOGR4V2JaZVBlQzhhTXlzSmVrb0FBRDB5ZDNxTkQ3a01MYzRIZUt6MVltaytBRUM5TFBiNVA3RDFVUHQ1VFY2OEYwSHZDUUNnaDJLOWpiV0FlZHErYnFIZEZuRHYwR0ZCQUVERm90ei9yczNUN2NPL3RYNTVPbkNxejlvL3FJQUFBSHJNV3NDOHhYeUFlT0hjT1RDYkFPaTk2UE9QdFg2M0R4eEw1T3YrdzliK1FSVUVBTkJqc1JaUTRwMjNLRFBkdlhuS2ZBQ0FIb3FiL25qdTZ2UFBYMnpiTVJjSnFtRU5JRlJnWkhvdzdlZy80UVVtYzR2ekFXNjU4cVMxZ1FCZEVtMVg5dzBkVnVyZkVPM0JmOWIrUVdWVUFFQUZZaUNndFlETnNiZzJNS29DekFjQTZJekZQdjk0dmpyOE4wZFVRYnI5aCtvSUFLQWkxZ0kyVDh3RmlQa0EyZ0lBVm1mbndERjkvZzFrN1I5VVR3QUFGWWtxZ0wyVHc0bG1XV3dMK0pvYks0QmxpK2ZtWXpmOE5PMXUzZnhyazJzZWgzK29uaGtBVUtFWUNCaHJBUjBVbXllQ2dLZ0dpRUZINWdNQVhKdysvK2FMejBORGtLRjZLZ0NnWXZ0bUJoUE50VGdmWUplcDFRQnZFMzMrOFh4OC9NWm5IZjRienVBL3FJYzFXMjk2MXg4bm9ES3pyNjF0SHd6ZmMrWFBFODBWTDdZZjNmQlNtais5SmgxYzZFc0FwWXQ1S1YrKy9tZnBBK3ZuMHpzdWV6M1JYRzcvb1Q1VUFFQU5qQjI5SnMyZDl1UFlkR2ZQQjdBdEFDaFZCS0xSSWhYUFE1VlJ6V2Z0SDlTTENnQ29nWmRmdnp5OTBnb0E0aGFFNXV0ZmM3cTlNV0RMMmxmU2daZjcybFVCQUUwWHdlZGRnOVB0MVg1YmhLREZHSmtaYXM4OEF1ckJsU1BVeFBoeGF3RkxFL01CSHIveHArMytWNENtT3J2UDM1clVzc1I3amRKL3FCY0JBTlNJdFlEbDZiLzh0ZlNaMW90eHRBVjRNUWFhSnNyOTQrRC9HWU5RaXpReVBaU0FlckVHRUdyRVdzQnlMYzRIMk5GL0l1MmJHYkkyRU1oYWZJN3QyblRFNTFuQll2RGZ4SHgvQXVybHNnOTg5TmVOWFlVYWlZTmczQVpUdG5oeEdqMTJyU0FBeUVxVSszKzJkZHQvKzhDeFJObnVlSGFiMWthb0lVTUFvV2JtM2hnSWQ2dGJrNkp0NzF0SU8vcm5yQTBFc2hGOS9uOTAzZk51L1VtalI2OU5FM01iRWxBL1pnQkFEZTJmSGJBV2tMZXNEVFFmQUtpck9QREhjMHFmUHlGdS9mZlBia3BBUGFrQWdCcXlGcEN6eGRyQXFBYXdOaENvazFqcjkyRHJ4ajl1L3VNNUJTSFcvdjNYVTFjbW9KNWNNVUpOeFZyQUdBZ0lpMkp0NEJPdFc3WjQyUjZ5UXh1b3lPSmF2M2dlS2ZmbmJOYitRZjBKQUtER29vY096aFZsdGc5Zi81eTJBS0RuZGc0Y1MwL2NmS0Q5SElKejNYUG9oZ1RVbXdBQWFpeldBazdNV2FIRDI1MDlIMkRidWxNSm9KdmlwaitDeDkyYnAvWDVjMTZ4dmNiVWY2aS90UW1vdGVpbGl4Y3ZMMXljVHdRQmo5LzRVMnNEZ2E2SWRxTzdOaysxNTVEQXhZd2RVN1VJT1ZBQkFEVVhhZnE0YWJwY3d0bnpBUUJXYTdIUC8vRWJuM1g0NTVLaVpkSHRQK1JCQUFBWmlMV0FQbGhaaXVqTHRUWVFXSTE0ZnNUQjMxby9saUxlVDhiTUxJSnNDQUFnQTNPbjE2U1I2Y0VFUzdFNEgrQ3gxZ3U4YlFIQVVpMzIrY2Z6WTR0bkIwdms4QTk1TVFNQU1qRXh2Nkc5RnRES0paWnErN3FGZGx1QStRREF4VVM1LzEyRFV5cUhXTFlEcC9xcy9ZUE1xQUNBakZnTHlFckVmSUM0MVRNZkFEamJZcDkvclBWeitHY2w3ais4TlFGNVdiUDFwbmY5Y1FLeU1QWHFGZTErelBkYytmTUV5OUcvNW5TN2VpUmU4dWRQcjBrSEYvb1NVSzU0SG54NTY4L2FBLzdlY2RuckNaWXJxc3ZjL2tOK3RBQkFac2FPWHRPNjBUMXVNQk1yc2pnZllFZi9pYlJ2WmtoYkFCUm0yN3BUNmE3TjA5ckpXSlgyNEQ5ci95QkxBZ0RJVEF3RWpMV0F5cmxaamJqMWl5L3pBYUFNVWU3LzJkYm54dTBEeHhLczF2anhUYllUUWFiTUFJQU1XUXRJcHl6T0I5RC9DODIxczNYb2p6NS9oMzg2SWQ0LzRqMEV5Sk1BQURJVVZRQjdKNGNUZE1KaVc4RFhianJZYmcwQW1pSEsvQis3NGFkcDkrWnBiV04wakxWL2tEY3RBSkNwWjM1K2xiV0FkRlFFQVE5Yzk3eTJBTWpjVU90bitiNmh3ejRmNkRpRC95Qi9LZ0FnWS90bUJoTjBXclFGUEhIVHdmYWNDYmVHa0kvRnRYNlAzL2lzd3o5ZFlmQWY1TThhUU1qWTdHdHJyUVdrYStJQThkRU5MMWtiQ0JtSU9SNWZ2djVuNlFQcjU2MzFveXRpQVBGZm4zaG5BdkttQWdBeUYyc0I1MDc3VWFZN3pwNFBFR1hGUUwxRVVCZURQT1BuVk1VTzNkSWUvSGZjNEQ5b0FoVUFrTG1YWDc4OHZkSUtBT0xXQjdxbGY4M3B0SE5nTm0xWiswbzY4SEpmdXlvQXFFNEVjbmNOVHFlN05rKzNnenJvcHBHWm9mYnNJU0IvaGdCQ0E0eTNVdm5iTmg1UDI5WXRKT2ltbUErd1k4TmNld1hVcUVuUTBIUFI1Ly9KZ1dQdGxYNXUvT21GdVAwMytBK2FROTB3Tk1TKzZhRUV2ZEIvK1d2cE05Y2NhYmNGUk44eDBCczcxcysxQi94OXhvQk9lc2phWVdnV0ZRRFFFTllDMG11TDh3RWlCUGpLMUxDMWdkQWw4VnpmdGVtSTV6czlGMnYvbFA1RHMxejJnWS8rdWxHeDBCQnhJSHVzZFR2a1pvZ3F4SXZpNkxGckJRSFFJVkh1LzluV2JYK1UrME1WN25oMlc3c0ZBR2dPUXdDaFFlWk9yMm12ZjdyVkxSRVYyTjYza0hiMHo2WExMcnNzL2RkVFZ5Wmc1WGExRHY1L2ROM3pidjJwVE14NW1aamJrSUJtTVFNQUdpYUdzMWtMU0ZXaUNtWDM1aW56QVdDRjRzQWZQei82L0tsU2UrM2Y3S1lFTkk4S0FHZ1lhd0dwZzFnYkdOVUExZ2JDMHNSYXZ3ZGJOLzV4OHg4L1AxQ2xXUHVua2d1YXlSQkFhS0JZQzdpai80VFNVU29YYXdQamEzeDJvUFY5dWNsOEFEaUhQbi9xeHRvL2FEWjF3dEJRZHJSVEp6c0hadFBEMXorbkxRRE9zck4xNkgvaTVnTU8vOVRLUFlkdVNFQnpDUUNnb1dKdGp3U2ZPbGxjR3hqOXphcFRLRmw4LzBjZ3Rudnp0RDUvYWlXMnVaajZEODJtQlFBYWJPem90ZTFXQUMrWTFFa0VBWEg0c1RhUTBrU2YvMzFEaHdWZzFGSU1FQjQ3cG5vUW1rNEZBRFJZcFBqanB2aFNVekViNEltYkRwNFplaWFrb3NHaXp6Kyt6eCsvOFZtSGYyb3IzaGZjL2tQekNRQ2c0V0l0b0E5MDZpelduVDNXT2hpWkQwQVR4ZmQxSFB5dDlhUE80ajFoek93Z0tJSUFBQnB1N3ZTYU5ESTltS0RPenA0UEVHWFNrTHZGUHYvNHZ0N2llNXFhYy9pSGNwZ0JBQVdZbU4rUW5qbDVsZEpUYWk4T1N0RVdZRDRBdVlweS83c0dwMVMwa0kyblR4b2FEQ1ZSQVFDRnNCYVFuTVI4Z01kdi9HbTdieHB5c05qbkgydjlIUDdKeVVOVHd3a294NXF0Tjczcmp4UFFlRk92WHRIdVAzM1BsVDlQa0lOM1hQWjZ1Mm9sRGxQenA5ZWtnd3Q5Q2Vvb3ZrKy92UFZuYVVmL1hQdjdGbklSMVZadS82RXNXZ0NnSUdOSHIybmRyQjQzaUlxc0xNNEhpSldXKzJhR3RBVlFHOXZXblVwM2JaN1dYa1dXMm9QL3JQMkQ0Z2dBb0NBeEVERFcvQ2lySmtkeHV4cGY1Z05RdFNqMy8yenJPWHI3d0xFRXVSby9idTBmbE1nTUFDaE1UUHIxZ1UvT1lqNUFURmZYWjAwVmRyWU8vZEhuNy9CUHp1STlJTllFQStVUkFFQ0I5azRhK0VQZXpsNGJHSzBCMEcxUjVoL2ZiN3MzVDJ1akludlcva0c1dEFCQWdaNzUrVlhXQXRJSUVRUThjTjN6MmdMb21xSFc5OWg5UTRjOUwya01nLytnYkNvQW9GQjdyZjJoUWFJdDRJblc3V3pNdDRnREc2eldtMnY5V3Q5WER2ODBpY0YvVURackFLRlFNUkRRV2tDYUpnNXFNU2pRMmtCV0kvcjhIOWg2S0gxZy9YeUNKb2xCd0g5OTRwMEpLSmNLQUNoWXJBV2NPKzB4UUxPY1BSOGcxclRCVWtXQUZBTW05Zm5UUk8zQmY4Y04vb1BTcVFDQWdyMzgrdVhwbFZZQTRKYUxKdXBmY3pyOTV0WEgwNWExcjZRREwvZTFxd0xnZk5wOS9xM1E2TTVyWjlvQkVqVFJ5TXhRZXdZUVVEWlhmMUM0OGRadHdNR0ZkUW1hNnV6NUFIQzJ4VDcveDI5OHR0MDZBazBWdC84Ry93RkJBQUNrZmRORENacnVNNjJEWHJRRjNQYk9GeFBzV0QvWFB2akg5NFZ5ZjVyTytsOWdrUUFBZUhNdElEVGQ0bnlBeDFvSFA5c0N5clRZNXg5RC9wVDdVNEpZKzZmMEgxZ2tBQURhWWkyZ2dZQ1VZdnU2aFhaYndMMURod1VCaFloeS83czJUN2NQLzliNlVSSnIvNEN6ZWRzSDJxSS9NTllEUVVsaVBzQ3VUV1lEbE9DdXdhbDArOEN4QkNVWlBYcHQrL01kWUpFQUFIalQvdGtCVlFBQTBBRHR0WCtDZmVBYzN2U0JOODJkWHBOR0RBUUVnT3lOdFc3L2hmckF1VHdWZ0xlSU5VRUdBZ0pBdnF6OUF5NUVBQUM4VGZRTUFnQjV1dWZRRFFuZ2ZBUUF3TnZFdWlBM0J3Q1FuMWo3Wi9BZmNDRUNBT0M4OUE0Q1FGN2ljOXZhUCtCaXZOMEQ1MlV0SUFEa0pUNjMzZjRERnlNQUFDNG8xZ0o2a1FDQStvdlA2ekV6ZklCTEVBQUFGM1JtTGVCZ0FnRHF6ZUVmV0FvQkFIQlJFL01ickFVRWdCcDcrcVRodmNEU0NBQ0FTN0lXRUFEcTY2R3A0UVN3RkFJQTRKSmlMYUNCZ0FCUVA5YitBY3NoQUFDV1pPem9OZFlDQWtDTnRBZi9XZnNITElPM2VXQkpZaUNnS2dBQXFJL3g0OWIrQWNzakFBQ1dMQ1lNZTlFQWdPckY1M0dzNndWWURnRUFzQ3g3SncwYUFvQ3FXZnNIcklRQUFGaVdHQWhvTFNBQVZDY0cvMW43QjZ5RUFBQll0cjNXRFFGQVpReitBMVpLQUFBc1cvUWRHZ2dJQUwwWG43L204UUFySlFBQVZzUmFRQURvcmZiZ3YrTUcvd0VyNSswZFdKRllDemgyWkhNQ0FIckROaDVndFFRQXdJcU50MjRoRGk2c1N3QkFkOFhCMytBL1lMVUVBTUNxN0pzZVNnQkFkKzE1WVdzQ1dDMEJBTEFxMWdJQ1FIZkYycitEQzMwSllMVUVBTUNxeFZwQUF3RUJvRHVzL1FNNnhSczdzR3JXQWdKQWQ0d2EvQWQwa0FBQTZJajlzd09xQUFDZ2crTGdINVAvQVRyRjJ6clFFYkVXY01SQVFBRG9HSWQvb05NRUFFREh4SG9pQXdFQllQV3MvUU82UVFBQWROU28yd29BV0xWN0R0MlFBRHBOQUFCMFZLd0ZkR01CQUNzWGEvOE0vZ082UVFBQWRGejBMQm9JQ0FETEY1K2YxdjRCM2VJTkhlZzRhd0VCWUdYaTg5UHRQOUF0QWdDZ0sySXRvQmNZQUZnNmEvK0FiaE1BQUYxeFppM2dZQUlBbHNiaEgrZzJBUURRTlJQekc2d0ZCSUFsK081Y3Z5RzZRTmNKQUlDdXNoWVFBQzd0MFptaEJOQnRBZ0NncTJJdG9JR0FBSEJoMXY0QnZTSUFBTHB1N09nMTFnSUN3SG0wQi85Wit3ZjBpRGR5b090aUlLQXFBQUI0dXhqODUvWWY2QlVCQU5BVFhuQUE0SzNpYzlIZ1A2Q1hCQUJBeit5ZEhFNEF3QmtqMHdiL0FiMGxBQUI2SmdZQ1dnc0lBR2NHLzAzTTl5ZUFYaElBQUQyMWQwb1ZBQUFZL0FkVVFRQUE5RlQwTzQ0ZTlkSURRTGxHemNVQktpSUFBSHB1Lyt5QXRZQUFGQ2tPL3Q4eStBK29pRGR3b09kaUxlRFlrYzBKQUVwakt3NVFKUUVBVUlueDR3TUdBZ0pRRkd2L2dLb0pBSURLbUFVQVFFbjJ2TEExQVZSSkFBQlV4bHBBQUVvUmEvOE9MdlFsZ0NvSkFJQkt4VnBBQXdFQmFEcHIvNEE2OE5ZTlZDcjZJY2RuTnlVQWFDcHIvNEM2RUFBQWxiTVdFSUNtaW9QL21KazNRRTE0NHdZcUYyc0JSNmFIRWdBMGpjTS9VQ2NDQUtBV1lpMlNnWUFBTk1tQlUzM1cvZ0cxSWdBQWFzTmFRQUNhNVA3RDF2NEI5U0lBQUdvajFnSzZLUUdnQ1dMdG44Ri9RTjBJQUlCYUdaa2VOQkFRZ0t5MUIvOVord2ZVa0xkc29GWmlJS0MxZ0FEa0xLclozUDREZFNRQUFHb24xZ0o2Y1FJZ1I5YitBWFVtQUFCcUo2b0E5azRPSndESWpjTS9VR2NDQUtDV1lpQ2d0WUFBNU9TN2MvMkcyUUsxSmdBQWFtdmZ6R0FDZ0Z3OE9qT1VBT3BNQUFEVTFzR0ZQZ01CQWNpQ3RYOUFEZ1FBUUsyTkhiM0dXa0FBYXMzYVB5QVgzcXFCV291QmdHTkhOaWNBcUtzWS9PZjJIOGlCQUFDb3ZmSGoxZ0lDVUUveCtXVHdINUFMQVFDUUJXc0JBYWlqa1dtRC80QjhDQUNBTEZnTENFRGR4T0MvaWZuK0JKQUxBUUNRamIxVHFnQUFxQStELzREY0NBQ0FiRVNmNWVoUkwxc0FWRy9VNEQ4Z1F3SUFJQ3Y3Wndlc0JRU2dVbkh3LzViQmYwQ0d2RVVEV2JFV0VJQ3FXZnNINUVvQUFHUW4xZ0lhQ0FoQUZhejlBM0ltQUFDeVpCWUFBRlhZODhMV0JKQXJBUUNRcFZnTE9ERm45UklBdlJOci93NHU5Q1dBWEFrQWdHeU56QXdaQ0FoQXoxajdCK1RPbXpPUXJlakRISi9kbEFDZzI2ejlBNXBBQUFCa0xkWUNlaUVEb0p2aWMyYk03Qm1nQVFRQVFOYmFhd0c5bEFIUVJUNW5nS1lRQUFEWmkzVk0xZ0lDMEEwSFR2Vlord2MwaGdBQWFBUnJBUUhvaHZzUFcvc0hOSWNBQUdpRVdBdm9oZ2FBVG9xMWYrYk1BRTBpQUFBYVkyUjYwRnBBQURxaVBmalAyaitnWWJ3cEE0MFJBd0d0QlFTZ0U2S3F6TzAvMERRQ0FLQlJyQVVFWUxXcy9RT2FTZ0FBTkVwVUFleWRIRTRBc0ZJTy8wQlRDUUNBeG9tQmdOWUNBckFTMzUzck4xUVdhQ3dCQU5CSSsyWUdFd0FzMTZNelF3bWdxUVFBUUNNZFhPZ3pFQkNBWmJIMkQyZzZBUURRV0dOSHI3RVdFSUFsc2ZZUEtJRTNZNkN4WWlEZzJKSE5DUUF1SlFiL3VmMEhtazRBQURUYStIRnJBUUc0dVBpY01QZ1BLSUVBQUdnOGF3RUJ1SmlSYVlQL2dESUlBSURHc3hZUWdBdUp3WDhUOC8wSm9BUUNBS0FJZTZkVUFRRHdkZ2IvQVNVUkFBQkZpUDdPMGFOZThnRDRoVkdELzREQ0NBQ0FZdXlmSGJBV0VJQzJPUGgveStBL29ERGVoSUZpV0FzSXdDSnIvNEFTQ1FDQW9zUmFRQU1CQWNwbTdSOVFLZ0VBVUJ5ekFBREt0dWVGclFtZ1JBSUFvRGl4Rm5CaXpzb25nQkxGMnIrREMzMEpvRVFDQUtCSUl6TkRCZ0lDRk1qYVA2QmszbjZCSWtYLzUvanNwZ1JBT2F6OUEwb25BQUNLRldzQnZRZ0NsQ0dlOTJObXdBQ0ZFd0FBeFdxdkJmUXlDRkFFejNzQUFRQlF1RmdEWlMwZ1FMTWRPTlZuN1I5QUVnQUFXQXNJMEhEM0g3YjJEeUFJQUlEaXhWcEFOME1BelJSci84eDdBVGhEQUFEUU1qSTlhQzBnUU1PMEIvOVord2Z3Sm0rN0FPbk1RRUJyQVFHYUphcTczUDREL0lJQUFPQU4xZ0lDTkllMWZ3QnZKd0FBZUVOVUFleWRIRTRBNU0vaEgrRHRCQUFBWjRtQmdOWUNBdVR0dTNQOWhyc0NuSWNBQU9BYysyWUdFd0Q1ZW5SbUtBSHdkZ0lBZ0hNY1hPZ3pFQkFnVTliK0FWeVlBQURnUE1hT1htTXRJRUJtclAwRHVEaHZ0d0RuRVFNQng0NXNUZ0RrSXdiL3VmMEh1REFCQU1BRmpCKzNGaEFnRi9HOE52Z1A0T0lFQUFBWFlTMGdRQjVHcGczK0E3Z1VBUURBUlZnTENGQi9NZmh2WXI0L0FYQnhBZ0NBUzlnN3BRb0FvTTRNL2dOWUdnRUF3Q1ZFWCtub1VTK1hBSFUwYXZBZndKSUpBQUNXWVAvc2dMV0FBRFVUQi8vOXM1c1NBRXZqYlJaZ0Nhd0ZCS2lmV1Bzbm5BVllPazlNZ0NXS3RZQUdBZ0xVZzdWL0FNc25BQUJZQnJNQUFPcmhua00zSkFDV1J3QUFzQXl4Rm5CaXpxb3BnQ3JGMmorRC93Q1dUd0FBc0V3ak0wTjZUZ0VxWk8wZndNcDRnd1ZZcHJoMUdqZDFHcUFTMXY0QnJKd0FBR0FGWWkyZ0YxQ0Ezb3JuN3BoWkxBQXJKZ0FBV0lIMldrQXZvUUE5NWJrTHNEb0NBSUFWaXZWVDFnSUM5TWFCVTMzVy9nR3NrZ0FBWUJXc0JRVG9qZnNQYjAwQXJJNEFBR0FWWWkyZ0d5bUE3ckwyRDZBekJBQUFxelF5UFdndElFQ1h0QWYvV2ZzSDBCSGVXQUZXS1FZQ1dnc0kwQjNqeHplNS9RZm9FQUVBUUFkWUN3alFlZkZjamVjckFKMGhBQURvZ0tnQzJEczVuQURvSEd2L0FEcExBQURRSVRFUTBGcEFnTTZJd1grR3JBSjBsZ0FBb0lQMnpRd21BRmJQNEQrQXpoTUFBSFRRd1lVK0F3RUJWc25hUDREdUVBQUFkTmpZMFd1c0JRUllJV3YvQUxySEd5cEFoOFZBd0xFam14TUF5eGVELzl6K0EzU0hBQUNnQzhhUFd3c0lzRnp4M0RUNEQ2QjdCQUFBWFdJdElNRHlqRXdQSlFDNlJ3QUEwQ1hXQWdJc1hReittNWp2VHdCMGp3QUFvSXYyVHFrQ0FGZ0tnLzhBdWs4QUFOQkYwYzg2ZXRSTExjREZqQnI4QjlBVEFnQ0FMdHMvTzJBdElNQUZ4TUYvLyt5bUJFRDNlU01GNkRKckFRRXVMTmIrQ1VrQmVzUFRGcUFIWWkyZ2dZQUFiMlh0SDBCdkNRQUFlc1FzQUlDM3V1ZlFEUW1BM2hFQUFQUklyQVdjbUxQaUNpREUyaitEL3dCNlN3QUEwRU1qTTBONlhRR1N0WDhBVmZBV0N0QkRjZHMxYnRvMVVEaHIvd0NxSVFBQTZMRllDK2pGRnloVlBQL0d6RVFCcUlRQUFLREgybXNCdmZ3Q2hmTDhBNmlPQUFDZ0FySDJ5bHBBb0RSUHQ1NTcxdjRCVkVjQUFGQVJhd0dCMGp3ME5ad0FxSTRBQUtBaXNSYlFUUmhRQ212L0FLb25BQUNvME1qMG9MV0FRT08xQi85Wit3ZFFPVytkQUJXS2dZRFdBZ0pOTjM1OGs5dC9nQm9RQUFCVXpGcEFvTW5pK1JiUE9RQ3FKd0FBcUZoVUFleWROQmdMYUNaci93RHFRd0FBVUFNeEVOQmFRS0JwWXZDZllhY0E5U0VBQUtpSmZUT0RDYUJKRFA0RHFCY0JBRUJOSEZ6b014QVFhSXg0bnBsdkFsQXZBZ0NBR2hrN2VvMjFnRUQyMm9QL2podjhCMUEzM2pJQmFpUUdBbzRkMlp3QWNoYUQvOXorQTlTUEFBQ2dac2FQV3dzSTVDdWVYd2IvQWRTVEFBQ2docXdGQkhMbCtRVlFYd0lBZ0JxeUZoRElVYXo5aStjWEFQVWtBQUNvcWIxVGJ0R0F2Rmo3QjFCdkFnQ0Ftb28rMnRHalhxYUJQSXdhL0FkUWV3SUFnQnJiUHp0Z0xTQlFlKzIxZjdPYkVnRDE1cTBTb01hc0JRUnlFR3YvaEpVQTllZEpEVkJ6c1JiUVFFQ2dycXo5QThpSEFBQWdBMllCQUhWMXo2RWJFZ0I1RUFBQVpDRFdhazNNOVNlQU9vbTFmd2IvQWVSREFBQ1FpWkdaSVQyMlFHM0U4OGphUDRDOGVKTUV5RVRjc28yYnNnM1VSRHlQM1A0RDVFVUFBSkNSV0F2b2hSdW9XanlIeHN3bUFjaU9BQUFnSSsyMWdGNjZnWXA1RGdIa1NRQUFrSmxZdDJVdElGQ1ZwMXZQSDJ2L0FQSWtBQURJa0xXQVFGVWVtaHBPQU9SSkFBQ1FvVmdMNkFZTzZEVnIvd0R5SmdBQXlOVEk5S0MxZ0VEUHRBZi9XZnNIa0RWdmpnQ1ppb0dBMWdJQ3ZUSiszTm8vZ053SkFBQXlaaTBnMEF2eG5Jbm5EUUI1RXdBQVpDeXFBUFpPR3NnRmRKZTFmd0ROSUFBQXlGd01CTFFXRU9pV0dQeG42Q2hBTXdnQUFCcGczOHhnQXVnR2cvOEFta01BQU5BQUJ4ZjZEQVFFT2k2ZUsrYU1BRFNIQUFDZ0ljYU9YbU10SU5BeDdjRi94dzMrQTJnU2I0b0FEUkVEQWNlT2JFNEFuUkNELzl6K0F6U0xBQUNnUWNhUFd3c0lyRjQ4Und6K0EyZ2VBUUJBdzFnTENLeVc1d2hBTXdrQUFCckdXa0JnTldMdFh6eEhBR2dlQVFCQUErMmRHallRRUZnUmEvOEFtc3ZiSVVBRFJmK3V0WURBY28wYS9BZlFhQUlBZ0liYVB6dWdDZ0JZc3ZiYVA4RWhRS041TXdSb0tHc0JnZVdJdFg5Q1E0Qm04NVFIYUxCWUMyZ2dJSEFwMXY0QmxFRUFBTkJ3MGRNTGNESDNITG9oQWRCOEFnQ0Fob3QxWGhOei9RbmdmR0x0bjhGL0FHVVFBQUFVWUdSbVNHOHY4RGJ4WExEMkQ2QWMzZ1lCQ21BdElIQSs4Vnh3K3c5UURnRUFRQ0ZpTGFBWGZXQlJQQS9HekFnQktJb0FBS0FRc1Jad1pIb3dBUVNIZjREeUNBQUFDakl4djhGYVFDQTkzWG9PV1BzSFVCNEJBRUJockFVRUhwb2FUZ0NVUndBQVVKaFlDMmdnSUpUTDJqK0FjZ2tBQUFvMGR2UWFhd0doUU8zQmY5YitBUlRMMng5QWdXSWdvQ29BS00vNGNXdi9BRW9tQUFBb2xMV0FVSmI0ZVkrZmV3REtKUUFBS0ZSVUFleWROQWdNU21IdEh3QUNBSUNDeFVCQWF3R2grV0x3bjdWL0FBZ0FBQXEzYjJZd0FjMW04QjhBUVFBQVVMaURDMzBHQWtLRHhjKzNlUjhBQkFFQUFOWUNRa08xQi84ZE4vZ1BnRE84N1FIUUhnZzRkbVJ6QXBvbEJ2KzUvUWRna1FBQWdMYngxaTNod1lWMUNXaUdPUGdiL0FmQTJRUUFBTHhwMy9SUUFwckJtazhBemlVQUFPQk4xZ0pDTThUYXYvaDVCb0N6Q1FBQWVJdTlVOE1HQWtMbXJQMEQ0SHk4NFFId0Z0RTNiQzBnNUd2VTREOEFMa0FBQU1EYjdKOGRVQVVBR1dxdi9SUGdBWEFCM3U0QWVCdHJBU0ZQc2ZaUGVBZkFoZmlFQU9DOFlpMmdnWUNRRDJ2L0FMZ1VBUUFBRnhTOXhFQWU3amwwUXdLQWl4RUFBSEJCc1Vac1lxNC9BZlVXYS84TS9nUGdVZ1FBQUZ6VXlNeVFubUtvc2ZqNXRQWVBnS1h3UmdmQVJWa0xDUFVXUDU5dS93RllDZ0VBQUpjVWF3RWRNS0IrNHVkeXpLd09BSlpJQUFEQUpjVmF3Skhwd1FUVWk4TS9BTXNoQUFCZ1NTYm1OMWdMQ0RYeWRPdm4wZG8vQUpaREFBREFrbGtMQ1BYeDBOUndBb0RsRUFBQXNHU3hGdEJBUUtpZXRYOEFySVFBQUlCbEdUdDZqYldBVUtIMjREOXIvd0JZQVc5d0FDeExEQVJVQlFEVkdUOXU3UjhBS3lNQUFHRFpyQVdFYXNUUFhmejhBY0JLQ0FBQVdMYW9BdGc3YVFBWjlKcTFmd0NzaGdBQWdCV0pnWURXQWtMdnhPQS9hLzhBV0EwQkFBQXJ0bTltTUFHOVlmQWZBS3NsQUFCZ3hRNHU5QmtJQ0QwUVAyZm1iZ0N3V2dJQUFGYkZXa0RvcnZiZ3YrTUcvd0d3ZXQ3WUFGaVZHQWc0ZG1SekFyb2pCdis1L1FlZ0V3UUFBS3phZU90Mjh1REN1Z1IwVmh6OERmNERvRk1FQUFCMHhMN3BvUVIwbG5XYkFIU1NBQUNBanJBV0VEb3IxdjdGenhVQWRJb0FBSUNPMlRzMWJDQWdkSWkxZndCMG1yYzBBRG9tK3BXdEJZVFZHelg0RDRBdUVBQUEwRkg3WndkVUFjQXF0TmYrQ2RJQTZBSnZhQUIwbExXQXNEcXg5aytJQmtBMytIUUJvT05pTGFDQmdMQjgxdjRCMEUwQ0FBQzZJbnFZZ2VXNTU5QU5DUUM2UlFBQVFGZkUrcktKdWY0RUxFMnMvVFA0RDRCdUVnQUEwRFVqTTBONm1XRUo0dWZFMmo4QXVzMWJHUUJkWXkwZ0xFMzhuTGo5QjZEYkJBQUFkRldzQlhTd2dRdUxuNDh4TXpNQTZBRUJBQUJkRldzQlI2WUhFM0IrRHY4QTlJb0FBSUN1bTVqZllDMGduTWZUclo4TGEvOEE2QlVCQUFBOVlTMGd2TjFEVThNSkFIcEZBQUJBVDhSYVFBTUI0UmVzL1FPZzF3UUFBUFRNMk5GcnJBV0U5TWJnUDJ2L0FPZ3hiMkVBOUV3TUJGUUZBQ21OSDdmMkQ0RGVFd0FBMEZNeDhkekJoNUxGOTMrc3h3U0FYaE1BQU5CemV5Y05QcU5jMXY0QlVCVUJBQUE5RndNQnJRV2tSREg0ejlvL0FLb2lBQUNnRW51dFA2TkFCdjhCVUNVQkFBQ1ZpRDVvQXdFcFNYeS9tMzhCUUpVRUFBQlV4bHBBU3RFZS9IZmM0RDhBcXVXdEM0REt4RnJBc1NPYkV6U2Q3UmNBMUlFQUFJQktqYmR1UlE4dXJFdlFWSEh3Ti9nUGdEb1FBQUJRdVgzVFF3bWFhczhMV3hNQTFJRUFBSURLV1F0SVU4WGF2NE1MZlFrQTZrQUFBRUF0eEZwQUF3RnBHbXYvQUtnVGIxb0ExSUsxZ0RUTnFNRi9BTlNNQUFDQTJ0Zy9PNkFLZ0VhSWczOU0vZ2VBT3ZHV0JVQnR4RnJBRVFNQmFRQ0hmd0RxU0FBQVFLM0V1alFEQWNtWnRYOEExSlVBQUlEYUdYVjdTc2J1T1hSREFvQTZFZ0FBVUR1eEZ0QU5Lam1LdFg4Ry93RlFWd0lBQUdvcGVxZ05CQ1FuOGYxcTdSOEFkZWJOQ29CYXNoYVEzTVQzcTl0L0FPcE1BQUJBYmNWYVFBY3FjbUR0SHdBNUVBQUFVRnRuMWdJT0pxZzdoMzhBY2lBQUFLRFdKdVkzV0F0SXJYMTNydC9RU2dDeUlBQUFvUGFzQmFUT0hwMFpTZ0NRQXdFQUFMVVhhd0VOQktTT3JQMERJQ2NDQUFDeU1IYjBHbXNCcVpYMjREOXIvd0RJaURjcEFMSVFBd0ZWQVZBbk1malA3VDhBT1JFQUFKQU5CeTdxSXI0UERmNERJRGNDQUFDeXNuZHlPRUhWclAwRElFY0NBQUN5RWdNQnJRV2tTakg0eiswL0FEa1NBQUNRbmIxVHFnQ29qc0YvQU9SS0FBQkFkcUwvMmtCQXFoRGZkK1pRQUpBckFRQUFXYklXa0Y2TGcvLys0d01KQUhMbHpRbUFMTVZhd0xFam14UDBpaTBVQU9ST0FBQkF0c1pidDdFSEY5WWw2RFpyL3dCb0FnRUFBRm5iTnoyVW9OdjJ2TEExQVVEdUJBQUFaTTFhUUxvdDF2NGRYT2hMQUpBN0FRQUEyWXUxZ0FZQzBpM1cvZ0hRRk42V0FNaWV0WUIweTZqQmZ3QTBpQUFBZ0ViWVB6dWdDb0NPaW9OL1RQNEhnS2J3cGdSQUk4UmF3QkVEQWVrZ2gzOEFta1lBQUVCanhKbzJBd0hwaEFPbitxejlBNkJ4QkFBQU5NcW9XMXM2NFA3RDF2NEIwRHdDQUFBYUpkWUN1cmxsTldMdG44Ri9BRFNSQUFDQXhvbmViUU1CV1luMjREOXIvd0JvS0c5SEFEU090WUNzVkZTUHVQMEhvS2tFQUFBMFVxd0ZkSkJqT2F6OUE2RHBCQUFBTk5LWnRZQ0RDWmJLNFIrQXBoTUFBTkJZRS9NYnJBVmtTYjQ3MTI5NEpBQ05Kd0FBb05Hc0JXUXBIcDBaU2dEUWRBSUFBQm90MWdJYUNNakZXUHNIUUNrRUFBQTAzdGpSYTZ3RjVMeXMvUU9nSk42R0FHaThHQWlvQ29EemljRi9idjhCS0lVQUFJQWlPT2h4cnZoK01QZ1BnSklJQUFBb3h0N0o0UVNMUnFZTi9nT2dMQUlBQUlvUkF3R3RCU1RFNEwrSitmNEVBQ1VSQUFCUWxMMVRxZ0JJQnY4QlVDUUJBQUJGaWI1dkF3SExObW9lQkFDRkVnQUFVQnhyQWNzVkIvOXZHZndIUUtHOC9RQlFuRmdMT0haa2M2STh0a0VBVURJQkFBQkZHajgra0E0dXJFdVV3OW8vQUVvbkFBQ2dXUHVzZ1N2S25oZTJKZ0FvMmRvRUFJV0t0WUJicm5nbDBYemZlbkZqT3JqUWx3Q2daQ29BQUNpYWt2QXlQTjBLZXdDZ2RBSUFBQUFBS0lBQUFBQUFBQW9nQUFBQUFJQUNDQUFBQUFDZ0FBSUFBQUFBS0lBQUFBQUFBQW9nQUFBQUFJQUNDQUFBQUFDZ0FBSUFBQUFBS0lBQUFBQUFBQW9nQUFBQUFJQUNDQUFBQUFDZ0FBSUFBQUFBS0lBQUFBQUFBQW9nQUFBQUFJQUNDQUFBQUFDZ0FBSUFBQUFBS0lBQUFBQUFBQW9nQUFBQUFJQUNDQUFBQUFDZ0FBSUFBQUFBS0lBQUFBQUFBQW9nQUFBQUFJQUNDQUFBQUFDZ0FBSUFBQUFBS0lBQUFBQUFBQW9nQUFBQUFJQUNDQUFBQUFBU05KOEFBQUFBQUFvZ0FBQUFBSUFDQ0FBQUFBQ2dBQUlBQUFBQUtJQUFBQUFBQUFvZ0FBQUFBSUFDQ0FBQUFBQ2dBQUlBQUFBQUtJQUFBQUFBQUFvZ0FBQUFBSUFDQ0FBQUFBQ2dBQUlBQUFBQUtJQUFBQUFBQUFvZ0FBQUFBSUFDQ0FBQUFBQ2dBQUlBQUFBQUtJQUFBQUFBQUFvZ0FBQUFBSUFDckUwQUFFQXQvZFc3Ly85VWhhOU1EcWR2dmJReGxlQzJqUyttZTRjT3B5cjgweC85andsNlNRVUFBQUFBRkVBQUFBQUFBQVVRQUFBQUFFQUJCQUFBQUFCUUFBRUFBQUFBRkVBQUFBQUFBQVd3QnBDZSt5Ly82WnVKL0Qzd2xZZlRrMC85VldKNUhuMzR5NG1VVHN6TnA3bTV1ZlpmSDU2YWF2L1BrNU5uZm4yaDlldmhxZWxFYzMxNHh3ZlQzWGQ5TGxYaDkrNytRam84V2NiMzE2ZDJmaUw5ZHV1ckNwLzQ5RDlMQU5TUEFBQ2doOTUvNjNzVFMvT2pBejlwQndJL2J2MzYvV2QrMEFvR3B0T1BEdjRra2IvKy92NDB2R1VvMFYwYit0Zjdjd2JnTFFRQUFOVFN1N2ZmM1A0MVFwTlBmZkxNTFdZRUF0OTcrb2Z0UU9EN3JWOEZBZ0FBU3ljQUFDQWJjYVA1a1E5OXNQMFZEazlPdFFPQmJ6NzE3ZlM5WjM2WUFBQzRNQUVBQU5tSzh1YVAvMXA4ZmF3ZEJueDE5SWxXSVBBRE13UUFBTTVEQUFCQUkwUVlzT2UrejdmLytzbS8vSFlyRFBpYUlBQUE0Q3pXQUFMUU9GRVI4STAvL3c5cHo3MmZUOE5EZ3drQUFBRUFBQTBtQ0FBQStBVUJBQUNORjBIQW56M3k1ZlR4Mno2V0FBQktKUUFBb0FpTE13SWVmZmpMcWdFQWdDSUpBQUFveXZ0dmZXKzdHdURET3o2WUFBQktJZ0FBb0RoUkRmRFFnMTlNZCs2Nkl3RUFsRUlBQUVDeDd0ejE2ZlQ1M1o5TEFBQWxFQUFBVUxUZi91UW4ybHNDQUFDYVRnQUFRUEZpUzhEZUI3NllBQUNhVEFBQUFDMGYrZEFIVlFJQUFJMG1BQUNBTjBRbGdNR0FBRUJUQ1FBQTRDd3hHUEJUTzM4ckFRQTBqUUFBQU00UkljRHcwR0FDQUdnU0FRQUFuR05ELy9yMDBJT0dBZ0lBelNJQUFJRHplUGYybTl1VkFBQUFUU0VBQUlBTGlGa0FXZ0VBZ0tZUUFBREFCVVFyd0o3NzdrNEFBRTBnQUFDQWkzai9yZTlONzd2bHZRa0FJSGNDQUFDNGhEdDMzWkVBQUhJbkFBQ0FTMUFGQUFBMGdRQUFBSmJnSXgvNllBSUF5Tm5hQkVEUFBQbVgzMDZsbVp1ZlR5Zm01dEx3MEZCN3FGNTh2V3Y3dHZhdk9mbU4yLzYzOU5YUkoxcS9sL2tFQUpBakFRQTk5Ny84cjcrUmN2QmYvdE0zVXhXK092cTE5aUdEWm5wZzd5T0pNOXBCd0xhYld6ZnJ2NUxlZjh2LzNBNEY2aXorZVgvanRvK2xyNDkvSXdFQTVFZ0FBRUFsNGliOSs4LzhzUDBWaHJjTXBUdDNmYm9WQnJ5My9kZDE5T0VkdnlJQUFBQ3lKUUFBb0JZT1QwNmxCNzV5cGtJaWJ0by8xd29ENmhZRXhEREFxQVRRQmdBQTVNZ1FRQUJxNTV0UGZUdDk0dFAvck4wU1V6ZTJBUUFBdVJJQUFGQmJNUThqZ29Db0RxaUxxQUlBQU1pUkFBQ0FXb3ZELys5ODdnL1Nqdzc4Sk5YQisyNzU1UVFBa0NNQkFBQzFGejMzdjMvM0Yyb1JBcng3KzgzWnJUQUVBQWdDQUFDeUVDSEFIKzc1azFvTTROdFMweTBGQUFBWEl3QUFJQnRuTmdVOG5LcjJQMnk3S1FFQTVFWUFBRUJXdmpQeDkrbDdULzh3VlNuYUFBQUFjaU1BQUNBN1ZhOEgzTEpsU3dJQXlJMEFBSURzZlArWkgxWmFCWERkMEdBQ0FNaU5BQUNBTEgxbjR1OVNWV3dCQUFCeUpBQUFJRXN4QzZBcXc3WUFBQUFaRWdBQWtLWFlDQkJmQUFBc2pRQUFnR3o5Nk1DenFTcmFBQUNBM0FnQUFNaldpZm01VkpWK0FRQUFrQmtCQUFEWjBnSUFBTEIwQWdBQUFBQW9nQUFBZ0d5WnhnOEFzSFFDQUFDeVZXVUx3TnpjZkFJQXlJa0FBSUJzVlZrQmNFSUFBQUJrUmdBQVFMWTJyTzlQQUFBc2pRQUFnR3hkdDJVd1ZjSDJBUUFnUndJQUFMSzBvWDk5ZXRmMm0xTVZCQUFBUUk0RUFBQms2WDIzdkRkVjVhWDVrd2tBSURjQ0FBQ3k5T0VkdjVLcTh1TURCeE1BUUc0RUFBQmtaM2hvS0gzODF6NldxdktqQXo5SkFBQzVFUUFBa0owcUQvL0JDa0FBSUVjQ0FBQ3lFcmYvZCs3NmRLclM5NS81WVFJQXlJMEFBSUNzVkg3NGYvb0hDUUFnUndJQUFMSng1NjQ3S2kvLy85RkIvZjhBUUo0RUFBQms0ZU8zZmF6eTIvL3dOOS85K3dRQWtDTUJBQUMxRjRmL1BmZDlQbFV0aHYvcC93Y0FjclUyQVVDTlJkbC9IVzcrdy9jYy9nR0FqQWtBQUtpbG1QWWZ0Lzd2di9XOXFTNisrWmYvYndJQXlKVUFBSUJhV1Z6elYvV3d2M01kbnB4SzM1blEvdzhBNUVzQUFFRGxOcXhmbno3OG9WOUp2M0hieDJwMTQzODI1ZjhBUU80RUFBRDAxUERRWU5yUTM1L2V2ZjNtOU81dE42ZjN0UTc4OGRkMTk5WFJyeVVBZ0p3SkFBQjY2QnRQL1B0VXF1RXRReWxYVHo3MTdYUjRjam9CQU9STUFBRFFRemtmZ2t2bTloOEFhSUxMRXdCd1FYSDRkL3NQQURTQkFBQUFMaUFtLzM5OS9Cc0pBS0FKQkFBQWNBRVA3M3M4blppYlR3QUFUU0FBQUlEemlOTC83MHo4ZlFJQWFBb0JBQUNjSTByL3Z6cjZSQUlBYUJJQkFBQ2NKUTcvdjNmM0Z4SkF5ZnJYbkU1QTh3Z0FBT0FOMGU4ZmgzOVQvNEc2bUR0ZHpldDYvK1d2cFZJTXJYMGxWV0h1OUpvRXZTWUFBSUEzT1B3RGRUUDNXaldIeFA3TFZRQjAyOXhyam1MMG51ODZBR2g1NEN1UHBCOGYrRWtDb0t3S2dDMVhWRlVCNENoRzc2MU5BRkN3S1B0L1pOL2o2Y21udnAwQTZxYXFRK0sydmxPcEZGdXFhZ0Y0VFFzQXZTY0FBS0JZaXozL2J2NkJ1cHF2NkpDNDVZcFhVeW5XcjZtbTJtSCtkUlVBOUo3dk9nQ0tGTlArZitkei84TGhINmkxeVZldlNGV0lGb0JTNWdCc1g3ZVFxakQ1OGpzUzlKb0FBSURpZlAvcEg3UU8vMzlnNEI5UWUxV1dpVzliMS93MmdHMFZIZjVEVmVFT1pkTUNBRUJSSHQ3M2VQcjYrRGNTMVptYm0wdFY2ZS92Yi8yL1pRUS9HL3JYcHlwRWRRMmRNL2xxZGEvcjIvb1cwak0vdnlvMTJaYTFMNmVxVEwzaUtFYnZxUUFBb0FnL092Q1RkRWZyMXQvaHYzcHpjL09wS3RjTkRhWlNuQWs3eU4xOGhidml0NytqK1JVQXQxejE4MVNWeVZkVUFOQjdZaWNBR2kwRy9YMTkvQy9TVjBlZlNGRFZyWGdWaG9lR1VoVk9WQmp3Tk5HQlUzMnBLanMyekxXdXFWT2piYSt3emVIZ1FuWC9iaW1YQUFDQXh2cWJpYjlQait4N1RLOS96Ynd3VmQyL2orRXQxUnlLUzFKbGkwY1R6VmU0S3o0R0FkNXk1Y25HdGdHMGYzOVhuVXhWT0xDd0xrRVZCQUFBTkU0TStYdThkZVAvL1dkK21PQnNKUVVBNzk1K2M2ckNTL1BWSEtpYUtzckU1MW9oUUZVVCtlT0EzTlFBWUVkL2RXSFZsQUdBVkVRQUFFQWpSTm54ZHliK0xqMzVsOTkyOEsrNUtvZkVWVlVXMzJ2UjZsQlZ1OFBrNUdTaXN5SUVxR3BWM1czdmZER05IYjAyTlZHVkFVQ1ZyUjJVVFFBQVFOWml1RjhjL0dPNG45N2pmTVMvcXlvT3FGWGRpdmZhdTdkVjkvdDhRY3ROeDBXdmVGVUJ3SllyWG1sa0c4QlE2L2Uxby85RXFzcEJMUUJVeEJZQUFMSVdKZDBPLy9tcHFrODhRb2ZoTGMzZkJQQ3VDb01PYXdBN3IrcCs4VjNYSEVsTmMrdVYxYmFxUEhPeW5JR2sxSXNBQUlDc3hZSHVpL2ZlbmNqTGp3NDhtNnJ5L2x2ZW01cnUvYmY4Y3FxS01LN3pxajRzeGh5QXVERnZrczlVR0dwRW9ETjMyakdNYXZqT0F5QjdIL25RQjlPbmR2NVdJaDhuNXF2cnZTMmhEZURkMjI5S1Zmbnh3WjhrT212cWxiV1ZIeGgzYldwT0ZVRE1OZGhTWWFCeFVQOC9GUklBQU5BSWQrNzZkQm9lYW41cGQxUEU3SWFxZkhqSHI2UW1pMEdIVlcwN2lOdC9GUUNkTjNkNlRlV0h4dHMydnRpZUJaQzdxR1Q0VE1VdERVM2Rxa0FlREFFRUtFRDA1SGF6THpjT0cxV3ZWNHRXZ0QzMzNaMSsvKzR2Sk9xdjBrMEFyZS9WOTkzeTNzWnVpL2p3aHo2WXF2TGpBd2NUM1hGZ29hK3luZldMN3RvOG5UNzMzQytsbk1VOGd5MFZ0ek1JQUtpU0FBQ2dBRTgrOWUzMDFkRW5VcmU4YTl2TjZXdGYvWGVwYXUrLzliM3RWb0N2ai85Rm90NStkTEM2R1FBaHZsZWFHZ0Q4NW0wZlMxWDVrZkwvcnBtWTYwODdCNDZsS20zck81VjJiNTVLSXpONXJ0T00wdi80cWxMMC84ZGFSNmlLRmdBQVZpMTZmcjg2K3JWVUIxb0I4aEFWQUZXV2lqZDFaa1NVLzFlNUFlQjdUemN6VkttRGd6VVpITGR6WUxieVEvUktST24vN3NIcU4xUk16RzFJVUNVQkFBQWRFUlVHVmZaMUw0cFdnSWNlL0dLaS9pWXJiQU9JNzVQM05YQWJRQVJnVlZJQjBEMHhCNkF1cStOMkQwNm5iZXRPcFZ6RTRmL2g2NTlML1plZlRsV0xTZzZva2dBQWdJNzUwbGNlU1hVUVU5NnJQZ2h4YWQ5NzVnZXBTbmZ1dWlNMVNkeitmL3pYcWl2L1B6TnJaRHJSUFJQejlUZzg5bC8rV25yNG4vd3NpeEJnOGZCZmRkOS9pTkwvZ3dzMkFGQXRBUUFBSFZPdlZvQTcyck1KcUsvL2RxRDZPUUJOcWdLb092VDZieFhQZFNqQnhJbisydXlQWHd3QmRxeXZicVhucGRUcDhCK1UvMU1IQWdBQU9xb3VyUURoM3p6NFIrMVNiK3FwRGtQNDdyL3Y4NDM0SHFuNjlqLzg1Ky8rWGFLNzZyQU84R3dSQWp5dzlWQjdzbjdkUkREeCtJM1AxdWJ3SC9ZZkgwaFFOUUVBQUIxWGwxYUFXUGYyenovVHJETHZKdW4yZXNxbGlPK1JUKzM4Uk1yZG5sYVFVYldxV3pwS01YcjAybFEzbjJrRkFISFRQbFNEdy9iNnkwKzMxeFZHTUZHSG52OUZUNSs4eXZSL2FrRUFBRURIMWFrVjRMYy8rWWxHRG50cml1L1ZvQW9nMmtWeS9oNkpmLzVvWjZpUy92L2VpUjN5ZFdrRE9Oc3RWNTFNVDl4MHNGME5VRVVRRUFmLytMLzl4TTBIMHUwVnIwczhuMis5dERGQkhRZ0FBT2lLT3JVQ05LWE11NG5xc2pZdXZrZHlYQjhaY3k3cU1QRHlPeFBLLzN0cGZIWlRxcXZGYW9CN2h3NzNKQWc0KytBZi83ZnJkT3UvS0c3K254SUFVQk1DQUFDNjVnLzMvRW1sdTk0WGFRV29yLzljazROamZJL0Urc2ljZ3FMbys0ODVGM1h3TjkvOSswVHY3SjhkcUdVVndLTG91Nzl0NDR2dGlvQUlBMjU3NTRzZERRUGkwQjkvLy9oNzEvbmd2MmlzaG0wYmxHdHRBb0F1aWJMZ2FBVzQrNjdQcGFwRkswRGNVdFpoOEJ5L0VBRlJWQUZVWGNJZVluM2tvdzkvT2YzKzNWK29SWEIxTVhINC83TkgvblU3dUtoYS9Kejd1ZXF0R0FZWVZRQjFITDUzcm1nTmlLOXdaZzNldW5SZ29hKzlEaTlDalBqL203cEFiM3lFQmpGb2NNc1ZyN2ErWGs3YjNyR1FibTM5dmVvd2EyQ3AzUDVUTndJQUFMcnE2K1BmU0IvZThTdTFPT0RGRGU5dmZmcC9yLzNocmpRUnpOVGgreU5FQ1BBZkgvOTM2ZmMrLzRWMGVLcWVQZTFSOWg4My8zVTQvSWM2ekhFb1VWUUI3Qnc0VnV1YjczTkZaVUI4N2VpdjcrckFUblA3VDkxb0FRQ2c2eDdZKzBndER0MVIzdjNGZSs5TzFNczNuL3AyclVLWk9Gai8yU05mcnVWZ3dFL3QvSzMwdGEvK3U5b2Mvc09mdDBJK2VtK3hDb0Q2Y3Z0UEhRa0FBT2k2eFZhQU92akloejdZUGtSUkgzSDRyOXNRdWNVUUlDYnMxMEdVL0VkN3d0MTMzWm5xSkFaOS9yZ213ejVMVlBkWkFLVnorMDhkZVdJQTBCUFJDbENYaWU4eE5UM0hpZTlOOXVSZmZqdlZVWHl2Zk9PSmY1OCtmdHZIVWhVMnJGL2ZEaUgrWSt2V3Z5NXRFbWY3dXR2L1NrVVZ3TWgwZmFwQitJV25YdHpvOXA5YUVnQUEwRE4xYWdYWWM1OVdnRHFKSVhKMUNZak9GZFVBZSs3Ny9KdEJRQnpLdTIzeDRQOFhmLzRmMmlGRUhiY1RSR1hQazAvVk03Z3BTUnd5bnpsNVZhSStvdlIvN0pqYmYrcEpBQUJBejlTcEZTQnVVN1VDMUV2ZEQ1T0xRVUFjeXZmYysvbjBrUjBmN0dnWUVGVXBuOXI1aVhhcC8xLzlQLzkzYlEvK2l4eis2MlB2MUxCV2dCcUowdi9KQzJ3MmdLclpBZ0JBVDlWcEswQWNzTDd6M2IrdDdiVDMwc1F3d005RmUwYU5CdHlkVHh6S1AvNXJIMnQvaGVpRGIzOGRQTk1QSDFVdUVYYWRtRDkvdFVzYzlEZjA5N2MzRHZTMy9sN3Yzblp6KytlaDdyL3ZzN245cjVmMmpmT1J6V24zNEZTaVdrci9xVHNCQUFBOUY2MEFzV3F0NnR2TnhWYUEyUHRPUFR3KytrUzZ2M1hMbnBNNHlNZFhTZUx3ZjNoU2NGWW40OGNIMHJhK1UrbTJkNzZZcUVZRU1TTXpaakpRYjJxRkFPaTV1clVDUkNVQTlmRE45c0hTTFdhZG5mbjVmU0pSUHlQVGcwclBLeEl0R1BjY3VrRXJCclhuT3hTQVN0UnJLOEFkNlYzYnlyckJyYk12ZmVXUlJIMDUvTmRYYkFXSVE2Z1FvUGYySHI3T256dFpFQUFBVUptNmJBVUkvK2JCUDZyMXdMV1MxSGtqUU9taTlGL3ZmNzNGSVhUUEMxdmRSUGZRNk5GcjA4UjhmNEljZURJQVVKazZ0UUxFQUxaLy9wazdFdlZRcDNDSU0rTGZSMTErWHJtNGd3dDk2ZTZmS1VmdmhUajh4OVIveUlXbkFnQ1ZxbE1yd0c5LzhoUHBmYmRVdjUyQWVvVkRuQkgvUGd6K3k0Y1FvUHNjL3NtUkp3SUFsYXZUYlc5TW9OY0tVQTkxQ29kS0YyWC84ZStEdkFnQnVzZmhuMXg1R2dCUU9hMEFYTWk5ZXg2MEZhQmlxakh5RmlIQTcvN2pUUWJVZGRDK21TR0hmN0lsQUFDZ0ZyUUNjRDVSR2ZKL2ZQRlB6QU9vU1B5NS85N2RYMUQ2bjdrNC9NZDJnSU1MNnhJckY1VVVVVkd4ZjNZZ1FhNEVBQURVaGxZQXp1ZkhCMytTSHQ3M2VLTDM5UDAzUjRRQW4vdkhtOXFsNnl6ZmdWTm5LaW1lK2ZsVkNYSW1BQUNnTnVyV0N2REZlKzlPMU1NM24vcTJNdlFlaXo5dmZmL05FNlhyZXllSHRRUXN3L2pzcHZTN3ovMlNQek1hUVFBQVFLM1VxUlhnSXgvNllQclV6dDlLMU1OWFI1OFFBdlJJL0RuSG56Zk45TlJMRzlzdEFmRXJGeFlIL2lqNUg1a1pUTkFVQWdBQWFxZE9yUUIzN3ZwMEdoN3k4bGNYUW9EdWMvZ3ZReHh1b3hKQU5jRDVSYXVFa24rYVNBQUFRTzNVcVJVZzVnRHN1VThyUUowSUFickg0Yjg4VVFWd3g3UGIwc2owa0NDZzVlbVRWN1gvUEtKVnd2cEVtc2gzTlFDMVZLZFdnUGZmK2w2dEFEVVRoMVNEQVRzci9qd2Qvc3MxZm55ZzNSWVFOOThsQmdGeDhJOXkvL2d6RUlUUVpBSUFBR3BMS3dBWEV5SFJIWGYrUWJ0aWhKVnJyL3I3L0JjTS9LTjk4STJiN3pnRWw5QWFFRGY4VDcyNDhjMkR2M0ovU2lBQUFLQzI0bUQzd0ZjZVRuV2dGYUNlWWtYZzc5MzlyOUtQRHZ3a3NYeng1L1k3bi9zWDZmdlAxS1BhaG5xSWcvOWlhOENlNTdjMmJsaGczUGJIWUw4N2ZySTk3WjBhZHZDbktBSUFBR3J0T3hOL24vN211MytmNmtBclFEMUZVUFE3bi9zRGN3R1c2ZXZqZjVGKy8rNHZ0UDc4cGhOY3lNVDhoblkxUUlRQjhXc2Nubk1VLzl6UjN2RHAxdThqYnZ0anRaOGVmMHEwTmdGQXpUMjQ5K0hXNGZzL3RHL2hxM2IzWFhlbTd6MzlnL2JOTS9VUy9ldFBQdlZYNmM4ZS90ZHBlTXRRNHZ3aU1QblNWeDV4NjgreVJGWEE1Q3NiMjlVQS9aZWZUcmRjT1o5MmJKaEwyOWFkU3R2WExhUzZpWC9lT1BUL29IVzdQekczd1dFZjNpQUFBS0Qyb2tjNVdnRWVldkNMcVE3K3pZTi8xTDV4cnN0OEFuNGhEcmVmK1BRL1M1L2ErWW4wMjYwdlFjQXZ4UGRyM1BwSHI3L3ZYVllqRHROUkdSQmZZVEVRMk5hMzBQcjFaT3BmODFwUFE0RTQ3QjlZV0plbVhubEhldWJrbGVtWm42OTM0SWNMRUFBQWtJWEZWb0NQZk9pRHFXcHhxUHpubjdralBUSmlDbjFkeFNFM3ZtZGllT1BIYi90WUt0MzNuLzVCK3RMZVI1VDcweFhuQmdJaFFvR2hLMTVPVzlhK2tyYTg0NVUwdFBiVnRQN3kxOUtXSzE1cC8rZm4vbnFodisvY2EydmFmeDJIL01YLytTY3ZyMnYvdW5qb2Q5aUhwUk1BQUpDTk9yVUMvUFluUDlFNllQNmRNdW9hT3pORThwRjJhMENwUVVBYy9COXYvZjU5bjlKcjdjUDZRbDg2MlBwS0NrNmdOc1JsQUdSanNSV2dMdTYvNy9PMUNDTzR1TVVnSUZvRG5uenEyNDFmRzNpbTFQOGI3ZFYrc1NIQjRSK0FSU29BQU1oS2xIWEhJYTRPdDdsYUFmS3lHQVNFMzJoOS8vem1iZjgwdmUvV1gwNU5FYmY5ZjlQNitmaG02K2REano4QTV5TUFBQ0E3ait4N1BMMy9sdmZXWXNDYlZvQTh4U0U1dnVKNzZNTTdQcGcrMHZyS01ReUlRLy8zV3Q5N1QvN2x0OVBoS2YzOUFGeWNBQUF1b0tvU1ViYzJ6ZWI3cWpQaTl4TnJ6S0lFdnc3dS9Pd2Q2ZDR2UHVqbk4wUHhNeG5sOHZFVlljRDdXc0ZTaEFIdjNuNXpMVGNJeEQ5dlZNSDh0d00vU2YrNUZUejVuZ05nT1M3N3dFZC8vZlVFQU1CYlJBRHc3bTAzcGZmZitzdnRYOSsxZlZ0UFp6N0VZZjlIcllOKzNPeC9yM1hUSDFVbUR2d0FySVlBQUFCZ2lTSUFlTmUybTl1L1JwWEFodjcrTkR3MCtHWXdzRmcxY0xIcWdUakV6ODNOdGY4NkR2a3ZURTZudWZuNTFxOVQ3ZjhzRHYyVFUxTU8rd0IwbkFBQUFBQUFDbUFOSUFBQUFCUkFBQUFBQUFBRkVBQUFBQUJBQVFRQUFBQUFVQUFCQUFBQUFCUkFBQUFBQUFBRkVBQUFBQUJBQVFRQUFBQUFVQUFCQUFBQUFCUkFBQUFBQUFBRkVBQUFBQUJBQVFRQUFBQUFVQUFCQUFBQUFCUkFBQUFBQUFBRkVBQUFBQUJBQVFRQUFBQUFVQUFCQUFBQUFCUkFBQUFBQUFBRkVBQUFBQUJBQVFRQUFBQUFVQUFCQUFBQUFCUkFBQUFBQUFBRkVBQUFBQUJBQVFRQUFBQUFVQUFCQUFBQUFCUkFBQUFBQUFBRkVBQUFBQUJBQVFRQUFBQUFVQUFCQUFBQUFCUkFBQUFBQUFBRkVBQUFBQUJBQVFRQUFBQUFVQUFCQUFBQUFCUkFBQUFBQUFBRkVBQUFBQUJBQVFRQUFBQUFVQUFCQUFBQUFCUkFBQUFBQUFBRkVBQUFBQUJBQVFRQUFBQUFVQUFCQUFBQUFCUkFBQUFBQUFBRkVBQUFBQUJBQVFRQUFBQUFVQUFCQUFBQUFCUkFBQUFBQUFBRkVBQUFBQUJBQVFRQUFBQUFVQUFCQUFBQUFCUkFBQUFBQUFBRkVBQUFBQUJBQVFRQUFBQUFVQUFCQUFBQUFCUkFBQUFBQUFBRkVBQUFBQUJBQVFRQUFBQUFVQUFCQUFBQUFCUkFBQUFBQUFBRkVBQUFBQUJBQVFRQUFBQUFVQUFCQUFBQUFCUkFBQUFBQUFBRkVBQUFBQUJBQVFRQUFBQUFVQUFCQUFBQUFCUkFBQUFBQUFBRkVBQUFBQUJBQVFRQUFBQUFVQUFCQUFBQUFCUkFBQUFBQUFBRkVBQUFBQUJBQVFRQUFBQUFVQUFCQUFBQUFCUkFBQUFBQUFBRkVBQUFBQUJBQVFRQUFBQUFVQUFCQUFBQUFCUkFBQUFBQUFBRkVBQUFBQUJBQVFRQUFBQUFVQUFCQUFBQUFCUkFBQUFBQUFBRkVBQUFBQUJBQVFRQUFBQUFVQUFCQUFEL3ZSMDdFQUFBQUFBUTVHODl5SVVSQUFBREFnQUFBQUFHQkFBQUFBQU1DQUFBQUFBWUVBQUFBQUF3SUFBQUFBQmdRQUFBQUFEQWdBQUFBQUNBQVFFQUFBQUFBd0lBQUFBQUJnUUFBQUFBREFnQUFBQUFHQkFBQUFBQU1DQUFBQUFBWUVBQUFBQUF3SUFBQUFBQWdBRUJBQUFBQUFNQ0FBQUFBQVlFQUFBQUFBd0lBQUFBQUJnUUFBQUFBREFnQUFBQUFHQkFBQUFBQU1DQUFBQUFBSUFCQVFBQUFBQURBZ0FBQUFBR0JBQUFBQUFNQ0FBQUFBQVlFQUFBQUFBd0lBQUFBQUJnSURQSTh6U0ZiYmxjQUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIkZJRE9fMl8wIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiJiYjg3OGQ3YmNmNTQ0Nzg0YjM5MDM1NzAzMDQ5NzA0MyIsIm9wdGlvbnMiOnsicGxhdCI6dHJ1ZSwicmsiOnRydWUsInVwIjp0cnVlLCJ1diI6dHJ1ZX0sIm1heE1zZ1NpemUiOjIwNDgsInBpblV2QXV0aFByb3RvY29scyI6WzFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjEwMCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoxMjgsInRyYW5zcG9ydHMiOlsiaW50ZXJuYWwiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fV0sImZpcm13YXJlVmVyc2lvbiI6MX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wOC0yNiJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDgtMjYifSx7ImFhZ3VpZCI6ImQ0MWY1YTY5LWI4MTctNDE0NC1hMTNjLTllYmQ2ZDkyNTRkNiIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiZDQxZjVhNjktYjgxNy00MTQ0LWExM2MtOWViZDZkOTI1NGQ2IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkFUS2V5LkNhcmQgQ1RBUDIuMCJ9LCJkZXNjcmlwdGlvbiI6IkFUS2V5LkNhcmQgQ1RBUDIuMCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMDAwMDM5LCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwiaXNGcmVzaFVzZXJWZXJpZmljYXRpb25SZXF1aXJlZCI6dHJ1ZSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQnpEQ0NBWEdnQXdJQkFnSUJBVEFLQmdncWhrak9QUVFEQWpCaU1Rc3dDUVlEVlFRR0V3SlRSVEVTTUJBR0ExVUVDZ3dKUVZSTFpYbERRVEF3TVNJd0lBWURWUVFMREJsQmRYUm9aVzUwYVdOaGRHOXlJRUYwZEdWemRHRjBhVzl1TVJzd0dRWURWUVFERXhKQmRYUm9aVzUwY21WdVpDQkRRU0F3TURBd0lCY05NVFl3TWpJMk1EZ3hNVEEyV2hnUE1qQTFNREF5TWpVd09ERXhNRFphTUdJeEN6QUpCZ05WQkFZVEFsTkZNUkl3RUFZRFZRUUtEQWxCVkV0bGVVTkJNREF4SWpBZ0JnTlZCQXNNR1VGMWRHaGxiblJwWTJGMGIzSWdRWFIwWlhOMFlYUnBiMjR4R3pBWkJnTlZCQU1URWtGMWRHaGxiblJ5Wlc1a0lFTkJJREF3TURCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQkFKY1dxZUN4Z2E5S0piRk8yVFpkamNncnRaQWdmaThUWEt1K3Y1bGNSNWNlYjVHSll4eW9Damh1ZUVTTDNkZG1NSWtwR3loc0VFdGZGVXlCd3N5RlZDakZqQVVNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3Q2dZSUtvWkl6ajBFQXdJRFNRQXdSZ0loQUw0VGJQMDBzRU5iVEVYR29hZ002SGtsMlhJRHJ4Z0tiSHdvdy85R2liWVRBaUVBdWRJbTdFR3FmeWE4UXlnS2Nia1FmcXJ3ZWZZbkJ2WktJMHh3bi9rS1d4ND0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBRHdBQUFBOENBWUFBQUE2L05seUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFDeEVBQUFzUkFYOWtYNUVBQUFVMFNVUkJWR2hEN1ZwYmM5TkdGRDYyYk1XT0x6aTJrd0oyTHBBV1NndDBJRUJ2VDMzdGRLWXo3VnQvWUI4NncyL2dwWjAyaFlkT0FrK0ZhU0JwSURlSDJDVyt5ejNmYXJlUjA5aXlva3M4anIrWk05YXV0T3Y5OU8zWmM3UlM2S2VWdFE2ZEk0VGw3N25CbVBDb1kweDQxREVtUE9vWUtBN1htbTB5YUxqRGRaaENGSXRxc3RRYnRvUkI5dnViYzZSSHd0UVpVczZoRUZHalpkRERwNjlzU2R0T2FTaXJheHBGd21HS2FzTnBHSnZPdjRQTXdvRjh1RE9zMGxvdzZCaHRwL1JoczBVLzNMNUNVWjdTd1BQZENtMi9xNUtHZVhTR2FEUEJtVVNjM3MrblJMblphdE9QSzJzMEdZMkljaTg0SnZ6cnl4MzZjNi9DMCtoc0NiZU1EbjJRUzlIbjg5T2lQQ2hoeDJFcHpNcUM3RW0rRktSaERCaUxVemdtN0JZR1Q4VTJxd1BEY2RBSWxEQkl4aUlhcFNlaXduQ011aUFSR0dHc29tM0RvRzgvbXFXdlB5d0l3ekhxZ293Q2dSRnVzcEszTGs3SjBoRlFoM05CSVJEQ1VMREZTdDYrOUgvQ3FNTzVvRlFPaERBVS9IZ21JMHRFN3hvdHFuSzRVOEE1aEprZzREdGhLR2V3Z3ZlS09WbER0UEo2bi83WTNKY2xvcVZDTmpDVmZTY001YTdsMDdKa2hxWG5wYkl3UlRERThmVDZkRG9RbFgwbHJIeDN5YUx1S3FzYkRvV0ZyYnc1VXZudTVWd2dLdnRLR0RGMmtkTS9QTTBvckc2OXBTZ3lOYmJWTjI5bExZbnNDZGY2SFpkOUl3eWw2dTAyUFNqbVpRM1JzNjE5Zmt3M3A3QXdXYWR3djVBVGJmeFUyVGZDZUpwWnlDU0ZjZ3BQL2k2Unhtb2JyQ0lNeDA4MlN2SXNrYzZaRjlxZ3JWL3doVEFVYXJRTittek9mSklCWHV5VkthVkhLTW1Xa0liajFFU0V6MVhrVlVRUFpuT2lyVjhxKzBJWUNzMm1KN3UyV3haemFmcnU1ang5YzZQWVphaUQ3eXBNNmxFcWNsdS9WUGFjTUpScHNrTFdsZGtwbHRpWDBZY2ZLbnRPR0l0c2dSVzZFTk5salhOazRycm93NDhGMi9HT3gvS3JYWHBScW5RdFJsWWdyT0M1M0JTbjB4V1M2cXphVjFmZW84c1hKa1Y1OCtDUUh2MjFSUk9XdmhDTGVWai85YUgxMkZuQkRGak1wdWpUT1RNSytMYmowUS9Jb3VMc3QxZW5rclF3bFJBWkZrakNINFVKeWF6M1YyNEd5UE80Rm0zUUZuMmdMNjgzQ1R3akRIK3I4VjMrY242YTdzL214UW85bDBtSWVtekZtSVlycllxWmRlbzhya1VidEVVZlgvQXYrdlRTbHowakRQR3k3SHY1UkV6V0VQMjh0dDF6NnArRUtFLy9YMTd1eUJMUmRESW0rdlRTbHowaGpQRTBPRU5DUHF5dy9VK1Z5dlZXbDU1MmdOOGUxQnJjdGlacmlPNWN5cksvc3NxeTdCYmVFT1lwbCtMNFdaQ0xFYkM4dmlmZUJpQ0ZIQlM0Rm04NUhtL3N5aHFpSWsveEpQZnQxYlQyaEREZTY5emxaMXFGMG1HZFN0VzY5RmxuUUp0ZHRHZFR1TU45SS92eUFxNEpZeFhWdFJETjg2cXE4TnY2RG9jYXpaRzZDbWlEdHN2clJ5b3ZjTi9pM1pFSEtyc21qRHVQRlZXaExIeXczak4rRGdLMDNXSS9SbDhLOXp4UzJSVmgzSEdvY1pVVEFBVW9FNU5KaWh0TWNCKy9iK3pKa3BtTEkwRnhxN0tya1NIYitjU3lFNG5OdWRlVnFvaXBib0dYZFp2bFE5R253cTJMR2ZHZmJuQnF3bGcxeFM1Rk5rbDFUZzd3Zkx2TXZvdTZmcjVyamN2OVlqVDZ3UG5IRmwrK01aTVJieXZjcU93cWx3YnBHcS9RWmlRMkNWaHo1K1BBUU9NODRJZ2sybUsxcW55emVzMEk5STgyYVg0UXdUR3V3eGNKVGM2M3NlRVhlQzRORlpEdnh2bFBZUDNJQWhnd0NKWnJUV0g5eUFMb0grZHhiWVdUbUFQK0JkbCtNOGdPcmdpZkJpQ0FWUmpXajZ3Q3lLbnJZVzdJQW80Slk0cGhPbUh4T0V2REdFN2p5K05QSG83ak9PRmhoYWVMbGx1L0NRS0RqdEdXTUw1d3c2TWZ0bDVPOHFWaE1Jd05hU2ZHYWdmYktRMmNxMDhQUnczRHZSTDVnREhoVWNlWThLaGpUSGkwUWZRdjNXeHdxWndHMDJ3QUFBQUFTVVZPUks1Q1lJST0iLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xX1BSRSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiZDQxZjVhNjliODE3NDE0NGExM2M5ZWJkNmQ5MjU0ZDYiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsInV2Ijp0cnVlLCJiaW9FbnJvbGwiOnRydWUsInVzZXJWZXJpZmljYXRpb25NZ210UHJldmlldyI6dHJ1ZSwidXZCaW9FbnJvbGwiOnRydWUsImNyZWRNZ210Ijp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWV9LCJtYXhNc2dTaXplIjoyMDQ4LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0IjoyMCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoxMjgsInRyYW5zcG9ydHMiOlsiYmxlIiwidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN31dLCJmaXJtd2FyZVZlcnNpb24iOjMwMDAwMzl9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAxOS0wMi0yNiIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiQXV0aGVuVHJlbmQgVGVjaG5vbG9neSBJbmMuIEFUS2V5LmNhcmQiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDE4MDkyNjAxOSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4zLjQiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMC4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDE5LTAyLTI2In1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAxOS0wMi0yNiJ9LHsiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjg1YzhkNDY5MDY0NzU5MWI1YWM5Zjc1NmNkODc1ZTk4MDQ2MWZmYzQiLCJlNTU4NzhhYjBiMGE1ODRlNGMxYWRkNTYzM2UxOWMyNWYwODk5YTJkIiwiNDNjMGY4MDliMWQ3NTYxNmFhMTUyYzNjYmE1N2Q3MzQ2NTA1N2YyMSIsIjExYzA5MTBhOTc4MmJhM2QwYmQ4Zjg2YmJhNDllMjgyMzY1Y2MwNWMiLCJjOTM2YjY4ZWVjODU4MjMwZmUwNzQ2NDM1OWMxYjVjMGQ3ZWZlNDdkIiwiZDBkODQ0ZWRmZjExN2M5NzlhMDVmYTY2OGEzMjk2YmNlNjk2NTU5OCIsImVkNWJkYjk2MDExZTNkNDU3ZDg1OGFmMzllMzBhYzU3YzVhYzk1ZTYiXSwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiODVjOGQ0NjkwNjQ3NTkxYjVhYzlmNzU2Y2Q4NzVlOTgwNDYxZmZjNCIsImU1NTg3OGFiMGIwYTU4NGU0YzFhZGQ1NjMzZTE5YzI1ZjA4OTlhMmQiLCI0M2MwZjgwOWIxZDc1NjE2YWExNTJjM2NiYTU3ZDczNDY1MDU3ZjIxIiwiMTFjMDkxMGE5NzgyYmEzZDBiZDhmODZiYmE0OWUyODIzNjVjYzA1YyIsImM5MzZiNjhlZWM4NTgyMzBmZTA3NDY0MzU5YzFiNWMwZDdlZmU0N2QiLCJkMGQ4NDRlZGZmMTE3Yzk3OWEwNWZhNjY4YTMyOTZiY2U2OTY1NTk4IiwiZWQ1YmRiOTYwMTFlM2Q0NTdkODU4YWYzOWUzMGFjNTdjNWFjOTVlNiJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiU2VjdXJpdHkgS2V5IGJ5IFl1YmljbyB3aXRoIE5GQyJ9LCJkZXNjcmlwdGlvbiI6IlNlY3VyaXR5IEtleSBieSBZdWJpY28gd2l0aCBORkMiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MiwicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCIsInJlbW90ZV9oYW5kbGUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURIakNDQWdhZ0F3SUJBZ0lFRzBCVDl6QU5CZ2txaGtpRzl3MEJBUXNGQURBdU1Td3dLZ1lEVlFRREV5TlpkV0pwWTI4Z1ZUSkdJRkp2YjNRZ1EwRWdVMlZ5YVdGc0lEUTFOekl3TURZek1UQWdGdzB4TkRBNE1ERXdNREF3TURCYUdBOHlNRFV3TURrd05EQXdNREF3TUZvd0xqRXNNQ29HQTFVRUF4TWpXWFZpYVdOdklGVXlSaUJTYjI5MElFTkJJRk5sY21saGJDQTBOVGN5TURBMk16RXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFDL2p3WXVoQlZscWFpWVdFTXNyV0Zpc2dKK1B0TTkxZVNycEk0VEs3VTUzbXdDSWF3U0RIeTh2VW1rNU4yS0FqOWFidlQ5TlA1U01TMWhRaTN1c3hvWUdvblhRZ2ZPNlpYeVVBOWErS0FrcWRGbkJubHl1Z1NlQ09lcDhFZFpGZnNhUkZ0TWprd3o1R2N6MlB5NHZJWXZDZE1IUHR3YXowYlZ1em5ldWVJRXo2VG5RakU2M1JkdDJ6YnduZWJ3VEc1WnliZVdTd2J6eStCSjM0WkhjVWhQQVk4OXlKUVh1RTBJek1aRmNFQmJQTlJiV0VDUktnanEvL3FUOW5tRE9GVmxTUkN0MndpcVBTemx1d24rditzdVFFQnNValRHTUVkMjV0S1hYVGtOVzIxd0lXYnhlU3lVb1RYd0x2R1M2eGx3UVNnTnBrMnFYWXdmOGlYZzdWV1pBZ01CQUFHalFqQkFNQjBHQTFVZERnUVdCQlFnSXZ6MGJOR0poamdwVG9rc3lLcFA5eHY5b0RBUEJnTlZIUk1FQ0RBR0FRSC9BZ0VBTUE0R0ExVWREd0VCL3dRRUF3SUJCakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBanZqdU9NRFNhK0pYRkNMeUJLc3ljWHRCVlpzSjRVZTNMYmFFc1BZNE1ZTi9oSVE1Wk01cDdFamZjbk1HNEN0WWtOc2ZOSGMwQWhCTGRxNDVyblQ4N3EvNk8zdlVFdE5NYWZiaFU2a3RoWDdZKzlYRk45TnBtWXhyK2VrVlk1eE94aThoOUpESWdvTVA0VkIxdVMwYXVuTDFJR3FyTm9vTDltbUZuTDJrTFZWZWU2L1ZSNkM1K0tTVENNQ1dwcE11SklaSUkydjlvNGRrb1o4WTdRUmpRbExmWXpkM3FHdEtidzd4YUYxVXNHLzV4VWIvQnR3YjJYMmc0SW5waUIveXQvM0NwUVhwaVdYL0s0bUJ2VUtpR24wNVpzcWVZMWd4NGcweExCcWNVOXBzbXlQeksrVnNndzJqZVJRNUpsS0R5cUUwaGViZkMxdHZGdTBDQ3JKRmN3PT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZkNBWUFBQUNHVnMrTUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFIWVlBQUIyR0FWMmlFNEVBQUFiTlNVUkJWRmhIcFZkN1ROVjFGRC8zZDU5d2VRU0lnUzlBUUFYY0ZMQVFaaTlmcGVWejF0WS9XVFpyNVd4cGM3VzVrbkxhNWpJM1o4NXNyUzJuTTJzanRXd1pTN0lVSDRINHhDbkVReDREQVpGNzRWN3VzODg1djkvbEluQnZWSi9CNFB2OW51LzVudS81bnZNNTU2ZnpBL1F2MEhiL0lyWDNWRktQbzQ1Y25tNGluVUlXWXdMRlJtWlFVdXdqRkcvTjFpUkhoMUVaME5SVlJ1ZHF0MUJkKzJuU0t5Uy9PaHlzMCtsazNlLzNrUTlxdkQ0WlV0YTRWVlNVdVkwZWlweWlUaEFmb2NvT1JWZ0R1dXczcUtSaUFkM3JiY0V0alRqWUlvZjZXYUhzQ216VlBXQ014K2NnaDh0THFXTUthTVdzVWpMcW8yUnRKSVEwb096bWVycFF1NGVzWmdzT05rR3hIN2Qwa2R2VFQxN3M0T01VN1ZJOFpoamdHYU0rQXE5aUVOdThQaWYxdWR6MDdNd3ZLV2Y4R2xWb0NFWTA0UEM1V2RUYVhZRmJSOHZOdkw1KzNLZ2ZiNXhOTXlhOVJhbUppeW5hTWxHVFZ0RmxyNmJhOXUrcHFuRVg0dU11UlJnalNZRWhyTjd1dEZGZTZscWFsN05ma3c1aW1BR0h5blBwYms4Vm1ZMHhzdG5wdGxGQ1ZDWXR6VHVCTjgzUXBNTGpUdGV2ZFB6U1VuSjdlOG1ranhaMzlmWGJLRGZsZFpxYnZVK1RVZ0duQlZGNmZRMmlQSGc0VzE2VVdVd3Z6YmsxNnNNWkUrUG4wcHZ6N0pTZXVBeWVzOGxjcENtYUt1by9wK3FXcjJVY3dJQUhXcnZQMFlFemhYQXRMQWJzc0hocDdpR2FtdnlpalA4cnlxclhVV1g5WG9vd3h5QXVmTkJycDQzUE9CRlhabGtmOE1EUmlxY3B5b3dBd3B1ejJ4K2ZXdnovRHRkZTlzbXN6eWd0Y1I2QzF3YmR6Qmw2T2xxNVdOWVk0b0dhdGhKTXJrVEV4MGpBUlNIQVZzKzVyWWtRTlhiK1FnZlBMc1E2Z1h5SW5zcmVRZm1wbTdSVkZZZkw4Nm4xZmlVT2tZdlNoa1VQeHZidWt6b3k2SzFpaE0xaG8zWHpXNkV2U2ZYQStkcGlXR2FXZCtkb1h6THptR3dLWUZMQ0FzUkFsUEJBaE1sQ0ZYVTd0QlVWUHI4SGdWY0pIV3ErRjAwcGxyK0RNVGRyUDR6dnhZMTFrTk1oeFQrU2VUR2crZDRWNUxRSml0eVVHSk5COFZGWnNqZ1lCWk0vSUkvWENUa2owcXlET3BGMkFWUTE3Q0lqVXAvRG5UMVVrTDVGNWdkaitzUzF3ZzFnRTNnaWdtNjBmQ1h6U25QWGJ5QVBiSVh2K0lEcEUxNlRoYUhJUzlza3lobG1NRTVGM2NmcUFLaHEyQzBFNVBIMWdZYVhhTFBEa1pHMEhESk9uS1dIcDUxSTB6NVNPdXg4ZTFXQXVaemRIUXJUa3A4VG1qWG9JK2xhMHdHWnN6dWJxYk8zaWZRNkEvVzd2VlNZc1YzbVIwSkt3a0tjNFdIaUJrbVI4STNDQ2dJODdvT0w0cXpUNVArUlVKQmVqRU9nQVBLOGhZUHphdE0rZUlUcDJJTzl5VFFtZXJvbVBSeHgxcXhBY3NpbGUvdWJTZUViY1dRR1lFQ2doY0xZMkh5S2pvZ2pIMjVoTXBqcFV2MU91Z2xpNGVoMmVSdzBPMzJiSmpreXVDZ056ZzB2emxZTVNpU3MwdW9vNE1HN2hNT2pDRWFYMXlGRTBuU3ZqQnp1VG5FcEs4Nlo4SW9xRkFJdWJ3OGtnOUFyRWFSRVdTWkkrakg0WGJwNmc5RTlFbkpUM29hUnpETitNVUpCUURIbjU2YThvVW1FQnVzT3hCcy9ONSt0SkViUGtBRkRqOFVHdk9zL0lXdmNTZ2xHQmh2UzcvRlRZZnBXR1lkRFk4ZlBBeFdTQTM1c1RDNHA0K0xtNEFhcUlvUGVRdGZ1Zks2SmgwWmh4bGJzVVhPU21YTmlmRDVaVEFreURvZmJiY2NseG5BOFdOQXF4Q2JSTnlraFh4UXBhRHc2N2ZYVVlic2lHMEtodHYyb2VJdmg4cmhRTVlPY0VBcVhHL2VJK3puZ09jNXl4cjhxODJJQU0xYy9GTEZPcGxxdTVlRlFYck1aekdjVkNqWWJMV0c1STRCVDFldVJybGJ4dE5PdE1pdERERWhMWElJeW5BQXZ1T0VXRTNYM05kQWZ0OTRWZ2FHNDJYSVF0MFpYNlBlQ0UvcVFGZTlySzZIeDdZVTUwS3ZIN2ZXNGZTK3E3S0tCSnhzZ2dCWDVwU0FHaDFqSXJWaDV6UTZ3M1JmYWFoQlhtL2FDYkNaVGpDVUZVVHlXWnFXOXA2Mk1qSlBYVnFPclBnTU80TnY3NEdrZitvd2Z0TlZCRFFuakZKcUhTdzE3cFh2aFdXNUtacWUvUTQ5Ti9VU1RDQVZXb1FYRklIQkhYWGUzRlByVURzdUdEbXRGL2hIS1RIcGVreGhpQU9QSStTSnE2UzZIRjRJOVlXemtCSlRvNDZpVU16V3A4UGlyL1JpZHVMeEtZc1Nrc1Y4dkxsT1F2aEdYMllsUjBPQmhCakMrdS9nRWN2WTBBcEs3WWs0MU54alBTUW5XRkhURjY2VXJqZ2V2QjhDdTVhK2wydllTUlB0dVZEbzczaGhkTVNIblVYN3RUanNWWkd4QWwvV3B0aU9JRVExZ25MMjltWDYvdFIxdG1sa1lqOFc0WCtDU2pXY1VER1kxTnBTL0M3aFNLcWlNTE0vbDJRbVNXWjczRGR6K2dpbzhCQ0VOWVBRNDZxbmt6d1hVYnF2Qmt4alVRc1dmWkZnYnVvM3JBZit3TjdqT085MCt5bng0UGkzTCswbllMMVNjaERVZ0FQNGdQVi83SWQxcSsxSFNobXVHa0lxV1JQZ3l4TUZxUDhIZmpUbmpYd1k1YlFmYkpjdDZPSXpLZ01Ib3RGL0hlMWVnc2F4SFNxRzZ3ZmRtUTV4OE55VEZGcUJjcDJpU293SFIzeWs1KzM2aEY3dlhBQUFBQUVsRlRrU3VRbUNDIn0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjAtMDUtMTIiLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IlNlY3VyaXR5IEtleSBieSBZdWJpY28iLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlUyRjExMDAyMDE5MTAxNzAxMCIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4xLjEiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuMyJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMC0wNS0xMiJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjAtMDUtMTIifSx7ImFhZ3VpZCI6ImU4NmFkZGNkLTc3MTEtNDdlNS1iNDJhLWMxODI1N2IwYmY2MSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiZTg2YWRkY2QtNzcxMS00N2U1LWI0MmEtYzE4MjU3YjBiZjYxIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IklEQ29yZSAzMTIxIEZpZG8ifSwiZGVzY3JpcHRpb24iOiJJRENvcmUgMzEyMSBGaWRvIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MTAsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6MCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MTAsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6MCwiYmxvY2tTbG93ZG93biI6MH19XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUM2VENDQWRHZ0F3SUJBZ0lKQUpiVHlydTFYL0lQTUEwR0NTcUdTSWIzRFFFQkN3VUFNQ014SVRBZkJnTlZCQU1NR0VkbGJXRnNkRzhnVFhWc2RHbEJjSEFnUmtsRVR5QkRRVEFlRncweE9EQTJNVEl4TkRRMU5UQmFGdzB5T0RBMk1Ea3hORFExTlRCYU1DTXhJVEFmQmdOVkJBTU1HRWRsYldGc2RHOGdUWFZzZEdsQmNIQWdSa2xFVHlCRFFUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU1WaktIV3BiRDdUU2xNeG9jalRsNm5JZjd4MzJQbXNROXpHdUxHR3FBMFVRWm9JcTNYTHpMNkxZVXZKNUE1ZzB1eUZHbGxIRWZHQUtyRWFDUThGVnZQUy9VaDBGeWZ6V2hSQXppVFNpampNSUlWampqVXY5bTl2Rm1jWFNjZ0hpZzdPZHo4ODU4VjBrck5IOTlxR20zd2pnYU9lclRXbXQralhDVWZuMDFJa1RQd3hHMkhsZ0VkNDVqTkxTVjdWb29sK0tlOEUya2k0bEVrVGVIemJvdWxSNUdVYnAzbk1pN0U0N1ZNUWEzYk53bnpXQmJzYUJTU1FoTGszbTVIYUtoaHhhNndKREs0N05pTUNrQ2tkSUh1V1NRTFZBZm04NVVBT050RU9Qd2kwT3VLM3FiZTh5S09GR2YwS2hCNU1NZUF5bTdNVi9NNFcwYTQ5b2dQRDlwTUNBd0VBQWFNZ01CNHdEQVlEVlIwVEJBVXdBd0VCL3pBT0JnTlZIUThCQWY4RUJBTUNBb1F3RFFZSktvWklodmNOQVFFTEJRQURnZ0VCQUpXejV4TE1rNVdOWWJBYjZ5T3hFQ0JvWjJXZUIvcWw0VkozTy8zL3ROc3hPWW56TGVXbzU0MHpRaDlyQW1heHo3ZXVtQmxza01xNHlHUFNOWEI5eWNXR0hna2NDZVN6TjJ3djhDSXpEQnMyb0JaalROazY1TEJaRHNzVE9CdE1XLyt1VEZIUWZidU8zSVNMaEkwRFhmUkVpOU5ETTNqZmsxMXhIY3NmaDJSTVYrUWROZndWYVpackNxK291RytFdmt2N0txcStveXUwVkZNL3R6NjhUR2w2eWxoUEZSMXFoOXd0dHBWakFPT0NFUUNMcVAyZFAyOGx3WUJ5Q3FIUXFWSHdidWp2L0xaalpuS1czTFluZFppeFBQU1JDSnNzRER3SnZoL2Y2blR4ZzlaRSsvSmNZcmU1Q2FJOG56VkhhU09Dak5KN0Z6VUxHNjRKaVdPdlE1MD0iLCJNSUlEZFRDQ0FsMmdBd0lCQWdJSkFJQ1VUdmtndGo1Q01BMEdDU3FHU0liM0RRRUJDd1VBTUZFeEN6QUpCZ05WQkFZVEFrWlNNUXd3Q2dZRFZRUUtEQU5FU1ZNeEN6QUpCZ05WQkFzTUFrTlRNU2N3SlFZRFZRUUREQjVIWlcxaGJIUnZJRTExYkhScFFYQndJRVpKUkU4Z1UzVmlZMkVnUTBFd0hoY05NakF3TnpBM01UUXpOekU0V2hjTk16QXdOekExTVRRek56RTRXakJSTVFzd0NRWURWUVFHRXdKR1VqRU1NQW9HQTFVRUNnd0RSRWxUTVFzd0NRWURWUVFMREFKRFV6RW5NQ1VHQTFVRUF3d2VSMlZ0WVd4MGJ5Qk5kV3gwYVVGd2NDQkdTVVJQSUZOMVltTmhJRU5CTUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUF2QUtPZXFDNS9wMEQxaXNDWUtRSmxWVU9yQjZJN0RMb2N1bkUvUm04ZHVHVGJ5eFFodDNDYkZWVHYzTjJMcDJmYmp4bEkrM3NPU0drMzNGVFlrVHF4Y2RKSXJKN1Nza0JjVVNOcmZLT2FRVC82S1FjUDRDbTdWKzY1NVRxK1RXeHl4V1FoRHlndDE1cW9QN011SzZiVDlTd3BDanBmS2hhTVNteVFhTW9VY1JBYkxxZHpCQ2FjMGh6QitaZStncUpsbldWOVVhU0kyckZzVnVINFpFMGNSTytNT3BhTGdNL3MyNDhuR0dIcDIyZXdTUWZiblBhQmJiOGlxeUFQK2N1NTJHTHNVcEtSSmViRStSNitQTVE5SkNkV2VRWlIzRGtmU2lka3YzbWNiNGpxMWlJdGErTXFLaFJud3JmWGg5MTFLV0xuWUFsOUVOQ2hMWDBjNlNqMVFJREFRQUJvMUF3VGpBZEJnTlZIUTRFRmdRVVdMdmhSQlVQbjh1TElmNjgrZ3YvTlpJd0dTSXdId1lEVlIwakJCZ3dGb0FVV0x2aFJCVVBuOHVMSWY2OCtndi9OWkl3R1NJd0RBWURWUjBUQkFVd0F3RUIvekFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBRkxyRGhhZWdlS0h4WWpIM0VQM3ZVQktobnpNMjA2QVN4Z2VZQ08yRWM5cE9sWUphZXFGRStzVWFtVVYvcHdqRGxxTmFTZ0ZneTdUd2VZa3ZPbU1uNHFTY3NIcXZKM3pHT0FpYWZ3YWgxdlVIZkNsWFI4K2F4TzJpR09VRjBKS3JaOVlZamJBYTUvNEhDbHY3akZQT2RNV1RPUXluZ29pSEFzM2prdVlqcENMRmxCNFZPaTNkMXdqQTFwblRkQktrQWI3dDhuVHZ3Ky9YYkZ2Y1FhNzNWSDdzanZvQnFEM2ZkTWZSY3VWcTRxVVp0WlQ2Y0dhZ1RIRDYxVHRxaDlvTUNaWGNEYlIxUEdabk5icXljc1dQRElLMG5wbUszLzNsZlY4Yytac3J5NmUxNzBtZkpNWnA3TzhtNkNTejYvVkxLK3lESmQ3ODQxd3BtZUtUZjZJblpBPT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBUXdBQUFBZ0NBWUFBQURubFVacUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFFblFBQUJKMEFkNW1IM2dBQUFBWmRFVllkRk52Wm5SM1lYSmxBSEJoYVc1MExtNWxkQ0EwTGpBdU1qSHhJR21WQUFBSzFFbEVRVlI0WHUxZERYQWNaUm0rTk9BZktvZzZXTzBRY3JlWDNPNzFSNDFvSGRTcXFEQU9nMytjWUVYQm9sWFJURW4yMjB0YUtUYzY0bWdCcXpCaUVVVnBCZHFpd3docVNkSVMydXBZU2d2UnRwVFNja2xqV3pIYWdqcFNSZHI0dkx0dmpydmsyN3ZkdmQxTGpuN1B6RE4zdC9kKzcvdCtmOC8rNzhhSzBORGFhcjJxT2RYWm9xV3lIOVIwYTBGY3Q2N1dkSEdUWm9qVkNjUHFTZWpXMW9RdUhzT3kvZUJUc0RtTS81NFpUOWorTFdHSWc3RGZCL3NCY0RQc2Y0WGZQOFgzYjJ1RzFaSFF6VThtVXVLZHlXVEhtNXFhY2kvakhBS0J5aWYwYkJyK0x3YVhJUFlQa01kcWZMOFhkV3BsczFBQTMxL1FqT3c5OEw4UzliOEJYSVIyK25EYzZEb3psc2swc2xua1FNeGtQR1hPOUVKdFZuWUdGNHNVeVZuZDhVVGFlcDhidys2TGFrQmo1aXpkYk5KUzFyeEVXbnlXeGczNkVtUGRXb1BQRGVqZjdlQVRHTXNIYUR6VHVDNmhiajBOL3BYbUFzcnVnczBXTFA4TnVCSmpaSm1XRWxjbDA5bVBKMUptVzB0TDUrdWlIQnVHa1hzbGpYODduaTRFelZuazlBdmtzUW41N0VTZGhyQjhCTXVQak9XUC8vNE9Ic1IvZTdEOFlkVGxmdFJoRmZnZExHOUh1MXdBZnpyNTVqQU9raVFLaHZWYkdCNkMwLy9pKzJpTmVSeDhGZ252UmZ4ZmFpbnpTazdORTBpSVVQYmY0M3dXbU5UTmQ3QnBLRUE3TFpmRkFZOXpwM3laVFNNRGlRVmkvVStTZzVRWUFJZk9tRzJld3NVakEvcmhXN0w0QmVybWo5aDBVb0IyT0IrVFpUVzRCL2s4T3lHL3lDaU9vVzFJWUg2SDhYUHo5TGJjS3ppbFFHaHBNWnZoWnlIR3dHM2c0MkJrODVaOG85MEc4WDBOaVNzMUl2MlFHazhLZFdzenQ0c25JUDhScVI5bURRWERJZFpTYkJvWjBJbDNTMk9YWlhZcEY0OE1VMTR3bksxYmVXNDFwTDNGRVFDSmxQVld0REcyZnV5VnJOUjN0QlRkU2pCOFlySUZveVZ0bm8yT0N6Qmd4RE5CQjZwWEtNSHd4aUQ5Z0szS2M2UGNrdkJHSlJpK01jbUMwWUQ0ZmRLNFhvaDlXL1lUQ1pSZ2VLTnZ3Y2hrR3RHMmUyVytha3NsR0w0eG1ZSkJheGxwVEkra05SUWRtR1Izb1VNSmhqZjZGUXc2Y0NyelUzdENNTERXdVFzZDNSK0F3M0tuQlE1S3luamhqZHhPbm5EaUNFWnVHanJzWVdsTUp0cGlXVUszQm1UL0ZmRXVkaGc2VVBlNkZnejBiUjZmYTZNbW5ZM2tsRHdoYVlqTFVVNmVzMjd0MGd6em03VmdVdTk2RDZma0h4Q2E2MlVWR0NNcThnMDJqUlFuaW1Cb1J2WWlhVHdtMm50Zlc5dkNrN1cwZFlIcy93SjE2M2s2ZU1adVEwVzlDd2JHOUsxc09xV0F2SVUwWDV0aURadE5iU2pCY0dFRWd0SFdkc3ZKOEUybkF1VXhpYnA1aFdNOTJvRGYyeWI4WDBLeDNyRU5GMG93b2dIbTBoSnB2amFWWVBqQ2lTQVlpYlQxZVdrc0ppYkNrL1BtNVU1aWM4cnhRcGxkTVJQcDdIbHNIaHFVWUVRREpSZ2g0c1V1R0hTUkQrcElWK1RKNHhIMUxHOWRqQ0hUaU1sUjRWaUcyRTdIUmJoQUtGQ0NFUTJVWUlTSUY3dGdvSjJ6MGpoTXRIT2VqbDJ3ZVFGWS9sR1pmU25GZkRZUEJVb3dva0hDTUJkTDg3V3BCTU1YS2dxR0lTNXZUcHRuaDBYVSswNVpuQUpERkF6RDZEZ2QvcDZXeG1IR0RmRkZOaCtIMFFiMHdhT3lNbU9FK09VTkkvY1NMbEExNmwwdzBGNjc0N3E0cFJwR2NkcWE3a3VSNVV0RUg0NWdEbXdLaS9EWmo4LzdJRVMzNHJPemVhYVl6V2xVaDNvUmpKb3pSTUdvT0FFTmEwaTJkVEdHZUVwOFRGSm1QRHZZdkdyVXUyQ0VRYnFoa3NPRkJzeWxpMld4YXNUajZOZDEycHNYdjU3VENRWWxHQzRNU1RCYVc2MDNvbzFkYjZxenFWdGZZbk01NkFwQnc5b3hvVndSTVlsR05LMzkxVnlpS2lqQmlFWXdtbFBkTGJKWXRTVGE3cUhpQSt1K29RVERoU0VKQnRwdmhkVC9HSFd4djl6V3hSaTB0UGlFdEh3SnhiVnNYaFdVWUVRakdIUndHdU9oMGdWNWtUT2VNaS9oaFB4RENZWUxReENNczFxdFZnenU4cmV2cHl5UGp3SHdzcFZoL1N1VldqS2RDd1NHRW95b0JBTzVwODMzb3ArZWs4V3NGZEYrd2E4U1ZvTGh3aEFFQTM3V1RQQmJSSFRjQWV4R3ZKVE5IZlFNTmNmNkJzK1A5ZWJueGZxZVBKV1gya0NaekhnZkV4akNHUUlsR05FSkJzRitFSkV1ZHN2aTFvYmlUNXlLZjlTTllPaldaalR5ZmFIUnVkOUFIb3RZcFdBNE54cUpZMUxmVE5UNUsyd2VpNjBmTWlBVUQ0S2pCZmJtajhiNjhzdGoydzdhRDJxaGZVLzB4eTZacnpIUzJxdWxwVE5sK3d5SXVoY01qQlU2NjFRTm0yY3VQb1BEUllUUkJqcGJSMk1BT1Y5SFp6T1E5OC93L2ZZd2lQSHRmamUwYnYyRmsvQ1BlaEdNT3JzT28vTHQ2N28xWERnVnVpRS9Cd0x4anhLeEtPWEcyTTZkdGkzNnc4T1JkbkdQN1RjZ2tGdWRDOGJVdkE2amxraWtPOCtUdGcySU1YU1l6ZnhEQ1lZTHF4QU1MN2V2bzc3dHRuRi8vMG5Za3RnaEVZbHhITHFhekoydGpFcWJzOWl5U1dYbjJ2NERRQWxHL2FPc1lCaldBVGJ6RHlVWUxnd3NHTGxwS0x0VjZwTkpIVlo0WUhMZi9uZkpCV0lDaDJIZFFFWGk2ZXdsTXI4bGRKNUhZdHY3aFJLTStrYzV3VUQ3N0dVei8xQ0M0Y0tBZ3VIcDlHZEtYTVhtRUl4OHUwUWNYUGpZYSsweW1Vd2oydXR4cWU4aW9vNFgydlkrb1FTai9sRmhsK1NQYk9ZZlNqQmNHRUF3NkhvSzdBNlVuY2lvNThHbXBzdGVlQjFENzlCWDVlSWc0ZjNEcDNPcEdPTE1sL2tmeHgyeHpGcmZqOFZYZ2xIL3FMQkxzb1hOL0VNSmhnc0RDRVlpVmY3MmRXYnBKZHc5Kzg2UmlzTjQ5Zzd1aDNWaEY0UEY2UW1KLzFMcTFnSXU0aG1WQkFNVDl1N3g3MHdKZy9UWWZVNmhMSlJnVkVhRlhaSUgyTXcvbEdDNDBLZGd6SjV0bmdLZkI2UyttUGovMEl3WkhTL25JZzVHUnhzaEJnTlNrU2psWWk1UkFQcnVVbG1jWW1KeS9YbkczSEV4SzZEaUZrWkV4QmpZeUNtVVJTWEJRRHVQb0E1Ym8yYlN5TDZkVS9JRTNpcVVuZ1lObTJnRDE3TjArRzhWcCtRZlNqQmM2Rk13NHJwbFNmMFVFVEZOTmk5RnovRE1XRy8raUVRa0hQYm1OOFMyYlp0NCtiaHpqMG41SjNpQmRGczFsL0FFMUwydUJhTldUT3JpQTV5U0p5RHY3OHI4MUp5ZXJ5NldRQW1HQzMwSVJ0T2MzR2xvcDhOU1AyUFV4Vk5sMS9UcjhxMnh2dng2OFBraXNmZ25mbDhmNng5MGZRVWw0bjVHR3ErWXVqaHk1cXp1MTNDUmlsQ0M0WTExS1JqMFdrZ3RGL3dtUlNVWUx2UWhHRjRtR0FhTFlQUHkyRGcwUGRZejlIN3Nwc3lOOVF4VWZDMGlYZnlGUHRvbmkxbE1HcXhjcENLVVlIaGozUWtHeENLcFcrL21kSUpCQ1lZTFBRb0d2WVFhOXVYZjcxbHA2NkpLbEh0OC9Rc1VSKzBYVFh1QUVneHZyQS9Cb0xmcjJRZkhyL0d6bGVtS0tTTVl1bmtIVFN6RWxMNCtzRmFDZ2ZvK0IrN1dqT3puMkxRc25OY0dpRDFVVHViUG9kbkY1cEdBenBnZ3Z1dFdCdXI2SDd0T3VyaVVpNVFGWFNXS010L0hCTjVFYXlYVXIrdzlNY0VwanZHSzR2Zklid1ZkdzhJcGxBV05CWlM1RHZXaE41WG40ZWRvcWQ4b2lGeXgyd2sraXUvMEl1aWw5S3dUVHNrVDRtbHhEdHJ6Um01WGpQVW8ycFhlNkc0OWdqeHZ3K2ZDaE5HaGNmaHdRQzlqYVRMRUc5eG9HRmVXdmlZK1V1U20yUStjb1hkeTZOWWlOT3d5VlBySEdCaDNKb3p1VUNzZVQ1bVhRZkYvamhnL3hPZlhOZDI4Z2pvMGFIM3BMQWxOTkdkdEw1WWk1NXZRZ2JlajQrNmcvOWdzTXFBT0gzSGFTZndFYlhjRHZtZVRodlVwVGU5Nnk0UXpNNzZRbTlZMFo5RnBkUGNtNnZOcHNBdDlzdHhwTyt2WDRFYkUyMG9UQ2NzR1NvbmwrQi9mNldhL1ZjVjUwYVNQeDd0T0RlRUJ4ZzEweHkrZGtvWGdmQWd4RmlEZTE5QU8zME0vckVRTzl5TG1BNGkvQmIrM2wrYm5rUElITjRQclVMKzErRndCMjJ2aG94MWlmMUc4MVhwYnZBMjVaaksrcjJseFIyNGExZDhSUHpFZnV3b1djc0VXaUpNellqK0kzdytWdEtzaEhnSC9BUFpTbnFqVHpmaTh4aDY3dW5VdVBkckEyOE54WXJIL0F6M3RJNGo1K1RPTEFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCJdLCJleHRlbnNpb25zIjpbImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6ImU4NmFkZGNkNzcxMTQ3ZTViNDJhYzE4MjU3YjBiZjYxIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6dHJ1ZSwidXAiOnRydWV9LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fV19fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMS0wOC0xNiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IklEQ29yZSAzMTIxIEZpZG8iLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDIxMDgxNjAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS4zIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjQifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjEtMDgtMTYiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6Mn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNC0wNi0xOCJ9LHsiYWFndWlkIjoiYjExM2E0NTUtY2ZiNi00YzE3LThjYmEtY2Q5NTJmZWI3ZDQ4IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiJiMTEzYTQ1NS1jZmI2LTRjMTctOGNiYS1jZDk1MmZlYjdkNDgiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiZVRva2VuIEZJRE8gTkZDIn0sImRlc2NyaXB0aW9uIjoiZVRva2VuIEZJRE8gTkZDIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjYsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfSx7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwiaXNLZXlSZXN0cmljdGVkIjp0cnVlLCJpc0ZyZXNoVXNlclZlcmlmaWNhdGlvblJlcXVpcmVkIjp0cnVlLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUM2VENDQWRHZ0F3SUJBZ0lKQUpiVHlydTFYL0lQTUEwR0NTcUdTSWIzRFFFQkN3VUFNQ014SVRBZkJnTlZCQU1NR0VkbGJXRnNkRzhnVFhWc2RHbEJjSEFnUmtsRVR5QkRRVEFlRncweE9EQTJNVEl4TkRRMU5UQmFGdzB5T0RBMk1Ea3hORFExTlRCYU1DTXhJVEFmQmdOVkJBTU1HRWRsYldGc2RHOGdUWFZzZEdsQmNIQWdSa2xFVHlCRFFUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU1WaktIV3BiRDdUU2xNeG9jalRsNm5JZjd4MzJQbXNROXpHdUxHR3FBMFVRWm9JcTNYTHpMNkxZVXZKNUE1ZzB1eUZHbGxIRWZHQUtyRWFDUThGVnZQUy9VaDBGeWZ6V2hSQXppVFNpampNSUlWampqVXY5bTl2Rm1jWFNjZ0hpZzdPZHo4ODU4VjBrck5IOTlxR20zd2pnYU9lclRXbXQralhDVWZuMDFJa1RQd3hHMkhsZ0VkNDVqTkxTVjdWb29sK0tlOEUya2k0bEVrVGVIemJvdWxSNUdVYnAzbk1pN0U0N1ZNUWEzYk53bnpXQmJzYUJTU1FoTGszbTVIYUtoaHhhNndKREs0N05pTUNrQ2tkSUh1V1NRTFZBZm04NVVBT050RU9Qd2kwT3VLM3FiZTh5S09GR2YwS2hCNU1NZUF5bTdNVi9NNFcwYTQ5b2dQRDlwTUNBd0VBQWFNZ01CNHdEQVlEVlIwVEJBVXdBd0VCL3pBT0JnTlZIUThCQWY4RUJBTUNBb1F3RFFZSktvWklodmNOQVFFTEJRQURnZ0VCQUpXejV4TE1rNVdOWWJBYjZ5T3hFQ0JvWjJXZUIvcWw0VkozTy8zL3ROc3hPWW56TGVXbzU0MHpRaDlyQW1heHo3ZXVtQmxza01xNHlHUFNOWEI5eWNXR0hna2NDZVN6TjJ3djhDSXpEQnMyb0JaalROazY1TEJaRHNzVE9CdE1XLyt1VEZIUWZidU8zSVNMaEkwRFhmUkVpOU5ETTNqZmsxMXhIY3NmaDJSTVYrUWROZndWYVpackNxK291RytFdmt2N0txcStveXUwVkZNL3R6NjhUR2w2eWxoUEZSMXFoOXd0dHBWakFPT0NFUUNMcVAyZFAyOGx3WUJ5Q3FIUXFWSHdidWp2L0xaalpuS1czTFluZFppeFBQU1JDSnNzRER3SnZoL2Y2blR4ZzlaRSsvSmNZcmU1Q2FJOG56VkhhU09Dak5KN0Z6VUxHNjRKaVdPdlE1MD0iLCJNSUlEZFRDQ0FsMmdBd0lCQWdJSkFJQ1VUdmtndGo1Q01BMEdDU3FHU0liM0RRRUJDd1VBTUZFeEN6QUpCZ05WQkFZVEFrWlNNUXd3Q2dZRFZRUUtEQU5FU1ZNeEN6QUpCZ05WQkFzTUFrTlRNU2N3SlFZRFZRUUREQjVIWlcxaGJIUnZJRTExYkhScFFYQndJRVpKUkU4Z1UzVmlZMkVnUTBFd0hoY05NakF3TnpBM01UUXpOekU0V2hjTk16QXdOekExTVRRek56RTRXakJSTVFzd0NRWURWUVFHRXdKR1VqRU1NQW9HQTFVRUNnd0RSRWxUTVFzd0NRWURWUVFMREFKRFV6RW5NQ1VHQTFVRUF3d2VSMlZ0WVd4MGJ5Qk5kV3gwYVVGd2NDQkdTVVJQSUZOMVltTmhJRU5CTUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUF2QUtPZXFDNS9wMEQxaXNDWUtRSmxWVU9yQjZJN0RMb2N1bkUvUm04ZHVHVGJ5eFFodDNDYkZWVHYzTjJMcDJmYmp4bEkrM3NPU0drMzNGVFlrVHF4Y2RKSXJKN1Nza0JjVVNOcmZLT2FRVC82S1FjUDRDbTdWKzY1NVRxK1RXeHl4V1FoRHlndDE1cW9QN011SzZiVDlTd3BDanBmS2hhTVNteVFhTW9VY1JBYkxxZHpCQ2FjMGh6QitaZStncUpsbldWOVVhU0kyckZzVnVINFpFMGNSTytNT3BhTGdNL3MyNDhuR0dIcDIyZXdTUWZiblBhQmJiOGlxeUFQK2N1NTJHTHNVcEtSSmViRStSNitQTVE5SkNkV2VRWlIzRGtmU2lka3YzbWNiNGpxMWlJdGErTXFLaFJud3JmWGg5MTFLV0xuWUFsOUVOQ2hMWDBjNlNqMVFJREFRQUJvMUF3VGpBZEJnTlZIUTRFRmdRVVdMdmhSQlVQbjh1TElmNjgrZ3YvTlpJd0dTSXdId1lEVlIwakJCZ3dGb0FVV0x2aFJCVVBuOHVMSWY2OCtndi9OWkl3R1NJd0RBWURWUjBUQkFVd0F3RUIvekFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBRkxyRGhhZWdlS0h4WWpIM0VQM3ZVQktobnpNMjA2QVN4Z2VZQ08yRWM5cE9sWUphZXFGRStzVWFtVVYvcHdqRGxxTmFTZ0ZneTdUd2VZa3ZPbU1uNHFTY3NIcXZKM3pHT0FpYWZ3YWgxdlVIZkNsWFI4K2F4TzJpR09VRjBKS3JaOVlZamJBYTUvNEhDbHY3akZQT2RNV1RPUXluZ29pSEFzM2prdVlqcENMRmxCNFZPaTNkMXdqQTFwblRkQktrQWI3dDhuVHZ3Ky9YYkZ2Y1FhNzNWSDdzanZvQnFEM2ZkTWZSY3VWcTRxVVp0WlQ2Y0dhZ1RIRDYxVHRxaDlvTUNaWGNEYlIxUEdabk5icXljc1dQRElLMG5wbUszLzNsZlY4Yytac3J5NmUxNzBtZkpNWnA3TzhtNkNTejYvVkxLK3lESmQ3ODQxd3BtZUtUZjZJblpBPT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBUXdBQUFBZ0NBWUFBQURubFVacUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFFblFBQUJKMEFkNW1IM2dBQUFBWmRFVllkRk52Wm5SM1lYSmxBSEJoYVc1MExtNWxkQ0EwTGpBdU1qSHhJR21WQUFBSzFFbEVRVlI0WHUxZERYQWNaUm0rTk9BZktvZzZXTzBRY3JlWDNPNzFSNDFvSGRTcXFEQU9nMytjWUVYQm9sWFJURW4yMjB0YUtUYzY0bWdCcXpCaUVVVnBCZHFpd3docVNkSVMydXBZU2d2UnRwVFNja2xqV3pIYWdqcFNSZHI0dkx0dmpydmsyN3ZkdmQxTGpuN1B6RE4zdC9kKzcvdCtmOC8rNzhhSzBORGFhcjJxT2RYWm9xV3lIOVIwYTBGY3Q2N1dkSEdUWm9qVkNjUHFTZWpXMW9RdUhzT3kvZUJUc0RtTS81NFpUOWorTFdHSWc3RGZCL3NCY0RQc2Y0WGZQOFgzYjJ1RzFaSFF6VThtVXVLZHlXVEhtNXFhY2kvakhBS0J5aWYwYkJyK0x3YVhJUFlQa01kcWZMOFhkV3BsczFBQTMxL1FqT3c5OEw4UzliOEJYSVIyK25EYzZEb3psc2swc2xua1FNeGtQR1hPOUVKdFZuWUdGNHNVeVZuZDhVVGFlcDhidys2TGFrQmo1aXpkYk5KUzFyeEVXbnlXeGczNkVtUGRXb1BQRGVqZjdlQVRHTXNIYUR6VHVDNmhiajBOL3BYbUFzcnVnczBXTFA4TnVCSmpaSm1XRWxjbDA5bVBKMUptVzB0TDUrdWlIQnVHa1hzbGpYODduaTRFelZuazlBdmtzUW41N0VTZGhyQjhCTXVQak9XUC8vNE9Ic1IvZTdEOFlkVGxmdFJoRmZnZExHOUh1MXdBZnpyNTVqQU9raVFLaHZWYkdCNkMwLy9pKzJpTmVSeDhGZ252UmZ4ZmFpbnpTazdORTBpSVVQYmY0M3dXbU5UTmQ3QnBLRUE3TFpmRkFZOXpwM3laVFNNRGlRVmkvVStTZzVRWUFJZk9tRzJld3NVakEvcmhXN0w0QmVybWo5aDBVb0IyT0IrVFpUVzRCL2s4T3lHL3lDaU9vVzFJWUg2SDhYUHo5TGJjS3ppbFFHaHBNWnZoWnlIR3dHM2c0MkJrODVaOG85MEc4WDBOaVNzMUl2MlFHazhLZFdzenQ0c25JUDhScVI5bURRWERJZFpTYkJvWjBJbDNTMk9YWlhZcEY0OE1VMTR3bksxYmVXNDFwTDNGRVFDSmxQVld0REcyZnV5VnJOUjN0QlRkU2pCOFlySUZveVZ0bm8yT0N6Qmd4RE5CQjZwWEtNSHd4aUQ5Z0szS2M2UGNrdkJHSlJpK01jbUMwWUQ0ZmRLNFhvaDlXL1lUQ1pSZ2VLTnZ3Y2hrR3RHMmUyVytha3NsR0w0eG1ZSkJheGxwVEkra05SUWRtR1Izb1VNSmhqZjZGUXc2Y0NyelUzdENNTERXdVFzZDNSK0F3M0tuQlE1S3luamhqZHhPbm5EaUNFWnVHanJzWVdsTUp0cGlXVUszQm1UL0ZmRXVkaGc2VVBlNkZnejBiUjZmYTZNbW5ZM2tsRHdoYVlqTFVVNmVzMjd0MGd6em03VmdVdTk2RDZma0h4Q2E2MlVWR0NNcThnMDJqUlFuaW1Cb1J2WWlhVHdtMm50Zlc5dkNrN1cwZFlIcy93SjE2M2s2ZU1adVEwVzlDd2JHOUsxc09xV0F2SVUwWDV0aURadE5iU2pCY0dFRWd0SFdkc3ZKOEUybkF1VXhpYnA1aFdNOTJvRGYyeWI4WDBLeDNyRU5GMG93b2dIbTBoSnB2amFWWVBqQ2lTQVlpYlQxZVdrc0ppYkNrL1BtNVU1aWM4cnhRcGxkTVJQcDdIbHNIaHFVWUVRREpSZ2g0c1V1R0hTUkQrcElWK1RKNHhIMUxHOWRqQ0hUaU1sUjRWaUcyRTdIUmJoQUtGQ0NFUTJVWUlTSUY3dGdvSjJ6MGpoTXRIT2VqbDJ3ZVFGWS9sR1pmU25GZkRZUEJVb3dva0hDTUJkTDg3V3BCTU1YS2dxR0lTNXZUcHRuaDBYVSswNVpuQUpERkF6RDZEZ2QvcDZXeG1IR0RmRkZOaCtIMFFiMHdhT3lNbU9FK09VTkkvY1NMbEExNmwwdzBGNjc0N3E0cFJwR2NkcWE3a3VSNVV0RUg0NWdEbXdLaS9EWmo4LzdJRVMzNHJPemVhYVl6V2xVaDNvUmpKb3pSTUdvT0FFTmEwaTJkVEdHZUVwOFRGSm1QRHZZdkdyVXUyQ0VRYnFoa3NPRkJzeWxpMld4YXNUajZOZDEycHNYdjU3VENRWWxHQzRNU1RCYVc2MDNvbzFkYjZxenFWdGZZbk01NkFwQnc5b3hvVndSTVlsR05LMzkxVnlpS2lqQmlFWXdtbFBkTGJKWXRTVGE3cUhpQSt1K29RVERoU0VKQnRwdmhkVC9HSFd4djl6V3hSaTB0UGlFdEh3SnhiVnNYaFdVWUVRakdIUndHdU9oMGdWNWtUT2VNaS9oaFB4RENZWUxReENNczFxdFZnenU4cmV2cHl5UGp3SHdzcFZoL1N1VldqS2RDd1NHRW95b0JBTzVwODMzb3ArZWs4V3NGZEYrd2E4U1ZvTGh3aEFFQTM3V1RQQmJSSFRjQWV4R3ZKVE5IZlFNTmNmNkJzK1A5ZWJueGZxZVBKV1gya0NaekhnZkV4akNHUUlsR05FSkJzRitFSkV1ZHN2aTFvYmlUNXlLZjlTTllPaldaalR5ZmFIUnVkOUFIb3RZcFdBNE54cUpZMUxmVE5UNUsyd2VpNjBmTWlBVUQ0S2pCZmJtajhiNjhzdGoydzdhRDJxaGZVLzB4eTZacnpIUzJxdWxwVE5sK3d5SXVoY01qQlU2NjFRTm0yY3VQb1BEUllUUkJqcGJSMk1BT1Y5SFp6T1E5OC93L2ZZd2lQSHRmamUwYnYyRmsvQ1BlaEdNT3JzT28vTHQ2N28xWERnVnVpRS9Cd0x4anhLeEtPWEcyTTZkdGkzNnc4T1JkbkdQN1RjZ2tGdWRDOGJVdkE2amxraWtPOCtUdGcySU1YU1l6ZnhEQ1lZTHF4QU1MN2V2bzc3dHRuRi8vMG5Za3RnaEVZbHhITHFhekoydGpFcWJzOWl5U1dYbjJ2NERRQWxHL2FPc1lCaldBVGJ6RHlVWUxnd3NHTGxwS0x0VjZwTkpIVlo0WUhMZi9uZkpCV0lDaDJIZFFFWGk2ZXdsTXI4bGRKNUhZdHY3aFJLTStrYzV3VUQ3N0dVei8xQ0M0Y0tBZ3VIcDlHZEtYTVhtRUl4OHUwUWNYUGpZYSsweW1Vd2oydXR4cWU4aW9vNFgydlkrb1FTai9sRmhsK1NQYk9ZZlNqQmNHRUF3NkhvSzdBNlVuY2lvNThHbXBzdGVlQjFENzlCWDVlSWc0ZjNEcDNPcEdPTE1sL2tmeHgyeHpGcmZqOFZYZ2xIL3FMQkxzb1hOL0VNSmhnc0RDRVlpVmY3MmRXYnBKZHc5Kzg2UmlzTjQ5Zzd1aDNWaEY0UEY2UW1KLzFMcTFnSXU0aG1WQkFNVDl1N3g3MHdKZy9UWWZVNmhMSlJnVkVhRlhaSUgyTXcvbEdDNDBLZGd6SjV0bmdLZkI2UyttUGovMEl3WkhTL25JZzVHUnhzaEJnTlNrU2psWWk1UkFQcnVVbG1jWW1KeS9YbkczSEV4SzZEaUZrWkV4QmpZeUNtVVJTWEJRRHVQb0E1Ym8yYlN5TDZkVS9JRTNpcVVuZ1lObTJnRDE3TjArRzhWcCtRZlNqQmM2Rk13NHJwbFNmMFVFVEZOTmk5RnovRE1XRy8raUVRa0hQYm1OOFMyYlp0NCtiaHpqMG41SjNpQmRGczFsL0FFMUwydUJhTldUT3JpQTV5U0p5RHY3OHI4MUp5ZXJ5NldRQW1HQzMwSVJ0T2MzR2xvcDhOU1AyUFV4Vk5sMS9UcjhxMnh2dng2OFBraXNmZ25mbDhmNng5MGZRVWw0bjVHR3ErWXVqaHk1cXp1MTNDUmlsQ0M0WTExS1JqMFdrZ3RGL3dtUlNVWUx2UWhHRjRtR0FhTFlQUHkyRGcwUGRZejlIN3Nwc3lOOVF4VWZDMGlYZnlGUHRvbmkxbE1HcXhjcENLVVlIaGozUWtHeENLcFcrL21kSUpCQ1lZTFBRb0d2WVFhOXVYZjcxbHA2NkpLbEh0OC9Rc1VSKzBYVFh1QUVneHZyQS9Cb0xmcjJRZkhyL0d6bGVtS0tTTVl1bmtIVFN6RWxMNCtzRmFDZ2ZvK0IrN1dqT3puMkxRc25OY0dpRDFVVHViUG9kbkY1cEdBenBnZ3Z1dFdCdXI2SDd0T3VyaVVpNVFGWFNXS010L0hCTjVFYXlYVXIrdzlNY0VwanZHSzR2Zklid1ZkdzhJcGxBV05CWlM1RHZXaE41WG40ZWRvcWQ4b2lGeXgyd2sraXUvMEl1aWw5S3dUVHNrVDRtbHhEdHJ6Um01WGpQVW8ycFhlNkc0OWdqeHZ3K2ZDaE5HaGNmaHdRQzlqYVRMRUc5eG9HRmVXdmlZK1V1U20yUStjb1hkeTZOWWlOT3d5VlBySEdCaDNKb3p1VUNzZVQ1bVhRZkYvamhnL3hPZlhOZDI4Z2pvMGFIM3BMQWxOTkdkdEw1WWk1NXZRZ2JlajQrNmcvOWdzTXFBT0gzSGFTZndFYlhjRHZtZVRodlVwVGU5Nnk0UXpNNzZRbTlZMFo5RnBkUGNtNnZOcHNBdDlzdHhwTyt2WDRFYkUyMG9UQ2NzR1NvbmwrQi9mNldhL1ZjVjUwYVNQeDd0T0RlRUJ4ZzEweHkrZGtvWGdmQWd4RmlEZTE5QU8zME0vckVRTzl5TG1BNGkvQmIrM2wrYm5rUElITjRQclVMKzErRndCMjJ2aG94MWlmMUc4MVhwYnZBMjVaaksrcjJseFIyNGExZDhSUHpFZnV3b1djc0VXaUpNellqK0kzdytWdEtzaEhnSC9BUFpTbnFqVHpmaTh4aDY3dW5VdVBkckEyOE54WXJIL0F6M3RJNGo1K1RPTEFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xIiwiRklET18yXzFfUFJFIl0sImV4dGVuc2lvbnMiOlsiY3JlZFByb3RlY3QiLCJobWFjLXNlY3JldCIsIm1pblBpbkxlbmd0aCJdLCJhYWd1aWQiOiJiMTEzYTQ1NWNmYjY0YzE3OGNiYWNkOTUyZmViN2Q0OCIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOnRydWUsInVwIjp0cnVlLCJwaW5VdkF1dGhUb2tlbiI6dHJ1ZSwibm9NY0dhUGVybWlzc2lvbnNXaXRoQ2xpZW50UGluIjpmYWxzZSwiYXV0aG5yQ2ZnIjp0cnVlLCJjcmVkTWdtdCI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOnRydWUsImFsd2F5c1V2IjpmYWxzZX0sInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxJZExlbmd0aCI6OTYsInRyYW5zcG9ydHMiOlsibmZjIiwidXNiIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN31dLCJmb3JjZVBJTkNoYW5nZSI6ZmFsc2UsIm1pblBJTkxlbmd0aCI6NCwibWF4UlBJRHNGb3JTZXRNaW5QSU5MZW5ndGgiOjQsImNlcnRpZmljYXRpb25zIjp7IkZJRE8iOjN9LCJyZW1haW5pbmdEaXNjb3ZlcmFibGVDcmVkZW50aWFscyI6MjU1fX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjYtMDEtMjAiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6NiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJlVG9rZW4gRklETyBORkMiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDI2MDEyMDAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUHJvZmlsZXMiOlsiY29uc3VtZXIiXSwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wNy0yOCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjo2LCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6ImVUb2tlbiBGSURPIE5GQyIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjUwNzI4MDAyIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25Qcm9maWxlcyI6WyJjb25zdW1lciJdLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTA3LTI4IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjZ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjYtMDMtMjAifSx7ImFhZ3VpZCI6Ijk1NDQyYjJlLWYxNWUtNGRlZi1iMjcwLWVmYjEwNmZhY2I0ZSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiOTU0NDJiMmUtZjE1ZS00ZGVmLWIyNzAtZWZiMTA2ZmFjYjRlIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6ImVXQk0gZUZBMzEwIEZJRE8yIEF1dGhlbnRpY2F0b3IifSwiZGVzY3JpcHRpb24iOiJlV0JNIGVGQTMxMCBGSURPMiBBdXRoZW50aWNhdG9yIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoyNTYsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDZ2pDQ0FpaWdBd0lCQWdJQkFUQUtCZ2dxaGtqT1BRUURBakNCblRFTE1Ba0dBMVVFQmhNQ1MxSXhEakFNQmdOVkJBZ01CVk5sYjNWc01SQXdEZ1lEVlFRSERBZEhZVzVuYm1GdE1SY3dGUVlEVlFRS0RBNWxWMEpOSUVOdkxpd2dUSFJrTGpFWk1CY0dBMVVFQ3d3UVEyVnlkR2xtYVdOaGRHVWdWVzVwZERFWk1CY0dBMVVFQXd3UVpWZENUU0JEWlhKMGFXWnBZMkYwWlRFZE1Cc0dDU3FHU0liM0RRRUpBUllPYVc1bWIwQmxMWGRpYlM1amIyMHdJQmNOTWpNd056RXhNRE0wTmpFMFdoZ1BNakEzTXpBMk1qZ3dNelEyTVRSYU1JR2RNUXN3Q1FZRFZRUUdFd0pMVWpFT01Bd0dBMVVFQ0F3RlUyVnZkV3d4RURBT0JnTlZCQWNNQjBkaGJtZHVZVzB4RnpBVkJnTlZCQW9NRG1WWFFrMGdRMjh1TENCTWRHUXVNUmt3RndZRFZRUUxEQkJEWlhKMGFXWnBZMkYwWlNCVmJtbDBNUmt3RndZRFZRUUREQkJsVjBKTklFTmxjblJwWm1sallYUmxNUjB3R3dZSktvWklodmNOQVFrQkZnNXBibVp2UUdVdGQySnRMbU52YlRCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQkFoK29lS3lMU2c3OTdJNnBKb091djJLMGJZaktZR1FlZElNWkFnaGlaUDYrb0R3Q0E3eldhaVp6WXQzazhha1EzcWE0VG5qQThkQ085ei9JS0tIeTdhalZUQlRNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3SFFZRFZSME9CQllFRkxjbjkvR0lDL2JhS3QwR3ozeEk0T0VYdVJUK01Bc0dBMVVkRHdRRUF3SUJCakFSQmdsZ2hrZ0JodmhDQVFFRUJBTUNBQWN3Q2dZSUtvWkl6ajBFQXdJRFNBQXdSUUloQU5WbkpkZS8vdEJMcThNRERpK1NBZDZVZFlJWlNuZzRQTXFteU5ydlpqNjRBaUFYMHhTekFoRmFDQ3AvdWhwVmdubEYrWEJncndBSXNvdFpHVEI2cmtCMzFBPT0iLCJNSUlDcFRDQ0FrcWdBd0lCQWdJQkFUQUtCZ2dxaGtqT1BRUURBakNCcnpFTE1Ba0dBMVVFQmhNQ1MxSXhFVEFQQmdOVkJBZ01DRk5sYjNWc0xWTnBNUk13RVFZRFZRUUhEQXBIWVc1bmJtRnRMVWQxTVJjd0ZRWURWUVFLREE1bFYwSk5JRU52TGl3Z1RIUmtMakVpTUNBR0ExVUVDd3daUVhWMGFHVnVkR2xqWVhSdmNpQkJkSFJsYzNSaGRHbHZiakVjTUJvR0ExVUVBd3dUWlZkQ1RTQkRRU0JEWlhKMGFXWnBZMkYwWlRFZE1Cc0dDU3FHU0liM0RRRUpBUllPYVc1bWIwQmxMWGRpYlM1amIyMHdIaGNOTVRnd056QXlNRFV6TVRNNVdoY05Nak13TnpBeE1EVXpNVE01V2pDQnJ6RUxNQWtHQTFVRUJoTUNTMUl4RVRBUEJnTlZCQWdNQ0ZObGIzVnNMVk5wTVJNd0VRWURWUVFIREFwSFlXNW5ibUZ0TFVkMU1SY3dGUVlEVlFRS0RBNWxWMEpOSUVOdkxpd2dUSFJrTGpFaU1DQUdBMVVFQ3d3WlFYVjBhR1Z1ZEdsallYUnZjaUJCZEhSbGMzUmhkR2x2YmpFY01Cb0dBMVVFQXd3VFpWZENUU0JEUVNCRFpYSjBhV1pwWTJGMFpURWRNQnNHQ1NxR1NJYjNEUUVKQVJZT2FXNW1iMEJsTFhkaWJTNWpiMjB3V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVFJZnFIaXNpMG9PL2V5T3FTYURycjlpdEcySXltQmtIblNER1FJSVltVCt2cUE4QWdPODFtb21jMkxkNVBHcEVONm11RTU0d1BIUWp2Yy95Q2loOHUybzFVd1V6QVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUFNQjBHQTFVZERnUVdCQlMzSi9meGlBdjIyaXJkQnM5OFNPRGhGN2tVL2pBTEJnTlZIUThFQkFNQ0FRWXdFUVlKWUlaSUFZYjRRZ0VCQkFRREFnQUhNQW9HQ0NxR1NNNDlCQU1DQTBrQU1FWUNJUURjNDFMRks0TEpDQlUyVlZLSXo3WjZzeFBoVUVraDhuTFNMSzZJWGRrUDV3SWhBSWVLVk9aY2hhVk81YUY3ZmJkWG9TcmN5eTFZWWVVZVBMb2pjS0k5Zlg4NCJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUErZ0FBQUV4Q0FZQUFBRHZEWWdxQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUVuUUFBQkowQWQ1bUgzZ0FBRmljU1VSQlZIaGU3ZDBIZUJYRjJzRHhONzNRQ1RWQTZGSUZGS2tDVXV5QUV1bUtZa0ZVYklDQ0lpS0NVZ1FFN0wwZ2RsUXNLQ3BTcklnZ1NDK2hKblJDSjRIMGIyZnZlRC8wa2hDU25jMmVrLy92dVhtWWQ0NlhrSk56OXN5N00vTk9RSlpGQUFBQUFBQkFnUXJVZndJQUFBQUFnQUpFZ2c0QUFBQUFnQWVRb0FNQUFBQUE0QUVrNkFBQUFBQUFlQUFKT2dBQUFBQUFIa0NDRGdBQUFBQ0FCNUNnQXdBQUFBRGdBU1RvQUFBQUFBQjRBQWs2QUFBQUFBQWVRSUlPQUFBQUFJQUhrS0FEQUFBQUFPQUJKT2dBQUFBQUFIZ0FDVG9BQUFBQUFCNUFnZzRBQUFBQWdBZVFvQU1BQUFBQTRBRWs2QUFBQUFBQWVFQkFsa1czUFNzek5WWFNEeVRLcWExYjVkU2FkWks2ZTQra0h6OW05NG4zLy9tQWNRRWhvUkpjdXBRRVIwVkpXSlZLRXQ2Z3ZvUlhyeVpCcFVwSlFDRDM0UUFBQUFCZjROa0VQU3NqUTA1dDNpS0hQdnBFanYrd1FOTDM3Wk9zMURUOUtJQ3pDWXlNbE5BYTFhVEVOWjJsWkpmT0VscWh2UFdPRDlDUEFnQUFBUEFhenlYb0tqRS9NdmM3U1h4emhweGFzVkwzQXNpUGdOQVFLZHF4dlpTOVk0QVVhZEpZOXdJQUFBRHdFazhsNk1kLysxMzJqSHRLVXRhdDF6MEFuRmE4NjlWU1lkZ1FDYXRTUmZjQUFBQUE4QUpQSk9nWkowN0lub2xUNVBBSEg0dGtadXBlQUtZRWhJZExoVkVqSktwWGR3a0lEdGE5QUFBQUFBcFNnU2ZvcDdac2xSMERCMG5xMXUyNkI0QXJBZ0trMkJXWFNwWEpFeVNvYUZIZENRQUFBS0NnRkdpQ2Z1TFA1UkkvWUpCa0hEbWlld0M0TGJ4UlE2bjI1aXNTRWhXbGV3QUFBQUFVaEFKTDBFOHNYU1k3YnJsRE1wT1NkQStBZ2hKYXE0YlUvT2hkQ1M1ZFd2Y0FBQUFBY0Z1QkhKQ3NsclhIMzNrdnlUbmdFYW1idDhyMmdZTWtnL2NrQUFBQVVHQmNUOURUang2VDdiZmRJUm1IRHVzZUFGNXc4cysvWk9jamowa1doUm9CQUFDQUF1SHFFbmQxeG5uOEF3L0pzUy9tNko1ekZ4Z1pJVUdsU2tsSWplb1NWS0s0N2dVS09ldHRuTDV2djZUdGlKZU1JMGNsS3kxTlAzRHVLazRZSzJYNjlOSVJBQUFBQUxlNG1xQWZYYmpJTGdwM3prZXBCUVpLK1BrTkpLcC9QeW5XdXFVRWx5a2pBVUZCK2tFQWY4dE1UWlhVWGJ2azZMZno1TkRNOXlWOXoxNzlTTzRGbGl3aDUvM3dEVVhqQUFBQUFKZTVscUJuSkNWTDNGWFhTRnJDVHQyVE82RTFxMHZGVVNPa2VOczJkcUlPSUhjeVQ1NlVneDk4TFB1ZmVWNHlqeDNYdmJsVG9sdFhpWms2eWJwQ0JPZ2VBQUFBQUthNWx2RWVtZlAxdVNYblZtSlFvbWVzMUo0elc0cGYwbzdrSERoSGdSRVJVdmJXL2xMTGVnK3BvOVRPeGJGdnY1ZFQ4UWs2QWdBQUFPQUdWN0pldGV4Mi8vTXY2U2dYckdROGF0QkFpWGxxdkFTR2grdE9BSGtSVnFXeWZZUmE1TVV0ZGMvWlpaMUtrZjNQdnFBakFBQUFBRzV3SlVFL3NYaUpwTy9hbzZPekNBaVEwamYzaytpaDk3TzhGbkNJdXRGVjdkVVh6MmttL2NTQ1JaSis1S2lPQUFBQUFKam15aDUwVmJuOTZHZGY2Q2huS29HbytmSDdFaGdXcW52eXlmcnhzdExUSmYzRUNjazRmbHl5VXZOZTNScHdpenF0SUxoWU1YdVp1bDBRMGFHYlZhZTI3NUROVjE0aldTa3B1aWRubFo2WklxV3Y2YUlqQUFBQUFDWVpUOUJWY3J5dWVSdkpQSHhFOStRZ09GaXF6M3BQaWpacHJEdnlMbm5kZWprMmY2RWsvYnBZVXJac2xZekVnL29Sd0hjRXgxU1JpTnExcEdpSGRsS3NZM3NKcTFoUlA1SjMrMTU2VmZaUG1xcWpuQlc5cktOVWYvVkZIUUVBQUFBd3lYaUNucnhtcld6cDJsMUhPU3ZhOFJLcC92ckxlWjR0ekR5VklrZSsvVTRTWDN0VFV0WnQwTDJBbndnTWxLS2Qya3VaVy90THNSYk44L3crU1Q5NlZEWjF2Rkl5RGgzV1Bka0xLbDVjNnY3eHN3U0doZWtlQUFBQUFLWVkzNE9lL05kSzNUcTcwbjE2NVMzcHlNcVM0NHQvbDdqTzNXVFhrT0VrNS9CUG1abHlZdDRDMlg3RExiSnQ0Q0JKeVdPVjllQVNKYVRFdFYxMWxETjFWRnZxemwwNkFnQUFBR0NTOFFUOTVQcmNKY3NCa1JGUzdKSzJPc285VlNGKzk4VEpzdU9tQVpLNmRadnVCZnlZU3RSL1dDaWJ1MTRuaCtkOFk4Zm5xa1NYcTNRcloxbHBhWkxDK3dvQUFBQndoZGtFUFN0TDByWnUxMEhPd2h2VWw4RFFjeXNNcDRxK2JiL2pIam40NnB2MlhuZWdNTWs4ZGx4MkRoNG1lNlkrWTcvWHprVkV6Um9TV0xTb2puS1dzaWVYSnpBQUFBQUF5QmVqQ2JyYTNwNlJuS3lqbkttem1zK0ZTczYzM1RwUWtoYjlwSHVBUWlnalF4SmZlTVZlUlhJdVNYcEFSSVFFbDQzU1VjN1NkNU9nQXdBQUFHNHdPNE9lbVNtWnVUek9LYWhDZWQwNk83WHNObjdZQ0RtNWJJWHVBUW8zdFlya3dGc3pkSFIyNnVpMmdORGNGWDdMMkxkZnR3QUFBQUNZWkh3UHVnbjdYM3RUVG56M2c0NEFLUHNtVFpPa0ZYL3BDQUFBQUlDdk1Yck1tdG9YdnFsTHJLUnVqTk05MllzYU5GQ2lodzNWVWZaT2JvcVRMVjJ1czJmUmN5MHcwTjV2RzF3bVNnS2pTdWxPd0tPc2QyVEd6bDJTY2VLRVpKNUkwcDI1RTFxcmh0VCs4bE1KaklqUVBXZVdsWkVoY1oxakpXWGpKdDJUdlpMZHVrcVZhWk4xQkFBQUFNQVUzMHJRclgvcXR0dnVrQk1MYzdudjNENDN1b09VSFhDemhOZXJLOEhGaXVrSEFJL0x6SlMwdzRmbHhPOS95SUhuWDdJU2FlczlsSnUzYWtDQWxCOHhUTXJkZnF2dU9ETVNkQUFBQU1CN2ZHcUplOUtxMWJsT3prTmlxa2oxajJaSzlWZGZrS0xObTVHY3c3Y0VCa3BJVkpTVTZueVYxSjR6V3lvK09Wb0N3c1AxZ3ptd2t2akVsMStUaktSem0za0hBQUFBVVBCOEowRzNFbzhEcjc2aGc1eUZuOTlBYXM3K1NJcGUxRlQzQUw1TEZYUXJjMzBmKzRaVFVNa1N1amQ3R1ljT3l4RjFQam9BQUFBQW4rSXpDWHI2a2FPUzlNdHZPc3BlY01YeVV1MzFseVdrZEduZEEvaUhJbzNPbDhyUFRiVmU1RUc2SjN0SFB2dEN0d0FBQUFENENwOUowSk5XcnBMTVk4ZDFsSTNBUUtrNGRyU0VsQ3VyT3dEL1Vyek54VkxxaGo0NnlsN3lueXNrNC9nSkhRRUFBQUR3QmI2VG9QLzJ1MjVsTDd4ZUhTblI0UklkQWY2cDdJQmJKU0E0V0VmWnlNaVFwSlVyZFFBQUFBREFGL2hNZ3A2OGJwMXVaYTlFbDZ2dC9icUFQd3VyWEVraVdqWFhVZlpPclY2cld3QUFBQUI4Z1U4azZGa1ptWksyYWJPT3NsZnNzazY2QmZpM1ltM2I2RmIyVXZmdjF5MEFBQUFBdnNCSEV2UjBPMGsvbTdBS0ZYUUw4RytoMWF2cFZ2WXlUM0RVR2dBQUFPQkxmR2FKZTY0RTZEOEJmOGRySFFBQUFQQTcvcFdnQXdBQUFBRGdvMGpRQVFBQUFBRHdBQkowQUFBQUFBQThnQVFkQUFBQUFBQVBJRUVIQUFBQUFNQURTTkFCQUFBQUFQQUFFblFBQUFBQUFEeUFCQjBBQUFBQUFBOGdRUWNBQUFBQXdBTkkwQUVBQUFBQThBQVNkQUFBQUFBQVBJQUVIUUFBQUFBQUR5QkJCd0FBQUFEQUEwalFBUUFBQUFEd0FCSjBBQUFBQUFBOGdBUWRBQUFBQUFBUElFRUhBQUFBQU1BRFNOQUJBQUFBQVBBQUVuUUFBQUFBQUR5QUJCMEFBQUFBQUE4Z1FRY0FBQUFBd0FOSTBBRUFBQUFBOEFBU2RBQUFBQUFBUElBRUhRQUFBQUFBRHlCQkJ3QUFBQURBQTBqUUFRQUFBQUR3QUJKMEFBQUFBQUE4Z0FRZEFBQUFBQUFQSUVFSEFBQUFBTUFEU05BQkFBQUFBUEFBRW5RQUFBQUFBRHlBQkIwQUFBQUFBQThnUVFjQUFBQUF3QU5JMEFFQUFBQUE4QUFTZEFBQUFBQUFQSUFFSFFBQUFBQUFEeUJCQndBQUFBREFBMGpRQVFBQUFBRHdBQkowQUFBQUFBQThnQVFkQUFBQUFBQVBDTWl5NkxianN0TFRaVk9YV0VuZEdLZDdzaGMxYUtCRUR4dXFvMy9LVEUyVkRhM2FTOGFoUTdybnpCcXNYUzZCa1pFNk1pYzFQa0ZPcmQrZ0kvaXowSmdZQ2E5WFIwZmVjV1QrQWtrWU1FaEhaMWFpUjZ6RVRKNmdvMy9LeXNpUXVNNnhrckp4ays3SlhzbHVYYVhLdE1rNkFnQUFBR0FLQ1hvZUhKejV2dXgrYkt5TzRNK2krdmVUNk1jZjFaRjNrS0FEQUFBQS9vY2w3Z0FBQUFBQWVBQUpPZ0FBQUFBQUhrQ0NEZ0FBQUFDQUI1Q2dBd0FBQUFEZ0FTVG9BQUFBQUFCNEFBazZBQUFBQUFBZVFJSU9BQUFBQUlBSGtLQURBQUFBQU9BQkpPZ0FBQUFBQUhnQUNUb0FBQUFBQUI1QWdnNEFBQUFBZ0FlUW9BTUFBQUFBNEFFazZBQUFBQUFBZUFBSk9nQUFBQUFBSGtDQ0RnQUFBQUNBQndSa1dYVGJjVm5wNmJLcFM2eWtib3pUUGRtTEdqUlFvb2NOMWRFL1phYW15b1pXN1NYajBDSGRjMllOMWk2WHdNaElIWmx6Y3ZVYU9mN2p6enJ5dnVRL1Y4anhSVC9weUZubEI5OHJFdVMvOTNraUdwMHZ4ZHExMFpGM0hKbS9RQklHRE5MUm1aWG9FU3N4a3lmbzZKK3lNaklrcm5Pc3BHemNwSHV5VjdKYlY2a3liYktPQUFBQUFKaENnbDRJSkw0NVEvWThjZVpFTGI4YXhxMlJnT0JnSGNFdC9weWdaNldsU1ZhbXNjdFM0Uk1nRWhnU1l2MXBOUUFBLzBPTk04V0ZqNTJBNENBSkNBclNVY0Z6OWZPV3p5SWcxMGpRQ3dFU2RQL2p6d242dHFIRDVOU0tsVHBDZmdXVktDNjFQbjVmQWtORGRROEE0SFJ4M2Z0SStsbkdtRTRvUC93QktYM1ZGVG9xV0JsSlNiTGx4bHNrNC9BUjNXTldaSXRtRWpQK0NRa0laSGN0Y0RZazZJVUFDYnIvOGVjRVBhN2Z6WEp5OFJJZEliOUNhMVNYdXZPKzBSRUE0Ti9XdFd3bjZRY082TWljNkVuanBVejNXQjBWb014TTJUNTBtQno3eXAzUGh1QUs1YVgyN0k4bHBGdzUzUU1nSjl6R0FnQS9GbGFycG00QkFDQ1MrTkVzMTVMemdMQXdxVEoxRXNrNWNBNUkwQUhBajRXV0w2OWJBSURDTG5uZGV0a3o3aWtkbVZkdXlMMVNyRVZ6SFFISURSSjBBUEJqWVkwYTZoWUFvRERMT0g1YzRnYy9LRmtuVCtvZXM0cGRjWm1VdSswV0hRSElMUkowQVBCajRUVnI2QllBb05ES3lwTGRrNTZXMUMxYmRZZFpJWldpcGNyNHNSU0ZBL0tBZHcwQStLdWdJQW1yVUVFSEFJREM2dkEzMzhyaER6N1drVm1Ca1JFUzg4SXpFbHl5cE80QmNDNUkwQUhBVHdXVktpV0J4WXJxQ0FCUUdLWEV4OHV1a2FQdFdYVGpnb0trd3FoSHBNajViSzhDOG9vRUhRRDhWRkRSSWhJWUZxWWpBREFyTXpOVFRwNDhLWWNPSFpLdDI3YkowcVZMSlRVMVZUK0tncEI1S2tWMkRINVFNbzhmMXoxbXFhTlp5L1RzcmlNQWVVR0NEZ0IrS3FSeUpRa0lDdElSQU9TTlNyelQwdElrT1RsWkVoTVRaZlBtemJKNDhXSjU3LzMzWmR6NDhUSjR5QkM1TmpaV2F0ZXRLK2ZWcXlkMXJLOTZEUnBJNjdadDViaExpU0hPUU8wN2YycXluRnE1V25lWUZkNm9vVlFlTzFva0lFRDNBTWdMRW5RQThGT2hWV04wQ3dCeXBoTHdBd2NPeU5xMWEyWDI3Tm55NGtzdnlXT2pSMHUvbTI2U2k5dTFrNmJObXRsSmQ2V1lHS25Yc0tHMDY5QkJicjcxVm5sODdGaDV3ZnB2djVrN1YrTGo0Mlh2M3IxeTVPaFJPNmxId1RxNjZDYzUvUDVIT2pJcnNHaFJpWmsrUlFMRHczVVBnTHdpUVFjQVB4VktnVGdBT1RoMjdKaGNldm5sVXJkK2ZZa3NWa3lpcTFTUkprMmJTcSsrZmVYK0lVTmt3bE5QeVVjZmZ5ekxsaTJUOVJzMnlPNDllMGk4ZlVUcTdqMnljL2dJeVVwUDF6MEdCUVJJOUpPUFMzalZxcm9EUUg2UW9BT0Fud3Evb0pGdUFjRC9VdnZERi8vK3Uyelo2czdSVzNCSHB2VjdqWC9vRWNrNGRGajNHR1FsNTFFRGJwYlNYVHZyRGdENVJZSU9BSDRxdkVvVjNRSUFGQmI3WDMxZGtuLzdYVWRtUlY3VVZDb09IYXdqQUU0Z1FRY0FQeFFRRVNFaFpjcnFDQUJRR0J4ZnNsVDJQL2VTanN3S3JsaEJxajQzVlFKRFEzVVBBQ2VRb0FPQUh3b3VYMDRDUW9KMUJBRHdkK2xIamtqQ3NJZXNodmw5NXdHaElWSjU4Z1FKS2N1TllNQnBKT2dBNElkQ1NwYVVnRUF1OFFCUUdLaGljUEhESDVIMFhYdDBqMWxsN3JwRGlyZHFxU01BVG1MMEJnQitLS1JHTmM2aUJZQkM0c0RiNzhpSitRdDFaRmJSOXUyazRyMkRkQVRBYVNUb0FEd2xwRnhaQ2ExUzJiV3ZrSW9WM1Vsa3JlOFJVaW42alA4R0UxOFI5ZXZyYnd3QThHZEpLMWZKdnFuUDZNaXNFT3Z6SldiS1JHNEFBd1lGWkZsMDIzRnF1YzJtTHJHU3VqRk85MlF2YXRCQWlSNDJWRWYvcEk2TDJOQ3F2V1FjT3FSN3pxekIydVVTR0JtcEkvd3Q4YzBac3VlSkNUcHlWc080TlJJUXpENVh0eDJadjBBU0J1Ujg5N3BFajFpSm1Yem0zM3RXUm9iRWRZNlZsSTJiZEUvMlNuYnJLbFdtVGRhUi96a1ZIeTl4bDNVMmZsWnNZSkVpVW1mQmR4SlNKa3IzQUVEQlNreE1sS28xYXRqSHJabXlkOWN1aVlyeTluVnZYY3Qya243Z2dJN01pWjQwWHNwMGo5V1JNOUtQSFpPNGJqMGxiVWU4N2pFbk1DSkNxbi93amhRNXY2SHVBV0FDTStnQUFBQ0FEOXIxeEhoWGtuTUpESlR5ano1RWNnNjRnQVFkQUFBQThERUhQNTB0UnovN1FrZG1sZWphV2NyMDZxa2pBQ2FSb0FNQUFBQSs1R1RjWnRrelpweU96QXFyYzU1VUdUZUdrMEVBbC9CT2cwOVI5UWkyOXJ0WjFsM1F3dmhYM0xVOUpPTkVrdjdPQUFBQUJTL2p4QW1Kdi84QnlVd3lQMFlKTEZaTVlwNmZadTgvQitBT0VuVDRqcXdzMlRmOWVVbjY5WGZKT0hMVTZGZG04a21wT0hxa0JCVXRvcjg1QUtDd3lNek1sUFQwOUROK1pXUmtXQjlIeHVyckFqbktzbDZidXlkTXlsV1IxM3dMQ3BUb01hTWtva1lOM1ZGNHFmZDhUdGNGOVJqZ0ZLcTRGd0wrVXNYOTJNKy95STViN3hUclNxaDd6Q2w3LzkxU1lmQzlPdkllcXJnN2h5cnV2aThsSlVYV3JsMHJmNjFjS2Z2Mzc1Y0RpWW42RVpHdzBGQXBXYktrbEMxYlZtclhyaTMxNnRiMWZFVnB1Q2NwS1VtMmJ0MHFxMWF2bGoxNzlzaTI3ZHRsNDhhTmN1clVLVGw1OHVRWkI5MFJFUkVTRWhJaXBVcVZrZ2IxNjB1bFNwV2thdFdxZHJ0eTVjb1M3RU1ubTFERi9UOThxWXI3a2UrK2wvaDdocWk3U0xySG5OTDkrMG5sVVk4VXVpUFYwdExTSk40YUd5eGZzVUlTRWhJa0xpNU9ObGxmNnJxUW5KeXMvNnYvcDk3ellXRmhVcng0Y1duWW9JRjlIYWhXclpvMGJ0VEl2ajc0MGpVQjNrQ0NYZ2o0UTRLZXVudVBiTFplU3htSGorZ2VjeUpidDVRYU05LzA5RjRyRW5UbmtLRDdwcU5IajhyY2I3K1ZEejc4VUg3ODZTYzcwY3F0T3VlZEo0OC85cGowNk5GRDk2QXdVTW4ydG0zYlpQSHZ2OHVpSDMrVXYvNzZTMWF1V3FVZmRVWjRlTGcwYjlaTUxyamdBbW5Wc3FXMGJOSENIcUI3RlFuNmYvaEtncDZTc0ZQaXJ1a3VtY2VPNlI1eklpNXNJalZudmkyQjRXRzZ4MytwMTcrNndmdkxMNy9JL0FVTDVQY2xTK1NZUTg5eHBKV1h0RzNUUnRwZmNvbTBzSzRIelM2NnlMNU9BRGtoUVM4RWZEMUJ6MHhKa2EzWDk1ZVR5Ly9TUGVZRWxTMGp0YitlTFNGbHkrb2VieUpCZHc0SmV1NzhiaVUxNjlhdjE1RXpMcklHS28zT1AxOUh1WFBBR2tTLy9PcXJNdVhwcDg4NGs1RmJzejc2U0xwZGU2Mk96dDJzVHo2UjQ4ZVA2OGg1VjE1eGhVUkhSK3ZJR1o5OTlwa2NPWHBVUjg2N3hCcUExdlRZVWxpMUhIM1RwazN5MmV6WjhzbW5uOHI2RFJ2c1ByY0VCUVhaTjRSNjlld3BWMTE1cFRSbzBNQ2VhVE5wMWFwVnN1elBQM1dVc3hNblRzaERJMGJZUzNSTmVYcnlaQ2xhdEtpTzhxNTgrZkxTK2VxcmRlUXNYMGpRczlMU1pITy9tK1hrc3VXNng1emdjbVdsMXV4WkVscWh2Tzd4UCtvMXIyN1FmV2g5RnJ6NzNudHk4T0JCNDF0WEFnSUNwRml4WXRLamUzZnBkLzMxMHJ4NWMrUFhnek5STnlzLy8rSUxPWExFN0tSWDZkS2w4L1U1bTFmcTUzdG41c3d6cm9CeWlyckowcnRYTC9zYWJ3SUplaUhnMHdtNjlmTGM4OHp6a3Zqc0MxWmI5eGtTWUYwa3E3NzltaFJyMlZ6M2VCY0p1bk5JMEhQbi9pRkQ1TVdYWHRLUk0rNjc1eDU1ZXNvVUhlVk1EYVptelpvbFF4OThVQkt0Z1ZSK3FPV0dmLzd4aDlTdlgxLzNuQnYxc2Rtb1NSUFpzSEdqN25IZXQ5OThJNTA2ZHRTUk01bzJhMll2NVRibG5iZmZscjU5K3Vpb1lLa1ZGZDkvLzcxTXNsNWZhaEN1bHF3V05EV1FVMHRmQjl4NnEvMDh4Y1RFMkFOMnAwMmROczFPdXYyTlNtbytzQklwRXp5Zm9GdlhuRjBUSnN2Qk45N1NIZWFvTVYzVjExK1M0bTNiNkI3L29tN3Nmajl2bmp3MWFaS3MrT3N2VjIvWW5VNjk5NnRYcXlhRDc3L2ZUdlJVTXV1bTJ3Y09sTGZmZVVkSFpxaWJFYnNURWx4Zk1hQzJMZFUvLzN5anY5c083ZHZMZDNQbkdybUdLeFNKZzZjZCsyMnhISHpoRmVQSnVmVU9rektEQnZwRWNnNzRpNFNkTzNVclo0Y1BINWJyYjdoQmJyN3R0bnduNTRxYXpWT0pFdnlQV3FyNjN2dnYyemNqZXZYdGE4OGtleUU1VjlSZ2NjZU9IVEpxOUdqN0JzKzFzYkd5ZE5teUFrc1FmRTNyVnExMHEvQlJOWGdPempDYlRQMnR6RjIzKzJWeXJtN3lmdm5sbDlLa2FWUHAyYnUzZlcwb3lQZWV1dEc3ZGRzMnVXL3dZS25Yc0tFOFBYVnF2bGFGbmF0ZXZYcnBsamxxbFptcUQrTzJKVXVXR1AvZDlyRmVRNmFTYzRVRUhaNlZkaUJSZGozd3NQR1pUU1d5V1ZNcGY5ZEFIUUZ3d3hycmcvdHNpN2pVbnVHMjdkdkw3QysrY0d5NVdwa3laZXc3Ky9BZjZuWDA4ODgvUzV0MjdlVG1XMitWTFZ1MzZrZThLZm5rU2J1R2d2cjNYbkhWVmZZV0V1U3NSaUd0Sko2NmI3OGtESC9FeWpETko1TkYybDRzRmU2OVcwZitRMjNQdXJwTEYrbHVKYVhxTThWckRoMDZKQTgvOG9oOVkvR0xMNzg4NitlaUV5NnhyajJxMEtWcGM3LzdUcmZjTTMvaFF0MHlRNjBJdUM0MmY4VWV6NFlFSFo2azlsb2xQUGlRcEZzZlRLYXB2Vll4ejArWGdKQVEzUVBBRGNlT0hyVXJaV2RIVmM3dGVPbWxkbFZ0SjExNHdRVkc3M3pEWFdvZjlkQUhIcERMcnJ6U1hyTHFTOVJOSjFYa1VOMkU2dDZ6cDJ6YzVNTFJXVDVJN2ROVlZmSUxHN1hGTStIaFJ5VGp3UCtmVEdGS2NNVUtFak41b2dRWTJsTmJFTlNLbXNsUFB5MHRXcldTaFlzVzZWN3YycnhsaXoyNzMrK21tK3g2S3lhRmhvWktkOE5KcHJKNDhXTGRjb2U2cHFvaW9DYXBteHZxZEJpVFNORGhQVmxac3UrbFZ5WHBwMTkxaHprcUthODBhWnlFbEMyamV3QzQ1ZGp4NC9ieTlUUFp2WHUzWEc0bFhEdDM3ZEk5emltTUEzMS9wV2JEMm5mc0tNKy8rS0xQTHhYLzhxdXY1S0xteldYc0UwL1lOeDN3LzBLQ2c2VkNoUW82S2p6MnYvRzJPMk9oaUFpcCt2eDB2eG9McVdNVHUxNXpqVHd5Y3FSOVBKcXZVTFBuSDgrYVpjK20vN0YwcWU0MTQ3cnJyak4rczFvdGNUZDVTc1MvcWFNeTFWWWlrMjdzMTArM3pDRkJoK2NjLzMySkpENy9zbzdNaWhwd2l4Uy9wSjJPQUxoSnpaNnJzMmIvVFJYNDZ0V25qNUhrWEZIVnh1SDdsbHFEVjdWRTNPbWowZ3FTU2lTZUdEZE9XbDU4c2F4WXNVTDNvbTdkdW9YdWFLcmpmeXlWQTlPZjA1RkJnWUZTWWZoUUtkS2tzZTd3ZlN0WHJyU3ZEUXQ4WU5ZOE8zdjI3clZ2VXM5ODkxMWpTOTVWWFFkMURKeEp1M2J2TnA0d24yN2V2SG02WlVaRVJJUjl5b3BwSk9qd2xMVDkreVhoL2dmdEplNm1SVFMvU0NvTXZVOUhBQXFDdXR0OU9yVThiY2dERDhpU1AvN1FQYzRLQ3cwdHRIdFovWWs2ci9pS3E2K1cvUzVVM2k0SWFsdEgzMzc5WEoxNThyS2FOV3ZxVnVHUWZ1eTQ3QnoraUNzMWVJcGZlWm1VNlhlOWpueWZXbExkdmxNbmlVOUkwRDIrUzkyc0huam5uVEp0K25RalNYcVJJa1drMnpYWDZNaWNiMTNhaDY2ZW8zay8vS0FqTTlUcEtpVktsTkNST1NUbzhBejFRYVFLb2JpeDF5b29xclRFVEoxay9BeDNBRG43N1YvNzA5VHhOMnJHd0pTeVpjdEtLY043eDJEVyt2WHI3UlVXSnMraDk0TEpUejFsN3hPRlNMT0xMdEl0LzZlT1FVMFlPVXJTRW5KM3lrVitoTmF1S1ZVbWpwT0FRUDlJQjM3ODhVZTVxa3NYdjlvaW9xclBqeGc1VXA1NTlsbmQ0eXhWamR5MHhTNFZ3VHlWa2lKL0dMcTUvN2NCdDkybVcyYVJvTU16OXIvK3BpVDkrSXVPekxIM25VOGVMNkdWb25VUGdJSnkraEwzbzBlUDJrZk9xQUdKS2VYTGw3Y0xUc0UzcVdySHNUMTZ5SUZFOHpkeUM5S2RBd2RLVnl2UndIODBiZHBVdC94ZjRydnZ5L0Z2ek04NEJoYUpsSmpwVXlTb1NCSGQ0OXZVcXF0dTNidmJzODcrUnEwc0cvYlFRL0xlZSsvcEh1ZTBiTmxTaWhjdnJpTXoxTEZuS1ZieWJOcm11RGpadTIrZmpweW56cXB2MTdhdGpzd2lRWWNublBoanFleWZQRjFIWnBVZWNMT1U2TkJlUndBS2twb04vZHNiYjc1cC9BaWNwaGRlU0FWM0g2V1dMNnFDVDF1MmJORTkva2tWTVp3d2ZyeU9vUGFlVjZ0YVZVZitMWG5OV3RrN2VhcU9EQW9Na0lwalJrbGszYnE2dzdkdDM3NWR1dmZvNGZmRkZlKzgrMjdIdDMrcGF1UlhYM1dWanN6WXQzKy83TGUrVFB0bTdsemRNa010YjNmcmlGWVNkQlM0OUVPSEpHSEljSFdMVVBlWUU5bWltVlFjd3I1endDdlVIbUsxVkRreE1WSEdqQjJyZTgxUnhhYmdteFl0V2lSdnpaaWhJLytrOW9TKy9lYWJVclJvVWQyRGtpVktTRlJVbEk3OFYvcXhZN0pqOElPU2RkSnd4ZkdBQUNuZDczcUo2bmF0N3ZCdGFzYThkOSsrZGhMbzcxUVJ5UnY2OWJOWEVqbkpkRlZ5Tlh2KzcrMXNUbE9yREV6dWRWYzM5dSs0L1hZZG1VZUNqZ0psbjNjK2JJU2s3OTZqZTh3SktsVktxa3lmekhubmdJZW81ZXo3OXUyVDk5NS9YNUp6T0JQZEtlcjhVdmdlOVRvWk5YcTBQUWp6VjJvQU9PS2hoNlJKa3lhNkIwcjVDaFhzeXNsK0xTdExkajA1UWRLMi9iTm9wZ25oOWV0SjlFTVAyb202UHhqNzVKT3kzTVVURDRLQ2d1eGlvMnBsaC9wU1c2WkNySEdsV3l1emRzVEh5NTJEQmpsNkxXemVySm1VS1dQMmlMMXZ2LzFXdDh3NGV1eVlyRHR0Ulo3VG9pdFdsR2JXOCtRV0VuUVVxUDF2elpBVEMzN1VrVUhXaFRONi9CZ0pMWVRucUFKZXBxcFVyOSt3UVY1NjJmelJpbW9nVmExYU5SM0JsNmlxN2FZcSszdUZPdkpvNkpBaE9zTGZHamRxcEZ2KzY5Q1hjK1RvWjEvb3lKeWdNbEZTOWFYbkpOQlBqcXo3K2VlZlplcTBhVG95UnhWcnZPTHl5K1dGNTU2VFgzLzZTYlp0MlNKN2QrMnl2L2JzM0NrYjFxNlZiK2JNc1crdzFhOVhULysvelBuSytsNU96aGFycXVRZERCOC8rck4xRGMvSXlOQ1I4OVRKRjA2dkxEaGQrL2J0alI5SmR6b1NkQlNZRTM4c2t3TlRudEdSUVZaeVh2cTIvbEx5eXN0MUJ3QXZlZk90dDJUTDFxMDZNcWRxMWFxdWZzRENHV3J2K2JQUFA2OGo4NnBVcVNJMzMzU1RQRDE1c3N5ekJzRWIxNjJUclhGeHNtLzNidG0wZnIyc1c3MWE1bi8vdlR6M3pETXljc1FJdWFaclY2bFh0NjRFNStOVWtLalNwZVdkR1RQc21UajhVKzNhdFhYTFA1M2F2a04yang1cno2S2JGQkFTTEpVblBDRmhmbElnViswM0h6QndvSTdNVUxQaXZYcjJ0Ti96Yzc3OFVnYmVmcnRkc0ZDZEJxSzJvNmd2dFNjNUppWkdMdTNVU2NhT0dTUExseTJUMlo5K0t1YzNiS2ovRnVlcEZVWDNEeDdzMko1NzlYUGVjTDNaby9aVVljKzllL2ZxeUhuZldkZGtrOXhjM3E2UW9LTkFwQ1VlbElUN0gzRG52UE1MbTBqRkI1bVZBTHhxenRkZjY1WlpsYUtqODVWRW9XQWNQSGhRZnZyNVp4MlpVNzE2ZFhsdjVrdzdJWC90MVZmbHZudnZsZmFYWEdLZm02K1NkbFhCVi8wM0ttRnMxNjZkM0huSEhmTDQ2Tkh5NmF4WnN1TFBQMlZYZkx4OC9PR0g5a0MzU3VYSyttL05uU21USmttTTlUM3d2L3g1VzBwR2NyTEVXMk9oek9QbWk1dEYzWGFMbE9qWVFVZStiOUtVS2JMVllGSFI0bGJpUFhQR0RIbjNuWGZzbTd1NXBaYkFkK25jV1JiLytxdWQwSnV5ZmNjT2VmNkZGM1NVZjVkWTF6cFZNTTZVWk91MS9xZDFuVFJCM2NUOTRndHpLMURVNy84aWw0OTZKRUdINjdJeU0yWFg2TEdTdnRmY1VRaC9VOHU1WXA2ZEtvRWNxd1FVZW01L3dNSVpxMWV2dG8vZ00rbmkxcTNsajhXTDdkbXl2TXhpcTBHNVN1Qmp1M1d6aTd5dFc3TkdmbHE0VUhyMjZISFdJNHh1Nk50WGJyamhCaDNsbjdweHNOTWF2T2ZtYTlXS0ZjYlBXbC8xMTE5bi9ONjUvVkw3WS8yUkdndnRmbXFLbkZxelZ2ZVlVNlJOYTZrNDlINGQrVDYxRDl2SjVQVGYxRXFyRDk5L1gzcjM2bVhQTHVlRjJsTDE3UFRwY3YrOTkrYjU3emlicWRiZjc5UzFVYTBHdUxSalJ4MlpNWC9CQXQxeWxxb1FiL0owajhzdnZkVDExVTBrNkhCZDR0c3pYVG5qVTRLREpIckNFeElhWFZGM0FDak1hdGVxcFZ2d0phWm56MVZpL2NGNzd6azZlNlNLUjdWcTFVcmVmL2RkZTNuc3hQSGo3UlVjL3g2b3E1bjJwNTkrMnRFQnZFb3UxSG4vdWZsU1MzVk5LMmQ5anpOOTc5eCtxWnNmL3Vqb0R3dms4QWNmNjhpYzRITGxKR2J5UkFud28rZHhpdldlVWFkL21ESjYxQ2k1N0xMTGRKUjM2clU3ZnR3NFk2dEFEaDgrTEsrKzlwcU84a2RkZzlRTlNwTisrZlZYM1hMV1h5dFhHaTB5YTdySy9abVFvTU5WU1N0WHliNHA1Z3Q2S0tYNjlwYVNuZnhuT1JlQS9GR3pwUEE5Sml2ektwZGJBL0dLRmMzZHlGVko1Z05EaDlxejZtcmZ1dHF2cXFoSzBHKysvcnE5L3h5RlM4cXVYYkp6eENnUmcwV3psSUN3TUlsNWZxcUVsRE4vSThZdE8zZnVsTGNOSHJmWW9ubHplM3VMVTlRS2xSZWZmMTRpRFoxRThKcDFEVkY3MHAyZ2Jrb1VNVmluWmMzYXRmWk5CYWN0TURRenI2aXRSODJ0MTRUYlNORGhtdlJEaHlYaDNxSG16L2kwaERlb0o5R1BQcXh1Q2VvZUFJV1pXbTRZY3c3N0NPRWRhOWV0MHkwenFydFUyVi9OYk44eGNLQzlySHpVeUpFeWVQQmdlOThuQ3BkTWZieHM1cEVqdXNlY3dLSkZKTXpQVHE2WStlNjc5bm5ncG93WlBkcnhXaVdxYnNXdHQ5eWlJMmR0Mjc1ZEZpNWNxS1A4S1ZxMHFIVHAwa1ZIemxOSHc2bHE3azVTKzg5TkZvanIyclZyZ2F6aUlVR0hLN0xTMHlYaG9VY2tMV0duN2pGSGZTQlZlWDZhQkJyZVZ3ZWdZS2dqWWE2Kzhrb1ovK1NUOXBFM0NkWUE1ZWpodzNMTStqcDY2SkJzMzdKRmZyTUdBV3IvMzExMzNHR2ZLOTNtNG92dEdVdjRuc1RFUk4weUk4MkZZcVduVTNzOUh4czFTcDRZTThiWTNsUjQxLzZYWDVQa0pVdDFaRmJHd1VPeTgvRW43ZjN1L3VEa3laUHluTUc5NTYxYXRwU09odlpoMzNQMzNjYjJNYi9sNElvQ1ZUZkRwQ1ZMbHVpV00vYnMyU01iTjIzU2tiT0NBZ1BsK3I1OWRlUXVFblM0SXZIRGorWEUvRVU2TWljZ09FZ3FUWjRnNFp4MURQaWRxS2dvZWZ5eHgrd3EyMTk4L3JrTWUvQkJlK2xaaFFvVjdPV0RFZGFYbXFXc1ZLbVNOTHZvSXJucnpqdmwyV2Vlc1l0L2ZURjdOc2tRemlodTgyWjdGc1p0dkI0THArQXlVYnJsanVOenY1TkRuMytwSTkvMncvejVjdURBQVIwNTc1YWJiemIydnF4bWpVc2JuWCsranB5bDZuUWtKU1hwS0gvYXRXMXJmNWFhb3Y2dFRsNXZmN2NTZnFlVytQOWI1Y3FWcGVtRkYrcklYU1RvTUM1NXpWclpOMjZTV29laWU4d3BxZmFkWDVIL3doNEF2RU1ObDlTeE5TdVdMWk9Sanp4aUorcm5RZzI0MUJKMytDYlRpZXlDaFF0bG04SGptb0RUUmZYc0xwSE5tdXJJQmRiWWE4K1RFeVROWUdMcmxsbXpadW1XODlRS3E2NEdsM2VyWmRMWHhjYnF5Rm43OXUyVHBVdWRXWlZScWxRcHUycTVLV29mZW1wcXFvN3liOUVpYzVOLzNidDNMN0FpbFNUb01Dcmp4QWxKR0RwY3NnenVGL3BiV1AyNkV2M0ljRFdhMHowQWZKMzZjTHovL3Z0bDFrY2ZHUzNrQmU4eWZjeVdxZ1o5ZGRldWtwQ1FvSHNBY3dLQ2c2WFNFNDlMZ0l2SE5tVWVQU1k3UjQxeFphTEVsSlNVRkpuenpUYzZjbDR6NnpwVHBrd1pIWmx4bWNIRTkrTlBQdEd0L092VnE1ZHVPZStFbFJjc1g3NWNSL21uYnJDYW9HN1k5TC9wSmgyNWp3UWR4bVJsWk1qT2thTWxOYzdjMllSL0N5eFdWR0plbUM2QjRlRzZCNEEvR0hUbm5USnA0a1RIaS9iQWQxUnpvYmlmT2tPM1djdVc4c0dISHpvNnV3T2NTVVR0V2xMMnZydDE1STdqOCtiTFFSOWU2djdyYjc4WlBWcXRrK0V6d0pXNmRldnFsdk5VOFRWVmhNMEo2bGc0VlN2REZMVlZ3UW03ZHU4MnR2KzhacTFhY2w3dDJqcHlId2s2ek1qS2tzVDNQNVJqWDVtNzIvbGZnUUZTY2V4ajdEc0gvRXpucTY2U3laTW1HVi9pREc5cjFLaVJicGwxOE9CQjZYL0xMZEswZVhPWjlja25jdlRvVWYwSTRMeHl0L2FYc0xwMWRPU092ZU1tU3VxZXZUcnlMVjkvL2JWdU9VOTl4blJvMzE1SDVvU0hoOHY1RFJ2cXlGbTdyV1QxMEtGRE9zb2ZkVFJrRzRQSGtxcnowSjNZaHo1MzdsemRjbDczMk5nQ25SZ2dRWWNSeWVzM3lMNkpVOXpaZDk2enU1Uyt0cXVPQVBpRDBxVkx5eXN2djF4Zys3L2dIZXBjWXJkdTBxaEI0NFlORytUNmZ2Mmtib01HY3UvOTk4dXlaY3ZzNWJXQWs5U0t2OHFUeGt1QWk2ZExaQncrSWdtUGpMSlhPUG9TVlFUc3g1OSswcEh6MVBGaTZpZzAwOVIxckdLRkNqcHkxckZqeCt5Q2wwN3AzNysvYmpsdjA2Wk5qcXhVTXJhOFBTeE1icjc1WmgwVkRCSjBPQzdqK0hGSnVHZXdaQ1dmMUQzbWhOYXFJWlZHajJUZk9lQkgxQ0RteWJGajdidjRRSTBhMW5VK09scEg3bEhIdTczOHlpdlNxazBiYWRTa2lUd3diSmhkaU1udFk5bmd2NHJVcnllbCsvZlRrVHVTZnZsTkRzMytRa2UrUVMxdFg3OSt2WTZjcDA3L0tGbXlwSTdNS21Idys2eFpzMGEzOHEvOUpaZEk4ZUxGZGVTc25idDJ5ZmJ0MjNXVU4rcW02ZEpseTNUa3JBYjE2eGZJWjg3cFNORGhyS3dzMmZYNGs1SzZiWWZ1TUVmdE82LzY4dk1TYVBBNENBRHVVL3YwYnV6bjdxQVYzcVVHejdIZHV1bW9ZR3pkdGsyZWZlNDVhZDIycmRTb1ZVdjYzWFNUZkR4cmxsMDlHY2d6TmFNNitGNEpxUnFqTzF5UW1XbFhkVS9aYm42YzVoU1Z6S1VhdkRHbTlocUh1clNTb1Z6WnNycmx2TjhXTDlhdC9GT25wYlJzMFVKSHpwdjc3YmU2bFRmeENRbjVUdkt6MCszYWF3dDg5UjRKT2h4MWNOYW5jblMyQzBWSXJEZE94ZEVqSmJ4bURkMEJ3QitvMmZPSGh3KzM5K29CZjd2bjdyczljMVRlWGlzcC8rampqK1dHRzIrVUt0V3FTWXRXcldUTTJMR3k2TWNmalJheGduK3lsN3BQZU1MVmxZQ1p4MDlJd3FPamZXYXB1eXFBWmxMVkdQZHVrSlFyVjA2M25MZG56eDdkeXIvQXdFQzV5ZUNOOHZ4dVdmamhoeDkweTFtaElTRkdsL2ZuRmdrNkhITnk0eWJaTS9wSlYvYWRsNGk5UmtwZlY3QXpLZ0NjVjdsU0pmdnVOWEM2NnRXclM0L3UzWFhrSFdyUCt2SVZLK1RKOGVQbDhpdXZsRXJXUUw5WG56N3lzWlhBcThHeUU0V1E0UCtLdFdndXBhN3ZyU04zSkM5ZUlnZG12cWNqYjFPbkxKaFVxblJwM2ZKdGNYRnh1dVdNSzY2NHd0aktncFVyVithNXRvZTZybjVqNk1pOXBrMmJHcXNUY0M1STBPR0lqS1FraWIvN2ZuZk9PNjk3bmxSK1lqVDd6Z0UvMUtkM2IzdEpNM0E2dGJKaXpPalJVcXhZTWQzalBXclFlUExrU1puOStlZHl3MDAzU2YyR0RlV0txNjZTeno3N2pKbDFuRldGd2ZkS2tPRnp1UDl0LzlSbjVKUVBMSFZYTjhGTWVudkdES2xlcTVZclgwOVBtNmEvcS9NT0hqb2tweHdjaDVjb1VVTGF0bW1qSTJlcGxVanFtTFM4VU5mVFB3MjlKcTY5NWhyNzg2YWdrYUFqMzdJeU0vK3o3M3pMTnQxalRrQkVoRlI1NW1uT093ZjhrRnBhTnVDMjIzUUUvRlBWcWxYbGlURmpQREY0eW8wVFNVbXljTkVpNlgzOTlWS3ZRUU83eU55T0hUdVlWY2NaaFpRdUxaV2VmRnl0TGRZOTVtVW1KY3ZPaDBkS1ZucTY3dkVlVlpUUnlhWGJaNklTdnAwN2Q3cnlwYXF0bTZMT1FWYzNDWjJpcnJVOWUvVFFrYlBVNzFVVjNjeUx6WnMzeTRFREIzVGtIUFh6M21CZHI3MkFCQjM1ZHZpTHIrVG9wNS9yeUNEcmpWUHhzUkVTY1o3NW96QUF1SzkrL2ZwMkVnWms1NDZCQStYcXE2N1NrZS9ZdDMrL1hXU3VWcDA2MHZlR0cyVEZYMy9wUjREL1Y2SmpleW5XcVlPTzNKRzg5RTg1OFA2SE92SWV0UXo2Rk1jYzVrNVdsdU9uVEppY1VmNXF6aHpkT2pmekRPMC92N2gxYTZuZ2dlWHRDZ2s2OGtYdE85ODlZcFI5VVRDdGVMZXVFdFc3cDQ0QStKdE9uVHB4N2pseUZCd2NMRFBlZWtzdWFOSkU5L2llVHovN3pDNHNweEoxZFI0dzhMY0E2L3BYZWV4b0NTcmx6cEZmZjlzL2FhcWMzT1RzL21XbnFQT3k4N3BYdWJESnlNeDBmSWErVEpreWN2bGxsK25JV1V2KytFTXk4bENvOEx2dnY5Y3RaL1h0MDBlM0NoNEpPdklsL3Q0aGtwV1NxaU56UXV2VXRqNjBIck5uMFFINHArczk5T0VJNzFMN0lyLys2aXRwMHJpeDd2RTlhcG43SjU5K0trMmJON2Nyd0NjbkordEhVTmlGbENzckZSNTlXRWZ1eUR4NVVoSWVmRmd5cldUWWExVENlZlRvVVIyaElQVHAxVXUzbkxWdjcxNTcyZis1T0hqd29QeTVmTG1PbkJNUkVlR3BBclVrNk1pWE5KZk9PNDk1ZHFvRUZTMnFld0Q0bTByUjBWS3ZYajBkQVRrclc3YXN6UHZ1TzduODBrdDFqMjlTQloxVUJmaUwyN2ExOTFVQ1N0UTExMGpSRHUxMDVJNVRhOWZKL2xkZjE1RjNxSnRaMUcwb1dCMDdkcFNRa0JBZE9lZWtkZjA3MSswK2E5YXVkWFNmL2QvYVhIeXgwU1B3emhVSk9qeXYvTU1Qc3U4YzhITk5talF4TWdDQS95cFpzcVI4OXVtbk11VCsrKzB6ZTMyWkduUzJ2ZVFTbWZ2dHQ3b0hoVnBnZ0VTUEdpa0JMcC85ZitERlZ5WFpTdFM5Sk4xSHptcjNaOUhSMFhKeHExWTZjdGJYWDMrdFc3bXphTkVpSXpkc2JqUjQ1bnRla0tERDg5SlU5VTd1bmdKK3JSckY0WkFIWVZZQ00rbXBwMlRXUng5SmxjcVZkYTl2U2p4NFVIcjA2aVh2dmYrKzdrRmhGbDQxUnNvUEcrTHExcjZzbEJUWk9mSXh5WEs0MEZoK3NQM0RHL3IyN2F0Ynpqclg1ZXJ6NTgvWExlZW9iVk9tOXRubkZRazZQTy9ncTIvS3NaOS8wUkVBQVA5MFRkZXVzdXF2dit6WmREWFk4bFdxSU5hQWdRTmwxaWVmNkI0VVptVnU2Q3ZoRGR6ZCtuTnE5VnJaKzhKTE9pcDR4ZGplbUd0cUpWRmtaS1NPbk5XaGZYdjdocWpUMU9xaC9mdjM2eWhuaVltSnN2VFBQM1hrSEhYV2UxUlVsSTY4Z1FRZCtSTFpvcGx1bVpPVm1pWTdIeHdocWJ2Tm5vTUpBUEJkUmEyQnZKcE4vOHNhd1BYdTFjdllRTlcwOVBSMHVmMk9PMlQ1aWhXNkI0VlZZR2lvVkprMFFRTEMzVjNxbnZqNjI1SzBhcldPQ3BhcEk3NzhrWHFtMUVrWEpxZ2pVQnMyYUtBajU2amw2cjh0WHF5am5DMysvWGY3K3VpMC9qZmRwRnZlUVlLT2ZLa3k5U2tKS21QK3JsUEdnVVNKSC95QUp5dU1BZ0M4bzNMbHlqSnp4Z3hadVh5NTNIdlBQUkpWdXJSK3hIY2tKU1ZKLzV0dlpua3Y3Qm84Wlc2L1RVZnV5RkpWM1ljL1lsZDNMMmlxTmduMVNYSW53T0FNdXBxZHY3bC9meDA1NjdmZmZ0T3RuUDMwMDArNjVaenk1Y3JKcFowNjZjZzdTTkNSTHlIV0M3dktNMU1rSU1UTUhidlRuVnk2WFBZOSs0S09BQUE0TXpYclZxMWFOWms2WllwczJyQkIzbnJqRFduVnNxVlB6Y1p0MkxoUkpreWNxQ01VV3RacnR2eWR0MHRvclpxNnd4MnBjWnRsNzRzdjY2amdxSVN6U0pFaU9rSk9WQklkR2hxcUkrZDF2dnBxQ1RQdzk2dVo4ZHdVZnZzMWw0bjh1VkRWMjlYcUs2OGhRVWUrRld2ZFNxS3NEdzgzSkw3OHVoejcxZmszS0FEQVB4VXZYbHo2M1hDRC9MUm9rV3hjdDA0bWpCdG5EOHBNRERTZDl0SXJyOGkrZmZ0MGhNSXFNRHhjS2s5NFVpUW9TUGU0UTQyNVRoZzRjL3BjcUgzUDRTNVhzL2RWNWNxV05acWdxMnJ1alJzMzFwRnpWcTFhWlI4NW1STjcvL215WlRweVR1L2V2WFhMV3dLeURCNHVtSldlTHB1NnhFcnF4ampkazcyb1FRTWxldGhRSGYyVFd0YThvVlY3eVRoMFNQZWNXWU8xeXlYUVIvZWNtWlQ0NWd6Wjg4UUVIVG1yWWR3YUNRZ090bi9YMjI2OVE1SisvbFUvWWs1d3ViSlM2NnZQSk1UNnM3QTZNbitCSkF3WXBLTXpLOUVqVm1JbW4vbjNucFdSSVhHZFl5Vmw0eWJkazcyUzNicEtsV21UZGVSL1RzWEhTOXhsbmUzWHNFbUJSWXBJblFYZlNZZ0xXMEpNdUgvSUVIbnhKWE9GZys2KzZ5NlpQbTJhanJ4TmZXdzJhdExFbnVFMDVkdHZ2cEZPSFR2cXlCbE5teldUVmF2TjdTdDk1KzIzcFcrZlBqcnlOdlU3UEhic21Id3pkNjRzdEJKM3RjUnl5OWF0UnZZMzV0ZXdCeDZROGVQRzZjaFphdEJidFVZTnV6aWRLWHQzN2ZKY0FhWi9XOWV5bmFRZk9LQWpjNklualpjeTNXTjFkTzUyVFhoS0RyNyt0bzdjRVZJMVJzNmJNMXVDQ21oOHJkNlRkUnMwa0IwN2R1Z2U1Nm5WTnUzYXR0V1I3enF2ZG0xNWFQaHdIWm54MHNzdnkzMkRCK3ZJT1F0LytFSGF0R21qby8vMXlhZWZTdDhiYnRDUk05UzU1MXMyYlpMdzhIRGQ0eDBrNklXQUd3bTZrbmJ3b01SZDNVMHk5cHYva0l0czNWSnF2UDJhQkJUU2ZVa2s2TTRoUWM4ZEV2VC9SNEorWnI2VW9QK2JTZ0xVVExWSzJOV1htcWxSbFlVTkRwRnlUYzFhcVpsL0U0TklFdlQvOEpVRVBlUDRjZGw0OWJXUzduTFIzTkw5K2tybHgwZlp5KzBMd2lVZE91UzZrRmhlWEhYbGxmTGw1NS9yQ0RsUjE4VnFOV3RLbXNOSDhZMTQ2Q0VaTzJhTWp2N1hnTnR2bHhrelorcklHWDE2OTdicmxYZ1JTOXpobUJEckE3anlsSW11TE1GS1hyeEU5cjd3c2hvcDZ4NEFBUEpHVlQ2dVZLbVMzRDVnZ016KzlGUFpzSGF0L1B6amozTFhIWGRJMVpnWVk1V1JjMlB2M3IyeWN0VXFIYUV3Q3lwV1RDbzlhU1V4Z2U0TzN3OS9PRXVPLzFsd1M5MmJYWFNSYnBteGVzMGF5Y2pJMEJGeVVyWnNXV25ab29XT25KUFRQblIxQTNIeGtpVTZjazZQN3QxMXkzdEkwT0dvNG0wdmxqSjN1YkFmM1hvVEgzenhWVG4reDFMZEFRQ0FNMVRSb0JiTm04dXp6endqNjYxay9hZUZDMlhRWFhjVlNFWDR6TXhNK2ZycnIzV0V3azZOczBwYzAxbEg3bEFyekhZT2YwUXlrZ3JtVklIYXRXdnJsaGtuVHB5d3Q3emc3RlNoeld1NmR0V1JjOVNLdEpTVUZCMzkwNTQ5ZTJUTGxpMDZja2I1OHVYdGxSTmVSWUlPeDVXL1o1QkVORGQ3dDFQSlNrdVRuZmM5SUdrdUxLa0hBQlJPNm9pblpzMmF5VFBUcHNuV3padmxwUmRla05xMWF1bEgzYkhrano5MEM0V2RPa29yK3VGaEVoVGw3czJpdEIzeHNudmk1QUpadWRqQ3dJenQ2VlJ5dmludTdOdHg4Ui9YWG51dDR5ZGlxSlZDMjdkdjE5RS9xVG9oVHE5dzZOSzVzOUdDZXZsRmdnN0hCWWFGU3N3elV5U29iQm5kWTA2Nmxad25ESHRZc3RKWm1nUUFNRXNkK1RUZ3R0dGs1WW9WOHVUWXNSSVJFYUVmTVV2dGlXY0pMdjRXVXJhc1JJOGU2ZnBTOXlNZmZ5TEhmak8zRnp3NzFhdFZNM3JVbWxxbDhzTVBQK2dJWjZOK0g4MmJOZE9SYytaa3MxTEk2UlZFNmppNjNqMTc2c2liU05CaFJHaUZDbEw1NlluL0xTQm5VdEpQdjhxKzUxL1VFUUFBWnFsWmRWVXQrZk5QUDVVaUxoU25WVVhzZkhVSnJoY3I0L3VEa2xkZUljVXVkYmFRNU5uWVM5MkhqWkQwdzRkMWp6dlVscFA2OWVycHlBeVZISHFoS0tTdk1GRVE5RXlGQUpPU2toemZmMTdSeWxGYXQyNnRJMjhpUVljeHhkdGNMS1h2dUUxSFppV3EvZWkvc3dRUUFPQ2VEaDA2eVBCaHczUmtqcHJoVS90a25hYUszem05VlBYZjJOdHJSa0JRa0ZSNi9GRUpMRkZjOTdnamZkOSsyVFYra3F0TDNZT3NuL1hTVHAxMFpNWmZLMWZLdG0zYmRJU3p1ZUx5eXgwdm5ybDh4WXIvT1E5ZEhYK3BLc2M3cVZ1M2J2YjUrbDVHZ2c1enJBLzlpdmZmSXhFdG5WOEc4Mi8yZnZRSEhuTDlyaTRBbUtBU01pZXBtU0duajhYQmZ3b20zWGJiYmNhWHVxdmYzNzhIcms1UWcxVFRDYnJKSTl3S3U5RHk1YVg4ZzBOMDVKNmpuMzhwUnhmOXFDTjNYSEhGRmJwbGhscnA4WlpIajl6eW9obzFha2pEQmcxMDVBeDExT1d1M2J0MTlCK0xGeTkyZEdXRHV0blR6K0h6MUUwZ1FZZFI2cHp5S3BNblNsQ3BrcnJISEhVdWFNSkRJNDJmWncwQXBoMC9mbHkzblBISnA1L0srZzBiZEFRbmxTNVZ5dDZUNll0TUorZktab2VyTCtPZnl2VHFLUkZOTDlDUlN6SXpaZGRqWXlYOTZGSGRZWjQ2VlVFZDhXWFNqSGZlc1pkVTQrelVQdTRiKy9YVGtUUFVUWkxmZnZ0TlIvOHhaODRjM1hKRzFhcFZwZEg1NSt2SXUwalFZVnhZNVVwU2FlcFQ5bklzMDA3TVd5RDczM2hiUndEZ201eGMwaGNmSHkvM0RSNnNJLzl5OE9CQk9YQ2dZRS95VUFOVnRTZmRORFh6NDdUdzhIQUpOSnlrcTJXck1DY2dPRWdxajM5Q0FpTENkWTg3MUtUSXprZEgyOG02RzlSeTZsNkdDM3VwNDd6R1B2R0VqZ3FlMHl1cG5LYU9LWE82RXZyY2I3L1ZyZi9jcVA3bFh3bDdmbDE3elRXZXJ0NytOeEowdUtMRUplMmsxSzAzNmNpc0ExT215L0hGemhhVUFBQTNyWEFvcVZIN2YvdmRlS01rSmlicUh2K2hrdk91MTE0cnpWcTBzQ3N3RitSZzF2UnVYSldjRnk5dVpxOXg0OGFOZGNzTU5TTkc4UzJ6SW1yVmxITDNEckszRnJycDJMZmZ5NUg1QzNSa25xcThiWHJWeDZ1dnZTWnIxNjNUVWNGUTI1SGVmZmRkdWVubW16MWRaTEZhdFdwU3ZYcDFIVGxERllyNysyZGV0V3FWb3lzYTFNM1VXL3IzMTVHM2thRERIZFlGdGVLUSt5UzhTU1BkWWM1L3FvdytMT21IaitnZUFIQ09HaUNXS2xWS1IyYW9ZN1h5bTlTa3BLVElMYmZlNm5nRlhDOVFNeXZYeHNiYXo1UGFzOWpGU3RUNzMzS0w3UDdYL2tVM3FMM2hwbStBaEFRSFM0a1NKWFRrck1xVkt1bVdHY3YrL05NKzR4aG1sZTEvbzRUVnE2TWpsMlJteWE2Um95WE5wVlVzelpzM04xN04vWVNWRUtxYm1rZGRYTDcvTjNYTlg3bHlwVng2K2VWeXk0QUI4dkdzV2ZMc2M4OTU5Z2FYV2puVTcvcnJkZVFNZGVOMTE2NWRkbHNsNjA3KzdPZlZyaTIxclM5ZlFJSU8xd1JHUkVqTWMxTWwwTkFzd09uU2QrMzV6L25vSGw4ZUJNQTNtUzRLdG5yTkdsbTdkcTJPenQzSmt5ZmxaaXM1LzlMaC9YdGVvS3FaOSs3YlY1Yjg4ZjhuZDZnendqLzg2Q05wZk9HRjh0U2tTVVlxbm1mbnA1OS9ObjVqb0VtVEpzYVcwVmN5bktDcjM4WGpZOGJrZWFETk1XMjVFeGdlTGxVbVBHblgvbkZUeHNGRHN2T3hzU3E3MUQzbXFKVWtRMXpZcnJQR3V2YjI2dFBIOFZvZ09WRko2VzIzM3k0dEw3NzR2OGVOcWZmTXFOR2paZjc4K1hic1JkZkZ4anE2L1ViZDhGUTM5UlNuejZidjBxV0w0NVhuVFNGQmg2dkNLbGVXU2xNbTZNaXNFL01YeVlGMzN0TVJBRGpIMUd6bTZjWlBuSmlucEVZTjlHSzdkN2NMdy9rYk5XRHVlOE1OTWkrYmdkdVJJMGZrMGNjZWt6cjE2OHUwNmRPTnoyeXIvZStEaDVpdm9uM2hoUmZxbHZOYXQycWxXK2JNZk84OWVlT05OODdwOWJ4cDB5WVpQSFNvdEd2Zm5rcnd1UlRab0w1RTNlTE9kc0xUSFo4M1h3NTk4WldPekZJSllhWG9hQjJaczJEaFFtblRycDJzVzc5ZTk1aXhkZHMyR1RaOHVOUnIwRUJtdnZ2dS85eVFVcTk5dFRwbysvYnR1c2RiMUJMM2VuWHI2c2daMzgrYloyL1ArdkhubjNXUE0yNnpua2RmUVlJTzE1VzhySk5FM1RsQVIyYnRuelJWa2xhdDFoRUFPTVBwNDJYT1JDWFlMNzM4Y3E2VEdqWHo4Tjc3Nzh0RnpadkwvQVh1N1F0MWkxcXlQMkRnUVBuMnUrOTBUL1pVa2IzaER6OHNOV3ZYdGd2a0xWMjYxUEZqNXJaWkErYk9YYnZhQTJ5VDFMNUprOFd4YXRXcVpYOFBrOVJ6Zjg5OTk5bUp4dXJWcTgrWWNLdlg3MFlyS1gvbm5YZmt5cXV2bGtZWFhDQXZ2UGlpdlkxQkpTN0loWUFBcVhEL1BSSmF2YXJ1Y0lsMWpkb3o3aWxKZFdFclE3Rml4ZVRSa1NOMVpKWkt6bHUyYm0ydnlqbnM0REcrYW9XVG1oVlhLNEhxTjJ3bzA1OTlWazdtY0l6aS9nTUg1TnJycm5OMVpWQnVxWlU5dlh2MTBwRXpWTjBLZGMxMnNxN0lCZGIxUkIwTjV5dEkwRkVnS2d5K1Q4SWFtTjFIcEdSWkY4R0UreDdnZkhRQWpsTEZjVXhUaWZuUUJ4NlFJVU9IMnJNbmFobjN2NmsrZFhhc0tpalV0Rmt6dWVXMjJ5VHg0RUg5cVA5UXladjYyVDZiUFZ2MzVFNnk5Um1nYm5LMGJkOWU2alpvSUk4OS9yZ3NzeEkrTlR1VGw5VUphc0NvS2oxUGZPb3BhWExoaGJMaXI3LzBJK1pVcmx4WnpyY0c4YWFvR2JDU0pjMGZoWnBoUFhjZmZQaWhORy9WU2lyRnhOaEp1TnFHMGNkS1VscGRmTEZVcmxwVkxyQ2UwOXNHRHJSdk1KMytlbGUvTjdVM0ZXZW5scnBYR2pkV3JRZlhQZTdJT0hSSWRvNGNMVmtaNXJjV1huLzk5VWJmRTZkVHliUmFsVk8zZm4xNWNQaHdXYjU4K1Rrbnl1cTFyRmJ6cU8wd2FsVkluWHIxNUtvdVhlenIyWm11NjJleWJ0MDZ1ZU91dXp4WjJWMGw2RTdlNU51d2NhTjg5dm5uZWJwR1owZFZiemQ5STlKSkFkWVA3OXhQL3krcVdOZW1MckdTdWpGTzkyUXZhdEJBaVI0MlZFZi9sSm1hS2h0YXRiZmYvRGxwc0hhNUJFWkc2Z2gvUzN4emh1eDV3c3l5OG9aeGF5UWdqL3M1VG0zYkxsdTZYaWVaU2NtNng1eWlWMTRtMVo2ZjdzcFJiMjVRVlZNVEJnelMwWm1WNkJFck1aUFAvSHZQc2o0UTRqckhTc3JHVGJvbmV5VzdkWlVxMHlicnlQK2NpbytYdU1zNkd6OC9QN0JJRWFtejREc0pLUk9sZTN6TC9VT0d5SXN2dmFRajU5MXREVHltVDV1bUkrLzdhK1ZLYWQ2eXBhTURpSnlvNDdCcVdJbVVPZ3Y0NzJSS0xlZitmY2tTMmJscmw2dDdKYlB6enR0dlM5OCtmWFRrSERWenJoSTVwNWJzcXlKL1phS2k3SnNzSFR0MGtQUFBQOTh1UEZXNmRHbTdVcnJhVDZtKzFNQlpmYW1aTTFXSTdwZGZmcEh2dnY5ZS9zekRBRDAvSG4za0VSbHRKUWdtWGR1dG0zeHoydkZHWGpUNHZ2dGs4cVJKT25MV3VwYnRKTjJGUW1mUms4WkxtZTZ4T2pMSXVpNGxQRFpHRHIvL2tlNXdpZlhlcXZUVU9JbHk0V2Y4MlhvL3FtSnFCWkd3bGk5ZjNpNDQxckpGQzZsUXNhSjliVmJYanJEUVVFbTNyaGxxbWJxNnFhcUtJOGJGeGNtdml4ZkxnZjM3NWVpeFkvcHZ5THVuSmt5UW9TNXNxemtYNm5mUXVrMGIrOXJvbEwrdndVNVExL3kxcTFiNVRJRTRoUmwwRkpqdzZ0VWsycnFRaXd0M3RFNThPMDhPekppcEl3RElIelU0aTdDU1pyZW9HV1MxM1BLdEdUTmsyalBQMkYrcXZYN0RCazhrNTZhb2dhN2E0KzNrZm5wMVUrVkFZcUs5ZFBxcHlaT2wzMDAzeVlYTm1rbTFtaldsZE5teVVyVkdEWHZaYVl5VndLdTQ1bm5uMmZ1Z0gzbjBVZm54cDU5Y1RjN1ZUWU43NzdsSFIrYjBNWEJqeFdrdnZmS0tiTEtTSGVTQ1d1bysrRjRKS2xkV2Q3akVlbS90blRoWlV2ZnQweDNtWE55NmRZRWRtYVZXTGFrYkJKT2ZmbG9lZVBCQnUrWkhwOHN1a3phWFhDTHRPM2EwYnh5bzdUaHE1bjNHekpteWVmTm1SNUp6WmZUamo5djc0NzFFelV4MzY5Wk5SODV3S2psWExtalN4S2VTYzRVRUhRV3ExRlZYU0ttK3p1NWR5YzcreWRNbGVXM0JubTBKd0Q5RVJrWktodzRkZEFRVFZISisvK0RCOHZxYmIrb2VkNmlWQ2ZFSkNZNE5xUE5qMEoxMzJrbTZhWmQyNmlURml4WFRrVGVwbFJRUFBmeXdhNnRXZkYxSVZKUlVHalBLbFVtUTAyVWNPaXdKd3g4eHZ5ck4rcm1lbmpMRjhRSmxYbmZLZWgvYzFMKy83Tml4US9kNHc1V1hYMjdQVkh2UkRRNGZCZWNHRW5RVUxPc0NHejFxaElTZmI3N2dVdGFwVTVKdzcxREpPTzY5SWhzQWZFL1BIajEwQzA1VFN5WWZIRFpNWG4zOWRkMVQrRFNvWDE4ZWZ1Z2hIWmxWcGt3WnVleXl5M1RrWFY5Lzg0MHMrdkZISGVGc1NsemFTWXBkM2tsSDdrbjZkYkVjbkdYK0ZJa2lSWXJJekJrejdNSnhoY20rL2Z2dFdYc3ZyWjVxMUtpUko0dXdoWWFHU3RldVhYWGtPMGpRVWVBQ3c4SWs1b1ZuSkxCWVVkMWpUdXEyN1pMdzBFaDdEellBNUllYWRWUURSRGhMTFcxOGN0dzRlZkhsbDNWUDRhTUdsYTlhUDMrWTlmbm9Calh6OWNqRER6dDZuckVKYXZaOCtFTVBjZXhhTGdVRUJrcmxzYU1sS01yOEtveC9zSDVQZThaUGtsTTc0bldIT1kwYk41WTNYMy9kZnM4VUpxdlhySkZCOTl6ajZGTHcvRkFyR2t6VUlNbXZwaGRlS05XcXVueXFnUU5JME9FSllWVXFTL1NUajlzejZxWWQvMjZlSFB6d1l4MEJRTjZvUWtHeER1KzdNeTBxS2tvdWFkZE9SOTZqRXJCSmt5Zkx1QWtUQ3UxU1pwVWtQek50bWpSdjNsejN1RU1WeSt2YXBZdU92RXNWYUh4bkpqVmxja3N0ZGEvdzBJUDJ2blEzWlNVbnk4N2hJeVRMaFNKdXFrTDMrQ2VmOU93U2ExTSsvT2dqbWZMMDB6b3FlRjA3ZDdZVGRTL3BmK09OUHZtNklFR0haNVRxMmxsSzlycE9Sd1paSHhaN3gwK1M1SFhyZFFjQTVNMndCeDd3bVprYjllOTg3ZVdYN1Vyd1hxVUdVbDJzUVY2dG1qVjFUK0dpQnJjUER4OHV0OTE2cSs1eGozcnV4ejcrdUd1ejl2bnh4TGh4ZHEwQTVFNVU3TFZTcE8zRk9uSlA4ckxsY3VDdEdUb3lSNzEyVlRIRnh3MmZkdUJGVTZkUDk4d1JoT29tWDZYb2FCMFZ2S0pGaThwVlYxMmxJOTlDZ2c3dnNDNncwU05IU0ZnZDg1VVdzNUpQU3Z4ZDkwbUdIMWMvQm1CZXZYcjE3RHYwdmtBTlh0VmV2SmlZR04zalRXcVE5L3ZpeGZiWnVvVnBSaXc0T0ZoR1BQU1FQRFpxVklIOTNPcjFySTUxOC9yenZudjNiaGsvY2FLT2NGYUJnVkpwOUVnSmlJalFIZTdaLyt5TGtoSnZmcW03dXJrMTR1R0g1WldYWHBMSUF2ZzVDNEphdnIxdy9ueDdaWlFYaElTRXlJMzkrdW1vNEYzVXRLbFVyRmhSUjc2RkJCMmVFbFMwaU1TOCtLd0VGamRmOENNdFBrRjJqaHh0NzVVQ2dMeFFpY3lUVHp3aFZTcFgxajNlby82TkkwZU1rQWNmZU1DTzY1eDNudjJubHhVcld0UXUvdlRCdSs5S3hRb1ZkSy8vVXVmY1B6dDl1bjNlZVVFdkVYMWc2RkRwMEw2OWpyenJSU3NSMjdoeG80NXdOdUhWcWtuNVlVUHN5UkEzWlo0NElmRkRoMHVtQzNVRDFMWHUxbHR1a2RtZmZTWmx5N3A4eEp5TFNwUW9JVStPSFNzL0xWb2s5ZXZWMDczZWNGMXNyR2RxV1Z6ZnQ2L25ielptaHdRZG5oTmVvN3BVZk1KS25GMFlwQnliTTFjU1AvaElSd0J3N3RReFdLKy8rcW9ubDdxcldWazFJM3I2ckd5NWN1WHNQNzFPL1h1N2QrOHVmeTVkS2pmMTYrY1RTNi96b21yVnF2TE5uRGx5KzRBQm5oaE1xbG13OTJiT2xFYm5uNjk3dk1rK2RtM0VpRUpicXlBdnl2VHBMZUVONit2SVBTZi9XaVVIM25wSFIrWjE3TkJCZnYvMVYvdXNkRjlOME01RUpiNlhYWHFwL1BuSEgvTFE4T0dlL014UnEzQzhNR3V0S3Z1cjJnUytpZ1FkbmxTcXk5VlNzcWNMKzlHdEQvWjk0NTZTazNHYmRRY0FuTHVPSFR2SzFDbFRDbnoyODNScW1lY0x6ejRyajQ0YytZOS9WNmxTcFh4cTBLcG13bDUvN1RYNStjY2ZwWFdyVnA1Nmp2TkRKY0szOU84dlMzNzdUZHEyYWFON3ZVRWR1L2JGN05tZVQ5TFZzV3Z6NXMzVEVjNG1NQ3hVcWp3MVhnTGN2dGxsamJVT1BQK1NxMk10dFpYbnU3bHpaZHdUVDloN2tYMlp1bDQzYU5CQXZ2anNNNW56NVpmMlRUMnZVamNOZW5idnJxT0NvNjZwNnJQT1Y1R2d3NVBVMFNEcWZQU3d1dWFYWW1hcS9laUQ3cGVNcEdUZEF3RG5idUR0dDl1VmhMMlFRS29sOTNPKytrcHV2ZlhXLy9uM3FKa0ZWWUhlbDZnQjZnVk5tc2lDSDM2UUw2M0VVU1hxdmt6dGpmemVTaDVlZWZsbHord2YvYmZLMW10SUpUaHFOdEtMMUd0Q25VaFF5Y1BiUzd3bzRyemFVbWFnKzBVSU01T1RKV0hZdzVLWmxxWjd6Rk9yYm9ZOStLRDhzWGl4ZEx2bUdwK2NUYTlicDQ2OC9jWWI5bzI4SzY2NHdpZHVVSHJodURWZnIyRkNnZzdQQ2lwU1JLcE1teXlCTHB3em5McDVpK3g2Ykl4ZDRSMEE4a0lOQnRUKzNiZGVmOTNlUTEwUTFMK2gzL1hYMjh2Q3M1dVZWVE1jQmZYdnl5KzF4Rk1OVWhjdFdDQUw1czJUWGoxNytzeFo5T3Azb3hMejk5OTlWMzc5K1dkcFkvMSt2RDZBVkRQcGFzWk9GYThMOTlBV0ExVWM2NFAzM3BQdnYvMVdHdFIzZjhtMlQ3TmVjK1h2dWxQQ3JFVGRiYWRXcjVWOXo3Mm9JL2ZVcmwxYlpuMzhzZnk0Y0tGY2Nmbmxuai92WDFITDh6OTgvMzFaOGVlZmNyMTFUZmVsTFQ1cW1YdjE2dFYxNUw3aXhZdjd4SkdST1NGQmg2ZEYxSzBqRmNlT3NsNnA1bCtxUnovL1NnN08va0pIQUpBM2FqQzFkTWtTVjg4YlYzdk4yN1Z0S3o4dldpUnZ2dkZHamt2NzFOSnFOWXZ1eTFSaTI5YjZlZFZlNmExeGNmTFV4SWx5NFFVWDJNK0QxNmlDVGoydXUwNStYTERBVHN4Nzl1amhVOHYwMWV0bDdKZ3hzbVR4WXVuVXNXT0JQY2Vxa0o3Ni9wOTk4b245UEhhM25sTi8yZTdnTnJYVXZkSzRNZXJDb1h2Y2svanFHNUs4dm1DT3VXM1ZzcVY4OWNVWHNselh0U2pqc2RVcmF1KzJPbUx4THlzcFY2dUYxR3ZjaTllMHMxSHYxZGh1M1hUa1BuV2Q4UG5QdUN5RDFUV3kwdE5sVTVkWVNkMFlwM3V5RnpWb29FUVBHNnFqZjFLVkh6ZTBhaThaaHc3cG5qTnJzSGE1QkVaRzZnaC9TM3h6aHV4NVlvS09uTlV3Ym8wRUdMNTRaR1ZtU3NLSVIrWG94NS9wSG5NQ3JJRkl6YTgra1lnNmRYU1BOeDJadjBBU0JnelMwWm1WNkJFck1aUFAvSHZQeXNpUXVNNnhrckp4ays3SlhzbHVYZTJWRFA0cTdjQUIyVFZ1b3ZXY21GMDlZUStJSG50VWdsMDRvY0NFR2UrOEkvT3NBWU1wbDNicUpEZjM3NjhqLzVCaHZjKyttak5IeG93ZEsrczNiTEJqcHhXeFB2TlVvdnJJd3c5TDgrYk5jejB6cENwZy8yWWxYRTRhZE9lZDBycDFheDI1VHoyL08rTGo1UXRyQVA2NTliVjIzVG81ZXZTb2Z0UTk2dVpCeVpJbHBkbEZGOW1KZVRkcm9PckxleUZQbDJsOUhxOVlzY0krNG16QndvVnk0c1FKL1lnWmF0YXdSbzBhOXA3Vy9qZmRaQys3TjVHVUo0d2NMZW5IanVuSW5LanIrMGp4VmkxMFZQRDJ2L20ySksxWXFTUDNoSjlYV3lyZWM1YzltMStRMVBWaDd0eTVNbVBtVFBseitYSTVmUGl3ZnNRZDZucXRpb3gydU9RU096RnYyYktsUlBwSkhxTSs4OGFOSDYrai8zVXlPVm0rdHA1N0U1K0w2c2F0V2wzbHkwalFDd0ZmVDlDVkRPdURjL04xdlNWMXl6YmRZMDVZN1ZwUzY4dFBKREE4WFBkNER3azY0RHZTMHRMa2o2Vkw1WlZYWHBHNTMzNHJ4NjJrSnErRGtrQnJRS3RtTkZVeXJnWWduYSsrMms1YXZMNVUybTFxYUhQdzRFRlp2WHExZlB2ZGQvYmdlOGtmZjBpNk5TNVJYMDVTTTF4cW9LMFM4aGJXNytWcTYzZWlpcXVwSk4yZnFiUEl2N0VHMkxNKytjUitiaytlUEdrbjhQbWhYdHRxeFVGcksxRlJTMVRidFd0bkY4VHloU1hKOEcxSGpoeXhyeE9xOE9EaXhZdGw5Wm8xOXJYQ3lRUlNYU3ZVbGh4MXJiajhzc3VrZmZ2MjloN3ppRUp5YnZ2cFBwczlXM3IzN2FzajU2am5kMWQ4dk05c2Zjb09DWG9oNEE4SnVwSzhicjFzN1htRFpDV2JMK1pXc25jUHFUTGhpUUsvdTVzZEVuVEFONTA2ZFVyV1dBTS9sYkQvL3Z2dkVwK1FJSWxXSWhsdkRTaFVnbk02dGYrM2ZMbHlkaEV4VmZTdFdiTm0wckJoUTJuY3FKSGZKMzhtcEZwamlaMDdkOHFhdFd2dFB6ZkZ4Y25XclZ2dGdibWFTVXRLU3JKbjRNOUUvUTZpU3BlMm4zZTF2N0dhbFRUV3ExdFhxc1RFMkwrVHlwVXFGY3BCOXQvVWM3ZldlbDVYcmxvbDY5ZXZ0MmZQMUd5a2VsNjNiTmtpL3g1b1ZvcU90bWNPMVpjNjUvNkNDeTZRbWpWclNpUHJ0UjFUcFFvSk9RcWNXaDJ5YmRzMmV5V091bDZvbTFESGpoMnp2OVExWS9lZVBaSjhodkdvU2d5aksxYTBielNwNjRXNmdhcHUyS21xOHVkYjE0b3ExdXRiM1lncXpOUm5YWXZXcmUxcmhkUDYzWENEdlBYR0d6cnlYU1RvaFlDL0pPaUtPck44enlPamRXUldwV2NtUytscnV1cklXMGpRQWY5eHRvOWhac2ZOeSsxUWlOL0Z1Y25wZWVXNWhLL0t6ZldDMTNmMlhudjlkUmwwenowNmNvNjZzZmZEZDkvWkJUaDlIUWw2SVhCazloZHk0T1hYZGVTc1dsOS9iaVhvTHQ3cHRsNnV1NmM5S3ltYnp2NmF5cS9BWXNXazhwaFJFdVRCMXhRSk9nQUFBSHpKdm4zN3BQRUZGOGpCcytSMGVhRzJDL3kxZkxsZnJNQWhRUWQ4RUFrNkFBQUFmSVZLT1crNTlWWjU3NE1QZEk5ejFJcUYxMTU1eFM0bTZRODRud0lBQUFBQVlNejdWbUp1SWpsWHlwVXJKOWZGeHVySTk1R2dBd0FBQUFDTStQWFhYNDNzTy8vYm5RTUgrdnpaNTZjalFRY0FBQUFBT0c3VjZ0WFNxMCtmTTFhOWQwTEZpaFhsdm52djFaRi9JRUVIQUFBQUFEaHEvb0lGY3ZrVlY4aitBd2Qwai9PR1AvaWdmZnlsUHlGQkJ3QUFBQUE0SWkwdFRaNS80UVc1TmpiV1NNWDJ2OVd0VzFjRzNuNjdqdndIQ1RvQUFBQUFJRjlVcGZiMTY5ZkwxVjI2eUpBSEhwQ1VsQlQ5aVBOVTVmWXBreVpKYUdpbzd2RWZKT2dBQUFBQWdEemJzR0dEM0Rsb2tGellySmtzK3ZGSDNXdE9yeDQ5NUlyTEw5ZVJmeUZCQndBQUFBQ2NrME9IRHNuc3p6K1h6bDI2U0tNTExwQTMzM3BMMHRQVDlhUG1SRmVzS005TW42NGovME9DRGdBQUFBRElVVkpTa3F4YnQwN2VldnR0aWIzdU9xbGVxNVpkb2YzN0gzNndsN2U3SVR3OFhENTQ3ejJKaW9yU1BmNkhCQjBBQUFBQUlKbVptWExxMUNsN2RuekR4bzN5MVp3NU11cXh4K1R5SzYrVVduWHEyRXZZQjk1NXA4ejU1aHRqUjZkbEp6QXdVQjU3OUZGcDNicTE3dkZQSk9nQUFBQUFVTWlkT0hGQ1dyZHBJNDJhTkpFYXRXdkwrWTBieTNVOWVzakVTWk5rNGFKRmtwaVlLQmtaR2ZxL2RsK2ZYcjFrNkpBaE92SmZKT2dBQUFBQVVNZ1ZLVkpFZHU3YUpkdTJiN2VYczN0SjJ6WnQ1T1dYWHBLZ29DRGQ0NzlJMEFFQUFBQ2drRk5IbDdWdTFVcEgzdEgwd2d2bDAxbXpKQ0lpUXZmNE54SjBBQUFBQUlEVU9lODgzZktHaTF1M2xybmZmQ09sU3BYU1BmNlBCQjBBQUFBQUlNMmFOZE90Z3FWbTg2L3Awa1crbmpOSFNwVXNxWHNMQnhKMEFBQUFBSUJVcVZ4WnR3cU9TczZIM0grL2ZQakJCMUlrTWxMM0ZoNGs2QUFBQUFBQWlZbUprV0xGaXVuSWZTVktsSkIzWjh5UXB5Wk9sSkNRRU4xYnVKQ2dBd0FBQUFDa2VQSGlFaDRXcGlQM0JBWUV5R1dYWGlyTGx5NlZYcjE2NmQ3Q2lRUWRBQUFBQUdEUFdydTlEejI2WWtWNTZjVVg1YXN2dnJCbjhBczdFblFBQUFBQWdLMUJnd2E2WlZaa1JJVGNQV2lRckZ5eFFtNjk1WlpDY2NaNWJwQ2dBd0FBQUFCc0Z6WnBvbHRtaEllSHl4MERCOHJLdi82UzZWT25Tc2xDVnFYOWJFalFBUUFBQUFDMk9uWHE2SmF6cXNiRXlOakhINWZOR3pmSzg4OCtLOVdxVnRXUDRIUWs2QUFBQUFBQVczUjB0QlF0VWtSSCtWUEorcnY2WFgrOWZEOTNybXhjdjE1R1BQeXdsQzlmWGorS015RkJCd0FBQUFEWWloWXRLdVh5bUVTci8yK2Q4ODZUTysrNFF4Yk5ueThiMXEyVHQ5NThVenAwNk1BZTgxd2lRUWNBQUFBQTJNTEN3aVNtU2hVZG5WbEFRSUJkNUUzdEgyOS95U1Z5MzczM3l0eXZ2NVlOYTlmYVJkK2VlK1ladWZqaWkrMzk1amczSk9nQUFBQUFnUDlxMmFLRi9XZTVzbVdsY2VQRzByRkRCN2t1TnRaZW9qNXp4Z3laUDIrZXJMZVM4VjN4OFRMdnUrL2s2Y21UNWRKT25lemw2OHlVNXc4Sk9nQUFBQURndjBZOStxaWtuVG9sdXhJU1pObVNKZkxkM0xueTBRY2YyRVhlK3ZUdUxXM2J0TEgzcW9lR2h1ci9CNXhDZ2c0QUFBQUErQzhTNzRKRGdnNEFBQUFBZ0FlUW9BTUFBQUFBNEFFazZBQUFBQUFBZUFBSk9nQUFBQUFBSHVBakNYcUEvYit6eVR4MVNyY0EvNWFaZkZLM2NoREUvVGNBQUFEQWwvakVDRDR3TkVTQ2loWFRVZmFTVnEzUkxjQy9uVnkyWExleUZ4SlZScmNBQUFBQStBS2ZtV0lMdjZDeGJtWHY2TmR6ZFF2d1gxbHBhWExzaC9rNnlsNW81V2pkQWdBQUFPQUxmQ1pCanp5L29XNWw3OFM4QlpKKzZKQ09BUDkwN0pkZkpYM1BQaDFsTDdKRk05MENBQUFBNEF0OEprRXZlbkVyNjErYjgwYjBqS05IWmZkVFQ0dGtadW9ld0w5a0pDZkwzdkdUUkxLeWRNK1pCWlV2SitIVnF1a0lBQUFBZ0Mvd21RUTlyRnBWQ2ExZVhVZlpPL3JwNTVMNHlXYzZBdnhIVm5xNjdCbzVXbEkzYjlVOTJTdmVxWU1FQlByTTJ4c0FBQUNBeFdkRzhJR2hvVktxVjNjZDVTQWpRL2FPZkZ3T3ZQT3VaRmx0d0I5a0pDVkovSU1QeTlFdjV1aWVIRmlKZWFuZVBYUUFBQUFBd0ZmNDFCUmJWTi9lRWxTcXBJNnlwMllhOXo0K1RyYmZmcGVjMnJxTkplL3dXZXExZk95blgyVHp0VDNsbUVyT3o3SzBYWWxzY1pFVXlVWE5CZ0FBQUFEZUVwQmwwVzNIcWVSaVU1ZFlTZDBZcDN1eUZ6Vm9vRVFQRzZxajdPMS81WFhaTjNHS2pzNHVJRGhZSXBvMWxhTHQyMGxFclJvU1ZMYXNmZ1R3cUt4TVNZdmZKU2MzYnBUajMvOGdLWnMyNndmT0xpQTBSR3A4K29GRU5zdzVRVmVyUytJNngwckt4azI2SjNzbHUzV1ZLdE1tNndnQUFBQ0FLVDZYb0dlbXBzbm0ySjZTc202RDdnSHd0MUkzWFMrVnh6eW1vK3lSb0FNQUFBRGU0M05WcEFKRFE2VEsxRWtTV0tTSTdnR2doTld2SzlFamh1c0lBQUFBZ0s4eG02QUhCRmoveS9sb3RQOUtUOWVOczR1b2M1NVVtajVKQWtKQ2RBOVF1QVZYS0MvVlhuOUpBc1BEZGM5WnFIVXp1Vnc4bzdhSkFBQUFBRERQZUlJZUdKbTdtZTdjSEIxMXVwS2RPa3JGOFdQc1BiZEFZUllVVlZxcXZmMmFoRmFzcUh2T0xpc3RWVEtPSDlkUnpvS3JWOVV0QUFBQUFDWVpUZERWT2N6QnVhaTZycHphc1VPM2NzbEsvcU42WENkVlhubEJBb3NYMDUxQTRSSmFwN2JVK09SOWUxWEp1VWcvZEZqUzl4L1FVYzVDS2xUUUxRQUFBQUFtR2QrREhuWitmZDNLV2RxV2JaS3ljNmVPY3E5RSszWlM2OHRQSktKNVU5MEQrRCsxN0x4azMxNVM2N09QSkx4YU5kMmJlOGNYL3k2U2thR2pIQVFFU0ZpVnlqb0FBQUFBWUpMeEJEM2l2TnpQN0IzKytEUGRPamRoVmF0S3pmZmZrZWhKNHlTa2FoWGRDL2lob0NDSmFIYWhWUC80WGFreWJvd0VSVWJxQjNKUFZYQS8vUEVuT3NwWllFUzRoRlUvOXhzQUFBQUFBTTZkMFdQV2xMVEVnN0toUlZ1UnpFemRrNzJReXBYa3ZPL25XRWxCaE80NWQ1a3BLWExzeDUvbDREdnZ5cW5WYXlYeldPNzIyUUtlcGJhS1JKV1d5Tll0cGN5QW15V3lYajBKc0JMMXZFcGF0VnEyZGU5ckg0TjROcUUxcWt1ZEg3NnhaOUlCQUFBQW1HVThRVmMyWGR0RFVsYXQwVkhPeWc2NVZ5cmNkN2VPOGlmOXlCRTV1WEdUSkM5ZklTbWJOa3Y2c1dPU2xacW1Id1c4S3lneVFvS0tGNWZ3Q3hwTGtTYU5KYXhhTmJzdnYxUlN2cVh2VFhKeTJYTGRrN1BTdC9XWFNvK08wQkVBQUFBQWsxeEowUGU5L0pyc2YrcHBIZVVzTURKU3FuL3luajFMQ01CWkI5NTVUL1krL21UdWpsZ0xDcFNhWDM0cWtmVjVMd0lBQUFCdU1MNEhYU25aK2FwY0w4bk5URTZXK0R2dnkxUEJPQURaTzdyd1I5azNibUt1eno4UHExVlRJczZyclNNQUFBQUFwcm1Tb0tzcTBFV3Z2a0pIWjVjV255QmIrOXdvSnpkdjBUMEE4c3hLeUk5OCs3MGszSFh2T1czeGlMcmxKcnRhUEFBQUFBQjN1SktnSytYdXZQMmNCdnZwdS9iSTF0amVjdWp6TDNOVnpBckEvOG80Y1VKMlRaZ2tDZmNNa2F5VVZOMTdkaUhWcWtxcDJHdDFCQUFBQU1BTnJpWG9rZlhxU3ZIWXJqcktuVXlWWEF4OVNMYmNjTE9jV0xxTVJCM0lwY3hUcCtUZ3A3TWw3b3F1Y3VpMXQzSjM1dm5mQWdLazNIMkRKREEwVkhjQUFBQUFjSU1yUmVMK2xuWWdVZUk2ZDVNTTY4OXpaaVVOb1RWclNORjJGMHVSQzVyWTdhQVNKZlNEUUNHWGxTbnArdy9JcVUxeGtyUmtxWno0ZGJGa1dIRmVGTEhlWTlYZmVrMENBbDI3ZndjQUFBREE0bXFDcmh6NVlZRzlGMWJTejJGR0x6dWN6UXo4UHdmZXlvRWxpa3V0T2JNbHJISWwzUU1BQUFEQUxhNG42Q3FKMkRQcGFVbDgrWFhkQWNBTEFzSkNKZWJWRjZWNHV6YTZCd0FBQUlDYjNGL0RHaEFnRlI0Y0lpV3Vvd0FWNEJsQmdWSmg5RWlTY3dBQUFLQUFGY2dtVTNVbWV1VnhZNlRvcFIxMEQ0QUNFeGdvNVI0WUxHWDY5TklkQUFBQUFBcUMrMHZjVDVPVm1pbzdIeHNyUno3NlJQY0FjSk5hMWw1eHpDaUo2dDFUOXdBQUFBQW9LQVdhb051c2I1LzQzZ2V5YjhJVXlVeE8xcDBBVEF1SnFTeVZwMHlVb3MwdTBqMEFBQUFBQ2xMQkoramFxZTNiWmVlREkrVGs4aFZXMHE0N0FUZ3VJRFJVU2x6YlJhSWZlMFNDaWhiVnZRQUFBQUFLbW1jU2RDVXJQVjJPZlArRDdKczhUZEoyeE51ejZ3Q2NFUkFTTEJGTkd0dEwyaVByMXJFNk9LWVFBQUFBOEJKUEplaC95MHhKa2VPL0xwYkVOOTZXazM4c3N4TjNBSGxnSmVHQlJTS2wyR1dkcE15dE4wbGsvZnAyVVRnQUFBQUEzdVBKQlAxMHFmdjN5L0ZGUDBuU2I3L0x5WTJiSkczTE5zbEtTOU9QQXZpM0FDc2hENnRWVXlJYm55OUYyN2FSb3ExYVNGQ1JJdnBSQUFBQUFGN2wrUVQ5SDZ4L3FwcE5UenQ4UkRKT0hKZjBnNGNrS3pOVFB3Z1VYb0hoWVJKVXZJUUVseXdwd1NXS1N3Q3o1QUFBQUlEUDhhMEVIUUFBQUFBQVA4VTBHd0FBQUFBQUhrQ0NEZ0FBQUFDQUI1Q2dBd0FBQUFEZ0FTVG9BQUFBQUFCNEFBazZBQUFBQUFBZVFJSU9BQUFBQUlBSGtLQURBQUFBQU9BQkpPZ0FBQUFBQUhnQUNUb0FBQUFBQUI1QWdnNEFBQUFBZ0FlUW9BTUFBQUFBNEFFazZBQUFBQUFBZUFBSk9nQUFBQUFBSGtDQ0RnQUFBQUNBQjVDZ0F3QUFBQURnQVNUb0FBQUFBQUI0QUFrNkFBQUFBQUFGVHVUL0FFaTRQaHNXRHBDaEFBQUFBRWxGVGtTdVFtQ0MiLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCIsIkZJRE9fMl8xX1BSRSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiOTU0NDJiMmVmMTVlNGRlZmIyNzBlZmIxMDZmYWNiNGUiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjp0cnVlLCJ1cCI6dHJ1ZSwidXYiOmZhbHNlLCJ1c2VyVmVyaWZpY2F0aW9uTWdtdFByZXZpZXciOmZhbHNlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWV9LCJtYXhNc2dTaXplIjoyMDQ4LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0Ijo2LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjE5MiwidHJhbnNwb3J0cyI6WyJ1c2IiXX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDE5LTA3LTE4IiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJlV0JNIGVGQTMxMCBGSURPMiBBdXRoZW50aWNhdG9yIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAxOTA3MDkwMDMiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMy40IiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjAuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAxOS0wNy0xOCJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMTktMDctMTgifSx7ImFhZ3VpZCI6ImRkYTlhYTM1LWFhZjEtNGQzYy1iNmRiLTc5MDJmZDdkYmJiZiIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiZGRhOWFhMzUtYWFmMS00ZDNjLWI2ZGItNzkwMmZkN2RiYmJmIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IklERU1JQSBTT0xWTyBGbHkgODAgUjMgRklETyBDYXJkIGMifSwiZGVzY3JpcHRpb24iOiJJREVNSUEgU09MVk8gRmx5IDgwIFIzIEZJRE8gQ2FyZCBjIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjExMDc0NDg4MzEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfSx7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUN4RENDQWlXZ0F3SUJBZ0lHQU9yQUFBQUJNQW9HQ0NxR1NNNDlCQU1FTUlHRU1Rc3dDUVlEVlFRR0V3SkdVakVNTUFvR0ExVUVDQXdEU1VSR01STXdFUVlEVlFRSERBcERiM1Z5WW1WMmIybGxNU013SVFZRFZRUUtEQnBKUkVWTlNVRWdVMlZqZFhKbElGUnlZVzV6WVdOMGFXOXVjekV0TUNzR0ExVUVBd3drU1VSRlRVbEJJRk5sWTNWeVpTQlVjbUZ1YzJGamRHbHZibk1nTFNCU2IyOTBJRU5CTUNBWERUSTFNRGd5T0RJeU1EQXdNRm9ZRHpJd05qVXdPREk1TWpFMU9UVTVXakNCaERFTE1Ba0dBMVVFQmhNQ1JsSXhEREFLQmdOVkJBZ01BMGxFUmpFVE1CRUdBMVVFQnd3S1EyOTFjbUpsZG05cFpURWpNQ0VHQTFVRUNnd2FTVVJGVFVsQklGTmxZM1Z5WlNCVWNtRnVjMkZqZEdsdmJuTXhMVEFyQmdOVkJBTU1KRWxFUlUxSlFTQlRaV04xY21VZ1ZISmhibk5oWTNScGIyNXpJQzBnVW05dmRDQkRRVENCbXpBUUJnY3Foa2pPUFFJQkJnVXJnUVFBSXdPQmhnQUVBQ2U4amRTblZUS3R6a2dzQ0tKRnVpcFdMOXVVaXpzUnI2L2lUQ2UrREtybjAyU25wc1BIWnlvNFdaNThwVXU2NlQ2a3ZmQjhhR0E1aTdlcVVKU2doUXRHQUViZmxkU3pHSWJ0V3ZYUGhBakVSZXlmU24zYnhvRUJSZnB0MXhoMmwxR0pXdGdFcTZZSTlTcWtDSVhXQnAxUjN4NmlhYkU5SFczT1lGUUlEcm1KVXVFMG96d3dPakFkQmdOVkhRNEVGZ1FVeitvZEVSd1ZFS000VmYrc1BVUENwelZleVM0d0N3WURWUjBQQkFRREFnRC9NQXdHQTFVZEV3UUZNQU1CQWY4d0NnWUlLb1pJemowRUF3UURnWXdBTUlHSUFrSUJPL2xlamp0cGZhcjBxbDAzU2hHZk1QT1BEVHhIRVpkVXJQU2l3ZEk4a29Ja3F0WGdCL3FibzhSditPQ0IrMHZlQnNzaTZKUDlySEloZXNmWGVSQzVEY0lDUWdHeWNqb3J1S3cxQzhzNFgzamxkV0tCUitEVWM4VFcwaXhFZ0oxV1NybTZKM3VsU3d3NmNGNTF6ZWZCME9BaHZGL2hBNEo4N256M3h1Y0ZMMUticWpJY25RPT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBRElBQUFBeUNBSUFBQUNSWFIvbUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFGaVVBQUJZbEFVbFNKUEFBQUFvclNVUkJWRmhIelZocGNGUFhHZFh5bm1RdFhpWEwrMElhc01IR093WWJFbEpLZ0VrQ0FhWU0wMHliTW1sTEtBTmhuOG5DWmdncDVBL1VoSTR6aE5EU2FXY0tKR3lGTUtHQk5ISHhnbzF0R2JNYmIvSyt5SllsV2N1VDFITjFoVkJrVzlJUFluTEc0em52M2l2ZDg3N3RmbGQ4aDhQQkc0WEdlMTExbFpyZXptSE9adWZ6WFlOUEV3NGV3d3BqRWtLeVp5WEZKeWxjZ3g3d2xuWDg4SGZIRDEwMzZpMFNLU3NRQ240VVRVNWdXeHRuSHpGYUkxVFM5VHQrdm1SbHJtdkNpU2V5QnJYREsrYVVHSFRXNEZBeEJOSEJDWUROWmgvc055WlBpVGo1M3pVOG5wQU91bVIxdHZjdlNpOVd4UVREdG5SaWdtRTJjVWFqdWJSNUd5TVU0NUhLc3M5TzNpK1RpWVhNeEJscE5DeG1UaGJNbnIreEVaem8rR0R0YVNId1REVUJJakhUMjJVNGZ2Z2FPTjlnTU14Ty9EZ3FOb1QvNDRWM3dMRGJIYnJCa2JLMkR3UVhUNmxsOHFDZmdpWkFJT0RiN2J6SzcrOExwOFFzN0d6VFBYTVBQb0hERWE2U0NqbzF1c0RMQVl5TWZNWWZ6Vi84OTN4MEx3RG9vK09INndNQnhIUnBoZ1JXQ3hlZ0E3RWxrZ1VWVml4bWVIeVN3cHpWTGdBUUFjNUhMQkFLeWFQRHdTZFM3QTVFTVo2eHhEVENCYWdNWDJXeFlCZGVRS0x3cFQyZHVyUGw2eS9YYjc1UXZXRjRjTVJxc1QyWG9yeXMzb1FSaFVxR2ttMFlObS9ac3hDUFg5L2FyTzB6Y0p3OVBqbjhzbm96MWl4OUk4ZWdON3UreXgvNGVCRVg5UWZUaVBXMWxSbWhFUkx3TlV0UGlJTVltR3A2WGp5ZGZYU3ZGM1ppUmNKdnY3cERSOElVVXFHUVgxbmFWUGJOUXp4dUxKcHY0NGc1NmF4ZkNBSlpDRlAxOXhpTGlwZUJOei9zcXloOUpBNWlyVll1TFRNT0kyMlArcTFXRzEvQVoxaEJRMTJIOHhPOHlkT2lZSzBJaGF4bzQzazY4c2QzWDlMclRKVDdnejBnYStIay91MjZBb0dRdUh2NzIyY1VrVEtRRVlNMXR6QVpSRjJsRVlrWUVCaXNvMlVJQkVqUGpvTldKUGpnZ1BHckwrb3g4cHUxaGZpOE94dDh3Y0ZEYlBrQmlYUUx0M1hmSXZEcTBwWTc5UjJzaU1HZ1BEZ29WRUY4V24yOUZlNERRYlFpemgvZTdnYlBtWldNNEFNSkNaZnMzM1lKQk5oNWFNbmd3QWpsdnVIZmliRDg2czB2VWI1bnk3a0lKVEVWeDlsU002THA0TzJiN2V6akF4NW1VOS9RZ0dUT1RJQTVRV0JDSzJmN1Iwa1orSUpsNlFxbEhNNGxTMzNDanhQdE5qdSs5NjNOYzhDdm5Hdm9hdFBSRm9PejJMTm1KamlYOE83V2R3bFoxL2ZBYkRVVnJTQVNHYXRVeWZCeDhPRFFvRS8yWFhYTzgzWVh2NDRrcGR3SC9NZ2FHalJ0K3hOeEg3Qm53NFV3WnlZQ2NDdE53NVlIQTR6b1NaV0IyV3JMaVN4Z2FtWXNOUXhLRjdMaDRJNHI0UGx6SjAxSmk2TCs5UUZmc2xBU1pUTFI0cFZaNENjL3IwVDFwdWNCL001WmJIQVRlRTFGVTVDRUphdWRRSXkzTmcxUW5wbWY0TjVlSmhlZk9GSktlZEhocGYwOXc1U1BCMSt5dEgzR1BVZElVUUFPN2I0Q1gxQk95bmNRRXhvbUJiK2o3b0lsNkRnRnB1NDNkSUZNejR1RFVla2dzaUZVSWQyMS9pejQ1TFNvM01KSk9ERG8xSmdZVnhiU08zbXlZdmI4NThFLytmQWIyQW0rb0ZNMnpwYVNGa041VFhtTE85NHBVR25yYnJTQlpPUW5vT1M2enh3WTljSS9hd2U2U1dEdFA3b2NoY1BIY1RTdXJJRmVmZEdmbDFKKzRzaDFlVERwWlNtczFpZnhqa0tGbktDY0FpclZsVVNXUkNMQ24zdHJHQ3hNS2QyMWdSaE1HUjB5NzdWcGFKVHAxR2lNTFFzV3hsVnBXazRzK0o1M3ppT3Q4S1YwQ3NCc1ZuNGlTUE9EUHBQSml2cE94eW5nMDlzMW5aUm41c0ZnVDZJYkovZjFxdzliR3Z2QjkvMWxHVzRXNHhsc0RGbFlpVnAxNExOZmd2ZjE2RStmcUpKSVJYUUtjUEFjTnFzOTc0VWs4T3JTWnM5NHA0RHhOQzFhV2hxeUN4SVJESFFjd0x1RksyVGJWcDBFUndqK1llc0x1SkRSS1MrTWFTMEhQcStNQ2dicmFOSFN6b1ZPRURoNGZBRjViMUNEM2dJK0d1Z20wTW1BeUVQRlh2YkFDWVoyaXZMNDVBZ2tPK1ZlR09OYklTSkl5dTVZZXdZOFkwWkMvcHhKWm8rc29STFZsYVNVNXhZbW1ZemU4WUZ6S1RvK1JDb25CcTRxYmZaS0NHVDMvcVBFRDhCSFd5K2ljRkR1aGJGakM2NzU5NzlxQjNwSjFudzBLbXZFRXJicWY4MGdhYmx4NkY2ODdJSHNRd21ndkxhaXpmUGlDWWRPU2xFV09yTzd1T2cvckpnMGpYVEtDMlBMSWtHZ2xPMWNSd3dHYnk1WWtrYWRRb0dkYmxXM1U2NktDYkhaZmlBTGUrY1VrTWlEWE8yQTNuTmp2T2Z1ZzYrRG9KUDllMGtaYnFaMGZEVEdsZ1VnZXNxdU5pTFh3RkdYMFk2NnJjS3lBdlZONGtRZ016L09NOWNBcTVsTHp5WG5Va05OdTVBUnV1TVMrWnRiNE1ydXZac3VTbVVpcnhUMnhMaXlxTUhlKy8xcGNMR0VlV1BOVEtQQjRwNUNxcUlOQkUvTjhKYUY1TXFlU2NwSFhVV2J5Tm53QUhpbC9oNDk0Z0hjb0RPZi91c05GQjA2TlNiR2xRV2dIYmgvcDd1bW9nVjh5OTVGdzFvVE5SaGtNWXdBY1FPT3FQZXNpcWdMU2hWSllRQWREdTNEQUt5Wjk4clV5S2dROEIzcnppaWo1TDd2RUw1a0FSR1JzcUwxNXlqZnNITytic2pWOWNMRk5MeFNNMkk4a3hHQmxUM0xkUURjcW1tbjhZNlh3VjM1d3hKeXZHcWF0TmN1M3FYMXhRZjh5R0lZWVVmYjBOZGZOb0N2MmpoSHhBcHBwV0hRVnoxdVlIQjBvbEJSam5NSk5ZWHlqdFpCZWk2TkdDd3IzcG9oZGRhQzk5LytJa0lsY3dmY2VQQWpDOEFkNXNCMlY5Zjd6czZYZFlQRVlIRGkzVnJYYlNJOUt3NzlKK1VXRTVmdFBDNXJ5eldpSUplcFVIWGYzZjhLT0pLZ29hNWR4UG94RmVCZkZ0N1lPR3c1ZGF3S2ZQbWJPYUdoRXRnR2d6M2R3MVl6VVpNek81RVNLQUJTczBpdTFkMW9GWWxKVU90MTV0VmI1NElBU0NEY2hRSzVtUHFYQllTRVNUNSszMld3WFljWGF3ZEltY1ZKY0xPTStIRjZYZ0x0cSt3Mmh6SmFUc3U2dXFvVmRRUVZIMG13ZWh1UjllMmx1MTBkcnA3Ykx3S1NoWklJRVNVSHlDOVBoZk1teDhhRm95Z2diTlhWSkJsVHBrZGpBZXprdkhlNCtyQjd0N29SbDBQYWtVMjdGOUtSQSs5ZENvc2duV01nQ0VnV2dNUHIyTUh2S2YvMDdKdHdEWFp0cUhFVjFkakVNSmdLYWZqaUwxTG9TRStIRHJVa0xqRnN4ZS95OFBqbDM2cTEvY2JBZnhmaS8zcGhTYmRHNzlYS2pRazA1Z3FWUERvMkJOVzF2cm9kRGdMU1NDVHhteC8yR2cxV0pHblN6eFJvR0ZGUkcrLzJRSVFxSmhobkYvS3V2a3FEeC9GT1FFOVl6TFlaTDhielY3MTZ0TDFwS01EM2dKdGdGUkRVU1d3R1dmUVNnWWloVzhLNWtJc3BXa2dobE5ZTzl3Sy93QmxWTUM5Sm9JeVNlWjIxUGdESElhVHdSd3NQL3ROSDk1YllIby91NGc0bmVDM3dDN3kySWtvbW1Kb1Y1ZGxBUG5QZ21FckxqUlhNWDV4cUdEYkRIYTdoWndxYXpuTVhUaEVrSnNkbXpZcEdvTGxtbmltTWV1dXJ2MG9Wc3pJU3RocE54OUs4ejVTUmNoOE4wQVNBM0FCTWxzc042NlJCd1NqRTl2ajQyTDJmTHVocUgwWVN1WlpNT0pDemZUMkc0bFBMb0FreVVCZjR5T3BGUy9MM0hWdWcweG9SY1JNY1o5aHV4R0ExbXl3bEY1Wm5aS1ZBREI5WEw1eFpLRFc0RjJDK3NiR2x1T2lhdXJ3UEYzYmNRdUhUeDA1OXVzNGxyNDEzaDFWUTlteWNyV0JCM1BydDgxV1JrUUtHendqSlQ5UE9YNnA1RGp0blI5UmprZGxpYm55Z3FmeXVxZm1CVmo5a2hyK2RwbnVxOW5NV1BaVEFrSER4ODFPVk0rYytsNUFZdzRwWWROaXNtTUZWaXNmai94L3hxT2NQUmRTdmF3QUFBQUJKUlU1RXJrSmdnZz09IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiZGRhOWFhMzVhYWYxNGQzY2I2ZGI3OTAyZmQ3ZGJiYmYiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjp0cnVlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImFsd2F5c1V2Ijp0cnVlfSwibWF4TXNnU2l6ZSI6MTU1MCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0IjoxNiwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjoyMDgsInRyYW5zcG9ydHMiOlsibmZjIl0sImFsZ29yaXRobXMiOlt7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotN31dLCJtaW5QSU5MZW5ndGgiOjQsImZpcm13YXJlVmVyc2lvbiI6MTEwNzQ0ODgzMSwiY2VydGlmaWNhdGlvbnMiOnsiRklETyI6MX0sInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjo1OX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTA4LTI3IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjExMDc0NDg4MzEsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiSURFTUlBIFNPTFZPIEZseSA4MCBSMyBGSURPIENhcmQgYyIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjUwODI3MDAyIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDgtMjciLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MTEwNzQ0ODgzMX1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wOS0xMSJ9LHsiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbImZmYTI2Y2YwNzc4ZmQwOTE1YjZmMTU5ZGY4ZDk3YTYxZjEwMzg2MjUiXSwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiZmZhMjZjZjA3NzhmZDA5MTViNmYxNTlkZjhkOTdhNjFmMTAzODYyNSJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiU2VjdXJpdHkgS2V5IE5GQyBieSBZdWJpY28ifSwiZGVzY3JpcHRpb24iOiJTZWN1cml0eSBLZXkgTkZDIGJ5IFl1YmljbyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzYsInByb3RvY29sRmFtaWx5IjoidTJmIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6Mn1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImVjY194OTYyX3JhdyJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiLCJyZW1vdGVfaGFuZGxlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlEU0RDQ0FqQ2dBd0lCQWdJVVVjbU1YelJJRk9nR1RLMFRiM2dFdVpZWmtCSXdEUVlKS29aSWh2Y05BUUVMQlFBd0pERWlNQ0FHQTFVRUF3d1pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRkp2YjNRZ01UQWdGdzB5TkRFeU1ERXdNREF3TURCYUdBODVPVGs1TVRJek1USXpOVGsxT1Zvd0xqRXNNQ29HQTFVRUF3d2pXWFZpYVdOdklFRjBkR1Z6ZEdGMGFXOXVJRWx1ZEdWeWJXVmthV0YwWlNCQklERXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFEbTU1NWJXWTlXVyt0T1kwcklXSGxkaCthTmFub0NaQ0ZoN0drM1laclFtUFV3MGhrU0c2cVlIUXRQK2ZaeVMzM1ZFcnZnK0JRcW5tdW1nTmhmeEZya3dFWkVMZWlkQmNDOEM0QWc0bnFxaVBXcHpzdkkxN05jeFlsSW5MTkxGY1pZLytnT2lONlpPVGloTzUvdkJaTWJqOXJpYUFjcWxpWW1OR0pQZ1RjTUdhRUF5TXpFTU55Mm5tNkVwK3BqUDVhRjZnaTIxdC9VUUZzdUoxajJSai95bk0vU2RSdCtlY2FsNU9Zb3R4SGtGYkw5dnZ2MkEyT3Y1SVRaQ2x3NGJPUzlucHlwUWltT1o1UUFZeXRtWWFRcFdsL3BNWXo2elNqOFJxa1ZETkVKR3FOZlRLQTJpdkxZd1g2bFN0dE1QYXBnMEo4NGw5WDB2b1ZOL0ZwUzRWQ1ZBZ01CQUFHalpqQmtNQjBHQTFVZERnUVdCQlFnS0ZBaEc2UmFXK2hUeTUyZHhlVDhiQzk2SHpBZkJnTlZIU01FR0RBV2dCVFM3dTlhSW8wNmJWd2psejN5aGRVbThTVjdrakFTQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VDTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBWU16Z0xySkxJcjBPb3ZRbkFaclJJR3VhYmlIU1VLU21iTFJXcFJrV2VBdHNDaERFSHBYY0ovYmdETktZV29IcVE4eFJVakI0Q3llcFlldmMzWWxyRzhvN3pIeHBmVmNhb0w1U2V1Smt6SHhLbjRiVGFTcDkrTXZ3YW1ucDY0a1pNaU5iRkxrbmZQOWtZS29SSGtNV2hlUkoxVXNQMXo0U2Nta0NlSUxmc01zNnZxb3ZxaldDbEZzSnBCY3NsdVlIV0Y3YkJKMW40UndnK0FURW9wWTRJZ0d2Nlp2d2MrQTlyK0FUMmhxcG9Ta1lvQWwrQU5Zd2dzbE9mOXNKZTBWK1RBOVlZL1VsYUJtUFBUZDAvL3I5d3ZjZVBXWmtQaktvQUMvelVOaGZEYmg0TFY4R0hzM2x5WDJYb21ML0xOYzhKWXp5SWFERWhHUXZlb1BoaC90cjFnPT0iLCJNSUlEUnpDQ0FqR2dBd0lCQWdJVWV4OW5UOXZ3Wk5YUzQ4M0xkaVlHZncyU2pTb3dDd1lKS29aSWh2Y05BUUVMTUM0eExEQXFCZ05WQkFNTUkxbDFZbWxqYnlCQmRIUmxjM1JoZEdsdmJpQkpiblJsY20xbFpHbGhkR1VnUWlBeE1DQVhEVEkxTURnd01UQXdNREF3TUZvWUR6azVPVGt4TWpNeE1qTTFPVFU1V2pBbk1TVXdJd1lEVlFRRERCeFpkV0pwWTI4Z1JrbEVUeUJCZEhSbGMzUmhkR2x2YmlCQ01pQXhNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXUxTWV2bnk5ZHlPOVpVQzM5U29NaExjUi9EWHJ0Ri9jaU0xMnRjaXkyRVhBWjZNa3JpdlZ0Q2ZFVk05WDZJU1RFbkJQNnVTWVlvdjZwcHY2TzZKaDJOSG1ZbTR3K0puUzRWbkNQVTdtSEFNZlZJMk1HVFRNVk9ldzB4VXNHN3NJU0lrSURVQm11azhZSzljNXppYzkrdkZRR0xJa3NkWE81aVZGSWdORzUzY0dYRDRaTFpvQVBpdTBQRW96eEFxWUlhSTRneEtoT0EzUzgvVzhtSVdzdTZvZnlqNEd2a0ZHNlo3a3lGMzEwN1A3bXdGSExySTNFTmFQV01PRmNUYUdhMGR3Ky92VlJ3alJjRVpCVnN1dVQvODdja1NzMGE1cGt0M3ZaQmxhWWVUOHB6U3JlVjdtb3djSU05MEwyaWFBVGxQMG54bWFFNm5PeVRib2pGVmwyd0lEQVFBQm8yWXdaREFkQmdOVkhRNEVGZ1FVU1hFaDNzYTNidER1cm00TU0vQzdTMWxSdXVZd0h3WURWUjBqQkJnd0ZvQVU2cmRDa0o0TWUyUjYyMVI4QTdwOFRwL1lvV0V3RWdZRFZSMFRBUUgvQkFnd0JnRUIvd0lCQURBT0JnTlZIUThCQWY4RUJBTUNBWVl3Q3dZSktvWklodmNOQVFFTEE0SUJBUUI1R2MzaGFmdHA3aEtzRVpzbytpL1o1blJ1cWRtekcyV0NsVW9SVXFiYVB5Z2xuSkRqS1Iva2ZnT2w2aWJiRi96dGhtM0ttWFE3SGNESVAyeE1kRzdVMkwyaW1iSlFIcVBmL2gySHFvamI0clpndWUrNlc0a3RTUjVlbFI5TDFyWXFFL1NHWU00aUVLb1ZRU3Y3UlQxcnhJZVdpS3N3L1Z4eGkvUU9uc3gzRjd4ODBDQ1lnQjRFM3lReDhWVFc0NDBoVEV3VEExZU1IT2l4MzJ0UHR5eUhJYThQVlZJZlZwSFFKQmFNVnZ2NTA4VUVqd2tiVTJybmpmem9TVE5TOUE1alVROG1CU3ZlOTVyakIwZG85OEVVK0R4ZEJxWDIrSDZpNXdsSUNGZ3poZHpjc25lOWhHS1Q2bHpUWDRjSWRKc3JZMit4bGVLMEZGUXk2bEdFVkxFZSIsIk1JSURQakNDQWlhZ0F3SUJBZ0lVWHplaUVESkVPVHQxNEY1bjBvNlpmL2JCd2lVd0RRWUpLb1pJaHZjTkFRRU5CUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTVo2L1R4TThySVQrRWFvUHZHODFvbnRNT28vMm1RMlJCd0pIUzBRWmN4VmFOWHZsMTJMVWhCWjVMbWlCU2NJWmQxUm54MW9kNTg1aCsvZGhLN2hFbTdKQUFMa0tLdHMxZk81M0tHTkxadWp6NWgzd0duY3I0aHlLRjBHNzRiL1UzSzloRTVtR05ENnpxWWNoQ1JBSGZyWU1ZUkRGNFlMMFg0RDVuR2R4dnBwQXk2bmtFbXRXbU1ud08zaTBUQXVjc3JiRTQ4NUh2R000cjBWcGdWZEpwdmdRamlUSkNUSXErRDM1aHd0VDhRREl2K25HdnBjeWk1d2NJZkNrenlDaW1KdWtoWXk2S29xTk1LUUVkcE5pU092V3lETVRNdDFid0N2RXpwdzkxdSttc1V0NHJqMGVmbk85czBaT3dkd01SRG5INHhnVWw1Wkx3cnJQa2ZDMS8wQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQjhHQTFVZEl3UVlNQmFBRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRTXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJEUVVBQTRJQkFRQzNJVy9zZ0I5cFo4YXBKTmp4dUdvWCtGa0lMa3Mwd01OcmRYTC9jb1V2c3JoenN2bDZtZVBNcmJHSkJ5SjFYbnF1QjVzZ2NSRU5GeGRRRm1hM21pbzhVcGYxb3dNMVpyZVhySjBtQURHMkJwbHFiSm54aXlZYStSMTFyZUlGVFdlSWhNTmNaS3NEWnJGQXlQdUZqQ1dTUXZKbU5XZTltRlJZRmdOaFhKS2tYSWI1SDFYZ0VEbHdpZWRZUk03Vm9sQk5sbGQ2cFJGS2xYOHVzdDZPVE1PZUFEbDJ4TkYwbTFMVGhTZGV1WHZEeUMxZzkrSUxmejNTNk9JWWdjM2lyb1JjRkQzNTRnN3JLZnU2N3FGQXc5Z0M0eWkweEJUUHJZOTVyaDQvSHFhVVlDQS9MOGxkUms2SDdYazM1RCtXVnBtcTJTaC94VDVIaUZ1aGY0d0piMGJLIiwiTUlJRFNqQ0NBaktnQXdJQkFnSVVSMzhtcTI2U2Yyc3pWVjJCZEc2V0VON2t1V1V3RFFZSktvWklodmNOQVFFTEJRQXdMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3SUJjTk1qUXhNakF4TURBd01EQXdXaGdQT1RrNU9URXlNekV5TXpVNU5UbGFNQ1l4SkRBaUJnTlZCQU1NRzFsMVltbGpieUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRUlnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTlkwV2I5b1BvUm9Lb1F5V1BhSnB6MTF2cldUZzZ6VHRtTmoyVm9LUm55dktHUnFwemI4M3c1bDZZQTk2VVlrWUJEUVAwaWxPMkRQZTZ3V3FWUjV6RGZSemRjSDhiaCtMN2RHR3ZhZTZoUlRaaGtGa0NwWERzNEhjY2tuckRmOEZDbEo3SGUzOUpmNDIvRzFRbTJ6ejlXV21yUFh0Z2lLL3gwNUdqc1FmR3VERzF6ZjVRVFVVaWU4bHd5bUszVGZkT3ZOZWVKQUFQZTJwbjdJdGZSYityVnJOV2lEemxSbjJ2Tm5aMndQbzR3SC9XSjZkaFhaRytyTVdUK2E2Qm9jZzFVZkl3NmtkdW5HNGJUcFp6c3ZhY0ZZeVIwbXBmK0RlT25wU1dBbXl3SldIdlRsZjJZWHhGeWVYY1RBQ2RRbGNNTkdKMlZoWlE0OHh0UDUvUkJQLzhrQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZDaHk0Mm9raXFjVFMxaXFhL0hSV2prQm40SC9NQjhHQTFVZEl3UVlNQmFBRk9xM1FwQ2VESHRrZXR0VWZBTzZmRTZmMktGaE1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQW4rUkhJUGJ0TUVETmRUMWc4SC9SaXRBa1VkTGdBdDF0V0dXbmxqOWtuYnY0LzRHbFg3QzlwNDVlZlBPOS9hWkw2T1YxWFJLQmk2S210Qlc1SzdudVlFbk14LzVCcUJTYkxUN3JoZHVDNDlUQmVNYjlQSGRYc1RsU1ZOWWVmcjFkR2lkcjRqMHhWQlFMYjFya25EQWJkV0R6S2Z2bmF5S084RnJ3ZTdIeDg0M01HL3JKK2MwWHJ1VXZiZlZUQ0hMaUlXaE03b05EaEw4eG9iNnhVbzlLTEtjU0wrSXRZc08zLzlXYjhROUdqc3FMNEZYc0RjRzFTYVloN0twZnVNbU9peHF6SlpPMm5JaWNQWVJnMUkyU3VpVWZZTzcwdG1kSGNibCtrU1FtU1l0N3JxNHZpSUxnMkd4M2o5cklUdVdUamJhVWFTU1F4Z09tTVNIdXl6TUFDIiwiTUlJRFNEQ0NBakNnQXdJQkFnSVVEcUVSdys0Um5HU2dneGdVZXdKRkVQRFJaM1l3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRREk3WG5IK1p2RHdNQ1FVOE04WmVWNXFzY3VibHZWWWFhUnQzWWJheG45Z29kTHg1c3dIMGxYcmRnamg1aDdGcFZnQ2dZWVg3RTRibDF2YnpVTGVtck1XVDhOM1dNR1VlOFFBSmJCZWlvVjdXL0UraFRaUC8wU0tKVmEzZXdLQm82VUxlTW5mUVpEclZPUkFrOHdUTHEydjVMbGo1dk1qN0p0T290S2E5SjduSFM4a0xtelhYU2FqMFN3RVBoNU9BWlVUTlY0enMxYnZvVEFRUVdyTDQvSjlRdUt0NldDRkU1blVOaVJRY0ViVkY4bWxxSzJieDJ6Nm9rVmx0eURWTEN4WWJwVVRFTHZZMXVzUjNEVEdQVW9JQ2xPbTRjcnB3bkRSTFZIdmpZZVBHQkIvL3BFeXp4QS9nY1NjeGp3YUgxWlV3OWJuU2JIeXVyS3FiVGExS3ZqQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJUcXQwS1FuZ3g3WkhyYlZId0R1bnhPbjlpaFlUQWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQXFRYUNXTXhUR3FWVlg3U2s3a2tKbVV1ZVRTWUt1VTYrS0JCU2d3SVJubHc5SzdIZTFJcHhaMGhkd3BQTmlrS2ptY3lGZ0ZQemhJbXdISmd4eHVUOTBQdzN2WU9kY0pKTmt0RGczNVBYT2Z6U24xNWNGQXgxUk8wbVBUbUliOGRYaUVXT3B6b1h2ZHdYRE00MVphQ0RZTVQ3dzRJUXRNeXZFN3hVQlpxMmJqdEFucS9ORFVBN2JlNEg4SDNpcEMrLytOS2xVcmNVaCtqNDhLNjdXSTB1MW02RmVRdWVCQTduMDZqODI1cnFEcXNhTHM5VGI3S0FIQXc4UG1yV2FOUEcya2pLZXJ4UEVmZWNpdmxGYXdwMlJXWnZ4clZ0bjNUVjJTQnh5Q0pDa1hzTkQwNWRDRXJWSFNKSXMrQmR0VFZOWTlBd3R5UG1ueWIwdjRtU1R6dldkdz09IiwiTUlJRFNqQ0NBaktnQXdJQkFnSVVUbmJiR0lSMk5IdnpxSUtGQWVRd0cxWEJpczB3RFFZSktvWklodmNOQVFFTEJRQXdMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3SUJjTk1qUXhNakF4TURBd01EQXdXaGdQT1RrNU9URXlNekV5TXpVNU5UbGFNQ1l4SkRBaUJnTlZCQU1NRzFsMVltbGpieUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRUVnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBT3NYajNrMDRCYW40VFlkdFpLcUQvT1BKeHlEeWFQbUNCVUZVaWFaSWdUdGVabmozWDI1RGhncFpaWHNDNEQweWRJY3JsQTZ3TlVJbk9STC9MOXpCYlRFSU1BVk1HbzZnN1VLQW1iMk1GNkFIYm5oWUpkOWVpa3VwVk5XU2hITllOYzRHQmRPMVlONkFmVXF2SmhIYmUzVjRTTk1QbUJSRUtKUFZ6N1Rod2dtZ2dUZThXczJLMC93c3F2MndTRTdwYkNCc1VaaElYNTFiWk0zcHFEd0pQVG1SRkV2dDAvNnRHNWVPOEYzajE0T1hxZkVobWpuMVZ2eEtEWVFPTFpBeEN3d2dDMFA0Q2RmV3YzeThQU1I4STM1NGhPMVkrR3pOanZJcVgzOE5LTHl3dUlZSEZlck94Tmx4RU1CdkZoWUJ1UnVZQWtrZ1VhUHFONlVCaHNJTHJzQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZDQ29SSGhpeU5uYm5YUldJTDZaQlhvQlg5WVRNQjhHQTFVZEl3UVlNQmFBRkNBb1VDRWJwRnBiNkZQTG5aM0Y1UHhzTDNvZk1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQ1FGYWZKSTEvNVdnOUNFRWltRTFSUDU0UmdRd1ROVE9PUXNMQUNUZStySXRsRlF6QzlaRGhyVjgyOHlYN2p6eStBQXNwM2l6SzdUMXRoMmRsN20rdHUwc3cyUGEvb2xjMDJudDZQeUl3MzQ4Z2FIemhJMSswS0U0NXF4dkZEZUwybE14YlBmQ1l2eUVFYVl6amlRRUxVNTk1MXBYR1d5S01hLzRmTHRPK1pLT1hoTXVWZXE0clhEUEk1NFc2SkhPaUFhaUtkaXcrNWUzYzJrdC9qRklRdE02dk1YZzlMTkZ6ZGpFVE50MjBWWDlRZXZScEZaZnVjTUc5d0NhUURvRmxQenBUTUpLaFBldi9pbUptWlloS2ZyMGxMY2VtdHFqSXhMQW9xWmRPWWZIQmc2K3ZBY2RQSS9pYXVHcFVBdjdYK1VLTm1Ed2paMkJhSDRzTHdoQjJtIl0sImljb24iOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJpY29uRGFyayI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsInByb3ZpZGVyTG9nb0xpZ2h0IjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwicHJvdmlkZXJMb2dvRGFyayI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTEyLTIyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJTZWN1cml0eSBLZXkgTkZDIGJ5IFl1YmljbyIsImNlcnRpZmljYXRlTnVtYmVyIjoiVTJGMTAwMDIwMjQxMjIyMDA4IiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMTItMjIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTAxLTEwIn0seyJhYWlkIjoiMDA2RiMwMDAxIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWlkIjoiMDA2RiMwMDAxIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkhhbmtvIFVBRiBDbGllbnQvQXV0aGVudGljYXRvciBDb21ibyBmb3IgQW5kcm9pZCJ9LCJkZXNjcmlwdGlvbiI6IkhhbmtvIFVBRiBDbGllbnQvQXV0aGVudGljYXRvciBDb21ibyBmb3IgQW5kcm9pZCIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6InVhZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfZGVyIl0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9kZXIiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19zdXJyb2dhdGUiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiaGFuZHByaW50X2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJ2b2ljZXByaW50X2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJleWVwcmludF9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGF0dGVybl9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmFjZXByaW50X2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbInNvZnR3YXJlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbInNvZnR3YXJlIl0sImF0dGFjaG1lbnRIaW50IjpbImludGVybmFsIl0sInRjRGlzcGxheSI6WyJhbnkiXSwidGNEaXNwbGF5Q29udGVudFR5cGUiOiJ0ZXh0L3BsYWluIiwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBd3dBQUFFc0NBWUFBQUJ1VERSa0FBQUFCbUpMUjBRQUFBQUFBQUQ1UTd0L0FBQUFDWEJJV1hNQUFBN0RBQUFPd3dISGI2aGtBQUFBQjNSSlRVVUg0QVVVRUJnVVNld1J6Z0FBSUFCSlJFRlVlTnJ0M1grTUhHZWQ1L0hQVTlWZC9TTkdqQU5SREF2Wk5wdnh4RGczTi9IR1M5QTRDb28ybUZzaE9ab2pXaTJDTEFpRDd5Q2NRTVQ1ZytUMjdpQ0pkQW1ySUJHUXdnL3RFU0lqbE1OeXBJZ2o1R1FSSlJiY0JobWZOODdFbnBBWndBdEdRR2JRSlRQOXM1Nzd3ejFKSEhzOE0xMVBWVC9WL1g1SlZyU0x1NnI3KzFTMzYxUFBMMk90RlFBQUFBQ2NUMEFKQUFBQUFCQVlBQUFBQUJBWUFBQUFBQkFZQUFBQUFCQVlBQUFBQUJBWUFBQUFBQkFZQUFBQUFCQVlBQUFBQUJBWUFBQUFBQkFZQUFBQUFCQVlBQUFBQUlEQUFBQUFBSURBQUFBQUFJREFBQUFBQUlEQUFBQUFBSURBQUFBQUFJREFBQUFBQUlEQUFBQUFBSURBQUFBQUFJREFBQUFBQUlEQUFBQUFBQURMQ3BRQWM4YVVHMlc5SldqcjhzQ29ab3plRW9ZYS8vTkYrd0hmMy9zdkl2UHhJTlM3T2xiSGJVZlB0STMrR0xmMG0yM1ducVpsQVFBQUNBem93WEZqTmhVcnVqeHNhMnNRYUN5b3FGYVdwT0s1ZjgvM0cyOGJhRU5nTkJJWVRTclFaTlM5cW45Wk5XckZPbXc3ZWthQlRoV2JtcTFaVzZmMUFRQUFDQXk0VUVBSTlhNE5GWTJzcGZVTFpWWHkvTG1Md1prUUlVbXFTQytVekxHMmRNeElKMFliZHBvckF3QUFnTUF3bE9hTUtiY2liWlowVmNGbys0YUthclMyRklZYUQ2Vng2VXdQUkx1dHh6b0ZUUytXOU16RXZGM2d5Z0VBQUNBd0RIUklXQ3JxblpIMGw0V0tka1dVWlBXTHY2QmRCV2xYcVhHbTk2RVQ2eWZOdHY2RitROEFBQUFFaG9FTUNWVkswck13MUhnWWFqd3FTck5sTTljS2RKQ2VCd0FBQUFKRExwMm9tTTFCckhjWHlycSthcnJ6RWVCTUVLaFdrajZ6M1BQUXNIcTAwdEt6VEpvR0FBQUVCbmhyenBoeXM2S3JpN0Z1TEFlcUthUW1XUWhEalZlbDhUalV3a3pKSEdvMmRZZ2hTd0FBZ01BQWJ5ejNKa1FWVFpVa3R0cnJrOEJvSkFvMUZWVTB0ZHpyc0xWcGoxQVpBQUJBWUVCZlRFZG1lekhRZGVWQWsvUW0rR1c1MTJHMlloYmFiWDJ2Mk5hVERGY0NBQUFFQm1RV0ZNcUJQbGd0ZEpkQ2hiY0NvNUdvcUwwcWF1OU15Ung0dWFvZk1Fa2FBQUFRR09EY25ESGxWa0hYRmtMdElpamtVeFJxS21wb2l1QUFBQUFJREhEcVpOWHNMSmIxa1lqVmpnZ09BQUFBQkFZc1d4NTZWQXBVazZFZWd4d2NpazBkWUk0REFBQWdNR0JOVGxUTTVzanFVd3c5R3A3Z0VKZDEvVXpSTURrYUFBQVFHTEN5b3h2TnlJWWxmYlFjYUpJZWhlR3lQRGs2RHJWck9qTDdXWTRWQUFBUUdQQ0s1UW5ORzR2YXl4NEtReDRjQXRXcWdUNy9mTmtjYmpUMFhUYUFBd0FBQklZaE4xTXlXd3NsZlN3S0dINkVWeFVEVFJZcm1qeFpNZzlGVGYyUVlVb0FBTUJuUFBOT3dkR05adVFYa2ZsNEZPcUxBV0VCS3lpRitwQXQ2LzZaa3RsS05RQUFnSy9vWVhEc1pOWHNmS1BWUjRJQ3k2UmlEWW5kYUNRSzljVmZST2F4c0tYdjBOc0FBQUFJREFOcWVWSnppVW5ONk9XTFdOQ3VPTlM3WmtybUgwY2JkcHFLQUFBQVh6QWt5WUhweUd4L1kxMWZLZ2FhcEJybytjdjRhbS9EeCtlTUtWTVJBQURnQTNvWUVwZ3pwdHdwNnNQVmduWlJEVGo3VWhhMEt3NDBkcUppdmpxMlpHZXBDQUFBNkNkNkdIcDAzSmhOdHFRN0M0UUZwUEhGREZRckc5MDdVelEzVUEwQUFFQmd5Sm1UVmJOelEwWDNzd0lTMGhZVnRmZjVzdmtzUTVRQUFBQ0JJUWZtakNuL0lqSWZMMG1mb1JySVNqSFFwQzNyL3VQR2JLSWFBQUNBd09DcDQ4WnNpaVBkeGhBazlPV0xhalN5b2FMN1QxYk5UcW9CQUFBSURKNlpLWm10MWJMdURFT05VdzMwVTBuNnpFekpmSkJLQUFBQUFvTW5UbGJOemlqVUZ3UERSbXp3UXhScTZvV1MrUWZtTlFBQUFBS0RCNWl2TUh5YUxUMHdYOUtlaHZUbE9OYWNqKzh4RERWdVM3cVRlUTBBQUlEQUFQVEJ4THhkMkxKb245cGN0N2ZXcmZhMVloMzI3c3NicUZZdEV4b0FBQUNCQWVpcnNTVTdlM25kM2pkZjBwNW1Sd2U4K2dKM0owTlBSMlk3TFFVQUFOTEFUczk5MEd6cEFkZkhqSXJhUzJYVE5URnZGeVR0UDI3TW9WSkpmMWNNTk9uTGU2c1c5UG5weU55OXRXbVAwRklBQUlEQWtIT2pMZnU0NjJQK3Ntb0lEQm5aWnUxcFNmZWRxSmlEa2RXbmZObkFqOUFBQUFEU3dKQWtvRWRqUzNaMmM5M2UycEMrSEZzdCtCSWFXSFlWQUFBUUdBQ1BiRm0wVC8ycHJGdmJiVDNtdy91SlFrMFJHZ0FBQUlFQjhNakV2RjM0aTZiOVJyT2ovK3hEYndPaEFRQUFFQmdBRDQwMjdMU3A2eFlmZWhzSURRQUFnTUFBZUtobWJmMHZtdlliaTIzZDNlL2VoaWpVMUV6UjNFQ3JBQUFBQWdQZ21hMU5lK1JQWmQzYTZlaFlYME5EVVh2WnB3RUFBQkFZQUE5TnpOdUZkelRzRnhvZFBkVFA5OUZkY3BYUUFBQUFDQXlBajdZMDdNRitEMUdxRnZUNUV4V3ptZFlBQUFBRUJzQkRXNXYyeUdKZGQvUnppRklrM1g3Y21FMjBCZ0FBSURBQUh0cG03ZW1ncVh0YXNRNzM1UXR2TkZJdDY4NDVZOHEwQmdBQUlEQUFIcXBaVzcrOGJ1OXJkblNnWDZFaGpuUWJvUUVBQUJBWUFJK05OdXoreGJidTdzZTV3MURqbmFJK1RDc0FBQUFDQStDeHJVMTdwRis3UXhjSzJzVWVEUUFBZ01BQWVHNjBZYWNYNjdxakg2RWhLbXJ2VE1sc3BSVUFBQUNCQWZEWU5tdFA5eXMwRkFKOWpwV1RBQUFBZ1FISVFXam94ODdRZ2RGSUpkSW5tQVFOQUFBSURJRG5KdWJ0UXREVVBWbUhoakRVZUN2U0ZDMEFBQUFHTmpETUdWTSt1dEdNMEtUSXU1cTE5WDZFaGlqVUZQTVpBQURBd0FhR1RsRWZydFMxa1NZRm9hRjNoVUNmSTNnREFJQ0JDd3pUa2RsZUtHZ1h6UWxDUThJZkJLT1JEVXY2S05VSEFBQURFeGlPYmpRajVWQ2ZwQ2t4cUtGaHFhbXZaN2w2VWpIUUpQc3pBQUNBZ1FrTUc1YjAwY0NJSVJRWVdQMVljalVxYWk5THJRSUFnTndIaHBOVnM3TVlhSkptQktIQnZVcWtUMUI1QUFDUTI4QndkS01aS1ZwOWhDYkVNSVdHZWtkZnkrcDhZYWh4aGlZQkFJRGNCb1kzdkt5YkdJcUVZYk8xYVk4MHBDOW5kYjVDUVgvTHFra0FBQkFZY21lbVpMYXlLaEtHMVpaRisxU3pvd09aL0VDd2FoSUFBQVNHdkwzaE9XUEtCYU9QMFhRWVpxTU51eityNVZhTGdTYlowQTBBQUFKRGJyUUt1allJVktQcE1QUmYzcWJ1eVdvU2RDSFE1K2FNS1ZOMUFBQUlERjQ3dXRHTVJFWHRwZG1BTTNzMExOWjFSeVkvRkVZanJZS3VwZW9BQUJBWXZNWllhdUJzMjZ3OW5kVWs2S2lvdlV5QUJnQ0F3T0N0RXhXem1UMFhnSE50V2JSUHRkdDZMSXR6dmVGbDNVVEZBUUFnTUhncHN2b1V6UVdjWDlqU2Q3S1l6MUFvYU5lSml0bE14UUVBSURCNFpUb3kyNW5vREt5c1ptMjlLZDJWU1RpeHVwR0tBd0JBWVBCS09kQUhhU3Jnd3NhVzdHeWpvNGZTUGcvTHJBSUFRR0R3eXNtcTJVbnZBdkl1cXh2c3FLa2Z4ckhtMGo0UGU2RUFBRUJnOE1LY01lV2kxVWRvSnVTZE1YcmZUTWw4TU8yOURHclcxcHRHWDAzOWh5TlFiVG95MjJsWkFBQUlESDNWS3VqYXdJaGxIREVRb2xCVGNhVGIwZzROV1ExTllxZ2dBQUFFaHI0cmhOcEZFMkdRaEtIR3N3Z05XUXhOb3BjQkFBQUNRMSt4TWhJSURiMnJXVnR2VzMwcjdjOVNNbm8vTFFvQUdFYkdtSXVOTVpQR21KdU5NZmNZWXc0YVkrd3FmNzdSL2J0VHhwZ0pZMHlGd0pBQXd4MHc2S0doWGRKL1RQTWNvdzA3M1lwMU9PM1B3YjRNenY4QnVtY04vK0NzOW1kTFhzL3Y2UTJCVGVuUExWeS94aHBqRHFiMFhyWU00blhzdzNmVVFXMlgvOXljMDkrRXFlNTErMGRKVDBuNnRxUjlrbmF2NFJCN3VuLzMrNUorTG1uUkdQUDVidkR3Tmp4NEdSam9YY0F3NkM1UG1tb3dialQwM2RUREQvc3lZTEM5T2NWalgwWjVKVW03alRGdm93eTVjbzJqNHh6S1dWQzRwUnNTdnIvR2NMQldkM1dEeHhQZE1PSmRjQ2g0ZWlOMUhkOUZyUFdHdUZPVzA2ZFRTeHMwbjlYN2owSk56UlRONzBkYjl2RTBqci9OMnRNekpYTWdDaldWWnZBNWJzeDN0MWw3bWlzU0E2aVc0ckhmUTNsZmNhT2sreWxEYnJqNE4rVVJhKzJwbklTRnFXNUlTTnVPN25rZU1jYmNacTA5U1dCWXdZbUsyVndPTk1sM0VXdTlJYzc3WjRpSzJqdFRNcWRHRzNZNmxSdjZwZzdFWlYyZjVvcGpVYVRySmUzbmlzUUEycER5elFIT3VKbkFrQS9kM2lBWFQ5Y1A1T0N6WGl6cHYrdk1NS0lzN2RhWm5yZC9iNjMxb2s3ZURVa0tZcjJicnlPR1RTSFE1NDRic3ltTlk5ZXNyYmZiK2w2cW9TZlVWTm9yUHdGOWNrMmFCeCtrK1I1Snc1TXhab0l5NU1MMWpvN2o5WENrYmpENllSL0N3bXQ5MzVlNVRsNEZoamxqeW1rT25RQjhGUmlOVkNKOUlxMmI3bUpiVDhaV0MybCtobVpGVjlPU0dFQWJVejcrSlpUNEZUc3BRUzRNL0hDa2JsZzRJRDk2QWIvaXcrUndyd0lETnh3WVptR284V2FrOTZWeDdDeDZHWW94azU4eGtOSit1bmdwSlg3RnpaVEFiOE13SEtrNzRkaVhzTERzMi8zdWdmTXFNSEREZ1dGWEN2V2h0SllwVGJ1WElRaFVZNGxWRE5qTjBjVVpuT1lLS3YyS0hjWVk1akQ2YlJpR0kvMDMrVG0vNk9zWi9TYjVIUmhPVk14bWxsSUZwTWpxVTJrTVRhcFpXMi9GZWpUVkh4VG1JR0d3dkRtRGN4Q3l6OFlxaVg0YjZPRkl4cGozNnN3ZUNWNEdha24vWWVnREF6Y2FRUGU3RUtqV0t1amFOSTY5V05XUFV3MDdUSDdHWUtsbGNJNDlsUGtzZCtWbDU5dGhNK2pEa2JyWDNaMDUrSDcwWmFFRUx3TERuREhsUXVDc213dkl2YWlvdlVjM0d1ZkxvRTdNMjRWbUo5MGY2NldpM2trTFlrQnN5T0lrL1J4bTRLbnRsTUJMZ3o0YzZXUEt4MUxIZlhuSTRFVmdXQ3JxbldtdUVRL2swUnRlMWsxcEhEY085Sk0wM3pjYkwyS0FYSlBSZWQ1TXFjL0NiNGlmWFBSOGV6a2NxZHU3OEpXY3RNTytmanhrOENJd1JOSmY4ajBFemxZb2FGY2FrNGpIbHV4c3A2TmpLUWFHeVRSNlI0QSsySmpSZVdxVStpeDMwZXZpM1EzMXhYTHpaTnZYMVpIK1hjNmE1UDFERnhqbWpDa1hDdHJGMXhFNFYyalRXVG1zWWRPZC9GeHQ2RXBhRHdNZ3E2Ny9UWlQ2SEN5elBwanQ0ZXR3SkpkTCtqNGlhWmVrc2RmOHVVclNweDJlSS9NOXkvb2VHQmp2REt5c0dHZ3lqVjZHU2t2UHB2bStDeDNtSkNIZk1uN0NUY0ErMTAyVVlPRGF3OWZoU0s0bWMwdlMzMXRyYjdUVy9zaGFlL0kxZjQ1YWErL3Zob2VuSFp4bmQvZDlEMDlnWURnU3NPck45MSs3UG1iTjJucWFrNS9EVU9NTVMwTE9aVG12WUF2bFBzY2VoaVY1Rlo0SGVUalNYems2enFldHRROWU2QzlZYTA5SytvUm43OXYvd01Cd0pHQU5nYUdnWFNuZGZQODh6ZmRkZWxudm9QV1FZN1VNejdXYmNwOFh3NUlHcXgxOEhZN2tZdjdDSTVLK3RaYS9hSzA5S3VsZUIrZThKc3NpOVRVd3RDSTJyQUhXb3Jxbzk3Zys1bWpEVHFlNTh6TzloOGk1RFZtZXJGOXJxM3Z1azVUQUN3TTdIS25MUmUvSmc5YmFwWFVHaktReTNXQ3UzME9TcnVKN0NLeXVHS1N6SWtJN1R1K0pENzJIeUxsck1qNWZsWktmSS9OeDJqZ255QTcwY0NTSFFmM0g2L3o3Unh5OS84eStIMzBOREFYRDVpekFtcjZvUmlNekpiTTFoVU9uT2l3cHBmY01aR0ZqeHVkakNOLzVzWUJDZnczNmNLU2FnMk04WXExOWNUMHY2UFpHZk5QQnVUT2JhOVczd0hEY21FMUJ3TnJUd0RvNDc1RXJOaldiNWh1MloxYUVBUElvNjkxVTMwckp6MnVLRXZUVm9BOUhjckdrOFQvMytEb1gvLzVtOXFDaGI0R2hXTkhsZkErQnRZdEM5Lzl3MXF5dHQySWRUdTE3YnJTVGxrUGU5R2wxbnN1by9Ia3hMS2wvMzRPS0JudDFKTW5Oa3NiUFpmeTYxOHJzUVVQZkFrUFlGa01WZ0hWS1k0aVA3ZWlaMUg1Z0F0VllYaFU1bEtTYnY5ZkpqUHNvKzRvWWx0UWZyb2FOSC9MNE03b1lldmk3SGwvM2tvTnpaL2Fnb2RDdkZncEN2WXZ2b3QvS1J2ZitzbXFHN25NM1czcGd0R1VmOS9UdFhTVnAydVVCNDRLZVQvTU5kNWRYUGNJM0NqbFNTL0RhQjlYak1xbkdtTW82VjFvWkZyZDA2NHBzWGVmZ0dENFBSNUxjOUtEOHZzZlh6ZVhwWXVoTEQ4TnhZellGUmp4MUJOYWI4Rk5ZS0dCc3ljNm0vSjZ2b09XUU0wbVdWUDFkZ3RlK25kS2YxdzVqekFSbHlFNTNPTkpkRGc1MWdHcW1Lck9leWI0RUJ1WXZBRDErWVZNYTRwUG1QSVpRZk4rUk96MHZxV3F0VGZKZHFsSDZGVEVmS2x2RE1CekpsVDhNeGYxSFAwN0svQVdnZDJuc29Kem1QSVl3MVBpY01XVmFEam5TNjdqbXA3di83WFVld3daS3Y2S2JLVUdtQm40NGtxczlHTmE3cENxQllUMG5EVmhxRWVoVktrTjhBcVg2bzk0bzZ5MjBISEtrMTNITlArNys5MlNQcjcrRzBxK0lZVW5aM1VnekhBbjlEd3h6eHBUWmZ3SG9YUnBEZkY2dTZyZXAvdEMwR1phRTNOd3NKVmxTZGFINzMxLzErUHFOdE1BRi9RMGx5QVREa2REL3dNQ1RSaUJoWUFnMTd2cVlFL04ySWRVZkdzTkRBdVJHa2lWVmw5ZFYvMDJQcjk5RCtTL29ydTdUYjZSckdGWkhndStCZ1NlTlFITEhqZG5rK3BocFRueG1HQ0p5SkVtNFhWNVgvWVZlRDhBbVphdmFUZ25TdzNBaytCTVllTklJSkJaRjdvY3VtTmpKSmpJckJZWWFFNStSRTBrbUhzOTEvN3VZNEJoVm11Q0NycU1FdVFoa0RFY2lNQ1MrY2VCSkk1QlVMT2RQSVdPYjdpWXlERWRFVHJpWWVQenJCSys5a2lhNElJWWxwZXNxQjhkZ09CS0J3VWxncUZGMklQRTM5eExYaDdSRnBickRyREg2TXhvT09kQno3NTIxOW1UM3YwbStTMitsQ1ZaMUxTVklqWXZsYXhtT1JHQklKbzF4MThBd01rYVhPZzhNVnYrYTZwdnVKSnBNQ21URjFjVGplM3Q4M1dVMHdhcHVvZ1JwL0x0aUppVHRjSENvbjFKTkFrTWlhWXk3QnBDVEh4dWp6VlFCbnQ4d0pWbFM5ZlVCb2RlVng5NURTNndlNmhLMkZjN1B4VzdhVHkvM3RJSEEwTHNVeGwwRHc2Z1lhTkwxTVV2MWRQZGlDTVdRSkhqUFpTL1ljejIrYmdmTnNDWlhVd0xuWEF4SGVwQXlFaGhjbk8wU1NnNzRxV1p0UGRXdlAvT1hrSU92UVlMWHZuNFlScytyamhsanR0QVVxMkpZa2tNT2h5TTlSVFVKREE0dVNQZmpyZ0hreDlHTlpvUXF3R01iSEI1ckxzRnJlYmkydWozc1dlR1VxK0ZJUnlrbGdTRXhoaVFBN3VSeEVZRktuWGxNOEZxU0pWV2ZlZDMvL1ljRXgrTGgydHBjVHdtY1lUZ1MvQWtNREVrQTNDbVVsYnUxeU9NT2dRRmVjM1o5V210ZlRQRHlLMmlLTlpsYTVYOWZwRVNyWXpnU3ZBc01BSVk4NUZpOWlTckFZejB2cWJyQ3lqQ1A5SGc0VmhSYm05MFhHcGJFNW1GcnhuQWsrQk1ZVGxRTVA0QUFBQytsdEV4bnI4dEw3cUZGMW94aFNja3hIQW4rQkFZQU1LR3VwQXJ3VkpJbFZWZmFwTzBaendMTUlMcUZFaVFLeW04VHc1R3dCb1hNa2ttc3NrSUtucFkvWDdRZm9Bb0EwTE5hQ3NkOEtjRnIzeXpweFNGcmc5c2wzYlhPMSt3d3hrd3dIS1puTG5wb0dJNUVZSEFvMXRzSURBQ1FpUlBHR0txd1BrbVdWUDNwQ3YvL0Z4SUdtR0hiTWJmWE9RYzdKWEhEMnBzcEI4ZGdPTklRWUVnU2dNeUVSdHVvQWp4MVRRckhUTEpLejZZaGJJTmprcDd1NFhVM2MvbXVYM2M0MG00SGgySTRFb0VCQUJ6KzRCaXhjUnQ4bFdSSjFmUE9WVmhoNWFTMUdzYjVQb3ZxN1duMWp1N1NvT2Z6VFM3dEZURWNDUVFHQUFEV3diZVZpYllNYVR2MCtyUjZwYVZCNTdtMFY4UndKUGdYR0ZnZEJRRGdJd2NyRXYzNkF2L2J2VDBlYy9jd3RrWDNhWFV2dzVLK1lveXBjRFd2V1UwTVI0S1BnUUVBQUU4bFdWSlYxdHFsQy96UEN3bUN6TEQyTXR6ZjQrdTJjeW12MlUwT2pzRndKQUlEQUFCRG81Ymd0YXVOa1g4dXdiR3JROW9laDNwODNYVmN5bXZtWWdnZXc1RUlEQUNRampsanlsUUJua215cE9wcVkrUi9sK0RZN3hpeWRxaEtrclgybEtSSGVuajlYUXhMeWhURGtRZ01BSkNPUmxsdm9Rcnd6QlVKWHJ2YWJzNi9UM0RzdHc1Wk83dzJJQjNvOFJpdkg1YTB3T1dkQ29ZakVSZ0FBQmdxU1piN1hXMDM1ejhrT1BabFE5d21qL2I0dW8rODd2OStqc3M3RlF4SElqQUFBREJVOWlWNDdRVjNjN2JXdnRpbjk1VnIzYnIxc29mQ0hnZXJYbUYxUDZjRUJBWUFTRTI3cmlXcUFGODRHUE8rbHQyY3Y5bkg5NWRuRC9mNHVxdTVzbE4zRlNVZ01BQkFhclpaZTVvcXdDTnZUL2o2WDYvaDc4ejM4ZjNsMmM5NmZOMU5YTmFwWTk4TEFnTUFBRVBqa2lRdlhtVVBobVhQSkRoRmJWZ2JwanNzNmZZZVhzcXdwR3l3N3dXQkFRQ1FZMlBXV3RQTEgvVytNM0ZlWFpyZ3RXc2RhdlJTZ25Oc0dQSnIrWWtlWC9kK2ZnWlN4NzRYQkFiM1RKem9CeE1BZ0RRa1dWSjFyVU9Oa3ZRd1hEUGtiWEdreDJOTk9hZzlMdXd1ZW5JSURNN0ZWbk9VR3dEZ21TUkxxbVp4TTdweG1OdWlPK1NybDJGSnU0MHhiK1B5WHRFM0hSMkhDZVlFQmdBQUJsNlNwVXZYMUhOdXJUMlo0Qng3YUNMOW9NZlhYVS9wVnZTLzFOdHUycS9IQkhNQ0F3QzQxZW5vR0ZXQUx4eXM4dks3ZGZ6ZHB4Tzh6NkYrVXQ3ZFViaVgrazF4bFYvUUFRZkhZSUk1Z1FFQTNJcU4vaDlWZ0VlU0xsbjYrM1g4M1I4bk9FK1ZwdXBwWitIZEdxNDVJT3QxeU5GeG1HQStCQXFaM1NnVTlEemxUczlNMGR4QUZkeGRxMk5MZHBaS0FBUHZrb1N2LzhNNi91NnZFcHpuU2trbmg3eXRmdFRqNitobFdJRzE5cFF4NXBGdXNFcGlxc2RBQndMREFOMDh4cG9MQXYvWHdZNksya3RydWRGczZRRkpCSVpVL29GYTF4QU9JRzJYSnJ1ZTdZdnIrT3UvU1hDcXQvTGJZVS8yZUhPN204djhnZzQ0cU5GdVk4emJyTFduS09mZ3lteElVcnV1cFR3V3FDUDlLNWNKNENxQnIyc0lCNUMySkV1cXJuZkNhSkt3Zk5tUXRNZHFLMElkNEpKMXp0V3dwQnNwSllIQmlXM1ducWJjQUFDUEpGbFNkYjFEaEpLRTVmY01TWHVzdGlMVUlTNVp0N3E5QWk2V1dMMlphaElZQU1BSjVqTEJNMG1XVkYzdm5JUmZKempYRHBycWxadmJSNmlFY3c4N09NWU9ZOHdFcFNRd09OR0tkWmlTQXdENnpjR1NxdXVhazlEZGdDekorOTFDcTBtU3ZrWUpuUHVabytQc3BKUUVobHlJTzBPMUl5YVFPNlc2ZmtzVjRJbWtTNnIyTWljaHlkQ1BTMmd5cHplM2VEWE12aWczdzVLKzRpQ0lnOEFneFRiZGxXY0tWbTl5L2tYcTZCa3VFOENObXJWMXFnQlBKTDBCNzJWT3dueUM4MTFLa3ptOXVjWFpIblowbk8yVWtzQ1FYTGl1TmFzQkRCQ0dKTUl6U1cvQWUvbjM3S2NKem5jRlRlYjg1aGF2ZXRMUmNhNmpsQVFHQjA4RzBsMmkxQWE2eVBreGkvbGNEaGJ3alluMUVsV0FSeExkZ0s5ekR3WVhOdE5rem05dThlcjF2Q1RwZGdlSHVzc1ljekVWSlRBa3NsUk8xQjI3K29jeDduOVEwdzQ1d0xDSXJlYW9BanlTWkVuVlhsZnFTVExFZFE5TjV2em1GbWQ3d3RGeHJxYVVCSVpFSnVidEFpVUhodmJYaGwxQTRaTWtTNnFlN1BGMWkwbmVNRTl1VTdtNXhhdU9PRHJPVFpTU3dKQlltdU9ZaTRFbVhSOXpiTW5PY3BrQXlUV2I2Zll3QXV1NDhVNjZrc3MrWTR4ZDd4OGwyNHRCa3Q1TTY1MTFjL3MwWlhESFljL05Ic0l0Z2NIQkJkblRVblJyTm1kTTJmVXg0NWloRkVCUzdQWU9qN3c5cCsrN1J0T2RkWFA3SUpWd3psWFB6ZnNwSllFaDJaYzhYUGZ1bU92U0tPc3Ryby9aRWZNWWdFVGZvWTZPVVFWNEpLOTdHbXlpNmM3eUZDVndIc1FPeTAzUHpSVFZKREFrdkJqVHZmazJSbi9tL0QyekZ3T1FOSFEvVHhYZ2tienVhWEFsVFhmV3plMVJNU3dwRFM1NmJuWWJZOTVHS1FrTVBVdDlUa0FuaFRHZVROWUVFbWxiUFVjVjRKRzg3bW13aGFaTDVlWVdaM1BWYzNNanBTUXdKTHVuVDNGNFFocExxNzVjMVcrNVZJRGV4UzM5aGlyQUl5TTVmZCs3YWJwekhLUUViam5zdWJtWmFoSVlFbWtydmNDUXhrcEpFL04yZ1luUFFPK1k4QXpQN012ckcyZVl4emszdDZmVSs3NFlXSm1MbnBzZHhwZ0pqei9qSDJobXp3TkR4Nlk3OGZsRXhUanZaV2hiWitzVEEwTWx6YVdVZ1I1dXVDczUvd2dzclhxdUE1VEF1Ujg1T3M1T2o4T21rOTNhalRGRE1WU3dMNEdoY1pGZVNQY2ZCUGNUbnhtRERmVDRvOHlpQWZETDIzUCsvdDlCRTU3alVVcmcvR2I2cE56MDNIeGxBRUs2enpMclhTdjA0OU5Oek51RjJiS1pDNEowMXBRTzI5b3F4OHV0TlM3U0M5V0d2MWZNc0Q3RlRXTUlHdHlLQzZ5UUJLOWNrdlAzLzFhYThKeWIyeGVOTWQrVXRJZHFPSFZBYnViTmJKZm9hVTdKeWF4T1ZPalhKMnhiSFlsUzJvUW1DUFV1U2Q5d0hYSmVLSmxqWWFoeEg2K1l5K3Yydm1IOHB2eXlhZ2dNbm1PM2RIam0wcHkvLzh0b3d2TjZtTURnM0NGSHg3bk80OEJ3ci9vM3B5bFh5eVFIL1RweG1rTjhBcU9SVk9ZeGhNNitQTUJRWVA0Q1BIUkZ6dC8vUHByd3ZINUdDZHh5T0tIOExtUE14UU5jcW43ZStHYzI1TGR2Z2FIUzByTnBIdC9FK3JldWo3bFlZaXcyc0I1eHdLWks4TTVJM2o4QVk4TFBlM1A3b3M0OExZWmJyaWFVWCszcDUrdm5mWjJMNFlVdkRYeGdxRmxiVDNNL2hxSnhQek4vWXQ0dXBQbWVnVUhUV21MK0Fyd3pDRS9vMzA0em5oZkxxN3JuYWtMNVRaNStQaGMzM0wzMldyb1lYdmhDVm9VSyt0bEtuVmcvU2UyREJhb2QzV2ljUDBscVdGWmpBTllpampYSC9ndndpWXNuODlaYWsvU1BwTEdFYitNU1d2TzhXUDdjc1c3UHpUY2RIR3FQcDN1SXVPaGgrS3NlWC9jZUIrZk9iQytKdmdhR1psdi9rdWJ4cXczMzQ4b3FMVDBiV3kzd013SmNHSHVYd0VOSm44eTdlb0tkOUIvNVMybks4OTdjTGttNm5VbzQ5N0NqNDF6djRXZjd0WU5qN0Y3dnc0aHVlTnJoNEpvL05SU0JZWnUxcDlQY1Fia1k2MGJYeDZ4WlcyL0hUSDRHMXVEbmxBQ2VTZnBrM3NrU2hnNDJqTHFHcGx6UkR5aUJjNjRtbEU5NUdqSmRQQWpZdnM2Ly8wNEg1OHgwems3UTc4Wks4eWxrRUtoMjNKaE5yby83Y3BVZkpPQkNZcXVGMFlhZHBoTHdUTkluOHk1N2w1UGNwR3lrS1ZlOEFUd3FzZGlDNDVxNkdwYTAyOU5ka2YrM2k4KzJ6ci8vU1Fmbi9PbFFCUWFsL0JTeUdMbC9Fak14YnhlYUhiYWlCMVo4RUVBdkhQeVVkRWxWbDh1QkorbXRZTCtCQzN1UUVqam5hbGpTZXozOGJDN3VRL2NaWXliVzhoZU5NZStWbXczeE1sM2hxZStCWWJSaHA5T2NFMUFNOVA0MGprc3ZBOUMvQndGQWo1SXVoT0Z5Q2NORS85aDdPb0hVRjA5UkF1ZWVkSFNjbXozOGJLNUd1bng5dGRCZ2pKbVU5SmlEY3oxdHJUMlpaWkY4NkdGSTlXbGtZRFF5SFpudHJvOUxMd053Zmd4SGdzZVNMcWs2NS9DOUpBMGZWWnJ6L0xyRGtsaGkxVzFOWFUwbzM3SFdKL0Y1L0d5U2ZtNk11Y2NZTTJtTTJmS2FQNVBHbUhzY2h0bk1lOUc4Q0F6TlpyckRGNHFCcmt2anVQUXlBTmsrQUFCNjVXaXpzMFdIYnlucCt1bFgwcW9YeEFNOTk1NXdkSnkvOGZDenVieWYyOWNOQmlkZTgrY3B1ZDBESnZOZU5DOENRK3FySlFXYVRHUHk4OFM4WFdpMjlBQy9JY0NyNGlDOS9WV0FCQkp2ZHVaNENjT2s0V01EVFhwQlBMaHd6OVhRbmJ0ODI2MDhaNzFTajNUZjcvQUZCa2xxZDV5TTZWcFJGS1d6L20reHJTZlRERHRBcnNKQ3JMbXhKVHRMSmVBaHJ6WTdjekQrbUI2RzFjTWR3NUxjMXRUbFBoZmJQZnlJWDh0SlU5emJqNU42RXhoZTNwRHVNbWhScUtrMGRuNnVXVnR2R24yVm54SWcvZUFQSkpCMFNkVjdQZnM4NzZGSkIrWUdNRTljRFV2YTdlRm5leklISWZNUmErM2hvUTRNRS9OMm9SVXIxU0pjdEpqT3VMbXhKVHZiNk9naGZrY3c3TklPL2tBQ1YzajRucEtFa0IwMDZhcCtSZ25jNnQ2c3V2aWQzMmVNdWRpeno3WWs2Yjk2M2dSOWUzQVIrRlNGVnV3c3VaNVhXcjFyY0hPMUFBQUxwVWxFUVZRTWtoUTE5VU9HSm1HWXRkdDZiR0xlTGxBSmVDcnBiLzlQZmZ0QW5tNkM1ZE1Ob0tzTngzQTJWeXYwWE8zaE5YTlU3b1pkT1E4TC9lcGQ4QzR3YkczYUkybmZkS2ZWeTFDenRyN1kwSmY0SGNHd2lnMXJuOE5yK3p4OFQwbER5Q1UwNjZvZXBnVE91ZnF0djhuVHozZWYvQnVhOUxTay85TFBOeEQ0MWtxcFQzNU9zWmRobTdXbkc5S1grUzNCMElXRldIUHN2UUJmT1ZxUkpZMWRWWlB1eFhBcHJidXFKeW1CVzkybjhDNkdKZTN4Y1FQQzd0Q2tXeHg5UmxkaFlhcjd2Z2dNeTRydDlML2NhZlV5U05LV1Jmc1VHN3BoMkxRQ0hhUUs4TmpiUFgxZmN3bGZmd1ZOdTZhYnY5dXBoSE91aGlWZDcrbDFjMHJTbEFlaFlUa3NuT3AzVFFxK05WTE4ydnBNeVJ5SVFrMmxkWTRvMU5TSml2bEpXc3Mvampicy9oZEs1dkl3MUhoV2Rac3BtaHRjSC9QbERYcWFNZWxZVFd5MUVOV1pYQWl2dVJpNjgrc1UzbGZTdlJoR2FObzFlWUlTT1BjalI4ZVpVaDkyTFY1cmFEREdUT25NVUtBOXd4d1d2QXdNMHBrZGxLTkdlb0ZCa2tLckczVm1uRm9xZ3FidTZVUzZMYXZRRUJXMTEvbU5ZRjNQU3lJdzRJSmFzUjdkWW0yZFNzQmppWWZ1cERFY29IdERrdVFRK3lUZFJ2T3U2Z2dsY0g3dG5qVEdQS0xreTZQdU5zWnNjYkF2U1pxaDRUL3B6TkMyYjJkNDZ0c2wzZGZ2WVVobjNkZjYyRUJaTExGYUREUTVIWm5VTmc2cFdWc1Btcm9udHR4d1k3QXRWdlZqcWdEUEpSMjZrK1pLTzRrbVYvcTJOS1duTjMxTGtqNU5KWnh6TmZ6NnZiNWZQOWJhQjNWbWFHUGF5NXJlSzJuTVdudTNUMkhCMjhBZ1NSMlQvcGpvY3FoUHpobFRUak0wTE5aMUI2RUJnNnJaMFFHR3JTRUhrZzdkbVUveHZTVjlzdnBtbW5kTldNWE52VU9Pam5OelRvTG5LV3Z0YlpMZUpPbnY1VzRscGFlN2dYYk1XbnVicjcwdHhscnJiZU04WHphZkxRYWFUUE1jalk0ZTJ0S3dxWWFUNDhac3FwWjFaMkRPL0tQMTU0djJBNjdQOGN1cStaK3VqMW0zMnBmV1BBK2ZQM2V6cFFkR1cvWngzNi9sTk5wbnZmV2NMMmtQZ1FFQU1JeTZxenk5VTlJV1NaZnB6QTdzcTIycWVLL09EUGQrVHRJLyt6SkhZVFVGbjk5Y3graGdVZWtHaGxLb0Q1Mm9tUCtiNW8zeE5tdFBIemZtam1wSnR3YUJhbnpGTUFqb1hRQUFETFB1emY0cHVac0U3cTNBNXpjM3RtUm4wNTdMSUVuRldCOU8reHpickQxdEdycWowOUV4dm1JWUJDOVg5UU9xQUFEQTRBdDhmNE5aekdVSVE0Mm5zU3pwNjlXc3JiK2pZYi9BWlllOG8zY0JBQUFDZ3pleTZtV0lpdHA3b21JMmMwa0FxNk4zQVFBQUFvTlhzdWhsa0tUSTZsTnBycG9FRElKR1J3L1J1d0FBQUlIQksyTkxkcmJaY2JiZTc4ckZDRlJyUmVsdUdBZmtXV3kxRURYMVF5b0JBQUNCd1R0WkRZR0lRazJsdWFFYmtHZnR0cjVYWTFkbkFBQUlERDZhbUxjTHpaWWV5T0pjNVZDZlBHN01KaTRQNEZWeHJEblgrMU1BQUFBQ2cxUEZ0cDZNWTgybFhoU2prVXFrVHpDZkFYaFYwK2lyVkFFQUFBS0QxMnJXMXR0VzM4cmlYR0dvOFU0eC9mMFpnRHhveFRycys2N2ZBQUNBd0NCSkdtM1k2U3lXV1pXa1FrRzdzdGlmQWZCWmJMWHdVa1gvUkNVQUFDQXc1RWFXTnk5UlVYdVpCSTFoMW03cmV5eWpDZ0FBZ1NGWHNwd0FMVEVKR3NPcjA5RXhKam9EQUVCZ3lLWFJsbjI4MDlHeFRJcGtORkl0NjA1Q0E0Yk5VbE5mcHdvQUFCQVl1SmxaWTJoZzVTUU1rMlpMRDJ5ejlqU1ZBQUNBd0pCYjI2dzluZVhRcEREVWVCenBOa0lEQmgxRGtRQUF3RUFFQmluYm9VbUVCZ3dMaGlJQkFJQ0JDUXpMTnpleFZXYXJ1TEJIQXdZWlE1RUFBTURBQlladDFwNXVHZjJQTE05WktHalhUTWw4a0VzSWc2UVY2ekJEa1FBQXdNQUZCa25hc21pZmFyZjFXSmJuakVKTkVSb3dTQzZ2Mi91b0FnQUFHTWpBSUVsaFM5K0pZODBSR2dBQUFBQUN3emxxMXRZWEcvcFMxdWVOUWsyOVVETC93RVJvQUFBQUVCZzh0ODNhMDR0dDNaMzFlVms5Q1FBQUFBU0duTmphdEVlYUhSMGdOQUFBQUFBRWh2TWFiZGo5V2U3UDhOclFZTXU2LzdneG03aThBQUFBUUdEdytjTTFkVStXK3pPOGNsNmprV3BaZDg2VXpGWXVNUUFBQUJBWVBGV3p0cjVZMXgzOUNnMVJxQzlPUjJZN2x4a0FBQUFJREo3YVp1M3BkcXgvN05mNXF3VjlubVZYQVFBQVFHRHcyR2pEVHZkajVhUmxMTHNLQUFBQUFvUG50amJ0a1VaSEQvWHIvTXVUb1U5VXpHWXVPd0FBQUJBWVBMU2xZUS8yWTduVlY0cHRORkkydW5lbWFHN2cwZ01BQUFDQndVT2pEYnUvbjZGQmtxS2k5ajVmTnA4OXV0R01jQWtDQUFDQXdPQmhhR2kzOVZnLzMwTXgwT1FiNi9vU1M2OENBQUNBd09DaHNLWHY5R05qdDdPSzMxMTY5UmVSK1RnVG9nRUFBRUJnOEVqTjJuclExRDM5RGcyU1ZDaG9seTNyZm5vYkFBQUFRR0FnTkp5L0lWN1QyOERjQmdBQUFCQVlQQXNOL1o0SXZheFEwSzQzMXZVbFZsSUNBQUFBZ2NHajBPREQ2a212TklyUlNGVFUzdG15WVZJMEFBQUErcXBBQ1Y0MTJyRDdaMHBHVWFncEw0SkRvRm9rZmZINXNqbmNNVG80dG1SbmFhVU12aFNoZGoxZk5sZTZQR1pvdEkzS0FnQUFBc09naElhaStYMVUxRjVmM2xNeDBHUlJtaVE0WkJmVUFxbEdKUUFBQUFnTTV3OE5MZnY0ZEdUK1dDM284ejY5citYZzhFTEpIR3RZUFZwcDZkbWF0WFZhREFBQUFBU0dqRzF0MmlNbkttWmZKTjBlR0htMWFsRVlhcndxamNlaEZtWks1bERiNnJrcUxUbDAyblV0VVFVQUFKQTJKajFmd05pU25WMnM2dzRmbGwwOWIrT2RXWXAxeXJlZUVLUnZzYTI3dDFsN21rb0FBQUFDUTU5dHMvWjAwTlE5clZpSHFRYjZMYlphZUdsSnQyeHQyaU5VQXdBQUVCZzhVYk8yZm5uZDN0Zm82Q0dxZ1g3cGRIVHNUMlhkU3M4Q0FBRElFaVBmMTJGTHd4NmNLWmtUaFVDZjgyMWVBd1piczZNRG93MjduMG9BQUlDczBjT3dUcU1OTy8ybnNtNzFkVjREQmt0c3RiRFkxdDJFQlFBQVFHRElrWWw1dS9DT2h2MENRNVNRcGs1SHh4YnJ1b1A1Q2dBQW9KOFlrcFFBUTVTUWxrWkhEMjFwMklOVUFnQUE5QnM5REFtTk51eTBxZXVXZGx1UFVRMGtGY2VhcTF2dEl5d0FBQUJmME1QZ1FIZTM1Vy9NbE14VDlEYWdWNDJPSG9xYSt1RVl1M2NEQUFDUDBNUGdFTDBONk1WcmV4VnFoQVVBQU9BWmVoZ2NvN2NCNjBHdkFnQUFJREFNcWRHR25aNHo1cFpHcFBlVlFuMklpdUMxT2gwZFcycnE2MnpDQmdBQUNBeERyTnZiY1BDNE1UOHRsZlIzeFVDVFZHVzR4VllMOVk2K3hsS3BBQUNBd0lCWGRKOGkzemNkbVNmS2dUNFlCS3BSbGVHelBQeG9LOE9QQUFBQWdRSG4wMzJxZkdTbWFHNG9GUFMzekc4WURzMk9EcnhjMVE4bTV1MEMxUUFBQUFRR3JHcTBaUitmTStiSlprSFhFaHdHVnl2VzRZN1J3YkdHbmFVYUFBQ0F3SUIxNmM1dk9CTWNJazFGb2Fhb3l2ckZWZ3UrQmE1WGdrS2RvQUFBQUFnTWNCTWM5aC9kYUg1dzBVdmFRWS9EK25Tc2pnZkdqOG5rQkFVQUFFQmdRR3E2NDlzWnFwUkR6WTRPeElGK1FsQUFBQUFFQnFSdWVhaVNwTWVuSTdPZFZaWDhGRnN0dEdJOXVsalZqNW5NREFBQUNBem9pK1ZWbFU1VXpPWkNSMzlkS0dnWFZlbHpVSWcxVjQrMXY5TFNzMXRZSGhVQUFCQVk0SU94SlRzcjZSdEhONXFITDNwSk93cWhkdEhya0dGSXNGcG94enJFc0NNQUFFQmdnTmVXNXpsSWV2eEV4V3dPWXIyN0VPaDY1anFrb3hYcmNDdldFNVdXbmgybE53RUFBQkFZa0NmZFhvZFpTZnRuU21hcnBLc0lEOGwxT2pyV0RuVm9zYVJubUpzQUFBQkFZQmdJb3cwN0xXbWE4TkNiVnF6RGNhQ25DUWtBQUFBRWhxRUtEOGVOMlJRVjlHL0NRTzhPUTQxVG5UUGlXSE50cXlPU2ZsNXNhdlp5aGhzQkFBQVFHSWJSTm10UFN6cXRNL3M3bEZ1Uk5sdHByQ0NORDFPQWlLMFc0bzcrVDZlZzZkYVNudS9XQlFBQUFBUUdMT3Z1NzdEYyszQnd6cGh5bzZ5M0JHMWRia0pkR1JwdGUvMFFwbEpkdjgzaloyM0ZPaHhielhhc2Z0VzRTQzh3ekFnQUFLQjN4bHBMRlNCSmVtMklVS0JMUmh0MnYrL3YrV1RWN0RRdFZSVG9WTE9wZVhvUEFBQUFDQXdBQUFBQU1oSlFBZ0FBQUFBRUJnQUFBQUFFQmdBQUFBQUVCZ0FBQUFBRUJnQUFBQUFFQmdBQUFBQUVCZ0FBQUFBRUJnQUFBQUFFQmdBQUFBQUVCZ0FBQUFBRUJnQUFBQUFnTUFBQUFBQWdNQUFBQUFBZ01BQUFBQUFnTUFBQUFBQWdNQUFBQUFBZ01BQUFBQUFnTUFBQUFBQWdNQUFBQUFBZ01BQUFBQUFnTUFBQUFBREFzdjhQbGRyNk5IUjMrN1lBQUFBQVNVVk9SSzVDWUlJPSJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMC0xMC0xNCJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjAtMTAtMTQifSx7ImFhZ3VpZCI6ImNkYmRhZWEyLWM0MTUtNTA3My01MGY3LWMwNGU5Njg2NDBiNiIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiY2RiZGFlYTItYzQxNS01MDczLTUwZjctYzA0ZTk2ODY0MGI2IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkV4Y2Vsc2VjdSBlU2VjdSBGSURPMiBTZWN1cml0eSBLZXkifSwiZGVzY3JpcHRpb24iOiJFeGNlbHNlY3UgZVNlY3UgRklETzIgU2VjdXJpdHkgS2V5IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfaW50ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MTAsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDVmpDQ0FmMmdBd0lCQWdJSkFOb00zOVpZNzVacE1Bb0dDQ3FHU000OUJBTUNNSUdHTVFzd0NRWURWUVFHRXdKRFRqRXpNREVHQTFVRUNnd3FVMmhsYm5wb1pXNGdSWGhqWld4elpXTjFJRVJoZEdFZ1ZHVmphRzV2Ykc5bmVTQkRieTRnVEhSa01SNHdIQVlEVlFRTERCVkZlR05sYkhObFkzVWdSbWxrYnlCVFpYSjJaWEl4SWpBZ0JnTlZCQU1NR1VWNFkyVnNjMlZqZFNCR2FXUnZJRkp2YjNRZ1EwRWdNREV3SUJjTk1Ua3dNVEk1TURJd09ETXlXaGdQTWpBMU9UQXhNVGt3TWpBNE16SmFNSUdHTVFzd0NRWURWUVFHRXdKRFRqRXpNREVHQTFVRUNnd3FVMmhsYm5wb1pXNGdSWGhqWld4elpXTjFJRVJoZEdFZ1ZHVmphRzV2Ykc5bmVTQkRieTRnVEhSa01SNHdIQVlEVlFRTERCVkZlR05sYkhObFkzVWdSbWxrYnlCVFpYSjJaWEl4SWpBZ0JnTlZCQU1NR1VWNFkyVnNjMlZqZFNCR2FXUnZJRkp2YjNRZ1EwRWdNREV3V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVRWK3JPRkUyTXZDeEtuSjJxRU1sMXhWKzFJQkZoV1Z6RlBlLzdBU2pWSUVjVjlwcEswaStpVDhDcVFKY2N4QnB6NWRPVGVzNkFzYXBDbTlhM3llQjhEbzFBd1RqQWRCZ05WSFE0RUZnUVU5SUt2dnBiZ3hzLzZTb2lmWGVuRk5EdEk3Q013SHdZRFZSMGpCQmd3Rm9BVTlJS3Z2cGJneHMvNlNvaWZYZW5GTkR0STdDTXdEQVlEVlIwVEJBVXdBd0VCL3pBS0JnZ3Foa2pPUFFRREFnTkhBREJFQWlCSDA5cmx1RCtSdWo2dHk3alloQXJZbXpuRW9wVmsvK2t4ZHpmUnFReDFKUUlnU29NWGtQYzlrZmx2bXdEUmRRcStYTjFiakg4NGRBRjlyam95TWxFa041dz0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSXdBQUFBWUNBWUFBQUFvTnhWckFBQUFDWEJJV1hNQUFCN0NBQUFld2dGdTBIVStBQUFGSUdsVVdIUllUVXc2WTI5dExtRmtiMkpsTG5odGNBQUFBQUFBUEQ5NGNHRmphMlYwSUdKbFoybHVQU0x2dTc4aUlHbGtQU0pYTlUwd1RYQkRaV2hwU0hweVpWTjZUbFJqZW10ak9XUWlQejRnUEhnNmVHMXdiV1YwWVNCNGJXeHVjenA0UFNKaFpHOWlaVHB1Y3pwdFpYUmhMeUlnZURwNGJYQjBhejBpUVdSdlltVWdXRTFRSUVOdmNtVWdOUzQyTFdNeE5ESWdOemt1TVRZd09USTBMQ0F5TURFM0x6QTNMekV6TFRBeE9qQTJPak01SUNBZ0lDQWdJQ0FpUGlBOGNtUm1PbEpFUmlCNGJXeHVjenB5WkdZOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6RTVPVGt2TURJdk1qSXRjbVJtTFhONWJuUmhlQzF1Y3lNaVBpQThjbVJtT2tSbGMyTnlhWEIwYVc5dUlISmtaanBoWW05MWREMGlJaUI0Yld4dWN6cDRiWEE5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM4aUlIaHRiRzV6T21SalBTSm9kSFJ3T2k4dmNIVnliQzV2Y21jdlpHTXZaV3hsYldWdWRITXZNUzR4THlJZ2VHMXNibk02Y0dodmRHOXphRzl3UFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzQm9iM1J2YzJodmNDOHhMakF2SWlCNGJXeHVjenA0YlhCTlRUMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzk0WVhBdk1TNHdMMjF0THlJZ2VHMXNibk02YzNSRmRuUTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl6Vkhsd1pTOVNaWE52ZFhKalpVVjJaVzUwSXlJZ2VHMXdPa055WldGMGIzSlViMjlzUFNKQlpHOWlaU0JRYUc5MGIzTm9iM0FnUTBNZ0tGZHBibVJ2ZDNNcElpQjRiWEE2UTNKbFlYUmxSR0YwWlQwaU1qQXhPQzB3TlMweU0xUXhORG8wTURvMU5Tc3dPRG93TUNJZ2VHMXdPazF2WkdsbWVVUmhkR1U5SWpJd01Ua3RNRFV0TURWVU1EazZNek02TkRjck1EZzZNREFpSUhodGNEcE5aWFJoWkdGMFlVUmhkR1U5SWpJd01Ua3RNRFV0TURWVU1EazZNek02TkRjck1EZzZNREFpSUdSak9tWnZjbTFoZEQwaWFXMWhaMlV2Y0c1bklpQndhRzkwYjNOb2IzQTZRMjlzYjNKTmIyUmxQU0l6SWlCd2FHOTBiM05vYjNBNlNVTkRVSEp2Wm1sc1pUMGljMUpIUWlCSlJVTTJNVGsyTmkweUxqRWlJSGh0Y0UxTk9rbHVjM1JoYm1ObFNVUTlJbmh0Y0M1cGFXUTZNakU0TldZeVltWXRPRFZtT1MxalpqUTNMV0ZpT0RjdE9URmpNMkl6WmpCaU56aGxJaUI0YlhCTlRUcEViMk4xYldWdWRFbEVQU0poWkc5aVpUcGtiMk5wWkRwd2FHOTBiM05vYjNBNlpXTXhaVGczTWpFdE56TTNZUzB3TlRSbExXRXpZVGt0TlRGa01UTXpORFpsWlRJNUlpQjRiWEJOVFRwUGNtbG5hVzVoYkVSdlkzVnRaVzUwU1VROUluaHRjQzVrYVdRNk1qRTROV1l5WW1ZdE9EVm1PUzFqWmpRM0xXRmlPRGN0T1RGak0ySXpaakJpTnpobElqNGdQSGh0Y0UxTk9raHBjM1J2Y25rK0lEeHlaR1k2VTJWeFBpQThjbVJtT214cElITjBSWFowT21GamRHbHZiajBpWTNKbFlYUmxaQ0lnYzNSRmRuUTZhVzV6ZEdGdVkyVkpSRDBpZUcxd0xtbHBaRG95TVRnMVpqSmlaaTA0TldZNUxXTm1ORGN0WVdJNE55MDVNV016WWpObU1HSTNPR1VpSUhOMFJYWjBPbmRvWlc0OUlqSXdNVGd0TURVdE1qTlVNVFE2TkRBNk5UVXJNRGc2TURBaUlITjBSWFowT25OdlpuUjNZWEpsUVdkbGJuUTlJa0ZrYjJKbElGQm9iM1J2YzJodmNDQkRReUFvVjJsdVpHOTNjeWtpTHo0Z1BDOXlaR1k2VTJWeFBpQThMM2h0Y0UxTk9raHBjM1J2Y25rK0lEd3ZjbVJtT2tSbGMyTnlhWEIwYVc5dVBpQThMM0prWmpwU1JFWStJRHd2ZURwNGJYQnRaWFJoUGlBOFAzaHdZV05yWlhRZ1pXNWtQU0p5SWo4Ky8wVnhSUUFBR2ZWSlJFRlVhQVhWd1hmY24zVjk3L0hYNS92OVh0ZHYzRHM3SkpBSUFVTFlCWm1DaW1EVkRsZnR3MjNIcVl1cVBWMFd0ZGJXUjYzblZHMnJucmFPdHNoRHJSVWZQUjNXV1MzS1ZoQVpZUW9FUWtMV25kenpONjdyK243ZTUwNGlLTldPODU4K24ybnVpc1MvSjNHOFlaZVoyWlRFSW1EODUrUk9PMFpTVWZpSEpQNkZIeUlFV0JqQXd6Tnc2b2JJM0N5a0NHYUdKTnloTE1Xd2ducm9wTkpJQ0JOVWNvb2kwTzhiK3hmRjZQTEFxSU1jR29kMlcrellEOUZnNDlyQWdiMWkwVEpUSFdHQ3VvNlVoZUVKZGk5bVZyU044Y0tZcTQyZCs4U0tDU08yZ0F3ZElCUVFUUHg3WmxEVmRra1dielRaY0tUSTNkaHZ2ckdsdWVNOWQ4VVRYMFJyK2ptb3lZQ1FPTVNzQkxwQUFqTFFSeHBneG8rUkFtbHI0b2NJWmhlR2tGNWxCcEw0cndoSUNYTERmSCtnRHhlRmtIZ0NDZVN3Zjc4aEV6L0tqTVBFRDVJZ1JYdVJ1ZjIwcFlCWlE3MmY3U3RHSDNZbVR2eEZNaGNnQXdsaUFSTGdHV3dHTkFmV1Fxd21oc2hCY240c0dPQStsOHFDeHhtUUJVM0RTWklqOFY4VFlGQzBqWVVGYmUzMWRQMnk1WkF6VHhBUzVNWkFnUEdqelFCQjFZRHhBOVpaMEtrbWNFSEltYzkzTHZpM0hmSElrcVplalRJZ01FQU83bDhueGs4aDNZTG4zWVEwanVzTTFMeU9FTTVFNHNlQ2dPei9sUFljRUk5eFFUdHh4SGczbnVrWUlMNXJFZGdPQ0NqNGZnWVNzUjVxUmFlanEwSml1cXA0Z2hRTkx3MVY0c2VGQUs5Rk1yNUhRTFRqUWd5Yk1jaU5nN0huMXBXWGZPT2g2c1NMOFBrak1RZExZR0dhd2Q3ZkpYWXZSMFdmRU1BQzFCV0U0bFo2Qy85TW1mNk9jdVRwU0lENGtXVUcwbTdFdmVtMmJjNWpobzFZT3htUE9uTVRwMmFKN0lDQmlZOEovVDdRQWtZQWNaQUFROEVvYzBPMnlMYlJVVU1DTTVDTWRodjJ6VGxrSS9KalJHQVJRaEhJalhpTUdjZEtHbmVNMGpLSU94NnBWKy9MWnVjajd4QU1TUHZvNnhWNDlRWFNPTXpOdzhnRWRGb3dNd01qWTVEU1hwcm1yUlQ2QjR4VmlCOWRFa3R1Sk5xT3RIYys4SmorRURwZDJ4VGFqR2dBR2VNZ2QvOW5ZRThJNElJUVFDd0pnSU1MWEJBTm1neVNrUjJLNE56OUlEdzZMellmTFFyang0WVpORFgwZWs1M0xDQnhTQXAyanBsaGdoWTFzelp4MDFYTkJYTUV0aEFxUUJXOTVoMDA2UXZFRWFoSnRNdVhVTVFYMEZSWDAycDloQ0xOb3dDZXJzZjhQckJWL0tmRVljWi9uempNK0FIdUVBTC9JVGxnWU1aaEJxNmJFUXZwU1VkR0hsUFZ4QlZqZG82eTRSSWdFTnNFTzZKQmxwRUNWTFVUZ2hGTFFUWWNJeU1LUVpNaEcxUU5GS1g0NWoxaVl0Sm9KVU9WK0NFTUdBRUNNQStJL3c4Q1hHQ0FPMWprdjgxWUlzZ09Fb2VJd3l4QVhZbTUvYzZxbFlabmFESkg1Y3pKaElCTW1PQWgzL2psZ1hWV1F6NlJZREFZWHN0Qy9SZDBsa001QXZJM1VIVGZSd0JxZng0am8xdUJMMklSNmdEWkcwSUFCTzRRSTJEZ0RpWU9zUVJ5a0lNWlAwamdHVUxpY1JZQWdRdk1PRVFDTXloYTRCbmtQSUVFRnFCb1FhN0FIVUlFQkRuZmljanBwRWx4aUlESW1zNlluWmtiYURKWU1EejczY2dmbVdrQ1JZTEpDUDArV0FBS0htZUFaRWdRQWdUamtORTJwQWdTaHdqSUFvempnWjlCT2srd3pzQmM3QU8rZ3Zpa3hLUDhKd1M0R0RHNEtFWE9FcXpxdFBBQTN6SGpDNEt0L0JjRXk0Sng4V2liTTJKa0tvb2FlQUQ0Q3VMYkdCUWx4QkVqWmtHZjlYVnRtNGhnQ0l6WnYrWEZEejBZTnA2TkxheEVEbVhuczB5WkV5b28weG5JL29pY29ha2hSTUJlZzN3VFVrbjIxUmduRThRaHJRNG9nMmNIYlFmMjRxd2kySHFTQlJxQkFETWU1dzZwZ000WURIcVFHekNEa0NBVk1PeUJIQ3dBQWdHeEFEbDRCb3NjWnFBTUNHSUx3amhVUGFGc3dBNkM3bUZKbW5sVUhPUVpXbDFXajR5eVJVRWdrQnRseVQydHFBTjc1NFc1c1dSQ2NLcmdETERqZ09VR0NvR2RHTGNDL3lwNGhCOUdFT0NZcVhaNGJXN3NSZEYwRkdhR0lBTXBRc0NlWllGZk03TjNDUDdhUUh3ZkFUbXJSUFpMcmNpdllHeVdXVmVDdFpNZ2w1ckszcFNpUG9iemg4Q0E3eU1naTFHWlhlcHVyNHpHcGcycllsblhBamVVaERzUFdlVFBMZkxIMVVEYWZtK21Mb3lSdHYzRVpOY21xeXhhTkNCdXZUNmV1d1B4TXRSdjQrclJHOXhJTXVnME1OUUJMTnhQYTJRTHVZRnFBTVRuQTgvbm9DSUF4aUVoZ3VjRExQWStUalA0RXVOajkrRFdKNFJBTlhNNmROL0N5TEt6V0p3RmJ5QkVRQkJMVUlERm1RZHhYVWNxN3NUQ2dHSC9LUHB6ejZBemVoSUdOQTJrTm5qZXdmYmJQc3JZNnZ0b1R6NGZhMTZJQmNnWldpT1E2MGZZZnYrSG1GaHhCOTNSbjhQenkzRGRqckdkSmFtN01YQ1FCRVhrRERQR2NnVVd3WEFHZlYxZlcwQnVheTN5ODdnOXY5MjJFdzFiSVRjd2dTQUZROEpqNEg2WlhWRkxId0JtK1M0SEFyeDQ5VEo3UjlrS3h3OFd3UUtQazZCc1FRR1d6ZFlYby9HamRaT2pNaDgyRHBNZ0pqdHA5VVQ4Mzkxa0YrZUdva2pDSmJJTWx4QllyblZrdTJ0dk13OUhtdkpyQlFPV09GQUVUbG5WRGg5c1diaWdjY05NMUJuRWtpQWtrTEVoQkh0M0dXd1ZtZCs4ZDV2enhlL0U5TXl6N2N5THo0ZnFFU2lWMlZscytQeWVZbTJQUGsvRk1zZ0hEUG96V0lDcWdtN25BVHkvZ05rOXI2RW9uMGQ3OUVrMEZZY0lDQUhFRW9FUHY4cWpEN3lUVmNkZHc4UjRReldBTEJCZytXRm1Gci9LYkhNRlUrWHpDQW15Z3dVbzB4NzJQZlNYUEhEbjM3TGxLUTloMWlkRXdHRm0xeW82eDd5VnN2dEc2aGt3b0RQNk5oWm1MbWZaeGhZcFhZelhJQUdDYUNDOWkxNzlGelRYUVRyaFFzcE40SXZmQXVaWmtycGRjWkNnRTJWbmV6WmNJbUswT254MWR0YitMamU2ZU5VSysyRENqcTlkaEJDMDVBRFNpQVhLVmpTYVJqUWl4R0RIZ3IzVDRGbkFyMHA4MndXZHlGdGJJK0czVFRiZXVCQVFnQkFONVBNakxUNTN4NE82ZXRzQys4NC93ZFpPWWk5dGlPOHl5N2NpM2NoQjR0eFd5ejRTNGNRaVFPZzZ2UjU3VEZ5VmdqeVlYU1JZMVFBT2RHSjhxYVJySlB0b1UzUFF1U25ZRmFQUk5tV0RqRERZV2RWK3ZSblo0R3d6MjJCQU5aU1ZuZmlxbzQ3bHM1UE9WZlBMYk8yS1VkdE1YMkFHQlF3NkU5YzBkKzFkeGRyak50Rk9vRGhDWi85NTdIaGdLMGVmQzZFRzV4NEdpNzlPU2g4Z3BLY1IvZGNvdTZmUW40ZnNrQ0pRL3ozVWIyQnF6VTZhUG93c081Ymg0QUpjdS9EbXE3UW5CdlNaWi92V3R6TjI3R2wwSnpjeVdBVFo5VlJ6YjZiZHZvYk41NHFpQldxZ0dvSWl0RWYzc09mQW14aTNTTGQ5S1ZWL0Y2M3VWemo2TElqRk9sUmRnQVVRRUFNTXEzdkpkaFZyMWtKdUxjTW1uNG9xb0w0WlBJT1JHSENJR1ZORVRoSmdCdG45eThNQnJ4OGRzN2NGaFhkMm9oZzJmbVBPK25TUTNReTJEOU5rVTlrcGk0Mi9vR3lGaThwSWtBdHZ4TVNZblIrSytBa0x6WXRHMjNaQnV3eHZ5ejIxNjBhWVFaRkFVUFY3L3FtaXNEOW5WTGYxK3ZTbmU0NHNRTllWamV6dHBmSFVSbjRUc000c3ZNL0VpU0hCVEYvOWhVWDcwN0t0ajQ2MDJJWElOOXpWYko0YWkrL2ZjblM0c0JxSXhsVzBZM3pkdmdVK3VtM2Fqemp0S1A0TWJGTXRrR25Pczc4M2hQREpFT3hSU1JnY2lYZ2J4a3NGbHFLdGFLZjR3djVRVjUxNnJKNjB5am1oMm05WUVKVHNmbzllLzhoOUJ6YWV3Ukh6VTRRQ0ZGcUU4QWE4dW9taXVJV21ENTZoTE1EaWc3UkhIdVNXYTcvRXNQOVJUbm42czRnR2kvVzF5TjVJSE95a003R01oWVUzczdqNFVzUnFpbEFnUGs2T3YwNjczc3RSNjI4bmh4dkkya2gzL0NibUYxK0x1STN4TmVEaDZWVDlWeUdPUlBsbUd2OVRKbGJ0eElENTRWL1NhajhYZkNkemV4ZXhOdFRWV1VUZmdCbVlRVERvRFhmUTB6WW1XcEEybm9QN0NmaGdIeUhmam9tRGtqak14UHBBT0E0RHo5d2c4WDdWK3IyUlRuejVZcTBIZHMvbFB4d3A3VFBCbU9PN2drSGxYSHYzdy82eGlTbi8rVk0ycGJkWHMvWWtqMkk0RUtFS1c1NTZVdkhsbUppb2Vtb3JjMGdyUVFPUEhoajZXMm5zYjhxQ3g4VUlNUmk0OXRkWmYxQVVYREJXcG9tRlNyOWxGczRKQ0F2TTdacjFTL3Z6Zkh6RGVzTU1FRFJ1dDg3M21yY29wL2NFV0I4RHpYUlA5My9xT2kvT1B6bjlhbXZVbnJ3d0M1Z2U4dHBmQlh5Tko3b2I5RHVZbldqWWFaN0ZZclpOTWNOSzJKS0NqVmRtZEJuQWdCc2YwaEhiMkxMdWRhUURJMVFWeUtDejZtU09tZm9rN24rTS9FdDQvUWl0VWVpT2d6Y2c3V0RZK3oxeVBvbWlYRTlqZjRocEI2YjFwSGc1NHl1ZndYQUFaaEFOWEMrbmFtNGw4QjY2NDlCS0I4Z0xNTmQ3SjVWdW80cVJFYnVNd2NKdlkyRU1pMUNNWG9TcUR0aGx4QUFkemRJMGV5azczMkk0bk9PdXUySDk2dE5adFR3eHJDQVl4QVFMKzIvQ3JNL29hdWhWVDZaVmRKaHVycWV0QTNRaU9LUVVqZTg2eFl3cHdVN0hyMjBuZTB2MmRHNC82K3Z1L2lwZ0c5OWxnRmhpSE5JNHZVYTZIUGR2N2h2d2liRk9PRFVCdVJIakl4eVJIZW9HZ2tFTXNHdEczODdCMzFoMjdHb0pFT0RRYlVPM011N2RubG5aRVdYQlZMc2RPNVk1WGg1ZW9DaUtDRE56K1VQVCsvempyWlNRd0lBNnc5cEpaekQwYXdmeitlZVNhU3dtY3BYWk5UVnFwNjlaWWI4aUI4K09SOTZkVXZ4YU1FWWxHV0JMV0pLQkEzSjkyNHpUV09Lb1hEU25LOXVZSkFRRWd3UE42Tlc3ZTJ1Z3pkbVFRU3dSNE5EdWJNYjlyOGpGVnFJK0FmWVpvdCtIK25EMGFTejVCc3EzMEJ2c2d2QU5tajNnZmhSaCtUU2h1Uko1QllpR0FoZ2g2QjZLQkFhc1dINDZYNy95YzFqcksreDdBRFkrOCtYRStBY0l3d1JpU1laMitVdElaMUEzTXhSaEFta3psbjZmYmRzYVJJZWlPSldEREpCRHc0RDIyTGNZOW1CMkRrSjZNclJncW5NelRYMkFiQnlVa0ZqU3d1eDBDUXlmam03UERlTmgwNkRVRjFwOXZaekdwdVdBUUFZWk1NQU0zQ0VBM1RaUXNIV3Uxcy9VTWYvVlVkMXdTYitHUVEwR21FR0lRQXBmZjNSL2Z1M0tGZHpsQWpOUWdHWUlKMjJBWnB2NDBPZmh3ak1EenozZEx0MjV4K1JvNCtybHRpd1BJWFM0cDEzeUoxUHpScnNGcVFWMUF3WjBTMk00QkVrN0RKRmxyQmlOeFl2UDU0VmtWaXpPaVpCc0VlbW5nTE1FNDRENG5ob29ETTdpSUFPRHhXZ1UwVGhKQXR3Z3daZmpKWGRzRFNlMkNQa0lWQU1CTUJEUUREa2tkVTdFdXUraUhyd2FlQW1Ub3pmZ3dHSUZxSWY0QktWUDB4OUM1anE4dVk1UThEM0dJY3BRbE5DZFdNbmV2Y3Y0OXJjK3lyTE9JaXZYcm1DeXVJektEUk5nUEs3SlhlQmN6TUFkc1BzeHU0Mk5SNEg3OFpUaEZPb0tNRURnN0dCMGZDc1IyTHYvQkk1WXR4a0w4SjBicjZPM1B4TUxEa3BrRHBxazBPa2dZckNqcldNajkrM1JUZE1MZXZVNFRLOGVnN0lGYnBBTmhBaEJXQU5tY01SeVk2U0Evb0xZdk15MzF6bGUyV3U0aENYR1lXWlFOZjczL1lwTHk1WjJsUUZLak5BQ0JlaFYwQ21FQUFkaXlYbmRibnJwMXVubWo4cFJ6bDdmc25iZHdNNTV2M3JkbHZEb3lSc01HakhZQVRQVDBFcXdjc0t3RUZFdzNDQ0hRSVRWMGV5aVd1QUdFVWJLRUg3YUFRbk1EQVFPR0dBc0NZWUFBNVI5YXlmWTZRbDd1bVNVN1JybWVIQjcvYVRiQjFQZDU1QjdHM0RMWUxzNXJBMDJBVVRVZ0F0U3NaSHNMMmJQZ1J0b0hDeHZBRnREc0swWU1IbGNDMDhyeUwyRTZocUw0cUFRdXJnbWlVWEJzUDh3dmRZcnFQYk1zbjdsMVp6NkhGaTI1a0p5M3NoZ0hrTGdDUXdRSUNBVnNEQjdMYjNlYmxhdGhSQlBZWGJmQ2c2eUNGWkEvNUU3R2U2K25kRlRZTTJHMHhsckgwTnY1Z0JYL2VPOVBIdzNkRVk1S0NsdzBMR0JjQ29Zb0pGT1MremNtVCs5WTVlMnIxNWhkRHZHMm5GalVJRUJCcGhnVUl0MmFSeTV5cmg5dTVqdGlSUFc4Unl2N0hmZGpJQjRURERERzN2NHpsM0RmV3Vuak5GV29oMk1Ka0x0RUlFQTlJWXdWaksrNmFqNGYrZ3FuTFpKTjJYRjF3em1oUlZVRE5uYVRBTW02Z1hSekJtdDBwQTdWUTJybGhjMGJtUVhNUW5Qck9rTk9jNkNpSVlIV0JDcUJNa01ZNG1FeFlBbG8xOWw5VG1zN1diVDlkQS9WclR0OUJpdFcxWFFzUXlKNjY1WlBIVUh6czlpZ3hMeEJveXJnUUk0SHZRQnpLWndRVm1BNUR5ODZ5WXF3ZklXZE9JRk1ISUNzZDBEUVRWWWh6VlhnRTFCbUFWenpFYUFJNEVhWXovWURLazZGenBYY01IUFBrem5LQ0N0cDlvZmVaeUF3Q0Z5aUFrQ21leVIxTHFkWFBXWTJRTm1KNURLaER0WWdQYllrTVhaLzR0RmlDdUFBejlCTTRSKy8wWTJuN09MZGNkQktqa295UUJqTTlBMVJCYlVpeXl1bjdDN2psNExUMXBqekM3QVlBaG1QRUV3a0tCcUlEc0VDNzhJOXFjMWpFZUUrQjUzMFdtRlgxNDJtdTZxYy82d0F4bHdBUVlJcWd4akhWYTg4cUp3eFVtcndtbVBQbHkvZXFvZER5U3o1WFVqWW0zRmlyYVd6KzRXUVNLWkVWcWdpc01FVGFPT2pHeW9hSGZGY05GR2xCa0xMREVMZyt4L0hjdy9VZ1E3S3JzaVFnNHFaSG0yMGU2VzJaeHhTTGRwdkoyZCt3cnM5VGxETEEwR2tVVTFkelFUdTZEaUdKTE5ZM3dXdEEwTXBQdUJTOEhPQllFRTg0dC9RdEg2T0t1WFFmOVI4UFpUYVkrc1l2YitCWVl6TVBLa2ZSVGxQbUk4SHh6TVFBYjE0TXNFdTVKUTNJTDd5NGlEODBoanM3aFZUTzhCOTF0b3QycFNUTWhBQmpTUS9YTVU1VmZCZDdNNDJFSUlsN0ZtNVJ5akpYeml6NkN1dHZQY04yUjYvVVRUaDhYOUg2ZlYrUnVxR2FBL1RxNStnbDRGcWZVTkx2ejUvYVFDSkE1S0psb1c3R1F6UXhJbVkrajYxb1lqdU5iTjJEY0xHSmlCZUp3QkpUQjBRUXJXM2JEQy9xQXN3cHVHdFNYTU9jakVmaGtkb0NQQVhXUEhMRXZ2bmU5amNqNWlBZWU3aEtocWU4YnhhOEw3V3V2aUtmZmRuUi8rNWozNjBuT2VUcGhNaWd4QVlKVjRhb3hXRm9US2xVRUdCbklJMFg3WmpKY0hWQW1iMkQvamZ6YlJzdThvV2QrenVza2dpL1lnKzUyaklkNkpHV1lRZ2V5QlBaWE8zZEFORndmUmRURW0rVHRhcFI4UnpKNlIzZWgwd2ZZM2ZHYmZlYmRkYyt6TFZsRnJJNE9xRFdxRHdBS2dBOEJid2Y4bktRVkM2MU5VTTU5aDFTUzBPdEFmdlppaTlRSk1zTGh0R2NrZ05uTlEvakxLZDBBOGg1QVhxUHQvRDkxUEVGT21HWFlKY1JsaWlUYWpaZ3IzYWJKZGgvUk94RytoUEVXSWN5aThINXAzSTEra2JxQS8vQjNXcm9VN2J6akFvL2ZEMUJHdzdiWlBNNnlPcENqT29hbitsZjdzQjJsUFFRUjZ1MDlnWk9Sa0hERDdKdFVRcWlHUFNSYVlER1pQRm9jWndreXIreFcvR1F3cmpFSThyaFdNWllLVndPZGRmTWhkNThUQzNybHFNcHhmdTJnYVVRU2pjdDBXc0ZjWDBpdWFhSmZLUlJhMElxTmxOMzVnNlA2ekxuME83Q0dEbzhHZUVZTTluUkRHNkxuUHp1YzNiWnppb2VaQVhxYnhzSzFWaE9YRFNwalpCYVhDUjh6MEJvYzVscml6UEpxOXZTenQwaW9UT3kxalVHbjIwV20vdTczQnRyZmEzRCtZdFpPellEVFphM3BWbUJzMjlydXRrc3JNa0JoUFFiKzR2aDErVHpCbEJsbTZ5NHkzSjJPRjBCYUxScjJZU1NWM1BianFLVitibVZ2M1U4VGVrWmdEOGRtNDMwM09FQU9ZL1J1UjYybTFDdEE4MVg0SVU5QlVteWxiNzhmS1plUStMSC95WlJURFc2bWIvZURUaUxlVDJxTU1Gb2JNN3g2eStoVElmalRXL3pneG5Zc0RGaTZpR1o2QzZkOW9wWXp4eHpTNmltWndCR09qOTFPSDIvRGdaSWRXK2ZzVTZlMjBPckRub1JPcGRTV25QZzNXYk5wSHRyZXhzREJDcXpYSHlDUTBEaUhCL1BSR3hpWlhZUFZlY3ZNUU1yNWZHaG5WK29WNU95MUVEbkZBMkhHbHdsdWlBY1poeGlFdTdUWFpmVUxIaEVLWEUzaGE1YXlpaG1oR0E5UlovK1RHYjdqbjc4ajlFU3hlSEN3Y0QyS1lSVEFya29YbnVQakpBSDJEdG9LbGdpVXlXUFJMSnp2NmgxZ0VGcWZaLzhoMi9jMEp4M05xVVpKeUEyWjZoZEFXSS95clJMZFQ4RXpITnN1ZzB6S2lhV2VLZWduR0xRTXBET2E1Y2lUWXliVUxpMmJkTXY1R25YV2hZVmVEdW1aMnRzeE9HNDFLMmFHVzNTRHBKUlkwSU5oNVlBZ0RCd0wzcklyN0ZxazREVXRnQmpHK21leDNJbjBSTThpQ2ZqTmdjR0RBN0NPUWE1QzlpRmk4RDF0WWo5Y2dRV2ZpRXVycDkrTFZINUhDdlpnNStCejlQaXowbDdHT1g0RDhGaHBianNRaFJpSVc3NllaL2dJcDNvWFVZTTMxcEJMbTUyRlFRWHRxUGEzd3Y1Qy9GRE9ZbVliVG52M2J4UFlPZWdzZllkMnhNS3d5ZzJxZWxqMmJPaCtMNnk5b3QwUmFmUkc1QnVWdjRIb1l4UGRMdXc5dzNuaGJIWGN3UUlJaVFwRmdXQWwzc01BUThZamc5aWI3cmtRWWlZVTlIN04xTGhFRWpYRFE5WXREZjM4MFB0TnFCYzlBSSswSTJYOHBwWEM1c0dNZElRbHhTQlNNR2xDWU1XZzBiZGE4dm9VKzdkbndESjBJZXc3b1kyc2FmOXJxa2ZoenZWa25tOHpnekdEaFRBRVJFWU5SWmRFZmF1dFlsMWVueEhXR3lBZmNMZHRmeHpGN1Z0bTI4L3A5c1NTbVpPZTRjdzRZQnpsR1B3dDMvNWNRd3Bzd3RnMXJKbUlSbmhtQ2dhQVRLbVkwZGR2bjlUd29PUXZtT1VSYVRReVhJLzhZOEZWY0R6QjBHTTZ2WXpnNGhiWEhQNU1tUDVPOFdCSVRoNWhCTlE5MGZvR3lmU0dldndpMkMyOUVkL3hJeXZZRkRCZVBCa3BDQW5HWVo3QjRGbVg3TThEbG9Pc3c3U2Fta3JuK01YajlGTHJwZWVESDBUaVlnV2RvalhhbzYvY1NlRGJEM3Exa2IyaVh4K1AyWEZLTWlKOG0yRGl4UEEwMTROeE10bG1NSjBqYjl0blpaeHhuRE9ma0JCUUN3MkdqaGNWSzAyV3luZ1ZseWVZeFRIQmNDdUVDQzR6V1dWbmkzbVM2cndqY09aZTV2c3E2T3NyMlNlSXhCcGk0YnVENXhRRzdMSm05ME1GU01DUndpU0xTbTZuMWp3dVYzcnV5eGMwc2tVUnJNdERwR2lkTXNaQ0MvYXF5endxOU1rVXJ6STFHQW94YTBFN2E0NVd1N0EvMUoyUGRjRDhDQktwRXU5U09uTVBMOTgzejV4TnRQU3NSR0dZb0FramdFZ20vWjk5UUh5NGpsM2VEN1I5VWptQUNPQldKUThUaVBsdisyZnQxM0JiRTZZUWFDRFh1aHRrYWl1TE5vTmVRd241R0NxTllQc215SThhSVJhTHVRNjRiUWlFUWh4bGdFZXhvVEsvam9KeWgxWUdSU1JqTUMxRVRBaytrUUV4YlVINFhoQmtJczdoS3BwWXZ3MndFcjFuaW1EV0FFU0lNZW1BMlNvelBSLzU4WW9RRXVBQ0RZSmNnQjNPV09IQWRRZng3YWZQcThNRnFVWi9FYUVBS3dSWjdmZVlYS3kwZXVkS3lHcHNhVmt6R1NOdGdCT1RJcHB0R00yQUxLWEVBbUhmUnVLQmdpZkZFQmxuNmxzUC9rT3VLWVBhVW9ldW9FR3dZcEh2cXhyOWVLOXprTURTK1R6U3NNRG9KQXV6MnJEY09oL252S3NWbldORHhMUWlZcHQxMWl6SmZrN1RWekRLUE1TQUFCaUh3NE40NXZlVGhQZjZUVzlieWxMSmd3NkRDek5pWlROZVkrSHFXSGhMRzlFSk4zWWlVN01CSWFhOFJnU0FsRW90ZnFKOTE4MTM5NDFmUTdiK1NRTVpWQVlaa21MV1J1aGh0eWdRaDFCaUxWSXNEakV4SWdQTkVEUWdERXBBSUJybHV5RTJEbVRDV2lCK2dKZ0FkakJITUVwS0ljUWowYU9vaFpnNFlqekdXeUpBaVVDQUhVUU1OQjBrUmNFUWJiQmE0aVIvaS93SDNENVBNcGQydDVRQUFBQUJKUlU1RXJrSmdnZz09Iiwic3VwcG9ydGVkRXh0ZW5zaW9ucyI6W3siaWQiOiJobWFjLXNlY3JldCIsImZhaWxfaWZfdW5rbm93biI6ZmFsc2V9XSwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiRklET18yXzAiXSwiYWFndWlkIjoiY2RiZGFlYTItYzQxNS01MDczLTUwZjctYzA0ZTk2ODY0MGI2In19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDE5LTA5LTAzIiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJFeGNlbHNlY3UgZVNlY3UgRklETzIgU2VjdXJpdHkgS2V5IiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAxOTAzMjcwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMy42IiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjEuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAxOS0wOS0wMyJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMTktMDktMDMifSx7ImFhZ3VpZCI6IjNhYTc4ZWIxLWRkZDgtNDZhOC1hODIxLThmOGVjNTdhN2JkNSIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiM2FhNzhlYjEtZGRkOC00NmE4LWE4MjEtOGY4ZWM1N2E3YmQ1IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ill1YmlLZXkgNSBDQ04gU2VyaWVzIHdpdGggTkZDIn0sImRlc2NyaXB0aW9uIjoiWXViaUtleSA1IENDTiBTZXJpZXMgd2l0aCBORkMiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2LCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH0seyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbImVkMjU1MTlfZWRkc2Ffc2hhNTEyX3JhdyIsInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Iiwic2VjcDM4NHIxX2VjZHNhX3NoYTM4NF9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6NjQsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURTakNDQWpLZ0F3SUJBZ0lVVG5iYkdJUjJOSHZ6cUlLRkFlUXdHMVhCaXMwd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JCSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVFZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU9zWGozazA0QmFuNFRZZHRaS3FEL09QSnh5RHlhUG1DQlVGVWlhWklnVHRlWm5qM1gyNURoZ3BaWlhzQzREMHlkSWNybEE2d05VSW5PUkwvTDl6QmJURUlNQVZNR282ZzdVS0FtYjJNRjZBSGJuaFlKZDllaWt1cFZOV1NoSE5ZTmM0R0JkTzFZTjZBZlVxdkpoSGJlM1Y0U05NUG1CUkVLSlBWejdUaHdnbWdnVGU4V3MySzAvd3NxdjJ3U0U3cGJDQnNVWmhJWDUxYlpNM3BxRHdKUFRtUkZFdnQwLzZ0RzVlTzhGM2oxNE9YcWZFaG1qbjFWdnhLRFlRT0xaQXhDd3dnQzBQNENkZld2M3k4UFNSOEkzNTRoTzFZK0d6Tmp2SXFYMzhOS0x5d3VJWUhGZXJPeE5seEVNQnZGaFlCdVJ1WUFra2dVYVBxTjZVQmhzSUxyc0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ0NvUkhoaXlObmJuWFJXSUw2WkJYb0JYOVlUTUI4R0ExVWRJd1FZTUJhQUZDQW9VQ0VicEZwYjZGUExuWjNGNVB4c0wzb2ZNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUNRRmFmSkkxLzVXZzlDRUVpbUUxUlA1NFJnUXdUTlRPT1FzTEFDVGUrckl0bEZRekM5WkRoclY4Mjh5WDdqenkrQUFzcDNpeks3VDF0aDJkbDdtK3R1MHN3MlBhL29sYzAybnQ2UHlJdzM0OGdhSHpoSTErMEtFNDVxeHZGRGVMMmxNeGJQZkNZdnlFRWFZemppUUVMVTU5NTFwWEdXeUtNYS80Zkx0TytaS09YaE11VmVxNHJYRFBJNTRXNkpIT2lBYWlLZGl3KzVlM2Mya3QvakZJUXRNNnZNWGc5TE5GemRqRVROdDIwVlg5UWV2UnBGWmZ1Y01HOXdDYVFEb0ZsUHpwVE1KS2hQZXYvaW1KbVpZaEtmcjBsTGNlbXRxakl4TEFvcVpkT1lmSEJnNit2QWNkUEkvaWF1R3BVQXY3WCtVS05tRHdqWjJCYUg0c0x3aEIybSIsIk1JSURTRENDQWpDZ0F3SUJBZ0lVRHFFUncrNFJuR1NnZ3hnVWV3SkZFUERSWjNZd0RRWUpLb1pJaHZjTkFRRUxCUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURJN1huSCtadkR3TUNRVThNOFplVjVxc2N1Ymx2VllhYVJ0M1liYXhuOWdvZEx4NXN3SDBsWHJkZ2poNWg3RnBWZ0NnWVlYN0U0YmwxdmJ6VUxlbXJNV1Q4TjNXTUdVZThRQUpiQmVpb1Y3Vy9FK2hUWlAvMFNLSlZhM2V3S0JvNlVMZU1uZlFaRHJWT1JBazh3VExxMnY1TGxqNXZNajdKdE9vdEthOUo3bkhTOGtMbXpYWFNhajBTd0VQaDVPQVpVVE5WNHpzMWJ2b1RBUVFXckw0L0o5UXVLdDZXQ0ZFNW5VTmlSUWNFYlZGOG1scUsyYngyejZva1ZsdHlEVkxDeFlicFVURUx2WTF1c1IzRFRHUFVvSUNsT200Y3Jwd25EUkxWSHZqWWVQR0JCLy9wRXl6eEEvZ2NTY3hqd2FIMVpVdzliblNiSHl1cktxYlRhMUt2akFnTUJBQUdqWmpCa01CMEdBMVVkRGdRV0JCVHF0MEtRbmd4N1pIcmJWSHdEdW54T245aWhZVEFmQmdOVkhTTUVHREFXZ0JUUzd1OWFJbzA2YlZ3amx6M3loZFVtOFNWN2tqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQTRHQTFVZER3RUIvd1FFQXdJQmhqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFxUWFDV014VEdxVlZYN1NrN2trSm1VdWVUU1lLdVU2K0tCQlNnd0lSbmx3OUs3SGUxSXB4WjBoZHdwUE5pa0tqbWN5RmdGUHpoSW13SEpneHh1VDkwUHczdllPZGNKSk5rdERnMzVQWE9melNuMTVjRkF4MVJPMG1QVG1JYjhkWGlFV09wem9YdmR3WERNNDFaYUNEWU1UN3c0SVF0TXl2RTd4VUJacTJianRBbnEvTkRVQTdiZTRIOEgzaXBDKy8rTktsVXJjVWgrajQ4SzY3V0kwdTFtNkZlUXVlQkE3bjA2ajgyNXJxRHFzYUxzOVRiN0tBSEF3OFBtcldhTlBHMmtqS2VyeFBFZmVjaXZsRmF3cDJSV1p2eHJWdG4zVFYyU0J4eUNKQ2tYc05EMDVkQ0VyVkhTSklzK0JkdFRWTlk5QXd0eVBtbnliMHY0bVNUenZXZHc9PSIsIk1JSURTakNDQWpLZ0F3SUJBZ0lVUjM4bXEyNlNmMnN6VlYyQmRHNldFTjdrdVdVd0RRWUpLb1pJaHZjTkFRRUxCUUF3TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd0lCY05NalF4TWpBeE1EQXdNREF3V2hnUE9UazVPVEV5TXpFeU16VTVOVGxhTUNZeEpEQWlCZ05WQkFNTUcxbDFZbWxqYnlCR1NVUlBJRUYwZEdWemRHRjBhVzl1SUVJZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU5ZMFdiOW9Qb1JvS29ReVdQYUpwejExdnJXVGc2elR0bU5qMlZvS1JueXZLR1JxcHpiODN3NWw2WUE5NlVZa1lCRFFQMGlsTzJEUGU2d1dxVlI1ekRmUnpkY0g4YmgrTDdkR0d2YWU2aFJUWmhrRmtDcFhEczRIY2NrbnJEZjhGQ2xKN0hlMzlKZjQyL0cxUW0yeno5V1dtclBYdGdpSy94MDVHanNRZkd1REcxemY1UVRVVWllOGx3eW1LM1RmZE92TmVlSkFBUGUycG43SXRmUmIrclZyTldpRHpsUm4ydk5uWjJ3UG80d0gvV0o2ZGhYWkcrck1XVCthNkJvY2cxVWZJdzZrZHVuRzRiVHBaenN2YWNGWXlSMG1wZitEZU9ucFNXQW15d0pXSHZUbGYyWVh4RnllWGNUQUNkUWxjTU5HSjJWaFpRNDh4dFA1L1JCUC84a0NBd0VBQWFObU1HUXdIUVlEVlIwT0JCWUVGQ2h5NDJva2lxY1RTMWlxYS9IUldqa0JuNEgvTUI4R0ExVWRJd1FZTUJhQUZPcTNRcENlREh0a2V0dFVmQU82ZkU2ZjJLRmhNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUFuK1JISVBidE1FRE5kVDFnOEgvUml0QWtVZExnQXQxdFdHV25sajlrbmJ2NC80R2xYN0M5cDQ1ZWZQTzkvYVpMNk9WMVhSS0JpNkttdEJXNUs3bnVZRW5NeC81QnFCU2JMVDdyaGR1QzQ5VEJlTWI5UEhkWHNUbFNWTlllZnIxZEdpZHI0ajB4VkJRTGIxcmtuREFiZFdEektmdm5heUtPOEZyd2U3SHg4NDNNRy9ySitjMFhydVV2YmZWVENITGlJV2hNN29ORGhMOHhvYjZ4VW85S0xLY1NMK0l0WXNPMy85V2I4UTlHanNxTDRGWHNEY0cxU2FZaDdLcGZ1TW1PaXhxekpaTzJuSWljUFlSZzFJMlN1aVVmWU83MHRtZEhjYmwra1NRbVNZdDdycTR2aUlMZzJHeDNqOXJJVHVXVGpiYVVhU1NReGdPbU1TSHV5ek1BQyIsIk1JSURSekNDQWpHZ0F3SUJBZ0lVZXg5blQ5dndaTlhTNDgzTGRpWUdmdzJTalNvd0N3WUpLb1pJaHZjTkFRRUxNQzR4TERBcUJnTlZCQU1NSTFsMVltbGpieUJCZEhSbGMzUmhkR2x2YmlCSmJuUmxjbTFsWkdsaGRHVWdRaUF4TUNBWERUSTFNRGd3TVRBd01EQXdNRm9ZRHprNU9Ua3hNak14TWpNMU9UVTVXakFuTVNVd0l3WURWUVFEREJ4WmRXSnBZMjhnUmtsRVR5QkJkSFJsYzNSaGRHbHZiaUJDTWlBeE1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBdTFNZXZueTlkeU85WlVDMzlTb01oTGNSL0RYcnRGL2NpTTEydGNpeTJFWEFaNk1rcml2VnRDZkVWTTlYNklTVEVuQlA2dVNZWW92NnBwdjZPNkpoMk5IbVltNHcrSm5TNFZuQ1BVN21IQU1mVkkyTUdUVE1WT2V3MHhVc0c3c0lTSWtJRFVCbXVrOFlLOWM1emljOSt2RlFHTElrc2RYTzVpVkZJZ05HNTNjR1hENFpMWm9BUGl1MFBFb3p4QXFZSWFJNGd4S2hPQTNTOC9XOG1JV3N1Nm9meWo0R3ZrRkc2WjdreUYzMTA3UDdtd0ZITHJJM0VOYVBXTU9GY1RhR2EwZHcrL3ZWUndqUmNFWkJWc3V1VC84N2NrU3MwYTVwa3QzdlpCbGFZZVQ4cHpTcmVWN21vd2NJTTkwTDJpYUFUbFAwbnhtYUU2bk95VGJvakZWbDJ3SURBUUFCbzJZd1pEQWRCZ05WSFE0RUZnUVVTWEVoM3NhM2J0RHVybTRNTS9DN1MxbFJ1dVl3SHdZRFZSMGpCQmd3Rm9BVTZyZENrSjRNZTJSNjIxUjhBN3A4VHAvWW9XRXdFZ1lEVlIwVEFRSC9CQWd3QmdFQi93SUJBREFPQmdOVkhROEJBZjhFQkFNQ0FZWXdDd1lKS29aSWh2Y05BUUVMQTRJQkFRQjVHYzNoYWZ0cDdoS3NFWnNvK2kvWjVuUnVxZG16RzJXQ2xVb1JVcWJhUHlnbG5KRGpLUi9rZmdPbDZpYmJGL3p0aG0zS21YUTdIY0RJUDJ4TWRHN1UyTDJpbWJKUUhxUGYvaDJIcW9qYjRyWmd1ZSs2VzRrdFNSNWVsUjlMMXJZcUUvU0dZTTRpRUtvVlFTdjdSVDFyeEllV2lLc3cvVnh4aS9RT25zeDNGN3g4MENDWWdCNEUzeVF4OFZUVzQ0MGhURXdUQTFlTUhPaXgzMnRQdHl5SElhOFBWVklmVnBIUUpCYU1WdnY1MDhVRWp3a2JVMnJuamZ6b1NUTlM5QTVqVVE4bUJTdmU5NXJqQjBkbzk4RVUrRHhkQnFYMitINmk1d2xJQ0ZnemhkemNzbmU5aEdLVDZselRYNGNJZEpzclkyK3hsZUswRkZReTZsR0VWTEVlIiwiTUlJRFNEQ0NBakNnQXdJQkFnSVVVY21NWHpSSUZPZ0dUSzBUYjNnRXVaWVprQkl3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRRG01NTViV1k5V1crdE9ZMHJJV0hsZGgrYU5hbm9DWkNGaDdHazNZWnJRbVBVdzBoa1NHNnFZSFF0UCtmWnlTMzNWRXJ2ZytCUXFubXVtZ05oZnhGcmt3RVpFTGVpZEJjQzhDNEFnNG5xcWlQV3B6c3ZJMTdOY3hZbEluTE5MRmNaWS8rZ09pTjZaT1RpaE81L3ZCWk1iajlyaWFBY3FsaVltTkdKUGdUY01HYUVBeU16RU1OeTJubTZFcCtwalA1YUY2Z2kyMXQvVVFGc3VKMWoyUmoveW5NL1NkUnQrZWNhbDVPWW90eEhrRmJMOXZ2djJBMk92NUlUWkNsdzRiT1M5bnB5cFFpbU9aNVFBWXl0bVlhUXBXbC9wTVl6NnpTajhScWtWRE5FSkdxTmZUS0EyaXZMWXdYNmxTdHRNUGFwZzBKODRsOVgwdm9WTi9GcFM0VkNWQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJRZ0tGQWhHNlJhVytoVHk1MmR4ZVQ4YkM5Nkh6QWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQVlNemdMckpMSXIwT292UW5BWnJSSUd1YWJpSFNVS1NtYkxSV3BSa1dlQXRzQ2hERUhwWGNKL2JnRE5LWVdvSHFROHhSVWpCNEN5ZXBZZXZjM1lsckc4bzd6SHhwZlZjYW9MNVNldUprekh4S240YlRhU3A5K012d2FtbnA2NGtaTWlOYkZMa25mUDlrWUtvUkhrTVdoZVJKMVVzUDF6NFNjbWtDZUlMZnNNczZ2cW92cWpXQ2xGc0pwQmNzbHVZSFdGN2JCSjFuNFJ3ZytBVEVvcFk0SWdHdjZadndjK0E5citBVDJocXBvU2tZb0FsK0FOWXdnc2xPZjlzSmUwVitUQTlZWS9VbGFCbVBQVGQwLy9yOXd2Y2VQV1prUGpLb0FDL3pVTmhmRGJoNExWOEdIczNseVgyWG9tTC9MTmM4Sll6eUlhREVoR1F2ZW9QaGgvdHIxZz09IiwiTUlJRFBqQ0NBaWFnQXdJQkFnSVVYemVpRURKRU9UdDE0RjVuMG82WmYvYkJ3aVV3RFFZSktvWklodmNOQVFFTkJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNWjYvVHhNOHJJVCtFYW9Qdkc4MW9udE1Pby8ybVEyUkJ3SkhTMFFaY3hWYU5YdmwxMkxVaEJaNUxtaUJTY0laZDFSbngxb2Q1ODVoKy9kaEs3aEVtN0pBQUxrS0t0czFmTzUzS0dOTFp1ano1aDN3R25jcjRoeUtGMEc3NGIvVTNLOWhFNW1HTkQ2enFZY2hDUkFIZnJZTVlSREY0WUwwWDRENW5HZHh2cHBBeTZua0VtdFdtTW53TzNpMFRBdWNzcmJFNDg1SHZHTTRyMFZwZ1ZkSnB2Z1FqaVRKQ1RJcStEMzVod3RUOFFESXYrbkd2cGN5aTV3Y0lmQ2t6eUNpbUp1a2hZeTZLb3FOTUtRRWRwTmlTT3ZXeURNVE10MWJ3Q3ZFenB3OTF1K21zVXQ0cmowZWZuTzlzMFpPd2R3TVJEbkg0eGdVbDVaTHdyclBrZkMxLzBDQXdFQUFhTm1NR1F3SFFZRFZSME9CQllFRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01COEdBMVVkSXdRWU1CYUFGTkx1NzFvaWpUcHRYQ09YUGZLRjFTYnhKWHVTTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFNd0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUdTSWIzRFFFQkRRVUFBNElCQVFDM0lXL3NnQjlwWjhhcEpOanh1R29YK0ZrSUxrczB3TU5yZFhML2NvVXZzcmh6c3ZsNm1lUE1yYkdKQnlKMVhucXVCNXNnY1JFTkZ4ZFFGbWEzbWlvOFVwZjFvd00xWnJlWHJKMG1BREcyQnBscWJKbnhpeVlhK1IxMXJlSUZUV2VJaE1OY1pLc0RackZBeVB1RmpDV1NRdkptTldlOW1GUllGZ05oWEpLa1hJYjVIMVhnRURsd2llZFlSTTdWb2xCTmxsZDZwUkZLbFg4dXN0Nk9UTU9lQURsMnhORjBtMUxUaFNkZXVYdkR5QzFnOStJTGZ6M1M2T0lZZ2MzaXJvUmNGRDM1NGc3cktmdTY3cUZBdzlnQzR5aTB4QlRQclk5NXJoNC9IcWFVWUNBL0w4bGRSazZIN1hrMzVEK1dWcG1xMlNoL3hUNUhpRnVoZjR3SmIwYksiXSwiaWNvbiI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsImljb25EYXJrIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwicHJvdmlkZXJMb2dvTGlnaHQiOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJwcm92aWRlckxvZ29EYXJrIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMV9QUkUiLCJGSURPXzJfMSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJsYXJnZUJsb2JLZXkiLCJjcmVkQmxvYiIsIm1pblBpbkxlbmd0aCJdLCJhYWd1aWQiOiIzYWE3OGViMWRkZDg0NmE4YTgyMThmOGVjNTdhN2JkNSIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOmZhbHNlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImxhcmdlQmxvYnMiOnRydWUsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjp0cnVlLCJhbHdheXNVdiI6ZmFsc2V9LCJtYXhNc2dTaXplIjoxNTM2LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjgsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MTI4LCJ0cmFuc3BvcnRzIjpbIm5mYyIsInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi04fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotMzV9XSwibWF4U2VyaWFsaXplZExhcmdlQmxvYkFycmF5Ijo0MDk2LCJtaW5QSU5MZW5ndGgiOjQsImZpcm13YXJlVmVyc2lvbiI6MzI5NDc2LCJtYXhDcmVkQmxvYkxlbmd0aCI6MzIsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjoxLCJyZW1haW5pbmdEaXNjb3ZlcmFibGVDcmVkZW50aWFscyI6MTAwfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wyIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMTAtMTYiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2LCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ill1YmlLZXkgNSBDQ04gU2VyaWVzIHdpdGggTkZDIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNTEwMTYwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0xMC0xNiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzZ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMTAtMjQifSx7ImFhZ3VpZCI6ImJjMmZlNDk5LTBkOGUtNGZmZS05NmYzLTk0YTgyODQwY2Y4YyIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiYmMyZmU0OTktMGQ4ZS00ZmZlLTk2ZjMtOTRhODI4NDBjZjhjIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ik9DVEFUQ08gRXpRdWFudCBGSURPMiBBVVRIRU5USUNBVE9SIn0sImRlc2NyaXB0aW9uIjoiT0NUQVRDTyBFelF1YW50IEZJRE8yIEFVVEhFTlRJQ0FUT1IiLCJhbHRlcm5hdGl2ZURlc2NyaXB0aW9ucyI6eyJrby1LUiI6IuyYpe2DgOy9lCDsnbTsp4DtgIDtirggRklETzIg7J247Kad6riwIFYgMS4wIiwiZW4tVVMiOiJPQ1RBVENPIEV6UXVhbnQgRklETzIgQVVUSEVOVElDQVRPUiBWIDEuMCJ9LCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6NSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCIsImJhc2ljX3N1cnJvZ2F0ZSJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJRHREQ0NBcHlnQXdJQkFnSUJBVEFOQmdrcWhraUc5dzBCQVFzRkFEQnlNUXN3Q1FZRFZRUUdFd0pMVWpFWk1CY0dBMVVFQ2d3UVQwTlVRVlJEVHlCRFR5NHNJRXhVUkRFaU1DQUdBMVVFQ3d3WlFYVjBhR1Z1ZEdsallYUnZjaUJCZEhSbGMzUmhkR2x2YmpFa01DSUdBMVVFQXd3YlQwTlVRVlJEVHlCU2IyOTBJRU5CSUVObGNuUnBabWxqWVhSbE1CNFhEVEl3TURJeE1UQTBNall3TTFvWERUSTJNREl3T1RBME1qWXdNMW93Y2pFTE1Ba0dBMVVFQmhNQ1MxSXhHVEFYQmdOVkJBb01FRTlEVkVGVVEwOGdRMDh1TENCTVZFUXhJakFnQmdOVkJBc01HVUYxZEdobGJuUnBZMkYwYjNJZ1FYUjBaWE4wWVhScGIyNHhKREFpQmdOVkJBTU1HMDlEVkVGVVEwOGdVbTl2ZENCRFFTQkRaWEowYVdacFkyRjBaVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFMWllhKzlZWkxKbjRGV2NrRG5ZL0VSb0N1TzNUQnRhMFczZjhSOVNZNWQ1c0JrMlFpdXBjaUkvbDdmd1BySDNGRGtlVlBYZWpNZStrVDBWb0pKZStOOUVNV2VyMC81UFhJUDk3bnJ1WWNyMER4YmhacGVzUUVlVThCZUlVdW5wTk5uRUpwb3hvSlR3b0RtdTgzWktrNG04ZzAvUGZwSndEaG1QQ0FxbTc5c0Z0UDhnN2xDOXFtczVURC82UE56KzJhZXdLWFRRQVIxb3BmaG5XRFVzSVp0dVVmRVJobEd3eFU3WCtoM29RMmtTR3c1aG9sZktTYjBnM3B3R1RjVFZOdmZVTVhIN0NhaVRxL0s3VC9qZEFDRCs5YU5qdGNkM1B5UWVyQThTYTJOMjhydmtOOFlmS29EUGc1Z0EzNzhPTkRWM0Jocmh0WThVaURrQmNUc1hBUUVDQXdFQUFhTlZNRk13RWdZRFZSMFRBUUgvQkFnd0JnRUIvd0lCQURBZEJnTlZIUTRFRmdRVU9DbUszMTBHdTNxOURmWC9idmRwc2Y0R0k4VXdDd1lEVlIwUEJBUURBZ0gyTUJFR0NXQ0dTQUdHK0VJQkFRUUVBd0lBQnpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQW5EVGNabmVLL2gwUWI4c0Z4Z0ZTOEZhNWRqUW5TSlFVTUZaL2t6T3NQaDFEVkZERjRuREcvSGxVK2Q3S2FOaGFRN1hMdDd4QWpoekV5VHlIYU1INzZnSDA4cjMzTmRWWi80c01oOUdJTFU2YlNtSllPdGRWaTN6QjNwNjlibllaSEpWcXZKS1g1bEVzU3BuL29wS1lsdnRvMm4wLzRzNGF3SmgrcStCa3lWU1BUUk1YNkxmYm42SVJ1NGNiZVMwVzEzdHNRNVNicEFvOU5IMkZBVHpWTU1LU0dFZGlRbmZZeWdkV3Z1RENMVXRRRjF3R21HU1lzRVBGVFY2UEcxVlA1SFM0ZmhyQk5idXJpMzhOSVVvY2ZrcGZtT0l5K2hIWmdmdnBaem9yazFHdkYzUFpSSXRKblRUdjVVanEwcUQ4cm5yODFxd3ZHbFRDSklCdEVVbU53UT09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUVnQUFBQklDQVlBQUFCVjdiTkhBQUFTVlVsRVFWUjQydTJiQjFoVTU5TEhNV29TcjdsK1Z2YWNzNDFtVGRTclJvTllBQ2tMaW9vRlN4UTdnWWlpaUtKR0RkZ1ZMSFJFbGwyYXFJQmlqZUtOWGZGYVltS05IU203Q3hwajlQdGlqSVc1ODU1ekZwWmxGMWRGWS94NG4yZWVwU3k3NS94Mi9qUHp6cnlZbWRXdTJsVzdhbGZ0cWwyMXEzYTl3MnVEV2xwZmZ0MjdVZXlGK0thclRoNXV0dlRJMWNhaEJ3ci9aMTd1elVaemMwODJXckIvWThPbGViUE0xdCt3TTFQbWYvei9Bd3BBSFRObFVmc0d5VGZUV3NTZisxVzA2aGhZTE5vSDFuTzNnOFdNTEJCT1RnZHFRaEl3bytKQlBEUVN4SVBXQXUwVjg2U0pYK2FsQmt0UHpEWkx2V0grL3NMSmhMcjEwMVJUbXFYZGZDQktPZytTNkpNZ0RUc01sb3R5alFLUzlnOEhpZXRTRU51SGdOQitJVFFabTFwUU4rcm5rV2FoOE1GNzV6bjEwb3ZuQ3JLTG5vc3pyb0g0RlFDSmJlZUNxTk5NYU9HNDdObEhvY2NqelRJdmZmaitBRklXZG0yMnJlU2haSHNSdkM0Z3B0MDBNUC9pMitjZnJqaTc4TDN4cEk4MmFtSWt1WGRCSDVCNDlUSG9GSFVjK3NZZmh3R3hoNkZQV0M2MERzb0N4anVoV2tDTTFXUm8waS82RHpQNXJXN3ZCYUIvWkdtT1d2NzdsM0pBcmRLdlFQREIyM0RzdWhvS1ZDVlFyQzRCbFpwN3ZGMnNnVU9YQ21EZWhqem80cXNFaVd5WlFVQzBaRExVWDNKYThWNEFhcGhWOHIwV1VQdXRCZkR2YXhyUWFFcGVhRC9kS0lhSnNmdEI3TFNvQ2lDRzlvRUcwM2FmWnpQajMzMjU1MnAyaXZmZWhSWmJWS0E4WnhvY3JSSFBHaFY3Q0VROTVsY0I5UEcwN3k3ODdRR1ZsSlNNUEhXcjVIbXJuUnI0WkxNS3poZVV2QlFnWW9ldnFjRnlSRnhsaVZsT2dmb3J6eWIrcmVFVUZSVTF3QnM4U1c0eTdrY04vSE5qTVd5NldPNUJaV2lQMFg1SCt6KzBQOUNlR3dKMEVhRzJuSmFsQThnZkdnOU8rTjBzc2FETHUzTzNYUkxxTTY0S01lV203TnBDcG5RVHlKUmZtcnNvZkFXeXBPbm1zcVFnZ2FzaWtISko4c2V2eHdoY2tnYVl1eVQzbUJwMndQN21iUlc1ZVZDalJmK2dCb2RkaFhEeWxtYUhXbDA2UktWU3RTNHVMbTZHSUp1V2xwWmFxOVYzM0RTYTBqQjgvblZkUUtubjFVQ1BTS2hJODI2cm9hWHl5b0svVEY0QzE5U0dsQ3o1VThwVk1WYmdJbyttbk5ZZHBSeGpORlN2TlErcDdpditwTHN1THFNN2h3RGQ2VnMwOGhqNmpPcXkrQ0hWZGZsZHlqWmNROW10VlZPOW9sVk1uL2pTdG9OU3lucE56SUx4SVh0aGhTTHZUK2ZWeDZNRTBUL2xtcSsvWUdlV21WblgwUHZmdlh2M24ycDFTYUJLVS9ycjdpc2FzRjV5a0kxQmpPMDhhT1cvQ1dKTzNJWWlqV2JXMnl4MTZ6RDlFLzdCZW9aelVnTGxuSENKdGwvN21MRmJDc0t1ODBIWUtSaUVIV2FBc1AwTVlEcDk4NVR1dGxndDZCNjJsZTRaTVo5MmpCNUN1eVI5M3R3cHBSWHhzQlo5bFpTNVU2S2dXWjhVb2ZPVWJlMXpqMTIra2JubkhDeVhILzlkNnBhVVllNlVjSVhxcTN6QStPOTRKRjY0ZjRka3lYN3ZKaXVPU1N4Q0QzN01Wc2ZFbFBtTnpaSUxYVHR0dkg1Q09Ic1hNSU1pb2VYMGJBakl1UWluYjNFU3hkaTI1TTF6Q1EzOWdKRXBPcHZMbERHVTh6bzE0N0FhUDZtRklQNWlMb2k3emdaeGwyQVFkWmtGd200aFpYU1BzSXVVVS93aUFzUE1JYlNlcVcrQmtnbmhiK2lZOXNOb0laUGJDQndUQXN4ZDVVZm9vZWxQUk40YmdmYmJlcm5KL0gweERjSlBwOVpkZDIxZjNYVlg5elJjZkNUWksvTnk3cFpMR3NoWFZZcExaU2pSMFcrTXk2ZGVtUithdXlTNUNsemx1YlJ6N0NPaHczSVE5L29XeE9qR1lydDViTTFCSUFsN0xINkNIbktJY2wzdlRtVDNLdTkxNTg2ZFR4RE9qM2hUbHdHZ3Z2NTFOTWNQU05CbmZZYkFQdTZCZVIvMExqZmxaS1ovUm5OdGZFRVFnL1NETnI1ZU1ZbGJid1FPN1pyY0JRUHFic1kxOXFuSWFRV0lIUmR5bFdwdkJOUnJBUXRKMURNVTZENHgrWlNMM0l2Y0JONVlIYlFQME9yaXhUWEV3Q3BTcTlWdE1MQjJSQUNkOEdmdGk0cnUyT0QzZ3V2WHIzOUVuZ2M2QVJTZlk0T2U5QVBlN0NoakVoYzRKOW9LZWtRY296NWZXVWIxU2JpS1h1MU5QQlZqMFh3OVFJL3gvVWJVT0JpUlRONFV3YXloWlFsUHhESnVqeU54WGd3U1VxWDJRVWdPb1N3a29XUFk4OWFEVW5KM0hiZ28wMmcwNDlGVzQwWHRScnVFOWh1Zm5xdXJXNTZobGFDZFJ0dUVmeCtLWUR3Um5oMStuWW8yVnQrVGRETWxaUisza0c2MzRESFZlVGxZZWlTZjNKOTM5UmVkMTc3M1J1QUluSlcyS0tjZmhlN1JJT203RXFUdXk5azlEZ3ZKWlFsQ1dveVFGb0hRZVEwRWh1OHZ5eTlRM2NPTCtkTUlnSWY0cVY3REM4MUJyMWlKTnp3RnpZdEwwUnBIL0xrVG1nZitiZ3grUHh1L1hvZVBSOG5mOE9uN0lkcCtJaDNpY2Zxd2NuUFBOZlFJeUZrazdZaGViRGtUYk53U0lEcmoxUE9DUXRWbTRyVTFucDBvRjZVWEpaUC9KdmJnZHNkU2p6Q1FzcEJXZ05TdEFwTElaVFY0ei84T0NvdlVCcUVRYnlDQkVlWFM4c3daSXg1UXpjclB2OThZZ1hSSFVQUHd0VTd4bm5nSExROS9Gb0ZBWS9CeEc0bFgrSGhuWHRTaDIzVEwyYzhaZ1I5UXRxdWY0WDNFV3pnb1A2NVJPS1NJbzl6a1Q4U2VrU0R4WEFQU2dhdEFPb0NIMUU4TENRTzBiQ1YwSHBVQmw2OFZWc29VWEhEVlRMNTM3MTZqbXUyZlFSMFN0L0MxNHhITXIvaGVCZmo5M0tLaVg0VDR1M3JrOXc2aEIrc0pIT0ozTW93L01NMG5BZld2cFlBaFltZFQ5L1JHTlFJSEsxby95bDMrV0RRa211MnRTQWF2QmNrZ2hPUzVtb05VN2swcmdKSEZ3dXFVLytqQ0tjUUxua0FLdGpmYmFJUTZwSUxtWWhPNzFWQVJXV296bE1CZGFVdDFXdlluMDNSQ09TUnpWMFZXQzRmWVQxNHY1c2dVemdLM3BFZENMOXpnRFVkQVhwRmNFM3hJUkFVazRrMmtJZFV2SEt3SHBzQVBGL0o1T0tWWnhjWDNSRyszSXdzZjRBZlNud1BFZmtBL2srKzdlMlUyd094MmhzQmhJVFZEU0YzRHk5Q1RJbC81elJqblZBa0N5cWU5RW9ENU1nNkVJMklSVWd5SWgwVlZRRUp2MGtJU2UwUUEyUXJjTGxBOVJlMHZKUzcrRis3OExSSE9PVzAyeE91UmR4aVJzWjJXVE9jQUVUUDNCZHpHUEVWSXcxOHQ3cmdvRkpTbkhHanZCS0JIeFhPUVJuS1FSTU40YitJaEVXOFNlVVNCODlkYnl3cUxTOWI4bFhCMGF5WSs0N0VlSGJqcXdCUGFKcmdDRUJwdE1RTndRM3dMaTllWEd3T1JiWVBBWGZHWThrWkFZeE01U0tQWHNVMXdaaVR4SmkwazNwc0dSNEJvUURSWURVd3Q4Ri8yZmJOM3BYR0FjY2dlNFR3aGdDYUc1Z0p0amJ2NFpoV0FtR1lUVVdwaFFMa21oYjdVdmdvRFdESTFWTUZPQnFqeFBLUXg2eXNnbFV0T0YxSVV5UTYvTTI1SnJkK2RLUkY4UUFMM3Jkc3FzQnVmQ1l3SU01azV4cUhtRTh0QkVka0puT1dGakVOQ2M5TzhwMzlDYzd6Uk8vUzRaS0FuS2NzaFVWcElCaVVYeFVxT2RrL0U3S0FNZWNjNmtVNWI5bDE0d3ZTT0FvYjVDaGpLaDRQVWdvZUVYaVRvR1ZWRzZqeVRYcEMwS2lnUEpUQmZwUUw5RlE5cG9vS0ROQTRoalYxZlNYSUVFaXM1OUNhaFp4enhvanZtN3NuVzd3cWcyTXhUbE4yNHpmZnBkbk9BRVg3RlFhSVJrb0NIMUh3Q1VPMFhrdXRPTXVrRmNYZStnQjZTRE1LdjA0SHhTMFZRS1VEN0pDTWszcHZHNlhnVFFxTDFKRWQ3ck1mQXB6aFlRNFhZNnkydnpMcGszMGpaaHBVeEZsOERJL0ZEbWZucVFab0V0TTBzQkpSMHpxVFhwSkFrTXpJVlJQNFo3SVNTOFVzRHhwZUR4RWxPVVRrdTZVbE9PQ3dHcUw2SkdQaVUyWTBkbEkzL3l0WXUrYkNwWHBIUG1GWUIzQVJEQzBuc3kza1RnWVNTbzZVQnhJTWVtTlFjNysyVGZVNDRPZzNFVXplQ2FBcUJ0QUc5aVVBeUlya3hPcExUUWhvZUMxUy9SSHhUNVVuS1hkSHViYk1oQVJmZk81M3F0Zlk1MHhacm4xWlRnTEh4NXlCWklpUXBEMG5yVGRLcHhJUEtUQWxvZmNhSDdIMHFISjBPMG1tYlFSeXdpWVBrdjhHQTVCUUdKYWViNWVpQkNZRDd1SHVVaXlLWXRFbmVOQml5Q2FWa1NjTXdLMTJqYlplQzhMTkFZTnBPQTZiTlZJU0Vab09nckJHVXBZNDNFVWlXMDRnSC9XRkszUkErSi9JdzNsd2FXQVJtZ1hUNlpwQVFTTVNiQ0NTRGtxc215eUVrNGRBNG9Qc2xrckwrR2xxQTBDbWxHU2xFYTdSSDFUMnpBZTRaaDJEUmQ1eTJqM2dtN0RLUDYzMGpJT0duMDNsSUFSeWtsandrcmVUUW0rZzJ3UVRRVFJNQWxlUXBjODRDNDVrQ2xrSFpZRG1EUU1vRUNldE5GWkpqZU1reFBpK1FuRGJMWVNrZ0hJb2U1WkVBbEZ2U0EzVG5qYVRFcDl5VUZxOEtDNlhid3R4WkljT0VFQzF3WGw5TU82d0YwUmNMMk40M0dldUkvaFhFRHdnNFNFSXlCMnVMa0ZyemtGakorYk9RNkU1c0Z0dHFDcUM3WjNHektlMmZBbGFCVzhCcTVoYUVsSTNlcElYRVNVNmtMemt0SkZaeWlVWWt4NVVDb3FHa0hFQlkvUkxLS0RmNWJ3anJQQ2FHRkx6QXVRUmFjeGVGUFhwRFJ6TGRJQ1p3bFgrR2hhc2QxbGVlYk52RlJSbFB1Y3J6S09kMXY5QjlJcDhKZXk4RFVmY0YzSUNnMjJ3UWY4NE5DRVNkZVVnZGd6aElueEZJMHpsSTVaTHpaNzJKNmhrQlpCWm5DcUJuUmNVYUdCaTRBNlFUTjRGTmNBNEhDYjNKWW9ZeHlhVldTRzZpb3Fya2RDR041S3Z2OGcwdm1tY2tibE9pUU9pQlh0WTNGaGgzZks0YmxnK3lkV1cwTEw2TWRvMER4alVHR0pjb3RsTXBjbG9KSXNjbElPNGRVbmxBMFAwYkh0S2Npa2xLWjk2Yk9nWVpsaHp4cHJaQldFa24zaWNURWxNQVBTWDdsZzI3enVHbm5BcldzM0pZU05henRvS1Z2dVNxeTNJVFhwRGxSbFJVMzFWN1RGejdSTnBQMjdFMDNOWmxlOS8yUEtTZTNKQ0FoY1JPVW5oSVdtK3FSbktVN1hKbzY3VmhwNG1iTzY2UFFyekkxVDhISkpNeXdXYk85Z3BJck9TeVdNbEpkZU9TVm5LKzJpeFhXWEpWTjd3VjFiZDJMeWN4MEdQU2JldEtkTnE2WkVqQVFqSXdTZUhHVGQ4WWxaeW80NHh5eVRFZGdzRVNkdzBiZDUrTE5CWFFmbTE3WU0vaG44RnljQnBZenR3RzFnVFM3RzFnbzRVVWxGME95V0NXMDVZQ2s1UXZMQVhZdUdTa3gxUzFyWXVRWkJXUTJFbUtZOFVrcFJLa0twS2JWUzQ1Tmk1MUNBSzZkd1RNanprQ3hjVnFQMU9ubDkvcU50bFhLUEtBR1pvT1ZuTjJnUFhjSFJ3a1E1SkRTQldTU3kvUGN2clZONEZFdldERHE5dGpxdFRXN2NlMWRRMUxicUVSeWZIRHkyNDZrdU1oMFhZcm9HL0FOaWdvVkQvRCt1OHpVL3NuWGZtZUxndUlUQ1o4RnUwRDBhaU5ZRFYzSjFoL3M2T3k1SUk0eVVrRDlVb0JmejR1K1pHNFZEWExHWldjVG85Sk1yZzZ5UzJ2SWprSks3blFDc24xMUpmY25ITEpDZTBXZyszWVRYRG0vQzI4VDgxWnNvTXd0WDlTRDhFYzB2VWkwa3Z4bnI4SGhLTXl3R29lZ2JTVGc0VGVWQkdYc25YaUVwRmNScVVzUit0WDM2YjJtTmk0dExZcUpHT1MwOFlsQjIxY3FwcmxoRDJYUXFlUkcrRDREemY0Mlh6SjlKY3F3TlRxVXBrMm0ya3R2MEFGQVN2M1k4RzNBU3hubzl3SUtBT1NzeWpQY3J6a2pHNTRrNnBtT2QwTnI2N2todXBJVGh1WFdNbXQxSkhjVWgzSkxVSlFoaVhIMkllRGcwOFduUHpwcHZiZThsOTZGRVVtbEJpTE12V0hmc1dZMlZZcVRvRE5pQXlFa01ONTAxd2prcXV1K2piWVkwbzAybVBTYmV0V0tRVThqSlFDZXBJVDlWNklOVlEwcTRTTFZ3cTA5L1FVbmNIN2xmWTI1RkFCbVdrWkdobm5IcjBDam41YlFEUnVNd1p2bmJpa0s3a2dJNUw3V2pmTEtTdjFtR3BDY2hJRFdVN29GQTV0QmlYRDJyU1RvRkpwZEU5MnBCdWQ3WnNZc0IzNWFXVVZTRVJ5eStSNTBONTdFMGg4czZ0bXVabGJkYXB2QTFuT3ozQ1dvMDFvNjVhWEFwVWtGMVloT1RmT204U3U0V0RSTHdFbWhPN2xnM0dsZXpoVlVGRFE1TFdubGVRd0FiN1lJMk1uTUg2OG1BL0JFWWVnRFdZNWlVOG1XQVVUVDZwR2NsUDFzcHl2WHBaN1lmVWRyVk45VjVXY0JFc0JzVHYrRE1FTW03MEx2anQ4R1ZUcUtzZUZMNVdXbGxyVldDdUJuSjVBZDd4ZjNWRVZvdXVWV0RQMThNa0dNV1k3Qy85c0xDcHpqR2M1UXh0ZXZSNVRsVkpBWjhPckx6bnhnQWpjeDhWQU82OFVtTExpZXpodzRocDcyTlBBdFo0aVE4VWFiMFNSMHhSa2pQdWljOGkzVVhyZllRVWV1T29BZEVkWVZ0NGJRZXF6R1N5blpvRmxZSFViWHNOWmpqYlMreFo2b1ExQ0c3QU9Pb3hNZzFIemRrUFMxck53OVVZUllObzJjdFpJcytXMVpmV0NTU1hGWjdlbnBoemFKdlhUd2Y5Y2d6V3BKMkZzeUY3b05qRVRMRWFrZzJUMEJnendhSlBRaTN3UmtKOTJINWZHVFZJbWthNEFRaHFQM3VTTmt2c1NiWmdjbUNGeXpHUkowSFo0R25nR2JZZVF1S093N2Z1TCtpZEpETmtEY3RJMVAvOHQvTGNoUDRnYmlxQ3V2T3dwZDJMa1prZ1dWT1NjeFNCL0hHYXNQb2hCTkJlR3o5a05nMmJ1aElGQk8vRG1kNEJYOEM0WXMyQVBLNWVRK0tNUXQrazA1Q0FNY2pDaVdHWHl2eUNRRTJxNzNzQmhLZE1PTVpIakpYZ0J0MThGbENFak1ZUEl3NGhFWHNhSWgrZmg5ZlY5clRSZVE3UHZGaGowQXZqNDlMeW1ZTDBHbU4zazJCNDVBUG91VFhlSjlPcVNnd0xrbUFudlZXVnZDY29UbFBzWnRBWGtTSi9adTc1STdYVC8vdjNHcVB2ZTVBUTdYdmdSL3FUcWt4b0NRdjVmNHpaMzhKTTk5Tm51clFUZk55MUR0RzVrMzBNT1ZxRmxjT0EwVi9uRGw0OTA1RWxrOHI5OFovTThQbmNmOFVvRU1vY2NBU1pBeVBscXM5cFZ1MnBYN2FwZHRhdDIxYTdhOVViWGZ3RnZVRUVINFlhcWxBQUFBQUJKUlU1RXJrSmdnZz09IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiRklET18yXzAiXSwiYWFndWlkIjoiYmMyZmU0OTkwZDhlNGZmZTk2ZjM5NGE4Mjg0MGNmOGMiLCJvcHRpb25zIjp7InV2Ijp0cnVlfSwiZmlybXdhcmVWZXJzaW9uIjo1fX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjEtMDYtMDgiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwidXJsIjoid3d3Lm9jdGF0Y28uY29tIiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJFelF1YW50IEZJRE8yIEZpbmdlcnByaW50IiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyMTA2MDgwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMyIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4zIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIxLTA2LTA4IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjF9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjEtMDgtMTAifSx7ImF0dGVzdGF0aW9uQ2VydGlmaWNhdGVLZXlJZGVudGlmaWVycyI6WyJkN2MwYzhkYzM1MzkzMDk2ZTcxN2FhNWI5Y2QzYWNjOGM0YWU4Y2U1Il0sIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbImQ3YzBjOGRjMzUzOTMwOTZlNzE3YWE1YjljZDNhY2M4YzRhZThjZTUiXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6Ill1YmlLZXkgQmlvIFNlcmllcyAtIE11bHRpLXByb3RvY29sIEVkaXRpb24ifSwiZGVzY3JpcHRpb24iOiJZdWJpS2V5IEJpbyBTZXJpZXMgLSBNdWx0aS1wcm90b2NvbCBFZGl0aW9uIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NCwicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoyfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCIsInJlbW90ZV9oYW5kbGUiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlETXpDQ0FodWdBd0lCQWdJVVNPRWpUZi8veXFSZlBXN1FxOHF0SXlDckFnOHdEUVlKS29aSWh2Y05BUUVMQlFBd0x6RXRNQ3NHQTFVRUF3d2tXWFZpYVdOdklFWkpSRThnVW05dmRDQkRRU0JUWlhKcFlXd2dORFV3TWpBek5UVTJNQ0FYRFRJME1EVXdNVEF3TURBd01Gb1lEekl3TmpBd05ETXdNREF3TURBd1dqQXZNUzB3S3dZRFZRUUREQ1JaZFdKcFkyOGdSa2xFVHlCU2IyOTBJRU5CSUZObGNtbGhiQ0EwTlRBeU1ETTFOVFl3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRQ2R2bDI3dzJndTFmUFhlRUZiSWRxeDBCYWx2VkRWV3JRUEo3SHF2aXVFdFpIbHhTTHhTRnRjWHBUb2x2THZvZjhmNHRNZXJRVGtWR3pjbVl6bTFFQlQ0SUp1TW1vRXFma0VFaFdwc0FETUZyalprcWxaWTlFcXhRekxvVkVFb25FNW9HeFNkVkN4Q2NMSWFja3B5Ui9DQ1h2ajFCdC9oVGdFOWhUbEY0cFJxeE1reDNwbEY3eThkRFpsUkhXczd2Ym5obUJDR2VJMFpQRVE2bmwybUNnMnI3NGFkRjJ1Nks5cnJMZmhCQzNRTEU4RVByZ3FVc0kraGt1cTJ0SzRNMlNNT3A4dVVWVmtxVWV1M2gwa3IzV1ZJMFcwMnBrZ3JPZ2lGS0xGTmtTcmJZaGRqTUJEajVpem1xZmM5eEpSS29EWDYxMnFkOFpHVkhwVDVBWUZYKzFoQWdNQkFBR2pSVEJETUIwR0ExVWREZ1FXQkJUWnlVNURpUS9hMlVFZ0U3cUJLMHpoSXNSTlJqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUFNQTRHQTFVZER3RUIvd1FFQXdJQkJqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFYdm5CNFNMdVVKZllNU1ZHQWhzc0wvU21XbGkzRlNjY2d4eWR2S2xBQ2NpZElJV0tRcWEzcS9RU1VFUXpDOURnRWZNZ3I3aUMxQmtUWmJJTGJvVjZVWjVrbk5zdmpFWld1TWVvZ0o4dGdaczFoVnZLd1ppendKK21FY21zamhJckJZdW9MMVQ2eXJPSnZLRmcxanYrQ3k0WndBOUJway9WM1VPaXIxVnlLOGRDdHlIdTZ2Zm9zb3RBZFl4OEZBdVIyNDNnUlRNVjZKeDhKZGlnMkpESUFRTWx6VmVEcFNVSFgvSzJIWFJIeEh3ZmdqYmdVampCdS83MnI4T2ZlaHloekhYSTNLOENGRmRmbE8rOG5FT0pLM3k4RjFpdmdTNXVOLzhTbWNZdy9TVFFZd2hyeFB1d3ozblA4YmFNdW00QkIybm5ZbXBCNjBzWDNibDVrOFFVU3c9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFmQ0FZQUFBQ0dWcytNQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQUhZWUFBQjJHQVYyaUU0RUFBQWJOU1VSQlZGaEhwVmQ3VE5WMUZELzNkNTl3ZVFTSWdTOUFRQVhjRkxBUVppOWZwZVZ6MXRZL1dUWnI1V3hwYzdXNWtuTGE1akkzWjg1c3JTMm5NMnNqdFd3WlM3SVVINEg0eENuRVF4NERBWkY3NFY3dXM4ODV2OS9sSW5CdlZKL0I0UHY5bnUvNW51LzVudk01NTZmekEvUXYwSGIvSXJYM1ZGS1BvNDVjbm00aW5VSVdZd0xGUm1aUVV1d2pGRy9OMWlSSGgxRVowTlJWUnVkcXQxQmQrMm5TS3lTL09oeXMwK2xrM2UvM2tROXF2RDRaVXRhNFZWU1V1WTBlaXB5aVRoQWZvY29PUlZnRHV1dzNxS1JpQWQzcmJjRXRqVGpZSW9mNldhSHNDbXpWUFdDTXgrY2doOHRMcVdNS2FNV3NVakxxbzJSdEpJUTBvT3ptZXJwUXU0ZXNaZ3NPTmtHeEg3ZDBrZHZUVDE3czRPTVU3Vkk4WmhqZ0dhTStBcTlpRU51OFBpZjF1ZHowN013dktXZjhHbFZvQ0VZMDRQQzVXZFRhWFlGYlI4dk52TDUrM0tnZmI1eE5NeWE5UmFtSml5bmFNbEdUVnRGbHI2YmE5dStwcW5FWDR1TXVSUmdqU1lFaHJON3V0RkZlNmxxYWw3TmZrdzVpbUFHSHluUHBiazhWbVkweHN0bnB0bEZDVkNZdHpUdUJOODNRcE1MalR0ZXZkUHpTVW5KN2U4bWtqeFozOWZYYktEZmxkWnFidlUrVFVnR25CVkY2ZlEyaVBIZzRXMTZVV1V3dnpiazE2c01aRStQbjBwdno3SlNldUF5ZXM4bGNwQ21hS3VvL3ArcVdyMlVjd0lBSFdydlAwWUV6aFhBdExBYnNzSGhwN2lHYW12eWlqUDhyeXFyWFVXWDlYb293eHlBdWZOQnJwNDNQT0JGWFpsa2Y4TURSaXFjcHlvd0F3cHV6MngrZld2ei9EdGRlOXNtc3p5Z3RjUjZDMXdiZHpCbDZPbHE1V05ZWTRvR2F0aEpNcmtURXgwakFSU0hBVnMrNXJZa1FOWGIrUWdmUExzUTZnWHlJbnNyZVFmbXBtN1JWRllmTDg2bjFmaVVPa1l2U2hrVVB4dmJ1a3pveTZLMWloTTFobzNYelc2RXZTZlhBK2RwaVdHYVdkK2RvWHpMem1Hd0tZRkxDQXNSQWxQQkFoTWxDRlhVN3RCVVZQcjhIZ1ZjSkhXcStGMDBwbHIrRE1UZHJQNHp2eFkxMWtOTWh4VCtTZVRHZytkNFY1TFFKaXR5VUdKTkI4VkZac2pnWUJaTS9JSS9YQ1RrajBxeURPcEYyQVZRMTdDSWpVcC9EblQxVWtMNUY1Z2RqK3NTMXdnMWdFM2dpZ202MGZDWHpTblBYYnlBUGJJWHYrSURwRTE2VGhhSElTOXNreWhsbU1FNUYzY2ZxQUtocTJDMEU1UEgxZ1lhWGFMUERrWkcwSERKT25LV0hwNTFJMHo1U091eDhlMVdBdVp6ZEhRclRrcDhUbWpYb0krbGEwd0dac3p1YnFiTzNpZlE2QS9XN3ZWU1lzVjNtUjBKS3drS2M0V0hpQmttUjhJM0NDZ0k4N29PTDRxelQ1UCtSVUpCZWpFT2dBUEs4aFlQemF0TStlSVRwMklPOXlUUW1lcm9tUFJ4eDFxeEFjc2lsZS91YlNlRWJjV1FHWUVDZ2hjTFkySHlLam9nakgyNWhNcGpwVXYxT3VnbGk0ZWgyZVJ3ME8zMmJKamt5dUNnTnpnMHZ6bFlNU2lTczB1b280TUc3aE1PakNFYVgxeUZFMG5TdmpCenVUbkVwSzg2WjhJb3FGQUl1Ync4a2c5QXJFYVJFV1NaSStqSDRYYnA2ZzlFOUVuSlQzb2FSekROK01VSkJRREhuNTZhOG9VbUVCdXNPeEJzL041K3RKRWJQa0FGRGo4VUd2T3MvSVd2Y1NnbEdCaHZTNy9GVFlmcFdHWWREWThmUEF4V1NBMzVzVEM0cDQrTG00QWFxSW9QZVF0ZnVmSzZKaDBaaHhsYnNVWE9TbVhOaWZENVpUQWt5RG9mYmJjY2x4bkE4V05BcXhDYlJOeWtoWHhRcGFEdzY3ZlhVWWJzaUcwS2h0djJvZUl2aDhyaFFNWU9jRUFxWEcvZUkrem5nT2M1eXhyOHE4MklBTTFjL0ZMRk9wbHF1NWVGUVhyTVp6R2NWQ2pZYkxXRzVJNEJUMWV1UnJsYnh0Tk90TWl0RERFaExYSUl5bkFBdnVPRVdFM1gzTmRBZnQ5NFZnYUc0MlhJUXQwWlg2UGVDRS9xUUZlOXJLNkh4N1lVNTBLdkg3Zlc0ZlMrcTdLS0JKeHNnZ0JYNXBTQUdoMWpJclZoNXpRNnczUmZhYWhCWG0vYUNiQ1pUakNVRlVUeVdacVc5cDYyTWpKUFhWcU9yUGdNTzROdjc0R2tmK293ZnROVkJEUW5qRkpxSFN3MTdwWHZoV1c1S1pxZS9RNDlOL1VTVENBVldvUVhGSUhCSFhYZTNGUHJVRHN1R0RtdEYvaEhLVEhwZWt4aGlBT1BJK1NKcTZTNkhGNEk5WVd6a0JKVG80NmlVTXpXcDhQaXIvUmlkdUx4S1lzU2tzVjh2TGxPUXZoR1gyWWxSME9CaEJqQyt1L2dFY3ZZMEFwSzdZazQxTnhqUFNRbldGSFRGNjZVcmpnZXZCOEN1NWErbDJ2WVNSUHR1VkRvNzNoaGRNU0huVVg3dFRqc1ZaR3hBbC9XcHRpT0lFUTFnbkwyOW1YNi90UjF0bWxrWWo4VzRYK0NTaldjVURHWTFOcFMvQzdoU0txaU1MTS9sMlFtU1daNzNEZHorZ2lvOEJDRU5ZUFE0NnFua3p3WFVicXZCa3hqVVFzV2ZaRmdidW8zckFmK3dON2pPTzkwK3lueDRQaTNMKzBuWUwxU2NoRFVnQVA0Z1BWLzdJZDFxKzFIU2htdUdrSXFXUlBneXhNRnFQOEhmalRualh3WTViUWZiSmN0Nk9JektnTUhvdEYvSGUxZWdzYXhIU3FHNndmZG1RNXg4TnlURkZxQmNwMmlTb3dIUjN5azUrMzZoRjd2WEFBQUFBRWxGVGtTdVFtQ0MifSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wMi0wMSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzQsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWXViaUtleSBCaW8gU2VyaWVzIC0gTXVsdGktcHJvdG9jb2wgRWRpdGlvbiIsImNlcnRpZmljYXRlTnVtYmVyIjoiVTJGMTAwMDIwMjUwMjAxMDA4IiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjQtMDgtMTIiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc0LCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ill1YmlLZXkgQmlvIFNlcmllcyAtIE11bHRpLXByb3RvY29sIEVkaXRpb24iLCJjZXJ0aWZpY2F0ZU51bWJlciI6IlUyRjEwMDAyMDI0MDgxMjAwMCIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI0LTA4LTEyIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjMyOTQ3NH1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wMi0wNiJ9LHsiYWFndWlkIjoiZWIzYjEzMWUtNTlkYy01MzZhLWQxNzYtY2I3MzA2ZGExMGY1IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiJlYjNiMTMxZS01OWRjLTUzNmEtZDE3Ni1jYjczMDZkYTEwZjUiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiZWxsaXB0aWNTZWN1cmUgTUlSa2V5IFVTQiBBdXRoZW50aWNhdG9yIn0sImRlc2NyaXB0aW9uIjoiZWxsaXB0aWNTZWN1cmUgTUlSa2V5IFVTQiBBdXRoZW50aWNhdG9yIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjIsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfaW50ZXJuYWwiLCJjYURlc2MiOnsiYmFzZSI6MTAsIm1pbkxlbmd0aCI6NCwibWF4UmV0cmllcyI6OCwiYmxvY2tTbG93ZG93biI6MH19XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDWVRDQ0FlZWdBd0lCQWdJQkFUQUtCZ2dxaGtqT1BRUURBakJwTVNRd0lnWURWUVFEREJ0bGJHeHBjSFJwWTFObFkzVnlaU0JHU1VSUElGSnZiM1FnUTBFeEd6QVpCZ05WQkFzTUVtVnNiR2x3ZEdsamMyVmpkWEpsTG1OdmJURVhNQlVHQTFVRUNnd09aV3hzYVhCMGFXTlRaV04xY21VeEN6QUpCZ05WQkFZVEFsVlRNQjRYRFRFNU1EUXdOakV6TXpFeU5Gb1hEVE0wTURRd05qRXpNekV5TkZvd2FURWtNQ0lHQTFVRUF3d2JaV3hzYVhCMGFXTlRaV04xY21VZ1JrbEVUeUJTYjI5MElFTkJNUnN3R1FZRFZRUUxEQkpsYkd4cGNIUnBZM05sWTNWeVpTNWpiMjB4RnpBVkJnTlZCQW9NRG1Wc2JHbHdkR2xqVTJWamRYSmxNUXN3Q1FZRFZRUUdFd0pWVXpCMk1CQUdCeXFHU000OUFnRUdCU3VCQkFBaUEySUFCSWNpb0xsZExueHZTcC8vR2FKMHNxN2hNOTJQUTR6VzdDUGxabFVtMnN5aXBwd2IvV1hQd1BST1RkbVFmMkdEYmc1VUFBMklZcE5acHBVZXExdmduV3ZMbXVKNyt1K0tXQksyM2R6MVM2U1lPUHRrNXZIZkdvbXBDN0lLaThNdWpLTmpNR0V3RGdZRFZSMFBBUUgvQkFRREFnR0dNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdIUVlEVlIwT0JCWUVGQ0ZSNnQ5K2kvZjZEOW1lb2dPTFlwVWxicWF6TUI4R0ExVWRJd1FZTUJhQUZDRlI2dDkraS9mNkQ5bWVvZ09MWXBVbGJxYXpNQW9HQ0NxR1NNNDlCQU1DQTJnQU1HVUNNUUQyS1pkenM2Nmgxa0NFR3FtRlZyMFVlM2phTi9Cd2ZmWXVYNEttK1lURGlVN2pLRVpkeHpqQXJ3RlNtdGlBSXpBQ01FTmVMS0RhQWJPRkl2aXFZNUt0MmNYUWtXelRncjEzNFZsQThoVUJQR0U2S0hnNmdpSmFIZ1BaTFNZNkFGV0gyQT09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQU1nQUFBQlhDQVlBQUFCQmFBb0lBQUFBQkhOQ1NWUUlDQWdJZkFoa2lBQUFBQWx3U0ZsekFBQURmQUFBQTN3QkpxRkpJQUFBQUJsMFJWaDBVMjltZEhkaGNtVUFkM2QzTG1sdWEzTmpZWEJsTG05eVo1dnVQQm9BQUJlblNVUkJWSGljN1oxNVhGemwxY2QvNTdrWG1HeG1jWWxwR28yYWhDaEwzSDE5UDFiamtscDNyVTVnZ0ZCcXJiUkdJVWx0Z01UVzBWcUJ4Q2FRdUZlckRjc01qTXRyWFJxMWphaHYxVlo1TlVCaWtzWllheFdqTWJzQmhyblBlZitBR2U2OU04TU1oR0VBNy9mem1jOG45enpiSVRQblB0dDV6a01ZSXRqdGVjY3FTbWNLQzU1Rm9Oa0FaZ000Q293SkFNYUNNQmFNMFhGV2M2aHlFSXhYTkUxWjdQR3MrM2U4bFJsSlVMd2F6czNOUGJLelU4NlY0SXNJdUFoZEJtRnhlT3pXZkVxNng3UHVzM2dyTWxKUUI3T3h2THc4VzBlSDcyb0c1M283dFVzQnFIR3owSkhKSkVYVlZnTElpcmNpSTRWQk1aQ01qSXlUaUJKKzBkYlI2U0Jnd21DMCtTM200bmdyTUpLSXFZSFlzN05QVVNSS0FHUUNIRzF2c1F1Z0xXQnNaZUtQaWZrQUJMNWhZRDgwMnNjS3kxanFQTndRRU9lQytXNmRhRnpjbEJtQnhNUkFjbkp5cG1nYVZySmtCd0FSSWZzV0JqWUkwQWFmcitNTmo4ZnpWU3gwR3Fsa1p1YU1qdDlNY3VRem9BWml0OXNWVlUyOHhhZnhid0NNRDV1UnNaMEpWVklWVlo2cXFvOEhVZ2NMaTRGa3dBekVucDE5aXNLb1lzYnBZYkpJQWoydENhNnNyNmw1Q3dBUFZOc1dGckZpUUF3a0l5c25seVEvQ0dCTWlHUkpvS2VscER2ZGRWVWZEa1I3RmhhRHhXRVp5RlZYM1R4NnpKaHZIZ0J6WHVnYzlMb20rQlpQVGZYbXcybkh3aUplOU50QXNyS3lKa3IrNWdVQS94MGllVGVJUzl5MU5iK0hOWlN5R01iMHkwQ3lzN08vS3lWZUJuQ0tPWTJCbDZYUHU4QmFqUm9jTkJXYkZjbkYvbWRpOHNWVG41RkdueGNJTXpKeVo1R2l2UXJHY2FZa0g0anVuRDFyUnBuVDZiVDJLaXhHQkgweUVMczlkNnFTb0wwVndqajJFOFIxTGxmVmhnSFV6Y0lpN2tROXhMTGI3ZU1WVlhzeGhISHNaRW1YdSt1cS9tK0FkYk93aUR0UkdZamRiaCtscUVrdkFEekhsUFNKSUo1WFcxZnp6eGpvWm1FUmR5SzVnUUFBRkRXeEV1RHpUT0pkbWtLWDF0YldXc1poTVdLSk9BZHhPSExtTTdqT1ZPb1FFeTZ1cTZsNUoyYWFXVmdNQVhvMWtLeXNySm1TNlQwQVIrakVHa3RjWGxkWDgwcHNWYk93aUQ5aGgxaE9wMU5JcGlvWWpRTWd1c3N5RG90dkMyRU5aTXUyYlRjQk9NY2tidEE2Tys2TnJVb1dGa09Ia0VNc2g4TnhGRU5zQVhDa1RyeEw4eVdrZVR4UGZqRTRxbGxZeEorUVBZZ0VsY0pvSEFDanlESU9pMjhiUVFhU2xaVjFJb0h5REVMR3U3Tm56M3h5Y0ZTeXNCZzZCQm1JbEtJSXhnMUVUUWkrMmZLdnN2ZzJZcGlEMk8yNVV4WFY5eEZBU1RxeHkrMnFzY0xJV0h3ck1mUWdRdFVXbTR5RENiSnNrSFd5c0JneUJJWlNjK2ZPVlFuSTBTY3k2QVczeTlVMCtHcFpXQXdOQWozSTVLbFRmd0Jnc2o2UkdLc0dYU01MaXlGRW9BY1JrbkxaZURyMms5bXpaN3d4K0NwWkRGZEsweW9XRStoeUFHQ2lWMHFhQ2xiR1c2ZkRSUVdBcTIrOGNSeTNkVnhsU0NGVVdTdFhrU2xMcjFoRzNPT09JeG52bDdRc3F1dXRUSy8xcFZVdUpmQWsvek1ESHhVM0wvcDl1UHpscWF0UGxrSXNNQWladnlwcFhyUTZkUDFyN2lESXNaSDBrRVR0eFBpS21MZTFIUnovcHZOZlAyNlBWSVlnVGdiNEVnQWdsditKbEg4NG9BTEE2RVBlODBHdzZSTllVNnJpbzlMd29kNWVyK3pZMHVwa0lNRXZJOEwrc2pNZVdWL2NtTCt2ci9XVnoxbHpOa3N1WitQaTRtWUFZUTBFaEdSaWxKaUUyd0NFTkJCQTNzYWdZeUxwUXQyRENTYUNiZHorZzJXcGxZOG5zbmIza2sxTGRrY3FPNUlRQUVBa0x6S0tlVnRkM2JwdDhWQm9PTEZqYyt0VTZJeWpteVBnYmMvdlQzMHNlVmtJOGZIOXFXdUFHUXRDb1Zjb0xXVnBhOVBpcmN4Z0lnQ0FJUzdVQ3huMFduelVHVjRJaGNMOWVKYzRwejloQzVNV2t2TDBpbVFBVjRWSUduUHY3UHVQRENHUEIxTUF1WDRJNlJOelJGWlcxc1NnbzdURURmRlJaM2docFF4bklKT1R4dTNQN1V0ZHpGU0VNTDV4YW1MblVPaEYvSHhISkdncjRxM0VZS0ZLS1ZKQmJQaGlFb1I0UFY0S1JZUGRiaCtycWttWFN2QjVBblFzTTQ4Q2FDZUViTlE2MWZXRGRnMFppZW5oNHVJUlVGUnZyMzk4dm1lK0ZxbWFlK2FzbWdxSjdIRHBtaFRIQTRoWlVBekJmSlZHaVg4enlNaDdERUEzTU9NT0FPYmVNR2RGeWdQTGwyNWFPT0tkVjFVaUpKdSs0dDNWMWRXdDhWR25kL0x5OGlhMGQzUXVCYUdRbVVjVEFBWjNPOHd3d0FSRjFiUk1SL2F6Z3Jpb3RyWjJSeXoxSWViak9meVp6Qk4zZk5oNlBZRDZTUFVrc0xxWXdZbmgwb1VJTzVRYkdFZ2NLR20rWlk5SnVnZkFiOHZTS3o4Q3cyVktTNVJLNS9jQnJJdXBYa01Bd1lSa2syeExYRFNKUUhaMmRscDdSK2Y3QUVvaVhPYXBBTGhCTWpVNUhEbU9XT3JFRkdFQ1RWakc2TVdFQUpTZDhjaDRacjZwMTNZNDdGQXU1aFEzRmJvQnZHK1dNM0JHSE5RWmRGUm1KT3UvUVFKdmpaczJZY2pJeUprakpiK0p2dDJlTkliQjFSbU9IRnVkcS9xSm1DakdtQjRoN01XY3N0UzE4OUNDOEVlVU85c1dBaFQrTGhVQVFJeDdrQWdRNGUvTU9FMHZFNHlqKzFOWDZhbXJwME5UWmdUcUllWVRrcWMwaEJ1S091RVVvK1pNT2xOcThudEVOSlZCQ1FSOEpjSHZlUk50RGM3Ry9FT2h5cTFNWDN1Q2ova2tmeHRMbXdvMlVHRHh1aGY5VWxiTmdGQ25BNENRcktsRVBGVS9qSmFnai9yMEY4Y1l1OTAraVFRL3g4SEdzUVBNNndEeFBqTjNRcUdUaUpGaENrOGtDUEtoakl6c2xycTZtbmNIVWk4R1V6bXRtUllwSHdrdUJrSWJ5Sm9aYTVJT01kOGF1Ylg0R2dnNHhMRUk2bnNNNFBMMGltVFdxQUhnWXdNMWcyK2Q3NW4vMStBbW1jcFMxLzZZaU85Z3lTY1FkYjJKcVB2SEtnRFl2TzM3UzlNclYzY2syRmFZRFVXQ0p4UDRWUUJnQnNyUzFzNURNLzRTU1VjU3dnWHdtUURBZ3Y1SGdJMC9QTkUxOWh3eUtBbEpkOEM0RjhCZ3ZsZnplVTkydTJ2dmNydXIvMVJYVi9QbnV0cnErOTJ1NnUrQllRZHdzQ2M3SlJIaEFRendsZGNyVXg2Y2pPREpLd0RhWkhoa1hIaHZlb1g1YkQ4QTRKdFIvQ01BVTB6aUVGZEZjRndOaEFsbmh4RDNhYWQ4eGFtVk01bnBOUUFCNHlCd1FWSFRvZ2ZOZVowcEQ0d3RUMXY3REJFL0R1Q0VYcW85Z2hoMzJyd2RiOTR6WjlWVWZVSlJVOEU3QUFVV05vajVaNUYwTEorejVteUF6dXdwSXg4VU1MMlpKZEhCb0pKeHd1RndIQVdXdHhpRXpQZTQzYlhMUFI2UE4xUVp0N3ZtS1RDdUJkRHpoaU9jbFpHUlBXOGdkV05GbXg1Q2ZFaUNsNXFGb21zSjEwQzl2VjRoeHUwbWNTY1RmaEdpM2lQTGs4dmpjamxuV2RxYWZEQk9OY3NWeVc5RlcwZHB5cW9aVXNOck1MNE1pb3VhRjkxdnpsdHZyMWRzd3VjRytGcWRlQytBYW9CK0JhQ0VnRWNKOUdsUE1wK3VTdVg1VmVldUdxV3ZpOEdQQkI0STE1aU55QXhMK2ZPZUo5cmUxckwzcnlvQWcxOE9TVDdRV3lXRGk3Z0NRT0I4Q2dGYlc3LzQvTzVlQ2dBQTNPNmF2Mlk2c3A4QThOTkFXWUVNaEJucTlBY3A1ZkgrYmwvSEo4dWFDMThxUzZ0NFQvOG1BbkJ0Mlp4VktjVWJsd1I2bDQrMmZQNURJcHBwS2wvZGtXQjd3K1lOZG52UzFGSFRFTEozT1h3azVLelN0TXJBaTVFaEU0bnBPRUhpZWdiZkVLSkk2L2lrVVM5SFUzZFpTdVZ4RUhnVmdQN0hXVkxjWEJoeUwyWEgxdFpiQVZ6Ukk2SGZ0MHRsaVhQVFFzT0wyem5YcWRxK25yZ0VRQ202Umx5bmVRK29kd0JZN3MvVElkVmFtL0N0UkZmb0tqVkJLamNDK0Uyb2RrdlRIcHdJZE03M1B6UGtnMDQ0cFFyQVlIVkUxQmJGM3oxSThBV21rZEVmR2hvYW9ocjdDdUpISkZPUGdRQjJoeVBiSEhpNzMyenhOazlQOVBwdGx6SG0wRGdjczNQS3B3QkFMRXFaK0dsZGRvSlVmZ0hneGg0Qm1Yc0tTY1RsenNiOFEyV3BsYnRBT01ydzkzUXQ5Y2JvcGk1NjFMaFFJd0RxWGtJUGxSdFludCtZM3htcDFudFNmemNOaE5jQVRPOHB6TXVMbXhhRlBJVG5QT09SMGZDMkxmTi81d1IyRlRVWDNod3liNFBUQjJCRldWcWxRSmVSQU1TM3JUNTE5Y3JGSHl6ZUN3RE9UUXNQbHFaV1ZoT2hleFJDUDYyMzE5OGJha0dBdVBNbm9NRHFhRnVTbEg4RXVpelBZQkJkbTI1REF3bjZqdjVaSTQ1Nm9qMXIxcXozQVFTK1JBYkdNWERKUUgwNkV0dG5IQmk3RDEyZi9mamltTSt3ODlqUFJnUEEwcGJibmdYUWJGSXBweXlsOGpnQUtFK3Z2QmpCTWNlZUttcGExTFdDU0JTMDBSblBwVjQ5ekhpd3FMa3dpbFZCbXFxUytocUFFM3RFdkx5NGFWSFl1R3Eyem82TDBlTkkyZGtwNUM4anRkSis1Sjc3MERNZkd0ZnVvMHVOK3RJRDZON05aZkMwajdkK2ZvV3BDakNZUUxyUkJxUEc3NVFwWUpqUUFpeG95RnhFVHlERHBhQkNLaUdYOUVMaGREb2xBUkZkdEFlU0w0NXVmUXNBdXBjVHpXL0pCQWdzQWdCbUJNMUpCTWx5M1dPUWdWQ2tQWmZZczVmQXQ1VzBGQzZNTXY4OEFDZjFQTktkdlJrSEFJQjduR1laZU9lT2pVcytpOVNJczhIcEErTjVYVHZuNjlPWGJTcllERWFQbHdCVGtDTnBXZnFhU3dITThqOUx3c1ArZjZzQURxQm5aUUdDT2VKWmdjR0NJWGVSYm9qRlFqc0J3TitqS2J0Z3dZSmpPbjF5TUkzOUM0WDRNZi9EaWJPbjFPM1kwbm9uZFAveEFHNHVUNjk4a1JtWG1NcSt1TFJwY1dERmhVbittMHo3aXhTL2xhd1BHYWl3S2JMZVAzVHBCenNUcFM5b1FoNEUwelQvMTAzQU9XVnBsZEc2MWdkV0U0a1FQQkVuUEFUZ1BBQmc0QWNyMDllZThNdW0yejdXdGZ0enY4c1FnZDR1Ymk1bzlDY0pFQXlUY2dsTWpGS3BtRU1rTnVxZkJZdHJvaTNyOC9GMUJnSGpIVUY4Wml3K1lPMzBCRlhNMEY4Rk1kOHpYNlBnWG1RTU01NkJlY21aWVhpemt0U3YwQVQrK3VuUi91MTlSWURtRmpjWEVrSzd4VXdoaWZYOU1BNzk3MnF5Vnlndk9WTWU2UDNsUzRZNDBJbm8raTFHOHdsTUN4aVlZSzYyWGU1NUN1QXZ1eCtGRHpJd25DcExxVHlPd0lGaEY3TTBMRHVyelBRWmdVLzNDd1Q0SkF3Um1IZzlNZTRNUElQdFdWbFo5OVhXMWpiMlZzNXV0NDluOEhLOWpBaFZrY29OTkJNU2JkVjd2TzIvaG42U2FnNEdEbW9vYmlrd0w1a0d6MEhBQTdiQUVBNDFzWE9oejV0d0FZeXhDU1pBb01vSjU0Vk9SSC9DbElGbkNOd09CSVkwNTlnVTM1K2MwNSs0UE56cFJDTGF6UnhZR0RnQW9NOFh3Ukw0WTdQTXVjbnBMVStyZUlMUk5iUWx4azFyWnF5NXEyQjdRUWVJOGdGV3VwWGUxWDV3L0ZQNnNpb1J0b0o3emlFd3lPeWJGVGZxYW1yZXlYUmtONkxINzBlUlRFL2JjM0l1OFZSWGJ3OVZ4bTYzajFYVUJBK0F3QzQzQVFjU0VwUitINFB0TC9tTitaM2w2UlVydXllS0lTR1dRZU55U2ZKVEVieDVQV1hOakRWSkJkc0xPZ1phVHorM045NitxeXkxc2dBRTgvL1YrVWxwRXdyUkhPNlVZakFFNXZibXZiZU1TcHR3QklPNmZPSVlGeWFOTzFEbm5PdTh2bnNWeWdDejRjZjlqK0xtUXZOUXROOG9QdlVobjZyZGppNWZ2YU8vc2Nscm5Tbk9aMEg4RTUzU2o1bU5WeEREN0hzMWU2Q1VHZ2dJWWltTVB1WEhLeHIvdytISVh0UjFscVdMeXk2N0xDa3pNL3NHUlUxb0JNaXdLY2pNZDY5YnQrN3J3ZEpaejZoRDRuRUE0U2FiN3hhMUxIclZMSlNDUTducmkzWWJ2anVneW9XZ3VLV3dIb3luelhJQ2xhNU1yVWp2UzExT09PV0V4RkUvWXNJTFBmWHcxYmF2Sno3aGhEUG9EVURTc0U5MWZ2bHBhNzlqemhPeW5UTWU2YzE1RlFCdys0ZTNmZ0p3b0g0aThUT2JtSGdEZW5wTHFaQjQxRnhPY0xDQlRNckp5VEc3UDhRTmw2dHFBd0gzbWNRVEdWZ3RtYjdNZEdSdHpYUmt0NHlmTU9sckVEd0F6VExrSkx4eXhCRmpLd2RQWXlQZGIveVE0Wk1Jd2IwSEFQZzI3bThGRU9RcG9NWGE3YjBibVVBL1IvRHdKa2tqVWR2WGs1TDVqZm1kU1dPMCtRQTE2TVE1U2FrVDE1cnp0aDI5NTAwQWZsL0FCUGJKKzBNWmtwN3k5RFgvWmZPMmYxbVdWdmxNV2RyYXkzck5UK0tobmdlK0FBeG40SW53a21IaTNvMFFRcllBTUl3dE82VzhvRGVsQmh1WHE2YUlnVWRDSktuZEJwRUNZRXh3TXIydWRYcXZmL1RSUnlOdWFzV1M5a1RidzdwSm9wOFAyNXIzL1NsVS91NnhmbEN2SXdacEwyVFord1ZmRVdoeGNBcW4ySTdZSDNJbnVqZVd2TDJrcmIwTjF3RDhubDlHaEZ2SzBpcnUwdWR6TmpoOVRQUXJuZWc2VzlyRXAzNTc4dXFnRjNhOXZWNHBUNi84RVRPdlI5ZDNmeDNBOTV4aVB5V3N6OTJKeWNlK3hJUlAvQ3FBb1Bka0NEa01GclcxdFhzQU1xd1drVFNlVVI4Q2NKMnI1bWNFK2ltQUtJWkszQUdnOUl2Vy8xemk4WGppN2x2bWJNdy9wQkZkektCNWdZL1VydTV0MHNzaEp1cHlFUGRDaXBvTGFnQThHNVRBV0ZLYXZ2YWk0Qks5NDl4ZXNGOU45RjBHZ3pjQS9ib3N0ZExnajFiU1ZPQWl4bU02MFhXS0t2NVZsbGI1U2xsYTVhcnkxSW9WcFdtVjFUdTJ0SDdLakNjQitJOEs3Q1BXY25vN3dUbmZNMThqcHNkQ0pIM1UwYlFucEJ1U0NnQU0za0RRK2ZzVER6VURBUUM0WE5XUDVlWGxQZFhlN3IwSmhBeUE1c0FZVmFRRlRDOHFDdTZ2cWFrWlVuR1psamNWdGdCb2lib0E0ZDltVHcvaXdkMEwwWHh5b2FLS0N3Qk0wb2tGc1Z5M0ttVlZlbDlEQU4zZWVQdXU4dFBXem1PZi9GLzR2WFFKSzByVEsvZVdOQlVHZnJnVGtteTM3TzVvOS9hNGlDQVJYUnVQODVnSUlicUkvd2lTMXl4dFh2eGhKQjJFVkI2VHd2ZHI2SDgzaklmRHZheTZ3djV3VUJTVG1mYWNuQ0d6bXFYbnlTZWYzT3QyMTk3bmR0V2VwZm04bzhEYWNacFBPVjd6ZWNlNVhUVnBibmQxOFZBempuNGhnM3NRME9DZUMxbis0ZUpXSWl3SmtUVFZTMHJRaERZYWl0Ni83WFBCTkEvQTU5MGlJc2JEWmFtVkFVZkIvTWI4enBLV3dvV3l5Mm14dDZYNS9TRGNoMFJicW42anRUZVdibHI0QlJQMGpwWnQwcWVFZFoxUkFlRFE2TVEzUnJkMXRFTzNJNmxxdkFEQUhkRTBHaTg4SG84R0lNU20ydkJIZ3RjS2tHR0l3MXF3STJsYm03TEJsbVIwUnlkRmhuZXhrZUw3TEZoLy93dlkyeFkyQmxwUlUrRWZTK2VzYVlJMEJ2WUFkWG5VNnBkclZaLzRiYWVxZGMwVkZRNDdGRjdhVXZEUmlwUUh6dENFTDdEckxRV0NscStYTlJlK0JPQ2wwcFJWTTZBb2M0WEVWQkNQa295dlFHTGptRGE4MmRkbDcrNWdmL3JWT1BleUxiZUcxVFhRVzJVNnN1c0F6TmVsZlRJN2VlYUpWdmhSaTVGRWVYckYxY3owblArWkpaOWRzbWxSV0NmWXdGdUJCY3loUm8vZnZHM2JrRnJOc3JBNGJQVE9pb3gvOUdZY2dNNUFkbjcyMlhvQU93Mkpra0tOUHkwc2hpWDNwUDV1R2dNQmQzZ1NDRHJ1YXlaZ0lBME5EVDRRR1hzUndoVVpHVGx6Z2twWldBeERWRkp1UnBlckNRRHNhVXV3ZVNLVk1VeThWSUZWTUo2aElGTFlGRG5jd21MNDRaenJWQUg2c2YrWm1COExGekpJajhGQXFxdXJXeG40b3lFSDQ0YU1qSnpUWVdFeGpFbmFOZkVxOUp5TFoxSXAvSlVTT29MOFZoVGlGZEJIQkFFVUluN1k2ZXpkSjhiQ1lpaERQVzczSU9EUFN6OG8vR2R2K2YwRS9laHJhMnQzZ09rUHB0clAycnAxKzQzbXZCWVd3NEdWNlN2SGtNQmVBbm02UDFGSHB3L3AySldibTN1a3QxUGJBaGdpYTN5dEtwUTJWQU5iVzFqRUFpV1VjT1BHalcycHFlbDdRWVlMWFVaTHBqTlBQam01YXZQbXpSRmpuRnBZakFUQ3ppdG16NTc1T0lDM2pWSytRRWxJK2xYSUFoWVdJNUJlNDlYYWMzSm1LQm8zd25pT1dpUFFsUzVYOWZyWXFtWmhFWDk2WFpueVZGZHZad3E2dTBKaDRxY2REc2U1TWRUTHdtSklFSElPb21kVGMvUG1sTFQwS1FUb1k4MG1BSFJOV2xycTh5MHRMYnRpcUorRlJWeUphbTlqVkZMQ0lnQnZtc1JITVltWE16SnlaNFVxWTJFeEVvajZ6Z3k3M1Q1ZXFJa05oS0JRK0xzSjhrcVh5L1YyeUlJV0ZzT1lxSGZIUFI3UFB1bFRyZ1FDaDk3OVRBTEV5eGtaMmQ4ZldOVXNMT0pQbjI5ZHlzakluVVZDZXdVSUNpQ2dNWEQzeWNrejc3RU9XUTBlZVhsNUU3eGVieUFhcHBSU3V0M3VvRXMzTGZwSG4vMnI2dXJXYlZNVk9oZWdKbE9TUXNCZFc3Zis4eTlES2E3V1NLZTkzWGUrWkhyUC93RXBmNHRjeWlKYSt1V0FXRjFkM1NwSXpqV0VsZStHZ1F0OUdtL0t5TW9wdEJ3Y0xZWTcvZjRCMTliVzd0RTA3end3UFI0aWVTSXhWMnpadXYzMTdPenN0TVBRejhJaXJoeldHOTdqOGJTNTNkVTNFYkFBcG90NHV1RHpOSWtQTWpPem43Zk9sRmdNUndaa0NPUnkxVlFUNUZuNjBKS0dOZ2hYa3VCM016T3puM1k0SE9kaGdLOWt0ckNJRlFNMlIzQzVYRnRtSjg4Nmg0Q0YzSFZ0YjNCYmhCOHl4SnVaanV6dG1abFpkMlprWkF5WnUwZ3NMRUlSa3plNXcrR1l6QkRsNkJwNlJUQkMzZ2FpRFF6ZUlKamZjTGxjTzN2UGI2RW5NelBuYWhBL3B4TzF1VjAxRWE4RHNJaU9tQTUxN0RrNXlZckdKUUN5MFIzRk1RcDJBOWhLNEMzTTJFRkVCd0U2S0VudWcwYjdXR0ZyajBXSGdEZ1h6UHE3NHkwREdVQUdaUzVnWDdEZ0JLVlRXd0tpYkF5aE94QkhLRis2WFRXVEkyZXppSWFJM3J3RHdlYW1wcjB0TGMxL25qYnR1eFdqYktNL1FGY000Qk1IcS8xdkZZVG5XcHFibjRtM0dpT0Z1SzBtNWVYbFRlam84TTJWNElzRWNERURwOFJMbHhIRTEyQXQzZTEyZng0NXEwVTBESm5sMWdVTEZoelRvV2twUWxJeUU1S3A2NjdFb3dHYUFQQllBR01SOGhZcEN3SU9NUEN5SXJCNFJGejlNSVQ0Znk5L3lmYk9oZGZCQUFBQUFFbEZUa1N1UW1DQyIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIkZJRE9fMl8wIl0sImFhZ3VpZCI6ImViM2IxMzFlLTU5ZGMtNTM2YS1kMTc2LWNiNzMwNmRhMTBmNSJ9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAxOS0xMC0yOCIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMTkwOTI2MDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjMuNiIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4wLjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMTktMTAtMDEifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDE5LTEwLTI4In0seyJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiYmQ3OWU4ZGVhZmNhMTdhNDcyZTRjMzdmMmM3Yzg2MTI2OGU0OWZkNSIsImE3MjA5Njc3MjMyNmIxYjI4MmIyODZjM2U3ZDY0MDg5YmQ3YWFhZDkiLCIwMDI4MTI1MGJhM2ZjZjM1ZDk1MTJlMDY3NzEzNWVlYzc3YThmYjdhIiwiODhjN2MzNGIwYzljYmJiZGJiZDdkNGMwZGU0MDRlMTRhNzRiNmM4YSIsImFhOGNlNmZkY2Q3MjJmNzAxZWUwNjU3ZTE4ZmE5ZjJhNjg1ZTgxY2QiXSwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiYmQ3OWU4ZGVhZmNhMTdhNDcyZTRjMzdmMmM3Yzg2MTI2OGU0OWZkNSIsImE3MjA5Njc3MjMyNmIxYjI4MmIyODZjM2U3ZDY0MDg5YmQ3YWFhZDkiLCIwMDI4MTI1MGJhM2ZjZjM1ZDk1MTJlMDY3NzEzNWVlYzc3YThmYjdhIiwiODhjN2MzNGIwYzljYmJiZGJiZDdkNGMwZGU0MDRlMTRhNzRiNmM4YSIsImFhOGNlNmZkY2Q3MjJmNzAxZWUwNjU3ZTE4ZmE5ZjJhNjg1ZTgxY2QiXSwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IllLNCBTZXJpZXMgS2V5IGJ5IFl1YmljbyJ9LCJkZXNjcmlwdGlvbiI6IllLNCBTZXJpZXMgS2V5IGJ5IFl1YmljbyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6InUyZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJlY2NfeDk2Ml9yYXciXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50IiwicmVtb3RlX2hhbmRsZSJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSURIakNDQWdhZ0F3SUJBZ0lFRzBCVDl6QU5CZ2txaGtpRzl3MEJBUXNGQURBdU1Td3dLZ1lEVlFRREV5TlpkV0pwWTI4Z1ZUSkdJRkp2YjNRZ1EwRWdVMlZ5YVdGc0lEUTFOekl3TURZek1UQWdGdzB4TkRBNE1ERXdNREF3TURCYUdBOHlNRFV3TURrd05EQXdNREF3TUZvd0xqRXNNQ29HQTFVRUF4TWpXWFZpYVdOdklGVXlSaUJTYjI5MElFTkJJRk5sY21saGJDQTBOVGN5TURBMk16RXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFDL2p3WXVoQlZscWFpWVdFTXNyV0Zpc2dKK1B0TTkxZVNycEk0VEs3VTUzbXdDSWF3U0RIeTh2VW1rNU4yS0FqOWFidlQ5TlA1U01TMWhRaTN1c3hvWUdvblhRZ2ZPNlpYeVVBOWErS0FrcWRGbkJubHl1Z1NlQ09lcDhFZFpGZnNhUkZ0TWprd3o1R2N6MlB5NHZJWXZDZE1IUHR3YXowYlZ1em5ldWVJRXo2VG5RakU2M1JkdDJ6YnduZWJ3VEc1WnliZVdTd2J6eStCSjM0WkhjVWhQQVk4OXlKUVh1RTBJek1aRmNFQmJQTlJiV0VDUktnanEvL3FUOW5tRE9GVmxTUkN0MndpcVBTemx1d24rditzdVFFQnNValRHTUVkMjV0S1hYVGtOVzIxd0lXYnhlU3lVb1RYd0x2R1M2eGx3UVNnTnBrMnFYWXdmOGlYZzdWV1pBZ01CQUFHalFqQkFNQjBHQTFVZERnUVdCQlFnSXZ6MGJOR0poamdwVG9rc3lLcFA5eHY5b0RBUEJnTlZIUk1FQ0RBR0FRSC9BZ0VBTUE0R0ExVWREd0VCL3dRRUF3SUJCakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBanZqdU9NRFNhK0pYRkNMeUJLc3ljWHRCVlpzSjRVZTNMYmFFc1BZNE1ZTi9oSVE1Wk01cDdFamZjbk1HNEN0WWtOc2ZOSGMwQWhCTGRxNDVyblQ4N3EvNk8zdlVFdE5NYWZiaFU2a3RoWDdZKzlYRk45TnBtWXhyK2VrVlk1eE94aThoOUpESWdvTVA0VkIxdVMwYXVuTDFJR3FyTm9vTDltbUZuTDJrTFZWZWU2L1ZSNkM1K0tTVENNQ1dwcE11SklaSUkydjlvNGRrb1o4WTdRUmpRbExmWXpkM3FHdEtidzd4YUYxVXNHLzV4VWIvQnR3YjJYMmc0SW5waUIveXQvM0NwUVhwaVdYL0s0bUJ2VUtpR24wNVpzcWVZMWd4NGcweExCcWNVOXBzbXlQeksrVnNndzJqZVJRNUpsS0R5cUUwaGViZkMxdHZGdTBDQ3JKRmN3PT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZkNBWUFBQUNHVnMrTUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFIWVlBQUIyR0FWMmlFNEVBQUFiTlNVUkJWRmhIcFZkN1ROVjFGRC8zZDU5d2VRU0lnUzlBUUFYY0ZMQVFaaTlmcGVWejF0WS9XVFpyNVd4cGM3VzVrbkxhNWpJM1o4NXNyUzJuTTJzanRXd1pTN0lVSDRINHhDbkVReDREQVpGNzRWN3VzODg1djkvbEluQnZWSi9CNFB2OW51LzVudS81bnZNNTU2ZnpBL1F2MEhiL0lyWDNWRktQbzQ1Y25tNGluVUlXWXdMRlJtWlFVdXdqRkcvTjFpUkhoMUVaME5SVlJ1ZHF0MUJkKzJuU0t5Uy9PaHlzMCtsazNlLzNrUTlxdkQ0WlV0YTRWVlNVdVkwZWlweWlUaEFmb2NvT1JWZ0R1dXczcUtSaUFkM3JiY0V0alRqWUlvZjZXYUhzQ216VlBXQ014K2NnaDh0THFXTUthTVdzVWpMcW8yUnRKSVEwb096bWVycFF1NGVzWmdzT05rR3hIN2Qwa2R2VFQxN3M0T01VN1ZJOFpoamdHYU0rQXE5aUVOdThQaWYxdWR6MDdNd3ZLV2Y4R2xWb0NFWTA0UEM1V2RUYVhZRmJSOHZOdkw1KzNLZ2ZiNXhOTXlhOVJhbUppeW5hTWxHVFZ0RmxyNmJhOXUrcHFuRVg0dU11UlJnalNZRWhyTjd1dEZGZTZscWFsN05ma3c1aW1BR0h5blBwYms4Vm1ZMHhzdG5wdGxGQ1ZDWXR6VHVCTjgzUXBNTGpUdGV2ZFB6U1VuSjdlOG1ranhaMzlmWGJLRGZsZFpxYnZVK1RVZ0duQlZGNmZRMmlQSGc0VzE2VVdVd3Z6YmsxNnNNWkUrUG4wcHZ6N0pTZXVBeWVzOGxjcENtYUt1by9wK3FXcjJVY3dJQUhXcnZQMFlFemhYQXRMQWJzc0hocDdpR2FtdnlpalA4cnlxclhVV1g5WG9vd3h5QXVmTkJycDQzUE9CRlhabGtmOE1EUmlxY3B5b3dBd3B1ejJ4K2ZXdnovRHRkZTlzbXN6eWd0Y1I2QzF3YmR6Qmw2T2xxNVdOWVk0b0dhdGhKTXJrVEV4MGpBUlNIQVZzKzVyWWtRTlhiK1FnZlBMc1E2Z1h5SW5zcmVRZm1wbTdSVkZZZkw4Nm4xZmlVT2tZdlNoa1VQeHZidWt6b3k2SzFpaE0xaG8zWHpXNkV2U2ZYQStkcGlXR2FXZCtkb1h6THptR3dLWUZMQ0FzUkFsUEJBaE1sQ0ZYVTd0QlVWUHI4SGdWY0pIV3ErRjAwcGxyK0RNVGRyUDR6dnhZMTFrTk1oeFQrU2VUR2crZDRWNUxRSml0eVVHSk5COFZGWnNqZ1lCWk0vSUkvWENUa2owcXlET3BGMkFWUTE3Q0lqVXAvRG5UMVVrTDVGNWdkaitzUzF3ZzFnRTNnaWdtNjBmQ1h6U25QWGJ5QVBiSVh2K0lEcEUxNlRoYUhJUzlza3lobG1NRTVGM2NmcUFLaHEyQzBFNVBIMWdZYVhhTFBEa1pHMEhESk9uS1dIcDUxSTB6NVNPdXg4ZTFXQXVaemRIUXJUa3A4VG1qWG9JK2xhMHdHWnN6dWJxYk8zaWZRNkEvVzd2VlNZc1YzbVIwSkt3a0tjNFdIaUJrbVI4STNDQ2dJODdvT0w0cXpUNVArUlVKQmVqRU9nQVBLOGhZUHphdE0rZUlUcDJJTzl5VFFtZXJvbVBSeHgxcXhBY3NpbGUvdWJTZUViY1dRR1lFQ2doY0xZMkh5S2pvZ2pIMjVoTXBqcFV2MU91Z2xpNGVoMmVSdzBPMzJiSmpreXVDZ056ZzB2emxZTVNpU3MwdW9vNE1HN2hNT2pDRWFYMXlGRTBuU3ZqQnp1VG5FcEs4Nlo4SW9xRkFJdWJ3OGtnOUFyRWFSRVdTWkkrakg0WGJwNmc5RTlFbkpUM29hUnpETitNVUpCUURIbjU2YThvVW1FQnVzT3hCcy9ONSt0SkViUGtBRkRqOFVHdk9zL0lXdmNTZ2xHQmh2UzcvRlRZZnBXR1lkRFk4ZlBBeFdTQTM1c1RDNHA0K0xtNEFhcUlvUGVRdGZ1Zks2SmgwWmh4bGJzVVhPU21YTmlmRDVaVEFreURvZmJiY2NseG5BOFdOQXF4Q2JSTnlraFh4UXBhRHc2N2ZYVVlic2lHMEtodHYyb2VJdmg4cmhRTVlPY0VBcVhHL2VJK3puZ09jNXl4cjhxODJJQU0xYy9GTEZPcGxxdTVlRlFYck1aekdjVkNqWWJMV0c1STRCVDFldVJybGJ4dE5PdE1pdERERWhMWElJeW5BQXZ1T0VXRTNYM05kQWZ0OTRWZ2FHNDJYSVF0MFpYNlBlQ0UvcVFGZTlySzZIeDdZVTUwS3ZIN2ZXNGZTK3E3S0tCSnhzZ2dCWDVwU0FHaDFqSXJWaDV6UTZ3M1JmYWFoQlhtL2FDYkNaVGpDVUZVVHlXWnFXOXA2Mk1qSlBYVnFPclBnTU80TnY3NEdrZitvd2Z0TlZCRFFuakZKcUhTdzE3cFh2aFdXNUtacWUvUTQ5Ti9VU1RDQVZXb1FYRklIQkhYWGUzRlByVURzdUdEbXRGL2hIS1RIcGVreGhpQU9QSStTSnE2UzZIRjRJOVlXemtCSlRvNDZpVU16V3A4UGlyL1JpZHVMeEtZc1Nrc1Y4dkxsT1F2aEdYMllsUjBPQmhCakMrdS9nRWN2WTBBcEs3WWs0MU54alBTUW5XRkhURjY2VXJqZ2V2QjhDdTVhK2wydllTUlB0dVZEbzczaGhkTVNIblVYN3RUanNWWkd4QWwvV3B0aU9JRVExZ25MMjltWDYvdFIxdG1sa1lqOFc0WCtDU2pXY1VER1kxTnBTL0M3aFNLcWlNTE0vbDJRbVNXWjczRGR6K2dpbzhCQ0VOWVBRNDZxbmt6d1hVYnF2Qmt4alVRc1dmWkZnYnVvM3JBZit3TjdqT085MCt5bng0UGkzTCswbllMMVNjaERVZ0FQNGdQVi83SWQxcSsxSFNobXVHa0lxV1JQZ3l4TUZxUDhIZmpUbmpYd1k1YlFmYkpjdDZPSXpLZ01Ib3RGL0hlMWVnc2F4SFNxRzZ3ZmRtUTV4OE55VEZGcUJjcDJpU293SFIzeWs1KzM2aEY3dlhBQUFBQUVsRlRrU3VRbUNDIn0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjAtMDktMTYiLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6Ill1YmlrZXkgNCIsImNlcnRpZmljYXRlTnVtYmVyIjoiVTJGMTEwMDIwMTcwMzI0MDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjIuNSJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjAtMDktMTYifSx7ImFhZ3VpZCI6IjNmZDQxMGRjLThhYjctNGI4Ni1hMWNiLWM3MTc0NjIwYjJkYyIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiM2ZkNDEwZGMtOGFiNy00Yjg2LWExY2ItYzcxNzQ2MjBiMmRjIiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IklERU1JQSBTT0xWTyBGbHkgODAgUjEgRklETyBDYXJkIERyYWZ0In0sImRlc2NyaXB0aW9uIjoiSURFTUlBIFNPTFZPIEZseSA4MCBSMSBGSURPIENhcmQgRHJhZnQiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MTY3NzcyMTYsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfSx7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDM4NHIxX2VjZHNhX3NoYTM4NF9yYXciLCJzZWNwNTIxcjFfZWNkc2Ffc2hhNTEyX3JhdyIsInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoibm9uZSJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDM1RDQ0FqNmdBd0lCQWdJRkFQMU1ESHN3Q2dZSUtvWkl6ajBFQXdRd2daRXhDekFKQmdOVkJBWVRBbFZUTVFzd0NRWURWUVFJREFKV1FURVBNQTBHQTFVRUJ3d0dVbVZ6ZEc5dU1TMHdLd1lEVlFRS0RDUkpSRVZOU1VFZ1NXUmxiblJwZEhrZ1lXNWtJRk5sWTNWeWFYUjVJRlZUUVNCTVRFTXhOVEF6QmdOVkJBTU1MRWxFUlUxSlFTQkpaR1Z1ZEdsMGVTQmhibVFnVTJWamRYSnBkSGtnVlZOQklFeE1ReUJTYjI5MElFTkJNQ0FYRFRJME1EY3lOREEwTkRjek1sb1lEekl3TmpRd056STBNRFEwTnpNeVdqQ0JrVEVMTUFrR0ExVUVCaE1DVlZNeEN6QUpCZ05WQkFnTUFsWkJNUTh3RFFZRFZRUUhEQVpTWlhOMGIyNHhMVEFyQmdOVkJBb01KRWxFUlUxSlFTQkpaR1Z1ZEdsMGVTQmhibVFnVTJWamRYSnBkSGtnVlZOQklFeE1RekUxTURNR0ExVUVBd3dzU1VSRlRVbEJJRWxrWlc1MGFYUjVJR0Z1WkNCVFpXTjFjbWwwZVNCVlUwRWdURXhESUZKdmIzUWdRMEV3Z1pzd0VBWUhLb1pJemowQ0FRWUZLNEVFQUNNRGdZWUFCQUJONTQyZnVPaUJjYXk0dWhsd1FRUzVJanBFL0RONFJuSVU5ekwwSFdmVENkcmpQVEtxMjE3UXQxQUNDZ09hb3pzamxweE8wWXpNbk1rd2pMMnh2UHliVUFESGw4SzBXYW1HRzMvbk11Rjh4RTVQcWdqbmNVWndySUVqMCs4MVJ0K3UyM1NJYmFmb2ZWVWZQNm5DLzFaTHZ1M1M5OTE3TmhUazdMWDBXS3I0SjJTVHk2TThNRG93REFZRFZSMFRCQVV3QXdFQi96QUxCZ05WSFE4RUJBTUNBZll3SFFZRFZSME9CQllFRkpGdUpzRjNkZHBqdnZuOUlNSFVvTFQxN3NSMk1Bb0dDQ3FHU000OUJBTUVBNEdNQURDQmlBSkNBU0oyNU1VU3hwN09BejF0cUllVEVJdHpmNXdhZzhleHIxUmE4VWlra3ZGQkdqbWJhcEIwMWd3REphWGVkNm5QMGdlZU5nL0RJQ3RVaVNnQnJhbEs5SlFqQWtJQXErdVgwL0NTalIwT2dBRGlyL3RMMkJnWFhnTS9LbzFYU0t4d2ZOSFJKMGRPQ2VGNnR4SXI4dkRQZWNjWmxwNTJ3ZHRtVG9KaG4remhTdlUyamJPM2FzUT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBRElBQUFBeUNBSUFBQUNSWFIvbUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFGaVVBQUJZbEFVbFNKUEFBQUFvclNVUkJWRmhIelZocGNGUFhHZFh5bm1RdFhpWEwrMElhc01IR093WWJFbEpLZ0VrQ0FhWU0wMHliTW1sTEtBTmhuOG5DWmdncDVBL1VoSTR6aE5EU2FXY0tKR3lGTUtHQk5ISHhnbzF0R2JNYmIvSyt5SllsV2N1VDFITjFoVkJrVzlJUFluTEc0em52M2l2ZDg3N3RmbGQ4aDhQQkc0WEdlMTExbFpyZXptSE9adWZ6WFlOUEV3NGV3d3BqRWtLeVp5WEZKeWxjZ3g3d2xuWDg4SGZIRDEwMzZpMFNLU3NRQ240VVRVNWdXeHRuSHpGYUkxVFM5VHQrdm1SbHJtdkNpU2V5QnJYREsrYVVHSFRXNEZBeEJOSEJDWUROWmgvc055WlBpVGo1M3pVOG5wQU91bVIxdHZjdlNpOVd4UVREdG5SaWdtRTJjVWFqdWJSNUd5TVU0NUhLc3M5TzNpK1RpWVhNeEJscE5DeG1UaGJNbnIreEVaem8rR0R0YVNId1REVUJJakhUMjJVNGZ2Z2FPTjlnTU14Ty9EZ3FOb1QvNDRWM3dMRGJIYnJCa2JLMkR3UVhUNmxsOHFDZmdpWkFJT0RiN2J6SzcrOExwOFFzN0d6VFBYTVBQb0hERWE2U0NqbzF1c0RMQVl5TWZNWWZ6Vi84OTN4MEx3RG9vK09INndNQnhIUnBoZ1JXQ3hlZ0E3RWxrZ1VWVml4bWVIeVN3cHpWTGdBUUFjNUhMQkFLeWFQRHdTZFM3QTVFTVo2eHhEVENCYWdNWDJXeFlCZGVRS0x3cFQyZHVyUGw2eS9YYjc1UXZXRjRjTVJxc1QyWG9yeXMzb1FSaFVxR2ttMFlObS9ac3hDUFg5L2FyTzB6Y0p3OVBqbjhzbm96MWl4OUk4ZWdON3UreXgvNGVCRVg5UWZUaVBXMWxSbWhFUkx3TlV0UGlJTVltR3A2WGp5ZGZYU3ZGM1ppUmNKdnY3cERSOElVVXFHUVgxbmFWUGJOUXp4dUxKcHY0NGc1NmF4ZkNBSlpDRlAxOXhpTGlwZUJOei9zcXloOUpBNWlyVll1TFRNT0kyMlArcTFXRzEvQVoxaEJRMTJIOHhPOHlkT2lZSzBJaGF4bzQzazY4c2QzWDlMclRKVDdnejBnYStIay91MjZBb0dRdUh2NzIyY1VrVEtRRVlNMXR6QVpSRjJsRVlrWUVCaXNvMlVJQkVqUGpvTldKUGpnZ1BHckwrb3g4cHUxaGZpOE94dDh3Y0ZEYlBrQmlYUUx0M1hmSXZEcTBwWTc5UjJzaU1HZ1BEZ29WRUY4V24yOUZlNERRYlFpemgvZTdnYlBtWldNNEFNSkNaZnMzM1lKQk5oNWFNbmd3QWpsdnVIZmliRDg2czB2VWI1bnk3a0lKVEVWeDlsU002THA0TzJiN2V6akF4NW1VOS9RZ0dUT1RJQTVRV0JDSzJmN1Iwa1orSUpsNlFxbEhNNGxTMzNDanhQdE5qdSs5NjNOYzhDdm5Hdm9hdFBSRm9PejJMTm1KamlYOE83V2R3bFoxL2ZBYkRVVnJTQVNHYXRVeWZCeDhPRFFvRS8yWFhYTzgzWVh2NDRrcGR3SC9NZ2FHalJ0K3hOeEg3Qm53NFV3WnlZQ2NDdE53NVlIQTR6b1NaV0IyV3JMaVN4Z2FtWXNOUXhLRjdMaDRJNHI0UGx6SjAxSmk2TCs5UUZmc2xBU1pUTFI0cFZaNENjL3IwVDFwdWNCL001WmJIQVRlRTFGVTVDRUphdWRRSXkzTmcxUW5wbWY0TjVlSmhlZk9GSktlZEhocGYwOXc1U1BCMSt5dEgzR1BVZElVUUFPN2I0Q1gxQk95bmNRRXhvbUJiK2o3b0lsNkRnRnB1NDNkSUZNejR1RFVla2dzaUZVSWQyMS9pejQ1TFNvM01KSk9ERG8xSmdZVnhiU08zbXlZdmI4NThFLytmQWIyQW0rb0ZNMnpwYVNGa041VFhtTE85NHBVR25yYnJTQlpPUW5vT1M2enh3WTljSS9hd2U2U1dEdFA3b2NoY1BIY1RTdXJJRmVmZEdmbDFKKzRzaDFlVERwWlNtczFpZnhqa0tGbktDY0FpclZsVVNXUkNMQ24zdHJHQ3hNS2QyMWdSaE1HUjB5NzdWcGFKVHAxR2lNTFFzV3hsVnBXazRzK0o1M3ppT3Q4S1YwQ3NCc1ZuNGlTUE9EUHBQSml2cE94eW5nMDlzMW5aUm41c0ZnVDZJYkovZjFxdzliR3Z2QjkvMWxHVzRXNHhsc0RGbFlpVnAxNExOZmd2ZjE2RStmcUpKSVJYUUtjUEFjTnFzOTc0VWs4T3JTWnM5NHA0RHhOQzFhV2hxeUN4SVJESFFjd0x1RksyVGJWcDBFUndqK1llc0x1SkRSS1MrTWFTMEhQcStNQ2dicmFOSFN6b1ZPRURoNGZBRjViMUNEM2dJK0d1Z20wTW1BeUVQRlh2YkFDWVoyaXZMNDVBZ2tPK1ZlR09OYklTSkl5dTVZZXdZOFkwWkMvcHhKWm8rc29STFZsYVNVNXhZbW1ZemU4WUZ6S1RvK1JDb25CcTRxYmZaS0NHVDMvcVBFRDhCSFd5K2ljRkR1aGJGakM2NzU5NzlxQjNwSjFudzBLbXZFRXJicWY4MGdhYmx4NkY2ODdJSHNRd21ndkxhaXpmUGlDWWRPU2xFV09yTzd1T2cvckpnMGpYVEtDMlBMSWtHZ2xPMWNSd3dHYnk1WWtrYWRRb0dkYmxXM1U2NktDYkhaZmlBTGUrY1VrTWlEWE8yQTNuTmp2T2Z1ZzYrRG9KUDllMGtaYnFaMGZEVEdsZ1VnZXNxdU5pTFh3RkdYMFk2NnJjS3lBdlZONGtRZ016L09NOWNBcTVsTHp5WG5Va05OdTVBUnV1TVMrWnRiNE1ydXZac3VTbVVpcnhUMnhMaXlxTUhlKy8xcGNMR0VlV1BOVEtQQjRwNUNxcUlOQkUvTjhKYUY1TXFlU2NwSFhVV2J5Tm53QUhpbC9oNDk0Z0hjb0RPZi91c05GQjA2TlNiR2xRV2dIYmgvcDd1bW9nVjh5OTVGdzFvVE5SaGtNWXdBY1FPT3FQZXNpcWdMU2hWSllRQWREdTNEQUt5Wjk4clV5S2dROEIzcnppaWo1TDd2RUw1a0FSR1JzcUwxNXlqZnNITytic2pWOWNMRk5MeFNNMkk4a3hHQmxUM0xkUURjcW1tbjhZNlh3VjM1d3hKeXZHcWF0TmN1M3FYMXhRZjh5R0lZWVVmYjBOZGZOb0N2MmpoSHhBcHBwV0hRVnoxdVlIQjBvbEJSam5NSk5ZWHlqdFpCZWk2TkdDd3IzcG9oZGRhQzk5LytJa0lsY3dmY2VQQWpDOEFkNXNCMlY5Zjd6czZYZFlQRVlIRGkzVnJYYlNJOUt3NzlKK1VXRTVmdFBDNXJ5eldpSUplcFVIWGYzZjhLT0pLZ29hNWR4UG94RmVCZkZ0N1lPR3c1ZGF3S2ZQbWJPYUdoRXRnR2d6M2R3MVl6VVpNek81RVNLQUJTczBpdTFkMW9GWWxKVU90MTV0VmI1NElBU0NEY2hRSzVtUHFYQllTRVNUNSszMld3WFljWGF3ZEltY1ZKY0xPTStIRjZYZ0x0cSt3Mmh6SmFUc3U2dXFvVmRRUVZIMG13ZWh1UjllMmx1MTBkcnA3Ykx3S1NoWklJRVNVSHlDOVBoZk1teDhhRm95Z2diTlhWSkJsVHBrZGpBZXprdkhlNCtyQjd0N29SbDBQYWtVMjdGOUtSQSs5ZENvc2duV01nQ0VnV2dNUHIyTUh2S2YvMDdKdHdEWFp0cUhFVjFkakVNSmdLYWZqaUwxTG9TRStIRHJVa0xqRnN4ZS95OFBqbDM2cTEvY2JBZnhmaS8zcGhTYmRHNzlYS2pRazA1Z3FWUERvMkJOVzF2cm9kRGdMU1NDVHhteC8yR2cxV0pHblN6eFJvR0ZGUkcrLzJRSVFxSmhobkYvS3V2a3FEeC9GT1FFOVl6TFlaTDhielY3MTZ0TDFwS01EM2dKdGdGUkRVU1d3R1dmUVNnWWloVzhLNWtJc3BXa2dobE5ZTzl3Sy93QmxWTUM5Sm9JeVNlWjIxUGdESElhVHdSd3NQL3ROSDk1YllIby91NGc0bmVDM3dDN3kySWtvbW1Kb1Y1ZGxBUG5QZ21FckxqUlhNWDV4cUdEYkRIYTdoWndxYXpuTVhUaEVrSnNkbXpZcEdvTGxtbmltTWV1dXJ2MG9Wc3pJU3RocE54OUs4ejVTUmNoOE4wQVNBM0FCTWxzc042NlJCd1NqRTl2ajQyTDJmTHVocUgwWVN1WlpNT0pDemZUMkc0bFBMb0FreVVCZjR5T3BGUy9MM0hWdWcweG9SY1JNY1o5aHV4R0ExbXl3bEY1Wm5aS1ZBREI5WEw1eFpLRFc0RjJDK3NiR2x1T2lhdXJ3UEYzYmNRdUhUeDA1OXVzNGxyNDEzaDFWUTlteWNyV0JCM1BydDgxV1JrUUtHendqSlQ5UE9YNnA1RGp0blI5UmprZGxpYm55Z3FmeXVxZm1CVmo5a2hyK2RwbnVxOW5NV1BaVEFrSER4ODFPVk0rYytsNUFZdzRwWWROaXNtTUZWaXNmai94L3hxT2NQUmRTdmF3QUFBQUJKUlU1RXJrSmdnZz09IiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiM2ZkNDEwZGM4YWI3NGI4NmExY2JjNzE3NDYyMGIyZGMiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjp0cnVlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsImVwIjp0cnVlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJhbHdheXNVdiI6dHJ1ZX0sIm1heE1zZ1NpemUiOjEyNTAsInBpblV2QXV0aFByb3RvY29scyI6WzIsMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6MTYsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MjA4LCJ0cmFuc3BvcnRzIjpbIm5mYyJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9LHsidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi0zNX0seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTM2fV0sIm1pblBJTkxlbmd0aCI6NCwiZmlybXdhcmVWZXJzaW9uIjoxNjc3NzIxNiwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjUxfX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTA0LTIyIn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNS0wNC0yMiJ9LHsiYXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUtleUlkZW50aWZpZXJzIjpbIjBhNDI2ZWUxN2FmZDE2NTMzYjFjZGZhOTVkZTFlOTIwYTZhZWRmM2EiXSwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhdHRlc3RhdGlvbkNlcnRpZmljYXRlS2V5SWRlbnRpZmllcnMiOlsiMGE0MjZlZTE3YWZkMTY1MzNiMWNkZmE5NWRlMWU5MjBhNmFlZGYzYSJdLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiVml2b0tleSBBcGV4IFUyRiJ9LCJkZXNjcmlwdGlvbiI6IlZpdm9LZXkgQXBleCBVMkYiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJ1MmYiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlDTnpDQ0FiMmdBd0lCQWdJVWM4Y1JFc1k4ayt0dS9BbDVhZllFWVIwbkM1Y3dDZ1lJS29aSXpqMEVBd0l3YVRFTE1Ba0dBMVVFQmhNQ1ZWTXhFREFPQmdOVkJBb01CMVpwZG05TFpYa3hJakFnQmdOVkJBc01HVUYxZEdobGJuUnBZMkYwYjNJZ1FYUjBaWE4wWVhScGIyNHhKREFpQmdOVkJBTU1HMVpwZG05TFpYa2dRWFIwWlhOMFlYUnBiMjRnVW05dmRDQkRRVEFlRncweU1qQTRNVEF4TnpRd01EbGFGdzB6TWpBNE1Ea3hOelF3TURsYU1Ha3hDekFKQmdOVkJBWVRBbFZUTVJBd0RnWURWUVFLREFkV2FYWnZTMlY1TVNJd0lBWURWUVFMREJsQmRYUm9aVzUwYVdOaGRHOXlJRUYwZEdWemRHRjBhVzl1TVNRd0lnWURWUVFEREJ0V2FYWnZTMlY1SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnUTBFd2RqQVFCZ2NxaGtqT1BRSUJCZ1VyZ1FRQUlnTmlBQVRrajA0bzVnNXFkOUpiL29tNGJENGx4V3djbHBTa1JtRnMvbEpOV1JJa1cra290NjYvd1JIdTJTdS8xQlRKZWdTRWpQTjJVMFYrcjJxSit4VmN1WGpvenZTS3B0czJhaTMxdEJ1dG5xWVhvdjJYNFZNMEcxNEdGSWlIRGptcVVxdWpKakFrTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFBd0RnWURWUjBQQVFIL0JBUURBZ0VHTUFvR0NDcUdTTTQ5QkFNQ0EyZ0FNR1VDTUUxVG9ucUVaeXM3U3dUTVBjcWkzdjdpSjNoa2x6bmtaM3p6VndQSXQyNjBRT2R1VGV5WlovaDJ3RFZEdHRmWG1BSXhBSlRVR3kvT3ZTR2V0eFcrZ2tDcngvUUJTUGtJMGJUVUVYbmt3OWwzM1RpR293NlVMWis1MFErOTYvY0doS2JrcFE9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFnQ0FZQUFBQnplbnIwQUFBTU9ucFVXSFJTWVhjZ2NISnZabWxzWlNCMGVYQmxJR1Y0YVdZQUFIamFwWmhyY2lNNURvVC84eFI3QkJJaytEZ09ueEY3Z3puK2ZxREs2cmJiSFRPOVk5bXFVbFdKQkpHSlJOSnUvL1hmNC83RFQ1U1FYTkpTYzh2Wjg1TmFhdEk1cWY3MTArOTc4T20rM3g5NWJ2SDUwM1gzdmlGY2loemo2MlBOei9NZjE4TjdnTmVoYzZZL0RWVG5jMk44dnRIU00zNzlNdEF6YzdTSTdIdzlBN1Zub0NpdkcrRVpvTCtXNVhPcjVlY2xqUDA2cm8rVjFOZWZzN2RVUDRmOXkrZEM5cFl5VHhUWk1VVFBlNHhQQU5IK3hNWE9TZVhkYm50NzV6eEd2ZGMvQmlNaDMrWHAvZE9JNkZpbzZkdUhQcUh5UGd2ZlgzZGYwVXJ5UEJLL0pEbS9qOTllZDBHLzNJanZlZVRubVZOOXp1VHo5WGo4ZUVYMEpmdjJkODZxNTY2WlZmU1VTWFYrRnZYT21wM3dISU1rbTdvNlFzdSs4S2NNVWU2cjhhcXdla0tGNVNjekRzNWJFSkE0SVlVVmVqaGgzK01Na3hDVGJDZUZFNUVwOFY2c3NVaVRHUTIvWks5d3BNUVdGOGhLbkJmMkZPVWRTN2pUTmovZG5hMHk4d284S29IQmd2SGlUMS91VDc5d2pwVkNDTDYrYzBWY0lwWnN3akRrN0ozSFFDU2NKNmw2RS96eCt2cGp1RVlRVk11eWxVZ2pzZU0xeE5Ed1F3bmlCVHJ5b0hKODFXQW82eG1BRkRHMUVreUlJQUJxSVdySXdSZVJFZ0tKckFEVUNWMWlrZ0VDUVZVV1FVcUtNWU5ORlp1YXI1UndIeFVWTGp1dUkyWWdvVEhIQWpZdGRzQktTZUZQU1JVT2RZMmFWRFZyMGFwTmU0NDVaYzA1bDJ5aTJFc3N5UlV0dVpSU1N5dTl4cHFxMWx4THJiWFYzcVJGUkZOYmJxWFYxbHJ2ek5rWnVmUHR6Z085RHhseHBLRnU1RkZHSFczMENYMW1tanJ6TExQT052dVNGUmY2c2ZJcXE2NjIrZzRiS3UyMGRlZGRkdDF0OXdQVlRuUW5IVDM1bEZOUE8vMk4yZ1ByTDY4L1FDMDhxTWxGeWg0c2I5UzRXc3JIRU1Ia1JBMHpBQk9YQW9nWGd3QkNpMkhtYTBoSkREbkR6RGN4blJPQ1ZNTnNCVU1NQk5NT29pZDhZT2ZraGFnaDk2OXdjeVY5d2szK1grU2NRZmVIeVAySzIzZW9MV3REOHlMMnFrSkxxdW1nNTVrdXRWdWprd1lxcThTbHhEcGIzclBRc3RQczIxTU1lMlN5Y2hZQnJUSktJcEE5NGg2ejUwWmFpUFd3TWdJK0xleTZsSXN6YStCTzE3eGR6M2tQUFQwc29hYjZyQ3kvMDhMQ25LT3BidkpoV1FDU0lyR3YwUWZMQk1Bb3ZXM205YjFzdEZoZEhUdzlBS1pWQkZPVms3eXJUcjQraEZ5dTB4SzV5SkdKbCsra1orUk1vU0tnbGFXVTNIUVVuZHN0MWI1ekNhT3RUSWhNMm9HeHNzS2p4WDVoMGVtenNCeVdTeFlqZys4KzE0b013R2dyalpOaWR4TWMrNElTSThUc24yejZucFdwWXlheGkrbFVROTlUUmlJL2FZNFNKOHV0cS9TeW9MMHVhc00xS0xnaEhDVFFHTGVOMDhsM3NoRWIzL0lzTWZlUitoZ3NMTGVsaDF6MXRvQTh6dE5Ia1FHanB1dDluclo1QWhRRE9Nd241YXVIZE9hY3drSm5CWnAyTEJsOE1jZFFaOTdaTDZQZ3NLdnd6WFVkUGRBRUc4ZzE2TEU4bFRKZzJTeGJJdlJLUE10SUZJdVdsSEtZMUFQcFp3b05qSlNKaEZySWp2cXdUd05RTmtoVG5jdHZFcDQ2VEU2WkRQV3R3aVBENTdwcm1xdmZSTUlTMzJjeVFreXFwYm8wcWV0K1VvUG9lZ0ZlalQ1SURxT1ZRMWxvTnRwZDdSa2JrMmpoYWRxN3RMd3lkY01YU3BzTHFWMEVRdEVVZ1VNNlJ5YlZ0UU5BNmp5NWFiTzdoVnRxVFJibHJSTlI4WVVVZ3RHazFNYmNNckxibzBvM0xpOGdwVDRwWjNSamd6OGlaYWtHM1VGWlJRNUtuS2tNSzVDbzhMNlBRRTRxQWl6ZDVVQmlJbmtoVjV3dVVscU1tTXdWUjFWNnpRSnp2MVlOTXBwbktjRzRDbXRuQVY4bG4yRlJsZkJJMWxGN2lNQ1VNbHkzQWxnWEN6SFNRZkl5L0lyVUs4UnV4QklTcGRvQ25WS3IwWS8zdEJ4S0h5dm5hQm82ZFpJMlFKSUVrZk9vbllsVHJHc3VSSGlFa3hMeXhOQmFLSWJDVXhFeW1GYk82UXFDWDZOdVVzaHZTWlBhUkF2bVVnR1czdWJRTk1DTG5LVXdENFhFMEdnUFBqeVlZbVFZM01ER3dYQmtiMEoyNkQxUWNjNXFTNFlvVXJGUkpkOE4vSzRKQmxWS2tJQ3BWdVNVRm1JQm1waExjNG8wUTNnNGVWS2dnQnNyQW5QRTRIZ28wWWlTeGRMUjU0QVhXWVQ2WTcxcWVlcTBqMkFaUkM3Y1RhVW1HQ3VOaWFnLzR5MHI2S2FhMlFxV0wvZEFRVk5wQ0FCQ2o3ajVPT2V5RW54cGJ4N1VHaldkMjUyYTJTaXhzVmMydERvcHJhK1U1ampJOXJhMUdycW9QQnhINGNBaTBpTll0N2dCejJKdGZROHJIOXFRMFNvdkw4YXVReFlXZW5XOFZWQzFpb0ZmcVpMelRhbWR0amJmejlCdHVFQnpJWlJsMG5VUVoxb2c3enVaek5CeFdPeWUxSUpoZ05aQUM0RE41cFBReWdXclNhYWxnNDBmWFpVdWFQVnM2bU55SmxjWE4vS3g2YXEwTGZUR1VuZ1k5YVdoTEpRVVdoK0FhZ3NpeklTTVFKY3k0c29KSkJQRWlLMURycmJqRmE1akxGc2VocERLZmtXSTM5a0M5eGpIOWsxb2FGMHVzbHhvVHc4b0ZSZzd0V2IrZ0M2QXBTYnVoa0R5ZHVqamhkYWl0V0V0dHBFVS9KTjFFdFNEZGJ1c1B0NHVpRUtCQkcydDVwUEljYUdVV0IrbHdWZWl0L1FJYTdzNXFEKzZCRnFha1NTS05wWU03Sm4wNnByS0FuTmZXU1ppV09rL3RoS2laMHdrZGVGNklCRGRxRnZCNkJaVE0xOFB1d1kzVUFwMEh3UllxYmM0UVltbEVNR3A5YUEwcGt4a0t1aWdyY3k5UFEvRGFpQ2duWkk3WE0yTTJSRVdzb0orNHMzS3NFeVJGZE5HTkJ0eFR4RTFSMWZuSU1OVUVTalpJcEdMVFExMjY2Y01pVWQyTjYvV1FMbDlaSkEyeEIxQkRYdnF6WVRlTnBlc09RQWpUd0VQdENQdlNDSGtSdEJzbit2RW9tQWFSR1NaRE1IT0VVeGN5OVZBT3dTc2V6VmhmQ1VzWHdLd3M4ZGVreVlrNk1BMkIxZFdTTGRoWUhmcXd1cEFFUnhITVhkQ1RxbkJTQTdOOSt5RG1KdU5NTHJXclNheWpHL3RhdEw3QjF5akU3QWs5aFhZQ1dCQm83elJQNnFheEdKZHNpQ0xnUWpJTzRGU0pMUlI5cG1vcW5YeEdKMVM2U0hEWkN5Rlp0UUYzYlhrWVJtb0NYcVQ4aGdWaUNZRXBCdFk1cTBNOHhTQWxFYXJSeFlLaVpBbGZyYzVFaGFSNFNybEt6Skt0ekFIMllrNFBaRWJINWVCczJHWlJ6ZkJzSDZVclFrWFI3TzdMRzFzbFo0a0VzUWt0TzRYVE81cFQvSlkwTFZrNG5BVGhGT0FIRlovUWx1ZWZDeTRFVmFUTUlGNHlSMks3S0F5Q3l5Mm5LUDhtQThOOHhySmliUmpCZkN3VmhOaldvUE1HV0d6YW5IbWdnVFlyQXF4c2JZMXN4T2FOQ3FKbWhRYVplaVJkd2J2MDd3QnlwdnZ6Z0RZVUJvTUpYcnMwRHVBeDBlWmY2ZEFLTFNLTjFpeklramRoSGhadzRRdU5kRzVYaFBSeXVaSElwNGpEZExrWUx3SVJnUEZJUUF1N2FxRk9ySWhUamZkYTEzZ3dhVVVsR0JGMjJlY2pFeVNZcXF1cThObmVheUltcTVQRE12R3RsOVpSVEVPVHF4U1AzaEpiTHg5QW1POENiWXRWVDdYZXhkZENKMklUdU1lOXlHWHRCclFkOTNOZGg4MGQvWTltKzJEV0E5YjJMeUlFYU1UbDNLZFdsczNCOXdmWWJob2lqbGZVdUhwcmhMZUd2UTVDZStqdWF1R21LS3YxdS83bGVmb0dtMjJTTGp1cDJLKzBDdEtuSzBjWFJST3NoczY1azd4WUtINXJaVEFOSkdsVitkaUdoQ0MrWUlsbEVpeE1vQXVrcWM1Ynl2TUkzUndSSUV1MHRid2tiUmdNQWU3QVR3Vkk5RUlrRXY2SU5sY1dPNVZHNXVheklWRjdhb0pGaTJPSXFRWm03WEZqUzA0eVk2eEQwOUJVTXZCdGlDVkx5UXpmY20yYy9uMmQzZEZ2TnUvQ1g5enRIMkJHVm5FR2lkYURTZWZBWmdHdXNIeFhNTS9zOE84VUxURU9hWndaS05vVzA0Q3FQY2g3RDQrRGlPQzh1RWtPeHZDS28rbGhQbDI4TEhtSHB3bEdVa3FMYjJPa1FUMFN1c0VFa3B6M1lQOUJ3U3kySzVMTHpPUlAzb1VTWDVNS2VJUEgyRWZuS0tncnBuSXJJaFNHT1pJMlVLUktjUVUyMkVlMmErc2JOd0lMQ0pPKytYYy9mQ3ZvclUyOTlIdXZqL1M2VGU3ckRHdmIwUDhCZXBCWk5JRVFOV0VhN3RCenFrSGl3V2JCNVFRRnpmQUJwRlA3RDNwT0hnVHFtbmFob3cyUlJGT2FvL3Z5dFh1MmUvUllaell2RSsvU1RXdzdyM3RnSTBNa0k5YzdwZjFZNk5OQSsyM0IvUzdtYzNCMmcrVnhKNnhyczR1bTBacHZqaGl1OWdkQ3pzU284cjFMdVh2RnYzajZENWZpT0dKZFd4elVFdHc4b0UrSGRrMGVnemkzVEJrc1h4UUs1RXFnK2x3c29sREgwc0oxMDZaMk5seFFoUEFOSmJnaDI2bnBNZGhZWHE5Ym9TMkxWNXRaMXVONitiWDJCMEpRRFlhUVhuTWJQbW8rdmpQbDJWSDkvTUYrNGVIclEvVlBaVEd3VmxCTVhZR2RCTGNKSnY0UXlRZ3dob3B4TmUyamJneHZmRElxdHdjNjYzMlJNazJmOGxBZG9iOWo0SmRoTGRGMmRjbzBDVzIvVjMxcm9TbXBlSHV5aVpTRzJuVlQyL3o4MjlyK0hkSDkvVkNzNjVyNjdNU3gyWXUrSU9jcDQvbDBTR2dsbHBubnV6Nk1aZG9rL2pxdHJrczI5RllGOFdlVExwaElVSUdNUGNOdGJVK3MrVGZpYThkM2M4WHlqbG4yZi92L3dkT09aSDE4VmFXQVFBQUFZVnBRME5RU1VORElIQnliMlpwYkdVQUFIaWNmWkU5U01OQUhNVmZXNldsVkVUc0lNVWhRbld5SUNyaUtGVXNnb1hTVm1qVndlVFNMMmpTa0tTNE9BcXVCUWMvRnFzT0xzNjZPcmdLZ3VBSGlLT1RrNktMbFBpL3BOQWl4b1BqZnJ5Nzk3aDdCM2liVmFZWVBST0FvcHA2T2hFWGN2bFZ3ZitLQUlJWXdBZ2lJak8wWkdZeEM5ZnhkUThQWCs5aVBNdjkzSitqVHk0WURQQUl4SE5NMDAzaURlS1pUVlBqdkU4Y1ptVlJKajRuSHRmcGdzU1BYSmNjZnVOY3N0bkxNOE42TmoxUEhDWVdTbDBzZFRFcjZ3cnhOSEZVVmxUSzkrWWNsamx2Y1ZhcWRkYStKMzlocUtDdVpMaE9jeGdKTENHSkZBUklxS09DS2t6RWFGVkpNWkNtL2JpTFAyTDdVK1NTeUZVQkk4Y0NhbEFnMm43d1AvamRyVkdjbW5TU1FuR2c5OFd5UGtZQi95N1FhbGpXOTdGbHRVNEEzek53cFhiOHRTWXcrMGw2bzZORmo0RCtiZURpdXFOSmU4RGxEakQwcEltNmFFcyttdDVpRVhnL28yL0tBNE8zUUhETjZhMjlqOU1ISUV0ZExkOEFCNGZBV0lteTExM2VIZWp1N2Q4ejdmNStBSG9tY3FwN0hqaUJBQUFOR0dsVVdIUllUVXc2WTI5dExtRmtiMkpsTG5odGNBQUFBQUFBUEQ5NGNHRmphMlYwSUdKbFoybHVQU0x2dTc4aUlHbGtQU0pYTlUwd1RYQkRaV2hwU0hweVpWTjZUbFJqZW10ak9XUWlQejRLUEhnNmVHMXdiV1YwWVNCNGJXeHVjenA0UFNKaFpHOWlaVHB1Y3pwdFpYUmhMeUlnZURwNGJYQjBhejBpV0UxUUlFTnZjbVVnTkM0MExqQXRSWGhwZGpJaVBnb2dQSEprWmpwU1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJajRLSUNBOGNtUm1Pa1JsYzJOeWFYQjBhVzl1SUhKa1pqcGhZbTkxZEQwaUlnb2dJQ0FnZUcxc2JuTTZlRzF3VFUwOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXRiUzhpQ2lBZ0lDQjRiV3h1Y3pwemRFVjJkRDBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5NFlYQXZNUzR3TDNOVWVYQmxMMUpsYzI5MWNtTmxSWFpsYm5Raklnb2dJQ0FnZUcxc2JuTTZaR005SW1oMGRIQTZMeTl3ZFhKc0xtOXlaeTlrWXk5bGJHVnRaVzUwY3k4eExqRXZJZ29nSUNBZ2VHMXNibk02UjBsTlVEMGlhSFIwY0RvdkwzZDNkeTVuYVcxd0xtOXlaeTk0YlhBdklnb2dJQ0FnZUcxc2JuTTZkR2xtWmowaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOTBhV1ptTHpFdU1DOGlDaUFnSUNCNGJXeHVjenA0YlhBOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOGlDaUFnSUhodGNFMU5Pa1J2WTNWdFpXNTBTVVE5SW1kcGJYQTZaRzlqYVdRNloybHRjRG8yT1dFeFltTXdOUzAwTTJKa0xUUmhNalF0T1RRM01DMDFOR000WVRJM1l6Y3hZbU1pQ2lBZ0lIaHRjRTFOT2tsdWMzUmhibU5sU1VROUluaHRjQzVwYVdRNk1ESm1aR0psWm1ZdE1USmxPUzAwTXprNExUaGtNRFF0TURVME16RXhZV1psWWpFMklnb2dJQ0I0YlhCTlRUcFBjbWxuYVc1aGJFUnZZM1Z0Wlc1MFNVUTlJbmh0Y0M1a2FXUTZaR05qTmpreVl6Y3RZakppTlMwME5XRmxMV0ZtT0dRdFpqQXlaV1V3WVRJNVpEVTFJZ29nSUNCa1l6cEdiM0p0WVhROUltbHRZV2RsTDNCdVp5SUtJQ0FnUjBsTlVEcEJVRWs5SWpJdU1DSUtJQ0FnUjBsTlVEcFFiR0YwWm05eWJUMGlWMmx1Wkc5M2N5SUtJQ0FnUjBsTlVEcFVhVzFsVTNSaGJYQTlJakUyTmpBeE5USTVNREV3TXpVM09EQWlDaUFnSUVkSlRWQTZWbVZ5YzJsdmJqMGlNaTR4TUM0ek1DSUtJQ0FnZEdsbVpqcFBjbWxsYm5SaGRHbHZiajBpTVNJS0lDQWdlRzF3T2tOeVpXRjBiM0pVYjI5c1BTSkhTVTFRSURJdU1UQWlQZ29nSUNBOGVHMXdUVTA2U0dsemRHOXllVDRLSUNBZ0lEeHlaR1k2VTJWeFBnb2dJQ0FnSUR4eVpHWTZiR2tLSUNBZ0lDQWdjM1JGZG5RNllXTjBhVzl1UFNKellYWmxaQ0lLSUNBZ0lDQWdjM1JGZG5RNlkyaGhibWRsWkQwaUx5SUtJQ0FnSUNBZ2MzUkZkblE2YVc1emRHRnVZMlZKUkQwaWVHMXdMbWxwWkRwaFlqbGpZVFJrTkMweE1EUTNMVFJqWkdRdE9EQXlOaTAwT1RJMVlqWTVPRE5qWW1NaUNpQWdJQ0FnSUhOMFJYWjBPbk52Wm5SM1lYSmxRV2RsYm5ROUlrZHBiWEFnTWk0eE1DQW9WMmx1Wkc5M2N5a2lDaUFnSUNBZ0lITjBSWFowT25kb1pXNDlJakl3TWpJdE1EZ3RNVEJVTVRBNk16VTZNREVpTHo0S0lDQWdJRHd2Y21SbU9sTmxjVDRLSUNBZ1BDOTRiWEJOVFRwSWFYTjBiM0o1UGdvZ0lEd3ZjbVJtT2tSbGMyTnlhWEIwYVc5dVBnb2dQQzl5WkdZNlVrUkdQZ284TDNnNmVHMXdiV1YwWVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW84UDNod1lXTnJaWFFnWlc1a1BTSjNJajgrNkhNdE53QUFBQVppUzBkRUFQOEFBQUJCTXZ3TjlRQUFBQWx3U0ZsekFBQUxFd0FBQ3hNQkFKcWNHQUFBQUFkMFNVMUZCK1lJQ2hFakFQQkpSN3dBQUFrRFNVUkJWRmpEclpaN2JGUDNGY2MvOTJISGRwejRGY2R4REVuSUM1S1E4QXlRVUpKUUNwUVdObGhidEkycWE5VnUwOVJPay9iZjFELzJSNmY5VzAxYkoyM2Exa250aW1nUjdXaFhTaW1sa0pJR1NFbERBaUhrNlJESGVUaHg3Tmo0ZmUvK0lKaVlBSzJtZmYrNnV1ZmMzL21lYzc3bjNKK2dxcW9Lb0txUVVoU1NLWVZVU2lHUlN1SUwzTUxyRCtIMWg1Z09SdkNISWdUQ01XN0ZFaWlLU2xtQm1jZldsakk4NGVmU29CZWRSc1pzMUpGdnlxYXkwRWFaMDRxSWdpaUtpSktJTElySWtvUWdrSVp3aDBBa2xxQjNkSXFyTjMyNHB3SjQvU0VTS1FVQWRjRlpYWGpRYXlYV2wrUlRVK0pnWU14SDY0MXhrZ3Ura2loUWxtOWlhOVZ5Z3BFWVozcEcwV3MxbE5oeldlbXlVVnRhZ0ZHblRST1FBVklwaFhBMFJ2QldsQjczRkw1UUZIRXhUVUFqaVZRNFRBaUNTSVhUakRuWHdNWHJOK2tjOWFWOXRMSkkvWW9DcW9ydGVLWURuTGsyUml5WkFqWEtYRGlDdzZRbkdvdWpreVZrV2JwTHdCOEljckhuQnZWMVZlVG9zM2kvdlkvSllDUjljRXBSYWFrdXBLbDJCWUlnTU80TGNPTHlJRzdmUEJwWnBNSmhSaU5MbEJlWXlEVWE2Qm1hNE9MdzFPMFNBN2tHTFFjMlYxQlRuTS9BaUp1Q1BCdkxuUTRBUklCSU5NYWZqNTNtMHk4N0tNbzM4V3hMTFU1emRwcUFvcW9VMjAwNHJUazRMVWF1amZtNE9STUNBZXBYT0RpNHJZWWZONi9HYnM2aHRYdUU5cUhKZE91c1JoM1B0ZFJRVytLZzgrcDEzanQxanVCOEtMTUZBdUFOM3VMd3FYYjh3UkFIOXpUeDRtTnIrTmZaSGthbWcwaWl3SmU5WTJScHRjU1NTYTY2cHhFRVVCWElOeG5JTTJXVHBaSDQ2cnFIRWQ5OHVuMHVpNUZEVFRVVVdMSTUzZDdCK2E2citPZkRHU0tVMDJvRVFyRTR4OXU2bUoyL3hVOS9zSk1YZHF6aHZmTzlYUFBNTURRZFpPS0xLeWhBSkpGS0MrN0N3QVQ1WmlPeUxOSGVONFlLaUlKQXVjUEUwNDlVWXpGb09mNTVLeDNYKzRrbmt0d2pyVVVFRmd6eFpJcXpYWDJFSTFGKzhjeHVEbTZyNXNTbGZqcUdKZ2t2Qk02U0pRck5CbkoxR21KSmhXUHRmY3hINHlRVkZWa1VxQ3ZLNDRtTmxlZzFjUFRVR2E3MEQ2ZW41SGFxOXhJUUJBeGFUWHJPVW9yS3hUNDNpWGMrNHFVRE8zbTh2b0ljdlpaenZXT0lva0JUWlNHV3JCUm1uY2l0cEVJZ1lhSjljSnFaVUpRdDVVNjJyeWxGVFVZNWRxcU43cUZSMUR2ekMyZzFNcUlvWmhJUUpSRmJyaEhmWEREZFAxVlY2Ump3a0hqdkU1N2IyMEpUM1FweTlGbEU0Z24wa1NuKzh0ZC9jT1R3TVRZMWJ1QlhyN3pNb3pYckNFVlRiS29xSWpBM3k0bldkbnJkWXdpTGFxNnFLamtHSGJJc1p5NmlTQ3pHRnhldjhQY1B6eklWQ0dYc2dKU2lzc3FWeDQ4ZTM4YWFxbktTaVFTdi9QSmx2bWh0UTZ1UlNhWlM1Rm10SEQxeW1FTFhNdHhqSGs1OGVZSGg4U2xFTWJQY09xMldIWnZXMGx5L0RxTkJmM2NNRlVVbFA4L0s4M3VicVY3dXlCQ0tKQXIwamZ2NDJ3ZW5PWGVwQ3pVWngrc1pSNnU1bllVc1NmaG1ad2tGQS9UMDlYUHNkQ3NqM3FYQnpjWnNkamR1cExLa2lFVWRJZDJNQWJlSFNkOHNCM2R2cGI2aUNJMGszWFVTQk1iOTg3eDFvcFdKMlNCVjFkVklpK3lyS3NveFcyeWN2bmlaS1g4Z28reUNJT0MwbVhteXVRRlprdWpwSDBSRnpkU0FUcXZGWlRQem13L084UDJHT2c3c2FNQ2NjNFgrbTE1VVJlSG1iSWlrb3FDcUFuMmo0N3owd3ZNSXFJUkRJUkFFRHV6Zno4eDhtRVFpbVE1cU11alJhbVJzcGx5MmJWekRpR2VDTXgzZnNPK1JUUmoxdWt3Q2tpUmlzNXF3NXhvNTN0YkY1R3lRUTA5c1F4SkZFc2traHo4K1IvLzROUHViMXVFMGFqbmY5aFg3OXU1RkVrVVVSZUdteDRQZGJxZWhyb3JXenF2b3M3VHMyYmFaUElzWlJWRTUyOUhKNWQ0QjlMb3NyQmJ6MGlrQU1PWG1VRnRjd09tdUlGL2ZjRk5lNU9UblQrMGlua2l5WmZVNHE4dVdZOU9xdlBhNzE3alUxVTJXVm92VllpWWNEak1YREZGV3ZJemZ2dm9xMnpldVlXSm1scXJTRW93R1BXYzd2cUc3ZjVpVW9wQnZNV0czV2pLMGthYVNaODVsYzIwRjVtdzlpcXJTT3poS2QvOEl2VU9qVEFaQ1dBMGFQanorYjY3MjNTQmJsNFVzQ2dUbTVrZ21FdVFZZEV4TyszanpuMjhpcTBsRVNhTGZmUk8zZDVJQjl4akpsSUpHbGxsWnZBeUh6WHIvVGFqVnlEeXlmalVwUmVXZGsrZnBjWHQ1NDhqSHFJcEtZMTBsazE0UEhaMmRHWHNzUTJ6QXdQQUluWjJYV2J1cGdmZFB0MkxRNlppWTlhT1JKUjdkdUphdDYrdlMwN09FQUlBdVMwdVJ5OEh6KzdiejdxZm42ZlA0aUNSU1BOVlNqeTh5Z3l6TEZDMXpwUU1LZ3JBd1VtcWFVQ29lSjk5aXhqc3poMGFXTUdVYjJOVzRrY0o4Tzhac0EvY2lnNEJXSXpNek84ZTR6OCtMKzNkdzlMTTJ1b2E5eEJNSjFtK3M1dyt2djU3ZTVScU5oTkZnSUJxTEUwdkVFUmJlR3d3RzRva1VHbG5HbFdkaFoyTTlnWENZQ2Q4TUswdVdMeUdRdnBMZHdiUS93Qi9mUGs2V1hrL0xobXBhTzN1NU1qQzZFRmhOWjkxWXM0SWZQcm1kUzEwOW5PL3VSVXhYNC9iS0xiQloyRkpYemJCbkF2ZTRsNS9zMzRQZFluNTRCUURzRmhQTjliWDg2ZDJUeklmQ1BMWmxEWFp6RHI3Wk9YeUJFRjFESHFMSkZLRndoSlNpRW8zRm1mWUhrRVNSSWtjZStSWXpCb09lRlM0blZ3ZUc2ZXdiWlAvMlJ2TE1KdTRIK1g0dk45ZXRvcjI3ajFOZlh5Y2NqZkhzRTAyVUZUVVFDSVY1NC9CSFhCNzBMUG5HbHB2RDB6dGJ5TE9hOGZubitPeXJEcm9HUnFndUtXSjk5Y29Nd2Q1M0RCZkRhTkJ4Y05kV0hKWmNMZzZNNGZmUFlUUG5VT3B5WURQbjN2ZXdiSU9Pb2tJSDVod2ppVVNDYndaR01PcjE3R3pZZ05GZzRFR1FIMlFvY1JYdzByNG1mdi9XZnpoNW9ac3N2WjVRSk1hMW9UR1VUTmtBTURVN3grY1hMbE9ZbjBkYlp6Y0NzTHRoUFNVdTU1SWYwM2Npb0pGbE50V3U0dUQyU1k2ZS9ScjNrVTlJS2lyejBUZ3NqVTgwbnVCa1d3ZGFXZUpXTE02V21rcldWVldpeTlMeU1NZ1BNNXB5c3ZsZWN6MWVuNS9XN2tIVSsyUytHTEZFZ25neVNma3lKODMxNjdBOVFIamZxb0hGS0hUWU9iU25pUTNseTBBUUh1b3JBQzY3bGQyTjlSUzduSHdYZkNzQkFhZ29XY1p6ZTF1b0t5NjR4NnF5dUIvNVZqTjdteHFvS2l0QmdQOFBnVHNYa3BxS0VuNzIxQzVXbHppWE1GUlZLTEJhZUdabk16VVZwUThjdWYrWndPMnJtVWhWV1JHL1ByU1grbFhGZHpOVW9iU3dnRU5QN21CbGFUR1MrSjJQdlA4cS9qWW9xc3JVako4TFBmMXNxYTNFUFQ2Qkt6OFBwejN2b2VQMklQd1grdWlxam9jRGRQZ0FBQUFBU1VWT1JLNUNZSUk9In0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIyLTA4LTE0In1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMi0wOC0xNCJ9LHsiYWFndWlkIjoiYTZjNWY1ZDgtMmFkMC00OGI2LTgyNTctZTUwMmM4OTcwOTMxIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiJhNmM1ZjVkOC0yYWQwLTQ4YjYtODI1Ny1lNTAyYzg5NzA5MzEiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiZVRva2VuIEZJRE8gTkZDIEVudGVycHJpc2UifSwiZGVzY3JpcHRpb24iOiJlVG9rZW4gRklETyBORkMgRW50ZXJwcmlzZSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjo2LCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH0seyJtYWpvciI6MSwibWlub3IiOjF9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjEwLCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjoxMCwibWluTGVuZ3RoIjo0LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sImlzS2V5UmVzdHJpY3RlZCI6dHJ1ZSwiaXNGcmVzaFVzZXJWZXJpZmljYXRpb25SZXF1aXJlZCI6dHJ1ZSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlEZFRDQ0FsMmdBd0lCQWdJSkFJQ1VUdmtndGo1Q01BMEdDU3FHU0liM0RRRUJDd1VBTUZFeEN6QUpCZ05WQkFZVEFrWlNNUXd3Q2dZRFZRUUtEQU5FU1ZNeEN6QUpCZ05WQkFzTUFrTlRNU2N3SlFZRFZRUUREQjVIWlcxaGJIUnZJRTExYkhScFFYQndJRVpKUkU4Z1UzVmlZMkVnUTBFd0hoY05NakF3TnpBM01UUXpOekU0V2hjTk16QXdOekExTVRRek56RTRXakJSTVFzd0NRWURWUVFHRXdKR1VqRU1NQW9HQTFVRUNnd0RSRWxUTVFzd0NRWURWUVFMREFKRFV6RW5NQ1VHQTFVRUF3d2VSMlZ0WVd4MGJ5Qk5kV3gwYVVGd2NDQkdTVVJQSUZOMVltTmhJRU5CTUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUF2QUtPZXFDNS9wMEQxaXNDWUtRSmxWVU9yQjZJN0RMb2N1bkUvUm04ZHVHVGJ5eFFodDNDYkZWVHYzTjJMcDJmYmp4bEkrM3NPU0drMzNGVFlrVHF4Y2RKSXJKN1Nza0JjVVNOcmZLT2FRVC82S1FjUDRDbTdWKzY1NVRxK1RXeHl4V1FoRHlndDE1cW9QN011SzZiVDlTd3BDanBmS2hhTVNteVFhTW9VY1JBYkxxZHpCQ2FjMGh6QitaZStncUpsbldWOVVhU0kyckZzVnVINFpFMGNSTytNT3BhTGdNL3MyNDhuR0dIcDIyZXdTUWZiblBhQmJiOGlxeUFQK2N1NTJHTHNVcEtSSmViRStSNitQTVE5SkNkV2VRWlIzRGtmU2lka3YzbWNiNGpxMWlJdGErTXFLaFJud3JmWGg5MTFLV0xuWUFsOUVOQ2hMWDBjNlNqMVFJREFRQUJvMUF3VGpBZEJnTlZIUTRFRmdRVVdMdmhSQlVQbjh1TElmNjgrZ3YvTlpJd0dTSXdId1lEVlIwakJCZ3dGb0FVV0x2aFJCVVBuOHVMSWY2OCtndi9OWkl3R1NJd0RBWURWUjBUQkFVd0F3RUIvekFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBRkxyRGhhZWdlS0h4WWpIM0VQM3ZVQktobnpNMjA2QVN4Z2VZQ08yRWM5cE9sWUphZXFGRStzVWFtVVYvcHdqRGxxTmFTZ0ZneTdUd2VZa3ZPbU1uNHFTY3NIcXZKM3pHT0FpYWZ3YWgxdlVIZkNsWFI4K2F4TzJpR09VRjBKS3JaOVlZamJBYTUvNEhDbHY3akZQT2RNV1RPUXluZ29pSEFzM2prdVlqcENMRmxCNFZPaTNkMXdqQTFwblRkQktrQWI3dDhuVHZ3Ky9YYkZ2Y1FhNzNWSDdzanZvQnFEM2ZkTWZSY3VWcTRxVVp0WlQ2Y0dhZ1RIRDYxVHRxaDlvTUNaWGNEYlIxUEdabk5icXljc1dQRElLMG5wbUszLzNsZlY4Yytac3J5NmUxNzBtZkpNWnA3TzhtNkNTejYvVkxLK3lESmQ3ODQxd3BtZUtUZjZJblpBPT0iLCJNSUlDNlRDQ0FkR2dBd0lCQWdJSkFKYlR5cnUxWC9JUE1BMEdDU3FHU0liM0RRRUJDd1VBTUNNeElUQWZCZ05WQkFNTUdFZGxiV0ZzZEc4Z1RYVnNkR2xCY0hBZ1JrbEVUeUJEUVRBZUZ3MHhPREEyTVRJeE5EUTFOVEJhRncweU9EQTJNRGt4TkRRMU5UQmFNQ014SVRBZkJnTlZCQU1NR0VkbGJXRnNkRzhnVFhWc2RHbEJjSEFnUmtsRVR5QkRRVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNVmpLSFdwYkQ3VFNsTXhvY2pUbDZuSWY3eDMyUG1zUTl6R3VMR0dxQTBVUVpvSXEzWEx6TDZMWVV2SjVBNWcwdXlGR2xsSEVmR0FLckVhQ1E4RlZ2UFMvVWgwRnlmeldoUkF6aVRTaWpqTUlJVmpqalV2OW05dkZtY1hTY2dIaWc3T2R6ODg1OFYwa3JOSDk5cUdtM3dqZ2FPZXJUV210K2pYQ1VmbjAxSWtUUHd4RzJIbGdFZDQ1ak5MU1Y3Vm9vbCtLZThFMmtpNGxFa1RlSHpib3VsUjVHVWJwM25NaTdFNDdWTVFhM2JOd256V0Jic2FCU1NRaExrM201SGFLaGh4YTZ3SkRLNDdOaU1Da0NrZElIdVdTUUxWQWZtODVVQU9OdEVPUHdpME91SzNxYmU4eUtPRkdmMEtoQjVNTWVBeW03TVYvTTRXMGE0OW9nUEQ5cE1DQXdFQUFhTWdNQjR3REFZRFZSMFRCQVV3QXdFQi96QU9CZ05WSFE4QkFmOEVCQU1DQW9Rd0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFKV3o1eExNazVXTlliQWI2eU94RUNCb1oyV2VCL3FsNFZKM08vMy90TnN4T1luekxlV281NDB6UWg5ckFtYXh6N2V1bUJsc2tNcTR5R1BTTlhCOXljV0dIZ2tjQ2VTek4yd3Y4Q0l6REJzMm9CWmpUTms2NUxCWkRzc1RPQnRNVy8rdVRGSFFmYnVPM0lTTGhJMERYZlJFaTlORE0zamZrMTF4SGNzZmgyUk1WK1FkTmZ3VmFaWnJDcStvdUcrRXZrdjdLcXErb3l1MFZGTS90ejY4VEdsNnlsaFBGUjFxaDl3dHRwVmpBT09DRVFDTHFQMmRQMjhsd1lCeUNxSFFxVkh3YnVqdi9MWmpabktXM0xZbmRaaXhQUFNSQ0pzc0REd0p2aC9mNm5UeGc5WkUrL0pjWXJlNUNhSThuelZIYVNPQ2pOSjdGelVMRzY0SmlXT3ZRNTA9Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQVF3QUFBQWdDQVlBQUFEbmxVWnFBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRW5RQUFCSjBBZDVtSDNnQUFBQVpkRVZZZEZOdlpuUjNZWEpsQUhCaGFXNTBMbTVsZENBMExqQXVNakh4SUdtVkFBQUsxRWxFUVZSNFh1MWREWEFjWlJtK05PQWZLb2c2V08wUWNyZVgzTzcxUjQxb0hkU3FxREFPZzMrY1lFWEJvbFhSVEVuMjIwdGFLVGM2NG1nQnF6QmlFVVZwQmRxaXd3aHFTZElTMnVwWVNndlJ0cFRTY2tsald6SGFnanBTUmRyNHZMdHZqcnZrMjd2ZHZkMUxqbjdQekROM3QvZCs3L3QrZjgvKzc4YUswTkRhYXIycU9kWFpvcVd5SDlSMGEwRmN0NjdXZEhHVFpvalZDY1BxU2VqVzFvUXVIc095L2VCVHNEbU0vNTRaVDlqK0xXR0lnN0RmQi9zQmNEUHNmNFhmUDhYM2IydUcxWkhRelU4bVV1S2R5V1RIbTVxYWNpL2pIQUtCeWlmMGJCcitMd2FYSVBZUGtNZHFmTDhYZFdwbHMxQUEzMS9Rak93OThMOFM5YjhCWElSMituRGM2RG96bHNrMHNsbmtRTXhrUEdYTzlFSnRWbllHRjRzVXlWbmQ4VVRhZXA4YncrNkxha0JqNWl6ZGJOSlMxcnhFV255V3hnMzZFbVBkV29QUERlamY3ZUFUR01zSGFEelR1QzZoYmowTi9wWG1Bc3J1Z3MwV0xQOE51QkpqWkptV0VsY2wwOW1QSjFKbVcwdEw1K3VpSEJ1R2tYc2xqWDg3bmk0RXpWbms5QXZrc1FuNTdFU2RockI4Qk11UGpPV1AvLzRPSHNSL2U3RDhZZFRsZnRSaEZmZ2RMRzlIdTF3QWZ6cjU1akFPa2lRS2h2VmJHQjZDMC8vaSsyaU5lUng4RmdudlJmeGZhaW56U2s3TkUwaUlVUGJmNDN3V21OVE5kN0JwS0VBN0xaZkZBWTl6cDN5WlRTTURpUVZpL1UrU2c1UVlBSWZPbUcyZXdzVWpBL3JoVzdMNEJlcm1qOWgwVW9CMk9CK1RaVFc0Qi9rOE95Ry95Q2lPb1cxSVlINkg4WFB6OUxiY0t6aWxRR2hwTVp2aFp5SEd3RzNnNDJCazg1WjhvOTBHOFgwTmlTczFJdjJRR2s4S2RXc3p0NHNuSVA4UnFSOW1EUVhESWRaU2JCb1owSWwzUzJPWFpYWXBGNDhNVTE0d25LMWJlVzQxcEwzRkVRQ0psUFZXdERHMmZ1eVZyTlIzdEJUZFNqQjhZcklGb3lWdG5vMk9DekJneEROQkI2cFhLTUh3eGlEOWdLM0tjNlBja3ZCR0pSaStNY21DMFlENGZkSzRYb2g5Vy9ZVENaUmdlS052d2Noa0d0RzJlMlcrYWtzbEdMNHhtWUpCYXhscFRJK2tOUlFkbUdSM29VTUpoamY2RlF3NmNDcnpVM3RDTUxEV3VRc2QzUitBdzNLbkJRNUt5bmpoamR4T25uRGlDRVp1R2pyc1lXbE1KdHBpV1VLM0JtVC9GZkV1ZGhnNlVQZTZGZ3owYlI2ZmE2TW1uWTNrbER3aGFZakxVVTZlczI3dDBnenptN1ZnVXU5NkQ2ZmtIeENhNjJVVkdDTXE4ZzAyalJRbmltQm9SdllpYVR3bTJudGZXOXZDazdXMGRZSHMvd0oxNjNrNmVNWnVRMFc5Q3diRzlLMXNPcVdBdklVMFg1dGlEWnROYlNqQmNHRUVndEhXZHN2SjhFMm5BdVV4aWJwNWhXTTkyb0RmMnliOFgwS3gzckVORjBvd29nSG0waEpwdmphVllQakNpU0FZaWJUMWVXa3NKaWJDay9QbTVVNWljOHJ4UXBsZE1SUHA3SGxzSGhxVVlFUURKUmdoNHNVdUdIU1JEK3BJVitUSjR4SDFMRzlkakNIVGlNbFI0VmlHMkU3SFJiaEFLRkNDRVEyVVlJU0lGN3Rnb0oyejBqaE10SE9lamwyd2VRRlkvbEdaZlNuRmZEWVBCVW93b2tIQ01CZEw4N1dwQk1NWEtncUdJUzV2VHB0bmgwWFUrMDVabkFKREZBekQ2RGdkL3A2V3htSEdEZkZGTmgrSDBRYjB3YU95TW1PRStPVU5JL2NTTGxBMTZsMHcwRjY3NDdxNHBScEdjZHFhN2t1UjVVdEVINDVnRG13S2kvRFpqOC83SUVTMzRyT3plYWFZeldsVWgzb1JqSm96Uk1Hb09BRU5hMGkyZFRHR2VFcDhURkptUER2WXZHclV1MkNFUWJxaGtzT0ZCc3lsaTJXeGFzVGo2TmQxMnBzWHY1N1RDUVlsR0M0TVNUQmFXNjAzb28xZGI2cXpxVnRmWW5NNTZBcEJ3OW94b1Z3Uk1ZbEdOSzM5MVZ5aUtpakJpRVl3bWxQZExiSll0U1RhN3FIaUErdStvUVREaFNFSkJ0cHZoZFQvR0hXeHY5eld4UmkwdFBpRXRId0p4YlZzWGhXVVlFUWpHSFJ3R3VPaDBnVjVrVE9lTWkvaGhQeERDWVlMUXhDTXMxcXRWZ3p1OHJldnB5eVBqd0h3c3BWaC9TdVZXaktkQ3dTR0VveW9CQU81cDgzM29wK2VrOFdzRmRGK3dhOFNWb0xod2hBRUEzN1dUUEJiUkhUY0FleEd2SlROSGZRTU5jZjZCcytQOWVibnhmcWVQSldYMmtDWnpIZ2ZFeGpDR1FJbEdORUpCc0YrRUpFdWRzdmkxb2JpVDV5S2Y5U05ZT2pXWmpUeWZhSFJ1ZDlBSG90WXBXQTROeHFKWTFMZlROVDVLMndlaTYwZk1pQVVENEtqQmZibWo4YjY4c3RqMnc3YUQycWhmVS8weHk2WnJ6SFMycXVscFRObCt3eUl1aGNNakJVNjYxUU5tMmN1UG9QRFJZVFJCanBiUjJNQU9WOUhaek9ROTgvdy9mWXdpUEh0ZmplMGJ2MkZrL0NQZWhHTU9yc09vL0x0NjdvMVhEZ1Z1aUUvQndMeGp4S3hLT1hHMk02ZHRpMzZ3OE9SZG5HUDdUY2drRnVkQzhiVXZBNmpsa2lrTzgrVHRnMklNWFNZemZ4RENZWUxxeEFNTDdldm83N3R0bkYvLzBuWWt0Z2hFWWx4SExxYXpKMnRqRXFiczlpeVNXWG4ydjREUUFsRy9hT3NZQmpXQVRiekR5VVlMZ3dzR0xscEtMdFY2cE5KSFZaNFlITGYvbmZKQldJQ2gySGRRRVhpNmV3bE1yOGxkSjVIWXR2N2hSS00ra2M1d1VENzdHVXovMUNDNGNLQWd1SHA5R2RLWE1YbUVJeDh1MFFjWFBqWWErMHltVXdqMnV0eHFlOGlvbzRYMnZZK29RU2ovbEZobCtTUGJPWWZTakJjR0VBdzZIb0s3QTZVbmNpbzU4R21wc3RlZUIxRDc5Qlg1ZUlnNGYzRHAzT3BHT0xNbC9rZnh4Mnh6RnJmajhWWGdsSC9xTEJMc29YTi9FTUpoZ3NEQ0VZaVZmNzJkV2JwSmR3OSs4NlJpc040OWc3dWgzVmhGNFBGNlFtSi8xTHExZ0l1NGhtVkJBTVQ5dTd4NzB3SmcvVFlmVTZoTEpSZ1ZFYUZYWklIMk13L2xHQzQwS2Rneko1dG5nS2ZCNlMrbVBqLzBJd1pIUy9uSWc1R1J4c2hCZ05Ta1NqbFlpNVJBUHJ1VWxtY1ltSnkvWG5HM0hFeEs2RGlGa1pFeEJqWXlDbVVSU1hCUUR1UG9BNWJvMmJTeUw2ZFUvSUUzaXFVbmdZTm0yZ0QxN04wK0c4VnArUWZTakJjNkZNdzRycGxTZjBVRVRGTk5pOUZ6L0RNV0cvK2lFUWtIUGJtTjhTMmJadDQrYmh6ajBuNUozaUJkRnMxbC9BRTFMMnVCYU5XVE9yaUE1eVNKeUR2NzhyODFKeWVyeTZXUUFtR0MzMElSdE9jM0dsb3A4TlNQMlBVeFZObDEvVHI4cTJ4dnZ4NjhQa2lzZmduZmw4ZjZ4OTBmUVVsNG41R0dxK1l1amh5NXF6dTEzQ1JpbENDNFkxMUtSajBXa2d0Ri93bVJTVVlMdlFoR0Y0bUdBYUxZUFB5MkRnMFBkWXo5SDdzcHN5TjlReFVmQzBpWGZ5RlB0b25pMWxNR3F4Y3BDS1VZSGhqM1FrR3hDS3BXKy9tZElKQkNZWUxQUW9HdllRYTl1WGY3MWxwNjZKS2xIdDgvUXNVUiswWFRYdUFFZ3h2ckEvQm9MZnIyUWZIci9HemxlbUtLU01ZdW5rSFRTekVsTDQrc0ZhQ2dmbytCKzdXak96bjJMUXNuTmNHaUQxVVR1YlBvZG5GNXBHQXpwZ2d2dXRXQnVyNkg3dE91cmlVaTVRRlhTV0tNdC9IQk41RWF5WFVyK3c5TWNFcGp2R0s0dmZJYndWZHc4SXBsQVdOQlpTNUR2V2hONVhuNGVkb3FkOG9pRnl4MndrK2l1LzBJdWlsOUt3VFRza1Q0bWx4RHRyelJtNVhqUFVvMnBYZTZHNDlnanh2dytmQ2hOR2hjZmh3UUM5amFUTEVHOXhvR0ZlV3ZpWStVdVNtMlErY29YZHk2TllpTk93eVZQckhHQmgzSm96dVVDc2VUNW1YUWZGL2poZy94T2ZYTmQyOGdqbzBhSDNwTEFsTk5HZHRMNVlpNTV2UWdiZWo0KzZnLzlnc01xQU9IM0hhU2Z3RWJYY0R2bWVUaHZVcFRlOTZ5NFF6TTc2UW05WTBaOUZwZFBjbTZ2TnBzQXQ5c3R4cE8rdlg0RWJFMjBvVENjc0dTb25sK0IvZjZXYS9WY1Y1MGFTUHg3dE9EZUVCeGcxMHh5K2Rrb1hnZkFneEZpRGUxOUFPMzBNL3JFUU85eUxtQTRpL0JiKzNsK2Jua1BJSE40UHJVTCsxK0Z3QjIydmhveDFpZjFHODFYcGJ2QTI1WmpLK3IybHhSMjRhMWQ4UlB6RWZ1d29XY3NFV2lKTXpZaitJM3crVnRLc2hIZ0gvQVBaU25xalR6Zmk4eGg2N3VuVXVQZHJBMjhOeFlySC9BejN0STRqNStUT0xBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMSIsIkZJRE9fMl8xX1BSRSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiLCJtaW5QaW5MZW5ndGgiXSwiYWFndWlkIjoiYTZjNWY1ZDgyYWQwNDhiNjgyNTdlNTAyYzg5NzA5MzEiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjp0cnVlLCJ1cCI6dHJ1ZSwicGluVXZBdXRoVG9rZW4iOnRydWUsIm5vTWNHYVBlcm1pc3Npb25zV2l0aENsaWVudFBpbiI6ZmFsc2UsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZSwic2V0TWluUElOTGVuZ3RoIjp0cnVlLCJtYWtlQ3JlZFV2Tm90UnFkIjp0cnVlLCJhbHdheXNVdiI6ZmFsc2V9LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsyLDFdLCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjk2LCJ0cmFuc3BvcnRzIjpbIm5mYyIsInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XSwiZm9yY2VQSU5DaGFuZ2UiOmZhbHNlLCJtaW5QSU5MZW5ndGgiOjQsIm1heFJQSURzRm9yU2V0TWluUElOTGVuZ3RoIjo0LCJyZW1haW5pbmdEaXNjb3ZlcmFibGVDcmVkZW50aWFscyI6MjU1fX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6Ik5PVF9GSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI2LTAxLTE1In1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNi0wMS0xNSJ9LHsiYWFndWlkIjoiZTQwMGVmOGMtNzExZC00NjkyLWFmNDYtN2YyY2Y3ZGEyM2FkIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiJlNDAwZWY4Yy03MTFkLTQ2OTItYWY0Ni03ZjJjZjdkYTIzYWQiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiU3dpc3NiaXQgaVNoaWVsZCBLZXkgMiBFbnRlcnByaXNlIn0sImRlc2NyaXB0aW9uIjoiU3dpc3NiaXQgaVNoaWVsZCBLZXkgMiBFbnRlcnByaXNlIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfSx7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjQsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUNpVENDQWc2Z0F3SUJBZ0lVT2ttVTM1SWljWG9WUGpmdndwRzdNTjZ0SFBVd0NnWUlLb1pJemowRUF3TXdRekVMTUFrR0ExVUVCaE1DUkVVeEZEQVNCZ05WQkFvTUMxTjNhWE56WW1sMElFRkhNUjR3SEFZRFZRUUREQlZUZDJsemMySnBkQ0JHU1VSUElGSnZiM1FnUTBFd0lCY05NakV4TURBM01Ea3pNRFF5V2hnUE1qQTFNVEV3TURjd09UTXdOREphTUVNeEN6QUpCZ05WQkFZVEFrUkZNUlF3RWdZRFZRUUtEQXRUZDJsemMySnBkQ0JCUnpFZU1Cd0dBMVVFQXd3VlUzZHBjM05pYVhRZ1JrbEVUeUJTYjI5MElFTkJNSFl3RUFZSEtvWkl6ajBDQVFZRks0RUVBQ0lEWWdBRXRnT0M3SUt4aXBNSjdiVlBUVDgzT2U5MHh6SFBDZWJ4eUN0Zy9XcnNUclJhU25ZaWdtSkNCOC9qcUJONE9RRzJkWjVqY05zTDZTd0hvc1lEUkpjK08xems5aTVHRVpXZjNJcjk5MkE2ZHVNc3A1MWxxNGZBZ2EvVXpUTjkvRWJ6bzRIQU1JRzlNQjBHQTFVZERnUVdCQlRmeHpnOEdHellBaWRLTDYzdWhTaXJhWEpJS0RCK0JnTlZIU01FZHpCMWdCVGZ4emc4R0d6WUFpZEtMNjN1aFNpcmFYSklLS0ZIcEVVd1F6RUxNQWtHQTFVRUJoTUNSRVV4RkRBU0JnTlZCQW9NQzFOM2FYTnpZbWwwSUVGSE1SNHdIQVlEVlFRRERCVlRkMmx6YzJKcGRDQkdTVVJQSUZKdmIzUWdRMEdDRkRwSmxOK1NJbkY2RlQ0Mzc4S1J1ekRlclJ6MU1Bd0dBMVVkRXdRRk1BTUJBZjh3RGdZRFZSMFBBUUgvQkFRREFnRUdNQW9HQ0NxR1NNNDlCQU1EQTJrQU1HWUNNUURzdjRLNk5mSnZmdnpkME95Z3dKL0FCaUx0Z3RKV2hYVGVVbGx0ZHFhNFdzT005dHZ4NjM2djVGSXZaUmtLMVhvQ01RQ2RvUFErYTRmREJFaU51ajBXczMzdVVRaEdycHNlUERHZlZYbjRrRXBiVElCZU9kVkF4Ly9Uck1DL1NWYitic2c9Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQU5FQUFBRE1DQUlBQUFCaUVOSDlBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFBN0RBY2R2cUdRQUFDWnZTVVJCVkhoZTdaMEhkQnpWMVlEWERUZWFzU2syRUV3eFlNQ0FBUU9HbjBEb0VDZEFDS1lrUUNDaEJFaUFFRWdnaElRRUhBaWhkeExBWGJMYUZxMTY3NzJ2ZXU5OXAvZVoxWC9mekVwYTFnV0RaNldWOXQzekhSMGRnM1puMy92bXZ2dG01NzJ4ak9IQU1iV0JuY014MVhFZzUxUlZIWFVUTmMxdDlvS0t0K0x6SDQzTXV6bThkSDFFdzZsUm5TdHRneXNjN21OaWlXT2MxREZPRWpQYm9hQ3ZvY2RYMllkT2krcTRPTEwrMXZEU3h5TnozNDdQaXkyb3FHdnRjQk1FMk9MMTV0dGl2ODRKZ3REVzBaRlU1bm8zcmZ3Ulc4bDFZYVZydHBZZi9YWHRuRzF0bG1pM0pVNnlKSTlaVWpHaEJQUTQ5SHZVNk54dHJjZHNyVDE3ZThYMXUwc2V0eFYva0Y2ZVdsN2IyZFVsaXFMWG5nUEd2cDFqR01iVjFCcVdWZktjTmZmRzhOSXp3aHFPRHUrY3Y2ZlBFamxzaVNFc05zYmk0Q3l4dkk2QUNRMzA3bmF3cVBmQmdZamh3eUlHamc3ck9ITjMzUzFoSlgrMjVVZmxsdFczdEhNYzUzVm8vN0VQNXdpQ0tLMXYvaXk5OUtHb292VTd5bGZzYkpvVDFvY2tpNWVSNXZDTGpiWllTZlRHbUZBRCtoMmNpK1dRQ2VDRG5aMGIxbnZjenNaTGRwUTlHbFAwWldaWlpWTXJSVkZlay9ZVC9zNUJoZ1BoUGtncXZDdWlhTTN1K2tYaFBYT2lSaXhXR2drTzJKbHg0YkJ6b1FscHNWTElBVERCVU1KS3pZMGFXUkxlc3phczd0NDlCWitsRlZVMHRCdzQyMzNET1o3bmE1dmJQa3N2dVd0UDRTazdYZlBDK3kxeGVtNnpRMGFsOW5wN1RNZ0RWb0IyOFJKSXNpQzg3N1FkMWZkRkZueVZXZGJZMWdIekFhOVZlOFdrY3pEdmFPdm9oQnJ1b2FqQ004UHJGMFQySTVkaElJY1hoWmZHZ3lsbWI5QlFDOXBCY1M5QThsdXdwL2VjOE5ySFlncWljOHM2dTdvMVRmTzY5YzJZZE01TmtNbGxydWRpY2kvY1Zyb292QnZKQ3pVakpGSnNHK2JBZ0NIZ2lWT3d4SWxMd2pvM2JDOTUwWmFiVVZHM3Y4SnUwamxYUy90N2FlVTNoWlV1Mzk1Z2lSelNwd3NzcnRzd0J3ZUpNaFE0czJmZzJHMTFtOEpMUHNtb2FHanIyT2ZWazBubjdQbmxqMXFMejloVk55KzhEMmtMTlJ6ODlIOXBER1kvd01RQ1RTbkkrV0c5WisrcS9aMjlKS0dvY25CNDJLdVhUMHc2OTFaYzN2VmhKY3ZDTzlCZkdqVWNUbktZZ3dmVmRycDJObWI1N3JhYmR4ZTluNUJYMDlMdTFjc25KcDE3TkNMM3pHM2xoMFgwbzBvT0NidlhpMkl3QndhY0FYUGl4SVhodld1L0x2MWRkRjVLZFpOWEw1K1lkTzdtOE5LanY2NzFWbkl3WS9WN09Rem1ZSEF3NE55Y2lLRmp2cXE1TGJJc3ZMTERxNWRQVERxM1BxSisvczRPL2MvMGJ4cDhYd2lET1Vqcyt2QWE0MTZ3by8zeTZJYlBxd2U4ZXZuRXBIT25SbmVpTCs5dEU5ODA3UFZ5R015M1l0T3JPaGdubzBiUHRuVzk2M0o3OWZLSlNlZFcyZ2IxNnlPY2Zya0ZPNGY1WGhqeXhISVdwN2c2ZHVqTk9zYXJsMDlNT3JmQzRiWWtlOUJWRnI5WHdXQytLMDRCWEZybGRHK3A1NzE2K2NTa2M4ZkVrdWdlS2V3YzV0QnhpdURTQ1hIRTZ3MEh2Q1o4akpOQ3pvR2hmbitQd1h4WERPZmlxZGUrelRrOXoySG5NSWVPTjgrUnJ6WHM0KzRTN0J3bUFHRG5NRk1OZGc0ejFXRG5MTkVoajErREJKclFkYzVvN3FoOUVSbEt3T2VkWXUxbXVYT0dXUHZFVnpLLy94Uk56SmtnaHBnN2U0RlBaM3hNLzNZTEtMUFdPY01lUXlsMFFyc25tVkF0Q3JYN0FpdXh5RVlzdFJOSE9vaGxEbko1TEhXc2t6cmVTYTJNbzFiRlV5ZkdVeWVOYzNMQzdPR1VCUExrQkhKVkhIVk1MTG5FUnM2YnlwdlRacFZ6NDFscVVqajlGemlQNTFxUld3dDF0NDZLSlZjNFNmQnBkUUoxWmpLOUxwVytLSjIrUElPK0tvdStOcHU1SVllOUpZL2RsTS9lVnNEK3JJQzlzNUQ5ZVNGN2w4N21vbG5DM1VYc2ZjWG81Nlk4OXJJTUdoUmNiQ2U5amViWHBJRmc5amhucEM1SVl4R1F6TkR2TUhBc3NwRndIcDhVVDU2WlRLMVBvNi9Nb20vSVpVQ21lNHE1aDh2NEp5cjU1MnFFdjlRS3I5WUxielFLN3pRTEg3U0lIN2RLbjdWSi8ydVh2dTZRdG5WSzI3dWtIVjNTVHAxZHM0WGQzVkpranhUV0xjSG5mYUtTMjVqSkxJdlZuWU1HOUd2VlFEQWJuRE5PMFBHc05pK0dXR0tIVEVhZGxraXZUMk91elVHSjZwRnk5b1VhL3ZVRzRjTldFV1NLNkpHZEEwcnFrSkk3cXBZUWFpV2wxZEphRTZPMXNGbzdwM1Z3V2hlbjlmQmFyNkQxNmZUUExnWkZ6UzE3aGlSUG1Wdjl1Rlc4dllBN1BvNnlST21GaDEvYkJvSVo3TnlFYW5xSkJwWFprWGJ5NUhqcWdsVDYyaHhtY3hIM1pDWC9TcDN3Zm91NHJWTzA5MHNaUTBxeFc2bWwxVllXeVRRaWVTakZ3NnRqc21kczN5c3RReUFHQmMrZWJ2bVhKZHlKNEp4UjdQbzFjaUNZMmM3cHVRMFMyeEVPY25VaURXTUVGQ3QvckJiZWJSSER1MlZJWTJXRTJzUnFQV0NZN0tFVkQ2ZDZSTTBqYTJPcVo4emovV1FoSFpEQ3c3dWtYMkRudmgxdmVrTzVEUXFSdGNrVVZHbVBsTVBRS1c3dmxOS0dsR3BLaFpHUlZzQXRyTmFCb3BQVGRuWks5eFp6TUlIRnpoMFFQYjB0dEtIWi90Vlp6T1BsSEF5Z3puNmxpbFM3ZVkyUVljVDBRQ2JEOGEwQmxlc083TnlCOEE2bWJoaE1WempKOWVrMFRQaTNOQWpXWHJtR1VxRSt3MG50dXdaMjd0dlFuVnRnSTA2TUo2L1BZWjUzOFdIZGNnV2g5Z3Nvc1hrUEZNZDNDZXpjL2pFeVhCU3h4SWF1dE4xUndMN1JLS1FNeVoyOHBtRFpEaUd3Yy90SGQyNnBqVHczaFg2d2xQdXNWU3gycTZPU0J3dDNpSUdkMnhkZ213NWt1SFdwOU1ObDNMWU95VVdwM01GdXc0M2pRSUdkMnhkNmhsdHNKODVKb1VDNDdaMVNBNjNpNnMyc3dNNTlrL0VNZDVpVldKTk0zVi9LYmRXRms3Qnc1Z1YyN3B2b2s0YjVWdUxrQk9wbmhld25iV0l0em5CbUIzYnVtK2pPSFJ0SDNwakx2Tmtrd0tTQnc4S1pIZGk1Y1l4UkZjbzRHM2xST3YwbkY1ODJyTUFzMVhzb09Nd0w3Tnc0dW5BTHJNU3BpYWlNaStpUmU0VDliTEtONDlBQ096ZU9QcW91anlWdnlHWGViaGFyS0ZYR09TNHdnWjBiSjRxWVp5WE9TNlgvVU0wbEQ4ckRFczV4Z1lvZVh0dmRKZDBYMHM3cGxkemNhR0s1azl5VXovNnZYV3hqTlFWL2RSK3dHQlMxaUc0SjNiTVpIN0xPZWI5VUpTNUFTWTdQR0piWktmeDZDOTVKODZEYk9RRjRXd0RHZEZuekF0bDI5dEhNYUZzN3BidUx1SldoNnh4ODVpZ0NqdWEyZlBhek5xbVptYUtySTZMcW9XUVBET0w5Z3RiTm8vVVFyYXdHL2RISWFQVzBXZ3RRYW8xT05hVldrWk5Vemt6Z3lGMzZCMGtjVUxZMENqZm5zY2M2OWZVUWdGK1BCSUpnYzI1dURIRmVDZ1ZKTG5rd3NOZEhRR2RHR1JzUXdTMjFqRkF6aDVYNEFkbmFLKy9wbG5kM3lkczY1YTg2cEMvYXBVL2J4STlieFk5YXhBOWF4UGVieGZlYXhYZDEzdEdCS2M1TUJJNGNQZzU4aXIvV0NmZVZjT3ZUNlNNZG9ibldFRjBpY1I5dUo2L1BacUNiR3hnTlJyUUFCUXpaVUNsbURTdTd1NlYzVzhTWGE0V25xN2hIeXJrSFN6bVl4RzB1NU80czVHNHJZRGNWc0xmbU1iZmtNVGZsTWpmbU1qZmtNTmZuTU5kbEk2N1YrZEhNQkMzanpVV2Y0b3BNNXB3VSt2ZzQ4akRiWHQwUk9JTEZPZjJhM0x3WTlFM1hBeVdjdlU4ZUNVeVNnNG9OWHJtVVVIZDFTUys1aEx1TDJhdXptWFZwOUJsSmFIVTdsRFhIeDZGMS9DdWNGSHprbzRGWThpZ0hDV2tBT01LT2dMTmkxckRVVGk2MG9TOFk1L2gxUjBBSkZ1ZFFNWUhXcFY2VVRyOVVpNzdwQ3NRMU9SQU9LcmIwWWVYZmplSXZpcmtONmZSSjhlUVJEaElHZEVONnhNVG1NVVpON1V2RXJBTStGTFQ4MUF5cEV3U0xjK2pERThjNXFSL25zUiszU3MycytjTXFDRGNrZXRJR2xiL1hDVEJLUWxaRCszUkFjeHUyR2I4WXY0Y09FNS9hcnpzQ1NoQTVGMDJjbmtqL3BveUw2WlVIUlBPem5GdjI1STZvcjlVTDErVXdLMkpKMU9Mb1JQZHBlcjlEd2dTSW9IQU8ranNTaWpueW9qVG1aWmVRTTZKUVpsK1dnNUc2aGxJL2JKRTI1Yk1ueGxGejlYZWN0aE05eEFrZTV4YlpTSmhTd1J5K2xsSkZHQWpOQzlVekJvblQyaXMvWE1hdFRxVG13OXNaSTR2ZllXQ21odWwzYnR5QVpiSGs3UVhzcmk2NW16ZjVMaEpHUVJQVk54dkVIMll4aTIzZTJoSG50bWtqU0p5YkUwMmNHRTg5V01vNSt4WEM3S3NrZllJVzFTUC91b3cvUFpIU2MrcVV6OVF3dmt5L2MzcVNXMkFsejBxbWYxL0ZaNCtvZ3FscnVqeWVzVHBLZmJ0WnZENkhSVStRZ3JlRFNzN3ZHREJUU1pBNHQ4Uk9YcHhPLzZWV2dFSFExRnB1REVyRDNCSGxEOVg4ZWFrMGxJekcyL2tmQTJZcW1YN25JT3RFRTBjNXlLdXltSDgxQ2k3SzVKV3JidG5qNkpmdjEyL1hRWnMxZzNCNFlKMWVnc1M1RlU3eXBsem0vUmFoaVRIVE9VaVpYYnkyclZQYWxNZUMxcFBYUi95T0FUT1ZUTE56cUtKSFAxZnE5eTk5MFNhMmMyYk9XU1Z0ckk1V1AyZ1JyODVpRnFJWkt4WXVDQWdTNTA2T0p6Y1hzWkNRdWdVem5XUFZNU2dRdHpTS2wyYlFhRHQ2N0Z3d0VBVE9vU3NYcXhNb0tMbkN1K1UrVTcvMUloVlB6b2p5Y3Exd1lScU4zZzVmSlFrR2dzUzUweE9waDBxNXFCNTUwRlRuUm1WUDJwRHl4eHIrM0JRS3ZSMTJMaGlZZnVjaWtBZG5KRkdQbEhQV1BubklWT2VHSlUvaW9QeDBGWGQyOHZqVllMOER3RXc5UWVMY21pVHEwWExPWnJaejhHcHhBL0tUbGR5WjJMbmdJWGljZTZ3YzNSNXNybk13VWp2NzVTY3F1RFhZdWVCaDF1YzVjTzVKN0Z4UUVTUnpDS2puakxzMXpaMURESXVlK0FINWQzaHNEU3FDeExuVDlIbHJaSS9KZHdpUFNKNlVRZlJsNjFxWXQyTG5nb1FnY1c1MUF2WExFaTZzVys0VnpIU09rRDFadzhxTEx2NzgxUEhyYzc3dmpwa1dnc1M1aytPcHpVWGN0azZwaXpmemV3aEc4UlM3MVgvV0N4dlNHZnc5UkxBUUpNNmg3MXNMMkMvYXhUWlRkMFFYVlU4dHJiN2JMRjZWeGFCbHcrQWN2cEZwMmdrQzU5RFBGVTYwaDZ2cDk1V29uckZPWHR2YU1YNWZpWEh6SEU1MTAwdVFPSGUwZnYvY0d3RzRmdzVLdXRnKytVSDljWkhlNVY3WXVlbGxtcDBEOU55ejFJYnVFLzVybmZuM0NVdmFXT0dvK3FKTHVDaU5XWUx2RXc0R2dzUzVCVmJ5N0dUcW1XbytaMFFCUzh5TlZsYjdiN3QwUndGN0F0cE5rckJFNEZRM3JVeS9jOUQ5K3Jxdkh5U1FENWR4Q1FPeTZRdXEzYkluWTFoK3ljWEQ3QlV0aVFEbmNGVTNqUVNKYzhEeVdQTE9RamE4UitvVFRWN2ZLbXNlbUVsRTlraVBsSE5uSmRPTDRVMVJ0ak4ydmhuM3o4RDN3REFCWXZxZEE2Q3pJNG1sZHJSUitpZHRZaU9yU3FidUlReXZKV3Jvb3NuL090RGV1ZWNtVS9CZWh1aGU1d3dtek1QeUJaVGdjVzYrbGJ3MGcvNUhnMUJNS0d3QU5uV2xGVThscVg3VklUMVp5VjJkelp5ZVNCM25wR0R1TXQ4NGdDZzk1M2t4VXVDQm1maWZUV0pDL2UvS3hIbGk0TnV3d1VuUU9PZUdrZzZtRVU5Vjh2RUQ4b2pwOHdnOTJ6R0twNUhSNGdia3Q1ckZ4OHI1Vy9QWWk5T1kwNUI4NUpFT1lxRU5QU01BN2Y1bmRKNWYxODRJWm9SMndlTWNOTm1xT09ybmhlelhIVktucWF1L2ZBUG1KME9TVmtHcTlqNzV3eGJwTHk3aHNRcHVjeEhhdy9XSDJjeWxHY3lGYWN3NUtkU2FaR3AxSXRwNTg4UjRhbVVjZFh3Y0NWNGVxN1BDREtCNEJZN1JXYVp6dEFOeGxBN2EwMVBmMWhQdGhtbER1MkV1QVd6RVlodXh5RVlzdEtKblBTNndFcENoNThYczZ5U1p5TVRCYVdGUU9BZm9qUVhOZldVbTgzcURBSU5nNExaTWh4Zm1WTStnNEdsaXRCSzNtaklvdy9RQ3h0ejNXOFF0RGNMTHRjSnoxZnlURmR5dnl6Z28vdTR1OXU0dC9KTjg5c2Q1N0MxNTdNMjVpSnR5MFNiRDM1c2JjNW5yZ1J6bTJoenZIcjlYWnpFL3pHS3V5cVN2ektRM1p0S1haOUpRYVZ5YVRsK1NSbCtVUnE5UG95OUlvODVQcGM1Tm9kWW1VMmNsVVdja1VhY21VajlJb0ZicCs5R0N3V0RxSWp1eTBPdlp4SGlObmRzMzBDNVJjUHFTMEpTL3JlREFBMGJ4dm5WQUE4eUcybkZJUlB2ejE5Rm9BL1hjRVRWMVNISDJ5OUc5VWxpM3RMMEw2YWh2b0M1OTFDcDkyQ3A5MEFKMlN1KzFpSWZDdS9yKzVmOXBFdDlxRXYvZEtMN1pLUDZyVWR6U0tNTDU5czhHNGRVRzRlLzF3aXQxd2w5ckJjakVMN3FFUDdtRUYycjRQMWJ6ejFieHY2K0NVNEovdklML1RUbjNFSndZcGR6ZFJkd2RhTHR0OXBwc1prTTZ5dE0vU0VRV0xyYVIzcTBMZ2txK0lISXVHbDJsZzFIbXAvbG9vV3NucnltQkdtRDNFU0NmcUtIOTFFblpNeXFCaFo1K1Fldmh0UzVlYTljZkY5SENhSkFYb1J4czBLay9OT3BvaEl0QzFGQmF0VTRWcFZVU1NnV2hsQk5LR2FHVUVrcUpXeWwySzRXalNzR29raitxNUkwcTJTTks1ckNTUHFUQWlaRTBLRVB0NjBDbmh3eW5COVFrSDdXQ3RlTHoxZndEcGR5Tk9jeTZWQnBTSUxxNVlVSTd2MmFmRm9MRk9RQzBpMFJseW9aMCt0VTZBVnA1YWxKZFVJWEhnOUQwbjhZdmNESVlEK1VCWlAzRUVBQVZ5Z04waHNCa25GVFFTVElnb05PalNYL1dCUmdaM2kxREtuMjJtcit6a0lVeCt1UjRWQlJPNXJ6cFRYaEI1QndBSlVnMGNVb0Myb2d1dkZ2cU1YVk4vNndQYUN4Wjg0Q0lvR0EzcjlWU1dzYVFzcXRMZ2hQNDNtS1lvZE13ZDBFN3hFL01MWHhiZmlvSk91ZGdKbUdIbVFUOWozb2VCcGZBelNSQ0lYalYweWQ0aWtiVkhaMFNsSU13QVZxVGhIYUw5eWE4NmRJdXVKelRNLzk4OU4wcmRYOEpDMlVLMUZXbWZpVVJpa0hMSGloSlljRDlvRVY4cUpTN01JMyt4cTJFVTI5ZWNEbG5OQUY2dENGNVJRYjlXcjBBRlRSajlsZitvUmxnWGkydFFzVUMwOTRyTXBubHNSUWFadzN6Zkx0Z0NnZ3U1d3dpaVRsUmFJWEVQVVhzMWs2cFBRRFBKd25OZ1BJWUd0UGVwL3k1UnJncWEvd2hHVk9mN1lMUk9iMGhJTlZka0VvL1U4VW5EOGltNzJvZHNnRVQ0VjdCa3pRZ3YrUVMvaStMV2VhWWp0b3VHSjNUVHp0b2k2Tmp5ZXR5bVA4MGlaV2t5dUhaaEVrQjdUZ2dhSEg5OG5NMS9JWjArb2lKMnM2dkZ3SkhNRHBub0xmQzZnVHFubUx1cXc2cGtkYXdkV1lGVE1zNk9jM2FoM1p5T1RlRldtREZlYzVBUC9rV1c4bHpVdWpIS2ppWXcvYUpIbHpabVJXeU50YkthWEF5Lzd5UVBTbWVtZy9hVGRrSUc3ek82U01zTk1UaGRuSkRCdjE4alpBMHFQU0wrTXFKYWNHcmFNSDVsZ2J4Mm16RysrU01xUmxoZzljNUFKelRyeEl2aXlXaDRIMjVUa2dkVW9ZRGNHdGR5TWF3NUVrWVVINWZ5YTlOcGhmRTZOcE5RYW9MYXVjQVBkWEJmR0tGazd3MmgzbTFuczhZa29mTXZYVTloRVB4akRXejJ1ZHQwby96MkJWT2ZSdWhLZEF1MkowRGpJWkFUeFFtcjgybS8xYkhKdzhxZllMSDNHV3dJUnVzNnNrWVZwNnQ0dGVsMGd0dHhpTTBBcnlUMEF4d0R0Q2RteHRESE90RXo5dDh5U1hBVkI5bVhwTEphLzVETWVETWJXUzBUOXFrbitheng4VlJxS2tqc1hQQWVLcURVeEFHMlNzeUdEZ3Z3N3NsRjZYU2dYaHVmNGlGVy9MQTBQRk1GYjgyaGRhMzE4RE9HVUJiNk9aQnRqdktUcTVQb3g0dVpUOXJFNHRHMVNGOERlWFFBb2FMT2twN3IxbThKcHRkWXF6Q05GcmJyd3ZNWXNZNFo2QnJCeWZpWWh0eFpoSjFSeUh6ejNyQjJxdTRLQTNNd3pjRGZNL3dqSTJJbnVoZStkNWlibVU4TmM4UURqczNDYlNGZm12blFpdHhZang1UlNielNCbi9RWXNFb3dOTXdRZ1p6eTIrVDRqYVdJNyt4RkdZU1N3TzlFNUNNODg1d0RnTDBSRGdYbW9uejBxaWI4MWpuNjBXUG0wVDQvcVZja0p0NTdSaEVkMHhpelBmUVFhMFV5MnQvcWRKdkM0bjhOZUhaNlJ6Z09FYzBnNFNIbHAyZW00S2ZXTXU4NXN5RGtiYnJSMVM0b0JTU3FndHJEWWdlQ2pGSTZqb1doUzZySWN0M0U5MDg5ck9MdW0rWXZSVkdHcll3TTBrWnFwekV4am1SYUdseFVjNXlETVNxZi9MWkRZWHNrOVg4YTgxaUorMlNXSGRzck5mVGg5QzY2WktDYVdLVkdvcHRIeXJsVVByQzZHaGV3V3RYL0FNaUo1QjBRUFpjVVJDNndsZ0tnZkRORURxVURxMHZ1YkZGK2I3QWprWTRGUUVyNkkxTlRDNlNScGFaYVBxUzIrbVB1Q0RKdzBxMEc1bko5UG9CaWZzM0g2WlNIaEFORnJnRHVhdGlpUFBTcVkyWkREWDViSjNGSEFQbEhKUFZQRFAxL0N2MUFsYkdvUzNtOFFQVzhVdjJ0SGlQRGl6OS9SSVVEN2IrdVRZZmptaFgwNGFrRk1HMFdLK3pHRWxXeWQzV01rZlVZR0NVVVNoRzFIMGZTa20xQkpDaFJ4Y1JxaFFCbFFTYWhXcHVpZ1ZocllHR2lWbU9CTjZlRzFRMU55eXhxcWVLYnNXeENwamNHRC9iQkEyWk5DQi9jcC94anZueTRSOGVudk5zNks5bmxiRVVpZkhVekRKUFQrTnVqU0R2aXFMdmo2SHVUV1B1YTJBdmF1UXZhOFlHZm5yTXU3UmN2Q1MrMTBsOTB3VjkxdzEvM3cxLzJjWC82S0xmOG5Gdit6aVg2a1YvZ2JVSVY2dG4rUWYzeDNvVkdqcjF4dUVmelVJYnpRS2J6WUtieldKN3pTamhkWWZ0WXFmdDB0ZnRrdmJPNldJSHNuV0R4TWpHZEl6Sk9aZVhvUHNHTkQ4QjFrVzB2L0hiUktVZEl2dDJMbURaQ0xub2QwNjBBWW82RitpMFNVOXlIK0xiY1FSZHJRbkNOVElVUDhkNzBUcDhLUUV0UDNDNmtUcXRFUnFUUklGMlhGdE1uVk9DblZlQ3JVdUZlM1ZjRUVxZFdFcXRUNk51UWhJUjF5c2M4bjNCYkl2Y0drR2Mxa0djM2ttc3pHVGdhazMxQU0vekdaK2xNUGNrTXZjbk12OEpKKzVFODZIRWhiT0JFalBVTnBIOXNnbGJuVkExQUkzSzlKdklkWjJkY3UzRjdETFlCcGhOR1lndEp0Vnp2bWhDK2UxOENBeC9zUkFmeEVvRXlleEl1WWVHcEI5QVJpOGZJRlRZcUdOV0dRbmxqcUl3eDFRSGhETG5TVDB5cW1KMVBrcDlIWFp6RU9sM0w4YVJTaE1teGd0Y0xkTVEvM3E2SmNmS0dGUGpBdmtQZXV6MlRsZ1FpQmZzU0lOak0yTERwS0p2eklWMytQeEhoNmtad04wMlBOajBGMnJ5Mk9SZkpBSVllamYwU1hWMFNvWG1IUUhVeGtvWktIR09DT0o4dDdhQlBnMTZhRXp5NTM3Zmt5WU9sMTQvZE1aMXhGcTAzVXAxTU5sM0s0dXFZVlJBekczVUxTeGdsSGxoUnIwcUNwdzNYc0FmbzF6NkdEbmdvdDl5Z2Zhb2QyUGlTVldZbDBLRGJPYytINFphanZWN05zSTRlWEtTUlhtU1plbE0xRDdZdWRDRzhPL0NIU24valZaekw4YUE3WGF2SVpTWVRaOXRiNE1FVHNYOG9CMmU1QUVxeE9vQjBxNFBkMVNyNm5QNHpPaWdVWTNtTnlZTTc3aUdsS3MzMkVjT3RpNW1ZUmUyeDJsUDZkcVM2TlFUWnI4ekNDSUZrYjd0Rlg4U1I1ekF2UTRkZzZESkloQ2sxbVlWejVaeWNFYzAvVHJKaDJjOW1XN2RHY0JjMkxnN2huR3pzMGtqS291R2kwTjJWekU2by8xTnZuNUxkMjh0cjFUdXFlSVBUbHczL1JqNTJZWStuaTMxRTdlbE10ODBTNjFzS3BzNnV5MVY5REN1dVZmbG5DbkpJdzdCNkw3SGNNaGdwMmJZWUFCa1dpejc2c3ltYmVieENwUzVVMGRYdnNFTGFKSGZyQ1VnNWtLZGc2amc1eHp6NDBoTnFUUi82Z1RDa2NWMnRRckp2MmlGdFVyUDFUR25XbzRGNEdkdytqT3pZa2hMa2lsWDNJSldjTUtZZW8zRWxBZ1J2ZktENWR4cHlWaTV6QUd1blB3ODl3VTZybHFQblZRSGpWMWM3NUo1NUwwWmYzWU9jeUVjMnVUcVdlcStDVDBiRFJUeDFaaGZHdzFuTVAxSEdiQ2c3T1RxZDlYOG9uOThyRFp6a1gyeUwrQ09RU01yZGc1RE1Md0lJWlltMEk5WGNVbm1wM25ZTjY2cDF0K0FGOHJ3VXd5N2h6VWMzK281bFBNcnVkNmVXMVhsM3hmTWZjRDdCekdpKzRjekZ2UFQ2UC83Qkl5eko2M2RuSGF0azVwYzFFZ1Z4eGk1MllZdW5Oelk0aUwwK2xYNm9TOFVjWGNYWUxhV2UyLzdkTHRoZXhLL0gwcnhndHlqcGh2SlRkbU1XODBpZVdreWZlcE56UGFSNjNpcmZuTWNkRGp5TG05RHVEUXdjN05NSFRuRnRuSmEzT1pqMXZGQmthVlRMMmZxWTdXM200U3I4dGxsdVA3NXpBSUVBNDgwRGRZaHVGdlo1ZlV3MnRtS3VjWnF5TFYxeHVFSzdPWXlXZUMrUjNEb1lPZG0wbm96czJKSms1T0lCOHFZK01IWk5MVVlnNzBMWEdyZjNFSkY2Y3hTd08zT3hOMmJpYWhTN0RZUmw2WUNwTld2dEN0S0tZT3JKSytJOWd6VmZ3NXlmUkNZL3NJN0Z4SW8xZHlJQUZVOTV2eTJFOWF4V2JXNVAyVWFXVXNjVkQ1VFJtL09vR2FQejZPK3gvR29ZT2RteGtZQmtTZ2ZURE9UYUdmcnVKZ1lEWDNVUm1RTUlkRVQxU3Z2TG1ZQTYzbkdNTEIrL29keWFHRG5RdGVvTDhOb084aHcrbVBHRDNPU2QxUndQNjNYV3lnTmNIVWdWWDFqTFZ6MnBjZDBpMzU3T1NENTdCem9ZVmhteUZjQlBwbG1RTTlEK2pWZWlGdkJOMnFhZTVLQ0RDNG1sTGZiaGJoTFE2ejZXOGFDT0dBb0hOdTRzekdHRVFUODZLSnhWWmlaVHgxVFRZRFU0ZUVBYmxQTUg5bEsweUJzMGVVbDF6QytXbjBISmhBaElwemhtMlJ2cHZUekFvaTlzTDNQMDM4RHZpb0JpeXdvdjNMVG9vbkwwcWpmMTdFUWljbERzamR2Q2Ficnh4NnFLdTFWMzZrWEw5YkUvb0NuUFB0R2hNSkt1Zm1XZ25JNm92c3hCSTdPYXV3VGJMVXJ1TWdEM2VRVURZZDZTQ1BpaVdYeFpMTDQ4aGo0OGdUNHFrVDQ5RitlR3VTcUhOVHFFdlM2UjlsTS9jVXN5KzRlS2kwQ3R6S0lOcW14TnNwNWtZTG8zM1dKdjIwZ0QwdVR0OThMaFNjZzN4K3BJTTRKWkc2SUkyK0xKTytRdWZ5V2NIR0RNUVZtY3lWT3NZT2h6QlFYbWRzY3BqSGJNcG5iaTlrN3lwaWYxSEMvYXFVZTd5Q2Y3b0s3Zks1cFVINHFGVU03NUV5aDVWR1ZpTUR0dU1oZUZ4R3FIK3ZFeTdQWUE1M0dLT05md2VaUnJBNHAyL0Zla29pV3JiNVJDWDNjaDF2N0lRS3JUQUxlRlVIYmV4YWp6WjJCWlBlYUJUKzNTUzgweXkrM3lwKzNDcCszaVpDR3R2WkpVWDB5TFplT1dGQXlSaFdpa1lWRjRXZU96QWtlVGdWYVJHNFFGZm1CcFJIeXZqVEUrbkRBbmMxMkNBb25OUExPS2hkTGt5ajRmemUxUzFCTVZ2c1JoU09LZ1V6bjBLM1VvUlFpOTNlRGF6TENiV0NSTHRYMTR6dlh0M01hcUJYRjYvQi9HQklSRnUyYzZwSG1aS0hoa0wyaFBmOXVsUGFsTThlSFJ2SUhUWU5nc1U1Zlowd3pOTC8zU1JDa29jNWxLVHZYUStJc3d2alE4RWt3QUQ2MndEU21LWURsazJGYUQ1Qkt4NDRKVjZ0Rnk3Sm9OR3orUU1xSEJCVXprR0pBK1ZMQ3h1QVdSbU8vVWN2V3JzdlFSMEp4YlF4NXZoM2tMa0VsWE0vekdMZWF4SHJhRlUyOVFvN2pnTUVETi9scEFJbDV0Vlp6TkdCdTMvSmw2Qnk3cW9zQnNwcUtISE0zWU1EeC80Q1dubEUwcXg5S01tdFRxQVdRRjlnNTNBRU5GZ1ZrcHo2WnFOd1ZSYTlkT0k1SklCZkI1a0xkaTZVbzVOREt3dTlPMy9wdllDZHd4SEFJR1V0WTBoNW9VYTRKSjA1UEhDN3BPOE5kaTQwUTFEUlhTUXdZN3N4bHpuV1NhTEg4QnNEcTEvWEJBTHNYQWlHb25tYUdHMTdsM1IvQ1hkcUlqVXZadnpaYUg3OUVpQ3djNkVXaWdkdEdoelZJLysyZ2o4dmxkWWZZYWc3NTljcGdRTTdGMUtoalkzMThKNjRmdm01YW41REJzeFY5VnRJRFB3NkpYQmc1MEluSk0zVHlXdU9maG5tRFZkazBnRjgwczJCd2M2RlNJamFXQXVyUnZkS3oxYnpHek9aWmJIajh3YnNISGJPOUlBQ3ppMTVLZ2gxVzZmMFpBVjNTVG85K1IwWHREemcxeDJCQmpzM3UwUFcwSVhmdENIbFAwM2lQY1hzdWxUcUNJZTN3YWZCTmdQczNLd01hRDlHOGNEOHRNU3Q3dXFTLytRU2JzcGxUa21nRnRxbUw3MU5nSjJiZlNHb3lMWml0eHJlSmIxYUw5eFR6RjJjVGg4WFI4NkhwcDRZVW4zYmY0b0pLdWV1em1JK2FFSDdXMmxUY24vczdBZzRQU1VOZlZ0UHlKNWVRYXVuMVp3UlpYZVhCRDM2UUFtM01aTmVGVStpOUFhTkRMYjV0ZnkwRUZUT1haUEZmTmdpTmpFbWI4TXgrMExUOTdPQjBYTlU4dlR3V2lPamxSQnE4cUM4dTF0NnUxbDRyb2JmWE1SZW1jbWNsa2dkNmREdk5aOVl4ZWpYOHROQ1VEbTNNWU41clY2QTA3UlAwTnl5QnhpV1pqVWlZa2huVUdkQVFQVHA5QXJnazZlTDk4QWtvSjNUV2xtdGlVVnB6RVdwNVNSYVpwRStKRHY3NWJCdTZkTTJjVXVqOEV3MWYyOHhlMDAydlRhRlBzNEpwZHY0OWQ1cEgwejlDQXJuQVAyeHBPZWtVTDh1NHo1b0ZhTjY1ZGgraEsxdk5tUHRSY1QweXRHOWNsUVBJcUpiMnRNdFFicmExU1h0NkpTMmRrcGZkVWovYlJjL2F4TS9haEhmYXhGaCt2bDZnL2hLSGY5OERmOVVKZmRRR1hkWEVYdHpIbnRsRm5OZUtnMnpoR1d4cEhmaEZzeE1qZlJtbU9mWDROTklzRGdYVGN5TEllQTRMczlrN2l4aUh5N2pIaTFIZ0lLekdQaVlCcURPcjBxNUIwdTUrMHZZWDVhd2tLN3VMbUx2S21SL1ZzRGVWc0QrSkorOUpZKzlNWWU5TnB1OUtwTzVMSU5abjBhdlRhWmg2RnlWUUVIWEhPNUFGZHRjdlJtOUJLRnFFd1NMY3pIRW5CaGlzWjA0Tm80OEpaRTZJNGs2TXhteEptazJBeC9UNEhRZ2tRS0hUazFFaS9naFhmMGdnVHBKWDlPL01vNkM3am5PU2E3UWwvc2Y1U0FQdDVPTGJHaFlnQmJ6Nm1Xa05DL0JONWo2RVR6T0dVQTdBbkRLaGhUR3AwWkVmd052cnRvbklKYUIzNzhEZTdWcWNCRmN6a0Y3b2JOV1AxLzk5cElKYWZSTU5pSFpCRE5GTWorQ0xjOU50aVBtd1BpMTJ3d2k2SnpEekhxd2M1aXBCanVIbVdxd2M1aXA1cUNkbzdCekdITXduSXVuWG1zUXZYcjVoSTl6c2FRbFpjd1N5L3YvUFFielhRSG5VaURQRWE4ZjJMa1ZEcmNsMllPZHc1Z0FqSlpKbmxYTzBTMzF2RmN2bjVoMGJxVjFBT25wNEN4V3ltSWwvVjhGZ3prWXdCendKNVlEN1ZZN0J0K3NwYjE2K2NTa2M2ZEZkVmlpUmkwMkJnRi81dmRhR016QllLTXNOdHBpcHkyUkkydXRuZS9XakhyMThvbEo1eTdhVXpkL1J6djZNMGgxOEdlK0w0VEJIQ1JnbTRPMVJMc1AyOUcyTWFyK2krcCtyMTQrTWVuY3JlRWx5NzUyellrYXRzUkpGanZqLzFvWXpNSGdZQ3h4NHB5SXdSVmYxOXdSV1JwUjFlSFZ5eWNtbmZ0dFpPN1oyOG9XUnZSYjRpV2tLaTdwTU44VmNBYk1pUk1YaGZlZXQ3WDBtWmk4dE9wbXIxNCtNZW5jTy9GNU40YVZIQlBXZ1pJYy9DVWFYckYybUlNR2hBTm5kSE5XN0c3OWNWalJSNG41cnBaMnIxNCtNZW1jczZEeXQ3YVNzM2JYelEvdjlRcUxaeEtZZzhjUUxvWmNzTHZuM04ydVp4d2x5U1ZWUThNalhyMThZdEs1dXRhT0Q5UExidzByV2JHdHpoSXhhSW1YMFdRQ3B6ck1RVUdpSzd0UWxZWDNINyt0OXJidzRpK3lLcHM3dWlSSjh1cmxFNVBPRVNTWlZsNzdKMnZ1SlR0S2w0UjN3NmlNWGdWZnE4TjhLMkFJZU9JVUxISEM0V0VkRzNlVy9OV2VtMU5WVDlQN3VEZ0hNZW1jcXFvZG5WMlJPYVdQeGhTdURhczlMS0lQWlVzbm1LZGZPc0htWWZiR3FPSDBLOEFXRzdWd1Q4KzZzSnFuYklYMi9QS2VubDdQZnBiTlR6b0hJUWhDUTJ2N2w1bGw5MFlVbkxhamVrRjRIN3B1Z2k2ZFFHR0lhenZNWG9BVjRBWVk0aFFYaHZldTJWNzVZRlRCOXV5eWxvNHVVZHpITjYxR2ZNTTVDSlpsS3hwYVBrMHB1aSt5Y08zdXVxWGgzWE1qaDFIbWhOb09RUEpCemdQL2NOb0xTWXhoMUpndUdFcFlxWGxSdzRlSGRhMExxMzB3c3ZETGpPS2E1alpJWGw2ZjloWCt6a0ZRRkZYWjJQcFZadm1qMFlVYmRwUWV2N054YmxndnVvQUNGU0lZRFcrRGg5cVFCUTJtREJwTWpRSFF4c3piM2IxeVI4UEduYVZQV2d1M1o1ZTdXdG9aaHZHYXRKL1loM01RSE1jMXRMUkg1NWE5YU0vYnRLZjA3TEM2NVdIdGg0WDNXdllNV3FMZDNuZUZJUnlxUFV3SUllZ1pod0VINWtRTXdtQzZmSGZiT2J0cmI5c0RrNFk4cU9HYTJ6c1BuT0dNMkxkekVEQWVkM1YzcDFmV2ZaeFo4WlNqNU9hdzRyVmJTNWQvN1pxN3RRWGRDZ0JIa0R5Rzd2SEVoQTdRNDlEdmtjUHp0N1VjdTlWMTNyYXlXOE9LbjNhVWZKWlprVlZWMzlQVHM4OHJJM3ZIZnAyRDBEU05KTW42MXZiNG9vcjNFd3VlaXM3N2FVVFpaVkVOWjF1N1RuRU1ybks2VDNBU0oraHIwREd6SFFyNkducDh0V053cmJWelkxVDk3UkdsVDhma2Y1aVVuMVJjMmRUZUNmVVkyT0wxNXR2aVFNNFpJY3Z5NE9CZ2RWTnJTblZ6V0dYNzU5VUQ3N3JjYjlZeFcrcjUxNEFHOUNod3pPeW5ub2NlLzNjZDgyN042QmZWL1h1cTJ0TnFtbDNOclVORFE0cWllRjA1dVBoMjUzRGdNRGV3Y3ppbU5zYkcvaCs5UDcrS2ZLTytSZ0FBQUFCSlJVNUVya0pnZ2c9PSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIlUyRl9WMiIsIkZJRE9fMl8wIiwiRklET18yXzEiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImNyZWRCbG9iIiwibWluUGluTGVuZ3RoIiwiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiZTQwMGVmOGM3MTFkNDY5MmFmNDY3ZjJjZjdkYTIzYWQiLCJvcHRpb25zIjp7InJrIjp0cnVlLCJjbGllbnRQaW4iOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJlcCI6ZmFsc2UsImF1dGhuckNmZyI6dHJ1ZSwiY3JlZE1nbXQiOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6dHJ1ZSwiYWx3YXlzVXYiOmZhbHNlfSwibWF4TXNnU2l6ZSI6ODk2LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxLDJdLCJ0cmFuc3BvcnRzIjpbInVzYiIsIm5mYyJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XSwiZm9yY2VQSU5DaGFuZ2UiOmZhbHNlLCJtaW5QSU5MZW5ndGgiOjQsImZpcm13YXJlVmVyc2lvbiI6MSwibWF4Q3JlZEJsb2JMZW5ndGgiOjMyLCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6OCwidXZNb2RhbGl0eSI6MjA0OSwicmVtYWluaW5nRGlzY292ZXJhYmxlQ3JlZGVudGlhbHMiOjMwMH19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMiIsImVmZmVjdGl2ZURhdGUiOiIyMDI2LTAzLTIwIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiU3dpc3NiaXQgaVNoaWVsZCBLZXkgMiBFbnRlcnByaXNlIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNjAzMjAwMDQiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblByb2ZpbGVzIjpbImVudGVycHJpc2UiXSwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wMi0yNyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJjZXJ0aWZpY2F0aW9uRGVzY3JpcHRvciI6IlN3aXNzYml0IGlTaGllbGQgS2V5IDIgRW50ZXJwcmlzZSIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjUwMjI3MDA0IiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDItMjciLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MX1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNi0wMy0yMCJ9LHsiYWFndWlkIjoiODdjMTMxNzctODVkNi00MGFjLThjNjEtZmU3YWIzZGU5ZGZiIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI4N2MxMzE3Ny04NWQ2LTQwYWMtOGM2MS1mZTdhYjNkZTlkZmIiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiSElEIENyZXNjZW5kbyBLZXkgVjMifSwiZGVzY3JpcHRpb24iOiJISUQgQ3Jlc2NlbmRvIEtleSBWMyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyNjI2NTYsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjoxfSx7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQytqQ0NBcUdnQXdJQkFnSVVkaEVnNVkvWDJLWjV2b3dUK3ZmMWxaZEpnYmN3Q2dZSUtvWkl6ajBFQXdJd2F6RUxNQWtHQTFVRUJoTUNWVk14RXpBUkJnTlZCQW9NQ2toSlJDQkhiRzlpWVd3eElqQWdCZ05WQkFzTUdVRjFkR2hsYm5ScFkyRjBiM0lnUVhSMFpYTjBZWFJwYjI0eEl6QWhCZ05WQkFNTUdrWkpSRThnUVhSMFpYTjBZWFJwYjI0Z1VtOXZkQ0JEUVNBeU1CNFhEVEkwTVRBek1ERTRNVFUwTjFvWERUUTVNVEF6TURFNE1UVTBOMW93WmpFTE1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBb01Da2hKUkNCSGJHOWlZV3d4SWpBZ0JnTlZCQXNNR1VGMWRHaGxiblJwWTJGMGIzSWdRWFIwWlhOMFlYUnBiMjR4SGpBY0JnTlZCQU1NRlVaSlJFOGdRWFIwWlhOMFlYUnBiMjRnUTBFZ09EQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJPdkYyZUlqbWcvdmRnMlNNN2hWWnpMak9NSWVWb21ZVmRyUmFWb2dwdVRMQzdLT3dIdXVCbVg0bVM3aitQNlllUFdvVTdzeUlXUlU4RndBYUFQTnk2cWpnZ0VtTUlJQklqQU9CZ05WSFE4QkFmOEVCQU1DQVlZd0VnWURWUjBUQVFIL0JBZ3dCZ0VCL3dJQkFEQWZCZ05WSFNNRUdEQVdnQlM3NkRwbDkzdkIyaDVGREx2eU1NdlVCeWozaXpBZEJnTlZIUTRFRmdRVWZ1VERodWtBVTdKcG5wdzRxY1pjdk9YTU1Tb3dSQVlEVlIwZkJEMHdPekE1b0RlZ05ZWXphSFIwY0RvdkwyTnliQzVvZVdSeVlXNTBhV1F1WTI5dEwwWkpSRTlCZEhSbGMzUmhkR2x2YmxKdmIzUkRRVEl1WTNKc01IWUdDQ3NHQVFVRkJ3RUJCR293YURBL0JnZ3JCZ0VGQlFjd0FvWXphSFIwY0RvdkwyTnliQzVvZVdSeVlXNTBhV1F1WTI5dEwwWkpSRTlCZEhSbGMzUmhkR2x2YmxKdmIzUkRRVEl1Y0Rkak1DVUdDQ3NHQVFVRkJ6QUJoaGxvZEhSd09pOHZiMk56Y0M1b2VXUnlZVzUwYVdRdVkyOXRNQW9HQ0NxR1NNNDlCQU1DQTBjQU1FUUNJRjNOWTg5OC82emFPQXBab3RreDhNOEw5LzliOTgxYTZpWW13aXRxemdHRUFpQk12alQ1emphTStVZWZwUHJHL2ZseFV4ald5TFZoUmRhV29ZeFVydXJpUmc9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFWTUFBQUNzQ0FZQUFBREcrRThNQUFBQUlHTklVazBBQUhvbEFBQ0Fnd0FBK2Y4QUFJRHBBQUIxTUFBQTZtQUFBRHFZQUFBWGI1SmZ4VVlBQUFBSmNFaFpjd0FBRDJBQUFBOWdBWHA0UlkwQUFBeWdTVVJCVkhoZTdaMS9iSlRsSGNCdmpoak5jQzRPK2RYZVhWdFVUTXppUDdvWVhaWTUxSWtLZDFmTm5GSGo1b2hCbUE3ajJNUnNab2xteGhoTkpvcnQyNEtnc2lGc2ltN1RBZE1ZUkZRRUZUY1Z4dy9yd0FFRlJDaFErdXVlUGMvMXFRUDNUTnMrMzN2ZXUrdm5rM3pTNDJnZm52ZTl0NTgrNzczWEl3RUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVVFcGtHNi9YUHBuSVJSOGdJaDV0NDFyOWNZYXRCZndQOVEzbjZ4MjBUWnRQMURjcFJNVFBOZGVVMTR1dVZ0Mk1xMjFGQmt4dE1qbXJMcFZxMFI4MzExWlgzMnJ2TG1NS1AyMzBqcW1QM0RzTkVmSHp6RVc3RXhmT0dXbUw4b1drazhrZjFxWFNQWFhWcWFYSlVhUE9xS21xT3JNdW1mcHJiVExWblVxbExyZWZWa1pNbVAxMS9aT2x3N2x6RUJFSG9qbXJ6VVpUYlYzK0wzVmp4MDR3SVIwOWV2VEo0MUtwS2RvYmpDTkhqaHcxZHV6WTVMaDBqZEtyMUxQdHA1Y0JKcVNzUmhGUjB0Nmd6clNWY1hHTURxbXFTU1l6K3ZZd0U4NmFxdFMxdGRYcDY4M3R1akZqVWpWams1UDFLclc5OTlQTGdWelU1ZHdaaUlnK21xQmVPcWZPbHVZbzB1bjBjVHFtWGZhUHc4d0sxZDVPNkZQOHQyclQ2VnYwelMrYnNQYmVXK3Jrb28rY093RVJVY0pjZE1EVzVpaXFxNnVQSDVlcTZWdDFGbGFtT3FJNzYxSTEyMDlKMS9SRjlrdmxFZFA2aG04N054NFJVZEpzd3oyMk9wOWlZcXBYbzUzMmoyWmxtai9wcEpPK3FqOTJwOGVNT2QzZWYweDV4RFRYdE0rNTRZaUlrdWFpRGx1ZEkrazloVThuanRPM0N6RTFkNDRZTVdLTXZuM1EzQjQrZXZqSituYmZLcldFNFhXa2lCakt5NXZQc3VYNWxMcFVhbVp0TXIzZjNLNnRUcjVUdUZOVGwwdytXcE5LM2F6L3JxTzJPajNOM2wyaVRJNm1PamNZRWJFWTVwcWV0ZlU1aXJycTFETzF5ZFNCY1ZXcEcreGRpYnFxNUF5ek90WDNMN1IzbFREMTBYTG5CaU1pRnNOY1UrSFUzVVZ5VlBJTUhkV1ZwOVhXcVZOcmF2UDY5dktxRVZXbjJyOHVjZXFqL2M0TlJrUXNocm1vakY0dk9oQ0lLU0tHMUgwUnFnSWdwb2dZVW1LS2lDZ2dNVVZFRkpDWUlpSUtTRXdSRVFVa3BvaUlBaEpUUkVRQmlTa2lvb0RFRkJGUlFHS0tpQ2dnTVVWRUZKQ1lJaUlLU0V3UkVRVWtwb2lJQWhKVFFTOTdXQ1V1ZUVBbExwd2RWdk52NWlMM25BYnI5eDUwLzF2RjlpS3RhejRETWE3SHdEeitydm4weDZ4Ky9PS1lkekUwMjNHUlBuN01NWFNwM2llVEc5M2JYR2tTVXpsdm52dXlpb3ZqcnB6bm5OT2cxQWYvdXMyNzdNaGgyZm5Kb2Q1dlFOZTgrcVArSm82TGFkRXE5NXo2NGRldVhXQkhxUXc2dTN0VVczdW4ycnhqbjFxOVlhZGFzbnF6dXFuNVpYWHlOUXRVNHVLSFZDSlRnWUVscG5LYWI2YTRxSlNZZnJUblFObkc5SWFIWDNMUHFSK2VxQ016Vk5pei83QmE4ZFpXZGVWOXo2dkVCTDJLclpTd0VsTTVpYWsveEhSbzBkblZvNTVkOTZFYWYrTWl2NmRKU2tGaUtpY3g5WWVZRGwzZWJ0bWp6cHUxMU8veGoxTmlLaWN4OVllWXdodGJkcWxUcHVxVnFya281OWhYSlNzeGxaT1kra05Nd3pQcnNUWHF6c1Z2cUx1V3ZLRXlkeTlUdVh1V3ExOHVmTDF3MzcxTDE2c1Y2N2NWTGlhRnBDZWZWNCsrK0UrVnVHQzJjMytWcE1SVVRtTHFEekVOVDJMQ2IvVXFzRkVsTWczL25aTzVLRlM0VHp0SlB4Nlh6bEZWVXhhcUtYTldxby9iRHR1dkxENjcyOXJWTjM2NnhJVHFxUDFWa2hKVE9ZbXBQOFEwUElYWGhqcm01RlJIN1pqSkRlcU8zNisxWDExOHVudDYxQzJQck5iSDVSR3hMMFdKcVp6RTFCOWlHcDRCeGJSUEhiWkpkeSt6STRSaC9ndnZGMWJJenZtVWdzUlVUbUxxRHpFTno2Qmlhc3cwcWgvcjAvNlFQUG5xQjM3SFJ6RWxwbklTVTMrSWFYZ0dIVk5qTmxKLy8zQ1BIU2tNVDcvV1VwcEJKYVp5RWxOL2lHbDR2R0txSGYrVHhYYWtjUHp4RmIxQ0xiWG5VSW1wbk1UVUgySWFIdCtZbXFpOXQyMnZIUzBjUDF2d3FucytjVWxNNVNTbS9oRFQ4SGpITkJlcDgyNS8ybzRXam53K3I4WlBYK3llVXh3U1V6bUpxVC9FTkR6ZU1kVis1YXBIN0doaDJYZXdRMlQrSWhKVE9ZbXBQOFEwUENJeG1tUk85VCt4STRibG1UVXRoZFd4YzE0aEphWnlFbE4vaUdsNFJHS2FqZFF0ODE2eEk0Wm4rRldDeC85Z0phWnlFbE4vaUdsNHBFNlR6NXl4eEk0WW52Yy8ydHY3NjYrT2VRV1RtTXBKVFAwaHB1R1JpdW5vNngrM0k4YkRpT3NlZGM0cm1NUlVUbUxxRHpFTmoxUk1oMTNSYkVlTUIzUE14dnJjS1RHVms1ajZRMHpESXhWVGN4R3FxN3ZiamhxZXJ1NGV1VzBaak1SVVRtTHFEekVOajFpQTlIR3pkbE9ySFRVZWJwMGY0d3Y1aWFtY3hOUWZZaG9lc1pobUd0WENsUnZ0cVBHd2JiYytmdUo2aDM1aUtpY3g5WWVZaGtjc3BqcGl0ejIyeG80YUQrMGRYU294TWFhMzZTT21jaEpUZjRocGVDUmpHdWRyVGZ1STdhbytNWlV6enBoKzUxZC9VdWZPZWxyRWIvNzhLYlVoaGpldU1CRFQ4SWpGTktiZjBmOHN0ejIreGoyL1lrdE01WXd6cHBVQ01RMlBXRXkxNTl5MjFJNGFINnZlM2U2Y1c5RWxwbklTVTMrSWFYZ3FMYVpiNDdvSVJVemxKS2IrRU5Qd1ZGcE10Kzg5MlB1L3Fqcm1WMVNKcVp6RTFCOWlHcDVLaSttdWZlMHFsbmZoSjZaeUVsTi9pR2w0S2kybWhmYzR2Y3pqR0Jxc3hGUk9ZdW9QTVExUHhaM21mOHhwdml6RXRDd2hwdUdwdEpqdTJIdUltSXBDVE1zU1locWVTb3ZwQnp2M203QTU1MWRVaWFtY2NjYlV2TUhFNjBLdTJiaFRIV2p2c2lPSGhaaUdwOUppdW1UMVp1ZmNpaTR4bFRQT21CNXJmaEtiSjkwbHZQZ2g5ZnJHZU43OWg1aUdSeXltSmZJYlVQWDNMSGZQcjlnU1V6bmpqQ20vbTI4bHBnTkdMS1lsOHJ2NXNaemlHNG1wbk1UVUgySWFIc21ZVG8vNXVzSCtRNTI5WjFldStSVmJZaW9uTWZXSG1JWkhMS2FaUnJYb3BVMTIxSGhZMzdLYmxhazR4SFR3RXROQlFVd2IxWXIxMit5bzhYRDJ6S1h1dVlXUW1NcEpUUDBocHVFUmkrbmtCdFg2eVNFN2FuamEydlVwL2lVeHZURzBrWmpLU1V6OUlhYmhrWHpPTkU2ZVdMWEpQYTlRRWxNNWlhay94RFE4VWpFOThacjVkc1R3OVBUazQzbmJ2U01scG5JU1UzK0lhWGlrWW5ycTlDZnNpT0g1eTdwL21aZzU1eFZNWWlvbk1mV0htSVpISktZNlpKZmMrWndkTVN5SE83djFNUlBqYzZWOUVsTTVpYWsveERROElqSE5OS29scTdmWUVjTXlyWEdWZTA2aEphWnlFbE4vaUdsNFJHSWEwOFduVGR2M3hmY2kvYzlLVE9Va3B2NFEwL0JJeEhUOHRFVjJ0SEMwZCtqVGUzMnN1dVlUaThSVVRtTHFEekVOajNkTTlTbiszT2MzMk5IQ1lLN2Vuelh6U2ZkODRwS1l5a2xNL1NHbTRmR042ZkFmekxNamhXUEd2SmVkYzRsVllpb25NZldIbUliSEs2YVRHOVRjdjRWZGxkNitjSTBKbDNzK2NVcE01U1NtL2hEVDhBdzZwdGxJblgvSG4rMG9ZYmlwZVZVOC95VkpmeVNtY2hKVGY0aHBlQVlWMDB5RE92ZjJaK3dJeGFlN0o2OStOUHZGMGx5UjlrbE01U1NtL2hEVDhQUTdwaVprK3JUZUhHdjNQclhlZm5YeE9kamVxY1pOWGVTZVV5bEpUT1VrcHY0UTAvQWt2blYvNzdzdGZkYUpENmxoVnpTckU2K2VyMDYvYWJISzNMMWMvU0h3Qy9PWHZibTFNQS9YUGlzNWlhbWN4TlFmWWdxR2c0YzcxVlgzUDE5WUNidjJWMGxLVE9Va3B2NFEwNkZOUjFlM2Vualp1eXJ4M1FlYys2bWtKYVp5RWxOL2lPblFwTDJ6U3pXdDJOQjdTbC9LRjVrK1QySXFKekgxaDVnT0hmTDV2SHE3WlkrYU1tZWxTbHlnVjZMbEd0RStpYW1jeE5RZllsclpmTngyV0sxNmI0ZTYwYnpUVTdaUkpTWjVQTmFsSmpHVmM5SnZscW5sYjI0dFhJRU02Y3AzL3EyTy9mNWM1NXdHWmFaUlBmanNQNXovVnJIOTNjcU4raHZNNDZMRHhEbnFwWGUzTzhjdXBpdmUycVl1dWVzNTk1ejY0UWxYejFlNzk3ZXJsdGEyaXZETkxidlYyazJ0aFgzejZ5Zldxb2wzUHFkT01EL3dMOWFuOGZxSHRXc2ZsTDNFRkxFRU5LZTQ1dVZJWmxWZTdwcnRNRmZoeStsS3ZJVEVGQkZSUUdLS2lDZ2dNVVZFRkpDWUlpSUtTRXdSRVFVa3BvaUlBaEpUUkVRQmlTa2lvb0RFRkJGUlFHS0tpQ2dnTVVWRUZKQ1lJaUlLU0V3UkVRVWtwb2lJQWhKVFJFUUJLemFtdWFqVnVjR0lpTVh4b0sxUGhaRnRhSEpzTENKaWNjeEZ1Mng5S293cm1zYzdOeGdSc1JobW9sL1krbFFnNWprTTEwWWpJa3FhaS9LMk9oVktydWtGNTRZaklrcWFpM2JZNmxRd3VhamJ1ZkdJaUJMbXRPZmNkN3d0VGdXVGk2WTdkd0Fpb29TNWFKbXR6UkNnUG5yTnVSTVFFWDNNUnEyMk1rT0liT05HNTg1QVJCeU11YVlLZlNsVWY4aEZpL1FPeU91VnFudm5JQ0ora2ViS2ZYM1RXbHVWSVV3Mk9rMnZVbHVKS2lJTzJGeTBONUZ0dXM3V0JBcVlxTlpINi9USGZUcXNuWW42WnIyekVCR1AwS3hDczFHYmJzU1dSS1poZ3EwSEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVCcGtVajhCNEFvbStNYlQrM0pBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiODdjMTMxNzc4NWQ2NDBhYzhjNjFmZTdhYjNkZTlkZmIiLCJvcHRpb25zIjp7InJrIjp0cnVlLCJjbGllbnRQaW4iOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOnRydWUsImFsd2F5c1V2IjpmYWxzZX0sIm1heE1zZ1NpemUiOjUxMCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0IjoxLCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjk0LCJ0cmFuc3BvcnRzIjpbIm5mYyIsInVzYiJdLCJmb3JjZVBJTkNoYW5nZSI6ZmFsc2UsIm1pblBJTkxlbmd0aCI6NCwiZmlybXdhcmVWZXJzaW9uIjoyNjI2NTYsInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjozMH19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDI2LTAxLTE0IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjI2MjY1NiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJISUQgQ3Jlc2NlbmRvIEtleSBWMyIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjYwMTE0MDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25Qcm9maWxlcyI6WyJjb25zdW1lciJdLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNS4wIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDI2LTAxLTE0IiwiYXV0aGVudGljYXRvclZlcnNpb24iOjI2MjY1Nn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyNi0wMi0xMyJ9LHsiYWFndWlkIjoiMWMwODY1MjgtNThkNS1mMjExLTgyM2MtMzU2Nzg2ZTM2MTQwIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiIxYzA4NjUyOC01OGQ1LWYyMTEtODIzYy0zNTY3ODZlMzYxNDAiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiQXRvcyBDYXJkT1MgRklETzIifSwiZGVzY3JpcHRpb24iOiJBdG9zIENhcmRPUyBGSURPMiIsImFsdGVybmF0aXZlRGVzY3JpcHRpb25zIjp7ImRlLURFIjoiQXRvcyBDYXJkT1MgRklETzIifSwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbIm9uX2NoaXAiXSwiY3J5cHRvU3RyZW5ndGgiOjEyOCwiYXR0YWNobWVudEhpbnQiOlsiZXh0ZXJuYWwiLCJ3aXJlZCIsIndpcmVsZXNzIiwibmZjIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlCblRDQ0FVT2dBd0lCQWdJSkFLSUZudEVPUTF0WE1Bb0dDQ3FHU000OUJBTUNNRlF4Q3pBSkJnTlZCQVlUQWtkRk1RMHdDd1lEVlFRS0RBUkJkRzl6TVNJd0lBWURWUVFMREJsQmRYUm9aVzUwYVdOaGRHOXlJRUYwZEdWemRHRjBhVzl1TVJJd0VBWURWUVFEREFsQmRHOXpJSEp2YjNRd0hoY05Nakl3TXpBNE1URXlNREk1V2hjTk16Y3dNekEwTVRFeU1ESTVXakJVTVFzd0NRWURWUVFHRXdKSFJURU5NQXNHQTFVRUNnd0VRWFJ2Y3pFaU1DQUdBMVVFQ3d3WlFYVjBhR1Z1ZEdsallYUnZjaUJCZEhSbGMzUmhkR2x2YmpFU01CQUdBMVVFQXd3SlFYUnZjeUJ5YjI5ME1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRWoyOFVERWNTcUdSVVQxUE1EYXNtajJHZDZCc1RUUzBNMU8yVzlkTTBZRVk5aHJEZ0QvQXN3UlZjUmJ4bnl0M3hkQ1AwS2hJaWVnTklSd1VjVkVKdmV6QUtCZ2dxaGtqT1BRUURBZ05JQURCRkFpRUE2MW1DQ29DbkR4Q2tWQlhEbWhqbUcwMWliZFJXVjYzajVTY1NqQkZuSWtjQ0lFQWQxV3diMWlVeUtCZmpweGsvUi90ME9zcHRQT0lGODd1U2h5M2xYdmJIIiwiTUlJQnNqQ0NBVmlnQXdJQkFnSUpBS0lGbnRFT1ExdFhNQW9HQ0NxR1NNNDlCQU1DTUZReEN6QUpCZ05WQkFZVEFrZEZNUTB3Q3dZRFZRUUtEQVJCZEc5ek1TSXdJQVlEVlFRTERCbEJkWFJvWlc1MGFXTmhkRzl5SUVGMGRHVnpkR0YwYVc5dU1SSXdFQVlEVlFRRERBbEJkRzl6SUhKdmIzUXdIaGNOTWpBd09UQTVNRFl4TkRVNFdoY05NekF3T1RBM01EWXhORFU0V2pCVU1Rc3dDUVlEVlFRR0V3SkhSVEVOTUFzR0ExVUVDZ3dFUVhSdmN6RWlNQ0FHQTFVRUN3d1pRWFYwYUdWdWRHbGpZWFJ2Y2lCQmRIUmxjM1JoZEdsdmJqRVNNQkFHQTFVRUF3d0pRWFJ2Y3lCeWIyOTBNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVwS1IwZjZWZHEwUFlYeEg3SlZNa0d4Tm9NNFhvSEZ1UStlN3FmKzA0UDRKMkdHUzl2WEZMVlFaNWNvRm5SUGZDZmxEQ0xremFmTTNRRWRjWUNWb3lQS01UTUJFd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBS0JnZ3Foa2pPUFFRREFnTklBREJGQWlFQXpYcG93My80eU9YTmJBTG9kTXY1S0lvcm5uNXdSUkkzNllRcHYzV2JoMDBDSUV5MTRTeTdMcmxnSlNaVEcwTWQ1d2pRYnlvVlRmVS8yb1p5cDlFbnBsREwiXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFCS2NBQUFOS0NBWUFBQUJmL1MydkFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFURWxKUkVGVWVOcnMzZDE1RThtMk1PRGE1OW4zeHp1Q3JZbGdUQVNJQ0lBTFh5TVNNQkFCSmdLREU3QzQ5Z1dlQ0JBUllDSVlUUVRqRThIM3FWeXQ4UStTMFYrM3FxdmU5M2tFelA0WnJPcnE3cXJWYTYwT0FRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEWWszOFpBZ0FBQUxqaitHSXcrM1Z3NXo5NStNOXovenY3SEs3NGI1M09Qbjh0K2U4bUQvNzVLcHdkWFRzUTFFSndDZ0FBZ0RyY0JwM21uN3ZCcGZsL2xwc1lwTHE2OCtjZnpaK256U2VFczZPSmcwdWZDVTVSd2czbXEwRmdnVDltTittUGhxSDY2OE5vOXV1cnlrZmgzZXhjdURJWkFLam8vajhJS2NnVWcwNy9iWDZmLzJlbG05NzV4Q3l0ZVdEcjJucUFuUDNiRUZDQW9TRmdnYmo0RUp4aTRCb1JEa3dEQUlwMWZCSHY4M2VEVUxYZjl3ZGhXUkR1K0NMK09nOVdUVU1LWGsyYmp6SkM5a3B3Q2lqM3hueDhjZWdKRVFCQUllTGFMZ1dnZmc4cENIVm9VTloyRUpZRjhJNHZIZ2F1MHArdHArbUE0QlJRc2xmaHRqNGZBSUErU2NHbzRlenp0UGxkTm5DN0ZnZXVVc2JWUEdqMUl3aGEwUUxCS2FCa294RDc3UUFBa0wvVUsybzQrendQZ2xHNW1XZXR2Ymh6dk9LdmQ0TldrNUNDVmxQRHhib0VwNENTSGN4dW1pOW1OOGhMUXdFQWtLSFVNMm9lakZLbTF6OTNnMWJ2bTJNNkx3LzhGbTc3V2NteTRsR0NVMERwNG1KSGNBb0FJQmZ4NFdGYW84WGZaVWVWWjE0ZU9MeHp6T092azVDQ1ZxazBVTUNLT3dTbmdOTEZSYzlyd3dBQXNFY0NVaXdQV01VTXE2dVFBbFpUdzFRbndTbWdkTEcwYnpTNzBZME5CUUJBaDFJUHFUY2hCYVFHQm9RRmh1Rit3Q3FXQkU3Q3ZJZlYyZEhFRU5WQmNBcW9RWHhLTnpZTUFBQXRPNzZJV1ZFeEdCV0RVbnBJc2E3NS9FazlyRzZicmsvQ1BNTktkbFdSQktlQUdyeTRXU2lkSFYwYkNnQ0FGcVFzcWZkQjJSNjdOMis2L3JhWmE5T1FnbFdmWlZhVlEzQUtxRVZjS0kwTkF3REFEcVczN2NXZzFOQmcwSkhCN0RPYWZmNEtLVWhGQVFTbmdGckUxUEt4WVFBQTJJSFkwek1GcFFZR0E5alcveGdDb0JLSFRibzVBQUNiaWtHcDQ0cy9aMzg2RHdKVDdOZVZJU2lIekNtZ0pyRzA3Nk5oQUFCWWswd3A4cU9mYkVFRXA0Q2F2QXFDVXdBQXF4T1VBanFnckErb1NTenQ4MHBqQUlCZmlZM09qeSsrQnVWN1FBZGtUZ0cxaWRsVDZ0TUJBQlpKUFRwUFEycUhBTkFKbVZOQWJTeTBBQUFXT2I0NG1mMzYzWG9KNkpyZ0ZGQ2J3VTJhT2dBQVNTcmhpMi9naTcybERnd0lQVEUxQk9WUTFnZlVLSmIyVFF3REFGQzE0NHNZaUlvQnFiY0dnOTQ1TzVvYWhITEluQUpxSkZVZEFLaGJ5aVNQSlh3Q1U4RGVDVTRCTlRxWUxjZ0VxQUNBT2gxZnhJYm44VTE4QTRNQjVFQlpIMUNyNTdQUHBXRUFBS3FSM3NUM1pmWTVOQmhBVG1ST0FiVWFOWDBXQUFES2w3TEdZeG1md0JTUUhjRXBvR1pLK3dDQThxVXl2cGd4NWNFY3BiZzJCR1ZSMWdmVUxKYjJqUTBEQUZDa2xDVWVnMUpEZzBGaHJneEJXV1JPQVRWNzBmUmVBQUFveS9GRkxOK0xaWHhEZ3dIa1RuQUtxSjNTUGdDZ0xNY1h3K0J0ZkVDUENFNEJ0WHRsQ0FDQVloeGZqRUlLVE9rdkJmU0c0QlJRdTBPbGZRQkFFVkpnNnR4QUFIMGpPQVVRd3NnUUFBQzlKakFGOUpqZ0ZJRFNQZ0NnendTbXFNODNRMUFXd1NtQTJDdzB2ZEVHQUtCZkJLYUFBZ2hPQVNTeXB3Q0FmaEdZQWdvaE9BV1FqQXdCQU5BYkFsTkFRUVNuQUpLRDJTTHZoV0VBQUxLWDFpd0NVMEF4QktjQWJqMDNCQUJBMWxLZlRJRXBvQ2lDVXdDM1pFNEJBUGs2dmppWS9mbzF4SXh2cU52RUVKUkZjQXJnMWtIVHZ3RUFJRWNDVTBDUi9tMEk2TDJ6bzMvdC9XYzR2dmdTWk4yVUlwYjJqUTBEQUpDVjQ0dlQyYStIQmdJb2tjd3AySDZoRUo5ZUNVeVY0MFZ6VEFFQWNsbHZqbWEvdmpVUVFLa0VwMkI3QWxPT0tRQkFPNDR2QnJOZlR3MEVVREpsZmJBOWIzZ3J6NXVndEErZ3BzMy9jS3YvLzluUnhDRFNvdGcrUWxZM1VEVEJLZGh1TVRzSXNteEtkSGh6Yk0rT3BvWUNvSWo3ZGR6WXg4eVR3VC9YK1YxdTlvOHY3djdUOWV4ejFmdzUza2YrdXZPZlhjL3VMVmNPQ0d2TXJaT2d6eFFzNGxwYUdNRXAySTdBVk5uSDlxTmhBQ2pDKzlsbjFOSGZGWU5ldzZYL2JRcGtUWnZQdDMvK0xQdUtuK2ZLWVROM2dZZk9qcTROUWxrRXAyQTdyd3hCMGNkV2NBcWcveHY4K0xBaHQwYlNnK1l6dlBOenhsK25JV1VEZkx2NVhjQ3FkdWVHQUtpRjRCUnN2dGlOaTBwcDF1VTZ2SGxpcWZ3Q29NLzM2b09lYmZBSHplZEY4L1BIWCtOOWFCSlN3R29pVzZDYXVmdldPaE9vaWVBVWJPNk5JU2plcTZDZUhhRFBZbUNxNzQya0Q1dFB5djQ2dnBnSHEvNlFXVldvRkZSVnpnZFVSWEFLTnFmZlZCM0grSjFoQU9qbEJ2OUZvZmZxMjJCVnlxeTZEREZRbGJLcXBnNThFV0x6Zm0vbkE2b2lPQVdiTFhqam9uQmdJSW8zdUhtOXVDZlRBTHU4aDZhRzRXZEhseTMvSGJYMDY3a053cVdzcXM4aEJxd0VxdnA2Zmd4RGQ4MzcyWjFGYThWWWd2dmprZi9QLzRibHBac0RlNDFIdWI0VlNIQUtOcU1SZWwzSGVtSVlBTGJhY01kZ1VReWdQRzkrL3hCU3hrOWJTaWpuMjhROHErcjBUcUJxckU5VnJ5am55OHQ4RGZqdHdUOVBPdzBBcHdmakIzZk84L2puLzczejU5cjZrMDFOemZJSVRzRm1Sb2FnR25FVDlkb3dBR3kwb1lyWDBGZmhmbmxkZkF2ZFNZdC81ekFvdlo5dllPZUJxaGdJL054cXRocTdtcnREQTdFWGs1QUNIajlDNmpkNmxWVlE5LzRMZWlaTDVzL0JuZk0rL3ZucG5UOUQ5djVsQ0dDamhmWVhBMUdWbDFVdjZJOHZScUcvcWVWUExmVERlUGI1eTJtOGRNRi9ZaEIyZnMySTE0djQwcERSa2szUnM5YktwZFBtN0h0UURyUE1kWE5OK0tUc0w4dHo1NnQ3VmlmaTNJL0JudmtiTUs4S24xZnhlbmpZWEpkTG1WL3h1RDB6bGNzaWN3clc5OXdRVkhuTWEzN2EvTXBpdWRkR2h1QlJKNFpnWnh1Z0Z5dHNmaTViN3VNWDMyZzNjRENXT21qR0tEWlRqOGZoZzc2SzJady9RL2ZhVnNWMTNMZFFZeisyOUgyblRXbWdPVWEyQktkZ2ZVb0ZhdHpjSDErODA3TUQ0S2NOOVVGSUFkQVlsQnFzOFA5NDErTFBFdjkrL1hwV043ejVIRi9FaldzTVVvME55VjZadTdzVjEyenBUWmJLV2FFWEJLZGd2WVZ2WElDcjI2NVRERXBhdUFPaysrRWdQRjY2dDhpNDVZeUZjd2RtSTRPYnNUdStPQTJ4M0MrRWp4N0dkSDQrRFlPTWxsMlpCNlNzMmNybUdsVWd3U2xZajVLK3VvKzloUTVRK3laNkVGS0d4MmlELy9jSG0vdXNIVFRIOXMxc1BBV3B1dVV0ME51SjgvUlRhRDhBVGo1K0dJTHlDRTdCNmd2ZitXdXdxZE9MbTAyWlJROVE1ejF3RURZUFNvVWdhNnBQQkttNlgxK09ETVJHNGpWRlNTb1VRbkFLVmljd3hZdWJSVHBBUFJ2blFkZ3VLRFhYWnRaVS9Oa0dEdGJPQ1ZKMTQ2MGhXTnMwQ0VwQmNmN0hFTURLM2hpQzZrbTdCK29Rc3ptT0wwNW1mL296YkIrWW1yU1dOWld5VGs0ZHNGYk5nMVIvTm5NQ2E0dDlpY0hSR0pUNlRXQUt5aU00QmFzdGZnZXpYdzhOUlBVT203a0FVUEk5TDJaeXhLRFVydDRlOXFuRm56YityRjVVMG8wVXBEcSsrTFBKVm1QN2MyMFlaUDJ0S2pZNmowR3BFME1CWlZMV0I2dXByYVJ2SFBRL1dDYU9pNFVSVU9wRytYekhtK1ZwYTY5eFQxbFRzcHE3TndqcDdYNHg0eWRtc1V3TXljWmtUZjFhekpaNjNkcDFCTWlHekNtd2VQaDVJOUZtYnhCekFTQXZNU1AwK09MTDdFOWZ3KzZ6T0dSTmxXdDRNMmVPTDg2YlFDSHIwOC8wY1pPUXNxVUVwbGcwTnlpTTRCVDhldEVleS9scUt1bTdiSHFEdU9ndk5tam1CRUFKOTdpVDJhL2ZXOXdrajF2NnVXVk41V01VVWo4cWpiM1htOFB4bkJQVVd5NDI0SCttQ1QvVVExa2YvRnB0bVRMenA5eWZRM29xeXVJNWNXVVlnQjV2ak9QMVBUWVNielBZZnRuaXhsTFdWRjVTWS9yamkrY2hsV0JORGNrdlBUY0VTNzNXOEJ6cUkzTUtmcTJtbE91ck93dEtLZFRMalF3QjBFdnBMWHd4S0JWTCtOck9BdjNjMm5lUU5aV3JZZkJXdjNYR2lwOEpURUdsQktmZzhRVndYTGdQS3ZyR3R4dUo5TFJiZ0dxeGd5WWRINkJQOTdTNEdZNGxmRjJVWDEyMzJDZEcxbFQrNGx2OXZpdUR0NzVjazhBVVZFeHdDaDVYMjVQWmh4dUp6NmJBVXRMeGdUNXRoazlDT3czUGwybHpneWxycWg5aUFPYTdYbFFMRFEzQlQ5NEpURUhkQktmZ2NUVmx4MXorMUNNaVBmWFdpTkxjQVBvcVptakVESmFZeWRLdHRrcjZSa0hXVk4vRVhsUmZiOTRLeWR4VFEzRFBlTGJtL0dnWVdJUGVyd1VTbklMbEMrRGEzcUx5eDVML1hHbmZZZ2ZOSmdrZzEvdFl2RVoxMFZ2cW9lbHNvOW5XeHVHOUE5dEx3NUN5cUR6WXVSMFBrbml0ZUdjWVdJdTNPQlpKY0FxV3E2MXNhMWtRNmc5VHdSd0JlaVExUFQrZi9TbCs5dkdRNWJLbDd4VTM5QU1IdUxmaVhQelNOT1N2K2Z3OERMTC83bm90MEFCRWdsT3diR0ZmMXh2WmxyL3VPNVgyVFUyS2hWNDBjd1VncDQzdjF6M2Z3OXJxVjZqWFZCbmVOczNTQjVWK2YwM2liMzFzTWNzUzZCbkJLVmlzdHJUelgyMGtsUGFaSzBEdTlsZkdkMWM3SlgwcGtPRjZXNDU1cy9SaGhkLzlkNGYvUm53bytzRXdBSE9DVTdCWVRlVmFxN3p1MjF2N2x2TWtIOWkvVkNxMXJ6Syt1eWF1dGF3b3p0V3ZGYjdOVCtaVThrazVIM0NYNEJUOHZNQ1BpNlc2M3RMM0sra3ArTlRrV0xMSTlBWWlZSi8zck9PTEx5R1dTdVdoclQ2Rkl3ZTdXS2MzUGRMcUtaTWZPdVEzdkoyUFRkbVRGRXB3Q2l5QVY5MUlmREkxbGxKcUFuUXZCY2EvWm5VTituVW03aWJmczdhMzU5YTY5dnBhZklES3c2eTVzYXdwdGpBMUJHVVNuSUtmdmFycTRyNzZSa0xmS1hNR3lHZVRtM3IyNUZVaTFOWjl3alcyRHZNK1ZDV1h2UTBjNWh2ZUJBMzhSSEFLN2kvMkI2R3VYZ0NyYnlUT2pxYXpYNzFSWmRtQ3V1ekZOSkRYdldvVVVzWlVibGttMzFyNHJyV1YydGR1RUZJR1ZhbjMxS0ZESE5ySnNBUjZUM0FLN3ZPV3Z0Mys3MnZpeVQ3UXZoU1l5cUh4K1NKdGJEaEhEbnAxNHR6KzNzeDF5ak14Qk1BaWdsTndYMDF2QTlya2RkOWpVMlFwVC9hQmRxVzNtcDFuZkUrWnR2RHZGZml2MTNtQkFhcW5EbXNMR1paQUVRU240SGJSSDFQSUJ4Vjk0L1VibktmbWxWS3hGeHZNNXREUU1BQXQzYU5pVU9vMDQ1OXcwc0ozanZka0pkTjFpd0dxRThOUWxLa2hZRXVhNlJkS2NBcHUxZlowZHRNZ2t5YVc1aERRcFJTWUdtWCtVN1p4YjVDUlN2UytPUWRLTUhBNEJhZlkyZzlEVUNiQkthaHpFWHkxUmZsRkRHcDVZbUVPQVYzb1IyQXFtclR3N3hUd1oyNVVTSUJxNEZBQ0xDWTRCV254UDZ4c3diQjVZM09sZlk4NW1NMGxBU3BnVi9lbXZnU21ycHA3d3k2L2U3d25LK25qcmxGQkdWVDFPanVhR0FSZ0VjRXBTR3A3T2p2ZTh2K3Z0Rys1NTRZQTJGcC9BbE5SRzV0TmdYNFdFYUFDS0pUZ0ZOUzNDTDdjK2duMzJaSFN2c2NYemdlR0FkaFl2d0pUVVJ2OVB3VDZlZXcrZTk3RDgzcm8wSVg1QzRnQWZpSTRCYWtNcTZaZ3dxNnlucFQyTGVlSlA3RHBQYWx2Z2Fsb3N1TXhpUGRrRzNrZU0vSVd2OTd5QUk5dGVVQmVLTUVwOEphK1RYMHlkWmJ5eEI5WTMvSEYyOUMvd05SMGl4ZHNMRE0wR1ZoQmZJdmZ5REQwanVEVS9qd3Q1SHRjT1pSbEVweWk5bzFBdkVIV2xPVXkzbG5UMnJPanErQjF3TXU4YUpyNUFxeDZQNHFiN05NZS91U1RGdjZkQXZ5czZseUFxbmVVOVFFTENVNVJ1OXJLcjNiZHlGeHBuN2tGYkN1VmwvZTF5WE1iL2FhR0pnVnJPTmZQcVZlZUdnSmdFY0VwYWxmVDA5bnJwcEg1TGludFcrNlZJUUIrS1RVSDd2UGJ4NjUyUEI2RDJhOERFNE0xZmRGb3V6ZUdoZ0JZUkhDS21qY0VjZkZiMTF2NmRpMzFHVkgzdmRpaDBqNWdoZnZRMTlEbkhpeG5SeE1iVnpKd2NITXVlVnR1WDY1OUk0TUFQQ1E0UmMxcUs3djYzTE4vYndrc3ZvQmxtN080aWY0Uyt0MGNlTkxDdjFQSkQ1c1NvT29QZmVXQW53aE9VYk9heXE2bUxUemRudE4zeWh3RDFoZEwrZnBlaHRSRzV1elExR0FMOFp3Nk5Relo4K0lZTnRmZW5vWTlFNXlpVHVtR1dGTnZndllDU0ttMHowMWlzWUVlR01DQ2U5QkpLQ043OThlT3gyVVE5SnRpZTZQbUhDTnY3dzBCY0pmZ0ZQVXVYT3J5dWVmLy9qNlRQUVhjU20vbUsyVlR0dXZNS2NGOGR1VjljNjdsWk9xd1BGaUxlNEMzajJ2MlpJM1B0U0dqUy84MkJBZ1lWSEFqT2p0cXUybDV6TXc2TjYwV2lvdmpkNFlCS09ETmZQZnQvdDZpM3hTN2RENDc1NjZhRE84Y3pwZnA3T2R4Vk82TEpaalBERU5uYzdDYjllanh4WENELzFmc0ZTZFlXVG5CS1dyZEhBd3Erc2J0WnpXZEhWM1B4alVHcUY2WVlEOFozRHk5UFR2U213dnF2dmNjaEJTWUtxVlpjeHNQUFd4TTJLWDAwb0hqaTJjMzZ4UnlOSndkbjdlejQvUFJVQlJrODU1UTFzcVZVOVpIaldvcnMrcnFRditIcWJXVXQ5SUFNVU9ncE9DTFp1ajBnUWJwZmJnMkt1OERndUFVZFJwVjlGMjdTMmMvT3hvSHRlbkx5Q2lEbWgxZmpBcTg5L3kxNHpHcWNYTjY1YjdaMGJvdm5ZTTVtRG9jQzMxcHNrdUJpZ2xPVWRzR0lRWUphcnI1ZmVyNDc1T091OWhCUmd0am9Odjd6aUNVbWJreDJmRy9yOGJnMU90d2R2U2YyZTh2WjU5eEVLaHEwMmx6THU3YjFLRllLQjZicndKVVVEZkJLV3BUVzNsVjE4RWlwWDNtSG5EZmwxRG1RNUZkYjdJSGxjMkw2VDhONVdOUHdyT2oxN00vL1JaaXdHcjNnVC9tL2FmSTJhRmpCSFg3bHlHZ0tzY1hmNGQ2TXFmaVl2ZmxIc2I0endvM0dhdjZqNmFzbmMvSGt4QmZLVjYzWjFzMEo4WDhXK3pzNkY4N0hxdXZvYTZlVStNbUlMVnNQT0o5OUUxSTVhQ3lTWGJudzJ6Y1Qxd1RNajgzNGx1T3JaZWdPaktucUdtVFVOc0NiMTlaVEVyN2x0TjdDdXE1NXh3V3ZBbWR0UER2SEZRMlE3NDkrdC9HZnBIcHRlKy8zV3pVbFlQdHludk50N01YMSt0Sy9LQkNnbFBVcEtheXF2aTBhVjlCb3MrbTJsS3ZEQUZVSUcycVNpNVBtYmJ3N3h4VU5rc21LLzJ2WXZiSTJkSEgyV2RlOGpkMWdtM3RmSTkvOTVYaFgwa01JQXBRUVdVRXA2aHBvMUJUMXNybDN0S2hVdzhOaStmRmhwazBaQVhhRlRPbVNqN1h2YWx2TzlPTjNxUWIzNHA3RzZSUzhyUzV3NmE4Ymg4Y3QzV09Vd2gveW5TRGVnaE9VWXZheXFuMjNaaGM5cFM1Q0hWS0c2bTNoWC9MWFdkLzFKWWRzZDM0eFNCVkt2ZjdFQVE3TnJXZjhqNzkvemE1Tm56M3htT29nK0FVdGFpcG5PcjY1czAvK3pVMjVjeEZxTlI1QmQ5eDF3R1JZV1Z6NU52Vy80WlU3bmN5KzlPVG9OZGozODdWcWFIZjRGZ2RYM3hSNWdkbEU1eWlmS21NcXFhRjcvNFhxYWxjUVYrRnhRNmxxRU94OTV1VGtFcFJ5aWI3WTF0WE96d1cwK2JOdk0rQ29NY205K09UUGZ5OWp0Tm1ZdVo1ektJYUdnb29rK0FVdGR6TWF2SXBrNTlEYWQ5eXNxZWdOT2xCeUJzRHNaR25sWDNmM1QrOFNRSERtRVgxMFhSYXk1czk5SUw4WnRnM0ZvOVZiSlIrS29zS3lpTTRoVUJBV2FaTlEvSWNqRTI5cGZTZGd2S2NoanA2SjAwYzZxM3YwKzMwaVVxbGZ1OUN5cUxTaTJvMUI4MjUyeVdaNWR1TGZmMWtVVUZoQktjb1czb2FWbE1KVlQ1OUo5TGlXeCtNeFFaSys2Q29lMDNjSUFrNmI2Nm02K0cwZy92dkpLU0c2ZTdCcTNuUmNaQkRjR3BYYTZtVVJmWEZtNUNoRElKVGxLNjJFb3RQbWYwOGY1aUM1aVpVNEx5aTc5cEdTZEtCOGR1eGxFVVZlMUc5YzNwbWRnNm52cHhUUTc0ejgxNVVKNFlDK2sxd2locHVXTFc0YWhZOE9mSFUxdHlFc2gxZnhQS1NnWUZnUmQyVzI1MGR4UjVVVDRJeXYxOFpOT2R5VnlhR2ZLZGlnUHY5N0JqK09mdU1EQWYwaytBVUpXOFlEaXZiTU9UWGdEeVY5bzFOeGlVTHFlTUxBU3JvOTMwbWJZanFNdDN4R0E0ckc3L3VTN3BTTDhyZmduS3lYM25mWVpOdFRkSGJFZGY5NTdQaitGVS9LdWdmd1NsS1ZsdlpWSzVaU2tyN2xudHVDS0RYWXFaRmJXK01tanJzUFpRZUZzVkc2V09Ec2RSQmMwNTNZV0s0V3pVTXFSK1ZJQlgwaU9BVUphc3BLMldTWVVuZmZFRWNnMmJLQ1JZYmVSVXk5RlJxd1B2ZVFMRG1QWEd5eDc4NzlxRjZIUVNvSHZPK2srYmErazUxWlJnRXFhQTNCS2NvZGRNUUExTTFiZm8vWi83ejZUMjFuTkkrNk9zbXRrYTdENjRNVEtYT2oyRU1VR21VdnY5ejI5cW9POE1nU0FYWkU1eWlWTFdWUytXK3dQbGtTcHFyVUl5VVdURXlFRHN4cU9pN1RyUDVTVktqOU5lbTMwS2pUcktudEQzWWgyRklRU3FOMHlGRGdsT1V1R21JR1ZNMVphTmNOcjBrOHBXYXNVNU56b1ZlS08yRDNsSE94eWJ5dWcrZUhZMkRBTlgrenZHVWhhanR3WDRNUW1xY0hvTlVKOVpoa0FmQktjcmM3TmRWMHRlWEoyL1MxNWNiR1FMb2licXpwaVltUUdFRXFKYmZsN3ZKbnJJMjJxOTRqR01nTWdhcHpqczY1c0FTZ2xPVXFLWXlxZXRtWWRrSG4wM05wVjRaQXVnTldWT1VSWUJxbitlNnRnZDVpQSsxUnlFRnFiNHErWVA5RUp5aUxEV1c5UFZuOFJ0TCs2NU0wb1VPUGEyRFh0eGpCa0dtSXlWS0Fhb1BCdUtlOXJPbnREM0kwVERjTC9telBvT09DRTVSbXRyZWZOYTNacHF5cHg1YkJBTzVrelhGTnZKK1FITjJkREw3ZGV3dzNmT21nNzlEOWxTZUJ1RzI1TytMYkNwb24rQVVGaEg5RlV2Nit0YXJRRytGNVpUMlFjN3F5OHhkZk45aEcvK1gvVTk0ZGhUTCt5WU8xVDlHSFRUTEhodm03TVZyZjh5bStudjJPWjE5RGcwSjdKN2dGQ1Z0SEFZaGxrZlZvMytMbWJPanFVWHZVZ09MSGNqYTIxRFh5ellXK1dFYVZPRmxVSVkvZDlDYysyMnVqYTZEQUZYZjVzUDMyWm90ZnQ1NjB4L3NqdUFVSmFudGlmWm5QM2R4WkU5QnZ0NFlBcXFRZ2lVeGcwcW1YSGYzWnFWOS9STWZLSjdPUG44cis0UGRFSnpDeHFHZnBrMFR6VDVTMnJmY0MwTUFHVXFiRGsvSHFVZGFZM2lEWHpKb1BmQ1F4bnRpcUh1OWZwdVgvY1hmcmVkZ0E0SlRsTEp4T0F5cGNXRXQrcHQ5bEo3SUNsQXRYd0JiMEVCK1pFMGxVME93bGFjOXUxL0hlN1UzK0NWZFpFOFo2LzZMRHpGR3M4OFhnU3BZbitBVUZnMzlOTzc1ei8rSEtidlVjME1BR1VrUFAvU0RpdzhWem83R2hxRXk2UTErRXdNUmhrMXYwemJIZW1Lc2kvSXdVSFVxVUFXUEU1eWlGRFZkN0srYXh1SjlYdXpHRFk1ZUZ1WXk5SUdzcVhTOVZ1SlZMLzJua3ZjZC9CMnlwOG8wYjZRdW93b2VJVGhGL3gxZkRJT1N2ajVTMnJkc0FhT3BKdVJ5ZjRrYkNodUkrUGEyVkpKTmpkSURNY0hKTHE0RktYdksrcWowZFo3U1AxaEljSW9TMUZiU1Y4cWlSV25mY2tyN0lKL05hTzJOMEQ4MkcyWjJzeW50cDlSLzZyTDY0OWZOdzZOM1RwV3FyZ2x4VGdsVVFSQ2NvcHpOUXkwdWUxL1NkMytoT3pWOWw4enBsTEVCN05lcnlyOS92RWEzWFdaVVUwWlczM3VYS2UvcjR1RlJXdWNwNzZ1UFFCWFZFNXlpMzlKRnU2Wk5mR25aUmxMWGw3TWdnZjNlWHdZaE5rR3UyN3NPeXZtdVRMYWVTSE9oOXF5ZUY2MDNSazgrQmcvd2FpWlFSWlVFcCtpNzJzcWZTZ3ZtZkRhRmwzcGxDR0N2UnBWLy84c213NVZkNmlhdzBaNzBRcE5KNVVleGk5NVRYa0xBbkVBVjFSQ2NvczhMdklQS05nK1h4VFdrUFR1S1Q4eW5Kdk5Ddzk1dllxRGZhZzRReTVCcFR3blg5ZHFESnQxY0cxS3Z0NDlPR2U2NEc2ajZjL1k1blgwT0RRdWxFSnlpejJwN2F2RFo5ekxIZ1E2a3hmNmc0aEg0MUdGL3cybGxZOXYvZVpYbVJzMUJrOE1PSHg1OUNCN2lzZnhhOG5iMitkNEVxazQ4MUtUdkJLZm9zNXBLK3E0TExxOFltOHBMS2UwRDUxN1g0a2E0dThCREtTLzVXRzlEV1lJUG9lN202Qzg2T2ovaUdMOTBTV2FGNjhyNzJTY0dxYjdldkZYU2kzWG9JY0VwK2lsZGNPdDZTMStwMHNaRVE5ekZEcVZyUThFYnp6eDlLSzZFUEMrL0YzTHZqblBrVThYSDhWV0hZeDNYU01wc1dkVnc5am1mZmZTbm9uY0VwK2lyVVdYZjk3UHZad0VNZEtEdWtyNXAwL0M2YXpVOW9DZ25tK0hzNkNUVVczSjIyR2tKMWRsUnpHYjBnZ0kyMlM5OVVmWkhYd2hPWWNQZWo4M0NwUER2T0RhbGwvTEVDN28xclBpN2Y5alQzM3R0ZnBrejdzKy9GQnZSeXpSbkU0TndXL2IzNWFic0R6SWtPRVgvcEtoL1RhVk81VDhwUytVQm5nZ3VXMUFvN1lNdTFacXR1SytzcWZSMzE3V09LZWVhbnViTXROSno1dWtlMWtveFFLWHNsbTNFb09xNWJDcHlKRGhGSDQwcSs3NjFsTHo5WVdvdjljWVFRQ2RCZzFoeVZXc3dlSjhaTUg5Vk50YUg1azRobS95dW0wNm4vbFBQWEt6WmdVRzRuMDAxTkNUc20rQVVmVlJiU1Y4dEtkd3lweDViQUFQT3RYYnZOZU85L3YxMStiMm9iNVBtVHEzWlBNTTlqSGRjRjc1MnVXYkg5NzZ2VFRiVlcyLzZZMThFcCtpWCtoclYxdk1tbkpTdVBqYkpGenJ3dGhYb3hOTkt2L2UrTTErbWxZMTNpZGw1dGI2NWJ6L1hqQlFRRktCaTErSWU2elNrYktwVEpYOTBUWENLdnFtdEYwaHQyVVJLKzVaN2JnaWdkY01LdjNNT1BmK3V6TFBlKzFqcE5XTi9ENDRFcUdoUHpKeDZHMUtRNmx6SkgxMFJuTUlpSUY5WHM0WEh0S3FqZTNaMEdUVDZYR1lrelJwYVZGOW03dHk0eVZ6ZDU3WC91cnByZjJtYnZYcXpud2Q3elM0Um9LS0w5V2NxK2ZzcVNFWGJCS2ZvMDBMdVJXVWJoOCtWSG1tOXA1WlQyZ2Z0cVhYUm5VczVsdXdwYzhteDNJUUFGZDNOODNsZnFwSGhvQTJDVS9SSmJXVk5ZeHNsS2o4SG9FczE5cHVhWkpTaFcxdHdxcnpyZVdyVWZWWGhlZlEwZzdHUGEwWUJLcm93bUgzT0JhbG9nK0FVZlZKVDFzamwzc3NzOXJ1NG5acnVTODRCcFgzUWxzTUt2M05PR2JwL1ZUZmZ5cnllMTVqMW5jZTFRNENLYmcyQ0lCVTdKamhGUDZTU3ZwbzI1YlUzQmxmYXQ1d0ZBT3orSGpNSTlmV2J5cUVSK2wwMVp0eVUrTkJ0WE9GeHpDZlFtQUpVVDRMK25YUW4zanZuUVNydEo5aUs0QlI5NFMxOWRmbHN5anNYb05QTlpYM3l5dEE5TzVwVWVBektLeVZOYzZyR05jeGhSc2NnQm5xZmhUb0R2dXpQWVBiNW9uRTYyeENjSW4vcGFWUk5rZmh4dFNWOTl4ZFdGbFhMRnNEN2ZETVFDQktVSXNjTTNkcXUreS9NcldMa3RSbS9EVkRKUkdjZjUwSU1VSDJ4WG1WZGdsTll2Rm5VNVVyMjFISWpRd0E3VlZ2bTFQVnM4NXJqcHJXMjROUkJvV1V3TlFaRWZzL3VKNG9QT3MrT1hzNys5TUVsbmozdDMyS3AzNGwrcWF4S2NJbytxS21NS2RjTmc4V3Rjd0pLTnF6cyswNHkvYmwrVkRqM1NueHIzM1hHYzZ3dGh4a2ZqNVBacnkrRFBsVHN4L3VRZ2xRalE4R3ZDRTZSdDVRT1d0T21RVURtZGpFMURVcjdsaG5Nem8xRHd3QTd1Yy9VZUM3bG1xRTdxZkJZbFBvVzF0cXl3QWRaSDhmMDRQTkpwZWNZK3hmUGpmT21INVgxSzBzSlRwSC9vcTB1bnh4eTQ3RWkyVk93cTAxbGZmSjhFSkw2NU5TNGFWUGFWNGE4TjkzeG9kL1pVZXhEcGN5UGZSbk9QdDl2U3YxZ0FjRXBiTUR6TWExMFlXNXh1eG12NjRVYU5wUzdkNVg1U3pjbTFqb0ZTTm5QVTllU0xJOU5EQXc4Q2JMVDJaLzM0ZmppdXl3cUhoS2NJbCtwcEsrbWk1WkF6TThMcUd2anN0U2cwRWE2MExYZksvdStrOHgvdm04VnpzRmhvVysxbWxSMkhQL2JvL1ZWREZMSEFKVXNLdllsN3ZGa1VYR1A0QlE1ZTFQWjkvVjJ1c1c4dlhDNTU0WUF0amFvN1B2bWZrMmRXUE1VbzdaQVkvOGVxTXFpWXY5a1VmRVB3U2x5VmxOV3lKV1N2cVVMcDNId2hobm5DTmhRN3U1K2svYzFmMUxwUEJ3VjJCaTl0bVBaejJ2Si9Td3E2eTMyZGU1ODlVWS9CS2ZJVTRxZUR5cjZ4ckttSHFlMGI3RUROM0xZNmw0enFPd2I1OTV2cXVacmZubU4wZXZyTzNYUTgrTjFFbElXbFRVWCt6cC80aHY5emd0OWd5a3JFSndpVjdXOWljeEM0SEZLKzVaVDJnZWJHMVQyZlNjOStUbS9WVG9mM3hmNG5lcktDaisrR1BiNjUwOXY5SHM1KzFOOHE5L1VMWUk5R0lXVVJhWE1yMEtDVStSOFlhckZWZk4wa2VXTHBSaThrMnErMkF0UG1HQmp0UzErZi9UazU2ejFnYzJnd0d6WUg0RStycnNtczg5dnN6Kzl0djVpVC9mbXI3MFA5ckkyd1NueWs5NUFWdE5tKzVPRHZwS3hJVmhLN3luWVRHMkIzV2xQTnNiVFVHL1dSbW5aVTVQS2psOVptK25VOXpNR3FmU2pZaC8zWjMyb0tpTTRSWTVxSzFOUzByY2FmYm1XZTJVSVlDTy9WL1Z0KzlWc1hQWlVHYVl1TTcyL2JsdzMvYWhpa0dwc1FPaFk2a05GRlFTbnlGRk5XU0NYUFdsT204UGk2TW9pZDZsaGhZMmRZUmRxeXB6cVcrK2ZtbnNObHBNOVZWL2JnbklEM2lsSUZjdjhCS25vMmtpQXFnNkNVK1FsUFMyc2FiT2cwZmQ2WkU4dHA3UVAxbGZUL2FaZkQwSlNsbGV0RDI5S3k1NmF1S1lVSkRWTkY2U2lhekZBOVVXZjFiSUpUcEdibWtyNjRxSmJTZDk2TElLV1U5b0g2NnVwSVhvZjM0Qlg4ejN5dEtCTjJMU2k0MWJQeGxtUWl1N0ZCN0ZmQmFqS0pUaEZQdEtGUmtrZmp5K0VhbnN0OVRxYmJLL2RCWmJyNC8ybTV1eml1Q1o2VzhoMythdXFlM0dOYTdQYklOWEhvSEU2N1o5akFsU0ZFcHdpSjdXVkpTbnAyNHpTdnVWa1Q4R3E2dXZUMXIvQS90blJaZVViM2ZlRnpOT3BDMDRGVXBEcVhiaDl1NS9qVGx0aWdFb1BxZ0lKVHBHVE54VjkxK3RtMGMzNmpOdHkrazdCNmdhR29CZkdsWC8vRWpaZ1U5TzRJdk8zKzUwZHhTQlZ6S2lTOFU0N2ExNU4wb3NqT0VVZTBwUEJtbEtoeHc3NnhvdWV1TWdWb0ZxMjJWYmFCeXkrZGs1NitwUFhuaTBiMzhicXdVTy8xclJEZy9EUGRXYzgrenlaL2VtWnRTOHRpRTNTVHcxRE9RU255RVZ0Q3krbGFkdFJFcm5jRzBNQUZMUzVqVmtYMDhwSDRielgvVlg2R3hobGwzUGd0aTlWTFBuVGw0cGRlVnZZMjAyckpqaEZMbXJxbFROdEZ0dHNUdWJVY3A2d3cybzBVKzJQVCthcS9pb1VJUFdsaWlWLy93bXA1RzlpVU5pQmM1VURaUkNjWXYvU3hhU21DNHJBeXZhTG0vakViV3dnbG14aWxJREFLbXE2Ny9SOUEraSttZnFydUxaVDBsb3VsdnpGY2o5ditXTVh2TUd2QUlKVDVLQzJONHg5Y3NoM1FtbmZjczhOQVZEUUpuWWFCS2lpOHg2L3ZXL3E4TEgwL0k1ditidk5wbkt1czRrWW1QcGlHUHBOY0lvYzFQUWs4S3BaWkxQOVlxYjJWNHcvWnVUcEVWQVl2UnI3WGQ1bjdjTXFhN3VZVGZVeXBHeXFkK1lOYTRvdmtEZ3hEUDBsT01WK3BaSytnY1UxRy9KMGJUbmxIMEJKbTlaTEc5Vi9ObC9lVHBYN01XTGI4ejFtVTMyY2ZXS1FLcjd0Ynh3OGtHUTE3L1dmNmkvQktmYXR0amVMQ2Fic2xtRGZja3I3Z05Jb2kwL2U2ajlGTmVKTGhPS2IvbExaMzB0cmFWYmdCUkk5SlRqRnZ0VzB1Sm9vNmR2NWdtVVNQRWxmZm00cDdRUEtNZzZ5SjI0M1g3SURxRy9kZDltVS9YbmJINDg1Vk43WFQ0SlQ3RTk2NmxmVDVsbVdUenM4UVZ0dVpBaUFnamFtMTY3NS8wajlwenlFb05acndmMjMvY1grVkZjR2hqdmU5L2dGRXRVU25HS2ZhaXM3c3FCdWg2RGZjcThNQVZDWUQ0YmdIekZ6NnF0aG9HcTMvYWxpYnlxQkt1NVMzdGN6L3pZRTdFVjYwamVxN0Z2L1BmdmVqajNkYmx6aVV5UGxwRUJKRzlIamkzR1FHWHIzT245KzA1TUhYQi9pZXVmanpTZGx6Y1FxalZjaEJYS3BUM3lCeExCcEEwSVB5SnhpWHpUeWhHN1l3QUdsMFJqOTRYVStCcWpJaGF5ZEhNaW9JdkYyMHg0Um5HSmZ2RWtNdXFHMER5aHQweGszbUJNRGNjOG84d2JBTmZYRzByUS92MnZHb2tDVmEwZ2RZbmJweUREMGcrQVUzVXNsZlRLbm9Cc0RiM1FDQ3FUMzFNL2VaN3dKY3g4aUQ3ZUJxdGhNZmY3V1AzMWhTNzgyMGd1Q1UrekR5QkJBcDJSUHdjK21GWDNYOGdJRHFZZkl4RFQreWJrc0FWajVPakovNjkvTGtBSlY4ZmR4a1AxV21rSHpsbmd5SnppRmpUS1V6dzBaZmphdDZMdVdXbElsZTJxeDg4eEwvQ0EvS1ZCMWVmTnlnYk9qdTRHcXFjRXB3aHREa0QvQkticVYzcHdodFJ1NjVZa1JVT0ptY2hLVTR5enpQcHNtNlVyTDZlZjFaUjZvaWoycVlxK3ErQmJBcVlIcHJhRnJVZjRFcCtpYURUTHNoNWNRUU0zS1haUy9jM0NYeXVVdGZnZFZqYnJYMXBkNFRLOW1uM2NDVmIwbmV5cHpnbE80S0VBZEJJYmh2dHA2aXBRWklJak5qVlBwRFl2RkFOWDM1bVUwNWg1c2Y4MjVHNmpTbzZwdmErSDlYZ3Y1QmNFcHVwT2UyZzRNQk94cGM2QkpMdHpmWU5TbDVQdnZCNXZEUjhYMTE5YzlaczhwcGFIVSs4akRIbFhLakhOZkMzdFltelhCS2Jxa0VUcnNsOUkrcU5lZzRBM2lkUGJySjRmNFVmTUExVDQyWnYrdGFKeW5wbHFsVXFCcS90YS9XRzU4WlZDc2hWbVA0QlJkRXFtR2ZaK0QwcG1oMW8zazc0Vi9QejFnZmkxZS83L003Z09uSGYrOUE5Y1VxcEhlK3ZkeDlvbTlxZWI5cVdSMjVyVVdIaGlHUEFsTzBZMzBwTTZGQUhLNEtRTTFiaVRMRGt6SERhSG02S3Q2Mi9TaDZtcGRwcXlQT3QzMnA0clpWSzlubjRsQnljTFFFT1JKY0lxdVNLR0VQQ2l2Qll2eFVqZUNselovSzRzQm94aWdldHZxMzVLeWRXdksyUDFtYXJIaytqU2VmWjZGbEUwMURyS3A3RXY1aWVBVVhaR3RBYmxzVUtVelE1MGJ5ZjAxeE83U2E5TjZaVEZvZERxYkYxOWJ2Qy9JbW9LN1VqWlZ2RTdGdC8zRmJNK3BRYkV2SlJHY29vdkY4SXZnTmNMZ3BnenMyNkNDalYvYzZIMXdxTmN5RE8xbFVRMHJHMHROc0ZuMVdqWHZUUldEVksvTm5iM3NUOG1NNEJSZFVFWUV6a25JMGFTeTcxdEhGc3ZaMFVtUWpiQ3VlUlpWREZJTmQvanYvYjJ5Y1ZTcXhTYlhySEhUUVAxWlVKcmNsYWVHSUQrQ1U3UXI5Um9RbVliY05xaDFsUGNBOVM3R2xmZHRlbjhJSVpiNW5lK28xSysyZTQzc0Z6WjNkalJwK2xJSlVuVnpyU016Z2xPMFRXQUs4aVI3Q3VKR29DN0R5bzd0UjVOOFk2UFo1ODl3ZkhIYVBHaGNYL3IvRFNxN3BzaWNZamZYcjlzZ2xZQ24rMkUxQktkb203Y2hRSjRFamlHcGF6TlpWOVprN0QwMU5jVzNFdnRReFNEVnlRYVpWTFZ0L2lhbUN6dVZnbFN4M08rMWExa3I5OE9oUWNpTDRCUnRudkFERzJESTFrQnBIOXlvN2FsMFBZdnhsTVdpdkc5N01RUHFmVWhCcW5YSy9XcnI2VEkxVldqcFdqYWUvUnFEVkRIZ0xqdHZkNnlETXlNNFJac0VwaUJ2Ynd3QlZCZWNxaXRnb0x4djEwWWhCYW0rcnZDMnE5cldnWCtaSHJSNExidHVYdllRZzFRVEE3SVR2eHVDdkFoTzBTWTliU0J2QXNoUTM0YXl2dlArN09oZDBMZGwxNGF6ejVkd2ZESHZTM1UvQXlGbFZ3MHFHeE1CQTdxNG5rMmJmbFF2Z3l5cWJRME1RVjRFcDJoSFdwUklsWVM4SGF6dzVCdEtWMS9Rb3M3ei9yV05YR3VidTlpWDZ2dHNYc1hQMnlaUVZlTWNtNW9PZE9iczZETElvdHJXMEJEa1JYQ0t0b3dNQWZTQ2x4WlErd0sveG9YOTB3cVBjd3hDdmpQaFd4V0RVcWNoQnFyUzd6VzV2c2xvZ1c2dmEvTXNxZzhHWTBQcnYraUJGZ2xPMFJZbGZkQVBvNDFmRXc3bHFDMTdxczZNeWRSVWVHeTY0eHBDWWRlMms5bXZNVWdsTzNSOUEwT1FEOEVwZGkrbGN6dlJ3VVlWYkN4elhZelgrN1pPL2Fkb3d6ZER3RjZsTE9BWW9Kb2FqRFh2aDJSRGNJbzJ5SnFDZmxIYVIrMSt1RmRYczRHTG1RWDZUN0ZyQXA3a2NIMkw4L0NKK2JpV2dTSEloK0FVYlJnWkF1aVZGMHI3cU55a3l2Tys3ZzNjYTlNZTF4QUt2TDdGd0h2TW9CS2dXczMvR29KOENFNnhXK2tOUURhNTBEOGpRMERGaS9rYUYvR0RxdC9XbWQ1MHBZa3d1ekJ0QWdLUXkvVnRIcUNhR294ZjhuYjVqQWhPc1d2S2c2Q2ZsT05TdTRsN2RuVWJ1SlBacjVlbVBxNGRGSGg5aXdHcWwwRUpNejBpT01XdWFhd00vWFRvZGJwVXJzYUd4dDdXbWNyN2xML2cya0Y1bERDdlFzVlBSZ1NuMkozamk1RVRISHErVVlWNlRaejNWVzdlNXVVdnNndHc3YURFYTF6TUR2MW9JSlpTMXBjUndTbDJTVWtmOUp2U1BtcGV3TmU2d1h6ajJBdFFzYkhZYjJwcUdNamNCOWMzK2tCd2l0MUlaUUZLK3FEZllvTmtUNUNvMmFUUzg5NzlPNVcvdkhRSzRKcEJnZGUzR0poNlp5REluZUFVdTJKaEMyV1FQVVhOL3FqMGU4dWVTaHU0U2RDZkJkY015cnkrallPMzk1RTV3U2xzYUlHN0JKcXAyYVRTN3owTXh4ZERoLytmRFp3QUZhNFpsT2lESVNCbmdsTnNMNzNoeTZJV3lxREVoM3FsMHE1cHBkOWU5dFR0UEJqYnhMR0NTVk11QlgwUm02T2JzMlJMY0lwZHNKR0Zzbmk1QWJVdjN1dThsNmVIVFVSblJ5ZXpYOGNHZ2tjbzZhTnYxN1hyaXU5eHk4a2N6b2JnRkx1Z3BBOUsyNlJDdmI1Vi9OM1BIZjU3RzdsWTNqYzJFQ3hoazQ5N0hPeVE0QlRiU1cvMjhuWXZLTXZCN053ZUdRYXFkSFpVYzltRDNsTS96d2NCS2hhNW1zMk5xV0dnaHlhR2dGd0pUckV0V1ZOUUpxVjkxS3ptaklqM0R2OERBbFRZNEZQTzlXd2F2TFh2NFpnNG56TWhPTVcybFA5QXFlZjI4Y1dCWWFCU05mZVNHWG9wd3NMTml3QVZkMzAyQlBUWTFCQ1FJOEVwTnBkSytnWUdBb3BsZzBxZDZpN3RpMDRGcHhmT2l4aWdlbTBncW5mVnZOa1Qra3JmS2JJa09NVTJ2SFlheXFac2w1clZYTm8zbUgzZW1nSUxuQjJOZ3dCVjdXUk5BYlJBY0lwdHlLcUFzZzI5V3I2UTQ4Z21hbjlOL0h2bi94SzNBYXByZzFFbGIrbWo3NmFHZ0J3SlRyR1oxSTlDeWorVVR4Q2FPcVhTdnRvWDhPY213dEw1TVo3OStpd0lVTlZtNGkxOUZNQWNKa3VDVTJ6S203eWdEa3I3cUZudEdSSXhlMUo1M3pLcDcxQU1VT2svVkE4bGZWQ1dpU0hJaCtBVTYwdE5VbVZUUUIwT201Y2YwRisvRzRLTmZUSUV5dnNlSlVCVms1Z2xwNlFQb0NYL05nUnNvTGFTdnRkTitqNGxTOWtCcHdaaW9WYzJYcjJtQkh0VHNYem4rR0lTNnU3YkZlZFBMTzk3WmtJc25TY3hhUEZrTmxmaU9JME1TTEV1bTJNTlFBdGtUckdKbWtyNnJnV21xdUU0THlkVHN0OWt2bTFIR1U4cTd6c3hETDl3ZGhTYnBIdVRYN2xrVWtKNXZobUNmQWhPc1o3NlN2cWtiOWV6cVpDdXY5eEFhVit2eVp6YTd0b3dEcHBlUjdHOGIyZ1lWcG92VDh5WjRsdzFKWnhRQW1zNnNpUTR4YnBxeTZENHd5RjN2TG54cHJjYkNvS2d3dFprVENSZm1vZFVQQ1lGTVg0TEd1MjZCa0NlL21zSXJCTnpKRGhGTFJ2VVRWdzNyeEtuSG83M2NpOTZleDRUZVVxNm5iRWh1QkVEVTE4Tnd3cGlOdTdaVWV6VDljRmdGTEVlZEEyZ0pFTkRZSjJZSThFcFZwZmUxbFBUQnNkQ3BNYk5oT08rZkZONmZLSDNWSDk1WTk5MjE0YXBhOE0vRHB2RzM2dzJkMDVDYWladkE5UmZzcVlvYVQ5M0VEeXd1bnVObmhpRWZBaE9zWTdhTnFhYTROWkphZDl5encxQmJ3ME5nWHZDRG8xbUc1eVJZVmhyOHhQTC9HVG45azhNS240MEROalBGWHQra3hIQktkWlJVMG5mVk9QTGFqY1JsMjVXajI1STladnBwMEdUL2NybTE0WkowRVBvcm5QWmxHdk5uMWdhOW5MMnAzZnVNYjF5MldSVlF5bGVHWUovMk90bFJuQ0sxYVEzZGRXMHNmR0V2UGJGS012MGJUTTZkY2orTVRRRVc5TS82TDV6Yi9KYzA5bFJ6TUtKYi9PYkdBem5QSFM4bnh0YUM5d2pPSlVad1NsV1ZWdVVmZXlRVjAxL2llWDZWZHFYZWdYUngyT1g1M3lhQkFIUHUxS0RkQUdxOWE5THFWbTZMS3JjMTRMdUlaVGx2U0c0NTRjaHlJdmdGS3VxS1hYL3ltS2srbzNEbFEzb0k5Y0NwWDJPWGQxa1V0d25RTFg1dldhZVJTVmIxN2tPN1pJMXRYalBSMVlFcDFqMVlqYW82QnNyNlNQWUxEeHExTE9mZCtxUS9VT1BvRzJsVjhxYlUvY0pVRzArbjZaTkw2cVg1bFZXOXBzMUZkZmV4eGQvM3J4NHdFTUZ0cDlQY1E1NXkrclAxMS9CcWN3SVRyR0sya3I2QkNXSUJDbkx1U2JZOE5WN1BXK0xqSXFmQ1ZCdHQwbUthNDhuNXBaei9NNjFlaEJTUUNFR3FmUjNZeHVub2E1RWcxVk1ERUYrQktkWVJVMVAyaStWOU5Gc0ZPTFRGRTlVRmp2MDVyZmVHanAyTzdrK2pJT2c1eUlDVk52TnEvaEd2NVBabjM2emNkcXJmV2ROeFd2MDZNRjVGZi81Kyt5L2k1KzNzcWxZWXo2TlF2OHkzcnZ3elJEa1IzQ0tYMTNRWGpRM3hWcjg0YUJ6aCt5cDVmcTAwTEVBdWUrTklkaUoxNFpnSVFHcWJkMDJUSStmcVFIcDNMNnpwaDVyV2gzUHE1Z0Y4M2VUVGFWVW0xL3Q0NVR6TFRZeEJQa1JuT0pYYW51N2s1SSt6SWZWS0Evckx6MU1kaE5BbUZqY0xqVVBVSTBNeFpaejdPd29abEhGUU9qVWdIVGlRMlpaVTQ5ZnkwUDRNdnYveEVEVnFZQXdEK1pTbkE4Q1U0L2Z3OG1NNEJTUFhkUU9RbDFwb0pjM0tmVndlK09hMm53dU5lalJRdGd4L0RsdzhOWXc3T1FlS2NqMytEdzd2eWxCWXR0NzBiZ0pVc1dNSHV1VTlzU3gvYmpubitIOUZ0ZjA3MDBUOWJmS3Q2dS9QdzFEZkVEZ0hyVjh6MGVXQktkNFRHMnB3a3E0TUMvVzA1ZnNLWnU1bjcyUlBiWFZ3ditnV2ZqTFZQaTEwNmI4eUh6YjFtMC9La0dxZG56WTYwUEs5TUJudE9XL1pSQlMyZCtmZC9wVERSemFxdTVQb3lBdzlTdmFQV1JLY0lySDFGVFNkOTI4S1FjZU1pK1c2MGNBMjZ1Q0Y1RTl0Zm5DWDJCcWZXbXpaSk84aSt2WjlZTWcxZFNnN0VUczg3WHZyS25USGYvNzV2MnBCS3JxdVQvRjQ2MlV6OXErdC81bENGaHljUnZjM016cUVWUG1OYmRsMmZud0pkU1hTYmlxbDcwSTdNYUZ1V0RDSXI5NVErbmE5OFl2NXRMR1lsYkthdytEZGo0dlJ5R1ZndzBNeHNhZTdiVUh6VzBaVmhmaUE1dlB3UnVxM1p2cWREV2I5MDhNUTU1a1RyRk1iUnR4YituRC9OaE1YeklzTGNBWDg0UjE5Y1YvWFBRTGNtN25JS1FHenNyOGR1bTJKMVY4dTkvRWdLenRNb1BteU84Ny9Mc2VabFJwcHQ3dmU5TmI5NmExYU5lUk1jRXBscW5wVFZ4VFQzSDU1Y0pmZjQ5bCtoTEkvdUZRTFRUVXNIcWx4WCtjNTNwNDdNNG9wT2JOUTBPeDAzdlZKS1NIS2U1WHE0dGo5VzdQMTVmaHpiVjRQMkpBWTk1TS9lOG1jUHhDOExnWDk2WDRZcHA0WHpwMWIxcUxQVi9HQktkWWZMR3JLL3J1SW9WNXNybURucnd1WHQrcDVkNTdhdjdvUFRGdTNMNVkvTzljWEd0OGJiSTJqSzJONnI1OHlxQzBMWmNNMXZsYnV1UDE3dStiK1pUNlZMay81SFd1SHpTOXBXTDdsYUVCV1hNdHFKUTFhLzgyQkN3d3F1ejdTdTlrRlg5VWVHNnNLcGIyamJOZmtQRFloaVErTFgrMjF6ZFY1YmdCU0p0Ry9lYmE5Zlptakk4djNzbGkzbml1bm9UNEJrNUJxVTAycWlkN1BuWnhYVEhJZEh5R1lSNzhPTDZJRy9wSlNHODVtOWpnNysyZTlOYTV2cFZQaGlCdkdxS3o2T0wzWjZpbnFlYTA2ZE1Bem8zdC9DZjd3SWJqOXl1eDc4cEx3eERtL2FWaVlFckdRTGZpNXZlMWplL0s4M1RZekZQWHRjMDgyZXZiWEZPdzRYdFBqOTlWdUIrczhtQ2ozWGtpS0xXOU9FZC9NMWZ6Sm5PS1JRdnltaFk1c3FaWWIvT2VGZ2o4TEdhWGpIdXdtTGFKZSt3WXhuNGp0Yis1TkpYeG5ab09lekVNcVVsenZKWjhFS1I2ZEsxMkdwVDBiT1BEWGdOVHlkc2UzNU1PdzIyL3FqZ241OEdxSDBGbTFhN084M2greHg3QUk0T3hvelc4d0ZUMkJLZDQ2RlZsMzNmc2tMT0d6MEZ3NnJGclIrN25VM3pDcTBUcmNhUFpndmpIYkFIM3NjS05RTndrbnR2d1p6SVBVN0EwbG1COHRLRzROMGZmMjZ4dUxZZHl2cGdCODZhZ01aMEhxK2JmYnhyU0E2RnZ6WGhQVEx1VnovRVh6ZHdZR0pDZFV0TFhBOHI2ZUhoUnJLbnNKZDRzbnpqb09FZDI1cmVzbjVhbWJJUHZEdE5LM2xVVm9OS3pKMmN4TURVT2VUU3UzdGY4SEFZWkZMdjBaTzlaVXpGTHRiN2pPUWtwWVBXaldZUHJCWm5tUWx4VHZtak9jYVhrYmMyOXM2Tm5oaUYvZ2xQY3ZUakdDK01YbXkvNDVTYjJ2WUhvNlRrVlg1VXRBTEdxY2ZFbGZtblRmMnBEMEtNNUdUTllhOG5DU091eUdEUWRPdlE3OHlHRHJLbEJTRzlhSXdXc3BtRWVzRXBCcSt0S3p1Mm56Ym50L3RPKzJNdHdiQmp5SnpqRjNRdGxiVTl4L3FOVUFJdktuY28vRy9INElnYmdsZmF0N3JKWjFGMFhlQjZmbWdzOXZ0YWtFbzNMUXVkbVhJdkZMSXFCUTEzZ1BlcjQ0bXNRY0h6TWRaZ0hxa0w0cS9sOTJ0dk15WFJPeHdEVTArWjN4NzViWG43Vkk0SlQzTDE0MXBSUjRLMVViSE91ZkErZWRDM3pKT3RVL2ZUYTduT0hhZTFBd09zaVNqRDA3Q25SZVBiNVl6WS9MM3M4TCtQYUt3Wktud2NCMDdaY04vZW42WjZQOVhEMjYxZUhZNnY3VVR5VzN4Nzg4LzR6cnRKNVBPKzk5ZDg3ZjVhdHZWK3lwbnBFUTNUbUY5UVhsVjA4LzNEUTJjTG5JRGkxekt0bXNaaXJpVU8wdHRTcjYvaGkvK1V3bTkvakJrRlFxbFNqa0JyNXg0M3BaYk5welQraktzM0pZUkNRNnNxN1RESnZQQnpaL240VXdxTHNvK09MK092MW5UVkkvUE9QTy8rTGFmTjU2SHJodzVjVVNIeG9FRzR6R3YvYi9QbkFtakJiVTRHcGZwRTV4ZndDWEZ1cGk1SSt0amxmNGtMa2J3T3hkQ0h3VytiSFQrYmI1cTZhVGQ2a0orZHEzRnhvSkYzdlhJMFBvaVlobjZ5S09CLzFtZWxlSHYzemppL2kyMzVQSFE3b2pLeXBuaEdjb3NhTmR2bE5mdW5pdk5HN2FMbmNTL3RzRUhaeEhVMk5oYWVaM3ROR3dhdTR1Vy9ldzJiZWVMbTlIallwS3lwK2hyUFA3eUVGb3N6Ri9SMzNaNWtFSjJPL1NpVmUwTlc1NzYzc3ZhT3NqMURoQmx0Skg3dWFSNEpUaThXZ1FNNEI0Rmo2SXppMW5WRklwVlRqa01QYjAvVHM0ZGZtL1YvdXpwdjQ2K1NmalV3SS8zZm56NzhLWmd5QzhwN2N4V1A0TXBOTStkTWdNQVZkZW1jSStrZm1GTFc5TlNUV2xmL0hRV2RIbTJHbGZYMDl6NVQyN2RvMDNMNDliZHJSTVp5LzlTaVdTUWxJQVErOXpLSlJmcnBXZlhjNG9ET1QyYm4vekREMGo4d3BHK3hCcU91VnBwY09PanNSbjhTbXJKR1J3ZmpKd2MxTEZ2SitlNWFtOXJzVjd5V25ONS9qaTZ1UXNsRmlkdUZ1ZXYzY3ZnVXAzcTkrYjM2WGhRQXM4eUdqZTVCTVhlaVc5aTA5SlRoRmJVK2JQenZrN0ZEY2ZJOE13MEt4dkNybjROVFlocUUxOC9LcHR6Zi9kSHd4RFNtejZ1R3J2eGU1V3hiMSs1MS9Gb2dDVnIrKzUvSm0wZU9MdUVZWU9pVFFtVHo3WWJJU1pYMjFxNnUwSmYrM2lOSEhjK2h2RytlbDhuNHI1dkZGZktYM3lHRUNLRVllRGREVFBVWVRkTERYWXczL1l3aXEzbFFQUWwxbExVcjZNSys2bFh0bXBreEtnSExFZ05TempCNkt2QThDVTlBbDVYdzlKemhWdHplVmZWOGJVZHJ3eVJBczlUenJueTY5WVc3cU1BSDBYbDZCcWRRRS9hM0RBcDM1dVBjM0I3TTF3YW02MWRSdktxWjVYam5rN0Z5YVYxTURzZVFhazhvYWN2YkJZUUxvdlplWnJmUDBOSVR1WEZuUGxVRndxbGJwaWM2Z29tOHN1NFUyS2UxYmJ0U0RZM2Z0TUFIMDF1dXNNaVkwUVlkOVhBT3M1UXFnSVhwT2ppL2lqZXlyZ2VpMXllemkrTXd3WkhkdS9UK0Q0THg3Wkg2Y2hOUWJCSUQrYlVySEdhMDNORUdIYnIyYlhRTStHb1l5eUp3Q29IWnhVZU9KRzBDL2ZNZ3FNSlZvZ2c3ZHVSU1lLb3ZnRkFCMVM2bmdTbjhCK21NOHUzYWZaUFVUcFFvSVRkQ2hHN0hQbExmekZVWndDZ0JrVHdIMFJReE01YmdwMVFRZHVoSFhhL3BNRlVod0NnRFNBc2ViWGdEeWxtZGdLdlV1UEhSNG9CTXZ2WVc5VElKVEFCQ2x2Z1ZUQXdHUXBWd0RVNFBacjI4Y0h1aEVYbS9uWktjRXB3RGc3cUlIZ056a1dzb1huUWROMEtFTEh6TjhDUUk3SkRnRkFIUHBhZHlsZ1NBanNYVGh0K1ozcU5HSGJBTlR4eGN2WnI4T0hTSm9YUXhRdnpNTVpST2NBb0Q3NHVKSGswMXlNRy82T3AzOS91eG1jUTUxZVozZFcvbm1qaTlpdHRTNVF3U3R5emx6a2gwU25BS0F1MUlnUUhOMDlpMEdwcDc5MC9RMU51MVBpL094b2FFU3J6TXY0VkhPQiswVG1LcUk0QlFBUEpTYW8wOE1CSHUwK0cxRWFaSCswZkJRc0hsZ2RwenRUM2g4TVp6OStzS2hnbFlKVEZWR2NBb0FGbnNkbFBleHI3bjMyTnVJVXQ4TkMzWktOQTlNVGJMOUNaWHpRUmNFcGlva09BVUFpd01BVXdFQTltQzFVcWIwdjNrV0JGQXBSMnIrdnloak1DL3ZaNStCd3dXdEVaaXFsT0FVQUN3UEFNUTM5eW1ob2l2cjlkaEoyU1hQZ2pmNVVjSm1OR1ZNNVIxc1RlVjhieDB1YU0xSGdhbDZDVTRCd09NQmdIYzIvM1JncytiUEtjc2tCcWdtaHBDZStuQ3pHYzAvTUtXY0Q5cS9ENzR6RFBVU25BS0FYMU0rUlZ1dXc3WnZKVXR2OG90elZKWWZmWnY3c2ZIL1NVOStYdVY4ME42MTRGbm1iK2VrQTRKVEFMREs1bCtBaXR3WDVPbUo4MHZ6bEI2SUdYOVBtdExwL0IxZkRJSnlQbWpyV3BEM1N4RG9qT0FVQUt5MjhZOExLSDBRMkpWcHN5Qy8ydkU4dlF6NlVKRzNjVFAzcHoyNi9zZWY5YmZtWndkMjQ3S1YreUM5SlRnRkFPdHQvQVdvMk5ZOGErU3FwWGs2NzBPbHpJK2N6TXY0OHU4dnRmaThtamFObW1PUWF1Snd3bFppcjdtWHZid1cwQnJCS1FCWWI0TXlEZ0pVYkM3T24vYmZTcGI2VUNuekl4ZjlLdU43L055YU5qM2V2SWdBMWpkdDdvRW5ob0tIQktjQVlQM055VGdJVUxHKzd0OUtsb0lCTWozWTk3eC8wcXN5dnRYT3JZa2dGYXdsM28rZTZDL0ZNb0pUQUxEWnhtUWNCS2hZemJ6eCtjbWU1dXI4Ylg3dmdpd3F1alBQbGpvcCtsc0tVc0VxOThDWHl2ajRGY0VwQU5oOFV6SU9BbFNzdGtHZlpEQmZQOTc4TERiUXRHK2VMVlZQbytQN1FhcXhLUUEzSnFHVWtsNWFKemdGQU50dFNPSW1KQWFvUEExazJRWjltdEY4bmNxaW9rVjFaRXM5Zm81TjdqUk9INXNTVkdxZUxmV3N1SkplV2lNNEJRRGJiMGJpQnVTWnpUNk5hY2k5NGV0dEZwV24yZXhxSTFwZnR0VGo1OWpkdC90OWNIK2dJaDl2NXIxc0tkWWtPQVVBdTltSVhEV2JmUnV6dW8xRFh4cStwczF6Zkp0ZkRLeE9IVG8yTkc5eWZHSW9scDVuSnlFRnFWNDcxeWpZSktRSE0rLzBsbUlUL3pZRUFMRERUY2p4UmR6b244NCtJd05TbGJqaGZOZkxKOFVwa1BiYmJPN0dEZlNiMmVmQTRXVEZPZi9hbTdkV1BzL2labjE4OHptK0dEYm4yZ3NEUXlIWGdnOU5GamxzVE9ZVUFPeDZBNUpLT2ZTaHFrY3FrZXQ3Q1VQSzduZ1M5TW5oY2ZHNkZnT3h2d2xNYlh5dVRacXN4WG5KMzlTZzBOTnJ3WWZtL3VlK3dkWmtUZ0ZBTzV1UCtIUThsdmlkeno2SEJxUklWODBtZlZMUXZJMmI1TmV6dWZ0NTl2djcyV2ZvTUhOSDNJaCtWTEt6MC9QdDVPWnpmQkd6cUY0RjJWVGtMNTcvbjF3TDJEWEJLUUJvYitPUitsQ2xjcW4zQnFTb2hmbUhwcWw0cVhOM0VtTC9rRlIrRk10VUJWanJObTdtL05SUXRIYk94Y3pMeTlrNU53Z3BRQlhML2dZR2hzenVmWUpTdEVad0NnRGEzM1RFcCtKeDR5R0xxdjgrTnB2MDYwcm03aVNrQU9zb3BBQ3J6WEpkeGtGUXF1dHpidHBjWno3T3pydDR2NWozcHRJTGpuMFJsS0lUZ2xNQTBNMkdZNTVGOWJiWjVOdG8yS1QzYWY2T1EycmtQQXFDVk9ZN1hkNDNVZy9EVlBiM1BBaFUwWjE0L24rNnVSNElTdEdCZnhtQ2pLVFUrYThHb3RkaWc4dG5oaUc3Yyt2L0dRVG5YV1p6TW00c3ZOR3ZML01ydlpITUp2M25OWXVlVk9VWkIwR3BQcHgvQWxXMGZkLzdyTWs1WFpNNUJRQmRTMDhnNDVQdytFVHkxQVkvMjAzNloyOGpXenFISitHMkoxVnM0and5S0wybFpLZC81MS9xVHlXaml0MWVCeTV2cmdVcFl3ODZKM01xSnpLblNpQnpLczl6UythVTg2NFAxMzlaS0hrWUI1a2ptOHpoUVVpOWNVWTJ5TDF4MVd4RXg0YWlxTDNFUEZBMU1DQ3N0SWFLRDJKaVlFcHdtajBUbk1ydmhpSTRaWlBNN3M4dHdTbm5YWi91QTRKVTNadG5qb3dGcFhZeWowY2haVk9aeDNrYUIxbUJOWnlIZzVDQ1ZNK2Rpend3RFNrZzVaNUhWcFQxQVVBdWJrdWw0cVlpQnFsR0JxVlZNa2ZhbWNmamtKcW54M2tzbXlxbnVTNDdvcWJ6Y0JybWIvMkxVdm5mMDVBQ1ZkNGFXNTlwU0dWN241WHRrU3VaVXptUk9WVUNtVk41bmxzeXA1eDNmWjI3QjgzR1BtN3dCdzcxVHNTTitkZ0N2Zk81ckMvTy9qYWpuMlJIc09EZWNqZFk1ZjVTcHF0dzI5emMvWTdzQ1U3bGRhT0lOd2ZCS1p0a2RuOXVDVTQ1NzBxNVI3eXl1ZC9ZZVBiNW8ya2t6SDduOGlqY2xocVp5N3MxRGJJaldQK2NQR2pPUjVsVi9YWWRVakRxVzBoWmtsTkRRcDhJVHVWMVk0ZzNnbE1EMFd0WHN4dkJPOE9RM2JrbDZPdThLMjFPeTBKWmZaSCtSMURLMUllNUhEZkVBd095NFRYd2RwNExTTEdyYzNQWW5KZS9oeFNzY243bUtkN252b1gwb0c1aU9PZ3p3U2tBc0xrdnhUU2tySkZ2TXFSNk9aZmpCdmh1cVJHTDNRMjhUbVJIME5INUdSK0VIQVlCcTMyYkJNRW9DaVU0QlFCbGJlNkhkemIzcFdkVktXRW9lejRQSDh6bldsMC8ySkRLamlLMzh6VGVlLzdiL0g0WVpQVHVTanp2cDgyNWYrWGNwM1NDVXdCUTdxWmh2bEY0ZW1mVDBHZFh6Y2RDdmU1TjhIdytEd3I5cHVZNXBaeXZnK1lUTTYzbWZhMzQyVFRjQnFHbXpudHFKVGdGQVBWdUdKN2UrWE9PQy9XNE9QOXg4MmZsQy93OGwrZGxSbjNOMm5pNElUWFBxZWsrRk0xL253ZXZjcndmN2ZwOGo1Ky9tdnZidFhNZWJnbE9BUUR6TEt1RE81djcvdzIzbVZZSFlYZFpWOWZOb256KzV4L05ueWZOUXQzVFlyYWR5M2ZuOGVHRHVUenM4Q2U1TzllLzNabm53WVlVZm5rZUQ1ZmNmNTdlK2ZNdTcwMmJ1bnN1eC9QOS94Nzg1MWRleUFHckVad0NBRGJaT0t5YW9UTFZDNG9NNSsvRFRlMDJtOXpKdlg4U2VJS2N6dTNIRE1MOVRLMWZuYnNlb0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQThQL1pnME1DQUFBQUFFSC9YN3ZDQmdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEQUtBRUdBQ3RZdUh3N2ZXbEpBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiRklET18yXzAiXSwiZXh0ZW5zaW9ucyI6WyJobWFjLXNlY3JldCJdLCJhYWd1aWQiOiIxYzA4NjUyODU4ZDVmMjExODIzYzM1Njc4NmUzNjE0MCIsIm9wdGlvbnMiOnsicGxhdCI6ZmFsc2UsInJrIjp0cnVlLCJjbGllbnRQaW4iOnRydWUsInVwIjpmYWxzZX0sIm1heE1zZ1NpemUiOjEyODAsInBpblV2QXV0aFByb3RvY29scyI6WzFdLCJmaXJtd2FyZVZlcnNpb24iOjF9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMS0wNi0yMiIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiQ2FyZE9TIEZJRE8yIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyMTA2MjIwMDEiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMyIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4zIn0seyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRCIsImVmZmVjdGl2ZURhdGUiOiIyMDIxLTA2LTIyIn1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAyMS0xMS0yNCJ9LHsiYWFndWlkIjoiNzcwMTBiZDctMjEyYS00ZmM5LWIyMzYtZDJjYTVlOWQ0MDg0IiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiI3NzAxMGJkNy0yMTJhLTRmYzktYjIzNi1kMmNhNWU5ZDQwODQiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiRmVpdGlhbiBCaW9QYXNzIEZJRE8yIEF1dGhlbnRpY2F0b3IifSwiZGVzY3JpcHRpb24iOiJGZWl0aWFuIEJpb1Bhc3MgRklETzIgQXV0aGVudGljYXRvciIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MH1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmaW5nZXJwcmludF9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQjJEQ0NBWDZnQXdJQkFnSVFHQlVyUWJkRHJtMjBGWm5Ec1gyQ0JUQUtCZ2dxaGtqT1BRUURBakJMTVFzd0NRWURWUVFHRXdKVlV6RWRNQnNHQTFVRUNnd1VSbVZwZEdsaGJpQlVaV05vYm05c2IyZHBaWE14SFRBYkJnTlZCQU1NRkVabGFYUnBZVzRnUmtsRVR5QlNiMjkwSUVOQk1DQVhEVEU0TURRd01UQXdNREF3TUZvWUR6SXdORGd3TXpNeE1qTTFPVFU1V2pCTE1Rc3dDUVlEVlFRR0V3SlZVekVkTUJzR0ExVUVDZ3dVUm1WcGRHbGhiaUJVWldOb2JtOXNiMmRwWlhNeEhUQWJCZ05WQkFNTUZFWmxhWFJwWVc0Z1JrbEVUeUJTYjI5MElFTkJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVzRllFRWhpSnVxcW5NZ1FqU2lpdkJqVjdER0NUZjRYQkJIL0I3dXZac0t4WFNoRjBMOHVESVNXVXZjRXhpeFJzNmdCM29sZFNyam94Nkw4VDk0Tk96cU5DTUVBd0hRWURWUjBPQkJZRUZFdTloeVlSclJ5Snp3Ull2bkRTQ0l4ckZpTzNNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdEZ1lEVlIwUEFRSC9CQVFEQWdFR01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lESFNiMm1iTkRBVU5YdnBQVTBvV0tlTnllMGZRMmw5RDAxQVIyK3NMWmRoQWlFQW8zd3o2ODRJRk1Wc0NDUm11SnF4SDZGUVJFU05xZXp1bzFFK0trR3hXdU09IiwiTUlJQmZqQ0NBU1dnQXdJQkFnSUJBVEFLQmdncWhrak9QUVFEQWpBWE1SVXdFd1lEVlFRRERBeEdWQ0JHU1VSUElEQXlNREF3SUJjTk1UWXdOVEF4TURBd01EQXdXaGdQTWpBMU1EQTFNREV3TURBd01EQmFNQmN4RlRBVEJnTlZCQU1NREVaVUlFWkpSRThnTURJd01EQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJOQm1yUnFWT3h6dFRKVk4xOXZ0ZHFjTDd0S1Flb2wybm5NMi95WWd2a3NabnI1MFNLYlZnSUVrekhRVk91ODBMVkVFM2xWaGVPMUhqZ2d4QWxUNm80V2pZREJlTUIwR0ExVWREZ1FXQkJSSkZXUXQxYnZHM2pNNlhnbVYvSWNqTnRPL0N6QWZCZ05WSFNNRUdEQVdnQlJKRldRdDFidkczak02WGdtVi9JY2pOdE8vQ3pBTUJnTlZIUk1FQlRBREFRSC9NQTRHQTFVZER3RUIvd1FFQXdJQkJqQUtCZ2dxaGtqT1BRUURBZ05IQURCRUFpQXdmUHFnSVdJVUIrUUJCYVZHc2RIeTBzNVJNeGxrenBTWC96U3lUWm1VcFFJZ0Iyd0o2blpSTThvWC9uQTQzUmg2U0pvdk0yWHdDQ0gvLytMaXJCQWJCME09IiwiTUlJQjJEQ0NBWDZnQXdJQkFnSVFGWjk3d3MySkdQRW9hNU5JK3A4ejFqQUtCZ2dxaGtqT1BRUURBakJMTVFzd0NRWURWUVFHRXdKRFRqRWRNQnNHQTFVRUNnd1VSbVZwZEdsaGJpQlVaV05vYm05c2IyZHBaWE14SFRBYkJnTlZCQU1NRkVabGFYUnBZVzRnUmtsRVR5QlNiMjkwSUVOQk1DQVhEVEU0TURRd01UQXdNREF3TUZvWUR6SXdORGd3TXpNeE1qTTFPVFU1V2pCTE1Rc3dDUVlEVlFRR0V3SkRUakVkTUJzR0ExVUVDZ3dVUm1WcGRHbGhiaUJVWldOb2JtOXNiMmRwWlhNeEhUQWJCZ05WQkFNTUZFWmxhWFJwWVc0Z1JrbEVUeUJTYjI5MElFTkJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVuZkFLYmp2TVgxRXkxYjZrK1dRUWROVk10OUpnR1d5SjNQdk00QlNLNVhxVGZvKyswb0FqLzR0bnd5SUwwSEZCUjlTdCtrdGpxU1hEZmppWEF1cnM4Nk5DTUVBd0hRWURWUjBPQkJZRUZOR2htRTJCZjhPNWEvWUhaNzFRRXY2UVJmRlVNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdEZ1lEVlIwUEFRSC9CQVFEQWdFR01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lRQzNzVDFsQmpHZUYreEtUcHpWMUtZVTJja2FoVGQ0bUxKeXpZT2hhSHY0aWdJZ0QySllrZnlINVE0QnBvOHJyb08wSXQ3b1lqRjJrZ3kvZVNaM1U5R2xhcXc9Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUZBQUFBQVVDQU1BQUFBdEJrcmxBQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQkhacFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR3L2VIQmhZMnRsZENCaVpXZHBiajBpNzd1L0lpQnBaRDBpVnpWTk1FMXdRMlZvYVVoNmNtVlRlazVVWTNwcll6bGtJajgrSUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWtGa2IySmxJRmhOVUNCRGIzSmxJRFV1Tmkxak1ERTBJRGM1TGpFMU5qYzVOeXdnTWpBeE5DOHdPQzh5TUMwd09UbzFNem93TWlBZ0lDQWdJQ0FnSWo0Z1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNGdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlnZUcxc2JuTTZlRzF3UFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIaHRiRzV6T25Cb2IzUnZjMmh2Y0QwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOXdhRzkwYjNOb2IzQXZNUzR3THlJZ2VHMXNibk02ZUcxd1RVMDlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl0YlM4aUlIaHRiRzV6T25OMFVtVm1QU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2YzFSNWNHVXZVbVZ6YjNWeVkyVlNaV1lqSWlCNGJYQTZRM0psWVhSdmNsUnZiMnc5SWtGa2IySmxJRkJvYjNSdmMyaHZjQ0JEUXlBeU1ERTBJQ2hOWVdOcGJuUnZjMmdwSWlCNGJYQTZRM0psWVhSbFJHRjBaVDBpTWpBeE5pMHhNaTB6TUZReE5Eb3pNem93T0Nzd09Eb3dNQ0lnZUcxd09rMXZaR2xtZVVSaGRHVTlJakl3TVRZdE1USXRNekJVTURjNk16RTZOVGtyTURnNk1EQWlJSGh0Y0RwTlpYUmhaR0YwWVVSaGRHVTlJakl3TVRZdE1USXRNekJVTURjNk16RTZOVGtyTURnNk1EQWlJR1JqT21admNtMWhkRDBpYVcxaFoyVXZjRzVuSWlCd2FHOTBiM05vYjNBNlNHbHpkRzl5ZVQwaU1qQXhOaTB4TWkwek1GUXhOVG96TURveU55c3dPRG93TUNZamVEazc1cGFINUx1MklPYWNxdWFnaCttaW1DMHhJT1czc3VhSmsrVzhnQ1lqZUVFN0lpQjRiWEJOVFRwSmJuTjBZVzVqWlVsRVBTSjRiWEF1YVdsa09qSkZOekZDUmtaRFF6WTNSakV4UlRZNU56aEVRVGxEUWtJMk5EWXpSamt3SWlCNGJYQk5UVHBFYjJOMWJXVnVkRWxFUFNKNGJYQXVaR2xrT2pKRk56RkNSa1pFUXpZM1JqRXhSVFk1TnpoRVFUbERRa0kyTkRZelJqa3dJajRnUEhodGNFMU5Pa1JsY21sMlpXUkdjbTl0SUhOMFVtVm1PbWx1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2TWtVM01VSkdSa0ZETmpkR01URkZOamszT0VSQk9VTkNRalkwTmpOR09UQWlJSE4wVW1WbU9tUnZZM1Z0Wlc1MFNVUTlJbmh0Y0M1a2FXUTZNa1UzTVVKR1JrSkROamRHTVRGRk5qazNPRVJCT1VOQ1FqWTBOak5HT1RBaUx6NGdQQzl5WkdZNlJHVnpZM0pwY0hScGIyNCtJRHd2Y21SbU9sSkVSajRnUEM5NE9uaHRjRzFsZEdFK0lEdy9lSEJoWTJ0bGRDQmxibVE5SW5JaVB6NDc3SlhGQUFBQVlGQk1WRVgvLy84RVZxSVhaYXZHMk9vcWNMRzJ6T09rd3QwQlNKdHFsY1hWNHUrYXV0bFdoYnprN1BVQU1ZOUhjcktqdE5icThmZUFsOGFCb3N6ejl2cGRqc0dHcXRGM244dVRzTlNacGM2SnNOVDUrdjB4WUtudThQZmY1L0w0OGZnL2ZyaWN6SmdZQUFBREFFbEVRVlI0MmtSVUNaYkRJQWpGWFpPWTFUYXROYzM5Ynprc1NZYzNyNE1FNGZNQkFhRDZ6bDh5LzlUT2dldDhkNWpmTjc4YndNL2REQ1JwUjUyMXpYZm9qSEowNUlJeWhCQVVTVkFPTmRHekJZdDJmN0tGcmZrSmFBa0hoOUZaaGNEWEhSa1RLbzlNTGloR2FhdkltblYzcXlFWDBFcHJnei80RHdVRDdrQ0hSbmQ4UUZONDNHbzRVVm1ERGd6YTR3MjdvaXpkQTIrY0srdXVVcGpqbzIreHdjLzQyVzUweDVMR1llREJzUjBIVkl4NXg4aUY2MENibGJURUVrRnIyN2JOREJVVlNxMU9LVlBiRTYyYjNFSDhGcUJnNU9PT0V1YzJ0OFpKaXFNT3VHcCtjS2pnN3dWR2Nlb3pxTjRweGdWUFFrakZZZ2JWSktEVWhEQ2pZcmF3UDVxNEVUZ0M5ZklNUkh0aXRwUWNDdkpPRUxjYk1zUWduY2lSa2xqcHlRanZHNDRqcUJVRVRGaUJpMVBFSXlla096c1crVHk1Y0xIb3M1UitkTVMxTHRTU3hmM2dRSGN6UjJDSTRnTU5wVzRJUkExUU1hNnRKNCtDNnVIdUdFOG1OREl5RnFnL09QL01NVXVlUzZJcThTOTBkQWVCSlNFeS9xS2tLK0JOd3o4Y1lZNGpiNUo2dTRpV0NJMkIxWjU2TFc1a0VjNGhrZE1wc3ZVQzU1ODVTWDBRdWJjZ05xeWZnREZFY1R0KzQwLzBTNU54MHdhQ3czT0trY09iQTVJbjBBWXAwMXBqancybjYyNlVEanRId2EyOGlIdVRLcXRydityZVc0MU5aNmlHbHI3dXVMSkNma0Z0Y3RjRzA0c2dtMWVOUytaYURucGFURXJHb3lYNUpLMmlNejh4czBuT3dXR2NQRE40OXFhQ2Q0YnpKb3pEWm0vYUJLK0Vvekx3K1hoTkJpWXdIZjBzaU91MVhQa0cvekt3dnFZS2NmU3dERWNIL29VZTA3ZXMvV1E4ckl5ZzJET1hqOHRqa1pkdURCL2I4aHpEbGxNTU9DUzVCRW5kNTM0Zjh0aTNVWmM0a01zM3hMeWFmTVNzSmhkRzhYUHFqTms1dEFnTzI1ZmVLQ2huVmREai9KMEZNa09zVS94TUJ2MHdGaFllRUdmVkgxM2Z1RFUweURGTGE0ZmM3Um5XSEJmdVRGVjJ0RW1Od2FkYzdhYzNVWTJqZkJsN0hUMzZmZTM0aVFPNW1OQ0ZGQlcwN0tqUGdxaE9MVTAxdlo4UHVlWjJKQ2xGWk44amtVczY5dWthOWVQcDYrRWZMNEFGNStOeXdTYmlySHRjQjhNbC9na3dBRWprSzY0S2pIUGVBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMV9QUkUiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6Ijc3MDEwYmQ3MjEyYTRmYzliMjM2ZDJjYTVlOWQ0MDg0Iiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJ1diI6ZmFsc2UsInVzZXJWZXJpZmljYXRpb25NZ210UHJldmlldyI6ZmFsc2UsImNyZWRlbnRpYWxNZ210UHJldmlldyI6dHJ1ZX0sIm1heE1zZ1NpemUiOjIwNDgsInBpblV2QXV0aFByb3RvY29scyI6WzFdLCJtYXhDcmVkZW50aWFsQ291bnRJbkxpc3QiOjEwLCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjk2LCJ0cmFuc3BvcnRzIjpbInVzYiJdLCJhbGdvcml0aG1zIjpbeyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTd9XX19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDE4LTEwLTI2IiwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJGZWl0aWFuIEJpb1Bhc3MgRklETzIgYXV0aGVudGljYXRvciIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMTgwOTI5MDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjMuNCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4xLjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMTgtMTAtMjYifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDE4LTEwLTI2In0seyJhYWd1aWQiOiJkOTRhMjlkOS01MmRkLTQyNDctOWMyZC04YjgxOGI2MTAzODkiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6ImQ5NGEyOWQ5LTUyZGQtNDI0Ny05YzJkLThiODE4YjYxMDM4OSIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJWZXJpTWFyayBHdWFyZCBGaW5nZXJwcmludCBLZXkifSwiZGVzY3JpcHRpb24iOiJWZXJpTWFyayBHdWFyZCBGaW5nZXJwcmludCBLZXkiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9pbnRlcm5hbCJ9LHsidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoiZmluZ2VycHJpbnRfaW50ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sImlzS2V5UmVzdHJpY3RlZCI6dHJ1ZSwiaXNGcmVzaFVzZXJWZXJpZmljYXRpb25SZXF1aXJlZCI6dHJ1ZSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTEyLCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQ2ZEQ0NBaU9nQXdJQkFnSUpBUDRmU1JRcFJwM3FNQW9HQ0NxR1NNNDlCQU1DTUlHWk1Rc3dDUVlEVlFRR0V3SlZVekVMTUFrR0ExVUVDQXdDUTBFeEVUQVBCZ05WQkFjTUNGTmhiaUJLYjNObE1SZ3dGZ1lEVlFRS0RBOVRlVzVoY0hScFkzTXNJRWx1WXk0eEREQUtCZ05WQkFzTUExQkRSREVWTUJNR0ExVUVBd3dNVTNsdVlYQjBhV056SUVOQk1Tc3dLUVlKS29aSWh2Y05BUWtCRmh4alpYSjBMV0YxZEdodmNtbDBlVUJ6ZVc1aGNIUnBZM011WTI5dE1DQVhEVEl3TURZd09ESXpOVEF3T1ZvWUR6SXdOVEV3TmpBNE1qTTFNREE1V2pDQm1URUxNQWtHQTFVRUJoTUNWVk14Q3pBSkJnTlZCQWdNQWtOQk1SRXdEd1lEVlFRSERBaFRZVzRnU205elpURVlNQllHQTFVRUNnd1BVM2x1WVhCMGFXTnpMQ0JKYm1NdU1Rd3dDZ1lEVlFRTERBTlFRMFF4RlRBVEJnTlZCQU1NREZONWJtRndkR2xqY3lCRFFURXJNQ2tHQ1NxR1NJYjNEUUVKQVJZY1kyVnlkQzFoZFhSb2IzSnBkSGxBYzNsdVlYQjBhV056TG1OdmJUQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJMUFFtNTBEZ0I5ODByZElJcDZIWU5vK25mUWVVaFBzbTRzNzhOUk9lTE1PaGV1S244WnhQWERIRCtTS3FCSEFuWE5idG9ROGc0Y2grcWlTK3NXdkp1T2pVREJPTUIwR0ExVWREZ1FXQkJSRG5XbzI0QzJQcEVTelZiSlB6MVpGVGViU0p6QWZCZ05WSFNNRUdEQVdnQlJEbldvMjRDMlBwRVN6VmJKUHoxWkZUZWJTSnpBTUJnTlZIUk1FQlRBREFRSC9NQW9HQ0NxR1NNNDlCQU1DQTBjQU1FUUNJRVNrazc2a3RGbkRCRHlTZWJKSHR3M1RjSklYVGZObzVOZzRBajg4Qkk3UkFpQnRFYjVveHVpOFN6c1VaNndjUVFqbjVhQjVuZDJhTkpCaFpLK2lGSEhHeGc9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUE0a0FBQUREQ0FZQUFBQXZCVlRDQUFBQUNYQklXWE1BQUM0akFBQXVJd0Y0cFQ5MkFBQWdBRWxFUVZSNG5PM2RUWEliT2JhRzRlU05tcXQ2QlZLdFFPb1ZtRjZCVlZOT0pLL0FySWpMc2VVeEI1WlhZR2x3T1MxNUJTV3RvS1FWbExTQ3RsYkFHM0IvYWFlWkpNV2ZjNUFBOG4waUZOMG1YUlovTWdFYzRPQmdVUDN2Ly8xYVZkVkpaZTkrUGgxOWRmaDNveHBNWmtkVlZSMTUvODc1ZEhUYmVoQUFBQUFBSXZ0RkFlSmZEci8yZFZWVldRYytDaER2cTZvNmFEMXA2enIzendvQUFBQkFHZjZINzNHNXdXUVdWbGh2SWdTSUQvUHA2THoxS0FBQUFBQjBnQ0J4dGN1cXFvNVhQbXZqdWFxcVlhZnZFZ0FBQUFBYUNCS1hHRXhtNDZxcXp0clBtUG9XSUphd2J4TUFBQUJBT1g3aHUvelpZRElMSzNzZlcwL1lHOCtuby92TzNpZ0ErQlRuS3FKb0dWQUtiWit4TEZESVBRNzBBRUZpZ3daTE42MG43SDJZVDBkWDNieExBUGhKMkJQOTN2QWp5YjVvR1ZBWTZ3S0YzT05BRDVCdUtoRUwxWHlaVDBjWHJVY0JBQUFBSUFFRWlUL0VLRlR6b0ZsN0FBQUFBRWdTUVdMY1FqV241UEVEQUlDSXFLSU9ZR3U5RHhJSGs5bEpwRUkxb1pMcFkrdFJBQUFBQUVoSXI0TkU3VU9Nc2ZuNkxaVk1BUUFBQU9TZzd5dUp0eEVLMVZ4VHlSUUFBQUJBTG5vYkpBNG1zNnNJaFdydTV0TVJoV29BQUFBQVpLT1hRZUpnTWp1UFVLam1LUlNxYVQwS0FBQUFBQW5yWFpDb1FqV2ZXMC9Zb3BJcEFBQUFnQ3oxS2tpTVdLam1uRUkxQUFBQUFITFV0NVhFR0lWcS9waFBSemV0UndFQUFBQWdBNzBKRWlNVnFnbVZUQzliandJQUFBQkFKbm9SSkVZcVZQTlFWZFc0OVNnQUFBQUFaS1Q0SURGaW9ab2hoV29BQUFBQTVLN29JREZTb1JvQ1JBQUFBQURGS0gwbE1VYWhtakdWVEFFQUFBQ1U0cGRTdjhsSWhXbyt6YWVqcTlhakFKQ1B4NnFxN2d4ZkxWa1ZBQUJrcnNnZ01WS2htaS96NlloQ05RQ3lwb2t1SnJzQUFNQjN4YVdiUmlwVUV5cVpucmNlQlFBQUFJRE1GUlVrUml4VWMwcWhHZ0FBQUFBbEttMGw4U1pDb1pvUUlENjJIZ1VBQUFDQUFoUVRKQTRtczh1cXFsNjFuckQxZGo0ZGVhOVVBZ0FBQUVCbmlnZ1NWYWptWGVzSlc5ZFVNZ1VBQUFCUXV1eURSQldxdVd3OVlldHVQaDFScUFZQUFBQkE4YklPRWxXb3huc2Y0bFBZaDloNkZBQUFBQUFLbFB0S1lnZ1FEMXVQMnFHU0tRQUFBSUJleWZZdy9VaUZhczduMDlGOTYxR2dRNFBKN0tpcXFxTU5Yc0U5RXh5QXI4RmtOdHpnRjN5bEw4RTJsQ2tWdHRQVS8xdTczYUdBM2paL1AvUXRaNjFIZjNhKzRYVy9rL2wwZE9IMWI2UGZHRDl0SjhzZ01WS2htai9tMDlGTjY5R2VXbmRqVWZIVlRtTmdVQThPNm83NFpKZTA2c0ZrVnYvZnV6QlFEUTFmL2NOUkxpOXJmQitiZU9RekxZdjJ2Qi9wR3FqYndIQk5IRy83Umh2M1l0akM4S2o3OEZIM0ltM29EaGJ1ejFYMzZxTitxcFFIZnVwalQ5WG1EMTlvNzdlNlhuUjliZlRmS1BoN0tVaDg2Zmw5WlI4a0xnVFJxd0xxZS9YTGpLT002SE0vYXJUYnYrci9iNTExdURCK3FuUVAxVzEya3BOKzZyT0dDK1BIYXRmK1psRDk3LytGZitTdjFqUDdlKzF4MGVzRHVIMmhBZDNYZGQ4SzFUUTYyK1lOdHUyTjlkeG85TzcxUFRFYnMwYmpoaDdxOC9kTW4xNzByTy9vUnJQVHZReHdHaE1naTUzTFBtME1RWGxtMUFZMjcwWHZUSlZGRC9YOXlJQ3hUZmZwc0RHSnR1djM4OXpzbjlUMmRkSkg2Wm83MTgrbUV3OGZQRmZhTk1qMkdCTnViRDRkRGJyOC9kdFFINzc0czIvZjBldzN5RUJZb1RGK3FqLy9yU2Z2OWxDUG4rbzJ1N1ArWGUzSVdPM0lKbVBJOE5yRGFRMlhMNzN1cklKRWZSRDN6Z1BwMEZFUCt4RFlEQ2F6NXF5bDU4MzExTGlSZXIwNnEydTQvdHhQblNjN3R2V2dTc0UzSlYvL2pjRm0vUk1yTUg5cWRDckpCT1dEeVN3TU9OKzNudGlkeXdTaEJ3MHl6aU8wZ2R0NjF1VE5WWjhEUnZWUnB4SHUwenQ5M2xFR2U0MUIzWGlIUG9BZ3NVTWQ5T0dNbnhvaXRnbmJlbERnRlRWZ0hFeG1ZNjI4TjYvRDU4WkVRejJXRzY1WStGbmJudVFXSk40NnorNkdEL2FvOEFGeWZZTjFGYUQwY3ZDakZPbndtYjlwUFptZStqdTZLR1gxYThjWmUyOFBqWHVoeTFuSVhnV0ptaVFZNjM1TWFaQ3h5cFB1eFY2YzA5djRmczQ3NnFPK2FJYmQ1UnBlTWFqYnh0cEJuY0hySTBoY1FtT244NDc3OEw2T243b2V0MjdyMnZzNzBwam1jaUgxKzFwdDE4clY1OGJFYUxOOVhiazRsazJRcUVJMW52c1FuL1VocmZ4d2M3WERVblFzUlE5K0VoanNXTGpPT1ZqVWdPYzh3aDZhZmRXemtGZkxHbXBQZlFrU05WRXpUbXpGY0J1bHQ1ZERCVSt4MDN4WE1mMjgxUTlmR1FRWkJJbVJKRHgycW5yUUhxVDgyVzhxWkNpTXJlTUtmVGEzamI3c1lkdENtMHZhb3llZDV2RFR2NUZGa0tqTy9YUHJDVnR2Uzd2WjlreHBpYW1veGs2ZDdEaVRWY05OdVE1TXJDVTQ0TnhVOUZYY2tvUEVRZ1lhaTdZZUVLUk1NOXN4cXBYdjZrbWY5ODdYdE43amxkRUVCVUdpczR6R1RsV0I0NmNqOWQycFQreHU0NU8rSTVNSjRJV3N5cjFxcUNpejRhUCsyRnBSVEQ1SWpGU281dE44T2hxM0hzMllCbjQ1TkhCTkQ1cDF5VEtOSW9QQnpyNlNINXlxZzdrcTVEdUlzb3BiYXBDWWFSdTRqYXdtYmhacElINFJvVks1bFM5cS83WWE2RG1NWVFnU0hXWGNidXc5bWRHbFFvUERwdnJjOWIyK240V3N5dThCNHJvVENHUmxFY21GaGJpNytYVDB2U3BxMG9mcHF4TzVjYjVadjVRVUlJWUdmakNaUFdyUWwxc2pGMlpaLzlKTmtJMXduUTRtc3hDWS9GMXdnRmpwKy9sYkRVcHlOQ04yWDlCM0VEckxmOEsxcGJZUUd3ajdWekp1QTdmeGZqQ1ozZWQ0YlNnUXVjOG9RS3lVR2ZLNHpmbUFrY1l3TUpENTJLbFNwa1FZUDkzazFDWm8vQlNDdzM4S0RoQXJYVk4vNmIzdVJCTk9kWnY1WldFRjhWeVRPNnQrL2pPWXpPYTZQbjVxdzdRSy9VRi9mS1d4MURkSkI0bHFYTDBybVJaeDFJVnV0RXRkSExtblZiM1Q0R2ZabVZkSjBjMzBXSGpqdHVpemd1SWs2TnEvVmNwRWlZT3hzelhuYkVIQ1RLcXVnejhMU2kxOXliRUNsK1RieXBvR1NibjJVOXNPOUx6SE1OaFRZV09ucWpHWmNkcDZKakY2amZmR21TeXBlNy9IeEcrOWdQSzhSK3p5Um0zWVQvKzlzaE1lOU1lTCt2VWxHeVRxcHZXdVpMcDE2a2lLR3Vrc09jM0t2aVFNZm02M21iV05xVEVnTFRVd2VjbFpDb0dpcnYyU1ZnOVg0YXlzTlFwY1JkN0dnZHJLcEFORkRjWnZDaGtRdm4rcC9WTWcyY2ZyTVJ1Ti9xT2tzVk9sTnVIUGxDWnpteHB0UVo4bTlKck8xR1p2SENqcVdxM2JrL0VMc1V0SUdSM1VQMVZWL2F1cXF0OVZTS2UyTEdPdlhrRThVQ1haTklORVJiamVOMjJyaWsrT05CTnptM0hGdm5VT2xzMTRkSzNuQTlLbVRnUEZ4dVJJOFowTUIvRXZ4MlROZDBrSGlvMXFmQ1VWODFyWi91bDc2TlBxU0hZMHJpaTkvemhMTFNWZEUvK1BoYlVGdXpqZU1sQ3N4OEhQMnhZcENnR2x6dGc4MVFKWmNMQWs3ZlMyc1pyNDdmY2xGeVEyaW45NGVsdkNHVE5xNVA3c3dlRG9jd3FCWW1QMnErOEQwcWF6THZhUVJpcG9sWXE3UEY1bVhJMVVwYjVQMXRUcVFIRmQ4WUxvbHBSckw4bXFRREdyZmZWOW96N3JjMC82ajNEZkpiRjlwNUhXeS9qcHY0NjNhQ3ZxZ082bTljeUd0UHI0MHVKWTNaNTk2MWVUQ2hJYjUzWjRYa0RYSlpRS2puUXNTRW82RFJRYlFVbmZaNytXZVJmenUrbGhNUWhTVFJjb2xhOFBFMlRiT3RobkVHR3Q4QUN4ZHRZczlLRFplU1l1RXFXZ3ZyVDAwcGNjZHBscDBLZ2IwTGZQZlJObkcrNXhydHZRZlJlNFhscTUvRDdlQ0cxWmFpdUpWdWNJcmZLd3oza2lxZWhoZ0ZqNzNNVm1iSFg2cFE5MDluVVpjUVdqYjhVZ1NEVnQwQ0NQVkw3VmpoT3FFTzNkcDZmaVkyTUFudTJ4SktWVDI5R25Jbk5ObmFTazk2aHV3RDdlcjZ1L3NaQ1N1dk40UUxGRDNSNC9MOHVvWEh6c2w5YS8waEZGMHA2ck5FOGxWQWpzY1lCWUMxV2hockgyay9KNWIreEFBMExYZTZ5bnhTQllTZXpQcXBTVnNMcC9zMndRRUlzQzFUNWxYdHl3aXBpdW5nZUl0VHBRakRLRzZ0bTJrSDJGc2UzSmlvSTB6Y0IrMmZPTGpwYXNUcDQyQThRTngyb25TUVNKV2gzeW5CbXVEN0hNdXBLcE9xQXVBNWJuSlFQV2s4Z053SUU2NDFVM2t4bGRsNmtIaUE5TEdvM1kzMGt0bks5ejdwWE9yWlhLTHM4MFhYYjlWMHJmY0F0Y1N0Zy9iU1QxQUhIWjllRjZiYnpnNm9YRGxkMm83WXlaV3ZhazYrTlIzMEhkSnA3b094aEdhQmNQbDN6L1NFQkNBV0xkWDNjNWtSQmxES1grT3ZVQU1hWHgwNkhHTnk5bElteFM2T1p3VFV4MXQwMDgxSG1RcUprRzd6MkM1N2xYTXRYbkZIT3Z5Wk4rWC9qYzdsLzYvUFQ2VHRRWm4wYm9qSy9xRXIyT1Vxa1UrS0R2NFZHTjd0ZE5ydWZHZDNLcTd5Vkd3M2VwRlF5UHp1Y2lZdVA5c0hEOWI1VGlvYy84U0ovN2ljSG4vdEI2cEw5U0NCRHJRTEFPU0I1MWZheTkzclVLMnJ3WFk3eVh3ekNiclBPdm9tblVGdkQycEtJUE4ydnV6NThtV0JTOG5qb0dES3lZSkVZcktyRUR4SHI4OUsyZFdOVmZSeDQzTlIzcXRYbU9jWTRTdVIrZTZuNTh4L0ZUek8vbTI5RTZTOXF6YmVPWHhRbkxadUQ3U3RmbUppdUo5NTBHaVpFSzFYeFE2ZGRzUmZxY0tsMVk0ZmRjTHJsSTE5Sk5kMThQRGlKMHhtL0M3OGo5dTEyaDJjSGM3aHB3TmI4VFhVT25DclE4OS9NZGJEZ2J0aFhOU25wMzlKc01PdGRxZk9iZnIwdTk5dUdPd1RyN0VidjNwWEV2N2pUWnFIdjR0ZzVhTkFBWlI3aW14eUh0TTNJV3phVnpYL1dzYzhLMkRrVFZYOXdvY09naWVFQkUyaTZ5YWtYRjJ0YmpweFhqcG5Ha2xjWmp0UTFkWnVkNGVGYi9lMk0xZnFwK1hFdm5FYjZiaThXRDhzTjdHRXhtOVI4M3lRNEpFNWMvQllFYWg5eG9nbkpsMXRmaW50V3VWeEs5TjdWZng1NUZkWExoL0RtRndmSEZzZ3RtVnd1ZHNkZmVsQkQ4SE9XZVJpeDFCM1Bsc2VxdHoraEtuOW5ZZVZYT1kyRHFlUitiWC85TkdqQmM3VGlCUXZwYU4rNzBmYm1zaXVzZVAxZjdlT1U0OERqUWdDTktJUnR0aWZBTXZLNDNPRWo2UmJvbno1V0dlTlhUQTcyTEZ1azR0VXA5OTZXQ3czMnZ5NXZHM3RZWSsrL0QzdVhiQWliYjY4RHd5bXQ3aHNZSFZ3b1dQU2ZDenBRQnNqalI4S0E0WUxoTHBrYjQ5elQyK0VjUG5hNzRkNGFOLythMnN5QXhRcUdhaDQ3M0w1bFFZK0cxdCtOWkRadmJBRndYK3FuZWgzVm5mS0NHTk9mdjJUVkFXV1krSFYzcXZNY2JwOG1IZ3pVTjBOWWFxNkFlUHVuemp6YlIwQmdJalBXK3htdStCL1lqeG5XdDZ5SEtDcTUrejFEWHdzZldYN0F4am5odW4rZGt6bHZyZGpJTWdocGJYbElzc3ROTUc3dGQrTitOYVJWaDA4cnVtNnhVWEdlUTVSQWorOHFsLzFDZ005U2czdnQ5NUR6WlhtZi9YTVY2L2FFTmFveWZ2SUw0OFpKeGJiMG5mK2V4a0FMRk90aGMxZDdWN2NTMzg1azdDUklqRmFvWkZyTEM1QlU4M0dtdlpxekJrRmRuL0U2clZybWw1VVVQRHB2VVdIZ2U3WEZoZU8xNjdRY3dIM1J1WTJGMWQ2aE9ZZkhlSU4wMGpxakI0U0pOM0h4MUtwUjFHQ00xMzdHeVo5MmZ1NnlxNno0OFRhUzRpVW1xM0JKSHhtTXV0eFViQzZxczY1MTlkZTc5R1lSN3RsR1B3dXY5MUpYSm94OHZ0b2RudGRlZEhQV2orM0xvMkdhY0x3a1M2L005RDFhbGltNW9aWnVpTnJ5K3pyNzkrOUhQU1l4VXFLYUlBRkdyclI1cE1KOUN2bkxzQVZINFR1YlQwYWtHWkpaeVN5a09zNDhuWFFZb1ZhT2hjeXFPY21oNEhwTkg1OVZwZ0xnb0REWjBiL3pXdUQrZU01ejh5RTBZN0wwTzUrZDIvVm5yZW56YmVzSkdqUE9CdmRyaDB4aUY1M1NHc25YZnRLa250VW0vNmxyMEt2NWxJdkVBMFRQN3F0SUUrMG1zejZET05uQytOdDkwY1FiMWpzSWU4YU91QXNRbXh6YmpRR210MzZrTnZOT2ZMeGJPVHJSU3QrSDFaRlhjSURGU0FaYTN1VmN5clg1OFZoNXBsRys3M3Fqc2NHT2RSVHpJZlIvUEdwRHV2YWZHU2lOUWZIYjQ1NjBHcHRabkwzNUtLVUJzQ2dNQzNSK3ZJNllJOXRWMXpNSGVKblJkZm5ENHA5ODREU3ErY1Z4RmZCdnorOUc5Rjd1aWNHaVBqbEp0a3pMazJXNWVhNEk5YXYrdENYYnZTWXhMenpiQ1FCaWovQjRtVXhPYlFCazd0Um5MZ3ZZNmlEdTB1TTZiQi9ocnkwUGRobjlQb1k2OWt1aGRxQ2Jad2Q4T1BEYkdKck42b2didlMrdUozZVd3bWpoTWNRWldqWUhIU3NPeVJtNHJDdjR0NzRQbkhLNFZyU3lXVUhRclZWKzBZcFBjYW8yKzk3dldFL3V6bm14cDhtZy9yanZxcjA2ZEpzMlc2WHpTdGlRYTZIcU5NYTgxYnVtTWM2QjRtSGg5aC9NVUMrdzRqcDlhMjdJMGZ2eWtQNTdwZXErZkM0SGRRRDhyMjNwTmN0Ui9yNjYyZmQ3WUUzL1hYS1dORmlSR0tGVHpwWlRHMXFuY2YxTHBkWEt1TkJzTHA0blBnbFVwcjNDcjhiVWVtQjRhclBCYW4rTVUremdBcENuMWJCT1B2c3dsblV6dHJuVi85ZFRWZ0ZYcGZURW1hUDVnOWRDT3JrT3Y3NjN6QUxHbTErRXhpVlNwTW5tcTQ2aVUwNi92UFRKQWxxVUFLODZwVnk0L0tyYmE1M2VjTi9iQ1B5MzJFMUdDeEFpRmFoNGk3Ym1JeGJwejdHcEdkcTI2WU1DNnY3T0ZnOEt1Z1M1NGRMQXJaN1EyWkIwa2xuaXVKZ3FqUVlmMWlvSFhTcUpIOEJtMTR2QWl6YVI3RGNTcnhkbDZtQmc3YldXNlN5VkFiRGcxbkdCdk9pamhWSUNPWERwa0lLd2EvelJyU1lRRCtHKzJuWkFQa3dFcThGUUhpTS9hLy8xVHUrc2VKRVlvVlBPc1plZ2lWZ2MwaTJQWklEMGsyTUI5cDhIUXA5WVR1eUZJM0lOU0Q2d0hScDRwYmxzclliOHllc002aURoMFdpV3dEaEtmRXBuVTlGeE5KSlhja0dNTmg5YktTZ3FNSjlnWHBieWFtS3hHdFhKTFM4ZFBqVm9TOVhndFpHbmVoNkR2cFdBeFBLL1Z4OGRHZ2FjSDdjOXZqWTljajhDSVZLZ21TdVd6aUt6TC9lY1FPRjNvZGU3N3ZvL0RwQVNCd0Y2c0QvWmVOUk8ycWFXTjVJNWlGNlFBZGhiYXNjYVpWbFpPSE03ZXRKNElTaUtBMHJGTmR3NEZlUjVTcmc2YUthOVZ4TmJLU2lyVVBueHd5TktyczdKWTZkN2VwWEZsM1pWdFQrTVlqb3ZHOWY5T3g4STlhVXRGY3l4OHBQWi9zVDlaZTlhbjkwcWlkNkdhcUpYUElyR2NEZnVRUThCa1BBT1QwMWsvS2JKT3gvUzgvN2ZGN0NoeUUyVm1lbGVxam1jNU9FOWxGYkhtOFZwSWViZm5zWXFZL1BoSlJhNDgwazVKT2QyQjlqT2JUa2EvdERLb2ErQkV3VjZkN25xbzFjWDNqWit6aGZGWTJNN3cyMHZWOWoyRHhHVUhRMXRLY3AvZFBwU2FheldvZnM1c0pzanF0UklrN2tHTmhXWFYyY3J3dk1SOWVadzVDbml5bmdSZE8rRFlRZEY3aGpYR3NONW54Q3FpSVJYZXNGNUZmTXFvdXJSSHR0amhzcUlwMkloMUcvWmltNjJqczBLdzk2dU96L3FnY2R6ZHdrOTQvUGVxcXY2MTZkbkFudW1tbmdGaTB2dnM5bUQ1bnJLcTRoZ3VWcVBVbnBCeWVzUWg1SHU1Tjc1L2sxbkJDeDFmaW1XMGdXV1VVdlpzT0FpMkRoS3RVMDFUblBpOWNhamVDanNlWThGc3hwZU9hZEduckhydjVOWTRCWGk0emNTU3Npdk5KcUppbjVOb3BkUVpEc3YzbFdNK3VWV0RsRlN4bEF4WnozU25zcEpZc2RLTURGbW12RmtIaVpiLzNsT2k2WDJzL0NWS3FYald3ZEZkaHR1WVBGWTl6eWhnczczU3RzRGxHaVFXVnhsTWpaMVZPdHgxcHRWZUNSTFRZRDFRMjZlanNWNFJQdE0rS2lBWGxvTU82NVJyeXozSHFRNnVDQkxUNVhMOFN1dVJ4RGxWSnErWVZOMlo1VDdSVGlmWmN3MFN3MEN2dEkyMWxqZGpscDJhVWtRdDluK2t0SEtWbmNRbUdEelNobStZSVVWR2treWQzL1pjcmcwa1dTUkUvWkxsb0krMng0NTFXbWlPcTRnMWorQ1dJSEUzbG0xMnArMUZya0ZpOExHd0ZRSEw5NUp6SHJuRlFDR2xpcHE1c3B5VjNPZmE5aGc0aHYxZHR3a1YxQUhXU1hWL2RTK0NSTEg4RG1oM0RHaVN3cnF2ei9iWUJ3VzMxcFZPeWJyWlRURTFNVHlEUktzRDB0Y3BhVVhBNm1aOHlEVFZ0R1l5aTBkS1lURzhHdHRqQllyTWxLSlhFbTRiVXc0U1NUbE5qM1hiL1ZSQVVUUHJJUGVBc2RST0NCSTNjQk1oVUR3b29mSFdqSmhWOVRxcWV2NFhzN1VGVUNFTDZ4TDB0WERQL1RtWXpHN3BDSkd3VkNmOVRPK1p6Q2MzRVY4Zkt1dHV5eVBJcFcvc01kZDAwM0J1aC9YQmtrdUVJdzl5djdrdEE1cmtEODkvZ1ZYUWI1MEtoZTU0eis2RzZuaC9FU3dpUmFrZjZOMFRscE92dERFMkNCSVhlQnptenZYYXVlSUwxNXc2cmdUVXpuU2dhcTVZOWJMSFoxcU9XQ2xBZGJBWXp1d2NPeFRtQUxDYzkyVHl2c2pRU1lqMmsxc2VvUDlRME5uSzFzRXVZNmx1V1Y3blcvTThUUDhiSFpJZUFyZy9XMC9hK2p5WXpPNHpuWFcxdkFuUE0xOE5zZHBqU2dXNVFvUjlJb1BKN01taGZQOHE0ZmQ4VkhHc08zVzZ0d1VOSW9EVWtHcUtiVmdITGlYdE9iVitMMkZmNGhIOVh6KzVCNG5WajBGZTJKLzRydldrclZ0ZHpMbDFPSllCeldIRXdYVEtxSEJhbGhDb3ZlL2dIYjJxRDJzZVRHWVBlaDAzZEppQUtTYjFzQTNySURIM2dqWGZoWVdTd1dUMmJMd0NkY0pxZWo5Rk93SWowdjdFWEF2WnZHbzlBcURwTWtMYStrdU90Y0w0ajFKU0x6bEdBekNSK3FRZTkzbGFUTCtQak05R1hNWDYvWEQ5OTFUc2N4Smo3RThzb1pBTkRMQ25yQnpLRHZBNExIaFhoOHFNK0hzd21YME5iUTdIYWFCbitwUWlhcm5TU1dydC9peURsdFQzdys3Q2V0c1ZZNm1laWhva0trVXJSb0daYkFyWnNCTGhpb2F0SVBQcDZOTDRrSDhySVlQaFRNZHBFRENpTDB3SG9vbFA2bGtHaVZTcjNaOWxLbVdKMzRmMVNpSmpxWjZLdlpKWTZiRFNHQWZ0Zjg0a0FHTXZCckM1OHdUU1R0ZHBCb3p6d1dSMmszbmxaU0NXbEFlaVRPWW13cUV3WDRsNzdhemZFOWQvVDBVUEV1VWkwaEovS0dSREVBWVVJbUkyZ3BVM21yQ3FWeGpwYkZFSzY0Rm95bFc1TGU5YkNvQ2twYlQ5aUpWRFliVk9qMkZBZHpvSkVyVy9LTWFLUUs2RmJBQ3NvR3lFdDh1ZlRWYTl3dmczaC9hakJBNEQwU1FuVUJ6TzVDTkkzQStwajVzcGNhOGxJdXRxSmJIU2VZYmoxaFAyVWk5a3cyQVIyTko4T3JyS01GQ3MxWWYyRXl3aWQ1WUQwVlR2QmV2WHhaN0UvWmdHaVFWV05xMlpGa2lpcitxbnpvTEU2c2RBNzdyMWhMMXNDdGtBMkV6bWdXSzFFQ3d5TzQ0Y1dhNktIU1JhOE1seWNQeVU0VG5PeUJQWEdmYldhWkFvTWM1UHJESXFaQU5nUXdvVWYwKzhtTTFMWHVuc3haU08rQUEyWWIwcWxsU1FxSm9HYjFwUDdJNVZSTVRDdFlhOWRSNGtSdHlmV0ZISUJpaVA5aWdPQzlpRDhYNHdtZDJ6cW9pTVdLZnFuU2JXUjF0bklGRWpJUzNzMndQV1NHRWxNZWIreExENS9LYjFLSUNzaFRaa1BoMkZUSUVQbWIrVjR6QURUTllEY3VDd24rc2dzZXJGMXVNU2dzUzBrSklKckpGRWtGakYzWi80YWpDWlhiWWU3UTZkQm1Ca1BoMkZsTTEvSjNyby9xWU9WQVdWZmRUSXdSZmoxemhPWVRWUjk5OWg2NG5kUFdsQ0hBQ3lrRXlRS0xIMko3NWpBQWFVU2F1S1ErMVZmTXI0VFg2bW5VSUdyTE56RGlObEZxMmtJTlY2anpCWlRBQ3lrbFNRR0hsLzRpVXBYVUM1d2w3RitYUjBwQXFvdWE0c0VpZ2lkUjdCejdqanZia1h4cXVJUWNwSGNmWFZxNzUvQU1BNnY2eDVyaE5oRldBd21ZVlp4TS9Pdi8vYi9zUVFLSFpja3RyNmQ5K1J3dm9kaHhhalRtVy8wcVRRV0JVVUxRL0g5aFltdE81SlZVT0tRdjg1bU15K0dGY0JyZXNIUkovSTFYbHc3MXBQN0lkVVU4UkdBVFRzTGJrZ3NkS2dUZzMxV2V0Slc0ZnFpRG83SkZSQmNldnhQZHhxWHhhQWhYc3RaQ29vbGV4VVA1WURXeStwVEdnQnExdzUzRXZIZzhuc2FqNGRSVnRKVjl2Z3NUS2FVaDBFOUFOQkl2YVcycDdFcGxqN0UxTW9aSlB6R1c5QVZrS2dGU2FpNXROUkNCTC9wWFJVNitJYjFnNFphQ0pWT29iR1kvL3ZXYXgwYXdXSXR3NVpCcytrbXBveW5TalRnZ1JleGtwNER5VWJKRWJlbjloMUlSdHVQcUFEbVFXTVp3eG9rREN2REJiM2ZibU5BUEc0OWVUK0xza0FNTVY0YVRPbSt5MjVodnNwNVpYRW1PY25WaDBYc3JIY081ZlNRY1JBTmpJSkdGbE5SSkswOTllcm1uQUlGRjFXNDlUdmV3V0l6OXl6eVN0dTRpMkZJMlJRaHFTRHhDcnUrWW4xdnA4dWJpN0xJSkdLcmNDZUVnNFl3ejZ0MDlhalFCbzg5OE9IbGZSN3k4bGNGY256Q2hBclZoSHR6YWNqNjhKOEpZNlpyTjlUenVjT1l3L0pCNGtTYTMvaVlVZG5HVmsyZW14V0JneXRDQmhqdEVlcmRIcUdITENLSm5VOUI1UWhtUHM3ckNydWMwUkdTTnNPQVdkVlZSOGRLeDAvVVVRdUN3U0p3QXBaQkltUjl5ZDJVY2pHTXNmK2tGUUR3RWNqWUF5ZDhHOVZWWDNxb1BEVXE0N1BrQVBXaWRGWGg4cm4vd3dtczVEOWM3cEpueGZ1bWJCeU9Kak1RdWJPWDQ2cmh6WE9OL1ZqT1JGeFdHQjdhaDBrY3F4YVR5VjVCTVl5RWM5UHJGVEk1bDZ6b3U1MHp0U0RZYWMxN0doRkZPaU4rWFQwcUZXOXNRcHJlQnpBdmNvcGU1MlFvbkJmRENhekM2M1NlWHRUSDcyaFB2UnhZZEwxVncyWVR5S2ZqZnJKSVMwU1A5d2JGMllaRmxhQjFucWZKV2RPOTFRdTZhYmZSTnlmV0hWUXlNWnlOWkVLaUVCRVdsMDhVaXBxakpWRlZpbVFyUGwwZE5uQkh0NWpCWXp2R3ovdkZFekVEQkFmNXRNUktlRytySU9XWXZaNWExWFVlcktTSUxHbnNnb1NKZGIreE5pRmJDeFgvaWhzQVhSQUUxbEhTa1AxZEV4YU9SSjMzdkhlM1M0OE0wa2JoZlVxYlVuZm1mbDdZVlc4djdJTEVodjdFMk9JV2NqRzhpWXNNY2NleUlMMkxZYkpyTitkVnhVcFRvQmtxYThlZHJCbnR5dmZBa1NxbWZyVDhXaVdEam8rSzl1UzlTSkIzeVo2MEpEalNtTGRRUHpSZXNMSEsrMnY4SDVQWDQxdlJ0SmRnQTdOcDZNYjUwRXlRU0tTMXFOQXNRNFFPZWc5SHVzcXV0bG5ZQ203NUUzcmlmMndpdGhqV1FhSlZmdzlEKzhqblUxbXVYR2FQVXRBeHpSbzlMb1hTVGRGOG5RUERBdGVrU0JBN0laMWx0ZWJBakt3UE1hcEJJazlsbTJRS0dIdzlkUjYxTWRWaEVJMmxvMWVTZWtUUUxhMG91Z3hvY1ZLSXJKUWNLQklnTmdkajYxQXVXZGdlYngrZ3NRZXl6cElWQ3BMckJTQkF3V0ticlAzS3FsdjJZbHlrQytRQm8vT201VkU1T2Fpb05UVDBGY2ZFU0IyUStNbDYwV0M4MXdMZ2cwbXM2SEQyWjkzN0xIdHQ5eFhFbVB2VHp5T2NKYU81ZGxuaDZ3bUF0MXptQUFDc3FCRDdFTy8rWitxcXY2TWZCeUZsM0FPNGdrRDZNNVpyeVllWkx5YTZESFc0N3p0bnNzK1NLemk3MDk4NDF6STVzWjRwdldTVXZsQUV1aHcwUnVoM3hsTVpxRnYvcWVxcXJOQzNuZFl1WHJOT1lqSnNKeFVyNDF6MjV1bzErdHhqOUZuOVZ3UlFhTEUzSi9vVnNoR001T21leE5KT3dXU3dLb0Rla0g3OSs5MW1IMEp3c1R0aC9sMGRNU1pjZCsvMzg0NVpXZ2NPQVdmbmp4ZTc1MCtYL1JZTVVGaTVQMkpsWE1oRyt1ZzdwM3kxUUYwaDcxTEtKNzZ4VnVkTTV5N2I4R2g5aDdtUE5scTNmYWt0TkxtRVNDOXlXWE1wTmRwZmV4RkZXRnJGVEpRMGtwaTdQMkpib1ZzTkh0ejNYcGlQNjVGZHdDOHlIclEwZnNWRGFTbEVTRG12dS93U1dPSmI4Rmg3bnNQSFY1L01wV1Y1OVBSbFZNeHBGekdUQjVCOGpPcHBxaEtDeEtyK1BzVFBRdlpXUCs3aDl6MFFLZHlQNE1MV0VuN29uSU9FRU5nK0ttcXFuOHJyZlN5c01JMGx0dHhVanQ0M2lOUU9rdzk3VlQxTWF3cm1nWlhGR1ZDVldLUUtESDNKN29Vc3RHK0IrdGc5NVdxekFHSXozcGd4VW9pVW5KakhDQ0d2V1p2cTZyNlhjSGJYZXR2N1AvdlgydkZzQTRNeHdVZmFVM2dkYmdBQUEvNFNVUkJWR0c1dit3NHNlSXVsMDZyaVdlcFZvalhxdjM3MWhNMmN0dVRDU2UvbFBqQmhoa1FGWmI1dS9Xa2oxREk1bDZIWmxzYU8rU2FoMFl2ZkVZY2pRRkVvb0dHOVFvTGV4eVJCT01WalREQmU3NVFJT1o3MzZvVXdEcmRjVmtLOTVGK3ZpNjVSOEsvK2JXblp4dUc5LzZxOWVqdXpsTXBpcWN4MzZWVDBQUjVNSms5cGxTd1NQZUFWMmJZTlFWclVDc3lTS3kwUDNFd21ZVVp3byt0SjMyRS9QV2haZWNUYnRUQlpIYnRVTnFZUUJHSVJCMjY5V0RxaVhRZ3BFRFh0OVdSRUNGQVhIditvSjZyQit5c3BtL3UxamlJU2laSWxFdGRoeDdwempmVzQ3czkzVGdXaHFJYVByNHJOZDMwbThqN0U3MEsyWXdkMHloSVBRWDhYVGgwNkF5T2tRckxnWG4yUldJU1poM2dIS2FVaXFucnhpdkFDZGYzYlFwSGYyamNacmtpM01RcUluNVNkSkFvTWZjbm1oZXljVzc0UXFCNG45dkJzYlZVem1wQ1hHRmdrc3MxcTBHVXgxbHhGS0ZDS3F4V0VaOVZxUklPTkphdzN0ZDVtVklGVUMwTVdKK2JXT3M4VUZTQTZIRm9mcVhGQ0t0N0dZVW9Qa2pzNFB4RTgwSTJhdmlzRy9kYUNHenZ0WWN6Q3lIdFl6Q1poWldVdndrVSswVURrczlWVmYwVHJvRlVpd3BVUHdMRXo2MG45dmZzc1A4WjJKcjZEYXRWUlBiWStyTnVOdzRTUEUvUHMwK29BOFdvL1U3bzk1d0R4SXBWZkN6VGg1WEUyT2NuVmlwa3MyeEQvVDdPbmRKT0t6VjhmdzRtczV1VVYyaTBnaFJTSWY1cXBGc3c4OVV2emNtTVYzVlJnVEF4azlLMU81ak14azRCWWtYbE9TUWtpd1BIOFoxSFFQZEc3VjBTTk43NzRQaGFEdFR2UkZsRmJSd3Q0eGtnUG1neEF2aEpMNExFS3Y3K3hFb2JuYzBHcmNvVDk1NjllcU5WeFl0VVVrakNaNmpYODFXRDdzVzlYZG1zZ01MRXN1LzdVQVVaL3RGRVIyZXJpN3BlYjUwTFpwR1NoMVNReVpFUnJSUjVqSU0rSnJZLzhjSXg3YlQyVHVNbHQ0a1NmYWIzVG1jaDFwNGpqQzJScWQ0RWlSSnpmK0tCQWtXellFc3BadGV0SjJ3ZGFNRDlxSm15NktzelNxMDQxMkQ3SDcyZVZTbE5Cem1seW1KM3VwZGVPaExtaldaNVEwbjBxMWpYaHE3WkMzWG9Ya1VGS2dvTElER1cvWVBuZllNZnZGYU1QcXZOVFdXUDRxbGo5bFV0VEZEK1paMkYxZGhTODNuTjJNZktSVStQaE1FR2VoVWtkckEvOGRpNlFkYXhGZDR6WkpVYXBuZk52VitlalgvWVd4aFNWdFF3L2tlTjQ2YURCb0xFZnRqbWV6NVFlczZmellEUitocFdaMzZsYTNiZFpJWUZDZ3NnTmFaVmUxUGVZMXdLbmZmblZlUGdUS3RyblgrUGtiS3ZhbThhbVN3N2owZlVSOTB1YktueGRFMmFLZFlwOXB6RVZUbzRQL0ZNQisxYjNvaERyVmg0blpPejZGVmovOWVEOHVQRHorTzJNMUNOZzVEckE0K0grdk0rZzJ1Q3hIN1k5WHV1QThadmV6b2ExL0M5cnVHTmo1TlFhdEdKZml5TGRteUN3Z0lvWGRoYWNNTjE3dTVDZ1lpSFE0MFZMbFFvSjdTdlgwTTcyK2ovYTZFOS9UNG1tRTlIcHBsTElmc3E4bmp2amZab1BqZmUrLzJxY1pKV0grdStaQmh4VEZkcHNZRkpSNnpWdXlDeDB2NUV6ZmJFU20vNXFFRFI1R3l6MElIcTlkOUdIcVJXV2gwOXJzdjZoMFA1bGNMN1VncmNrV01EK0MzbGxJcVA1ZG93MVhSVHg4MDlIcnFHbjErb3JyanZSTWErN3BqeFJZS2VqTnYxUTFXUEhCSW8rbEhBZHVjOEJqclVPS0U1VmxnckJFM1c2ZlFhNzUwNEYzNVp0RGd4V1MzME1WMzNKK0cxbkhLUDRTVjkyNVBZRkNOZnZjbTZrTTI5WnA1aXZvZFZEaHVyamF0K3ZHZklXRTBzbS9mM2U3RGl1cTEvdXU3UVNjTkRpanoyeHg1clQvdzRwVFA0Q3BSaW0rSlNCRWJiZEx6ck9iemtJS0grWk1qZWRteWl0MEZpQi9zVFBRclpwQlFvZG8wZ3NXeDkvbjdwMEpHcWRhdnYremhRaXVDajloT2ZwM3c4VTQ3VXBuZ2VGYkVMdDNZK2tVQ3hhM1dBU0tFYWJLU1g2YVkxcFZ4OFVNR0pHT3BDTm1ZemVOcGpPZXdvOVRRbEllWDBoTWF2UE1hcHBybDV5eldOaE4zVzZZUk9GdFAyNnBTOThQTlZLNW5OQ1pSN1V1ZzJGNDZLME5ZVnp5TVd0dUY2N21ZSUZKWDZHVFAxTkJVRWlOaGFyNFBFNmtjak9ZeTRQOUc4a0UwalVMeEtxTEh2d2prYnNZdlUxMVhFRUNCeUppSlNackxQZmd2TmxMMmxOdG43OW9MRi9jbDFRSHBmRjJCWi81OW5aNmhBTzRWSjVnUHRSM1g3akJVbzFzZEw5TVdUOWlBU0lHSXJmZDZUMkJSN2YrSkg2d05ZRzZtblhxV3RjMERLYVpuNnRoOHZ0RVcvRXlBaWRWcTFLeTJGYjNGLzhqdGxHLzJwTS9IbVlhSlhhYkJqRlVYSmxyN0RsTGF0dUs0bVZ2OTl6NkZ0ZmQyVHJUcWhpaWxaVnRnSlFXSTMreE1yNjBJMmxkN0hmRG9LRGV5bjFwUDljSmg3aDQyZjZSNVp1V3BRb0NlbEJGR3BGN25vNDJUR3NWSVd3NzdKdndlVFdiMTNNc3VKU2dVUXFXVGhSUGtNdFZwNVV2akUrcWY1ZEhSQ0NqWjJSWkFvYWpCaWJ1STJMMlJUbTA5SFk4MlNQYldlTEI5VklNdlNwOVhoTzJaOGtSdm53OWx6Y2FpZzhjL0JaUFpWQVdOV0U1WmFYWHVid09yYWNheXF0cUY0anliV1V5dmdzNjg2RzRYdE45Z0xRV0pEMko4WXViT3JDOW1ZYTh5UzlXbFY4VTRIMktJY2ZSaUFoZzc5anpCWVljWVhtVHFueXZaM2RiR2RzTUo0bTlQcW9nTEZGRkpQM1ZOT216VDIrNjJRdmlha2Z4K1JqUUlMQklsdHNmY25oa0kyTHJNOVNqK3RWeFZMSG1pSFJ2RzFCdG1sRlJYb3RiQ3FwcG5lMTRXV0wvK2kxVU1PeWtlMmRKekNCZDlneXl1dExqNWExeUh3b2t5R0UrMWw2MHIwd0xxeHF2aDdwbGxZZHhvSG5UUFpDQ3NFaVFzNjJwOW9Yc2ltS1FST2F2emVGcFNDK3F3VWtkL1VLQkljRmt6WDhMbG1lLzhvNERxdU8vUlR6a0JFQ1RUUjBmZHo2Rlk1Vk5HYjJ4ek9lMVRBZE5KaEdtWm5BWFZZZ1p0UFIwY1pqWmVlVkFtYlNYS1lJMGhjb29QOWlaWFgvc1Nta0VyU2FQeHlYVm44b2x6N1gwT0tDQVBzZnRIZzVWTFg4YitWVHAxVHdQaUZWVzhVYk56eENsVHF3c3JpdlZmMmtMVU8wekFQdXc2bU14Z3YzV2tzZEVRbGJIZ2hTRnloZy8ySkI3SE9uRkxqTjJ3TXNsUGZTL0pGRGZXL3RQSkNyajNxVk5SeEkyRDhrT2dBOVVtcm43L3AraVU0UkpFYXh5bjB2WkROT2dmS0hycU5WYUJsSDQwMHpOZnFpMk5KWWk5blk3ejBXd0tUa2s5NkRiOXBvcEd4RUZ6MS9qRDlGNXhHUG1RMlZQVzZVbHFkdTBiWjY3RTIxdy8xbmc4anZkOVY3aFF3M3pLZ3hpWjBMWWVmQ3cyOGh2bzU2ZWdJalMrNmhtOVk3VWFmMUlIaVlESzcxQm1EV0M2MFM0ODZQRDc1aXNicWkrdDAyVk1WS3pwdS9jWDlQRFQ2L3FRQ0lMWGo5WGpwcERGZTh1NWY3aHA5Q1pXdkVkVXZHbGk5ZHZpbDJWL01vYk5UWTVEOEhvSjlxVUcrVVFONHBNRjFQY2crY1FpVW4zV05mTlgvaHAvSHhCckJxMWlydXdrS25hSFZMSGZVVGZRYXBONDBLOTNxUHE3djVhSCsxMkl5NUVrVFNmVTFmSjloUjI1OW5YdTlmOHQrS3JmQTNmSzlSN2srd3lyL1lESzdVVUdiUHAxMXVvMERCVjVaQklyVmoyQXBUQUJjTmliazZ2YjFWLzBzQm85UFMrNjV1djkvVk4rZlRWL2JtSlQ4Vm5CTU5TWHEvdVZreC82bEhoTTlOdnFTbk1jZjFyRkZUdjFxTVdQSHdYdytiejBJTExOUVhHZVRqZVgzaXdFQ0s0TklpU1pFNmttZ294Y21oSnJYN2lNcmhNQm1sS2x5RlRFckowZS9rejVZRmdYUkw1MlhlVTgxVXFTS0lCRUFBTGhRa1pZTEFzUVhoWldrYkZZVUFaU1BJQkVBQUpoUzVzbmxrdFJEclBhc2MxUEpVZ0RRT1lKRUFBQmdRaWwyRnhTdDJkbURWaFJKUVFUUUtZN0FBQUFBZTFPQnFGc0N4TDBjSzhnR2dFNnhrZ2dBQVBiaVhKem1JVktWNUpTcXNMNm0wQnVBTG5GT0lnQUEyTmxnTWd0bjVuMDIvZ1NmdEtmeEtuYnFaYVBxY2ZONGg5am5CMTl1VUJrVEFOeXdrZ2dBQUhiaUVDQ0c0UEJpUGgxZHRaN3BrUE1oOHF1OFRlMXpBTkFmQklrQUFHQnJ4Z0hpczRMRHk5WXppVkhBR1BZTm5qbS9zcWY1ZExUdTdGWUFjRU9RQ0FBQXRxSWlOWDhiZldwaHorRnBia2MvUkFvV09XUWZRQ2VvYmdvQUFEYW1ZeTZzaXFwYzY4aUg3TTRHREs5NVBoMkYxZFRYV2duMWNON3R1d1RRVjZ3a0FnQ0FqUTBtczdDeTljYmdFN3RXa0pXOVJ1RHNzVi94WDV5YkNDQTJWaElCQU1CR3RBL1JJa0M4S3lWQXJQNjdxdmhWMVZBZldrL3U3elQyK3dFQWdrUUFBUEFpclpaWkZKWjVMakh3YVFTSzFxbW5CSWtBb2lOSUJBQUFteGdiSFpZL0xqVjlVdS9MZW9WMDJIb0VBSnl4SnhFQUFLeWxWY1JIZ3lDeEY4YzZEQ2F6c0QveFZldUozZjJXWTNFZkFQbGlKUkVBQUx6RWFoVXgrWE1RalZnZmdzOTVpUUNpSWtnRUFBQXZzVXFodEE2ZVVtVjl0dUZKNnhFQWNFU1FDQUFBVmhwTVpxRnd5dUdxNTdmdzBKZWpIUFErTFN1ZC90cDZCQUFjRVNRQ0FJQjFyQXFuM0xjZUtSdG5Hd0xJRmtFaUFBQll4K29JQmdxdkFFQW1DQklCQU1CU3FtcHFrV29LQU1nSVFTSUFBRmpGc21CSzM5Sk5BU0JiQklrQUFHQVZ5NFBjKzFhaGs0cWtBTEpGa0FnQUFHQm9NSmtkR1owckNRQ2RJRWdFQUFDcldCN2kzcWVWTmNzVjJJcFVYUUN4RVNRQ0FJQlZDQkozWTFVUnRzWnhHZ0NpSWtnRUFBQXhIQ29OczJpcUNQdkc4ajNPcDZQYjFvTUE0SWdnRVFBQXJHS2Q1bmplZXFROFkrTjM5TkI2QkFDY0VTUUNBSUJWck5NY3gxcHBLNUxlbTNXUXlINUVBTkVSSkFJQWdGV3NnOFFEaHlBcUpWY09WVTF2V284QWdET0NSQUFBc0lySEt0Yjd3V1JXWEJHYndXUjJhcjBYVWRpUENDQzZ3WHcrNTFNSEFBQkxEU1l6ajRIQ1U2aDJPcCtPaXFqYXFhRDMxbUVWOGN0OE9yS3VsQW9BTDJJbEVRQUFySE8zNXJsZEhZYWdxb1Q5aVk0QllxWDBWUUNJamlBUkFBQ3M0N1VuN2xpQllyYXBwODRCNHROOE9tSS9Jb0JPRUNRQ0FJQjFQRmV6NmtBeHU1VEt3V1FXQ3ZEODdSUWdCaGV0UndBZ0V2WWtBZ0NBdFFhVFdRZ1V6OWI5SFFNaHJmVjhQaDA5cHZ4dERDYXpJd1hPcjFwUDJnbXJpRWV4M3hzQTFGaEpCQUFBTDRteHFoV0NybjlDUURxWXpJYXRaenNXZ2tNRnkvODRCNGdWcTRnQXVzWktJZ0FBZUZHazFjU21CNjNZM1hTNXVxaUE5VHppZTcrYlQwZkpCY2tBK29VZ0VRQUF2RWhwbHZlT2UvRFdlVkNCbUc4L25rZG5xT0xxVUQrbnFzUWF5M1A0dmZQcHlPTjhTZ0RZR0VFaUFBRFlpSXExZkV6ZzAzcFd3QnArdmpZT25IL2NkTlZSd1dCZFdUVUVoRWY2ODNIckw4Znp4M3c2dXV6dzl3UEFOd1NKQUFCZ1k0UEo3RGJDbnJ3K3VwNVBSK2Q5L3hBQXBJSENOUUFBWUJzaEJmT0pUOHhVU0tjZEYvUitBR1NPSUJFQUFHeE0rd0ZQbGZLSi9UMW9INkxiUGtzQTJCWkJJZ0FBMklvS3F3d0pGUGRHZ0FnZ1NRU0pBQUJnYXdTS2V5TkFCSkFzZ2tRQUFMQ1RScURJSHNYdGZDRkFCSkF5cXBzQ0FJQzk2RGlKRzZxZWJ1VERmRHE2eU9CMUF1Z3hna1FBQUdCaU1KbUY0T2M5bitaU1liWDFmRDRkM1M1N0VnQlNRcm9wQUFBd29SV3lmMnUvSFg3NEZBN3FKMEFFa0F0V0VnRUFnTG5CWkJiTy9RdEI0MEdQUDkyN2NQNmg5bTRDUURZSUVnRUFnQXZ0VlJ6cnAwL0JZZ2dPTDFnNUJKQXJna1FBQU9DcVI4RWl3U0dBSWhBa0FnQ0FLQlFzbmlwWVBDN2tVdy9uUkY1VlZYVTVuNDRlVzg4Q1FJWUlFZ0VBUUhTRHlleEl3V0lJR2c4eit3YWVkZVRIelh3NnVtazlDd0NaSTBnRUFBQ2RHa3htSnpxVS96VGhzeFpES3VtdEFrTUswUUFvR2tFaUFBQkl5bUF5Q3dIalNlTW5kbXBxQ0FoRDZtZ0lCdS9aWXdpZ2J3Z1NBUUJBOHJUYStLdFdIQ3NGa0w4Mi92OG1CWEdlRlB6VjZ1RHZzUTRLNTlQUjE5Wi9CUUI5VWxYVi93UGhXSzN0TVBWdEdRQUFBQUJKUlU1RXJrSmdnZz09Iiwic3VwcG9ydGVkRXh0ZW5zaW9ucyI6W3siaWQiOiJjcmVkUHJvdGVjdCIsImZhaWxfaWZfdW5rbm93biI6ZmFsc2V9LHsiaWQiOiJobWFjLXNlY3JldCIsImZhaWxfaWZfdW5rbm93biI6ZmFsc2V9XSwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMV9QUkUiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6ImQ5NGEyOWQ5NTJkZDQyNDc5YzJkOGI4MThiNjEwMzg5Iiwib3B0aW9ucyI6eyJyayI6dHJ1ZSwiY2xpZW50UGluIjp0cnVlLCJ1cCI6dHJ1ZSwidXYiOnRydWUsInVzZXJWZXJpZmljYXRpb25NZ210UHJldmlldyI6dHJ1ZSwiY3JlZGVudGlhbE1nbXRQcmV2aWV3Ijp0cnVlfSwibWF4TXNnU2l6ZSI6NzYwOSwicGluVXZBdXRoUHJvdG9jb2xzIjpbMV0sIm1heENyZWRlbnRpYWxDb3VudEluTGlzdCI6MjAsIm1heENyZWRlbnRpYWxJZExlbmd0aCI6MjU2fX0sInN0YXR1c1JlcG9ydHMiOlt7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEX0wxIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjItMDEtMDYiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJWZXJpTWFya-KEoiBHdWFyZCBGaW5nZXJwcmludCBLZXkiLCJjZXJ0aWZpY2F0ZU51bWJlciI6IkZJRE8yMDAyMDIyMDEwNjAwMSIsImNlcnRpZmljYXRpb25Qb2xpY3lWZXJzaW9uIjoiMS40LjAiLCJjZXJ0aWZpY2F0aW9uUmVxdWlyZW1lbnRzVmVyc2lvbiI6IjEuNCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyMi0wMS0wNiIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxfV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIzLTExLTE1In0seyJhYWd1aWQiOiI3Yjk2NDU3ZC1lM2NkLTQzMmItOWNlYi1jOWZkZDdlZjc0MzIiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjdiOTY0NTdkLWUzY2QtNDMyYi05Y2ViLWM5ZmRkN2VmNzQzMiIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJZdWJpS2V5IDUgRklQUyBTZXJpZXMgd2l0aCBMaWdodG5pbmcifSwiZGVzY3JpcHRpb24iOiJZdWJpS2V5IDUgRklQUyBTZXJpZXMgd2l0aCBMaWdodG5pbmciLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MzI5NDc2LCJwcm90b2NvbEZhbWlseSI6ImZpZG8yIiwic2NoZW1hIjozLCJ1cHYiOlt7Im1ham9yIjoxLCJtaW5vciI6MX0seyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3IiwiZWQyNTUxOV9lZGRzYV9zaGE1MTJfcmF3Iiwic2VjcDM4NHIxX2VjZHNhX3NoYTM4NF9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6Im5vbmUifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwYXNzY29kZV9leHRlcm5hbCIsImNhRGVzYyI6eyJiYXNlIjo2NCwibWluTGVuZ3RoIjo4LCJtYXhSZXRyaWVzIjo4LCJibG9ja1Nsb3dkb3duIjowfX0seyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicHJlc2VuY2VfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIiwiY2FEZXNjIjp7ImJhc2UiOjY0LCJtaW5MZW5ndGgiOjgsIm1heFJldHJpZXMiOjgsImJsb2NrU2xvd2Rvd24iOjB9fV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCIsIndpcmVkIl0sInRjRGlzcGxheSI6W10sImF0dGVzdGF0aW9uUm9vdENlcnRpZmljYXRlcyI6WyJNSUlEUnpDQ0FqR2dBd0lCQWdJVWV4OW5UOXZ3Wk5YUzQ4M0xkaVlHZncyU2pTb3dDd1lKS29aSWh2Y05BUUVMTUM0eExEQXFCZ05WQkFNTUkxbDFZbWxqYnlCQmRIUmxjM1JoZEdsdmJpQkpiblJsY20xbFpHbGhkR1VnUWlBeE1DQVhEVEkxTURnd01UQXdNREF3TUZvWUR6azVPVGt4TWpNeE1qTTFPVFU1V2pBbk1TVXdJd1lEVlFRRERCeFpkV0pwWTI4Z1JrbEVUeUJCZEhSbGMzUmhkR2x2YmlCQ01pQXhNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXUxTWV2bnk5ZHlPOVpVQzM5U29NaExjUi9EWHJ0Ri9jaU0xMnRjaXkyRVhBWjZNa3JpdlZ0Q2ZFVk05WDZJU1RFbkJQNnVTWVlvdjZwcHY2TzZKaDJOSG1ZbTR3K0puUzRWbkNQVTdtSEFNZlZJMk1HVFRNVk9ldzB4VXNHN3NJU0lrSURVQm11azhZSzljNXppYzkrdkZRR0xJa3NkWE81aVZGSWdORzUzY0dYRDRaTFpvQVBpdTBQRW96eEFxWUlhSTRneEtoT0EzUzgvVzhtSVdzdTZvZnlqNEd2a0ZHNlo3a3lGMzEwN1A3bXdGSExySTNFTmFQV01PRmNUYUdhMGR3Ky92VlJ3alJjRVpCVnN1dVQvODdja1NzMGE1cGt0M3ZaQmxhWWVUOHB6U3JlVjdtb3djSU05MEwyaWFBVGxQMG54bWFFNm5PeVRib2pGVmwyd0lEQVFBQm8yWXdaREFkQmdOVkhRNEVGZ1FVU1hFaDNzYTNidER1cm00TU0vQzdTMWxSdXVZd0h3WURWUjBqQkJnd0ZvQVU2cmRDa0o0TWUyUjYyMVI4QTdwOFRwL1lvV0V3RWdZRFZSMFRBUUgvQkFnd0JnRUIvd0lCQURBT0JnTlZIUThCQWY4RUJBTUNBWVl3Q3dZSktvWklodmNOQVFFTEE0SUJBUUI1R2MzaGFmdHA3aEtzRVpzbytpL1o1blJ1cWRtekcyV0NsVW9SVXFiYVB5Z2xuSkRqS1Iva2ZnT2w2aWJiRi96dGhtM0ttWFE3SGNESVAyeE1kRzdVMkwyaW1iSlFIcVBmL2gySHFvamI0clpndWUrNlc0a3RTUjVlbFI5TDFyWXFFL1NHWU00aUVLb1ZRU3Y3UlQxcnhJZVdpS3N3L1Z4eGkvUU9uc3gzRjd4ODBDQ1lnQjRFM3lReDhWVFc0NDBoVEV3VEExZU1IT2l4MzJ0UHR5eUhJYThQVlZJZlZwSFFKQmFNVnZ2NTA4VUVqd2tiVTJybmpmem9TVE5TOUE1alVROG1CU3ZlOTVyakIwZG85OEVVK0R4ZEJxWDIrSDZpNXdsSUNGZ3poZHpjc25lOWhHS1Q2bHpUWDRjSWRKc3JZMit4bGVLMEZGUXk2bEdFVkxFZSIsIk1JSURTRENDQWpDZ0F3SUJBZ0lVRHFFUncrNFJuR1NnZ3hnVWV3SkZFUERSWjNZd0RRWUpLb1pJaHZjTkFRRUxCUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93TGpFc01Db0dBMVVFQXd3aldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlFbHVkR1Z5YldWa2FXRjBaU0JDSURFd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURJN1huSCtadkR3TUNRVThNOFplVjVxc2N1Ymx2VllhYVJ0M1liYXhuOWdvZEx4NXN3SDBsWHJkZ2poNWg3RnBWZ0NnWVlYN0U0YmwxdmJ6VUxlbXJNV1Q4TjNXTUdVZThRQUpiQmVpb1Y3Vy9FK2hUWlAvMFNLSlZhM2V3S0JvNlVMZU1uZlFaRHJWT1JBazh3VExxMnY1TGxqNXZNajdKdE9vdEthOUo3bkhTOGtMbXpYWFNhajBTd0VQaDVPQVpVVE5WNHpzMWJ2b1RBUVFXckw0L0o5UXVLdDZXQ0ZFNW5VTmlSUWNFYlZGOG1scUsyYngyejZva1ZsdHlEVkxDeFlicFVURUx2WTF1c1IzRFRHUFVvSUNsT200Y3Jwd25EUkxWSHZqWWVQR0JCLy9wRXl6eEEvZ2NTY3hqd2FIMVpVdzliblNiSHl1cktxYlRhMUt2akFnTUJBQUdqWmpCa01CMEdBMVVkRGdRV0JCVHF0MEtRbmd4N1pIcmJWSHdEdW54T245aWhZVEFmQmdOVkhTTUVHREFXZ0JUUzd1OWFJbzA2YlZ3amx6M3loZFVtOFNWN2tqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQTRHQTFVZER3RUIvd1FFQXdJQmhqQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFxUWFDV014VEdxVlZYN1NrN2trSm1VdWVUU1lLdVU2K0tCQlNnd0lSbmx3OUs3SGUxSXB4WjBoZHdwUE5pa0tqbWN5RmdGUHpoSW13SEpneHh1VDkwUHczdllPZGNKSk5rdERnMzVQWE9melNuMTVjRkF4MVJPMG1QVG1JYjhkWGlFV09wem9YdmR3WERNNDFaYUNEWU1UN3c0SVF0TXl2RTd4VUJacTJianRBbnEvTkRVQTdiZTRIOEgzaXBDKy8rTktsVXJjVWgrajQ4SzY3V0kwdTFtNkZlUXVlQkE3bjA2ajgyNXJxRHFzYUxzOVRiN0tBSEF3OFBtcldhTlBHMmtqS2VyeFBFZmVjaXZsRmF3cDJSV1p2eHJWdG4zVFYyU0J4eUNKQ2tYc05EMDVkQ0VyVkhTSklzK0JkdFRWTlk5QXd0eVBtbnliMHY0bVNUenZXZHc9PSIsIk1JSURQakNDQWlhZ0F3SUJBZ0lVWHplaUVESkVPVHQxNEY1bjBvNlpmL2JCd2lVd0RRWUpLb1pJaHZjTkFRRU5CUUF3SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRBZ0Z3MHlOREV5TURFd01EQXdNREJhR0E4NU9UazVNVEl6TVRJek5UazFPVm93SkRFaU1DQUdBMVVFQXd3WldYVmlhV052SUVGMGRHVnpkR0YwYVc5dUlGSnZiM1FnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTVo2L1R4TThySVQrRWFvUHZHODFvbnRNT28vMm1RMlJCd0pIUzBRWmN4VmFOWHZsMTJMVWhCWjVMbWlCU2NJWmQxUm54MW9kNTg1aCsvZGhLN2hFbTdKQUFMa0tLdHMxZk81M0tHTkxadWp6NWgzd0duY3I0aHlLRjBHNzRiL1UzSzloRTVtR05ENnpxWWNoQ1JBSGZyWU1ZUkRGNFlMMFg0RDVuR2R4dnBwQXk2bmtFbXRXbU1ud08zaTBUQXVjc3JiRTQ4NUh2R000cjBWcGdWZEpwdmdRamlUSkNUSXErRDM1aHd0VDhRREl2K25HdnBjeWk1d2NJZkNrenlDaW1KdWtoWXk2S29xTk1LUUVkcE5pU092V3lETVRNdDFid0N2RXpwdzkxdSttc1V0NHJqMGVmbk85czBaT3dkd01SRG5INHhnVWw1Wkx3cnJQa2ZDMS8wQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZOTHU3MW9palRwdFhDT1hQZktGMVNieEpYdVNNQjhHQTFVZEl3UVlNQmFBRk5MdTcxb2lqVHB0WENPWFBmS0YxU2J4Slh1U01CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRTXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJEUVVBQTRJQkFRQzNJVy9zZ0I5cFo4YXBKTmp4dUdvWCtGa0lMa3Mwd01OcmRYTC9jb1V2c3JoenN2bDZtZVBNcmJHSkJ5SjFYbnF1QjVzZ2NSRU5GeGRRRm1hM21pbzhVcGYxb3dNMVpyZVhySjBtQURHMkJwbHFiSm54aXlZYStSMTFyZUlGVFdlSWhNTmNaS3NEWnJGQXlQdUZqQ1dTUXZKbU5XZTltRlJZRmdOaFhKS2tYSWI1SDFYZ0VEbHdpZWRZUk03Vm9sQk5sbGQ2cFJGS2xYOHVzdDZPVE1PZUFEbDJ4TkYwbTFMVGhTZGV1WHZEeUMxZzkrSUxmejNTNk9JWWdjM2lyb1JjRkQzNTRnN3JLZnU2N3FGQXc5Z0M0eWkweEJUUHJZOTVyaDQvSHFhVVlDQS9MOGxkUms2SDdYazM1RCtXVnBtcTJTaC94VDVIaUZ1aGY0d0piMGJLIiwiTUlJRFNqQ0NBaktnQXdJQkFnSVVSMzhtcTI2U2Yyc3pWVjJCZEc2V0VON2t1V1V3RFFZSktvWklodmNOQVFFTEJRQXdMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkNJREV3SUJjTk1qUXhNakF4TURBd01EQXdXaGdQT1RrNU9URXlNekV5TXpVNU5UbGFNQ1l4SkRBaUJnTlZCQU1NRzFsMVltbGpieUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRUlnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTlkwV2I5b1BvUm9Lb1F5V1BhSnB6MTF2cldUZzZ6VHRtTmoyVm9LUm55dktHUnFwemI4M3c1bDZZQTk2VVlrWUJEUVAwaWxPMkRQZTZ3V3FWUjV6RGZSemRjSDhiaCtMN2RHR3ZhZTZoUlRaaGtGa0NwWERzNEhjY2tuckRmOEZDbEo3SGUzOUpmNDIvRzFRbTJ6ejlXV21yUFh0Z2lLL3gwNUdqc1FmR3VERzF6ZjVRVFVVaWU4bHd5bUszVGZkT3ZOZWVKQUFQZTJwbjdJdGZSYityVnJOV2lEemxSbjJ2Tm5aMndQbzR3SC9XSjZkaFhaRytyTVdUK2E2Qm9jZzFVZkl3NmtkdW5HNGJUcFp6c3ZhY0ZZeVIwbXBmK0RlT25wU1dBbXl3SldIdlRsZjJZWHhGeWVYY1RBQ2RRbGNNTkdKMlZoWlE0OHh0UDUvUkJQLzhrQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZDaHk0Mm9raXFjVFMxaXFhL0hSV2prQm40SC9NQjhHQTFVZEl3UVlNQmFBRk9xM1FwQ2VESHRrZXR0VWZBTzZmRTZmMktGaE1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQW4rUkhJUGJ0TUVETmRUMWc4SC9SaXRBa1VkTGdBdDF0V0dXbmxqOWtuYnY0LzRHbFg3QzlwNDVlZlBPOS9hWkw2T1YxWFJLQmk2S210Qlc1SzdudVlFbk14LzVCcUJTYkxUN3JoZHVDNDlUQmVNYjlQSGRYc1RsU1ZOWWVmcjFkR2lkcjRqMHhWQlFMYjFya25EQWJkV0R6S2Z2bmF5S084RnJ3ZTdIeDg0M01HL3JKK2MwWHJ1VXZiZlZUQ0hMaUlXaE03b05EaEw4eG9iNnhVbzlLTEtjU0wrSXRZc08zLzlXYjhROUdqc3FMNEZYc0RjRzFTYVloN0twZnVNbU9peHF6SlpPMm5JaWNQWVJnMUkyU3VpVWZZTzcwdG1kSGNibCtrU1FtU1l0N3JxNHZpSUxnMkd4M2o5cklUdVdUamJhVWFTU1F4Z09tTVNIdXl6TUFDIiwiTUlJRFNEQ0NBakNnQXdJQkFnSVVVY21NWHpSSUZPZ0dUSzBUYjNnRXVaWVprQkl3RFFZSktvWklodmNOQVFFTEJRQXdKREVpTUNBR0ExVUVBd3daV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUZKdmIzUWdNVEFnRncweU5ERXlNREV3TURBd01EQmFHQTg1T1RrNU1USXpNVEl6TlRrMU9Wb3dMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRRG01NTViV1k5V1crdE9ZMHJJV0hsZGgrYU5hbm9DWkNGaDdHazNZWnJRbVBVdzBoa1NHNnFZSFF0UCtmWnlTMzNWRXJ2ZytCUXFubXVtZ05oZnhGcmt3RVpFTGVpZEJjQzhDNEFnNG5xcWlQV3B6c3ZJMTdOY3hZbEluTE5MRmNaWS8rZ09pTjZaT1RpaE81L3ZCWk1iajlyaWFBY3FsaVltTkdKUGdUY01HYUVBeU16RU1OeTJubTZFcCtwalA1YUY2Z2kyMXQvVVFGc3VKMWoyUmoveW5NL1NkUnQrZWNhbDVPWW90eEhrRmJMOXZ2djJBMk92NUlUWkNsdzRiT1M5bnB5cFFpbU9aNVFBWXl0bVlhUXBXbC9wTVl6NnpTajhScWtWRE5FSkdxTmZUS0EyaXZMWXdYNmxTdHRNUGFwZzBKODRsOVgwdm9WTi9GcFM0VkNWQWdNQkFBR2paakJrTUIwR0ExVWREZ1FXQkJRZ0tGQWhHNlJhVytoVHk1MmR4ZVQ4YkM5Nkh6QWZCZ05WSFNNRUdEQVdnQlRTN3U5YUlvMDZiVndqbHozeWhkVW04U1Y3a2pBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQ01BNEdBMVVkRHdFQi93UUVBd0lCaGpBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQVlNemdMckpMSXIwT292UW5BWnJSSUd1YWJpSFNVS1NtYkxSV3BSa1dlQXRzQ2hERUhwWGNKL2JnRE5LWVdvSHFROHhSVWpCNEN5ZXBZZXZjM1lsckc4bzd6SHhwZlZjYW9MNVNldUprekh4S240YlRhU3A5K012d2FtbnA2NGtaTWlOYkZMa25mUDlrWUtvUkhrTVdoZVJKMVVzUDF6NFNjbWtDZUlMZnNNczZ2cW92cWpXQ2xGc0pwQmNzbHVZSFdGN2JCSjFuNFJ3ZytBVEVvcFk0SWdHdjZadndjK0E5citBVDJocXBvU2tZb0FsK0FOWXdnc2xPZjlzSmUwVitUQTlZWS9VbGFCbVBQVGQwLy9yOXd2Y2VQV1prUGpLb0FDL3pVTmhmRGJoNExWOEdIczNseVgyWG9tTC9MTmM4Sll6eUlhREVoR1F2ZW9QaGgvdHIxZz09IiwiTUlJRFNqQ0NBaktnQXdJQkFnSVVUbmJiR0lSMk5IdnpxSUtGQWVRd0cxWEJpczB3RFFZSktvWklodmNOQVFFTEJRQXdMakVzTUNvR0ExVUVBd3dqV1hWaWFXTnZJRUYwZEdWemRHRjBhVzl1SUVsdWRHVnliV1ZrYVdGMFpTQkJJREV3SUJjTk1qUXhNakF4TURBd01EQXdXaGdQT1RrNU9URXlNekV5TXpVNU5UbGFNQ1l4SkRBaUJnTlZCQU1NRzFsMVltbGpieUJHU1VSUElFRjBkR1Z6ZEdGMGFXOXVJRUVnTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBT3NYajNrMDRCYW40VFlkdFpLcUQvT1BKeHlEeWFQbUNCVUZVaWFaSWdUdGVabmozWDI1RGhncFpaWHNDNEQweWRJY3JsQTZ3TlVJbk9STC9MOXpCYlRFSU1BVk1HbzZnN1VLQW1iMk1GNkFIYm5oWUpkOWVpa3VwVk5XU2hITllOYzRHQmRPMVlONkFmVXF2SmhIYmUzVjRTTk1QbUJSRUtKUFZ6N1Rod2dtZ2dUZThXczJLMC93c3F2MndTRTdwYkNCc1VaaElYNTFiWk0zcHFEd0pQVG1SRkV2dDAvNnRHNWVPOEYzajE0T1hxZkVobWpuMVZ2eEtEWVFPTFpBeEN3d2dDMFA0Q2RmV3YzeThQU1I4STM1NGhPMVkrR3pOanZJcVgzOE5LTHl3dUlZSEZlck94Tmx4RU1CdkZoWUJ1UnVZQWtrZ1VhUHFONlVCaHNJTHJzQ0F3RUFBYU5tTUdRd0hRWURWUjBPQkJZRUZDQ29SSGhpeU5uYm5YUldJTDZaQlhvQlg5WVRNQjhHQTFVZEl3UVlNQmFBRkNBb1VDRWJwRnBiNkZQTG5aM0Y1UHhzTDNvZk1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRQXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQ1FGYWZKSTEvNVdnOUNFRWltRTFSUDU0UmdRd1ROVE9PUXNMQUNUZStySXRsRlF6QzlaRGhyVjgyOHlYN2p6eStBQXNwM2l6SzdUMXRoMmRsN20rdHUwc3cyUGEvb2xjMDJudDZQeUl3MzQ4Z2FIemhJMSswS0U0NXF4dkZEZUwybE14YlBmQ1l2eUVFYVl6amlRRUxVNTk1MXBYR1d5S01hLzRmTHRPK1pLT1hoTXVWZXE0clhEUEk1NFc2SkhPaUFhaUtkaXcrNWUzYzJrdC9qRklRdE02dk1YZzlMTkZ6ZGpFVE50MjBWWDlRZXZScEZaZnVjTUc5d0NhUURvRmxQenBUTUpLaFBldi9pbUptWlloS2ZyMGxMY2VtdHFqSXhMQW9xWmRPWWZIQmc2K3ZBY2RQSS9pYXVHcFVBdjdYK1VLTm1Ed2paMkJhSDRzTHdoQjJtIl0sImljb24iOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUhodGJHNXpPbWx1YTNOallYQmxQU0pvZEhSd09pOHZkM2QzTG1sdWEzTmpZWEJsTG05eVp5OXVZVzFsYzNCaFkyVnpMMmx1YTNOallYQmxJaUI0Yld4dWN6cHpiMlJwY0c5a2FUMGlhSFIwY0RvdkwzTnZaR2x3YjJScExuTnZkWEpqWldadmNtZGxMbTVsZEM5RVZFUXZjMjlrYVhCdlpHa3RNQzVrZEdRaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02YzNablBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJaUI0Yld4dWN6cGpZejBpYUhSMGNEb3ZMMk55WldGMGFYWmxZMjl0Ylc5dWN5NXZjbWN2Ym5NaklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIZHBaSFJvUFNJeE1EQXdjSFFpSUdobGFXZG9kRDBpTVRBd01IQjBJaUIyYVdWM1FtOTRQU0l3SURBZ01UQXdNQ0F4TURBd0lpQjJaWEp6YVc5dVBTSXhMaklpSUdKaGMyVlFjbTltYVd4bFBTSjBhVzU1TFhCeklqNDhkR2wwYkdVK1dYVmlhVXRsZVR3dmRHbDBiR1UrUEdSbFpuTWdhV1E5SW1SbFpuTXhJajQ4TDJSbFpuTStQR1JsYzJNZ2FXUTlJbXh2WjI4dFpHVnpZeTEyTWlJK1dYVmlhVXRsZVR3dlpHVnpZejQ4WnlCcFpEMGlJemMyWWprelpHWm1JajQ4Y0dGMGFDQm1hV3hzUFNJak56WkNPVE5FSWlCa1BTSWdUU0EwT1RFdU56Z2dNQzR3TUNCTUlEVXhNUzR6TnlBd0xqQXdJRU1nTlRjMExqSTBJREV1TXpnZ05qTTJMalkzSURFMUxqRTJJRFk1TkM0MU55QXpPUzQxT0NCRElEY3hOeTQzTXlBMU1DNDJNQ0EzTkRFdU1UTWdOakV1TXpnZ056WXlMamMzSURjMUxqSTFJRU1nTnpjNUxqWTVJRGcwTGpjeElEYzVOQzQ0TXlBNU5pNDRPU0E0TURrdU9UZ2dNVEE0TGpnNElFTWdPREkxTGpFeUlERXlNQzR5TlNBNE16a3VNemdnTVRNeUxqZ3dJRGcxTWk0Mk1TQXhORFl1TXpZZ1F5QTROVFl1T1RJZ01UVXdMamN5SURnMk1DNDNPQ0F4TlRVdU5UQWdPRFkxTGpJeklERTFPUzQzTXlCRElEZzNPUzQwT1NBeE56TXVPVFlnT0RreUxqRTBJREU0T1M0M015QTVNRE11TnpjZ01qQTJMakUySUVNZ09URXdMall4SURJeE5pNHlPU0E1TVRndU16WWdNakkxTGpneElEa3lOQzQyTnlBeU16WXVNekFnUXlBNU16UXVOelVnTWpVeUxqTTVJRGswTXk0eU9TQXlOamt1TXpjZ09UVXhMalV6SURJNE5pNDBOU0JESURrM09TNDBOU0F6TkRNdU1qZ2dPVGsxTGpJNElEUXdOUzQ0TUNBNU9Ua3VNamtnTkRZNExqa3lJRU1nT1RrNUxqa3dJRFE0TVM0eU9DQXhNREF3TGpnMklEUTVNeTQyTXlBeE1EQXdMall5SURVd05pNHdNaUJESURrNU9TNDVNaUExTXpBdU1qZ2dPVGs0TGpJM0lEVTFOQzQxTlNBNU9UUXVNamdnTlRjNExqVXhJRU1nT1Rrd0xqY3hJRFl3TUM0MU1DQTVPRFV1TmpZZ05qSXlMakkxSURrM09TNDBNQ0EyTkRNdU5qSWdReUE1TnpRdU5UUWdOalU1TGpnNElEazJPUzQwTmlBMk56WXVNVElnT1RZeUxqUTVJRFk1TVM0Mk1TQkRJRGswT1M0NE9DQTNNakF1TURFZ09UTTJMak0zSURjME9DNHlNU0E1TVRndU56SWdOemN6TGpnM0lFTWdPVEUxTGpVeklEYzNPQzQyTVNBNU1URXVPRFlnTnpnekxqQXhJRGt3T0M0M01TQTNPRGN1TnpnZ1F5QTRPVGd1T1RRZ09EQXlMak0ySURnNE55NDROaUE0TVRZdU1ETWdPRGMyTGpFM0lEZ3lPUzR4TVNCRElEZzJNaTQwTmlBNE5EUXVNelVnT0RRNExqSXlJRGcxT1M0eE5pQTRNekl1T0RRZ09EY3lMamMwSUVNZ09ESXlMamN3SURnNE1pNHdOQ0E0TVRFdU5ETWdPRGc1TGprMklEZ3dNQzQ1TmlBNE9UZ3VPRFVnUXlBM09EUXVPVE1nT1RFeExqWTJJRGMyTnk0MU5DQTVNakl1TmpVZ056UTVMamd3SURrek1pNDVNQ0JESURjeU1TNHdNQ0E1TkRrdU9UQWdOamt3TGpZMElEazJOQzR6TUNBMk5UZ3VPVElnT1RjMExqazRJRU1nTmpFekxqQTJJRGs1TUM0MU9TQTFOalF1TnprZ09UazRMams0SURVeE5pNHpOaUF4TURBd0xqQXdJRXdnTlRBMExqUTNJREV3TURBdU1EQWdReUExTVRFdU56VWdPVGd4TGpReUlEVXhPUzR3TVNBNU5qSXVPRElnTlRJMkxqRXhJRGswTkM0eE55QkRJRFV6Tnk0ek1pQTVNVGt1TXprZ05UUTFMamsxSURnNU15NDFOU0ExTlRZdU5ESWdPRFk0TGpRM0lFTWdOVFl5TGpnMklEZzFNaTQzTXlBMU5qZ3VOVEVnT0RNMkxqWTNJRFUzTlM0eU1TQTRNakV1TURRZ1F5QTFPREl1TlRrZ09EQTFMall6SURVNE9DNHhNQ0EzT0RrdU5ESWdOVGswTGpVMElEYzNNeTQyTVNCRElEWXdOUzQ1TnlBM05EWXVPREVnTmpFMUxqUXlJRGN4T1M0eE9TQTJNamN1TnpRZ05qa3lMamMzSUVNZ05qUXpMamMzSURZMU15NHhNQ0EyTlRrdU16QWdOakV6TGpJeUlEWTNOaTR4TWlBMU56TXVPRGNnUXlBMk9USXVPVEVnTlRNekxqa3dJRGN3Tnk0NU9DQTBPVE11TWpNZ056STFMak14SURRMU15NDBPU0JESURjek1pNDVOQ0EwTXpVdU1qY2dOelF3TGpBMklEUXhOaTQ0TkNBM05EY3VNelFnTXprNExqUTRJRU1nTnpVekxqZzVJRE00TWk0MU1TQTNOakF1TWpFZ016WTJMalEwSURjMk5pNDFNQ0F6TlRBdU16Y2dReUEzTnpRdU9UY2dNek15TGpVMUlEYzRNUzQwTmlBek1UTXVPVEVnTnpnNExqYzVJREk1TlM0Mk15QkRJRGN6TUM0MU5pQXlPVFV1TmpRZ05qY3lMak16SURJNU5pNHdNQ0EyTVRRdU1UQWdNamsxTGpRM0lFTWdOakF3TGpRMElETXpNaTR6TlNBMU9EZ3VNekVnTXpZNUxqYzRJRFUzTkM0ME1DQTBNRFl1TlRjZ1F5QTFOVGt1TnpJZ05EUTRMall4SURVME5TNDBNeUEwT1RBdU56Z2dOVE13TGpZMklEVXpNaTQzT1NCRElEVXlOQzQ1TnlBMU5EWXVNVFVnTlRJd0xqTTVJRFUxT1M0NU5DQTFNVFV1TkRRZ05UY3pMalU1SUVNZ05UQTRMakF6SURVNU5TNHpOQ0EwT1RrdU16Z2dOakUyTGpZMElEUTVNUzQzTlNBMk16Z3VNekVnUXlBME9EY3VOeklnTmpJeUxqQTRJRFE0TWk0d01TQTJNRFl1TXpRZ05EYzJMalEwSURVNU1DNDFPU0JESURRMk1pNDFNeUExTkRrdU56WWdORFEzTGpRNElEVXdPUzR6TXlBME16RXVPREFnTkRZNUxqRTFJRU1nTkRJMUxqQTVJRFExTWk0NE9DQTBNVGt1TkRNZ05ETTJMakl4SURReE15NHlOeUEwTVRrdU56TWdReUEwTURRdU9ETWdNemsyTGpjd0lETTVOaTQwTWlBek56TXVOalVnTXpnNExqVXpJRE0xTUM0ME1pQkRJRE00Tmk0Mk1pQXpORFF1TmpFZ016ZzBMakF5SURNek9TNHdOeUF6T0RFdU56Z2dNek16TGpNNUlFTWdNemMyTGpRM0lETXlNQzQwTWlBek56RXVNVE1nTXpBM0xqUXpJRE0yTkM0NU9TQXlPVFF1T0RJZ1F5QXpNRFl1T0RFZ01qazJMamMySURJME9DNDFPU0F5T1RVdU1USWdNVGt3TGpRd0lESTVOUzQ1TUNCRElESXdOQzQzT1NBek16UXVNRGNnTWpFNExqZ3hJRE0zTWk0ek9DQXlNek11TnpnZ05ERXdMak16SUVNZ01qVXdMamM1SURRMU1pNDFPU0F5TmpZdU5UWWdORGsxTGpNeklESTRNeTR4TVNBMU16Y3VOellnUXlBeU9UTXVORGtnTlRZd0xqYzBJRE13TVM0ME55QTFPRFF1TmpnZ016RXhMakF4SURZd09DNHdNQ0JESURNeE9TNHlNQ0EyTWpndU9EQWdNekkyTGpjMUlEWTBPUzQ0TmlBek16VXVOelVnTmpjd0xqTXlJRU1nTXpRM0xqRTNJRFk1T0M0Mk55QXpOVGd1TURnZ056STNMakl4SURNMk9TNHlOQ0EzTlRVdU5qWWdReUF6TnpjdU5qWWdOemMyTGpnM0lETTROaTQyTkNBM09UY3VPRFVnTXprMExqazBJRGd4T1M0eE1pQkRJRE00TlM0d01DQTRORE11TURNZ016YzBMalV5SURnMk5pNDNNU0F6TmpRdU5UWWdPRGt3TGpZeUlFTWdNelU1TGpjNElEa3dNaTR6T0NBek5UUXVPVEFnT1RFMExqRXhJRE0wT1M0NE1DQTVNalV1TnpRZ1F5QXpORE11TXpZZ09UUXdMamMwSURNek55NHhNU0E1TlRVdU9EWWdNekk1TGpVd0lEazNNQzR6TWlCRElETXdNaTQ0TVNBNU5qQXVPRGNnTWpjM0xqTTFJRGswT0M0eU55QXlOVEl1T0RJZ09UTTBMakl3SUVNZ01qUXhMakEzSURreU55NDBNU0F5TWprdU16QWdPVEl3TGpZeElESXhPQzR5TkNBNU1USXVOeklnUXlBeE5EUXVNallnT0RZeExqRTRJRGd6TGpJd0lEYzVNQzR6TnlBME5pNHhPU0EzTURjdU9USWdReUEwTVM0ek1TQTJPVGd1TkRRZ016WXVPRGtnTmpnNExqY3hJRE16TGpRNUlEWTNPQzQxT1NCRElDMHhOaTQxTVNBMU5UQXVOVFFnTFRrdU9UQWdOREF4TGpJd0lEVXlMamc1SURJM09DNDNNaUJESURZekxqazFJREkxTmk0MU1TQTNOUzQ1TWlBeU16UXVOakVnT1RBdU56a2dNakUwTGpZNUlFTWdNVEEyTGpReklERTVNeTR3TWlBeE1qSXVOelFnTVRjeExqWTJJREUwTVM0NU55QXhOVE11TURFZ1F5QXhOVGt1TURrZ01UTTBMakE0SURFM09DNDROU0F4TVRjdU56Z2dNVGs1TGpBMklERXdNaTR5TmlCRElESXdOeTR5TnlBNU5pNHdOaUF5TVRVdU1qVWdPRGt1TlRNZ01qSXpMamswSURnekxqazVJRU1nTWpVekxqY3dJRFkwTGpReElESTROUzQxT0NBME9DNHhOU0F6TVRndU5EZ2dNelF1TlRVZ1F5QXpOek11TmpFZ01USXVPVEFnTkRNeUxqVTRJREV1TWpVZ05Ea3hMamM0SURBdU1EQWdXaUlnYVdROUluQmhkR2d4SWo0OEwzQmhkR2crUEM5blBqeHRaWFJoWkdGMFlUNDhMMjFsZEdGa1lYUmhQand2YzNablBnPT0iLCJpY29uRGFyayI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsInByb3ZpZGVyTG9nb0xpZ2h0IjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lQejQ4YzNabklIaHRiRzV6T21sdWEzTmpZWEJsUFNKb2RIUndPaTh2ZDNkM0xtbHVhM05qWVhCbExtOXlaeTl1WVcxbGMzQmhZMlZ6TDJsdWEzTmpZWEJsSWlCNGJXeHVjenB6YjJScGNHOWthVDBpYUhSMGNEb3ZMM052Wkdsd2IyUnBMbk52ZFhKalpXWnZjbWRsTG01bGRDOUVWRVF2YzI5a2FYQnZaR2t0TUM1a2RHUWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmMzWm5QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWlCNGJXeHVjenBqWXowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJuTWpJaUI0Yld4dWN6cGtZejBpYUhSMGNEb3ZMM0IxY213dWIzSm5MMlJqTDJWc1pXMWxiblJ6THpFdU1TOGlJSGRwWkhSb1BTSXhNREF3Y0hRaUlHaGxhV2RvZEQwaU1UQXdNSEIwSWlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3TUNBeE1EQXdJaUIyWlhKemFXOXVQU0l4TGpJaUlHSmhjMlZRY205bWFXeGxQU0owYVc1NUxYQnpJajQ4ZEdsMGJHVStXWFZpYVV0bGVUd3ZkR2wwYkdVK1BHUmxabk1nYVdROUltUmxabk14SWo0OEwyUmxabk0rUEdSbGMyTWdhV1E5SW14dloyOHRaR1Z6WXkxMk1pSStXWFZpYVV0bGVUd3ZaR1Z6WXo0OFp5QnBaRDBpSXpjMllqa3paR1ptSWo0OGNHRjBhQ0JtYVd4c1BTSWpOelpDT1RORUlpQmtQU0lnVFNBME9URXVOemdnTUM0d01DQk1JRFV4TVM0ek55QXdMakF3SUVNZ05UYzBMakkwSURFdU16Z2dOak0yTGpZM0lERTFMakUySURZNU5DNDFOeUF6T1M0MU9DQkRJRGN4Tnk0M015QTFNQzQyTUNBM05ERXVNVE1nTmpFdU16Z2dOell5TGpjM0lEYzFMakkxSUVNZ056YzVMalk1SURnMExqY3hJRGM1TkM0NE15QTVOaTQ0T1NBNE1Ea3VPVGdnTVRBNExqZzRJRU1nT0RJMUxqRXlJREV5TUM0eU5TQTRNemt1TXpnZ01UTXlMamd3SURnMU1pNDJNU0F4TkRZdU16WWdReUE0TlRZdU9USWdNVFV3TGpjeUlEZzJNQzQzT0NBeE5UVXVOVEFnT0RZMUxqSXpJREUxT1M0M015QkRJRGczT1M0ME9TQXhOek11T1RZZ09Ea3lMakUwSURFNE9TNDNNeUE1TURNdU56Y2dNakEyTGpFMklFTWdPVEV3TGpZeElESXhOaTR5T1NBNU1UZ3VNellnTWpJMUxqZ3hJRGt5TkM0Mk55QXlNell1TXpBZ1F5QTVNelF1TnpVZ01qVXlMak01SURrME15NHlPU0F5TmprdU16Y2dPVFV4TGpVeklESTROaTQwTlNCRElEazNPUzQwTlNBek5ETXVNamdnT1RrMUxqSTRJRFF3TlM0NE1DQTVPVGt1TWprZ05EWTRMamt5SUVNZ09UazVMamt3SURRNE1TNHlPQ0F4TURBd0xqZzJJRFE1TXk0Mk15QXhNREF3TGpZeUlEVXdOaTR3TWlCRElEazVPUzQ1TWlBMU16QXVNamdnT1RrNExqSTNJRFUxTkM0MU5TQTVPVFF1TWpnZ05UYzRMalV4SUVNZ09Ua3dMamN4SURZd01DNDFNQ0E1T0RVdU5qWWdOakl5TGpJMUlEazNPUzQwTUNBMk5ETXVOaklnUXlBNU56UXVOVFFnTmpVNUxqZzRJRGsyT1M0ME5pQTJOell1TVRJZ09UWXlMalE1SURZNU1TNDJNU0JESURrME9TNDRPQ0EzTWpBdU1ERWdPVE0yTGpNM0lEYzBPQzR5TVNBNU1UZ3VOeklnTnpjekxqZzNJRU1nT1RFMUxqVXpJRGMzT0M0Mk1TQTVNVEV1T0RZZ056Z3pMakF4SURrd09DNDNNU0EzT0RjdU56Z2dReUE0T1RndU9UUWdPREF5TGpNMklEZzROeTQ0TmlBNE1UWXVNRE1nT0RjMkxqRTNJRGd5T1M0eE1TQkRJRGcyTWk0ME5pQTRORFF1TXpVZ09EUTRMakl5SURnMU9TNHhOaUE0TXpJdU9EUWdPRGN5TGpjMElFTWdPREl5TGpjd0lEZzRNaTR3TkNBNE1URXVORE1nT0RnNUxqazJJRGd3TUM0NU5pQTRPVGd1T0RVZ1F5QTNPRFF1T1RNZ09URXhMalkySURjMk55NDFOQ0E1TWpJdU5qVWdOelE1TGpnd0lEa3pNaTQ1TUNCRElEY3lNUzR3TUNBNU5Ea3VPVEFnTmprd0xqWTBJRGsyTkM0ek1DQTJOVGd1T1RJZ09UYzBMams0SUVNZ05qRXpMakEySURrNU1DNDFPU0ExTmpRdU56a2dPVGs0TGprNElEVXhOaTR6TmlBeE1EQXdMakF3SUV3Z05UQTBMalEzSURFd01EQXVNREFnUXlBMU1URXVOelVnT1RneExqUXlJRFV4T1M0d01TQTVOakl1T0RJZ05USTJMakV4SURrME5DNHhOeUJESURVek55NHpNaUE1TVRrdU16a2dOVFExTGprMUlEZzVNeTQxTlNBMU5UWXVORElnT0RZNExqUTNJRU1nTlRZeUxqZzJJRGcxTWk0M015QTFOamd1TlRFZ09ETTJMalkzSURVM05TNHlNU0E0TWpFdU1EUWdReUExT0RJdU5Ua2dPREExTGpZeklEVTRPQzR4TUNBM09Ea3VORElnTlRrMExqVTBJRGMzTXk0Mk1TQkRJRFl3TlM0NU55QTNORFl1T0RFZ05qRTFMalF5SURjeE9TNHhPU0EyTWpjdU56UWdOamt5TGpjM0lFTWdOalF6TGpjM0lEWTFNeTR4TUNBMk5Ua3VNekFnTmpFekxqSXlJRFkzTmk0eE1pQTFOek11T0RjZ1F5QTJPVEl1T1RFZ05UTXpMamt3SURjd055NDVPQ0EwT1RNdU1qTWdOekkxTGpNeElEUTFNeTQwT1NCRElEY3pNaTQ1TkNBME16VXVNamNnTnpRd0xqQTJJRFF4Tmk0NE5DQTNORGN1TXpRZ016azRMalE0SUVNZ056VXpMamc1SURNNE1pNDFNU0EzTmpBdU1qRWdNelkyTGpRMElEYzJOaTQxTUNBek5UQXVNemNnUXlBM056UXVPVGNnTXpNeUxqVTFJRGM0TVM0ME5pQXpNVE11T1RFZ056ZzRMamM1SURJNU5TNDJNeUJESURjek1DNDFOaUF5T1RVdU5qUWdOamN5TGpNeklESTVOaTR3TUNBMk1UUXVNVEFnTWprMUxqUTNJRU1nTmpBd0xqUTBJRE16TWk0ek5TQTFPRGd1TXpFZ016WTVMamM0SURVM05DNDBNQ0EwTURZdU5UY2dReUExTlRrdU56SWdORFE0TGpZeElEVTBOUzQwTXlBME9UQXVOemdnTlRNd0xqWTJJRFV6TWk0M09TQkRJRFV5TkM0NU55QTFORFl1TVRVZ05USXdMak01SURVMU9TNDVOQ0ExTVRVdU5EUWdOVGN6TGpVNUlFTWdOVEE0TGpBeklEVTVOUzR6TkNBME9Ua3VNemdnTmpFMkxqWTBJRFE1TVM0M05TQTJNemd1TXpFZ1F5QTBPRGN1TnpJZ05qSXlMakE0SURRNE1pNHdNU0EyTURZdU16UWdORGMyTGpRMElEVTVNQzQxT1NCRElEUTJNaTQxTXlBMU5Ea3VOellnTkRRM0xqUTRJRFV3T1M0ek15QTBNekV1T0RBZ05EWTVMakUxSUVNZ05ESTFMakE1SURRMU1pNDRPQ0EwTVRrdU5ETWdORE0yTGpJeElEUXhNeTR5TnlBME1Ua3VOek1nUXlBME1EUXVPRE1nTXprMkxqY3dJRE01Tmk0ME1pQXpOek11TmpVZ016ZzRMalV6SURNMU1DNDBNaUJESURNNE5pNDJNaUF6TkRRdU5qRWdNemcwTGpBeUlETXpPUzR3TnlBek9ERXVOemdnTXpNekxqTTVJRU1nTXpjMkxqUTNJRE15TUM0ME1pQXpOekV1TVRNZ016QTNMalF6SURNMk5DNDVPU0F5T1RRdU9ESWdReUF6TURZdU9ERWdNamsyTGpjMklESTBPQzQxT1NBeU9UVXVNVElnTVRrd0xqUXdJREk1TlM0NU1DQkRJREl3TkM0M09TQXpNelF1TURjZ01qRTRMamd4SURNM01pNHpPQ0F5TXpNdU56Z2dOREV3TGpNeklFTWdNalV3TGpjNUlEUTFNaTQxT1NBeU5qWXVOVFlnTkRrMUxqTXpJREk0TXk0eE1TQTFNemN1TnpZZ1F5QXlPVE11TkRrZ05UWXdMamMwSURNd01TNDBOeUExT0RRdU5qZ2dNekV4TGpBeElEWXdPQzR3TUNCRElETXhPUzR5TUNBMk1qZ3VPREFnTXpJMkxqYzFJRFkwT1M0NE5pQXpNelV1TnpVZ05qY3dMak15SUVNZ016UTNMakUzSURZNU9DNDJOeUF6TlRndU1EZ2dOekkzTGpJeElETTJPUzR5TkNBM05UVXVOallnUXlBek56Y3VOallnTnpjMkxqZzNJRE00Tmk0Mk5DQTNPVGN1T0RVZ016azBMamswSURneE9TNHhNaUJESURNNE5TNHdNQ0E0TkRNdU1ETWdNemMwTGpVeUlEZzJOaTQzTVNBek5qUXVOVFlnT0Rrd0xqWXlJRU1nTXpVNUxqYzRJRGt3TWk0ek9DQXpOVFF1T1RBZ09URTBMakV4SURNME9TNDRNQ0E1TWpVdU56UWdReUF6TkRNdU16WWdPVFF3TGpjMElETXpOeTR4TVNBNU5UVXVPRFlnTXpJNUxqVXdJRGszTUM0ek1pQkRJRE13TWk0NE1TQTVOakF1T0RjZ01qYzNMak0xSURrME9DNHlOeUF5TlRJdU9ESWdPVE0wTGpJd0lFTWdNalF4TGpBM0lEa3lOeTQwTVNBeU1qa3VNekFnT1RJd0xqWXhJREl4T0M0eU5DQTVNVEl1TnpJZ1F5QXhORFF1TWpZZ09EWXhMakU0SURnekxqSXdJRGM1TUM0ek55QTBOaTR4T1NBM01EY3VPVElnUXlBME1TNHpNU0EyT1RndU5EUWdNell1T0RrZ05qZzRMamN4SURNekxqUTVJRFkzT0M0MU9TQkRJQzB4Tmk0MU1TQTFOVEF1TlRRZ0xUa3VPVEFnTkRBeExqSXdJRFV5TGpnNUlESTNPQzQzTWlCRElEWXpMamsxSURJMU5pNDFNU0EzTlM0NU1pQXlNelF1TmpFZ09UQXVOemtnTWpFMExqWTVJRU1nTVRBMkxqUXpJREU1TXk0d01pQXhNakl1TnpRZ01UY3hMalkySURFME1TNDVOeUF4TlRNdU1ERWdReUF4TlRrdU1Ea2dNVE0wTGpBNElERTNPQzQ0TlNBeE1UY3VOemdnTVRrNUxqQTJJREV3TWk0eU5pQkRJREl3Tnk0eU55QTVOaTR3TmlBeU1UVXVNalVnT0RrdU5UTWdNakl6TGprMElEZ3pMams1SUVNZ01qVXpMamN3SURZMExqUXhJREk0TlM0MU9DQTBPQzR4TlNBek1UZ3VORGdnTXpRdU5UVWdReUF6TnpNdU5qRWdNVEl1T1RBZ05ETXlMalU0SURFdU1qVWdORGt4TGpjNElEQXVNREFnV2lJZ2FXUTlJbkJoZEdneElqNDhMM0JoZEdnK1BDOW5Qanh0WlhSaFpHRjBZVDQ4TDIxbGRHRmtZWFJoUGp3dmMzWm5QZz09IiwicHJvdmlkZXJMb2dvRGFyayI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0OGMzWm5JSGh0Ykc1ek9tbHVhM05qWVhCbFBTSm9kSFJ3T2k4dmQzZDNMbWx1YTNOallYQmxMbTl5Wnk5dVlXMWxjM0JoWTJWekwybHVhM05qWVhCbElpQjRiV3h1Y3pwemIyUnBjRzlrYVQwaWFIUjBjRG92TDNOdlpHbHdiMlJwTG5OdmRYSmpaV1p2Y21kbExtNWxkQzlFVkVRdmMyOWthWEJ2WkdrdE1DNWtkR1FpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZjM1puUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklpQjRiV3h1Y3pwall6MGlhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3Zibk1qSWlCNGJXeHVjenBrWXowaWFIUjBjRG92TDNCMWNtd3ViM0puTDJSakwyVnNaVzFsYm5Sekx6RXVNUzhpSUhkcFpIUm9QU0l4TURBd2NIUWlJR2hsYVdkb2REMGlNVEF3TUhCMElpQjJhV1YzUW05NFBTSXdJREFnTVRBd01DQXhNREF3SWlCMlpYSnphVzl1UFNJeExqSWlJR0poYzJWUWNtOW1hV3hsUFNKMGFXNTVMWEJ6SWo0OGRHbDBiR1UrV1hWaWFVdGxlVHd2ZEdsMGJHVStQR1JsWm5NZ2FXUTlJbVJsWm5NeElqNDhMMlJsWm5NK1BHUmxjMk1nYVdROUlteHZaMjh0WkdWell5MTJNaUkrV1hWaWFVdGxlVHd2WkdWell6NDhaeUJwWkQwaUl6YzJZamt6WkdabUlqNDhjR0YwYUNCbWFXeHNQU0lqTnpaQ09UTkVJaUJrUFNJZ1RTQTBPVEV1TnpnZ01DNHdNQ0JNSURVeE1TNHpOeUF3TGpBd0lFTWdOVGMwTGpJMElERXVNemdnTmpNMkxqWTNJREUxTGpFMklEWTVOQzQxTnlBek9TNDFPQ0JESURjeE55NDNNeUExTUM0Mk1DQTNOREV1TVRNZ05qRXVNemdnTnpZeUxqYzNJRGMxTGpJMUlFTWdOemM1TGpZNUlEZzBMamN4SURjNU5DNDRNeUE1Tmk0NE9TQTRNRGt1T1RnZ01UQTRMamc0SUVNZ09ESTFMakV5SURFeU1DNHlOU0E0TXprdU16Z2dNVE15TGpnd0lEZzFNaTQyTVNBeE5EWXVNellnUXlBNE5UWXVPVElnTVRVd0xqY3lJRGcyTUM0M09DQXhOVFV1TlRBZ09EWTFMakl6SURFMU9TNDNNeUJESURnM09TNDBPU0F4TnpNdU9UWWdPRGt5TGpFMElERTRPUzQzTXlBNU1ETXVOemNnTWpBMkxqRTJJRU1nT1RFd0xqWXhJREl4Tmk0eU9TQTVNVGd1TXpZZ01qSTFMamd4SURreU5DNDJOeUF5TXpZdU16QWdReUE1TXpRdU56VWdNalV5TGpNNUlEazBNeTR5T1NBeU5qa3VNemNnT1RVeExqVXpJREk0Tmk0ME5TQkRJRGszT1M0ME5TQXpORE11TWpnZ09UazFMakk0SURRd05TNDRNQ0E1T1RrdU1qa2dORFk0TGpreUlFTWdPVGs1TGprd0lEUTRNUzR5T0NBeE1EQXdMamcySURRNU15NDJNeUF4TURBd0xqWXlJRFV3Tmk0d01pQkRJRGs1T1M0NU1pQTFNekF1TWpnZ09UazRMakkzSURVMU5DNDFOU0E1T1RRdU1qZ2dOVGM0TGpVeElFTWdPVGt3TGpjeElEWXdNQzQxTUNBNU9EVXVOallnTmpJeUxqSTFJRGszT1M0ME1DQTJORE11TmpJZ1F5QTVOelF1TlRRZ05qVTVMamc0SURrMk9TNDBOaUEyTnpZdU1USWdPVFl5TGpRNUlEWTVNUzQyTVNCRElEazBPUzQ0T0NBM01qQXVNREVnT1RNMkxqTTNJRGMwT0M0eU1TQTVNVGd1TnpJZ056Y3pMamczSUVNZ09URTFMalV6SURjM09DNDJNU0E1TVRFdU9EWWdOemd6TGpBeElEa3dPQzQzTVNBM09EY3VOemdnUXlBNE9UZ3VPVFFnT0RBeUxqTTJJRGc0Tnk0NE5pQTRNVFl1TURNZ09EYzJMakUzSURneU9TNHhNU0JESURnMk1pNDBOaUE0TkRRdU16VWdPRFE0TGpJeUlEZzFPUzR4TmlBNE16SXVPRFFnT0RjeUxqYzBJRU1nT0RJeUxqY3dJRGc0TWk0d05DQTRNVEV1TkRNZ09EZzVMamsySURnd01DNDVOaUE0T1RndU9EVWdReUEzT0RRdU9UTWdPVEV4TGpZMklEYzJOeTQxTkNBNU1qSXVOalVnTnpRNUxqZ3dJRGt6TWk0NU1DQkRJRGN5TVM0d01DQTVORGt1T1RBZ05qa3dMalkwSURrMk5DNHpNQ0EyTlRndU9USWdPVGMwTGprNElFTWdOakV6TGpBMklEazVNQzQxT1NBMU5qUXVOemtnT1RrNExqazRJRFV4Tmk0ek5pQXhNREF3TGpBd0lFd2dOVEEwTGpRM0lERXdNREF1TURBZ1F5QTFNVEV1TnpVZ09UZ3hMalF5SURVeE9TNHdNU0E1TmpJdU9ESWdOVEkyTGpFeElEazBOQzR4TnlCRElEVXpOeTR6TWlBNU1Ua3VNemtnTlRRMUxqazFJRGc1TXk0MU5TQTFOVFl1TkRJZ09EWTRMalEzSUVNZ05UWXlMamcySURnMU1pNDNNeUExTmpndU5URWdPRE0yTGpZM0lEVTNOUzR5TVNBNE1qRXVNRFFnUXlBMU9ESXVOVGtnT0RBMUxqWXpJRFU0T0M0eE1DQTNPRGt1TkRJZ05UazBMalUwSURjM015NDJNU0JESURZd05TNDVOeUEzTkRZdU9ERWdOakUxTGpReUlEY3hPUzR4T1NBMk1qY3VOelFnTmpreUxqYzNJRU1nTmpRekxqYzNJRFkxTXk0eE1DQTJOVGt1TXpBZ05qRXpMakl5SURZM05pNHhNaUExTnpNdU9EY2dReUEyT1RJdU9URWdOVE16TGprd0lEY3dOeTQ1T0NBME9UTXVNak1nTnpJMUxqTXhJRFExTXk0ME9TQkRJRGN6TWk0NU5DQTBNelV1TWpjZ056UXdMakEySURReE5pNDROQ0EzTkRjdU16UWdNems0TGpRNElFTWdOelV6TGpnNUlETTRNaTQxTVNBM05qQXVNakVnTXpZMkxqUTBJRGMyTmk0MU1DQXpOVEF1TXpjZ1F5QTNOelF1T1RjZ016TXlMalUxSURjNE1TNDBOaUF6TVRNdU9URWdOemc0TGpjNUlESTVOUzQyTXlCRElEY3pNQzQxTmlBeU9UVXVOalFnTmpjeUxqTXpJREk1Tmk0d01DQTJNVFF1TVRBZ01qazFMalEzSUVNZ05qQXdMalEwSURNek1pNHpOU0ExT0RndU16RWdNelk1TGpjNElEVTNOQzQwTUNBME1EWXVOVGNnUXlBMU5Ua3VOeklnTkRRNExqWXhJRFUwTlM0ME15QTBPVEF1TnpnZ05UTXdMalkySURVek1pNDNPU0JESURVeU5DNDVOeUExTkRZdU1UVWdOVEl3TGpNNUlEVTFPUzQ1TkNBMU1UVXVORFFnTlRjekxqVTVJRU1nTlRBNExqQXpJRFU1TlM0ek5DQTBPVGt1TXpnZ05qRTJMalkwSURRNU1TNDNOU0EyTXpndU16RWdReUEwT0RjdU56SWdOakl5TGpBNElEUTRNaTR3TVNBMk1EWXVNelFnTkRjMkxqUTBJRFU1TUM0MU9TQkRJRFEyTWk0MU15QTFORGt1TnpZZ05EUTNMalE0SURVd09TNHpNeUEwTXpFdU9EQWdORFk1TGpFMUlFTWdOREkxTGpBNUlEUTFNaTQ0T0NBME1Ua3VORE1nTkRNMkxqSXhJRFF4TXk0eU55QTBNVGt1TnpNZ1F5QTBNRFF1T0RNZ016azJMamN3SURNNU5pNDBNaUF6TnpNdU5qVWdNemc0TGpVeklETTFNQzQwTWlCRElETTROaTQyTWlBek5EUXVOakVnTXpnMExqQXlJRE16T1M0d055QXpPREV1TnpnZ016TXpMak01SUVNZ016YzJMalEzSURNeU1DNDBNaUF6TnpFdU1UTWdNekEzTGpReklETTJOQzQ1T1NBeU9UUXVPRElnUXlBek1EWXVPREVnTWprMkxqYzJJREkwT0M0MU9TQXlPVFV1TVRJZ01Ua3dMalF3SURJNU5TNDVNQ0JESURJd05DNDNPU0F6TXpRdU1EY2dNakU0TGpneElETTNNaTR6T0NBeU16TXVOemdnTkRFd0xqTXpJRU1nTWpVd0xqYzVJRFExTWk0MU9TQXlOall1TlRZZ05EazFMak16SURJNE15NHhNU0ExTXpjdU56WWdReUF5T1RNdU5Ea2dOVFl3TGpjMElETXdNUzQwTnlBMU9EUXVOamdnTXpFeExqQXhJRFl3T0M0d01DQkRJRE14T1M0eU1DQTJNamd1T0RBZ016STJMamMxSURZME9TNDROaUF6TXpVdU56VWdOamN3TGpNeUlFTWdNelEzTGpFM0lEWTVPQzQyTnlBek5UZ3VNRGdnTnpJM0xqSXhJRE0yT1M0eU5DQTNOVFV1TmpZZ1F5QXpOemN1TmpZZ056YzJMamczSURNNE5pNDJOQ0EzT1RjdU9EVWdNemswTGprMElEZ3hPUzR4TWlCRElETTROUzR3TUNBNE5ETXVNRE1nTXpjMExqVXlJRGcyTmk0M01TQXpOalF1TlRZZ09Ea3dMall5SUVNZ016VTVMamM0SURrd01pNHpPQ0F6TlRRdU9UQWdPVEUwTGpFeElETTBPUzQ0TUNBNU1qVXVOelFnUXlBek5ETXVNellnT1RRd0xqYzBJRE16Tnk0eE1TQTVOVFV1T0RZZ016STVMalV3SURrM01DNHpNaUJESURNd01pNDRNU0E1TmpBdU9EY2dNamMzTGpNMUlEazBPQzR5TnlBeU5USXVPRElnT1RNMExqSXdJRU1nTWpReExqQTNJRGt5Tnk0ME1TQXlNamt1TXpBZ09USXdMall4SURJeE9DNHlOQ0E1TVRJdU56SWdReUF4TkRRdU1qWWdPRFl4TGpFNElEZ3pMakl3SURjNU1DNHpOeUEwTmk0eE9TQTNNRGN1T1RJZ1F5QTBNUzR6TVNBMk9UZ3VORFFnTXpZdU9Ea2dOamc0TGpjeElETXpMalE1SURZM09DNDFPU0JESUMweE5pNDFNU0ExTlRBdU5UUWdMVGt1T1RBZ05EQXhMakl3SURVeUxqZzVJREkzT0M0M01pQkRJRFl6TGprMUlESTFOaTQxTVNBM05TNDVNaUF5TXpRdU5qRWdPVEF1TnprZ01qRTBMalk1SUVNZ01UQTJMalF6SURFNU15NHdNaUF4TWpJdU56UWdNVGN4TGpZMklERTBNUzQ1TnlBeE5UTXVNREVnUXlBeE5Ua3VNRGtnTVRNMExqQTRJREUzT0M0NE5TQXhNVGN1TnpnZ01UazVMakEySURFd01pNHlOaUJESURJd055NHlOeUE1Tmk0d05pQXlNVFV1TWpVZ09Ea3VOVE1nTWpJekxqazBJRGd6TGprNUlFTWdNalV6TGpjd0lEWTBMalF4SURJNE5TNDFPQ0EwT0M0eE5TQXpNVGd1TkRnZ016UXVOVFVnUXlBek56TXVOakVnTVRJdU9UQWdORE15TGpVNElERXVNalVnTkRreExqYzRJREF1TURBZ1dpSWdhV1E5SW5CaGRHZ3hJajQ4TDNCaGRHZytQQzluUGp4dFpYUmhaR0YwWVQ0OEwyMWxkR0ZrWVhSaFBqd3ZjM1puUGc9PSIsImF1dGhlbnRpY2F0b3JHZXRJbmZvIjp7InZlcnNpb25zIjpbIkZJRE9fMl8wIiwiRklET18yXzFfUFJFIiwiRklET18yXzEiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0IiwibGFyZ2VCbG9iS2V5IiwiY3JlZEJsb2IiLCJtaW5QaW5MZW5ndGgiXSwiYWFndWlkIjoiN2I5NjQ1N2RlM2NkNDMyYjljZWJjOWZkZDdlZjc0MzIiLCJvcHRpb25zIjp7InBsYXQiOmZhbHNlLCJyayI6dHJ1ZSwiY2xpZW50UGluIjpmYWxzZSwidXAiOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJsYXJnZUJsb2JzIjp0cnVlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWUsInNldE1pblBJTkxlbmd0aCI6dHJ1ZSwibWFrZUNyZWRVdk5vdFJxZCI6ZmFsc2UsImFsd2F5c1V2Ijp0cnVlfSwibWF4TXNnU2l6ZSI6MTUzNiwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0Ijo4LCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjEyOCwidHJhbnNwb3J0cyI6WyJ1c2IiLCJsaWdodG5pbmciXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fSx7InR5cGUiOiJwdWJsaWMta2V5IiwiYWxnIjotOH0seyJ0eXBlIjoicHVibGljLWtleSIsImFsZyI6LTM1fV0sIm1heFNlcmlhbGl6ZWRMYXJnZUJsb2JBcnJheSI6NDA5NiwibWluUElOTGVuZ3RoIjo4LCJmaXJtd2FyZVZlcnNpb24iOjMyOTQ3NiwibWF4Q3JlZEJsb2JMZW5ndGgiOjMyLCJtYXhSUElEc0ZvclNldE1pblBJTkxlbmd0aCI6MSwiY2VydGlmaWNhdGlvbnMiOnsiRklQUy1DTVZQLTMiOjIsIkZJUFMtQ01WUC0zLVBIWSI6M30sInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjoxMDB9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDIiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMi0yMSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzYsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiWXViaUtleSA1IEZJUFMgU2VyaWVzIHdpdGggTGlnaHRuaW5nIiwiY2VydGlmaWNhdGVOdW1iZXIiOiJGSURPMjAwMjAyNDEyMjEwMDUiLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuNC4wIiwiY2VydGlmaWNhdGlvblJlcXVpcmVtZW50c1ZlcnNpb24iOiIxLjUuMCJ9LHsic3RhdHVzIjoiRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNC0xMi0yMSIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjozMjk0NzZ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDEtMTAifSx7ImFhaWQiOiIwMDI0IzIzMjIiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhaWQiOiIwMDI0IzIzMjIiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiRytERmFjZUtleWNoYWluaU9TIn0sImRlc2NyaXB0aW9uIjoiRytEIEZhY2VLZXljaGFpbmlPUyIsImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoxLCJwcm90b2NvbEZhbWlseSI6InVhZiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjJ9LHsibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X2RlciJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiZWNjX3g5NjJfcmF3Il0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJmYWNlcHJpbnRfaW50ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIl0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbInNvZnR3YXJlIl0sImF0dGFjaG1lbnRIaW50IjpbImludGVybmFsIl0sInRjRGlzcGxheSI6WyJhbnkiLCJwcml2aWxlZ2VkX3NvZnR3YXJlIl0sInRjRGlzcGxheUNvbnRlbnRUeXBlIjoiaW1hZ2UvcG5nIiwidGNEaXNwbGF5UE5HQ2hhcmFjdGVyaXN0aWNzIjpbeyJ3aWR0aCI6NTQwLCJoZWlnaHQiOjk2MCwiYml0RGVwdGgiOjE2LCJjb2xvclR5cGUiOjIsImNvbXByZXNzaW9uIjowLCJmaWx0ZXIiOjAsImludGVybGFjZSI6MH1dLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQm1EQ0NBVDBDQkdRZFBSMHdDZ1lJS29aSXpqMEVBd0l3VmpFTE1Ba0dBMVVFQmhNQ1NVNHhDekFKQmdOVkJBZ01BazFJTVEwd0N3WURWUVFIREFSUVZVNUZNUXN3Q1FZRFZRUUtEQUpIUkRFTE1Ba0dBMVVFQ3d3Q1JGTXhFVEFQQmdOVkJBTU1DRUZWVkVoU1QwOVVNQjRYRFRJek1ETXlOREEyTURNd09Wb1hEVFF6TURNeU5EQTJNRE13T1Zvd1ZqRUxNQWtHQTFVRUJoTUNTVTR4Q3pBSkJnTlZCQWdNQWsxSU1RMHdDd1lEVlFRSERBUlFWVTVGTVFzd0NRWURWUVFLREFKSFJERUxNQWtHQTFVRUN3d0NSRk14RVRBUEJnTlZCQU1NQ0VGVlZFaFNUMDlVTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFU0lwSS9kS1lDRFloendEMndTZllBT2Ivbk5haVBjV0YyMXZ4WmsvVGdEME9KdGNEK09QbTY0bndaZEZXU0VZU1c3aU9xbnBtSnlkZThtZ3IvdG5BaXpBS0JnZ3Foa2pPUFFRREFnTkpBREJHQWlFQTNidmhhelFGUHdteVhseEsveENYZmg3ZzFYMUVvYkxDM0wrMkdPUnhwN2dDSVFDZk5FVFgvbTJCZWJSTFhJNExNUDFFUUdQWEZEZjdPazc0VTd4YmlNNFZrQT09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsLzlqLzRBQVFTa1pKUmdBQkFRQUFBUUFCQUFELzJ3QkRBQU1DQWdNQ0FnTURBd01FQXdNRUJRZ0ZCUVFFQlFvSEJ3WUlEQW9NREFzS0N3c05EaElRRFE0UkRnc0xFQllRRVJNVUZSVVZEQThYR0JZVUdCSVVGUlQvMndCREFRTUVCQVVFQlFrRkJRa1VEUXNORkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCVC93Z0FSQ0FESUFNZ0RBU0lBQWhFQkF4RUIvOFFBSEFBQkFBTUFBd0VCQUFBQUFBQUFBQUFBQUFjSUNRUUZCZ0lELzhRQUd3RUJBQUlEQVFFQUFBQUFBQUFBQUFBQUFBRURBZ1VHQkFmLzJnQU1Bd0VBQWhBREVBQUFBYXlqNkY1d0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFZ2QzZURUNXhMSjM2eEZvYzVsOGxHUFNYS3N6TkRNMDlOVmROKzhQOFpkTEtCSHBpZSt2aFR1b2ZOWE5Bdm0rTXlVbVJuMWRRWmdBSE00Y3cxTGljUDFWTGVRdWpUekoyZEpNMzM1cGhhYVVqZWFiS1VSdmRWN1NaMWRUUzZTdUZrd1EvYkhyNzY1dDJGMW1kazg3TlBxRStTWXlIUjFnQUxCMThsdnlUZWpQWFFxbXVnc2dZZFZWcDF5YUhmWExXM3ZVUWsycGFJcWQ1TXJZcUlQZmpkTE5tVFl5MitDVG94c2I2SXR0U3U2bEE5QlpIQTZxb0FCeU9PTkhQMnBQZW5qcnMvOEF4bW5jWWJMQ2lhNnoweFNtYVp0OUhSTWxVUnZkRitxem9ZdXMzbGRLVjF1NmlhbTN0N1BydEpuMEdlbnUvQTlEV0d4eEFBQWV2OGd4WEtrL09acWM5Sm1iS2xwTXpaR2t6TmthVE0yUnBOd002RXJoMWo4dzJPSWV5QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUC84UUFLQkFBQVFNREF3UUJCUUVBQUFBQUFBQUFCUUFFQmdJREJ4VVhJQUVRRXpZUkVoWXdOSEExLzlvQUNBRUJBQUVGQXY2YkdJU1JsTlliRmdVWlMzRk1tbFBndEtXMmJmU0xyRTFQU3VXK0MwdkJhWGd0THdXbDRMU2NpR0x5azFpZ09ScGtzUUl4ZTkrR0FRbXFVUEc3ZTAwc1BuN1lhM2U1ZEJ0cTk1eGFPWllIRkF5eEo3Y3BCa3hoSGkyODR0YnppMXZPTFRITFFKM1cxZDJIMWg2eXNFV3M1aDF5S0VPYlJyY2ZPZ1lpeUJGU1dRdDR5S1BTRjdJM3ZERW50eXlmN3R3amNvZlJoNENOTjVBTWxBSzNJd2x5M1ZadWNzVk1PajJYTExSbXA5SSsxR0pqMWRPMGg1YlNIbEFvQ1ZqcDlUWEhoWTlKZHBEeTJrUEp6aXc0MGJkc09tYW01ZFpIWWRCOHc1WVkrTmVVNCtycEx1emI5Ym1lL3dBUHRqWDZ2dlZaZitQdXZsaTRoMFlTOVpkQ1ZNejNhbkpzam9wM1BraTNQa2l4NU5UQjZSS2RUbzJGbEc1OGtXNThrVi9KRWhkV08ySEFsVjRnc2hrT2hLWDhyRit0cmZqUnkxSXd4NEcya1F5U1JSL0YzWERFbnR5eWY3dHdpc05mU2x5SUZOd2crWVNHaU5BNnF1dGRYT0VURzdFMzdCKzNLTkw3ZTA2dFBjWHg5NVh0Q0NXMElKYlFna0JnQXVPUDBheDBKUEV0b1FTMmhCTGFFRW1PTTQreHJ0V3FMRnNvVmFobVV4bGw2V0V2d3g2VWtJemZDNWVHUEtXOHFET3FkZEdyWFJxMTBhdGRHclhScTEwYXRkR3JYUnExMGFuTXRDdEtUZVlCN1drOUpIOGtjLzAzLzhRQUhSRUFBZ0lDQXdFQUFBQUFBQUFBQUFBQUFBRVJFZ0lRSUNFeFVQL2FBQWdCQXdFQlB3SDZ5eGs2UktGN3FVU2g0enlmUzFERW1aRVBXTE11QzlNdFdSWWJnc2h1UmVtWG5GT1NwVml4WTFKVmxXSlFOenlzV0xGaXhZYm43SC8veEFBdUVRQUJBd0VGQmdVRkFRQUFBQUFBQUFBQ0FBRURCQVVSRlNGU0VoUWdNVUZSRXlJeVlZRVFKRkJ4OERQLzJnQUlBUUlCQVQ4Qi9MVmxkNFBrajVyN2lwenpkUjBsUXhzN2lxci9BQVA5S09NNVgyUXpXNTFPbGJyVWpuc3VvSytXRjdqelpSbU1nc1k4dUNVL0NqYyt5cFl0Nm11TDl1aEZoYTRWdlVHdGxVMU1KUWt6RXJPa0dPVjNON3NsdmNHdGtFb1MraDcxYUZNeGc4cmMyVmxTdmU4WHp3Vlk3VUJzeXNzMkdaMmZyOU1MbTd0L2ZDa3M2V01YTjNiSlFRRlVGc0FzTG03dC9mQ29hWTZablkrcXF6WUlDZDFaWTN6WCszRFZVNVVzbTBQTG9vYlVHNjZWbGljSHVwN1Foa2lJRzZxaG5DbmtjajdMRTRQZFBha0hTOVZOVWRXVjNUc3FLbTNlUHpjMzRTRmpiWkpIWmNSWmk5eXdrZGF3a2Rhd2tkYXdrZGF3a05TaHBJb1BTMmY1ai8vRUFFTVFBQUVEQWdBSEN3b0VCUVVBQUFBQUFBRUNBd1FBRVJBU0V5RXhRWk1GSUNJak16VlJZWkdoMFJRd01qUlNZbkdCd2VGQ2M3R3lVM0NTcy9CVWNuU0N3di9hQUFnQkFRQUdQd0wrWnQyRVpLTUR3cERuby9McG9GOXM3b1BlMDk2UDlOV1lpTU1qb1EyQlhKcDdLM1dJUWtIeVZ6Vjd1QUFnRVpCZW41VnlhZXl1VFQyVnlhZXl1VFQyVnlhZXlyUHdvN3c5OW9HbEtpaFc1NzNTM25SL1NmcFZwVGVNeW84Qjl2T2hYbWk5SXVuYzVrOE1qOFo5a1VobGx0TFRTQlpLRWl3RkYrVStpTzBQeHVLdFJTMEpFcjNtMjdEdklyMUtaMko4YW13MjRrcEszMlZOZ3F4YkM0K09BZmtMK21CNkE5RmtPT05XdXBHTGJPTDlQWFhxVXpzVDQxNmxNN0UrTmVwVE94UGpRUzRYNG5XNjNtN3IwbDZPOGg5cFdoYmFyaW5JOGxwTHpMZ3NwQ3E0RjNJTDJkbHc2dmRQWDVobU95TVoxMVlRa2RacVBCWTlGcE5pZmFPczA1TWY0WDRXMjlhMWRGR1JNZHh2WlFQUlFPZ0RlajhoZjB3VC9nMy9BRzA3MFBSWE9MUEtNcTlGWS96WFRNMk1lQXZTazZVbldEVWlFdTJNb1hiVjdLOVJwVGF4aXJTYkVIVWQrMHRRdUk3YW5mcDljSGtRUEV3MGdXOTQ1ejlNSVVCSHNjL0sxb2piV3RFYmEwSmNzTTVISnFUd0YzT0NWTmlobklPWW1ManVXT1pJRmFJMjFyUkcydE92dUNQaU5wSzFXYzFEQy91Y284VklSanBIdmo3ZnBnbkJJc2wwaDRmTVorKysvbTlQazMvb1lOMWNiVGx6aGEvMmp6RzZQL0hjL2FjTzV1TDByL1lyQW0zK21SZnRPL2pwVWJKa0lVejlSM2dZRWJvSlR4TXRPYysrTTM2V3doSW5pd3pjaTM0VnpnTmczNFZ6Z05nMzRVSXMyWGxtTWtwV0xrMHB6L0lZSmNTSE15VWRHSmlweVNEcFFEckZjNERZTitGYzREWU4rRk9NdVRncHR4SlNvWkZHZy9MREozVVduaW1VNUpCNlZIVDNmcmczUVdrM1EyckpEL3FMSHZ2djIzbWxZamphZ3BLaHFJcVBOYXRkWXN0UHNyMWluWVVrY0JlaFEwb1ZxSW90eW03dEU4VytuMEYvNTBiMGZrTCttQ2Y4Ry83YWQ2QXlndFJRZU1rcUhCSHc2VFRNT0tuRlphRnVzOVpwK1VTTXNSaU1wNlY2dkdpcFJ1bzV5VDVnNDEzSUx2TE5EOXc2NmJreFhVdk1MRjBxVFNtbm0wdXRxMG9XTGcwVkNLcU9UL0JjSTdxMHl0cjlxMHl0cjlxMHl0cjlxOHNpRi9LNHBUeGk3ajlNRHM2U1g4czVhK0l1d3pDM1IxVnBsYlg3VnBsYlg3VnBsYlg3VUZlUm1Rb2Z4MWxYZG9wS0cwSmJRbk1FcEZnS2NsVEhReXlqV2RmVUt5eXJ0eG04ekxYc2pwK1Btc2VFOVpCOU5sZWRDdmxRVFBiWEFkMW0yT2p1ejFkdmRTSWVvdkFHdWNJdTJUWE9FWGJKcm5DTHRrMXpoRjJ5YTV3aTdaTmM0UmRzbXVjSXUyVFhPRVhiSnJuQ0x0azFkM2RTSU9vT2hSN0JSVHVjeXVhN3FXdmdJOGF5MDU3SHQ2TFl6SVI4Qi9NNy84UUFLQkFCQUFFQkJRZ0RBUUVBQUFBQUFBQUFBUkVBSVRGQlVXRVFjWUdSb2NIdzhTQXcwYkZ3LzlvQUNBRUJBQUUvSWY4QVRZam80YURUTTBPTVVZNjN2RXRCWkcrYUJGdUQraFhxOUc1RUNITnN1NWFCTlBWNjlYcjFldlY2OVhwYzVZZjJ5bVpPMFJaMVQraWdaNFRnaE9Eby9VVEJ1Nk4vTi9YQTMwYTQwU09RVmVxckFkMi9Tb01IZ3VyT214R0VobnBDQXVXMzRVU0xxaGxoTVNQZ1JvMGJwdHN0M082WGFhb2JpVkNFSk1pZVkwREUwM2htMEhVNHg4OWRxWEpCUm1FU0RiaXVxeTFicGl3TUx1SDlYQUdsM09XN2NzdjY0L1pSd1Zzb1N1T00rWXFmdWVRZk5GQ3FKdnd2VTZMVCsyNytCaFBuWmtIM093OVo4TmhaZWhhWW5KSERiQTVvUEJYblB5dk9mbEUyREc4eEZrYWJIbVJHSUdzak1hODUrVjV6OHEvVVBGZ2x3MDJwTmtaZkozejVObkh2SUNmbUZCM1c2MzdiRGFQTTVZZEkyK1d5K3RRRmJKdE4xdHNXYmN4NmZuUEFwWE5Pb0xqc1RCREJ1QkVjUXVlMG9ZSUdGdG9VSjJyQkxNaUxRZGhuQXBZTWxhamV1MUNoaUZnWGtJU3pMdFNnSmRrckc3WXd3ZzRaMEh6TkF2UmlKSG5TaENDMjY3L1JHc2N1WFljMGZwalRsTE1kaHZ3ZFZ2MlVjSU5CckNjVCtBNHhWajFsTjVqbUsyMWF0RVdNZEJlMEtmdzJRbFg2SElPaGVETFJkYnNrbkRxS3gvSFNpSjlCWnRScTB5OHhQTkljQ3ZTcWVsVTlLb2JRTmhJRyt5R3pEZGY3QUVHZ1Y2VlQwcW5wVk1OSUVqdWNTZ0RGRGdaQVVTV3JieFlCaXVWTFFsbnZFYXNlQmg5UytZWjVoNXRTR3NEZEZMeHNPWEdqVTUvQkZtdlB1OWVmZDY4KzcxNTkzcno3dlhuM2V2UHU5ZWZkNjgrNzB5aW42NExXQnVRUjF0dGJvTjlTVTZWR1dCdnYvd0JPLzlvQURBTUJBQUlBQXdBQUFCRDc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nm9Namc0eHZQMzc3Nm1wenl5dnplcHI3NzczajVUL3o1ZS96Nzc2NHB2OEF2cS82SUcrKysrdmMvd0QvQVA4QXRmOEF2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2L3hBQWVFUUVBQWdFRkFRRUFBQUFBQUFBQUFBQUJBQkV4RUNBaFVXRkJVUC9hQUFnQkF3RUJQeEQ5Yk1kQnF6TUVVTXoybG4yQmhFUnAyQmJVV0NabmhMQnhBcHhQS0ltWlExRDkyY1JEeHJBV29BdDBpd2hzYm9EVEhycEFSakNqV2htNXRHb016TDlTL1V2MUw5Uy9VWEw5ai8vRUFDZ1JBUUFCQVFVSUF3RUJBQUFBQUFBQUFBRUFFU0ZCWVhIaElERlJnWkdoc2RIQjhQRlFFUC9hQUFnQkFnRUJQeEQrc2IzMTl1TllEbzd0UFJGVTBFODV6dmtvZFZ2bU43ZTQrS3RKVSszdzd6SitHS3pWYkdHUll0VnFXL1RGZ1lxQmRQM0lDOVVhRllYUVZGdVpQMUlVbzBjSVhOTjlpWTVRRG15bEhoK09tdzNCSGkyWEFTek94OGY0dTE3akZIa0ZiRjlSK2dJVnQ1Rnc4Wis0d3BnMUc2dnlFdkJCT2JaRVViaGVUWVFTak54MnFxNFlabmVVVmRlSmZ5dW4xR3NyUTFDRm1zcUZVVVdabnFmVWF3QlVMa2U0TUpTNExiZmxqWnljT0J5ODdMMEtqY3hxcXdienZiM21LNmF6RmROWml1bXN4WFRXRlMxOUNXM25HMTA1ZjJQL3hBQW1FQUVBQVFNREJBTUFBd0VBQUFBQUFBQUJFUUFoTVJCQllTQlJjWUV3d2ZCd2thSFIvOW9BQ0FFQkFBRS9FUDVOdmNVNFpraTUrQXRLUTBIckJaN3FlZUp2bWppdEFOZWdyOU45VXpHTUFqc3NhU0dreEI2TmZwdnF2MDMxWDZiNnI5TjlWK20rcVBNVUpyL1NpeDgrbm9nNG9xbUJQYmtzREdOc2JLU0UvRVMweFRIQTJGa1N1Z0VJUVNXWGhjQXNGV1ZmVFIyQ3QxRmhLN0ZUSnRBcGVIU0RDekozZnVoTUVUQXZIUTBPTG05bG8xZ0RKa2VoZ3dZTkQreEUrV0RsQTcwYnA1N29jSWttNWtwdDNmdHJDTUlJUkJFUWFQMEtVd1hXV3VrT0lrdkQ0SEZkd2RQZ2xMMWpBdUpWK1krQ1lMQlUvaXdPQVYyeFpnTWhEQU1ZUGoxQnRJZ1lsdkJLVy95TkZKQkcycHNtMURBOWdvcXdoMkdPQVlUMGtKWkduaWtKdzFCMkp3WkJ2UmliZWhBZzdpSjFsdGlra2lMOGdqa2FNQkZRL3dCbmZ3Yys3cmRQYVlzSkovdlhQTmxnZDhCaGE3UjlzUkozVkpIS3hHdWVaRmIxZERFWnNLMnJMejBaQ2lvMmttNzhlaENUNEVTdCsrdktxSk43ditrNkJMSlRkT0hXZmg5dngzc2JSV2U0OWFOT0VRaCtkdXNhTlMwRUkvUU9Sb3lJU2wzbjJoWGQ0dW9HSHlxQVFHdVRKYUZHemE3WVpMYVkwbVdmdGR3MGwxMXpCYldUSnYxRHNzbkNrcEpFZFNJQ0phV1M0NGZIUXlyK0dURW50TTk5ZU01ZEREY2dIMVF4RVM1S0NiMnVKenVGTXFTRFM4U25DTHdpbGxUQWJDcnNvN1BOaHlRdnh0RkJLQlFobnNMZUczSkM5Wno4SVYzZEJMS2U3WUNDcHJMUmF2Rm05M2tUS1VnWE1rSmxWM1ZaK0IrNnNURllEWUZiV0RkRkFiQXBNRzRtUWJLQkVSQks0Rm51aUVpZVNtQUZkSzhKNFFIUXpac3pOVnl5L0Jjc2I2RW1tQ1BKOEpNaStaNkdiTm5QTTAreGN6MkZEVUtCZGdBQTRLa2FDZk93QzhhQVN0WHFZNlN0NGJNWW94QVNCK0o5Z3dURjVpSVdtQXRNU1ZEWW9LSjNDdWRtSjNab0VlSmdieVllejR2L0FQOEEvd0QvQVA4QS93RC9BUGdnUkw2eFFlaW9iMFJWL0JiOGpzb0EzYkVtTWpZd0pVcUNWaitUdi8vWiJ9LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJOT1RfRklET19DRVJUSUZJRUQiLCJlZmZlY3RpdmVEYXRlIjoiMjAyNS0wNC0xNiJ9XSwidGltZU9mTGFzdFN0YXR1c0NoYW5nZSI6IjIwMjUtMDQtMTYifSx7ImFhZ3VpZCI6Ijc5OTE3OThhLWE3ZjMtNDg3Zi05OGMwLTNmYWY3YTQ1OGEwNCIsIm1ldGFkYXRhU3RhdGVtZW50Ijp7ImxlZ2FsSGVhZGVyIjoiU3VibWlzc2lvbiBvZiB0aGlzIHN0YXRlbWVudCBhbmQgcmV0cmlldmFsIGFuZCB1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW5kaWNhdGVzIGFjY2VwdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9tZXRhZGF0YS9tZXRhZGF0YS1sZWdhbC10ZXJtcy8uIiwiYWFndWlkIjoiNzk5MTc5OGEtYTdmMy00ODdmLTk4YzAtM2ZhZjdhNDU4YTA0IiwiZnJpZW5kbHlOYW1lcyI6eyJlbi1VUyI6IkhJRCBDcmVzY2VuZG8gS2V5IFYzIn0sImRlc2NyaXB0aW9uIjoiSElEIENyZXNjZW5kbyBLZXkgVjMiLCJhbHRlcm5hdGl2ZURlc2NyaXB0aW9ucyI6eyJlbi1VUyI6IkhJRCBDcmVzY2VuZG8gS2V5IFYzIn0sImF1dGhlbnRpY2F0b3JWZXJzaW9uIjoyNjIxNDQsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfSx7Im1ham9yIjoxLCJtaW5vciI6MX1dLCJhdXRoZW50aWNhdGlvbkFsZ29yaXRobXMiOlsic2VjcDI1NnIxX2VjZHNhX3NoYTI1Nl9yYXciXSwicHVibGljS2V5QWxnQW5kRW5jb2RpbmdzIjpbImNvc2UiXSwiYXR0ZXN0YXRpb25UeXBlcyI6WyJiYXNpY19mdWxsIl0sInVzZXJWZXJpZmljYXRpb25EZXRhaWxzIjpbW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InBhc3Njb2RlX2V4dGVybmFsIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XV0sImtleVByb3RlY3Rpb24iOlsiaGFyZHdhcmUiLCJzZWN1cmVfZWxlbWVudCJdLCJtYXRjaGVyUHJvdGVjdGlvbiI6WyJvbl9jaGlwIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWQiLCJ3aXJlbGVzcyIsIm5mYyJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQytqQ0NBcUdnQXdJQkFnSVVkaEVnNVkvWDJLWjV2b3dUK3ZmMWxaZEpnYmN3Q2dZSUtvWkl6ajBFQXdJd2F6RUxNQWtHQTFVRUJoTUNWVk14RXpBUkJnTlZCQW9NQ2toSlJDQkhiRzlpWVd3eElqQWdCZ05WQkFzTUdVRjFkR2hsYm5ScFkyRjBiM0lnUVhSMFpYTjBZWFJwYjI0eEl6QWhCZ05WQkFNTUdrWkpSRThnUVhSMFpYTjBZWFJwYjI0Z1VtOXZkQ0JEUVNBeU1CNFhEVEkwTVRBek1ERTRNVFUwTjFvWERUUTVNVEF6TURFNE1UVTBOMW93WmpFTE1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBb01Da2hKUkNCSGJHOWlZV3d4SWpBZ0JnTlZCQXNNR1VGMWRHaGxiblJwWTJGMGIzSWdRWFIwWlhOMFlYUnBiMjR4SGpBY0JnTlZCQU1NRlVaSlJFOGdRWFIwWlhOMFlYUnBiMjRnUTBFZ09EQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJPdkYyZUlqbWcvdmRnMlNNN2hWWnpMak9NSWVWb21ZVmRyUmFWb2dwdVRMQzdLT3dIdXVCbVg0bVM3aitQNlllUFdvVTdzeUlXUlU4RndBYUFQTnk2cWpnZ0VtTUlJQklqQU9CZ05WSFE4QkFmOEVCQU1DQVlZd0VnWURWUjBUQVFIL0JBZ3dCZ0VCL3dJQkFEQWZCZ05WSFNNRUdEQVdnQlM3NkRwbDkzdkIyaDVGREx2eU1NdlVCeWozaXpBZEJnTlZIUTRFRmdRVWZ1VERodWtBVTdKcG5wdzRxY1pjdk9YTU1Tb3dSQVlEVlIwZkJEMHdPekE1b0RlZ05ZWXphSFIwY0RvdkwyTnliQzVvZVdSeVlXNTBhV1F1WTI5dEwwWkpSRTlCZEhSbGMzUmhkR2x2YmxKdmIzUkRRVEl1WTNKc01IWUdDQ3NHQVFVRkJ3RUJCR293YURBL0JnZ3JCZ0VGQlFjd0FvWXphSFIwY0RvdkwyTnliQzVvZVdSeVlXNTBhV1F1WTI5dEwwWkpSRTlCZEhSbGMzUmhkR2x2YmxKdmIzUkRRVEl1Y0Rkak1DVUdDQ3NHQVFVRkJ6QUJoaGxvZEhSd09pOHZiMk56Y0M1b2VXUnlZVzUwYVdRdVkyOXRNQW9HQ0NxR1NNNDlCQU1DQTBjQU1FUUNJRjNOWTg5OC82emFPQXBab3RreDhNOEw5LzliOTgxYTZpWW13aXRxemdHRUFpQk12alQ1emphTStVZWZwUHJHL2ZseFV4ald5TFZoUmRhV29ZeFVydXJpUmc9PSJdLCJpY29uIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFWTUFBQUNzQ0FZQUFBREcrRThNQUFBQUlHTklVazBBQUhvbEFBQ0Fnd0FBK2Y4QUFJRHBBQUIxTUFBQTZtQUFBRHFZQUFBWGI1SmZ4VVlBQUFBSmNFaFpjd0FBRDJBQUFBOWdBWHA0UlkwQUFBeWdTVVJCVkhoZTdaMS9iSlRsSGNCdmpoak5jQzRPK2RYZVhWdFVUTXppUDdvWVhaWTUxSWtLZDFmTm5GSGo1b2hCbUE3ajJNUnNab2xteGhoTkpvcnQyNEtnc2lGc2ltN1RBZE1ZUkZRRUZUY1Z4dy9yd0FFRlJDaFErdXVlUGMvMXFRUDNUTnMrMzN2ZXUrdm5rM3pTNDJnZm52ZTl0NTgrNzczWEl3RUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVVFcGtHNi9YUHBuSVJSOGdJaDV0NDFyOWNZYXRCZndQOVEzbjZ4MjBUWnRQMURjcFJNVFBOZGVVMTR1dVZ0Mk1xMjFGQmt4dE1qbXJMcFZxMFI4MzExWlgzMnJ2TG1NS1AyMzBqcW1QM0RzTkVmSHp6RVc3RXhmT0dXbUw4b1drazhrZjFxWFNQWFhWcWFYSlVhUE9xS21xT3JNdW1mcHJiVExWblVxbExyZWZWa1pNbVAxMS9aT2x3N2x6RUJFSG9qbXJ6VVpUYlYzK0wzVmp4MDR3SVIwOWV2VEo0MUtwS2RvYmpDTkhqaHcxZHV6WTVMaDBqZEtyMUxQdHA1Y0JKcVNzUmhGUjB0Nmd6clNWY1hHTURxbXFTU1l6K3ZZd0U4NmFxdFMxdGRYcDY4M3R1akZqVWpWams1UDFLclc5OTlQTGdWelU1ZHdaaUlnK21xQmVPcWZPbHVZbzB1bjBjVHFtWGZhUHc4d0sxZDVPNkZQOHQyclQ2VnYwelMrYnNQYmVXK3Jrb28rY093RVJVY0pjZE1EVzVpaXFxNnVQSDVlcTZWdDFGbGFtT3FJNzYxSTEyMDlKMS9SRjlrdmxFZFA2aG04N054NFJVZEpzd3oyMk9wOWlZcXBYbzUzMmoyWmxtai9wcEpPK3FqOTJwOGVNT2QzZWYweDV4RFRYdE0rNTRZaUlrdWFpRGx1ZEkrazloVThuanRPM0N6RTFkNDRZTVdLTXZuM1EzQjQrZXZqSituYmZLcldFNFhXa2lCakt5NXZQc3VYNWxMcFVhbVp0TXIzZjNLNnRUcjVUdUZOVGwwdytXcE5LM2F6L3JxTzJPajNOM2wyaVRJNm1PamNZRWJFWTVwcWV0ZlU1aXJycTFETzF5ZFNCY1ZXcEcreGRpYnFxNUF5ek90WDNMN1IzbFREMTBYTG5CaU1pRnNOY1UrSFUzVVZ5VlBJTUhkV1ZwOVhXcVZOcmF2UDY5dktxRVZXbjJyOHVjZXFqL2M0TlJrUXNocm1vakY0dk9oQ0lLU0tHMUgwUnFnSWdwb2dZVW1LS2lDZ2dNVVZFRkpDWUlpSUtTRXdSRVFVa3BvaUlBaEpUUkVRQmlTa2lvb0RFRkJGUlFHS0tpQ2dnTVVWRUZKQ1lJaUlLU0V3UkVRVWtwb2lJQWhKVFFTOTdXQ1V1ZUVBbExwd2RWdk52NWlMM25BYnI5eDUwLzF2RjlpS3RhejRETWE3SHdEeitydm4weDZ4Ky9PS1lkekUwMjNHUlBuN01NWFNwM2llVEc5M2JYR2tTVXpsdm52dXlpb3ZqcnB6bm5OT2cxQWYvdXMyNzdNaGgyZm5Kb2Q1dlFOZTgrcVArSm82TGFkRXE5NXo2NGRldVhXQkhxUXc2dTN0VVczdW4ycnhqbjFxOVlhZGFzbnF6dXFuNVpYWHlOUXRVNHVLSFZDSlRnWUVscG5LYWI2YTRxSlNZZnJUblFObkc5SWFIWDNMUHFSK2VxQ016Vk5pei83QmE4ZFpXZGVWOXo2dkVCTDJLclpTd0VsTTVpYWsveEhSbzBkblZvNTVkOTZFYWYrTWl2NmRKU2tGaUtpY3g5WWVZRGwzZWJ0bWp6cHUxMU8veGoxTmlLaWN4OVllWXdodGJkcWxUcHVxVnFya281OWhYSlNzeGxaT1kra05Nd3pQcnNUWHF6c1Z2cUx1V3ZLRXlkeTlUdVh1V3ExOHVmTDF3MzcxTDE2c1Y2N2NWTGlhRnBDZWZWNCsrK0UrVnVHQzJjMytWcE1SVVRtTHFEekVOVDJMQ2IvVXFzRkVsTWczL25aTzVLRlM0VHp0SlB4Nlh6bEZWVXhhcUtYTldxby9iRHR1dkxENjcyOXJWTjM2NnhJVHFxUDFWa2hKVE9ZbXBQOFEwUElYWGhqcm01RlJIN1pqSkRlcU8zNisxWDExOHVudDYxQzJQck5iSDVSR3hMMFdKcVp6RTFCOWlHcDRCeGJSUEhiWkpkeSt6STRSaC9ndnZGMWJJenZtVWdzUlVUbUxxRHpFTno2Qmlhc3cwcWgvcjAvNlFQUG5xQjM3SFJ6RWxwbklTVTMrSWFYZ0dIVk5qTmxKLy8zQ1BIU2tNVDcvV1VwcEJKYVp5RWxOL2lHbDR2R0txSGYrVHhYYWtjUHp4RmIxQ0xiWG5VSW1wbk1UVUgySWFIdCtZbXFpOXQyMnZIUzBjUDF2d3FucytjVWxNNVNTbS9oRFQ4SGpITkJlcDgyNS8ybzRXam53K3I4WlBYK3llVXh3U1V6bUpxVC9FTkR6ZU1kVis1YXBIN0doaDJYZXdRMlQrSWhKVE9ZbXBQOFEwUENJeG1tUk85VCt4STRibG1UVXRoZFd4YzE0aEphWnlFbE4vaUdsNFJHS2FqZFF0ODE2eEk0Wm4rRldDeC85Z0phWnlFbE4vaUdsNHBFNlR6NXl4eEk0WW52Yy8ydHY3NjYrT2VRV1RtTXBKVFAwaHB1R1JpdW5vNngrM0k4YkRpT3NlZGM0cm1NUlVUbUxxRHpFTmoxUk1oMTNSYkVlTUIzUE14dnJjS1RHVms1ajZRMHpESXhWVGN4R3FxN3ZiamhxZXJ1NGV1VzBaak1SVVRtTHFEekVOajFpQTlIR3pkbE9ySFRVZWJwMGY0d3Y1aWFtY3hOUWZZaG9lc1pobUd0WENsUnZ0cVBHd2JiYytmdUo2aDM1aUtpY3g5WWVZaGtjc3BqcGl0ejIyeG80YUQrMGRYU294TWFhMzZTT21jaEpUZjRocGVDUmpHdWRyVGZ1STdhbytNWlV6enBoKzUxZC9VdWZPZWxyRWIvNzhLYlVoaGpldU1CRFQ4SWpGTktiZjBmOHN0ejIreGoyL1lrdE01WXd6cHBVQ01RMlBXRXkxNTl5MjFJNGFINnZlM2U2Y1c5RWxwbklTVTMrSWFYZ3FMYVpiNDdvSVJVemxKS2IrRU5Qd1ZGcE10Kzg5MlB1L3Fqcm1WMVNKcVp6RTFCOWlHcDVLaSttdWZlMHFsbmZoSjZaeUVsTi9pR2w0S2kybWhmYzR2Y3pqR0Jxc3hGUk9ZdW9QTVExUHhaM21mOHhwdml6RXRDd2hwdUdwdEpqdTJIdUltSXBDVE1zU1locWVTb3ZwQnp2M203QTU1MWRVaWFtY2NjYlV2TUhFNjBLdTJiaFRIV2p2c2lPSGhaaUdwOUppdW1UMVp1ZmNpaTR4bFRQT21CNXJmaEtiSjkwbHZQZ2g5ZnJHZU43OWg1aUdSeXltSmZJYlVQWDNMSGZQcjlnU1V6bmpqQ20vbTI4bHBnTkdMS1lsOHJ2NXNaemlHNG1wbk1UVUgySWFIc21ZVG8vNXVzSCtRNTI5WjFldStSVmJZaW9uTWZXSG1JWkhMS2FaUnJYb3BVMTIxSGhZMzdLYmxhazR4SFR3RXROQlFVd2IxWXIxMit5bzhYRDJ6S1h1dVlXUW1NcEpUUDBocHVFUmkrbmtCdFg2eVNFN2FuamEydlVwL2lVeHZURzBrWmpLU1V6OUlhYmhrWHpPTkU2ZVdMWEpQYTlRRWxNNWlhay94RFE4VWpFOThacjVkc1R3OVBUazQzbmJ2U01scG5JU1UzK0lhWGlrWW5ycTlDZnNpT0g1eTdwL21aZzU1eFZNWWlvbk1mV0htSVpISktZNlpKZmMrWndkTVN5SE83djFNUlBqYzZWOUVsTTVpYWsveERROElqSE5OS29scTdmWUVjTXlyWEdWZTA2aEphWnlFbE4vaUdsNFJHSWEwOFduVGR2M3hmY2kvYzlLVE9Va3B2NFEwL0JJeEhUOHRFVjJ0SEMwZCtqVGUzMnN1dVlUaThSVVRtTHFEekVOajNkTTlTbiszT2MzMk5IQ1lLN2Vuelh6U2ZkODRwS1l5a2xNL1NHbTRmR042ZkFmekxNamhXUEd2SmVkYzRsVllpb25NZldIbUliSEs2YVRHOVRjdjRWZGxkNitjSTBKbDNzK2NVcE01U1NtL2hEVDhBdzZwdGxJblgvSG4rMG9ZYmlwZVZVOC95VkpmeVNtY2hKVGY0aHBlQVlWMDB5RE92ZjJaK3dJeGFlN0o2OStOUHZGMGx5UjlrbE01U1NtL2hEVDhQUTdwaVprK3JUZUhHdjNQclhlZm5YeE9kamVxY1pOWGVTZVV5bEpUT1VrcHY0UTAvQWt2blYvNzdzdGZkYUpENmxoVnpTckU2K2VyMDYvYWJISzNMMWMvU0h3Qy9PWHZibTFNQS9YUGlzNWlhbWN4TlFmWWdxR2c0YzcxVlgzUDE5WUNidjJWMGxLVE9Va3B2NFEwNkZOUjFlM2Vualp1eXJ4M1FlYys2bWtKYVp5RWxOL2lPblFwTDJ6U3pXdDJOQjdTbC9LRjVrK1QySXFKekgxaDVnT0hmTDV2SHE3WlkrYU1tZWxTbHlnVjZMbEd0RStpYW1jeE5RZllsclpmTngyV0sxNmI0ZTYwYnpUVTdaUkpTWjVQTmFsSmpHVmM5SnZscW5sYjI0dFhJRU02Y3AzL3EyTy9mNWM1NXdHWmFaUlBmanNQNXovVnJIOTNjcU4raHZNNDZMRHhEbnFwWGUzTzhjdXBpdmUycVl1dWVzNTk1ejY0UWxYejFlNzk3ZXJsdGEyaXZETkxidlYyazJ0aFgzejZ5Zldxb2wzUHFkT01EL3dMOWFuOGZxSHRXc2ZsTDNFRkxFRU5LZTQ1dVZJWmxWZTdwcnRNRmZoeStsS3ZJVEVGQkZSUUdLS2lDZ2dNVVZFRkpDWUlpSUtTRXdSRVFVa3BvaUlBaEpUUkVRQmlTa2lvb0RFRkJGUlFHS0tpQ2dnTVVWRUZKQ1lJaUlLU0V3UkVRVWtwb2lJQWhKVFJFUUJLemFtdWFqVnVjR0lpTVh4b0sxUGhaRnRhSEpzTENKaWNjeEZ1Mng5S293cm1zYzdOeGdSc1JobW9sL1krbFFnNWprTTEwWWpJa3FhaS9LMk9oVktydWtGNTRZaklrcWFpM2JZNmxRd3VhamJ1ZkdJaUJMbXRPZmNkN3d0VGdXVGk2WTdkd0Fpb29TNWFKbXR6UkNnUG5yTnVSTVFFWDNNUnEyMk1rT0liT05HNTg1QVJCeU11YVlLZlNsVWY4aEZpL1FPeU91VnFudm5JQ0ora2ViS2ZYM1RXbHVWSVV3Mk9rMnZVbHVKS2lJTzJGeTBONUZ0dXM3V0JBcVlxTlpINi9USGZUcXNuWW42WnIyekVCR1AwS3hDczFHYmJzU1dSS1poZ3EwSEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVCcGtVajhCNEFvbStNYlQrM0pBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMSJdLCJleHRlbnNpb25zIjpbImNyZWRQcm90ZWN0IiwiaG1hYy1zZWNyZXQiXSwiYWFndWlkIjoiNzk5MTc5OGFhN2YzNDg3Zjk4YzAzZmFmN2E0NThhMDQiLCJvcHRpb25zIjp7InJrIjp0cnVlLCJjbGllbnRQaW4iOnRydWUsInBpblV2QXV0aFRva2VuIjp0cnVlLCJhdXRobnJDZmciOnRydWUsImNyZWRNZ210Ijp0cnVlLCJzZXRNaW5QSU5MZW5ndGgiOnRydWUsIm1ha2VDcmVkVXZOb3RScWQiOnRydWUsImFsd2F5c1V2IjpmYWxzZX0sIm1heE1zZ1NpemUiOjUxMCwicGluVXZBdXRoUHJvdG9jb2xzIjpbMiwxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0IjoxLCJtYXhDcmVkZW50aWFsSWRMZW5ndGgiOjk0LCJ0cmFuc3BvcnRzIjpbIm5mYyIsInVzYiJdLCJmb3JjZVBJTkNoYW5nZSI6ZmFsc2UsIm1pblBJTkxlbmd0aCI6NCwiZmlybXdhcmVWZXJzaW9uIjoyNjIxNDQsInJlbWFpbmluZ0Rpc2NvdmVyYWJsZUNyZWRlbnRpYWxzIjozMH19LCJzdGF0dXNSZXBvcnRzIjpbeyJzdGF0dXMiOiJGSURPX0NFUlRJRklFRF9MMSIsImVmZmVjdGl2ZURhdGUiOiIyMDI1LTAxLTEzIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjI2MjE0NCwiY2VydGlmaWNhdGlvbkRlc2NyaXB0b3IiOiJISUQgQ3Jlc2NlbmRvIEtleSBWMyIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMjUwMTEzMDAxIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjQuMCIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS41LjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjUtMDEtMTMiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MjYyMTQ0fV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDI1LTAxLTIzIn0seyJhYWd1aWQiOiI4MzNiNzIxYS1mZjVmLTRkMDAtYmIyZS1iZGRhM2VjMDFlMjkiLCJtZXRhZGF0YVN0YXRlbWVudCI6eyJsZWdhbEhlYWRlciI6IlN1Ym1pc3Npb24gb2YgdGhpcyBzdGF0ZW1lbnQgYW5kIHJldHJpZXZhbCBhbmQgdXNlIG9mIHRoaXMgc3RhdGVtZW50IGluZGljYXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBhZ3JlZW1lbnQgbG9jYXRlZCBhdCBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvbWV0YWRhdGEvbWV0YWRhdGEtbGVnYWwtdGVybXMvLiIsImFhZ3VpZCI6IjgzM2I3MjFhLWZmNWYtNGQwMC1iYjJlLWJkZGEzZWMwMWUyOSIsImZyaWVuZGx5TmFtZXMiOnsiZW4tVVMiOiJGZWl0aWFuIGVQYXNzIEZJRE8yIEF1dGhlbnRpY2F0b3IifSwiZGVzY3JpcHRpb24iOiJGZWl0aWFuIGVQYXNzIEZJRE8yIEF1dGhlbnRpY2F0b3IiLCJhdXRoZW50aWNhdG9yVmVyc2lvbiI6MSwicHJvdG9jb2xGYW1pbHkiOiJmaWRvMiIsInNjaGVtYSI6MywidXB2IjpbeyJtYWpvciI6MSwibWlub3IiOjB9XSwiYXV0aGVudGljYXRpb25BbGdvcml0aG1zIjpbInNlY3AyNTZyMV9lY2RzYV9zaGEyNTZfcmF3Il0sInB1YmxpY0tleUFsZ0FuZEVuY29kaW5ncyI6WyJjb3NlIl0sImF0dGVzdGF0aW9uVHlwZXMiOlsiYmFzaWNfZnVsbCJdLCJ1c2VyVmVyaWZpY2F0aW9uRGV0YWlscyI6W1t7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJub25lIn1dLFt7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifSx7InVzZXJWZXJpZmljYXRpb25NZXRob2QiOiJwcmVzZW5jZV9pbnRlcm5hbCJ9XSxbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfZXh0ZXJuYWwifV1dLCJrZXlQcm90ZWN0aW9uIjpbImhhcmR3YXJlIiwic2VjdXJlX2VsZW1lbnQiXSwibWF0Y2hlclByb3RlY3Rpb24iOlsib25fY2hpcCJdLCJjcnlwdG9TdHJlbmd0aCI6MTI4LCJhdHRhY2htZW50SGludCI6WyJleHRlcm5hbCJdLCJ0Y0Rpc3BsYXkiOltdLCJhdHRlc3RhdGlvblJvb3RDZXJ0aWZpY2F0ZXMiOlsiTUlJQjJEQ0NBWDZnQXdJQkFnSVFGWjk3d3MySkdQRW9hNU5JK3A4ejFqQUtCZ2dxaGtqT1BRUURBakJMTVFzd0NRWURWUVFHRXdKRFRqRWRNQnNHQTFVRUNnd1VSbVZwZEdsaGJpQlVaV05vYm05c2IyZHBaWE14SFRBYkJnTlZCQU1NRkVabGFYUnBZVzRnUmtsRVR5QlNiMjkwSUVOQk1DQVhEVEU0TURRd01UQXdNREF3TUZvWUR6SXdORGd3TXpNeE1qTTFPVFU1V2pCTE1Rc3dDUVlEVlFRR0V3SkRUakVkTUJzR0ExVUVDZ3dVUm1WcGRHbGhiaUJVWldOb2JtOXNiMmRwWlhNeEhUQWJCZ05WQkFNTUZFWmxhWFJwWVc0Z1JrbEVUeUJTYjI5MElFTkJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVuZkFLYmp2TVgxRXkxYjZrK1dRUWROVk10OUpnR1d5SjNQdk00QlNLNVhxVGZvKyswb0FqLzR0bnd5SUwwSEZCUjlTdCtrdGpxU1hEZmppWEF1cnM4Nk5DTUVBd0hRWURWUjBPQkJZRUZOR2htRTJCZjhPNWEvWUhaNzFRRXY2UVJmRlVNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdEZ1lEVlIwUEFRSC9CQVFEQWdFR01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lRQzNzVDFsQmpHZUYreEtUcHpWMUtZVTJja2FoVGQ0bUxKeXpZT2hhSHY0aWdJZ0QySllrZnlINVE0QnBvOHJyb08wSXQ3b1lqRjJrZ3kvZVNaM1U5R2xhcXc9IiwiTUlJQjJEQ0NBWDZnQXdJQkFnSVFHQlVyUWJkRHJtMjBGWm5Ec1gyQ0JUQUtCZ2dxaGtqT1BRUURBakJMTVFzd0NRWURWUVFHRXdKVlV6RWRNQnNHQTFVRUNnd1VSbVZwZEdsaGJpQlVaV05vYm05c2IyZHBaWE14SFRBYkJnTlZCQU1NRkVabGFYUnBZVzRnUmtsRVR5QlNiMjkwSUVOQk1DQVhEVEU0TURRd01UQXdNREF3TUZvWUR6SXdORGd3TXpNeE1qTTFPVFU1V2pCTE1Rc3dDUVlEVlFRR0V3SlZVekVkTUJzR0ExVUVDZ3dVUm1WcGRHbGhiaUJVWldOb2JtOXNiMmRwWlhNeEhUQWJCZ05WQkFNTUZFWmxhWFJwWVc0Z1JrbEVUeUJTYjI5MElFTkJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVzRllFRWhpSnVxcW5NZ1FqU2lpdkJqVjdER0NUZjRYQkJIL0I3dXZac0t4WFNoRjBMOHVESVNXVXZjRXhpeFJzNmdCM29sZFNyam94Nkw4VDk0Tk96cU5DTUVBd0hRWURWUjBPQkJZRUZFdTloeVlSclJ5Snp3Ull2bkRTQ0l4ckZpTzNNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdEZ1lEVlIwUEFRSC9CQVFEQWdFR01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lESFNiMm1iTkRBVU5YdnBQVTBvV0tlTnllMGZRMmw5RDAxQVIyK3NMWmRoQWlFQW8zd3o2ODRJRk1Wc0NDUm11SnF4SDZGUVJFU05xZXp1bzFFK0trR3hXdU09IiwiTUlJQmZqQ0NBU1dnQXdJQkFnSUJBVEFLQmdncWhrak9QUVFEQWpBWE1SVXdFd1lEVlFRRERBeEdWQ0JHU1VSUElEQXlNREF3SUJjTk1UWXdOVEF4TURBd01EQXdXaGdQTWpBMU1EQTFNREV3TURBd01EQmFNQmN4RlRBVEJnTlZCQU1NREVaVUlFWkpSRThnTURJd01EQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJOQm1yUnFWT3h6dFRKVk4xOXZ0ZHFjTDd0S1Flb2wybm5NMi95WWd2a3NabnI1MFNLYlZnSUVrekhRVk91ODBMVkVFM2xWaGVPMUhqZ2d4QWxUNm80V2pZREJlTUIwR0ExVWREZ1FXQkJSSkZXUXQxYnZHM2pNNlhnbVYvSWNqTnRPL0N6QWZCZ05WSFNNRUdEQVdnQlJKRldRdDFidkczak02WGdtVi9JY2pOdE8vQ3pBTUJnTlZIUk1FQlRBREFRSC9NQTRHQTFVZER3RUIvd1FFQXdJQkJqQUtCZ2dxaGtqT1BRUURBZ05IQURCRUFpQXdmUHFnSVdJVUIrUUJCYVZHc2RIeTBzNVJNeGxrenBTWC96U3lUWm1VcFFJZ0Iyd0o2blpSTThvWC9uQTQzUmg2U0pvdk0yWHdDQ0gvLytMaXJCQWJCME09Il0sImljb24iOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUZBQUFBQVVDQU1BQUFBdEJrcmxBQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQkhacFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR3L2VIQmhZMnRsZENCaVpXZHBiajBpNzd1L0lpQnBaRDBpVnpWTk1FMXdRMlZvYVVoNmNtVlRlazVVWTNwcll6bGtJajgrSUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWtGa2IySmxJRmhOVUNCRGIzSmxJRFV1Tmkxak1ERTBJRGM1TGpFMU5qYzVOeXdnTWpBeE5DOHdPQzh5TUMwd09UbzFNem93TWlBZ0lDQWdJQ0FnSWo0Z1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNGdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlnZUcxc2JuTTZlRzF3UFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIaHRiRzV6T25Cb2IzUnZjMmh2Y0QwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOXdhRzkwYjNOb2IzQXZNUzR3THlJZ2VHMXNibk02ZUcxd1RVMDlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl0YlM4aUlIaHRiRzV6T25OMFVtVm1QU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2YzFSNWNHVXZVbVZ6YjNWeVkyVlNaV1lqSWlCNGJYQTZRM0psWVhSdmNsUnZiMnc5SWtGa2IySmxJRkJvYjNSdmMyaHZjQ0JEUXlBeU1ERTBJQ2hOWVdOcGJuUnZjMmdwSWlCNGJYQTZRM0psWVhSbFJHRjBaVDBpTWpBeE5pMHhNaTB6TUZReE5Eb3pNem93T0Nzd09Eb3dNQ0lnZUcxd09rMXZaR2xtZVVSaGRHVTlJakl3TVRZdE1USXRNekJVTURjNk16RTZOVGtyTURnNk1EQWlJSGh0Y0RwTlpYUmhaR0YwWVVSaGRHVTlJakl3TVRZdE1USXRNekJVTURjNk16RTZOVGtyTURnNk1EQWlJR1JqT21admNtMWhkRDBpYVcxaFoyVXZjRzVuSWlCd2FHOTBiM05vYjNBNlNHbHpkRzl5ZVQwaU1qQXhOaTB4TWkwek1GUXhOVG96TURveU55c3dPRG93TUNZamVEazc1cGFINUx1MklPYWNxdWFnaCttaW1DMHhJT1czc3VhSmsrVzhnQ1lqZUVFN0lpQjRiWEJOVFRwSmJuTjBZVzVqWlVsRVBTSjRiWEF1YVdsa09qSkZOekZDUmtaRFF6WTNSakV4UlRZNU56aEVRVGxEUWtJMk5EWXpSamt3SWlCNGJYQk5UVHBFYjJOMWJXVnVkRWxFUFNKNGJYQXVaR2xrT2pKRk56RkNSa1pFUXpZM1JqRXhSVFk1TnpoRVFUbERRa0kyTkRZelJqa3dJajRnUEhodGNFMU5Pa1JsY21sMlpXUkdjbTl0SUhOMFVtVm1PbWx1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2TWtVM01VSkdSa0ZETmpkR01URkZOamszT0VSQk9VTkNRalkwTmpOR09UQWlJSE4wVW1WbU9tUnZZM1Z0Wlc1MFNVUTlJbmh0Y0M1a2FXUTZNa1UzTVVKR1JrSkROamRHTVRGRk5qazNPRVJCT1VOQ1FqWTBOak5HT1RBaUx6NGdQQzl5WkdZNlJHVnpZM0pwY0hScGIyNCtJRHd2Y21SbU9sSkVSajRnUEM5NE9uaHRjRzFsZEdFK0lEdy9lSEJoWTJ0bGRDQmxibVE5SW5JaVB6NDc3SlhGQUFBQVlGQk1WRVgvLy84RVZxSVhaYXZHMk9vcWNMRzJ6T09rd3QwQlNKdHFsY1hWNHUrYXV0bFdoYnprN1BVQU1ZOUhjcktqdE5icThmZUFsOGFCb3N6ejl2cGRqc0dHcXRGM244dVRzTlNacGM2SnNOVDUrdjB4WUtudThQZmY1L0w0OGZnL2ZyaWN6SmdZQUFBREFFbEVRVlI0MmtSVUNaYkRJQWpGWFpPWTFUYXROYzM5Ynprc1NZYzNyNE1FNGZNQkFhRDZ6bDh5LzlUT2dldDhkNWpmTjc4YndNL2REQ1JwUjUyMXpYZm9qSEowNUlJeWhCQVVTVkFPTmRHekJZdDJmN0tGcmZrSmFBa0hoOUZaaGNEWEhSa1RLbzlNTGloR2FhdkltblYzcXlFWDBFcHJnei80RHdVRDdrQ0hSbmQ4UUZONDNHbzRVVm1ERGd6YTR3MjdvaXpkQTIrY0srdXVVcGpqbzIreHdjLzQyVzUweDVMR1llREJzUjBIVkl4NXg4aUY2MENibGJURUVrRnIyN2JOREJVVlNxMU9LVlBiRTYyYjNFSDhGcUJnNU9PT0V1YzJ0OFpKaXFNT3VHcCtjS2pnN3dWR2Nlb3pxTjRweGdWUFFrakZZZ2JWSktEVWhEQ2pZcmF3UDVxNEVUZ0M5ZklNUkh0aXRwUWNDdkpPRUxjYk1zUWduY2lSa2xqcHlRanZHNDRqcUJVRVRGaUJpMVBFSXlla096c1crVHk1Y0xIb3M1UitkTVMxTHRTU3hmM2dRSGN6UjJDSTRnTU5wVzRJUkExUU1hNnRKNCtDNnVIdUdFOG1OREl5RnFnL09QL01NVXVlUzZJcThTOTBkQWVCSlNFeS9xS2tLK0JOd3o4Y1lZNGpiNUo2dTRpV0NJMkIxWjU2TFc1a0VjNGhrZE1wc3ZVQzU1ODVTWDBRdWJjZ05xeWZnREZFY1R0KzQwLzBTNU54MHdhQ3czT0trY09iQTVJbjBBWXAwMXBqancybjYyNlVEanRId2EyOGlIdVRLcXRydityZVc0MU5aNmlHbHI3dXVMSkNma0Z0Y3RjRzA0c2dtMWVOUytaYURucGFURXJHb3lYNUpLMmlNejh4czBuT3dXR2NQRE40OXFhQ2Q0YnpKb3pEWm0vYUJLK0Vvekx3K1hoTkJpWXdIZjBzaU91MVhQa0cvekt3dnFZS2NmU3dERWNIL29VZTA3ZXMvV1E4ckl5ZzJET1hqOHRqa1pkdURCL2I4aHpEbGxNTU9DUzVCRW5kNTM0Zjh0aTNVWmM0a01zM3hMeWFmTVNzSmhkRzhYUHFqTms1dEFnTzI1ZmVLQ2huVmREai9KMEZNa09zVS94TUJ2MHdGaFllRUdmVkgxM2Z1RFUweURGTGE0ZmM3Um5XSEJmdVRGVjJ0RW1Od2FkYzdhYzNVWTJqZkJsN0hUMzZmZTM0aVFPNW1OQ0ZGQlcwN0tqUGdxaE9MVTAxdlo4UHVlWjJKQ2xGWk44amtVczY5dWthOWVQcDYrRWZMNEFGNStOeXdTYmlySHRjQjhNbC9na3dBRWprSzY0S2pIUGVBQUFBQUVsRlRrU3VRbUNDIiwiYXV0aGVudGljYXRvckdldEluZm8iOnsidmVyc2lvbnMiOlsiVTJGX1YyIiwiRklET18yXzAiLCJGSURPXzJfMV9QUkUiXSwiZXh0ZW5zaW9ucyI6WyJjcmVkUHJvdGVjdCIsImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6IjgzM2I3MjFhZmY1ZjRkMDBiYjJlYmRkYTNlYzAxZTI5Iiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6ZmFsc2UsInVwIjp0cnVlLCJjcmVkZW50aWFsTWdtdFByZXZpZXciOnRydWV9LCJtYXhNc2dTaXplIjoyMDQ4LCJwaW5VdkF1dGhQcm90b2NvbHMiOlsxXSwibWF4Q3JlZGVudGlhbENvdW50SW5MaXN0IjoxMCwibWF4Q3JlZGVudGlhbElkTGVuZ3RoIjo5NiwidHJhbnNwb3J0cyI6WyJ1c2IiXSwiYWxnb3JpdGhtcyI6W3sidHlwZSI6InB1YmxpYy1rZXkiLCJhbGciOi03fV19fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiRklET19DRVJUSUZJRURfTDEiLCJlZmZlY3RpdmVEYXRlIjoiMjAxOS0wNS0yNyIsImNlcnRpZmljYXRpb25EZXNjcmlwdG9yIjoiRmVpdGlhbiBlUGFzcyBGSURPMiBVU0Igb25seSIsImNlcnRpZmljYXRlTnVtYmVyIjoiRklETzIwMDIwMTkwMzExMDAzIiwiY2VydGlmaWNhdGlvblBvbGljeVZlcnNpb24iOiIxLjMuNiIsImNlcnRpZmljYXRpb25SZXF1aXJlbWVudHNWZXJzaW9uIjoiMS4wLjAifSx7InN0YXR1cyI6IkZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMTktMDUtMjciLCJjZXJ0aWZpY2F0aW9uUG9saWN5VmVyc2lvbiI6IjEuMy42In1dLCJ0aW1lT2ZMYXN0U3RhdHVzQ2hhbmdlIjoiMjAxOS0wNS0yNyJ9LHsiYWFndWlkIjoiYzg5Njc0ZTMtYTc2NS00YjA3LTg4OGEtN2MwODZmYmRmMDRiIiwibWV0YWRhdGFTdGF0ZW1lbnQiOnsibGVnYWxIZWFkZXIiOiJTdWJtaXNzaW9uIG9mIHRoaXMgc3RhdGVtZW50IGFuZCByZXRyaWV2YWwgYW5kIHVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbmRpY2F0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgYWdyZWVtZW50IGxvY2F0ZWQgYXQgaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL21ldGFkYXRhL21ldGFkYXRhLWxlZ2FsLXRlcm1zLy4iLCJhYWd1aWQiOiJjODk2NzRlMy1hNzY1LTRiMDctODg4YS03YzA4NmZiZGYwNGIiLCJmcmllbmRseU5hbWVzIjp7ImVuLVVTIjoiU3RhclNpZ24gRklETyBDYXJkIn0sImRlc2NyaXB0aW9uIjoiU3RhclNpZ24gRklETyBDYXJkIiwiYXV0aGVudGljYXRvclZlcnNpb24iOjEsInByb3RvY29sRmFtaWx5IjoiZmlkbzIiLCJzY2hlbWEiOjMsInVwdiI6W3sibWFqb3IiOjEsIm1pbm9yIjowfV0sImF1dGhlbnRpY2F0aW9uQWxnb3JpdGhtcyI6WyJzZWNwMjU2cjFfZWNkc2Ffc2hhMjU2X3JhdyJdLCJwdWJsaWNLZXlBbGdBbmRFbmNvZGluZ3MiOlsiY29zZSJdLCJhdHRlc3RhdGlvblR5cGVzIjpbImJhc2ljX2Z1bGwiXSwidXNlclZlcmlmaWNhdGlvbkRldGFpbHMiOltbeyJ1c2VyVmVyaWZpY2F0aW9uTWV0aG9kIjoicGFzc2NvZGVfaW50ZXJuYWwifV0sW3sidXNlclZlcmlmaWNhdGlvbk1ldGhvZCI6InByZXNlbmNlX2ludGVybmFsIn1dXSwia2V5UHJvdGVjdGlvbiI6WyJoYXJkd2FyZSIsInNlY3VyZV9lbGVtZW50Il0sIm1hdGNoZXJQcm90ZWN0aW9uIjpbInNvZnR3YXJlIl0sImNyeXB0b1N0cmVuZ3RoIjoxMjgsImF0dGFjaG1lbnRIaW50IjpbImV4dGVybmFsIiwid2lyZWxlc3MiLCJuZmMiXSwidGNEaXNwbGF5IjpbXSwiYXR0ZXN0YXRpb25Sb290Q2VydGlmaWNhdGVzIjpbIk1JSUJ0akNDQVZ1Z0F3SUJBZ0lCQVRBS0JnZ3Foa2pPUFFRREFqQktNUXN3Q1FZRFZRUUdFd0pFUlRFaE1COEdBMVVFQ2d3WVJ5dEVJRTF2WW1sc1pTQlRaV04xY21sMGVTQkhiV0pJTVJnd0ZnWURWUVFEREE5R1NVUlBJRkp2YjNRZ1EwRWdNREV3SGhjTk1qQXhNVEV5TURBd01EQXdXaGNOTkRBeE1URXlNREF3TURBd1dqQktNUXN3Q1FZRFZRUUdFd0pFUlRFaE1COEdBMVVFQ2d3WVJ5dEVJRTF2WW1sc1pTQlRaV04xY21sMGVTQkhiV0pJTVJnd0ZnWURWUVFEREE5R1NVUlBJRkp2YjNRZ1EwRWdNREV3V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVF3NmN5K3puTXlRNnB0ZDRKanF2bWE0ZThSZStacHBiOTBHcUt2c1JCbkY4V21NNXlaV0lPS2pRZ2ovOCszajlhdlcrU3lBYS8xTWF5d1FENkIwZzlhb3pJd01EQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01CMEdBMVVkRGdRV0JCU3NlcFd1dXhtRDBvOGoxWTI3OGJMVEdDWk52akFLQmdncWhrak9QUVFEQWdOSkFEQkdBaUVBdTMzU3AwRTdCRWRIb3pFR0FDbE5zYTB5UEI2c0VEb1E3VzRraXkwRFoxNENJUUNKTERUSkRBbld4bzMxenp2cld1SU50QnF5MDQ0K0dnRlA2K3dscUc2Nk53PT0iXSwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBRkFBQUFCUUNBSUFBQUFCYzJYNkFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFBQjNSSlRVVUg0d0lVREMwRm9PVUhJQUFBQ2NkSlJFRlVlTnJ0bTJ0UVZOY2R3UC8vYys4K1dKYUNQQlkxQ2dzQ29wRE1hRDc0QU1Va2ltT25XbTN5SVoxcHE5aXBvN1pXbmFaTk0wMXNtN2JVcUtoa0xOWkhmTXkwSDRxdFZ1MVVNeU0wMGM0b2RzeE13VkNOR2xPRndRQnJXSjU3WCtmZkQrZnVnd1ZXTnNHbU5QY01IOWJMdVdmUDcvLytuNE5JUlBCRkdneStZTU1DdG9BdFlBdllBcmFBTFdBTDJBSzJnQzFnQzlnQ3RvQXRZQXVZQU1icUJJaUlIdE54a2xpV1FoOWlmZ3ZHK0xYNEZTSUNRQ0FRNk96b2FHdDcwTkhlM3RmZmp3Q0FHQ0VXSFB3QkRNUElMOGlmTldzV2hxY0JBQ2lxZXZyVUtZWU1CajhQdmh0ZVlmRG5JWE1CaUhqU2w1SW1aazd5WkhvOEhvOXNrOFdlRVRFR3NCeGJlSWg0NjlhdC9UVTE5UmZxZW5wNllNUXRSQTlWMDFaWFZNeWVQVHRLZ3FxaXZQU0RsK3l5L05rVml3Q0VLTlNTbHBiMmxSWEx2N051M2FSSmsrSTI2WkRHMzd0MmJmVTN2dm5jb21kTy9LRzJ0NmRIWW93aEN2a1JJdUNJQTBZUXNuak1JcWFKcHpHV0duRjlSQXIra3lFKzlQa083UDl0NmJ6NTM5dTQ4Y1BiZDJCa1QyVFJua0NFQUp6emZmdjJyVnp4MWI5ZnV1UjBPQngyT3lLYVRraUVpQ3kycW9saW1CWmgwRmtBeEhZUkFPSnhieFM3RlQ5Qk9ib1NFb0RvN1hQbm5uM20yWk1uVCtJSXppeEhpVitNaXRWci9sWmY3M0E0SWw4YkdCalFORTJTWlZtUzRGSEJURkZWWGRlRzkwSUt5MWRWVmZnVWNaRklLRURYZGNNd25FNm53K0VBSXNZWUFNZ1MyN3A1eTlXR3E5dmYyUDRJSHlZaVZWVXJ2clg2MHNXTFRxZVRpQUJSMWJSRWx5dG4yclNTK2ZQbnpKMlRsWk9UNUhhYkhqU3ltb2tvd1pVUU96cjBCd2JldVhneEtTa0pSeHNaUWhJalFBUWl2OTkvNTlidHk1Y3ZYN2x5NWFPN2R6Vk5zMGtTWTh5T2VQem9VUVNvM1A3cmFFT2o0T0NjRTlHMjE3YmxabVhuZVhPbVpYdnp2RGxUSmszKzdvYU5MUzB0dXE3VFdJenU3dTZzS1ZQRjRoTXpQRjFkWFdPeXJLWnBkMjdkL3RyS1ZWbVRuOGp6NW9pZm5LbFp4NDhlSXlJZU1STWlYenQ3K293bkxWM1FUc3Yyemlnb1BIUDZkSlJFeGhqNGswL0dCRGkwdDBNSERtWlBtUnBDbURyNWlldE4xeU5uaHZOd1lHQmdVZG1paDUyZDRva3N5NmZQbmlrb0xCU0dqV05VSlBUMDlCVFBMTEpKRWlMMjl2WGQrT0JtY2tyS1o2dzZ4TzQ0a1VnaEY5OTlkKzNxTmNKcmlLaWdzUERNWDg3S3dVUVlqdEovcWozUjF0b3FhQlZWUFhUa1NFRmhvWGdOeDdvMkVrdU95Y0toUlZqdzA4S3lzcDlzMjlZL01DQmswZHpjZk8zYXRaQjBUR0JGVVNvcksyMDJtM2o2L0FzdmxDNG9IYjhGYzhYYWlybno1akZFa1dWLzl0cTI2RHhjVjFmWDNkTnQycmFpZm4velpzNzVPS1VWTHJwMTY5YWUvbjVFbENXcHFhbXB1Ymw1RVBBN2RmVU91d01RRlUxYnZuSkZUbTZPeUdtUFk0UU0rVEgxRW1MNUJXVUw4L1B6UkRDenkzTGRoUXNBZ0lBbVZVTkRnM0FCU1pJMnJOL3cvOUVKYnQ2eVJkZDFSSlJrdWVIS0ZTRmpCZ0ErbjYrbHBVWElKaTB0TFM4LzcvR0ovNzlrMVVRQU1HL3VQSmZMSlo3ODY4WU5ZVjB5QUh4dzgyWWdFRWhJU0VBQVQ2Ykg0WERFRlVJTmJ2aTcvSStjTDhyTXZyNStJSE1tTXV6eWQvUFJTSllBRU54dXR3aXJvd3pkNlo2TWxOUUp2dllPQW5qWTZXdC84TEZuWXFZTUFIYy92Q3RDbEtIcnVUbTVraVRGSmM3V2x0YXlzaktudzRuUmpvUm1HUmlNRmdibmpER2JiSzd2Y2lZc0t5OG5BbVFZZW9zSCs0cVFyNHRxSWFBb3gzLy91d1dsY2VRT1NaTFMwek02UCs3Z3hEVk51M2YvdmdsOC8vNTl4aGdCcUpybTlYcmp0aC9PdFlBaUl4TTVJSWFkQmZ0Qk01SWlvcWFxbzlFdUkxQlZsWXo0RWdkakxITmk1dnVOalpJc2M0UDdPanZONXFHdnJ5OGtTN3ZkSG4vVVphSy9ReUllanNEUk1Sa1lpcUtOVVVqcndCSFJsQUFOanJLRE9saENRQUtNZTJQb2Nya0l3Q0FDSUhHQUlZZS9oQWdBalBqVEwrZGM1MXczREJZT2RRakJVd0RpRkxrRHpnMlVaUUt6ZStlYWhveHh6czBtRjJCb09qU0lBRURqQm8rL2oxUVV4V3k1RVlWTVpRQnd1OTJpajdiSk5wK3ZJOTVGRTkySjVVdVgydTEySUdJamh5NENJTTZCcUw2K1hsQ3BtdnJjNGlVTU1YYk9GOEpRTkRVdFBTM2VXTjNiMjhjUXhWRmtTbktLQ1R4bDZoVGhma3hpcmExdGp6d0hpeG9aR1JuSGpoOGJiZlBRMi9Oa1ViRWRtS2pZZCsydVNrNUp3VkdiYUZ6QWhtRzB0N2NEWXdqQUdFdExUemVCOC9NTEVCR0ptQ1RkdjNmUE1BeFpsdVBDam1ObTVHa2xBVU5rWTkrYm1PbzFkTjNmMVlXSVFPU3dPN3c1WHJPMG5ER2pNTkhsRWlkYTdlM3R2YjI5WTlYS2ZJNVZCeUsydExZK2ZQaFF4Q1pQcGljMU5SVUlHQUc0azVLeXZWNUIyT1gzdnhkc3BzYnBDS25xN2ZQbkZVVVIvRVhGeGVHWUR3QWxDMHM1NTRnb0ErellzWE84VjlIaTBHZC9UWTNEWmtNQVZkUG1sY3dYSHNYRTVjT1NKVXZGQVNLVHBQZWJtaTVkdkRUZW1VK2YrclBmMzgwWTQwVGNNSjVidkRoWURRQWdZa25KL0d5djF6QU1BTERiN2J1cnFzYTdWZGZVMU5obG1ZaTRZWlNYbDN1enM0VnRoeFBnTHlzckRTSVJOcTgyTlB6aTlkZWp3c0I0Q1ZlY2FQMzY5YmR1M21TTUVaSGtjTHp5NnF2aGU0L1E3TklGcFVWRlJRYm5SSlRvY3IxMTZLM3F2WHMvWFFMOEhHa0I0T2ZiZm5yK3IrZWNUaWZuWE5QMVJXVmx1ZE55aDdscWtXVjVWMVdWYUdnNDV6WloydjZyeWxkKytLT3VycTd4WXNhZEhSM3Ixbjc3OElFRHRtRERsNXljWExWN2QyUWxOK2h1YVdiUnpEMXZWcXVhS3BqZGJuZHRiVzNKbkxtSER4NE1LTXBZYlVzY2hwdGZPa2EyNC9mN3EzYnNYREMvcEs2dUxpRXhVZlNZbXE0ZlBub2tPU1U1MGlYRDU5SVV2TERadFdQbjNqMTdFbDB1a2FpSUtCQUlKS2RNZU9xcEo0dUxpek15TTFNbnBNbzJhZGpPNWhIZElaQ2lLRDkrK1dXSk1VUU1LTXJPWGJzY1RtZjhYa05Fb0d1YXorZDc4T0JCWTFQajlhYnJmYjI5cm9RRTh4QVBVVlhWSFR0M3Z2ajFGem5ua1JxT3ZoQVgyRFg3ZnZQRzl1MTJteTNZNG5DUnNYUmQ1NGJCaVlCekNOMTNVcWhTcEtIWlAzUTl6d0NJY3laSmRydmRESmlNQlFJQjBTZnpJY0lMWFRqUlNFMFNvc1NZeEZpSUo2UXpEbEQ5WnZYeUZTc2ludzhQSEJyL3VIcDEwNlpOLzc3N2tUc3hVZlJvWnRFYlhEV3NFaHhtUjBnWUZVdHcwRjhNREZIWktCU01GTmw3aVYyWUNLTFpKTTU3K25wblAvMzAzdXJxNmRPbkQzdDNPVHl3V0VMWDllbzkxWDg4VWR2VzFvWUFraVNaZjVNUVZpd043dkVqOEliQTRlZ09iMk9rd0VGbVR3QVl2dE0yZEYyUzVhbFpXUlZyMTY2dVdCTlRhaU1EUS9BQ3RmR2ZqU2RxYSt2cUx2aDhQbDNWek12eENDTVpadDl4cGhRY2Vtd2RvekdJbUd5ejJTWlBucnhzMlpkWFBiOHF2NkRBWnJPRmRqNXNYTURZUlVXVVZYUjJkdnE3L0lGQUFJQ0czOWxvRmZxb2k0TVlSK3pobldHQzA1bWFscG9TdW80YlREa3NNMXIvTTgwQ3RvQXRZQXZZQXJhQUxXQUwyQUsyZ0MxZ0M5Z0N0b0F0WUF2WUFyYUFMZUQvcWZFZmJtTWNWQ3A4Ykc4QUFBQUFTVVZPUks1Q1lJST0iLCJzdXBwb3J0ZWRFeHRlbnNpb25zIjpbeyJpZCI6ImhtYWMtc2VjcmV0IiwiZmFpbF9pZl91bmtub3duIjpmYWxzZX1dLCJhdXRoZW50aWNhdG9yR2V0SW5mbyI6eyJ2ZXJzaW9ucyI6WyJVMkZfVjIiLCJGSURPXzJfMCJdLCJleHRlbnNpb25zIjpbImhtYWMtc2VjcmV0Il0sImFhZ3VpZCI6ImM4OTY3NGUzYTc2NTRiMDc4ODhhN2MwODZmYmRmMDRiIiwib3B0aW9ucyI6eyJwbGF0IjpmYWxzZSwicmsiOnRydWUsImNsaWVudFBpbiI6dHJ1ZSwidXAiOnRydWV9LCJmaXJtd2FyZVZlcnNpb24iOjF9fSwic3RhdHVzUmVwb3J0cyI6W3sic3RhdHVzIjoiTk9UX0ZJRE9fQ0VSVElGSUVEIiwiZWZmZWN0aXZlRGF0ZSI6IjIwMjEtMTItMTMifV0sInRpbWVPZkxhc3RTdGF0dXNDaGFuZ2UiOiIyMDIxLTEyLTEzIn1dfQ.r7_wqKSOGJlWcMexX5F4U0ZCwj1R5cI_uFINzzwOVYvmAYpbZWBN-ANL0N8dbWFE3ZCETbs_SxBaJ_vyIjy6JZP2bQIwl6lqiZTPfsIyD2USyFQbJiYX_2I2FdXxvpOOG6pQhw6_Vt9_GpnRG-rWu04vRnrznBZPzF22qiReJ-qC9S4zWP255rk9k_-V1Bw-OSxl6kJ7HfXHu0ycv1lIgdy7dHootqNcPOXt5fKxDoUltG4IOHD3YuPBiSeD2-JtP7yGtvG-qmt0sUFLrABdTU_IJNslzjmLp64NPubhIEvgmF-BAxo3wVN50ZG8d8g3OvUqVar-MhE3F2mldshpAw \ No newline at end of file diff --git a/authentik/stages/authenticator_webauthn/migrations/0012_webauthndevice_created_webauthndevice_last_updated_and_more_squashed_0016_authenticatorwebauthnstage_prevent_duplicate_devices_and_more.py b/authentik/stages/authenticator_webauthn/migrations/0012_webauthndevice_created_webauthndevice_last_updated_and_more_squashed_0016_authenticatorwebauthnstage_prevent_duplicate_devices_and_more.py new file mode 100644 index 0000000000..70ec0fc6a4 --- /dev/null +++ b/authentik/stages/authenticator_webauthn/migrations/0012_webauthndevice_created_webauthndevice_last_updated_and_more_squashed_0016_authenticatorwebauthnstage_prevent_duplicate_devices_and_more.py @@ -0,0 +1,95 @@ +# Generated by Django 5.2.12 on 2026-03-24 13:00 + +import datetime +import django.contrib.postgres.fields +from django.db import migrations, models + + +class Migration(migrations.Migration): + + replaces = [ + ( + "authentik_stages_authenticator_webauthn", + "0012_webauthndevice_created_webauthndevice_last_updated_and_more", + ), + ("authentik_stages_authenticator_webauthn", "0013_authenticatorwebauthnstage_max_attempts"), + ( + "authentik_stages_authenticator_webauthn", + "0014_alter_authenticatorwebauthnstage_friendly_name", + ), + ("authentik_stages_authenticator_webauthn", "0015_authenticatorwebauthnstage_hints"), + ( + "authentik_stages_authenticator_webauthn", + "0016_authenticatorwebauthnstage_prevent_duplicate_devices_and_more", + ), + ] + + dependencies = [ + ("authentik_stages_authenticator_webauthn", "0001_squashed_0011_webauthndevice_aaguid"), + ] + + operations = [ + migrations.AddField( + model_name="webauthndevice", + name="created", + field=models.DateTimeField( + auto_now_add=True, + default=datetime.datetime(1, 1, 1, 0, 0, tzinfo=datetime.timezone.utc), + ), + preserve_default=False, + ), + migrations.AddField( + model_name="webauthndevice", + name="last_updated", + field=models.DateTimeField(auto_now=True), + ), + migrations.AddField( + model_name="webauthndevice", + name="last_used", + field=models.DateTimeField(null=True), + ), + migrations.AddField( + model_name="authenticatorwebauthnstage", + name="max_attempts", + field=models.PositiveIntegerField(default=0), + ), + migrations.AlterField( + model_name="authenticatorwebauthnstage", + name="friendly_name", + field=models.TextField(blank=True, default=""), + preserve_default=False, + ), + migrations.AddField( + model_name="authenticatorwebauthnstage", + name="hints", + field=django.contrib.postgres.fields.ArrayField( + base_field=models.TextField( + choices=[ + ("security-key", "Security Key"), + ("client-device", "Client Device"), + ("hybrid", "Hybrid"), + ] + ), + blank=True, + default=list, + size=None, + ), + ), + migrations.AddField( + model_name="authenticatorwebauthnstage", + name="prevent_duplicate_devices", + field=models.BooleanField( + default=True, help_text="When enabled, a given device can only be registered once." + ), + ), + migrations.AddField( + model_name="webauthndevice", + name="attestation_certificate_fingerprint", + field=models.TextField(default=None, null=True), + ), + migrations.AddField( + model_name="webauthndevice", + name="attestation_certificate_pem", + field=models.TextField(default=None, null=True), + ), + ] diff --git a/authentik/stages/authenticator_webauthn/migrations/0016_authenticatorwebauthnstage_prevent_duplicate_devices_and_more.py b/authentik/stages/authenticator_webauthn/migrations/0016_authenticatorwebauthnstage_prevent_duplicate_devices_and_more.py new file mode 100644 index 0000000000..8262f0561f --- /dev/null +++ b/authentik/stages/authenticator_webauthn/migrations/0016_authenticatorwebauthnstage_prevent_duplicate_devices_and_more.py @@ -0,0 +1,30 @@ +# Generated by Django 5.2.11 on 2026-03-24 12:59 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("authentik_stages_authenticator_webauthn", "0015_authenticatorwebauthnstage_hints"), + ] + + operations = [ + migrations.AddField( + model_name="authenticatorwebauthnstage", + name="prevent_duplicate_devices", + field=models.BooleanField( + default=True, help_text="When enabled, a given device can only be registered once." + ), + ), + migrations.AddField( + model_name="webauthndevice", + name="attestation_certificate_fingerprint", + field=models.TextField(default=None, null=True), + ), + migrations.AddField( + model_name="webauthndevice", + name="attestation_certificate_pem", + field=models.TextField(default=None, null=True), + ), + ] diff --git a/authentik/stages/authenticator_webauthn/models.py b/authentik/stages/authenticator_webauthn/models.py index 163335656e..dd5198a999 100644 --- a/authentik/stages/authenticator_webauthn/models.py +++ b/authentik/stages/authenticator_webauthn/models.py @@ -1,5 +1,6 @@ """WebAuthn stage""" +from cryptography.x509 import Certificate, load_pem_x509_certificate from django.contrib.auth import get_user_model from django.contrib.postgres.fields.array import ArrayField from django.db import models @@ -101,6 +102,9 @@ class AuthenticatorWebAuthnStage(ConfigurableStage, FriendlyNamedStage, Stage): choices=AuthenticatorAttachment.choices, default=None, null=True ) + prevent_duplicate_devices = models.BooleanField( + default=True, help_text=_("When enabled, a given device can only be registered once.") + ) hints = ArrayField( models.TextField(choices=WebAuthnHint.choices), default=list, @@ -159,6 +163,8 @@ class WebAuthnDevice(SerializerModel, Device): created_on = models.DateTimeField(auto_now_add=True) last_t = models.DateTimeField(default=now) + attestation_certificate_pem = models.TextField(null=True, default=None) + attestation_certificate_fingerprint = models.TextField(null=True, default=None) aaguid = models.TextField(default=UNKNOWN_DEVICE_TYPE_AAGUID) device_type = models.ForeignKey( "WebAuthnDeviceType", on_delete=models.SET_DEFAULT, null=True, default=None @@ -169,6 +175,12 @@ class WebAuthnDevice(SerializerModel, Device): """Get a publickeydescriptor for this device""" return PublicKeyCredentialDescriptor(id=base64url_to_bytes(self.credential_id)) + @property + def attestation_certificate(self) -> Certificate | None: + if not self.attestation_certificate_pem: + return None + return load_pem_x509_certificate(self.attestation_certificate_pem.encode()) + def set_sign_count(self, sign_count: int) -> None: """Set the sign_count and update the last_t datetime.""" self.sign_count = sign_count diff --git a/authentik/stages/authenticator_webauthn/stage.py b/authentik/stages/authenticator_webauthn/stage.py index 8509b6393e..913fb448fc 100644 --- a/authentik/stages/authenticator_webauthn/stage.py +++ b/authentik/stages/authenticator_webauthn/stage.py @@ -1,7 +1,11 @@ """WebAuthn stage""" +from dataclasses import dataclass from uuid import UUID +from cryptography.hazmat.primitives.serialization import Encoding +from cryptography.x509 import load_der_x509_certificate +from django.db.models import Q from django.http import HttpRequest, HttpResponse from django.http.request import QueryDict from django.utils.translation import gettext as __ @@ -11,6 +15,7 @@ from rest_framework.serializers import ValidationError from webauthn.helpers.bytes_to_base64url import bytes_to_base64url from webauthn.helpers.exceptions import WebAuthnException from webauthn.helpers.options_to_json_dict import options_to_json_dict +from webauthn.helpers.parse_attestation_object import parse_attestation_object from webauthn.helpers.structs import ( AttestationConveyancePreference, AuthenticatorAttachment, @@ -28,6 +33,7 @@ from webauthn.registration.verify_registration_response import ( from authentik.core.api.utils import JSONDictField from authentik.core.models import User +from authentik.crypto.models import fingerprint_sha256 from authentik.flows.challenge import ( Challenge, ChallengeResponse, @@ -46,6 +52,14 @@ PLAN_CONTEXT_WEBAUTHN_CHALLENGE = "goauthentik.io/stages/authenticator_webauthn/ PLAN_CONTEXT_WEBAUTHN_ATTEMPT = "goauthentik.io/stages/authenticator_webauthn/attempt" +@dataclass +class VerifiedRegistrationData: + registration: VerifiedRegistration + exists_query: Q + attest_cert: str | None = None + attest_cert_fingerprint: str | None = None + + class AuthenticatorWebAuthnChallenge(WithUserInfoChallenge): """WebAuthn Challenge""" @@ -62,7 +76,7 @@ class AuthenticatorWebAuthnChallengeResponse(ChallengeResponse): request: HttpRequest user: User - def validate_response(self, response: dict) -> dict: + def validate_response(self, response: dict) -> VerifiedRegistrationData: """Validate webauthn challenge response""" challenge = self.stage.executor.plan.context[PLAN_CONTEXT_WEBAUTHN_CHALLENGE] @@ -77,13 +91,33 @@ class AuthenticatorWebAuthnChallengeResponse(ChallengeResponse): self.stage.logger.warning("registration failed", exc=exc) raise ValidationError(f"Registration failed. Error: {exc}") from None - credential_id_exists = WebAuthnDevice.objects.filter( - credential_id=bytes_to_base64url(registration.credential_id) - ).first() + registration_data = VerifiedRegistrationData( + registration, + exists_query=Q(credential_id=bytes_to_base64url(registration.credential_id)), + ) + stage: AuthenticatorWebAuthnStage = self.stage.executor.current_stage + + att_obj = parse_attestation_object(registration.attestation_object) + if ( + att_obj + and att_obj.att_stmt + and att_obj.att_stmt.x5c is not None + and len(att_obj.att_stmt.x5c) > 0 + ): + cert = load_der_x509_certificate(att_obj.att_stmt.x5c[0]) + registration_data.attest_cert = cert.public_bytes( + encoding=Encoding.PEM, + ).decode("utf-8") + registration_data.attest_cert_fingerprint = fingerprint_sha256(cert) + if stage.prevent_duplicate_devices: + registration_data.exists_query |= Q( + attestation_certificate_fingerprint=registration_data.attest_cert_fingerprint + ) + + credential_id_exists = WebAuthnDevice.objects.filter(registration_data.exists_query).first() if credential_id_exists: raise ValidationError("Credential ID already exists.") - stage: AuthenticatorWebAuthnStage = self.stage.executor.current_stage aaguid = registration.aaguid allowed_aaguids = stage.device_type_restrictions.values_list("aaguid", flat=True) if allowed_aaguids.exists(): @@ -103,11 +137,11 @@ class AuthenticatorWebAuthnChallengeResponse(ChallengeResponse): UUID(UNKNOWN_DEVICE_TYPE_AAGUID) in allowed_aaguids and not WebAuthnDeviceType.objects.filter(aaguid=aaguid).exists() ): - return registration + return registration_data # Otherwise just check if the given aaguid is in the allowed aaguids if UUID(aaguid) not in allowed_aaguids: raise invalid_error - return registration + return registration_data class AuthenticatorWebAuthnStageView(ChallengeStageView): @@ -190,26 +224,28 @@ class AuthenticatorWebAuthnStageView(ChallengeStageView): def challenge_valid(self, response: ChallengeResponse) -> HttpResponse: # Webauthn Challenge has already been validated - webauthn_credential: VerifiedRegistration = response.validated_data["response"] - existing_device = WebAuthnDevice.objects.filter( - credential_id=bytes_to_base64url(webauthn_credential.credential_id) - ).first() + webauthn_credential: VerifiedRegistrationData = response.validated_data["response"] + existing_device = WebAuthnDevice.objects.filter(webauthn_credential.exists_query).first() if not existing_device: name = "WebAuthn Device" device_type = WebAuthnDeviceType.objects.filter( - aaguid=webauthn_credential.aaguid + aaguid=webauthn_credential.registration.aaguid ).first() if device_type and device_type.description: name = device_type.description WebAuthnDevice.objects.create( name=name, user=self.get_pending_user(), - public_key=bytes_to_base64url(webauthn_credential.credential_public_key), - credential_id=bytes_to_base64url(webauthn_credential.credential_id), - sign_count=webauthn_credential.sign_count, + public_key=bytes_to_base64url( + webauthn_credential.registration.credential_public_key + ), + credential_id=bytes_to_base64url(webauthn_credential.registration.credential_id), + sign_count=webauthn_credential.registration.sign_count, rp_id=get_rp_id(self.request), device_type=device_type, - aaguid=webauthn_credential.aaguid, + aaguid=webauthn_credential.registration.aaguid, + attestation_certificate_pem=webauthn_credential.attest_cert, + attestation_certificate_fingerprint=webauthn_credential.attest_cert_fingerprint, ) else: return self.executor.stage_invalid("Device with Credential ID already exists.") diff --git a/authentik/stages/authenticator_webauthn/tests/__init__.py b/authentik/stages/authenticator_webauthn/tests/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/authentik/stages/authenticator_webauthn/tests/fixtures/register.json b/authentik/stages/authenticator_webauthn/tests/fixtures/register.json new file mode 100644 index 0000000000..8e3507cea7 --- /dev/null +++ b/authentik/stages/authenticator_webauthn/tests/fixtures/register.json @@ -0,0 +1,10 @@ +{ + "id": "f7wv8mP-poSxh-567eWxZntzCBDW8hWlvzf92QJkT--Y2oBRz4IEAZ6M2PI9_KEQ", + "rawId": "f7wv8mP-poSxh-567eWxZntzCBDW8hWlvzf92QJkT--Y2oBRz4IEAZ6M2PI9_KEQ", + "type": "public-key", + "registrationClientExtensions": "{}", + "response": { + "clientDataJSON": "eyJ0eXBlIjoid2ViYXV0aG4uY3JlYXRlIiwiY2hhbGxlbmdlIjoiaUhJWDNBdGtaWkN4U1lMeE9oazgwWlhJN1JuQUMwUGI0V1RrOWRFSjRlTEpkem9oOGpSbWpLVzJVOW9FX0NCbjVuNlpqNjdCSUladkZMM2xwaXdKd2ciLCJvcmlnaW4iOiJodHRwOi8vbG9jYWxob3N0OjkwMDAiLCJjcm9zc09yaWdpbiI6ZmFsc2V9", + "attestationObject": "o2NmbXRmcGFja2VkZ2F0dFN0bXSjY2FsZyZjc2lnWEYwRAIgRkCRBg_Z0-cS8M4HyiZpar7cy6PRbGW_G0yTnG_lMUUCIHOKwNqU_Mr4sip5zUECezH-NJWdIGUbFR7D7mSC1wMSY3g1Y4FZAt0wggLZMIIBwaADAgECAgkA8Oq7fWgETIowDQYJKoZIhvcNAQELBQAwLjEsMCoGA1UEAxMjWXViaWNvIFUyRiBSb290IENBIFNlcmlhbCA0NTcyMDA2MzEwIBcNMTQwODAxMDAwMDAwWhgPMjA1MDA5MDQwMDAwMDBaMG8xCzAJBgNVBAYTAlNFMRIwEAYDVQQKDAlZdWJpY28gQUIxIjAgBgNVBAsMGUF1dGhlbnRpY2F0b3IgQXR0ZXN0YXRpb24xKDAmBgNVBAMMH1l1YmljbyBVMkYgRUUgU2VyaWFsIDIxMDk0NjczNzYwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATmZ9M7upxFm4Ce_MtqC64sXPxL14HVc0g9lv3pJR9kLM3mwgZVFPMzgkasmVKAACrSOK-8A3G21_rDv8ueedIwo4GBMH8wEwYKKwYBBAGCxAoNAQQFBAMFBAMwIgYJKwYBBAGCxAoCBBUxLjMuNi4xLjQuMS40MTQ4Mi4xLjcwEwYLKwYBBAGC5RwCAQEEBAMCBDAwIQYLKwYBBAGC5RwBAQQEEgQQL8BXn4ETR-qxFrtajbkgKjAMBgNVHRMBAf8EAjAAMA0GCSqGSIb3DQEBCwUAA4IBAQC2Mago15M4rSkAig1_eaOgPc8uDJsfYvrPtIqeVZV3p1FslZtkKxjwDEx3Io0Z-dRCIlwSaL0jGKCMahdzBk8CmcmbskOKR7tnsdDbJSuUln4SAVqaK-nkLdRUJoiQYf4fIlb--Hbdc5kyRoNxGrBt6rxvRWhq-e7hgXlsIzs-2ew9wKy98vkNqE8ZJ-lz1jIA0bj05AE5miU0XcwEoquyk4AjtF9bQlJBjQ1SdYVjH2HEVs25iwoU3g1uUn9nP20yTVhhKRMnpV_EdOjm18hxot9nV0isx5jXb5Z6-My58Vb-oHgStjkaN-3dxuJkEQuZtD1AtTItfvyUeIsL2kkiaGF1dGhEYXRhWMJJlg3liA6MaHQ0Fw9kdmBbj-SuuaKGMseZXPO6gx2XY8UAAAADL8BXn4ETR-qxFrtajbkgKgAwf7wv8mP-poSxh-567eWxZntzCBDW8hWlvzf92QJkT--Y2oBRz4IEAZ6M2PI9_KEQpQECAyYgASFYIH-8L_Jj_qaEsYfueu2KcYEacayeFjsZ1LowkryCG3MYIlggKCjYkvnPmx-ZcyOs3em0ZseMtwDga1j0Hi-WmFLboNmha2NyZWRQcm90ZWN0Ag" + } +} diff --git a/authentik/stages/authenticator_webauthn/tests.py b/authentik/stages/authenticator_webauthn/tests/test_stage.py similarity index 94% rename from authentik/stages/authenticator_webauthn/tests.py rename to authentik/stages/authenticator_webauthn/tests/test_stage.py index 9f67905830..20ccc7aead 100644 --- a/authentik/stages/authenticator_webauthn/tests.py +++ b/authentik/stages/authenticator_webauthn/tests/test_stage.py @@ -1,6 +1,7 @@ """Test WebAuthn API""" from base64 import b64decode +from json import loads from django.urls import reverse from webauthn.helpers.bytes_to_base64url import bytes_to_base64url @@ -12,6 +13,7 @@ from authentik.flows.planner import PLAN_CONTEXT_PENDING_USER, FlowPlan from authentik.flows.tests import FlowTestCase from authentik.flows.views.executor import SESSION_KEY_PLAN from authentik.lib.generators import generate_id +from authentik.lib.tests.utils import load_fixture from authentik.stages.authenticator_webauthn.models import ( UNKNOWN_DEVICE_TYPE_AAGUID, AuthenticatorWebAuthnStage, @@ -102,7 +104,7 @@ class TestAuthenticatorWebAuthnStage(FlowTestCase): plan = FlowPlan(flow_pk=self.flow.pk.hex, bindings=[self.binding], markers=[StageMarker()]) plan.context[PLAN_CONTEXT_PENDING_USER] = self.user plan.context[PLAN_CONTEXT_WEBAUTHN_CHALLENGE] = b64decode( - b"03Xodi54gKsfnP5I9VFfhaGXVVE2NUyZpBBXns/JI+x6V9RY2Tw2QmxRJkhh7174EkRazUntIwjMVY9bFG60Lw==" + b"iHIX3AtkZZCxSYLxOhk80ZXI7RnAC0Pb4WTk9dEJ4eLJdzoh8jRmjKW2U9oE/CBn5n6Zj67BIIZvFL3lpiwJwg==" ) session = self.client.session session[SESSION_KEY_PLAN] = plan @@ -111,35 +113,22 @@ class TestAuthenticatorWebAuthnStage(FlowTestCase): reverse("authentik_api:flow-executor", kwargs={"flow_slug": self.flow.slug}), data={ "component": "ak-stage-authenticator-webauthn", - "response": { - "id": "kqnmrVLnDG-OwsSNHkihYZaNz5s", - "rawId": "kqnmrVLnDG-OwsSNHkihYZaNz5s", - "type": "public-key", - "registrationClientExtensions": "{}", - "response": { - "clientDataJSON": ( - "eyJ0eXBlIjoid2ViYXV0aG4uY3JlYXRlIiwiY2hhbGxlbmd" - "lIjoiMDNYb2RpNTRnS3NmblA1STlWRmZoYUdYVlZFMk5VeV" - "pwQkJYbnNfSkkteDZWOVJZMlR3MlFteFJKa2hoNzE3NEVrU" - "mF6VW50SXdqTVZZOWJGRzYwTHciLCJvcmlnaW4iOiJodHRw" - "Oi8vbG9jYWxob3N0OjkwMDAiLCJjcm9zc09yaWdpbiI6ZmFsc2V9" - ), - "attestationObject": ( - "o2NmbXRkbm9uZWdhdHRTdG10oGhhdXRoRGF0YViYSZYN5Yg" - "OjGh0NBcPZHZgW4_krrmihjLHmVzzuoMdl2NdAAAAAPv8MA" - "cVTk7MjAtuAgVX170AFJKp5q1S5wxvjsLEjR5IoWGWjc-bp" - "QECAyYgASFYIKtcZHPumH37XHs0IM1v3pUBRIqHVV_SE-Lq" - "2zpJAOVXIlgg74Fg_WdB0kuLYqCKbxogkEPaVtR_iR3IyQFIJAXBzds" - ), - }, - }, + "response": loads(load_fixture("fixtures/register.json")), }, SERVER_NAME="localhost", SERVER_PORT="9000", ) self.assertEqual(response.status_code, 200) self.assertStageRedirects(response, reverse("authentik_core:root-redirect")) - self.assertTrue(WebAuthnDevice.objects.filter(user=self.user).exists()) + device = WebAuthnDevice.objects.filter(user=self.user).first() + self.assertIsNotNone(device) + self.assertEqual( + device.credential_id, "f7wv8mP-poSxh-567eWxZntzCBDW8hWlvzf92QJkT--Y2oBRz4IEAZ6M2PI9_KEQ" + ) + self.assertEqual( + device.attestation_certificate_fingerprint, + "3e:28:fc:df:45:19:bb:94:0a:0c:90:98:f2:08:72:53:2a:9e:e2:76:13:02:3e:69:61:4a:d9:90:49:80:3d:34", + ) def test_register_restricted_device_type_deny(self): """Test registration with restricted devices (fail)""" diff --git a/authentik/stages/consent/api.py b/authentik/stages/consent/api.py index 2111e46012..0a77441ea0 100644 --- a/authentik/stages/consent/api.py +++ b/authentik/stages/consent/api.py @@ -48,7 +48,7 @@ class UserConsentViewSet( ): """UserConsent Viewset""" - queryset = UserConsent.objects.all() + queryset = UserConsent.objects.including_expired().all() serializer_class = UserConsentSerializer filterset_fields = ["user", "application"] ordering = ["application", "expires"] diff --git a/authentik/stages/consent/stage.py b/authentik/stages/consent/stage.py index 5bda127410..2e996ce15f 100644 --- a/authentik/stages/consent/stage.py +++ b/authentik/stages/consent/stage.py @@ -106,7 +106,7 @@ class ConsentStageView(ChallengeStageView): if PLAN_CONTEXT_PENDING_USER in self.executor.plan.context: user = self.executor.plan.context[PLAN_CONTEXT_PENDING_USER] - consent: UserConsent | None = UserConsent.filter_not_expired( + consent: UserConsent | None = UserConsent.objects.filter( user=user, application=application ).first() self.executor.plan.context[PLAN_CONTEXT_CONSENT] = consent diff --git a/authentik/stages/identification/stage.py b/authentik/stages/identification/stage.py index 28780d278c..15b8617270 100644 --- a/authentik/stages/identification/stage.py +++ b/authentik/stages/identification/stage.py @@ -353,7 +353,7 @@ class IdentificationStageView(ChallengeStageView): PLAN_CONTEXT_APPLICATION, Application() ) challenge.initial_data["application_pre"] = app.name - if launch_url := app.get_launch_url(): + if not app.meta_hide and (launch_url := app.get_launch_url()): challenge.initial_data["application_pre_launch"] = launch_url if ( PLAN_CONTEXT_DEVICE in self.executor.plan.context diff --git a/authentik/stages/invitation/api.py b/authentik/stages/invitation/api.py index a6502fe966..1d242a93f9 100644 --- a/authentik/stages/invitation/api.py +++ b/authentik/stages/invitation/api.py @@ -103,7 +103,7 @@ class InvitationSendEmailSerializer(Serializer): class InvitationViewSet(UsedByMixin, ModelViewSet): """Invitation Viewset""" - queryset = Invitation.objects.all() + queryset = Invitation.objects.including_expired().all() serializer_class = InvitationSerializer ordering = ["-expires"] search_fields = ["name", "created_by__username", "expires", "flow__slug"] diff --git a/authentik/stages/invitation/stage.py b/authentik/stages/invitation/stage.py index 8805f8c925..451840bd3a 100644 --- a/authentik/stages/invitation/stage.py +++ b/authentik/stages/invitation/stage.py @@ -38,7 +38,7 @@ class InvitationStageView(StageView): if not token: return None try: - invite: Invitation | None = Invitation.filter_not_expired(pk=token).first() + invite: Invitation | None = Invitation.objects.filter(pk=token).first() except ValidationError: self.logger.debug("invalid invitation", token=token) return None diff --git a/authentik/stages/prompt/migrations/0012_alter_prompt_type.py b/authentik/stages/prompt/migrations/0012_alter_prompt_type.py new file mode 100644 index 0000000000..0ee2d9f44a --- /dev/null +++ b/authentik/stages/prompt/migrations/0012_alter_prompt_type.py @@ -0,0 +1,64 @@ +# Generated by Django 5.2.12 on 2026-03-14 02:58 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ( + "authentik_stages_prompt", + "0011_prompt_initial_value_prompt_initial_value_expression_and_more", + ), + ] + + operations = [ + migrations.AlterField( + model_name="prompt", + name="type", + field=models.CharField( + choices=[ + ("text", "Text: Simple Text input"), + ("text_area", "Text area: Multiline Text Input."), + ( + "text_read_only", + "Text (read-only): Simple Text input, but cannot be edited.", + ), + ( + "text_area_read_only", + "Text area (read-only): Multiline Text input, but cannot be edited.", + ), + ( + "username", + "Username: Same as Text input, but checks for and prevents duplicate usernames.", + ), + ("email", "Email: Text field with Email type."), + ( + "password", + "Password: Masked input, multiple inputs of this type on the same prompt need to be identical.", + ), + ("number", "Number"), + ("checkbox", "Checkbox"), + ( + "radio-button-group", + "Fixed choice field rendered as a group of radio buttons.", + ), + ("dropdown", "Fixed choice field rendered as a dropdown."), + ("date", "Date"), + ("date-time", "Date Time"), + ( + "file", + "File: File upload for arbitrary files. File content will be available in flow context as data-URI", + ), + ("separator", "Separator: Static Separator Line"), + ("hidden", "Hidden: Hidden field, can be used to insert data into form."), + ("static", "Static: Static value, displayed as-is."), + ("alert_info", "Alert (Info): Static alert box with info styling"), + ("alert_warning", "Alert (Warning): Static alert box with warning styling"), + ("alert_danger", "Alert (Danger): Static alert box with danger styling"), + ("ak-locale", "authentik: Selection of locales authentik supports"), + ], + max_length=100, + ), + ), + ] diff --git a/authentik/stages/prompt/models.py b/authentik/stages/prompt/models.py index 317e210384..f4c37031b0 100644 --- a/authentik/stages/prompt/models.py +++ b/authentik/stages/prompt/models.py @@ -87,6 +87,11 @@ class FieldTypes(models.TextChoices): HIDDEN = "hidden", _("Hidden: Hidden field, can be used to insert data into form.") STATIC = "static", _("Static: Static value, displayed as-is.") + # Alert box types for displaying styled messages + ALERT_INFO = "alert_info", _("Alert (Info): Static alert box with info styling") + ALERT_WARNING = "alert_warning", _("Alert (Warning): Static alert box with warning styling") + ALERT_DANGER = "alert_danger", _("Alert (Danger): Static alert box with danger styling") + AK_LOCALE = "ak-locale", _("authentik: Selection of locales authentik supports") @@ -299,7 +304,12 @@ class Prompt(SerializerModel): field_class = HiddenField kwargs["required"] = False kwargs["default"] = self.placeholder - case FieldTypes.STATIC: + case ( + FieldTypes.STATIC + | FieldTypes.ALERT_INFO + | FieldTypes.ALERT_WARNING + | FieldTypes.ALERT_DANGER + ): kwargs["default"] = self.placeholder kwargs["required"] = False kwargs["label"] = "" diff --git a/authentik/stages/prompt/stage.py b/authentik/stages/prompt/stage.py index ecc048f14f..f9061c5845 100644 --- a/authentik/stages/prompt/stage.py +++ b/authentik/stages/prompt/stage.py @@ -124,6 +124,9 @@ class PromptChallengeResponse(ChallengeResponse): type__in=[ FieldTypes.HIDDEN, FieldTypes.STATIC, + FieldTypes.ALERT_INFO, + FieldTypes.ALERT_WARNING, + FieldTypes.ALERT_DANGER, FieldTypes.TEXT_READ_ONLY, FieldTypes.TEXT_AREA_READ_ONLY, ] diff --git a/authentik/stages/prompt/tests.py b/authentik/stages/prompt/tests.py index 3273b4fae0..6e6f7f5f5c 100644 --- a/authentik/stages/prompt/tests.py +++ b/authentik/stages/prompt/tests.py @@ -330,10 +330,20 @@ class TestPromptStage(FlowTestCase): def test_static_hidden_overwrite(self): """Test that static and hidden fields ignore any value sent to them""" + alert_prompt = Prompt.objects.create( + name=generate_id(), + field_key="alert_prompt", + type=FieldTypes.ALERT_INFO, + required=True, + placeholder="alert fallback", + initial_value="alert content", + ) + self.stage.fields.add(alert_prompt) plan = FlowPlan(flow_pk=self.flow.pk.hex, bindings=[self.binding], markers=[StageMarker()]) plan.context[PLAN_CONTEXT_PROMPT] = {"hidden_prompt": "hidden"} self.prompt_data["hidden_prompt"] = "foo" self.prompt_data["static_prompt"] = "foo" + self.prompt_data["alert_prompt"] = "foo" challenge_response = PromptChallengeResponse( None, stage_instance=self.stage, plan=plan, data=self.prompt_data, stage=self.stage_view ) @@ -341,6 +351,7 @@ class TestPromptStage(FlowTestCase): self.assertNotEqual(challenge_response.validated_data["hidden_prompt"], "foo") self.assertEqual(challenge_response.validated_data["hidden_prompt"], "hidden") self.assertNotEqual(challenge_response.validated_data["static_prompt"], "foo") + self.assertEqual(challenge_response.validated_data["alert_prompt"], "alert content") def test_prompt_placeholder(self): """Test placeholder and expression""" diff --git a/authentik/stages/redirect/models.py b/authentik/stages/redirect/models.py index 271e149881..f2c0a696bc 100644 --- a/authentik/stages/redirect/models.py +++ b/authentik/stages/redirect/models.py @@ -16,7 +16,7 @@ class RedirectMode(models.TextChoices): class RedirectStage(Stage): - """Redirect the user to another flow, potentially with all gathered context.""" + """Redirect the user to a static URL or another flow, optionally with all gathered context.""" keep_context = models.BooleanField(default=True) mode = models.TextField(choices=RedirectMode.choices) diff --git a/authentik/stages/user_write/stage.py b/authentik/stages/user_write/stage.py index e3f95506d1..c21a85cf5f 100644 --- a/authentik/stages/user_write/stage.py +++ b/authentik/stages/user_write/stage.py @@ -36,6 +36,14 @@ class UserWriteStageView(StageView): super().__init__(executor, **kwargs) self.disallowed_user_attributes = [ "groups", + # Block attribute writes that would otherwise land on the model's + # primary key. An IdP that returns an `id` claim (mocksaml is one + # example) used to crash the enrollment flow with + # ValueError: Field 'id' expected a number but got '' + # because hasattr(user, "id") is true and setattr(user, "id", ...) + # was taken unchecked. See #21580. + "id", + "pk", ] @staticmethod diff --git a/authentik/stages/user_write/tests.py b/authentik/stages/user_write/tests.py index c4b5a87c0b..41fbe2b459 100644 --- a/authentik/stages/user_write/tests.py +++ b/authentik/stages/user_write/tests.py @@ -315,6 +315,34 @@ class TestUserWriteStage(FlowTestCase): component="ak-stage-access-denied", ) + def test_user_update_ignores_id_from_idp(self): + """IdP-supplied `id`/`pk` attributes must not land on the model + primary key and crash user save (#21580).""" + existing = User.objects.create(username="unittest", email="test@goauthentik.io") + original_pk = existing.pk + + plan = FlowPlan(flow_pk=self.flow.pk.hex, bindings=[self.binding], markers=[StageMarker()]) + plan.context[PLAN_CONTEXT_PENDING_USER] = existing + plan.context[PLAN_CONTEXT_PROMPT] = { + "username": "idp-user", + # Hex string from a SAML IdP; would previously crash with + # ValueError: Field 'id' expected a number but got ''. + "id": "1dda9fb491dc01bd24d2423ba2f22ae561f56ddf2376b29a11c80281d21201f9", + "pk": "also-not-an-int", + } + session = self.client.session + session[SESSION_KEY_PLAN] = plan + session.save() + + response = self.client.post( + reverse("authentik_api:flow-executor", kwargs={"flow_slug": self.flow.slug}) + ) + + self.assertEqual(response.status_code, 200) + self.assertStageRedirects(response, reverse("authentik_core:root-redirect")) + user = User.objects.get(username="idp-user") + self.assertEqual(user.pk, original_pk) + def test_write_attribute(self): """Test write_attribute""" user = create_test_admin_user() diff --git a/authentik/tasks/api/tasks.py b/authentik/tasks/api/tasks.py index f4c9cb1058..1e13129985 100644 --- a/authentik/tasks/api/tasks.py +++ b/authentik/tasks/api/tasks.py @@ -157,7 +157,7 @@ class TaskViewSet( def retry(self, request: Request, pk=None) -> Response: """Retry task""" task: Task = self.get_object() - if task.state not in (TaskState.REJECTED, TaskState.DONE): + if task.state != TaskState.REJECTED: return Response(status=400) broker = get_broker() broker.enqueue(Message.decode(task.message)) diff --git a/authentik/tasks/api/workers.py b/authentik/tasks/api/workers.py index 4952870560..561ff31159 100644 --- a/authentik/tasks/api/workers.py +++ b/authentik/tasks/api/workers.py @@ -1,4 +1,3 @@ -import pglock from django.utils.timezone import now, timedelta from drf_spectacular.utils import extend_schema, inline_serializer from packaging.version import parse @@ -31,18 +30,13 @@ class WorkerView(APIView): def get(self, request: Request) -> Response: response = [] our_version = parse(authentik_full_version()) - for status in WorkerStatus.objects.filter(last_seen__gt=now() - timedelta(minutes=2)): - lock_id = f"goauthentik.io/worker/status/{status.pk}" - with pglock.advisory(lock_id, timeout=0, side_effect=pglock.Return) as acquired: - # The worker doesn't hold the lock, it isn't running - if acquired: - continue - version_matching = parse(status.version) == our_version - response.append( - { - "worker_id": f"{status.pk}@{status.hostname}", - "version": status.version, - "version_matching": version_matching, - } - ) + for status in WorkerStatus.objects.filter(last_seen__gt=now() - timedelta(seconds=45)): + version_matching = parse(status.version) == our_version + response.append( + { + "worker_id": f"{status.pk}@{status.hostname}", + "version": status.version, + "version_matching": version_matching, + } + ) return Response(response) diff --git a/authentik/tasks/middleware.py b/authentik/tasks/middleware.py index 2197164c97..85c525d841 100644 --- a/authentik/tasks/middleware.py +++ b/authentik/tasks/middleware.py @@ -1,42 +1,25 @@ -import socket from collections.abc import Callable -from http.server import BaseHTTPRequestHandler -from threading import Event as TEvent -from threading import Thread, current_thread from typing import Any, cast -import pglock -from django.db import OperationalError, connections, transaction -from django.utils.timezone import now +from django.conf import settings +from django.db import OperationalError from django_dramatiq_postgres.middleware import ( CurrentTask as BaseCurrentTask, ) -from django_dramatiq_postgres.middleware import ( - HTTPServer, - HTTPServerThread, -) from django_dramatiq_postgres.middleware import ( MetricsMiddleware as BaseMetricsMiddleware, ) -from django_dramatiq_postgres.middleware import ( - _MetricsHandler as BaseMetricsHandler, -) -from dramatiq import Worker from dramatiq.broker import Broker from dramatiq.message import Message from dramatiq.middleware import Middleware from psycopg.errors import Error -from setproctitle import setthreadtitle from structlog.stdlib import get_logger -from authentik import authentik_full_version from authentik.events.models import Event, EventAction -from authentik.lib.config import CONFIG from authentik.lib.sentry import should_ignore_exception from authentik.lib.utils.reflection import class_to_path -from authentik.root.monitoring import monitoring_set from authentik.root.signals import post_startup, pre_startup, startup -from authentik.tasks.models import Task, TaskLog, TaskStatus, WorkerStatus +from authentik.tasks.models import Task, TaskLog, TaskStatus from authentik.tenants.models import Tenant from authentik.tenants.utils import get_current_tenant @@ -193,154 +176,26 @@ class DescriptionMiddleware(Middleware): return {"description"} -class _healthcheck_handler(BaseHTTPRequestHandler): - def log_request(self, code="-", size="-"): - HEALTHCHECK_LOGGER.info( - self.path, - method=self.command, - status=code, - ) - - def log_error(self, format, *args): - HEALTHCHECK_LOGGER.warning(format, *args) - - def do_HEAD(self): - try: - for db_conn in connections.all(): - # Force connection reload - db_conn.connect() - _ = db_conn.cursor() - self.send_response(200) - except DB_ERRORS: # pragma: no cover - self.send_response(503) - self.send_header("Content-Type", "text/plain; charset=utf-8") - self.send_header("Content-Length", "0") - self.end_headers() - - do_GET = do_HEAD - - -class WorkerHealthcheckMiddleware(Middleware): - thread: HTTPServerThread | None - - def __init__(self): - listen = CONFIG.get("listen.http", ["[::]:9000"]) - if isinstance(listen, str): - listen = listen.split(",") - host, _, port = listen[0].rpartition(":") - - try: - port = int(port) - except ValueError: - LOGGER.error(f"Invalid port entered: {port}") - - self.host, self.port = host, port - - def after_worker_boot(self, broker: Broker, worker: Worker): - self.thread = HTTPServerThread( - target=WorkerHealthcheckMiddleware.run, args=(self.host, self.port) - ) - self.thread.start() - - def before_worker_shutdown(self, broker: Broker, worker: Worker): - server = self.thread.server - if server: - server.shutdown() - LOGGER.debug("Stopping WorkerHealthcheckMiddleware") - self.thread.join() - - @staticmethod - def run(addr: str, port: int): - setthreadtitle("authentik Worker Healthcheck server") - try: - server = HTTPServer((addr, port), _healthcheck_handler) - thread = cast(HTTPServerThread, current_thread()) - thread.server = server - server.serve_forever() - except OSError as exc: - get_logger(__name__, type(WorkerHealthcheckMiddleware)).warning( - "Port is already in use, not starting healthcheck server", - exc=exc, - ) - - -class WorkerStatusMiddleware(Middleware): - thread: Thread | None - thread_event: TEvent | None - - def after_worker_boot(self, broker: Broker, worker: Worker): - self.thread_event = TEvent() - self.thread = Thread(target=WorkerStatusMiddleware.run, args=(self.thread_event,)) - self.thread.start() - - def before_worker_shutdown(self, broker: Broker, worker: Worker): - self.thread_event.set() - LOGGER.debug("Stopping WorkerStatusMiddleware") - self.thread.join() - - @staticmethod - def run(event: TEvent): - setthreadtitle("authentik Worker status") - with transaction.atomic(): - hostname = socket.gethostname() - WorkerStatus.objects.filter(hostname=hostname).delete() - status, _ = WorkerStatus.objects.update_or_create( - hostname=hostname, - version=authentik_full_version(), - ) - while not event.is_set(): - try: - WorkerStatusMiddleware.keep(event, status) - except DB_ERRORS: # pragma: no cover - event.wait(10) - try: - connections.close_all() - except DB_ERRORS: - pass - - @staticmethod - def keep(event: TEvent, status: WorkerStatus): - lock_id = f"goauthentik.io/worker/status/{status.pk}" - with pglock.advisory(lock_id, side_effect=pglock.Raise): - while not event.is_set(): - status.refresh_from_db() - old_last_seen = status.last_seen - status.last_seen = now() - if old_last_seen != status.last_seen: - status.save(update_fields=("last_seen",)) - event.wait(30) - - -class _MetricsHandler(BaseMetricsHandler): - def do_GET(self) -> None: - monitoring_set.send_robust(self) - return super().do_GET() - - class MetricsMiddleware(BaseMetricsMiddleware): - thread: HTTPServerThread | None - handler_class = _MetricsHandler - @property def forks(self) -> list[Callable[[], None]]: return [] - def after_worker_boot(self, broker: Broker, worker: Worker): - listen = CONFIG.get("listen.metrics", ["[::]:9300"]) - if isinstance(listen, str): - listen = listen.split(",") - addr, _, port = listen[0].rpartition(":") + def before_worker_boot(self, broker: Broker, worker: Any) -> None: + if settings.TEST: + return super().before_worker_boot(broker, worker) - try: - port = int(port) - except ValueError: - LOGGER.error(f"Invalid port entered: {port}") - self.thread = HTTPServerThread(target=MetricsMiddleware.run, args=(addr, port)) - self.thread.start() + from prometheus_client import values + from prometheus_client.values import MultiProcessValue - def before_worker_shutdown(self, broker: Broker, worker: Worker): - server = self.thread.server - if server: - server.shutdown() - LOGGER.debug("Stopping MetricsMiddleware") - self.thread.join() + values.ValueClass = MultiProcessValue(lambda: worker.worker_id) + + return super().before_worker_boot(broker, worker) + + def after_worker_shutdown(self, broker: Broker, worker: Any) -> None: + if settings.TEST: + return + + from prometheus_client import multiprocess + + multiprocess.mark_process_dead(worker.worker_id) diff --git a/authentik/tasks/migrations/0006_task_authentik_t_queue_n_099d0d_idx.py b/authentik/tasks/migrations/0006_task_authentik_t_queue_n_099d0d_idx.py new file mode 100644 index 0000000000..91074d9087 --- /dev/null +++ b/authentik/tasks/migrations/0006_task_authentik_t_queue_n_099d0d_idx.py @@ -0,0 +1,21 @@ +# Generated by Django 5.2.12 on 2026-03-26 13:13 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("authentik_tasks", "0005_tasklog"), + ("authentik_tenants", "0007_tenant_pagination_default_page_size_and_more"), + ("contenttypes", "0002_remove_content_type_name"), + ] + + operations = [ + migrations.AddIndex( + model_name="task", + index=models.Index( + fields=["queue_name", "state", "eta"], name="authentik_t_queue_n_099d0d_idx" + ), + ), + ] diff --git a/authentik/tasks/models.py b/authentik/tasks/models.py index aaec015bec..e9ad15826b 100644 --- a/authentik/tasks/models.py +++ b/authentik/tasks/models.py @@ -3,10 +3,12 @@ from typing import Self from uuid import UUID, uuid4 import pgtrigger -from django.contrib.contenttypes.fields import ContentType, GenericForeignKey, GenericRelation +from django.contrib.contenttypes.fields import GenericForeignKey, GenericRelation +from django.contrib.contenttypes.models import ContentType from django.db import models from django.utils.translation import gettext_lazy as _ from django_dramatiq_postgres.models import TaskBase, TaskState +from dramatiq.errors import Retry from authentik.events.logs import LogEvent from authentik.events.utils import sanitize_item @@ -102,11 +104,14 @@ class Task(InternallyManagedMixin, SerializerModel, TaskBase): cls, logger: str, log_level: TaskStatus, message: str | Exception, **attributes ) -> LogEvent: if isinstance(message, Exception): + exc = message attributes = { - "exception": exception_to_dict(message), + "exception": exception_to_dict(exc), **attributes, } message = str(message) + if not message and isinstance(exc, Retry): + message = "Task has encountered an error and will be retried" return LogEvent( message, logger=logger, diff --git a/authentik/tasks/signals.py b/authentik/tasks/signals.py index 922dbfcba9..9c2a35207a 100644 --- a/authentik/tasks/signals.py +++ b/authentik/tasks/signals.py @@ -2,7 +2,6 @@ from datetime import timedelta -import pglock from django.db.models import Count from django.dispatch import receiver from django.utils.timezone import now @@ -31,24 +30,15 @@ GAUGE_TASKS_QUEUED = Gauge( ) -_version = parse(authentik_full_version()) - - @receiver(monitoring_set) def monitoring_set_workers(sender, **kwargs): """Set worker gauge""" worker_version_count = {} - for status in WorkerStatus.objects.filter(last_seen__gt=now() - timedelta(minutes=2)): - lock_id = f"goauthentik.io/worker/status/{status.pk}" - with pglock.advisory(lock_id, timeout=0, side_effect=pglock.Return) as acquired: - # The worker doesn't hold the lock, it isn't running - if acquired: - continue - version_matching = parse(status.version) == _version - worker_version_count.setdefault( - status.version, {"count": 0, "matching": version_matching} - ) - worker_version_count[status.version]["count"] += 1 + our_version = parse(authentik_full_version()) + for status in WorkerStatus.objects.filter(last_seen__gt=now() - timedelta(seconds=45)): + version_matching = parse(status.version) == our_version + worker_version_count.setdefault(status.version, {"count": 0, "matching": version_matching}) + worker_version_count[status.version]["count"] += 1 for version, stats in worker_version_count.items(): OLD_GAUGE_WORKERS.labels(version, stats["matching"]).set(stats["count"]) GAUGE_WORKERS.labels(version, stats["matching"]).set(stats["count"]) diff --git a/authentik/tasks/test.py b/authentik/tasks/test.py index c9df197f9c..7ee8f15797 100644 --- a/authentik/tasks/test.py +++ b/authentik/tasks/test.py @@ -7,10 +7,9 @@ from dramatiq.broker import Broker, MessageProxy, get_broker from dramatiq.middleware.middleware import Middleware from dramatiq.middleware.retries import Retries from dramatiq.results.middleware import Results -from dramatiq.worker import Worker, _ConsumerThread, _WorkerThread +from dramatiq.worker import ConsumerThread, Worker, WorkerThread from authentik.tasks.broker import PostgresBroker -from authentik.tasks.middleware import WorkerHealthcheckMiddleware TESTING_QUEUE = "testing" @@ -18,9 +17,10 @@ TESTING_QUEUE = "testing" class TestWorker(Worker): def __init__(self, broker: Broker): super().__init__(broker=broker) + self.worker_id = 1000 self.work_queue = PriorityQueue() self.consumers = { - TESTING_QUEUE: _ConsumerThread( + TESTING_QUEUE: ConsumerThread( broker=self.broker, queue_name=TESTING_QUEUE, prefetch=2, @@ -33,7 +33,7 @@ class TestWorker(Worker): prefetch=2, timeout=1, ) - self._worker = _WorkerThread( + self._worker = WorkerThread( broker=self.broker, consumers=self.consumers, work_queue=self.work_queue, @@ -78,19 +78,18 @@ def use_test_broker(): actor.broker = broker actor.broker.declare_actor(actor) - for middleware_class, middleware_kwargs in Conf().middlewares: - middleware: Middleware = import_string(middleware_class)( - **middleware_kwargs, - ) - if isinstance(middleware, WorkerHealthcheckMiddleware): - middleware.port = 9102 - if isinstance(middleware, Retries): - middleware.max_retries = 0 - if isinstance(middleware, Results): - middleware.backend = import_string(Conf().result_backend)( + for middleware_class_path, middleware_kwargs in Conf().middlewares: + middleware_class = import_string(middleware_class_path) + if issubclass(middleware_class, Results): + middleware_kwargs["backend"] = import_string(Conf().result_backend)( *Conf().result_backend_args, **Conf().result_backend_kwargs, ) + middleware: Middleware = middleware_class( + **middleware_kwargs, + ) + if isinstance(middleware, Retries): + middleware.max_retries = 0 broker.add_middleware(middleware) broker.start() diff --git a/authentik/tenants/api/settings.py b/authentik/tenants/api/settings.py index 3eabb0a4d2..30bfd677f0 100644 --- a/authentik/tenants/api/settings.py +++ b/authentik/tenants/api/settings.py @@ -19,19 +19,38 @@ from authentik.tenants.models import Tenant class FlagJSONField(JSONDictField): + def to_internal_value(self, data: str): + flags = super().to_internal_value(data) + for flag in Flag.available(visibility="system", exclude_system=False): + flags[flag().key] = flag.get() + return flags + + def to_representation(self, value: dict) -> dict: + new_value = value.copy() + for flag in Flag.available(exclude_system=False): + _flag = flag() + # Exclude any system flags that aren't modifiable + if _flag.visibility == "system": + new_value.pop(_flag.key, None) + # Explicitly present unset flags as if they were set to default + if _flag.key not in value: + value[_flag.key] = _flag.default + return super().to_representation(new_value) + def run_validators(self, value: dict): super().run_validators(value) for flag in Flag.available(): _flag = flag() - if _flag.key in value: - flag_value = value.get(_flag.key) - flag_type = get_args(_flag.__orig_bases__[0])[0] - if flag_value and not isinstance(flag_value, flag_type): - raise ValidationError( - _("Value for flag {flag_key} needs to be of type {type}.").format( - flag_key=_flag.key, type=flag_type.__name__ - ) + if _flag.key not in value: + continue + flag_value = value.get(_flag.key) + flag_type = get_args(_flag.__orig_bases__[0])[0] + if flag_value and not isinstance(flag_value, flag_type): + raise ValidationError( + _("Value for flag {flag_key} needs to be of type {type}.").format( + flag_key=_flag.key, type=flag_type.__name__ ) + ) class FlagsJSONExtension(OpenApiSerializerFieldExtension): @@ -44,6 +63,10 @@ class FlagsJSONExtension(OpenApiSerializerFieldExtension): for flag in Flag.available(): _flag = flag() props[_flag.key] = build_basic_type(get_args(_flag.__orig_bases__[0])[0]) + if _flag.description: + props[_flag.key]["description"] = _flag.description + if _flag.deprecated: + props[_flag.key]["deprecated"] = _flag.deprecated return build_object_type(props, required=props.keys()) diff --git a/authentik/tenants/flags.py b/authentik/tenants/flags.py index 1ec0389238..cbe58bafb7 100644 --- a/authentik/tenants/flags.py +++ b/authentik/tenants/flags.py @@ -4,6 +4,7 @@ from functools import wraps from typing import TYPE_CHECKING, Any, Literal from django.db import DatabaseError, InternalError, ProgrammingError +from django.db.models import F, Func, JSONField, Value from authentik.lib.utils.reflection import all_subclasses @@ -13,7 +14,11 @@ if TYPE_CHECKING: class Flag[T]: default: T | None = None - visibility: Literal["none"] | Literal["public"] | Literal["authenticated"] = "none" + visibility: ( + Literal["none"] | Literal["public"] | Literal["authenticated"] | Literal["system"] + ) = "none" + description: str | None = None + deprecated = False def __init_subclass__(cls, key: str, **kwargs): cls.__key = key @@ -23,12 +28,15 @@ class Flag[T]: return self.__key @classmethod - def get(cls) -> T | None: + def get(cls, tenant: Tenant | None = None) -> T | None: from authentik.tenants.utils import get_current_tenant + if not tenant: + tenant = get_current_tenant(["flags"]) + flags = {} try: - flags: dict[str, Any] = get_current_tenant(["flags"]).flags + flags: dict[str, Any] = tenant.flags except DatabaseError, ProgrammingError, InternalError: pass value = flags.get(cls.__key, None) @@ -36,20 +44,38 @@ class Flag[T]: return cls().get_default() return value + @classmethod + def set(cls, value: T, tenant: Tenant | None = None) -> T | None: + from authentik.tenants.models import Tenant + from authentik.tenants.utils import get_current_tenant + + if not tenant: + tenant = get_current_tenant() + + Tenant.objects.filter(pk=tenant.pk).update( + flags=Func( + F("flags"), + Value([cls.__key]), + Value(value, JSONField()), + function="jsonb_set", + ) + ) + def get_default(self) -> T | None: return self.default @staticmethod def available( visibility: Literal["none"] | Literal["public"] | Literal["authenticated"] | None = None, + exclude_system=True, ): flags = all_subclasses(Flag) - if visibility: - for flag in flags: - if flag.visibility == visibility: - yield flag - else: - yield from flags + for flag in flags: + if visibility and flag.visibility != visibility: + continue + if exclude_system and flag.visibility == "system": + continue + yield flag def patch_flag[T](flag: Flag[T], value: T): diff --git a/authentik/tenants/management/commands/set_flag.py b/authentik/tenants/management/commands/set_flag.py new file mode 100644 index 0000000000..8a45796361 --- /dev/null +++ b/authentik/tenants/management/commands/set_flag.py @@ -0,0 +1,19 @@ +from argparse import ArgumentParser +from typing import Any + +from authentik.tenants.management import TenantCommand +from authentik.tenants.utils import get_current_tenant + + +class Command(TenantCommand): + + def add_arguments(self, parser: ArgumentParser): + parser.add_argument("flag_key", type=str) + parser.add_argument("flag_value", type=str) + + def handle(self, *, flag_key: str, flag_value: Any, **options): + tenant = get_current_tenant() + val = flag_value.lower() == "true" + tenant.flags[flag_key] = val + tenant.save() + self.stdout.write(f"Set flag '{flag_key}' to {val}.") diff --git a/authentik/tenants/migrations/0001_initial.py b/authentik/tenants/migrations/0001_initial.py index e4eac2f28b..75062a258b 100644 --- a/authentik/tenants/migrations/0001_initial.py +++ b/authentik/tenants/migrations/0001_initial.py @@ -3,7 +3,6 @@ import uuid import django.db.models.deletion -import django_tenants.postgresql_backend.base from django.db import migrations, models from django_tenants.utils import get_tenant_base_schema @@ -16,8 +15,8 @@ def create_default_tenant(apps, schema_editor): db_alias = schema_editor.connection.alias Tenant = apps.get_model("authentik_tenants", "Tenant") - tenant = Tenant.objects.using(db_alias).create( - schema_name="public", + Tenant.objects.using(db_alias).create( + schema_name=CONFIG.get("postgresql.default_schema", "public"), name="Default", ready=True, avatars=CONFIG.get("avatars", "gravatar,initials"), diff --git a/authentik/tenants/tests/test_local_settings.py b/authentik/tenants/tests/test_local_settings.py index 3da22fb09c..ae32af9137 100644 --- a/authentik/tenants/tests/test_local_settings.py +++ b/authentik/tenants/tests/test_local_settings.py @@ -1,10 +1,12 @@ """Test Settings API""" +from django.core.management import call_command from django.urls import reverse from rest_framework.test import APITestCase from authentik.core.tests.utils import create_test_admin_user from authentik.tenants.flags import Flag +from authentik.tenants.utils import get_current_tenant class TestLocalSettingsAPI(APITestCase): @@ -13,11 +15,19 @@ class TestLocalSettingsAPI(APITestCase): def setUp(self): super().setUp() self.local_admin = create_test_admin_user() + self.tenant = get_current_tenant() + + def tearDown(self): + super().tearDown() + self.tenant.flags = {} + self.tenant.save() def test_settings_flags(self): """Test settings API""" + self.tenant.flags = {} + self.tenant.save() - class TestFlag(Flag[bool], key="tenants_test_flag"): + class _TestFlag(Flag[bool], key="tenants_test_flag_bool"): default = False visibility = "public" @@ -26,15 +36,19 @@ class TestLocalSettingsAPI(APITestCase): response = self.client.patch( reverse("authentik_api:tenant_settings"), data={ - "flags": {"tenants_test_flag": True}, + "flags": {"tenants_test_flag_bool": True}, }, ) self.assertEqual(response.status_code, 200) + self.tenant.refresh_from_db() + self.assertEqual(self.tenant.flags["tenants_test_flag_bool"], True) def test_settings_flags_incorrect(self): """Test settings API""" + self.tenant.flags = {} + self.tenant.save() - class TestFlag(Flag[bool], key="tenants_test_flag"): + class _TestFlag(Flag[bool], key="tenants_test_flag_incorrect"): default = False visibility = "public" @@ -43,11 +57,64 @@ class TestLocalSettingsAPI(APITestCase): response = self.client.patch( reverse("authentik_api:tenant_settings"), data={ - "flags": {"tenants_test_flag": 123}, + "flags": {"tenants_test_flag_incorrect": 123}, }, ) self.assertEqual(response.status_code, 400) self.assertJSONEqual( response.content, - {"flags": ["Value for flag tenants_test_flag needs to be of type bool."]}, + {"flags": ["Value for flag tenants_test_flag_incorrect needs to be of type bool."]}, ) + self.tenant.refresh_from_db() + self.assertEqual(self.tenant.flags, {}) + + def test_settings_flags_system(self): + """Test settings API""" + self.tenant.flags = {} + self.tenant.save() + + class _TestFlag(Flag[bool], key="tenants_test_flag_sys"): + + default = False + visibility = "system" + + self.client.force_login(self.local_admin) + response = self.client.patch( + reverse("authentik_api:tenant_settings"), + data={ + "flags": {"tenants_test_flag_sys": 123}, + }, + ) + self.assertEqual(response.status_code, 200) + self.tenant.refresh_from_db() + self.assertEqual(self.tenant.flags, {"setup": False, "tenants_test_flag_sys": False}) + + def test_settings_flags_system_empty_put(self): + """Test settings API""" + self.tenant.flags = {} + self.tenant.save() + + class _TestFlag(Flag[bool], key="tenants_test_flag_sys"): + + default = False + visibility = "system" + + self.client.force_login(self.local_admin) + response = self.client.patch( + reverse("authentik_api:tenant_settings"), + data={ + "flags": {}, + }, + ) + self.assertEqual(response.status_code, 200) + self.tenant.refresh_from_db() + self.assertEqual(self.tenant.flags, {"setup": False, "tenants_test_flag_sys": False}) + + def test_command(self): + self.tenant.flags = {} + self.tenant.save() + + call_command("set_flag", "foo", "true") + + self.tenant.refresh_from_db() + self.assertTrue(self.tenant.flags["foo"]) diff --git a/blueprints/default/flow-oobe.yaml b/blueprints/default/flow-oobe.yaml index 5264cb7d9b..0b887e35a3 100644 --- a/blueprints/default/flow-oobe.yaml +++ b/blueprints/default/flow-oobe.yaml @@ -1,4 +1,7 @@ metadata: + labels: + blueprints.goauthentik.io/system-oobe: "true" + blueprints.goauthentik.io/system: "true" name: Default - Out-of-box-experience flow version: 1 entries: @@ -75,23 +78,20 @@ entries: - attrs: expression: | # This policy ensures that the setup flow can only be - # executed when the admin user doesn''t have a password set + # executed when the admin user doesn't have a password set akadmin = ak_user_by(username="akadmin") - return not akadmin.has_usable_password() + # Ensure flow was started correctly + started_by = context.get("goauthentik.io/core/setup/started-by") + if started_by != "setup": + setup_url = request.http_request.build_absolute_uri("/") + ak_message(f"Access the authentik setup by navigating to {setup_url}") + return False + return akadmin is None or not akadmin.has_usable_password() id: policy-default-oobe-password-usable identifiers: name: default-oobe-password-usable model: authentik_policies_expression.expressionpolicy -- attrs: - expression: | - # This policy ensures that the setup flow can only be - # used one time - from authentik.flows.models import Flow, FlowAuthenticationRequirement - Flow.objects.filter(slug="initial-setup").update( - authentication=FlowAuthenticationRequirement.REQUIRE_SUPERUSER, - ) - return True - id: policy-default-oobe-flow-set-authentication +- state: absent identifiers: name: default-oobe-flow-set-authentication model: authentik_policies_expression.expressionpolicy @@ -154,8 +154,3 @@ entries: policy: !KeyOf policy-default-oobe-prefill-user target: !KeyOf binding-password-write model: authentik_policies.policybinding -- identifiers: - order: 0 - policy: !KeyOf policy-default-oobe-flow-set-authentication - target: !KeyOf binding-login - model: authentik_policies.policybinding diff --git a/blueprints/example/flow-default-account-lockdown.yaml b/blueprints/example/flow-default-account-lockdown.yaml new file mode 100644 index 0000000000..a10f60abc7 --- /dev/null +++ b/blueprints/example/flow-default-account-lockdown.yaml @@ -0,0 +1,299 @@ +version: 1 +metadata: + name: Example - Account lockdown flow + labels: + blueprints.goauthentik.io/instantiate: "false" +entries: + flows: + # Main lockdown flow - requires authentication + - conditions: + - !Context goauthentik.io/enterprise/licensed + attrs: + designation: stage_configuration + name: Account Lockdown + title: Lock Account + authentication: require_authenticated + identifiers: + slug: default-account-lockdown + model: authentik_flows.flow + id: flow + # Self-service completion flow - no authentication required + - conditions: + - !Context goauthentik.io/enterprise/licensed + attrs: + designation: stage_configuration + name: Account Lockdown Complete + title: Account Locked + authentication: none + identifiers: + slug: default-account-lockdown-complete + model: authentik_flows.flow + id: completion-flow + prompt_fields: + # Warning field - danger alert box (content varies based on self-service vs admin) + - conditions: + - !Context goauthentik.io/enterprise/licensed + attrs: + order: 50 + initial_value: | + actor_uuid = str(getattr(http_request.user, "pk", "")) + pending_user = user if getattr(user, "is_authenticated", False) else None + target_uuid = str(getattr(pending_user, "pk", "")) + is_self_service = not target_uuid or target_uuid == actor_uuid + if is_self_service: + return ( + "

You are about to lock down your own account.

" + "

This is an emergency action for cutting off access to your account right away.

" + "

This will immediately:

" + "
    " + "
  • Invalidate your password - Your password will be set to a random value " + "and cannot be recovered
  • " + "
  • Deactivate your account - Your account will be disabled
  • " + "
  • Terminate all your sessions - You will be logged out everywhere
  • " + "
  • Revoke all your tokens - All your API, app password, recovery, " + "verification, and OAuth2 tokens and grants will be revoked
  • " + "
" + "

This action cannot be easily undone.

" + ) + + from django.utils.html import escape + + if pending_user: + detail = pending_user.email or pending_user.name + user_html = f"{escape(pending_user.username)}" + if detail and detail != pending_user.username: + user_html = f"{user_html} ({escape(detail)})" + else: + user_html = "the account selected when this one-time lockdown link was created" + + return ( + f"

You are about to lock down the following account: {user_html}

" + "

This is an emergency action for cutting off access to the account right away. " + "It does not lock the administrator who opened this page.

" + "

This will immediately:

" + "
    " + "
  • Invalidate the user's password
  • " + "
  • Deactivate the user
  • " + "
  • Terminate all sessions - All active sessions will be ended
  • " + "
  • Revoke all tokens - All API, app password, recovery, verification, and OAuth2 " + "tokens and grants will be revoked
  • " + "
" + "

This action cannot be easily undone.

" + ) + initial_value_expression: true + required: false + type: alert_danger + field_key: lockdown_warning + label: Warning + sub_text: "" + identifiers: + name: default-account-lockdown-field-warning + id: prompt-field-warning + model: authentik_stages_prompt.prompt + # Info field - when to use lockdown (content varies based on self-service vs admin) + - conditions: + - !Context goauthentik.io/enterprise/licensed + attrs: + order: 100 + initial_value: | + actor_uuid = str(getattr(http_request.user, "pk", "")) + target_uuid = str(getattr(user, "pk", "")) + is_self_service = not target_uuid or target_uuid == actor_uuid + if is_self_service: + info = ( + "Use this if you no longer trust your current password or sessions. " + "After lockdown, you will need help from your administrator or security team to regain access." + ) + else: + info = ( + "Use this for incident response on the listed account, for example after a compromise report " + "or suspicious activity. The reason you enter below will be recorded in the audit log." + ) + return ( + f"

{info}

" + '

Learn more about account lockdown

' + ) + initial_value_expression: true + required: false + type: alert_info + field_key: lockdown_info + label: Information + sub_text: "" + identifiers: + name: default-account-lockdown-field-info + id: prompt-field-info + model: authentik_stages_prompt.prompt + # Reason field - text area for lockdown reason + - conditions: + - !Context goauthentik.io/enterprise/licensed + attrs: + order: 200 + placeholder: | + actor_uuid = str(getattr(http_request.user, "pk", "")) + target_uuid = str(getattr(user, "pk", "")) + is_self_service = not target_uuid or target_uuid == actor_uuid + if is_self_service: + return "Describe why you are locking your account..." + return "Describe why this account is being locked down..." + placeholder_expression: true + required: true + type: text_area + field_key: lockdown_reason + label: Reason + sub_text: This explanation will be recorded in the audit log. + identifiers: + name: default-account-lockdown-field-reason + id: prompt-field-reason + model: authentik_stages_prompt.prompt + prompt_stages: + # Prompt stage for warnings and reason input + - conditions: + - !Context goauthentik.io/enterprise/licensed + attrs: + fields: + - !KeyOf prompt-field-warning + - !KeyOf prompt-field-info + - !KeyOf prompt-field-reason + identifiers: + name: default-account-lockdown-prompt + id: default-account-lockdown-prompt + model: authentik_stages_prompt.promptstage + lockdown_stage: + # Account lockdown stage - performs the actual lockdown + - conditions: + - !Context goauthentik.io/enterprise/licensed + identifiers: + name: default-account-lockdown-stage + id: default-account-lockdown-stage + model: authentik_stages_account_lockdown.accountlockdownstage + attrs: + deactivate_user: true + set_unusable_password: true + delete_sessions: true + revoke_tokens: true + self_service_completion_flow: !Find [authentik_flows.flow, [slug, default-account-lockdown-complete]] + completion_prompt: + # Completion message field - confirmation shown after an admin-triggered lockdown + - conditions: + - !Context goauthentik.io/enterprise/licensed + attrs: + order: 300 + initial_value: | + from django.utils.html import escape + + if getattr(user, "is_authenticated", False): + return f"

{escape(user.username)} has been locked down.

" + + return "

The selected account has been locked down.

" + initial_value_expression: true + required: false + type: alert_info + field_key: lockdown_complete + label: Result + sub_text: "" + identifiers: + name: default-account-lockdown-field-complete + id: prompt-field-complete + model: authentik_stages_prompt.prompt + # Prompt stage for admin completion message + - conditions: + - !Context goauthentik.io/enterprise/licensed + attrs: + fields: + - !KeyOf prompt-field-complete + identifiers: + name: default-account-lockdown-complete-prompt + id: default-account-lockdown-complete-prompt + model: authentik_stages_prompt.promptstage + policies: + # Expression policy to check if this is NOT a self-service lockdown (admin) + - conditions: + - !Context goauthentik.io/enterprise/licensed + attrs: + name: default-account-lockdown-admin-policy + expression: | + actor_uuid = str(getattr(request.http_request.user, "pk", "")) + target_uuid = str(getattr(request.user, "pk", "")) + return bool(target_uuid) and target_uuid != actor_uuid + identifiers: + name: default-account-lockdown-admin-policy + id: admin-policy + model: authentik_policies_expression.expressionpolicy + bindings: + # Stage bindings + - conditions: + - !Context goauthentik.io/enterprise/licensed + identifiers: + order: 0 + stage: !KeyOf default-account-lockdown-prompt + target: !KeyOf flow + model: authentik_flows.flowstagebinding + - conditions: + - !Context goauthentik.io/enterprise/licensed + identifiers: + order: 10 + stage: !KeyOf default-account-lockdown-stage + target: !KeyOf flow + model: authentik_flows.flowstagebinding + # Admin completion stage binding - shown for admin lockdown only + - conditions: + - !Context goauthentik.io/enterprise/licensed + identifiers: + order: 20 + stage: !KeyOf default-account-lockdown-complete-prompt + target: !KeyOf flow + id: admin-completion-binding + model: authentik_flows.flowstagebinding + # Bind the admin policy to the admin completion stage + - conditions: + - !Context goauthentik.io/enterprise/licensed + attrs: + enabled: true + negate: false + order: 0 + identifiers: + policy: !KeyOf admin-policy + target: !KeyOf admin-completion-binding + model: authentik_policies.policybinding + self_service_completion: + # Self-service completion message field (for the unauthenticated completion flow) + - conditions: + - !Context goauthentik.io/enterprise/licensed + attrs: + order: 100 + initial_value: | + return ( + "

Your account has been locked

" + "

You have been logged out of all sessions and your password has been invalidated.

" + "

To regain access to your account, please contact your IT administrator or security team.

" + ) + initial_value_expression: true + required: false + type: alert_warning + field_key: self_lockdown_complete + label: Account locked + sub_text: "" + identifiers: + name: default-account-lockdown-self-field-complete + id: self-prompt-field-complete + model: authentik_stages_prompt.prompt + # Prompt stage for self-service completion (unauthenticated) + - conditions: + - !Context goauthentik.io/enterprise/licensed + attrs: + fields: + - !KeyOf self-prompt-field-complete + identifiers: + name: default-account-lockdown-self-complete-prompt + id: default-account-lockdown-self-complete-prompt + model: authentik_stages_prompt.promptstage + # Bind self-service completion stage to the completion flow + - conditions: + - !Context goauthentik.io/enterprise/licensed + identifiers: + order: 0 + stage: !KeyOf default-account-lockdown-self-complete-prompt + target: !Find [authentik_flows.flow, [slug, default-account-lockdown-complete]] + model: authentik_flows.flowstagebinding diff --git a/blueprints/example/flows-invitation-enrollment-minimal.yaml b/blueprints/example/flows-invitation-enrollment-minimal.yaml new file mode 100644 index 0000000000..90a20a4b90 --- /dev/null +++ b/blueprints/example/flows-invitation-enrollment-minimal.yaml @@ -0,0 +1,211 @@ +# Minimal Invitation-based Enrollment Blueprint +# +# Companion to flows-invitation-enrollment.yaml, intended for the "New Invitation" +# wizard in the admin UI. Creates a single enrollment flow with an invitation stage +# bound to it, plus the supporting prompt/user-write/user-login stages. +# +# All user-facing fields are parameterized via !Context with fallback defaults, so +# this blueprint can be imported directly (without context) or through the wizard +# with custom values. +# +# Context keys (all optional): +# flow_name Display name of the enrollment flow. +# flow_slug URL slug of the flow and suffix for sub-entity +# identifiers (so repeated imports with different +# slugs don't overwrite each other). +# stage_name Name of the invitation stage. +# continue_flow_without_invitation Whether the flow continues when no invitation +# is supplied (default: false). +# user_type "external" or "internal" (default: "external"). +# Drives the user-write stage's user_type and +# user_path_template. +version: 1 +metadata: + labels: + blueprints.goauthentik.io/instantiate: "false" + name: Invitation-based Enrollment (minimal) +entries: + - identifiers: + slug: !Context [flow_slug, invitation-enrollment-flow] + model: authentik_flows.flow + id: flow + attrs: + name: !Context [flow_name, Invitation Enrollment Flow] + title: !Context [flow_name, Invitation Enrollment Flow] + designation: enrollment + authentication: require_unauthenticated + + - identifiers: + name: !Context [stage_name, invitation-stage] + id: invitation-stage + model: authentik_stages_invitation.invitationstage + attrs: + continue_flow_without_invitation: !Context [continue_flow_without_invitation, false] + + - identifiers: + name: + !Format [ + "invitation-enrollment-field-username-%s", + !Context [flow_slug, invitation-enrollment-flow], + ] + id: prompt-field-username + model: authentik_stages_prompt.prompt + attrs: + field_key: username + label: Username + type: username + required: true + placeholder: Username + placeholder_expression: false + order: 0 + + - identifiers: + name: + !Format [ + "invitation-enrollment-field-password-%s", + !Context [flow_slug, invitation-enrollment-flow], + ] + id: prompt-field-password + model: authentik_stages_prompt.prompt + attrs: + field_key: password + label: Password + type: password + required: true + placeholder: Password + placeholder_expression: false + order: 1 + + - identifiers: + name: + !Format [ + "invitation-enrollment-field-password-repeat-%s", + !Context [flow_slug, invitation-enrollment-flow], + ] + id: prompt-field-password-repeat + model: authentik_stages_prompt.prompt + attrs: + field_key: password_repeat + label: Password (repeat) + type: password + required: true + placeholder: Password (repeat) + placeholder_expression: false + order: 2 + + - identifiers: + name: + !Format [ + "invitation-enrollment-field-name-%s", + !Context [flow_slug, invitation-enrollment-flow], + ] + id: prompt-field-name + model: authentik_stages_prompt.prompt + attrs: + field_key: name + label: Name + type: text + required: true + placeholder: Name + placeholder_expression: false + order: 0 + + - identifiers: + name: + !Format [ + "invitation-enrollment-field-email-%s", + !Context [flow_slug, invitation-enrollment-flow], + ] + id: prompt-field-email + model: authentik_stages_prompt.prompt + attrs: + field_key: email + label: Email + type: email + required: true + placeholder: Email + placeholder_expression: false + order: 1 + + - identifiers: + name: + !Format [ + "invitation-enrollment-prompt-credentials-%s", + !Context [flow_slug, invitation-enrollment-flow], + ] + id: prompt-stage-credentials + model: authentik_stages_prompt.promptstage + attrs: + fields: + - !KeyOf prompt-field-username + - !KeyOf prompt-field-password + - !KeyOf prompt-field-password-repeat + + - identifiers: + name: + !Format [ + "invitation-enrollment-prompt-details-%s", + !Context [flow_slug, invitation-enrollment-flow], + ] + id: prompt-stage-details + model: authentik_stages_prompt.promptstage + attrs: + fields: + - !KeyOf prompt-field-name + - !KeyOf prompt-field-email + + - identifiers: + name: + !Format [ + "invitation-enrollment-user-write-%s", + !Context [flow_slug, invitation-enrollment-flow], + ] + id: user-write-stage + model: authentik_stages_user_write.userwritestage + attrs: + user_creation_mode: always_create + user_type: !Context [user_type, external] + user_path_template: + !Format ["users/%s", !Context [user_type, external]] + + - identifiers: + name: + !Format [ + "invitation-enrollment-user-login-%s", + !Context [flow_slug, invitation-enrollment-flow], + ] + id: user-login-stage + model: authentik_stages_user_login.userloginstage + + - identifiers: + target: !KeyOf flow + stage: !KeyOf invitation-stage + order: 5 + model: authentik_flows.flowstagebinding + attrs: + evaluate_on_plan: true + re_evaluate_policies: true + + - identifiers: + target: !KeyOf flow + stage: !KeyOf prompt-stage-credentials + order: 10 + model: authentik_flows.flowstagebinding + + - identifiers: + target: !KeyOf flow + stage: !KeyOf prompt-stage-details + order: 15 + model: authentik_flows.flowstagebinding + + - identifiers: + target: !KeyOf flow + stage: !KeyOf user-write-stage + order: 20 + model: authentik_flows.flowstagebinding + + - identifiers: + target: !KeyOf flow + stage: !KeyOf user-login-stage + order: 100 + model: authentik_flows.flowstagebinding diff --git a/blueprints/example/flows-recovery-email-mfa-verification.yaml b/blueprints/example/flows-recovery-email-mfa-verification.yaml new file mode 100644 index 0000000000..776d25a718 --- /dev/null +++ b/blueprints/example/flows-recovery-email-mfa-verification.yaml @@ -0,0 +1,178 @@ +version: 1 +metadata: + labels: + blueprints.goauthentik.io/instantiate: "false" + name: Example - Recovery with email and MFA verification +entries: + - identifiers: + slug: default-recovery-flow + id: flow + model: authentik_flows.flow + attrs: + name: Default recovery flow + title: Reset your password + designation: recovery + authentication: require_unauthenticated + - identifiers: + name: default-recovery-field-password + id: prompt-field-password + model: authentik_stages_prompt.prompt + attrs: + field_key: password + label: Password + type: password + required: true + placeholder: Password + order: 0 + placeholder_expression: false + - identifiers: + name: default-recovery-field-password-repeat + id: prompt-field-password-repeat + model: authentik_stages_prompt.prompt + attrs: + field_key: password_repeat + label: Password (repeat) + type: password + required: true + placeholder: Password (repeat) + order: 1 + placeholder_expression: false + - identifiers: + name: default-recovery-skip-if-restored + id: default-recovery-skip-if-restored + model: authentik_policies_expression.expressionpolicy + attrs: + expression: | + return bool(request.context.get('is_restored', True)) + - identifiers: + name: default-recovery-email + id: default-recovery-email + model: authentik_stages_email.emailstage + attrs: + use_global_settings: true + host: localhost + port: 25 + username: "" + use_tls: false + use_ssl: false + timeout: 10 + from_address: system@authentik.local + token_expiry: minutes=30 + subject: authentik + template: email/password_reset.html + activate_user_on_success: true + recovery_max_attempts: 5 + recovery_cache_timeout: minutes=5 + - identifiers: + name: default-recovery-mfa + id: default-recovery-mfa + model: authentik_stages_authenticator_validate.authenticatorvalidatestage + - identifiers: + name: default-recovery-user-write + id: default-recovery-user-write + model: authentik_stages_user_write.userwritestage + attrs: + user_creation_mode: never_create + - identifiers: + name: default-recovery-identification + id: default-recovery-identification + model: authentik_stages_identification.identificationstage + attrs: + user_fields: + - email + - username + - identifiers: + name: default-recovery-user-login + id: default-recovery-user-login + model: authentik_stages_user_login.userloginstage + - identifiers: + name: Change your password + id: stages-prompt-password + model: authentik_stages_prompt.promptstage + attrs: + fields: + - !KeyOf prompt-field-password + - !KeyOf prompt-field-password-repeat + validation_policies: [] + - identifiers: + target: !KeyOf flow + stage: !KeyOf default-recovery-identification + order: 10 + model: authentik_flows.flowstagebinding + id: flow-binding-identification + attrs: + evaluate_on_plan: true + re_evaluate_policies: true + policy_engine_mode: any + invalid_response_action: retry + - identifiers: + target: !KeyOf flow + stage: !KeyOf default-recovery-email + order: 20 + model: authentik_flows.flowstagebinding + id: flow-binding-email + attrs: + evaluate_on_plan: true + re_evaluate_policies: true + policy_engine_mode: any + invalid_response_action: retry + - identifiers: + target: !KeyOf flow + stage: !KeyOf default-recovery-mfa + order: 21 + model: authentik_flows.flowstagebinding + id: flow-binding-mfa + attrs: + evaluate_on_plan: true + re_evaluate_policies: true + policy_engine_mode: any + invalid_response_action: retry + - identifiers: + target: !KeyOf flow + stage: !KeyOf stages-prompt-password + order: 30 + model: authentik_flows.flowstagebinding + attrs: + evaluate_on_plan: true + re_evaluate_policies: false + policy_engine_mode: any + invalid_response_action: retry + - identifiers: + target: !KeyOf flow + stage: !KeyOf default-recovery-user-write + order: 40 + model: authentik_flows.flowstagebinding + attrs: + evaluate_on_plan: true + re_evaluate_policies: false + policy_engine_mode: any + invalid_response_action: retry + - identifiers: + target: !KeyOf flow + stage: !KeyOf default-recovery-user-login + order: 100 + model: authentik_flows.flowstagebinding + attrs: + evaluate_on_plan: true + re_evaluate_policies: false + policy_engine_mode: any + invalid_response_action: retry + - identifiers: + policy: !KeyOf default-recovery-skip-if-restored + target: !KeyOf flow-binding-identification + order: 0 + model: authentik_policies.policybinding + attrs: + negate: false + enabled: true + timeout: 30 + - identifiers: + policy: !KeyOf default-recovery-skip-if-restored + target: !KeyOf flow-binding-email + order: 0 + state: absent + model: authentik_policies.policybinding + attrs: + negate: false + enabled: true + timeout: 30 diff --git a/blueprints/schema.json b/blueprints/schema.json index 731544146c..23ea04d496 100644 --- a/blueprints/schema.json +++ b/blueprints/schema.json @@ -2,7 +2,7 @@ "$schema": "http://json-schema.org/draft-07/schema", "$id": "https://goauthentik.io/blueprints/schema.json", "type": "object", - "title": "authentik 2026.5.0-rc1 Blueprint schema", + "title": "authentik 2026.8.0-rc1 Blueprint schema", "required": [ "version", "entries" @@ -1216,6 +1216,46 @@ } } }, + { + "type": "object", + "required": [ + "model", + "identifiers" + ], + "properties": { + "model": { + "const": "authentik_stages_account_lockdown.accountlockdownstage" + }, + "id": { + "type": "string" + }, + "state": { + "type": "string", + "enum": [ + "absent", + "created", + "must_created", + "present" + ], + "default": "present" + }, + "conditions": { + "type": "array", + "items": { + "type": "boolean" + } + }, + "permissions": { + "$ref": "#/$defs/model_authentik_stages_account_lockdown.accountlockdownstage_permissions" + }, + "attrs": { + "$ref": "#/$defs/model_authentik_stages_account_lockdown.accountlockdownstage" + }, + "identifiers": { + "$ref": "#/$defs/model_authentik_stages_account_lockdown.accountlockdownstage" + } + } + }, { "type": "object", "required": [ @@ -5100,6 +5140,11 @@ "format": "uuid", "title": "Flow device code" }, + "flow_lockdown": { + "type": "string", + "format": "uuid", + "title": "Flow lockdown" + }, "default_application": { "type": "string", "format": "uuid", @@ -5215,6 +5260,11 @@ "type": "string", "title": "Group" }, + "meta_hide": { + "type": "boolean", + "title": "Meta hide", + "description": "Hide this application from the user's My applications page." + }, "icon": { "type": "string", "minLength": 1, @@ -5532,6 +5582,14 @@ "minLength": 1, "title": "Password" }, + "password_hash": { + "type": [ + "string", + "null" + ], + "minLength": 1, + "title": "Password hash" + }, "permissions": { "type": "array", "items": { @@ -5644,6 +5702,7 @@ "authentik_endpoints_connectors_agent.add_agentconnector", "authentik_endpoints_connectors_agent.add_agentdeviceconnection", "authentik_endpoints_connectors_agent.add_agentdeviceuserbinding", + "authentik_endpoints_connectors_agent.add_appleindependentsecureenclave", "authentik_endpoints_connectors_agent.add_applenonce", "authentik_endpoints_connectors_agent.add_deviceauthenticationtoken", "authentik_endpoints_connectors_agent.add_devicetoken", @@ -5651,6 +5710,7 @@ "authentik_endpoints_connectors_agent.change_agentconnector", "authentik_endpoints_connectors_agent.change_agentdeviceconnection", "authentik_endpoints_connectors_agent.change_agentdeviceuserbinding", + "authentik_endpoints_connectors_agent.change_appleindependentsecureenclave", "authentik_endpoints_connectors_agent.change_applenonce", "authentik_endpoints_connectors_agent.change_deviceauthenticationtoken", "authentik_endpoints_connectors_agent.change_devicetoken", @@ -5658,6 +5718,7 @@ "authentik_endpoints_connectors_agent.delete_agentconnector", "authentik_endpoints_connectors_agent.delete_agentdeviceconnection", "authentik_endpoints_connectors_agent.delete_agentdeviceuserbinding", + "authentik_endpoints_connectors_agent.delete_appleindependentsecureenclave", "authentik_endpoints_connectors_agent.delete_applenonce", "authentik_endpoints_connectors_agent.delete_deviceauthenticationtoken", "authentik_endpoints_connectors_agent.delete_devicetoken", @@ -5665,6 +5726,7 @@ "authentik_endpoints_connectors_agent.view_agentconnector", "authentik_endpoints_connectors_agent.view_agentdeviceconnection", "authentik_endpoints_connectors_agent.view_agentdeviceuserbinding", + "authentik_endpoints_connectors_agent.view_appleindependentsecureenclave", "authentik_endpoints_connectors_agent.view_applenonce", "authentik_endpoints_connectors_agent.view_deviceauthenticationtoken", "authentik_endpoints_connectors_agent.view_devicetoken", @@ -6077,6 +6139,10 @@ "authentik_sources_telegram.view_telegramsource", "authentik_sources_telegram.view_telegramsourcepropertymapping", "authentik_sources_telegram.view_usertelegramsourceconnection", + "authentik_stages_account_lockdown.add_accountlockdownstage", + "authentik_stages_account_lockdown.change_accountlockdownstage", + "authentik_stages_account_lockdown.delete_accountlockdownstage", + "authentik_stages_account_lockdown.view_accountlockdownstage", "authentik_stages_authenticator_duo.add_authenticatorduostage", "authentik_stages_authenticator_duo.add_duodevice", "authentik_stages_authenticator_duo.change_authenticatorduostage", @@ -7507,6 +7573,10 @@ "type": "string", "minLength": 1, "title": "Event retention" + }, + "push_verify_certificates": { + "type": "boolean", + "title": "Push verify certificates" } }, "required": [] @@ -7736,6 +7806,69 @@ } } }, + "model_authentik_stages_account_lockdown.accountlockdownstage": { + "type": "object", + "properties": { + "name": { + "type": "string", + "minLength": 1, + "title": "Name" + }, + "deactivate_user": { + "type": "boolean", + "title": "Deactivate user", + "description": "Deactivate the user account (set is_active to False)" + }, + "set_unusable_password": { + "type": "boolean", + "title": "Set unusable password", + "description": "Set an unusable password for the user" + }, + "delete_sessions": { + "type": "boolean", + "title": "Delete sessions", + "description": "Delete all active sessions for the user" + }, + "revoke_tokens": { + "type": "boolean", + "title": "Revoke tokens", + "description": "Revoke all tokens for the user (API, app password, recovery, verification, OAuth)" + }, + "self_service_completion_flow": { + "type": "string", + "format": "uuid", + "title": "Self service completion flow", + "description": "Flow to redirect users to after self-service lockdown. This flow should not require authentication since the user's session is deleted." + } + }, + "required": [] + }, + "model_authentik_stages_account_lockdown.accountlockdownstage_permissions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "permission" + ], + "properties": { + "permission": { + "type": "string", + "enum": [ + "add_accountlockdownstage", + "change_accountlockdownstage", + "delete_accountlockdownstage", + "view_accountlockdownstage" + ] + }, + "user": { + "type": "integer" + }, + "role": { + "type": "string" + } + } + } + }, "model_authentik_stages_authenticator_endpoint_gdtc.authenticatorendpointgdtcstage": { "type": "object", "properties": { @@ -8422,7 +8555,8 @@ "require_unauthenticated", "require_superuser", "require_redirect", - "require_outpost" + "require_outpost", + "require_token" ], "title": "Authentication", "description": "Required level of authentication and authorization to access a flow." @@ -8930,7 +9064,7 @@ "authentik.enterprise.providers.ssf", "authentik.enterprise.providers.ws_federation", "authentik.enterprise.reports", - "authentik.enterprise.search", + "authentik.enterprise.stages.account_lockdown", "authentik.enterprise.stages.authenticator_endpoint_gdtc", "authentik.enterprise.stages.mtls", "authentik.enterprise.stages.source" @@ -9063,12 +9197,21 @@ "authentik_providers_ssf.ssfprovider", "authentik_providers_ws_federation.wsfederationprovider", "authentik_reports.dataexport", + "authentik_stages_account_lockdown.accountlockdownstage", "authentik_stages_authenticator_endpoint_gdtc.authenticatorendpointgdtcstage", "authentik_stages_mtls.mutualtlsstage", "authentik_stages_source.sourcestage" ], "title": "Model", "description": "Match events created by selected model. When left empty, all models are matched. When an app is selected, all the application's models are matched." + }, + "query": { + "type": [ + "string", + "null" + ], + "minLength": 1, + "title": "Query" } }, "required": [] @@ -9946,6 +10089,23 @@ "title": "Client Type", "description": "Confidential clients are capable of maintaining the confidentiality of their credentials. Public clients are incapable" }, + "grant_types": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "authorization_code", + "implicit", + "hybrid", + "refresh_token", + "client_credentials", + "password", + "urn:ietf:params:oauth:grant-type:device_code" + ], + "title": "Grant types" + }, + "title": "Grant types" + }, "client_id": { "type": "string", "maxLength": 255, @@ -10015,6 +10175,14 @@ "type": "string", "minLength": 1, "title": "Url" + }, + "redirect_uri_type": { + "type": "string", + "enum": [ + "authorization", + "logout" + ], + "title": "Redirect uri type" } }, "required": [ @@ -10771,11 +10939,10 @@ "title": "Audience", "description": "Value of the audience restriction field of the assertion. When left empty, no audience restriction will be added." }, - "issuer": { + "issuer_override": { "type": "string", - "minLength": 1, - "title": "Issuer", - "description": "Also known as EntityID" + "title": "Issuer override", + "description": "Also known as EntityID. Providing a value overrides the default issuer generated by authentik." }, "assertion_valid_not_before": { "type": "string", @@ -11036,7 +11203,8 @@ "type": "string", "enum": [ "token", - "oauth" + "oauth", + "oauth_interactive" ], "title": "Auth mode" }, @@ -11057,7 +11225,9 @@ "default", "aws", "slack", - "sfdc" + "sfdc", + "webex", + "vcenter" ], "title": "SCIM Compatibility Mode", "description": "Alter authentik behavior for vendor-specific SCIM implementations." @@ -11299,6 +11469,7 @@ "authentik_endpoints_connectors_agent.add_agentconnector", "authentik_endpoints_connectors_agent.add_agentdeviceconnection", "authentik_endpoints_connectors_agent.add_agentdeviceuserbinding", + "authentik_endpoints_connectors_agent.add_appleindependentsecureenclave", "authentik_endpoints_connectors_agent.add_applenonce", "authentik_endpoints_connectors_agent.add_deviceauthenticationtoken", "authentik_endpoints_connectors_agent.add_devicetoken", @@ -11306,6 +11477,7 @@ "authentik_endpoints_connectors_agent.change_agentconnector", "authentik_endpoints_connectors_agent.change_agentdeviceconnection", "authentik_endpoints_connectors_agent.change_agentdeviceuserbinding", + "authentik_endpoints_connectors_agent.change_appleindependentsecureenclave", "authentik_endpoints_connectors_agent.change_applenonce", "authentik_endpoints_connectors_agent.change_deviceauthenticationtoken", "authentik_endpoints_connectors_agent.change_devicetoken", @@ -11313,6 +11485,7 @@ "authentik_endpoints_connectors_agent.delete_agentconnector", "authentik_endpoints_connectors_agent.delete_agentdeviceconnection", "authentik_endpoints_connectors_agent.delete_agentdeviceuserbinding", + "authentik_endpoints_connectors_agent.delete_appleindependentsecureenclave", "authentik_endpoints_connectors_agent.delete_applenonce", "authentik_endpoints_connectors_agent.delete_deviceauthenticationtoken", "authentik_endpoints_connectors_agent.delete_devicetoken", @@ -11320,6 +11493,7 @@ "authentik_endpoints_connectors_agent.view_agentconnector", "authentik_endpoints_connectors_agent.view_agentdeviceconnection", "authentik_endpoints_connectors_agent.view_agentdeviceuserbinding", + "authentik_endpoints_connectors_agent.view_appleindependentsecureenclave", "authentik_endpoints_connectors_agent.view_applenonce", "authentik_endpoints_connectors_agent.view_deviceauthenticationtoken", "authentik_endpoints_connectors_agent.view_devicetoken", @@ -11732,6 +11906,10 @@ "authentik_sources_telegram.view_telegramsource", "authentik_sources_telegram.view_telegramsourcepropertymapping", "authentik_sources_telegram.view_usertelegramsourceconnection", + "authentik_stages_account_lockdown.add_accountlockdownstage", + "authentik_stages_account_lockdown.change_accountlockdownstage", + "authentik_stages_account_lockdown.delete_accountlockdownstage", + "authentik_stages_account_lockdown.view_accountlockdownstage", "authentik_stages_authenticator_duo.add_authenticatorduostage", "authentik_stages_authenticator_duo.add_duodevice", "authentik_stages_authenticator_duo.change_authenticatorduostage", @@ -13492,6 +13670,11 @@ "title": "Allow idp initiated", "description": "Allows authentication flows initiated by the IdP. This can be a security risk, as no validation of the request ID is done." }, + "force_authn": { + "type": "boolean", + "title": "Force authn", + "description": "When enabled, the IdP will re-authenticate the user even if a session exists." + }, "name_id_policy": { "type": "string", "enum": [ @@ -14754,6 +14937,22 @@ "format": "uuid" }, "title": "Webauthn allowed device types" + }, + "email_otp_throttling_factor": { + "type": "number", + "title": "Email otp throttling factor" + }, + "sms_otp_throttling_factor": { + "type": "number", + "title": "Sms otp throttling factor" + }, + "totp_otp_throttling_factor": { + "type": "number", + "title": "Totp otp throttling factor" + }, + "static_otp_throttling_factor": { + "type": "number", + "title": "Static otp throttling factor" } }, "required": [] @@ -14853,6 +15052,11 @@ }, "title": "Device type restrictions" }, + "prevent_duplicate_devices": { + "type": "boolean", + "title": "Prevent duplicate devices", + "description": "When enabled, a given device can only be registered once." + }, "max_attempts": { "type": "integer", "minimum": 0, @@ -15588,6 +15792,9 @@ "separator", "hidden", "static", + "alert_info", + "alert_warning", + "alert_danger", "ak-locale" ], "title": "Type" diff --git a/blueprints/system/bootstrap.yaml b/blueprints/system/bootstrap.yaml index f35eb6c37b..625dff275e 100644 --- a/blueprints/system/bootstrap.yaml +++ b/blueprints/system/bootstrap.yaml @@ -11,6 +11,7 @@ context: group_name: authentik Admins email: !Env [AUTHENTIK_BOOTSTRAP_EMAIL, "root@example.com"] password: !Env [AUTHENTIK_BOOTSTRAP_PASSWORD, null] + password_hash: !Env [AUTHENTIK_BOOTSTRAP_PASSWORD_HASH, null] token: !Env [AUTHENTIK_BOOTSTRAP_TOKEN, null] entries: - model: authentik_core.group @@ -31,6 +32,7 @@ entries: groups: - !KeyOf admin-group password: !Context password + password_hash: !Context password_hash - model: authentik_core.token state: created conditions: diff --git a/blueprints/testing/oidc-conformance.yaml b/blueprints/testing/oidc-conformance.yaml index 564bb0000c..e9de973967 100644 --- a/blueprints/testing/oidc-conformance.yaml +++ b/blueprints/testing/oidc-conformance.yaml @@ -73,8 +73,20 @@ entries: redirect_uris: - matching_mode: strict url: https://localhost:8443/test/a/authentik/callback + redirect_uri_type: authorization - matching_mode: strict url: https://host.docker.internal:8443/test/a/authentik/callback + redirect_uri_type: authorization + - matching_mode: strict + url: https://localhost:8443/test/a/authentik/post_logout_redirect + redirect_uri_type: logout + - matching_mode: strict + url: https://host.docker.internal:8443/test/a/authentik/post_logout_redirect + redirect_uri_type: logout + grant_types: + - authorization_code + - implicit + - refresh_token property_mappings: - !Find [authentik_providers_oauth2.scopemapping, [managed, goauthentik.io/providers/oauth2/scope-openid]] - !Find [authentik_providers_oauth2.scopemapping, [managed, goauthentik.io/providers/oauth2/scope-email]] @@ -104,8 +116,20 @@ entries: redirect_uris: - matching_mode: strict url: https://localhost:8443/test/a/authentik/callback + redirect_uri_type: authorization - matching_mode: strict url: https://host.docker.internal:8443/test/a/authentik/callback + redirect_uri_type: authorization + - matching_mode: strict + url: https://localhost:8443/test/a/authentik/post_logout_redirect + redirect_uri_type: logout + - matching_mode: strict + url: https://host.docker.internal:8443/test/a/authentik/post_logout_redirect + redirect_uri_type: logout + grant_types: + - authorization_code + - implicit + - refresh_token property_mappings: - !Find [authentik_providers_oauth2.scopemapping, [managed, goauthentik.io/providers/oauth2/scope-openid]] - !Find [authentik_providers_oauth2.scopemapping, [managed, goauthentik.io/providers/oauth2/scope-email]] diff --git a/build.rs b/build.rs new file mode 100644 index 0000000000..dd6030f85c --- /dev/null +++ b/build.rs @@ -0,0 +1,6 @@ +fn main() { + #[cfg(feature = "core")] + { + pyo3_build_config::add_libpython_rpath_link_args(); + } +} diff --git a/cmd/server/healthcheck.go b/cmd/server/healthcheck.go index 2022197f61..9238310b52 100644 --- a/cmd/server/healthcheck.go +++ b/cmd/server/healthcheck.go @@ -7,9 +7,7 @@ import ( "net/http" "os" "path" - "strconv" "strings" - "syscall" log "github.com/sirupsen/logrus" "github.com/spf13/cobra" @@ -18,8 +16,6 @@ import ( "goauthentik.io/internal/web" ) -var workerPidFile = path.Join(os.TempDir(), "authentik-worker.pid") - var healthcheckCmd = &cobra.Command{ Use: "healthcheck", Run: func(cmd *cobra.Command, args []string) { @@ -30,10 +26,12 @@ var healthcheckCmd = &cobra.Command{ exitCode := 1 log.WithField("mode", mode).Debug("checking health") switch strings.ToLower(mode) { + case "allinone": + fallthrough case "server": - exitCode = checkServer() + exitCode = check(fmt.Sprintf("http://localhost%s-/health/live/", config.Get().Web.Path)) case "worker": - exitCode = checkWorker() + exitCode = check("http://localhost/-/health/live/") default: log.Warn("Invalid mode") } @@ -45,7 +43,7 @@ func init() { rootCmd.AddCommand(healthcheckCmd) } -func checkServer() int { +func check(url string) int { h := &http.Client{ Transport: utils.NewUserAgentTransport("goauthentik.io/healthcheck", &http.Transport{ @@ -55,7 +53,6 @@ func checkServer() int { }, ), } - url := fmt.Sprintf("http://localhost%s-/health/live/", config.Get().Web.Path) res, err := h.Head(url) if err != nil { log.WithError(err).Warning("failed to send healthcheck request") @@ -68,29 +65,3 @@ func checkServer() int { log.Debug("successfully checked health") return 0 } - -func checkWorker() int { - pidB, err := os.ReadFile(workerPidFile) - if err != nil { - log.WithError(err).Warning("failed to check worker PID file") - return 1 - } - pidS := strings.TrimSpace(string(pidB[:])) - pid, err := strconv.Atoi(pidS) - if err != nil { - log.WithError(err).Warning("failed to find worker process PID") - return 1 - } - process, err := os.FindProcess(pid) - if err != nil { - log.WithError(err).Warning("failed to find worker process") - return 1 - } - err = process.Signal(syscall.Signal(0)) - if err != nil { - log.WithError(err).Warning("failed to signal worker process") - return 1 - } - log.Info("successfully checked health") - return 0 -} diff --git a/cspell.config.jsonc b/cspell.config.jsonc index f71c0cd906..756275854d 100644 --- a/cspell.config.jsonc +++ b/cspell.config.jsonc @@ -90,10 +90,7 @@ { "name": "ConfSuffix", "description": "Variables with `conf` or `config` suffix", - "pattern": [ - "\\w+(conf|config)\\b", - "\\b(conf|config)\\w+" - ] + "pattern": ["\\w+(conf|config)\\b", "\\b(conf|config)\\w+"] } ], "ignoreRegExpList": [ @@ -141,7 +138,8 @@ "SshRsa", "UnicodeRef", "Email", - "HashStrings" + "HashStrings", + "AKQL" ], "languageSettings": [ { @@ -180,24 +178,16 @@ }, { "languageId": "python", - "dictionaries": [ - "en-x-authentik-python" - ], - "includeRegExpList": [ - "comments" - ] + "dictionaries": ["en-x-authentik-python"], + "includeRegExpList": ["comments"] }, { "languageId": "rust", - "dictionaries": [ - "en-x-authentik-rust" - ] + "dictionaries": ["en-x-authentik-rust"] }, { "languageId": "go", - "dictionaries": [ - "en-x-authentik-golang" - ] + "dictionaries": ["en-x-authentik-golang"] }, { "languageId": "makefile,toml,yaml", @@ -241,7 +231,9 @@ "schema.yml", // OpenAPI schema "./blueprints/schema.json", // Generated blueprint schema "custom-elements.json", // TypeScript custom element definitions - "./gen-*-api", // Generated API Client + "./packages/client-go", // Generated API Client + "./packages/client-rust/src", // Generated API Client + "./packages/client-ts/src", // Generated API Client "./schemas/**", // XML Schemas "./authentik/sources/**/schemas", // Source schemas "**vendored**", // Vendored files @@ -284,15 +276,16 @@ "htmlcov", // Coverage HTML output "coverage.txt", // Coverage text output //#endregion - //#region Media + //#region Media/Static "./data", // Media files "./media", // Legacy media files - "*.{png,jpg,pdf,svg}" // Binary files + "*.{png,jpg,pdf,svg}", // Binary files + "*dashboard.json" // Dashboards //#endregion ], "useGitignore": true, "features": { "weighted-suggestions": true - } - // "failFast": true, + }, + "failFast": true } diff --git a/go.mod b/go.mod index eded0b67af..ddd25cb75b 100644 --- a/go.mod +++ b/go.mod @@ -3,14 +3,14 @@ module goauthentik.io go 1.26.0 require ( - beryju.io/ldap v0.1.0 + beryju.io/ldap v0.2.1 beryju.io/radius-eap v0.1.0 github.com/avast/retry-go/v4 v4.7.0 - github.com/coreos/go-oidc/v3 v3.17.0 - github.com/getsentry/sentry-go v0.43.0 + github.com/coreos/go-oidc/v3 v3.18.0 + github.com/getsentry/sentry-go v0.46.2 github.com/go-http-utils/etag v0.0.0-20161124023236-513ea8f21eb1 github.com/go-ldap/ldap/v3 v3.4.13 - github.com/go-openapi/runtime v0.29.3 + github.com/go-openapi/runtime v0.29.5 github.com/golang-jwt/jwt/v5 v5.3.1 github.com/google/uuid v1.6.0 github.com/gorilla/handlers v1.5.2 @@ -18,19 +18,18 @@ require ( github.com/gorilla/securecookie v1.1.2 github.com/gorilla/sessions v1.4.0 github.com/gorilla/websocket v1.5.3 - github.com/grafana/pyroscope-go v1.2.7 - github.com/jackc/pgx/v5 v5.8.0 + github.com/grafana/pyroscope-go v1.2.8 + github.com/jackc/pgx/v5 v5.9.2 github.com/jellydator/ttlcache/v3 v3.4.0 github.com/mitchellh/mapstructure v1.5.0 github.com/nmcclain/asn1-ber v0.0.0-20170104154839-2661553a0484 - github.com/pires/go-proxyproto v0.11.0 + github.com/pires/go-proxyproto v0.12.0 github.com/prometheus/client_golang v1.23.2 github.com/sethvargo/go-envconfig v1.3.0 github.com/sirupsen/logrus v1.9.4 github.com/spf13/cobra v1.10.2 github.com/stretchr/testify v1.11.1 github.com/wwt/guac v1.3.2 - goauthentik.io/api/v3 v3.2026020.17-0.20260317190750-6ec0d12b221b golang.org/x/exp v0.0.0-20230210204819-062eb4c674ab golang.org/x/oauth2 v0.36.0 golang.org/x/sync v0.20.0 @@ -41,7 +40,7 @@ require ( ) require ( - github.com/Azure/go-ntlmssp v0.1.0 // indirect + github.com/Azure/go-ntlmssp v0.1.1 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/davecgh/go-spew v1.1.1 // indirect @@ -49,24 +48,24 @@ require ( github.com/go-asn1-ber/asn1-ber v1.5.8-0.20250403174932-29230038a667 // indirect github.com/go-http-utils/fresh v0.0.0-20161124030543-7231e26a4b27 // indirect github.com/go-http-utils/headers v0.0.0-20181008091004-fed159eddc2a // indirect - github.com/go-jose/go-jose/v4 v4.1.3 // indirect + github.com/go-jose/go-jose/v4 v4.1.4 // indirect github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect - github.com/go-openapi/analysis v0.24.3 // indirect + github.com/go-openapi/analysis v0.25.0 // indirect github.com/go-openapi/errors v0.22.7 // indirect github.com/go-openapi/jsonpointer v0.22.5 // indirect github.com/go-openapi/jsonreference v0.21.5 // indirect github.com/go-openapi/loads v0.23.3 // indirect github.com/go-openapi/spec v0.22.4 // indirect - github.com/go-openapi/strfmt v0.26.0 // indirect - github.com/go-openapi/swag/conv v0.25.5 // indirect - github.com/go-openapi/swag/fileutils v0.25.5 // indirect + github.com/go-openapi/strfmt v0.26.2 // indirect + github.com/go-openapi/swag/conv v0.26.0 // indirect + github.com/go-openapi/swag/fileutils v0.26.0 // indirect github.com/go-openapi/swag/jsonname v0.25.5 // indirect - github.com/go-openapi/swag/jsonutils v0.25.5 // indirect + github.com/go-openapi/swag/jsonutils v0.26.0 // indirect github.com/go-openapi/swag/loading v0.25.5 // indirect github.com/go-openapi/swag/mangling v0.25.5 // indirect - github.com/go-openapi/swag/stringutils v0.25.5 // indirect - github.com/go-openapi/swag/typeutils v0.25.5 // indirect + github.com/go-openapi/swag/stringutils v0.26.0 // indirect + github.com/go-openapi/swag/typeutils v0.26.0 // indirect github.com/go-openapi/swag/yamlutils v0.25.5 // indirect github.com/go-openapi/validate v0.25.2 // indirect github.com/go-viper/mapstructure/v2 v2.5.0 // indirect @@ -86,15 +85,15 @@ require ( github.com/prometheus/procfs v0.16.1 // indirect github.com/spf13/pflag v1.0.9 // indirect go.opentelemetry.io/auto/sdk v1.2.1 // indirect - go.opentelemetry.io/otel v1.41.0 // indirect - go.opentelemetry.io/otel/metric v1.41.0 // indirect - go.opentelemetry.io/otel/trace v1.41.0 // indirect + go.opentelemetry.io/otel v1.43.0 // indirect + go.opentelemetry.io/otel/metric v1.43.0 // indirect + go.opentelemetry.io/otel/trace v1.43.0 // indirect go.yaml.in/yaml/v2 v2.4.2 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect - golang.org/x/crypto v0.48.0 // indirect - golang.org/x/net v0.50.0 // indirect - golang.org/x/sys v0.41.0 // indirect - golang.org/x/text v0.34.0 // indirect + golang.org/x/crypto v0.50.0 // indirect + golang.org/x/net v0.53.0 // indirect + golang.org/x/sys v0.43.0 // indirect + golang.org/x/text v0.36.0 // indirect google.golang.org/protobuf v1.36.8 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index 5b09bbbc8b..c43c334124 100644 --- a/go.sum +++ b/go.sum @@ -1,9 +1,9 @@ -beryju.io/ldap v0.1.0 h1:rPjGE3qR1Klbvn9N+iECWdzt/tK87XHgz8W5wZJg9B8= -beryju.io/ldap v0.1.0/go.mod h1:sOrYV+ZlDTDu/IvIiEiuAaXzjcpMBE+XXr4V+NJ0pWI= +beryju.io/ldap v0.2.1 h1:rhTAP2CXqrKZy/UycLC/aPSSBMcgJMzooKqk3TwVFxY= +beryju.io/ldap v0.2.1/go.mod h1:GJSw3pVOON/3+L5att3Eysmj7j0GmjLvA6/WNmPajD4= beryju.io/radius-eap v0.1.0 h1:5M3HwkzH3nIEBcKDA2z5+sb4nCY3WdKL/SDDKTBvoqw= beryju.io/radius-eap v0.1.0/go.mod h1:yYtO59iyoLNEepdyp1gZ0i1tGdjPbrR2M/v5yOz7Fkc= -github.com/Azure/go-ntlmssp v0.1.0 h1:DjFo6YtWzNqNvQdrwEyr/e4nhU3vRiwenz5QX7sFz+A= -github.com/Azure/go-ntlmssp v0.1.0/go.mod h1:NYqdhxd/8aAct/s4qSYZEerdPuH1liG2/X9DiVTbhpk= +github.com/Azure/go-ntlmssp v0.1.1 h1:l+FM/EEMb0U9QZE7mKNEDw5Mu3mFiaa2GKOoTSsNDPw= +github.com/Azure/go-ntlmssp v0.1.1/go.mod h1:NYqdhxd/8aAct/s4qSYZEerdPuH1liG2/X9DiVTbhpk= github.com/alexbrainman/sspi v0.0.0-20250919150558-7d374ff0d59e h1:4dAU9FXIyQktpoUAgOJK3OTFc/xug0PCXYCqU0FgDKI= github.com/alexbrainman/sspi v0.0.0-20250919150558-7d374ff0d59e/go.mod h1:cEWa1LVoE5KvSD9ONXsZrj0z6KqySlCCNKHlLzbqAt4= github.com/avast/retry-go/v4 v4.7.0 h1:yjDs35SlGvKwRNSykujfjdMxMhMQQM0TnIjJaHB+Zio= @@ -12,16 +12,16 @@ github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/coreos/go-oidc/v3 v3.17.0 h1:hWBGaQfbi0iVviX4ibC7bk8OKT5qNr4klBaCHVNvehc= -github.com/coreos/go-oidc/v3 v3.17.0/go.mod h1:wqPbKFrVnE90vty060SB40FCJ8fTHTxSwyXJqZH+sI8= +github.com/coreos/go-oidc/v3 v3.18.0 h1:V9orjXynvu5wiC9SemFTWnG4F45v403aIcjWo0d41+A= +github.com/coreos/go-oidc/v3 v3.18.0/go.mod h1:DYCf24+ncYi+XkIH97GY1+dqoRlbaSI26KVTCI9SrY4= github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/felixge/httpsnoop v1.0.3 h1:s/nj+GCswXYzN5v2DpNMuMQYe+0DDwt5WVCU6CWBdXk= github.com/felixge/httpsnoop v1.0.3/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= -github.com/getsentry/sentry-go v0.43.0 h1:XbXLpFicpo8HmBDaInk7dum18G9KSLcjZiyUKS+hLW4= -github.com/getsentry/sentry-go v0.43.0/go.mod h1:XDotiNZbgf5U8bPDUAfvcFmOnMQQceESxyKaObSssW0= +github.com/getsentry/sentry-go v0.46.2 h1:1jhYwrKGa3sIpo/y5iDNXS5wDoT7I1KNzMHrnK6ojns= +github.com/getsentry/sentry-go v0.46.2/go.mod h1:evVbw2qotNUdYG8KxXbAdjOQWWvWIwKxpjdZZIvcIPw= github.com/go-asn1-ber/asn1-ber v1.5.8-0.20250403174932-29230038a667 h1:BP4M0CvQ4S3TGls2FvczZtj5Re/2ZzkV9VwqPHH/3Bo= github.com/go-asn1-ber/asn1-ber v1.5.8-0.20250403174932-29230038a667/go.mod h1:hEBeB/ic+5LoWskz+yKT7vGhhPYkProFKoKdwZRWMe0= github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= @@ -32,8 +32,8 @@ github.com/go-http-utils/fresh v0.0.0-20161124030543-7231e26a4b27 h1:O6yi4xa9b2D github.com/go-http-utils/fresh v0.0.0-20161124030543-7231e26a4b27/go.mod h1:AYvN8omj7nKLmbcXS2dyABYU6JB1Lz1bHmkkq1kf4I4= github.com/go-http-utils/headers v0.0.0-20181008091004-fed159eddc2a h1:v6zMvHuY9yue4+QkG/HQ/W67wvtQmWJ4SDo9aK/GIno= github.com/go-http-utils/headers v0.0.0-20181008091004-fed159eddc2a/go.mod h1:I79BieaU4fxrw4LMXby6q5OS9XnoR9UIKLOzDFjUmuw= -github.com/go-jose/go-jose/v4 v4.1.3 h1:CVLmWDhDVRa6Mi/IgCgaopNosCaHz7zrMeF9MlZRkrs= -github.com/go-jose/go-jose/v4 v4.1.3/go.mod h1:x4oUasVrzR7071A4TnHLGSPpNOm2a21K9Kf04k1rs08= +github.com/go-jose/go-jose/v4 v4.1.4 h1:moDMcTHmvE6Groj34emNPLs/qtYXRVcd6S7NHbHz3kA= +github.com/go-jose/go-jose/v4 v4.1.4/go.mod h1:x4oUasVrzR7071A4TnHLGSPpNOm2a21K9Kf04k1rs08= github.com/go-ldap/ldap/v3 v3.4.13 h1:+x1nG9h+MZN7h/lUi5Q3UZ0fJ1GyDQYbPvbuH38baDQ= github.com/go-ldap/ldap/v3 v3.4.13/go.mod h1:LxsGZV6vbaK0sIvYfsv47rfh4ca0JXokCoKjZxsszv0= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= @@ -41,8 +41,8 @@ github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= -github.com/go-openapi/analysis v0.24.3 h1:a1hrvMr8X0Xt69KP5uVTu5jH62DscmDifrLzNglAayk= -github.com/go-openapi/analysis v0.24.3/go.mod h1:Nc+dWJ/FxZbhSow5Yh3ozg5CLJioB+XXT6MdLvJUsUw= +github.com/go-openapi/analysis v0.25.0 h1:EnjAq1yO8wEO9HbPmY8vLPEIkdZuuFhCAKBPvCB7bCs= +github.com/go-openapi/analysis v0.25.0/go.mod h1:5WFTRE43WLkPG9r9OtlMfqkkvUTYLVVCIxLlEpyF8kE= github.com/go-openapi/errors v0.22.7 h1:JLFBGC0Apwdzw3484MmBqspjPbwa2SHvpDm0u5aGhUA= github.com/go-openapi/errors v0.22.7/go.mod h1://QW6SD9OsWtH6gHllUCddOXDL0tk0ZGNYHwsw4sW3w= github.com/go-openapi/jsonpointer v0.22.5 h1:8on/0Yp4uTb9f4XvTrM2+1CPrV05QPZXu+rvu2o9jcA= @@ -51,36 +51,36 @@ github.com/go-openapi/jsonreference v0.21.5 h1:6uCGVXU/aNF13AQNggxfysJ+5ZcU4nEAe github.com/go-openapi/jsonreference v0.21.5/go.mod h1:u25Bw85sX4E2jzFodh1FOKMTZLcfifd1Q+iKKOUxExw= github.com/go-openapi/loads v0.23.3 h1:g5Xap1JfwKkUnZdn+S0L3SzBDpcTIYzZ5Qaag0YDkKQ= github.com/go-openapi/loads v0.23.3/go.mod h1:NOH07zLajXo8y55hom0omlHWDVVvCwBM/S+csCK8LqA= -github.com/go-openapi/runtime v0.29.3 h1:h5twGaEqxtQg40ePiYm9vFFH1q06Czd7Ot6ufdK0w/Y= -github.com/go-openapi/runtime v0.29.3/go.mod h1:8A1W0/L5eyNJvKciqZtvIVQvYO66NlB7INMSZ9bw/oI= +github.com/go-openapi/runtime v0.29.5 h1:uc5+/TtqLIfDBTUxnF3uppoGMt+9DzonwUWsviINlrY= +github.com/go-openapi/runtime v0.29.5/go.mod h1:D9IUbWccdYv+km8QwmAm90FZvDcQk47vP2Y7y5as/D8= github.com/go-openapi/spec v0.22.4 h1:4pxGjipMKu0FzFiu/DPwN3CTBRlVM2yLf/YTWorYfDQ= github.com/go-openapi/spec v0.22.4/go.mod h1:WQ6Ai0VPWMZgMT4XySjlRIE6GP1bGQOtEThn3gcWLtQ= -github.com/go-openapi/strfmt v0.26.0 h1:SDdQLyOEqu8W96rO1FRG1fuCtVyzmukky0zcD6gMGLU= -github.com/go-openapi/strfmt v0.26.0/go.mod h1:Zslk5VZPOISLwmWTMBIS7oiVFem1o1EI6zULY8Uer7Y= -github.com/go-openapi/swag/conv v0.25.5 h1:wAXBYEXJjoKwE5+vc9YHhpQOFj2JYBMF2DUi+tGu97g= -github.com/go-openapi/swag/conv v0.25.5/go.mod h1:CuJ1eWvh1c4ORKx7unQnFGyvBbNlRKbnRyAvDvzWA4k= -github.com/go-openapi/swag/fileutils v0.25.5 h1:B6JTdOcs2c0dBIs9HnkyTW+5gC+8NIhVBUwERkFhMWk= -github.com/go-openapi/swag/fileutils v0.25.5/go.mod h1:V3cT9UdMQIaH4WiTrUc9EPtVA4txS0TOmRURmhGF4kc= +github.com/go-openapi/strfmt v0.26.2 h1:ysjheCh4i1rmFEo2LanhELDNucNzfWTZhUDKgWWPaFM= +github.com/go-openapi/strfmt v0.26.2/go.mod h1:fXh1e449cyUn2NYuz+wb3wARBUdMl7qPEZwX00nqivY= +github.com/go-openapi/swag/conv v0.26.0 h1:5yGGsPYI1ZCva93U0AoKi/iZrNhaJEjr324YVsiD89I= +github.com/go-openapi/swag/conv v0.26.0/go.mod h1:tpAmIL7X58VPnHHiSO4uE3jBeRamGsFsfdDeDtb5ECE= +github.com/go-openapi/swag/fileutils v0.26.0 h1:WJoPRvsA7QRiiWluowkLJa9jaYR7FCuxmDvnCgaRRxU= +github.com/go-openapi/swag/fileutils v0.26.0/go.mod h1:0WDJ7lp67eNjPMO50wAWYlKvhOb6CQ37rzR7wrgI8Tc= github.com/go-openapi/swag/jsonname v0.25.5 h1:8p150i44rv/Drip4vWI3kGi9+4W9TdI3US3uUYSFhSo= github.com/go-openapi/swag/jsonname v0.25.5/go.mod h1:jNqqikyiAK56uS7n8sLkdaNY/uq6+D2m2LANat09pKU= -github.com/go-openapi/swag/jsonutils v0.25.5 h1:XUZF8awQr75MXeC+/iaw5usY/iM7nXPDwdG3Jbl9vYo= -github.com/go-openapi/swag/jsonutils v0.25.5/go.mod h1:48FXUaz8YsDAA9s5AnaUvAmry1UcLcNVWUjY42XkrN4= -github.com/go-openapi/swag/jsonutils/fixtures_test v0.25.5 h1:SX6sE4FrGb4sEnnxbFL/25yZBb5Hcg1inLeErd86Y1U= -github.com/go-openapi/swag/jsonutils/fixtures_test v0.25.5/go.mod h1:/2KvOTrKWjVA5Xli3DZWdMCZDzz3uV/T7bXwrKWPquo= +github.com/go-openapi/swag/jsonutils v0.26.0 h1:FawFML2iAXsPqmERscuMPIHmFsoP1tOqWkxBaKNMsnA= +github.com/go-openapi/swag/jsonutils v0.26.0/go.mod h1:2VmA0CJlyFqgawOaPI9psnjFDqzyivIqLYN34t9p91E= +github.com/go-openapi/swag/jsonutils/fixtures_test v0.26.0 h1:apqeINu/ICHouqiRZbyFvuDge5jCmmLTqGQ9V95EaOM= +github.com/go-openapi/swag/jsonutils/fixtures_test v0.26.0/go.mod h1:AyM6QT8uz5IdKxk5akv0y6u4QvcL9GWERt0Jx/F/R8Y= github.com/go-openapi/swag/loading v0.25.5 h1:odQ/umlIZ1ZVRteI6ckSrvP6e2w9UTF5qgNdemJHjuU= github.com/go-openapi/swag/loading v0.25.5/go.mod h1:I8A8RaaQ4DApxhPSWLNYWh9NvmX2YKMoB9nwvv6oW6g= github.com/go-openapi/swag/mangling v0.25.5 h1:hyrnvbQRS7vKePQPHHDso+k6CGn5ZBs5232UqWZmJZw= github.com/go-openapi/swag/mangling v0.25.5/go.mod h1:6hadXM/o312N/h98RwByLg088U61TPGiltQn71Iw0NY= -github.com/go-openapi/swag/stringutils v0.25.5 h1:NVkoDOA8YBgtAR/zvCx5rhJKtZF3IzXcDdwOsYzrB6M= -github.com/go-openapi/swag/stringutils v0.25.5/go.mod h1:PKK8EZdu4QJq8iezt17HM8RXnLAzY7gW0O1KKarrZII= -github.com/go-openapi/swag/typeutils v0.25.5 h1:EFJ+PCga2HfHGdo8s8VJXEVbeXRCYwzzr9u4rJk7L7E= -github.com/go-openapi/swag/typeutils v0.25.5/go.mod h1:itmFmScAYE1bSD8C4rS0W+0InZUBrB2xSPbWt6DLGuc= +github.com/go-openapi/swag/stringutils v0.26.0 h1:qZQngLxs5s7SLijc3N2ZO+fUq2o8LjuWAASSrJuh+xg= +github.com/go-openapi/swag/stringutils v0.26.0/go.mod h1:sWn5uY+QIIspwPhvgnqJsH8xqFT2ZbYcvbcFanRyhFE= +github.com/go-openapi/swag/typeutils v0.26.0 h1:2kdEwdiNWy+JJdOvu5MA2IIg2SylWAFuuyQIKYybfq4= +github.com/go-openapi/swag/typeutils v0.26.0/go.mod h1:oovDuIUvTrEHVMqWilQzKzV4YlSKgyZmFh7AlfABNVE= github.com/go-openapi/swag/yamlutils v0.25.5 h1:kASCIS+oIeoc55j28T4o8KwlV2S4ZLPT6G0iq2SSbVQ= github.com/go-openapi/swag/yamlutils v0.25.5/go.mod h1:Gek1/SjjfbYvM+Iq4QGwa/2lEXde9n2j4a3wI3pNuOQ= -github.com/go-openapi/testify/enable/yaml/v2 v2.4.1 h1:NZOrZmIb6PTv5LTFxr5/mKV/FjbUzGE7E6gLz7vFoOQ= -github.com/go-openapi/testify/enable/yaml/v2 v2.4.1/go.mod h1:r7dwsujEHawapMsxA69i+XMGZrQ5tRauhLAjV/sxg3Q= -github.com/go-openapi/testify/v2 v2.4.1 h1:zB34HDKj4tHwyUQHrUkpV0Q0iXQ6dUCOQtIqn8hE6Iw= -github.com/go-openapi/testify/v2 v2.4.1/go.mod h1:HCPmvFFnheKK2BuwSA0TbbdxJ3I16pjwMkYkP4Ywn54= +github.com/go-openapi/testify/enable/yaml/v2 v2.5.0 h1:3hZD1fwydvCx/cc1R2uYNQirHqf2s6lqpKV3FcNTURA= +github.com/go-openapi/testify/enable/yaml/v2 v2.5.0/go.mod h1:TvDZKBH7ZbMaF3EqH2AwTvNQCmzyZq8K1agRjf1B+Nk= +github.com/go-openapi/testify/v2 v2.5.0 h1:UOCr63aAsMIDydZbZGqo5Ev01D4eydItRbekDuZMJLw= +github.com/go-openapi/testify/v2 v2.5.0/go.mod h1:SgsVHtfooshd0tublTtJ50FPKhujf47YRqauXXOUxfw= github.com/go-openapi/validate v0.25.2 h1:12NsfLAwGegqbGWr2CnvT65X/Q2USJipmJ9b7xDJZz0= github.com/go-openapi/validate v0.25.2/go.mod h1:Pgl1LpPPGFnZ+ys4/hTlDiRYQdI1ocKypgE+8Q8BLfY= github.com/go-viper/mapstructure/v2 v2.5.0 h1:vM5IJoUAy3d7zRSVtIwQgBj7BiWtMPfmPEgAXnvj1Ro= @@ -105,8 +105,8 @@ github.com/gorilla/sessions v1.4.0/go.mod h1:FLWm50oby91+hl7p/wRxDth9bWSuk0qVL2e github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg= github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/grafana/pyroscope-go v1.2.7 h1:VWBBlqxjyR0Cwk2W6UrE8CdcdD80GOFNutj0Kb1T8ac= -github.com/grafana/pyroscope-go v1.2.7/go.mod h1:o/bpSLiJYYP6HQtvcoVKiE9s5RiNgjYTj1DhiddP2Pc= +github.com/grafana/pyroscope-go v1.2.8 h1:UvCwIhlx9DeV7F6TW/z8q1Mi4PIm3vuUJ2ZlCEvmA4M= +github.com/grafana/pyroscope-go v1.2.8/go.mod h1:SSi59eQ1/zmKoY/BKwa5rSFsJaq+242Bcrr4wPix1g8= github.com/grafana/pyroscope-go/godeltaprof v0.1.9 h1:c1Us8i6eSmkW+Ez05d3co8kasnuOY813tbMN8i/a3Og= github.com/grafana/pyroscope-go/godeltaprof v0.1.9/go.mod h1:2+l7K7twW49Ct4wFluZD3tZ6e0SjanjcUUBPVD/UuGU= github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8= @@ -117,8 +117,8 @@ github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsI github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 h1:iCEnooe7UlwOQYpKFhBabPMi4aNAfoODPEFNiAnClxo= github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM= -github.com/jackc/pgx/v5 v5.8.0 h1:TYPDoleBBme0xGSAX3/+NujXXtpZn9HBONkQC7IEZSo= -github.com/jackc/pgx/v5 v5.8.0/go.mod h1:QVeDInX2m9VyzvNeiCJVjCkNFqzsNb43204HshNSZKw= +github.com/jackc/pgx/v5 v5.9.2 h1:3ZhOzMWnR4yJ+RW1XImIPsD1aNSz4T4fyP7zlQb56hw= +github.com/jackc/pgx/v5 v5.9.2/go.mod h1:mal1tBGAFfLHvZzaYh77YS/eC6IX9OWbRV1QIIM0Jn4= github.com/jackc/puddle/v2 v2.2.2 h1:PR8nw+E/1w0GLuRFSmiioY6UooMp6KJv0/61nB7icHo= github.com/jackc/puddle/v2 v2.2.2/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4= github.com/jcmturner/aescts/v2 v2.0.0 h1:9YKLH6ey7H4eDBXW8khjYslgyqG2xZikXP0EQFKrle8= @@ -159,8 +159,8 @@ github.com/oklog/ulid/v2 v2.1.1/go.mod h1:rcEKHmBBKfef9DhnvX7y1HZBYxjXb0cP5ExxNs github.com/pborman/getopt v0.0.0-20170112200414-7148bc3a4c30/go.mod h1:85jBQOZwpVEaDAr341tbn15RS4fCAsIst0qp7i8ex1o= github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= -github.com/pires/go-proxyproto v0.11.0 h1:gUQpS85X/VJMdUsYyEgyn59uLJvGqPhJV5YvG68wXH4= -github.com/pires/go-proxyproto v0.11.0/go.mod h1:ZKAAyp3cgy5Y5Mo4n9AlScrkCZwUy0g3Jf+slqQVcuU= +github.com/pires/go-proxyproto v0.12.0 h1:TTCxD66dU898tahivkqc3hoceZp7P44FnorWyo9d5vM= +github.com/pires/go-proxyproto v0.12.0/go.mod h1:qUvfqUMEoX7T8g0q7TQLDnhMjdTrxnG0hvpMn+7ePNI= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= @@ -199,27 +199,25 @@ github.com/wwt/guac v1.3.2/go.mod h1:eKm+NrnK7A88l4UBEcYNpZQGMpZRryYKoz4D/0/n1C0 github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= -go.opentelemetry.io/otel v1.41.0 h1:YlEwVsGAlCvczDILpUXpIpPSL/VPugt7zHThEMLce1c= -go.opentelemetry.io/otel v1.41.0/go.mod h1:Yt4UwgEKeT05QbLwbyHXEwhnjxNO6D8L5PQP51/46dE= -go.opentelemetry.io/otel/metric v1.41.0 h1:rFnDcs4gRzBcsO9tS8LCpgR0dxg4aaxWlJxCno7JlTQ= -go.opentelemetry.io/otel/metric v1.41.0/go.mod h1:xPvCwd9pU0VN8tPZYzDZV/BMj9CM9vs00GuBjeKhJps= -go.opentelemetry.io/otel/sdk v1.41.0 h1:YPIEXKmiAwkGl3Gu1huk1aYWwtpRLeskpV+wPisxBp8= -go.opentelemetry.io/otel/sdk v1.41.0/go.mod h1:ahFdU0G5y8IxglBf0QBJXgSe7agzjE4GiTJ6HT9ud90= -go.opentelemetry.io/otel/trace v1.41.0 h1:Vbk2co6bhj8L59ZJ6/xFTskY+tGAbOnCtQGVVa9TIN0= -go.opentelemetry.io/otel/trace v1.41.0/go.mod h1:U1NU4ULCoxeDKc09yCWdWe+3QoyweJcISEVa1RBzOis= +go.opentelemetry.io/otel v1.43.0 h1:mYIM03dnh5zfN7HautFE4ieIig9amkNANT+xcVxAj9I= +go.opentelemetry.io/otel v1.43.0/go.mod h1:JuG+u74mvjvcm8vj8pI5XiHy1zDeoCS2LB1spIq7Ay0= +go.opentelemetry.io/otel/metric v1.43.0 h1:d7638QeInOnuwOONPp4JAOGfbCEpYb+K6DVWvdxGzgM= +go.opentelemetry.io/otel/metric v1.43.0/go.mod h1:RDnPtIxvqlgO8GRW18W6Z/4P462ldprJtfxHxyKd2PY= +go.opentelemetry.io/otel/sdk v1.43.0 h1:pi5mE86i5rTeLXqoF/hhiBtUNcrAGHLKQdhg4h4V9Dg= +go.opentelemetry.io/otel/sdk v1.43.0/go.mod h1:P+IkVU3iWukmiit/Yf9AWvpyRDlUeBaRg6Y+C58QHzg= +go.opentelemetry.io/otel/trace v1.43.0 h1:BkNrHpup+4k4w+ZZ86CZoHHEkohws8AY+WTX09nk+3A= +go.opentelemetry.io/otel/trace v1.43.0/go.mod h1:/QJhyVBUUswCphDVxq+8mld+AvhXZLhe+8WVFxiFff0= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI= go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU= go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= -goauthentik.io/api/v3 v3.2026020.17-0.20260317190750-6ec0d12b221b h1:p+iDEXjvC15pC1VscaR59Vud9/c/xeNeTFmlv4arkNI= -goauthentik.io/api/v3 v3.2026020.17-0.20260317190750-6ec0d12b221b/go.mod h1:uYa+yGMglhJy8ymyUQ8KQiJjOb3UZTuPQ24Ot2s9BCo= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= -golang.org/x/crypto v0.48.0 h1:/VRzVqiRSggnhY7gNRxPauEQ5Drw9haKdM0jqfcCFts= -golang.org/x/crypto v0.48.0/go.mod h1:r0kV5h3qnFPlQnBSrULhlsRfryS2pmewsg+XfMgkVos= +golang.org/x/crypto v0.50.0 h1:zO47/JPrL6vsNkINmLoo/PH1gcxpls50DNogFvB5ZGI= +golang.org/x/crypto v0.50.0/go.mod h1:3muZ7vA7PBCE6xgPX7nkzzjiUq87kRItoJQM1Yo8S+Q= golang.org/x/exp v0.0.0-20230210204819-062eb4c674ab h1:628ME69lBm9C6JY2wXhAph/yjN3jezx1z7BIDLUwxjo= golang.org/x/exp v0.0.0-20230210204819-062eb4c674ab/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= @@ -229,8 +227,8 @@ golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= -golang.org/x/net v0.50.0 h1:ucWh9eiCGyDR3vtzso0WMQinm2Dnt8cFMuQa9K33J60= -golang.org/x/net v0.50.0/go.mod h1:UgoSli3F/pBgdJBHCTc+tp3gmrU4XswgGRgtnwWTfyM= +golang.org/x/net v0.53.0 h1:d+qAbo5L0orcWAr0a9JweQpjXF19LMXJE8Ey7hwOdUA= +golang.org/x/net v0.53.0/go.mod h1:JvMuJH7rrdiCfbeHoo3fCQU24Lf5JJwT9W3sJFulfgs= golang.org/x/oauth2 v0.36.0 h1:peZ/1z27fi9hUOFCAZaHyrpWG5lwe0RJEEEeH0ThlIs= golang.org/x/oauth2 v0.36.0/go.mod h1:YDBUJMTkDnJS+A4BP4eZBjCqtokkg1hODuPjwiGPO7Q= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -247,8 +245,8 @@ golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= -golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.43.0 h1:Rlag2XtaFTxp19wS8MXlJwTvoh8ArU6ezoyFsMyCTNI= +golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= @@ -260,8 +258,8 @@ golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= -golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk= -golang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA= +golang.org/x/text v0.36.0 h1:JfKh3XmcRPqZPKevfXVpI1wXPTqbkE5f7JA92a55Yxg= +golang.org/x/text v0.36.0/go.mod h1:NIdBknypM8iqVmPiuco0Dh6P5Jcdk8lJL0CUebqK164= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= diff --git a/internal/config/struct.go b/internal/config/struct.go index f373ff2225..1708844e55 100644 --- a/internal/config/struct.go +++ b/internal/config/struct.go @@ -16,6 +16,7 @@ type Config struct { Listen ListenConfig `yaml:"listen" env:", prefix=AUTHENTIK_LISTEN__"` Web WebConfig `yaml:"web" env:", prefix=AUTHENTIK_WEB__"` Log LogConfig `yaml:"log" env:", prefix=AUTHENTIK_LOG__"` + LDAP LDAPConfig `yaml:"ldap" env:", prefix=AUTHENTIK_LDAP__"` // Outpost specific config // These are only relevant for proxy/ldap outposts, and cannot be set via YAML @@ -114,3 +115,7 @@ type WebConfig struct { type LogConfig struct { HttpHeaders []string `yaml:"http_headers" env:"HTTP_HEADERS, overwrite"` } + +type LDAPConfig struct { + PageSize int `yaml:"page_size" env:"PAGE_SIZE, overwrite"` +} diff --git a/internal/constants/VERSION b/internal/constants/VERSION index 7c3fd22494..292069a8f2 100644 --- a/internal/constants/VERSION +++ b/internal/constants/VERSION @@ -1 +1 @@ -2026.5.0-rc1 \ No newline at end of file +2026.8.0-rc1 \ No newline at end of file diff --git a/internal/outpost/ak/api.go b/internal/outpost/ak/api.go index 1448e10e1d..083fd66c9c 100644 --- a/internal/outpost/ak/api.go +++ b/internal/outpost/ak/api.go @@ -11,6 +11,7 @@ import ( "os" "os/signal" "runtime" + "sync" "syscall" "time" @@ -21,10 +22,10 @@ import ( "github.com/prometheus/client_golang/prometheus" log "github.com/sirupsen/logrus" - "goauthentik.io/api/v3" "goauthentik.io/internal/constants" cryptobackend "goauthentik.io/internal/crypto/backend" "goauthentik.io/internal/utils/web" + api "goauthentik.io/packages/client-go" ) const ConfigLogLevel = "log_level" @@ -45,6 +46,7 @@ type APIController struct { reloadOffset time.Duration eventConn *websocket.Conn + eventConnMu sync.Mutex lastWsReconnect time.Time wsIsReconnecting bool eventHandlers []EventHandler diff --git a/internal/outpost/ak/api_event.go b/internal/outpost/ak/api_event.go index 3bc64664f3..b9dd0901a6 100644 --- a/internal/outpost/ak/api_event.go +++ b/internal/outpost/ak/api_event.go @@ -77,7 +77,12 @@ func (ac *APIController) initEvent(outpostUUID string, attempt int) error { Instruction: EventKindHello, Args: ac.getEventPingArgs(), } + // Serialize this write against concurrent SendEventHello callers (health + // ticker, RAC handlers) sharing the same *websocket.Conn. Gorilla's Conn + // does not permit concurrent writes. + ac.eventConnMu.Lock() err = ws.WriteJSON(msg) + ac.eventConnMu.Unlock() if err != nil { ac.logger.WithField("logger", "authentik.outpost.events").WithError(err).Warning("Failed to hello to authentik") return err @@ -91,7 +96,9 @@ func (ac *APIController) initEvent(outpostUUID string, attempt int) error { func (ac *APIController) Shutdown() { // Cleanly close the connection by sending a close message and then // waiting (with timeout) for the server to close the connection. + ac.eventConnMu.Lock() err := ac.eventConn.WriteMessage(websocket.CloseMessage, websocket.FormatCloseMessage(websocket.CloseNormalClosure, "")) + ac.eventConnMu.Unlock() if err != nil { ac.logger.WithError(err).Warning("failed to write close message") return @@ -252,6 +259,10 @@ func (a *APIController) SendEventHello(args map[string]any) error { Instruction: EventKindHello, Args: allArgs, } + // Gorilla *websocket.Conn does not permit concurrent writes. This method + // is invoked from the health ticker and from RAC session handlers. + a.eventConnMu.Lock() err := a.eventConn.WriteJSON(aliveMsg) + a.eventConnMu.Unlock() return err } diff --git a/internal/outpost/ak/api_utils.go b/internal/outpost/ak/api_utils.go index b4ba8f57d3..e06575949f 100644 --- a/internal/outpost/ak/api_utils.go +++ b/internal/outpost/ak/api_utils.go @@ -5,7 +5,7 @@ import ( "net/http" log "github.com/sirupsen/logrus" - "goauthentik.io/api/v3" + api "goauthentik.io/packages/client-go" ) // Generic interface that mimics a generated request by the API client diff --git a/internal/outpost/ak/api_utils_test.go b/internal/outpost/ak/api_utils_test.go index 7ee84e13f4..74278dac12 100644 --- a/internal/outpost/ak/api_utils_test.go +++ b/internal/outpost/ak/api_utils_test.go @@ -6,7 +6,7 @@ import ( "testing" "github.com/stretchr/testify/assert" - "goauthentik.io/api/v3" + api "goauthentik.io/packages/client-go" ) type fakeAPIType struct{} diff --git a/internal/outpost/ak/crypto.go b/internal/outpost/ak/crypto.go index 4649c505db..10fb8d5d2e 100644 --- a/internal/outpost/ak/crypto.go +++ b/internal/outpost/ak/crypto.go @@ -7,7 +7,7 @@ import ( "encoding/pem" log "github.com/sirupsen/logrus" - "goauthentik.io/api/v3" + api "goauthentik.io/packages/client-go" ) type CryptoStore struct { diff --git a/internal/outpost/ak/global.go b/internal/outpost/ak/global.go index 46b483afe5..0e211c412d 100644 --- a/internal/outpost/ak/global.go +++ b/internal/outpost/ak/global.go @@ -7,11 +7,11 @@ import ( "github.com/getsentry/sentry-go" httptransport "github.com/go-openapi/runtime/client" log "github.com/sirupsen/logrus" - "goauthentik.io/api/v3" "goauthentik.io/internal/config" "goauthentik.io/internal/constants" sentryutils "goauthentik.io/internal/utils/sentry" webutils "goauthentik.io/internal/utils/web" + api "goauthentik.io/packages/client-go" ) var ( diff --git a/internal/outpost/ak/metrics.go b/internal/outpost/ak/metrics.go index c980072af8..dc2fccbc17 100644 --- a/internal/outpost/ak/metrics.go +++ b/internal/outpost/ak/metrics.go @@ -52,6 +52,7 @@ func RunMetricsServer(listen string, router *mux.Router) { func RunMetricsUnix(router *mux.Router) { socketPath := path.Join(os.TempDir(), MetricsSocketName) l := log.WithField("logger", "authentik.outpost.metrics").WithField("listen", socketPath) + _ = os.Remove(socketPath) ln, err := unix.Listen(socketPath) if err != nil { l.WithError(err).Warning("failed to listen") @@ -59,6 +60,7 @@ func RunMetricsUnix(router *mux.Router) { } defer func() { err := ln.Close() + _ = os.Remove(socketPath) if err != nil { l.WithError(err).Warning("failed to close listener") } diff --git a/internal/outpost/ak/test.go b/internal/outpost/ak/test.go index 4de4642a76..a143a3b565 100644 --- a/internal/outpost/ak/test.go +++ b/internal/outpost/ak/test.go @@ -10,7 +10,7 @@ import ( "github.com/google/uuid" "github.com/gorilla/securecookie" log "github.com/sirupsen/logrus" - "goauthentik.io/api/v3" + api "goauthentik.io/packages/client-go" ) func TestSecret() string { diff --git a/internal/outpost/flow/executor.go b/internal/outpost/flow/executor.go index 369cb8c08c..26c0ea82fe 100644 --- a/internal/outpost/flow/executor.go +++ b/internal/outpost/flow/executor.go @@ -14,10 +14,10 @@ import ( "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/client_golang/prometheus/promauto" log "github.com/sirupsen/logrus" - "goauthentik.io/api/v3" "goauthentik.io/internal/constants" "goauthentik.io/internal/outpost/ak" "goauthentik.io/internal/utils/web" + api "goauthentik.io/packages/client-go" ) var ( diff --git a/internal/outpost/flow/executor_test.go b/internal/outpost/flow/executor_test.go index 0e416eb26f..29a23270f7 100644 --- a/internal/outpost/flow/executor_test.go +++ b/internal/outpost/flow/executor_test.go @@ -4,7 +4,7 @@ import ( "testing" "github.com/stretchr/testify/assert" - "goauthentik.io/api/v3" + api "goauthentik.io/packages/client-go" ) func TestConvert(t *testing.T) { diff --git a/internal/outpost/flow/session.go b/internal/outpost/flow/session.go index b4e458b8f7..5482faeaed 100644 --- a/internal/outpost/flow/session.go +++ b/internal/outpost/flow/session.go @@ -15,5 +15,14 @@ func (fe *FlowExecutor) Session() *jwt.Token { return nil } t, _, _ := jwt.NewParser().ParseUnverified(sc.Value, &SessionCookieClaims{}) + // During testing the session cookie value is not a JWT but rather just the session ID + // in which case we wrap that in a pseudo-JWT + if t == nil { + return &jwt.Token{ + Claims: &SessionCookieClaims{ + SessionID: sc.Value, + }, + } + } return t } diff --git a/internal/outpost/flow/solvers.go b/internal/outpost/flow/solvers.go index 745df12aa4..42980eb864 100644 --- a/internal/outpost/flow/solvers.go +++ b/internal/outpost/flow/solvers.go @@ -4,7 +4,7 @@ import ( "errors" "strconv" - "goauthentik.io/api/v3" + api "goauthentik.io/packages/client-go" ) func (fe *FlowExecutor) solveChallenge_Identification(challenge *api.ChallengeTypes, req api.ApiFlowsExecutorSolveRequest) (api.FlowChallengeResponseRequest, error) { diff --git a/internal/outpost/flow/solvers_mfa_test.go b/internal/outpost/flow/solvers_mfa_test.go index 7b523b05d5..1b7f6f70f5 100644 --- a/internal/outpost/flow/solvers_mfa_test.go +++ b/internal/outpost/flow/solvers_mfa_test.go @@ -10,8 +10,8 @@ import ( "github.com/gorilla/securecookie" "github.com/sirupsen/logrus" "github.com/stretchr/testify/assert" - "goauthentik.io/api/v3" "goauthentik.io/internal/outpost/flow" + api "goauthentik.io/packages/client-go" ) func testSecret() string { diff --git a/internal/outpost/ldap/bind.go b/internal/outpost/ldap/bind.go index ae79f69f83..bb4810d255 100644 --- a/internal/outpost/ldap/bind.go +++ b/internal/outpost/ldap/bind.go @@ -12,8 +12,8 @@ import ( "goauthentik.io/internal/outpost/ldap/metrics" ) -func (ls *LDAPServer) Bind(bindDN string, bindPW string, conn net.Conn) (ldap.LDAPResultCode, error) { - req, span := bind.NewRequest(bindDN, bindPW, conn) +func (ls *LDAPServer) Bind(r ldap.BindRequest, conn net.Conn) (ldap.LDAPResultCode, error) { + req, span := bind.NewRequest(r, conn) selectedApp := "" defer func() { span.Finish() @@ -35,7 +35,7 @@ func (ls *LDAPServer) Bind(bindDN string, bindPW string, conn net.Conn) (ldap.LD }() for _, instance := range ls.providers { - username, err := instance.binder.GetUsername(bindDN) + username, err := instance.binder.GetUsername(r.BindDN) if err == nil { selectedApp = instance.GetAppSlug() c, err := instance.binder.Bind(username, req) diff --git a/internal/outpost/ldap/bind/direct/bind.go b/internal/outpost/ldap/bind/direct/bind.go index fe794a5df1..0c3bddc07c 100644 --- a/internal/outpost/ldap/bind/direct/bind.go +++ b/internal/outpost/ldap/bind/direct/bind.go @@ -23,7 +23,7 @@ func (db *DirectBinder) Bind(username string, req *bind.Request) (ldap.LDAPResul fe.Params.Add("goauthentik.io/outpost/ldap", "true") fe.Answers[flow.StageIdentification] = username - fe.SetSecrets(req.BindPW, db.si.GetMFASupport()) + fe.SetSecrets(req.Password, db.si.GetMFASupport()) passed, err := fe.Execute() flags := flags.UserFlags{ diff --git a/internal/outpost/ldap/bind/memory/memory.go b/internal/outpost/ldap/bind/memory/memory.go index 97080cf582..ef8b691d2b 100644 --- a/internal/outpost/ldap/bind/memory/memory.go +++ b/internal/outpost/ldap/bind/memory/memory.go @@ -46,7 +46,7 @@ func NewSessionBinder(si server.LDAPServerInstance, oldBinder bind.Binder) *Sess func (sb *SessionBinder) Bind(username string, req *bind.Request) (ldap.LDAPResultCode, error) { item := sb.sessions.Get(Credentials{ DN: req.BindDN, - Password: req.BindPW, + Password: req.Password, }) if item != nil { sb.log.WithField("bindDN", req.BindDN).Info("authenticated from session") @@ -63,7 +63,7 @@ func (sb *SessionBinder) Bind(username string, req *bind.Request) (ldap.LDAPResu } sb.sessions.Set(Credentials{ DN: req.BindDN, - Password: req.BindPW, + Password: req.Password, }, result, time.Until(flags.Session.Expires)) } return result, err diff --git a/internal/outpost/ldap/bind/request.go b/internal/outpost/ldap/bind/request.go index 9ea810e115..76e845af82 100644 --- a/internal/outpost/ldap/bind/request.go +++ b/internal/outpost/ldap/bind/request.go @@ -5,6 +5,7 @@ import ( "net" "strings" + "beryju.io/ldap" "github.com/getsentry/sentry-go" "github.com/google/uuid" log "github.com/sirupsen/logrus" @@ -12,15 +13,17 @@ import ( ) type Request struct { - BindDN string - BindPW string - id string - conn net.Conn - log *log.Entry - ctx context.Context + ldap.BindRequest + id string + conn net.Conn + log *log.Entry + ctx context.Context } -func NewRequest(bindDN string, bindPW string, conn net.Conn) (*Request, *sentry.Span) { +func NewRequest(req ldap.BindRequest, conn net.Conn) (*Request, *sentry.Span) { + bindDN := strings.ToLower(req.BindDN) + req.BindDN = bindDN + span := sentry.StartSpan(context.TODO(), "authentik.providers.ldap.bind", sentry.WithTransactionName("authentik.providers.ldap.bind")) span.Description = bindDN @@ -38,12 +41,11 @@ func NewRequest(bindDN string, bindPW string, conn net.Conn) (*Request, *sentry. bindDN = strings.ToLower(bindDN) return &Request{ - BindDN: bindDN, - BindPW: bindPW, - conn: conn, - log: log.WithField("bindDN", bindDN).WithField("requestId", rid).WithField("client", utils.GetIP(conn.RemoteAddr())), - id: rid, - ctx: span.Context(), + BindRequest: req, + conn: conn, + log: log.WithField("bindDN", bindDN).WithField("requestId", rid).WithField("client", utils.GetIP(conn.RemoteAddr())), + id: rid, + ctx: span.Context(), }, span } diff --git a/internal/outpost/ldap/entries.go b/internal/outpost/ldap/entries.go index 3dcc30a3b3..f133d200eb 100644 --- a/internal/outpost/ldap/entries.go +++ b/internal/outpost/ldap/entries.go @@ -8,9 +8,9 @@ import ( "beryju.io/ldap" - "goauthentik.io/api/v3" "goauthentik.io/internal/outpost/ldap/constants" "goauthentik.io/internal/outpost/ldap/utils" + api "goauthentik.io/packages/client-go" ) func (pi *ProviderInstance) UserEntry(u api.User) *ldap.Entry { diff --git a/internal/outpost/ldap/entries_test.go b/internal/outpost/ldap/entries_test.go index dc01f2d2c7..93cc574389 100644 --- a/internal/outpost/ldap/entries_test.go +++ b/internal/outpost/ldap/entries_test.go @@ -5,7 +5,7 @@ import ( "beryju.io/ldap" "github.com/stretchr/testify/assert" - "goauthentik.io/api/v3" + api "goauthentik.io/packages/client-go" ) func Test_UserEntry(t *testing.T) { diff --git a/internal/outpost/ldap/flags/flags.go b/internal/outpost/ldap/flags/flags.go index bf7faf473e..7c207e16c9 100644 --- a/internal/outpost/ldap/flags/flags.go +++ b/internal/outpost/ldap/flags/flags.go @@ -6,8 +6,8 @@ import ( "net/http" "github.com/golang-jwt/jwt/v5" - "goauthentik.io/api/v3" "goauthentik.io/internal/outpost/flow" + api "goauthentik.io/packages/client-go" ) const InvalidUserPK = -1 diff --git a/internal/outpost/ldap/group/group.go b/internal/outpost/ldap/group/group.go index 97541f35e3..fc9b299e15 100644 --- a/internal/outpost/ldap/group/group.go +++ b/internal/outpost/ldap/group/group.go @@ -5,10 +5,10 @@ import ( "beryju.io/ldap" - "goauthentik.io/api/v3" "goauthentik.io/internal/outpost/ldap/constants" "goauthentik.io/internal/outpost/ldap/server" "goauthentik.io/internal/outpost/ldap/utils" + api "goauthentik.io/packages/client-go" ) type LDAPGroup struct { diff --git a/internal/outpost/ldap/instance.go b/internal/outpost/ldap/instance.go index fc88ad13c1..bfbbbcde33 100644 --- a/internal/outpost/ldap/instance.go +++ b/internal/outpost/ldap/instance.go @@ -7,12 +7,12 @@ import ( log "github.com/sirupsen/logrus" - "goauthentik.io/api/v3" "goauthentik.io/internal/outpost/ldap/bind" ldapConstants "goauthentik.io/internal/outpost/ldap/constants" "goauthentik.io/internal/outpost/ldap/flags" "goauthentik.io/internal/outpost/ldap/search" "goauthentik.io/internal/outpost/ldap/utils" + api "goauthentik.io/packages/client-go" ) type ProviderInstance struct { diff --git a/internal/outpost/ldap/ldap.go b/internal/outpost/ldap/ldap.go index 1454a2bf41..704c1a3146 100644 --- a/internal/outpost/ldap/ldap.go +++ b/internal/outpost/ldap/ldap.go @@ -149,6 +149,7 @@ func (ls *LDAPServer) handleWSSessionEnd(ctx context.Context, msg ak.Event) erro ls.log.Info("Disconnecting session due to session end event") conn, ok := ls.connections[mmsg.SessionID] if !ok { + ls.log.Warn("Could not disconnect session, connection not found") return nil } delete(ls.connections, mmsg.SessionID) diff --git a/internal/outpost/ldap/refresh.go b/internal/outpost/ldap/refresh.go index f5832e1929..dc80adc52f 100644 --- a/internal/outpost/ldap/refresh.go +++ b/internal/outpost/ldap/refresh.go @@ -9,7 +9,6 @@ import ( log "github.com/sirupsen/logrus" - "goauthentik.io/api/v3" "goauthentik.io/internal/outpost/ak" "goauthentik.io/internal/outpost/ldap/bind" directbind "goauthentik.io/internal/outpost/ldap/bind/direct" @@ -19,6 +18,7 @@ import ( "goauthentik.io/internal/outpost/ldap/search" directsearch "goauthentik.io/internal/outpost/ldap/search/direct" memorysearch "goauthentik.io/internal/outpost/ldap/search/memory" + api "goauthentik.io/packages/client-go" ) func (ls *LDAPServer) getCurrentProvider(pk int32) *ProviderInstance { diff --git a/internal/outpost/ldap/search/direct/direct.go b/internal/outpost/ldap/search/direct/direct.go index 713f81aac3..f350e8820c 100644 --- a/internal/outpost/ldap/search/direct/direct.go +++ b/internal/outpost/ldap/search/direct/direct.go @@ -11,7 +11,7 @@ import ( "beryju.io/ldap" "github.com/getsentry/sentry-go" "github.com/prometheus/client_golang/prometheus" - "goauthentik.io/api/v3" + "goauthentik.io/internal/config" "goauthentik.io/internal/outpost/ak" "goauthentik.io/internal/outpost/ldap/constants" "goauthentik.io/internal/outpost/ldap/group" @@ -19,6 +19,7 @@ import ( "goauthentik.io/internal/outpost/ldap/search" "goauthentik.io/internal/outpost/ldap/server" "goauthentik.io/internal/outpost/ldap/utils" + api "goauthentik.io/packages/client-go" ) type DirectSearcher struct { @@ -83,10 +84,6 @@ func (ds *DirectSearcher) Search(req *search.Request) (ldap.ServerSearchResult, entries := make([]*ldap.Entry, 0) - // Create a custom client to set additional headers - c := api.NewAPIClient(ds.si.GetAPIClient().GetConfig()) - c.GetConfig().AddDefaultHeader("X-authentik-outpost-ldap-query", req.Filter) - scope := req.Scope needUsers, needGroups := ds.si.GetNeededObjects(scope, req.BaseDN, req.FilterObjectClass) @@ -113,7 +110,7 @@ func (ds *DirectSearcher) Search(req *search.Request) (ldap.ServerSearchResult, errs.Go(func() error { if flags.CanSearch { uapisp := sentry.StartSpan(errCtx, "authentik.providers.ldap.search.api_user") - searchReq, skip := utils.ParseFilterForUser(c.CoreAPI.CoreUsersList(uapisp.Context()).IncludeGroups(true), parsedFilter, false) + searchReq, skip := utils.ParseFilterForUser(ds.si.GetAPIClient().CoreAPI.CoreUsersList(uapisp.Context()).IncludeGroups(true), parsedFilter, false) if skip { req.Log().Trace("Skip backend request") @@ -121,7 +118,7 @@ func (ds *DirectSearcher) Search(req *search.Request) (ldap.ServerSearchResult, } u, err := ak.Paginator(searchReq, ak.PaginatorOptions{ - PageSize: 100, + PageSize: config.Get().LDAP.PageSize, Logger: ds.log, }) uapisp.Finish() @@ -132,7 +129,7 @@ func (ds *DirectSearcher) Search(req *search.Request) (ldap.ServerSearchResult, } else { if flags.UserInfo == nil { uapisp := sentry.StartSpan(errCtx, "authentik.providers.ldap.search.api_user") - u, _, err := c.CoreAPI.CoreUsersRetrieve(uapisp.Context(), flags.UserPk).Execute() + u, _, err := ds.si.GetAPIClient().CoreAPI.CoreUsersRetrieve(uapisp.Context(), flags.UserPk).Execute() uapisp.Finish() if err != nil { @@ -155,7 +152,7 @@ func (ds *DirectSearcher) Search(req *search.Request) (ldap.ServerSearchResult, if needGroups { errs.Go(func() error { gapisp := sentry.StartSpan(errCtx, "authentik.providers.ldap.search.api_group") - searchReq, skip := utils.ParseFilterForGroup(c.CoreAPI.CoreGroupsList(gapisp.Context()).IncludeUsers(true).IncludeChildren(true).IncludeParents(true), parsedFilter, false) + searchReq, skip := utils.ParseFilterForGroup(ds.si.GetAPIClient().CoreAPI.CoreGroupsList(gapisp.Context()).IncludeUsers(true).IncludeChildren(true).IncludeParents(true), parsedFilter, false) if skip { req.Log().Trace("Skip backend request") return nil @@ -167,7 +164,7 @@ func (ds *DirectSearcher) Search(req *search.Request) (ldap.ServerSearchResult, } g, err := ak.Paginator(searchReq, ak.PaginatorOptions{ - PageSize: 100, + PageSize: config.Get().LDAP.PageSize, Logger: ds.log, }) gapisp.Finish() diff --git a/internal/outpost/ldap/search/memory/memory.go b/internal/outpost/ldap/search/memory/memory.go index 74f4fd3736..7d46a66d9f 100644 --- a/internal/outpost/ldap/search/memory/memory.go +++ b/internal/outpost/ldap/search/memory/memory.go @@ -10,7 +10,7 @@ import ( "github.com/getsentry/sentry-go" "github.com/prometheus/client_golang/prometheus" log "github.com/sirupsen/logrus" - "goauthentik.io/api/v3" + "goauthentik.io/internal/config" "goauthentik.io/internal/outpost/ak" "goauthentik.io/internal/outpost/ldap/constants" "goauthentik.io/internal/outpost/ldap/flags" @@ -20,6 +20,7 @@ import ( "goauthentik.io/internal/outpost/ldap/search/direct" "goauthentik.io/internal/outpost/ldap/server" "goauthentik.io/internal/outpost/ldap/utils" + api "goauthentik.io/packages/client-go" ) type MemorySearcher struct { @@ -53,12 +54,12 @@ func NewMemorySearcher(si server.LDAPServerInstance, existing search.Searcher) * func (ms *MemorySearcher) fetch() { // Error is not handled here, we get an empty/truncated list and the error is logged users, _ := ak.Paginator(ms.si.GetAPIClient().CoreAPI.CoreUsersList(context.TODO()).IncludeGroups(true), ak.PaginatorOptions{ - PageSize: 100, + PageSize: config.Get().LDAP.PageSize, Logger: ms.log, }) ms.users = users groups, _ := ak.Paginator(ms.si.GetAPIClient().CoreAPI.CoreGroupsList(context.TODO()).IncludeUsers(true).IncludeChildren(true).IncludeParents(true), ak.PaginatorOptions{ - PageSize: 100, + PageSize: config.Get().LDAP.PageSize, Logger: ms.log, }) ms.groups = groups diff --git a/internal/outpost/ldap/server/base.go b/internal/outpost/ldap/server/base.go index ecc39617b3..13712d6664 100644 --- a/internal/outpost/ldap/server/base.go +++ b/internal/outpost/ldap/server/base.go @@ -3,8 +3,8 @@ package server import ( "beryju.io/ldap" - "goauthentik.io/api/v3" "goauthentik.io/internal/outpost/ldap/flags" + api "goauthentik.io/packages/client-go" ) type LDAPServerInstance interface { diff --git a/internal/outpost/ldap/unbind.go b/internal/outpost/ldap/unbind.go index b293cb2c0d..caa9531d87 100644 --- a/internal/outpost/ldap/unbind.go +++ b/internal/outpost/ldap/unbind.go @@ -13,7 +13,9 @@ import ( ) func (ls *LDAPServer) Unbind(boundDN string, conn net.Conn) (ldap.LDAPResultCode, error) { - req, span := bind.NewRequest(boundDN, "", conn) + req, span := bind.NewRequest(ldap.BindRequest{ + BindDN: boundDN, + }, conn) selectedApp := "" defer func() { span.Finish() diff --git a/internal/outpost/ldap/utils.go b/internal/outpost/ldap/utils.go index b44b7e342d..7ca16ac6ad 100644 --- a/internal/outpost/ldap/utils.go +++ b/internal/outpost/ldap/utils.go @@ -4,7 +4,7 @@ import ( "fmt" "strconv" - "goauthentik.io/api/v3" + api "goauthentik.io/packages/client-go" ) func (pi *ProviderInstance) GroupsForUser(user api.User) []string { diff --git a/internal/outpost/ldap/utils/utils_group.go b/internal/outpost/ldap/utils/utils_group.go index 51a120593c..1afe761581 100644 --- a/internal/outpost/ldap/utils/utils_group.go +++ b/internal/outpost/ldap/utils/utils_group.go @@ -6,8 +6,8 @@ import ( "beryju.io/ldap" goldap "github.com/go-ldap/ldap/v3" ber "github.com/nmcclain/asn1-ber" - "goauthentik.io/api/v3" "goauthentik.io/internal/outpost/ldap/constants" + api "goauthentik.io/packages/client-go" ) func ParseFilterForGroup(req api.ApiCoreGroupsListRequest, f *ber.Packet, skip bool) (api.ApiCoreGroupsListRequest, bool) { diff --git a/internal/outpost/ldap/utils/utils_test.go b/internal/outpost/ldap/utils/utils_test.go index 185710d627..198353c8f8 100644 --- a/internal/outpost/ldap/utils/utils_test.go +++ b/internal/outpost/ldap/utils/utils_test.go @@ -4,7 +4,7 @@ import ( "testing" "github.com/stretchr/testify/assert" - "goauthentik.io/api/v3" + api "goauthentik.io/packages/client-go" ) func Test_stringify_nil(t *testing.T) { diff --git a/internal/outpost/ldap/utils/utils_user.go b/internal/outpost/ldap/utils/utils_user.go index 571fcd7ce3..3fc2e7415b 100644 --- a/internal/outpost/ldap/utils/utils_user.go +++ b/internal/outpost/ldap/utils/utils_user.go @@ -4,8 +4,8 @@ import ( "beryju.io/ldap" goldap "github.com/go-ldap/ldap/v3" ber "github.com/nmcclain/asn1-ber" - "goauthentik.io/api/v3" "goauthentik.io/internal/outpost/ldap/constants" + api "goauthentik.io/packages/client-go" ) func ParseFilterForUser(req api.ApiCoreUsersListRequest, f *ber.Packet, skip bool) (api.ApiCoreUsersListRequest, bool) { diff --git a/internal/outpost/proxyv2/application/application.go b/internal/outpost/proxyv2/application/application.go index f7adbf2413..d94cd53618 100644 --- a/internal/outpost/proxyv2/application/application.go +++ b/internal/outpost/proxyv2/application/application.go @@ -23,7 +23,6 @@ import ( "github.com/jellydator/ttlcache/v3" "github.com/prometheus/client_golang/prometheus" log "github.com/sirupsen/logrus" - "goauthentik.io/api/v3" "goauthentik.io/internal/config" "goauthentik.io/internal/outpost/ak" "goauthentik.io/internal/outpost/proxyv2/hs256" @@ -31,6 +30,7 @@ import ( "goauthentik.io/internal/outpost/proxyv2/templates" "goauthentik.io/internal/outpost/proxyv2/types" "goauthentik.io/internal/utils/web" + api "goauthentik.io/packages/client-go" "golang.org/x/oauth2" ) diff --git a/internal/outpost/proxyv2/application/endpoint.go b/internal/outpost/proxyv2/application/endpoint.go index 6137de2254..7b26d7fff7 100644 --- a/internal/outpost/proxyv2/application/endpoint.go +++ b/internal/outpost/proxyv2/application/endpoint.go @@ -4,8 +4,8 @@ import ( "net/url" log "github.com/sirupsen/logrus" - "goauthentik.io/api/v3" "goauthentik.io/internal/config" + api "goauthentik.io/packages/client-go" "golang.org/x/oauth2" ) diff --git a/internal/outpost/proxyv2/application/endpoint_test.go b/internal/outpost/proxyv2/application/endpoint_test.go index bd2be424d6..8daf215f56 100644 --- a/internal/outpost/proxyv2/application/endpoint_test.go +++ b/internal/outpost/proxyv2/application/endpoint_test.go @@ -4,8 +4,8 @@ import ( "testing" "github.com/stretchr/testify/assert" - "goauthentik.io/api/v3" "goauthentik.io/internal/config" + api "goauthentik.io/packages/client-go" ) func TestEndpointDefault(t *testing.T) { diff --git a/internal/outpost/proxyv2/application/mode_common.go b/internal/outpost/proxyv2/application/mode_common.go index 8e5cac514b..239b226c1a 100644 --- a/internal/outpost/proxyv2/application/mode_common.go +++ b/internal/outpost/proxyv2/application/mode_common.go @@ -9,9 +9,9 @@ import ( "net/url" "strings" - "goauthentik.io/api/v3" "goauthentik.io/internal/constants" "goauthentik.io/internal/outpost/proxyv2/types" + api "goauthentik.io/packages/client-go" ) func (a *Application) addHeaders(headers http.Header, c *types.Claims) { @@ -110,17 +110,6 @@ func (a *Application) getTraefikForwardUrl(r *http.Request) (*url.URL, error) { // getNginxForwardUrl See https://github.com/kubernetes/ingress-nginx/blob/main/rootfs/etc/nginx/template/nginx.tmpl func (a *Application) getNginxForwardUrl(r *http.Request) (*url.URL, error) { - ou := r.Header.Get("X-Original-URI") - if ou != "" { - // Turn this full URL into a relative URL - u := &url.URL{ - Host: "", - Scheme: "", - Path: ou, - } - a.log.WithField("url", u.String()).Info("building forward URL from X-Original-URI") - return u, nil - } h := r.Header.Get("X-Original-URL") if len(h) < 1 { return nil, errors.New("no forward URL found") diff --git a/internal/outpost/proxyv2/application/mode_common_test.go b/internal/outpost/proxyv2/application/mode_common_test.go index 896d097af6..6419856a10 100644 --- a/internal/outpost/proxyv2/application/mode_common_test.go +++ b/internal/outpost/proxyv2/application/mode_common_test.go @@ -7,9 +7,9 @@ import ( "testing" "github.com/stretchr/testify/assert" - "goauthentik.io/api/v3" "goauthentik.io/internal/constants" "goauthentik.io/internal/outpost/proxyv2/types" + api "goauthentik.io/packages/client-go" ) func urlMustParse(u string) *url.URL { diff --git a/internal/outpost/proxyv2/application/mode_forward_caddy_test.go b/internal/outpost/proxyv2/application/mode_forward_caddy_test.go index cf03bae978..2137d0f486 100644 --- a/internal/outpost/proxyv2/application/mode_forward_caddy_test.go +++ b/internal/outpost/proxyv2/application/mode_forward_caddy_test.go @@ -9,9 +9,9 @@ import ( "github.com/google/uuid" "github.com/stretchr/testify/assert" - "goauthentik.io/api/v3" "goauthentik.io/internal/outpost/proxyv2/constants" "goauthentik.io/internal/outpost/proxyv2/types" + api "goauthentik.io/packages/client-go" ) func TestForwardHandleCaddy_Single_Blank(t *testing.T) { diff --git a/internal/outpost/proxyv2/application/mode_forward_envoy_test.go b/internal/outpost/proxyv2/application/mode_forward_envoy_test.go index 2d9f6d90be..56e033b57d 100644 --- a/internal/outpost/proxyv2/application/mode_forward_envoy_test.go +++ b/internal/outpost/proxyv2/application/mode_forward_envoy_test.go @@ -9,9 +9,9 @@ import ( "github.com/google/uuid" "github.com/stretchr/testify/assert" - "goauthentik.io/api/v3" "goauthentik.io/internal/outpost/proxyv2/constants" "goauthentik.io/internal/outpost/proxyv2/types" + api "goauthentik.io/packages/client-go" ) func TestForwardHandleEnvoy_Single_Skip(t *testing.T) { diff --git a/internal/outpost/proxyv2/application/mode_forward_nginx_test.go b/internal/outpost/proxyv2/application/mode_forward_nginx_test.go index fa0f92ae04..5fa8cbf44f 100644 --- a/internal/outpost/proxyv2/application/mode_forward_nginx_test.go +++ b/internal/outpost/proxyv2/application/mode_forward_nginx_test.go @@ -5,11 +5,9 @@ import ( "net/http/httptest" "testing" - "github.com/google/uuid" "github.com/stretchr/testify/assert" - "goauthentik.io/api/v3" "goauthentik.io/internal/outpost/proxyv2/constants" - "goauthentik.io/internal/outpost/proxyv2/types" + api "goauthentik.io/packages/client-go" ) func TestForwardHandleNginx_Single_Blank(t *testing.T) { @@ -47,67 +45,6 @@ func TestForwardHandleNginx_Single_Headers(t *testing.T) { assert.Equal(t, "http://test.goauthentik.io/app", s.Values[constants.SessionRedirect]) } -func TestForwardHandleNginx_Single_URI(t *testing.T) { - a := newTestApplication() - req, _ := http.NewRequest("GET", "https://foo.bar/outpost.goauthentik.io/auth/nginx", nil) - req.Header.Set("X-Original-URI", "/app") - - rr := httptest.NewRecorder() - a.forwardHandleNginx(rr, req) - - assert.Equal(t, http.StatusUnauthorized, rr.Code) - - s, _ := a.sessions.Get(req, a.SessionName()) - assert.Equal(t, "/app", s.Values[constants.SessionRedirect]) -} - -func TestForwardHandleNginx_Single_Claims(t *testing.T) { - a := newTestApplication() - req, _ := http.NewRequest("GET", "/outpost.goauthentik.io/auth/nginx", nil) - req.Header.Set("X-Original-URI", "/") - - rr := httptest.NewRecorder() - a.forwardHandleNginx(rr, req) - - s, _ := a.sessions.Get(req, a.SessionName()) - s.ID = uuid.New().String() - s.Options.MaxAge = 86400 - s.Values[constants.SessionClaims] = types.Claims{ - Sub: "foo", - Proxy: &types.ProxyClaims{ - UserAttributes: map[string]any{ - "username": "foo", - "password": "bar", - "additionalHeaders": map[string]any{ - "foo": "bar", - }, - }, - }, - } - err := a.sessions.Save(req, rr, s) - if err != nil { - panic(err) - } - - rr = httptest.NewRecorder() - a.forwardHandleNginx(rr, req) - - h := rr.Result().Header - - assert.Equal(t, []string{"Basic Zm9vOmJhcg=="}, h["Authorization"]) - assert.Equal(t, []string{"bar"}, h["Foo"]) - assert.Equal(t, []string{""}, h["User-Agent"]) - assert.Equal(t, []string{""}, h["X-Authentik-Email"]) - assert.Equal(t, []string{""}, h["X-Authentik-Groups"]) - assert.Equal(t, []string{""}, h["X-Authentik-Jwt"]) - assert.Equal(t, []string{""}, h["X-Authentik-Meta-App"]) - assert.Equal(t, []string{""}, h["X-Authentik-Meta-Jwks"]) - assert.Equal(t, []string{""}, h["X-Authentik-Meta-Outpost"]) - assert.Equal(t, []string{""}, h["X-Authentik-Name"]) - assert.Equal(t, []string{"foo"}, h["X-Authentik-Uid"]) - assert.Equal(t, []string{""}, h["X-Authentik-Username"]) -} - func TestForwardHandleNginx_Domain_Blank(t *testing.T) { a := newTestApplication() a.proxyConfig.Mode = api.PROXYMODE_FORWARD_DOMAIN.Ptr() diff --git a/internal/outpost/proxyv2/application/mode_forward_traefik_test.go b/internal/outpost/proxyv2/application/mode_forward_traefik_test.go index 4c24bafeaa..611bce1646 100644 --- a/internal/outpost/proxyv2/application/mode_forward_traefik_test.go +++ b/internal/outpost/proxyv2/application/mode_forward_traefik_test.go @@ -9,9 +9,9 @@ import ( "github.com/google/uuid" "github.com/stretchr/testify/assert" - "goauthentik.io/api/v3" "goauthentik.io/internal/outpost/proxyv2/constants" "goauthentik.io/internal/outpost/proxyv2/types" + api "goauthentik.io/packages/client-go" ) func TestForwardHandleTraefik_Single_Blank(t *testing.T) { diff --git a/internal/outpost/proxyv2/application/oauth.go b/internal/outpost/proxyv2/application/oauth.go index 7b8df2f505..d6486db1dc 100644 --- a/internal/outpost/proxyv2/application/oauth.go +++ b/internal/outpost/proxyv2/application/oauth.go @@ -6,8 +6,8 @@ import ( "net/url" "strings" - "goauthentik.io/api/v3" "goauthentik.io/internal/outpost/proxyv2/constants" + api "goauthentik.io/packages/client-go" ) const ( diff --git a/internal/outpost/proxyv2/application/oauth_state.go b/internal/outpost/proxyv2/application/oauth_state.go index b97500b653..7938df1a06 100644 --- a/internal/outpost/proxyv2/application/oauth_state.go +++ b/internal/outpost/proxyv2/application/oauth_state.go @@ -11,7 +11,7 @@ import ( "github.com/golang-jwt/jwt/v5" "github.com/gorilla/securecookie" "github.com/mitchellh/mapstructure" - "goauthentik.io/api/v3" + api "goauthentik.io/packages/client-go" ) type OAuthState struct { diff --git a/internal/outpost/proxyv2/application/oauth_test.go b/internal/outpost/proxyv2/application/oauth_test.go index 4c4f01449a..c77088c223 100644 --- a/internal/outpost/proxyv2/application/oauth_test.go +++ b/internal/outpost/proxyv2/application/oauth_test.go @@ -5,7 +5,7 @@ import ( "testing" "github.com/stretchr/testify/assert" - "goauthentik.io/api/v3" + api "goauthentik.io/packages/client-go" ) func TestCheckRedirectParam_None(t *testing.T) { diff --git a/internal/outpost/proxyv2/application/session.go b/internal/outpost/proxyv2/application/session.go index 361bf2b9aa..1ff35f5df6 100644 --- a/internal/outpost/proxyv2/application/session.go +++ b/internal/outpost/proxyv2/application/session.go @@ -12,12 +12,12 @@ import ( "github.com/gorilla/securecookie" "github.com/gorilla/sessions" - "goauthentik.io/api/v3" "goauthentik.io/internal/outpost/proxyv2/codecs" "goauthentik.io/internal/outpost/proxyv2/constants" "goauthentik.io/internal/outpost/proxyv2/filesystemstore" "goauthentik.io/internal/outpost/proxyv2/postgresstore" "goauthentik.io/internal/outpost/proxyv2/types" + api "goauthentik.io/packages/client-go" ) const PostgresKeyPrefix = "authentik_proxy_session_" diff --git a/internal/outpost/proxyv2/application/test.go b/internal/outpost/proxyv2/application/test.go index 23e7d40605..718ac8272e 100644 --- a/internal/outpost/proxyv2/application/test.go +++ b/internal/outpost/proxyv2/application/test.go @@ -6,8 +6,8 @@ import ( "net/url" "testing" - "goauthentik.io/api/v3" "goauthentik.io/internal/outpost/ak" + api "goauthentik.io/packages/client-go" ) type testServer struct { diff --git a/internal/outpost/proxyv2/application/utils_test.go b/internal/outpost/proxyv2/application/utils_test.go index f35827ff9f..9800549005 100644 --- a/internal/outpost/proxyv2/application/utils_test.go +++ b/internal/outpost/proxyv2/application/utils_test.go @@ -6,8 +6,8 @@ import ( "testing" "github.com/stretchr/testify/assert" - "goauthentik.io/api/v3" "goauthentik.io/internal/outpost/proxyv2/constants" + api "goauthentik.io/packages/client-go" ) func TestRedirectToStart_Proxy(t *testing.T) { diff --git a/internal/outpost/proxyv2/handlers.go b/internal/outpost/proxyv2/handlers.go index 5ea61060b4..7033052691 100644 --- a/internal/outpost/proxyv2/handlers.go +++ b/internal/outpost/proxyv2/handlers.go @@ -8,11 +8,11 @@ import ( "time" "github.com/prometheus/client_golang/prometheus" - "goauthentik.io/api/v3" "goauthentik.io/internal/outpost/proxyv2/application" "goauthentik.io/internal/outpost/proxyv2/metrics" sentryutils "goauthentik.io/internal/utils/sentry" "goauthentik.io/internal/utils/web" + api "goauthentik.io/packages/client-go" staticWeb "goauthentik.io/web" ) diff --git a/internal/outpost/proxyv2/proxyv2.go b/internal/outpost/proxyv2/proxyv2.go index ead5e56483..eda14d974e 100644 --- a/internal/outpost/proxyv2/proxyv2.go +++ b/internal/outpost/proxyv2/proxyv2.go @@ -13,7 +13,6 @@ import ( "github.com/gorilla/mux" "github.com/pires/go-proxyproto" log "github.com/sirupsen/logrus" - "goauthentik.io/api/v3" "goauthentik.io/internal/config" "goauthentik.io/internal/crypto" "goauthentik.io/internal/outpost/ak" @@ -21,6 +20,7 @@ import ( "goauthentik.io/internal/utils" sentryutils "goauthentik.io/internal/utils/sentry" "goauthentik.io/internal/utils/web" + api "goauthentik.io/packages/client-go" ) type ProxyServer struct { diff --git a/internal/outpost/proxyv2/refresh.go b/internal/outpost/proxyv2/refresh.go index 3c990225f0..00211374f9 100644 --- a/internal/outpost/proxyv2/refresh.go +++ b/internal/outpost/proxyv2/refresh.go @@ -3,8 +3,11 @@ package proxyv2 import ( "context" "fmt" + "net" "net/http" "net/url" + "os" + "path" "github.com/getsentry/sentry-go" "goauthentik.io/internal/constants" @@ -38,12 +41,22 @@ func (ps *ProxyServer) Refresh() error { for _, provider := range providers { rsp := sentry.StartSpan(context.Background(), "authentik.outposts.proxy.application_ss") ua := fmt.Sprintf(" (provider=%s)", provider.Name) + var transport http.RoundTripper + if ps.akAPI.IsEmbedded() { + transport = &http.Transport{ + DialContext: func(_ context.Context, _, _ string) (net.Conn, error) { + return net.Dial("unix", path.Join(os.TempDir(), "authentik.sock")) + }, + } + } else { + transport = ak.GetTLSTransport() + } hc := &http.Client{ Transport: web.NewUserAgentTransport( constants.UserAgentOutpost()+ua, web.NewTracingTransport( rsp.Context(), - ak.GetTLSTransport(), + transport, ), ), } diff --git a/internal/outpost/radius/request.go b/internal/outpost/radius/request.go index 962c929832..2c77d0e5ea 100644 --- a/internal/outpost/radius/request.go +++ b/internal/outpost/radius/request.go @@ -1,7 +1,6 @@ package radius import ( - "bytes" "crypto/hmac" "crypto/md5" "errors" @@ -40,13 +39,18 @@ func (r *RadiusRequest) ID() string { func (r *RadiusRequest) validateMessageAuthenticator() error { mauth := rfc2869.MessageAuthenticator_Get(r.Packet) + // Per RFC 2869 §5.14, the Message-Authenticator field must be treated as + // 16 zero bytes when computing the HMAC-MD5 for verification. + _ = rfc2869.MessageAuthenticator_Set(r.Packet, make([]byte, 16)) hash := hmac.New(md5.New, r.Secret) encode, err := r.MarshalBinary() + // Restore the original value regardless of whether marshaling succeeded. + _ = rfc2869.MessageAuthenticator_Set(r.Packet, mauth) if err != nil { return err } hash.Write(encode) - if bytes.Equal(mauth, hash.Sum(nil)) { + if !hmac.Equal(mauth, hash.Sum(nil)) { return ErrInvalidMessageAuthenticator } return nil @@ -54,7 +58,7 @@ func (r *RadiusRequest) validateMessageAuthenticator() error { func (r *RadiusRequest) setMessageAuthenticator(rp *radius.Packet) error { _ = rfc2869.MessageAuthenticator_Set(rp, make([]byte, 16)) - hash := hmac.New(md5.New, rp.Secret) + hash := hmac.New(md5.New, r.pi.SharedSecret) encode, err := rp.MarshalBinary() if err != nil { return err diff --git a/internal/outpost/radius/request_test.go b/internal/outpost/radius/request_test.go new file mode 100644 index 0000000000..744da04e9c --- /dev/null +++ b/internal/outpost/radius/request_test.go @@ -0,0 +1,63 @@ +package radius + +import ( + "testing" + + "github.com/stretchr/testify/assert" + "layeh.com/radius" +) + +var ( + radiusPacketAccReq = []byte{0x1, 0x8f, 0x0, 0x4d, 0x4a, 0xd5, 0x47, 0x98, 0xbf, 0x18, 0xe, 0x4b, 0x6a, 0xdd, 0x0, 0xc7, 0x99, 0xb4, 0xa6, 0x57, 0x50, 0x12, 0xa5, 0xf7, 0x16, 0x88, 0xc5, 0xd8, 0xd9, 0xec, 0x19, 0xc8, 0x51, 0x47, 0x9, 0x5f, 0xe5, 0x60, 0x1, 0x9, 0x61, 0x6b, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2, 0x12, 0x37, 0x36, 0x8, 0xa3, 0x72, 0x20, 0xf, 0xf4, 0xc0, 0xc, 0xd2, 0x40, 0xc1, 0xc3, 0x3f, 0xef, 0x4, 0x6, 0xa, 0x78, 0x14, 0x4c, 0x5, 0x6, 0x0, 0x0, 0x0, 0xa} +) + +func Test_Request_validateMessageAuthenticator_valid(t *testing.T) { + p, err := radius.Parse(radiusPacketAccReq, []byte("foo")) + assert.NoError(t, err) + req := RadiusRequest{ + Request: &radius.Request{ + Packet: p, + }, + pi: &ProviderInstance{ + SharedSecret: []byte("foo"), + }, + } + assert.NoError(t, req.validateMessageAuthenticator()) +} + +func Test_Request_validateMessageAuthenticator_invalid(t *testing.T) { + p, err := radius.Parse(radiusPacketAccReq, []byte("bar")) + assert.NoError(t, err) + req := RadiusRequest{ + Request: &radius.Request{ + Packet: p, + }, + pi: &ProviderInstance{ + SharedSecret: []byte("bar"), + }, + } + assert.Error(t, req.validateMessageAuthenticator(), ErrInvalidMessageAuthenticator) +} + +func Test_Request_setMessageAuthenticator(t *testing.T) { + p, err := radius.Parse(radiusPacketAccReq, []byte("foo")) + assert.NoError(t, err) + req := RadiusRequest{ + Request: &radius.Request{ + Packet: p, + }, + pi: &ProviderInstance{ + SharedSecret: []byte("foo"), + }, + } + res := p.Response(radius.CodeAccessAccept) + assert.NoError(t, req.setMessageAuthenticator(res)) + + nr := RadiusRequest{ + Request: &radius.Request{ + Packet: res, + }, + pi: req.pi, + } + assert.NoError(t, nr.validateMessageAuthenticator()) +} diff --git a/internal/web/brand_tls/brand_tls.go b/internal/web/brand_tls/brand_tls.go index adde7a2c03..a6e7595ad3 100644 --- a/internal/web/brand_tls/brand_tls.go +++ b/internal/web/brand_tls/brand_tls.go @@ -9,9 +9,9 @@ import ( log "github.com/sirupsen/logrus" - "goauthentik.io/api/v3" "goauthentik.io/internal/crypto" "goauthentik.io/internal/outpost/ak" + api "goauthentik.io/packages/client-go" ) type Watcher struct { diff --git a/internal/web/metrics.go b/internal/web/metrics.go index b1ff6dc949..d4aad84ec4 100644 --- a/internal/web/metrics.go +++ b/internal/web/metrics.go @@ -37,7 +37,6 @@ func (ws *WebServer) runMetricsServer(listen string) { l.WithError(err).Warning("failed to get upstream metrics") return } - re.Header.Set("Authorization", fmt.Sprintf("Bearer %s", ws.metricsKey)) res, err := ws.upstreamHttpClient().Do(re) if err != nil { l.WithError(err).Warning("failed to get upstream metrics") diff --git a/internal/web/web.go b/internal/web/web.go index e1d9a4d326..ad9c47c7fa 100644 --- a/internal/web/web.go +++ b/internal/web/web.go @@ -17,7 +17,6 @@ import ( "github.com/pires/go-proxyproto" log "github.com/sirupsen/logrus" - "goauthentik.io/api/v3" "goauthentik.io/internal/config" "goauthentik.io/internal/constants" "goauthentik.io/internal/gounicorn" @@ -26,12 +25,12 @@ import ( "goauthentik.io/internal/utils/unix" "goauthentik.io/internal/utils/web" "goauthentik.io/internal/web/brand_tls" + api "goauthentik.io/packages/client-go" ) const ( SocketName = "authentik.sock" IPCKeyFile = "authentik-core-ipc.key" - MetricsKeyFile = "authentik-core-metrics.key" CoreSocketName = "authentik-core.sock" ) @@ -52,8 +51,7 @@ type WebServer struct { upstreamClient *http.Client upstreamURL *url.URL - metricsKey string - ipcKey string + ipcKey string } func NewWebServer() *WebServer { @@ -92,6 +90,7 @@ func NewWebServer() *WebServer { upstreamClient: upstreamClient, upstreamURL: u, } + ws.mainRouter.PathPrefix(config.Get().Web.Path).Path("/-/metrics/").Handler(http.NotFoundHandler()) ws.configureStatic() ws.configureProxy() // Redirect for sub-folder @@ -122,15 +121,7 @@ func (ws *WebServer) upstreamHealthcheck() bool { func (ws *WebServer) prepareKeys() { tmp := os.TempDir() key := base64.StdEncoding.EncodeToString(securecookie.GenerateRandomKey(64)) - err := os.WriteFile(path.Join(tmp, MetricsKeyFile), []byte(key), 0o600) - if err != nil { - ws.log.WithError(err).Warning("failed to save metrics key") - return - } - ws.metricsKey = key - - key = base64.StdEncoding.EncodeToString(securecookie.GenerateRandomKey(64)) - err = os.WriteFile(path.Join(tmp, IPCKeyFile), []byte(key), 0o600) + err := os.WriteFile(path.Join(tmp, IPCKeyFile), []byte(key), 0o600) if err != nil { ws.log.WithError(err).Warning("failed to save ipc key") return @@ -228,11 +219,7 @@ func (ws *WebServer) Shutdown() { ws.log.Info("shutting down gunicorn") ws.g.Kill() tmp := os.TempDir() - err := os.Remove(path.Join(tmp, MetricsKeyFile)) - if err != nil { - ws.log.WithError(err).Warning("failed to remove metrics key file") - } - err = os.Remove(path.Join(tmp, IPCKeyFile)) + err := os.Remove(path.Join(tmp, IPCKeyFile)) if err != nil { ws.log.WithError(err).Warning("failed to remove ipc key file") } @@ -247,6 +234,7 @@ func (ws *WebServer) listenUnix(listen string) { } defer func() { err := ln.Close() + _ = os.Remove(listen) if err != nil { ws.log.WithField("listen", listen).WithError(err).Warning("failed to close listener") } diff --git a/internal/web/web_tls.go b/internal/web/web_tls.go index 9aca90a5c8..c907c65711 100644 --- a/internal/web/web_tls.go +++ b/internal/web/web_tls.go @@ -18,11 +18,7 @@ func (ws *WebServer) GetCertificate() func(ch *tls.ClientHelloInfo) (*tls.Config } return func(ch *tls.ClientHelloInfo) (*tls.Config, error) { cfg := utils.GetTLSConfig() - if ch.ServerName == "" { - cfg.Certificates = []tls.Certificate{fallback} - return cfg, nil - } - if ws.ProxyServer != nil { + if ch.ServerName != "" && ws.ProxyServer != nil { appCert := ws.ProxyServer.GetCertificate(ch.ServerName) if appCert != nil { cfg.Certificates = []tls.Certificate{*appCert} diff --git a/lifecycle/ak b/lifecycle/ak index 56c3094898..904d779333 100755 --- a/lifecycle/ak +++ b/lifecycle/ak @@ -1,10 +1,8 @@ -#!/usr/bin/env -S bash -set -e -o pipefail -MODE_FILE="${TMPDIR}/authentik-mode" +#!/usr/bin/env bash -if [[ -z "${PROMETHEUS_MULTIPROC_DIR}" ]]; then - export PROMETHEUS_MULTIPROC_DIR="${TMPDIR:-/tmp}/authentik_prometheus_tmp" -fi +set -e -o pipefail + +MODE_FILE="$TMPDIR/authentik-mode" function log { printf '{"event": "%s", "level": "info", "logger": "bootstrap"}\n' "$@" >&2 @@ -15,10 +13,45 @@ function wait_for_db { log "Bootstrap completed" } -function check_if_root { +function run_authentik { + case "$1" in + server) + shift 1 + echo -n server >"$MODE_FILE" + if [[ -x "$(command -v authentik-server)" ]]; then + echo authentik-server "$@" + else + echo go run ./cmd/server "$@" + fi + ;; + healthcheck) + if [[ -x "$(command -v authentik-server)" ]]; then + echo authentik-server "$@" + else + echo go run ./cmd/server "$@" + fi + ;; + allinone | worker) + if [[ -x "$(command -v authentik)" ]]; then + echo authentik "$@" + else + echo cargo run -- "$@" + fi + ;; + manage) + shift 1 + echo python -m manage "$@" + ;; + *) + echo "$@" + ;; + esac +} + +function check_if_root_and_run { if [[ $EUID -ne 0 ]]; then log "Not running as root, disabling permission fixes" - exec $1 + exec $(run_authentik "$@") return fi SOCKET="/var/run/docker.sock" @@ -26,36 +59,19 @@ function check_if_root { if [[ -e "$SOCKET" ]]; then # Get group ID of the docker socket, so we can create a matching group and # add ourselves to it - DOCKER_GID=$(stat -c '%g' $SOCKET) + DOCKER_GID="$(stat -c "%g" "${SOCKET}")" # Ensure group for the id exists - getent group $DOCKER_GID || groupadd -f -g $DOCKER_GID docker - usermod -a -G $DOCKER_GID authentik + getent group "${DOCKER_GID}" || groupadd -f -g "${DOCKER_GID}" docker + usermod -a -G "${DOCKER_GID}" authentik # since the name of the group might not be docker, we need to lookup the group id - GROUP_NAME=$(getent group $DOCKER_GID | sed 's/:/\n/g' | head -1) + GROUP_NAME=$(getent group "${DOCKER_GID}" | sed 's/:/\n/g' | head -1) GROUP="authentik:${GROUP_NAME}" fi # Fix permissions of certs and media chown -R authentik:authentik /data /certs "${PROMETHEUS_MULTIPROC_DIR}" chmod ug+rwx /data chmod ug+rx /certs - exec chpst -u authentik:$GROUP env HOME=/authentik $1 -} - -function run_authentik { - if [[ -x "$(command -v authentik)" ]]; then - exec authentik $@ - else - exec go run -v ./cmd/server/ $@ - fi -} - -function set_mode { - echo $1 >$MODE_FILE - trap cleanup EXIT -} - -function cleanup { - rm -f ${MODE_FILE} + exec chpst -u authentik:"${GROUP}" env HOME=/authentik $(run_authentik "$@") } function prepare_debug { @@ -67,43 +83,38 @@ function prepare_debug { apt-get update apt-get install -y --no-install-recommends krb5-kdc krb5-user krb5-admin-server libkrb5-dev gcc source "${VENV_PATH}/bin/activate" - uv sync --active --frozen + uv sync --active --locked touch /unittest.xml chown authentik:authentik /unittest.xml } +if [[ -z "${PROMETHEUS_MULTIPROC_DIR}" ]]; then + export PROMETHEUS_MULTIPROC_DIR="${TMPDIR:-/tmp}/authentik_prometheus_tmp" +fi mkdir -p "${PROMETHEUS_MULTIPROC_DIR}" if [[ "$(python -m authentik.lib.config debugger 2>/dev/null)" == "True" ]]; then prepare_debug fi -if [[ "$1" == "server" ]]; then - set_mode "server" - run_authentik -elif [[ "$1" == "worker" ]]; then - set_mode "worker" - shift - # If we have bootstrap credentials set, run bootstrap tasks outside of main server - # sync, so that we can sure the first start actually has working bootstrap - # credentials - if [[ -n "${AUTHENTIK_BOOTSTRAP_PASSWORD}" || -n "${AUTHENTIK_BOOTSTRAP_TOKEN}" ]]; then - python -m manage apply_blueprint system/bootstrap.yaml || true - fi - check_if_root "python -m manage worker --pid-file ${TMPDIR}/authentik-worker.pid $@" -elif [[ "$1" == "bash" ]]; then - /bin/bash -elif [[ "$1" == "test-all" ]]; then - prepare_debug - chmod 777 /root - check_if_root "python -m manage test authentik" -elif [[ "$1" == "healthcheck" ]]; then - run_authentik healthcheck $(cat $MODE_FILE) +if [[ "$1" == "bash" ]]; then + exec /usr/bin/env -S bash "$@" elif [[ "$1" == "dump_config" ]]; then - shift - exec python -m authentik.lib.config $@ + shift 1 + exec python -m authentik.lib.config "$@" elif [[ "$1" == "debug" ]]; then exec sleep infinity +elif [[ "$1" == "test-all" ]]; then + wait_for_db + prepare_debug + chmod 777 /root + check_if_root_and_run manage test authentik +elif [[ "$1" == "allinone" ]] || [[ "$1" == "server" ]] || [[ "$1" == "worker" ]]; then + wait_for_db + check_if_root_and_run "$@" +elif [[ "$1" == "healthcheck" ]]; then + check_if_root_and_run "$@" "$(cat "$MODE_FILE")" else + wait_for_db exec python -m manage "$@" fi diff --git a/lifecycle/aws/package-lock.json b/lifecycle/aws/package-lock.json index 3c0e9cc966..adb2778fa9 100644 --- a/lifecycle/aws/package-lock.json +++ b/lifecycle/aws/package-lock.json @@ -9,12 +9,12 @@ "version": "0.0.0", "license": "MIT", "devDependencies": { - "aws-cdk": "^2.1112.0", + "aws-cdk": "^2.1120.0", "cross-env": "^10.1.0" }, "engines": { - "node": ">=20", - "npm": ">=11.6.2" + "node": ">=24", + "npm": ">=11.10.1" } }, "node_modules/@epic-web/invariant": { @@ -25,9 +25,9 @@ "license": "MIT" }, "node_modules/aws-cdk": { - "version": "2.1112.0", - "resolved": "https://registry.npmjs.org/aws-cdk/-/aws-cdk-2.1112.0.tgz", - "integrity": "sha512-IYUbsd9tpBQRqEO2evWsG+p2ZNa6wG5/sJvmWaqo45V1ep8BW+mrf+jEpFLD9uDPXqRA57EZGVGils7QLbOhNA==", + "version": "2.1120.0", + "resolved": "https://registry.npmjs.org/aws-cdk/-/aws-cdk-2.1120.0.tgz", + "integrity": "sha512-vDVa0IX0FhizARdY/GLSParFglKbdHCIhM8IDmynrAv9w8uLLljzWMeLUOhC1XpMErDZ/npYEihAOjfKxTaMIw==", "dev": true, "license": "Apache-2.0", "bin": { diff --git a/lifecycle/aws/package.json b/lifecycle/aws/package.json index cfbbcb0573..4935db8e4e 100644 --- a/lifecycle/aws/package.json +++ b/lifecycle/aws/package.json @@ -7,11 +7,24 @@ "aws-cfn": "cross-env CI=false cdk synth --version-reporting=false > template.yaml" }, "devDependencies": { - "aws-cdk": "^2.1112.0", + "aws-cdk": "^2.1120.0", "cross-env": "^10.1.0" }, "engines": { - "node": ">=20", - "npm": ">=11.6.2" - } + "node": ">=24", + "npm": ">=11.14.1" + }, + "devEngines": { + "runtime": { + "name": "node", + "onFail": "warn", + "version": ">=24" + }, + "packageManager": { + "name": "npm", + "version": ">=11.14.1", + "onFail": "warn" + } + }, + "packageManager": "npm@11.14.1+sha512.6a8a4d67478497a2dbc6815cad72e64c43f33413717e242756047d466241ab39bee61e691683a64658e94496ec5f1a1c05e4a5ec62dcc773280dfd949443a367" } diff --git a/lifecycle/aws/template.yaml b/lifecycle/aws/template.yaml index 48453024df..aa8e3158d1 100644 --- a/lifecycle/aws/template.yaml +++ b/lifecycle/aws/template.yaml @@ -18,7 +18,7 @@ Parameters: Description: authentik Docker image AuthentikVersion: Type: String - Default: 2026.5.0-rc1 + Default: 2026.8.0-rc1 Description: authentik Docker image tag AuthentikServerCPU: Type: Number diff --git a/lifecycle/container/Dockerfile b/lifecycle/container/Dockerfile index 5f31635fcc..51a465bb18 100644 --- a/lifecycle/container/Dockerfile +++ b/lifecycle/container/Dockerfile @@ -1,32 +1,46 @@ # syntax=docker/dockerfile:1 -# Stage 1: Build webui -FROM --platform=${BUILDPLATFORM} docker.io/library/node:24-trixie-slim@sha256:45babd1b4ce0349fb12c4e24bf017b90b96d52806db32e001e3013f341bef0fe AS node-builder +# Stage: Build webui +FROM --platform=${BUILDPLATFORM} docker.io/library/node:24-trixie-slim@sha256:4f2b45e32dc7d2caf66b6dbd59fac50e32f8077769efe0ef4d4c3f114672537d AS node-builder ARG GIT_BUILD_HASH ENV GIT_BUILD_HASH=$GIT_BUILD_HASH ENV NODE_ENV=production +WORKDIR /work + +RUN --mount=type=bind,target=/work/package.json,src=./package.json \ + --mount=type=bind,target=/work/package-lock.json,src=./package-lock.json \ + --mount=type=bind,target=/work/web/package.json,src=./web/package.json \ + --mount=type=bind,target=/work/web/package-lock.json,src=./web/package-lock.json \ + --mount=type=bind,target=/work/scripts/node/,src=./scripts/node/ \ + --mount=type=bind,target=/work/packages/logger-js/,src=./packages/logger-js/ \ + node ./scripts/node/setup-corepack.mjs --force && \ + node ./scripts/node/lint-runtime.mjs ./web + WORKDIR /work/web +# These files need to be copied and cannot be mounted as `npm ci` will build the client's typescript +COPY ./packages /work/packages +COPY ./web/packages /work/web/packages + RUN --mount=type=bind,target=/work/web/package.json,src=./web/package.json \ --mount=type=bind,target=/work/web/package-lock.json,src=./web/package-lock.json \ --mount=type=bind,target=/work/web/packages/sfe/package.json,src=./web/packages/sfe/package.json \ --mount=type=bind,target=/work/web/scripts,src=./web/scripts \ --mount=type=cache,id=npm-ak,sharing=shared,target=/root/.npm \ - npm ci + corepack npm ci COPY ./package.json /work COPY ./web /work/web/ # TODO: Update this after moving website to docs COPY ./website /work/website/ -COPY ./gen-ts-api /work/web/node_modules/@goauthentik/api RUN npm run build && \ npm run build:sfe -# Stage 2: Build go proxy -FROM --platform=${BUILDPLATFORM} docker.io/library/golang:1.26.1-trixie@sha256:96b28783b99bcd265fbfe0b36a3ac6462416ce6bf1feac85d4c4ff533cbaa473 AS go-builder +# Stage: Build go proxy +FROM --platform=${BUILDPLATFORM} docker.io/library/golang:1.26.2-trixie@sha256:4a7137ea573f79c86ae451ff05817ed762ef5597fcf732259e97abeb3108d873 AS go-builder ARG TARGETOS ARG TARGETARCH @@ -39,12 +53,12 @@ WORKDIR /go/src/goauthentik.io RUN --mount=type=cache,id=apt-$TARGETARCH$TARGETVARIANT,sharing=locked,target=/var/cache/apt \ dpkg --add-architecture arm64 && \ + dpkg --add-architecture amd64 && \ apt-get update && \ - apt-get install -y --no-install-recommends crossbuild-essential-arm64 gcc-aarch64-linux-gnu + apt-get install -y --no-install-recommends crossbuild-essential-arm64 gcc-aarch64-linux-gnu crossbuild-essential-amd64 gcc-x86-64-linux-gnu RUN --mount=type=bind,target=/go/src/goauthentik.io/go.mod,src=./go.mod \ --mount=type=bind,target=/go/src/goauthentik.io/go.sum,src=./go.sum \ - --mount=type=bind,target=/go/src/goauthentik.io/gen-go-api,src=./gen-go-api \ --mount=type=cache,target=/go/pkg/mod \ go mod download @@ -56,15 +70,16 @@ COPY --from=node-builder /work/web/security.txt /go/src/goauthentik.io/web/secur COPY ./internal /go/src/goauthentik.io/internal COPY ./go.mod /go/src/goauthentik.io/go.mod COPY ./go.sum /go/src/goauthentik.io/go.sum +COPY ./packages/client-go /go/src/goauthentik.io/packages/client-go RUN --mount=type=cache,sharing=locked,target=/go/pkg/mod \ - --mount=type=bind,target=/go/src/goauthentik.io/gen-go-api,src=./gen-go-api \ --mount=type=cache,id=go-build-$TARGETARCH$TARGETVARIANT,sharing=locked,target=/root/.cache/go-build \ - if [ "$TARGETARCH" = "arm64" ]; then export CC=aarch64-linux-gnu-gcc && export CC_FOR_TARGET=gcc-aarch64-linux-gnu; fi && \ + if [ "$TARGETARCH" = "arm64" ] && [ "$(uname -m)" != "aarch64" ]; then export CC=aarch64-linux-gnu-gcc && export CC_FOR_TARGET=gcc-aarch64-linux-gnu; fi && \ + if [ "$TARGETARCH" = "amd64" ] && [ "$(uname -m)" != "x86_64" ]; then export CC=x86_64-linux-gnu-gcc; fi && \ CGO_ENABLED=1 GOFIPS140=latest GOARM="${TARGETVARIANT#v}" \ - go build -o /go/authentik ./cmd/server + go build -o /go/authentik-server ./cmd/server -# Stage 3: MaxMind GeoIP +# Stage: MaxMind GeoIP FROM --platform=${BUILDPLATFORM} ghcr.io/maxmind/geoipupdate:v7.1.1@sha256:faecdca22579730ab0b7dea5aa9af350bb3c93cb9d39845c173639ead30346d2 AS geoip ENV GEOIPUPDATE_EDITION_IDS="GeoLite2-City GeoLite2-ASN" @@ -77,9 +92,31 @@ RUN --mount=type=secret,id=GEOIPUPDATE_ACCOUNT_ID \ mkdir -p /usr/share/GeoIP && \ /bin/sh -c "GEOIPUPDATE_LICENSE_KEY_FILE=/run/secrets/GEOIPUPDATE_LICENSE_KEY /usr/bin/entry.sh || echo 'Failed to get GeoIP database, disabling'; exit 0" -# Stage 4: Download uv -FROM ghcr.io/astral-sh/uv:0.10.12@sha256:72ab0aeb448090480ccabb99fb5f52b0dc3c71923bffb5e2e26517a1c27b7fec AS uv -# Stage 5: Base python image +# Stage: download Rust toolchain +FROM ghcr.io/goauthentik/fips-debian:trixie-slim-fips@sha256:7726387c78b5787d2146868c2ccc8948a3591d0a5a6436f7780c8c28acc76341 AS rust-toolchain + +ARG TARGETARCH +ARG TARGETVARIANT + +ENV PATH="/root/.cargo/bin:$PATH" +SHELL ["/bin/sh", "-o", "pipefail", "-c"] +RUN --mount=type=bind,target=rust-toolchain.toml,src=rust-toolchain.toml \ + apt-get update && \ + # Required for installing pip packages + apt-get install -y --no-install-recommends \ + # Build essentials + build-essential && \ + curl https://sh.rustup.rs -sSf | sh -s -- -y --profile minimal --default-toolchain none && \ + rustup install && \ + rustup default "$(sed -n 's/channel = "\(.*\)"/\1/p' rust-toolchain.toml)" && \ + rustc --version && \ + cargo --version + +RUN cat /root/.rustup/settings.toml + +# Stage: Download uv +FROM ghcr.io/astral-sh/uv:0.11.5@sha256:555ac94f9a22e656fc5f2ce5dfee13b04e94d099e46bb8dd3a73ec7263f2e484 AS uv +# Stage: Base python image FROM ghcr.io/goauthentik/fips-python:3.14.3-slim-trixie-fips@sha256:bf45eb77a010d76fe6abd7ae137d1b0c44b6227cd984945042135fdf05ebf8d9 AS python-base ENV VENV_PATH="/ak-root/.venv" \ @@ -93,16 +130,56 @@ WORKDIR /ak-root/ COPY --from=uv /uv /uvx /bin/ -# Stage 6: Python dependencies +# Stage: build rust binary +FROM python-base AS rust-builder + +ARG TARGETARCH +ARG TARGETVARIANT + +WORKDIR /build + +ENV PATH="/root/.cargo/bin:$PATH" +COPY --from=rust-toolchain /root/.rustup /root/.rustup +COPY --from=rust-toolchain /root/.cargo /root/.cargo + +RUN rm -f /etc/apt/apt.conf.d/docker-clean; echo 'Binary::apt::APT::Keep-Downloaded-Packages "true";' > /etc/apt/apt.conf.d/keep-cache +RUN --mount=type=cache,id=apt-$TARGETARCH$TARGETVARIANT,sharing=locked,target=/var/cache/apt \ + --mount=type=bind,target=rust-toolchain.toml,src=rust-toolchain.toml \ + apt-get update && \ + apt-get install -y --no-install-recommends \ + # common dependencies + build-essential \ + # aws-lc deps + cmake clang golang +# See https://github.com/aws/aws-lc-rs/issues/569 +ENV AWS_LC_FIPS_SYS_CC=clang + +RUN --mount=type=bind,target=rust-toolchain.toml,src=rust-toolchain.toml \ + --mount=type=bind,target=Cargo.toml,src=Cargo.toml \ + --mount=type=bind,target=Cargo.lock,src=Cargo.lock \ + --mount=type=bind,target=.cargo/,src=.cargo/ \ + --mount=type=bind,target=build.rs,src=build.rs \ + --mount=type=bind,target=src/,src=src/ \ + --mount=type=bind,target=packages/ak-axum,src=packages/ak-axum \ + --mount=type=bind,target=packages/ak-common,src=packages/ak-common \ + --mount=type=bind,target=packages/client-rust,src=packages/client-rust \ + --mount=type=bind,target=authentik/lib/default.yml,src=authentik/lib/default.yml \ + # Required otherwise workspace discovery fails + --mount=type=bind,target=website/scripts/docsmg/,src=website/scripts/docsmg/ \ + --mount=type=cache,id=cargo-git-db-$TARGETARCH$TARGETVARIANT,target=/root/.cargo/git/db/ \ + --mount=type=cache,id=cargo-registry-$TARGETARCH$TARGETVARIANT,target=/root/.cargo/registry/ \ + --mount=type=cache,id=rust-target-$TARGETARCH$TARGETVARIANT,target=/build/target/ \ + cargo build --package authentik --no-default-features --features core --locked --release && \ + cp ./target/release/authentik /bin/authentik + + +# Stage: Python dependencies FROM python-base AS python-deps ARG TARGETARCH ARG TARGETVARIANT RUN rm -f /etc/apt/apt.conf.d/docker-clean; echo 'Binary::apt::APT::Keep-Downloaded-Packages "true";' > /etc/apt/apt.conf.d/keep-cache - -ENV PATH="/root/.cargo/bin:$PATH" - RUN --mount=type=cache,id=apt-$TARGETARCH$TARGETVARIANT,sharing=locked,target=/var/cache/apt \ --mount=type=bind,target=rust-toolchain.toml,src=rust-toolchain.toml \ apt-get update && \ @@ -119,28 +196,24 @@ RUN --mount=type=cache,id=apt-$TARGETARCH$TARGETVARIANT,sharing=locked,target=/v # python-kadmin-rs krb5-multidev libkrb5-dev heimdal-multidev libclang-dev \ # xmlsec - libltdl-dev && \ - export RUST_TOOLCHAIN="$(awk -F'\"' '/^[[:space:]]*channel[[:space:]]*=/{print $2; exit}' rust-toolchain.toml)" && \ - curl https://sh.rustup.rs -sSf | sh -s -- -y --profile minimal --default-toolchain "${RUST_TOOLCHAIN}" && \ - rustup default "${RUST_TOOLCHAIN}" && \ - rustc --version && \ - cargo --version + libltdl-dev -ENV UV_NO_BINARY_PACKAGE="cryptography lxml python-kadmin-rs xmlsec" \ - # https://github.com/rust-lang/rustup/issues/2949 - # Fixes issues where the rust version in the build cache is older than latest - # and rustup tries to update it, which fails - RUSTUP_PERMIT_COPY_RENAME="1" +ENV PATH="/root/.cargo/bin:$PATH" +COPY --from=rust-toolchain /root/.rustup /root/.rustup +COPY --from=rust-toolchain /root/.cargo /root/.cargo +ENV UV_NO_BINARY_PACKAGE="cryptography lxml python-kadmin-rs xmlsec" RUN --mount=type=bind,target=pyproject.toml,src=pyproject.toml \ --mount=type=bind,target=uv.lock,src=uv.lock \ - --mount=type=bind,target=packages,src=packages \ + --mount=type=bind,target=packages/ak-guardian,src=packages/ak-guardian \ + --mount=type=bind,target=packages/django-channels-postgres,src=packages/django-channels-postgres \ + --mount=type=bind,target=packages/django-dramatiq-postgres,src=packages/django-dramatiq-postgres \ + --mount=type=bind,target=packages/django-postgres-cache,src=packages/django-postgres-cache \ --mount=type=bind,target=rust-toolchain.toml,src=rust-toolchain.toml \ --mount=type=cache,id=uv-python-deps-$TARGETARCH$TARGETVARIANT,target=/root/.cache/uv \ - RUSTUP_TOOLCHAIN="$(awk -F'\"' '/^[[:space:]]*channel[[:space:]]*=/{print $2; exit}' rust-toolchain.toml)" \ - uv sync --frozen --no-install-project --no-dev + uv sync --locked --no-install-project --no-dev -# Stage 7: Run +# Stage: Run FROM python-base AS final-image ARG VERSION @@ -153,7 +226,6 @@ LABEL org.opencontainers.image.authors="Authentik Security Inc." \ org.opencontainers.image.documentation="https://docs.goauthentik.io" \ org.opencontainers.image.licenses="https://github.com/goauthentik/authentik/blob/main/LICENSE" \ org.opencontainers.image.revision=${GIT_BUILD_HASH} \ - org.opencontainers.image.source="https://github.com/goauthentik/authentik" \ org.opencontainers.image.title="authentik server image" \ org.opencontainers.image.url="https://goauthentik.io" \ org.opencontainers.image.vendor="Authentik Security Inc." \ @@ -167,8 +239,7 @@ RUN apt-get update && \ # Required for runtime apt-get install -y --no-install-recommends \ libpq5 libmaxminddb0 ca-certificates \ - krb5-multidev libkrb5-3 libkdb5-10 libkadm5clnt-mit12 \ - heimdal-multidev libkadm5clnt7t64-heimdal \ + libkadm5clnt-mit12 libkadm5clnt7t64-heimdal \ libltdl7 libxslt1.1 && \ # Required for bootstrap & healtcheck apt-get install -y --no-install-recommends runit && \ @@ -192,7 +263,8 @@ COPY ./manage.py / COPY ./blueprints /blueprints COPY ./lifecycle/ /lifecycle COPY ./authentik/sources/kerberos/krb5.conf /etc/krb5.conf -COPY --from=go-builder /go/authentik /bin/authentik +COPY --from=rust-builder /bin/authentik /bin/authentik +COPY --from=go-builder /go/authentik-server /bin/authentik-server COPY ./packages/ /ak-root/packages RUN ln -s /ak-root/packages /packages COPY --from=python-deps /ak-root/.venv /ak-root/.venv diff --git a/lifecycle/container/compose.yml b/lifecycle/container/compose.yml index f6bce8dfe5..21abfb0c37 100644 --- a/lifecycle/container/compose.yml +++ b/lifecycle/container/compose.yml @@ -31,7 +31,7 @@ services: AUTHENTIK_POSTGRESQL__PASSWORD: ${PG_PASS} AUTHENTIK_POSTGRESQL__USER: ${PG_USER:-authentik} AUTHENTIK_SECRET_KEY: ${AUTHENTIK_SECRET_KEY:?secret key required} - image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2026.5.0-rc1} + image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2026.8.0-rc1} ports: - ${COMPOSE_PORT_HTTP:-9000}:9000 - ${COMPOSE_PORT_HTTPS:-9443}:9443 @@ -53,7 +53,7 @@ services: AUTHENTIK_POSTGRESQL__PASSWORD: ${PG_PASS} AUTHENTIK_POSTGRESQL__USER: ${PG_USER:-authentik} AUTHENTIK_SECRET_KEY: ${AUTHENTIK_SECRET_KEY:?secret key required} - image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2026.5.0-rc1} + image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2026.8.0-rc1} restart: unless-stopped shm_size: 512mb user: root diff --git a/lifecycle/container/ldap.Dockerfile b/lifecycle/container/ldap.Dockerfile index c6654519ba..8078b8cc64 100644 --- a/lifecycle/container/ldap.Dockerfile +++ b/lifecycle/container/ldap.Dockerfile @@ -1,7 +1,7 @@ # syntax=docker/dockerfile:1 # Stage 1: Build -FROM --platform=${BUILDPLATFORM} docker.io/library/golang:1.26.1-trixie@sha256:96b28783b99bcd265fbfe0b36a3ac6462416ce6bf1feac85d4c4ff533cbaa473 AS builder +FROM --platform=${BUILDPLATFORM} docker.io/library/golang:1.26.2-trixie@sha256:4a7137ea573f79c86ae451ff05817ed762ef5597fcf732259e97abeb3108d873 AS builder ARG TARGETOS ARG TARGETARCH @@ -19,7 +19,6 @@ RUN --mount=type=cache,id=apt-$TARGETARCH$TARGETVARIANT,sharing=locked,target=/v RUN --mount=type=bind,target=/go/src/goauthentik.io/go.mod,src=./go.mod \ --mount=type=bind,target=/go/src/goauthentik.io/go.sum,src=./go.sum \ - --mount=type=bind,target=/go/src/goauthentik.io/gen-go-api,src=./gen-go-api \ --mount=type=cache,target=/go/pkg/mod \ go mod download @@ -43,7 +42,6 @@ LABEL org.opencontainers.image.authors="Authentik Security Inc." \ org.opencontainers.image.documentation="https://docs.goauthentik.io" \ org.opencontainers.image.licenses="https://github.com/goauthentik/authentik/blob/main/LICENSE" \ org.opencontainers.image.revision=${GIT_BUILD_HASH} \ - org.opencontainers.image.source="https://github.com/goauthentik/authentik" \ org.opencontainers.image.title="authentik LDAP outpost image" \ org.opencontainers.image.url="https://goauthentik.io" \ org.opencontainers.image.vendor="Authentik Security Inc." \ diff --git a/lifecycle/container/proxy.Dockerfile b/lifecycle/container/proxy.Dockerfile index 68f42ba99e..461942de67 100644 --- a/lifecycle/container/proxy.Dockerfile +++ b/lifecycle/container/proxy.Dockerfile @@ -6,18 +6,32 @@ FROM --platform=${BUILDPLATFORM} docker.io/library/node:24 AS web-builder ENV NODE_ENV=production WORKDIR /static +# These files need to be copied and cannot be mounted as `npm ci` will build the client's typescript +COPY ./packages /packages +COPY ./web/packages /static/packages + +RUN --mount=type=bind,target=/static/package.json,src=./package.json \ + --mount=type=bind,target=/static/package-lock.json,src=./package-lock.json \ + --mount=type=bind,target=/static/web/package.json,src=./web/package.json \ + --mount=type=bind,target=/static/web/package-lock.json,src=./web/package-lock.json \ + --mount=type=bind,target=/static/scripts/node/,src=./scripts/node/ \ + --mount=type=bind,target=/static/packages/logger-js/,src=./packages/logger-js/ \ + node ./scripts/node/setup-corepack.mjs --force && \ + node ./scripts/node/lint-runtime.mjs ./web + COPY package.json / + RUN --mount=type=bind,target=/static/package.json,src=./web/package.json \ --mount=type=bind,target=/static/package-lock.json,src=./web/package-lock.json \ --mount=type=bind,target=/static/scripts,src=./web/scripts \ --mount=type=cache,target=/root/.npm \ - npm ci + corepack npm ci COPY web . RUN npm run build-proxy # Stage 2: Build -FROM --platform=${BUILDPLATFORM} docker.io/library/golang:1.26.1-trixie@sha256:96b28783b99bcd265fbfe0b36a3ac6462416ce6bf1feac85d4c4ff533cbaa473 AS builder +FROM --platform=${BUILDPLATFORM} docker.io/library/golang:1.26.2-trixie@sha256:4a7137ea573f79c86ae451ff05817ed762ef5597fcf732259e97abeb3108d873 AS builder ARG TARGETOS ARG TARGETARCH @@ -35,7 +49,6 @@ RUN --mount=type=cache,id=apt-$TARGETARCH$TARGETVARIANT,sharing=locked,target=/v RUN --mount=type=bind,target=/go/src/goauthentik.io/go.mod,src=./go.mod \ --mount=type=bind,target=/go/src/goauthentik.io/go.sum,src=./go.sum \ - --mount=type=bind,target=/go/src/goauthentik.io/gen-go-api,src=./gen-go-api \ --mount=type=cache,target=/go/pkg/mod \ go mod download @@ -59,7 +72,6 @@ LABEL org.opencontainers.image.authors="Authentik Security Inc." \ org.opencontainers.image.documentation="https://docs.goauthentik.io" \ org.opencontainers.image.licenses="https://github.com/goauthentik/authentik/blob/main/LICENSE" \ org.opencontainers.image.revision=${GIT_BUILD_HASH} \ - org.opencontainers.image.source="https://github.com/goauthentik/authentik" \ org.opencontainers.image.title="authentik proxy outpost image" \ org.opencontainers.image.url="https://goauthentik.io" \ org.opencontainers.image.vendor="Authentik Security Inc." \ diff --git a/lifecycle/container/rac.Dockerfile b/lifecycle/container/rac.Dockerfile index 606cfad982..1b2db3676b 100644 --- a/lifecycle/container/rac.Dockerfile +++ b/lifecycle/container/rac.Dockerfile @@ -1,7 +1,7 @@ # syntax=docker/dockerfile:1 # Stage 1: Build -FROM --platform=${BUILDPLATFORM} docker.io/library/golang:1.26.1-trixie@sha256:96b28783b99bcd265fbfe0b36a3ac6462416ce6bf1feac85d4c4ff533cbaa473 AS builder +FROM --platform=${BUILDPLATFORM} docker.io/library/golang:1.26.2-trixie@sha256:4a7137ea573f79c86ae451ff05817ed762ef5597fcf732259e97abeb3108d873 AS builder ARG TARGETOS ARG TARGETARCH @@ -19,7 +19,6 @@ RUN --mount=type=cache,id=apt-$TARGETARCH$TARGETVARIANT,sharing=locked,target=/v RUN --mount=type=bind,target=/go/src/goauthentik.io/go.mod,src=./go.mod \ --mount=type=bind,target=/go/src/goauthentik.io/go.sum,src=./go.sum \ - --mount=type=bind,target=/go/src/goauthentik.io/gen-go-api,src=./gen-go-api \ --mount=type=cache,target=/go/pkg/mod \ go mod download @@ -43,7 +42,6 @@ LABEL org.opencontainers.image.authors="Authentik Security Inc." \ org.opencontainers.image.documentation="https://docs.goauthentik.io" \ org.opencontainers.image.licenses="https://github.com/goauthentik/authentik/blob/main/LICENSE" \ org.opencontainers.image.revision=${GIT_BUILD_HASH} \ - org.opencontainers.image.source="https://github.com/goauthentik/authentik" \ org.opencontainers.image.title="authentik RAC outpost image" \ org.opencontainers.image.url="https://goauthentik.io" \ org.opencontainers.image.vendor="Authentik Security Inc." \ diff --git a/lifecycle/container/radius.Dockerfile b/lifecycle/container/radius.Dockerfile index cf64ae3c7f..fd7ddd43f1 100644 --- a/lifecycle/container/radius.Dockerfile +++ b/lifecycle/container/radius.Dockerfile @@ -1,7 +1,7 @@ # syntax=docker/dockerfile:1 # Stage 1: Build -FROM --platform=${BUILDPLATFORM} docker.io/library/golang:1.26.1-trixie@sha256:96b28783b99bcd265fbfe0b36a3ac6462416ce6bf1feac85d4c4ff533cbaa473 AS builder +FROM --platform=${BUILDPLATFORM} docker.io/library/golang:1.26.2-trixie@sha256:4a7137ea573f79c86ae451ff05817ed762ef5597fcf732259e97abeb3108d873 AS builder ARG TARGETOS ARG TARGETARCH @@ -19,7 +19,6 @@ RUN --mount=type=cache,id=apt-$TARGETARCH$TARGETVARIANT,sharing=locked,target=/v RUN --mount=type=bind,target=/go/src/goauthentik.io/go.mod,src=./go.mod \ --mount=type=bind,target=/go/src/goauthentik.io/go.sum,src=./go.sum \ - --mount=type=bind,target=/go/src/goauthentik.io/gen-go-api,src=./gen-go-api \ --mount=type=cache,target=/go/pkg/mod \ go mod download @@ -43,7 +42,6 @@ LABEL org.opencontainers.image.authors="Authentik Security Inc." \ org.opencontainers.image.documentation="https://docs.goauthentik.io" \ org.opencontainers.image.licenses="https://github.com/goauthentik/authentik/blob/main/LICENSE" \ org.opencontainers.image.revision=${GIT_BUILD_HASH} \ - org.opencontainers.image.source="https://github.com/goauthentik/authentik" \ org.opencontainers.image.title="authentik RADIUS outpost image" \ org.opencontainers.image.url="https://goauthentik.io" \ org.opencontainers.image.vendor="Authentik Security Inc." \ diff --git a/lifecycle/gunicorn.conf.py b/lifecycle/gunicorn.conf.py index 04b942ea41..d7aa1cb812 100644 --- a/lifecycle/gunicorn.conf.py +++ b/lifecycle/gunicorn.conf.py @@ -47,11 +47,11 @@ max_requests_jitter = CONFIG.get_int("web.max_requests_jitter", 50) logconfig_dict = get_logger_config() -default_workers = 2 - -workers = CONFIG.get_int("web.workers", default_workers) +workers = CONFIG.get_int("web.workers", 2) threads = CONFIG.get_int("web.threads", 4) +control_socket_disable = True + def post_fork(server: "Arbiter", worker: DjangoUvicornWorker): # noqa: UP037 """Tell prometheus to use worker number instead of process ID for multiprocess""" diff --git a/lifecycle/worker_process.py b/lifecycle/worker_process.py new file mode 100755 index 0000000000..ac6110e92c --- /dev/null +++ b/lifecycle/worker_process.py @@ -0,0 +1,155 @@ +#!/usr/bin/env python3 + +import os +import random +import signal +import sys +from http.server import BaseHTTPRequestHandler, HTTPServer +from socket import AF_UNIX +from threading import Event, Thread +from typing import Any + +from dramatiq import Worker, get_broker +from structlog.stdlib import get_logger + +from authentik.lib.config import CONFIG + +LOGGER = get_logger() +INITIAL_WORKER_ID = 1000 + + +class HttpHandler(BaseHTTPRequestHandler): + def check_db(self): + from django.db import connections + + for db_conn in connections.all(): + # Force connection reload + db_conn.connect() + _ = db_conn.cursor() + + def do_GET(self): + from django.db import DatabaseError, InterfaceError, OperationalError, connections + from psycopg.errors import AdminShutdown + + from authentik.root.monitoring import monitoring_set + + DATABASE_ERRORS = ( + AdminShutdown, + InterfaceError, + DatabaseError, + OperationalError, + ) + + if self.path == "/-/metrics/": + try: + monitoring_set.send(self) + except DATABASE_ERRORS as exc: + LOGGER.warning("failed to send monitoring_set", exc=exc) + for db_conn in connections.all(): + db_conn.close() + self.send_response(503) + else: + self.send_response(200) + self.end_headers() + elif self.path == "/-/health/ready/": + try: + self.check_db() + except DATABASE_ERRORS as exc: + LOGGER.warning("failed to check database health", exc=exc) + for db_conn in connections.all(): + db_conn.close() + self.send_response(503) + else: + self.send_response(200) + self.end_headers() + else: + self.send_response(200) + self.end_headers() + + def log_message(self, format: str, *args: Any) -> None: + pass + + +class UnixSocketServer(HTTPServer): + address_family = AF_UNIX + + +def main(worker_id: int, socket_path: str): + shutdown = Event() + try: + os.remove(socket_path) + except OSError, FileNotFoundError: + pass + srv = UnixSocketServer(socket_path, HttpHandler) + + def immediate_shutdown(signum, frame): + nonlocal srv + srv.shutdown() + sys.exit(0) + + def graceful_shutdown(signum, frame): + nonlocal shutdown + shutdown.set() + + signal.signal(signal.SIGHUP, immediate_shutdown) + signal.signal(signal.SIGINT, immediate_shutdown) + signal.signal(signal.SIGQUIT, immediate_shutdown) + signal.signal(signal.SIGTERM, graceful_shutdown) + + random.seed() + + logger = LOGGER.bind(worker_id=worker_id) + + logger.debug("Loading broker...") + broker = get_broker() + broker.emit_after("process_boot") + + logger.debug("Starting worker threads...") + queues = None # all queues + worker = Worker(broker, queues=queues, worker_threads=CONFIG.get_int("worker.threads")) + worker.worker_id = worker_id + worker.start() + logger.info("Worker process is ready for action.") + + Thread(target=srv.serve_forever).start() + + # Notify rust process that we are ready + os.kill(os.getppid(), signal.SIGUSR2) + + shutdown.wait() + + logger.info("Shutting down worker...") + + # 5 secs if debug, 5 mins otherwise + worker.stop(timeout=5_000 if CONFIG.get_bool("debug") else 600_000) + + srv.shutdown() + + broker.close() + logger.info("Worker shut down.") + + +if __name__ == "__main__": + if len(sys.argv) != 3: # noqa: PLR2004 + print("USAGE: worker_process ") + sys.exit(1) + + worker_id = int(sys.argv[1]) + socket_path = sys.argv[2] + + from authentik.root.setup import setup + + setup() + + os.environ.setdefault("DJANGO_SETTINGS_MODULE", "authentik.root.settings") + + import django + + django.setup() + + if worker_id == INITIAL_WORKER_ID: + from lifecycle.migrate import run_migrations + + run_migrations() + + main(worker_id, socket_path) diff --git a/locale/bg_BG/LC_MESSAGES/django.mo b/locale/bg_BG/LC_MESSAGES/django.mo new file mode 100644 index 0000000000..77ba85aa92 Binary files /dev/null and b/locale/bg_BG/LC_MESSAGES/django.mo differ diff --git a/locale/bg_BG/LC_MESSAGES/django.po b/locale/bg_BG/LC_MESSAGES/django.po new file mode 100644 index 0000000000..ec2d6e741f --- /dev/null +++ b/locale/bg_BG/LC_MESSAGES/django.po @@ -0,0 +1,5397 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +# Translators: +# Marc Schmitt, 2025 +# Vladimir Goranov, 2026 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-05-06 00:27+0000\n" +"PO-Revision-Date: 2025-12-01 19:09+0000\n" +"Last-Translator: Vladimir Goranov, 2026\n" +"Language-Team: Bulgarian (Bulgaria) (https://app.transifex.com/authentik/teams/119923/bg_BG/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: bg_BG\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: authentik/admin/files/api.py +#, python-brace-format +msgid "File size ({file.size}B) exceeds maximum allowed " +msgstr "Размерът на файла ({file.size}B) надвишава максимално разрешения " + +#: authentik/admin/files/validation.py +msgid "File name cannot be empty" +msgstr "Името на файла не може да е празно" + +#: authentik/admin/files/validation.py +#, python-format +msgid "" +"File name can only contain letters (a-z, A-Z), numbers (0-9), dots (.), " +"hyphens (-), underscores (_), forward slashes (/), and the placeholder " +"%(theme)s for theme-specific files" +msgstr "" +"Името на файла може да съдържа само букви (a-z, A-Z), цифри (0-9), точки " +"(.), тирета (-), долни черти (_), наклонени черти (/) и заместителя " +"%(theme)s за специфични за темата файлове" + +#: authentik/admin/files/validation.py +msgid "File name cannot contain duplicate /" +msgstr "Името на файла не може да съдържа дублирани /" + +#: authentik/admin/files/validation.py +msgid "Absolute paths are not allowed" +msgstr "Абсолютните пътища не са разрешени" + +#: authentik/admin/files/validation.py +msgid "Parent directory references ('..') are not allowed" +msgstr "Препратки към родителска директория ('..') не са разрешени" + +#: authentik/admin/files/validation.py +msgid "Paths cannot start with '.'" +msgstr "Пътищата не могат да започват с '.'" + +#: authentik/admin/files/validation.py +#, python-brace-format +msgid "File name too long (max {MAX_FILE_NAME_LENGTH} characters)" +msgstr "Името на файла е твърде дълго (макс {MAX_FILE_NAME_LENGTH} знака)" + +#: authentik/admin/files/validation.py +#, python-brace-format +msgid "Path component too long (max {MAX_PATH_COMPONENT_LENGTH} characters)" +msgstr "" +"Компонентът на пътя е твърде дълъг (макс {MAX_PATH_COMPONENT_LENGTH} знака)" + +#: authentik/admin/models.py +msgid "Version history" +msgstr "История на версиите" + +#: authentik/admin/tasks.py +msgid "Update latest version info." +msgstr "Обнови информацията за последната версия." + +#: authentik/admin/tasks.py +#, python-brace-format +msgid "New version {version} available!" +msgstr "Налична е нова версия {version}!" + +#: authentik/api/v3/schema/query.py +msgid "Which field to use when ordering the results." +msgstr "Кое поле да се използва при подреждане на резултатите." + +#: authentik/api/v3/schema/query.py +msgid "A page number within the paginated result set." +msgstr "Номер на страница в страницирания набор от резултати." + +#: authentik/api/v3/schema/query.py +msgid "Number of results to return per page." +msgstr "Брой резултати, които да се връщат на страница." + +#: authentik/api/v3/schema/query.py +msgid "A search term." +msgstr "Термин за търсене." + +#: authentik/api/v3/schema/response.py +msgid "Generic API Error" +msgstr "Обща API грешка" + +#: authentik/api/v3/schema/response.py +msgid "Validation Error" +msgstr "Валидационна грешка" + +#: authentik/blueprints/api.py +msgid "Blueprint file does not exist" +msgstr "Blueprint файлът не съществува" + +#: authentik/blueprints/api.py +msgid "Context must be valid JSON" +msgstr "" + +#: authentik/blueprints/api.py +msgid "Context must be a JSON object" +msgstr "" + +#: authentik/blueprints/api.py +msgid "Failed to validate blueprint" +msgstr "Неуспешно валидиране на blueprint" + +#: authentik/blueprints/api.py +msgid "Either path or content must be set." +msgstr "Трябва да е зададен или path, или content." + +#: authentik/blueprints/api.py +#, python-brace-format +msgid "User lacks permission to create {model}" +msgstr "Потребителят няма разрешение за създаване на {model}" + +#: authentik/blueprints/models.py +msgid "Managed by authentik" +msgstr "Управлявано от authentik" + +#: authentik/blueprints/models.py +msgid "" +"Objects that are managed by authentik. These objects are created and updated" +" automatically. This flag only indicates that an object can be overwritten " +"by migrations. You can still modify the objects via the API, but expect " +"changes to be overwritten in a later update." +msgstr "" +"Обекти, управлявани от authentik. Тези обекти се създават и обновяват " +"автоматично. Този флаг показва само, че обект може да бъде презаписан от " +"миграции. Все пак можете да модифицирате обектите чрез API, но очаквайте " +"промените да бъдат презаписани при по-късно обновяване." + +#: authentik/blueprints/models.py +msgid "Blueprint Instance" +msgstr "Blueprint инстанция" + +#: authentik/blueprints/models.py +msgid "Blueprint Instances" +msgstr "Blueprint инстанции" + +#: authentik/blueprints/v1/exporter.py +#, python-brace-format +msgid "authentik Export - {date}" +msgstr "authentik експорт - {date}" + +#: authentik/blueprints/v1/tasks.py +msgid "Find blueprints as `blueprints_find` does, but return a safe dict." +msgstr "" +"Намира blueprints, както прави `blueprints_find`, но връща безопасен dict." + +#: authentik/blueprints/v1/tasks.py +msgid "Find blueprints and check if they need to be created in the database." +msgstr "" +"Намира blueprints и проверява дали трябва да бъдат създадени в базата данни." + +#: authentik/blueprints/v1/tasks.py +msgid "Apply single blueprint." +msgstr "Прилага единичен blueprint." + +#: authentik/blueprints/v1/tasks.py +msgid "Remove blueprints which couldn't be fetched." +msgstr "Премахва blueprints, които не могат да бъдат извлечени." + +#: authentik/brands/models.py +msgid "" +"Domain that activates this brand. Can be a superset, i.e. `a.b` for `aa.b` " +"and `ba.b`" +msgstr "" +"Домейн, който активира този бранд. Може да е суперсет, т.е. `a.b` за `aa.b` " +"и `ba.b`" + +#: authentik/brands/models.py +msgid "" +"When set, external users will be redirected to this application after " +"authenticating." +msgstr "" +"Когато е зададено, външните потребители ще бъдат пренасочени към това " +"приложение след автентикация." + +#: authentik/brands/models.py +msgid "Web Certificate used by the authentik Core webserver." +msgstr "Уеб сертификат, използван от уеб сървъра на authentik Core." + +#: authentik/brands/models.py +msgid "Certificates used for client authentication." +msgstr "Сертификати, използвани за клиентска автентикация." + +#: authentik/brands/models.py +msgid "Brand" +msgstr "Бранд" + +#: authentik/brands/models.py +msgid "Brands" +msgstr "Брандове" + +#: authentik/common/oauth/constants.py +msgid "Based on the Hashed User ID" +msgstr "Базирано на хешираното ID на потребителя" + +#: authentik/common/oauth/constants.py +msgid "Based on user ID" +msgstr "Базирано на ID на потребителя" + +#: authentik/common/oauth/constants.py +msgid "Based on user UUID" +msgstr "Базирано на UUID на потребителя" + +#: authentik/common/oauth/constants.py +msgid "Based on the username" +msgstr "Базирано на потребителското име" + +#: authentik/common/oauth/constants.py +msgid "Based on the User's Email. This is recommended over the UPN method." +msgstr "Базирано на имейла на потребителя. Препоръчва се пред UPN метода." + +#: authentik/common/oauth/constants.py +msgid "" +"Based on the User's UPN, only works if user has a 'upn' attribute set. Use " +"this method only if you have different UPN and Mail domains." +msgstr "" +"Базирано на UPN на потребителя, работи само ако потребителят има зададен " +"атрибут 'upn'. Използвайте този метод само ако имате различни UPN и Mail " +"домейни." + +#: authentik/core/api/application_entitlements.py +msgid "User does not have access to application." +msgstr "Потребителят няма достъп до приложението." + +#: authentik/core/api/applications.py +#, python-brace-format +msgid "The slug '{slug}' is reserved and cannot be used for applications." +msgstr "slug '{slug}' е резервиран и не може да се използва за приложения." + +#: authentik/core/api/providers.py +msgid "" +"When not set all providers are returned. When set to true, only backchannel " +"providers are returned. When set to false, backchannel providers are " +"excluded" +msgstr "" +"Когато не е зададено, се връщат всички доставчици. Когато е зададено true, " +"се връщат само доставчици за заден канал. Когато е зададено false, " +"доставчиците за заден канал се изключват" + +#: authentik/core/api/users.py +msgid "Invalid password hash format. Must be a valid Django password hash." +msgstr "" + +#: authentik/core/api/users.py +msgid "Cannot set both password and password_hash. Use only one." +msgstr "" + +#: authentik/core/api/users.py +msgid "No leading or trailing slashes allowed." +msgstr "Не са разрешени водещи или завършващи наклонени черти." + +#: authentik/core/api/users.py +msgid "No empty segments in user path allowed." +msgstr "Не са разрешени празни сегменти в пътя на потребителя." + +#: authentik/core/api/users.py +msgid "Can't change internal service account to other user type." +msgstr "" +"Не може да се промени вътрешен служебен акаунт към друг тип потребител." + +#: authentik/core/api/users.py +msgid "Setting a user to internal service account is not allowed." +msgstr "" +"Задаването на потребител като вътрешен служебен акаунт не е разрешено." + +#: authentik/core/api/users.py +msgid "Can't modify internal service account users" +msgstr "Вътрешните служебни акаунти не могат да се модифицират" + +#: authentik/core/api/users.py +msgid "filter: failed to parse JSON" +msgstr "filter: неуспешно парсиране на JSON" + +#: authentik/core/api/users.py +msgid "filter: value must be key:value mapping" +msgstr "filter: стойността трябва да е съпоставяне ключ:стойност" + +#: authentik/core/api/users.py +msgid "No recovery flow set." +msgstr "Няма зададен поток за възстановяване." + +#: authentik/core/api/users.py +msgid "Recovery flow not applicable to user" +msgstr "Потокът за възстановяване не е приложим за потребителя" + +#: authentik/core/api/users.py +msgid "A user/group with these details already exists" +msgstr "Потребител/група с тези детайли вече съществува" + +#: authentik/core/api/users.py +msgid "Unable to create user" +msgstr "Невъзможно създаване на потребител" + +#: authentik/core/api/users.py +msgid "Unknown error occurred" +msgstr "Възникна неизвестна грешка" + +#: authentik/core/api/users.py +msgid "User does not have an email address set." +msgstr "Потребителят няма зададен имейл адрес." + +#: authentik/core/api/users.py +msgid "Email stage not found." +msgstr "Стъпка за имейл не е намерена." + +#: authentik/core/api/users.py +msgid "This field is required." +msgstr "Това поле е задължително." + +#: authentik/core/apps.py +msgid "" +"Configure if applications without any policy/group/user bindings should be " +"accessible to any user." +msgstr "" +"Конфигурирайте дали приложения без обвързвания с политика/група/потребител " +"трябва да са достъпни за всеки потребител." + +#: authentik/core/models.py +msgid "name" +msgstr "име" + +#: authentik/core/models.py +msgid "Users added to this group will be superusers." +msgstr "Потребителите добавени към тази група ще бъдат администратори." + +#: authentik/core/models.py +msgid "Group" +msgstr "Група" + +#: authentik/core/models.py +msgid "Groups" +msgstr "Групи" + +#: authentik/core/models.py +msgid "Add user to group" +msgstr "Добави потребител към група" + +#: authentik/core/models.py +msgid "Remove user from group" +msgstr "Премахни потребител от група" + +#: authentik/core/models.py +msgid "Enable superuser status" +msgstr "Активирай статус на суперпотребител" + +#: authentik/core/models.py +msgid "Disable superuser status" +msgstr "Деактивирай статус на суперпотребител" + +#: authentik/core/models.py +msgid "Group Parentage Node" +msgstr "Възел на родителство на група" + +#: authentik/core/models.py +msgid "Group Parentage Nodes" +msgstr "Възли на родителство на група" + +#: authentik/core/models.py +msgid "User's display name." +msgstr "Показвано име на потребителя." + +#: authentik/core/models.py authentik/providers/oauth2/models.py +#: authentik/providers/saml/models.py +msgid "User" +msgstr "Потребител" + +#: authentik/core/models.py +msgid "Users" +msgstr "Потребители" + +#: authentik/core/models.py +#: authentik/stages/email/templates/email/password_reset.html +msgid "Reset Password" +msgstr "Нулиране на парола" + +#: authentik/core/models.py +msgid "Can impersonate other users" +msgstr "Може да имитира други потребители" + +#: authentik/core/models.py +msgid "Can preview user data sent to providers" +msgstr "Може да преглежда потребителски данни, изпращани към доставчици" + +#: authentik/core/models.py +msgid "View applications the user has access to" +msgstr "Преглед на приложенията, до които потребителят има достъп" + +#: authentik/core/models.py +msgid "" +"Flow used for authentication when the associated application is accessed by " +"an un-authenticated user." +msgstr "" +"Поток, използван за автентикация, когато свързаното приложение е достъпвано " +"от неавтентикиран потребител." + +#: authentik/core/models.py +msgid "Flow used when authorizing this provider." +msgstr "Поток, използван при оторизиране на този доставчик." + +#: authentik/core/models.py +msgid "Flow used ending the session from a provider." +msgstr "Поток, използван за прекратяване на сесията от доставчик." + +#: authentik/core/models.py +msgid "" +"Accessed from applications; optional backchannel providers for protocols " +"like LDAP and SCIM." +msgstr "" +"Достъпвани от приложения; незадължителни доставчици за заден канал за " +"протоколи като LDAP и SCIM." + +#: authentik/core/models.py +msgid "Application's display Name." +msgstr "Име на приложението." + +#: authentik/core/models.py +msgid "Internal application name, used in URLs." +msgstr "Вътрешно име на приложението, използвано в URL-ли." + +#: authentik/core/models.py +msgid "Open launch URL in a new browser tab or window." +msgstr "Отвори URL за стартиране в нов раздел или прозорец на браузъра." + +#: authentik/core/models.py +msgid "Hide this application from the user's My applications page." +msgstr "" + +#: authentik/core/models.py +msgid "Application" +msgstr "Приложение" + +#: authentik/core/models.py +msgid "Applications" +msgstr "Приложения" + +#: authentik/core/models.py +msgid "Application Entitlement" +msgstr "Правомощие на приложение" + +#: authentik/core/models.py +msgid "Application Entitlements" +msgstr "Правомощия на приложение" + +#: authentik/core/models.py +msgid "Use the source-specific identifier" +msgstr "Използвай идентификатор специфичен за дадения доставчик." + +#: authentik/core/models.py +msgid "" +"Link to a user with identical email address. Can have security implications " +"when a source doesn't validate email addresses." +msgstr "" +"Свързване с потребител с идентичен имейл адрес. Може да има последствия за " +"сигурността, когато източникът не валидира имейл адреси." + +#: authentik/core/models.py +msgid "" +"Use the user's email address, but deny enrollment when the email address " +"already exists." +msgstr "" +"Използвай имейл адреса на потребителя, но откажи регистрация, ако имейл " +"адресът вече съществува." + +#: authentik/core/models.py +msgid "" +"Link to a user with identical username. Can have security implications when " +"a username is used with another source." +msgstr "" +"Свързване с потребител с идентично потребителско име. Може да има " +"последствия за сигурността, когато потребителско име се използва с друг " +"източник." + +#: authentik/core/models.py +msgid "" +"Use the user's username, but deny enrollment when the username already " +"exists." +msgstr "" +"Използвай потребителското име на потребителя, но откажи регистрация, ако " +"потребителското име вече съществува." + +#: authentik/core/models.py +msgid "" +"Link to a group with identical name. Can have security implications when a " +"group name is used with another source." +msgstr "" +"Свързване с група с идентично име. Може да има последствия за сигурността, " +"когато име на група се използва с друг източник." + +#: authentik/core/models.py +msgid "Use the group name, but deny enrollment when the name already exists." +msgstr "" +"Използвай името на групата, но откажи регистрация, когато името вече " +"съществува." + +#: authentik/core/models.py +msgid "Source's display Name." +msgstr "Показвано име на източника." + +#: authentik/core/models.py +msgid "Internal source name, used in URLs." +msgstr "Вътрешно име на източник, използвано в URL адресите." + +#: authentik/core/models.py +msgid "" +"When enabled, this source will be displayed as a prominent button on the " +"login page, instead of a small icon." +msgstr "" +"Когато е активирано, този източник ще бъде показан като забележим бутон на " +"страницата за вход, вместо като малка икона." + +#: authentik/core/models.py +msgid "Flow to use when authenticating existing users." +msgstr "Поток за използване при автентикация на съществуващи потребители." + +#: authentik/core/models.py +msgid "Flow to use when enrolling new users." +msgstr "Поток за използване при регистриране на нови потребители." + +#: authentik/core/models.py +msgid "" +"How the source determines if an existing user should be authenticated or a " +"new user enrolled." +msgstr "" +"Как източникът определя дали съществуващ потребител трябва да бъде " +"автентикиран или нов потребител да бъде регистриран." + +#: authentik/core/models.py +msgid "" +"How the source determines if an existing group should be used or a new group" +" created." +msgstr "" +"Как източникът определя дали съществуваща група трябва да бъде използвана " +"или нова група да бъде създадена." + +#: authentik/core/models.py authentik/providers/scim/models.py +msgid "Token" +msgstr "Токен" + +#: authentik/core/models.py +msgid "Tokens" +msgstr "Токени" + +#: authentik/core/models.py authentik/endpoints/connectors/agent/models.py +msgid "View token's key" +msgstr "Виж ключа на токена" + +#: authentik/core/models.py +msgid "Set a token's key" +msgstr "Задай ключ на токен" + +#: authentik/core/models.py +msgid "Property Mapping" +msgstr "Съпоставяне на свойство" + +#: authentik/core/models.py +msgid "Property Mappings" +msgstr "Съпоставяния на свойства" + +#: authentik/core/models.py +msgid "session data" +msgstr "данни за сесия" + +#: authentik/core/models.py +msgid "Session" +msgstr "Сесия" + +#: authentik/core/models.py +msgid "Sessions" +msgstr "Сесии" + +#: authentik/core/models.py +msgid "Authenticated Session" +msgstr "Автентикирана сесия" + +#: authentik/core/models.py +msgid "Authenticated Sessions" +msgstr "Автентикирани сесии" + +#: authentik/core/sources/flow_manager.py +#, python-brace-format +msgid "" +"Request to authenticate with {source} has been denied. Please authenticate " +"with the source you've previously signed up with." +msgstr "" +"Заявката за автентикация с {source} беше отказана. Моля, автентикирайте се с" +" източника, с който сте се регистрирали преди." + +#: authentik/core/sources/flow_manager.py +msgid "Configured flow does not exist." +msgstr "Конфигурираният поток не съществува." + +#: authentik/core/sources/flow_manager.py +#, python-brace-format +msgid "Successfully authenticated with {source}!" +msgstr "Успешно автентикиран с {source}!" + +#: authentik/core/sources/flow_manager.py +#, python-brace-format +msgid "Successfully linked {source}!" +msgstr "Успешно свързан {source}!" + +#: authentik/core/sources/flow_manager.py +msgid "Source is not configured for enrollment." +msgstr "Източникът не е конфигуриран за регистрация." + +#: authentik/core/tasks.py +msgid "Remove expired objects." +msgstr "Премахни изтекли обекти." + +#: authentik/core/tasks.py +msgid "Remove temporary users created by SAML Sources." +msgstr "Премахни временните потребители, създадени от SAML източници." + +#: authentik/core/templates/if/error.html +#: authentik/policies/templates/policies/denied.html +msgid "Go home" +msgstr "Към началото" + +#: authentik/core/templates/login/base_full.html +msgid "Site footer" +msgstr "Долен колонтитул на сайта" + +#: authentik/core/templates/login/base_full.html +msgid "Flow links" +msgstr "Връзки на потока" + +#: authentik/core/templates/login/base_full.html +#: authentik/flows/templates/if/flow-sfe.html +msgid "Powered by authentik" +msgstr "Поддържано от authentik" + +#: authentik/core/views/apps.py +#: authentik/enterprise/providers/ws_federation/views.py +#: authentik/providers/oauth2/views/authorize.py +#: authentik/providers/oauth2/views/device_init.py +#: authentik/providers/saml/views/sso.py +#, python-format +msgid "You're about to sign into %(application)s." +msgstr "На път сте да влезете в %(application)s." + +#: authentik/core/views/interface.py +msgid "Interface can only be accessed by internal users." +msgstr "Интерфейсът е достъпен само от вътрешни потребители." + +#: authentik/crypto/api.py +msgid "Subject-alt name" +msgstr "Subject-alt name" + +#: authentik/crypto/builder.py +msgid "rsa" +msgstr "rsa" + +#: authentik/crypto/builder.py +msgid "ecdsa" +msgstr "ecdsa" + +#: authentik/crypto/builder.py authentik/crypto/models.py +msgid "Ed25519" +msgstr "Ed25519" + +#: authentik/crypto/builder.py authentik/crypto/models.py +msgid "Ed448" +msgstr "Ed448" + +#: authentik/crypto/models.py +msgid "RSA" +msgstr "RSA" + +#: authentik/crypto/models.py +msgid "Elliptic Curve" +msgstr "Елиптична крива" + +#: authentik/crypto/models.py +msgid "DSA" +msgstr "DSA" + +#: authentik/crypto/models.py +msgid "PEM-encoded Certificate data" +msgstr "PEM-кодирани данни за сертификат" + +#: authentik/crypto/models.py +msgid "" +"Optional Private Key. If this is set, you can use this keypair for " +"encryption." +msgstr "" +"Незадължителен частен ключ. Ако е зададен, можете да използвате тази двойка " +"ключове за криптиране." + +#: authentik/crypto/models.py +msgid "Key algorithm type detected from the certificate's public key" +msgstr "Тип на алгоритъма на ключа, открит от публичния ключ на сертификата" + +#: authentik/crypto/models.py +msgid "Certificate expiry date" +msgstr "Дата на изтичане на сертификата" + +#: authentik/crypto/models.py +msgid "Certificate subject as RFC4514 string" +msgstr "Subject на сертификата като RFC4514 низ" + +#: authentik/crypto/models.py +msgid "SHA256 fingerprint of the certificate" +msgstr "SHA256 отпечатък на сертификата" + +#: authentik/crypto/models.py +msgid "SHA1 fingerprint of the certificate" +msgstr "SHA1 отпечатък на сертификата" + +#: authentik/crypto/models.py +msgid "Key ID generated from private key" +msgstr "ID на ключ, генериран от частен ключ" + +#: authentik/crypto/models.py +msgid "Certificate-Key Pair" +msgstr "Двойка сертификат-ключ" + +#: authentik/crypto/models.py +msgid "Certificate-Key Pairs" +msgstr "Двойки сертификат-ключ" + +#: authentik/crypto/models.py +msgid "View Certificate-Key pair's certificate" +msgstr "Виж сертификата на двойката сертификат-ключ" + +#: authentik/crypto/models.py +msgid "View Certificate-Key pair's private key" +msgstr "Виж частния ключ на двойката сертификат-ключ" + +#: authentik/crypto/tasks.py +msgid "Discover, import and update certificates from the filesystem." +msgstr "" +"Откриване, импортиране и обновяване на сертификати от файловата система." + +#: authentik/endpoints/api/stages.py +msgid "Selected connector is not compatible with this stage." +msgstr "Избраният конектор не е съвместим с тази стъпка." + +#: authentik/endpoints/connectors/agent/api/connectors.py +msgid "Selected platform not supported" +msgstr "Избраната платформа не се поддържа" + +#: authentik/endpoints/connectors/agent/api/connectors.py +msgid "Token is expired" +msgstr "Токенът е изтекъл" + +#: authentik/endpoints/connectors/agent/api/connectors.py +msgid "Invalid token for connector" +msgstr "Невалиден токен за конектор" + +#: authentik/endpoints/connectors/agent/models.py +msgid "Agent Connector" +msgstr "Конектор на агент" + +#: authentik/endpoints/connectors/agent/models.py +msgid "Agent Connectors" +msgstr "Конектори на агент" + +#: authentik/endpoints/connectors/agent/models.py +#: authentik/providers/oauth2/models.py +msgid "Device Token" +msgstr "Токен за устройство" + +#: authentik/endpoints/connectors/agent/models.py +#: authentik/providers/oauth2/models.py +msgid "Device Tokens" +msgstr "Токени за устройства" + +#: authentik/endpoints/connectors/agent/models.py +msgid "Enrollment Token" +msgstr "Токен за регистрация" + +#: authentik/endpoints/connectors/agent/models.py +msgid "Enrollment Tokens" +msgstr "Токени за регистрация" + +#: authentik/endpoints/connectors/agent/models.py +msgid "Device authentication token" +msgstr "Токен за автентикация на устройство" + +#: authentik/endpoints/connectors/agent/models.py +msgid "Device authentication tokens" +msgstr "Токени за автентикация на устройства" + +#: authentik/endpoints/connectors/agent/models.py +msgid "Apple Nonce" +msgstr "Apple Nonce" + +#: authentik/endpoints/connectors/agent/models.py +msgid "Apple Nonces" +msgstr "Apple Nonces" + +#: authentik/endpoints/connectors/agent/models.py +msgid "Apple Independent Secure Enclave" +msgstr "Apple независима сигурна обвивка" + +#: authentik/endpoints/connectors/agent/models.py +msgid "Apple Independent Secure Enclaves" +msgstr "Apple независими сигурни обвивки" + +#: authentik/endpoints/facts.py +msgid "Operating System name, such as 'Server 2022' or 'Ubuntu'" +msgstr "Име на операционна система, например 'Server 2022' или 'Ubuntu'" + +#: authentik/endpoints/facts.py +msgid "" +"Operating System version, must always be the version number but may contain " +"build name" +msgstr "" +"Версия на операционната система, трябва винаги да е номер на версията, но " +"може да съдържа име на build" + +#: authentik/endpoints/models.py +msgid "Device" +msgstr "Устройство" + +#: authentik/endpoints/models.py +msgid "Devices" +msgstr "Устройства" + +#: authentik/endpoints/models.py +msgid "Device User binding" +msgstr "Обвързване на потребител на устройство" + +#: authentik/endpoints/models.py +msgid "Device User bindings" +msgstr "Обвързвания на потребител на устройство" + +#: authentik/endpoints/models.py +msgid "Device connection" +msgstr "Връзка на устройство" + +#: authentik/endpoints/models.py +msgid "Device connections" +msgstr "Връзки на устройства" + +#: authentik/endpoints/models.py +msgid "Device fact snapshot" +msgstr "Снимка на факт за устройство" + +#: authentik/endpoints/models.py +msgid "Device fact snapshots" +msgstr "Снимки на факти за устройства" + +#: authentik/endpoints/models.py +msgid "Device access group" +msgstr "Група за достъп до устройство" + +#: authentik/endpoints/models.py +msgid "Device access groups" +msgstr "Групи за достъп до устройства" + +#: authentik/endpoints/models.py +msgid "Endpoint Stage" +msgstr "Endpoint стъпка" + +#: authentik/endpoints/models.py +msgid "Endpoint Stages" +msgstr "Endpoint стъпки" + +#: authentik/endpoints/tasks.py +msgid "Sync endpoints." +msgstr "Синхронизирай крайни точки." + +#: authentik/enterprise/api.py +msgid "Enterprise is required to create/update this object." +msgstr "Изисква се Enterprise за създаване/обновяване на този обект." + +#: authentik/enterprise/api.py +msgid "Enterprise is required to use this endpoint." +msgstr "Изисква се Enterprise за използване на тази крайна точка." + +#: authentik/enterprise/audit/apps.py +msgid "" +"Include additional information in audit logs, may incur a performance " +"penalty." +msgstr "" +"Включи допълнителна информация в одитните логове, може да доведе до " +"намаляване на производителността." + +#: authentik/enterprise/endpoints/connectors/fleet/models.py +#: authentik/events/models.py +msgid "" +"Configure additional headers to be sent. Mapping should return a dictionary " +"of key-value pairs" +msgstr "" +"Конфигурирайте допълнителни заглавки за изпращане. Съпоставянето трябва да " +"върне речник с двойки ключ-стойност" + +#: authentik/enterprise/endpoints/connectors/fleet/models.py +msgid "Fleet Connector" +msgstr "Fleet конектор" + +#: authentik/enterprise/endpoints/connectors/fleet/models.py +msgid "Fleet Connectors" +msgstr "Fleet конектори" + +#: authentik/enterprise/endpoints/connectors/google_chrome/models.py +msgid "Google Device Trust Connector" +msgstr "Google Device Trust конектор" + +#: authentik/enterprise/endpoints/connectors/google_chrome/models.py +msgid "Google Device Trust Connectors" +msgstr "Google Device Trust конектори" + +#: authentik/enterprise/endpoints/connectors/google_chrome/stage.py +#: authentik/enterprise/stages/authenticator_endpoint_gdtc/stage.py +msgid "Verifying your browser..." +msgstr "Проверка на вашия браузър..." + +#: authentik/enterprise/lifecycle/api/reviews.py +msgid "You are not allowed to submit a review for this object." +msgstr "Нямате право да подадете преглед за този обект." + +#: authentik/enterprise/lifecycle/api/rules.py +msgid "Object does not exist" +msgstr "Обектът не съществува" + +#: authentik/enterprise/lifecycle/api/rules.py +msgid "Either a reviewer group or a reviewer must be set." +msgstr "Трябва да е зададена група на преглеждащи или преглеждащ." + +#: authentik/enterprise/lifecycle/api/rules.py +msgid "Grace period must be shorter than the interval." +msgstr "Гратисният период трябва да е по-кратък от интервала." + +#: authentik/enterprise/lifecycle/models.py +msgid "" +"Select which transports should be used to notify the reviewers. If none are " +"selected, the notification will only be shown in the authentik UI." +msgstr "" +"Изберете кои транспорти да се използват за уведомяване на преглеждащите. Ако" +" не е избран нито един, известието ще бъде показано само в потребителския " +"интерфейс на authentik." + +#: authentik/enterprise/lifecycle/models.py +msgid "Reviewed" +msgstr "Прегледан" + +#: authentik/enterprise/lifecycle/models.py +msgid "Pending" +msgstr "Чакащ" + +#: authentik/enterprise/lifecycle/models.py +msgid "Overdue" +msgstr "Просрочен" + +#: authentik/enterprise/lifecycle/models.py +msgid "Canceled" +msgstr "Отменен" + +#: authentik/enterprise/lifecycle/models.py +msgid "Go to {self._get_model_name()}" +msgstr "Към {self._get_model_name()}" + +#: authentik/enterprise/lifecycle/models.py +msgid "" +"Access review is due for {self.content_type.name.lower()} {object_label}" +msgstr "" + +#: authentik/enterprise/lifecycle/models.py +msgid "" +"Access review is overdue for {self.content_type.name} {str(self.object)}" +msgstr "" +"Преглед на достъпа е просрочен за {self.content_type.name} " +"{str(self.object)}" + +#: authentik/enterprise/lifecycle/models.py +msgid "" +"Access review completed for {self.content_type.name} {str(self.object)}" +msgstr "" +"Прегледът на достъпа е завършен за {self.content_type.name} " +"{str(self.object)}" + +#: authentik/enterprise/lifecycle/tasks.py +msgid "Dispatch tasks to apply lifecycle rules." +msgstr "" + +#: authentik/enterprise/lifecycle/tasks.py +msgid "Apply lifecycle rule." +msgstr "Приложи правило за жизнен цикъл." + +#: authentik/enterprise/lifecycle/tasks.py +msgid "Send lifecycle rule notification." +msgstr "Изпрати известие за правило за жизнен цикъл." + +#: authentik/enterprise/models.py +msgid "License" +msgstr "Лиценз" + +#: authentik/enterprise/models.py +msgid "Licenses" +msgstr "Лицензи" + +#: authentik/enterprise/models.py +msgid "License Usage" +msgstr "Използване на лиценз" + +#: authentik/enterprise/models.py +msgid "License Usage Records" +msgstr "Записи за използване на лиценз" + +#: authentik/enterprise/policies/unique_password/models.py +#: authentik/policies/password/models.py +msgid "Field key to check, field keys defined in Prompt stages are available." +msgstr "" +"Ключ на поле за проверка, налични са ключове на полета, дефинирани в стъпки " +"за подкана." + +#: authentik/enterprise/policies/unique_password/models.py +msgid "Number of passwords to check against." +msgstr "Брой пароли, спрямо които да се проверява." + +#: authentik/enterprise/policies/unique_password/models.py +#: authentik/policies/password/models.py +msgid "Password not set in context" +msgstr "Паролата не е зададена в контекста" + +#: authentik/enterprise/policies/unique_password/models.py +msgid "This password has been used previously. Please choose a different one." +msgstr "Тази парола е била използвана преди. Моля, изберете друга." + +#: authentik/enterprise/policies/unique_password/models.py +msgid "Password Uniqueness Policy" +msgstr "Политика за уникалност на паролата" + +#: authentik/enterprise/policies/unique_password/models.py +msgid "Password Uniqueness Policies" +msgstr "Политики за уникалност на паролата" + +#: authentik/enterprise/policies/unique_password/models.py +msgid "User Password History" +msgstr "История на паролите на потребителя" + +#: authentik/enterprise/policies/unique_password/tasks.py +msgid "" +"Check if any UniquePasswordPolicy exists, and if not, purge the password " +"history table." +msgstr "" +"Проверява дали съществува UniquePasswordPolicy и ако не, изчиства таблицата " +"с история на паролите." + +#: authentik/enterprise/policies/unique_password/tasks.py +msgid "Remove user password history that are too old." +msgstr "Премахни история на паролите на потребителя, която е твърде стара." + +#: authentik/enterprise/policy.py +msgid "Enterprise required to access this feature." +msgstr "Изисква се Enterprise за достъп до тази функция." + +#: authentik/enterprise/policy.py +msgid "Feature only accessible for internal users." +msgstr "Функцията е достъпна само за вътрешни потребители." + +#: authentik/enterprise/providers/google_workspace/models.py +msgid "Google Workspace Provider User" +msgstr "Google Workspace доставчик потребител" + +#: authentik/enterprise/providers/google_workspace/models.py +msgid "Google Workspace Provider Users" +msgstr "Google Workspace доставчик потребители" + +#: authentik/enterprise/providers/google_workspace/models.py +msgid "Google Workspace Provider Group" +msgstr "Google Workspace доставчик група" + +#: authentik/enterprise/providers/google_workspace/models.py +msgid "Google Workspace Provider Groups" +msgstr "Google Workspace доставчик групи" + +#: authentik/enterprise/providers/google_workspace/models.py +#: authentik/enterprise/providers/microsoft_entra/models.py +#: authentik/providers/scim/models.py +msgid "Property mappings used for group creation/updating." +msgstr "" +"Съпоставяния на свойства, използвани за създаване/обновяване на групи." + +#: authentik/enterprise/providers/google_workspace/models.py +msgid "Google Workspace Provider" +msgstr "Google Workspace доставчик" + +#: authentik/enterprise/providers/google_workspace/models.py +msgid "Google Workspace Providers" +msgstr "Google Workspace доставчици" + +#: authentik/enterprise/providers/google_workspace/models.py +msgid "Google Workspace Provider Mapping" +msgstr "Google Workspace съпоставяне на доставчик" + +#: authentik/enterprise/providers/google_workspace/models.py +msgid "Google Workspace Provider Mappings" +msgstr "Google Workspace съпоставяния на доставчик" + +#: authentik/enterprise/providers/google_workspace/tasks.py +msgid "Sync Google Workspace provider objects." +msgstr "Синхронизирай обекти на Google Workspace доставчик." + +#: authentik/enterprise/providers/google_workspace/tasks.py +msgid "Full sync for Google Workspace provider." +msgstr "Пълна синхронизация за Google Workspace доставчик." + +#: authentik/enterprise/providers/google_workspace/tasks.py +msgid "Sync a direct object (user, group) for Google Workspace provider." +msgstr "" +"Синхронизирай директен обект (потребител, група) за Google Workspace " +"доставчик." + +#: authentik/enterprise/providers/google_workspace/tasks.py +msgid "" +"Dispatch deletions for an object (user, group) for Google Workspace " +"providers." +msgstr "" +"Изпрати изтривания за обект (потребител, група) за Google Workspace " +"доставчици." + +#: authentik/enterprise/providers/google_workspace/tasks.py +msgid "Delete an object (user, group) for Google Workspace provider." +msgstr "Изтрий обект (потребител, група) за Google Workspace доставчик." + +#: authentik/enterprise/providers/google_workspace/tasks.py +msgid "" +"Dispatch syncs for a direct object (user, group) for Google Workspace " +"providers." +msgstr "" +"Изпрати синхронизации за директен обект (потребител, група) за Google " +"Workspace доставчици." + +#: authentik/enterprise/providers/google_workspace/tasks.py +msgid "Sync a related object (memberships) for Google Workspace provider." +msgstr "Синхронизирай свързан обект (членства) за Google Workspace доставчик." + +#: authentik/enterprise/providers/google_workspace/tasks.py +msgid "" +"Dispatch syncs for a related object (memberships) for Google Workspace " +"providers." +msgstr "" +"Изпрати синхронизации за свързан обект (членства) за Google Workspace " +"доставчици." + +#: authentik/enterprise/providers/microsoft_entra/models.py +msgid "Microsoft Entra Provider User" +msgstr "Microsoft Entra доставчик потребител" + +#: authentik/enterprise/providers/microsoft_entra/models.py +msgid "Microsoft Entra Provider Group" +msgstr "Microsoft Entra доставчик група" + +#: authentik/enterprise/providers/microsoft_entra/models.py +msgid "Microsoft Entra Provider Groups" +msgstr "Microsoft Entra доставчик групи" + +#: authentik/enterprise/providers/microsoft_entra/models.py +msgid "Microsoft Entra Provider" +msgstr "Microsoft Entra доставчик" + +#: authentik/enterprise/providers/microsoft_entra/models.py +msgid "Microsoft Entra Providers" +msgstr "Microsoft Entra доставчици" + +#: authentik/enterprise/providers/microsoft_entra/models.py +msgid "Microsoft Entra Provider Mapping" +msgstr "Microsoft Entra съпоставяне на доставчик" + +#: authentik/enterprise/providers/microsoft_entra/models.py +msgid "Microsoft Entra Provider Mappings" +msgstr "Microsoft Entra съпоставяния на доставчик" + +#: authentik/enterprise/providers/microsoft_entra/tasks.py +msgid "Sync Microsoft Entra provider objects." +msgstr "Синхронизирай обекти на Microsoft Entra доставчик." + +#: authentik/enterprise/providers/microsoft_entra/tasks.py +msgid "Full sync for Microsoft Entra provider." +msgstr "Пълна синхронизация за Microsoft Entra доставчик." + +#: authentik/enterprise/providers/microsoft_entra/tasks.py +msgid "Sync a direct object (user, group) for Microsoft Entra provider." +msgstr "" +"Синхронизирай директен обект (потребител, група) за Microsoft Entra " +"доставчик." + +#: authentik/enterprise/providers/microsoft_entra/tasks.py +msgid "" +"Dispatch syncs for a direct object (user, group) for Microsoft Entra " +"providers." +msgstr "" +"Изпрати синхронизации за директен обект (потребител, група) за Microsoft " +"Entra доставчици." + +#: authentik/enterprise/providers/microsoft_entra/tasks.py +msgid "Delete an object (user, group) for Microsoft Entra provider." +msgstr "Изтрий обект (потребител, група) за Microsoft Entra доставчик." + +#: authentik/enterprise/providers/microsoft_entra/tasks.py +msgid "" +"Dispatch deletions for an object (user, group) for Microsoft Entra " +"providers." +msgstr "" +"Изпрати изтривания за обект (потребител, група) за Microsoft Entra " +"доставчици." + +#: authentik/enterprise/providers/microsoft_entra/tasks.py +msgid "Sync a related object (memberships) for Microsoft Entra provider." +msgstr "Синхронизирай свързан обект (членства) за Microsoft Entra доставчик." + +#: authentik/enterprise/providers/microsoft_entra/tasks.py +msgid "" +"Dispatch syncs for a related object (memberships) for Microsoft Entra " +"providers." +msgstr "" +"Изпрати синхронизации за свързан обект (членства) за Microsoft Entra " +"доставчици." + +#: authentik/enterprise/providers/radius/api.py +msgid "Enterprise is required to use EAP-TLS." +msgstr "Изисква се Enterprise за използване на EAP-TLS." + +#: authentik/enterprise/providers/scim/api.py +msgid "Enterprise is required to use the OAuth mode." +msgstr "Изисква се Enterprise за използване на OAuth режим." + +#: authentik/enterprise/providers/ssf/models.py +msgid "SSF RFC Push" +msgstr "SSF RFC Push" + +#: authentik/enterprise/providers/ssf/models.py +msgid "SSF RFC Pull" +msgstr "SSF RFC Pull" + +#: authentik/enterprise/providers/ssf/models.py +#: authentik/providers/oauth2/models.py +msgid "Signing Key" +msgstr "Ключ за подписване" + +#: authentik/enterprise/providers/ssf/models.py +msgid "Key used to sign the SSF Events." +msgstr "Ключ, използван за подписване на SSF събитията." + +#: authentik/enterprise/providers/ssf/models.py +msgid "Shared Signals Framework Provider" +msgstr "Shared Signals Framework доставчик" + +#: authentik/enterprise/providers/ssf/models.py +msgid "Shared Signals Framework Providers" +msgstr "Shared Signals Framework доставчици" + +#: authentik/enterprise/providers/ssf/models.py +msgid "Add stream to SSF provider" +msgstr "Добави поток към SSF доставчик" + +#: authentik/enterprise/providers/ssf/models.py +msgid "SSF Stream" +msgstr "SSF поток" + +#: authentik/enterprise/providers/ssf/models.py +msgid "SSF Streams" +msgstr "SSF потоци" + +#: authentik/enterprise/providers/ssf/models.py +msgid "SSF Stream Event" +msgstr "SSF събитие за поток" + +#: authentik/enterprise/providers/ssf/models.py +msgid "SSF Stream Events" +msgstr "SSF събития за поток" + +#: authentik/enterprise/providers/ssf/tasks.py +msgid "Dispatch SSF events." +msgstr "Изпрати SSF събития." + +#: authentik/enterprise/providers/ssf/tasks.py +msgid "Send an SSF event." +msgstr "Изпрати SSF събитие." + +#: authentik/enterprise/providers/ws_federation/models.py +msgid "WS-Federation Provider" +msgstr "WS-Federation доставчик" + +#: authentik/enterprise/providers/ws_federation/models.py +msgid "WS-Federation Providers" +msgstr "WS-Federation доставчици" + +#: authentik/enterprise/providers/ws_federation/views.py +#: authentik/providers/oauth2/views/authorize.py +#: authentik/providers/saml/views/flows.py +#, python-brace-format +msgid "Redirecting to {app}..." +msgstr "Пренасочване към {app}..." + +#: authentik/enterprise/reports/models.py +msgid "Data Export" +msgstr "Експортиране на данни" + +#: authentik/enterprise/reports/models.py +msgid "Data Exports" +msgstr "Експортиране на данни" + +#: authentik/enterprise/reports/models.py +#, python-brace-format +msgid "{model_verbose_name} export generated successfully" +msgstr "{model_verbose_name} експортът е генериран успешно" + +#: authentik/enterprise/reports/models.py +msgid "Download" +msgstr "Изтегли" + +#: authentik/enterprise/reports/tasks.py +msgid "Generate data export." +msgstr "Генерирай експорт на данни." + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "User to lock. If omitted, locks the current user (self-service)." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "No lockdown flow configured." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "Lockdown flow is not applicable." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "Choose the target account, then return a flow link." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "No lockdown flow configured or the flow is not applicable" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "Permission denied (when targeting another user)" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Deactivate the user account (set is_active to False)" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Set an unusable password for the user" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Delete all active sessions for the user" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "" +"Revoke all tokens for the user (API, app password, recovery, verification, " +"OAuth)" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "" +"Flow to redirect users to after self-service lockdown. This flow should not " +"require authentication since the user's session is deleted." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Account Lockdown Stage" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Account Lockdown Stages" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/stage.py +msgid "No target user specified for account lockdown" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/stage.py +msgid "You do not have permission to lock down this account." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/stage.py +msgid "Account lockdown failed for this account." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/stage.py +msgid "Self-service account lockdown requires a completion flow." +msgstr "" + +#: authentik/enterprise/stages/authenticator_endpoint_gdtc/models.py +msgid "Endpoint Authenticator Google Device Trust Connector Stage" +msgstr "Endpoint автентикатор Google Device Trust конектор стъпка" + +#: authentik/enterprise/stages/authenticator_endpoint_gdtc/models.py +msgid "Endpoint Authenticator Google Device Trust Connector Stages" +msgstr "Endpoint автентикатор Google Device Trust конектор стъпки" + +#: authentik/enterprise/stages/authenticator_endpoint_gdtc/models.py +msgid "Endpoint Device" +msgstr "Endpoint устройство" + +#: authentik/enterprise/stages/authenticator_endpoint_gdtc/models.py +msgid "Endpoint Devices" +msgstr "Крайни устройства" + +#: authentik/enterprise/stages/mtls/models.py +msgid "" +"Configure certificate authorities to validate the certificate against. This " +"option has a higher priority than the `client_certificate` option on " +"`Brand`." +msgstr "" +"Конфигурирайте сертифициращите органи, спрямо които да се валидира " +"сертификатът. Тази опция има по-висок приоритет от опцията " +"`client_certificate` на `Brand`." + +#: authentik/enterprise/stages/mtls/models.py +msgid "Mutual TLS Stage" +msgstr "Mutual TLS стъпка" + +#: authentik/enterprise/stages/mtls/models.py +msgid "Mutual TLS Stages" +msgstr "Mutual TLS стъпки" + +#: authentik/enterprise/stages/mtls/models.py +msgid "Permissions to pass Certificates for outposts." +msgstr "Разрешения за предаване на сертификати за отдалечени постове." + +#: authentik/enterprise/stages/mtls/stage.py +msgid "Certificate required but no certificate was given." +msgstr "Изисква се сертификат, но не е предоставен сертификат." + +#: authentik/enterprise/stages/mtls/stage.py +msgid "No user found for certificate." +msgstr "Не е намерен потребител за сертификата." + +#: authentik/enterprise/stages/source/models.py +msgid "" +"Amount of time a user can take to return from the source to continue the " +"flow (Format: hours=-1;minutes=-2;seconds=-3)" +msgstr "" +"Време, което потребителят може да отдели, за да се върне от източника и да " +"продължи потока (Формат: hours=-1;minutes=-2;seconds=-3)" + +#: authentik/enterprise/stages/source/models.py +msgid "Source Stage" +msgstr "Стъпка източник" + +#: authentik/enterprise/stages/source/models.py +msgid "Source Stages" +msgstr "Стъпки източник" + +#: authentik/enterprise/tasks.py +msgid "Update enterprise license status." +msgstr "Обнови статуса на корпоративния лиценз." + +#: authentik/events/models.py +msgid "Event" +msgstr "Събитие" + +#: authentik/events/models.py +msgid "Events" +msgstr "Събития" + +#: authentik/events/models.py +msgid "authentik inbuilt notifications" +msgstr "Вградени известия на authentik" + +#: authentik/events/models.py +msgid "Generic Webhook" +msgstr "Общ Webhook" + +#: authentik/events/models.py +msgid "Slack Webhook (Slack/Discord)" +msgstr "Slack Webhook (Slack/Discord)" + +#: authentik/events/models.py +#: authentik/stages/authenticator_validate/models.py +msgid "Email" +msgstr "Имейл" + +#: authentik/events/models.py +msgid "" +"Only send notification once, for example when sending a webhook into a chat " +"channel." +msgstr "" +"Изпращай известие само веднъж, например при изпращане на webhook в чат " +"канал." + +#: authentik/events/models.py +msgid "" +"When set, the selected ceritifcate is used to validate the certificate of " +"the webhook server." +msgstr "" +"Когато е зададено, избраният сертификат се използва за валидиране на " +"сертификата на webhook сървъра." + +#: authentik/events/models.py +msgid "" +"Customize the body of the request. Mapping should return data that is JSON-" +"serializable." +msgstr "" +"Персонализирайте тялото на заявката. Съпоставянето трябва да върне данни, " +"които могат да бъдат сериализирани в JSON." + +#: authentik/events/models.py +msgid "Severity" +msgstr "Сериозност" + +#: authentik/events/models.py +msgid "Dispatched for user" +msgstr "Изпратено за потребител" + +#: authentik/events/models.py +msgid "Event user" +msgstr "Потребител на събитие" + +#: authentik/events/models.py +msgid "Notification Transport" +msgstr "Транспорт за известие" + +#: authentik/events/models.py +msgid "Notification Transports" +msgstr "Транспорти за известия" + +#: authentik/events/models.py +msgid "Notice" +msgstr "Известие" + +#: authentik/events/models.py +msgid "Warning" +msgstr "Предупреждение" + +#: authentik/events/models.py +msgid "Alert" +msgstr "Сигнал" + +#: authentik/events/models.py +msgid "Notification" +msgstr "Известие" + +#: authentik/events/models.py +msgid "Notifications" +msgstr "Известия" + +#: authentik/events/models.py +msgid "" +"Select which transports should be used to notify the user. If none are " +"selected, the notification will only be shown in the authentik UI." +msgstr "" +"Изберете кои транспорти да се използват за уведомяване на потребителя. Ако " +"не е избран нито един, известието ще бъде показано само в потребителския " +"интерфейс на authentik." + +#: authentik/events/models.py +msgid "Controls which severity level the created notifications will have." +msgstr "Контролира какво ниво на сериозност ще имат създадените известия." + +#: authentik/events/models.py +msgid "" +"Define which group of users this notification should be sent and shown to. " +"If left empty, Notification won't ben sent." +msgstr "" +"Определете на коя група потребители да бъде изпратено и показано това " +"известие. Ако е оставено празно, известието няма да бъде изпратено." + +#: authentik/events/models.py +msgid "" +"When enabled, notification will be sent to user the user that triggered the " +"event.When destination_group is configured, notification is sent to both." +msgstr "" +"Когато е активирано, известие ще бъде изпратено на потребителя, който е " +"задействал събитието. Когато е конфигуриран destination_group, известието се" +" изпраща и на двамата." + +#: authentik/events/models.py +msgid "Notification Rule" +msgstr "Правило за известие" + +#: authentik/events/models.py +msgid "Notification Rules" +msgstr "Правила за известия" + +#: authentik/events/models.py +msgid "Webhook Mapping" +msgstr "Webhook съпоставяне" + +#: authentik/events/models.py +msgid "Webhook Mappings" +msgstr "Webhook съпоставяния" + +#: authentik/events/tasks.py +msgid "Dispatch new event notifications." +msgstr "Изпрати известия за нови събития." + +#: authentik/events/tasks.py +msgid "" +"Check if policies attached to NotificationRule match event and dispatch " +"notification tasks." +msgstr "" +"Проверява дали политиките, прикачени към NotificationRule, съвпадат със " +"събитие, и изпраща задачи за известия." + +#: authentik/events/tasks.py +msgid "Send notification." +msgstr "Изпрати известие." + +#: authentik/events/tasks.py +msgid "Cleanup events for GDPR compliance." +msgstr "Почисти събития за GDPR съответствие." + +#: authentik/events/tasks.py +msgid "Cleanup seen notifications and notifications whose event expired." +msgstr "Почисти видяните известия и известията, чието събитие е изтекло." + +#: authentik/flows/api/flows.py +#, python-brace-format +msgid "Flow not applicable to current user/request: {messages}" +msgstr "Потокът не е приложим за текущия потребител/заявка: {messages}" + +#: authentik/flows/api/flows_diagram.py +#, python-brace-format +msgid "Policy ({type})" +msgstr "Политика ({type})" + +#: authentik/flows/api/flows_diagram.py +#, python-brace-format +msgid "Binding {order}" +msgstr "Обвързване {order}" + +#: authentik/flows/api/flows_diagram.py +msgid "Policy passed" +msgstr "Политиката премина" + +#: authentik/flows/api/flows_diagram.py +#, python-brace-format +msgid "Stage ({type})" +msgstr "Стъпка ({type})" + +#: authentik/flows/api/flows_diagram.py +msgid "Policy denied" +msgstr "Политиката отказа" + +#: authentik/flows/api/flows_diagram.py +msgid "End of the flow" +msgstr "Край на потока" + +#: authentik/flows/api/flows_diagram.py +msgid "Requirement not fulfilled" +msgstr "Изискването не е изпълнено" + +#: authentik/flows/api/flows_diagram.py +msgid "Flow authentication requirement" +msgstr "Изискване за автентикация на потока" + +#: authentik/flows/api/flows_diagram.py +msgid "Requirement fulfilled" +msgstr "Изискването е изпълнено" + +#: authentik/flows/api/flows_diagram.py +msgid "Pre-flow policies" +msgstr "Политики преди потока" + +#: authentik/flows/api/flows_diagram.py authentik/flows/models.py +msgid "Flow" +msgstr "Поток" + +#: authentik/flows/apps.py +msgid "Refresh other tabs after successful authentication." +msgstr "Опресни другите раздели след успешна автентикация." + +#: authentik/flows/apps.py +msgid "" +"Upon successful authentication, re-start authentication in other open tabs." +msgstr "" +"При успешна автентикация започни автентикацията отново в други отворени " +"раздели." + +#: authentik/flows/exceptions.py +msgid "Flow does not apply to current user." +msgstr "Потокът не се прилага за текущия потребител." + +#: authentik/flows/models.py +#, python-brace-format +msgid "Dynamic In-memory stage: {doc}" +msgstr "Динамична стъпка в паметта: {doc}" + +#: authentik/flows/models.py +msgid "Visible in the URL." +msgstr "Видимо в URL-а." + +#: authentik/flows/models.py +msgid "Shown as the Title in Flow pages." +msgstr "Показвано като заглавие на страниците за поток." + +#: authentik/flows/models.py +msgid "" +"Decides what this Flow is used for. For example, the Authentication flow is " +"redirect to when an un-authenticated user visits authentik." +msgstr "" +"Определя за какво се използва този поток. Например, потокът за автентикация " +"е този, към който се пренасочва, когато неавтентикиран потребител посети " +"authentik." + +#: authentik/flows/models.py +msgid "Background shown during execution" +msgstr "Фон, показван по време на изпълнение" + +#: authentik/flows/models.py +msgid "" +"Enable compatibility mode, increases compatibility with password managers on" +" mobile devices." +msgstr "" +"Активирай режим на съвместимост, повишава съвместимостта с мениджъри на " +"пароли на мобилни устройства." + +#: authentik/flows/models.py +msgid "Configure what should happen when a flow denies access to a user." +msgstr "" +"Конфигурирайте какво трябва да се случи, когато поток откаже достъп на " +"потребител." + +#: authentik/flows/models.py +msgid "Required level of authentication and authorization to access a flow." +msgstr "Изисквано ниво на автентикация и оторизация за достъп до поток." + +#: authentik/flows/models.py +msgid "Flows" +msgstr "Потоци" + +#: authentik/flows/models.py +msgid "Can export a Flow" +msgstr "Може да експортира поток" + +#: authentik/flows/models.py +msgid "Can inspect a Flow's execution" +msgstr "Може да проверява изпълнението на поток" + +#: authentik/flows/models.py +msgid "View Flow's cache metrics" +msgstr "Виж метриките на кеша на потока" + +#: authentik/flows/models.py +msgid "Clear Flow's cache metrics" +msgstr "Изчисти метриките на кеша на потока" + +#: authentik/flows/models.py +msgid "Evaluate policies during the Flow planning process." +msgstr "Оценка на политиките по време на процеса на планиране на потока." + +#: authentik/flows/models.py +msgid "Evaluate policies when the Stage is presented to the user." +msgstr "Оценявай политиките, когато стъпката се представя на потребителя." + +#: authentik/flows/models.py +msgid "" +"Configure how the flow executor should handle an invalid response to a " +"challenge. RETRY returns the error message and a similar challenge to the " +"executor. RESTART restarts the flow from the beginning, and " +"RESTART_WITH_CONTEXT restarts the flow while keeping the current context." +msgstr "" +"Конфигурирайте как изпълнителят на потока трябва да обработи невалиден " +"отговор на предизвикателство. RETRY връща съобщението за грешка и подобно " +"предизвикателство на изпълнителя. RESTART рестартира потока от началото, а " +"RESTART_WITH_CONTEXT рестартира потока, като запазва текущия контекст." + +#: authentik/flows/models.py +msgid "Flow Stage Binding" +msgstr "Обвързване на стъпка от поток" + +#: authentik/flows/models.py +msgid "Flow Stage Bindings" +msgstr "Обвързвания на стъпка от поток" + +#: authentik/flows/models.py +msgid "" +"Flow used by an authenticated user to configure this Stage. If empty, user " +"will not be able to configure this stage." +msgstr "" +"Поток, използван от автентикиран потребител за конфигуриране на тази стъпка." +" Ако е празно, потребителят няма да може да конфигурира тази стъпка." + +#: authentik/flows/models.py +msgid "Flow Token" +msgstr "Токен на поток" + +#: authentik/flows/models.py +msgid "Flow Tokens" +msgstr "Токени на поток" + +#: authentik/flows/planner.py +msgid "This link is invalid or has expired. Please request a new one." +msgstr "Тази връзка е невалидна или е изтекла. Моля, заявете нова." + +#: authentik/flows/views/executor.py +msgid "Invalid next URL" +msgstr "Невалиден next URL" + +#: authentik/lib/sync/incoming/models.py +msgid "When to trigger sync for outgoing providers" +msgstr "Кога да се задейства синхронизация за изходящи доставчици" + +#: authentik/lib/sync/outgoing/models.py +msgid "Controls the number of objects synced in a single task" +msgstr "Контролира броя на обектите, синхронизирани в една задача" + +#: authentik/lib/sync/outgoing/models.py +msgid "Timeout for synchronization of a single page" +msgstr "Изтичане на времето за синхронизиране на една страница" + +#: authentik/lib/sync/outgoing/models.py +msgid "" +"When enabled, provider will not modify or create objects in the remote " +"system." +msgstr "" +"Когато е активирано, доставчикът няма да модифицира или създава обекти в " +"отдалечената система." + +#: authentik/lib/utils/time.py +#, python-format +msgid "%(value)s is not in the correct format of 'hours=3;minutes=1'." +msgstr "%(value)sне е в правилния формат от 'hours=3;minutes=1'." + +#: authentik/lib/validators.py +#, python-brace-format +msgid "The fields {field_names} must be used together." +msgstr "Полетата {field_names} трябва да се използват заедно." + +#: authentik/outposts/api/service_connections.py +msgid "" +"You can only use an empty kubeconfig when connecting to a local cluster." +msgstr "" +"Можете да използвате празен kubeconfig само при свързване с локален клъстер." + +#: authentik/outposts/api/service_connections.py +msgid "Invalid kubeconfig" +msgstr "Невалиден kubeconfig" + +#: authentik/outposts/models.py +msgid "" +"If enabled, use the local connection. Required Docker socket/Kubernetes " +"Integration" +msgstr "" +"Ако е активирано, използвай локалната връзка. Изисква Docker " +"socket/Kubernetes интеграция" + +#: authentik/outposts/models.py +msgid "Outpost Service-Connection" +msgstr "Сервизна връзка на отдалечен пост" + +#: authentik/outposts/models.py +msgid "Outpost Service-Connections" +msgstr "Сервизни връзки на отдалечен пост" + +#: authentik/outposts/models.py +msgid "" +"Can be in the format of 'unix://' when connecting to a local docker " +"daemon, or 'https://:2376' when connecting to a remote system." +msgstr "" +"Може да е във формата 'unix://' при свързване с локален docker daemon " +"или 'https://:2376' при свързване с отдалечена система." + +#: authentik/outposts/models.py +msgid "" +"CA which the endpoint's Certificate is verified against. Can be left empty " +"for no validation." +msgstr "" +"CA, спрямо който се проверява сертификатът на крайната точка. Може да бъде " +"оставено празно за липса на валидиране." + +#: authentik/outposts/models.py +msgid "" +"Certificate/Key used for authentication. Can be left empty for no " +"authentication." +msgstr "" +"Сертификат/ключ, използван за автентикация. Може да бъде оставено празно за " +"липса на автентикация." + +#: authentik/outposts/models.py +msgid "Docker Service-Connection" +msgstr "Docker сервизна връзка" + +#: authentik/outposts/models.py +msgid "Docker Service-Connections" +msgstr "Docker сервизни връзки" + +#: authentik/outposts/models.py +msgid "" +"Paste your kubeconfig here. authentik will automatically use the currently " +"selected context." +msgstr "" +"Поставете kubeconfig тук. authentik автоматично ще използва текущо избрания " +"контекст." + +#: authentik/outposts/models.py +msgid "Verify SSL Certificates of the Kubernetes API endpoint" +msgstr "Проверявай SSL сертификатите на крайната точка на Kubernetes API" + +#: authentik/outposts/models.py +msgid "Kubernetes Service-Connection" +msgstr "Kubernetes сервизна връзка" + +#: authentik/outposts/models.py +msgid "Kubernetes Service-Connections" +msgstr "Kubernetes сервизни връзки" + +#: authentik/outposts/models.py +msgid "" +"Select Service-Connection authentik should use to manage this outpost. Leave" +" empty if authentik should not handle the deployment." +msgstr "" +"Изберете сервизна връзка, която authentik да използва за управление на този " +"отдалечен пост. Оставете празно, ако authentik не трябва да управлява " +"внедряването." + +#: authentik/outposts/models.py +msgid "Outpost" +msgstr "Отдалечен пост" + +#: authentik/outposts/models.py +msgid "Outposts" +msgstr "Отдалечени постове" + +#: authentik/outposts/tasks.py +msgid "Update cached state of service connection." +msgstr "Обнови кешираното състояние на сервизната връзка." + +#: authentik/outposts/tasks.py +msgid "Create/update/monitor/delete the deployment of an Outpost." +msgstr "Създай/обнови/наблюдавай/изтрий внедряването на отдалечен пост." + +#: authentik/outposts/tasks.py +msgid "Ensure that all Outposts have valid Service Accounts and Tokens." +msgstr "" +"Уверете се, че всички отдалечени постове имат валидни служебни акаунти и " +"токени." + +#: authentik/outposts/tasks.py +msgid "Send update to outpost" +msgstr "Изпрати обновяване към отдалечен пост" + +#: authentik/outposts/tasks.py +msgid "Checks the local environment and create Service connections." +msgstr "Проверява локалната среда и създава сервизни връзки." + +#: authentik/outposts/tasks.py +msgid "Terminate session on all outposts." +msgstr "Прекрати сесия на всички отдалечени постове." + +#: authentik/policies/denied.py +msgid "Access denied" +msgstr "Отказан достъп" + +#: authentik/policies/dummy/models.py +msgid "Dummy Policy" +msgstr "Dummy политика" + +#: authentik/policies/dummy/models.py +msgid "Dummy Policies" +msgstr "Dummy политики" + +#: authentik/policies/event_matcher/api.py +#: authentik/policies/event_matcher/models.py +msgid "" +"Match events created by selected application. When left empty, all " +"applications are matched." +msgstr "" +"Сравни събитията, създадени от избраното приложение. Ако е оставено празно, " +"се сравняват всички приложения." + +#: authentik/policies/event_matcher/api.py +#: authentik/policies/event_matcher/models.py +msgid "" +"Match events created by selected model. When left empty, all models are " +"matched. When an app is selected, all the application's models are matched." +msgstr "" +"Сравни събитията, създадени от избран модел. Ако е оставено празно, се " +"сравняват всички модели. Когато е избрано приложение, се сравняват всички " +"модели на приложението." + +#: authentik/policies/event_matcher/api.py +msgid "At least one criteria must be set." +msgstr "Трябва да е зададен поне един критерий." + +#: authentik/policies/event_matcher/models.py +msgid "" +"Match created events with this action type. When left empty, all action " +"types will be matched." +msgstr "" +"Сравни създадените събития с този тип действие. Ако е оставено празно, ще се" +" сравняват всички типове действия." + +#: authentik/policies/event_matcher/models.py +msgid "" +"Matches Event's Client IP (strict matching, for network matching use an " +"Expression Policy)" +msgstr "" +"Сравнява клиентския IP на събитието (стриктно съвпадение, за мрежово " +"съвпадение използвайте Expression Policy)" + +#: authentik/policies/event_matcher/models.py +msgid "Event Matcher Policy" +msgstr "Политика за съпоставяне на събития" + +#: authentik/policies/event_matcher/models.py +msgid "Event Matcher Policies" +msgstr "Политики за съпоставяне на събития" + +#: authentik/policies/expiry/models.py +#, python-brace-format +msgid "Password expired {days} days ago. Please update your password." +msgstr "Паролата е изтекла преди {days} дни. Моля, обновете паролата си." + +#: authentik/policies/expiry/models.py +msgid "Password has expired." +msgstr "Паролата е изтекла." + +#: authentik/policies/expiry/models.py +msgid "Password Expiry Policy" +msgstr "Политика за изтичане на парола" + +#: authentik/policies/expiry/models.py +msgid "Password Expiry Policies" +msgstr "Политики за изтичане на парола" + +#: authentik/policies/expression/models.py +msgid "Expression Policy" +msgstr "Expression политика" + +#: authentik/policies/expression/models.py +msgid "Expression Policies" +msgstr "Expression политики" + +#: authentik/policies/geoip/models.py +msgid "GeoIP: client IP not found in ASN database." +msgstr "GeoIP: клиентски IP не е намерен в ASN базата данни." + +#: authentik/policies/geoip/models.py +msgid "Client IP is not part of an allowed autonomous system." +msgstr "Клиентският IP не е част от разрешена автономна система." + +#: authentik/policies/geoip/models.py +msgid "GeoIP: client IP address not found in City database." +msgstr "GeoIP: клиентският IP адрес не е намерен в City базата данни." + +#: authentik/policies/geoip/models.py +msgid "Client IP is not in an allowed country." +msgstr "Клиентският IP не е в разрешена държава." + +#: authentik/policies/geoip/models.py +msgid "Distance from previous authentication is larger than threshold." +msgstr "Разстоянието от предишната автентикация е по-голямо от прага." + +#: authentik/policies/geoip/models.py +msgid "Distance is further than possible." +msgstr "Разстоянието е по-голямо от възможното." + +#: authentik/policies/geoip/models.py +msgid "GeoIP Policy" +msgstr "GeoIP политика" + +#: authentik/policies/geoip/models.py +msgid "GeoIP Policies" +msgstr "GeoIP политики" + +#: authentik/policies/models.py +msgid "all, all policies must pass" +msgstr "all, всички политики трябва да преминат" + +#: authentik/policies/models.py +msgid "any, any policy must pass" +msgstr "any, всяка политика трябва да премине" + +#: authentik/policies/models.py +msgid "Policy Binding Model" +msgstr "Модел на обвързване на политика" + +#: authentik/policies/models.py +msgid "Policy Binding Models" +msgstr "Модели на обвързване на политика" + +#: authentik/policies/models.py +msgid "Negates the outcome of the policy. Messages are unaffected." +msgstr "Обръща резултата от политиката. Съобщенията не са засегнати." + +#: authentik/policies/models.py +msgid "Timeout after which Policy execution is terminated." +msgstr "" +"Изтичане на времето, след което изпълнението на политиката се прекратява." + +#: authentik/policies/models.py +msgid "Result if the Policy execution fails." +msgstr "Резултат, ако изпълнението на политиката се провали." + +#: authentik/policies/models.py +msgid "Policy Binding" +msgstr "Обвързване на политика" + +#: authentik/policies/models.py +msgid "Policy Bindings" +msgstr "Обвързвания на политики" + +#: authentik/policies/models.py +msgid "" +"When this option is enabled, all executions of this policy will be logged. " +"By default, only execution errors are logged." +msgstr "" +"Когато тази опция е активирана, всички изпълнения на тази политика ще бъдат " +"логвани. По подразбиране се логват само грешки при изпълнението." + +#: authentik/policies/models.py +msgid "Policy" +msgstr "Политика" + +#: authentik/policies/models.py +msgid "Policies" +msgstr "Политики" + +#: authentik/policies/models.py +msgid "View Policy's cache metrics" +msgstr "Виж метриките на кеша на политиката" + +#: authentik/policies/models.py +msgid "Clear Policy's cache metrics" +msgstr "Изчисти метриките на кеша на политиката" + +#: authentik/policies/password/models.py +msgid "How many times the password hash is allowed to be on haveibeenpwned" +msgstr "Колко пъти е разрешено хешът на паролата да е в haveibeenpwned" + +#: authentik/policies/password/models.py +msgid "" +"If the zxcvbn score is equal or less than this value, the policy will fail." +msgstr "" +"Ако оценката zxcvbn е равна или по-малка от тази стойност, политиката ще се " +"провали." + +#: authentik/policies/password/models.py +msgid "Invalid password." +msgstr "Невалидна парола." + +#: authentik/policies/password/models.py +#, python-brace-format +msgid "Password exists on {count} online lists." +msgstr "Паролата съществува в {count} онлайн списъка." + +#: authentik/policies/password/models.py +msgid "Password is too weak." +msgstr "Паролата е твърде слаба." + +#: authentik/policies/password/models.py +msgid "Password Policy" +msgstr "Политика за пароли" + +#: authentik/policies/password/models.py +msgid "Password Policies" +msgstr "Политики за пароли" + +#: authentik/policies/reputation/api.py +msgid "Either IP or Username must be checked" +msgstr "Трябва да е отметнато IP или потребителско име" + +#: authentik/policies/reputation/models.py +msgid "Reputation Policy" +msgstr "Политика за репутация" + +#: authentik/policies/reputation/models.py +msgid "Reputation Policies" +msgstr "Политики за репутация" + +#: authentik/policies/reputation/models.py +msgid "Reputation Score" +msgstr "Оценка на репутацията" + +#: authentik/policies/reputation/models.py +msgid "Reputation Scores" +msgstr "Оценки на репутацията" + +#: authentik/policies/templates/policies/denied.html +msgid "Permission denied" +msgstr "Достъпът е отказан" + +#: authentik/policies/templates/policies/denied.html +msgid "User's avatar" +msgstr "Аватар на потребителя" + +#: authentik/policies/templates/policies/denied.html +msgid "Not you?" +msgstr "Не сте вие?" + +#: authentik/policies/templates/policies/denied.html +msgid "Error" +msgstr "Грешка" + +#: authentik/policies/templates/policies/denied.html +msgid "Request has been denied." +msgstr "Заявката беше отказана." + +#: authentik/policies/templates/policies/denied.html +msgid "Messages:" +msgstr "Съобщения:" + +#: authentik/policies/templates/policies/denied.html +msgid "Explanation:" +msgstr "Обяснение:" + +#: authentik/policies/templates/policies/denied.html +#, python-format +msgid "" +"\n" +" Policy binding '%(name)s' returned result '%(result)s'\n" +" " +msgstr "" +"\n" +" Обвързването на политика '%(name)s' върна резултат '%(result)s'\n" +" " + +#: authentik/policies/views.py +msgid "Failed to resolve application" +msgstr "Неуспешно разрешаване на приложение" + +#: authentik/providers/ldap/models.py +msgid "DN under which objects are accessible." +msgstr "DN, под който обектите са достъпни." + +#: authentik/providers/ldap/models.py +msgid "" +"The start for uidNumbers, this number is added to the user.pk to make sure " +"that the numbers aren't too low for POSIX users. Default is 2000 to ensure " +"that we don't collide with local users uidNumber" +msgstr "" +"Начало за uidNumbers, този номер се добавя към user.pk, за да се гарантира, " +"че номерата не са твърде ниски за POSIX потребители. По подразбиране е 2000," +" за да се гарантира, че няма да се сблъскаме с uidNumber на локалните " +"потребители" + +#: authentik/providers/ldap/models.py +msgid "" +"The start for gidNumbers, this number is added to a number generated from " +"the group.pk to make sure that the numbers aren't too low for POSIX groups. " +"Default is 4000 to ensure that we don't collide with local groups or users " +"primary groups gidNumber" +msgstr "" +"Начало за gidNumbers, този номер се добавя към номер, генериран от group.pk," +" за да се гарантира, че номерата не са твърде ниски за POSIX групи. По " +"подразбиране е 4000, за да се гарантира, че няма да се сблъскаме с gidNumber" +" на локални групи или основни групи на потребители" + +#: authentik/providers/ldap/models.py authentik/providers/radius/models.py +msgid "" +"When enabled, code-based multi-factor authentication can be used by " +"appending a semicolon and the TOTP code to the password. This should only be" +" enabled if all users that will bind to this provider have a TOTP device " +"configured, as otherwise a password may incorrectly be rejected if it " +"contains a semicolon." +msgstr "" +"Когато е активирано, многофакторна автентикация чрез код може да се използва" +" чрез добавяне на точка и запетая и TOTP код към паролата. Това трябва да се" +" активира само ако всички потребители, които ще се обвържат с този " +"доставчик, имат конфигурирано TOTP устройство, тъй като в противен случай " +"паролата може погрешно да бъде отхвърлена, ако съдържа точка и запетая." + +#: authentik/providers/ldap/models.py +msgid "LDAP Provider" +msgstr "LDAP Доставчик" + +#: authentik/providers/ldap/models.py +msgid "LDAP Providers" +msgstr "LDAP Доставчици" + +#: authentik/providers/ldap/models.py +msgid "Search full LDAP directory" +msgstr "Търси в цялата LDAP директория" + +#: authentik/providers/oauth2/api/providers.py +#, python-brace-format +msgid "Invalid Regex Pattern: {url}" +msgstr "Невалиден регулярен израз: {url}" + +#: authentik/providers/oauth2/models.py +msgid "Confidential" +msgstr "Конфиденциално" + +#: authentik/providers/oauth2/models.py +msgid "Public" +msgstr "Публично" + +#: authentik/providers/oauth2/models.py +msgid "Same identifier is used for all providers" +msgstr "За всички доставчици се използва един и същ идентификатор" + +#: authentik/providers/oauth2/models.py +msgid "Each provider has a different issuer, based on the application slug." +msgstr "" +"Всеки доставчик има различен издател, базиран на slug на приложението." + +#: authentik/providers/oauth2/models.py +msgid "Strict URL comparison" +msgstr "Стриктно сравнение на URL" + +#: authentik/providers/oauth2/models.py +msgid "Regular Expression URL matching" +msgstr "Съпоставяне на URL чрез регулярен израз" + +#: authentik/providers/oauth2/models.py +msgid "Authorization" +msgstr "Оторизация" + +#: authentik/providers/oauth2/models.py +msgid "Logout" +msgstr "Изход" + +#: authentik/providers/oauth2/models.py +msgid "Back-channel" +msgstr "Заден канал" + +#: authentik/providers/oauth2/models.py +msgid "Front-channel" +msgstr "Преден канал" + +#: authentik/providers/oauth2/models.py +msgid "code (Authorization Code Flow)" +msgstr "code (Authorization Code Flow)" + +#: authentik/providers/oauth2/models.py +msgid "id_token (Implicit Flow)" +msgstr "id_token (Implicit Flow)" + +#: authentik/providers/oauth2/models.py +msgid "id_token token (Implicit Flow)" +msgstr "id_token token (Implicit Flow)" + +#: authentik/providers/oauth2/models.py +msgid "code token (Hybrid Flow)" +msgstr "code token (Hybrid Flow)" + +#: authentik/providers/oauth2/models.py +msgid "code id_token (Hybrid Flow)" +msgstr "code id_token (Hybrid Flow)" + +#: authentik/providers/oauth2/models.py +msgid "code id_token token (Hybrid Flow)" +msgstr "code id_token token (Hybrid Flow)" + +#: authentik/providers/oauth2/models.py +msgid "HS256 (Symmetric Encryption)" +msgstr "HS256 (симетрично криптиране)" + +#: authentik/providers/oauth2/models.py +msgid "RS256 (Asymmetric Encryption)" +msgstr "RS256 (асиметрично криптиране)" + +#: authentik/providers/oauth2/models.py +msgid "ES256 (Asymmetric Encryption)" +msgstr "ES256 (асиметрично криптиране)" + +#: authentik/providers/oauth2/models.py +msgid "ES384 (Asymmetric Encryption)" +msgstr "ES384 (асиметрично криптиране)" + +#: authentik/providers/oauth2/models.py +msgid "ES512 (Asymmetric Encryption)" +msgstr "ES512 (асиметрично криптиране)" + +#: authentik/providers/oauth2/models.py +msgid "Scope used by the client" +msgstr "Обхват, използван от клиента" + +#: authentik/providers/oauth2/models.py +msgid "" +"Description shown to the user when consenting. If left empty, the user won't" +" be informed." +msgstr "" +"Описание, показвано на потребителя при даване на съгласие. Ако е оставено " +"празно, потребителят няма да бъде информиран." + +#: authentik/providers/oauth2/models.py +msgid "Scope Mapping" +msgstr "Съпоставяне на обхват" + +#: authentik/providers/oauth2/models.py +msgid "Scope Mappings" +msgstr "Съпоставяния на обхват" + +#: authentik/providers/oauth2/models.py +msgid "Client Type" +msgstr "Тип клиент" + +#: authentik/providers/oauth2/models.py +msgid "" +"Confidential clients are capable of maintaining the confidentiality of their" +" credentials. Public clients are incapable" +msgstr "" +"Поверителните клиенти могат да поддържат поверителността на своите " +"идентификационни данни. Публичните клиенти не могат" + +#: authentik/providers/oauth2/models.py +msgid "Client ID" +msgstr "ID на клиента" + +#: authentik/providers/oauth2/models.py +msgid "Client Secret" +msgstr "Клиентска тайна" + +#: authentik/providers/oauth2/models.py +msgid "Redirect URIs" +msgstr "URI за пренасочване" + +#: authentik/providers/oauth2/models.py +msgid "Logout URI" +msgstr "URI за изход" + +#: authentik/providers/oauth2/models.py +msgid "Logout Method" +msgstr "Метод за изход" + +#: authentik/providers/oauth2/models.py +msgid "" +"Backchannel logs out with server to server calls. Frontchannel uses iframes " +"in your browser" +msgstr "" +"Заден канал излиза чрез сървър към сървър обаждания. Преден канал използва " +"iframes във вашия браузър" + +#: authentik/providers/oauth2/models.py +msgid "Include claims in id_token" +msgstr "Включи твърдения в id_token" + +#: authentik/providers/oauth2/models.py +msgid "" +"Include User claims from scopes in the id_token, for applications that don't" +" access the userinfo endpoint." +msgstr "" +"Включи потребителски твърдения от обхвати в id_token за приложения, които не" +" осъществяват достъп до крайната точка userinfo." + +#: authentik/providers/oauth2/models.py +msgid "" +"Access codes not valid on or after current time + this value (Format: " +"hours=1;minutes=2;seconds=3)." +msgstr "" +"Кодовете за достъп невалидни на или след текущото време + тази стойност " +"(Формат: hours=1;minutes=2;seconds=3)." + +#: authentik/providers/oauth2/models.py +msgid "" +"Tokens not valid on or after current time + this value (Format: " +"hours=1;minutes=2;seconds=3)." +msgstr "" +"Токените са невалидни на или след текущото време + тази стойност (Формат: " +"hours=1;minutes=2;seconds=3)." + +#: authentik/providers/oauth2/models.py +msgid "" +"When refreshing a token, if the refresh token is valid for less than this " +"duration, it will be renewed. When set to seconds=0, token will always be " +"renewed. (Format: hours=1;minutes=2;seconds=3)." +msgstr "" +"При обновяване на токен, ако refresh токенът е валиден за по-малко от тази " +"продължителност, той ще бъде подновен. Когато е зададено seconds=0, токенът " +"винаги ще бъде подновяван. (Формат: hours=1;minutes=2;seconds=3)." + +#: authentik/providers/oauth2/models.py +msgid "" +"Configure what data should be used as unique User Identifier. For most " +"cases, the default should be fine." +msgstr "" +"Конфигурирайте какви данни трябва да се използват като уникален " +"идентификатор на потребителя. В повечето случаи стойността по подразбиране е" +" подходяща." + +#: authentik/providers/oauth2/models.py +msgid "Configure how the issuer field of the ID Token should be filled." +msgstr "Конфигурирайте как трябва да се попълва полето issuer на ID токена." + +#: authentik/providers/oauth2/models.py +msgid "Key used to sign the tokens." +msgstr "Ключ, използван за подписване на токените." + +#: authentik/providers/oauth2/models.py +msgid "Encryption Key" +msgstr "Ключ за криптиране" + +#: authentik/providers/oauth2/models.py +msgid "" +"Key used to encrypt the tokens. When set, tokens will be encrypted and " +"returned as JWEs." +msgstr "" +"Ключ, използван за криптиране на токените. Когато е зададено, токените ще " +"бъдат криптирани и върнати като JWE." + +#: authentik/providers/oauth2/models.py +msgid "" +"Any JWT signed by the JWK of the selected source can be used to " +"authenticate." +msgstr "" +"Всеки JWT, подписан от JWK на избрания източник, може да се използва за " +"автентикация." + +#: authentik/providers/oauth2/models.py +msgid "OAuth2/OpenID Provider" +msgstr "OAuth2/OpenID доставчик" + +#: authentik/providers/oauth2/models.py +msgid "OAuth2/OpenID Providers" +msgstr "OAuth2/OpenID доставчици" + +#: authentik/providers/oauth2/models.py +msgid "Scopes" +msgstr "Обхвати" + +#: authentik/providers/oauth2/models.py +msgid "Code" +msgstr "Код" + +#: authentik/providers/oauth2/models.py +msgid "Nonce" +msgstr "Nonce" + +#: authentik/providers/oauth2/models.py +msgid "Code Challenge" +msgstr "Code Challenge" + +#: authentik/providers/oauth2/models.py +msgid "Code Challenge Method" +msgstr "Метод на Code Challenge" + +#: authentik/providers/oauth2/models.py +msgid "Authorization Code" +msgstr "Код за оторизация" + +#: authentik/providers/oauth2/models.py +msgid "Authorization Codes" +msgstr "Кодове за оторизация" + +#: authentik/providers/oauth2/models.py +msgid "OAuth2 Access Token" +msgstr "OAuth2 токен за достъп" + +#: authentik/providers/oauth2/models.py +msgid "OAuth2 Access Tokens" +msgstr "OAuth2 токени за достъп" + +#: authentik/providers/oauth2/models.py +msgid "ID Token" +msgstr "ID токен" + +#: authentik/providers/oauth2/models.py +msgid "OAuth2 Refresh Token" +msgstr "OAuth2 refresh токен" + +#: authentik/providers/oauth2/models.py +msgid "OAuth2 Refresh Tokens" +msgstr "OAuth2 refresh токени" + +#: authentik/providers/oauth2/tasks.py +msgid "Send a back-channel logout request to the registered client" +msgstr "Изпрати заявка за изход през заден канал към регистрирания клиент" + +#: authentik/providers/oauth2/tasks.py +msgid "Handle backchannel logout notifications dispatched via signal" +msgstr "Обработи известията за изход през заден канал, изпратени чрез сигнал" + +#: authentik/providers/oauth2/views/device_init.py +msgid "Invalid code" +msgstr "Невалиден код" + +#: authentik/providers/oauth2/views/userinfo.py +msgid "GitHub Compatibility: Access your User Information" +msgstr "GitHub съвместимост: Достъп до вашата потребителска информация" + +#: authentik/providers/oauth2/views/userinfo.py +msgid "GitHub Compatibility: Access you Email addresses" +msgstr "GitHub съвместимост: Достъп до вашите имейл адреси" + +#: authentik/providers/oauth2/views/userinfo.py +msgid "GitHub Compatibility: Access your Groups" +msgstr "GitHub съвместимост: Достъп до вашите групи" + +#: authentik/providers/proxy/api.py +msgid "User and password attributes must be set when basic auth is enabled." +msgstr "" +"Атрибутите за потребител и парола трябва да са зададени, когато basic auth е" +" активиран." + +#: authentik/providers/proxy/api.py +msgid "Internal host cannot be empty when forward auth is disabled." +msgstr "" +"Вътрешният хост не може да е празен, когато forward auth е деактивиран." + +#: authentik/providers/proxy/models.py +msgid "Proxy Session" +msgstr "Прокси сесия" + +#: authentik/providers/proxy/models.py +msgid "Proxy Sessions" +msgstr "Прокси сесии" + +#: authentik/providers/proxy/models.py +msgid "Validate SSL Certificates of upstream servers" +msgstr "Валидиране на SSL сертификати на upstream сървъри" + +#: authentik/providers/proxy/models.py +msgid "Internal host SSL Validation" +msgstr "Валидиране на SSL на вътрешен хост" + +#: authentik/providers/proxy/models.py +msgid "" +"Enable support for forwardAuth in traefik and nginx auth_request. Exclusive " +"with internal_host." +msgstr "" +"Активирай поддръжка за forwardAuth в traefik и nginx auth_request. " +"Изключителна с internal_host." + +#: authentik/providers/proxy/models.py +msgid "" +"Regular expressions for which authentication is not required. Each new line " +"is interpreted as a new Regular Expression." +msgstr "" +"Регулярни изрази, за които не се изисква автентикация. Всеки нов ред се " +"интерпретира като нов регулярен израз." + +#: authentik/providers/proxy/models.py +msgid "" +"When enabled, this provider will intercept the authorization header and " +"authenticate requests based on its value." +msgstr "" +"Когато е активирано, този доставчик ще прихваща заглавката за оторизация и " +"ще автентикира заявките въз основа на нейната стойност." + +#: authentik/providers/proxy/models.py +msgid "Set HTTP-Basic Authentication" +msgstr "Задай HTTP-Basic автентикация" + +#: authentik/providers/proxy/models.py +msgid "" +"Set a custom HTTP-Basic Authentication header based on values from " +"authentik." +msgstr "" +"Задай персонализирана HTTP-Basic заглавка за автентикация въз основа на " +"стойности от authentik." + +#: authentik/providers/proxy/models.py +msgid "HTTP-Basic Username Key" +msgstr "HTTP-Basic ключ за потребителско име" + +#: authentik/providers/proxy/models.py +msgid "" +"User/Group Attribute used for the user part of the HTTP-Basic Header. If not" +" set, the user's Email address is used." +msgstr "" +"Атрибут на потребител/група, използван за частта user на HTTP-Basic " +"заглавката. Ако не е зададен, се използва имейл адресът на потребителя." + +#: authentik/providers/proxy/models.py +msgid "HTTP-Basic Password Key" +msgstr "HTTP-Basic ключ за парола" + +#: authentik/providers/proxy/models.py +msgid "" +"User/Group Attribute used for the password part of the HTTP-Basic Header." +msgstr "" +"Атрибут на потребител/група, използван за частта password на HTTP-Basic " +"заглавката." + +#: authentik/providers/proxy/models.py +msgid "Proxy Provider" +msgstr "Прокси доставчик" + +#: authentik/providers/proxy/models.py +msgid "Proxy Providers" +msgstr "Прокси доставчици" + +#: authentik/providers/rac/models.py authentik/stages/user_login/models.py +msgid "" +"Determines how long a session lasts. Default of 0 means that the sessions " +"lasts until the browser is closed. (Format: hours=-1;minutes=-2;seconds=-3)" +msgstr "" +"Определя колко дълго трае сесията. Стойност по подразбиране 0 означава, че " +"сесията трае, докато браузърът не бъде затворен. (Формат: " +"hours=-1;minutes=-2;seconds=-3)" + +#: authentik/providers/rac/models.py +msgid "When set to true, connection tokens will be deleted upon disconnect." +msgstr "" +"Когато е зададено true, токените за връзка ще бъдат изтривани при прекъсване" +" на връзка." + +#: authentik/providers/rac/models.py +msgid "RAC Provider" +msgstr "RAC доставчик" + +#: authentik/providers/rac/models.py +msgid "RAC Providers" +msgstr "RAC доставчици" + +#: authentik/providers/rac/models.py +msgid "RAC Endpoint" +msgstr "RAC крайна точка" + +#: authentik/providers/rac/models.py +msgid "RAC Endpoints" +msgstr "RAC крайни точки" + +#: authentik/providers/rac/models.py +msgid "RAC Provider Property Mapping" +msgstr "RAC съпоставяне на свойства на доставчик" + +#: authentik/providers/rac/models.py +msgid "RAC Provider Property Mappings" +msgstr "RAC съпоставяния на свойства на доставчик" + +#: authentik/providers/rac/models.py +msgid "RAC Connection token" +msgstr "RAC токен за връзка" + +#: authentik/providers/rac/models.py +msgid "RAC Connection tokens" +msgstr "RAC токени за връзка" + +#: authentik/providers/rac/views.py +msgid "Maximum connection limit reached." +msgstr "Достигнат е максималният лимит за връзки." + +#: authentik/providers/rac/views.py +msgid "(You are already connected in another tab/window)" +msgstr "(Вече сте свързани в друг раздел/прозорец)" + +#: authentik/providers/radius/models.py +msgid "Shared secret between clients and server to hash packets." +msgstr "Споделена тайна между клиентите и сървъра за хеширане на пакети." + +#: authentik/providers/radius/models.py +msgid "" +"List of CIDRs (comma-separated) that clients can connect from. A more " +"specific CIDR will match before a looser one. Clients connecting from a non-" +"specified CIDR will be dropped." +msgstr "" +"Списък с CIDR (разделени със запетая), от които клиентите могат да се " +"свързват. По-специфичен CIDR ще съвпадне преди по-широк. Клиентите, " +"свързващи се от непосочен CIDR, ще бъдат отхвърлени." + +#: authentik/providers/radius/models.py +msgid "Radius Provider" +msgstr "Radius доставчик" + +#: authentik/providers/radius/models.py +msgid "Radius Providers" +msgstr "Radius доставчици" + +#: authentik/providers/radius/models.py +msgid "Radius Provider Property Mapping" +msgstr "Radius съпоставяне на свойства на доставчик" + +#: authentik/providers/radius/models.py +msgid "Radius Provider Property Mappings" +msgstr "Radius съпоставяния на свойства на доставчик" + +#: authentik/providers/saml/api/providers.py +msgid "" +"With a signing keypair selected, at least one of 'Sign assertion' and 'Sign " +"Response' must be selected." +msgstr "" +"С избрана двойка ключове за подписване, трябва да е избрано поне едно от " +"'Sign assertion' и 'Sign Response'." + +#: authentik/providers/saml/api/providers.py +msgid "Only RSA, EC, and DSA key types are supported for SAML signing." +msgstr "Само RSA, EC и DSA типове ключове се поддържат за SAML подписване." + +#: authentik/providers/saml/api/providers.py +msgid "Invalid XML Syntax" +msgstr "Невалиден XML синтакс" + +#: authentik/providers/saml/api/providers.py +#, python-brace-format +msgid "Failed to import Metadata: {messages}" +msgstr "Неуспешно импортиране на метаданни: {messages}" + +#: authentik/providers/saml/models.py +msgid "ACS URL" +msgstr "ACS URL" + +#: authentik/providers/saml/models.py +msgid "Service Provider Binding" +msgstr "Обвързване на доставчик на услуги" + +#: authentik/providers/saml/models.py +msgid "" +"This determines how authentik sends the response back to the Service " +"Provider." +msgstr "" +"Това определя как authentik изпраща отговора обратно към доставчика на " +"услуги." + +#: authentik/providers/saml/models.py +msgid "" +"Value of the audience restriction field of the assertion. When left empty, " +"no audience restriction will be added." +msgstr "" +"Стойност на полето за ограничение на аудиторията на assertion. Ако е " +"оставено празно, не се добавя ограничение на аудиторията." + +#: authentik/providers/saml/models.py +msgid "" +"Also known as EntityID. Providing a value overrides the default issuer " +"generated by authentik." +msgstr "" + +#: authentik/providers/saml/models.py +msgid "SLS URL" +msgstr "SLS URL" + +#: authentik/providers/saml/models.py +msgid "Single Logout Service URL where the logout response should be sent." +msgstr "" +"URL на Single Logout Service, на който трябва да се изпрати отговорът за " +"изход." + +#: authentik/providers/saml/models.py +msgid "SLS Binding" +msgstr "SLS обвързване" + +#: authentik/providers/saml/models.py +msgid "" +"This determines how authentik sends the logout response back to the Service " +"Provider." +msgstr "" +"Това определя как authentik изпраща отговора за изход обратно към доставчика" +" на услуги." + +#: authentik/providers/saml/models.py +msgid "" +"Method to use for logout. Front-channel iframe loads all logout URLs " +"simultaneously in hidden iframes. Front-channel native uses your active " +"browser tab to send post requests and redirect to providers. Back-channel " +"sends logout requests directly from the server without user interaction " +"(requires POST SLS binding)." +msgstr "" +"Метод за използване при изход. Front-channel iframe зарежда всички URL за " +"изход едновременно в скрити iframes. Front-channel native използва активния " +"раздел на браузъра за изпращане на POST заявки и пренасочване към " +"доставчици. Back-channel изпраща заявки за изход директно от сървъра без " +"взаимодействие с потребителя (изисква POST SLS обвързване)." + +#: authentik/providers/saml/models.py +msgid "NameID Property Mapping" +msgstr "Съпоставяне на свойство NameID" + +#: authentik/providers/saml/models.py +msgid "" +"Configure how the NameID value will be created. When left empty, the " +"NameIDPolicy of the incoming request will be considered" +msgstr "" +"Конфигурирайте как ще се създава стойността на NameID. Ако е оставено " +"празно, ще се вземе предвид NameIDPolicy на входящата заявка" + +#: authentik/providers/saml/models.py +msgid "AuthnContextClassRef Property Mapping" +msgstr "Съпоставяне на свойство AuthnContextClassRef" + +#: authentik/providers/saml/models.py +msgid "" +"Configure how the AuthnContextClassRef value will be created. When left " +"empty, the AuthnContextClassRef will be set based on which authentication " +"methods the user used to authenticate." +msgstr "" +"Конфигурирайте как ще се създава стойността на AuthnContextClassRef. Ако е " +"оставено празно, AuthnContextClassRef ще бъде зададен въз основа на това кои" +" методи за автентикация е използвал потребителят." + +#: authentik/providers/saml/models.py +msgid "" +"Assertion valid not before current time + this value (Format: " +"hours=-1;minutes=-2;seconds=-3)." +msgstr "" +"Assertion валидно не преди текущото време + тази стойност (Формат: " +"hours=-1;minutes=-2;seconds=-3)." + +#: authentik/providers/saml/models.py +msgid "" +"Assertion not valid on or after current time + this value (Format: " +"hours=1;minutes=2;seconds=3)." +msgstr "" +"Assertion не е валидно на или след текущото време + тази стойност (Формат: " +"hours=1;minutes=2;seconds=3)." + +#: authentik/providers/saml/models.py +msgid "" +"Session not valid on or after current time + this value (Format: " +"hours=1;minutes=2;seconds=3)." +msgstr "" +"Сесията не е валидна на или след текущото време + тази стойност (Формат: " +"hours=1;minutes=2;seconds=3)." + +#: authentik/providers/saml/models.py authentik/sources/saml/models.py +msgid "SHA1" +msgstr "SHA1" + +#: authentik/providers/saml/models.py authentik/sources/saml/models.py +msgid "SHA256" +msgstr "SHA256" + +#: authentik/providers/saml/models.py authentik/sources/saml/models.py +msgid "SHA384" +msgstr "SHA384" + +#: authentik/providers/saml/models.py authentik/sources/saml/models.py +msgid "SHA512" +msgstr "SHA512" + +#: authentik/providers/saml/models.py authentik/sources/saml/models.py +msgid "RSA-SHA1" +msgstr "RSA-SHA1" + +#: authentik/providers/saml/models.py authentik/sources/saml/models.py +msgid "RSA-SHA256" +msgstr "RSA-SHA256" + +#: authentik/providers/saml/models.py authentik/sources/saml/models.py +msgid "RSA-SHA384" +msgstr "RSA-SHA384" + +#: authentik/providers/saml/models.py authentik/sources/saml/models.py +msgid "RSA-SHA512" +msgstr "RSA-SHA512" + +#: authentik/providers/saml/models.py authentik/sources/saml/models.py +msgid "ECDSA-SHA1" +msgstr "ECDSA-SHA1" + +#: authentik/providers/saml/models.py authentik/sources/saml/models.py +msgid "ECDSA-SHA256" +msgstr "ECDSA-SHA256" + +#: authentik/providers/saml/models.py authentik/sources/saml/models.py +msgid "ECDSA-SHA384" +msgstr "ECDSA-SHA384" + +#: authentik/providers/saml/models.py authentik/sources/saml/models.py +msgid "ECDSA-SHA512" +msgstr "ECDSA-SHA512" + +#: authentik/providers/saml/models.py authentik/sources/saml/models.py +msgid "DSA-SHA1" +msgstr "DSA-SHA1" + +#: authentik/providers/saml/models.py authentik/sources/saml/models.py +msgid "" +"When selected, incoming assertion's Signatures will be validated against " +"this certificate. To allow unsigned Requests, leave on default." +msgstr "" +"Когато е избрано, подписите на входящите assertion ще бъдат валидирани " +"спрямо този сертификат. За да разрешите неподписани заявки, оставете по " +"подразбиране." + +#: authentik/providers/saml/models.py authentik/sources/saml/models.py +msgid "Verification Certificate" +msgstr "Сертификат за проверка" + +#: authentik/providers/saml/models.py +msgid "Keypair used to sign outgoing Responses going to the Service Provider." +msgstr "" +"Двойка ключове, използвана за подписване на изходящи отговори към доставчика" +" на услуги." + +#: authentik/providers/saml/models.py authentik/sources/saml/models.py +msgid "Signing Keypair" +msgstr "Двойка ключове за подписване" + +#: authentik/providers/saml/models.py authentik/sources/saml/models.py +msgid "" +"When selected, incoming assertions are encrypted by the IdP using the public" +" key of the encryption keypair. The assertion is decrypted by the SP using " +"the the private key." +msgstr "" +"Когато е избрано, входящите assertion се криптират от IdP с публичния ключ " +"на двойката ключове за криптиране. Assertion се декриптира от SP с частния " +"ключ." + +#: authentik/providers/saml/models.py authentik/sources/saml/models.py +msgid "Encryption Keypair" +msgstr "Двойка ключове за криптиране" + +#: authentik/providers/saml/models.py +msgid "Default relay_state value for IDP-initiated logins" +msgstr "Стойност по подразбиране на relay_state за IDP-инициирани влизания" + +#: authentik/providers/saml/models.py +msgid "SAML Provider" +msgstr "SAML доставчик" + +#: authentik/providers/saml/models.py +msgid "SAML Providers" +msgstr "SAML доставчици" + +#: authentik/providers/saml/models.py +msgid "SAML Provider Property Mapping" +msgstr "SAML съпоставяне на свойства на доставчик" + +#: authentik/providers/saml/models.py +msgid "SAML Provider Property Mappings" +msgstr "SAML съпоставяния на свойства на доставчик" + +#: authentik/providers/saml/models.py +msgid "SAML Provider from Metadata" +msgstr "SAML доставчик от метаданни" + +#: authentik/providers/saml/models.py +msgid "SAML Providers from Metadata" +msgstr "SAML доставчици от метаданни" + +#: authentik/providers/saml/models.py +msgid "Link to the user's authenticated session" +msgstr "Връзка към автентикираната сесия на потребителя" + +#: authentik/providers/saml/models.py +msgid "SAML SessionIndex for this session" +msgstr "SAML SessionIndex за тази сесия" + +#: authentik/providers/saml/models.py +msgid "SAML NameID value for this session" +msgstr "Стойност на SAML NameID за тази сесия" + +#: authentik/providers/saml/models.py +msgid "SAML NameID format" +msgstr "Формат на SAML NameID" + +#: authentik/providers/saml/models.py +msgid "SAML Issuer used for this session" +msgstr "" + +#: authentik/providers/saml/models.py +msgid "SAML Session" +msgstr "SAML сесия" + +#: authentik/providers/saml/models.py +msgid "SAML Sessions" +msgstr "SAML сесии" + +#: authentik/providers/scim/models.py +msgid "OAuth" +msgstr "OAuth" + +#: authentik/providers/scim/models.py +msgid "Default" +msgstr "По подразбиране" + +#: authentik/providers/scim/models.py +msgid "AWS" +msgstr "AWS" + +#: authentik/providers/scim/models.py +msgid "Slack" +msgstr "Slack" + +#: authentik/providers/scim/models.py +msgid "Salesforce" +msgstr "Salesforce" + +#: authentik/providers/scim/models.py +msgid "Webex" +msgstr "Webex" + +#: authentik/providers/scim/models.py +msgid "vCenter" +msgstr "" + +#: authentik/providers/scim/models.py +msgid "Group filters used to define sync-scope for groups." +msgstr "" +"Филтри за групи, използвани за дефиниране на обхвата на синхронизация за " +"групи." + +#: authentik/providers/scim/models.py +msgid "Base URL to SCIM requests, usually ends in /v2" +msgstr "Базов URL за SCIM заявки, обикновено завършва на /v2" + +#: authentik/providers/scim/models.py +msgid "Authentication token" +msgstr "Токен за автентикация" + +#: authentik/providers/scim/models.py +msgid "OAuth Source used for authentication" +msgstr "OAuth източник, използван за автентикация" + +#: authentik/providers/scim/models.py +msgid "Additional OAuth parameters, such as grant_type" +msgstr "Допълнителни OAuth параметри, като grant_type" + +#: authentik/providers/scim/models.py +msgid "SCIM Compatibility Mode" +msgstr "SCIM режим на съвместимост" + +#: authentik/providers/scim/models.py +msgid "Alter authentik behavior for vendor-specific SCIM implementations." +msgstr "" +"Променя поведението на authentik за специфични за доставчика SCIM " +"реализации." + +#: authentik/providers/scim/models.py +msgid "" +"Cache duration for ServiceProviderConfig responses. Set minutes=0 to " +"disable." +msgstr "" +"Продължителност на кеша за ServiceProviderConfig отговори. Задайте " +"minutes=0, за да деактивирате." + +#: authentik/providers/scim/models.py +msgid "SCIM Provider" +msgstr "SCIM доставчик" + +#: authentik/providers/scim/models.py +msgid "SCIM Providers" +msgstr "SCIM доставчици" + +#: authentik/providers/scim/models.py +msgid "SCIM Provider Mapping" +msgstr "SCIM съпоставяне на доставчик" + +#: authentik/providers/scim/models.py +msgid "SCIM Provider Mappings" +msgstr "SCIM съпоставяния на доставчик" + +#: authentik/providers/scim/tasks.py +msgid "Sync SCIM provider objects." +msgstr "Синхронизирай обекти на SCIM доставчик." + +#: authentik/providers/scim/tasks.py +msgid "Full sync for SCIM provider." +msgstr "Пълна синхронизация за SCIM доставчик." + +#: authentik/providers/scim/tasks.py +msgid "Sync a direct object (user, group) for SCIM provider." +msgstr "Синхронизирай директен обект (потребител, група) за SCIM доставчик." + +#: authentik/providers/scim/tasks.py +msgid "Dispatch syncs for a direct object (user, group) for SCIM providers." +msgstr "" +"Изпрати синхронизации за директен обект (потребител, група) за SCIM " +"доставчици." + +#: authentik/providers/scim/tasks.py +msgid "Delete an object (user, group) for SCIM provider." +msgstr "Изтрий обект (потребител, група) за SCIM доставчик." + +#: authentik/providers/scim/tasks.py +msgid "Dispatch deletions for an object (user, group) for SCIM providers." +msgstr "Изпрати изтривания за обект (потребител, група) за SCIM доставчици." + +#: authentik/providers/scim/tasks.py +msgid "Sync a related object (memberships) for SCIM provider." +msgstr "Синхронизирай свързан обект (членства) за SCIM доставчик." + +#: authentik/providers/scim/tasks.py +msgid "Dispatch syncs for a related object (memberships) for SCIM providers." +msgstr "Изпрати синхронизации за свързан обект (членства) за SCIM доставчици." + +#: authentik/rbac/models.py +msgid "Role" +msgstr "Роля" + +#: authentik/rbac/models.py +msgid "Roles" +msgstr "Роли" + +#: authentik/rbac/models.py +msgid "Can assign permissions to roles" +msgstr "Може да назначава разрешения на роли" + +#: authentik/rbac/models.py +msgid "Can unassign permissions from roles" +msgstr "Може да премахва разрешения от роли" + +#: authentik/rbac/models.py +msgid "Initial Permissions" +msgstr "Първоначални разрешения" + +#: authentik/rbac/models.py +msgid "System permission" +msgstr "Системно разрешение" + +#: authentik/rbac/models.py +msgid "System permissions" +msgstr "Системни разрешения" + +#: authentik/rbac/models.py +msgid "Can view system info" +msgstr "Може да преглежда системна информация" + +#: authentik/rbac/models.py +msgid "Can access admin interface" +msgstr "Може да получи достъп до административния интерфейс" + +#: authentik/rbac/models.py +msgid "Can view system settings" +msgstr "Може да преглежда системни настройки" + +#: authentik/rbac/models.py +msgid "Can edit system settings" +msgstr "Може да редактира системни настройки" + +#: authentik/rbac/models.py +msgid "Can view media files" +msgstr "Може да преглежда медийни файлове" + +#: authentik/rbac/models.py +msgid "Can manage media files" +msgstr "Може да управлява медийни файлове" + +#: authentik/recovery/management/commands/create_admin_group.py +msgid "Create admin group if the default group gets deleted." +msgstr "" +"Създай администраторска група, ако групата по подразбиране бъде изтрита." + +#: authentik/recovery/management/commands/create_recovery_key.py +msgid "Create a Key which can be used to restore access to authentik." +msgstr "" +"Създай ключ, който може да се използва за възстановяване на достъп до " +"authentik." + +#: authentik/recovery/views.py +msgid "Used recovery-link to authenticate." +msgstr "Използвана е връзка за възстановяване за автентикация." + +#: authentik/sources/kerberos/models.py +msgid "Kerberos realm" +msgstr "Kerberos realm" + +#: authentik/sources/kerberos/models.py +msgid "Custom krb5.conf to use. Uses the system one by default" +msgstr "" +"Персонализиран krb5.conf за използване. По подразбиране използва системния" + +#: authentik/sources/kerberos/models.py +msgid "KAdmin server type" +msgstr "KAdmin тип сървър" + +#: authentik/sources/kerberos/models.py +msgid "Sync users from Kerberos into authentik" +msgstr "Синхронизирай потребители от Kerberos в authentik" + +#: authentik/sources/kerberos/models.py +msgid "When a user changes their password, sync it back to Kerberos" +msgstr "" +"Когато потребител промени паролата си, синхронизирай я обратно в Kerberos" + +#: authentik/sources/kerberos/models.py +msgid "Principal to authenticate to kadmin for sync." +msgstr "Principal за автентикация към kadmin за синхронизация." + +#: authentik/sources/kerberos/models.py +msgid "Password to authenticate to kadmin for sync" +msgstr "Парола за автентикация към kadmin за синхронизация" + +#: authentik/sources/kerberos/models.py +msgid "" +"Keytab to authenticate to kadmin for sync. Must be base64-encoded or in the " +"form TYPE:residual" +msgstr "" +"Keytab за автентикация към kadmin за синхронизация. Трябва да е " +"base64-кодиран или във формата TYPE:residual" + +#: authentik/sources/kerberos/models.py +msgid "" +"Credentials cache to authenticate to kadmin for sync. Must be in the form " +"TYPE:residual" +msgstr "" +"Credentials cache за автентикация към kadmin за синхронизация. Трябва да е " +"във формата TYPE:residual" + +#: authentik/sources/kerberos/models.py +msgid "" +"Force the use of a specific server name for SPNEGO. Must be in the form " +"HTTP@hostname" +msgstr "" +"Принуди използването на конкретно име на сървър за SPNEGO. Трябва да е във " +"формата HTTP@hostname" + +#: authentik/sources/kerberos/models.py +msgid "SPNEGO keytab base64-encoded or path to keytab in the form FILE:path" +msgstr "SPNEGO keytab base64-кодиран или път до keytab във формата FILE:path" + +#: authentik/sources/kerberos/models.py +msgid "Credential cache to use for SPNEGO in form type:residual" +msgstr "Credential cache за използване за SPNEGO във формата type:residual" + +#: authentik/sources/kerberos/models.py +msgid "" +"If enabled, the authentik-stored password will be updated upon login with " +"the Kerberos password backend" +msgstr "" +"Ако е активирано, съхраняваната в authentik парола ще бъде обновена при вход" +" с Kerberos backend за пароли" + +#: authentik/sources/kerberos/models.py +msgid "Kerberos Source" +msgstr "Kerberos източник" + +#: authentik/sources/kerberos/models.py +msgid "Kerberos Sources" +msgstr "Kerberos източници" + +#: authentik/sources/kerberos/models.py +msgid "Kerberos Source Property Mapping" +msgstr "Kerberos съпоставяне на свойства на източник" + +#: authentik/sources/kerberos/models.py +msgid "Kerberos Source Property Mappings" +msgstr "Kerberos съпоставяния на свойства на източник" + +#: authentik/sources/kerberos/models.py +msgid "User Kerberos Source Connection" +msgstr "Връзка на потребителски Kerberos източник" + +#: authentik/sources/kerberos/models.py +msgid "User Kerberos Source Connections" +msgstr "Връзки на потребителски Kerberos източник" + +#: authentik/sources/kerberos/models.py +msgid "Group Kerberos Source Connection" +msgstr "Връзка на групов Kerberos източник" + +#: authentik/sources/kerberos/models.py +msgid "Group Kerberos Source Connections" +msgstr "Връзки на групов Kerberos източник" + +#: authentik/sources/kerberos/tasks.py +msgid "Check connectivity for Kerberos sources." +msgstr "Провери свързаност за Kerberos източници." + +#: authentik/sources/kerberos/tasks.py +msgid "Sync Kerberos source." +msgstr "Синхронизирай Kerberos източник." + +#: authentik/sources/kerberos/views.py +msgid "SPNEGO authentication required" +msgstr "Изисква се SPNEGO автентикация" + +#: authentik/sources/kerberos/views.py +msgid "" +"\n" +" Make sure you have valid tickets (obtainable via kinit)\n" +" and configured the browser correctly.\n" +" Please contact your administrator.\n" +" " +msgstr "" +"\n" +" Уверете се, че имате валидни билети (могат да се получат чрез kinit)\n" +" и че сте конфигурирали браузъра правилно.\n" +" Моля, свържете се с вашия администратор.\n" +" " + +#: authentik/sources/ldap/api/sources.py +msgid "Only a single LDAP Source with password synchronization is allowed" +msgstr "Разрешен е само един LDAP източник със синхронизация на пароли" + +#: authentik/sources/ldap/models.py +msgid "Server URI" +msgstr "URI на сървъра" + +#: authentik/sources/ldap/models.py +msgid "" +"Optionally verify the LDAP Server's Certificate against the CA Chain in this" +" keypair." +msgstr "" +"По избор проверявайте сертификата на LDAP сървъра спрямо CA Chain в тази " +"двойка ключове." + +#: authentik/sources/ldap/models.py +msgid "" +"Client certificate to authenticate against the LDAP Server's Certificate." +msgstr "" +"Клиентски сертификат за автентикация спрямо сертификата на LDAP сървъра." + +#: authentik/sources/ldap/models.py +msgid "Bind CN" +msgstr "Bind CN" + +#: authentik/sources/ldap/models.py +msgid "Enable Start TLS" +msgstr "Активирай Start TLS" + +#: authentik/sources/ldap/models.py +msgid "Use Server URI for SNI verification" +msgstr "Използвай URI на сървъра за SNI проверка" + +#: authentik/sources/ldap/models.py +msgid "Base DN" +msgstr "Base DN" + +#: authentik/sources/ldap/models.py +msgid "Prepended to Base DN for User-queries." +msgstr "Поставено преди Base DN за заявки за потребители." + +#: authentik/sources/ldap/models.py +msgid "Addition User DN" +msgstr "Допълнително DN на потребител" + +#: authentik/sources/ldap/models.py +msgid "Prepended to Base DN for Group-queries." +msgstr "Поставено преди Base DN за заявки за групи." + +#: authentik/sources/ldap/models.py +msgid "Addition Group DN" +msgstr "Допълнително DN на група" + +#: authentik/sources/ldap/models.py +msgid "Consider Objects matching this filter to be Users." +msgstr "Считай обектите, съвпадащи с този филтър, за потребители." + +#: authentik/sources/ldap/models.py +msgid "Attribute which matches the value of `group_membership_field`." +msgstr "Атрибут, който съвпада със стойността на `group_membership_field`." + +#: authentik/sources/ldap/models.py +msgid "Field which contains members of a group." +msgstr "Поле, което съдържа членове на група." + +#: authentik/sources/ldap/models.py +msgid "Consider Objects matching this filter to be Groups." +msgstr "Считай обектите, съвпадащи с този филтър, за групи." + +#: authentik/sources/ldap/models.py +msgid "Field which contains a unique Identifier." +msgstr "Поле, което съдържа уникален идентификатор." + +#: authentik/sources/ldap/models.py +msgid "Update internal authentik password when login succeeds with LDAP" +msgstr "Обнови вътрешната authentik парола при успешен вход с LDAP" + +#: authentik/sources/ldap/models.py +msgid "" +"When a user changes their password, sync it back to LDAP. This can only be " +"enabled on a single LDAP source." +msgstr "" +"Когато потребител промени паролата си, синхронизирай я обратно в LDAP. Това " +"може да бъде активирано само на един LDAP източник." + +#: authentik/sources/ldap/models.py +msgid "" +"Lookup group membership based on a user attribute instead of a group " +"attribute. This allows nested group resolution on systems like FreeIPA and " +"Active Directory" +msgstr "" +"Търси членство в група на базата на потребителски атрибут вместо атрибут на " +"група. Това позволява резолюция на вложени групи на системи като FreeIPA и " +"Active Directory" + +#: authentik/sources/ldap/models.py +msgid "" +"Delete authentik users and groups which were previously supplied by this " +"source, but are now missing from it." +msgstr "" +"Изтрий потребителите и групите на authentik, които преди това са били " +"предоставяни от този източник, но сега липсват в него." + +#: authentik/sources/ldap/models.py +msgid "N/A" +msgstr "N/A" + +#: authentik/sources/ldap/models.py +msgid "LDAP Source" +msgstr "LDAP Източник" + +#: authentik/sources/ldap/models.py +msgid "LDAP Sources" +msgstr "LDAP Източници" + +#: authentik/sources/ldap/models.py +msgid "LDAP Source Property Mapping" +msgstr "LDAP съпоставяне на свойства на източник" + +#: authentik/sources/ldap/models.py +msgid "LDAP Source Property Mappings" +msgstr "LDAP съпоставяния на свойства на източник" + +#: authentik/sources/ldap/models.py +msgid "" +"Unique ID used while checking if this object still exists in the directory." +msgstr "" +"Уникален ID, използван при проверка дали този обект все още съществува в " +"директорията." + +#: authentik/sources/ldap/models.py +msgid "User LDAP Source Connection" +msgstr "Връзка на потребителски LDAP източник" + +#: authentik/sources/ldap/models.py +msgid "User LDAP Source Connections" +msgstr "Връзки на потребителски LDAP източник" + +#: authentik/sources/ldap/models.py +msgid "Group LDAP Source Connection" +msgstr "Връзка на групов LDAP източник" + +#: authentik/sources/ldap/models.py +msgid "Group LDAP Source Connections" +msgstr "Връзки на групов LDAP източник" + +#: authentik/sources/ldap/signals.py +msgid "Password does not match Active Directory Complexity." +msgstr "Паролата не покрива изискванията на Active Directory Complexity." + +#: authentik/sources/ldap/tasks.py +msgid "Check connectivity for LDAP source." +msgstr "Провери свързаност за LDAP източник." + +#: authentik/sources/ldap/tasks.py +msgid "Sync LDAP source." +msgstr "Синхронизирай LDAP източник." + +#: authentik/sources/ldap/tasks.py +msgid "Sync page for LDAP source." +msgstr "Синхронизирай страница за LDAP източник." + +#: authentik/sources/oauth/clients/oauth2.py +msgid "No token received." +msgstr "Не е получен токен." + +#: authentik/sources/oauth/models.py +msgid "HTTP Basic Authentication" +msgstr "HTTP Basic автентикация" + +#: authentik/sources/oauth/models.py +msgid "Include the client ID and secret as request parameters" +msgstr "Включи ID и тайната на клиента като параметри на заявката" + +#: authentik/sources/oauth/models.py +msgid "No PKCE" +msgstr "Без PKCE" + +#: authentik/sources/oauth/models.py +msgid "Plain" +msgstr "Plain" + +#: authentik/sources/oauth/models.py +msgid "S256" +msgstr "S256" + +#: authentik/sources/oauth/models.py +msgid "Request Token URL" +msgstr "URL за заявка на токен" + +#: authentik/sources/oauth/models.py +msgid "" +"URL used to request the initial token. This URL is only required for OAuth " +"1." +msgstr "" +"URL, използван за заявка на първоначалния токен. Този URL се изисква само за" +" OAuth 1." + +#: authentik/sources/oauth/models.py +msgid "Authorization URL" +msgstr "URL за оторизация" + +#: authentik/sources/oauth/models.py +msgid "URL the user is redirect to to conest the flow." +msgstr "URL, към който потребителят се пренасочва, за да одобри потока." + +#: authentik/sources/oauth/models.py +msgid "Access Token URL" +msgstr "URL за токен за достъп" + +#: authentik/sources/oauth/models.py +msgid "URL used by authentik to retrieve tokens." +msgstr "URL, използван от authentik за извличане на токени." + +#: authentik/sources/oauth/models.py +msgid "Profile URL" +msgstr "URL на профила" + +#: authentik/sources/oauth/models.py +msgid "URL used by authentik to get user information." +msgstr "" +"URL, използван от authentik за получаване на информация за потребителя." + +#: authentik/sources/oauth/models.py +msgid "Additional Scopes" +msgstr "Допълнителни обхвати" + +#: authentik/sources/oauth/models.py +msgid "PKCE" +msgstr "PKCE" + +#: authentik/sources/oauth/models.py +msgid "" +"How to perform authentication during an authorization_code token request " +"flow" +msgstr "" +"Как да се изпълнява автентикация по време на поток за заявка на токен " +"authorization_code" + +#: authentik/sources/oauth/models.py +msgid "OAuth Source" +msgstr "OAuth източник" + +#: authentik/sources/oauth/models.py +msgid "OAuth Sources" +msgstr "OAuth източници" + +#: authentik/sources/oauth/models.py +msgid "GitHub OAuth Source" +msgstr "GitHub OAuth източник" + +#: authentik/sources/oauth/models.py +msgid "GitHub OAuth Sources" +msgstr "GitHub OAuth източници" + +#: authentik/sources/oauth/models.py +msgid "GitLab OAuth Source" +msgstr "GitLab OAuth източник" + +#: authentik/sources/oauth/models.py +msgid "GitLab OAuth Sources" +msgstr "GitLab OAuth източници" + +#: authentik/sources/oauth/models.py +msgid "Twitch OAuth Source" +msgstr "Twitch OAuth източник" + +#: authentik/sources/oauth/models.py +msgid "Twitch OAuth Sources" +msgstr "Twitch OAuth източници" + +#: authentik/sources/oauth/models.py +msgid "Mailcow OAuth Source" +msgstr "Mailcow OAuth източник" + +#: authentik/sources/oauth/models.py +msgid "Mailcow OAuth Sources" +msgstr "Mailcow OAuth източници" + +#: authentik/sources/oauth/models.py +msgid "Twitter OAuth Source" +msgstr "Twitter OAuth източник" + +#: authentik/sources/oauth/models.py +msgid "Twitter OAuth Sources" +msgstr "Twitter OAuth източници" + +#: authentik/sources/oauth/models.py +msgid "Facebook OAuth Source" +msgstr "Facebook OAuth източник" + +#: authentik/sources/oauth/models.py +msgid "Facebook OAuth Sources" +msgstr "Facebook OAuth източници" + +#: authentik/sources/oauth/models.py +msgid "Discord OAuth Source" +msgstr "Discord OAuth източник" + +#: authentik/sources/oauth/models.py +msgid "Discord OAuth Sources" +msgstr "Discord OAuth източници" + +#: authentik/sources/oauth/models.py +msgid "Slack OAuth Source" +msgstr "Slack OAuth източник" + +#: authentik/sources/oauth/models.py +msgid "Slack OAuth Sources" +msgstr "Slack OAuth източници" + +#: authentik/sources/oauth/models.py +msgid "Patreon OAuth Source" +msgstr "Patreon OAuth източник" + +#: authentik/sources/oauth/models.py +msgid "Patreon OAuth Sources" +msgstr "Patreon OAuth източници" + +#: authentik/sources/oauth/models.py +msgid "Google OAuth Source" +msgstr "Google OAuth източник" + +#: authentik/sources/oauth/models.py +msgid "Google OAuth Sources" +msgstr "Google OAuth източници" + +#: authentik/sources/oauth/models.py +msgid "Azure AD OAuth Source" +msgstr "Azure AD OAuth източник" + +#: authentik/sources/oauth/models.py +msgid "Azure AD OAuth Sources" +msgstr "Azure AD OAuth източници" + +#: authentik/sources/oauth/models.py +msgid "Entra ID OAuth Source" +msgstr "Entra ID OAuth източник" + +#: authentik/sources/oauth/models.py +msgid "Entra ID OAuth Sources" +msgstr "Entra ID OAuth източници" + +#: authentik/sources/oauth/models.py +msgid "OpenID OAuth Source" +msgstr "OpenID OAuth източник" + +#: authentik/sources/oauth/models.py +msgid "OpenID OAuth Sources" +msgstr "OpenID OAuth източници" + +#: authentik/sources/oauth/models.py +msgid "Apple OAuth Source" +msgstr "Apple OAuth източник" + +#: authentik/sources/oauth/models.py +msgid "Apple OAuth Sources" +msgstr "Apple OAuth източници" + +#: authentik/sources/oauth/models.py +msgid "Okta OAuth Source" +msgstr "Okta OAuth източник" + +#: authentik/sources/oauth/models.py +msgid "Okta OAuth Sources" +msgstr "Okta OAuth източници" + +#: authentik/sources/oauth/models.py +msgid "Reddit OAuth Source" +msgstr "Reddit OAuth източник" + +#: authentik/sources/oauth/models.py +msgid "Reddit OAuth Sources" +msgstr "Reddit OAuth източници" + +#: authentik/sources/oauth/models.py +msgid "WeChat OAuth Source" +msgstr "WeChat OAuth източник" + +#: authentik/sources/oauth/models.py +msgid "WeChat OAuth Sources" +msgstr "WeChat OAuth източници" + +#: authentik/sources/oauth/models.py +msgid "OAuth Source Property Mapping" +msgstr "OAuth съпоставяне на свойства на източник" + +#: authentik/sources/oauth/models.py +msgid "OAuth Source Property Mappings" +msgstr "OAuth съпоставяния на свойства на източник" + +#: authentik/sources/oauth/models.py +msgid "User OAuth Source Connection" +msgstr "Връзка на потребителски OAuth източник" + +#: authentik/sources/oauth/models.py +msgid "User OAuth Source Connections" +msgstr "Връзки на потребителски OAuth източник" + +#: authentik/sources/oauth/models.py +msgid "Group OAuth Source Connection" +msgstr "Връзка на групов OAuth източник" + +#: authentik/sources/oauth/models.py +msgid "Group OAuth Source Connections" +msgstr "Връзки на групов OAuth източник" + +#: authentik/sources/oauth/tasks.py +msgid "" +"Update OAuth sources' config from well_known, and JWKS info from the " +"configured URL." +msgstr "" +"Обнови конфигурацията на OAuth източници от well_known и JWKS информация от " +"конфигурирания URL." + +#: authentik/sources/oauth/views/callback.py +#, python-brace-format +msgid "Authentication failed: {reason}" +msgstr "Автентикацията се провали: {reason}" + +#: authentik/sources/plex/models.py +msgid "Client identifier used to talk to Plex." +msgstr "Клиентски идентификатор, използван за комуникация с Plex." + +#: authentik/sources/plex/models.py +msgid "" +"Which servers a user has to be a member of to be granted access. Empty list " +"allows every server." +msgstr "" +"На кои сървъри потребителят трябва да е член, за да получи достъп. Празен " +"списък разрешава всички сървъри." + +#: authentik/sources/plex/models.py +msgid "Allow friends to authenticate, even if you don't share a server." +msgstr "Разреши на приятели да се автентикират, дори ако не споделяте сървър." + +#: authentik/sources/plex/models.py +msgid "Plex token used to check friends" +msgstr "Plex токен, използван за проверка на приятели" + +#: authentik/sources/plex/models.py +msgid "Plex Source" +msgstr "Plex източник" + +#: authentik/sources/plex/models.py +msgid "Plex Sources" +msgstr "Plex източници" + +#: authentik/sources/plex/models.py +msgid "Plex Source Property Mapping" +msgstr "Plex съпоставяне на свойства на източник" + +#: authentik/sources/plex/models.py +msgid "Plex Source Property Mappings" +msgstr "Plex съпоставяния на свойства на източник" + +#: authentik/sources/plex/models.py +msgid "User Plex Source Connection" +msgstr "Връзка на потребителски Plex източник" + +#: authentik/sources/plex/models.py +msgid "User Plex Source Connections" +msgstr "Връзки на потребителски Plex източник" + +#: authentik/sources/plex/models.py +msgid "Group Plex Source Connection" +msgstr "Връзка на групов Plex източник" + +#: authentik/sources/plex/models.py +msgid "Group Plex Source Connections" +msgstr "Връзки на групов Plex източник" + +#: authentik/sources/plex/tasks.py +msgid "Check the validity of a Plex source." +msgstr "Провери валидността на Plex източник." + +#: authentik/sources/saml/api/source.py +msgid "" +"With a Verification Certificate selected, at least one of 'Verify Assertion " +"Signature' or 'Verify Response Signature' must be selected." +msgstr "" +"С избран сертификат за проверка, трябва да е избрано поне едно от 'Verify " +"Assertion Signature' или 'Verify Response Signature'." + +#: authentik/sources/saml/models.py +msgid "Redirect Binding" +msgstr "Redirect обвързване" + +#: authentik/sources/saml/models.py +msgid "POST Binding" +msgstr "POST обвързване" + +#: authentik/sources/saml/models.py +msgid "POST Binding with auto-confirmation" +msgstr "POST обвързване с автоматично потвърждение" + +#: authentik/sources/saml/models.py authentik/sources/telegram/models.py +msgid "Flow used before authentication." +msgstr "Поток, използван преди автентикация." + +#: authentik/sources/saml/models.py +msgid "Issuer" +msgstr "Издател" + +#: authentik/sources/saml/models.py +msgid "Also known as Entity ID. Defaults the Metadata URL." +msgstr "Известен още като Entity ID. По подразбиране е URL на метаданните." + +#: authentik/sources/saml/models.py +msgid "SSO URL" +msgstr "SSO URL" + +#: authentik/sources/saml/models.py +msgid "URL that the initial Login request is sent to." +msgstr "URL, към който се изпраща първоначалната заявка за вход." + +#: authentik/sources/saml/models.py +msgid "SLO URL" +msgstr "SLO URL" + +#: authentik/sources/saml/models.py +msgid "Optional URL if your IDP supports Single-Logout." +msgstr "Незадължителен URL, ако вашият IDP поддържа Single-Logout." + +#: authentik/sources/saml/models.py +msgid "" +"Allows authentication flows initiated by the IdP. This can be a security " +"risk, as no validation of the request ID is done." +msgstr "" +"Позволява потоци за автентикация, инициирани от IdP. Това може да " +"представлява риск за сигурността, тъй като не се извършва валидиране на ID " +"на заявката." + +#: authentik/sources/saml/models.py +msgid "" +"When enabled, the IdP will re-authenticate the user even if a session " +"exists." +msgstr "" +"Когато е активирано, IdP ще автентикира отново потребителя, дори ако " +"съществува сесия." + +#: authentik/sources/saml/models.py +msgid "" +"NameID Policy sent to the IdP. Can be unset, in which case no Policy is " +"sent." +msgstr "" +"NameID политика, изпращана към IdP. Може да не е зададена, в който случай не" +" се изпраща политика." + +#: authentik/sources/saml/models.py +msgid "Delete temporary users after" +msgstr "Изтрий временните потребители след" + +#: authentik/sources/saml/models.py +msgid "" +"Time offset when temporary users should be deleted. This only applies if " +"your IDP uses the NameID Format 'transient', and the user doesn't log out " +"manually. (Format: hours=1;minutes=2;seconds=3)." +msgstr "" +"Изместване на времето, когато временните потребители трябва да бъдат " +"изтрити. Това важи само ако вашият IDP използва формат NameID 'transient' и " +"потребителят не излезе ръчно. (Формат: hours=1;minutes=2;seconds=3)." + +#: authentik/sources/saml/models.py +msgid "" +"Keypair used to sign outgoing Responses going to the Identity Provider." +msgstr "" +"Двойка ключове, използвана за подписване на изходящи отговори към доставчика" +" на идентичност." + +#: authentik/sources/saml/models.py +msgid "SAML Source" +msgstr "SAML източник" + +#: authentik/sources/saml/models.py +msgid "SAML Sources" +msgstr "SAML източници" + +#: authentik/sources/saml/models.py +msgid "SAML Source Property Mapping" +msgstr "SAML съпоставяне на свойства на източник" + +#: authentik/sources/saml/models.py +msgid "SAML Source Property Mappings" +msgstr "SAML съпоставяния на свойства на източник" + +#: authentik/sources/saml/models.py +msgid "User SAML Source Connection" +msgstr "Връзка на потребителски SAML източник" + +#: authentik/sources/saml/models.py +msgid "User SAML Source Connections" +msgstr "Връзки на потребителски SAML източник" + +#: authentik/sources/saml/models.py +msgid "Group SAML Source Connection" +msgstr "Връзка на групов SAML източник" + +#: authentik/sources/saml/models.py +msgid "Group SAML Source Connections" +msgstr "Връзки на групов SAML източник" + +#: authentik/sources/saml/views.py +#, python-brace-format +msgid "Continue to {source_name}" +msgstr "Продължи към {source_name}" + +#: authentik/sources/scim/models.py +msgid "SCIM Source" +msgstr "SCIM източник" + +#: authentik/sources/scim/models.py +msgid "SCIM Sources" +msgstr "SCIM източници" + +#: authentik/sources/scim/models.py +msgid "SCIM Source Property Mapping" +msgstr "SCIM съпоставяне на свойства на източник" + +#: authentik/sources/scim/models.py +msgid "SCIM Source Property Mappings" +msgstr "SCIM съпоставяния на свойства на източник" + +#: authentik/sources/telegram/api/source.py +msgid "This Telegram account is already connected to another user." +msgstr "Този Telegram акаунт вече е свързан с друг потребител." + +#: authentik/sources/telegram/models.py authentik/sources/telegram/stage.py +msgid "Telegram bot username" +msgstr "Потребителско име на Telegram бот" + +#: authentik/sources/telegram/models.py +msgid "Telegram bot token" +msgstr "Telegram bot токен" + +#: authentik/sources/telegram/models.py +msgid "Request access to send messages from your bot." +msgstr "Поискай достъп за изпращане на съобщения от вашия бот." + +#: authentik/sources/telegram/models.py +msgid "Telegram Source" +msgstr "Telegram източник" + +#: authentik/sources/telegram/models.py +msgid "Telegram Sources" +msgstr "Telegram източници" + +#: authentik/sources/telegram/models.py +msgid "Telegram Source Property Mapping" +msgstr "Telegram съпоставяне на свойства на източник" + +#: authentik/sources/telegram/models.py +msgid "Telegram Source Property Mappings" +msgstr "Telegram съпоставяния на свойства на източник" + +#: authentik/sources/telegram/models.py +msgid "User Telegram Source Connection" +msgstr "Връзка на потребителски Telegram източник" + +#: authentik/sources/telegram/models.py +msgid "User Telegram Source Connections" +msgstr "Връзки на потребителски Telegram източник" + +#: authentik/sources/telegram/models.py +msgid "Group Telegram Source Connection" +msgstr "Връзка на групов Telegram източник" + +#: authentik/sources/telegram/models.py +msgid "Group Telegram Source Connections" +msgstr "Връзки на групов Telegram източник" + +#: authentik/sources/telegram/telegram.py +msgid "Authentication date is too old" +msgstr "Датата на автентикация е твърде стара" + +#: authentik/sources/telegram/telegram.py +msgid "Invalid hash" +msgstr "Невалиден хеш" + +#: authentik/stages/authenticator_duo/models.py +msgid "Duo Authenticator Setup Stage" +msgstr "Стъпка за настройка на Duo автентикатор" + +#: authentik/stages/authenticator_duo/models.py +msgid "Duo Authenticator Setup Stages" +msgstr "Стъпки за настройка на Duo автентикатор" + +#: authentik/stages/authenticator_duo/models.py +msgid "Duo Device" +msgstr "Duo устройство" + +#: authentik/stages/authenticator_duo/models.py +msgid "Duo Devices" +msgstr "Duo устройства" + +#: authentik/stages/authenticator_email/models.py +#: authentik/stages/email/models.py +msgid "" +"When enabled, global Email connection settings will be used and connection " +"settings below will be ignored." +msgstr "" +"Когато е активирано, ще се използват глобалните настройки за имейл връзка, а" +" настройките за връзка по-долу ще бъдат игнорирани." + +#: authentik/stages/authenticator_email/models.py +#: authentik/stages/email/models.py +msgid "Time the token sent is valid (Format: hours=3,minutes=17,seconds=300)." +msgstr "" +"Време, през което изпратеният токен е валиден (Формат: " +"hours=3,minutes=17,seconds=300)." + +#: authentik/stages/authenticator_email/models.py +msgid "Email Authenticator Setup Stage" +msgstr "Стъпка за настройка на имейл автентикатор" + +#: authentik/stages/authenticator_email/models.py +msgid "Email Authenticator Setup Stages" +msgstr "Стъпки за настройка на имейл автентикатор" + +#: authentik/stages/authenticator_email/models.py +#: authentik/stages/authenticator_email/stage.py +#: authentik/stages/email/stage.py +msgid "Exception occurred while rendering E-mail template" +msgstr "Възникна изключение при рендериране на имейл шаблон" + +#: authentik/stages/authenticator_email/models.py +msgid "Email Device" +msgstr "Имейл устройство" + +#: authentik/stages/authenticator_email/models.py +msgid "Email Devices" +msgstr "Имейл устройства" + +#: authentik/stages/authenticator_email/stage.py +#: authentik/stages/authenticator_sms/stage.py +#: authentik/stages/authenticator_totp/stage.py +msgid "Code does not match" +msgstr "Кодът не съвпада" + +#: authentik/stages/authenticator_email/stage.py +msgid "Invalid email" +msgstr "Невалиден имейл" + +#: authentik/stages/authenticator_email/stage.py +msgid "The user already has an email address registered for MFA." +msgstr "Потребителят вече има имейл адрес, регистриран за MFA." + +#: authentik/stages/authenticator_email/templates/email/email_otp.html +#: authentik/stages/email/templates/email/password_reset.html +#, python-format +msgid "" +"\n" +" Hi %(username)s,\n" +" " +msgstr "" +"\n" +" Здравейте %(username)s,\n" +" " + +#: authentik/stages/authenticator_email/templates/email/email_otp.html +msgid "" +"\n" +" Email MFA code.\n" +" " +msgstr "" +"\n" +" Имейл MFA код.\n" +" " + +#: authentik/stages/authenticator_email/templates/email/email_otp.html +#, python-format +msgid "" +"\n" +" If you did not request this code, please ignore this email. The code above is valid for %(expires)s.\n" +" " +msgstr "" +"\n" +" Ако не сте заявили този код, моля, игнорирайте този имейл. Кодът по-горе е валиден за %(expires)s.\n" +" " + +#: authentik/stages/authenticator_email/templates/email/email_otp.txt +#: authentik/stages/email/templates/email/password_reset.txt +#, python-format +msgid "Hi %(username)s," +msgstr "Здравейте %(username)s," + +#: authentik/stages/authenticator_email/templates/email/email_otp.txt +msgid "" +"\n" +"Email MFA code\n" +msgstr "" +"\n" +"Имейл MFA код\n" + +#: authentik/stages/authenticator_email/templates/email/email_otp.txt +#, python-format +msgid "" +"\n" +"If you did not request this code, please ignore this email. The code above is valid for %(expires)s.\n" +msgstr "" +"\n" +"Ако не сте заявили този код, моля, игнорирайте този имейл. Кодът по-горе е валиден за %(expires)s.\n" + +#: authentik/stages/authenticator_sms/models.py +msgid "" +"When enabled, the Phone number is only used during enrollment to verify the " +"users authenticity. Only a hash of the phone number is saved to ensure it is" +" not reused in the future." +msgstr "" +"Когато е активирано, телефонният номер се използва само по време на " +"регистрация за проверка на автентичността на потребителите. Запазва се само " +"хеш на телефонния номер, за да се гарантира, че не се използва повторно в " +"бъдеще." + +#: authentik/stages/authenticator_sms/models.py +msgid "Optionally modify the payload being sent to custom providers." +msgstr "" +"По избор променете полезния товар, изпращан към персонализирани доставчици." + +#: authentik/stages/authenticator_sms/models.py +#, python-brace-format +msgid "Use this code to authenticate in authentik: {token}" +msgstr "Използвайте този код за автентикация в authentik: {token}" + +#: authentik/stages/authenticator_sms/models.py +msgid "SMS Authenticator Setup Stage" +msgstr "Стъпка за настройка на SMS автентикатор" + +#: authentik/stages/authenticator_sms/models.py +msgid "SMS Authenticator Setup Stages" +msgstr "Стъпки за настройка на SMS автентикатор" + +#: authentik/stages/authenticator_sms/models.py +msgid "SMS Device" +msgstr "SMS устройство" + +#: authentik/stages/authenticator_sms/models.py +msgid "SMS Devices" +msgstr "SMS устройства" + +#: authentik/stages/authenticator_sms/stage.py +msgid "Invalid phone number" +msgstr "Невалиден телефонен номер" + +#: authentik/stages/authenticator_static/models.py +msgid "Static Authenticator Setup Stage" +msgstr "Стъпка за настройка на статичен автентикатор" + +#: authentik/stages/authenticator_static/models.py +msgid "Static Authenticator Setup Stages" +msgstr "Стъпки за настройка на статичен автентикатор" + +#: authentik/stages/authenticator_static/models.py +msgid "Static Device" +msgstr "Статично устройство" + +#: authentik/stages/authenticator_static/models.py +msgid "Static Devices" +msgstr "Статични устройства" + +#: authentik/stages/authenticator_static/models.py +msgid "Static Token" +msgstr "Статичен токен" + +#: authentik/stages/authenticator_static/models.py +msgid "Static Tokens" +msgstr "Статични токени" + +#: authentik/stages/authenticator_totp/models.py +msgid "6 digits, widely compatible" +msgstr "6 цифри, широко съвместим" + +#: authentik/stages/authenticator_totp/models.py +msgid "8 digits, not compatible with apps like Google Authenticator" +msgstr "8 цифри, не е съвместим с приложения като Google Authenticator" + +#: authentik/stages/authenticator_totp/models.py +msgid "TOTP Authenticator Setup Stage" +msgstr "Стъпка за настройка на TOTP автентикатор" + +#: authentik/stages/authenticator_totp/models.py +msgid "TOTP Authenticator Setup Stages" +msgstr "Стъпки за настройка на TOTP автентикатор" + +#: authentik/stages/authenticator_totp/models.py +msgid "TOTP Device" +msgstr "TOTP устройство" + +#: authentik/stages/authenticator_totp/models.py +msgid "TOTP Devices" +msgstr "TOTP устройства" + +#: authentik/stages/authenticator_validate/challenge.py +msgid "" +"Invalid Token. Please ensure the time on your device is accurate and try " +"again." +msgstr "" +"Невалиден токен. Моля, уверете се, че времето на вашето устройство е точно и" +" опитайте отново." + +#: authentik/stages/authenticator_validate/challenge.py +#: authentik/stages/authenticator_webauthn/stage.py +#, python-brace-format +msgid "Invalid device type. Contact your {brand} administrator for help." +msgstr "" +"Невалиден тип устройство. Свържете се с администратора на {brand} за помощ." + +#: authentik/stages/authenticator_validate/models.py +msgid "Static" +msgstr "Статичен" + +#: authentik/stages/authenticator_validate/models.py +msgid "TOTP" +msgstr "TOTP" + +#: authentik/stages/authenticator_validate/models.py +msgid "WebAuthn" +msgstr "WebAuthn" + +#: authentik/stages/authenticator_validate/models.py +msgid "Duo" +msgstr "Duo" + +#: authentik/stages/authenticator_validate/models.py +msgid "SMS" +msgstr "SMS" + +#: authentik/stages/authenticator_validate/models.py +msgid "" +"Stages used to configure Authenticator when user doesn't have any compatible" +" devices. After this configuration Stage passes, the user is not prompted " +"again." +msgstr "" +"Стъпки, използвани за конфигуриране на автентикатор, когато потребителят " +"няма съвместими устройства. След като тази стъпка за конфигуриране премине, " +"потребителят не се подканва отново." + +#: authentik/stages/authenticator_validate/models.py +msgid "Device classes which can be used to authenticate" +msgstr "Класове устройства, които могат да се използват за автентикация" + +#: authentik/stages/authenticator_validate/models.py +msgid "" +"If any of the user's device has been used within this threshold, this stage " +"will be skipped" +msgstr "" +"Ако някое от устройствата на потребителя е било използвано в рамките на този" +" праг, тази стъпка ще бъде пропусната" + +#: authentik/stages/authenticator_validate/models.py +msgid "Enforce user verification for WebAuthn devices." +msgstr "Налагай проверка на потребителя за WebAuthn устройства." + +#: authentik/stages/authenticator_validate/models.py +msgid "Authenticator Validation Stage" +msgstr "Стъпка за валидиране на автентикатор" + +#: authentik/stages/authenticator_validate/models.py +msgid "Authenticator Validation Stages" +msgstr "Стъпки за валидиране на автентикатор" + +#: authentik/stages/authenticator_validate/stage.py +msgid "No (allowed) MFA authenticator configured." +msgstr "Не е конфигуриран (разрешен) MFA автентикатор." + +#: authentik/stages/authenticator_webauthn/models.py +msgid "When enabled, a given device can only be registered once." +msgstr "" +"Когато е активирано, дадено устройство може да бъде регистрирано само " +"веднъж." + +#: authentik/stages/authenticator_webauthn/models.py +msgid "WebAuthn Authenticator Setup Stage" +msgstr "Стъпка за настройка на WebAuthn автентикатор" + +#: authentik/stages/authenticator_webauthn/models.py +msgid "WebAuthn Authenticator Setup Stages" +msgstr "Стъпки за настройка на WebAuthn автентикатор" + +#: authentik/stages/authenticator_webauthn/models.py +msgid "WebAuthn Device" +msgstr "WebAuthn устройство" + +#: authentik/stages/authenticator_webauthn/models.py +msgid "WebAuthn Devices" +msgstr "WebAuthn устройства" + +#: authentik/stages/authenticator_webauthn/models.py +msgid "WebAuthn Device type" +msgstr "WebAuthn тип устройство" + +#: authentik/stages/authenticator_webauthn/models.py +msgid "WebAuthn Device types" +msgstr "WebAuthn типове устройства" + +#: authentik/stages/authenticator_webauthn/tasks.py +msgid "" +"Background task to import FIDO Alliance MDS blob and AAGUIDs into database." +msgstr "" +"Фонова задача за импортиране на FIDO Alliance MDS blob и AAGUIDs в базата " +"данни." + +#: authentik/stages/captcha/models.py +msgid "Public key, acquired your captcha Provider." +msgstr "Публичен ключ, получен от вашия captcha доставчик." + +#: authentik/stages/captcha/models.py +msgid "Private key, acquired your captcha Provider." +msgstr "Частен ключ, получен от вашия captcha доставчик." + +#: authentik/stages/captcha/models.py +msgid "" +"When enabled and the received captcha score is outside of the given " +"threshold, the stage will show an error message. When not enabled, the flow " +"will continue, but the data from the captcha will be available in the " +"context for policy decisions" +msgstr "" +"Когато е активирано и получената captcha оценка е извън дадения праг, " +"стъпката ще покаже съобщение за грешка. Когато не е активирано, потокът ще " +"продължи, но данните от captcha ще бъдат достъпни в контекста за решения по " +"политики" + +#: authentik/stages/captcha/models.py +msgid "Captcha Stage" +msgstr "Captcha стъпка" + +#: authentik/stages/captcha/models.py +msgid "Captcha Stages" +msgstr "Captcha стъпки" + +#: authentik/stages/captcha/stage.py +msgid "Invalid captcha response. Retrying may solve this issue." +msgstr "Невалиден captcha отговор. Повторният опит може да реши този проблем." + +#: authentik/stages/captcha/stage.py +msgid "Invalid captcha response" +msgstr "Невалиден captcha отговор" + +#: authentik/stages/captcha/stage.py +msgid "Failed to validate token" +msgstr "Неуспешно валидиране на токен" + +#: authentik/stages/consent/models.py +msgid "" +"Offset after which consent expires. (Format: hours=1;minutes=2;seconds=3)." +msgstr "" +"Изместване, след което съгласието изтича. (Формат: " +"hours=1;minutes=2;seconds=3)." + +#: authentik/stages/consent/models.py +msgid "Consent Stage" +msgstr "Стъпка за съгласие" + +#: authentik/stages/consent/models.py +msgid "Consent Stages" +msgstr "Стъпки за съгласие" + +#: authentik/stages/consent/models.py +msgid "User Consent" +msgstr "Съгласие на потребителя" + +#: authentik/stages/consent/models.py +msgid "User Consents" +msgstr "Съгласия на потребителя" + +#: authentik/stages/consent/stage.py +msgid "Invalid consent token, re-showing prompt" +msgstr "Невалиден токен за съгласие, повторно показване на подкана" + +#: authentik/stages/deny/models.py +msgid "Deny Stage" +msgstr "Стъпка за отказ" + +#: authentik/stages/deny/models.py +msgid "Deny Stages" +msgstr "Стъпки за отказ" + +#: authentik/stages/dummy/models.py +msgid "Dummy Stage" +msgstr "Dummy стъпка" + +#: authentik/stages/dummy/models.py +msgid "Dummy Stages" +msgstr "Dummy стъпки" + +#: authentik/stages/email/flow.py +msgid "Continue to confirm this email address." +msgstr "Продължи, за да потвърдиш този имейл адрес." + +#: authentik/stages/email/flow.py +msgid "Link was already used, please request a new link." +msgstr "Връзката вече е била използвана, моля, заявете нова връзка." + +#: authentik/stages/email/models.py +msgid "Password Reset" +msgstr "Нулиране на парола" + +#: authentik/stages/email/models.py +msgid "Account Confirmation" +msgstr "Потвърждение на акаунт" + +#: authentik/stages/email/models.py +msgid "Email OTP" +msgstr "Имейл OTP" + +#: authentik/stages/email/models.py +msgid "Event Notification" +msgstr "Известие за събитие" + +#: authentik/stages/email/models.py authentik/stages/invitation/models.py +msgid "Invitation" +msgstr "Покана" + +#: authentik/stages/email/models.py +msgid "" +"The time window used to count recent account recovery attempts. If the " +"number of attempts exceed recovery_max_attempts within this period, further " +"attempts will be rate-limited. (Format: hours=1;minutes=2;seconds=3)." +msgstr "" +"Времевият прозорец, използван за броене на скорошни опити за възстановяване " +"на акаунт. Ако броят на опитите надвиши recovery_max_attempts в рамките на " +"този период, последващите опити ще бъдат ограничени. (Формат: " +"hours=1;minutes=2;seconds=3)." + +#: authentik/stages/email/models.py +msgid "Activate users upon completion of stage." +msgstr "Активирай потребителите при завършване на стъпката." + +#: authentik/stages/email/models.py +msgid "Email Stage" +msgstr "Стъпка имейл" + +#: authentik/stages/email/models.py +msgid "Email Stages" +msgstr "Стъпки имейл" + +#: authentik/stages/email/stage.py +msgid "Successfully verified Email." +msgstr "Имейлът е успешно проверен." + +#: authentik/stages/email/stage.py +msgid "No pending user." +msgstr "Няма чакащ потребител." + +#: authentik/stages/email/stage.py +msgid "Email sent." +msgstr "Имейлът е изпратен." + +#: authentik/stages/email/stage.py +#, python-brace-format +msgid "" +"Too many account verification attempts. Please try again after {minutes} " +"minutes." +msgstr "" +"Твърде много опити за проверка на акаунт. Моля, опитайте отново след " +"{minutes} минути." + +#: authentik/stages/email/stage.py +msgid "Email Successfully sent." +msgstr "Имейлът е изпратен успешно." + +#: authentik/stages/email/tasks.py +msgid "Send email." +msgstr "Изпрати имейл." + +#: authentik/stages/email/templates/email/account_confirmation.html +#: authentik/stages/email/templates/email/account_confirmation.txt +msgid "Welcome!" +msgstr "Добре дошли!" + +#: authentik/stages/email/templates/email/account_confirmation.html +msgid "" +"We're excited to have you get started. First, you need to confirm your " +"account. Just press the button below." +msgstr "" +"Радваме се, че започвате. Първо трябва да потвърдите акаунта си. Просто " +"натиснете бутона по-долу." + +#: authentik/stages/email/templates/email/account_confirmation.html +msgid "Confirm Account" +msgstr "Потвърди акаунт" + +#: authentik/stages/email/templates/email/account_confirmation.html +#, python-format +msgid "" +"\n" +" If that doesn't work, copy and paste the following link in your browser: %(url)s\n" +" " +msgstr "" +"\n" +" Ако това не работи, копирайте и поставете следната връзка във вашия браузър: %(url)s\n" +" " + +#: authentik/stages/email/templates/email/account_confirmation.txt +msgid "" +"We're excited to have you get started. First, you need to confirm your " +"account. Just open the link below." +msgstr "" +"Радваме се, че започвате. Първо трябва да потвърдите акаунта си. Просто " +"отворете връзката по-долу." + +#: authentik/stages/email/templates/email/event_notification.html +#, python-format +msgid "" +"\n" +" This email was sent from the notification transport %(name)s.\n" +" " +msgstr "" +"\n" +" Този имейл е изпратен от транспорта за известия %(name)s.\n" +" " + +#: authentik/stages/email/templates/email/event_notification.txt +msgid "Dear authentik user," +msgstr "Уважаеми authentik потребител," + +#: authentik/stages/email/templates/email/event_notification.txt +msgid "The following notification was created:" +msgstr "Беше създадено следното известие:" + +#: authentik/stages/email/templates/email/event_notification.txt +msgid "Additional attributes:" +msgstr "Допълнителни атрибути:" + +#: authentik/stages/email/templates/email/event_notification.txt +#, python-format +msgid "" +"\n" +"This email was sent from the notification transport %(name)s.\n" +msgstr "" +"\n" +"Този имейл е изпратен от транспорта за известия %(name)s.\n" + +#: authentik/stages/email/templates/email/invitation.html +msgid "" +"\n" +" You're Invited!\n" +" " +msgstr "" +"\n" +" Поканени сте!\n" +" " + +#: authentik/stages/email/templates/email/invitation.html +#, python-format +msgid "" +"\n" +" You have been invited to join %(host)s. Click the button below to get started.\n" +" " +msgstr "" +"\n" +" Поканени сте да се присъедините към %(host)s. Щракнете бутона по-долу, за да започнете.\n" +" " + +#: authentik/stages/email/templates/email/invitation.html +#, python-format +msgid "" +"\n" +" This invitation expires %(expires)s.\n" +" " +msgstr "" +"\n" +" Тази покана изтича %(expires)s.\n" +" " + +#: authentik/stages/email/templates/email/invitation.html +#: authentik/stages/email/templates/email/invitation.txt +msgid "Accept Invitation" +msgstr "Приеми поканата" + +#: authentik/stages/email/templates/email/invitation.html +msgid "" +"\n" +" If you cannot click the button above, please copy and paste the following URL into your browser:\n" +" " +msgstr "" +"\n" +" Ако не можете да щракнете бутона по-горе, моля, копирайте и поставете следния URL във вашия браузър:\n" +" " + +#: authentik/stages/email/templates/email/invitation.txt +msgid "You're Invited!" +msgstr "Поканени сте!" + +#: authentik/stages/email/templates/email/invitation.txt +#, python-format +msgid "" +"You have been invited to join %(host)s. Use the link below to get started." +msgstr "" +"Поканени сте да се присъедините към %(host)s. Използвайте връзката по-долу, " +"за да започнете." + +#: authentik/stages/email/templates/email/invitation.txt +#, python-format +msgid "This invitation expires %(expires)s." +msgstr "Тази покана изтича %(expires)s." + +#: authentik/stages/email/templates/email/invitation.txt +msgid "" +"If you cannot click the link above, please copy and paste the following URL " +"into your browser:" +msgstr "" +"Ако не можете да щракнете върху връзката по-горе, моля, копирайте и " +"поставете следния URL във вашия браузър:" + +#: authentik/stages/email/templates/email/password_reset.html +msgid "" +"\n" +" You recently requested to change your password for your authentik account. Use the button below to set a new password.\n" +" " +msgstr "" +"\n" +" Наскоро поискахте да промените паролата си за вашия authentik акаунт. Използвайте бутона по-долу, за да зададете нова парола.\n" +" " + +#: authentik/stages/email/templates/email/password_reset.html +#, python-format +msgid "" +"\n" +" If you did not request a password change, please ignore this email. The link above is valid for %(expires)s.\n" +" " +msgstr "" +"\n" +" Ако не сте поискали промяна на парола, моля, игнорирайте този имейл. Връзката по-горе е валидна за %(expires)s.\n" +" " + +#: authentik/stages/email/templates/email/password_reset.txt +msgid "" +"\n" +"You recently requested to change your password for your authentik account. Use the link below to set a new password.\n" +msgstr "" +"\n" +"Наскоро поискахте да промените паролата си за вашия authentik акаунт. Използвайте връзката по-долу, за да зададете нова парола.\n" + +#: authentik/stages/email/templates/email/password_reset.txt +#, python-format +msgid "" +"\n" +"If you did not request a password change, please ignore this email. The link above is valid for %(expires)s.\n" +msgstr "" +"\n" +"Ако не сте поискали промяна на парола, моля, игнорирайте този имейл. Връзката по-горе е валидна за %(expires)s.\n" + +#: authentik/stages/email/templates/email/setup.html +msgid "authentik Test-Email" +msgstr "authentik тестов имейл" + +#: authentik/stages/email/templates/email/setup.html +msgid "" +"\n" +" This is a test email to inform you, that you've successfully configured authentik emails.\n" +" " +msgstr "" +"\n" +" Това е тестов имейл целящ да Ви уведоми, че сте настроили успешно изпращането на имейли от authentik.\n" +" " + +#: authentik/stages/email/templates/email/setup.txt +msgid "" +"\n" +"This is a test email to inform you, that you've successfully configured authentik emails.\n" +msgstr "" +"\n" +"Това е тестов имейл, който да ви информира, че сте конфигурирали успешно authentik имейлите.\n" + +#: authentik/stages/identification/api.py +msgid "When no user fields are selected, at least one source must be selected" +msgstr "" +"Когато не са избрани потребителски полета, трябва да е избран поне един " +"източник" + +#: authentik/stages/identification/models.py +msgid "" +"Fields of the user object to match against. (Hold shift to select multiple " +"options)" +msgstr "" +"Полета на обекта потребител, спрямо които да се сравнява. (Задръжте shift, " +"за да изберете множество опции)" + +#: authentik/stages/identification/models.py +msgid "When enabled, user fields are matched regardless of their casing." +msgstr "" +"Когато е активирано, потребителските полета се сравняват независимо от " +"регистъра им." + +#: authentik/stages/identification/models.py +msgid "" +"When a valid username/email has been entered, and this option is enabled, " +"the user's username and avatar will be shown. Otherwise, the text that the " +"user entered will be shown" +msgstr "" +"Когато е въведено валидно потребителско име/имейл и тази опция е активирана," +" ще бъдат показани потребителското име и аватарът на потребителя. В противен" +" случай ще се покаже текстът, който потребителят е въвел" + +#: authentik/stages/identification/models.py +msgid "" +"When enabled, the stage will succeed and continue even when incorrect user " +"info is entered." +msgstr "" +"Когато е активирано, стъпката ще успее и ще продължи дори когато е въведена " +"неправилна потребителска информация." + +#: authentik/stages/identification/models.py +msgid "" +"Show the user the 'Remember me on this device' toggle, allowing repeat users" +" to skip straight to entering their password." +msgstr "" +"Покажи на потребителя превключвателя 'Запомни ме на това устройство', " +"позволяващ на повторните потребители да преминат директно към въвеждане на " +"паролата си." + +#: authentik/stages/identification/models.py +msgid "Optional enrollment flow, which is linked at the bottom of the page." +msgstr "" +"Незадължителен поток за регистрация, който е свързан в долната част на " +"страницата." + +#: authentik/stages/identification/models.py +msgid "Optional recovery flow, which is linked at the bottom of the page." +msgstr "" +"Незадължителен поток за възстановяване, който е свързан в долната част на " +"страницата." + +#: authentik/stages/identification/models.py +msgid "Optional passwordless flow, which is linked at the bottom of the page." +msgstr "" +"Незадължителен поток без парола, който е свързан в долната част на " +"страницата." + +#: authentik/stages/identification/models.py +msgid "Specify which sources should be shown." +msgstr "Посочете кои източници да се показват." + +#: authentik/stages/identification/models.py +msgid "Identification Stage" +msgstr "Стъпка за идентификация" + +#: authentik/stages/identification/models.py +msgid "Identification Stages" +msgstr "Стъпки за идентификация" + +#: authentik/stages/identification/stage.py +msgid "No identification data provided." +msgstr "Не са предоставени данни за идентификация." + +#: authentik/stages/identification/stage.py +msgid "Failed to authenticate." +msgstr "Неуспешна автентикация." + +#: authentik/stages/identification/stage.py +msgid "Log in" +msgstr "Вход" + +#: authentik/stages/identification/stage.py +msgid "Continue" +msgstr "Продължи" + +#: authentik/stages/invitation/models.py +msgid "" +"If this flag is set, this Stage will jump to the next Stage when no " +"Invitation is given. By default this Stage will cancel the Flow when no " +"invitation is given." +msgstr "" +"Ако този флаг е зададен, тази стъпка ще премине към следващата стъпка, " +"когато не е дадена покана. По подразбиране тази стъпка ще отмени потока, " +"когато не е дадена покана." + +#: authentik/stages/invitation/models.py +msgid "Invitation Stage" +msgstr "Стъпка за покана" + +#: authentik/stages/invitation/models.py +msgid "Invitation Stages" +msgstr "Стъпки за покана" + +#: authentik/stages/invitation/models.py +msgid "When set, only the configured flow can use this invitation." +msgstr "" +"Когато е зададено, само конфигурираният поток може да използва тази покана." + +#: authentik/stages/invitation/models.py +msgid "When enabled, the invitation will be deleted after usage." +msgstr "Когато е активирано, поканата ще бъде изтрита след употреба." + +#: authentik/stages/invitation/models.py +msgid "Optional fixed data to enforce on user enrollment." +msgstr "" +"Незадължителни фиксирани данни за налагане при регистрация на потребител." + +#: authentik/stages/invitation/models.py +msgid "Invitations" +msgstr "Покани" + +#: authentik/stages/invitation/stage.py +msgid "Invalid invite/invite not found" +msgstr "Невалидна покана/поканата не е намерена" + +#: authentik/stages/password/models.py +msgid "User database + standard password" +msgstr "Потребителска база данни + стандартна парола" + +#: authentik/stages/password/models.py +msgid "User database + app passwords" +msgstr "Потребителска база данни + пароли за приложение" + +#: authentik/stages/password/models.py +msgid "User database + LDAP password" +msgstr "Потребителска база данни + LDAP парола" + +#: authentik/stages/password/models.py +msgid "User database + Kerberos password" +msgstr "Потребителска база данни + Kerberos парола" + +#: authentik/stages/password/models.py +msgid "Selection of backends to test the password against." +msgstr "Избор на backend-и за тестване на паролата." + +#: authentik/stages/password/models.py +msgid "" +"How many attempts a user has before the flow is canceled. To lock the user " +"out, use a reputation policy and a user_write stage." +msgstr "" +"Колко опита има потребителят, преди потокът да бъде отменен. За да заключите" +" потребителя, използвайте политика за репутация и стъпка user_write." + +#: authentik/stages/password/models.py +msgid "" +"When enabled, provides a 'show password' button with the password input " +"field." +msgstr "" +"Когато е активирано, предоставя бутон 'покажи парола' до полето за въвеждане" +" на парола." + +#: authentik/stages/password/models.py +msgid "Password Stage" +msgstr "Стъпка за парола" + +#: authentik/stages/password/models.py +msgid "Password Stages" +msgstr "Стъпки за парола" + +#: authentik/stages/password/stage.py +msgid "Invalid password" +msgstr "Невалидна парола" + +#: authentik/stages/prompt/models.py +msgid "Text: Simple Text input" +msgstr "Текст: Просто въвеждане на текст" + +#: authentik/stages/prompt/models.py +msgid "Text area: Multiline Text Input." +msgstr "Текстова област: Многоредово въвеждане на текст." + +#: authentik/stages/prompt/models.py +msgid "Text (read-only): Simple Text input, but cannot be edited." +msgstr "" +"Текст (само за четене): Просто въвеждане на текст, но не може да се " +"редактира." + +#: authentik/stages/prompt/models.py +msgid "Text area (read-only): Multiline Text input, but cannot be edited." +msgstr "" +"Текстова област (само за четене): Многоредово въвеждане на текст, но не може" +" да се редактира." + +#: authentik/stages/prompt/models.py +msgid "" +"Username: Same as Text input, but checks for and prevents duplicate " +"usernames." +msgstr "" +"Потребителско име: Същото като въвеждане на текст, но проверява за и " +"предотвратява дублиращи се потребителски имена." + +#: authentik/stages/prompt/models.py +msgid "Email: Text field with Email type." +msgstr "Имейл: Текстово поле с тип Email." + +#: authentik/stages/prompt/models.py +msgid "" +"Password: Masked input, multiple inputs of this type on the same prompt need" +" to be identical." +msgstr "" +"Парола: Маскиран вход, множество входове от този тип в една и съща подкана " +"трябва да са идентични." + +#: authentik/stages/prompt/models.py +msgid "Fixed choice field rendered as a group of radio buttons." +msgstr "Поле с фиксиран избор, рендерирано като група радио бутони." + +#: authentik/stages/prompt/models.py +msgid "Fixed choice field rendered as a dropdown." +msgstr "Поле с фиксиран избор, рендерирано като падащо меню." + +#: authentik/stages/prompt/models.py +msgid "" +"File: File upload for arbitrary files. File content will be available in " +"flow context as data-URI" +msgstr "" +"Файл: Качване на файл за произволни файлове. Съдържанието на файла ще бъде " +"налично в контекста на потока като data-URI" + +#: authentik/stages/prompt/models.py +msgid "Separator: Static Separator Line" +msgstr "Разделител: Статична разделителна линия" + +#: authentik/stages/prompt/models.py +msgid "Hidden: Hidden field, can be used to insert data into form." +msgstr "" +"Скрито: Скрито поле, може да се използва за вмъкване на данни във формата." + +#: authentik/stages/prompt/models.py +msgid "Static: Static value, displayed as-is." +msgstr "Статично: Статична стойност, показвана както е." + +#: authentik/stages/prompt/models.py +msgid "Alert (Info): Static alert box with info styling" +msgstr "" + +#: authentik/stages/prompt/models.py +msgid "Alert (Warning): Static alert box with warning styling" +msgstr "" + +#: authentik/stages/prompt/models.py +msgid "Alert (Danger): Static alert box with danger styling" +msgstr "" + +#: authentik/stages/prompt/models.py +msgid "authentik: Selection of locales authentik supports" +msgstr "authentik: Избор на локали, които authentik поддържа" + +#: authentik/stages/prompt/models.py +msgid "Name of the form field, also used to store the value" +msgstr "Име на полето на формата, използвано също за съхранение на стойността" + +#: authentik/stages/prompt/models.py +msgid "" +"Optionally provide a short hint that describes the expected input value. " +"When creating a fixed choice field, enable interpreting as expression and " +"return a list to return multiple choices." +msgstr "" +"По избор предоставете кратък намек, описващ очакваната входна стойност. При " +"създаване на поле с фиксиран избор активирайте интерпретация като израз и " +"върнете списък, за да върнете множество избори." + +#: authentik/stages/prompt/models.py +msgid "" +"Optionally pre-fill the input with an initial value. When creating a fixed " +"choice field, enable interpreting as expression and return a list to return " +"multiple default choices." +msgstr "" +"По избор предварително попълнете входа с първоначална стойност. При " +"създаване на поле с фиксиран избор активирайте интерпретация като израз и " +"върнете списък, за да върнете множество избори по подразбиране." + +#: authentik/stages/prompt/models.py +msgid "Prompt" +msgstr "Подкана" + +#: authentik/stages/prompt/models.py +msgid "Prompts" +msgstr "Подкани" + +#: authentik/stages/prompt/models.py +msgid "Prompt Stage" +msgstr "Стъпка за подкана" + +#: authentik/stages/prompt/models.py +msgid "Prompt Stages" +msgstr "Стъпки за подкана" + +#: authentik/stages/prompt/stage.py +msgid "Passwords don't match." +msgstr "Паролите не съвпадат." + +#: authentik/stages/redirect/api.py +msgid "Target URL should be present when mode is Static." +msgstr "Целевият URL трябва да присъства, когато режимът е Static." + +#: authentik/stages/redirect/api.py +msgid "Target Flow should be present when mode is Flow." +msgstr "Целевият поток трябва да присъства, когато режимът е Flow." + +#: authentik/stages/redirect/models.py +msgid "Redirect Stage" +msgstr "Стъпка за пренасочване" + +#: authentik/stages/redirect/models.py +msgid "Redirect Stages" +msgstr "Стъпки за пренасочване" + +#: authentik/stages/user_delete/models.py +msgid "User Delete Stage" +msgstr "Стъпка за изтриване на потребител" + +#: authentik/stages/user_delete/models.py +msgid "User Delete Stages" +msgstr "Стъпки за изтриване на потребител" + +#: authentik/stages/user_delete/stage.py +msgid "No Pending User." +msgstr "Няма чакащ потребител." + +#: authentik/stages/user_login/models.py +msgid "Bind sessions created by this stage to the configured network" +msgstr "Обвържи сесиите, създадени от тази стъпка, с конфигурираната мрежа" + +#: authentik/stages/user_login/models.py +msgid "Bind sessions created by this stage to the configured GeoIP location" +msgstr "" +"Обвържи сесиите, създадени от тази стъпка, с конфигурираното GeoIP " +"местоположение" + +#: authentik/stages/user_login/models.py +msgid "Terminate all other sessions of the user logging in." +msgstr "Прекрати всички други сесии на влизащия потребител." + +#: authentik/stages/user_login/models.py +msgid "" +"Offset the session will be extended by when the user picks the remember me " +"option. Default of 0 means that the remember me option will not be shown. " +"(Format: hours=-1;minutes=-2;seconds=-3)" +msgstr "" +"Изместване, с което сесията ще бъде удължена, когато потребителят избере " +"опцията remember me. Стойност по подразбиране 0 означава, че опцията " +"remember me няма да се показва. (Формат: hours=-1;minutes=-2;seconds=-3)" + +#: authentik/stages/user_login/models.py +msgid "" +"When set to a non-zero value, authentik will save a cookie with a longer " +"expiry,to remember the device the user is logging in from. (Format: " +"hours=-1;minutes=-2;seconds=-3)" +msgstr "" +"Когато е зададено на ненулева стойност, authentik ще запази бисквитка с по-" +"дълго изтичане, за да запомни устройството, от което потребителят влиза. " +"(Формат: hours=-1;minutes=-2;seconds=-3)" + +#: authentik/stages/user_login/models.py +msgid "User Login Stage" +msgstr "Стъпка за вход на потребител" + +#: authentik/stages/user_login/models.py +msgid "User Login Stages" +msgstr "Стъпки за вход на потребител" + +#: authentik/stages/user_login/stage.py +msgid "No Pending user to login." +msgstr "Няма чакащ потребител за вход." + +#: authentik/stages/user_logout/models.py +msgid "User Logout Stage" +msgstr "Стъпка за изход на потребител" + +#: authentik/stages/user_logout/models.py +msgid "User Logout Stages" +msgstr "Стъпки за изход на потребител" + +#: authentik/stages/user_write/models.py +msgid "When set, newly created users are inactive and cannot login." +msgstr "" +"Когато е зададено, новосъздадените потребители са неактивни и не могат да " +"влизат." + +#: authentik/stages/user_write/models.py +msgid "Optionally add newly created users to this group." +msgstr "По избор добавяй новосъздадените потребители към тази група." + +#: authentik/stages/user_write/models.py +msgid "User Write Stage" +msgstr "Стъпка за запис на потребител" + +#: authentik/stages/user_write/models.py +msgid "User Write Stages" +msgstr "Стъпки за запис на потребител" + +#: authentik/stages/user_write/stage.py +msgid "No Pending data." +msgstr "Няма чакащи данни." + +#: authentik/stages/user_write/stage.py +msgid "No user found and can't create new user." +msgstr "Не е намерен потребител и не може да се създаде нов потребител." + +#: authentik/stages/user_write/stage.py +msgid "Failed to update user. Please try again later." +msgstr "Неуспешно обновяване на потребител. Моля, опитайте отново по-късно." + +#: authentik/tasks/models.py +msgid "Tenant this task belongs to" +msgstr "Тенант, на който принадлежи тази задача" + +#: authentik/tasks/models.py +msgid "Retry failed task" +msgstr "Повтори неуспешна задача" + +#: authentik/tasks/models.py +msgid "Task log" +msgstr "Лог на задача" + +#: authentik/tasks/models.py +msgid "Task logs" +msgstr "Логове на задачи" + +#: authentik/tasks/models.py +msgid "Worker status" +msgstr "Статус на работник" + +#: authentik/tasks/models.py +msgid "Worker statuses" +msgstr "Статуси на работници" + +#: authentik/tasks/schedules/models.py +msgid "Unique schedule identifier" +msgstr "Уникален идентификатор на разписание" + +#: authentik/tasks/schedules/models.py +msgid "User schedule identifier" +msgstr "Потребителски идентификатор на разписание" + +#: authentik/tasks/schedules/models.py +msgid "Manually trigger a schedule" +msgstr "Ръчно задейства разписание" + +#: authentik/tasks/tasks.py +msgid "Remove old worker statuses." +msgstr "Премахни стари статуси на работници." + +#: authentik/tenants/api/settings.py +#, python-brace-format +msgid "Value for flag {flag_key} needs to be of type {type}." +msgstr "Стойността за флаг {flag_key} трябва да е от тип {type}." + +#: authentik/tenants/models.py +msgid "" +"Schema name must start with t_, only contain lowercase letters and numbers " +"and be less than 63 characters." +msgstr "" +"Името на схемата трябва да започва с t_, да съдържа само малки букви и цифри" +" и да е по-малко от 63 знака." + +#: authentik/tenants/models.py +msgid "Configure how authentik should show avatars for users." +msgstr "Конфигурирайте как authentik да показва аватари за потребители." + +#: authentik/tenants/models.py +msgid "Enable the ability for users to change their name." +msgstr "Активирай възможността потребителите да променят името си." + +#: authentik/tenants/models.py +msgid "Enable the ability for users to change their email address." +msgstr "Активирайте възможността потребителите да променят имейл адреса си." + +#: authentik/tenants/models.py +msgid "Enable the ability for users to change their username." +msgstr "" +"Активирай възможността потребителите да променят потребителското си име." + +#: authentik/tenants/models.py +msgid "" +"Events will be deleted after this duration.(Format: " +"weeks=3;days=2;hours=3,seconds=2)." +msgstr "" +"Събитията ще бъдат изтрити след тази продължителност. (Формат: " +"weeks=3;days=2;hours=3,seconds=2)." + +#: authentik/tenants/models.py +msgid "Reputation cannot decrease lower than this value. Zero or negative." +msgstr "" +"Репутацията не може да намалее под тази стойност. Нула или отрицателна." + +#: authentik/tenants/models.py +msgid "Reputation cannot increase higher than this value. Zero or positive." +msgstr "" +"Репутацията не може да се увеличи над тази стойност. Нула или положителна." + +#: authentik/tenants/models.py +msgid "The option configures the footer links on the flow executor pages." +msgstr "" +"Опцията конфигурира връзките в долния колонтитул на страниците на " +"изпълнителя на потока." + +#: authentik/tenants/models.py +msgid "" +"When enabled, all the events caused by a user will be deleted upon the " +"user's deletion." +msgstr "" +"Когато е активирано, всички събития, причинени от потребител, ще бъдат " +"изтрити при изтриване на потребителя." + +#: authentik/tenants/models.py +msgid "Globally enable/disable impersonation." +msgstr "Глобално активиране/деактивиране на имитация." + +#: authentik/tenants/models.py +msgid "Require administrators to provide a reason for impersonating a user." +msgstr "" +"Изисквай администраторите да предоставят причина за имитиране на потребител." + +#: authentik/tenants/models.py +msgid "Default token duration" +msgstr "Продължителност на токен по подразбиране" + +#: authentik/tenants/models.py +msgid "Default token length" +msgstr "Дължина на токен по подразбиране" + +#: authentik/tenants/models.py +msgid "Default page size for API responses, if no size was requested." +msgstr "" +"Размер на страница по подразбиране за API отговори, ако не е поискан размер." + +#: authentik/tenants/models.py +msgid "Maximum page size" +msgstr "Максимален размер на страница" + +#: authentik/tenants/models.py +msgid "Tenant" +msgstr "Тенант" + +#: authentik/tenants/models.py +msgid "Tenants" +msgstr "Тенанти" + +#: authentik/tenants/models.py +msgid "Domain" +msgstr "Домейн" + +#: authentik/tenants/models.py +msgid "Domains" +msgstr "Домейни" + +#: packages/ak-guardian/guardian/models.py +msgid "object ID" +msgstr "ID на обект" + +#: packages/django-channels-postgres/django_channels_postgres/models.py +msgid "Group channel" +msgstr "Групов канал" + +#: packages/django-channels-postgres/django_channels_postgres/models.py +msgid "Group channels" +msgstr "Групови канали" + +#: packages/django-channels-postgres/django_channels_postgres/models.py +msgid "Message" +msgstr "Съобщение" + +#: packages/django-channels-postgres/django_channels_postgres/models.py +msgid "Messages" +msgstr "Съобщения" + +#: packages/django-dramatiq-postgres/django_dramatiq_postgres/models.py +msgid "Queue name" +msgstr "Име на опашка" + +#: packages/django-dramatiq-postgres/django_dramatiq_postgres/models.py +msgid "Dramatiq actor name" +msgstr "Име на Dramatiq актьор" + +#: packages/django-dramatiq-postgres/django_dramatiq_postgres/models.py +msgid "Message body" +msgstr "Тяло на съобщението" + +#: packages/django-dramatiq-postgres/django_dramatiq_postgres/models.py +msgid "Task status" +msgstr "Статус на задача" + +#: packages/django-dramatiq-postgres/django_dramatiq_postgres/models.py +msgid "Task last modified time" +msgstr "Време на последна промяна на задача" + +#: packages/django-dramatiq-postgres/django_dramatiq_postgres/models.py +msgid "Number of retries" +msgstr "Брой повторения" + +#: packages/django-dramatiq-postgres/django_dramatiq_postgres/models.py +msgid "Planned execution time" +msgstr "Планирано време за изпълнение" + +#: packages/django-dramatiq-postgres/django_dramatiq_postgres/models.py +msgid "Task result" +msgstr "Резултат на задача" + +#: packages/django-dramatiq-postgres/django_dramatiq_postgres/models.py +msgid "Result expiry time" +msgstr "Време на изтичане на резултата" + +#: packages/django-dramatiq-postgres/django_dramatiq_postgres/models.py +msgid "Task" +msgstr "Задача" + +#: packages/django-dramatiq-postgres/django_dramatiq_postgres/models.py +msgid "Tasks" +msgstr "Задачи" + +#: packages/django-dramatiq-postgres/django_dramatiq_postgres/models.py +#, python-format +msgid "%(value)s is not a valid crontab" +msgstr "%(value)s не е валиден crontab" + +#: packages/django-dramatiq-postgres/django_dramatiq_postgres/models.py +msgid "Dramatiq actor to call" +msgstr "Dramatiq актьор за извикване" + +#: packages/django-dramatiq-postgres/django_dramatiq_postgres/models.py +msgid "Args to send to the actor" +msgstr "Args за изпращане на актьора" + +#: packages/django-dramatiq-postgres/django_dramatiq_postgres/models.py +msgid "Kwargs to send to the actor" +msgstr "Kwargs за изпращане на актьора" + +#: packages/django-dramatiq-postgres/django_dramatiq_postgres/models.py +msgid "Options to send to the actor" +msgstr "Опции за изпращане на актьора" + +#: packages/django-dramatiq-postgres/django_dramatiq_postgres/models.py +msgid "When to schedule tasks" +msgstr "Кога да се планират задачите" + +#: packages/django-dramatiq-postgres/django_dramatiq_postgres/models.py +msgid "Pause this schedule" +msgstr "Постави на пауза това разписание" + +#: packages/django-dramatiq-postgres/django_dramatiq_postgres/models.py +msgid "Schedule" +msgstr "Разписание" + +#: packages/django-dramatiq-postgres/django_dramatiq_postgres/models.py +msgid "Schedules" +msgstr "Разписания" diff --git a/locale/cs_CZ/LC_MESSAGES/django.mo b/locale/cs_CZ/LC_MESSAGES/django.mo index 70671053fc..e667835b22 100644 Binary files a/locale/cs_CZ/LC_MESSAGES/django.mo and b/locale/cs_CZ/LC_MESSAGES/django.mo differ diff --git a/locale/cs_CZ/LC_MESSAGES/django.po b/locale/cs_CZ/LC_MESSAGES/django.po index a90fd6c726..8fe3bfd4f5 100644 --- a/locale/cs_CZ/LC_MESSAGES/django.po +++ b/locale/cs_CZ/LC_MESSAGES/django.po @@ -12,7 +12,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-02-10 19:27+0000\n" +"POT-Creation-Date: 2026-05-06 00:27+0000\n" "PO-Revision-Date: 2025-12-01 19:09+0000\n" "Last-Translator: Václav Nováček , 2026\n" "Language-Team: Czech (Czech Republic) (https://app.transifex.com/authentik/teams/119923/cs_CZ/)\n" @@ -106,6 +106,14 @@ msgstr "Chyba validace" msgid "Blueprint file does not exist" msgstr "Soubor s konfigurační šablonou neexistuje" +#: authentik/blueprints/api.py +msgid "Context must be valid JSON" +msgstr "" + +#: authentik/blueprints/api.py +msgid "Context must be a JSON object" +msgstr "" + #: authentik/blueprints/api.py msgid "Failed to validate blueprint" msgstr "Ověřování konfigurační šablony selhalo" @@ -114,6 +122,11 @@ msgstr "Ověřování konfigurační šablony selhalo" msgid "Either path or content must be set." msgstr "Musí být nastavena buď cesta, nebo obsah." +#: authentik/blueprints/api.py +#, python-brace-format +msgid "User lacks permission to create {model}" +msgstr "Uživatel nemá oprávnění vytvořit {model}" + #: authentik/blueprints/models.py msgid "Managed by authentik" msgstr "Spravuje authentik" @@ -244,10 +257,13 @@ msgstr "" "pouze poskytovatele backchannel. Pokud je vypnuto, backchannel poskytovatelé" " nejsou zahrnuti." -#: authentik/core/api/transactional_applications.py -#, python-brace-format -msgid "User lacks permission to create {model}" -msgstr "Uživatel nemá oprávnění vytvořit {model}" +#: authentik/core/api/users.py +msgid "Invalid password hash format. Must be a valid Django password hash." +msgstr "" + +#: authentik/core/api/users.py +msgid "Cannot set both password and password_hash. Use only one." +msgstr "" #: authentik/core/api/users.py msgid "No leading or trailing slashes allowed." @@ -309,6 +325,12 @@ msgstr "" msgid "This field is required." msgstr "Toto pole je povinné." +#: authentik/core/apps.py +msgid "" +"Configure if applications without any policy/group/user bindings should be " +"accessible to any user." +msgstr "" + #: authentik/core/models.py msgid "name" msgstr "Jméno" @@ -415,6 +437,10 @@ msgstr "Interní název aplikace, používaný v URI." msgid "Open launch URL in a new browser tab or window." msgstr "Otevřít úvodní URL v novém okně nebo kartě prohlížeče." +#: authentik/core/models.py +msgid "Hide this application from the user's My applications page." +msgstr "" + #: authentik/core/models.py msgid "Application" msgstr "Aplikace" @@ -606,6 +632,14 @@ msgstr "Odstranit dočasné uživatele vytvořené zdroji SAML." msgid "Go home" msgstr "Přejít domů" +#: authentik/core/templates/login/base_full.html +msgid "Site footer" +msgstr "" + +#: authentik/core/templates/login/base_full.html +msgid "Flow links" +msgstr "" + #: authentik/core/templates/login/base_full.html #: authentik/flows/templates/if/flow-sfe.html msgid "Powered by authentik" @@ -712,6 +746,10 @@ msgstr "" msgid "Discover, import and update certificates from the filesystem." msgstr "Objevit, importovat a aktualizovat certifikáty na souborovém systému." +#: authentik/endpoints/api/stages.py +msgid "Selected connector is not compatible with this stage." +msgstr "" + #: authentik/endpoints/connectors/agent/api/connectors.py msgid "Selected platform not supported" msgstr "" @@ -766,6 +804,14 @@ msgstr "" msgid "Apple Nonces" msgstr "" +#: authentik/endpoints/connectors/agent/models.py +msgid "Apple Independent Secure Enclave" +msgstr "" + +#: authentik/endpoints/connectors/agent/models.py +msgid "Apple Independent Secure Enclaves" +msgstr "" + #: authentik/endpoints/facts.py msgid "Operating System name, such as 'Server 2022' or 'Ubuntu'" msgstr "" @@ -837,6 +883,12 @@ msgstr "" msgid "Enterprise is required to use this endpoint." msgstr "" +#: authentik/enterprise/audit/apps.py +msgid "" +"Include additional information in audit logs, may incur a performance " +"penalty." +msgstr "" + #: authentik/enterprise/endpoints/connectors/fleet/models.py #: authentik/events/models.py msgid "" @@ -854,6 +906,19 @@ msgstr "" msgid "Fleet Connectors" msgstr "" +#: authentik/enterprise/endpoints/connectors/google_chrome/models.py +msgid "Google Device Trust Connector" +msgstr "" + +#: authentik/enterprise/endpoints/connectors/google_chrome/models.py +msgid "Google Device Trust Connectors" +msgstr "" + +#: authentik/enterprise/endpoints/connectors/google_chrome/stage.py +#: authentik/enterprise/stages/authenticator_endpoint_gdtc/stage.py +msgid "Verifying your browser..." +msgstr "Ověřuji Váš prohlížeč..." + #: authentik/enterprise/lifecycle/api/reviews.py msgid "You are not allowed to submit a review for this object." msgstr "" @@ -870,10 +935,6 @@ msgstr "" msgid "Grace period must be shorter than the interval." msgstr "" -#: authentik/enterprise/lifecycle/api/rules.py -msgid "Only one type-wide rule for each object type is allowed." -msgstr "" - #: authentik/enterprise/lifecycle/models.py msgid "" "Select which transports should be used to notify the reviewers. If none are " @@ -901,7 +962,8 @@ msgid "Go to {self._get_model_name()}" msgstr "" #: authentik/enterprise/lifecycle/models.py -msgid "Access review is due for {self.content_type.name} {str(self.object)}" +msgid "" +"Access review is due for {self.content_type.name.lower()} {object_label}" msgstr "" #: authentik/enterprise/lifecycle/models.py @@ -915,7 +977,7 @@ msgid "" msgstr "" #: authentik/enterprise/lifecycle/tasks.py -msgid "Dispatch tasks to validate lifecycle rules." +msgid "Dispatch tasks to apply lifecycle rules." msgstr "" #: authentik/enterprise/lifecycle/tasks.py @@ -1158,6 +1220,14 @@ msgstr "Pro použití EAP-TLS je nutná Enterprise licence." msgid "Enterprise is required to use the OAuth mode." msgstr "Pro použití OAuth režimu je vyžadována Enterprise licence." +#: authentik/enterprise/providers/ssf/models.py +msgid "SSF RFC Push" +msgstr "" + +#: authentik/enterprise/providers/ssf/models.py +msgid "SSF RFC Pull" +msgstr "" + #: authentik/enterprise/providers/ssf/models.py #: authentik/providers/oauth2/models.py msgid "Signing Key" @@ -1239,6 +1309,78 @@ msgstr "" msgid "Generate data export." msgstr "" +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "User to lock. If omitted, locks the current user (self-service)." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "No lockdown flow configured." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "Lockdown flow is not applicable." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "Choose the target account, then return a flow link." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "No lockdown flow configured or the flow is not applicable" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "Permission denied (when targeting another user)" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Deactivate the user account (set is_active to False)" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Set an unusable password for the user" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Delete all active sessions for the user" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "" +"Revoke all tokens for the user (API, app password, recovery, verification, " +"OAuth)" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "" +"Flow to redirect users to after self-service lockdown. This flow should not " +"require authentication since the user's session is deleted." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Account Lockdown Stage" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Account Lockdown Stages" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/stage.py +msgid "No target user specified for account lockdown" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/stage.py +msgid "You do not have permission to lock down this account." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/stage.py +msgid "Account lockdown failed for this account." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/stage.py +msgid "Self-service account lockdown requires a completion flow." +msgstr "" + #: authentik/enterprise/stages/authenticator_endpoint_gdtc/models.py msgid "Endpoint Authenticator Google Device Trust Connector Stage" msgstr "Fáze konektoru Endpoint Authenticator Google Device Trust" @@ -1255,10 +1397,6 @@ msgstr "Koncové zařízení" msgid "Endpoint Devices" msgstr "Koncová zařízení" -#: authentik/enterprise/stages/authenticator_endpoint_gdtc/stage.py -msgid "Verifying your browser..." -msgstr "Ověřuji Váš prohlížeč..." - #: authentik/enterprise/stages/mtls/models.py msgid "" "Configure certificate authorities to validate the certificate against. This " @@ -1341,6 +1479,12 @@ msgstr "" "Odeslat oznámení pouze jednou, například při posílání webhooku do kanálu " "chatu." +#: authentik/events/models.py +msgid "" +"When set, the selected ceritifcate is used to validate the certificate of " +"the webhook server." +msgstr "" + #: authentik/events/models.py msgid "" "Customize the body of the request. Mapping should return data that is JSON-" @@ -1511,6 +1655,15 @@ msgstr "Zásady před tokem" msgid "Flow" msgstr "Tok" +#: authentik/flows/apps.py +msgid "Refresh other tabs after successful authentication." +msgstr "" + +#: authentik/flows/apps.py +msgid "" +"Upon successful authentication, re-start authentication in other open tabs." +msgstr "" + #: authentik/flows/exceptions.py msgid "Flow does not apply to current user." msgstr "Tok se nevztahuje na aktuálního uživatele." @@ -1620,8 +1773,8 @@ msgstr "Token Toku" msgid "Flow Tokens" msgstr "Tokeny Toků" -#: authentik/flows/templates/if/flow.html -msgid "Site footer" +#: authentik/flows/planner.py +msgid "This link is invalid or has expired. Please request a new one." msgstr "" #: authentik/flows/views/executor.py @@ -2006,22 +2159,6 @@ msgstr "Reputační skóre" msgid "Reputation Scores" msgstr "Reputační skóre" -#: authentik/policies/templates/policies/buffer.html -msgid "Waiting for authentication..." -msgstr "Čeká se na ověření..." - -#: authentik/policies/templates/policies/buffer.html -msgid "" -"You're already authenticating in another tab. This page will refresh once " -"authentication is completed." -msgstr "" -"Už se přihlašujete na jiné záložce. Stránka se obnoví, jakmile bude ověření " -"dokončeno." - -#: authentik/policies/templates/policies/buffer.html -msgid "Authenticate in this tab" -msgstr "Ověřit na této záložce" - #: authentik/policies/templates/policies/denied.html msgid "Permission denied" msgstr "Nedostatečná oprávnění" @@ -2147,6 +2284,14 @@ msgstr "Striktní porovnání URL" msgid "Regular Expression URL matching" msgstr "Porovnání URL regulárním výrazem" +#: authentik/providers/oauth2/models.py +msgid "Authorization" +msgstr "" + +#: authentik/providers/oauth2/models.py +msgid "Logout" +msgstr "" + #: authentik/providers/oauth2/models.py msgid "Back-channel" msgstr "Back-channel" @@ -2504,10 +2649,6 @@ msgstr "Poskytovatel proxy" msgid "Proxy Providers" msgstr "Poskytovatelé proxy" -#: authentik/providers/proxy/tasks.py -msgid "Terminate session on Proxy outpost." -msgstr "Ukončit relaci na outpostu proxy." - #: authentik/providers/rac/models.py authentik/stages/user_login/models.py msgid "" "Determines how long a session lasts. Default of 0 means that the sessions " @@ -2635,8 +2776,10 @@ msgstr "" "omezení publika nebude přidáno." #: authentik/providers/saml/models.py -msgid "Also known as EntityID" -msgstr "Také známé jako EntityID." +msgid "" +"Also known as EntityID. Providing a value overrides the default issuer " +"generated by authentik." +msgstr "" #: authentik/providers/saml/models.py msgid "SLS URL" @@ -2854,6 +2997,10 @@ msgstr "Hodnota SAML NameID pro tuto relaci" msgid "SAML NameID format" msgstr "Formát SAML NameID" +#: authentik/providers/saml/models.py +msgid "SAML Issuer used for this session" +msgstr "" + #: authentik/providers/saml/models.py msgid "SAML Session" msgstr "Relace SAML" @@ -2882,6 +3029,14 @@ msgstr "Slack" msgid "Salesforce" msgstr "" +#: authentik/providers/scim/models.py +msgid "Webex" +msgstr "" + +#: authentik/providers/scim/models.py +msgid "vCenter" +msgstr "" + #: authentik/providers/scim/models.py msgid "Group filters used to define sync-scope for groups." msgstr "" @@ -3158,7 +3313,7 @@ msgstr "" " Prosím, kontaktujte správce.\n" " " -#: authentik/sources/ldap/api.py +#: authentik/sources/ldap/api/sources.py msgid "Only a single LDAP Source with password synchronization is allowed" msgstr "Je dovolen pouze jeden zdroj LDAP se synchronizací hesel" @@ -3688,6 +3843,12 @@ msgstr "" "Povolit autentikační tok iniciovaný Identity Providerem. Může představovat " "bezpečnostní riziko, protože se nekontroluje request ID." +#: authentik/sources/saml/models.py +msgid "" +"When enabled, the IdP will re-authenticate the user even if a session " +"exists." +msgstr "" + #: authentik/sources/saml/models.py msgid "" "NameID Policy sent to the IdP. Can be unset, in which case no Policy is " @@ -4108,6 +4269,10 @@ msgstr "Kroky validace autentikátoru" msgid "No (allowed) MFA authenticator configured." msgstr "Žádný (povolený) MFA autentikátor nebyl nastaven." +#: authentik/stages/authenticator_webauthn/models.py +msgid "When enabled, a given device can only be registered once." +msgstr "" + #: authentik/stages/authenticator_webauthn/models.py msgid "WebAuthn Authenticator Setup Stage" msgstr "Krok nastavení autentikátoru WebAuthn" @@ -4243,6 +4408,10 @@ msgstr "Email OTP" msgid "Event Notification" msgstr "Oznámení o události" +#: authentik/stages/email/models.py authentik/stages/invitation/models.py +msgid "Invitation" +msgstr "Pozvánka" + #: authentik/stages/email/models.py msgid "" "The time window used to count recent account recovery attempts. If the " @@ -4361,6 +4530,62 @@ msgstr "" "\n" "Tento email byl odeslán z transportu oznámení %(name)s.\n" +#: authentik/stages/email/templates/email/invitation.html +msgid "" +"\n" +" You're Invited!\n" +" " +msgstr "" + +#: authentik/stages/email/templates/email/invitation.html +#, python-format +msgid "" +"\n" +" You have been invited to join %(host)s. Click the button below to get started.\n" +" " +msgstr "" + +#: authentik/stages/email/templates/email/invitation.html +#, python-format +msgid "" +"\n" +" This invitation expires %(expires)s.\n" +" " +msgstr "" + +#: authentik/stages/email/templates/email/invitation.html +#: authentik/stages/email/templates/email/invitation.txt +msgid "Accept Invitation" +msgstr "" + +#: authentik/stages/email/templates/email/invitation.html +msgid "" +"\n" +" If you cannot click the button above, please copy and paste the following URL into your browser:\n" +" " +msgstr "" + +#: authentik/stages/email/templates/email/invitation.txt +msgid "You're Invited!" +msgstr "" + +#: authentik/stages/email/templates/email/invitation.txt +#, python-format +msgid "" +"You have been invited to join %(host)s. Use the link below to get started." +msgstr "" + +#: authentik/stages/email/templates/email/invitation.txt +#, python-format +msgid "This invitation expires %(expires)s." +msgstr "" + +#: authentik/stages/email/templates/email/invitation.txt +msgid "" +"If you cannot click the link above, please copy and paste the following URL " +"into your browser:" +msgstr "" + #: authentik/stages/email/templates/email/password_reset.html msgid "" "\n" @@ -4538,10 +4763,6 @@ msgstr "Pokud je povoleno, pozvánka bude po použití smazána." msgid "Optional fixed data to enforce on user enrollment." msgstr "" -#: authentik/stages/invitation/models.py -msgid "Invitation" -msgstr "Pozvánka" - #: authentik/stages/invitation/models.py msgid "Invitations" msgstr "Pozvánky" @@ -4654,6 +4875,18 @@ msgstr "" msgid "Static: Static value, displayed as-is." msgstr "" +#: authentik/stages/prompt/models.py +msgid "Alert (Info): Static alert box with info styling" +msgstr "" + +#: authentik/stages/prompt/models.py +msgid "Alert (Warning): Static alert box with warning styling" +msgstr "" + +#: authentik/stages/prompt/models.py +msgid "Alert (Danger): Static alert box with danger styling" +msgstr "" + #: authentik/stages/prompt/models.py msgid "authentik: Selection of locales authentik supports" msgstr "authentik: Výběr jazyků, které authentik podporuje" diff --git a/locale/de_DE/LC_MESSAGES/django.mo b/locale/de_DE/LC_MESSAGES/django.mo index e2d8d1d89a..37d9194839 100644 Binary files a/locale/de_DE/LC_MESSAGES/django.mo and b/locale/de_DE/LC_MESSAGES/django.mo differ diff --git a/locale/de_DE/LC_MESSAGES/django.po b/locale/de_DE/LC_MESSAGES/django.po index 159e8c7d32..57e0a9b0de 100644 --- a/locale/de_DE/LC_MESSAGES/django.po +++ b/locale/de_DE/LC_MESSAGES/django.po @@ -6,15 +6,17 @@ # Translators: # Marc Schmitt, 2025 # tbrt, 2026 +# Max Fuxjäger, 2026 +# Lukas Nielsen, 2026 # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-02-10 19:27+0000\n" +"POT-Creation-Date: 2026-05-06 00:27+0000\n" "PO-Revision-Date: 2025-12-01 19:09+0000\n" -"Last-Translator: tbrt, 2026\n" +"Last-Translator: Lukas Nielsen, 2026\n" "Language-Team: German (Germany) (https://app.transifex.com/authentik/teams/119923/de_DE/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -38,6 +40,9 @@ msgid "" "hyphens (-), underscores (_), forward slashes (/), and the placeholder " "%(theme)s for theme-specific files" msgstr "" +"Der Dateiname darf nur Buchstaben (a-z, A-Z), Zahlen (0-9), Punkte (.), " +"Bindestriche (-), Unterstriche (_), Schrägstriche (/) und den Platzhalter " +"%(theme)s für themenspezifische Dateien enthalten" #: authentik/admin/files/validation.py msgid "File name cannot contain duplicate /" @@ -49,7 +54,7 @@ msgstr "Absolute Pfade sind nicht erlaubt" #: authentik/admin/files/validation.py msgid "Parent directory references ('..') are not allowed" -msgstr "" +msgstr "Übergeordnete Verzeichnisverweise ('..') sind nicht erlaubt" #: authentik/admin/files/validation.py msgid "Paths cannot start with '.'" @@ -63,7 +68,7 @@ msgstr "Dateiname zu lang (max. {MAX_FILE_NAME_LENGTH} Zeichen)" #: authentik/admin/files/validation.py #, python-brace-format msgid "Path component too long (max {MAX_PATH_COMPONENT_LENGTH} characters)" -msgstr "" +msgstr "Dateipfad zu lang (max. {MAX_PATH_COMPONENT_LENGTH} Zeichen)" #: authentik/admin/models.py msgid "Version history" @@ -80,11 +85,11 @@ msgstr "Neue Version {version} verfügbar!" #: authentik/api/v3/schema/query.py msgid "Which field to use when ordering the results." -msgstr "" +msgstr "Das Feld, das zum Sortieren der Ergebnisse genutzt werden soll." #: authentik/api/v3/schema/query.py msgid "A page number within the paginated result set." -msgstr "" +msgstr "Eine Seitenzahl innerhalb der Seitenangabe der Ergebnisse." #: authentik/api/v3/schema/query.py msgid "Number of results to return per page." @@ -106,6 +111,14 @@ msgstr "Validierungsfehler" msgid "Blueprint file does not exist" msgstr "Vorlagendatei existiert nicht" +#: authentik/blueprints/api.py +msgid "Context must be valid JSON" +msgstr "" + +#: authentik/blueprints/api.py +msgid "Context must be a JSON object" +msgstr "" + #: authentik/blueprints/api.py msgid "Failed to validate blueprint" msgstr "Fehler bei der Validierung der Vorlage" @@ -114,6 +127,11 @@ msgstr "Fehler bei der Validierung der Vorlage" msgid "Either path or content must be set." msgstr "Entweder Pfad oder Inhalt muss angegeben sein." +#: authentik/blueprints/api.py +#, python-brace-format +msgid "User lacks permission to create {model}" +msgstr "Benutzer fehlt die Berechtigung, {model} zu erstellen" + #: authentik/blueprints/models.py msgid "Managed by authentik" msgstr "Verwaltet durch Authentik" @@ -247,10 +265,13 @@ msgstr "" "werden nur die backchannel Provider zurück gegeben. Zudem werden bei " "Deaktivierung die backchannel Provider ausgeschlossen." -#: authentik/core/api/transactional_applications.py -#, python-brace-format -msgid "User lacks permission to create {model}" -msgstr "Benutzer fehlt die Berechtigung, {model} zu erstellen" +#: authentik/core/api/users.py +msgid "Invalid password hash format. Must be a valid Django password hash." +msgstr "" + +#: authentik/core/api/users.py +msgid "Cannot set both password and password_hash. Use only one." +msgstr "" #: authentik/core/api/users.py msgid "No leading or trailing slashes allowed." @@ -263,30 +284,33 @@ msgstr "Im Benutzerpfad sind keine leeren Segmente erlaubt." #: authentik/core/api/users.py msgid "Can't change internal service account to other user type." msgstr "" +"Das interne Dienstkonto kann nicht in einen anderen Benutzertyp geändert " +"werden." #: authentik/core/api/users.py msgid "Setting a user to internal service account is not allowed." msgstr "" +"Es ist nicht zulässig, einen Benutzer als internes Dienstkonto festzulegen." #: authentik/core/api/users.py msgid "Can't modify internal service account users" -msgstr "" +msgstr "Interne Benutzer des Dienstkontos können nicht geändert werden" #: authentik/core/api/users.py msgid "filter: failed to parse JSON" -msgstr "" +msgstr "Filter: JSON konnte nicht verarbeitet werden" #: authentik/core/api/users.py msgid "filter: value must be key:value mapping" -msgstr "" +msgstr "Filter: Der Wert muss eine Schlüssel-Wert-Zuordnung sein" #: authentik/core/api/users.py msgid "No recovery flow set." -msgstr "" +msgstr "Kein Wiederherstellungsablauf hinterlegt." #: authentik/core/api/users.py msgid "Recovery flow not applicable to user" -msgstr "" +msgstr "Der Wiederherstellungsablauf gilt nicht für diesen Benutzer" #: authentik/core/api/users.py msgid "A user/group with these details already exists" @@ -302,16 +326,24 @@ msgstr "Ein unbekannter Fehler ist aufgetreten" #: authentik/core/api/users.py msgid "User does not have an email address set." -msgstr "" +msgstr "Benutzer hat keine E-Mail-Adresse hinterlegt." #: authentik/core/api/users.py msgid "Email stage not found." -msgstr "" +msgstr "E-Mail Phase nicht gefunden." #: authentik/core/api/users.py msgid "This field is required." msgstr "Dieses Feld ist erforderlich." +#: authentik/core/apps.py +msgid "" +"Configure if applications without any policy/group/user bindings should be " +"accessible to any user." +msgstr "" +"Legen Sie fest, ob Anwendungen ohne Richtlinien-, Gruppen- oder " +"Benutzerzuordnungen für alle Benutzer zugänglich sein sollen." + #: authentik/core/models.py msgid "name" msgstr "Name" @@ -346,11 +378,11 @@ msgstr "Superuser-Status deaktivieren" #: authentik/core/models.py msgid "Group Parentage Node" -msgstr "" +msgstr "Knoten der Gruppenzugehörigkeit" #: authentik/core/models.py msgid "Group Parentage Nodes" -msgstr "" +msgstr "Knoten der Gruppenzugehörigkeit" #: authentik/core/models.py msgid "User's display name." @@ -419,6 +451,10 @@ msgstr "Interner Anwendungsname, wird in URLs verwendet." msgid "Open launch URL in a new browser tab or window." msgstr "Start-URL in einem neuen Browser-Fenster öffnen." +#: authentik/core/models.py +msgid "Hide this application from the user's My applications page." +msgstr "" + #: authentik/core/models.py msgid "Application" msgstr "Anwendung" @@ -499,6 +535,8 @@ msgid "" "When enabled, this source will be displayed as a prominent button on the " "login page, instead of a small icon." msgstr "" +"Wenn diese Option aktiviert ist, wird diese Quelle auf der Anmeldeseite als " +"auffällige Schaltfläche statt als kleines Symbol angezeigt." #: authentik/core/models.py msgid "Flow to use when authenticating existing users." @@ -609,6 +647,14 @@ msgstr "Temporäre Benutzer entfernen, die von SAML-Sources erstellt wurden." msgid "Go home" msgstr "Zur Startseite" +#: authentik/core/templates/login/base_full.html +msgid "Site footer" +msgstr "Fußzeile der Website" + +#: authentik/core/templates/login/base_full.html +msgid "Flow links" +msgstr "Ablaufverknüpfungen" + #: authentik/core/templates/login/base_full.html #: authentik/flows/templates/if/flow-sfe.html msgid "Powered by authentik" @@ -673,7 +719,7 @@ msgstr "" #: authentik/crypto/models.py msgid "Key algorithm type detected from the certificate's public key" -msgstr "" +msgstr "Aus dem öffentlichen Schlüssel des Zertifikats erkannter Schlüsseltyp" #: authentik/crypto/models.py msgid "Certificate expiry date" @@ -681,19 +727,19 @@ msgstr "Ablaufdatum des Zertifikats" #: authentik/crypto/models.py msgid "Certificate subject as RFC4514 string" -msgstr "" +msgstr "Zertifikatsgegenstand als RFC4514-Zeichenkette" #: authentik/crypto/models.py msgid "SHA256 fingerprint of the certificate" -msgstr "" +msgstr "SHA256 Fingerabdruck des Zertifikats" #: authentik/crypto/models.py msgid "SHA1 fingerprint of the certificate" -msgstr "" +msgstr "SHA1 Fingerabdruck des Zertifikats" #: authentik/crypto/models.py msgid "Key ID generated from private key" -msgstr "" +msgstr "Aus dem privaten Schlüssel generierte Schlüssel-ID" #: authentik/crypto/models.py msgid "Certificate-Key Pair" @@ -705,16 +751,20 @@ msgstr "Zertifikat-Schlüsselpaare" #: authentik/crypto/models.py msgid "View Certificate-Key pair's certificate" -msgstr "" +msgstr "Zertifikat des Zertifikat-Schlüssel-Paars anzeigen" #: authentik/crypto/models.py msgid "View Certificate-Key pair's private key" -msgstr "" +msgstr "Den privaten Schlüssel des Zertifikat-Schlüsselpaars anzeigen" #: authentik/crypto/tasks.py msgid "Discover, import and update certificates from the filesystem." msgstr "Zertifikate vom Dateisystem entdecken, importieren und aktualisieren." +#: authentik/endpoints/api/stages.py +msgid "Selected connector is not compatible with this stage." +msgstr "Der ausgewählte Konnektor ist mit dieser Stufe nicht kompatibel." + #: authentik/endpoints/connectors/agent/api/connectors.py msgid "Selected platform not supported" msgstr "Ausgewählte Plattform wird nicht unterstützt" @@ -725,15 +775,15 @@ msgstr "Token ist abgelaufen" #: authentik/endpoints/connectors/agent/api/connectors.py msgid "Invalid token for connector" -msgstr "" +msgstr "Ungültiger Token für den Konnektor" #: authentik/endpoints/connectors/agent/models.py msgid "Agent Connector" -msgstr "" +msgstr "Agent Konnektor" #: authentik/endpoints/connectors/agent/models.py msgid "Agent Connectors" -msgstr "" +msgstr "Agent Konnektoren" #: authentik/endpoints/connectors/agent/models.py #: authentik/providers/oauth2/models.py @@ -747,37 +797,47 @@ msgstr "Geräte-Token" #: authentik/endpoints/connectors/agent/models.py msgid "Enrollment Token" -msgstr "" +msgstr "Registrierungscode" #: authentik/endpoints/connectors/agent/models.py msgid "Enrollment Tokens" -msgstr "" +msgstr "Registrierungscodes" #: authentik/endpoints/connectors/agent/models.py msgid "Device authentication token" -msgstr "" +msgstr "Geräteauthentifizierungscode" #: authentik/endpoints/connectors/agent/models.py msgid "Device authentication tokens" -msgstr "" +msgstr "Geräteauthentifizierungscodes" #: authentik/endpoints/connectors/agent/models.py msgid "Apple Nonce" -msgstr "" +msgstr "Apple Nonce" #: authentik/endpoints/connectors/agent/models.py msgid "Apple Nonces" -msgstr "" +msgstr "Apple Nonces" + +#: authentik/endpoints/connectors/agent/models.py +msgid "Apple Independent Secure Enclave" +msgstr "Apple Independent Secure Enclave" + +#: authentik/endpoints/connectors/agent/models.py +msgid "Apple Independent Secure Enclaves" +msgstr "Apple Independent Secure Enclavs" #: authentik/endpoints/facts.py msgid "Operating System name, such as 'Server 2022' or 'Ubuntu'" -msgstr "" +msgstr "Betriebssystemname, wie 'Server 2022' oder 'Ubuntu'" #: authentik/endpoints/facts.py msgid "" "Operating System version, must always be the version number but may contain " "build name" msgstr "" +"Betriebssystemversion: Muss immer die Versionsnummer sein, kann jedoch den " +"Build-Namen enthalten" #: authentik/endpoints/models.py msgid "Device" @@ -789,47 +849,47 @@ msgstr "Geräte" #: authentik/endpoints/models.py msgid "Device User binding" -msgstr "" +msgstr "Gerät Benutzer Bindung" #: authentik/endpoints/models.py msgid "Device User bindings" -msgstr "" +msgstr "Gerät Benutzer Bindungen" #: authentik/endpoints/models.py msgid "Device connection" -msgstr "" +msgstr "Geräteverbindung" #: authentik/endpoints/models.py msgid "Device connections" -msgstr "" +msgstr "Geräteverbindungen" #: authentik/endpoints/models.py msgid "Device fact snapshot" -msgstr "" +msgstr "Geräteübersicht" #: authentik/endpoints/models.py msgid "Device fact snapshots" -msgstr "" +msgstr "Geräteübersichten" #: authentik/endpoints/models.py msgid "Device access group" -msgstr "" +msgstr "Gerätezugriffsgruppe" #: authentik/endpoints/models.py msgid "Device access groups" -msgstr "" +msgstr "Gerätezugriffsgruppen" #: authentik/endpoints/models.py msgid "Endpoint Stage" -msgstr "" +msgstr "Endpunktstufe" #: authentik/endpoints/models.py msgid "Endpoint Stages" -msgstr "" +msgstr "Endpunktstufen" #: authentik/endpoints/tasks.py msgid "Sync endpoints." -msgstr "" +msgstr "Synchronisationsendpunkte." #: authentik/enterprise/api.py msgid "Enterprise is required to create/update this object." @@ -838,7 +898,15 @@ msgstr "" #: authentik/enterprise/api.py msgid "Enterprise is required to use this endpoint." +msgstr "Enterprise ist erforderlich, um auf diesen Endpunkt zu benutzen." + +#: authentik/enterprise/audit/apps.py +msgid "" +"Include additional information in audit logs, may incur a performance " +"penalty." msgstr "" +"Das Hinzufügen zusätzlicher Informationen zu den Prüfprotokollen kann zu " +"Leistungseinbußen führen." #: authentik/enterprise/endpoints/connectors/fleet/models.py #: authentik/events/models.py @@ -851,83 +919,100 @@ msgstr "" #: authentik/enterprise/endpoints/connectors/fleet/models.py msgid "Fleet Connector" -msgstr "" +msgstr "Flotten Konnektor" #: authentik/enterprise/endpoints/connectors/fleet/models.py msgid "Fleet Connectors" -msgstr "" +msgstr "Flotten Konnektoren" + +#: authentik/enterprise/endpoints/connectors/google_chrome/models.py +msgid "Google Device Trust Connector" +msgstr "Google Device Trust Connector" + +#: authentik/enterprise/endpoints/connectors/google_chrome/models.py +msgid "Google Device Trust Connectors" +msgstr "Google Device Trust Connectors" + +#: authentik/enterprise/endpoints/connectors/google_chrome/stage.py +#: authentik/enterprise/stages/authenticator_endpoint_gdtc/stage.py +msgid "Verifying your browser..." +msgstr "Verifiziere deinen Browser..." #: authentik/enterprise/lifecycle/api/reviews.py msgid "You are not allowed to submit a review for this object." -msgstr "" +msgstr "Sie können keine Bewertung für dieses Objekt abgeben." #: authentik/enterprise/lifecycle/api/rules.py msgid "Object does not exist" -msgstr "" +msgstr "Objekt existiert nicht" #: authentik/enterprise/lifecycle/api/rules.py msgid "Either a reviewer group or a reviewer must be set." -msgstr "" +msgstr "Es muss entweder eine Prüfergruppe oder ein Prüfer festgelegt werden." #: authentik/enterprise/lifecycle/api/rules.py msgid "Grace period must be shorter than the interval." -msgstr "" - -#: authentik/enterprise/lifecycle/api/rules.py -msgid "Only one type-wide rule for each object type is allowed." -msgstr "" +msgstr "Die Nachfrist muss kürzer sein als das Intervall." #: authentik/enterprise/lifecycle/models.py msgid "" "Select which transports should be used to notify the reviewers. If none are " "selected, the notification will only be shown in the authentik UI." msgstr "" +"Wählen Sie aus, über welche Kanäle die Prüfer benachrichtigt werden sollen. " +"Wenn keine Option ausgewählt ist, wird die Benachrichtigung nur in der " +"authentik-Benutzeroberfläche angezeigt." #: authentik/enterprise/lifecycle/models.py msgid "Reviewed" -msgstr "" +msgstr "Überprüft" #: authentik/enterprise/lifecycle/models.py msgid "Pending" -msgstr "" +msgstr "Ausstehend" #: authentik/enterprise/lifecycle/models.py msgid "Overdue" -msgstr "" +msgstr "Überfällig" #: authentik/enterprise/lifecycle/models.py msgid "Canceled" -msgstr "" +msgstr "Abgebrochen" #: authentik/enterprise/lifecycle/models.py msgid "Go to {self._get_model_name()}" -msgstr "" +msgstr "Gehe zu {self._get_model_name()}" #: authentik/enterprise/lifecycle/models.py -msgid "Access review is due for {self.content_type.name} {str(self.object)}" +msgid "" +"Access review is due for {self.content_type.name.lower()} {object_label}" msgstr "" #: authentik/enterprise/lifecycle/models.py msgid "" "Access review is overdue for {self.content_type.name} {str(self.object)}" msgstr "" +"Die Zugriffsüberprüfung für {self.content_type.name} {str(self.object)} ist " +"überfällig" #: authentik/enterprise/lifecycle/models.py msgid "" "Access review completed for {self.content_type.name} {str(self.object)}" msgstr "" +"Die Zugriffsüberprüfung für {self.content_type.name} {str(self.object)} ist " +"erledigt" #: authentik/enterprise/lifecycle/tasks.py -msgid "Dispatch tasks to validate lifecycle rules." +msgid "Dispatch tasks to apply lifecycle rules." msgstr "" #: authentik/enterprise/lifecycle/tasks.py msgid "Apply lifecycle rule." -msgstr "" +msgstr "Lebenszyklusregel anwenden." #: authentik/enterprise/lifecycle/tasks.py msgid "Send lifecycle rule notification." -msgstr "" +msgstr "Benachrichtigung zur Lebenszyklusregel senden." #: authentik/enterprise/models.py msgid "License" @@ -1058,10 +1143,13 @@ msgid "" "Dispatch deletions for an object (user, group) for Google Workspace " "providers." msgstr "" +"Löschanforderungen für ein Objekt (Benutzer, Gruppe) bei Google Workspace-" +"Anbietern weitergeben." #: authentik/enterprise/providers/google_workspace/tasks.py msgid "Delete an object (user, group) for Google Workspace provider." msgstr "" +"Ein Objekt (Benutzer, Gruppe) für den Google Workspace-Anbieter löschen." #: authentik/enterprise/providers/google_workspace/tasks.py msgid "" @@ -1138,12 +1226,15 @@ msgstr "" #: authentik/enterprise/providers/microsoft_entra/tasks.py msgid "Delete an object (user, group) for Microsoft Entra provider." msgstr "" +"Ein Objekt (Benutzer, Gruppe) für den Microsoft Entra-Anbieter löschen." #: authentik/enterprise/providers/microsoft_entra/tasks.py msgid "" "Dispatch deletions for an object (user, group) for Microsoft Entra " "providers." msgstr "" +"Löschanforderungen für ein Objekt (Benutzer, Gruppe) für Microsoft Entra-" +"Anbietern." #: authentik/enterprise/providers/microsoft_entra/tasks.py msgid "Sync a related object (memberships) for Microsoft Entra provider." @@ -1167,6 +1258,14 @@ msgstr "Für die Verwendung von EAP-TLS ist Enterprise erforderlich." msgid "Enterprise is required to use the OAuth mode." msgstr "Für die Verwendung des OAuth-Modus ist Enterprise erforderlich." +#: authentik/enterprise/providers/ssf/models.py +msgid "SSF RFC Push" +msgstr "SSF RFC-Push" + +#: authentik/enterprise/providers/ssf/models.py +msgid "SSF RFC Pull" +msgstr "SSF RFC-Pull" + #: authentik/enterprise/providers/ssf/models.py #: authentik/providers/oauth2/models.py msgid "Signing Key" @@ -1214,11 +1313,11 @@ msgstr "Ein SSF-Event senden." #: authentik/enterprise/providers/ws_federation/models.py msgid "WS-Federation Provider" -msgstr "" +msgstr "WS-Federation-Anbieter" #: authentik/enterprise/providers/ws_federation/models.py msgid "WS-Federation Providers" -msgstr "" +msgstr "WS-Federation-Anbieter" #: authentik/enterprise/providers/ws_federation/views.py #: authentik/providers/oauth2/views/authorize.py @@ -1229,23 +1328,95 @@ msgstr "Weiterleitung zu {app}..." #: authentik/enterprise/reports/models.py msgid "Data Export" -msgstr "" +msgstr "Datenexport" #: authentik/enterprise/reports/models.py msgid "Data Exports" -msgstr "" +msgstr "Datenexporte" #: authentik/enterprise/reports/models.py #, python-brace-format msgid "{model_verbose_name} export generated successfully" -msgstr "" +msgstr "{model_verbose_name} Export erfolgreich generiert" #: authentik/enterprise/reports/models.py msgid "Download" -msgstr "" +msgstr "Download" #: authentik/enterprise/reports/tasks.py msgid "Generate data export." +msgstr "Datenexport generieren." + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "User to lock. If omitted, locks the current user (self-service)." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "No lockdown flow configured." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "Lockdown flow is not applicable." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "Choose the target account, then return a flow link." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "No lockdown flow configured or the flow is not applicable" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "Permission denied (when targeting another user)" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Deactivate the user account (set is_active to False)" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Set an unusable password for the user" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Delete all active sessions for the user" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "" +"Revoke all tokens for the user (API, app password, recovery, verification, " +"OAuth)" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "" +"Flow to redirect users to after self-service lockdown. This flow should not " +"require authentication since the user's session is deleted." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Account Lockdown Stage" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Account Lockdown Stages" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/stage.py +msgid "No target user specified for account lockdown" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/stage.py +msgid "You do not have permission to lock down this account." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/stage.py +msgid "Account lockdown failed for this account." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/stage.py +msgid "Self-service account lockdown requires a completion flow." msgstr "" #: authentik/enterprise/stages/authenticator_endpoint_gdtc/models.py @@ -1264,10 +1435,6 @@ msgstr "Endgerät" msgid "Endpoint Devices" msgstr "Endgeräte" -#: authentik/enterprise/stages/authenticator_endpoint_gdtc/stage.py -msgid "Verifying your browser..." -msgstr "Verifiziere deinen Browser..." - #: authentik/enterprise/stages/mtls/models.py msgid "" "Configure certificate authorities to validate the certificate against. This " @@ -1351,6 +1518,14 @@ msgstr "" "Benachrichtigung nur einmal senden, z. B. beim Senden eines Webhooks in " "einen Chat-Kanal" +#: authentik/events/models.py +msgid "" +"When set, the selected ceritifcate is used to validate the certificate of " +"the webhook server." +msgstr "" +"Wenn diese Option aktiviert ist, wird das ausgewählte Zertifikat zur " +"Überprüfung des Zertifikats des Webhook-Servers verwendet." + #: authentik/events/models.py msgid "" "Customize the body of the request. Mapping should return data that is JSON-" @@ -1526,6 +1701,17 @@ msgstr "Pre-Flow Richtlinien" msgid "Flow" msgstr "Flow" +#: authentik/flows/apps.py +msgid "Refresh other tabs after successful authentication." +msgstr "Andere Tabs nach erfolgreicher Authentifizierung aktualisieren." + +#: authentik/flows/apps.py +msgid "" +"Upon successful authentication, re-start authentication in other open tabs." +msgstr "" +"Nach erfolgreicher Authentifizierung die Authentifizierung in den anderen " +"geöffneten Tabs erneut starten." + #: authentik/flows/exceptions.py msgid "Flow does not apply to current user." msgstr "Der Flow gilt nicht für den aktuellen Nutzer." @@ -1643,9 +1829,10 @@ msgstr "Flow-Token" msgid "Flow Tokens" msgstr "Flow-Tokens" -#: authentik/flows/templates/if/flow.html -msgid "Site footer" +#: authentik/flows/planner.py +msgid "This link is invalid or has expired. Please request a new one." msgstr "" +"Dieser Link ist ungültig oder abgelaufen. Bitte einen neuen anfordern." #: authentik/flows/views/executor.py msgid "Invalid next URL" @@ -1654,14 +1841,17 @@ msgstr "Ungültige nächste URL" #: authentik/lib/sync/incoming/models.py msgid "When to trigger sync for outgoing providers" msgstr "" +"Wann die Synchronisierung für ausgehende Anbieter ausgelöst werden soll" #: authentik/lib/sync/outgoing/models.py msgid "Controls the number of objects synced in a single task" msgstr "" +"Steuert die Anzahl der Objekte, die in einem einzelnen Vorgang " +"synchronisiert werden" #: authentik/lib/sync/outgoing/models.py msgid "Timeout for synchronization of a single page" -msgstr "" +msgstr "Zeitlimit für die Synchronisierung einer einzelnen Seite" #: authentik/lib/sync/outgoing/models.py msgid "" @@ -2038,22 +2228,6 @@ msgstr "Reputationswert" msgid "Reputation Scores" msgstr "Reputationswert" -#: authentik/policies/templates/policies/buffer.html -msgid "Waiting for authentication..." -msgstr "Warte auf Authentifizierung …" - -#: authentik/policies/templates/policies/buffer.html -msgid "" -"You're already authenticating in another tab. This page will refresh once " -"authentication is completed." -msgstr "" -"Du authentifizierst dich bereits in einem anderen Tab. Diese Seite wird " -"aktualisiert, sobald die Authentifizierung abgeschlossen ist." - -#: authentik/policies/templates/policies/buffer.html -msgid "Authenticate in this tab" -msgstr "In diesem Tab authentifizieren" - #: authentik/policies/templates/policies/denied.html msgid "Permission denied" msgstr "Erlaubnis verweigert" @@ -2182,13 +2356,21 @@ msgstr "Strikter URL-Vergleich" msgid "Regular Expression URL matching" msgstr "Regex-URL-Vergleich" +#: authentik/providers/oauth2/models.py +msgid "Authorization" +msgstr "Autorisierung" + +#: authentik/providers/oauth2/models.py +msgid "Logout" +msgstr "Abmelden" + #: authentik/providers/oauth2/models.py msgid "Back-channel" -msgstr "" +msgstr "Back-channel" #: authentik/providers/oauth2/models.py msgid "Front-channel" -msgstr "" +msgstr "Front-channel" #: authentik/providers/oauth2/models.py msgid "code (Authorization Code Flow)" @@ -2280,17 +2462,19 @@ msgstr "URIs weiterleiten" #: authentik/providers/oauth2/models.py msgid "Logout URI" -msgstr "" +msgstr "Abmelde-URI" #: authentik/providers/oauth2/models.py msgid "Logout Method" -msgstr "" +msgstr "Methode zum Abmelden" #: authentik/providers/oauth2/models.py msgid "" "Backchannel logs out with server to server calls. Frontchannel uses iframes " "in your browser" msgstr "" +"Der Backchannel wird über Server-zu-Server-Aufrufe abgemeldet. Der " +"Frontchannel nutzt Iframes in Ihrem Browser." #: authentik/providers/oauth2/models.py msgid "Include claims in id_token" @@ -2326,6 +2510,10 @@ msgid "" "duration, it will be renewed. When set to seconds=0, token will always be " "renewed. (Format: hours=1;minutes=2;seconds=3)." msgstr "" +"Wenn ein Token aktualisiert wird und die Gültigkeitsdauer des " +"Aktualisierungstokens kürzer ist als diese Zeitspanne, wird es erneuert. Bei" +" der Einstellung seconds=0 wird das Token immer erneuert. (Format: " +"hours=1;minutes=2;seconds=3)." #: authentik/providers/oauth2/models.py msgid "" @@ -2461,11 +2649,11 @@ msgstr "" #: authentik/providers/proxy/models.py msgid "Proxy Session" -msgstr "" +msgstr "Proxy-Sitzung" #: authentik/providers/proxy/models.py msgid "Proxy Sessions" -msgstr "" +msgstr "Proxy-Sitzungen" #: authentik/providers/proxy/models.py msgid "Validate SSL Certificates of upstream servers" @@ -2543,10 +2731,6 @@ msgstr "Proxy Anbieter" msgid "Proxy Providers" msgstr "Proxy Anbietern" -#: authentik/providers/proxy/tasks.py -msgid "Terminate session on Proxy outpost." -msgstr "Session auf Proxy-Outpost beenden." - #: authentik/providers/rac/models.py authentik/stages/user_login/models.py msgid "" "Determines how long a session lasts. Default of 0 means that the sessions " @@ -2643,6 +2827,8 @@ msgstr "" #: authentik/providers/saml/api/providers.py msgid "Only RSA, EC, and DSA key types are supported for SAML signing." msgstr "" +"Für die SAML-Signierung werden nur die Schlüsseltypen RSA, EC und DSA " +"unterstützt." #: authentik/providers/saml/api/providers.py msgid "Invalid XML Syntax" @@ -2678,26 +2864,32 @@ msgstr "" "Feld leer, wird keine Zielgruppenbeschränkung hinzugefügt." #: authentik/providers/saml/models.py -msgid "Also known as EntityID" -msgstr "Auch bekannt als EntityID" +msgid "" +"Also known as EntityID. Providing a value overrides the default issuer " +"generated by authentik." +msgstr "" #: authentik/providers/saml/models.py msgid "SLS URL" -msgstr "" +msgstr "SLS-URL" #: authentik/providers/saml/models.py msgid "Single Logout Service URL where the logout response should be sent." msgstr "" +"URL des Single-Logout-Dienstes, an die die Abmeldeantwort gesendet werden " +"soll." #: authentik/providers/saml/models.py msgid "SLS Binding" -msgstr "" +msgstr "SLS-Bindung" #: authentik/providers/saml/models.py msgid "" "This determines how authentik sends the logout response back to the Service " "Provider." msgstr "" +"Dies legt fest, wie authentik die Abmeldeantwort an den Dienstanbieter " +"zurücksendet." #: authentik/providers/saml/models.py msgid "" @@ -2707,6 +2899,12 @@ msgid "" "sends logout requests directly from the server without user interaction " "(requires POST SLS binding)." msgstr "" +"Methode zum Abmelden. Beim Front-Channel-Iframe werden alle Abmelde-URLs " +"gleichzeitig in versteckten Iframes geladen. Beim Front-Channel-Native-" +"Verfahren wird der aktive Browser-Tab verwendet, um POST-Anfragen zu senden " +"und zu den Anbietern weiterzuleiten. Beim Back-Channel werden " +"Abmeldeanfragen direkt vom Server ohne Benutzereingriff gesendet (erfordert " +"eine POST-SLS-Bindung)." #: authentik/providers/saml/models.py msgid "NameID Property Mapping" @@ -2877,27 +3075,31 @@ msgstr "SAML Provider aus Metadaten" #: authentik/providers/saml/models.py msgid "Link to the user's authenticated session" -msgstr "" +msgstr "Link zur authentifizierten Sitzung des Benutzers" #: authentik/providers/saml/models.py msgid "SAML SessionIndex for this session" -msgstr "" +msgstr "SAML-SessionIndex für diese Sitzung" #: authentik/providers/saml/models.py msgid "SAML NameID value for this session" -msgstr "" +msgstr "SAML-NameID-Wert für diese Sitzung" #: authentik/providers/saml/models.py msgid "SAML NameID format" +msgstr "SAML-NameID-Format" + +#: authentik/providers/saml/models.py +msgid "SAML Issuer used for this session" msgstr "" #: authentik/providers/saml/models.py msgid "SAML Session" -msgstr "" +msgstr "SAML Sitzung" #: authentik/providers/saml/models.py msgid "SAML Sessions" -msgstr "" +msgstr "SAML Sitzungen" #: authentik/providers/scim/models.py msgid "OAuth" @@ -2919,9 +3121,19 @@ msgstr "Slack" msgid "Salesforce" msgstr "Salesforce" +#: authentik/providers/scim/models.py +msgid "Webex" +msgstr "Webex" + +#: authentik/providers/scim/models.py +msgid "vCenter" +msgstr "" + #: authentik/providers/scim/models.py msgid "Group filters used to define sync-scope for groups." msgstr "" +"Gruppenfilter, die zur Festlegung des Bereichs der Synchronisierung für " +"Gruppen verwendet werden." #: authentik/providers/scim/models.py msgid "Base URL to SCIM requests, usually ends in /v2" @@ -2954,6 +3166,8 @@ msgid "" "Cache duration for ServiceProviderConfig responses. Set minutes=0 to " "disable." msgstr "" +"Cache-Dauer für Antworten von ServiceProviderConfig. Setze minutes=0, um die" +" Funktion zu deaktivieren." #: authentik/providers/scim/models.py msgid "SCIM Provider" @@ -2993,11 +3207,11 @@ msgstr "" #: authentik/providers/scim/tasks.py msgid "Delete an object (user, group) for SCIM provider." -msgstr "" +msgstr "Ein Objekt (Benutzer, Gruppe) für den SCIM-Anbieter löschen." #: authentik/providers/scim/tasks.py msgid "Dispatch deletions for an object (user, group) for SCIM providers." -msgstr "" +msgstr "Löschen von Objekten (Benutzer, Gruppe) für SCIM-Anbieter." #: authentik/providers/scim/tasks.py msgid "Sync a related object (memberships) for SCIM provider." @@ -3057,11 +3271,11 @@ msgstr "Kann Systemeinstellungen bearbeiten" #: authentik/rbac/models.py msgid "Can view media files" -msgstr "" +msgstr "Kann Mediendateien anzeigen" #: authentik/rbac/models.py msgid "Can manage media files" -msgstr "" +msgstr "Kann Mediendateien verwalten" #: authentik/recovery/management/commands/create_admin_group.py msgid "Create admin group if the default group gets deleted." @@ -3209,7 +3423,7 @@ msgstr "" "und der Browser korrekt konfiguriert ist.\n" "Bitte kontaktiere deinen Administrator." -#: authentik/sources/ldap/api.py +#: authentik/sources/ldap/api/sources.py msgid "Only a single LDAP Source with password synchronization is allowed" msgstr "" "Nur eine einzelne LDAP Quelle mit Passwort-Synchronisation ist erlaubt" @@ -3318,7 +3532,7 @@ msgstr "" #: authentik/sources/ldap/models.py msgid "N/A" -msgstr "" +msgstr "N/A" #: authentik/sources/ldap/models.py msgid "LDAP Source" @@ -3390,15 +3604,15 @@ msgstr "Füge die Client-ID und das Client-Secret als Anfrageparameter hinzu" #: authentik/sources/oauth/models.py msgid "No PKCE" -msgstr "" +msgstr "Kein PKCE" #: authentik/sources/oauth/models.py msgid "Plain" -msgstr "" +msgstr "Plain" #: authentik/sources/oauth/models.py msgid "S256" -msgstr "" +msgstr "S256" #: authentik/sources/oauth/models.py msgid "Request Token URL" @@ -3443,7 +3657,7 @@ msgstr "zusätzliche Scopes" #: authentik/sources/oauth/models.py msgid "PKCE" -msgstr "" +msgstr "PKCE" #: authentik/sources/oauth/models.py msgid "" @@ -3519,11 +3733,11 @@ msgstr "Discord OAuth Quellen" #: authentik/sources/oauth/models.py msgid "Slack OAuth Source" -msgstr "" +msgstr "Slack-OAuth-Quelle" #: authentik/sources/oauth/models.py msgid "Slack OAuth Sources" -msgstr "" +msgstr "Slack-OAuth-Quellen" #: authentik/sources/oauth/models.py msgid "Patreon OAuth Source" @@ -3591,11 +3805,11 @@ msgstr "Reddit OAuth-Quellen" #: authentik/sources/oauth/models.py msgid "WeChat OAuth Source" -msgstr "" +msgstr "WeChat-OAuth-Quelle" #: authentik/sources/oauth/models.py msgid "WeChat OAuth Sources" -msgstr "" +msgstr "WeChat-OAuth-Quellen" #: authentik/sources/oauth/models.py msgid "OAuth Source Property Mapping" @@ -3697,6 +3911,9 @@ msgid "" "With a Verification Certificate selected, at least one of 'Verify Assertion " "Signature' or 'Verify Response Signature' must be selected." msgstr "" +"Wenn ein Verifizierungszertifikat ausgewählt ist, muss mindestens eine der " +"Optionen 'Signatur der Behauptung verifizieren' oder 'Signatur der Antwort " +"verifizieren' ausgewählt sein." #: authentik/sources/saml/models.py msgid "Redirect Binding" @@ -3747,6 +3964,15 @@ msgstr "" "Ermöglicht vom IdP initiierte Authentisierungsflows. Dies kann ein " "Sicherheitsrisiko darstellen, da keine Validierung der Request-ID erfolgt." +#: authentik/sources/saml/models.py +msgid "" +"When enabled, the IdP will re-authenticate the user even if a session " +"exists." +msgstr "" +"Wenn diese Option aktiviert ist, führt der IdP eine erneute " +"Authentifizierung des Benutzers durch, auch wenn bereits eine Sitzung " +"besteht." + #: authentik/sources/saml/models.py msgid "" "NameID Policy sent to the IdP. Can be unset, in which case no Policy is " @@ -3832,58 +4058,60 @@ msgstr "SCIM Quelle Eigenschafts-Zuordnungen" #: authentik/sources/telegram/api/source.py msgid "This Telegram account is already connected to another user." msgstr "" +"Dieser Telegram-Account ist bereits mit einem anderen Nutzer verknüpft." #: authentik/sources/telegram/models.py authentik/sources/telegram/stage.py msgid "Telegram bot username" -msgstr "" +msgstr "Benutzername des Telegram-Bots" #: authentik/sources/telegram/models.py msgid "Telegram bot token" -msgstr "" +msgstr "Telegram-Bot-Token" #: authentik/sources/telegram/models.py msgid "Request access to send messages from your bot." msgstr "" +"Beantragen Sie die Berechtigung, Nachrichten über Ihren Bot zu versenden." #: authentik/sources/telegram/models.py msgid "Telegram Source" -msgstr "" +msgstr "Telegram Quelle" #: authentik/sources/telegram/models.py msgid "Telegram Sources" -msgstr "" +msgstr "Telegram Quellen" #: authentik/sources/telegram/models.py msgid "Telegram Source Property Mapping" -msgstr "" +msgstr "Zuordnung von Telegram-Quell-Eigenschaften" #: authentik/sources/telegram/models.py msgid "Telegram Source Property Mappings" -msgstr "" +msgstr "Zuordnung von Telegram-Quell-Eigenschaften" #: authentik/sources/telegram/models.py msgid "User Telegram Source Connection" -msgstr "" +msgstr "Benutzer-Telegram-Quellverbindung" #: authentik/sources/telegram/models.py msgid "User Telegram Source Connections" -msgstr "" +msgstr "Benutzer-Telegram-Quellverbindungen" #: authentik/sources/telegram/models.py msgid "Group Telegram Source Connection" -msgstr "" +msgstr "Verbindung zur Telegram-Gruppe" #: authentik/sources/telegram/models.py msgid "Group Telegram Source Connections" -msgstr "" +msgstr "Verbindung zu Telegram-Gruppen" #: authentik/sources/telegram/telegram.py msgid "Authentication date is too old" -msgstr "" +msgstr "Das Authentifizierungsdatum ist zu alt" #: authentik/sources/telegram/telegram.py msgid "Invalid hash" -msgstr "" +msgstr "Ungültiger Hash" #: authentik/stages/authenticator_duo/models.py msgid "Duo Authenticator Setup Stage" @@ -4171,6 +4399,12 @@ msgstr "Authentifikator-Validierungs Stage" msgid "No (allowed) MFA authenticator configured." msgstr "Kein (erlaubter) MFA-Authentifikator konfiguriert." +#: authentik/stages/authenticator_webauthn/models.py +msgid "When enabled, a given device can only be registered once." +msgstr "" +"Wenn diese Option aktiviert ist, kann ein bestimmtes Gerät nur einmal " +"registriert werden." + #: authentik/stages/authenticator_webauthn/models.py msgid "WebAuthn Authenticator Setup Stage" msgstr "WebAuthn Authentifikator-Validierungs Stage" @@ -4308,6 +4542,10 @@ msgstr "E-Mail Einmalpasswort" msgid "Event Notification" msgstr "Event Benachrichtigung" +#: authentik/stages/email/models.py authentik/stages/invitation/models.py +msgid "Invitation" +msgstr "Einladung" + #: authentik/stages/email/models.py msgid "" "The time window used to count recent account recovery attempts. If the " @@ -4370,8 +4608,8 @@ msgid "" "We're excited to have you get started. First, you need to confirm your " "account. Just press the button below." msgstr "" -"Wir freuen uns darauf, dass Sie loslegen können. Zuerst müssen Sie Ihr Konto" -" bestätigen. Klicken Sie einfach auf die Schaltfläche unten." +"Wir freuen uns darauf, dass du loslegst. Zuerst musst Du dein Konto " +"bestätigen. Klicke einfach auf die Schaltfläche unten." #: authentik/stages/email/templates/email/account_confirmation.html msgid "Confirm Account" @@ -4385,15 +4623,15 @@ msgid "" " " msgstr "" "\n" -"Wenn das nicht funktioniert, kopieren Sie den folgenden Link und fügen ihn in Ihren Browser ein: %(url)s" +"Wenn das nicht funktioniert, kopiere den folgenden Link und fügen ihn in deinen Webbrowser ein: %(url)s" #: authentik/stages/email/templates/email/account_confirmation.txt msgid "" "We're excited to have you get started. First, you need to confirm your " "account. Just open the link below." msgstr "" -"Wir freuen uns darauf, dass Sie loslegen können. Zuerst müssen Sie Ihr Konto" -" bestätigen. Öffnen Sie einfach den unten stehenden Link." +"Wir freuen uns darauf, dass Du loslegst. Zuerst musst Du dein Konto " +"bestätigen. Öffne einfach den unten stehenden Link." #: authentik/stages/email/templates/email/event_notification.html #, python-format @@ -4408,7 +4646,7 @@ msgstr "" #: authentik/stages/email/templates/email/event_notification.txt msgid "Dear authentik user," -msgstr "Liebe authentik Benutzer," +msgstr "Lieber authentik Benutzer," #: authentik/stages/email/templates/email/event_notification.txt msgid "The following notification was created:" @@ -4427,6 +4665,78 @@ msgstr "" "\n" "Diese E-Mail wurde vom Benachrichtigungsdienst %(name)s gesendet.\n" +#: authentik/stages/email/templates/email/invitation.html +msgid "" +"\n" +" You're Invited!\n" +" " +msgstr "" +"\n" +" Du bist eingeladen!\n" +" " + +#: authentik/stages/email/templates/email/invitation.html +#, python-format +msgid "" +"\n" +" You have been invited to join %(host)s. Click the button below to get started.\n" +" " +msgstr "" +"\n" +" Du bist eingeladen, %(host)s beizutreten. Klicke auf die Schaltfläche unten, um loszulegen.\n" +" " + +#: authentik/stages/email/templates/email/invitation.html +#, python-format +msgid "" +"\n" +" This invitation expires %(expires)s.\n" +" " +msgstr "" +"\n" +" Diese Einladung läuft %(expires)s ab.\n" +" " + +#: authentik/stages/email/templates/email/invitation.html +#: authentik/stages/email/templates/email/invitation.txt +msgid "Accept Invitation" +msgstr "Einladung akzeptieren" + +#: authentik/stages/email/templates/email/invitation.html +msgid "" +"\n" +" If you cannot click the button above, please copy and paste the following URL into your browser:\n" +" " +msgstr "" +"\n" +" Falls Du die Schaltfläche oben nicht anklicken kannst, kopiere bitte den folgenden Link und füge diesen in deinen Webbrowser ein:\n" +" " + +#: authentik/stages/email/templates/email/invitation.txt +msgid "You're Invited!" +msgstr "Du bist eingeladen!" + +#: authentik/stages/email/templates/email/invitation.txt +#, python-format +msgid "" +"You have been invited to join %(host)s. Use the link below to get started." +msgstr "" +"Du bist eingeladen, %(host)s beizutreten. Benutze den Link unten, um " +"loszulegen." + +#: authentik/stages/email/templates/email/invitation.txt +#, python-format +msgid "This invitation expires %(expires)s." +msgstr "Diese Einladung läuft %(expires)s ab." + +#: authentik/stages/email/templates/email/invitation.txt +msgid "" +"If you cannot click the link above, please copy and paste the following URL " +"into your browser:" +msgstr "" +"Falls Du die Schaltfläche oben nicht anklicken kannst, kopiere bitte den " +"folgenden Link und füge diesen in deinen Webbrowser ein:" + #: authentik/stages/email/templates/email/password_reset.html msgid "" "\n" @@ -4434,7 +4744,7 @@ msgid "" " " msgstr "" "\n" -" Sie haben kürzlich beantragt, Ihr Passwort für Ihr Authentik-Konto zu ändern. Klicken Sie auf die Schaltfläche unten, um ein neues Passwort festzulegen.\n" +" Du hast kürzlich beantragt, dein Passwort für dein Authentik-Konto zu ändern. Klicke auf die Schaltfläche unten, um ein neues Passwort festzulegen.\n" " " #: authentik/stages/email/templates/email/password_reset.html @@ -4445,7 +4755,7 @@ msgid "" " " msgstr "" "\n" -"  Wenn Sie keine Passwortänderung beantragt haben, ignorieren Sie bitte diese E-Mail. Der obige Link ist gültig für %(expires)s." +"  Wenn Du keine Passwortänderung beantragt hast, ignoriere bitte diese E-Mail. Der obige Link ist gültig für %(expires)s." #: authentik/stages/email/templates/email/password_reset.txt msgid "" @@ -4453,7 +4763,7 @@ msgid "" "You recently requested to change your password for your authentik account. Use the link below to set a new password.\n" msgstr "" "\n" -"Sie haben kürzlich beantragt, Ihr Passwort für Ihr Authentik-Konto zu ändern. Benutzen Sie den Link unten, um ein neues Passwort festzulegen.\n" +"Du hast kürzlich beantragt, dein Passwort für dein Authentik-Konto zu ändern. Benutze den Link unten, um ein neues Passwort festzulegen.\n" #: authentik/stages/email/templates/email/password_reset.txt #, python-format @@ -4462,7 +4772,7 @@ msgid "" "If you did not request a password change, please ignore this email. The link above is valid for %(expires)s.\n" msgstr "" "\n" -"Wenn Sie keine Passwortänderung beantragt haben, ignorieren Sie bitte diese E-Mail. Der obige Link ist gültig für %(expires)s.\n" +"Wenn du keine Passwortänderung beantragt hast, ignoriere bitte diese E-Mail. Der obige Link ist gültig für %(expires)s.\n" #: authentik/stages/email/templates/email/setup.html msgid "authentik Test-Email" @@ -4475,7 +4785,7 @@ msgid "" " " msgstr "" "\n" -"Dies ist eine Test-E-Mail, um Sie darüber zu informieren, dass Sie Mailversand aus Authentik erfolgreich konfiguriert haben." +"Dies ist eine Test-E-Mail, um dich darüber zu informieren, dass der E-Mail-Versand aus authentik erfolgreich konfiguriert ist." #: authentik/stages/email/templates/email/setup.txt msgid "" @@ -4483,7 +4793,7 @@ msgid "" "This is a test email to inform you, that you've successfully configured authentik emails.\n" msgstr "" "\n" -"Dies ist eine Test-E-Mail, um Sie darüber zu informieren, dass Sie authentik E-Mails erfolgreich konfiguriert haben.\n" +"Dies ist eine Test-E-Mail, um dich darüber zu informieren, dass der E-Mail-Versand aus authentik erfolgreich konfiguriert ist.\n" #: authentik/stages/identification/api.py msgid "When no user fields are selected, at least one source must be selected" @@ -4560,7 +4870,7 @@ msgstr "Identifizierungs-Stages" #: authentik/stages/identification/stage.py msgid "No identification data provided." -msgstr "" +msgstr "Es wurden keine Identifikationsdaten angegeben." #: authentik/stages/identification/stage.py msgid "Failed to authenticate." @@ -4608,10 +4918,6 @@ msgid "Optional fixed data to enforce on user enrollment." msgstr "" "Optionale feste Daten, die bei der Benutzerregistrierung erzwungen werden." -#: authentik/stages/invitation/models.py -msgid "Invitation" -msgstr "Einladung" - #: authentik/stages/invitation/models.py msgid "Invitations" msgstr "Einladungen" @@ -4737,6 +5043,18 @@ msgstr "" msgid "Static: Static value, displayed as-is." msgstr "Statisch: Statischer Wert, wird so angezeigt, wie er ist." +#: authentik/stages/prompt/models.py +msgid "Alert (Info): Static alert box with info styling" +msgstr "" + +#: authentik/stages/prompt/models.py +msgid "Alert (Warning): Static alert box with warning styling" +msgstr "" + +#: authentik/stages/prompt/models.py +msgid "Alert (Danger): Static alert box with danger styling" +msgstr "" + #: authentik/stages/prompt/models.py msgid "authentik: Selection of locales authentik supports" msgstr "Authentik: Auswahl der von Authentik unterstützten Gebietsschemata" @@ -4916,11 +5234,11 @@ msgstr "Fehlgeschlagenen Task erneut ausführen" #: authentik/tasks/models.py msgid "Task log" -msgstr "" +msgstr "Aufgabenprotokoll" #: authentik/tasks/models.py msgid "Task logs" -msgstr "" +msgstr "Aufgabenprotokolle" #: authentik/tasks/models.py msgid "Worker status" @@ -5026,10 +5344,11 @@ msgstr "Standard-Token-Länge" #: authentik/tenants/models.py msgid "Default page size for API responses, if no size was requested." msgstr "" +"Standardseitengröße für API-Antworten, falls keine Größe angegeben wurde." #: authentik/tenants/models.py msgid "Maximum page size" -msgstr "" +msgstr "Maximale Seitengröße" #: authentik/tenants/models.py msgid "Tenant" @@ -5049,15 +5368,15 @@ msgstr "Domains" #: packages/ak-guardian/guardian/models.py msgid "object ID" -msgstr "" +msgstr "Objekt ID" #: packages/django-channels-postgres/django_channels_postgres/models.py msgid "Group channel" -msgstr "" +msgstr "Gruppenkanal" #: packages/django-channels-postgres/django_channels_postgres/models.py msgid "Group channels" -msgstr "" +msgstr "Gruppenkanäle" #: packages/django-channels-postgres/django_channels_postgres/models.py msgid "Message" diff --git a/locale/en/LC_MESSAGES/django.po b/locale/en/LC_MESSAGES/django.po index 3b01a2a628..22db4f5f7e 100644 --- a/locale/en/LC_MESSAGES/django.po +++ b/locale/en/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-16 00:18+0000\n" +"POT-Creation-Date: 2026-05-13 05:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -101,6 +101,14 @@ msgstr "" msgid "Blueprint file does not exist" msgstr "" +#: authentik/blueprints/api.py +msgid "Context must be valid JSON" +msgstr "" + +#: authentik/blueprints/api.py +msgid "Context must be a JSON object" +msgstr "" + #: authentik/blueprints/api.py msgid "Failed to validate blueprint" msgstr "" @@ -109,6 +117,11 @@ msgstr "" msgid "Either path or content must be set." msgstr "" +#: authentik/blueprints/api.py +#, python-brace-format +msgid "User lacks permission to create {model}" +msgstr "" + #: authentik/blueprints/models.py msgid "Managed by authentik" msgstr "" @@ -213,15 +226,22 @@ msgstr "" msgid "The slug '{slug}' is reserved and cannot be used for applications." msgstr "" +#: authentik/core/api/groups.py +msgid "User does not have permission to add members to this group." +msgstr "" + #: authentik/core/api/providers.py msgid "" "When not set all providers are returned. When set to true, only backchannel " "providers are returned. When set to false, backchannel providers are excluded" msgstr "" -#: authentik/core/api/transactional_applications.py -#, python-brace-format -msgid "User lacks permission to create {model}" +#: authentik/core/api/users.py +msgid "Invalid password hash format. Must be a valid Django password hash." +msgstr "" + +#: authentik/core/api/users.py +msgid "Cannot set both password and password_hash. Use only one." msgstr "" #: authentik/core/api/users.py @@ -240,6 +260,14 @@ msgstr "" msgid "Setting a user to internal service account is not allowed." msgstr "" +#: authentik/core/api/users.py +msgid "User does not have permission to add members to a superuser group." +msgstr "" + +#: authentik/core/api/users.py +msgid "User does not have permission to assign roles." +msgstr "" + #: authentik/core/api/users.py msgid "Can't modify internal service account users" msgstr "" @@ -284,6 +312,12 @@ msgstr "" msgid "This field is required." msgstr "" +#: authentik/core/apps.py +msgid "" +"Configure if applications without any policy/group/user bindings should be " +"accessible to any user." +msgstr "" + #: authentik/core/models.py msgid "name" msgstr "" @@ -386,6 +420,10 @@ msgstr "" msgid "Open launch URL in a new browser tab or window." msgstr "" +#: authentik/core/models.py +msgid "Hide this application from the user's My applications page." +msgstr "" + #: authentik/core/models.py msgid "Application" msgstr "" @@ -726,6 +764,14 @@ msgstr "" msgid "Apple Nonces" msgstr "" +#: authentik/endpoints/connectors/agent/models.py +msgid "Apple Independent Secure Enclave" +msgstr "" + +#: authentik/endpoints/connectors/agent/models.py +msgid "Apple Independent Secure Enclaves" +msgstr "" + #: authentik/endpoints/facts.py msgid "Operating System name, such as 'Server 2022' or 'Ubuntu'" msgstr "" @@ -796,6 +842,12 @@ msgstr "" msgid "Enterprise is required to use this endpoint." msgstr "" +#: authentik/enterprise/audit/apps.py +msgid "" +"Include additional information in audit logs, may incur a performance " +"penalty." +msgstr "" + #: authentik/enterprise/endpoints/connectors/fleet/models.py #: authentik/events/models.py msgid "" @@ -840,10 +892,6 @@ msgstr "" msgid "Grace period must be shorter than the interval." msgstr "" -#: authentik/enterprise/lifecycle/api/rules.py -msgid "Only one type-wide rule for each object type is allowed." -msgstr "" - #: authentik/enterprise/lifecycle/models.py msgid "" "Select which transports should be used to notify the reviewers. If none are " @@ -871,7 +919,8 @@ msgid "Go to {self._get_model_name()}" msgstr "" #: authentik/enterprise/lifecycle/models.py -msgid "Access review is due for {self.content_type.name} {str(self.object)}" +msgid "" +"Access review is due for {self.content_type.name.lower()} {object_label}" msgstr "" #: authentik/enterprise/lifecycle/models.py @@ -884,7 +933,7 @@ msgid "Access review completed for {self.content_type.name} {str(self.object)}" msgstr "" #: authentik/enterprise/lifecycle/tasks.py -msgid "Dispatch tasks to validate lifecycle rules." +msgid "Dispatch tasks to apply lifecycle rules." msgstr "" #: authentik/enterprise/lifecycle/tasks.py @@ -1108,6 +1157,14 @@ msgstr "" msgid "Enterprise is required to use the OAuth mode." msgstr "" +#: authentik/enterprise/providers/ssf/models.py +msgid "SSF RFC Push" +msgstr "" + +#: authentik/enterprise/providers/ssf/models.py +msgid "SSF RFC Pull" +msgstr "" + #: authentik/enterprise/providers/ssf/models.py #: authentik/providers/oauth2/models.py msgid "Signing Key" @@ -1189,6 +1246,78 @@ msgstr "" msgid "Generate data export." msgstr "" +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "User to lock. If omitted, locks the current user (self-service)." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "No lockdown flow configured." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "Lockdown flow is not applicable." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "Choose the target account, then return a flow link." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "No lockdown flow configured or the flow is not applicable" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "Permission denied (when targeting another user)" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Deactivate the user account (set is_active to False)" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Set an unusable password for the user" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Delete all active sessions for the user" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "" +"Revoke all tokens for the user (API, app password, recovery, verification, " +"OAuth)" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "" +"Flow to redirect users to after self-service lockdown. This flow should not " +"require authentication since the user's session is deleted." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Account Lockdown Stage" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Account Lockdown Stages" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/stage.py +msgid "No target user specified for account lockdown" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/stage.py +msgid "You do not have permission to lock down this account." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/stage.py +msgid "Account lockdown failed for this account." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/stage.py +msgid "Self-service account lockdown requires a completion flow." +msgstr "" + #: authentik/enterprise/stages/authenticator_endpoint_gdtc/models.py msgid "Endpoint Authenticator Google Device Trust Connector Stage" msgstr "" @@ -1443,6 +1572,15 @@ msgstr "" msgid "Flow" msgstr "" +#: authentik/flows/apps.py +msgid "Refresh other tabs after successful authentication." +msgstr "" + +#: authentik/flows/apps.py +msgid "" +"Upon successful authentication, re-start authentication in other open tabs." +msgstr "" + #: authentik/flows/exceptions.py msgid "Flow does not apply to current user." msgstr "" @@ -1542,6 +1680,10 @@ msgstr "" msgid "Flow Tokens" msgstr "" +#: authentik/flows/planner.py +msgid "This link is invalid or has expired. Please request a new one." +msgstr "" + #: authentik/flows/views/executor.py msgid "Invalid next URL" msgstr "" @@ -1894,20 +2036,6 @@ msgstr "" msgid "Reputation Scores" msgstr "" -#: authentik/policies/templates/policies/buffer.html -msgid "Waiting for authentication..." -msgstr "" - -#: authentik/policies/templates/policies/buffer.html -msgid "" -"You're already authenticating in another tab. This page will refresh once " -"authentication is completed." -msgstr "" - -#: authentik/policies/templates/policies/buffer.html -msgid "Authenticate in this tab" -msgstr "" - #: authentik/policies/templates/policies/denied.html msgid "Permission denied" msgstr "" @@ -2017,6 +2145,14 @@ msgstr "" msgid "Regular Expression URL matching" msgstr "" +#: authentik/providers/oauth2/models.py +msgid "Authorization" +msgstr "" + +#: authentik/providers/oauth2/models.py +msgid "Logout" +msgstr "" + #: authentik/providers/oauth2/models.py msgid "Back-channel" msgstr "" @@ -2456,7 +2592,9 @@ msgid "" msgstr "" #: authentik/providers/saml/models.py -msgid "Also known as EntityID" +msgid "" +"Also known as EntityID. Providing a value overrides the default issuer " +"generated by authentik." msgstr "" #: authentik/providers/saml/models.py @@ -2650,6 +2788,10 @@ msgstr "" msgid "SAML NameID format" msgstr "" +#: authentik/providers/saml/models.py +msgid "SAML Issuer used for this session" +msgstr "" + #: authentik/providers/saml/models.py msgid "SAML Session" msgstr "" @@ -2678,6 +2820,14 @@ msgstr "" msgid "Salesforce" msgstr "" +#: authentik/providers/scim/models.py +msgid "Webex" +msgstr "" + +#: authentik/providers/scim/models.py +msgid "vCenter" +msgstr "" + #: authentik/providers/scim/models.py msgid "Group filters used to define sync-scope for groups." msgstr "" @@ -2936,7 +3086,7 @@ msgid "" " " msgstr "" -#: authentik/sources/ldap/api.py +#: authentik/sources/ldap/api/sources.py msgid "Only a single LDAP Source with password synchronization is allowed" msgstr "" @@ -3442,6 +3592,11 @@ msgid "" "risk, as no validation of the request ID is done." msgstr "" +#: authentik/sources/saml/models.py +msgid "" +"When enabled, the IdP will re-authenticate the user even if a session exists." +msgstr "" + #: authentik/sources/saml/models.py msgid "" "NameID Policy sent to the IdP. Can be unset, in which case no Policy is sent." @@ -3829,6 +3984,10 @@ msgstr "" msgid "No (allowed) MFA authenticator configured." msgstr "" +#: authentik/stages/authenticator_webauthn/models.py +msgid "When enabled, a given device can only be registered once." +msgstr "" + #: authentik/stages/authenticator_webauthn/models.py msgid "WebAuthn Authenticator Setup Stage" msgstr "" @@ -4386,6 +4545,18 @@ msgstr "" msgid "Static: Static value, displayed as-is." msgstr "" +#: authentik/stages/prompt/models.py +msgid "Alert (Info): Static alert box with info styling" +msgstr "" + +#: authentik/stages/prompt/models.py +msgid "Alert (Warning): Static alert box with warning styling" +msgstr "" + +#: authentik/stages/prompt/models.py +msgid "Alert (Danger): Static alert box with danger styling" +msgstr "" + #: authentik/stages/prompt/models.py msgid "authentik: Selection of locales authentik supports" msgstr "" diff --git a/locale/en/dictionaries/idp.txt b/locale/en/dictionaries/idp.txt index 34bd19b61e..6c6c63b665 100644 --- a/locale/en/dictionaries/idp.txt +++ b/locale/en/dictionaries/idp.txt @@ -4,3 +4,4 @@ Yubi Yubikey Yubikeys mycorp +mocksaml diff --git a/locale/en/dictionaries/integrations.txt b/locale/en/dictionaries/integrations.txt index fa5b515055..5926b43bc7 100644 --- a/locale/en/dictionaries/integrations.txt +++ b/locale/en/dictionaries/integrations.txt @@ -19,11 +19,15 @@ Forti Fortigate Gatus Gestionnaire +ghec Gitea Gravitee +HACS Homarr Informatique +Jellyseerr Kimai +Kiota Knoc Knocknoc Komodo @@ -42,16 +46,20 @@ Organizr Packagify Palo Papra +PhotoPrism pfSense phpipam Planka Plesk +PostHog proftpd Qube Relatedly +Seerr Sidero snipeit sonarqube +Technitium Terrakube Ueberauth Veeam @@ -59,7 +67,6 @@ Vikunja Wazuh Wdio Weixin -Kiota Wekan Xcreds Zammad diff --git a/locale/en/dictionaries/people.txt b/locale/en/dictionaries/people.txt index 58df44beb8..0f7f84bdcb 100644 --- a/locale/en/dictionaries/people.txt +++ b/locale/en/dictionaries/people.txt @@ -11,3 +11,4 @@ Naur Wärting Aadit Kilby +Kahmen diff --git a/locale/en/dictionaries/rust.txt b/locale/en/dictionaries/rust.txt index 7c4b914bb2..53b00364a9 100644 --- a/locale/en/dictionaries/rust.txt +++ b/locale/en/dictionaries/rust.txt @@ -1,10 +1,12 @@ allinone argh clippy +impls nasm netns pointee rcgen +repr serde sqlx tcpv diff --git a/locale/en/dictionaries/software-terms.txt b/locale/en/dictionaries/software-terms.txt index 6ba502af83..8c631ba414 100644 --- a/locale/en/dictionaries/software-terms.txt +++ b/locale/en/dictionaries/software-terms.txt @@ -164,3 +164,4 @@ yamltags zxcvbn ~uuid ~uuids +wreply diff --git a/locale/es_ES/LC_MESSAGES/django.mo b/locale/es_ES/LC_MESSAGES/django.mo index 57b53cdc78..77d1c5dbd9 100644 Binary files a/locale/es_ES/LC_MESSAGES/django.mo and b/locale/es_ES/LC_MESSAGES/django.mo differ diff --git a/locale/es_ES/LC_MESSAGES/django.po b/locale/es_ES/LC_MESSAGES/django.po index d7e7924f24..01653b29c7 100644 --- a/locale/es_ES/LC_MESSAGES/django.po +++ b/locale/es_ES/LC_MESSAGES/django.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-02-10 19:27+0000\n" +"POT-Creation-Date: 2026-05-06 00:27+0000\n" "PO-Revision-Date: 2025-12-01 19:09+0000\n" "Last-Translator: Marc Schmitt, 2025\n" "Language-Team: Spanish (Spain) (https://app.transifex.com/authentik/teams/119923/es_ES/)\n" @@ -105,6 +105,14 @@ msgstr "Error de validación" msgid "Blueprint file does not exist" msgstr "El archivo de plantilla(blueprint) no existe" +#: authentik/blueprints/api.py +msgid "Context must be valid JSON" +msgstr "" + +#: authentik/blueprints/api.py +msgid "Context must be a JSON object" +msgstr "" + #: authentik/blueprints/api.py msgid "Failed to validate blueprint" msgstr "No se pudo validar la plantilla(blueprint)" @@ -113,6 +121,11 @@ msgstr "No se pudo validar la plantilla(blueprint)" msgid "Either path or content must be set." msgstr "Se debe establecer una ruta o contenido." +#: authentik/blueprints/api.py +#, python-brace-format +msgid "User lacks permission to create {model}" +msgstr "El usuario carece de permisos para crear {model}" + #: authentik/blueprints/models.py msgid "Managed by authentik" msgstr "Administrado por authentik" @@ -248,10 +261,13 @@ msgstr "" "secundario. Cuando se configura como falso, se excluyen los proveedores de " "canal secundario." -#: authentik/core/api/transactional_applications.py -#, python-brace-format -msgid "User lacks permission to create {model}" -msgstr "El usuario carece de permisos para crear {model}" +#: authentik/core/api/users.py +msgid "Invalid password hash format. Must be a valid Django password hash." +msgstr "" + +#: authentik/core/api/users.py +msgid "Cannot set both password and password_hash. Use only one." +msgstr "" #: authentik/core/api/users.py msgid "No leading or trailing slashes allowed." @@ -313,6 +329,12 @@ msgstr "" msgid "This field is required." msgstr "" +#: authentik/core/apps.py +msgid "" +"Configure if applications without any policy/group/user bindings should be " +"accessible to any user." +msgstr "" + #: authentik/core/models.py msgid "name" msgstr "nombre" @@ -419,6 +441,10 @@ msgstr "Nombre de la aplicación interna, utilizado en las URL." msgid "Open launch URL in a new browser tab or window." msgstr "Abrir la URL de inicio en una nueva pestaña o ventana del navegador." +#: authentik/core/models.py +msgid "Hide this application from the user's My applications page." +msgstr "" + #: authentik/core/models.py msgid "Application" msgstr "Aplicación" @@ -609,6 +635,14 @@ msgstr "Eliminar usuarios temporales creados por SAML Sources." msgid "Go home" msgstr "Ir al inicio" +#: authentik/core/templates/login/base_full.html +msgid "Site footer" +msgstr "" + +#: authentik/core/templates/login/base_full.html +msgid "Flow links" +msgstr "" + #: authentik/core/templates/login/base_full.html #: authentik/flows/templates/if/flow-sfe.html msgid "Powered by authentik" @@ -716,6 +750,10 @@ msgid "Discover, import and update certificates from the filesystem." msgstr "" "Descubra, importe y actualice certificados desde el sistema de archivos." +#: authentik/endpoints/api/stages.py +msgid "Selected connector is not compatible with this stage." +msgstr "" + #: authentik/endpoints/connectors/agent/api/connectors.py msgid "Selected platform not supported" msgstr "" @@ -770,6 +808,14 @@ msgstr "" msgid "Apple Nonces" msgstr "" +#: authentik/endpoints/connectors/agent/models.py +msgid "Apple Independent Secure Enclave" +msgstr "" + +#: authentik/endpoints/connectors/agent/models.py +msgid "Apple Independent Secure Enclaves" +msgstr "" + #: authentik/endpoints/facts.py msgid "Operating System name, such as 'Server 2022' or 'Ubuntu'" msgstr "" @@ -840,6 +886,12 @@ msgstr "Se requiere de Enterprise para crear/actualizar este objeto." msgid "Enterprise is required to use this endpoint." msgstr "" +#: authentik/enterprise/audit/apps.py +msgid "" +"Include additional information in audit logs, may incur a performance " +"penalty." +msgstr "" + #: authentik/enterprise/endpoints/connectors/fleet/models.py #: authentik/events/models.py msgid "" @@ -857,6 +909,19 @@ msgstr "" msgid "Fleet Connectors" msgstr "" +#: authentik/enterprise/endpoints/connectors/google_chrome/models.py +msgid "Google Device Trust Connector" +msgstr "" + +#: authentik/enterprise/endpoints/connectors/google_chrome/models.py +msgid "Google Device Trust Connectors" +msgstr "" + +#: authentik/enterprise/endpoints/connectors/google_chrome/stage.py +#: authentik/enterprise/stages/authenticator_endpoint_gdtc/stage.py +msgid "Verifying your browser..." +msgstr "Verificando tu navegador..." + #: authentik/enterprise/lifecycle/api/reviews.py msgid "You are not allowed to submit a review for this object." msgstr "" @@ -873,10 +938,6 @@ msgstr "" msgid "Grace period must be shorter than the interval." msgstr "" -#: authentik/enterprise/lifecycle/api/rules.py -msgid "Only one type-wide rule for each object type is allowed." -msgstr "" - #: authentik/enterprise/lifecycle/models.py msgid "" "Select which transports should be used to notify the reviewers. If none are " @@ -904,7 +965,8 @@ msgid "Go to {self._get_model_name()}" msgstr "" #: authentik/enterprise/lifecycle/models.py -msgid "Access review is due for {self.content_type.name} {str(self.object)}" +msgid "" +"Access review is due for {self.content_type.name.lower()} {object_label}" msgstr "" #: authentik/enterprise/lifecycle/models.py @@ -918,7 +980,7 @@ msgid "" msgstr "" #: authentik/enterprise/lifecycle/tasks.py -msgid "Dispatch tasks to validate lifecycle rules." +msgid "Dispatch tasks to apply lifecycle rules." msgstr "" #: authentik/enterprise/lifecycle/tasks.py @@ -1159,6 +1221,14 @@ msgstr "" msgid "Enterprise is required to use the OAuth mode." msgstr "" +#: authentik/enterprise/providers/ssf/models.py +msgid "SSF RFC Push" +msgstr "" + +#: authentik/enterprise/providers/ssf/models.py +msgid "SSF RFC Pull" +msgstr "" + #: authentik/enterprise/providers/ssf/models.py #: authentik/providers/oauth2/models.py msgid "Signing Key" @@ -1240,6 +1310,78 @@ msgstr "" msgid "Generate data export." msgstr "" +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "User to lock. If omitted, locks the current user (self-service)." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "No lockdown flow configured." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "Lockdown flow is not applicable." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "Choose the target account, then return a flow link." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "No lockdown flow configured or the flow is not applicable" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "Permission denied (when targeting another user)" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Deactivate the user account (set is_active to False)" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Set an unusable password for the user" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Delete all active sessions for the user" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "" +"Revoke all tokens for the user (API, app password, recovery, verification, " +"OAuth)" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "" +"Flow to redirect users to after self-service lockdown. This flow should not " +"require authentication since the user's session is deleted." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Account Lockdown Stage" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Account Lockdown Stages" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/stage.py +msgid "No target user specified for account lockdown" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/stage.py +msgid "You do not have permission to lock down this account." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/stage.py +msgid "Account lockdown failed for this account." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/stage.py +msgid "Self-service account lockdown requires a completion flow." +msgstr "" + #: authentik/enterprise/stages/authenticator_endpoint_gdtc/models.py msgid "Endpoint Authenticator Google Device Trust Connector Stage" msgstr "" @@ -1260,10 +1402,6 @@ msgstr "Dispositivo de Punto de Conexión" msgid "Endpoint Devices" msgstr "Dispositivos de Punto de Conexión" -#: authentik/enterprise/stages/authenticator_endpoint_gdtc/stage.py -msgid "Verifying your browser..." -msgstr "Verificando tu navegador..." - #: authentik/enterprise/stages/mtls/models.py msgid "" "Configure certificate authorities to validate the certificate against. This " @@ -1347,6 +1485,12 @@ msgstr "" "Envía notificaciones solo una vez, por ejemplo, al enviar un webhook a un " "canal de chat." +#: authentik/events/models.py +msgid "" +"When set, the selected ceritifcate is used to validate the certificate of " +"the webhook server." +msgstr "" + #: authentik/events/models.py msgid "" "Customize the body of the request. Mapping should return data that is JSON-" @@ -1518,6 +1662,15 @@ msgstr "Políticas pre-flujo" msgid "Flow" msgstr "Flujo" +#: authentik/flows/apps.py +msgid "Refresh other tabs after successful authentication." +msgstr "" + +#: authentik/flows/apps.py +msgid "" +"Upon successful authentication, re-start authentication in other open tabs." +msgstr "" + #: authentik/flows/exceptions.py msgid "Flow does not apply to current user." msgstr "El flujo no aplica al usuario actual." @@ -1630,8 +1783,8 @@ msgstr "Token de flujo" msgid "Flow Tokens" msgstr "Tokens de flujo" -#: authentik/flows/templates/if/flow.html -msgid "Site footer" +#: authentik/flows/planner.py +msgid "This link is invalid or has expired. Please request a new one." msgstr "" #: authentik/flows/views/executor.py @@ -2022,22 +2175,6 @@ msgstr "Puntuación de Reputacion" msgid "Reputation Scores" msgstr "Puntuaciones de Reputacion" -#: authentik/policies/templates/policies/buffer.html -msgid "Waiting for authentication..." -msgstr "Esperando autenticación" - -#: authentik/policies/templates/policies/buffer.html -msgid "" -"You're already authenticating in another tab. This page will refresh once " -"authentication is completed." -msgstr "" -"Ya estás autenticándote en otra pestaña. Esta página se actualizará una vez " -"que la autenticación se haya completado." - -#: authentik/policies/templates/policies/buffer.html -msgid "Authenticate in this tab" -msgstr "Autenticar en esta pestaña" - #: authentik/policies/templates/policies/denied.html msgid "Permission denied" msgstr "Permiso denegado" @@ -2166,6 +2303,14 @@ msgstr "Comparación de URL estricta" msgid "Regular Expression URL matching" msgstr "Coincidencia de URL con Expresiones Regulares" +#: authentik/providers/oauth2/models.py +msgid "Authorization" +msgstr "" + +#: authentik/providers/oauth2/models.py +msgid "Logout" +msgstr "" + #: authentik/providers/oauth2/models.py msgid "Back-channel" msgstr "" @@ -2528,10 +2673,6 @@ msgstr "Proveedor de Proxy" msgid "Proxy Providers" msgstr "Proveedores de Proxy" -#: authentik/providers/proxy/tasks.py -msgid "Terminate session on Proxy outpost." -msgstr "Terminar sesión en Proxy outpost." - #: authentik/providers/rac/models.py authentik/stages/user_login/models.py msgid "" "Determines how long a session lasts. Default of 0 means that the sessions " @@ -2663,8 +2804,10 @@ msgstr "" "vacío, no se agregará ninguna restricción de audiencia." #: authentik/providers/saml/models.py -msgid "Also known as EntityID" -msgstr "También conocido como EntityID" +msgid "" +"Also known as EntityID. Providing a value overrides the default issuer " +"generated by authentik." +msgstr "" #: authentik/providers/saml/models.py msgid "SLS URL" @@ -2877,6 +3020,10 @@ msgstr "" msgid "SAML NameID format" msgstr "" +#: authentik/providers/saml/models.py +msgid "SAML Issuer used for this session" +msgstr "" + #: authentik/providers/saml/models.py msgid "SAML Session" msgstr "" @@ -2905,6 +3052,14 @@ msgstr "Slack" msgid "Salesforce" msgstr "" +#: authentik/providers/scim/models.py +msgid "Webex" +msgstr "" + +#: authentik/providers/scim/models.py +msgid "vCenter" +msgstr "" + #: authentik/providers/scim/models.py msgid "Group filters used to define sync-scope for groups." msgstr "" @@ -3188,7 +3343,7 @@ msgstr "" " Por favor, contacta a tu administrador.\n" " " -#: authentik/sources/ldap/api.py +#: authentik/sources/ldap/api/sources.py msgid "Only a single LDAP Source with password synchronization is allowed" msgstr "" "Solo está permitida una Fuente de LDAP con sincronización de contraseña" @@ -3722,6 +3877,12 @@ msgstr "" " un riesgo para la seguridad, ya que no se valida el identificador de la " "solicitud." +#: authentik/sources/saml/models.py +msgid "" +"When enabled, the IdP will re-authenticate the user even if a session " +"exists." +msgstr "" + #: authentik/sources/saml/models.py msgid "" "NameID Policy sent to the IdP. Can be unset, in which case no Policy is " @@ -4150,6 +4311,10 @@ msgstr "Etapas de Validación del Autenticador" msgid "No (allowed) MFA authenticator configured." msgstr "No hay un autenticador MFA (permitido) configurado." +#: authentik/stages/authenticator_webauthn/models.py +msgid "When enabled, a given device can only be registered once." +msgstr "" + #: authentik/stages/authenticator_webauthn/models.py msgid "WebAuthn Authenticator Setup Stage" msgstr "Etapa de Configuración del Autenticador WebAuthn" @@ -4288,6 +4453,10 @@ msgstr "OTP por Correo Electrónico" msgid "Event Notification" msgstr "" +#: authentik/stages/email/models.py authentik/stages/invitation/models.py +msgid "Invitation" +msgstr "Invitación" + #: authentik/stages/email/models.py msgid "" "The time window used to count recent account recovery attempts. If the " @@ -4408,6 +4577,62 @@ msgstr "" "\n" "Este correo electrónico fue enviado desde el transporte de notificaciones %(name)s.\n" +#: authentik/stages/email/templates/email/invitation.html +msgid "" +"\n" +" You're Invited!\n" +" " +msgstr "" + +#: authentik/stages/email/templates/email/invitation.html +#, python-format +msgid "" +"\n" +" You have been invited to join %(host)s. Click the button below to get started.\n" +" " +msgstr "" + +#: authentik/stages/email/templates/email/invitation.html +#, python-format +msgid "" +"\n" +" This invitation expires %(expires)s.\n" +" " +msgstr "" + +#: authentik/stages/email/templates/email/invitation.html +#: authentik/stages/email/templates/email/invitation.txt +msgid "Accept Invitation" +msgstr "" + +#: authentik/stages/email/templates/email/invitation.html +msgid "" +"\n" +" If you cannot click the button above, please copy and paste the following URL into your browser:\n" +" " +msgstr "" + +#: authentik/stages/email/templates/email/invitation.txt +msgid "You're Invited!" +msgstr "" + +#: authentik/stages/email/templates/email/invitation.txt +#, python-format +msgid "" +"You have been invited to join %(host)s. Use the link below to get started." +msgstr "" + +#: authentik/stages/email/templates/email/invitation.txt +#, python-format +msgid "This invitation expires %(expires)s." +msgstr "" + +#: authentik/stages/email/templates/email/invitation.txt +msgid "" +"If you cannot click the link above, please copy and paste the following URL " +"into your browser:" +msgstr "" + #: authentik/stages/email/templates/email/password_reset.html msgid "" "\n" @@ -4591,10 +4816,6 @@ msgstr "Cuando se habilita, la invitación se eliminará después de su uso." msgid "Optional fixed data to enforce on user enrollment." msgstr "Datos fijos opcionales para aplicar en la inscripción de usuarios." -#: authentik/stages/invitation/models.py -msgid "Invitation" -msgstr "Invitación" - #: authentik/stages/invitation/models.py msgid "Invitations" msgstr "Invitaciones" @@ -4719,6 +4940,18 @@ msgstr "" msgid "Static: Static value, displayed as-is." msgstr "Estático: valor estático, que se muestra tal cual." +#: authentik/stages/prompt/models.py +msgid "Alert (Info): Static alert box with info styling" +msgstr "" + +#: authentik/stages/prompt/models.py +msgid "Alert (Warning): Static alert box with warning styling" +msgstr "" + +#: authentik/stages/prompt/models.py +msgid "Alert (Danger): Static alert box with danger styling" +msgstr "" + #: authentik/stages/prompt/models.py msgid "authentik: Selection of locales authentik supports" msgstr "" diff --git a/locale/fi_FI/LC_MESSAGES/django.mo b/locale/fi_FI/LC_MESSAGES/django.mo index 83ed07a22e..a894c6673b 100644 Binary files a/locale/fi_FI/LC_MESSAGES/django.mo and b/locale/fi_FI/LC_MESSAGES/django.mo differ diff --git a/locale/fi_FI/LC_MESSAGES/django.po b/locale/fi_FI/LC_MESSAGES/django.po index 3962e552d8..07f5c3bc23 100644 --- a/locale/fi_FI/LC_MESSAGES/django.po +++ b/locale/fi_FI/LC_MESSAGES/django.po @@ -5,18 +5,18 @@ # # Translators: # Marc Schmitt, 2025 -# Skyler Mäntysaari, 2025 # Jiri Grönroos , 2025 -# Viima Veteläinen, 2026 +# Uumas, 2026 +# Skyler Mäntysaari, 2026 # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-02-10 19:27+0000\n" +"POT-Creation-Date: 2026-05-06 00:27+0000\n" "PO-Revision-Date: 2025-12-01 19:09+0000\n" -"Last-Translator: Viima Veteläinen, 2026\n" +"Last-Translator: Skyler Mäntysaari, 2026\n" "Language-Team: Finnish (Finland) (https://app.transifex.com/authentik/teams/119923/fi_FI/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -113,6 +113,14 @@ msgstr "Vahvistusvirhe" msgid "Blueprint file does not exist" msgstr "Suunnitelman tiedostoa ei löydetty" +#: authentik/blueprints/api.py +msgid "Context must be valid JSON" +msgstr "" + +#: authentik/blueprints/api.py +msgid "Context must be a JSON object" +msgstr "" + #: authentik/blueprints/api.py msgid "Failed to validate blueprint" msgstr "Suunnitelman validointi ei onnistunut" @@ -121,6 +129,11 @@ msgstr "Suunnitelman validointi ei onnistunut" msgid "Either path or content must be set." msgstr "Joko polku tai sisältö on määritettävä." +#: authentik/blueprints/api.py +#, python-brace-format +msgid "User lacks permission to create {model}" +msgstr "Käyttäjältä puuttuu oikeus luoda {model}" + #: authentik/blueprints/models.py msgid "Managed by authentik" msgstr "Authentikin hallinnoima" @@ -248,10 +261,13 @@ msgstr "" "true, vain taustakanava-tarjoajat palautetaan. Kun asetus on false, " "takakanava-tarjoajat suljetaan pois." -#: authentik/core/api/transactional_applications.py -#, python-brace-format -msgid "User lacks permission to create {model}" -msgstr "Käyttäjältä puuttuu oikeus luoda {model}" +#: authentik/core/api/users.py +msgid "Invalid password hash format. Must be a valid Django password hash." +msgstr "" + +#: authentik/core/api/users.py +msgid "Cannot set both password and password_hash. Use only one." +msgstr "" #: authentik/core/api/users.py msgid "No leading or trailing slashes allowed." @@ -313,6 +329,12 @@ msgstr "Sähköpostivaihetta ei löydetty." msgid "This field is required." msgstr "Tämä kenttä on pakollinen." +#: authentik/core/apps.py +msgid "" +"Configure if applications without any policy/group/user bindings should be " +"accessible to any user." +msgstr "" + #: authentik/core/models.py msgid "name" msgstr "nimi" @@ -419,6 +441,10 @@ msgstr "Sovelluksen sisäinen nimi, jota käytetään URLeissa." msgid "Open launch URL in a new browser tab or window." msgstr "Avaa käynnistys-URL uuteen selainvälilehteen tai -ikkunaan." +#: authentik/core/models.py +msgid "Hide this application from the user's My applications page." +msgstr "" + #: authentik/core/models.py msgid "Application" msgstr "Sovellus" @@ -608,6 +634,14 @@ msgstr "Poista SAML-lähteiden luomat tilapäiset käyttäjät." msgid "Go home" msgstr "Siirry etusivulle" +#: authentik/core/templates/login/base_full.html +msgid "Site footer" +msgstr "Sivuston alatunniste" + +#: authentik/core/templates/login/base_full.html +msgid "Flow links" +msgstr "" + #: authentik/core/templates/login/base_full.html #: authentik/flows/templates/if/flow-sfe.html msgid "Powered by authentik" @@ -714,6 +748,10 @@ msgstr "" msgid "Discover, import and update certificates from the filesystem." msgstr "Havaitse, tuo ja päivitä sertifikaatteja levyjärjestelmästä." +#: authentik/endpoints/api/stages.py +msgid "Selected connector is not compatible with this stage." +msgstr "" + #: authentik/endpoints/connectors/agent/api/connectors.py msgid "Selected platform not supported" msgstr "Valittu alusta ei ole tuettu" @@ -768,6 +806,14 @@ msgstr "" msgid "Apple Nonces" msgstr "" +#: authentik/endpoints/connectors/agent/models.py +msgid "Apple Independent Secure Enclave" +msgstr "" + +#: authentik/endpoints/connectors/agent/models.py +msgid "Apple Independent Secure Enclaves" +msgstr "" + #: authentik/endpoints/facts.py msgid "Operating System name, such as 'Server 2022' or 'Ubuntu'" msgstr "" @@ -838,6 +884,12 @@ msgstr "Tämän objektin luontiin/päivittämiseen tarvitaan Enterprise-versiota msgid "Enterprise is required to use this endpoint." msgstr "" +#: authentik/enterprise/audit/apps.py +msgid "" +"Include additional information in audit logs, may incur a performance " +"penalty." +msgstr "" + #: authentik/enterprise/endpoints/connectors/fleet/models.py #: authentik/events/models.py msgid "" @@ -855,6 +907,19 @@ msgstr "" msgid "Fleet Connectors" msgstr "" +#: authentik/enterprise/endpoints/connectors/google_chrome/models.py +msgid "Google Device Trust Connector" +msgstr "" + +#: authentik/enterprise/endpoints/connectors/google_chrome/models.py +msgid "Google Device Trust Connectors" +msgstr "" + +#: authentik/enterprise/endpoints/connectors/google_chrome/stage.py +#: authentik/enterprise/stages/authenticator_endpoint_gdtc/stage.py +msgid "Verifying your browser..." +msgstr "Selaintasi varmennetaan..." + #: authentik/enterprise/lifecycle/api/reviews.py msgid "You are not allowed to submit a review for this object." msgstr "" @@ -871,10 +936,6 @@ msgstr "" msgid "Grace period must be shorter than the interval." msgstr "" -#: authentik/enterprise/lifecycle/api/rules.py -msgid "Only one type-wide rule for each object type is allowed." -msgstr "" - #: authentik/enterprise/lifecycle/models.py msgid "" "Select which transports should be used to notify the reviewers. If none are " @@ -902,7 +963,8 @@ msgid "Go to {self._get_model_name()}" msgstr "" #: authentik/enterprise/lifecycle/models.py -msgid "Access review is due for {self.content_type.name} {str(self.object)}" +msgid "" +"Access review is due for {self.content_type.name.lower()} {object_label}" msgstr "" #: authentik/enterprise/lifecycle/models.py @@ -916,7 +978,7 @@ msgid "" msgstr "" #: authentik/enterprise/lifecycle/tasks.py -msgid "Dispatch tasks to validate lifecycle rules." +msgid "Dispatch tasks to apply lifecycle rules." msgstr "" #: authentik/enterprise/lifecycle/tasks.py @@ -1160,6 +1222,14 @@ msgstr "EAP-TLS:n käyttöön tarvitaan Enterprise-versiota." msgid "Enterprise is required to use the OAuth mode." msgstr "OAuth-tilan käyttöön tarvitaan Enterprise-versiota." +#: authentik/enterprise/providers/ssf/models.py +msgid "SSF RFC Push" +msgstr "" + +#: authentik/enterprise/providers/ssf/models.py +msgid "SSF RFC Pull" +msgstr "" + #: authentik/enterprise/providers/ssf/models.py #: authentik/providers/oauth2/models.py msgid "Signing Key" @@ -1241,6 +1311,78 @@ msgstr "Lataa" msgid "Generate data export." msgstr "" +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "User to lock. If omitted, locks the current user (self-service)." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "No lockdown flow configured." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "Lockdown flow is not applicable." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "Choose the target account, then return a flow link." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "No lockdown flow configured or the flow is not applicable" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "Permission denied (when targeting another user)" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Deactivate the user account (set is_active to False)" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Set an unusable password for the user" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Delete all active sessions for the user" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "" +"Revoke all tokens for the user (API, app password, recovery, verification, " +"OAuth)" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "" +"Flow to redirect users to after self-service lockdown. This flow should not " +"require authentication since the user's session is deleted." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Account Lockdown Stage" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Account Lockdown Stages" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/stage.py +msgid "No target user specified for account lockdown" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/stage.py +msgid "You do not have permission to lock down this account." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/stage.py +msgid "Account lockdown failed for this account." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/stage.py +msgid "Self-service account lockdown requires a completion flow." +msgstr "" + #: authentik/enterprise/stages/authenticator_endpoint_gdtc/models.py msgid "Endpoint Authenticator Google Device Trust Connector Stage" msgstr "Päätepisteen todentaja Google Device Trust Connector -vaihe" @@ -1257,10 +1399,6 @@ msgstr "Päätelaite" msgid "Endpoint Devices" msgstr "Päätelaitteet" -#: authentik/enterprise/stages/authenticator_endpoint_gdtc/stage.py -msgid "Verifying your browser..." -msgstr "Selaintasi varmennetaan..." - #: authentik/enterprise/stages/mtls/models.py msgid "" "Configure certificate authorities to validate the certificate against. This " @@ -1344,6 +1482,12 @@ msgstr "" "Lähetä notifikaatio vain kerran, esimerkiksi kun lähetetään webhook-" "tapahtuma pikaviestinkanavalle." +#: authentik/events/models.py +msgid "" +"When set, the selected ceritifcate is used to validate the certificate of " +"the webhook server." +msgstr "" + #: authentik/events/models.py msgid "" "Customize the body of the request. Mapping should return data that is JSON-" @@ -1515,6 +1659,15 @@ msgstr "Prosessia edeltävät käytännöt" msgid "Flow" msgstr "Prosessi" +#: authentik/flows/apps.py +msgid "Refresh other tabs after successful authentication." +msgstr "" + +#: authentik/flows/apps.py +msgid "" +"Upon successful authentication, re-start authentication in other open tabs." +msgstr "" + #: authentik/flows/exceptions.py msgid "Flow does not apply to current user." msgstr "Prosessi ei koske nykyistä käyttäjää." @@ -1624,9 +1777,9 @@ msgstr "Prosessin tunniste" msgid "Flow Tokens" msgstr "Prosessin tunnisteet" -#: authentik/flows/templates/if/flow.html -msgid "Site footer" -msgstr "Sivuston alatunniste" +#: authentik/flows/planner.py +msgid "This link is invalid or has expired. Please request a new one." +msgstr "" #: authentik/flows/views/executor.py msgid "Invalid next URL" @@ -2012,22 +2165,6 @@ msgstr "Mainepistemäärä" msgid "Reputation Scores" msgstr "Mainepistemäärät" -#: authentik/policies/templates/policies/buffer.html -msgid "Waiting for authentication..." -msgstr "Odotetaan todennusta..." - -#: authentik/policies/templates/policies/buffer.html -msgid "" -"You're already authenticating in another tab. This page will refresh once " -"authentication is completed." -msgstr "" -"Kirjaudut jo toisella välilehdellä. Tämä sivu päivittyy kun todennus on " -"valmis." - -#: authentik/policies/templates/policies/buffer.html -msgid "Authenticate in this tab" -msgstr "Kirjaudu tällä välilehdellä" - #: authentik/policies/templates/policies/denied.html msgid "Permission denied" msgstr "Käyttö evätty" @@ -2156,6 +2293,14 @@ msgstr "Tiukka URL-vertailu" msgid "Regular Expression URL matching" msgstr "Regular Expression -pohjainen URL-vertailu" +#: authentik/providers/oauth2/models.py +msgid "Authorization" +msgstr "Valtuutus" + +#: authentik/providers/oauth2/models.py +msgid "Logout" +msgstr "Kirjaudu ulos" + #: authentik/providers/oauth2/models.py msgid "Back-channel" msgstr "Taustakanava" @@ -2520,10 +2665,6 @@ msgstr "Välityspalveluntarjoaja" msgid "Proxy Providers" msgstr "Välityspalveluntarjoajat" -#: authentik/providers/proxy/tasks.py -msgid "Terminate session on Proxy outpost." -msgstr "Katkaise istunto välityspalvelutukikohdasta." - #: authentik/providers/rac/models.py authentik/stages/user_login/models.py msgid "" "Determines how long a session lasts. Default of 0 means that the sessions " @@ -2656,8 +2797,10 @@ msgstr "" "yleisörajoitusta ei lisätä." #: authentik/providers/saml/models.py -msgid "Also known as EntityID" -msgstr "Tunnetaan myös nimellä EntityID" +msgid "" +"Also known as EntityID. Providing a value overrides the default issuer " +"generated by authentik." +msgstr "" #: authentik/providers/saml/models.py msgid "SLS URL" @@ -2880,6 +3023,10 @@ msgstr "SAML NameID:n arvo tälle istunnolle" msgid "SAML NameID format" msgstr "SAML NameID:n muoto" +#: authentik/providers/saml/models.py +msgid "SAML Issuer used for this session" +msgstr "" + #: authentik/providers/saml/models.py msgid "SAML Session" msgstr "SAML-istunto" @@ -2908,6 +3055,14 @@ msgstr "Slack" msgid "Salesforce" msgstr "Salesforce" +#: authentik/providers/scim/models.py +msgid "Webex" +msgstr "" + +#: authentik/providers/scim/models.py +msgid "vCenter" +msgstr "" + #: authentik/providers/scim/models.py msgid "Group filters used to define sync-scope for groups." msgstr "" @@ -3193,7 +3348,7 @@ msgstr "" " Ota yhteyttä ylläpitäjään.\n" " " -#: authentik/sources/ldap/api.py +#: authentik/sources/ldap/api/sources.py msgid "Only a single LDAP Source with password synchronization is allowed" msgstr "Vain yksi LDAP-lähde salasanojen synkronoinnilla on sallittu" @@ -3730,6 +3885,12 @@ msgstr "" "Sallii IdP-lähtöiset todentamisprosessit. Tämä voi olla tietoturvariski, " "koska pyynnön ID:tä ei validoida." +#: authentik/sources/saml/models.py +msgid "" +"When enabled, the IdP will re-authenticate the user even if a session " +"exists." +msgstr "" + #: authentik/sources/saml/models.py msgid "" "NameID Policy sent to the IdP. Can be unset, in which case no Policy is " @@ -4155,6 +4316,10 @@ msgstr "Todentajan validaatiovaiheet" msgid "No (allowed) MFA authenticator configured." msgstr "Yhtään (sallittua) MFA-todentajaa ei ole määritelty." +#: authentik/stages/authenticator_webauthn/models.py +msgid "When enabled, a given device can only be registered once." +msgstr "" + #: authentik/stages/authenticator_webauthn/models.py msgid "WebAuthn Authenticator Setup Stage" msgstr "WebAuthn-todentajan asetusvaihe" @@ -4293,6 +4458,10 @@ msgstr "Sähköposti-OTP" msgid "Event Notification" msgstr "Tapahtumanotifikaatio" +#: authentik/stages/email/models.py authentik/stages/invitation/models.py +msgid "Invitation" +msgstr "Kutsu" + #: authentik/stages/email/models.py msgid "" "The time window used to count recent account recovery attempts. If the " @@ -4411,6 +4580,62 @@ msgstr "" "\n" "Tämä viesti on lähetetty notifikaatiokanavasta %(name)s.\n" +#: authentik/stages/email/templates/email/invitation.html +msgid "" +"\n" +" You're Invited!\n" +" " +msgstr "" + +#: authentik/stages/email/templates/email/invitation.html +#, python-format +msgid "" +"\n" +" You have been invited to join %(host)s. Click the button below to get started.\n" +" " +msgstr "" + +#: authentik/stages/email/templates/email/invitation.html +#, python-format +msgid "" +"\n" +" This invitation expires %(expires)s.\n" +" " +msgstr "" + +#: authentik/stages/email/templates/email/invitation.html +#: authentik/stages/email/templates/email/invitation.txt +msgid "Accept Invitation" +msgstr "" + +#: authentik/stages/email/templates/email/invitation.html +msgid "" +"\n" +" If you cannot click the button above, please copy and paste the following URL into your browser:\n" +" " +msgstr "" + +#: authentik/stages/email/templates/email/invitation.txt +msgid "You're Invited!" +msgstr "" + +#: authentik/stages/email/templates/email/invitation.txt +#, python-format +msgid "" +"You have been invited to join %(host)s. Use the link below to get started." +msgstr "" + +#: authentik/stages/email/templates/email/invitation.txt +#, python-format +msgid "This invitation expires %(expires)s." +msgstr "" + +#: authentik/stages/email/templates/email/invitation.txt +msgid "" +"If you cannot click the link above, please copy and paste the following URL " +"into your browser:" +msgstr "" + #: authentik/stages/email/templates/email/password_reset.html msgid "" "\n" @@ -4591,10 +4816,6 @@ msgid "Optional fixed data to enforce on user enrollment." msgstr "" "Valinnainen kiinteä data joka pakotetaan käyttäjän rekisteröitymisessä." -#: authentik/stages/invitation/models.py -msgid "Invitation" -msgstr "Kutsu" - #: authentik/stages/invitation/models.py msgid "Invitations" msgstr "Kutsut" @@ -4719,6 +4940,18 @@ msgstr "" msgid "Static: Static value, displayed as-is." msgstr "Staattinen: Staattinen arvo, näytetään sellaisenaan." +#: authentik/stages/prompt/models.py +msgid "Alert (Info): Static alert box with info styling" +msgstr "" + +#: authentik/stages/prompt/models.py +msgid "Alert (Warning): Static alert box with warning styling" +msgstr "" + +#: authentik/stages/prompt/models.py +msgid "Alert (Danger): Static alert box with danger styling" +msgstr "" + #: authentik/stages/prompt/models.py msgid "authentik: Selection of locales authentik supports" msgstr "authentik: Valittavat kielialueet, joita authentik tukee" diff --git a/locale/fr_FR/LC_MESSAGES/django.mo b/locale/fr_FR/LC_MESSAGES/django.mo index a9aa89f6db..3ecd53392f 100644 Binary files a/locale/fr_FR/LC_MESSAGES/django.mo and b/locale/fr_FR/LC_MESSAGES/django.mo differ diff --git a/locale/fr_FR/LC_MESSAGES/django.po b/locale/fr_FR/LC_MESSAGES/django.po index f9db8b9758..206cb85cb6 100644 --- a/locale/fr_FR/LC_MESSAGES/django.po +++ b/locale/fr_FR/LC_MESSAGES/django.po @@ -4,17 +4,20 @@ # FIRST AUTHOR , YEAR. # # Translators: -# Charles Leclerc, 2025 # Marc Schmitt, 2025 +# Esteban, 2026 +# nerdinator , 2026 +# Charles Leclerc, 2026 +# Sp P, 2026 # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-02-10 19:27+0000\n" +"POT-Creation-Date: 2026-05-06 00:27+0000\n" "PO-Revision-Date: 2025-12-01 19:09+0000\n" -"Last-Translator: Marc Schmitt, 2025\n" +"Last-Translator: Sp P, 2026\n" "Language-Team: French (France) (https://app.transifex.com/authentik/teams/119923/fr_FR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -39,6 +42,10 @@ msgid "" "hyphens (-), underscores (_), forward slashes (/), and the placeholder " "%(theme)s for theme-specific files" msgstr "" +"Le nom du fichier ne peut contenir que des lettres (a-z, A-Z), nombres " +"(0-9), points (.), tirets (-), tirets bas (_), barres obliques \"slash\" " +"(/), and l'élément de substitution %(theme)s pour les fichiers spécifiques " +"aux thèmes" #: authentik/admin/files/validation.py msgid "File name cannot contain duplicate /" @@ -109,6 +116,14 @@ msgstr "Erreur de Validation" msgid "Blueprint file does not exist" msgstr "Le fichier de plan n'existe pas" +#: authentik/blueprints/api.py +msgid "Context must be valid JSON" +msgstr "" + +#: authentik/blueprints/api.py +msgid "Context must be a JSON object" +msgstr "" + #: authentik/blueprints/api.py msgid "Failed to validate blueprint" msgstr "Échec de validation du plan" @@ -117,6 +132,11 @@ msgstr "Échec de validation du plan" msgid "Either path or content must be set." msgstr "Le chemin ou le contenu doit être défini." +#: authentik/blueprints/api.py +#, python-brace-format +msgid "User lacks permission to create {model}" +msgstr "L'utilisateur manque de permission pour créer {model}" + #: authentik/blueprints/models.py msgid "Managed by authentik" msgstr "Géré par authentik" @@ -172,7 +192,7 @@ msgid "" "Domain that activates this brand. Can be a superset, i.e. `a.b` for `aa.b` " "and `ba.b`" msgstr "" -"Domain qui active cette marque. Peut être un super-ensemble, c'est-à-dire " +"Domaine qui active cette marque. Peut être un super-ensemble, c'est-à-dire " "`a.b` pour `aa.b` et `ba.b`" #: authentik/brands/models.py @@ -251,10 +271,17 @@ msgstr "" "fournisseurs backchannels sont retournés. Si faux, les fournisseurs " "backchannels sont exclus" -#: authentik/core/api/transactional_applications.py -#, python-brace-format -msgid "User lacks permission to create {model}" -msgstr "L'utilisateur manque de permission pour créer {model}" +#: authentik/core/api/users.py +msgid "Invalid password hash format. Must be a valid Django password hash." +msgstr "" +"Format de hachage de mot de passe invalide. Cela doit être un hachage de mot" +" de passe Django valide." + +#: authentik/core/api/users.py +msgid "Cannot set both password and password_hash. Use only one." +msgstr "" +"Impossible de définir à la fois password (mot de passe) et password_hash " +"(hachage de mot de passe). N'en utiliser qu'un seul." #: authentik/core/api/users.py msgid "No leading or trailing slashes allowed." @@ -268,30 +295,33 @@ msgstr "Les segments vides dans le chemin utilisateur ne sont pas autorisés." #: authentik/core/api/users.py msgid "Can't change internal service account to other user type." msgstr "" +"Impossible de changer le compte de service interne vers un autre type " +"d'utilisateur." #: authentik/core/api/users.py msgid "Setting a user to internal service account is not allowed." msgstr "" +"Définir un utilisateur comme compte de service interne n'est pas autorisé." #: authentik/core/api/users.py msgid "Can't modify internal service account users" -msgstr "" +msgstr "Impossible de modifier les utilisateurs du compte de service interne" #: authentik/core/api/users.py msgid "filter: failed to parse JSON" -msgstr "" +msgstr "filtre : échec de l'analyse du JSON" #: authentik/core/api/users.py msgid "filter: value must be key:value mapping" -msgstr "" +msgstr "filtre : la valeur doit être un mapping clé:valeur" #: authentik/core/api/users.py msgid "No recovery flow set." -msgstr "" +msgstr "Aucun flux de récupération défini." #: authentik/core/api/users.py msgid "Recovery flow not applicable to user" -msgstr "" +msgstr "Flux de récupération non applicable pour l'utilisateur" #: authentik/core/api/users.py msgid "A user/group with these details already exists" @@ -307,15 +337,23 @@ msgstr "Une erreur inconnue est parvenue" #: authentik/core/api/users.py msgid "User does not have an email address set." -msgstr "" +msgstr "L'utilisateur n'a pas d'adresse de courriel définie." #: authentik/core/api/users.py msgid "Email stage not found." -msgstr "" +msgstr "Étape de courriel non trouvé." #: authentik/core/api/users.py msgid "This field is required." -msgstr "Ce champ est requis." +msgstr "Ce champ est obligatoire." + +#: authentik/core/apps.py +msgid "" +"Configure if applications without any policy/group/user bindings should be " +"accessible to any user." +msgstr "" +"Configurer si des applications sans politique / groupe / liaison " +"d'utilisateurs peuvent être accédées par n'importe quel utilisateur." #: authentik/core/models.py msgid "name" @@ -327,7 +365,7 @@ msgstr "Les utilisateurs ajoutés à ce groupe seront des super-utilisateurs." #: authentik/core/models.py msgid "Group" -msgstr "Group" +msgstr "Groupe" #: authentik/core/models.py msgid "Groups" @@ -343,11 +381,11 @@ msgstr "Retirer l'utilisateur du groupe" #: authentik/core/models.py msgid "Enable superuser status" -msgstr "Activer le statut super-utilisateur" +msgstr "Activer l'état super-utilisateur" #: authentik/core/models.py msgid "Disable superuser status" -msgstr "Désactiver le statut super-utilisateur" +msgstr "Désactiver l'état super-utilisateur" #: authentik/core/models.py msgid "Group Parentage Node" @@ -386,7 +424,7 @@ msgstr "" #: authentik/core/models.py msgid "View applications the user has access to" -msgstr "Voir les applications auquel l'utilisateur a accès" +msgstr "Voir les applications auxquelles l'utilisateur a accès" #: authentik/core/models.py msgid "" @@ -402,7 +440,7 @@ msgstr "Flux utilisé lors de l'autorisation de ce fournisseur." #: authentik/core/models.py msgid "Flow used ending the session from a provider." -msgstr "Flux utilisé lorsque la session est terminée depuis un fournisseur." +msgstr "Flux utilisé lorsque la session est terminée par un fournisseur." #: authentik/core/models.py msgid "" @@ -425,6 +463,11 @@ msgid "Open launch URL in a new browser tab or window." msgstr "" "Ouvrir l'URL de lancement dans une nouvelle fenêtre ou un nouvel onglet." +#: authentik/core/models.py +msgid "Hide this application from the user's My applications page." +msgstr "" +"Masquer cette application dans la page Mes applications de l'utilisateur." + #: authentik/core/models.py msgid "Application" msgstr "Application" @@ -450,15 +493,16 @@ msgid "" "Link to a user with identical email address. Can have security implications " "when a source doesn't validate email addresses." msgstr "" -"Lier à un utilisateur avec une adresse email identique. Peut avoir des " -"implications de sécurité lorsqu'une source ne valide pas les adresses email." +"Lier à un utilisateur avec une adresse de courriel identique. Peut avoir des" +" implications de sécurité lorsqu'une source ne valide pas les adresses de " +"courriel." #: authentik/core/models.py msgid "" "Use the user's email address, but deny enrollment when the email address " "already exists." msgstr "" -"Utiliser l'adresse courriel de l'utilisateur, mais refuser l'inscription " +"Utiliser l'adresse de courriel de l'utilisateur, mais refuser l'inscription " "lorsque celle-ci existe déjà." #: authentik/core/models.py @@ -616,6 +660,14 @@ msgstr "Supprime les utilisateurs temporaires créés par les sources SAML." msgid "Go home" msgstr "Retourner à l'accueil" +#: authentik/core/templates/login/base_full.html +msgid "Site footer" +msgstr "Pied de page du site" + +#: authentik/core/templates/login/base_full.html +msgid "Flow links" +msgstr "Liens de flux" + #: authentik/core/templates/login/base_full.html #: authentik/flows/templates/if/flow-sfe.html msgid "Powered by authentik" @@ -660,7 +712,7 @@ msgstr "RSA" #: authentik/crypto/models.py msgid "Elliptic Curve" -msgstr "Elliptic Curve" +msgstr "Courbe elliptique" #: authentik/crypto/models.py msgid "DSA" @@ -675,32 +727,33 @@ msgid "" "Optional Private Key. If this is set, you can use this keypair for " "encryption." msgstr "" -"Clé privée optionnelle. Si définie, vous pouvez utiliser pour le " +"Clé privée optionnelle. Si définie, vous pouvez l'utiliser pour le " "chiffrement." #: authentik/crypto/models.py msgid "Key algorithm type detected from the certificate's public key" msgstr "" +"Type d'algorithme de la clé, détecté depuis la clé publique du certificat" #: authentik/crypto/models.py msgid "Certificate expiry date" -msgstr "" +msgstr "Date d'expiration du certificat" #: authentik/crypto/models.py msgid "Certificate subject as RFC4514 string" -msgstr "" +msgstr "Sujet du certificat, en tant que chaîne de caractères RFC4514" #: authentik/crypto/models.py msgid "SHA256 fingerprint of the certificate" -msgstr "" +msgstr "Empreinte SHA256 du certificat" #: authentik/crypto/models.py msgid "SHA1 fingerprint of the certificate" -msgstr "" +msgstr "Empreinte SHA1 du certificat" #: authentik/crypto/models.py msgid "Key ID generated from private key" -msgstr "" +msgstr "ID de clé généré par la clé privée" #: authentik/crypto/models.py msgid "Certificate-Key Pair" @@ -724,6 +777,10 @@ msgstr "" "Découvre, importe et met à jour les certificats depuis le système de " "fichiers." +#: authentik/endpoints/api/stages.py +msgid "Selected connector is not compatible with this stage." +msgstr "Le connecteur sélectionné n'est pas compatible avec cette étape." + #: authentik/endpoints/connectors/agent/api/connectors.py msgid "Selected platform not supported" msgstr "La plateforme sélectionnée n'est pas supportée" @@ -778,15 +835,25 @@ msgstr "Nonce Apple" msgid "Apple Nonces" msgstr "Nonces Apple" +#: authentik/endpoints/connectors/agent/models.py +msgid "Apple Independent Secure Enclave" +msgstr "Secure Enclave indépendante d'Apple" + +#: authentik/endpoints/connectors/agent/models.py +msgid "Apple Independent Secure Enclaves" +msgstr "Secure Enclaves indépendantes d'Apple" + #: authentik/endpoints/facts.py msgid "Operating System name, such as 'Server 2022' or 'Ubuntu'" -msgstr "" +msgstr "Nom du système d'exploitation, comme 'Server 2022' ou 'Ubuntu'" #: authentik/endpoints/facts.py msgid "" "Operating System version, must always be the version number but may contain " "build name" msgstr "" +"Version du système d'exploitation, qui doit toujours contenir le numéro de " +"version mais peut aussi contenir le nom de la compilation" #: authentik/endpoints/models.py msgid "Device" @@ -846,7 +913,15 @@ msgstr "Entreprise est requis pour créer/mettre à jour cet objet." #: authentik/enterprise/api.py msgid "Enterprise is required to use this endpoint." +msgstr "Entreprise est requis pour utiliser ce point de terminaison." + +#: authentik/enterprise/audit/apps.py +msgid "" +"Include additional information in audit logs, may incur a performance " +"penalty." msgstr "" +"Inclure des données additionnelles dans les journaux d'audit, ce qui peut " +"entraîner des impacts sur les performances." #: authentik/enterprise/endpoints/connectors/fleet/models.py #: authentik/events/models.py @@ -859,83 +934,102 @@ msgstr "" #: authentik/enterprise/endpoints/connectors/fleet/models.py msgid "Fleet Connector" -msgstr "" +msgstr "Connecteurs Fleet" #: authentik/enterprise/endpoints/connectors/fleet/models.py msgid "Fleet Connectors" -msgstr "" +msgstr "Connecteur Fleet" + +#: authentik/enterprise/endpoints/connectors/google_chrome/models.py +msgid "Google Device Trust Connector" +msgstr "Connecteur Google Device Trust" + +#: authentik/enterprise/endpoints/connectors/google_chrome/models.py +msgid "Google Device Trust Connectors" +msgstr "Connecteurs Google Device Trust" + +#: authentik/enterprise/endpoints/connectors/google_chrome/stage.py +#: authentik/enterprise/stages/authenticator_endpoint_gdtc/stage.py +msgid "Verifying your browser..." +msgstr "Vérification de votre navigateur..." #: authentik/enterprise/lifecycle/api/reviews.py msgid "You are not allowed to submit a review for this object." -msgstr "" +msgstr "Vous n'êtes pas autorisé à soumettre une révision pour cet objet." #: authentik/enterprise/lifecycle/api/rules.py msgid "Object does not exist" -msgstr "" +msgstr "L'objet n'existe pas" #: authentik/enterprise/lifecycle/api/rules.py msgid "Either a reviewer group or a reviewer must be set." -msgstr "" +msgstr "Soit un groupe de réviseurs soit un réviseur doit être défini." #: authentik/enterprise/lifecycle/api/rules.py msgid "Grace period must be shorter than the interval." -msgstr "" - -#: authentik/enterprise/lifecycle/api/rules.py -msgid "Only one type-wide rule for each object type is allowed." -msgstr "" +msgstr "La période de grâce doit être plus courte que l'intervalle." #: authentik/enterprise/lifecycle/models.py msgid "" "Select which transports should be used to notify the reviewers. If none are " "selected, the notification will only be shown in the authentik UI." msgstr "" +"Sélectionnez quels moyens de transports doivent être utilisés pour notifier " +"les réviseurs. Si aucun n'est sélectionné, la notification sera uniquement " +"affichée dans l'interface d'authentik." #: authentik/enterprise/lifecycle/models.py msgid "Reviewed" -msgstr "" +msgstr "Révisé" #: authentik/enterprise/lifecycle/models.py msgid "Pending" -msgstr "" +msgstr "En attente" #: authentik/enterprise/lifecycle/models.py msgid "Overdue" -msgstr "" +msgstr "En retard" #: authentik/enterprise/lifecycle/models.py msgid "Canceled" -msgstr "" +msgstr "Annulé" #: authentik/enterprise/lifecycle/models.py msgid "Go to {self._get_model_name()}" -msgstr "" +msgstr "Aller à {self._get_model_name()}" #: authentik/enterprise/lifecycle/models.py -msgid "Access review is due for {self.content_type.name} {str(self.object)}" +msgid "" +"Access review is due for {self.content_type.name.lower()} {object_label}" msgstr "" +"La révision de l'accès doit être effectuée pour " +"{self.content_type.name.lower()} {object_label}" #: authentik/enterprise/lifecycle/models.py msgid "" "Access review is overdue for {self.content_type.name} {str(self.object)}" msgstr "" +"La révision d'accès est en retard pour {self.content_type.name} " +"{str(self.object)}" #: authentik/enterprise/lifecycle/models.py msgid "" "Access review completed for {self.content_type.name} {str(self.object)}" msgstr "" +"La révision d'accès est terminée pour {self.content_type.name} " +"{str(self.object)}" #: authentik/enterprise/lifecycle/tasks.py -msgid "Dispatch tasks to validate lifecycle rules." -msgstr "" +msgid "Dispatch tasks to apply lifecycle rules." +msgstr "Déclencher les tâches pour appliquer les règles de cycle de vie" #: authentik/enterprise/lifecycle/tasks.py msgid "Apply lifecycle rule." -msgstr "" +msgstr "Appliquer la règle de cycle de vie." #: authentik/enterprise/lifecycle/tasks.py msgid "Send lifecycle rule notification." -msgstr "" +msgstr "Envoyer la notification de la règle de cycle de vie." #: authentik/enterprise/models.py msgid "License" @@ -1064,10 +1158,14 @@ msgid "" "Dispatch deletions for an object (user, group) for Google Workspace " "providers." msgstr "" +"Déclenche les suppressions pour un objet (utilisateur, groupe) pour les " +"fournisseurs de Google Workspace." #: authentik/enterprise/providers/google_workspace/tasks.py msgid "Delete an object (user, group) for Google Workspace provider." msgstr "" +"Supprime un objet (utilisateur, groupe) pour le fournisseur de Google " +"Workspace." #: authentik/enterprise/providers/google_workspace/tasks.py msgid "" @@ -1144,12 +1242,16 @@ msgstr "" #: authentik/enterprise/providers/microsoft_entra/tasks.py msgid "Delete an object (user, group) for Microsoft Entra provider." msgstr "" +"Supprime un objet (utilisateur, groupe) pour le fournisseur de Microsoft " +"Entra." #: authentik/enterprise/providers/microsoft_entra/tasks.py msgid "" "Dispatch deletions for an object (user, group) for Microsoft Entra " "providers." msgstr "" +"Déclenche les suppressions pour un objet (utilisateur, groupe) pour les " +"fournisseurs de Microsoft Entra." #: authentik/enterprise/providers/microsoft_entra/tasks.py msgid "Sync a related object (memberships) for Microsoft Entra provider." @@ -1173,6 +1275,14 @@ msgstr "Entreprise est requis pour utiliser EAP-TLS." msgid "Enterprise is required to use the OAuth mode." msgstr "Enterprise est requis pour utiliser le mode OAuth." +#: authentik/enterprise/providers/ssf/models.py +msgid "SSF RFC Push" +msgstr "Push d'après la RFC de SSF" + +#: authentik/enterprise/providers/ssf/models.py +msgid "SSF RFC Pull" +msgstr "Pull d'après la RFC de SSF" + #: authentik/enterprise/providers/ssf/models.py #: authentik/providers/oauth2/models.py msgid "Signing Key" @@ -1220,11 +1330,11 @@ msgstr "Envoye un événement SSF." #: authentik/enterprise/providers/ws_federation/models.py msgid "WS-Federation Provider" -msgstr "" +msgstr "Fournisseur de fédération de web-services (WS-Federation)" #: authentik/enterprise/providers/ws_federation/models.py msgid "WS-Federation Providers" -msgstr "" +msgstr "Fournisseurs de fédération de web-services (WS-Federation)" #: authentik/enterprise/providers/ws_federation/views.py #: authentik/providers/oauth2/views/authorize.py @@ -1254,6 +1364,86 @@ msgstr "Télécharger" msgid "Generate data export." msgstr "Générer un export de données." +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "User to lock. If omitted, locks the current user (self-service)." +msgstr "" +"Utilisateur à bloquer. Si non renseigné, bloque l'utilisateur actuel (libre " +"service)." + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "No lockdown flow configured." +msgstr "Aucun flux de blocage configuré." + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "Lockdown flow is not applicable." +msgstr "Le flux de blocage n'est pas applicable." + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "Choose the target account, then return a flow link." +msgstr "Choisit le compte cible, puis renvoie un lien de flux." + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "No lockdown flow configured or the flow is not applicable" +msgstr "Aucun flux de blocage configuré, ou le flux n'est pas applicable" + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "Permission denied (when targeting another user)" +msgstr "Permission refusée (lors du ciblage d'un autre utilisateur)" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Deactivate the user account (set is_active to False)" +msgstr "Désactiver le compte de l'utilisateur (définir is_active à False)." + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Set an unusable password for the user" +msgstr "Définit un mot de passe inutilisable pour cet utilisateur." + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Delete all active sessions for the user" +msgstr "Supprimer toutes les sessions actives pour cet utilisateur." + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "" +"Revoke all tokens for the user (API, app password, recovery, verification, " +"OAuth)" +msgstr "" +"Révoquer tous les jetons pour cet utilisateur (API, mot de passe applicatif," +" récupération, vérification, OAuth)" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "" +"Flow to redirect users to after self-service lockdown. This flow should not " +"require authentication since the user's session is deleted." +msgstr "" +"Flux vers lequel rediriger les utilisateurs après le blocage en libre " +"service. Ce flux ne doit pas nécessiter d'authentification car la session " +"utilisateur est supprimée." + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Account Lockdown Stage" +msgstr "Etape de blocage de compte" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Account Lockdown Stages" +msgstr "Etapes de blocage de compte" + +#: authentik/enterprise/stages/account_lockdown/stage.py +msgid "No target user specified for account lockdown" +msgstr "Aucun utilisateur ciblé défini pour le blocage de compte" + +#: authentik/enterprise/stages/account_lockdown/stage.py +msgid "You do not have permission to lock down this account." +msgstr "Vous n'avez pas la permission de bloquer ce compte." + +#: authentik/enterprise/stages/account_lockdown/stage.py +msgid "Account lockdown failed for this account." +msgstr "Echec du blocage de compte pour ce compte." + +#: authentik/enterprise/stages/account_lockdown/stage.py +msgid "Self-service account lockdown requires a completion flow." +msgstr "" +"Le blocage de compte en libre service nécessite un flux de finalisation." + #: authentik/enterprise/stages/authenticator_endpoint_gdtc/models.py msgid "Endpoint Authenticator Google Device Trust Connector Stage" msgstr "" @@ -1274,10 +1464,6 @@ msgstr "Appareil point de terminaison" msgid "Endpoint Devices" msgstr "Appareils point de terminaison" -#: authentik/enterprise/stages/authenticator_endpoint_gdtc/stage.py -msgid "Verifying your browser..." -msgstr "Vérification de votre navigateur..." - #: authentik/enterprise/stages/mtls/models.py msgid "" "Configure certificate authorities to validate the certificate against. This " @@ -1326,7 +1512,7 @@ msgstr "Étapes Source" #: authentik/enterprise/tasks.py msgid "Update enterprise license status." -msgstr "Mettre à jour le statut de licence entreprise." +msgstr "Mettre à jour l'état de licence entreprise." #: authentik/events/models.py msgid "Event" @@ -1361,6 +1547,14 @@ msgstr "" "Envoyer une seule fois la notification, par exemple lors de l'envoi d'un " "webhook dans un canal de discussion." +#: authentik/events/models.py +msgid "" +"When set, the selected ceritifcate is used to validate the certificate of " +"the webhook server." +msgstr "" +"Quand défini, le certificat sélectionné est utilisé pour valider le " +"certificat du serveur de Webhook." + #: authentik/events/models.py msgid "" "Customize the body of the request. Mapping should return data that is JSON-" @@ -1383,11 +1577,11 @@ msgstr "Évènement utilisateur" #: authentik/events/models.py msgid "Notification Transport" -msgstr "Transport de Notification" +msgstr "Transport de notification" #: authentik/events/models.py msgid "Notification Transports" -msgstr "Transports de notification" +msgstr "Transports de notifications" #: authentik/events/models.py msgid "Notice" @@ -1535,9 +1729,20 @@ msgstr "Politiques pré-flux" msgid "Flow" msgstr "Flux" +#: authentik/flows/apps.py +msgid "Refresh other tabs after successful authentication." +msgstr "Râfraichir les autres onglets après une authentification réussie." + +#: authentik/flows/apps.py +msgid "" +"Upon successful authentication, re-start authentication in other open tabs." +msgstr "" +"Lors d'une authentification réussie, redémarre l'authentification dans les " +"autres onglets ouverts." + #: authentik/flows/exceptions.py msgid "Flow does not apply to current user." -msgstr "Le flux ne s'applique pas à l'utilisateur actuel" +msgstr "Le flux ne s'applique pas à l'utilisateur actuel." #: authentik/flows/models.py #, python-brace-format @@ -1648,9 +1853,9 @@ msgstr "Jeton du flux" msgid "Flow Tokens" msgstr "Jetons du flux" -#: authentik/flows/templates/if/flow.html -msgid "Site footer" -msgstr "Pied de page du site" +#: authentik/flows/planner.py +msgid "This link is invalid or has expired. Please request a new one." +msgstr "Ce lien est invalide ou a expiré. Veuillez un demander un nouveau." #: authentik/flows/views/executor.py msgid "Invalid next URL" @@ -2044,22 +2249,6 @@ msgstr "Score de Réputation" msgid "Reputation Scores" msgstr "Scores de Réputation" -#: authentik/policies/templates/policies/buffer.html -msgid "Waiting for authentication..." -msgstr "En attente de l'authentification..." - -#: authentik/policies/templates/policies/buffer.html -msgid "" -"You're already authenticating in another tab. This page will refresh once " -"authentication is completed." -msgstr "" -"Vous êtes déjà en cours d'authentification dans un autre onglet. Cette page " -"se rafraîchira lorsque l'authentification sera terminée." - -#: authentik/policies/templates/policies/buffer.html -msgid "Authenticate in this tab" -msgstr "S'authentifier dans cet onglet" - #: authentik/policies/templates/policies/denied.html msgid "Permission denied" msgstr "Permission refusée" @@ -2113,10 +2302,10 @@ msgid "" "that the numbers aren't too low for POSIX users. Default is 2000 to ensure " "that we don't collide with local users uidNumber" msgstr "" -"Le début des uidNumbers, ce nombre est ajouté au user.pk pour s'assurer que " -"les nombres ne sont pas trop bas pour les utilisateurs POSIX. La valeur par " -"défaut est 2000 pour s'assurer que nous n'entrons pas en collision avec les " -"uidNumber des utilisateurs locaux" +"La première valeur des uidNumbers, ce nombre est ajouté au user.pk pour " +"s'assurer que les nombres ne sont pas trop bas pour les utilisateurs POSIX. " +"La valeur par défaut est 2000 pour s'assurer que nous n'entrons pas en " +"collision avec les uidNumber des utilisateurs locaux" #: authentik/providers/ldap/models.py msgid "" @@ -2125,9 +2314,9 @@ msgid "" "Default is 4000 to ensure that we don't collide with local groups or users " "primary groups gidNumber" msgstr "" -"Le début des gidNumbers, ce nombre est ajouté à un nombre généré à partir du" -" group.pk pour s'assurer que les nombres ne sont pas trop bas pour les " -"groupes POSIX. La valeur par défaut est 4000 pour s'assurer que nous " +"La première valeur des gidNumbers, ce nombre est ajouté à un nombre généré à" +" partir du group.pk pour s'assurer que les nombres ne sont pas trop bas pour" +" les groupes POSIX. La valeur par défaut est 4000 pour s'assurer que nous " "n'entrons pas en collision avec les groupes locaux ou les gidNumber des " "groupes primaires des utilisateurs" @@ -2188,6 +2377,14 @@ msgstr "Comparaison stricte d'URL" msgid "Regular Expression URL matching" msgstr "Correspondance d'URL par expression régulière" +#: authentik/providers/oauth2/models.py +msgid "Authorization" +msgstr "Authorisation" + +#: authentik/providers/oauth2/models.py +msgid "Logout" +msgstr "Déconnexion" + #: authentik/providers/oauth2/models.py msgid "Back-channel" msgstr "Back-channel" @@ -2450,7 +2647,7 @@ msgstr "Compatibilité GitHub : accès aux informations utilisateur" #: authentik/providers/oauth2/views/userinfo.py msgid "GitHub Compatibility: Access you Email addresses" -msgstr "Compatibilité GitHub : accès aux adresses email" +msgstr "Compatibilité GitHub : accès aux adresses de courriel" #: authentik/providers/oauth2/views/userinfo.py msgid "GitHub Compatibility: Access your Groups" @@ -2553,10 +2750,6 @@ msgstr "Fournisseur Proxy" msgid "Proxy Providers" msgstr "Fournisseur de Proxy" -#: authentik/providers/proxy/tasks.py -msgid "Terminate session on Proxy outpost." -msgstr "Met fin à la session sur l'avant-poste Proxy." - #: authentik/providers/rac/models.py authentik/stages/user_login/models.py msgid "" "Determines how long a session lasts. Default of 0 means that the sessions " @@ -2654,6 +2847,8 @@ msgstr "" #: authentik/providers/saml/api/providers.py msgid "Only RSA, EC, and DSA key types are supported for SAML signing." msgstr "" +"Seuls les types de clés RSA, EC et DSA sont pris en charge pour la signature" +" SAML." #: authentik/providers/saml/api/providers.py msgid "Invalid XML Syntax" @@ -2689,8 +2884,12 @@ msgstr "" "restriction d'audience ne sera ajoutée." #: authentik/providers/saml/models.py -msgid "Also known as EntityID" -msgstr "Aussi appelé EntityID" +msgid "" +"Also known as EntityID. Providing a value overrides the default issuer " +"generated by authentik." +msgstr "" +"Aussi appelé EntityID. Fournir une valeur remplace l'émetteur par défaut " +"généré par authentik." #: authentik/providers/saml/models.py msgid "SLS URL" @@ -2911,6 +3110,10 @@ msgstr "SAML NameID pour cette session" msgid "SAML NameID format" msgstr "Format SAML NameID" +#: authentik/providers/saml/models.py +msgid "SAML Issuer used for this session" +msgstr "Émetteur SAML utilisé pour cette session" + #: authentik/providers/saml/models.py msgid "SAML Session" msgstr "Session SAML" @@ -2939,9 +3142,19 @@ msgstr "Slack" msgid "Salesforce" msgstr "Salesforce" +#: authentik/providers/scim/models.py +msgid "Webex" +msgstr "Webex" + +#: authentik/providers/scim/models.py +msgid "vCenter" +msgstr "vCenter" + #: authentik/providers/scim/models.py msgid "Group filters used to define sync-scope for groups." msgstr "" +"Les filtres de groupe utilisés pour définir le périmètre de synchronisation " +"des groupes." #: authentik/providers/scim/models.py msgid "Base URL to SCIM requests, usually ends in /v2" @@ -3014,11 +3227,13 @@ msgstr "" #: authentik/providers/scim/tasks.py msgid "Delete an object (user, group) for SCIM provider." -msgstr "" +msgstr "Supprime un objet (utilisateur, groupe) pour le fournisseur SCIM." #: authentik/providers/scim/tasks.py msgid "Dispatch deletions for an object (user, group) for SCIM providers." msgstr "" +"Déclenche les suppressions pour un objet (utilisateur, groupe) pour les " +"fournisseurs SCIM." #: authentik/providers/scim/tasks.py msgid "Sync a related object (memberships) for SCIM provider." @@ -3131,8 +3346,8 @@ msgid "" "Keytab to authenticate to kadmin for sync. Must be base64-encoded or in the " "form TYPE:residual" msgstr "" -"Keytab pour s'authentifier à kadmin pour la synchronisation. Doit être " -"encodé en base64 ou de la forme TYPE:residual" +"Tables de clés pour s'authentifier à kadmin pour la synchronisation. Doit " +"être encodé en base64 ou de la forme TYPE:residual" #: authentik/sources/kerberos/models.py msgid "" @@ -3226,7 +3441,7 @@ msgstr "" " Veuillez contacter votre administrateur.\n" " " -#: authentik/sources/ldap/api.py +#: authentik/sources/ldap/api/sources.py msgid "Only a single LDAP Source with password synchronization is allowed" msgstr "" "Une seule source LDAP avec synchronisation de mot de passe est autorisée" @@ -3658,8 +3873,8 @@ msgid "" "Which servers a user has to be a member of to be granted access. Empty list " "allows every server." msgstr "" -"De quels serveurs un utilisateur doit être membre afin d'être autorisé. Une " -"liste vide autorise tous les serveurs." +"De quels serveurs un utilisateur doit être membre afin d'obtenir l'accès. " +"Une liste vide autorise tous les serveurs." #: authentik/sources/plex/models.py msgid "Allow friends to authenticate, even if you don't share a server." @@ -3764,6 +3979,14 @@ msgstr "" " un risque de sécurité, aucune validation de l'ID de la requête n'est " "effectuée." +#: authentik/sources/saml/models.py +msgid "" +"When enabled, the IdP will re-authenticate the user even if a session " +"exists." +msgstr "" +"Quand activé, le fournisseur d'identités ré-authentifiera l'utilisateur même" +" s'il dispose d'une session existante." + #: authentik/sources/saml/models.py msgid "" "NameID Policy sent to the IdP. Can be unset, in which case no Policy is " @@ -3969,8 +4192,8 @@ msgstr "Courriel invalide" #: authentik/stages/authenticator_email/stage.py msgid "The user already has an email address registered for MFA." msgstr "" -"L'utilisateur a déjà une adresse e-mail enregistrée pour l'authentification " -"multi-facteurs." +"L'utilisateur a déjà une adresse de courriel enregistrée pour " +"l'authentification multi-facteurs." #: authentik/stages/authenticator_email/templates/email/email_otp.html #: authentik/stages/email/templates/email/password_reset.html @@ -4002,7 +4225,7 @@ msgid "" " " msgstr "" "\n" -" Si vous n'avez pas demandé ce code, veuillez ignorer ce courriel. Le code ci-dessus est valid pendant %(expires)s.\n" +" Si vous n'avez pas demandé ce code, veuillez ignorer ce courriel. Le code ci-dessus est valide pendant %(expires)s.\n" " " #: authentik/stages/authenticator_email/templates/email/email_otp.txt @@ -4017,7 +4240,7 @@ msgid "" "Email MFA code\n" msgstr "" "\n" -"Code MFA envoyé par e-mail\n" +"Envoyer le code MFA par courriel\n" #: authentik/stages/authenticator_email/templates/email/email_otp.txt #, python-format @@ -4193,6 +4416,11 @@ msgstr "Étapes de validation de l'authentificateur" msgid "No (allowed) MFA authenticator configured." msgstr "Pas d'authentificateur MFA (autorisé) configuré." +#: authentik/stages/authenticator_webauthn/models.py +msgid "When enabled, a given device can only be registered once." +msgstr "" +"Quand activé, chaque appareil ne peut être enregistré qu'une seule fois." + #: authentik/stages/authenticator_webauthn/models.py msgid "WebAuthn Authenticator Setup Stage" msgstr "Étape de validation de l'authentificateur WebAuthn" @@ -4330,6 +4558,10 @@ msgstr "OTP Courriel" msgid "Event Notification" msgstr "Notification d'évènement" +#: authentik/stages/email/models.py authentik/stages/invitation/models.py +msgid "Invitation" +msgstr "Invitation" + #: authentik/stages/email/models.py msgid "" "The time window used to count recent account recovery attempts. If the " @@ -4347,15 +4579,15 @@ msgstr "Activer les utilisateurs à la complétion de l'étape." #: authentik/stages/email/models.py msgid "Email Stage" -msgstr "Étape Email" +msgstr "Étape de Courriel" #: authentik/stages/email/models.py msgid "Email Stages" -msgstr "Étape Email" +msgstr "Étapes de Courriel" #: authentik/stages/email/stage.py msgid "Successfully verified Email." -msgstr "Email vérifié avec succès." +msgstr "Courriel vérifié avec succès." #: authentik/stages/email/stage.py msgid "No pending user." @@ -4363,7 +4595,7 @@ msgstr "Pas d'utilisateurs en attente." #: authentik/stages/email/stage.py msgid "Email sent." -msgstr "Email envoyé." +msgstr "Courriel envoyé." #: authentik/stages/email/stage.py #, python-brace-format @@ -4426,7 +4658,7 @@ msgid "" " " msgstr "" "\n" -" Cet email a été envoyé depuis le transport de notification %(name)s.\n" +" Ce courriel a été envoyé depuis le transport de notification %(name)s.\n" " " #: authentik/stages/email/templates/email/event_notification.txt @@ -4450,6 +4682,78 @@ msgstr "" "\n" "Cet email a été envoyé depuis le transport de notification %(name)s.\n" +#: authentik/stages/email/templates/email/invitation.html +msgid "" +"\n" +" You're Invited!\n" +" " +msgstr "" +"\n" +" Vous êtes invité !\n" +" " + +#: authentik/stages/email/templates/email/invitation.html +#, python-format +msgid "" +"\n" +" You have been invited to join %(host)s. Click the button below to get started.\n" +" " +msgstr "" +"\n" +" Vous avez été invité à rejoindre %(host)s. Cliquez sur le bouton ci-dessous pour démarrer.\n" +" " + +#: authentik/stages/email/templates/email/invitation.html +#, python-format +msgid "" +"\n" +" This invitation expires %(expires)s.\n" +" " +msgstr "" +"\n" +" Cette invitation expire le %(expires)s.\n" +" " + +#: authentik/stages/email/templates/email/invitation.html +#: authentik/stages/email/templates/email/invitation.txt +msgid "Accept Invitation" +msgstr "Accepter l'invitation" + +#: authentik/stages/email/templates/email/invitation.html +msgid "" +"\n" +" If you cannot click the button above, please copy and paste the following URL into your browser:\n" +" " +msgstr "" +"\n" +" Si cela ne fonctionne pas, copier et coller ce lien dans votre navigateur :\n" +" " + +#: authentik/stages/email/templates/email/invitation.txt +msgid "You're Invited!" +msgstr "Vous êtes invité !" + +#: authentik/stages/email/templates/email/invitation.txt +#, python-format +msgid "" +"You have been invited to join %(host)s. Use the link below to get started." +msgstr "" +"Vous avez été invité à rejoindre %(host)s. Utilisez le lien ci-dessous pour " +"démarrer." + +#: authentik/stages/email/templates/email/invitation.txt +#, python-format +msgid "This invitation expires %(expires)s." +msgstr "Cette invitation expire le %(expires)s." + +#: authentik/stages/email/templates/email/invitation.txt +msgid "" +"If you cannot click the link above, please copy and paste the following URL " +"into your browser:" +msgstr "" +"Si vous ne pouvez pas cliquer sur le lien au-dessus, merci de copier et " +"coller l'URL suivante dans votre navigateur :" + #: authentik/stages/email/templates/email/password_reset.html msgid "" "\n" @@ -4468,7 +4772,7 @@ msgid "" " " msgstr "" "\n" -" Si vous n'avez pas requis de changement de mot de passe, veuillez ignorer cet e-mail. Le lien ci-dessus est valide pendant %(expires)s.\n" +" Si vous n'avez pas demandé de changement de mot de passe, veuillez ignorer ce courriel. Le lien ci-dessus est valide pendant %(expires)s.\n" " " #: authentik/stages/email/templates/email/password_reset.txt @@ -4486,11 +4790,11 @@ msgid "" "If you did not request a password change, please ignore this email. The link above is valid for %(expires)s.\n" msgstr "" "\n" -"Si vous n'avez pas requis de changement de mot de passe, veuillez ignorer cet e-mail. Le lien ci-dessus est valide pendant %(expires)s.\n" +"Si vous n'avez pas demandé de changement de mot de passe, veuillez ignorer ce courriel. Le lien ci-dessus est valide pendant %(expires)s.\n" #: authentik/stages/email/templates/email/setup.html msgid "authentik Test-Email" -msgstr "Email de Test d'authentik" +msgstr "Courriel de Test d'authentik" #: authentik/stages/email/templates/email/setup.html msgid "" @@ -4499,7 +4803,7 @@ msgid "" " " msgstr "" "\n" -"Ceci est un email de test pour vous informer que vous avez configuré les emails d'authentik avec succès." +"Ceci est un courriel de test pour vous informer que vous avez configuré les courriels d'authentik avec succès." #: authentik/stages/email/templates/email/setup.txt msgid "" @@ -4507,7 +4811,7 @@ msgid "" "This is a test email to inform you, that you've successfully configured authentik emails.\n" msgstr "" "\n" -"Ceci est un email de test pour vous informer que vous avez configuré les emails d'authentik avec succès.\n" +"Ceci est un courriel de test pour vous informer que vous avez configuré les courriels d'authentik avec succès.\n" #: authentik/stages/identification/api.py msgid "When no user fields are selected, at least one source must be selected" @@ -4535,7 +4839,7 @@ msgid "" "the user's username and avatar will be shown. Otherwise, the text that the " "user entered will be shown" msgstr "" -"Lorsqu'un nom d'utilisateur/e-mail valide a été saisi, et si cette option " +"Lorsqu'un nom d'utilisateur/courriel valide a été saisi, et si cette option " "est active, le nom d'utilisateur et l'avatar de l'utilisateur seront " "affichés. Sinon, le texte que l'utilisateur a saisi sera affiché." @@ -4583,7 +4887,7 @@ msgstr "Étapes d'identification" #: authentik/stages/identification/stage.py msgid "No identification data provided." -msgstr "" +msgstr "Aucune donnée d'identification fournie." #: authentik/stages/identification/stage.py msgid "Failed to authenticate." @@ -4628,10 +4932,6 @@ msgstr "" "Données statiques optionnelles à forcer lors de l'inscription des " "utilisateurs." -#: authentik/stages/invitation/models.py -msgid "Invitation" -msgstr "Invitation" - #: authentik/stages/invitation/models.py msgid "Invitations" msgstr "Invitations" @@ -4717,7 +5017,7 @@ msgstr "" #: authentik/stages/prompt/models.py msgid "Email: Text field with Email type." -msgstr "Courriel : champ texte de type email" +msgstr "Courriel : champ texte de type Courriel" #: authentik/stages/prompt/models.py msgid "" @@ -4757,6 +5057,19 @@ msgstr "" msgid "Static: Static value, displayed as-is." msgstr "Statique : valeur statique, affichée comme telle." +#: authentik/stages/prompt/models.py +msgid "Alert (Info): Static alert box with info styling" +msgstr "Alerte (Info) : message d'alerte statique au format information" + +#: authentik/stages/prompt/models.py +msgid "Alert (Warning): Static alert box with warning styling" +msgstr "" +"Alerte (Avertissement) : message d'alerte statique au format avertissement" + +#: authentik/stages/prompt/models.py +msgid "Alert (Danger): Static alert box with danger styling" +msgstr "Alerte (Danger) : message d'alerte statique au format danger" + #: authentik/stages/prompt/models.py msgid "authentik: Selection of locales authentik supports" msgstr "authentik : sélection des locales prises en charges par authentik" @@ -4957,7 +5270,7 @@ msgstr "Déclencher manuellement une planification" #: authentik/tasks/tasks.py msgid "Remove old worker statuses." -msgstr "Supprime les anciens statuts des workers." +msgstr "Supprime les anciens états des workers." #: authentik/tenants/api/settings.py #, python-brace-format @@ -4984,7 +5297,7 @@ msgstr "Activer la possibilité aux utilisateurs de changer leur nom." #: authentik/tenants/models.py msgid "Enable the ability for users to change their email address." msgstr "" -"Activer la possibilité aux utilisateurs de changer leur adresse email." +"Activer la possibilité aux utilisateurs de changer leur adresse de courriel." #: authentik/tenants/models.py msgid "Enable the ability for users to change their username." @@ -5045,10 +5358,12 @@ msgstr "Longueur par défaut des jetons" #: authentik/tenants/models.py msgid "Default page size for API responses, if no size was requested." msgstr "" +"Taille de page par défaut pour les réponses API, si aucune taille n'a été " +"demandée." #: authentik/tenants/models.py msgid "Maximum page size" -msgstr "" +msgstr "Taille maximale de la page" #: authentik/tenants/models.py msgid "Tenant" diff --git a/locale/it_IT/LC_MESSAGES/django.mo b/locale/it_IT/LC_MESSAGES/django.mo index 98cc7039dc..8836cdd1de 100644 Binary files a/locale/it_IT/LC_MESSAGES/django.mo and b/locale/it_IT/LC_MESSAGES/django.mo differ diff --git a/locale/it_IT/LC_MESSAGES/django.po b/locale/it_IT/LC_MESSAGES/django.po index 0e978a6389..2c3d4a8ff3 100644 --- a/locale/it_IT/LC_MESSAGES/django.po +++ b/locale/it_IT/LC_MESSAGES/django.po @@ -5,15 +5,16 @@ # # Translators: # Marc Schmitt, 2025 +# Pao P, 2026 # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-02-10 19:27+0000\n" +"POT-Creation-Date: 2026-05-06 00:27+0000\n" "PO-Revision-Date: 2025-12-01 19:09+0000\n" -"Last-Translator: Marc Schmitt, 2025\n" +"Last-Translator: Pao P, 2026\n" "Language-Team: Italian (Italy) (https://app.transifex.com/authentik/teams/119923/it_IT/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -57,12 +58,14 @@ msgstr "" #: authentik/admin/files/validation.py #, python-brace-format msgid "File name too long (max {MAX_FILE_NAME_LENGTH} characters)" -msgstr "" +msgstr "Nome del file troppo lungo (max {MAX_FILE_NAME_LENGTH} caratteri)" #: authentik/admin/files/validation.py #, python-brace-format msgid "Path component too long (max {MAX_PATH_COMPONENT_LENGTH} characters)" msgstr "" +"Componente del percorso troppo lungo (max {MAX_PATH_COMPONENT_LENGTH} " +"caratteri)" #: authentik/admin/models.py msgid "Version history" @@ -105,6 +108,14 @@ msgstr "Errore di validazione" msgid "Blueprint file does not exist" msgstr "File del progetto inesistente" +#: authentik/blueprints/api.py +msgid "Context must be valid JSON" +msgstr "" + +#: authentik/blueprints/api.py +msgid "Context must be a JSON object" +msgstr "" + #: authentik/blueprints/api.py msgid "Failed to validate blueprint" msgstr "Impossibile convalidare il progetto" @@ -113,6 +124,11 @@ msgstr "Impossibile convalidare il progetto" msgid "Either path or content must be set." msgstr "È necessario impostare il percorso o il contenuto." +#: authentik/blueprints/api.py +#, python-brace-format +msgid "User lacks permission to create {model}" +msgstr "L'utente non ha i diritti per creare {model}" + #: authentik/blueprints/models.py msgid "Managed by authentik" msgstr "Gestito da authentik" @@ -238,10 +254,13 @@ msgstr "" " vengono restituiti solo i provider di backchannel. Se impostato su falso, i" " provider di backchannel vengono esclusi" -#: authentik/core/api/transactional_applications.py -#, python-brace-format -msgid "User lacks permission to create {model}" -msgstr "L'utente non ha i diritti per creare {model}" +#: authentik/core/api/users.py +msgid "Invalid password hash format. Must be a valid Django password hash." +msgstr "" + +#: authentik/core/api/users.py +msgid "Cannot set both password and password_hash. Use only one." +msgstr "" #: authentik/core/api/users.py msgid "No leading or trailing slashes allowed." @@ -303,6 +322,12 @@ msgstr "" msgid "This field is required." msgstr "Questo campo è obbligatorio." +#: authentik/core/apps.py +msgid "" +"Configure if applications without any policy/group/user bindings should be " +"accessible to any user." +msgstr "" + #: authentik/core/models.py msgid "name" msgstr "nome" @@ -409,6 +434,10 @@ msgstr "Nome interno dell'applicazione, utilizzato negli URL." msgid "Open launch URL in a new browser tab or window." msgstr "Apri l'URL di avvio in una nuova scheda o finestra del browser." +#: authentik/core/models.py +msgid "Hide this application from the user's My applications page." +msgstr "" + #: authentik/core/models.py msgid "Application" msgstr "Applicazione" @@ -597,6 +626,14 @@ msgstr "Rimuovi gli utenti temporanei creati da SAML Sources." msgid "Go home" msgstr "Vai alla pagina iniziale" +#: authentik/core/templates/login/base_full.html +msgid "Site footer" +msgstr "" + +#: authentik/core/templates/login/base_full.html +msgid "Flow links" +msgstr "" + #: authentik/core/templates/login/base_full.html #: authentik/flows/templates/if/flow-sfe.html msgid "Powered by authentik" @@ -703,6 +740,10 @@ msgstr "" msgid "Discover, import and update certificates from the filesystem." msgstr "Scopri, importa e aggiorna i certificati dal file system." +#: authentik/endpoints/api/stages.py +msgid "Selected connector is not compatible with this stage." +msgstr "" + #: authentik/endpoints/connectors/agent/api/connectors.py msgid "Selected platform not supported" msgstr "" @@ -757,6 +798,14 @@ msgstr "" msgid "Apple Nonces" msgstr "" +#: authentik/endpoints/connectors/agent/models.py +msgid "Apple Independent Secure Enclave" +msgstr "" + +#: authentik/endpoints/connectors/agent/models.py +msgid "Apple Independent Secure Enclaves" +msgstr "" + #: authentik/endpoints/facts.py msgid "Operating System name, such as 'Server 2022' or 'Ubuntu'" msgstr "" @@ -827,6 +876,12 @@ msgstr "Versione Enterprise richiesta per creare/aggiornare questo oggetto" msgid "Enterprise is required to use this endpoint." msgstr "" +#: authentik/enterprise/audit/apps.py +msgid "" +"Include additional information in audit logs, may incur a performance " +"penalty." +msgstr "" + #: authentik/enterprise/endpoints/connectors/fleet/models.py #: authentik/events/models.py msgid "" @@ -844,6 +899,19 @@ msgstr "" msgid "Fleet Connectors" msgstr "" +#: authentik/enterprise/endpoints/connectors/google_chrome/models.py +msgid "Google Device Trust Connector" +msgstr "" + +#: authentik/enterprise/endpoints/connectors/google_chrome/models.py +msgid "Google Device Trust Connectors" +msgstr "" + +#: authentik/enterprise/endpoints/connectors/google_chrome/stage.py +#: authentik/enterprise/stages/authenticator_endpoint_gdtc/stage.py +msgid "Verifying your browser..." +msgstr "Verifica del tuo browser..." + #: authentik/enterprise/lifecycle/api/reviews.py msgid "You are not allowed to submit a review for this object." msgstr "" @@ -860,10 +928,6 @@ msgstr "" msgid "Grace period must be shorter than the interval." msgstr "" -#: authentik/enterprise/lifecycle/api/rules.py -msgid "Only one type-wide rule for each object type is allowed." -msgstr "" - #: authentik/enterprise/lifecycle/models.py msgid "" "Select which transports should be used to notify the reviewers. If none are " @@ -891,7 +955,8 @@ msgid "Go to {self._get_model_name()}" msgstr "" #: authentik/enterprise/lifecycle/models.py -msgid "Access review is due for {self.content_type.name} {str(self.object)}" +msgid "" +"Access review is due for {self.content_type.name.lower()} {object_label}" msgstr "" #: authentik/enterprise/lifecycle/models.py @@ -905,7 +970,7 @@ msgid "" msgstr "" #: authentik/enterprise/lifecycle/tasks.py -msgid "Dispatch tasks to validate lifecycle rules." +msgid "Dispatch tasks to apply lifecycle rules." msgstr "" #: authentik/enterprise/lifecycle/tasks.py @@ -1153,6 +1218,14 @@ msgstr "Per Enterprise è tenuta a utilizzare EAP-TLS." msgid "Enterprise is required to use the OAuth mode." msgstr "Per Enterprise è obbligatorio utilizzare la modalità OAuth." +#: authentik/enterprise/providers/ssf/models.py +msgid "SSF RFC Push" +msgstr "" + +#: authentik/enterprise/providers/ssf/models.py +msgid "SSF RFC Pull" +msgstr "" + #: authentik/enterprise/providers/ssf/models.py #: authentik/providers/oauth2/models.py msgid "Signing Key" @@ -1234,6 +1307,78 @@ msgstr "" msgid "Generate data export." msgstr "" +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "User to lock. If omitted, locks the current user (self-service)." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "No lockdown flow configured." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "Lockdown flow is not applicable." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "Choose the target account, then return a flow link." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "No lockdown flow configured or the flow is not applicable" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "Permission denied (when targeting another user)" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Deactivate the user account (set is_active to False)" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Set an unusable password for the user" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Delete all active sessions for the user" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "" +"Revoke all tokens for the user (API, app password, recovery, verification, " +"OAuth)" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "" +"Flow to redirect users to after self-service lockdown. This flow should not " +"require authentication since the user's session is deleted." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Account Lockdown Stage" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Account Lockdown Stages" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/stage.py +msgid "No target user specified for account lockdown" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/stage.py +msgid "You do not have permission to lock down this account." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/stage.py +msgid "Account lockdown failed for this account." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/stage.py +msgid "Self-service account lockdown requires a completion flow." +msgstr "" + #: authentik/enterprise/stages/authenticator_endpoint_gdtc/models.py msgid "Endpoint Authenticator Google Device Trust Connector Stage" msgstr "" @@ -1252,10 +1397,6 @@ msgstr "Dispositivo di Accesso" msgid "Endpoint Devices" msgstr "Dispositivi di Accesso" -#: authentik/enterprise/stages/authenticator_endpoint_gdtc/stage.py -msgid "Verifying your browser..." -msgstr "Verifica del tuo browser..." - #: authentik/enterprise/stages/mtls/models.py msgid "" "Configure certificate authorities to validate the certificate against. This " @@ -1339,6 +1480,12 @@ msgstr "" "Invia una notifica solo una volta, ad esempio quando invii un webhook in un " "canale di chat." +#: authentik/events/models.py +msgid "" +"When set, the selected ceritifcate is used to validate the certificate of " +"the webhook server." +msgstr "" + #: authentik/events/models.py msgid "" "Customize the body of the request. Mapping should return data that is JSON-" @@ -1509,6 +1656,15 @@ msgstr "Politiche pre-flusso" msgid "Flow" msgstr "Flusso" +#: authentik/flows/apps.py +msgid "Refresh other tabs after successful authentication." +msgstr "" + +#: authentik/flows/apps.py +msgid "" +"Upon successful authentication, re-start authentication in other open tabs." +msgstr "" + #: authentik/flows/exceptions.py msgid "Flow does not apply to current user." msgstr "Il flusso non si applica all'utente corrente." @@ -1623,8 +1779,8 @@ msgstr "Token del flusso" msgid "Flow Tokens" msgstr "Tokens del flusso" -#: authentik/flows/templates/if/flow.html -msgid "Site footer" +#: authentik/flows/planner.py +msgid "This link is invalid or has expired. Please request a new one." msgstr "" #: authentik/flows/views/executor.py @@ -2013,22 +2169,6 @@ msgstr "Punteggio di reputazione" msgid "Reputation Scores" msgstr "Punteggi di reputazione" -#: authentik/policies/templates/policies/buffer.html -msgid "Waiting for authentication..." -msgstr "In attesa di autenticazione..." - -#: authentik/policies/templates/policies/buffer.html -msgid "" -"You're already authenticating in another tab. This page will refresh once " -"authentication is completed." -msgstr "" -"Ti stai già autenticando in un'altra scheda. Questa pagina si aggiornerà una" -" volta completata l'autenticazione." - -#: authentik/policies/templates/policies/buffer.html -msgid "Authenticate in this tab" -msgstr "Autenticati in questa scheda" - #: authentik/policies/templates/policies/denied.html msgid "Permission denied" msgstr "Permesso negato" @@ -2156,6 +2296,14 @@ msgstr "Confronto URL rigoroso" msgid "Regular Expression URL matching" msgstr "Corrispondenza URL espressione regolare" +#: authentik/providers/oauth2/models.py +msgid "Authorization" +msgstr "" + +#: authentik/providers/oauth2/models.py +msgid "Logout" +msgstr "" + #: authentik/providers/oauth2/models.py msgid "Back-channel" msgstr "" @@ -2518,10 +2666,6 @@ msgstr "Provider Proxy" msgid "Proxy Providers" msgstr "Providers Proxy" -#: authentik/providers/proxy/tasks.py -msgid "Terminate session on Proxy outpost." -msgstr "" - #: authentik/providers/rac/models.py authentik/stages/user_login/models.py msgid "" "Determines how long a session lasts. Default of 0 means that the sessions " @@ -2653,8 +2797,10 @@ msgstr "" "vuoto, non verrà aggiunta alcuna restrizione sul pubblico." #: authentik/providers/saml/models.py -msgid "Also known as EntityID" -msgstr "Conosciuto anche come EntityID" +msgid "" +"Also known as EntityID. Providing a value overrides the default issuer " +"generated by authentik." +msgstr "" #: authentik/providers/saml/models.py msgid "SLS URL" @@ -2868,6 +3014,10 @@ msgstr "" msgid "SAML NameID format" msgstr "" +#: authentik/providers/saml/models.py +msgid "SAML Issuer used for this session" +msgstr "" + #: authentik/providers/saml/models.py msgid "SAML Session" msgstr "Sessione SAML " @@ -2896,6 +3046,14 @@ msgstr "Slack" msgid "Salesforce" msgstr "" +#: authentik/providers/scim/models.py +msgid "Webex" +msgstr "" + +#: authentik/providers/scim/models.py +msgid "vCenter" +msgstr "" + #: authentik/providers/scim/models.py msgid "Group filters used to define sync-scope for groups." msgstr "" @@ -3177,7 +3335,7 @@ msgstr "" " e di aver configurato correttamente il browser. \n" "Contatta il tuo amministratore." -#: authentik/sources/ldap/api.py +#: authentik/sources/ldap/api/sources.py msgid "Only a single LDAP Source with password synchronization is allowed" msgstr "" "È consentita solo una singola sorgente LDAP con sincronizzazione della " @@ -3711,6 +3869,12 @@ msgstr "" "rappresentare un rischio per la sicurezza, poiché non viene eseguita alcuna " "convalida dell'ID richiesta." +#: authentik/sources/saml/models.py +msgid "" +"When enabled, the IdP will re-authenticate the user even if a session " +"exists." +msgstr "" + #: authentik/sources/saml/models.py msgid "" "NameID Policy sent to the IdP. Can be unset, in which case no Policy is " @@ -4142,6 +4306,10 @@ msgstr "Fasi di convalida dell'autenticatore" msgid "No (allowed) MFA authenticator configured." msgstr "Nessun autenticatore MFA (consentito) configurato." +#: authentik/stages/authenticator_webauthn/models.py +msgid "When enabled, a given device can only be registered once." +msgstr "" + #: authentik/stages/authenticator_webauthn/models.py msgid "WebAuthn Authenticator Setup Stage" msgstr "Fase di configurazione dell'autenticatore WebAuthn" @@ -4280,6 +4448,10 @@ msgstr "Email OTP" msgid "Event Notification" msgstr "Notifica evento" +#: authentik/stages/email/models.py authentik/stages/invitation/models.py +msgid "Invitation" +msgstr "Invito" + #: authentik/stages/email/models.py msgid "" "The time window used to count recent account recovery attempts. If the " @@ -4398,6 +4570,62 @@ msgstr "" "\n" "Questa email è stata inviata dal trasporto delle notifiche %(name)s.\n" +#: authentik/stages/email/templates/email/invitation.html +msgid "" +"\n" +" You're Invited!\n" +" " +msgstr "" + +#: authentik/stages/email/templates/email/invitation.html +#, python-format +msgid "" +"\n" +" You have been invited to join %(host)s. Click the button below to get started.\n" +" " +msgstr "" + +#: authentik/stages/email/templates/email/invitation.html +#, python-format +msgid "" +"\n" +" This invitation expires %(expires)s.\n" +" " +msgstr "" + +#: authentik/stages/email/templates/email/invitation.html +#: authentik/stages/email/templates/email/invitation.txt +msgid "Accept Invitation" +msgstr "" + +#: authentik/stages/email/templates/email/invitation.html +msgid "" +"\n" +" If you cannot click the button above, please copy and paste the following URL into your browser:\n" +" " +msgstr "" + +#: authentik/stages/email/templates/email/invitation.txt +msgid "You're Invited!" +msgstr "" + +#: authentik/stages/email/templates/email/invitation.txt +#, python-format +msgid "" +"You have been invited to join %(host)s. Use the link below to get started." +msgstr "" + +#: authentik/stages/email/templates/email/invitation.txt +#, python-format +msgid "This invitation expires %(expires)s." +msgstr "" + +#: authentik/stages/email/templates/email/invitation.txt +msgid "" +"If you cannot click the link above, please copy and paste the following URL " +"into your browser:" +msgstr "" + #: authentik/stages/email/templates/email/password_reset.html msgid "" "\n" @@ -4577,10 +4805,6 @@ msgstr "Se abilitato, l'invito verrà eliminato dopo l'utilizzo." msgid "Optional fixed data to enforce on user enrollment." msgstr "Dati fissi facoltativi da applicare alla registrazione dell'utente." -#: authentik/stages/invitation/models.py -msgid "Invitation" -msgstr "Invito" - #: authentik/stages/invitation/models.py msgid "Invitations" msgstr "Inviti" @@ -4706,6 +4930,18 @@ msgstr "" msgid "Static: Static value, displayed as-is." msgstr "Statico: Valore statico, visualizzato così com'è." +#: authentik/stages/prompt/models.py +msgid "Alert (Info): Static alert box with info styling" +msgstr "" + +#: authentik/stages/prompt/models.py +msgid "Alert (Warning): Static alert box with warning styling" +msgstr "" + +#: authentik/stages/prompt/models.py +msgid "Alert (Danger): Static alert box with danger styling" +msgstr "" + #: authentik/stages/prompt/models.py msgid "authentik: Selection of locales authentik supports" msgstr "" diff --git a/locale/ja_JP/LC_MESSAGES/django.mo b/locale/ja_JP/LC_MESSAGES/django.mo index 1194a290d1..8d20700a6a 100644 Binary files a/locale/ja_JP/LC_MESSAGES/django.mo and b/locale/ja_JP/LC_MESSAGES/django.mo differ diff --git a/locale/ja_JP/LC_MESSAGES/django.po b/locale/ja_JP/LC_MESSAGES/django.po index 5b5b0de62c..115650cc1d 100644 --- a/locale/ja_JP/LC_MESSAGES/django.po +++ b/locale/ja_JP/LC_MESSAGES/django.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-02-10 19:27+0000\n" +"POT-Creation-Date: 2026-05-06 00:27+0000\n" "PO-Revision-Date: 2025-12-01 19:09+0000\n" "Last-Translator: Marc Schmitt, 2025\n" "Language-Team: Japanese (Japan) (https://app.transifex.com/authentik/teams/119923/ja_JP/)\n" @@ -105,6 +105,14 @@ msgstr "検証エラー" msgid "Blueprint file does not exist" msgstr "ブループリントファイルがありません" +#: authentik/blueprints/api.py +msgid "Context must be valid JSON" +msgstr "" + +#: authentik/blueprints/api.py +msgid "Context must be a JSON object" +msgstr "" + #: authentik/blueprints/api.py msgid "Failed to validate blueprint" msgstr "ブループリントの検証に失敗しました" @@ -113,6 +121,11 @@ msgstr "ブループリントの検証に失敗しました" msgid "Either path or content must be set." msgstr "パスかコンテンツの設定は必須です。" +#: authentik/blueprints/api.py +#, python-brace-format +msgid "User lacks permission to create {model}" +msgstr "ユーザーは {model} を作成するための権限がありません" + #: authentik/blueprints/models.py msgid "Managed by authentik" msgstr "Managed by authentik" @@ -228,10 +241,13 @@ msgid "" msgstr "" "設定されていない場合、すべてのプロバイダーが返されます。trueに設定すると、バックチャネルプロバイダーのみが返されます。falseに設定すると、バックチャネルプロバイダーは除外されます" -#: authentik/core/api/transactional_applications.py -#, python-brace-format -msgid "User lacks permission to create {model}" -msgstr "ユーザーは {model} を作成するための権限がありません" +#: authentik/core/api/users.py +msgid "Invalid password hash format. Must be a valid Django password hash." +msgstr "" + +#: authentik/core/api/users.py +msgid "Cannot set both password and password_hash. Use only one." +msgstr "" #: authentik/core/api/users.py msgid "No leading or trailing slashes allowed." @@ -293,6 +309,12 @@ msgstr "" msgid "This field is required." msgstr "このフィールドは必須です。" +#: authentik/core/apps.py +msgid "" +"Configure if applications without any policy/group/user bindings should be " +"accessible to any user." +msgstr "" + #: authentik/core/models.py msgid "name" msgstr "名前" @@ -395,6 +417,10 @@ msgstr "URLで使用される内部アプリ名。" msgid "Open launch URL in a new browser tab or window." msgstr "ブラウザーの新しいタブまたはウィンドウで起動URLを開きます。" +#: authentik/core/models.py +msgid "Hide this application from the user's My applications page." +msgstr "" + #: authentik/core/models.py msgid "Application" msgstr "アプリ" @@ -566,6 +592,14 @@ msgstr "SAMLで作成された一時ユーザを削除。" msgid "Go home" msgstr "ホームに戻る" +#: authentik/core/templates/login/base_full.html +msgid "Site footer" +msgstr "" + +#: authentik/core/templates/login/base_full.html +msgid "Flow links" +msgstr "" + #: authentik/core/templates/login/base_full.html #: authentik/flows/templates/if/flow-sfe.html msgid "Powered by authentik" @@ -670,6 +704,10 @@ msgstr "" msgid "Discover, import and update certificates from the filesystem." msgstr "証明書をファイルシステムから検出、インポート、更新する。" +#: authentik/endpoints/api/stages.py +msgid "Selected connector is not compatible with this stage." +msgstr "" + #: authentik/endpoints/connectors/agent/api/connectors.py msgid "Selected platform not supported" msgstr "" @@ -724,6 +762,14 @@ msgstr "" msgid "Apple Nonces" msgstr "" +#: authentik/endpoints/connectors/agent/models.py +msgid "Apple Independent Secure Enclave" +msgstr "" + +#: authentik/endpoints/connectors/agent/models.py +msgid "Apple Independent Secure Enclaves" +msgstr "" + #: authentik/endpoints/facts.py msgid "Operating System name, such as 'Server 2022' or 'Ubuntu'" msgstr "" @@ -794,6 +840,12 @@ msgstr "このオブジェクトの作成/更新にはエンタープライズ msgid "Enterprise is required to use this endpoint." msgstr "" +#: authentik/enterprise/audit/apps.py +msgid "" +"Include additional information in audit logs, may incur a performance " +"penalty." +msgstr "" + #: authentik/enterprise/endpoints/connectors/fleet/models.py #: authentik/events/models.py msgid "" @@ -809,6 +861,19 @@ msgstr "" msgid "Fleet Connectors" msgstr "" +#: authentik/enterprise/endpoints/connectors/google_chrome/models.py +msgid "Google Device Trust Connector" +msgstr "" + +#: authentik/enterprise/endpoints/connectors/google_chrome/models.py +msgid "Google Device Trust Connectors" +msgstr "" + +#: authentik/enterprise/endpoints/connectors/google_chrome/stage.py +#: authentik/enterprise/stages/authenticator_endpoint_gdtc/stage.py +msgid "Verifying your browser..." +msgstr "ブラウザの確認中...。" + #: authentik/enterprise/lifecycle/api/reviews.py msgid "You are not allowed to submit a review for this object." msgstr "" @@ -825,10 +890,6 @@ msgstr "" msgid "Grace period must be shorter than the interval." msgstr "" -#: authentik/enterprise/lifecycle/api/rules.py -msgid "Only one type-wide rule for each object type is allowed." -msgstr "" - #: authentik/enterprise/lifecycle/models.py msgid "" "Select which transports should be used to notify the reviewers. If none are " @@ -856,7 +917,8 @@ msgid "Go to {self._get_model_name()}" msgstr "" #: authentik/enterprise/lifecycle/models.py -msgid "Access review is due for {self.content_type.name} {str(self.object)}" +msgid "" +"Access review is due for {self.content_type.name.lower()} {object_label}" msgstr "" #: authentik/enterprise/lifecycle/models.py @@ -870,7 +932,7 @@ msgid "" msgstr "" #: authentik/enterprise/lifecycle/tasks.py -msgid "Dispatch tasks to validate lifecycle rules." +msgid "Dispatch tasks to apply lifecycle rules." msgstr "" #: authentik/enterprise/lifecycle/tasks.py @@ -1095,6 +1157,14 @@ msgstr "EAP-TLSを使用するにはエンタープライズが必要です。" msgid "Enterprise is required to use the OAuth mode." msgstr "OAuthモードを使用するにはエンタープライズが必要です。" +#: authentik/enterprise/providers/ssf/models.py +msgid "SSF RFC Push" +msgstr "" + +#: authentik/enterprise/providers/ssf/models.py +msgid "SSF RFC Pull" +msgstr "" + #: authentik/enterprise/providers/ssf/models.py #: authentik/providers/oauth2/models.py msgid "Signing Key" @@ -1176,6 +1246,78 @@ msgstr "" msgid "Generate data export." msgstr "" +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "User to lock. If omitted, locks the current user (self-service)." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "No lockdown flow configured." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "Lockdown flow is not applicable." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "Choose the target account, then return a flow link." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "No lockdown flow configured or the flow is not applicable" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "Permission denied (when targeting another user)" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Deactivate the user account (set is_active to False)" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Set an unusable password for the user" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Delete all active sessions for the user" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "" +"Revoke all tokens for the user (API, app password, recovery, verification, " +"OAuth)" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "" +"Flow to redirect users to after self-service lockdown. This flow should not " +"require authentication since the user's session is deleted." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Account Lockdown Stage" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Account Lockdown Stages" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/stage.py +msgid "No target user specified for account lockdown" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/stage.py +msgid "You do not have permission to lock down this account." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/stage.py +msgid "Account lockdown failed for this account." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/stage.py +msgid "Self-service account lockdown requires a completion flow." +msgstr "" + #: authentik/enterprise/stages/authenticator_endpoint_gdtc/models.py msgid "Endpoint Authenticator Google Device Trust Connector Stage" msgstr "エンドポイント認証器Google Device Trust Connectorステージ" @@ -1192,10 +1334,6 @@ msgstr "エンドポイントデバイス" msgid "Endpoint Devices" msgstr "エンドポイントデバイス" -#: authentik/enterprise/stages/authenticator_endpoint_gdtc/stage.py -msgid "Verifying your browser..." -msgstr "ブラウザの確認中...。" - #: authentik/enterprise/stages/mtls/models.py msgid "" "Configure certificate authorities to validate the certificate against. This " @@ -1273,6 +1411,12 @@ msgid "" "channel." msgstr "チャットチャンネルにWebhookを送るときのような場合に、一度だけ通知を送信します。" +#: authentik/events/models.py +msgid "" +"When set, the selected ceritifcate is used to validate the certificate of " +"the webhook server." +msgstr "" + #: authentik/events/models.py msgid "" "Customize the body of the request. Mapping should return data that is JSON-" @@ -1432,6 +1576,15 @@ msgstr "事前フローのポリシー" msgid "Flow" msgstr "フロー" +#: authentik/flows/apps.py +msgid "Refresh other tabs after successful authentication." +msgstr "" + +#: authentik/flows/apps.py +msgid "" +"Upon successful authentication, re-start authentication in other open tabs." +msgstr "" + #: authentik/flows/exceptions.py msgid "Flow does not apply to current user." msgstr "フローは現在のユーザーに適用されません。" @@ -1536,8 +1689,8 @@ msgstr "フロートークン" msgid "Flow Tokens" msgstr "フロートークン" -#: authentik/flows/templates/if/flow.html -msgid "Site footer" +#: authentik/flows/planner.py +msgid "This link is invalid or has expired. Please request a new one." msgstr "" #: authentik/flows/views/executor.py @@ -1897,20 +2050,6 @@ msgstr "評判スコア" msgid "Reputation Scores" msgstr "評判スコア" -#: authentik/policies/templates/policies/buffer.html -msgid "Waiting for authentication..." -msgstr "認証を待機中...。" - -#: authentik/policies/templates/policies/buffer.html -msgid "" -"You're already authenticating in another tab. This page will refresh once " -"authentication is completed." -msgstr "別のタブで既に認証中です。認証が完了するとこのページが更新されます。" - -#: authentik/policies/templates/policies/buffer.html -msgid "Authenticate in this tab" -msgstr "このタブで認証" - #: authentik/policies/templates/policies/denied.html msgid "Permission denied" msgstr "権限がありません" @@ -2031,6 +2170,14 @@ msgstr "厳密な URL 比較" msgid "Regular Expression URL matching" msgstr "正規表現 URL マッチング" +#: authentik/providers/oauth2/models.py +msgid "Authorization" +msgstr "" + +#: authentik/providers/oauth2/models.py +msgid "Logout" +msgstr "" + #: authentik/providers/oauth2/models.py msgid "Back-channel" msgstr "バックチャネル" @@ -2358,10 +2505,6 @@ msgstr "プロキシプロバイダー" msgid "Proxy Providers" msgstr "プロキシプロバイダー" -#: authentik/providers/proxy/tasks.py -msgid "Terminate session on Proxy outpost." -msgstr "Proxy Outpost でセッションを終了。" - #: authentik/providers/rac/models.py authentik/stages/user_login/models.py msgid "" "Determines how long a session lasts. Default of 0 means that the sessions " @@ -2485,8 +2628,10 @@ msgid "" msgstr "アサーションのオーディエンス制限フィールドの値。空の場合、オーディエンス制限は追加されません。" #: authentik/providers/saml/models.py -msgid "Also known as EntityID" -msgstr "EntityID とも呼ばれる" +msgid "" +"Also known as EntityID. Providing a value overrides the default issuer " +"generated by authentik." +msgstr "" #: authentik/providers/saml/models.py msgid "SLS URL" @@ -2686,6 +2831,10 @@ msgstr "このセッションの SAML NameID 値" msgid "SAML NameID format" msgstr "SAML NameID フォーマット" +#: authentik/providers/saml/models.py +msgid "SAML Issuer used for this session" +msgstr "" + #: authentik/providers/saml/models.py msgid "SAML Session" msgstr "SAML セッション" @@ -2714,6 +2863,14 @@ msgstr "Slack" msgid "Salesforce" msgstr "Salesforce" +#: authentik/providers/scim/models.py +msgid "Webex" +msgstr "" + +#: authentik/providers/scim/models.py +msgid "vCenter" +msgstr "" + #: authentik/providers/scim/models.py msgid "Group filters used to define sync-scope for groups." msgstr "" @@ -2978,7 +3135,7 @@ msgstr "" " 管理者に連絡してください。\n" " " -#: authentik/sources/ldap/api.py +#: authentik/sources/ldap/api/sources.py msgid "Only a single LDAP Source with password synchronization is allowed" msgstr "パスワード同期を備えた単一の LDAP ソースのみが許可されます" @@ -3491,6 +3648,12 @@ msgid "" "risk, as no validation of the request ID is done." msgstr "IdP によって開始される認証フローを許可します。リクエスト ID の検証が行われないため、セキュリティリスクになる可能性があります。" +#: authentik/sources/saml/models.py +msgid "" +"When enabled, the IdP will re-authenticate the user even if a session " +"exists." +msgstr "" + #: authentik/sources/saml/models.py msgid "" "NameID Policy sent to the IdP. Can be unset, in which case no Policy is " @@ -3894,6 +4057,10 @@ msgstr "認証器検証ステージ" msgid "No (allowed) MFA authenticator configured." msgstr "(許可された)MFA 認証器が設定されていません。" +#: authentik/stages/authenticator_webauthn/models.py +msgid "When enabled, a given device can only be registered once." +msgstr "" + #: authentik/stages/authenticator_webauthn/models.py msgid "WebAuthn Authenticator Setup Stage" msgstr "WebAuthn 認証器セットアップステージ" @@ -4026,6 +4193,10 @@ msgstr "メール OTP" msgid "Event Notification" msgstr "イベント通知" +#: authentik/stages/email/models.py authentik/stages/invitation/models.py +msgid "Invitation" +msgstr "招待" + #: authentik/stages/email/models.py msgid "" "The time window used to count recent account recovery attempts. If the " @@ -4138,6 +4309,62 @@ msgstr "" "\n" "このメールは通知トランスポート %(name)s から送信されました。\n" +#: authentik/stages/email/templates/email/invitation.html +msgid "" +"\n" +" You're Invited!\n" +" " +msgstr "" + +#: authentik/stages/email/templates/email/invitation.html +#, python-format +msgid "" +"\n" +" You have been invited to join %(host)s. Click the button below to get started.\n" +" " +msgstr "" + +#: authentik/stages/email/templates/email/invitation.html +#, python-format +msgid "" +"\n" +" This invitation expires %(expires)s.\n" +" " +msgstr "" + +#: authentik/stages/email/templates/email/invitation.html +#: authentik/stages/email/templates/email/invitation.txt +msgid "Accept Invitation" +msgstr "" + +#: authentik/stages/email/templates/email/invitation.html +msgid "" +"\n" +" If you cannot click the button above, please copy and paste the following URL into your browser:\n" +" " +msgstr "" + +#: authentik/stages/email/templates/email/invitation.txt +msgid "You're Invited!" +msgstr "" + +#: authentik/stages/email/templates/email/invitation.txt +#, python-format +msgid "" +"You have been invited to join %(host)s. Use the link below to get started." +msgstr "" + +#: authentik/stages/email/templates/email/invitation.txt +#, python-format +msgid "This invitation expires %(expires)s." +msgstr "" + +#: authentik/stages/email/templates/email/invitation.txt +msgid "" +"If you cannot click the link above, please copy and paste the following URL " +"into your browser:" +msgstr "" + #: authentik/stages/email/templates/email/password_reset.html msgid "" "\n" @@ -4301,10 +4528,6 @@ msgstr "有効にすると、招待は使用後に削除されます。" msgid "Optional fixed data to enforce on user enrollment." msgstr "ユーザー登録に強制するオプショナル固定データ。" -#: authentik/stages/invitation/models.py -msgid "Invitation" -msgstr "招待" - #: authentik/stages/invitation/models.py msgid "Invitations" msgstr "招待" @@ -4415,6 +4638,18 @@ msgstr "非表示: 非表示フィールド、フォームにデータを挿入 msgid "Static: Static value, displayed as-is." msgstr "静的: 静的値、そのまま表示。" +#: authentik/stages/prompt/models.py +msgid "Alert (Info): Static alert box with info styling" +msgstr "" + +#: authentik/stages/prompt/models.py +msgid "Alert (Warning): Static alert box with warning styling" +msgstr "" + +#: authentik/stages/prompt/models.py +msgid "Alert (Danger): Static alert box with danger styling" +msgstr "" + #: authentik/stages/prompt/models.py msgid "authentik: Selection of locales authentik supports" msgstr "authentik: authentik がサポートするロケールの選択" diff --git a/locale/no_NO/LC_MESSAGES/django.mo b/locale/no_NO/LC_MESSAGES/django.mo new file mode 100644 index 0000000000..14a2ed1699 Binary files /dev/null and b/locale/no_NO/LC_MESSAGES/django.mo differ diff --git a/locale/no_NO/LC_MESSAGES/django.po b/locale/no_NO/LC_MESSAGES/django.po new file mode 100644 index 0000000000..febd9c4e15 --- /dev/null +++ b/locale/no_NO/LC_MESSAGES/django.po @@ -0,0 +1,5340 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +# Translators: +# Terje B, 2026 +# Raphael Cancelliere, 2026 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-05-06 00:27+0000\n" +"PO-Revision-Date: 2025-12-01 19:09+0000\n" +"Last-Translator: Raphael Cancelliere, 2026\n" +"Language-Team: Norwegian (Norway) (https://app.transifex.com/authentik/teams/119923/no_NO/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: no_NO\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: authentik/admin/files/api.py +#, python-brace-format +msgid "File size ({file.size}B) exceeds maximum allowed " +msgstr "Filstørrelsen ({file.size}B) overskrider tillatt maksimum " + +#: authentik/admin/files/validation.py +msgid "File name cannot be empty" +msgstr "Filnavn kan ikke være tomt" + +#: authentik/admin/files/validation.py +#, python-format +msgid "" +"File name can only contain letters (a-z, A-Z), numbers (0-9), dots (.), " +"hyphens (-), underscores (_), forward slashes (/), and the placeholder " +"%(theme)s for theme-specific files" +msgstr "" +"Filnavnet kan kun inneholde bokstaver (a-z, A-Z), tall (0-9), punktum (.), " +"bindestrek (-), understrek (_), skråstrek (/) og plassholderen %(theme)s for" +" temaspesifikke filer" + +#: authentik/admin/files/validation.py +msgid "File name cannot contain duplicate /" +msgstr "Filnavnet kan ikke inneholde doble /" + +#: authentik/admin/files/validation.py +msgid "Absolute paths are not allowed" +msgstr "Absolutte stier er ikke tillatt" + +#: authentik/admin/files/validation.py +msgid "Parent directory references ('..') are not allowed" +msgstr "Referanser til overordnet katalog ('..') er ikke tillatt" + +#: authentik/admin/files/validation.py +msgid "Paths cannot start with '.'" +msgstr "Stier kan ikke starte med '.'" + +#: authentik/admin/files/validation.py +#, python-brace-format +msgid "File name too long (max {MAX_FILE_NAME_LENGTH} characters)" +msgstr "Filnavnet er for langt (maks {MAX_FILE_NAME_LENGTH} tegn)" + +#: authentik/admin/files/validation.py +#, python-brace-format +msgid "Path component too long (max {MAX_PATH_COMPONENT_LENGTH} characters)" +msgstr "Stikomponenten er for lang (maks {MAX_PATH_COMPONENT_LENGTH} tegn)" + +#: authentik/admin/models.py +msgid "Version history" +msgstr "Versjonshistorikk" + +#: authentik/admin/tasks.py +msgid "Update latest version info." +msgstr "Oppdater siste versjonsinformasjon." + +#: authentik/admin/tasks.py +#, python-brace-format +msgid "New version {version} available!" +msgstr "Ny versjon {version} er tilgjengelig!" + +#: authentik/api/v3/schema/query.py +msgid "Which field to use when ordering the results." +msgstr "Hvilket felt som skal brukes ved sortering av resultatene." + +#: authentik/api/v3/schema/query.py +msgid "A page number within the paginated result set." +msgstr "Et sidenummer innenfor det paginerte resultatsettet." + +#: authentik/api/v3/schema/query.py +msgid "Number of results to return per page." +msgstr "Antall resultater som skal returneres per side." + +#: authentik/api/v3/schema/query.py +msgid "A search term." +msgstr "Et søkeord." + +#: authentik/api/v3/schema/response.py +msgid "Generic API Error" +msgstr "Generisk API-feil" + +#: authentik/api/v3/schema/response.py +msgid "Validation Error" +msgstr "Valideringsfeil" + +#: authentik/blueprints/api.py +msgid "Blueprint file does not exist" +msgstr "Blueprint-filen eksisterer ikke" + +#: authentik/blueprints/api.py +msgid "Context must be valid JSON" +msgstr "" + +#: authentik/blueprints/api.py +msgid "Context must be a JSON object" +msgstr "" + +#: authentik/blueprints/api.py +msgid "Failed to validate blueprint" +msgstr "Klarte ikke å validere blueprint" + +#: authentik/blueprints/api.py +msgid "Either path or content must be set." +msgstr "Enten sti eller innhold må være angitt." + +#: authentik/blueprints/api.py +#, python-brace-format +msgid "User lacks permission to create {model}" +msgstr "Brukeren mangler tillatelse til å opprette {model}" + +#: authentik/blueprints/models.py +msgid "Managed by authentik" +msgstr "Administreres av authentik" + +#: authentik/blueprints/models.py +msgid "" +"Objects that are managed by authentik. These objects are created and updated" +" automatically. This flag only indicates that an object can be overwritten " +"by migrations. You can still modify the objects via the API, but expect " +"changes to be overwritten in a later update." +msgstr "" +"Objekter som administreres av authentik. Disse objektene opprettes og " +"oppdateres automatisk. Dette flagget indikerer bare at et objekt kan " +"overskrives av migreringer. Du kan fortsatt endre objektene via API-et, men " +"forvent at endringer blir overskrevet i en senere oppdatering." + +#: authentik/blueprints/models.py +msgid "Blueprint Instance" +msgstr "Blueprint-instans" + +#: authentik/blueprints/models.py +msgid "Blueprint Instances" +msgstr "Blueprint-instanser" + +#: authentik/blueprints/v1/exporter.py +#, python-brace-format +msgid "authentik Export - {date}" +msgstr "authentik-eksport - {date}" + +#: authentik/blueprints/v1/tasks.py +msgid "Find blueprints as `blueprints_find` does, but return a safe dict." +msgstr "" +"Finn blueprints slik `blueprints_find` gjør, men returner en trygg dict." + +#: authentik/blueprints/v1/tasks.py +msgid "Find blueprints and check if they need to be created in the database." +msgstr "Finn blueprints og sjekk om de må opprettes i databasen." + +#: authentik/blueprints/v1/tasks.py +msgid "Apply single blueprint." +msgstr "Bruk enkelt blueprint." + +#: authentik/blueprints/v1/tasks.py +msgid "Remove blueprints which couldn't be fetched." +msgstr "Fjern blueprints som ikke kunne hentes." + +#: authentik/brands/models.py +msgid "" +"Domain that activates this brand. Can be a superset, i.e. `a.b` for `aa.b` " +"and `ba.b`" +msgstr "" +"Domene som aktiverer denne merkevaren. Kan være et supersett, f.eks. `a.b` " +"for `aa.b` og `ba.b`" + +#: authentik/brands/models.py +msgid "" +"When set, external users will be redirected to this application after " +"authenticating." +msgstr "" +"Når den er angitt, vil eksterne brukere bli omdirigert til denne " +"applikasjonen etter autentisering." + +#: authentik/brands/models.py +msgid "Web Certificate used by the authentik Core webserver." +msgstr "Websertifikat brukt av authentik Core-webserveren." + +#: authentik/brands/models.py +msgid "Certificates used for client authentication." +msgstr "Sertifikater brukt for klientautentisering." + +#: authentik/brands/models.py +msgid "Brand" +msgstr "Merkevare" + +#: authentik/brands/models.py +msgid "Brands" +msgstr "Merkevarer" + +#: authentik/common/oauth/constants.py +msgid "Based on the Hashed User ID" +msgstr "Basert på hashet bruker-ID" + +#: authentik/common/oauth/constants.py +msgid "Based on user ID" +msgstr "Basert på bruker-ID" + +#: authentik/common/oauth/constants.py +msgid "Based on user UUID" +msgstr "Basert på bruker-UUID" + +#: authentik/common/oauth/constants.py +msgid "Based on the username" +msgstr "Basert på brukernavnet" + +#: authentik/common/oauth/constants.py +msgid "Based on the User's Email. This is recommended over the UPN method." +msgstr "Basert på brukerens e-post. Dette anbefales fremfor UPN-metoden." + +#: authentik/common/oauth/constants.py +msgid "" +"Based on the User's UPN, only works if user has a 'upn' attribute set. Use " +"this method only if you have different UPN and Mail domains." +msgstr "" +"Basert på brukerens UPN, fungerer bare hvis brukeren har attributten 'upn' " +"satt. Bruk denne metoden kun hvis du har forskjellige UPN- og e-postdomener." + +#: authentik/core/api/application_entitlements.py +msgid "User does not have access to application." +msgstr "Brukeren har ikke tilgang til applikasjonen." + +#: authentik/core/api/applications.py +#, python-brace-format +msgid "The slug '{slug}' is reserved and cannot be used for applications." +msgstr "Slug-en '{slug}' er reservert og kan ikke brukes for applikasjoner." + +#: authentik/core/api/providers.py +msgid "" +"When not set all providers are returned. When set to true, only backchannel " +"providers are returned. When set to false, backchannel providers are " +"excluded" +msgstr "" +"Når ikke angitt, returneres alle leverandører. Når satt til true, returneres" +" kun backchannel-leverandører. Når satt til false, ekskluderes backchannel-" +"leverandører." + +#: authentik/core/api/users.py +msgid "Invalid password hash format. Must be a valid Django password hash." +msgstr "" + +#: authentik/core/api/users.py +msgid "Cannot set both password and password_hash. Use only one." +msgstr "" + +#: authentik/core/api/users.py +msgid "No leading or trailing slashes allowed." +msgstr "Ingen skråstreker i starten eller slutten er tillatt." + +#: authentik/core/api/users.py +msgid "No empty segments in user path allowed." +msgstr "Ingen tomme segmenter i brukerstien er tillatt." + +#: authentik/core/api/users.py +msgid "Can't change internal service account to other user type." +msgstr "Kan ikke endre intern tjenestekonto til annen brukertype." + +#: authentik/core/api/users.py +msgid "Setting a user to internal service account is not allowed." +msgstr "Det er ikke tillatt å sette en bruker til intern tjenestekonto." + +#: authentik/core/api/users.py +msgid "Can't modify internal service account users" +msgstr "Kan ikke endre brukere med intern tjenestekonto" + +#: authentik/core/api/users.py +msgid "filter: failed to parse JSON" +msgstr "filter: klarte ikke å analysere JSON" + +#: authentik/core/api/users.py +msgid "filter: value must be key:value mapping" +msgstr "filter: verdien må være en nøkkel:verdi-tilordning" + +#: authentik/core/api/users.py +msgid "No recovery flow set." +msgstr "Ingen gjenopprettingsflyt er angitt." + +#: authentik/core/api/users.py +msgid "Recovery flow not applicable to user" +msgstr "Gjenopprettingsflyt gjelder ikke for brukeren" + +#: authentik/core/api/users.py +msgid "A user/group with these details already exists" +msgstr "En bruker/gruppe med disse detaljene eksisterer allerede" + +#: authentik/core/api/users.py +msgid "Unable to create user" +msgstr "Klarte ikke å opprette bruker" + +#: authentik/core/api/users.py +msgid "Unknown error occurred" +msgstr "En ukjent feil oppstod" + +#: authentik/core/api/users.py +msgid "User does not have an email address set." +msgstr "Brukeren har ikke angitt en e-postadresse." + +#: authentik/core/api/users.py +msgid "Email stage not found." +msgstr "E-posttrinn ble ikke funnet." + +#: authentik/core/api/users.py +msgid "This field is required." +msgstr "Dette feltet er obligatorisk." + +#: authentik/core/apps.py +msgid "" +"Configure if applications without any policy/group/user bindings should be " +"accessible to any user." +msgstr "" +"Konfigurer om applikasjoner uten noen policy-/gruppe-/brukerbindinger skal " +"være tilgjengelige for enhver bruker." + +#: authentik/core/models.py +msgid "name" +msgstr "navn" + +#: authentik/core/models.py +msgid "Users added to this group will be superusers." +msgstr "Brukere som legges til i denne gruppen vil bli superbrukere." + +#: authentik/core/models.py +msgid "Group" +msgstr "Gruppe" + +#: authentik/core/models.py +msgid "Groups" +msgstr "Grupper" + +#: authentik/core/models.py +msgid "Add user to group" +msgstr "Legg bruker til gruppe" + +#: authentik/core/models.py +msgid "Remove user from group" +msgstr "Fjern bruker fra gruppe" + +#: authentik/core/models.py +msgid "Enable superuser status" +msgstr "Aktiver superbrukerstatus" + +#: authentik/core/models.py +msgid "Disable superuser status" +msgstr "Deaktiver superbrukerstatus" + +#: authentik/core/models.py +msgid "Group Parentage Node" +msgstr "Overordnet node for gruppe" + +#: authentik/core/models.py +msgid "Group Parentage Nodes" +msgstr "Overordnede noder for gruppe" + +#: authentik/core/models.py +msgid "User's display name." +msgstr "Brukerens visningsnavn." + +#: authentik/core/models.py authentik/providers/oauth2/models.py +#: authentik/providers/saml/models.py +msgid "User" +msgstr "Bruker" + +#: authentik/core/models.py +msgid "Users" +msgstr "Brukere" + +#: authentik/core/models.py +#: authentik/stages/email/templates/email/password_reset.html +msgid "Reset Password" +msgstr "Tilbakestill passord" + +#: authentik/core/models.py +msgid "Can impersonate other users" +msgstr "Kan utgi seg for å være andre brukere" + +#: authentik/core/models.py +msgid "Can preview user data sent to providers" +msgstr "Kan forhåndsvise brukerdata som sendes til leverandører" + +#: authentik/core/models.py +msgid "View applications the user has access to" +msgstr "Se applikasjoner brukeren har tilgang til" + +#: authentik/core/models.py +msgid "" +"Flow used for authentication when the associated application is accessed by " +"an un-authenticated user." +msgstr "" +"Flyt brukt for autentisering når den tilknyttede applikasjonen åpnes av en " +"uautentisert bruker." + +#: authentik/core/models.py +msgid "Flow used when authorizing this provider." +msgstr "Flyt brukt ved autorisering av denne leverandøren." + +#: authentik/core/models.py +msgid "Flow used ending the session from a provider." +msgstr "Flyt brukt ved avslutting av økten fra en leverandør." + +#: authentik/core/models.py +msgid "" +"Accessed from applications; optional backchannel providers for protocols " +"like LDAP and SCIM." +msgstr "" +"Tilgjengelig fra applikasjoner; valgfrie backchannel-leverandører for " +"protokoller som LDAP og SCIM." + +#: authentik/core/models.py +msgid "Application's display Name." +msgstr "Applikasjonens visningsnavn." + +#: authentik/core/models.py +msgid "Internal application name, used in URLs." +msgstr "Internt applikasjonsnavn, brukt i URL-er." + +#: authentik/core/models.py +msgid "Open launch URL in a new browser tab or window." +msgstr "Åpne start-URL i en ny nettleserfane eller -vindu." + +#: authentik/core/models.py +msgid "Hide this application from the user's My applications page." +msgstr "" + +#: authentik/core/models.py +msgid "Application" +msgstr "Applikasjon" + +#: authentik/core/models.py +msgid "Applications" +msgstr "Applikasjoner" + +#: authentik/core/models.py +msgid "Application Entitlement" +msgstr "Applikasjonsrettighet" + +#: authentik/core/models.py +msgid "Application Entitlements" +msgstr "Applikasjonsrettigheter" + +#: authentik/core/models.py +msgid "Use the source-specific identifier" +msgstr "Bruk den kildespesifikke identifikatoren" + +#: authentik/core/models.py +msgid "" +"Link to a user with identical email address. Can have security implications " +"when a source doesn't validate email addresses." +msgstr "" +"Koble til en bruker med identisk e-postadresse. Kan ha sikkerhetsmessige " +"konsekvenser når en kilde ikke validerer e-postadresser." + +#: authentik/core/models.py +msgid "" +"Use the user's email address, but deny enrollment when the email address " +"already exists." +msgstr "" +"Bruk brukerens e-postadresse, men nekt registrering når e-postadressen " +"allerede eksisterer." + +#: authentik/core/models.py +msgid "" +"Link to a user with identical username. Can have security implications when " +"a username is used with another source." +msgstr "" +"Koble til en bruker med identisk brukernavn. Kan ha sikkerhetsmessige " +"konsekvenser når et brukernavn brukes med en annen kilde." + +#: authentik/core/models.py +msgid "" +"Use the user's username, but deny enrollment when the username already " +"exists." +msgstr "" +"Bruk brukerens brukernavn, men nekt registrering når brukernavnet allerede " +"eksisterer." + +#: authentik/core/models.py +msgid "" +"Link to a group with identical name. Can have security implications when a " +"group name is used with another source." +msgstr "" +"Koble til en gruppe med identisk navn. Kan ha sikkerhetsmessige konsekvenser" +" når et gruppenavn brukes med en annen kilde." + +#: authentik/core/models.py +msgid "Use the group name, but deny enrollment when the name already exists." +msgstr "" +"Bruk gruppenavnet, men nekt registrering når navnet allerede eksisterer." + +#: authentik/core/models.py +msgid "Source's display Name." +msgstr "Kildens visningsnavn." + +#: authentik/core/models.py +msgid "Internal source name, used in URLs." +msgstr "Internt kildenavn, brukt i URL-er." + +#: authentik/core/models.py +msgid "" +"When enabled, this source will be displayed as a prominent button on the " +"login page, instead of a small icon." +msgstr "" +"Når aktivert, vil denne kilden vises som en fremtredende knapp på " +"innloggingssiden i stedet for et lite ikon." + +#: authentik/core/models.py +msgid "Flow to use when authenticating existing users." +msgstr "Flyt som skal brukes ved autentisering av eksisterende brukere." + +#: authentik/core/models.py +msgid "Flow to use when enrolling new users." +msgstr "Flyt som skal brukes ved registrering av nye brukere." + +#: authentik/core/models.py +msgid "" +"How the source determines if an existing user should be authenticated or a " +"new user enrolled." +msgstr "" +"Hvordan kilden avgjør om en eksisterende bruker skal autentiseres eller en " +"ny bruker registreres." + +#: authentik/core/models.py +msgid "" +"How the source determines if an existing group should be used or a new group" +" created." +msgstr "" +"Hvordan kilden avgjør om en eksisterende gruppe skal brukes eller en ny " +"gruppe opprettes." + +#: authentik/core/models.py authentik/providers/scim/models.py +msgid "Token" +msgstr "Token" + +#: authentik/core/models.py +msgid "Tokens" +msgstr "Tokens" + +#: authentik/core/models.py authentik/endpoints/connectors/agent/models.py +msgid "View token's key" +msgstr "Vis tokens nøkkel" + +#: authentik/core/models.py +msgid "Set a token's key" +msgstr "Angi en nøkkel for token" + +#: authentik/core/models.py +msgid "Property Mapping" +msgstr "Egenskapstilordning" + +#: authentik/core/models.py +msgid "Property Mappings" +msgstr "Egenskapstilordninger" + +#: authentik/core/models.py +msgid "session data" +msgstr "øktdata" + +#: authentik/core/models.py +msgid "Session" +msgstr "Økt" + +#: authentik/core/models.py +msgid "Sessions" +msgstr "Økter" + +#: authentik/core/models.py +msgid "Authenticated Session" +msgstr "Autentisert økt" + +#: authentik/core/models.py +msgid "Authenticated Sessions" +msgstr "Autentiserte økter" + +#: authentik/core/sources/flow_manager.py +#, python-brace-format +msgid "" +"Request to authenticate with {source} has been denied. Please authenticate " +"with the source you've previously signed up with." +msgstr "" +"Forespørsel om å autentisere med {source} ble avvist. Vennligst autentiser " +"med kilden du tidligere har registrert deg med." + +#: authentik/core/sources/flow_manager.py +msgid "Configured flow does not exist." +msgstr "Konfigurert flyt eksisterer ikke." + +#: authentik/core/sources/flow_manager.py +#, python-brace-format +msgid "Successfully authenticated with {source}!" +msgstr "Autentisering med {source} var vellykket!" + +#: authentik/core/sources/flow_manager.py +#, python-brace-format +msgid "Successfully linked {source}!" +msgstr "Tilkobling til {source} var vellykket!" + +#: authentik/core/sources/flow_manager.py +msgid "Source is not configured for enrollment." +msgstr "Kilden er ikke konfigurert for registrering." + +#: authentik/core/tasks.py +msgid "Remove expired objects." +msgstr "Fjern utløpte objekter." + +#: authentik/core/tasks.py +msgid "Remove temporary users created by SAML Sources." +msgstr "Fjern midlertidige brukere opprettet av SAML-kilder." + +#: authentik/core/templates/if/error.html +#: authentik/policies/templates/policies/denied.html +msgid "Go home" +msgstr "Gå til forsiden" + +#: authentik/core/templates/login/base_full.html +msgid "Site footer" +msgstr "Nettstedets bunntekst" + +#: authentik/core/templates/login/base_full.html +msgid "Flow links" +msgstr "Flyt-lenker" + +#: authentik/core/templates/login/base_full.html +#: authentik/flows/templates/if/flow-sfe.html +msgid "Powered by authentik" +msgstr "Drevet av authentik" + +#: authentik/core/views/apps.py +#: authentik/enterprise/providers/ws_federation/views.py +#: authentik/providers/oauth2/views/authorize.py +#: authentik/providers/oauth2/views/device_init.py +#: authentik/providers/saml/views/sso.py +#, python-format +msgid "You're about to sign into %(application)s." +msgstr "Du er i ferd med å logge inn på %(application)s." + +#: authentik/core/views/interface.py +msgid "Interface can only be accessed by internal users." +msgstr "Grensesnittet er kun tilgjengelig for interne brukere." + +#: authentik/crypto/api.py +msgid "Subject-alt name" +msgstr "Alternativt emnenavn" + +#: authentik/crypto/builder.py +msgid "rsa" +msgstr "rsa" + +#: authentik/crypto/builder.py +msgid "ecdsa" +msgstr "ecdsa" + +#: authentik/crypto/builder.py authentik/crypto/models.py +msgid "Ed25519" +msgstr "Ed25519" + +#: authentik/crypto/builder.py authentik/crypto/models.py +msgid "Ed448" +msgstr "Ed448" + +#: authentik/crypto/models.py +msgid "RSA" +msgstr "RSA" + +#: authentik/crypto/models.py +msgid "Elliptic Curve" +msgstr "Elliptisk kurve" + +#: authentik/crypto/models.py +msgid "DSA" +msgstr "DSA" + +#: authentik/crypto/models.py +msgid "PEM-encoded Certificate data" +msgstr "PEM-kodet sertifikatdata" + +#: authentik/crypto/models.py +msgid "" +"Optional Private Key. If this is set, you can use this keypair for " +"encryption." +msgstr "" +"Valgfri privat nøkkel. Hvis denne er angitt, kan du bruke dette nøkkelparet " +"for kryptering." + +#: authentik/crypto/models.py +msgid "Key algorithm type detected from the certificate's public key" +msgstr "Nøkkelalgoritmetype oppdaget fra sertifikatets offentlige nøkkel" + +#: authentik/crypto/models.py +msgid "Certificate expiry date" +msgstr "Sertifikatets utløpsdato" + +#: authentik/crypto/models.py +msgid "Certificate subject as RFC4514 string" +msgstr "Sertifikatemne som RFC4514-streng" + +#: authentik/crypto/models.py +msgid "SHA256 fingerprint of the certificate" +msgstr "SHA256-fingeravtrykk for sertifikatet" + +#: authentik/crypto/models.py +msgid "SHA1 fingerprint of the certificate" +msgstr "SHA1-fingeravtrykk for sertifikatet" + +#: authentik/crypto/models.py +msgid "Key ID generated from private key" +msgstr "Nøkkel-ID generert fra privat nøkkel" + +#: authentik/crypto/models.py +msgid "Certificate-Key Pair" +msgstr "Sertifikat-nøkkelpar" + +#: authentik/crypto/models.py +msgid "Certificate-Key Pairs" +msgstr "Sertifikat-nøkkelpar" + +#: authentik/crypto/models.py +msgid "View Certificate-Key pair's certificate" +msgstr "Vis sertifikatet til sertifikat-nøkkelparet" + +#: authentik/crypto/models.py +msgid "View Certificate-Key pair's private key" +msgstr "Vis den private nøkkelen til sertifikat-nøkkelparet" + +#: authentik/crypto/tasks.py +msgid "Discover, import and update certificates from the filesystem." +msgstr "Oppdag, importer og oppdater sertifikater fra filsystemet." + +#: authentik/endpoints/api/stages.py +msgid "Selected connector is not compatible with this stage." +msgstr "Valgt kobling er ikke kompatibel med dette trinnet." + +#: authentik/endpoints/connectors/agent/api/connectors.py +msgid "Selected platform not supported" +msgstr "Valgt plattform støttes ikke" + +#: authentik/endpoints/connectors/agent/api/connectors.py +msgid "Token is expired" +msgstr "Token er utløpt" + +#: authentik/endpoints/connectors/agent/api/connectors.py +msgid "Invalid token for connector" +msgstr "Ugyldig token for kobling" + +#: authentik/endpoints/connectors/agent/models.py +msgid "Agent Connector" +msgstr "Agent-kobling" + +#: authentik/endpoints/connectors/agent/models.py +msgid "Agent Connectors" +msgstr "Agent-koblinger" + +#: authentik/endpoints/connectors/agent/models.py +#: authentik/providers/oauth2/models.py +msgid "Device Token" +msgstr "Enhetstoken" + +#: authentik/endpoints/connectors/agent/models.py +#: authentik/providers/oauth2/models.py +msgid "Device Tokens" +msgstr "Enhetstokener" + +#: authentik/endpoints/connectors/agent/models.py +msgid "Enrollment Token" +msgstr "Registreringstoken" + +#: authentik/endpoints/connectors/agent/models.py +msgid "Enrollment Tokens" +msgstr "Registreringstokener" + +#: authentik/endpoints/connectors/agent/models.py +msgid "Device authentication token" +msgstr "Enhetsautentiseringstoken" + +#: authentik/endpoints/connectors/agent/models.py +msgid "Device authentication tokens" +msgstr "Enhetsautentiseringstokener" + +#: authentik/endpoints/connectors/agent/models.py +msgid "Apple Nonce" +msgstr "Apple Nonce" + +#: authentik/endpoints/connectors/agent/models.py +msgid "Apple Nonces" +msgstr "Apple Nonces" + +#: authentik/endpoints/connectors/agent/models.py +msgid "Apple Independent Secure Enclave" +msgstr "Apple Independent Secure Enclave" + +#: authentik/endpoints/connectors/agent/models.py +msgid "Apple Independent Secure Enclaves" +msgstr "Apple Independent Secure Enclaves" + +#: authentik/endpoints/facts.py +msgid "Operating System name, such as 'Server 2022' or 'Ubuntu'" +msgstr "Operativsystemnavn, som 'Server 2022' eller 'Ubuntu'" + +#: authentik/endpoints/facts.py +msgid "" +"Operating System version, must always be the version number but may contain " +"build name" +msgstr "" +"Operativsystemversjon, må alltid være versjonsnummeret, men kan inneholde " +"byggnavn" + +#: authentik/endpoints/models.py +msgid "Device" +msgstr "Enhet" + +#: authentik/endpoints/models.py +msgid "Devices" +msgstr "Enheter" + +#: authentik/endpoints/models.py +msgid "Device User binding" +msgstr "Enhetsbrukerbinding" + +#: authentik/endpoints/models.py +msgid "Device User bindings" +msgstr "Enhetsbrukerbindinger" + +#: authentik/endpoints/models.py +msgid "Device connection" +msgstr "Enhetstilkobling" + +#: authentik/endpoints/models.py +msgid "Device connections" +msgstr "Enhetstilkoblinger" + +#: authentik/endpoints/models.py +msgid "Device fact snapshot" +msgstr "Øyeblikksbilde av enhetsfakta" + +#: authentik/endpoints/models.py +msgid "Device fact snapshots" +msgstr "Øyeblikksbilder av enhetsfakta" + +#: authentik/endpoints/models.py +msgid "Device access group" +msgstr "Tilgangsgruppe for enhet" + +#: authentik/endpoints/models.py +msgid "Device access groups" +msgstr "Tilgangsgrupper for enhet" + +#: authentik/endpoints/models.py +msgid "Endpoint Stage" +msgstr "Endepunktstrinn" + +#: authentik/endpoints/models.py +msgid "Endpoint Stages" +msgstr "Endepunktstrinn" + +#: authentik/endpoints/tasks.py +msgid "Sync endpoints." +msgstr "Synkroniser endepunkter." + +#: authentik/enterprise/api.py +msgid "Enterprise is required to create/update this object." +msgstr "Enterprise kreves for å opprette/oppdatere dette objektet." + +#: authentik/enterprise/api.py +msgid "Enterprise is required to use this endpoint." +msgstr "Enterprise kreves for å bruke dette endepunktet." + +#: authentik/enterprise/audit/apps.py +msgid "" +"Include additional information in audit logs, may incur a performance " +"penalty." +msgstr "" +"Inkluder tilleggsinformasjon i revisjonslogger, kan påvirke ytelsen " +"negativt." + +#: authentik/enterprise/endpoints/connectors/fleet/models.py +#: authentik/events/models.py +msgid "" +"Configure additional headers to be sent. Mapping should return a dictionary " +"of key-value pairs" +msgstr "" +"Konfigurer ekstra overskrifter som skal sendes. Tilordningen bør returnere " +"en dictionary med nøkkel-verdi-par" + +#: authentik/enterprise/endpoints/connectors/fleet/models.py +msgid "Fleet Connector" +msgstr "Fleet-kobling" + +#: authentik/enterprise/endpoints/connectors/fleet/models.py +msgid "Fleet Connectors" +msgstr "Fleet-koblinger" + +#: authentik/enterprise/endpoints/connectors/google_chrome/models.py +msgid "Google Device Trust Connector" +msgstr "Google Device Trust-kobling" + +#: authentik/enterprise/endpoints/connectors/google_chrome/models.py +msgid "Google Device Trust Connectors" +msgstr "Google Device Trust-koblinger" + +#: authentik/enterprise/endpoints/connectors/google_chrome/stage.py +#: authentik/enterprise/stages/authenticator_endpoint_gdtc/stage.py +msgid "Verifying your browser..." +msgstr "Verifiserer nettleseren din..." + +#: authentik/enterprise/lifecycle/api/reviews.py +msgid "You are not allowed to submit a review for this object." +msgstr "" +"Du har ikke tillatelse til å sende inn en vurdering for dette objektet." + +#: authentik/enterprise/lifecycle/api/rules.py +msgid "Object does not exist" +msgstr "Objektet eksisterer ikke" + +#: authentik/enterprise/lifecycle/api/rules.py +msgid "Either a reviewer group or a reviewer must be set." +msgstr "Enten en vurderingsgruppe eller en vurderer må være angitt." + +#: authentik/enterprise/lifecycle/api/rules.py +msgid "Grace period must be shorter than the interval." +msgstr "Respittiden må være kortere enn intervallet." + +#: authentik/enterprise/lifecycle/models.py +msgid "" +"Select which transports should be used to notify the reviewers. If none are " +"selected, the notification will only be shown in the authentik UI." +msgstr "" +"Velg hvilke transporter som skal brukes for å varsle vurdererne. Hvis ingen " +"er valgt, vil varselet kun vises i authentik-brukergrensesnittet." + +#: authentik/enterprise/lifecycle/models.py +msgid "Reviewed" +msgstr "Vurdert" + +#: authentik/enterprise/lifecycle/models.py +msgid "Pending" +msgstr "Venter" + +#: authentik/enterprise/lifecycle/models.py +msgid "Overdue" +msgstr "Forfalt" + +#: authentik/enterprise/lifecycle/models.py +msgid "Canceled" +msgstr "Avbrutt" + +#: authentik/enterprise/lifecycle/models.py +msgid "Go to {self._get_model_name()}" +msgstr "Gå til {self._get_model_name()}" + +#: authentik/enterprise/lifecycle/models.py +msgid "" +"Access review is due for {self.content_type.name.lower()} {object_label}" +msgstr "" + +#: authentik/enterprise/lifecycle/models.py +msgid "" +"Access review is overdue for {self.content_type.name} {str(self.object)}" +msgstr "" +"Tilgangsvurdering har forfalt for {self.content_type.name} " +"{str(self.object)}" + +#: authentik/enterprise/lifecycle/models.py +msgid "" +"Access review completed for {self.content_type.name} {str(self.object)}" +msgstr "" +"Tilgangsvurdering fullført for {self.content_type.name} {str(self.object)}" + +#: authentik/enterprise/lifecycle/tasks.py +msgid "Dispatch tasks to apply lifecycle rules." +msgstr "" + +#: authentik/enterprise/lifecycle/tasks.py +msgid "Apply lifecycle rule." +msgstr "Bruk livssyklusregel." + +#: authentik/enterprise/lifecycle/tasks.py +msgid "Send lifecycle rule notification." +msgstr "Send varsel for livssyklusregel." + +#: authentik/enterprise/models.py +msgid "License" +msgstr "Lisens" + +#: authentik/enterprise/models.py +msgid "Licenses" +msgstr "Lisenser" + +#: authentik/enterprise/models.py +msgid "License Usage" +msgstr "Lisensbruk" + +#: authentik/enterprise/models.py +msgid "License Usage Records" +msgstr "Lisensbruksposter" + +#: authentik/enterprise/policies/unique_password/models.py +#: authentik/policies/password/models.py +msgid "Field key to check, field keys defined in Prompt stages are available." +msgstr "" +"Feltnøkkel som skal sjekkes, feltnøkler definert i Prompt-trinn er " +"tilgjengelige." + +#: authentik/enterprise/policies/unique_password/models.py +msgid "Number of passwords to check against." +msgstr "Antall passord som skal sjekkes mot." + +#: authentik/enterprise/policies/unique_password/models.py +#: authentik/policies/password/models.py +msgid "Password not set in context" +msgstr "Passord ikke angitt i kontekst" + +#: authentik/enterprise/policies/unique_password/models.py +msgid "This password has been used previously. Please choose a different one." +msgstr "Dette passordet har blitt brukt tidligere. Vennligst velg et annet." + +#: authentik/enterprise/policies/unique_password/models.py +msgid "Password Uniqueness Policy" +msgstr "Policy for passordunikhet" + +#: authentik/enterprise/policies/unique_password/models.py +msgid "Password Uniqueness Policies" +msgstr "Policyer for passordunikhet" + +#: authentik/enterprise/policies/unique_password/models.py +msgid "User Password History" +msgstr "Brukerens passordhistorikk" + +#: authentik/enterprise/policies/unique_password/tasks.py +msgid "" +"Check if any UniquePasswordPolicy exists, and if not, purge the password " +"history table." +msgstr "" +"Sjekk om en UniquePasswordPolicy eksisterer, og hvis ikke, tøm passord-" +"historikktabellen." + +#: authentik/enterprise/policies/unique_password/tasks.py +msgid "Remove user password history that are too old." +msgstr "Fjern brukerpassordhistorikk som er for gammel." + +#: authentik/enterprise/policy.py +msgid "Enterprise required to access this feature." +msgstr "Enterprise kreves for å få tilgang til denne funksjonen." + +#: authentik/enterprise/policy.py +msgid "Feature only accessible for internal users." +msgstr "Funksjonen er kun tilgjengelig for interne brukere." + +#: authentik/enterprise/providers/google_workspace/models.py +msgid "Google Workspace Provider User" +msgstr "Google Workspace-leverandørbruker" + +#: authentik/enterprise/providers/google_workspace/models.py +msgid "Google Workspace Provider Users" +msgstr "Google Workspace-leverandørbrukere" + +#: authentik/enterprise/providers/google_workspace/models.py +msgid "Google Workspace Provider Group" +msgstr "Google Workspace-leverandørgruppe" + +#: authentik/enterprise/providers/google_workspace/models.py +msgid "Google Workspace Provider Groups" +msgstr "Google Workspace-leverandørgrupper" + +#: authentik/enterprise/providers/google_workspace/models.py +#: authentik/enterprise/providers/microsoft_entra/models.py +#: authentik/providers/scim/models.py +msgid "Property mappings used for group creation/updating." +msgstr "" +"Egenskapstilordninger som brukes for opprettelse/oppdatering av grupper." + +#: authentik/enterprise/providers/google_workspace/models.py +msgid "Google Workspace Provider" +msgstr "Google Workspace-leverandør" + +#: authentik/enterprise/providers/google_workspace/models.py +msgid "Google Workspace Providers" +msgstr "Google Workspace-leverandører" + +#: authentik/enterprise/providers/google_workspace/models.py +msgid "Google Workspace Provider Mapping" +msgstr "Google Workspace-leverandørtilordning" + +#: authentik/enterprise/providers/google_workspace/models.py +msgid "Google Workspace Provider Mappings" +msgstr "Google Workspace-leverandørtilordninger" + +#: authentik/enterprise/providers/google_workspace/tasks.py +msgid "Sync Google Workspace provider objects." +msgstr "Synkroniser Google Workspace-leverandørobjekter." + +#: authentik/enterprise/providers/google_workspace/tasks.py +msgid "Full sync for Google Workspace provider." +msgstr "Full synkronisering for Google Workspace-leverandør." + +#: authentik/enterprise/providers/google_workspace/tasks.py +msgid "Sync a direct object (user, group) for Google Workspace provider." +msgstr "" +"Synkroniser et direkte objekt (bruker, gruppe) for Google Workspace-" +"leverandør." + +#: authentik/enterprise/providers/google_workspace/tasks.py +msgid "" +"Dispatch deletions for an object (user, group) for Google Workspace " +"providers." +msgstr "" +"Send ut slettinger for et objekt (bruker, gruppe) for Google Workspace-" +"leverandører." + +#: authentik/enterprise/providers/google_workspace/tasks.py +msgid "Delete an object (user, group) for Google Workspace provider." +msgstr "Slett et objekt (bruker, gruppe) for Google Workspace-leverandør." + +#: authentik/enterprise/providers/google_workspace/tasks.py +msgid "" +"Dispatch syncs for a direct object (user, group) for Google Workspace " +"providers." +msgstr "" +"Send ut synkroniseringer for et direkte objekt (bruker, gruppe) for Google " +"Workspace-leverandører." + +#: authentik/enterprise/providers/google_workspace/tasks.py +msgid "Sync a related object (memberships) for Google Workspace provider." +msgstr "" +"Synkroniser et relatert objekt (medlemskap) for Google Workspace-leverandør." + +#: authentik/enterprise/providers/google_workspace/tasks.py +msgid "" +"Dispatch syncs for a related object (memberships) for Google Workspace " +"providers." +msgstr "" +"Send ut synkroniseringer for et relatert objekt (medlemskap) for Google " +"Workspace-leverandører." + +#: authentik/enterprise/providers/microsoft_entra/models.py +msgid "Microsoft Entra Provider User" +msgstr "Microsoft Entra-leverandørbruker" + +#: authentik/enterprise/providers/microsoft_entra/models.py +msgid "Microsoft Entra Provider Group" +msgstr "Microsoft Entra-leverandørgruppe" + +#: authentik/enterprise/providers/microsoft_entra/models.py +msgid "Microsoft Entra Provider Groups" +msgstr "Microsoft Entra-leverandørgrupper" + +#: authentik/enterprise/providers/microsoft_entra/models.py +msgid "Microsoft Entra Provider" +msgstr "Microsoft Entra-leverandør" + +#: authentik/enterprise/providers/microsoft_entra/models.py +msgid "Microsoft Entra Providers" +msgstr "Microsoft Entra-leverandører" + +#: authentik/enterprise/providers/microsoft_entra/models.py +msgid "Microsoft Entra Provider Mapping" +msgstr "Microsoft Entra-leverandørtilordning" + +#: authentik/enterprise/providers/microsoft_entra/models.py +msgid "Microsoft Entra Provider Mappings" +msgstr "Microsoft Entra-leverandørtilordninger" + +#: authentik/enterprise/providers/microsoft_entra/tasks.py +msgid "Sync Microsoft Entra provider objects." +msgstr "Synkroniser Microsoft Entra-leverandørobjekter." + +#: authentik/enterprise/providers/microsoft_entra/tasks.py +msgid "Full sync for Microsoft Entra provider." +msgstr "Full synkronisering for Microsoft Entra-leverandør." + +#: authentik/enterprise/providers/microsoft_entra/tasks.py +msgid "Sync a direct object (user, group) for Microsoft Entra provider." +msgstr "" +"Synkroniser et direkte objekt (bruker, gruppe) for Microsoft Entra-" +"leverandør." + +#: authentik/enterprise/providers/microsoft_entra/tasks.py +msgid "" +"Dispatch syncs for a direct object (user, group) for Microsoft Entra " +"providers." +msgstr "" +"Send ut synkroniseringer for et direkte objekt (bruker, gruppe) for " +"Microsoft Entra-leverandører." + +#: authentik/enterprise/providers/microsoft_entra/tasks.py +msgid "Delete an object (user, group) for Microsoft Entra provider." +msgstr "Slett et objekt (bruker, gruppe) for Microsoft Entra-leverandør." + +#: authentik/enterprise/providers/microsoft_entra/tasks.py +msgid "" +"Dispatch deletions for an object (user, group) for Microsoft Entra " +"providers." +msgstr "" +"Send ut slettinger for et objekt (bruker, gruppe) for Microsoft Entra-" +"leverandører." + +#: authentik/enterprise/providers/microsoft_entra/tasks.py +msgid "Sync a related object (memberships) for Microsoft Entra provider." +msgstr "" +"Synkroniser et relatert objekt (medlemskap) for Microsoft Entra-leverandør." + +#: authentik/enterprise/providers/microsoft_entra/tasks.py +msgid "" +"Dispatch syncs for a related object (memberships) for Microsoft Entra " +"providers." +msgstr "" +"Send ut synkroniseringer for et relatert objekt (medlemskap) for Microsoft " +"Entra-leverandører." + +#: authentik/enterprise/providers/radius/api.py +msgid "Enterprise is required to use EAP-TLS." +msgstr "Enterprise kreves for å bruke EAP-TLS." + +#: authentik/enterprise/providers/scim/api.py +msgid "Enterprise is required to use the OAuth mode." +msgstr "Enterprise kreves for å bruke OAuth-modus." + +#: authentik/enterprise/providers/ssf/models.py +msgid "SSF RFC Push" +msgstr "SSF RFC Push" + +#: authentik/enterprise/providers/ssf/models.py +msgid "SSF RFC Pull" +msgstr "SSF RFC Pull" + +#: authentik/enterprise/providers/ssf/models.py +#: authentik/providers/oauth2/models.py +msgid "Signing Key" +msgstr "Signeringsnøkkel" + +#: authentik/enterprise/providers/ssf/models.py +msgid "Key used to sign the SSF Events." +msgstr "Nøkkel som brukes til å signere SSF-hendelser." + +#: authentik/enterprise/providers/ssf/models.py +msgid "Shared Signals Framework Provider" +msgstr "Shared Signals Framework-leverandør" + +#: authentik/enterprise/providers/ssf/models.py +msgid "Shared Signals Framework Providers" +msgstr "Shared Signals Framework-leverandører" + +#: authentik/enterprise/providers/ssf/models.py +msgid "Add stream to SSF provider" +msgstr "Legg til strøm i SSF-leverandør" + +#: authentik/enterprise/providers/ssf/models.py +msgid "SSF Stream" +msgstr "SSF-strøm" + +#: authentik/enterprise/providers/ssf/models.py +msgid "SSF Streams" +msgstr "SSF-strømmer" + +#: authentik/enterprise/providers/ssf/models.py +msgid "SSF Stream Event" +msgstr "SSF-strømhendelse" + +#: authentik/enterprise/providers/ssf/models.py +msgid "SSF Stream Events" +msgstr "SSF-strømhendelser" + +#: authentik/enterprise/providers/ssf/tasks.py +msgid "Dispatch SSF events." +msgstr "Send ut SSF-hendelser." + +#: authentik/enterprise/providers/ssf/tasks.py +msgid "Send an SSF event." +msgstr "Send en SSF-hendelse." + +#: authentik/enterprise/providers/ws_federation/models.py +msgid "WS-Federation Provider" +msgstr "WS-Federation-leverandør" + +#: authentik/enterprise/providers/ws_federation/models.py +msgid "WS-Federation Providers" +msgstr "WS-Federation-leverandører" + +#: authentik/enterprise/providers/ws_federation/views.py +#: authentik/providers/oauth2/views/authorize.py +#: authentik/providers/saml/views/flows.py +#, python-brace-format +msgid "Redirecting to {app}..." +msgstr "Omdirigerer til {app}..." + +#: authentik/enterprise/reports/models.py +msgid "Data Export" +msgstr "Eksport av data" + +#: authentik/enterprise/reports/models.py +msgid "Data Exports" +msgstr "Eksporter av data" + +#: authentik/enterprise/reports/models.py +#, python-brace-format +msgid "{model_verbose_name} export generated successfully" +msgstr "Eksport av {model_verbose_name} ble generert" + +#: authentik/enterprise/reports/models.py +msgid "Download" +msgstr "Last ned" + +#: authentik/enterprise/reports/tasks.py +msgid "Generate data export." +msgstr "Generer eksport av data." + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "User to lock. If omitted, locks the current user (self-service)." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "No lockdown flow configured." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "Lockdown flow is not applicable." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "Choose the target account, then return a flow link." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "No lockdown flow configured or the flow is not applicable" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "Permission denied (when targeting another user)" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Deactivate the user account (set is_active to False)" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Set an unusable password for the user" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Delete all active sessions for the user" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "" +"Revoke all tokens for the user (API, app password, recovery, verification, " +"OAuth)" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "" +"Flow to redirect users to after self-service lockdown. This flow should not " +"require authentication since the user's session is deleted." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Account Lockdown Stage" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Account Lockdown Stages" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/stage.py +msgid "No target user specified for account lockdown" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/stage.py +msgid "You do not have permission to lock down this account." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/stage.py +msgid "Account lockdown failed for this account." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/stage.py +msgid "Self-service account lockdown requires a completion flow." +msgstr "" + +#: authentik/enterprise/stages/authenticator_endpoint_gdtc/models.py +msgid "Endpoint Authenticator Google Device Trust Connector Stage" +msgstr "Trinn for endepunktautentisering via Google Device Trust-kobling" + +#: authentik/enterprise/stages/authenticator_endpoint_gdtc/models.py +msgid "Endpoint Authenticator Google Device Trust Connector Stages" +msgstr "Trinn for endepunktautentisering via Google Device Trust-koblinger" + +#: authentik/enterprise/stages/authenticator_endpoint_gdtc/models.py +msgid "Endpoint Device" +msgstr "Endepunktsenhet" + +#: authentik/enterprise/stages/authenticator_endpoint_gdtc/models.py +msgid "Endpoint Devices" +msgstr "Endepunktsenheter" + +#: authentik/enterprise/stages/mtls/models.py +msgid "" +"Configure certificate authorities to validate the certificate against. This " +"option has a higher priority than the `client_certificate` option on " +"`Brand`." +msgstr "" +"Konfigurer sertifikatautoriteter for å validere sertifikatet mot. Dette " +"alternativet har høyere prioritet enn alternativet `client_certificate` for " +"`Brand`." + +#: authentik/enterprise/stages/mtls/models.py +msgid "Mutual TLS Stage" +msgstr "Mutual TLS-trinn" + +#: authentik/enterprise/stages/mtls/models.py +msgid "Mutual TLS Stages" +msgstr "Mutual TLS-trinn" + +#: authentik/enterprise/stages/mtls/models.py +msgid "Permissions to pass Certificates for outposts." +msgstr "Tillatelser for å sende sertifikater for forposter." + +#: authentik/enterprise/stages/mtls/stage.py +msgid "Certificate required but no certificate was given." +msgstr "Sertifikat er påkrevd, men intet sertifikat ble oppgitt." + +#: authentik/enterprise/stages/mtls/stage.py +msgid "No user found for certificate." +msgstr "Ingen bruker funnet for sertifikatet." + +#: authentik/enterprise/stages/source/models.py +msgid "" +"Amount of time a user can take to return from the source to continue the " +"flow (Format: hours=-1;minutes=-2;seconds=-3)" +msgstr "" +"Hvor lang tid en bruker kan bruke på å returnere fra kilden for å fortsette " +"flyten (Format: timer=-1;minutter=-2;sekunder=-3)" + +#: authentik/enterprise/stages/source/models.py +msgid "Source Stage" +msgstr "Kildetrinn" + +#: authentik/enterprise/stages/source/models.py +msgid "Source Stages" +msgstr "Kildetrinn" + +#: authentik/enterprise/tasks.py +msgid "Update enterprise license status." +msgstr "Oppdater lisensstatus for Enterprise." + +#: authentik/events/models.py +msgid "Event" +msgstr "Hendelse" + +#: authentik/events/models.py +msgid "Events" +msgstr "Hendelser" + +#: authentik/events/models.py +msgid "authentik inbuilt notifications" +msgstr "innebygde varsler i authentik" + +#: authentik/events/models.py +msgid "Generic Webhook" +msgstr "Generell Webhook" + +#: authentik/events/models.py +msgid "Slack Webhook (Slack/Discord)" +msgstr "Slack Webhook (Slack/Discord)" + +#: authentik/events/models.py +#: authentik/stages/authenticator_validate/models.py +msgid "Email" +msgstr "E-post" + +#: authentik/events/models.py +msgid "" +"Only send notification once, for example when sending a webhook into a chat " +"channel." +msgstr "" +"Send varselet bare én gang, for eksempel når du sender en webhook til en " +"chattekanal." + +#: authentik/events/models.py +msgid "" +"When set, the selected ceritifcate is used to validate the certificate of " +"the webhook server." +msgstr "" +"Når det er angitt, brukes det valgte sertifikatet til å validere " +"sertifikatet til webhook-serveren." + +#: authentik/events/models.py +msgid "" +"Customize the body of the request. Mapping should return data that is JSON-" +"serializable." +msgstr "" +"Tilpass hoveddelen av forespørselen. Tilordningen bør returnere data som er " +"JSON-serialiserbare." + +#: authentik/events/models.py +msgid "Severity" +msgstr "Alvorlighetsgrad" + +#: authentik/events/models.py +msgid "Dispatched for user" +msgstr "Sendt ut for bruker" + +#: authentik/events/models.py +msgid "Event user" +msgstr "Hendelsesbruker" + +#: authentik/events/models.py +msgid "Notification Transport" +msgstr "Varslingstransport" + +#: authentik/events/models.py +msgid "Notification Transports" +msgstr "Varslingstransporter" + +#: authentik/events/models.py +msgid "Notice" +msgstr "Melding" + +#: authentik/events/models.py +msgid "Warning" +msgstr "Advarsel" + +#: authentik/events/models.py +msgid "Alert" +msgstr "Varsel" + +#: authentik/events/models.py +msgid "Notification" +msgstr "Varsling" + +#: authentik/events/models.py +msgid "Notifications" +msgstr "Varslinger" + +#: authentik/events/models.py +msgid "" +"Select which transports should be used to notify the user. If none are " +"selected, the notification will only be shown in the authentik UI." +msgstr "" +"Velg hvilke transporter som skal brukes for å varsle brukeren. Hvis ingen er" +" valgt, vil varselet bare vises i authentik-brukergrensesnittet." + +#: authentik/events/models.py +msgid "Controls which severity level the created notifications will have." +msgstr "Styrer hvilket alvorlighetsnivå de opprettede varslingene skal ha." + +#: authentik/events/models.py +msgid "" +"Define which group of users this notification should be sent and shown to. " +"If left empty, Notification won't ben sent." +msgstr "" +"Definer hvilken brukergruppe dette varselet skal sendes og vises til. Hvis " +"den står tom, sendes ikke varselet." + +#: authentik/events/models.py +msgid "" +"When enabled, notification will be sent to user the user that triggered the " +"event.When destination_group is configured, notification is sent to both." +msgstr "" +"Når det er aktivert, vil det bli sendt en varsling til brukeren som utløste " +"hendelsen. Når destination_group er konfigurert, sendes varslingen til " +"begge." + +#: authentik/events/models.py +msgid "Notification Rule" +msgstr "Varslingsregel" + +#: authentik/events/models.py +msgid "Notification Rules" +msgstr "Varslingsregler" + +#: authentik/events/models.py +msgid "Webhook Mapping" +msgstr "Webhook-tilordning" + +#: authentik/events/models.py +msgid "Webhook Mappings" +msgstr "Webhook-tilordninger" + +#: authentik/events/tasks.py +msgid "Dispatch new event notifications." +msgstr "Send ut nye hendelsesvarsler." + +#: authentik/events/tasks.py +msgid "" +"Check if policies attached to NotificationRule match event and dispatch " +"notification tasks." +msgstr "" +"Sjekk om policyer knyttet til varslingsregler samsvarer med hendelsen og " +"send ut varslingsoppgaver." + +#: authentik/events/tasks.py +msgid "Send notification." +msgstr "Send varsel." + +#: authentik/events/tasks.py +msgid "Cleanup events for GDPR compliance." +msgstr "Rydd opp i hendelser for GDPR-samsvar." + +#: authentik/events/tasks.py +msgid "Cleanup seen notifications and notifications whose event expired." +msgstr "Rydd opp i leste varsler og varsler der hendelsen er utløpt." + +#: authentik/flows/api/flows.py +#, python-brace-format +msgid "Flow not applicable to current user/request: {messages}" +msgstr "Flyten gjelder ikke for gjeldende bruker/forespørsel: {messages}" + +#: authentik/flows/api/flows_diagram.py +#, python-brace-format +msgid "Policy ({type})" +msgstr "Policy ({type})" + +#: authentik/flows/api/flows_diagram.py +#, python-brace-format +msgid "Binding {order}" +msgstr "Binding {order}" + +#: authentik/flows/api/flows_diagram.py +msgid "Policy passed" +msgstr "Policy bestått" + +#: authentik/flows/api/flows_diagram.py +#, python-brace-format +msgid "Stage ({type})" +msgstr "Trinn ({type})" + +#: authentik/flows/api/flows_diagram.py +msgid "Policy denied" +msgstr "Policy avvist" + +#: authentik/flows/api/flows_diagram.py +msgid "End of the flow" +msgstr "Slutten på flyten" + +#: authentik/flows/api/flows_diagram.py +msgid "Requirement not fulfilled" +msgstr "Kravet er ikke oppfylt" + +#: authentik/flows/api/flows_diagram.py +msgid "Flow authentication requirement" +msgstr "Krav til flytautentisering" + +#: authentik/flows/api/flows_diagram.py +msgid "Requirement fulfilled" +msgstr "Krav oppfylt" + +#: authentik/flows/api/flows_diagram.py +msgid "Pre-flow policies" +msgstr "Policyer før flyt" + +#: authentik/flows/api/flows_diagram.py authentik/flows/models.py +msgid "Flow" +msgstr "Flyt" + +#: authentik/flows/apps.py +msgid "Refresh other tabs after successful authentication." +msgstr "Oppdater andre faner etter vellykket autentisering." + +#: authentik/flows/apps.py +msgid "" +"Upon successful authentication, re-start authentication in other open tabs." +msgstr "" +"Ved vellykket autentisering, start autentisering på nytt i andre åpne faner." + +#: authentik/flows/exceptions.py +msgid "Flow does not apply to current user." +msgstr "Flyten gjelder ikke for gjeldende bruker." + +#: authentik/flows/models.py +#, python-brace-format +msgid "Dynamic In-memory stage: {doc}" +msgstr "Dynamisk minnetrinn: {doc}" + +#: authentik/flows/models.py +msgid "Visible in the URL." +msgstr "Synlig i URL-en." + +#: authentik/flows/models.py +msgid "Shown as the Title in Flow pages." +msgstr "Vises som tittel på flyt-sider." + +#: authentik/flows/models.py +msgid "" +"Decides what this Flow is used for. For example, the Authentication flow is " +"redirect to when an un-authenticated user visits authentik." +msgstr "" +"Avgjør hva denne flyten brukes til. For eksempel omdirigeres " +"autentiseringsflyten til når en uautentisert bruker besøker authentik." + +#: authentik/flows/models.py +msgid "Background shown during execution" +msgstr "Bakgrunn som vises under kjøring" + +#: authentik/flows/models.py +msgid "" +"Enable compatibility mode, increases compatibility with password managers on" +" mobile devices." +msgstr "" +"Aktiver kompatibilitetsmodus, øker kompatibiliteten med passordbehandlere på" +" mobile enheter." + +#: authentik/flows/models.py +msgid "Configure what should happen when a flow denies access to a user." +msgstr "Konfigurer hva som skal skje når en flyt nekter en bruker tilgang." + +#: authentik/flows/models.py +msgid "Required level of authentication and authorization to access a flow." +msgstr "" +"Påkrevd nivå av autentisering og autorisering for å få tilgang til en flyt." + +#: authentik/flows/models.py +msgid "Flows" +msgstr "Flyter" + +#: authentik/flows/models.py +msgid "Can export a Flow" +msgstr "Kan eksportere en flyt" + +#: authentik/flows/models.py +msgid "Can inspect a Flow's execution" +msgstr "Kan inspisere kjøringen av en flyt" + +#: authentik/flows/models.py +msgid "View Flow's cache metrics" +msgstr "Se cache-målinger for flyt" + +#: authentik/flows/models.py +msgid "Clear Flow's cache metrics" +msgstr "Tøm cache-målinger for flyt" + +#: authentik/flows/models.py +msgid "Evaluate policies during the Flow planning process." +msgstr "Evaluer policyer under planleggingsprosessen for flyten." + +#: authentik/flows/models.py +msgid "Evaluate policies when the Stage is presented to the user." +msgstr "Evaluer policyer når trinnet presenteres for brukeren." + +#: authentik/flows/models.py +msgid "" +"Configure how the flow executor should handle an invalid response to a " +"challenge. RETRY returns the error message and a similar challenge to the " +"executor. RESTART restarts the flow from the beginning, and " +"RESTART_WITH_CONTEXT restarts the flow while keeping the current context." +msgstr "" +"Konfigurer hvordan flytkjøreren skal håndtere et ugyldig svar på en " +"utfordring. RETRY returnerer feilmeldingen og en lignende utfordring til " +"kjøreren. RESTART starter flyten på nytt fra begynnelsen, og " +"RESTART_WITH_CONTEXT starter flyten på nytt samtidig som gjeldende kontekst " +"beholdes." + +#: authentik/flows/models.py +msgid "Flow Stage Binding" +msgstr "Binding for flyttrinn" + +#: authentik/flows/models.py +msgid "Flow Stage Bindings" +msgstr "Bindinger for flyttrinn" + +#: authentik/flows/models.py +msgid "" +"Flow used by an authenticated user to configure this Stage. If empty, user " +"will not be able to configure this stage." +msgstr "" +"Flyt som brukes av en autentisert bruker for å konfigurere dette trinnet. " +"Hvis tomt, vil brukeren ikke kunne konfigurere dette trinnet." + +#: authentik/flows/models.py +msgid "Flow Token" +msgstr "Flyt-token" + +#: authentik/flows/models.py +msgid "Flow Tokens" +msgstr "Flyt-tokener" + +#: authentik/flows/planner.py +msgid "This link is invalid or has expired. Please request a new one." +msgstr "Denne lenken er ugyldig eller har utløpt. Vennligst be om en ny." + +#: authentik/flows/views/executor.py +msgid "Invalid next URL" +msgstr "Ugyldig neste URL" + +#: authentik/lib/sync/incoming/models.py +msgid "When to trigger sync for outgoing providers" +msgstr "Når synkronisering for utgående leverandører skal utløses" + +#: authentik/lib/sync/outgoing/models.py +msgid "Controls the number of objects synced in a single task" +msgstr "Styrer antall objekter som synkroniseres i en enkelt oppgave" + +#: authentik/lib/sync/outgoing/models.py +msgid "Timeout for synchronization of a single page" +msgstr "Tidsavbrudd for synkronisering av en enkelt side" + +#: authentik/lib/sync/outgoing/models.py +msgid "" +"When enabled, provider will not modify or create objects in the remote " +"system." +msgstr "" +"Når det er aktivert, vil ikke leverandøren endre eller opprette objekter i " +"det eksterne systemet." + +#: authentik/lib/utils/time.py +#, python-format +msgid "%(value)s is not in the correct format of 'hours=3;minutes=1'." +msgstr "%(value)s er ikke i riktig format av 'hours=3;minutes=1'." + +#: authentik/lib/validators.py +#, python-brace-format +msgid "The fields {field_names} must be used together." +msgstr "Feltene {field_names} må brukes sammen." + +#: authentik/outposts/api/service_connections.py +msgid "" +"You can only use an empty kubeconfig when connecting to a local cluster." +msgstr "" +"Du kan bare bruke en tom kubeconfig når du kobler til en lokal klynge." + +#: authentik/outposts/api/service_connections.py +msgid "Invalid kubeconfig" +msgstr "Ugyldig kubeconfig" + +#: authentik/outposts/models.py +msgid "" +"If enabled, use the local connection. Required Docker socket/Kubernetes " +"Integration" +msgstr "" +"Hvis aktivert, bruk den lokale tilkoblingen. Krever Docker-" +"socket/Kubernetes-integrasjon" + +#: authentik/outposts/models.py +msgid "Outpost Service-Connection" +msgstr "Tjenestetilkobling for forpost" + +#: authentik/outposts/models.py +msgid "Outpost Service-Connections" +msgstr "Tjenestetilkoblinger for forpost" + +#: authentik/outposts/models.py +msgid "" +"Can be in the format of 'unix://' when connecting to a local docker " +"daemon, or 'https://:2376' when connecting to a remote system." +msgstr "" +"Kan være i formatet 'unix://' ved tilkobling til en lokal docker-" +"nisse, eller 'https://:2376' ved tilkobling til et eksternt " +"system." + +#: authentik/outposts/models.py +msgid "" +"CA which the endpoint's Certificate is verified against. Can be left empty " +"for no validation." +msgstr "" +"CA som endepunktets sertifikat verifiseres mot. Kan stå tom for ingen " +"validering." + +#: authentik/outposts/models.py +msgid "" +"Certificate/Key used for authentication. Can be left empty for no " +"authentication." +msgstr "" +"Sertifikat/nøkkel som brukes til autentisering. Kan stå tom for ingen " +"autentisering." + +#: authentik/outposts/models.py +msgid "Docker Service-Connection" +msgstr "Docker-tjenestetilkobling" + +#: authentik/outposts/models.py +msgid "Docker Service-Connections" +msgstr "Docker-tjenestetilkoblinger" + +#: authentik/outposts/models.py +msgid "" +"Paste your kubeconfig here. authentik will automatically use the currently " +"selected context." +msgstr "" +"Lim inn din kubeconfig her. authentik vil automatisk bruke den valgte " +"konteksten." + +#: authentik/outposts/models.py +msgid "Verify SSL Certificates of the Kubernetes API endpoint" +msgstr "Verifiser SSL-sertifikater for Kubernetes API-endepunktet" + +#: authentik/outposts/models.py +msgid "Kubernetes Service-Connection" +msgstr "Kubernetes-tjenestetilkobling" + +#: authentik/outposts/models.py +msgid "Kubernetes Service-Connections" +msgstr "Kubernetes-tjenestetilkoblinger" + +#: authentik/outposts/models.py +msgid "" +"Select Service-Connection authentik should use to manage this outpost. Leave" +" empty if authentik should not handle the deployment." +msgstr "" +"Velg tjenestetilkoblingen authentik skal bruke for å administrere denne " +"forposten. La feltet stå tomt hvis authentik ikke skal håndtere utrullingen." + +#: authentik/outposts/models.py +msgid "Outpost" +msgstr "Forpost" + +#: authentik/outposts/models.py +msgid "Outposts" +msgstr "Forposter" + +#: authentik/outposts/tasks.py +msgid "Update cached state of service connection." +msgstr "Oppdater bufret tilstand for tjenestetilkobling." + +#: authentik/outposts/tasks.py +msgid "Create/update/monitor/delete the deployment of an Outpost." +msgstr "Opprett/oppdater/overvåk/slett utrullingen av en forpost." + +#: authentik/outposts/tasks.py +msgid "Ensure that all Outposts have valid Service Accounts and Tokens." +msgstr "Sikre at alle forposter har gyldige tjenestekontoer og tokener." + +#: authentik/outposts/tasks.py +msgid "Send update to outpost" +msgstr "Send oppdatering til forpost" + +#: authentik/outposts/tasks.py +msgid "Checks the local environment and create Service connections." +msgstr "Sjekker det lokale miljøet og oppretter tjenestetilkoblinger." + +#: authentik/outposts/tasks.py +msgid "Terminate session on all outposts." +msgstr "Avslutt økt på alle forposter." + +#: authentik/policies/denied.py +msgid "Access denied" +msgstr "Ingen tilgang" + +#: authentik/policies/dummy/models.py +msgid "Dummy Policy" +msgstr "Dummy-policy" + +#: authentik/policies/dummy/models.py +msgid "Dummy Policies" +msgstr "Dummy-policyer" + +#: authentik/policies/event_matcher/api.py +#: authentik/policies/event_matcher/models.py +msgid "" +"Match events created by selected application. When left empty, all " +"applications are matched." +msgstr "" +"Samsvar med hendelser opprettet av valgt applikasjon. Når feltet er tomt, " +"samsvarer alle applikasjoner." + +#: authentik/policies/event_matcher/api.py +#: authentik/policies/event_matcher/models.py +msgid "" +"Match events created by selected model. When left empty, all models are " +"matched. When an app is selected, all the application's models are matched." +msgstr "" +"Samsvar med hendelser opprettet av valgt modell. Når feltet er tomt, " +"samsvarer alle modeller. Når en app er valgt, samsvarer alle applikasjonens " +"modeller." + +#: authentik/policies/event_matcher/api.py +msgid "At least one criteria must be set." +msgstr "Minst ett kriterium må angis." + +#: authentik/policies/event_matcher/models.py +msgid "" +"Match created events with this action type. When left empty, all action " +"types will be matched." +msgstr "" +"Samsvar med opprettede hendelser med denne handlingstypen. Når feltet er " +"tomt, vil alle handlingstyper samsvare." + +#: authentik/policies/event_matcher/models.py +msgid "" +"Matches Event's Client IP (strict matching, for network matching use an " +"Expression Policy)" +msgstr "" +"Samsvarer med hendelsens klient-IP (strengt samsvar, for nettverkssamsvar " +"bruk en uttrykkspolicy)" + +#: authentik/policies/event_matcher/models.py +msgid "Event Matcher Policy" +msgstr "Policy for hendelsessamsvar" + +#: authentik/policies/event_matcher/models.py +msgid "Event Matcher Policies" +msgstr "Policyer for hendelsessamsvar" + +#: authentik/policies/expiry/models.py +#, python-brace-format +msgid "Password expired {days} days ago. Please update your password." +msgstr "" +"Passordet utløp for {days} dager siden. Vennligst oppdater passordet ditt." + +#: authentik/policies/expiry/models.py +msgid "Password has expired." +msgstr "Passordet har utløpt." + +#: authentik/policies/expiry/models.py +msgid "Password Expiry Policy" +msgstr "Policy for passordutløp" + +#: authentik/policies/expiry/models.py +msgid "Password Expiry Policies" +msgstr "Policyer for passordutløp" + +#: authentik/policies/expression/models.py +msgid "Expression Policy" +msgstr "Uttrykkspolicy" + +#: authentik/policies/expression/models.py +msgid "Expression Policies" +msgstr "Uttrykkspolicyer" + +#: authentik/policies/geoip/models.py +msgid "GeoIP: client IP not found in ASN database." +msgstr "GeoIP: klient-IP ikke funnet i ASN-databasen." + +#: authentik/policies/geoip/models.py +msgid "Client IP is not part of an allowed autonomous system." +msgstr "Klient-IP er ikke en del av et tillatt autonomt system." + +#: authentik/policies/geoip/models.py +msgid "GeoIP: client IP address not found in City database." +msgstr "GeoIP: klient-IP-adresse ikke funnet i bydatabasen." + +#: authentik/policies/geoip/models.py +msgid "Client IP is not in an allowed country." +msgstr "Klient-IP er ikke i et tillatt land." + +#: authentik/policies/geoip/models.py +msgid "Distance from previous authentication is larger than threshold." +msgstr "Avstanden fra forrige autentisering er større enn terskelverdien." + +#: authentik/policies/geoip/models.py +msgid "Distance is further than possible." +msgstr "Avstanden er lengre enn mulig." + +#: authentik/policies/geoip/models.py +msgid "GeoIP Policy" +msgstr "GeoIP-policy" + +#: authentik/policies/geoip/models.py +msgid "GeoIP Policies" +msgstr "GeoIP-policyer" + +#: authentik/policies/models.py +msgid "all, all policies must pass" +msgstr "alle, alle policyer må bestås" + +#: authentik/policies/models.py +msgid "any, any policy must pass" +msgstr "enhver, minst én policy må bestås" + +#: authentik/policies/models.py +msgid "Policy Binding Model" +msgstr "Policybindingsmodell" + +#: authentik/policies/models.py +msgid "Policy Binding Models" +msgstr "Policybindingsmodeller" + +#: authentik/policies/models.py +msgid "Negates the outcome of the policy. Messages are unaffected." +msgstr "Inverterer utfallet av policyen. Meldinger påvirkes ikke." + +#: authentik/policies/models.py +msgid "Timeout after which Policy execution is terminated." +msgstr "Tidsavbrudd for når kjøring av policy avsluttes." + +#: authentik/policies/models.py +msgid "Result if the Policy execution fails." +msgstr "Resultat hvis kjøring av policy feiler." + +#: authentik/policies/models.py +msgid "Policy Binding" +msgstr "Policybinding" + +#: authentik/policies/models.py +msgid "Policy Bindings" +msgstr "Policybindinger" + +#: authentik/policies/models.py +msgid "" +"When this option is enabled, all executions of this policy will be logged. " +"By default, only execution errors are logged." +msgstr "" +"Når dette alternativet er aktivert, logges alle kjøringer av denne policyen." +" Som standard logges kun kjøringsfeil." + +#: authentik/policies/models.py +msgid "Policy" +msgstr "Policy" + +#: authentik/policies/models.py +msgid "Policies" +msgstr "Policyer" + +#: authentik/policies/models.py +msgid "View Policy's cache metrics" +msgstr "Vis cache-målinger for policy" + +#: authentik/policies/models.py +msgid "Clear Policy's cache metrics" +msgstr "Tøm cache-målinger for policy" + +#: authentik/policies/password/models.py +msgid "How many times the password hash is allowed to be on haveibeenpwned" +msgstr "Hvor mange ganger passord-hashen kan være på haveibeenpwned" + +#: authentik/policies/password/models.py +msgid "" +"If the zxcvbn score is equal or less than this value, the policy will fail." +msgstr "" +"Hvis zxcvbn-poengsummen er lik eller lavere enn denne verdien, vil policyen " +"feile." + +#: authentik/policies/password/models.py +msgid "Invalid password." +msgstr "Ugyldig passord." + +#: authentik/policies/password/models.py +#, python-brace-format +msgid "Password exists on {count} online lists." +msgstr "Passordet eksisterer på {count} lister på nettet." + +#: authentik/policies/password/models.py +msgid "Password is too weak." +msgstr "Passordet er for svakt." + +#: authentik/policies/password/models.py +msgid "Password Policy" +msgstr "Passordpolicy" + +#: authentik/policies/password/models.py +msgid "Password Policies" +msgstr "Passordpolicyer" + +#: authentik/policies/reputation/api.py +msgid "Either IP or Username must be checked" +msgstr "Enten IP eller brukernavn må sjekkes" + +#: authentik/policies/reputation/models.py +msgid "Reputation Policy" +msgstr "Omdømmepolicy" + +#: authentik/policies/reputation/models.py +msgid "Reputation Policies" +msgstr "Omdømmepolicyer" + +#: authentik/policies/reputation/models.py +msgid "Reputation Score" +msgstr "Omdømmepoengsum" + +#: authentik/policies/reputation/models.py +msgid "Reputation Scores" +msgstr "Omdømmepoengsummer" + +#: authentik/policies/templates/policies/denied.html +msgid "Permission denied" +msgstr "Ingen tilgang" + +#: authentik/policies/templates/policies/denied.html +msgid "User's avatar" +msgstr "Brukerens avatar" + +#: authentik/policies/templates/policies/denied.html +msgid "Not you?" +msgstr "Ikke deg?" + +#: authentik/policies/templates/policies/denied.html +msgid "Error" +msgstr "Feil" + +#: authentik/policies/templates/policies/denied.html +msgid "Request has been denied." +msgstr "Forespørselen har blitt avvist." + +#: authentik/policies/templates/policies/denied.html +msgid "Messages:" +msgstr "Meldinger:" + +#: authentik/policies/templates/policies/denied.html +msgid "Explanation:" +msgstr "Forklaring:" + +#: authentik/policies/templates/policies/denied.html +#, python-format +msgid "" +"\n" +" Policy binding '%(name)s' returned result '%(result)s'\n" +" " +msgstr "" +"\n" +" Policybinding '%(name)s' returnerte resultatet '%(result)s'\n" +" " + +#: authentik/policies/views.py +msgid "Failed to resolve application" +msgstr "Klarte ikke å identifisere applikasjonen" + +#: authentik/providers/ldap/models.py +msgid "DN under which objects are accessible." +msgstr "DN som objekter er tilgjengelige under." + +#: authentik/providers/ldap/models.py +msgid "" +"The start for uidNumbers, this number is added to the user.pk to make sure " +"that the numbers aren't too low for POSIX users. Default is 2000 to ensure " +"that we don't collide with local users uidNumber" +msgstr "" +"Starten for uidNumbers, dette tallet legges til user.pk for å sikre at " +"tallene ikke er for lave for POSIX-brukere. Standarden er 2000 for å sikre " +"at vi ikke kolliderer med lokale brukeres uidNumber" + +#: authentik/providers/ldap/models.py +msgid "" +"The start for gidNumbers, this number is added to a number generated from " +"the group.pk to make sure that the numbers aren't too low for POSIX groups. " +"Default is 4000 to ensure that we don't collide with local groups or users " +"primary groups gidNumber" +msgstr "" +"Starten for gidNumbers, dette tallet legges til et tall generert fra " +"group.pk for å sikre at tallene ikke er for lave for POSIX-grupper. " +"Standarden er 4000 for å sikre at vi ikke kolliderer med lokale grupper " +"eller brukeres primærgruppers gidNumber" + +#: authentik/providers/ldap/models.py authentik/providers/radius/models.py +msgid "" +"When enabled, code-based multi-factor authentication can be used by " +"appending a semicolon and the TOTP code to the password. This should only be" +" enabled if all users that will bind to this provider have a TOTP device " +"configured, as otherwise a password may incorrectly be rejected if it " +"contains a semicolon." +msgstr "" +"Når dette er aktivert, kan kodebasert flerfaktorautentisering brukes ved å " +"legge til et semikolon og TOTP-koden på slutten av passordet. Dette bør bare" +" aktiveres hvis alle brukere som skal knyttes til denne leverandøren har en " +"TOTP-enhet konfigurert, da et passord ellers feilaktig kan bli avvist hvis " +"det inneholder et semikolon." + +#: authentik/providers/ldap/models.py +msgid "LDAP Provider" +msgstr "LDAP-leverandør" + +#: authentik/providers/ldap/models.py +msgid "LDAP Providers" +msgstr "LDAP-leverandører" + +#: authentik/providers/ldap/models.py +msgid "Search full LDAP directory" +msgstr "Søk i hele LDAP-katalogen" + +#: authentik/providers/oauth2/api/providers.py +#, python-brace-format +msgid "Invalid Regex Pattern: {url}" +msgstr "Ugyldig Regex-mønster: {url}" + +#: authentik/providers/oauth2/models.py +msgid "Confidential" +msgstr "Konfidensiell" + +#: authentik/providers/oauth2/models.py +msgid "Public" +msgstr "Offentlig" + +#: authentik/providers/oauth2/models.py +msgid "Same identifier is used for all providers" +msgstr "Samme identifikator brukes for alle leverandører" + +#: authentik/providers/oauth2/models.py +msgid "Each provider has a different issuer, based on the application slug." +msgstr "Hver leverandør har en annen utsteder, basert på applikasjonens slug." + +#: authentik/providers/oauth2/models.py +msgid "Strict URL comparison" +msgstr "Streng URL-sammenligning" + +#: authentik/providers/oauth2/models.py +msgid "Regular Expression URL matching" +msgstr "URL-samsvar med regulært uttrykk" + +#: authentik/providers/oauth2/models.py +msgid "Authorization" +msgstr "Autorisasjon" + +#: authentik/providers/oauth2/models.py +msgid "Logout" +msgstr "Utlogging" + +#: authentik/providers/oauth2/models.py +msgid "Back-channel" +msgstr "Backchannel" + +#: authentik/providers/oauth2/models.py +msgid "Front-channel" +msgstr "Frontchannel" + +#: authentik/providers/oauth2/models.py +msgid "code (Authorization Code Flow)" +msgstr "code (Autorisasjonskodeflyt)" + +#: authentik/providers/oauth2/models.py +msgid "id_token (Implicit Flow)" +msgstr "id_token (Implisitt flyt)" + +#: authentik/providers/oauth2/models.py +msgid "id_token token (Implicit Flow)" +msgstr "id_token token (Implisitt flyt)" + +#: authentik/providers/oauth2/models.py +msgid "code token (Hybrid Flow)" +msgstr "code token (Hybrid flyt)" + +#: authentik/providers/oauth2/models.py +msgid "code id_token (Hybrid Flow)" +msgstr "code id_token (Hybrid flyt)" + +#: authentik/providers/oauth2/models.py +msgid "code id_token token (Hybrid Flow)" +msgstr "code id_token token (Hybrid flyt)" + +#: authentik/providers/oauth2/models.py +msgid "HS256 (Symmetric Encryption)" +msgstr "HS256 (Symmetrisk kryptering)" + +#: authentik/providers/oauth2/models.py +msgid "RS256 (Asymmetric Encryption)" +msgstr "RS256 (Asymmetrisk kryptering)" + +#: authentik/providers/oauth2/models.py +msgid "ES256 (Asymmetric Encryption)" +msgstr "ES256 (Asymmetrisk kryptering)" + +#: authentik/providers/oauth2/models.py +msgid "ES384 (Asymmetric Encryption)" +msgstr "ES384 (Asymmetrisk kryptering)" + +#: authentik/providers/oauth2/models.py +msgid "ES512 (Asymmetric Encryption)" +msgstr "ES512 (Asymmetrisk kryptering)" + +#: authentik/providers/oauth2/models.py +msgid "Scope used by the client" +msgstr "Scope brukt av klienten" + +#: authentik/providers/oauth2/models.py +msgid "" +"Description shown to the user when consenting. If left empty, the user won't" +" be informed." +msgstr "" +"Beskrivelse som vises til brukeren ved samtykke. Hvis den står tom, vil ikke" +" brukeren bli informert." + +#: authentik/providers/oauth2/models.py +msgid "Scope Mapping" +msgstr "Scope-tilordning" + +#: authentik/providers/oauth2/models.py +msgid "Scope Mappings" +msgstr "Scope-tilordninger" + +#: authentik/providers/oauth2/models.py +msgid "Client Type" +msgstr "Klienttype" + +#: authentik/providers/oauth2/models.py +msgid "" +"Confidential clients are capable of maintaining the confidentiality of their" +" credentials. Public clients are incapable" +msgstr "" +"Konfidensielle klienter kan opprettholde konfidensialiteten til " +"påloggingsinformasjonen sin. Offentlige klienter kan ikke dette" + +#: authentik/providers/oauth2/models.py +msgid "Client ID" +msgstr "Klient-ID" + +#: authentik/providers/oauth2/models.py +msgid "Client Secret" +msgstr "Klienthemmelighet" + +#: authentik/providers/oauth2/models.py +msgid "Redirect URIs" +msgstr "Omdirigerings-URI-er" + +#: authentik/providers/oauth2/models.py +msgid "Logout URI" +msgstr "Utloggings-URI" + +#: authentik/providers/oauth2/models.py +msgid "Logout Method" +msgstr "Utloggingsmetode" + +#: authentik/providers/oauth2/models.py +msgid "" +"Backchannel logs out with server to server calls. Frontchannel uses iframes " +"in your browser" +msgstr "" +"Backchannel logger ut med server-til-server-anrop. Frontchannel bruker " +"iframes i nettleseren din" + +#: authentik/providers/oauth2/models.py +msgid "Include claims in id_token" +msgstr "Inkluder claims i id_token" + +#: authentik/providers/oauth2/models.py +msgid "" +"Include User claims from scopes in the id_token, for applications that don't" +" access the userinfo endpoint." +msgstr "" +"Inkluder bruker-claims fra scopes i id_token, for applikasjoner som ikke har" +" tilgang til userinfo-endepunktet." + +#: authentik/providers/oauth2/models.py +msgid "" +"Access codes not valid on or after current time + this value (Format: " +"hours=1;minutes=2;seconds=3)." +msgstr "" +"Tilgangskoder er ikke gyldige på eller etter gjeldende tidspunkt + denne " +"verdien (Format: hours=1;minutes=2;seconds=3)." + +#: authentik/providers/oauth2/models.py +msgid "" +"Tokens not valid on or after current time + this value (Format: " +"hours=1;minutes=2;seconds=3)." +msgstr "" +"Tokener er ikke gyldige på eller etter gjeldende tidspunkt + denne verdien " +"(Format: hours=1;minutes=2;seconds=3)." + +#: authentik/providers/oauth2/models.py +msgid "" +"When refreshing a token, if the refresh token is valid for less than this " +"duration, it will be renewed. When set to seconds=0, token will always be " +"renewed. (Format: hours=1;minutes=2;seconds=3)." +msgstr "" +"Ved fornyelse av et token, hvis refresh-tokenet er gyldig i mindre enn denne" +" varigheten, vil det bli fornyet. Når satt til seconds=0, vil tokenet alltid" +" bli fornyet. (Format: hours=1;minutes=2;seconds=3)." + +#: authentik/providers/oauth2/models.py +msgid "" +"Configure what data should be used as unique User Identifier. For most " +"cases, the default should be fine." +msgstr "" +"Konfigurer hvilke data som skal brukes som unik brukeridentifikator. I de " +"fleste tilfeller bør standardverdien fungere fint." + +#: authentik/providers/oauth2/models.py +msgid "Configure how the issuer field of the ID Token should be filled." +msgstr "Konfigurer hvordan utsteder-feltet i ID-tokenet skal fylles ut." + +#: authentik/providers/oauth2/models.py +msgid "Key used to sign the tokens." +msgstr "Nøkkel som brukes til å signere tokenene." + +#: authentik/providers/oauth2/models.py +msgid "Encryption Key" +msgstr "Krypteringsnøkkel" + +#: authentik/providers/oauth2/models.py +msgid "" +"Key used to encrypt the tokens. When set, tokens will be encrypted and " +"returned as JWEs." +msgstr "" +"Nøkkel som brukes til å kryptere tokenene. Når denne er angitt, vil tokener " +"krypteres og returneres som JWE-er." + +#: authentik/providers/oauth2/models.py +msgid "" +"Any JWT signed by the JWK of the selected source can be used to " +"authenticate." +msgstr "" +"Enhver JWT signert av JWK-en til den valgte kilden kan brukes til å " +"autentisere." + +#: authentik/providers/oauth2/models.py +msgid "OAuth2/OpenID Provider" +msgstr "OAuth2/OpenID-leverandør" + +#: authentik/providers/oauth2/models.py +msgid "OAuth2/OpenID Providers" +msgstr "OAuth2/OpenID-leverandører" + +#: authentik/providers/oauth2/models.py +msgid "Scopes" +msgstr "Scopes" + +#: authentik/providers/oauth2/models.py +msgid "Code" +msgstr "Kode" + +#: authentik/providers/oauth2/models.py +msgid "Nonce" +msgstr "Nonce" + +#: authentik/providers/oauth2/models.py +msgid "Code Challenge" +msgstr "Kodeutfordring" + +#: authentik/providers/oauth2/models.py +msgid "Code Challenge Method" +msgstr "Kodeutfordringsmetode" + +#: authentik/providers/oauth2/models.py +msgid "Authorization Code" +msgstr "Autorisasjonskode" + +#: authentik/providers/oauth2/models.py +msgid "Authorization Codes" +msgstr "Autorisasjonskoder" + +#: authentik/providers/oauth2/models.py +msgid "OAuth2 Access Token" +msgstr "OAuth2 tilgangstoken" + +#: authentik/providers/oauth2/models.py +msgid "OAuth2 Access Tokens" +msgstr "OAuth2 tilgangstokener" + +#: authentik/providers/oauth2/models.py +msgid "ID Token" +msgstr "ID-token" + +#: authentik/providers/oauth2/models.py +msgid "OAuth2 Refresh Token" +msgstr "OAuth2 refresh-token" + +#: authentik/providers/oauth2/models.py +msgid "OAuth2 Refresh Tokens" +msgstr "OAuth2 refresh-tokener" + +#: authentik/providers/oauth2/tasks.py +msgid "Send a back-channel logout request to the registered client" +msgstr "" +"Send en backchannel-utloggingsforespørsel til den registrerte klienten" + +#: authentik/providers/oauth2/tasks.py +msgid "Handle backchannel logout notifications dispatched via signal" +msgstr "Håndter backchannel-utloggingsvarsler sendt via signal" + +#: authentik/providers/oauth2/views/device_init.py +msgid "Invalid code" +msgstr "Ugyldig kode" + +#: authentik/providers/oauth2/views/userinfo.py +msgid "GitHub Compatibility: Access your User Information" +msgstr "GitHub-kompatibilitet: Få tilgang til din brukerinformasjon" + +#: authentik/providers/oauth2/views/userinfo.py +msgid "GitHub Compatibility: Access you Email addresses" +msgstr "GitHub-kompatibilitet: Få tilgang til dine e-postadresser" + +#: authentik/providers/oauth2/views/userinfo.py +msgid "GitHub Compatibility: Access your Groups" +msgstr "GitHub-kompatibilitet: Få tilgang til dine grupper" + +#: authentik/providers/proxy/api.py +msgid "User and password attributes must be set when basic auth is enabled." +msgstr "Bruker- og passordattributter må angis når basic auth er aktivert." + +#: authentik/providers/proxy/api.py +msgid "Internal host cannot be empty when forward auth is disabled." +msgstr "Intern vert kan ikke være tom når forward auth er deaktivert." + +#: authentik/providers/proxy/models.py +msgid "Proxy Session" +msgstr "Proxy-økt" + +#: authentik/providers/proxy/models.py +msgid "Proxy Sessions" +msgstr "Proxy-økter" + +#: authentik/providers/proxy/models.py +msgid "Validate SSL Certificates of upstream servers" +msgstr "Valider SSL-sertifikater for oppstrømsservere" + +#: authentik/providers/proxy/models.py +msgid "Internal host SSL Validation" +msgstr "SSL-validering for intern vert" + +#: authentik/providers/proxy/models.py +msgid "" +"Enable support for forwardAuth in traefik and nginx auth_request. Exclusive " +"with internal_host." +msgstr "" +"Aktiver støtte for forwardAuth i traefik og nginx auth_request. Eksklusivt " +"med internal_host." + +#: authentik/providers/proxy/models.py +msgid "" +"Regular expressions for which authentication is not required. Each new line " +"is interpreted as a new Regular Expression." +msgstr "" +"Regulære uttrykk som ikke krever autentisering. Hver ny linje tolkes som et " +"nytt regulært uttrykk." + +#: authentik/providers/proxy/models.py +msgid "" +"When enabled, this provider will intercept the authorization header and " +"authenticate requests based on its value." +msgstr "" +"Når aktivert, vil denne tilbyderen fange opp autorisasjonshodet og " +"autentisere forespørsler basert på verdien." + +#: authentik/providers/proxy/models.py +msgid "Set HTTP-Basic Authentication" +msgstr "Angi HTTP-Basic autentisering" + +#: authentik/providers/proxy/models.py +msgid "" +"Set a custom HTTP-Basic Authentication header based on values from " +"authentik." +msgstr "" +"Angi en tilpasset HTTP-Basic Authentication-overskrift basert på verdier fra" +" authentik." + +#: authentik/providers/proxy/models.py +msgid "HTTP-Basic Username Key" +msgstr "HTTP-Basic brukernavn-nøkkel" + +#: authentik/providers/proxy/models.py +msgid "" +"User/Group Attribute used for the user part of the HTTP-Basic Header. If not" +" set, the user's Email address is used." +msgstr "" +"Bruker-/gruppeattributt brukt for brukerdelen av HTTP-Basic-overskriften. " +"Hvis ikke angitt, brukes brukerens e-postadresse." + +#: authentik/providers/proxy/models.py +msgid "HTTP-Basic Password Key" +msgstr "HTTP-Basic passord-nøkkel" + +#: authentik/providers/proxy/models.py +msgid "" +"User/Group Attribute used for the password part of the HTTP-Basic Header." +msgstr "" +"Bruker-/gruppeattributt brukt for passorddelen av HTTP-Basic-overskriften." + +#: authentik/providers/proxy/models.py +msgid "Proxy Provider" +msgstr "Proxy-leverandør" + +#: authentik/providers/proxy/models.py +msgid "Proxy Providers" +msgstr "Proxy-leverandører" + +#: authentik/providers/rac/models.py authentik/stages/user_login/models.py +msgid "" +"Determines how long a session lasts. Default of 0 means that the sessions " +"lasts until the browser is closed. (Format: hours=-1;minutes=-2;seconds=-3)" +msgstr "" +"Bestemmer hvor lenge en økt varer. Standarden 0 betyr at økten varer til " +"nettleseren lukkes. (Format: hours=-1;minutes=-2;seconds=-3)" + +#: authentik/providers/rac/models.py +msgid "When set to true, connection tokens will be deleted upon disconnect." +msgstr "Når satt til true, vil tilkoblingstokener slettes ved frakobling." + +#: authentik/providers/rac/models.py +msgid "RAC Provider" +msgstr "RAC-leverandør" + +#: authentik/providers/rac/models.py +msgid "RAC Providers" +msgstr "RAC-leverandører" + +#: authentik/providers/rac/models.py +msgid "RAC Endpoint" +msgstr "RAC-endepunkt" + +#: authentik/providers/rac/models.py +msgid "RAC Endpoints" +msgstr "RAC-endepunkter" + +#: authentik/providers/rac/models.py +msgid "RAC Provider Property Mapping" +msgstr "Egenskapstilordning for RAC-leverandør" + +#: authentik/providers/rac/models.py +msgid "RAC Provider Property Mappings" +msgstr "Egenskapstilordninger for RAC-leverandør" + +#: authentik/providers/rac/models.py +msgid "RAC Connection token" +msgstr "RAC-tilkoblingstoken" + +#: authentik/providers/rac/models.py +msgid "RAC Connection tokens" +msgstr "RAC-tilkoblingstokener" + +#: authentik/providers/rac/views.py +msgid "Maximum connection limit reached." +msgstr "Maksimal tilkoblingsgrense er nådd." + +#: authentik/providers/rac/views.py +msgid "(You are already connected in another tab/window)" +msgstr "(Du er allerede tilkoblet i en annen fane/et annet vindu)" + +#: authentik/providers/radius/models.py +msgid "Shared secret between clients and server to hash packets." +msgstr "Delt hemmelighet mellom klienter og server for å hashe pakker." + +#: authentik/providers/radius/models.py +msgid "" +"List of CIDRs (comma-separated) that clients can connect from. A more " +"specific CIDR will match before a looser one. Clients connecting from a non-" +"specified CIDR will be dropped." +msgstr "" +"Liste over CIDR-er (kommadelt) som klienter kan koble til fra. En mer " +"spesifikk CIDR vil samsvare før en mindre spesifikk en. Klienter som kobler " +"til fra en uspesifisert CIDR, vil bli avvist." + +#: authentik/providers/radius/models.py +msgid "Radius Provider" +msgstr "Radius-leverandør" + +#: authentik/providers/radius/models.py +msgid "Radius Providers" +msgstr "Radius-leverandører" + +#: authentik/providers/radius/models.py +msgid "Radius Provider Property Mapping" +msgstr "Egenskapstilordning for Radius-leverandør" + +#: authentik/providers/radius/models.py +msgid "Radius Provider Property Mappings" +msgstr "Egenskapstilordninger for Radius-leverandør" + +#: authentik/providers/saml/api/providers.py +msgid "" +"With a signing keypair selected, at least one of 'Sign assertion' and 'Sign " +"Response' must be selected." +msgstr "" +"Når et signeringsnøkkelpar er valgt, må minst ett av valgene 'Signer " +"påstand' eller 'Signer svar' velges." + +#: authentik/providers/saml/api/providers.py +msgid "Only RSA, EC, and DSA key types are supported for SAML signing." +msgstr "Bare nøkkeltypene RSA, EC og DSA støttes for SAML-signering." + +#: authentik/providers/saml/api/providers.py +msgid "Invalid XML Syntax" +msgstr "Ugyldig XML-syntaks" + +#: authentik/providers/saml/api/providers.py +#, python-brace-format +msgid "Failed to import Metadata: {messages}" +msgstr "Klarte ikke å importere metadata: {messages}" + +#: authentik/providers/saml/models.py +msgid "ACS URL" +msgstr "ACS-URL" + +#: authentik/providers/saml/models.py +msgid "Service Provider Binding" +msgstr "Tjenesteleverandørbinding" + +#: authentik/providers/saml/models.py +msgid "" +"This determines how authentik sends the response back to the Service " +"Provider." +msgstr "" +"Dette bestemmer hvordan authentik sender svaret tilbake til " +"tjenesteleverandøren." + +#: authentik/providers/saml/models.py +msgid "" +"Value of the audience restriction field of the assertion. When left empty, " +"no audience restriction will be added." +msgstr "" +"Verdien til feltet for målgrupperestriksjon i påstanden. Når feltet er tomt," +" vil ingen målgrupperestriksjon bli lagt til." + +#: authentik/providers/saml/models.py +msgid "" +"Also known as EntityID. Providing a value overrides the default issuer " +"generated by authentik." +msgstr "" + +#: authentik/providers/saml/models.py +msgid "SLS URL" +msgstr "SLS-URL" + +#: authentik/providers/saml/models.py +msgid "Single Logout Service URL where the logout response should be sent." +msgstr "URL for Single Logout-tjeneste der utloggingssvaret skal sendes." + +#: authentik/providers/saml/models.py +msgid "SLS Binding" +msgstr "SLS-binding" + +#: authentik/providers/saml/models.py +msgid "" +"This determines how authentik sends the logout response back to the Service " +"Provider." +msgstr "" +"Dette bestemmer hvordan authentik sender utloggingssvaret tilbake til " +"tjenesteleverandøren." + +#: authentik/providers/saml/models.py +msgid "" +"Method to use for logout. Front-channel iframe loads all logout URLs " +"simultaneously in hidden iframes. Front-channel native uses your active " +"browser tab to send post requests and redirect to providers. Back-channel " +"sends logout requests directly from the server without user interaction " +"(requires POST SLS binding)." +msgstr "" +"Metode som skal brukes for utlogging. Front-channel iframe laster inn alle " +"utloggings-URL-er samtidig i skjulte iframes. Front-channel native bruker " +"din aktive nettleserfane for å sende POST-forespørsler og omdirigere til " +"leverandører. Back-channel sender utloggingsforespørsler direkte fra " +"serveren uten brukerinteraksjon (krever POST SLS-binding)." + +#: authentik/providers/saml/models.py +msgid "NameID Property Mapping" +msgstr "Egenskapstilordning for NameID" + +#: authentik/providers/saml/models.py +msgid "" +"Configure how the NameID value will be created. When left empty, the " +"NameIDPolicy of the incoming request will be considered" +msgstr "" +"Konfigurer hvordan NameID-verdien skal opprettes. Når feltet er tomt, vil " +"NameIDPolicy i den innkommende forespørselen bli tatt hensyn til." + +#: authentik/providers/saml/models.py +msgid "AuthnContextClassRef Property Mapping" +msgstr "Egenskapstilordning for AuthnContextClassRef" + +#: authentik/providers/saml/models.py +msgid "" +"Configure how the AuthnContextClassRef value will be created. When left " +"empty, the AuthnContextClassRef will be set based on which authentication " +"methods the user used to authenticate." +msgstr "" +"Konfigurer hvordan AuthnContextClassRef-verdien skal opprettes. Når feltet " +"er tomt, vil AuthnContextClassRef bli angitt basert på hvilke " +"autentiseringsmetoder brukeren brukte for å autentisere seg." + +#: authentik/providers/saml/models.py +msgid "" +"Assertion valid not before current time + this value (Format: " +"hours=-1;minutes=-2;seconds=-3)." +msgstr "" +"Påstanden er ikke gyldig før gjeldende tidspunkt + denne verdien (Format: " +"hours=-1;minutes=-2;seconds=-3)." + +#: authentik/providers/saml/models.py +msgid "" +"Assertion not valid on or after current time + this value (Format: " +"hours=1;minutes=2;seconds=3)." +msgstr "" +"Påstanden er ikke gyldig på eller etter gjeldende tidspunkt + denne verdien " +"(Format: hours=1;minutes=2;seconds=3)." + +#: authentik/providers/saml/models.py +msgid "" +"Session not valid on or after current time + this value (Format: " +"hours=1;minutes=2;seconds=3)." +msgstr "" +"Økten er ikke gyldig på eller etter gjeldende tidspunkt + denne verdien " +"(Format: hours=1;minutes=2;seconds=3)." + +#: authentik/providers/saml/models.py authentik/sources/saml/models.py +msgid "SHA1" +msgstr "SHA1" + +#: authentik/providers/saml/models.py authentik/sources/saml/models.py +msgid "SHA256" +msgstr "SHA256" + +#: authentik/providers/saml/models.py authentik/sources/saml/models.py +msgid "SHA384" +msgstr "SHA384" + +#: authentik/providers/saml/models.py authentik/sources/saml/models.py +msgid "SHA512" +msgstr "SHA512" + +#: authentik/providers/saml/models.py authentik/sources/saml/models.py +msgid "RSA-SHA1" +msgstr "RSA-SHA1" + +#: authentik/providers/saml/models.py authentik/sources/saml/models.py +msgid "RSA-SHA256" +msgstr "RSA-SHA256" + +#: authentik/providers/saml/models.py authentik/sources/saml/models.py +msgid "RSA-SHA384" +msgstr "RSA-SHA384" + +#: authentik/providers/saml/models.py authentik/sources/saml/models.py +msgid "RSA-SHA512" +msgstr "RSA-SHA512" + +#: authentik/providers/saml/models.py authentik/sources/saml/models.py +msgid "ECDSA-SHA1" +msgstr "ECDSA-SHA1" + +#: authentik/providers/saml/models.py authentik/sources/saml/models.py +msgid "ECDSA-SHA256" +msgstr "ECDSA-SHA256" + +#: authentik/providers/saml/models.py authentik/sources/saml/models.py +msgid "ECDSA-SHA384" +msgstr "ECDSA-SHA384" + +#: authentik/providers/saml/models.py authentik/sources/saml/models.py +msgid "ECDSA-SHA512" +msgstr "ECDSA-SHA512" + +#: authentik/providers/saml/models.py authentik/sources/saml/models.py +msgid "DSA-SHA1" +msgstr "DSA-SHA1" + +#: authentik/providers/saml/models.py authentik/sources/saml/models.py +msgid "" +"When selected, incoming assertion's Signatures will be validated against " +"this certificate. To allow unsigned Requests, leave on default." +msgstr "" +"Når det er valgt, vil signaturer på innkommende påstander bli validert mot " +"dette sertifikatet. For å tillate usignerte forespørsler, la standardverdien" +" stå." + +#: authentik/providers/saml/models.py authentik/sources/saml/models.py +msgid "Verification Certificate" +msgstr "Verifikasjonssertifikat" + +#: authentik/providers/saml/models.py +msgid "Keypair used to sign outgoing Responses going to the Service Provider." +msgstr "" +"Nøkkelpar som brukes til å signere utgående svar til tjenesteleverandøren." + +#: authentik/providers/saml/models.py authentik/sources/saml/models.py +msgid "Signing Keypair" +msgstr "Signeringsnøkkelpar" + +#: authentik/providers/saml/models.py authentik/sources/saml/models.py +msgid "" +"When selected, incoming assertions are encrypted by the IdP using the public" +" key of the encryption keypair. The assertion is decrypted by the SP using " +"the the private key." +msgstr "" +"Når det er valgt, krypteres innkommende påstander av IdP-en ved hjelp av den" +" offentlige nøkkelen i krypteringsnøkkelparet. Påstanden dekrypteres av SP-" +"en ved hjelp av den private nøkkelen." + +#: authentik/providers/saml/models.py authentik/sources/saml/models.py +msgid "Encryption Keypair" +msgstr "Krypteringsnøkkelpar" + +#: authentik/providers/saml/models.py +msgid "Default relay_state value for IDP-initiated logins" +msgstr "Standard relay_state-verdi for IdP-initierte pålogginger" + +#: authentik/providers/saml/models.py +msgid "SAML Provider" +msgstr "SAML-leverandør" + +#: authentik/providers/saml/models.py +msgid "SAML Providers" +msgstr "SAML-leverandører" + +#: authentik/providers/saml/models.py +msgid "SAML Provider Property Mapping" +msgstr "Egenskapstilordning for SAML-leverandør" + +#: authentik/providers/saml/models.py +msgid "SAML Provider Property Mappings" +msgstr "Egenskapstilordninger for SAML-leverandør" + +#: authentik/providers/saml/models.py +msgid "SAML Provider from Metadata" +msgstr "SAML-leverandør fra metadata" + +#: authentik/providers/saml/models.py +msgid "SAML Providers from Metadata" +msgstr "SAML-leverandører fra metadata" + +#: authentik/providers/saml/models.py +msgid "Link to the user's authenticated session" +msgstr "Koble til brukerens autentiserte økt" + +#: authentik/providers/saml/models.py +msgid "SAML SessionIndex for this session" +msgstr "SAML SessionIndex for denne økten" + +#: authentik/providers/saml/models.py +msgid "SAML NameID value for this session" +msgstr "SAML NameID-verdi for denne økten" + +#: authentik/providers/saml/models.py +msgid "SAML NameID format" +msgstr "SAML NameID-format" + +#: authentik/providers/saml/models.py +msgid "SAML Issuer used for this session" +msgstr "" + +#: authentik/providers/saml/models.py +msgid "SAML Session" +msgstr "SAML-økt" + +#: authentik/providers/saml/models.py +msgid "SAML Sessions" +msgstr "SAML-økter" + +#: authentik/providers/scim/models.py +msgid "OAuth" +msgstr "OAuth" + +#: authentik/providers/scim/models.py +msgid "Default" +msgstr "Standard" + +#: authentik/providers/scim/models.py +msgid "AWS" +msgstr "AWS" + +#: authentik/providers/scim/models.py +msgid "Slack" +msgstr "Slack" + +#: authentik/providers/scim/models.py +msgid "Salesforce" +msgstr "Salesforce" + +#: authentik/providers/scim/models.py +msgid "Webex" +msgstr "Webex" + +#: authentik/providers/scim/models.py +msgid "vCenter" +msgstr "" + +#: authentik/providers/scim/models.py +msgid "Group filters used to define sync-scope for groups." +msgstr "Gruppefiltre brukt for å definere synkroniseringsomfang for grupper." + +#: authentik/providers/scim/models.py +msgid "Base URL to SCIM requests, usually ends in /v2" +msgstr "Grunn-URL for SCIM-forespørsler, slutter vanligvis på /v2" + +#: authentik/providers/scim/models.py +msgid "Authentication token" +msgstr "Autentiseringstoken" + +#: authentik/providers/scim/models.py +msgid "OAuth Source used for authentication" +msgstr "OAuth-kilde brukt for autentisering" + +#: authentik/providers/scim/models.py +msgid "Additional OAuth parameters, such as grant_type" +msgstr "Ekstra OAuth-parametere, for eksempel grant_type" + +#: authentik/providers/scim/models.py +msgid "SCIM Compatibility Mode" +msgstr "SCIM-kompatibilitetsmodus" + +#: authentik/providers/scim/models.py +msgid "Alter authentik behavior for vendor-specific SCIM implementations." +msgstr "" +"Endre authentik-oppførsel for leverandørspesifikke SCIM-implementasjoner." + +#: authentik/providers/scim/models.py +msgid "" +"Cache duration for ServiceProviderConfig responses. Set minutes=0 to " +"disable." +msgstr "" +"Cache-varighet for ServiceProviderConfig-svar. Sett minutes=0 for å " +"deaktivere." + +#: authentik/providers/scim/models.py +msgid "SCIM Provider" +msgstr "SCIM-leverandør" + +#: authentik/providers/scim/models.py +msgid "SCIM Providers" +msgstr "SCIM-leverandører" + +#: authentik/providers/scim/models.py +msgid "SCIM Provider Mapping" +msgstr "SCIM-leverandørtilordning" + +#: authentik/providers/scim/models.py +msgid "SCIM Provider Mappings" +msgstr "SCIM-leverandørtilordninger" + +#: authentik/providers/scim/tasks.py +msgid "Sync SCIM provider objects." +msgstr "Synkroniser SCIM-leverandørobjekter." + +#: authentik/providers/scim/tasks.py +msgid "Full sync for SCIM provider." +msgstr "Full synkronisering for SCIM-leverandør." + +#: authentik/providers/scim/tasks.py +msgid "Sync a direct object (user, group) for SCIM provider." +msgstr "Synkroniser et direkte objekt (bruker, gruppe) for SCIM-leverandør." + +#: authentik/providers/scim/tasks.py +msgid "Dispatch syncs for a direct object (user, group) for SCIM providers." +msgstr "" +"Send ut synkroniseringer for et direkte objekt (bruker, gruppe) for SCIM-" +"leverandører." + +#: authentik/providers/scim/tasks.py +msgid "Delete an object (user, group) for SCIM provider." +msgstr "Slett et objekt (bruker, gruppe) for SCIM-leverandør." + +#: authentik/providers/scim/tasks.py +msgid "Dispatch deletions for an object (user, group) for SCIM providers." +msgstr "" +"Send ut slettinger for et objekt (bruker, gruppe) for SCIM-leverandører." + +#: authentik/providers/scim/tasks.py +msgid "Sync a related object (memberships) for SCIM provider." +msgstr "Synkroniser et relatert objekt (medlemskap) for SCIM-leverandør." + +#: authentik/providers/scim/tasks.py +msgid "Dispatch syncs for a related object (memberships) for SCIM providers." +msgstr "" +"Send ut synkroniseringer for et relatert objekt (medlemskap) for SCIM-" +"leverandører." + +#: authentik/rbac/models.py +msgid "Role" +msgstr "Rolle" + +#: authentik/rbac/models.py +msgid "Roles" +msgstr "Roller" + +#: authentik/rbac/models.py +msgid "Can assign permissions to roles" +msgstr "Kan tildele tillatelser til roller" + +#: authentik/rbac/models.py +msgid "Can unassign permissions from roles" +msgstr "Kan fjerne tillatelser fra roller" + +#: authentik/rbac/models.py +msgid "Initial Permissions" +msgstr "Starttillatelser" + +#: authentik/rbac/models.py +msgid "System permission" +msgstr "Systemtillatelse" + +#: authentik/rbac/models.py +msgid "System permissions" +msgstr "Systemtillatelser" + +#: authentik/rbac/models.py +msgid "Can view system info" +msgstr "Kan vise systeminfo" + +#: authentik/rbac/models.py +msgid "Can access admin interface" +msgstr "Kan få tilgang til admingrensesnitt" + +#: authentik/rbac/models.py +msgid "Can view system settings" +msgstr "Kan vise systeminnstillinger" + +#: authentik/rbac/models.py +msgid "Can edit system settings" +msgstr "Kan redigere systeminnstillinger" + +#: authentik/rbac/models.py +msgid "Can view media files" +msgstr "Kan vise mediefiler" + +#: authentik/rbac/models.py +msgid "Can manage media files" +msgstr "Kan administrere mediefiler" + +#: authentik/recovery/management/commands/create_admin_group.py +msgid "Create admin group if the default group gets deleted." +msgstr "Opprett admingruppe hvis standardgruppen blir slettet." + +#: authentik/recovery/management/commands/create_recovery_key.py +msgid "Create a Key which can be used to restore access to authentik." +msgstr "" +"Opprett en nøkkel som kan brukes til å gjenopprette tilgangen til authentik." + +#: authentik/recovery/views.py +msgid "Used recovery-link to authenticate." +msgstr "Brukte gjenopprettingslenke for å autentisere." + +#: authentik/sources/kerberos/models.py +msgid "Kerberos realm" +msgstr "Kerberos-rike" + +#: authentik/sources/kerberos/models.py +msgid "Custom krb5.conf to use. Uses the system one by default" +msgstr "Tilpasset krb5.conf som skal brukes. Bruker systemets som standard" + +#: authentik/sources/kerberos/models.py +msgid "KAdmin server type" +msgstr "KAdmin-servertype" + +#: authentik/sources/kerberos/models.py +msgid "Sync users from Kerberos into authentik" +msgstr "Synkroniser brukere fra Kerberos til authentik" + +#: authentik/sources/kerberos/models.py +msgid "When a user changes their password, sync it back to Kerberos" +msgstr "" +"Når en bruker endrer passordet sitt, synkroniser det tilbake til Kerberos" + +#: authentik/sources/kerberos/models.py +msgid "Principal to authenticate to kadmin for sync." +msgstr "Principal for å autentisere til kadmin for synkronisering." + +#: authentik/sources/kerberos/models.py +msgid "Password to authenticate to kadmin for sync" +msgstr "Passord for å autentisere til kadmin for synkronisering" + +#: authentik/sources/kerberos/models.py +msgid "" +"Keytab to authenticate to kadmin for sync. Must be base64-encoded or in the " +"form TYPE:residual" +msgstr "" +"Keytab for å autentisere til kadmin for synkronisering. Må være base64-kodet" +" eller i formatet TYPE:residual" + +#: authentik/sources/kerberos/models.py +msgid "" +"Credentials cache to authenticate to kadmin for sync. Must be in the form " +"TYPE:residual" +msgstr "" +"Påloggingsbuffer for å autentisere til kadmin for synkronisering. Må være i " +"formatet TYPE:residual" + +#: authentik/sources/kerberos/models.py +msgid "" +"Force the use of a specific server name for SPNEGO. Must be in the form " +"HTTP@hostname" +msgstr "" +"Tving bruk av et spesifikt servernavn for SPNEGO. Må være i formatet " +"HTTP@hostname" + +#: authentik/sources/kerberos/models.py +msgid "SPNEGO keytab base64-encoded or path to keytab in the form FILE:path" +msgstr "SPNEGO keytab base64-kodet eller sti til keytab i formatet FILE:path" + +#: authentik/sources/kerberos/models.py +msgid "Credential cache to use for SPNEGO in form type:residual" +msgstr "Påloggingsbuffer som skal brukes for SPNEGO i formatet type:residual" + +#: authentik/sources/kerberos/models.py +msgid "" +"If enabled, the authentik-stored password will be updated upon login with " +"the Kerberos password backend" +msgstr "" +"Hvis aktivert, vil det authentik-lagrede passordet bli oppdatert ved " +"pålogging med Kerberos-passordbakenden" + +#: authentik/sources/kerberos/models.py +msgid "Kerberos Source" +msgstr "Kerberos-kilde" + +#: authentik/sources/kerberos/models.py +msgid "Kerberos Sources" +msgstr "Kerberos-kilder" + +#: authentik/sources/kerberos/models.py +msgid "Kerberos Source Property Mapping" +msgstr "Egenskapstilordning for Kerberos-kilde" + +#: authentik/sources/kerberos/models.py +msgid "Kerberos Source Property Mappings" +msgstr "Egenskapstilordninger for Kerberos-kilde" + +#: authentik/sources/kerberos/models.py +msgid "User Kerberos Source Connection" +msgstr "Tilkobling til Kerberos-kilde for bruker" + +#: authentik/sources/kerberos/models.py +msgid "User Kerberos Source Connections" +msgstr "Tilkoblinger til Kerberos-kilde for bruker" + +#: authentik/sources/kerberos/models.py +msgid "Group Kerberos Source Connection" +msgstr "Tilkobling til Kerberos-kilde for gruppe" + +#: authentik/sources/kerberos/models.py +msgid "Group Kerberos Source Connections" +msgstr "Tilkoblinger til Kerberos-kilde for gruppe" + +#: authentik/sources/kerberos/tasks.py +msgid "Check connectivity for Kerberos sources." +msgstr "Sjekk tilkobling for Kerberos-kilder." + +#: authentik/sources/kerberos/tasks.py +msgid "Sync Kerberos source." +msgstr "Synkroniser Kerberos-kilde." + +#: authentik/sources/kerberos/views.py +msgid "SPNEGO authentication required" +msgstr "SPNEGO-autentisering kreves" + +#: authentik/sources/kerberos/views.py +msgid "" +"\n" +" Make sure you have valid tickets (obtainable via kinit)\n" +" and configured the browser correctly.\n" +" Please contact your administrator.\n" +" " +msgstr "" +"\n" +" Sørg for at du har gyldige autentiseringstokener (kan hentes med kinit).\n" +" og at nettleseren er korrekt konfigurert.\n" +" Vennligst kontakt systemadministrator.\n" +" " + +#: authentik/sources/ldap/api/sources.py +msgid "Only a single LDAP Source with password synchronization is allowed" +msgstr "Kun én LDAP-kilde med passordsynkronisering er tillatt" + +#: authentik/sources/ldap/models.py +msgid "Server URI" +msgstr "Server-URI" + +#: authentik/sources/ldap/models.py +msgid "" +"Optionally verify the LDAP Server's Certificate against the CA Chain in this" +" keypair." +msgstr "" +"Valgfritt verifiser LDAP-serverens sertifikat mot CA-kjeden i dette " +"nøkkelparet." + +#: authentik/sources/ldap/models.py +msgid "" +"Client certificate to authenticate against the LDAP Server's Certificate." +msgstr "Klientsertifikat for å autentisere mot LDAP-serverens sertifikat." + +#: authentik/sources/ldap/models.py +msgid "Bind CN" +msgstr "Bind CN" + +#: authentik/sources/ldap/models.py +msgid "Enable Start TLS" +msgstr "Aktiver Start TLS" + +#: authentik/sources/ldap/models.py +msgid "Use Server URI for SNI verification" +msgstr "Bruk Server-URI for SNI-verifisering" + +#: authentik/sources/ldap/models.py +msgid "Base DN" +msgstr "Base DN" + +#: authentik/sources/ldap/models.py +msgid "Prepended to Base DN for User-queries." +msgstr "Lagt til foran Base DN for brukerspørringer." + +#: authentik/sources/ldap/models.py +msgid "Addition User DN" +msgstr "Ekstra bruker-DN" + +#: authentik/sources/ldap/models.py +msgid "Prepended to Base DN for Group-queries." +msgstr "Lagt til foran Base DN for gruppespørringer." + +#: authentik/sources/ldap/models.py +msgid "Addition Group DN" +msgstr "Ekstra gruppe-DN" + +#: authentik/sources/ldap/models.py +msgid "Consider Objects matching this filter to be Users." +msgstr "Anse objekter som samsvarer med dette filteret som brukere." + +#: authentik/sources/ldap/models.py +msgid "Attribute which matches the value of `group_membership_field`." +msgstr "Attributt som samsvarer med verdien for `group_membership_field`." + +#: authentik/sources/ldap/models.py +msgid "Field which contains members of a group." +msgstr "Felt som inneholder medlemmer av en gruppe." + +#: authentik/sources/ldap/models.py +msgid "Consider Objects matching this filter to be Groups." +msgstr "Anse objekter som samsvarer med dette filteret som grupper." + +#: authentik/sources/ldap/models.py +msgid "Field which contains a unique Identifier." +msgstr "Felt som inneholder en unik identifikator." + +#: authentik/sources/ldap/models.py +msgid "Update internal authentik password when login succeeds with LDAP" +msgstr "Oppdater internt authentik-passord når pålogging med LDAP lykkes" + +#: authentik/sources/ldap/models.py +msgid "" +"When a user changes their password, sync it back to LDAP. This can only be " +"enabled on a single LDAP source." +msgstr "" +"Når en bruker endrer passordet sitt, synkroniser det tilbake til LDAP. Dette" +" kan bare aktiveres for én enkelt LDAP-kilde." + +#: authentik/sources/ldap/models.py +msgid "" +"Lookup group membership based on a user attribute instead of a group " +"attribute. This allows nested group resolution on systems like FreeIPA and " +"Active Directory" +msgstr "" +"Slå opp gruppemedlemskap basert på et brukerattributt i stedet for et " +"gruppeattributt. Dette tillater oppløsning av nestede grupper på systemer " +"som FreeIPA og Active Directory" + +#: authentik/sources/ldap/models.py +msgid "" +"Delete authentik users and groups which were previously supplied by this " +"source, but are now missing from it." +msgstr "" +"Slett authentik-brukere og -grupper som tidligere ble levert av denne " +"kilden, men som nå mangler i den." + +#: authentik/sources/ldap/models.py +msgid "N/A" +msgstr "Ikke tilgjengelig" + +#: authentik/sources/ldap/models.py +msgid "LDAP Source" +msgstr "LDAP-kilde" + +#: authentik/sources/ldap/models.py +msgid "LDAP Sources" +msgstr "LDAP-kilder" + +#: authentik/sources/ldap/models.py +msgid "LDAP Source Property Mapping" +msgstr "Egenskapstilordning for LDAP-kilde" + +#: authentik/sources/ldap/models.py +msgid "LDAP Source Property Mappings" +msgstr "Egenskapstilordninger for LDAP-kilde" + +#: authentik/sources/ldap/models.py +msgid "" +"Unique ID used while checking if this object still exists in the directory." +msgstr "" +"Unik ID som brukes ved sjekk om dette objektet fortsatt eksisterer i " +"katalogen." + +#: authentik/sources/ldap/models.py +msgid "User LDAP Source Connection" +msgstr "Tilkobling til LDAP-kilde for bruker" + +#: authentik/sources/ldap/models.py +msgid "User LDAP Source Connections" +msgstr "Tilkoblinger til LDAP-kilde for bruker" + +#: authentik/sources/ldap/models.py +msgid "Group LDAP Source Connection" +msgstr "Tilkobling til LDAP-kilde for gruppe" + +#: authentik/sources/ldap/models.py +msgid "Group LDAP Source Connections" +msgstr "Tilkoblinger til LDAP-kilde for gruppe" + +#: authentik/sources/ldap/signals.py +msgid "Password does not match Active Directory Complexity." +msgstr "" +"Passordet samsvarer ikke med krav til kompleksitet for Active Directory." + +#: authentik/sources/ldap/tasks.py +msgid "Check connectivity for LDAP source." +msgstr "Sjekk tilkobling for LDAP-kilde." + +#: authentik/sources/ldap/tasks.py +msgid "Sync LDAP source." +msgstr "Synkroniser LDAP-kilde." + +#: authentik/sources/ldap/tasks.py +msgid "Sync page for LDAP source." +msgstr "Synkroniser side for LDAP-kilde." + +#: authentik/sources/oauth/clients/oauth2.py +msgid "No token received." +msgstr "Ingen token mottatt." + +#: authentik/sources/oauth/models.py +msgid "HTTP Basic Authentication" +msgstr "HTTP Basic-autentisering" + +#: authentik/sources/oauth/models.py +msgid "Include the client ID and secret as request parameters" +msgstr "Inkluder klient-ID og hemmelighet som forespørselsparametere" + +#: authentik/sources/oauth/models.py +msgid "No PKCE" +msgstr "Ingen PKCE" + +#: authentik/sources/oauth/models.py +msgid "Plain" +msgstr "Klartekst" + +#: authentik/sources/oauth/models.py +msgid "S256" +msgstr "S256" + +#: authentik/sources/oauth/models.py +msgid "Request Token URL" +msgstr "URL for Request Token" + +#: authentik/sources/oauth/models.py +msgid "" +"URL used to request the initial token. This URL is only required for OAuth " +"1." +msgstr "" +"URL som brukes for å be om det første tokenet. Denne URL-en kreves kun for " +"OAuth 1." + +#: authentik/sources/oauth/models.py +msgid "Authorization URL" +msgstr "Autorisasjons-URL" + +#: authentik/sources/oauth/models.py +msgid "URL the user is redirect to to conest the flow." +msgstr "URL som brukeren omdirigeres til for å samtykke til flyten." + +#: authentik/sources/oauth/models.py +msgid "Access Token URL" +msgstr "URL for Access Token" + +#: authentik/sources/oauth/models.py +msgid "URL used by authentik to retrieve tokens." +msgstr "URL som brukes av authentik for å hente tokener." + +#: authentik/sources/oauth/models.py +msgid "Profile URL" +msgstr "Profil-URL" + +#: authentik/sources/oauth/models.py +msgid "URL used by authentik to get user information." +msgstr "URL som brukes av authentik for å hente brukerinformasjon." + +#: authentik/sources/oauth/models.py +msgid "Additional Scopes" +msgstr "Ytterligere Scopes" + +#: authentik/sources/oauth/models.py +msgid "PKCE" +msgstr "PKCE" + +#: authentik/sources/oauth/models.py +msgid "" +"How to perform authentication during an authorization_code token request " +"flow" +msgstr "" +"Hvordan autentisering skal utføres i løpet av en authorization_code token-" +"forespørselflyt" + +#: authentik/sources/oauth/models.py +msgid "OAuth Source" +msgstr "OAuth-kilde" + +#: authentik/sources/oauth/models.py +msgid "OAuth Sources" +msgstr "OAuth-kilder" + +#: authentik/sources/oauth/models.py +msgid "GitHub OAuth Source" +msgstr "GitHub OAuth-kilde" + +#: authentik/sources/oauth/models.py +msgid "GitHub OAuth Sources" +msgstr "GitHub OAuth-kilder" + +#: authentik/sources/oauth/models.py +msgid "GitLab OAuth Source" +msgstr "GitLab OAuth-kilde" + +#: authentik/sources/oauth/models.py +msgid "GitLab OAuth Sources" +msgstr "GitLab OAuth-kilder" + +#: authentik/sources/oauth/models.py +msgid "Twitch OAuth Source" +msgstr "Twitch OAuth-kilde" + +#: authentik/sources/oauth/models.py +msgid "Twitch OAuth Sources" +msgstr "Twitch OAuth-kilder" + +#: authentik/sources/oauth/models.py +msgid "Mailcow OAuth Source" +msgstr "Mailcow OAuth-kilde" + +#: authentik/sources/oauth/models.py +msgid "Mailcow OAuth Sources" +msgstr "Mailcow OAuth-kilder" + +#: authentik/sources/oauth/models.py +msgid "Twitter OAuth Source" +msgstr "Twitter OAuth-kilde" + +#: authentik/sources/oauth/models.py +msgid "Twitter OAuth Sources" +msgstr "Twitter OAuth-kilder" + +#: authentik/sources/oauth/models.py +msgid "Facebook OAuth Source" +msgstr "Facebook OAuth-kilde" + +#: authentik/sources/oauth/models.py +msgid "Facebook OAuth Sources" +msgstr "Facebook OAuth-kilder" + +#: authentik/sources/oauth/models.py +msgid "Discord OAuth Source" +msgstr "Discord OAuth-kilde" + +#: authentik/sources/oauth/models.py +msgid "Discord OAuth Sources" +msgstr "Discord OAuth-kilder" + +#: authentik/sources/oauth/models.py +msgid "Slack OAuth Source" +msgstr "Slack OAuth-kilde" + +#: authentik/sources/oauth/models.py +msgid "Slack OAuth Sources" +msgstr "Slack OAuth-kilder" + +#: authentik/sources/oauth/models.py +msgid "Patreon OAuth Source" +msgstr "Patreon OAuth-kilde" + +#: authentik/sources/oauth/models.py +msgid "Patreon OAuth Sources" +msgstr "Patreon OAuth-kilder" + +#: authentik/sources/oauth/models.py +msgid "Google OAuth Source" +msgstr "Google OAuth-kilde" + +#: authentik/sources/oauth/models.py +msgid "Google OAuth Sources" +msgstr "Google OAuth-kilder" + +#: authentik/sources/oauth/models.py +msgid "Azure AD OAuth Source" +msgstr "Azure AD OAuth-kilde" + +#: authentik/sources/oauth/models.py +msgid "Azure AD OAuth Sources" +msgstr "Azure AD OAuth-kilder" + +#: authentik/sources/oauth/models.py +msgid "Entra ID OAuth Source" +msgstr "Entra ID OAuth-kilde" + +#: authentik/sources/oauth/models.py +msgid "Entra ID OAuth Sources" +msgstr "Entra ID OAuth-kilder" + +#: authentik/sources/oauth/models.py +msgid "OpenID OAuth Source" +msgstr "OpenID OAuth-kilde" + +#: authentik/sources/oauth/models.py +msgid "OpenID OAuth Sources" +msgstr "OpenID OAuth-kilder" + +#: authentik/sources/oauth/models.py +msgid "Apple OAuth Source" +msgstr "Apple OAuth-kilde" + +#: authentik/sources/oauth/models.py +msgid "Apple OAuth Sources" +msgstr "Apple OAuth-kilder" + +#: authentik/sources/oauth/models.py +msgid "Okta OAuth Source" +msgstr "Okta OAuth-kilde" + +#: authentik/sources/oauth/models.py +msgid "Okta OAuth Sources" +msgstr "Okta OAuth-kilder" + +#: authentik/sources/oauth/models.py +msgid "Reddit OAuth Source" +msgstr "Reddit OAuth-kilde" + +#: authentik/sources/oauth/models.py +msgid "Reddit OAuth Sources" +msgstr "Reddit OAuth-kilder" + +#: authentik/sources/oauth/models.py +msgid "WeChat OAuth Source" +msgstr "WeChat OAuth-kilde" + +#: authentik/sources/oauth/models.py +msgid "WeChat OAuth Sources" +msgstr "WeChat OAuth-kilder" + +#: authentik/sources/oauth/models.py +msgid "OAuth Source Property Mapping" +msgstr "Egenskapstilordning for OAuth-kilde" + +#: authentik/sources/oauth/models.py +msgid "OAuth Source Property Mappings" +msgstr "Egenskapstilordninger for OAuth-kilde" + +#: authentik/sources/oauth/models.py +msgid "User OAuth Source Connection" +msgstr "Tilkobling til OAuth-kilde for bruker" + +#: authentik/sources/oauth/models.py +msgid "User OAuth Source Connections" +msgstr "Tilkoblinger til OAuth-kilde for bruker" + +#: authentik/sources/oauth/models.py +msgid "Group OAuth Source Connection" +msgstr "Tilkobling til OAuth-kilde for gruppe" + +#: authentik/sources/oauth/models.py +msgid "Group OAuth Source Connections" +msgstr "Tilkoblinger til OAuth-kilde for gruppe" + +#: authentik/sources/oauth/tasks.py +msgid "" +"Update OAuth sources' config from well_known, and JWKS info from the " +"configured URL." +msgstr "" +"Oppdater konfigurasjonen for OAuth-kilder fra well_known, og JWKS-" +"informasjon fra den konfigurerte URL-en." + +#: authentik/sources/oauth/views/callback.py +#, python-brace-format +msgid "Authentication failed: {reason}" +msgstr "Autentisering mislyktes: {reason}" + +#: authentik/sources/plex/models.py +msgid "Client identifier used to talk to Plex." +msgstr "Klientidentifikator som brukes til å kommunisere med Plex." + +#: authentik/sources/plex/models.py +msgid "" +"Which servers a user has to be a member of to be granted access. Empty list " +"allows every server." +msgstr "" +"Hvilke servere en bruker må være medlem av for å få tilgang. En tom liste " +"tillater alle servere." + +#: authentik/sources/plex/models.py +msgid "Allow friends to authenticate, even if you don't share a server." +msgstr "" +"Tillat at venner kan autentisere seg, selv om du ikke deler en server." + +#: authentik/sources/plex/models.py +msgid "Plex token used to check friends" +msgstr "Plex-token som brukes til å sjekke venner" + +#: authentik/sources/plex/models.py +msgid "Plex Source" +msgstr "Plex-kilde" + +#: authentik/sources/plex/models.py +msgid "Plex Sources" +msgstr "Plex-kilder" + +#: authentik/sources/plex/models.py +msgid "Plex Source Property Mapping" +msgstr "Egenskapstilordning for Plex-kilde" + +#: authentik/sources/plex/models.py +msgid "Plex Source Property Mappings" +msgstr "Egenskapstilordninger for Plex-kilde" + +#: authentik/sources/plex/models.py +msgid "User Plex Source Connection" +msgstr "Tilkobling til Plex-kilde for bruker" + +#: authentik/sources/plex/models.py +msgid "User Plex Source Connections" +msgstr "Tilkoblinger til Plex-kilde for bruker" + +#: authentik/sources/plex/models.py +msgid "Group Plex Source Connection" +msgstr "Tilkobling til Plex-kilde for gruppe" + +#: authentik/sources/plex/models.py +msgid "Group Plex Source Connections" +msgstr "Tilkoblinger til Plex-kilde for gruppe" + +#: authentik/sources/plex/tasks.py +msgid "Check the validity of a Plex source." +msgstr "Sjekk gyldigheten til en Plex-kilde." + +#: authentik/sources/saml/api/source.py +msgid "" +"With a Verification Certificate selected, at least one of 'Verify Assertion " +"Signature' or 'Verify Response Signature' must be selected." +msgstr "" +"Når et verifikasjonssertifikat er valgt, må minst ett av valgene 'Verifiser " +"påstandssignatur' eller 'Verifiser svarssignatur' velges." + +#: authentik/sources/saml/models.py +msgid "Redirect Binding" +msgstr "Omdirigeringsbinding" + +#: authentik/sources/saml/models.py +msgid "POST Binding" +msgstr "POST-binding" + +#: authentik/sources/saml/models.py +msgid "POST Binding with auto-confirmation" +msgstr "POST-binding med automatisk bekreftelse" + +#: authentik/sources/saml/models.py authentik/sources/telegram/models.py +msgid "Flow used before authentication." +msgstr "Flyt som brukes før autentisering." + +#: authentik/sources/saml/models.py +msgid "Issuer" +msgstr "Utsteder" + +#: authentik/sources/saml/models.py +msgid "Also known as Entity ID. Defaults the Metadata URL." +msgstr "Også kjent som Entity ID. Standard er metadata-URL-en." + +#: authentik/sources/saml/models.py +msgid "SSO URL" +msgstr "SSO-URL" + +#: authentik/sources/saml/models.py +msgid "URL that the initial Login request is sent to." +msgstr "URL som den første påloggingsforespørselen sendes til." + +#: authentik/sources/saml/models.py +msgid "SLO URL" +msgstr "SLO-URL" + +#: authentik/sources/saml/models.py +msgid "Optional URL if your IDP supports Single-Logout." +msgstr "Valgfri URL hvis din IdP støtter Single-Logout." + +#: authentik/sources/saml/models.py +msgid "" +"Allows authentication flows initiated by the IdP. This can be a security " +"risk, as no validation of the request ID is done." +msgstr "" +"Tillater autentiseringsflyter initiert av IdP-en. Dette kan være en " +"sikkerhets-risiko, da det ikke gjøres noen validering av forespørsels-ID-en." + +#: authentik/sources/saml/models.py +msgid "" +"When enabled, the IdP will re-authenticate the user even if a session " +"exists." +msgstr "" +"Når aktivert, vil IdP-en autentisere brukeren på nytt selv om det eksisterer" +" en økt." + +#: authentik/sources/saml/models.py +msgid "" +"NameID Policy sent to the IdP. Can be unset, in which case no Policy is " +"sent." +msgstr "" +"NameID-policy som sendes til IdP-en. Kan stå udefinert, og da sendes ingen " +"policy." + +#: authentik/sources/saml/models.py +msgid "Delete temporary users after" +msgstr "Slett midlertidige brukere etter" + +#: authentik/sources/saml/models.py +msgid "" +"Time offset when temporary users should be deleted. This only applies if " +"your IDP uses the NameID Format 'transient', and the user doesn't log out " +"manually. (Format: hours=1;minutes=2;seconds=3)." +msgstr "" +"Tidsforskyvning for når midlertidige brukere skal slettes. Dette gjelder " +"bare hvis din IdP bruker NameID-formatet 'transient', og brukeren ikke " +"logger ut manuelt. (Format: hours=1;minutes=2;seconds=3)." + +#: authentik/sources/saml/models.py +msgid "" +"Keypair used to sign outgoing Responses going to the Identity Provider." +msgstr "" +"Nøkkelpar som brukes til å signere utgående svar til identitetsleverandøren." + +#: authentik/sources/saml/models.py +msgid "SAML Source" +msgstr "SAML-kilde" + +#: authentik/sources/saml/models.py +msgid "SAML Sources" +msgstr "SAML-kilder" + +#: authentik/sources/saml/models.py +msgid "SAML Source Property Mapping" +msgstr "Egenskapstilordning for SAML-kilde" + +#: authentik/sources/saml/models.py +msgid "SAML Source Property Mappings" +msgstr "Egenskapstilordninger for SAML-kilde" + +#: authentik/sources/saml/models.py +msgid "User SAML Source Connection" +msgstr "Tilkobling til SAML-kilde for bruker" + +#: authentik/sources/saml/models.py +msgid "User SAML Source Connections" +msgstr "Tilkoblinger til SAML-kilde for bruker" + +#: authentik/sources/saml/models.py +msgid "Group SAML Source Connection" +msgstr "Tilkobling til SAML-kilde for gruppe" + +#: authentik/sources/saml/models.py +msgid "Group SAML Source Connections" +msgstr "Tilkoblinger til SAML-kilde for gruppe" + +#: authentik/sources/saml/views.py +#, python-brace-format +msgid "Continue to {source_name}" +msgstr "Fortsett til {source_name}" + +#: authentik/sources/scim/models.py +msgid "SCIM Source" +msgstr "SCIM-kilde" + +#: authentik/sources/scim/models.py +msgid "SCIM Sources" +msgstr "SCIM-kilder" + +#: authentik/sources/scim/models.py +msgid "SCIM Source Property Mapping" +msgstr "Egenskapstilordning for SCIM-kilde" + +#: authentik/sources/scim/models.py +msgid "SCIM Source Property Mappings" +msgstr "Egenskapstilordninger for SCIM-kilde" + +#: authentik/sources/telegram/api/source.py +msgid "This Telegram account is already connected to another user." +msgstr "Denne Telegram-kontoen er allerede koblet til en annen bruker." + +#: authentik/sources/telegram/models.py authentik/sources/telegram/stage.py +msgid "Telegram bot username" +msgstr "Brukernavn for Telegram-bot" + +#: authentik/sources/telegram/models.py +msgid "Telegram bot token" +msgstr "Token for Telegram-bot" + +#: authentik/sources/telegram/models.py +msgid "Request access to send messages from your bot." +msgstr "Be om tilgang til å sende meldinger fra boten din." + +#: authentik/sources/telegram/models.py +msgid "Telegram Source" +msgstr "Telegram-kilde" + +#: authentik/sources/telegram/models.py +msgid "Telegram Sources" +msgstr "Telegram-kilder" + +#: authentik/sources/telegram/models.py +msgid "Telegram Source Property Mapping" +msgstr "Egenskapstilordning for Telegram-kilde" + +#: authentik/sources/telegram/models.py +msgid "Telegram Source Property Mappings" +msgstr "Egenskapstilordninger for Telegram-kilde" + +#: authentik/sources/telegram/models.py +msgid "User Telegram Source Connection" +msgstr "Tilkobling til Telegram-kilde for bruker" + +#: authentik/sources/telegram/models.py +msgid "User Telegram Source Connections" +msgstr "Tilkoblinger til Telegram-kilde for bruker" + +#: authentik/sources/telegram/models.py +msgid "Group Telegram Source Connection" +msgstr "Tilkobling til Telegram-kilde for gruppe" + +#: authentik/sources/telegram/models.py +msgid "Group Telegram Source Connections" +msgstr "Tilkoblinger til Telegram-kilde for gruppe" + +#: authentik/sources/telegram/telegram.py +msgid "Authentication date is too old" +msgstr "Autentiseringsdatoen er for gammel" + +#: authentik/sources/telegram/telegram.py +msgid "Invalid hash" +msgstr "Ugyldig hash" + +#: authentik/stages/authenticator_duo/models.py +msgid "Duo Authenticator Setup Stage" +msgstr "Oppsettstrinn for Duo Authenticator" + +#: authentik/stages/authenticator_duo/models.py +msgid "Duo Authenticator Setup Stages" +msgstr "Oppsettstrinn for Duo Authenticator" + +#: authentik/stages/authenticator_duo/models.py +msgid "Duo Device" +msgstr "Duo-enhet" + +#: authentik/stages/authenticator_duo/models.py +msgid "Duo Devices" +msgstr "Duo-enheter" + +#: authentik/stages/authenticator_email/models.py +#: authentik/stages/email/models.py +msgid "" +"When enabled, global Email connection settings will be used and connection " +"settings below will be ignored." +msgstr "" +"Når det er aktivert, vil globale innstillinger for e-posttilkobling bli " +"brukt, og tilkoblingsinnstillingene nedenfor vil bli ignorert." + +#: authentik/stages/authenticator_email/models.py +#: authentik/stages/email/models.py +msgid "Time the token sent is valid (Format: hours=3,minutes=17,seconds=300)." +msgstr "" +"Tiden tokenet som sendes er gyldig (Format: hours=3,minutes=17,seconds=300)." + +#: authentik/stages/authenticator_email/models.py +msgid "Email Authenticator Setup Stage" +msgstr "Oppsettstrinn for e-postautentisering" + +#: authentik/stages/authenticator_email/models.py +msgid "Email Authenticator Setup Stages" +msgstr "Oppsettstrinn for e-postautentisering" + +#: authentik/stages/authenticator_email/models.py +#: authentik/stages/authenticator_email/stage.py +#: authentik/stages/email/stage.py +msgid "Exception occurred while rendering E-mail template" +msgstr "Unntak oppstod under gjengivelse av e-postmal" + +#: authentik/stages/authenticator_email/models.py +msgid "Email Device" +msgstr "E-postenhet" + +#: authentik/stages/authenticator_email/models.py +msgid "Email Devices" +msgstr "E-postenheter" + +#: authentik/stages/authenticator_email/stage.py +#: authentik/stages/authenticator_sms/stage.py +#: authentik/stages/authenticator_totp/stage.py +msgid "Code does not match" +msgstr "Koden stemmer ikke" + +#: authentik/stages/authenticator_email/stage.py +msgid "Invalid email" +msgstr "Ugyldig e-post" + +#: authentik/stages/authenticator_email/stage.py +msgid "The user already has an email address registered for MFA." +msgstr "Brukeren har allerede en e-postadresse registrert for MFA." + +#: authentik/stages/authenticator_email/templates/email/email_otp.html +#: authentik/stages/email/templates/email/password_reset.html +#, python-format +msgid "" +"\n" +" Hi %(username)s,\n" +" " +msgstr "" +"\n" +" Hei %(username)s,\n" +" " + +#: authentik/stages/authenticator_email/templates/email/email_otp.html +msgid "" +"\n" +" Email MFA code.\n" +" " +msgstr "" +"\n" +" Email MFA code.\n" +" " + +#: authentik/stages/authenticator_email/templates/email/email_otp.html +#, python-format +msgid "" +"\n" +" If you did not request this code, please ignore this email. The code above is valid for %(expires)s.\n" +" " +msgstr "" +"\n" +" Hvis du ikke har bedt om denne koden, vennligst ignorer denne e-posten. Koden ovenfor er gyldig i %(expires)s.\n" +" " + +#: authentik/stages/authenticator_email/templates/email/email_otp.txt +#: authentik/stages/email/templates/email/password_reset.txt +#, python-format +msgid "Hi %(username)s," +msgstr "Hei %(username)s," + +#: authentik/stages/authenticator_email/templates/email/email_otp.txt +msgid "" +"\n" +"Email MFA code\n" +msgstr "" +"\n" +"MFA-kode på e-post\n" + +#: authentik/stages/authenticator_email/templates/email/email_otp.txt +#, python-format +msgid "" +"\n" +"If you did not request this code, please ignore this email. The code above is valid for %(expires)s.\n" +msgstr "" +"\n" +"Hvis du ikke har bedt om denne koden, vennligst ignorer denne e-posten. Koden ovenfor er gyldig i %(expires)s.\n" + +#: authentik/stages/authenticator_sms/models.py +msgid "" +"When enabled, the Phone number is only used during enrollment to verify the " +"users authenticity. Only a hash of the phone number is saved to ensure it is" +" not reused in the future." +msgstr "" +"Når det er aktivert, brukes telefonnummeret kun under registrering for å " +"verifisere brukerens autentisitet. Kun en hash av telefonnummeret lagres for" +" å sikre at det ikke gjenbrukes i fremtiden." + +#: authentik/stages/authenticator_sms/models.py +msgid "Optionally modify the payload being sent to custom providers." +msgstr "Endre eventuelt nyttelasten som sendes til tilpassede leverandører." + +#: authentik/stages/authenticator_sms/models.py +#, python-brace-format +msgid "Use this code to authenticate in authentik: {token}" +msgstr "Bruk denne koden for å autentisere i authentik: {token}" + +#: authentik/stages/authenticator_sms/models.py +msgid "SMS Authenticator Setup Stage" +msgstr "Oppsettstrinn for SMS-autentisering" + +#: authentik/stages/authenticator_sms/models.py +msgid "SMS Authenticator Setup Stages" +msgstr "Oppsettstrinn for SMS-autentisering" + +#: authentik/stages/authenticator_sms/models.py +msgid "SMS Device" +msgstr "SMS-enhet" + +#: authentik/stages/authenticator_sms/models.py +msgid "SMS Devices" +msgstr "SMS-enheter" + +#: authentik/stages/authenticator_sms/stage.py +msgid "Invalid phone number" +msgstr "Ugyldig telefonnummer" + +#: authentik/stages/authenticator_static/models.py +msgid "Static Authenticator Setup Stage" +msgstr "Oppsettstrinn for statisk autentisering" + +#: authentik/stages/authenticator_static/models.py +msgid "Static Authenticator Setup Stages" +msgstr "Oppsettstrinn for statisk autentisering" + +#: authentik/stages/authenticator_static/models.py +msgid "Static Device" +msgstr "Statisk enhet" + +#: authentik/stages/authenticator_static/models.py +msgid "Static Devices" +msgstr "Statiske enheter" + +#: authentik/stages/authenticator_static/models.py +msgid "Static Token" +msgstr "Statisk token" + +#: authentik/stages/authenticator_static/models.py +msgid "Static Tokens" +msgstr "Statiske tokener" + +#: authentik/stages/authenticator_totp/models.py +msgid "6 digits, widely compatible" +msgstr "6 sifre, allment kompatibelt" + +#: authentik/stages/authenticator_totp/models.py +msgid "8 digits, not compatible with apps like Google Authenticator" +msgstr "8 sifre, ikke kompatibelt med apper som Google Authenticator" + +#: authentik/stages/authenticator_totp/models.py +msgid "TOTP Authenticator Setup Stage" +msgstr "Oppsettstrinn for TOTP-autentisering" + +#: authentik/stages/authenticator_totp/models.py +msgid "TOTP Authenticator Setup Stages" +msgstr "Oppsettstrinn for TOTP-autentisering" + +#: authentik/stages/authenticator_totp/models.py +msgid "TOTP Device" +msgstr "TOTP-enhet" + +#: authentik/stages/authenticator_totp/models.py +msgid "TOTP Devices" +msgstr "TOTP-enheter" + +#: authentik/stages/authenticator_validate/challenge.py +msgid "" +"Invalid Token. Please ensure the time on your device is accurate and try " +"again." +msgstr "" +"Ugyldig token. Vennligst sørg for at tiden på enheten din er nøyaktig og " +"prøv igjen." + +#: authentik/stages/authenticator_validate/challenge.py +#: authentik/stages/authenticator_webauthn/stage.py +#, python-brace-format +msgid "Invalid device type. Contact your {brand} administrator for help." +msgstr "Ugyldig enhetstype. Kontakt din {brand}-administrator for hjelp." + +#: authentik/stages/authenticator_validate/models.py +msgid "Static" +msgstr "Statisk" + +#: authentik/stages/authenticator_validate/models.py +msgid "TOTP" +msgstr "TOTP" + +#: authentik/stages/authenticator_validate/models.py +msgid "WebAuthn" +msgstr "WebAuthn" + +#: authentik/stages/authenticator_validate/models.py +msgid "Duo" +msgstr "Duo" + +#: authentik/stages/authenticator_validate/models.py +msgid "SMS" +msgstr "SMS" + +#: authentik/stages/authenticator_validate/models.py +msgid "" +"Stages used to configure Authenticator when user doesn't have any compatible" +" devices. After this configuration Stage passes, the user is not prompted " +"again." +msgstr "" +"Trinn som brukes for å konfigurere Authenticator når brukeren ikke har noen " +"kompatible enheter. Etter at dette konfigurasjonstrinnet er bestått, blir " +"brukeren ikke bedt om det igjen." + +#: authentik/stages/authenticator_validate/models.py +msgid "Device classes which can be used to authenticate" +msgstr "Enhetsklasser som kan brukes for å autentisere" + +#: authentik/stages/authenticator_validate/models.py +msgid "" +"If any of the user's device has been used within this threshold, this stage " +"will be skipped" +msgstr "" +"Hvis noen av brukerens enheter har blitt brukt innenfor denne terskelen, vil" +" dette trinnet bli hoppet over" + +#: authentik/stages/authenticator_validate/models.py +msgid "Enforce user verification for WebAuthn devices." +msgstr "Tving brukerverifisering for WebAuthn-enheter." + +#: authentik/stages/authenticator_validate/models.py +msgid "Authenticator Validation Stage" +msgstr "Valideringstrinn for Authenticator" + +#: authentik/stages/authenticator_validate/models.py +msgid "Authenticator Validation Stages" +msgstr "Valideringstrinn for Authenticator" + +#: authentik/stages/authenticator_validate/stage.py +msgid "No (allowed) MFA authenticator configured." +msgstr "Ingen (tillatt) MFA-autentisering er konfigurert." + +#: authentik/stages/authenticator_webauthn/models.py +msgid "When enabled, a given device can only be registered once." +msgstr "Når det er aktivert, kan en gitt enhet bare registreres én gang." + +#: authentik/stages/authenticator_webauthn/models.py +msgid "WebAuthn Authenticator Setup Stage" +msgstr "Oppsettstrinn for WebAuthn-autentisering" + +#: authentik/stages/authenticator_webauthn/models.py +msgid "WebAuthn Authenticator Setup Stages" +msgstr "Oppsettstrinn for WebAuthn-autentisering" + +#: authentik/stages/authenticator_webauthn/models.py +msgid "WebAuthn Device" +msgstr "WebAuthn-enhet" + +#: authentik/stages/authenticator_webauthn/models.py +msgid "WebAuthn Devices" +msgstr "WebAuthn-enheter" + +#: authentik/stages/authenticator_webauthn/models.py +msgid "WebAuthn Device type" +msgstr "WebAuthn-enhetstype" + +#: authentik/stages/authenticator_webauthn/models.py +msgid "WebAuthn Device types" +msgstr "WebAuthn-enhetstyper" + +#: authentik/stages/authenticator_webauthn/tasks.py +msgid "" +"Background task to import FIDO Alliance MDS blob and AAGUIDs into database." +msgstr "" +"Bakgrunnsoppgave for å importere FIDO Alliance MDS-blob og AAGUID-er til " +"databasen." + +#: authentik/stages/captcha/models.py +msgid "Public key, acquired your captcha Provider." +msgstr "Offentlig nøkkel, hentet fra din captcha-leverandør." + +#: authentik/stages/captcha/models.py +msgid "Private key, acquired your captcha Provider." +msgstr "Privat nøkkel, hentet fra din captcha-leverandør." + +#: authentik/stages/captcha/models.py +msgid "" +"When enabled and the received captcha score is outside of the given " +"threshold, the stage will show an error message. When not enabled, the flow " +"will continue, but the data from the captcha will be available in the " +"context for policy decisions" +msgstr "" +"Når det er aktivert og den mottatte captcha-poengsummen er utenfor den " +"angitte terskelen, vil trinnet vise en feilmelding. Når det ikke er " +"aktivert, vil flyten fortsette, men dataene fra captchaen vil være " +"tilgjengelige i konteksten for policy-avgjørelser." + +#: authentik/stages/captcha/models.py +msgid "Captcha Stage" +msgstr "Captcha-trinn" + +#: authentik/stages/captcha/models.py +msgid "Captcha Stages" +msgstr "Captcha-trinn" + +#: authentik/stages/captcha/stage.py +msgid "Invalid captcha response. Retrying may solve this issue." +msgstr "Ugyldig captcha-svar. Et nytt forsøk kan løse dette problemet." + +#: authentik/stages/captcha/stage.py +msgid "Invalid captcha response" +msgstr "Ugyldig captcha-svar" + +#: authentik/stages/captcha/stage.py +msgid "Failed to validate token" +msgstr "Klarte ikke å validere token" + +#: authentik/stages/consent/models.py +msgid "" +"Offset after which consent expires. (Format: hours=1;minutes=2;seconds=3)." +msgstr "" +"Forskyvning for når samtykket utløper. (Format: " +"hours=1;minutes=2;seconds=3)." + +#: authentik/stages/consent/models.py +msgid "Consent Stage" +msgstr "Samtykketrinn" + +#: authentik/stages/consent/models.py +msgid "Consent Stages" +msgstr "Samtykketrinn" + +#: authentik/stages/consent/models.py +msgid "User Consent" +msgstr "Brukersamtykke" + +#: authentik/stages/consent/models.py +msgid "User Consents" +msgstr "Brukersamtykker" + +#: authentik/stages/consent/stage.py +msgid "Invalid consent token, re-showing prompt" +msgstr "Ugyldig samtykketoken, viser forespørselen på nytt" + +#: authentik/stages/deny/models.py +msgid "Deny Stage" +msgstr "Avvisningstrinn" + +#: authentik/stages/deny/models.py +msgid "Deny Stages" +msgstr "Avvisningstrinn" + +#: authentik/stages/dummy/models.py +msgid "Dummy Stage" +msgstr "Dummy-trinn" + +#: authentik/stages/dummy/models.py +msgid "Dummy Stages" +msgstr "Dummy-trinn" + +#: authentik/stages/email/flow.py +msgid "Continue to confirm this email address." +msgstr "Fortsett for å bekrefte denne e-postadressen." + +#: authentik/stages/email/flow.py +msgid "Link was already used, please request a new link." +msgstr "Lenken er allerede brukt, vennligst be om en ny lenke." + +#: authentik/stages/email/models.py +msgid "Password Reset" +msgstr "Tilbakestilling av passord" + +#: authentik/stages/email/models.py +msgid "Account Confirmation" +msgstr "Kontobekreftelse" + +#: authentik/stages/email/models.py +msgid "Email OTP" +msgstr "E-post OTP" + +#: authentik/stages/email/models.py +msgid "Event Notification" +msgstr "Hendelsesvarsel" + +#: authentik/stages/email/models.py authentik/stages/invitation/models.py +msgid "Invitation" +msgstr "Invitasjon" + +#: authentik/stages/email/models.py +msgid "" +"The time window used to count recent account recovery attempts. If the " +"number of attempts exceed recovery_max_attempts within this period, further " +"attempts will be rate-limited. (Format: hours=1;minutes=2;seconds=3)." +msgstr "" +"Tidsvinduet som brukes til å telle nylige forsøk på kontogjenoppretting. " +"Hvis antall forsøk overstiger recovery_max_attempts i denne perioden, vil " +"ytterligere forsøk bli hastighetsbegrenset. (Format: " +"hours=1;minutes=2;seconds=3)." + +#: authentik/stages/email/models.py +msgid "Activate users upon completion of stage." +msgstr "Aktiver brukere ved fullføring av trinn." + +#: authentik/stages/email/models.py +msgid "Email Stage" +msgstr "E-posttrinn" + +#: authentik/stages/email/models.py +msgid "Email Stages" +msgstr "E-posttrinn" + +#: authentik/stages/email/stage.py +msgid "Successfully verified Email." +msgstr "E-posten er verifisert." + +#: authentik/stages/email/stage.py +msgid "No pending user." +msgstr "Ingen ventende bruker." + +#: authentik/stages/email/stage.py +msgid "Email sent." +msgstr "E-post sendt." + +#: authentik/stages/email/stage.py +#, python-brace-format +msgid "" +"Too many account verification attempts. Please try again after {minutes} " +"minutes." +msgstr "" +"For mange forsøk på kontoverifisering. Vennligst prøv igjen om {minutes} " +"minutter." + +#: authentik/stages/email/stage.py +msgid "Email Successfully sent." +msgstr "E-posten ble sendt." + +#: authentik/stages/email/tasks.py +msgid "Send email." +msgstr "Send e-post." + +#: authentik/stages/email/templates/email/account_confirmation.html +#: authentik/stages/email/templates/email/account_confirmation.txt +msgid "Welcome!" +msgstr "Velkommen!" + +#: authentik/stages/email/templates/email/account_confirmation.html +msgid "" +"We're excited to have you get started. First, you need to confirm your " +"account. Just press the button below." +msgstr "" +"Vi gleder oss til du kommer i gang. Først må du bekrefte kontoen din. Bare " +"trykk på knappen nedenfor." + +#: authentik/stages/email/templates/email/account_confirmation.html +msgid "Confirm Account" +msgstr "Bekreft konto" + +#: authentik/stages/email/templates/email/account_confirmation.html +#, python-format +msgid "" +"\n" +" If that doesn't work, copy and paste the following link in your browser: %(url)s\n" +" " +msgstr "" +"\n" +" Hvis det ikke fungerer, kopierer og limer du inn følgende lenke i nettleseren din: %(url)s\n" +" " + +#: authentik/stages/email/templates/email/account_confirmation.txt +msgid "" +"We're excited to have you get started. First, you need to confirm your " +"account. Just open the link below." +msgstr "" +"Vi gleder oss til du kommer i gang. Først må du bekrefte kontoen din. Bare " +"åpne lenken nedenfor." + +#: authentik/stages/email/templates/email/event_notification.html +#, python-format +msgid "" +"\n" +" This email was sent from the notification transport %(name)s.\n" +" " +msgstr "" +"\n" +" Denne e-posten ble sendt fra varslingstransporten %(name)s.\n" +" " + +#: authentik/stages/email/templates/email/event_notification.txt +msgid "Dear authentik user," +msgstr "Kjære authentik-bruker," + +#: authentik/stages/email/templates/email/event_notification.txt +msgid "The following notification was created:" +msgstr "Følgende varsel ble opprettet:" + +#: authentik/stages/email/templates/email/event_notification.txt +msgid "Additional attributes:" +msgstr "Ytterligere attributter:" + +#: authentik/stages/email/templates/email/event_notification.txt +#, python-format +msgid "" +"\n" +"This email was sent from the notification transport %(name)s.\n" +msgstr "" +"\n" +"Denne e-posten ble sendt fra varslingstransporten %(name)s.\n" + +#: authentik/stages/email/templates/email/invitation.html +msgid "" +"\n" +" You're Invited!\n" +" " +msgstr "" +"\n" +" Du er invitert!\n" +" " + +#: authentik/stages/email/templates/email/invitation.html +#, python-format +msgid "" +"\n" +" You have been invited to join %(host)s. Click the button below to get started.\n" +" " +msgstr "" +"\n" +" Du har blitt invitert til å bli med i %(host)s. Klikk på knappen nedenfor for å komme i gang.\n" +" " + +#: authentik/stages/email/templates/email/invitation.html +#, python-format +msgid "" +"\n" +" This invitation expires %(expires)s.\n" +" " +msgstr "" +"\n" +" Denne invitasjonen utløper %(expires)s.\n" +" " + +#: authentik/stages/email/templates/email/invitation.html +#: authentik/stages/email/templates/email/invitation.txt +msgid "Accept Invitation" +msgstr "Godta invitasjon" + +#: authentik/stages/email/templates/email/invitation.html +msgid "" +"\n" +" If you cannot click the button above, please copy and paste the following URL into your browser:\n" +" " +msgstr "" +"\n" +" Hvis du ikke kan klikke på knappen ovenfor, kopierer og limer du inn følgende URL i nettleseren din:\n" +" " + +#: authentik/stages/email/templates/email/invitation.txt +msgid "You're Invited!" +msgstr "Du er invitert!" + +#: authentik/stages/email/templates/email/invitation.txt +#, python-format +msgid "" +"You have been invited to join %(host)s. Use the link below to get started." +msgstr "" +"Du har blitt invitert til å bli med i %(host)s. Bruk lenken nedenfor for å " +"komme i gang." + +#: authentik/stages/email/templates/email/invitation.txt +#, python-format +msgid "This invitation expires %(expires)s." +msgstr "Denne invitasjonen utløper %(expires)s." + +#: authentik/stages/email/templates/email/invitation.txt +msgid "" +"If you cannot click the link above, please copy and paste the following URL " +"into your browser:" +msgstr "" +"Hvis du ikke kan klikke på lenken ovenfor, kopierer og limer du inn følgende" +" URL i nettleseren din:" + +#: authentik/stages/email/templates/email/password_reset.html +msgid "" +"\n" +" You recently requested to change your password for your authentik account. Use the button below to set a new password.\n" +" " +msgstr "" +"\n" +" Du ba nylig om å endre passordet for authentik-kontoen din. Bruk knappen nedenfor for å angi et nytt passord.\n" +" " + +#: authentik/stages/email/templates/email/password_reset.html +#, python-format +msgid "" +"\n" +" If you did not request a password change, please ignore this email. The link above is valid for %(expires)s.\n" +" " +msgstr "" +"\n" +" Hvis du ikke har bedt om å endre passord, vennligst ignorer denne e-posten. Lenken ovenfor er gyldig i %(expires)s.\n" +" " + +#: authentik/stages/email/templates/email/password_reset.txt +msgid "" +"\n" +"You recently requested to change your password for your authentik account. Use the link below to set a new password.\n" +msgstr "" +"\n" +"Du ba nylig om å endre passordet for authentik-kontoen din. Bruk lenken nedenfor for å angi et nytt passord.\n" + +#: authentik/stages/email/templates/email/password_reset.txt +#, python-format +msgid "" +"\n" +"If you did not request a password change, please ignore this email. The link above is valid for %(expires)s.\n" +msgstr "" +"\n" +"Hvis du ikke har bedt om å endre passord, vennligst ignorer denne e-posten. Lenken ovenfor er gyldig i %(expires)s.\n" + +#: authentik/stages/email/templates/email/setup.html +msgid "authentik Test-Email" +msgstr "authentik Test-e-post" + +#: authentik/stages/email/templates/email/setup.html +msgid "" +"\n" +" This is a test email to inform you, that you've successfully configured authentik emails.\n" +" " +msgstr "" +"\n" +" Dette er en test-e-post for å informere deg om at du har konfigurert authentik-e-poster på riktig måte.\n" +" " + +#: authentik/stages/email/templates/email/setup.txt +msgid "" +"\n" +"This is a test email to inform you, that you've successfully configured authentik emails.\n" +msgstr "" +"\n" +"Dette er en test-e-post for å informere deg om at du har konfigurert authentik-e-poster på riktig måte.\n" + +#: authentik/stages/identification/api.py +msgid "When no user fields are selected, at least one source must be selected" +msgstr "Når ingen brukerfelt er valgt, må minst én kilde velges" + +#: authentik/stages/identification/models.py +msgid "" +"Fields of the user object to match against. (Hold shift to select multiple " +"options)" +msgstr "" +"Felt på brukerobjektet som skal samsvares mot. (Hold Shift nede for å velge " +"flere alternativer)" + +#: authentik/stages/identification/models.py +msgid "When enabled, user fields are matched regardless of their casing." +msgstr "" +"Når aktivert, samsvares brukerfelt uavhengig av store eller små bokstaver." + +#: authentik/stages/identification/models.py +msgid "" +"When a valid username/email has been entered, and this option is enabled, " +"the user's username and avatar will be shown. Otherwise, the text that the " +"user entered will be shown" +msgstr "" +"Når et gyldig brukernavn/e-post er angitt og dette alternativet er aktivert," +" vil brukerens brukernavn og avatar vises. Ellers vises teksten som brukeren" +" skrev inn" + +#: authentik/stages/identification/models.py +msgid "" +"When enabled, the stage will succeed and continue even when incorrect user " +"info is entered." +msgstr "" +"Når aktivert, vil trinnet lykkes og fortsette selv om feil brukerinfo er " +"angitt." + +#: authentik/stages/identification/models.py +msgid "" +"Show the user the 'Remember me on this device' toggle, allowing repeat users" +" to skip straight to entering their password." +msgstr "" +"Vis brukeren en 'Husk meg på denne enheten'-bryter, slik at tilbakevendende " +"brukere kan hoppe rett til å skrive inn passordet sitt." + +#: authentik/stages/identification/models.py +msgid "Optional enrollment flow, which is linked at the bottom of the page." +msgstr "Valgfri registreringsflyt, som er lenket til nederst på siden." + +#: authentik/stages/identification/models.py +msgid "Optional recovery flow, which is linked at the bottom of the page." +msgstr "Valgfri gjenopprettingsflyt, som er lenket til nederst på siden." + +#: authentik/stages/identification/models.py +msgid "Optional passwordless flow, which is linked at the bottom of the page." +msgstr "Valgfri passordløs flyt, som er lenket til nederst på siden." + +#: authentik/stages/identification/models.py +msgid "Specify which sources should be shown." +msgstr "Angi hvilke kilder som skal vises." + +#: authentik/stages/identification/models.py +msgid "Identification Stage" +msgstr "Identifiseringstrinn" + +#: authentik/stages/identification/models.py +msgid "Identification Stages" +msgstr "Identifiseringstrinn" + +#: authentik/stages/identification/stage.py +msgid "No identification data provided." +msgstr "Ingen identifikasjonsdata oppgitt." + +#: authentik/stages/identification/stage.py +msgid "Failed to authenticate." +msgstr "Klarte ikke å autentisere." + +#: authentik/stages/identification/stage.py +msgid "Log in" +msgstr "Logg inn" + +#: authentik/stages/identification/stage.py +msgid "Continue" +msgstr "Fortsett" + +#: authentik/stages/invitation/models.py +msgid "" +"If this flag is set, this Stage will jump to the next Stage when no " +"Invitation is given. By default this Stage will cancel the Flow when no " +"invitation is given." +msgstr "" +"Hvis dette flagget er satt, vil dette trinnet hoppe til neste trinn når " +"ingen invitasjon er gitt. Som standard vil dette trinnet avbryte flyten når " +"ingen invitasjon er gitt." + +#: authentik/stages/invitation/models.py +msgid "Invitation Stage" +msgstr "Invitasjonstrinn" + +#: authentik/stages/invitation/models.py +msgid "Invitation Stages" +msgstr "Invitasjonstrinn" + +#: authentik/stages/invitation/models.py +msgid "When set, only the configured flow can use this invitation." +msgstr "" +"Når angitt, kan bare den konfigurerte flyten bruke denne invitasjonen." + +#: authentik/stages/invitation/models.py +msgid "When enabled, the invitation will be deleted after usage." +msgstr "Når aktivert, vil invitasjonen bli slettet etter bruk." + +#: authentik/stages/invitation/models.py +msgid "Optional fixed data to enforce on user enrollment." +msgstr "Valgfrie faste data for å fremtvinge ved brukerregistrering." + +#: authentik/stages/invitation/models.py +msgid "Invitations" +msgstr "Invitasjoner" + +#: authentik/stages/invitation/stage.py +msgid "Invalid invite/invite not found" +msgstr "Ugyldig invitasjon / invitasjon ikke funnet" + +#: authentik/stages/password/models.py +msgid "User database + standard password" +msgstr "Brukerdatabase + standardpassord" + +#: authentik/stages/password/models.py +msgid "User database + app passwords" +msgstr "Brukerdatabase + app-passord" + +#: authentik/stages/password/models.py +msgid "User database + LDAP password" +msgstr "Brukerdatabase + LDAP-passord" + +#: authentik/stages/password/models.py +msgid "User database + Kerberos password" +msgstr "Brukerdatabase + Kerberos-passord" + +#: authentik/stages/password/models.py +msgid "Selection of backends to test the password against." +msgstr "Utvalg av baksystemer for å teste passordet mot." + +#: authentik/stages/password/models.py +msgid "" +"How many attempts a user has before the flow is canceled. To lock the user " +"out, use a reputation policy and a user_write stage." +msgstr "" +"Hvor mange forsøk en bruker har før flyten avbrytes. For å stenge brukeren " +"ute, bruk en omdømmepolicy og et user_write-trinn." + +#: authentik/stages/password/models.py +msgid "" +"When enabled, provides a 'show password' button with the password input " +"field." +msgstr "" +"Når aktivert, vises en 'vis passord'-knapp ved siden av passordfeltet." + +#: authentik/stages/password/models.py +msgid "Password Stage" +msgstr "Passordtrinn" + +#: authentik/stages/password/models.py +msgid "Password Stages" +msgstr "Passordtrinn" + +#: authentik/stages/password/stage.py +msgid "Invalid password" +msgstr "Ugyldig passord" + +#: authentik/stages/prompt/models.py +msgid "Text: Simple Text input" +msgstr "Tekst: Enkelt tekstfelt" + +#: authentik/stages/prompt/models.py +msgid "Text area: Multiline Text Input." +msgstr "Tekstområde: Flerlinjet tekstfelt." + +#: authentik/stages/prompt/models.py +msgid "Text (read-only): Simple Text input, but cannot be edited." +msgstr "Tekst (skrivebeskyttet): Enkelt tekstfelt, men kan ikke redigeres." + +#: authentik/stages/prompt/models.py +msgid "Text area (read-only): Multiline Text input, but cannot be edited." +msgstr "" +"Tekstområde (skrivebeskyttet): Flerlinjet tekstfelt, men kan ikke redigeres." + +#: authentik/stages/prompt/models.py +msgid "" +"Username: Same as Text input, but checks for and prevents duplicate " +"usernames." +msgstr "" +"Brukernavn: Samme som tekstfelt, men sjekker og forhindrer duplikate " +"brukernavn." + +#: authentik/stages/prompt/models.py +msgid "Email: Text field with Email type." +msgstr "E-post: Tekstfelt av typen e-post." + +#: authentik/stages/prompt/models.py +msgid "" +"Password: Masked input, multiple inputs of this type on the same prompt need" +" to be identical." +msgstr "" +"Passord: Maskert inndata, flere inndata av denne typen i samme forespørsel " +"må være identiske." + +#: authentik/stages/prompt/models.py +msgid "Fixed choice field rendered as a group of radio buttons." +msgstr "Fast valgfelt gjengitt som en gruppe radioknapper." + +#: authentik/stages/prompt/models.py +msgid "Fixed choice field rendered as a dropdown." +msgstr "Fast valgfelt gjengitt som en rullegardinliste." + +#: authentik/stages/prompt/models.py +msgid "" +"File: File upload for arbitrary files. File content will be available in " +"flow context as data-URI" +msgstr "" +"Fil: Filopplasting for vilkårlige filer. Filinnholdet vil være tilgjengelig " +"i flytkonteksten som en data-URI" + +#: authentik/stages/prompt/models.py +msgid "Separator: Static Separator Line" +msgstr "Skillelinje: Statisk skillelinje" + +#: authentik/stages/prompt/models.py +msgid "Hidden: Hidden field, can be used to insert data into form." +msgstr "Skjult: Skjult felt, kan brukes til å sette inn data i skjemaet." + +#: authentik/stages/prompt/models.py +msgid "Static: Static value, displayed as-is." +msgstr "Statisk: Statisk verdi, vises som den er." + +#: authentik/stages/prompt/models.py +msgid "Alert (Info): Static alert box with info styling" +msgstr "" + +#: authentik/stages/prompt/models.py +msgid "Alert (Warning): Static alert box with warning styling" +msgstr "" + +#: authentik/stages/prompt/models.py +msgid "Alert (Danger): Static alert box with danger styling" +msgstr "" + +#: authentik/stages/prompt/models.py +msgid "authentik: Selection of locales authentik supports" +msgstr "authentik: Utvalg av språk som authentik støtter" + +#: authentik/stages/prompt/models.py +msgid "Name of the form field, also used to store the value" +msgstr "Navn på skjemafeltet, brukes også til å lagre verdien" + +#: authentik/stages/prompt/models.py +msgid "" +"Optionally provide a short hint that describes the expected input value. " +"When creating a fixed choice field, enable interpreting as expression and " +"return a list to return multiple choices." +msgstr "" +"Oppgi eventuelt et kort hint som beskriver forventet inndata. Når du " +"oppretter et fast valgfelt, kan du aktivere tolking som uttrykk og returnere" +" en liste for å gi flere valg." + +#: authentik/stages/prompt/models.py +msgid "" +"Optionally pre-fill the input with an initial value. When creating a fixed " +"choice field, enable interpreting as expression and return a list to return " +"multiple default choices." +msgstr "" +"Forhåndsutfyll eventuelt feltet med en startverdi. Når du oppretter et fast " +"valgfelt, kan du aktivere tolking som uttrykk og returnere en liste for å gi" +" flere standardvalg." + +#: authentik/stages/prompt/models.py +msgid "Prompt" +msgstr "Forespørsel" + +#: authentik/stages/prompt/models.py +msgid "Prompts" +msgstr "Forespørsler" + +#: authentik/stages/prompt/models.py +msgid "Prompt Stage" +msgstr "Forespørselstrinn" + +#: authentik/stages/prompt/models.py +msgid "Prompt Stages" +msgstr "Forespørselstrinn" + +#: authentik/stages/prompt/stage.py +msgid "Passwords don't match." +msgstr "Passordene stemmer ikke overens." + +#: authentik/stages/redirect/api.py +msgid "Target URL should be present when mode is Static." +msgstr "Mål-URL må være oppgitt når modusen er statisk." + +#: authentik/stages/redirect/api.py +msgid "Target Flow should be present when mode is Flow." +msgstr "Målflyt må være oppgitt når modusen er flyt." + +#: authentik/stages/redirect/models.py +msgid "Redirect Stage" +msgstr "Omdirigeringstrinn" + +#: authentik/stages/redirect/models.py +msgid "Redirect Stages" +msgstr "Omdirigeringstrinn" + +#: authentik/stages/user_delete/models.py +msgid "User Delete Stage" +msgstr "Trinn for brukersletting" + +#: authentik/stages/user_delete/models.py +msgid "User Delete Stages" +msgstr "Trinn for brukersletting" + +#: authentik/stages/user_delete/stage.py +msgid "No Pending User." +msgstr "Ingen ventende bruker." + +#: authentik/stages/user_login/models.py +msgid "Bind sessions created by this stage to the configured network" +msgstr "" +"Knytt økter opprettet av dette trinnet til det konfigurerte nettverket" + +#: authentik/stages/user_login/models.py +msgid "Bind sessions created by this stage to the configured GeoIP location" +msgstr "" +"Knytt økter opprettet av dette trinnet til den konfigurerte GeoIP-lokasjonen" + +#: authentik/stages/user_login/models.py +msgid "Terminate all other sessions of the user logging in." +msgstr "Avslutt alle andre økter for brukeren som logger inn." + +#: authentik/stages/user_login/models.py +msgid "" +"Offset the session will be extended by when the user picks the remember me " +"option. Default of 0 means that the remember me option will not be shown. " +"(Format: hours=-1;minutes=-2;seconds=-3)" +msgstr "" +"Forskyvning økten utvides med når brukeren velger husk meg-alternativet. " +"Standardverdien 0 betyr at husk meg-alternativet ikke vises. (Format: " +"hours=-1;minutes=-2;seconds=-3)" + +#: authentik/stages/user_login/models.py +msgid "" +"When set to a non-zero value, authentik will save a cookie with a longer " +"expiry,to remember the device the user is logging in from. (Format: " +"hours=-1;minutes=-2;seconds=-3)" +msgstr "" +"Når satt til en verdi ulik null, vil authentik lagre en informasjonskapsel " +"med lengre utløpstid for å huske enheten brukeren logger inn fra. (Format: " +"hours=-1;minutes=-2;seconds=-3)" + +#: authentik/stages/user_login/models.py +msgid "User Login Stage" +msgstr "Trinn for brukerinnlogging" + +#: authentik/stages/user_login/models.py +msgid "User Login Stages" +msgstr "Trinn for brukerinnlogging" + +#: authentik/stages/user_login/stage.py +msgid "No Pending user to login." +msgstr "Ingen ventende bruker å logge inn." + +#: authentik/stages/user_logout/models.py +msgid "User Logout Stage" +msgstr "Trinn for brukerutlogging" + +#: authentik/stages/user_logout/models.py +msgid "User Logout Stages" +msgstr "Trinn for brukerutlogging" + +#: authentik/stages/user_write/models.py +msgid "When set, newly created users are inactive and cannot login." +msgstr "" +"Når angitt, er nylig opprettede brukere inaktive og kan ikke logge inn." + +#: authentik/stages/user_write/models.py +msgid "Optionally add newly created users to this group." +msgstr "Legg eventuelt til nylig opprettede brukere i denne gruppen." + +#: authentik/stages/user_write/models.py +msgid "User Write Stage" +msgstr "Trinn for brukerskriving" + +#: authentik/stages/user_write/models.py +msgid "User Write Stages" +msgstr "Trinn for brukerskriving" + +#: authentik/stages/user_write/stage.py +msgid "No Pending data." +msgstr "Ingen ventende data." + +#: authentik/stages/user_write/stage.py +msgid "No user found and can't create new user." +msgstr "Ingen bruker funnet, og kan ikke opprette ny bruker." + +#: authentik/stages/user_write/stage.py +msgid "Failed to update user. Please try again later." +msgstr "Klarte ikke å oppdatere bruker. Vennligst prøv igjen senere." + +#: authentik/tasks/models.py +msgid "Tenant this task belongs to" +msgstr "Leietaker denne oppgaven tilhører" + +#: authentik/tasks/models.py +msgid "Retry failed task" +msgstr "Prøv mislykket oppgave på nytt" + +#: authentik/tasks/models.py +msgid "Task log" +msgstr "Oppgavelogg" + +#: authentik/tasks/models.py +msgid "Task logs" +msgstr "Oppgavelogger" + +#: authentik/tasks/models.py +msgid "Worker status" +msgstr "Arbeiderstatus" + +#: authentik/tasks/models.py +msgid "Worker statuses" +msgstr "Arbeiderstatuser" + +#: authentik/tasks/schedules/models.py +msgid "Unique schedule identifier" +msgstr "Unik planleggeridentifikator" + +#: authentik/tasks/schedules/models.py +msgid "User schedule identifier" +msgstr "Brukerens planleggeridentifikator" + +#: authentik/tasks/schedules/models.py +msgid "Manually trigger a schedule" +msgstr "Utløs en planlegging manuelt" + +#: authentik/tasks/tasks.py +msgid "Remove old worker statuses." +msgstr "Fjern gamle arbeiderstatuser." + +#: authentik/tenants/api/settings.py +#, python-brace-format +msgid "Value for flag {flag_key} needs to be of type {type}." +msgstr "Verdien for flagget {flag_key} må være av typen {type}." + +#: authentik/tenants/models.py +msgid "" +"Schema name must start with t_, only contain lowercase letters and numbers " +"and be less than 63 characters." +msgstr "" +"Skjemanavnet må starte med t_, kun inneholde små bokstaver og tall, og være " +"kortere enn 63 tegn." + +#: authentik/tenants/models.py +msgid "Configure how authentik should show avatars for users." +msgstr "Konfigurer hvordan authentik skal vise avatarer for brukere." + +#: authentik/tenants/models.py +msgid "Enable the ability for users to change their name." +msgstr "Aktiver muligheten for brukere til å endre navnet sitt." + +#: authentik/tenants/models.py +msgid "Enable the ability for users to change their email address." +msgstr "Aktiver muligheten for brukere til å endre e-postadressen sin." + +#: authentik/tenants/models.py +msgid "Enable the ability for users to change their username." +msgstr "Aktiver muligheten for brukere til å endre brukernavnet sitt." + +#: authentik/tenants/models.py +msgid "" +"Events will be deleted after this duration.(Format: " +"weeks=3;days=2;hours=3,seconds=2)." +msgstr "" +"Hendelser vil bli slettet etter denne varigheten. (Format: " +"weeks=3;days=2;hours=3,seconds=2)." + +#: authentik/tenants/models.py +msgid "Reputation cannot decrease lower than this value. Zero or negative." +msgstr "Omdømme kan ikke synke lavere enn denne verdien. Null eller negativ." + +#: authentik/tenants/models.py +msgid "Reputation cannot increase higher than this value. Zero or positive." +msgstr "Omdømme kan ikke øke høyere enn denne verdien. Null eller positiv." + +#: authentik/tenants/models.py +msgid "The option configures the footer links on the flow executor pages." +msgstr "" +"Dette alternativet konfigurerer bunntekstlenkene på sidene for flytkjøring." + +#: authentik/tenants/models.py +msgid "" +"When enabled, all the events caused by a user will be deleted upon the " +"user's deletion." +msgstr "" +"Når det er aktivert, vil alle hendelser forårsaket av en bruker bli slettet " +"når brukeren slettes." + +#: authentik/tenants/models.py +msgid "Globally enable/disable impersonation." +msgstr "Aktiver/deaktiver identitetsetterligning globalt." + +#: authentik/tenants/models.py +msgid "Require administrators to provide a reason for impersonating a user." +msgstr "Krev at administratorer oppgir en grunn for å etterligne en bruker." + +#: authentik/tenants/models.py +msgid "Default token duration" +msgstr "Standard tokenvarighet" + +#: authentik/tenants/models.py +msgid "Default token length" +msgstr "Standard tokenlengde" + +#: authentik/tenants/models.py +msgid "Default page size for API responses, if no size was requested." +msgstr "" +"Standard sidestørrelse for API-svar, hvis ingen størrelse ble forespurt." + +#: authentik/tenants/models.py +msgid "Maximum page size" +msgstr "Maksimal sidestørrelse" + +#: authentik/tenants/models.py +msgid "Tenant" +msgstr "Leietaker" + +#: authentik/tenants/models.py +msgid "Tenants" +msgstr "Leietakere" + +#: authentik/tenants/models.py +msgid "Domain" +msgstr "Domene" + +#: authentik/tenants/models.py +msgid "Domains" +msgstr "Domener" + +#: packages/ak-guardian/guardian/models.py +msgid "object ID" +msgstr "objekt-ID" + +#: packages/django-channels-postgres/django_channels_postgres/models.py +msgid "Group channel" +msgstr "Gruppekanal" + +#: packages/django-channels-postgres/django_channels_postgres/models.py +msgid "Group channels" +msgstr "Gruppekanaler" + +#: packages/django-channels-postgres/django_channels_postgres/models.py +msgid "Message" +msgstr "Melding" + +#: packages/django-channels-postgres/django_channels_postgres/models.py +msgid "Messages" +msgstr "Meldinger" + +#: packages/django-dramatiq-postgres/django_dramatiq_postgres/models.py +msgid "Queue name" +msgstr "Kønavn" + +#: packages/django-dramatiq-postgres/django_dramatiq_postgres/models.py +msgid "Dramatiq actor name" +msgstr "Navn på Dramatiq-aktør" + +#: packages/django-dramatiq-postgres/django_dramatiq_postgres/models.py +msgid "Message body" +msgstr "Meldingskropp" + +#: packages/django-dramatiq-postgres/django_dramatiq_postgres/models.py +msgid "Task status" +msgstr "Oppgavestatus" + +#: packages/django-dramatiq-postgres/django_dramatiq_postgres/models.py +msgid "Task last modified time" +msgstr "Tidspunkt for siste endring av oppgave" + +#: packages/django-dramatiq-postgres/django_dramatiq_postgres/models.py +msgid "Number of retries" +msgstr "Antall nye forsøk" + +#: packages/django-dramatiq-postgres/django_dramatiq_postgres/models.py +msgid "Planned execution time" +msgstr "Planlagt utførelsestid" + +#: packages/django-dramatiq-postgres/django_dramatiq_postgres/models.py +msgid "Task result" +msgstr "Oppgaveresultat" + +#: packages/django-dramatiq-postgres/django_dramatiq_postgres/models.py +msgid "Result expiry time" +msgstr "Utløpstid for resultat" + +#: packages/django-dramatiq-postgres/django_dramatiq_postgres/models.py +msgid "Task" +msgstr "Oppgave" + +#: packages/django-dramatiq-postgres/django_dramatiq_postgres/models.py +msgid "Tasks" +msgstr "Oppgaver" + +#: packages/django-dramatiq-postgres/django_dramatiq_postgres/models.py +#, python-format +msgid "%(value)s is not a valid crontab" +msgstr "%(value)s er ikke en gyldig crontab" + +#: packages/django-dramatiq-postgres/django_dramatiq_postgres/models.py +msgid "Dramatiq actor to call" +msgstr "Dramatiq-aktør som skal kalles opp" + +#: packages/django-dramatiq-postgres/django_dramatiq_postgres/models.py +msgid "Args to send to the actor" +msgstr "Argumenter som skal sendes til aktøren" + +#: packages/django-dramatiq-postgres/django_dramatiq_postgres/models.py +msgid "Kwargs to send to the actor" +msgstr "Kwargs som skal sendes til aktøren" + +#: packages/django-dramatiq-postgres/django_dramatiq_postgres/models.py +msgid "Options to send to the actor" +msgstr "Alternativer som skal sendes til aktøren" + +#: packages/django-dramatiq-postgres/django_dramatiq_postgres/models.py +msgid "When to schedule tasks" +msgstr "Når oppgaver skal planlegges" + +#: packages/django-dramatiq-postgres/django_dramatiq_postgres/models.py +msgid "Pause this schedule" +msgstr "Sett denne planleggingen på pause" + +#: packages/django-dramatiq-postgres/django_dramatiq_postgres/models.py +msgid "Schedule" +msgstr "Planlegging" + +#: packages/django-dramatiq-postgres/django_dramatiq_postgres/models.py +msgid "Schedules" +msgstr "Planlegginger" diff --git a/locale/pl_PL/LC_MESSAGES/django.mo b/locale/pl_PL/LC_MESSAGES/django.mo index f767718ea8..519c321544 100644 Binary files a/locale/pl_PL/LC_MESSAGES/django.mo and b/locale/pl_PL/LC_MESSAGES/django.mo differ diff --git a/locale/pl_PL/LC_MESSAGES/django.po b/locale/pl_PL/LC_MESSAGES/django.po index f3ad5b73fc..990df2cc23 100644 --- a/locale/pl_PL/LC_MESSAGES/django.po +++ b/locale/pl_PL/LC_MESSAGES/django.po @@ -6,16 +6,16 @@ # Translators: # Marc Schmitt, 2025 # Darek “NeroPcStation” NeroPcStation , 2025 -# Jens L. , 2025 +# Jens L. , 2026 # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-02-10 19:27+0000\n" +"POT-Creation-Date: 2026-05-06 00:27+0000\n" "PO-Revision-Date: 2025-12-01 19:09+0000\n" -"Last-Translator: Jens L. , 2025\n" +"Last-Translator: Jens L. , 2026\n" "Language-Team: Polish (Poland) (https://app.transifex.com/authentik/teams/119923/pl_PL/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -107,6 +107,14 @@ msgstr "Błąd walidacji" msgid "Blueprint file does not exist" msgstr "Plik szablonu nie istnieje" +#: authentik/blueprints/api.py +msgid "Context must be valid JSON" +msgstr "" + +#: authentik/blueprints/api.py +msgid "Context must be a JSON object" +msgstr "" + #: authentik/blueprints/api.py msgid "Failed to validate blueprint" msgstr "Nie udało się zweryfikować szablonu" @@ -115,6 +123,11 @@ msgstr "Nie udało się zweryfikować szablonu" msgid "Either path or content must be set." msgstr "Ścieżka albo treść muszą być ustawione." +#: authentik/blueprints/api.py +#, python-brace-format +msgid "User lacks permission to create {model}" +msgstr "" + #: authentik/blueprints/models.py msgid "Managed by authentik" msgstr "Zarządzane przez authentik" @@ -241,9 +254,12 @@ msgstr "" "zwracani są tylko dostawcy kanału zwrotnego. Gdy ustawiono na fałsz, " "dostawcy kanału zwrotnego są wykluczeni." -#: authentik/core/api/transactional_applications.py -#, python-brace-format -msgid "User lacks permission to create {model}" +#: authentik/core/api/users.py +msgid "Invalid password hash format. Must be a valid Django password hash." +msgstr "" + +#: authentik/core/api/users.py +msgid "Cannot set both password and password_hash. Use only one." msgstr "" #: authentik/core/api/users.py @@ -306,6 +322,12 @@ msgstr "" msgid "This field is required." msgstr "" +#: authentik/core/apps.py +msgid "" +"Configure if applications without any policy/group/user bindings should be " +"accessible to any user." +msgstr "" + #: authentik/core/models.py msgid "name" msgstr "nazwa" @@ -412,6 +434,10 @@ msgstr "Wewnętrzna nazwa aplikacji, używana w adresach URL." msgid "Open launch URL in a new browser tab or window." msgstr "Otwórz adres URL uruchamiania w nowej karcie lub oknie przeglądarki." +#: authentik/core/models.py +msgid "Hide this application from the user's My applications page." +msgstr "" + #: authentik/core/models.py msgid "Application" msgstr "Aplikacja" @@ -596,6 +622,14 @@ msgstr "" msgid "Go home" msgstr "Przejdź do domu" +#: authentik/core/templates/login/base_full.html +msgid "Site footer" +msgstr "" + +#: authentik/core/templates/login/base_full.html +msgid "Flow links" +msgstr "" + #: authentik/core/templates/login/base_full.html #: authentik/flows/templates/if/flow-sfe.html msgid "Powered by authentik" @@ -702,6 +736,10 @@ msgstr "" msgid "Discover, import and update certificates from the filesystem." msgstr "" +#: authentik/endpoints/api/stages.py +msgid "Selected connector is not compatible with this stage." +msgstr "" + #: authentik/endpoints/connectors/agent/api/connectors.py msgid "Selected platform not supported" msgstr "" @@ -756,6 +794,14 @@ msgstr "" msgid "Apple Nonces" msgstr "" +#: authentik/endpoints/connectors/agent/models.py +msgid "Apple Independent Secure Enclave" +msgstr "" + +#: authentik/endpoints/connectors/agent/models.py +msgid "Apple Independent Secure Enclaves" +msgstr "" + #: authentik/endpoints/facts.py msgid "Operating System name, such as 'Server 2022' or 'Ubuntu'" msgstr "" @@ -827,6 +873,12 @@ msgstr "" msgid "Enterprise is required to use this endpoint." msgstr "" +#: authentik/enterprise/audit/apps.py +msgid "" +"Include additional information in audit logs, may incur a performance " +"penalty." +msgstr "" + #: authentik/enterprise/endpoints/connectors/fleet/models.py #: authentik/events/models.py msgid "" @@ -842,6 +894,19 @@ msgstr "" msgid "Fleet Connectors" msgstr "" +#: authentik/enterprise/endpoints/connectors/google_chrome/models.py +msgid "Google Device Trust Connector" +msgstr "" + +#: authentik/enterprise/endpoints/connectors/google_chrome/models.py +msgid "Google Device Trust Connectors" +msgstr "" + +#: authentik/enterprise/endpoints/connectors/google_chrome/stage.py +#: authentik/enterprise/stages/authenticator_endpoint_gdtc/stage.py +msgid "Verifying your browser..." +msgstr "Weryfikowanie Twojej przeglądarki..." + #: authentik/enterprise/lifecycle/api/reviews.py msgid "You are not allowed to submit a review for this object." msgstr "" @@ -858,10 +923,6 @@ msgstr "" msgid "Grace period must be shorter than the interval." msgstr "" -#: authentik/enterprise/lifecycle/api/rules.py -msgid "Only one type-wide rule for each object type is allowed." -msgstr "" - #: authentik/enterprise/lifecycle/models.py msgid "" "Select which transports should be used to notify the reviewers. If none are " @@ -889,7 +950,8 @@ msgid "Go to {self._get_model_name()}" msgstr "" #: authentik/enterprise/lifecycle/models.py -msgid "Access review is due for {self.content_type.name} {str(self.object)}" +msgid "" +"Access review is due for {self.content_type.name.lower()} {object_label}" msgstr "" #: authentik/enterprise/lifecycle/models.py @@ -903,7 +965,7 @@ msgid "" msgstr "" #: authentik/enterprise/lifecycle/tasks.py -msgid "Dispatch tasks to validate lifecycle rules." +msgid "Dispatch tasks to apply lifecycle rules." msgstr "" #: authentik/enterprise/lifecycle/tasks.py @@ -1130,6 +1192,14 @@ msgstr "" msgid "Enterprise is required to use the OAuth mode." msgstr "" +#: authentik/enterprise/providers/ssf/models.py +msgid "SSF RFC Push" +msgstr "" + +#: authentik/enterprise/providers/ssf/models.py +msgid "SSF RFC Pull" +msgstr "" + #: authentik/enterprise/providers/ssf/models.py #: authentik/providers/oauth2/models.py msgid "Signing Key" @@ -1211,6 +1281,78 @@ msgstr "Pobierz" msgid "Generate data export." msgstr "" +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "User to lock. If omitted, locks the current user (self-service)." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "No lockdown flow configured." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "Lockdown flow is not applicable." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "Choose the target account, then return a flow link." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "No lockdown flow configured or the flow is not applicable" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "Permission denied (when targeting another user)" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Deactivate the user account (set is_active to False)" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Set an unusable password for the user" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Delete all active sessions for the user" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "" +"Revoke all tokens for the user (API, app password, recovery, verification, " +"OAuth)" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "" +"Flow to redirect users to after self-service lockdown. This flow should not " +"require authentication since the user's session is deleted." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Account Lockdown Stage" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Account Lockdown Stages" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/stage.py +msgid "No target user specified for account lockdown" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/stage.py +msgid "You do not have permission to lock down this account." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/stage.py +msgid "Account lockdown failed for this account." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/stage.py +msgid "Self-service account lockdown requires a completion flow." +msgstr "" + #: authentik/enterprise/stages/authenticator_endpoint_gdtc/models.py msgid "Endpoint Authenticator Google Device Trust Connector Stage" msgstr "" @@ -1227,10 +1369,6 @@ msgstr "" msgid "Endpoint Devices" msgstr "" -#: authentik/enterprise/stages/authenticator_endpoint_gdtc/stage.py -msgid "Verifying your browser..." -msgstr "Weryfikowanie Twojej przeglądarki..." - #: authentik/enterprise/stages/mtls/models.py msgid "" "Configure certificate authorities to validate the certificate against. This " @@ -1311,6 +1449,12 @@ msgstr "" "Wyślij powiadomienie tylko raz, na przykład podczas wysyłania webhooka na " "kanał czatu." +#: authentik/events/models.py +msgid "" +"When set, the selected ceritifcate is used to validate the certificate of " +"the webhook server." +msgstr "" + #: authentik/events/models.py msgid "" "Customize the body of the request. Mapping should return data that is JSON-" @@ -1475,6 +1619,15 @@ msgstr "Przed-przepływowe zasady" msgid "Flow" msgstr "Przepływ" +#: authentik/flows/apps.py +msgid "Refresh other tabs after successful authentication." +msgstr "" + +#: authentik/flows/apps.py +msgid "" +"Upon successful authentication, re-start authentication in other open tabs." +msgstr "" + #: authentik/flows/exceptions.py msgid "Flow does not apply to current user." msgstr "Przepływ nie dotyczy bieżącego użytkownika." @@ -1590,8 +1743,8 @@ msgstr "Token przepływu" msgid "Flow Tokens" msgstr "Tokeny przepływu" -#: authentik/flows/templates/if/flow.html -msgid "Site footer" +#: authentik/flows/planner.py +msgid "This link is invalid or has expired. Please request a new one." msgstr "" #: authentik/flows/views/executor.py @@ -1975,20 +2128,6 @@ msgstr "Punkty reputacji" msgid "Reputation Scores" msgstr "Punkty reputacji" -#: authentik/policies/templates/policies/buffer.html -msgid "Waiting for authentication..." -msgstr "Oczekiwanie na uwierzytelnienie..." - -#: authentik/policies/templates/policies/buffer.html -msgid "" -"You're already authenticating in another tab. This page will refresh once " -"authentication is completed." -msgstr "" - -#: authentik/policies/templates/policies/buffer.html -msgid "Authenticate in this tab" -msgstr "" - #: authentik/policies/templates/policies/denied.html msgid "Permission denied" msgstr "Odmowa uprawnień" @@ -2115,6 +2254,14 @@ msgstr "" msgid "Regular Expression URL matching" msgstr "" +#: authentik/providers/oauth2/models.py +msgid "Authorization" +msgstr "Autoryzacja" + +#: authentik/providers/oauth2/models.py +msgid "Logout" +msgstr "Wyloguj" + #: authentik/providers/oauth2/models.py msgid "Back-channel" msgstr "" @@ -2465,10 +2612,6 @@ msgstr "Dostawca proxy" msgid "Proxy Providers" msgstr "Dostawcy proxy" -#: authentik/providers/proxy/tasks.py -msgid "Terminate session on Proxy outpost." -msgstr "" - #: authentik/providers/rac/models.py authentik/stages/user_login/models.py msgid "" "Determines how long a session lasts. Default of 0 means that the sessions " @@ -2596,8 +2739,10 @@ msgstr "" " ograniczenie odbiorców nie zostanie dodane." #: authentik/providers/saml/models.py -msgid "Also known as EntityID" -msgstr "Znany również jako EntityID" +msgid "" +"Also known as EntityID. Providing a value overrides the default issuer " +"generated by authentik." +msgstr "" #: authentik/providers/saml/models.py msgid "SLS URL" @@ -2801,6 +2946,10 @@ msgstr "" msgid "SAML NameID format" msgstr "" +#: authentik/providers/saml/models.py +msgid "SAML Issuer used for this session" +msgstr "" + #: authentik/providers/saml/models.py msgid "SAML Session" msgstr "" @@ -2829,6 +2978,14 @@ msgstr "Slack" msgid "Salesforce" msgstr "" +#: authentik/providers/scim/models.py +msgid "Webex" +msgstr "" + +#: authentik/providers/scim/models.py +msgid "vCenter" +msgstr "" + #: authentik/providers/scim/models.py msgid "Group filters used to define sync-scope for groups." msgstr "" @@ -3089,7 +3246,7 @@ msgid "" " " msgstr "" -#: authentik/sources/ldap/api.py +#: authentik/sources/ldap/api/sources.py msgid "Only a single LDAP Source with password synchronization is allowed" msgstr "" @@ -3616,6 +3773,12 @@ msgstr "" " Może to stanowić zagrożenie bezpieczeństwa, ponieważ nie przeprowadza się " "weryfikacji identyfikatora żądania." +#: authentik/sources/saml/models.py +msgid "" +"When enabled, the IdP will re-authenticate the user even if a session " +"exists." +msgstr "" + #: authentik/sources/saml/models.py msgid "" "NameID Policy sent to the IdP. Can be unset, in which case no Policy is " @@ -4029,6 +4192,10 @@ msgstr "Etapy weryfikacji uwierzytelniacza" msgid "No (allowed) MFA authenticator configured." msgstr "Nie skonfigurowano (dozwolonego) uwierzytelniania MFA." +#: authentik/stages/authenticator_webauthn/models.py +msgid "When enabled, a given device can only be registered once." +msgstr "" + #: authentik/stages/authenticator_webauthn/models.py msgid "WebAuthn Authenticator Setup Stage" msgstr "Etap konfiguracji uwierzytelniacza WebAuthn" @@ -4165,6 +4332,10 @@ msgstr "" msgid "Event Notification" msgstr "" +#: authentik/stages/email/models.py authentik/stages/invitation/models.py +msgid "Invitation" +msgstr "Zaproszenie" + #: authentik/stages/email/models.py msgid "" "The time window used to count recent account recovery attempts. If the " @@ -4280,6 +4451,62 @@ msgstr "" "\n" "Ta wiadomość e-mail została wysłana z transportu powiadomień %(name)s.\n" +#: authentik/stages/email/templates/email/invitation.html +msgid "" +"\n" +" You're Invited!\n" +" " +msgstr "" + +#: authentik/stages/email/templates/email/invitation.html +#, python-format +msgid "" +"\n" +" You have been invited to join %(host)s. Click the button below to get started.\n" +" " +msgstr "" + +#: authentik/stages/email/templates/email/invitation.html +#, python-format +msgid "" +"\n" +" This invitation expires %(expires)s.\n" +" " +msgstr "" + +#: authentik/stages/email/templates/email/invitation.html +#: authentik/stages/email/templates/email/invitation.txt +msgid "Accept Invitation" +msgstr "" + +#: authentik/stages/email/templates/email/invitation.html +msgid "" +"\n" +" If you cannot click the button above, please copy and paste the following URL into your browser:\n" +" " +msgstr "" + +#: authentik/stages/email/templates/email/invitation.txt +msgid "You're Invited!" +msgstr "" + +#: authentik/stages/email/templates/email/invitation.txt +#, python-format +msgid "" +"You have been invited to join %(host)s. Use the link below to get started." +msgstr "" + +#: authentik/stages/email/templates/email/invitation.txt +#, python-format +msgid "This invitation expires %(expires)s." +msgstr "" + +#: authentik/stages/email/templates/email/invitation.txt +msgid "" +"If you cannot click the link above, please copy and paste the following URL " +"into your browser:" +msgstr "" + #: authentik/stages/email/templates/email/password_reset.html msgid "" "\n" @@ -4456,10 +4683,6 @@ msgstr "Gdy ta opcja jest włączona, zaproszenie zostanie usunięte po użyciu. msgid "Optional fixed data to enforce on user enrollment." msgstr "Opcjonalne stałe dane do wymuszenia przy rejestracji użytkownika." -#: authentik/stages/invitation/models.py -msgid "Invitation" -msgstr "Zaproszenie" - #: authentik/stages/invitation/models.py msgid "Invitations" msgstr "Zaproszenia" @@ -4583,6 +4806,18 @@ msgstr "Ukryte: Ukryte pole, może służyć do wstawiania danych do formularza. msgid "Static: Static value, displayed as-is." msgstr "Statyczny: wartość statyczna, wyświetlana w stanie, w jakim jest." +#: authentik/stages/prompt/models.py +msgid "Alert (Info): Static alert box with info styling" +msgstr "" + +#: authentik/stages/prompt/models.py +msgid "Alert (Warning): Static alert box with warning styling" +msgstr "" + +#: authentik/stages/prompt/models.py +msgid "Alert (Danger): Static alert box with danger styling" +msgstr "" + #: authentik/stages/prompt/models.py msgid "authentik: Selection of locales authentik supports" msgstr "authentik: Wybór ustawień regionalnych obsługiwanych przez authentik" diff --git a/locale/pt_BR/LC_MESSAGES/django.mo b/locale/pt_BR/LC_MESSAGES/django.mo index f0d5241bd9..5ba994929e 100644 Binary files a/locale/pt_BR/LC_MESSAGES/django.mo and b/locale/pt_BR/LC_MESSAGES/django.mo differ diff --git a/locale/pt_BR/LC_MESSAGES/django.po b/locale/pt_BR/LC_MESSAGES/django.po index 6bbb0bebfe..320a7593c2 100644 --- a/locale/pt_BR/LC_MESSAGES/django.po +++ b/locale/pt_BR/LC_MESSAGES/django.po @@ -6,17 +6,18 @@ # Translators: # Marc Schmitt, 2025 # André Cristian Neidert, 2025 -# Rafael Mundel, 2025 # Ariel Amaral, 2025 +# Rafael Mundel, 2026 +# Gil Poiares-Oliveira, 2026 # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-02-10 19:27+0000\n" +"POT-Creation-Date: 2026-05-06 00:27+0000\n" "PO-Revision-Date: 2025-12-01 19:09+0000\n" -"Last-Translator: Ariel Amaral, 2025\n" +"Last-Translator: Gil Poiares-Oliveira, 2026\n" "Language-Team: Portuguese (Brazil) (https://app.transifex.com/authentik/teams/119923/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -111,6 +112,14 @@ msgstr "Erro de Validação" msgid "Blueprint file does not exist" msgstr "Arquivo de Blueprint não existe" +#: authentik/blueprints/api.py +msgid "Context must be valid JSON" +msgstr "" + +#: authentik/blueprints/api.py +msgid "Context must be a JSON object" +msgstr "" + #: authentik/blueprints/api.py msgid "Failed to validate blueprint" msgstr "Falha ao validar o projeto" @@ -119,6 +128,11 @@ msgstr "Falha ao validar o projeto" msgid "Either path or content must be set." msgstr "O caminho ou o conteúdo devem ser definidos." +#: authentik/blueprints/api.py +#, python-brace-format +msgid "User lacks permission to create {model}" +msgstr "O usuário não tem permissão para criar {model}" + #: authentik/blueprints/models.py msgid "Managed by authentik" msgstr "Gerenciado pelo authentik" @@ -248,10 +262,13 @@ msgstr "" "true, somente os provedores de backchannel são retornados. Quando definido " "para false, provedores de backchannel são excluídos" -#: authentik/core/api/transactional_applications.py -#, python-brace-format -msgid "User lacks permission to create {model}" -msgstr "O usuário não tem permissão para criar {model}" +#: authentik/core/api/users.py +msgid "Invalid password hash format. Must be a valid Django password hash." +msgstr "" + +#: authentik/core/api/users.py +msgid "Cannot set both password and password_hash. Use only one." +msgstr "" #: authentik/core/api/users.py msgid "No leading or trailing slashes allowed." @@ -313,6 +330,12 @@ msgstr "" msgid "This field is required." msgstr "Este campo é obrigatório." +#: authentik/core/apps.py +msgid "" +"Configure if applications without any policy/group/user bindings should be " +"accessible to any user." +msgstr "" + #: authentik/core/models.py msgid "name" msgstr "nome" @@ -419,6 +442,10 @@ msgstr "Nome do aplicativo interno, usado em URLs." msgid "Open launch URL in a new browser tab or window." msgstr "Abra o URL de inicialização em uma nova guia ou janela do navegador." +#: authentik/core/models.py +msgid "Hide this application from the user's My applications page." +msgstr "" + #: authentik/core/models.py msgid "Application" msgstr "Aplicativo" @@ -607,6 +634,14 @@ msgstr "Remover usuários temporários criados por Fontes SAML." msgid "Go home" msgstr "Ir para casa" +#: authentik/core/templates/login/base_full.html +msgid "Site footer" +msgstr "Rodapé do site" + +#: authentik/core/templates/login/base_full.html +msgid "Flow links" +msgstr "" + #: authentik/core/templates/login/base_full.html #: authentik/flows/templates/if/flow-sfe.html msgid "Powered by authentik" @@ -715,6 +750,10 @@ msgstr "Visualizar chave privada do par de chaves" msgid "Discover, import and update certificates from the filesystem." msgstr "Descobrir, importar e atualizar certificados do sistema de arquivos." +#: authentik/endpoints/api/stages.py +msgid "Selected connector is not compatible with this stage." +msgstr "" + #: authentik/endpoints/connectors/agent/api/connectors.py msgid "Selected platform not supported" msgstr "A plataforma selecionada não é compatível." @@ -769,6 +808,14 @@ msgstr "Nonce Apple" msgid "Apple Nonces" msgstr "Nonces Apple" +#: authentik/endpoints/connectors/agent/models.py +msgid "Apple Independent Secure Enclave" +msgstr "" + +#: authentik/endpoints/connectors/agent/models.py +msgid "Apple Independent Secure Enclaves" +msgstr "" + #: authentik/endpoints/facts.py msgid "Operating System name, such as 'Server 2022' or 'Ubuntu'" msgstr "" @@ -839,6 +886,12 @@ msgstr "Enterprise é necessário para criar/atualizar esse objeto." msgid "Enterprise is required to use this endpoint." msgstr "Enterprise é necessário para usar este endpoint." +#: authentik/enterprise/audit/apps.py +msgid "" +"Include additional information in audit logs, may incur a performance " +"penalty." +msgstr "" + #: authentik/enterprise/endpoints/connectors/fleet/models.py #: authentik/events/models.py msgid "" @@ -856,6 +909,19 @@ msgstr "" msgid "Fleet Connectors" msgstr "" +#: authentik/enterprise/endpoints/connectors/google_chrome/models.py +msgid "Google Device Trust Connector" +msgstr "" + +#: authentik/enterprise/endpoints/connectors/google_chrome/models.py +msgid "Google Device Trust Connectors" +msgstr "" + +#: authentik/enterprise/endpoints/connectors/google_chrome/stage.py +#: authentik/enterprise/stages/authenticator_endpoint_gdtc/stage.py +msgid "Verifying your browser..." +msgstr "Verificando seu navegador…" + #: authentik/enterprise/lifecycle/api/reviews.py msgid "You are not allowed to submit a review for this object." msgstr "" @@ -872,10 +938,6 @@ msgstr "" msgid "Grace period must be shorter than the interval." msgstr "" -#: authentik/enterprise/lifecycle/api/rules.py -msgid "Only one type-wide rule for each object type is allowed." -msgstr "" - #: authentik/enterprise/lifecycle/models.py msgid "" "Select which transports should be used to notify the reviewers. If none are " @@ -903,7 +965,8 @@ msgid "Go to {self._get_model_name()}" msgstr "" #: authentik/enterprise/lifecycle/models.py -msgid "Access review is due for {self.content_type.name} {str(self.object)}" +msgid "" +"Access review is due for {self.content_type.name.lower()} {object_label}" msgstr "" #: authentik/enterprise/lifecycle/models.py @@ -917,7 +980,7 @@ msgid "" msgstr "" #: authentik/enterprise/lifecycle/tasks.py -msgid "Dispatch tasks to validate lifecycle rules." +msgid "Dispatch tasks to apply lifecycle rules." msgstr "" #: authentik/enterprise/lifecycle/tasks.py @@ -1161,6 +1224,14 @@ msgstr "Enterprise é necessário para usar EAP-TLS." msgid "Enterprise is required to use the OAuth mode." msgstr "Enterprise é necessário para usar o modo OAuth." +#: authentik/enterprise/providers/ssf/models.py +msgid "SSF RFC Push" +msgstr "" + +#: authentik/enterprise/providers/ssf/models.py +msgid "SSF RFC Pull" +msgstr "" + #: authentik/enterprise/providers/ssf/models.py #: authentik/providers/oauth2/models.py msgid "Signing Key" @@ -1242,6 +1313,78 @@ msgstr "Download" msgid "Generate data export." msgstr "Gerar exportação de dados." +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "User to lock. If omitted, locks the current user (self-service)." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "No lockdown flow configured." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "Lockdown flow is not applicable." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "Choose the target account, then return a flow link." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "No lockdown flow configured or the flow is not applicable" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "Permission denied (when targeting another user)" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Deactivate the user account (set is_active to False)" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Set an unusable password for the user" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Delete all active sessions for the user" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "" +"Revoke all tokens for the user (API, app password, recovery, verification, " +"OAuth)" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "" +"Flow to redirect users to after self-service lockdown. This flow should not " +"require authentication since the user's session is deleted." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Account Lockdown Stage" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Account Lockdown Stages" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/stage.py +msgid "No target user specified for account lockdown" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/stage.py +msgid "You do not have permission to lock down this account." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/stage.py +msgid "Account lockdown failed for this account." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/stage.py +msgid "Self-service account lockdown requires a completion flow." +msgstr "" + #: authentik/enterprise/stages/authenticator_endpoint_gdtc/models.py msgid "Endpoint Authenticator Google Device Trust Connector Stage" msgstr "Etapa do Conector Google Device Trust do autenticador de endpoint." @@ -1258,10 +1401,6 @@ msgstr "Dispositivo de endpoint." msgid "Endpoint Devices" msgstr "Dispositivos de endpoint." -#: authentik/enterprise/stages/authenticator_endpoint_gdtc/stage.py -msgid "Verifying your browser..." -msgstr "Verificando seu navegador…" - #: authentik/enterprise/stages/mtls/models.py msgid "" "Configure certificate authorities to validate the certificate against. This " @@ -1344,6 +1483,12 @@ msgstr "" "Envie uma notificação apenas uma vez, por exemplo, ao enviar um webhook para" " um canal de bate-papo." +#: authentik/events/models.py +msgid "" +"When set, the selected ceritifcate is used to validate the certificate of " +"the webhook server." +msgstr "" + #: authentik/events/models.py msgid "" "Customize the body of the request. Mapping should return data that is JSON-" @@ -1514,6 +1659,15 @@ msgstr "Políticas de pré-fluxo" msgid "Flow" msgstr "Fluxo" +#: authentik/flows/apps.py +msgid "Refresh other tabs after successful authentication." +msgstr "" + +#: authentik/flows/apps.py +msgid "" +"Upon successful authentication, re-start authentication in other open tabs." +msgstr "" + #: authentik/flows/exceptions.py msgid "Flow does not apply to current user." msgstr "O fluxo não se aplica ao usuário atual." @@ -1624,9 +1778,9 @@ msgstr "Token de Fluxo" msgid "Flow Tokens" msgstr "Tokens de Fluxo" -#: authentik/flows/templates/if/flow.html -msgid "Site footer" -msgstr "Rodapé do site" +#: authentik/flows/planner.py +msgid "This link is invalid or has expired. Please request a new one." +msgstr "" #: authentik/flows/views/executor.py msgid "Invalid next URL" @@ -2010,22 +2164,6 @@ msgstr "Pontuação de reputação" msgid "Reputation Scores" msgstr "Pontuações de reputação" -#: authentik/policies/templates/policies/buffer.html -msgid "Waiting for authentication..." -msgstr "Aguardando autenticação…" - -#: authentik/policies/templates/policies/buffer.html -msgid "" -"You're already authenticating in another tab. This page will refresh once " -"authentication is completed." -msgstr "" -"Você já está autenticando em outra aba. Esta página será atualizada quando a" -" autenticação for concluída." - -#: authentik/policies/templates/policies/buffer.html -msgid "Authenticate in this tab" -msgstr "Autenticar nesta aba" - #: authentik/policies/templates/policies/denied.html msgid "Permission denied" msgstr "Permissão negada" @@ -2150,6 +2288,14 @@ msgstr "Comparação estrita de URL" msgid "Regular Expression URL matching" msgstr "Correspondência de URL por expressão regular" +#: authentik/providers/oauth2/models.py +msgid "Authorization" +msgstr "Autorização" + +#: authentik/providers/oauth2/models.py +msgid "Logout" +msgstr "Sair" + #: authentik/providers/oauth2/models.py msgid "Back-channel" msgstr "Back-channel" @@ -2512,10 +2658,6 @@ msgstr "Provedor de proxy" msgid "Proxy Providers" msgstr "Provedores de proxy" -#: authentik/providers/proxy/tasks.py -msgid "Terminate session on Proxy outpost." -msgstr "Encerrar sessão no outpost Proxy" - #: authentik/providers/rac/models.py authentik/stages/user_login/models.py msgid "" "Determines how long a session lasts. Default of 0 means that the sessions " @@ -2648,8 +2790,10 @@ msgstr "" "branco, nenhuma restrição de público será adicionada." #: authentik/providers/saml/models.py -msgid "Also known as EntityID" -msgstr "Também conhecido como EntityID" +msgid "" +"Also known as EntityID. Providing a value overrides the default issuer " +"generated by authentik." +msgstr "" #: authentik/providers/saml/models.py msgid "SLS URL" @@ -2870,6 +3014,10 @@ msgstr "Valor do SAML NameID para essa sessão" msgid "SAML NameID format" msgstr "Formato do SAML NameID" +#: authentik/providers/saml/models.py +msgid "SAML Issuer used for this session" +msgstr "" + #: authentik/providers/saml/models.py msgid "SAML Session" msgstr "Sessão SAML" @@ -2898,6 +3046,14 @@ msgstr "Slack" msgid "Salesforce" msgstr "Salesforce" +#: authentik/providers/scim/models.py +msgid "Webex" +msgstr "" + +#: authentik/providers/scim/models.py +msgid "vCenter" +msgstr "" + #: authentik/providers/scim/models.py msgid "Group filters used to define sync-scope for groups." msgstr "" @@ -3181,7 +3337,7 @@ msgstr "" "e que o navegador esteja configurado corretamente. \n" "Contate seu administrador." -#: authentik/sources/ldap/api.py +#: authentik/sources/ldap/api/sources.py msgid "Only a single LDAP Source with password synchronization is allowed" msgstr "Somente uma Origem LDAP com sincronização de senha é aceita" @@ -3716,6 +3872,12 @@ msgstr "" "Permite fluxos de autenticação iniciados pelo IdP. Isso pode ser um risco de" " segurança, pois nenhuma validação do ID da solicitação é feita." +#: authentik/sources/saml/models.py +msgid "" +"When enabled, the IdP will re-authenticate the user even if a session " +"exists." +msgstr "" + #: authentik/sources/saml/models.py msgid "" "NameID Policy sent to the IdP. Can be unset, in which case no Policy is " @@ -4141,6 +4303,10 @@ msgstr "Etapas de validação do autenticador" msgid "No (allowed) MFA authenticator configured." msgstr "Nenhum autenticador MFA (permitido) configurado." +#: authentik/stages/authenticator_webauthn/models.py +msgid "When enabled, a given device can only be registered once." +msgstr "" + #: authentik/stages/authenticator_webauthn/models.py msgid "WebAuthn Authenticator Setup Stage" msgstr "Estágio de configuração do autenticador WebAuthn" @@ -4280,6 +4446,10 @@ msgstr "OTP por Email" msgid "Event Notification" msgstr "Notificação de Evento" +#: authentik/stages/email/models.py authentik/stages/invitation/models.py +msgid "Invitation" +msgstr "Convite" + #: authentik/stages/email/models.py msgid "" "The time window used to count recent account recovery attempts. If the " @@ -4399,6 +4569,62 @@ msgstr "" "\n" "Este email foi enviado pelo transporte de notificações %(name)s.\n" +#: authentik/stages/email/templates/email/invitation.html +msgid "" +"\n" +" You're Invited!\n" +" " +msgstr "" + +#: authentik/stages/email/templates/email/invitation.html +#, python-format +msgid "" +"\n" +" You have been invited to join %(host)s. Click the button below to get started.\n" +" " +msgstr "" + +#: authentik/stages/email/templates/email/invitation.html +#, python-format +msgid "" +"\n" +" This invitation expires %(expires)s.\n" +" " +msgstr "" + +#: authentik/stages/email/templates/email/invitation.html +#: authentik/stages/email/templates/email/invitation.txt +msgid "Accept Invitation" +msgstr "" + +#: authentik/stages/email/templates/email/invitation.html +msgid "" +"\n" +" If you cannot click the button above, please copy and paste the following URL into your browser:\n" +" " +msgstr "" + +#: authentik/stages/email/templates/email/invitation.txt +msgid "You're Invited!" +msgstr "" + +#: authentik/stages/email/templates/email/invitation.txt +#, python-format +msgid "" +"You have been invited to join %(host)s. Use the link below to get started." +msgstr "" + +#: authentik/stages/email/templates/email/invitation.txt +#, python-format +msgid "This invitation expires %(expires)s." +msgstr "" + +#: authentik/stages/email/templates/email/invitation.txt +msgid "" +"If you cannot click the link above, please copy and paste the following URL " +"into your browser:" +msgstr "" + #: authentik/stages/email/templates/email/password_reset.html msgid "" "\n" @@ -4577,10 +4803,6 @@ msgstr "Quando ativado, o convite será excluído após o uso." msgid "Optional fixed data to enforce on user enrollment." msgstr "Dados fixos opcionais para aplicar na inscrição do usuário." -#: authentik/stages/invitation/models.py -msgid "Invitation" -msgstr "Convite" - #: authentik/stages/invitation/models.py msgid "Invitations" msgstr "Convites" @@ -4704,6 +4926,18 @@ msgstr "" msgid "Static: Static value, displayed as-is." msgstr "Estático: valor estático, exibido como está." +#: authentik/stages/prompt/models.py +msgid "Alert (Info): Static alert box with info styling" +msgstr "" + +#: authentik/stages/prompt/models.py +msgid "Alert (Warning): Static alert box with warning styling" +msgstr "" + +#: authentik/stages/prompt/models.py +msgid "Alert (Danger): Static alert box with danger styling" +msgstr "" + #: authentik/stages/prompt/models.py msgid "authentik: Selection of locales authentik supports" msgstr "authentik: Seleção de locais suportados pelo authentik" diff --git a/locale/pt_PT/LC_MESSAGES/django.po b/locale/pt_PT/LC_MESSAGES/django.po index 0a05678868..b9c90a3673 100644 --- a/locale/pt_PT/LC_MESSAGES/django.po +++ b/locale/pt_PT/LC_MESSAGES/django.po @@ -7,17 +7,18 @@ # Hélder Silva , 2025 # Sergio Reis, 2025 # Marc Schmitt, 2025 -# Gil Poiares-Oliveira, 2025 # Tiago Gaspar, 2025 +# G S, 2026 +# Gil Poiares-Oliveira, 2026 # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-02-10 19:27+0000\n" +"POT-Creation-Date: 2026-05-06 00:27+0000\n" "PO-Revision-Date: 2025-12-01 19:09+0000\n" -"Last-Translator: Tiago Gaspar, 2025\n" +"Last-Translator: Gil Poiares-Oliveira, 2026\n" "Language-Team: Portuguese (Portugal) (https://app.transifex.com/authentik/teams/119923/pt_PT/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -109,6 +110,14 @@ msgstr "Erro de validação" msgid "Blueprint file does not exist" msgstr "Ficheiro de modelos não existe" +#: authentik/blueprints/api.py +msgid "Context must be valid JSON" +msgstr "" + +#: authentik/blueprints/api.py +msgid "Context must be a JSON object" +msgstr "" + #: authentik/blueprints/api.py msgid "Failed to validate blueprint" msgstr "Falha na validação de modelo" @@ -117,6 +126,11 @@ msgstr "Falha na validação de modelo" msgid "Either path or content must be set." msgstr "O caminho ou o conteúdo devem ser definidos." +#: authentik/blueprints/api.py +#, python-brace-format +msgid "User lacks permission to create {model}" +msgstr "O utilizador não tem permissão para criar {model}" + #: authentik/blueprints/models.py msgid "Managed by authentik" msgstr "Gerido por authentik" @@ -244,10 +258,13 @@ msgstr "" "como verdadeiro, apenas os provedores de backchannel são retornados. Quando " "definido como falso, os provedores de backchannel são excluídos" -#: authentik/core/api/transactional_applications.py -#, python-brace-format -msgid "User lacks permission to create {model}" -msgstr "O utilizador não tem permissão para criar {model}" +#: authentik/core/api/users.py +msgid "Invalid password hash format. Must be a valid Django password hash." +msgstr "" + +#: authentik/core/api/users.py +msgid "Cannot set both password and password_hash. Use only one." +msgstr "" #: authentik/core/api/users.py msgid "No leading or trailing slashes allowed." @@ -309,6 +326,12 @@ msgstr "" msgid "This field is required." msgstr "Este campo é necessário." +#: authentik/core/apps.py +msgid "" +"Configure if applications without any policy/group/user bindings should be " +"accessible to any user." +msgstr "" + #: authentik/core/models.py msgid "name" msgstr "nome" @@ -415,6 +438,10 @@ msgstr "Nome interno da aplicação, usado em URLs." msgid "Open launch URL in a new browser tab or window." msgstr "Abrir o URL de inicialização num novo separador ou janela do browser." +#: authentik/core/models.py +msgid "Hide this application from the user's My applications page." +msgstr "" + #: authentik/core/models.py msgid "Application" msgstr "Aplicação" @@ -602,6 +629,14 @@ msgstr "" msgid "Go home" msgstr "Ir para início" +#: authentik/core/templates/login/base_full.html +msgid "Site footer" +msgstr "" + +#: authentik/core/templates/login/base_full.html +msgid "Flow links" +msgstr "" + #: authentik/core/templates/login/base_full.html #: authentik/flows/templates/if/flow-sfe.html msgid "Powered by authentik" @@ -708,6 +743,10 @@ msgstr "" msgid "Discover, import and update certificates from the filesystem." msgstr "Descobrir, importar e atualizar certificados do sistema de arquivos." +#: authentik/endpoints/api/stages.py +msgid "Selected connector is not compatible with this stage." +msgstr "" + #: authentik/endpoints/connectors/agent/api/connectors.py msgid "Selected platform not supported" msgstr "" @@ -762,6 +801,14 @@ msgstr "" msgid "Apple Nonces" msgstr "" +#: authentik/endpoints/connectors/agent/models.py +msgid "Apple Independent Secure Enclave" +msgstr "" + +#: authentik/endpoints/connectors/agent/models.py +msgid "Apple Independent Secure Enclaves" +msgstr "" + #: authentik/endpoints/facts.py msgid "Operating System name, such as 'Server 2022' or 'Ubuntu'" msgstr "" @@ -832,6 +879,12 @@ msgstr "Enterprise necessário para criar/atualizar este objeto." msgid "Enterprise is required to use this endpoint." msgstr "" +#: authentik/enterprise/audit/apps.py +msgid "" +"Include additional information in audit logs, may incur a performance " +"penalty." +msgstr "" + #: authentik/enterprise/endpoints/connectors/fleet/models.py #: authentik/events/models.py msgid "" @@ -849,6 +902,19 @@ msgstr "" msgid "Fleet Connectors" msgstr "" +#: authentik/enterprise/endpoints/connectors/google_chrome/models.py +msgid "Google Device Trust Connector" +msgstr "" + +#: authentik/enterprise/endpoints/connectors/google_chrome/models.py +msgid "Google Device Trust Connectors" +msgstr "" + +#: authentik/enterprise/endpoints/connectors/google_chrome/stage.py +#: authentik/enterprise/stages/authenticator_endpoint_gdtc/stage.py +msgid "Verifying your browser..." +msgstr "A verificar o seu browser..." + #: authentik/enterprise/lifecycle/api/reviews.py msgid "You are not allowed to submit a review for this object." msgstr "" @@ -865,10 +931,6 @@ msgstr "" msgid "Grace period must be shorter than the interval." msgstr "" -#: authentik/enterprise/lifecycle/api/rules.py -msgid "Only one type-wide rule for each object type is allowed." -msgstr "" - #: authentik/enterprise/lifecycle/models.py msgid "" "Select which transports should be used to notify the reviewers. If none are " @@ -896,7 +958,8 @@ msgid "Go to {self._get_model_name()}" msgstr "" #: authentik/enterprise/lifecycle/models.py -msgid "Access review is due for {self.content_type.name} {str(self.object)}" +msgid "" +"Access review is due for {self.content_type.name.lower()} {object_label}" msgstr "" #: authentik/enterprise/lifecycle/models.py @@ -910,7 +973,7 @@ msgid "" msgstr "" #: authentik/enterprise/lifecycle/tasks.py -msgid "Dispatch tasks to validate lifecycle rules." +msgid "Dispatch tasks to apply lifecycle rules." msgstr "" #: authentik/enterprise/lifecycle/tasks.py @@ -1140,6 +1203,14 @@ msgstr "" msgid "Enterprise is required to use the OAuth mode." msgstr "" +#: authentik/enterprise/providers/ssf/models.py +msgid "SSF RFC Push" +msgstr "" + +#: authentik/enterprise/providers/ssf/models.py +msgid "SSF RFC Pull" +msgstr "" + #: authentik/enterprise/providers/ssf/models.py #: authentik/providers/oauth2/models.py msgid "Signing Key" @@ -1221,6 +1292,78 @@ msgstr "Descarregar" msgid "Generate data export." msgstr "" +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "User to lock. If omitted, locks the current user (self-service)." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "No lockdown flow configured." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "Lockdown flow is not applicable." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "Choose the target account, then return a flow link." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "No lockdown flow configured or the flow is not applicable" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "Permission denied (when targeting another user)" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Deactivate the user account (set is_active to False)" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Set an unusable password for the user" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Delete all active sessions for the user" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "" +"Revoke all tokens for the user (API, app password, recovery, verification, " +"OAuth)" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "" +"Flow to redirect users to after self-service lockdown. This flow should not " +"require authentication since the user's session is deleted." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Account Lockdown Stage" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Account Lockdown Stages" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/stage.py +msgid "No target user specified for account lockdown" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/stage.py +msgid "You do not have permission to lock down this account." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/stage.py +msgid "Account lockdown failed for this account." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/stage.py +msgid "Self-service account lockdown requires a completion flow." +msgstr "" + #: authentik/enterprise/stages/authenticator_endpoint_gdtc/models.py msgid "Endpoint Authenticator Google Device Trust Connector Stage" msgstr "" @@ -1239,10 +1382,6 @@ msgstr "Dispositivo do ponto de ligação" msgid "Endpoint Devices" msgstr "Dispositivos do ponto de ligação" -#: authentik/enterprise/stages/authenticator_endpoint_gdtc/stage.py -msgid "Verifying your browser..." -msgstr "A verificar o seu browser..." - #: authentik/enterprise/stages/mtls/models.py msgid "" "Configure certificate authorities to validate the certificate against. This " @@ -1323,6 +1462,12 @@ msgstr "" "Enviar a notificação apenas uma vez, por exemplo, ao enviar um webhook para " "um canal de chat." +#: authentik/events/models.py +msgid "" +"When set, the selected ceritifcate is used to validate the certificate of " +"the webhook server." +msgstr "" + #: authentik/events/models.py msgid "" "Customize the body of the request. Mapping should return data that is JSON-" @@ -1489,6 +1634,15 @@ msgstr "Políticas de pré-fluxo" msgid "Flow" msgstr "Fluxo" +#: authentik/flows/apps.py +msgid "Refresh other tabs after successful authentication." +msgstr "" + +#: authentik/flows/apps.py +msgid "" +"Upon successful authentication, re-start authentication in other open tabs." +msgstr "" + #: authentik/flows/exceptions.py msgid "Flow does not apply to current user." msgstr "O fluxo não se aplica ao utilizador atual." @@ -1602,8 +1756,8 @@ msgstr "Token do fluxo" msgid "Flow Tokens" msgstr "Tokens do fluxo" -#: authentik/flows/templates/if/flow.html -msgid "Site footer" +#: authentik/flows/planner.py +msgid "This link is invalid or has expired. Please request a new one." msgstr "" #: authentik/flows/views/executor.py @@ -1991,20 +2145,6 @@ msgstr "Pontuação da reputação" msgid "Reputation Scores" msgstr "Pontuações da reputação" -#: authentik/policies/templates/policies/buffer.html -msgid "Waiting for authentication..." -msgstr "A aguardar autenticação" - -#: authentik/policies/templates/policies/buffer.html -msgid "" -"You're already authenticating in another tab. This page will refresh once " -"authentication is completed." -msgstr "" - -#: authentik/policies/templates/policies/buffer.html -msgid "Authenticate in this tab" -msgstr "Autenticar nesta aba" - #: authentik/policies/templates/policies/denied.html msgid "Permission denied" msgstr "Permissão negada" @@ -2130,6 +2270,14 @@ msgstr "Comparação rigorosa de URL" msgid "Regular Expression URL matching" msgstr "Correspondência de URL com expressões regulares" +#: authentik/providers/oauth2/models.py +msgid "Authorization" +msgstr "Autorização" + +#: authentik/providers/oauth2/models.py +msgid "Logout" +msgstr "" + #: authentik/providers/oauth2/models.py msgid "Back-channel" msgstr "Back-channel" @@ -2492,10 +2640,6 @@ msgstr "Provedor de Proxy" msgid "Proxy Providers" msgstr "Provedores de Proxy" -#: authentik/providers/proxy/tasks.py -msgid "Terminate session on Proxy outpost." -msgstr "Terminar sessão no Proxy outpost " - #: authentik/providers/rac/models.py authentik/stages/user_login/models.py msgid "" "Determines how long a session lasts. Default of 0 means that the sessions " @@ -2629,8 +2773,10 @@ msgstr "" "branco, nenhuma restrição de audiência será adicionada." #: authentik/providers/saml/models.py -msgid "Also known as EntityID" -msgstr "Também conhecido como EntityID." +msgid "" +"Also known as EntityID. Providing a value overrides the default issuer " +"generated by authentik." +msgstr "" #: authentik/providers/saml/models.py msgid "SLS URL" @@ -2849,6 +2995,10 @@ msgstr "" msgid "SAML NameID format" msgstr "" +#: authentik/providers/saml/models.py +msgid "SAML Issuer used for this session" +msgstr "" + #: authentik/providers/saml/models.py msgid "SAML Session" msgstr "Instância SAML" @@ -2877,6 +3027,14 @@ msgstr "Slack" msgid "Salesforce" msgstr "Salesforce" +#: authentik/providers/scim/models.py +msgid "Webex" +msgstr "" + +#: authentik/providers/scim/models.py +msgid "vCenter" +msgstr "" + #: authentik/providers/scim/models.py msgid "Group filters used to define sync-scope for groups." msgstr "" @@ -3156,7 +3314,7 @@ msgstr "" " Contacte o seu administrador.\n" " " -#: authentik/sources/ldap/api.py +#: authentik/sources/ldap/api/sources.py msgid "Only a single LDAP Source with password synchronization is allowed" msgstr "" "Apenas é permitida uma única fonte LDAP com sincronização de palavras-passe" @@ -3688,6 +3846,12 @@ msgstr "" "Permite fluxos de autenticação iniciados pelo IdP. Isto pode ser um risco de" " segurança uma vez que não é feita nenhuma validação do ID do pedido." +#: authentik/sources/saml/models.py +msgid "" +"When enabled, the IdP will re-authenticate the user even if a session " +"exists." +msgstr "" + #: authentik/sources/saml/models.py msgid "" "NameID Policy sent to the IdP. Can be unset, in which case no Policy is " @@ -4112,6 +4276,10 @@ msgstr "Etapas de validação do autenticador" msgid "No (allowed) MFA authenticator configured." msgstr "Nenhum autenticador MFA (permitido) configurado." +#: authentik/stages/authenticator_webauthn/models.py +msgid "When enabled, a given device can only be registered once." +msgstr "" + #: authentik/stages/authenticator_webauthn/models.py msgid "WebAuthn Authenticator Setup Stage" msgstr "Etapa de configuração do autenticador WebAuthn" @@ -4249,6 +4417,10 @@ msgstr "OTP E-mail" msgid "Event Notification" msgstr "Notificação de Evento" +#: authentik/stages/email/models.py authentik/stages/invitation/models.py +msgid "Invitation" +msgstr "Convite" + #: authentik/stages/email/models.py msgid "" "The time window used to count recent account recovery attempts. If the " @@ -4368,6 +4540,62 @@ msgstr "" "\n" "Este e-mail foi enviado a partir do transporte de notificações %(name)s.\n" +#: authentik/stages/email/templates/email/invitation.html +msgid "" +"\n" +" You're Invited!\n" +" " +msgstr "" + +#: authentik/stages/email/templates/email/invitation.html +#, python-format +msgid "" +"\n" +" You have been invited to join %(host)s. Click the button below to get started.\n" +" " +msgstr "" + +#: authentik/stages/email/templates/email/invitation.html +#, python-format +msgid "" +"\n" +" This invitation expires %(expires)s.\n" +" " +msgstr "" + +#: authentik/stages/email/templates/email/invitation.html +#: authentik/stages/email/templates/email/invitation.txt +msgid "Accept Invitation" +msgstr "" + +#: authentik/stages/email/templates/email/invitation.html +msgid "" +"\n" +" If you cannot click the button above, please copy and paste the following URL into your browser:\n" +" " +msgstr "" + +#: authentik/stages/email/templates/email/invitation.txt +msgid "You're Invited!" +msgstr "" + +#: authentik/stages/email/templates/email/invitation.txt +#, python-format +msgid "" +"You have been invited to join %(host)s. Use the link below to get started." +msgstr "" + +#: authentik/stages/email/templates/email/invitation.txt +#, python-format +msgid "This invitation expires %(expires)s." +msgstr "" + +#: authentik/stages/email/templates/email/invitation.txt +msgid "" +"If you cannot click the link above, please copy and paste the following URL " +"into your browser:" +msgstr "" + #: authentik/stages/email/templates/email/password_reset.html msgid "" "\n" @@ -4553,10 +4781,6 @@ msgstr "Quando ativado, o convite será eliminado após utilização." msgid "Optional fixed data to enforce on user enrollment." msgstr "Dados fixos opcionais a aplicar no registo de utilizadores." -#: authentik/stages/invitation/models.py -msgid "Invitation" -msgstr "Convite" - #: authentik/stages/invitation/models.py msgid "Invitations" msgstr "Convites" @@ -4682,6 +4906,18 @@ msgstr "" msgid "Static: Static value, displayed as-is." msgstr "Estático: Valor estático, mostrado tal como é." +#: authentik/stages/prompt/models.py +msgid "Alert (Info): Static alert box with info styling" +msgstr "" + +#: authentik/stages/prompt/models.py +msgid "Alert (Warning): Static alert box with warning styling" +msgstr "" + +#: authentik/stages/prompt/models.py +msgid "Alert (Danger): Static alert box with danger styling" +msgstr "" + #: authentik/stages/prompt/models.py msgid "authentik: Selection of locales authentik supports" msgstr "authentik: Seleção de localizações suportadas" diff --git a/locale/ru_RU/LC_MESSAGES/django.mo b/locale/ru_RU/LC_MESSAGES/django.mo index 4631982db0..bb0f1880ad 100644 Binary files a/locale/ru_RU/LC_MESSAGES/django.mo and b/locale/ru_RU/LC_MESSAGES/django.mo differ diff --git a/locale/ru_RU/LC_MESSAGES/django.po b/locale/ru_RU/LC_MESSAGES/django.po index 04f9b13324..986500f12e 100644 --- a/locale/ru_RU/LC_MESSAGES/django.po +++ b/locale/ru_RU/LC_MESSAGES/django.po @@ -6,16 +6,16 @@ # Translators: # Marc Schmitt, 2025 # Vladimir, 2025 -# Andrey Boyko, 2025 +# Andrey Boyko, 2026 # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-02-10 19:27+0000\n" +"POT-Creation-Date: 2026-05-06 00:27+0000\n" "PO-Revision-Date: 2025-12-01 19:09+0000\n" -"Last-Translator: Andrey Boyko, 2025\n" +"Last-Translator: Andrey Boyko, 2026\n" "Language-Team: Russian (Russia) (https://app.transifex.com/authentik/teams/119923/ru_RU/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -107,6 +107,14 @@ msgstr "Ошибка валидации" msgid "Blueprint file does not exist" msgstr "Файл чертежа не существует" +#: authentik/blueprints/api.py +msgid "Context must be valid JSON" +msgstr "" + +#: authentik/blueprints/api.py +msgid "Context must be a JSON object" +msgstr "" + #: authentik/blueprints/api.py msgid "Failed to validate blueprint" msgstr "" @@ -115,6 +123,11 @@ msgstr "" msgid "Either path or content must be set." msgstr "Путь или содержимое должно быть установлено." +#: authentik/blueprints/api.py +#, python-brace-format +msgid "User lacks permission to create {model}" +msgstr "" + #: authentik/blueprints/models.py msgid "Managed by authentik" msgstr "Управляется authentik" @@ -242,9 +255,12 @@ msgstr "" "значение true, возвращаются только провайдеры обратного канала. При значении" " false провайдеры обратного канала исключаются." -#: authentik/core/api/transactional_applications.py -#, python-brace-format -msgid "User lacks permission to create {model}" +#: authentik/core/api/users.py +msgid "Invalid password hash format. Must be a valid Django password hash." +msgstr "" + +#: authentik/core/api/users.py +msgid "Cannot set both password and password_hash. Use only one." msgstr "" #: authentik/core/api/users.py @@ -307,6 +323,12 @@ msgstr "" msgid "This field is required." msgstr "" +#: authentik/core/apps.py +msgid "" +"Configure if applications without any policy/group/user bindings should be " +"accessible to any user." +msgstr "" + #: authentik/core/models.py msgid "name" msgstr "имя" @@ -413,6 +435,10 @@ msgstr "Внутреннее имя приложения, используемо msgid "Open launch URL in a new browser tab or window." msgstr "Открыть URL-адрес запуска в новой вкладке или окне браузера." +#: authentik/core/models.py +msgid "Hide this application from the user's My applications page." +msgstr "" + #: authentik/core/models.py msgid "Application" msgstr "Приложение" @@ -604,6 +630,14 @@ msgstr "" msgid "Go home" msgstr "Домой" +#: authentik/core/templates/login/base_full.html +msgid "Site footer" +msgstr "" + +#: authentik/core/templates/login/base_full.html +msgid "Flow links" +msgstr "" + #: authentik/core/templates/login/base_full.html #: authentik/flows/templates/if/flow-sfe.html msgid "Powered by authentik" @@ -710,6 +744,10 @@ msgstr "" msgid "Discover, import and update certificates from the filesystem." msgstr "" +#: authentik/endpoints/api/stages.py +msgid "Selected connector is not compatible with this stage." +msgstr "" + #: authentik/endpoints/connectors/agent/api/connectors.py msgid "Selected platform not supported" msgstr "" @@ -764,6 +802,14 @@ msgstr "" msgid "Apple Nonces" msgstr "" +#: authentik/endpoints/connectors/agent/models.py +msgid "Apple Independent Secure Enclave" +msgstr "" + +#: authentik/endpoints/connectors/agent/models.py +msgid "Apple Independent Secure Enclaves" +msgstr "" + #: authentik/endpoints/facts.py msgid "Operating System name, such as 'Server 2022' or 'Ubuntu'" msgstr "" @@ -834,6 +880,12 @@ msgstr "Для создания/обновления этого объекта msgid "Enterprise is required to use this endpoint." msgstr "" +#: authentik/enterprise/audit/apps.py +msgid "" +"Include additional information in audit logs, may incur a performance " +"penalty." +msgstr "" + #: authentik/enterprise/endpoints/connectors/fleet/models.py #: authentik/events/models.py msgid "" @@ -849,6 +901,19 @@ msgstr "" msgid "Fleet Connectors" msgstr "" +#: authentik/enterprise/endpoints/connectors/google_chrome/models.py +msgid "Google Device Trust Connector" +msgstr "" + +#: authentik/enterprise/endpoints/connectors/google_chrome/models.py +msgid "Google Device Trust Connectors" +msgstr "" + +#: authentik/enterprise/endpoints/connectors/google_chrome/stage.py +#: authentik/enterprise/stages/authenticator_endpoint_gdtc/stage.py +msgid "Verifying your browser..." +msgstr "Проверка вашего браузера..." + #: authentik/enterprise/lifecycle/api/reviews.py msgid "You are not allowed to submit a review for this object." msgstr "" @@ -865,10 +930,6 @@ msgstr "" msgid "Grace period must be shorter than the interval." msgstr "" -#: authentik/enterprise/lifecycle/api/rules.py -msgid "Only one type-wide rule for each object type is allowed." -msgstr "" - #: authentik/enterprise/lifecycle/models.py msgid "" "Select which transports should be used to notify the reviewers. If none are " @@ -896,7 +957,8 @@ msgid "Go to {self._get_model_name()}" msgstr "" #: authentik/enterprise/lifecycle/models.py -msgid "Access review is due for {self.content_type.name} {str(self.object)}" +msgid "" +"Access review is due for {self.content_type.name.lower()} {object_label}" msgstr "" #: authentik/enterprise/lifecycle/models.py @@ -910,7 +972,7 @@ msgid "" msgstr "" #: authentik/enterprise/lifecycle/tasks.py -msgid "Dispatch tasks to validate lifecycle rules." +msgid "Dispatch tasks to apply lifecycle rules." msgstr "" #: authentik/enterprise/lifecycle/tasks.py @@ -1136,6 +1198,14 @@ msgstr "" msgid "Enterprise is required to use the OAuth mode." msgstr "" +#: authentik/enterprise/providers/ssf/models.py +msgid "SSF RFC Push" +msgstr "" + +#: authentik/enterprise/providers/ssf/models.py +msgid "SSF RFC Pull" +msgstr "" + #: authentik/enterprise/providers/ssf/models.py #: authentik/providers/oauth2/models.py msgid "Signing Key" @@ -1217,6 +1287,78 @@ msgstr "Скачать" msgid "Generate data export." msgstr "" +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "User to lock. If omitted, locks the current user (self-service)." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "No lockdown flow configured." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "Lockdown flow is not applicable." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "Choose the target account, then return a flow link." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "No lockdown flow configured or the flow is not applicable" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "Permission denied (when targeting another user)" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Deactivate the user account (set is_active to False)" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Set an unusable password for the user" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Delete all active sessions for the user" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "" +"Revoke all tokens for the user (API, app password, recovery, verification, " +"OAuth)" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "" +"Flow to redirect users to after self-service lockdown. This flow should not " +"require authentication since the user's session is deleted." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Account Lockdown Stage" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Account Lockdown Stages" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/stage.py +msgid "No target user specified for account lockdown" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/stage.py +msgid "You do not have permission to lock down this account." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/stage.py +msgid "Account lockdown failed for this account." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/stage.py +msgid "Self-service account lockdown requires a completion flow." +msgstr "" + #: authentik/enterprise/stages/authenticator_endpoint_gdtc/models.py msgid "Endpoint Authenticator Google Device Trust Connector Stage" msgstr "" @@ -1236,10 +1378,6 @@ msgstr "Конечное устройство" msgid "Endpoint Devices" msgstr "Конечные устройства" -#: authentik/enterprise/stages/authenticator_endpoint_gdtc/stage.py -msgid "Verifying your browser..." -msgstr "Проверка вашего браузера..." - #: authentik/enterprise/stages/mtls/models.py msgid "" "Configure certificate authorities to validate the certificate against. This " @@ -1320,6 +1458,12 @@ msgstr "" "Отправлять уведомление только один раз, например, при отправке вебхука в " "чат-канал." +#: authentik/events/models.py +msgid "" +"When set, the selected ceritifcate is used to validate the certificate of " +"the webhook server." +msgstr "" + #: authentik/events/models.py msgid "" "Customize the body of the request. Mapping should return data that is JSON-" @@ -1483,6 +1627,15 @@ msgstr "Предварительные политики потока" msgid "Flow" msgstr "Поток" +#: authentik/flows/apps.py +msgid "Refresh other tabs after successful authentication." +msgstr "" + +#: authentik/flows/apps.py +msgid "" +"Upon successful authentication, re-start authentication in other open tabs." +msgstr "" + #: authentik/flows/exceptions.py msgid "Flow does not apply to current user." msgstr "Поток не применяется к текущему пользователю." @@ -1595,8 +1748,8 @@ msgstr "Токен потока" msgid "Flow Tokens" msgstr "Токены потока" -#: authentik/flows/templates/if/flow.html -msgid "Site footer" +#: authentik/flows/planner.py +msgid "This link is invalid or has expired. Please request a new one." msgstr "" #: authentik/flows/views/executor.py @@ -1983,20 +2136,6 @@ msgstr "Оценка репутации" msgid "Reputation Scores" msgstr "Оценка репутации" -#: authentik/policies/templates/policies/buffer.html -msgid "Waiting for authentication..." -msgstr "" - -#: authentik/policies/templates/policies/buffer.html -msgid "" -"You're already authenticating in another tab. This page will refresh once " -"authentication is completed." -msgstr "" - -#: authentik/policies/templates/policies/buffer.html -msgid "Authenticate in this tab" -msgstr "" - #: authentik/policies/templates/policies/denied.html msgid "Permission denied" msgstr "Доступ запрещен" @@ -2124,6 +2263,14 @@ msgstr "" msgid "Regular Expression URL matching" msgstr "" +#: authentik/providers/oauth2/models.py +msgid "Authorization" +msgstr "Авторизация" + +#: authentik/providers/oauth2/models.py +msgid "Logout" +msgstr "Выход" + #: authentik/providers/oauth2/models.py msgid "Back-channel" msgstr "" @@ -2478,10 +2625,6 @@ msgstr "Прокси провайдер" msgid "Proxy Providers" msgstr "Прокси провайдеры" -#: authentik/providers/proxy/tasks.py -msgid "Terminate session on Proxy outpost." -msgstr "" - #: authentik/providers/rac/models.py authentik/stages/user_login/models.py msgid "" "Determines how long a session lasts. Default of 0 means that the sessions " @@ -2611,8 +2754,10 @@ msgstr "" " ограничение аудитории не будет добавлено." #: authentik/providers/saml/models.py -msgid "Also known as EntityID" -msgstr "Также известен как EntityID" +msgid "" +"Also known as EntityID. Providing a value overrides the default issuer " +"generated by authentik." +msgstr "" #: authentik/providers/saml/models.py msgid "SLS URL" @@ -2822,6 +2967,10 @@ msgstr "" msgid "SAML NameID format" msgstr "" +#: authentik/providers/saml/models.py +msgid "SAML Issuer used for this session" +msgstr "" + #: authentik/providers/saml/models.py msgid "SAML Session" msgstr "" @@ -2850,6 +2999,14 @@ msgstr "Slack" msgid "Salesforce" msgstr "" +#: authentik/providers/scim/models.py +msgid "Webex" +msgstr "" + +#: authentik/providers/scim/models.py +msgid "vCenter" +msgstr "" + #: authentik/providers/scim/models.py msgid "Group filters used to define sync-scope for groups." msgstr "" @@ -3119,7 +3276,7 @@ msgid "" " " msgstr "" -#: authentik/sources/ldap/api.py +#: authentik/sources/ldap/api/sources.py msgid "Only a single LDAP Source with password synchronization is allowed" msgstr "" @@ -3646,6 +3803,12 @@ msgstr "" "угрозу безопасности, так как проверка идентификатора запроса не " "производится." +#: authentik/sources/saml/models.py +msgid "" +"When enabled, the IdP will re-authenticate the user even if a session " +"exists." +msgstr "" + #: authentik/sources/saml/models.py msgid "" "NameID Policy sent to the IdP. Can be unset, in which case no Policy is " @@ -4059,6 +4222,10 @@ msgstr "Этапы проверки аутентификатора" msgid "No (allowed) MFA authenticator configured." msgstr "Не сконфигурирован ни один (разрешенный) MFA аутентификатор" +#: authentik/stages/authenticator_webauthn/models.py +msgid "When enabled, a given device can only be registered once." +msgstr "" + #: authentik/stages/authenticator_webauthn/models.py msgid "WebAuthn Authenticator Setup Stage" msgstr "Этап настройки аутентификатора WebAuthn" @@ -4195,6 +4362,10 @@ msgstr "" msgid "Event Notification" msgstr "" +#: authentik/stages/email/models.py authentik/stages/invitation/models.py +msgid "Invitation" +msgstr "Приглашение" + #: authentik/stages/email/models.py msgid "" "The time window used to count recent account recovery attempts. If the " @@ -4309,6 +4480,62 @@ msgstr "" "\n" "Это письмо было отправлено с помощью поставщика уведомления %(name)s.\n" +#: authentik/stages/email/templates/email/invitation.html +msgid "" +"\n" +" You're Invited!\n" +" " +msgstr "" + +#: authentik/stages/email/templates/email/invitation.html +#, python-format +msgid "" +"\n" +" You have been invited to join %(host)s. Click the button below to get started.\n" +" " +msgstr "" + +#: authentik/stages/email/templates/email/invitation.html +#, python-format +msgid "" +"\n" +" This invitation expires %(expires)s.\n" +" " +msgstr "" + +#: authentik/stages/email/templates/email/invitation.html +#: authentik/stages/email/templates/email/invitation.txt +msgid "Accept Invitation" +msgstr "" + +#: authentik/stages/email/templates/email/invitation.html +msgid "" +"\n" +" If you cannot click the button above, please copy and paste the following URL into your browser:\n" +" " +msgstr "" + +#: authentik/stages/email/templates/email/invitation.txt +msgid "You're Invited!" +msgstr "" + +#: authentik/stages/email/templates/email/invitation.txt +#, python-format +msgid "" +"You have been invited to join %(host)s. Use the link below to get started." +msgstr "" + +#: authentik/stages/email/templates/email/invitation.txt +#, python-format +msgid "This invitation expires %(expires)s." +msgstr "" + +#: authentik/stages/email/templates/email/invitation.txt +msgid "" +"If you cannot click the link above, please copy and paste the following URL " +"into your browser:" +msgstr "" + #: authentik/stages/email/templates/email/password_reset.html msgid "" "\n" @@ -4488,10 +4715,6 @@ msgstr "" "Необязательные фиксированные данные, которые будут применяться при " "регистрации пользователя." -#: authentik/stages/invitation/models.py -msgid "Invitation" -msgstr "Приглашение" - #: authentik/stages/invitation/models.py msgid "Invitations" msgstr "Приглашения" @@ -4617,6 +4840,18 @@ msgstr "" msgid "Static: Static value, displayed as-is." msgstr "Статический: Статичное значение, отображается как есть." +#: authentik/stages/prompt/models.py +msgid "Alert (Info): Static alert box with info styling" +msgstr "" + +#: authentik/stages/prompt/models.py +msgid "Alert (Warning): Static alert box with warning styling" +msgstr "" + +#: authentik/stages/prompt/models.py +msgid "Alert (Danger): Static alert box with danger styling" +msgstr "" + #: authentik/stages/prompt/models.py msgid "authentik: Selection of locales authentik supports" msgstr "authentik: Выбор локализаций, которые поддерживает authentik" diff --git a/locale/tr_TR/LC_MESSAGES/django.mo b/locale/tr_TR/LC_MESSAGES/django.mo index eddc7b0575..7ebdff25b4 100644 Binary files a/locale/tr_TR/LC_MESSAGES/django.mo and b/locale/tr_TR/LC_MESSAGES/django.mo differ diff --git a/locale/tr_TR/LC_MESSAGES/django.po b/locale/tr_TR/LC_MESSAGES/django.po index d55bedfe1d..450a9e96c2 100644 --- a/locale/tr_TR/LC_MESSAGES/django.po +++ b/locale/tr_TR/LC_MESSAGES/django.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-02-10 19:27+0000\n" +"POT-Creation-Date: 2026-05-06 00:27+0000\n" "PO-Revision-Date: 2025-12-01 19:09+0000\n" "Last-Translator: Marc Schmitt, 2025\n" "Language-Team: Turkish (Turkey) (https://app.transifex.com/authentik/teams/119923/tr_TR/)\n" @@ -105,6 +105,14 @@ msgstr "Doğrulama Hatası" msgid "Blueprint file does not exist" msgstr "Plan dosyası mevcut değil" +#: authentik/blueprints/api.py +msgid "Context must be valid JSON" +msgstr "" + +#: authentik/blueprints/api.py +msgid "Context must be a JSON object" +msgstr "" + #: authentik/blueprints/api.py msgid "Failed to validate blueprint" msgstr "Plan doğrulanamadı" @@ -113,6 +121,11 @@ msgstr "Plan doğrulanamadı" msgid "Either path or content must be set." msgstr "Ya yol ya da içerik ayarlanmalıdır." +#: authentik/blueprints/api.py +#, python-brace-format +msgid "User lacks permission to create {model}" +msgstr "" + #: authentik/blueprints/models.py msgid "Managed by authentik" msgstr "Authentik tarafından yönetilmektedir" @@ -239,9 +252,12 @@ msgstr "" "yalnızca arka kanal sağlayıcıları döndürülür. false olarak ayarlandığında, " "arka kanal sağlayıcıları hariç tutulur" -#: authentik/core/api/transactional_applications.py -#, python-brace-format -msgid "User lacks permission to create {model}" +#: authentik/core/api/users.py +msgid "Invalid password hash format. Must be a valid Django password hash." +msgstr "" + +#: authentik/core/api/users.py +msgid "Cannot set both password and password_hash. Use only one." msgstr "" #: authentik/core/api/users.py @@ -304,6 +320,12 @@ msgstr "" msgid "This field is required." msgstr "" +#: authentik/core/apps.py +msgid "" +"Configure if applications without any policy/group/user bindings should be " +"accessible to any user." +msgstr "" + #: authentik/core/models.py msgid "name" msgstr "isim" @@ -411,6 +433,10 @@ msgid "Open launch URL in a new browser tab or window." msgstr "" "Başlatma URL'sini yeni bir tarayıcı sekmesinde veya penceresinde açın." +#: authentik/core/models.py +msgid "Hide this application from the user's My applications page." +msgstr "" + #: authentik/core/models.py msgid "Application" msgstr "Uygulama" @@ -597,6 +623,14 @@ msgstr "" msgid "Go home" msgstr "Başa dön" +#: authentik/core/templates/login/base_full.html +msgid "Site footer" +msgstr "" + +#: authentik/core/templates/login/base_full.html +msgid "Flow links" +msgstr "" + #: authentik/core/templates/login/base_full.html #: authentik/flows/templates/if/flow-sfe.html msgid "Powered by authentik" @@ -703,6 +737,10 @@ msgstr "" msgid "Discover, import and update certificates from the filesystem." msgstr "" +#: authentik/endpoints/api/stages.py +msgid "Selected connector is not compatible with this stage." +msgstr "" + #: authentik/endpoints/connectors/agent/api/connectors.py msgid "Selected platform not supported" msgstr "" @@ -757,6 +795,14 @@ msgstr "" msgid "Apple Nonces" msgstr "" +#: authentik/endpoints/connectors/agent/models.py +msgid "Apple Independent Secure Enclave" +msgstr "" + +#: authentik/endpoints/connectors/agent/models.py +msgid "Apple Independent Secure Enclaves" +msgstr "" + #: authentik/endpoints/facts.py msgid "Operating System name, such as 'Server 2022' or 'Ubuntu'" msgstr "" @@ -827,6 +873,12 @@ msgstr "Bu nesneyi oluşturmak/güncellemek için Kurumsal Paket gereklidir." msgid "Enterprise is required to use this endpoint." msgstr "" +#: authentik/enterprise/audit/apps.py +msgid "" +"Include additional information in audit logs, may incur a performance " +"penalty." +msgstr "" + #: authentik/enterprise/endpoints/connectors/fleet/models.py #: authentik/events/models.py msgid "" @@ -842,6 +894,19 @@ msgstr "" msgid "Fleet Connectors" msgstr "" +#: authentik/enterprise/endpoints/connectors/google_chrome/models.py +msgid "Google Device Trust Connector" +msgstr "" + +#: authentik/enterprise/endpoints/connectors/google_chrome/models.py +msgid "Google Device Trust Connectors" +msgstr "" + +#: authentik/enterprise/endpoints/connectors/google_chrome/stage.py +#: authentik/enterprise/stages/authenticator_endpoint_gdtc/stage.py +msgid "Verifying your browser..." +msgstr "Tarayıcınız doğrulanıyor..." + #: authentik/enterprise/lifecycle/api/reviews.py msgid "You are not allowed to submit a review for this object." msgstr "" @@ -858,10 +923,6 @@ msgstr "" msgid "Grace period must be shorter than the interval." msgstr "" -#: authentik/enterprise/lifecycle/api/rules.py -msgid "Only one type-wide rule for each object type is allowed." -msgstr "" - #: authentik/enterprise/lifecycle/models.py msgid "" "Select which transports should be used to notify the reviewers. If none are " @@ -889,7 +950,8 @@ msgid "Go to {self._get_model_name()}" msgstr "" #: authentik/enterprise/lifecycle/models.py -msgid "Access review is due for {self.content_type.name} {str(self.object)}" +msgid "" +"Access review is due for {self.content_type.name.lower()} {object_label}" msgstr "" #: authentik/enterprise/lifecycle/models.py @@ -903,7 +965,7 @@ msgid "" msgstr "" #: authentik/enterprise/lifecycle/tasks.py -msgid "Dispatch tasks to validate lifecycle rules." +msgid "Dispatch tasks to apply lifecycle rules." msgstr "" #: authentik/enterprise/lifecycle/tasks.py @@ -1130,6 +1192,14 @@ msgstr "" msgid "Enterprise is required to use the OAuth mode." msgstr "" +#: authentik/enterprise/providers/ssf/models.py +msgid "SSF RFC Push" +msgstr "" + +#: authentik/enterprise/providers/ssf/models.py +msgid "SSF RFC Pull" +msgstr "" + #: authentik/enterprise/providers/ssf/models.py #: authentik/providers/oauth2/models.py msgid "Signing Key" @@ -1211,6 +1281,78 @@ msgstr "" msgid "Generate data export." msgstr "" +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "User to lock. If omitted, locks the current user (self-service)." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "No lockdown flow configured." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "Lockdown flow is not applicable." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "Choose the target account, then return a flow link." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "No lockdown flow configured or the flow is not applicable" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "Permission denied (when targeting another user)" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Deactivate the user account (set is_active to False)" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Set an unusable password for the user" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Delete all active sessions for the user" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "" +"Revoke all tokens for the user (API, app password, recovery, verification, " +"OAuth)" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "" +"Flow to redirect users to after self-service lockdown. This flow should not " +"require authentication since the user's session is deleted." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Account Lockdown Stage" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Account Lockdown Stages" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/stage.py +msgid "No target user specified for account lockdown" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/stage.py +msgid "You do not have permission to lock down this account." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/stage.py +msgid "Account lockdown failed for this account." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/stage.py +msgid "Self-service account lockdown requires a completion flow." +msgstr "" + #: authentik/enterprise/stages/authenticator_endpoint_gdtc/models.py msgid "Endpoint Authenticator Google Device Trust Connector Stage" msgstr "Uç Nokta Kimlik Doğrulayıcı Google Cihaz Güven Bağlayıcısı Aşaması" @@ -1227,10 +1369,6 @@ msgstr "Uç Nokta Cihazı" msgid "Endpoint Devices" msgstr "Uç Nokta Cihazları" -#: authentik/enterprise/stages/authenticator_endpoint_gdtc/stage.py -msgid "Verifying your browser..." -msgstr "Tarayıcınız doğrulanıyor..." - #: authentik/enterprise/stages/mtls/models.py msgid "" "Configure certificate authorities to validate the certificate against. This " @@ -1311,6 +1449,12 @@ msgstr "" "Örneğin bir sohbet kanalına web kancası gönderirken yalnızca bir kez " "bildirim gönderin." +#: authentik/events/models.py +msgid "" +"When set, the selected ceritifcate is used to validate the certificate of " +"the webhook server." +msgstr "" + #: authentik/events/models.py msgid "" "Customize the body of the request. Mapping should return data that is JSON-" @@ -1476,6 +1620,15 @@ msgstr "Akış öncesi ilkeleri" msgid "Flow" msgstr "Akış" +#: authentik/flows/apps.py +msgid "Refresh other tabs after successful authentication." +msgstr "" + +#: authentik/flows/apps.py +msgid "" +"Upon successful authentication, re-start authentication in other open tabs." +msgstr "" + #: authentik/flows/exceptions.py msgid "Flow does not apply to current user." msgstr "Akış mevcut kullanıcı için geçerli değildir." @@ -1589,8 +1742,8 @@ msgstr "Akış Jetonu" msgid "Flow Tokens" msgstr "Akış Jetonları" -#: authentik/flows/templates/if/flow.html -msgid "Site footer" +#: authentik/flows/planner.py +msgid "This link is invalid or has expired. Please request a new one." msgstr "" #: authentik/flows/views/executor.py @@ -1972,20 +2125,6 @@ msgstr "İtibar Puanı" msgid "Reputation Scores" msgstr "İtibar Puanları" -#: authentik/policies/templates/policies/buffer.html -msgid "Waiting for authentication..." -msgstr "" - -#: authentik/policies/templates/policies/buffer.html -msgid "" -"You're already authenticating in another tab. This page will refresh once " -"authentication is completed." -msgstr "" - -#: authentik/policies/templates/policies/buffer.html -msgid "Authenticate in this tab" -msgstr "" - #: authentik/policies/templates/policies/denied.html msgid "Permission denied" msgstr "İzin reddedildi" @@ -2112,6 +2251,14 @@ msgstr "" msgid "Regular Expression URL matching" msgstr "" +#: authentik/providers/oauth2/models.py +msgid "Authorization" +msgstr "" + +#: authentik/providers/oauth2/models.py +msgid "Logout" +msgstr "" + #: authentik/providers/oauth2/models.py msgid "Back-channel" msgstr "" @@ -2469,10 +2616,6 @@ msgstr "Vekil Sağlayıcı" msgid "Proxy Providers" msgstr "Vekil Sağlayıcılar" -#: authentik/providers/proxy/tasks.py -msgid "Terminate session on Proxy outpost." -msgstr "" - #: authentik/providers/rac/models.py authentik/stages/user_login/models.py msgid "" "Determines how long a session lasts. Default of 0 means that the sessions " @@ -2605,8 +2748,10 @@ msgstr "" "herhangi bir hedef kitle kısıtlaması eklenmez." #: authentik/providers/saml/models.py -msgid "Also known as EntityID" -msgstr "EntityID olarak da bilinir" +msgid "" +"Also known as EntityID. Providing a value overrides the default issuer " +"generated by authentik." +msgstr "" #: authentik/providers/saml/models.py msgid "SLS URL" @@ -2816,6 +2961,10 @@ msgstr "" msgid "SAML NameID format" msgstr "" +#: authentik/providers/saml/models.py +msgid "SAML Issuer used for this session" +msgstr "" + #: authentik/providers/saml/models.py msgid "SAML Session" msgstr "" @@ -2844,6 +2993,14 @@ msgstr "" msgid "Salesforce" msgstr "" +#: authentik/providers/scim/models.py +msgid "Webex" +msgstr "" + +#: authentik/providers/scim/models.py +msgid "vCenter" +msgstr "" + #: authentik/providers/scim/models.py msgid "Group filters used to define sync-scope for groups." msgstr "" @@ -3119,7 +3276,7 @@ msgstr "" " Lütfen yöneticinizle iletişime geçin.\n" " " -#: authentik/sources/ldap/api.py +#: authentik/sources/ldap/api/sources.py msgid "Only a single LDAP Source with password synchronization is allowed" msgstr "" "Parola senkronizasyonuna sahip yalnızca tek bir LDAP Kaynağına izin verilir" @@ -3646,6 +3803,12 @@ msgstr "" "IdP tarafından başlatılan kimlik doğrulama akışlarına izin verir. İstek " "kimliğinin doğrulanması yapılmadığından, bu bir güvenlik riski olabilir." +#: authentik/sources/saml/models.py +msgid "" +"When enabled, the IdP will re-authenticate the user even if a session " +"exists." +msgstr "" + #: authentik/sources/saml/models.py msgid "" "NameID Policy sent to the IdP. Can be unset, in which case no Policy is " @@ -4055,6 +4218,10 @@ msgstr "Kimlik Doğrulayıcı Doğrulama Aşamaları" msgid "No (allowed) MFA authenticator configured." msgstr "Yapılandırılmış (izin verilen) MFA kimlik doğrulayıcısı yok." +#: authentik/stages/authenticator_webauthn/models.py +msgid "When enabled, a given device can only be registered once." +msgstr "" + #: authentik/stages/authenticator_webauthn/models.py msgid "WebAuthn Authenticator Setup Stage" msgstr "WebAuthn Authenticator Kurulum Aşaması" @@ -4190,6 +4357,10 @@ msgstr "" msgid "Event Notification" msgstr "" +#: authentik/stages/email/models.py authentik/stages/invitation/models.py +msgid "Invitation" +msgstr "Davetiye" + #: authentik/stages/email/models.py msgid "" "The time window used to count recent account recovery attempts. If the " @@ -4304,6 +4475,62 @@ msgstr "" "\n" "Bu e-posta bildirim aktarımından gönderilmiştir %(name)s.\n" +#: authentik/stages/email/templates/email/invitation.html +msgid "" +"\n" +" You're Invited!\n" +" " +msgstr "" + +#: authentik/stages/email/templates/email/invitation.html +#, python-format +msgid "" +"\n" +" You have been invited to join %(host)s. Click the button below to get started.\n" +" " +msgstr "" + +#: authentik/stages/email/templates/email/invitation.html +#, python-format +msgid "" +"\n" +" This invitation expires %(expires)s.\n" +" " +msgstr "" + +#: authentik/stages/email/templates/email/invitation.html +#: authentik/stages/email/templates/email/invitation.txt +msgid "Accept Invitation" +msgstr "" + +#: authentik/stages/email/templates/email/invitation.html +msgid "" +"\n" +" If you cannot click the button above, please copy and paste the following URL into your browser:\n" +" " +msgstr "" + +#: authentik/stages/email/templates/email/invitation.txt +msgid "You're Invited!" +msgstr "" + +#: authentik/stages/email/templates/email/invitation.txt +#, python-format +msgid "" +"You have been invited to join %(host)s. Use the link below to get started." +msgstr "" + +#: authentik/stages/email/templates/email/invitation.txt +#, python-format +msgid "This invitation expires %(expires)s." +msgstr "" + +#: authentik/stages/email/templates/email/invitation.txt +msgid "" +"If you cannot click the link above, please copy and paste the following URL " +"into your browser:" +msgstr "" + #: authentik/stages/email/templates/email/password_reset.html msgid "" "\n" @@ -4470,10 +4697,6 @@ msgstr "Etkinleştirildiğinde, davetiye kullanımdan sonra silinir." msgid "Optional fixed data to enforce on user enrollment." msgstr "Kullanıcı kaydında zorlamak için isteğe bağlı sabit veriler." -#: authentik/stages/invitation/models.py -msgid "Invitation" -msgstr "Davetiye" - #: authentik/stages/invitation/models.py msgid "Invitations" msgstr "Davetiyeler" @@ -4595,6 +4818,18 @@ msgstr "Gizli: Gizli alan, form içine veri eklemek için kullanılabilir." msgid "Static: Static value, displayed as-is." msgstr "Statik: Statik değer, olduğu gibi görüntülenir." +#: authentik/stages/prompt/models.py +msgid "Alert (Info): Static alert box with info styling" +msgstr "" + +#: authentik/stages/prompt/models.py +msgid "Alert (Warning): Static alert box with warning styling" +msgstr "" + +#: authentik/stages/prompt/models.py +msgid "Alert (Danger): Static alert box with danger styling" +msgstr "" + #: authentik/stages/prompt/models.py msgid "authentik: Selection of locales authentik supports" msgstr "authentik: authentik'in desteklediği yerel dillerin seçimi" diff --git a/locale/zh-Hans/LC_MESSAGES/django.mo b/locale/zh-Hans/LC_MESSAGES/django.mo index b448b1e884..15186a58d1 100644 Binary files a/locale/zh-Hans/LC_MESSAGES/django.mo and b/locale/zh-Hans/LC_MESSAGES/django.mo differ diff --git a/locale/zh-Hans/LC_MESSAGES/django.po b/locale/zh-Hans/LC_MESSAGES/django.po index 9b27a3a616..84f59a0c4f 100644 --- a/locale/zh-Hans/LC_MESSAGES/django.po +++ b/locale/zh-Hans/LC_MESSAGES/django.po @@ -8,18 +8,19 @@ # 刘松, 2025 # deluxghost, 2025 # Marc Schmitt, 2025 -# Jens L. , 2025 # Kuang Jr, 2025 # RocketDev, 2026 +# Lei Kou, 2026 +# Jens L. , 2026 # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-02-10 19:27+0000\n" +"POT-Creation-Date: 2026-05-06 00:27+0000\n" "PO-Revision-Date: 2025-12-01 19:09+0000\n" -"Last-Translator: RocketDev, 2026\n" +"Last-Translator: Jens L. , 2026\n" "Language-Team: Chinese Simplified (https://app.transifex.com/authentik/teams/119923/zh-Hans/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -113,6 +114,14 @@ msgstr "校验错误" msgid "Blueprint file does not exist" msgstr "蓝图文件不存在" +#: authentik/blueprints/api.py +msgid "Context must be valid JSON" +msgstr "" + +#: authentik/blueprints/api.py +msgid "Context must be a JSON object" +msgstr "" + #: authentik/blueprints/api.py msgid "Failed to validate blueprint" msgstr "验证蓝图失败" @@ -121,6 +130,11 @@ msgstr "验证蓝图失败" msgid "Either path or content must be set." msgstr "必须设置路径或内容。" +#: authentik/blueprints/api.py +#, python-brace-format +msgid "User lacks permission to create {model}" +msgstr "用户缺少创建 {model} 的权限" + #: authentik/blueprints/models.py msgid "Managed by authentik" msgstr "由 authentik 管理" @@ -234,10 +248,13 @@ msgid "" "excluded" msgstr "如果未设置,则返回所有提供程序。如果启用,仅返回反向通道提供程序。如果禁用,则返回非反向通道提供程序" -#: authentik/core/api/transactional_applications.py -#, python-brace-format -msgid "User lacks permission to create {model}" -msgstr "用户缺少创建 {model} 的权限" +#: authentik/core/api/users.py +msgid "Invalid password hash format. Must be a valid Django password hash." +msgstr "" + +#: authentik/core/api/users.py +msgid "Cannot set both password and password_hash. Use only one." +msgstr "" #: authentik/core/api/users.py msgid "No leading or trailing slashes allowed." @@ -299,6 +316,12 @@ msgstr "未找到电子邮件阶段。" msgid "This field is required." msgstr "此字段是必需的。" +#: authentik/core/apps.py +msgid "" +"Configure if applications without any policy/group/user bindings should be " +"accessible to any user." +msgstr "" + #: authentik/core/models.py msgid "name" msgstr "名称" @@ -401,6 +424,10 @@ msgstr "应用的内部名称,在 URL 中使用。" msgid "Open launch URL in a new browser tab or window." msgstr "在新浏览器标签页或窗口中打开启动 URL。" +#: authentik/core/models.py +msgid "Hide this application from the user's My applications page." +msgstr "" + #: authentik/core/models.py msgid "Application" msgstr "应用程序" @@ -571,6 +598,14 @@ msgstr "移除由 SAML 源创建的临时用户。" msgid "Go home" msgstr "前往首页" +#: authentik/core/templates/login/base_full.html +msgid "Site footer" +msgstr "网站页脚" + +#: authentik/core/templates/login/base_full.html +msgid "Flow links" +msgstr "" + #: authentik/core/templates/login/base_full.html #: authentik/flows/templates/if/flow-sfe.html msgid "Powered by authentik" @@ -675,6 +710,10 @@ msgstr "查看证书-密钥对的私钥" msgid "Discover, import and update certificates from the filesystem." msgstr "从文件系统中发现、导入并更新证书。" +#: authentik/endpoints/api/stages.py +msgid "Selected connector is not compatible with this stage." +msgstr "" + #: authentik/endpoints/connectors/agent/api/connectors.py msgid "Selected platform not supported" msgstr "所选平台不受支持" @@ -729,6 +768,14 @@ msgstr "Apple 随机数" msgid "Apple Nonces" msgstr "Apple 随机数" +#: authentik/endpoints/connectors/agent/models.py +msgid "Apple Independent Secure Enclave" +msgstr "" + +#: authentik/endpoints/connectors/agent/models.py +msgid "Apple Independent Secure Enclaves" +msgstr "" + #: authentik/endpoints/facts.py msgid "Operating System name, such as 'Server 2022' or 'Ubuntu'" msgstr "操作系统名称,例如“Server 2022”或“Ubuntu”" @@ -799,6 +846,12 @@ msgstr "创建/更新此对象需要企业版。" msgid "Enterprise is required to use this endpoint." msgstr "企业要求使用这个端点。" +#: authentik/enterprise/audit/apps.py +msgid "" +"Include additional information in audit logs, may incur a performance " +"penalty." +msgstr "" + #: authentik/enterprise/endpoints/connectors/fleet/models.py #: authentik/events/models.py msgid "" @@ -814,13 +867,26 @@ msgstr "" msgid "Fleet Connectors" msgstr "" +#: authentik/enterprise/endpoints/connectors/google_chrome/models.py +msgid "Google Device Trust Connector" +msgstr "" + +#: authentik/enterprise/endpoints/connectors/google_chrome/models.py +msgid "Google Device Trust Connectors" +msgstr "" + +#: authentik/enterprise/endpoints/connectors/google_chrome/stage.py +#: authentik/enterprise/stages/authenticator_endpoint_gdtc/stage.py +msgid "Verifying your browser..." +msgstr "正在验证您的浏览器…" + #: authentik/enterprise/lifecycle/api/reviews.py msgid "You are not allowed to submit a review for this object." -msgstr "" +msgstr "您不能为此对象提交评论。" #: authentik/enterprise/lifecycle/api/rules.py msgid "Object does not exist" -msgstr "" +msgstr "对象不存在" #: authentik/enterprise/lifecycle/api/rules.py msgid "Either a reviewer group or a reviewer must be set." @@ -830,10 +896,6 @@ msgstr "" msgid "Grace period must be shorter than the interval." msgstr "" -#: authentik/enterprise/lifecycle/api/rules.py -msgid "Only one type-wide rule for each object type is allowed." -msgstr "" - #: authentik/enterprise/lifecycle/models.py msgid "" "Select which transports should be used to notify the reviewers. If none are " @@ -842,26 +904,27 @@ msgstr "" #: authentik/enterprise/lifecycle/models.py msgid "Reviewed" -msgstr "" +msgstr "已审核" #: authentik/enterprise/lifecycle/models.py msgid "Pending" -msgstr "" +msgstr "待处理" #: authentik/enterprise/lifecycle/models.py msgid "Overdue" -msgstr "" +msgstr "逾期" #: authentik/enterprise/lifecycle/models.py msgid "Canceled" -msgstr "" +msgstr "已取消" #: authentik/enterprise/lifecycle/models.py msgid "Go to {self._get_model_name()}" msgstr "" #: authentik/enterprise/lifecycle/models.py -msgid "Access review is due for {self.content_type.name} {str(self.object)}" +msgid "" +"Access review is due for {self.content_type.name.lower()} {object_label}" msgstr "" #: authentik/enterprise/lifecycle/models.py @@ -875,7 +938,7 @@ msgid "" msgstr "" #: authentik/enterprise/lifecycle/tasks.py -msgid "Dispatch tasks to validate lifecycle rules." +msgid "Dispatch tasks to apply lifecycle rules." msgstr "" #: authentik/enterprise/lifecycle/tasks.py @@ -1100,6 +1163,14 @@ msgstr "使用 EAP-TLS 需要企业版。" msgid "Enterprise is required to use the OAuth mode." msgstr "使用 OAuth 模式需要企业版。" +#: authentik/enterprise/providers/ssf/models.py +msgid "SSF RFC Push" +msgstr "" + +#: authentik/enterprise/providers/ssf/models.py +msgid "SSF RFC Pull" +msgstr "" + #: authentik/enterprise/providers/ssf/models.py #: authentik/providers/oauth2/models.py msgid "Signing Key" @@ -1181,6 +1252,78 @@ msgstr "下载" msgid "Generate data export." msgstr "生成数据导出文件。" +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "User to lock. If omitted, locks the current user (self-service)." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "No lockdown flow configured." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "Lockdown flow is not applicable." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "Choose the target account, then return a flow link." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "No lockdown flow configured or the flow is not applicable" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/api.py +msgid "Permission denied (when targeting another user)" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Deactivate the user account (set is_active to False)" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Set an unusable password for the user" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Delete all active sessions for the user" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "" +"Revoke all tokens for the user (API, app password, recovery, verification, " +"OAuth)" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "" +"Flow to redirect users to after self-service lockdown. This flow should not " +"require authentication since the user's session is deleted." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Account Lockdown Stage" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/models.py +msgid "Account Lockdown Stages" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/stage.py +msgid "No target user specified for account lockdown" +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/stage.py +msgid "You do not have permission to lock down this account." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/stage.py +msgid "Account lockdown failed for this account." +msgstr "" + +#: authentik/enterprise/stages/account_lockdown/stage.py +msgid "Self-service account lockdown requires a completion flow." +msgstr "" + #: authentik/enterprise/stages/authenticator_endpoint_gdtc/models.py msgid "Endpoint Authenticator Google Device Trust Connector Stage" msgstr "端点身份验证器 Google 设备信任连接器阶段" @@ -1197,10 +1340,6 @@ msgstr "端点设备" msgid "Endpoint Devices" msgstr "端点设备" -#: authentik/enterprise/stages/authenticator_endpoint_gdtc/stage.py -msgid "Verifying your browser..." -msgstr "正在验证您的浏览器…" - #: authentik/enterprise/stages/mtls/models.py msgid "" "Configure certificate authorities to validate the certificate against. This " @@ -1277,6 +1416,12 @@ msgid "" "channel." msgstr "仅发送一次通知,例如在向聊天频道发送 Webhook 时。" +#: authentik/events/models.py +msgid "" +"When set, the selected ceritifcate is used to validate the certificate of " +"the webhook server." +msgstr "" + #: authentik/events/models.py msgid "" "Customize the body of the request. Mapping should return data that is JSON-" @@ -1435,6 +1580,15 @@ msgstr "流程前置策略" msgid "Flow" msgstr "流程" +#: authentik/flows/apps.py +msgid "Refresh other tabs after successful authentication." +msgstr "" + +#: authentik/flows/apps.py +msgid "" +"Upon successful authentication, re-start authentication in other open tabs." +msgstr "" + #: authentik/flows/exceptions.py msgid "Flow does not apply to current user." msgstr "流程不应用于当前用户。" @@ -1536,9 +1690,9 @@ msgstr "流程令牌" msgid "Flow Tokens" msgstr "流程令牌" -#: authentik/flows/templates/if/flow.html -msgid "Site footer" -msgstr "网站页脚" +#: authentik/flows/planner.py +msgid "This link is invalid or has expired. Please request a new one." +msgstr "" #: authentik/flows/views/executor.py msgid "Invalid next URL" @@ -1546,7 +1700,7 @@ msgstr "无效的 next URL" #: authentik/lib/sync/incoming/models.py msgid "When to trigger sync for outgoing providers" -msgstr "" +msgstr "何时触发对外提供商的同步" #: authentik/lib/sync/outgoing/models.py msgid "Controls the number of objects synced in a single task" @@ -1894,20 +2048,6 @@ msgstr "信誉分数" msgid "Reputation Scores" msgstr "信誉分数" -#: authentik/policies/templates/policies/buffer.html -msgid "Waiting for authentication..." -msgstr "正在等待身份验证…" - -#: authentik/policies/templates/policies/buffer.html -msgid "" -"You're already authenticating in another tab. This page will refresh once " -"authentication is completed." -msgstr "您正在另一个标签页中验证身份。身份验证完成后,此页面会刷新。" - -#: authentik/policies/templates/policies/buffer.html -msgid "Authenticate in this tab" -msgstr "在此标签页中验证身份" - #: authentik/policies/templates/policies/denied.html msgid "Permission denied" msgstr "权限被拒绝" @@ -2026,6 +2166,14 @@ msgstr "严格 URL 比较" msgid "Regular Expression URL matching" msgstr "正则表达式 URL 匹配" +#: authentik/providers/oauth2/models.py +msgid "Authorization" +msgstr "授权" + +#: authentik/providers/oauth2/models.py +msgid "Logout" +msgstr "登出" + #: authentik/providers/oauth2/models.py msgid "Back-channel" msgstr "反向通道" @@ -2352,10 +2500,6 @@ msgstr "代理提供程序" msgid "Proxy Providers" msgstr "代理提供程序" -#: authentik/providers/proxy/tasks.py -msgid "Terminate session on Proxy outpost." -msgstr "终止代理前哨的会话。" - #: authentik/providers/rac/models.py authentik/stages/user_login/models.py msgid "" "Determines how long a session lasts. Default of 0 means that the sessions " @@ -2473,8 +2617,10 @@ msgid "" msgstr "断言的 Audience 受限字段的值。留空时,不会添加 Audience 限制。" #: authentik/providers/saml/models.py -msgid "Also known as EntityID" -msgstr "也称为 EntityID" +msgid "" +"Also known as EntityID. Providing a value overrides the default issuer " +"generated by authentik." +msgstr "" #: authentik/providers/saml/models.py msgid "SLS URL" @@ -2668,6 +2814,10 @@ msgstr "当前会话的 SAML NameID 值" msgid "SAML NameID format" msgstr "SAML NameID 格式" +#: authentik/providers/saml/models.py +msgid "SAML Issuer used for this session" +msgstr "" + #: authentik/providers/saml/models.py msgid "SAML Session" msgstr "SAML 会话" @@ -2696,6 +2846,14 @@ msgstr "Slack" msgid "Salesforce" msgstr "Salesforce" +#: authentik/providers/scim/models.py +msgid "Webex" +msgstr "" + +#: authentik/providers/scim/models.py +msgid "vCenter" +msgstr "" + #: authentik/providers/scim/models.py msgid "Group filters used to define sync-scope for groups." msgstr "用于定义组同步范围的组过滤器。" @@ -2960,7 +3118,7 @@ msgstr "" " 请联系您的管理员。\n" " " -#: authentik/sources/ldap/api.py +#: authentik/sources/ldap/api/sources.py msgid "Only a single LDAP Source with password synchronization is allowed" msgstr "仅允许使用密码同步的单个 LDAP 源" @@ -3468,6 +3626,12 @@ msgid "" "risk, as no validation of the request ID is done." msgstr "允许由 IdP 启动的身份验证流程。这可能存在安全风险,因为未对请求 ID 进行验证。" +#: authentik/sources/saml/models.py +msgid "" +"When enabled, the IdP will re-authenticate the user even if a session " +"exists." +msgstr "" + #: authentik/sources/saml/models.py msgid "" "NameID Policy sent to the IdP. Can be unset, in which case no Policy is " @@ -3870,6 +4034,10 @@ msgstr "身份验证器验证阶段" msgid "No (allowed) MFA authenticator configured." msgstr "未配置(允许的)MFA 身份验证器。" +#: authentik/stages/authenticator_webauthn/models.py +msgid "When enabled, a given device can only be registered once." +msgstr "" + #: authentik/stages/authenticator_webauthn/models.py msgid "WebAuthn Authenticator Setup Stage" msgstr "WebAuthn 身份验证器设置阶段" @@ -4000,6 +4168,10 @@ msgstr "电子邮件 OTP" msgid "Event Notification" msgstr "事件通知" +#: authentik/stages/email/models.py authentik/stages/invitation/models.py +msgid "Invitation" +msgstr "邀请" + #: authentik/stages/email/models.py msgid "" "The time window used to count recent account recovery attempts. If the " @@ -4112,6 +4284,62 @@ msgstr "" "\n" "此邮件由通知递送 %(name)s 发送。\n" +#: authentik/stages/email/templates/email/invitation.html +msgid "" +"\n" +" You're Invited!\n" +" " +msgstr "" + +#: authentik/stages/email/templates/email/invitation.html +#, python-format +msgid "" +"\n" +" You have been invited to join %(host)s. Click the button below to get started.\n" +" " +msgstr "" + +#: authentik/stages/email/templates/email/invitation.html +#, python-format +msgid "" +"\n" +" This invitation expires %(expires)s.\n" +" " +msgstr "" + +#: authentik/stages/email/templates/email/invitation.html +#: authentik/stages/email/templates/email/invitation.txt +msgid "Accept Invitation" +msgstr "接受邀请" + +#: authentik/stages/email/templates/email/invitation.html +msgid "" +"\n" +" If you cannot click the button above, please copy and paste the following URL into your browser:\n" +" " +msgstr "" + +#: authentik/stages/email/templates/email/invitation.txt +msgid "You're Invited!" +msgstr "你被邀请了!" + +#: authentik/stages/email/templates/email/invitation.txt +#, python-format +msgid "" +"You have been invited to join %(host)s. Use the link below to get started." +msgstr "" + +#: authentik/stages/email/templates/email/invitation.txt +#, python-format +msgid "This invitation expires %(expires)s." +msgstr "此邀请已失效 %(expires)s" + +#: authentik/stages/email/templates/email/invitation.txt +msgid "" +"If you cannot click the link above, please copy and paste the following URL " +"into your browser:" +msgstr "如果无法点击上方链接,请将以下网址复制并粘贴到浏览器中:" + #: authentik/stages/email/templates/email/password_reset.html msgid "" "\n" @@ -4272,10 +4500,6 @@ msgstr "启用后,邀请将在使用后被删除。" msgid "Optional fixed data to enforce on user enrollment." msgstr "在用户注册时强制设置的可选固定数据。" -#: authentik/stages/invitation/models.py -msgid "Invitation" -msgstr "邀请" - #: authentik/stages/invitation/models.py msgid "Invitations" msgstr "邀请" @@ -4386,6 +4610,18 @@ msgstr "隐藏:隐藏字段,可用于将数据插入表单。" msgid "Static: Static value, displayed as-is." msgstr "静态:静态值,按原样显示。" +#: authentik/stages/prompt/models.py +msgid "Alert (Info): Static alert box with info styling" +msgstr "" + +#: authentik/stages/prompt/models.py +msgid "Alert (Warning): Static alert box with warning styling" +msgstr "" + +#: authentik/stages/prompt/models.py +msgid "Alert (Danger): Static alert box with danger styling" +msgstr "" + #: authentik/stages/prompt/models.py msgid "authentik: Selection of locales authentik supports" msgstr "authentik:选择 authentik 支持的语言环境。" diff --git a/manage.py b/manage.py index 060df5e2c7..50e5c30436 100755 --- a/manage.py +++ b/manage.py @@ -17,11 +17,13 @@ if __name__ == "__main__": if ( len(sys.argv) > 1 # Explicitly only run migrate for server and worker - and sys.argv[1] in ["dev_server", "worker"] + and sys.argv[1] in ["dev_server"] # and don't run if this is the child process of a dev_server and os.environ.get(DJANGO_AUTORELOAD_ENV, None) is None ): run_migrations() + if len(sys.argv) > 1 and sys.argv[1] in ["worker"]: + raise RuntimeError(f"{sys.argv[1]} command not allowed.") try: from django.core.management import execute_from_command_line except ImportError as exc: diff --git a/package-lock.json b/package-lock.json index f8facc4e23..c7abb7b4b7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,33 +1,283 @@ { "name": "@goauthentik/authentik", - "version": "2026.5.0-rc1", + "version": "2026.8.0-rc1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@goauthentik/authentik", - "version": "2026.5.0-rc1", + "version": "2026.8.0-rc1", "dependencies": { "@eslint/js": "^9.39.3", + "@goauthentik/docusaurus-config": "./packages/docusaurus-config", "@goauthentik/eslint-config": "./packages/eslint-config", "@goauthentik/logger-js": "./packages/logger-js", "@goauthentik/prettier-config": "./packages/prettier-config", "@goauthentik/tsconfig": "./packages/tsconfig", - "@typescript-eslint/eslint-plugin": "^8.56.1", - "@typescript-eslint/parser": "^8.56.1", - "cspell": "^9.7.0", + "cspell": "^10.0.0", "eslint": "^9.39.3", "npm-run-all": "^4.1.5", "pino": "^10.3.1", "pino-pretty": "^13.1.2", - "prettier": "^3.8.1", + "prettier": "^3.8.3", "prettier-plugin-packagejson": "^3.0.0", - "typescript": "^5.9.3", - "typescript-eslint": "^8.56.1" + "typescript": "^6.0.3", + "typescript-eslint": "^8.59.3" }, "engines": { "node": ">=24", - "npm": ">=11.10.1" + "npm": ">=11.14.1" + } + }, + "node_modules/@algolia/abtesting": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/@algolia/abtesting/-/abtesting-1.18.1.tgz", + "integrity": "sha512-aehCadlWOGvrT91KUIZpC0MbB8KBW9yUuvTJFd2xesR7le/IsT4nJUnjCCZ4ZqZCeTcPHPV5mo//fZ5oxcSVYw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.52.1", + "@algolia/requester-browser-xhr": "5.52.1", + "@algolia/requester-fetch": "5.52.1", + "@algolia/requester-node-http": "5.52.1" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/autocomplete-core": { + "version": "1.19.8", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.19.8.tgz", + "integrity": "sha512-3YEorYg44niXcm7gkft3nXYItHd44e8tmh4D33CTszPgP0QWkaLEaFywiNyJBo7UL/mqObA/G9RYuU7R8tN1IA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/autocomplete-plugin-algolia-insights": "1.19.8", + "@algolia/autocomplete-shared": "1.19.8" + } + }, + "node_modules/@algolia/autocomplete-plugin-algolia-insights": { + "version": "1.19.8", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.19.8.tgz", + "integrity": "sha512-ZvJWO8ZZJDpc1LNM2TTBdmQsZBLMR4rU5iNR2OYvEeFBiaf/0ESnRSSLQbryarJY4SVxtoz6A2ZtDMNM+iQEAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/autocomplete-shared": "1.19.8" + }, + "peerDependencies": { + "search-insights": ">= 1 < 3" + } + }, + "node_modules/@algolia/autocomplete-shared": { + "version": "1.19.8", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.19.8.tgz", + "integrity": "sha512-h5hf2t8ejF6vlOgvLaZzQbWs5SyH2z4PAWygNAvvD/2RI29hdQ54ldUGwqVuj9Srs+n8XUKTPUqb7fvhBhQrnQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@algolia/client-search": ">= 4.9.1 < 6", + "algoliasearch": ">= 4.9.1 < 6" + } + }, + "node_modules/@algolia/client-abtesting": { + "version": "5.52.1", + "resolved": "https://registry.npmjs.org/@algolia/client-abtesting/-/client-abtesting-5.52.1.tgz", + "integrity": "sha512-HmXOGBOAOJPounpBzBpuY0zDYeiCpxgHnQmuA7JO6ScukcBdGp3/XM9zJk5pJx/xNGD68mbPGXWpDxGtl6BwDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.52.1", + "@algolia/requester-browser-xhr": "5.52.1", + "@algolia/requester-fetch": "5.52.1", + "@algolia/requester-node-http": "5.52.1" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-analytics": { + "version": "5.52.1", + "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-5.52.1.tgz", + "integrity": "sha512-5oo4+I8iixie9vXhCyNFCzeIr8pqA3FQ//VsLHTDvZAV4ttYOPGvYHGQq5NSalrLx5Jc3dRro/5uDOlnUMcBJg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.52.1", + "@algolia/requester-browser-xhr": "5.52.1", + "@algolia/requester-fetch": "5.52.1", + "@algolia/requester-node-http": "5.52.1" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-common": { + "version": "5.52.1", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.52.1.tgz", + "integrity": "sha512-qCDoZfx5MpX7XQzvQ3bC4tSEMkQWQMaF/ABtLuoze03Y/flR563CCSws02qIJ23oX7lxl92LsilZjINVyTdtLw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-insights": { + "version": "5.52.1", + "resolved": "https://registry.npmjs.org/@algolia/client-insights/-/client-insights-5.52.1.tgz", + "integrity": "sha512-hnGs0/lsFJ2PWDxNBz7pxreXo/Xz7gxYRcfePBUjsH26ad0kU/sgnVZd9LwWBpsQv65z2jlb5dkyaB9WE9M9FQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.52.1", + "@algolia/requester-browser-xhr": "5.52.1", + "@algolia/requester-fetch": "5.52.1", + "@algolia/requester-node-http": "5.52.1" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-personalization": { + "version": "5.52.1", + "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-5.52.1.tgz", + "integrity": "sha512-2VxxNc/uBysyKvGeBdSM5n9eIDKH8kWD7wd9/yqbJAiVwU4Yv6tU1LSJusHKrXV/aCu1KW7t9Gug9QyeEmtn/Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.52.1", + "@algolia/requester-browser-xhr": "5.52.1", + "@algolia/requester-fetch": "5.52.1", + "@algolia/requester-node-http": "5.52.1" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-query-suggestions": { + "version": "5.52.1", + "resolved": "https://registry.npmjs.org/@algolia/client-query-suggestions/-/client-query-suggestions-5.52.1.tgz", + "integrity": "sha512-O6mPtsw3xEfNOe6gWFpYLeAZAIljNa4Hgna3bq15PwyN7nbjTY0wXJFRbzs/0YVf75Br+SbOQUmjKxXYjDiSiQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.52.1", + "@algolia/requester-browser-xhr": "5.52.1", + "@algolia/requester-fetch": "5.52.1", + "@algolia/requester-node-http": "5.52.1" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-search": { + "version": "5.52.1", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.52.1.tgz", + "integrity": "sha512-gA8oJOV1LnQQkDf91iebNnFInHuW0gRPEgLSOQ7EfipCEjYTHm5swm1DlH9H5RaRw4RrHuzHBegnlzc0MAstcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.52.1", + "@algolia/requester-browser-xhr": "5.52.1", + "@algolia/requester-fetch": "5.52.1", + "@algolia/requester-node-http": "5.52.1" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/events": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@algolia/events/-/events-4.0.1.tgz", + "integrity": "sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@algolia/ingestion": { + "version": "1.52.1", + "resolved": "https://registry.npmjs.org/@algolia/ingestion/-/ingestion-1.52.1.tgz", + "integrity": "sha512-U9zZfc5xIu9wRxZkt+HceJUAD4VKHKbAyLSloJdEyMRmphXeibfrY9cxqIXBcmPeZzGhn3Imb35Dq8l19PkJhw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.52.1", + "@algolia/requester-browser-xhr": "5.52.1", + "@algolia/requester-fetch": "5.52.1", + "@algolia/requester-node-http": "5.52.1" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/monitoring": { + "version": "1.52.1", + "resolved": "https://registry.npmjs.org/@algolia/monitoring/-/monitoring-1.52.1.tgz", + "integrity": "sha512-a3SGNceHmkQfq77iG8Ka+w1pvwfZa/0lzEIgse30fL0kD+yKnd/dg0dQvSfFPAEt2f21DMcGkDSSeJlO3KdQjQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.52.1", + "@algolia/requester-browser-xhr": "5.52.1", + "@algolia/requester-fetch": "5.52.1", + "@algolia/requester-node-http": "5.52.1" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/recommend": { + "version": "5.52.1", + "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-5.52.1.tgz", + "integrity": "sha512-z98QEguCFDpxb4S/PyrUK1igqF8tPsdbqOUUO6ON91vJ58w+Gwa6ncrI0oNXSFcrkxA5EqPKPQ2A1PBCn08TYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.52.1", + "@algolia/requester-browser-xhr": "5.52.1", + "@algolia/requester-fetch": "5.52.1", + "@algolia/requester-node-http": "5.52.1" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/requester-browser-xhr": { + "version": "5.52.1", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.52.1.tgz", + "integrity": "sha512-CI7+/0I11QeZM59Uc8whd2or0kqzFVjpaPn9Qpwll/krHcBAxk24WkAQ6WX+IwDVMfpont4YGbKwAmCre3vE8Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.52.1" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/requester-fetch": { + "version": "5.52.1", + "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.52.1.tgz", + "integrity": "sha512-S6bDuw9byfOvm3T71cgdoZgrgnZq6hpdMLkx52Louh57nUAmvGQESz2aojOynQHjbTiV55smvAFbgn0qT4tJrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.52.1" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/requester-node-http": { + "version": "5.52.1", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.52.1.tgz", + "integrity": "sha512-tqZXM+54rWo4mk5jL5Z/flE11nPmNEdXwFBM5py9DkOmbjeCNemfVd45FyM97XdzfZ0dl9uOJC6PYn1FpkeyQg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.52.1" + }, + "engines": { + "node": ">= 14.0.0" } }, "node_modules/@babel/code-frame": { @@ -45,9 +295,9 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz", - "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==", + "version": "7.29.3", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.3.tgz", + "integrity": "sha512-LIVqM46zQWZhj17qA8wb4nW/ixr2y1Nw+r1etiAWgRM6U1IqP+LNhL1yg440jYZR72jCWcWbLWzIosH+uP1fqg==", "license": "MIT", "engines": { "node": ">=6.9.0" @@ -108,6 +358,19 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz", + "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.3" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-compilation-targets": { "version": "7.28.6", "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", @@ -133,6 +396,83 @@ "semver": "bin/semver.js" } }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.29.3", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.29.3.tgz", + "integrity": "sha512-RpLYy2sb51oNLjuu1iD3bwBqCBWUzjO0ocp+iaCP/lJtb2CPLcnC2Fftw+4sAzaMELGeWTgExSKADbdo0GFVzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-member-expression-to-functions": "^7.28.5", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/helper-replace-supers": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/traverse": "^7.29.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.28.5.tgz", + "integrity": "sha512-N1EhvLtHzOvj7QQOUCCS3NrPJP8c5W6ZXCHDn7Yialuy1iu4r5EmIYkXlKNqT99Ciw+W0mDqWoR6HWMZlFP3hw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "regexpu-core": "^6.3.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.8.tgz", + "integrity": "sha512-47UwBLPpQi1NoWzLuHNjRoHlYXMwIJoBf7MFou6viC/sIHWYygpvr0B6IAyh5sBdA2nr2LPIRww8lfaUVQINBA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "debug": "^4.4.3", + "lodash.debounce": "^4.0.8", + "resolve": "^1.22.11" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, "node_modules/@babel/helper-globals": { "version": "7.28.0", "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", @@ -142,6 +482,20 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.28.5.tgz", + "integrity": "sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.28.5", + "@babel/types": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-module-imports": { "version": "7.28.6", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", @@ -172,6 +526,79 @@ "@babel/core": "^7.0.0" } }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz", + "integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", + "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.27.1.tgz", + "integrity": "sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-wrap-function": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.28.6.tgz", + "integrity": "sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.28.5", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz", + "integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-string-parser": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", @@ -199,23 +626,38 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helpers": { + "node_modules/@babel/helper-wrap-function": { "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.6.tgz", - "integrity": "sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.28.6.tgz", + "integrity": "sha512-z+PwLziMNBeSQJonizz2AGnndLsP2DeGHIxDAn+wdHOGuo4Fo1x1HBPPXeE9TAOPHNNWQKCSlA2VZyYyyibDnQ==", + "dev": true, "license": "MIT", "dependencies": { "@babel/template": "^7.28.6", + "@babel/traverse": "^7.28.6", "@babel/types": "^7.28.6" }, "engines": { "node": ">=6.9.0" } }, + "node_modules/@babel/helpers": { + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.2.tgz", + "integrity": "sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/parser": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.0.tgz", - "integrity": "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==", + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.2.tgz", + "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==", "license": "MIT", "dependencies": { "@babel/types": "^7.29.0" @@ -227,6 +669,1366 @@ "node": ">=6.0.0" } }, + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.28.5.tgz", + "integrity": "sha512-87GDMS3tsmMSi/3bWOte1UblL+YUTFMV8SZPZ2eSEL17s74Cw/l63rR6NmGVKMYW2GYi85nE+/d6Hw5N0bEk2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.27.1.tgz", + "integrity": "sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.27.1.tgz", + "integrity": "sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-rest-destructuring-rhs-array": { + "version": "7.29.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-rest-destructuring-rhs-array/-/plugin-bugfix-safari-rest-destructuring-rhs-array-7.29.3.tgz", + "integrity": "sha512-SRS46DFR4HqzUzCVgi90/xMoL+zeBDBvWdKYXSEzh79kXswNFEglUpMKxR04//dPqwYXWUBJ3mpUd933ru9Kmg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz", + "integrity": "sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/plugin-transform-optional-chaining": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.28.6.tgz", + "integrity": "sha512-a0aBScVTlNaiUe35UtfxAN7A/tehvvG4/ByO6+46VPKTRSlfnAFsgKy0FUh+qAkQrDTmhDkT+IBOKlOoMUxQ0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.28.6.tgz", + "integrity": "sha512-pSJUpFHdx9z5nqTSirOCMtYVP2wFgoWhP0p3g8ONK/4IHhLIBd0B9NYqAvIUAhq+OkhO4VM1tENCt0cjlsNShw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.28.6.tgz", + "integrity": "sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.28.6.tgz", + "integrity": "sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.28.6.tgz", + "integrity": "sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz", + "integrity": "sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.29.0.tgz", + "integrity": "sha512-va0VdWro4zlBr2JsXC+ofCPB2iG12wPtVGTWFx2WLDOM3nYQZZIGP82qku2eW/JR83sD+k2k+CsNtyEbUqhU6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-remap-async-to-generator": "^7.27.1", + "@babel/traverse": "^7.29.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.28.6.tgz", + "integrity": "sha512-ilTRcmbuXjsMmcZ3HASTe4caH5Tpo93PkTxF9oG2VZsSWsahydmcEHhix9Ik122RcTnZnUzPbmux4wh1swfv7g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-remap-async-to-generator": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.27.1.tgz", + "integrity": "sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.6.tgz", + "integrity": "sha512-tt/7wOtBmwHPNMPu7ax4pdPz6shjFrmHDghvNC+FG9Qvj7D6mJcoRQIF5dy4njmxR941l6rgtvfSB2zX3VlUIw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.28.6.tgz", + "integrity": "sha512-dY2wS3I2G7D697VHndN91TJr8/AAfXQNt5ynCTI/MpxMsSzHp+52uNivYT5wCPax3whc47DR8Ba7cmlQMg24bw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.28.6.tgz", + "integrity": "sha512-rfQ++ghVwTWTqQ7w8qyDxL1XGihjBss4CmTgGRCTAC9RIbhVpyp4fOeZtta0Lbf+dTNIVJer6ych2ibHwkZqsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.6.tgz", + "integrity": "sha512-EF5KONAqC5zAqT783iMGuM2ZtmEBy+mJMOKl2BCvPZ2lVrwvXnB6o+OBWCS+CoeCCpVRF2sA2RBKUxvT8tQT5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-globals": "^7.28.0", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-replace-supers": "^7.28.6", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.28.6.tgz", + "integrity": "sha512-bcc3k0ijhHbc2lEfpFHgx7eYw9KNXqOerKWfzbxEHUGKnS3sz9C4CNL9OiFN1297bDNfUiSO7DaLzbvHQQQ1BQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/template": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.5.tgz", + "integrity": "sha512-Kl9Bc6D0zTUcFUvkNuQh4eGXPKKNDOJQXVyyM4ZAQPMveniJdxi8XMJwLo+xSoW3MIq81bD33lcUe9kZpl0MCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.28.6.tgz", + "integrity": "sha512-SljjowuNKB7q5Oayv4FoPzeB74g3QgLt8IVJw9ADvWy3QnUb/01aw8I4AVv8wYnPvQz2GDDZ/g3GhcNyDBI4Bg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.27.1.tgz", + "integrity": "sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.29.0.tgz", + "integrity": "sha512-zBPcW2lFGxdiD8PUnPwJjag2J9otbcLQzvbiOzDxpYXyCuYX9agOwMPGn1prVH0a4qzhCKu24rlH4c1f7yA8rw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.27.1.tgz", + "integrity": "sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-explicit-resource-management": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.6.tgz", + "integrity": "sha512-Iao5Konzx2b6g7EPqTy40UZbcdXE126tTxVFr/nAIj+WItNxjKSYTEw3RC+A2/ZetmdJsgueL1KhaMCQHkLPIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/plugin-transform-destructuring": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.28.6.tgz", + "integrity": "sha512-WitabqiGjV/vJ0aPOLSFfNY1u9U3R7W36B03r5I2KoNix+a3sOhJ3pKFB3R5It9/UiK78NiO0KE9P21cMhlPkw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.27.1.tgz", + "integrity": "sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.27.1.tgz", + "integrity": "sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz", + "integrity": "sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.28.6.tgz", + "integrity": "sha512-Nr+hEN+0geQkzhbdgQVPoqr47lZbm+5fCUmO70722xJZd0Mvb59+33QLImGj6F+DkK3xgDi1YVysP8whD6FQAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz", + "integrity": "sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.28.6.tgz", + "integrity": "sha512-+anKKair6gpi8VsM/95kmomGNMD0eLz1NQ8+Pfw5sAwWH9fGYXT50E55ZpV0pHUHWf6IUTWPM+f/7AAff+wr9A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.27.1.tgz", + "integrity": "sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.27.1.tgz", + "integrity": "sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.28.6.tgz", + "integrity": "sha512-jppVbf8IV9iWWwWTQIxJMAJCWBuuKx71475wHwYytrRGQ2CWiDvYlADQno3tcYpS/T2UUWFQp3nVtYfK/YBQrA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.29.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.4.tgz", + "integrity": "sha512-N7QmZ0xRZfjHOfZeQLJjwgX2zS9pdGHSVl/cjSGlo4dXMqvurfxXDMKY4RqEKzPozV78VMcd0lxyG13mlbKc4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.29.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.27.1.tgz", + "integrity": "sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.29.0.tgz", + "integrity": "sha512-1CZQA5KNAD6ZYQLPw7oi5ewtDNxH/2vuCh+6SmvgDfhumForvs8a1o9n0UrEoBD8HU4djO2yWngTQlXl1NDVEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.27.1.tgz", + "integrity": "sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.28.6.tgz", + "integrity": "sha512-3wKbRgmzYbw24mDJXT7N+ADXw8BC/imU9yo9c9X9NKaLF1fW+e5H1U5QjMUBe4Qo4Ox/o++IyUkl1sVCLgevKg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.28.6.tgz", + "integrity": "sha512-SJR8hPynj8outz+SlStQSwvziMN4+Bq99it4tMIf5/Caq+3iOc0JtKyse8puvyXkk3eFRIA5ID/XfunGgO5i6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.6.tgz", + "integrity": "sha512-5rh+JR4JBC4pGkXLAcYdLHZjXudVxWMXbB6u6+E9lRL5TrGVbHt1TjxGbZ8CkmYw9zjkB7jutzOROArsqtncEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/plugin-transform-destructuring": "^7.28.5", + "@babel/plugin-transform-parameters": "^7.27.7", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.27.1.tgz", + "integrity": "sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.28.6.tgz", + "integrity": "sha512-R8ja/Pyrv0OGAvAXQhSTmWyPJPml+0TMqXlO5w+AsMEiwb2fg3WkOvob7UxFSL3OIttFSGSRFKQsOhJ/X6HQdQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.28.6.tgz", + "integrity": "sha512-A4zobikRGJTsX9uqVFdafzGkqD30t26ck2LmOzAuLL8b2x6k3TIqRiT2xVvA9fNmFeTX484VpsdgmKNA0bS23w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.27.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.7.tgz", + "integrity": "sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.28.6.tgz", + "integrity": "sha512-piiuapX9CRv7+0st8lmuUlRSmX6mBcVeNQ1b4AYzJxfCMuBfB0vBXDiGSmm03pKJw1v6cZ8KSeM+oUnM6yAExg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.28.6.tgz", + "integrity": "sha512-b97jvNSOb5+ehyQmBpmhOCiUC5oVK4PMnpRvO7+ymFBoqYjeDHIU9jnrNUuwHOiL9RpGDoKBpSViarV+BU+eVA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.27.1.tgz", + "integrity": "sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-display-name": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.28.0.tgz", + "integrity": "sha512-D6Eujc2zMxKjfa4Zxl4GHMsmhKKZ9VpcqIchJLvwTxad9zWIYulwYItBovpDOoNLISpcZSXoDJ5gaGbQUDqViA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.28.6.tgz", + "integrity": "sha512-61bxqhiRfAACulXSLd/GxqmAedUSrRZIu/cbaT18T1CetkTmtDN15it7i80ru4DVqRK1WMxQhXs+Lf9kajm5Ow==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/plugin-syntax-jsx": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-development": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.27.1.tgz", + "integrity": "sha512-ykDdF5yI4f1WrAolLqeF3hmYU12j9ntLQl/AOG1HAS21jxyg1Q0/J/tpREuYLfatGdGmXp/3yS0ZA76kOlVq9Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/plugin-transform-react-jsx": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-pure-annotations": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.27.1.tgz", + "integrity": "sha512-JfuinvDOsD9FVMTHpzA/pBLisxpv1aSf+OIV8lgH3MuWrks19R27e6a6DipIg4aX1Zm9Wpb04p8wljfKrVSnPA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.29.0.tgz", + "integrity": "sha512-FijqlqMA7DmRdg/aINBSs04y8XNTYw/lr1gJ2WsmBnnaNw1iS43EPkJW+zK7z65auG3AWRFXWj+NcTQwYptUog==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regexp-modifiers": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.28.6.tgz", + "integrity": "sha512-QGWAepm9qxpaIs7UM9FvUSnCGlb8Ua1RhyM4/veAxLwt3gMat/LSGrZixyuj4I6+Kn9iwvqCyPTtbdxanYoWYg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.27.1.tgz", + "integrity": "sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.29.0.tgz", + "integrity": "sha512-jlaRT5dJtMaMCV6fAuLbsQMSwz/QkvaHOHOSXRitGGwSpR1blCY4KUKoyP2tYO8vJcqYe8cEj96cqSztv3uF9w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "babel-plugin-polyfill-corejs2": "^0.4.14", + "babel-plugin-polyfill-corejs3": "^0.13.0", + "babel-plugin-polyfill-regenerator": "^0.6.5", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz", + "integrity": "sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.28.6.tgz", + "integrity": "sha512-9U4QObUC0FtJl05AsUcodau/RWDytrU6uKgkxu09mLR9HLDAtUMoPuuskm5huQsoktmsYpI+bGmq+iapDcriKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz", + "integrity": "sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.27.1.tgz", + "integrity": "sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.1.tgz", + "integrity": "sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.6.tgz", + "integrity": "sha512-0YWL2RFxOqEm9Efk5PvreamxPME8OyY0wM5wh5lHjF+VtVhdneCWGzZeSqzOfiobVqQaNCd2z0tQvnI9DaPWPw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/plugin-syntax-typescript": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.27.1.tgz", + "integrity": "sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.28.6.tgz", + "integrity": "sha512-4Wlbdl/sIZjzi/8St0evF0gEZrgOswVO6aOzqxh1kDZOl9WmLrHq2HtGhnOJZmHZYKP8WZ1MDLCt5DAWwRo57A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.27.1.tgz", + "integrity": "sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.28.6.tgz", + "integrity": "sha512-/wHc/paTUmsDYN7SZkpWxogTOBNnlx7nBQYfy6JJlCT7G3mVhltk3e++N7zV0XfgGsrqBxd4rJQt9H16I21Y1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.29.5", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.29.5.tgz", + "integrity": "sha512-/69t2aEzGKHD76DyLbHysF/QH2LJOB8iFnYO37unDTKBTubzcMRv0f3H5EiN1Q6ajOd/eB7dAInF0qdFVS06kA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.29.3", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.28.5", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.27.1", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.27.1", + "@babel/plugin-bugfix-safari-rest-destructuring-rhs-array": "^7.29.3", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.27.1", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.28.6", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-import-assertions": "^7.28.6", + "@babel/plugin-syntax-import-attributes": "^7.28.6", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.27.1", + "@babel/plugin-transform-async-generator-functions": "^7.29.0", + "@babel/plugin-transform-async-to-generator": "^7.28.6", + "@babel/plugin-transform-block-scoped-functions": "^7.27.1", + "@babel/plugin-transform-block-scoping": "^7.28.6", + "@babel/plugin-transform-class-properties": "^7.28.6", + "@babel/plugin-transform-class-static-block": "^7.28.6", + "@babel/plugin-transform-classes": "^7.28.6", + "@babel/plugin-transform-computed-properties": "^7.28.6", + "@babel/plugin-transform-destructuring": "^7.28.5", + "@babel/plugin-transform-dotall-regex": "^7.28.6", + "@babel/plugin-transform-duplicate-keys": "^7.27.1", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.29.0", + "@babel/plugin-transform-dynamic-import": "^7.27.1", + "@babel/plugin-transform-explicit-resource-management": "^7.28.6", + "@babel/plugin-transform-exponentiation-operator": "^7.28.6", + "@babel/plugin-transform-export-namespace-from": "^7.27.1", + "@babel/plugin-transform-for-of": "^7.27.1", + "@babel/plugin-transform-function-name": "^7.27.1", + "@babel/plugin-transform-json-strings": "^7.28.6", + "@babel/plugin-transform-literals": "^7.27.1", + "@babel/plugin-transform-logical-assignment-operators": "^7.28.6", + "@babel/plugin-transform-member-expression-literals": "^7.27.1", + "@babel/plugin-transform-modules-amd": "^7.27.1", + "@babel/plugin-transform-modules-commonjs": "^7.28.6", + "@babel/plugin-transform-modules-systemjs": "^7.29.4", + "@babel/plugin-transform-modules-umd": "^7.27.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.29.0", + "@babel/plugin-transform-new-target": "^7.27.1", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.28.6", + "@babel/plugin-transform-numeric-separator": "^7.28.6", + "@babel/plugin-transform-object-rest-spread": "^7.28.6", + "@babel/plugin-transform-object-super": "^7.27.1", + "@babel/plugin-transform-optional-catch-binding": "^7.28.6", + "@babel/plugin-transform-optional-chaining": "^7.28.6", + "@babel/plugin-transform-parameters": "^7.27.7", + "@babel/plugin-transform-private-methods": "^7.28.6", + "@babel/plugin-transform-private-property-in-object": "^7.28.6", + "@babel/plugin-transform-property-literals": "^7.27.1", + "@babel/plugin-transform-regenerator": "^7.29.0", + "@babel/plugin-transform-regexp-modifiers": "^7.28.6", + "@babel/plugin-transform-reserved-words": "^7.27.1", + "@babel/plugin-transform-shorthand-properties": "^7.27.1", + "@babel/plugin-transform-spread": "^7.28.6", + "@babel/plugin-transform-sticky-regex": "^7.27.1", + "@babel/plugin-transform-template-literals": "^7.27.1", + "@babel/plugin-transform-typeof-symbol": "^7.27.1", + "@babel/plugin-transform-unicode-escapes": "^7.27.1", + "@babel/plugin-transform-unicode-property-regex": "^7.28.6", + "@babel/plugin-transform-unicode-regex": "^7.27.1", + "@babel/plugin-transform-unicode-sets-regex": "^7.28.6", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.15", + "babel-plugin-polyfill-corejs3": "^0.14.0", + "babel-plugin-polyfill-regenerator": "^0.6.6", + "core-js-compat": "^3.48.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env/node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.14.2.tgz", + "integrity": "sha512-coWpDLJ410R781Npmn/SIBZEsAetR4xVi0SxLMXPaMO4lSf1MwnkGYMtkFxew0Dn8B3/CpbpYxN0JCgg8mn67g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.8", + "core-js-compat": "^3.48.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/preset-env/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/preset-react": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.28.5.tgz", + "integrity": "sha512-Z3J8vhRq7CeLjdC58jLv4lnZ5RKFUJWqH5emvxmv9Hv3BD1T9R/Im713R4MTKwvFaV74ejZ3sM01LyEKk4ugNQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-transform-react-display-name": "^7.28.0", + "@babel/plugin-transform-react-jsx": "^7.27.1", + "@babel/plugin-transform-react-jsx-development": "^7.27.1", + "@babel/plugin-transform-react-pure-annotations": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-typescript": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.28.5.tgz", + "integrity": "sha512-+bQy5WOI2V6LJZpPVxY+yp66XdZ2yifu0Mc1aP5CQKgjn4QM5IN2i5fAZ4xKop47pr8rpVhiAeu+nDQa12C8+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-syntax-jsx": "^7.27.1", + "@babel/plugin-transform-modules-commonjs": "^7.27.1", + "@babel/plugin-transform-typescript": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.2.tgz", + "integrity": "sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/template": { "version": "7.28.6", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", @@ -272,64 +2074,75 @@ "node": ">=6.9.0" } }, + "node_modules/@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.1.90" + } + }, "node_modules/@cspell/cspell-bundled-dicts": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cspell/cspell-bundled-dicts/-/cspell-bundled-dicts-9.7.0.tgz", - "integrity": "sha512-s7h1vo++Q3AsfQa3cs0u/KGwm3SYInuIlC4kjlCBWjQmb4KddiZB5O1u0+3TlA7GycHb5M4CR7MDfHUICgJf+w==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@cspell/cspell-bundled-dicts/-/cspell-bundled-dicts-10.0.0.tgz", + "integrity": "sha512-ci410HEkng2582oOjlRHQtlGXwh+rUC/mVcN9dObLHpKhvPgzn2S6vT56pARstxxZpcCUG/oLhn3dCqdJlVzmA==", "license": "MIT", "dependencies": { "@cspell/dict-ada": "^4.1.1", "@cspell/dict-al": "^1.1.1", "@cspell/dict-aws": "^4.0.17", "@cspell/dict-bash": "^4.2.2", - "@cspell/dict-companies": "^3.2.10", + "@cspell/dict-companies": "^3.2.11", "@cspell/dict-cpp": "^7.0.2", "@cspell/dict-cryptocurrencies": "^5.0.5", "@cspell/dict-csharp": "^4.0.8", - "@cspell/dict-css": "^4.0.19", + "@cspell/dict-css": "^4.1.1", "@cspell/dict-dart": "^2.3.2", "@cspell/dict-data-science": "^2.0.13", "@cspell/dict-django": "^4.1.6", "@cspell/dict-docker": "^1.1.17", - "@cspell/dict-dotnet": "^5.0.12", + "@cspell/dict-dotnet": "^5.0.13", "@cspell/dict-elixir": "^4.0.8", - "@cspell/dict-en_us": "^4.4.29", + "@cspell/dict-en_us": "^4.4.33", "@cspell/dict-en-common-misspellings": "^2.1.12", - "@cspell/dict-en-gb-mit": "^3.1.18", - "@cspell/dict-filetypes": "^3.0.15", + "@cspell/dict-en-gb-mit": "^3.1.22", + "@cspell/dict-filetypes": "^3.0.18", "@cspell/dict-flutter": "^1.1.1", - "@cspell/dict-fonts": "^4.0.5", + "@cspell/dict-fonts": "^4.0.6", "@cspell/dict-fsharp": "^1.1.1", - "@cspell/dict-fullstack": "^3.2.8", + "@cspell/dict-fullstack": "^3.2.9", "@cspell/dict-gaming-terms": "^1.1.2", "@cspell/dict-git": "^3.1.0", "@cspell/dict-golang": "^6.0.26", "@cspell/dict-google": "^1.0.9", "@cspell/dict-haskell": "^4.0.6", - "@cspell/dict-html": "^4.0.14", + "@cspell/dict-html": "^4.0.15", "@cspell/dict-html-symbol-entities": "^4.0.5", "@cspell/dict-java": "^5.0.12", "@cspell/dict-julia": "^1.1.1", "@cspell/dict-k8s": "^1.0.12", "@cspell/dict-kotlin": "^1.1.1", - "@cspell/dict-latex": "^5.0.0", + "@cspell/dict-latex": "^5.1.0", "@cspell/dict-lorem-ipsum": "^4.0.5", "@cspell/dict-lua": "^4.0.8", "@cspell/dict-makefile": "^1.0.5", - "@cspell/dict-markdown": "^2.0.14", + "@cspell/dict-markdown": "^2.0.16", "@cspell/dict-monkeyc": "^1.0.12", "@cspell/dict-node": "^5.0.9", - "@cspell/dict-npm": "^5.2.34", + "@cspell/dict-npm": "^5.2.38", "@cspell/dict-php": "^4.1.1", "@cspell/dict-powershell": "^5.0.15", - "@cspell/dict-public-licenses": "^2.0.15", - "@cspell/dict-python": "^4.2.25", + "@cspell/dict-public-licenses": "^2.0.16", + "@cspell/dict-python": "^4.2.26", "@cspell/dict-r": "^2.1.1", - "@cspell/dict-ruby": "^5.1.0", + "@cspell/dict-ruby": "^5.1.1", "@cspell/dict-rust": "^4.1.2", "@cspell/dict-scala": "^5.0.9", "@cspell/dict-shell": "^1.1.2", - "@cspell/dict-software-terms": "^5.1.21", + "@cspell/dict-software-terms": "^5.2.2", "@cspell/dict-sql": "^2.2.1", "@cspell/dict-svelte": "^1.0.7", "@cspell/dict-swift": "^2.0.6", @@ -339,79 +2152,79 @@ "@cspell/dict-zig": "^1.0.0" }, "engines": { - "node": ">=20" + "node": ">=22.18.0" } }, "node_modules/@cspell/cspell-json-reporter": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cspell/cspell-json-reporter/-/cspell-json-reporter-9.7.0.tgz", - "integrity": "sha512-6xpGXlMtQA3hV2BCAQcPkpx9eI12I0o01i9eRqSSEDKtxuAnnrejbcCpL+5OboAjTp3/BSeNYSnhuWYLkSITWQ==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@cspell/cspell-json-reporter/-/cspell-json-reporter-10.0.0.tgz", + "integrity": "sha512-hq5dui2ngYMZKbBauX7K1tkqlu81sX/uaCO49ZJLPjeZsE1auZLtHehDLfAr/ZXoj/dLYeQMSKiaJyE+qLVPHA==", "license": "MIT", "dependencies": { - "@cspell/cspell-types": "9.7.0" + "@cspell/cspell-types": "10.0.0" }, "engines": { - "node": ">=20" + "node": ">=22.18.0" } }, "node_modules/@cspell/cspell-performance-monitor": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cspell/cspell-performance-monitor/-/cspell-performance-monitor-9.7.0.tgz", - "integrity": "sha512-w1PZIFXuvjnC6mQHyYAFnrsn5MzKnEcEkcK1bj4OG00bAt7WX2VUA/eNNt9c1iHozCQ+FcRYlfbGxuBmNyzSgw==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@cspell/cspell-performance-monitor/-/cspell-performance-monitor-10.0.0.tgz", + "integrity": "sha512-2vMh2pLt2dg/ArYvWjMP4v9HCm0pRhONsEJyc8oHdZyOYvX7trixX894I0M39+VBf3yWtPCEgYRh1UDXNIZRig==", "license": "MIT", "engines": { - "node": ">=20.18" + "node": ">=22.18.0" } }, "node_modules/@cspell/cspell-pipe": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cspell/cspell-pipe/-/cspell-pipe-9.7.0.tgz", - "integrity": "sha512-iiisyRpJciU9SOHNSi0ZEK0pqbEMFRatI/R4O+trVKb+W44p4MNGClLVRWPGUmsFbZKPJL3jDtz0wPlG0/JCZA==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@cspell/cspell-pipe/-/cspell-pipe-10.0.0.tgz", + "integrity": "sha512-qcgHhQvtEX8LSwIVsWrdUgiGim52lN3jT+ghlkdp72v+nBcGKsS2frEKTmbGLug+xcqppkzs6Q6VmsFp1MGtfA==", "license": "MIT", "engines": { - "node": ">=20" + "node": ">=22.18.0" } }, "node_modules/@cspell/cspell-resolver": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cspell/cspell-resolver/-/cspell-resolver-9.7.0.tgz", - "integrity": "sha512-uiEgS238mdabDnwavo6HXt8K98jlh/jpm7NONroM9NTr9rzck2VZKD2kXEj85wDNMtRsRXNoywTjwQ8WTB6/+w==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@cspell/cspell-resolver/-/cspell-resolver-10.0.0.tgz", + "integrity": "sha512-8H+IUDB7SmrpcRugQ5f55qG81ZShk6nQRk+natLz41TEY98D8/LCmjHEkh/vhDPph9pVJmNUp7JcM2E1UHEa2g==", "license": "MIT", "dependencies": { "global-directory": "^5.0.0" }, "engines": { - "node": ">=20" + "node": ">=22.18.0" } }, "node_modules/@cspell/cspell-service-bus": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cspell/cspell-service-bus/-/cspell-service-bus-9.7.0.tgz", - "integrity": "sha512-fkqtaCkg4jY/FotmzjhIavbXuH0AgUJxZk78Ktf4XlhqOZ4wDeUWrCf220bva4mh3TWiLx/ae9lIlpl59Vx6hA==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@cspell/cspell-service-bus/-/cspell-service-bus-10.0.0.tgz", + "integrity": "sha512-V7eigqg/TOoKwNK4Q18wr9KGxA8U5SFcoWVS8RyAxv4mQ+yNKHhvHEbRBifjPbQDer66afOrclb2UbqkIy2SOw==", "license": "MIT", "engines": { - "node": ">=20" + "node": ">=22.18.0" } }, "node_modules/@cspell/cspell-types": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cspell/cspell-types/-/cspell-types-9.7.0.tgz", - "integrity": "sha512-Tdfx4eH2uS+gv9V9NCr3Rz+c7RSS6ntXp3Blliud18ibRUlRxO9dTaOjG4iv4x0nAmMeedP1ORkEpeXSkh2QiQ==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@cspell/cspell-types/-/cspell-types-10.0.0.tgz", + "integrity": "sha512-IQA++Idqb8fZzkCbHq3+T+9yG9WpeaBxomOrG2KcR/Pj0CgnovzuApYKL2cc35UWLePboKinMeqEPiweFpHVug==", "license": "MIT", "engines": { - "node": ">=20" + "node": ">=22.18.0" } }, "node_modules/@cspell/cspell-worker": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cspell/cspell-worker/-/cspell-worker-9.7.0.tgz", - "integrity": "sha512-cjEApFF0aOAa1vTUk+e7xP8ofK7iC7hsRzj1FmvvVQz8PoLWPRaq+1bT89ypPsZQvavqm5sIgb97S60/aW4TVg==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@cspell/cspell-worker/-/cspell-worker-10.0.0.tgz", + "integrity": "sha512-V5bjMldNksilnja3fu8muQmkW5/guyua1yNVOhoE2r7othSvjuDlGMl8g2bQSrWjp+UXu0dP/BEZ6JC/IfNwTA==", "license": "MIT", "dependencies": { - "cspell-lib": "9.7.0" + "cspell-lib": "10.0.0" }, "engines": { - "node": ">=20.18" + "node": ">=22.18.0" } }, "node_modules/@cspell/dict-ada": { @@ -496,9 +2309,9 @@ "license": "MIT" }, "node_modules/@cspell/dict-dotnet": { - "version": "5.0.12", - "resolved": "https://registry.npmjs.org/@cspell/dict-dotnet/-/dict-dotnet-5.0.12.tgz", - "integrity": "sha512-FiV934kNieIjGTkiApu/WKvLYi/KBpvfWB2TSqpDQtmXZlt3uSa5blwblO1ZC8OvjH8RCq/31H5IdEYmTaZS7A==", + "version": "5.0.13", + "resolved": "https://registry.npmjs.org/@cspell/dict-dotnet/-/dict-dotnet-5.0.13.tgz", + "integrity": "sha512-xPp7jMnFpOri7tzmqmm/dXMolXz1t2bhNqxYkOyMqXhvs08oc7BFs+EsbDY0X7hqiISgeFZGNqn0dOCr+ncPYw==", "license": "MIT" }, "node_modules/@cspell/dict-elixir": { @@ -508,9 +2321,9 @@ "license": "MIT" }, "node_modules/@cspell/dict-en_us": { - "version": "4.4.31", - "resolved": "https://registry.npmjs.org/@cspell/dict-en_us/-/dict-en_us-4.4.31.tgz", - "integrity": "sha512-MdV6mbrSkyIqn9+6F5poCyHIPqWB3H/wlDL9LXfjgAxNFBdYRE767xJtIYunzUqhUiJHSJgZajEFdTtMDw441Q==", + "version": "4.4.33", + "resolved": "https://registry.npmjs.org/@cspell/dict-en_us/-/dict-en_us-4.4.33.tgz", + "integrity": "sha512-zWftVqfUStDA37wO1ZNDN1qMJOfcxELa8ucHW8W8wBAZY3TK5Nb6deLogCK/IJi/Qljf30dwwuqqv84Qqle9Tw==", "license": "MIT" }, "node_modules/@cspell/dict-en-common-misspellings": { @@ -520,15 +2333,15 @@ "license": "CC BY-SA 4.0" }, "node_modules/@cspell/dict-en-gb-mit": { - "version": "3.1.20", - "resolved": "https://registry.npmjs.org/@cspell/dict-en-gb-mit/-/dict-en-gb-mit-3.1.20.tgz", - "integrity": "sha512-rcWEKb1mwgK13CSHu6GwwFA/sWLRkB0twTzSfPxUOULJkhcUrL93ixohk416SBa0BVxixub+lOpTXKcCTbTXsA==", + "version": "3.1.22", + "resolved": "https://registry.npmjs.org/@cspell/dict-en-gb-mit/-/dict-en-gb-mit-3.1.22.tgz", + "integrity": "sha512-xE5Vg6gGdMkZ1Ep6z9SJMMioGkkT1GbxS5Mm0U3Ey1/H68P0G7cJcyiVr1CARxFbLqKE4QUpoV1o6jz1Z5Yl9Q==", "license": "MIT" }, "node_modules/@cspell/dict-filetypes": { - "version": "3.0.17", - "resolved": "https://registry.npmjs.org/@cspell/dict-filetypes/-/dict-filetypes-3.0.17.tgz", - "integrity": "sha512-6f1gZf9o60fGQXGi/fZaryISUNDRmmJwGyr4QU1UvgUgOdpDHLVJtv/0wSL9q5F0wAkYhbXo/fNG8CcUTaf7Ww==", + "version": "3.0.18", + "resolved": "https://registry.npmjs.org/@cspell/dict-filetypes/-/dict-filetypes-3.0.18.tgz", + "integrity": "sha512-yU7RKD/x1IWmDLzWeiItMwgV+6bUcU/af23uS0+uGiFUbsY1qWV/D4rxlAAO6Z7no3J2z8aZOkYIOvUrJq0Rcw==", "license": "MIT" }, "node_modules/@cspell/dict-flutter": { @@ -550,9 +2363,9 @@ "license": "MIT" }, "node_modules/@cspell/dict-fullstack": { - "version": "3.2.8", - "resolved": "https://registry.npmjs.org/@cspell/dict-fullstack/-/dict-fullstack-3.2.8.tgz", - "integrity": "sha512-J6EeoeThvx/DFrcA2rJiCA6vfqwJMbkG0IcXhlsmRZmasIpanmxgt90OEaUazbZahFiuJT8wrhgQ1QgD1MsqBw==", + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/@cspell/dict-fullstack/-/dict-fullstack-3.2.9.tgz", + "integrity": "sha512-diZX+usW5aZ4/b2T0QM/H/Wl9aNMbdODa1Jq0ReBr/jazmNeWjd+PyqeVgzd1joEaHY+SAnjrf/i9CwKd2ZtWQ==", "license": "MIT" }, "node_modules/@cspell/dict-gaming-terms": { @@ -670,9 +2483,9 @@ "license": "MIT" }, "node_modules/@cspell/dict-npm": { - "version": "5.2.37", - "resolved": "https://registry.npmjs.org/@cspell/dict-npm/-/dict-npm-5.2.37.tgz", - "integrity": "sha512-dYKrD0bI08YgebJcbjsIDpTMK6EH0wTkEyQLsaH0T4tmsLJE95coTYb3eE7giRRGJADvBqrjH4fz5+INd85QqQ==", + "version": "5.2.38", + "resolved": "https://registry.npmjs.org/@cspell/dict-npm/-/dict-npm-5.2.38.tgz", + "integrity": "sha512-21ucGRPYYhr91C2cDBoMPTrcIOStQv33xOqJB0JLoC5LAs2Sfj9EoPGhGb+gIFVHz6Ia7JQWE2SJsOVFJD1wmg==", "license": "MIT" }, "node_modules/@cspell/dict-php": { @@ -694,9 +2507,9 @@ "license": "MIT" }, "node_modules/@cspell/dict-python": { - "version": "4.2.25", - "resolved": "https://registry.npmjs.org/@cspell/dict-python/-/dict-python-4.2.25.tgz", - "integrity": "sha512-hDdN0YhKgpbtZVRjQ2c8jk+n0wQdidAKj1Fk8w7KEHb3YlY5uPJ0mAKJk7AJKPNLOlILoUmN+HAVJz+cfSbWYg==", + "version": "4.2.26", + "resolved": "https://registry.npmjs.org/@cspell/dict-python/-/dict-python-4.2.26.tgz", + "integrity": "sha512-hbjN6BjlSgZOG2dA2DtvYNGBM5Aq0i0dHaZjMOI9K/9vRicVvKbcCiBSSrR3b+jwjhQL5ff7HwG5xFaaci0GQA==", "license": "MIT", "dependencies": { "@cspell/dict-data-science": "^2.0.13" @@ -733,9 +2546,9 @@ "license": "MIT" }, "node_modules/@cspell/dict-software-terms": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@cspell/dict-software-terms/-/dict-software-terms-5.2.0.tgz", - "integrity": "sha512-jyucc8KKxH5ClC4FPICISgcKAZU7UwgFdPkuuuK5nYIw0+l1umnUSn9IKCcOaurvXujvVP6mBfclXpUtmT6Vrw==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/@cspell/dict-software-terms/-/dict-software-terms-5.2.2.tgz", + "integrity": "sha512-0CaYd6TAsKtEoA7tNswm1iptEblTzEe3UG8beG2cpSTHk7afWIVMtJLgXDv0f/Li67Lf3Z1Jf3JeXR7GsJ2TRw==", "license": "MIT" }, "node_modules/@cspell/dict-sql": { @@ -781,52 +2594,2097 @@ "license": "MIT" }, "node_modules/@cspell/dynamic-import": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cspell/dynamic-import/-/dynamic-import-9.7.0.tgz", - "integrity": "sha512-Ws36IYvtS/8IN3x6K9dPLvTmaArodRJmzTn2Rkf2NaTnIYWhRuFzsP3SVVO59NN3fXswAEbmz5DSbVUe8bPZHg==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@cspell/dynamic-import/-/dynamic-import-10.0.0.tgz", + "integrity": "sha512-fMqu/5Ma1Q5ZCR/Par+Q4pvaTKmx5pKZzQmkwld2hNounVdk2OaIPM9MzpNn6I1mLk5J+wTnIZmfcWNAzNP9aQ==", "license": "MIT", "dependencies": { - "@cspell/url": "9.7.0", + "@cspell/url": "10.0.0", "import-meta-resolve": "^4.2.0" }, "engines": { - "node": ">=20" + "node": ">=22.18.0" } }, "node_modules/@cspell/filetypes": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cspell/filetypes/-/filetypes-9.7.0.tgz", - "integrity": "sha512-Ln9e/8wGOyTeL3DCCs6kwd18TSpTw3kxsANjTrzLDASrX4cNmAdvc9J5dcIuBHPaqOAnRQxuZbzUlpRh73Y24w==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@cspell/filetypes/-/filetypes-10.0.0.tgz", + "integrity": "sha512-UP57j9yrDtlCHpFxc/eGho1m8DP5olfu9KRWwd5fiqL9nMSE2rUJtPzQyvqmDwO5bVZt3B+fTVdo4gxuiqw25A==", "license": "MIT", "engines": { - "node": ">=20" + "node": ">=22.18.0" } }, "node_modules/@cspell/rpc": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cspell/rpc/-/rpc-9.7.0.tgz", - "integrity": "sha512-VnZ4ABgQeoS4RwofcePkDP7L6tf3Kh5D7LQKoyRM4R6XtfSsYefym6XKaRl3saGtthH5YyjgNJ0Tgdjen4wAAw==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@cspell/rpc/-/rpc-10.0.0.tgz", + "integrity": "sha512-QrpOZMwz2pAjvl6Hky2PauYoMpLCASn3osjn7uKUbgFV70sahyj6tmx4rRgRX7vHu2WQLZev+YsuO4EujiBDOg==", "license": "MIT", "engines": { - "node": ">=20.18" + "node": ">=22.18.0" } }, "node_modules/@cspell/strong-weak-map": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cspell/strong-weak-map/-/strong-weak-map-9.7.0.tgz", - "integrity": "sha512-5xbvDASjklrmy88O6gmGXgYhpByCXqOj5wIgyvwZe2l83T1bE+iOfGI4pGzZJ/mN+qTn1DNKq8BPBPtDgb7Q2Q==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@cspell/strong-weak-map/-/strong-weak-map-10.0.0.tgz", + "integrity": "sha512-JRsato0s2IjYdsng+AGL6oAqgZVQgih5aWKdmxs21H6EdhMaoFDmRE5kXm/RT5a6OMdtnzQM9DqeToqBChWIOQ==", "license": "MIT", "engines": { - "node": ">=20" + "node": ">=22.18.0" } }, "node_modules/@cspell/url": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cspell/url/-/url-9.7.0.tgz", - "integrity": "sha512-ZaaBr0pTvNxmyUbIn+nVPXPr383VqJzfUDMWicgTjJIeo2+T2hOq2kNpgpvTIrWtZrsZnSP8oXms1+sKTjcvkw==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@cspell/url/-/url-10.0.0.tgz", + "integrity": "sha512-q+0pHQ8DbqjemyaOn/mTtBRbCuKDqhnsVbZ6J9zkTsxPgMpccjy0s5oLXwomfrrxMRBH+UcbERwtUmE+SbnoIQ==", "license": "MIT", "engines": { - "node": ">=20" + "node": ">=22.18.0" + } + }, + "node_modules/@csstools/cascade-layer-name-parser": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@csstools/cascade-layer-name-parser/-/cascade-layer-name-parser-2.0.5.tgz", + "integrity": "sha512-p1ko5eHgV+MgXFVa4STPKpvPxr6ReS8oS2jzTukjR74i5zJNyWO1ZM1m8YKBXnzDKWfBN1ztLYlHxbVemDD88A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + } + }, + "node_modules/@csstools/color-helpers": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.1.0.tgz", + "integrity": "sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + } + }, + "node_modules/@csstools/css-calc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.4.tgz", + "integrity": "sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + } + }, + "node_modules/@csstools/css-color-parser": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.1.0.tgz", + "integrity": "sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "@csstools/color-helpers": "^5.1.0", + "@csstools/css-calc": "^2.1.4" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + } + }, + "node_modules/@csstools/css-parser-algorithms": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.5.tgz", + "integrity": "sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-tokenizer": "^3.0.4" + } + }, + "node_modules/@csstools/css-tokenizer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.4.tgz", + "integrity": "sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@csstools/media-query-list-parser": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-4.0.3.tgz", + "integrity": "sha512-HAYH7d3TLRHDOUQK4mZKf9k9Ph/m8Akstg66ywKR4SFAigjs3yBiUeZtFxywiTm5moZMAp/5W/ZuFnNXXYLuuQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + } + }, + "node_modules/@csstools/postcss-alpha-function": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-alpha-function/-/postcss-alpha-function-1.0.1.tgz", + "integrity": "sha512-isfLLwksH3yHkFXfCI2Gcaqg7wGGHZZwunoJzEZk0yKYIokgre6hYVFibKL3SYAoR1kBXova8LB+JoO5vZzi9w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-cascade-layers": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-5.0.2.tgz", + "integrity": "sha512-nWBE08nhO8uWl6kSAeCx4im7QfVko3zLrtgWZY4/bP87zrSPpSyN/3W3TDqz1jJuH+kbKOHXg5rJnK+ZVYcFFg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/selector-specificity": "^5.0.0", + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-cascade-layers/node_modules/@csstools/selector-specificity": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz", + "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss-selector-parser": "^7.0.0" + } + }, + "node_modules/@csstools/postcss-cascade-layers/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@csstools/postcss-color-function": { + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-4.0.12.tgz", + "integrity": "sha512-yx3cljQKRaSBc2hfh8rMZFZzChaFgwmO2JfFgFr1vMcF3C/uyy5I4RFIBOIWGq1D+XbKCG789CGkG6zzkLpagA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-color-function-display-p3-linear": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function-display-p3-linear/-/postcss-color-function-display-p3-linear-1.0.1.tgz", + "integrity": "sha512-E5qusdzhlmO1TztYzDIi8XPdPoYOjoTY6HBYBCYSj+Gn4gQRBlvjgPQXzfzuPQqt8EhkC/SzPKObg4Mbn8/xMg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-color-mix-function": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-mix-function/-/postcss-color-mix-function-3.0.12.tgz", + "integrity": "sha512-4STERZfCP5Jcs13P1U5pTvI9SkgLgfMUMhdXW8IlJWkzOOOqhZIjcNhWtNJZes2nkBDsIKJ0CJtFtuaZ00moag==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-color-mix-variadic-function-arguments": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-mix-variadic-function-arguments/-/postcss-color-mix-variadic-function-arguments-1.0.2.tgz", + "integrity": "sha512-rM67Gp9lRAkTo+X31DUqMEq+iK+EFqsidfecmhrteErxJZb6tUoJBVQca1Vn1GpDql1s1rD1pKcuYzMsg7Z1KQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-content-alt-text": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@csstools/postcss-content-alt-text/-/postcss-content-alt-text-2.0.8.tgz", + "integrity": "sha512-9SfEW9QCxEpTlNMnpSqFaHyzsiRpZ5J5+KqCu1u5/eEJAWsMhzT40qf0FIbeeglEvrGRMdDzAxMIz3wqoGSb+Q==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-contrast-color-function": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@csstools/postcss-contrast-color-function/-/postcss-contrast-color-function-2.0.12.tgz", + "integrity": "sha512-YbwWckjK3qwKjeYz/CijgcS7WDUCtKTd8ShLztm3/i5dhh4NaqzsbYnhm4bjrpFpnLZ31jVcbK8YL77z3GBPzA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-exponential-functions": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/@csstools/postcss-exponential-functions/-/postcss-exponential-functions-2.0.9.tgz", + "integrity": "sha512-abg2W/PI3HXwS/CZshSa79kNWNZHdJPMBXeZNyPQFbbj8sKO3jXxOt/wF7juJVjyDTc6JrvaUZYFcSBZBhaxjw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-calc": "^2.1.4", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-font-format-keywords": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-4.0.0.tgz", + "integrity": "sha512-usBzw9aCRDvchpok6C+4TXC57btc4bJtmKQWOHQxOVKen1ZfVqBUuCZ/wuqdX5GHsD0NRSr9XTP+5ID1ZZQBXw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/utilities": "^2.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-gamut-mapping": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@csstools/postcss-gamut-mapping/-/postcss-gamut-mapping-2.0.11.tgz", + "integrity": "sha512-fCpCUgZNE2piVJKC76zFsgVW1apF6dpYsqGyH8SIeCcM4pTEsRTWTLCaJIMKFEundsCKwY1rwfhtrio04RJ4Dw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-gradients-interpolation-method": { + "version": "5.0.12", + "resolved": "https://registry.npmjs.org/@csstools/postcss-gradients-interpolation-method/-/postcss-gradients-interpolation-method-5.0.12.tgz", + "integrity": "sha512-jugzjwkUY0wtNrZlFeyXzimUL3hN4xMvoPnIXxoZqxDvjZRiSh+itgHcVUWzJ2VwD/VAMEgCLvtaJHX+4Vj3Ow==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-hwb-function": { + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-4.0.12.tgz", + "integrity": "sha512-mL/+88Z53KrE4JdePYFJAQWFrcADEqsLprExCM04GDNgHIztwFzj0Mbhd/yxMBngq0NIlz58VVxjt5abNs1VhA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-ic-unit": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-4.0.4.tgz", + "integrity": "sha512-yQ4VmossuOAql65sCPppVO1yfb7hDscf4GseF0VCA/DTDaBc0Wtf8MTqVPfjGYlT5+2buokG0Gp7y0atYZpwjg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-initial": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-initial/-/postcss-initial-2.0.1.tgz", + "integrity": "sha512-L1wLVMSAZ4wovznquK0xmC7QSctzO4D0Is590bxpGqhqjboLXYA16dWZpfwImkdOgACdQ9PqXsuRroW6qPlEsg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-is-pseudo-class": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-5.0.3.tgz", + "integrity": "sha512-jS/TY4SpG4gszAtIg7Qnf3AS2pjcUM5SzxpApOrlndMeGhIbaTzWBzzP/IApXoNWEW7OhcjkRT48jnAUIFXhAQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/selector-specificity": "^5.0.0", + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-is-pseudo-class/node_modules/@csstools/selector-specificity": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz", + "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss-selector-parser": "^7.0.0" + } + }, + "node_modules/@csstools/postcss-is-pseudo-class/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@csstools/postcss-light-dark-function": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@csstools/postcss-light-dark-function/-/postcss-light-dark-function-2.0.11.tgz", + "integrity": "sha512-fNJcKXJdPM3Lyrbmgw2OBbaioU7yuKZtiXClf4sGdQttitijYlZMD5K7HrC/eF83VRWRrYq6OZ0Lx92leV2LFA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-logical-float-and-clear": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-float-and-clear/-/postcss-logical-float-and-clear-3.0.0.tgz", + "integrity": "sha512-SEmaHMszwakI2rqKRJgE+8rpotFfne1ZS6bZqBoQIicFyV+xT1UF42eORPxJkVJVrH9C0ctUgwMSn3BLOIZldQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-logical-overflow": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-overflow/-/postcss-logical-overflow-2.0.0.tgz", + "integrity": "sha512-spzR1MInxPuXKEX2csMamshR4LRaSZ3UXVaRGjeQxl70ySxOhMpP2252RAFsg8QyyBXBzuVOOdx1+bVO5bPIzA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-logical-overscroll-behavior": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-overscroll-behavior/-/postcss-logical-overscroll-behavior-2.0.0.tgz", + "integrity": "sha512-e/webMjoGOSYfqLunyzByZj5KKe5oyVg/YSbie99VEaSDE2kimFm0q1f6t/6Jo+VVCQ/jbe2Xy+uX+C4xzWs4w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-logical-resize": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-resize/-/postcss-logical-resize-3.0.0.tgz", + "integrity": "sha512-DFbHQOFW/+I+MY4Ycd/QN6Dg4Hcbb50elIJCfnwkRTCX05G11SwViI5BbBlg9iHRl4ytB7pmY5ieAFk3ws7yyg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-logical-viewport-units": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-viewport-units/-/postcss-logical-viewport-units-3.0.4.tgz", + "integrity": "sha512-q+eHV1haXA4w9xBwZLKjVKAWn3W2CMqmpNpZUk5kRprvSiBEGMgrNH3/sJZ8UA3JgyHaOt3jwT9uFa4wLX4EqQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-media-minmax": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/@csstools/postcss-media-minmax/-/postcss-media-minmax-2.0.9.tgz", + "integrity": "sha512-af9Qw3uS3JhYLnCbqtZ9crTvvkR+0Se+bBqSr7ykAnl9yKhk6895z9rf+2F4dClIDJWxgn0iZZ1PSdkhrbs2ig==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "@csstools/css-calc": "^2.1.4", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/media-query-list-parser": "^4.0.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-media-queries-aspect-ratio-number-values": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@csstools/postcss-media-queries-aspect-ratio-number-values/-/postcss-media-queries-aspect-ratio-number-values-3.0.5.tgz", + "integrity": "sha512-zhAe31xaaXOY2Px8IYfoVTB3wglbJUVigGphFLj6exb7cjZRH9A6adyE22XfFK3P2PzwRk0VDeTJmaxpluyrDg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/media-query-list-parser": "^4.0.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-nested-calc": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-nested-calc/-/postcss-nested-calc-4.0.0.tgz", + "integrity": "sha512-jMYDdqrQQxE7k9+KjstC3NbsmC063n1FTPLCgCRS2/qHUbHM0mNy9pIn4QIiQGs9I/Bg98vMqw7mJXBxa0N88A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/utilities": "^2.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-normalize-display-values": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.1.tgz", + "integrity": "sha512-TQUGBuRvxdc7TgNSTevYqrL8oItxiwPDixk20qCB5me/W8uF7BPbhRrAvFuhEoywQp/woRsUZ6SJ+sU5idZAIA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-oklab-function": { + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-4.0.12.tgz", + "integrity": "sha512-HhlSmnE1NKBhXsTnNGjxvhryKtO7tJd1w42DKOGFD6jSHtYOrsJTQDKPMwvOfrzUAk8t7GcpIfRyM7ssqHpFjg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-position-area-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-position-area-property/-/postcss-position-area-property-1.0.0.tgz", + "integrity": "sha512-fUP6KR8qV2NuUZV3Cw8itx0Ep90aRjAZxAEzC3vrl6yjFv+pFsQbR18UuQctEKmA72K9O27CoYiKEgXxkqjg8Q==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-progressive-custom-properties": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-4.2.1.tgz", + "integrity": "sha512-uPiiXf7IEKtUQXsxu6uWtOlRMXd2QWWy5fhxHDnPdXKCQckPP3E34ZgDoZ62r2iT+UOgWsSbM4NvHE5m3mAEdw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-property-rule-prelude-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-property-rule-prelude-list/-/postcss-property-rule-prelude-list-1.0.0.tgz", + "integrity": "sha512-IxuQjUXq19fobgmSSvUDO7fVwijDJaZMvWQugxfEUxmjBeDCVaDuMpsZ31MsTm5xbnhA+ElDi0+rQ7sQQGisFA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-random-function": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-random-function/-/postcss-random-function-2.0.1.tgz", + "integrity": "sha512-q+FQaNiRBhnoSNo+GzqGOIBKoHQ43lYz0ICrV+UudfWnEF6ksS6DsBIJSISKQT2Bvu3g4k6r7t0zYrk5pDlo8w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-calc": "^2.1.4", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-relative-color-syntax": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/@csstools/postcss-relative-color-syntax/-/postcss-relative-color-syntax-3.0.12.tgz", + "integrity": "sha512-0RLIeONxu/mtxRtf3o41Lq2ghLimw0w9ByLWnnEVuy89exmEEq8bynveBxNW3nyHqLAFEeNtVEmC1QK9MZ8Huw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-scope-pseudo-class": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-scope-pseudo-class/-/postcss-scope-pseudo-class-4.0.1.tgz", + "integrity": "sha512-IMi9FwtH6LMNuLea1bjVMQAsUhFxJnyLSgOp/cpv5hrzWmrUYU5fm0EguNDIIOHUqzXode8F/1qkC/tEo/qN8Q==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-scope-pseudo-class/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@csstools/postcss-sign-functions": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@csstools/postcss-sign-functions/-/postcss-sign-functions-1.1.4.tgz", + "integrity": "sha512-P97h1XqRPcfcJndFdG95Gv/6ZzxUBBISem0IDqPZ7WMvc/wlO+yU0c5D/OCpZ5TJoTt63Ok3knGk64N+o6L2Pg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-calc": "^2.1.4", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-stepped-value-functions": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-4.0.9.tgz", + "integrity": "sha512-h9btycWrsex4dNLeQfyU3y3w40LMQooJWFMm/SK9lrKguHDcFl4VMkncKKoXi2z5rM9YGWbUQABI8BT2UydIcA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-calc": "^2.1.4", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-syntax-descriptor-syntax-production": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-syntax-descriptor-syntax-production/-/postcss-syntax-descriptor-syntax-production-1.0.1.tgz", + "integrity": "sha512-GneqQWefjM//f4hJ/Kbox0C6f2T7+pi4/fqTqOFGTL3EjnvOReTqO1qUQ30CaUjkwjYq9qZ41hzarrAxCc4gow==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-tokenizer": "^3.0.4" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-system-ui-font-family": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-system-ui-font-family/-/postcss-system-ui-font-family-1.0.0.tgz", + "integrity": "sha512-s3xdBvfWYfoPSBsikDXbuorcMG1nN1M6GdU0qBsGfcmNR0A/qhloQZpTxjA3Xsyrk1VJvwb2pOfiOT3at/DuIQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-text-decoration-shorthand": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-4.0.3.tgz", + "integrity": "sha512-KSkGgZfx0kQjRIYnpsD7X2Om9BUXX/Kii77VBifQW9Ih929hK0KNjVngHDH0bFB9GmfWcR9vJYJJRvw/NQjkrA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/color-helpers": "^5.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-trigonometric-functions": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-4.0.9.tgz", + "integrity": "sha512-Hnh5zJUdpNrJqK9v1/E3BbrQhaDTj5YiX7P61TOvUhoDHnUmsNNxcDAgkQ32RrcWx9GVUvfUNPcUkn8R3vIX6A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-calc": "^2.1.4", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-unset-value": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-4.0.0.tgz", + "integrity": "sha512-cBz3tOCI5Fw6NIFEwU3RiwK6mn3nKegjpJuzCndoGq3BZPkUjnsq7uQmIeMNeMbMk7YD2MfKcgCpZwX5jyXqCA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/utilities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@csstools/utilities/-/utilities-2.0.0.tgz", + "integrity": "sha512-5VdOr0Z71u+Yp3ozOx8T11N703wIFGVRgOWbOZMKgglPJsWA54MRIoMNVMa7shUToIhx5J8vX4sOZgD2XiihiQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@docsearch/core": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/@docsearch/core/-/core-4.6.3.tgz", + "integrity": "sha512-rUOujwIpxJRgD7+kicVsI3D5sqBvdiRTquzWBpTEXZs8ZXfGbfzpus5HqumaNYTppN2HvH8E2yNuRwYdHJeOlA==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@types/react": ">= 16.8.0 < 20.0.0", + "react": ">= 16.8.0 < 20.0.0", + "react-dom": ">= 16.8.0 < 20.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, + "node_modules/@docsearch/css": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-4.6.3.tgz", + "integrity": "sha512-nlOwcXcsNAptQl4vlL4MA78qNJKO0Qlds5GuBjCoePgkebTXLSf8Qt1oyZ3YBshYupKXG9VRGEsk1zr23d+bzQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@docsearch/react": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-4.6.3.tgz", + "integrity": "sha512-Bg2wdDsoQVlNCcEKuEJAU04tvHCqgx8rIu+uIoM4pRtcx3TBKJuXutJik3LTA8LRc9YEyHkrYUrmcC0D7BYf+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/autocomplete-core": "1.19.2", + "@docsearch/core": "4.6.3", + "@docsearch/css": "4.6.3" + }, + "peerDependencies": { + "@types/react": ">= 16.8.0 < 20.0.0", + "react": ">= 16.8.0 < 20.0.0", + "react-dom": ">= 16.8.0 < 20.0.0", + "search-insights": ">= 1 < 3" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + }, + "search-insights": { + "optional": true + } + } + }, + "node_modules/@docsearch/react/node_modules/@algolia/autocomplete-core": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.19.2.tgz", + "integrity": "sha512-mKv7RyuAzXvwmq+0XRK8HqZXt9iZ5Kkm2huLjgn5JoCPtDy+oh9yxUMfDDaVCw0oyzZ1isdJBc7l9nuCyyR7Nw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/autocomplete-plugin-algolia-insights": "1.19.2", + "@algolia/autocomplete-shared": "1.19.2" + } + }, + "node_modules/@docsearch/react/node_modules/@algolia/autocomplete-plugin-algolia-insights": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.19.2.tgz", + "integrity": "sha512-TjxbcC/r4vwmnZaPwrHtkXNeqvlpdyR+oR9Wi2XyfORkiGkLTVhX2j+O9SaCCINbKoDfc+c2PB8NjfOnz7+oKg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/autocomplete-shared": "1.19.2" + }, + "peerDependencies": { + "search-insights": ">= 1 < 3" + } + }, + "node_modules/@docsearch/react/node_modules/@algolia/autocomplete-shared": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.19.2.tgz", + "integrity": "sha512-jEazxZTVD2nLrC+wYlVHQgpBoBB5KPStrJxLzsIFl6Kqd1AlG9sIAGl39V5tECLpIQzB3Qa2T6ZPJ1ChkwMK/w==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@algolia/client-search": ">= 4.9.1 < 6", + "algoliasearch": ">= 4.9.1 < 6" + } + }, + "node_modules/@docusaurus/babel": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@docusaurus/babel/-/babel-3.10.1.tgz", + "integrity": "sha512-DZzFO1K3v/GoEt1fx1DiYHF4en+PuhtQf1AkQJa5zu3CoeKSpr5cpQRUlz3jr0m44wyzmSXu9bVpfir+N4+8bg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.25.9", + "@babel/generator": "^7.25.9", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-transform-runtime": "^7.25.9", + "@babel/preset-env": "^7.25.9", + "@babel/preset-react": "^7.25.9", + "@babel/preset-typescript": "^7.25.9", + "@babel/runtime": "^7.25.9", + "@babel/traverse": "^7.25.9", + "@docusaurus/logger": "3.10.1", + "@docusaurus/utils": "3.10.1", + "babel-plugin-dynamic-import-node": "^2.3.3", + "fs-extra": "^11.1.1", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=20.0" + } + }, + "node_modules/@docusaurus/bundler": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@docusaurus/bundler/-/bundler-3.10.1.tgz", + "integrity": "sha512-HIqQPvbqnnQRe4NsBd1774KRarjXqS6wHsWELtyuSs1gCfvixJO2jUGH/OEBtr1Gvzpw+ze5CjGMvSJ8UE1KUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.25.9", + "@docusaurus/babel": "3.10.1", + "@docusaurus/cssnano-preset": "3.10.1", + "@docusaurus/logger": "3.10.1", + "@docusaurus/types": "3.10.1", + "@docusaurus/utils": "3.10.1", + "babel-loader": "^9.2.1", + "clean-css": "^5.3.3", + "copy-webpack-plugin": "^11.0.0", + "css-loader": "^6.11.0", + "css-minimizer-webpack-plugin": "^5.0.1", + "cssnano": "^6.1.2", + "file-loader": "^6.2.0", + "html-minifier-terser": "^7.2.0", + "mini-css-extract-plugin": "^2.9.2", + "null-loader": "^4.0.1", + "postcss": "^8.5.4", + "postcss-loader": "^7.3.4", + "postcss-preset-env": "^10.2.1", + "terser-webpack-plugin": "^5.3.9", + "tslib": "^2.6.0", + "url-loader": "^4.1.1", + "webpack": "^5.95.0", + "webpackbar": "^7.0.0" + }, + "engines": { + "node": ">=20.0" + }, + "peerDependencies": { + "@docusaurus/faster": "*" + }, + "peerDependenciesMeta": { + "@docusaurus/faster": { + "optional": true + } + } + }, + "node_modules/@docusaurus/core": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@docusaurus/core/-/core-3.10.1.tgz", + "integrity": "sha512-3pf2fXXw0eVk8WnC3T4LIigRDupcpvngpKo9Vy7mYyBhuddc0klDUuZAIfzMoK6z05pdlk6EFC/vBSX43+1O5w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@docusaurus/babel": "3.10.1", + "@docusaurus/bundler": "3.10.1", + "@docusaurus/logger": "3.10.1", + "@docusaurus/mdx-loader": "3.10.1", + "@docusaurus/utils": "3.10.1", + "@docusaurus/utils-common": "3.10.1", + "@docusaurus/utils-validation": "3.10.1", + "boxen": "^6.2.1", + "chalk": "^4.1.2", + "chokidar": "^3.5.3", + "cli-table3": "^0.6.3", + "combine-promises": "^1.1.0", + "commander": "^5.1.0", + "core-js": "^3.31.1", + "detect-port": "^1.5.1", + "escape-html": "^1.0.3", + "eta": "^2.2.0", + "eval": "^0.1.8", + "execa": "^5.1.1", + "fs-extra": "^11.1.1", + "html-tags": "^3.3.1", + "html-webpack-plugin": "^5.6.0", + "leven": "^3.1.0", + "lodash": "^4.17.21", + "open": "^8.4.0", + "p-map": "^4.0.0", + "prompts": "^2.4.2", + "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0", + "react-loadable": "npm:@docusaurus/react-loadable@6.0.0", + "react-loadable-ssr-addon-v5-slorber": "^1.0.3", + "react-router": "^5.3.4", + "react-router-config": "^5.1.1", + "react-router-dom": "^5.3.4", + "semver": "^7.5.4", + "serve-handler": "^6.1.7", + "tinypool": "^1.0.2", + "tslib": "^2.6.0", + "update-notifier": "^6.0.2", + "webpack": "^5.95.0", + "webpack-bundle-analyzer": "^4.10.2", + "webpack-dev-server": "^5.2.2", + "webpack-merge": "^6.0.1" + }, + "bin": { + "docusaurus": "bin/docusaurus.mjs" + }, + "engines": { + "node": ">=20.0" + }, + "peerDependencies": { + "@docusaurus/faster": "*", + "@mdx-js/react": "^3.0.0", + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@docusaurus/faster": { + "optional": true + } + } + }, + "node_modules/@docusaurus/core/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@docusaurus/core/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@docusaurus/core/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@docusaurus/core/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@docusaurus/core/node_modules/commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/@docusaurus/cssnano-preset": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@docusaurus/cssnano-preset/-/cssnano-preset-3.10.1.tgz", + "integrity": "sha512-eNfHGcTKCSq6xmcavAkX3RRclHaE2xRCMParlDXLdXVP01/a2e/jKXMj/0ULnLFQSNwwuI62L0Ge8J+nZsR7UQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssnano-preset-advanced": "^6.1.2", + "postcss": "^8.5.4", + "postcss-sort-media-queries": "^5.2.0", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=20.0" + } + }, + "node_modules/@docusaurus/logger": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@docusaurus/logger/-/logger-3.10.1.tgz", + "integrity": "sha512-oPjNFnfJsRCkePVjkGrxWGq4MvJKRQT0r9jOP0eRBTZ7Wr9FAbzdP/Gjs0I2Ss6YRkPoEgygKG112OkE6skvJw==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.2", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=20.0" + } + }, + "node_modules/@docusaurus/logger/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@docusaurus/logger/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@docusaurus/logger/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@docusaurus/logger/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@docusaurus/mdx-loader": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@docusaurus/mdx-loader/-/mdx-loader-3.10.1.tgz", + "integrity": "sha512-GRmeb/wQ+iXRrFwcHBfgQhrJxGElgCsoTWZYDhccjsZVne1p8MK/EpQVIloXttz76TCe78kKD5AEG9n1xc1oxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@docusaurus/logger": "3.10.1", + "@docusaurus/utils": "3.10.1", + "@docusaurus/utils-validation": "3.10.1", + "@mdx-js/mdx": "^3.0.0", + "@slorber/remark-comment": "^1.0.0", + "escape-html": "^1.0.3", + "estree-util-value-to-estree": "^3.0.1", + "file-loader": "^6.2.0", + "fs-extra": "^11.1.1", + "image-size": "^2.0.2", + "mdast-util-mdx": "^3.0.0", + "mdast-util-to-string": "^4.0.0", + "rehype-raw": "^7.0.0", + "remark-directive": "^3.0.0", + "remark-emoji": "^4.0.0", + "remark-frontmatter": "^5.0.0", + "remark-gfm": "^4.0.0", + "stringify-object": "^3.3.0", + "tslib": "^2.6.0", + "unified": "^11.0.3", + "unist-util-visit": "^5.0.0", + "url-loader": "^4.1.1", + "vfile": "^6.0.1", + "webpack": "^5.88.1" + }, + "engines": { + "node": ">=20.0" + }, + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/@docusaurus/module-type-aliases": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@docusaurus/module-type-aliases/-/module-type-aliases-3.10.1.tgz", + "integrity": "sha512-YoOZKUdGlp8xSYhuAkGdSo5Ydkbq4V4eK3sD8v0a2hloxCWdQbNBhkc+Ko9QyjpESc0BYcIGM5iHVAy5hdFV6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@docusaurus/types": "3.10.1", + "@types/history": "^4.7.11", + "@types/react": "*", + "@types/react-router-config": "*", + "@types/react-router-dom": "*", + "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0", + "react-loadable": "npm:@docusaurus/react-loadable@6.0.0" + }, + "peerDependencies": { + "react": "*", + "react-dom": "*" + } + }, + "node_modules/@docusaurus/plugin-content-docs": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.10.1.tgz", + "integrity": "sha512-2jRVrtzjf8LClGTHQlwlwuD3wQXRx3WEoF7XUarJ8Ou+0onV+SLtejsyfY9JLpfUh9hPhXM4pbBGkyAY4Bi3HQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.10.1", + "@docusaurus/logger": "3.10.1", + "@docusaurus/mdx-loader": "3.10.1", + "@docusaurus/module-type-aliases": "3.10.1", + "@docusaurus/theme-common": "3.10.1", + "@docusaurus/types": "3.10.1", + "@docusaurus/utils": "3.10.1", + "@docusaurus/utils-common": "3.10.1", + "@docusaurus/utils-validation": "3.10.1", + "@types/react-router-config": "^5.0.7", + "combine-promises": "^1.1.0", + "fs-extra": "^11.1.1", + "js-yaml": "^4.1.0", + "lodash": "^4.17.21", + "schema-dts": "^1.1.2", + "tslib": "^2.6.0", + "utility-types": "^3.10.0", + "webpack": "^5.88.1" + }, + "engines": { + "node": ">=20.0" + }, + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/@docusaurus/theme-common": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-common/-/theme-common-3.10.1.tgz", + "integrity": "sha512-0YtmIeoNo1fIw65LO8+/1dPgmDV86UmhMkow37gzjytuiCSQm9xob6PJy0L4kuQEMTLfUOGvkXvZr7GPrHquMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@docusaurus/mdx-loader": "3.10.1", + "@docusaurus/module-type-aliases": "3.10.1", + "@docusaurus/utils": "3.10.1", + "@docusaurus/utils-common": "3.10.1", + "@types/history": "^4.7.11", + "@types/react": "*", + "@types/react-router-config": "*", + "clsx": "^2.0.0", + "parse-numeric-range": "^1.3.0", + "prism-react-renderer": "^2.3.0", + "tslib": "^2.6.0", + "utility-types": "^3.10.0" + }, + "engines": { + "node": ">=20.0" + }, + "peerDependencies": { + "@docusaurus/plugin-content-docs": "*", + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/@docusaurus/theme-search-algolia": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-search-algolia/-/theme-search-algolia-3.10.1.tgz", + "integrity": "sha512-OTaARARVZj2GvkJQjB+1jOIxntRaXea+G+fMsNqrZBAU1O1vJKDW22R7kECOHW27oJCLFN9HKaZeRrfAUyviug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/autocomplete-core": "^1.19.2", + "@docsearch/react": "^3.9.0 || ^4.3.2", + "@docusaurus/core": "3.10.1", + "@docusaurus/logger": "3.10.1", + "@docusaurus/plugin-content-docs": "3.10.1", + "@docusaurus/theme-common": "3.10.1", + "@docusaurus/theme-translations": "3.10.1", + "@docusaurus/utils": "3.10.1", + "@docusaurus/utils-validation": "3.10.1", + "algoliasearch": "^5.37.0", + "algoliasearch-helper": "^3.26.0", + "clsx": "^2.0.0", + "eta": "^2.2.0", + "fs-extra": "^11.1.1", + "lodash": "^4.17.21", + "tslib": "^2.6.0", + "utility-types": "^3.10.0" + }, + "engines": { + "node": ">=20.0" + }, + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/@docusaurus/theme-translations": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-translations/-/theme-translations-3.10.1.tgz", + "integrity": "sha512-cLMyaKivjBVWKMJuWqyFVVgtqe8DPJNPkog0bn8W1MDVAKcPdxRFycBfC1We1RaNp7Rdk513bmtW78RR6OBxBw==", + "dev": true, + "license": "MIT", + "dependencies": { + "fs-extra": "^11.1.1", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=20.0" + } + }, + "node_modules/@docusaurus/types": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.10.1.tgz", + "integrity": "sha512-XYMK8k1szDCFMw2V+Xyen0g7Kee1sP3dtFnl7vkGkZOkeAJ/oPDQPL8iz4HBKOo/cwU8QeV6onVjMqtP+tFzsw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@mdx-js/mdx": "^3.0.0", + "@types/history": "^4.7.11", + "@types/mdast": "^4.0.2", + "@types/react": "*", + "commander": "^5.1.0", + "joi": "^17.9.2", + "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0", + "utility-types": "^3.10.0", + "webpack": "^5.95.0", + "webpack-merge": "^5.9.0" + }, + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/@docusaurus/types/node_modules/commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/@docusaurus/types/node_modules/webpack-merge": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", + "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "clone-deep": "^4.0.1", + "flat": "^5.0.2", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@docusaurus/utils": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@docusaurus/utils/-/utils-3.10.1.tgz", + "integrity": "sha512-3ojeJry9xBYdJO6qoyyzqeJFSJBVx2mXhyDzSdjwL2+URFQMf+h25gG38iswGImicK0ELjTd1EL2xzk8hf3QPw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@docusaurus/logger": "3.10.1", + "@docusaurus/types": "3.10.1", + "@docusaurus/utils-common": "3.10.1", + "escape-string-regexp": "^4.0.0", + "execa": "^5.1.1", + "file-loader": "^6.2.0", + "fs-extra": "^11.1.1", + "github-slugger": "^1.5.0", + "globby": "^11.1.0", + "gray-matter": "^4.0.3", + "jiti": "^1.20.0", + "js-yaml": "^4.1.0", + "lodash": "^4.17.21", + "micromatch": "^4.0.5", + "p-queue": "^6.6.2", + "prompts": "^2.4.2", + "resolve-pathname": "^3.0.0", + "tslib": "^2.6.0", + "url-loader": "^4.1.1", + "utility-types": "^3.10.0", + "webpack": "^5.88.1" + }, + "engines": { + "node": ">=20.0" + } + }, + "node_modules/@docusaurus/utils-common": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@docusaurus/utils-common/-/utils-common-3.10.1.tgz", + "integrity": "sha512-5mFSgEADtnFxFH7RLw02QA5MpU5JVUCj0MPeIvi/aF4Fi45tQRIuTwXoXDqJ+1VfQJuYJGz3SI63wmGz4HvXzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@docusaurus/types": "3.10.1", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=20.0" + } + }, + "node_modules/@docusaurus/utils-validation": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@docusaurus/utils-validation/-/utils-validation-3.10.1.tgz", + "integrity": "sha512-cRv1X69jwaWv47waglllgZVWzeBFLhl53XT/XED/83BerVBTC5FTP8WTcVl8Z6sZOegDSwitu/wpCSPCDOT6lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@docusaurus/logger": "3.10.1", + "@docusaurus/utils": "3.10.1", + "@docusaurus/utils-common": "3.10.1", + "fs-extra": "^11.2.0", + "joi": "^17.9.2", + "js-yaml": "^4.1.0", + "lodash": "^4.17.21", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=20.0" } }, "node_modules/@dozerg/condition": { @@ -893,6 +4751,18 @@ "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/@eslint-community/regexpp": { "version": "4.12.2", "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", @@ -903,47 +4773,19 @@ } }, "node_modules/@eslint/config-array": { - "version": "0.21.1", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.1.tgz", - "integrity": "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==", + "version": "0.21.2", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.2.tgz", + "integrity": "sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw==", "license": "Apache-2.0", "dependencies": { "@eslint/object-schema": "^2.1.7", "debug": "^4.3.1", - "minimatch": "^3.1.2" + "minimatch": "^3.1.5" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@eslint/config-array/node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "license": "MIT" - }, - "node_modules/@eslint/config-array/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/@eslint/config-array/node_modules/minimatch": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.4.tgz", - "integrity": "sha512-twmL+S8+7yIsE9wsqgzU3E8/LumN3M3QELrBZ20OdmQ9jB2JvW5oZtBEmft84k/Gs5CG9mqtWc6Y9vW+JEzGxw==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/@eslint/config-helpers": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz", @@ -969,9 +4811,9 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.4.tgz", - "integrity": "sha512-4h4MVF8pmBsncB60r0wSJiIeUKTSD4m7FmTFThG8RHlsg9ajqckLm9OraguFGZE4vVdpiI1Q4+hFnisopmG6gQ==", + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.5.tgz", + "integrity": "sha512-4IlJx0X0qftVsN5E+/vGujTRIFtwuLbNsVUe7TO6zYPDR1O6nFwvwhIKEKSrl6dZchmYBITazxKoUYOjdtjlRg==", "license": "MIT", "dependencies": { "ajv": "^6.14.0", @@ -981,7 +4823,7 @@ "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.1", - "minimatch": "^3.1.3", + "minimatch": "^3.1.5", "strip-json-comments": "^3.1.1" }, "engines": { @@ -991,47 +4833,10 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/@eslint/eslintrc/node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "license": "MIT" - }, - "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/@eslint/eslintrc/node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/@eslint/eslintrc/node_modules/minimatch": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.4.tgz", - "integrity": "sha512-twmL+S8+7yIsE9wsqgzU3E8/LumN3M3QELrBZ20OdmQ9jB2JvW5oZtBEmft84k/Gs5CG9mqtWc6Y9vW+JEzGxw==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/@eslint/js": { - "version": "9.39.3", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.3.tgz", - "integrity": "sha512-1B1VkCq6FuUNlQvlBYb+1jDu/gV297TIs/OeiaSR9l1H27SVW55ONE1e1Vp16NqP683+xEGzxYtv4XCiDPaQiw==", + "version": "9.39.4", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.4.tgz", + "integrity": "sha512-nE7DEIchvtiFTwBw4Lfbu59PG+kCofhjsKaCWzxTpt4lfRjRMqG6uMBzKXuEcyXhOHoUp9riAm7/aWYGhXZ9cw==", "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -1062,6 +4867,10 @@ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, + "node_modules/@goauthentik/docusaurus-config": { + "resolved": "packages/docusaurus-config", + "link": true + }, "node_modules/@goauthentik/eslint-config": { "resolved": "packages/eslint-config", "link": true @@ -1078,6 +4887,23 @@ "resolved": "packages/tsconfig", "link": true }, + "node_modules/@hapi/hoek": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@hapi/topo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", + "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, "node_modules/@humanfs/core": { "version": "0.19.1", "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", @@ -1115,34 +4941,6 @@ "node": ">=10.10.0" } }, - "node_modules/@humanwhocodes/config-array/node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "license": "MIT" - }, - "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.4.tgz", - "integrity": "sha512-twmL+S8+7yIsE9wsqgzU3E8/LumN3M3QELrBZ20OdmQ9jB2JvW5oZtBEmft84k/Gs5CG9mqtWc6Y9vW+JEzGxw==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", @@ -1176,6 +4974,90 @@ "url": "https://github.com/sponsors/nzakas" } }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/types/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/types/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/types/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/types/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.13", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", @@ -1205,6 +5087,17 @@ "node": ">=6.0.0" } }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", + "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, "node_modules/@jridgewell/sourcemap-codec": { "version": "1.5.5", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", @@ -1221,6 +5114,523 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/@jsonjoy.com/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/buffers": { + "version": "17.67.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/buffers/-/buffers-17.67.0.tgz", + "integrity": "sha512-tfExRpYxBvi32vPs9ZHaTjSP4fHAfzSmcahOfNxtvGHcyJel+aibkPlGeBB+7AoC6hL7lXIE++8okecBxx7lcw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/codegen": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/codegen/-/codegen-1.0.0.tgz", + "integrity": "sha512-E8Oy+08cmCf0EK/NMxpaJZmOxPqM+6iSe2S4nlSBrPZOORoDJILxtbSUEDKQyTamm/BVAhIGllOBNU79/dwf0g==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-core": { + "version": "4.57.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-core/-/fs-core-4.57.2.tgz", + "integrity": "sha512-SVjwklkpIV5wrynpYtuYnfYH1QF4/nDuLBX7VXdb+3miglcAgBVZb/5y0cOsehRV/9Vb+3UqhkMq3/NR3ztdkQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/fs-node-builtins": "4.57.2", + "@jsonjoy.com/fs-node-utils": "4.57.2", + "thingies": "^2.5.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-fsa": { + "version": "4.57.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-fsa/-/fs-fsa-4.57.2.tgz", + "integrity": "sha512-fhO8+iR2I+OCw668ISDJdn1aArc9zx033sWejIyzQ8RBeXa9bDSaUeA3ix0poYOfrj1KdOzytmYNv2/uLDfV6g==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/fs-core": "4.57.2", + "@jsonjoy.com/fs-node-builtins": "4.57.2", + "@jsonjoy.com/fs-node-utils": "4.57.2", + "thingies": "^2.5.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-node": { + "version": "4.57.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node/-/fs-node-4.57.2.tgz", + "integrity": "sha512-nX2AdL6cOFwLdju9G4/nbRnYevmCJbh7N7hvR3gGm97Cs60uEjyd0rpR+YBS7cTg175zzl22pGKXR5USaQMvKg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/fs-core": "4.57.2", + "@jsonjoy.com/fs-node-builtins": "4.57.2", + "@jsonjoy.com/fs-node-utils": "4.57.2", + "@jsonjoy.com/fs-print": "4.57.2", + "@jsonjoy.com/fs-snapshot": "4.57.2", + "glob-to-regex.js": "^1.0.0", + "thingies": "^2.5.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-node-builtins": { + "version": "4.57.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-builtins/-/fs-node-builtins-4.57.2.tgz", + "integrity": "sha512-xhiegylRmhw43Ki2HO1ZBL7DQ5ja/qpRsL29VtQ2xuUHiuDGbgf2uD4p9Qd8hJI5P6RCtGYD50IXHXVq/Ocjcg==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-node-to-fsa": { + "version": "4.57.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-to-fsa/-/fs-node-to-fsa-4.57.2.tgz", + "integrity": "sha512-18LmWTSONhoAPW+IWRuf8w/+zRolPFGPeGwMxlAhhfY11EKzX+5XHDBPAw67dBF5dxDErHJbl40U+3IXSDRXSQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/fs-fsa": "4.57.2", + "@jsonjoy.com/fs-node-builtins": "4.57.2", + "@jsonjoy.com/fs-node-utils": "4.57.2" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-node-utils": { + "version": "4.57.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-utils/-/fs-node-utils-4.57.2.tgz", + "integrity": "sha512-rsPSJgekz43IlNbLyAM/Ab+ouYLWGp5DDBfYBNNEqDaSpsbXfthBn29Q4muFA9L0F+Z3mKo+CWlgSCXrf+mOyQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/fs-node-builtins": "4.57.2" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-print": { + "version": "4.57.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-print/-/fs-print-4.57.2.tgz", + "integrity": "sha512-wK9NSow48i4DbDl9F1CQE5TqnyZOJ04elU3WFG5aJ76p+YxO/ulyBBQvKsessPxdo381Bc2pcEoyPujMOhcRqQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/fs-node-utils": "4.57.2", + "tree-dump": "^1.1.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-snapshot": { + "version": "4.57.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-snapshot/-/fs-snapshot-4.57.2.tgz", + "integrity": "sha512-GdduDZuoP5V/QCgJkx9+BZ6SC0EZ/smXAdTS7PfMqgMTGXLlt/bH/FqMYaqB9JmLf05sJPtO0XRbAwwkEEPbVw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/buffers": "^17.65.0", + "@jsonjoy.com/fs-node-utils": "4.57.2", + "@jsonjoy.com/json-pack": "^17.65.0", + "@jsonjoy.com/util": "^17.65.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/base64": { + "version": "17.67.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-17.67.0.tgz", + "integrity": "sha512-5SEsJGsm15aP8TQGkDfJvz9axgPwAEm98S5DxOuYe8e1EbfajcDmgeXXzccEjh+mLnjqEKrkBdjHWS5vFNwDdw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/codegen": { + "version": "17.67.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/codegen/-/codegen-17.67.0.tgz", + "integrity": "sha512-idnkUplROpdBOV0HMcwhsCUS5TRUi9poagdGs70A6S4ux9+/aPuKbh8+UYRTLYQHtXvAdNfQWXDqZEx5k4Dj2Q==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/json-pack": { + "version": "17.67.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-17.67.0.tgz", + "integrity": "sha512-t0ejURcGaZsn1ClbJ/3kFqSOjlryd92eQY465IYrezsXmPcfHPE/av4twRSxf6WE+TkZgLY+71vCZbiIiFKA/w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/base64": "17.67.0", + "@jsonjoy.com/buffers": "17.67.0", + "@jsonjoy.com/codegen": "17.67.0", + "@jsonjoy.com/json-pointer": "17.67.0", + "@jsonjoy.com/util": "17.67.0", + "hyperdyperid": "^1.2.0", + "thingies": "^2.5.0", + "tree-dump": "^1.1.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/json-pointer": { + "version": "17.67.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pointer/-/json-pointer-17.67.0.tgz", + "integrity": "sha512-+iqOFInH+QZGmSuaybBUNdh7yvNrXvqR+h3wjXm0N/3JK1EyyFAeGJvqnmQL61d1ARLlk/wJdFKSL+LHJ1eaUA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/util": "17.67.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/util": { + "version": "17.67.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-17.67.0.tgz", + "integrity": "sha512-6+8xBaz1rLSohlGh68D1pdw3AwDi9xydm8QNlAFkvnavCJYSze+pxoW2VKP8p308jtlMRLs5NTHfPlZLd4w7ew==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/buffers": "17.67.0", + "@jsonjoy.com/codegen": "17.67.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/json-pack": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.21.0.tgz", + "integrity": "sha512-+AKG+R2cfZMShzrF2uQw34v3zbeDYUqnQ+jg7ORic3BGtfw9p/+N6RJbq/kkV8JmYZaINknaEQ2m0/f693ZPpg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/base64": "^1.1.2", + "@jsonjoy.com/buffers": "^1.2.0", + "@jsonjoy.com/codegen": "^1.0.0", + "@jsonjoy.com/json-pointer": "^1.0.2", + "@jsonjoy.com/util": "^1.9.0", + "hyperdyperid": "^1.2.0", + "thingies": "^2.5.0", + "tree-dump": "^1.1.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/json-pack/node_modules/@jsonjoy.com/buffers": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/buffers/-/buffers-1.2.1.tgz", + "integrity": "sha512-12cdlDwX4RUM3QxmUbVJWqZ/mrK6dFQH4Zxq6+r1YXKXYBNgZXndx2qbCJwh3+WWkCSn67IjnlG3XYTvmvYtgA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/json-pointer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pointer/-/json-pointer-1.0.2.tgz", + "integrity": "sha512-Fsn6wM2zlDzY1U+v4Nc8bo3bVqgfNTGcn6dMgs6FjrEnt4ZCe60o6ByKRjOGlI2gow0aE/Q41QOigdTqkyK5fg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/codegen": "^1.0.0", + "@jsonjoy.com/util": "^1.9.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/util": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.9.0.tgz", + "integrity": "sha512-pLuQo+VPRnN8hfPqUTLTHk126wuYdXVxE6aDmjSeV4NCAgyxWbiOIeNJVtID3h1Vzpoi9m4jXezf73I6LgabgQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/buffers": "^1.0.0", + "@jsonjoy.com/codegen": "^1.0.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/util/node_modules/@jsonjoy.com/buffers": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/buffers/-/buffers-1.2.1.tgz", + "integrity": "sha512-12cdlDwX4RUM3QxmUbVJWqZ/mrK6dFQH4Zxq6+r1YXKXYBNgZXndx2qbCJwh3+WWkCSn67IjnlG3XYTvmvYtgA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", + "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@mdx-js/mdx": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-3.1.1.tgz", + "integrity": "sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdx": "^2.0.0", + "acorn": "^8.0.0", + "collapse-white-space": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "estree-util-scope": "^1.0.0", + "estree-walker": "^3.0.0", + "hast-util-to-jsx-runtime": "^2.0.0", + "markdown-extensions": "^2.0.0", + "recma-build-jsx": "^1.0.0", + "recma-jsx": "^1.0.0", + "recma-stringify": "^1.0.0", + "rehype-recma": "^1.0.0", + "remark-mdx": "^3.0.0", + "remark-parse": "^11.0.0", + "remark-rehype": "^11.0.0", + "source-map": "^0.7.0", + "unified": "^11.0.0", + "unist-util-position-from-estree": "^2.0.0", + "unist-util-stringify-position": "^4.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/mdx/node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/@mdx-js/react": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-3.1.1.tgz", + "integrity": "sha512-f++rKLQgUVYDAtECQ6fn/is15GkEH9+nZPM3MS0RcxVqoTfawHvDlSCH7JbMhAM6uJ32v3eXLvLmLvjGu7PTQw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/mdx": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "@types/react": ">=16", + "react": ">=16" + } + }, + "node_modules/@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -1256,18 +5666,360 @@ "node": ">= 8" } }, + "node_modules/@peculiar/asn1-cms": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-cms/-/asn1-cms-2.7.0.tgz", + "integrity": "sha512-hew63shtzzvBcSHbhm+cyAmKe6AIfinT9hzEqSPjDC6opTTMKmTkQ0gHuN2KsWlvqiKw1S/fS94fhag/FJkioQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@peculiar/asn1-schema": "^2.7.0", + "@peculiar/asn1-x509": "^2.7.0", + "@peculiar/asn1-x509-attr": "^2.7.0", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-csr": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-csr/-/asn1-csr-2.7.0.tgz", + "integrity": "sha512-VVsAyGqErT9D1SY4aEqozThXMVI+ssVRiv2DDeYuvpBKLIgZ3hYs3Ay3u/VSoKq6ESFi9cf6rf3IOOzfwh7oMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@peculiar/asn1-schema": "^2.7.0", + "@peculiar/asn1-x509": "^2.7.0", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-ecc": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-ecc/-/asn1-ecc-2.7.0.tgz", + "integrity": "sha512-n7KEs/Q/wrB415cxy4fHOBhegp4NdJ15fkJPwcB/3/8iNBQC2L/N7SChJPKDJPZGYH0jD4Tg4/0vnHmwghnbKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@peculiar/asn1-schema": "^2.7.0", + "@peculiar/asn1-x509": "^2.7.0", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-pfx": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-pfx/-/asn1-pfx-2.7.0.tgz", + "integrity": "sha512-V/nrlQVmhg7lYAsM7E13UDL5erAwFv6kCIVFqNaMIHSVi7dngcT839JkRTkQBqznMG98l2XjxYk74ZztAohZzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@peculiar/asn1-cms": "^2.7.0", + "@peculiar/asn1-pkcs8": "^2.7.0", + "@peculiar/asn1-rsa": "^2.7.0", + "@peculiar/asn1-schema": "^2.7.0", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-pkcs8": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-pkcs8/-/asn1-pkcs8-2.7.0.tgz", + "integrity": "sha512-9GTl1nE8Mx1kTZ+7QyYatDyKsm34QcWRBFkY1iPvWC3X4Dona5s/tlLiQsx5WzVdZqiMBZNYT0buyw4/vbhnjw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@peculiar/asn1-schema": "^2.7.0", + "@peculiar/asn1-x509": "^2.7.0", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-pkcs9": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-pkcs9/-/asn1-pkcs9-2.7.0.tgz", + "integrity": "sha512-Bh7m+OuIaSEllPQcSd9OSp93F4ROWH7sbITWV8MI+8dwsjE5111/87VxiWVvYFKyww3vp39geLv9ENqhwWHcew==", + "dev": true, + "license": "MIT", + "dependencies": { + "@peculiar/asn1-cms": "^2.7.0", + "@peculiar/asn1-pfx": "^2.7.0", + "@peculiar/asn1-pkcs8": "^2.7.0", + "@peculiar/asn1-schema": "^2.7.0", + "@peculiar/asn1-x509": "^2.7.0", + "@peculiar/asn1-x509-attr": "^2.7.0", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-rsa": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-rsa/-/asn1-rsa-2.7.0.tgz", + "integrity": "sha512-/qvENQrXyTZURjMqSeofHul0JJt2sNSzSwk36pl2olkHbaioMQgrASDZAlHXl0xUlnVbHj0uGgOrBMTb5x2aJQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@peculiar/asn1-schema": "^2.7.0", + "@peculiar/asn1-x509": "^2.7.0", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-schema": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.7.0.tgz", + "integrity": "sha512-W8ZfWzLmQnrcky+eh3tni4IozMdqBDiHWU0N+vve/UGjMaUs8c0L7A2oEdkBXS8rTpWDpK/aoI3DG/L/hxmxPg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@peculiar/utils": "^2.0.2", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-x509": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-x509/-/asn1-x509-2.7.0.tgz", + "integrity": "sha512-mUn9RRrkGDnG4ALfunDmzyRW5dg+sWCj/pfnCCqEHYbkGxEpvUt6iVJv8Yw1cyp6SWZ26ZE5oSmI5SqEaen15g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@peculiar/asn1-schema": "^2.7.0", + "@peculiar/utils": "^2.0.2", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-x509-attr": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-x509-attr/-/asn1-x509-attr-2.7.0.tgz", + "integrity": "sha512-NS8e7SOgXipkzUPLF/sce7ukpMpWjhxYsH0n6Y+bHYo4TTxOb95Zv7hqwSuL212mj5YxovjdOKQOgH1As3E94w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@peculiar/asn1-schema": "^2.7.0", + "@peculiar/asn1-x509": "^2.7.0", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@peculiar/utils/-/utils-2.0.3.tgz", + "integrity": "sha512-+oL3HPFRIZ1St2K50lWCXiioIgSoxzz7R1J3uF6neO2yl1sgmpgY6XXJH4BdpoDkMWznQTeYF6oWNDZLCdQ4eQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/x509": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/@peculiar/x509/-/x509-1.14.3.tgz", + "integrity": "sha512-C2Xj8FZ0uHWeCXXqX5B4/gVFQmtSkiuOolzAgutjTfseNOHT3pUjljDZsTSxXFGgio54bCzVFqmEOUrIVk8RDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@peculiar/asn1-cms": "^2.6.0", + "@peculiar/asn1-csr": "^2.6.0", + "@peculiar/asn1-ecc": "^2.6.0", + "@peculiar/asn1-pkcs9": "^2.6.0", + "@peculiar/asn1-rsa": "^2.6.0", + "@peculiar/asn1-schema": "^2.6.0", + "@peculiar/asn1-x509": "^2.6.0", + "pvtsutils": "^1.3.6", + "reflect-metadata": "^0.2.2", + "tslib": "^2.8.1", + "tsyringe": "^4.10.0" + }, + "engines": { + "node": ">=20.0.0" + } + }, "node_modules/@pinojs/redact": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/@pinojs/redact/-/redact-0.4.0.tgz", "integrity": "sha512-k2ENnmBugE/rzQfEcdWHcCY+/FM3VLzH9cYEsbdsoqrvzAKRhUZeRNhAZvB8OitQJ1TBed3yqWtdjzS6wJKBwg==", "license": "MIT" }, + "node_modules/@pnpm/config.env-replace": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz", + "integrity": "sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.22.0" + } + }, + "node_modules/@pnpm/network.ca-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz", + "integrity": "sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "4.2.10" + }, + "engines": { + "node": ">=12.22.0" + } + }, + "node_modules/@pnpm/network.ca-file/node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true, + "license": "ISC" + }, + "node_modules/@pnpm/npm-conf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-3.0.2.tgz", + "integrity": "sha512-h104Kh26rR8tm+a3Qkc5S4VLYint3FE48as7+/5oCEcKR2idC/pF1G6AhIXKI+eHPJa/3J9i5z0Al47IeGHPkA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@pnpm/config.env-replace": "^1.1.0", + "@pnpm/network.ca-file": "^1.0.1", + "config-chain": "^1.1.11" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@polka/url": { + "version": "1.0.0-next.29", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.29.tgz", + "integrity": "sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==", + "dev": true, + "license": "MIT" + }, "node_modules/@rtsao/scc": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", "license": "MIT" }, + "node_modules/@sideway/address": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", + "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@sideway/formula": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", + "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.10", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz", + "integrity": "sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@sindresorhus/is": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, + "node_modules/@slorber/remark-comment": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@slorber/remark-comment/-/remark-comment-1.0.0.tgz", + "integrity": "sha512-RCE24n7jsOj1M0UPvIQCHTe7fI0sFL4S2nwKVWwHyVr/wI/H8GosgsJGyhnsZoGFnD/P2hLf1mSbrrgSLN93NA==", + "dev": true, + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.1.0", + "micromark-util-symbol": "^1.0.1" + } + }, + "node_modules/@szmarczak/http-timer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", + "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", + "dev": true, + "license": "MIT", + "dependencies": { + "defer-to-connect": "^2.0.1" + }, + "engines": { + "node": ">=14.16" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.6", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz", + "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/bonjour": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz", + "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz", + "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "node_modules/@types/debug": { + "version": "4.1.13", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.13.tgz", + "integrity": "sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/ms": "*" + } + }, "node_modules/@types/eslint": { "version": "9.6.1", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", @@ -1279,12 +6031,134 @@ "@types/json-schema": "*" } }, + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, "node_modules/@types/estree": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", "license": "MIT" }, + "node_modules/@types/estree-jsx": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz", + "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/@types/express": { + "version": "4.17.25", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.25.tgz", + "integrity": "sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "^1" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.19.8", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.8.tgz", + "integrity": "sha512-02S5fmqeoKzVZCHPZid4b8JH2eM5HzQLZWN2FohQEy/0eXTq8VXZfSN6Pcr3F6N9R/vNrj7cpgbhjie6m/1tCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/history": { + "version": "4.7.11", + "resolved": "https://registry.npmjs.org/@types/history/-/history-4.7.11.tgz", + "integrity": "sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/http-cache-semantics": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", + "integrity": "sha512-L3LgimLHXtGkWikKnsPg0/VFx9OGZaC+eN1u4r+OB1XRqH3meBIAVC2zr1WdMH+RHmnRkqliQAOHNJ/E0j/e0Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/http-errors": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz", + "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/http-proxy": { + "version": "1.17.17", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.17.tgz", + "integrity": "sha512-ED6LB+Z1AVylNTu7hdzuBqOgMnvG/ld6wGCG8wFnAzKX5uyW2K3WD52v0gnLCTK/VLpXtKckgWuyScYK6cSPaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, "node_modules/@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", @@ -1297,30 +6171,230 @@ "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", "license": "MIT" }, - "node_modules/@types/node": { - "version": "25.3.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.0.tgz", - "integrity": "sha512-4K3bqJpXpqfg2XKGK9bpDTc6xO/xoUP/RBWS7AtRMug6zZFaRekiLzjVtAoZMquxoAbzBvy5nxQ7veS5eYzf8A==", + "node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~7.18.0" + "@types/unist": "*" } }, + "node_modules/@types/mdx": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.13.tgz", + "integrity": "sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/mime": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/ms": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "25.7.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.7.0.tgz", + "integrity": "sha512-z+pdZyxE+RTQE9AcboAZCb4otwcrvgHD+GlBpPgn0emDVt0ohrTMhAwlr2Wd9nZ+nihhYFxO2pThz3C5qSu2Eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~7.21.0" + } + }, + "node_modules/@types/prismjs": { + "version": "1.26.6", + "resolved": "https://registry.npmjs.org/@types/prismjs/-/prismjs-1.26.6.tgz", + "integrity": "sha512-vqlvI7qlMvcCBbVe0AKAb4f97//Hy0EBTaiW8AalRnG/xAN5zOiWWyrNqNXeq8+KAuvRewjCVY1+IPxk4RdNYw==", + "license": "MIT" + }, + "node_modules/@types/qs": { + "version": "6.15.1", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.15.1.tgz", + "integrity": "sha512-GZHUBZR9hckSUhrxmp1nG6NwdpM9fCunJwyThLW1X3AyHgd9IlHb6VANpQQqDr2o/qQp6McZ3y/IA2rVzKzSbw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/react": { + "version": "19.2.14", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.14.tgz", + "integrity": "sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==", + "dev": true, + "license": "MIT", + "dependencies": { + "csstype": "^3.2.2" + } + }, + "node_modules/@types/react-dom": { + "version": "19.2.3", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.3.tgz", + "integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@types/react": "^19.2.0" + } + }, + "node_modules/@types/react-router": { + "version": "5.1.20", + "resolved": "https://registry.npmjs.org/@types/react-router/-/react-router-5.1.20.tgz", + "integrity": "sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/history": "^4.7.11", + "@types/react": "*" + } + }, + "node_modules/@types/react-router-config": { + "version": "5.0.11", + "resolved": "https://registry.npmjs.org/@types/react-router-config/-/react-router-config-5.0.11.tgz", + "integrity": "sha512-WmSAg7WgqW7m4x8Mt4N6ZyKz0BubSj/2tVUMsAHp+Yd2AMwcSbeFq9WympT19p5heCFmF97R9eD5uUR/t4HEqw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/history": "^4.7.11", + "@types/react": "*", + "@types/react-router": "^5.1.0" + } + }, + "node_modules/@types/react-router-dom": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/@types/react-router-dom/-/react-router-dom-5.3.3.tgz", + "integrity": "sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/history": "^4.7.11", + "@types/react": "*", + "@types/react-router": "*" + } + }, + "node_modules/@types/retry": { + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", + "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/send": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@types/send/-/send-1.2.1.tgz", + "integrity": "sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/serve-index": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz", + "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.10", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.10.tgz", + "integrity": "sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/http-errors": "*", + "@types/node": "*", + "@types/send": "<1" + } + }, + "node_modules/@types/serve-static/node_modules/@types/send": { + "version": "0.17.6", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.6.tgz", + "integrity": "sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/sockjs": { + "version": "0.3.36", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz", + "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/ws": { + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/yargs": { + "version": "17.0.35", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.35.tgz", + "integrity": "sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "dev": true, + "license": "MIT" + }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.56.1.tgz", - "integrity": "sha512-Jz9ZztpB37dNC+HU2HI28Bs9QXpzCz+y/twHOwhyrIRdbuVDxSytJNDl6z/aAKlaRIwC7y8wJdkBv7FxYGgi0A==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.59.3.tgz", + "integrity": "sha512-PwFvSKsXGShKGW6n5bZOhGHEcCZXM8HofLK9fNsEwZXzFRjoY+XT1Vsf1zgyXdwTr0ZYz1/2tkZ0DBTT9jZjhw==", "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.12.2", - "@typescript-eslint/scope-manager": "8.56.1", - "@typescript-eslint/type-utils": "8.56.1", - "@typescript-eslint/utils": "8.56.1", - "@typescript-eslint/visitor-keys": "8.56.1", + "@typescript-eslint/scope-manager": "8.59.3", + "@typescript-eslint/type-utils": "8.59.3", + "@typescript-eslint/utils": "8.59.3", + "@typescript-eslint/visitor-keys": "8.59.3", "ignore": "^7.0.5", "natural-compare": "^1.4.0", - "ts-api-utils": "^2.4.0" + "ts-api-utils": "^2.5.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -1330,21 +6404,30 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^8.56.1", + "@typescript-eslint/parser": "^8.59.3", "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "license": "MIT", + "engines": { + "node": ">= 4" } }, "node_modules/@typescript-eslint/parser": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.56.1.tgz", - "integrity": "sha512-klQbnPAAiGYFyI02+znpBRLyjL4/BrBd0nyWkdC0s/6xFLkXYQ8OoRrSkqacS1ddVxf/LDyODIKbQ5TgKAf/Fg==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.59.3.tgz", + "integrity": "sha512-HPwA+hVkfcriajbNvTmZv4VRauibay+cWArYUYq7u7W7PmGShMxbPxLvrwDme55a6d5alG3nrYfhyJ/G28XlLg==", "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.56.1", - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/typescript-estree": "8.56.1", - "@typescript-eslint/visitor-keys": "8.56.1", + "@typescript-eslint/scope-manager": "8.59.3", + "@typescript-eslint/types": "8.59.3", + "@typescript-eslint/typescript-estree": "8.59.3", + "@typescript-eslint/visitor-keys": "8.59.3", "debug": "^4.4.3" }, "engines": { @@ -1356,17 +6439,17 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/project-service": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.56.1.tgz", - "integrity": "sha512-TAdqQTzHNNvlVFfR+hu2PDJrURiwKsUvxFn1M0h95BB8ah5jejas08jUWG4dBA68jDMI988IvtfdAI53JzEHOQ==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.59.3.tgz", + "integrity": "sha512-ECiUWa/KYRGDFUqTNehaRgzDshnJfkTABJxVemHk4ko22gcr0ukloKjWvyQ64g8YCV/UI47kN1dbmjf/GaQYng==", "license": "MIT", "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.56.1", - "@typescript-eslint/types": "^8.56.1", + "@typescript-eslint/tsconfig-utils": "^8.59.3", + "@typescript-eslint/types": "^8.59.3", "debug": "^4.4.3" }, "engines": { @@ -1377,17 +6460,17 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.56.1.tgz", - "integrity": "sha512-YAi4VDKcIZp0O4tz/haYKhmIDZFEUPOreKbfdAN3SzUDMcPhJ8QI99xQXqX+HoUVq8cs85eRKnD+rne2UAnj2w==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.59.3.tgz", + "integrity": "sha512-t2LvZnoEfzKtnPjgeEu41xw5gxq9mQVfYy4OoZ4Vlt0sk3JwxmhCca/AR7DwOiHrjWgjAj6as4AhRLKSDfvZIA==", "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/visitor-keys": "8.56.1" + "@typescript-eslint/types": "8.59.3", + "@typescript-eslint/visitor-keys": "8.59.3" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -1398,9 +6481,9 @@ } }, "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.56.1.tgz", - "integrity": "sha512-qOtCYzKEeyr3aR9f28mPJqBty7+DBqsdd63eO0yyDwc6vgThj2UjWfJIcsFeSucYydqcuudMOprZ+x1SpF3ZuQ==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.59.3.tgz", + "integrity": "sha512-PcIJHjmaREXLgIAIzLnSY9VucEzz8FKXsRgFa1DmdGCK/5tJpW03TKJF01Q6VZd1lLdz2sIKPWaDUZN9dp//dw==", "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -1410,20 +6493,20 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.56.1.tgz", - "integrity": "sha512-yB/7dxi7MgTtGhZdaHCemf7PuwrHMenHjmzgUW1aJpO+bBU43OycnM3Wn+DdvDO/8zzA9HlhaJ0AUGuvri4oGg==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.59.3.tgz", + "integrity": "sha512-g71d8QD8UaiHGvrJwyIS1hCX5r63w6Jll+4VEYhEAHXTDIqX1JgxhTAbEHtKntL9kuc4jRo7/GWw5xfCepSccQ==", "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/typescript-estree": "8.56.1", - "@typescript-eslint/utils": "8.56.1", + "@typescript-eslint/types": "8.59.3", + "@typescript-eslint/typescript-estree": "8.59.3", + "@typescript-eslint/utils": "8.59.3", "debug": "^4.4.3", - "ts-api-utils": "^2.4.0" + "ts-api-utils": "^2.5.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -1434,13 +6517,13 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/types": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.56.1.tgz", - "integrity": "sha512-dbMkdIUkIkchgGDIv7KLUpa0Mda4IYjo4IAMJUZ+3xNoUXxMsk9YtKpTHSChRS85o+H9ftm51gsK1dZReY9CVw==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.59.3.tgz", + "integrity": "sha512-ePFoH0g4ludssdRFqqDxQePCxU4WQyRa9+XVwjm7yLn0FKhMeoetC+qBEEI1Eyb1pGSDveTIT09Bvw2WhlGayg==", "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -1451,20 +6534,20 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.56.1.tgz", - "integrity": "sha512-qzUL1qgalIvKWAf9C1HpvBjif+Vm6rcT5wZd4VoMb9+Km3iS3Cv9DY6dMRMDtPnwRAFyAi7YXJpTIEXLvdfPxg==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.59.3.tgz", + "integrity": "sha512-CbRjVRAf7Lr9Kr8RopKcbY45p2VfmmHrm0ygOCYFi7oU8q19m0Fs/6iHS7kNOmwpp+ob07ZVcAqlxUod9lYdmg==", "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.56.1", - "@typescript-eslint/tsconfig-utils": "8.56.1", - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/visitor-keys": "8.56.1", + "@typescript-eslint/project-service": "8.59.3", + "@typescript-eslint/tsconfig-utils": "8.59.3", + "@typescript-eslint/types": "8.59.3", + "@typescript-eslint/visitor-keys": "8.59.3", "debug": "^4.4.3", "minimatch": "^10.2.2", "semver": "^7.7.3", "tinyglobby": "^0.2.15", - "ts-api-utils": "^2.4.0" + "ts-api-utils": "^2.5.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -1474,19 +6557,55 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.6.tgz", + "integrity": "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==", + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", + "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.5" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/@typescript-eslint/utils": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.56.1.tgz", - "integrity": "sha512-HPAVNIME3tABJ61siYlHzSWCGtOoeP2RTIaHXFMPqjrQKCGB9OgUVdiNgH7TJS2JNIQ5qQ4RsAUDuGaGme/KOA==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.59.3.tgz", + "integrity": "sha512-JAvT14goBzRzzzZyqq3P9BLArIxTtQURUtFgQ/V7FO+eU+Gg6ES+5ymOPP1wRxXcxAYeivCk4uS3jCKWI1K8Zg==", "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.9.1", - "@typescript-eslint/scope-manager": "8.56.1", - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/typescript-estree": "8.56.1" + "@typescript-eslint/scope-manager": "8.59.3", + "@typescript-eslint/types": "8.59.3", + "@typescript-eslint/typescript-estree": "8.59.3" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -1497,16 +6616,16 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.56.1.tgz", - "integrity": "sha512-KiROIzYdEV85YygXw6BI/Dx4fnBlFQu6Mq4QE4MOH9fFnhohw6wX/OAvDY2/C+ut0I3RSPKenvZJIVYqJNkhEw==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.59.3.tgz", + "integrity": "sha512-f1UQF7ggd42YiwI5wGrRaPsa+P0CINBlrkLPmGfpq/u/I/oVtecoEIfFR9ag/oa1sLOsRNZ6xehf6qMZhQGBDg==", "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.56.1", + "@typescript-eslint/types": "8.59.3", "eslint-visitor-keys": "^5.0.0" }, "engines": { @@ -1604,6 +6723,228 @@ "integrity": "sha512-u2G8ZQ9IhMWTMXaWqZycnK4UthG1fA238CD+DP4Dm4WJi5hdUKKLg0RMRaRpDPNMdkTwIDkp7WtD0Rd9BH9fLw==", "license": "MIT" }, + "node_modules/@webassemblyjs/ast": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", + "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/helper-numbers": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", + "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", + "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", + "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", + "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.13.2", + "@webassemblyjs/helper-api-error": "1.13.2", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", + "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", + "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/wasm-gen": "1.14.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", + "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", + "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", + "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", + "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/helper-wasm-section": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-opt": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1", + "@webassemblyjs/wast-printer": "1.14.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", + "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", + "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", + "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-api-error": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", + "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/accepts/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/accepts/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/accepts/node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/acorn": { "version": "8.16.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", @@ -1616,6 +6957,19 @@ "node": ">=0.4.0" } }, + "node_modules/acorn-import-phases": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz", + "integrity": "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.13.0" + }, + "peerDependencies": { + "acorn": "^8.14.0" + } + }, "node_modules/acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", @@ -1625,6 +6979,43 @@ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, + "node_modules/acorn-walk": { + "version": "8.3.5", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.5.tgz", + "integrity": "sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.11.0" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/address": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/address/-/address-1.2.2.tgz", + "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/ajv": { "version": "6.14.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", @@ -1641,28 +7032,201 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz", + "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/algoliasearch": { + "version": "5.52.1", + "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.52.1.tgz", + "integrity": "sha512-fHA8+kXTbjagw3jkLiaS7KKrH8qe2DyOsiUhGlN4cdT77PEsfqXZl7ewDk1hsg+pJnPlnE50XtLxjR91iJOpmg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/abtesting": "1.18.1", + "@algolia/client-abtesting": "5.52.1", + "@algolia/client-analytics": "5.52.1", + "@algolia/client-common": "5.52.1", + "@algolia/client-insights": "5.52.1", + "@algolia/client-personalization": "5.52.1", + "@algolia/client-query-suggestions": "5.52.1", + "@algolia/client-search": "5.52.1", + "@algolia/ingestion": "1.52.1", + "@algolia/monitoring": "1.52.1", + "@algolia/recommend": "5.52.1", + "@algolia/requester-browser-xhr": "5.52.1", + "@algolia/requester-fetch": "5.52.1", + "@algolia/requester-node-http": "5.52.1" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/algoliasearch-helper": { + "version": "3.29.1", + "resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.29.1.tgz", + "integrity": "sha512-6ck2YFudF2Pje7szQoPBiRFTGfd+1I+0I/WfLPGn0bj1kvrFoOQmNyedNiDxTk3/r4IfSLDYk+RA4G7u8H6+yA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/events": "^4.0.1" + }, + "peerDependencies": { + "algoliasearch": ">= 3.1 < 6" + } + }, + "node_modules/ansi-align": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.1.0" + } + }, + "node_modules/ansi-align/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/ansi-align/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, "engines": { "node": ">=8" } }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "dev": true, + "engines": [ + "node >= 0.8.0" + ], + "license": "Apache-2.0", + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, "engines": { - "node": ">=8" + "node": ">=12" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ansis": { + "version": "3.17.0", + "resolved": "https://registry.npmjs.org/ansis/-/ansis-3.17.0.tgz", + "integrity": "sha512-0qWUglt9JEqLFr3w1I1pbrChn1grhaiAR2ocX1PP/flRmxgtwTzPFFFnfIlD6aMOLQZgSuCRlidD70lvx8yhzg==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/anymatch/node_modules/picomatch": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, "node_modules/argparse": { @@ -1687,6 +7251,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true, + "license": "MIT" + }, "node_modules/array-includes": { "version": "3.1.9", "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", @@ -1715,6 +7286,16 @@ "integrity": "sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==", "license": "MIT" }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/array.prototype.findlast": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", @@ -1829,6 +7410,31 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/asn1js": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-3.0.10.tgz", + "integrity": "sha512-S2s3aOytiKdFRdulw2qPE51MzjzVOisppcVv7jVFR+Kw0kxwvFrDcYA0h7Ndqbmj0HkMIXYWaoj7fli8kgx1eg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "pvtsutils": "^1.3.6", + "pvutils": "^1.1.5", + "tslib": "^2.8.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/astring": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/astring/-/astring-1.9.0.tgz", + "integrity": "sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==", + "dev": true, + "license": "MIT", + "bin": { + "astring": "bin/astring" + } + }, "node_modules/async-function": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", @@ -1847,6 +7453,43 @@ "node": ">=8.0.0" } }, + "node_modules/autoprefixer": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.5.0.tgz", + "integrity": "sha512-FMhOoZV4+qR6aTUALKX2rEqGG+oyATvwBt9IIzVR5rMa2HRWPkxf+P+PAJLD1I/H5/II+HuZcBJYEFBpq39ong==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "browserslist": "^4.28.2", + "caniuse-lite": "^1.0.30001787", + "fraction.js": "^5.3.4", + "picocolors": "^1.1.1", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, "node_modules/available-typed-arrays": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", @@ -1862,19 +7505,107 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/balanced-match": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "node_modules/babel-loader": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.2.1.tgz", + "integrity": "sha512-fqe8naHt46e0yIdkjUZYqddSXfej3AHajX+CSO5X7oy0EmPc6o5Xh+RClNoHjnieWz9AW4kZxW9yyFMhVB1QLA==", + "dev": true, "license": "MIT", + "dependencies": { + "find-cache-dir": "^4.0.0", + "schema-utils": "^4.0.0" + }, "engines": { - "node": "18 || 20 || >=22" + "node": ">= 14.15.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0", + "webpack": ">=5" } }, + "node_modules/babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "object.assign": "^4.1.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.17", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.17.tgz", + "integrity": "sha512-aTyf30K/rqAsNwN76zYrdtx8obu0E4KoUME29B1xj+B3WxgvWkp943vYQ+z8Mv3lw9xHXMHpvSPOBxzAkIa94w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.28.6", + "@babel/helper-define-polyfill-provider": "^0.6.8", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz", + "integrity": "sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.5", + "core-js-compat": "^3.43.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.8.tgz", + "integrity": "sha512-M762rNHfSF1EV3SLtnCJXFoQbbIIz0OyRwnCmV0KPC7qosSfCO0QLTSuJX3ayAebubhE6oYBAYPrBA5ljowaZg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.8" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/bail": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" + }, "node_modules/baseline-browser-mapping": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.0.tgz", - "integrity": "sha512-lIyg0szRfYbiy67j9KN8IyeD7q7hcmqnJ1ddWmNt19ItGpNN64mnllmxUNFIOdOm6by97jlL6wfpTTJrmnjWAA==", + "version": "2.10.29", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.29.tgz", + "integrity": "sha512-Asa2krT+XTPZINCS+2QcyS8WTkObE77RwkydwF7h6DmnKqbvlalz93m/dnphUyCa6SWSP51VgtEUf2FN+gelFQ==", "license": "Apache-2.0", "bin": { "baseline-browser-mapping": "dist/cli.cjs" @@ -1883,22 +7614,222 @@ "node": ">=6.0.0" } }, - "node_modules/brace-expansion": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.3.tgz", - "integrity": "sha512-fy6KJm2RawA5RcHkLa1z/ScpBeA762UF9KmZQxwIbDtRJrgLzM10depAiEQ+CXYcoiqW1/m96OAAoke2nE9EeA==", + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "dev": true, + "license": "MIT" + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/body-parser": { + "version": "1.20.5", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.5.tgz", + "integrity": "sha512-3grm+/2tUOvu2cjJkvsIxrv/wVpfXQW4PsQHYm7yk4vfpu7Ekl6nEsYBoJUL6qDwZUx8wUhQ8tR2qz+ad9c9OA==", + "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^4.0.2" + "bytes": "~3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "~1.2.0", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "on-finished": "~2.4.1", + "qs": "~6.15.1", + "raw-body": "~2.5.3", + "type-is": "~1.6.18", + "unpipe": "~1.0.0" }, "engines": { - "node": "18 || 20 || >=22" + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/bonjour-service": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.3.0.tgz", + "integrity": "sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true, + "license": "ISC" + }, + "node_modules/boxen": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-6.2.1.tgz", + "integrity": "sha512-H4PEsJXfFI/Pt8sjDWbHlQPx4zL/bvSQjcilJmaulGt5mLDorHOHpmdXAJcBcmru7PhYSp/cDMWRko4ZUMFkSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-align": "^3.0.1", + "camelcase": "^6.2.0", + "chalk": "^4.1.2", + "cli-boxes": "^3.0.0", + "string-width": "^5.0.1", + "type-fest": "^2.5.0", + "widest-line": "^4.0.1", + "wrap-ansi": "^8.0.1" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/boxen/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/boxen/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/boxen/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/boxen/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/boxen/node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz", + "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" } }, "node_modules/browserslist": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", - "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", + "version": "4.28.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz", + "integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==", "funding": [ { "type": "opencollective", @@ -1915,11 +7846,11 @@ ], "license": "MIT", "dependencies": { - "baseline-browser-mapping": "^2.9.0", - "caniuse-lite": "^1.0.30001759", - "electron-to-chromium": "^1.5.263", - "node-releases": "^2.0.27", - "update-browserslist-db": "^1.2.0" + "baseline-browser-mapping": "^2.10.12", + "caniuse-lite": "^1.0.30001782", + "electron-to-chromium": "^1.5.328", + "node-releases": "^2.0.36", + "update-browserslist-db": "^1.2.3" }, "bin": { "browserslist": "cli.js" @@ -1928,6 +7859,13 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true, + "license": "MIT" + }, "node_modules/builtin-modules": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", @@ -1940,6 +7878,71 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/bundle-name": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", + "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "run-applescript": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/bytestreamjs": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/bytestreamjs/-/bytestreamjs-2.0.1.tgz", + "integrity": "sha512-U1Z/ob71V/bXfVABvNr/Kumf5VyeQRBEm6Txb0PQ6S7V5GpBM3w4Cbqz/xPDicR5tN0uvDifng8C+5qECeGwyQ==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/cacheable-lookup": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz", + "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.16" + } + }, + "node_modules/cacheable-request": { + "version": "10.2.14", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.14.tgz", + "integrity": "sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/http-cache-semantics": "^4.0.2", + "get-stream": "^6.0.1", + "http-cache-semantics": "^4.1.1", + "keyv": "^4.5.3", + "mimic-response": "^4.0.0", + "normalize-url": "^8.0.0", + "responselike": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + } + }, "node_modules/call-bind": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", @@ -1996,10 +7999,47 @@ "node": ">=6" } }, + "node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, "node_modules/caniuse-lite": { - "version": "1.0.30001774", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001774.tgz", - "integrity": "sha512-DDdwPGz99nmIEv216hKSgLD+D4ikHQHjBC/seF98N9CPqRX4M5mSxT9eTV6oyisnJcuzxtZy4n17yKKQYmYQOA==", + "version": "1.0.30001792", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001792.tgz", + "integrity": "sha512-hVLMUZFgR4JJ6ACt1uEESvQN1/dBVqPAKY0hgrV70eN3391K6juAfTjKZLKvOMsx8PxA7gsY1/tLMMTcfFLLpw==", "funding": [ { "type": "opencollective", @@ -2016,17 +8056,24 @@ ], "license": "CC-BY-4.0" }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, "engines": { - "node": ">=10" + "node": "^12.17.0 || ^14.13 || >=16.0.0" }, "funding": { "url": "https://github.com/chalk/chalk?sponsor=1" @@ -2047,51 +8094,204 @@ "url": "https://github.com/chalk/chalk-template?sponsor=1" } }, - "node_modules/chalk-template/node_modules/chalk": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", - "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, "license": "MIT", "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=10" } }, - "node_modules/clear-module": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/clear-module/-/clear-module-4.1.2.tgz", - "integrity": "sha512-LWAxzHqdHsAZlPlEyJ2Poz6AIs384mPeqLVCru2p0BrP9G/kVGuhNyZYClLO6cXlnuJjzC8xtsJIuMjKqLXoAw==", + "node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-html4": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-reference-invalid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", + "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, "license": "MIT", "dependencies": { - "parent-module": "^2.0.0", - "resolve-from": "^5.0.0" + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", + "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0" + } + }, + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", "engines": { "node": ">=8" + } + }, + "node_modules/clean-css": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz", + "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 10.0" + } + }, + "node_modules/clean-css/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-boxes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", + "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/clear-module/node_modules/parent-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-2.0.0.tgz", - "integrity": "sha512-uo0Z9JJeWzv8BG+tRcapBKNJ0dro9cLyczGzulS6EfeyAdeC9sbojtW6XwvYxJkEne9En+J2XEl4zyglVeIwFg==", + "node_modules/cli-table3": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz", + "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==", + "dev": true, "license": "MIT", "dependencies": { - "callsites": "^3.1.0" + "string-width": "^4.2.0" }, "engines": { - "node": ">=8" + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "@colors/colors": "1.5.0" } }, - "node_modules/clear-module/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "node_modules/cli-table3/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/cli-table3/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, "engines": { "node": ">=8" } @@ -2105,22 +8305,61 @@ "node": ">=0.8" } }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" }, "engines": { - "node": ">=7.0.0" + "node": ">=6" + } + }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/collapse-white-space": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-2.1.0.tgz", + "integrity": "sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" } }, "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "license": "MIT" + }, + "node_modules/colord": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", + "dev": true, "license": "MIT" }, "node_modules/colorette": { @@ -2129,6 +8368,27 @@ "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", "license": "MIT" }, + "node_modules/combine-promises": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/combine-promises/-/combine-promises-1.2.0.tgz", + "integrity": "sha512-VcQB1ziGD0NXrhKxiwyNbCDmRzs/OShMs2GqW2DlU2A/Sd0nQxE1oWDAE5O0ygSx5mgQOn9eIFh7yKPgFRVkPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/comma-separated-tokens": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/commander": { "version": "14.0.3", "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.3.tgz", @@ -2151,18 +8411,336 @@ "node": ">= 6" } }, + "node_modules/common-path-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", + "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", + "dev": true, + "license": "ISC" + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compressible/node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.1.tgz", + "integrity": "sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==", + "dev": true, + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "compressible": "~2.0.18", + "debug": "2.6.9", + "negotiator": "~0.6.4", + "on-headers": "~1.1.0", + "safe-buffer": "5.2.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "license": "MIT" }, + "node_modules/config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "node_modules/config-chain/node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true, + "license": "ISC" + }, + "node_modules/configstore": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-6.0.0.tgz", + "integrity": "sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "dot-prop": "^6.0.1", + "graceful-fs": "^4.2.6", + "unique-string": "^3.0.0", + "write-file-atomic": "^3.0.3", + "xdg-basedir": "^5.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/yeoman/configstore?sponsor=1" + } + }, + "node_modules/connect-history-api-fallback": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/consola": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.2.tgz", + "integrity": "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.18.0 || >=16.10.0" + } + }, + "node_modules/content-disposition": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/convert-source-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", "license": "MIT" }, + "node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz", + "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==", + "dev": true, + "license": "MIT" + }, + "node_modules/copy-webpack-plugin": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz", + "integrity": "sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-glob": "^3.2.11", + "glob-parent": "^6.0.1", + "globby": "^13.1.1", + "normalize-path": "^3.0.0", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/globby": { + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", + "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", + "dev": true, + "license": "MIT", + "dependencies": { + "dir-glob": "^3.0.1", + "fast-glob": "^3.3.0", + "ignore": "^5.2.4", + "merge2": "^1.4.1", + "slash": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/copy-webpack-plugin/node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/core-js": { + "version": "3.49.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.49.0.tgz", + "integrity": "sha512-es1U2+YTtzpwkxVLwAFdSpaIMyQaq0PBgm3YD1W3Qpsn1NAmO3KSgZfu+oGSWVu6NvLHoHCV/aYcsE5wiB7ALg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat": { + "version": "3.49.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.49.0.tgz", + "integrity": "sha512-VQXt1jr9cBz03b331DFDCCP90b3fanciLkgiOoy8SBHy06gNf+vQ1A3WFLqG7I8TipYIKeYK9wxd0tUrvHcOZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.28.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/cosmiconfig": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/cosmiconfig/node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cosmiconfig/node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", @@ -2177,31 +8755,60 @@ "node": ">= 8" } }, - "node_modules/cspell": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/cspell/-/cspell-9.7.0.tgz", - "integrity": "sha512-ftxOnkd+scAI7RZ1/ksgBZRr0ouC7QRKtPQhD/PbLTKwAM62sSvRhE1bFsuW3VKBn/GilWzTjkJ40WmnDqH5iQ==", + "node_modules/crypto-random-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", + "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", + "dev": true, "license": "MIT", "dependencies": { - "@cspell/cspell-json-reporter": "9.7.0", - "@cspell/cspell-performance-monitor": "9.7.0", - "@cspell/cspell-pipe": "9.7.0", - "@cspell/cspell-types": "9.7.0", - "@cspell/cspell-worker": "9.7.0", - "@cspell/dynamic-import": "9.7.0", - "@cspell/url": "9.7.0", + "type-fest": "^1.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/crypto-random-string/node_modules/type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cspell": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/cspell/-/cspell-10.0.0.tgz", + "integrity": "sha512-R25gsSR1SLlcGyw48fwJwp0PjXrVdl7RDO/Dm5+s4DvC1uQSlyiUxsr/8ZtbyC/MPeUJFQN9B4luqLlSm0WelQ==", + "license": "MIT", + "dependencies": { + "@cspell/cspell-json-reporter": "10.0.0", + "@cspell/cspell-performance-monitor": "10.0.0", + "@cspell/cspell-pipe": "10.0.0", + "@cspell/cspell-types": "10.0.0", + "@cspell/cspell-worker": "10.0.0", + "@cspell/dynamic-import": "10.0.0", + "@cspell/url": "10.0.0", "ansi-regex": "^6.2.2", "chalk": "^5.6.2", "chalk-template": "^1.1.2", "commander": "^14.0.3", - "cspell-config-lib": "9.7.0", - "cspell-dictionary": "9.7.0", - "cspell-gitignore": "9.7.0", - "cspell-glob": "9.7.0", - "cspell-io": "9.7.0", - "cspell-lib": "9.7.0", + "cspell-config-lib": "10.0.0", + "cspell-dictionary": "10.0.0", + "cspell-gitignore": "10.0.0", + "cspell-glob": "10.0.0", + "cspell-io": "10.0.0", + "cspell-lib": "10.0.0", "fast-json-stable-stringify": "^2.1.0", - "flatted": "^3.3.3", + "flatted": "^3.4.2", "semver": "^7.7.4", "tinyglobby": "^0.2.15" }, @@ -2210,182 +8817,629 @@ "cspell-esm": "bin.mjs" }, "engines": { - "node": ">=20.18" + "node": ">=22.18.0" }, "funding": { "url": "https://github.com/streetsidesoftware/cspell?sponsor=1" } }, "node_modules/cspell-config-lib": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/cspell-config-lib/-/cspell-config-lib-9.7.0.tgz", - "integrity": "sha512-pguh8A3+bSJ1OOrKCiQan8bvaaY125de76OEFz7q1Pq309lIcDrkoL/W4aYbso/NjrXaIw6OjkgPMGRBI/IgGg==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/cspell-config-lib/-/cspell-config-lib-10.0.0.tgz", + "integrity": "sha512-HWK7SRnJ3N/kOThw/uzmXmQYCzBxu58Jkq2hHyte1voDl118BeNFoaNRWMpYdHbBi3kCj8gaZu8wGtm+Zmdhxw==", "license": "MIT", "dependencies": { - "@cspell/cspell-types": "9.7.0", - "comment-json": "^4.5.1", - "smol-toml": "^1.6.0", - "yaml": "^2.8.2" + "@cspell/cspell-types": "10.0.0", + "comment-json": "^4.6.2", + "smol-toml": "^1.6.1", + "yaml": "^2.8.3" }, "engines": { - "node": ">=20" + "node": ">=22.18.0" } }, "node_modules/cspell-dictionary": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/cspell-dictionary/-/cspell-dictionary-9.7.0.tgz", - "integrity": "sha512-k/Wz0so32+0QEqQe21V9m4BNXM5ZN6lz3Ix/jLCbMxFIPl6wT711ftjOWIEMFhvUOP0TWXsbzcuE9mKtS5mTig==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/cspell-dictionary/-/cspell-dictionary-10.0.0.tgz", + "integrity": "sha512-KubSoEAJO+77KPSSWjoLCz0+MIWVNq3joGTSyxucAZrBSJD64Y1O4BHHr1aj6XHIZwXhWWNScQlrQR3OcIulng==", "license": "MIT", "dependencies": { - "@cspell/cspell-performance-monitor": "9.7.0", - "@cspell/cspell-pipe": "9.7.0", - "@cspell/cspell-types": "9.7.0", - "cspell-trie-lib": "9.7.0", + "@cspell/cspell-performance-monitor": "10.0.0", + "@cspell/cspell-pipe": "10.0.0", + "@cspell/cspell-types": "10.0.0", + "cspell-trie-lib": "10.0.0", "fast-equals": "^6.0.0" }, "engines": { - "node": ">=20" + "node": ">=22.18.0" } }, "node_modules/cspell-gitignore": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/cspell-gitignore/-/cspell-gitignore-9.7.0.tgz", - "integrity": "sha512-MtoYuH4ah4K6RrmaF834npMcRsTKw0658mC6yvmBacUQOmwB/olqyuxF3fxtbb55HDb7cXDQ35t1XuwwGEQeZw==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/cspell-gitignore/-/cspell-gitignore-10.0.0.tgz", + "integrity": "sha512-55XLH9Y52eR7QgyV28Uaw8V9cN1YZ3PQIyrN9YBR4ndQNBKJxO9+jX1nwSspwnccCZiE/N+GGxFzRBb75JDSCw==", "license": "MIT", "dependencies": { - "@cspell/url": "9.7.0", - "cspell-glob": "9.7.0", - "cspell-io": "9.7.0" + "@cspell/url": "10.0.0", + "cspell-glob": "10.0.0", + "cspell-io": "10.0.0" }, "bin": { "cspell-gitignore": "bin.mjs" }, "engines": { - "node": ">=20" + "node": ">=22.18.0" } }, "node_modules/cspell-glob": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/cspell-glob/-/cspell-glob-9.7.0.tgz", - "integrity": "sha512-LUeAoEsoCJ+7E3TnUmWBscpVQOmdwBejMlFn0JkXy6LQzxrybxXBKf65RSdIv1o5QtrhQIMa358xXYQG0sv/tA==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/cspell-glob/-/cspell-glob-10.0.0.tgz", + "integrity": "sha512-bXS35fMcA9X7GEkfnWBfoPd/vTnxxfXW+YHt6tWxu5fejfs00qUbjWp1oLC9FxRaXWxIkfsYp2mi1k1jYl4RVw==", "license": "MIT", "dependencies": { - "@cspell/url": "9.7.0", - "picomatch": "^4.0.3" + "@cspell/url": "10.0.0", + "picomatch": "^4.0.4" }, "engines": { - "node": ">=20" + "node": ">=22.18.0" } }, "node_modules/cspell-grammar": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/cspell-grammar/-/cspell-grammar-9.7.0.tgz", - "integrity": "sha512-oEYME+7MJztfVY1C06aGcJgEYyqBS/v/ETkQGPzf/c6ObSAPRcUbVtsXZgnR72Gru9aBckc70xJcD6bELdoWCA==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/cspell-grammar/-/cspell-grammar-10.0.0.tgz", + "integrity": "sha512-49udtYzkcCYEIDJbFOb4IwiAJebOYZnYvG6o6Ep19Tq0Xwjk7i4vxUprNiFNDCWFbcbJRPE9cpwQUVwp5WFGLw==", "license": "MIT", "dependencies": { - "@cspell/cspell-pipe": "9.7.0", - "@cspell/cspell-types": "9.7.0" + "@cspell/cspell-pipe": "10.0.0", + "@cspell/cspell-types": "10.0.0" }, "bin": { "cspell-grammar": "bin.mjs" }, "engines": { - "node": ">=20" + "node": ">=22.18.0" } }, "node_modules/cspell-io": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/cspell-io/-/cspell-io-9.7.0.tgz", - "integrity": "sha512-V7x0JHAUCcJPRCH8c0MQkkaKmZD2yotxVyrNEx2SZTpvnKrYscLEnUUTWnGJIIf9znzISqw116PLnYu2c+zd6Q==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/cspell-io/-/cspell-io-10.0.0.tgz", + "integrity": "sha512-NQCAUhx9DwKApxPuFl7EK1K1XSaQEAPld45yjjwv93xF8rJkEGkgzOwjbqafwAD20eKYv1a7oj/9EC0S5jETSw==", "license": "MIT", "dependencies": { - "@cspell/cspell-service-bus": "9.7.0", - "@cspell/url": "9.7.0" + "@cspell/cspell-service-bus": "10.0.0", + "@cspell/url": "10.0.0" }, "engines": { - "node": ">=20" + "node": ">=22.18.0" } }, "node_modules/cspell-lib": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/cspell-lib/-/cspell-lib-9.7.0.tgz", - "integrity": "sha512-aTx/aLRpnuY1RJnYAu+A8PXfm1oIUdvAQ4W9E66bTgp1LWI+2G2++UtaPxRIgI0olxE9vcXqUnKpjOpO+5W9bQ==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/cspell-lib/-/cspell-lib-10.0.0.tgz", + "integrity": "sha512-PowW6JEjuv/F2aFEirZvBxpzHdchOnpsUJbeIcFcai0++taLTbHQObROBEBf7e0S8DnHpVD5TZkqrTME5e44wg==", "license": "MIT", "dependencies": { - "@cspell/cspell-bundled-dicts": "9.7.0", - "@cspell/cspell-performance-monitor": "9.7.0", - "@cspell/cspell-pipe": "9.7.0", - "@cspell/cspell-resolver": "9.7.0", - "@cspell/cspell-types": "9.7.0", - "@cspell/dynamic-import": "9.7.0", - "@cspell/filetypes": "9.7.0", - "@cspell/rpc": "9.7.0", - "@cspell/strong-weak-map": "9.7.0", - "@cspell/url": "9.7.0", - "clear-module": "^4.1.2", - "cspell-config-lib": "9.7.0", - "cspell-dictionary": "9.7.0", - "cspell-glob": "9.7.0", - "cspell-grammar": "9.7.0", - "cspell-io": "9.7.0", - "cspell-trie-lib": "9.7.0", + "@cspell/cspell-bundled-dicts": "10.0.0", + "@cspell/cspell-performance-monitor": "10.0.0", + "@cspell/cspell-pipe": "10.0.0", + "@cspell/cspell-resolver": "10.0.0", + "@cspell/cspell-types": "10.0.0", + "@cspell/dynamic-import": "10.0.0", + "@cspell/filetypes": "10.0.0", + "@cspell/rpc": "10.0.0", + "@cspell/strong-weak-map": "10.0.0", + "@cspell/url": "10.0.0", + "cspell-config-lib": "10.0.0", + "cspell-dictionary": "10.0.0", + "cspell-glob": "10.0.0", + "cspell-grammar": "10.0.0", + "cspell-io": "10.0.0", + "cspell-trie-lib": "10.0.0", "env-paths": "^4.0.0", "gensequence": "^8.0.8", - "import-fresh": "^3.3.1", + "import-fresh": "^4.0.0", "resolve-from": "^5.0.0", "vscode-languageserver-textdocument": "^1.0.12", "vscode-uri": "^3.1.0", "xdg-basedir": "^5.1.0" }, "engines": { - "node": ">=20" + "node": ">=22.18.0" } }, - "node_modules/cspell-lib/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "node_modules/cspell-lib/node_modules/import-fresh": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-4.0.0.tgz", + "integrity": "sha512-Fpi660c7VPDM3fPKYovStd9IP1CPOikf6v/dGxJJMmHPcwYQIMJ4W7kO1avBYEpMqkCh+Dx3Ln6H7VYqgztLjw==", "license": "MIT", "engines": { - "node": ">=8" + "node": ">=22.15" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/cspell-trie-lib": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/cspell-trie-lib/-/cspell-trie-lib-9.7.0.tgz", - "integrity": "sha512-a2YqmcraL3g6I/4gY7SYWEZfP73oLluUtxO7wxompk/kOG2K1FUXyQfZXaaR7HxVv10axT1+NrjhOmXpfbI6LA==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/cspell-trie-lib/-/cspell-trie-lib-10.0.0.tgz", + "integrity": "sha512-R8qrMx10E/bm3Lecslwxn9XYo5NzSRK1rtandEX5n9UmEYHoBXjZELkg5+TOnV8VgrVaJSK57XtcGrbKp/4kSg==", "license": "MIT", "engines": { - "node": ">=20" + "node": ">=22.18.0" }, "peerDependencies": { - "@cspell/cspell-types": "9.7.0" + "@cspell/cspell-types": "10.0.0" } }, - "node_modules/cspell/node_modules/ansi-regex": { + "node_modules/css-blank-pseudo": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-7.0.1.tgz", + "integrity": "sha512-jf+twWGDf6LDoXDUode+nc7ZlrqfaNphrBIBrcmeP3D8yw1uPaix1gCC8LUQUGQ6CycuK2opkbFFWFuq/a94ag==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/css-blank-pseudo/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/css-declaration-sorter": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.4.0.tgz", + "integrity": "sha512-LTuzjPoyA2vMGKKcaOqKSp7Ub2eGrNfKiZH4LpezxpNrsICGCSFvsQOI29psISxNZtaXibkC2CXzrQ5enMeGGw==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.0.9" + } + }, + "node_modules/css-has-pseudo": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-7.0.3.tgz", + "integrity": "sha512-oG+vKuGyqe/xvEMoxAQrhi7uY16deJR3i7wwhBerVrGQKSqUC5GiOVxTpM9F9B9hw0J+eKeOWLH7E9gZ1Dr5rA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/selector-specificity": "^5.0.0", + "postcss-selector-parser": "^7.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/css-has-pseudo/node_modules/@csstools/selector-specificity": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz", + "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss-selector-parser": "^7.0.0" + } + }, + "node_modules/css-has-pseudo/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/css-loader": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.11.0.tgz", + "integrity": "sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==", + "dev": true, + "license": "MIT", + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.33", + "postcss-modules-extract-imports": "^3.1.0", + "postcss-modules-local-by-default": "^4.0.5", + "postcss-modules-scope": "^3.2.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/css-minimizer-webpack-plugin": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-5.0.1.tgz", + "integrity": "sha512-3caImjKFQkS+ws1TGcFn0V1HyDJFq1Euy589JlD6/3rV2kj+w7r5G9WDMgSHvpvXHNZ2calVypZWuEDQd9wfLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.18", + "cssnano": "^6.0.1", + "jest-worker": "^29.4.3", + "postcss": "^8.4.24", + "schema-utils": "^4.0.1", + "serialize-javascript": "^6.0.1" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@parcel/css": { + "optional": true + }, + "@swc/css": { + "optional": true + }, + "clean-css": { + "optional": true + }, + "csso": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "lightningcss": { + "optional": true + } + } + }, + "node_modules/css-prefers-color-scheme": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-10.0.0.tgz", + "integrity": "sha512-VCtXZAWivRglTZditUfB4StnsWr6YVZ2PRtuxQLKTNRdtAf8tpzaVPE9zXIF3VaSc7O70iK/j1+NXxyQCqdPjQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-select/node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" + }, + "node_modules/css-select/node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/css-tree": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", + "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "node_modules/css-what": { "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", - "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", - "license": "MIT", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz", + "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==", + "dev": true, + "license": "BSD-2-Clause", "engines": { - "node": ">=12" + "node": ">= 6" }, "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "url": "https://github.com/sponsors/fb55" } }, - "node_modules/cspell/node_modules/chalk": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", - "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", + "node_modules/cssdb": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-8.9.0.tgz", + "integrity": "sha512-J8jOU/hLjaXcO1LldOLraJSQpfLXRKof0I7mtbRyOy2AAXgqst0x9rlgi2qXeD6d0ou3ZLqcPAMqYVbpCbrxEw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + } + ], + "license": "MIT-0" + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" + "node": ">=4" + } + }, + "node_modules/cssnano": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-6.1.2.tgz", + "integrity": "sha512-rYk5UeX7VAM/u0lNqewCdasdtPK81CgX8wJFLEIXHbV2oldWRgJAsZrdhRXkV1NJzA2g850KiFm9mMU2HxNxMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssnano-preset-default": "^6.1.2", + "lilconfig": "^3.1.1" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/cssnano" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, + "node_modules/cssnano-preset-advanced": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/cssnano-preset-advanced/-/cssnano-preset-advanced-6.1.2.tgz", + "integrity": "sha512-Nhao7eD8ph2DoHolEzQs5CfRpiEP0xa1HBdnFZ82kvqdmbwVBUr2r1QuQ4t1pi+D1ZpqpcO4T+wy/7RxzJ/WPQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "autoprefixer": "^10.4.19", + "browserslist": "^4.23.0", + "cssnano-preset-default": "^6.1.2", + "postcss-discard-unused": "^6.0.5", + "postcss-merge-idents": "^6.0.3", + "postcss-reduce-idents": "^6.0.3", + "postcss-zindex": "^6.0.2" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/cssnano-preset-default": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-6.1.2.tgz", + "integrity": "sha512-1C0C+eNaeN8OcHQa193aRgYexyJtU8XwbdieEjClw+J9d94E41LwT6ivKH0WT+fYwYWB0Zp3I3IZ7tI/BbUbrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.0", + "css-declaration-sorter": "^7.2.0", + "cssnano-utils": "^4.0.2", + "postcss-calc": "^9.0.1", + "postcss-colormin": "^6.1.0", + "postcss-convert-values": "^6.1.0", + "postcss-discard-comments": "^6.0.2", + "postcss-discard-duplicates": "^6.0.3", + "postcss-discard-empty": "^6.0.3", + "postcss-discard-overridden": "^6.0.2", + "postcss-merge-longhand": "^6.0.5", + "postcss-merge-rules": "^6.1.1", + "postcss-minify-font-values": "^6.1.0", + "postcss-minify-gradients": "^6.0.3", + "postcss-minify-params": "^6.1.0", + "postcss-minify-selectors": "^6.0.4", + "postcss-normalize-charset": "^6.0.2", + "postcss-normalize-display-values": "^6.0.2", + "postcss-normalize-positions": "^6.0.2", + "postcss-normalize-repeat-style": "^6.0.2", + "postcss-normalize-string": "^6.0.2", + "postcss-normalize-timing-functions": "^6.0.2", + "postcss-normalize-unicode": "^6.1.0", + "postcss-normalize-url": "^6.0.2", + "postcss-normalize-whitespace": "^6.0.2", + "postcss-ordered-values": "^6.0.2", + "postcss-reduce-initial": "^6.1.0", + "postcss-reduce-transforms": "^6.0.2", + "postcss-svgo": "^6.0.3", + "postcss-unique-selectors": "^6.0.4" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/cssnano-utils": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-4.0.2.tgz", + "integrity": "sha512-ZR1jHg+wZ8o4c3zqf1SIUSTIvm/9mU343FMR6Obe/unskbvpGhZOo1J6d/r8D1pzkRQYuwbcH3hToOuoA2G7oQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/csso": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", + "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "css-tree": "~2.2.0" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/csso/node_modules/css-tree": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", + "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", + "dev": true, + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.28", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/csso/node_modules/mdn-data": { + "version": "2.0.28", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", + "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "dev": true, + "license": "MIT" + }, "node_modules/data-view-buffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", @@ -2455,6 +9509,13 @@ "node": "*" } }, + "node_modules/debounce": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", + "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==", + "dev": true, + "license": "MIT" + }, "node_modules/debug": { "version": "4.4.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", @@ -2472,12 +9533,114 @@ } } }, + "node_modules/decode-named-character-reference": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.3.0.tgz", + "integrity": "sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "character-entities": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decompress-response/node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "license": "MIT" }, + "node_modules/deepmerge-ts": { + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/deepmerge-ts/-/deepmerge-ts-7.1.5.tgz", + "integrity": "sha512-HOJkrhaYsweh+W+e74Yn7YStZOilkoPb6fycpwNLKzSPtruFs48nYis0zy5yJz1+ktUhHxoRDJ27RQAWLIJVJw==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/default-browser": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.5.0.tgz", + "integrity": "sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "bundle-name": "^4.1.0", + "default-browser-id": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser-id": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.1.tgz", + "integrity": "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, "node_modules/define-data-property": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", @@ -2495,6 +9658,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/define-properties": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", @@ -2512,6 +9685,37 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, "node_modules/detect-indent": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-7.0.2.tgz", @@ -2536,6 +9740,81 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true, + "license": "MIT" + }, + "node_modules/detect-port": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.6.1.tgz", + "integrity": "sha512-CmnVc+Hek2egPx1PeTFVta2W78xy2K/9Rkf6cC4T59S50tVnzKj+tnx5mmx5lwvCkujZ4uRrpRSuV+IVs3f90Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "address": "^1.0.1", + "debug": "4" + }, + "bin": { + "detect": "bin/detect-port.js", + "detect-port": "bin/detect-port.js" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/devlop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "dev": true, + "license": "MIT", + "dependencies": { + "dequal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dir-glob/node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/dns-packet": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", + "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@leichtgewicht/ip-codec": "^2.0.1" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/doctrine": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", @@ -2548,6 +9827,182 @@ "node": ">=0.10.0" } }, + "node_modules/dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "dev": true, + "license": "MIT", + "dependencies": { + "utila": "~0.4" + } + }, + "node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "license": "MIT", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/dom-serializer/node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" + }, + "node_modules/dom-serializer/node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/dom-serializer/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "license": "BSD-2-Clause", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-3.0.0.tgz", + "integrity": "sha512-umCQid3jKbDmVjx8jGaW7uUykm4DEUeyV21hPxNMo2nV955DhUThwqyOIDtreepP31hl84X7G5U9ZfsWvIB3Pg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause", + "engines": { + "node": ">=20.19.0" + } + }, + "node_modules/domhandler": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-6.0.1.tgz", + "integrity": "sha512-gYzvtM72ZtxQO0T048kd6HWSbbGCNOUwcnfQ01cqIJ4X2IYKFFHZ5mKvrQETcFXxsRObZulDaKmy//R7TPtsBg==", + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^3.0.0" + }, + "engines": { + "node": ">=20.19.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/domutils/node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" + }, + "node_modules/domutils/node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dev": true, + "license": "MIT", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/dot-prop": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", + "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/dot-prop/node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/dunder-proto": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", @@ -2562,12 +10017,78 @@ "node": ">= 0.4" } }, + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true, + "license": "MIT" + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true, + "license": "MIT" + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true, + "license": "MIT" + }, "node_modules/electron-to-chromium": { - "version": "1.5.302", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.302.tgz", - "integrity": "sha512-sM6HAN2LyK82IyPBpznDRqlTQAtuSaO+ShzFiWTvoMJLHyZ+Y39r8VMfHzwbU8MVBzQ4Wdn85+wlZl2TLGIlwg==", + "version": "1.5.354", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.354.tgz", + "integrity": "sha512-JaBHwWcfIdmSAfWM5l3uwjGd431j8YEMikZ+K/2nXVuBqJKyZ0f+2h4n4JY5AyNiZmnY9qQr2RU3v9DxDmHMNg==", "license": "ISC" }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true, + "license": "MIT" + }, + "node_modules/emojilib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/emojilib/-/emojilib-2.4.0.tgz", + "integrity": "sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==", + "dev": true, + "license": "MIT" + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/emoticon": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/emoticon/-/emoticon-4.1.0.tgz", + "integrity": "sha512-VWZfnxqwNcc51hIy/sbOdEem6D+cVtpPzEEtVAFdaas30+1dgkyaOQ4sQ6Bp0tOMqWO1v+HQfYaoodOkdhK6SQ==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/end-of-stream": { "version": "1.4.5", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", @@ -2577,6 +10098,32 @@ "once": "^1.4.0" } }, + "node_modules/enhanced-resolve": { + "version": "5.21.3", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.21.3.tgz", + "integrity": "sha512-QyL119InA+XXEkNLNTPCXPugSvOfhwv0JOlGNzvxs0hZaiHLNvXSpudUWsOlsXGWJh8G6ckCScEkVHfX3kw/2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.3.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/entities": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-8.0.0.tgz", + "integrity": "sha512-zwfzJecQ/Uej6tusMqwAqU/6KL2XaB2VZ2Jg54Je6ahNBGNH6Ek6g3jjNCF0fG9EWQKGZNddNjU5F1ZQn/sBnA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=20.19.0" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/env-paths": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-4.0.0.tgz", @@ -2688,9 +10235,9 @@ } }, "node_modules/es-iterator-helpers": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.2.tgz", - "integrity": "sha512-BrUQ0cPTB/IwXj23HtwHjS9n7O4h9FX94b4xc5zlTHxeLgTAdzYUDyy6KdExAl9lbN5rtfe44xpjpmj9grxs5w==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.3.1.tgz", + "integrity": "sha512-zWwRvqWiuBPr0muUG/78cW3aHROFCNIQ3zpmYDpwdbnt2m+xlNyRWpHBpa2lJjSBit7BQ+RXA1iwbSmu5yJ/EQ==", "license": "MIT", "dependencies": { "call-bind": "^1.0.8", @@ -2708,12 +10255,20 @@ "has-symbols": "^1.1.0", "internal-slot": "^1.1.0", "iterator.prototype": "^1.1.5", + "math-intrinsics": "^1.1.0", "safe-array-concat": "^1.1.3" }, "engines": { "node": ">= 0.4" } }, + "node_modules/es-module-lexer": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.1.0.tgz", + "integrity": "sha512-n27zTYMjYu1aj4MjCWzSP7G9r75utsaoc8m61weK+W8JMBGGQybd43GstCXZ3WNmSFtGT9wi59qQTW6mhTR5LQ==", + "dev": true, + "license": "MIT" + }, "node_modules/es-object-atoms": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", @@ -2770,6 +10325,40 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/esast-util-from-estree": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/esast-util-from-estree/-/esast-util-from-estree-2.0.0.tgz", + "integrity": "sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-visit": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/esast-util-from-js": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/esast-util-from-js/-/esast-util-from-js-2.0.1.tgz", + "integrity": "sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "acorn": "^8.0.0", + "esast-util-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/escalade": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", @@ -2779,6 +10368,26 @@ "node": ">=6" } }, + "node_modules/escape-goat": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-4.0.0.tgz", + "integrity": "sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true, + "license": "MIT" + }, "node_modules/escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", @@ -2792,24 +10401,24 @@ } }, "node_modules/eslint": { - "version": "9.39.3", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.3.tgz", - "integrity": "sha512-VmQ+sifHUbI/IcSopBCF/HO3YiHQx/AVd3UVyYL6weuwW+HvON9VYn5l6Zl1WZzPWXPNZrSQpxwkkZ/VuvJZzg==", + "version": "9.39.4", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.4.tgz", + "integrity": "sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ==", "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.21.1", + "@eslint/config-array": "^0.21.2", "@eslint/config-helpers": "^0.4.2", "@eslint/core": "^0.17.0", - "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.39.3", + "@eslint/eslintrc": "^3.3.5", + "@eslint/js": "9.39.4", "@eslint/plugin-kit": "^0.4.1", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", - "ajv": "^6.12.4", + "ajv": "^6.14.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.6", "debug": "^4.3.2", @@ -2828,7 +10437,7 @@ "is-glob": "^4.0.0", "json-stable-stringify-without-jsonify": "^1.0.1", "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", + "minimatch": "^3.1.5", "natural-compare": "^1.4.0", "optionator": "^0.9.3" }, @@ -2929,22 +10538,6 @@ "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" } }, - "node_modules/eslint-plugin-import/node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "license": "MIT" - }, - "node_modules/eslint-plugin-import/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, "node_modules/eslint-plugin-import/node_modules/debug": { "version": "3.2.7", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", @@ -2954,18 +10547,6 @@ "ms": "^2.1.1" } }, - "node_modules/eslint-plugin-import/node_modules/minimatch": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.4.tgz", - "integrity": "sha512-twmL+S8+7yIsE9wsqgzU3E8/LumN3M3QELrBZ20OdmQ9jB2JvW5oZtBEmft84k/Gs5CG9mqtWc6Y9vW+JEzGxw==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/eslint-plugin-import/node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", @@ -2976,13 +10557,13 @@ } }, "node_modules/eslint-plugin-lit": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-lit/-/eslint-plugin-lit-2.2.1.tgz", - "integrity": "sha512-mnqqwpWF4PBF/YjlGt9mbHwrWCGMtaqdpnqISv3nGcTl8iStaAt9UGieMY3i8vwKfSSWtkEfBZUcRKFGys6yiw==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-lit/-/eslint-plugin-lit-2.3.1.tgz", + "integrity": "sha512-wAqDOOWQzUoY5uK124ZR+h7Snx0+KdZd3Knv6133gRHEcu03jbqnouK4GBwVl6PkGOkNy40zSchOp9VbBh4yHg==", "license": "MIT", "dependencies": { - "parse5": "^6.0.1", - "parse5-htmlparser2-tree-adapter": "^6.0.1" + "parse5": "^8.0.1", + "parse5-htmlparser2-tree-adapter": "^8.0.1" }, "engines": { "node": ">= 18" @@ -3024,9 +10605,9 @@ } }, "node_modules/eslint-plugin-react-hooks": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-7.0.1.tgz", - "integrity": "sha512-O0d0m04evaNzEPoSW+59Mezf8Qt0InfgGIBJnpC0h3NH/WjUAR7BIKUfysC6todmtiZ/A0oUVS8Gce0WhBrHsA==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-7.1.1.tgz", + "integrity": "sha512-f2I7Gw6JbvCexzIInuSbZpfdQ44D7iqdWX01FKLvrPgqxoE7oMj8clOfto8U6vYiz4yd5oKu39rRSVOe1zRu0g==", "license": "MIT", "dependencies": { "@babel/core": "^7.24.4", @@ -3039,35 +10620,7 @@ "node": ">=18" }, "peerDependencies": { - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" - } - }, - "node_modules/eslint-plugin-react/node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "license": "MIT" - }, - "node_modules/eslint-plugin-react/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/eslint-plugin-react/node_modules/minimatch": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.4.tgz", - "integrity": "sha512-twmL+S8+7yIsE9wsqgzU3E8/LumN3M3QELrBZ20OdmQ9jB2JvW5oZtBEmft84k/Gs5CG9mqtWc6Y9vW+JEzGxw==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 || ^10.0.0" } }, "node_modules/eslint-plugin-react/node_modules/resolve": { @@ -3132,34 +10685,6 @@ } }, "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "license": "MIT" - }, - "node_modules/eslint/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/eslint/node_modules/eslint-visitor-keys": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", @@ -3171,27 +10696,55 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/eslint/node_modules/minimatch": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.4.tgz", - "integrity": "sha512-twmL+S8+7yIsE9wsqgzU3E8/LumN3M3QELrBZ20OdmQ9jB2JvW5oZtBEmft84k/Gs5CG9mqtWc6Y9vW+JEzGxw==", - "license": "ISC", "dependencies": { - "brace-expansion": "^1.1.7" + "color-convert": "^2.0.1" }, "engines": { - "node": "*" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/eslint/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/eslint/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, "node_modules/espree": { "version": "10.4.0", "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", @@ -3209,18 +10762,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, "node_modules/esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", @@ -3267,6 +10808,117 @@ "node": ">=4.0" } }, + "node_modules/estree-util-attach-comments": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-3.0.0.tgz", + "integrity": "sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-build-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/estree-util-build-jsx/-/estree-util-build-jsx-3.0.1.tgz", + "integrity": "sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "estree-walker": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-build-jsx/node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/estree-util-is-identifier-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz", + "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-scope": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/estree-util-scope/-/estree-util-scope-1.0.0.tgz", + "integrity": "sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-to-js": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/estree-util-to-js/-/estree-util-to-js-2.0.0.tgz", + "integrity": "sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "astring": "^1.8.0", + "source-map": "^0.7.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-value-to-estree": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/estree-util-value-to-estree/-/estree-util-value-to-estree-3.5.0.tgz", + "integrity": "sha512-aMV56R27Gv3QmfmF1MY12GWkGzzeAezAX+UplqHVASfjc9wNzI/X6hC0S9oxq61WT4aQesLGslWP9tKk6ghRZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/remcohaszing" + } + }, + "node_modules/estree-util-visit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-2.0.0.tgz", + "integrity": "sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/estree-walker": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", @@ -3282,6 +10934,197 @@ "node": ">=0.10.0" } }, + "node_modules/eta": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/eta/-/eta-2.2.0.tgz", + "integrity": "sha512-UVQ72Rqjy/ZKQalzV5dCCJP80GrmPrMxh6NlNf+erV6ObL0ZFkhCstWRawS85z3smdr3d2wXPsZEY7rDPfGd2g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "url": "https://github.com/eta-dev/eta?sponsor=1" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eval": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/eval/-/eval-0.1.8.tgz", + "integrity": "sha512-EzV94NYKoO09GLXGjXj9JIlXijVck4ONSr5wiCWDvhsvj5jxSrzTmRU/9C1DyB6uToszLs8aifA6NQ7lEQdvFw==", + "dev": true, + "dependencies": { + "@types/node": "*", + "require-like": ">= 0.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true, + "license": "MIT" + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/express": { + "version": "4.22.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.22.2.tgz", + "integrity": "sha512-IuL+Elrou2ZvCFHs18/CIzy2Nzvo25nZ1/D2eIZlz7c+QUayAcYoiM2BthCjs+EBHVpjYjcuLDAiCWgeIX3X1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "~1.20.5", + "content-disposition": "~0.5.4", + "content-type": "~1.0.4", + "cookie": "~0.7.1", + "cookie-signature": "~1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.3.1", + "fresh": "~0.5.2", + "http-errors": "~2.0.0", + "merge-descriptors": "1.0.3", + "methods": "~1.1.2", + "on-finished": "~2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "~0.1.12", + "proxy-addr": "~2.0.7", + "qs": "~6.15.1", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "~0.19.0", + "serve-static": "~1.16.2", + "setprototypeof": "1.2.0", + "statuses": "~2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/express/node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/express/node_modules/path-to-regexp": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.13.tgz", + "integrity": "sha512-A/AGNMFN3c8bOlvV9RreMdrv7jsmF9XIfDeCd87+I8RNg6s78BhJxMu69NEMHBSJFxKidViTEdruRwEk/WIKqA==", + "dev": true, + "license": "MIT" + }, + "node_modules/express/node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true, + "license": "MIT" + }, + "node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/fast-copy": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/fast-copy/-/fast-copy-4.0.2.tgz", @@ -3303,6 +11146,36 @@ "node": ">=6.0.0" } }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", @@ -3321,6 +11194,23 @@ "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", "license": "MIT" }, + "node_modules/fast-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.2.tgz", + "integrity": "sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, "node_modules/fastq": { "version": "1.20.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", @@ -3330,6 +11220,33 @@ "reusify": "^1.0.4" } }, + "node_modules/fault": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fault/-/fault-2.0.1.tgz", + "integrity": "sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "format": "^0.2.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/fdir": { "version": "6.5.0", "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", @@ -3359,6 +11276,112 @@ "node": ">=16.0.0" } }, + "node_modules/file-loader": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", + "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/file-loader/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz", + "integrity": "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "on-finished": "~2.4.1", + "parseurl": "~1.3.3", + "statuses": "~2.0.2", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/find-cache-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", + "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", + "dev": true, + "license": "MIT", + "dependencies": { + "common-path-prefix": "^3.0.0", + "pkg-dir": "^7.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -3375,6 +11398,16 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, + "license": "BSD-3-Clause", + "bin": { + "flat": "cli.js" + } + }, "node_modules/flat-cache": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", @@ -3389,11 +11422,32 @@ } }, "node_modules/flatted": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.1.tgz", - "integrity": "sha512-IxfVbRFVlV8V/yRaGzk0UVIcsKKHMSfYw66T/u4nTwlWteQePsxe//LjudR1AMX4tZW3WFCh3Zqa/sjlqpbURQ==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz", + "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==", "license": "ISC" }, + "node_modules/follow-redirects": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz", + "integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, "node_modules/for-each": { "version": "0.3.5", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", @@ -3409,6 +11463,25 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/form-data-encoder": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz", + "integrity": "sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.17" + } + }, + "node_modules/format": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", + "integrity": "sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==", + "dev": true, + "engines": { + "node": ">=0.4.x" + } + }, "node_modules/format-imports": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/format-imports/-/format-imports-4.0.8.tgz", @@ -3468,9 +11541,9 @@ } }, "node_modules/format-imports/node_modules/@eslint/eslintrc/node_modules/minimatch": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.4.tgz", - "integrity": "sha512-twmL+S8+7yIsE9wsqgzU3E8/LumN3M3QELrBZ20OdmQ9jB2JvW5oZtBEmft84k/Gs5CG9mqtWc6Y9vW+JEzGxw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" @@ -3488,22 +11561,64 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/format-imports/node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "license": "MIT" - }, - "node_modules/format-imports/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "node_modules/format-imports/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/format-imports/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/format-imports/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/format-imports/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/format-imports/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, "node_modules/format-imports/node_modules/doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", @@ -3588,10 +11703,22 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/format-imports/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/format-imports/node_modules/eslint/node_modules/minimatch": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.4.tgz", - "integrity": "sha512-twmL+S8+7yIsE9wsqgzU3E8/LumN3M3QELrBZ20OdmQ9jB2JvW5oZtBEmft84k/Gs5CG9mqtWc6Y9vW+JEzGxw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" @@ -3658,19 +11785,84 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/format-imports/node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "node_modules/format-imports/node_modules/minimatch": { + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", + "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/format-imports/node_modules/minimatch/node_modules/brace-expansion": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", + "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/format-imports/node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true, "license": "MIT", "engines": { - "node": ">= 4" + "node": ">= 0.6" + } + }, + "node_modules/fraction.js": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-5.3.4.tgz", + "integrity": "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" } }, "node_modules/fs-extra": { - "version": "11.3.3", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.3.tgz", - "integrity": "sha512-VWSRii4t0AFm6ixFFmLLx1t7wS1gh+ckoa84aOeapGum0h+EZd1EhEumSB+ZdDLnEPuucsVB9oB7cxJHap6Afg==", + "version": "11.3.4", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.4.tgz", + "integrity": "sha512-CTXd6rk/M3/ULNQj8FBqBWHYBVYybQ3VPBw0xGKFe3tuH7ytT6ACnvzpIQ3UZtB8yvUKC2cXn1a+x+5EVQLovA==", "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", @@ -3687,6 +11879,21 @@ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "license": "ISC" }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", @@ -3776,6 +11983,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-own-enumerable-property-symbols": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", + "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==", + "dev": true, + "license": "ISC" + }, "node_modules/get-proto": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", @@ -3789,6 +12003,19 @@ "node": ">= 0.4" } }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/get-symbol-description": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", @@ -3815,6 +12042,13 @@ "url": "https://github.com/fisker/git-hooks-list?sponsor=1" } }, + "node_modules/github-slugger": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-1.5.0.tgz", + "integrity": "sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==", + "dev": true, + "license": "ISC" + }, "node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -3848,34 +12082,30 @@ "node": ">=10.13.0" } }, - "node_modules/glob/node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "license": "MIT" - }, - "node_modules/glob/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/glob/node_modules/minimatch": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.4.tgz", - "integrity": "sha512-twmL+S8+7yIsE9wsqgzU3E8/LumN3M3QELrBZ20OdmQ9jB2JvW5oZtBEmft84k/Gs5CG9mqtWc6Y9vW+JEzGxw==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, + "node_modules/glob-to-regex.js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/glob-to-regex.js/-/glob-to-regex.js-1.2.0.tgz", + "integrity": "sha512-QMwlOQKU/IzqMUOAZWubUOT8Qft+Y0KQWnX9nK3ch0CJg0tTp4TvGZsTfudYKv2NzoQSyPcnA6TYeIQ3jGichQ==", + "dev": true, + "license": "Apache-2.0", "engines": { - "node": "*" + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true, + "license": "BSD-2-Clause" + }, "node_modules/global-directory": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/global-directory/-/global-directory-5.0.0.tgz", @@ -3891,6 +12121,32 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/global-dirs": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", + "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ini": "2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/global-dirs/node_modules/ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, "node_modules/globals": { "version": "14.0.0", "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", @@ -3919,6 +12175,27 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/gopd": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", @@ -3931,6 +12208,45 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/got": { + "version": "12.6.1", + "resolved": "https://registry.npmjs.org/got/-/got-12.6.1.tgz", + "integrity": "sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sindresorhus/is": "^5.2.0", + "@szmarczak/http-timer": "^5.0.1", + "cacheable-lookup": "^7.0.0", + "cacheable-request": "^10.2.8", + "decompress-response": "^6.0.0", + "form-data-encoder": "^2.1.2", + "get-stream": "^6.0.1", + "http2-wrapper": "^2.1.10", + "lowercase-keys": "^3.0.0", + "p-cancelable": "^3.0.0", + "responselike": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sindresorhus/got?sponsor=1" + } + }, + "node_modules/got/node_modules/@sindresorhus/is": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.6.0.tgz", + "integrity": "sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", @@ -3943,6 +12259,69 @@ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "license": "MIT" }, + "node_modules/gray-matter": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", + "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "js-yaml": "^3.13.1", + "kind-of": "^6.0.2", + "section-matter": "^1.0.0", + "strip-bom-string": "^1.0.0" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/gray-matter/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/gray-matter/node_modules/js-yaml": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", + "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/gzip-size": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", + "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "duplexer": "^0.1.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true, + "license": "MIT" + }, "node_modules/has-bigints": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", @@ -4018,6 +12397,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/has-yarn": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-3.0.0.tgz", + "integrity": "sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/hasown": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", @@ -4030,6 +12422,212 @@ "node": ">= 0.4" } }, + "node_modules/hast-util-from-parse5": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.3.tgz", + "integrity": "sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "hastscript": "^9.0.0", + "property-information": "^7.0.0", + "vfile": "^6.0.0", + "vfile-location": "^5.0.0", + "web-namespaces": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-parse-selector": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz", + "integrity": "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-raw": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-9.1.0.tgz", + "integrity": "sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "@ungap/structured-clone": "^1.0.0", + "hast-util-from-parse5": "^8.0.0", + "hast-util-to-parse5": "^8.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "parse5": "^7.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-raw/node_modules/entities": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", + "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/hast-util-raw/node_modules/parse5": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", + "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "entities": "^6.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/hast-util-to-estree": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-3.1.3.tgz", + "integrity": "sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-attach-comments": "^3.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-js": "^1.0.0", + "unist-util-position": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-jsx-runtime": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.6.tgz", + "integrity": "sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-js": "^1.0.0", + "unist-util-position": "^5.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-parse5": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-8.0.1.tgz", + "integrity": "sha512-MlWT6Pjt4CG9lFCjiz4BH7l9wmrMkfkJYCxFwKQic8+RTZgWPuWxwAfjJElsXkex7DJjfSJsQIt931ilUgmwdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-whitespace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", + "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hastscript": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-9.0.1.tgz", + "integrity": "sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-parse-selector": "^4.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "license": "MIT", + "bin": { + "he": "bin/he" + } + }, "node_modules/help-me": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/help-me/-/help-me-5.0.0.tgz", @@ -4051,25 +12649,471 @@ "hermes-estree": "0.25.1" } }, + "node_modules/history": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz", + "integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.1.2", + "loose-envify": "^1.2.0", + "resolve-pathname": "^3.0.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0", + "value-equal": "^1.0.1" + } + }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "react-is": "^16.7.0" + } + }, "node_modules/hosted-git-info": { "version": "2.8.9", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "license": "ISC" }, + "node_modules/hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "node_modules/hpack.js/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/hpack.js/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/hpack.js/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/hpack.js/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true, + "license": "MIT" + }, + "node_modules/html-minifier-terser": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-7.2.0.tgz", + "integrity": "sha512-tXgn3QfqPIpGl9o+K5tpcj3/MN4SfLtsx2GWwBC3SSd0tXQGyF3gsSqad8loJgKZGM3ZxbYDd5yhiBIdWpmvLA==", + "dev": true, + "license": "MIT", + "dependencies": { + "camel-case": "^4.1.2", + "clean-css": "~5.3.2", + "commander": "^10.0.0", + "entities": "^4.4.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.15.1" + }, + "bin": { + "html-minifier-terser": "cli.js" + }, + "engines": { + "node": "^14.13.1 || >=16.0.0" + } + }, + "node_modules/html-minifier-terser/node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/html-minifier-terser/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/html-tags": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", + "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/html-void-elements": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", + "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/html-webpack-plugin": { + "version": "5.6.7", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.7.tgz", + "integrity": "sha512-md+vXtdCAe60s1k6AU3dUyMJnDxUyQAwfwPKoLisvgUF1IXjtlLsk2se54+qfL9Mdm26bbwvjJybpNx48NKRLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", + "lodash": "^4.17.21", + "pretty-error": "^4.0.0", + "tapable": "^2.0.0" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/html-webpack-plugin" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "webpack": "^5.20.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/html-webpack-plugin/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "node_modules/html-webpack-plugin/node_modules/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", + "dev": true, + "license": "MIT", + "dependencies": { + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", + "he": "^1.2.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.10.0" + }, + "bin": { + "html-minifier-terser": "cli.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "MIT", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "node_modules/htmlparser2/node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" + }, + "node_modules/htmlparser2/node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/htmlparser2/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "license": "BSD-2-Clause", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", + "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", + "dev": true, + "license": "MIT" + }, + "node_modules/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/http-parser-js": { + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.10.tgz", + "integrity": "sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==", + "dev": true, + "license": "MIT" + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-proxy-middleware": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.9.tgz", + "integrity": "sha512-c1IyJYLYppU574+YI7R4QyX2ystMtVXZwIdzazUIPIJsHuWNd+mho2j+bKoHftndicGj9yh+xjd+l0yj7VeT1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } + } + }, + "node_modules/http-proxy-middleware/node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/http2-wrapper": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.1.tgz", + "integrity": "sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.2.0" + }, + "engines": { + "node": ">=10.19.0" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/hyperdyperid": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/hyperdyperid/-/hyperdyperid-1.2.0.tgz", + "integrity": "sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.18" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, "node_modules/ignore": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", - "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "license": "MIT", "engines": { "node": ">= 4" } }, + "node_modules/image-size": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-2.0.2.tgz", + "integrity": "sha512-IRqXKlaXwgSMAMtpNzZa1ZAe8m+Sa1770Dhk8VkSsP9LS+iHD62Zd8FQKs8fbPiagBE7BzoFX23cxFnwshpV6w==", + "dev": true, + "license": "MIT", + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=16.x" + } + }, "node_modules/immutable": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.4.tgz", - "integrity": "sha512-p6u1bG3YSnINT5RQmx/yRZBpenIl30kVxkTLDyHLIMk0gict704Q9n+thfDI7lTRm9vXdDYutVzXhzcThxTnXA==", + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.5.tgz", + "integrity": "sha512-t7xcm2siw+hlUM68I+UEOK+z84RzmN59as9DZ7P1l0994DKUWV7UXBMQZVxaoMSRQ+PBZbHCOoBt7a2wxOMt+A==", "license": "MIT" }, "node_modules/import-fresh": { @@ -4088,6 +13132,37 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/import-fresh/node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/import-lazy": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", + "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/import-meta-resolve": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.2.0.tgz", @@ -4107,6 +13182,16 @@ "node": ">=0.8.19" } }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -4133,6 +13218,13 @@ "node": "^20.17.0 || >=22.9.0" } }, + "node_modules/inline-style-parser": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.7.tgz", + "integrity": "sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==", + "dev": true, + "license": "MIT" + }, "node_modules/internal-slot": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", @@ -4147,6 +13239,52 @@ "node": ">= 0.4" } }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "license": "MIT", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/ipaddr.js": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.4.0.tgz", + "integrity": "sha512-9VGk3HGanVE6JoZXHiCpnGy5X0jYDnN4EA4lntFPj+1vIWlFhIylq2CrrCOJH9EAhc5CYhq18F2Av2tgoAPsYQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/is-alphabetical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", + "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-alphanumerical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", + "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-alphabetical": "^2.0.0", + "is-decimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/is-array-buffer": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", @@ -4204,6 +13342,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/is-boolean-object": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", @@ -4247,6 +13398,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-ci": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", + "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ci-info": "^3.2.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, "node_modules/is-core-module": { "version": "2.16.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", @@ -4295,6 +13459,43 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-decimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", + "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -4319,6 +13520,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/is-generator-function": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", @@ -4350,6 +13561,69 @@ "node": ">=0.10.0" } }, + "node_modules/is-hexadecimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", + "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-inside-container/node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "dev": true, + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-installed-globally": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-map": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", @@ -4374,6 +13648,42 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-network-error": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.3.2.tgz", + "integrity": "sha512-PhBY86zaxNZUuWP6h13Vu5oFe0XY6/UlKzQnYFELzGVHygP3MxmvTfYSG7GN3aIab/iWudSMgjSnG9Dq+nHrgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-npm": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-6.1.0.tgz", + "integrity": "sha512-O2z4/kNgyjhQwVR1Wpkbfc19JIhggF97NZNCpWTnjH7kVcZMUrnut9XSN7txI7VdyIYk5ZatOq3zvSuWpU8hoA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, "node_modules/is-number-object": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", @@ -4390,6 +13700,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-path-inside": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", @@ -4411,6 +13731,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "license": "MIT", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-potential-custom-element-name": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", @@ -4435,6 +13768,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-safe-filename": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-safe-filename/-/is-safe-filename-0.1.1.tgz", @@ -4474,6 +13817,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-string": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", @@ -4522,6 +13878,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "dev": true, + "license": "MIT" + }, "node_modules/is-valid-element-name": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-valid-element-name/-/is-valid-element-name-1.0.0.tgz", @@ -4574,6 +13937,29 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-yarn-global": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.4.1.tgz", + "integrity": "sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + } + }, "node_modules/isarray": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", @@ -4586,6 +13972,16 @@ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "license": "ISC" }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/iterator.prototype": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", @@ -4603,6 +13999,146 @@ "node": ">= 0.4" } }, + "node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-util/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-util/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-util/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-util/node_modules/picomatch": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jiti": { + "version": "1.21.7", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", + "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", + "devOptional": true, + "license": "MIT", + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/joi": { + "version": "17.13.3", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.13.3.tgz", + "integrity": "sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/hoek": "^9.3.0", + "@hapi/topo": "^5.1.0", + "@sideway/address": "^4.1.5", + "@sideway/formula": "^3.0.1", + "@sideway/pinpoint": "^2.0.0" + } + }, "node_modules/joycon": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz", @@ -4660,6 +14196,13 @@ "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", "license": "MIT" }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true, + "license": "MIT" + }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -4720,6 +14263,63 @@ "json-buffer": "3.0.1" } }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/latest-version": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-7.0.0.tgz", + "integrity": "sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==", + "dev": true, + "license": "MIT", + "dependencies": { + "package-json": "^8.1.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/launch-editor": { + "version": "2.13.2", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.13.2.tgz", + "integrity": "sha512-4VVDnbOpLXy/s8rdRCSXb+zfMeFR0WlJWpET1iA9CQdlZDfwyLjUuGQzXU4VeOoey6AicSAluWan7Etga6Kcmg==", + "dev": true, + "license": "MIT", + "dependencies": { + "picocolors": "^1.1.1", + "shell-quote": "^1.8.3" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -4733,6 +14333,26 @@ "node": ">= 0.8.0" } }, + "node_modules/lilconfig": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true, + "license": "MIT" + }, "node_modules/load-json-file": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", @@ -4748,6 +14368,35 @@ "node": ">=4" } }, + "node_modules/loader-runner": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.2.tgz", + "integrity": "sha512-DFEqQ3ihfS9blba08cLfYf1NRAIEm+dDjic073DRDc3/JspI/8wYmtDsHwd3+4hwvdxSK7PGaElfTmm0awWJ4w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.11.5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, "node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -4763,12 +14412,40 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/lodash": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", + "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true, + "license": "MIT" + }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "license": "MIT" }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", + "dev": true, + "license": "MIT" + }, "node_modules/log4js": { "version": "6.9.1", "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.9.1.tgz", @@ -4785,6 +14462,17 @@ "node": ">=8.0" } }, + "node_modules/longest-streak": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", + "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", @@ -4797,6 +14485,29 @@ "loose-envify": "cli.js" } }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/lowercase-keys": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", + "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", @@ -4815,6 +14526,30 @@ "@jridgewell/sourcemap-codec": "^1.5.5" } }, + "node_modules/markdown-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-2.0.0.tgz", + "integrity": "sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/markdown-table": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.4.tgz", + "integrity": "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/math-intrinsics": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", @@ -4824,6 +14559,478 @@ "node": ">= 0.4" } }, + "node_modules/mdast-util-directive": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-directive/-/mdast-util-directive-3.1.0.tgz", + "integrity": "sha512-I3fNFt+DHmpWCYAT7quoM6lHf9wuqtI+oCOfvILnoicNIqjh5E3dEJWiXuYME2gNe8vl1iMQwyUHa7bgFmak6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-find-and-replace": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.2.tgz", + "integrity": "sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "escape-string-regexp": "^5.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mdast-util-from-markdown": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.3.tgz", + "integrity": "sha512-W4mAWTvSlKvf8L6J+VN9yLSqQ9AOAAvHuoDAmPkz4dHf553m5gVj2ejadHJhoJmcmxEnOv6Pa8XJhpxE93kb8Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark": "^4.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-from-markdown/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/mdast-util-frontmatter": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-frontmatter/-/mdast-util-frontmatter-2.0.1.tgz", + "integrity": "sha512-LRqI9+wdgC25P0URIJY9vwocIzCcksduHQ9OF2joxQoyTNVduwLAFUzjoopuRJbJAReaKrNQKAZKL3uCMugWJA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "escape-string-regexp": "^5.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "micromark-extension-frontmatter": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-frontmatter/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mdast-util-gfm": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.1.0.tgz", + "integrity": "sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-gfm-autolink-literal": "^2.0.0", + "mdast-util-gfm-footnote": "^2.0.0", + "mdast-util-gfm-strikethrough": "^2.0.0", + "mdast-util-gfm-table": "^2.0.0", + "mdast-util-gfm-task-list-item": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-autolink-literal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.1.tgz", + "integrity": "sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "ccount": "^2.0.0", + "devlop": "^1.0.0", + "mdast-util-find-and-replace": "^3.0.0", + "micromark-util-character": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-autolink-literal/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm-autolink-literal/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/mdast-util-gfm-footnote": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.1.0.tgz", + "integrity": "sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-strikethrough": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz", + "integrity": "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-table": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz", + "integrity": "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "markdown-table": "^3.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-task-list-item": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz", + "integrity": "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz", + "integrity": "sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==", + "dev": true, + "license": "MIT", + "dependencies": { + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-expression": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.1.tgz", + "integrity": "sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-jsx": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.2.0.tgz", + "integrity": "sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdxjs-esm": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz", + "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-phrasing": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", + "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-hast": { + "version": "13.2.1", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.1.tgz", + "integrity": "sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@ungap/structured-clone": "^1.0.0", + "devlop": "^1.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "trim-lines": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-markdown": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz", + "integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "longest-streak": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "unist-util-visit": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", + "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdn-data": { + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", + "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memfs": { + "version": "4.57.2", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.57.2.tgz", + "integrity": "sha512-2nWzSsJzrukurSDna4Z0WywuScK4Id3tSKejgu74u8KCdW4uNrseKRSIDg75C6Yw5ZRqBe0F0EtMNlTbUq8bAQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/fs-core": "4.57.2", + "@jsonjoy.com/fs-fsa": "4.57.2", + "@jsonjoy.com/fs-node": "4.57.2", + "@jsonjoy.com/fs-node-builtins": "4.57.2", + "@jsonjoy.com/fs-node-to-fsa": "4.57.2", + "@jsonjoy.com/fs-node-utils": "4.57.2", + "@jsonjoy.com/fs-print": "4.57.2", + "@jsonjoy.com/fs-snapshot": "4.57.2", + "@jsonjoy.com/json-pack": "^1.11.0", + "@jsonjoy.com/util": "^1.9.0", + "glob-to-regex.js": "^1.0.1", + "thingies": "^2.5.0", + "tree-dump": "^1.0.3", + "tslib": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, "node_modules/memorystream": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", @@ -4832,19 +15039,2045 @@ "node": ">= 0.10.0" } }, - "node_modules/minimatch": { - "version": "10.2.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.3.tgz", - "integrity": "sha512-Rwi3pnapEqirPSbWbrZaa6N3nmqq4Xer/2XooiOKyV3q12ML06f7MOuc5DVH8ONZIFhwIYQ3yzPH4nt7iWHaTg==", - "license": "BlueOak-1.0.0", - "dependencies": { - "brace-expansion": "^5.0.2" - }, + "node_modules/merge-descriptors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true, + "license": "MIT" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", "engines": { - "node": "18 || 20 || >=22" + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromark": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz", + "integrity": "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-core-commonmark": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz", + "integrity": "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-destination": "^2.0.0", + "micromark-factory-label": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-title": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-html-tag-name": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-core-commonmark/node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-core-commonmark/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-core-commonmark/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-extension-directive": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/micromark-extension-directive/-/micromark-extension-directive-3.0.2.tgz", + "integrity": "sha512-wjcXHgk+PPdmvR58Le9d7zQYWy+vKEU9Se44p2CrCDPiLr2FMyiT4Fyb5UFKFC66wGB3kPlgD7q3TnoqPS7SZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "parse-entities": "^4.0.0" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-directive/node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-directive/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-directive/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-extension-frontmatter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-frontmatter/-/micromark-extension-frontmatter-2.0.0.tgz", + "integrity": "sha512-C4AkuM3dA58cgZha7zVnuVxBhDsbttIMiytjgsM2XbHAB2faRVaHRle40558FBN+DJcrLNCoqG5mlrpdU4cRtg==", + "dev": true, + "license": "MIT", + "dependencies": { + "fault": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-frontmatter/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-frontmatter/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-extension-gfm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz", + "integrity": "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "micromark-extension-gfm-autolink-literal": "^2.0.0", + "micromark-extension-gfm-footnote": "^2.0.0", + "micromark-extension-gfm-strikethrough": "^2.0.0", + "micromark-extension-gfm-table": "^2.0.0", + "micromark-extension-gfm-tagfilter": "^2.0.0", + "micromark-extension-gfm-task-list-item": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-autolink-literal": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz", + "integrity": "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==", + "dev": true, + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-autolink-literal/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm-autolink-literal/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-extension-gfm-footnote": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz", + "integrity": "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==", + "dev": true, + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-extension-gfm-strikethrough": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz", + "integrity": "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==", + "dev": true, + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-strikethrough/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-extension-gfm-table": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.1.tgz", + "integrity": "sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==", + "dev": true, + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-table/node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm-table/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm-table/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-extension-gfm-tagfilter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz", + "integrity": "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-task-list-item": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz", + "integrity": "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==", + "dev": true, + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-task-list-item/node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm-task-list-item/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm-task-list-item/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-extension-mdx-expression": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-3.0.1.tgz", + "integrity": "sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-mdx-expression": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdx-expression/node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdx-expression/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdx-expression/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-extension-mdx-jsx": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.2.tgz", + "integrity": "sha512-e5+q1DjMh62LZAJOnDraSSbDMvGJ8x3cbjygy2qFEi7HCeUT4BDKCvMozPozcD6WmOt6sVvYDNBKhFSz3kjOVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "micromark-factory-mdx-expression": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdx-jsx/node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdx-jsx/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdx-jsx/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-extension-mdx-md": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-2.0.0.tgz", + "integrity": "sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdxjs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-3.0.0.tgz", + "integrity": "sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.0.0", + "acorn-jsx": "^5.0.0", + "micromark-extension-mdx-expression": "^3.0.0", + "micromark-extension-mdx-jsx": "^3.0.0", + "micromark-extension-mdx-md": "^2.0.0", + "micromark-extension-mdxjs-esm": "^3.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdxjs-esm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-3.0.0.tgz", + "integrity": "sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdxjs-esm/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdxjs-esm/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-factory-destination": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz", + "integrity": "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-destination/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-destination/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-factory-label": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz", + "integrity": "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-label/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-label/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-factory-mdx-expression": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-2.0.3.tgz", + "integrity": "sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + } + }, + "node_modules/micromark-factory-mdx-expression/node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-mdx-expression/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-mdx-expression/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-factory-space": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-1.1.0.tgz", + "integrity": "sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-factory-space/node_modules/micromark-util-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.1.0.tgz", + "integrity": "sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-factory-title": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz", + "integrity": "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-title/node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-title/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-title/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-factory-whitespace": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz", + "integrity": "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-whitespace/node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-whitespace/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-whitespace/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-character": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-1.2.0.tgz", + "integrity": "sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-character/node_modules/micromark-util-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.1.0.tgz", + "integrity": "sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-chunked": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz", + "integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-chunked/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-classify-character": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz", + "integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-classify-character/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-classify-character/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-combine-extensions": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz", + "integrity": "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-chunked": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz", + "integrity": "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-numeric-character-reference/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-decode-string": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz", + "integrity": "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-string/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-string/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-encode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", + "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-events-to-acorn": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-2.0.3.tgz", + "integrity": "sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "estree-util-visit": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "vfile-message": "^4.0.0" + } + }, + "node_modules/micromark-util-events-to-acorn/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-html-tag-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz", + "integrity": "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-normalize-identifier": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz", + "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-normalize-identifier/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-resolve-all": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz", + "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-sanitize-uri": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", + "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-sanitize-uri/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-sanitize-uri/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-subtokenize": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz", + "integrity": "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-subtokenize/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-symbol": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.1.0.tgz", + "integrity": "sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-types": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz", + "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark/node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark/node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark/node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/micromatch/node_modules/picomatch": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", + "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.18", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", + "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "~1.33.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/mimic-response": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz", + "integrity": "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mini-css-extract-plugin": { + "version": "2.10.2", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.10.2.tgz", + "integrity": "sha512-AOSS0IdEB95ayVkxn5oGzNQwqAi2J0Jb/kKm43t7H73s8+f5873g0yuj0PNvK4dO75mu5DHg4nlgp4k6Kga8eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "schema-utils": "^4.0.0", + "tapable": "^2.2.1" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true, + "license": "ISC" + }, + "node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" } }, "node_modules/minimist": { @@ -4856,12 +17089,36 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/mrmime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", + "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "license": "MIT" }, + "node_modules/multicast-dns": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", + "dev": true, + "license": "MIT", + "dependencies": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" + } + }, "node_modules/nanoid": { "version": "3.3.11", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", @@ -4886,12 +17143,40 @@ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "license": "MIT" }, + "node_modules/negotiator": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", + "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true, + "license": "MIT" + }, "node_modules/nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "license": "MIT" }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dev": true, + "license": "MIT", + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, "node_modules/node-cache": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/node-cache/-/node-cache-5.1.2.tgz", @@ -4904,6 +17189,22 @@ "node": ">= 8.0.0" } }, + "node_modules/node-emoji": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-2.2.0.tgz", + "integrity": "sha512-Z3lTE9pLaJF47NyMhd4ww1yFTAP8YhYI8SleJiHzM46Fgpm5cnNzSl9XfzFNqbaz+VlJrIj3fXQ4DeN1Rjm6cw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sindresorhus/is": "^4.6.0", + "char-regex": "^1.0.2", + "emojilib": "^2.4.0", + "skin-tone": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/node-exports-info": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/node-exports-info/-/node-exports-info-1.6.0.tgz", @@ -4932,9 +17233,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.27", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", - "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", + "version": "2.0.36", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.36.tgz", + "integrity": "sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA==", "license": "MIT" }, "node_modules/normalize-package-data": { @@ -4958,6 +17259,29 @@ "semver": "bin/semver" } }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.1.1.tgz", + "integrity": "sha512-JYc0DPlpGWB40kH5g07gGTrYuMqV653k3uBKY6uITPWds3M0ov3GaWGp9lbE3Bzngx8+XkfzgvASb9vk9JDFXQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/npm-run-all": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", @@ -4983,34 +17307,6 @@ "node": ">= 4" } }, - "node_modules/npm-run-all/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/npm-run-all/node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "license": "MIT" - }, - "node_modules/npm-run-all/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, "node_modules/npm-run-all/node_modules/chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -5025,21 +17321,6 @@ "node": ">=4" } }, - "node_modules/npm-run-all/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "license": "MIT", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/npm-run-all/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "license": "MIT" - }, "node_modules/npm-run-all/node_modules/cross-spawn": { "version": "6.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.6.tgz", @@ -5074,18 +17355,6 @@ "node": ">=4" } }, - "node_modules/npm-run-all/node_modules/minimatch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", - "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/npm-run-all/node_modules/path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", @@ -5149,6 +17418,72 @@ "which": "bin/which" } }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/null-loader": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/null-loader/-/null-loader-4.0.1.tgz", + "integrity": "sha512-pxqVbi4U6N26lq+LmgIbB5XATP0VdZKOG25DhHi8btMmJJefGArFyDg1yc4U3hWCJbMqSrw0qyrz1UQX+qYXqg==", + "dev": true, + "license": "MIT", + "dependencies": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/null-loader/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -5264,6 +17599,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true, + "license": "MIT" + }, "node_modules/on-exit-leak-free": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz", @@ -5273,6 +17615,29 @@ "node": ">=14.0.0" } }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.1.0.tgz", + "integrity": "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -5282,6 +17647,50 @@ "wrappy": "1" } }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/opener": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", + "dev": true, + "license": "(WTFPL OR MIT)", + "bin": { + "opener": "bin/opener-bin.js" + } + }, "node_modules/optionator": { "version": "0.9.4", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", @@ -5316,6 +17725,26 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/p-cancelable": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", + "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.20" + } + }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -5346,18 +17775,127 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, "license": "MIT", "dependencies": { - "callsites": "^3.0.0" + "aggregate-error": "^3.0.0" }, "engines": { - "node": ">=6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/p-queue": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", + "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "eventemitter3": "^4.0.4", + "p-timeout": "^3.2.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-retry": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-6.2.1.tgz", + "integrity": "sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/retry": "0.12.2", + "is-network-error": "^1.0.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-timeout": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", + "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-finally": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/package-json": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-8.1.1.tgz", + "integrity": "sha512-cbH9IAIJHNj9uXi196JVsRlt7cHKak6u/e6AkL/bkRelZ7rlL3X1YKxsZwa36xipOEKAsdtmaG6aAJoM1fx2zA==", + "dev": true, + "license": "MIT", + "dependencies": { + "got": "^12.1.0", + "registry-auth-token": "^5.0.1", + "registry-url": "^6.0.0", + "semver": "^7.3.7" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dev": true, + "license": "MIT", + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/parse-entities": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz", + "integrity": "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "character-entities-legacy": "^3.0.0", + "character-reference-invalid": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "is-alphanumerical": "^2.0.0", + "is-decimal": "^2.0.0", + "is-hexadecimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/parse-entities/node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "dev": true, + "license": "MIT" + }, "node_modules/parse-json": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", @@ -5371,19 +17909,57 @@ "node": ">=4" } }, - "node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "license": "MIT" + "node_modules/parse-numeric-range": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/parse-numeric-range/-/parse-numeric-range-1.3.0.tgz", + "integrity": "sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==", + "dev": true, + "license": "ISC" }, - "node_modules/parse5-htmlparser2-tree-adapter": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", - "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", + "node_modules/parse5": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-8.0.1.tgz", + "integrity": "sha512-z1e/HMG90obSGeidlli3hj7cbocou0/wa5HacvI3ASx34PecNjNQeaHNo5WIZpWofN9kgkqV1q5YvXe3F0FoPw==", "license": "MIT", "dependencies": { - "parse5": "^6.0.1" + "entities": "^8.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-8.0.1.tgz", + "integrity": "sha512-aqkH+xQxX+QGZtP5GIMmqqp16Y0v9muEf2VVeypv35kFsD5bqP1UeBanSshdfjMY+RTh2vN4mmK6nEOVRMEvHg==", + "license": "MIT", + "dependencies": { + "domhandler": "^6.0.1", + "parse5": "^8.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dev": true, + "license": "MIT", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" } }, "node_modules/path-exists": { @@ -5404,6 +17980,13 @@ "node": ">=0.10.0" } }, + "node_modules/path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", + "dev": true, + "license": "(WTFPL OR MIT)" + }, "node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", @@ -5419,6 +18002,23 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "license": "MIT" }, + "node_modules/path-to-regexp": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.9.0.tgz", + "integrity": "sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "isarray": "0.0.1" + } + }, + "node_modules/path-to-regexp/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "dev": true, + "license": "MIT" + }, "node_modules/path-type": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", @@ -5438,9 +18038,9 @@ "license": "ISC" }, "node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "license": "MIT", "engines": { "node": ">=12" @@ -5543,6 +18143,128 @@ "integrity": "sha512-BndPH67/JxGExRgiX1dX0w1FvZck5Wa4aal9198SrRhZjH3GxKQUKIBnYJTdj2HDN3UQAS06HlfcSbQj2OHmaw==", "license": "MIT" }, + "node_modules/pkg-dir": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", + "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^6.3.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", + "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^6.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/pkg-dir/node_modules/yocto-queue": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.2.tgz", + "integrity": "sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkijs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/pkijs/-/pkijs-3.4.0.tgz", + "integrity": "sha512-emEcLuomt2j03vxD54giVB4SxTjnsqkU692xZOZXHDVoYyypEm+b3jpiTcc+Cf+myooc+/Ly0z01jqeNHVgJGw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@noble/hashes": "1.4.0", + "asn1js": "^3.0.6", + "bytestreamjs": "^2.0.1", + "pvtsutils": "^1.3.6", + "pvutils": "^1.1.3", + "tslib": "^2.8.1" + }, + "engines": { + "node": ">=16.0.0" + } + }, "node_modules/possible-typed-array-names": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", @@ -5553,9 +18275,9 @@ } }, "node_modules/postcss": { - "version": "8.5.6", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", - "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "version": "8.5.10", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.10.tgz", + "integrity": "sha512-pMMHxBOZKFU6HgAZ4eyGnwXF/EvPGGqUr0MnZ5+99485wwW41kW91A4LOGxSHhgugZmSChL5AlElNdwlNgcnLQ==", "funding": [ { "type": "opencollective", @@ -5580,6 +18302,1518 @@ "node": "^10 || ^12 || >=14" } }, + "node_modules/postcss-attribute-case-insensitive": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-7.0.1.tgz", + "integrity": "sha512-Uai+SupNSqzlschRyNx3kbCTWgY/2hcwtHEI/ej2LJWc9JJ77qKgGptd8DHwY1mXtZ7Aoh4z4yxfwMBue9eNgw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-attribute-case-insensitive/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-calc": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-9.0.1.tgz", + "integrity": "sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.0.11", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.2" + } + }, + "node_modules/postcss-clamp": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-clamp/-/postcss-clamp-4.1.0.tgz", + "integrity": "sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=7.6.0" + }, + "peerDependencies": { + "postcss": "^8.4.6" + } + }, + "node_modules/postcss-color-functional-notation": { + "version": "7.0.12", + "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-7.0.12.tgz", + "integrity": "sha512-TLCW9fN5kvO/u38/uesdpbx3e8AkTYhMvDZYa9JpmImWuTE99bDQ7GU7hdOADIZsiI9/zuxfAJxny/khknp1Zw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-color-hex-alpha": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-10.0.0.tgz", + "integrity": "sha512-1kervM2cnlgPs2a8Vt/Qbe5cQ++N7rkYo/2rz2BkqJZIHQwaVuJgQH38REHrAi4uM0b1fqxMkWYmese94iMp3w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "@csstools/utilities": "^2.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-color-rebeccapurple": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-10.0.0.tgz", + "integrity": "sha512-JFta737jSP+hdAIEhk1Vs0q0YF5P8fFcj+09pweS8ktuGuZ8pPlykHsk6mPxZ8awDl4TrcxUqJo9l1IhVr/OjQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/utilities": "^2.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-colormin": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-6.1.0.tgz", + "integrity": "sha512-x9yX7DOxeMAR+BgGVnNSAxmAj98NX/YxEMNFP+SDCEeNLb2r3i6Hh1ksMsnW8Ub5SLCpbescQqn9YEbE9554Sw==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.0", + "caniuse-api": "^3.0.0", + "colord": "^2.9.3", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-convert-values": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-6.1.0.tgz", + "integrity": "sha512-zx8IwP/ts9WvUM6NkVSkiU902QZL1bwPhaVaLynPtCsOTqp+ZKbNi+s6XJg3rfqpKGA/oc7Oxk5t8pOQJcwl/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-custom-media": { + "version": "11.0.6", + "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-11.0.6.tgz", + "integrity": "sha512-C4lD4b7mUIw+RZhtY7qUbf4eADmb7Ey8BFA2px9jUbwg7pjTZDl4KY4bvlUV+/vXQvzQRfiGEVJyAbtOsCMInw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "@csstools/cascade-layer-name-parser": "^2.0.5", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/media-query-list-parser": "^4.0.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-custom-properties": { + "version": "14.0.6", + "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-14.0.6.tgz", + "integrity": "sha512-fTYSp3xuk4BUeVhxCSJdIPhDLpJfNakZKoiTDx7yRGCdlZrSJR7mWKVOBS4sBF+5poPQFMj2YdXx1VHItBGihQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "@csstools/cascade-layer-name-parser": "^2.0.5", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/utilities": "^2.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-custom-selectors": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-8.0.5.tgz", + "integrity": "sha512-9PGmckHQswiB2usSO6XMSswO2yFWVoCAuih1yl9FVcwkscLjRKjwsjM3t+NIWpSU2Jx3eOiK2+t4vVTQaoCHHg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "@csstools/cascade-layer-name-parser": "^2.0.5", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-custom-selectors/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-dir-pseudo-class": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-9.0.1.tgz", + "integrity": "sha512-tRBEK0MHYvcMUrAuYMEOa0zg9APqirBcgzi6P21OhxtJyJADo/SWBwY1CAwEohQ/6HDaa9jCjLRG7K3PVQYHEA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-dir-pseudo-class/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-discard-comments": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-6.0.2.tgz", + "integrity": "sha512-65w/uIqhSBBfQmYnG92FO1mWZjJ4GL5b8atm5Yw2UgrwD7HiNiSSNwJor1eCFGzUgYnN/iIknhNRVqjrrpuglw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-discard-duplicates": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-6.0.3.tgz", + "integrity": "sha512-+JA0DCvc5XvFAxwx6f/e68gQu/7Z9ud584VLmcgto28eB8FqSFZwtrLwB5Kcp70eIoWP/HXqz4wpo8rD8gpsTw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-discard-empty": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-6.0.3.tgz", + "integrity": "sha512-znyno9cHKQsK6PtxL5D19Fj9uwSzC2mB74cpT66fhgOadEUPyXFkbgwm5tvc3bt3NAy8ltE5MrghxovZRVnOjQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-discard-overridden": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-6.0.2.tgz", + "integrity": "sha512-j87xzI4LUggC5zND7KdjsI25APtyMuynXZSujByMaav2roV6OZX+8AaCUcZSWqckZpjAjRyFDdpqybgjFO0HJQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-discard-unused": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-6.0.5.tgz", + "integrity": "sha512-wHalBlRHkaNnNwfC8z+ppX57VhvS+HWgjW508esjdaEYr3Mx7Gnn2xA4R/CKf5+Z9S5qsqC+Uzh4ueENWwCVUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.0.16" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-double-position-gradients": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-6.0.4.tgz", + "integrity": "sha512-m6IKmxo7FxSP5nF2l63QbCC3r+bWpFUWmZXZf096WxG0m7Vl1Q1+ruFOhpdDRmKrRS+S3Jtk+TVk/7z0+BVK6g==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-focus-visible": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-10.0.1.tgz", + "integrity": "sha512-U58wyjS/I1GZgjRok33aE8juW9qQgQUNwTSdxQGuShHzwuYdcklnvK/+qOWX1Q9kr7ysbraQ6ht6r+udansalA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-focus-visible/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-focus-within": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-9.0.1.tgz", + "integrity": "sha512-fzNUyS1yOYa7mOjpci/bR+u+ESvdar6hk8XNK/TRR0fiGTp2QT5N+ducP0n3rfH/m9I7H/EQU6lsa2BrgxkEjw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-focus-within/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-font-variant": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz", + "integrity": "sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-gap-properties": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-6.0.0.tgz", + "integrity": "sha512-Om0WPjEwiM9Ru+VhfEDPZJAKWUd0mV1HmNXqp2C29z80aQ2uP9UVhLc7e3aYMIor/S5cVhoPgYQ7RtfeZpYTRw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-image-set-function": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-7.0.0.tgz", + "integrity": "sha512-QL7W7QNlZuzOwBTeXEmbVckNt1FSmhQtbMRvGGqqU4Nf4xk6KUEQhAoWuMzwbSv5jxiRiSZ5Tv7eiDB9U87znA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/utilities": "^2.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-lab-function": { + "version": "7.0.12", + "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-7.0.12.tgz", + "integrity": "sha512-tUcyRk1ZTPec3OuKFsqtRzW2Go5lehW29XA21lZ65XmzQkz43VY2tyWEC202F7W3mILOjw0voOiuxRGTsN+J9w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-loader": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.3.4.tgz", + "integrity": "sha512-iW5WTTBSC5BfsBJ9daFMPVrLT36MrNiC6fqOZTTaHjBNX6Pfd5p+hSBqe/fEeNd7pc13QiAyGt7VdGMw4eRC4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "cosmiconfig": "^8.3.5", + "jiti": "^1.20.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "postcss": "^7.0.0 || ^8.0.1", + "webpack": "^5.0.0" + } + }, + "node_modules/postcss-logical": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-8.1.0.tgz", + "integrity": "sha512-pL1hXFQ2fEXNKiNiAgtfA005T9FBxky5zkX6s4GZM2D8RkVgRqz3f4g1JUoq925zXv495qk8UNldDwh8uGEDoA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-merge-idents": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-6.0.3.tgz", + "integrity": "sha512-1oIoAsODUs6IHQZkLQGO15uGEbK3EAl5wi9SS8hs45VgsxQfMnxvt+L+zIr7ifZFIH14cfAeVe2uCTa+SPRa3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssnano-utils": "^4.0.2", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-merge-longhand": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-6.0.5.tgz", + "integrity": "sha512-5LOiordeTfi64QhICp07nzzuTDjNSO8g5Ksdibt44d+uvIIAE1oZdRn8y/W5ZtYgRH/lnLDlvi9F8btZcVzu3w==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0", + "stylehacks": "^6.1.1" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-merge-rules": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-6.1.1.tgz", + "integrity": "sha512-KOdWF0gju31AQPZiD+2Ar9Qjowz1LTChSjFFbS+e2sFgc4uHOp3ZvVX4sNeTlk0w2O31ecFGgrFzhO0RSWbWwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.0", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^4.0.2", + "postcss-selector-parser": "^6.0.16" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-minify-font-values": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-6.1.0.tgz", + "integrity": "sha512-gklfI/n+9rTh8nYaSJXlCo3nOKqMNkxuGpTn/Qm0gstL3ywTr9/WRKznE+oy6fvfolH6dF+QM4nCo8yPLdvGJg==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-minify-gradients": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-6.0.3.tgz", + "integrity": "sha512-4KXAHrYlzF0Rr7uc4VrfwDJ2ajrtNEpNEuLxFgwkhFZ56/7gaE4Nr49nLsQDZyUe+ds+kEhf+YAUolJiYXF8+Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "colord": "^2.9.3", + "cssnano-utils": "^4.0.2", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-minify-params": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-6.1.0.tgz", + "integrity": "sha512-bmSKnDtyyE8ujHQK0RQJDIKhQ20Jq1LYiez54WiaOoBtcSuflfK3Nm596LvbtlFcpipMjgClQGyGr7GAs+H1uA==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.0", + "cssnano-utils": "^4.0.2", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-minify-selectors": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-6.0.4.tgz", + "integrity": "sha512-L8dZSwNLgK7pjTto9PzWRoMbnLq5vsZSTu8+j1P/2GB8qdtGQfn+K1uSvFgYvgh83cbyxT5m43ZZhUMTJDSClQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.0.16" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", + "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.2.0.tgz", + "integrity": "sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==", + "dev": true, + "license": "MIT", + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^7.0.0", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.1.tgz", + "integrity": "sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==", + "dev": true, + "license": "ISC", + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-scope/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-nesting": { + "version": "13.0.2", + "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-13.0.2.tgz", + "integrity": "sha512-1YCI290TX+VP0U/K/aFxzHzQWHWURL+CtHMSbex1lCdpXD1SoR2sYuxDu5aNI9lPoXpKTCggFZiDJbwylU0LEQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/selector-resolve-nested": "^3.1.0", + "@csstools/selector-specificity": "^5.0.0", + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-nesting/node_modules/@csstools/selector-resolve-nested": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-resolve-nested/-/selector-resolve-nested-3.1.0.tgz", + "integrity": "sha512-mf1LEW0tJLKfWyvn5KdDrhpxHyuxpbNwTIwOYLIvsTffeyOf85j5oIzfG0yosxDgx/sswlqBnESYUcQH0vgZ0g==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss-selector-parser": "^7.0.0" + } + }, + "node_modules/postcss-nesting/node_modules/@csstools/selector-specificity": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz", + "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss-selector-parser": "^7.0.0" + } + }, + "node_modules/postcss-nesting/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-normalize-charset": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-6.0.2.tgz", + "integrity": "sha512-a8N9czmdnrjPHa3DeFlwqst5eaL5W8jYu3EBbTTkI5FHkfMhFZh1EGbku6jhHhIzTA6tquI2P42NtZ59M/H/kQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-display-values": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-6.0.2.tgz", + "integrity": "sha512-8H04Mxsb82ON/aAkPeq8kcBbAtI5Q2a64X/mnRRfPXBq7XeogoQvReqxEfc0B4WPq1KimjezNC8flUtC3Qz6jg==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-positions": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-6.0.2.tgz", + "integrity": "sha512-/JFzI441OAB9O7VnLA+RtSNZvQ0NCFZDOtp6QPFo1iIyawyXg0YI3CYM9HBy1WvwCRHnPep/BvI1+dGPKoXx/Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-repeat-style": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-6.0.2.tgz", + "integrity": "sha512-YdCgsfHkJ2jEXwR4RR3Tm/iOxSfdRt7jplS6XRh9Js9PyCR/aka/FCb6TuHT2U8gQubbm/mPmF6L7FY9d79VwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-string": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-6.0.2.tgz", + "integrity": "sha512-vQZIivlxlfqqMp4L9PZsFE4YUkWniziKjQWUtsxUiVsSSPelQydwS8Wwcuw0+83ZjPWNTl02oxlIvXsmmG+CiQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-timing-functions": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-6.0.2.tgz", + "integrity": "sha512-a+YrtMox4TBtId/AEwbA03VcJgtyW4dGBizPl7e88cTFULYsprgHWTbfyjSLyHeBcK/Q9JhXkt2ZXiwaVHoMzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-unicode": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-6.1.0.tgz", + "integrity": "sha512-QVC5TQHsVj33otj8/JD869Ndr5Xcc/+fwRh4HAsFsAeygQQXm+0PySrKbr/8tkDKzW+EVT3QkqZMfFrGiossDg==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-url": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-6.0.2.tgz", + "integrity": "sha512-kVNcWhCeKAzZ8B4pv/DnrU1wNh458zBNp8dh4y5hhxih5RZQ12QWMuQrDgPRw3LRl8mN9vOVfHl7uhvHYMoXsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-whitespace": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-6.0.2.tgz", + "integrity": "sha512-sXZ2Nj1icbJOKmdjXVT9pnyHQKiSAyuNQHSgRCUgThn2388Y9cGVDR+E9J9iAYbSbLHI+UUwLVl1Wzco/zgv0Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-opacity-percentage": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-3.0.0.tgz", + "integrity": "sha512-K6HGVzyxUxd/VgZdX04DCtdwWJ4NGLG212US4/LA1TLAbHgmAsTWVR86o+gGIbFtnTkfOpb9sCRBx8K7HO66qQ==", + "dev": true, + "funding": [ + { + "type": "kofi", + "url": "https://ko-fi.com/mrcgrtz" + }, + { + "type": "liberapay", + "url": "https://liberapay.com/mrcgrtz" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-ordered-values": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-6.0.2.tgz", + "integrity": "sha512-VRZSOB+JU32RsEAQrO94QPkClGPKJEL/Z9PCBImXMhIeK5KAYo6slP/hBYlLgrCjFxyqvn5VC81tycFEDBLG1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssnano-utils": "^4.0.2", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-overflow-shorthand": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-6.0.0.tgz", + "integrity": "sha512-BdDl/AbVkDjoTofzDQnwDdm/Ym6oS9KgmO7Gr+LHYjNWJ6ExORe4+3pcLQsLA9gIROMkiGVjjwZNoL/mpXHd5Q==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-page-break": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-3.0.4.tgz", + "integrity": "sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "postcss": "^8" + } + }, + "node_modules/postcss-place": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-10.0.0.tgz", + "integrity": "sha512-5EBrMzat2pPAxQNWYavwAfoKfYcTADJ8AXGVPcUZ2UkNloUTWzJQExgrzrDkh3EKzmAx1evfTAzF9I8NGcc+qw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-preset-env": { + "version": "10.6.1", + "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-10.6.1.tgz", + "integrity": "sha512-yrk74d9EvY+W7+lO9Aj1QmjWY9q5NsKjK2V9drkOPZB/X6KZ0B3igKsHUYakb7oYVhnioWypQX3xGuePf89f3g==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/postcss-alpha-function": "^1.0.1", + "@csstools/postcss-cascade-layers": "^5.0.2", + "@csstools/postcss-color-function": "^4.0.12", + "@csstools/postcss-color-function-display-p3-linear": "^1.0.1", + "@csstools/postcss-color-mix-function": "^3.0.12", + "@csstools/postcss-color-mix-variadic-function-arguments": "^1.0.2", + "@csstools/postcss-content-alt-text": "^2.0.8", + "@csstools/postcss-contrast-color-function": "^2.0.12", + "@csstools/postcss-exponential-functions": "^2.0.9", + "@csstools/postcss-font-format-keywords": "^4.0.0", + "@csstools/postcss-gamut-mapping": "^2.0.11", + "@csstools/postcss-gradients-interpolation-method": "^5.0.12", + "@csstools/postcss-hwb-function": "^4.0.12", + "@csstools/postcss-ic-unit": "^4.0.4", + "@csstools/postcss-initial": "^2.0.1", + "@csstools/postcss-is-pseudo-class": "^5.0.3", + "@csstools/postcss-light-dark-function": "^2.0.11", + "@csstools/postcss-logical-float-and-clear": "^3.0.0", + "@csstools/postcss-logical-overflow": "^2.0.0", + "@csstools/postcss-logical-overscroll-behavior": "^2.0.0", + "@csstools/postcss-logical-resize": "^3.0.0", + "@csstools/postcss-logical-viewport-units": "^3.0.4", + "@csstools/postcss-media-minmax": "^2.0.9", + "@csstools/postcss-media-queries-aspect-ratio-number-values": "^3.0.5", + "@csstools/postcss-nested-calc": "^4.0.0", + "@csstools/postcss-normalize-display-values": "^4.0.1", + "@csstools/postcss-oklab-function": "^4.0.12", + "@csstools/postcss-position-area-property": "^1.0.0", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/postcss-property-rule-prelude-list": "^1.0.0", + "@csstools/postcss-random-function": "^2.0.1", + "@csstools/postcss-relative-color-syntax": "^3.0.12", + "@csstools/postcss-scope-pseudo-class": "^4.0.1", + "@csstools/postcss-sign-functions": "^1.1.4", + "@csstools/postcss-stepped-value-functions": "^4.0.9", + "@csstools/postcss-syntax-descriptor-syntax-production": "^1.0.1", + "@csstools/postcss-system-ui-font-family": "^1.0.0", + "@csstools/postcss-text-decoration-shorthand": "^4.0.3", + "@csstools/postcss-trigonometric-functions": "^4.0.9", + "@csstools/postcss-unset-value": "^4.0.0", + "autoprefixer": "^10.4.23", + "browserslist": "^4.28.1", + "css-blank-pseudo": "^7.0.1", + "css-has-pseudo": "^7.0.3", + "css-prefers-color-scheme": "^10.0.0", + "cssdb": "^8.6.0", + "postcss-attribute-case-insensitive": "^7.0.1", + "postcss-clamp": "^4.1.0", + "postcss-color-functional-notation": "^7.0.12", + "postcss-color-hex-alpha": "^10.0.0", + "postcss-color-rebeccapurple": "^10.0.0", + "postcss-custom-media": "^11.0.6", + "postcss-custom-properties": "^14.0.6", + "postcss-custom-selectors": "^8.0.5", + "postcss-dir-pseudo-class": "^9.0.1", + "postcss-double-position-gradients": "^6.0.4", + "postcss-focus-visible": "^10.0.1", + "postcss-focus-within": "^9.0.1", + "postcss-font-variant": "^5.0.0", + "postcss-gap-properties": "^6.0.0", + "postcss-image-set-function": "^7.0.0", + "postcss-lab-function": "^7.0.12", + "postcss-logical": "^8.1.0", + "postcss-nesting": "^13.0.2", + "postcss-opacity-percentage": "^3.0.0", + "postcss-overflow-shorthand": "^6.0.0", + "postcss-page-break": "^3.0.4", + "postcss-place": "^10.0.0", + "postcss-pseudo-class-any-link": "^10.0.1", + "postcss-replace-overflow-wrap": "^4.0.0", + "postcss-selector-not": "^8.0.1" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-pseudo-class-any-link": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-10.0.1.tgz", + "integrity": "sha512-3el9rXlBOqTFaMFkWDOkHUTQekFIYnaQY55Rsp8As8QQkpiSgIYEcF/6Ond93oHiDsGb4kad8zjt+NPlOC1H0Q==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-pseudo-class-any-link/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-reduce-idents": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-6.0.3.tgz", + "integrity": "sha512-G3yCqZDpsNPoQgbDUy3T0E6hqOQ5xigUtBQyrmq3tn2GxlyiL0yyl7H+T8ulQR6kOcHJ9t7/9H4/R2tv8tJbMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-reduce-initial": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-6.1.0.tgz", + "integrity": "sha512-RarLgBK/CrL1qZags04oKbVbrrVK2wcxhvta3GCxrZO4zveibqbRPmm2VI8sSgCXwoUHEliRSbOfpR0b/VIoiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.0", + "caniuse-api": "^3.0.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-reduce-transforms": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-6.0.2.tgz", + "integrity": "sha512-sB+Ya++3Xj1WaT9+5LOOdirAxP7dJZms3GRcYheSPi1PiTMigsxHAdkrbItHxwYHr4kt1zL7mmcHstgMYT+aiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-replace-overflow-wrap": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz", + "integrity": "sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "postcss": "^8.0.3" + } + }, + "node_modules/postcss-selector-not": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-8.0.1.tgz", + "integrity": "sha512-kmVy/5PYVb2UOhy0+LqUYAhKj7DUGDpSWa5LZqlkWJaaAV+dxxsOG3+St0yNLu6vsKD7Dmqx+nWQt0iil89+WA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-selector-not/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-sort-media-queries": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/postcss-sort-media-queries/-/postcss-sort-media-queries-5.2.0.tgz", + "integrity": "sha512-AZ5fDMLD8SldlAYlvi8NIqo0+Z8xnXU2ia0jxmuhxAU+Lqt9K+AlmLNJ/zWEnE9x+Zx3qL3+1K20ATgNOr3fAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "sort-css-media-queries": "2.2.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.4.23" + } + }, + "node_modules/postcss-svgo": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-6.0.3.tgz", + "integrity": "sha512-dlrahRmxP22bX6iKEjOM+c8/1p+81asjKT+V5lrgOH944ryx/OHpclnIbGsKVd3uWOXFLYJwCVf0eEkJGvO96g==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0", + "svgo": "^3.2.0" + }, + "engines": { + "node": "^14 || ^16 || >= 18" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-unique-selectors": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-6.0.4.tgz", + "integrity": "sha512-K38OCaIrO8+PzpArzkLKB42dSARtC2tmG6PvD4b1o1Q2E9Os8jzfWFfSy/rixsHwohtsDdFtAWGjFVFUdwYaMg==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.0.16" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/postcss-zindex": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-6.0.2.tgz", + "integrity": "sha512-5BxW9l1evPB/4ZIc+2GobEBoKC+h8gPGCMi+jxsYvd2x0mjq7wazk6DrP71pStqxE9Foxh5TVnonbWpFZzXaYg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -5590,9 +19824,9 @@ } }, "node_modules/prettier": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.1.tgz", - "integrity": "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==", + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.3.tgz", + "integrity": "sha512-7igPTM53cGHMW8xWuVTydi2KO233VFiTNyF5hLJqpilHfmn8C8gPf+PS7dUT64YcXFbiMGZxS9pCSxL/Dxm/Jw==", "license": "MIT", "bin": { "prettier": "bin/prettier.cjs" @@ -5605,12 +19839,12 @@ } }, "node_modules/prettier-plugin-packagejson": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/prettier-plugin-packagejson/-/prettier-plugin-packagejson-3.0.0.tgz", - "integrity": "sha512-z8/QmPSqx/ANvvQMWJSkSq1+ihBXeuwDEYdjX3ZjRJ5Ty1k7vGbFQfhzk2eDe0rwS/TNyRjWK/qnjJEStAOtDw==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/prettier-plugin-packagejson/-/prettier-plugin-packagejson-3.0.2.tgz", + "integrity": "sha512-kmoj3hEynXwoHDo8ZhmWAIjRBoQWCDUVackiWfSDWdgD0rS3LGB61T9zoVbume/cotYdCoadUh4sqViAmXvpBQ==", "license": "MIT", "dependencies": { - "sort-package-json": "3.6.0" + "sort-package-json": "^3.6.0" }, "peerDependencies": { "prettier": "^3" @@ -5621,6 +19855,47 @@ } } }, + "node_modules/pretty-error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", + "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash": "^4.17.20", + "renderkid": "^3.0.0" + } + }, + "node_modules/pretty-time": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pretty-time/-/pretty-time-1.1.0.tgz", + "integrity": "sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/prism-react-renderer": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/prism-react-renderer/-/prism-react-renderer-2.4.1.tgz", + "integrity": "sha512-ey8Ls/+Di31eqzUxC46h8MksNuGx/n0AAC8uKpwFau4RPDYLuE3EXTp8N8G2vX2N7UC/+IXeNUnlWBGGcAG+Ig==", + "license": "MIT", + "dependencies": { + "@types/prismjs": "^1.26.0", + "clsx": "^2.0.0" + }, + "peerDependencies": { + "react": ">=16.0.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true, + "license": "MIT" + }, "node_modules/process-warning": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-5.0.0.tgz", @@ -5637,6 +19912,20 @@ ], "license": "MIT" }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/prop-types": { "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", @@ -5648,10 +19937,52 @@ "react-is": "^16.13.1" } }, + "node_modules/property-information": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.1.0.tgz", + "integrity": "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", + "dev": true, + "license": "ISC" + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-addr/node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, "node_modules/pump": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz", - "integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.4.tgz", + "integrity": "sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==", "license": "MIT", "dependencies": { "end-of-stream": "^1.1.0", @@ -5667,6 +19998,58 @@ "node": ">=6" } }, + "node_modules/pupa": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-3.3.0.tgz", + "integrity": "sha512-LjgDO2zPtoXP2wJpDjZrGdojii1uqO0cnwKoIoUzkfS98HDmbeiGmYiXo3lXeFlq2xvne1QFQhwYXSUCLKtEuA==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-goat": "^4.0.0" + }, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pvtsutils": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/pvtsutils/-/pvtsutils-1.3.6.tgz", + "integrity": "sha512-PLgQXQ6H2FWCaeRak8vvk1GW462lMxB5s3Jm673N82zI4vqtVUPuZdffdZbPDFRoU8kAhItWFtPCWiPpp4/EDg==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.8.1" + } + }, + "node_modules/pvutils": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/pvutils/-/pvutils-1.1.5.tgz", + "integrity": "sha512-KTqnxsgGiQ6ZAzZCVlJH5eOjSnvlyEgx1m8bkRJfOhmGRqfo5KLvmAlACQkrjEtOQ4B7wF9TdSLIs9O90MX9xA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/qs": { + "version": "6.15.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.1.tgz", + "integrity": "sha512-6YHEFRL9mfgcAvql/XhwTvf5jKcOiiupt2FiJxHkiX1z4j7WL8J/jRHYLluORvc1XxB5rV20KoeK00gVJamspg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -5693,12 +20076,237 @@ "integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==", "license": "MIT" }, + "node_modules/quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", + "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc/node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true, + "license": "ISC" + }, + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react": { + "version": "19.2.6", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.6.tgz", + "integrity": "sha512-sfWGGfavi0xr8Pg0sVsyHMAOziVYKgPLNrS7ig+ivMNb3wbCBw3KxtflsGBAwD3gYQlE/AEZsTLgToRrSCjb0Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "19.2.6", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.6.tgz", + "integrity": "sha512-0prMI+hvBbPjsWnxDLxlCGyM8PN6UuWjEUCYmZhO67xIV9Xasa/r/vDnq+Xyq4Lo27g8QSbO5YzARu0D1Sps3g==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "scheduler": "^0.27.0" + }, + "peerDependencies": { + "react": "^19.2.6" + } + }, + "node_modules/react-fast-compare": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz", + "integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/react-helmet-async": { + "name": "@slorber/react-helmet-async", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@slorber/react-helmet-async/-/react-helmet-async-1.3.0.tgz", + "integrity": "sha512-e9/OK8VhwUSc67diWI8Rb3I0YgI9/SBQtnhe9aEuK6MhZm7ntZZimXgwXnd8W96YTmSOb9M4d8LwhRZyhWr/1A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime": "^7.12.5", + "invariant": "^2.2.4", + "prop-types": "^15.7.2", + "react-fast-compare": "^3.2.0", + "shallowequal": "^1.1.0" + }, + "peerDependencies": { + "react": "^16.6.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.6.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, "node_modules/react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", "license": "MIT" }, + "node_modules/react-loadable": { + "name": "@docusaurus/react-loadable", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@docusaurus/react-loadable/-/react-loadable-6.0.0.tgz", + "integrity": "sha512-YMMxTUQV/QFSnbgrP3tjDzLHRg7vsbMn8e9HAa8o/1iXoiomo48b7sk/kkmWEuWNDPJVlKSJRB6Y2fHqdJk+SQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/react": "*" + }, + "peerDependencies": { + "react": "*" + } + }, + "node_modules/react-loadable-ssr-addon-v5-slorber": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/react-loadable-ssr-addon-v5-slorber/-/react-loadable-ssr-addon-v5-slorber-1.0.3.tgz", + "integrity": "sha512-GXfh9VLwB5ERaCsU6RULh7tkemeX15aNh6wuMEBtfdyMa7fFG8TXrhXlx1SoEK2Ty/l6XIkzzYIQmyaWW3JgdQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.10.3" + }, + "engines": { + "node": ">=10.13.0" + }, + "peerDependencies": { + "react-loadable": "*", + "webpack": ">=4.41.1 || 5.x" + } + }, + "node_modules/react-router": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.3.4.tgz", + "integrity": "sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.13", + "history": "^4.9.0", + "hoist-non-react-statics": "^3.1.0", + "loose-envify": "^1.3.1", + "path-to-regexp": "^1.7.0", + "prop-types": "^15.6.2", + "react-is": "^16.6.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0" + }, + "peerDependencies": { + "react": ">=15" + } + }, + "node_modules/react-router-config": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/react-router-config/-/react-router-config-5.1.1.tgz", + "integrity": "sha512-DuanZjaD8mQp1ppHjgnnUnyOlqYXZVjnov/JzFhjLEwd3Z4dYjMSnqrEzzGThH47vpCOqPPwJM2FtthLeJ8Pbg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.1.2" + }, + "peerDependencies": { + "react": ">=15", + "react-router": ">=5" + } + }, + "node_modules/react-router-dom": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.3.4.tgz", + "integrity": "sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.13", + "history": "^4.9.0", + "loose-envify": "^1.3.1", + "prop-types": "^15.6.2", + "react-router": "5.3.4", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0" + }, + "peerDependencies": { + "react": ">=15" + } + }, "node_modules/read-pkg": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", @@ -5713,6 +20321,47 @@ "node": ">=4" } }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/readdirp/node_modules/picomatch": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/real-require": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/real-require/-/real-require-0.2.0.tgz", @@ -5722,6 +20371,84 @@ "node": ">= 12.13.0" } }, + "node_modules/recma-build-jsx": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/recma-build-jsx/-/recma-build-jsx-1.0.0.tgz", + "integrity": "sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-util-build-jsx": "^3.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/recma-jsx": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/recma-jsx/-/recma-jsx-1.0.1.tgz", + "integrity": "sha512-huSIy7VU2Z5OLv6oFLosQGGDqPqdO1iq6bWNAdhzMxSJP7RAso4fCZ1cKu8j9YHCZf3TPrq4dw3okhrylgcd7w==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn-jsx": "^5.0.0", + "estree-util-to-js": "^2.0.0", + "recma-parse": "^1.0.0", + "recma-stringify": "^1.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/recma-parse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/recma-parse/-/recma-parse-1.0.0.tgz", + "integrity": "sha512-OYLsIGBB5Y5wjnSnQW6t3Xg7q3fQ7FWbw/vcXtORTnyaSFscOtABg+7Pnz6YZ6c27fG1/aN8CjfwoUEUIdwqWQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "esast-util-from-js": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/recma-stringify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/recma-stringify/-/recma-stringify-1.0.0.tgz", + "integrity": "sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-util-to-js": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/reflect-metadata": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz", + "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==", + "dev": true, + "license": "Apache-2.0" + }, "node_modules/reflect.getprototypeof": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", @@ -5744,6 +20471,26 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true, + "license": "MIT" + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.2.tgz", + "integrity": "sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/regexp.prototype.flags": { "version": "1.5.4", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", @@ -5764,6 +20511,291 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/regexpu-core": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.4.0.tgz", + "integrity": "sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==", + "dev": true, + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.2.2", + "regjsgen": "^0.8.0", + "regjsparser": "^0.13.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.2.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/registry-auth-token": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.1.1.tgz", + "integrity": "sha512-P7B4+jq8DeD2nMsAcdfaqHbssgHtZ7Z5+++a5ask90fvmJ8p5je4mOa+wzu+DB4vQ5tdJV/xywY+UnVFeQLV5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@pnpm/npm-conf": "^3.0.2" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/registry-url": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-6.0.1.tgz", + "integrity": "sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "rc": "1.2.8" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/regjsparser": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.1.tgz", + "integrity": "sha512-dLsljMd9sqwRkby8zhO1gSg3PnJIBFid8f4CQj/sXx+7cKx+E7u0PKhZ+U4wmhx7EfmtvnA318oVaIkAB1lRJw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "jsesc": "~3.1.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/rehype-raw": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/rehype-raw/-/rehype-raw-7.0.0.tgz", + "integrity": "sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-raw": "^9.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-recma": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rehype-recma/-/rehype-recma-1.0.0.tgz", + "integrity": "sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/hast": "^3.0.0", + "hast-util-to-estree": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/remark-directive": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/remark-directive/-/remark-directive-3.0.1.tgz", + "integrity": "sha512-gwglrEQEZcZYgVyG1tQuA+h58EZfq5CSULw7J90AFuCTyib1thgHPoqQ+h9iFvU6R+vnZ5oNFQR5QKgGpk741A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-directive": "^3.0.0", + "micromark-extension-directive": "^3.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-emoji": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-emoji/-/remark-emoji-4.0.1.tgz", + "integrity": "sha512-fHdvsTR1dHkWKev9eNyhTo4EFwbUvJ8ka9SgeWkMPYFX4WoI7ViVBms3PjlQYgw5TLvNQso3GUB/b/8t3yo+dg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.2", + "emoticon": "^4.0.1", + "mdast-util-find-and-replace": "^3.0.1", + "node-emoji": "^2.1.0", + "unified": "^11.0.4" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/remark-frontmatter": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/remark-frontmatter/-/remark-frontmatter-5.0.0.tgz", + "integrity": "sha512-XTFYvNASMe5iPN0719nPrdItC9aU0ssC4v14mH1BCi1u0n1gAocqcujWUrByftZTbLhRtiKRyjYTSIOcr69UVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-frontmatter": "^2.0.0", + "micromark-extension-frontmatter": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-gfm": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.1.tgz", + "integrity": "sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-gfm": "^3.0.0", + "micromark-extension-gfm": "^3.0.0", + "remark-parse": "^11.0.0", + "remark-stringify": "^11.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-mdx": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-3.1.1.tgz", + "integrity": "sha512-Pjj2IYlUY3+D8x00UJsIOg5BEvfMyeI+2uLPn9VO9Wg4MEtN/VTIq2NEJQfde9PnX15KgtHyl9S0BcTnWrIuWg==", + "dev": true, + "license": "MIT", + "dependencies": { + "mdast-util-mdx": "^3.0.0", + "micromark-extension-mdxjs": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-parse": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", + "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-rehype": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.2.tgz", + "integrity": "sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "mdast-util-to-hast": "^13.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-stringify": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz", + "integrity": "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-to-markdown": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/renderkid": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", + "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", + "dev": true, + "license": "MIT", + "dependencies": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^6.0.1" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-like": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/require-like/-/require-like-0.1.2.tgz", + "integrity": "sha512-oyrU88skkMtDdauHDuKVrgR+zuItqr6/c//FXzvmxRGMexSDc6hNvJInGW3LL46n+8b50RykrvwSUIIQH2LQ5A==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true, + "license": "MIT" + }, "node_modules/resolve": { "version": "1.22.11", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", @@ -5784,13 +20816,53 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", + "dev": true, + "license": "MIT" + }, "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "license": "MIT", "engines": { - "node": ">=4" + "node": ">=8" + } + }, + "node_modules/resolve-pathname": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz", + "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==", + "dev": true, + "license": "MIT" + }, + "node_modules/responselike": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz", + "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==", + "dev": true, + "license": "MIT", + "dependencies": { + "lowercase-keys": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" } }, "node_modules/reusify": { @@ -5825,6 +20897,19 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/run-applescript": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz", + "integrity": "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -5867,6 +20952,27 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, "node_modules/safe-push-apply": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", @@ -5909,6 +21015,116 @@ "node": ">=10" } }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true, + "license": "MIT" + }, + "node_modules/sax": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.6.0.tgz", + "integrity": "sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=11.0.0" + } + }, + "node_modules/scheduler": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", + "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/schema-dts": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/schema-dts/-/schema-dts-1.1.5.tgz", + "integrity": "sha512-RJr9EaCmsLzBX2NDiO5Z3ux2BVosNZN5jo0gWgsyKvxKIUL5R3swNvoorulAeL9kLB0iTSX7V6aokhla2m7xbg==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/schema-utils": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", + "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/schema-utils/node_modules/ajv": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz", + "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/schema-utils/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/schema-utils/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, + "node_modules/search-insights": { + "version": "2.17.3", + "resolved": "https://registry.npmjs.org/search-insights/-/search-insights-2.17.3.tgz", + "integrity": "sha512-RQPdCYTa8A68uM2jwxoY842xDhvx3E5LFL1LxvxCNMev4o5mLuokczhzjAgGwUZBAmOKZknArSxLKmXtIi2AxQ==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/section-matter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", + "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "extend-shallow": "^2.0.1", + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/secure-json-parse": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-4.1.0.tgz", @@ -5931,6 +21147,27 @@ "integrity": "sha512-MnxEGYVhbmQ66R1WlCH+NVJGAwsJorio6pNO8IRpUWZiv1lF601Mi6s1P0qr6q+PHnjc6IKO2XEnXB6c+6eUrQ==", "license": "MIT" }, + "node_modules/select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", + "dev": true, + "license": "MIT" + }, + "node_modules/selfsigned": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-5.5.0.tgz", + "integrity": "sha512-ftnu3TW4+3eBfLRFnDEkzGxSF/10BJBkaLJuBHZX0kiPS7bRdlpZGu6YGt4KngMkdTwJE6MbjavFpqHvqVt+Ew==", + "dev": true, + "license": "MIT", + "dependencies": { + "@peculiar/x509": "^1.14.2", + "pkijs": "^3.3.3" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/semver": { "version": "7.7.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", @@ -5943,6 +21180,223 @@ "node": ">=10" } }, + "node_modules/semver-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-4.0.0.tgz", + "integrity": "sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/send": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.2.tgz", + "integrity": "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "~0.5.2", + "http-errors": "~2.0.1", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "~2.4.1", + "range-parser": "~1.2.1", + "statuses": "~2.0.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/send/node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-handler": { + "version": "6.1.7", + "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.7.tgz", + "integrity": "sha512-CinAq1xWb0vR3twAv9evEU8cNWkXCb9kd5ePAHUKJBkOsUpR1wt/CvGdeca7vqumL1U5cSaeVQ6zZMxiJ3yWsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "bytes": "3.0.0", + "content-disposition": "0.5.2", + "mime-types": "2.1.18", + "minimatch": "3.1.5", + "path-is-inside": "1.0.2", + "path-to-regexp": "3.3.0", + "range-parser": "1.2.0" + } + }, + "node_modules/serve-handler/node_modules/path-to-regexp": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.3.0.tgz", + "integrity": "sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw==", + "dev": true, + "license": "MIT" + }, + "node_modules/serve-index": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.2.tgz", + "integrity": "sha512-KDj11HScOaLmrPxl70KYNW1PksP4Nb/CLL2yvC+Qd2kHMPEEpfc4Re2e4FOay+bC/+XQl/7zAcWON3JVo5v3KQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "accepts": "~1.3.8", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.8.0", + "mime-types": "~2.1.35", + "parseurl": "~1.3.3" + }, + "engines": { + "node": ">= 0.8.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/serve-index/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/serve-index/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/serve-index/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-static": { + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz", + "integrity": "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "~0.19.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/set-function-length": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", @@ -5989,6 +21443,33 @@ "node": ">= 0.4" } }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true, + "license": "ISC" + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "license": "MIT", + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shallowequal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", + "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==", + "dev": true, + "license": "MIT" + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -6094,10 +21575,62 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/sirv": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz", + "integrity": "sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@polka/url": "^1.0.0-next.24", + "mrmime": "^2.0.0", + "totalist": "^3.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true, + "license": "MIT" + }, + "node_modules/skin-tone": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/skin-tone/-/skin-tone-2.0.0.tgz", + "integrity": "sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==", + "dev": true, + "license": "MIT", + "dependencies": { + "unicode-emoji-modifier-base": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/smol-toml": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.6.0.tgz", - "integrity": "sha512-4zemZi0HvTnYwLfrpk/CF9LOd9Lt87kAt50GnqhMpyF9U3poDAP2+iukq2bZsO/ufegbYehBkqINbsWxj4l4cw==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.6.1.tgz", + "integrity": "sha512-dWUG8F5sIIARXih1DTaQAX4SsiTXhInKf1buxdY9DIg4ZYPZK5nGM1VRIYmEbDbsHt7USo99xSLFu5Q1IqTmsg==", "license": "BSD-3-Clause", "engines": { "node": ">= 18" @@ -6106,6 +21639,18 @@ "url": "https://github.com/sponsors/cyyynthia" } }, + "node_modules/sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, "node_modules/sonic-boom": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-4.2.1.tgz", @@ -6115,6 +21660,16 @@ "atomic-sleep": "^1.0.0" } }, + "node_modules/sort-css-media-queries": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/sort-css-media-queries/-/sort-css-media-queries-2.2.0.tgz", + "integrity": "sha512-0xtkGhWCC9MGt/EzgnvbbbKhqWjl1+/rncmhTh5qCpbYguXh6S/qwePfv/JQ8jePXXmqingylxoC49pCkSPIbA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6.3.0" + } + }, "node_modules/sort-object-keys": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/sort-object-keys/-/sort-object-keys-2.1.0.tgz", @@ -6122,9 +21677,9 @@ "license": "MIT" }, "node_modules/sort-package-json": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/sort-package-json/-/sort-package-json-3.6.0.tgz", - "integrity": "sha512-fyJsPLhWvY7u2KsKPZn1PixbXp+1m7V8NWqU8CvgFRbMEX41Ffw1kD8n0CfJiGoaSfoAvbrqRRl/DcHO8omQOQ==", + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/sort-package-json/-/sort-package-json-3.6.1.tgz", + "integrity": "sha512-Chgejw1+10p2D0U2tB7au1lHtz6TkFnxmvZktyBCRyV0GgmF6nl1IxXxAsPtJVsUyg/fo+BfCMAVVFUVRkAHrQ==", "license": "MIT", "dependencies": { "detect-indent": "^7.0.2", @@ -6142,6 +21697,16 @@ "node": ">=20" } }, + "node_modules/source-map": { + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", + "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">= 12" + } + }, "node_modules/source-map-js": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", @@ -6151,6 +21716,38 @@ "node": ">=0.10.0" } }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/space-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/spdx-correct": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", @@ -6183,6 +21780,38 @@ "integrity": "sha512-CWLcCCH7VLu13TgOH+r8p1O/Znwhqv/dbb6lqWy67G+pT1kHmeD/+V36AVb/vq8QMIQwVShJ6Ssl5FPh0fuSdw==", "license": "CC0-1.0" }, + "node_modules/spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, "node_modules/split2": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", @@ -6192,6 +21821,30 @@ "node": ">= 10.x" } }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/std-env": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz", + "integrity": "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==", + "dev": true, + "license": "MIT" + }, "node_modules/stop-iteration-iterator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", @@ -6251,6 +21904,50 @@ "node": ">= 4.0.0" } }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.2.2" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, "node_modules/string.prototype.matchall": { "version": "4.0.12", "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", @@ -6362,6 +22059,36 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/stringify-entities": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", + "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", + "dev": true, + "license": "MIT", + "dependencies": { + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/stringify-object": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", + "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -6374,6 +22101,15 @@ "node": ">=8" } }, + "node_modules/strip-ansi/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", @@ -6383,6 +22119,26 @@ "node": ">=4" } }, + "node_modules/strip-bom-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", + "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -6395,6 +22151,43 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/style-to-js": { + "version": "1.1.21", + "resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.21.tgz", + "integrity": "sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "style-to-object": "1.0.14" + } + }, + "node_modules/style-to-object": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.14.tgz", + "integrity": "sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==", + "dev": true, + "license": "MIT", + "dependencies": { + "inline-style-parser": "0.2.7" + } + }, + "node_modules/stylehacks": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-6.1.1.tgz", + "integrity": "sha512-gSTTEQ670cJNoaeIp9KX6lZmm8LJ3jPB5yJmX8Zq/wQxOsAFXV3qjWzHas3YYk1qesuVIyYWWUpZ0vSE/dTSGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.0", + "postcss-selector-parser": "^6.0.16" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -6419,12 +22212,286 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/svgo": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.3.3.tgz", + "integrity": "sha512-+wn7I4p7YgJhHs38k2TNjy1vCfPIfLIJWR5MnCStsN8WuuTcBnRKcMHQLMM2ijxGZmDoZwNv8ipl5aTTen62ng==", + "dev": true, + "license": "MIT", + "dependencies": { + "commander": "^7.2.0", + "css-select": "^5.1.0", + "css-tree": "^2.3.1", + "css-what": "^6.1.0", + "csso": "^5.0.5", + "picocolors": "^1.0.0", + "sax": "^1.5.0" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/svgo" + } + }, + "node_modules/svgo/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/svgo/node_modules/css-select": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz", + "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/svgo/node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dev": true, + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/svgo/node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" + }, + "node_modules/svgo/node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/svgo/node_modules/domutils": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/svgo/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/tapable": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.3.tgz", + "integrity": "sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/terser": { + "version": "5.47.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.47.1.tgz", + "integrity": "sha512-tPbLXTI6ohPASb/1YViL428oEHu6/qv1OxqYnfaonVCFHqx4+wCd95pHrQWsL5X4pl90CTyW9piSAsS2L0VoMw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.15.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.6.0.tgz", + "integrity": "sha512-Eum+5ajkaOhf5KbM26osvv21kLD7BaGqQ1UA4Ami4arYwylmGUQTgHFpHDdmJod1q4QXa66p0to/FBKID+J1vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.25", + "jest-worker": "^27.4.5", + "schema-utils": "^4.3.0", + "terser": "^5.31.1" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@minify-html/node": { + "optional": true + }, + "@swc/core": { + "optional": true + }, + "@swc/css": { + "optional": true + }, + "@swc/html": { + "optional": true + }, + "clean-css": { + "optional": true + }, + "cssnano": { + "optional": true + }, + "csso": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "html-minifier-terser": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "postcss": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser-webpack-plugin/node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/terser-webpack-plugin/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true, + "license": "MIT" + }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "license": "MIT" }, + "node_modules/thingies": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/thingies/-/thingies-2.6.0.tgz", + "integrity": "sha512-rMHRjmlFLM1R96UYPvpmnc3LYtdFrT33JIB7L9hetGue1qAPfn1N2LJeEjxUSidu1Iku+haLZXDuEXUHNGO/lg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "^2" + } + }, "node_modules/thread-stream": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-4.0.0.tgz", @@ -6437,6 +22504,27 @@ "node": ">=20" } }, + "node_modules/thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true, + "license": "MIT" + }, + "node_modules/tiny-invariant": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", + "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==", + "dev": true, + "license": "MIT" + }, + "node_modules/tiny-warning": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", + "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==", + "dev": true, + "license": "MIT" + }, "node_modules/tinyglobby": { "version": "0.2.15", "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", @@ -6453,6 +22541,16 @@ "url": "https://github.com/sponsors/SuperchupuDev" } }, + "node_modules/tinypool": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.1.1.tgz", + "integrity": "sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.0.0 || >=20.0.0" + } + }, "node_modules/tmp": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.5.tgz", @@ -6462,10 +22560,82 @@ "node": ">=14.14" } }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/totalist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/tree-dump": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/tree-dump/-/tree-dump-1.1.0.tgz", + "integrity": "sha512-rMuvhU4MCDbcbnleZTFezWsaZXRFemSqAM+7jPnzUl1fo9w3YEKOxAeui0fz3OI4EU4hf23iyA7uQRVko+UaBA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/trim-lines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", + "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/trough": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", + "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/ts-api-utils": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.4.0.tgz", - "integrity": "sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.5.0.tgz", + "integrity": "sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==", "license": "MIT", "engines": { "node": ">=18.12" @@ -6498,6 +22668,33 @@ "json5": "lib/cli.js" } }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" + }, + "node_modules/tsyringe": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/tsyringe/-/tsyringe-4.10.0.tgz", + "integrity": "sha512-axr3IdNuVIxnaK5XGEUFTu3YmAQ6lllgrvqfEoR16g/HGnYY/6We4oWENtAnzK6/LpJ2ur9PAb80RBt7/U4ugw==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^1.9.3" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/tsyringe/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true, + "license": "0BSD" + }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -6522,6 +22719,43 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/type-is/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/type-is/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/typed-array-buffer": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", @@ -6596,10 +22830,20 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, "node_modules/typescript": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", - "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz", + "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", @@ -6610,15 +22854,15 @@ } }, "node_modules/typescript-eslint": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.56.1.tgz", - "integrity": "sha512-U4lM6pjmBX7J5wk4szltF7I1cGBHXZopnAXCMXb3+fZ3B/0Z3hq3wS/CCUB2NZBNAExK92mCU2tEohWuwVMsDQ==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.59.3.tgz", + "integrity": "sha512-KgusgyDgG4LI8Ih/sWaCtZ06tckLAS5CvT5A4D1Q7bYVoAAyzwiZvE4BmwDHkhRVkvhRBepKeASoFzQetha7Fg==", "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.56.1", - "@typescript-eslint/parser": "8.56.1", - "@typescript-eslint/typescript-estree": "8.56.1", - "@typescript-eslint/utils": "8.56.1" + "@typescript-eslint/eslint-plugin": "8.59.3", + "@typescript-eslint/parser": "8.59.3", + "@typescript-eslint/typescript-estree": "8.59.3", + "@typescript-eslint/utils": "8.59.3" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -6629,7 +22873,7 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/unbox-primitive": { @@ -6651,12 +22895,189 @@ } }, "node_modules/undici-types": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", - "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.21.0.tgz", + "integrity": "sha512-w9IMgQrz4O0YN1LtB7K5P63vhlIOvC7opSmouCJ+ZywlPAlO9gIkJ+otk6LvGpAs2wg4econaCz3TvQ9xPoyuQ==", "dev": true, "license": "MIT" }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", + "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-emoji-modifier-base": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unicode-emoji-modifier-base/-/unicode-emoji-modifier-base-1.0.0.tgz", + "integrity": "sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.1.tgz", + "integrity": "sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.2.0.tgz", + "integrity": "sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unified": { + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz", + "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unique-string": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", + "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "crypto-random-string": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/unist-util-is": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.1.tgz", + "integrity": "sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position-from-estree": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-2.0.0.tgz", + "integrity": "sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.1.0.tgz", + "integrity": "sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.2.tgz", + "integrity": "sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/universalify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", @@ -6666,6 +23087,16 @@ "node": ">= 10.0.0" } }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/update-browserslist-db": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", @@ -6696,6 +23127,84 @@ "browserslist": ">= 4.21.0" } }, + "node_modules/update-notifier": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-6.0.2.tgz", + "integrity": "sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boxen": "^7.0.0", + "chalk": "^5.0.1", + "configstore": "^6.0.0", + "has-yarn": "^3.0.0", + "import-lazy": "^4.0.0", + "is-ci": "^3.0.1", + "is-installed-globally": "^0.4.0", + "is-npm": "^6.0.0", + "is-yarn-global": "^0.4.0", + "latest-version": "^7.0.0", + "pupa": "^3.1.0", + "semver": "^7.3.7", + "semver-diff": "^4.0.0", + "xdg-basedir": "^5.1.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/yeoman/update-notifier?sponsor=1" + } + }, + "node_modules/update-notifier/node_modules/boxen": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.1.1.tgz", + "integrity": "sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-align": "^3.0.1", + "camelcase": "^7.0.1", + "chalk": "^5.2.0", + "cli-boxes": "^3.0.0", + "string-width": "^5.1.2", + "type-fest": "^2.13.0", + "widest-line": "^4.0.1", + "wrap-ansi": "^8.1.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/update-notifier/node_modules/camelcase": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.1.tgz", + "integrity": "sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/update-notifier/node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -6705,6 +23214,90 @@ "punycode": "^2.1.0" } }, + "node_modules/url-loader": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-4.1.1.tgz", + "integrity": "sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==", + "dev": true, + "license": "MIT", + "dependencies": { + "loader-utils": "^2.0.0", + "mime-types": "^2.1.27", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "file-loader": "*", + "webpack": "^4.0.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "file-loader": { + "optional": true + } + } + }, + "node_modules/url-loader/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/url-loader/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/url-loader/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true, + "license": "MIT" + }, + "node_modules/utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==", + "dev": true, + "license": "MIT" + }, "node_modules/utility-types": { "version": "3.11.0", "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.11.0.tgz", @@ -6714,6 +23307,27 @@ "node": ">= 4" } }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "deprecated": "uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028).", + "dev": true, + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -6733,6 +23347,68 @@ "node": ">= 0.10" } }, + "node_modules/value-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz", + "integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==", + "dev": true, + "license": "MIT" + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vfile": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", + "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-location": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.3.tgz", + "integrity": "sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.3.tgz", + "integrity": "sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/vscode-languageserver-textdocument": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.12.tgz", @@ -6745,6 +23421,417 @@ "integrity": "sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==", "license": "MIT" }, + "node_modules/watchpack": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.5.1.tgz", + "integrity": "sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/web-namespaces": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz", + "integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/webpack": { + "version": "5.106.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.106.2.tgz", + "integrity": "sha512-wGN3qcrBQIFmQ/c0AiOAQBvrZ5lmY8vbbMv4Mxfgzqd/B6+9pXtLo73WuS1dSGXM5QYY3hZnIbvx+K1xxe6FyA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/eslint-scope": "^3.7.7", + "@types/estree": "^1.0.8", + "@types/json-schema": "^7.0.15", + "@webassemblyjs/ast": "^1.14.1", + "@webassemblyjs/wasm-edit": "^1.14.1", + "@webassemblyjs/wasm-parser": "^1.14.1", + "acorn": "^8.16.0", + "acorn-import-phases": "^1.0.3", + "browserslist": "^4.28.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.20.0", + "es-module-lexer": "^2.0.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.11", + "loader-runner": "^4.3.1", + "mime-db": "^1.54.0", + "neo-async": "^2.6.2", + "schema-utils": "^4.3.3", + "tapable": "^2.3.0", + "terser-webpack-plugin": "^5.3.17", + "watchpack": "^2.5.1", + "webpack-sources": "^3.3.4" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-bundle-analyzer": { + "version": "4.10.2", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.10.2.tgz", + "integrity": "sha512-vJptkMm9pk5si4Bv922ZbKLV8UTT4zib4FPgXMhgzUny0bfDDkLXAVQs3ly3fS4/TN9ROFtb0NFrm04UXFE/Vw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@discoveryjs/json-ext": "0.5.7", + "acorn": "^8.0.4", + "acorn-walk": "^8.0.0", + "commander": "^7.2.0", + "debounce": "^1.2.1", + "escape-string-regexp": "^4.0.0", + "gzip-size": "^6.0.0", + "html-escaper": "^2.0.2", + "opener": "^1.5.2", + "picocolors": "^1.0.0", + "sirv": "^2.0.3", + "ws": "^7.3.1" + }, + "bin": { + "webpack-bundle-analyzer": "lib/bin/analyzer.js" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/webpack-dev-middleware": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-7.4.5.tgz", + "integrity": "sha512-uxQ6YqGdE4hgDKNf7hUiPXOdtkXvBJXrfEGYSx7P7LC8hnUYGK70X6xQXUvXeNyBDDcsiQXpG2m3G9vxowaEuA==", + "dev": true, + "license": "MIT", + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^4.43.1", + "mime-types": "^3.0.1", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + } + } + }, + "node_modules/webpack-dev-middleware/node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/webpack-dev-middleware/node_modules/mime-types": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", + "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/webpack-dev-middleware/node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/webpack-dev-server": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.2.4.tgz", + "integrity": "sha512-GqDPGZN9bRqKBTkp4aWkobDDHMsrXKoGSdOH56smIri8qR0JG8gfL8/v/f/OZR3/OKXjG8uwJbFVhKm/FNU/UA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/bonjour": "^3.5.13", + "@types/connect-history-api-fallback": "^1.5.4", + "@types/express": "^4.17.25", + "@types/express-serve-static-core": "^4.17.21", + "@types/serve-index": "^1.9.4", + "@types/serve-static": "^1.15.5", + "@types/sockjs": "^0.3.36", + "@types/ws": "^8.5.10", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.2.1", + "chokidar": "^3.6.0", + "colorette": "^2.0.10", + "compression": "^1.8.1", + "connect-history-api-fallback": "^2.0.0", + "express": "^4.22.1", + "graceful-fs": "^4.2.6", + "http-proxy-middleware": "^2.0.9", + "ipaddr.js": "^2.1.0", + "launch-editor": "^2.6.1", + "open": "^10.0.3", + "p-retry": "^6.2.0", + "schema-utils": "^4.2.0", + "selfsigned": "^5.5.0", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^7.4.2", + "ws": "^8.18.0" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + }, + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/webpack-dev-server/node_modules/open": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/open/-/open-10.2.0.tgz", + "integrity": "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "default-browser": "^5.2.1", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "wsl-utils": "^0.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/webpack-dev-server/node_modules/ws": { + "version": "8.20.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.20.1.tgz", + "integrity": "sha512-It4dO0K5v//JtTXuPkfEOaI3uUN87iYPnqo/ZzqCoG3g8uhA66QUMs/SrM0YK7/NAu+r4LMh/9dq2A7k+rHs+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/webpack-merge": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-6.0.1.tgz", + "integrity": "sha512-hXXvrjtx2PLYx4qruKl+kyRSLc52V+cCvMxRjmKwoA+CBbbF5GfIBtR6kCvl0fYGqTUPKB+1ktVmTHqMOzgCBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "clone-deep": "^4.0.1", + "flat": "^5.0.2", + "wildcard": "^2.0.1" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/webpack-sources": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.4.1.tgz", + "integrity": "sha512-eACpxRN02yaawnt+uUNIF7Qje6A9zArxBbcAJjK1PK3S9Ycg5jIuJ8pW4q8EMnwNZCEGltcjkRx1QzOxOkKD8A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/webpack/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/webpack/node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/webpackbar": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webpackbar/-/webpackbar-7.0.0.tgz", + "integrity": "sha512-aS9soqSO2iCHgqHoCrj4LbfGQUboDCYJPSFOAchEK+9psIjNrfSWW4Y0YEz67MKURNvMmfo0ycOg9d/+OOf9/Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansis": "^3.2.0", + "consola": "^3.2.3", + "pretty-time": "^1.1.0", + "std-env": "^3.7.0" + }, + "engines": { + "node": ">=14.21.3" + }, + "peerDependencies": { + "@rspack/core": "*", + "webpack": "3 || 4 || 5" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -6845,6 +23932,29 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/widest-line": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz", + "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==", + "dev": true, + "license": "MIT", + "dependencies": { + "string-width": "^5.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/wildcard": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", + "dev": true, + "license": "MIT" + }, "node_modules/word-wrap": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", @@ -6854,12 +23964,126 @@ "node": ">=0.10.0" } }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.2.2" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "license": "ISC" }, + "node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/ws": { + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/wsl-utils": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.1.0.tgz", + "integrity": "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-wsl": "^3.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/wsl-utils/node_modules/is-wsl": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.1.tgz", + "integrity": "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-inside-container": "^1.0.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/xdg-basedir": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-5.1.0.tgz", @@ -6879,9 +24103,9 @@ "license": "ISC" }, "node_modules/yaml": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.2.tgz", - "integrity": "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==", + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.3.tgz", + "integrity": "sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==", "license": "ISC", "bin": { "yaml": "bin.mjs" @@ -6926,35 +24150,99 @@ "zod": "^3.25.0 || ^4.0.0" } }, + "node_modules/zwitch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", + "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "packages/docusaurus-config": { + "name": "@goauthentik/docusaurus-config", + "version": "3.0.0", + "license": "MIT", + "dependencies": { + "deepmerge-ts": "^7.1.5", + "prism-react-renderer": "^2.4.1" + }, + "devDependencies": { + "@docusaurus/theme-common": "^3.10.0", + "@docusaurus/theme-search-algolia": "^3.10.0", + "@docusaurus/types": "^3.10.0", + "@eslint/js": "^9.39.3", + "@goauthentik/eslint-config": "../eslint-config", + "@goauthentik/prettier-config": "../prettier-config", + "@goauthentik/tsconfig": "../tsconfig", + "@types/node": "^25.7.0", + "@types/react": "^19.2.14", + "@types/react-dom": "^19.2.3", + "eslint": "^9.39.3", + "pino": "^10.3.1", + "prettier": "^3.8.3", + "prettier-plugin-packagejson": "^3.0.2", + "typescript": "^6.0.3", + "typescript-eslint": "^8.59.3" + }, + "engines": { + "node": ">=24", + "npm": ">=11.14.1" + }, + "optionalDependencies": { + "react": ">=19", + "react-dom": ">=19" + }, + "peerDependencies": { + "@docusaurus/theme-common": "^3.10.1", + "@docusaurus/theme-search-algolia": "^3.10.1", + "@docusaurus/types": "^3.10.1", + "react": ">=19", + "react-dom": ">=19" + }, + "peerDependenciesMeta": { + "@docusaurus/theme-search-algolia": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, "packages/eslint-config": { "name": "@goauthentik/eslint-config", - "version": "1.3.0", + "version": "2.0.0", "license": "MIT", "dependencies": { "eslint": "^9.39.3", "eslint-plugin-import": "^2.32.0", - "eslint-plugin-lit": "^2.2.1", + "eslint-plugin-lit": "^2.3.1", "eslint-plugin-react": "^7.37.5", - "eslint-plugin-react-hooks": "^7.0.1", + "eslint-plugin-react-hooks": "^7.1.1", "eslint-plugin-wc": "^3.1.0" }, "devDependencies": { "@goauthentik/prettier-config": "../prettier-config", "@goauthentik/tsconfig": "../tsconfig", "@types/eslint": "^9.6.1", - "@types/node": "^25.3.0", - "typescript": "^5.9.3", - "typescript-eslint": "^8.56.1" + "@types/node": "^25.7.0", + "typescript": "^6.0.3", + "typescript-eslint": "^8.59.3" }, "engines": { "node": ">=24", - "npm": ">=11.10.1" + "npm": ">=11.14.1" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0", - "typescript": "^5.9.3", - "typescript-eslint": "^8.56.1" + "typescript": "^6.0.3 || ^7.0.0", + "typescript-eslint": "^8.59.3" }, "peerDependenciesMeta": { "react": { @@ -6967,26 +24255,24 @@ }, "packages/logger-js": { "name": "@goauthentik/logger-js", - "version": "1.0.1", + "version": "2.0.0", "license": "MIT", "devDependencies": { "@eslint/js": "^9.39.3", "@goauthentik/prettier-config": "../prettier-config", "@goauthentik/tsconfig": "../tsconfig", - "@types/node": "^25.3.0", - "@typescript-eslint/eslint-plugin": "^8.56.1", - "@typescript-eslint/parser": "^8.56.1", + "@types/node": "^25.7.0", "eslint": "^9.39.3", "pino": "^10.3.1", "pino-pretty": "^13.1.2", - "prettier": "^3.8.1", - "prettier-plugin-packagejson": "^3.0.0", - "typescript": "^5.9.3", - "typescript-eslint": "^8.56.1" + "prettier": "^3.8.3", + "prettier-plugin-packagejson": "^3.0.2", + "typescript": "^6.0.3", + "typescript-eslint": "^8.59.3" }, "engines": { "node": ">=24", - "npm": ">=11.10.1" + "npm": ">=11.14.1" }, "peerDependencies": { "pino": "^10.3.1", @@ -7003,7 +24289,7 @@ }, "packages/prettier-config": { "name": "@goauthentik/prettier-config", - "version": "3.4.3", + "version": "4.0.0", "license": "MIT", "dependencies": { "format-imports": "^4.0.8" @@ -7012,31 +24298,29 @@ "@eslint/js": "^9.39.3", "@goauthentik/eslint-config": "../eslint-config", "@goauthentik/tsconfig": "../tsconfig", - "@types/node": "^25.0.0", - "@typescript-eslint/eslint-plugin": "^8.49.0", - "@typescript-eslint/parser": "^8.49.0", + "@types/node": "^25.7.0", "eslint": "^9.39.3", - "prettier": "^3.8.1", - "prettier-plugin-packagejson": "^3.0.0", - "typescript": "^5.9.3", - "typescript-eslint": "^8.56.1" + "prettier": "^3.8.3", + "prettier-plugin-packagejson": "^3.0.2", + "typescript": "^6.0.3", + "typescript-eslint": "^8.59.3" }, "engines": { "node": ">=24", - "npm": ">=11.10.1" + "npm": ">=11.14.1" }, "peerDependencies": { - "prettier": "^3.8.1", - "prettier-plugin-packagejson": "^3.0.0" + "prettier": "^3.8.3", + "prettier-plugin-packagejson": "^3.0.2" } }, "packages/tsconfig": { "name": "@goauthentik/tsconfig", - "version": "1.0.7", + "version": "2.0.0", "license": "MIT", "engines": { "node": ">=24", - "npm": ">=11.10.1" + "npm": ">=11.14.1" } } } diff --git a/package.json b/package.json index b361124a1a..5b4d29d998 100644 --- a/package.json +++ b/package.json @@ -1,11 +1,11 @@ { "name": "@goauthentik/authentik", - "version": "2026.5.0-rc1", + "version": "2026.8.0-rc1", "private": true, "scripts": { - "lint": "run-s lint:spellcheck lint:lockfile", - "lint:lockfile": "echo 'Skipping lockfile linting'", - "lint:node": "echo 'Skipping node linting'", + "lint": "run-s lint:runtime lint:spellcheck lint:lockfile", + "lint:lockfile": "node ./scripts/node/lint-lockfile.mjs", + "lint:runtime": "node ./scripts/node/lint-runtime.mjs", "lint:spellcheck": "cspell . --config cspell.config.jsonc" }, "type": "module", @@ -14,26 +14,25 @@ }, "dependencies": { "@eslint/js": "^9.39.3", + "@goauthentik/docusaurus-config": "./packages/docusaurus-config", "@goauthentik/eslint-config": "./packages/eslint-config", "@goauthentik/logger-js": "./packages/logger-js", "@goauthentik/prettier-config": "./packages/prettier-config", "@goauthentik/tsconfig": "./packages/tsconfig", - "@typescript-eslint/eslint-plugin": "^8.56.1", - "@typescript-eslint/parser": "^8.56.1", - "cspell": "^9.7.0", + "cspell": "^10.0.0", "eslint": "^9.39.3", "npm-run-all": "^4.1.5", "pino": "^10.3.1", "pino-pretty": "^13.1.2", - "prettier": "^3.8.1", + "prettier": "^3.8.3", "prettier-plugin-packagejson": "^3.0.0", - "typescript": "^5.9.3", - "typescript-eslint": "^8.56.1" + "typescript": "^6.0.3", + "typescript-eslint": "^8.59.3" }, "workspaces": [], "engines": { "node": ">=24", - "npm": ">=11.10.1" + "npm": ">=11.14.1" }, "devEngines": { "runtime": { @@ -43,15 +42,24 @@ }, "packageManager": { "name": "npm", - "version": ">=11.10.1", + "version": ">=11.14.1", "onFail": "warn" } }, - "packageManager": "npm@11.11.0+sha512.f36811c4aae1fde639527368ae44c571d050006a608d67a191f195a801a52637a312d259186254aa3a3799b05335b7390539cf28656d18f0591a1125ba35f973", + "packageManager": "npm@11.14.1+sha512.6a8a4d67478497a2dbc6815cad72e64c43f33413717e242756047d466241ab39bee61e691683a64658e94496ec5f1a1c05e4a5ec62dcc773280dfd949443a367", "prettier": "@goauthentik/prettier-config", "overrides": { + "@typescript-eslint/eslint-plugin": { + "typescript": "$typescript" + }, + "@typescript-eslint/parser": { + "typescript": "$typescript" + }, "format-imports": { "eslint": "$eslint" + }, + "typescript-eslint": { + "typescript": "$typescript" } } } diff --git a/packages/ak-axum/Cargo.toml b/packages/ak-axum/Cargo.toml new file mode 100644 index 0000000000..8aaa07970b --- /dev/null +++ b/packages/ak-axum/Cargo.toml @@ -0,0 +1,29 @@ +[package] +name = "authentik-axum" +version.workspace = true +authors.workspace = true +edition.workspace = true +readme.workspace = true +homepage.workspace = true +repository.workspace = true +license-file.workspace = true +publish.workspace = true + +[dependencies] +ak-common.workspace = true +axum-server.workspace = true +axum.workspace = true +client-ip.workspace = true +durstr.workspace = true +eyre.workspace = true +forwarded-header-value.workspace = true +futures.workspace = true +pin-project-lite.workspace = true +tokio-rustls.workspace = true +tokio.workspace = true +tower-http.workspace = true +tower.workspace = true +tracing.workspace = true + +[lints] +workspace = true diff --git a/packages/ak-axum/src/accept/catch_panic.rs b/packages/ak-axum/src/accept/catch_panic.rs new file mode 100644 index 0000000000..152d8781db --- /dev/null +++ b/packages/ak-axum/src/accept/catch_panic.rs @@ -0,0 +1,737 @@ +//! axum-server acceptor that catches panics and shuts down the application. + +use std::{ + any::Any, + io::{self, IoSlice}, + panic::{AssertUnwindSafe, catch_unwind, resume_unwind}, + task::{Context, Poll}, +}; + +use ak_common::Arbiter; +use axum_server::accept::Accept; +use futures::{FutureExt as _, future::BoxFuture}; +use pin_project_lite::pin_project; +use tokio::io::{AsyncRead, AsyncWrite, ReadBuf}; +use tower::Service; +use tracing::{error, instrument}; + +fn extract_panic_msg<'a>(panic: &'a Box) -> &'a str { + panic + .downcast_ref::<&str>() + .copied() + .or_else(|| panic.downcast_ref::().map(String::as_str)) + .unwrap_or("unknown panic message") +} + +/// Acceptor catching panics from the underlying acceptor. +/// +/// Also wraps the stream and service to catch panics. +#[derive(Clone)] +pub(crate) struct CatchPanicAcceptor { + inner: A, + arbiter: Arbiter, +} + +impl CatchPanicAcceptor { + pub(crate) fn new(inner: A, arbiter: Arbiter) -> Self { + Self { inner, arbiter } + } +} + +impl Accept for CatchPanicAcceptor +where + A: Accept + Clone + Send + 'static, + A::Stream: AsyncRead + AsyncWrite + Send, + A::Service: Send, + A::Future: Send, + I: AsyncRead + AsyncWrite + Unpin + Send + 'static, + S: Send + 'static, +{ + type Future = BoxFuture<'static, io::Result<(Self::Stream, Self::Service)>>; + type Service = CatchPanicService; + type Stream = CatchPanicStream; + + #[instrument(skip_all)] + fn accept(&self, stream: I, service: S) -> Self::Future { + let acceptor = self.inner.clone(); + let arbiter = self.arbiter.clone(); + + Box::pin(async move { + match AssertUnwindSafe(acceptor.accept(stream, service)) + .catch_unwind() + .await + { + Ok(result) => { + let (stream, service) = result?; + Ok(( + CatchPanicStream::new(stream, arbiter.clone()), + CatchPanicService::new(service, arbiter), + )) + } + Err(panic) => { + error!( + panic = extract_panic_msg(&panic), + "acceptor panicked, shutting down immediately" + ); + arbiter.do_fast_shutdown().await; + resume_unwind(panic); + } + } + }) + } +} + +pin_project! { + /// A stream wrapper that catches panics from the underlying stream. + pub(crate) struct CatchPanicStream { + #[pin] + inner: S, + arbiter: Arbiter, + } +} + +impl CatchPanicStream { + pub(crate) fn new(inner: S, arbiter: Arbiter) -> Self { + Self { inner, arbiter } + } +} + +impl AsyncRead for CatchPanicStream { + fn poll_read( + self: std::pin::Pin<&mut Self>, + cx: &mut Context<'_>, + buf: &mut ReadBuf<'_>, + ) -> Poll> { + let this = self.project(); + + match catch_unwind(AssertUnwindSafe(|| this.inner.poll_read(cx, buf))) { + Ok(result) => result, + Err(panic) => { + error!( + panic = extract_panic_msg(&panic), + "stream poll_read panicked, shutting down immediately" + ); + let arbiter = this.arbiter.clone(); + tokio::spawn(async move { arbiter.do_fast_shutdown().await }); + resume_unwind(panic); + } + } + } +} + +impl AsyncWrite for CatchPanicStream { + fn poll_write( + self: std::pin::Pin<&mut Self>, + cx: &mut Context<'_>, + buf: &[u8], + ) -> Poll> { + let this = self.project(); + + match catch_unwind(AssertUnwindSafe(|| this.inner.poll_write(cx, buf))) { + Ok(result) => result, + Err(panic) => { + error!( + panic = extract_panic_msg(&panic), + "stream poll_write panicked, shutting down immediately" + ); + let arbiter = this.arbiter.clone(); + tokio::spawn(async move { arbiter.do_fast_shutdown().await }); + resume_unwind(panic); + } + } + } + + fn poll_write_vectored( + self: std::pin::Pin<&mut Self>, + cx: &mut Context<'_>, + bufs: &[IoSlice<'_>], + ) -> Poll> { + let this = self.project(); + + match catch_unwind(AssertUnwindSafe(|| { + this.inner.poll_write_vectored(cx, bufs) + })) { + Ok(result) => result, + Err(panic) => { + error!( + panic = extract_panic_msg(&panic), + "stream poll_write_vectored panicked, shutting down immediately" + ); + let arbiter = this.arbiter.clone(); + tokio::spawn(async move { arbiter.do_fast_shutdown().await }); + resume_unwind(panic) + } + } + } + + fn is_write_vectored(&self) -> bool { + match catch_unwind(AssertUnwindSafe(|| self.inner.is_write_vectored())) { + Ok(result) => result, + Err(panic) => { + error!( + panic = extract_panic_msg(&panic), + "stream is_write_vectored panicked, shutting down immediately" + ); + let arbiter = self.arbiter.clone(); + tokio::spawn(async move { arbiter.do_fast_shutdown().await }); + resume_unwind(panic); + } + } + } + + fn poll_flush(self: std::pin::Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { + let this = self.project(); + + match catch_unwind(AssertUnwindSafe(|| this.inner.poll_flush(cx))) { + Ok(result) => result, + Err(panic) => { + error!( + panic = extract_panic_msg(&panic), + "stream poll_flush panicked, shutting down immediately" + ); + let arbiter = this.arbiter.clone(); + tokio::spawn(async move { arbiter.do_fast_shutdown().await }); + resume_unwind(panic); + } + } + } + + fn poll_shutdown(self: std::pin::Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { + let this = self.project(); + + match catch_unwind(AssertUnwindSafe(|| this.inner.poll_shutdown(cx))) { + Ok(result) => result, + Err(panic) => { + error!( + panic = extract_panic_msg(&panic), + "stream poll_shutdown panicked, shutting down immediately" + ); + let arbiter = this.arbiter.clone(); + tokio::spawn(async move { arbiter.do_fast_shutdown().await }); + resume_unwind(panic); + } + } + } +} + +/// A panic wrapper that catches panics from the underlying service. +#[derive(Clone)] +pub(crate) struct CatchPanicService { + inner: S, + arbiter: Arbiter, +} + +impl CatchPanicService { + pub(crate) fn new(inner: S, arbiter: Arbiter) -> Self { + Self { inner, arbiter } + } +} + +impl Service for CatchPanicService +where + S: Service, +{ + type Error = S::Error; + type Future = CatchPanicFuture; + type Response = S::Response; + + fn poll_ready(&mut self, cx: &mut Context<'_>) -> Poll> { + let inner = &mut self.inner; + + match catch_unwind(AssertUnwindSafe(|| inner.poll_ready(cx))) { + Ok(result) => result, + Err(panic) => { + error!( + panic = extract_panic_msg(&panic), + "service poll_ready panicked, shutting down immediately" + ); + let arbiter = self.arbiter.clone(); + tokio::spawn(async move { arbiter.do_fast_shutdown().await }); + resume_unwind(panic); + } + } + } + + fn call(&mut self, req: R) -> Self::Future { + let inner = &mut self.inner; + + match catch_unwind(AssertUnwindSafe(|| inner.call(req))) { + Ok(future) => CatchPanicFuture::new(future, self.arbiter.clone()), + Err(panic) => { + error!( + panic = extract_panic_msg(&panic), + "service call panicked, shutting down immediately" + ); + let arbiter = self.arbiter.clone(); + tokio::spawn(async move { arbiter.do_fast_shutdown().await }); + resume_unwind(panic); + } + } + } +} + +pin_project! { + /// A Future wrapper that catches panics from the inner future. + pub(crate) struct CatchPanicFuture { + #[pin] + inner: F, + arbiter: Arbiter, + } +} + +impl CatchPanicFuture { + fn new(inner: F, arbiter: Arbiter) -> Self { + Self { inner, arbiter } + } +} + +impl Future for CatchPanicFuture { + type Output = F::Output; + + fn poll(self: std::pin::Pin<&mut Self>, cx: &mut Context<'_>) -> Poll { + let this = self.project(); + + match catch_unwind(AssertUnwindSafe(|| this.inner.poll(cx))) { + Ok(result) => result, + Err(panic) => { + error!( + panic = extract_panic_msg(&panic), + "service future panicked, shutting down immediately" + ); + let arbiter = this.arbiter.clone(); + tokio::spawn(async move { arbiter.do_fast_shutdown().await }); + resume_unwind(panic); + } + } + } +} + +#[cfg(test)] +mod tests { + use std::{ + convert::Infallible, + io, + panic::{AssertUnwindSafe, panic_any}, + task::{Context, Poll}, + }; + + use ak_common::{Arbiter, Tasks}; + use axum_server::accept::Accept; + use futures::{ + FutureExt as _, + future::{BoxFuture, poll_fn}, + }; + use tokio::{ + io::{AsyncReadExt as _, AsyncWriteExt as _, DuplexStream, ReadBuf, duplex}, + time::{Duration, timeout}, + }; + use tower::Service; + + use super::{CatchPanicAcceptor, CatchPanicService, CatchPanicStream}; + + fn duplex_stream() -> DuplexStream { + let (stream, _peer) = duplex(1024); + stream + } + + /// Returns `true` if the arbiter's fast-shutdown has already been triggered. + async fn fast_shutdown_triggered(arbiter: &Arbiter) -> bool { + timeout(Duration::from_millis(50), arbiter.fast_shutdown()) + .await + .is_ok() + } + + #[derive(Clone)] + struct OkAcceptor; + + impl Accept for OkAcceptor { + type Future = BoxFuture<'static, io::Result<(I, S)>>; + type Service = S; + type Stream = I; + + fn accept(&self, stream: I, service: S) -> Self::Future { + Box::pin(async move { Ok((stream, service)) }) + } + } + + #[derive(Clone)] + struct ErrorAcceptor; + + impl Accept for ErrorAcceptor { + type Future = BoxFuture<'static, io::Result<(I, S)>>; + type Service = S; + type Stream = I; + + fn accept(&self, _stream: I, _service: S) -> Self::Future { + Box::pin(async move { Err(io::Error::other("inner error")) }) + } + } + + /// Panics with a `&'static str` payload. + #[derive(Clone)] + struct PanicStrAcceptor; + + impl Accept for PanicStrAcceptor { + type Future = BoxFuture<'static, io::Result<(I, S)>>; + type Service = S; + type Stream = I; + + fn accept(&self, _stream: I, _service: S) -> Self::Future { + Box::pin(async move { panic!("str panic message") }) + } + } + + /// Panics with a `String` payload. + #[derive(Clone)] + struct PanicStringAcceptor; + + impl Accept for PanicStringAcceptor { + type Future = BoxFuture<'static, io::Result<(I, S)>>; + type Service = S; + type Stream = I; + + fn accept(&self, _stream: I, _service: S) -> Self::Future { + Box::pin(async move { + let msg = "string panic message".to_owned(); + panic_any(msg) + }) + } + } + + /// Panics with a payload that is neither `&str` nor `String`. + #[derive(Clone)] + struct PanicUnknownAcceptor; + + impl Accept for PanicUnknownAcceptor { + type Future = BoxFuture<'static, io::Result<(I, S)>>; + type Service = S; + type Stream = I; + + fn accept(&self, _stream: I, _service: S) -> Self::Future { + Box::pin(async move { panic_any(42u32) }) + } + } + + struct PanicStream; + + impl tokio::io::AsyncRead for PanicStream { + fn poll_read( + self: std::pin::Pin<&mut Self>, + _cx: &mut Context<'_>, + _buf: &mut ReadBuf<'_>, + ) -> Poll> { + panic!("poll_read panic") + } + } + + impl tokio::io::AsyncWrite for PanicStream { + fn poll_write( + self: std::pin::Pin<&mut Self>, + _cx: &mut Context<'_>, + _buf: &[u8], + ) -> Poll> { + panic!("poll_write panic") + } + + fn poll_flush( + self: std::pin::Pin<&mut Self>, + _cx: &mut Context<'_>, + ) -> Poll> { + panic!("poll_flush panic") + } + + fn poll_shutdown( + self: std::pin::Pin<&mut Self>, + _cx: &mut Context<'_>, + ) -> Poll> { + panic!("poll_shutdown panic") + } + } + + #[derive(Clone)] + struct OkService; + + impl Service<()> for OkService { + type Error = Infallible; + type Future = futures::future::Ready>; + type Response = (); + + fn poll_ready(&mut self, _cx: &mut Context<'_>) -> Poll> { + Poll::Ready(Ok(())) + } + + fn call(&mut self, _req: ()) -> Self::Future { + futures::future::ready(Ok(())) + } + } + + struct PanicPollReadyService; + + impl Service<()> for PanicPollReadyService { + type Error = Infallible; + type Future = futures::future::Ready>; + type Response = (); + + fn poll_ready(&mut self, _cx: &mut Context<'_>) -> Poll> { + panic!("poll_ready panic") + } + + fn call(&mut self, _req: ()) -> Self::Future { + unreachable!() + } + } + + struct PanicCallBodyService; + + impl Service<()> for PanicCallBodyService { + type Error = Infallible; + type Future = futures::future::Ready>; + type Response = (); + + fn poll_ready(&mut self, _cx: &mut Context<'_>) -> Poll> { + Poll::Ready(Ok(())) + } + + fn call(&mut self, _req: ()) -> Self::Future { + panic!("call body panic") + } + } + + struct PanicFuture; + + impl Future for PanicFuture { + type Output = Result<(), Infallible>; + + fn poll(self: std::pin::Pin<&mut Self>, _cx: &mut Context<'_>) -> Poll { + panic!("future panic") + } + } + + struct PanicCallFutureService; + + impl Service<()> for PanicCallFutureService { + type Error = Infallible; + type Future = PanicFuture; + type Response = (); + + fn poll_ready(&mut self, _cx: &mut Context<'_>) -> Poll> { + Poll::Ready(Ok(())) + } + + fn call(&mut self, _req: ()) -> Self::Future { + PanicFuture + } + } + + #[tokio::test] + async fn acceptor_passes_through_success() { + let tasks = Tasks::new().expect("failed to create tasks"); + let arbiter = tasks.arbiter(); + let acceptor = CatchPanicAcceptor::new(OkAcceptor, arbiter.clone()); + + let result = acceptor.accept(duplex_stream(), OkService).await; + + assert!(result.is_ok()); + assert!(!fast_shutdown_triggered(&arbiter).await); + } + + #[tokio::test] + async fn acceptor_passes_through_error() { + let tasks = Tasks::new().expect("failed to create tasks"); + let arbiter = tasks.arbiter(); + let acceptor = CatchPanicAcceptor::new(ErrorAcceptor, arbiter.clone()); + + let result = acceptor.accept(duplex_stream(), OkService).await; + + assert!(result.is_err()); + assert_eq!(result.err().unwrap().to_string(), "inner error"); + assert!(!fast_shutdown_triggered(&arbiter).await); + } + + #[tokio::test] + async fn acceptor_catches_str_panic_and_shuts_down() { + let tasks = Tasks::new().expect("failed to create tasks"); + let arbiter = tasks.arbiter(); + let acceptor = CatchPanicAcceptor::new(PanicStrAcceptor, arbiter.clone()); + + let result = AssertUnwindSafe(acceptor.accept(duplex_stream(), OkService)) + .catch_unwind() + .await; + + assert!(result.is_err()); + assert!(fast_shutdown_triggered(&arbiter).await); + } + + #[tokio::test] + async fn acceptor_catches_string_panic_and_shuts_down() { + let tasks = Tasks::new().expect("failed to create tasks"); + let arbiter = tasks.arbiter(); + let acceptor = CatchPanicAcceptor::new(PanicStringAcceptor, arbiter.clone()); + + let result = AssertUnwindSafe(acceptor.accept(duplex_stream(), OkService)) + .catch_unwind() + .await; + + assert!(result.is_err()); + assert!(fast_shutdown_triggered(&arbiter).await); + } + + #[tokio::test] + async fn acceptor_catches_unknown_panic_and_shuts_down() { + let tasks = Tasks::new().expect("failed to create tasks"); + let arbiter = tasks.arbiter(); + let acceptor = CatchPanicAcceptor::new(PanicUnknownAcceptor, arbiter.clone()); + + let result = AssertUnwindSafe(acceptor.accept(duplex_stream(), OkService)) + .catch_unwind() + .await; + + assert!(result.is_err()); + assert!(fast_shutdown_triggered(&arbiter).await); + } + + #[tokio::test] + async fn stream_poll_read_passes_through() { + let tasks = Tasks::new().expect("failed to create tasks"); + let arbiter = tasks.arbiter(); + let (mut a, mut b) = duplex(1024); + b.write_all(b"hello").await.unwrap(); + + let mut stream = CatchPanicStream::new(&mut a, arbiter.clone()); + let mut buf = [0u8; 5]; + let result = stream.read(&mut buf).await; + + assert!(result.is_ok()); + assert_eq!(&buf, b"hello"); + assert!(!fast_shutdown_triggered(&arbiter).await); + } + + #[tokio::test] + async fn stream_poll_read_panic_returns_error_and_shuts_down() { + let tasks = Tasks::new().expect("failed to create tasks"); + let arbiter = tasks.arbiter(); + let mut stream = CatchPanicStream::new(PanicStream, arbiter.clone()); + + let result = AssertUnwindSafe(stream.read(&mut [0u8; 10])) + .catch_unwind() + .await; + + assert!(result.is_err()); + assert!(fast_shutdown_triggered(&arbiter).await); + } + + #[tokio::test] + async fn stream_poll_write_passes_through() { + let tasks = Tasks::new().expect("failed to create tasks"); + let arbiter = tasks.arbiter(); + let (mut a, _b) = duplex(1024); + + let mut stream = CatchPanicStream::new(&mut a, arbiter.clone()); + let result = stream.write_all(b"hello").await; + + assert!(result.is_ok()); + assert!(!fast_shutdown_triggered(&arbiter).await); + } + + #[tokio::test] + async fn stream_poll_write_panic_returns_error_and_shuts_down() { + let tasks = Tasks::new().expect("failed to create tasks"); + let arbiter = tasks.arbiter(); + let mut stream = CatchPanicStream::new(PanicStream, arbiter.clone()); + + let result = AssertUnwindSafe(stream.write(b"hello")) + .catch_unwind() + .await; + + assert!(result.is_err()); + assert!(fast_shutdown_triggered(&arbiter).await); + } + + #[tokio::test] + async fn stream_poll_flush_panic_returns_error_and_shuts_down() { + let tasks = Tasks::new().expect("failed to create tasks"); + let arbiter = tasks.arbiter(); + let mut stream = CatchPanicStream::new(PanicStream, arbiter.clone()); + + let result = AssertUnwindSafe(stream.flush()).catch_unwind().await; + + assert!(result.is_err()); + assert!(fast_shutdown_triggered(&arbiter).await); + } + + #[tokio::test] + async fn stream_poll_shutdown_panic_returns_error_and_shuts_down() { + let tasks = Tasks::new().expect("failed to create tasks"); + let arbiter = tasks.arbiter(); + let mut stream = CatchPanicStream::new(PanicStream, arbiter.clone()); + + let result = AssertUnwindSafe(stream.shutdown()).catch_unwind().await; + + assert!(result.is_err()); + assert!(fast_shutdown_triggered(&arbiter).await); + } + + #[tokio::test] + async fn service_poll_ready_passes_through() { + let tasks = Tasks::new().expect("failed to create tasks"); + let arbiter = tasks.arbiter(); + let mut service = CatchPanicService::new(OkService, arbiter.clone()); + + let result = poll_fn(|cx| service.poll_ready(cx)).await; + + assert!(result.is_ok()); + assert!(!fast_shutdown_triggered(&arbiter).await); + } + + #[tokio::test] + async fn service_poll_ready_panic_re_panics_and_shuts_down() { + let tasks = Tasks::new().expect("failed to create tasks"); + let arbiter = tasks.arbiter(); + let mut service = CatchPanicService::new(PanicPollReadyService, arbiter.clone()); + + let result = AssertUnwindSafe(poll_fn(|cx| service.poll_ready(cx))) + .catch_unwind() + .await; + + assert!(result.is_err()); + assert!(fast_shutdown_triggered(&arbiter).await); + } + + #[tokio::test] + async fn service_call_passes_through() { + let tasks = Tasks::new().expect("failed to create tasks"); + let arbiter = tasks.arbiter(); + let mut service = CatchPanicService::new(OkService, arbiter.clone()); + + let result = service.call(()).await; + + assert!(result.is_ok()); + assert!(!fast_shutdown_triggered(&arbiter).await); + } + + #[tokio::test] + async fn service_call_body_panic_re_panics_and_shuts_down() { + let tasks = Tasks::new().expect("failed to create tasks"); + let arbiter = tasks.arbiter(); + let mut service = CatchPanicService::new(PanicCallBodyService, arbiter.clone()); + + let result = AssertUnwindSafe(async { service.call(()).await }) + .catch_unwind() + .await; + + assert!(result.is_err()); + assert!(fast_shutdown_triggered(&arbiter).await); + } + + #[tokio::test] + async fn service_call_future_panic_re_panics_and_shuts_down() { + let tasks = Tasks::new().expect("failed to create tasks"); + let arbiter = tasks.arbiter(); + let mut service = CatchPanicService::new(PanicCallFutureService, arbiter.clone()); + + let result = AssertUnwindSafe(service.call(())).catch_unwind().await; + + assert!(result.is_err()); + assert!(fast_shutdown_triggered(&arbiter).await); + } +} diff --git a/packages/ak-axum/src/accept/mod.rs b/packages/ak-axum/src/accept/mod.rs new file mode 100644 index 0000000000..92cbcfc02a --- /dev/null +++ b/packages/ak-axum/src/accept/mod.rs @@ -0,0 +1,3 @@ +pub mod catch_panic; +pub mod proxy_protocol; +pub mod tls; diff --git a/packages/ak-axum/src/accept/proxy_protocol.rs b/packages/ak-axum/src/accept/proxy_protocol.rs new file mode 100644 index 0000000000..b9c112c2e5 --- /dev/null +++ b/packages/ak-axum/src/accept/proxy_protocol.rs @@ -0,0 +1,85 @@ +use std::{io, time::Duration}; + +use ak_common::tokio::proxy_protocol::{ProxyProtocolStream, header::Header}; +use axum::{Extension, middleware::AddExtension}; +use axum_server::accept::{Accept, DefaultAcceptor}; +use futures::future::BoxFuture; +use tokio::io::{AsyncRead, AsyncWrite}; +use tower::Layer as _; +use tracing::instrument; + +#[derive(Clone, Debug)] +pub struct ProxyProtocolState { + pub header: Option>, +} + +#[derive(Clone)] +pub(crate) struct ProxyProtocolAcceptor { + inner: A, + parsing_timeout: Duration, +} + +impl ProxyProtocolAcceptor { + pub(crate) fn new() -> Self { + let inner = DefaultAcceptor::new(); + + #[cfg(not(test))] + let parsing_timeout = Duration::from_secs(10); + + // Don't force tests to wait too long + #[cfg(test)] + let parsing_timeout = Duration::from_secs(1); + + Self { + inner, + parsing_timeout, + } + } +} + +impl Default for ProxyProtocolAcceptor { + fn default() -> Self { + Self::new() + } +} + +impl ProxyProtocolAcceptor { + pub(crate) fn acceptor(self, acceptor: Acceptor) -> ProxyProtocolAcceptor { + ProxyProtocolAcceptor { + inner: acceptor, + parsing_timeout: self.parsing_timeout, + } + } +} + +impl Accept for ProxyProtocolAcceptor +where + A: Accept + Clone + Send + 'static, + A::Stream: AsyncRead + AsyncWrite + Unpin + Send, + A::Service: Send, + A::Future: Send, + I: AsyncRead + AsyncWrite + Unpin + Send + 'static, + S: Send + 'static, +{ + type Future = BoxFuture<'static, io::Result<(Self::Stream, Self::Service)>>; + type Service = AddExtension; + type Stream = ProxyProtocolStream; + + #[instrument(skip_all)] + fn accept(&self, stream: I, service: S) -> Self::Future { + let acceptor = self.inner.clone(); + + Box::pin(async move { + let (stream, service) = acceptor.accept(stream, service).await?; + let stream = ProxyProtocolStream::new(stream).await?; + + let proxy_protocol_state = ProxyProtocolState { + header: stream.header().cloned(), + }; + + let service = Extension(proxy_protocol_state).layer(service); + + Ok((stream, service)) + }) + } +} diff --git a/packages/ak-axum/src/accept/tls.rs b/packages/ak-axum/src/accept/tls.rs new file mode 100644 index 0000000000..0fa01146a5 --- /dev/null +++ b/packages/ak-axum/src/accept/tls.rs @@ -0,0 +1,54 @@ +use axum::{Extension, middleware::AddExtension}; +use axum_server::{accept::Accept, tls_rustls::RustlsAcceptor}; +use futures::future::BoxFuture; +use tokio::io::{AsyncRead, AsyncWrite}; +use tokio_rustls::{rustls::pki_types::CertificateDer, server::TlsStream}; +use tower::Layer as _; +use tracing::instrument; + +#[derive(Clone, Debug)] +pub struct TlsState { + pub peer_certificates: Option>>, +} + +#[derive(Clone)] +pub(crate) struct TlsAcceptor { + inner: RustlsAcceptor, +} + +impl TlsAcceptor { + pub(crate) fn new(inner: RustlsAcceptor) -> Self { + Self { inner } + } +} + +impl Accept for TlsAcceptor +where + A: Accept + Clone + Send + 'static, + A::Stream: AsyncRead + AsyncWrite + Unpin + Send, + A::Service: Send, + A::Future: Send, + I: AsyncRead + AsyncWrite + Unpin + Send + 'static, + S: Send + 'static, +{ + type Future = BoxFuture<'static, std::io::Result<(Self::Stream, Self::Service)>>; + type Service = AddExtension; + type Stream = TlsStream; + + #[instrument(skip_all)] + fn accept(&self, stream: I, service: S) -> Self::Future { + let acceptor = self.inner.clone(); + + Box::pin(async move { + let (stream, service) = acceptor.accept(stream, service).await?; + let server_conn = stream.get_ref().1; + let tls_state = TlsState { + peer_certificates: server_conn.peer_certificates().map(|c| c.to_owned()), + }; + + let service = Extension(tls_state).layer(service); + + Ok((stream, service)) + }) + } +} diff --git a/packages/ak-axum/src/error.rs b/packages/ak-axum/src/error.rs new file mode 100644 index 0000000000..60df94a988 --- /dev/null +++ b/packages/ak-axum/src/error.rs @@ -0,0 +1,33 @@ +//! Custom error type for use in [`axum`] handlers. + +use axum::{ + http::StatusCode, + response::{IntoResponse, Response}, +}; +use eyre::Report; +use tracing::warn; + +/// Custom error type for use in [`axum`] handlers, wrapping a [`Report`]. +/// +/// It implements [`IntoResponse`] and logs errors before returning a 502. +#[derive(Debug)] +pub struct AppError(pub Report); + +impl From for AppError +where + E: Into, +{ + fn from(err: E) -> Self { + Self(err.into()) + } +} + +impl IntoResponse for AppError { + fn into_response(self) -> Response { + warn!(err = ?self.0, "error occurred"); + (StatusCode::INTERNAL_SERVER_ERROR, "Something went wrong").into_response() + } +} + +/// Result type with [`AppError`]. +pub type Result = std::result::Result; diff --git a/packages/ak-axum/src/extract/client_ip.rs b/packages/ak-axum/src/extract/client_ip.rs new file mode 100644 index 0000000000..698f512205 --- /dev/null +++ b/packages/ak-axum/src/extract/client_ip.rs @@ -0,0 +1,237 @@ +//! axum extractor and middleware to retrieve the client IP. + +use std::net::{IpAddr, Ipv6Addr, SocketAddr}; + +use axum::{ + Extension, RequestPartsExt as _, + extract::{ConnectInfo, FromRequestParts, Request}, + http::request::Parts, + middleware::Next, + response::Response, +}; +use tracing::{Span, instrument}; + +use crate::{accept::proxy_protocol::ProxyProtocolState, extract::trusted_proxy::TrustedProxy}; + +/// Client IP. +/// +/// The [`client_ip_middleware`] must be added to the router before using this extractor, +/// otherwise this will result in requests erroring. +#[derive(Clone, Copy, Debug)] +pub struct ClientIp(pub IpAddr); + +impl FromRequestParts for ClientIp +where + S: Send + Sync, +{ + type Rejection = as FromRequestParts>::Rejection; + + async fn from_request_parts(parts: &mut Parts, state: &S) -> Result { + Extension::::from_request_parts(parts, state) + .await + .map(|Extension(client_ip)| client_ip) + } +} + +/// Get the client IP from the request. +#[instrument(skip_all)] +async fn extract_client_ip(parts: &mut Parts) -> IpAddr { + let is_trusted = parts + .extract::() + .await + .unwrap_or(TrustedProxy(false)) + .0; + + if is_trusted { + if let Ok(ip) = client_ip::rightmost_x_forwarded_for(&parts.headers) { + return ip; + } + + if let Ok(ip) = client_ip::x_real_ip(&parts.headers) { + return ip; + } + + if let Ok(ip) = client_ip::rightmost_forwarded(&parts.headers) { + return ip; + } + + if let Ok(Extension(proxy_protocol_state)) = + parts.extract::>().await + && let Some(header) = &proxy_protocol_state.header + && let Some(addr) = header.proxied_address() + { + return addr.source.ip(); + } + } + + if let Ok(ConnectInfo(addr)) = parts.extract::>().await { + addr.ip() + } else { + // No connect info means we received a request via a Unix socket, hence localhost + // as default. + Ipv6Addr::LOCALHOST.into() + } +} + +/// Middleware required by the [`ClientIp`] extractor. +/// +/// Use with [`axum::middleware::from_fn`]. +pub async fn client_ip_middleware(request: Request, next: Next) -> Response { + let (mut parts, body) = request.into_parts(); + + let client_ip = extract_client_ip(&mut parts).await; + Span::current().record("remote", client_ip.to_string()); + parts.extensions.insert::(ClientIp(client_ip)); + + let request = Request::from_parts(parts, body); + + next.run(request).await +} + +#[cfg(test)] +mod tests { + use std::net::Ipv4Addr; + + use axum::{body::Body, http::Request}; + + use super::*; + + #[tokio::test] + async fn x_forwarded_for_trusted() { + let (mut parts, _) = Request::builder() + .uri("http://example.com/path") + .header("x-forwarded-for", "192.0.2.51, 192.0.2.42") + .extension(TrustedProxy(true)) + .body(Body::empty()) + .expect("Failed to create request") + .into_parts(); + + let client_ip = extract_client_ip(&mut parts).await; + + assert_eq!(client_ip, Ipv4Addr::new(192, 0, 2, 42),); + } + + #[tokio::test] + async fn x_real_ip_trusted() { + let (mut parts, _) = Request::builder() + .uri("http://example.com/path") + .header("x-real-ip", "192.0.2.42") + .extension(TrustedProxy(true)) + .body(Body::empty()) + .expect("Failed to create request") + .into_parts(); + + let client_ip = extract_client_ip(&mut parts).await; + + assert_eq!(client_ip, Ipv4Addr::new(192, 0, 2, 42),); + } + + #[tokio::test] + async fn forwarded_header_trusted() { + let (mut parts, _) = Request::builder() + .uri("http://example.com/path") + .header("forwarded", "for=192.0.2.42") + .extension(TrustedProxy(true)) + .body(Body::empty()) + .expect("Failed to create request") + .into_parts(); + + let client_ip = extract_client_ip(&mut parts).await; + + assert_eq!(client_ip, Ipv4Addr::new(192, 0, 2, 42),); + } + + #[tokio::test] + async fn from_connect_info() { + let connect_addr: SocketAddr = "192.0.2.42:34932" + .parse() + .expect("Failed to parse socket address"); + let (mut parts, _) = Request::builder() + .uri("http://example.com/path") + .extension(ConnectInfo(connect_addr)) + .extension(TrustedProxy(false)) + .body(Body::empty()) + .expect("Failed to create request") + .into_parts(); + + let client_ip = extract_client_ip(&mut parts).await; + + assert_eq!(client_ip, Ipv4Addr::new(192, 0, 2, 42),); + } + + #[tokio::test] + async fn headers_untrusted() { + let (mut parts, _) = Request::builder() + .uri("http://example.com/path") + .header("x-forwarded-for", "192.0.2.42") + .extension(TrustedProxy(false)) + .body(Body::empty()) + .expect("Failed to create request") + .into_parts(); + + let client_ip = extract_client_ip(&mut parts).await; + + assert_eq!(client_ip, Ipv6Addr::LOCALHOST); + } + + #[tokio::test] + async fn priority_order() { + // Test that X-Forwarded-For takes priority over other headers when trusted + let (mut parts, _) = Request::builder() + .uri("http://example.com/path") + .header("x-forwarded-for", "192.0.2.1") + .header("x-real-ip", "192.0.2.2") + .header("forwarded", "for=192.0.2.3") + .extension(TrustedProxy(true)) + .body(Body::empty()) + .expect("Failed to create request") + .into_parts(); + + let client_ip = extract_client_ip(&mut parts).await; + + assert_eq!(client_ip, Ipv4Addr::new(192, 0, 2, 1),); + } + + #[tokio::test] + async fn no_ip_found() { + let (mut parts, _) = Request::builder() + .uri("http://example.com/path") + .body(Body::empty()) + .expect("Failed to create request") + .into_parts(); + + let client_ip = extract_client_ip(&mut parts).await; + + assert_eq!(client_ip, Ipv6Addr::LOCALHOST); + } + + #[tokio::test] + async fn ipv6() { + let (mut parts, _) = Request::builder() + .uri("http://example.com/path") + .header("x-forwarded-for", "2001:db8::42") + .extension(TrustedProxy(true)) + .body(Body::empty()) + .expect("Failed to create request") + .into_parts(); + + let client_ip = extract_client_ip(&mut parts).await; + + assert_eq!(client_ip, Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 0x42),); + } + + #[tokio::test] + async fn multiple_x_forwarded_for() { + let (mut parts, _) = Request::builder() + .uri("http://example.com/path") + .header("x-forwarded-for", "192.0.2.1, 192.0.2.2, 192.0.2.3") + .extension(TrustedProxy(true)) + .body(Body::empty()) + .expect("Failed to create request") + .into_parts(); + + let client_ip = extract_client_ip(&mut parts).await; + + assert_eq!(client_ip, Ipv4Addr::new(192, 0, 2, 3),); + } +} diff --git a/packages/ak-axum/src/extract/host.rs b/packages/ak-axum/src/extract/host.rs new file mode 100644 index 0000000000..c9b0ef24c4 --- /dev/null +++ b/packages/ak-axum/src/extract/host.rs @@ -0,0 +1,272 @@ +//! axum extractor and middleware to retrieve the host. +use axum::{ + Extension, RequestPartsExt as _, + extract::{FromRequestParts, Request}, + http::{ + header::{FORWARDED, HOST}, + request::Parts, + status::StatusCode, + }, + middleware::Next, + response::{IntoResponse as _, Response}, +}; +use forwarded_header_value::ForwardedHeaderValue; +use tracing::{Span, instrument}; + +use crate::extract::trusted_proxy::TrustedProxy; + +const X_FORWARDED_HOST: &str = "X-Forwarded-Host"; + +/// Request host. +/// +/// The [`host_middleware`] must be added to the router before using this extractor, +/// otherwise this will result in requests erroring. +#[derive(Clone, Debug)] +pub struct Host(pub String); + +impl FromRequestParts for Host +where + S: Send + Sync, +{ + type Rejection = as FromRequestParts>::Rejection; + + async fn from_request_parts(parts: &mut Parts, state: &S) -> Result { + Extension::::from_request_parts(parts, state) + .await + .map(|Extension(host)| host) + } +} + +/// Get the host from the request. +#[instrument(skip_all)] +async fn extract_host(parts: &mut Parts) -> Result { + let is_trusted = parts + .extract::() + .await + .unwrap_or(TrustedProxy(false)) + .0; + + if is_trusted { + if let Some(host) = parts + .headers + .get(X_FORWARDED_HOST) + .and_then(|host| host.to_str().ok()) + { + return Ok(host.to_owned()); + } + + if let Some(forwarded) = parts.headers.get(FORWARDED) + && let Ok(forwarded) = forwarded.to_str() + && let Ok(forwarded) = ForwardedHeaderValue::from_forwarded(forwarded) + { + for stanza in forwarded.iter() { + if let Some(forwarded_host) = &stanza.forwarded_host { + return Ok(forwarded_host.to_owned()); + } + } + } + } + + if let Some(host) = parts.headers.get(HOST).and_then(|host| host.to_str().ok()) { + return Ok(host.to_owned()); + } + + if let Some(host) = parts.uri.host() { + Ok(host.to_owned()) + } else { + Err((StatusCode::BAD_REQUEST, "missing host header")) + } +} + +/// Middleware required by the [`Host`] extractor. +/// +/// Use with [`axum::middleware::from_fn`]. +pub async fn host_middleware(request: Request, next: Next) -> Response { + let (mut parts, body) = request.into_parts(); + + let host = match extract_host(&mut parts).await { + Ok(host) => host, + Err(err) => return err.into_response(), + }; + Span::current().record("host", host.clone()); + parts.extensions.insert::(Host(host)); + + let request = Request::from_parts(parts, body); + + next.run(request).await +} + +#[cfg(test)] +mod tests { + use axum::{body::Body, http::Request}; + + use super::*; + + #[tokio::test] + async fn host_header() { + let (mut parts, _) = Request::builder() + .uri("http://example.com/path") + .header("host", "example.com:8080") + .body(Body::empty()) + .expect("Failed to create request") + .into_parts(); + + let result = extract_host(&mut parts).await; + + assert!(result.is_ok()); + assert_eq!( + result.expect("Host extraction should succeed"), + "example.com:8080", + ); + } + + #[tokio::test] + async fn from_uri() { + let (mut parts, _) = Request::builder() + .uri("http://example.com:8080/path") + .body(Body::empty()) + .expect("Failed to create request") + .into_parts(); + + let result = extract_host(&mut parts).await; + + assert!(result.is_ok()); + assert_eq!( + result.expect("Host extraction should succeed"), + "example.com", + ); + } + + #[tokio::test] + async fn x_forwarded_host_trusted() { + let (mut parts, _) = Request::builder() + .uri("http://example.com/path") + .header("x-forwarded-host", "forwarded.example.com") + .extension(TrustedProxy(true)) + .body(Body::empty()) + .expect("Failed to create request") + .into_parts(); + + let result = extract_host(&mut parts).await; + + assert!(result.is_ok()); + assert_eq!( + result.expect("Host extraction should succeed"), + "forwarded.example.com", + ); + } + + #[tokio::test] + async fn forwarded_header_trusted() { + let (mut parts, _) = Request::builder() + .uri("http://example.com/path") + .header("forwarded", "host=forwarded.example.com") + .extension(TrustedProxy(true)) + .body(Body::empty()) + .expect("Failed to create request") + .into_parts(); + + let result = extract_host(&mut parts).await; + + assert!(result.is_ok()); + assert_eq!( + result.expect("Host extraction should succeed"), + "forwarded.example.com", + ); + } + + #[tokio::test] + async fn forwarded_host_untrusted() { + let (mut parts, _) = Request::builder() + .uri("http://example.com/path") + .header("x-forwarded-host", "malicious.example.com") + .extension(TrustedProxy(false)) + .body(Body::empty()) + .expect("Failed to create request") + .into_parts(); + + let result = extract_host(&mut parts).await; + + assert!(result.is_ok()); + assert_eq!( + result.expect("Host extraction should succeed"), + "example.com", + ); + } + + #[tokio::test] + async fn forwarded_header_untrusted() { + let (mut parts, _) = Request::builder() + .uri("http://example.com/path") + .header("forwarded", "host=malicious.example.com") + .extension(TrustedProxy(false)) + .body(Body::empty()) + .expect("Failed to create request") + .into_parts(); + + let result = extract_host(&mut parts).await; + + assert!(result.is_ok()); + assert_eq!( + result.expect("Host extraction should succeed"), + "example.com", + ); + } + + #[tokio::test] + async fn priority_order() { + let (mut parts, _) = Request::builder() + .uri("http://example.com/path") + .header("x-forwarded-host", "x-forwarded.example.com") + .header("forwarded", "host=forwarded.example.com") + .header("host", "host-header.example.com") + .extension(TrustedProxy(true)) + .body(Body::empty()) + .expect("Failed to create request") + .into_parts(); + + let result = extract_host(&mut parts).await; + + assert!(result.is_ok()); + assert_eq!( + result.expect("Host extraction should succeed"), + "x-forwarded.example.com", + ); + } + + #[tokio::test] + async fn no_host_found() { + let (mut parts, _) = Request::builder() + .uri("/path") + .body(Body::empty()) + .expect("Failed to create request") + .into_parts(); + + let result = extract_host(&mut parts).await; + + assert!(result.is_err()); + assert_eq!(result.expect_err("Host extract should fail").0, 400); + } + + #[tokio::test] + async fn multiple_forwarded_stanzas() { + let (mut parts, _) = Request::builder() + .uri("http://example.com/path") + .header( + "forwarded", + "host=first.example.com, host=second.example.com", + ) + .extension(TrustedProxy(true)) + .body(Body::empty()) + .expect("Failed to create request") + .into_parts(); + + let result = extract_host(&mut parts).await; + + assert!(result.is_ok()); + assert_eq!( + result.expect("Host extraction should succeed"), + "first.example.com", + ); + } +} diff --git a/packages/ak-axum/src/extract/mod.rs b/packages/ak-axum/src/extract/mod.rs new file mode 100644 index 0000000000..87d8bfb631 --- /dev/null +++ b/packages/ak-axum/src/extract/mod.rs @@ -0,0 +1,6 @@ +//! axum extractors to get information about a request. + +pub mod client_ip; +pub mod host; +pub mod scheme; +pub mod trusted_proxy; diff --git a/packages/ak-axum/src/extract/scheme.rs b/packages/ak-axum/src/extract/scheme.rs new file mode 100644 index 0000000000..4f82fc7a23 --- /dev/null +++ b/packages/ak-axum/src/extract/scheme.rs @@ -0,0 +1,252 @@ +//! axum extractor and middleware to get the request scheme. + +use axum::{ + Extension, RequestPartsExt as _, + extract::{FromRequestParts, Request}, + http::{self, header::FORWARDED, request::Parts}, + middleware::Next, + response::Response, +}; +use forwarded_header_value::{ForwardedHeaderValue, Protocol}; +use tracing::{Span, instrument}; + +use crate::{ + accept::{proxy_protocol::ProxyProtocolState, tls::TlsState}, + extract::trusted_proxy::TrustedProxy, +}; + +const X_FORWARDED_PROTO: &str = "X-Forwarded-Proto"; +const X_FORWARDED_SCHEME: &str = "X-Forwarded-Scheme"; + +/// Request scheme. +/// +/// The [`scheme_middleware`] must be added to the router before using this extractor, +/// otherwise this will result in requests erroring. +#[derive(Clone, Debug)] +pub struct Scheme(pub http::uri::Scheme); + +impl FromRequestParts for Scheme +where + S: Send + Sync, +{ + type Rejection = as FromRequestParts>::Rejection; + + async fn from_request_parts(parts: &mut Parts, state: &S) -> Result { + Extension::::from_request_parts(parts, state) + .await + .map(|Extension(scheme)| scheme) + } +} + +/// Get the scheme from the request. +#[instrument(skip_all)] +async fn extract_scheme(parts: &mut Parts) -> http::uri::Scheme { + let is_trusted = parts + .extract::() + .await + .unwrap_or(TrustedProxy(false)) + .0; + + if is_trusted { + if let Some(proto) = parts.headers.get(X_FORWARDED_PROTO) + && let Ok(proto) = proto.to_str() + && let Ok(scheme) = proto.to_lowercase().as_str().try_into() + { + return scheme; + } + + if let Some(proto) = parts.headers.get(X_FORWARDED_SCHEME) + && let Ok(proto) = proto.to_str() + && let Ok(scheme) = proto.to_lowercase().as_str().try_into() + { + return scheme; + } + + if let Some(forwarded) = parts.headers.get(FORWARDED) + && let Ok(forwarded) = forwarded.to_str() + && let Ok(forwarded) = ForwardedHeaderValue::from_forwarded(forwarded) + { + for stanza in forwarded.iter() { + if let Some(forwarded_proto) = &stanza.forwarded_proto { + let scheme = match forwarded_proto { + Protocol::Http => http::uri::Scheme::HTTP, + Protocol::Https => http::uri::Scheme::HTTPS, + }; + return scheme; + } + } + } + + if let Ok(Extension(proxy_protocol_state)) = + parts.extract::>().await + && let Some(header) = &proxy_protocol_state.header + && header.ssl().is_some() + { + return http::uri::Scheme::HTTPS; + } + } + + if parts.extract::>().await.is_ok() { + http::uri::Scheme::HTTPS + } else { + http::uri::Scheme::HTTP + } +} + +/// Middleware required by the [`Scheme`] extractor. +/// +/// Use with [`axum::middleware::from_fn`]. +pub async fn scheme_middleware(request: Request, next: Next) -> Response { + let (mut parts, body) = request.into_parts(); + + let scheme = extract_scheme(&mut parts).await; + Span::current().record("scheme", scheme.to_string()); + parts.extensions.insert::(Scheme(scheme)); + + let request = Request::from_parts(parts, body); + + next.run(request).await +} + +#[cfg(test)] +mod tests { + use axum::{body::Body, http::Request}; + + use super::*; + + #[tokio::test] + async fn x_forwarded_proto_trusted() { + let (mut parts, _) = Request::builder() + .uri("http://example.com/path") + .header("x-forwarded-proto", "https") + .extension(TrustedProxy(true)) + .body(Body::empty()) + .expect("failed to create request") + .into_parts(); + + let scheme = extract_scheme(&mut parts).await; + + assert_eq!(scheme, http::uri::Scheme::HTTPS,); + } + + #[tokio::test] + async fn x_forwarded_scheme_trusted() { + let (mut parts, _) = Request::builder() + .uri("http://example.com/path") + .header("x-forwarded-scheme", "https") + .extension(TrustedProxy(true)) + .body(Body::empty()) + .expect("Failed to create request") + .into_parts(); + + let scheme = extract_scheme(&mut parts).await; + + assert_eq!(scheme, http::uri::Scheme::HTTPS,); + } + + #[tokio::test] + async fn forwarded_header_trusted() { + let (mut parts, _) = Request::builder() + .uri("http://example.com/path") + .header("forwarded", "proto=https") + .extension(TrustedProxy(true)) + .body(Body::empty()) + .expect("Failed to create request") + .into_parts(); + + let scheme = extract_scheme(&mut parts).await; + + assert_eq!(scheme, http::uri::Scheme::HTTPS,); + } + + #[tokio::test] + async fn x_forwarded_proto_untrusted() { + let (mut parts, _) = Request::builder() + .uri("http://example.com/path") + .header("x-forwarded-proto", "https") + .extension(TrustedProxy(false)) + .body(Body::empty()) + .expect("Failed to create request") + .into_parts(); + + let scheme = extract_scheme(&mut parts).await; + + assert_eq!(scheme, http::uri::Scheme::HTTP,); + } + + #[tokio::test] + async fn scheme_from_tls_state() { + let (mut parts, _) = Request::builder() + .uri("http://example.com/path") + .extension(TlsState { + peer_certificates: None, + }) + .body(Body::empty()) + .expect("Failed to create request") + .into_parts(); + + let scheme = extract_scheme(&mut parts).await; + + assert_eq!(scheme, http::uri::Scheme::HTTPS,); + } + + #[tokio::test] + async fn scheme_defaults_to_http() { + let (mut parts, _) = Request::builder() + .uri("http://example.com/path") + .body(Body::empty()) + .expect("Failed to create request") + .into_parts(); + + let scheme = extract_scheme(&mut parts).await; + + assert_eq!(scheme, http::uri::Scheme::HTTP,); + } + + #[tokio::test] + async fn priority_order() { + let (mut parts, _) = Request::builder() + .uri("http://example.com/path") + .header("x-forwarded-proto", "http") + .header("x-forwarded-scheme", "https") + .header("forwarded", "proto=https") + .extension(TrustedProxy(true)) + .body(Body::empty()) + .expect("Failed to create request") + .into_parts(); + + let scheme = extract_scheme(&mut parts).await; + + assert_eq!(scheme, http::uri::Scheme::HTTP,); + } + + #[tokio::test] + async fn multiple_forwarded_stanzas() { + let (mut parts, _) = Request::builder() + .uri("http://example.com/path") + .header("forwarded", "proto=http, proto=https") + .extension(TrustedProxy(true)) + .body(Body::empty()) + .expect("Failed to create request") + .into_parts(); + + let scheme = extract_scheme(&mut parts).await; + + assert_eq!(scheme, http::uri::Scheme::HTTP,); + } + + #[tokio::test] + async fn test_scheme_case_insensitive() { + let (mut parts, _) = Request::builder() + .uri("http://example.com/path") + .header("x-forwarded-proto", "HTTPS") + .extension(TrustedProxy(true)) + .body(Body::empty()) + .expect("Failed to create request") + .into_parts(); + + let scheme = extract_scheme(&mut parts).await; + + assert_eq!(scheme, http::uri::Scheme::HTTPS,); + } +} diff --git a/packages/ak-axum/src/extract/trusted_proxy.rs b/packages/ak-axum/src/extract/trusted_proxy.rs new file mode 100644 index 0000000000..03131d9fa5 --- /dev/null +++ b/packages/ak-axum/src/extract/trusted_proxy.rs @@ -0,0 +1,69 @@ +//! axum extractor and middleware to check if a request comes from a trusted proxy. + +use std::net::SocketAddr; + +use ak_common::config; +use axum::{ + Extension, RequestPartsExt as _, + extract::{ConnectInfo, FromRequestParts, Request}, + http::request::Parts, + middleware::Next, + response::Response, +}; +use tracing::{instrument, trace}; + +/// Whether the request comes from a trusted proxy. +/// +/// The [`trusted_proxy_middleware`] must be added to the router before using this extractor, +/// otherwise this will result in requests erroring. +#[derive(Clone, Copy, Debug)] +pub struct TrustedProxy(pub bool); + +impl FromRequestParts for TrustedProxy +where + S: Send + Sync, +{ + type Rejection = as FromRequestParts>::Rejection; + + async fn from_request_parts(parts: &mut Parts, state: &S) -> Result { + Extension::::from_request_parts(parts, state) + .await + .map(|Extension(trusted_proxy)| trusted_proxy) + } +} + +/// Check whether the request comes from a trusted proxy. +#[instrument(skip_all)] +async fn extract_trusted_proxy(parts: &mut Parts) -> bool { + if let Ok(ConnectInfo(addr)) = parts.extract::>().await { + let trusted_proxy_cidrs = &config::get().listen.trusted_proxy_cidrs; + + for trusted_net in trusted_proxy_cidrs { + if trusted_net.contains(&addr.ip()) { + trace!( + ?addr, + ?trusted_net, + "connection is now considered coming from a trusted proxy" + ); + return true; + } + } + } + false +} + +/// Middleware required by the [`TrustedProxy`] extractor. +/// +/// Use with [`axum::middleware::from_fn`]. +pub async fn trusted_proxy_middleware(request: Request, next: Next) -> Response { + let (mut parts, body) = request.into_parts(); + + let trusted_proxy = extract_trusted_proxy(&mut parts).await; + parts + .extensions + .insert::(TrustedProxy(trusted_proxy)); + + let request = Request::from_parts(parts, body); + + next.run(request).await +} diff --git a/packages/ak-axum/src/lib.rs b/packages/ak-axum/src/lib.rs new file mode 100644 index 0000000000..d2a7a3b508 --- /dev/null +++ b/packages/ak-axum/src/lib.rs @@ -0,0 +1,8 @@ +//! Utilities for working with [`axum`]. + +pub mod accept; +pub mod error; +pub mod extract; +pub mod router; +pub mod server; +pub mod tracing; diff --git a/packages/ak-axum/src/router.rs b/packages/ak-axum/src/router.rs new file mode 100644 index 0000000000..0a2df42892 --- /dev/null +++ b/packages/ak-axum/src/router.rs @@ -0,0 +1,59 @@ +//! Utilities for working with [`Router`]. + +use ak_common::config; +use axum::{ + Router, + extract::Request, + http::{HeaderName, HeaderValue, StatusCode}, + middleware::{Next, from_fn}, + response::Response, +}; +use tower::ServiceBuilder; +use tower_http::timeout::TimeoutLayer; + +use crate::{ + extract::{ + client_ip::client_ip_middleware, host::host_middleware, scheme::scheme_middleware, + trusted_proxy::trusted_proxy_middleware, + }, + tracing::{span_middleware, tracing_middleware}, +}; + +const X_POWERED_BY: HeaderName = HeaderName::from_static("x-powered-by"); + +async fn powered_by_authentik_middleware(request: Request, next: Next) -> Response { + let mut response = next.run(request).await; + response + .headers_mut() + .insert(X_POWERED_BY, HeaderValue::from_static("authentik")); + response +} + +/// Wrap a [`Router`] with common middlewares. +/// +/// Set `with_tracing` to [`true`] to log requests. +#[inline] +pub fn wrap_router(router: Router, with_tracing: bool) -> Router { + let config = config::get(); + let timeout = durstr::parse(&config.web.timeout_http_read_header) + .expect("Invalid duration in http timeout") + + durstr::parse(&config.web.timeout_http_read).expect("Invalid duration in http timeout") + + durstr::parse(&config.web.timeout_http_write).expect("Invalid duration in http timeout") + + durstr::parse(&config.web.timeout_http_idle).expect("Invalid duration in http timeout"); + let service_builder = ServiceBuilder::new() + .layer(TimeoutLayer::with_status_code( + StatusCode::REQUEST_TIMEOUT, + timeout, + )) + .layer(from_fn(span_middleware)) + .layer(from_fn(powered_by_authentik_middleware)) + .layer(from_fn(trusted_proxy_middleware)) + .layer(from_fn(client_ip_middleware)) + .layer(from_fn(scheme_middleware)) + .layer(from_fn(host_middleware)); + if with_tracing { + router.layer(service_builder.layer(from_fn(tracing_middleware))) + } else { + router.layer(service_builder) + } +} diff --git a/packages/ak-axum/src/server.rs b/packages/ak-axum/src/server.rs new file mode 100644 index 0000000000..5b3713d5cb --- /dev/null +++ b/packages/ak-axum/src/server.rs @@ -0,0 +1,164 @@ +//! Utilities to run an axum server. + +use std::{net, os::unix, path::PathBuf}; + +use ak_common::arbiter::{Arbiter, Tasks}; +use axum::Router; +use axum_server::{ + Handle, + accept::DefaultAcceptor, + tls_rustls::{RustlsAcceptor, RustlsConfig}, +}; +use eyre::Result; +use tracing::{info, trace}; + +use crate::accept::{ + catch_panic::CatchPanicAcceptor, proxy_protocol::ProxyProtocolAcceptor, tls::TlsAcceptor, +}; + +async fn run_plain( + arbiter: Arbiter, + name: &str, + router: Router, + addr: net::SocketAddr, +) -> Result<()> { + info!(addr = addr.to_string(), "starting {name} server"); + + let handle = Handle::new(); + arbiter.add_net_handle(handle.clone()).await; + + axum_server::Server::bind(addr) + .acceptor(CatchPanicAcceptor::new( + ProxyProtocolAcceptor::new().acceptor(DefaultAcceptor::new()), + arbiter.clone(), + )) + .handle(handle) + .serve(router.into_make_service_with_connect_info::()) + .await?; + + Ok(()) +} + +/// Start a plaintext server. +/// +/// `name` is only used for observability purposes and should describe which module is starting the +/// server. +pub fn start_plain( + tasks: &mut Tasks, + name: &'static str, + router: Router, + addr: net::SocketAddr, +) -> Result<()> { + let arbiter = tasks.arbiter(); + tasks + .build_task() + .name(&format!("{}::run_plain({name}, {addr})", module_path!())) + .spawn(run_plain(arbiter, name, router, addr))?; + Ok(()) +} + +struct UnixSocketGuard(PathBuf); + +impl Drop for UnixSocketGuard { + fn drop(&mut self) { + trace!(path = ?self.0, "removing socket"); + if let Err(err) = std::fs::remove_file(&self.0) { + trace!(?err, "failed to remove socket, ignoring"); + } + } +} + +pub(crate) async fn run_unix( + arbiter: Arbiter, + name: &str, + router: Router, + addr: unix::net::SocketAddr, +) -> Result<()> { + info!(?addr, "starting {name} server"); + + let handle = Handle::new(); + arbiter.add_unix_handle(handle.clone()).await; + + let _guard = if let Some(path) = addr.as_pathname() { + trace!(?addr, "removing socket"); + if let Err(err) = std::fs::remove_file(path) { + trace!(?err, "failed to remove socket, ignoring"); + } + Some(UnixSocketGuard(path.to_owned())) + } else { + None + }; + axum_server::Server::bind(addr.clone()) + .acceptor(CatchPanicAcceptor::new( + DefaultAcceptor::new(), + arbiter.clone(), + )) + .handle(handle) + .serve(router.into_make_service()) + .await?; + + Ok(()) +} + +/// Start a Unix socket server. +/// +/// `name` is only used for observability purposes and should describe which module is starting the +/// server. +pub fn start_unix( + tasks: &mut Tasks, + name: &'static str, + router: Router, + addr: unix::net::SocketAddr, +) -> Result<()> { + let arbiter = tasks.arbiter(); + tasks + .build_task() + .name(&format!("{}::run_unix({name}, {addr:?})", module_path!())) + .spawn(run_unix(arbiter, name, router, addr))?; + Ok(()) +} + +async fn run_tls( + arbiter: Arbiter, + name: &str, + router: Router, + addr: net::SocketAddr, + config: RustlsConfig, +) -> Result<()> { + info!(addr = addr.to_string(), "starting {name} server"); + + let handle = Handle::new(); + arbiter.add_net_handle(handle.clone()).await; + + axum_server::Server::bind(addr) + .acceptor(CatchPanicAcceptor::new( + ProxyProtocolAcceptor::new().acceptor(TlsAcceptor::new( + RustlsAcceptor::new(config).acceptor(DefaultAcceptor::new()), + )), + arbiter.clone(), + )) + .handle(handle) + .serve(router.into_make_service_with_connect_info::()) + .await?; + + Ok(()) +} + +/// Start a TLS server. +/// +/// `name` is only used for observability purposes and should describe which module is starting the +/// server. +pub fn start_tls( + tasks: &mut Tasks, + name: &'static str, + router: Router, + addr: net::SocketAddr, + config: RustlsConfig, +) -> Result<()> { + let arbiter = tasks.arbiter(); + tasks + .build_task() + .name(&format!("{}::run_tls({name}, {addr})", module_path!())) + .spawn(run_tls(arbiter, name, router, addr, config))?; + Ok(()) +} diff --git a/packages/ak-axum/src/tracing.rs b/packages/ak-axum/src/tracing.rs new file mode 100644 index 0000000000..c69678aa31 --- /dev/null +++ b/packages/ak-axum/src/tracing.rs @@ -0,0 +1,51 @@ +//! Middlewares for tracing requests. + +use std::collections::HashMap; + +use ak_common::config; +use axum::{extract::Request, middleware::Next, response::Response}; +use tokio::time::Instant; +use tracing::{Instrument as _, field, info, info_span, trace}; + +/// Create a [`tracing::Span`] for requests. +pub(crate) async fn span_middleware(request: Request, next: Next) -> Response { + let config = config::get(); + let http_headers = request + .headers() + .iter() + .filter(|(name, _)| { + for header in &config.log.http_headers { + if header.eq_ignore_ascii_case(name.as_str()) { + return true; + } + } + false + }) + .map(|(name, value)| (name.to_string().to_lowercase().replace('-', "_"), value)) + .collect::>(); + let span = info_span!( + "request", + path = %request.uri(), + method = %request.method(), + remote = field::Empty, + scheme = field::Empty, + host = field::Empty, + http_headers = ?http_headers, + ); + next.run(request).instrument(span).await +} + +/// Log requests. +pub(crate) async fn tracing_middleware(request: Request, next: Next) -> Response { + let event = request.uri().clone(); + trace!("request start"); + + let start = Instant::now(); + let response = next.run(request).await; + let runtime = start.elapsed(); + let status = response.status().as_u16(); + + info!(status = status, runtime = runtime.as_millis(), "{event}"); + + response +} diff --git a/packages/ak-common/Cargo.toml b/packages/ak-common/Cargo.toml new file mode 100644 index 0000000000..771356ae8d --- /dev/null +++ b/packages/ak-common/Cargo.toml @@ -0,0 +1,55 @@ +[package] +name = "authentik-common" +version.workspace = true +authors.workspace = true +edition.workspace = true +readme.workspace = true +homepage.workspace = true +repository.workspace = true +license-file.workspace = true +publish.workspace = true + +[features] +default = ["core", "proxy"] +core = ["dep:sqlx"] +proxy = [] + +[dependencies] +ak-client.workspace = true +arc-swap.workspace = true +aws-lc-rs.workspace = true +axum-server.workspace = true +config-rs.workspace = true +console-subscriber.workspace = true +eyre.workspace = true +glob.workspace = true +ipnet.workspace = true +json-subscriber.workspace = true +notify.workspace = true +pin-project-lite.workspace = true +reqwest.workspace = true +reqwest-middleware.workspace = true +rustls.workspace = true +sentry.workspace = true +serde.workspace = true +serde_json.workspace = true +sqlx = { workspace = true, optional = true } +thiserror.workspace = true +time.workspace = true +tokio-retry2.workspace = true +tokio-util.workspace = true +tokio.workspace = true +tracing-error.workspace = true +tracing-subscriber.workspace = true +tracing.workspace = true +url.workspace = true + +[dev-dependencies] +nix.workspace = true +tempfile.workspace = true + +[lints] +workspace = true + +[package.metadata.cargo-machete] +ignored = ["aws-lc-rs"] diff --git a/packages/ak-common/src/api.rs b/packages/ak-common/src/api.rs new file mode 100644 index 0000000000..0bd9fcb783 --- /dev/null +++ b/packages/ak-common/src/api.rs @@ -0,0 +1,193 @@ +//! Utilities for working with the authentik API client. + +use ak_client::apis::configuration::Configuration; +use eyre::{Result, eyre}; +use url::Url; + +use crate::{config, user_agent_outpost}; + +pub struct ServerConfig { + pub host: Url, + pub token: String, + pub insecure: bool, +} + +impl ServerConfig { + pub fn new() -> Result { + let host = config::get() + .host + .clone() + .ok_or_else(|| eyre!("environment variable `AUTHENTIK_HOST` not set"))?; + let mut host: Url = host.parse()?; + let token = config::get() + .token + .clone() + .ok_or_else(|| eyre!("environment variable `AUTHENTIK_TOKEN` not set"))?; + let insecure = config::get().insecure.unwrap_or(false); + + if !host.path().ends_with('/') { + host.path_segments_mut() + .map_err(|()| eyre!("URL cannot be a base"))? + .push(""); + } + + Ok(Self { + host, + token, + insecure, + }) + } +} + +/// Return a [`Configuration`] object based on external environment variables. +pub fn make_config() -> Result { + let server_config = ServerConfig::new()?; + + let base_path = server_config.host.join("api/v3")?.into(); + + let client = reqwest::ClientBuilder::new() + .tls_danger_accept_invalid_hostnames(server_config.insecure) + .tls_danger_accept_invalid_certs(server_config.insecure) + .build()?; + let client = reqwest_middleware::ClientBuilder::new(client).build(); + + Ok(Configuration { + base_path, + client, + bearer_access_token: Some(server_config.token), + user_agent: Some(user_agent_outpost()), + ..Default::default() + }) +} + +#[cfg(test)] +mod tests { + use serde_json::json; + + use super::{ServerConfig, make_config}; + use crate::config; + + #[test] + fn server_config_no_trailing_slash() { + config::init().expect("failed to init config"); + config::set(json!({ + "host": "http://localhost:9000", + "token": "token", + })) + .expect("failed to set config"); + + let server_config = ServerConfig::new().expect("failed to create server config"); + + assert_eq!(server_config.host.as_str(), "http://localhost:9000/"); + } + + #[test] + fn server_config_with_trailing_slash() { + config::init().expect("failed to init config"); + config::set(json!({ + "host": "http://localhost:9000/", + "token": "token", + })) + .expect("failed to set config"); + + let server_config = ServerConfig::new().expect("failed to create server config"); + + assert_eq!(server_config.host.as_str(), "http://localhost:9000/"); + } + + #[test] + fn server_config_with_path_no_trailing_slash() { + config::init().expect("failed to init config"); + config::set(json!({ + "host": "http://localhost:9000/authentik", + "token": "token", + })) + .expect("failed to set config"); + + let server_config = ServerConfig::new().expect("failed to create server config"); + + assert_eq!( + server_config.host.as_str(), + "http://localhost:9000/authentik/" + ); + } + + #[test] + fn server_config_with_path_and_trailing_slash() { + config::init().expect("failed to init config"); + config::set(json!({ + "host": "http://localhost:9000/authentik/", + "token": "token", + })) + .expect("failed to set config"); + + let server_config = ServerConfig::new().expect("failed to create server config"); + + assert_eq!( + server_config.host.as_str(), + "http://localhost:9000/authentik/" + ); + } + + #[test] + fn make_config_no_trailing_slash() { + config::init().expect("failed to init config"); + config::set(json!({ + "host": "http://localhost:9000", + "token": "token", + })) + .expect("failed to set config"); + + let api_config = make_config().expect("failed to make config"); + + assert_eq!(api_config.base_path, "http://localhost:9000/api/v3"); + } + + #[test] + fn make_config_with_trailing_slash() { + config::init().expect("failed to init config"); + config::set(json!({ + "host": "http://localhost:9000/", + "token": "token", + })) + .expect("failed to set config"); + + let api_config = make_config().expect("failed to make config"); + + assert_eq!(api_config.base_path, "http://localhost:9000/api/v3"); + } + + #[test] + fn make_config_with_path_no_trailing_slash() { + config::init().expect("failed to init config"); + config::set(json!({ + "host": "http://localhost:9000/authentik", + "token": "token", + })) + .expect("failed to set config"); + + let api_config = make_config().expect("failed to make config"); + + assert_eq!( + api_config.base_path, + "http://localhost:9000/authentik/api/v3" + ); + } + + #[test] + fn make_config_with_path_and_trailing_slash() { + config::init().expect("failed to init config"); + config::set(json!({ + "host": "http://localhost:9000/authentik/", + "token": "token", + })) + .expect("failed to set config"); + + let api_config = make_config().expect("failed to make config"); + + assert_eq!( + api_config.base_path, + "http://localhost:9000/authentik/api/v3" + ); + } +} diff --git a/packages/ak-common/src/arbiter.rs b/packages/ak-common/src/arbiter.rs new file mode 100644 index 0000000000..1e92e20dcf --- /dev/null +++ b/packages/ak-common/src/arbiter.rs @@ -0,0 +1,481 @@ +//! Utilities to manage long running tasks, such as servers and watchers, and events propagated +//! between those tasks. +//! +//! Also manages signals sent to the main process. + +use std::{net, os::unix, sync::Arc, time::Duration}; + +use axum_server::Handle; +use eyre::{Report, Result}; +use tokio::{ + signal::unix::{Signal, SignalKind, signal}, + sync::{Mutex, broadcast}, + task::{JoinSet, join_set::Builder}, +}; +use tokio_util::sync::{CancellationToken, WaitForCancellationFuture}; +use tracing::info; + +/// All the signal streams we watch for. We don't create those directly in [`watch_signals`] +/// because that would prevent us from handling errors early. +struct SignalStreams { + hup: Signal, + int: Signal, + quit: Signal, + usr1: Signal, + usr2: Signal, + term: Signal, +} + +impl SignalStreams { + fn new() -> Result { + Ok(Self { + hup: signal(SignalKind::hangup())?, + int: signal(SignalKind::interrupt())?, + quit: signal(SignalKind::quit())?, + usr1: signal(SignalKind::user_defined1())?, + usr2: signal(SignalKind::user_defined2())?, + term: signal(SignalKind::terminate())?, + }) + } +} + +/// Watch for incoming signals and either shutdown the application or dispatch them to receivers. +async fn watch_signals(streams: SignalStreams, arbiter: Arbiter) -> Result<()> { + info!("starting signals watcher"); + let SignalStreams { + mut hup, + mut int, + mut quit, + mut usr1, + mut usr2, + mut term, + } = streams; + loop { + tokio::select! { + _ = hup.recv() => { + info!("signal HUP received"); + arbiter.do_fast_shutdown().await; + }, + _ = int.recv() => { + info!("signal INT received"); + arbiter.do_fast_shutdown().await; + }, + _ = quit.recv() => { + info!("signal QUIT received"); + arbiter.do_fast_shutdown().await; + }, + _ = term.recv() => { + info!("signal TERM received"); + arbiter.do_graceful_shutdown().await; + }, + _ = usr1.recv() => { + info!("signal USR1 received"); + let _ = arbiter.send_event(SignalKind::user_defined1().into()); + }, + _ = usr2.recv() => { + info!("signal USR2 received"); + let _ = arbiter.send_event(SignalKind::user_defined2().into()); + }, + () = arbiter.shutdown() => { + info!("stopping signals watcher"); + return Ok(()); + } + }; + } +} + +/// Manager for long running tasks, such as servers and watchers. +pub struct Tasks { + tasks: JoinSet>, + arbiter: Arbiter, +} + +impl Tasks { + /// Create a new [`Tasks`] manager. + /// + /// # Errors + /// + /// Errors if the creation of signals watcher fails. + pub fn new() -> Result { + let mut tasks = JoinSet::new(); + let arbiter = Arbiter::new(&mut tasks)?; + + Ok(Self { tasks, arbiter }) + } + + /// Build a new task. See [`tokio::task::JoinSet::build_task`] for details. + pub fn build_task(&mut self) -> Builder<'_, Result<()>> { + self.tasks.build_task() + } + + /// Get an [`Arbiter`]. + pub fn arbiter(&self) -> Arbiter { + self.arbiter.clone() + } + + /// Run the tasks until completion. If one of them fails, terminate the program immediately. + pub async fn run(self) -> Vec { + let Self { mut tasks, arbiter } = self; + + let mut errors = Vec::new(); + + if let Some(result) = tasks.join_next().await { + arbiter.do_graceful_shutdown().await; + + match result { + Ok(Ok(())) => {} + Ok(Err(err)) => { + arbiter.do_fast_shutdown().await; + errors.push(err); + } + Err(err) => { + arbiter.do_fast_shutdown().await; + errors.push(Report::new(err)); + } + } + + while let Some(result) = tasks.join_next().await { + match result { + Ok(Ok(())) => {} + Ok(Err(err)) => errors.push(err), + Err(err) => errors.push(Report::new(err)), + } + } + } + + errors + } +} + +/// Manage shutdown state and several communication channels. +#[derive(Clone)] +pub struct Arbiter { + /// Token to shutdown the application immediately. + fast_shutdown: CancellationToken, + /// Token to shutdown the application gracefully. + graceful_shutdown: CancellationToken, + /// Token set when any shutdown is triggered. + shutdown: CancellationToken, + + /// axum-server [`Handle`] to manage. + net_handles: Arc>>>, + unix_handles: Arc>>>, + + /// Broadcaster of program-wide events, except shutdown which is handled by tokens above. + events_tx: broadcast::Sender, +} + +impl Arbiter { + fn new(tasks: &mut JoinSet>) -> Result { + let (events_tx, _events_rx) = broadcast::channel(1024); + let arbiter = Self { + fast_shutdown: CancellationToken::new(), + graceful_shutdown: CancellationToken::new(), + shutdown: CancellationToken::new(), + + // 5 is http, https, metrics and a bit of room + net_handles: Arc::new(Mutex::new(Vec::with_capacity(5))), + // 2 is http and metrics + unix_handles: Arc::new(Mutex::new(Vec::with_capacity(2))), + + events_tx, + }; + + let streams = SignalStreams::new()?; + + tasks + .build_task() + .name(&format!("{}::watch_signals", module_path!())) + .spawn(watch_signals(streams, arbiter.clone()))?; + + Ok(arbiter) + } + + /// Add a new [`Handle`] to be managed, specifically for [`net::SocketAddr`] addresses. + /// + /// This handle will be shutdown when this arbiter is shutdown. + pub async fn add_net_handle(&self, handle: Handle) { + self.net_handles.lock().await.push(handle); + } + + /// Add a new [`Handle`] to be managed, specifically for [`unix::net::SocketAddr`] addresses. + /// + /// This handle will be shutdown when this arbiter is shutdown. + pub async fn add_unix_handle(&self, handle: Handle) { + self.unix_handles.lock().await.push(handle); + } + + /// Future that will complete when the application needs to shutdown immediately. + /// + /// Consumers listening on this must also listen on [`Arbiter::graceful_shutdown`], as only one + /// of those is set upon shutdown. + /// + /// It is also possible to use [`Arbiter::shutdown`] when the behaviour is the same between a + /// fast and a graceful shutdown. + pub fn fast_shutdown(&self) -> WaitForCancellationFuture<'_> { + self.fast_shutdown.cancelled() + } + + /// Future that will complete when the application needs to shutdown gracefully. + /// + /// Consumers listening on this must also listen on [`Arbiter::fast_shutdown`], as only one + /// of those is set upon shutdown. + /// + /// It is also possible to use [`Arbiter::shutdown`] when the behaviour is the same between a + /// fast and a graceful shutdown. + pub fn graceful_shutdown(&self) -> WaitForCancellationFuture<'_> { + self.graceful_shutdown.cancelled() + } + + /// Future that will complete when the application needs to shutdown, either immediately or + /// gracefully. It's a helper so users that don't make the difference between immediate and + /// graceful shutdown don't need to handle two scenarios. + pub fn shutdown(&self) -> WaitForCancellationFuture<'_> { + self.shutdown.cancelled() + } + + /// Shutdown the application immediately. + pub async fn do_fast_shutdown(&self) { + info!("arbiter has been told to shutdown immediately"); + self.unix_handles + .lock() + .await + .iter() + .for_each(Handle::shutdown); + self.net_handles + .lock() + .await + .iter() + .for_each(Handle::shutdown); + info!("all webservers have been shutdown, shutting down the other tasks immediately"); + self.fast_shutdown.cancel(); + self.shutdown.cancel(); + } + + /// Shutdown the application gracefully. + pub async fn do_graceful_shutdown(&self) { + info!("arbiter has been told to shutdown gracefully"); + // Match the value in lifecycle/gunicorn.conf.py for graceful shutdown + let timeout = Some(Duration::from_secs(30 + 5)); + self.unix_handles + .lock() + .await + .iter() + .for_each(|handle| handle.graceful_shutdown(timeout)); + self.net_handles + .lock() + .await + .iter() + .for_each(|handle| handle.graceful_shutdown(timeout)); + info!("all webservers have been shutdown, shutting down the other tasks gracefully"); + self.graceful_shutdown.cancel(); + self.shutdown.cancel(); + } + + /// Create a new [`broadcast::Receiver`] to listen for signals sent to the main process. This + /// may not include all signals we catch, since some of those will shutdown the application. + pub fn events_subscribe(&self) -> broadcast::Receiver { + self.events_tx.subscribe() + } + + /// Send a value on the config changes watch channel. + /// + /// # Errors + /// + /// See [`broadcast::Sender::send`]. + pub fn send_event(&self, value: Event) -> Result> { + self.events_tx.send(value) + } +} + +/// Events propagated throughout the program. +#[derive(Clone, Debug, PartialEq, Eq)] +pub enum Event { + /// A signal has been received. + Signal(SignalKind), + /// The configuration has been reloaded from sources. + ConfigChanged, +} + +impl From for Event { + fn from(value: SignalKind) -> Self { + Self::Signal(value) + } +} + +#[cfg(test)] +mod tests { + mod events { + use nix::sys::signal::{Signal, raise}; + use tokio::time::sleep; + + use super::super::*; + + async fn signal_self(signal: Signal) { + raise(signal).expect("failed to send signal"); + sleep(Duration::from_millis(50)).await; + } + + #[tokio::test] + async fn signals_hup() { + let tasks = Tasks::new().expect("tasks to create successfully"); + let arbiter = tasks.arbiter(); + + signal_self(Signal::SIGHUP).await; + + assert!(arbiter.fast_shutdown.is_cancelled()); + assert!(!arbiter.graceful_shutdown.is_cancelled()); + assert!(arbiter.shutdown.is_cancelled()); + assert_eq!(tasks.run().await.len(), 0); + } + + #[tokio::test] + async fn signals_quit() { + let tasks = Tasks::new().expect("tasks to create successfully"); + let arbiter = tasks.arbiter(); + + signal_self(Signal::SIGQUIT).await; + + assert!(arbiter.fast_shutdown.is_cancelled()); + assert!(!arbiter.graceful_shutdown.is_cancelled()); + assert!(arbiter.shutdown.is_cancelled()); + assert_eq!(tasks.run().await.len(), 0); + } + + #[tokio::test] + async fn signals_int() { + let tasks = Tasks::new().expect("tasks to create successfully"); + let arbiter = tasks.arbiter(); + + signal_self(Signal::SIGINT).await; + + assert!(arbiter.fast_shutdown.is_cancelled()); + assert!(!arbiter.graceful_shutdown.is_cancelled()); + assert!(arbiter.shutdown.is_cancelled()); + assert_eq!(tasks.run().await.len(), 0); + } + + #[tokio::test] + async fn signals_term() { + let tasks = Tasks::new().expect("tasks to create successfully"); + let arbiter = tasks.arbiter(); + + signal_self(Signal::SIGTERM).await; + + assert!(!arbiter.fast_shutdown.is_cancelled()); + assert!(arbiter.graceful_shutdown.is_cancelled()); + assert!(arbiter.shutdown.is_cancelled()); + assert_eq!(tasks.run().await.len(), 0); + } + + #[tokio::test] + async fn signals_other_no_listener() { + let tasks = Tasks::new().expect("tasks to create successfully"); + let arbiter = tasks.arbiter(); + + signal_self(Signal::SIGUSR1).await; + signal_self(Signal::SIGUSR2).await; + + arbiter.do_fast_shutdown().await; + assert_eq!(tasks.run().await.len(), 0); + } + + #[tokio::test] + async fn signals_usr1() { + let tasks = Tasks::new().expect("tasks to create successfully"); + let arbiter = tasks.arbiter(); + let mut events_rx = arbiter.events_subscribe(); + + signal_self(Signal::SIGUSR1).await; + + assert_eq!( + events_rx.recv().await.expect("failed to receive event"), + Event::Signal(SignalKind::user_defined1()) + ); + } + + #[tokio::test] + async fn signals_usr2() { + let tasks = Tasks::new().expect("tasks to create successfully"); + let arbiter = tasks.arbiter(); + let mut events_rx = arbiter.events_subscribe(); + + signal_self(Signal::SIGUSR2).await; + + assert_eq!( + events_rx.recv().await.expect("failed to receive event"), + Event::Signal(SignalKind::user_defined2()), + ); + } + + #[tokio::test] + async fn events() { + let tasks = Tasks::new().expect("tasks to create successfully"); + let arbiter = tasks.arbiter(); + let mut events_rx1 = arbiter.events_subscribe(); + let mut events_rx2 = arbiter.events_subscribe(); + + let _ = arbiter.send_event(Event::ConfigChanged); + + assert_eq!( + events_rx1.recv().await.expect("failed to receive event"), + Event::ConfigChanged, + ); + assert_eq!( + events_rx2.recv().await.expect("failed to receive event"), + Event::ConfigChanged, + ); + } + } + + mod tasks { + use eyre::eyre; + + use super::super::*; + + async fn success_task(arbiter: Arbiter) -> Result<()> { + tokio::select! { + () = arbiter.fast_shutdown() => {}, + () = arbiter.graceful_shutdown() => {}, + } + Ok(()) + } + + async fn error_task(arbiter: Arbiter) -> Result<()> { + arbiter.shutdown().await; + Err(eyre!("error")) + } + + #[tokio::test] + async fn successful_tasks() { + let mut tasks = Tasks::new().expect("tasks to create successfully"); + let arbiter = tasks.arbiter(); + + for _ in 0..10_u8 { + tasks + .build_task() + .spawn(success_task(arbiter.clone())) + .expect("failed to spawn task"); + } + arbiter.do_fast_shutdown().await; + + assert_eq!(tasks.run().await.len(), 0); + } + + #[tokio::test] + async fn error_tasks() { + let mut tasks = Tasks::new().expect("tasks to create successfully"); + let arbiter = tasks.arbiter(); + + for _ in 0..10_u8 { + tasks + .build_task() + .spawn(error_task(arbiter.clone())) + .expect("failed to spawn task"); + } + arbiter.do_fast_shutdown().await; + + assert_eq!(tasks.run().await.len(), 10); + } + } +} diff --git a/packages/ak-common/src/config/mod.rs b/packages/ak-common/src/config/mod.rs new file mode 100644 index 0000000000..6e32fa489b --- /dev/null +++ b/packages/ak-common/src/config/mod.rs @@ -0,0 +1,553 @@ +use std::{ + env, + fs::{self, read_to_string}, + path::PathBuf, + sync::{Arc, OnceLock}, +}; + +use arc_swap::ArcSwap; +use eyre::Result; +use notify::{RecommendedWatcher, Watcher as _}; +use serde_json::{Map, Value}; +use tokio::{sync::mpsc, task::spawn_blocking}; +use tracing::{error, info, warn}; +use url::Url; + +pub mod schema; +pub use schema::Config; + +use crate::{ + arbiter::{Arbiter, Event, Tasks}, + config::schema::KEYS_TO_PARSE_AS_LIST, +}; + +static DEFAULT_CONFIG: &str = include_str!("../../../../authentik/lib/default.yml"); +static CONFIG_MANAGER: OnceLock = OnceLock::new(); + +/// List of paths from where to read YAML configuration. +fn config_paths() -> Vec { + let mut config_paths = vec![ + PathBuf::from("/etc/authentik/config.yml"), + PathBuf::from(""), + ]; + if let Ok(workspace) = env::var("WORKSPACE_DIR") { + let _ = env::set_current_dir(workspace); + } + + if let Ok(paths) = glob::glob("/etc/authentik/config.d/*.yml") { + config_paths.extend(paths.filter_map(Result::ok)); + } + + let environment = env::var("AUTHENTIK_ENV").unwrap_or_else(|_| "local".to_owned()); + + let mut computed_paths = Vec::new(); + + for path in config_paths { + if let Ok(metadata) = fs::metadata(&path) { + if !metadata.is_dir() { + computed_paths.push(path); + } + } else { + let env_paths = vec![ + path.join(format!("{environment}.yml")), + path.join(format!("{environment}.env.yml")), + ]; + for env_path in env_paths { + if let Ok(metadata) = fs::metadata(&env_path) + && !metadata.is_dir() + { + computed_paths.push(env_path); + } + } + } + } + + computed_paths +} + +impl Config { + /// Load the configuration from files and environment into a [`Value`], allowing for extra + /// processing later. + fn load_raw(config_paths: &[PathBuf], overrides: Option) -> Result { + let mut builder = config_rs::Config::builder().add_source(config_rs::File::from_str( + DEFAULT_CONFIG, + config_rs::FileFormat::Yaml, + )); + for path in config_paths { + builder = builder.add_source( + config_rs::File::from(path.as_path()).format(config_rs::FileFormat::Yaml), + ); + } + let mut env_source = config_rs::Environment::with_prefix("AUTHENTIK") + .prefix_separator("_") + .separator("__") + .try_parsing(true) + .list_separator(","); + for key in KEYS_TO_PARSE_AS_LIST { + env_source = env_source.with_list_parse_key(key); + } + builder = builder.add_source(env_source); + if let Some(overrides) = overrides { + builder = builder.add_source(config_rs::File::from_str( + &overrides.to_string(), + config_rs::FileFormat::Json, + )); + } + let config = builder.build()?; + let raw = config.try_deserialize::()?; + Ok(raw) + } + + /// Expand a value if it matches an env:// or file:// protocol. + /// + /// If expanded from a file, returns the file path for it to be watched later. + fn expand_value(value: &str) -> (String, Option) { + let value = value.trim(); + if let Ok(uri) = Url::parse(value) { + let fallback = uri.query().unwrap_or("").to_owned(); + match uri.scheme() { + "file" => { + let path = uri.path(); + match read_to_string(path).map(|s| s.trim().to_owned()) { + Ok(value) => return (value, Some(PathBuf::from(path))), + Err(err) => { + error!( + ?err, + "failed to read config value from '{path}', using fallback" + ); + return (fallback, Some(PathBuf::from(path))); + } + } + } + "env" => { + if let Some(var) = uri.host_str() { + if let Ok(value) = env::var(var) { + return (value, None); + } + return (fallback, None); + } + } + _ => {} + } + } + + (value.to_owned(), None) + } + + /// Expand the configuration for env:// and file:// values. + /// + /// Returns the expanded configuration and a list of file paths for which to watch changes. + fn expand(mut raw: Value) -> (Value, Vec) { + let mut file_paths = Vec::new(); + let value = match &mut raw { + Value::String(s) => { + let (v, path) = Self::expand_value(s); + if let Some(path) = path { + file_paths.push(path); + } + Value::String(v) + } + Value::Array(arr) => { + let mut res = Vec::with_capacity(arr.len()); + for v in arr { + let (expanded, paths) = Self::expand(v.clone()); + file_paths.extend(paths); + res.push(expanded); + } + Value::Array(res) + } + Value::Object(map) => { + let mut res = Map::with_capacity(map.len()); + for (k, v) in map { + let (expanded, paths) = Self::expand(v.clone()); + file_paths.extend(paths); + res.insert(k.clone(), expanded); + } + Value::Object(res) + } + _ => raw, + }; + (value, file_paths) + } + + /// Load the configuration. + fn load(config_paths: &[PathBuf], overrides: Option) -> Result<(Self, Vec)> { + let raw = Self::load_raw(config_paths, overrides)?; + let (expanded, file_paths) = Self::expand(raw); + let config: Self = serde_json::from_value(expanded)?; + Ok((config, file_paths)) + } +} + +/// Manager of the config. Handles reloading when changed on disk. +struct ConfigManager { + config: ArcSwap, + config_paths: Vec, + watch_paths: Vec, +} + +/// Initialize the configuration. It relies on a global [`OnceLock`] and must be called before +/// other methods are called. +pub fn init() -> Result<()> { + info!("loading config"); + let config_paths = config_paths(); + init_with_paths(config_paths)?; + info!("config loaded"); + Ok(()) +} + +/// Initialize the configuration from a list of specific paths to read if from. +fn init_with_paths(config_paths: Vec) -> Result<()> { + let (config, mut other_paths) = Config::load(&config_paths, None)?; + let mut watch_paths = config_paths.clone(); + watch_paths.append(&mut other_paths); + let manager = ConfigManager { + config: ArcSwap::from_pointee(config), + config_paths, + watch_paths, + }; + CONFIG_MANAGER.get_or_init(|| manager); + Ok(()) +} + +/// Watch for configuration changes, reload the configuration in memory and send events. +/// +/// [`init`] must be called before this is used. +async fn watch_config(arbiter: Arbiter) -> Result<()> { + let (tx, mut rx) = mpsc::channel(100); + let mut watcher = RecommendedWatcher::new( + move |res: notify::Result| { + if let Ok(event) = res + && let notify::EventKind::Modify(_) = &event.kind + { + let _ = tx.blocking_send(()); + } + }, + notify::Config::default(), + )?; + let watch_paths = &CONFIG_MANAGER + .get() + .expect("failed to get config, has it been initialized?") + .watch_paths; + for path in watch_paths { + watcher.watch(path.as_ref(), notify::RecursiveMode::NonRecursive)?; + } + + let _ = arbiter.send_event(Event::ConfigChanged); + info!(paths = ?watch_paths, "config file watcher started"); + + loop { + tokio::select! { + res = rx.recv() => { + info!("a configuration file changed, reloading config"); + if res.is_none() { + break; + } + let manager = CONFIG_MANAGER.get().expect("failed to get config, has it been initialized?"); + match spawn_blocking(|| Config::load(&manager.config_paths, None)).await? { + Ok((new_config, _)) => { + info!("configuration reloaded"); + manager.config.store(Arc::new(new_config)); + if let Err(err) = arbiter.send_event(Event::ConfigChanged) { + warn!(?err, "failed to notify of config change, aborting"); + break; + } + } + Err(err) => { + warn!(?err, "failed to reload config, continuing with previous config"); + } + } + }, + () = arbiter.shutdown() => break, + } + } + + info!("stopping config file watcher"); + + Ok(()) +} + +/// Start the configuration watcher. +/// +/// [`init`] must be called before this is used. +pub fn start(tasks: &mut Tasks) -> Result<()> { + info!("starting config file watcher"); + let arbiter = tasks.arbiter(); + tasks + .build_task() + .name(&format!("{}::watch_config", module_path!())) + .spawn(watch_config(arbiter))?; + Ok(()) +} + +/// Get the currently stored configuration. +/// +/// [`init`] must be called before this is used. +pub fn get() -> arc_swap::Guard> { + let manager = CONFIG_MANAGER + .get() + .expect("failed to get config, has it been initialized?"); + manager.config.load() +} + +/// Test helper to set arbitrary config values. +#[cfg(test)] +pub fn set(value: Value) -> Result<()> { + let manager = CONFIG_MANAGER + .get() + .expect("failed to get config, has it been initialized?"); + let (new_config, _) = Config::load(&manager.config_paths, Some(value))?; + manager.config.store(Arc::new(new_config)); + Ok(()) +} + +#[cfg(test)] +mod tests { + use std::{env, fs::File, io::Write as _, path::PathBuf}; + + use serde_json::json; + use tempfile::tempdir; + + use crate::arbiter::{Event, Tasks}; + + #[test] + fn default_config() { + let (config, _) = super::Config::load(&[], None).expect("default config doesn't load"); + assert_eq!(config.secret_key, ""); + } + + #[test] + fn config_paths() { + let temp_dir = tempdir().expect("failed to create temp dir"); + for f in &[ + "local.env.yml", + "local.env.yaml", + "test_config_paths.yml", + "test_config_paths.env.yml", + "test_config_paths.env.yaml", + ] { + File::create(temp_dir.path().join(f)).expect("failed to create file"); + } + #[expect(unsafe_code, reason = "testing")] + // SAFETY: testing + unsafe { + env::set_var("WORKSPACE_DIR", temp_dir.path()); + env::set_var("AUTHENTIK_ENV", "test_config_paths"); + } + + let paths = super::config_paths(); + + assert_eq!( + &paths, + &[ + PathBuf::from("test_config_paths.yml"), + PathBuf::from("test_config_paths.env.yml"), + ] + ); + } + + #[test] + fn expand() { + let temp_dir = tempdir().expect("failed to create temp dir"); + + let secret_key_path = temp_dir.path().join("secret_key"); + let mut secret_key_file = File::create(&secret_key_path).expect("failed to create file"); + write!(secret_key_file, "my_secret_key").expect("failed to write to file"); + + let config_file_path = temp_dir.path().join("config"); + let mut config_file = File::create(&config_file_path).expect("failed to create file"); + writeln!( + config_file, + "secret_key: file://{}\npostgresql:\n password: env://TEST_CONFIG_POSTGRES_PASS", + secret_key_path.display() + ) + .expect("failed to write to file"); + + #[expect(unsafe_code, reason = "testing")] + // SAFETY: testing + unsafe { + env::set_var("TEST_CONFIG_POSTGRES_PASS", "my_postgres_pass"); + } + + let (config, config_paths) = + super::Config::load(&[config_file_path], None).expect("failed to load config"); + + assert_eq!(config.secret_key, "my_secret_key"); + assert_eq!(config.postgresql.password, "my_postgres_pass"); + assert_eq!(config_paths, &[secret_key_path]); + } + + #[test] + fn init() { + super::init_with_paths(vec![]).expect("failed to init config"); + } + + #[tokio::test] + async fn watcher() { + let temp_dir = tempdir().expect("failed to create temp dir"); + + let secret_key_path = temp_dir.path().join("secret_key"); + let mut secret_key_file = File::create(&secret_key_path).expect("failed to create file"); + write!(secret_key_file, "my_secret_key").expect("failed to write to file"); + drop(secret_key_file); + + let config_file_path = temp_dir.path().join("config"); + let mut config_file = File::create(&config_file_path).expect("failed to create file"); + writeln!( + config_file, + "secret_key: file://{}\npostgresql:\n password: my_postgres_pass", + secret_key_path.display() + ) + .expect("failed to write to file"); + drop(config_file); + + super::init_with_paths(vec![config_file_path.clone()]).expect("failed to init config"); + + let mut tasks = Tasks::new().expect("failed to create tasks"); + let arbiter = tasks.arbiter(); + let mut events_rx = arbiter.events_subscribe(); + + super::start(&mut tasks).expect("failed to start watcher"); + + assert_eq!(super::get().secret_key, "my_secret_key"); + assert_eq!(super::get().postgresql.password, "my_postgres_pass"); + + let _ = events_rx.recv().await; + let mut secret_key_file = File::create(&secret_key_path).expect("failed to open file"); + write!(secret_key_file, "my_other_secret_key").expect("failed to write to file"); + drop(secret_key_file); + + assert_eq!( + events_rx.recv().await.expect("failed to receive event"), + Event::ConfigChanged, + ); + while !events_rx.is_empty() { + assert_eq!( + events_rx.recv().await.expect("failed to receive event"), + Event::ConfigChanged, + ); + } + + assert_eq!(super::get().secret_key, "my_other_secret_key"); + assert_eq!(super::get().postgresql.password, "my_postgres_pass"); + + let mut config_file = File::create(&config_file_path).expect("failed to open file"); + writeln!( + config_file, + "secret_key: file://{}\npostgresql:\n password: my_new_postgres_pass", + secret_key_path.display() + ) + .expect("failed to write to file"); + drop(config_file); + + assert_eq!( + events_rx.recv().await.expect("failed to receive event"), + Event::ConfigChanged, + ); + while !events_rx.is_empty() { + assert_eq!( + events_rx.recv().await.expect("failed to receive event"), + Event::ConfigChanged, + ); + } + + assert_eq!(super::get().secret_key, "my_other_secret_key"); + assert_eq!(super::get().postgresql.password, "my_new_postgres_pass"); + } + + #[test] + fn set() { + super::init_with_paths(vec![]).expect("failed to init config"); + assert_eq!(super::get().secret_key, String::new()); + super::set(json!({"secret_key": "my_new_secret_key"})).expect("failed to set config"); + assert_eq!(super::get().secret_key, "my_new_secret_key"); + } + + #[test] + fn env_bool_true() { + #[expect(unsafe_code, reason = "testing")] + // SAFETY: testing + unsafe { + env::set_var("AUTHENTIK_DEBUG", "true"); + } + + let (config, _) = super::Config::load(&[], None).expect("failed to load config"); + + assert!(config.debug); + } + + #[test] + fn env_bool_false() { + #[expect(unsafe_code, reason = "testing")] + // SAFETY: testing + unsafe { + env::set_var("AUTHENTIK_DEBUG", "false"); + } + + let (config, _) = super::Config::load(&[], None).expect("failed to load config"); + + assert!(!config.debug); + } + + // See https://github.com/rust-cli/config-rs/issues/443 + // #[test] + // fn env_list_empty() { + // #[expect(unsafe_code, reason = "testing")] + // // SAFETY: testing + // unsafe { + // env::set_var("AUTHENTIK_LISTEN__HTTP", ""); + // } + // + // let (config, _) = super::Config::load(&[], None).expect("failed to load config"); + // + // assert_eq!(config.listen.http, []); + // } + + #[test] + fn env_list_one_element() { + #[expect(unsafe_code, reason = "testing")] + // SAFETY: testing + unsafe { + env::set_var("AUTHENTIK_LISTEN__HTTP", "[::1]:9000"); + } + + let (config, _) = super::Config::load(&[], None).expect("failed to load config"); + + assert_eq!( + config.listen.http, + ["[::1]:9000".parse().expect("infallible")] + ); + } + + #[test] + fn env_list_many_elements() { + #[expect(unsafe_code, reason = "testing")] + // SAFETY: testing + unsafe { + env::set_var("AUTHENTIK_LISTEN__HTTP", "[::1]:9000,[::1]:9001"); + } + + let (config, _) = super::Config::load(&[], None).expect("failed to load config"); + + assert_eq!( + config.listen.http, + [ + "[::1]:9000".parse().expect("infallible"), + "[::1]:9001".parse().expect("infallible") + ] + ); + } + + #[test] + fn env_string() { + #[expect(unsafe_code, reason = "testing")] + // SAFETY: testing + unsafe { + env::set_var("AUTHENTIK_SECRET_KEY", "my_secret_key"); + } + + let (config, _) = super::Config::load(&[], None).expect("failed to load config"); + + assert_eq!(config.secret_key, "my_secret_key",); + } +} diff --git a/packages/ak-common/src/config/schema.rs b/packages/ak-common/src/config/schema.rs new file mode 100644 index 0000000000..5d110051d8 --- /dev/null +++ b/packages/ak-common/src/config/schema.rs @@ -0,0 +1,104 @@ +use std::{collections::HashMap, net::SocketAddr, num::NonZeroUsize}; + +use ipnet::IpNet; +use serde::{Deserialize, Serialize}; + +pub(super) const KEYS_TO_PARSE_AS_LIST: [&str; 4] = [ + "listen.http", + "listen.metrics", + "listen.trusted_proxy_cidrs", + "log.http_headers", +]; + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct Config { + pub postgresql: PostgreSQLConfig, + + pub listen: ListenConfig, + + pub debug: bool, + #[serde(default)] + pub secret_key: String, + + pub log_level: String, + pub log: LogConfig, + + pub error_reporting: ErrorReportingConfig, + + pub compliance: ComplianceConfig, + + pub web: WebConfig, + + pub worker: WorkerConfig, + + // Outpost specific fields + pub host: Option, + pub token: Option, + pub insecure: Option, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct PostgreSQLConfig { + pub host: String, + pub port: u16, + pub user: String, + pub password: String, + pub name: String, + + pub sslmode: String, + pub sslrootcert: Option, + pub sslcert: Option, + pub sslkey: Option, + + pub conn_max_age: Option, + pub conn_health_checks: bool, + + pub default_schema: String, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct ListenConfig { + pub http: Vec, + pub metrics: Vec, + pub debug_tokio: SocketAddr, + pub trusted_proxy_cidrs: Vec, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct LogConfig { + pub http_headers: Vec, + pub rust_log: HashMap, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct ErrorReportingConfig { + pub enabled: bool, + pub sentry_dsn: Option, + pub environment: String, + pub send_pii: bool, + pub sample_rate: f32, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct ComplianceConfig { + pub fips: ComplianceFipsConfig, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct ComplianceFipsConfig { + pub enabled: bool, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct WebConfig { + pub path: String, + pub timeout_http_read_header: String, + pub timeout_http_read: String, + pub timeout_http_write: String, + pub timeout_http_idle: String, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct WorkerConfig { + pub processes: NonZeroUsize, +} diff --git a/packages/ak-common/src/db.rs b/packages/ak-common/src/db.rs new file mode 100644 index 0000000000..293faf4439 --- /dev/null +++ b/packages/ak-common/src/db.rs @@ -0,0 +1,220 @@ +use std::{str::FromStr as _, sync::OnceLock, time::Duration}; + +use eyre::Result; +use sqlx::{ + ConnectOptions as _, Executor as _, PgConnection, PgPool, + postgres::{PgConnectOptions, PgPoolOptions, PgSslMode}, +}; +use tracing::{info, log::LevelFilter, trace}; + +use crate::{ + arbiter::{Arbiter, Event, Tasks}, + authentik_full_version, config, + mode::Mode, +}; + +static DB: OnceLock = OnceLock::new(); + +fn get_connect_opts() -> Result { + let config = config::get(); + let mut opts = PgConnectOptions::new() + .application_name(&format!( + "authentik-{}@{}", + Mode::get(), + authentik_full_version() + )) + .host(&config.postgresql.host) + .port(config.postgresql.port) + .username(&config.postgresql.user) + .password(&config.postgresql.password) + .database(&config.postgresql.name) + .ssl_mode(PgSslMode::from_str(&config.postgresql.sslmode)?); + if let Some(sslrootcert) = &config.postgresql.sslrootcert { + opts = opts.ssl_root_cert_from_pem(sslrootcert.as_bytes().to_vec()); + } + if let Some(sslcert) = &config.postgresql.sslcert { + opts = opts.ssl_client_cert_from_pem(sslcert.as_bytes()); + } + if let Some(sslkey) = &config.postgresql.sslkey { + opts = opts.ssl_client_key_from_pem(sslkey.as_bytes()); + } + Ok(opts) +} + +async fn update_connect_opts_on_config_change(arbiter: Arbiter) -> Result<()> { + let mut events_rx = arbiter.events_subscribe(); + info!("starting database watcher for config changes"); + loop { + tokio::select! { + Ok(Event::ConfigChanged) = events_rx.recv() => { + trace!("config change received, refreshing database connection options"); + let db = get(); + db.set_connect_options(get_connect_opts()?); + }, + () = arbiter.shutdown() => { + info!("stopping database watcher for config changes"); + return Ok(()); + }, + } + } +} + +pub async fn init(tasks: &mut Tasks) -> Result<()> { + info!("initializing database pool"); + let options = get_connect_opts()?; + let config = config::get(); + + let pool_options = PgPoolOptions::new() + .min_connections(1) + .max_connections(4) + .acquire_time_level(LevelFilter::Trace) + .max_lifetime(config.postgresql.conn_max_age.map(Duration::from_secs)) + .test_before_acquire(config.postgresql.conn_health_checks) + .after_connect(|conn, _meta| { + Box::pin(async move { + let application_name = + format!("authentik-{}@{}", Mode::get(), authentik_full_version()); + let default_schema = &config::get().postgresql.default_schema; + let query = format!( + "SET application_name = '{application_name}'; SET search_path = \ + '{default_schema}';" + ); + conn.execute(query.as_str()).await?; + Ok(()) + }) + }); + + let pool = pool_options.connect_with(options).await?; + DB.get_or_init(|| pool); + + let arbiter = tasks.arbiter(); + tasks + .build_task() + .name(&format!( + "{}::update_connect_opts_on_config_change", + module_path!(), + )) + .spawn(update_connect_opts_on_config_change(arbiter))?; + + info!("database pool initialized"); + Ok(()) +} + +pub fn get() -> &'static PgPool { + DB.get() + .expect("failed to get db, has it been initialized?") +} + +pub async fn create_conn() -> Result { + let options = get_connect_opts()?; + let conn = options.connect().await?; + Ok(conn) +} + +#[cfg(test)] +mod tests { + use serde_json::json; + use sqlx::postgres::PgSslMode; + use tokio::time::{Duration, sleep}; + + use crate::{ + arbiter::{Event, Tasks}, + config, + }; + + #[tokio::test] + async fn init() { + std::env::set_current_dir(format!("{}/../../", env!("CARGO_MANIFEST_DIR"))) + .expect("failed to chdir"); + config::init().expect("failed to init config"); + let mut tasks = Tasks::new().expect("failed to create tasks"); + + super::init(&mut tasks).await.expect("failed to init db"); + } + + #[tokio::test] + async fn get() { + std::env::set_current_dir(format!("{}/../../", env!("CARGO_MANIFEST_DIR"))) + .expect("failed to chdir"); + config::init().expect("failed to init config"); + let mut tasks = Tasks::new().expect("failed to create tasks"); + + super::init(&mut tasks).await.expect("failed to init db"); + + sqlx::query("SELECT 1") + .execute(super::get()) + .await + .expect("failed to execute query"); + } + + #[tokio::test] + async fn conn_options() { + std::env::set_current_dir(format!("{}/../../", env!("CARGO_MANIFEST_DIR"))) + .expect("failed to chdir"); + config::init().expect("failed to init config"); + let mut tasks = Tasks::new().expect("failed to create tasks"); + super::init(&mut tasks).await.expect("failed to init db"); + assert_eq!(config::get().postgresql.default_schema, "public"); + + let row: (String,) = sqlx::query_as("SHOW search_path") + .fetch_one(super::get()) + .await + .expect("failed to run query"); + assert_eq!(row.0, "public"); + + let row: (String,) = sqlx::query_as("SHOW application_name") + .fetch_one(super::get()) + .await + .expect("failed to run query"); + assert!(row.0.contains("authentik")); + } + + #[tokio::test] + async fn config_update() { + std::env::set_current_dir(format!("{}/../../", env!("CARGO_MANIFEST_DIR"))) + .expect("failed to chdir"); + config::init().expect("failed to init config"); + let mut tasks = Tasks::new().expect("failed to create tasks"); + let arbiter = tasks.arbiter(); + + super::init(&mut tasks).await.expect("failed to init db"); + // Wait for the background tasks to start. + sleep(Duration::from_millis(100)).await; + + assert!(matches!( + super::get().connect_options().get_ssl_mode(), + PgSslMode::Disable + )); + + config::set(json!({ + "postgresql": { + "sslmode": "prefer", + }, + })) + .expect("failed to set config"); + arbiter + .send_event(Event::ConfigChanged) + .expect("failed to send config changed event"); + // Wait for the change to propagate. + sleep(Duration::from_millis(100)).await; + + assert!(matches!( + super::get().connect_options().get_ssl_mode(), + PgSslMode::Prefer + )); + } + + #[tokio::test] + async fn create_conn() { + std::env::set_current_dir(format!("{}/../../", env!("CARGO_MANIFEST_DIR"))) + .expect("failed to chdir"); + config::init().expect("failed to init config"); + + let mut conn = super::create_conn().await.expect("failed to create conn"); + + sqlx::query("SELECT 1") + .execute(&mut conn) + .await + .expect("failed to run query"); + } +} diff --git a/packages/ak-common/src/lib.rs b/packages/ak-common/src/lib.rs new file mode 100644 index 0000000000..09d67b87b4 --- /dev/null +++ b/packages/ak-common/src/lib.rs @@ -0,0 +1,36 @@ +//! Various utilities used by other crates + +pub mod api; +pub mod arbiter; +pub use arbiter::{Arbiter, Event, Tasks}; +pub mod config; +#[cfg(feature = "core")] +pub mod db; +pub mod mode; +pub use mode::Mode; +pub mod tls; +pub mod tokio; +pub mod tracing; + +pub const VERSION: &str = env!("CARGO_PKG_VERSION"); + +pub fn authentik_build_hash(fallback: Option) -> String { + std::env::var("GIT_BUILD_HASH").unwrap_or_else(|_| fallback.unwrap_or_default()) +} + +pub fn authentik_full_version() -> String { + let build_hash = authentik_build_hash(None); + if build_hash.is_empty() { + VERSION.to_owned() + } else { + format!("{VERSION}+{build_hash}") + } +} + +pub fn user_agent_outpost() -> String { + format!("goauthentik.io/outpost/{}", authentik_full_version()) +} + +pub fn authentik_user_agent() -> String { + format!("authentik@{}", authentik_full_version()) +} diff --git a/packages/ak-common/src/mode.rs b/packages/ak-common/src/mode.rs new file mode 100644 index 0000000000..7181bd4cd0 --- /dev/null +++ b/packages/ak-common/src/mode.rs @@ -0,0 +1,193 @@ +//! Utilities to manage the current execution mode. + +use std::{ + env, + path::PathBuf, + sync::atomic::{AtomicU8, Ordering}, +}; + +use eyre::{Result, eyre}; +use tracing::trace; + +/// Stores the current mode. +static MODE: AtomicU8 = AtomicU8::new(0); + +fn mode_path() -> PathBuf { + env::temp_dir().join("authentik-mode") +} + +/// authentik execution mode. +#[derive(Debug, Copy, Clone, PartialEq, Eq)] +#[repr(u8)] +pub enum Mode { + /// Running both the server and the worker. + #[cfg(feature = "core")] + AllInOne = 0, + /// Running the server. + #[cfg(feature = "core")] + Server = 1, + /// Running the worker. + #[cfg(feature = "core")] + Worker = 2, + /// Running the proxy outpost. + #[cfg(feature = "proxy")] + Proxy = 128, +} + +impl std::fmt::Display for Mode { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + match self { + #[cfg(feature = "core")] + Self::AllInOne => write!(f, "allinone"), + #[cfg(feature = "core")] + Self::Server => write!(f, "server"), + #[cfg(feature = "core")] + Self::Worker => write!(f, "worker"), + #[cfg(feature = "proxy")] + Self::Proxy => write!(f, "proxy"), + } + } +} + +impl From for u8 { + #[expect(clippy::as_conversions, reason = "repr of enum is u8")] + fn from(value: Mode) -> Self { + value as Self + } +} + +impl Mode { + /// Get the current mode. + pub fn get() -> Self { + match MODE.load(Ordering::Relaxed) { + #[cfg(feature = "core")] + 0 => Self::AllInOne, + #[cfg(feature = "core")] + 1 => Self::Server, + #[cfg(feature = "core")] + 2 => Self::Worker, + #[cfg(feature = "proxy")] + 128 => Self::Proxy, + _ => unreachable!(), + } + } + + /// Set the current mode. + pub fn set(mode: Self) -> Result<()> { + std::fs::write(mode_path(), mode.to_string())?; + MODE.store(mode.into(), Ordering::SeqCst); + Ok(()) + } + + /// Load the current mode from the filesystem. + pub fn load() -> Result<()> { + let mode = std::fs::read_to_string(mode_path())?; + let mode = match mode.trim() { + #[cfg(feature = "core")] + "allinone" => Self::AllInOne, + #[cfg(feature = "core")] + "server" => Self::Server, + #[cfg(feature = "core")] + "worker" => Self::Worker, + #[cfg(feature = "proxy")] + "proxy" => Self::Proxy, + _ => return Err(eyre!("Mode {mode} not supported")), + }; + MODE.store(mode.into(), Ordering::SeqCst); + Ok(()) + } + + /// Cleanup the mode stored on the filesystem. + pub fn cleanup() { + let mode_path = mode_path(); + if let Err(err) = std::fs::remove_file(&mode_path) { + trace!(?err, "failed to remove mode file, ignoring"); + } + } + + /// Check if the mode is one of the "core" modes, namely [`Mode::AllInOne`], [`Mode::Server`] + /// or [`Mode::Worker`]. + #[must_use] + pub fn is_core() -> bool { + match Self::get() { + #[cfg(feature = "core")] + Self::AllInOne | Self::Server | Self::Worker => true, + _ => false, + } + } +} + +#[cfg(test)] +mod tests { + use tempfile::{TempDir, tempdir}; + + use super::Mode; + + fn prepare_temp_dir() -> TempDir { + let tempdir = tempdir().expect("failed to create tempdir"); + #[expect(unsafe_code, reason = "testing")] + // SAFETY: testing + unsafe { + std::env::set_var("TMPDIR", tempdir.path()); + } + tempdir + } + + #[test] + fn get_and_set() { + let temp_dir = prepare_temp_dir(); + let mode_path = temp_dir.path().join("authentik-mode"); + for mode in [ + (Mode::AllInOne, "allinone"), + (Mode::Server, "server"), + (Mode::Worker, "worker"), + (Mode::Proxy, "proxy"), + ] { + Mode::set(mode.0).expect("failed to set mode"); + assert_eq!(Mode::get(), mode.0); + assert_eq!( + std::fs::read_to_string(&mode_path).expect("failed to read mode"), + mode.1 + ); + } + } + + #[test] + fn load() { + let temp_dir = prepare_temp_dir(); + let mode_path = temp_dir.path().join("authentik-mode"); + for mode in [ + ("allinone", Mode::AllInOne), + ("server", Mode::Server), + ("worker", Mode::Worker), + ("proxy", Mode::Proxy), + ] { + std::fs::write(&mode_path, mode.0).expect("failed to write mode"); + Mode::load().expect("failed to load mode"); + assert_eq!(Mode::get(), mode.1); + } + } + + #[test] + fn cleanup() { + let temp_dir = prepare_temp_dir(); + let mode_path = temp_dir.path().join("authentik-mode"); + Mode::set(Mode::AllInOne).expect("failed to set mode"); + Mode::cleanup(); + mode_path.metadata().expect_err("mode file still exists"); + } + + #[test] + fn is_core() { + let _temp_dir = prepare_temp_dir(); + for mode in [ + (Mode::AllInOne, true), + (Mode::Server, true), + (Mode::Worker, true), + (Mode::Proxy, false), + ] { + Mode::set(mode.0).expect("failed to set mode"); + assert_eq!(Mode::is_core(), mode.1); + } + } +} diff --git a/packages/ak-common/src/tls.rs b/packages/ak-common/src/tls.rs new file mode 100644 index 0000000000..f3e52ce4b7 --- /dev/null +++ b/packages/ak-common/src/tls.rs @@ -0,0 +1,66 @@ +//! TLS utilities +use std::sync::Arc; + +use eyre::{Result, eyre}; +use rustls::server::ResolvesServerCert; +use tracing::trace; + +use crate::config; + +/// Dummy resolver for FIPS compliance check. +#[derive(Debug)] +struct EmptyCertResolver; + +#[expect( + clippy::missing_trait_methods, + reason = "this is just a dummy implementation to check FIPS compliance" +)] +impl ResolvesServerCert for EmptyCertResolver { + fn resolve( + &self, + _client_hello: rustls::server::ClientHello<'_>, + ) -> Option> { + None + } +} + +/// Check if fips is enabled. +fn is_fips_enabled() -> bool { + rustls::client::ClientConfig::builder() + .with_root_certificates(rustls::RootCertStore::empty()) + .with_no_client_auth() + .fips() + && rustls::server::ServerConfig::builder() + .with_no_client_auth() + .with_cert_resolver(Arc::new(EmptyCertResolver {})) + .fips() +} + +/// Initialize default [`rustls`] crypto provider, and check that FIPS is working correctly. +pub fn init() -> Result<()> { + trace!("installing rustls crypto provider"); + #[expect( + clippy::unwrap_in_result, + reason = "result type does not implement Error" + )] + rustls::crypto::aws_lc_rs::default_provider() + .install_default() + .expect("Failed to install rustls provider"); + + if config::get().compliance.fips.enabled && !is_fips_enabled() { + return Err(eyre!("A non fips crypto provider was installed")); + } + + Ok(()) +} + +#[cfg(test)] +mod tests { + #[test] + fn init() { + crate::config::init().expect("failed to initialize config"); + + super::init().expect("failed to initialized rustls"); + assert!(super::is_fips_enabled()); + } +} diff --git a/packages/ak-common/src/tokio/mod.rs b/packages/ak-common/src/tokio/mod.rs new file mode 100644 index 0000000000..ba0afd914a --- /dev/null +++ b/packages/ak-common/src/tokio/mod.rs @@ -0,0 +1,3 @@ +//! [`tokio`] extensions. + +pub mod proxy_protocol; diff --git a/packages/ak-common/src/tokio/proxy_protocol/LICENSE b/packages/ak-common/src/tokio/proxy_protocol/LICENSE new file mode 100644 index 0000000000..c2684103f2 --- /dev/null +++ b/packages/ak-common/src/tokio/proxy_protocol/LICENSE @@ -0,0 +1,22 @@ +MIT License + +Copyright (c) 2026 Authentik Security Inc. +Copyright (c) 2023 Tibor Djurica Potpara + +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/packages/ak-common/src/tokio/proxy_protocol/README.md b/packages/ak-common/src/tokio/proxy_protocol/README.md new file mode 100644 index 0000000000..fb17e97423 --- /dev/null +++ b/packages/ak-common/src/tokio/proxy_protocol/README.md @@ -0,0 +1 @@ +This is a fork of https://github.com/tibordp/proxy-header/, with the sync code removed, the encoding code removed, and the ability to make the PROXY protocol optional. diff --git a/packages/ak-common/src/tokio/proxy_protocol/header.rs b/packages/ak-common/src/tokio/proxy_protocol/header.rs new file mode 100644 index 0000000000..f634e7fe6a --- /dev/null +++ b/packages/ak-common/src/tokio/proxy_protocol/header.rs @@ -0,0 +1,616 @@ +//! PROXY protocol header definition. + +use std::{borrow::Cow, fmt, net::SocketAddr, str::from_utf8}; + +use thiserror::Error; +use tracing::instrument; + +/// Protocol type +#[derive(Debug, PartialEq, Eq, Clone, Copy, Hash)] +pub enum Protocol { + /// Stream protocol (TCP) + Stream, + /// Datagram protocol (UDP) + Datagram, +} + +/// Address information from a PROXY protocol header +#[derive(Debug, PartialEq, Eq, Clone, Hash)] +pub struct Address { + /// Protocol type + pub protocol: Protocol, + /// Source address (of the actual client) + pub source: SocketAddr, + /// Destination address (of the proxy) + pub destination: SocketAddr, +} + +macro_rules! tlv { + ($self:expr, $kind:ident) => {{ + $self.tlvs().find_map(|f| match f { + Ok(Tlv::$kind(v)) => Some(v), + _ => None, + }) + }}; +} + +macro_rules! tlv_borrowed { + ($self:expr, $kind:ident) => {{ + $self.tlvs().find_map(|f| match f { + Ok(Tlv::$kind(v)) => match v { + // It is more ergonomic to return the borrowed value directly rather + // than it wrapped in a `Cow::Borrowed`. We know that tlvs always borrows + // so we can safely unwrap the `Cow::Borrowed` and return the borrowed value. + Cow::Owned(_) => unreachable!(), + Cow::Borrowed(v) => Some(v), + }, + _ => None, + }) + }}; +} + +/// Iterator over PROXY protocol TLV fields +pub struct Tlvs<'a> { + buf: &'a [u8], +} + +#[expect( + clippy::missing_trait_methods, + reason = "we don't need to implement the other methods here" +)] +impl<'a> Iterator for Tlvs<'a> { + type Item = Result, ProxyProtocolError>; + + fn next(&mut self) -> Option { + if self.buf.is_empty() { + return None; + } + + let kind = self.buf[0]; + match self + .buf + .get(1..3) + .map(|s| -> usize { u16::from_be_bytes(s.try_into().expect("infallible")).into() }) + { + Some(u) if u + 3 <= self.buf.len() => { + let (ret, new) = self.buf.split_at(3 + u); + self.buf = new; + + Some(Tlv::decode(kind, &ret[3..])) + } + _ => { + // Malformed TLV, cannot continue + self.buf = &[]; + Some(Err(ProxyProtocolError::Invalid)) + } + } + } +} + +/// Typed TLV field +/// +/// Represents the currently known types of TLV fields from the PROXY protocol specification. +/// Non-recognized TLV fields are represented as [`Tlv::Custom`]. +#[non_exhaustive] +#[derive(Debug, PartialEq, Eq, Clone)] +pub enum Tlv<'a> { + /// Application-Layer Protocol Negotiation (ALPN). It is a byte sequence defining the upper + /// layer protocol in use over the connection. The most common use case will be to pass the + /// exact copy of the ALPN extension of the Transport Layer Security (TLS) protocol as defined + /// by RFC7301. + Alpn(Cow<'a, [u8]>), + + /// Contains the host name value passed by the client, as an UTF-8 encoded string. In case of + /// TLS being used on the client connection, this is the exact copy of the `server_name` + /// extension as defined by RFC3546, section 3.1, often referred to as SNI. There are probably + /// other situations where an authority can be mentionned on a connection without TLS being + /// involved at all. + Authority(Cow<'a, str>), + + /// The value of the type `PP2_TYPE_CRC32C` is a 32-bit number storing the `CRC32c` checksum of + /// the PROXY protocol header. + /// + /// When the checksum is supported by the sender after constructing the header the sender MUST: + /// + /// - initialize the checksum field to '0's. + /// + /// - calculate the `CRC32c` checksum of the PROXY header as described in RFC4960, Appendix B. + /// + /// - put the resultant value into the checksum field, and leave the rest of the bits unchanged. + /// + /// If the checksum is provided as part of the PROXY header and the checksum functionality is + /// supported by the receiver, the receiver MUST: + /// + /// - store the received `CRC32c` checksum value aside. + /// + /// - replace the 32 bits of the checksum field in the received PROXY header with all '0's and + /// calculate a `CRC32c` checksum value of the whole PROXY header. + /// + /// - verify that the calculated `CRC32c` checksum is the same as the received `CRC32c` + /// checksum. If it is not, the receiver MUST treat the TCP connection providing the header as + /// invalid. + /// + /// The default procedure for handling an invalid TCP connection is to abort it. + Crc32c(u32), + + /// The TLV of this type should be ignored when parsed. The value is zero or more bytes. Can be + /// used for data padding or alignment. Note that it can be used to align only by 3 or more + /// bytes because a TLV can not be smaller than that. + Noop(usize), + + /// The value of the type `PP2_TYPE_UNIQUE_ID` is an opaque byte sequence of up to + /// 128 bytes generated by the upstream proxy that uniquely identifies the connection. + /// + /// The unique ID can be used to easily correlate connections across multiple layers of + /// proxies, without needing to look up IP addresses and port numbers. + UniqueId(Cow<'a, [u8]>), + + /// SSL (TLS) information + /// + /// See [`SslInfo`] for more information. + Ssl(SslInfo<'a>), + + /// The type `PP2_TYPE_NETNS` defines the value as the US-ASCII string representation of the + /// namespace's name. + Netns(Cow<'a, str>), + + // The following can only appear as a sub-TLV of SslInfo + /// SSL/TLS version + SslVersion(Cow<'a, str>), + /// In all cases, the string representation (in UTF8) of the Common Name field (OID: 2.5.4.3) + /// of the client certificate's Distinguished Name, is appended using the TLV format and the + /// type `PP2_SUBTYPE_SSL_CN`. E.g. "example.com". + SslCn(Cow<'a, str>), + /// The second level TLV `PP2_SUBTYPE_SSL_CIPHER` provides the US-ASCII string name of the used + /// cipher, for example "ECDHE-RSA-AES128-GCM-SHA256". + SslCipher(Cow<'a, str>), + /// The second level TLV `PP2_SUBTYPE_SSL_SIG_ALG` provides the US-ASCII string name of the + /// algorithm used to sign the certificate presented by the frontend when the incoming + /// connection was made over an SSL/TLS transport layer, for example "SHA256". + SslSigAlg(Cow<'a, str>), + /// The second level TLV `PP2_SUBTYPE_SSL_KEY_ALG` provides the US-ASCII string name of the + /// algorithm used to generate the key of the certificate presented by the frontend when the + /// incoming connection was made over an SSL/TLS transport layer, for example "RSA2048". + SslKeyAlg(Cow<'a, str>), + + /// Unrecognized or custom TLV field + Custom(u8, Cow<'a, [u8]>), +} + +impl<'a> Tlv<'a> { + fn decode(kind: u8, data: &'a [u8]) -> Result { + match kind { + 0x01 => Ok(Self::Alpn(data.into())), + 0x02 => Ok(Self::Authority( + from_utf8(data) + .map_err(|_| ProxyProtocolError::Invalid)? + .into(), + )), + 0x03 => Ok(Self::Crc32c(u32::from_be_bytes( + data.try_into().map_err(|_| ProxyProtocolError::Invalid)?, + ))), + 0x04 => Ok(Self::Noop(data.len())), + 0x05 => Ok(Self::UniqueId(data.into())), + 0x20 => Ok(Tlv::Ssl(SslInfo( + *data.first().ok_or(ProxyProtocolError::Invalid)?, + u32::from_be_bytes( + data.get(1..5) + .ok_or(ProxyProtocolError::Invalid)? + .try_into() + .map_err(|_| ProxyProtocolError::Invalid)?, + ), + data.get(5..).ok_or(ProxyProtocolError::Invalid)?.into(), + ))), + 0x21 => Ok(Self::SslVersion( + from_utf8(data) + .map_err(|_| ProxyProtocolError::Invalid)? + .into(), + )), + 0x22 => Ok(Self::SslCn( + from_utf8(data) + .map_err(|_| ProxyProtocolError::Invalid)? + .into(), + )), + 0x23 => Ok(Self::SslCipher( + from_utf8(data) + .map_err(|_| ProxyProtocolError::Invalid)? + .into(), + )), + 0x24 => Ok(Self::SslSigAlg( + from_utf8(data) + .map_err(|_| ProxyProtocolError::Invalid)? + .into(), + )), + 0x25 => Ok(Self::SslKeyAlg( + from_utf8(data) + .map_err(|_| ProxyProtocolError::Invalid)? + .into(), + )), + 0x30 => Ok(Self::Netns( + from_utf8(data) + .map_err(|_| ProxyProtocolError::Invalid)? + .into(), + )), + t => Ok(Self::Custom(t, data.into())), + } + } + + pub fn into_owned(self) -> Tlv<'static> { + match self { + Self::Alpn(v) => Tlv::Alpn(Cow::Owned(v.into_owned())), + Self::Authority(v) => Tlv::Authority(Cow::Owned(v.into_owned())), + Self::Crc32c(v) => Tlv::Crc32c(v), + Self::Noop(v) => Tlv::Noop(v), + Self::UniqueId(v) => Tlv::UniqueId(Cow::Owned(v.into_owned())), + Self::Ssl(v) => Tlv::Ssl(v.into_owned()), + Self::Netns(v) => Tlv::Netns(Cow::Owned(v.into_owned())), + Self::SslVersion(v) => Tlv::SslVersion(Cow::Owned(v.into_owned())), + Self::SslCn(v) => Tlv::SslCn(Cow::Owned(v.into_owned())), + Self::SslCipher(v) => Tlv::SslCipher(Cow::Owned(v.into_owned())), + Self::SslSigAlg(v) => Tlv::SslSigAlg(Cow::Owned(v.into_owned())), + Self::SslKeyAlg(v) => Tlv::SslKeyAlg(Cow::Owned(v.into_owned())), + Self::Custom(a, v) => Tlv::Custom(a, Cow::Owned(v.into_owned())), + } + } +} + +/// SSL information from a PROXY protocol header +#[derive(PartialEq, Eq, Clone)] +pub struct SslInfo<'a>(u8, u32, Cow<'a, [u8]>); + +impl SslInfo<'_> { + /// Client connected over SSL/TLS + /// + /// The `PP2_CLIENT_SSL` flag indicates that the client connected over SSL/TLS. When this field + /// is present, the US-ASCII string representation of the TLS version is appended at the end of + /// the field in the TLV format using the type `PP2_SUBTYPE_SSL_VERSION`. + pub fn client_ssl(&self) -> bool { + self.0 & 0x01 != 0 + } + + /// Client certificate presented in the connection + /// + /// `PP2_CLIENT_CERT_CONN` indicates that the client provided a certificate over the current + /// connection. + pub fn client_cert_conn(&self) -> bool { + self.0 & 0x02 != 0 + } + + /// Client certificate presented in the session + /// + /// `PP2_CLIENT_CERT_SESS` indicates that the client provided a certificate at least once over + /// the TLS session this connection belongs to. + pub fn client_cert_sess(&self) -> bool { + self.0 & 0x04 != 0 + } + + /// Whether the certificate was verified + /// + /// The verify field will be zero if the client presented a certificate and it was successfully + /// verified, and non-zero otherwise. + pub fn verify(&self) -> u32 { + self.1 + } + + /// Iterator over all TLV (type-length-value) fields + pub fn tlvs(&self) -> Tlvs<'_> { + Tlvs { buf: &self.2 } + } + + // Convenience accessors for common TLVs + + /// SSL version + /// + /// See [`Tlv::SslVersion`] for more information. + pub fn version(&self) -> Option<&str> { + tlv_borrowed!(self, SslVersion) + } + + /// SSL CN + /// + /// See [`Tlv::SslCn`] for more information. + pub fn cn(&self) -> Option<&str> { + tlv_borrowed!(self, SslCn) + } + + /// SSL cipher + /// + /// See [`Tlv::SslCipher`] for more information. + pub fn cipher(&self) -> Option<&str> { + tlv_borrowed!(self, SslCipher) + } + + /// SSL signature algorithm + /// + /// See [`Tlv::SslSigAlg`] for more information. + pub fn sig_alg(&self) -> Option<&str> { + tlv_borrowed!(self, SslSigAlg) + } + + /// SSL key algorithm + /// + /// See [`Tlv::SslKeyAlg`] for more information. + pub fn key_alg(&self) -> Option<&str> { + tlv_borrowed!(self, SslKeyAlg) + } + + /// Returns an owned version of this struct + pub fn into_owned(self) -> SslInfo<'static> { + SslInfo(self.0, self.1, Cow::Owned(self.2.into_owned())) + } +} + +impl fmt::Debug for SslInfo<'_> { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_struct("SslInfo") + .field("verify", &self.verify()) + .field("client_ssl", &self.client_ssl()) + .field("client_cert_conn", &self.client_cert_conn()) + .field("client_cert_sess", &self.client_cert_sess()) + .field("fields", &self.tlvs().collect::>()) + .finish() + } +} + +/// A PROXY protocol header +#[derive(Default, PartialEq, Eq, Clone, Debug)] +pub struct Header<'a>(pub(super) Option
, pub(super) Cow<'a, [u8]>); + +impl<'a> Header<'a> { + /// Attempt to parse a PROXY protocol header from the given buffer + /// + /// Returns the parsed header and the number of bytes consumed from the buffer. If the header + /// is incomplete, returns [`ProxyProtocolError::BufferTooShort`] so more data can be read from + /// the socket. + /// + /// If the header is malformed or unsupported, returns [`ProxyProtocolError::Invalid`]. + /// + /// This function will borrow the buffer for the lifetime of the returned header. If + /// you need to keep the header around for longer than the buffer, use + /// [`Header::into_owned`]. + #[instrument(skip_all)] + pub fn parse(buf: &'a [u8]) -> Result<(Self, usize), ProxyProtocolError> { + match buf.first() { + Some(b'P') => super::v1::decode(buf), + Some(b'\r') => super::v2::decode(buf), + None => Err(ProxyProtocolError::BufferTooShort), + _ => Err(ProxyProtocolError::Invalid), + } + } + + /// Proxied address information + /// + /// If `None`, this indicates so-called "local" mode, where the connection is not proxied. + /// This is usually the case when the connection is initiated by the proxy itself, e.g. for + /// health checks. + pub fn proxied_address(&self) -> Option<&Address> { + self.0.as_ref() + } + + /// Iterator that yields all extension TLV (type-length-value) fields present in the header + /// + /// See [`Tlv`] for more information on the different types of TLV fields. + pub fn tlvs(&self) -> Tlvs<'_> { + Tlvs { buf: &self.1 } + } + + // Convenience accessors for common fields + + /// Raw ALPN extension data + /// + /// See [`Tlv::Alpn`] for more information. + pub fn alpn(&self) -> Option<&[u8]> { + tlv_borrowed!(self, Alpn) + } + + /// Authority - typically the hostname of the client (SNI) + /// + /// See [`Tlv::Authority`] for more information. + pub fn authority(&self) -> Option<&str> { + tlv_borrowed!(self, Authority) + } + + /// `CRC32c` checksum of the address information + /// + /// See [`Tlv::Crc32c`] for more information. + pub fn crc32c(&self) -> Option { + tlv!(self, Crc32c) + } + + /// Unique ID of the connection + /// + /// See [`Tlv::UniqueId`] for more information. + pub fn unique_id(&self) -> Option<&[u8]> { + tlv_borrowed!(self, UniqueId) + } + + /// SSL information + /// + /// See [`Tlv::Ssl`] for more information. + pub fn ssl(&self) -> Option> { + tlv!(self, Ssl) + } + + /// Network namespace + /// + /// See [`Tlv::Netns`] for more information. + pub fn netns(&self) -> Option<&str> { + tlv_borrowed!(self, Netns) + } + + /// Returns an owned version of this struct + pub fn into_owned(self) -> Header<'static> { + Header(self.0, Cow::Owned(self.1.into_owned())) + } +} + +#[derive(Debug, PartialEq, Eq, Error)] +pub enum ProxyProtocolError { + #[error("The buffer is too short to contain a complete PROXY protocol header")] + BufferTooShort, + #[error("The PROXY protocol header is malformed")] + Invalid, +} + +#[cfg(test)] +mod tests { + use std::net::{IpAddr, Ipv4Addr, Ipv6Addr}; + + use super::*; + + const V1_UNKNOWN: &[u8] = b"PROXY UNKNOWN\r\n"; + + const V1_TCPV4: &[u8] = b"PROXY TCP4 127.0.0.1 192.168.0.1 12345 443\r\n"; + const V1_TCPV6: &[u8] = b"PROXY TCP6 2001:db8::1 ::1 12345 443\r\n"; + + const V2_LOCAL: &[u8] = + b"\r\n\r\n\0\r\nQUIT\n \0\0\x0f\x03\0\x04\x88\x9d\xa1\xdf \0\x05\0\0\0\0\0"; + + const V2_TCPV4: &[u8] = &[ + 13, 10, 13, 10, 0, 13, 10, 81, 85, 73, 84, 10, 33, 17, 0, 12, 127, 0, 0, 1, 192, 168, 0, 1, + 48, 57, 1, 187, + ]; + const V2_TCPV6: &[u8] = &[ + 13, 10, 13, 10, 0, 13, 10, 81, 85, 73, 84, 10, 33, 33, 0, 36, 32, 1, 13, 184, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 48, 57, 1, 187, + ]; + const V2_TCPV4_TLV: &[u8] = &[ + 13, 10, 13, 10, 0, 13, 10, 81, 85, 73, 84, 10, 33, 17, 0, 104, 127, 0, 0, 1, 192, 168, 0, + 1, 48, 57, 1, 187, 3, 0, 4, 211, 153, 216, 216, 5, 0, 4, 49, 50, 51, 52, 32, 0, 75, 7, 0, + 0, 0, 0, 33, 0, 7, 84, 76, 83, 118, 49, 46, 51, 34, 0, 9, 108, 111, 99, 97, 108, 104, 111, + 115, 116, 37, 0, 7, 82, 83, 65, 52, 48, 57, 54, 36, 0, 10, 82, 83, 65, 45, 83, 72, 65, 50, + 53, 54, 35, 0, 22, 84, 76, 83, 95, 65, 69, 83, 95, 50, 53, 54, 95, 71, 67, 77, 95, 83, 72, + 65, 51, 56, 52, + ]; + + #[test] + fn parse_proxy_header_too_short() { + for case in &[ + V1_TCPV4, + V1_TCPV6, + V1_UNKNOWN, + V2_TCPV4, + V2_TCPV6, + V2_TCPV4_TLV, + V2_LOCAL, + ] { + for i in 0..case.len() { + assert!(matches!( + Header::parse(&case[..i]), + Err(ProxyProtocolError::BufferTooShort) + )); + } + + Header::parse(case).expect("failed to parse header"); + } + } + + #[test] + fn parse_proxy_header_v1_unterminated() { + let line = b"PROXY TCP4 THISISSTORYALLABOUTHOWMYLIFEGOTFLIPPEDTURNEDUPSIDEDOWNANDIDLIKETOTAKEAMINUTEJUSTSITRIGHTTHEREANDILLTELLYOUHOWIGOTTHEPRINCEOFAIR"; + assert!(matches!( + Header::parse(line), + Err(ProxyProtocolError::Invalid) + )); + } + + #[test] + fn parse_proxy_header_v1() { + let (res, consumed) = Header::parse(V1_TCPV4).expect("failed to parse"); + assert_eq!(consumed, V1_TCPV4.len()); + assert_eq!( + res.0, + Some(Address { + protocol: Protocol::Stream, + source: SocketAddr::new(IpAddr::V4(Ipv4Addr::LOCALHOST), 12345), + destination: SocketAddr::new(IpAddr::V4(Ipv4Addr::new(192, 168, 0, 1)), 443), + }) + ); + assert_eq!(res.1, vec![0; 0]); + + let (res, consumed) = Header::parse(V1_TCPV6).expect("failed to parse"); + assert_eq!(consumed, V1_TCPV6.len()); + assert_eq!( + res.0, + Some(Address { + protocol: Protocol::Stream, + source: SocketAddr::new( + IpAddr::V6(Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 1)), + 12345 + ), + destination: SocketAddr::new(IpAddr::V6(Ipv6Addr::LOCALHOST), 443), + }) + ); + assert_eq!(res.1, vec![0; 0]); + } + + #[test] + fn parse_proxy_header_v2() { + let (res, consumed) = Header::parse(V2_LOCAL).expect("failed to parse"); + assert_eq!(consumed, V2_LOCAL.len()); + assert_eq!(res.0, None); + + let (res, consumed) = Header::parse(V2_TCPV4).expect("failed to parse"); + assert_eq!(consumed, V2_TCPV4.len()); + assert_eq!( + res.0, + Some(Address { + protocol: Protocol::Stream, + source: SocketAddr::new(IpAddr::V4(Ipv4Addr::LOCALHOST), 12345), + destination: SocketAddr::new(IpAddr::V4(Ipv4Addr::new(192, 168, 0, 1)), 443), + }) + ); + assert_eq!(res.1, vec![0; 0]); + + let (res, consumed) = Header::parse(V2_TCPV6).expect("failed to parse"); + assert_eq!(consumed, V2_TCPV6.len()); + assert_eq!( + res.0, + Some(Address { + protocol: Protocol::Stream, + source: SocketAddr::new( + IpAddr::V6(Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 1)), + 12345 + ), + destination: SocketAddr::new(IpAddr::V6(Ipv6Addr::LOCALHOST), 443), + }) + ); + assert_eq!(res.1, vec![0; 0]); + } + + #[test] + fn parse_proxy_header_v2_with_tlvs() { + let (res, _) = Header::parse(V2_TCPV4_TLV).expect("failed to parse"); + + let mut fields = res.tlvs(); + assert_eq!(fields.next(), Some(Ok(Tlv::Crc32c(0xd399_d8d8)))); + assert_eq!(fields.next(), Some(Ok(Tlv::UniqueId(b"1234"[..].into())))); + + let ssl = fields + .next() + .expect("next tlv missing") + .expect("tlv parsing failed"); + let Tlv::Ssl(ssl) = ssl else { + panic!("expected SSL TLV"); + }; + + assert_eq!(ssl.verify(), 0); + assert!(ssl.client_ssl()); + assert!(ssl.client_cert_conn()); + assert!(ssl.client_cert_sess()); + + let mut f = ssl.tlvs(); + + assert_eq!(f.next(), Some(Ok(Tlv::SslVersion("TLSv1.3".into())))); + assert_eq!(f.next(), Some(Ok(Tlv::SslCn("localhost".into())))); + assert_eq!(f.next(), Some(Ok(Tlv::SslKeyAlg("RSA4096".into())))); + assert_eq!(f.next(), Some(Ok(Tlv::SslSigAlg("RSA-SHA256".into())))); + assert_eq!( + f.next(), + Some(Ok(Tlv::SslCipher("TLS_AES_256_GCM_SHA384".into()))) + ); + assert!(f.next().is_none()); + + assert!(fields.next().is_none()); + } +} diff --git a/packages/ak-common/src/tokio/proxy_protocol/mod.rs b/packages/ak-common/src/tokio/proxy_protocol/mod.rs new file mode 100644 index 0000000000..1a0aebe51e --- /dev/null +++ b/packages/ak-common/src/tokio/proxy_protocol/mod.rs @@ -0,0 +1,247 @@ +use std::{ + cmp::min, + io, + io::IoSlice, + ops::Deref, + pin::Pin, + task::{Context, Poll}, +}; + +use eyre::{Result, eyre}; +use pin_project_lite::pin_project; +use tokio::io::{AsyncBufRead, AsyncRead, AsyncReadExt as _, AsyncWrite, ReadBuf}; +use tracing::instrument; + +use self::header::{Header, ProxyProtocolError}; + +pub mod header; +mod utils; +mod v1; +mod v2; + +// Length of the read buffer +const READ_BUFFER_LEN: usize = 536; + +pin_project! { + pub struct ProxyProtocolStream { + #[pin] + inner: S, + remaining: Vec, + header: Option>, + } +} + +impl ProxyProtocolStream { + pub fn header(&self) -> Option<&Header<'static>> { + self.header.as_ref() + } + + fn get_pin_mut(self: Pin<&mut Self>) -> Pin<&mut S> { + self.project().inner + } + + pub fn try_into_stream(self) -> Result { + if self.remaining.is_empty() { + Ok(self.inner) + } else { + Err(eyre!( + "Cannot return inner stream because buffer is not empty" + )) + } + } +} + +impl AsRef for ProxyProtocolStream { + fn as_ref(&self) -> &S { + &self.inner + } +} + +impl Deref for ProxyProtocolStream { + type Target = S; + + fn deref(&self) -> &Self::Target { + &self.inner + } +} + +impl ProxyProtocolStream +where + S: AsyncRead + Unpin, +{ + #[instrument(skip_all)] + pub async fn new(mut inner: S) -> Result { + let mut remaining = Vec::with_capacity(READ_BUFFER_LEN); + + loop { + let bytes_read = inner.read_buf(&mut remaining).await?; + if bytes_read == 0 { + return Err(io::Error::new( + io::ErrorKind::UnexpectedEof, + "end of stream", + )); + } + + match Header::parse(&remaining) { + Ok((header, consumed)) => { + let header = header.into_owned(); + remaining.drain(..consumed); + + return Ok(Self { + inner, + remaining, + header: Some(header), + }); + } + Err(ProxyProtocolError::BufferTooShort) => {} + // Something went wrong parsing the PROXY protocol. We assume that we weren't meant + // to parse it, and that this is just a regular stream without the PROXY protocol. + Err(_) => { + return Ok(Self { + inner, + remaining, + header: None, + }); + } + } + } + } +} + +impl AsyncRead for ProxyProtocolStream +where + S: AsyncRead, +{ + #[instrument(skip_all)] + fn poll_read( + self: Pin<&mut Self>, + cx: &mut Context<'_>, + buf: &mut ReadBuf<'_>, + ) -> Poll> { + let this = self.project(); + + if !this.remaining.is_empty() { + let to_copy = min(this.remaining.len(), buf.remaining()); + + buf.put_slice(&this.remaining[..to_copy]); + this.remaining.drain(..to_copy); + + return Poll::Ready(Ok(())); + } + + this.inner.poll_read(cx, buf) + } +} + +impl AsyncBufRead for ProxyProtocolStream +where + S: AsyncBufRead, +{ + #[instrument(skip_all)] + fn poll_fill_buf(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { + let this = self.project(); + + if !this.remaining.is_empty() { + return Poll::Ready(Ok(&this.remaining[..])); + } + + this.inner.poll_fill_buf(cx) + } + + #[instrument(skip_all)] + fn consume(self: Pin<&mut Self>, amt: usize) { + let this = self.project(); + + if this.remaining.is_empty() { + this.inner.consume(amt); + } else { + let len = this.remaining.len(); + if amt <= len { + this.remaining.drain(..amt); + } else { + this.remaining.drain(..len); + this.inner.consume(amt - len); + } + } + } +} + +impl AsyncWrite for ProxyProtocolStream +where + S: AsyncWrite, +{ + fn poll_write( + self: Pin<&mut Self>, + cx: &mut Context<'_>, + buf: &[u8], + ) -> Poll> { + self.get_pin_mut().poll_write(cx, buf) + } + + fn poll_flush(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { + self.get_pin_mut().poll_flush(cx) + } + + fn poll_shutdown(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { + self.get_pin_mut().poll_shutdown(cx) + } + + fn poll_write_vectored( + self: Pin<&mut Self>, + cx: &mut Context<'_>, + bufs: &[IoSlice<'_>], + ) -> Poll> { + self.get_pin_mut().poll_write_vectored(cx, bufs) + } + + fn is_write_vectored(&self) -> bool { + self.inner.is_write_vectored() + } +} + +#[cfg(test)] +mod tests { + use std::{ + io::Cursor, + net::{IpAddr, Ipv4Addr, SocketAddr}, + }; + + use super::{ + header::{Address, Protocol}, + *, + }; + + #[tokio::test] + async fn parse() { + let mut buf = [0; 1024]; + let header = b"PROXY TCP4 127.0.0.1 192.168.0.1 12345 443\r\n"; + buf[..header.len()].copy_from_slice(header); + buf[header.len()..].fill(255); + + let mut stream = Cursor::new(&buf); + + let mut proxied = ProxyProtocolStream::new(&mut stream) + .await + .expect("failed to create stream"); + assert_eq!( + proxied.header(), + Some(Header( + Some(Address { + protocol: Protocol::Stream, + source: SocketAddr::new(IpAddr::V4(Ipv4Addr::LOCALHOST), 12345), + destination: SocketAddr::new(IpAddr::V4(Ipv4Addr::new(192, 168, 0, 1)), 443), + }), + vec![0; 0].into(), + )) + .as_ref() + ); + + let mut buf = Vec::new(); + proxied + .read_to_end(&mut buf) + .await + .expect("failed to read from stream"); + assert_eq!(buf.len(), 1024 - header.len()); + assert!(buf.into_iter().all(|b| b == 255)); + } +} diff --git a/packages/ak-common/src/tokio/proxy_protocol/utils.rs b/packages/ak-common/src/tokio/proxy_protocol/utils.rs new file mode 100644 index 0000000000..0a7935b69a --- /dev/null +++ b/packages/ak-common/src/tokio/proxy_protocol/utils.rs @@ -0,0 +1,39 @@ +use std::{ + net::{IpAddr, Ipv4Addr, Ipv6Addr}, + str::FromStr, +}; + +pub(super) fn read_until(buf: &[u8], delim: u8) -> Option<&[u8]> { + for i in 0..buf.len() { + if buf[i] == delim { + return Some(&buf[..i]); + } + } + None +} + +pub(super) trait AddressFamily: FromStr + Into { + const BYTES: usize; + + fn from_slice(slice: &[u8]) -> Self; +} + +impl AddressFamily for Ipv4Addr { + #[expect(clippy::as_conversions, reason = "will always be in bounds")] + const BYTES: usize = (Self::BITS / 8) as usize; + + fn from_slice(slice: &[u8]) -> Self { + let arr: [u8; Self::BYTES] = slice.try_into().expect("slice must be 4 bytes"); + arr.into() + } +} + +impl AddressFamily for Ipv6Addr { + #[expect(clippy::as_conversions, reason = "will always be in bounds")] + const BYTES: usize = (Self::BITS / 8) as usize; + + fn from_slice(slice: &[u8]) -> Self { + let arr: [u8; Self::BYTES] = slice.try_into().expect("slice must be 16 bytes"); + arr.into() + } +} diff --git a/packages/ak-common/src/tokio/proxy_protocol/v1.rs b/packages/ak-common/src/tokio/proxy_protocol/v1.rs new file mode 100644 index 0000000000..d87fb434a4 --- /dev/null +++ b/packages/ak-common/src/tokio/proxy_protocol/v1.rs @@ -0,0 +1,110 @@ +use std::{ + borrow::Cow, + net::{Ipv4Addr, Ipv6Addr, SocketAddr}, + str::{FromStr as _, from_utf8}, +}; + +use super::{ + header::{Address, Header, Protocol, ProxyProtocolError}, + utils::{AddressFamily, read_until}, +}; + +const MAX_LENGTH: usize = 107; +const GREETING: &[u8] = b"PROXY"; +const UNKNOWN: &[u8] = b"PROXY UNKNOWN\r\n"; +// All other valid PROXY headers are longer than this +const MIN_LENGTH: usize = UNKNOWN.len(); + +fn parse_addr(buf: &[u8], pos: &mut usize) -> Result { + let Some(address) = read_until(&buf[*pos..], b' ') else { + return Err(ProxyProtocolError::BufferTooShort); + }; + + let addr = from_utf8(address) + .map_err(|_| ProxyProtocolError::Invalid) + .and_then(|s| A::from_str(s).map_err(|_| ProxyProtocolError::Invalid))?; + *pos += address.len() + 1; + + Ok(addr) +} + +fn parse_port(buf: &[u8], pos: &mut usize, delim: u8) -> Result { + let Some(port) = read_until(&buf[*pos..], delim) else { + return Err(ProxyProtocolError::BufferTooShort); + }; + + let p = from_utf8(port) + .map_err(|_| ProxyProtocolError::Invalid) + .and_then(|s| u16::from_str(s).map_err(|_| ProxyProtocolError::Invalid))?; + *pos += port.len() + 1; + + Ok(p) +} + +fn parse_addrs( + buf: &[u8], + pos: &mut usize, +) -> Result { + let src_addr: A = parse_addr(buf, pos)?; + let dst_addr: A = parse_addr(buf, pos)?; + let src_port = parse_port(buf, pos, b' ')?; + let dst_port = parse_port(buf, pos, b'\r')?; + + Ok(Address { + protocol: Protocol::Stream, // v1 only supports TCP + source: SocketAddr::new(src_addr.into(), src_port), + destination: SocketAddr::new(dst_addr.into(), dst_port), + }) +} + +fn decode_inner(buf: &[u8]) -> Result<(Header<'_>, usize), ProxyProtocolError> { + let mut pos = 0; + + if buf.len() < MIN_LENGTH { + return Err(ProxyProtocolError::BufferTooShort); + } + if !buf.starts_with(GREETING) { + return Err(ProxyProtocolError::Invalid); + } + pos += GREETING.len() + 1; + + let addrs = if buf[pos..].starts_with(b"UNKNOWN") { + let Some(rest) = read_until(&buf[pos..], b'\r') else { + return Err(ProxyProtocolError::BufferTooShort); + }; + pos += rest.len() + 1; + + None + } else { + let proto = &buf[pos..pos + 5]; + pos += 5; + + match proto { + b"TCP4 " => Some(parse_addrs::(buf, &mut pos)?), + b"TCP6 " => Some(parse_addrs::(buf, &mut pos)?), + _ => return Err(ProxyProtocolError::Invalid), + } + }; + + match buf.get(pos) { + Some(b'\n') => pos += 1, + None => return Err(ProxyProtocolError::BufferTooShort), + _ => return Err(ProxyProtocolError::Invalid), + } + + Ok((Header(addrs, Cow::default()), pos)) +} + +/// Decode a version 1 PROXY header from a buffer. +/// +/// Returns the decoded header and the number of bytes consumed from the buffer. +pub(super) fn decode(buf: &[u8]) -> Result<(Header<'_>, usize), ProxyProtocolError> { + // Guard against a malicious client sending a very long header, since it is a + // delimited protocol. + match decode_inner(buf) { + Err(ProxyProtocolError::BufferTooShort) if buf.len() >= MAX_LENGTH => { + Err(ProxyProtocolError::Invalid) + } + other => other, + } +} diff --git a/packages/ak-common/src/tokio/proxy_protocol/v2.rs b/packages/ak-common/src/tokio/proxy_protocol/v2.rs new file mode 100644 index 0000000000..7f3c16d0d9 --- /dev/null +++ b/packages/ak-common/src/tokio/proxy_protocol/v2.rs @@ -0,0 +1,122 @@ +use std::{ + borrow::Cow, + net::{Ipv4Addr, Ipv6Addr, SocketAddr}, +}; + +use super::{ + header::{Address, Header, Protocol, ProxyProtocolError}, + utils::AddressFamily, +}; + +const GREETING: &[u8] = b"\r\n\r\n\x00\r\nQUIT\n"; +const MIN_LENGTH: usize = GREETING.len() + 4; +const AF_UNIX_ADDRS_LEN: usize = 216; + +fn parse_addrs( + buf: &[u8], + pos: &mut usize, + rest: &mut usize, + protocol: Protocol, +) -> Result { + if buf.len() < *pos + T::BYTES * 2 + 4 { + return Err(ProxyProtocolError::BufferTooShort); + } + if *rest < T::BYTES * 2 + 4 { + return Err(ProxyProtocolError::Invalid); + } + + let addr = Address { + protocol, + source: SocketAddr::new( + T::from_slice(&buf[*pos..*pos + T::BYTES]).into(), + u16::from_be_bytes([buf[*pos + T::BYTES * 2], buf[*pos + T::BYTES * 2 + 1]]), + ), + destination: SocketAddr::new( + T::from_slice(&buf[*pos + T::BYTES..*pos + T::BYTES * 2]).into(), + u16::from_be_bytes([buf[*pos + T::BYTES * 2 + 2], buf[*pos + T::BYTES * 2 + 3]]), + ), + }; + + *rest -= T::BYTES * 2 + 4; + *pos += T::BYTES * 2 + 4; + + Ok(addr) +} + +/// Decode a version 2 PROXY header from a buffer. +/// +/// Returns the decoded header and the number of bytes consumed from the buffer. +pub(super) fn decode(buf: &[u8]) -> Result<(Header<'_>, usize), ProxyProtocolError> { + let mut pos = 0; + + if buf.len() < MIN_LENGTH { + return Err(ProxyProtocolError::BufferTooShort); + } + if !buf.starts_with(GREETING) { + return Err(ProxyProtocolError::Invalid); + } + pos += GREETING.len(); + + let is_local = match buf[pos] { + 0x20 => true, + 0x21 => false, + _ => return Err(ProxyProtocolError::Invalid), + }; + let protocol = buf[pos + 1]; + let mut rest: usize = u16::from_be_bytes([buf[pos + 2], buf[pos + 3]]).into(); + pos += 4; + + if buf.len() < pos + rest { + return Err(ProxyProtocolError::BufferTooShort); + } + + let addr_info = match protocol { + 0x00 => None, + 0x11 => Some(parse_addrs::( + buf, + &mut pos, + &mut rest, + Protocol::Stream, + )?), + 0x12 => Some(parse_addrs::( + buf, + &mut pos, + &mut rest, + Protocol::Datagram, + )?), + 0x21 => Some(parse_addrs::( + buf, + &mut pos, + &mut rest, + Protocol::Stream, + )?), + 0x22 => Some(parse_addrs::( + buf, + &mut pos, + &mut rest, + Protocol::Datagram, + )?), + 0x31 | 0x32 => { + // AF_UNIX - we don't parse it, but don't reject it either in case we need the TLVs + if rest < AF_UNIX_ADDRS_LEN { + return Err(ProxyProtocolError::Invalid); + } + rest -= AF_UNIX_ADDRS_LEN; + pos += AF_UNIX_ADDRS_LEN; + None + } + _ => return Err(ProxyProtocolError::Invalid), + }; + + let tlv_data = Cow::Borrowed(&buf[pos..pos + rest]); + + pos += rest; + + let header = if is_local { + Header(None, tlv_data) + } else { + Header(addr_info, tlv_data) + }; + + Ok((header, pos)) +} diff --git a/packages/ak-common/src/tracing.rs b/packages/ak-common/src/tracing.rs new file mode 100644 index 0000000000..a2fcfaec4f --- /dev/null +++ b/packages/ak-common/src/tracing.rs @@ -0,0 +1,280 @@ +use eyre::Result; +use time::macros::format_description; +use tracing_error::ErrorLayer; +use tracing_subscriber::{ + filter::EnvFilter, + fmt::{self, time::LocalTime}, + prelude::*, +}; + +use crate::config; + +/// Install a tracing subscriber for watching tracing events. +/// +/// If debug mode, will also install a console subscriber, which can be connected to with +/// `tokio-console`. +/// +/// This method depends on the [`config`] and [`sentry`] being initialized. For logging before that +/// happens, see [`install_crude`]. +pub fn install() -> Result<()> { + let config = config::get(); + + let time_format = + format_description!("[year]-[month]-[day]T[hour]:[minute]:[second].[subsecond digits:6]"); + + let mut filter_layer = EnvFilter::builder() + .with_default_directive(config.log_level.parse()?) + .parse(&config.log_level)?; + for (k, v) in &config.log.rust_log { + filter_layer = filter_layer.add_directive(format!("{k}={v}").parse()?); + } + + if config.debug { + let console_layer = console_subscriber::ConsoleLayer::builder() + .server_addr(config.listen.debug_tokio) + .spawn(); + tracing_subscriber::registry() + .with(ErrorLayer::default()) + .with(console_layer) + .with( + fmt::layer() + .compact() + .event_format( + fmt::format() + .with_timer(LocalTime::new(time_format)) + .with_thread_ids(true) + .with_thread_names(true) + .with_source_location(true) + .compact(), + ) + .with_writer(std::io::stderr) + .with_filter(filter_layer), + ) + .with(::sentry::integrations::tracing::layer()) + .init(); + } else { + tracing_subscriber::registry() + .with(ErrorLayer::default()) + .with(json::layer().with_filter(filter_layer)) + .with(::sentry::integrations::tracing::layer()) + .init(); + } + + Ok(()) +} + +/// Install a very basic tracing subscriber until a fully-featured one can be installed. +#[must_use] +pub fn install_crude() -> tracing::dispatcher::DefaultGuard { + let filter_layer = EnvFilter::builder() + .parse("trace,console_subscriber=info,runtime=info,tokio=info,tungstenite=info") + .expect("infallible"); + let subscriber = tracing_subscriber::registry() + .with(ErrorLayer::default()) + .with(filter_layer) + .with(json::layer()); + tracing::dispatcher::set_default(&subscriber.into()) +} + +/// Utilities for JSON logging +mod json { + use std::collections::HashMap; + + use time::macros::format_description; + use tracing::Subscriber; + use tracing_subscriber::{fmt::time::LocalTime, layer::Layer, registry::LookupSpan}; + + /// Create a custom layer for JSON formatting, with: + /// + /// - local time + /// - "message" key renamed to "event" + /// - span data + /// - current process id + /// - thread information + pub(super) fn layer() -> impl Layer + where + S: Subscriber + for<'lookup> LookupSpan<'lookup>, + { + let time_format = format_description!( + "[year]-[month]-[day]T[hour]:[minute]:[second].[subsecond digits:6]" + ); + + let mut json_layer = json_subscriber::fmt::layer() + .with_level(false) + .with_timer(LocalTime::new(time_format)) + .with_file(true) + .with_line_number(true) + .flatten_event(true) + .flatten_current_span_on_top_level(true); + + let inner_layer = json_layer.inner_layer_mut(); + inner_layer.with_thread_ids("thread_id"); + inner_layer.with_thread_names("thread_name"); + inner_layer.add_dynamic_field("level", |event, _| { + Some(serde_json::Value::String( + event.metadata().level().as_str().to_lowercase(), + )) + }); + inner_layer.add_dynamic_field("pid", |_, _| { + Some(serde_json::Value::Number(serde_json::Number::from( + std::process::id(), + ))) + }); + inner_layer.with_flattened_event_with_renames( + move |name, map| match map.get(name) { + Some(name) => name.as_str(), + None => name, + }, + HashMap::from([("message".to_owned(), "event".to_owned())]), + ); + + json_layer + } +} + +/// Utilities for Sentry +pub mod sentry { + use std::{str::FromStr as _, time::Duration}; + + use ak_client::apis::root_api::root_config_retrieve; + use eyre::{Error, Result}; + use tokio_retry2::{Retry, RetryError, strategy::FixedInterval}; + use tracing::{error, trace}; + + use crate::{ + Mode, VERSION, api, authentik_user_agent, + config::{self, schema::ErrorReportingConfig}, + }; + + fn get_config() -> Result { + // In non-core mode, we are running an outpost and need to grab the error reporting + // configuration from the API. + if Mode::is_core() { + return Ok(config::get().error_reporting.clone()); + } + + let api_config = api::make_config()?; + + let config = { + let retry_strategy = FixedInterval::new(Duration::from_secs(3)); + let retrieve_config = async || { + root_config_retrieve(&api_config) + .await + .map_err(Error::new) + .map_err(RetryError::transient) + }; + let retry_notify = |err: &Error, _duration| { + error!( + ?err, + "Failed to fetch configuration from API, retrying in 3 seconds" + ); + }; + tokio::runtime::Builder::new_current_thread() + .enable_all() + .build()? + .block_on(Retry::spawn_notify( + retry_strategy, + retrieve_config, + retry_notify, + ))? + }; + + let config = config.error_reporting; + + Ok(ErrorReportingConfig { + enabled: config.enabled, + sentry_dsn: Some(config.sentry_dsn), + environment: config.environment, + send_pii: config.send_pii, + #[expect( + clippy::cast_possible_truncation, + reason = "This is fine, we'll never get big values here." + )] + #[expect( + clippy::as_conversions, + reason = "This is fine, we'll never get big values here." + )] + sample_rate: config.traces_sample_rate as f32, + }) + } + + /// Install the sentry client. This must happen before [`super::install`] is called. + pub fn install() -> Result> { + let config = get_config()?; + if !config.enabled { + return Ok(None); + } + trace!("setting up sentry"); + let debug = config::get().debug; + Ok(Some(sentry::init(sentry::ClientOptions { + dsn: config.sentry_dsn.clone().map(|dsn| { + sentry::types::Dsn::from_str(&dsn).expect("Failed to create sentry DSN") + }), + release: Some(format!("authentik@{VERSION}").into()), + environment: Some(config.environment.clone().into()), + attach_stacktrace: true, + send_default_pii: config.send_pii, + sample_rate: config.sample_rate, + traces_sample_rate: if debug { 1.0 } else { config.sample_rate }, + user_agent: authentik_user_agent().into(), + ..sentry::ClientOptions::default() + }))) + } +} + +#[cfg(test)] +mod tests { + use tracing::{error, trace}; + + #[test] + fn crude() { + let _ = super::install_crude(); + trace!("test"); + error!("test"); + } + + #[test] + fn default() { + crate::config::init().expect("failed to init config"); + super::install().expect("failed to install tracing"); + trace!("test"); + error!("test"); + } + + #[test] + fn both() { + let tracing_crude = super::install_crude(); + trace!("test"); + error!("test"); + crate::config::init().expect("failed to init config"); + super::install().expect("failed to install tracing"); + trace!("test"); + error!("test"); + drop(tracing_crude); + trace!("test"); + error!("test"); + } + + #[test] + fn sentry_install() { + crate::config::init().expect("failed to init config"); + let _ = super::sentry::install(); + } + + #[test] + fn all() { + let tracing_crude = super::install_crude(); + trace!("test"); + error!("test"); + crate::config::init().expect("failed to init config"); + let _sentry = super::sentry::install(); + trace!("test"); + error!("test"); + super::install().expect("failed to install tracing"); + trace!("test"); + error!("test"); + drop(tracing_crude); + trace!("test"); + error!("test"); + } +} diff --git a/packages/client-go/.openapi-generator-ignore b/packages/client-go/.openapi-generator-ignore new file mode 100644 index 0000000000..d30a54720e --- /dev/null +++ b/packages/client-go/.openapi-generator-ignore @@ -0,0 +1,6 @@ +go.mod +go.sum +.gitignore +.travis.yml +README.md +git_push.sh diff --git a/packages/client-go/Makefile b/packages/client-go/Makefile new file mode 100644 index 0000000000..29b58f6274 --- /dev/null +++ b/packages/client-go/Makefile @@ -0,0 +1,16 @@ +.SHELLFLAGS += -x -e +PWD = $(shell pwd) +UID = $(shell id -u) +GID = $(shell id -g) + +build: + rm -rf "${PWD}"/*.go + "${PWD}/../../scripts/api_filter_schema.py" "${PWD}/../../schema.yml" "${PWD}/schema.yml" "${PWD}/operation_ids" + docker compose run --rm --user "${UID}:${GID}" gen \ + generate \ + -i /local/schema.yml \ + -g go \ + -o local \ + -c /local/config.yaml + rm -rf "${PWD}/.openapi-generator" "${PWD}/api/openapi.yaml" "${PWD}/schema.yml" + go fmt . diff --git a/packages/client-go/api_core.go b/packages/client-go/api_core.go new file mode 100644 index 0000000000..2c108f4afe --- /dev/null +++ b/packages/client-go/api_core.go @@ -0,0 +1,1305 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "bytes" + "context" + "io" + "net/http" + "net/url" + "reflect" + "strings" + "time" +) + +// CoreAPIService CoreAPI service +type CoreAPIService service + +type ApiCoreBrandsListRequest struct { + ctx context.Context + ApiService *CoreAPIService + brandUuid *string + brandingDefaultFlowBackground *string + brandingFavicon *string + brandingLogo *string + brandingTitle *string + clientCertificates *[]string + default_ *bool + domain *string + flowAuthentication *string + flowDeviceCode *string + flowInvalidation *string + flowLockdown *string + flowRecovery *string + flowUnenrollment *string + flowUserSettings *string + ordering *string + page *int32 + pageSize *int32 + search *string + webCertificate *string +} + +func (r ApiCoreBrandsListRequest) BrandUuid(brandUuid string) ApiCoreBrandsListRequest { + r.brandUuid = &brandUuid + return r +} + +func (r ApiCoreBrandsListRequest) BrandingDefaultFlowBackground(brandingDefaultFlowBackground string) ApiCoreBrandsListRequest { + r.brandingDefaultFlowBackground = &brandingDefaultFlowBackground + return r +} + +func (r ApiCoreBrandsListRequest) BrandingFavicon(brandingFavicon string) ApiCoreBrandsListRequest { + r.brandingFavicon = &brandingFavicon + return r +} + +func (r ApiCoreBrandsListRequest) BrandingLogo(brandingLogo string) ApiCoreBrandsListRequest { + r.brandingLogo = &brandingLogo + return r +} + +func (r ApiCoreBrandsListRequest) BrandingTitle(brandingTitle string) ApiCoreBrandsListRequest { + r.brandingTitle = &brandingTitle + return r +} + +func (r ApiCoreBrandsListRequest) ClientCertificates(clientCertificates []string) ApiCoreBrandsListRequest { + r.clientCertificates = &clientCertificates + return r +} + +func (r ApiCoreBrandsListRequest) Default_(default_ bool) ApiCoreBrandsListRequest { + r.default_ = &default_ + return r +} + +func (r ApiCoreBrandsListRequest) Domain(domain string) ApiCoreBrandsListRequest { + r.domain = &domain + return r +} + +func (r ApiCoreBrandsListRequest) FlowAuthentication(flowAuthentication string) ApiCoreBrandsListRequest { + r.flowAuthentication = &flowAuthentication + return r +} + +func (r ApiCoreBrandsListRequest) FlowDeviceCode(flowDeviceCode string) ApiCoreBrandsListRequest { + r.flowDeviceCode = &flowDeviceCode + return r +} + +func (r ApiCoreBrandsListRequest) FlowInvalidation(flowInvalidation string) ApiCoreBrandsListRequest { + r.flowInvalidation = &flowInvalidation + return r +} + +func (r ApiCoreBrandsListRequest) FlowLockdown(flowLockdown string) ApiCoreBrandsListRequest { + r.flowLockdown = &flowLockdown + return r +} + +func (r ApiCoreBrandsListRequest) FlowRecovery(flowRecovery string) ApiCoreBrandsListRequest { + r.flowRecovery = &flowRecovery + return r +} + +func (r ApiCoreBrandsListRequest) FlowUnenrollment(flowUnenrollment string) ApiCoreBrandsListRequest { + r.flowUnenrollment = &flowUnenrollment + return r +} + +func (r ApiCoreBrandsListRequest) FlowUserSettings(flowUserSettings string) ApiCoreBrandsListRequest { + r.flowUserSettings = &flowUserSettings + return r +} + +// Which field to use when ordering the results. +func (r ApiCoreBrandsListRequest) Ordering(ordering string) ApiCoreBrandsListRequest { + r.ordering = &ordering + return r +} + +// A page number within the paginated result set. +func (r ApiCoreBrandsListRequest) Page(page int32) ApiCoreBrandsListRequest { + r.page = &page + return r +} + +// Number of results to return per page. +func (r ApiCoreBrandsListRequest) PageSize(pageSize int32) ApiCoreBrandsListRequest { + r.pageSize = &pageSize + return r +} + +// A search term. +func (r ApiCoreBrandsListRequest) Search(search string) ApiCoreBrandsListRequest { + r.search = &search + return r +} + +func (r ApiCoreBrandsListRequest) WebCertificate(webCertificate string) ApiCoreBrandsListRequest { + r.webCertificate = &webCertificate + return r +} + +func (r ApiCoreBrandsListRequest) Execute() (*PaginatedBrandList, *http.Response, error) { + return r.ApiService.CoreBrandsListExecute(r) +} + +/* +CoreBrandsList Method for CoreBrandsList + +Brand Viewset + + @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + @return ApiCoreBrandsListRequest +*/ +func (a *CoreAPIService) CoreBrandsList(ctx context.Context) ApiCoreBrandsListRequest { + return ApiCoreBrandsListRequest{ + ApiService: a, + ctx: ctx, + } +} + +// Execute executes the request +// +// @return PaginatedBrandList +func (a *CoreAPIService) CoreBrandsListExecute(r ApiCoreBrandsListRequest) (*PaginatedBrandList, *http.Response, error) { + var ( + localVarHTTPMethod = http.MethodGet + localVarPostBody interface{} + formFiles []formFile + localVarReturnValue *PaginatedBrandList + ) + + localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "CoreAPIService.CoreBrandsList") + if err != nil { + return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()} + } + + localVarPath := localBasePath + "/core/brands/" + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + if r.brandUuid != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "brand_uuid", r.brandUuid, "form", "") + } + if r.brandingDefaultFlowBackground != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "branding_default_flow_background", r.brandingDefaultFlowBackground, "form", "") + } + if r.brandingFavicon != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "branding_favicon", r.brandingFavicon, "form", "") + } + if r.brandingLogo != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "branding_logo", r.brandingLogo, "form", "") + } + if r.brandingTitle != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "branding_title", r.brandingTitle, "form", "") + } + if r.clientCertificates != nil { + t := *r.clientCertificates + if reflect.TypeOf(t).Kind() == reflect.Slice { + s := reflect.ValueOf(t) + for i := 0; i < s.Len(); i++ { + parameterAddToHeaderOrQuery(localVarQueryParams, "client_certificates", s.Index(i).Interface(), "form", "multi") + } + } else { + parameterAddToHeaderOrQuery(localVarQueryParams, "client_certificates", t, "form", "multi") + } + } + if r.default_ != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "default", r.default_, "form", "") + } + if r.domain != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "domain", r.domain, "form", "") + } + if r.flowAuthentication != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "flow_authentication", r.flowAuthentication, "form", "") + } + if r.flowDeviceCode != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "flow_device_code", r.flowDeviceCode, "form", "") + } + if r.flowInvalidation != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "flow_invalidation", r.flowInvalidation, "form", "") + } + if r.flowLockdown != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "flow_lockdown", r.flowLockdown, "form", "") + } + if r.flowRecovery != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "flow_recovery", r.flowRecovery, "form", "") + } + if r.flowUnenrollment != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "flow_unenrollment", r.flowUnenrollment, "form", "") + } + if r.flowUserSettings != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "flow_user_settings", r.flowUserSettings, "form", "") + } + if r.ordering != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "ordering", r.ordering, "form", "") + } + if r.page != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "page", r.page, "form", "") + } + if r.pageSize != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "page_size", r.pageSize, "form", "") + } + if r.search != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "search", r.search, "form", "") + } + if r.webCertificate != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "web_certificate", r.webCertificate, "form", "") + } + // to determine the Content-Type header + localVarHTTPContentTypes := []string{} + + // set Content-Type header + localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) + if localVarHTTPContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHTTPContentType + } + + // to determine the Accept header + localVarHTTPHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) + if localVarHTTPHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept + } + req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHTTPResponse, err := a.client.callAPI(req) + if err != nil || localVarHTTPResponse == nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + localVarBody, err := io.ReadAll(localVarHTTPResponse.Body) + localVarHTTPResponse.Body.Close() + localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody)) + if err != nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + if localVarHTTPResponse.StatusCode >= 300 { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: localVarHTTPResponse.Status, + } + if localVarHTTPResponse.StatusCode == 400 { + var v ValidationError + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 403 { + var v GenericError + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: err.Error(), + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + return localVarReturnValue, localVarHTTPResponse, nil +} + +type ApiCoreGroupsListRequest struct { + ctx context.Context + ApiService *CoreAPIService + attributes *string + includeChildren *bool + includeInheritedRoles *bool + includeParents *bool + includeUsers *bool + isSuperuser *bool + membersByPk *[]int32 + membersByUsername *[]string + name *string + ordering *string + page *int32 + pageSize *int32 + search *string +} + +// Attributes +func (r ApiCoreGroupsListRequest) Attributes(attributes string) ApiCoreGroupsListRequest { + r.attributes = &attributes + return r +} + +func (r ApiCoreGroupsListRequest) IncludeChildren(includeChildren bool) ApiCoreGroupsListRequest { + r.includeChildren = &includeChildren + return r +} + +func (r ApiCoreGroupsListRequest) IncludeInheritedRoles(includeInheritedRoles bool) ApiCoreGroupsListRequest { + r.includeInheritedRoles = &includeInheritedRoles + return r +} + +func (r ApiCoreGroupsListRequest) IncludeParents(includeParents bool) ApiCoreGroupsListRequest { + r.includeParents = &includeParents + return r +} + +func (r ApiCoreGroupsListRequest) IncludeUsers(includeUsers bool) ApiCoreGroupsListRequest { + r.includeUsers = &includeUsers + return r +} + +func (r ApiCoreGroupsListRequest) IsSuperuser(isSuperuser bool) ApiCoreGroupsListRequest { + r.isSuperuser = &isSuperuser + return r +} + +func (r ApiCoreGroupsListRequest) MembersByPk(membersByPk []int32) ApiCoreGroupsListRequest { + r.membersByPk = &membersByPk + return r +} + +// Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only. +func (r ApiCoreGroupsListRequest) MembersByUsername(membersByUsername []string) ApiCoreGroupsListRequest { + r.membersByUsername = &membersByUsername + return r +} + +func (r ApiCoreGroupsListRequest) Name(name string) ApiCoreGroupsListRequest { + r.name = &name + return r +} + +// Which field to use when ordering the results. +func (r ApiCoreGroupsListRequest) Ordering(ordering string) ApiCoreGroupsListRequest { + r.ordering = &ordering + return r +} + +// A page number within the paginated result set. +func (r ApiCoreGroupsListRequest) Page(page int32) ApiCoreGroupsListRequest { + r.page = &page + return r +} + +// Number of results to return per page. +func (r ApiCoreGroupsListRequest) PageSize(pageSize int32) ApiCoreGroupsListRequest { + r.pageSize = &pageSize + return r +} + +// A search term. +func (r ApiCoreGroupsListRequest) Search(search string) ApiCoreGroupsListRequest { + r.search = &search + return r +} + +func (r ApiCoreGroupsListRequest) Execute() (*PaginatedGroupList, *http.Response, error) { + return r.ApiService.CoreGroupsListExecute(r) +} + +/* +CoreGroupsList Method for CoreGroupsList + +Group Viewset + + @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + @return ApiCoreGroupsListRequest +*/ +func (a *CoreAPIService) CoreGroupsList(ctx context.Context) ApiCoreGroupsListRequest { + return ApiCoreGroupsListRequest{ + ApiService: a, + ctx: ctx, + } +} + +// Execute executes the request +// +// @return PaginatedGroupList +func (a *CoreAPIService) CoreGroupsListExecute(r ApiCoreGroupsListRequest) (*PaginatedGroupList, *http.Response, error) { + var ( + localVarHTTPMethod = http.MethodGet + localVarPostBody interface{} + formFiles []formFile + localVarReturnValue *PaginatedGroupList + ) + + localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "CoreAPIService.CoreGroupsList") + if err != nil { + return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()} + } + + localVarPath := localBasePath + "/core/groups/" + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + if r.attributes != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "attributes", r.attributes, "form", "") + } + if r.includeChildren != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "include_children", r.includeChildren, "form", "") + } else { + var defaultValue bool = false + parameterAddToHeaderOrQuery(localVarQueryParams, "include_children", defaultValue, "form", "") + r.includeChildren = &defaultValue + } + if r.includeInheritedRoles != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "include_inherited_roles", r.includeInheritedRoles, "form", "") + } else { + var defaultValue bool = false + parameterAddToHeaderOrQuery(localVarQueryParams, "include_inherited_roles", defaultValue, "form", "") + r.includeInheritedRoles = &defaultValue + } + if r.includeParents != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "include_parents", r.includeParents, "form", "") + } else { + var defaultValue bool = false + parameterAddToHeaderOrQuery(localVarQueryParams, "include_parents", defaultValue, "form", "") + r.includeParents = &defaultValue + } + if r.includeUsers != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "include_users", r.includeUsers, "form", "") + } else { + var defaultValue bool = true + parameterAddToHeaderOrQuery(localVarQueryParams, "include_users", defaultValue, "form", "") + r.includeUsers = &defaultValue + } + if r.isSuperuser != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "is_superuser", r.isSuperuser, "form", "") + } + if r.membersByPk != nil { + t := *r.membersByPk + if reflect.TypeOf(t).Kind() == reflect.Slice { + s := reflect.ValueOf(t) + for i := 0; i < s.Len(); i++ { + parameterAddToHeaderOrQuery(localVarQueryParams, "members_by_pk", s.Index(i).Interface(), "form", "multi") + } + } else { + parameterAddToHeaderOrQuery(localVarQueryParams, "members_by_pk", t, "form", "multi") + } + } + if r.membersByUsername != nil { + t := *r.membersByUsername + if reflect.TypeOf(t).Kind() == reflect.Slice { + s := reflect.ValueOf(t) + for i := 0; i < s.Len(); i++ { + parameterAddToHeaderOrQuery(localVarQueryParams, "members_by_username", s.Index(i).Interface(), "form", "multi") + } + } else { + parameterAddToHeaderOrQuery(localVarQueryParams, "members_by_username", t, "form", "multi") + } + } + if r.name != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "name", r.name, "form", "") + } + if r.ordering != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "ordering", r.ordering, "form", "") + } + if r.page != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "page", r.page, "form", "") + } + if r.pageSize != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "page_size", r.pageSize, "form", "") + } + if r.search != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "search", r.search, "form", "") + } + // to determine the Content-Type header + localVarHTTPContentTypes := []string{} + + // set Content-Type header + localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) + if localVarHTTPContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHTTPContentType + } + + // to determine the Accept header + localVarHTTPHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) + if localVarHTTPHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept + } + req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHTTPResponse, err := a.client.callAPI(req) + if err != nil || localVarHTTPResponse == nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + localVarBody, err := io.ReadAll(localVarHTTPResponse.Body) + localVarHTTPResponse.Body.Close() + localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody)) + if err != nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + if localVarHTTPResponse.StatusCode >= 300 { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: localVarHTTPResponse.Status, + } + if localVarHTTPResponse.StatusCode == 400 { + var v ValidationError + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 403 { + var v GenericError + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: err.Error(), + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + return localVarReturnValue, localVarHTTPResponse, nil +} + +type ApiCoreUsersListRequest struct { + ctx context.Context + ApiService *CoreAPIService + attributes *string + dateJoined *time.Time + dateJoinedGt *time.Time + dateJoinedLt *time.Time + email *string + groupsByName *[]string + groupsByPk *[]string + includeGroups *bool + includeRoles *bool + isActive *bool + isSuperuser *bool + lastLogin *time.Time + lastLoginGt *time.Time + lastLoginIsnull *bool + lastLoginLt *time.Time + lastUpdated *time.Time + lastUpdatedGt *time.Time + lastUpdatedLt *time.Time + name *string + ordering *string + page *int32 + pageSize *int32 + path *string + pathStartswith *string + rolesByName *[]string + rolesByPk *[]string + search *string + type_ *[]UserTypeEnum + username *string + uuid *string +} + +// Attributes +func (r ApiCoreUsersListRequest) Attributes(attributes string) ApiCoreUsersListRequest { + r.attributes = &attributes + return r +} + +func (r ApiCoreUsersListRequest) DateJoined(dateJoined time.Time) ApiCoreUsersListRequest { + r.dateJoined = &dateJoined + return r +} + +func (r ApiCoreUsersListRequest) DateJoinedGt(dateJoinedGt time.Time) ApiCoreUsersListRequest { + r.dateJoinedGt = &dateJoinedGt + return r +} + +func (r ApiCoreUsersListRequest) DateJoinedLt(dateJoinedLt time.Time) ApiCoreUsersListRequest { + r.dateJoinedLt = &dateJoinedLt + return r +} + +func (r ApiCoreUsersListRequest) Email(email string) ApiCoreUsersListRequest { + r.email = &email + return r +} + +func (r ApiCoreUsersListRequest) GroupsByName(groupsByName []string) ApiCoreUsersListRequest { + r.groupsByName = &groupsByName + return r +} + +func (r ApiCoreUsersListRequest) GroupsByPk(groupsByPk []string) ApiCoreUsersListRequest { + r.groupsByPk = &groupsByPk + return r +} + +func (r ApiCoreUsersListRequest) IncludeGroups(includeGroups bool) ApiCoreUsersListRequest { + r.includeGroups = &includeGroups + return r +} + +func (r ApiCoreUsersListRequest) IncludeRoles(includeRoles bool) ApiCoreUsersListRequest { + r.includeRoles = &includeRoles + return r +} + +func (r ApiCoreUsersListRequest) IsActive(isActive bool) ApiCoreUsersListRequest { + r.isActive = &isActive + return r +} + +func (r ApiCoreUsersListRequest) IsSuperuser(isSuperuser bool) ApiCoreUsersListRequest { + r.isSuperuser = &isSuperuser + return r +} + +func (r ApiCoreUsersListRequest) LastLogin(lastLogin time.Time) ApiCoreUsersListRequest { + r.lastLogin = &lastLogin + return r +} + +func (r ApiCoreUsersListRequest) LastLoginGt(lastLoginGt time.Time) ApiCoreUsersListRequest { + r.lastLoginGt = &lastLoginGt + return r +} + +func (r ApiCoreUsersListRequest) LastLoginIsnull(lastLoginIsnull bool) ApiCoreUsersListRequest { + r.lastLoginIsnull = &lastLoginIsnull + return r +} + +func (r ApiCoreUsersListRequest) LastLoginLt(lastLoginLt time.Time) ApiCoreUsersListRequest { + r.lastLoginLt = &lastLoginLt + return r +} + +func (r ApiCoreUsersListRequest) LastUpdated(lastUpdated time.Time) ApiCoreUsersListRequest { + r.lastUpdated = &lastUpdated + return r +} + +func (r ApiCoreUsersListRequest) LastUpdatedGt(lastUpdatedGt time.Time) ApiCoreUsersListRequest { + r.lastUpdatedGt = &lastUpdatedGt + return r +} + +func (r ApiCoreUsersListRequest) LastUpdatedLt(lastUpdatedLt time.Time) ApiCoreUsersListRequest { + r.lastUpdatedLt = &lastUpdatedLt + return r +} + +func (r ApiCoreUsersListRequest) Name(name string) ApiCoreUsersListRequest { + r.name = &name + return r +} + +// Which field to use when ordering the results. +func (r ApiCoreUsersListRequest) Ordering(ordering string) ApiCoreUsersListRequest { + r.ordering = &ordering + return r +} + +// A page number within the paginated result set. +func (r ApiCoreUsersListRequest) Page(page int32) ApiCoreUsersListRequest { + r.page = &page + return r +} + +// Number of results to return per page. +func (r ApiCoreUsersListRequest) PageSize(pageSize int32) ApiCoreUsersListRequest { + r.pageSize = &pageSize + return r +} + +func (r ApiCoreUsersListRequest) Path(path string) ApiCoreUsersListRequest { + r.path = &path + return r +} + +func (r ApiCoreUsersListRequest) PathStartswith(pathStartswith string) ApiCoreUsersListRequest { + r.pathStartswith = &pathStartswith + return r +} + +func (r ApiCoreUsersListRequest) RolesByName(rolesByName []string) ApiCoreUsersListRequest { + r.rolesByName = &rolesByName + return r +} + +func (r ApiCoreUsersListRequest) RolesByPk(rolesByPk []string) ApiCoreUsersListRequest { + r.rolesByPk = &rolesByPk + return r +} + +// A search term. +func (r ApiCoreUsersListRequest) Search(search string) ApiCoreUsersListRequest { + r.search = &search + return r +} + +func (r ApiCoreUsersListRequest) Type_(type_ []UserTypeEnum) ApiCoreUsersListRequest { + r.type_ = &type_ + return r +} + +func (r ApiCoreUsersListRequest) Username(username string) ApiCoreUsersListRequest { + r.username = &username + return r +} + +func (r ApiCoreUsersListRequest) Uuid(uuid string) ApiCoreUsersListRequest { + r.uuid = &uuid + return r +} + +func (r ApiCoreUsersListRequest) Execute() (*PaginatedUserList, *http.Response, error) { + return r.ApiService.CoreUsersListExecute(r) +} + +/* +CoreUsersList Method for CoreUsersList + +User Viewset + + @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + @return ApiCoreUsersListRequest +*/ +func (a *CoreAPIService) CoreUsersList(ctx context.Context) ApiCoreUsersListRequest { + return ApiCoreUsersListRequest{ + ApiService: a, + ctx: ctx, + } +} + +// Execute executes the request +// +// @return PaginatedUserList +func (a *CoreAPIService) CoreUsersListExecute(r ApiCoreUsersListRequest) (*PaginatedUserList, *http.Response, error) { + var ( + localVarHTTPMethod = http.MethodGet + localVarPostBody interface{} + formFiles []formFile + localVarReturnValue *PaginatedUserList + ) + + localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "CoreAPIService.CoreUsersList") + if err != nil { + return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()} + } + + localVarPath := localBasePath + "/core/users/" + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + if r.attributes != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "attributes", r.attributes, "form", "") + } + if r.dateJoined != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "date_joined", r.dateJoined, "form", "") + } + if r.dateJoinedGt != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "date_joined__gt", r.dateJoinedGt, "form", "") + } + if r.dateJoinedLt != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "date_joined__lt", r.dateJoinedLt, "form", "") + } + if r.email != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "email", r.email, "form", "") + } + if r.groupsByName != nil { + t := *r.groupsByName + if reflect.TypeOf(t).Kind() == reflect.Slice { + s := reflect.ValueOf(t) + for i := 0; i < s.Len(); i++ { + parameterAddToHeaderOrQuery(localVarQueryParams, "groups_by_name", s.Index(i).Interface(), "form", "multi") + } + } else { + parameterAddToHeaderOrQuery(localVarQueryParams, "groups_by_name", t, "form", "multi") + } + } + if r.groupsByPk != nil { + t := *r.groupsByPk + if reflect.TypeOf(t).Kind() == reflect.Slice { + s := reflect.ValueOf(t) + for i := 0; i < s.Len(); i++ { + parameterAddToHeaderOrQuery(localVarQueryParams, "groups_by_pk", s.Index(i).Interface(), "form", "multi") + } + } else { + parameterAddToHeaderOrQuery(localVarQueryParams, "groups_by_pk", t, "form", "multi") + } + } + if r.includeGroups != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "include_groups", r.includeGroups, "form", "") + } else { + var defaultValue bool = true + parameterAddToHeaderOrQuery(localVarQueryParams, "include_groups", defaultValue, "form", "") + r.includeGroups = &defaultValue + } + if r.includeRoles != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "include_roles", r.includeRoles, "form", "") + } else { + var defaultValue bool = true + parameterAddToHeaderOrQuery(localVarQueryParams, "include_roles", defaultValue, "form", "") + r.includeRoles = &defaultValue + } + if r.isActive != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "is_active", r.isActive, "form", "") + } + if r.isSuperuser != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "is_superuser", r.isSuperuser, "form", "") + } + if r.lastLogin != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "last_login", r.lastLogin, "form", "") + } + if r.lastLoginGt != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "last_login__gt", r.lastLoginGt, "form", "") + } + if r.lastLoginIsnull != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "last_login__isnull", r.lastLoginIsnull, "form", "") + } + if r.lastLoginLt != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "last_login__lt", r.lastLoginLt, "form", "") + } + if r.lastUpdated != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "last_updated", r.lastUpdated, "form", "") + } + if r.lastUpdatedGt != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "last_updated__gt", r.lastUpdatedGt, "form", "") + } + if r.lastUpdatedLt != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "last_updated__lt", r.lastUpdatedLt, "form", "") + } + if r.name != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "name", r.name, "form", "") + } + if r.ordering != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "ordering", r.ordering, "form", "") + } + if r.page != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "page", r.page, "form", "") + } + if r.pageSize != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "page_size", r.pageSize, "form", "") + } + if r.path != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "path", r.path, "form", "") + } + if r.pathStartswith != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "path_startswith", r.pathStartswith, "form", "") + } + if r.rolesByName != nil { + t := *r.rolesByName + if reflect.TypeOf(t).Kind() == reflect.Slice { + s := reflect.ValueOf(t) + for i := 0; i < s.Len(); i++ { + parameterAddToHeaderOrQuery(localVarQueryParams, "roles_by_name", s.Index(i).Interface(), "form", "multi") + } + } else { + parameterAddToHeaderOrQuery(localVarQueryParams, "roles_by_name", t, "form", "multi") + } + } + if r.rolesByPk != nil { + t := *r.rolesByPk + if reflect.TypeOf(t).Kind() == reflect.Slice { + s := reflect.ValueOf(t) + for i := 0; i < s.Len(); i++ { + parameterAddToHeaderOrQuery(localVarQueryParams, "roles_by_pk", s.Index(i).Interface(), "form", "multi") + } + } else { + parameterAddToHeaderOrQuery(localVarQueryParams, "roles_by_pk", t, "form", "multi") + } + } + if r.search != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "search", r.search, "form", "") + } + if r.type_ != nil { + t := *r.type_ + if reflect.TypeOf(t).Kind() == reflect.Slice { + s := reflect.ValueOf(t) + for i := 0; i < s.Len(); i++ { + parameterAddToHeaderOrQuery(localVarQueryParams, "type", s.Index(i).Interface(), "form", "multi") + } + } else { + parameterAddToHeaderOrQuery(localVarQueryParams, "type", t, "form", "multi") + } + } + if r.username != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "username", r.username, "form", "") + } + if r.uuid != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "uuid", r.uuid, "form", "") + } + // to determine the Content-Type header + localVarHTTPContentTypes := []string{} + + // set Content-Type header + localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) + if localVarHTTPContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHTTPContentType + } + + // to determine the Accept header + localVarHTTPHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) + if localVarHTTPHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept + } + req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHTTPResponse, err := a.client.callAPI(req) + if err != nil || localVarHTTPResponse == nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + localVarBody, err := io.ReadAll(localVarHTTPResponse.Body) + localVarHTTPResponse.Body.Close() + localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody)) + if err != nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + if localVarHTTPResponse.StatusCode >= 300 { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: localVarHTTPResponse.Status, + } + if localVarHTTPResponse.StatusCode == 400 { + var v ValidationError + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 403 { + var v GenericError + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: err.Error(), + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + return localVarReturnValue, localVarHTTPResponse, nil +} + +type ApiCoreUsersMeRetrieveRequest struct { + ctx context.Context + ApiService *CoreAPIService +} + +func (r ApiCoreUsersMeRetrieveRequest) Execute() (*SessionUser, *http.Response, error) { + return r.ApiService.CoreUsersMeRetrieveExecute(r) +} + +/* +CoreUsersMeRetrieve Method for CoreUsersMeRetrieve + +Get information about current user + + @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + @return ApiCoreUsersMeRetrieveRequest +*/ +func (a *CoreAPIService) CoreUsersMeRetrieve(ctx context.Context) ApiCoreUsersMeRetrieveRequest { + return ApiCoreUsersMeRetrieveRequest{ + ApiService: a, + ctx: ctx, + } +} + +// Execute executes the request +// +// @return SessionUser +func (a *CoreAPIService) CoreUsersMeRetrieveExecute(r ApiCoreUsersMeRetrieveRequest) (*SessionUser, *http.Response, error) { + var ( + localVarHTTPMethod = http.MethodGet + localVarPostBody interface{} + formFiles []formFile + localVarReturnValue *SessionUser + ) + + localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "CoreAPIService.CoreUsersMeRetrieve") + if err != nil { + return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()} + } + + localVarPath := localBasePath + "/core/users/me/" + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + // to determine the Content-Type header + localVarHTTPContentTypes := []string{} + + // set Content-Type header + localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) + if localVarHTTPContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHTTPContentType + } + + // to determine the Accept header + localVarHTTPHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) + if localVarHTTPHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept + } + req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHTTPResponse, err := a.client.callAPI(req) + if err != nil || localVarHTTPResponse == nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + localVarBody, err := io.ReadAll(localVarHTTPResponse.Body) + localVarHTTPResponse.Body.Close() + localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody)) + if err != nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + if localVarHTTPResponse.StatusCode >= 300 { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: localVarHTTPResponse.Status, + } + if localVarHTTPResponse.StatusCode == 400 { + var v ValidationError + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 403 { + var v GenericError + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: err.Error(), + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + return localVarReturnValue, localVarHTTPResponse, nil +} + +type ApiCoreUsersRetrieveRequest struct { + ctx context.Context + ApiService *CoreAPIService + id int32 +} + +func (r ApiCoreUsersRetrieveRequest) Execute() (*User, *http.Response, error) { + return r.ApiService.CoreUsersRetrieveExecute(r) +} + +/* +CoreUsersRetrieve Method for CoreUsersRetrieve + +User Viewset + + @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + @param id A unique integer value identifying this User. + @return ApiCoreUsersRetrieveRequest +*/ +func (a *CoreAPIService) CoreUsersRetrieve(ctx context.Context, id int32) ApiCoreUsersRetrieveRequest { + return ApiCoreUsersRetrieveRequest{ + ApiService: a, + ctx: ctx, + id: id, + } +} + +// Execute executes the request +// +// @return User +func (a *CoreAPIService) CoreUsersRetrieveExecute(r ApiCoreUsersRetrieveRequest) (*User, *http.Response, error) { + var ( + localVarHTTPMethod = http.MethodGet + localVarPostBody interface{} + formFiles []formFile + localVarReturnValue *User + ) + + localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "CoreAPIService.CoreUsersRetrieve") + if err != nil { + return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()} + } + + localVarPath := localBasePath + "/core/users/{id}/" + localVarPath = strings.Replace(localVarPath, "{"+"id"+"}", url.PathEscape(parameterValueToString(r.id, "id")), -1) + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + // to determine the Content-Type header + localVarHTTPContentTypes := []string{} + + // set Content-Type header + localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) + if localVarHTTPContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHTTPContentType + } + + // to determine the Accept header + localVarHTTPHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) + if localVarHTTPHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept + } + req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHTTPResponse, err := a.client.callAPI(req) + if err != nil || localVarHTTPResponse == nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + localVarBody, err := io.ReadAll(localVarHTTPResponse.Body) + localVarHTTPResponse.Body.Close() + localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody)) + if err != nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + if localVarHTTPResponse.StatusCode >= 300 { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: localVarHTTPResponse.Status, + } + if localVarHTTPResponse.StatusCode == 400 { + var v ValidationError + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 403 { + var v GenericError + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: err.Error(), + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + return localVarReturnValue, localVarHTTPResponse, nil +} diff --git a/packages/client-go/api_crypto.go b/packages/client-go/api_crypto.go new file mode 100644 index 0000000000..bf8145c499 --- /dev/null +++ b/packages/client-go/api_crypto.go @@ -0,0 +1,417 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "bytes" + "context" + "io" + "net/http" + "net/url" + "strings" +) + +// CryptoAPIService CryptoAPI service +type CryptoAPIService service + +type ApiCryptoCertificatekeypairsRetrieveRequest struct { + ctx context.Context + ApiService *CryptoAPIService + kpUuid string +} + +func (r ApiCryptoCertificatekeypairsRetrieveRequest) Execute() (*CertificateKeyPair, *http.Response, error) { + return r.ApiService.CryptoCertificatekeypairsRetrieveExecute(r) +} + +/* +CryptoCertificatekeypairsRetrieve Method for CryptoCertificatekeypairsRetrieve + +CertificateKeyPair Viewset + + @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + @param kpUuid A UUID string identifying this Certificate-Key Pair. + @return ApiCryptoCertificatekeypairsRetrieveRequest +*/ +func (a *CryptoAPIService) CryptoCertificatekeypairsRetrieve(ctx context.Context, kpUuid string) ApiCryptoCertificatekeypairsRetrieveRequest { + return ApiCryptoCertificatekeypairsRetrieveRequest{ + ApiService: a, + ctx: ctx, + kpUuid: kpUuid, + } +} + +// Execute executes the request +// +// @return CertificateKeyPair +func (a *CryptoAPIService) CryptoCertificatekeypairsRetrieveExecute(r ApiCryptoCertificatekeypairsRetrieveRequest) (*CertificateKeyPair, *http.Response, error) { + var ( + localVarHTTPMethod = http.MethodGet + localVarPostBody interface{} + formFiles []formFile + localVarReturnValue *CertificateKeyPair + ) + + localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "CryptoAPIService.CryptoCertificatekeypairsRetrieve") + if err != nil { + return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()} + } + + localVarPath := localBasePath + "/crypto/certificatekeypairs/{kp_uuid}/" + localVarPath = strings.Replace(localVarPath, "{"+"kp_uuid"+"}", url.PathEscape(parameterValueToString(r.kpUuid, "kpUuid")), -1) + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + // to determine the Content-Type header + localVarHTTPContentTypes := []string{} + + // set Content-Type header + localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) + if localVarHTTPContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHTTPContentType + } + + // to determine the Accept header + localVarHTTPHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) + if localVarHTTPHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept + } + req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHTTPResponse, err := a.client.callAPI(req) + if err != nil || localVarHTTPResponse == nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + localVarBody, err := io.ReadAll(localVarHTTPResponse.Body) + localVarHTTPResponse.Body.Close() + localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody)) + if err != nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + if localVarHTTPResponse.StatusCode >= 300 { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: localVarHTTPResponse.Status, + } + if localVarHTTPResponse.StatusCode == 400 { + var v ValidationError + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 403 { + var v GenericError + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: err.Error(), + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + return localVarReturnValue, localVarHTTPResponse, nil +} + +type ApiCryptoCertificatekeypairsViewCertificateRetrieveRequest struct { + ctx context.Context + ApiService *CryptoAPIService + kpUuid string + download *bool +} + +func (r ApiCryptoCertificatekeypairsViewCertificateRetrieveRequest) Download(download bool) ApiCryptoCertificatekeypairsViewCertificateRetrieveRequest { + r.download = &download + return r +} + +func (r ApiCryptoCertificatekeypairsViewCertificateRetrieveRequest) Execute() (*CertificateData, *http.Response, error) { + return r.ApiService.CryptoCertificatekeypairsViewCertificateRetrieveExecute(r) +} + +/* +CryptoCertificatekeypairsViewCertificateRetrieve Method for CryptoCertificatekeypairsViewCertificateRetrieve + +Return certificate-key pairs certificate and log access + + @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + @param kpUuid A UUID string identifying this Certificate-Key Pair. + @return ApiCryptoCertificatekeypairsViewCertificateRetrieveRequest +*/ +func (a *CryptoAPIService) CryptoCertificatekeypairsViewCertificateRetrieve(ctx context.Context, kpUuid string) ApiCryptoCertificatekeypairsViewCertificateRetrieveRequest { + return ApiCryptoCertificatekeypairsViewCertificateRetrieveRequest{ + ApiService: a, + ctx: ctx, + kpUuid: kpUuid, + } +} + +// Execute executes the request +// +// @return CertificateData +func (a *CryptoAPIService) CryptoCertificatekeypairsViewCertificateRetrieveExecute(r ApiCryptoCertificatekeypairsViewCertificateRetrieveRequest) (*CertificateData, *http.Response, error) { + var ( + localVarHTTPMethod = http.MethodGet + localVarPostBody interface{} + formFiles []formFile + localVarReturnValue *CertificateData + ) + + localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "CryptoAPIService.CryptoCertificatekeypairsViewCertificateRetrieve") + if err != nil { + return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()} + } + + localVarPath := localBasePath + "/crypto/certificatekeypairs/{kp_uuid}/view_certificate/" + localVarPath = strings.Replace(localVarPath, "{"+"kp_uuid"+"}", url.PathEscape(parameterValueToString(r.kpUuid, "kpUuid")), -1) + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + if r.download != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "download", r.download, "form", "") + } + // to determine the Content-Type header + localVarHTTPContentTypes := []string{} + + // set Content-Type header + localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) + if localVarHTTPContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHTTPContentType + } + + // to determine the Accept header + localVarHTTPHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) + if localVarHTTPHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept + } + req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHTTPResponse, err := a.client.callAPI(req) + if err != nil || localVarHTTPResponse == nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + localVarBody, err := io.ReadAll(localVarHTTPResponse.Body) + localVarHTTPResponse.Body.Close() + localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody)) + if err != nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + if localVarHTTPResponse.StatusCode >= 300 { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: localVarHTTPResponse.Status, + } + if localVarHTTPResponse.StatusCode == 400 { + var v ValidationError + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 403 { + var v GenericError + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: err.Error(), + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + return localVarReturnValue, localVarHTTPResponse, nil +} + +type ApiCryptoCertificatekeypairsViewPrivateKeyRetrieveRequest struct { + ctx context.Context + ApiService *CryptoAPIService + kpUuid string + download *bool +} + +func (r ApiCryptoCertificatekeypairsViewPrivateKeyRetrieveRequest) Download(download bool) ApiCryptoCertificatekeypairsViewPrivateKeyRetrieveRequest { + r.download = &download + return r +} + +func (r ApiCryptoCertificatekeypairsViewPrivateKeyRetrieveRequest) Execute() (*CertificateData, *http.Response, error) { + return r.ApiService.CryptoCertificatekeypairsViewPrivateKeyRetrieveExecute(r) +} + +/* +CryptoCertificatekeypairsViewPrivateKeyRetrieve Method for CryptoCertificatekeypairsViewPrivateKeyRetrieve + +Return certificate-key pairs private key and log access + + @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + @param kpUuid A UUID string identifying this Certificate-Key Pair. + @return ApiCryptoCertificatekeypairsViewPrivateKeyRetrieveRequest +*/ +func (a *CryptoAPIService) CryptoCertificatekeypairsViewPrivateKeyRetrieve(ctx context.Context, kpUuid string) ApiCryptoCertificatekeypairsViewPrivateKeyRetrieveRequest { + return ApiCryptoCertificatekeypairsViewPrivateKeyRetrieveRequest{ + ApiService: a, + ctx: ctx, + kpUuid: kpUuid, + } +} + +// Execute executes the request +// +// @return CertificateData +func (a *CryptoAPIService) CryptoCertificatekeypairsViewPrivateKeyRetrieveExecute(r ApiCryptoCertificatekeypairsViewPrivateKeyRetrieveRequest) (*CertificateData, *http.Response, error) { + var ( + localVarHTTPMethod = http.MethodGet + localVarPostBody interface{} + formFiles []formFile + localVarReturnValue *CertificateData + ) + + localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "CryptoAPIService.CryptoCertificatekeypairsViewPrivateKeyRetrieve") + if err != nil { + return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()} + } + + localVarPath := localBasePath + "/crypto/certificatekeypairs/{kp_uuid}/view_private_key/" + localVarPath = strings.Replace(localVarPath, "{"+"kp_uuid"+"}", url.PathEscape(parameterValueToString(r.kpUuid, "kpUuid")), -1) + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + if r.download != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "download", r.download, "form", "") + } + // to determine the Content-Type header + localVarHTTPContentTypes := []string{} + + // set Content-Type header + localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) + if localVarHTTPContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHTTPContentType + } + + // to determine the Accept header + localVarHTTPHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) + if localVarHTTPHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept + } + req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHTTPResponse, err := a.client.callAPI(req) + if err != nil || localVarHTTPResponse == nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + localVarBody, err := io.ReadAll(localVarHTTPResponse.Body) + localVarHTTPResponse.Body.Close() + localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody)) + if err != nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + if localVarHTTPResponse.StatusCode >= 300 { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: localVarHTTPResponse.Status, + } + if localVarHTTPResponse.StatusCode == 400 { + var v ValidationError + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 403 { + var v GenericError + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: err.Error(), + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + return localVarReturnValue, localVarHTTPResponse, nil +} diff --git a/packages/client-go/api_events.go b/packages/client-go/api_events.go new file mode 100644 index 0000000000..788b16a0cc --- /dev/null +++ b/packages/client-go/api_events.go @@ -0,0 +1,155 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "bytes" + "context" + "io" + "net/http" + "net/url" +) + +// EventsAPIService EventsAPI service +type EventsAPIService service + +type ApiEventsEventsCreateRequest struct { + ctx context.Context + ApiService *EventsAPIService + eventRequest *EventRequest +} + +func (r ApiEventsEventsCreateRequest) EventRequest(eventRequest EventRequest) ApiEventsEventsCreateRequest { + r.eventRequest = &eventRequest + return r +} + +func (r ApiEventsEventsCreateRequest) Execute() (*Event, *http.Response, error) { + return r.ApiService.EventsEventsCreateExecute(r) +} + +/* +EventsEventsCreate Method for EventsEventsCreate + +Event Read-Only Viewset + + @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + @return ApiEventsEventsCreateRequest +*/ +func (a *EventsAPIService) EventsEventsCreate(ctx context.Context) ApiEventsEventsCreateRequest { + return ApiEventsEventsCreateRequest{ + ApiService: a, + ctx: ctx, + } +} + +// Execute executes the request +// +// @return Event +func (a *EventsAPIService) EventsEventsCreateExecute(r ApiEventsEventsCreateRequest) (*Event, *http.Response, error) { + var ( + localVarHTTPMethod = http.MethodPost + localVarPostBody interface{} + formFiles []formFile + localVarReturnValue *Event + ) + + localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "EventsAPIService.EventsEventsCreate") + if err != nil { + return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()} + } + + localVarPath := localBasePath + "/events/events/" + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + if r.eventRequest == nil { + return localVarReturnValue, nil, reportError("eventRequest is required and must be specified") + } + + // to determine the Content-Type header + localVarHTTPContentTypes := []string{"application/json"} + + // set Content-Type header + localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) + if localVarHTTPContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHTTPContentType + } + + // to determine the Accept header + localVarHTTPHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) + if localVarHTTPHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept + } + // body params + localVarPostBody = r.eventRequest + req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHTTPResponse, err := a.client.callAPI(req) + if err != nil || localVarHTTPResponse == nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + localVarBody, err := io.ReadAll(localVarHTTPResponse.Body) + localVarHTTPResponse.Body.Close() + localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody)) + if err != nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + if localVarHTTPResponse.StatusCode >= 300 { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: localVarHTTPResponse.Status, + } + if localVarHTTPResponse.StatusCode == 400 { + var v ValidationError + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 403 { + var v GenericError + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: err.Error(), + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + return localVarReturnValue, localVarHTTPResponse, nil +} diff --git a/packages/client-go/api_flows.go b/packages/client-go/api_flows.go new file mode 100644 index 0000000000..c049f21fea --- /dev/null +++ b/packages/client-go/api_flows.go @@ -0,0 +1,304 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "bytes" + "context" + "io" + "net/http" + "net/url" + "strings" +) + +// FlowsAPIService FlowsAPI service +type FlowsAPIService service + +type ApiFlowsExecutorGetRequest struct { + ctx context.Context + ApiService *FlowsAPIService + flowSlug string + query *string +} + +// Querystring as received +func (r ApiFlowsExecutorGetRequest) Query(query string) ApiFlowsExecutorGetRequest { + r.query = &query + return r +} + +func (r ApiFlowsExecutorGetRequest) Execute() (*ChallengeTypes, *http.Response, error) { + return r.ApiService.FlowsExecutorGetExecute(r) +} + +/* +FlowsExecutorGet Method for FlowsExecutorGet + +Get the next pending challenge from the currently active flow. + + @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + @param flowSlug + @return ApiFlowsExecutorGetRequest +*/ +func (a *FlowsAPIService) FlowsExecutorGet(ctx context.Context, flowSlug string) ApiFlowsExecutorGetRequest { + return ApiFlowsExecutorGetRequest{ + ApiService: a, + ctx: ctx, + flowSlug: flowSlug, + } +} + +// Execute executes the request +// +// @return ChallengeTypes +func (a *FlowsAPIService) FlowsExecutorGetExecute(r ApiFlowsExecutorGetRequest) (*ChallengeTypes, *http.Response, error) { + var ( + localVarHTTPMethod = http.MethodGet + localVarPostBody interface{} + formFiles []formFile + localVarReturnValue *ChallengeTypes + ) + + localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "FlowsAPIService.FlowsExecutorGet") + if err != nil { + return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()} + } + + localVarPath := localBasePath + "/flows/executor/{flow_slug}/" + localVarPath = strings.Replace(localVarPath, "{"+"flow_slug"+"}", url.PathEscape(parameterValueToString(r.flowSlug, "flowSlug")), -1) + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + if r.query == nil { + return localVarReturnValue, nil, reportError("query is required and must be specified") + } + + parameterAddToHeaderOrQuery(localVarQueryParams, "query", r.query, "form", "") + // to determine the Content-Type header + localVarHTTPContentTypes := []string{} + + // set Content-Type header + localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) + if localVarHTTPContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHTTPContentType + } + + // to determine the Accept header + localVarHTTPHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) + if localVarHTTPHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept + } + req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHTTPResponse, err := a.client.callAPI(req) + if err != nil || localVarHTTPResponse == nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + localVarBody, err := io.ReadAll(localVarHTTPResponse.Body) + localVarHTTPResponse.Body.Close() + localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody)) + if err != nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + if localVarHTTPResponse.StatusCode >= 300 { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: localVarHTTPResponse.Status, + } + if localVarHTTPResponse.StatusCode == 400 { + var v ValidationError + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 403 { + var v GenericError + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: err.Error(), + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + return localVarReturnValue, localVarHTTPResponse, nil +} + +type ApiFlowsExecutorSolveRequest struct { + ctx context.Context + ApiService *FlowsAPIService + flowSlug string + query *string + flowChallengeResponseRequest *FlowChallengeResponseRequest +} + +// Querystring as received +func (r ApiFlowsExecutorSolveRequest) Query(query string) ApiFlowsExecutorSolveRequest { + r.query = &query + return r +} + +func (r ApiFlowsExecutorSolveRequest) FlowChallengeResponseRequest(flowChallengeResponseRequest FlowChallengeResponseRequest) ApiFlowsExecutorSolveRequest { + r.flowChallengeResponseRequest = &flowChallengeResponseRequest + return r +} + +func (r ApiFlowsExecutorSolveRequest) Execute() (*ChallengeTypes, *http.Response, error) { + return r.ApiService.FlowsExecutorSolveExecute(r) +} + +/* +FlowsExecutorSolve Method for FlowsExecutorSolve + +Solve the previously retrieved challenge and advanced to the next stage. + + @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + @param flowSlug + @return ApiFlowsExecutorSolveRequest +*/ +func (a *FlowsAPIService) FlowsExecutorSolve(ctx context.Context, flowSlug string) ApiFlowsExecutorSolveRequest { + return ApiFlowsExecutorSolveRequest{ + ApiService: a, + ctx: ctx, + flowSlug: flowSlug, + } +} + +// Execute executes the request +// +// @return ChallengeTypes +func (a *FlowsAPIService) FlowsExecutorSolveExecute(r ApiFlowsExecutorSolveRequest) (*ChallengeTypes, *http.Response, error) { + var ( + localVarHTTPMethod = http.MethodPost + localVarPostBody interface{} + formFiles []formFile + localVarReturnValue *ChallengeTypes + ) + + localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "FlowsAPIService.FlowsExecutorSolve") + if err != nil { + return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()} + } + + localVarPath := localBasePath + "/flows/executor/{flow_slug}/" + localVarPath = strings.Replace(localVarPath, "{"+"flow_slug"+"}", url.PathEscape(parameterValueToString(r.flowSlug, "flowSlug")), -1) + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + if r.query == nil { + return localVarReturnValue, nil, reportError("query is required and must be specified") + } + + parameterAddToHeaderOrQuery(localVarQueryParams, "query", r.query, "form", "") + // to determine the Content-Type header + localVarHTTPContentTypes := []string{"application/json"} + + // set Content-Type header + localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) + if localVarHTTPContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHTTPContentType + } + + // to determine the Accept header + localVarHTTPHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) + if localVarHTTPHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept + } + // body params + localVarPostBody = r.flowChallengeResponseRequest + req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHTTPResponse, err := a.client.callAPI(req) + if err != nil || localVarHTTPResponse == nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + localVarBody, err := io.ReadAll(localVarHTTPResponse.Body) + localVarHTTPResponse.Body.Close() + localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody)) + if err != nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + if localVarHTTPResponse.StatusCode >= 300 { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: localVarHTTPResponse.Status, + } + if localVarHTTPResponse.StatusCode == 400 { + var v ValidationError + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 403 { + var v GenericError + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: err.Error(), + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + return localVarReturnValue, localVarHTTPResponse, nil +} diff --git a/packages/client-go/api_outposts.go b/packages/client-go/api_outposts.go new file mode 100644 index 0000000000..008e430f68 --- /dev/null +++ b/packages/client-go/api_outposts.go @@ -0,0 +1,1044 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "bytes" + "context" + "io" + "net/http" + "net/url" + "reflect" + "strings" +) + +// OutpostsAPIService OutpostsAPI service +type OutpostsAPIService service + +type ApiOutpostsInstancesListRequest struct { + ctx context.Context + ApiService *OutpostsAPIService + managedIcontains *string + managedIexact *string + nameIcontains *string + nameIexact *string + ordering *string + page *int32 + pageSize *int32 + providersIsnull *bool + providersByPk *[]int32 + search *string + serviceConnectionNameIcontains *string + serviceConnectionNameIexact *string +} + +func (r ApiOutpostsInstancesListRequest) ManagedIcontains(managedIcontains string) ApiOutpostsInstancesListRequest { + r.managedIcontains = &managedIcontains + return r +} + +func (r ApiOutpostsInstancesListRequest) ManagedIexact(managedIexact string) ApiOutpostsInstancesListRequest { + r.managedIexact = &managedIexact + return r +} + +func (r ApiOutpostsInstancesListRequest) NameIcontains(nameIcontains string) ApiOutpostsInstancesListRequest { + r.nameIcontains = &nameIcontains + return r +} + +func (r ApiOutpostsInstancesListRequest) NameIexact(nameIexact string) ApiOutpostsInstancesListRequest { + r.nameIexact = &nameIexact + return r +} + +// Which field to use when ordering the results. +func (r ApiOutpostsInstancesListRequest) Ordering(ordering string) ApiOutpostsInstancesListRequest { + r.ordering = &ordering + return r +} + +// A page number within the paginated result set. +func (r ApiOutpostsInstancesListRequest) Page(page int32) ApiOutpostsInstancesListRequest { + r.page = &page + return r +} + +// Number of results to return per page. +func (r ApiOutpostsInstancesListRequest) PageSize(pageSize int32) ApiOutpostsInstancesListRequest { + r.pageSize = &pageSize + return r +} + +func (r ApiOutpostsInstancesListRequest) ProvidersIsnull(providersIsnull bool) ApiOutpostsInstancesListRequest { + r.providersIsnull = &providersIsnull + return r +} + +func (r ApiOutpostsInstancesListRequest) ProvidersByPk(providersByPk []int32) ApiOutpostsInstancesListRequest { + r.providersByPk = &providersByPk + return r +} + +// A search term. +func (r ApiOutpostsInstancesListRequest) Search(search string) ApiOutpostsInstancesListRequest { + r.search = &search + return r +} + +func (r ApiOutpostsInstancesListRequest) ServiceConnectionNameIcontains(serviceConnectionNameIcontains string) ApiOutpostsInstancesListRequest { + r.serviceConnectionNameIcontains = &serviceConnectionNameIcontains + return r +} + +func (r ApiOutpostsInstancesListRequest) ServiceConnectionNameIexact(serviceConnectionNameIexact string) ApiOutpostsInstancesListRequest { + r.serviceConnectionNameIexact = &serviceConnectionNameIexact + return r +} + +func (r ApiOutpostsInstancesListRequest) Execute() (*PaginatedOutpostList, *http.Response, error) { + return r.ApiService.OutpostsInstancesListExecute(r) +} + +/* +OutpostsInstancesList Method for OutpostsInstancesList + +Outpost Viewset + + @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + @return ApiOutpostsInstancesListRequest +*/ +func (a *OutpostsAPIService) OutpostsInstancesList(ctx context.Context) ApiOutpostsInstancesListRequest { + return ApiOutpostsInstancesListRequest{ + ApiService: a, + ctx: ctx, + } +} + +// Execute executes the request +// +// @return PaginatedOutpostList +func (a *OutpostsAPIService) OutpostsInstancesListExecute(r ApiOutpostsInstancesListRequest) (*PaginatedOutpostList, *http.Response, error) { + var ( + localVarHTTPMethod = http.MethodGet + localVarPostBody interface{} + formFiles []formFile + localVarReturnValue *PaginatedOutpostList + ) + + localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "OutpostsAPIService.OutpostsInstancesList") + if err != nil { + return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()} + } + + localVarPath := localBasePath + "/outposts/instances/" + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + if r.managedIcontains != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "managed__icontains", r.managedIcontains, "form", "") + } + if r.managedIexact != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "managed__iexact", r.managedIexact, "form", "") + } + if r.nameIcontains != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "name__icontains", r.nameIcontains, "form", "") + } + if r.nameIexact != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "name__iexact", r.nameIexact, "form", "") + } + if r.ordering != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "ordering", r.ordering, "form", "") + } + if r.page != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "page", r.page, "form", "") + } + if r.pageSize != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "page_size", r.pageSize, "form", "") + } + if r.providersIsnull != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "providers__isnull", r.providersIsnull, "form", "") + } + if r.providersByPk != nil { + t := *r.providersByPk + if reflect.TypeOf(t).Kind() == reflect.Slice { + s := reflect.ValueOf(t) + for i := 0; i < s.Len(); i++ { + parameterAddToHeaderOrQuery(localVarQueryParams, "providers_by_pk", s.Index(i).Interface(), "form", "multi") + } + } else { + parameterAddToHeaderOrQuery(localVarQueryParams, "providers_by_pk", t, "form", "multi") + } + } + if r.search != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "search", r.search, "form", "") + } + if r.serviceConnectionNameIcontains != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "service_connection__name__icontains", r.serviceConnectionNameIcontains, "form", "") + } + if r.serviceConnectionNameIexact != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "service_connection__name__iexact", r.serviceConnectionNameIexact, "form", "") + } + // to determine the Content-Type header + localVarHTTPContentTypes := []string{} + + // set Content-Type header + localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) + if localVarHTTPContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHTTPContentType + } + + // to determine the Accept header + localVarHTTPHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) + if localVarHTTPHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept + } + req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHTTPResponse, err := a.client.callAPI(req) + if err != nil || localVarHTTPResponse == nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + localVarBody, err := io.ReadAll(localVarHTTPResponse.Body) + localVarHTTPResponse.Body.Close() + localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody)) + if err != nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + if localVarHTTPResponse.StatusCode >= 300 { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: localVarHTTPResponse.Status, + } + if localVarHTTPResponse.StatusCode == 400 { + var v ValidationError + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 403 { + var v GenericError + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: err.Error(), + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + return localVarReturnValue, localVarHTTPResponse, nil +} + +type ApiOutpostsLdapAccessCheckRequest struct { + ctx context.Context + ApiService *OutpostsAPIService + id int32 + appSlug *string +} + +func (r ApiOutpostsLdapAccessCheckRequest) AppSlug(appSlug string) ApiOutpostsLdapAccessCheckRequest { + r.appSlug = &appSlug + return r +} + +func (r ApiOutpostsLdapAccessCheckRequest) Execute() (*LDAPCheckAccess, *http.Response, error) { + return r.ApiService.OutpostsLdapAccessCheckExecute(r) +} + +/* +OutpostsLdapAccessCheck Method for OutpostsLdapAccessCheck + +Check access to a single application by slug + + @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + @param id A unique integer value identifying this LDAP Provider. + @return ApiOutpostsLdapAccessCheckRequest +*/ +func (a *OutpostsAPIService) OutpostsLdapAccessCheck(ctx context.Context, id int32) ApiOutpostsLdapAccessCheckRequest { + return ApiOutpostsLdapAccessCheckRequest{ + ApiService: a, + ctx: ctx, + id: id, + } +} + +// Execute executes the request +// +// @return LDAPCheckAccess +func (a *OutpostsAPIService) OutpostsLdapAccessCheckExecute(r ApiOutpostsLdapAccessCheckRequest) (*LDAPCheckAccess, *http.Response, error) { + var ( + localVarHTTPMethod = http.MethodGet + localVarPostBody interface{} + formFiles []formFile + localVarReturnValue *LDAPCheckAccess + ) + + localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "OutpostsAPIService.OutpostsLdapAccessCheck") + if err != nil { + return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()} + } + + localVarPath := localBasePath + "/outposts/ldap/{id}/check_access/" + localVarPath = strings.Replace(localVarPath, "{"+"id"+"}", url.PathEscape(parameterValueToString(r.id, "id")), -1) + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + if r.appSlug != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "app_slug", r.appSlug, "form", "") + } + // to determine the Content-Type header + localVarHTTPContentTypes := []string{} + + // set Content-Type header + localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) + if localVarHTTPContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHTTPContentType + } + + // to determine the Accept header + localVarHTTPHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) + if localVarHTTPHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept + } + req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHTTPResponse, err := a.client.callAPI(req) + if err != nil || localVarHTTPResponse == nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + localVarBody, err := io.ReadAll(localVarHTTPResponse.Body) + localVarHTTPResponse.Body.Close() + localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody)) + if err != nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + if localVarHTTPResponse.StatusCode >= 300 { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: localVarHTTPResponse.Status, + } + if localVarHTTPResponse.StatusCode == 400 { + var v ValidationError + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 403 { + var v GenericError + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: err.Error(), + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + return localVarReturnValue, localVarHTTPResponse, nil +} + +type ApiOutpostsLdapListRequest struct { + ctx context.Context + ApiService *OutpostsAPIService + name *string + ordering *string + page *int32 + pageSize *int32 + search *string +} + +func (r ApiOutpostsLdapListRequest) Name(name string) ApiOutpostsLdapListRequest { + r.name = &name + return r +} + +// Which field to use when ordering the results. +func (r ApiOutpostsLdapListRequest) Ordering(ordering string) ApiOutpostsLdapListRequest { + r.ordering = &ordering + return r +} + +// A page number within the paginated result set. +func (r ApiOutpostsLdapListRequest) Page(page int32) ApiOutpostsLdapListRequest { + r.page = &page + return r +} + +// Number of results to return per page. +func (r ApiOutpostsLdapListRequest) PageSize(pageSize int32) ApiOutpostsLdapListRequest { + r.pageSize = &pageSize + return r +} + +// A search term. +func (r ApiOutpostsLdapListRequest) Search(search string) ApiOutpostsLdapListRequest { + r.search = &search + return r +} + +func (r ApiOutpostsLdapListRequest) Execute() (*PaginatedLDAPOutpostConfigList, *http.Response, error) { + return r.ApiService.OutpostsLdapListExecute(r) +} + +/* +OutpostsLdapList Method for OutpostsLdapList + +LDAPProvider Viewset + + @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + @return ApiOutpostsLdapListRequest +*/ +func (a *OutpostsAPIService) OutpostsLdapList(ctx context.Context) ApiOutpostsLdapListRequest { + return ApiOutpostsLdapListRequest{ + ApiService: a, + ctx: ctx, + } +} + +// Execute executes the request +// +// @return PaginatedLDAPOutpostConfigList +func (a *OutpostsAPIService) OutpostsLdapListExecute(r ApiOutpostsLdapListRequest) (*PaginatedLDAPOutpostConfigList, *http.Response, error) { + var ( + localVarHTTPMethod = http.MethodGet + localVarPostBody interface{} + formFiles []formFile + localVarReturnValue *PaginatedLDAPOutpostConfigList + ) + + localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "OutpostsAPIService.OutpostsLdapList") + if err != nil { + return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()} + } + + localVarPath := localBasePath + "/outposts/ldap/" + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + if r.name != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "name", r.name, "form", "") + } + if r.ordering != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "ordering", r.ordering, "form", "") + } + if r.page != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "page", r.page, "form", "") + } + if r.pageSize != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "page_size", r.pageSize, "form", "") + } + if r.search != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "search", r.search, "form", "") + } + // to determine the Content-Type header + localVarHTTPContentTypes := []string{} + + // set Content-Type header + localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) + if localVarHTTPContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHTTPContentType + } + + // to determine the Accept header + localVarHTTPHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) + if localVarHTTPHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept + } + req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHTTPResponse, err := a.client.callAPI(req) + if err != nil || localVarHTTPResponse == nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + localVarBody, err := io.ReadAll(localVarHTTPResponse.Body) + localVarHTTPResponse.Body.Close() + localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody)) + if err != nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + if localVarHTTPResponse.StatusCode >= 300 { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: localVarHTTPResponse.Status, + } + if localVarHTTPResponse.StatusCode == 400 { + var v ValidationError + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 403 { + var v GenericError + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: err.Error(), + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + return localVarReturnValue, localVarHTTPResponse, nil +} + +type ApiOutpostsProxyListRequest struct { + ctx context.Context + ApiService *OutpostsAPIService + name *string + ordering *string + page *int32 + pageSize *int32 + search *string +} + +func (r ApiOutpostsProxyListRequest) Name(name string) ApiOutpostsProxyListRequest { + r.name = &name + return r +} + +// Which field to use when ordering the results. +func (r ApiOutpostsProxyListRequest) Ordering(ordering string) ApiOutpostsProxyListRequest { + r.ordering = &ordering + return r +} + +// A page number within the paginated result set. +func (r ApiOutpostsProxyListRequest) Page(page int32) ApiOutpostsProxyListRequest { + r.page = &page + return r +} + +// Number of results to return per page. +func (r ApiOutpostsProxyListRequest) PageSize(pageSize int32) ApiOutpostsProxyListRequest { + r.pageSize = &pageSize + return r +} + +// A search term. +func (r ApiOutpostsProxyListRequest) Search(search string) ApiOutpostsProxyListRequest { + r.search = &search + return r +} + +func (r ApiOutpostsProxyListRequest) Execute() (*PaginatedProxyOutpostConfigList, *http.Response, error) { + return r.ApiService.OutpostsProxyListExecute(r) +} + +/* +OutpostsProxyList Method for OutpostsProxyList + +ProxyProvider Viewset + + @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + @return ApiOutpostsProxyListRequest +*/ +func (a *OutpostsAPIService) OutpostsProxyList(ctx context.Context) ApiOutpostsProxyListRequest { + return ApiOutpostsProxyListRequest{ + ApiService: a, + ctx: ctx, + } +} + +// Execute executes the request +// +// @return PaginatedProxyOutpostConfigList +func (a *OutpostsAPIService) OutpostsProxyListExecute(r ApiOutpostsProxyListRequest) (*PaginatedProxyOutpostConfigList, *http.Response, error) { + var ( + localVarHTTPMethod = http.MethodGet + localVarPostBody interface{} + formFiles []formFile + localVarReturnValue *PaginatedProxyOutpostConfigList + ) + + localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "OutpostsAPIService.OutpostsProxyList") + if err != nil { + return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()} + } + + localVarPath := localBasePath + "/outposts/proxy/" + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + if r.name != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "name", r.name, "form", "") + } + if r.ordering != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "ordering", r.ordering, "form", "") + } + if r.page != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "page", r.page, "form", "") + } + if r.pageSize != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "page_size", r.pageSize, "form", "") + } + if r.search != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "search", r.search, "form", "") + } + // to determine the Content-Type header + localVarHTTPContentTypes := []string{} + + // set Content-Type header + localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) + if localVarHTTPContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHTTPContentType + } + + // to determine the Accept header + localVarHTTPHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) + if localVarHTTPHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept + } + req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHTTPResponse, err := a.client.callAPI(req) + if err != nil || localVarHTTPResponse == nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + localVarBody, err := io.ReadAll(localVarHTTPResponse.Body) + localVarHTTPResponse.Body.Close() + localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody)) + if err != nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + if localVarHTTPResponse.StatusCode >= 300 { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: localVarHTTPResponse.Status, + } + if localVarHTTPResponse.StatusCode == 400 { + var v ValidationError + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 403 { + var v GenericError + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: err.Error(), + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + return localVarReturnValue, localVarHTTPResponse, nil +} + +type ApiOutpostsRadiusAccessCheckRequest struct { + ctx context.Context + ApiService *OutpostsAPIService + id int32 + appSlug *string +} + +func (r ApiOutpostsRadiusAccessCheckRequest) AppSlug(appSlug string) ApiOutpostsRadiusAccessCheckRequest { + r.appSlug = &appSlug + return r +} + +func (r ApiOutpostsRadiusAccessCheckRequest) Execute() (*RadiusCheckAccess, *http.Response, error) { + return r.ApiService.OutpostsRadiusAccessCheckExecute(r) +} + +/* +OutpostsRadiusAccessCheck Method for OutpostsRadiusAccessCheck + +Check access to a single application by slug + + @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + @param id A unique integer value identifying this Radius Provider. + @return ApiOutpostsRadiusAccessCheckRequest +*/ +func (a *OutpostsAPIService) OutpostsRadiusAccessCheck(ctx context.Context, id int32) ApiOutpostsRadiusAccessCheckRequest { + return ApiOutpostsRadiusAccessCheckRequest{ + ApiService: a, + ctx: ctx, + id: id, + } +} + +// Execute executes the request +// +// @return RadiusCheckAccess +func (a *OutpostsAPIService) OutpostsRadiusAccessCheckExecute(r ApiOutpostsRadiusAccessCheckRequest) (*RadiusCheckAccess, *http.Response, error) { + var ( + localVarHTTPMethod = http.MethodGet + localVarPostBody interface{} + formFiles []formFile + localVarReturnValue *RadiusCheckAccess + ) + + localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "OutpostsAPIService.OutpostsRadiusAccessCheck") + if err != nil { + return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()} + } + + localVarPath := localBasePath + "/outposts/radius/{id}/check_access/" + localVarPath = strings.Replace(localVarPath, "{"+"id"+"}", url.PathEscape(parameterValueToString(r.id, "id")), -1) + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + if r.appSlug != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "app_slug", r.appSlug, "form", "") + } + // to determine the Content-Type header + localVarHTTPContentTypes := []string{} + + // set Content-Type header + localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) + if localVarHTTPContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHTTPContentType + } + + // to determine the Accept header + localVarHTTPHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) + if localVarHTTPHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept + } + req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHTTPResponse, err := a.client.callAPI(req) + if err != nil || localVarHTTPResponse == nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + localVarBody, err := io.ReadAll(localVarHTTPResponse.Body) + localVarHTTPResponse.Body.Close() + localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody)) + if err != nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + if localVarHTTPResponse.StatusCode >= 300 { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: localVarHTTPResponse.Status, + } + if localVarHTTPResponse.StatusCode == 400 { + var v ValidationError + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 403 { + var v GenericError + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: err.Error(), + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + return localVarReturnValue, localVarHTTPResponse, nil +} + +type ApiOutpostsRadiusListRequest struct { + ctx context.Context + ApiService *OutpostsAPIService + name *string + ordering *string + page *int32 + pageSize *int32 + search *string +} + +func (r ApiOutpostsRadiusListRequest) Name(name string) ApiOutpostsRadiusListRequest { + r.name = &name + return r +} + +// Which field to use when ordering the results. +func (r ApiOutpostsRadiusListRequest) Ordering(ordering string) ApiOutpostsRadiusListRequest { + r.ordering = &ordering + return r +} + +// A page number within the paginated result set. +func (r ApiOutpostsRadiusListRequest) Page(page int32) ApiOutpostsRadiusListRequest { + r.page = &page + return r +} + +// Number of results to return per page. +func (r ApiOutpostsRadiusListRequest) PageSize(pageSize int32) ApiOutpostsRadiusListRequest { + r.pageSize = &pageSize + return r +} + +// A search term. +func (r ApiOutpostsRadiusListRequest) Search(search string) ApiOutpostsRadiusListRequest { + r.search = &search + return r +} + +func (r ApiOutpostsRadiusListRequest) Execute() (*PaginatedRadiusOutpostConfigList, *http.Response, error) { + return r.ApiService.OutpostsRadiusListExecute(r) +} + +/* +OutpostsRadiusList Method for OutpostsRadiusList + +RadiusProvider Viewset + + @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + @return ApiOutpostsRadiusListRequest +*/ +func (a *OutpostsAPIService) OutpostsRadiusList(ctx context.Context) ApiOutpostsRadiusListRequest { + return ApiOutpostsRadiusListRequest{ + ApiService: a, + ctx: ctx, + } +} + +// Execute executes the request +// +// @return PaginatedRadiusOutpostConfigList +func (a *OutpostsAPIService) OutpostsRadiusListExecute(r ApiOutpostsRadiusListRequest) (*PaginatedRadiusOutpostConfigList, *http.Response, error) { + var ( + localVarHTTPMethod = http.MethodGet + localVarPostBody interface{} + formFiles []formFile + localVarReturnValue *PaginatedRadiusOutpostConfigList + ) + + localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "OutpostsAPIService.OutpostsRadiusList") + if err != nil { + return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()} + } + + localVarPath := localBasePath + "/outposts/radius/" + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + if r.name != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "name", r.name, "form", "") + } + if r.ordering != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "ordering", r.ordering, "form", "") + } + if r.page != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "page", r.page, "form", "") + } + if r.pageSize != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "page_size", r.pageSize, "form", "") + } + if r.search != nil { + parameterAddToHeaderOrQuery(localVarQueryParams, "search", r.search, "form", "") + } + // to determine the Content-Type header + localVarHTTPContentTypes := []string{} + + // set Content-Type header + localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) + if localVarHTTPContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHTTPContentType + } + + // to determine the Accept header + localVarHTTPHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) + if localVarHTTPHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept + } + req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHTTPResponse, err := a.client.callAPI(req) + if err != nil || localVarHTTPResponse == nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + localVarBody, err := io.ReadAll(localVarHTTPResponse.Body) + localVarHTTPResponse.Body.Close() + localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody)) + if err != nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + if localVarHTTPResponse.StatusCode >= 300 { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: localVarHTTPResponse.Status, + } + if localVarHTTPResponse.StatusCode == 400 { + var v ValidationError + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 403 { + var v GenericError + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: err.Error(), + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + return localVarReturnValue, localVarHTTPResponse, nil +} diff --git a/packages/client-go/api_root.go b/packages/client-go/api_root.go new file mode 100644 index 0000000000..3116ba5c50 --- /dev/null +++ b/packages/client-go/api_root.go @@ -0,0 +1,144 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "bytes" + "context" + "io" + "net/http" + "net/url" +) + +// RootAPIService RootAPI service +type RootAPIService service + +type ApiRootConfigRetrieveRequest struct { + ctx context.Context + ApiService *RootAPIService +} + +func (r ApiRootConfigRetrieveRequest) Execute() (*Config, *http.Response, error) { + return r.ApiService.RootConfigRetrieveExecute(r) +} + +/* +RootConfigRetrieve Method for RootConfigRetrieve + +Retrieve public configuration options + + @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + @return ApiRootConfigRetrieveRequest +*/ +func (a *RootAPIService) RootConfigRetrieve(ctx context.Context) ApiRootConfigRetrieveRequest { + return ApiRootConfigRetrieveRequest{ + ApiService: a, + ctx: ctx, + } +} + +// Execute executes the request +// +// @return Config +func (a *RootAPIService) RootConfigRetrieveExecute(r ApiRootConfigRetrieveRequest) (*Config, *http.Response, error) { + var ( + localVarHTTPMethod = http.MethodGet + localVarPostBody interface{} + formFiles []formFile + localVarReturnValue *Config + ) + + localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "RootAPIService.RootConfigRetrieve") + if err != nil { + return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()} + } + + localVarPath := localBasePath + "/root/config/" + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + // to determine the Content-Type header + localVarHTTPContentTypes := []string{} + + // set Content-Type header + localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) + if localVarHTTPContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHTTPContentType + } + + // to determine the Accept header + localVarHTTPHeaderAccepts := []string{"application/json"} + + // set Accept header + localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) + if localVarHTTPHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept + } + req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHTTPResponse, err := a.client.callAPI(req) + if err != nil || localVarHTTPResponse == nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + localVarBody, err := io.ReadAll(localVarHTTPResponse.Body) + localVarHTTPResponse.Body.Close() + localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody)) + if err != nil { + return localVarReturnValue, localVarHTTPResponse, err + } + + if localVarHTTPResponse.StatusCode >= 300 { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: localVarHTTPResponse.Status, + } + if localVarHTTPResponse.StatusCode == 400 { + var v ValidationError + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + return localVarReturnValue, localVarHTTPResponse, newErr + } + if localVarHTTPResponse.StatusCode == 403 { + var v GenericError + err = a.client.decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHTTPResponse, newErr + } + newErr.error = formatErrorMessage(localVarHTTPResponse.Status, &v) + newErr.model = v + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) + if err != nil { + newErr := &GenericOpenAPIError{ + body: localVarBody, + error: err.Error(), + } + return localVarReturnValue, localVarHTTPResponse, newErr + } + + return localVarReturnValue, localVarHTTPResponse, nil +} diff --git a/packages/client-go/client.go b/packages/client-go/client.go new file mode 100644 index 0000000000..7fbfc863f8 --- /dev/null +++ b/packages/client-go/client.go @@ -0,0 +1,673 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "bytes" + "context" + "encoding/json" + "encoding/xml" + "errors" + "fmt" + "io" + "log" + "mime/multipart" + "net/http" + "net/http/httputil" + "net/url" + "os" + "path/filepath" + "reflect" + "regexp" + "strconv" + "strings" + "time" + "unicode/utf8" +) + +var ( + JsonCheck = regexp.MustCompile(`(?i:(?:application|text)/(?:[^;]+\+)?json)`) + XmlCheck = regexp.MustCompile(`(?i:(?:application|text)/(?:[^;]+\+)?xml)`) + queryParamSplit = regexp.MustCompile(`(^|&)([^&]+)`) + queryDescape = strings.NewReplacer("%5B", "[", "%5D", "]") +) + +// APIClient manages communication with the authentik API v2026.8.0-rc1 +// In most cases there should be only one, shared, APIClient. +type APIClient struct { + cfg *Configuration + common service // Reuse a single struct instead of allocating one for each service on the heap. + + // API Services + + CoreAPI *CoreAPIService + + CryptoAPI *CryptoAPIService + + EventsAPI *EventsAPIService + + FlowsAPI *FlowsAPIService + + OutpostsAPI *OutpostsAPIService + + RootAPI *RootAPIService +} + +type service struct { + client *APIClient +} + +// NewAPIClient creates a new API client. Requires a userAgent string describing your application. +// optionally a custom http.Client to allow for advanced features such as caching. +func NewAPIClient(cfg *Configuration) *APIClient { + if cfg.HTTPClient == nil { + cfg.HTTPClient = http.DefaultClient + } + + c := &APIClient{} + c.cfg = cfg + c.common.client = c + + // API Services + c.CoreAPI = (*CoreAPIService)(&c.common) + c.CryptoAPI = (*CryptoAPIService)(&c.common) + c.EventsAPI = (*EventsAPIService)(&c.common) + c.FlowsAPI = (*FlowsAPIService)(&c.common) + c.OutpostsAPI = (*OutpostsAPIService)(&c.common) + c.RootAPI = (*RootAPIService)(&c.common) + + return c +} + +func atoi(in string) (int, error) { + return strconv.Atoi(in) +} + +// selectHeaderContentType select a content type from the available list. +func selectHeaderContentType(contentTypes []string) string { + if len(contentTypes) == 0 { + return "" + } + if contains(contentTypes, "application/json") { + return "application/json" + } + return contentTypes[0] // use the first content type specified in 'consumes' +} + +// selectHeaderAccept join all accept types and return +func selectHeaderAccept(accepts []string) string { + if len(accepts) == 0 { + return "" + } + + if contains(accepts, "application/json") { + return "application/json" + } + + return strings.Join(accepts, ",") +} + +// contains is a case insensitive match, finding needle in a haystack +func contains(haystack []string, needle string) bool { + for _, a := range haystack { + if strings.EqualFold(a, needle) { + return true + } + } + return false +} + +// Verify optional parameters are of the correct type. +func typeCheckParameter(obj interface{}, expected string, name string) error { + // Make sure there is an object. + if obj == nil { + return nil + } + + // Check the type is as expected. + if reflect.TypeOf(obj).String() != expected { + return fmt.Errorf("expected %s to be of type %s but received %s", name, expected, reflect.TypeOf(obj).String()) + } + return nil +} + +func parameterValueToString(obj interface{}, key string) string { + if reflect.TypeOf(obj).Kind() != reflect.Ptr { + if actualObj, ok := obj.(interface{ GetActualInstanceValue() interface{} }); ok { + return fmt.Sprintf("%v", actualObj.GetActualInstanceValue()) + } + + return fmt.Sprintf("%v", obj) + } + var param, ok = obj.(MappedNullable) + if !ok { + return "" + } + dataMap, err := param.ToMap() + if err != nil { + return "" + } + return fmt.Sprintf("%v", dataMap[key]) +} + +// parameterAddToHeaderOrQuery adds the provided object to the request header or url query +// supporting deep object syntax +func parameterAddToHeaderOrQuery(headerOrQueryParams interface{}, keyPrefix string, obj interface{}, style string, collectionType string) { + var v = reflect.ValueOf(obj) + var value = "" + if v == reflect.ValueOf(nil) { + value = "null" + } else { + switch v.Kind() { + case reflect.Invalid: + value = "invalid" + + case reflect.Struct: + if t, ok := obj.(MappedNullable); ok { + dataMap, err := t.ToMap() + if err != nil { + return + } + parameterAddToHeaderOrQuery(headerOrQueryParams, keyPrefix, dataMap, style, collectionType) + return + } + if t, ok := obj.(time.Time); ok { + parameterAddToHeaderOrQuery(headerOrQueryParams, keyPrefix, t.Format(time.RFC3339Nano), style, collectionType) + return + } + value = v.Type().String() + " value" + case reflect.Slice: + var indValue = reflect.ValueOf(obj) + if indValue == reflect.ValueOf(nil) { + return + } + var lenIndValue = indValue.Len() + for i := 0; i < lenIndValue; i++ { + var arrayValue = indValue.Index(i) + var keyPrefixForCollectionType = keyPrefix + if style == "deepObject" { + keyPrefixForCollectionType = keyPrefix + "[" + strconv.Itoa(i) + "]" + } + parameterAddToHeaderOrQuery(headerOrQueryParams, keyPrefixForCollectionType, arrayValue.Interface(), style, collectionType) + } + return + + case reflect.Map: + var indValue = reflect.ValueOf(obj) + if indValue == reflect.ValueOf(nil) { + return + } + iter := indValue.MapRange() + for iter.Next() { + k, v := iter.Key(), iter.Value() + parameterAddToHeaderOrQuery(headerOrQueryParams, fmt.Sprintf("%s[%s]", keyPrefix, k.String()), v.Interface(), style, collectionType) + } + return + + case reflect.Interface: + fallthrough + case reflect.Ptr: + parameterAddToHeaderOrQuery(headerOrQueryParams, keyPrefix, v.Elem().Interface(), style, collectionType) + return + + case reflect.Int, reflect.Int8, reflect.Int16, + reflect.Int32, reflect.Int64: + value = strconv.FormatInt(v.Int(), 10) + case reflect.Uint, reflect.Uint8, reflect.Uint16, + reflect.Uint32, reflect.Uint64, reflect.Uintptr: + value = strconv.FormatUint(v.Uint(), 10) + case reflect.Float32, reflect.Float64: + value = strconv.FormatFloat(v.Float(), 'g', -1, 32) + case reflect.Bool: + value = strconv.FormatBool(v.Bool()) + case reflect.String: + value = v.String() + default: + value = v.Type().String() + " value" + } + } + + switch valuesMap := headerOrQueryParams.(type) { + case url.Values: + if collectionType == "csv" && valuesMap.Get(keyPrefix) != "" { + valuesMap.Set(keyPrefix, valuesMap.Get(keyPrefix)+","+value) + } else { + valuesMap.Add(keyPrefix, value) + } + break + case map[string]string: + valuesMap[keyPrefix] = value + break + } +} + +// helper for converting interface{} parameters to json strings +func parameterToJson(obj interface{}) (string, error) { + jsonBuf, err := json.Marshal(obj) + if err != nil { + return "", err + } + return string(jsonBuf), err +} + +// callAPI do the request. +func (c *APIClient) callAPI(request *http.Request) (*http.Response, error) { + if c.cfg.Debug { + dump, err := httputil.DumpRequestOut(request, true) + if err != nil { + return nil, err + } + log.Printf("\n%s\n", string(dump)) + } + + resp, err := c.cfg.HTTPClient.Do(request) + if err != nil { + return resp, err + } + + if c.cfg.Debug { + dump, err := httputil.DumpResponse(resp, true) + if err != nil { + return resp, err + } + log.Printf("\n%s\n", string(dump)) + } + return resp, err +} + +// Allow modification of underlying config for alternate implementations and testing +// Caution: modifying the configuration while live can cause data races and potentially unwanted behavior +func (c *APIClient) GetConfig() *Configuration { + return c.cfg +} + +type formFile struct { + fileBytes []byte + fileName string + formFileName string +} + +// prepareRequest build the request +func (c *APIClient) prepareRequest( + ctx context.Context, + path string, method string, + postBody interface{}, + headerParams map[string]string, + queryParams url.Values, + formParams url.Values, + formFiles []formFile) (localVarRequest *http.Request, err error) { + + var body *bytes.Buffer + + // Detect postBody type and post. + if postBody != nil { + contentType := headerParams["Content-Type"] + if contentType == "" { + contentType = detectContentType(postBody) + headerParams["Content-Type"] = contentType + } + + body, err = setBody(postBody, contentType) + if err != nil { + return nil, err + } + } + + // add form parameters and file if available. + if strings.HasPrefix(headerParams["Content-Type"], "multipart/form-data") && len(formParams) > 0 || (len(formFiles) > 0) { + if body != nil { + return nil, errors.New("Cannot specify postBody and multipart form at the same time.") + } + body = &bytes.Buffer{} + w := multipart.NewWriter(body) + + for k, v := range formParams { + for _, iv := range v { + if strings.HasPrefix(k, "@") { // file + err = addFile(w, k[1:], iv) + if err != nil { + return nil, err + } + } else { // form value + w.WriteField(k, iv) + } + } + } + for _, formFile := range formFiles { + if len(formFile.fileBytes) > 0 && formFile.fileName != "" { + w.Boundary() + part, err := w.CreateFormFile(formFile.formFileName, filepath.Base(formFile.fileName)) + if err != nil { + return nil, err + } + _, err = part.Write(formFile.fileBytes) + if err != nil { + return nil, err + } + } + } + + // Set the Boundary in the Content-Type + headerParams["Content-Type"] = w.FormDataContentType() + + // Set Content-Length + headerParams["Content-Length"] = fmt.Sprintf("%d", body.Len()) + w.Close() + } + + if strings.HasPrefix(headerParams["Content-Type"], "application/x-www-form-urlencoded") && len(formParams) > 0 { + if body != nil { + return nil, errors.New("Cannot specify postBody and x-www-form-urlencoded form at the same time.") + } + body = &bytes.Buffer{} + body.WriteString(formParams.Encode()) + // Set Content-Length + headerParams["Content-Length"] = fmt.Sprintf("%d", body.Len()) + } + + // Setup path and query parameters + url, err := url.Parse(path) + if err != nil { + return nil, err + } + + // Override request host, if applicable + if c.cfg.Host != "" { + url.Host = c.cfg.Host + } + + // Override request scheme, if applicable + if c.cfg.Scheme != "" { + url.Scheme = c.cfg.Scheme + } + + // Adding Query Param + query := url.Query() + for k, v := range queryParams { + for _, iv := range v { + query.Add(k, iv) + } + } + + // Encode the parameters. + url.RawQuery = queryParamSplit.ReplaceAllStringFunc(query.Encode(), func(s string) string { + pieces := strings.Split(s, "=") + pieces[0] = queryDescape.Replace(pieces[0]) + return strings.Join(pieces, "=") + }) + + // Generate a new request + if body != nil { + localVarRequest, err = http.NewRequest(method, url.String(), body) + } else { + localVarRequest, err = http.NewRequest(method, url.String(), nil) + } + if err != nil { + return nil, err + } + + // add header parameters, if any + if len(headerParams) > 0 { + headers := http.Header{} + for h, v := range headerParams { + headers[h] = []string{v} + } + localVarRequest.Header = headers + } + + // Add the user agent to the request. + localVarRequest.Header.Add("User-Agent", c.cfg.UserAgent) + + if ctx != nil { + // add context to the request + localVarRequest = localVarRequest.WithContext(ctx) + + // Walk through any authentication. + + // AccessToken Authentication + if auth, ok := ctx.Value(ContextAccessToken).(string); ok { + localVarRequest.Header.Add("Authorization", "Bearer "+auth) + } + + } + + for header, value := range c.cfg.DefaultHeader { + localVarRequest.Header.Add(header, value) + } + return localVarRequest, nil +} + +func (c *APIClient) decode(v interface{}, b []byte, contentType string) (err error) { + if len(b) == 0 { + return nil + } + if s, ok := v.(*string); ok { + *s = string(b) + return nil + } + if f, ok := v.(*os.File); ok { + f, err = os.CreateTemp("", "HttpClientFile") + if err != nil { + return + } + _, err = f.Write(b) + if err != nil { + return + } + _, err = f.Seek(0, io.SeekStart) + return + } + if f, ok := v.(**os.File); ok { + *f, err = os.CreateTemp("", "HttpClientFile") + if err != nil { + return + } + _, err = (*f).Write(b) + if err != nil { + return + } + _, err = (*f).Seek(0, io.SeekStart) + return + } + if XmlCheck.MatchString(contentType) { + if err = xml.Unmarshal(b, v); err != nil { + return err + } + return nil + } + if JsonCheck.MatchString(contentType) { + if actualObj, ok := v.(interface{ GetActualInstance() interface{} }); ok { // oneOf, anyOf schemas + if unmarshalObj, ok := actualObj.(interface{ UnmarshalJSON([]byte) error }); ok { // make sure it has UnmarshalJSON defined + if err = unmarshalObj.UnmarshalJSON(b); err != nil { + return err + } + } else { + return errors.New("Unknown type with GetActualInstance but no unmarshalObj.UnmarshalJSON defined") + } + } else if err = json.Unmarshal(b, v); err != nil { // simple model + return err + } + return nil + } + return errors.New("undefined response type") +} + +// Add a file to the multipart request +func addFile(w *multipart.Writer, fieldName, path string) error { + file, err := os.Open(filepath.Clean(path)) + if err != nil { + return err + } + defer file.Close() + + part, err := w.CreateFormFile(fieldName, filepath.Base(path)) + if err != nil { + return err + } + _, err = io.Copy(part, file) + + return err +} + +// Set request body from an interface{} +func setBody(body interface{}, contentType string) (bodyBuf *bytes.Buffer, err error) { + if bodyBuf == nil { + bodyBuf = &bytes.Buffer{} + } + + if reader, ok := body.(io.Reader); ok { + _, err = bodyBuf.ReadFrom(reader) + } else if fp, ok := body.(*os.File); ok { + _, err = bodyBuf.ReadFrom(fp) + } else if b, ok := body.([]byte); ok { + _, err = bodyBuf.Write(b) + } else if s, ok := body.(string); ok { + _, err = bodyBuf.WriteString(s) + } else if s, ok := body.(*string); ok { + _, err = bodyBuf.WriteString(*s) + } else if JsonCheck.MatchString(contentType) { + err = json.NewEncoder(bodyBuf).Encode(body) + } else if XmlCheck.MatchString(contentType) { + var bs []byte + bs, err = xml.Marshal(body) + if err == nil { + bodyBuf.Write(bs) + } + } + + if err != nil { + return nil, err + } + + if bodyBuf.Len() == 0 { + err = fmt.Errorf("invalid body type %s\n", contentType) + return nil, err + } + return bodyBuf, nil +} + +// detectContentType method is used to figure out `Request.Body` content type for request header +func detectContentType(body interface{}) string { + contentType := "text/plain; charset=utf-8" + kind := reflect.TypeOf(body).Kind() + + switch kind { + case reflect.Struct, reflect.Map, reflect.Ptr: + contentType = "application/json; charset=utf-8" + case reflect.String: + contentType = "text/plain; charset=utf-8" + default: + if b, ok := body.([]byte); ok { + contentType = http.DetectContentType(b) + } else if kind == reflect.Slice { + contentType = "application/json; charset=utf-8" + } + } + + return contentType +} + +// Ripped from https://github.com/gregjones/httpcache/blob/master/httpcache.go +type cacheControl map[string]string + +func parseCacheControl(headers http.Header) cacheControl { + cc := cacheControl{} + ccHeader := headers.Get("Cache-Control") + for _, part := range strings.Split(ccHeader, ",") { + part = strings.Trim(part, " ") + if part == "" { + continue + } + if strings.ContainsRune(part, '=') { + keyval := strings.Split(part, "=") + cc[strings.Trim(keyval[0], " ")] = strings.Trim(keyval[1], ",") + } else { + cc[part] = "" + } + } + return cc +} + +// CacheExpires helper function to determine remaining time before repeating a request. +func CacheExpires(r *http.Response) time.Time { + // Figure out when the cache expires. + var expires time.Time + now, err := time.Parse(time.RFC1123, r.Header.Get("date")) + if err != nil { + return time.Now() + } + respCacheControl := parseCacheControl(r.Header) + + if maxAge, ok := respCacheControl["max-age"]; ok { + lifetime, err := time.ParseDuration(maxAge + "s") + if err != nil { + expires = now + } else { + expires = now.Add(lifetime) + } + } else { + expiresHeader := r.Header.Get("Expires") + if expiresHeader != "" { + expires, err = time.Parse(time.RFC1123, expiresHeader) + if err != nil { + expires = now + } + } + } + return expires +} + +func strlen(s string) int { + return utf8.RuneCountInString(s) +} + +// GenericOpenAPIError Provides access to the body, error and model on returned errors. +type GenericOpenAPIError struct { + body []byte + error string + model interface{} +} + +// Error returns non-empty string if there was an error. +func (e GenericOpenAPIError) Error() string { + return e.error +} + +// Body returns the raw bytes of the response +func (e GenericOpenAPIError) Body() []byte { + return e.body +} + +// Model returns the unpacked model of the error +func (e GenericOpenAPIError) Model() interface{} { + return e.model +} + +// format error message using title and detail when model implements rfc7807 +func formatErrorMessage(status string, v interface{}) string { + str := "" + metaValue := reflect.ValueOf(v).Elem() + + if metaValue.Kind() == reflect.Struct { + field := metaValue.FieldByName("Title") + if field != (reflect.Value{}) { + str = fmt.Sprintf("%s", field.Interface()) + } + + field = metaValue.FieldByName("Detail") + if field != (reflect.Value{}) { + str = fmt.Sprintf("%s (%s)", str, field.Interface()) + } + } + + return strings.TrimSpace(fmt.Sprintf("%s %s", status, str)) +} diff --git a/packages/client-go/compose.yml b/packages/client-go/compose.yml new file mode 100644 index 0000000000..c155090cd5 --- /dev/null +++ b/packages/client-go/compose.yml @@ -0,0 +1,8 @@ +--- +services: + gen: + image: docker.io/openapitools/openapi-generator-cli:v7.20.0 + restart: never + network_mode: none + volumes: + - ./:/local diff --git a/packages/client-go/config.yaml b/packages/client-go/config.yaml new file mode 100644 index 0000000000..8abb8f757c --- /dev/null +++ b/packages/client-go/config.yaml @@ -0,0 +1,14 @@ +--- +globalProperties: + supportingFiles: "" + apis: "" + models: "" + apiDocs: false + apiTests: false + modelDocs: false + modelTests: false +additionalProperties: + packageName: api + enumClassPrefix: true + useOneOfDiscriminatorLookup: true + disallowAdditionalPropertiesIfNotPresent: false diff --git a/packages/client-go/configuration.go b/packages/client-go/configuration.go new file mode 100644 index 0000000000..eac52d898d --- /dev/null +++ b/packages/client-go/configuration.go @@ -0,0 +1,218 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "context" + "fmt" + "net/http" + "strings" +) + +// contextKeys are used to identify the type of value in the context. +// Since these are string, it is possible to get a short description of the +// context key for logging and debugging using key.String(). + +type contextKey string + +func (c contextKey) String() string { + return "auth " + string(c) +} + +var ( + // ContextAccessToken takes a string oauth2 access token as authentication for the request. + ContextAccessToken = contextKey("accesstoken") + + // ContextServerIndex uses a server configuration from the index. + ContextServerIndex = contextKey("serverIndex") + + // ContextOperationServerIndices uses a server configuration from the index mapping. + ContextOperationServerIndices = contextKey("serverOperationIndices") + + // ContextServerVariables overrides a server configuration variables. + ContextServerVariables = contextKey("serverVariables") + + // ContextOperationServerVariables overrides a server configuration variables using operation specific values. + ContextOperationServerVariables = contextKey("serverOperationVariables") +) + +// BasicAuth provides basic http authentication to a request passed via context using ContextBasicAuth +type BasicAuth struct { + UserName string `json:"userName,omitempty"` + Password string `json:"password,omitempty"` +} + +// APIKey provides API key based authentication to a request passed via context using ContextAPIKey +type APIKey struct { + Key string + Prefix string +} + +// ServerVariable stores the information about a server variable +type ServerVariable struct { + Description string + DefaultValue string + EnumValues []string +} + +// ServerConfiguration stores the information about a server +type ServerConfiguration struct { + URL string + Description string + Variables map[string]ServerVariable +} + +// ServerConfigurations stores multiple ServerConfiguration items +type ServerConfigurations []ServerConfiguration + +// Configuration stores the configuration of the API client +type Configuration struct { + Host string `json:"host,omitempty"` + Scheme string `json:"scheme,omitempty"` + DefaultHeader map[string]string `json:"defaultHeader,omitempty"` + UserAgent string `json:"userAgent,omitempty"` + Debug bool `json:"debug,omitempty"` + Servers ServerConfigurations + OperationServers map[string]ServerConfigurations + HTTPClient *http.Client +} + +// NewConfiguration returns a new Configuration object +func NewConfiguration() *Configuration { + cfg := &Configuration{ + DefaultHeader: make(map[string]string), + UserAgent: "OpenAPI-Generator/1.0.0/go", + Debug: false, + Servers: ServerConfigurations{ + { + URL: "/api/v3", + Description: "No description provided", + }, + }, + OperationServers: map[string]ServerConfigurations{}, + } + return cfg +} + +// AddDefaultHeader adds a new HTTP header to the default header in the request +func (c *Configuration) AddDefaultHeader(key string, value string) { + c.DefaultHeader[key] = value +} + +// URL formats template on a index using given variables +func (sc ServerConfigurations) URL(index int, variables map[string]string) (string, error) { + if index < 0 || len(sc) <= index { + return "", fmt.Errorf("index %v out of range %v", index, len(sc)-1) + } + server := sc[index] + url := server.URL + + // go through variables and replace placeholders + for name, variable := range server.Variables { + if value, ok := variables[name]; ok { + found := bool(len(variable.EnumValues) == 0) + for _, enumValue := range variable.EnumValues { + if value == enumValue { + found = true + } + } + if !found { + return "", fmt.Errorf("the variable %s in the server URL has invalid value %v. Must be %v", name, value, variable.EnumValues) + } + url = strings.Replace(url, "{"+name+"}", value, -1) + } else { + url = strings.Replace(url, "{"+name+"}", variable.DefaultValue, -1) + } + } + return url, nil +} + +// ServerURL returns URL based on server settings +func (c *Configuration) ServerURL(index int, variables map[string]string) (string, error) { + return c.Servers.URL(index, variables) +} + +func getServerIndex(ctx context.Context) (int, error) { + si := ctx.Value(ContextServerIndex) + if si != nil { + if index, ok := si.(int); ok { + return index, nil + } + return 0, reportError("Invalid type %T should be int", si) + } + return 0, nil +} + +func getServerOperationIndex(ctx context.Context, endpoint string) (int, error) { + osi := ctx.Value(ContextOperationServerIndices) + if osi != nil { + if operationIndices, ok := osi.(map[string]int); !ok { + return 0, reportError("Invalid type %T should be map[string]int", osi) + } else { + index, ok := operationIndices[endpoint] + if ok { + return index, nil + } + } + } + return getServerIndex(ctx) +} + +func getServerVariables(ctx context.Context) (map[string]string, error) { + sv := ctx.Value(ContextServerVariables) + if sv != nil { + if variables, ok := sv.(map[string]string); ok { + return variables, nil + } + return nil, reportError("ctx value of ContextServerVariables has invalid type %T should be map[string]string", sv) + } + return nil, nil +} + +func getServerOperationVariables(ctx context.Context, endpoint string) (map[string]string, error) { + osv := ctx.Value(ContextOperationServerVariables) + if osv != nil { + if operationVariables, ok := osv.(map[string]map[string]string); !ok { + return nil, reportError("ctx value of ContextOperationServerVariables has invalid type %T should be map[string]map[string]string", osv) + } else { + variables, ok := operationVariables[endpoint] + if ok { + return variables, nil + } + } + } + return getServerVariables(ctx) +} + +// ServerURLWithContext returns a new server URL given an endpoint +func (c *Configuration) ServerURLWithContext(ctx context.Context, endpoint string) (string, error) { + sc, ok := c.OperationServers[endpoint] + if !ok { + sc = c.Servers + } + + if ctx == nil { + return sc.URL(0, nil) + } + + index, err := getServerOperationIndex(ctx, endpoint) + if err != nil { + return "", err + } + + variables, err := getServerOperationVariables(ctx, endpoint) + if err != nil { + return "", err + } + + return sc.URL(index, variables) +} diff --git a/packages/client-go/model_access_denied_challenge.go b/packages/client-go/model_access_denied_challenge.go new file mode 100644 index 0000000000..d26beb0d99 --- /dev/null +++ b/packages/client-go/model_access_denied_challenge.go @@ -0,0 +1,348 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// checks if the AccessDeniedChallenge type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &AccessDeniedChallenge{} + +// AccessDeniedChallenge Challenge when a flow's active stage calls `stage_invalid()`. +type AccessDeniedChallenge struct { + FlowInfo *ContextualFlowInfo `json:"flow_info,omitempty"` + Component *string `json:"component,omitempty"` + ResponseErrors *map[string][]ErrorDetail `json:"response_errors,omitempty"` + PendingUser string `json:"pending_user"` + PendingUserAvatar string `json:"pending_user_avatar"` + ErrorMessage *string `json:"error_message,omitempty"` + AdditionalProperties map[string]interface{} +} + +type _AccessDeniedChallenge AccessDeniedChallenge + +// NewAccessDeniedChallenge instantiates a new AccessDeniedChallenge object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewAccessDeniedChallenge(pendingUser string, pendingUserAvatar string) *AccessDeniedChallenge { + this := AccessDeniedChallenge{} + var component string = "ak-stage-access-denied" + this.Component = &component + this.PendingUser = pendingUser + this.PendingUserAvatar = pendingUserAvatar + return &this +} + +// NewAccessDeniedChallengeWithDefaults instantiates a new AccessDeniedChallenge object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewAccessDeniedChallengeWithDefaults() *AccessDeniedChallenge { + this := AccessDeniedChallenge{} + var component string = "ak-stage-access-denied" + this.Component = &component + return &this +} + +// GetFlowInfo returns the FlowInfo field value if set, zero value otherwise. +func (o *AccessDeniedChallenge) GetFlowInfo() ContextualFlowInfo { + if o == nil || IsNil(o.FlowInfo) { + var ret ContextualFlowInfo + return ret + } + return *o.FlowInfo +} + +// GetFlowInfoOk returns a tuple with the FlowInfo field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *AccessDeniedChallenge) GetFlowInfoOk() (*ContextualFlowInfo, bool) { + if o == nil || IsNil(o.FlowInfo) { + return nil, false + } + return o.FlowInfo, true +} + +// HasFlowInfo returns a boolean if a field has been set. +func (o *AccessDeniedChallenge) HasFlowInfo() bool { + if o != nil && !IsNil(o.FlowInfo) { + return true + } + + return false +} + +// SetFlowInfo gets a reference to the given ContextualFlowInfo and assigns it to the FlowInfo field. +func (o *AccessDeniedChallenge) SetFlowInfo(v ContextualFlowInfo) { + o.FlowInfo = &v +} + +// GetComponent returns the Component field value if set, zero value otherwise. +func (o *AccessDeniedChallenge) GetComponent() string { + if o == nil || IsNil(o.Component) { + var ret string + return ret + } + return *o.Component +} + +// GetComponentOk returns a tuple with the Component field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *AccessDeniedChallenge) GetComponentOk() (*string, bool) { + if o == nil || IsNil(o.Component) { + return nil, false + } + return o.Component, true +} + +// HasComponent returns a boolean if a field has been set. +func (o *AccessDeniedChallenge) HasComponent() bool { + if o != nil && !IsNil(o.Component) { + return true + } + + return false +} + +// SetComponent gets a reference to the given string and assigns it to the Component field. +func (o *AccessDeniedChallenge) SetComponent(v string) { + o.Component = &v +} + +// GetResponseErrors returns the ResponseErrors field value if set, zero value otherwise. +func (o *AccessDeniedChallenge) GetResponseErrors() map[string][]ErrorDetail { + if o == nil || IsNil(o.ResponseErrors) { + var ret map[string][]ErrorDetail + return ret + } + return *o.ResponseErrors +} + +// GetResponseErrorsOk returns a tuple with the ResponseErrors field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *AccessDeniedChallenge) GetResponseErrorsOk() (*map[string][]ErrorDetail, bool) { + if o == nil || IsNil(o.ResponseErrors) { + return nil, false + } + return o.ResponseErrors, true +} + +// HasResponseErrors returns a boolean if a field has been set. +func (o *AccessDeniedChallenge) HasResponseErrors() bool { + if o != nil && !IsNil(o.ResponseErrors) { + return true + } + + return false +} + +// SetResponseErrors gets a reference to the given map[string][]ErrorDetail and assigns it to the ResponseErrors field. +func (o *AccessDeniedChallenge) SetResponseErrors(v map[string][]ErrorDetail) { + o.ResponseErrors = &v +} + +// GetPendingUser returns the PendingUser field value +func (o *AccessDeniedChallenge) GetPendingUser() string { + if o == nil { + var ret string + return ret + } + + return o.PendingUser +} + +// GetPendingUserOk returns a tuple with the PendingUser field value +// and a boolean to check if the value has been set. +func (o *AccessDeniedChallenge) GetPendingUserOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.PendingUser, true +} + +// SetPendingUser sets field value +func (o *AccessDeniedChallenge) SetPendingUser(v string) { + o.PendingUser = v +} + +// GetPendingUserAvatar returns the PendingUserAvatar field value +func (o *AccessDeniedChallenge) GetPendingUserAvatar() string { + if o == nil { + var ret string + return ret + } + + return o.PendingUserAvatar +} + +// GetPendingUserAvatarOk returns a tuple with the PendingUserAvatar field value +// and a boolean to check if the value has been set. +func (o *AccessDeniedChallenge) GetPendingUserAvatarOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.PendingUserAvatar, true +} + +// SetPendingUserAvatar sets field value +func (o *AccessDeniedChallenge) SetPendingUserAvatar(v string) { + o.PendingUserAvatar = v +} + +// GetErrorMessage returns the ErrorMessage field value if set, zero value otherwise. +func (o *AccessDeniedChallenge) GetErrorMessage() string { + if o == nil || IsNil(o.ErrorMessage) { + var ret string + return ret + } + return *o.ErrorMessage +} + +// GetErrorMessageOk returns a tuple with the ErrorMessage field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *AccessDeniedChallenge) GetErrorMessageOk() (*string, bool) { + if o == nil || IsNil(o.ErrorMessage) { + return nil, false + } + return o.ErrorMessage, true +} + +// HasErrorMessage returns a boolean if a field has been set. +func (o *AccessDeniedChallenge) HasErrorMessage() bool { + if o != nil && !IsNil(o.ErrorMessage) { + return true + } + + return false +} + +// SetErrorMessage gets a reference to the given string and assigns it to the ErrorMessage field. +func (o *AccessDeniedChallenge) SetErrorMessage(v string) { + o.ErrorMessage = &v +} + +func (o AccessDeniedChallenge) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o AccessDeniedChallenge) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.FlowInfo) { + toSerialize["flow_info"] = o.FlowInfo + } + if !IsNil(o.Component) { + toSerialize["component"] = o.Component + } + if !IsNil(o.ResponseErrors) { + toSerialize["response_errors"] = o.ResponseErrors + } + toSerialize["pending_user"] = o.PendingUser + toSerialize["pending_user_avatar"] = o.PendingUserAvatar + if !IsNil(o.ErrorMessage) { + toSerialize["error_message"] = o.ErrorMessage + } + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *AccessDeniedChallenge) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "pending_user", + "pending_user_avatar", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varAccessDeniedChallenge := _AccessDeniedChallenge{} + + err = json.Unmarshal(data, &varAccessDeniedChallenge) + + if err != nil { + return err + } + + *o = AccessDeniedChallenge(varAccessDeniedChallenge) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "flow_info") + delete(additionalProperties, "component") + delete(additionalProperties, "response_errors") + delete(additionalProperties, "pending_user") + delete(additionalProperties, "pending_user_avatar") + delete(additionalProperties, "error_message") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableAccessDeniedChallenge struct { + value *AccessDeniedChallenge + isSet bool +} + +func (v NullableAccessDeniedChallenge) Get() *AccessDeniedChallenge { + return v.value +} + +func (v *NullableAccessDeniedChallenge) Set(val *AccessDeniedChallenge) { + v.value = val + v.isSet = true +} + +func (v NullableAccessDeniedChallenge) IsSet() bool { + return v.isSet +} + +func (v *NullableAccessDeniedChallenge) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableAccessDeniedChallenge(val *AccessDeniedChallenge) *NullableAccessDeniedChallenge { + return &NullableAccessDeniedChallenge{value: val, isSet: true} +} + +func (v NullableAccessDeniedChallenge) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableAccessDeniedChallenge) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_apple_challenge_response_request.go b/packages/client-go/model_apple_challenge_response_request.go new file mode 100644 index 0000000000..fde9d882cf --- /dev/null +++ b/packages/client-go/model_apple_challenge_response_request.go @@ -0,0 +1,158 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" +) + +// checks if the AppleChallengeResponseRequest type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &AppleChallengeResponseRequest{} + +// AppleChallengeResponseRequest Pseudo class for apple response +type AppleChallengeResponseRequest struct { + Component *string `json:"component,omitempty"` + AdditionalProperties map[string]interface{} +} + +type _AppleChallengeResponseRequest AppleChallengeResponseRequest + +// NewAppleChallengeResponseRequest instantiates a new AppleChallengeResponseRequest object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewAppleChallengeResponseRequest() *AppleChallengeResponseRequest { + this := AppleChallengeResponseRequest{} + var component string = "ak-source-oauth-apple" + this.Component = &component + return &this +} + +// NewAppleChallengeResponseRequestWithDefaults instantiates a new AppleChallengeResponseRequest object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewAppleChallengeResponseRequestWithDefaults() *AppleChallengeResponseRequest { + this := AppleChallengeResponseRequest{} + var component string = "ak-source-oauth-apple" + this.Component = &component + return &this +} + +// GetComponent returns the Component field value if set, zero value otherwise. +func (o *AppleChallengeResponseRequest) GetComponent() string { + if o == nil || IsNil(o.Component) { + var ret string + return ret + } + return *o.Component +} + +// GetComponentOk returns a tuple with the Component field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *AppleChallengeResponseRequest) GetComponentOk() (*string, bool) { + if o == nil || IsNil(o.Component) { + return nil, false + } + return o.Component, true +} + +// HasComponent returns a boolean if a field has been set. +func (o *AppleChallengeResponseRequest) HasComponent() bool { + if o != nil && !IsNil(o.Component) { + return true + } + + return false +} + +// SetComponent gets a reference to the given string and assigns it to the Component field. +func (o *AppleChallengeResponseRequest) SetComponent(v string) { + o.Component = &v +} + +func (o AppleChallengeResponseRequest) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o AppleChallengeResponseRequest) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.Component) { + toSerialize["component"] = o.Component + } + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *AppleChallengeResponseRequest) UnmarshalJSON(data []byte) (err error) { + varAppleChallengeResponseRequest := _AppleChallengeResponseRequest{} + + err = json.Unmarshal(data, &varAppleChallengeResponseRequest) + + if err != nil { + return err + } + + *o = AppleChallengeResponseRequest(varAppleChallengeResponseRequest) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "component") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableAppleChallengeResponseRequest struct { + value *AppleChallengeResponseRequest + isSet bool +} + +func (v NullableAppleChallengeResponseRequest) Get() *AppleChallengeResponseRequest { + return v.value +} + +func (v *NullableAppleChallengeResponseRequest) Set(val *AppleChallengeResponseRequest) { + v.value = val + v.isSet = true +} + +func (v NullableAppleChallengeResponseRequest) IsSet() bool { + return v.isSet +} + +func (v *NullableAppleChallengeResponseRequest) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableAppleChallengeResponseRequest(val *AppleChallengeResponseRequest) *NullableAppleChallengeResponseRequest { + return &NullableAppleChallengeResponseRequest{value: val, isSet: true} +} + +func (v NullableAppleChallengeResponseRequest) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableAppleChallengeResponseRequest) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_apple_login_challenge.go b/packages/client-go/model_apple_login_challenge.go new file mode 100644 index 0000000000..4cb73044d4 --- /dev/null +++ b/packages/client-go/model_apple_login_challenge.go @@ -0,0 +1,369 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// checks if the AppleLoginChallenge type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &AppleLoginChallenge{} + +// AppleLoginChallenge Special challenge for apple-native authentication flow, which happens on the client. +type AppleLoginChallenge struct { + FlowInfo *ContextualFlowInfo `json:"flow_info,omitempty"` + Component *string `json:"component,omitempty"` + ResponseErrors *map[string][]ErrorDetail `json:"response_errors,omitempty"` + ClientId string `json:"client_id"` + Scope string `json:"scope"` + RedirectUri string `json:"redirect_uri"` + State string `json:"state"` + AdditionalProperties map[string]interface{} +} + +type _AppleLoginChallenge AppleLoginChallenge + +// NewAppleLoginChallenge instantiates a new AppleLoginChallenge object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewAppleLoginChallenge(clientId string, scope string, redirectUri string, state string) *AppleLoginChallenge { + this := AppleLoginChallenge{} + var component string = "ak-source-oauth-apple" + this.Component = &component + this.ClientId = clientId + this.Scope = scope + this.RedirectUri = redirectUri + this.State = state + return &this +} + +// NewAppleLoginChallengeWithDefaults instantiates a new AppleLoginChallenge object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewAppleLoginChallengeWithDefaults() *AppleLoginChallenge { + this := AppleLoginChallenge{} + var component string = "ak-source-oauth-apple" + this.Component = &component + return &this +} + +// GetFlowInfo returns the FlowInfo field value if set, zero value otherwise. +func (o *AppleLoginChallenge) GetFlowInfo() ContextualFlowInfo { + if o == nil || IsNil(o.FlowInfo) { + var ret ContextualFlowInfo + return ret + } + return *o.FlowInfo +} + +// GetFlowInfoOk returns a tuple with the FlowInfo field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *AppleLoginChallenge) GetFlowInfoOk() (*ContextualFlowInfo, bool) { + if o == nil || IsNil(o.FlowInfo) { + return nil, false + } + return o.FlowInfo, true +} + +// HasFlowInfo returns a boolean if a field has been set. +func (o *AppleLoginChallenge) HasFlowInfo() bool { + if o != nil && !IsNil(o.FlowInfo) { + return true + } + + return false +} + +// SetFlowInfo gets a reference to the given ContextualFlowInfo and assigns it to the FlowInfo field. +func (o *AppleLoginChallenge) SetFlowInfo(v ContextualFlowInfo) { + o.FlowInfo = &v +} + +// GetComponent returns the Component field value if set, zero value otherwise. +func (o *AppleLoginChallenge) GetComponent() string { + if o == nil || IsNil(o.Component) { + var ret string + return ret + } + return *o.Component +} + +// GetComponentOk returns a tuple with the Component field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *AppleLoginChallenge) GetComponentOk() (*string, bool) { + if o == nil || IsNil(o.Component) { + return nil, false + } + return o.Component, true +} + +// HasComponent returns a boolean if a field has been set. +func (o *AppleLoginChallenge) HasComponent() bool { + if o != nil && !IsNil(o.Component) { + return true + } + + return false +} + +// SetComponent gets a reference to the given string and assigns it to the Component field. +func (o *AppleLoginChallenge) SetComponent(v string) { + o.Component = &v +} + +// GetResponseErrors returns the ResponseErrors field value if set, zero value otherwise. +func (o *AppleLoginChallenge) GetResponseErrors() map[string][]ErrorDetail { + if o == nil || IsNil(o.ResponseErrors) { + var ret map[string][]ErrorDetail + return ret + } + return *o.ResponseErrors +} + +// GetResponseErrorsOk returns a tuple with the ResponseErrors field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *AppleLoginChallenge) GetResponseErrorsOk() (*map[string][]ErrorDetail, bool) { + if o == nil || IsNil(o.ResponseErrors) { + return nil, false + } + return o.ResponseErrors, true +} + +// HasResponseErrors returns a boolean if a field has been set. +func (o *AppleLoginChallenge) HasResponseErrors() bool { + if o != nil && !IsNil(o.ResponseErrors) { + return true + } + + return false +} + +// SetResponseErrors gets a reference to the given map[string][]ErrorDetail and assigns it to the ResponseErrors field. +func (o *AppleLoginChallenge) SetResponseErrors(v map[string][]ErrorDetail) { + o.ResponseErrors = &v +} + +// GetClientId returns the ClientId field value +func (o *AppleLoginChallenge) GetClientId() string { + if o == nil { + var ret string + return ret + } + + return o.ClientId +} + +// GetClientIdOk returns a tuple with the ClientId field value +// and a boolean to check if the value has been set. +func (o *AppleLoginChallenge) GetClientIdOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.ClientId, true +} + +// SetClientId sets field value +func (o *AppleLoginChallenge) SetClientId(v string) { + o.ClientId = v +} + +// GetScope returns the Scope field value +func (o *AppleLoginChallenge) GetScope() string { + if o == nil { + var ret string + return ret + } + + return o.Scope +} + +// GetScopeOk returns a tuple with the Scope field value +// and a boolean to check if the value has been set. +func (o *AppleLoginChallenge) GetScopeOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Scope, true +} + +// SetScope sets field value +func (o *AppleLoginChallenge) SetScope(v string) { + o.Scope = v +} + +// GetRedirectUri returns the RedirectUri field value +func (o *AppleLoginChallenge) GetRedirectUri() string { + if o == nil { + var ret string + return ret + } + + return o.RedirectUri +} + +// GetRedirectUriOk returns a tuple with the RedirectUri field value +// and a boolean to check if the value has been set. +func (o *AppleLoginChallenge) GetRedirectUriOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.RedirectUri, true +} + +// SetRedirectUri sets field value +func (o *AppleLoginChallenge) SetRedirectUri(v string) { + o.RedirectUri = v +} + +// GetState returns the State field value +func (o *AppleLoginChallenge) GetState() string { + if o == nil { + var ret string + return ret + } + + return o.State +} + +// GetStateOk returns a tuple with the State field value +// and a boolean to check if the value has been set. +func (o *AppleLoginChallenge) GetStateOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.State, true +} + +// SetState sets field value +func (o *AppleLoginChallenge) SetState(v string) { + o.State = v +} + +func (o AppleLoginChallenge) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o AppleLoginChallenge) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.FlowInfo) { + toSerialize["flow_info"] = o.FlowInfo + } + if !IsNil(o.Component) { + toSerialize["component"] = o.Component + } + if !IsNil(o.ResponseErrors) { + toSerialize["response_errors"] = o.ResponseErrors + } + toSerialize["client_id"] = o.ClientId + toSerialize["scope"] = o.Scope + toSerialize["redirect_uri"] = o.RedirectUri + toSerialize["state"] = o.State + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *AppleLoginChallenge) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "client_id", + "scope", + "redirect_uri", + "state", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varAppleLoginChallenge := _AppleLoginChallenge{} + + err = json.Unmarshal(data, &varAppleLoginChallenge) + + if err != nil { + return err + } + + *o = AppleLoginChallenge(varAppleLoginChallenge) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "flow_info") + delete(additionalProperties, "component") + delete(additionalProperties, "response_errors") + delete(additionalProperties, "client_id") + delete(additionalProperties, "scope") + delete(additionalProperties, "redirect_uri") + delete(additionalProperties, "state") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableAppleLoginChallenge struct { + value *AppleLoginChallenge + isSet bool +} + +func (v NullableAppleLoginChallenge) Get() *AppleLoginChallenge { + return v.value +} + +func (v *NullableAppleLoginChallenge) Set(val *AppleLoginChallenge) { + v.value = val + v.isSet = true +} + +func (v NullableAppleLoginChallenge) IsSet() bool { + return v.isSet +} + +func (v *NullableAppleLoginChallenge) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableAppleLoginChallenge(val *AppleLoginChallenge) *NullableAppleLoginChallenge { + return &NullableAppleLoginChallenge{value: val, isSet: true} +} + +func (v NullableAppleLoginChallenge) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableAppleLoginChallenge) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_authenticator_duo_challenge.go b/packages/client-go/model_authenticator_duo_challenge.go new file mode 100644 index 0000000000..bd952d9f74 --- /dev/null +++ b/packages/client-go/model_authenticator_duo_challenge.go @@ -0,0 +1,398 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// checks if the AuthenticatorDuoChallenge type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &AuthenticatorDuoChallenge{} + +// AuthenticatorDuoChallenge Duo Challenge +type AuthenticatorDuoChallenge struct { + FlowInfo *ContextualFlowInfo `json:"flow_info,omitempty"` + Component *string `json:"component,omitempty"` + ResponseErrors *map[string][]ErrorDetail `json:"response_errors,omitempty"` + PendingUser string `json:"pending_user"` + PendingUserAvatar string `json:"pending_user_avatar"` + ActivationBarcode string `json:"activation_barcode"` + ActivationCode string `json:"activation_code"` + StageUuid string `json:"stage_uuid"` + AdditionalProperties map[string]interface{} +} + +type _AuthenticatorDuoChallenge AuthenticatorDuoChallenge + +// NewAuthenticatorDuoChallenge instantiates a new AuthenticatorDuoChallenge object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewAuthenticatorDuoChallenge(pendingUser string, pendingUserAvatar string, activationBarcode string, activationCode string, stageUuid string) *AuthenticatorDuoChallenge { + this := AuthenticatorDuoChallenge{} + var component string = "ak-stage-authenticator-duo" + this.Component = &component + this.PendingUser = pendingUser + this.PendingUserAvatar = pendingUserAvatar + this.ActivationBarcode = activationBarcode + this.ActivationCode = activationCode + this.StageUuid = stageUuid + return &this +} + +// NewAuthenticatorDuoChallengeWithDefaults instantiates a new AuthenticatorDuoChallenge object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewAuthenticatorDuoChallengeWithDefaults() *AuthenticatorDuoChallenge { + this := AuthenticatorDuoChallenge{} + var component string = "ak-stage-authenticator-duo" + this.Component = &component + return &this +} + +// GetFlowInfo returns the FlowInfo field value if set, zero value otherwise. +func (o *AuthenticatorDuoChallenge) GetFlowInfo() ContextualFlowInfo { + if o == nil || IsNil(o.FlowInfo) { + var ret ContextualFlowInfo + return ret + } + return *o.FlowInfo +} + +// GetFlowInfoOk returns a tuple with the FlowInfo field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *AuthenticatorDuoChallenge) GetFlowInfoOk() (*ContextualFlowInfo, bool) { + if o == nil || IsNil(o.FlowInfo) { + return nil, false + } + return o.FlowInfo, true +} + +// HasFlowInfo returns a boolean if a field has been set. +func (o *AuthenticatorDuoChallenge) HasFlowInfo() bool { + if o != nil && !IsNil(o.FlowInfo) { + return true + } + + return false +} + +// SetFlowInfo gets a reference to the given ContextualFlowInfo and assigns it to the FlowInfo field. +func (o *AuthenticatorDuoChallenge) SetFlowInfo(v ContextualFlowInfo) { + o.FlowInfo = &v +} + +// GetComponent returns the Component field value if set, zero value otherwise. +func (o *AuthenticatorDuoChallenge) GetComponent() string { + if o == nil || IsNil(o.Component) { + var ret string + return ret + } + return *o.Component +} + +// GetComponentOk returns a tuple with the Component field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *AuthenticatorDuoChallenge) GetComponentOk() (*string, bool) { + if o == nil || IsNil(o.Component) { + return nil, false + } + return o.Component, true +} + +// HasComponent returns a boolean if a field has been set. +func (o *AuthenticatorDuoChallenge) HasComponent() bool { + if o != nil && !IsNil(o.Component) { + return true + } + + return false +} + +// SetComponent gets a reference to the given string and assigns it to the Component field. +func (o *AuthenticatorDuoChallenge) SetComponent(v string) { + o.Component = &v +} + +// GetResponseErrors returns the ResponseErrors field value if set, zero value otherwise. +func (o *AuthenticatorDuoChallenge) GetResponseErrors() map[string][]ErrorDetail { + if o == nil || IsNil(o.ResponseErrors) { + var ret map[string][]ErrorDetail + return ret + } + return *o.ResponseErrors +} + +// GetResponseErrorsOk returns a tuple with the ResponseErrors field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *AuthenticatorDuoChallenge) GetResponseErrorsOk() (*map[string][]ErrorDetail, bool) { + if o == nil || IsNil(o.ResponseErrors) { + return nil, false + } + return o.ResponseErrors, true +} + +// HasResponseErrors returns a boolean if a field has been set. +func (o *AuthenticatorDuoChallenge) HasResponseErrors() bool { + if o != nil && !IsNil(o.ResponseErrors) { + return true + } + + return false +} + +// SetResponseErrors gets a reference to the given map[string][]ErrorDetail and assigns it to the ResponseErrors field. +func (o *AuthenticatorDuoChallenge) SetResponseErrors(v map[string][]ErrorDetail) { + o.ResponseErrors = &v +} + +// GetPendingUser returns the PendingUser field value +func (o *AuthenticatorDuoChallenge) GetPendingUser() string { + if o == nil { + var ret string + return ret + } + + return o.PendingUser +} + +// GetPendingUserOk returns a tuple with the PendingUser field value +// and a boolean to check if the value has been set. +func (o *AuthenticatorDuoChallenge) GetPendingUserOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.PendingUser, true +} + +// SetPendingUser sets field value +func (o *AuthenticatorDuoChallenge) SetPendingUser(v string) { + o.PendingUser = v +} + +// GetPendingUserAvatar returns the PendingUserAvatar field value +func (o *AuthenticatorDuoChallenge) GetPendingUserAvatar() string { + if o == nil { + var ret string + return ret + } + + return o.PendingUserAvatar +} + +// GetPendingUserAvatarOk returns a tuple with the PendingUserAvatar field value +// and a boolean to check if the value has been set. +func (o *AuthenticatorDuoChallenge) GetPendingUserAvatarOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.PendingUserAvatar, true +} + +// SetPendingUserAvatar sets field value +func (o *AuthenticatorDuoChallenge) SetPendingUserAvatar(v string) { + o.PendingUserAvatar = v +} + +// GetActivationBarcode returns the ActivationBarcode field value +func (o *AuthenticatorDuoChallenge) GetActivationBarcode() string { + if o == nil { + var ret string + return ret + } + + return o.ActivationBarcode +} + +// GetActivationBarcodeOk returns a tuple with the ActivationBarcode field value +// and a boolean to check if the value has been set. +func (o *AuthenticatorDuoChallenge) GetActivationBarcodeOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.ActivationBarcode, true +} + +// SetActivationBarcode sets field value +func (o *AuthenticatorDuoChallenge) SetActivationBarcode(v string) { + o.ActivationBarcode = v +} + +// GetActivationCode returns the ActivationCode field value +func (o *AuthenticatorDuoChallenge) GetActivationCode() string { + if o == nil { + var ret string + return ret + } + + return o.ActivationCode +} + +// GetActivationCodeOk returns a tuple with the ActivationCode field value +// and a boolean to check if the value has been set. +func (o *AuthenticatorDuoChallenge) GetActivationCodeOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.ActivationCode, true +} + +// SetActivationCode sets field value +func (o *AuthenticatorDuoChallenge) SetActivationCode(v string) { + o.ActivationCode = v +} + +// GetStageUuid returns the StageUuid field value +func (o *AuthenticatorDuoChallenge) GetStageUuid() string { + if o == nil { + var ret string + return ret + } + + return o.StageUuid +} + +// GetStageUuidOk returns a tuple with the StageUuid field value +// and a boolean to check if the value has been set. +func (o *AuthenticatorDuoChallenge) GetStageUuidOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.StageUuid, true +} + +// SetStageUuid sets field value +func (o *AuthenticatorDuoChallenge) SetStageUuid(v string) { + o.StageUuid = v +} + +func (o AuthenticatorDuoChallenge) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o AuthenticatorDuoChallenge) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.FlowInfo) { + toSerialize["flow_info"] = o.FlowInfo + } + if !IsNil(o.Component) { + toSerialize["component"] = o.Component + } + if !IsNil(o.ResponseErrors) { + toSerialize["response_errors"] = o.ResponseErrors + } + toSerialize["pending_user"] = o.PendingUser + toSerialize["pending_user_avatar"] = o.PendingUserAvatar + toSerialize["activation_barcode"] = o.ActivationBarcode + toSerialize["activation_code"] = o.ActivationCode + toSerialize["stage_uuid"] = o.StageUuid + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *AuthenticatorDuoChallenge) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "pending_user", + "pending_user_avatar", + "activation_barcode", + "activation_code", + "stage_uuid", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varAuthenticatorDuoChallenge := _AuthenticatorDuoChallenge{} + + err = json.Unmarshal(data, &varAuthenticatorDuoChallenge) + + if err != nil { + return err + } + + *o = AuthenticatorDuoChallenge(varAuthenticatorDuoChallenge) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "flow_info") + delete(additionalProperties, "component") + delete(additionalProperties, "response_errors") + delete(additionalProperties, "pending_user") + delete(additionalProperties, "pending_user_avatar") + delete(additionalProperties, "activation_barcode") + delete(additionalProperties, "activation_code") + delete(additionalProperties, "stage_uuid") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableAuthenticatorDuoChallenge struct { + value *AuthenticatorDuoChallenge + isSet bool +} + +func (v NullableAuthenticatorDuoChallenge) Get() *AuthenticatorDuoChallenge { + return v.value +} + +func (v *NullableAuthenticatorDuoChallenge) Set(val *AuthenticatorDuoChallenge) { + v.value = val + v.isSet = true +} + +func (v NullableAuthenticatorDuoChallenge) IsSet() bool { + return v.isSet +} + +func (v *NullableAuthenticatorDuoChallenge) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableAuthenticatorDuoChallenge(val *AuthenticatorDuoChallenge) *NullableAuthenticatorDuoChallenge { + return &NullableAuthenticatorDuoChallenge{value: val, isSet: true} +} + +func (v NullableAuthenticatorDuoChallenge) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableAuthenticatorDuoChallenge) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_authenticator_duo_challenge_response_request.go b/packages/client-go/model_authenticator_duo_challenge_response_request.go new file mode 100644 index 0000000000..a31d73b24c --- /dev/null +++ b/packages/client-go/model_authenticator_duo_challenge_response_request.go @@ -0,0 +1,158 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" +) + +// checks if the AuthenticatorDuoChallengeResponseRequest type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &AuthenticatorDuoChallengeResponseRequest{} + +// AuthenticatorDuoChallengeResponseRequest Pseudo class for duo response +type AuthenticatorDuoChallengeResponseRequest struct { + Component *string `json:"component,omitempty"` + AdditionalProperties map[string]interface{} +} + +type _AuthenticatorDuoChallengeResponseRequest AuthenticatorDuoChallengeResponseRequest + +// NewAuthenticatorDuoChallengeResponseRequest instantiates a new AuthenticatorDuoChallengeResponseRequest object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewAuthenticatorDuoChallengeResponseRequest() *AuthenticatorDuoChallengeResponseRequest { + this := AuthenticatorDuoChallengeResponseRequest{} + var component string = "ak-stage-authenticator-duo" + this.Component = &component + return &this +} + +// NewAuthenticatorDuoChallengeResponseRequestWithDefaults instantiates a new AuthenticatorDuoChallengeResponseRequest object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewAuthenticatorDuoChallengeResponseRequestWithDefaults() *AuthenticatorDuoChallengeResponseRequest { + this := AuthenticatorDuoChallengeResponseRequest{} + var component string = "ak-stage-authenticator-duo" + this.Component = &component + return &this +} + +// GetComponent returns the Component field value if set, zero value otherwise. +func (o *AuthenticatorDuoChallengeResponseRequest) GetComponent() string { + if o == nil || IsNil(o.Component) { + var ret string + return ret + } + return *o.Component +} + +// GetComponentOk returns a tuple with the Component field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *AuthenticatorDuoChallengeResponseRequest) GetComponentOk() (*string, bool) { + if o == nil || IsNil(o.Component) { + return nil, false + } + return o.Component, true +} + +// HasComponent returns a boolean if a field has been set. +func (o *AuthenticatorDuoChallengeResponseRequest) HasComponent() bool { + if o != nil && !IsNil(o.Component) { + return true + } + + return false +} + +// SetComponent gets a reference to the given string and assigns it to the Component field. +func (o *AuthenticatorDuoChallengeResponseRequest) SetComponent(v string) { + o.Component = &v +} + +func (o AuthenticatorDuoChallengeResponseRequest) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o AuthenticatorDuoChallengeResponseRequest) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.Component) { + toSerialize["component"] = o.Component + } + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *AuthenticatorDuoChallengeResponseRequest) UnmarshalJSON(data []byte) (err error) { + varAuthenticatorDuoChallengeResponseRequest := _AuthenticatorDuoChallengeResponseRequest{} + + err = json.Unmarshal(data, &varAuthenticatorDuoChallengeResponseRequest) + + if err != nil { + return err + } + + *o = AuthenticatorDuoChallengeResponseRequest(varAuthenticatorDuoChallengeResponseRequest) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "component") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableAuthenticatorDuoChallengeResponseRequest struct { + value *AuthenticatorDuoChallengeResponseRequest + isSet bool +} + +func (v NullableAuthenticatorDuoChallengeResponseRequest) Get() *AuthenticatorDuoChallengeResponseRequest { + return v.value +} + +func (v *NullableAuthenticatorDuoChallengeResponseRequest) Set(val *AuthenticatorDuoChallengeResponseRequest) { + v.value = val + v.isSet = true +} + +func (v NullableAuthenticatorDuoChallengeResponseRequest) IsSet() bool { + return v.isSet +} + +func (v *NullableAuthenticatorDuoChallengeResponseRequest) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableAuthenticatorDuoChallengeResponseRequest(val *AuthenticatorDuoChallengeResponseRequest) *NullableAuthenticatorDuoChallengeResponseRequest { + return &NullableAuthenticatorDuoChallengeResponseRequest{value: val, isSet: true} +} + +func (v NullableAuthenticatorDuoChallengeResponseRequest) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableAuthenticatorDuoChallengeResponseRequest) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_authenticator_email_challenge.go b/packages/client-go/model_authenticator_email_challenge.go new file mode 100644 index 0000000000..12628f92b8 --- /dev/null +++ b/packages/client-go/model_authenticator_email_challenge.go @@ -0,0 +1,400 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// checks if the AuthenticatorEmailChallenge type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &AuthenticatorEmailChallenge{} + +// AuthenticatorEmailChallenge Authenticator Email Setup challenge +type AuthenticatorEmailChallenge struct { + FlowInfo *ContextualFlowInfo `json:"flow_info,omitempty"` + Component *string `json:"component,omitempty"` + ResponseErrors *map[string][]ErrorDetail `json:"response_errors,omitempty"` + PendingUser string `json:"pending_user"` + PendingUserAvatar string `json:"pending_user_avatar"` + Email NullableString `json:"email,omitempty"` + EmailRequired *bool `json:"email_required,omitempty"` + AdditionalProperties map[string]interface{} +} + +type _AuthenticatorEmailChallenge AuthenticatorEmailChallenge + +// NewAuthenticatorEmailChallenge instantiates a new AuthenticatorEmailChallenge object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewAuthenticatorEmailChallenge(pendingUser string, pendingUserAvatar string) *AuthenticatorEmailChallenge { + this := AuthenticatorEmailChallenge{} + var component string = "ak-stage-authenticator-email" + this.Component = &component + this.PendingUser = pendingUser + this.PendingUserAvatar = pendingUserAvatar + var emailRequired bool = true + this.EmailRequired = &emailRequired + return &this +} + +// NewAuthenticatorEmailChallengeWithDefaults instantiates a new AuthenticatorEmailChallenge object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewAuthenticatorEmailChallengeWithDefaults() *AuthenticatorEmailChallenge { + this := AuthenticatorEmailChallenge{} + var component string = "ak-stage-authenticator-email" + this.Component = &component + var emailRequired bool = true + this.EmailRequired = &emailRequired + return &this +} + +// GetFlowInfo returns the FlowInfo field value if set, zero value otherwise. +func (o *AuthenticatorEmailChallenge) GetFlowInfo() ContextualFlowInfo { + if o == nil || IsNil(o.FlowInfo) { + var ret ContextualFlowInfo + return ret + } + return *o.FlowInfo +} + +// GetFlowInfoOk returns a tuple with the FlowInfo field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *AuthenticatorEmailChallenge) GetFlowInfoOk() (*ContextualFlowInfo, bool) { + if o == nil || IsNil(o.FlowInfo) { + return nil, false + } + return o.FlowInfo, true +} + +// HasFlowInfo returns a boolean if a field has been set. +func (o *AuthenticatorEmailChallenge) HasFlowInfo() bool { + if o != nil && !IsNil(o.FlowInfo) { + return true + } + + return false +} + +// SetFlowInfo gets a reference to the given ContextualFlowInfo and assigns it to the FlowInfo field. +func (o *AuthenticatorEmailChallenge) SetFlowInfo(v ContextualFlowInfo) { + o.FlowInfo = &v +} + +// GetComponent returns the Component field value if set, zero value otherwise. +func (o *AuthenticatorEmailChallenge) GetComponent() string { + if o == nil || IsNil(o.Component) { + var ret string + return ret + } + return *o.Component +} + +// GetComponentOk returns a tuple with the Component field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *AuthenticatorEmailChallenge) GetComponentOk() (*string, bool) { + if o == nil || IsNil(o.Component) { + return nil, false + } + return o.Component, true +} + +// HasComponent returns a boolean if a field has been set. +func (o *AuthenticatorEmailChallenge) HasComponent() bool { + if o != nil && !IsNil(o.Component) { + return true + } + + return false +} + +// SetComponent gets a reference to the given string and assigns it to the Component field. +func (o *AuthenticatorEmailChallenge) SetComponent(v string) { + o.Component = &v +} + +// GetResponseErrors returns the ResponseErrors field value if set, zero value otherwise. +func (o *AuthenticatorEmailChallenge) GetResponseErrors() map[string][]ErrorDetail { + if o == nil || IsNil(o.ResponseErrors) { + var ret map[string][]ErrorDetail + return ret + } + return *o.ResponseErrors +} + +// GetResponseErrorsOk returns a tuple with the ResponseErrors field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *AuthenticatorEmailChallenge) GetResponseErrorsOk() (*map[string][]ErrorDetail, bool) { + if o == nil || IsNil(o.ResponseErrors) { + return nil, false + } + return o.ResponseErrors, true +} + +// HasResponseErrors returns a boolean if a field has been set. +func (o *AuthenticatorEmailChallenge) HasResponseErrors() bool { + if o != nil && !IsNil(o.ResponseErrors) { + return true + } + + return false +} + +// SetResponseErrors gets a reference to the given map[string][]ErrorDetail and assigns it to the ResponseErrors field. +func (o *AuthenticatorEmailChallenge) SetResponseErrors(v map[string][]ErrorDetail) { + o.ResponseErrors = &v +} + +// GetPendingUser returns the PendingUser field value +func (o *AuthenticatorEmailChallenge) GetPendingUser() string { + if o == nil { + var ret string + return ret + } + + return o.PendingUser +} + +// GetPendingUserOk returns a tuple with the PendingUser field value +// and a boolean to check if the value has been set. +func (o *AuthenticatorEmailChallenge) GetPendingUserOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.PendingUser, true +} + +// SetPendingUser sets field value +func (o *AuthenticatorEmailChallenge) SetPendingUser(v string) { + o.PendingUser = v +} + +// GetPendingUserAvatar returns the PendingUserAvatar field value +func (o *AuthenticatorEmailChallenge) GetPendingUserAvatar() string { + if o == nil { + var ret string + return ret + } + + return o.PendingUserAvatar +} + +// GetPendingUserAvatarOk returns a tuple with the PendingUserAvatar field value +// and a boolean to check if the value has been set. +func (o *AuthenticatorEmailChallenge) GetPendingUserAvatarOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.PendingUserAvatar, true +} + +// SetPendingUserAvatar sets field value +func (o *AuthenticatorEmailChallenge) SetPendingUserAvatar(v string) { + o.PendingUserAvatar = v +} + +// GetEmail returns the Email field value if set, zero value otherwise (both if not set or set to explicit null). +func (o *AuthenticatorEmailChallenge) GetEmail() string { + if o == nil || IsNil(o.Email.Get()) { + var ret string + return ret + } + return *o.Email.Get() +} + +// GetEmailOk returns a tuple with the Email field value if set, nil otherwise +// and a boolean to check if the value has been set. +// NOTE: If the value is an explicit nil, `nil, true` will be returned +func (o *AuthenticatorEmailChallenge) GetEmailOk() (*string, bool) { + if o == nil { + return nil, false + } + return o.Email.Get(), o.Email.IsSet() +} + +// HasEmail returns a boolean if a field has been set. +func (o *AuthenticatorEmailChallenge) HasEmail() bool { + if o != nil && o.Email.IsSet() { + return true + } + + return false +} + +// SetEmail gets a reference to the given NullableString and assigns it to the Email field. +func (o *AuthenticatorEmailChallenge) SetEmail(v string) { + o.Email.Set(&v) +} + +// SetEmailNil sets the value for Email to be an explicit nil +func (o *AuthenticatorEmailChallenge) SetEmailNil() { + o.Email.Set(nil) +} + +// UnsetEmail ensures that no value is present for Email, not even an explicit nil +func (o *AuthenticatorEmailChallenge) UnsetEmail() { + o.Email.Unset() +} + +// GetEmailRequired returns the EmailRequired field value if set, zero value otherwise. +func (o *AuthenticatorEmailChallenge) GetEmailRequired() bool { + if o == nil || IsNil(o.EmailRequired) { + var ret bool + return ret + } + return *o.EmailRequired +} + +// GetEmailRequiredOk returns a tuple with the EmailRequired field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *AuthenticatorEmailChallenge) GetEmailRequiredOk() (*bool, bool) { + if o == nil || IsNil(o.EmailRequired) { + return nil, false + } + return o.EmailRequired, true +} + +// HasEmailRequired returns a boolean if a field has been set. +func (o *AuthenticatorEmailChallenge) HasEmailRequired() bool { + if o != nil && !IsNil(o.EmailRequired) { + return true + } + + return false +} + +// SetEmailRequired gets a reference to the given bool and assigns it to the EmailRequired field. +func (o *AuthenticatorEmailChallenge) SetEmailRequired(v bool) { + o.EmailRequired = &v +} + +func (o AuthenticatorEmailChallenge) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o AuthenticatorEmailChallenge) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.FlowInfo) { + toSerialize["flow_info"] = o.FlowInfo + } + if !IsNil(o.Component) { + toSerialize["component"] = o.Component + } + if !IsNil(o.ResponseErrors) { + toSerialize["response_errors"] = o.ResponseErrors + } + toSerialize["pending_user"] = o.PendingUser + toSerialize["pending_user_avatar"] = o.PendingUserAvatar + if o.Email.IsSet() { + toSerialize["email"] = o.Email.Get() + } + if !IsNil(o.EmailRequired) { + toSerialize["email_required"] = o.EmailRequired + } + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *AuthenticatorEmailChallenge) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "pending_user", + "pending_user_avatar", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varAuthenticatorEmailChallenge := _AuthenticatorEmailChallenge{} + + err = json.Unmarshal(data, &varAuthenticatorEmailChallenge) + + if err != nil { + return err + } + + *o = AuthenticatorEmailChallenge(varAuthenticatorEmailChallenge) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "flow_info") + delete(additionalProperties, "component") + delete(additionalProperties, "response_errors") + delete(additionalProperties, "pending_user") + delete(additionalProperties, "pending_user_avatar") + delete(additionalProperties, "email") + delete(additionalProperties, "email_required") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableAuthenticatorEmailChallenge struct { + value *AuthenticatorEmailChallenge + isSet bool +} + +func (v NullableAuthenticatorEmailChallenge) Get() *AuthenticatorEmailChallenge { + return v.value +} + +func (v *NullableAuthenticatorEmailChallenge) Set(val *AuthenticatorEmailChallenge) { + v.value = val + v.isSet = true +} + +func (v NullableAuthenticatorEmailChallenge) IsSet() bool { + return v.isSet +} + +func (v *NullableAuthenticatorEmailChallenge) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableAuthenticatorEmailChallenge(val *AuthenticatorEmailChallenge) *NullableAuthenticatorEmailChallenge { + return &NullableAuthenticatorEmailChallenge{value: val, isSet: true} +} + +func (v NullableAuthenticatorEmailChallenge) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableAuthenticatorEmailChallenge) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_authenticator_email_challenge_response_request.go b/packages/client-go/model_authenticator_email_challenge_response_request.go new file mode 100644 index 0000000000..03f77d1efd --- /dev/null +++ b/packages/client-go/model_authenticator_email_challenge_response_request.go @@ -0,0 +1,232 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" +) + +// checks if the AuthenticatorEmailChallengeResponseRequest type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &AuthenticatorEmailChallengeResponseRequest{} + +// AuthenticatorEmailChallengeResponseRequest Authenticator Email Challenge response, device is set by get_response_instance +type AuthenticatorEmailChallengeResponseRequest struct { + Component *string `json:"component,omitempty"` + Code *string `json:"code,omitempty"` + Email *string `json:"email,omitempty"` + AdditionalProperties map[string]interface{} +} + +type _AuthenticatorEmailChallengeResponseRequest AuthenticatorEmailChallengeResponseRequest + +// NewAuthenticatorEmailChallengeResponseRequest instantiates a new AuthenticatorEmailChallengeResponseRequest object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewAuthenticatorEmailChallengeResponseRequest() *AuthenticatorEmailChallengeResponseRequest { + this := AuthenticatorEmailChallengeResponseRequest{} + var component string = "ak-stage-authenticator-email" + this.Component = &component + return &this +} + +// NewAuthenticatorEmailChallengeResponseRequestWithDefaults instantiates a new AuthenticatorEmailChallengeResponseRequest object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewAuthenticatorEmailChallengeResponseRequestWithDefaults() *AuthenticatorEmailChallengeResponseRequest { + this := AuthenticatorEmailChallengeResponseRequest{} + var component string = "ak-stage-authenticator-email" + this.Component = &component + return &this +} + +// GetComponent returns the Component field value if set, zero value otherwise. +func (o *AuthenticatorEmailChallengeResponseRequest) GetComponent() string { + if o == nil || IsNil(o.Component) { + var ret string + return ret + } + return *o.Component +} + +// GetComponentOk returns a tuple with the Component field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *AuthenticatorEmailChallengeResponseRequest) GetComponentOk() (*string, bool) { + if o == nil || IsNil(o.Component) { + return nil, false + } + return o.Component, true +} + +// HasComponent returns a boolean if a field has been set. +func (o *AuthenticatorEmailChallengeResponseRequest) HasComponent() bool { + if o != nil && !IsNil(o.Component) { + return true + } + + return false +} + +// SetComponent gets a reference to the given string and assigns it to the Component field. +func (o *AuthenticatorEmailChallengeResponseRequest) SetComponent(v string) { + o.Component = &v +} + +// GetCode returns the Code field value if set, zero value otherwise. +func (o *AuthenticatorEmailChallengeResponseRequest) GetCode() string { + if o == nil || IsNil(o.Code) { + var ret string + return ret + } + return *o.Code +} + +// GetCodeOk returns a tuple with the Code field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *AuthenticatorEmailChallengeResponseRequest) GetCodeOk() (*string, bool) { + if o == nil || IsNil(o.Code) { + return nil, false + } + return o.Code, true +} + +// HasCode returns a boolean if a field has been set. +func (o *AuthenticatorEmailChallengeResponseRequest) HasCode() bool { + if o != nil && !IsNil(o.Code) { + return true + } + + return false +} + +// SetCode gets a reference to the given string and assigns it to the Code field. +func (o *AuthenticatorEmailChallengeResponseRequest) SetCode(v string) { + o.Code = &v +} + +// GetEmail returns the Email field value if set, zero value otherwise. +func (o *AuthenticatorEmailChallengeResponseRequest) GetEmail() string { + if o == nil || IsNil(o.Email) { + var ret string + return ret + } + return *o.Email +} + +// GetEmailOk returns a tuple with the Email field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *AuthenticatorEmailChallengeResponseRequest) GetEmailOk() (*string, bool) { + if o == nil || IsNil(o.Email) { + return nil, false + } + return o.Email, true +} + +// HasEmail returns a boolean if a field has been set. +func (o *AuthenticatorEmailChallengeResponseRequest) HasEmail() bool { + if o != nil && !IsNil(o.Email) { + return true + } + + return false +} + +// SetEmail gets a reference to the given string and assigns it to the Email field. +func (o *AuthenticatorEmailChallengeResponseRequest) SetEmail(v string) { + o.Email = &v +} + +func (o AuthenticatorEmailChallengeResponseRequest) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o AuthenticatorEmailChallengeResponseRequest) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.Component) { + toSerialize["component"] = o.Component + } + if !IsNil(o.Code) { + toSerialize["code"] = o.Code + } + if !IsNil(o.Email) { + toSerialize["email"] = o.Email + } + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *AuthenticatorEmailChallengeResponseRequest) UnmarshalJSON(data []byte) (err error) { + varAuthenticatorEmailChallengeResponseRequest := _AuthenticatorEmailChallengeResponseRequest{} + + err = json.Unmarshal(data, &varAuthenticatorEmailChallengeResponseRequest) + + if err != nil { + return err + } + + *o = AuthenticatorEmailChallengeResponseRequest(varAuthenticatorEmailChallengeResponseRequest) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "component") + delete(additionalProperties, "code") + delete(additionalProperties, "email") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableAuthenticatorEmailChallengeResponseRequest struct { + value *AuthenticatorEmailChallengeResponseRequest + isSet bool +} + +func (v NullableAuthenticatorEmailChallengeResponseRequest) Get() *AuthenticatorEmailChallengeResponseRequest { + return v.value +} + +func (v *NullableAuthenticatorEmailChallengeResponseRequest) Set(val *AuthenticatorEmailChallengeResponseRequest) { + v.value = val + v.isSet = true +} + +func (v NullableAuthenticatorEmailChallengeResponseRequest) IsSet() bool { + return v.isSet +} + +func (v *NullableAuthenticatorEmailChallengeResponseRequest) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableAuthenticatorEmailChallengeResponseRequest(val *AuthenticatorEmailChallengeResponseRequest) *NullableAuthenticatorEmailChallengeResponseRequest { + return &NullableAuthenticatorEmailChallengeResponseRequest{value: val, isSet: true} +} + +func (v NullableAuthenticatorEmailChallengeResponseRequest) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableAuthenticatorEmailChallengeResponseRequest) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_authenticator_sms_challenge.go b/packages/client-go/model_authenticator_sms_challenge.go new file mode 100644 index 0000000000..bdf1eacf63 --- /dev/null +++ b/packages/client-go/model_authenticator_sms_challenge.go @@ -0,0 +1,352 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// checks if the AuthenticatorSMSChallenge type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &AuthenticatorSMSChallenge{} + +// AuthenticatorSMSChallenge SMS Setup challenge +type AuthenticatorSMSChallenge struct { + FlowInfo *ContextualFlowInfo `json:"flow_info,omitempty"` + Component *string `json:"component,omitempty"` + ResponseErrors *map[string][]ErrorDetail `json:"response_errors,omitempty"` + PendingUser string `json:"pending_user"` + PendingUserAvatar string `json:"pending_user_avatar"` + PhoneNumberRequired *bool `json:"phone_number_required,omitempty"` + AdditionalProperties map[string]interface{} +} + +type _AuthenticatorSMSChallenge AuthenticatorSMSChallenge + +// NewAuthenticatorSMSChallenge instantiates a new AuthenticatorSMSChallenge object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewAuthenticatorSMSChallenge(pendingUser string, pendingUserAvatar string) *AuthenticatorSMSChallenge { + this := AuthenticatorSMSChallenge{} + var component string = "ak-stage-authenticator-sms" + this.Component = &component + this.PendingUser = pendingUser + this.PendingUserAvatar = pendingUserAvatar + var phoneNumberRequired bool = true + this.PhoneNumberRequired = &phoneNumberRequired + return &this +} + +// NewAuthenticatorSMSChallengeWithDefaults instantiates a new AuthenticatorSMSChallenge object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewAuthenticatorSMSChallengeWithDefaults() *AuthenticatorSMSChallenge { + this := AuthenticatorSMSChallenge{} + var component string = "ak-stage-authenticator-sms" + this.Component = &component + var phoneNumberRequired bool = true + this.PhoneNumberRequired = &phoneNumberRequired + return &this +} + +// GetFlowInfo returns the FlowInfo field value if set, zero value otherwise. +func (o *AuthenticatorSMSChallenge) GetFlowInfo() ContextualFlowInfo { + if o == nil || IsNil(o.FlowInfo) { + var ret ContextualFlowInfo + return ret + } + return *o.FlowInfo +} + +// GetFlowInfoOk returns a tuple with the FlowInfo field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *AuthenticatorSMSChallenge) GetFlowInfoOk() (*ContextualFlowInfo, bool) { + if o == nil || IsNil(o.FlowInfo) { + return nil, false + } + return o.FlowInfo, true +} + +// HasFlowInfo returns a boolean if a field has been set. +func (o *AuthenticatorSMSChallenge) HasFlowInfo() bool { + if o != nil && !IsNil(o.FlowInfo) { + return true + } + + return false +} + +// SetFlowInfo gets a reference to the given ContextualFlowInfo and assigns it to the FlowInfo field. +func (o *AuthenticatorSMSChallenge) SetFlowInfo(v ContextualFlowInfo) { + o.FlowInfo = &v +} + +// GetComponent returns the Component field value if set, zero value otherwise. +func (o *AuthenticatorSMSChallenge) GetComponent() string { + if o == nil || IsNil(o.Component) { + var ret string + return ret + } + return *o.Component +} + +// GetComponentOk returns a tuple with the Component field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *AuthenticatorSMSChallenge) GetComponentOk() (*string, bool) { + if o == nil || IsNil(o.Component) { + return nil, false + } + return o.Component, true +} + +// HasComponent returns a boolean if a field has been set. +func (o *AuthenticatorSMSChallenge) HasComponent() bool { + if o != nil && !IsNil(o.Component) { + return true + } + + return false +} + +// SetComponent gets a reference to the given string and assigns it to the Component field. +func (o *AuthenticatorSMSChallenge) SetComponent(v string) { + o.Component = &v +} + +// GetResponseErrors returns the ResponseErrors field value if set, zero value otherwise. +func (o *AuthenticatorSMSChallenge) GetResponseErrors() map[string][]ErrorDetail { + if o == nil || IsNil(o.ResponseErrors) { + var ret map[string][]ErrorDetail + return ret + } + return *o.ResponseErrors +} + +// GetResponseErrorsOk returns a tuple with the ResponseErrors field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *AuthenticatorSMSChallenge) GetResponseErrorsOk() (*map[string][]ErrorDetail, bool) { + if o == nil || IsNil(o.ResponseErrors) { + return nil, false + } + return o.ResponseErrors, true +} + +// HasResponseErrors returns a boolean if a field has been set. +func (o *AuthenticatorSMSChallenge) HasResponseErrors() bool { + if o != nil && !IsNil(o.ResponseErrors) { + return true + } + + return false +} + +// SetResponseErrors gets a reference to the given map[string][]ErrorDetail and assigns it to the ResponseErrors field. +func (o *AuthenticatorSMSChallenge) SetResponseErrors(v map[string][]ErrorDetail) { + o.ResponseErrors = &v +} + +// GetPendingUser returns the PendingUser field value +func (o *AuthenticatorSMSChallenge) GetPendingUser() string { + if o == nil { + var ret string + return ret + } + + return o.PendingUser +} + +// GetPendingUserOk returns a tuple with the PendingUser field value +// and a boolean to check if the value has been set. +func (o *AuthenticatorSMSChallenge) GetPendingUserOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.PendingUser, true +} + +// SetPendingUser sets field value +func (o *AuthenticatorSMSChallenge) SetPendingUser(v string) { + o.PendingUser = v +} + +// GetPendingUserAvatar returns the PendingUserAvatar field value +func (o *AuthenticatorSMSChallenge) GetPendingUserAvatar() string { + if o == nil { + var ret string + return ret + } + + return o.PendingUserAvatar +} + +// GetPendingUserAvatarOk returns a tuple with the PendingUserAvatar field value +// and a boolean to check if the value has been set. +func (o *AuthenticatorSMSChallenge) GetPendingUserAvatarOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.PendingUserAvatar, true +} + +// SetPendingUserAvatar sets field value +func (o *AuthenticatorSMSChallenge) SetPendingUserAvatar(v string) { + o.PendingUserAvatar = v +} + +// GetPhoneNumberRequired returns the PhoneNumberRequired field value if set, zero value otherwise. +func (o *AuthenticatorSMSChallenge) GetPhoneNumberRequired() bool { + if o == nil || IsNil(o.PhoneNumberRequired) { + var ret bool + return ret + } + return *o.PhoneNumberRequired +} + +// GetPhoneNumberRequiredOk returns a tuple with the PhoneNumberRequired field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *AuthenticatorSMSChallenge) GetPhoneNumberRequiredOk() (*bool, bool) { + if o == nil || IsNil(o.PhoneNumberRequired) { + return nil, false + } + return o.PhoneNumberRequired, true +} + +// HasPhoneNumberRequired returns a boolean if a field has been set. +func (o *AuthenticatorSMSChallenge) HasPhoneNumberRequired() bool { + if o != nil && !IsNil(o.PhoneNumberRequired) { + return true + } + + return false +} + +// SetPhoneNumberRequired gets a reference to the given bool and assigns it to the PhoneNumberRequired field. +func (o *AuthenticatorSMSChallenge) SetPhoneNumberRequired(v bool) { + o.PhoneNumberRequired = &v +} + +func (o AuthenticatorSMSChallenge) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o AuthenticatorSMSChallenge) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.FlowInfo) { + toSerialize["flow_info"] = o.FlowInfo + } + if !IsNil(o.Component) { + toSerialize["component"] = o.Component + } + if !IsNil(o.ResponseErrors) { + toSerialize["response_errors"] = o.ResponseErrors + } + toSerialize["pending_user"] = o.PendingUser + toSerialize["pending_user_avatar"] = o.PendingUserAvatar + if !IsNil(o.PhoneNumberRequired) { + toSerialize["phone_number_required"] = o.PhoneNumberRequired + } + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *AuthenticatorSMSChallenge) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "pending_user", + "pending_user_avatar", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varAuthenticatorSMSChallenge := _AuthenticatorSMSChallenge{} + + err = json.Unmarshal(data, &varAuthenticatorSMSChallenge) + + if err != nil { + return err + } + + *o = AuthenticatorSMSChallenge(varAuthenticatorSMSChallenge) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "flow_info") + delete(additionalProperties, "component") + delete(additionalProperties, "response_errors") + delete(additionalProperties, "pending_user") + delete(additionalProperties, "pending_user_avatar") + delete(additionalProperties, "phone_number_required") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableAuthenticatorSMSChallenge struct { + value *AuthenticatorSMSChallenge + isSet bool +} + +func (v NullableAuthenticatorSMSChallenge) Get() *AuthenticatorSMSChallenge { + return v.value +} + +func (v *NullableAuthenticatorSMSChallenge) Set(val *AuthenticatorSMSChallenge) { + v.value = val + v.isSet = true +} + +func (v NullableAuthenticatorSMSChallenge) IsSet() bool { + return v.isSet +} + +func (v *NullableAuthenticatorSMSChallenge) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableAuthenticatorSMSChallenge(val *AuthenticatorSMSChallenge) *NullableAuthenticatorSMSChallenge { + return &NullableAuthenticatorSMSChallenge{value: val, isSet: true} +} + +func (v NullableAuthenticatorSMSChallenge) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableAuthenticatorSMSChallenge) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_authenticator_sms_challenge_response_request.go b/packages/client-go/model_authenticator_sms_challenge_response_request.go new file mode 100644 index 0000000000..897c2c54ca --- /dev/null +++ b/packages/client-go/model_authenticator_sms_challenge_response_request.go @@ -0,0 +1,232 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" +) + +// checks if the AuthenticatorSMSChallengeResponseRequest type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &AuthenticatorSMSChallengeResponseRequest{} + +// AuthenticatorSMSChallengeResponseRequest SMS Challenge response, device is set by get_response_instance +type AuthenticatorSMSChallengeResponseRequest struct { + Component *string `json:"component,omitempty"` + Code *string `json:"code,omitempty"` + PhoneNumber *string `json:"phone_number,omitempty"` + AdditionalProperties map[string]interface{} +} + +type _AuthenticatorSMSChallengeResponseRequest AuthenticatorSMSChallengeResponseRequest + +// NewAuthenticatorSMSChallengeResponseRequest instantiates a new AuthenticatorSMSChallengeResponseRequest object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewAuthenticatorSMSChallengeResponseRequest() *AuthenticatorSMSChallengeResponseRequest { + this := AuthenticatorSMSChallengeResponseRequest{} + var component string = "ak-stage-authenticator-sms" + this.Component = &component + return &this +} + +// NewAuthenticatorSMSChallengeResponseRequestWithDefaults instantiates a new AuthenticatorSMSChallengeResponseRequest object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewAuthenticatorSMSChallengeResponseRequestWithDefaults() *AuthenticatorSMSChallengeResponseRequest { + this := AuthenticatorSMSChallengeResponseRequest{} + var component string = "ak-stage-authenticator-sms" + this.Component = &component + return &this +} + +// GetComponent returns the Component field value if set, zero value otherwise. +func (o *AuthenticatorSMSChallengeResponseRequest) GetComponent() string { + if o == nil || IsNil(o.Component) { + var ret string + return ret + } + return *o.Component +} + +// GetComponentOk returns a tuple with the Component field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *AuthenticatorSMSChallengeResponseRequest) GetComponentOk() (*string, bool) { + if o == nil || IsNil(o.Component) { + return nil, false + } + return o.Component, true +} + +// HasComponent returns a boolean if a field has been set. +func (o *AuthenticatorSMSChallengeResponseRequest) HasComponent() bool { + if o != nil && !IsNil(o.Component) { + return true + } + + return false +} + +// SetComponent gets a reference to the given string and assigns it to the Component field. +func (o *AuthenticatorSMSChallengeResponseRequest) SetComponent(v string) { + o.Component = &v +} + +// GetCode returns the Code field value if set, zero value otherwise. +func (o *AuthenticatorSMSChallengeResponseRequest) GetCode() string { + if o == nil || IsNil(o.Code) { + var ret string + return ret + } + return *o.Code +} + +// GetCodeOk returns a tuple with the Code field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *AuthenticatorSMSChallengeResponseRequest) GetCodeOk() (*string, bool) { + if o == nil || IsNil(o.Code) { + return nil, false + } + return o.Code, true +} + +// HasCode returns a boolean if a field has been set. +func (o *AuthenticatorSMSChallengeResponseRequest) HasCode() bool { + if o != nil && !IsNil(o.Code) { + return true + } + + return false +} + +// SetCode gets a reference to the given string and assigns it to the Code field. +func (o *AuthenticatorSMSChallengeResponseRequest) SetCode(v string) { + o.Code = &v +} + +// GetPhoneNumber returns the PhoneNumber field value if set, zero value otherwise. +func (o *AuthenticatorSMSChallengeResponseRequest) GetPhoneNumber() string { + if o == nil || IsNil(o.PhoneNumber) { + var ret string + return ret + } + return *o.PhoneNumber +} + +// GetPhoneNumberOk returns a tuple with the PhoneNumber field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *AuthenticatorSMSChallengeResponseRequest) GetPhoneNumberOk() (*string, bool) { + if o == nil || IsNil(o.PhoneNumber) { + return nil, false + } + return o.PhoneNumber, true +} + +// HasPhoneNumber returns a boolean if a field has been set. +func (o *AuthenticatorSMSChallengeResponseRequest) HasPhoneNumber() bool { + if o != nil && !IsNil(o.PhoneNumber) { + return true + } + + return false +} + +// SetPhoneNumber gets a reference to the given string and assigns it to the PhoneNumber field. +func (o *AuthenticatorSMSChallengeResponseRequest) SetPhoneNumber(v string) { + o.PhoneNumber = &v +} + +func (o AuthenticatorSMSChallengeResponseRequest) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o AuthenticatorSMSChallengeResponseRequest) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.Component) { + toSerialize["component"] = o.Component + } + if !IsNil(o.Code) { + toSerialize["code"] = o.Code + } + if !IsNil(o.PhoneNumber) { + toSerialize["phone_number"] = o.PhoneNumber + } + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *AuthenticatorSMSChallengeResponseRequest) UnmarshalJSON(data []byte) (err error) { + varAuthenticatorSMSChallengeResponseRequest := _AuthenticatorSMSChallengeResponseRequest{} + + err = json.Unmarshal(data, &varAuthenticatorSMSChallengeResponseRequest) + + if err != nil { + return err + } + + *o = AuthenticatorSMSChallengeResponseRequest(varAuthenticatorSMSChallengeResponseRequest) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "component") + delete(additionalProperties, "code") + delete(additionalProperties, "phone_number") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableAuthenticatorSMSChallengeResponseRequest struct { + value *AuthenticatorSMSChallengeResponseRequest + isSet bool +} + +func (v NullableAuthenticatorSMSChallengeResponseRequest) Get() *AuthenticatorSMSChallengeResponseRequest { + return v.value +} + +func (v *NullableAuthenticatorSMSChallengeResponseRequest) Set(val *AuthenticatorSMSChallengeResponseRequest) { + v.value = val + v.isSet = true +} + +func (v NullableAuthenticatorSMSChallengeResponseRequest) IsSet() bool { + return v.isSet +} + +func (v *NullableAuthenticatorSMSChallengeResponseRequest) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableAuthenticatorSMSChallengeResponseRequest(val *AuthenticatorSMSChallengeResponseRequest) *NullableAuthenticatorSMSChallengeResponseRequest { + return &NullableAuthenticatorSMSChallengeResponseRequest{value: val, isSet: true} +} + +func (v NullableAuthenticatorSMSChallengeResponseRequest) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableAuthenticatorSMSChallengeResponseRequest) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_authenticator_static_challenge.go b/packages/client-go/model_authenticator_static_challenge.go new file mode 100644 index 0000000000..d8d732cbd5 --- /dev/null +++ b/packages/client-go/model_authenticator_static_challenge.go @@ -0,0 +1,340 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// checks if the AuthenticatorStaticChallenge type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &AuthenticatorStaticChallenge{} + +// AuthenticatorStaticChallenge Static authenticator challenge +type AuthenticatorStaticChallenge struct { + FlowInfo *ContextualFlowInfo `json:"flow_info,omitempty"` + Component *string `json:"component,omitempty"` + ResponseErrors *map[string][]ErrorDetail `json:"response_errors,omitempty"` + PendingUser string `json:"pending_user"` + PendingUserAvatar string `json:"pending_user_avatar"` + Codes []string `json:"codes"` + AdditionalProperties map[string]interface{} +} + +type _AuthenticatorStaticChallenge AuthenticatorStaticChallenge + +// NewAuthenticatorStaticChallenge instantiates a new AuthenticatorStaticChallenge object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewAuthenticatorStaticChallenge(pendingUser string, pendingUserAvatar string, codes []string) *AuthenticatorStaticChallenge { + this := AuthenticatorStaticChallenge{} + var component string = "ak-stage-authenticator-static" + this.Component = &component + this.PendingUser = pendingUser + this.PendingUserAvatar = pendingUserAvatar + this.Codes = codes + return &this +} + +// NewAuthenticatorStaticChallengeWithDefaults instantiates a new AuthenticatorStaticChallenge object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewAuthenticatorStaticChallengeWithDefaults() *AuthenticatorStaticChallenge { + this := AuthenticatorStaticChallenge{} + var component string = "ak-stage-authenticator-static" + this.Component = &component + return &this +} + +// GetFlowInfo returns the FlowInfo field value if set, zero value otherwise. +func (o *AuthenticatorStaticChallenge) GetFlowInfo() ContextualFlowInfo { + if o == nil || IsNil(o.FlowInfo) { + var ret ContextualFlowInfo + return ret + } + return *o.FlowInfo +} + +// GetFlowInfoOk returns a tuple with the FlowInfo field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *AuthenticatorStaticChallenge) GetFlowInfoOk() (*ContextualFlowInfo, bool) { + if o == nil || IsNil(o.FlowInfo) { + return nil, false + } + return o.FlowInfo, true +} + +// HasFlowInfo returns a boolean if a field has been set. +func (o *AuthenticatorStaticChallenge) HasFlowInfo() bool { + if o != nil && !IsNil(o.FlowInfo) { + return true + } + + return false +} + +// SetFlowInfo gets a reference to the given ContextualFlowInfo and assigns it to the FlowInfo field. +func (o *AuthenticatorStaticChallenge) SetFlowInfo(v ContextualFlowInfo) { + o.FlowInfo = &v +} + +// GetComponent returns the Component field value if set, zero value otherwise. +func (o *AuthenticatorStaticChallenge) GetComponent() string { + if o == nil || IsNil(o.Component) { + var ret string + return ret + } + return *o.Component +} + +// GetComponentOk returns a tuple with the Component field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *AuthenticatorStaticChallenge) GetComponentOk() (*string, bool) { + if o == nil || IsNil(o.Component) { + return nil, false + } + return o.Component, true +} + +// HasComponent returns a boolean if a field has been set. +func (o *AuthenticatorStaticChallenge) HasComponent() bool { + if o != nil && !IsNil(o.Component) { + return true + } + + return false +} + +// SetComponent gets a reference to the given string and assigns it to the Component field. +func (o *AuthenticatorStaticChallenge) SetComponent(v string) { + o.Component = &v +} + +// GetResponseErrors returns the ResponseErrors field value if set, zero value otherwise. +func (o *AuthenticatorStaticChallenge) GetResponseErrors() map[string][]ErrorDetail { + if o == nil || IsNil(o.ResponseErrors) { + var ret map[string][]ErrorDetail + return ret + } + return *o.ResponseErrors +} + +// GetResponseErrorsOk returns a tuple with the ResponseErrors field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *AuthenticatorStaticChallenge) GetResponseErrorsOk() (*map[string][]ErrorDetail, bool) { + if o == nil || IsNil(o.ResponseErrors) { + return nil, false + } + return o.ResponseErrors, true +} + +// HasResponseErrors returns a boolean if a field has been set. +func (o *AuthenticatorStaticChallenge) HasResponseErrors() bool { + if o != nil && !IsNil(o.ResponseErrors) { + return true + } + + return false +} + +// SetResponseErrors gets a reference to the given map[string][]ErrorDetail and assigns it to the ResponseErrors field. +func (o *AuthenticatorStaticChallenge) SetResponseErrors(v map[string][]ErrorDetail) { + o.ResponseErrors = &v +} + +// GetPendingUser returns the PendingUser field value +func (o *AuthenticatorStaticChallenge) GetPendingUser() string { + if o == nil { + var ret string + return ret + } + + return o.PendingUser +} + +// GetPendingUserOk returns a tuple with the PendingUser field value +// and a boolean to check if the value has been set. +func (o *AuthenticatorStaticChallenge) GetPendingUserOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.PendingUser, true +} + +// SetPendingUser sets field value +func (o *AuthenticatorStaticChallenge) SetPendingUser(v string) { + o.PendingUser = v +} + +// GetPendingUserAvatar returns the PendingUserAvatar field value +func (o *AuthenticatorStaticChallenge) GetPendingUserAvatar() string { + if o == nil { + var ret string + return ret + } + + return o.PendingUserAvatar +} + +// GetPendingUserAvatarOk returns a tuple with the PendingUserAvatar field value +// and a boolean to check if the value has been set. +func (o *AuthenticatorStaticChallenge) GetPendingUserAvatarOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.PendingUserAvatar, true +} + +// SetPendingUserAvatar sets field value +func (o *AuthenticatorStaticChallenge) SetPendingUserAvatar(v string) { + o.PendingUserAvatar = v +} + +// GetCodes returns the Codes field value +func (o *AuthenticatorStaticChallenge) GetCodes() []string { + if o == nil { + var ret []string + return ret + } + + return o.Codes +} + +// GetCodesOk returns a tuple with the Codes field value +// and a boolean to check if the value has been set. +func (o *AuthenticatorStaticChallenge) GetCodesOk() ([]string, bool) { + if o == nil { + return nil, false + } + return o.Codes, true +} + +// SetCodes sets field value +func (o *AuthenticatorStaticChallenge) SetCodes(v []string) { + o.Codes = v +} + +func (o AuthenticatorStaticChallenge) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o AuthenticatorStaticChallenge) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.FlowInfo) { + toSerialize["flow_info"] = o.FlowInfo + } + if !IsNil(o.Component) { + toSerialize["component"] = o.Component + } + if !IsNil(o.ResponseErrors) { + toSerialize["response_errors"] = o.ResponseErrors + } + toSerialize["pending_user"] = o.PendingUser + toSerialize["pending_user_avatar"] = o.PendingUserAvatar + toSerialize["codes"] = o.Codes + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *AuthenticatorStaticChallenge) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "pending_user", + "pending_user_avatar", + "codes", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varAuthenticatorStaticChallenge := _AuthenticatorStaticChallenge{} + + err = json.Unmarshal(data, &varAuthenticatorStaticChallenge) + + if err != nil { + return err + } + + *o = AuthenticatorStaticChallenge(varAuthenticatorStaticChallenge) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "flow_info") + delete(additionalProperties, "component") + delete(additionalProperties, "response_errors") + delete(additionalProperties, "pending_user") + delete(additionalProperties, "pending_user_avatar") + delete(additionalProperties, "codes") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableAuthenticatorStaticChallenge struct { + value *AuthenticatorStaticChallenge + isSet bool +} + +func (v NullableAuthenticatorStaticChallenge) Get() *AuthenticatorStaticChallenge { + return v.value +} + +func (v *NullableAuthenticatorStaticChallenge) Set(val *AuthenticatorStaticChallenge) { + v.value = val + v.isSet = true +} + +func (v NullableAuthenticatorStaticChallenge) IsSet() bool { + return v.isSet +} + +func (v *NullableAuthenticatorStaticChallenge) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableAuthenticatorStaticChallenge(val *AuthenticatorStaticChallenge) *NullableAuthenticatorStaticChallenge { + return &NullableAuthenticatorStaticChallenge{value: val, isSet: true} +} + +func (v NullableAuthenticatorStaticChallenge) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableAuthenticatorStaticChallenge) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_authenticator_static_challenge_response_request.go b/packages/client-go/model_authenticator_static_challenge_response_request.go new file mode 100644 index 0000000000..d20c7edd67 --- /dev/null +++ b/packages/client-go/model_authenticator_static_challenge_response_request.go @@ -0,0 +1,158 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" +) + +// checks if the AuthenticatorStaticChallengeResponseRequest type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &AuthenticatorStaticChallengeResponseRequest{} + +// AuthenticatorStaticChallengeResponseRequest Pseudo class for static response +type AuthenticatorStaticChallengeResponseRequest struct { + Component *string `json:"component,omitempty"` + AdditionalProperties map[string]interface{} +} + +type _AuthenticatorStaticChallengeResponseRequest AuthenticatorStaticChallengeResponseRequest + +// NewAuthenticatorStaticChallengeResponseRequest instantiates a new AuthenticatorStaticChallengeResponseRequest object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewAuthenticatorStaticChallengeResponseRequest() *AuthenticatorStaticChallengeResponseRequest { + this := AuthenticatorStaticChallengeResponseRequest{} + var component string = "ak-stage-authenticator-static" + this.Component = &component + return &this +} + +// NewAuthenticatorStaticChallengeResponseRequestWithDefaults instantiates a new AuthenticatorStaticChallengeResponseRequest object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewAuthenticatorStaticChallengeResponseRequestWithDefaults() *AuthenticatorStaticChallengeResponseRequest { + this := AuthenticatorStaticChallengeResponseRequest{} + var component string = "ak-stage-authenticator-static" + this.Component = &component + return &this +} + +// GetComponent returns the Component field value if set, zero value otherwise. +func (o *AuthenticatorStaticChallengeResponseRequest) GetComponent() string { + if o == nil || IsNil(o.Component) { + var ret string + return ret + } + return *o.Component +} + +// GetComponentOk returns a tuple with the Component field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *AuthenticatorStaticChallengeResponseRequest) GetComponentOk() (*string, bool) { + if o == nil || IsNil(o.Component) { + return nil, false + } + return o.Component, true +} + +// HasComponent returns a boolean if a field has been set. +func (o *AuthenticatorStaticChallengeResponseRequest) HasComponent() bool { + if o != nil && !IsNil(o.Component) { + return true + } + + return false +} + +// SetComponent gets a reference to the given string and assigns it to the Component field. +func (o *AuthenticatorStaticChallengeResponseRequest) SetComponent(v string) { + o.Component = &v +} + +func (o AuthenticatorStaticChallengeResponseRequest) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o AuthenticatorStaticChallengeResponseRequest) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.Component) { + toSerialize["component"] = o.Component + } + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *AuthenticatorStaticChallengeResponseRequest) UnmarshalJSON(data []byte) (err error) { + varAuthenticatorStaticChallengeResponseRequest := _AuthenticatorStaticChallengeResponseRequest{} + + err = json.Unmarshal(data, &varAuthenticatorStaticChallengeResponseRequest) + + if err != nil { + return err + } + + *o = AuthenticatorStaticChallengeResponseRequest(varAuthenticatorStaticChallengeResponseRequest) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "component") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableAuthenticatorStaticChallengeResponseRequest struct { + value *AuthenticatorStaticChallengeResponseRequest + isSet bool +} + +func (v NullableAuthenticatorStaticChallengeResponseRequest) Get() *AuthenticatorStaticChallengeResponseRequest { + return v.value +} + +func (v *NullableAuthenticatorStaticChallengeResponseRequest) Set(val *AuthenticatorStaticChallengeResponseRequest) { + v.value = val + v.isSet = true +} + +func (v NullableAuthenticatorStaticChallengeResponseRequest) IsSet() bool { + return v.isSet +} + +func (v *NullableAuthenticatorStaticChallengeResponseRequest) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableAuthenticatorStaticChallengeResponseRequest(val *AuthenticatorStaticChallengeResponseRequest) *NullableAuthenticatorStaticChallengeResponseRequest { + return &NullableAuthenticatorStaticChallengeResponseRequest{value: val, isSet: true} +} + +func (v NullableAuthenticatorStaticChallengeResponseRequest) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableAuthenticatorStaticChallengeResponseRequest) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_authenticator_totp_challenge.go b/packages/client-go/model_authenticator_totp_challenge.go new file mode 100644 index 0000000000..72fbbc5cd4 --- /dev/null +++ b/packages/client-go/model_authenticator_totp_challenge.go @@ -0,0 +1,340 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// checks if the AuthenticatorTOTPChallenge type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &AuthenticatorTOTPChallenge{} + +// AuthenticatorTOTPChallenge TOTP Setup challenge +type AuthenticatorTOTPChallenge struct { + FlowInfo *ContextualFlowInfo `json:"flow_info,omitempty"` + Component *string `json:"component,omitempty"` + ResponseErrors *map[string][]ErrorDetail `json:"response_errors,omitempty"` + PendingUser string `json:"pending_user"` + PendingUserAvatar string `json:"pending_user_avatar"` + ConfigUrl string `json:"config_url"` + AdditionalProperties map[string]interface{} +} + +type _AuthenticatorTOTPChallenge AuthenticatorTOTPChallenge + +// NewAuthenticatorTOTPChallenge instantiates a new AuthenticatorTOTPChallenge object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewAuthenticatorTOTPChallenge(pendingUser string, pendingUserAvatar string, configUrl string) *AuthenticatorTOTPChallenge { + this := AuthenticatorTOTPChallenge{} + var component string = "ak-stage-authenticator-totp" + this.Component = &component + this.PendingUser = pendingUser + this.PendingUserAvatar = pendingUserAvatar + this.ConfigUrl = configUrl + return &this +} + +// NewAuthenticatorTOTPChallengeWithDefaults instantiates a new AuthenticatorTOTPChallenge object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewAuthenticatorTOTPChallengeWithDefaults() *AuthenticatorTOTPChallenge { + this := AuthenticatorTOTPChallenge{} + var component string = "ak-stage-authenticator-totp" + this.Component = &component + return &this +} + +// GetFlowInfo returns the FlowInfo field value if set, zero value otherwise. +func (o *AuthenticatorTOTPChallenge) GetFlowInfo() ContextualFlowInfo { + if o == nil || IsNil(o.FlowInfo) { + var ret ContextualFlowInfo + return ret + } + return *o.FlowInfo +} + +// GetFlowInfoOk returns a tuple with the FlowInfo field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *AuthenticatorTOTPChallenge) GetFlowInfoOk() (*ContextualFlowInfo, bool) { + if o == nil || IsNil(o.FlowInfo) { + return nil, false + } + return o.FlowInfo, true +} + +// HasFlowInfo returns a boolean if a field has been set. +func (o *AuthenticatorTOTPChallenge) HasFlowInfo() bool { + if o != nil && !IsNil(o.FlowInfo) { + return true + } + + return false +} + +// SetFlowInfo gets a reference to the given ContextualFlowInfo and assigns it to the FlowInfo field. +func (o *AuthenticatorTOTPChallenge) SetFlowInfo(v ContextualFlowInfo) { + o.FlowInfo = &v +} + +// GetComponent returns the Component field value if set, zero value otherwise. +func (o *AuthenticatorTOTPChallenge) GetComponent() string { + if o == nil || IsNil(o.Component) { + var ret string + return ret + } + return *o.Component +} + +// GetComponentOk returns a tuple with the Component field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *AuthenticatorTOTPChallenge) GetComponentOk() (*string, bool) { + if o == nil || IsNil(o.Component) { + return nil, false + } + return o.Component, true +} + +// HasComponent returns a boolean if a field has been set. +func (o *AuthenticatorTOTPChallenge) HasComponent() bool { + if o != nil && !IsNil(o.Component) { + return true + } + + return false +} + +// SetComponent gets a reference to the given string and assigns it to the Component field. +func (o *AuthenticatorTOTPChallenge) SetComponent(v string) { + o.Component = &v +} + +// GetResponseErrors returns the ResponseErrors field value if set, zero value otherwise. +func (o *AuthenticatorTOTPChallenge) GetResponseErrors() map[string][]ErrorDetail { + if o == nil || IsNil(o.ResponseErrors) { + var ret map[string][]ErrorDetail + return ret + } + return *o.ResponseErrors +} + +// GetResponseErrorsOk returns a tuple with the ResponseErrors field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *AuthenticatorTOTPChallenge) GetResponseErrorsOk() (*map[string][]ErrorDetail, bool) { + if o == nil || IsNil(o.ResponseErrors) { + return nil, false + } + return o.ResponseErrors, true +} + +// HasResponseErrors returns a boolean if a field has been set. +func (o *AuthenticatorTOTPChallenge) HasResponseErrors() bool { + if o != nil && !IsNil(o.ResponseErrors) { + return true + } + + return false +} + +// SetResponseErrors gets a reference to the given map[string][]ErrorDetail and assigns it to the ResponseErrors field. +func (o *AuthenticatorTOTPChallenge) SetResponseErrors(v map[string][]ErrorDetail) { + o.ResponseErrors = &v +} + +// GetPendingUser returns the PendingUser field value +func (o *AuthenticatorTOTPChallenge) GetPendingUser() string { + if o == nil { + var ret string + return ret + } + + return o.PendingUser +} + +// GetPendingUserOk returns a tuple with the PendingUser field value +// and a boolean to check if the value has been set. +func (o *AuthenticatorTOTPChallenge) GetPendingUserOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.PendingUser, true +} + +// SetPendingUser sets field value +func (o *AuthenticatorTOTPChallenge) SetPendingUser(v string) { + o.PendingUser = v +} + +// GetPendingUserAvatar returns the PendingUserAvatar field value +func (o *AuthenticatorTOTPChallenge) GetPendingUserAvatar() string { + if o == nil { + var ret string + return ret + } + + return o.PendingUserAvatar +} + +// GetPendingUserAvatarOk returns a tuple with the PendingUserAvatar field value +// and a boolean to check if the value has been set. +func (o *AuthenticatorTOTPChallenge) GetPendingUserAvatarOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.PendingUserAvatar, true +} + +// SetPendingUserAvatar sets field value +func (o *AuthenticatorTOTPChallenge) SetPendingUserAvatar(v string) { + o.PendingUserAvatar = v +} + +// GetConfigUrl returns the ConfigUrl field value +func (o *AuthenticatorTOTPChallenge) GetConfigUrl() string { + if o == nil { + var ret string + return ret + } + + return o.ConfigUrl +} + +// GetConfigUrlOk returns a tuple with the ConfigUrl field value +// and a boolean to check if the value has been set. +func (o *AuthenticatorTOTPChallenge) GetConfigUrlOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.ConfigUrl, true +} + +// SetConfigUrl sets field value +func (o *AuthenticatorTOTPChallenge) SetConfigUrl(v string) { + o.ConfigUrl = v +} + +func (o AuthenticatorTOTPChallenge) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o AuthenticatorTOTPChallenge) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.FlowInfo) { + toSerialize["flow_info"] = o.FlowInfo + } + if !IsNil(o.Component) { + toSerialize["component"] = o.Component + } + if !IsNil(o.ResponseErrors) { + toSerialize["response_errors"] = o.ResponseErrors + } + toSerialize["pending_user"] = o.PendingUser + toSerialize["pending_user_avatar"] = o.PendingUserAvatar + toSerialize["config_url"] = o.ConfigUrl + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *AuthenticatorTOTPChallenge) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "pending_user", + "pending_user_avatar", + "config_url", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varAuthenticatorTOTPChallenge := _AuthenticatorTOTPChallenge{} + + err = json.Unmarshal(data, &varAuthenticatorTOTPChallenge) + + if err != nil { + return err + } + + *o = AuthenticatorTOTPChallenge(varAuthenticatorTOTPChallenge) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "flow_info") + delete(additionalProperties, "component") + delete(additionalProperties, "response_errors") + delete(additionalProperties, "pending_user") + delete(additionalProperties, "pending_user_avatar") + delete(additionalProperties, "config_url") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableAuthenticatorTOTPChallenge struct { + value *AuthenticatorTOTPChallenge + isSet bool +} + +func (v NullableAuthenticatorTOTPChallenge) Get() *AuthenticatorTOTPChallenge { + return v.value +} + +func (v *NullableAuthenticatorTOTPChallenge) Set(val *AuthenticatorTOTPChallenge) { + v.value = val + v.isSet = true +} + +func (v NullableAuthenticatorTOTPChallenge) IsSet() bool { + return v.isSet +} + +func (v *NullableAuthenticatorTOTPChallenge) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableAuthenticatorTOTPChallenge(val *AuthenticatorTOTPChallenge) *NullableAuthenticatorTOTPChallenge { + return &NullableAuthenticatorTOTPChallenge{value: val, isSet: true} +} + +func (v NullableAuthenticatorTOTPChallenge) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableAuthenticatorTOTPChallenge) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_authenticator_totp_challenge_response_request.go b/packages/client-go/model_authenticator_totp_challenge_response_request.go new file mode 100644 index 0000000000..17d65b0c63 --- /dev/null +++ b/packages/client-go/model_authenticator_totp_challenge_response_request.go @@ -0,0 +1,208 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// checks if the AuthenticatorTOTPChallengeResponseRequest type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &AuthenticatorTOTPChallengeResponseRequest{} + +// AuthenticatorTOTPChallengeResponseRequest TOTP Challenge response, device is set by get_response_instance +type AuthenticatorTOTPChallengeResponseRequest struct { + Component *string `json:"component,omitempty"` + Code string `json:"code"` + AdditionalProperties map[string]interface{} +} + +type _AuthenticatorTOTPChallengeResponseRequest AuthenticatorTOTPChallengeResponseRequest + +// NewAuthenticatorTOTPChallengeResponseRequest instantiates a new AuthenticatorTOTPChallengeResponseRequest object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewAuthenticatorTOTPChallengeResponseRequest(code string) *AuthenticatorTOTPChallengeResponseRequest { + this := AuthenticatorTOTPChallengeResponseRequest{} + var component string = "ak-stage-authenticator-totp" + this.Component = &component + this.Code = code + return &this +} + +// NewAuthenticatorTOTPChallengeResponseRequestWithDefaults instantiates a new AuthenticatorTOTPChallengeResponseRequest object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewAuthenticatorTOTPChallengeResponseRequestWithDefaults() *AuthenticatorTOTPChallengeResponseRequest { + this := AuthenticatorTOTPChallengeResponseRequest{} + var component string = "ak-stage-authenticator-totp" + this.Component = &component + return &this +} + +// GetComponent returns the Component field value if set, zero value otherwise. +func (o *AuthenticatorTOTPChallengeResponseRequest) GetComponent() string { + if o == nil || IsNil(o.Component) { + var ret string + return ret + } + return *o.Component +} + +// GetComponentOk returns a tuple with the Component field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *AuthenticatorTOTPChallengeResponseRequest) GetComponentOk() (*string, bool) { + if o == nil || IsNil(o.Component) { + return nil, false + } + return o.Component, true +} + +// HasComponent returns a boolean if a field has been set. +func (o *AuthenticatorTOTPChallengeResponseRequest) HasComponent() bool { + if o != nil && !IsNil(o.Component) { + return true + } + + return false +} + +// SetComponent gets a reference to the given string and assigns it to the Component field. +func (o *AuthenticatorTOTPChallengeResponseRequest) SetComponent(v string) { + o.Component = &v +} + +// GetCode returns the Code field value +func (o *AuthenticatorTOTPChallengeResponseRequest) GetCode() string { + if o == nil { + var ret string + return ret + } + + return o.Code +} + +// GetCodeOk returns a tuple with the Code field value +// and a boolean to check if the value has been set. +func (o *AuthenticatorTOTPChallengeResponseRequest) GetCodeOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Code, true +} + +// SetCode sets field value +func (o *AuthenticatorTOTPChallengeResponseRequest) SetCode(v string) { + o.Code = v +} + +func (o AuthenticatorTOTPChallengeResponseRequest) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o AuthenticatorTOTPChallengeResponseRequest) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.Component) { + toSerialize["component"] = o.Component + } + toSerialize["code"] = o.Code + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *AuthenticatorTOTPChallengeResponseRequest) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "code", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varAuthenticatorTOTPChallengeResponseRequest := _AuthenticatorTOTPChallengeResponseRequest{} + + err = json.Unmarshal(data, &varAuthenticatorTOTPChallengeResponseRequest) + + if err != nil { + return err + } + + *o = AuthenticatorTOTPChallengeResponseRequest(varAuthenticatorTOTPChallengeResponseRequest) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "component") + delete(additionalProperties, "code") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableAuthenticatorTOTPChallengeResponseRequest struct { + value *AuthenticatorTOTPChallengeResponseRequest + isSet bool +} + +func (v NullableAuthenticatorTOTPChallengeResponseRequest) Get() *AuthenticatorTOTPChallengeResponseRequest { + return v.value +} + +func (v *NullableAuthenticatorTOTPChallengeResponseRequest) Set(val *AuthenticatorTOTPChallengeResponseRequest) { + v.value = val + v.isSet = true +} + +func (v NullableAuthenticatorTOTPChallengeResponseRequest) IsSet() bool { + return v.isSet +} + +func (v *NullableAuthenticatorTOTPChallengeResponseRequest) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableAuthenticatorTOTPChallengeResponseRequest(val *AuthenticatorTOTPChallengeResponseRequest) *NullableAuthenticatorTOTPChallengeResponseRequest { + return &NullableAuthenticatorTOTPChallengeResponseRequest{value: val, isSet: true} +} + +func (v NullableAuthenticatorTOTPChallengeResponseRequest) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableAuthenticatorTOTPChallengeResponseRequest) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_authenticator_validation_challenge.go b/packages/client-go/model_authenticator_validation_challenge.go new file mode 100644 index 0000000000..e18fe73378 --- /dev/null +++ b/packages/client-go/model_authenticator_validation_challenge.go @@ -0,0 +1,369 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// checks if the AuthenticatorValidationChallenge type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &AuthenticatorValidationChallenge{} + +// AuthenticatorValidationChallenge Authenticator challenge +type AuthenticatorValidationChallenge struct { + FlowInfo *ContextualFlowInfo `json:"flow_info,omitempty"` + Component *string `json:"component,omitempty"` + ResponseErrors *map[string][]ErrorDetail `json:"response_errors,omitempty"` + PendingUser string `json:"pending_user"` + PendingUserAvatar string `json:"pending_user_avatar"` + DeviceChallenges []DeviceChallenge `json:"device_challenges"` + ConfigurationStages []SelectableStage `json:"configuration_stages"` + AdditionalProperties map[string]interface{} +} + +type _AuthenticatorValidationChallenge AuthenticatorValidationChallenge + +// NewAuthenticatorValidationChallenge instantiates a new AuthenticatorValidationChallenge object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewAuthenticatorValidationChallenge(pendingUser string, pendingUserAvatar string, deviceChallenges []DeviceChallenge, configurationStages []SelectableStage) *AuthenticatorValidationChallenge { + this := AuthenticatorValidationChallenge{} + var component string = "ak-stage-authenticator-validate" + this.Component = &component + this.PendingUser = pendingUser + this.PendingUserAvatar = pendingUserAvatar + this.DeviceChallenges = deviceChallenges + this.ConfigurationStages = configurationStages + return &this +} + +// NewAuthenticatorValidationChallengeWithDefaults instantiates a new AuthenticatorValidationChallenge object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewAuthenticatorValidationChallengeWithDefaults() *AuthenticatorValidationChallenge { + this := AuthenticatorValidationChallenge{} + var component string = "ak-stage-authenticator-validate" + this.Component = &component + return &this +} + +// GetFlowInfo returns the FlowInfo field value if set, zero value otherwise. +func (o *AuthenticatorValidationChallenge) GetFlowInfo() ContextualFlowInfo { + if o == nil || IsNil(o.FlowInfo) { + var ret ContextualFlowInfo + return ret + } + return *o.FlowInfo +} + +// GetFlowInfoOk returns a tuple with the FlowInfo field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *AuthenticatorValidationChallenge) GetFlowInfoOk() (*ContextualFlowInfo, bool) { + if o == nil || IsNil(o.FlowInfo) { + return nil, false + } + return o.FlowInfo, true +} + +// HasFlowInfo returns a boolean if a field has been set. +func (o *AuthenticatorValidationChallenge) HasFlowInfo() bool { + if o != nil && !IsNil(o.FlowInfo) { + return true + } + + return false +} + +// SetFlowInfo gets a reference to the given ContextualFlowInfo and assigns it to the FlowInfo field. +func (o *AuthenticatorValidationChallenge) SetFlowInfo(v ContextualFlowInfo) { + o.FlowInfo = &v +} + +// GetComponent returns the Component field value if set, zero value otherwise. +func (o *AuthenticatorValidationChallenge) GetComponent() string { + if o == nil || IsNil(o.Component) { + var ret string + return ret + } + return *o.Component +} + +// GetComponentOk returns a tuple with the Component field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *AuthenticatorValidationChallenge) GetComponentOk() (*string, bool) { + if o == nil || IsNil(o.Component) { + return nil, false + } + return o.Component, true +} + +// HasComponent returns a boolean if a field has been set. +func (o *AuthenticatorValidationChallenge) HasComponent() bool { + if o != nil && !IsNil(o.Component) { + return true + } + + return false +} + +// SetComponent gets a reference to the given string and assigns it to the Component field. +func (o *AuthenticatorValidationChallenge) SetComponent(v string) { + o.Component = &v +} + +// GetResponseErrors returns the ResponseErrors field value if set, zero value otherwise. +func (o *AuthenticatorValidationChallenge) GetResponseErrors() map[string][]ErrorDetail { + if o == nil || IsNil(o.ResponseErrors) { + var ret map[string][]ErrorDetail + return ret + } + return *o.ResponseErrors +} + +// GetResponseErrorsOk returns a tuple with the ResponseErrors field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *AuthenticatorValidationChallenge) GetResponseErrorsOk() (*map[string][]ErrorDetail, bool) { + if o == nil || IsNil(o.ResponseErrors) { + return nil, false + } + return o.ResponseErrors, true +} + +// HasResponseErrors returns a boolean if a field has been set. +func (o *AuthenticatorValidationChallenge) HasResponseErrors() bool { + if o != nil && !IsNil(o.ResponseErrors) { + return true + } + + return false +} + +// SetResponseErrors gets a reference to the given map[string][]ErrorDetail and assigns it to the ResponseErrors field. +func (o *AuthenticatorValidationChallenge) SetResponseErrors(v map[string][]ErrorDetail) { + o.ResponseErrors = &v +} + +// GetPendingUser returns the PendingUser field value +func (o *AuthenticatorValidationChallenge) GetPendingUser() string { + if o == nil { + var ret string + return ret + } + + return o.PendingUser +} + +// GetPendingUserOk returns a tuple with the PendingUser field value +// and a boolean to check if the value has been set. +func (o *AuthenticatorValidationChallenge) GetPendingUserOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.PendingUser, true +} + +// SetPendingUser sets field value +func (o *AuthenticatorValidationChallenge) SetPendingUser(v string) { + o.PendingUser = v +} + +// GetPendingUserAvatar returns the PendingUserAvatar field value +func (o *AuthenticatorValidationChallenge) GetPendingUserAvatar() string { + if o == nil { + var ret string + return ret + } + + return o.PendingUserAvatar +} + +// GetPendingUserAvatarOk returns a tuple with the PendingUserAvatar field value +// and a boolean to check if the value has been set. +func (o *AuthenticatorValidationChallenge) GetPendingUserAvatarOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.PendingUserAvatar, true +} + +// SetPendingUserAvatar sets field value +func (o *AuthenticatorValidationChallenge) SetPendingUserAvatar(v string) { + o.PendingUserAvatar = v +} + +// GetDeviceChallenges returns the DeviceChallenges field value +func (o *AuthenticatorValidationChallenge) GetDeviceChallenges() []DeviceChallenge { + if o == nil { + var ret []DeviceChallenge + return ret + } + + return o.DeviceChallenges +} + +// GetDeviceChallengesOk returns a tuple with the DeviceChallenges field value +// and a boolean to check if the value has been set. +func (o *AuthenticatorValidationChallenge) GetDeviceChallengesOk() ([]DeviceChallenge, bool) { + if o == nil { + return nil, false + } + return o.DeviceChallenges, true +} + +// SetDeviceChallenges sets field value +func (o *AuthenticatorValidationChallenge) SetDeviceChallenges(v []DeviceChallenge) { + o.DeviceChallenges = v +} + +// GetConfigurationStages returns the ConfigurationStages field value +func (o *AuthenticatorValidationChallenge) GetConfigurationStages() []SelectableStage { + if o == nil { + var ret []SelectableStage + return ret + } + + return o.ConfigurationStages +} + +// GetConfigurationStagesOk returns a tuple with the ConfigurationStages field value +// and a boolean to check if the value has been set. +func (o *AuthenticatorValidationChallenge) GetConfigurationStagesOk() ([]SelectableStage, bool) { + if o == nil { + return nil, false + } + return o.ConfigurationStages, true +} + +// SetConfigurationStages sets field value +func (o *AuthenticatorValidationChallenge) SetConfigurationStages(v []SelectableStage) { + o.ConfigurationStages = v +} + +func (o AuthenticatorValidationChallenge) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o AuthenticatorValidationChallenge) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.FlowInfo) { + toSerialize["flow_info"] = o.FlowInfo + } + if !IsNil(o.Component) { + toSerialize["component"] = o.Component + } + if !IsNil(o.ResponseErrors) { + toSerialize["response_errors"] = o.ResponseErrors + } + toSerialize["pending_user"] = o.PendingUser + toSerialize["pending_user_avatar"] = o.PendingUserAvatar + toSerialize["device_challenges"] = o.DeviceChallenges + toSerialize["configuration_stages"] = o.ConfigurationStages + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *AuthenticatorValidationChallenge) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "pending_user", + "pending_user_avatar", + "device_challenges", + "configuration_stages", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varAuthenticatorValidationChallenge := _AuthenticatorValidationChallenge{} + + err = json.Unmarshal(data, &varAuthenticatorValidationChallenge) + + if err != nil { + return err + } + + *o = AuthenticatorValidationChallenge(varAuthenticatorValidationChallenge) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "flow_info") + delete(additionalProperties, "component") + delete(additionalProperties, "response_errors") + delete(additionalProperties, "pending_user") + delete(additionalProperties, "pending_user_avatar") + delete(additionalProperties, "device_challenges") + delete(additionalProperties, "configuration_stages") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableAuthenticatorValidationChallenge struct { + value *AuthenticatorValidationChallenge + isSet bool +} + +func (v NullableAuthenticatorValidationChallenge) Get() *AuthenticatorValidationChallenge { + return v.value +} + +func (v *NullableAuthenticatorValidationChallenge) Set(val *AuthenticatorValidationChallenge) { + v.value = val + v.isSet = true +} + +func (v NullableAuthenticatorValidationChallenge) IsSet() bool { + return v.isSet +} + +func (v *NullableAuthenticatorValidationChallenge) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableAuthenticatorValidationChallenge(val *AuthenticatorValidationChallenge) *NullableAuthenticatorValidationChallenge { + return &NullableAuthenticatorValidationChallenge{value: val, isSet: true} +} + +func (v NullableAuthenticatorValidationChallenge) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableAuthenticatorValidationChallenge) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_authenticator_validation_challenge_response_request.go b/packages/client-go/model_authenticator_validation_challenge_response_request.go new file mode 100644 index 0000000000..43c4ea99eb --- /dev/null +++ b/packages/client-go/model_authenticator_validation_challenge_response_request.go @@ -0,0 +1,343 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" +) + +// checks if the AuthenticatorValidationChallengeResponseRequest type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &AuthenticatorValidationChallengeResponseRequest{} + +// AuthenticatorValidationChallengeResponseRequest Challenge used for Code-based and WebAuthn authenticators +type AuthenticatorValidationChallengeResponseRequest struct { + Component *string `json:"component,omitempty"` + SelectedChallenge *DeviceChallengeRequest `json:"selected_challenge,omitempty"` + SelectedStage *string `json:"selected_stage,omitempty"` + Code *string `json:"code,omitempty"` + Webauthn map[string]interface{} `json:"webauthn,omitempty"` + Duo *int32 `json:"duo,omitempty"` + AdditionalProperties map[string]interface{} +} + +type _AuthenticatorValidationChallengeResponseRequest AuthenticatorValidationChallengeResponseRequest + +// NewAuthenticatorValidationChallengeResponseRequest instantiates a new AuthenticatorValidationChallengeResponseRequest object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewAuthenticatorValidationChallengeResponseRequest() *AuthenticatorValidationChallengeResponseRequest { + this := AuthenticatorValidationChallengeResponseRequest{} + var component string = "ak-stage-authenticator-validate" + this.Component = &component + return &this +} + +// NewAuthenticatorValidationChallengeResponseRequestWithDefaults instantiates a new AuthenticatorValidationChallengeResponseRequest object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewAuthenticatorValidationChallengeResponseRequestWithDefaults() *AuthenticatorValidationChallengeResponseRequest { + this := AuthenticatorValidationChallengeResponseRequest{} + var component string = "ak-stage-authenticator-validate" + this.Component = &component + return &this +} + +// GetComponent returns the Component field value if set, zero value otherwise. +func (o *AuthenticatorValidationChallengeResponseRequest) GetComponent() string { + if o == nil || IsNil(o.Component) { + var ret string + return ret + } + return *o.Component +} + +// GetComponentOk returns a tuple with the Component field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *AuthenticatorValidationChallengeResponseRequest) GetComponentOk() (*string, bool) { + if o == nil || IsNil(o.Component) { + return nil, false + } + return o.Component, true +} + +// HasComponent returns a boolean if a field has been set. +func (o *AuthenticatorValidationChallengeResponseRequest) HasComponent() bool { + if o != nil && !IsNil(o.Component) { + return true + } + + return false +} + +// SetComponent gets a reference to the given string and assigns it to the Component field. +func (o *AuthenticatorValidationChallengeResponseRequest) SetComponent(v string) { + o.Component = &v +} + +// GetSelectedChallenge returns the SelectedChallenge field value if set, zero value otherwise. +func (o *AuthenticatorValidationChallengeResponseRequest) GetSelectedChallenge() DeviceChallengeRequest { + if o == nil || IsNil(o.SelectedChallenge) { + var ret DeviceChallengeRequest + return ret + } + return *o.SelectedChallenge +} + +// GetSelectedChallengeOk returns a tuple with the SelectedChallenge field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *AuthenticatorValidationChallengeResponseRequest) GetSelectedChallengeOk() (*DeviceChallengeRequest, bool) { + if o == nil || IsNil(o.SelectedChallenge) { + return nil, false + } + return o.SelectedChallenge, true +} + +// HasSelectedChallenge returns a boolean if a field has been set. +func (o *AuthenticatorValidationChallengeResponseRequest) HasSelectedChallenge() bool { + if o != nil && !IsNil(o.SelectedChallenge) { + return true + } + + return false +} + +// SetSelectedChallenge gets a reference to the given DeviceChallengeRequest and assigns it to the SelectedChallenge field. +func (o *AuthenticatorValidationChallengeResponseRequest) SetSelectedChallenge(v DeviceChallengeRequest) { + o.SelectedChallenge = &v +} + +// GetSelectedStage returns the SelectedStage field value if set, zero value otherwise. +func (o *AuthenticatorValidationChallengeResponseRequest) GetSelectedStage() string { + if o == nil || IsNil(o.SelectedStage) { + var ret string + return ret + } + return *o.SelectedStage +} + +// GetSelectedStageOk returns a tuple with the SelectedStage field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *AuthenticatorValidationChallengeResponseRequest) GetSelectedStageOk() (*string, bool) { + if o == nil || IsNil(o.SelectedStage) { + return nil, false + } + return o.SelectedStage, true +} + +// HasSelectedStage returns a boolean if a field has been set. +func (o *AuthenticatorValidationChallengeResponseRequest) HasSelectedStage() bool { + if o != nil && !IsNil(o.SelectedStage) { + return true + } + + return false +} + +// SetSelectedStage gets a reference to the given string and assigns it to the SelectedStage field. +func (o *AuthenticatorValidationChallengeResponseRequest) SetSelectedStage(v string) { + o.SelectedStage = &v +} + +// GetCode returns the Code field value if set, zero value otherwise. +func (o *AuthenticatorValidationChallengeResponseRequest) GetCode() string { + if o == nil || IsNil(o.Code) { + var ret string + return ret + } + return *o.Code +} + +// GetCodeOk returns a tuple with the Code field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *AuthenticatorValidationChallengeResponseRequest) GetCodeOk() (*string, bool) { + if o == nil || IsNil(o.Code) { + return nil, false + } + return o.Code, true +} + +// HasCode returns a boolean if a field has been set. +func (o *AuthenticatorValidationChallengeResponseRequest) HasCode() bool { + if o != nil && !IsNil(o.Code) { + return true + } + + return false +} + +// SetCode gets a reference to the given string and assigns it to the Code field. +func (o *AuthenticatorValidationChallengeResponseRequest) SetCode(v string) { + o.Code = &v +} + +// GetWebauthn returns the Webauthn field value if set, zero value otherwise. +func (o *AuthenticatorValidationChallengeResponseRequest) GetWebauthn() map[string]interface{} { + if o == nil || IsNil(o.Webauthn) { + var ret map[string]interface{} + return ret + } + return o.Webauthn +} + +// GetWebauthnOk returns a tuple with the Webauthn field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *AuthenticatorValidationChallengeResponseRequest) GetWebauthnOk() (map[string]interface{}, bool) { + if o == nil || IsNil(o.Webauthn) { + return map[string]interface{}{}, false + } + return o.Webauthn, true +} + +// HasWebauthn returns a boolean if a field has been set. +func (o *AuthenticatorValidationChallengeResponseRequest) HasWebauthn() bool { + if o != nil && !IsNil(o.Webauthn) { + return true + } + + return false +} + +// SetWebauthn gets a reference to the given map[string]interface{} and assigns it to the Webauthn field. +func (o *AuthenticatorValidationChallengeResponseRequest) SetWebauthn(v map[string]interface{}) { + o.Webauthn = v +} + +// GetDuo returns the Duo field value if set, zero value otherwise. +func (o *AuthenticatorValidationChallengeResponseRequest) GetDuo() int32 { + if o == nil || IsNil(o.Duo) { + var ret int32 + return ret + } + return *o.Duo +} + +// GetDuoOk returns a tuple with the Duo field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *AuthenticatorValidationChallengeResponseRequest) GetDuoOk() (*int32, bool) { + if o == nil || IsNil(o.Duo) { + return nil, false + } + return o.Duo, true +} + +// HasDuo returns a boolean if a field has been set. +func (o *AuthenticatorValidationChallengeResponseRequest) HasDuo() bool { + if o != nil && !IsNil(o.Duo) { + return true + } + + return false +} + +// SetDuo gets a reference to the given int32 and assigns it to the Duo field. +func (o *AuthenticatorValidationChallengeResponseRequest) SetDuo(v int32) { + o.Duo = &v +} + +func (o AuthenticatorValidationChallengeResponseRequest) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o AuthenticatorValidationChallengeResponseRequest) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.Component) { + toSerialize["component"] = o.Component + } + if !IsNil(o.SelectedChallenge) { + toSerialize["selected_challenge"] = o.SelectedChallenge + } + if !IsNil(o.SelectedStage) { + toSerialize["selected_stage"] = o.SelectedStage + } + if !IsNil(o.Code) { + toSerialize["code"] = o.Code + } + if !IsNil(o.Webauthn) { + toSerialize["webauthn"] = o.Webauthn + } + if !IsNil(o.Duo) { + toSerialize["duo"] = o.Duo + } + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *AuthenticatorValidationChallengeResponseRequest) UnmarshalJSON(data []byte) (err error) { + varAuthenticatorValidationChallengeResponseRequest := _AuthenticatorValidationChallengeResponseRequest{} + + err = json.Unmarshal(data, &varAuthenticatorValidationChallengeResponseRequest) + + if err != nil { + return err + } + + *o = AuthenticatorValidationChallengeResponseRequest(varAuthenticatorValidationChallengeResponseRequest) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "component") + delete(additionalProperties, "selected_challenge") + delete(additionalProperties, "selected_stage") + delete(additionalProperties, "code") + delete(additionalProperties, "webauthn") + delete(additionalProperties, "duo") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableAuthenticatorValidationChallengeResponseRequest struct { + value *AuthenticatorValidationChallengeResponseRequest + isSet bool +} + +func (v NullableAuthenticatorValidationChallengeResponseRequest) Get() *AuthenticatorValidationChallengeResponseRequest { + return v.value +} + +func (v *NullableAuthenticatorValidationChallengeResponseRequest) Set(val *AuthenticatorValidationChallengeResponseRequest) { + v.value = val + v.isSet = true +} + +func (v NullableAuthenticatorValidationChallengeResponseRequest) IsSet() bool { + return v.isSet +} + +func (v *NullableAuthenticatorValidationChallengeResponseRequest) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableAuthenticatorValidationChallengeResponseRequest(val *AuthenticatorValidationChallengeResponseRequest) *NullableAuthenticatorValidationChallengeResponseRequest { + return &NullableAuthenticatorValidationChallengeResponseRequest{value: val, isSet: true} +} + +func (v NullableAuthenticatorValidationChallengeResponseRequest) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableAuthenticatorValidationChallengeResponseRequest) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_authenticator_web_authn_challenge.go b/packages/client-go/model_authenticator_web_authn_challenge.go new file mode 100644 index 0000000000..b1d8b6852a --- /dev/null +++ b/packages/client-go/model_authenticator_web_authn_challenge.go @@ -0,0 +1,340 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// checks if the AuthenticatorWebAuthnChallenge type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &AuthenticatorWebAuthnChallenge{} + +// AuthenticatorWebAuthnChallenge WebAuthn Challenge +type AuthenticatorWebAuthnChallenge struct { + FlowInfo *ContextualFlowInfo `json:"flow_info,omitempty"` + Component *string `json:"component,omitempty"` + ResponseErrors *map[string][]ErrorDetail `json:"response_errors,omitempty"` + PendingUser string `json:"pending_user"` + PendingUserAvatar string `json:"pending_user_avatar"` + Registration map[string]interface{} `json:"registration"` + AdditionalProperties map[string]interface{} +} + +type _AuthenticatorWebAuthnChallenge AuthenticatorWebAuthnChallenge + +// NewAuthenticatorWebAuthnChallenge instantiates a new AuthenticatorWebAuthnChallenge object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewAuthenticatorWebAuthnChallenge(pendingUser string, pendingUserAvatar string, registration map[string]interface{}) *AuthenticatorWebAuthnChallenge { + this := AuthenticatorWebAuthnChallenge{} + var component string = "ak-stage-authenticator-webauthn" + this.Component = &component + this.PendingUser = pendingUser + this.PendingUserAvatar = pendingUserAvatar + this.Registration = registration + return &this +} + +// NewAuthenticatorWebAuthnChallengeWithDefaults instantiates a new AuthenticatorWebAuthnChallenge object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewAuthenticatorWebAuthnChallengeWithDefaults() *AuthenticatorWebAuthnChallenge { + this := AuthenticatorWebAuthnChallenge{} + var component string = "ak-stage-authenticator-webauthn" + this.Component = &component + return &this +} + +// GetFlowInfo returns the FlowInfo field value if set, zero value otherwise. +func (o *AuthenticatorWebAuthnChallenge) GetFlowInfo() ContextualFlowInfo { + if o == nil || IsNil(o.FlowInfo) { + var ret ContextualFlowInfo + return ret + } + return *o.FlowInfo +} + +// GetFlowInfoOk returns a tuple with the FlowInfo field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *AuthenticatorWebAuthnChallenge) GetFlowInfoOk() (*ContextualFlowInfo, bool) { + if o == nil || IsNil(o.FlowInfo) { + return nil, false + } + return o.FlowInfo, true +} + +// HasFlowInfo returns a boolean if a field has been set. +func (o *AuthenticatorWebAuthnChallenge) HasFlowInfo() bool { + if o != nil && !IsNil(o.FlowInfo) { + return true + } + + return false +} + +// SetFlowInfo gets a reference to the given ContextualFlowInfo and assigns it to the FlowInfo field. +func (o *AuthenticatorWebAuthnChallenge) SetFlowInfo(v ContextualFlowInfo) { + o.FlowInfo = &v +} + +// GetComponent returns the Component field value if set, zero value otherwise. +func (o *AuthenticatorWebAuthnChallenge) GetComponent() string { + if o == nil || IsNil(o.Component) { + var ret string + return ret + } + return *o.Component +} + +// GetComponentOk returns a tuple with the Component field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *AuthenticatorWebAuthnChallenge) GetComponentOk() (*string, bool) { + if o == nil || IsNil(o.Component) { + return nil, false + } + return o.Component, true +} + +// HasComponent returns a boolean if a field has been set. +func (o *AuthenticatorWebAuthnChallenge) HasComponent() bool { + if o != nil && !IsNil(o.Component) { + return true + } + + return false +} + +// SetComponent gets a reference to the given string and assigns it to the Component field. +func (o *AuthenticatorWebAuthnChallenge) SetComponent(v string) { + o.Component = &v +} + +// GetResponseErrors returns the ResponseErrors field value if set, zero value otherwise. +func (o *AuthenticatorWebAuthnChallenge) GetResponseErrors() map[string][]ErrorDetail { + if o == nil || IsNil(o.ResponseErrors) { + var ret map[string][]ErrorDetail + return ret + } + return *o.ResponseErrors +} + +// GetResponseErrorsOk returns a tuple with the ResponseErrors field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *AuthenticatorWebAuthnChallenge) GetResponseErrorsOk() (*map[string][]ErrorDetail, bool) { + if o == nil || IsNil(o.ResponseErrors) { + return nil, false + } + return o.ResponseErrors, true +} + +// HasResponseErrors returns a boolean if a field has been set. +func (o *AuthenticatorWebAuthnChallenge) HasResponseErrors() bool { + if o != nil && !IsNil(o.ResponseErrors) { + return true + } + + return false +} + +// SetResponseErrors gets a reference to the given map[string][]ErrorDetail and assigns it to the ResponseErrors field. +func (o *AuthenticatorWebAuthnChallenge) SetResponseErrors(v map[string][]ErrorDetail) { + o.ResponseErrors = &v +} + +// GetPendingUser returns the PendingUser field value +func (o *AuthenticatorWebAuthnChallenge) GetPendingUser() string { + if o == nil { + var ret string + return ret + } + + return o.PendingUser +} + +// GetPendingUserOk returns a tuple with the PendingUser field value +// and a boolean to check if the value has been set. +func (o *AuthenticatorWebAuthnChallenge) GetPendingUserOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.PendingUser, true +} + +// SetPendingUser sets field value +func (o *AuthenticatorWebAuthnChallenge) SetPendingUser(v string) { + o.PendingUser = v +} + +// GetPendingUserAvatar returns the PendingUserAvatar field value +func (o *AuthenticatorWebAuthnChallenge) GetPendingUserAvatar() string { + if o == nil { + var ret string + return ret + } + + return o.PendingUserAvatar +} + +// GetPendingUserAvatarOk returns a tuple with the PendingUserAvatar field value +// and a boolean to check if the value has been set. +func (o *AuthenticatorWebAuthnChallenge) GetPendingUserAvatarOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.PendingUserAvatar, true +} + +// SetPendingUserAvatar sets field value +func (o *AuthenticatorWebAuthnChallenge) SetPendingUserAvatar(v string) { + o.PendingUserAvatar = v +} + +// GetRegistration returns the Registration field value +func (o *AuthenticatorWebAuthnChallenge) GetRegistration() map[string]interface{} { + if o == nil { + var ret map[string]interface{} + return ret + } + + return o.Registration +} + +// GetRegistrationOk returns a tuple with the Registration field value +// and a boolean to check if the value has been set. +func (o *AuthenticatorWebAuthnChallenge) GetRegistrationOk() (map[string]interface{}, bool) { + if o == nil { + return map[string]interface{}{}, false + } + return o.Registration, true +} + +// SetRegistration sets field value +func (o *AuthenticatorWebAuthnChallenge) SetRegistration(v map[string]interface{}) { + o.Registration = v +} + +func (o AuthenticatorWebAuthnChallenge) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o AuthenticatorWebAuthnChallenge) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.FlowInfo) { + toSerialize["flow_info"] = o.FlowInfo + } + if !IsNil(o.Component) { + toSerialize["component"] = o.Component + } + if !IsNil(o.ResponseErrors) { + toSerialize["response_errors"] = o.ResponseErrors + } + toSerialize["pending_user"] = o.PendingUser + toSerialize["pending_user_avatar"] = o.PendingUserAvatar + toSerialize["registration"] = o.Registration + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *AuthenticatorWebAuthnChallenge) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "pending_user", + "pending_user_avatar", + "registration", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varAuthenticatorWebAuthnChallenge := _AuthenticatorWebAuthnChallenge{} + + err = json.Unmarshal(data, &varAuthenticatorWebAuthnChallenge) + + if err != nil { + return err + } + + *o = AuthenticatorWebAuthnChallenge(varAuthenticatorWebAuthnChallenge) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "flow_info") + delete(additionalProperties, "component") + delete(additionalProperties, "response_errors") + delete(additionalProperties, "pending_user") + delete(additionalProperties, "pending_user_avatar") + delete(additionalProperties, "registration") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableAuthenticatorWebAuthnChallenge struct { + value *AuthenticatorWebAuthnChallenge + isSet bool +} + +func (v NullableAuthenticatorWebAuthnChallenge) Get() *AuthenticatorWebAuthnChallenge { + return v.value +} + +func (v *NullableAuthenticatorWebAuthnChallenge) Set(val *AuthenticatorWebAuthnChallenge) { + v.value = val + v.isSet = true +} + +func (v NullableAuthenticatorWebAuthnChallenge) IsSet() bool { + return v.isSet +} + +func (v *NullableAuthenticatorWebAuthnChallenge) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableAuthenticatorWebAuthnChallenge(val *AuthenticatorWebAuthnChallenge) *NullableAuthenticatorWebAuthnChallenge { + return &NullableAuthenticatorWebAuthnChallenge{value: val, isSet: true} +} + +func (v NullableAuthenticatorWebAuthnChallenge) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableAuthenticatorWebAuthnChallenge) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_authenticator_web_authn_challenge_response_request.go b/packages/client-go/model_authenticator_web_authn_challenge_response_request.go new file mode 100644 index 0000000000..6370614339 --- /dev/null +++ b/packages/client-go/model_authenticator_web_authn_challenge_response_request.go @@ -0,0 +1,208 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// checks if the AuthenticatorWebAuthnChallengeResponseRequest type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &AuthenticatorWebAuthnChallengeResponseRequest{} + +// AuthenticatorWebAuthnChallengeResponseRequest WebAuthn Challenge response +type AuthenticatorWebAuthnChallengeResponseRequest struct { + Component *string `json:"component,omitempty"` + Response map[string]interface{} `json:"response"` + AdditionalProperties map[string]interface{} +} + +type _AuthenticatorWebAuthnChallengeResponseRequest AuthenticatorWebAuthnChallengeResponseRequest + +// NewAuthenticatorWebAuthnChallengeResponseRequest instantiates a new AuthenticatorWebAuthnChallengeResponseRequest object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewAuthenticatorWebAuthnChallengeResponseRequest(response map[string]interface{}) *AuthenticatorWebAuthnChallengeResponseRequest { + this := AuthenticatorWebAuthnChallengeResponseRequest{} + var component string = "ak-stage-authenticator-webauthn" + this.Component = &component + this.Response = response + return &this +} + +// NewAuthenticatorWebAuthnChallengeResponseRequestWithDefaults instantiates a new AuthenticatorWebAuthnChallengeResponseRequest object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewAuthenticatorWebAuthnChallengeResponseRequestWithDefaults() *AuthenticatorWebAuthnChallengeResponseRequest { + this := AuthenticatorWebAuthnChallengeResponseRequest{} + var component string = "ak-stage-authenticator-webauthn" + this.Component = &component + return &this +} + +// GetComponent returns the Component field value if set, zero value otherwise. +func (o *AuthenticatorWebAuthnChallengeResponseRequest) GetComponent() string { + if o == nil || IsNil(o.Component) { + var ret string + return ret + } + return *o.Component +} + +// GetComponentOk returns a tuple with the Component field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *AuthenticatorWebAuthnChallengeResponseRequest) GetComponentOk() (*string, bool) { + if o == nil || IsNil(o.Component) { + return nil, false + } + return o.Component, true +} + +// HasComponent returns a boolean if a field has been set. +func (o *AuthenticatorWebAuthnChallengeResponseRequest) HasComponent() bool { + if o != nil && !IsNil(o.Component) { + return true + } + + return false +} + +// SetComponent gets a reference to the given string and assigns it to the Component field. +func (o *AuthenticatorWebAuthnChallengeResponseRequest) SetComponent(v string) { + o.Component = &v +} + +// GetResponse returns the Response field value +func (o *AuthenticatorWebAuthnChallengeResponseRequest) GetResponse() map[string]interface{} { + if o == nil { + var ret map[string]interface{} + return ret + } + + return o.Response +} + +// GetResponseOk returns a tuple with the Response field value +// and a boolean to check if the value has been set. +func (o *AuthenticatorWebAuthnChallengeResponseRequest) GetResponseOk() (map[string]interface{}, bool) { + if o == nil { + return map[string]interface{}{}, false + } + return o.Response, true +} + +// SetResponse sets field value +func (o *AuthenticatorWebAuthnChallengeResponseRequest) SetResponse(v map[string]interface{}) { + o.Response = v +} + +func (o AuthenticatorWebAuthnChallengeResponseRequest) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o AuthenticatorWebAuthnChallengeResponseRequest) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.Component) { + toSerialize["component"] = o.Component + } + toSerialize["response"] = o.Response + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *AuthenticatorWebAuthnChallengeResponseRequest) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "response", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varAuthenticatorWebAuthnChallengeResponseRequest := _AuthenticatorWebAuthnChallengeResponseRequest{} + + err = json.Unmarshal(data, &varAuthenticatorWebAuthnChallengeResponseRequest) + + if err != nil { + return err + } + + *o = AuthenticatorWebAuthnChallengeResponseRequest(varAuthenticatorWebAuthnChallengeResponseRequest) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "component") + delete(additionalProperties, "response") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableAuthenticatorWebAuthnChallengeResponseRequest struct { + value *AuthenticatorWebAuthnChallengeResponseRequest + isSet bool +} + +func (v NullableAuthenticatorWebAuthnChallengeResponseRequest) Get() *AuthenticatorWebAuthnChallengeResponseRequest { + return v.value +} + +func (v *NullableAuthenticatorWebAuthnChallengeResponseRequest) Set(val *AuthenticatorWebAuthnChallengeResponseRequest) { + v.value = val + v.isSet = true +} + +func (v NullableAuthenticatorWebAuthnChallengeResponseRequest) IsSet() bool { + return v.isSet +} + +func (v *NullableAuthenticatorWebAuthnChallengeResponseRequest) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableAuthenticatorWebAuthnChallengeResponseRequest(val *AuthenticatorWebAuthnChallengeResponseRequest) *NullableAuthenticatorWebAuthnChallengeResponseRequest { + return &NullableAuthenticatorWebAuthnChallengeResponseRequest{value: val, isSet: true} +} + +func (v NullableAuthenticatorWebAuthnChallengeResponseRequest) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableAuthenticatorWebAuthnChallengeResponseRequest) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_auto_submit_challenge_response_request.go b/packages/client-go/model_auto_submit_challenge_response_request.go new file mode 100644 index 0000000000..8247b1c347 --- /dev/null +++ b/packages/client-go/model_auto_submit_challenge_response_request.go @@ -0,0 +1,158 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" +) + +// checks if the AutoSubmitChallengeResponseRequest type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &AutoSubmitChallengeResponseRequest{} + +// AutoSubmitChallengeResponseRequest Pseudo class for autosubmit response +type AutoSubmitChallengeResponseRequest struct { + Component *string `json:"component,omitempty"` + AdditionalProperties map[string]interface{} +} + +type _AutoSubmitChallengeResponseRequest AutoSubmitChallengeResponseRequest + +// NewAutoSubmitChallengeResponseRequest instantiates a new AutoSubmitChallengeResponseRequest object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewAutoSubmitChallengeResponseRequest() *AutoSubmitChallengeResponseRequest { + this := AutoSubmitChallengeResponseRequest{} + var component string = "ak-stage-autosubmit" + this.Component = &component + return &this +} + +// NewAutoSubmitChallengeResponseRequestWithDefaults instantiates a new AutoSubmitChallengeResponseRequest object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewAutoSubmitChallengeResponseRequestWithDefaults() *AutoSubmitChallengeResponseRequest { + this := AutoSubmitChallengeResponseRequest{} + var component string = "ak-stage-autosubmit" + this.Component = &component + return &this +} + +// GetComponent returns the Component field value if set, zero value otherwise. +func (o *AutoSubmitChallengeResponseRequest) GetComponent() string { + if o == nil || IsNil(o.Component) { + var ret string + return ret + } + return *o.Component +} + +// GetComponentOk returns a tuple with the Component field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *AutoSubmitChallengeResponseRequest) GetComponentOk() (*string, bool) { + if o == nil || IsNil(o.Component) { + return nil, false + } + return o.Component, true +} + +// HasComponent returns a boolean if a field has been set. +func (o *AutoSubmitChallengeResponseRequest) HasComponent() bool { + if o != nil && !IsNil(o.Component) { + return true + } + + return false +} + +// SetComponent gets a reference to the given string and assigns it to the Component field. +func (o *AutoSubmitChallengeResponseRequest) SetComponent(v string) { + o.Component = &v +} + +func (o AutoSubmitChallengeResponseRequest) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o AutoSubmitChallengeResponseRequest) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.Component) { + toSerialize["component"] = o.Component + } + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *AutoSubmitChallengeResponseRequest) UnmarshalJSON(data []byte) (err error) { + varAutoSubmitChallengeResponseRequest := _AutoSubmitChallengeResponseRequest{} + + err = json.Unmarshal(data, &varAutoSubmitChallengeResponseRequest) + + if err != nil { + return err + } + + *o = AutoSubmitChallengeResponseRequest(varAutoSubmitChallengeResponseRequest) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "component") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableAutoSubmitChallengeResponseRequest struct { + value *AutoSubmitChallengeResponseRequest + isSet bool +} + +func (v NullableAutoSubmitChallengeResponseRequest) Get() *AutoSubmitChallengeResponseRequest { + return v.value +} + +func (v *NullableAutoSubmitChallengeResponseRequest) Set(val *AutoSubmitChallengeResponseRequest) { + v.value = val + v.isSet = true +} + +func (v NullableAutoSubmitChallengeResponseRequest) IsSet() bool { + return v.isSet +} + +func (v *NullableAutoSubmitChallengeResponseRequest) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableAutoSubmitChallengeResponseRequest(val *AutoSubmitChallengeResponseRequest) *NullableAutoSubmitChallengeResponseRequest { + return &NullableAutoSubmitChallengeResponseRequest{value: val, isSet: true} +} + +func (v NullableAutoSubmitChallengeResponseRequest) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableAutoSubmitChallengeResponseRequest) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_autosubmit_challenge.go b/packages/client-go/model_autosubmit_challenge.go new file mode 100644 index 0000000000..a24cae46cf --- /dev/null +++ b/packages/client-go/model_autosubmit_challenge.go @@ -0,0 +1,348 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// checks if the AutosubmitChallenge type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &AutosubmitChallenge{} + +// AutosubmitChallenge Autosubmit challenge used to send and navigate a POST request +type AutosubmitChallenge struct { + FlowInfo *ContextualFlowInfo `json:"flow_info,omitempty"` + Component *string `json:"component,omitempty"` + ResponseErrors *map[string][]ErrorDetail `json:"response_errors,omitempty"` + Url string `json:"url"` + Attrs map[string]string `json:"attrs"` + Title *string `json:"title,omitempty"` + AdditionalProperties map[string]interface{} +} + +type _AutosubmitChallenge AutosubmitChallenge + +// NewAutosubmitChallenge instantiates a new AutosubmitChallenge object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewAutosubmitChallenge(url string, attrs map[string]string) *AutosubmitChallenge { + this := AutosubmitChallenge{} + var component string = "ak-stage-autosubmit" + this.Component = &component + this.Url = url + this.Attrs = attrs + return &this +} + +// NewAutosubmitChallengeWithDefaults instantiates a new AutosubmitChallenge object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewAutosubmitChallengeWithDefaults() *AutosubmitChallenge { + this := AutosubmitChallenge{} + var component string = "ak-stage-autosubmit" + this.Component = &component + return &this +} + +// GetFlowInfo returns the FlowInfo field value if set, zero value otherwise. +func (o *AutosubmitChallenge) GetFlowInfo() ContextualFlowInfo { + if o == nil || IsNil(o.FlowInfo) { + var ret ContextualFlowInfo + return ret + } + return *o.FlowInfo +} + +// GetFlowInfoOk returns a tuple with the FlowInfo field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *AutosubmitChallenge) GetFlowInfoOk() (*ContextualFlowInfo, bool) { + if o == nil || IsNil(o.FlowInfo) { + return nil, false + } + return o.FlowInfo, true +} + +// HasFlowInfo returns a boolean if a field has been set. +func (o *AutosubmitChallenge) HasFlowInfo() bool { + if o != nil && !IsNil(o.FlowInfo) { + return true + } + + return false +} + +// SetFlowInfo gets a reference to the given ContextualFlowInfo and assigns it to the FlowInfo field. +func (o *AutosubmitChallenge) SetFlowInfo(v ContextualFlowInfo) { + o.FlowInfo = &v +} + +// GetComponent returns the Component field value if set, zero value otherwise. +func (o *AutosubmitChallenge) GetComponent() string { + if o == nil || IsNil(o.Component) { + var ret string + return ret + } + return *o.Component +} + +// GetComponentOk returns a tuple with the Component field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *AutosubmitChallenge) GetComponentOk() (*string, bool) { + if o == nil || IsNil(o.Component) { + return nil, false + } + return o.Component, true +} + +// HasComponent returns a boolean if a field has been set. +func (o *AutosubmitChallenge) HasComponent() bool { + if o != nil && !IsNil(o.Component) { + return true + } + + return false +} + +// SetComponent gets a reference to the given string and assigns it to the Component field. +func (o *AutosubmitChallenge) SetComponent(v string) { + o.Component = &v +} + +// GetResponseErrors returns the ResponseErrors field value if set, zero value otherwise. +func (o *AutosubmitChallenge) GetResponseErrors() map[string][]ErrorDetail { + if o == nil || IsNil(o.ResponseErrors) { + var ret map[string][]ErrorDetail + return ret + } + return *o.ResponseErrors +} + +// GetResponseErrorsOk returns a tuple with the ResponseErrors field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *AutosubmitChallenge) GetResponseErrorsOk() (*map[string][]ErrorDetail, bool) { + if o == nil || IsNil(o.ResponseErrors) { + return nil, false + } + return o.ResponseErrors, true +} + +// HasResponseErrors returns a boolean if a field has been set. +func (o *AutosubmitChallenge) HasResponseErrors() bool { + if o != nil && !IsNil(o.ResponseErrors) { + return true + } + + return false +} + +// SetResponseErrors gets a reference to the given map[string][]ErrorDetail and assigns it to the ResponseErrors field. +func (o *AutosubmitChallenge) SetResponseErrors(v map[string][]ErrorDetail) { + o.ResponseErrors = &v +} + +// GetUrl returns the Url field value +func (o *AutosubmitChallenge) GetUrl() string { + if o == nil { + var ret string + return ret + } + + return o.Url +} + +// GetUrlOk returns a tuple with the Url field value +// and a boolean to check if the value has been set. +func (o *AutosubmitChallenge) GetUrlOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Url, true +} + +// SetUrl sets field value +func (o *AutosubmitChallenge) SetUrl(v string) { + o.Url = v +} + +// GetAttrs returns the Attrs field value +func (o *AutosubmitChallenge) GetAttrs() map[string]string { + if o == nil { + var ret map[string]string + return ret + } + + return o.Attrs +} + +// GetAttrsOk returns a tuple with the Attrs field value +// and a boolean to check if the value has been set. +func (o *AutosubmitChallenge) GetAttrsOk() (*map[string]string, bool) { + if o == nil { + return nil, false + } + return &o.Attrs, true +} + +// SetAttrs sets field value +func (o *AutosubmitChallenge) SetAttrs(v map[string]string) { + o.Attrs = v +} + +// GetTitle returns the Title field value if set, zero value otherwise. +func (o *AutosubmitChallenge) GetTitle() string { + if o == nil || IsNil(o.Title) { + var ret string + return ret + } + return *o.Title +} + +// GetTitleOk returns a tuple with the Title field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *AutosubmitChallenge) GetTitleOk() (*string, bool) { + if o == nil || IsNil(o.Title) { + return nil, false + } + return o.Title, true +} + +// HasTitle returns a boolean if a field has been set. +func (o *AutosubmitChallenge) HasTitle() bool { + if o != nil && !IsNil(o.Title) { + return true + } + + return false +} + +// SetTitle gets a reference to the given string and assigns it to the Title field. +func (o *AutosubmitChallenge) SetTitle(v string) { + o.Title = &v +} + +func (o AutosubmitChallenge) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o AutosubmitChallenge) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.FlowInfo) { + toSerialize["flow_info"] = o.FlowInfo + } + if !IsNil(o.Component) { + toSerialize["component"] = o.Component + } + if !IsNil(o.ResponseErrors) { + toSerialize["response_errors"] = o.ResponseErrors + } + toSerialize["url"] = o.Url + toSerialize["attrs"] = o.Attrs + if !IsNil(o.Title) { + toSerialize["title"] = o.Title + } + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *AutosubmitChallenge) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "url", + "attrs", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varAutosubmitChallenge := _AutosubmitChallenge{} + + err = json.Unmarshal(data, &varAutosubmitChallenge) + + if err != nil { + return err + } + + *o = AutosubmitChallenge(varAutosubmitChallenge) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "flow_info") + delete(additionalProperties, "component") + delete(additionalProperties, "response_errors") + delete(additionalProperties, "url") + delete(additionalProperties, "attrs") + delete(additionalProperties, "title") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableAutosubmitChallenge struct { + value *AutosubmitChallenge + isSet bool +} + +func (v NullableAutosubmitChallenge) Get() *AutosubmitChallenge { + return v.value +} + +func (v *NullableAutosubmitChallenge) Set(val *AutosubmitChallenge) { + v.value = val + v.isSet = true +} + +func (v NullableAutosubmitChallenge) IsSet() bool { + return v.isSet +} + +func (v *NullableAutosubmitChallenge) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableAutosubmitChallenge(val *AutosubmitChallenge) *NullableAutosubmitChallenge { + return &NullableAutosubmitChallenge{value: val, isSet: true} +} + +func (v NullableAutosubmitChallenge) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableAutosubmitChallenge) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_brand.go b/packages/client-go/model_brand.go new file mode 100644 index 0000000000..39afbc5088 --- /dev/null +++ b/packages/client-go/model_brand.go @@ -0,0 +1,928 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// checks if the Brand type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &Brand{} + +// Brand Brand Serializer +type Brand struct { + BrandUuid string `json:"brand_uuid"` + // Domain that activates this brand. Can be a superset, i.e. `a.b` for `aa.b` and `ba.b` + Domain string `json:"domain"` + Default *bool `json:"default,omitempty"` + BrandingTitle *string `json:"branding_title,omitempty"` + BrandingLogo *string `json:"branding_logo,omitempty"` + BrandingFavicon *string `json:"branding_favicon,omitempty"` + BrandingCustomCss *string `json:"branding_custom_css,omitempty"` + BrandingDefaultFlowBackground *string `json:"branding_default_flow_background,omitempty"` + FlowAuthentication NullableString `json:"flow_authentication,omitempty"` + FlowInvalidation NullableString `json:"flow_invalidation,omitempty"` + FlowRecovery NullableString `json:"flow_recovery,omitempty"` + FlowUnenrollment NullableString `json:"flow_unenrollment,omitempty"` + FlowUserSettings NullableString `json:"flow_user_settings,omitempty"` + FlowDeviceCode NullableString `json:"flow_device_code,omitempty"` + FlowLockdown NullableString `json:"flow_lockdown,omitempty"` + // When set, external users will be redirected to this application after authenticating. + DefaultApplication NullableString `json:"default_application,omitempty"` + // Web Certificate used by the authentik Core webserver. + WebCertificate NullableString `json:"web_certificate,omitempty"` + // Certificates used for client authentication. + ClientCertificates []string `json:"client_certificates,omitempty"` + Attributes map[string]interface{} `json:"attributes,omitempty"` + AdditionalProperties map[string]interface{} +} + +type _Brand Brand + +// NewBrand instantiates a new Brand object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewBrand(brandUuid string, domain string) *Brand { + this := Brand{} + this.BrandUuid = brandUuid + this.Domain = domain + return &this +} + +// NewBrandWithDefaults instantiates a new Brand object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewBrandWithDefaults() *Brand { + this := Brand{} + return &this +} + +// GetBrandUuid returns the BrandUuid field value +func (o *Brand) GetBrandUuid() string { + if o == nil { + var ret string + return ret + } + + return o.BrandUuid +} + +// GetBrandUuidOk returns a tuple with the BrandUuid field value +// and a boolean to check if the value has been set. +func (o *Brand) GetBrandUuidOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.BrandUuid, true +} + +// SetBrandUuid sets field value +func (o *Brand) SetBrandUuid(v string) { + o.BrandUuid = v +} + +// GetDomain returns the Domain field value +func (o *Brand) GetDomain() string { + if o == nil { + var ret string + return ret + } + + return o.Domain +} + +// GetDomainOk returns a tuple with the Domain field value +// and a boolean to check if the value has been set. +func (o *Brand) GetDomainOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Domain, true +} + +// SetDomain sets field value +func (o *Brand) SetDomain(v string) { + o.Domain = v +} + +// GetDefault returns the Default field value if set, zero value otherwise. +func (o *Brand) GetDefault() bool { + if o == nil || IsNil(o.Default) { + var ret bool + return ret + } + return *o.Default +} + +// GetDefaultOk returns a tuple with the Default field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *Brand) GetDefaultOk() (*bool, bool) { + if o == nil || IsNil(o.Default) { + return nil, false + } + return o.Default, true +} + +// HasDefault returns a boolean if a field has been set. +func (o *Brand) HasDefault() bool { + if o != nil && !IsNil(o.Default) { + return true + } + + return false +} + +// SetDefault gets a reference to the given bool and assigns it to the Default field. +func (o *Brand) SetDefault(v bool) { + o.Default = &v +} + +// GetBrandingTitle returns the BrandingTitle field value if set, zero value otherwise. +func (o *Brand) GetBrandingTitle() string { + if o == nil || IsNil(o.BrandingTitle) { + var ret string + return ret + } + return *o.BrandingTitle +} + +// GetBrandingTitleOk returns a tuple with the BrandingTitle field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *Brand) GetBrandingTitleOk() (*string, bool) { + if o == nil || IsNil(o.BrandingTitle) { + return nil, false + } + return o.BrandingTitle, true +} + +// HasBrandingTitle returns a boolean if a field has been set. +func (o *Brand) HasBrandingTitle() bool { + if o != nil && !IsNil(o.BrandingTitle) { + return true + } + + return false +} + +// SetBrandingTitle gets a reference to the given string and assigns it to the BrandingTitle field. +func (o *Brand) SetBrandingTitle(v string) { + o.BrandingTitle = &v +} + +// GetBrandingLogo returns the BrandingLogo field value if set, zero value otherwise. +func (o *Brand) GetBrandingLogo() string { + if o == nil || IsNil(o.BrandingLogo) { + var ret string + return ret + } + return *o.BrandingLogo +} + +// GetBrandingLogoOk returns a tuple with the BrandingLogo field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *Brand) GetBrandingLogoOk() (*string, bool) { + if o == nil || IsNil(o.BrandingLogo) { + return nil, false + } + return o.BrandingLogo, true +} + +// HasBrandingLogo returns a boolean if a field has been set. +func (o *Brand) HasBrandingLogo() bool { + if o != nil && !IsNil(o.BrandingLogo) { + return true + } + + return false +} + +// SetBrandingLogo gets a reference to the given string and assigns it to the BrandingLogo field. +func (o *Brand) SetBrandingLogo(v string) { + o.BrandingLogo = &v +} + +// GetBrandingFavicon returns the BrandingFavicon field value if set, zero value otherwise. +func (o *Brand) GetBrandingFavicon() string { + if o == nil || IsNil(o.BrandingFavicon) { + var ret string + return ret + } + return *o.BrandingFavicon +} + +// GetBrandingFaviconOk returns a tuple with the BrandingFavicon field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *Brand) GetBrandingFaviconOk() (*string, bool) { + if o == nil || IsNil(o.BrandingFavicon) { + return nil, false + } + return o.BrandingFavicon, true +} + +// HasBrandingFavicon returns a boolean if a field has been set. +func (o *Brand) HasBrandingFavicon() bool { + if o != nil && !IsNil(o.BrandingFavicon) { + return true + } + + return false +} + +// SetBrandingFavicon gets a reference to the given string and assigns it to the BrandingFavicon field. +func (o *Brand) SetBrandingFavicon(v string) { + o.BrandingFavicon = &v +} + +// GetBrandingCustomCss returns the BrandingCustomCss field value if set, zero value otherwise. +func (o *Brand) GetBrandingCustomCss() string { + if o == nil || IsNil(o.BrandingCustomCss) { + var ret string + return ret + } + return *o.BrandingCustomCss +} + +// GetBrandingCustomCssOk returns a tuple with the BrandingCustomCss field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *Brand) GetBrandingCustomCssOk() (*string, bool) { + if o == nil || IsNil(o.BrandingCustomCss) { + return nil, false + } + return o.BrandingCustomCss, true +} + +// HasBrandingCustomCss returns a boolean if a field has been set. +func (o *Brand) HasBrandingCustomCss() bool { + if o != nil && !IsNil(o.BrandingCustomCss) { + return true + } + + return false +} + +// SetBrandingCustomCss gets a reference to the given string and assigns it to the BrandingCustomCss field. +func (o *Brand) SetBrandingCustomCss(v string) { + o.BrandingCustomCss = &v +} + +// GetBrandingDefaultFlowBackground returns the BrandingDefaultFlowBackground field value if set, zero value otherwise. +func (o *Brand) GetBrandingDefaultFlowBackground() string { + if o == nil || IsNil(o.BrandingDefaultFlowBackground) { + var ret string + return ret + } + return *o.BrandingDefaultFlowBackground +} + +// GetBrandingDefaultFlowBackgroundOk returns a tuple with the BrandingDefaultFlowBackground field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *Brand) GetBrandingDefaultFlowBackgroundOk() (*string, bool) { + if o == nil || IsNil(o.BrandingDefaultFlowBackground) { + return nil, false + } + return o.BrandingDefaultFlowBackground, true +} + +// HasBrandingDefaultFlowBackground returns a boolean if a field has been set. +func (o *Brand) HasBrandingDefaultFlowBackground() bool { + if o != nil && !IsNil(o.BrandingDefaultFlowBackground) { + return true + } + + return false +} + +// SetBrandingDefaultFlowBackground gets a reference to the given string and assigns it to the BrandingDefaultFlowBackground field. +func (o *Brand) SetBrandingDefaultFlowBackground(v string) { + o.BrandingDefaultFlowBackground = &v +} + +// GetFlowAuthentication returns the FlowAuthentication field value if set, zero value otherwise (both if not set or set to explicit null). +func (o *Brand) GetFlowAuthentication() string { + if o == nil || IsNil(o.FlowAuthentication.Get()) { + var ret string + return ret + } + return *o.FlowAuthentication.Get() +} + +// GetFlowAuthenticationOk returns a tuple with the FlowAuthentication field value if set, nil otherwise +// and a boolean to check if the value has been set. +// NOTE: If the value is an explicit nil, `nil, true` will be returned +func (o *Brand) GetFlowAuthenticationOk() (*string, bool) { + if o == nil { + return nil, false + } + return o.FlowAuthentication.Get(), o.FlowAuthentication.IsSet() +} + +// HasFlowAuthentication returns a boolean if a field has been set. +func (o *Brand) HasFlowAuthentication() bool { + if o != nil && o.FlowAuthentication.IsSet() { + return true + } + + return false +} + +// SetFlowAuthentication gets a reference to the given NullableString and assigns it to the FlowAuthentication field. +func (o *Brand) SetFlowAuthentication(v string) { + o.FlowAuthentication.Set(&v) +} + +// SetFlowAuthenticationNil sets the value for FlowAuthentication to be an explicit nil +func (o *Brand) SetFlowAuthenticationNil() { + o.FlowAuthentication.Set(nil) +} + +// UnsetFlowAuthentication ensures that no value is present for FlowAuthentication, not even an explicit nil +func (o *Brand) UnsetFlowAuthentication() { + o.FlowAuthentication.Unset() +} + +// GetFlowInvalidation returns the FlowInvalidation field value if set, zero value otherwise (both if not set or set to explicit null). +func (o *Brand) GetFlowInvalidation() string { + if o == nil || IsNil(o.FlowInvalidation.Get()) { + var ret string + return ret + } + return *o.FlowInvalidation.Get() +} + +// GetFlowInvalidationOk returns a tuple with the FlowInvalidation field value if set, nil otherwise +// and a boolean to check if the value has been set. +// NOTE: If the value is an explicit nil, `nil, true` will be returned +func (o *Brand) GetFlowInvalidationOk() (*string, bool) { + if o == nil { + return nil, false + } + return o.FlowInvalidation.Get(), o.FlowInvalidation.IsSet() +} + +// HasFlowInvalidation returns a boolean if a field has been set. +func (o *Brand) HasFlowInvalidation() bool { + if o != nil && o.FlowInvalidation.IsSet() { + return true + } + + return false +} + +// SetFlowInvalidation gets a reference to the given NullableString and assigns it to the FlowInvalidation field. +func (o *Brand) SetFlowInvalidation(v string) { + o.FlowInvalidation.Set(&v) +} + +// SetFlowInvalidationNil sets the value for FlowInvalidation to be an explicit nil +func (o *Brand) SetFlowInvalidationNil() { + o.FlowInvalidation.Set(nil) +} + +// UnsetFlowInvalidation ensures that no value is present for FlowInvalidation, not even an explicit nil +func (o *Brand) UnsetFlowInvalidation() { + o.FlowInvalidation.Unset() +} + +// GetFlowRecovery returns the FlowRecovery field value if set, zero value otherwise (both if not set or set to explicit null). +func (o *Brand) GetFlowRecovery() string { + if o == nil || IsNil(o.FlowRecovery.Get()) { + var ret string + return ret + } + return *o.FlowRecovery.Get() +} + +// GetFlowRecoveryOk returns a tuple with the FlowRecovery field value if set, nil otherwise +// and a boolean to check if the value has been set. +// NOTE: If the value is an explicit nil, `nil, true` will be returned +func (o *Brand) GetFlowRecoveryOk() (*string, bool) { + if o == nil { + return nil, false + } + return o.FlowRecovery.Get(), o.FlowRecovery.IsSet() +} + +// HasFlowRecovery returns a boolean if a field has been set. +func (o *Brand) HasFlowRecovery() bool { + if o != nil && o.FlowRecovery.IsSet() { + return true + } + + return false +} + +// SetFlowRecovery gets a reference to the given NullableString and assigns it to the FlowRecovery field. +func (o *Brand) SetFlowRecovery(v string) { + o.FlowRecovery.Set(&v) +} + +// SetFlowRecoveryNil sets the value for FlowRecovery to be an explicit nil +func (o *Brand) SetFlowRecoveryNil() { + o.FlowRecovery.Set(nil) +} + +// UnsetFlowRecovery ensures that no value is present for FlowRecovery, not even an explicit nil +func (o *Brand) UnsetFlowRecovery() { + o.FlowRecovery.Unset() +} + +// GetFlowUnenrollment returns the FlowUnenrollment field value if set, zero value otherwise (both if not set or set to explicit null). +func (o *Brand) GetFlowUnenrollment() string { + if o == nil || IsNil(o.FlowUnenrollment.Get()) { + var ret string + return ret + } + return *o.FlowUnenrollment.Get() +} + +// GetFlowUnenrollmentOk returns a tuple with the FlowUnenrollment field value if set, nil otherwise +// and a boolean to check if the value has been set. +// NOTE: If the value is an explicit nil, `nil, true` will be returned +func (o *Brand) GetFlowUnenrollmentOk() (*string, bool) { + if o == nil { + return nil, false + } + return o.FlowUnenrollment.Get(), o.FlowUnenrollment.IsSet() +} + +// HasFlowUnenrollment returns a boolean if a field has been set. +func (o *Brand) HasFlowUnenrollment() bool { + if o != nil && o.FlowUnenrollment.IsSet() { + return true + } + + return false +} + +// SetFlowUnenrollment gets a reference to the given NullableString and assigns it to the FlowUnenrollment field. +func (o *Brand) SetFlowUnenrollment(v string) { + o.FlowUnenrollment.Set(&v) +} + +// SetFlowUnenrollmentNil sets the value for FlowUnenrollment to be an explicit nil +func (o *Brand) SetFlowUnenrollmentNil() { + o.FlowUnenrollment.Set(nil) +} + +// UnsetFlowUnenrollment ensures that no value is present for FlowUnenrollment, not even an explicit nil +func (o *Brand) UnsetFlowUnenrollment() { + o.FlowUnenrollment.Unset() +} + +// GetFlowUserSettings returns the FlowUserSettings field value if set, zero value otherwise (both if not set or set to explicit null). +func (o *Brand) GetFlowUserSettings() string { + if o == nil || IsNil(o.FlowUserSettings.Get()) { + var ret string + return ret + } + return *o.FlowUserSettings.Get() +} + +// GetFlowUserSettingsOk returns a tuple with the FlowUserSettings field value if set, nil otherwise +// and a boolean to check if the value has been set. +// NOTE: If the value is an explicit nil, `nil, true` will be returned +func (o *Brand) GetFlowUserSettingsOk() (*string, bool) { + if o == nil { + return nil, false + } + return o.FlowUserSettings.Get(), o.FlowUserSettings.IsSet() +} + +// HasFlowUserSettings returns a boolean if a field has been set. +func (o *Brand) HasFlowUserSettings() bool { + if o != nil && o.FlowUserSettings.IsSet() { + return true + } + + return false +} + +// SetFlowUserSettings gets a reference to the given NullableString and assigns it to the FlowUserSettings field. +func (o *Brand) SetFlowUserSettings(v string) { + o.FlowUserSettings.Set(&v) +} + +// SetFlowUserSettingsNil sets the value for FlowUserSettings to be an explicit nil +func (o *Brand) SetFlowUserSettingsNil() { + o.FlowUserSettings.Set(nil) +} + +// UnsetFlowUserSettings ensures that no value is present for FlowUserSettings, not even an explicit nil +func (o *Brand) UnsetFlowUserSettings() { + o.FlowUserSettings.Unset() +} + +// GetFlowDeviceCode returns the FlowDeviceCode field value if set, zero value otherwise (both if not set or set to explicit null). +func (o *Brand) GetFlowDeviceCode() string { + if o == nil || IsNil(o.FlowDeviceCode.Get()) { + var ret string + return ret + } + return *o.FlowDeviceCode.Get() +} + +// GetFlowDeviceCodeOk returns a tuple with the FlowDeviceCode field value if set, nil otherwise +// and a boolean to check if the value has been set. +// NOTE: If the value is an explicit nil, `nil, true` will be returned +func (o *Brand) GetFlowDeviceCodeOk() (*string, bool) { + if o == nil { + return nil, false + } + return o.FlowDeviceCode.Get(), o.FlowDeviceCode.IsSet() +} + +// HasFlowDeviceCode returns a boolean if a field has been set. +func (o *Brand) HasFlowDeviceCode() bool { + if o != nil && o.FlowDeviceCode.IsSet() { + return true + } + + return false +} + +// SetFlowDeviceCode gets a reference to the given NullableString and assigns it to the FlowDeviceCode field. +func (o *Brand) SetFlowDeviceCode(v string) { + o.FlowDeviceCode.Set(&v) +} + +// SetFlowDeviceCodeNil sets the value for FlowDeviceCode to be an explicit nil +func (o *Brand) SetFlowDeviceCodeNil() { + o.FlowDeviceCode.Set(nil) +} + +// UnsetFlowDeviceCode ensures that no value is present for FlowDeviceCode, not even an explicit nil +func (o *Brand) UnsetFlowDeviceCode() { + o.FlowDeviceCode.Unset() +} + +// GetFlowLockdown returns the FlowLockdown field value if set, zero value otherwise (both if not set or set to explicit null). +func (o *Brand) GetFlowLockdown() string { + if o == nil || IsNil(o.FlowLockdown.Get()) { + var ret string + return ret + } + return *o.FlowLockdown.Get() +} + +// GetFlowLockdownOk returns a tuple with the FlowLockdown field value if set, nil otherwise +// and a boolean to check if the value has been set. +// NOTE: If the value is an explicit nil, `nil, true` will be returned +func (o *Brand) GetFlowLockdownOk() (*string, bool) { + if o == nil { + return nil, false + } + return o.FlowLockdown.Get(), o.FlowLockdown.IsSet() +} + +// HasFlowLockdown returns a boolean if a field has been set. +func (o *Brand) HasFlowLockdown() bool { + if o != nil && o.FlowLockdown.IsSet() { + return true + } + + return false +} + +// SetFlowLockdown gets a reference to the given NullableString and assigns it to the FlowLockdown field. +func (o *Brand) SetFlowLockdown(v string) { + o.FlowLockdown.Set(&v) +} + +// SetFlowLockdownNil sets the value for FlowLockdown to be an explicit nil +func (o *Brand) SetFlowLockdownNil() { + o.FlowLockdown.Set(nil) +} + +// UnsetFlowLockdown ensures that no value is present for FlowLockdown, not even an explicit nil +func (o *Brand) UnsetFlowLockdown() { + o.FlowLockdown.Unset() +} + +// GetDefaultApplication returns the DefaultApplication field value if set, zero value otherwise (both if not set or set to explicit null). +func (o *Brand) GetDefaultApplication() string { + if o == nil || IsNil(o.DefaultApplication.Get()) { + var ret string + return ret + } + return *o.DefaultApplication.Get() +} + +// GetDefaultApplicationOk returns a tuple with the DefaultApplication field value if set, nil otherwise +// and a boolean to check if the value has been set. +// NOTE: If the value is an explicit nil, `nil, true` will be returned +func (o *Brand) GetDefaultApplicationOk() (*string, bool) { + if o == nil { + return nil, false + } + return o.DefaultApplication.Get(), o.DefaultApplication.IsSet() +} + +// HasDefaultApplication returns a boolean if a field has been set. +func (o *Brand) HasDefaultApplication() bool { + if o != nil && o.DefaultApplication.IsSet() { + return true + } + + return false +} + +// SetDefaultApplication gets a reference to the given NullableString and assigns it to the DefaultApplication field. +func (o *Brand) SetDefaultApplication(v string) { + o.DefaultApplication.Set(&v) +} + +// SetDefaultApplicationNil sets the value for DefaultApplication to be an explicit nil +func (o *Brand) SetDefaultApplicationNil() { + o.DefaultApplication.Set(nil) +} + +// UnsetDefaultApplication ensures that no value is present for DefaultApplication, not even an explicit nil +func (o *Brand) UnsetDefaultApplication() { + o.DefaultApplication.Unset() +} + +// GetWebCertificate returns the WebCertificate field value if set, zero value otherwise (both if not set or set to explicit null). +func (o *Brand) GetWebCertificate() string { + if o == nil || IsNil(o.WebCertificate.Get()) { + var ret string + return ret + } + return *o.WebCertificate.Get() +} + +// GetWebCertificateOk returns a tuple with the WebCertificate field value if set, nil otherwise +// and a boolean to check if the value has been set. +// NOTE: If the value is an explicit nil, `nil, true` will be returned +func (o *Brand) GetWebCertificateOk() (*string, bool) { + if o == nil { + return nil, false + } + return o.WebCertificate.Get(), o.WebCertificate.IsSet() +} + +// HasWebCertificate returns a boolean if a field has been set. +func (o *Brand) HasWebCertificate() bool { + if o != nil && o.WebCertificate.IsSet() { + return true + } + + return false +} + +// SetWebCertificate gets a reference to the given NullableString and assigns it to the WebCertificate field. +func (o *Brand) SetWebCertificate(v string) { + o.WebCertificate.Set(&v) +} + +// SetWebCertificateNil sets the value for WebCertificate to be an explicit nil +func (o *Brand) SetWebCertificateNil() { + o.WebCertificate.Set(nil) +} + +// UnsetWebCertificate ensures that no value is present for WebCertificate, not even an explicit nil +func (o *Brand) UnsetWebCertificate() { + o.WebCertificate.Unset() +} + +// GetClientCertificates returns the ClientCertificates field value if set, zero value otherwise. +func (o *Brand) GetClientCertificates() []string { + if o == nil || IsNil(o.ClientCertificates) { + var ret []string + return ret + } + return o.ClientCertificates +} + +// GetClientCertificatesOk returns a tuple with the ClientCertificates field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *Brand) GetClientCertificatesOk() ([]string, bool) { + if o == nil || IsNil(o.ClientCertificates) { + return nil, false + } + return o.ClientCertificates, true +} + +// HasClientCertificates returns a boolean if a field has been set. +func (o *Brand) HasClientCertificates() bool { + if o != nil && !IsNil(o.ClientCertificates) { + return true + } + + return false +} + +// SetClientCertificates gets a reference to the given []string and assigns it to the ClientCertificates field. +func (o *Brand) SetClientCertificates(v []string) { + o.ClientCertificates = v +} + +// GetAttributes returns the Attributes field value if set, zero value otherwise. +func (o *Brand) GetAttributes() map[string]interface{} { + if o == nil || IsNil(o.Attributes) { + var ret map[string]interface{} + return ret + } + return o.Attributes +} + +// GetAttributesOk returns a tuple with the Attributes field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *Brand) GetAttributesOk() (map[string]interface{}, bool) { + if o == nil || IsNil(o.Attributes) { + return map[string]interface{}{}, false + } + return o.Attributes, true +} + +// HasAttributes returns a boolean if a field has been set. +func (o *Brand) HasAttributes() bool { + if o != nil && !IsNil(o.Attributes) { + return true + } + + return false +} + +// SetAttributes gets a reference to the given map[string]interface{} and assigns it to the Attributes field. +func (o *Brand) SetAttributes(v map[string]interface{}) { + o.Attributes = v +} + +func (o Brand) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o Brand) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + toSerialize["brand_uuid"] = o.BrandUuid + toSerialize["domain"] = o.Domain + if !IsNil(o.Default) { + toSerialize["default"] = o.Default + } + if !IsNil(o.BrandingTitle) { + toSerialize["branding_title"] = o.BrandingTitle + } + if !IsNil(o.BrandingLogo) { + toSerialize["branding_logo"] = o.BrandingLogo + } + if !IsNil(o.BrandingFavicon) { + toSerialize["branding_favicon"] = o.BrandingFavicon + } + if !IsNil(o.BrandingCustomCss) { + toSerialize["branding_custom_css"] = o.BrandingCustomCss + } + if !IsNil(o.BrandingDefaultFlowBackground) { + toSerialize["branding_default_flow_background"] = o.BrandingDefaultFlowBackground + } + if o.FlowAuthentication.IsSet() { + toSerialize["flow_authentication"] = o.FlowAuthentication.Get() + } + if o.FlowInvalidation.IsSet() { + toSerialize["flow_invalidation"] = o.FlowInvalidation.Get() + } + if o.FlowRecovery.IsSet() { + toSerialize["flow_recovery"] = o.FlowRecovery.Get() + } + if o.FlowUnenrollment.IsSet() { + toSerialize["flow_unenrollment"] = o.FlowUnenrollment.Get() + } + if o.FlowUserSettings.IsSet() { + toSerialize["flow_user_settings"] = o.FlowUserSettings.Get() + } + if o.FlowDeviceCode.IsSet() { + toSerialize["flow_device_code"] = o.FlowDeviceCode.Get() + } + if o.FlowLockdown.IsSet() { + toSerialize["flow_lockdown"] = o.FlowLockdown.Get() + } + if o.DefaultApplication.IsSet() { + toSerialize["default_application"] = o.DefaultApplication.Get() + } + if o.WebCertificate.IsSet() { + toSerialize["web_certificate"] = o.WebCertificate.Get() + } + if !IsNil(o.ClientCertificates) { + toSerialize["client_certificates"] = o.ClientCertificates + } + if !IsNil(o.Attributes) { + toSerialize["attributes"] = o.Attributes + } + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *Brand) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "brand_uuid", + "domain", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varBrand := _Brand{} + + err = json.Unmarshal(data, &varBrand) + + if err != nil { + return err + } + + *o = Brand(varBrand) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "brand_uuid") + delete(additionalProperties, "domain") + delete(additionalProperties, "default") + delete(additionalProperties, "branding_title") + delete(additionalProperties, "branding_logo") + delete(additionalProperties, "branding_favicon") + delete(additionalProperties, "branding_custom_css") + delete(additionalProperties, "branding_default_flow_background") + delete(additionalProperties, "flow_authentication") + delete(additionalProperties, "flow_invalidation") + delete(additionalProperties, "flow_recovery") + delete(additionalProperties, "flow_unenrollment") + delete(additionalProperties, "flow_user_settings") + delete(additionalProperties, "flow_device_code") + delete(additionalProperties, "flow_lockdown") + delete(additionalProperties, "default_application") + delete(additionalProperties, "web_certificate") + delete(additionalProperties, "client_certificates") + delete(additionalProperties, "attributes") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableBrand struct { + value *Brand + isSet bool +} + +func (v NullableBrand) Get() *Brand { + return v.value +} + +func (v *NullableBrand) Set(val *Brand) { + v.value = val + v.isSet = true +} + +func (v NullableBrand) IsSet() bool { + return v.isSet +} + +func (v *NullableBrand) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableBrand(val *Brand) *NullableBrand { + return &NullableBrand{value: val, isSet: true} +} + +func (v NullableBrand) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableBrand) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_capabilities_enum.go b/packages/client-go/model_capabilities_enum.go new file mode 100644 index 0000000000..aeeab04cb4 --- /dev/null +++ b/packages/client-go/model_capabilities_enum.go @@ -0,0 +1,121 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// CapabilitiesEnum the model 'CapabilitiesEnum' +type CapabilitiesEnum string + +// List of CapabilitiesEnum +const ( + CAPABILITIESENUM_CAN_SAVE_MEDIA CapabilitiesEnum = "can_save_media" + CAPABILITIESENUM_CAN_SAVE_REPORTS CapabilitiesEnum = "can_save_reports" + CAPABILITIESENUM_CAN_GEO_IP CapabilitiesEnum = "can_geo_ip" + CAPABILITIESENUM_CAN_ASN CapabilitiesEnum = "can_asn" + CAPABILITIESENUM_CAN_IMPERSONATE CapabilitiesEnum = "can_impersonate" + CAPABILITIESENUM_CAN_DEBUG CapabilitiesEnum = "can_debug" + CAPABILITIESENUM_IS_ENTERPRISE CapabilitiesEnum = "is_enterprise" +) + +// All allowed values of CapabilitiesEnum enum +var AllowedCapabilitiesEnumEnumValues = []CapabilitiesEnum{ + "can_save_media", + "can_save_reports", + "can_geo_ip", + "can_asn", + "can_impersonate", + "can_debug", + "is_enterprise", +} + +func (v *CapabilitiesEnum) UnmarshalJSON(src []byte) error { + var value string + err := json.Unmarshal(src, &value) + if err != nil { + return err + } + enumTypeValue := CapabilitiesEnum(value) + for _, existing := range AllowedCapabilitiesEnumEnumValues { + if existing == enumTypeValue { + *v = enumTypeValue + return nil + } + } + + return fmt.Errorf("%+v is not a valid CapabilitiesEnum", value) +} + +// NewCapabilitiesEnumFromValue returns a pointer to a valid CapabilitiesEnum +// for the value passed as argument, or an error if the value passed is not allowed by the enum +func NewCapabilitiesEnumFromValue(v string) (*CapabilitiesEnum, error) { + ev := CapabilitiesEnum(v) + if ev.IsValid() { + return &ev, nil + } else { + return nil, fmt.Errorf("invalid value '%v' for CapabilitiesEnum: valid values are %v", v, AllowedCapabilitiesEnumEnumValues) + } +} + +// IsValid return true if the value is valid for the enum, false otherwise +func (v CapabilitiesEnum) IsValid() bool { + for _, existing := range AllowedCapabilitiesEnumEnumValues { + if existing == v { + return true + } + } + return false +} + +// Ptr returns reference to CapabilitiesEnum value +func (v CapabilitiesEnum) Ptr() *CapabilitiesEnum { + return &v +} + +type NullableCapabilitiesEnum struct { + value *CapabilitiesEnum + isSet bool +} + +func (v NullableCapabilitiesEnum) Get() *CapabilitiesEnum { + return v.value +} + +func (v *NullableCapabilitiesEnum) Set(val *CapabilitiesEnum) { + v.value = val + v.isSet = true +} + +func (v NullableCapabilitiesEnum) IsSet() bool { + return v.isSet +} + +func (v *NullableCapabilitiesEnum) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableCapabilitiesEnum(val *CapabilitiesEnum) *NullableCapabilitiesEnum { + return &NullableCapabilitiesEnum{value: val, isSet: true} +} + +func (v NullableCapabilitiesEnum) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableCapabilitiesEnum) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_captcha_challenge.go b/packages/client-go/model_captcha_challenge.go new file mode 100644 index 0000000000..444d425212 --- /dev/null +++ b/packages/client-go/model_captcha_challenge.go @@ -0,0 +1,398 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// checks if the CaptchaChallenge type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &CaptchaChallenge{} + +// CaptchaChallenge Site public key +type CaptchaChallenge struct { + FlowInfo *ContextualFlowInfo `json:"flow_info,omitempty"` + Component *string `json:"component,omitempty"` + ResponseErrors *map[string][]ErrorDetail `json:"response_errors,omitempty"` + PendingUser string `json:"pending_user"` + PendingUserAvatar string `json:"pending_user_avatar"` + SiteKey string `json:"site_key"` + JsUrl string `json:"js_url"` + Interactive bool `json:"interactive"` + AdditionalProperties map[string]interface{} +} + +type _CaptchaChallenge CaptchaChallenge + +// NewCaptchaChallenge instantiates a new CaptchaChallenge object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewCaptchaChallenge(pendingUser string, pendingUserAvatar string, siteKey string, jsUrl string, interactive bool) *CaptchaChallenge { + this := CaptchaChallenge{} + var component string = "ak-stage-captcha" + this.Component = &component + this.PendingUser = pendingUser + this.PendingUserAvatar = pendingUserAvatar + this.SiteKey = siteKey + this.JsUrl = jsUrl + this.Interactive = interactive + return &this +} + +// NewCaptchaChallengeWithDefaults instantiates a new CaptchaChallenge object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewCaptchaChallengeWithDefaults() *CaptchaChallenge { + this := CaptchaChallenge{} + var component string = "ak-stage-captcha" + this.Component = &component + return &this +} + +// GetFlowInfo returns the FlowInfo field value if set, zero value otherwise. +func (o *CaptchaChallenge) GetFlowInfo() ContextualFlowInfo { + if o == nil || IsNil(o.FlowInfo) { + var ret ContextualFlowInfo + return ret + } + return *o.FlowInfo +} + +// GetFlowInfoOk returns a tuple with the FlowInfo field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *CaptchaChallenge) GetFlowInfoOk() (*ContextualFlowInfo, bool) { + if o == nil || IsNil(o.FlowInfo) { + return nil, false + } + return o.FlowInfo, true +} + +// HasFlowInfo returns a boolean if a field has been set. +func (o *CaptchaChallenge) HasFlowInfo() bool { + if o != nil && !IsNil(o.FlowInfo) { + return true + } + + return false +} + +// SetFlowInfo gets a reference to the given ContextualFlowInfo and assigns it to the FlowInfo field. +func (o *CaptchaChallenge) SetFlowInfo(v ContextualFlowInfo) { + o.FlowInfo = &v +} + +// GetComponent returns the Component field value if set, zero value otherwise. +func (o *CaptchaChallenge) GetComponent() string { + if o == nil || IsNil(o.Component) { + var ret string + return ret + } + return *o.Component +} + +// GetComponentOk returns a tuple with the Component field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *CaptchaChallenge) GetComponentOk() (*string, bool) { + if o == nil || IsNil(o.Component) { + return nil, false + } + return o.Component, true +} + +// HasComponent returns a boolean if a field has been set. +func (o *CaptchaChallenge) HasComponent() bool { + if o != nil && !IsNil(o.Component) { + return true + } + + return false +} + +// SetComponent gets a reference to the given string and assigns it to the Component field. +func (o *CaptchaChallenge) SetComponent(v string) { + o.Component = &v +} + +// GetResponseErrors returns the ResponseErrors field value if set, zero value otherwise. +func (o *CaptchaChallenge) GetResponseErrors() map[string][]ErrorDetail { + if o == nil || IsNil(o.ResponseErrors) { + var ret map[string][]ErrorDetail + return ret + } + return *o.ResponseErrors +} + +// GetResponseErrorsOk returns a tuple with the ResponseErrors field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *CaptchaChallenge) GetResponseErrorsOk() (*map[string][]ErrorDetail, bool) { + if o == nil || IsNil(o.ResponseErrors) { + return nil, false + } + return o.ResponseErrors, true +} + +// HasResponseErrors returns a boolean if a field has been set. +func (o *CaptchaChallenge) HasResponseErrors() bool { + if o != nil && !IsNil(o.ResponseErrors) { + return true + } + + return false +} + +// SetResponseErrors gets a reference to the given map[string][]ErrorDetail and assigns it to the ResponseErrors field. +func (o *CaptchaChallenge) SetResponseErrors(v map[string][]ErrorDetail) { + o.ResponseErrors = &v +} + +// GetPendingUser returns the PendingUser field value +func (o *CaptchaChallenge) GetPendingUser() string { + if o == nil { + var ret string + return ret + } + + return o.PendingUser +} + +// GetPendingUserOk returns a tuple with the PendingUser field value +// and a boolean to check if the value has been set. +func (o *CaptchaChallenge) GetPendingUserOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.PendingUser, true +} + +// SetPendingUser sets field value +func (o *CaptchaChallenge) SetPendingUser(v string) { + o.PendingUser = v +} + +// GetPendingUserAvatar returns the PendingUserAvatar field value +func (o *CaptchaChallenge) GetPendingUserAvatar() string { + if o == nil { + var ret string + return ret + } + + return o.PendingUserAvatar +} + +// GetPendingUserAvatarOk returns a tuple with the PendingUserAvatar field value +// and a boolean to check if the value has been set. +func (o *CaptchaChallenge) GetPendingUserAvatarOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.PendingUserAvatar, true +} + +// SetPendingUserAvatar sets field value +func (o *CaptchaChallenge) SetPendingUserAvatar(v string) { + o.PendingUserAvatar = v +} + +// GetSiteKey returns the SiteKey field value +func (o *CaptchaChallenge) GetSiteKey() string { + if o == nil { + var ret string + return ret + } + + return o.SiteKey +} + +// GetSiteKeyOk returns a tuple with the SiteKey field value +// and a boolean to check if the value has been set. +func (o *CaptchaChallenge) GetSiteKeyOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.SiteKey, true +} + +// SetSiteKey sets field value +func (o *CaptchaChallenge) SetSiteKey(v string) { + o.SiteKey = v +} + +// GetJsUrl returns the JsUrl field value +func (o *CaptchaChallenge) GetJsUrl() string { + if o == nil { + var ret string + return ret + } + + return o.JsUrl +} + +// GetJsUrlOk returns a tuple with the JsUrl field value +// and a boolean to check if the value has been set. +func (o *CaptchaChallenge) GetJsUrlOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.JsUrl, true +} + +// SetJsUrl sets field value +func (o *CaptchaChallenge) SetJsUrl(v string) { + o.JsUrl = v +} + +// GetInteractive returns the Interactive field value +func (o *CaptchaChallenge) GetInteractive() bool { + if o == nil { + var ret bool + return ret + } + + return o.Interactive +} + +// GetInteractiveOk returns a tuple with the Interactive field value +// and a boolean to check if the value has been set. +func (o *CaptchaChallenge) GetInteractiveOk() (*bool, bool) { + if o == nil { + return nil, false + } + return &o.Interactive, true +} + +// SetInteractive sets field value +func (o *CaptchaChallenge) SetInteractive(v bool) { + o.Interactive = v +} + +func (o CaptchaChallenge) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o CaptchaChallenge) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.FlowInfo) { + toSerialize["flow_info"] = o.FlowInfo + } + if !IsNil(o.Component) { + toSerialize["component"] = o.Component + } + if !IsNil(o.ResponseErrors) { + toSerialize["response_errors"] = o.ResponseErrors + } + toSerialize["pending_user"] = o.PendingUser + toSerialize["pending_user_avatar"] = o.PendingUserAvatar + toSerialize["site_key"] = o.SiteKey + toSerialize["js_url"] = o.JsUrl + toSerialize["interactive"] = o.Interactive + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *CaptchaChallenge) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "pending_user", + "pending_user_avatar", + "site_key", + "js_url", + "interactive", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varCaptchaChallenge := _CaptchaChallenge{} + + err = json.Unmarshal(data, &varCaptchaChallenge) + + if err != nil { + return err + } + + *o = CaptchaChallenge(varCaptchaChallenge) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "flow_info") + delete(additionalProperties, "component") + delete(additionalProperties, "response_errors") + delete(additionalProperties, "pending_user") + delete(additionalProperties, "pending_user_avatar") + delete(additionalProperties, "site_key") + delete(additionalProperties, "js_url") + delete(additionalProperties, "interactive") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableCaptchaChallenge struct { + value *CaptchaChallenge + isSet bool +} + +func (v NullableCaptchaChallenge) Get() *CaptchaChallenge { + return v.value +} + +func (v *NullableCaptchaChallenge) Set(val *CaptchaChallenge) { + v.value = val + v.isSet = true +} + +func (v NullableCaptchaChallenge) IsSet() bool { + return v.isSet +} + +func (v *NullableCaptchaChallenge) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableCaptchaChallenge(val *CaptchaChallenge) *NullableCaptchaChallenge { + return &NullableCaptchaChallenge{value: val, isSet: true} +} + +func (v NullableCaptchaChallenge) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableCaptchaChallenge) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_captcha_challenge_response_request.go b/packages/client-go/model_captcha_challenge_response_request.go new file mode 100644 index 0000000000..5972f136c4 --- /dev/null +++ b/packages/client-go/model_captcha_challenge_response_request.go @@ -0,0 +1,208 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// checks if the CaptchaChallengeResponseRequest type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &CaptchaChallengeResponseRequest{} + +// CaptchaChallengeResponseRequest Validate captcha token +type CaptchaChallengeResponseRequest struct { + Component *string `json:"component,omitempty"` + Token string `json:"token"` + AdditionalProperties map[string]interface{} +} + +type _CaptchaChallengeResponseRequest CaptchaChallengeResponseRequest + +// NewCaptchaChallengeResponseRequest instantiates a new CaptchaChallengeResponseRequest object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewCaptchaChallengeResponseRequest(token string) *CaptchaChallengeResponseRequest { + this := CaptchaChallengeResponseRequest{} + var component string = "ak-stage-captcha" + this.Component = &component + this.Token = token + return &this +} + +// NewCaptchaChallengeResponseRequestWithDefaults instantiates a new CaptchaChallengeResponseRequest object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewCaptchaChallengeResponseRequestWithDefaults() *CaptchaChallengeResponseRequest { + this := CaptchaChallengeResponseRequest{} + var component string = "ak-stage-captcha" + this.Component = &component + return &this +} + +// GetComponent returns the Component field value if set, zero value otherwise. +func (o *CaptchaChallengeResponseRequest) GetComponent() string { + if o == nil || IsNil(o.Component) { + var ret string + return ret + } + return *o.Component +} + +// GetComponentOk returns a tuple with the Component field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *CaptchaChallengeResponseRequest) GetComponentOk() (*string, bool) { + if o == nil || IsNil(o.Component) { + return nil, false + } + return o.Component, true +} + +// HasComponent returns a boolean if a field has been set. +func (o *CaptchaChallengeResponseRequest) HasComponent() bool { + if o != nil && !IsNil(o.Component) { + return true + } + + return false +} + +// SetComponent gets a reference to the given string and assigns it to the Component field. +func (o *CaptchaChallengeResponseRequest) SetComponent(v string) { + o.Component = &v +} + +// GetToken returns the Token field value +func (o *CaptchaChallengeResponseRequest) GetToken() string { + if o == nil { + var ret string + return ret + } + + return o.Token +} + +// GetTokenOk returns a tuple with the Token field value +// and a boolean to check if the value has been set. +func (o *CaptchaChallengeResponseRequest) GetTokenOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Token, true +} + +// SetToken sets field value +func (o *CaptchaChallengeResponseRequest) SetToken(v string) { + o.Token = v +} + +func (o CaptchaChallengeResponseRequest) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o CaptchaChallengeResponseRequest) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.Component) { + toSerialize["component"] = o.Component + } + toSerialize["token"] = o.Token + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *CaptchaChallengeResponseRequest) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "token", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varCaptchaChallengeResponseRequest := _CaptchaChallengeResponseRequest{} + + err = json.Unmarshal(data, &varCaptchaChallengeResponseRequest) + + if err != nil { + return err + } + + *o = CaptchaChallengeResponseRequest(varCaptchaChallengeResponseRequest) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "component") + delete(additionalProperties, "token") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableCaptchaChallengeResponseRequest struct { + value *CaptchaChallengeResponseRequest + isSet bool +} + +func (v NullableCaptchaChallengeResponseRequest) Get() *CaptchaChallengeResponseRequest { + return v.value +} + +func (v *NullableCaptchaChallengeResponseRequest) Set(val *CaptchaChallengeResponseRequest) { + v.value = val + v.isSet = true +} + +func (v NullableCaptchaChallengeResponseRequest) IsSet() bool { + return v.isSet +} + +func (v *NullableCaptchaChallengeResponseRequest) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableCaptchaChallengeResponseRequest(val *CaptchaChallengeResponseRequest) *NullableCaptchaChallengeResponseRequest { + return &NullableCaptchaChallengeResponseRequest{value: val, isSet: true} +} + +func (v NullableCaptchaChallengeResponseRequest) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableCaptchaChallengeResponseRequest) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_certificate_data.go b/packages/client-go/model_certificate_data.go new file mode 100644 index 0000000000..86b131b185 --- /dev/null +++ b/packages/client-go/model_certificate_data.go @@ -0,0 +1,167 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// checks if the CertificateData type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &CertificateData{} + +// CertificateData Get CertificateKeyPair's data +type CertificateData struct { + Data string `json:"data"` + AdditionalProperties map[string]interface{} +} + +type _CertificateData CertificateData + +// NewCertificateData instantiates a new CertificateData object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewCertificateData(data string) *CertificateData { + this := CertificateData{} + this.Data = data + return &this +} + +// NewCertificateDataWithDefaults instantiates a new CertificateData object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewCertificateDataWithDefaults() *CertificateData { + this := CertificateData{} + return &this +} + +// GetData returns the Data field value +func (o *CertificateData) GetData() string { + if o == nil { + var ret string + return ret + } + + return o.Data +} + +// GetDataOk returns a tuple with the Data field value +// and a boolean to check if the value has been set. +func (o *CertificateData) GetDataOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Data, true +} + +// SetData sets field value +func (o *CertificateData) SetData(v string) { + o.Data = v +} + +func (o CertificateData) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o CertificateData) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + toSerialize["data"] = o.Data + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *CertificateData) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "data", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varCertificateData := _CertificateData{} + + err = json.Unmarshal(data, &varCertificateData) + + if err != nil { + return err + } + + *o = CertificateData(varCertificateData) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "data") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableCertificateData struct { + value *CertificateData + isSet bool +} + +func (v NullableCertificateData) Get() *CertificateData { + return v.value +} + +func (v *NullableCertificateData) Set(val *CertificateData) { + v.value = val + v.isSet = true +} + +func (v NullableCertificateData) IsSet() bool { + return v.isSet +} + +func (v *NullableCertificateData) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableCertificateData(val *CertificateData) *NullableCertificateData { + return &NullableCertificateData{value: val, isSet: true} +} + +func (v NullableCertificateData) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableCertificateData) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_certificate_key_pair.go b/packages/client-go/model_certificate_key_pair.go new file mode 100644 index 0000000000..80ba857d2d --- /dev/null +++ b/packages/client-go/model_certificate_key_pair.go @@ -0,0 +1,479 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" + "time" +) + +// checks if the CertificateKeyPair type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &CertificateKeyPair{} + +// CertificateKeyPair CertificateKeyPair Serializer +type CertificateKeyPair struct { + Pk string `json:"pk"` + Name string `json:"name"` + // SHA256 fingerprint of the certificate + FingerprintSha256 NullableString `json:"fingerprint_sha256"` + // SHA1 fingerprint of the certificate + FingerprintSha1 NullableString `json:"fingerprint_sha1"` + // Certificate expiry date + CertExpiry NullableTime `json:"cert_expiry"` + // Certificate subject as RFC4514 string + CertSubject NullableString `json:"cert_subject"` + // Show if this keypair has a private key configured or not + PrivateKeyAvailable bool `json:"private_key_available"` + // Key algorithm type detected from the certificate's public key + KeyType NullableCertificateKeyPairKeyTypeEnum `json:"key_type"` + // Get URL to download certificate + CertificateDownloadUrl string `json:"certificate_download_url"` + // Get URL to download private key + PrivateKeyDownloadUrl string `json:"private_key_download_url"` + // Objects that are managed by authentik. These objects are created and updated automatically. This flag only indicates that an object can be overwritten by migrations. You can still modify the objects via the API, but expect changes to be overwritten in a later update. + Managed NullableString `json:"managed"` + AdditionalProperties map[string]interface{} +} + +type _CertificateKeyPair CertificateKeyPair + +// NewCertificateKeyPair instantiates a new CertificateKeyPair object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewCertificateKeyPair(pk string, name string, fingerprintSha256 NullableString, fingerprintSha1 NullableString, certExpiry NullableTime, certSubject NullableString, privateKeyAvailable bool, keyType NullableCertificateKeyPairKeyTypeEnum, certificateDownloadUrl string, privateKeyDownloadUrl string, managed NullableString) *CertificateKeyPair { + this := CertificateKeyPair{} + this.Pk = pk + this.Name = name + this.FingerprintSha256 = fingerprintSha256 + this.FingerprintSha1 = fingerprintSha1 + this.CertExpiry = certExpiry + this.CertSubject = certSubject + this.PrivateKeyAvailable = privateKeyAvailable + this.KeyType = keyType + this.CertificateDownloadUrl = certificateDownloadUrl + this.PrivateKeyDownloadUrl = privateKeyDownloadUrl + this.Managed = managed + return &this +} + +// NewCertificateKeyPairWithDefaults instantiates a new CertificateKeyPair object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewCertificateKeyPairWithDefaults() *CertificateKeyPair { + this := CertificateKeyPair{} + return &this +} + +// GetPk returns the Pk field value +func (o *CertificateKeyPair) GetPk() string { + if o == nil { + var ret string + return ret + } + + return o.Pk +} + +// GetPkOk returns a tuple with the Pk field value +// and a boolean to check if the value has been set. +func (o *CertificateKeyPair) GetPkOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Pk, true +} + +// SetPk sets field value +func (o *CertificateKeyPair) SetPk(v string) { + o.Pk = v +} + +// GetName returns the Name field value +func (o *CertificateKeyPair) GetName() string { + if o == nil { + var ret string + return ret + } + + return o.Name +} + +// GetNameOk returns a tuple with the Name field value +// and a boolean to check if the value has been set. +func (o *CertificateKeyPair) GetNameOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Name, true +} + +// SetName sets field value +func (o *CertificateKeyPair) SetName(v string) { + o.Name = v +} + +// GetFingerprintSha256 returns the FingerprintSha256 field value +// If the value is explicit nil, the zero value for string will be returned +func (o *CertificateKeyPair) GetFingerprintSha256() string { + if o == nil || o.FingerprintSha256.Get() == nil { + var ret string + return ret + } + + return *o.FingerprintSha256.Get() +} + +// GetFingerprintSha256Ok returns a tuple with the FingerprintSha256 field value +// and a boolean to check if the value has been set. +// NOTE: If the value is an explicit nil, `nil, true` will be returned +func (o *CertificateKeyPair) GetFingerprintSha256Ok() (*string, bool) { + if o == nil { + return nil, false + } + return o.FingerprintSha256.Get(), o.FingerprintSha256.IsSet() +} + +// SetFingerprintSha256 sets field value +func (o *CertificateKeyPair) SetFingerprintSha256(v string) { + o.FingerprintSha256.Set(&v) +} + +// GetFingerprintSha1 returns the FingerprintSha1 field value +// If the value is explicit nil, the zero value for string will be returned +func (o *CertificateKeyPair) GetFingerprintSha1() string { + if o == nil || o.FingerprintSha1.Get() == nil { + var ret string + return ret + } + + return *o.FingerprintSha1.Get() +} + +// GetFingerprintSha1Ok returns a tuple with the FingerprintSha1 field value +// and a boolean to check if the value has been set. +// NOTE: If the value is an explicit nil, `nil, true` will be returned +func (o *CertificateKeyPair) GetFingerprintSha1Ok() (*string, bool) { + if o == nil { + return nil, false + } + return o.FingerprintSha1.Get(), o.FingerprintSha1.IsSet() +} + +// SetFingerprintSha1 sets field value +func (o *CertificateKeyPair) SetFingerprintSha1(v string) { + o.FingerprintSha1.Set(&v) +} + +// GetCertExpiry returns the CertExpiry field value +// If the value is explicit nil, the zero value for time.Time will be returned +func (o *CertificateKeyPair) GetCertExpiry() time.Time { + if o == nil || o.CertExpiry.Get() == nil { + var ret time.Time + return ret + } + + return *o.CertExpiry.Get() +} + +// GetCertExpiryOk returns a tuple with the CertExpiry field value +// and a boolean to check if the value has been set. +// NOTE: If the value is an explicit nil, `nil, true` will be returned +func (o *CertificateKeyPair) GetCertExpiryOk() (*time.Time, bool) { + if o == nil { + return nil, false + } + return o.CertExpiry.Get(), o.CertExpiry.IsSet() +} + +// SetCertExpiry sets field value +func (o *CertificateKeyPair) SetCertExpiry(v time.Time) { + o.CertExpiry.Set(&v) +} + +// GetCertSubject returns the CertSubject field value +// If the value is explicit nil, the zero value for string will be returned +func (o *CertificateKeyPair) GetCertSubject() string { + if o == nil || o.CertSubject.Get() == nil { + var ret string + return ret + } + + return *o.CertSubject.Get() +} + +// GetCertSubjectOk returns a tuple with the CertSubject field value +// and a boolean to check if the value has been set. +// NOTE: If the value is an explicit nil, `nil, true` will be returned +func (o *CertificateKeyPair) GetCertSubjectOk() (*string, bool) { + if o == nil { + return nil, false + } + return o.CertSubject.Get(), o.CertSubject.IsSet() +} + +// SetCertSubject sets field value +func (o *CertificateKeyPair) SetCertSubject(v string) { + o.CertSubject.Set(&v) +} + +// GetPrivateKeyAvailable returns the PrivateKeyAvailable field value +func (o *CertificateKeyPair) GetPrivateKeyAvailable() bool { + if o == nil { + var ret bool + return ret + } + + return o.PrivateKeyAvailable +} + +// GetPrivateKeyAvailableOk returns a tuple with the PrivateKeyAvailable field value +// and a boolean to check if the value has been set. +func (o *CertificateKeyPair) GetPrivateKeyAvailableOk() (*bool, bool) { + if o == nil { + return nil, false + } + return &o.PrivateKeyAvailable, true +} + +// SetPrivateKeyAvailable sets field value +func (o *CertificateKeyPair) SetPrivateKeyAvailable(v bool) { + o.PrivateKeyAvailable = v +} + +// GetKeyType returns the KeyType field value +// If the value is explicit nil, the zero value for CertificateKeyPairKeyTypeEnum will be returned +func (o *CertificateKeyPair) GetKeyType() CertificateKeyPairKeyTypeEnum { + if o == nil || o.KeyType.Get() == nil { + var ret CertificateKeyPairKeyTypeEnum + return ret + } + + return *o.KeyType.Get() +} + +// GetKeyTypeOk returns a tuple with the KeyType field value +// and a boolean to check if the value has been set. +// NOTE: If the value is an explicit nil, `nil, true` will be returned +func (o *CertificateKeyPair) GetKeyTypeOk() (*CertificateKeyPairKeyTypeEnum, bool) { + if o == nil { + return nil, false + } + return o.KeyType.Get(), o.KeyType.IsSet() +} + +// SetKeyType sets field value +func (o *CertificateKeyPair) SetKeyType(v CertificateKeyPairKeyTypeEnum) { + o.KeyType.Set(&v) +} + +// GetCertificateDownloadUrl returns the CertificateDownloadUrl field value +func (o *CertificateKeyPair) GetCertificateDownloadUrl() string { + if o == nil { + var ret string + return ret + } + + return o.CertificateDownloadUrl +} + +// GetCertificateDownloadUrlOk returns a tuple with the CertificateDownloadUrl field value +// and a boolean to check if the value has been set. +func (o *CertificateKeyPair) GetCertificateDownloadUrlOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.CertificateDownloadUrl, true +} + +// SetCertificateDownloadUrl sets field value +func (o *CertificateKeyPair) SetCertificateDownloadUrl(v string) { + o.CertificateDownloadUrl = v +} + +// GetPrivateKeyDownloadUrl returns the PrivateKeyDownloadUrl field value +func (o *CertificateKeyPair) GetPrivateKeyDownloadUrl() string { + if o == nil { + var ret string + return ret + } + + return o.PrivateKeyDownloadUrl +} + +// GetPrivateKeyDownloadUrlOk returns a tuple with the PrivateKeyDownloadUrl field value +// and a boolean to check if the value has been set. +func (o *CertificateKeyPair) GetPrivateKeyDownloadUrlOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.PrivateKeyDownloadUrl, true +} + +// SetPrivateKeyDownloadUrl sets field value +func (o *CertificateKeyPair) SetPrivateKeyDownloadUrl(v string) { + o.PrivateKeyDownloadUrl = v +} + +// GetManaged returns the Managed field value +// If the value is explicit nil, the zero value for string will be returned +func (o *CertificateKeyPair) GetManaged() string { + if o == nil || o.Managed.Get() == nil { + var ret string + return ret + } + + return *o.Managed.Get() +} + +// GetManagedOk returns a tuple with the Managed field value +// and a boolean to check if the value has been set. +// NOTE: If the value is an explicit nil, `nil, true` will be returned +func (o *CertificateKeyPair) GetManagedOk() (*string, bool) { + if o == nil { + return nil, false + } + return o.Managed.Get(), o.Managed.IsSet() +} + +// SetManaged sets field value +func (o *CertificateKeyPair) SetManaged(v string) { + o.Managed.Set(&v) +} + +func (o CertificateKeyPair) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o CertificateKeyPair) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + toSerialize["pk"] = o.Pk + toSerialize["name"] = o.Name + toSerialize["fingerprint_sha256"] = o.FingerprintSha256.Get() + toSerialize["fingerprint_sha1"] = o.FingerprintSha1.Get() + toSerialize["cert_expiry"] = o.CertExpiry.Get() + toSerialize["cert_subject"] = o.CertSubject.Get() + toSerialize["private_key_available"] = o.PrivateKeyAvailable + toSerialize["key_type"] = o.KeyType.Get() + toSerialize["certificate_download_url"] = o.CertificateDownloadUrl + toSerialize["private_key_download_url"] = o.PrivateKeyDownloadUrl + toSerialize["managed"] = o.Managed.Get() + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *CertificateKeyPair) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "pk", + "name", + "fingerprint_sha256", + "fingerprint_sha1", + "cert_expiry", + "cert_subject", + "private_key_available", + "key_type", + "certificate_download_url", + "private_key_download_url", + "managed", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varCertificateKeyPair := _CertificateKeyPair{} + + err = json.Unmarshal(data, &varCertificateKeyPair) + + if err != nil { + return err + } + + *o = CertificateKeyPair(varCertificateKeyPair) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "pk") + delete(additionalProperties, "name") + delete(additionalProperties, "fingerprint_sha256") + delete(additionalProperties, "fingerprint_sha1") + delete(additionalProperties, "cert_expiry") + delete(additionalProperties, "cert_subject") + delete(additionalProperties, "private_key_available") + delete(additionalProperties, "key_type") + delete(additionalProperties, "certificate_download_url") + delete(additionalProperties, "private_key_download_url") + delete(additionalProperties, "managed") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableCertificateKeyPair struct { + value *CertificateKeyPair + isSet bool +} + +func (v NullableCertificateKeyPair) Get() *CertificateKeyPair { + return v.value +} + +func (v *NullableCertificateKeyPair) Set(val *CertificateKeyPair) { + v.value = val + v.isSet = true +} + +func (v NullableCertificateKeyPair) IsSet() bool { + return v.isSet +} + +func (v *NullableCertificateKeyPair) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableCertificateKeyPair(val *CertificateKeyPair) *NullableCertificateKeyPair { + return &NullableCertificateKeyPair{value: val, isSet: true} +} + +func (v NullableCertificateKeyPair) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableCertificateKeyPair) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_certificate_key_pair_key_type_enum.go b/packages/client-go/model_certificate_key_pair_key_type_enum.go new file mode 100644 index 0000000000..5d7e4b9ed1 --- /dev/null +++ b/packages/client-go/model_certificate_key_pair_key_type_enum.go @@ -0,0 +1,117 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// CertificateKeyPairKeyTypeEnum the model 'CertificateKeyPairKeyTypeEnum' +type CertificateKeyPairKeyTypeEnum string + +// List of CertificateKeyPairKeyTypeEnum +const ( + CERTIFICATEKEYPAIRKEYTYPEENUM_RSA CertificateKeyPairKeyTypeEnum = "rsa" + CERTIFICATEKEYPAIRKEYTYPEENUM_EC CertificateKeyPairKeyTypeEnum = "ec" + CERTIFICATEKEYPAIRKEYTYPEENUM_DSA CertificateKeyPairKeyTypeEnum = "dsa" + CERTIFICATEKEYPAIRKEYTYPEENUM_ED25519 CertificateKeyPairKeyTypeEnum = "ed25519" + CERTIFICATEKEYPAIRKEYTYPEENUM_ED448 CertificateKeyPairKeyTypeEnum = "ed448" +) + +// All allowed values of CertificateKeyPairKeyTypeEnum enum +var AllowedCertificateKeyPairKeyTypeEnumEnumValues = []CertificateKeyPairKeyTypeEnum{ + "rsa", + "ec", + "dsa", + "ed25519", + "ed448", +} + +func (v *CertificateKeyPairKeyTypeEnum) UnmarshalJSON(src []byte) error { + var value string + err := json.Unmarshal(src, &value) + if err != nil { + return err + } + enumTypeValue := CertificateKeyPairKeyTypeEnum(value) + for _, existing := range AllowedCertificateKeyPairKeyTypeEnumEnumValues { + if existing == enumTypeValue { + *v = enumTypeValue + return nil + } + } + + return fmt.Errorf("%+v is not a valid CertificateKeyPairKeyTypeEnum", value) +} + +// NewCertificateKeyPairKeyTypeEnumFromValue returns a pointer to a valid CertificateKeyPairKeyTypeEnum +// for the value passed as argument, or an error if the value passed is not allowed by the enum +func NewCertificateKeyPairKeyTypeEnumFromValue(v string) (*CertificateKeyPairKeyTypeEnum, error) { + ev := CertificateKeyPairKeyTypeEnum(v) + if ev.IsValid() { + return &ev, nil + } else { + return nil, fmt.Errorf("invalid value '%v' for CertificateKeyPairKeyTypeEnum: valid values are %v", v, AllowedCertificateKeyPairKeyTypeEnumEnumValues) + } +} + +// IsValid return true if the value is valid for the enum, false otherwise +func (v CertificateKeyPairKeyTypeEnum) IsValid() bool { + for _, existing := range AllowedCertificateKeyPairKeyTypeEnumEnumValues { + if existing == v { + return true + } + } + return false +} + +// Ptr returns reference to CertificateKeyPairKeyTypeEnum value +func (v CertificateKeyPairKeyTypeEnum) Ptr() *CertificateKeyPairKeyTypeEnum { + return &v +} + +type NullableCertificateKeyPairKeyTypeEnum struct { + value *CertificateKeyPairKeyTypeEnum + isSet bool +} + +func (v NullableCertificateKeyPairKeyTypeEnum) Get() *CertificateKeyPairKeyTypeEnum { + return v.value +} + +func (v *NullableCertificateKeyPairKeyTypeEnum) Set(val *CertificateKeyPairKeyTypeEnum) { + v.value = val + v.isSet = true +} + +func (v NullableCertificateKeyPairKeyTypeEnum) IsSet() bool { + return v.isSet +} + +func (v *NullableCertificateKeyPairKeyTypeEnum) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableCertificateKeyPairKeyTypeEnum(val *CertificateKeyPairKeyTypeEnum) *NullableCertificateKeyPairKeyTypeEnum { + return &NullableCertificateKeyPairKeyTypeEnum{value: val, isSet: true} +} + +func (v NullableCertificateKeyPairKeyTypeEnum) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableCertificateKeyPairKeyTypeEnum) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_challenge_types.go b/packages/client-go/model_challenge_types.go new file mode 100644 index 0000000000..8e8f81b3b8 --- /dev/null +++ b/packages/client-go/model_challenge_types.go @@ -0,0 +1,1050 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// ChallengeTypes - struct for ChallengeTypes +type ChallengeTypes struct { + AccessDeniedChallenge *AccessDeniedChallenge + AppleLoginChallenge *AppleLoginChallenge + AuthenticatorDuoChallenge *AuthenticatorDuoChallenge + AuthenticatorEmailChallenge *AuthenticatorEmailChallenge + AuthenticatorSMSChallenge *AuthenticatorSMSChallenge + AuthenticatorStaticChallenge *AuthenticatorStaticChallenge + AuthenticatorTOTPChallenge *AuthenticatorTOTPChallenge + AuthenticatorValidationChallenge *AuthenticatorValidationChallenge + AuthenticatorWebAuthnChallenge *AuthenticatorWebAuthnChallenge + AutosubmitChallenge *AutosubmitChallenge + CaptchaChallenge *CaptchaChallenge + ConsentChallenge *ConsentChallenge + DummyChallenge *DummyChallenge + EmailChallenge *EmailChallenge + EndpointAgentChallenge *EndpointAgentChallenge + FlowErrorChallenge *FlowErrorChallenge + FrameChallenge *FrameChallenge + IdentificationChallenge *IdentificationChallenge + IframeLogoutChallenge *IframeLogoutChallenge + NativeLogoutChallenge *NativeLogoutChallenge + OAuthDeviceCodeChallenge *OAuthDeviceCodeChallenge + OAuthDeviceCodeFinishChallenge *OAuthDeviceCodeFinishChallenge + PasswordChallenge *PasswordChallenge + PlexAuthenticationChallenge *PlexAuthenticationChallenge + PromptChallenge *PromptChallenge + RedirectChallenge *RedirectChallenge + SessionEndChallenge *SessionEndChallenge + ShellChallenge *ShellChallenge + TelegramLoginChallenge *TelegramLoginChallenge + UserLoginChallenge *UserLoginChallenge +} + +// AccessDeniedChallengeAsChallengeTypes is a convenience function that returns AccessDeniedChallenge wrapped in ChallengeTypes +func AccessDeniedChallengeAsChallengeTypes(v *AccessDeniedChallenge) ChallengeTypes { + return ChallengeTypes{ + AccessDeniedChallenge: v, + } +} + +// AppleLoginChallengeAsChallengeTypes is a convenience function that returns AppleLoginChallenge wrapped in ChallengeTypes +func AppleLoginChallengeAsChallengeTypes(v *AppleLoginChallenge) ChallengeTypes { + return ChallengeTypes{ + AppleLoginChallenge: v, + } +} + +// AuthenticatorDuoChallengeAsChallengeTypes is a convenience function that returns AuthenticatorDuoChallenge wrapped in ChallengeTypes +func AuthenticatorDuoChallengeAsChallengeTypes(v *AuthenticatorDuoChallenge) ChallengeTypes { + return ChallengeTypes{ + AuthenticatorDuoChallenge: v, + } +} + +// AuthenticatorEmailChallengeAsChallengeTypes is a convenience function that returns AuthenticatorEmailChallenge wrapped in ChallengeTypes +func AuthenticatorEmailChallengeAsChallengeTypes(v *AuthenticatorEmailChallenge) ChallengeTypes { + return ChallengeTypes{ + AuthenticatorEmailChallenge: v, + } +} + +// AuthenticatorSMSChallengeAsChallengeTypes is a convenience function that returns AuthenticatorSMSChallenge wrapped in ChallengeTypes +func AuthenticatorSMSChallengeAsChallengeTypes(v *AuthenticatorSMSChallenge) ChallengeTypes { + return ChallengeTypes{ + AuthenticatorSMSChallenge: v, + } +} + +// AuthenticatorStaticChallengeAsChallengeTypes is a convenience function that returns AuthenticatorStaticChallenge wrapped in ChallengeTypes +func AuthenticatorStaticChallengeAsChallengeTypes(v *AuthenticatorStaticChallenge) ChallengeTypes { + return ChallengeTypes{ + AuthenticatorStaticChallenge: v, + } +} + +// AuthenticatorTOTPChallengeAsChallengeTypes is a convenience function that returns AuthenticatorTOTPChallenge wrapped in ChallengeTypes +func AuthenticatorTOTPChallengeAsChallengeTypes(v *AuthenticatorTOTPChallenge) ChallengeTypes { + return ChallengeTypes{ + AuthenticatorTOTPChallenge: v, + } +} + +// AuthenticatorValidationChallengeAsChallengeTypes is a convenience function that returns AuthenticatorValidationChallenge wrapped in ChallengeTypes +func AuthenticatorValidationChallengeAsChallengeTypes(v *AuthenticatorValidationChallenge) ChallengeTypes { + return ChallengeTypes{ + AuthenticatorValidationChallenge: v, + } +} + +// AuthenticatorWebAuthnChallengeAsChallengeTypes is a convenience function that returns AuthenticatorWebAuthnChallenge wrapped in ChallengeTypes +func AuthenticatorWebAuthnChallengeAsChallengeTypes(v *AuthenticatorWebAuthnChallenge) ChallengeTypes { + return ChallengeTypes{ + AuthenticatorWebAuthnChallenge: v, + } +} + +// AutosubmitChallengeAsChallengeTypes is a convenience function that returns AutosubmitChallenge wrapped in ChallengeTypes +func AutosubmitChallengeAsChallengeTypes(v *AutosubmitChallenge) ChallengeTypes { + return ChallengeTypes{ + AutosubmitChallenge: v, + } +} + +// CaptchaChallengeAsChallengeTypes is a convenience function that returns CaptchaChallenge wrapped in ChallengeTypes +func CaptchaChallengeAsChallengeTypes(v *CaptchaChallenge) ChallengeTypes { + return ChallengeTypes{ + CaptchaChallenge: v, + } +} + +// ConsentChallengeAsChallengeTypes is a convenience function that returns ConsentChallenge wrapped in ChallengeTypes +func ConsentChallengeAsChallengeTypes(v *ConsentChallenge) ChallengeTypes { + return ChallengeTypes{ + ConsentChallenge: v, + } +} + +// DummyChallengeAsChallengeTypes is a convenience function that returns DummyChallenge wrapped in ChallengeTypes +func DummyChallengeAsChallengeTypes(v *DummyChallenge) ChallengeTypes { + return ChallengeTypes{ + DummyChallenge: v, + } +} + +// EmailChallengeAsChallengeTypes is a convenience function that returns EmailChallenge wrapped in ChallengeTypes +func EmailChallengeAsChallengeTypes(v *EmailChallenge) ChallengeTypes { + return ChallengeTypes{ + EmailChallenge: v, + } +} + +// EndpointAgentChallengeAsChallengeTypes is a convenience function that returns EndpointAgentChallenge wrapped in ChallengeTypes +func EndpointAgentChallengeAsChallengeTypes(v *EndpointAgentChallenge) ChallengeTypes { + return ChallengeTypes{ + EndpointAgentChallenge: v, + } +} + +// FlowErrorChallengeAsChallengeTypes is a convenience function that returns FlowErrorChallenge wrapped in ChallengeTypes +func FlowErrorChallengeAsChallengeTypes(v *FlowErrorChallenge) ChallengeTypes { + return ChallengeTypes{ + FlowErrorChallenge: v, + } +} + +// FrameChallengeAsChallengeTypes is a convenience function that returns FrameChallenge wrapped in ChallengeTypes +func FrameChallengeAsChallengeTypes(v *FrameChallenge) ChallengeTypes { + return ChallengeTypes{ + FrameChallenge: v, + } +} + +// IdentificationChallengeAsChallengeTypes is a convenience function that returns IdentificationChallenge wrapped in ChallengeTypes +func IdentificationChallengeAsChallengeTypes(v *IdentificationChallenge) ChallengeTypes { + return ChallengeTypes{ + IdentificationChallenge: v, + } +} + +// IframeLogoutChallengeAsChallengeTypes is a convenience function that returns IframeLogoutChallenge wrapped in ChallengeTypes +func IframeLogoutChallengeAsChallengeTypes(v *IframeLogoutChallenge) ChallengeTypes { + return ChallengeTypes{ + IframeLogoutChallenge: v, + } +} + +// NativeLogoutChallengeAsChallengeTypes is a convenience function that returns NativeLogoutChallenge wrapped in ChallengeTypes +func NativeLogoutChallengeAsChallengeTypes(v *NativeLogoutChallenge) ChallengeTypes { + return ChallengeTypes{ + NativeLogoutChallenge: v, + } +} + +// OAuthDeviceCodeChallengeAsChallengeTypes is a convenience function that returns OAuthDeviceCodeChallenge wrapped in ChallengeTypes +func OAuthDeviceCodeChallengeAsChallengeTypes(v *OAuthDeviceCodeChallenge) ChallengeTypes { + return ChallengeTypes{ + OAuthDeviceCodeChallenge: v, + } +} + +// OAuthDeviceCodeFinishChallengeAsChallengeTypes is a convenience function that returns OAuthDeviceCodeFinishChallenge wrapped in ChallengeTypes +func OAuthDeviceCodeFinishChallengeAsChallengeTypes(v *OAuthDeviceCodeFinishChallenge) ChallengeTypes { + return ChallengeTypes{ + OAuthDeviceCodeFinishChallenge: v, + } +} + +// PasswordChallengeAsChallengeTypes is a convenience function that returns PasswordChallenge wrapped in ChallengeTypes +func PasswordChallengeAsChallengeTypes(v *PasswordChallenge) ChallengeTypes { + return ChallengeTypes{ + PasswordChallenge: v, + } +} + +// PlexAuthenticationChallengeAsChallengeTypes is a convenience function that returns PlexAuthenticationChallenge wrapped in ChallengeTypes +func PlexAuthenticationChallengeAsChallengeTypes(v *PlexAuthenticationChallenge) ChallengeTypes { + return ChallengeTypes{ + PlexAuthenticationChallenge: v, + } +} + +// PromptChallengeAsChallengeTypes is a convenience function that returns PromptChallenge wrapped in ChallengeTypes +func PromptChallengeAsChallengeTypes(v *PromptChallenge) ChallengeTypes { + return ChallengeTypes{ + PromptChallenge: v, + } +} + +// RedirectChallengeAsChallengeTypes is a convenience function that returns RedirectChallenge wrapped in ChallengeTypes +func RedirectChallengeAsChallengeTypes(v *RedirectChallenge) ChallengeTypes { + return ChallengeTypes{ + RedirectChallenge: v, + } +} + +// SessionEndChallengeAsChallengeTypes is a convenience function that returns SessionEndChallenge wrapped in ChallengeTypes +func SessionEndChallengeAsChallengeTypes(v *SessionEndChallenge) ChallengeTypes { + return ChallengeTypes{ + SessionEndChallenge: v, + } +} + +// ShellChallengeAsChallengeTypes is a convenience function that returns ShellChallenge wrapped in ChallengeTypes +func ShellChallengeAsChallengeTypes(v *ShellChallenge) ChallengeTypes { + return ChallengeTypes{ + ShellChallenge: v, + } +} + +// TelegramLoginChallengeAsChallengeTypes is a convenience function that returns TelegramLoginChallenge wrapped in ChallengeTypes +func TelegramLoginChallengeAsChallengeTypes(v *TelegramLoginChallenge) ChallengeTypes { + return ChallengeTypes{ + TelegramLoginChallenge: v, + } +} + +// UserLoginChallengeAsChallengeTypes is a convenience function that returns UserLoginChallenge wrapped in ChallengeTypes +func UserLoginChallengeAsChallengeTypes(v *UserLoginChallenge) ChallengeTypes { + return ChallengeTypes{ + UserLoginChallenge: v, + } +} + +// Unmarshal JSON data into one of the pointers in the struct +func (dst *ChallengeTypes) UnmarshalJSON(data []byte) error { + var err error + // use discriminator value to speed up the lookup + var jsonDict map[string]interface{} + err = newStrictDecoder(data).Decode(&jsonDict) + if err != nil { + return fmt.Errorf("failed to unmarshal JSON into map for the discriminator lookup") + } + + // check if the discriminator value is 'ak-provider-iframe-logout' + if jsonDict["component"] == "ak-provider-iframe-logout" { + // try to unmarshal JSON data into IframeLogoutChallenge + err = json.Unmarshal(data, &dst.IframeLogoutChallenge) + if err == nil { + return nil // data stored in dst.IframeLogoutChallenge, return on the first match + } else { + dst.IframeLogoutChallenge = nil + return fmt.Errorf("failed to unmarshal ChallengeTypes as IframeLogoutChallenge: %s", err.Error()) + } + } + + // check if the discriminator value is 'ak-provider-oauth2-device-code' + if jsonDict["component"] == "ak-provider-oauth2-device-code" { + // try to unmarshal JSON data into OAuthDeviceCodeChallenge + err = json.Unmarshal(data, &dst.OAuthDeviceCodeChallenge) + if err == nil { + return nil // data stored in dst.OAuthDeviceCodeChallenge, return on the first match + } else { + dst.OAuthDeviceCodeChallenge = nil + return fmt.Errorf("failed to unmarshal ChallengeTypes as OAuthDeviceCodeChallenge: %s", err.Error()) + } + } + + // check if the discriminator value is 'ak-provider-oauth2-device-code-finish' + if jsonDict["component"] == "ak-provider-oauth2-device-code-finish" { + // try to unmarshal JSON data into OAuthDeviceCodeFinishChallenge + err = json.Unmarshal(data, &dst.OAuthDeviceCodeFinishChallenge) + if err == nil { + return nil // data stored in dst.OAuthDeviceCodeFinishChallenge, return on the first match + } else { + dst.OAuthDeviceCodeFinishChallenge = nil + return fmt.Errorf("failed to unmarshal ChallengeTypes as OAuthDeviceCodeFinishChallenge: %s", err.Error()) + } + } + + // check if the discriminator value is 'ak-provider-saml-native-logout' + if jsonDict["component"] == "ak-provider-saml-native-logout" { + // try to unmarshal JSON data into NativeLogoutChallenge + err = json.Unmarshal(data, &dst.NativeLogoutChallenge) + if err == nil { + return nil // data stored in dst.NativeLogoutChallenge, return on the first match + } else { + dst.NativeLogoutChallenge = nil + return fmt.Errorf("failed to unmarshal ChallengeTypes as NativeLogoutChallenge: %s", err.Error()) + } + } + + // check if the discriminator value is 'ak-source-oauth-apple' + if jsonDict["component"] == "ak-source-oauth-apple" { + // try to unmarshal JSON data into AppleLoginChallenge + err = json.Unmarshal(data, &dst.AppleLoginChallenge) + if err == nil { + return nil // data stored in dst.AppleLoginChallenge, return on the first match + } else { + dst.AppleLoginChallenge = nil + return fmt.Errorf("failed to unmarshal ChallengeTypes as AppleLoginChallenge: %s", err.Error()) + } + } + + // check if the discriminator value is 'ak-source-plex' + if jsonDict["component"] == "ak-source-plex" { + // try to unmarshal JSON data into PlexAuthenticationChallenge + err = json.Unmarshal(data, &dst.PlexAuthenticationChallenge) + if err == nil { + return nil // data stored in dst.PlexAuthenticationChallenge, return on the first match + } else { + dst.PlexAuthenticationChallenge = nil + return fmt.Errorf("failed to unmarshal ChallengeTypes as PlexAuthenticationChallenge: %s", err.Error()) + } + } + + // check if the discriminator value is 'ak-source-telegram' + if jsonDict["component"] == "ak-source-telegram" { + // try to unmarshal JSON data into TelegramLoginChallenge + err = json.Unmarshal(data, &dst.TelegramLoginChallenge) + if err == nil { + return nil // data stored in dst.TelegramLoginChallenge, return on the first match + } else { + dst.TelegramLoginChallenge = nil + return fmt.Errorf("failed to unmarshal ChallengeTypes as TelegramLoginChallenge: %s", err.Error()) + } + } + + // check if the discriminator value is 'ak-stage-access-denied' + if jsonDict["component"] == "ak-stage-access-denied" { + // try to unmarshal JSON data into AccessDeniedChallenge + err = json.Unmarshal(data, &dst.AccessDeniedChallenge) + if err == nil { + return nil // data stored in dst.AccessDeniedChallenge, return on the first match + } else { + dst.AccessDeniedChallenge = nil + return fmt.Errorf("failed to unmarshal ChallengeTypes as AccessDeniedChallenge: %s", err.Error()) + } + } + + // check if the discriminator value is 'ak-stage-authenticator-duo' + if jsonDict["component"] == "ak-stage-authenticator-duo" { + // try to unmarshal JSON data into AuthenticatorDuoChallenge + err = json.Unmarshal(data, &dst.AuthenticatorDuoChallenge) + if err == nil { + return nil // data stored in dst.AuthenticatorDuoChallenge, return on the first match + } else { + dst.AuthenticatorDuoChallenge = nil + return fmt.Errorf("failed to unmarshal ChallengeTypes as AuthenticatorDuoChallenge: %s", err.Error()) + } + } + + // check if the discriminator value is 'ak-stage-authenticator-email' + if jsonDict["component"] == "ak-stage-authenticator-email" { + // try to unmarshal JSON data into AuthenticatorEmailChallenge + err = json.Unmarshal(data, &dst.AuthenticatorEmailChallenge) + if err == nil { + return nil // data stored in dst.AuthenticatorEmailChallenge, return on the first match + } else { + dst.AuthenticatorEmailChallenge = nil + return fmt.Errorf("failed to unmarshal ChallengeTypes as AuthenticatorEmailChallenge: %s", err.Error()) + } + } + + // check if the discriminator value is 'ak-stage-authenticator-sms' + if jsonDict["component"] == "ak-stage-authenticator-sms" { + // try to unmarshal JSON data into AuthenticatorSMSChallenge + err = json.Unmarshal(data, &dst.AuthenticatorSMSChallenge) + if err == nil { + return nil // data stored in dst.AuthenticatorSMSChallenge, return on the first match + } else { + dst.AuthenticatorSMSChallenge = nil + return fmt.Errorf("failed to unmarshal ChallengeTypes as AuthenticatorSMSChallenge: %s", err.Error()) + } + } + + // check if the discriminator value is 'ak-stage-authenticator-static' + if jsonDict["component"] == "ak-stage-authenticator-static" { + // try to unmarshal JSON data into AuthenticatorStaticChallenge + err = json.Unmarshal(data, &dst.AuthenticatorStaticChallenge) + if err == nil { + return nil // data stored in dst.AuthenticatorStaticChallenge, return on the first match + } else { + dst.AuthenticatorStaticChallenge = nil + return fmt.Errorf("failed to unmarshal ChallengeTypes as AuthenticatorStaticChallenge: %s", err.Error()) + } + } + + // check if the discriminator value is 'ak-stage-authenticator-totp' + if jsonDict["component"] == "ak-stage-authenticator-totp" { + // try to unmarshal JSON data into AuthenticatorTOTPChallenge + err = json.Unmarshal(data, &dst.AuthenticatorTOTPChallenge) + if err == nil { + return nil // data stored in dst.AuthenticatorTOTPChallenge, return on the first match + } else { + dst.AuthenticatorTOTPChallenge = nil + return fmt.Errorf("failed to unmarshal ChallengeTypes as AuthenticatorTOTPChallenge: %s", err.Error()) + } + } + + // check if the discriminator value is 'ak-stage-authenticator-validate' + if jsonDict["component"] == "ak-stage-authenticator-validate" { + // try to unmarshal JSON data into AuthenticatorValidationChallenge + err = json.Unmarshal(data, &dst.AuthenticatorValidationChallenge) + if err == nil { + return nil // data stored in dst.AuthenticatorValidationChallenge, return on the first match + } else { + dst.AuthenticatorValidationChallenge = nil + return fmt.Errorf("failed to unmarshal ChallengeTypes as AuthenticatorValidationChallenge: %s", err.Error()) + } + } + + // check if the discriminator value is 'ak-stage-authenticator-webauthn' + if jsonDict["component"] == "ak-stage-authenticator-webauthn" { + // try to unmarshal JSON data into AuthenticatorWebAuthnChallenge + err = json.Unmarshal(data, &dst.AuthenticatorWebAuthnChallenge) + if err == nil { + return nil // data stored in dst.AuthenticatorWebAuthnChallenge, return on the first match + } else { + dst.AuthenticatorWebAuthnChallenge = nil + return fmt.Errorf("failed to unmarshal ChallengeTypes as AuthenticatorWebAuthnChallenge: %s", err.Error()) + } + } + + // check if the discriminator value is 'ak-stage-autosubmit' + if jsonDict["component"] == "ak-stage-autosubmit" { + // try to unmarshal JSON data into AutosubmitChallenge + err = json.Unmarshal(data, &dst.AutosubmitChallenge) + if err == nil { + return nil // data stored in dst.AutosubmitChallenge, return on the first match + } else { + dst.AutosubmitChallenge = nil + return fmt.Errorf("failed to unmarshal ChallengeTypes as AutosubmitChallenge: %s", err.Error()) + } + } + + // check if the discriminator value is 'ak-stage-captcha' + if jsonDict["component"] == "ak-stage-captcha" { + // try to unmarshal JSON data into CaptchaChallenge + err = json.Unmarshal(data, &dst.CaptchaChallenge) + if err == nil { + return nil // data stored in dst.CaptchaChallenge, return on the first match + } else { + dst.CaptchaChallenge = nil + return fmt.Errorf("failed to unmarshal ChallengeTypes as CaptchaChallenge: %s", err.Error()) + } + } + + // check if the discriminator value is 'ak-stage-consent' + if jsonDict["component"] == "ak-stage-consent" { + // try to unmarshal JSON data into ConsentChallenge + err = json.Unmarshal(data, &dst.ConsentChallenge) + if err == nil { + return nil // data stored in dst.ConsentChallenge, return on the first match + } else { + dst.ConsentChallenge = nil + return fmt.Errorf("failed to unmarshal ChallengeTypes as ConsentChallenge: %s", err.Error()) + } + } + + // check if the discriminator value is 'ak-stage-dummy' + if jsonDict["component"] == "ak-stage-dummy" { + // try to unmarshal JSON data into DummyChallenge + err = json.Unmarshal(data, &dst.DummyChallenge) + if err == nil { + return nil // data stored in dst.DummyChallenge, return on the first match + } else { + dst.DummyChallenge = nil + return fmt.Errorf("failed to unmarshal ChallengeTypes as DummyChallenge: %s", err.Error()) + } + } + + // check if the discriminator value is 'ak-stage-email' + if jsonDict["component"] == "ak-stage-email" { + // try to unmarshal JSON data into EmailChallenge + err = json.Unmarshal(data, &dst.EmailChallenge) + if err == nil { + return nil // data stored in dst.EmailChallenge, return on the first match + } else { + dst.EmailChallenge = nil + return fmt.Errorf("failed to unmarshal ChallengeTypes as EmailChallenge: %s", err.Error()) + } + } + + // check if the discriminator value is 'ak-stage-endpoint-agent' + if jsonDict["component"] == "ak-stage-endpoint-agent" { + // try to unmarshal JSON data into EndpointAgentChallenge + err = json.Unmarshal(data, &dst.EndpointAgentChallenge) + if err == nil { + return nil // data stored in dst.EndpointAgentChallenge, return on the first match + } else { + dst.EndpointAgentChallenge = nil + return fmt.Errorf("failed to unmarshal ChallengeTypes as EndpointAgentChallenge: %s", err.Error()) + } + } + + // check if the discriminator value is 'ak-stage-flow-error' + if jsonDict["component"] == "ak-stage-flow-error" { + // try to unmarshal JSON data into FlowErrorChallenge + err = json.Unmarshal(data, &dst.FlowErrorChallenge) + if err == nil { + return nil // data stored in dst.FlowErrorChallenge, return on the first match + } else { + dst.FlowErrorChallenge = nil + return fmt.Errorf("failed to unmarshal ChallengeTypes as FlowErrorChallenge: %s", err.Error()) + } + } + + // check if the discriminator value is 'ak-stage-identification' + if jsonDict["component"] == "ak-stage-identification" { + // try to unmarshal JSON data into IdentificationChallenge + err = json.Unmarshal(data, &dst.IdentificationChallenge) + if err == nil { + return nil // data stored in dst.IdentificationChallenge, return on the first match + } else { + dst.IdentificationChallenge = nil + return fmt.Errorf("failed to unmarshal ChallengeTypes as IdentificationChallenge: %s", err.Error()) + } + } + + // check if the discriminator value is 'ak-stage-password' + if jsonDict["component"] == "ak-stage-password" { + // try to unmarshal JSON data into PasswordChallenge + err = json.Unmarshal(data, &dst.PasswordChallenge) + if err == nil { + return nil // data stored in dst.PasswordChallenge, return on the first match + } else { + dst.PasswordChallenge = nil + return fmt.Errorf("failed to unmarshal ChallengeTypes as PasswordChallenge: %s", err.Error()) + } + } + + // check if the discriminator value is 'ak-stage-prompt' + if jsonDict["component"] == "ak-stage-prompt" { + // try to unmarshal JSON data into PromptChallenge + err = json.Unmarshal(data, &dst.PromptChallenge) + if err == nil { + return nil // data stored in dst.PromptChallenge, return on the first match + } else { + dst.PromptChallenge = nil + return fmt.Errorf("failed to unmarshal ChallengeTypes as PromptChallenge: %s", err.Error()) + } + } + + // check if the discriminator value is 'ak-stage-session-end' + if jsonDict["component"] == "ak-stage-session-end" { + // try to unmarshal JSON data into SessionEndChallenge + err = json.Unmarshal(data, &dst.SessionEndChallenge) + if err == nil { + return nil // data stored in dst.SessionEndChallenge, return on the first match + } else { + dst.SessionEndChallenge = nil + return fmt.Errorf("failed to unmarshal ChallengeTypes as SessionEndChallenge: %s", err.Error()) + } + } + + // check if the discriminator value is 'ak-stage-user-login' + if jsonDict["component"] == "ak-stage-user-login" { + // try to unmarshal JSON data into UserLoginChallenge + err = json.Unmarshal(data, &dst.UserLoginChallenge) + if err == nil { + return nil // data stored in dst.UserLoginChallenge, return on the first match + } else { + dst.UserLoginChallenge = nil + return fmt.Errorf("failed to unmarshal ChallengeTypes as UserLoginChallenge: %s", err.Error()) + } + } + + // check if the discriminator value is 'xak-flow-frame' + if jsonDict["component"] == "xak-flow-frame" { + // try to unmarshal JSON data into FrameChallenge + err = json.Unmarshal(data, &dst.FrameChallenge) + if err == nil { + return nil // data stored in dst.FrameChallenge, return on the first match + } else { + dst.FrameChallenge = nil + return fmt.Errorf("failed to unmarshal ChallengeTypes as FrameChallenge: %s", err.Error()) + } + } + + // check if the discriminator value is 'xak-flow-redirect' + if jsonDict["component"] == "xak-flow-redirect" { + // try to unmarshal JSON data into RedirectChallenge + err = json.Unmarshal(data, &dst.RedirectChallenge) + if err == nil { + return nil // data stored in dst.RedirectChallenge, return on the first match + } else { + dst.RedirectChallenge = nil + return fmt.Errorf("failed to unmarshal ChallengeTypes as RedirectChallenge: %s", err.Error()) + } + } + + // check if the discriminator value is 'xak-flow-shell' + if jsonDict["component"] == "xak-flow-shell" { + // try to unmarshal JSON data into ShellChallenge + err = json.Unmarshal(data, &dst.ShellChallenge) + if err == nil { + return nil // data stored in dst.ShellChallenge, return on the first match + } else { + dst.ShellChallenge = nil + return fmt.Errorf("failed to unmarshal ChallengeTypes as ShellChallenge: %s", err.Error()) + } + } + + return nil +} + +// Marshal data from the first non-nil pointers in the struct to JSON +func (src ChallengeTypes) MarshalJSON() ([]byte, error) { + if src.AccessDeniedChallenge != nil { + return json.Marshal(&src.AccessDeniedChallenge) + } + + if src.AppleLoginChallenge != nil { + return json.Marshal(&src.AppleLoginChallenge) + } + + if src.AuthenticatorDuoChallenge != nil { + return json.Marshal(&src.AuthenticatorDuoChallenge) + } + + if src.AuthenticatorEmailChallenge != nil { + return json.Marshal(&src.AuthenticatorEmailChallenge) + } + + if src.AuthenticatorSMSChallenge != nil { + return json.Marshal(&src.AuthenticatorSMSChallenge) + } + + if src.AuthenticatorStaticChallenge != nil { + return json.Marshal(&src.AuthenticatorStaticChallenge) + } + + if src.AuthenticatorTOTPChallenge != nil { + return json.Marshal(&src.AuthenticatorTOTPChallenge) + } + + if src.AuthenticatorValidationChallenge != nil { + return json.Marshal(&src.AuthenticatorValidationChallenge) + } + + if src.AuthenticatorWebAuthnChallenge != nil { + return json.Marshal(&src.AuthenticatorWebAuthnChallenge) + } + + if src.AutosubmitChallenge != nil { + return json.Marshal(&src.AutosubmitChallenge) + } + + if src.CaptchaChallenge != nil { + return json.Marshal(&src.CaptchaChallenge) + } + + if src.ConsentChallenge != nil { + return json.Marshal(&src.ConsentChallenge) + } + + if src.DummyChallenge != nil { + return json.Marshal(&src.DummyChallenge) + } + + if src.EmailChallenge != nil { + return json.Marshal(&src.EmailChallenge) + } + + if src.EndpointAgentChallenge != nil { + return json.Marshal(&src.EndpointAgentChallenge) + } + + if src.FlowErrorChallenge != nil { + return json.Marshal(&src.FlowErrorChallenge) + } + + if src.FrameChallenge != nil { + return json.Marshal(&src.FrameChallenge) + } + + if src.IdentificationChallenge != nil { + return json.Marshal(&src.IdentificationChallenge) + } + + if src.IframeLogoutChallenge != nil { + return json.Marshal(&src.IframeLogoutChallenge) + } + + if src.NativeLogoutChallenge != nil { + return json.Marshal(&src.NativeLogoutChallenge) + } + + if src.OAuthDeviceCodeChallenge != nil { + return json.Marshal(&src.OAuthDeviceCodeChallenge) + } + + if src.OAuthDeviceCodeFinishChallenge != nil { + return json.Marshal(&src.OAuthDeviceCodeFinishChallenge) + } + + if src.PasswordChallenge != nil { + return json.Marshal(&src.PasswordChallenge) + } + + if src.PlexAuthenticationChallenge != nil { + return json.Marshal(&src.PlexAuthenticationChallenge) + } + + if src.PromptChallenge != nil { + return json.Marshal(&src.PromptChallenge) + } + + if src.RedirectChallenge != nil { + return json.Marshal(&src.RedirectChallenge) + } + + if src.SessionEndChallenge != nil { + return json.Marshal(&src.SessionEndChallenge) + } + + if src.ShellChallenge != nil { + return json.Marshal(&src.ShellChallenge) + } + + if src.TelegramLoginChallenge != nil { + return json.Marshal(&src.TelegramLoginChallenge) + } + + if src.UserLoginChallenge != nil { + return json.Marshal(&src.UserLoginChallenge) + } + + return nil, nil // no data in oneOf schemas +} + +// Get the actual instance +func (obj *ChallengeTypes) GetActualInstance() interface{} { + if obj == nil { + return nil + } + if obj.AccessDeniedChallenge != nil { + return obj.AccessDeniedChallenge + } + + if obj.AppleLoginChallenge != nil { + return obj.AppleLoginChallenge + } + + if obj.AuthenticatorDuoChallenge != nil { + return obj.AuthenticatorDuoChallenge + } + + if obj.AuthenticatorEmailChallenge != nil { + return obj.AuthenticatorEmailChallenge + } + + if obj.AuthenticatorSMSChallenge != nil { + return obj.AuthenticatorSMSChallenge + } + + if obj.AuthenticatorStaticChallenge != nil { + return obj.AuthenticatorStaticChallenge + } + + if obj.AuthenticatorTOTPChallenge != nil { + return obj.AuthenticatorTOTPChallenge + } + + if obj.AuthenticatorValidationChallenge != nil { + return obj.AuthenticatorValidationChallenge + } + + if obj.AuthenticatorWebAuthnChallenge != nil { + return obj.AuthenticatorWebAuthnChallenge + } + + if obj.AutosubmitChallenge != nil { + return obj.AutosubmitChallenge + } + + if obj.CaptchaChallenge != nil { + return obj.CaptchaChallenge + } + + if obj.ConsentChallenge != nil { + return obj.ConsentChallenge + } + + if obj.DummyChallenge != nil { + return obj.DummyChallenge + } + + if obj.EmailChallenge != nil { + return obj.EmailChallenge + } + + if obj.EndpointAgentChallenge != nil { + return obj.EndpointAgentChallenge + } + + if obj.FlowErrorChallenge != nil { + return obj.FlowErrorChallenge + } + + if obj.FrameChallenge != nil { + return obj.FrameChallenge + } + + if obj.IdentificationChallenge != nil { + return obj.IdentificationChallenge + } + + if obj.IframeLogoutChallenge != nil { + return obj.IframeLogoutChallenge + } + + if obj.NativeLogoutChallenge != nil { + return obj.NativeLogoutChallenge + } + + if obj.OAuthDeviceCodeChallenge != nil { + return obj.OAuthDeviceCodeChallenge + } + + if obj.OAuthDeviceCodeFinishChallenge != nil { + return obj.OAuthDeviceCodeFinishChallenge + } + + if obj.PasswordChallenge != nil { + return obj.PasswordChallenge + } + + if obj.PlexAuthenticationChallenge != nil { + return obj.PlexAuthenticationChallenge + } + + if obj.PromptChallenge != nil { + return obj.PromptChallenge + } + + if obj.RedirectChallenge != nil { + return obj.RedirectChallenge + } + + if obj.SessionEndChallenge != nil { + return obj.SessionEndChallenge + } + + if obj.ShellChallenge != nil { + return obj.ShellChallenge + } + + if obj.TelegramLoginChallenge != nil { + return obj.TelegramLoginChallenge + } + + if obj.UserLoginChallenge != nil { + return obj.UserLoginChallenge + } + + // all schemas are nil + return nil +} + +// Get the actual instance value +func (obj ChallengeTypes) GetActualInstanceValue() interface{} { + if obj.AccessDeniedChallenge != nil { + return *obj.AccessDeniedChallenge + } + + if obj.AppleLoginChallenge != nil { + return *obj.AppleLoginChallenge + } + + if obj.AuthenticatorDuoChallenge != nil { + return *obj.AuthenticatorDuoChallenge + } + + if obj.AuthenticatorEmailChallenge != nil { + return *obj.AuthenticatorEmailChallenge + } + + if obj.AuthenticatorSMSChallenge != nil { + return *obj.AuthenticatorSMSChallenge + } + + if obj.AuthenticatorStaticChallenge != nil { + return *obj.AuthenticatorStaticChallenge + } + + if obj.AuthenticatorTOTPChallenge != nil { + return *obj.AuthenticatorTOTPChallenge + } + + if obj.AuthenticatorValidationChallenge != nil { + return *obj.AuthenticatorValidationChallenge + } + + if obj.AuthenticatorWebAuthnChallenge != nil { + return *obj.AuthenticatorWebAuthnChallenge + } + + if obj.AutosubmitChallenge != nil { + return *obj.AutosubmitChallenge + } + + if obj.CaptchaChallenge != nil { + return *obj.CaptchaChallenge + } + + if obj.ConsentChallenge != nil { + return *obj.ConsentChallenge + } + + if obj.DummyChallenge != nil { + return *obj.DummyChallenge + } + + if obj.EmailChallenge != nil { + return *obj.EmailChallenge + } + + if obj.EndpointAgentChallenge != nil { + return *obj.EndpointAgentChallenge + } + + if obj.FlowErrorChallenge != nil { + return *obj.FlowErrorChallenge + } + + if obj.FrameChallenge != nil { + return *obj.FrameChallenge + } + + if obj.IdentificationChallenge != nil { + return *obj.IdentificationChallenge + } + + if obj.IframeLogoutChallenge != nil { + return *obj.IframeLogoutChallenge + } + + if obj.NativeLogoutChallenge != nil { + return *obj.NativeLogoutChallenge + } + + if obj.OAuthDeviceCodeChallenge != nil { + return *obj.OAuthDeviceCodeChallenge + } + + if obj.OAuthDeviceCodeFinishChallenge != nil { + return *obj.OAuthDeviceCodeFinishChallenge + } + + if obj.PasswordChallenge != nil { + return *obj.PasswordChallenge + } + + if obj.PlexAuthenticationChallenge != nil { + return *obj.PlexAuthenticationChallenge + } + + if obj.PromptChallenge != nil { + return *obj.PromptChallenge + } + + if obj.RedirectChallenge != nil { + return *obj.RedirectChallenge + } + + if obj.SessionEndChallenge != nil { + return *obj.SessionEndChallenge + } + + if obj.ShellChallenge != nil { + return *obj.ShellChallenge + } + + if obj.TelegramLoginChallenge != nil { + return *obj.TelegramLoginChallenge + } + + if obj.UserLoginChallenge != nil { + return *obj.UserLoginChallenge + } + + // all schemas are nil + return nil +} + +type NullableChallengeTypes struct { + value *ChallengeTypes + isSet bool +} + +func (v NullableChallengeTypes) Get() *ChallengeTypes { + return v.value +} + +func (v *NullableChallengeTypes) Set(val *ChallengeTypes) { + v.value = val + v.isSet = true +} + +func (v NullableChallengeTypes) IsSet() bool { + return v.isSet +} + +func (v *NullableChallengeTypes) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableChallengeTypes(val *ChallengeTypes) *NullableChallengeTypes { + return &NullableChallengeTypes{value: val, isSet: true} +} + +func (v NullableChallengeTypes) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableChallengeTypes) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_config.go b/packages/client-go/model_config.go new file mode 100644 index 0000000000..cd5c7f10cd --- /dev/null +++ b/packages/client-go/model_config.go @@ -0,0 +1,283 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// checks if the Config type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &Config{} + +// Config Serialize authentik Config into DRF Object +type Config struct { + ErrorReporting ErrorReportingConfig `json:"error_reporting"` + Capabilities []CapabilitiesEnum `json:"capabilities"` + CacheTimeout int32 `json:"cache_timeout"` + CacheTimeoutFlows int32 `json:"cache_timeout_flows"` + CacheTimeoutPolicies int32 `json:"cache_timeout_policies"` + AdditionalProperties map[string]interface{} +} + +type _Config Config + +// NewConfig instantiates a new Config object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewConfig(errorReporting ErrorReportingConfig, capabilities []CapabilitiesEnum, cacheTimeout int32, cacheTimeoutFlows int32, cacheTimeoutPolicies int32) *Config { + this := Config{} + this.ErrorReporting = errorReporting + this.Capabilities = capabilities + this.CacheTimeout = cacheTimeout + this.CacheTimeoutFlows = cacheTimeoutFlows + this.CacheTimeoutPolicies = cacheTimeoutPolicies + return &this +} + +// NewConfigWithDefaults instantiates a new Config object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewConfigWithDefaults() *Config { + this := Config{} + return &this +} + +// GetErrorReporting returns the ErrorReporting field value +func (o *Config) GetErrorReporting() ErrorReportingConfig { + if o == nil { + var ret ErrorReportingConfig + return ret + } + + return o.ErrorReporting +} + +// GetErrorReportingOk returns a tuple with the ErrorReporting field value +// and a boolean to check if the value has been set. +func (o *Config) GetErrorReportingOk() (*ErrorReportingConfig, bool) { + if o == nil { + return nil, false + } + return &o.ErrorReporting, true +} + +// SetErrorReporting sets field value +func (o *Config) SetErrorReporting(v ErrorReportingConfig) { + o.ErrorReporting = v +} + +// GetCapabilities returns the Capabilities field value +func (o *Config) GetCapabilities() []CapabilitiesEnum { + if o == nil { + var ret []CapabilitiesEnum + return ret + } + + return o.Capabilities +} + +// GetCapabilitiesOk returns a tuple with the Capabilities field value +// and a boolean to check if the value has been set. +func (o *Config) GetCapabilitiesOk() ([]CapabilitiesEnum, bool) { + if o == nil { + return nil, false + } + return o.Capabilities, true +} + +// SetCapabilities sets field value +func (o *Config) SetCapabilities(v []CapabilitiesEnum) { + o.Capabilities = v +} + +// GetCacheTimeout returns the CacheTimeout field value +func (o *Config) GetCacheTimeout() int32 { + if o == nil { + var ret int32 + return ret + } + + return o.CacheTimeout +} + +// GetCacheTimeoutOk returns a tuple with the CacheTimeout field value +// and a boolean to check if the value has been set. +func (o *Config) GetCacheTimeoutOk() (*int32, bool) { + if o == nil { + return nil, false + } + return &o.CacheTimeout, true +} + +// SetCacheTimeout sets field value +func (o *Config) SetCacheTimeout(v int32) { + o.CacheTimeout = v +} + +// GetCacheTimeoutFlows returns the CacheTimeoutFlows field value +func (o *Config) GetCacheTimeoutFlows() int32 { + if o == nil { + var ret int32 + return ret + } + + return o.CacheTimeoutFlows +} + +// GetCacheTimeoutFlowsOk returns a tuple with the CacheTimeoutFlows field value +// and a boolean to check if the value has been set. +func (o *Config) GetCacheTimeoutFlowsOk() (*int32, bool) { + if o == nil { + return nil, false + } + return &o.CacheTimeoutFlows, true +} + +// SetCacheTimeoutFlows sets field value +func (o *Config) SetCacheTimeoutFlows(v int32) { + o.CacheTimeoutFlows = v +} + +// GetCacheTimeoutPolicies returns the CacheTimeoutPolicies field value +func (o *Config) GetCacheTimeoutPolicies() int32 { + if o == nil { + var ret int32 + return ret + } + + return o.CacheTimeoutPolicies +} + +// GetCacheTimeoutPoliciesOk returns a tuple with the CacheTimeoutPolicies field value +// and a boolean to check if the value has been set. +func (o *Config) GetCacheTimeoutPoliciesOk() (*int32, bool) { + if o == nil { + return nil, false + } + return &o.CacheTimeoutPolicies, true +} + +// SetCacheTimeoutPolicies sets field value +func (o *Config) SetCacheTimeoutPolicies(v int32) { + o.CacheTimeoutPolicies = v +} + +func (o Config) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o Config) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + toSerialize["error_reporting"] = o.ErrorReporting + toSerialize["capabilities"] = o.Capabilities + toSerialize["cache_timeout"] = o.CacheTimeout + toSerialize["cache_timeout_flows"] = o.CacheTimeoutFlows + toSerialize["cache_timeout_policies"] = o.CacheTimeoutPolicies + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *Config) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "error_reporting", + "capabilities", + "cache_timeout", + "cache_timeout_flows", + "cache_timeout_policies", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varConfig := _Config{} + + err = json.Unmarshal(data, &varConfig) + + if err != nil { + return err + } + + *o = Config(varConfig) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "error_reporting") + delete(additionalProperties, "capabilities") + delete(additionalProperties, "cache_timeout") + delete(additionalProperties, "cache_timeout_flows") + delete(additionalProperties, "cache_timeout_policies") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableConfig struct { + value *Config + isSet bool +} + +func (v NullableConfig) Get() *Config { + return v.value +} + +func (v *NullableConfig) Set(val *Config) { + v.value = val + v.isSet = true +} + +func (v NullableConfig) IsSet() bool { + return v.isSet +} + +func (v *NullableConfig) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableConfig(val *Config) *NullableConfig { + return &NullableConfig{value: val, isSet: true} +} + +func (v NullableConfig) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableConfig) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_consent_challenge.go b/packages/client-go/model_consent_challenge.go new file mode 100644 index 0000000000..636cf73b47 --- /dev/null +++ b/packages/client-go/model_consent_challenge.go @@ -0,0 +1,435 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// checks if the ConsentChallenge type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &ConsentChallenge{} + +// ConsentChallenge Challenge info for consent screens +type ConsentChallenge struct { + FlowInfo *ContextualFlowInfo `json:"flow_info,omitempty"` + Component *string `json:"component,omitempty"` + ResponseErrors *map[string][]ErrorDetail `json:"response_errors,omitempty"` + PendingUser string `json:"pending_user"` + PendingUserAvatar string `json:"pending_user_avatar"` + HeaderText *string `json:"header_text,omitempty"` + Permissions []ConsentPermission `json:"permissions"` + AdditionalPermissions []ConsentPermission `json:"additional_permissions"` + Token string `json:"token"` + AdditionalProperties map[string]interface{} +} + +type _ConsentChallenge ConsentChallenge + +// NewConsentChallenge instantiates a new ConsentChallenge object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewConsentChallenge(pendingUser string, pendingUserAvatar string, permissions []ConsentPermission, additionalPermissions []ConsentPermission, token string) *ConsentChallenge { + this := ConsentChallenge{} + var component string = "ak-stage-consent" + this.Component = &component + this.PendingUser = pendingUser + this.PendingUserAvatar = pendingUserAvatar + this.Permissions = permissions + this.AdditionalPermissions = additionalPermissions + this.Token = token + return &this +} + +// NewConsentChallengeWithDefaults instantiates a new ConsentChallenge object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewConsentChallengeWithDefaults() *ConsentChallenge { + this := ConsentChallenge{} + var component string = "ak-stage-consent" + this.Component = &component + return &this +} + +// GetFlowInfo returns the FlowInfo field value if set, zero value otherwise. +func (o *ConsentChallenge) GetFlowInfo() ContextualFlowInfo { + if o == nil || IsNil(o.FlowInfo) { + var ret ContextualFlowInfo + return ret + } + return *o.FlowInfo +} + +// GetFlowInfoOk returns a tuple with the FlowInfo field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *ConsentChallenge) GetFlowInfoOk() (*ContextualFlowInfo, bool) { + if o == nil || IsNil(o.FlowInfo) { + return nil, false + } + return o.FlowInfo, true +} + +// HasFlowInfo returns a boolean if a field has been set. +func (o *ConsentChallenge) HasFlowInfo() bool { + if o != nil && !IsNil(o.FlowInfo) { + return true + } + + return false +} + +// SetFlowInfo gets a reference to the given ContextualFlowInfo and assigns it to the FlowInfo field. +func (o *ConsentChallenge) SetFlowInfo(v ContextualFlowInfo) { + o.FlowInfo = &v +} + +// GetComponent returns the Component field value if set, zero value otherwise. +func (o *ConsentChallenge) GetComponent() string { + if o == nil || IsNil(o.Component) { + var ret string + return ret + } + return *o.Component +} + +// GetComponentOk returns a tuple with the Component field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *ConsentChallenge) GetComponentOk() (*string, bool) { + if o == nil || IsNil(o.Component) { + return nil, false + } + return o.Component, true +} + +// HasComponent returns a boolean if a field has been set. +func (o *ConsentChallenge) HasComponent() bool { + if o != nil && !IsNil(o.Component) { + return true + } + + return false +} + +// SetComponent gets a reference to the given string and assigns it to the Component field. +func (o *ConsentChallenge) SetComponent(v string) { + o.Component = &v +} + +// GetResponseErrors returns the ResponseErrors field value if set, zero value otherwise. +func (o *ConsentChallenge) GetResponseErrors() map[string][]ErrorDetail { + if o == nil || IsNil(o.ResponseErrors) { + var ret map[string][]ErrorDetail + return ret + } + return *o.ResponseErrors +} + +// GetResponseErrorsOk returns a tuple with the ResponseErrors field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *ConsentChallenge) GetResponseErrorsOk() (*map[string][]ErrorDetail, bool) { + if o == nil || IsNil(o.ResponseErrors) { + return nil, false + } + return o.ResponseErrors, true +} + +// HasResponseErrors returns a boolean if a field has been set. +func (o *ConsentChallenge) HasResponseErrors() bool { + if o != nil && !IsNil(o.ResponseErrors) { + return true + } + + return false +} + +// SetResponseErrors gets a reference to the given map[string][]ErrorDetail and assigns it to the ResponseErrors field. +func (o *ConsentChallenge) SetResponseErrors(v map[string][]ErrorDetail) { + o.ResponseErrors = &v +} + +// GetPendingUser returns the PendingUser field value +func (o *ConsentChallenge) GetPendingUser() string { + if o == nil { + var ret string + return ret + } + + return o.PendingUser +} + +// GetPendingUserOk returns a tuple with the PendingUser field value +// and a boolean to check if the value has been set. +func (o *ConsentChallenge) GetPendingUserOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.PendingUser, true +} + +// SetPendingUser sets field value +func (o *ConsentChallenge) SetPendingUser(v string) { + o.PendingUser = v +} + +// GetPendingUserAvatar returns the PendingUserAvatar field value +func (o *ConsentChallenge) GetPendingUserAvatar() string { + if o == nil { + var ret string + return ret + } + + return o.PendingUserAvatar +} + +// GetPendingUserAvatarOk returns a tuple with the PendingUserAvatar field value +// and a boolean to check if the value has been set. +func (o *ConsentChallenge) GetPendingUserAvatarOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.PendingUserAvatar, true +} + +// SetPendingUserAvatar sets field value +func (o *ConsentChallenge) SetPendingUserAvatar(v string) { + o.PendingUserAvatar = v +} + +// GetHeaderText returns the HeaderText field value if set, zero value otherwise. +func (o *ConsentChallenge) GetHeaderText() string { + if o == nil || IsNil(o.HeaderText) { + var ret string + return ret + } + return *o.HeaderText +} + +// GetHeaderTextOk returns a tuple with the HeaderText field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *ConsentChallenge) GetHeaderTextOk() (*string, bool) { + if o == nil || IsNil(o.HeaderText) { + return nil, false + } + return o.HeaderText, true +} + +// HasHeaderText returns a boolean if a field has been set. +func (o *ConsentChallenge) HasHeaderText() bool { + if o != nil && !IsNil(o.HeaderText) { + return true + } + + return false +} + +// SetHeaderText gets a reference to the given string and assigns it to the HeaderText field. +func (o *ConsentChallenge) SetHeaderText(v string) { + o.HeaderText = &v +} + +// GetPermissions returns the Permissions field value +func (o *ConsentChallenge) GetPermissions() []ConsentPermission { + if o == nil { + var ret []ConsentPermission + return ret + } + + return o.Permissions +} + +// GetPermissionsOk returns a tuple with the Permissions field value +// and a boolean to check if the value has been set. +func (o *ConsentChallenge) GetPermissionsOk() ([]ConsentPermission, bool) { + if o == nil { + return nil, false + } + return o.Permissions, true +} + +// SetPermissions sets field value +func (o *ConsentChallenge) SetPermissions(v []ConsentPermission) { + o.Permissions = v +} + +// GetAdditionalPermissions returns the AdditionalPermissions field value +func (o *ConsentChallenge) GetAdditionalPermissions() []ConsentPermission { + if o == nil { + var ret []ConsentPermission + return ret + } + + return o.AdditionalPermissions +} + +// GetAdditionalPermissionsOk returns a tuple with the AdditionalPermissions field value +// and a boolean to check if the value has been set. +func (o *ConsentChallenge) GetAdditionalPermissionsOk() ([]ConsentPermission, bool) { + if o == nil { + return nil, false + } + return o.AdditionalPermissions, true +} + +// SetAdditionalPermissions sets field value +func (o *ConsentChallenge) SetAdditionalPermissions(v []ConsentPermission) { + o.AdditionalPermissions = v +} + +// GetToken returns the Token field value +func (o *ConsentChallenge) GetToken() string { + if o == nil { + var ret string + return ret + } + + return o.Token +} + +// GetTokenOk returns a tuple with the Token field value +// and a boolean to check if the value has been set. +func (o *ConsentChallenge) GetTokenOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Token, true +} + +// SetToken sets field value +func (o *ConsentChallenge) SetToken(v string) { + o.Token = v +} + +func (o ConsentChallenge) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o ConsentChallenge) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.FlowInfo) { + toSerialize["flow_info"] = o.FlowInfo + } + if !IsNil(o.Component) { + toSerialize["component"] = o.Component + } + if !IsNil(o.ResponseErrors) { + toSerialize["response_errors"] = o.ResponseErrors + } + toSerialize["pending_user"] = o.PendingUser + toSerialize["pending_user_avatar"] = o.PendingUserAvatar + if !IsNil(o.HeaderText) { + toSerialize["header_text"] = o.HeaderText + } + toSerialize["permissions"] = o.Permissions + toSerialize["additional_permissions"] = o.AdditionalPermissions + toSerialize["token"] = o.Token + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *ConsentChallenge) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "pending_user", + "pending_user_avatar", + "permissions", + "additional_permissions", + "token", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varConsentChallenge := _ConsentChallenge{} + + err = json.Unmarshal(data, &varConsentChallenge) + + if err != nil { + return err + } + + *o = ConsentChallenge(varConsentChallenge) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "flow_info") + delete(additionalProperties, "component") + delete(additionalProperties, "response_errors") + delete(additionalProperties, "pending_user") + delete(additionalProperties, "pending_user_avatar") + delete(additionalProperties, "header_text") + delete(additionalProperties, "permissions") + delete(additionalProperties, "additional_permissions") + delete(additionalProperties, "token") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableConsentChallenge struct { + value *ConsentChallenge + isSet bool +} + +func (v NullableConsentChallenge) Get() *ConsentChallenge { + return v.value +} + +func (v *NullableConsentChallenge) Set(val *ConsentChallenge) { + v.value = val + v.isSet = true +} + +func (v NullableConsentChallenge) IsSet() bool { + return v.isSet +} + +func (v *NullableConsentChallenge) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableConsentChallenge(val *ConsentChallenge) *NullableConsentChallenge { + return &NullableConsentChallenge{value: val, isSet: true} +} + +func (v NullableConsentChallenge) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableConsentChallenge) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_consent_challenge_response_request.go b/packages/client-go/model_consent_challenge_response_request.go new file mode 100644 index 0000000000..1d1bddb381 --- /dev/null +++ b/packages/client-go/model_consent_challenge_response_request.go @@ -0,0 +1,208 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// checks if the ConsentChallengeResponseRequest type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &ConsentChallengeResponseRequest{} + +// ConsentChallengeResponseRequest Consent challenge response, any valid response request is valid +type ConsentChallengeResponseRequest struct { + Component *string `json:"component,omitempty"` + Token string `json:"token"` + AdditionalProperties map[string]interface{} +} + +type _ConsentChallengeResponseRequest ConsentChallengeResponseRequest + +// NewConsentChallengeResponseRequest instantiates a new ConsentChallengeResponseRequest object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewConsentChallengeResponseRequest(token string) *ConsentChallengeResponseRequest { + this := ConsentChallengeResponseRequest{} + var component string = "ak-stage-consent" + this.Component = &component + this.Token = token + return &this +} + +// NewConsentChallengeResponseRequestWithDefaults instantiates a new ConsentChallengeResponseRequest object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewConsentChallengeResponseRequestWithDefaults() *ConsentChallengeResponseRequest { + this := ConsentChallengeResponseRequest{} + var component string = "ak-stage-consent" + this.Component = &component + return &this +} + +// GetComponent returns the Component field value if set, zero value otherwise. +func (o *ConsentChallengeResponseRequest) GetComponent() string { + if o == nil || IsNil(o.Component) { + var ret string + return ret + } + return *o.Component +} + +// GetComponentOk returns a tuple with the Component field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *ConsentChallengeResponseRequest) GetComponentOk() (*string, bool) { + if o == nil || IsNil(o.Component) { + return nil, false + } + return o.Component, true +} + +// HasComponent returns a boolean if a field has been set. +func (o *ConsentChallengeResponseRequest) HasComponent() bool { + if o != nil && !IsNil(o.Component) { + return true + } + + return false +} + +// SetComponent gets a reference to the given string and assigns it to the Component field. +func (o *ConsentChallengeResponseRequest) SetComponent(v string) { + o.Component = &v +} + +// GetToken returns the Token field value +func (o *ConsentChallengeResponseRequest) GetToken() string { + if o == nil { + var ret string + return ret + } + + return o.Token +} + +// GetTokenOk returns a tuple with the Token field value +// and a boolean to check if the value has been set. +func (o *ConsentChallengeResponseRequest) GetTokenOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Token, true +} + +// SetToken sets field value +func (o *ConsentChallengeResponseRequest) SetToken(v string) { + o.Token = v +} + +func (o ConsentChallengeResponseRequest) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o ConsentChallengeResponseRequest) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.Component) { + toSerialize["component"] = o.Component + } + toSerialize["token"] = o.Token + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *ConsentChallengeResponseRequest) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "token", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varConsentChallengeResponseRequest := _ConsentChallengeResponseRequest{} + + err = json.Unmarshal(data, &varConsentChallengeResponseRequest) + + if err != nil { + return err + } + + *o = ConsentChallengeResponseRequest(varConsentChallengeResponseRequest) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "component") + delete(additionalProperties, "token") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableConsentChallengeResponseRequest struct { + value *ConsentChallengeResponseRequest + isSet bool +} + +func (v NullableConsentChallengeResponseRequest) Get() *ConsentChallengeResponseRequest { + return v.value +} + +func (v *NullableConsentChallengeResponseRequest) Set(val *ConsentChallengeResponseRequest) { + v.value = val + v.isSet = true +} + +func (v NullableConsentChallengeResponseRequest) IsSet() bool { + return v.isSet +} + +func (v *NullableConsentChallengeResponseRequest) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableConsentChallengeResponseRequest(val *ConsentChallengeResponseRequest) *NullableConsentChallengeResponseRequest { + return &NullableConsentChallengeResponseRequest{value: val, isSet: true} +} + +func (v NullableConsentChallengeResponseRequest) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableConsentChallengeResponseRequest) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_consent_permission.go b/packages/client-go/model_consent_permission.go new file mode 100644 index 0000000000..03ed1fe989 --- /dev/null +++ b/packages/client-go/model_consent_permission.go @@ -0,0 +1,196 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// checks if the ConsentPermission type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &ConsentPermission{} + +// ConsentPermission Permission used for consent +type ConsentPermission struct { + Name string `json:"name"` + Id string `json:"id"` + AdditionalProperties map[string]interface{} +} + +type _ConsentPermission ConsentPermission + +// NewConsentPermission instantiates a new ConsentPermission object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewConsentPermission(name string, id string) *ConsentPermission { + this := ConsentPermission{} + this.Name = name + this.Id = id + return &this +} + +// NewConsentPermissionWithDefaults instantiates a new ConsentPermission object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewConsentPermissionWithDefaults() *ConsentPermission { + this := ConsentPermission{} + return &this +} + +// GetName returns the Name field value +func (o *ConsentPermission) GetName() string { + if o == nil { + var ret string + return ret + } + + return o.Name +} + +// GetNameOk returns a tuple with the Name field value +// and a boolean to check if the value has been set. +func (o *ConsentPermission) GetNameOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Name, true +} + +// SetName sets field value +func (o *ConsentPermission) SetName(v string) { + o.Name = v +} + +// GetId returns the Id field value +func (o *ConsentPermission) GetId() string { + if o == nil { + var ret string + return ret + } + + return o.Id +} + +// GetIdOk returns a tuple with the Id field value +// and a boolean to check if the value has been set. +func (o *ConsentPermission) GetIdOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Id, true +} + +// SetId sets field value +func (o *ConsentPermission) SetId(v string) { + o.Id = v +} + +func (o ConsentPermission) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o ConsentPermission) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + toSerialize["name"] = o.Name + toSerialize["id"] = o.Id + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *ConsentPermission) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "name", + "id", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varConsentPermission := _ConsentPermission{} + + err = json.Unmarshal(data, &varConsentPermission) + + if err != nil { + return err + } + + *o = ConsentPermission(varConsentPermission) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "name") + delete(additionalProperties, "id") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableConsentPermission struct { + value *ConsentPermission + isSet bool +} + +func (v NullableConsentPermission) Get() *ConsentPermission { + return v.value +} + +func (v *NullableConsentPermission) Set(val *ConsentPermission) { + v.value = val + v.isSet = true +} + +func (v NullableConsentPermission) IsSet() bool { + return v.isSet +} + +func (v *NullableConsentPermission) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableConsentPermission(val *ConsentPermission) *NullableConsentPermission { + return &NullableConsentPermission{value: val, isSet: true} +} + +func (v NullableConsentPermission) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableConsentPermission) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_contextual_flow_info.go b/packages/client-go/model_contextual_flow_info.go new file mode 100644 index 0000000000..cb87bce0a2 --- /dev/null +++ b/packages/client-go/model_contextual_flow_info.go @@ -0,0 +1,318 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// checks if the ContextualFlowInfo type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &ContextualFlowInfo{} + +// ContextualFlowInfo Contextual flow information for a challenge +type ContextualFlowInfo struct { + Title *string `json:"title,omitempty"` + Background *string `json:"background,omitempty"` + BackgroundThemedUrls NullableThemedUrls `json:"background_themed_urls,omitempty"` + CancelUrl string `json:"cancel_url"` + Layout ContextualFlowInfoLayoutEnum `json:"layout"` + AdditionalProperties map[string]interface{} +} + +type _ContextualFlowInfo ContextualFlowInfo + +// NewContextualFlowInfo instantiates a new ContextualFlowInfo object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewContextualFlowInfo(cancelUrl string, layout ContextualFlowInfoLayoutEnum) *ContextualFlowInfo { + this := ContextualFlowInfo{} + this.CancelUrl = cancelUrl + this.Layout = layout + return &this +} + +// NewContextualFlowInfoWithDefaults instantiates a new ContextualFlowInfo object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewContextualFlowInfoWithDefaults() *ContextualFlowInfo { + this := ContextualFlowInfo{} + return &this +} + +// GetTitle returns the Title field value if set, zero value otherwise. +func (o *ContextualFlowInfo) GetTitle() string { + if o == nil || IsNil(o.Title) { + var ret string + return ret + } + return *o.Title +} + +// GetTitleOk returns a tuple with the Title field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *ContextualFlowInfo) GetTitleOk() (*string, bool) { + if o == nil || IsNil(o.Title) { + return nil, false + } + return o.Title, true +} + +// HasTitle returns a boolean if a field has been set. +func (o *ContextualFlowInfo) HasTitle() bool { + if o != nil && !IsNil(o.Title) { + return true + } + + return false +} + +// SetTitle gets a reference to the given string and assigns it to the Title field. +func (o *ContextualFlowInfo) SetTitle(v string) { + o.Title = &v +} + +// GetBackground returns the Background field value if set, zero value otherwise. +func (o *ContextualFlowInfo) GetBackground() string { + if o == nil || IsNil(o.Background) { + var ret string + return ret + } + return *o.Background +} + +// GetBackgroundOk returns a tuple with the Background field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *ContextualFlowInfo) GetBackgroundOk() (*string, bool) { + if o == nil || IsNil(o.Background) { + return nil, false + } + return o.Background, true +} + +// HasBackground returns a boolean if a field has been set. +func (o *ContextualFlowInfo) HasBackground() bool { + if o != nil && !IsNil(o.Background) { + return true + } + + return false +} + +// SetBackground gets a reference to the given string and assigns it to the Background field. +func (o *ContextualFlowInfo) SetBackground(v string) { + o.Background = &v +} + +// GetBackgroundThemedUrls returns the BackgroundThemedUrls field value if set, zero value otherwise (both if not set or set to explicit null). +func (o *ContextualFlowInfo) GetBackgroundThemedUrls() ThemedUrls { + if o == nil || IsNil(o.BackgroundThemedUrls.Get()) { + var ret ThemedUrls + return ret + } + return *o.BackgroundThemedUrls.Get() +} + +// GetBackgroundThemedUrlsOk returns a tuple with the BackgroundThemedUrls field value if set, nil otherwise +// and a boolean to check if the value has been set. +// NOTE: If the value is an explicit nil, `nil, true` will be returned +func (o *ContextualFlowInfo) GetBackgroundThemedUrlsOk() (*ThemedUrls, bool) { + if o == nil { + return nil, false + } + return o.BackgroundThemedUrls.Get(), o.BackgroundThemedUrls.IsSet() +} + +// HasBackgroundThemedUrls returns a boolean if a field has been set. +func (o *ContextualFlowInfo) HasBackgroundThemedUrls() bool { + if o != nil && o.BackgroundThemedUrls.IsSet() { + return true + } + + return false +} + +// SetBackgroundThemedUrls gets a reference to the given NullableThemedUrls and assigns it to the BackgroundThemedUrls field. +func (o *ContextualFlowInfo) SetBackgroundThemedUrls(v ThemedUrls) { + o.BackgroundThemedUrls.Set(&v) +} + +// SetBackgroundThemedUrlsNil sets the value for BackgroundThemedUrls to be an explicit nil +func (o *ContextualFlowInfo) SetBackgroundThemedUrlsNil() { + o.BackgroundThemedUrls.Set(nil) +} + +// UnsetBackgroundThemedUrls ensures that no value is present for BackgroundThemedUrls, not even an explicit nil +func (o *ContextualFlowInfo) UnsetBackgroundThemedUrls() { + o.BackgroundThemedUrls.Unset() +} + +// GetCancelUrl returns the CancelUrl field value +func (o *ContextualFlowInfo) GetCancelUrl() string { + if o == nil { + var ret string + return ret + } + + return o.CancelUrl +} + +// GetCancelUrlOk returns a tuple with the CancelUrl field value +// and a boolean to check if the value has been set. +func (o *ContextualFlowInfo) GetCancelUrlOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.CancelUrl, true +} + +// SetCancelUrl sets field value +func (o *ContextualFlowInfo) SetCancelUrl(v string) { + o.CancelUrl = v +} + +// GetLayout returns the Layout field value +func (o *ContextualFlowInfo) GetLayout() ContextualFlowInfoLayoutEnum { + if o == nil { + var ret ContextualFlowInfoLayoutEnum + return ret + } + + return o.Layout +} + +// GetLayoutOk returns a tuple with the Layout field value +// and a boolean to check if the value has been set. +func (o *ContextualFlowInfo) GetLayoutOk() (*ContextualFlowInfoLayoutEnum, bool) { + if o == nil { + return nil, false + } + return &o.Layout, true +} + +// SetLayout sets field value +func (o *ContextualFlowInfo) SetLayout(v ContextualFlowInfoLayoutEnum) { + o.Layout = v +} + +func (o ContextualFlowInfo) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o ContextualFlowInfo) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.Title) { + toSerialize["title"] = o.Title + } + if !IsNil(o.Background) { + toSerialize["background"] = o.Background + } + if o.BackgroundThemedUrls.IsSet() { + toSerialize["background_themed_urls"] = o.BackgroundThemedUrls.Get() + } + toSerialize["cancel_url"] = o.CancelUrl + toSerialize["layout"] = o.Layout + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *ContextualFlowInfo) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "cancel_url", + "layout", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varContextualFlowInfo := _ContextualFlowInfo{} + + err = json.Unmarshal(data, &varContextualFlowInfo) + + if err != nil { + return err + } + + *o = ContextualFlowInfo(varContextualFlowInfo) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "title") + delete(additionalProperties, "background") + delete(additionalProperties, "background_themed_urls") + delete(additionalProperties, "cancel_url") + delete(additionalProperties, "layout") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableContextualFlowInfo struct { + value *ContextualFlowInfo + isSet bool +} + +func (v NullableContextualFlowInfo) Get() *ContextualFlowInfo { + return v.value +} + +func (v *NullableContextualFlowInfo) Set(val *ContextualFlowInfo) { + v.value = val + v.isSet = true +} + +func (v NullableContextualFlowInfo) IsSet() bool { + return v.isSet +} + +func (v *NullableContextualFlowInfo) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableContextualFlowInfo(val *ContextualFlowInfo) *NullableContextualFlowInfo { + return &NullableContextualFlowInfo{value: val, isSet: true} +} + +func (v NullableContextualFlowInfo) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableContextualFlowInfo) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_contextual_flow_info_layout_enum.go b/packages/client-go/model_contextual_flow_info_layout_enum.go new file mode 100644 index 0000000000..e5e56272da --- /dev/null +++ b/packages/client-go/model_contextual_flow_info_layout_enum.go @@ -0,0 +1,121 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// ContextualFlowInfoLayoutEnum the model 'ContextualFlowInfoLayoutEnum' +type ContextualFlowInfoLayoutEnum string + +// List of ContextualFlowInfoLayoutEnum +const ( + CONTEXTUALFLOWINFOLAYOUTENUM_STACKED ContextualFlowInfoLayoutEnum = "stacked" + CONTEXTUALFLOWINFOLAYOUTENUM_CONTENT_LEFT ContextualFlowInfoLayoutEnum = "content_left" + CONTEXTUALFLOWINFOLAYOUTENUM_CONTENT_RIGHT ContextualFlowInfoLayoutEnum = "content_right" + CONTEXTUALFLOWINFOLAYOUTENUM_SIDEBAR_LEFT ContextualFlowInfoLayoutEnum = "sidebar_left" + CONTEXTUALFLOWINFOLAYOUTENUM_SIDEBAR_RIGHT ContextualFlowInfoLayoutEnum = "sidebar_right" + CONTEXTUALFLOWINFOLAYOUTENUM_SIDEBAR_LEFT_FRAME_BACKGROUND ContextualFlowInfoLayoutEnum = "sidebar_left_frame_background" + CONTEXTUALFLOWINFOLAYOUTENUM_SIDEBAR_RIGHT_FRAME_BACKGROUND ContextualFlowInfoLayoutEnum = "sidebar_right_frame_background" +) + +// All allowed values of ContextualFlowInfoLayoutEnum enum +var AllowedContextualFlowInfoLayoutEnumEnumValues = []ContextualFlowInfoLayoutEnum{ + "stacked", + "content_left", + "content_right", + "sidebar_left", + "sidebar_right", + "sidebar_left_frame_background", + "sidebar_right_frame_background", +} + +func (v *ContextualFlowInfoLayoutEnum) UnmarshalJSON(src []byte) error { + var value string + err := json.Unmarshal(src, &value) + if err != nil { + return err + } + enumTypeValue := ContextualFlowInfoLayoutEnum(value) + for _, existing := range AllowedContextualFlowInfoLayoutEnumEnumValues { + if existing == enumTypeValue { + *v = enumTypeValue + return nil + } + } + + return fmt.Errorf("%+v is not a valid ContextualFlowInfoLayoutEnum", value) +} + +// NewContextualFlowInfoLayoutEnumFromValue returns a pointer to a valid ContextualFlowInfoLayoutEnum +// for the value passed as argument, or an error if the value passed is not allowed by the enum +func NewContextualFlowInfoLayoutEnumFromValue(v string) (*ContextualFlowInfoLayoutEnum, error) { + ev := ContextualFlowInfoLayoutEnum(v) + if ev.IsValid() { + return &ev, nil + } else { + return nil, fmt.Errorf("invalid value '%v' for ContextualFlowInfoLayoutEnum: valid values are %v", v, AllowedContextualFlowInfoLayoutEnumEnumValues) + } +} + +// IsValid return true if the value is valid for the enum, false otherwise +func (v ContextualFlowInfoLayoutEnum) IsValid() bool { + for _, existing := range AllowedContextualFlowInfoLayoutEnumEnumValues { + if existing == v { + return true + } + } + return false +} + +// Ptr returns reference to ContextualFlowInfoLayoutEnum value +func (v ContextualFlowInfoLayoutEnum) Ptr() *ContextualFlowInfoLayoutEnum { + return &v +} + +type NullableContextualFlowInfoLayoutEnum struct { + value *ContextualFlowInfoLayoutEnum + isSet bool +} + +func (v NullableContextualFlowInfoLayoutEnum) Get() *ContextualFlowInfoLayoutEnum { + return v.value +} + +func (v *NullableContextualFlowInfoLayoutEnum) Set(val *ContextualFlowInfoLayoutEnum) { + v.value = val + v.isSet = true +} + +func (v NullableContextualFlowInfoLayoutEnum) IsSet() bool { + return v.isSet +} + +func (v *NullableContextualFlowInfoLayoutEnum) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableContextualFlowInfoLayoutEnum(val *ContextualFlowInfoLayoutEnum) *NullableContextualFlowInfoLayoutEnum { + return &NullableContextualFlowInfoLayoutEnum{value: val, isSet: true} +} + +func (v NullableContextualFlowInfoLayoutEnum) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableContextualFlowInfoLayoutEnum) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_device_challenge.go b/packages/client-go/model_device_challenge.go new file mode 100644 index 0000000000..569c8f5d0d --- /dev/null +++ b/packages/client-go/model_device_challenge.go @@ -0,0 +1,257 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" + "time" +) + +// checks if the DeviceChallenge type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &DeviceChallenge{} + +// DeviceChallenge Single device challenge +type DeviceChallenge struct { + DeviceClass DeviceClassesEnum `json:"device_class"` + DeviceUid string `json:"device_uid"` + Challenge map[string]interface{} `json:"challenge"` + LastUsed NullableTime `json:"last_used"` + AdditionalProperties map[string]interface{} +} + +type _DeviceChallenge DeviceChallenge + +// NewDeviceChallenge instantiates a new DeviceChallenge object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewDeviceChallenge(deviceClass DeviceClassesEnum, deviceUid string, challenge map[string]interface{}, lastUsed NullableTime) *DeviceChallenge { + this := DeviceChallenge{} + this.DeviceClass = deviceClass + this.DeviceUid = deviceUid + this.Challenge = challenge + this.LastUsed = lastUsed + return &this +} + +// NewDeviceChallengeWithDefaults instantiates a new DeviceChallenge object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewDeviceChallengeWithDefaults() *DeviceChallenge { + this := DeviceChallenge{} + return &this +} + +// GetDeviceClass returns the DeviceClass field value +func (o *DeviceChallenge) GetDeviceClass() DeviceClassesEnum { + if o == nil { + var ret DeviceClassesEnum + return ret + } + + return o.DeviceClass +} + +// GetDeviceClassOk returns a tuple with the DeviceClass field value +// and a boolean to check if the value has been set. +func (o *DeviceChallenge) GetDeviceClassOk() (*DeviceClassesEnum, bool) { + if o == nil { + return nil, false + } + return &o.DeviceClass, true +} + +// SetDeviceClass sets field value +func (o *DeviceChallenge) SetDeviceClass(v DeviceClassesEnum) { + o.DeviceClass = v +} + +// GetDeviceUid returns the DeviceUid field value +func (o *DeviceChallenge) GetDeviceUid() string { + if o == nil { + var ret string + return ret + } + + return o.DeviceUid +} + +// GetDeviceUidOk returns a tuple with the DeviceUid field value +// and a boolean to check if the value has been set. +func (o *DeviceChallenge) GetDeviceUidOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.DeviceUid, true +} + +// SetDeviceUid sets field value +func (o *DeviceChallenge) SetDeviceUid(v string) { + o.DeviceUid = v +} + +// GetChallenge returns the Challenge field value +func (o *DeviceChallenge) GetChallenge() map[string]interface{} { + if o == nil { + var ret map[string]interface{} + return ret + } + + return o.Challenge +} + +// GetChallengeOk returns a tuple with the Challenge field value +// and a boolean to check if the value has been set. +func (o *DeviceChallenge) GetChallengeOk() (map[string]interface{}, bool) { + if o == nil { + return map[string]interface{}{}, false + } + return o.Challenge, true +} + +// SetChallenge sets field value +func (o *DeviceChallenge) SetChallenge(v map[string]interface{}) { + o.Challenge = v +} + +// GetLastUsed returns the LastUsed field value +// If the value is explicit nil, the zero value for time.Time will be returned +func (o *DeviceChallenge) GetLastUsed() time.Time { + if o == nil || o.LastUsed.Get() == nil { + var ret time.Time + return ret + } + + return *o.LastUsed.Get() +} + +// GetLastUsedOk returns a tuple with the LastUsed field value +// and a boolean to check if the value has been set. +// NOTE: If the value is an explicit nil, `nil, true` will be returned +func (o *DeviceChallenge) GetLastUsedOk() (*time.Time, bool) { + if o == nil { + return nil, false + } + return o.LastUsed.Get(), o.LastUsed.IsSet() +} + +// SetLastUsed sets field value +func (o *DeviceChallenge) SetLastUsed(v time.Time) { + o.LastUsed.Set(&v) +} + +func (o DeviceChallenge) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o DeviceChallenge) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + toSerialize["device_class"] = o.DeviceClass + toSerialize["device_uid"] = o.DeviceUid + toSerialize["challenge"] = o.Challenge + toSerialize["last_used"] = o.LastUsed.Get() + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *DeviceChallenge) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "device_class", + "device_uid", + "challenge", + "last_used", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varDeviceChallenge := _DeviceChallenge{} + + err = json.Unmarshal(data, &varDeviceChallenge) + + if err != nil { + return err + } + + *o = DeviceChallenge(varDeviceChallenge) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "device_class") + delete(additionalProperties, "device_uid") + delete(additionalProperties, "challenge") + delete(additionalProperties, "last_used") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableDeviceChallenge struct { + value *DeviceChallenge + isSet bool +} + +func (v NullableDeviceChallenge) Get() *DeviceChallenge { + return v.value +} + +func (v *NullableDeviceChallenge) Set(val *DeviceChallenge) { + v.value = val + v.isSet = true +} + +func (v NullableDeviceChallenge) IsSet() bool { + return v.isSet +} + +func (v *NullableDeviceChallenge) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableDeviceChallenge(val *DeviceChallenge) *NullableDeviceChallenge { + return &NullableDeviceChallenge{value: val, isSet: true} +} + +func (v NullableDeviceChallenge) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableDeviceChallenge) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_device_challenge_request.go b/packages/client-go/model_device_challenge_request.go new file mode 100644 index 0000000000..2ce0d053f8 --- /dev/null +++ b/packages/client-go/model_device_challenge_request.go @@ -0,0 +1,257 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" + "time" +) + +// checks if the DeviceChallengeRequest type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &DeviceChallengeRequest{} + +// DeviceChallengeRequest Single device challenge +type DeviceChallengeRequest struct { + DeviceClass DeviceClassesEnum `json:"device_class"` + DeviceUid string `json:"device_uid"` + Challenge map[string]interface{} `json:"challenge"` + LastUsed NullableTime `json:"last_used"` + AdditionalProperties map[string]interface{} +} + +type _DeviceChallengeRequest DeviceChallengeRequest + +// NewDeviceChallengeRequest instantiates a new DeviceChallengeRequest object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewDeviceChallengeRequest(deviceClass DeviceClassesEnum, deviceUid string, challenge map[string]interface{}, lastUsed NullableTime) *DeviceChallengeRequest { + this := DeviceChallengeRequest{} + this.DeviceClass = deviceClass + this.DeviceUid = deviceUid + this.Challenge = challenge + this.LastUsed = lastUsed + return &this +} + +// NewDeviceChallengeRequestWithDefaults instantiates a new DeviceChallengeRequest object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewDeviceChallengeRequestWithDefaults() *DeviceChallengeRequest { + this := DeviceChallengeRequest{} + return &this +} + +// GetDeviceClass returns the DeviceClass field value +func (o *DeviceChallengeRequest) GetDeviceClass() DeviceClassesEnum { + if o == nil { + var ret DeviceClassesEnum + return ret + } + + return o.DeviceClass +} + +// GetDeviceClassOk returns a tuple with the DeviceClass field value +// and a boolean to check if the value has been set. +func (o *DeviceChallengeRequest) GetDeviceClassOk() (*DeviceClassesEnum, bool) { + if o == nil { + return nil, false + } + return &o.DeviceClass, true +} + +// SetDeviceClass sets field value +func (o *DeviceChallengeRequest) SetDeviceClass(v DeviceClassesEnum) { + o.DeviceClass = v +} + +// GetDeviceUid returns the DeviceUid field value +func (o *DeviceChallengeRequest) GetDeviceUid() string { + if o == nil { + var ret string + return ret + } + + return o.DeviceUid +} + +// GetDeviceUidOk returns a tuple with the DeviceUid field value +// and a boolean to check if the value has been set. +func (o *DeviceChallengeRequest) GetDeviceUidOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.DeviceUid, true +} + +// SetDeviceUid sets field value +func (o *DeviceChallengeRequest) SetDeviceUid(v string) { + o.DeviceUid = v +} + +// GetChallenge returns the Challenge field value +func (o *DeviceChallengeRequest) GetChallenge() map[string]interface{} { + if o == nil { + var ret map[string]interface{} + return ret + } + + return o.Challenge +} + +// GetChallengeOk returns a tuple with the Challenge field value +// and a boolean to check if the value has been set. +func (o *DeviceChallengeRequest) GetChallengeOk() (map[string]interface{}, bool) { + if o == nil { + return map[string]interface{}{}, false + } + return o.Challenge, true +} + +// SetChallenge sets field value +func (o *DeviceChallengeRequest) SetChallenge(v map[string]interface{}) { + o.Challenge = v +} + +// GetLastUsed returns the LastUsed field value +// If the value is explicit nil, the zero value for time.Time will be returned +func (o *DeviceChallengeRequest) GetLastUsed() time.Time { + if o == nil || o.LastUsed.Get() == nil { + var ret time.Time + return ret + } + + return *o.LastUsed.Get() +} + +// GetLastUsedOk returns a tuple with the LastUsed field value +// and a boolean to check if the value has been set. +// NOTE: If the value is an explicit nil, `nil, true` will be returned +func (o *DeviceChallengeRequest) GetLastUsedOk() (*time.Time, bool) { + if o == nil { + return nil, false + } + return o.LastUsed.Get(), o.LastUsed.IsSet() +} + +// SetLastUsed sets field value +func (o *DeviceChallengeRequest) SetLastUsed(v time.Time) { + o.LastUsed.Set(&v) +} + +func (o DeviceChallengeRequest) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o DeviceChallengeRequest) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + toSerialize["device_class"] = o.DeviceClass + toSerialize["device_uid"] = o.DeviceUid + toSerialize["challenge"] = o.Challenge + toSerialize["last_used"] = o.LastUsed.Get() + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *DeviceChallengeRequest) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "device_class", + "device_uid", + "challenge", + "last_used", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varDeviceChallengeRequest := _DeviceChallengeRequest{} + + err = json.Unmarshal(data, &varDeviceChallengeRequest) + + if err != nil { + return err + } + + *o = DeviceChallengeRequest(varDeviceChallengeRequest) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "device_class") + delete(additionalProperties, "device_uid") + delete(additionalProperties, "challenge") + delete(additionalProperties, "last_used") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableDeviceChallengeRequest struct { + value *DeviceChallengeRequest + isSet bool +} + +func (v NullableDeviceChallengeRequest) Get() *DeviceChallengeRequest { + return v.value +} + +func (v *NullableDeviceChallengeRequest) Set(val *DeviceChallengeRequest) { + v.value = val + v.isSet = true +} + +func (v NullableDeviceChallengeRequest) IsSet() bool { + return v.isSet +} + +func (v *NullableDeviceChallengeRequest) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableDeviceChallengeRequest(val *DeviceChallengeRequest) *NullableDeviceChallengeRequest { + return &NullableDeviceChallengeRequest{value: val, isSet: true} +} + +func (v NullableDeviceChallengeRequest) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableDeviceChallengeRequest) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_device_classes_enum.go b/packages/client-go/model_device_classes_enum.go new file mode 100644 index 0000000000..b129b4bb63 --- /dev/null +++ b/packages/client-go/model_device_classes_enum.go @@ -0,0 +1,119 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// DeviceClassesEnum the model 'DeviceClassesEnum' +type DeviceClassesEnum string + +// List of DeviceClassesEnum +const ( + DEVICECLASSESENUM_STATIC DeviceClassesEnum = "static" + DEVICECLASSESENUM_TOTP DeviceClassesEnum = "totp" + DEVICECLASSESENUM_WEBAUTHN DeviceClassesEnum = "webauthn" + DEVICECLASSESENUM_DUO DeviceClassesEnum = "duo" + DEVICECLASSESENUM_SMS DeviceClassesEnum = "sms" + DEVICECLASSESENUM_EMAIL DeviceClassesEnum = "email" +) + +// All allowed values of DeviceClassesEnum enum +var AllowedDeviceClassesEnumEnumValues = []DeviceClassesEnum{ + "static", + "totp", + "webauthn", + "duo", + "sms", + "email", +} + +func (v *DeviceClassesEnum) UnmarshalJSON(src []byte) error { + var value string + err := json.Unmarshal(src, &value) + if err != nil { + return err + } + enumTypeValue := DeviceClassesEnum(value) + for _, existing := range AllowedDeviceClassesEnumEnumValues { + if existing == enumTypeValue { + *v = enumTypeValue + return nil + } + } + + return fmt.Errorf("%+v is not a valid DeviceClassesEnum", value) +} + +// NewDeviceClassesEnumFromValue returns a pointer to a valid DeviceClassesEnum +// for the value passed as argument, or an error if the value passed is not allowed by the enum +func NewDeviceClassesEnumFromValue(v string) (*DeviceClassesEnum, error) { + ev := DeviceClassesEnum(v) + if ev.IsValid() { + return &ev, nil + } else { + return nil, fmt.Errorf("invalid value '%v' for DeviceClassesEnum: valid values are %v", v, AllowedDeviceClassesEnumEnumValues) + } +} + +// IsValid return true if the value is valid for the enum, false otherwise +func (v DeviceClassesEnum) IsValid() bool { + for _, existing := range AllowedDeviceClassesEnumEnumValues { + if existing == v { + return true + } + } + return false +} + +// Ptr returns reference to DeviceClassesEnum value +func (v DeviceClassesEnum) Ptr() *DeviceClassesEnum { + return &v +} + +type NullableDeviceClassesEnum struct { + value *DeviceClassesEnum + isSet bool +} + +func (v NullableDeviceClassesEnum) Get() *DeviceClassesEnum { + return v.value +} + +func (v *NullableDeviceClassesEnum) Set(val *DeviceClassesEnum) { + v.value = val + v.isSet = true +} + +func (v NullableDeviceClassesEnum) IsSet() bool { + return v.isSet +} + +func (v *NullableDeviceClassesEnum) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableDeviceClassesEnum(val *DeviceClassesEnum) *NullableDeviceClassesEnum { + return &NullableDeviceClassesEnum{value: val, isSet: true} +} + +func (v NullableDeviceClassesEnum) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableDeviceClassesEnum) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_dummy_challenge.go b/packages/client-go/model_dummy_challenge.go new file mode 100644 index 0000000000..b331f061cd --- /dev/null +++ b/packages/client-go/model_dummy_challenge.go @@ -0,0 +1,282 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// checks if the DummyChallenge type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &DummyChallenge{} + +// DummyChallenge Dummy challenge +type DummyChallenge struct { + FlowInfo *ContextualFlowInfo `json:"flow_info,omitempty"` + Component *string `json:"component,omitempty"` + ResponseErrors *map[string][]ErrorDetail `json:"response_errors,omitempty"` + Name string `json:"name"` + AdditionalProperties map[string]interface{} +} + +type _DummyChallenge DummyChallenge + +// NewDummyChallenge instantiates a new DummyChallenge object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewDummyChallenge(name string) *DummyChallenge { + this := DummyChallenge{} + var component string = "ak-stage-dummy" + this.Component = &component + this.Name = name + return &this +} + +// NewDummyChallengeWithDefaults instantiates a new DummyChallenge object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewDummyChallengeWithDefaults() *DummyChallenge { + this := DummyChallenge{} + var component string = "ak-stage-dummy" + this.Component = &component + return &this +} + +// GetFlowInfo returns the FlowInfo field value if set, zero value otherwise. +func (o *DummyChallenge) GetFlowInfo() ContextualFlowInfo { + if o == nil || IsNil(o.FlowInfo) { + var ret ContextualFlowInfo + return ret + } + return *o.FlowInfo +} + +// GetFlowInfoOk returns a tuple with the FlowInfo field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DummyChallenge) GetFlowInfoOk() (*ContextualFlowInfo, bool) { + if o == nil || IsNil(o.FlowInfo) { + return nil, false + } + return o.FlowInfo, true +} + +// HasFlowInfo returns a boolean if a field has been set. +func (o *DummyChallenge) HasFlowInfo() bool { + if o != nil && !IsNil(o.FlowInfo) { + return true + } + + return false +} + +// SetFlowInfo gets a reference to the given ContextualFlowInfo and assigns it to the FlowInfo field. +func (o *DummyChallenge) SetFlowInfo(v ContextualFlowInfo) { + o.FlowInfo = &v +} + +// GetComponent returns the Component field value if set, zero value otherwise. +func (o *DummyChallenge) GetComponent() string { + if o == nil || IsNil(o.Component) { + var ret string + return ret + } + return *o.Component +} + +// GetComponentOk returns a tuple with the Component field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DummyChallenge) GetComponentOk() (*string, bool) { + if o == nil || IsNil(o.Component) { + return nil, false + } + return o.Component, true +} + +// HasComponent returns a boolean if a field has been set. +func (o *DummyChallenge) HasComponent() bool { + if o != nil && !IsNil(o.Component) { + return true + } + + return false +} + +// SetComponent gets a reference to the given string and assigns it to the Component field. +func (o *DummyChallenge) SetComponent(v string) { + o.Component = &v +} + +// GetResponseErrors returns the ResponseErrors field value if set, zero value otherwise. +func (o *DummyChallenge) GetResponseErrors() map[string][]ErrorDetail { + if o == nil || IsNil(o.ResponseErrors) { + var ret map[string][]ErrorDetail + return ret + } + return *o.ResponseErrors +} + +// GetResponseErrorsOk returns a tuple with the ResponseErrors field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DummyChallenge) GetResponseErrorsOk() (*map[string][]ErrorDetail, bool) { + if o == nil || IsNil(o.ResponseErrors) { + return nil, false + } + return o.ResponseErrors, true +} + +// HasResponseErrors returns a boolean if a field has been set. +func (o *DummyChallenge) HasResponseErrors() bool { + if o != nil && !IsNil(o.ResponseErrors) { + return true + } + + return false +} + +// SetResponseErrors gets a reference to the given map[string][]ErrorDetail and assigns it to the ResponseErrors field. +func (o *DummyChallenge) SetResponseErrors(v map[string][]ErrorDetail) { + o.ResponseErrors = &v +} + +// GetName returns the Name field value +func (o *DummyChallenge) GetName() string { + if o == nil { + var ret string + return ret + } + + return o.Name +} + +// GetNameOk returns a tuple with the Name field value +// and a boolean to check if the value has been set. +func (o *DummyChallenge) GetNameOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Name, true +} + +// SetName sets field value +func (o *DummyChallenge) SetName(v string) { + o.Name = v +} + +func (o DummyChallenge) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o DummyChallenge) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.FlowInfo) { + toSerialize["flow_info"] = o.FlowInfo + } + if !IsNil(o.Component) { + toSerialize["component"] = o.Component + } + if !IsNil(o.ResponseErrors) { + toSerialize["response_errors"] = o.ResponseErrors + } + toSerialize["name"] = o.Name + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *DummyChallenge) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "name", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varDummyChallenge := _DummyChallenge{} + + err = json.Unmarshal(data, &varDummyChallenge) + + if err != nil { + return err + } + + *o = DummyChallenge(varDummyChallenge) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "flow_info") + delete(additionalProperties, "component") + delete(additionalProperties, "response_errors") + delete(additionalProperties, "name") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableDummyChallenge struct { + value *DummyChallenge + isSet bool +} + +func (v NullableDummyChallenge) Get() *DummyChallenge { + return v.value +} + +func (v *NullableDummyChallenge) Set(val *DummyChallenge) { + v.value = val + v.isSet = true +} + +func (v NullableDummyChallenge) IsSet() bool { + return v.isSet +} + +func (v *NullableDummyChallenge) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableDummyChallenge(val *DummyChallenge) *NullableDummyChallenge { + return &NullableDummyChallenge{value: val, isSet: true} +} + +func (v NullableDummyChallenge) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableDummyChallenge) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_dummy_challenge_response_request.go b/packages/client-go/model_dummy_challenge_response_request.go new file mode 100644 index 0000000000..3309d04767 --- /dev/null +++ b/packages/client-go/model_dummy_challenge_response_request.go @@ -0,0 +1,158 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" +) + +// checks if the DummyChallengeResponseRequest type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &DummyChallengeResponseRequest{} + +// DummyChallengeResponseRequest Dummy challenge response +type DummyChallengeResponseRequest struct { + Component *string `json:"component,omitempty"` + AdditionalProperties map[string]interface{} +} + +type _DummyChallengeResponseRequest DummyChallengeResponseRequest + +// NewDummyChallengeResponseRequest instantiates a new DummyChallengeResponseRequest object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewDummyChallengeResponseRequest() *DummyChallengeResponseRequest { + this := DummyChallengeResponseRequest{} + var component string = "ak-stage-dummy" + this.Component = &component + return &this +} + +// NewDummyChallengeResponseRequestWithDefaults instantiates a new DummyChallengeResponseRequest object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewDummyChallengeResponseRequestWithDefaults() *DummyChallengeResponseRequest { + this := DummyChallengeResponseRequest{} + var component string = "ak-stage-dummy" + this.Component = &component + return &this +} + +// GetComponent returns the Component field value if set, zero value otherwise. +func (o *DummyChallengeResponseRequest) GetComponent() string { + if o == nil || IsNil(o.Component) { + var ret string + return ret + } + return *o.Component +} + +// GetComponentOk returns a tuple with the Component field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *DummyChallengeResponseRequest) GetComponentOk() (*string, bool) { + if o == nil || IsNil(o.Component) { + return nil, false + } + return o.Component, true +} + +// HasComponent returns a boolean if a field has been set. +func (o *DummyChallengeResponseRequest) HasComponent() bool { + if o != nil && !IsNil(o.Component) { + return true + } + + return false +} + +// SetComponent gets a reference to the given string and assigns it to the Component field. +func (o *DummyChallengeResponseRequest) SetComponent(v string) { + o.Component = &v +} + +func (o DummyChallengeResponseRequest) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o DummyChallengeResponseRequest) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.Component) { + toSerialize["component"] = o.Component + } + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *DummyChallengeResponseRequest) UnmarshalJSON(data []byte) (err error) { + varDummyChallengeResponseRequest := _DummyChallengeResponseRequest{} + + err = json.Unmarshal(data, &varDummyChallengeResponseRequest) + + if err != nil { + return err + } + + *o = DummyChallengeResponseRequest(varDummyChallengeResponseRequest) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "component") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableDummyChallengeResponseRequest struct { + value *DummyChallengeResponseRequest + isSet bool +} + +func (v NullableDummyChallengeResponseRequest) Get() *DummyChallengeResponseRequest { + return v.value +} + +func (v *NullableDummyChallengeResponseRequest) Set(val *DummyChallengeResponseRequest) { + v.value = val + v.isSet = true +} + +func (v NullableDummyChallengeResponseRequest) IsSet() bool { + return v.isSet +} + +func (v *NullableDummyChallengeResponseRequest) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableDummyChallengeResponseRequest(val *DummyChallengeResponseRequest) *NullableDummyChallengeResponseRequest { + return &NullableDummyChallengeResponseRequest{value: val, isSet: true} +} + +func (v NullableDummyChallengeResponseRequest) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableDummyChallengeResponseRequest) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_email_challenge.go b/packages/client-go/model_email_challenge.go new file mode 100644 index 0000000000..f52c946c2c --- /dev/null +++ b/packages/client-go/model_email_challenge.go @@ -0,0 +1,232 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" +) + +// checks if the EmailChallenge type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &EmailChallenge{} + +// EmailChallenge Email challenge +type EmailChallenge struct { + FlowInfo *ContextualFlowInfo `json:"flow_info,omitempty"` + Component *string `json:"component,omitempty"` + ResponseErrors *map[string][]ErrorDetail `json:"response_errors,omitempty"` + AdditionalProperties map[string]interface{} +} + +type _EmailChallenge EmailChallenge + +// NewEmailChallenge instantiates a new EmailChallenge object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewEmailChallenge() *EmailChallenge { + this := EmailChallenge{} + var component string = "ak-stage-email" + this.Component = &component + return &this +} + +// NewEmailChallengeWithDefaults instantiates a new EmailChallenge object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewEmailChallengeWithDefaults() *EmailChallenge { + this := EmailChallenge{} + var component string = "ak-stage-email" + this.Component = &component + return &this +} + +// GetFlowInfo returns the FlowInfo field value if set, zero value otherwise. +func (o *EmailChallenge) GetFlowInfo() ContextualFlowInfo { + if o == nil || IsNil(o.FlowInfo) { + var ret ContextualFlowInfo + return ret + } + return *o.FlowInfo +} + +// GetFlowInfoOk returns a tuple with the FlowInfo field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *EmailChallenge) GetFlowInfoOk() (*ContextualFlowInfo, bool) { + if o == nil || IsNil(o.FlowInfo) { + return nil, false + } + return o.FlowInfo, true +} + +// HasFlowInfo returns a boolean if a field has been set. +func (o *EmailChallenge) HasFlowInfo() bool { + if o != nil && !IsNil(o.FlowInfo) { + return true + } + + return false +} + +// SetFlowInfo gets a reference to the given ContextualFlowInfo and assigns it to the FlowInfo field. +func (o *EmailChallenge) SetFlowInfo(v ContextualFlowInfo) { + o.FlowInfo = &v +} + +// GetComponent returns the Component field value if set, zero value otherwise. +func (o *EmailChallenge) GetComponent() string { + if o == nil || IsNil(o.Component) { + var ret string + return ret + } + return *o.Component +} + +// GetComponentOk returns a tuple with the Component field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *EmailChallenge) GetComponentOk() (*string, bool) { + if o == nil || IsNil(o.Component) { + return nil, false + } + return o.Component, true +} + +// HasComponent returns a boolean if a field has been set. +func (o *EmailChallenge) HasComponent() bool { + if o != nil && !IsNil(o.Component) { + return true + } + + return false +} + +// SetComponent gets a reference to the given string and assigns it to the Component field. +func (o *EmailChallenge) SetComponent(v string) { + o.Component = &v +} + +// GetResponseErrors returns the ResponseErrors field value if set, zero value otherwise. +func (o *EmailChallenge) GetResponseErrors() map[string][]ErrorDetail { + if o == nil || IsNil(o.ResponseErrors) { + var ret map[string][]ErrorDetail + return ret + } + return *o.ResponseErrors +} + +// GetResponseErrorsOk returns a tuple with the ResponseErrors field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *EmailChallenge) GetResponseErrorsOk() (*map[string][]ErrorDetail, bool) { + if o == nil || IsNil(o.ResponseErrors) { + return nil, false + } + return o.ResponseErrors, true +} + +// HasResponseErrors returns a boolean if a field has been set. +func (o *EmailChallenge) HasResponseErrors() bool { + if o != nil && !IsNil(o.ResponseErrors) { + return true + } + + return false +} + +// SetResponseErrors gets a reference to the given map[string][]ErrorDetail and assigns it to the ResponseErrors field. +func (o *EmailChallenge) SetResponseErrors(v map[string][]ErrorDetail) { + o.ResponseErrors = &v +} + +func (o EmailChallenge) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o EmailChallenge) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.FlowInfo) { + toSerialize["flow_info"] = o.FlowInfo + } + if !IsNil(o.Component) { + toSerialize["component"] = o.Component + } + if !IsNil(o.ResponseErrors) { + toSerialize["response_errors"] = o.ResponseErrors + } + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *EmailChallenge) UnmarshalJSON(data []byte) (err error) { + varEmailChallenge := _EmailChallenge{} + + err = json.Unmarshal(data, &varEmailChallenge) + + if err != nil { + return err + } + + *o = EmailChallenge(varEmailChallenge) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "flow_info") + delete(additionalProperties, "component") + delete(additionalProperties, "response_errors") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableEmailChallenge struct { + value *EmailChallenge + isSet bool +} + +func (v NullableEmailChallenge) Get() *EmailChallenge { + return v.value +} + +func (v *NullableEmailChallenge) Set(val *EmailChallenge) { + v.value = val + v.isSet = true +} + +func (v NullableEmailChallenge) IsSet() bool { + return v.isSet +} + +func (v *NullableEmailChallenge) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableEmailChallenge(val *EmailChallenge) *NullableEmailChallenge { + return &NullableEmailChallenge{value: val, isSet: true} +} + +func (v NullableEmailChallenge) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableEmailChallenge) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_email_challenge_response_request.go b/packages/client-go/model_email_challenge_response_request.go new file mode 100644 index 0000000000..b83ac5d473 --- /dev/null +++ b/packages/client-go/model_email_challenge_response_request.go @@ -0,0 +1,158 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" +) + +// checks if the EmailChallengeResponseRequest type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &EmailChallengeResponseRequest{} + +// EmailChallengeResponseRequest Email challenge resposen. No fields. This challenge is always declared invalid to give the user a chance to retry +type EmailChallengeResponseRequest struct { + Component *string `json:"component,omitempty"` + AdditionalProperties map[string]interface{} +} + +type _EmailChallengeResponseRequest EmailChallengeResponseRequest + +// NewEmailChallengeResponseRequest instantiates a new EmailChallengeResponseRequest object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewEmailChallengeResponseRequest() *EmailChallengeResponseRequest { + this := EmailChallengeResponseRequest{} + var component string = "ak-stage-email" + this.Component = &component + return &this +} + +// NewEmailChallengeResponseRequestWithDefaults instantiates a new EmailChallengeResponseRequest object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewEmailChallengeResponseRequestWithDefaults() *EmailChallengeResponseRequest { + this := EmailChallengeResponseRequest{} + var component string = "ak-stage-email" + this.Component = &component + return &this +} + +// GetComponent returns the Component field value if set, zero value otherwise. +func (o *EmailChallengeResponseRequest) GetComponent() string { + if o == nil || IsNil(o.Component) { + var ret string + return ret + } + return *o.Component +} + +// GetComponentOk returns a tuple with the Component field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *EmailChallengeResponseRequest) GetComponentOk() (*string, bool) { + if o == nil || IsNil(o.Component) { + return nil, false + } + return o.Component, true +} + +// HasComponent returns a boolean if a field has been set. +func (o *EmailChallengeResponseRequest) HasComponent() bool { + if o != nil && !IsNil(o.Component) { + return true + } + + return false +} + +// SetComponent gets a reference to the given string and assigns it to the Component field. +func (o *EmailChallengeResponseRequest) SetComponent(v string) { + o.Component = &v +} + +func (o EmailChallengeResponseRequest) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o EmailChallengeResponseRequest) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.Component) { + toSerialize["component"] = o.Component + } + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *EmailChallengeResponseRequest) UnmarshalJSON(data []byte) (err error) { + varEmailChallengeResponseRequest := _EmailChallengeResponseRequest{} + + err = json.Unmarshal(data, &varEmailChallengeResponseRequest) + + if err != nil { + return err + } + + *o = EmailChallengeResponseRequest(varEmailChallengeResponseRequest) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "component") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableEmailChallengeResponseRequest struct { + value *EmailChallengeResponseRequest + isSet bool +} + +func (v NullableEmailChallengeResponseRequest) Get() *EmailChallengeResponseRequest { + return v.value +} + +func (v *NullableEmailChallengeResponseRequest) Set(val *EmailChallengeResponseRequest) { + v.value = val + v.isSet = true +} + +func (v NullableEmailChallengeResponseRequest) IsSet() bool { + return v.isSet +} + +func (v *NullableEmailChallengeResponseRequest) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableEmailChallengeResponseRequest(val *EmailChallengeResponseRequest) *NullableEmailChallengeResponseRequest { + return &NullableEmailChallengeResponseRequest{value: val, isSet: true} +} + +func (v NullableEmailChallengeResponseRequest) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableEmailChallengeResponseRequest) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_endpoint_agent_challenge.go b/packages/client-go/model_endpoint_agent_challenge.go new file mode 100644 index 0000000000..255635736c --- /dev/null +++ b/packages/client-go/model_endpoint_agent_challenge.go @@ -0,0 +1,311 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// checks if the EndpointAgentChallenge type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &EndpointAgentChallenge{} + +// EndpointAgentChallenge Signed challenge for authentik agent to respond to +type EndpointAgentChallenge struct { + FlowInfo *ContextualFlowInfo `json:"flow_info,omitempty"` + Component *string `json:"component,omitempty"` + ResponseErrors *map[string][]ErrorDetail `json:"response_errors,omitempty"` + Challenge string `json:"challenge"` + ChallengeIdleTimeout int32 `json:"challenge_idle_timeout"` + AdditionalProperties map[string]interface{} +} + +type _EndpointAgentChallenge EndpointAgentChallenge + +// NewEndpointAgentChallenge instantiates a new EndpointAgentChallenge object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewEndpointAgentChallenge(challenge string, challengeIdleTimeout int32) *EndpointAgentChallenge { + this := EndpointAgentChallenge{} + var component string = "ak-stage-endpoint-agent" + this.Component = &component + this.Challenge = challenge + this.ChallengeIdleTimeout = challengeIdleTimeout + return &this +} + +// NewEndpointAgentChallengeWithDefaults instantiates a new EndpointAgentChallenge object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewEndpointAgentChallengeWithDefaults() *EndpointAgentChallenge { + this := EndpointAgentChallenge{} + var component string = "ak-stage-endpoint-agent" + this.Component = &component + return &this +} + +// GetFlowInfo returns the FlowInfo field value if set, zero value otherwise. +func (o *EndpointAgentChallenge) GetFlowInfo() ContextualFlowInfo { + if o == nil || IsNil(o.FlowInfo) { + var ret ContextualFlowInfo + return ret + } + return *o.FlowInfo +} + +// GetFlowInfoOk returns a tuple with the FlowInfo field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *EndpointAgentChallenge) GetFlowInfoOk() (*ContextualFlowInfo, bool) { + if o == nil || IsNil(o.FlowInfo) { + return nil, false + } + return o.FlowInfo, true +} + +// HasFlowInfo returns a boolean if a field has been set. +func (o *EndpointAgentChallenge) HasFlowInfo() bool { + if o != nil && !IsNil(o.FlowInfo) { + return true + } + + return false +} + +// SetFlowInfo gets a reference to the given ContextualFlowInfo and assigns it to the FlowInfo field. +func (o *EndpointAgentChallenge) SetFlowInfo(v ContextualFlowInfo) { + o.FlowInfo = &v +} + +// GetComponent returns the Component field value if set, zero value otherwise. +func (o *EndpointAgentChallenge) GetComponent() string { + if o == nil || IsNil(o.Component) { + var ret string + return ret + } + return *o.Component +} + +// GetComponentOk returns a tuple with the Component field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *EndpointAgentChallenge) GetComponentOk() (*string, bool) { + if o == nil || IsNil(o.Component) { + return nil, false + } + return o.Component, true +} + +// HasComponent returns a boolean if a field has been set. +func (o *EndpointAgentChallenge) HasComponent() bool { + if o != nil && !IsNil(o.Component) { + return true + } + + return false +} + +// SetComponent gets a reference to the given string and assigns it to the Component field. +func (o *EndpointAgentChallenge) SetComponent(v string) { + o.Component = &v +} + +// GetResponseErrors returns the ResponseErrors field value if set, zero value otherwise. +func (o *EndpointAgentChallenge) GetResponseErrors() map[string][]ErrorDetail { + if o == nil || IsNil(o.ResponseErrors) { + var ret map[string][]ErrorDetail + return ret + } + return *o.ResponseErrors +} + +// GetResponseErrorsOk returns a tuple with the ResponseErrors field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *EndpointAgentChallenge) GetResponseErrorsOk() (*map[string][]ErrorDetail, bool) { + if o == nil || IsNil(o.ResponseErrors) { + return nil, false + } + return o.ResponseErrors, true +} + +// HasResponseErrors returns a boolean if a field has been set. +func (o *EndpointAgentChallenge) HasResponseErrors() bool { + if o != nil && !IsNil(o.ResponseErrors) { + return true + } + + return false +} + +// SetResponseErrors gets a reference to the given map[string][]ErrorDetail and assigns it to the ResponseErrors field. +func (o *EndpointAgentChallenge) SetResponseErrors(v map[string][]ErrorDetail) { + o.ResponseErrors = &v +} + +// GetChallenge returns the Challenge field value +func (o *EndpointAgentChallenge) GetChallenge() string { + if o == nil { + var ret string + return ret + } + + return o.Challenge +} + +// GetChallengeOk returns a tuple with the Challenge field value +// and a boolean to check if the value has been set. +func (o *EndpointAgentChallenge) GetChallengeOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Challenge, true +} + +// SetChallenge sets field value +func (o *EndpointAgentChallenge) SetChallenge(v string) { + o.Challenge = v +} + +// GetChallengeIdleTimeout returns the ChallengeIdleTimeout field value +func (o *EndpointAgentChallenge) GetChallengeIdleTimeout() int32 { + if o == nil { + var ret int32 + return ret + } + + return o.ChallengeIdleTimeout +} + +// GetChallengeIdleTimeoutOk returns a tuple with the ChallengeIdleTimeout field value +// and a boolean to check if the value has been set. +func (o *EndpointAgentChallenge) GetChallengeIdleTimeoutOk() (*int32, bool) { + if o == nil { + return nil, false + } + return &o.ChallengeIdleTimeout, true +} + +// SetChallengeIdleTimeout sets field value +func (o *EndpointAgentChallenge) SetChallengeIdleTimeout(v int32) { + o.ChallengeIdleTimeout = v +} + +func (o EndpointAgentChallenge) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o EndpointAgentChallenge) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.FlowInfo) { + toSerialize["flow_info"] = o.FlowInfo + } + if !IsNil(o.Component) { + toSerialize["component"] = o.Component + } + if !IsNil(o.ResponseErrors) { + toSerialize["response_errors"] = o.ResponseErrors + } + toSerialize["challenge"] = o.Challenge + toSerialize["challenge_idle_timeout"] = o.ChallengeIdleTimeout + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *EndpointAgentChallenge) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "challenge", + "challenge_idle_timeout", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varEndpointAgentChallenge := _EndpointAgentChallenge{} + + err = json.Unmarshal(data, &varEndpointAgentChallenge) + + if err != nil { + return err + } + + *o = EndpointAgentChallenge(varEndpointAgentChallenge) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "flow_info") + delete(additionalProperties, "component") + delete(additionalProperties, "response_errors") + delete(additionalProperties, "challenge") + delete(additionalProperties, "challenge_idle_timeout") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableEndpointAgentChallenge struct { + value *EndpointAgentChallenge + isSet bool +} + +func (v NullableEndpointAgentChallenge) Get() *EndpointAgentChallenge { + return v.value +} + +func (v *NullableEndpointAgentChallenge) Set(val *EndpointAgentChallenge) { + v.value = val + v.isSet = true +} + +func (v NullableEndpointAgentChallenge) IsSet() bool { + return v.isSet +} + +func (v *NullableEndpointAgentChallenge) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableEndpointAgentChallenge(val *EndpointAgentChallenge) *NullableEndpointAgentChallenge { + return &NullableEndpointAgentChallenge{value: val, isSet: true} +} + +func (v NullableEndpointAgentChallenge) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableEndpointAgentChallenge) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_endpoint_agent_challenge_response_request.go b/packages/client-go/model_endpoint_agent_challenge_response_request.go new file mode 100644 index 0000000000..63bab9c044 --- /dev/null +++ b/packages/client-go/model_endpoint_agent_challenge_response_request.go @@ -0,0 +1,206 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" +) + +// checks if the EndpointAgentChallengeResponseRequest type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &EndpointAgentChallengeResponseRequest{} + +// EndpointAgentChallengeResponseRequest Response to signed challenge +type EndpointAgentChallengeResponseRequest struct { + Component *string `json:"component,omitempty"` + Response NullableString `json:"response,omitempty"` + AdditionalProperties map[string]interface{} +} + +type _EndpointAgentChallengeResponseRequest EndpointAgentChallengeResponseRequest + +// NewEndpointAgentChallengeResponseRequest instantiates a new EndpointAgentChallengeResponseRequest object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewEndpointAgentChallengeResponseRequest() *EndpointAgentChallengeResponseRequest { + this := EndpointAgentChallengeResponseRequest{} + var component string = "ak-stage-endpoint-agent" + this.Component = &component + return &this +} + +// NewEndpointAgentChallengeResponseRequestWithDefaults instantiates a new EndpointAgentChallengeResponseRequest object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewEndpointAgentChallengeResponseRequestWithDefaults() *EndpointAgentChallengeResponseRequest { + this := EndpointAgentChallengeResponseRequest{} + var component string = "ak-stage-endpoint-agent" + this.Component = &component + return &this +} + +// GetComponent returns the Component field value if set, zero value otherwise. +func (o *EndpointAgentChallengeResponseRequest) GetComponent() string { + if o == nil || IsNil(o.Component) { + var ret string + return ret + } + return *o.Component +} + +// GetComponentOk returns a tuple with the Component field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *EndpointAgentChallengeResponseRequest) GetComponentOk() (*string, bool) { + if o == nil || IsNil(o.Component) { + return nil, false + } + return o.Component, true +} + +// HasComponent returns a boolean if a field has been set. +func (o *EndpointAgentChallengeResponseRequest) HasComponent() bool { + if o != nil && !IsNil(o.Component) { + return true + } + + return false +} + +// SetComponent gets a reference to the given string and assigns it to the Component field. +func (o *EndpointAgentChallengeResponseRequest) SetComponent(v string) { + o.Component = &v +} + +// GetResponse returns the Response field value if set, zero value otherwise (both if not set or set to explicit null). +func (o *EndpointAgentChallengeResponseRequest) GetResponse() string { + if o == nil || IsNil(o.Response.Get()) { + var ret string + return ret + } + return *o.Response.Get() +} + +// GetResponseOk returns a tuple with the Response field value if set, nil otherwise +// and a boolean to check if the value has been set. +// NOTE: If the value is an explicit nil, `nil, true` will be returned +func (o *EndpointAgentChallengeResponseRequest) GetResponseOk() (*string, bool) { + if o == nil { + return nil, false + } + return o.Response.Get(), o.Response.IsSet() +} + +// HasResponse returns a boolean if a field has been set. +func (o *EndpointAgentChallengeResponseRequest) HasResponse() bool { + if o != nil && o.Response.IsSet() { + return true + } + + return false +} + +// SetResponse gets a reference to the given NullableString and assigns it to the Response field. +func (o *EndpointAgentChallengeResponseRequest) SetResponse(v string) { + o.Response.Set(&v) +} + +// SetResponseNil sets the value for Response to be an explicit nil +func (o *EndpointAgentChallengeResponseRequest) SetResponseNil() { + o.Response.Set(nil) +} + +// UnsetResponse ensures that no value is present for Response, not even an explicit nil +func (o *EndpointAgentChallengeResponseRequest) UnsetResponse() { + o.Response.Unset() +} + +func (o EndpointAgentChallengeResponseRequest) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o EndpointAgentChallengeResponseRequest) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.Component) { + toSerialize["component"] = o.Component + } + if o.Response.IsSet() { + toSerialize["response"] = o.Response.Get() + } + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *EndpointAgentChallengeResponseRequest) UnmarshalJSON(data []byte) (err error) { + varEndpointAgentChallengeResponseRequest := _EndpointAgentChallengeResponseRequest{} + + err = json.Unmarshal(data, &varEndpointAgentChallengeResponseRequest) + + if err != nil { + return err + } + + *o = EndpointAgentChallengeResponseRequest(varEndpointAgentChallengeResponseRequest) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "component") + delete(additionalProperties, "response") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableEndpointAgentChallengeResponseRequest struct { + value *EndpointAgentChallengeResponseRequest + isSet bool +} + +func (v NullableEndpointAgentChallengeResponseRequest) Get() *EndpointAgentChallengeResponseRequest { + return v.value +} + +func (v *NullableEndpointAgentChallengeResponseRequest) Set(val *EndpointAgentChallengeResponseRequest) { + v.value = val + v.isSet = true +} + +func (v NullableEndpointAgentChallengeResponseRequest) IsSet() bool { + return v.isSet +} + +func (v *NullableEndpointAgentChallengeResponseRequest) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableEndpointAgentChallengeResponseRequest(val *EndpointAgentChallengeResponseRequest) *NullableEndpointAgentChallengeResponseRequest { + return &NullableEndpointAgentChallengeResponseRequest{value: val, isSet: true} +} + +func (v NullableEndpointAgentChallengeResponseRequest) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableEndpointAgentChallengeResponseRequest) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_error_detail.go b/packages/client-go/model_error_detail.go new file mode 100644 index 0000000000..577ca25c78 --- /dev/null +++ b/packages/client-go/model_error_detail.go @@ -0,0 +1,196 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// checks if the ErrorDetail type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &ErrorDetail{} + +// ErrorDetail Serializer for rest_framework's error messages +type ErrorDetail struct { + String string `json:"string"` + Code string `json:"code"` + AdditionalProperties map[string]interface{} +} + +type _ErrorDetail ErrorDetail + +// NewErrorDetail instantiates a new ErrorDetail object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewErrorDetail(string_ string, code string) *ErrorDetail { + this := ErrorDetail{} + this.String = string_ + this.Code = code + return &this +} + +// NewErrorDetailWithDefaults instantiates a new ErrorDetail object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewErrorDetailWithDefaults() *ErrorDetail { + this := ErrorDetail{} + return &this +} + +// GetString returns the String field value +func (o *ErrorDetail) GetString() string { + if o == nil { + var ret string + return ret + } + + return o.String +} + +// GetStringOk returns a tuple with the String field value +// and a boolean to check if the value has been set. +func (o *ErrorDetail) GetStringOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.String, true +} + +// SetString sets field value +func (o *ErrorDetail) SetString(v string) { + o.String = v +} + +// GetCode returns the Code field value +func (o *ErrorDetail) GetCode() string { + if o == nil { + var ret string + return ret + } + + return o.Code +} + +// GetCodeOk returns a tuple with the Code field value +// and a boolean to check if the value has been set. +func (o *ErrorDetail) GetCodeOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Code, true +} + +// SetCode sets field value +func (o *ErrorDetail) SetCode(v string) { + o.Code = v +} + +func (o ErrorDetail) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o ErrorDetail) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + toSerialize["string"] = o.String + toSerialize["code"] = o.Code + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *ErrorDetail) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "string", + "code", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varErrorDetail := _ErrorDetail{} + + err = json.Unmarshal(data, &varErrorDetail) + + if err != nil { + return err + } + + *o = ErrorDetail(varErrorDetail) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "string") + delete(additionalProperties, "code") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableErrorDetail struct { + value *ErrorDetail + isSet bool +} + +func (v NullableErrorDetail) Get() *ErrorDetail { + return v.value +} + +func (v *NullableErrorDetail) Set(val *ErrorDetail) { + v.value = val + v.isSet = true +} + +func (v NullableErrorDetail) IsSet() bool { + return v.isSet +} + +func (v *NullableErrorDetail) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableErrorDetail(val *ErrorDetail) *NullableErrorDetail { + return &NullableErrorDetail{value: val, isSet: true} +} + +func (v NullableErrorDetail) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableErrorDetail) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_error_reporting_config.go b/packages/client-go/model_error_reporting_config.go new file mode 100644 index 0000000000..51d2834272 --- /dev/null +++ b/packages/client-go/model_error_reporting_config.go @@ -0,0 +1,283 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// checks if the ErrorReportingConfig type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &ErrorReportingConfig{} + +// ErrorReportingConfig Config for error reporting +type ErrorReportingConfig struct { + Enabled bool `json:"enabled"` + SentryDsn string `json:"sentry_dsn"` + Environment string `json:"environment"` + SendPii bool `json:"send_pii"` + TracesSampleRate float64 `json:"traces_sample_rate"` + AdditionalProperties map[string]interface{} +} + +type _ErrorReportingConfig ErrorReportingConfig + +// NewErrorReportingConfig instantiates a new ErrorReportingConfig object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewErrorReportingConfig(enabled bool, sentryDsn string, environment string, sendPii bool, tracesSampleRate float64) *ErrorReportingConfig { + this := ErrorReportingConfig{} + this.Enabled = enabled + this.SentryDsn = sentryDsn + this.Environment = environment + this.SendPii = sendPii + this.TracesSampleRate = tracesSampleRate + return &this +} + +// NewErrorReportingConfigWithDefaults instantiates a new ErrorReportingConfig object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewErrorReportingConfigWithDefaults() *ErrorReportingConfig { + this := ErrorReportingConfig{} + return &this +} + +// GetEnabled returns the Enabled field value +func (o *ErrorReportingConfig) GetEnabled() bool { + if o == nil { + var ret bool + return ret + } + + return o.Enabled +} + +// GetEnabledOk returns a tuple with the Enabled field value +// and a boolean to check if the value has been set. +func (o *ErrorReportingConfig) GetEnabledOk() (*bool, bool) { + if o == nil { + return nil, false + } + return &o.Enabled, true +} + +// SetEnabled sets field value +func (o *ErrorReportingConfig) SetEnabled(v bool) { + o.Enabled = v +} + +// GetSentryDsn returns the SentryDsn field value +func (o *ErrorReportingConfig) GetSentryDsn() string { + if o == nil { + var ret string + return ret + } + + return o.SentryDsn +} + +// GetSentryDsnOk returns a tuple with the SentryDsn field value +// and a boolean to check if the value has been set. +func (o *ErrorReportingConfig) GetSentryDsnOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.SentryDsn, true +} + +// SetSentryDsn sets field value +func (o *ErrorReportingConfig) SetSentryDsn(v string) { + o.SentryDsn = v +} + +// GetEnvironment returns the Environment field value +func (o *ErrorReportingConfig) GetEnvironment() string { + if o == nil { + var ret string + return ret + } + + return o.Environment +} + +// GetEnvironmentOk returns a tuple with the Environment field value +// and a boolean to check if the value has been set. +func (o *ErrorReportingConfig) GetEnvironmentOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Environment, true +} + +// SetEnvironment sets field value +func (o *ErrorReportingConfig) SetEnvironment(v string) { + o.Environment = v +} + +// GetSendPii returns the SendPii field value +func (o *ErrorReportingConfig) GetSendPii() bool { + if o == nil { + var ret bool + return ret + } + + return o.SendPii +} + +// GetSendPiiOk returns a tuple with the SendPii field value +// and a boolean to check if the value has been set. +func (o *ErrorReportingConfig) GetSendPiiOk() (*bool, bool) { + if o == nil { + return nil, false + } + return &o.SendPii, true +} + +// SetSendPii sets field value +func (o *ErrorReportingConfig) SetSendPii(v bool) { + o.SendPii = v +} + +// GetTracesSampleRate returns the TracesSampleRate field value +func (o *ErrorReportingConfig) GetTracesSampleRate() float64 { + if o == nil { + var ret float64 + return ret + } + + return o.TracesSampleRate +} + +// GetTracesSampleRateOk returns a tuple with the TracesSampleRate field value +// and a boolean to check if the value has been set. +func (o *ErrorReportingConfig) GetTracesSampleRateOk() (*float64, bool) { + if o == nil { + return nil, false + } + return &o.TracesSampleRate, true +} + +// SetTracesSampleRate sets field value +func (o *ErrorReportingConfig) SetTracesSampleRate(v float64) { + o.TracesSampleRate = v +} + +func (o ErrorReportingConfig) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o ErrorReportingConfig) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + toSerialize["enabled"] = o.Enabled + toSerialize["sentry_dsn"] = o.SentryDsn + toSerialize["environment"] = o.Environment + toSerialize["send_pii"] = o.SendPii + toSerialize["traces_sample_rate"] = o.TracesSampleRate + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *ErrorReportingConfig) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "enabled", + "sentry_dsn", + "environment", + "send_pii", + "traces_sample_rate", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varErrorReportingConfig := _ErrorReportingConfig{} + + err = json.Unmarshal(data, &varErrorReportingConfig) + + if err != nil { + return err + } + + *o = ErrorReportingConfig(varErrorReportingConfig) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "enabled") + delete(additionalProperties, "sentry_dsn") + delete(additionalProperties, "environment") + delete(additionalProperties, "send_pii") + delete(additionalProperties, "traces_sample_rate") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableErrorReportingConfig struct { + value *ErrorReportingConfig + isSet bool +} + +func (v NullableErrorReportingConfig) Get() *ErrorReportingConfig { + return v.value +} + +func (v *NullableErrorReportingConfig) Set(val *ErrorReportingConfig) { + v.value = val + v.isSet = true +} + +func (v NullableErrorReportingConfig) IsSet() bool { + return v.isSet +} + +func (v *NullableErrorReportingConfig) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableErrorReportingConfig(val *ErrorReportingConfig) *NullableErrorReportingConfig { + return &NullableErrorReportingConfig{value: val, isSet: true} +} + +func (v NullableErrorReportingConfig) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableErrorReportingConfig) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_event.go b/packages/client-go/model_event.go new file mode 100644 index 0000000000..a8e8e53447 --- /dev/null +++ b/packages/client-go/model_event.go @@ -0,0 +1,451 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" + "time" +) + +// checks if the Event type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &Event{} + +// Event Event Serializer +type Event struct { + Pk string `json:"pk"` + User map[string]interface{} `json:"user,omitempty"` + Action EventActions `json:"action"` + App string `json:"app"` + Context map[string]interface{} `json:"context,omitempty"` + ClientIp NullableString `json:"client_ip,omitempty"` + Created time.Time `json:"created"` + Expires *time.Time `json:"expires,omitempty"` + Brand map[string]interface{} `json:"brand,omitempty"` + AdditionalProperties map[string]interface{} +} + +type _Event Event + +// NewEvent instantiates a new Event object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewEvent(pk string, action EventActions, app string, created time.Time) *Event { + this := Event{} + this.Pk = pk + this.Action = action + this.App = app + this.Created = created + return &this +} + +// NewEventWithDefaults instantiates a new Event object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewEventWithDefaults() *Event { + this := Event{} + return &this +} + +// GetPk returns the Pk field value +func (o *Event) GetPk() string { + if o == nil { + var ret string + return ret + } + + return o.Pk +} + +// GetPkOk returns a tuple with the Pk field value +// and a boolean to check if the value has been set. +func (o *Event) GetPkOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Pk, true +} + +// SetPk sets field value +func (o *Event) SetPk(v string) { + o.Pk = v +} + +// GetUser returns the User field value if set, zero value otherwise. +func (o *Event) GetUser() map[string]interface{} { + if o == nil || IsNil(o.User) { + var ret map[string]interface{} + return ret + } + return o.User +} + +// GetUserOk returns a tuple with the User field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *Event) GetUserOk() (map[string]interface{}, bool) { + if o == nil || IsNil(o.User) { + return map[string]interface{}{}, false + } + return o.User, true +} + +// HasUser returns a boolean if a field has been set. +func (o *Event) HasUser() bool { + if o != nil && !IsNil(o.User) { + return true + } + + return false +} + +// SetUser gets a reference to the given map[string]interface{} and assigns it to the User field. +func (o *Event) SetUser(v map[string]interface{}) { + o.User = v +} + +// GetAction returns the Action field value +func (o *Event) GetAction() EventActions { + if o == nil { + var ret EventActions + return ret + } + + return o.Action +} + +// GetActionOk returns a tuple with the Action field value +// and a boolean to check if the value has been set. +func (o *Event) GetActionOk() (*EventActions, bool) { + if o == nil { + return nil, false + } + return &o.Action, true +} + +// SetAction sets field value +func (o *Event) SetAction(v EventActions) { + o.Action = v +} + +// GetApp returns the App field value +func (o *Event) GetApp() string { + if o == nil { + var ret string + return ret + } + + return o.App +} + +// GetAppOk returns a tuple with the App field value +// and a boolean to check if the value has been set. +func (o *Event) GetAppOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.App, true +} + +// SetApp sets field value +func (o *Event) SetApp(v string) { + o.App = v +} + +// GetContext returns the Context field value if set, zero value otherwise. +func (o *Event) GetContext() map[string]interface{} { + if o == nil || IsNil(o.Context) { + var ret map[string]interface{} + return ret + } + return o.Context +} + +// GetContextOk returns a tuple with the Context field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *Event) GetContextOk() (map[string]interface{}, bool) { + if o == nil || IsNil(o.Context) { + return map[string]interface{}{}, false + } + return o.Context, true +} + +// HasContext returns a boolean if a field has been set. +func (o *Event) HasContext() bool { + if o != nil && !IsNil(o.Context) { + return true + } + + return false +} + +// SetContext gets a reference to the given map[string]interface{} and assigns it to the Context field. +func (o *Event) SetContext(v map[string]interface{}) { + o.Context = v +} + +// GetClientIp returns the ClientIp field value if set, zero value otherwise (both if not set or set to explicit null). +func (o *Event) GetClientIp() string { + if o == nil || IsNil(o.ClientIp.Get()) { + var ret string + return ret + } + return *o.ClientIp.Get() +} + +// GetClientIpOk returns a tuple with the ClientIp field value if set, nil otherwise +// and a boolean to check if the value has been set. +// NOTE: If the value is an explicit nil, `nil, true` will be returned +func (o *Event) GetClientIpOk() (*string, bool) { + if o == nil { + return nil, false + } + return o.ClientIp.Get(), o.ClientIp.IsSet() +} + +// HasClientIp returns a boolean if a field has been set. +func (o *Event) HasClientIp() bool { + if o != nil && o.ClientIp.IsSet() { + return true + } + + return false +} + +// SetClientIp gets a reference to the given NullableString and assigns it to the ClientIp field. +func (o *Event) SetClientIp(v string) { + o.ClientIp.Set(&v) +} + +// SetClientIpNil sets the value for ClientIp to be an explicit nil +func (o *Event) SetClientIpNil() { + o.ClientIp.Set(nil) +} + +// UnsetClientIp ensures that no value is present for ClientIp, not even an explicit nil +func (o *Event) UnsetClientIp() { + o.ClientIp.Unset() +} + +// GetCreated returns the Created field value +func (o *Event) GetCreated() time.Time { + if o == nil { + var ret time.Time + return ret + } + + return o.Created +} + +// GetCreatedOk returns a tuple with the Created field value +// and a boolean to check if the value has been set. +func (o *Event) GetCreatedOk() (*time.Time, bool) { + if o == nil { + return nil, false + } + return &o.Created, true +} + +// SetCreated sets field value +func (o *Event) SetCreated(v time.Time) { + o.Created = v +} + +// GetExpires returns the Expires field value if set, zero value otherwise. +func (o *Event) GetExpires() time.Time { + if o == nil || IsNil(o.Expires) { + var ret time.Time + return ret + } + return *o.Expires +} + +// GetExpiresOk returns a tuple with the Expires field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *Event) GetExpiresOk() (*time.Time, bool) { + if o == nil || IsNil(o.Expires) { + return nil, false + } + return o.Expires, true +} + +// HasExpires returns a boolean if a field has been set. +func (o *Event) HasExpires() bool { + if o != nil && !IsNil(o.Expires) { + return true + } + + return false +} + +// SetExpires gets a reference to the given time.Time and assigns it to the Expires field. +func (o *Event) SetExpires(v time.Time) { + o.Expires = &v +} + +// GetBrand returns the Brand field value if set, zero value otherwise. +func (o *Event) GetBrand() map[string]interface{} { + if o == nil || IsNil(o.Brand) { + var ret map[string]interface{} + return ret + } + return o.Brand +} + +// GetBrandOk returns a tuple with the Brand field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *Event) GetBrandOk() (map[string]interface{}, bool) { + if o == nil || IsNil(o.Brand) { + return map[string]interface{}{}, false + } + return o.Brand, true +} + +// HasBrand returns a boolean if a field has been set. +func (o *Event) HasBrand() bool { + if o != nil && !IsNil(o.Brand) { + return true + } + + return false +} + +// SetBrand gets a reference to the given map[string]interface{} and assigns it to the Brand field. +func (o *Event) SetBrand(v map[string]interface{}) { + o.Brand = v +} + +func (o Event) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o Event) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + toSerialize["pk"] = o.Pk + if !IsNil(o.User) { + toSerialize["user"] = o.User + } + toSerialize["action"] = o.Action + toSerialize["app"] = o.App + if !IsNil(o.Context) { + toSerialize["context"] = o.Context + } + if o.ClientIp.IsSet() { + toSerialize["client_ip"] = o.ClientIp.Get() + } + toSerialize["created"] = o.Created + if !IsNil(o.Expires) { + toSerialize["expires"] = o.Expires + } + if !IsNil(o.Brand) { + toSerialize["brand"] = o.Brand + } + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *Event) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "pk", + "action", + "app", + "created", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varEvent := _Event{} + + err = json.Unmarshal(data, &varEvent) + + if err != nil { + return err + } + + *o = Event(varEvent) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "pk") + delete(additionalProperties, "user") + delete(additionalProperties, "action") + delete(additionalProperties, "app") + delete(additionalProperties, "context") + delete(additionalProperties, "client_ip") + delete(additionalProperties, "created") + delete(additionalProperties, "expires") + delete(additionalProperties, "brand") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableEvent struct { + value *Event + isSet bool +} + +func (v NullableEvent) Get() *Event { + return v.value +} + +func (v *NullableEvent) Set(val *Event) { + v.value = val + v.isSet = true +} + +func (v NullableEvent) IsSet() bool { + return v.isSet +} + +func (v *NullableEvent) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableEvent(val *Event) *NullableEvent { + return &NullableEvent{value: val, isSet: true} +} + +func (v NullableEvent) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableEvent) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_event_actions.go b/packages/client-go/model_event_actions.go new file mode 100644 index 0000000000..d93fab8f33 --- /dev/null +++ b/packages/client-go/model_event_actions.go @@ -0,0 +1,173 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// EventActions the model 'EventActions' +type EventActions string + +// List of EventActions +const ( + EVENTACTIONS_LOGIN EventActions = "login" + EVENTACTIONS_LOGIN_FAILED EventActions = "login_failed" + EVENTACTIONS_LOGOUT EventActions = "logout" + EVENTACTIONS_USER_WRITE EventActions = "user_write" + EVENTACTIONS_SUSPICIOUS_REQUEST EventActions = "suspicious_request" + EVENTACTIONS_PASSWORD_SET EventActions = "password_set" + EVENTACTIONS_SECRET_VIEW EventActions = "secret_view" + EVENTACTIONS_SECRET_ROTATE EventActions = "secret_rotate" + EVENTACTIONS_INVITATION_USED EventActions = "invitation_used" + EVENTACTIONS_AUTHORIZE_APPLICATION EventActions = "authorize_application" + EVENTACTIONS_SOURCE_LINKED EventActions = "source_linked" + EVENTACTIONS_IMPERSONATION_STARTED EventActions = "impersonation_started" + EVENTACTIONS_IMPERSONATION_ENDED EventActions = "impersonation_ended" + EVENTACTIONS_FLOW_EXECUTION EventActions = "flow_execution" + EVENTACTIONS_POLICY_EXECUTION EventActions = "policy_execution" + EVENTACTIONS_POLICY_EXCEPTION EventActions = "policy_exception" + EVENTACTIONS_PROPERTY_MAPPING_EXCEPTION EventActions = "property_mapping_exception" + EVENTACTIONS_SYSTEM_TASK_EXECUTION EventActions = "system_task_execution" + EVENTACTIONS_SYSTEM_TASK_EXCEPTION EventActions = "system_task_exception" + EVENTACTIONS_SYSTEM_EXCEPTION EventActions = "system_exception" + EVENTACTIONS_CONFIGURATION_ERROR EventActions = "configuration_error" + EVENTACTIONS_CONFIGURATION_WARNING EventActions = "configuration_warning" + EVENTACTIONS_MODEL_CREATED EventActions = "model_created" + EVENTACTIONS_MODEL_UPDATED EventActions = "model_updated" + EVENTACTIONS_MODEL_DELETED EventActions = "model_deleted" + EVENTACTIONS_EMAIL_SENT EventActions = "email_sent" + EVENTACTIONS_UPDATE_AVAILABLE EventActions = "update_available" + EVENTACTIONS_EXPORT_READY EventActions = "export_ready" + EVENTACTIONS_REVIEW_INITIATED EventActions = "review_initiated" + EVENTACTIONS_REVIEW_OVERDUE EventActions = "review_overdue" + EVENTACTIONS_REVIEW_ATTESTED EventActions = "review_attested" + EVENTACTIONS_REVIEW_COMPLETED EventActions = "review_completed" + EVENTACTIONS_CUSTOM EventActions = "custom_" +) + +// All allowed values of EventActions enum +var AllowedEventActionsEnumValues = []EventActions{ + "login", + "login_failed", + "logout", + "user_write", + "suspicious_request", + "password_set", + "secret_view", + "secret_rotate", + "invitation_used", + "authorize_application", + "source_linked", + "impersonation_started", + "impersonation_ended", + "flow_execution", + "policy_execution", + "policy_exception", + "property_mapping_exception", + "system_task_execution", + "system_task_exception", + "system_exception", + "configuration_error", + "configuration_warning", + "model_created", + "model_updated", + "model_deleted", + "email_sent", + "update_available", + "export_ready", + "review_initiated", + "review_overdue", + "review_attested", + "review_completed", + "custom_", +} + +func (v *EventActions) UnmarshalJSON(src []byte) error { + var value string + err := json.Unmarshal(src, &value) + if err != nil { + return err + } + enumTypeValue := EventActions(value) + for _, existing := range AllowedEventActionsEnumValues { + if existing == enumTypeValue { + *v = enumTypeValue + return nil + } + } + + return fmt.Errorf("%+v is not a valid EventActions", value) +} + +// NewEventActionsFromValue returns a pointer to a valid EventActions +// for the value passed as argument, or an error if the value passed is not allowed by the enum +func NewEventActionsFromValue(v string) (*EventActions, error) { + ev := EventActions(v) + if ev.IsValid() { + return &ev, nil + } else { + return nil, fmt.Errorf("invalid value '%v' for EventActions: valid values are %v", v, AllowedEventActionsEnumValues) + } +} + +// IsValid return true if the value is valid for the enum, false otherwise +func (v EventActions) IsValid() bool { + for _, existing := range AllowedEventActionsEnumValues { + if existing == v { + return true + } + } + return false +} + +// Ptr returns reference to EventActions value +func (v EventActions) Ptr() *EventActions { + return &v +} + +type NullableEventActions struct { + value *EventActions + isSet bool +} + +func (v NullableEventActions) Get() *EventActions { + return v.value +} + +func (v *NullableEventActions) Set(val *EventActions) { + v.value = val + v.isSet = true +} + +func (v NullableEventActions) IsSet() bool { + return v.isSet +} + +func (v *NullableEventActions) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableEventActions(val *EventActions) *NullableEventActions { + return &NullableEventActions{value: val, isSet: true} +} + +func (v NullableEventActions) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableEventActions) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_event_request.go b/packages/client-go/model_event_request.go new file mode 100644 index 0000000000..a03329370b --- /dev/null +++ b/packages/client-go/model_event_request.go @@ -0,0 +1,393 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" + "time" +) + +// checks if the EventRequest type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &EventRequest{} + +// EventRequest Event Serializer +type EventRequest struct { + User map[string]interface{} `json:"user,omitempty"` + Action EventActions `json:"action"` + App string `json:"app"` + Context map[string]interface{} `json:"context,omitempty"` + ClientIp NullableString `json:"client_ip,omitempty"` + Expires *time.Time `json:"expires,omitempty"` + Brand map[string]interface{} `json:"brand,omitempty"` + AdditionalProperties map[string]interface{} +} + +type _EventRequest EventRequest + +// NewEventRequest instantiates a new EventRequest object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewEventRequest(action EventActions, app string) *EventRequest { + this := EventRequest{} + this.Action = action + this.App = app + return &this +} + +// NewEventRequestWithDefaults instantiates a new EventRequest object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewEventRequestWithDefaults() *EventRequest { + this := EventRequest{} + return &this +} + +// GetUser returns the User field value if set, zero value otherwise. +func (o *EventRequest) GetUser() map[string]interface{} { + if o == nil || IsNil(o.User) { + var ret map[string]interface{} + return ret + } + return o.User +} + +// GetUserOk returns a tuple with the User field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *EventRequest) GetUserOk() (map[string]interface{}, bool) { + if o == nil || IsNil(o.User) { + return map[string]interface{}{}, false + } + return o.User, true +} + +// HasUser returns a boolean if a field has been set. +func (o *EventRequest) HasUser() bool { + if o != nil && !IsNil(o.User) { + return true + } + + return false +} + +// SetUser gets a reference to the given map[string]interface{} and assigns it to the User field. +func (o *EventRequest) SetUser(v map[string]interface{}) { + o.User = v +} + +// GetAction returns the Action field value +func (o *EventRequest) GetAction() EventActions { + if o == nil { + var ret EventActions + return ret + } + + return o.Action +} + +// GetActionOk returns a tuple with the Action field value +// and a boolean to check if the value has been set. +func (o *EventRequest) GetActionOk() (*EventActions, bool) { + if o == nil { + return nil, false + } + return &o.Action, true +} + +// SetAction sets field value +func (o *EventRequest) SetAction(v EventActions) { + o.Action = v +} + +// GetApp returns the App field value +func (o *EventRequest) GetApp() string { + if o == nil { + var ret string + return ret + } + + return o.App +} + +// GetAppOk returns a tuple with the App field value +// and a boolean to check if the value has been set. +func (o *EventRequest) GetAppOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.App, true +} + +// SetApp sets field value +func (o *EventRequest) SetApp(v string) { + o.App = v +} + +// GetContext returns the Context field value if set, zero value otherwise. +func (o *EventRequest) GetContext() map[string]interface{} { + if o == nil || IsNil(o.Context) { + var ret map[string]interface{} + return ret + } + return o.Context +} + +// GetContextOk returns a tuple with the Context field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *EventRequest) GetContextOk() (map[string]interface{}, bool) { + if o == nil || IsNil(o.Context) { + return map[string]interface{}{}, false + } + return o.Context, true +} + +// HasContext returns a boolean if a field has been set. +func (o *EventRequest) HasContext() bool { + if o != nil && !IsNil(o.Context) { + return true + } + + return false +} + +// SetContext gets a reference to the given map[string]interface{} and assigns it to the Context field. +func (o *EventRequest) SetContext(v map[string]interface{}) { + o.Context = v +} + +// GetClientIp returns the ClientIp field value if set, zero value otherwise (both if not set or set to explicit null). +func (o *EventRequest) GetClientIp() string { + if o == nil || IsNil(o.ClientIp.Get()) { + var ret string + return ret + } + return *o.ClientIp.Get() +} + +// GetClientIpOk returns a tuple with the ClientIp field value if set, nil otherwise +// and a boolean to check if the value has been set. +// NOTE: If the value is an explicit nil, `nil, true` will be returned +func (o *EventRequest) GetClientIpOk() (*string, bool) { + if o == nil { + return nil, false + } + return o.ClientIp.Get(), o.ClientIp.IsSet() +} + +// HasClientIp returns a boolean if a field has been set. +func (o *EventRequest) HasClientIp() bool { + if o != nil && o.ClientIp.IsSet() { + return true + } + + return false +} + +// SetClientIp gets a reference to the given NullableString and assigns it to the ClientIp field. +func (o *EventRequest) SetClientIp(v string) { + o.ClientIp.Set(&v) +} + +// SetClientIpNil sets the value for ClientIp to be an explicit nil +func (o *EventRequest) SetClientIpNil() { + o.ClientIp.Set(nil) +} + +// UnsetClientIp ensures that no value is present for ClientIp, not even an explicit nil +func (o *EventRequest) UnsetClientIp() { + o.ClientIp.Unset() +} + +// GetExpires returns the Expires field value if set, zero value otherwise. +func (o *EventRequest) GetExpires() time.Time { + if o == nil || IsNil(o.Expires) { + var ret time.Time + return ret + } + return *o.Expires +} + +// GetExpiresOk returns a tuple with the Expires field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *EventRequest) GetExpiresOk() (*time.Time, bool) { + if o == nil || IsNil(o.Expires) { + return nil, false + } + return o.Expires, true +} + +// HasExpires returns a boolean if a field has been set. +func (o *EventRequest) HasExpires() bool { + if o != nil && !IsNil(o.Expires) { + return true + } + + return false +} + +// SetExpires gets a reference to the given time.Time and assigns it to the Expires field. +func (o *EventRequest) SetExpires(v time.Time) { + o.Expires = &v +} + +// GetBrand returns the Brand field value if set, zero value otherwise. +func (o *EventRequest) GetBrand() map[string]interface{} { + if o == nil || IsNil(o.Brand) { + var ret map[string]interface{} + return ret + } + return o.Brand +} + +// GetBrandOk returns a tuple with the Brand field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *EventRequest) GetBrandOk() (map[string]interface{}, bool) { + if o == nil || IsNil(o.Brand) { + return map[string]interface{}{}, false + } + return o.Brand, true +} + +// HasBrand returns a boolean if a field has been set. +func (o *EventRequest) HasBrand() bool { + if o != nil && !IsNil(o.Brand) { + return true + } + + return false +} + +// SetBrand gets a reference to the given map[string]interface{} and assigns it to the Brand field. +func (o *EventRequest) SetBrand(v map[string]interface{}) { + o.Brand = v +} + +func (o EventRequest) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o EventRequest) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.User) { + toSerialize["user"] = o.User + } + toSerialize["action"] = o.Action + toSerialize["app"] = o.App + if !IsNil(o.Context) { + toSerialize["context"] = o.Context + } + if o.ClientIp.IsSet() { + toSerialize["client_ip"] = o.ClientIp.Get() + } + if !IsNil(o.Expires) { + toSerialize["expires"] = o.Expires + } + if !IsNil(o.Brand) { + toSerialize["brand"] = o.Brand + } + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *EventRequest) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "action", + "app", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varEventRequest := _EventRequest{} + + err = json.Unmarshal(data, &varEventRequest) + + if err != nil { + return err + } + + *o = EventRequest(varEventRequest) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "user") + delete(additionalProperties, "action") + delete(additionalProperties, "app") + delete(additionalProperties, "context") + delete(additionalProperties, "client_ip") + delete(additionalProperties, "expires") + delete(additionalProperties, "brand") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableEventRequest struct { + value *EventRequest + isSet bool +} + +func (v NullableEventRequest) Get() *EventRequest { + return v.value +} + +func (v *NullableEventRequest) Set(val *EventRequest) { + v.value = val + v.isSet = true +} + +func (v NullableEventRequest) IsSet() bool { + return v.isSet +} + +func (v *NullableEventRequest) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableEventRequest(val *EventRequest) *NullableEventRequest { + return &NullableEventRequest{value: val, isSet: true} +} + +func (v NullableEventRequest) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableEventRequest) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_flow_challenge_response_request.go b/packages/client-go/model_flow_challenge_response_request.go new file mode 100644 index 0000000000..e0f5ef81ea --- /dev/null +++ b/packages/client-go/model_flow_challenge_response_request.go @@ -0,0 +1,922 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// FlowChallengeResponseRequest - struct for FlowChallengeResponseRequest +type FlowChallengeResponseRequest struct { + AppleChallengeResponseRequest *AppleChallengeResponseRequest + AuthenticatorDuoChallengeResponseRequest *AuthenticatorDuoChallengeResponseRequest + AuthenticatorEmailChallengeResponseRequest *AuthenticatorEmailChallengeResponseRequest + AuthenticatorSMSChallengeResponseRequest *AuthenticatorSMSChallengeResponseRequest + AuthenticatorStaticChallengeResponseRequest *AuthenticatorStaticChallengeResponseRequest + AuthenticatorTOTPChallengeResponseRequest *AuthenticatorTOTPChallengeResponseRequest + AuthenticatorValidationChallengeResponseRequest *AuthenticatorValidationChallengeResponseRequest + AuthenticatorWebAuthnChallengeResponseRequest *AuthenticatorWebAuthnChallengeResponseRequest + AutoSubmitChallengeResponseRequest *AutoSubmitChallengeResponseRequest + CaptchaChallengeResponseRequest *CaptchaChallengeResponseRequest + ConsentChallengeResponseRequest *ConsentChallengeResponseRequest + DummyChallengeResponseRequest *DummyChallengeResponseRequest + EmailChallengeResponseRequest *EmailChallengeResponseRequest + EndpointAgentChallengeResponseRequest *EndpointAgentChallengeResponseRequest + FrameChallengeResponseRequest *FrameChallengeResponseRequest + IdentificationChallengeResponseRequest *IdentificationChallengeResponseRequest + IframeLogoutChallengeResponseRequest *IframeLogoutChallengeResponseRequest + NativeLogoutChallengeResponseRequest *NativeLogoutChallengeResponseRequest + OAuthDeviceCodeChallengeResponseRequest *OAuthDeviceCodeChallengeResponseRequest + OAuthDeviceCodeFinishChallengeResponseRequest *OAuthDeviceCodeFinishChallengeResponseRequest + PasswordChallengeResponseRequest *PasswordChallengeResponseRequest + PlexAuthenticationChallengeResponseRequest *PlexAuthenticationChallengeResponseRequest + PromptChallengeResponseRequest *PromptChallengeResponseRequest + RedirectChallengeResponseRequest *RedirectChallengeResponseRequest + TelegramChallengeResponseRequest *TelegramChallengeResponseRequest + UserLoginChallengeResponseRequest *UserLoginChallengeResponseRequest +} + +// AppleChallengeResponseRequestAsFlowChallengeResponseRequest is a convenience function that returns AppleChallengeResponseRequest wrapped in FlowChallengeResponseRequest +func AppleChallengeResponseRequestAsFlowChallengeResponseRequest(v *AppleChallengeResponseRequest) FlowChallengeResponseRequest { + return FlowChallengeResponseRequest{ + AppleChallengeResponseRequest: v, + } +} + +// AuthenticatorDuoChallengeResponseRequestAsFlowChallengeResponseRequest is a convenience function that returns AuthenticatorDuoChallengeResponseRequest wrapped in FlowChallengeResponseRequest +func AuthenticatorDuoChallengeResponseRequestAsFlowChallengeResponseRequest(v *AuthenticatorDuoChallengeResponseRequest) FlowChallengeResponseRequest { + return FlowChallengeResponseRequest{ + AuthenticatorDuoChallengeResponseRequest: v, + } +} + +// AuthenticatorEmailChallengeResponseRequestAsFlowChallengeResponseRequest is a convenience function that returns AuthenticatorEmailChallengeResponseRequest wrapped in FlowChallengeResponseRequest +func AuthenticatorEmailChallengeResponseRequestAsFlowChallengeResponseRequest(v *AuthenticatorEmailChallengeResponseRequest) FlowChallengeResponseRequest { + return FlowChallengeResponseRequest{ + AuthenticatorEmailChallengeResponseRequest: v, + } +} + +// AuthenticatorSMSChallengeResponseRequestAsFlowChallengeResponseRequest is a convenience function that returns AuthenticatorSMSChallengeResponseRequest wrapped in FlowChallengeResponseRequest +func AuthenticatorSMSChallengeResponseRequestAsFlowChallengeResponseRequest(v *AuthenticatorSMSChallengeResponseRequest) FlowChallengeResponseRequest { + return FlowChallengeResponseRequest{ + AuthenticatorSMSChallengeResponseRequest: v, + } +} + +// AuthenticatorStaticChallengeResponseRequestAsFlowChallengeResponseRequest is a convenience function that returns AuthenticatorStaticChallengeResponseRequest wrapped in FlowChallengeResponseRequest +func AuthenticatorStaticChallengeResponseRequestAsFlowChallengeResponseRequest(v *AuthenticatorStaticChallengeResponseRequest) FlowChallengeResponseRequest { + return FlowChallengeResponseRequest{ + AuthenticatorStaticChallengeResponseRequest: v, + } +} + +// AuthenticatorTOTPChallengeResponseRequestAsFlowChallengeResponseRequest is a convenience function that returns AuthenticatorTOTPChallengeResponseRequest wrapped in FlowChallengeResponseRequest +func AuthenticatorTOTPChallengeResponseRequestAsFlowChallengeResponseRequest(v *AuthenticatorTOTPChallengeResponseRequest) FlowChallengeResponseRequest { + return FlowChallengeResponseRequest{ + AuthenticatorTOTPChallengeResponseRequest: v, + } +} + +// AuthenticatorValidationChallengeResponseRequestAsFlowChallengeResponseRequest is a convenience function that returns AuthenticatorValidationChallengeResponseRequest wrapped in FlowChallengeResponseRequest +func AuthenticatorValidationChallengeResponseRequestAsFlowChallengeResponseRequest(v *AuthenticatorValidationChallengeResponseRequest) FlowChallengeResponseRequest { + return FlowChallengeResponseRequest{ + AuthenticatorValidationChallengeResponseRequest: v, + } +} + +// AuthenticatorWebAuthnChallengeResponseRequestAsFlowChallengeResponseRequest is a convenience function that returns AuthenticatorWebAuthnChallengeResponseRequest wrapped in FlowChallengeResponseRequest +func AuthenticatorWebAuthnChallengeResponseRequestAsFlowChallengeResponseRequest(v *AuthenticatorWebAuthnChallengeResponseRequest) FlowChallengeResponseRequest { + return FlowChallengeResponseRequest{ + AuthenticatorWebAuthnChallengeResponseRequest: v, + } +} + +// AutoSubmitChallengeResponseRequestAsFlowChallengeResponseRequest is a convenience function that returns AutoSubmitChallengeResponseRequest wrapped in FlowChallengeResponseRequest +func AutoSubmitChallengeResponseRequestAsFlowChallengeResponseRequest(v *AutoSubmitChallengeResponseRequest) FlowChallengeResponseRequest { + return FlowChallengeResponseRequest{ + AutoSubmitChallengeResponseRequest: v, + } +} + +// CaptchaChallengeResponseRequestAsFlowChallengeResponseRequest is a convenience function that returns CaptchaChallengeResponseRequest wrapped in FlowChallengeResponseRequest +func CaptchaChallengeResponseRequestAsFlowChallengeResponseRequest(v *CaptchaChallengeResponseRequest) FlowChallengeResponseRequest { + return FlowChallengeResponseRequest{ + CaptchaChallengeResponseRequest: v, + } +} + +// ConsentChallengeResponseRequestAsFlowChallengeResponseRequest is a convenience function that returns ConsentChallengeResponseRequest wrapped in FlowChallengeResponseRequest +func ConsentChallengeResponseRequestAsFlowChallengeResponseRequest(v *ConsentChallengeResponseRequest) FlowChallengeResponseRequest { + return FlowChallengeResponseRequest{ + ConsentChallengeResponseRequest: v, + } +} + +// DummyChallengeResponseRequestAsFlowChallengeResponseRequest is a convenience function that returns DummyChallengeResponseRequest wrapped in FlowChallengeResponseRequest +func DummyChallengeResponseRequestAsFlowChallengeResponseRequest(v *DummyChallengeResponseRequest) FlowChallengeResponseRequest { + return FlowChallengeResponseRequest{ + DummyChallengeResponseRequest: v, + } +} + +// EmailChallengeResponseRequestAsFlowChallengeResponseRequest is a convenience function that returns EmailChallengeResponseRequest wrapped in FlowChallengeResponseRequest +func EmailChallengeResponseRequestAsFlowChallengeResponseRequest(v *EmailChallengeResponseRequest) FlowChallengeResponseRequest { + return FlowChallengeResponseRequest{ + EmailChallengeResponseRequest: v, + } +} + +// EndpointAgentChallengeResponseRequestAsFlowChallengeResponseRequest is a convenience function that returns EndpointAgentChallengeResponseRequest wrapped in FlowChallengeResponseRequest +func EndpointAgentChallengeResponseRequestAsFlowChallengeResponseRequest(v *EndpointAgentChallengeResponseRequest) FlowChallengeResponseRequest { + return FlowChallengeResponseRequest{ + EndpointAgentChallengeResponseRequest: v, + } +} + +// FrameChallengeResponseRequestAsFlowChallengeResponseRequest is a convenience function that returns FrameChallengeResponseRequest wrapped in FlowChallengeResponseRequest +func FrameChallengeResponseRequestAsFlowChallengeResponseRequest(v *FrameChallengeResponseRequest) FlowChallengeResponseRequest { + return FlowChallengeResponseRequest{ + FrameChallengeResponseRequest: v, + } +} + +// IdentificationChallengeResponseRequestAsFlowChallengeResponseRequest is a convenience function that returns IdentificationChallengeResponseRequest wrapped in FlowChallengeResponseRequest +func IdentificationChallengeResponseRequestAsFlowChallengeResponseRequest(v *IdentificationChallengeResponseRequest) FlowChallengeResponseRequest { + return FlowChallengeResponseRequest{ + IdentificationChallengeResponseRequest: v, + } +} + +// IframeLogoutChallengeResponseRequestAsFlowChallengeResponseRequest is a convenience function that returns IframeLogoutChallengeResponseRequest wrapped in FlowChallengeResponseRequest +func IframeLogoutChallengeResponseRequestAsFlowChallengeResponseRequest(v *IframeLogoutChallengeResponseRequest) FlowChallengeResponseRequest { + return FlowChallengeResponseRequest{ + IframeLogoutChallengeResponseRequest: v, + } +} + +// NativeLogoutChallengeResponseRequestAsFlowChallengeResponseRequest is a convenience function that returns NativeLogoutChallengeResponseRequest wrapped in FlowChallengeResponseRequest +func NativeLogoutChallengeResponseRequestAsFlowChallengeResponseRequest(v *NativeLogoutChallengeResponseRequest) FlowChallengeResponseRequest { + return FlowChallengeResponseRequest{ + NativeLogoutChallengeResponseRequest: v, + } +} + +// OAuthDeviceCodeChallengeResponseRequestAsFlowChallengeResponseRequest is a convenience function that returns OAuthDeviceCodeChallengeResponseRequest wrapped in FlowChallengeResponseRequest +func OAuthDeviceCodeChallengeResponseRequestAsFlowChallengeResponseRequest(v *OAuthDeviceCodeChallengeResponseRequest) FlowChallengeResponseRequest { + return FlowChallengeResponseRequest{ + OAuthDeviceCodeChallengeResponseRequest: v, + } +} + +// OAuthDeviceCodeFinishChallengeResponseRequestAsFlowChallengeResponseRequest is a convenience function that returns OAuthDeviceCodeFinishChallengeResponseRequest wrapped in FlowChallengeResponseRequest +func OAuthDeviceCodeFinishChallengeResponseRequestAsFlowChallengeResponseRequest(v *OAuthDeviceCodeFinishChallengeResponseRequest) FlowChallengeResponseRequest { + return FlowChallengeResponseRequest{ + OAuthDeviceCodeFinishChallengeResponseRequest: v, + } +} + +// PasswordChallengeResponseRequestAsFlowChallengeResponseRequest is a convenience function that returns PasswordChallengeResponseRequest wrapped in FlowChallengeResponseRequest +func PasswordChallengeResponseRequestAsFlowChallengeResponseRequest(v *PasswordChallengeResponseRequest) FlowChallengeResponseRequest { + return FlowChallengeResponseRequest{ + PasswordChallengeResponseRequest: v, + } +} + +// PlexAuthenticationChallengeResponseRequestAsFlowChallengeResponseRequest is a convenience function that returns PlexAuthenticationChallengeResponseRequest wrapped in FlowChallengeResponseRequest +func PlexAuthenticationChallengeResponseRequestAsFlowChallengeResponseRequest(v *PlexAuthenticationChallengeResponseRequest) FlowChallengeResponseRequest { + return FlowChallengeResponseRequest{ + PlexAuthenticationChallengeResponseRequest: v, + } +} + +// PromptChallengeResponseRequestAsFlowChallengeResponseRequest is a convenience function that returns PromptChallengeResponseRequest wrapped in FlowChallengeResponseRequest +func PromptChallengeResponseRequestAsFlowChallengeResponseRequest(v *PromptChallengeResponseRequest) FlowChallengeResponseRequest { + return FlowChallengeResponseRequest{ + PromptChallengeResponseRequest: v, + } +} + +// RedirectChallengeResponseRequestAsFlowChallengeResponseRequest is a convenience function that returns RedirectChallengeResponseRequest wrapped in FlowChallengeResponseRequest +func RedirectChallengeResponseRequestAsFlowChallengeResponseRequest(v *RedirectChallengeResponseRequest) FlowChallengeResponseRequest { + return FlowChallengeResponseRequest{ + RedirectChallengeResponseRequest: v, + } +} + +// TelegramChallengeResponseRequestAsFlowChallengeResponseRequest is a convenience function that returns TelegramChallengeResponseRequest wrapped in FlowChallengeResponseRequest +func TelegramChallengeResponseRequestAsFlowChallengeResponseRequest(v *TelegramChallengeResponseRequest) FlowChallengeResponseRequest { + return FlowChallengeResponseRequest{ + TelegramChallengeResponseRequest: v, + } +} + +// UserLoginChallengeResponseRequestAsFlowChallengeResponseRequest is a convenience function that returns UserLoginChallengeResponseRequest wrapped in FlowChallengeResponseRequest +func UserLoginChallengeResponseRequestAsFlowChallengeResponseRequest(v *UserLoginChallengeResponseRequest) FlowChallengeResponseRequest { + return FlowChallengeResponseRequest{ + UserLoginChallengeResponseRequest: v, + } +} + +// Unmarshal JSON data into one of the pointers in the struct +func (dst *FlowChallengeResponseRequest) UnmarshalJSON(data []byte) error { + var err error + // use discriminator value to speed up the lookup + var jsonDict map[string]interface{} + err = newStrictDecoder(data).Decode(&jsonDict) + if err != nil { + return fmt.Errorf("failed to unmarshal JSON into map for the discriminator lookup") + } + + // check if the discriminator value is 'ak-provider-iframe-logout' + if jsonDict["component"] == "ak-provider-iframe-logout" { + // try to unmarshal JSON data into IframeLogoutChallengeResponseRequest + err = json.Unmarshal(data, &dst.IframeLogoutChallengeResponseRequest) + if err == nil { + return nil // data stored in dst.IframeLogoutChallengeResponseRequest, return on the first match + } else { + dst.IframeLogoutChallengeResponseRequest = nil + return fmt.Errorf("failed to unmarshal FlowChallengeResponseRequest as IframeLogoutChallengeResponseRequest: %s", err.Error()) + } + } + + // check if the discriminator value is 'ak-provider-oauth2-device-code' + if jsonDict["component"] == "ak-provider-oauth2-device-code" { + // try to unmarshal JSON data into OAuthDeviceCodeChallengeResponseRequest + err = json.Unmarshal(data, &dst.OAuthDeviceCodeChallengeResponseRequest) + if err == nil { + return nil // data stored in dst.OAuthDeviceCodeChallengeResponseRequest, return on the first match + } else { + dst.OAuthDeviceCodeChallengeResponseRequest = nil + return fmt.Errorf("failed to unmarshal FlowChallengeResponseRequest as OAuthDeviceCodeChallengeResponseRequest: %s", err.Error()) + } + } + + // check if the discriminator value is 'ak-provider-oauth2-device-code-finish' + if jsonDict["component"] == "ak-provider-oauth2-device-code-finish" { + // try to unmarshal JSON data into OAuthDeviceCodeFinishChallengeResponseRequest + err = json.Unmarshal(data, &dst.OAuthDeviceCodeFinishChallengeResponseRequest) + if err == nil { + return nil // data stored in dst.OAuthDeviceCodeFinishChallengeResponseRequest, return on the first match + } else { + dst.OAuthDeviceCodeFinishChallengeResponseRequest = nil + return fmt.Errorf("failed to unmarshal FlowChallengeResponseRequest as OAuthDeviceCodeFinishChallengeResponseRequest: %s", err.Error()) + } + } + + // check if the discriminator value is 'ak-provider-saml-native-logout' + if jsonDict["component"] == "ak-provider-saml-native-logout" { + // try to unmarshal JSON data into NativeLogoutChallengeResponseRequest + err = json.Unmarshal(data, &dst.NativeLogoutChallengeResponseRequest) + if err == nil { + return nil // data stored in dst.NativeLogoutChallengeResponseRequest, return on the first match + } else { + dst.NativeLogoutChallengeResponseRequest = nil + return fmt.Errorf("failed to unmarshal FlowChallengeResponseRequest as NativeLogoutChallengeResponseRequest: %s", err.Error()) + } + } + + // check if the discriminator value is 'ak-source-oauth-apple' + if jsonDict["component"] == "ak-source-oauth-apple" { + // try to unmarshal JSON data into AppleChallengeResponseRequest + err = json.Unmarshal(data, &dst.AppleChallengeResponseRequest) + if err == nil { + return nil // data stored in dst.AppleChallengeResponseRequest, return on the first match + } else { + dst.AppleChallengeResponseRequest = nil + return fmt.Errorf("failed to unmarshal FlowChallengeResponseRequest as AppleChallengeResponseRequest: %s", err.Error()) + } + } + + // check if the discriminator value is 'ak-source-plex' + if jsonDict["component"] == "ak-source-plex" { + // try to unmarshal JSON data into PlexAuthenticationChallengeResponseRequest + err = json.Unmarshal(data, &dst.PlexAuthenticationChallengeResponseRequest) + if err == nil { + return nil // data stored in dst.PlexAuthenticationChallengeResponseRequest, return on the first match + } else { + dst.PlexAuthenticationChallengeResponseRequest = nil + return fmt.Errorf("failed to unmarshal FlowChallengeResponseRequest as PlexAuthenticationChallengeResponseRequest: %s", err.Error()) + } + } + + // check if the discriminator value is 'ak-source-telegram' + if jsonDict["component"] == "ak-source-telegram" { + // try to unmarshal JSON data into TelegramChallengeResponseRequest + err = json.Unmarshal(data, &dst.TelegramChallengeResponseRequest) + if err == nil { + return nil // data stored in dst.TelegramChallengeResponseRequest, return on the first match + } else { + dst.TelegramChallengeResponseRequest = nil + return fmt.Errorf("failed to unmarshal FlowChallengeResponseRequest as TelegramChallengeResponseRequest: %s", err.Error()) + } + } + + // check if the discriminator value is 'ak-stage-authenticator-duo' + if jsonDict["component"] == "ak-stage-authenticator-duo" { + // try to unmarshal JSON data into AuthenticatorDuoChallengeResponseRequest + err = json.Unmarshal(data, &dst.AuthenticatorDuoChallengeResponseRequest) + if err == nil { + return nil // data stored in dst.AuthenticatorDuoChallengeResponseRequest, return on the first match + } else { + dst.AuthenticatorDuoChallengeResponseRequest = nil + return fmt.Errorf("failed to unmarshal FlowChallengeResponseRequest as AuthenticatorDuoChallengeResponseRequest: %s", err.Error()) + } + } + + // check if the discriminator value is 'ak-stage-authenticator-email' + if jsonDict["component"] == "ak-stage-authenticator-email" { + // try to unmarshal JSON data into AuthenticatorEmailChallengeResponseRequest + err = json.Unmarshal(data, &dst.AuthenticatorEmailChallengeResponseRequest) + if err == nil { + return nil // data stored in dst.AuthenticatorEmailChallengeResponseRequest, return on the first match + } else { + dst.AuthenticatorEmailChallengeResponseRequest = nil + return fmt.Errorf("failed to unmarshal FlowChallengeResponseRequest as AuthenticatorEmailChallengeResponseRequest: %s", err.Error()) + } + } + + // check if the discriminator value is 'ak-stage-authenticator-sms' + if jsonDict["component"] == "ak-stage-authenticator-sms" { + // try to unmarshal JSON data into AuthenticatorSMSChallengeResponseRequest + err = json.Unmarshal(data, &dst.AuthenticatorSMSChallengeResponseRequest) + if err == nil { + return nil // data stored in dst.AuthenticatorSMSChallengeResponseRequest, return on the first match + } else { + dst.AuthenticatorSMSChallengeResponseRequest = nil + return fmt.Errorf("failed to unmarshal FlowChallengeResponseRequest as AuthenticatorSMSChallengeResponseRequest: %s", err.Error()) + } + } + + // check if the discriminator value is 'ak-stage-authenticator-static' + if jsonDict["component"] == "ak-stage-authenticator-static" { + // try to unmarshal JSON data into AuthenticatorStaticChallengeResponseRequest + err = json.Unmarshal(data, &dst.AuthenticatorStaticChallengeResponseRequest) + if err == nil { + return nil // data stored in dst.AuthenticatorStaticChallengeResponseRequest, return on the first match + } else { + dst.AuthenticatorStaticChallengeResponseRequest = nil + return fmt.Errorf("failed to unmarshal FlowChallengeResponseRequest as AuthenticatorStaticChallengeResponseRequest: %s", err.Error()) + } + } + + // check if the discriminator value is 'ak-stage-authenticator-totp' + if jsonDict["component"] == "ak-stage-authenticator-totp" { + // try to unmarshal JSON data into AuthenticatorTOTPChallengeResponseRequest + err = json.Unmarshal(data, &dst.AuthenticatorTOTPChallengeResponseRequest) + if err == nil { + return nil // data stored in dst.AuthenticatorTOTPChallengeResponseRequest, return on the first match + } else { + dst.AuthenticatorTOTPChallengeResponseRequest = nil + return fmt.Errorf("failed to unmarshal FlowChallengeResponseRequest as AuthenticatorTOTPChallengeResponseRequest: %s", err.Error()) + } + } + + // check if the discriminator value is 'ak-stage-authenticator-validate' + if jsonDict["component"] == "ak-stage-authenticator-validate" { + // try to unmarshal JSON data into AuthenticatorValidationChallengeResponseRequest + err = json.Unmarshal(data, &dst.AuthenticatorValidationChallengeResponseRequest) + if err == nil { + return nil // data stored in dst.AuthenticatorValidationChallengeResponseRequest, return on the first match + } else { + dst.AuthenticatorValidationChallengeResponseRequest = nil + return fmt.Errorf("failed to unmarshal FlowChallengeResponseRequest as AuthenticatorValidationChallengeResponseRequest: %s", err.Error()) + } + } + + // check if the discriminator value is 'ak-stage-authenticator-webauthn' + if jsonDict["component"] == "ak-stage-authenticator-webauthn" { + // try to unmarshal JSON data into AuthenticatorWebAuthnChallengeResponseRequest + err = json.Unmarshal(data, &dst.AuthenticatorWebAuthnChallengeResponseRequest) + if err == nil { + return nil // data stored in dst.AuthenticatorWebAuthnChallengeResponseRequest, return on the first match + } else { + dst.AuthenticatorWebAuthnChallengeResponseRequest = nil + return fmt.Errorf("failed to unmarshal FlowChallengeResponseRequest as AuthenticatorWebAuthnChallengeResponseRequest: %s", err.Error()) + } + } + + // check if the discriminator value is 'ak-stage-autosubmit' + if jsonDict["component"] == "ak-stage-autosubmit" { + // try to unmarshal JSON data into AutoSubmitChallengeResponseRequest + err = json.Unmarshal(data, &dst.AutoSubmitChallengeResponseRequest) + if err == nil { + return nil // data stored in dst.AutoSubmitChallengeResponseRequest, return on the first match + } else { + dst.AutoSubmitChallengeResponseRequest = nil + return fmt.Errorf("failed to unmarshal FlowChallengeResponseRequest as AutoSubmitChallengeResponseRequest: %s", err.Error()) + } + } + + // check if the discriminator value is 'ak-stage-captcha' + if jsonDict["component"] == "ak-stage-captcha" { + // try to unmarshal JSON data into CaptchaChallengeResponseRequest + err = json.Unmarshal(data, &dst.CaptchaChallengeResponseRequest) + if err == nil { + return nil // data stored in dst.CaptchaChallengeResponseRequest, return on the first match + } else { + dst.CaptchaChallengeResponseRequest = nil + return fmt.Errorf("failed to unmarshal FlowChallengeResponseRequest as CaptchaChallengeResponseRequest: %s", err.Error()) + } + } + + // check if the discriminator value is 'ak-stage-consent' + if jsonDict["component"] == "ak-stage-consent" { + // try to unmarshal JSON data into ConsentChallengeResponseRequest + err = json.Unmarshal(data, &dst.ConsentChallengeResponseRequest) + if err == nil { + return nil // data stored in dst.ConsentChallengeResponseRequest, return on the first match + } else { + dst.ConsentChallengeResponseRequest = nil + return fmt.Errorf("failed to unmarshal FlowChallengeResponseRequest as ConsentChallengeResponseRequest: %s", err.Error()) + } + } + + // check if the discriminator value is 'ak-stage-dummy' + if jsonDict["component"] == "ak-stage-dummy" { + // try to unmarshal JSON data into DummyChallengeResponseRequest + err = json.Unmarshal(data, &dst.DummyChallengeResponseRequest) + if err == nil { + return nil // data stored in dst.DummyChallengeResponseRequest, return on the first match + } else { + dst.DummyChallengeResponseRequest = nil + return fmt.Errorf("failed to unmarshal FlowChallengeResponseRequest as DummyChallengeResponseRequest: %s", err.Error()) + } + } + + // check if the discriminator value is 'ak-stage-email' + if jsonDict["component"] == "ak-stage-email" { + // try to unmarshal JSON data into EmailChallengeResponseRequest + err = json.Unmarshal(data, &dst.EmailChallengeResponseRequest) + if err == nil { + return nil // data stored in dst.EmailChallengeResponseRequest, return on the first match + } else { + dst.EmailChallengeResponseRequest = nil + return fmt.Errorf("failed to unmarshal FlowChallengeResponseRequest as EmailChallengeResponseRequest: %s", err.Error()) + } + } + + // check if the discriminator value is 'ak-stage-endpoint-agent' + if jsonDict["component"] == "ak-stage-endpoint-agent" { + // try to unmarshal JSON data into EndpointAgentChallengeResponseRequest + err = json.Unmarshal(data, &dst.EndpointAgentChallengeResponseRequest) + if err == nil { + return nil // data stored in dst.EndpointAgentChallengeResponseRequest, return on the first match + } else { + dst.EndpointAgentChallengeResponseRequest = nil + return fmt.Errorf("failed to unmarshal FlowChallengeResponseRequest as EndpointAgentChallengeResponseRequest: %s", err.Error()) + } + } + + // check if the discriminator value is 'ak-stage-identification' + if jsonDict["component"] == "ak-stage-identification" { + // try to unmarshal JSON data into IdentificationChallengeResponseRequest + err = json.Unmarshal(data, &dst.IdentificationChallengeResponseRequest) + if err == nil { + return nil // data stored in dst.IdentificationChallengeResponseRequest, return on the first match + } else { + dst.IdentificationChallengeResponseRequest = nil + return fmt.Errorf("failed to unmarshal FlowChallengeResponseRequest as IdentificationChallengeResponseRequest: %s", err.Error()) + } + } + + // check if the discriminator value is 'ak-stage-password' + if jsonDict["component"] == "ak-stage-password" { + // try to unmarshal JSON data into PasswordChallengeResponseRequest + err = json.Unmarshal(data, &dst.PasswordChallengeResponseRequest) + if err == nil { + return nil // data stored in dst.PasswordChallengeResponseRequest, return on the first match + } else { + dst.PasswordChallengeResponseRequest = nil + return fmt.Errorf("failed to unmarshal FlowChallengeResponseRequest as PasswordChallengeResponseRequest: %s", err.Error()) + } + } + + // check if the discriminator value is 'ak-stage-prompt' + if jsonDict["component"] == "ak-stage-prompt" { + // try to unmarshal JSON data into PromptChallengeResponseRequest + err = json.Unmarshal(data, &dst.PromptChallengeResponseRequest) + if err == nil { + return nil // data stored in dst.PromptChallengeResponseRequest, return on the first match + } else { + dst.PromptChallengeResponseRequest = nil + return fmt.Errorf("failed to unmarshal FlowChallengeResponseRequest as PromptChallengeResponseRequest: %s", err.Error()) + } + } + + // check if the discriminator value is 'ak-stage-user-login' + if jsonDict["component"] == "ak-stage-user-login" { + // try to unmarshal JSON data into UserLoginChallengeResponseRequest + err = json.Unmarshal(data, &dst.UserLoginChallengeResponseRequest) + if err == nil { + return nil // data stored in dst.UserLoginChallengeResponseRequest, return on the first match + } else { + dst.UserLoginChallengeResponseRequest = nil + return fmt.Errorf("failed to unmarshal FlowChallengeResponseRequest as UserLoginChallengeResponseRequest: %s", err.Error()) + } + } + + // check if the discriminator value is 'xak-flow-frame' + if jsonDict["component"] == "xak-flow-frame" { + // try to unmarshal JSON data into FrameChallengeResponseRequest + err = json.Unmarshal(data, &dst.FrameChallengeResponseRequest) + if err == nil { + return nil // data stored in dst.FrameChallengeResponseRequest, return on the first match + } else { + dst.FrameChallengeResponseRequest = nil + return fmt.Errorf("failed to unmarshal FlowChallengeResponseRequest as FrameChallengeResponseRequest: %s", err.Error()) + } + } + + // check if the discriminator value is 'xak-flow-redirect' + if jsonDict["component"] == "xak-flow-redirect" { + // try to unmarshal JSON data into RedirectChallengeResponseRequest + err = json.Unmarshal(data, &dst.RedirectChallengeResponseRequest) + if err == nil { + return nil // data stored in dst.RedirectChallengeResponseRequest, return on the first match + } else { + dst.RedirectChallengeResponseRequest = nil + return fmt.Errorf("failed to unmarshal FlowChallengeResponseRequest as RedirectChallengeResponseRequest: %s", err.Error()) + } + } + + return nil +} + +// Marshal data from the first non-nil pointers in the struct to JSON +func (src FlowChallengeResponseRequest) MarshalJSON() ([]byte, error) { + if src.AppleChallengeResponseRequest != nil { + return json.Marshal(&src.AppleChallengeResponseRequest) + } + + if src.AuthenticatorDuoChallengeResponseRequest != nil { + return json.Marshal(&src.AuthenticatorDuoChallengeResponseRequest) + } + + if src.AuthenticatorEmailChallengeResponseRequest != nil { + return json.Marshal(&src.AuthenticatorEmailChallengeResponseRequest) + } + + if src.AuthenticatorSMSChallengeResponseRequest != nil { + return json.Marshal(&src.AuthenticatorSMSChallengeResponseRequest) + } + + if src.AuthenticatorStaticChallengeResponseRequest != nil { + return json.Marshal(&src.AuthenticatorStaticChallengeResponseRequest) + } + + if src.AuthenticatorTOTPChallengeResponseRequest != nil { + return json.Marshal(&src.AuthenticatorTOTPChallengeResponseRequest) + } + + if src.AuthenticatorValidationChallengeResponseRequest != nil { + return json.Marshal(&src.AuthenticatorValidationChallengeResponseRequest) + } + + if src.AuthenticatorWebAuthnChallengeResponseRequest != nil { + return json.Marshal(&src.AuthenticatorWebAuthnChallengeResponseRequest) + } + + if src.AutoSubmitChallengeResponseRequest != nil { + return json.Marshal(&src.AutoSubmitChallengeResponseRequest) + } + + if src.CaptchaChallengeResponseRequest != nil { + return json.Marshal(&src.CaptchaChallengeResponseRequest) + } + + if src.ConsentChallengeResponseRequest != nil { + return json.Marshal(&src.ConsentChallengeResponseRequest) + } + + if src.DummyChallengeResponseRequest != nil { + return json.Marshal(&src.DummyChallengeResponseRequest) + } + + if src.EmailChallengeResponseRequest != nil { + return json.Marshal(&src.EmailChallengeResponseRequest) + } + + if src.EndpointAgentChallengeResponseRequest != nil { + return json.Marshal(&src.EndpointAgentChallengeResponseRequest) + } + + if src.FrameChallengeResponseRequest != nil { + return json.Marshal(&src.FrameChallengeResponseRequest) + } + + if src.IdentificationChallengeResponseRequest != nil { + return json.Marshal(&src.IdentificationChallengeResponseRequest) + } + + if src.IframeLogoutChallengeResponseRequest != nil { + return json.Marshal(&src.IframeLogoutChallengeResponseRequest) + } + + if src.NativeLogoutChallengeResponseRequest != nil { + return json.Marshal(&src.NativeLogoutChallengeResponseRequest) + } + + if src.OAuthDeviceCodeChallengeResponseRequest != nil { + return json.Marshal(&src.OAuthDeviceCodeChallengeResponseRequest) + } + + if src.OAuthDeviceCodeFinishChallengeResponseRequest != nil { + return json.Marshal(&src.OAuthDeviceCodeFinishChallengeResponseRequest) + } + + if src.PasswordChallengeResponseRequest != nil { + return json.Marshal(&src.PasswordChallengeResponseRequest) + } + + if src.PlexAuthenticationChallengeResponseRequest != nil { + return json.Marshal(&src.PlexAuthenticationChallengeResponseRequest) + } + + if src.PromptChallengeResponseRequest != nil { + return json.Marshal(&src.PromptChallengeResponseRequest) + } + + if src.RedirectChallengeResponseRequest != nil { + return json.Marshal(&src.RedirectChallengeResponseRequest) + } + + if src.TelegramChallengeResponseRequest != nil { + return json.Marshal(&src.TelegramChallengeResponseRequest) + } + + if src.UserLoginChallengeResponseRequest != nil { + return json.Marshal(&src.UserLoginChallengeResponseRequest) + } + + return nil, nil // no data in oneOf schemas +} + +// Get the actual instance +func (obj *FlowChallengeResponseRequest) GetActualInstance() interface{} { + if obj == nil { + return nil + } + if obj.AppleChallengeResponseRequest != nil { + return obj.AppleChallengeResponseRequest + } + + if obj.AuthenticatorDuoChallengeResponseRequest != nil { + return obj.AuthenticatorDuoChallengeResponseRequest + } + + if obj.AuthenticatorEmailChallengeResponseRequest != nil { + return obj.AuthenticatorEmailChallengeResponseRequest + } + + if obj.AuthenticatorSMSChallengeResponseRequest != nil { + return obj.AuthenticatorSMSChallengeResponseRequest + } + + if obj.AuthenticatorStaticChallengeResponseRequest != nil { + return obj.AuthenticatorStaticChallengeResponseRequest + } + + if obj.AuthenticatorTOTPChallengeResponseRequest != nil { + return obj.AuthenticatorTOTPChallengeResponseRequest + } + + if obj.AuthenticatorValidationChallengeResponseRequest != nil { + return obj.AuthenticatorValidationChallengeResponseRequest + } + + if obj.AuthenticatorWebAuthnChallengeResponseRequest != nil { + return obj.AuthenticatorWebAuthnChallengeResponseRequest + } + + if obj.AutoSubmitChallengeResponseRequest != nil { + return obj.AutoSubmitChallengeResponseRequest + } + + if obj.CaptchaChallengeResponseRequest != nil { + return obj.CaptchaChallengeResponseRequest + } + + if obj.ConsentChallengeResponseRequest != nil { + return obj.ConsentChallengeResponseRequest + } + + if obj.DummyChallengeResponseRequest != nil { + return obj.DummyChallengeResponseRequest + } + + if obj.EmailChallengeResponseRequest != nil { + return obj.EmailChallengeResponseRequest + } + + if obj.EndpointAgentChallengeResponseRequest != nil { + return obj.EndpointAgentChallengeResponseRequest + } + + if obj.FrameChallengeResponseRequest != nil { + return obj.FrameChallengeResponseRequest + } + + if obj.IdentificationChallengeResponseRequest != nil { + return obj.IdentificationChallengeResponseRequest + } + + if obj.IframeLogoutChallengeResponseRequest != nil { + return obj.IframeLogoutChallengeResponseRequest + } + + if obj.NativeLogoutChallengeResponseRequest != nil { + return obj.NativeLogoutChallengeResponseRequest + } + + if obj.OAuthDeviceCodeChallengeResponseRequest != nil { + return obj.OAuthDeviceCodeChallengeResponseRequest + } + + if obj.OAuthDeviceCodeFinishChallengeResponseRequest != nil { + return obj.OAuthDeviceCodeFinishChallengeResponseRequest + } + + if obj.PasswordChallengeResponseRequest != nil { + return obj.PasswordChallengeResponseRequest + } + + if obj.PlexAuthenticationChallengeResponseRequest != nil { + return obj.PlexAuthenticationChallengeResponseRequest + } + + if obj.PromptChallengeResponseRequest != nil { + return obj.PromptChallengeResponseRequest + } + + if obj.RedirectChallengeResponseRequest != nil { + return obj.RedirectChallengeResponseRequest + } + + if obj.TelegramChallengeResponseRequest != nil { + return obj.TelegramChallengeResponseRequest + } + + if obj.UserLoginChallengeResponseRequest != nil { + return obj.UserLoginChallengeResponseRequest + } + + // all schemas are nil + return nil +} + +// Get the actual instance value +func (obj FlowChallengeResponseRequest) GetActualInstanceValue() interface{} { + if obj.AppleChallengeResponseRequest != nil { + return *obj.AppleChallengeResponseRequest + } + + if obj.AuthenticatorDuoChallengeResponseRequest != nil { + return *obj.AuthenticatorDuoChallengeResponseRequest + } + + if obj.AuthenticatorEmailChallengeResponseRequest != nil { + return *obj.AuthenticatorEmailChallengeResponseRequest + } + + if obj.AuthenticatorSMSChallengeResponseRequest != nil { + return *obj.AuthenticatorSMSChallengeResponseRequest + } + + if obj.AuthenticatorStaticChallengeResponseRequest != nil { + return *obj.AuthenticatorStaticChallengeResponseRequest + } + + if obj.AuthenticatorTOTPChallengeResponseRequest != nil { + return *obj.AuthenticatorTOTPChallengeResponseRequest + } + + if obj.AuthenticatorValidationChallengeResponseRequest != nil { + return *obj.AuthenticatorValidationChallengeResponseRequest + } + + if obj.AuthenticatorWebAuthnChallengeResponseRequest != nil { + return *obj.AuthenticatorWebAuthnChallengeResponseRequest + } + + if obj.AutoSubmitChallengeResponseRequest != nil { + return *obj.AutoSubmitChallengeResponseRequest + } + + if obj.CaptchaChallengeResponseRequest != nil { + return *obj.CaptchaChallengeResponseRequest + } + + if obj.ConsentChallengeResponseRequest != nil { + return *obj.ConsentChallengeResponseRequest + } + + if obj.DummyChallengeResponseRequest != nil { + return *obj.DummyChallengeResponseRequest + } + + if obj.EmailChallengeResponseRequest != nil { + return *obj.EmailChallengeResponseRequest + } + + if obj.EndpointAgentChallengeResponseRequest != nil { + return *obj.EndpointAgentChallengeResponseRequest + } + + if obj.FrameChallengeResponseRequest != nil { + return *obj.FrameChallengeResponseRequest + } + + if obj.IdentificationChallengeResponseRequest != nil { + return *obj.IdentificationChallengeResponseRequest + } + + if obj.IframeLogoutChallengeResponseRequest != nil { + return *obj.IframeLogoutChallengeResponseRequest + } + + if obj.NativeLogoutChallengeResponseRequest != nil { + return *obj.NativeLogoutChallengeResponseRequest + } + + if obj.OAuthDeviceCodeChallengeResponseRequest != nil { + return *obj.OAuthDeviceCodeChallengeResponseRequest + } + + if obj.OAuthDeviceCodeFinishChallengeResponseRequest != nil { + return *obj.OAuthDeviceCodeFinishChallengeResponseRequest + } + + if obj.PasswordChallengeResponseRequest != nil { + return *obj.PasswordChallengeResponseRequest + } + + if obj.PlexAuthenticationChallengeResponseRequest != nil { + return *obj.PlexAuthenticationChallengeResponseRequest + } + + if obj.PromptChallengeResponseRequest != nil { + return *obj.PromptChallengeResponseRequest + } + + if obj.RedirectChallengeResponseRequest != nil { + return *obj.RedirectChallengeResponseRequest + } + + if obj.TelegramChallengeResponseRequest != nil { + return *obj.TelegramChallengeResponseRequest + } + + if obj.UserLoginChallengeResponseRequest != nil { + return *obj.UserLoginChallengeResponseRequest + } + + // all schemas are nil + return nil +} + +type NullableFlowChallengeResponseRequest struct { + value *FlowChallengeResponseRequest + isSet bool +} + +func (v NullableFlowChallengeResponseRequest) Get() *FlowChallengeResponseRequest { + return v.value +} + +func (v *NullableFlowChallengeResponseRequest) Set(val *FlowChallengeResponseRequest) { + v.value = val + v.isSet = true +} + +func (v NullableFlowChallengeResponseRequest) IsSet() bool { + return v.isSet +} + +func (v *NullableFlowChallengeResponseRequest) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableFlowChallengeResponseRequest(val *FlowChallengeResponseRequest) *NullableFlowChallengeResponseRequest { + return &NullableFlowChallengeResponseRequest{value: val, isSet: true} +} + +func (v NullableFlowChallengeResponseRequest) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableFlowChallengeResponseRequest) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_flow_designation_enum.go b/packages/client-go/model_flow_designation_enum.go new file mode 100644 index 0000000000..70e1a3193a --- /dev/null +++ b/packages/client-go/model_flow_designation_enum.go @@ -0,0 +1,121 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// FlowDesignationEnum the model 'FlowDesignationEnum' +type FlowDesignationEnum string + +// List of FlowDesignationEnum +const ( + FLOWDESIGNATIONENUM_AUTHENTICATION FlowDesignationEnum = "authentication" + FLOWDESIGNATIONENUM_AUTHORIZATION FlowDesignationEnum = "authorization" + FLOWDESIGNATIONENUM_INVALIDATION FlowDesignationEnum = "invalidation" + FLOWDESIGNATIONENUM_ENROLLMENT FlowDesignationEnum = "enrollment" + FLOWDESIGNATIONENUM_UNENROLLMENT FlowDesignationEnum = "unenrollment" + FLOWDESIGNATIONENUM_RECOVERY FlowDesignationEnum = "recovery" + FLOWDESIGNATIONENUM_STAGE_CONFIGURATION FlowDesignationEnum = "stage_configuration" +) + +// All allowed values of FlowDesignationEnum enum +var AllowedFlowDesignationEnumEnumValues = []FlowDesignationEnum{ + "authentication", + "authorization", + "invalidation", + "enrollment", + "unenrollment", + "recovery", + "stage_configuration", +} + +func (v *FlowDesignationEnum) UnmarshalJSON(src []byte) error { + var value string + err := json.Unmarshal(src, &value) + if err != nil { + return err + } + enumTypeValue := FlowDesignationEnum(value) + for _, existing := range AllowedFlowDesignationEnumEnumValues { + if existing == enumTypeValue { + *v = enumTypeValue + return nil + } + } + + return fmt.Errorf("%+v is not a valid FlowDesignationEnum", value) +} + +// NewFlowDesignationEnumFromValue returns a pointer to a valid FlowDesignationEnum +// for the value passed as argument, or an error if the value passed is not allowed by the enum +func NewFlowDesignationEnumFromValue(v string) (*FlowDesignationEnum, error) { + ev := FlowDesignationEnum(v) + if ev.IsValid() { + return &ev, nil + } else { + return nil, fmt.Errorf("invalid value '%v' for FlowDesignationEnum: valid values are %v", v, AllowedFlowDesignationEnumEnumValues) + } +} + +// IsValid return true if the value is valid for the enum, false otherwise +func (v FlowDesignationEnum) IsValid() bool { + for _, existing := range AllowedFlowDesignationEnumEnumValues { + if existing == v { + return true + } + } + return false +} + +// Ptr returns reference to FlowDesignationEnum value +func (v FlowDesignationEnum) Ptr() *FlowDesignationEnum { + return &v +} + +type NullableFlowDesignationEnum struct { + value *FlowDesignationEnum + isSet bool +} + +func (v NullableFlowDesignationEnum) Get() *FlowDesignationEnum { + return v.value +} + +func (v *NullableFlowDesignationEnum) Set(val *FlowDesignationEnum) { + v.value = val + v.isSet = true +} + +func (v NullableFlowDesignationEnum) IsSet() bool { + return v.isSet +} + +func (v *NullableFlowDesignationEnum) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableFlowDesignationEnum(val *FlowDesignationEnum) *NullableFlowDesignationEnum { + return &NullableFlowDesignationEnum{value: val, isSet: true} +} + +func (v NullableFlowDesignationEnum) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableFlowDesignationEnum) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_flow_error_challenge.go b/packages/client-go/model_flow_error_challenge.go new file mode 100644 index 0000000000..942050e587 --- /dev/null +++ b/packages/client-go/model_flow_error_challenge.go @@ -0,0 +1,356 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// checks if the FlowErrorChallenge type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &FlowErrorChallenge{} + +// FlowErrorChallenge Challenge class when an unhandled error occurs during a stage. Normal users are shown an error message, superusers are shown a full stacktrace. +type FlowErrorChallenge struct { + FlowInfo *ContextualFlowInfo `json:"flow_info,omitempty"` + Component *string `json:"component,omitempty"` + ResponseErrors *map[string][]ErrorDetail `json:"response_errors,omitempty"` + RequestId string `json:"request_id"` + Error *string `json:"error,omitempty"` + Traceback *string `json:"traceback,omitempty"` + AdditionalProperties map[string]interface{} +} + +type _FlowErrorChallenge FlowErrorChallenge + +// NewFlowErrorChallenge instantiates a new FlowErrorChallenge object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewFlowErrorChallenge(requestId string) *FlowErrorChallenge { + this := FlowErrorChallenge{} + var component string = "ak-stage-flow-error" + this.Component = &component + this.RequestId = requestId + return &this +} + +// NewFlowErrorChallengeWithDefaults instantiates a new FlowErrorChallenge object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewFlowErrorChallengeWithDefaults() *FlowErrorChallenge { + this := FlowErrorChallenge{} + var component string = "ak-stage-flow-error" + this.Component = &component + return &this +} + +// GetFlowInfo returns the FlowInfo field value if set, zero value otherwise. +func (o *FlowErrorChallenge) GetFlowInfo() ContextualFlowInfo { + if o == nil || IsNil(o.FlowInfo) { + var ret ContextualFlowInfo + return ret + } + return *o.FlowInfo +} + +// GetFlowInfoOk returns a tuple with the FlowInfo field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *FlowErrorChallenge) GetFlowInfoOk() (*ContextualFlowInfo, bool) { + if o == nil || IsNil(o.FlowInfo) { + return nil, false + } + return o.FlowInfo, true +} + +// HasFlowInfo returns a boolean if a field has been set. +func (o *FlowErrorChallenge) HasFlowInfo() bool { + if o != nil && !IsNil(o.FlowInfo) { + return true + } + + return false +} + +// SetFlowInfo gets a reference to the given ContextualFlowInfo and assigns it to the FlowInfo field. +func (o *FlowErrorChallenge) SetFlowInfo(v ContextualFlowInfo) { + o.FlowInfo = &v +} + +// GetComponent returns the Component field value if set, zero value otherwise. +func (o *FlowErrorChallenge) GetComponent() string { + if o == nil || IsNil(o.Component) { + var ret string + return ret + } + return *o.Component +} + +// GetComponentOk returns a tuple with the Component field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *FlowErrorChallenge) GetComponentOk() (*string, bool) { + if o == nil || IsNil(o.Component) { + return nil, false + } + return o.Component, true +} + +// HasComponent returns a boolean if a field has been set. +func (o *FlowErrorChallenge) HasComponent() bool { + if o != nil && !IsNil(o.Component) { + return true + } + + return false +} + +// SetComponent gets a reference to the given string and assigns it to the Component field. +func (o *FlowErrorChallenge) SetComponent(v string) { + o.Component = &v +} + +// GetResponseErrors returns the ResponseErrors field value if set, zero value otherwise. +func (o *FlowErrorChallenge) GetResponseErrors() map[string][]ErrorDetail { + if o == nil || IsNil(o.ResponseErrors) { + var ret map[string][]ErrorDetail + return ret + } + return *o.ResponseErrors +} + +// GetResponseErrorsOk returns a tuple with the ResponseErrors field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *FlowErrorChallenge) GetResponseErrorsOk() (*map[string][]ErrorDetail, bool) { + if o == nil || IsNil(o.ResponseErrors) { + return nil, false + } + return o.ResponseErrors, true +} + +// HasResponseErrors returns a boolean if a field has been set. +func (o *FlowErrorChallenge) HasResponseErrors() bool { + if o != nil && !IsNil(o.ResponseErrors) { + return true + } + + return false +} + +// SetResponseErrors gets a reference to the given map[string][]ErrorDetail and assigns it to the ResponseErrors field. +func (o *FlowErrorChallenge) SetResponseErrors(v map[string][]ErrorDetail) { + o.ResponseErrors = &v +} + +// GetRequestId returns the RequestId field value +func (o *FlowErrorChallenge) GetRequestId() string { + if o == nil { + var ret string + return ret + } + + return o.RequestId +} + +// GetRequestIdOk returns a tuple with the RequestId field value +// and a boolean to check if the value has been set. +func (o *FlowErrorChallenge) GetRequestIdOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.RequestId, true +} + +// SetRequestId sets field value +func (o *FlowErrorChallenge) SetRequestId(v string) { + o.RequestId = v +} + +// GetError returns the Error field value if set, zero value otherwise. +func (o *FlowErrorChallenge) GetError() string { + if o == nil || IsNil(o.Error) { + var ret string + return ret + } + return *o.Error +} + +// GetErrorOk returns a tuple with the Error field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *FlowErrorChallenge) GetErrorOk() (*string, bool) { + if o == nil || IsNil(o.Error) { + return nil, false + } + return o.Error, true +} + +// HasError returns a boolean if a field has been set. +func (o *FlowErrorChallenge) HasError() bool { + if o != nil && !IsNil(o.Error) { + return true + } + + return false +} + +// SetError gets a reference to the given string and assigns it to the Error field. +func (o *FlowErrorChallenge) SetError(v string) { + o.Error = &v +} + +// GetTraceback returns the Traceback field value if set, zero value otherwise. +func (o *FlowErrorChallenge) GetTraceback() string { + if o == nil || IsNil(o.Traceback) { + var ret string + return ret + } + return *o.Traceback +} + +// GetTracebackOk returns a tuple with the Traceback field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *FlowErrorChallenge) GetTracebackOk() (*string, bool) { + if o == nil || IsNil(o.Traceback) { + return nil, false + } + return o.Traceback, true +} + +// HasTraceback returns a boolean if a field has been set. +func (o *FlowErrorChallenge) HasTraceback() bool { + if o != nil && !IsNil(o.Traceback) { + return true + } + + return false +} + +// SetTraceback gets a reference to the given string and assigns it to the Traceback field. +func (o *FlowErrorChallenge) SetTraceback(v string) { + o.Traceback = &v +} + +func (o FlowErrorChallenge) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o FlowErrorChallenge) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.FlowInfo) { + toSerialize["flow_info"] = o.FlowInfo + } + if !IsNil(o.Component) { + toSerialize["component"] = o.Component + } + if !IsNil(o.ResponseErrors) { + toSerialize["response_errors"] = o.ResponseErrors + } + toSerialize["request_id"] = o.RequestId + if !IsNil(o.Error) { + toSerialize["error"] = o.Error + } + if !IsNil(o.Traceback) { + toSerialize["traceback"] = o.Traceback + } + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *FlowErrorChallenge) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "request_id", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varFlowErrorChallenge := _FlowErrorChallenge{} + + err = json.Unmarshal(data, &varFlowErrorChallenge) + + if err != nil { + return err + } + + *o = FlowErrorChallenge(varFlowErrorChallenge) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "flow_info") + delete(additionalProperties, "component") + delete(additionalProperties, "response_errors") + delete(additionalProperties, "request_id") + delete(additionalProperties, "error") + delete(additionalProperties, "traceback") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableFlowErrorChallenge struct { + value *FlowErrorChallenge + isSet bool +} + +func (v NullableFlowErrorChallenge) Get() *FlowErrorChallenge { + return v.value +} + +func (v *NullableFlowErrorChallenge) Set(val *FlowErrorChallenge) { + v.value = val + v.isSet = true +} + +func (v NullableFlowErrorChallenge) IsSet() bool { + return v.isSet +} + +func (v *NullableFlowErrorChallenge) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableFlowErrorChallenge(val *FlowErrorChallenge) *NullableFlowErrorChallenge { + return &NullableFlowErrorChallenge{value: val, isSet: true} +} + +func (v NullableFlowErrorChallenge) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableFlowErrorChallenge) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_frame_challenge.go b/packages/client-go/model_frame_challenge.go new file mode 100644 index 0000000000..a6e56cfd73 --- /dev/null +++ b/packages/client-go/model_frame_challenge.go @@ -0,0 +1,352 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// checks if the FrameChallenge type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &FrameChallenge{} + +// FrameChallenge Challenge type to render a frame +type FrameChallenge struct { + FlowInfo *ContextualFlowInfo `json:"flow_info,omitempty"` + Component *string `json:"component,omitempty"` + ResponseErrors *map[string][]ErrorDetail `json:"response_errors,omitempty"` + Url string `json:"url"` + LoadingOverlay *bool `json:"loading_overlay,omitempty"` + LoadingText string `json:"loading_text"` + AdditionalProperties map[string]interface{} +} + +type _FrameChallenge FrameChallenge + +// NewFrameChallenge instantiates a new FrameChallenge object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewFrameChallenge(url string, loadingText string) *FrameChallenge { + this := FrameChallenge{} + var component string = "xak-flow-frame" + this.Component = &component + this.Url = url + var loadingOverlay bool = false + this.LoadingOverlay = &loadingOverlay + this.LoadingText = loadingText + return &this +} + +// NewFrameChallengeWithDefaults instantiates a new FrameChallenge object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewFrameChallengeWithDefaults() *FrameChallenge { + this := FrameChallenge{} + var component string = "xak-flow-frame" + this.Component = &component + var loadingOverlay bool = false + this.LoadingOverlay = &loadingOverlay + return &this +} + +// GetFlowInfo returns the FlowInfo field value if set, zero value otherwise. +func (o *FrameChallenge) GetFlowInfo() ContextualFlowInfo { + if o == nil || IsNil(o.FlowInfo) { + var ret ContextualFlowInfo + return ret + } + return *o.FlowInfo +} + +// GetFlowInfoOk returns a tuple with the FlowInfo field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *FrameChallenge) GetFlowInfoOk() (*ContextualFlowInfo, bool) { + if o == nil || IsNil(o.FlowInfo) { + return nil, false + } + return o.FlowInfo, true +} + +// HasFlowInfo returns a boolean if a field has been set. +func (o *FrameChallenge) HasFlowInfo() bool { + if o != nil && !IsNil(o.FlowInfo) { + return true + } + + return false +} + +// SetFlowInfo gets a reference to the given ContextualFlowInfo and assigns it to the FlowInfo field. +func (o *FrameChallenge) SetFlowInfo(v ContextualFlowInfo) { + o.FlowInfo = &v +} + +// GetComponent returns the Component field value if set, zero value otherwise. +func (o *FrameChallenge) GetComponent() string { + if o == nil || IsNil(o.Component) { + var ret string + return ret + } + return *o.Component +} + +// GetComponentOk returns a tuple with the Component field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *FrameChallenge) GetComponentOk() (*string, bool) { + if o == nil || IsNil(o.Component) { + return nil, false + } + return o.Component, true +} + +// HasComponent returns a boolean if a field has been set. +func (o *FrameChallenge) HasComponent() bool { + if o != nil && !IsNil(o.Component) { + return true + } + + return false +} + +// SetComponent gets a reference to the given string and assigns it to the Component field. +func (o *FrameChallenge) SetComponent(v string) { + o.Component = &v +} + +// GetResponseErrors returns the ResponseErrors field value if set, zero value otherwise. +func (o *FrameChallenge) GetResponseErrors() map[string][]ErrorDetail { + if o == nil || IsNil(o.ResponseErrors) { + var ret map[string][]ErrorDetail + return ret + } + return *o.ResponseErrors +} + +// GetResponseErrorsOk returns a tuple with the ResponseErrors field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *FrameChallenge) GetResponseErrorsOk() (*map[string][]ErrorDetail, bool) { + if o == nil || IsNil(o.ResponseErrors) { + return nil, false + } + return o.ResponseErrors, true +} + +// HasResponseErrors returns a boolean if a field has been set. +func (o *FrameChallenge) HasResponseErrors() bool { + if o != nil && !IsNil(o.ResponseErrors) { + return true + } + + return false +} + +// SetResponseErrors gets a reference to the given map[string][]ErrorDetail and assigns it to the ResponseErrors field. +func (o *FrameChallenge) SetResponseErrors(v map[string][]ErrorDetail) { + o.ResponseErrors = &v +} + +// GetUrl returns the Url field value +func (o *FrameChallenge) GetUrl() string { + if o == nil { + var ret string + return ret + } + + return o.Url +} + +// GetUrlOk returns a tuple with the Url field value +// and a boolean to check if the value has been set. +func (o *FrameChallenge) GetUrlOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Url, true +} + +// SetUrl sets field value +func (o *FrameChallenge) SetUrl(v string) { + o.Url = v +} + +// GetLoadingOverlay returns the LoadingOverlay field value if set, zero value otherwise. +func (o *FrameChallenge) GetLoadingOverlay() bool { + if o == nil || IsNil(o.LoadingOverlay) { + var ret bool + return ret + } + return *o.LoadingOverlay +} + +// GetLoadingOverlayOk returns a tuple with the LoadingOverlay field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *FrameChallenge) GetLoadingOverlayOk() (*bool, bool) { + if o == nil || IsNil(o.LoadingOverlay) { + return nil, false + } + return o.LoadingOverlay, true +} + +// HasLoadingOverlay returns a boolean if a field has been set. +func (o *FrameChallenge) HasLoadingOverlay() bool { + if o != nil && !IsNil(o.LoadingOverlay) { + return true + } + + return false +} + +// SetLoadingOverlay gets a reference to the given bool and assigns it to the LoadingOverlay field. +func (o *FrameChallenge) SetLoadingOverlay(v bool) { + o.LoadingOverlay = &v +} + +// GetLoadingText returns the LoadingText field value +func (o *FrameChallenge) GetLoadingText() string { + if o == nil { + var ret string + return ret + } + + return o.LoadingText +} + +// GetLoadingTextOk returns a tuple with the LoadingText field value +// and a boolean to check if the value has been set. +func (o *FrameChallenge) GetLoadingTextOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.LoadingText, true +} + +// SetLoadingText sets field value +func (o *FrameChallenge) SetLoadingText(v string) { + o.LoadingText = v +} + +func (o FrameChallenge) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o FrameChallenge) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.FlowInfo) { + toSerialize["flow_info"] = o.FlowInfo + } + if !IsNil(o.Component) { + toSerialize["component"] = o.Component + } + if !IsNil(o.ResponseErrors) { + toSerialize["response_errors"] = o.ResponseErrors + } + toSerialize["url"] = o.Url + if !IsNil(o.LoadingOverlay) { + toSerialize["loading_overlay"] = o.LoadingOverlay + } + toSerialize["loading_text"] = o.LoadingText + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *FrameChallenge) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "url", + "loading_text", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varFrameChallenge := _FrameChallenge{} + + err = json.Unmarshal(data, &varFrameChallenge) + + if err != nil { + return err + } + + *o = FrameChallenge(varFrameChallenge) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "flow_info") + delete(additionalProperties, "component") + delete(additionalProperties, "response_errors") + delete(additionalProperties, "url") + delete(additionalProperties, "loading_overlay") + delete(additionalProperties, "loading_text") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableFrameChallenge struct { + value *FrameChallenge + isSet bool +} + +func (v NullableFrameChallenge) Get() *FrameChallenge { + return v.value +} + +func (v *NullableFrameChallenge) Set(val *FrameChallenge) { + v.value = val + v.isSet = true +} + +func (v NullableFrameChallenge) IsSet() bool { + return v.isSet +} + +func (v *NullableFrameChallenge) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableFrameChallenge(val *FrameChallenge) *NullableFrameChallenge { + return &NullableFrameChallenge{value: val, isSet: true} +} + +func (v NullableFrameChallenge) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableFrameChallenge) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_frame_challenge_response_request.go b/packages/client-go/model_frame_challenge_response_request.go new file mode 100644 index 0000000000..29848de10a --- /dev/null +++ b/packages/client-go/model_frame_challenge_response_request.go @@ -0,0 +1,158 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" +) + +// checks if the FrameChallengeResponseRequest type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &FrameChallengeResponseRequest{} + +// FrameChallengeResponseRequest Base class for all challenge responses +type FrameChallengeResponseRequest struct { + Component *string `json:"component,omitempty"` + AdditionalProperties map[string]interface{} +} + +type _FrameChallengeResponseRequest FrameChallengeResponseRequest + +// NewFrameChallengeResponseRequest instantiates a new FrameChallengeResponseRequest object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewFrameChallengeResponseRequest() *FrameChallengeResponseRequest { + this := FrameChallengeResponseRequest{} + var component string = "xak-flow-frame" + this.Component = &component + return &this +} + +// NewFrameChallengeResponseRequestWithDefaults instantiates a new FrameChallengeResponseRequest object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewFrameChallengeResponseRequestWithDefaults() *FrameChallengeResponseRequest { + this := FrameChallengeResponseRequest{} + var component string = "xak-flow-frame" + this.Component = &component + return &this +} + +// GetComponent returns the Component field value if set, zero value otherwise. +func (o *FrameChallengeResponseRequest) GetComponent() string { + if o == nil || IsNil(o.Component) { + var ret string + return ret + } + return *o.Component +} + +// GetComponentOk returns a tuple with the Component field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *FrameChallengeResponseRequest) GetComponentOk() (*string, bool) { + if o == nil || IsNil(o.Component) { + return nil, false + } + return o.Component, true +} + +// HasComponent returns a boolean if a field has been set. +func (o *FrameChallengeResponseRequest) HasComponent() bool { + if o != nil && !IsNil(o.Component) { + return true + } + + return false +} + +// SetComponent gets a reference to the given string and assigns it to the Component field. +func (o *FrameChallengeResponseRequest) SetComponent(v string) { + o.Component = &v +} + +func (o FrameChallengeResponseRequest) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o FrameChallengeResponseRequest) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.Component) { + toSerialize["component"] = o.Component + } + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *FrameChallengeResponseRequest) UnmarshalJSON(data []byte) (err error) { + varFrameChallengeResponseRequest := _FrameChallengeResponseRequest{} + + err = json.Unmarshal(data, &varFrameChallengeResponseRequest) + + if err != nil { + return err + } + + *o = FrameChallengeResponseRequest(varFrameChallengeResponseRequest) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "component") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableFrameChallengeResponseRequest struct { + value *FrameChallengeResponseRequest + isSet bool +} + +func (v NullableFrameChallengeResponseRequest) Get() *FrameChallengeResponseRequest { + return v.value +} + +func (v *NullableFrameChallengeResponseRequest) Set(val *FrameChallengeResponseRequest) { + v.value = val + v.isSet = true +} + +func (v NullableFrameChallengeResponseRequest) IsSet() bool { + return v.isSet +} + +func (v *NullableFrameChallengeResponseRequest) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableFrameChallengeResponseRequest(val *FrameChallengeResponseRequest) *NullableFrameChallengeResponseRequest { + return &NullableFrameChallengeResponseRequest{value: val, isSet: true} +} + +func (v NullableFrameChallengeResponseRequest) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableFrameChallengeResponseRequest) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_generic_error.go b/packages/client-go/model_generic_error.go new file mode 100644 index 0000000000..637e110dd7 --- /dev/null +++ b/packages/client-go/model_generic_error.go @@ -0,0 +1,204 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// checks if the GenericError type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &GenericError{} + +// GenericError Generic API Error +type GenericError struct { + Detail string `json:"detail"` + Code *string `json:"code,omitempty"` + AdditionalProperties map[string]interface{} +} + +type _GenericError GenericError + +// NewGenericError instantiates a new GenericError object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewGenericError(detail string) *GenericError { + this := GenericError{} + this.Detail = detail + return &this +} + +// NewGenericErrorWithDefaults instantiates a new GenericError object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewGenericErrorWithDefaults() *GenericError { + this := GenericError{} + return &this +} + +// GetDetail returns the Detail field value +func (o *GenericError) GetDetail() string { + if o == nil { + var ret string + return ret + } + + return o.Detail +} + +// GetDetailOk returns a tuple with the Detail field value +// and a boolean to check if the value has been set. +func (o *GenericError) GetDetailOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Detail, true +} + +// SetDetail sets field value +func (o *GenericError) SetDetail(v string) { + o.Detail = v +} + +// GetCode returns the Code field value if set, zero value otherwise. +func (o *GenericError) GetCode() string { + if o == nil || IsNil(o.Code) { + var ret string + return ret + } + return *o.Code +} + +// GetCodeOk returns a tuple with the Code field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *GenericError) GetCodeOk() (*string, bool) { + if o == nil || IsNil(o.Code) { + return nil, false + } + return o.Code, true +} + +// HasCode returns a boolean if a field has been set. +func (o *GenericError) HasCode() bool { + if o != nil && !IsNil(o.Code) { + return true + } + + return false +} + +// SetCode gets a reference to the given string and assigns it to the Code field. +func (o *GenericError) SetCode(v string) { + o.Code = &v +} + +func (o GenericError) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o GenericError) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + toSerialize["detail"] = o.Detail + if !IsNil(o.Code) { + toSerialize["code"] = o.Code + } + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *GenericError) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "detail", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varGenericError := _GenericError{} + + err = json.Unmarshal(data, &varGenericError) + + if err != nil { + return err + } + + *o = GenericError(varGenericError) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "detail") + delete(additionalProperties, "code") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableGenericError struct { + value *GenericError + isSet bool +} + +func (v NullableGenericError) Get() *GenericError { + return v.value +} + +func (v *NullableGenericError) Set(val *GenericError) { + v.value = val + v.isSet = true +} + +func (v NullableGenericError) IsSet() bool { + return v.isSet +} + +func (v *NullableGenericError) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableGenericError(val *GenericError) *NullableGenericError { + return &NullableGenericError{value: val, isSet: true} +} + +func (v NullableGenericError) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableGenericError) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_group.go b/packages/client-go/model_group.go new file mode 100644 index 0000000000..860c2dc082 --- /dev/null +++ b/packages/client-go/model_group.go @@ -0,0 +1,601 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// checks if the Group type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &Group{} + +// Group Group Serializer +type Group struct { + Pk string `json:"pk"` + NumPk int32 `json:"num_pk"` + Name string `json:"name"` + // Users added to this group will be superusers. + IsSuperuser *bool `json:"is_superuser,omitempty"` + Parents []string `json:"parents,omitempty"` + ParentsObj []RelatedGroup `json:"parents_obj"` + Users []int32 `json:"users,omitempty"` + UsersObj []PartialUser `json:"users_obj"` + Attributes map[string]interface{} `json:"attributes,omitempty"` + Roles []string `json:"roles,omitempty"` + RolesObj []Role `json:"roles_obj"` + InheritedRolesObj []Role `json:"inherited_roles_obj"` + Children []string `json:"children"` + ChildrenObj []RelatedGroup `json:"children_obj"` + AdditionalProperties map[string]interface{} +} + +type _Group Group + +// NewGroup instantiates a new Group object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewGroup(pk string, numPk int32, name string, parentsObj []RelatedGroup, usersObj []PartialUser, rolesObj []Role, inheritedRolesObj []Role, children []string, childrenObj []RelatedGroup) *Group { + this := Group{} + this.Pk = pk + this.NumPk = numPk + this.Name = name + this.ParentsObj = parentsObj + this.UsersObj = usersObj + this.RolesObj = rolesObj + this.InheritedRolesObj = inheritedRolesObj + this.Children = children + this.ChildrenObj = childrenObj + return &this +} + +// NewGroupWithDefaults instantiates a new Group object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewGroupWithDefaults() *Group { + this := Group{} + return &this +} + +// GetPk returns the Pk field value +func (o *Group) GetPk() string { + if o == nil { + var ret string + return ret + } + + return o.Pk +} + +// GetPkOk returns a tuple with the Pk field value +// and a boolean to check if the value has been set. +func (o *Group) GetPkOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Pk, true +} + +// SetPk sets field value +func (o *Group) SetPk(v string) { + o.Pk = v +} + +// GetNumPk returns the NumPk field value +func (o *Group) GetNumPk() int32 { + if o == nil { + var ret int32 + return ret + } + + return o.NumPk +} + +// GetNumPkOk returns a tuple with the NumPk field value +// and a boolean to check if the value has been set. +func (o *Group) GetNumPkOk() (*int32, bool) { + if o == nil { + return nil, false + } + return &o.NumPk, true +} + +// SetNumPk sets field value +func (o *Group) SetNumPk(v int32) { + o.NumPk = v +} + +// GetName returns the Name field value +func (o *Group) GetName() string { + if o == nil { + var ret string + return ret + } + + return o.Name +} + +// GetNameOk returns a tuple with the Name field value +// and a boolean to check if the value has been set. +func (o *Group) GetNameOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Name, true +} + +// SetName sets field value +func (o *Group) SetName(v string) { + o.Name = v +} + +// GetIsSuperuser returns the IsSuperuser field value if set, zero value otherwise. +func (o *Group) GetIsSuperuser() bool { + if o == nil || IsNil(o.IsSuperuser) { + var ret bool + return ret + } + return *o.IsSuperuser +} + +// GetIsSuperuserOk returns a tuple with the IsSuperuser field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *Group) GetIsSuperuserOk() (*bool, bool) { + if o == nil || IsNil(o.IsSuperuser) { + return nil, false + } + return o.IsSuperuser, true +} + +// HasIsSuperuser returns a boolean if a field has been set. +func (o *Group) HasIsSuperuser() bool { + if o != nil && !IsNil(o.IsSuperuser) { + return true + } + + return false +} + +// SetIsSuperuser gets a reference to the given bool and assigns it to the IsSuperuser field. +func (o *Group) SetIsSuperuser(v bool) { + o.IsSuperuser = &v +} + +// GetParents returns the Parents field value if set, zero value otherwise. +func (o *Group) GetParents() []string { + if o == nil || IsNil(o.Parents) { + var ret []string + return ret + } + return o.Parents +} + +// GetParentsOk returns a tuple with the Parents field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *Group) GetParentsOk() ([]string, bool) { + if o == nil || IsNil(o.Parents) { + return nil, false + } + return o.Parents, true +} + +// HasParents returns a boolean if a field has been set. +func (o *Group) HasParents() bool { + if o != nil && !IsNil(o.Parents) { + return true + } + + return false +} + +// SetParents gets a reference to the given []string and assigns it to the Parents field. +func (o *Group) SetParents(v []string) { + o.Parents = v +} + +// GetParentsObj returns the ParentsObj field value +// If the value is explicit nil, the zero value for []RelatedGroup will be returned +func (o *Group) GetParentsObj() []RelatedGroup { + if o == nil { + var ret []RelatedGroup + return ret + } + + return o.ParentsObj +} + +// GetParentsObjOk returns a tuple with the ParentsObj field value +// and a boolean to check if the value has been set. +// NOTE: If the value is an explicit nil, `nil, true` will be returned +func (o *Group) GetParentsObjOk() ([]RelatedGroup, bool) { + if o == nil || IsNil(o.ParentsObj) { + return nil, false + } + return o.ParentsObj, true +} + +// SetParentsObj sets field value +func (o *Group) SetParentsObj(v []RelatedGroup) { + o.ParentsObj = v +} + +// GetUsers returns the Users field value if set, zero value otherwise. +func (o *Group) GetUsers() []int32 { + if o == nil || IsNil(o.Users) { + var ret []int32 + return ret + } + return o.Users +} + +// GetUsersOk returns a tuple with the Users field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *Group) GetUsersOk() ([]int32, bool) { + if o == nil || IsNil(o.Users) { + return nil, false + } + return o.Users, true +} + +// HasUsers returns a boolean if a field has been set. +func (o *Group) HasUsers() bool { + if o != nil && !IsNil(o.Users) { + return true + } + + return false +} + +// SetUsers gets a reference to the given []int32 and assigns it to the Users field. +func (o *Group) SetUsers(v []int32) { + o.Users = v +} + +// GetUsersObj returns the UsersObj field value +// If the value is explicit nil, the zero value for []PartialUser will be returned +func (o *Group) GetUsersObj() []PartialUser { + if o == nil { + var ret []PartialUser + return ret + } + + return o.UsersObj +} + +// GetUsersObjOk returns a tuple with the UsersObj field value +// and a boolean to check if the value has been set. +// NOTE: If the value is an explicit nil, `nil, true` will be returned +func (o *Group) GetUsersObjOk() ([]PartialUser, bool) { + if o == nil || IsNil(o.UsersObj) { + return nil, false + } + return o.UsersObj, true +} + +// SetUsersObj sets field value +func (o *Group) SetUsersObj(v []PartialUser) { + o.UsersObj = v +} + +// GetAttributes returns the Attributes field value if set, zero value otherwise. +func (o *Group) GetAttributes() map[string]interface{} { + if o == nil || IsNil(o.Attributes) { + var ret map[string]interface{} + return ret + } + return o.Attributes +} + +// GetAttributesOk returns a tuple with the Attributes field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *Group) GetAttributesOk() (map[string]interface{}, bool) { + if o == nil || IsNil(o.Attributes) { + return map[string]interface{}{}, false + } + return o.Attributes, true +} + +// HasAttributes returns a boolean if a field has been set. +func (o *Group) HasAttributes() bool { + if o != nil && !IsNil(o.Attributes) { + return true + } + + return false +} + +// SetAttributes gets a reference to the given map[string]interface{} and assigns it to the Attributes field. +func (o *Group) SetAttributes(v map[string]interface{}) { + o.Attributes = v +} + +// GetRoles returns the Roles field value if set, zero value otherwise. +func (o *Group) GetRoles() []string { + if o == nil || IsNil(o.Roles) { + var ret []string + return ret + } + return o.Roles +} + +// GetRolesOk returns a tuple with the Roles field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *Group) GetRolesOk() ([]string, bool) { + if o == nil || IsNil(o.Roles) { + return nil, false + } + return o.Roles, true +} + +// HasRoles returns a boolean if a field has been set. +func (o *Group) HasRoles() bool { + if o != nil && !IsNil(o.Roles) { + return true + } + + return false +} + +// SetRoles gets a reference to the given []string and assigns it to the Roles field. +func (o *Group) SetRoles(v []string) { + o.Roles = v +} + +// GetRolesObj returns the RolesObj field value +func (o *Group) GetRolesObj() []Role { + if o == nil { + var ret []Role + return ret + } + + return o.RolesObj +} + +// GetRolesObjOk returns a tuple with the RolesObj field value +// and a boolean to check if the value has been set. +func (o *Group) GetRolesObjOk() ([]Role, bool) { + if o == nil { + return nil, false + } + return o.RolesObj, true +} + +// SetRolesObj sets field value +func (o *Group) SetRolesObj(v []Role) { + o.RolesObj = v +} + +// GetInheritedRolesObj returns the InheritedRolesObj field value +// If the value is explicit nil, the zero value for []Role will be returned +func (o *Group) GetInheritedRolesObj() []Role { + if o == nil { + var ret []Role + return ret + } + + return o.InheritedRolesObj +} + +// GetInheritedRolesObjOk returns a tuple with the InheritedRolesObj field value +// and a boolean to check if the value has been set. +// NOTE: If the value is an explicit nil, `nil, true` will be returned +func (o *Group) GetInheritedRolesObjOk() ([]Role, bool) { + if o == nil || IsNil(o.InheritedRolesObj) { + return nil, false + } + return o.InheritedRolesObj, true +} + +// SetInheritedRolesObj sets field value +func (o *Group) SetInheritedRolesObj(v []Role) { + o.InheritedRolesObj = v +} + +// GetChildren returns the Children field value +func (o *Group) GetChildren() []string { + if o == nil { + var ret []string + return ret + } + + return o.Children +} + +// GetChildrenOk returns a tuple with the Children field value +// and a boolean to check if the value has been set. +func (o *Group) GetChildrenOk() ([]string, bool) { + if o == nil { + return nil, false + } + return o.Children, true +} + +// SetChildren sets field value +func (o *Group) SetChildren(v []string) { + o.Children = v +} + +// GetChildrenObj returns the ChildrenObj field value +// If the value is explicit nil, the zero value for []RelatedGroup will be returned +func (o *Group) GetChildrenObj() []RelatedGroup { + if o == nil { + var ret []RelatedGroup + return ret + } + + return o.ChildrenObj +} + +// GetChildrenObjOk returns a tuple with the ChildrenObj field value +// and a boolean to check if the value has been set. +// NOTE: If the value is an explicit nil, `nil, true` will be returned +func (o *Group) GetChildrenObjOk() ([]RelatedGroup, bool) { + if o == nil || IsNil(o.ChildrenObj) { + return nil, false + } + return o.ChildrenObj, true +} + +// SetChildrenObj sets field value +func (o *Group) SetChildrenObj(v []RelatedGroup) { + o.ChildrenObj = v +} + +func (o Group) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o Group) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + toSerialize["pk"] = o.Pk + toSerialize["num_pk"] = o.NumPk + toSerialize["name"] = o.Name + if !IsNil(o.IsSuperuser) { + toSerialize["is_superuser"] = o.IsSuperuser + } + if !IsNil(o.Parents) { + toSerialize["parents"] = o.Parents + } + if o.ParentsObj != nil { + toSerialize["parents_obj"] = o.ParentsObj + } + if !IsNil(o.Users) { + toSerialize["users"] = o.Users + } + if o.UsersObj != nil { + toSerialize["users_obj"] = o.UsersObj + } + if !IsNil(o.Attributes) { + toSerialize["attributes"] = o.Attributes + } + if !IsNil(o.Roles) { + toSerialize["roles"] = o.Roles + } + toSerialize["roles_obj"] = o.RolesObj + if o.InheritedRolesObj != nil { + toSerialize["inherited_roles_obj"] = o.InheritedRolesObj + } + toSerialize["children"] = o.Children + if o.ChildrenObj != nil { + toSerialize["children_obj"] = o.ChildrenObj + } + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *Group) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "pk", + "num_pk", + "name", + "parents_obj", + "users_obj", + "roles_obj", + "inherited_roles_obj", + "children", + "children_obj", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varGroup := _Group{} + + err = json.Unmarshal(data, &varGroup) + + if err != nil { + return err + } + + *o = Group(varGroup) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "pk") + delete(additionalProperties, "num_pk") + delete(additionalProperties, "name") + delete(additionalProperties, "is_superuser") + delete(additionalProperties, "parents") + delete(additionalProperties, "parents_obj") + delete(additionalProperties, "users") + delete(additionalProperties, "users_obj") + delete(additionalProperties, "attributes") + delete(additionalProperties, "roles") + delete(additionalProperties, "roles_obj") + delete(additionalProperties, "inherited_roles_obj") + delete(additionalProperties, "children") + delete(additionalProperties, "children_obj") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableGroup struct { + value *Group + isSet bool +} + +func (v NullableGroup) Get() *Group { + return v.value +} + +func (v *NullableGroup) Set(val *Group) { + v.value = val + v.isSet = true +} + +func (v NullableGroup) IsSet() bool { + return v.isSet +} + +func (v *NullableGroup) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableGroup(val *Group) *NullableGroup { + return &NullableGroup{value: val, isSet: true} +} + +func (v NullableGroup) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableGroup) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_identification_challenge.go b/packages/client-go/model_identification_challenge.go new file mode 100644 index 0000000000..8986f9f5db --- /dev/null +++ b/packages/client-go/model_identification_challenge.go @@ -0,0 +1,840 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// checks if the IdentificationChallenge type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &IdentificationChallenge{} + +// IdentificationChallenge Identification challenges with all UI elements +type IdentificationChallenge struct { + FlowInfo *ContextualFlowInfo `json:"flow_info,omitempty"` + Component *string `json:"component,omitempty"` + ResponseErrors *map[string][]ErrorDetail `json:"response_errors,omitempty"` + UserFields []string `json:"user_fields"` + PendingUserIdentifier NullableString `json:"pending_user_identifier,omitempty"` + PasswordFields bool `json:"password_fields"` + AllowShowPassword *bool `json:"allow_show_password,omitempty"` + ApplicationPre *string `json:"application_pre,omitempty"` + ApplicationPreLaunch *string `json:"application_pre_launch,omitempty"` + FlowDesignation FlowDesignationEnum `json:"flow_designation"` + CaptchaStage NullableCaptchaChallenge `json:"captcha_stage,omitempty"` + EnrollUrl *string `json:"enroll_url,omitempty"` + RecoveryUrl *string `json:"recovery_url,omitempty"` + PasswordlessUrl *string `json:"passwordless_url,omitempty"` + PrimaryAction string `json:"primary_action"` + Sources []LoginSource `json:"sources,omitempty"` + ShowSourceLabels bool `json:"show_source_labels"` + EnableRememberMe *bool `json:"enable_remember_me,omitempty"` + PasskeyChallenge map[string]interface{} `json:"passkey_challenge,omitempty"` + AdditionalProperties map[string]interface{} +} + +type _IdentificationChallenge IdentificationChallenge + +// NewIdentificationChallenge instantiates a new IdentificationChallenge object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewIdentificationChallenge(userFields []string, passwordFields bool, flowDesignation FlowDesignationEnum, primaryAction string, showSourceLabels bool) *IdentificationChallenge { + this := IdentificationChallenge{} + var component string = "ak-stage-identification" + this.Component = &component + this.UserFields = userFields + this.PasswordFields = passwordFields + var allowShowPassword bool = false + this.AllowShowPassword = &allowShowPassword + this.FlowDesignation = flowDesignation + this.PrimaryAction = primaryAction + this.ShowSourceLabels = showSourceLabels + var enableRememberMe bool = true + this.EnableRememberMe = &enableRememberMe + return &this +} + +// NewIdentificationChallengeWithDefaults instantiates a new IdentificationChallenge object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewIdentificationChallengeWithDefaults() *IdentificationChallenge { + this := IdentificationChallenge{} + var component string = "ak-stage-identification" + this.Component = &component + var allowShowPassword bool = false + this.AllowShowPassword = &allowShowPassword + var enableRememberMe bool = true + this.EnableRememberMe = &enableRememberMe + return &this +} + +// GetFlowInfo returns the FlowInfo field value if set, zero value otherwise. +func (o *IdentificationChallenge) GetFlowInfo() ContextualFlowInfo { + if o == nil || IsNil(o.FlowInfo) { + var ret ContextualFlowInfo + return ret + } + return *o.FlowInfo +} + +// GetFlowInfoOk returns a tuple with the FlowInfo field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *IdentificationChallenge) GetFlowInfoOk() (*ContextualFlowInfo, bool) { + if o == nil || IsNil(o.FlowInfo) { + return nil, false + } + return o.FlowInfo, true +} + +// HasFlowInfo returns a boolean if a field has been set. +func (o *IdentificationChallenge) HasFlowInfo() bool { + if o != nil && !IsNil(o.FlowInfo) { + return true + } + + return false +} + +// SetFlowInfo gets a reference to the given ContextualFlowInfo and assigns it to the FlowInfo field. +func (o *IdentificationChallenge) SetFlowInfo(v ContextualFlowInfo) { + o.FlowInfo = &v +} + +// GetComponent returns the Component field value if set, zero value otherwise. +func (o *IdentificationChallenge) GetComponent() string { + if o == nil || IsNil(o.Component) { + var ret string + return ret + } + return *o.Component +} + +// GetComponentOk returns a tuple with the Component field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *IdentificationChallenge) GetComponentOk() (*string, bool) { + if o == nil || IsNil(o.Component) { + return nil, false + } + return o.Component, true +} + +// HasComponent returns a boolean if a field has been set. +func (o *IdentificationChallenge) HasComponent() bool { + if o != nil && !IsNil(o.Component) { + return true + } + + return false +} + +// SetComponent gets a reference to the given string and assigns it to the Component field. +func (o *IdentificationChallenge) SetComponent(v string) { + o.Component = &v +} + +// GetResponseErrors returns the ResponseErrors field value if set, zero value otherwise. +func (o *IdentificationChallenge) GetResponseErrors() map[string][]ErrorDetail { + if o == nil || IsNil(o.ResponseErrors) { + var ret map[string][]ErrorDetail + return ret + } + return *o.ResponseErrors +} + +// GetResponseErrorsOk returns a tuple with the ResponseErrors field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *IdentificationChallenge) GetResponseErrorsOk() (*map[string][]ErrorDetail, bool) { + if o == nil || IsNil(o.ResponseErrors) { + return nil, false + } + return o.ResponseErrors, true +} + +// HasResponseErrors returns a boolean if a field has been set. +func (o *IdentificationChallenge) HasResponseErrors() bool { + if o != nil && !IsNil(o.ResponseErrors) { + return true + } + + return false +} + +// SetResponseErrors gets a reference to the given map[string][]ErrorDetail and assigns it to the ResponseErrors field. +func (o *IdentificationChallenge) SetResponseErrors(v map[string][]ErrorDetail) { + o.ResponseErrors = &v +} + +// GetUserFields returns the UserFields field value +// If the value is explicit nil, the zero value for []string will be returned +func (o *IdentificationChallenge) GetUserFields() []string { + if o == nil { + var ret []string + return ret + } + + return o.UserFields +} + +// GetUserFieldsOk returns a tuple with the UserFields field value +// and a boolean to check if the value has been set. +// NOTE: If the value is an explicit nil, `nil, true` will be returned +func (o *IdentificationChallenge) GetUserFieldsOk() ([]string, bool) { + if o == nil || IsNil(o.UserFields) { + return nil, false + } + return o.UserFields, true +} + +// SetUserFields sets field value +func (o *IdentificationChallenge) SetUserFields(v []string) { + o.UserFields = v +} + +// GetPendingUserIdentifier returns the PendingUserIdentifier field value if set, zero value otherwise (both if not set or set to explicit null). +func (o *IdentificationChallenge) GetPendingUserIdentifier() string { + if o == nil || IsNil(o.PendingUserIdentifier.Get()) { + var ret string + return ret + } + return *o.PendingUserIdentifier.Get() +} + +// GetPendingUserIdentifierOk returns a tuple with the PendingUserIdentifier field value if set, nil otherwise +// and a boolean to check if the value has been set. +// NOTE: If the value is an explicit nil, `nil, true` will be returned +func (o *IdentificationChallenge) GetPendingUserIdentifierOk() (*string, bool) { + if o == nil { + return nil, false + } + return o.PendingUserIdentifier.Get(), o.PendingUserIdentifier.IsSet() +} + +// HasPendingUserIdentifier returns a boolean if a field has been set. +func (o *IdentificationChallenge) HasPendingUserIdentifier() bool { + if o != nil && o.PendingUserIdentifier.IsSet() { + return true + } + + return false +} + +// SetPendingUserIdentifier gets a reference to the given NullableString and assigns it to the PendingUserIdentifier field. +func (o *IdentificationChallenge) SetPendingUserIdentifier(v string) { + o.PendingUserIdentifier.Set(&v) +} + +// SetPendingUserIdentifierNil sets the value for PendingUserIdentifier to be an explicit nil +func (o *IdentificationChallenge) SetPendingUserIdentifierNil() { + o.PendingUserIdentifier.Set(nil) +} + +// UnsetPendingUserIdentifier ensures that no value is present for PendingUserIdentifier, not even an explicit nil +func (o *IdentificationChallenge) UnsetPendingUserIdentifier() { + o.PendingUserIdentifier.Unset() +} + +// GetPasswordFields returns the PasswordFields field value +func (o *IdentificationChallenge) GetPasswordFields() bool { + if o == nil { + var ret bool + return ret + } + + return o.PasswordFields +} + +// GetPasswordFieldsOk returns a tuple with the PasswordFields field value +// and a boolean to check if the value has been set. +func (o *IdentificationChallenge) GetPasswordFieldsOk() (*bool, bool) { + if o == nil { + return nil, false + } + return &o.PasswordFields, true +} + +// SetPasswordFields sets field value +func (o *IdentificationChallenge) SetPasswordFields(v bool) { + o.PasswordFields = v +} + +// GetAllowShowPassword returns the AllowShowPassword field value if set, zero value otherwise. +func (o *IdentificationChallenge) GetAllowShowPassword() bool { + if o == nil || IsNil(o.AllowShowPassword) { + var ret bool + return ret + } + return *o.AllowShowPassword +} + +// GetAllowShowPasswordOk returns a tuple with the AllowShowPassword field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *IdentificationChallenge) GetAllowShowPasswordOk() (*bool, bool) { + if o == nil || IsNil(o.AllowShowPassword) { + return nil, false + } + return o.AllowShowPassword, true +} + +// HasAllowShowPassword returns a boolean if a field has been set. +func (o *IdentificationChallenge) HasAllowShowPassword() bool { + if o != nil && !IsNil(o.AllowShowPassword) { + return true + } + + return false +} + +// SetAllowShowPassword gets a reference to the given bool and assigns it to the AllowShowPassword field. +func (o *IdentificationChallenge) SetAllowShowPassword(v bool) { + o.AllowShowPassword = &v +} + +// GetApplicationPre returns the ApplicationPre field value if set, zero value otherwise. +func (o *IdentificationChallenge) GetApplicationPre() string { + if o == nil || IsNil(o.ApplicationPre) { + var ret string + return ret + } + return *o.ApplicationPre +} + +// GetApplicationPreOk returns a tuple with the ApplicationPre field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *IdentificationChallenge) GetApplicationPreOk() (*string, bool) { + if o == nil || IsNil(o.ApplicationPre) { + return nil, false + } + return o.ApplicationPre, true +} + +// HasApplicationPre returns a boolean if a field has been set. +func (o *IdentificationChallenge) HasApplicationPre() bool { + if o != nil && !IsNil(o.ApplicationPre) { + return true + } + + return false +} + +// SetApplicationPre gets a reference to the given string and assigns it to the ApplicationPre field. +func (o *IdentificationChallenge) SetApplicationPre(v string) { + o.ApplicationPre = &v +} + +// GetApplicationPreLaunch returns the ApplicationPreLaunch field value if set, zero value otherwise. +func (o *IdentificationChallenge) GetApplicationPreLaunch() string { + if o == nil || IsNil(o.ApplicationPreLaunch) { + var ret string + return ret + } + return *o.ApplicationPreLaunch +} + +// GetApplicationPreLaunchOk returns a tuple with the ApplicationPreLaunch field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *IdentificationChallenge) GetApplicationPreLaunchOk() (*string, bool) { + if o == nil || IsNil(o.ApplicationPreLaunch) { + return nil, false + } + return o.ApplicationPreLaunch, true +} + +// HasApplicationPreLaunch returns a boolean if a field has been set. +func (o *IdentificationChallenge) HasApplicationPreLaunch() bool { + if o != nil && !IsNil(o.ApplicationPreLaunch) { + return true + } + + return false +} + +// SetApplicationPreLaunch gets a reference to the given string and assigns it to the ApplicationPreLaunch field. +func (o *IdentificationChallenge) SetApplicationPreLaunch(v string) { + o.ApplicationPreLaunch = &v +} + +// GetFlowDesignation returns the FlowDesignation field value +func (o *IdentificationChallenge) GetFlowDesignation() FlowDesignationEnum { + if o == nil { + var ret FlowDesignationEnum + return ret + } + + return o.FlowDesignation +} + +// GetFlowDesignationOk returns a tuple with the FlowDesignation field value +// and a boolean to check if the value has been set. +func (o *IdentificationChallenge) GetFlowDesignationOk() (*FlowDesignationEnum, bool) { + if o == nil { + return nil, false + } + return &o.FlowDesignation, true +} + +// SetFlowDesignation sets field value +func (o *IdentificationChallenge) SetFlowDesignation(v FlowDesignationEnum) { + o.FlowDesignation = v +} + +// GetCaptchaStage returns the CaptchaStage field value if set, zero value otherwise (both if not set or set to explicit null). +func (o *IdentificationChallenge) GetCaptchaStage() CaptchaChallenge { + if o == nil || IsNil(o.CaptchaStage.Get()) { + var ret CaptchaChallenge + return ret + } + return *o.CaptchaStage.Get() +} + +// GetCaptchaStageOk returns a tuple with the CaptchaStage field value if set, nil otherwise +// and a boolean to check if the value has been set. +// NOTE: If the value is an explicit nil, `nil, true` will be returned +func (o *IdentificationChallenge) GetCaptchaStageOk() (*CaptchaChallenge, bool) { + if o == nil { + return nil, false + } + return o.CaptchaStage.Get(), o.CaptchaStage.IsSet() +} + +// HasCaptchaStage returns a boolean if a field has been set. +func (o *IdentificationChallenge) HasCaptchaStage() bool { + if o != nil && o.CaptchaStage.IsSet() { + return true + } + + return false +} + +// SetCaptchaStage gets a reference to the given NullableCaptchaChallenge and assigns it to the CaptchaStage field. +func (o *IdentificationChallenge) SetCaptchaStage(v CaptchaChallenge) { + o.CaptchaStage.Set(&v) +} + +// SetCaptchaStageNil sets the value for CaptchaStage to be an explicit nil +func (o *IdentificationChallenge) SetCaptchaStageNil() { + o.CaptchaStage.Set(nil) +} + +// UnsetCaptchaStage ensures that no value is present for CaptchaStage, not even an explicit nil +func (o *IdentificationChallenge) UnsetCaptchaStage() { + o.CaptchaStage.Unset() +} + +// GetEnrollUrl returns the EnrollUrl field value if set, zero value otherwise. +func (o *IdentificationChallenge) GetEnrollUrl() string { + if o == nil || IsNil(o.EnrollUrl) { + var ret string + return ret + } + return *o.EnrollUrl +} + +// GetEnrollUrlOk returns a tuple with the EnrollUrl field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *IdentificationChallenge) GetEnrollUrlOk() (*string, bool) { + if o == nil || IsNil(o.EnrollUrl) { + return nil, false + } + return o.EnrollUrl, true +} + +// HasEnrollUrl returns a boolean if a field has been set. +func (o *IdentificationChallenge) HasEnrollUrl() bool { + if o != nil && !IsNil(o.EnrollUrl) { + return true + } + + return false +} + +// SetEnrollUrl gets a reference to the given string and assigns it to the EnrollUrl field. +func (o *IdentificationChallenge) SetEnrollUrl(v string) { + o.EnrollUrl = &v +} + +// GetRecoveryUrl returns the RecoveryUrl field value if set, zero value otherwise. +func (o *IdentificationChallenge) GetRecoveryUrl() string { + if o == nil || IsNil(o.RecoveryUrl) { + var ret string + return ret + } + return *o.RecoveryUrl +} + +// GetRecoveryUrlOk returns a tuple with the RecoveryUrl field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *IdentificationChallenge) GetRecoveryUrlOk() (*string, bool) { + if o == nil || IsNil(o.RecoveryUrl) { + return nil, false + } + return o.RecoveryUrl, true +} + +// HasRecoveryUrl returns a boolean if a field has been set. +func (o *IdentificationChallenge) HasRecoveryUrl() bool { + if o != nil && !IsNil(o.RecoveryUrl) { + return true + } + + return false +} + +// SetRecoveryUrl gets a reference to the given string and assigns it to the RecoveryUrl field. +func (o *IdentificationChallenge) SetRecoveryUrl(v string) { + o.RecoveryUrl = &v +} + +// GetPasswordlessUrl returns the PasswordlessUrl field value if set, zero value otherwise. +func (o *IdentificationChallenge) GetPasswordlessUrl() string { + if o == nil || IsNil(o.PasswordlessUrl) { + var ret string + return ret + } + return *o.PasswordlessUrl +} + +// GetPasswordlessUrlOk returns a tuple with the PasswordlessUrl field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *IdentificationChallenge) GetPasswordlessUrlOk() (*string, bool) { + if o == nil || IsNil(o.PasswordlessUrl) { + return nil, false + } + return o.PasswordlessUrl, true +} + +// HasPasswordlessUrl returns a boolean if a field has been set. +func (o *IdentificationChallenge) HasPasswordlessUrl() bool { + if o != nil && !IsNil(o.PasswordlessUrl) { + return true + } + + return false +} + +// SetPasswordlessUrl gets a reference to the given string and assigns it to the PasswordlessUrl field. +func (o *IdentificationChallenge) SetPasswordlessUrl(v string) { + o.PasswordlessUrl = &v +} + +// GetPrimaryAction returns the PrimaryAction field value +func (o *IdentificationChallenge) GetPrimaryAction() string { + if o == nil { + var ret string + return ret + } + + return o.PrimaryAction +} + +// GetPrimaryActionOk returns a tuple with the PrimaryAction field value +// and a boolean to check if the value has been set. +func (o *IdentificationChallenge) GetPrimaryActionOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.PrimaryAction, true +} + +// SetPrimaryAction sets field value +func (o *IdentificationChallenge) SetPrimaryAction(v string) { + o.PrimaryAction = v +} + +// GetSources returns the Sources field value if set, zero value otherwise. +func (o *IdentificationChallenge) GetSources() []LoginSource { + if o == nil || IsNil(o.Sources) { + var ret []LoginSource + return ret + } + return o.Sources +} + +// GetSourcesOk returns a tuple with the Sources field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *IdentificationChallenge) GetSourcesOk() ([]LoginSource, bool) { + if o == nil || IsNil(o.Sources) { + return nil, false + } + return o.Sources, true +} + +// HasSources returns a boolean if a field has been set. +func (o *IdentificationChallenge) HasSources() bool { + if o != nil && !IsNil(o.Sources) { + return true + } + + return false +} + +// SetSources gets a reference to the given []LoginSource and assigns it to the Sources field. +func (o *IdentificationChallenge) SetSources(v []LoginSource) { + o.Sources = v +} + +// GetShowSourceLabels returns the ShowSourceLabels field value +func (o *IdentificationChallenge) GetShowSourceLabels() bool { + if o == nil { + var ret bool + return ret + } + + return o.ShowSourceLabels +} + +// GetShowSourceLabelsOk returns a tuple with the ShowSourceLabels field value +// and a boolean to check if the value has been set. +func (o *IdentificationChallenge) GetShowSourceLabelsOk() (*bool, bool) { + if o == nil { + return nil, false + } + return &o.ShowSourceLabels, true +} + +// SetShowSourceLabels sets field value +func (o *IdentificationChallenge) SetShowSourceLabels(v bool) { + o.ShowSourceLabels = v +} + +// GetEnableRememberMe returns the EnableRememberMe field value if set, zero value otherwise. +func (o *IdentificationChallenge) GetEnableRememberMe() bool { + if o == nil || IsNil(o.EnableRememberMe) { + var ret bool + return ret + } + return *o.EnableRememberMe +} + +// GetEnableRememberMeOk returns a tuple with the EnableRememberMe field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *IdentificationChallenge) GetEnableRememberMeOk() (*bool, bool) { + if o == nil || IsNil(o.EnableRememberMe) { + return nil, false + } + return o.EnableRememberMe, true +} + +// HasEnableRememberMe returns a boolean if a field has been set. +func (o *IdentificationChallenge) HasEnableRememberMe() bool { + if o != nil && !IsNil(o.EnableRememberMe) { + return true + } + + return false +} + +// SetEnableRememberMe gets a reference to the given bool and assigns it to the EnableRememberMe field. +func (o *IdentificationChallenge) SetEnableRememberMe(v bool) { + o.EnableRememberMe = &v +} + +// GetPasskeyChallenge returns the PasskeyChallenge field value if set, zero value otherwise (both if not set or set to explicit null). +func (o *IdentificationChallenge) GetPasskeyChallenge() map[string]interface{} { + if o == nil { + var ret map[string]interface{} + return ret + } + return o.PasskeyChallenge +} + +// GetPasskeyChallengeOk returns a tuple with the PasskeyChallenge field value if set, nil otherwise +// and a boolean to check if the value has been set. +// NOTE: If the value is an explicit nil, `nil, true` will be returned +func (o *IdentificationChallenge) GetPasskeyChallengeOk() (map[string]interface{}, bool) { + if o == nil || IsNil(o.PasskeyChallenge) { + return map[string]interface{}{}, false + } + return o.PasskeyChallenge, true +} + +// HasPasskeyChallenge returns a boolean if a field has been set. +func (o *IdentificationChallenge) HasPasskeyChallenge() bool { + if o != nil && !IsNil(o.PasskeyChallenge) { + return true + } + + return false +} + +// SetPasskeyChallenge gets a reference to the given map[string]interface{} and assigns it to the PasskeyChallenge field. +func (o *IdentificationChallenge) SetPasskeyChallenge(v map[string]interface{}) { + o.PasskeyChallenge = v +} + +func (o IdentificationChallenge) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o IdentificationChallenge) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.FlowInfo) { + toSerialize["flow_info"] = o.FlowInfo + } + if !IsNil(o.Component) { + toSerialize["component"] = o.Component + } + if !IsNil(o.ResponseErrors) { + toSerialize["response_errors"] = o.ResponseErrors + } + if o.UserFields != nil { + toSerialize["user_fields"] = o.UserFields + } + if o.PendingUserIdentifier.IsSet() { + toSerialize["pending_user_identifier"] = o.PendingUserIdentifier.Get() + } + toSerialize["password_fields"] = o.PasswordFields + if !IsNil(o.AllowShowPassword) { + toSerialize["allow_show_password"] = o.AllowShowPassword + } + if !IsNil(o.ApplicationPre) { + toSerialize["application_pre"] = o.ApplicationPre + } + if !IsNil(o.ApplicationPreLaunch) { + toSerialize["application_pre_launch"] = o.ApplicationPreLaunch + } + toSerialize["flow_designation"] = o.FlowDesignation + if o.CaptchaStage.IsSet() { + toSerialize["captcha_stage"] = o.CaptchaStage.Get() + } + if !IsNil(o.EnrollUrl) { + toSerialize["enroll_url"] = o.EnrollUrl + } + if !IsNil(o.RecoveryUrl) { + toSerialize["recovery_url"] = o.RecoveryUrl + } + if !IsNil(o.PasswordlessUrl) { + toSerialize["passwordless_url"] = o.PasswordlessUrl + } + toSerialize["primary_action"] = o.PrimaryAction + if !IsNil(o.Sources) { + toSerialize["sources"] = o.Sources + } + toSerialize["show_source_labels"] = o.ShowSourceLabels + if !IsNil(o.EnableRememberMe) { + toSerialize["enable_remember_me"] = o.EnableRememberMe + } + if o.PasskeyChallenge != nil { + toSerialize["passkey_challenge"] = o.PasskeyChallenge + } + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *IdentificationChallenge) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "user_fields", + "password_fields", + "flow_designation", + "primary_action", + "show_source_labels", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varIdentificationChallenge := _IdentificationChallenge{} + + err = json.Unmarshal(data, &varIdentificationChallenge) + + if err != nil { + return err + } + + *o = IdentificationChallenge(varIdentificationChallenge) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "flow_info") + delete(additionalProperties, "component") + delete(additionalProperties, "response_errors") + delete(additionalProperties, "user_fields") + delete(additionalProperties, "pending_user_identifier") + delete(additionalProperties, "password_fields") + delete(additionalProperties, "allow_show_password") + delete(additionalProperties, "application_pre") + delete(additionalProperties, "application_pre_launch") + delete(additionalProperties, "flow_designation") + delete(additionalProperties, "captcha_stage") + delete(additionalProperties, "enroll_url") + delete(additionalProperties, "recovery_url") + delete(additionalProperties, "passwordless_url") + delete(additionalProperties, "primary_action") + delete(additionalProperties, "sources") + delete(additionalProperties, "show_source_labels") + delete(additionalProperties, "enable_remember_me") + delete(additionalProperties, "passkey_challenge") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableIdentificationChallenge struct { + value *IdentificationChallenge + isSet bool +} + +func (v NullableIdentificationChallenge) Get() *IdentificationChallenge { + return v.value +} + +func (v *NullableIdentificationChallenge) Set(val *IdentificationChallenge) { + v.value = val + v.isSet = true +} + +func (v NullableIdentificationChallenge) IsSet() bool { + return v.isSet +} + +func (v *NullableIdentificationChallenge) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableIdentificationChallenge(val *IdentificationChallenge) *NullableIdentificationChallenge { + return &NullableIdentificationChallenge{value: val, isSet: true} +} + +func (v NullableIdentificationChallenge) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableIdentificationChallenge) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_identification_challenge_response_request.go b/packages/client-go/model_identification_challenge_response_request.go new file mode 100644 index 0000000000..b8b0a64885 --- /dev/null +++ b/packages/client-go/model_identification_challenge_response_request.go @@ -0,0 +1,340 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" +) + +// checks if the IdentificationChallengeResponseRequest type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &IdentificationChallengeResponseRequest{} + +// IdentificationChallengeResponseRequest Identification challenge +type IdentificationChallengeResponseRequest struct { + Component *string `json:"component,omitempty"` + UidField NullableString `json:"uid_field,omitempty"` + Password NullableString `json:"password,omitempty"` + CaptchaToken NullableString `json:"captcha_token,omitempty"` + Passkey map[string]interface{} `json:"passkey,omitempty"` + AdditionalProperties map[string]interface{} +} + +type _IdentificationChallengeResponseRequest IdentificationChallengeResponseRequest + +// NewIdentificationChallengeResponseRequest instantiates a new IdentificationChallengeResponseRequest object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewIdentificationChallengeResponseRequest() *IdentificationChallengeResponseRequest { + this := IdentificationChallengeResponseRequest{} + var component string = "ak-stage-identification" + this.Component = &component + return &this +} + +// NewIdentificationChallengeResponseRequestWithDefaults instantiates a new IdentificationChallengeResponseRequest object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewIdentificationChallengeResponseRequestWithDefaults() *IdentificationChallengeResponseRequest { + this := IdentificationChallengeResponseRequest{} + var component string = "ak-stage-identification" + this.Component = &component + return &this +} + +// GetComponent returns the Component field value if set, zero value otherwise. +func (o *IdentificationChallengeResponseRequest) GetComponent() string { + if o == nil || IsNil(o.Component) { + var ret string + return ret + } + return *o.Component +} + +// GetComponentOk returns a tuple with the Component field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *IdentificationChallengeResponseRequest) GetComponentOk() (*string, bool) { + if o == nil || IsNil(o.Component) { + return nil, false + } + return o.Component, true +} + +// HasComponent returns a boolean if a field has been set. +func (o *IdentificationChallengeResponseRequest) HasComponent() bool { + if o != nil && !IsNil(o.Component) { + return true + } + + return false +} + +// SetComponent gets a reference to the given string and assigns it to the Component field. +func (o *IdentificationChallengeResponseRequest) SetComponent(v string) { + o.Component = &v +} + +// GetUidField returns the UidField field value if set, zero value otherwise (both if not set or set to explicit null). +func (o *IdentificationChallengeResponseRequest) GetUidField() string { + if o == nil || IsNil(o.UidField.Get()) { + var ret string + return ret + } + return *o.UidField.Get() +} + +// GetUidFieldOk returns a tuple with the UidField field value if set, nil otherwise +// and a boolean to check if the value has been set. +// NOTE: If the value is an explicit nil, `nil, true` will be returned +func (o *IdentificationChallengeResponseRequest) GetUidFieldOk() (*string, bool) { + if o == nil { + return nil, false + } + return o.UidField.Get(), o.UidField.IsSet() +} + +// HasUidField returns a boolean if a field has been set. +func (o *IdentificationChallengeResponseRequest) HasUidField() bool { + if o != nil && o.UidField.IsSet() { + return true + } + + return false +} + +// SetUidField gets a reference to the given NullableString and assigns it to the UidField field. +func (o *IdentificationChallengeResponseRequest) SetUidField(v string) { + o.UidField.Set(&v) +} + +// SetUidFieldNil sets the value for UidField to be an explicit nil +func (o *IdentificationChallengeResponseRequest) SetUidFieldNil() { + o.UidField.Set(nil) +} + +// UnsetUidField ensures that no value is present for UidField, not even an explicit nil +func (o *IdentificationChallengeResponseRequest) UnsetUidField() { + o.UidField.Unset() +} + +// GetPassword returns the Password field value if set, zero value otherwise (both if not set or set to explicit null). +func (o *IdentificationChallengeResponseRequest) GetPassword() string { + if o == nil || IsNil(o.Password.Get()) { + var ret string + return ret + } + return *o.Password.Get() +} + +// GetPasswordOk returns a tuple with the Password field value if set, nil otherwise +// and a boolean to check if the value has been set. +// NOTE: If the value is an explicit nil, `nil, true` will be returned +func (o *IdentificationChallengeResponseRequest) GetPasswordOk() (*string, bool) { + if o == nil { + return nil, false + } + return o.Password.Get(), o.Password.IsSet() +} + +// HasPassword returns a boolean if a field has been set. +func (o *IdentificationChallengeResponseRequest) HasPassword() bool { + if o != nil && o.Password.IsSet() { + return true + } + + return false +} + +// SetPassword gets a reference to the given NullableString and assigns it to the Password field. +func (o *IdentificationChallengeResponseRequest) SetPassword(v string) { + o.Password.Set(&v) +} + +// SetPasswordNil sets the value for Password to be an explicit nil +func (o *IdentificationChallengeResponseRequest) SetPasswordNil() { + o.Password.Set(nil) +} + +// UnsetPassword ensures that no value is present for Password, not even an explicit nil +func (o *IdentificationChallengeResponseRequest) UnsetPassword() { + o.Password.Unset() +} + +// GetCaptchaToken returns the CaptchaToken field value if set, zero value otherwise (both if not set or set to explicit null). +func (o *IdentificationChallengeResponseRequest) GetCaptchaToken() string { + if o == nil || IsNil(o.CaptchaToken.Get()) { + var ret string + return ret + } + return *o.CaptchaToken.Get() +} + +// GetCaptchaTokenOk returns a tuple with the CaptchaToken field value if set, nil otherwise +// and a boolean to check if the value has been set. +// NOTE: If the value is an explicit nil, `nil, true` will be returned +func (o *IdentificationChallengeResponseRequest) GetCaptchaTokenOk() (*string, bool) { + if o == nil { + return nil, false + } + return o.CaptchaToken.Get(), o.CaptchaToken.IsSet() +} + +// HasCaptchaToken returns a boolean if a field has been set. +func (o *IdentificationChallengeResponseRequest) HasCaptchaToken() bool { + if o != nil && o.CaptchaToken.IsSet() { + return true + } + + return false +} + +// SetCaptchaToken gets a reference to the given NullableString and assigns it to the CaptchaToken field. +func (o *IdentificationChallengeResponseRequest) SetCaptchaToken(v string) { + o.CaptchaToken.Set(&v) +} + +// SetCaptchaTokenNil sets the value for CaptchaToken to be an explicit nil +func (o *IdentificationChallengeResponseRequest) SetCaptchaTokenNil() { + o.CaptchaToken.Set(nil) +} + +// UnsetCaptchaToken ensures that no value is present for CaptchaToken, not even an explicit nil +func (o *IdentificationChallengeResponseRequest) UnsetCaptchaToken() { + o.CaptchaToken.Unset() +} + +// GetPasskey returns the Passkey field value if set, zero value otherwise (both if not set or set to explicit null). +func (o *IdentificationChallengeResponseRequest) GetPasskey() map[string]interface{} { + if o == nil { + var ret map[string]interface{} + return ret + } + return o.Passkey +} + +// GetPasskeyOk returns a tuple with the Passkey field value if set, nil otherwise +// and a boolean to check if the value has been set. +// NOTE: If the value is an explicit nil, `nil, true` will be returned +func (o *IdentificationChallengeResponseRequest) GetPasskeyOk() (map[string]interface{}, bool) { + if o == nil || IsNil(o.Passkey) { + return map[string]interface{}{}, false + } + return o.Passkey, true +} + +// HasPasskey returns a boolean if a field has been set. +func (o *IdentificationChallengeResponseRequest) HasPasskey() bool { + if o != nil && !IsNil(o.Passkey) { + return true + } + + return false +} + +// SetPasskey gets a reference to the given map[string]interface{} and assigns it to the Passkey field. +func (o *IdentificationChallengeResponseRequest) SetPasskey(v map[string]interface{}) { + o.Passkey = v +} + +func (o IdentificationChallengeResponseRequest) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o IdentificationChallengeResponseRequest) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.Component) { + toSerialize["component"] = o.Component + } + if o.UidField.IsSet() { + toSerialize["uid_field"] = o.UidField.Get() + } + if o.Password.IsSet() { + toSerialize["password"] = o.Password.Get() + } + if o.CaptchaToken.IsSet() { + toSerialize["captcha_token"] = o.CaptchaToken.Get() + } + if o.Passkey != nil { + toSerialize["passkey"] = o.Passkey + } + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *IdentificationChallengeResponseRequest) UnmarshalJSON(data []byte) (err error) { + varIdentificationChallengeResponseRequest := _IdentificationChallengeResponseRequest{} + + err = json.Unmarshal(data, &varIdentificationChallengeResponseRequest) + + if err != nil { + return err + } + + *o = IdentificationChallengeResponseRequest(varIdentificationChallengeResponseRequest) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "component") + delete(additionalProperties, "uid_field") + delete(additionalProperties, "password") + delete(additionalProperties, "captcha_token") + delete(additionalProperties, "passkey") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableIdentificationChallengeResponseRequest struct { + value *IdentificationChallengeResponseRequest + isSet bool +} + +func (v NullableIdentificationChallengeResponseRequest) Get() *IdentificationChallengeResponseRequest { + return v.value +} + +func (v *NullableIdentificationChallengeResponseRequest) Set(val *IdentificationChallengeResponseRequest) { + v.value = val + v.isSet = true +} + +func (v NullableIdentificationChallengeResponseRequest) IsSet() bool { + return v.isSet +} + +func (v *NullableIdentificationChallengeResponseRequest) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableIdentificationChallengeResponseRequest(val *IdentificationChallengeResponseRequest) *NullableIdentificationChallengeResponseRequest { + return &NullableIdentificationChallengeResponseRequest{value: val, isSet: true} +} + +func (v NullableIdentificationChallengeResponseRequest) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableIdentificationChallengeResponseRequest) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_iframe_logout_challenge.go b/packages/client-go/model_iframe_logout_challenge.go new file mode 100644 index 0000000000..c72ae3f7c1 --- /dev/null +++ b/packages/client-go/model_iframe_logout_challenge.go @@ -0,0 +1,269 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" +) + +// checks if the IframeLogoutChallenge type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &IframeLogoutChallenge{} + +// IframeLogoutChallenge Challenge for iframe logout +type IframeLogoutChallenge struct { + FlowInfo *ContextualFlowInfo `json:"flow_info,omitempty"` + Component *string `json:"component,omitempty"` + ResponseErrors *map[string][]ErrorDetail `json:"response_errors,omitempty"` + LogoutUrls []LogoutURL `json:"logout_urls,omitempty"` + AdditionalProperties map[string]interface{} +} + +type _IframeLogoutChallenge IframeLogoutChallenge + +// NewIframeLogoutChallenge instantiates a new IframeLogoutChallenge object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewIframeLogoutChallenge() *IframeLogoutChallenge { + this := IframeLogoutChallenge{} + var component string = "ak-provider-iframe-logout" + this.Component = &component + return &this +} + +// NewIframeLogoutChallengeWithDefaults instantiates a new IframeLogoutChallenge object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewIframeLogoutChallengeWithDefaults() *IframeLogoutChallenge { + this := IframeLogoutChallenge{} + var component string = "ak-provider-iframe-logout" + this.Component = &component + return &this +} + +// GetFlowInfo returns the FlowInfo field value if set, zero value otherwise. +func (o *IframeLogoutChallenge) GetFlowInfo() ContextualFlowInfo { + if o == nil || IsNil(o.FlowInfo) { + var ret ContextualFlowInfo + return ret + } + return *o.FlowInfo +} + +// GetFlowInfoOk returns a tuple with the FlowInfo field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *IframeLogoutChallenge) GetFlowInfoOk() (*ContextualFlowInfo, bool) { + if o == nil || IsNil(o.FlowInfo) { + return nil, false + } + return o.FlowInfo, true +} + +// HasFlowInfo returns a boolean if a field has been set. +func (o *IframeLogoutChallenge) HasFlowInfo() bool { + if o != nil && !IsNil(o.FlowInfo) { + return true + } + + return false +} + +// SetFlowInfo gets a reference to the given ContextualFlowInfo and assigns it to the FlowInfo field. +func (o *IframeLogoutChallenge) SetFlowInfo(v ContextualFlowInfo) { + o.FlowInfo = &v +} + +// GetComponent returns the Component field value if set, zero value otherwise. +func (o *IframeLogoutChallenge) GetComponent() string { + if o == nil || IsNil(o.Component) { + var ret string + return ret + } + return *o.Component +} + +// GetComponentOk returns a tuple with the Component field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *IframeLogoutChallenge) GetComponentOk() (*string, bool) { + if o == nil || IsNil(o.Component) { + return nil, false + } + return o.Component, true +} + +// HasComponent returns a boolean if a field has been set. +func (o *IframeLogoutChallenge) HasComponent() bool { + if o != nil && !IsNil(o.Component) { + return true + } + + return false +} + +// SetComponent gets a reference to the given string and assigns it to the Component field. +func (o *IframeLogoutChallenge) SetComponent(v string) { + o.Component = &v +} + +// GetResponseErrors returns the ResponseErrors field value if set, zero value otherwise. +func (o *IframeLogoutChallenge) GetResponseErrors() map[string][]ErrorDetail { + if o == nil || IsNil(o.ResponseErrors) { + var ret map[string][]ErrorDetail + return ret + } + return *o.ResponseErrors +} + +// GetResponseErrorsOk returns a tuple with the ResponseErrors field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *IframeLogoutChallenge) GetResponseErrorsOk() (*map[string][]ErrorDetail, bool) { + if o == nil || IsNil(o.ResponseErrors) { + return nil, false + } + return o.ResponseErrors, true +} + +// HasResponseErrors returns a boolean if a field has been set. +func (o *IframeLogoutChallenge) HasResponseErrors() bool { + if o != nil && !IsNil(o.ResponseErrors) { + return true + } + + return false +} + +// SetResponseErrors gets a reference to the given map[string][]ErrorDetail and assigns it to the ResponseErrors field. +func (o *IframeLogoutChallenge) SetResponseErrors(v map[string][]ErrorDetail) { + o.ResponseErrors = &v +} + +// GetLogoutUrls returns the LogoutUrls field value if set, zero value otherwise. +func (o *IframeLogoutChallenge) GetLogoutUrls() []LogoutURL { + if o == nil || IsNil(o.LogoutUrls) { + var ret []LogoutURL + return ret + } + return o.LogoutUrls +} + +// GetLogoutUrlsOk returns a tuple with the LogoutUrls field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *IframeLogoutChallenge) GetLogoutUrlsOk() ([]LogoutURL, bool) { + if o == nil || IsNil(o.LogoutUrls) { + return nil, false + } + return o.LogoutUrls, true +} + +// HasLogoutUrls returns a boolean if a field has been set. +func (o *IframeLogoutChallenge) HasLogoutUrls() bool { + if o != nil && !IsNil(o.LogoutUrls) { + return true + } + + return false +} + +// SetLogoutUrls gets a reference to the given []LogoutURL and assigns it to the LogoutUrls field. +func (o *IframeLogoutChallenge) SetLogoutUrls(v []LogoutURL) { + o.LogoutUrls = v +} + +func (o IframeLogoutChallenge) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o IframeLogoutChallenge) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.FlowInfo) { + toSerialize["flow_info"] = o.FlowInfo + } + if !IsNil(o.Component) { + toSerialize["component"] = o.Component + } + if !IsNil(o.ResponseErrors) { + toSerialize["response_errors"] = o.ResponseErrors + } + if !IsNil(o.LogoutUrls) { + toSerialize["logout_urls"] = o.LogoutUrls + } + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *IframeLogoutChallenge) UnmarshalJSON(data []byte) (err error) { + varIframeLogoutChallenge := _IframeLogoutChallenge{} + + err = json.Unmarshal(data, &varIframeLogoutChallenge) + + if err != nil { + return err + } + + *o = IframeLogoutChallenge(varIframeLogoutChallenge) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "flow_info") + delete(additionalProperties, "component") + delete(additionalProperties, "response_errors") + delete(additionalProperties, "logout_urls") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableIframeLogoutChallenge struct { + value *IframeLogoutChallenge + isSet bool +} + +func (v NullableIframeLogoutChallenge) Get() *IframeLogoutChallenge { + return v.value +} + +func (v *NullableIframeLogoutChallenge) Set(val *IframeLogoutChallenge) { + v.value = val + v.isSet = true +} + +func (v NullableIframeLogoutChallenge) IsSet() bool { + return v.isSet +} + +func (v *NullableIframeLogoutChallenge) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableIframeLogoutChallenge(val *IframeLogoutChallenge) *NullableIframeLogoutChallenge { + return &NullableIframeLogoutChallenge{value: val, isSet: true} +} + +func (v NullableIframeLogoutChallenge) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableIframeLogoutChallenge) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_iframe_logout_challenge_response_request.go b/packages/client-go/model_iframe_logout_challenge_response_request.go new file mode 100644 index 0000000000..d06eca9839 --- /dev/null +++ b/packages/client-go/model_iframe_logout_challenge_response_request.go @@ -0,0 +1,158 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" +) + +// checks if the IframeLogoutChallengeResponseRequest type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &IframeLogoutChallengeResponseRequest{} + +// IframeLogoutChallengeResponseRequest Response for iframe logout +type IframeLogoutChallengeResponseRequest struct { + Component *string `json:"component,omitempty"` + AdditionalProperties map[string]interface{} +} + +type _IframeLogoutChallengeResponseRequest IframeLogoutChallengeResponseRequest + +// NewIframeLogoutChallengeResponseRequest instantiates a new IframeLogoutChallengeResponseRequest object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewIframeLogoutChallengeResponseRequest() *IframeLogoutChallengeResponseRequest { + this := IframeLogoutChallengeResponseRequest{} + var component string = "ak-provider-iframe-logout" + this.Component = &component + return &this +} + +// NewIframeLogoutChallengeResponseRequestWithDefaults instantiates a new IframeLogoutChallengeResponseRequest object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewIframeLogoutChallengeResponseRequestWithDefaults() *IframeLogoutChallengeResponseRequest { + this := IframeLogoutChallengeResponseRequest{} + var component string = "ak-provider-iframe-logout" + this.Component = &component + return &this +} + +// GetComponent returns the Component field value if set, zero value otherwise. +func (o *IframeLogoutChallengeResponseRequest) GetComponent() string { + if o == nil || IsNil(o.Component) { + var ret string + return ret + } + return *o.Component +} + +// GetComponentOk returns a tuple with the Component field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *IframeLogoutChallengeResponseRequest) GetComponentOk() (*string, bool) { + if o == nil || IsNil(o.Component) { + return nil, false + } + return o.Component, true +} + +// HasComponent returns a boolean if a field has been set. +func (o *IframeLogoutChallengeResponseRequest) HasComponent() bool { + if o != nil && !IsNil(o.Component) { + return true + } + + return false +} + +// SetComponent gets a reference to the given string and assigns it to the Component field. +func (o *IframeLogoutChallengeResponseRequest) SetComponent(v string) { + o.Component = &v +} + +func (o IframeLogoutChallengeResponseRequest) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o IframeLogoutChallengeResponseRequest) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.Component) { + toSerialize["component"] = o.Component + } + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *IframeLogoutChallengeResponseRequest) UnmarshalJSON(data []byte) (err error) { + varIframeLogoutChallengeResponseRequest := _IframeLogoutChallengeResponseRequest{} + + err = json.Unmarshal(data, &varIframeLogoutChallengeResponseRequest) + + if err != nil { + return err + } + + *o = IframeLogoutChallengeResponseRequest(varIframeLogoutChallengeResponseRequest) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "component") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableIframeLogoutChallengeResponseRequest struct { + value *IframeLogoutChallengeResponseRequest + isSet bool +} + +func (v NullableIframeLogoutChallengeResponseRequest) Get() *IframeLogoutChallengeResponseRequest { + return v.value +} + +func (v *NullableIframeLogoutChallengeResponseRequest) Set(val *IframeLogoutChallengeResponseRequest) { + v.value = val + v.isSet = true +} + +func (v NullableIframeLogoutChallengeResponseRequest) IsSet() bool { + return v.isSet +} + +func (v *NullableIframeLogoutChallengeResponseRequest) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableIframeLogoutChallengeResponseRequest(val *IframeLogoutChallengeResponseRequest) *NullableIframeLogoutChallengeResponseRequest { + return &NullableIframeLogoutChallengeResponseRequest{value: val, isSet: true} +} + +func (v NullableIframeLogoutChallengeResponseRequest) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableIframeLogoutChallengeResponseRequest) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_ldap_check_access.go b/packages/client-go/model_ldap_check_access.go new file mode 100644 index 0000000000..5331a444d8 --- /dev/null +++ b/packages/client-go/model_ldap_check_access.go @@ -0,0 +1,204 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// checks if the LDAPCheckAccess type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &LDAPCheckAccess{} + +// LDAPCheckAccess Base serializer class which doesn't implement create/update methods +type LDAPCheckAccess struct { + HasSearchPermission *bool `json:"has_search_permission,omitempty"` + Access PolicyTestResult `json:"access"` + AdditionalProperties map[string]interface{} +} + +type _LDAPCheckAccess LDAPCheckAccess + +// NewLDAPCheckAccess instantiates a new LDAPCheckAccess object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewLDAPCheckAccess(access PolicyTestResult) *LDAPCheckAccess { + this := LDAPCheckAccess{} + this.Access = access + return &this +} + +// NewLDAPCheckAccessWithDefaults instantiates a new LDAPCheckAccess object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewLDAPCheckAccessWithDefaults() *LDAPCheckAccess { + this := LDAPCheckAccess{} + return &this +} + +// GetHasSearchPermission returns the HasSearchPermission field value if set, zero value otherwise. +func (o *LDAPCheckAccess) GetHasSearchPermission() bool { + if o == nil || IsNil(o.HasSearchPermission) { + var ret bool + return ret + } + return *o.HasSearchPermission +} + +// GetHasSearchPermissionOk returns a tuple with the HasSearchPermission field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *LDAPCheckAccess) GetHasSearchPermissionOk() (*bool, bool) { + if o == nil || IsNil(o.HasSearchPermission) { + return nil, false + } + return o.HasSearchPermission, true +} + +// HasHasSearchPermission returns a boolean if a field has been set. +func (o *LDAPCheckAccess) HasHasSearchPermission() bool { + if o != nil && !IsNil(o.HasSearchPermission) { + return true + } + + return false +} + +// SetHasSearchPermission gets a reference to the given bool and assigns it to the HasSearchPermission field. +func (o *LDAPCheckAccess) SetHasSearchPermission(v bool) { + o.HasSearchPermission = &v +} + +// GetAccess returns the Access field value +func (o *LDAPCheckAccess) GetAccess() PolicyTestResult { + if o == nil { + var ret PolicyTestResult + return ret + } + + return o.Access +} + +// GetAccessOk returns a tuple with the Access field value +// and a boolean to check if the value has been set. +func (o *LDAPCheckAccess) GetAccessOk() (*PolicyTestResult, bool) { + if o == nil { + return nil, false + } + return &o.Access, true +} + +// SetAccess sets field value +func (o *LDAPCheckAccess) SetAccess(v PolicyTestResult) { + o.Access = v +} + +func (o LDAPCheckAccess) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o LDAPCheckAccess) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.HasSearchPermission) { + toSerialize["has_search_permission"] = o.HasSearchPermission + } + toSerialize["access"] = o.Access + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *LDAPCheckAccess) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "access", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varLDAPCheckAccess := _LDAPCheckAccess{} + + err = json.Unmarshal(data, &varLDAPCheckAccess) + + if err != nil { + return err + } + + *o = LDAPCheckAccess(varLDAPCheckAccess) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "has_search_permission") + delete(additionalProperties, "access") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableLDAPCheckAccess struct { + value *LDAPCheckAccess + isSet bool +} + +func (v NullableLDAPCheckAccess) Get() *LDAPCheckAccess { + return v.value +} + +func (v *NullableLDAPCheckAccess) Set(val *LDAPCheckAccess) { + v.value = val + v.isSet = true +} + +func (v NullableLDAPCheckAccess) IsSet() bool { + return v.isSet +} + +func (v *NullableLDAPCheckAccess) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableLDAPCheckAccess(val *LDAPCheckAccess) *NullableLDAPCheckAccess { + return &NullableLDAPCheckAccess{value: val, isSet: true} +} + +func (v NullableLDAPCheckAccess) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableLDAPCheckAccess) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_ldap_outpost_config.go b/packages/client-go/model_ldap_outpost_config.go new file mode 100644 index 0000000000..5999a1d89c --- /dev/null +++ b/packages/client-go/model_ldap_outpost_config.go @@ -0,0 +1,598 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// checks if the LDAPOutpostConfig type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &LDAPOutpostConfig{} + +// LDAPOutpostConfig LDAPProvider Serializer +type LDAPOutpostConfig struct { + Pk int32 `json:"pk"` + Name string `json:"name"` + // DN under which objects are accessible. + BaseDn *string `json:"base_dn,omitempty"` + BindFlowSlug string `json:"bind_flow_slug"` + // Get slug for unbind flow, defaulting to brand's default flow. + UnbindFlowSlug NullableString `json:"unbind_flow_slug"` + // Prioritise backchannel slug over direct application slug + ApplicationSlug string `json:"application_slug"` + Certificate NullableString `json:"certificate,omitempty"` + TlsServerName *string `json:"tls_server_name,omitempty"` + // The start for uidNumbers, this number is added to the user.pk to make sure that the numbers aren't too low for POSIX users. Default is 2000 to ensure that we don't collide with local users uidNumber + UidStartNumber *int32 `json:"uid_start_number,omitempty"` + // The start for gidNumbers, this number is added to a number generated from the group.pk to make sure that the numbers aren't too low for POSIX groups. Default is 4000 to ensure that we don't collide with local groups or users primary groups gidNumber + GidStartNumber *int32 `json:"gid_start_number,omitempty"` + SearchMode *LDAPAPIAccessMode `json:"search_mode,omitempty"` + BindMode *LDAPAPIAccessMode `json:"bind_mode,omitempty"` + // When enabled, code-based multi-factor authentication can be used by appending a semicolon and the TOTP code to the password. This should only be enabled if all users that will bind to this provider have a TOTP device configured, as otherwise a password may incorrectly be rejected if it contains a semicolon. + MfaSupport *bool `json:"mfa_support,omitempty"` + AdditionalProperties map[string]interface{} +} + +type _LDAPOutpostConfig LDAPOutpostConfig + +// NewLDAPOutpostConfig instantiates a new LDAPOutpostConfig object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewLDAPOutpostConfig(pk int32, name string, bindFlowSlug string, unbindFlowSlug NullableString, applicationSlug string) *LDAPOutpostConfig { + this := LDAPOutpostConfig{} + this.Pk = pk + this.Name = name + this.BindFlowSlug = bindFlowSlug + this.UnbindFlowSlug = unbindFlowSlug + this.ApplicationSlug = applicationSlug + return &this +} + +// NewLDAPOutpostConfigWithDefaults instantiates a new LDAPOutpostConfig object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewLDAPOutpostConfigWithDefaults() *LDAPOutpostConfig { + this := LDAPOutpostConfig{} + return &this +} + +// GetPk returns the Pk field value +func (o *LDAPOutpostConfig) GetPk() int32 { + if o == nil { + var ret int32 + return ret + } + + return o.Pk +} + +// GetPkOk returns a tuple with the Pk field value +// and a boolean to check if the value has been set. +func (o *LDAPOutpostConfig) GetPkOk() (*int32, bool) { + if o == nil { + return nil, false + } + return &o.Pk, true +} + +// SetPk sets field value +func (o *LDAPOutpostConfig) SetPk(v int32) { + o.Pk = v +} + +// GetName returns the Name field value +func (o *LDAPOutpostConfig) GetName() string { + if o == nil { + var ret string + return ret + } + + return o.Name +} + +// GetNameOk returns a tuple with the Name field value +// and a boolean to check if the value has been set. +func (o *LDAPOutpostConfig) GetNameOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Name, true +} + +// SetName sets field value +func (o *LDAPOutpostConfig) SetName(v string) { + o.Name = v +} + +// GetBaseDn returns the BaseDn field value if set, zero value otherwise. +func (o *LDAPOutpostConfig) GetBaseDn() string { + if o == nil || IsNil(o.BaseDn) { + var ret string + return ret + } + return *o.BaseDn +} + +// GetBaseDnOk returns a tuple with the BaseDn field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *LDAPOutpostConfig) GetBaseDnOk() (*string, bool) { + if o == nil || IsNil(o.BaseDn) { + return nil, false + } + return o.BaseDn, true +} + +// HasBaseDn returns a boolean if a field has been set. +func (o *LDAPOutpostConfig) HasBaseDn() bool { + if o != nil && !IsNil(o.BaseDn) { + return true + } + + return false +} + +// SetBaseDn gets a reference to the given string and assigns it to the BaseDn field. +func (o *LDAPOutpostConfig) SetBaseDn(v string) { + o.BaseDn = &v +} + +// GetBindFlowSlug returns the BindFlowSlug field value +func (o *LDAPOutpostConfig) GetBindFlowSlug() string { + if o == nil { + var ret string + return ret + } + + return o.BindFlowSlug +} + +// GetBindFlowSlugOk returns a tuple with the BindFlowSlug field value +// and a boolean to check if the value has been set. +func (o *LDAPOutpostConfig) GetBindFlowSlugOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.BindFlowSlug, true +} + +// SetBindFlowSlug sets field value +func (o *LDAPOutpostConfig) SetBindFlowSlug(v string) { + o.BindFlowSlug = v +} + +// GetUnbindFlowSlug returns the UnbindFlowSlug field value +// If the value is explicit nil, the zero value for string will be returned +func (o *LDAPOutpostConfig) GetUnbindFlowSlug() string { + if o == nil || o.UnbindFlowSlug.Get() == nil { + var ret string + return ret + } + + return *o.UnbindFlowSlug.Get() +} + +// GetUnbindFlowSlugOk returns a tuple with the UnbindFlowSlug field value +// and a boolean to check if the value has been set. +// NOTE: If the value is an explicit nil, `nil, true` will be returned +func (o *LDAPOutpostConfig) GetUnbindFlowSlugOk() (*string, bool) { + if o == nil { + return nil, false + } + return o.UnbindFlowSlug.Get(), o.UnbindFlowSlug.IsSet() +} + +// SetUnbindFlowSlug sets field value +func (o *LDAPOutpostConfig) SetUnbindFlowSlug(v string) { + o.UnbindFlowSlug.Set(&v) +} + +// GetApplicationSlug returns the ApplicationSlug field value +func (o *LDAPOutpostConfig) GetApplicationSlug() string { + if o == nil { + var ret string + return ret + } + + return o.ApplicationSlug +} + +// GetApplicationSlugOk returns a tuple with the ApplicationSlug field value +// and a boolean to check if the value has been set. +func (o *LDAPOutpostConfig) GetApplicationSlugOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.ApplicationSlug, true +} + +// SetApplicationSlug sets field value +func (o *LDAPOutpostConfig) SetApplicationSlug(v string) { + o.ApplicationSlug = v +} + +// GetCertificate returns the Certificate field value if set, zero value otherwise (both if not set or set to explicit null). +func (o *LDAPOutpostConfig) GetCertificate() string { + if o == nil || IsNil(o.Certificate.Get()) { + var ret string + return ret + } + return *o.Certificate.Get() +} + +// GetCertificateOk returns a tuple with the Certificate field value if set, nil otherwise +// and a boolean to check if the value has been set. +// NOTE: If the value is an explicit nil, `nil, true` will be returned +func (o *LDAPOutpostConfig) GetCertificateOk() (*string, bool) { + if o == nil { + return nil, false + } + return o.Certificate.Get(), o.Certificate.IsSet() +} + +// HasCertificate returns a boolean if a field has been set. +func (o *LDAPOutpostConfig) HasCertificate() bool { + if o != nil && o.Certificate.IsSet() { + return true + } + + return false +} + +// SetCertificate gets a reference to the given NullableString and assigns it to the Certificate field. +func (o *LDAPOutpostConfig) SetCertificate(v string) { + o.Certificate.Set(&v) +} + +// SetCertificateNil sets the value for Certificate to be an explicit nil +func (o *LDAPOutpostConfig) SetCertificateNil() { + o.Certificate.Set(nil) +} + +// UnsetCertificate ensures that no value is present for Certificate, not even an explicit nil +func (o *LDAPOutpostConfig) UnsetCertificate() { + o.Certificate.Unset() +} + +// GetTlsServerName returns the TlsServerName field value if set, zero value otherwise. +func (o *LDAPOutpostConfig) GetTlsServerName() string { + if o == nil || IsNil(o.TlsServerName) { + var ret string + return ret + } + return *o.TlsServerName +} + +// GetTlsServerNameOk returns a tuple with the TlsServerName field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *LDAPOutpostConfig) GetTlsServerNameOk() (*string, bool) { + if o == nil || IsNil(o.TlsServerName) { + return nil, false + } + return o.TlsServerName, true +} + +// HasTlsServerName returns a boolean if a field has been set. +func (o *LDAPOutpostConfig) HasTlsServerName() bool { + if o != nil && !IsNil(o.TlsServerName) { + return true + } + + return false +} + +// SetTlsServerName gets a reference to the given string and assigns it to the TlsServerName field. +func (o *LDAPOutpostConfig) SetTlsServerName(v string) { + o.TlsServerName = &v +} + +// GetUidStartNumber returns the UidStartNumber field value if set, zero value otherwise. +func (o *LDAPOutpostConfig) GetUidStartNumber() int32 { + if o == nil || IsNil(o.UidStartNumber) { + var ret int32 + return ret + } + return *o.UidStartNumber +} + +// GetUidStartNumberOk returns a tuple with the UidStartNumber field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *LDAPOutpostConfig) GetUidStartNumberOk() (*int32, bool) { + if o == nil || IsNil(o.UidStartNumber) { + return nil, false + } + return o.UidStartNumber, true +} + +// HasUidStartNumber returns a boolean if a field has been set. +func (o *LDAPOutpostConfig) HasUidStartNumber() bool { + if o != nil && !IsNil(o.UidStartNumber) { + return true + } + + return false +} + +// SetUidStartNumber gets a reference to the given int32 and assigns it to the UidStartNumber field. +func (o *LDAPOutpostConfig) SetUidStartNumber(v int32) { + o.UidStartNumber = &v +} + +// GetGidStartNumber returns the GidStartNumber field value if set, zero value otherwise. +func (o *LDAPOutpostConfig) GetGidStartNumber() int32 { + if o == nil || IsNil(o.GidStartNumber) { + var ret int32 + return ret + } + return *o.GidStartNumber +} + +// GetGidStartNumberOk returns a tuple with the GidStartNumber field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *LDAPOutpostConfig) GetGidStartNumberOk() (*int32, bool) { + if o == nil || IsNil(o.GidStartNumber) { + return nil, false + } + return o.GidStartNumber, true +} + +// HasGidStartNumber returns a boolean if a field has been set. +func (o *LDAPOutpostConfig) HasGidStartNumber() bool { + if o != nil && !IsNil(o.GidStartNumber) { + return true + } + + return false +} + +// SetGidStartNumber gets a reference to the given int32 and assigns it to the GidStartNumber field. +func (o *LDAPOutpostConfig) SetGidStartNumber(v int32) { + o.GidStartNumber = &v +} + +// GetSearchMode returns the SearchMode field value if set, zero value otherwise. +func (o *LDAPOutpostConfig) GetSearchMode() LDAPAPIAccessMode { + if o == nil || IsNil(o.SearchMode) { + var ret LDAPAPIAccessMode + return ret + } + return *o.SearchMode +} + +// GetSearchModeOk returns a tuple with the SearchMode field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *LDAPOutpostConfig) GetSearchModeOk() (*LDAPAPIAccessMode, bool) { + if o == nil || IsNil(o.SearchMode) { + return nil, false + } + return o.SearchMode, true +} + +// HasSearchMode returns a boolean if a field has been set. +func (o *LDAPOutpostConfig) HasSearchMode() bool { + if o != nil && !IsNil(o.SearchMode) { + return true + } + + return false +} + +// SetSearchMode gets a reference to the given LDAPAPIAccessMode and assigns it to the SearchMode field. +func (o *LDAPOutpostConfig) SetSearchMode(v LDAPAPIAccessMode) { + o.SearchMode = &v +} + +// GetBindMode returns the BindMode field value if set, zero value otherwise. +func (o *LDAPOutpostConfig) GetBindMode() LDAPAPIAccessMode { + if o == nil || IsNil(o.BindMode) { + var ret LDAPAPIAccessMode + return ret + } + return *o.BindMode +} + +// GetBindModeOk returns a tuple with the BindMode field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *LDAPOutpostConfig) GetBindModeOk() (*LDAPAPIAccessMode, bool) { + if o == nil || IsNil(o.BindMode) { + return nil, false + } + return o.BindMode, true +} + +// HasBindMode returns a boolean if a field has been set. +func (o *LDAPOutpostConfig) HasBindMode() bool { + if o != nil && !IsNil(o.BindMode) { + return true + } + + return false +} + +// SetBindMode gets a reference to the given LDAPAPIAccessMode and assigns it to the BindMode field. +func (o *LDAPOutpostConfig) SetBindMode(v LDAPAPIAccessMode) { + o.BindMode = &v +} + +// GetMfaSupport returns the MfaSupport field value if set, zero value otherwise. +func (o *LDAPOutpostConfig) GetMfaSupport() bool { + if o == nil || IsNil(o.MfaSupport) { + var ret bool + return ret + } + return *o.MfaSupport +} + +// GetMfaSupportOk returns a tuple with the MfaSupport field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *LDAPOutpostConfig) GetMfaSupportOk() (*bool, bool) { + if o == nil || IsNil(o.MfaSupport) { + return nil, false + } + return o.MfaSupport, true +} + +// HasMfaSupport returns a boolean if a field has been set. +func (o *LDAPOutpostConfig) HasMfaSupport() bool { + if o != nil && !IsNil(o.MfaSupport) { + return true + } + + return false +} + +// SetMfaSupport gets a reference to the given bool and assigns it to the MfaSupport field. +func (o *LDAPOutpostConfig) SetMfaSupport(v bool) { + o.MfaSupport = &v +} + +func (o LDAPOutpostConfig) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o LDAPOutpostConfig) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + toSerialize["pk"] = o.Pk + toSerialize["name"] = o.Name + if !IsNil(o.BaseDn) { + toSerialize["base_dn"] = o.BaseDn + } + toSerialize["bind_flow_slug"] = o.BindFlowSlug + toSerialize["unbind_flow_slug"] = o.UnbindFlowSlug.Get() + toSerialize["application_slug"] = o.ApplicationSlug + if o.Certificate.IsSet() { + toSerialize["certificate"] = o.Certificate.Get() + } + if !IsNil(o.TlsServerName) { + toSerialize["tls_server_name"] = o.TlsServerName + } + if !IsNil(o.UidStartNumber) { + toSerialize["uid_start_number"] = o.UidStartNumber + } + if !IsNil(o.GidStartNumber) { + toSerialize["gid_start_number"] = o.GidStartNumber + } + if !IsNil(o.SearchMode) { + toSerialize["search_mode"] = o.SearchMode + } + if !IsNil(o.BindMode) { + toSerialize["bind_mode"] = o.BindMode + } + if !IsNil(o.MfaSupport) { + toSerialize["mfa_support"] = o.MfaSupport + } + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *LDAPOutpostConfig) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "pk", + "name", + "bind_flow_slug", + "unbind_flow_slug", + "application_slug", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varLDAPOutpostConfig := _LDAPOutpostConfig{} + + err = json.Unmarshal(data, &varLDAPOutpostConfig) + + if err != nil { + return err + } + + *o = LDAPOutpostConfig(varLDAPOutpostConfig) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "pk") + delete(additionalProperties, "name") + delete(additionalProperties, "base_dn") + delete(additionalProperties, "bind_flow_slug") + delete(additionalProperties, "unbind_flow_slug") + delete(additionalProperties, "application_slug") + delete(additionalProperties, "certificate") + delete(additionalProperties, "tls_server_name") + delete(additionalProperties, "uid_start_number") + delete(additionalProperties, "gid_start_number") + delete(additionalProperties, "search_mode") + delete(additionalProperties, "bind_mode") + delete(additionalProperties, "mfa_support") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableLDAPOutpostConfig struct { + value *LDAPOutpostConfig + isSet bool +} + +func (v NullableLDAPOutpostConfig) Get() *LDAPOutpostConfig { + return v.value +} + +func (v *NullableLDAPOutpostConfig) Set(val *LDAPOutpostConfig) { + v.value = val + v.isSet = true +} + +func (v NullableLDAPOutpostConfig) IsSet() bool { + return v.isSet +} + +func (v *NullableLDAPOutpostConfig) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableLDAPOutpostConfig(val *LDAPOutpostConfig) *NullableLDAPOutpostConfig { + return &NullableLDAPOutpostConfig{value: val, isSet: true} +} + +func (v NullableLDAPOutpostConfig) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableLDAPOutpostConfig) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_ldapapi_access_mode.go b/packages/client-go/model_ldapapi_access_mode.go new file mode 100644 index 0000000000..316d793d68 --- /dev/null +++ b/packages/client-go/model_ldapapi_access_mode.go @@ -0,0 +1,111 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// LDAPAPIAccessMode the model 'LDAPAPIAccessMode' +type LDAPAPIAccessMode string + +// List of LDAPAPIAccessMode +const ( + LDAPAPIACCESSMODE_DIRECT LDAPAPIAccessMode = "direct" + LDAPAPIACCESSMODE_CACHED LDAPAPIAccessMode = "cached" +) + +// All allowed values of LDAPAPIAccessMode enum +var AllowedLDAPAPIAccessModeEnumValues = []LDAPAPIAccessMode{ + "direct", + "cached", +} + +func (v *LDAPAPIAccessMode) UnmarshalJSON(src []byte) error { + var value string + err := json.Unmarshal(src, &value) + if err != nil { + return err + } + enumTypeValue := LDAPAPIAccessMode(value) + for _, existing := range AllowedLDAPAPIAccessModeEnumValues { + if existing == enumTypeValue { + *v = enumTypeValue + return nil + } + } + + return fmt.Errorf("%+v is not a valid LDAPAPIAccessMode", value) +} + +// NewLDAPAPIAccessModeFromValue returns a pointer to a valid LDAPAPIAccessMode +// for the value passed as argument, or an error if the value passed is not allowed by the enum +func NewLDAPAPIAccessModeFromValue(v string) (*LDAPAPIAccessMode, error) { + ev := LDAPAPIAccessMode(v) + if ev.IsValid() { + return &ev, nil + } else { + return nil, fmt.Errorf("invalid value '%v' for LDAPAPIAccessMode: valid values are %v", v, AllowedLDAPAPIAccessModeEnumValues) + } +} + +// IsValid return true if the value is valid for the enum, false otherwise +func (v LDAPAPIAccessMode) IsValid() bool { + for _, existing := range AllowedLDAPAPIAccessModeEnumValues { + if existing == v { + return true + } + } + return false +} + +// Ptr returns reference to LDAPAPIAccessMode value +func (v LDAPAPIAccessMode) Ptr() *LDAPAPIAccessMode { + return &v +} + +type NullableLDAPAPIAccessMode struct { + value *LDAPAPIAccessMode + isSet bool +} + +func (v NullableLDAPAPIAccessMode) Get() *LDAPAPIAccessMode { + return v.value +} + +func (v *NullableLDAPAPIAccessMode) Set(val *LDAPAPIAccessMode) { + v.value = val + v.isSet = true +} + +func (v NullableLDAPAPIAccessMode) IsSet() bool { + return v.isSet +} + +func (v *NullableLDAPAPIAccessMode) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableLDAPAPIAccessMode(val *LDAPAPIAccessMode) *NullableLDAPAPIAccessMode { + return &NullableLDAPAPIAccessMode{value: val, isSet: true} +} + +func (v NullableLDAPAPIAccessMode) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableLDAPAPIAccessMode) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_log_event.go b/packages/client-go/model_log_event.go new file mode 100644 index 0000000000..6d3ccf1d32 --- /dev/null +++ b/packages/client-go/model_log_event.go @@ -0,0 +1,284 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" + "time" +) + +// checks if the LogEvent type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &LogEvent{} + +// LogEvent Single log message with all context logged. +type LogEvent struct { + Timestamp time.Time `json:"timestamp"` + LogLevel LogLevelEnum `json:"log_level"` + Logger string `json:"logger"` + Event string `json:"event"` + Attributes map[string]interface{} `json:"attributes"` + AdditionalProperties map[string]interface{} +} + +type _LogEvent LogEvent + +// NewLogEvent instantiates a new LogEvent object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewLogEvent(timestamp time.Time, logLevel LogLevelEnum, logger string, event string, attributes map[string]interface{}) *LogEvent { + this := LogEvent{} + this.Timestamp = timestamp + this.LogLevel = logLevel + this.Logger = logger + this.Event = event + this.Attributes = attributes + return &this +} + +// NewLogEventWithDefaults instantiates a new LogEvent object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewLogEventWithDefaults() *LogEvent { + this := LogEvent{} + return &this +} + +// GetTimestamp returns the Timestamp field value +func (o *LogEvent) GetTimestamp() time.Time { + if o == nil { + var ret time.Time + return ret + } + + return o.Timestamp +} + +// GetTimestampOk returns a tuple with the Timestamp field value +// and a boolean to check if the value has been set. +func (o *LogEvent) GetTimestampOk() (*time.Time, bool) { + if o == nil { + return nil, false + } + return &o.Timestamp, true +} + +// SetTimestamp sets field value +func (o *LogEvent) SetTimestamp(v time.Time) { + o.Timestamp = v +} + +// GetLogLevel returns the LogLevel field value +func (o *LogEvent) GetLogLevel() LogLevelEnum { + if o == nil { + var ret LogLevelEnum + return ret + } + + return o.LogLevel +} + +// GetLogLevelOk returns a tuple with the LogLevel field value +// and a boolean to check if the value has been set. +func (o *LogEvent) GetLogLevelOk() (*LogLevelEnum, bool) { + if o == nil { + return nil, false + } + return &o.LogLevel, true +} + +// SetLogLevel sets field value +func (o *LogEvent) SetLogLevel(v LogLevelEnum) { + o.LogLevel = v +} + +// GetLogger returns the Logger field value +func (o *LogEvent) GetLogger() string { + if o == nil { + var ret string + return ret + } + + return o.Logger +} + +// GetLoggerOk returns a tuple with the Logger field value +// and a boolean to check if the value has been set. +func (o *LogEvent) GetLoggerOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Logger, true +} + +// SetLogger sets field value +func (o *LogEvent) SetLogger(v string) { + o.Logger = v +} + +// GetEvent returns the Event field value +func (o *LogEvent) GetEvent() string { + if o == nil { + var ret string + return ret + } + + return o.Event +} + +// GetEventOk returns a tuple with the Event field value +// and a boolean to check if the value has been set. +func (o *LogEvent) GetEventOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Event, true +} + +// SetEvent sets field value +func (o *LogEvent) SetEvent(v string) { + o.Event = v +} + +// GetAttributes returns the Attributes field value +func (o *LogEvent) GetAttributes() map[string]interface{} { + if o == nil { + var ret map[string]interface{} + return ret + } + + return o.Attributes +} + +// GetAttributesOk returns a tuple with the Attributes field value +// and a boolean to check if the value has been set. +func (o *LogEvent) GetAttributesOk() (map[string]interface{}, bool) { + if o == nil { + return map[string]interface{}{}, false + } + return o.Attributes, true +} + +// SetAttributes sets field value +func (o *LogEvent) SetAttributes(v map[string]interface{}) { + o.Attributes = v +} + +func (o LogEvent) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o LogEvent) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + toSerialize["timestamp"] = o.Timestamp + toSerialize["log_level"] = o.LogLevel + toSerialize["logger"] = o.Logger + toSerialize["event"] = o.Event + toSerialize["attributes"] = o.Attributes + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *LogEvent) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "timestamp", + "log_level", + "logger", + "event", + "attributes", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varLogEvent := _LogEvent{} + + err = json.Unmarshal(data, &varLogEvent) + + if err != nil { + return err + } + + *o = LogEvent(varLogEvent) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "timestamp") + delete(additionalProperties, "log_level") + delete(additionalProperties, "logger") + delete(additionalProperties, "event") + delete(additionalProperties, "attributes") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableLogEvent struct { + value *LogEvent + isSet bool +} + +func (v NullableLogEvent) Get() *LogEvent { + return v.value +} + +func (v *NullableLogEvent) Set(val *LogEvent) { + v.value = val + v.isSet = true +} + +func (v NullableLogEvent) IsSet() bool { + return v.isSet +} + +func (v *NullableLogEvent) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableLogEvent(val *LogEvent) *NullableLogEvent { + return &NullableLogEvent{value: val, isSet: true} +} + +func (v NullableLogEvent) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableLogEvent) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_log_level_enum.go b/packages/client-go/model_log_level_enum.go new file mode 100644 index 0000000000..7381875028 --- /dev/null +++ b/packages/client-go/model_log_level_enum.go @@ -0,0 +1,123 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// LogLevelEnum the model 'LogLevelEnum' +type LogLevelEnum string + +// List of LogLevelEnum +const ( + LOGLEVELENUM_CRITICAL LogLevelEnum = "critical" + LOGLEVELENUM_EXCEPTION LogLevelEnum = "exception" + LOGLEVELENUM_ERROR LogLevelEnum = "error" + LOGLEVELENUM_WARN LogLevelEnum = "warn" + LOGLEVELENUM_WARNING LogLevelEnum = "warning" + LOGLEVELENUM_INFO LogLevelEnum = "info" + LOGLEVELENUM_DEBUG LogLevelEnum = "debug" + LOGLEVELENUM_NOTSET LogLevelEnum = "notset" +) + +// All allowed values of LogLevelEnum enum +var AllowedLogLevelEnumEnumValues = []LogLevelEnum{ + "critical", + "exception", + "error", + "warn", + "warning", + "info", + "debug", + "notset", +} + +func (v *LogLevelEnum) UnmarshalJSON(src []byte) error { + var value string + err := json.Unmarshal(src, &value) + if err != nil { + return err + } + enumTypeValue := LogLevelEnum(value) + for _, existing := range AllowedLogLevelEnumEnumValues { + if existing == enumTypeValue { + *v = enumTypeValue + return nil + } + } + + return fmt.Errorf("%+v is not a valid LogLevelEnum", value) +} + +// NewLogLevelEnumFromValue returns a pointer to a valid LogLevelEnum +// for the value passed as argument, or an error if the value passed is not allowed by the enum +func NewLogLevelEnumFromValue(v string) (*LogLevelEnum, error) { + ev := LogLevelEnum(v) + if ev.IsValid() { + return &ev, nil + } else { + return nil, fmt.Errorf("invalid value '%v' for LogLevelEnum: valid values are %v", v, AllowedLogLevelEnumEnumValues) + } +} + +// IsValid return true if the value is valid for the enum, false otherwise +func (v LogLevelEnum) IsValid() bool { + for _, existing := range AllowedLogLevelEnumEnumValues { + if existing == v { + return true + } + } + return false +} + +// Ptr returns reference to LogLevelEnum value +func (v LogLevelEnum) Ptr() *LogLevelEnum { + return &v +} + +type NullableLogLevelEnum struct { + value *LogLevelEnum + isSet bool +} + +func (v NullableLogLevelEnum) Get() *LogLevelEnum { + return v.value +} + +func (v *NullableLogLevelEnum) Set(val *LogLevelEnum) { + v.value = val + v.isSet = true +} + +func (v NullableLogLevelEnum) IsSet() bool { + return v.isSet +} + +func (v *NullableLogLevelEnum) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableLogLevelEnum(val *LogLevelEnum) *NullableLogLevelEnum { + return &NullableLogLevelEnum{value: val, isSet: true} +} + +func (v NullableLogLevelEnum) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableLogLevelEnum) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_login_challenge_types.go b/packages/client-go/model_login_challenge_types.go new file mode 100644 index 0000000000..67f6443bbd --- /dev/null +++ b/packages/client-go/model_login_challenge_types.go @@ -0,0 +1,218 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// LoginChallengeTypes - struct for LoginChallengeTypes +type LoginChallengeTypes struct { + AppleLoginChallenge *AppleLoginChallenge + PlexAuthenticationChallenge *PlexAuthenticationChallenge + RedirectChallenge *RedirectChallenge + TelegramLoginChallenge *TelegramLoginChallenge +} + +// AppleLoginChallengeAsLoginChallengeTypes is a convenience function that returns AppleLoginChallenge wrapped in LoginChallengeTypes +func AppleLoginChallengeAsLoginChallengeTypes(v *AppleLoginChallenge) LoginChallengeTypes { + return LoginChallengeTypes{ + AppleLoginChallenge: v, + } +} + +// PlexAuthenticationChallengeAsLoginChallengeTypes is a convenience function that returns PlexAuthenticationChallenge wrapped in LoginChallengeTypes +func PlexAuthenticationChallengeAsLoginChallengeTypes(v *PlexAuthenticationChallenge) LoginChallengeTypes { + return LoginChallengeTypes{ + PlexAuthenticationChallenge: v, + } +} + +// RedirectChallengeAsLoginChallengeTypes is a convenience function that returns RedirectChallenge wrapped in LoginChallengeTypes +func RedirectChallengeAsLoginChallengeTypes(v *RedirectChallenge) LoginChallengeTypes { + return LoginChallengeTypes{ + RedirectChallenge: v, + } +} + +// TelegramLoginChallengeAsLoginChallengeTypes is a convenience function that returns TelegramLoginChallenge wrapped in LoginChallengeTypes +func TelegramLoginChallengeAsLoginChallengeTypes(v *TelegramLoginChallenge) LoginChallengeTypes { + return LoginChallengeTypes{ + TelegramLoginChallenge: v, + } +} + +// Unmarshal JSON data into one of the pointers in the struct +func (dst *LoginChallengeTypes) UnmarshalJSON(data []byte) error { + var err error + // use discriminator value to speed up the lookup + var jsonDict map[string]interface{} + err = newStrictDecoder(data).Decode(&jsonDict) + if err != nil { + return fmt.Errorf("failed to unmarshal JSON into map for the discriminator lookup") + } + + // check if the discriminator value is 'ak-source-oauth-apple' + if jsonDict["component"] == "ak-source-oauth-apple" { + // try to unmarshal JSON data into AppleLoginChallenge + err = json.Unmarshal(data, &dst.AppleLoginChallenge) + if err == nil { + return nil // data stored in dst.AppleLoginChallenge, return on the first match + } else { + dst.AppleLoginChallenge = nil + return fmt.Errorf("failed to unmarshal LoginChallengeTypes as AppleLoginChallenge: %s", err.Error()) + } + } + + // check if the discriminator value is 'ak-source-plex' + if jsonDict["component"] == "ak-source-plex" { + // try to unmarshal JSON data into PlexAuthenticationChallenge + err = json.Unmarshal(data, &dst.PlexAuthenticationChallenge) + if err == nil { + return nil // data stored in dst.PlexAuthenticationChallenge, return on the first match + } else { + dst.PlexAuthenticationChallenge = nil + return fmt.Errorf("failed to unmarshal LoginChallengeTypes as PlexAuthenticationChallenge: %s", err.Error()) + } + } + + // check if the discriminator value is 'ak-source-telegram' + if jsonDict["component"] == "ak-source-telegram" { + // try to unmarshal JSON data into TelegramLoginChallenge + err = json.Unmarshal(data, &dst.TelegramLoginChallenge) + if err == nil { + return nil // data stored in dst.TelegramLoginChallenge, return on the first match + } else { + dst.TelegramLoginChallenge = nil + return fmt.Errorf("failed to unmarshal LoginChallengeTypes as TelegramLoginChallenge: %s", err.Error()) + } + } + + // check if the discriminator value is 'xak-flow-redirect' + if jsonDict["component"] == "xak-flow-redirect" { + // try to unmarshal JSON data into RedirectChallenge + err = json.Unmarshal(data, &dst.RedirectChallenge) + if err == nil { + return nil // data stored in dst.RedirectChallenge, return on the first match + } else { + dst.RedirectChallenge = nil + return fmt.Errorf("failed to unmarshal LoginChallengeTypes as RedirectChallenge: %s", err.Error()) + } + } + + return nil +} + +// Marshal data from the first non-nil pointers in the struct to JSON +func (src LoginChallengeTypes) MarshalJSON() ([]byte, error) { + if src.AppleLoginChallenge != nil { + return json.Marshal(&src.AppleLoginChallenge) + } + + if src.PlexAuthenticationChallenge != nil { + return json.Marshal(&src.PlexAuthenticationChallenge) + } + + if src.RedirectChallenge != nil { + return json.Marshal(&src.RedirectChallenge) + } + + if src.TelegramLoginChallenge != nil { + return json.Marshal(&src.TelegramLoginChallenge) + } + + return nil, nil // no data in oneOf schemas +} + +// Get the actual instance +func (obj *LoginChallengeTypes) GetActualInstance() interface{} { + if obj == nil { + return nil + } + if obj.AppleLoginChallenge != nil { + return obj.AppleLoginChallenge + } + + if obj.PlexAuthenticationChallenge != nil { + return obj.PlexAuthenticationChallenge + } + + if obj.RedirectChallenge != nil { + return obj.RedirectChallenge + } + + if obj.TelegramLoginChallenge != nil { + return obj.TelegramLoginChallenge + } + + // all schemas are nil + return nil +} + +// Get the actual instance value +func (obj LoginChallengeTypes) GetActualInstanceValue() interface{} { + if obj.AppleLoginChallenge != nil { + return *obj.AppleLoginChallenge + } + + if obj.PlexAuthenticationChallenge != nil { + return *obj.PlexAuthenticationChallenge + } + + if obj.RedirectChallenge != nil { + return *obj.RedirectChallenge + } + + if obj.TelegramLoginChallenge != nil { + return *obj.TelegramLoginChallenge + } + + // all schemas are nil + return nil +} + +type NullableLoginChallengeTypes struct { + value *LoginChallengeTypes + isSet bool +} + +func (v NullableLoginChallengeTypes) Get() *LoginChallengeTypes { + return v.value +} + +func (v *NullableLoginChallengeTypes) Set(val *LoginChallengeTypes) { + v.value = val + v.isSet = true +} + +func (v NullableLoginChallengeTypes) IsSet() bool { + return v.isSet +} + +func (v *NullableLoginChallengeTypes) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableLoginChallengeTypes(val *LoginChallengeTypes) *NullableLoginChallengeTypes { + return &NullableLoginChallengeTypes{value: val, isSet: true} +} + +func (v NullableLoginChallengeTypes) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableLoginChallengeTypes) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_login_source.go b/packages/client-go/model_login_source.go new file mode 100644 index 0000000000..b0a44e1f0d --- /dev/null +++ b/packages/client-go/model_login_source.go @@ -0,0 +1,285 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// checks if the LoginSource type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &LoginSource{} + +// LoginSource Serializer for Login buttons of sources +type LoginSource struct { + Name string `json:"name"` + IconUrl NullableString `json:"icon_url,omitempty"` + Promoted *bool `json:"promoted,omitempty"` + Challenge LoginChallengeTypes `json:"challenge"` + AdditionalProperties map[string]interface{} +} + +type _LoginSource LoginSource + +// NewLoginSource instantiates a new LoginSource object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewLoginSource(name string, challenge LoginChallengeTypes) *LoginSource { + this := LoginSource{} + this.Name = name + var promoted bool = false + this.Promoted = &promoted + this.Challenge = challenge + return &this +} + +// NewLoginSourceWithDefaults instantiates a new LoginSource object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewLoginSourceWithDefaults() *LoginSource { + this := LoginSource{} + var promoted bool = false + this.Promoted = &promoted + return &this +} + +// GetName returns the Name field value +func (o *LoginSource) GetName() string { + if o == nil { + var ret string + return ret + } + + return o.Name +} + +// GetNameOk returns a tuple with the Name field value +// and a boolean to check if the value has been set. +func (o *LoginSource) GetNameOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Name, true +} + +// SetName sets field value +func (o *LoginSource) SetName(v string) { + o.Name = v +} + +// GetIconUrl returns the IconUrl field value if set, zero value otherwise (both if not set or set to explicit null). +func (o *LoginSource) GetIconUrl() string { + if o == nil || IsNil(o.IconUrl.Get()) { + var ret string + return ret + } + return *o.IconUrl.Get() +} + +// GetIconUrlOk returns a tuple with the IconUrl field value if set, nil otherwise +// and a boolean to check if the value has been set. +// NOTE: If the value is an explicit nil, `nil, true` will be returned +func (o *LoginSource) GetIconUrlOk() (*string, bool) { + if o == nil { + return nil, false + } + return o.IconUrl.Get(), o.IconUrl.IsSet() +} + +// HasIconUrl returns a boolean if a field has been set. +func (o *LoginSource) HasIconUrl() bool { + if o != nil && o.IconUrl.IsSet() { + return true + } + + return false +} + +// SetIconUrl gets a reference to the given NullableString and assigns it to the IconUrl field. +func (o *LoginSource) SetIconUrl(v string) { + o.IconUrl.Set(&v) +} + +// SetIconUrlNil sets the value for IconUrl to be an explicit nil +func (o *LoginSource) SetIconUrlNil() { + o.IconUrl.Set(nil) +} + +// UnsetIconUrl ensures that no value is present for IconUrl, not even an explicit nil +func (o *LoginSource) UnsetIconUrl() { + o.IconUrl.Unset() +} + +// GetPromoted returns the Promoted field value if set, zero value otherwise. +func (o *LoginSource) GetPromoted() bool { + if o == nil || IsNil(o.Promoted) { + var ret bool + return ret + } + return *o.Promoted +} + +// GetPromotedOk returns a tuple with the Promoted field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *LoginSource) GetPromotedOk() (*bool, bool) { + if o == nil || IsNil(o.Promoted) { + return nil, false + } + return o.Promoted, true +} + +// HasPromoted returns a boolean if a field has been set. +func (o *LoginSource) HasPromoted() bool { + if o != nil && !IsNil(o.Promoted) { + return true + } + + return false +} + +// SetPromoted gets a reference to the given bool and assigns it to the Promoted field. +func (o *LoginSource) SetPromoted(v bool) { + o.Promoted = &v +} + +// GetChallenge returns the Challenge field value +func (o *LoginSource) GetChallenge() LoginChallengeTypes { + if o == nil { + var ret LoginChallengeTypes + return ret + } + + return o.Challenge +} + +// GetChallengeOk returns a tuple with the Challenge field value +// and a boolean to check if the value has been set. +func (o *LoginSource) GetChallengeOk() (*LoginChallengeTypes, bool) { + if o == nil { + return nil, false + } + return &o.Challenge, true +} + +// SetChallenge sets field value +func (o *LoginSource) SetChallenge(v LoginChallengeTypes) { + o.Challenge = v +} + +func (o LoginSource) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o LoginSource) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + toSerialize["name"] = o.Name + if o.IconUrl.IsSet() { + toSerialize["icon_url"] = o.IconUrl.Get() + } + if !IsNil(o.Promoted) { + toSerialize["promoted"] = o.Promoted + } + toSerialize["challenge"] = o.Challenge + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *LoginSource) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "name", + "challenge", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varLoginSource := _LoginSource{} + + err = json.Unmarshal(data, &varLoginSource) + + if err != nil { + return err + } + + *o = LoginSource(varLoginSource) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "name") + delete(additionalProperties, "icon_url") + delete(additionalProperties, "promoted") + delete(additionalProperties, "challenge") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableLoginSource struct { + value *LoginSource + isSet bool +} + +func (v NullableLoginSource) Get() *LoginSource { + return v.value +} + +func (v *NullableLoginSource) Set(val *LoginSource) { + v.value = val + v.isSet = true +} + +func (v NullableLoginSource) IsSet() bool { + return v.isSet +} + +func (v *NullableLoginSource) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableLoginSource(val *LoginSource) *NullableLoginSource { + return &NullableLoginSource{value: val, isSet: true} +} + +func (v NullableLoginSource) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableLoginSource) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_logout_url.go b/packages/client-go/model_logout_url.go new file mode 100644 index 0000000000..4554c1d73b --- /dev/null +++ b/packages/client-go/model_logout_url.go @@ -0,0 +1,407 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// checks if the LogoutURL type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &LogoutURL{} + +// LogoutURL Data for a single logout URL +type LogoutURL struct { + Url string `json:"url"` + ProviderName NullableString `json:"provider_name,omitempty"` + Binding NullableString `json:"binding,omitempty"` + SamlRequest NullableString `json:"saml_request,omitempty"` + SamlResponse NullableString `json:"saml_response,omitempty"` + SamlRelayState NullableString `json:"saml_relay_state,omitempty"` + AdditionalProperties map[string]interface{} +} + +type _LogoutURL LogoutURL + +// NewLogoutURL instantiates a new LogoutURL object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewLogoutURL(url string) *LogoutURL { + this := LogoutURL{} + this.Url = url + return &this +} + +// NewLogoutURLWithDefaults instantiates a new LogoutURL object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewLogoutURLWithDefaults() *LogoutURL { + this := LogoutURL{} + return &this +} + +// GetUrl returns the Url field value +func (o *LogoutURL) GetUrl() string { + if o == nil { + var ret string + return ret + } + + return o.Url +} + +// GetUrlOk returns a tuple with the Url field value +// and a boolean to check if the value has been set. +func (o *LogoutURL) GetUrlOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Url, true +} + +// SetUrl sets field value +func (o *LogoutURL) SetUrl(v string) { + o.Url = v +} + +// GetProviderName returns the ProviderName field value if set, zero value otherwise (both if not set or set to explicit null). +func (o *LogoutURL) GetProviderName() string { + if o == nil || IsNil(o.ProviderName.Get()) { + var ret string + return ret + } + return *o.ProviderName.Get() +} + +// GetProviderNameOk returns a tuple with the ProviderName field value if set, nil otherwise +// and a boolean to check if the value has been set. +// NOTE: If the value is an explicit nil, `nil, true` will be returned +func (o *LogoutURL) GetProviderNameOk() (*string, bool) { + if o == nil { + return nil, false + } + return o.ProviderName.Get(), o.ProviderName.IsSet() +} + +// HasProviderName returns a boolean if a field has been set. +func (o *LogoutURL) HasProviderName() bool { + if o != nil && o.ProviderName.IsSet() { + return true + } + + return false +} + +// SetProviderName gets a reference to the given NullableString and assigns it to the ProviderName field. +func (o *LogoutURL) SetProviderName(v string) { + o.ProviderName.Set(&v) +} + +// SetProviderNameNil sets the value for ProviderName to be an explicit nil +func (o *LogoutURL) SetProviderNameNil() { + o.ProviderName.Set(nil) +} + +// UnsetProviderName ensures that no value is present for ProviderName, not even an explicit nil +func (o *LogoutURL) UnsetProviderName() { + o.ProviderName.Unset() +} + +// GetBinding returns the Binding field value if set, zero value otherwise (both if not set or set to explicit null). +func (o *LogoutURL) GetBinding() string { + if o == nil || IsNil(o.Binding.Get()) { + var ret string + return ret + } + return *o.Binding.Get() +} + +// GetBindingOk returns a tuple with the Binding field value if set, nil otherwise +// and a boolean to check if the value has been set. +// NOTE: If the value is an explicit nil, `nil, true` will be returned +func (o *LogoutURL) GetBindingOk() (*string, bool) { + if o == nil { + return nil, false + } + return o.Binding.Get(), o.Binding.IsSet() +} + +// HasBinding returns a boolean if a field has been set. +func (o *LogoutURL) HasBinding() bool { + if o != nil && o.Binding.IsSet() { + return true + } + + return false +} + +// SetBinding gets a reference to the given NullableString and assigns it to the Binding field. +func (o *LogoutURL) SetBinding(v string) { + o.Binding.Set(&v) +} + +// SetBindingNil sets the value for Binding to be an explicit nil +func (o *LogoutURL) SetBindingNil() { + o.Binding.Set(nil) +} + +// UnsetBinding ensures that no value is present for Binding, not even an explicit nil +func (o *LogoutURL) UnsetBinding() { + o.Binding.Unset() +} + +// GetSamlRequest returns the SamlRequest field value if set, zero value otherwise (both if not set or set to explicit null). +func (o *LogoutURL) GetSamlRequest() string { + if o == nil || IsNil(o.SamlRequest.Get()) { + var ret string + return ret + } + return *o.SamlRequest.Get() +} + +// GetSamlRequestOk returns a tuple with the SamlRequest field value if set, nil otherwise +// and a boolean to check if the value has been set. +// NOTE: If the value is an explicit nil, `nil, true` will be returned +func (o *LogoutURL) GetSamlRequestOk() (*string, bool) { + if o == nil { + return nil, false + } + return o.SamlRequest.Get(), o.SamlRequest.IsSet() +} + +// HasSamlRequest returns a boolean if a field has been set. +func (o *LogoutURL) HasSamlRequest() bool { + if o != nil && o.SamlRequest.IsSet() { + return true + } + + return false +} + +// SetSamlRequest gets a reference to the given NullableString and assigns it to the SamlRequest field. +func (o *LogoutURL) SetSamlRequest(v string) { + o.SamlRequest.Set(&v) +} + +// SetSamlRequestNil sets the value for SamlRequest to be an explicit nil +func (o *LogoutURL) SetSamlRequestNil() { + o.SamlRequest.Set(nil) +} + +// UnsetSamlRequest ensures that no value is present for SamlRequest, not even an explicit nil +func (o *LogoutURL) UnsetSamlRequest() { + o.SamlRequest.Unset() +} + +// GetSamlResponse returns the SamlResponse field value if set, zero value otherwise (both if not set or set to explicit null). +func (o *LogoutURL) GetSamlResponse() string { + if o == nil || IsNil(o.SamlResponse.Get()) { + var ret string + return ret + } + return *o.SamlResponse.Get() +} + +// GetSamlResponseOk returns a tuple with the SamlResponse field value if set, nil otherwise +// and a boolean to check if the value has been set. +// NOTE: If the value is an explicit nil, `nil, true` will be returned +func (o *LogoutURL) GetSamlResponseOk() (*string, bool) { + if o == nil { + return nil, false + } + return o.SamlResponse.Get(), o.SamlResponse.IsSet() +} + +// HasSamlResponse returns a boolean if a field has been set. +func (o *LogoutURL) HasSamlResponse() bool { + if o != nil && o.SamlResponse.IsSet() { + return true + } + + return false +} + +// SetSamlResponse gets a reference to the given NullableString and assigns it to the SamlResponse field. +func (o *LogoutURL) SetSamlResponse(v string) { + o.SamlResponse.Set(&v) +} + +// SetSamlResponseNil sets the value for SamlResponse to be an explicit nil +func (o *LogoutURL) SetSamlResponseNil() { + o.SamlResponse.Set(nil) +} + +// UnsetSamlResponse ensures that no value is present for SamlResponse, not even an explicit nil +func (o *LogoutURL) UnsetSamlResponse() { + o.SamlResponse.Unset() +} + +// GetSamlRelayState returns the SamlRelayState field value if set, zero value otherwise (both if not set or set to explicit null). +func (o *LogoutURL) GetSamlRelayState() string { + if o == nil || IsNil(o.SamlRelayState.Get()) { + var ret string + return ret + } + return *o.SamlRelayState.Get() +} + +// GetSamlRelayStateOk returns a tuple with the SamlRelayState field value if set, nil otherwise +// and a boolean to check if the value has been set. +// NOTE: If the value is an explicit nil, `nil, true` will be returned +func (o *LogoutURL) GetSamlRelayStateOk() (*string, bool) { + if o == nil { + return nil, false + } + return o.SamlRelayState.Get(), o.SamlRelayState.IsSet() +} + +// HasSamlRelayState returns a boolean if a field has been set. +func (o *LogoutURL) HasSamlRelayState() bool { + if o != nil && o.SamlRelayState.IsSet() { + return true + } + + return false +} + +// SetSamlRelayState gets a reference to the given NullableString and assigns it to the SamlRelayState field. +func (o *LogoutURL) SetSamlRelayState(v string) { + o.SamlRelayState.Set(&v) +} + +// SetSamlRelayStateNil sets the value for SamlRelayState to be an explicit nil +func (o *LogoutURL) SetSamlRelayStateNil() { + o.SamlRelayState.Set(nil) +} + +// UnsetSamlRelayState ensures that no value is present for SamlRelayState, not even an explicit nil +func (o *LogoutURL) UnsetSamlRelayState() { + o.SamlRelayState.Unset() +} + +func (o LogoutURL) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o LogoutURL) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + toSerialize["url"] = o.Url + if o.ProviderName.IsSet() { + toSerialize["provider_name"] = o.ProviderName.Get() + } + if o.Binding.IsSet() { + toSerialize["binding"] = o.Binding.Get() + } + if o.SamlRequest.IsSet() { + toSerialize["saml_request"] = o.SamlRequest.Get() + } + if o.SamlResponse.IsSet() { + toSerialize["saml_response"] = o.SamlResponse.Get() + } + if o.SamlRelayState.IsSet() { + toSerialize["saml_relay_state"] = o.SamlRelayState.Get() + } + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *LogoutURL) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "url", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varLogoutURL := _LogoutURL{} + + err = json.Unmarshal(data, &varLogoutURL) + + if err != nil { + return err + } + + *o = LogoutURL(varLogoutURL) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "url") + delete(additionalProperties, "provider_name") + delete(additionalProperties, "binding") + delete(additionalProperties, "saml_request") + delete(additionalProperties, "saml_response") + delete(additionalProperties, "saml_relay_state") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableLogoutURL struct { + value *LogoutURL + isSet bool +} + +func (v NullableLogoutURL) Get() *LogoutURL { + return v.value +} + +func (v *NullableLogoutURL) Set(val *LogoutURL) { + v.value = val + v.isSet = true +} + +func (v NullableLogoutURL) IsSet() bool { + return v.isSet +} + +func (v *NullableLogoutURL) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableLogoutURL(val *LogoutURL) *NullableLogoutURL { + return &NullableLogoutURL{value: val, isSet: true} +} + +func (v NullableLogoutURL) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableLogoutURL) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_native_logout_challenge.go b/packages/client-go/model_native_logout_challenge.go new file mode 100644 index 0000000000..45c29e7e7f --- /dev/null +++ b/packages/client-go/model_native_logout_challenge.go @@ -0,0 +1,532 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" +) + +// checks if the NativeLogoutChallenge type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &NativeLogoutChallenge{} + +// NativeLogoutChallenge Challenge for native browser logout +type NativeLogoutChallenge struct { + FlowInfo *ContextualFlowInfo `json:"flow_info,omitempty"` + Component *string `json:"component,omitempty"` + ResponseErrors *map[string][]ErrorDetail `json:"response_errors,omitempty"` + ProviderName *string `json:"provider_name,omitempty"` + IsComplete *bool `json:"is_complete,omitempty"` + PostUrl *string `json:"post_url,omitempty"` + RedirectUrl *string `json:"redirect_url,omitempty"` + SamlBinding *SAMLBindingsEnum `json:"saml_binding,omitempty"` + SamlRequest *string `json:"saml_request,omitempty"` + SamlResponse *string `json:"saml_response,omitempty"` + SamlRelayState *string `json:"saml_relay_state,omitempty"` + AdditionalProperties map[string]interface{} +} + +type _NativeLogoutChallenge NativeLogoutChallenge + +// NewNativeLogoutChallenge instantiates a new NativeLogoutChallenge object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewNativeLogoutChallenge() *NativeLogoutChallenge { + this := NativeLogoutChallenge{} + var component string = "ak-provider-saml-native-logout" + this.Component = &component + var isComplete bool = false + this.IsComplete = &isComplete + return &this +} + +// NewNativeLogoutChallengeWithDefaults instantiates a new NativeLogoutChallenge object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewNativeLogoutChallengeWithDefaults() *NativeLogoutChallenge { + this := NativeLogoutChallenge{} + var component string = "ak-provider-saml-native-logout" + this.Component = &component + var isComplete bool = false + this.IsComplete = &isComplete + return &this +} + +// GetFlowInfo returns the FlowInfo field value if set, zero value otherwise. +func (o *NativeLogoutChallenge) GetFlowInfo() ContextualFlowInfo { + if o == nil || IsNil(o.FlowInfo) { + var ret ContextualFlowInfo + return ret + } + return *o.FlowInfo +} + +// GetFlowInfoOk returns a tuple with the FlowInfo field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *NativeLogoutChallenge) GetFlowInfoOk() (*ContextualFlowInfo, bool) { + if o == nil || IsNil(o.FlowInfo) { + return nil, false + } + return o.FlowInfo, true +} + +// HasFlowInfo returns a boolean if a field has been set. +func (o *NativeLogoutChallenge) HasFlowInfo() bool { + if o != nil && !IsNil(o.FlowInfo) { + return true + } + + return false +} + +// SetFlowInfo gets a reference to the given ContextualFlowInfo and assigns it to the FlowInfo field. +func (o *NativeLogoutChallenge) SetFlowInfo(v ContextualFlowInfo) { + o.FlowInfo = &v +} + +// GetComponent returns the Component field value if set, zero value otherwise. +func (o *NativeLogoutChallenge) GetComponent() string { + if o == nil || IsNil(o.Component) { + var ret string + return ret + } + return *o.Component +} + +// GetComponentOk returns a tuple with the Component field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *NativeLogoutChallenge) GetComponentOk() (*string, bool) { + if o == nil || IsNil(o.Component) { + return nil, false + } + return o.Component, true +} + +// HasComponent returns a boolean if a field has been set. +func (o *NativeLogoutChallenge) HasComponent() bool { + if o != nil && !IsNil(o.Component) { + return true + } + + return false +} + +// SetComponent gets a reference to the given string and assigns it to the Component field. +func (o *NativeLogoutChallenge) SetComponent(v string) { + o.Component = &v +} + +// GetResponseErrors returns the ResponseErrors field value if set, zero value otherwise. +func (o *NativeLogoutChallenge) GetResponseErrors() map[string][]ErrorDetail { + if o == nil || IsNil(o.ResponseErrors) { + var ret map[string][]ErrorDetail + return ret + } + return *o.ResponseErrors +} + +// GetResponseErrorsOk returns a tuple with the ResponseErrors field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *NativeLogoutChallenge) GetResponseErrorsOk() (*map[string][]ErrorDetail, bool) { + if o == nil || IsNil(o.ResponseErrors) { + return nil, false + } + return o.ResponseErrors, true +} + +// HasResponseErrors returns a boolean if a field has been set. +func (o *NativeLogoutChallenge) HasResponseErrors() bool { + if o != nil && !IsNil(o.ResponseErrors) { + return true + } + + return false +} + +// SetResponseErrors gets a reference to the given map[string][]ErrorDetail and assigns it to the ResponseErrors field. +func (o *NativeLogoutChallenge) SetResponseErrors(v map[string][]ErrorDetail) { + o.ResponseErrors = &v +} + +// GetProviderName returns the ProviderName field value if set, zero value otherwise. +func (o *NativeLogoutChallenge) GetProviderName() string { + if o == nil || IsNil(o.ProviderName) { + var ret string + return ret + } + return *o.ProviderName +} + +// GetProviderNameOk returns a tuple with the ProviderName field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *NativeLogoutChallenge) GetProviderNameOk() (*string, bool) { + if o == nil || IsNil(o.ProviderName) { + return nil, false + } + return o.ProviderName, true +} + +// HasProviderName returns a boolean if a field has been set. +func (o *NativeLogoutChallenge) HasProviderName() bool { + if o != nil && !IsNil(o.ProviderName) { + return true + } + + return false +} + +// SetProviderName gets a reference to the given string and assigns it to the ProviderName field. +func (o *NativeLogoutChallenge) SetProviderName(v string) { + o.ProviderName = &v +} + +// GetIsComplete returns the IsComplete field value if set, zero value otherwise. +func (o *NativeLogoutChallenge) GetIsComplete() bool { + if o == nil || IsNil(o.IsComplete) { + var ret bool + return ret + } + return *o.IsComplete +} + +// GetIsCompleteOk returns a tuple with the IsComplete field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *NativeLogoutChallenge) GetIsCompleteOk() (*bool, bool) { + if o == nil || IsNil(o.IsComplete) { + return nil, false + } + return o.IsComplete, true +} + +// HasIsComplete returns a boolean if a field has been set. +func (o *NativeLogoutChallenge) HasIsComplete() bool { + if o != nil && !IsNil(o.IsComplete) { + return true + } + + return false +} + +// SetIsComplete gets a reference to the given bool and assigns it to the IsComplete field. +func (o *NativeLogoutChallenge) SetIsComplete(v bool) { + o.IsComplete = &v +} + +// GetPostUrl returns the PostUrl field value if set, zero value otherwise. +func (o *NativeLogoutChallenge) GetPostUrl() string { + if o == nil || IsNil(o.PostUrl) { + var ret string + return ret + } + return *o.PostUrl +} + +// GetPostUrlOk returns a tuple with the PostUrl field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *NativeLogoutChallenge) GetPostUrlOk() (*string, bool) { + if o == nil || IsNil(o.PostUrl) { + return nil, false + } + return o.PostUrl, true +} + +// HasPostUrl returns a boolean if a field has been set. +func (o *NativeLogoutChallenge) HasPostUrl() bool { + if o != nil && !IsNil(o.PostUrl) { + return true + } + + return false +} + +// SetPostUrl gets a reference to the given string and assigns it to the PostUrl field. +func (o *NativeLogoutChallenge) SetPostUrl(v string) { + o.PostUrl = &v +} + +// GetRedirectUrl returns the RedirectUrl field value if set, zero value otherwise. +func (o *NativeLogoutChallenge) GetRedirectUrl() string { + if o == nil || IsNil(o.RedirectUrl) { + var ret string + return ret + } + return *o.RedirectUrl +} + +// GetRedirectUrlOk returns a tuple with the RedirectUrl field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *NativeLogoutChallenge) GetRedirectUrlOk() (*string, bool) { + if o == nil || IsNil(o.RedirectUrl) { + return nil, false + } + return o.RedirectUrl, true +} + +// HasRedirectUrl returns a boolean if a field has been set. +func (o *NativeLogoutChallenge) HasRedirectUrl() bool { + if o != nil && !IsNil(o.RedirectUrl) { + return true + } + + return false +} + +// SetRedirectUrl gets a reference to the given string and assigns it to the RedirectUrl field. +func (o *NativeLogoutChallenge) SetRedirectUrl(v string) { + o.RedirectUrl = &v +} + +// GetSamlBinding returns the SamlBinding field value if set, zero value otherwise. +func (o *NativeLogoutChallenge) GetSamlBinding() SAMLBindingsEnum { + if o == nil || IsNil(o.SamlBinding) { + var ret SAMLBindingsEnum + return ret + } + return *o.SamlBinding +} + +// GetSamlBindingOk returns a tuple with the SamlBinding field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *NativeLogoutChallenge) GetSamlBindingOk() (*SAMLBindingsEnum, bool) { + if o == nil || IsNil(o.SamlBinding) { + return nil, false + } + return o.SamlBinding, true +} + +// HasSamlBinding returns a boolean if a field has been set. +func (o *NativeLogoutChallenge) HasSamlBinding() bool { + if o != nil && !IsNil(o.SamlBinding) { + return true + } + + return false +} + +// SetSamlBinding gets a reference to the given SAMLBindingsEnum and assigns it to the SamlBinding field. +func (o *NativeLogoutChallenge) SetSamlBinding(v SAMLBindingsEnum) { + o.SamlBinding = &v +} + +// GetSamlRequest returns the SamlRequest field value if set, zero value otherwise. +func (o *NativeLogoutChallenge) GetSamlRequest() string { + if o == nil || IsNil(o.SamlRequest) { + var ret string + return ret + } + return *o.SamlRequest +} + +// GetSamlRequestOk returns a tuple with the SamlRequest field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *NativeLogoutChallenge) GetSamlRequestOk() (*string, bool) { + if o == nil || IsNil(o.SamlRequest) { + return nil, false + } + return o.SamlRequest, true +} + +// HasSamlRequest returns a boolean if a field has been set. +func (o *NativeLogoutChallenge) HasSamlRequest() bool { + if o != nil && !IsNil(o.SamlRequest) { + return true + } + + return false +} + +// SetSamlRequest gets a reference to the given string and assigns it to the SamlRequest field. +func (o *NativeLogoutChallenge) SetSamlRequest(v string) { + o.SamlRequest = &v +} + +// GetSamlResponse returns the SamlResponse field value if set, zero value otherwise. +func (o *NativeLogoutChallenge) GetSamlResponse() string { + if o == nil || IsNil(o.SamlResponse) { + var ret string + return ret + } + return *o.SamlResponse +} + +// GetSamlResponseOk returns a tuple with the SamlResponse field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *NativeLogoutChallenge) GetSamlResponseOk() (*string, bool) { + if o == nil || IsNil(o.SamlResponse) { + return nil, false + } + return o.SamlResponse, true +} + +// HasSamlResponse returns a boolean if a field has been set. +func (o *NativeLogoutChallenge) HasSamlResponse() bool { + if o != nil && !IsNil(o.SamlResponse) { + return true + } + + return false +} + +// SetSamlResponse gets a reference to the given string and assigns it to the SamlResponse field. +func (o *NativeLogoutChallenge) SetSamlResponse(v string) { + o.SamlResponse = &v +} + +// GetSamlRelayState returns the SamlRelayState field value if set, zero value otherwise. +func (o *NativeLogoutChallenge) GetSamlRelayState() string { + if o == nil || IsNil(o.SamlRelayState) { + var ret string + return ret + } + return *o.SamlRelayState +} + +// GetSamlRelayStateOk returns a tuple with the SamlRelayState field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *NativeLogoutChallenge) GetSamlRelayStateOk() (*string, bool) { + if o == nil || IsNil(o.SamlRelayState) { + return nil, false + } + return o.SamlRelayState, true +} + +// HasSamlRelayState returns a boolean if a field has been set. +func (o *NativeLogoutChallenge) HasSamlRelayState() bool { + if o != nil && !IsNil(o.SamlRelayState) { + return true + } + + return false +} + +// SetSamlRelayState gets a reference to the given string and assigns it to the SamlRelayState field. +func (o *NativeLogoutChallenge) SetSamlRelayState(v string) { + o.SamlRelayState = &v +} + +func (o NativeLogoutChallenge) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o NativeLogoutChallenge) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.FlowInfo) { + toSerialize["flow_info"] = o.FlowInfo + } + if !IsNil(o.Component) { + toSerialize["component"] = o.Component + } + if !IsNil(o.ResponseErrors) { + toSerialize["response_errors"] = o.ResponseErrors + } + if !IsNil(o.ProviderName) { + toSerialize["provider_name"] = o.ProviderName + } + if !IsNil(o.IsComplete) { + toSerialize["is_complete"] = o.IsComplete + } + if !IsNil(o.PostUrl) { + toSerialize["post_url"] = o.PostUrl + } + if !IsNil(o.RedirectUrl) { + toSerialize["redirect_url"] = o.RedirectUrl + } + if !IsNil(o.SamlBinding) { + toSerialize["saml_binding"] = o.SamlBinding + } + if !IsNil(o.SamlRequest) { + toSerialize["saml_request"] = o.SamlRequest + } + if !IsNil(o.SamlResponse) { + toSerialize["saml_response"] = o.SamlResponse + } + if !IsNil(o.SamlRelayState) { + toSerialize["saml_relay_state"] = o.SamlRelayState + } + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *NativeLogoutChallenge) UnmarshalJSON(data []byte) (err error) { + varNativeLogoutChallenge := _NativeLogoutChallenge{} + + err = json.Unmarshal(data, &varNativeLogoutChallenge) + + if err != nil { + return err + } + + *o = NativeLogoutChallenge(varNativeLogoutChallenge) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "flow_info") + delete(additionalProperties, "component") + delete(additionalProperties, "response_errors") + delete(additionalProperties, "provider_name") + delete(additionalProperties, "is_complete") + delete(additionalProperties, "post_url") + delete(additionalProperties, "redirect_url") + delete(additionalProperties, "saml_binding") + delete(additionalProperties, "saml_request") + delete(additionalProperties, "saml_response") + delete(additionalProperties, "saml_relay_state") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableNativeLogoutChallenge struct { + value *NativeLogoutChallenge + isSet bool +} + +func (v NullableNativeLogoutChallenge) Get() *NativeLogoutChallenge { + return v.value +} + +func (v *NullableNativeLogoutChallenge) Set(val *NativeLogoutChallenge) { + v.value = val + v.isSet = true +} + +func (v NullableNativeLogoutChallenge) IsSet() bool { + return v.isSet +} + +func (v *NullableNativeLogoutChallenge) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableNativeLogoutChallenge(val *NativeLogoutChallenge) *NullableNativeLogoutChallenge { + return &NullableNativeLogoutChallenge{value: val, isSet: true} +} + +func (v NullableNativeLogoutChallenge) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableNativeLogoutChallenge) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_native_logout_challenge_response_request.go b/packages/client-go/model_native_logout_challenge_response_request.go new file mode 100644 index 0000000000..6ba5c78002 --- /dev/null +++ b/packages/client-go/model_native_logout_challenge_response_request.go @@ -0,0 +1,158 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" +) + +// checks if the NativeLogoutChallengeResponseRequest type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &NativeLogoutChallengeResponseRequest{} + +// NativeLogoutChallengeResponseRequest Response for native browser logout +type NativeLogoutChallengeResponseRequest struct { + Component *string `json:"component,omitempty"` + AdditionalProperties map[string]interface{} +} + +type _NativeLogoutChallengeResponseRequest NativeLogoutChallengeResponseRequest + +// NewNativeLogoutChallengeResponseRequest instantiates a new NativeLogoutChallengeResponseRequest object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewNativeLogoutChallengeResponseRequest() *NativeLogoutChallengeResponseRequest { + this := NativeLogoutChallengeResponseRequest{} + var component string = "ak-provider-saml-native-logout" + this.Component = &component + return &this +} + +// NewNativeLogoutChallengeResponseRequestWithDefaults instantiates a new NativeLogoutChallengeResponseRequest object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewNativeLogoutChallengeResponseRequestWithDefaults() *NativeLogoutChallengeResponseRequest { + this := NativeLogoutChallengeResponseRequest{} + var component string = "ak-provider-saml-native-logout" + this.Component = &component + return &this +} + +// GetComponent returns the Component field value if set, zero value otherwise. +func (o *NativeLogoutChallengeResponseRequest) GetComponent() string { + if o == nil || IsNil(o.Component) { + var ret string + return ret + } + return *o.Component +} + +// GetComponentOk returns a tuple with the Component field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *NativeLogoutChallengeResponseRequest) GetComponentOk() (*string, bool) { + if o == nil || IsNil(o.Component) { + return nil, false + } + return o.Component, true +} + +// HasComponent returns a boolean if a field has been set. +func (o *NativeLogoutChallengeResponseRequest) HasComponent() bool { + if o != nil && !IsNil(o.Component) { + return true + } + + return false +} + +// SetComponent gets a reference to the given string and assigns it to the Component field. +func (o *NativeLogoutChallengeResponseRequest) SetComponent(v string) { + o.Component = &v +} + +func (o NativeLogoutChallengeResponseRequest) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o NativeLogoutChallengeResponseRequest) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.Component) { + toSerialize["component"] = o.Component + } + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *NativeLogoutChallengeResponseRequest) UnmarshalJSON(data []byte) (err error) { + varNativeLogoutChallengeResponseRequest := _NativeLogoutChallengeResponseRequest{} + + err = json.Unmarshal(data, &varNativeLogoutChallengeResponseRequest) + + if err != nil { + return err + } + + *o = NativeLogoutChallengeResponseRequest(varNativeLogoutChallengeResponseRequest) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "component") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableNativeLogoutChallengeResponseRequest struct { + value *NativeLogoutChallengeResponseRequest + isSet bool +} + +func (v NullableNativeLogoutChallengeResponseRequest) Get() *NativeLogoutChallengeResponseRequest { + return v.value +} + +func (v *NullableNativeLogoutChallengeResponseRequest) Set(val *NativeLogoutChallengeResponseRequest) { + v.value = val + v.isSet = true +} + +func (v NullableNativeLogoutChallengeResponseRequest) IsSet() bool { + return v.isSet +} + +func (v *NullableNativeLogoutChallengeResponseRequest) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableNativeLogoutChallengeResponseRequest(val *NativeLogoutChallengeResponseRequest) *NullableNativeLogoutChallengeResponseRequest { + return &NullableNativeLogoutChallengeResponseRequest{value: val, isSet: true} +} + +func (v NullableNativeLogoutChallengeResponseRequest) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableNativeLogoutChallengeResponseRequest) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_o_auth_device_code_challenge.go b/packages/client-go/model_o_auth_device_code_challenge.go new file mode 100644 index 0000000000..333f7f6605 --- /dev/null +++ b/packages/client-go/model_o_auth_device_code_challenge.go @@ -0,0 +1,232 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" +) + +// checks if the OAuthDeviceCodeChallenge type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &OAuthDeviceCodeChallenge{} + +// OAuthDeviceCodeChallenge OAuth Device code challenge +type OAuthDeviceCodeChallenge struct { + FlowInfo *ContextualFlowInfo `json:"flow_info,omitempty"` + Component *string `json:"component,omitempty"` + ResponseErrors *map[string][]ErrorDetail `json:"response_errors,omitempty"` + AdditionalProperties map[string]interface{} +} + +type _OAuthDeviceCodeChallenge OAuthDeviceCodeChallenge + +// NewOAuthDeviceCodeChallenge instantiates a new OAuthDeviceCodeChallenge object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewOAuthDeviceCodeChallenge() *OAuthDeviceCodeChallenge { + this := OAuthDeviceCodeChallenge{} + var component string = "ak-provider-oauth2-device-code" + this.Component = &component + return &this +} + +// NewOAuthDeviceCodeChallengeWithDefaults instantiates a new OAuthDeviceCodeChallenge object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewOAuthDeviceCodeChallengeWithDefaults() *OAuthDeviceCodeChallenge { + this := OAuthDeviceCodeChallenge{} + var component string = "ak-provider-oauth2-device-code" + this.Component = &component + return &this +} + +// GetFlowInfo returns the FlowInfo field value if set, zero value otherwise. +func (o *OAuthDeviceCodeChallenge) GetFlowInfo() ContextualFlowInfo { + if o == nil || IsNil(o.FlowInfo) { + var ret ContextualFlowInfo + return ret + } + return *o.FlowInfo +} + +// GetFlowInfoOk returns a tuple with the FlowInfo field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *OAuthDeviceCodeChallenge) GetFlowInfoOk() (*ContextualFlowInfo, bool) { + if o == nil || IsNil(o.FlowInfo) { + return nil, false + } + return o.FlowInfo, true +} + +// HasFlowInfo returns a boolean if a field has been set. +func (o *OAuthDeviceCodeChallenge) HasFlowInfo() bool { + if o != nil && !IsNil(o.FlowInfo) { + return true + } + + return false +} + +// SetFlowInfo gets a reference to the given ContextualFlowInfo and assigns it to the FlowInfo field. +func (o *OAuthDeviceCodeChallenge) SetFlowInfo(v ContextualFlowInfo) { + o.FlowInfo = &v +} + +// GetComponent returns the Component field value if set, zero value otherwise. +func (o *OAuthDeviceCodeChallenge) GetComponent() string { + if o == nil || IsNil(o.Component) { + var ret string + return ret + } + return *o.Component +} + +// GetComponentOk returns a tuple with the Component field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *OAuthDeviceCodeChallenge) GetComponentOk() (*string, bool) { + if o == nil || IsNil(o.Component) { + return nil, false + } + return o.Component, true +} + +// HasComponent returns a boolean if a field has been set. +func (o *OAuthDeviceCodeChallenge) HasComponent() bool { + if o != nil && !IsNil(o.Component) { + return true + } + + return false +} + +// SetComponent gets a reference to the given string and assigns it to the Component field. +func (o *OAuthDeviceCodeChallenge) SetComponent(v string) { + o.Component = &v +} + +// GetResponseErrors returns the ResponseErrors field value if set, zero value otherwise. +func (o *OAuthDeviceCodeChallenge) GetResponseErrors() map[string][]ErrorDetail { + if o == nil || IsNil(o.ResponseErrors) { + var ret map[string][]ErrorDetail + return ret + } + return *o.ResponseErrors +} + +// GetResponseErrorsOk returns a tuple with the ResponseErrors field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *OAuthDeviceCodeChallenge) GetResponseErrorsOk() (*map[string][]ErrorDetail, bool) { + if o == nil || IsNil(o.ResponseErrors) { + return nil, false + } + return o.ResponseErrors, true +} + +// HasResponseErrors returns a boolean if a field has been set. +func (o *OAuthDeviceCodeChallenge) HasResponseErrors() bool { + if o != nil && !IsNil(o.ResponseErrors) { + return true + } + + return false +} + +// SetResponseErrors gets a reference to the given map[string][]ErrorDetail and assigns it to the ResponseErrors field. +func (o *OAuthDeviceCodeChallenge) SetResponseErrors(v map[string][]ErrorDetail) { + o.ResponseErrors = &v +} + +func (o OAuthDeviceCodeChallenge) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o OAuthDeviceCodeChallenge) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.FlowInfo) { + toSerialize["flow_info"] = o.FlowInfo + } + if !IsNil(o.Component) { + toSerialize["component"] = o.Component + } + if !IsNil(o.ResponseErrors) { + toSerialize["response_errors"] = o.ResponseErrors + } + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *OAuthDeviceCodeChallenge) UnmarshalJSON(data []byte) (err error) { + varOAuthDeviceCodeChallenge := _OAuthDeviceCodeChallenge{} + + err = json.Unmarshal(data, &varOAuthDeviceCodeChallenge) + + if err != nil { + return err + } + + *o = OAuthDeviceCodeChallenge(varOAuthDeviceCodeChallenge) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "flow_info") + delete(additionalProperties, "component") + delete(additionalProperties, "response_errors") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableOAuthDeviceCodeChallenge struct { + value *OAuthDeviceCodeChallenge + isSet bool +} + +func (v NullableOAuthDeviceCodeChallenge) Get() *OAuthDeviceCodeChallenge { + return v.value +} + +func (v *NullableOAuthDeviceCodeChallenge) Set(val *OAuthDeviceCodeChallenge) { + v.value = val + v.isSet = true +} + +func (v NullableOAuthDeviceCodeChallenge) IsSet() bool { + return v.isSet +} + +func (v *NullableOAuthDeviceCodeChallenge) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableOAuthDeviceCodeChallenge(val *OAuthDeviceCodeChallenge) *NullableOAuthDeviceCodeChallenge { + return &NullableOAuthDeviceCodeChallenge{value: val, isSet: true} +} + +func (v NullableOAuthDeviceCodeChallenge) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableOAuthDeviceCodeChallenge) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_o_auth_device_code_challenge_response_request.go b/packages/client-go/model_o_auth_device_code_challenge_response_request.go new file mode 100644 index 0000000000..d94de3fbe2 --- /dev/null +++ b/packages/client-go/model_o_auth_device_code_challenge_response_request.go @@ -0,0 +1,208 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// checks if the OAuthDeviceCodeChallengeResponseRequest type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &OAuthDeviceCodeChallengeResponseRequest{} + +// OAuthDeviceCodeChallengeResponseRequest Response that includes the user-entered device code +type OAuthDeviceCodeChallengeResponseRequest struct { + Component *string `json:"component,omitempty"` + Code string `json:"code"` + AdditionalProperties map[string]interface{} +} + +type _OAuthDeviceCodeChallengeResponseRequest OAuthDeviceCodeChallengeResponseRequest + +// NewOAuthDeviceCodeChallengeResponseRequest instantiates a new OAuthDeviceCodeChallengeResponseRequest object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewOAuthDeviceCodeChallengeResponseRequest(code string) *OAuthDeviceCodeChallengeResponseRequest { + this := OAuthDeviceCodeChallengeResponseRequest{} + var component string = "ak-provider-oauth2-device-code" + this.Component = &component + this.Code = code + return &this +} + +// NewOAuthDeviceCodeChallengeResponseRequestWithDefaults instantiates a new OAuthDeviceCodeChallengeResponseRequest object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewOAuthDeviceCodeChallengeResponseRequestWithDefaults() *OAuthDeviceCodeChallengeResponseRequest { + this := OAuthDeviceCodeChallengeResponseRequest{} + var component string = "ak-provider-oauth2-device-code" + this.Component = &component + return &this +} + +// GetComponent returns the Component field value if set, zero value otherwise. +func (o *OAuthDeviceCodeChallengeResponseRequest) GetComponent() string { + if o == nil || IsNil(o.Component) { + var ret string + return ret + } + return *o.Component +} + +// GetComponentOk returns a tuple with the Component field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *OAuthDeviceCodeChallengeResponseRequest) GetComponentOk() (*string, bool) { + if o == nil || IsNil(o.Component) { + return nil, false + } + return o.Component, true +} + +// HasComponent returns a boolean if a field has been set. +func (o *OAuthDeviceCodeChallengeResponseRequest) HasComponent() bool { + if o != nil && !IsNil(o.Component) { + return true + } + + return false +} + +// SetComponent gets a reference to the given string and assigns it to the Component field. +func (o *OAuthDeviceCodeChallengeResponseRequest) SetComponent(v string) { + o.Component = &v +} + +// GetCode returns the Code field value +func (o *OAuthDeviceCodeChallengeResponseRequest) GetCode() string { + if o == nil { + var ret string + return ret + } + + return o.Code +} + +// GetCodeOk returns a tuple with the Code field value +// and a boolean to check if the value has been set. +func (o *OAuthDeviceCodeChallengeResponseRequest) GetCodeOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Code, true +} + +// SetCode sets field value +func (o *OAuthDeviceCodeChallengeResponseRequest) SetCode(v string) { + o.Code = v +} + +func (o OAuthDeviceCodeChallengeResponseRequest) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o OAuthDeviceCodeChallengeResponseRequest) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.Component) { + toSerialize["component"] = o.Component + } + toSerialize["code"] = o.Code + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *OAuthDeviceCodeChallengeResponseRequest) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "code", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varOAuthDeviceCodeChallengeResponseRequest := _OAuthDeviceCodeChallengeResponseRequest{} + + err = json.Unmarshal(data, &varOAuthDeviceCodeChallengeResponseRequest) + + if err != nil { + return err + } + + *o = OAuthDeviceCodeChallengeResponseRequest(varOAuthDeviceCodeChallengeResponseRequest) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "component") + delete(additionalProperties, "code") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableOAuthDeviceCodeChallengeResponseRequest struct { + value *OAuthDeviceCodeChallengeResponseRequest + isSet bool +} + +func (v NullableOAuthDeviceCodeChallengeResponseRequest) Get() *OAuthDeviceCodeChallengeResponseRequest { + return v.value +} + +func (v *NullableOAuthDeviceCodeChallengeResponseRequest) Set(val *OAuthDeviceCodeChallengeResponseRequest) { + v.value = val + v.isSet = true +} + +func (v NullableOAuthDeviceCodeChallengeResponseRequest) IsSet() bool { + return v.isSet +} + +func (v *NullableOAuthDeviceCodeChallengeResponseRequest) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableOAuthDeviceCodeChallengeResponseRequest(val *OAuthDeviceCodeChallengeResponseRequest) *NullableOAuthDeviceCodeChallengeResponseRequest { + return &NullableOAuthDeviceCodeChallengeResponseRequest{value: val, isSet: true} +} + +func (v NullableOAuthDeviceCodeChallengeResponseRequest) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableOAuthDeviceCodeChallengeResponseRequest) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_o_auth_device_code_finish_challenge.go b/packages/client-go/model_o_auth_device_code_finish_challenge.go new file mode 100644 index 0000000000..f22a2d5039 --- /dev/null +++ b/packages/client-go/model_o_auth_device_code_finish_challenge.go @@ -0,0 +1,232 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" +) + +// checks if the OAuthDeviceCodeFinishChallenge type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &OAuthDeviceCodeFinishChallenge{} + +// OAuthDeviceCodeFinishChallenge Final challenge after user enters their code +type OAuthDeviceCodeFinishChallenge struct { + FlowInfo *ContextualFlowInfo `json:"flow_info,omitempty"` + Component *string `json:"component,omitempty"` + ResponseErrors *map[string][]ErrorDetail `json:"response_errors,omitempty"` + AdditionalProperties map[string]interface{} +} + +type _OAuthDeviceCodeFinishChallenge OAuthDeviceCodeFinishChallenge + +// NewOAuthDeviceCodeFinishChallenge instantiates a new OAuthDeviceCodeFinishChallenge object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewOAuthDeviceCodeFinishChallenge() *OAuthDeviceCodeFinishChallenge { + this := OAuthDeviceCodeFinishChallenge{} + var component string = "ak-provider-oauth2-device-code-finish" + this.Component = &component + return &this +} + +// NewOAuthDeviceCodeFinishChallengeWithDefaults instantiates a new OAuthDeviceCodeFinishChallenge object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewOAuthDeviceCodeFinishChallengeWithDefaults() *OAuthDeviceCodeFinishChallenge { + this := OAuthDeviceCodeFinishChallenge{} + var component string = "ak-provider-oauth2-device-code-finish" + this.Component = &component + return &this +} + +// GetFlowInfo returns the FlowInfo field value if set, zero value otherwise. +func (o *OAuthDeviceCodeFinishChallenge) GetFlowInfo() ContextualFlowInfo { + if o == nil || IsNil(o.FlowInfo) { + var ret ContextualFlowInfo + return ret + } + return *o.FlowInfo +} + +// GetFlowInfoOk returns a tuple with the FlowInfo field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *OAuthDeviceCodeFinishChallenge) GetFlowInfoOk() (*ContextualFlowInfo, bool) { + if o == nil || IsNil(o.FlowInfo) { + return nil, false + } + return o.FlowInfo, true +} + +// HasFlowInfo returns a boolean if a field has been set. +func (o *OAuthDeviceCodeFinishChallenge) HasFlowInfo() bool { + if o != nil && !IsNil(o.FlowInfo) { + return true + } + + return false +} + +// SetFlowInfo gets a reference to the given ContextualFlowInfo and assigns it to the FlowInfo field. +func (o *OAuthDeviceCodeFinishChallenge) SetFlowInfo(v ContextualFlowInfo) { + o.FlowInfo = &v +} + +// GetComponent returns the Component field value if set, zero value otherwise. +func (o *OAuthDeviceCodeFinishChallenge) GetComponent() string { + if o == nil || IsNil(o.Component) { + var ret string + return ret + } + return *o.Component +} + +// GetComponentOk returns a tuple with the Component field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *OAuthDeviceCodeFinishChallenge) GetComponentOk() (*string, bool) { + if o == nil || IsNil(o.Component) { + return nil, false + } + return o.Component, true +} + +// HasComponent returns a boolean if a field has been set. +func (o *OAuthDeviceCodeFinishChallenge) HasComponent() bool { + if o != nil && !IsNil(o.Component) { + return true + } + + return false +} + +// SetComponent gets a reference to the given string and assigns it to the Component field. +func (o *OAuthDeviceCodeFinishChallenge) SetComponent(v string) { + o.Component = &v +} + +// GetResponseErrors returns the ResponseErrors field value if set, zero value otherwise. +func (o *OAuthDeviceCodeFinishChallenge) GetResponseErrors() map[string][]ErrorDetail { + if o == nil || IsNil(o.ResponseErrors) { + var ret map[string][]ErrorDetail + return ret + } + return *o.ResponseErrors +} + +// GetResponseErrorsOk returns a tuple with the ResponseErrors field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *OAuthDeviceCodeFinishChallenge) GetResponseErrorsOk() (*map[string][]ErrorDetail, bool) { + if o == nil || IsNil(o.ResponseErrors) { + return nil, false + } + return o.ResponseErrors, true +} + +// HasResponseErrors returns a boolean if a field has been set. +func (o *OAuthDeviceCodeFinishChallenge) HasResponseErrors() bool { + if o != nil && !IsNil(o.ResponseErrors) { + return true + } + + return false +} + +// SetResponseErrors gets a reference to the given map[string][]ErrorDetail and assigns it to the ResponseErrors field. +func (o *OAuthDeviceCodeFinishChallenge) SetResponseErrors(v map[string][]ErrorDetail) { + o.ResponseErrors = &v +} + +func (o OAuthDeviceCodeFinishChallenge) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o OAuthDeviceCodeFinishChallenge) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.FlowInfo) { + toSerialize["flow_info"] = o.FlowInfo + } + if !IsNil(o.Component) { + toSerialize["component"] = o.Component + } + if !IsNil(o.ResponseErrors) { + toSerialize["response_errors"] = o.ResponseErrors + } + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *OAuthDeviceCodeFinishChallenge) UnmarshalJSON(data []byte) (err error) { + varOAuthDeviceCodeFinishChallenge := _OAuthDeviceCodeFinishChallenge{} + + err = json.Unmarshal(data, &varOAuthDeviceCodeFinishChallenge) + + if err != nil { + return err + } + + *o = OAuthDeviceCodeFinishChallenge(varOAuthDeviceCodeFinishChallenge) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "flow_info") + delete(additionalProperties, "component") + delete(additionalProperties, "response_errors") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableOAuthDeviceCodeFinishChallenge struct { + value *OAuthDeviceCodeFinishChallenge + isSet bool +} + +func (v NullableOAuthDeviceCodeFinishChallenge) Get() *OAuthDeviceCodeFinishChallenge { + return v.value +} + +func (v *NullableOAuthDeviceCodeFinishChallenge) Set(val *OAuthDeviceCodeFinishChallenge) { + v.value = val + v.isSet = true +} + +func (v NullableOAuthDeviceCodeFinishChallenge) IsSet() bool { + return v.isSet +} + +func (v *NullableOAuthDeviceCodeFinishChallenge) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableOAuthDeviceCodeFinishChallenge(val *OAuthDeviceCodeFinishChallenge) *NullableOAuthDeviceCodeFinishChallenge { + return &NullableOAuthDeviceCodeFinishChallenge{value: val, isSet: true} +} + +func (v NullableOAuthDeviceCodeFinishChallenge) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableOAuthDeviceCodeFinishChallenge) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_o_auth_device_code_finish_challenge_response_request.go b/packages/client-go/model_o_auth_device_code_finish_challenge_response_request.go new file mode 100644 index 0000000000..afe750d406 --- /dev/null +++ b/packages/client-go/model_o_auth_device_code_finish_challenge_response_request.go @@ -0,0 +1,158 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" +) + +// checks if the OAuthDeviceCodeFinishChallengeResponseRequest type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &OAuthDeviceCodeFinishChallengeResponseRequest{} + +// OAuthDeviceCodeFinishChallengeResponseRequest Response that device has been authenticated and tab can be closed +type OAuthDeviceCodeFinishChallengeResponseRequest struct { + Component *string `json:"component,omitempty"` + AdditionalProperties map[string]interface{} +} + +type _OAuthDeviceCodeFinishChallengeResponseRequest OAuthDeviceCodeFinishChallengeResponseRequest + +// NewOAuthDeviceCodeFinishChallengeResponseRequest instantiates a new OAuthDeviceCodeFinishChallengeResponseRequest object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewOAuthDeviceCodeFinishChallengeResponseRequest() *OAuthDeviceCodeFinishChallengeResponseRequest { + this := OAuthDeviceCodeFinishChallengeResponseRequest{} + var component string = "ak-provider-oauth2-device-code-finish" + this.Component = &component + return &this +} + +// NewOAuthDeviceCodeFinishChallengeResponseRequestWithDefaults instantiates a new OAuthDeviceCodeFinishChallengeResponseRequest object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewOAuthDeviceCodeFinishChallengeResponseRequestWithDefaults() *OAuthDeviceCodeFinishChallengeResponseRequest { + this := OAuthDeviceCodeFinishChallengeResponseRequest{} + var component string = "ak-provider-oauth2-device-code-finish" + this.Component = &component + return &this +} + +// GetComponent returns the Component field value if set, zero value otherwise. +func (o *OAuthDeviceCodeFinishChallengeResponseRequest) GetComponent() string { + if o == nil || IsNil(o.Component) { + var ret string + return ret + } + return *o.Component +} + +// GetComponentOk returns a tuple with the Component field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *OAuthDeviceCodeFinishChallengeResponseRequest) GetComponentOk() (*string, bool) { + if o == nil || IsNil(o.Component) { + return nil, false + } + return o.Component, true +} + +// HasComponent returns a boolean if a field has been set. +func (o *OAuthDeviceCodeFinishChallengeResponseRequest) HasComponent() bool { + if o != nil && !IsNil(o.Component) { + return true + } + + return false +} + +// SetComponent gets a reference to the given string and assigns it to the Component field. +func (o *OAuthDeviceCodeFinishChallengeResponseRequest) SetComponent(v string) { + o.Component = &v +} + +func (o OAuthDeviceCodeFinishChallengeResponseRequest) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o OAuthDeviceCodeFinishChallengeResponseRequest) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.Component) { + toSerialize["component"] = o.Component + } + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *OAuthDeviceCodeFinishChallengeResponseRequest) UnmarshalJSON(data []byte) (err error) { + varOAuthDeviceCodeFinishChallengeResponseRequest := _OAuthDeviceCodeFinishChallengeResponseRequest{} + + err = json.Unmarshal(data, &varOAuthDeviceCodeFinishChallengeResponseRequest) + + if err != nil { + return err + } + + *o = OAuthDeviceCodeFinishChallengeResponseRequest(varOAuthDeviceCodeFinishChallengeResponseRequest) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "component") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableOAuthDeviceCodeFinishChallengeResponseRequest struct { + value *OAuthDeviceCodeFinishChallengeResponseRequest + isSet bool +} + +func (v NullableOAuthDeviceCodeFinishChallengeResponseRequest) Get() *OAuthDeviceCodeFinishChallengeResponseRequest { + return v.value +} + +func (v *NullableOAuthDeviceCodeFinishChallengeResponseRequest) Set(val *OAuthDeviceCodeFinishChallengeResponseRequest) { + v.value = val + v.isSet = true +} + +func (v NullableOAuthDeviceCodeFinishChallengeResponseRequest) IsSet() bool { + return v.isSet +} + +func (v *NullableOAuthDeviceCodeFinishChallengeResponseRequest) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableOAuthDeviceCodeFinishChallengeResponseRequest(val *OAuthDeviceCodeFinishChallengeResponseRequest) *NullableOAuthDeviceCodeFinishChallengeResponseRequest { + return &NullableOAuthDeviceCodeFinishChallengeResponseRequest{value: val, isSet: true} +} + +func (v NullableOAuthDeviceCodeFinishChallengeResponseRequest) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableOAuthDeviceCodeFinishChallengeResponseRequest) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_open_id_connect_configuration.go b/packages/client-go/model_open_id_connect_configuration.go new file mode 100644 index 0000000000..06adfd4644 --- /dev/null +++ b/packages/client-go/model_open_id_connect_configuration.go @@ -0,0 +1,457 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// checks if the OpenIDConnectConfiguration type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &OpenIDConnectConfiguration{} + +// OpenIDConnectConfiguration rest_framework Serializer for OIDC Configuration +type OpenIDConnectConfiguration struct { + Issuer string `json:"issuer"` + AuthorizationEndpoint string `json:"authorization_endpoint"` + TokenEndpoint string `json:"token_endpoint"` + UserinfoEndpoint string `json:"userinfo_endpoint"` + EndSessionEndpoint string `json:"end_session_endpoint"` + IntrospectionEndpoint string `json:"introspection_endpoint"` + JwksUri string `json:"jwks_uri"` + ResponseTypesSupported []string `json:"response_types_supported"` + IdTokenSigningAlgValuesSupported []string `json:"id_token_signing_alg_values_supported"` + SubjectTypesSupported []string `json:"subject_types_supported"` + TokenEndpointAuthMethodsSupported []string `json:"token_endpoint_auth_methods_supported"` + AdditionalProperties map[string]interface{} +} + +type _OpenIDConnectConfiguration OpenIDConnectConfiguration + +// NewOpenIDConnectConfiguration instantiates a new OpenIDConnectConfiguration object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewOpenIDConnectConfiguration(issuer string, authorizationEndpoint string, tokenEndpoint string, userinfoEndpoint string, endSessionEndpoint string, introspectionEndpoint string, jwksUri string, responseTypesSupported []string, idTokenSigningAlgValuesSupported []string, subjectTypesSupported []string, tokenEndpointAuthMethodsSupported []string) *OpenIDConnectConfiguration { + this := OpenIDConnectConfiguration{} + this.Issuer = issuer + this.AuthorizationEndpoint = authorizationEndpoint + this.TokenEndpoint = tokenEndpoint + this.UserinfoEndpoint = userinfoEndpoint + this.EndSessionEndpoint = endSessionEndpoint + this.IntrospectionEndpoint = introspectionEndpoint + this.JwksUri = jwksUri + this.ResponseTypesSupported = responseTypesSupported + this.IdTokenSigningAlgValuesSupported = idTokenSigningAlgValuesSupported + this.SubjectTypesSupported = subjectTypesSupported + this.TokenEndpointAuthMethodsSupported = tokenEndpointAuthMethodsSupported + return &this +} + +// NewOpenIDConnectConfigurationWithDefaults instantiates a new OpenIDConnectConfiguration object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewOpenIDConnectConfigurationWithDefaults() *OpenIDConnectConfiguration { + this := OpenIDConnectConfiguration{} + return &this +} + +// GetIssuer returns the Issuer field value +func (o *OpenIDConnectConfiguration) GetIssuer() string { + if o == nil { + var ret string + return ret + } + + return o.Issuer +} + +// GetIssuerOk returns a tuple with the Issuer field value +// and a boolean to check if the value has been set. +func (o *OpenIDConnectConfiguration) GetIssuerOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Issuer, true +} + +// SetIssuer sets field value +func (o *OpenIDConnectConfiguration) SetIssuer(v string) { + o.Issuer = v +} + +// GetAuthorizationEndpoint returns the AuthorizationEndpoint field value +func (o *OpenIDConnectConfiguration) GetAuthorizationEndpoint() string { + if o == nil { + var ret string + return ret + } + + return o.AuthorizationEndpoint +} + +// GetAuthorizationEndpointOk returns a tuple with the AuthorizationEndpoint field value +// and a boolean to check if the value has been set. +func (o *OpenIDConnectConfiguration) GetAuthorizationEndpointOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.AuthorizationEndpoint, true +} + +// SetAuthorizationEndpoint sets field value +func (o *OpenIDConnectConfiguration) SetAuthorizationEndpoint(v string) { + o.AuthorizationEndpoint = v +} + +// GetTokenEndpoint returns the TokenEndpoint field value +func (o *OpenIDConnectConfiguration) GetTokenEndpoint() string { + if o == nil { + var ret string + return ret + } + + return o.TokenEndpoint +} + +// GetTokenEndpointOk returns a tuple with the TokenEndpoint field value +// and a boolean to check if the value has been set. +func (o *OpenIDConnectConfiguration) GetTokenEndpointOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.TokenEndpoint, true +} + +// SetTokenEndpoint sets field value +func (o *OpenIDConnectConfiguration) SetTokenEndpoint(v string) { + o.TokenEndpoint = v +} + +// GetUserinfoEndpoint returns the UserinfoEndpoint field value +func (o *OpenIDConnectConfiguration) GetUserinfoEndpoint() string { + if o == nil { + var ret string + return ret + } + + return o.UserinfoEndpoint +} + +// GetUserinfoEndpointOk returns a tuple with the UserinfoEndpoint field value +// and a boolean to check if the value has been set. +func (o *OpenIDConnectConfiguration) GetUserinfoEndpointOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.UserinfoEndpoint, true +} + +// SetUserinfoEndpoint sets field value +func (o *OpenIDConnectConfiguration) SetUserinfoEndpoint(v string) { + o.UserinfoEndpoint = v +} + +// GetEndSessionEndpoint returns the EndSessionEndpoint field value +func (o *OpenIDConnectConfiguration) GetEndSessionEndpoint() string { + if o == nil { + var ret string + return ret + } + + return o.EndSessionEndpoint +} + +// GetEndSessionEndpointOk returns a tuple with the EndSessionEndpoint field value +// and a boolean to check if the value has been set. +func (o *OpenIDConnectConfiguration) GetEndSessionEndpointOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.EndSessionEndpoint, true +} + +// SetEndSessionEndpoint sets field value +func (o *OpenIDConnectConfiguration) SetEndSessionEndpoint(v string) { + o.EndSessionEndpoint = v +} + +// GetIntrospectionEndpoint returns the IntrospectionEndpoint field value +func (o *OpenIDConnectConfiguration) GetIntrospectionEndpoint() string { + if o == nil { + var ret string + return ret + } + + return o.IntrospectionEndpoint +} + +// GetIntrospectionEndpointOk returns a tuple with the IntrospectionEndpoint field value +// and a boolean to check if the value has been set. +func (o *OpenIDConnectConfiguration) GetIntrospectionEndpointOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.IntrospectionEndpoint, true +} + +// SetIntrospectionEndpoint sets field value +func (o *OpenIDConnectConfiguration) SetIntrospectionEndpoint(v string) { + o.IntrospectionEndpoint = v +} + +// GetJwksUri returns the JwksUri field value +func (o *OpenIDConnectConfiguration) GetJwksUri() string { + if o == nil { + var ret string + return ret + } + + return o.JwksUri +} + +// GetJwksUriOk returns a tuple with the JwksUri field value +// and a boolean to check if the value has been set. +func (o *OpenIDConnectConfiguration) GetJwksUriOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.JwksUri, true +} + +// SetJwksUri sets field value +func (o *OpenIDConnectConfiguration) SetJwksUri(v string) { + o.JwksUri = v +} + +// GetResponseTypesSupported returns the ResponseTypesSupported field value +func (o *OpenIDConnectConfiguration) GetResponseTypesSupported() []string { + if o == nil { + var ret []string + return ret + } + + return o.ResponseTypesSupported +} + +// GetResponseTypesSupportedOk returns a tuple with the ResponseTypesSupported field value +// and a boolean to check if the value has been set. +func (o *OpenIDConnectConfiguration) GetResponseTypesSupportedOk() ([]string, bool) { + if o == nil { + return nil, false + } + return o.ResponseTypesSupported, true +} + +// SetResponseTypesSupported sets field value +func (o *OpenIDConnectConfiguration) SetResponseTypesSupported(v []string) { + o.ResponseTypesSupported = v +} + +// GetIdTokenSigningAlgValuesSupported returns the IdTokenSigningAlgValuesSupported field value +func (o *OpenIDConnectConfiguration) GetIdTokenSigningAlgValuesSupported() []string { + if o == nil { + var ret []string + return ret + } + + return o.IdTokenSigningAlgValuesSupported +} + +// GetIdTokenSigningAlgValuesSupportedOk returns a tuple with the IdTokenSigningAlgValuesSupported field value +// and a boolean to check if the value has been set. +func (o *OpenIDConnectConfiguration) GetIdTokenSigningAlgValuesSupportedOk() ([]string, bool) { + if o == nil { + return nil, false + } + return o.IdTokenSigningAlgValuesSupported, true +} + +// SetIdTokenSigningAlgValuesSupported sets field value +func (o *OpenIDConnectConfiguration) SetIdTokenSigningAlgValuesSupported(v []string) { + o.IdTokenSigningAlgValuesSupported = v +} + +// GetSubjectTypesSupported returns the SubjectTypesSupported field value +func (o *OpenIDConnectConfiguration) GetSubjectTypesSupported() []string { + if o == nil { + var ret []string + return ret + } + + return o.SubjectTypesSupported +} + +// GetSubjectTypesSupportedOk returns a tuple with the SubjectTypesSupported field value +// and a boolean to check if the value has been set. +func (o *OpenIDConnectConfiguration) GetSubjectTypesSupportedOk() ([]string, bool) { + if o == nil { + return nil, false + } + return o.SubjectTypesSupported, true +} + +// SetSubjectTypesSupported sets field value +func (o *OpenIDConnectConfiguration) SetSubjectTypesSupported(v []string) { + o.SubjectTypesSupported = v +} + +// GetTokenEndpointAuthMethodsSupported returns the TokenEndpointAuthMethodsSupported field value +func (o *OpenIDConnectConfiguration) GetTokenEndpointAuthMethodsSupported() []string { + if o == nil { + var ret []string + return ret + } + + return o.TokenEndpointAuthMethodsSupported +} + +// GetTokenEndpointAuthMethodsSupportedOk returns a tuple with the TokenEndpointAuthMethodsSupported field value +// and a boolean to check if the value has been set. +func (o *OpenIDConnectConfiguration) GetTokenEndpointAuthMethodsSupportedOk() ([]string, bool) { + if o == nil { + return nil, false + } + return o.TokenEndpointAuthMethodsSupported, true +} + +// SetTokenEndpointAuthMethodsSupported sets field value +func (o *OpenIDConnectConfiguration) SetTokenEndpointAuthMethodsSupported(v []string) { + o.TokenEndpointAuthMethodsSupported = v +} + +func (o OpenIDConnectConfiguration) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o OpenIDConnectConfiguration) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + toSerialize["issuer"] = o.Issuer + toSerialize["authorization_endpoint"] = o.AuthorizationEndpoint + toSerialize["token_endpoint"] = o.TokenEndpoint + toSerialize["userinfo_endpoint"] = o.UserinfoEndpoint + toSerialize["end_session_endpoint"] = o.EndSessionEndpoint + toSerialize["introspection_endpoint"] = o.IntrospectionEndpoint + toSerialize["jwks_uri"] = o.JwksUri + toSerialize["response_types_supported"] = o.ResponseTypesSupported + toSerialize["id_token_signing_alg_values_supported"] = o.IdTokenSigningAlgValuesSupported + toSerialize["subject_types_supported"] = o.SubjectTypesSupported + toSerialize["token_endpoint_auth_methods_supported"] = o.TokenEndpointAuthMethodsSupported + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *OpenIDConnectConfiguration) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "issuer", + "authorization_endpoint", + "token_endpoint", + "userinfo_endpoint", + "end_session_endpoint", + "introspection_endpoint", + "jwks_uri", + "response_types_supported", + "id_token_signing_alg_values_supported", + "subject_types_supported", + "token_endpoint_auth_methods_supported", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varOpenIDConnectConfiguration := _OpenIDConnectConfiguration{} + + err = json.Unmarshal(data, &varOpenIDConnectConfiguration) + + if err != nil { + return err + } + + *o = OpenIDConnectConfiguration(varOpenIDConnectConfiguration) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "issuer") + delete(additionalProperties, "authorization_endpoint") + delete(additionalProperties, "token_endpoint") + delete(additionalProperties, "userinfo_endpoint") + delete(additionalProperties, "end_session_endpoint") + delete(additionalProperties, "introspection_endpoint") + delete(additionalProperties, "jwks_uri") + delete(additionalProperties, "response_types_supported") + delete(additionalProperties, "id_token_signing_alg_values_supported") + delete(additionalProperties, "subject_types_supported") + delete(additionalProperties, "token_endpoint_auth_methods_supported") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableOpenIDConnectConfiguration struct { + value *OpenIDConnectConfiguration + isSet bool +} + +func (v NullableOpenIDConnectConfiguration) Get() *OpenIDConnectConfiguration { + return v.value +} + +func (v *NullableOpenIDConnectConfiguration) Set(val *OpenIDConnectConfiguration) { + v.value = val + v.isSet = true +} + +func (v NullableOpenIDConnectConfiguration) IsSet() bool { + return v.isSet +} + +func (v *NullableOpenIDConnectConfiguration) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableOpenIDConnectConfiguration(val *OpenIDConnectConfiguration) *NullableOpenIDConnectConfiguration { + return &NullableOpenIDConnectConfiguration{value: val, isSet: true} +} + +func (v NullableOpenIDConnectConfiguration) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableOpenIDConnectConfiguration) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_outpost.go b/packages/client-go/model_outpost.go new file mode 100644 index 0000000000..d7e2d525b7 --- /dev/null +++ b/packages/client-go/model_outpost.go @@ -0,0 +1,500 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// checks if the Outpost type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &Outpost{} + +// Outpost Outpost Serializer +type Outpost struct { + Pk string `json:"pk"` + Name string `json:"name"` + Type OutpostTypeEnum `json:"type"` + Providers []int32 `json:"providers"` + ProvidersObj []Provider `json:"providers_obj"` + // Select Service-Connection authentik should use to manage this outpost. Leave empty if authentik should not handle the deployment. + ServiceConnection NullableString `json:"service_connection,omitempty"` + ServiceConnectionObj NullableServiceConnection `json:"service_connection_obj"` + RefreshIntervalS int32 `json:"refresh_interval_s"` + // Get Token identifier + TokenIdentifier string `json:"token_identifier"` + Config map[string]interface{} `json:"config"` + // Objects that are managed by authentik. These objects are created and updated automatically. This flag only indicates that an object can be overwritten by migrations. You can still modify the objects via the API, but expect changes to be overwritten in a later update. + Managed NullableString `json:"managed,omitempty"` + AdditionalProperties map[string]interface{} +} + +type _Outpost Outpost + +// NewOutpost instantiates a new Outpost object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewOutpost(pk string, name string, type_ OutpostTypeEnum, providers []int32, providersObj []Provider, serviceConnectionObj NullableServiceConnection, refreshIntervalS int32, tokenIdentifier string, config map[string]interface{}) *Outpost { + this := Outpost{} + this.Pk = pk + this.Name = name + this.Type = type_ + this.Providers = providers + this.ProvidersObj = providersObj + this.ServiceConnectionObj = serviceConnectionObj + this.RefreshIntervalS = refreshIntervalS + this.TokenIdentifier = tokenIdentifier + this.Config = config + return &this +} + +// NewOutpostWithDefaults instantiates a new Outpost object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewOutpostWithDefaults() *Outpost { + this := Outpost{} + return &this +} + +// GetPk returns the Pk field value +func (o *Outpost) GetPk() string { + if o == nil { + var ret string + return ret + } + + return o.Pk +} + +// GetPkOk returns a tuple with the Pk field value +// and a boolean to check if the value has been set. +func (o *Outpost) GetPkOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Pk, true +} + +// SetPk sets field value +func (o *Outpost) SetPk(v string) { + o.Pk = v +} + +// GetName returns the Name field value +func (o *Outpost) GetName() string { + if o == nil { + var ret string + return ret + } + + return o.Name +} + +// GetNameOk returns a tuple with the Name field value +// and a boolean to check if the value has been set. +func (o *Outpost) GetNameOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Name, true +} + +// SetName sets field value +func (o *Outpost) SetName(v string) { + o.Name = v +} + +// GetType returns the Type field value +func (o *Outpost) GetType() OutpostTypeEnum { + if o == nil { + var ret OutpostTypeEnum + return ret + } + + return o.Type +} + +// GetTypeOk returns a tuple with the Type field value +// and a boolean to check if the value has been set. +func (o *Outpost) GetTypeOk() (*OutpostTypeEnum, bool) { + if o == nil { + return nil, false + } + return &o.Type, true +} + +// SetType sets field value +func (o *Outpost) SetType(v OutpostTypeEnum) { + o.Type = v +} + +// GetProviders returns the Providers field value +func (o *Outpost) GetProviders() []int32 { + if o == nil { + var ret []int32 + return ret + } + + return o.Providers +} + +// GetProvidersOk returns a tuple with the Providers field value +// and a boolean to check if the value has been set. +func (o *Outpost) GetProvidersOk() ([]int32, bool) { + if o == nil { + return nil, false + } + return o.Providers, true +} + +// SetProviders sets field value +func (o *Outpost) SetProviders(v []int32) { + o.Providers = v +} + +// GetProvidersObj returns the ProvidersObj field value +func (o *Outpost) GetProvidersObj() []Provider { + if o == nil { + var ret []Provider + return ret + } + + return o.ProvidersObj +} + +// GetProvidersObjOk returns a tuple with the ProvidersObj field value +// and a boolean to check if the value has been set. +func (o *Outpost) GetProvidersObjOk() ([]Provider, bool) { + if o == nil { + return nil, false + } + return o.ProvidersObj, true +} + +// SetProvidersObj sets field value +func (o *Outpost) SetProvidersObj(v []Provider) { + o.ProvidersObj = v +} + +// GetServiceConnection returns the ServiceConnection field value if set, zero value otherwise (both if not set or set to explicit null). +func (o *Outpost) GetServiceConnection() string { + if o == nil || IsNil(o.ServiceConnection.Get()) { + var ret string + return ret + } + return *o.ServiceConnection.Get() +} + +// GetServiceConnectionOk returns a tuple with the ServiceConnection field value if set, nil otherwise +// and a boolean to check if the value has been set. +// NOTE: If the value is an explicit nil, `nil, true` will be returned +func (o *Outpost) GetServiceConnectionOk() (*string, bool) { + if o == nil { + return nil, false + } + return o.ServiceConnection.Get(), o.ServiceConnection.IsSet() +} + +// HasServiceConnection returns a boolean if a field has been set. +func (o *Outpost) HasServiceConnection() bool { + if o != nil && o.ServiceConnection.IsSet() { + return true + } + + return false +} + +// SetServiceConnection gets a reference to the given NullableString and assigns it to the ServiceConnection field. +func (o *Outpost) SetServiceConnection(v string) { + o.ServiceConnection.Set(&v) +} + +// SetServiceConnectionNil sets the value for ServiceConnection to be an explicit nil +func (o *Outpost) SetServiceConnectionNil() { + o.ServiceConnection.Set(nil) +} + +// UnsetServiceConnection ensures that no value is present for ServiceConnection, not even an explicit nil +func (o *Outpost) UnsetServiceConnection() { + o.ServiceConnection.Unset() +} + +// GetServiceConnectionObj returns the ServiceConnectionObj field value +// If the value is explicit nil, the zero value for ServiceConnection will be returned +func (o *Outpost) GetServiceConnectionObj() ServiceConnection { + if o == nil || o.ServiceConnectionObj.Get() == nil { + var ret ServiceConnection + return ret + } + + return *o.ServiceConnectionObj.Get() +} + +// GetServiceConnectionObjOk returns a tuple with the ServiceConnectionObj field value +// and a boolean to check if the value has been set. +// NOTE: If the value is an explicit nil, `nil, true` will be returned +func (o *Outpost) GetServiceConnectionObjOk() (*ServiceConnection, bool) { + if o == nil { + return nil, false + } + return o.ServiceConnectionObj.Get(), o.ServiceConnectionObj.IsSet() +} + +// SetServiceConnectionObj sets field value +func (o *Outpost) SetServiceConnectionObj(v ServiceConnection) { + o.ServiceConnectionObj.Set(&v) +} + +// GetRefreshIntervalS returns the RefreshIntervalS field value +func (o *Outpost) GetRefreshIntervalS() int32 { + if o == nil { + var ret int32 + return ret + } + + return o.RefreshIntervalS +} + +// GetRefreshIntervalSOk returns a tuple with the RefreshIntervalS field value +// and a boolean to check if the value has been set. +func (o *Outpost) GetRefreshIntervalSOk() (*int32, bool) { + if o == nil { + return nil, false + } + return &o.RefreshIntervalS, true +} + +// SetRefreshIntervalS sets field value +func (o *Outpost) SetRefreshIntervalS(v int32) { + o.RefreshIntervalS = v +} + +// GetTokenIdentifier returns the TokenIdentifier field value +func (o *Outpost) GetTokenIdentifier() string { + if o == nil { + var ret string + return ret + } + + return o.TokenIdentifier +} + +// GetTokenIdentifierOk returns a tuple with the TokenIdentifier field value +// and a boolean to check if the value has been set. +func (o *Outpost) GetTokenIdentifierOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.TokenIdentifier, true +} + +// SetTokenIdentifier sets field value +func (o *Outpost) SetTokenIdentifier(v string) { + o.TokenIdentifier = v +} + +// GetConfig returns the Config field value +func (o *Outpost) GetConfig() map[string]interface{} { + if o == nil { + var ret map[string]interface{} + return ret + } + + return o.Config +} + +// GetConfigOk returns a tuple with the Config field value +// and a boolean to check if the value has been set. +func (o *Outpost) GetConfigOk() (map[string]interface{}, bool) { + if o == nil { + return map[string]interface{}{}, false + } + return o.Config, true +} + +// SetConfig sets field value +func (o *Outpost) SetConfig(v map[string]interface{}) { + o.Config = v +} + +// GetManaged returns the Managed field value if set, zero value otherwise (both if not set or set to explicit null). +func (o *Outpost) GetManaged() string { + if o == nil || IsNil(o.Managed.Get()) { + var ret string + return ret + } + return *o.Managed.Get() +} + +// GetManagedOk returns a tuple with the Managed field value if set, nil otherwise +// and a boolean to check if the value has been set. +// NOTE: If the value is an explicit nil, `nil, true` will be returned +func (o *Outpost) GetManagedOk() (*string, bool) { + if o == nil { + return nil, false + } + return o.Managed.Get(), o.Managed.IsSet() +} + +// HasManaged returns a boolean if a field has been set. +func (o *Outpost) HasManaged() bool { + if o != nil && o.Managed.IsSet() { + return true + } + + return false +} + +// SetManaged gets a reference to the given NullableString and assigns it to the Managed field. +func (o *Outpost) SetManaged(v string) { + o.Managed.Set(&v) +} + +// SetManagedNil sets the value for Managed to be an explicit nil +func (o *Outpost) SetManagedNil() { + o.Managed.Set(nil) +} + +// UnsetManaged ensures that no value is present for Managed, not even an explicit nil +func (o *Outpost) UnsetManaged() { + o.Managed.Unset() +} + +func (o Outpost) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o Outpost) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + toSerialize["pk"] = o.Pk + toSerialize["name"] = o.Name + toSerialize["type"] = o.Type + toSerialize["providers"] = o.Providers + toSerialize["providers_obj"] = o.ProvidersObj + if o.ServiceConnection.IsSet() { + toSerialize["service_connection"] = o.ServiceConnection.Get() + } + toSerialize["service_connection_obj"] = o.ServiceConnectionObj.Get() + toSerialize["refresh_interval_s"] = o.RefreshIntervalS + toSerialize["token_identifier"] = o.TokenIdentifier + toSerialize["config"] = o.Config + if o.Managed.IsSet() { + toSerialize["managed"] = o.Managed.Get() + } + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *Outpost) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "pk", + "name", + "type", + "providers", + "providers_obj", + "service_connection_obj", + "refresh_interval_s", + "token_identifier", + "config", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varOutpost := _Outpost{} + + err = json.Unmarshal(data, &varOutpost) + + if err != nil { + return err + } + + *o = Outpost(varOutpost) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "pk") + delete(additionalProperties, "name") + delete(additionalProperties, "type") + delete(additionalProperties, "providers") + delete(additionalProperties, "providers_obj") + delete(additionalProperties, "service_connection") + delete(additionalProperties, "service_connection_obj") + delete(additionalProperties, "refresh_interval_s") + delete(additionalProperties, "token_identifier") + delete(additionalProperties, "config") + delete(additionalProperties, "managed") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableOutpost struct { + value *Outpost + isSet bool +} + +func (v NullableOutpost) Get() *Outpost { + return v.value +} + +func (v *NullableOutpost) Set(val *Outpost) { + v.value = val + v.isSet = true +} + +func (v NullableOutpost) IsSet() bool { + return v.isSet +} + +func (v *NullableOutpost) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableOutpost(val *Outpost) *NullableOutpost { + return &NullableOutpost{value: val, isSet: true} +} + +func (v NullableOutpost) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableOutpost) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_outpost_type_enum.go b/packages/client-go/model_outpost_type_enum.go new file mode 100644 index 0000000000..a43e248528 --- /dev/null +++ b/packages/client-go/model_outpost_type_enum.go @@ -0,0 +1,115 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// OutpostTypeEnum the model 'OutpostTypeEnum' +type OutpostTypeEnum string + +// List of OutpostTypeEnum +const ( + OUTPOSTTYPEENUM_PROXY OutpostTypeEnum = "proxy" + OUTPOSTTYPEENUM_LDAP OutpostTypeEnum = "ldap" + OUTPOSTTYPEENUM_RADIUS OutpostTypeEnum = "radius" + OUTPOSTTYPEENUM_RAC OutpostTypeEnum = "rac" +) + +// All allowed values of OutpostTypeEnum enum +var AllowedOutpostTypeEnumEnumValues = []OutpostTypeEnum{ + "proxy", + "ldap", + "radius", + "rac", +} + +func (v *OutpostTypeEnum) UnmarshalJSON(src []byte) error { + var value string + err := json.Unmarshal(src, &value) + if err != nil { + return err + } + enumTypeValue := OutpostTypeEnum(value) + for _, existing := range AllowedOutpostTypeEnumEnumValues { + if existing == enumTypeValue { + *v = enumTypeValue + return nil + } + } + + return fmt.Errorf("%+v is not a valid OutpostTypeEnum", value) +} + +// NewOutpostTypeEnumFromValue returns a pointer to a valid OutpostTypeEnum +// for the value passed as argument, or an error if the value passed is not allowed by the enum +func NewOutpostTypeEnumFromValue(v string) (*OutpostTypeEnum, error) { + ev := OutpostTypeEnum(v) + if ev.IsValid() { + return &ev, nil + } else { + return nil, fmt.Errorf("invalid value '%v' for OutpostTypeEnum: valid values are %v", v, AllowedOutpostTypeEnumEnumValues) + } +} + +// IsValid return true if the value is valid for the enum, false otherwise +func (v OutpostTypeEnum) IsValid() bool { + for _, existing := range AllowedOutpostTypeEnumEnumValues { + if existing == v { + return true + } + } + return false +} + +// Ptr returns reference to OutpostTypeEnum value +func (v OutpostTypeEnum) Ptr() *OutpostTypeEnum { + return &v +} + +type NullableOutpostTypeEnum struct { + value *OutpostTypeEnum + isSet bool +} + +func (v NullableOutpostTypeEnum) Get() *OutpostTypeEnum { + return v.value +} + +func (v *NullableOutpostTypeEnum) Set(val *OutpostTypeEnum) { + v.value = val + v.isSet = true +} + +func (v NullableOutpostTypeEnum) IsSet() bool { + return v.isSet +} + +func (v *NullableOutpostTypeEnum) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableOutpostTypeEnum(val *OutpostTypeEnum) *NullableOutpostTypeEnum { + return &NullableOutpostTypeEnum{value: val, isSet: true} +} + +func (v NullableOutpostTypeEnum) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableOutpostTypeEnum) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_paginated_brand_list.go b/packages/client-go/model_paginated_brand_list.go new file mode 100644 index 0000000000..45c616da9c --- /dev/null +++ b/packages/client-go/model_paginated_brand_list.go @@ -0,0 +1,225 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// checks if the PaginatedBrandList type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &PaginatedBrandList{} + +// PaginatedBrandList struct for PaginatedBrandList +type PaginatedBrandList struct { + Pagination Pagination `json:"pagination"` + Results []Brand `json:"results"` + Autocomplete map[string]interface{} `json:"autocomplete"` + AdditionalProperties map[string]interface{} +} + +type _PaginatedBrandList PaginatedBrandList + +// NewPaginatedBrandList instantiates a new PaginatedBrandList object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewPaginatedBrandList(pagination Pagination, results []Brand, autocomplete map[string]interface{}) *PaginatedBrandList { + this := PaginatedBrandList{} + this.Pagination = pagination + this.Results = results + this.Autocomplete = autocomplete + return &this +} + +// NewPaginatedBrandListWithDefaults instantiates a new PaginatedBrandList object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewPaginatedBrandListWithDefaults() *PaginatedBrandList { + this := PaginatedBrandList{} + return &this +} + +// GetPagination returns the Pagination field value +func (o *PaginatedBrandList) GetPagination() Pagination { + if o == nil { + var ret Pagination + return ret + } + + return o.Pagination +} + +// GetPaginationOk returns a tuple with the Pagination field value +// and a boolean to check if the value has been set. +func (o *PaginatedBrandList) GetPaginationOk() (*Pagination, bool) { + if o == nil { + return nil, false + } + return &o.Pagination, true +} + +// SetPagination sets field value +func (o *PaginatedBrandList) SetPagination(v Pagination) { + o.Pagination = v +} + +// GetResults returns the Results field value +func (o *PaginatedBrandList) GetResults() []Brand { + if o == nil { + var ret []Brand + return ret + } + + return o.Results +} + +// GetResultsOk returns a tuple with the Results field value +// and a boolean to check if the value has been set. +func (o *PaginatedBrandList) GetResultsOk() ([]Brand, bool) { + if o == nil { + return nil, false + } + return o.Results, true +} + +// SetResults sets field value +func (o *PaginatedBrandList) SetResults(v []Brand) { + o.Results = v +} + +// GetAutocomplete returns the Autocomplete field value +func (o *PaginatedBrandList) GetAutocomplete() map[string]interface{} { + if o == nil { + var ret map[string]interface{} + return ret + } + + return o.Autocomplete +} + +// GetAutocompleteOk returns a tuple with the Autocomplete field value +// and a boolean to check if the value has been set. +func (o *PaginatedBrandList) GetAutocompleteOk() (map[string]interface{}, bool) { + if o == nil { + return map[string]interface{}{}, false + } + return o.Autocomplete, true +} + +// SetAutocomplete sets field value +func (o *PaginatedBrandList) SetAutocomplete(v map[string]interface{}) { + o.Autocomplete = v +} + +func (o PaginatedBrandList) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o PaginatedBrandList) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + toSerialize["pagination"] = o.Pagination + toSerialize["results"] = o.Results + toSerialize["autocomplete"] = o.Autocomplete + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *PaginatedBrandList) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "pagination", + "results", + "autocomplete", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varPaginatedBrandList := _PaginatedBrandList{} + + err = json.Unmarshal(data, &varPaginatedBrandList) + + if err != nil { + return err + } + + *o = PaginatedBrandList(varPaginatedBrandList) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "pagination") + delete(additionalProperties, "results") + delete(additionalProperties, "autocomplete") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullablePaginatedBrandList struct { + value *PaginatedBrandList + isSet bool +} + +func (v NullablePaginatedBrandList) Get() *PaginatedBrandList { + return v.value +} + +func (v *NullablePaginatedBrandList) Set(val *PaginatedBrandList) { + v.value = val + v.isSet = true +} + +func (v NullablePaginatedBrandList) IsSet() bool { + return v.isSet +} + +func (v *NullablePaginatedBrandList) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullablePaginatedBrandList(val *PaginatedBrandList) *NullablePaginatedBrandList { + return &NullablePaginatedBrandList{value: val, isSet: true} +} + +func (v NullablePaginatedBrandList) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullablePaginatedBrandList) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_paginated_group_list.go b/packages/client-go/model_paginated_group_list.go new file mode 100644 index 0000000000..d7f1f8d061 --- /dev/null +++ b/packages/client-go/model_paginated_group_list.go @@ -0,0 +1,225 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// checks if the PaginatedGroupList type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &PaginatedGroupList{} + +// PaginatedGroupList struct for PaginatedGroupList +type PaginatedGroupList struct { + Pagination Pagination `json:"pagination"` + Results []Group `json:"results"` + Autocomplete map[string]interface{} `json:"autocomplete"` + AdditionalProperties map[string]interface{} +} + +type _PaginatedGroupList PaginatedGroupList + +// NewPaginatedGroupList instantiates a new PaginatedGroupList object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewPaginatedGroupList(pagination Pagination, results []Group, autocomplete map[string]interface{}) *PaginatedGroupList { + this := PaginatedGroupList{} + this.Pagination = pagination + this.Results = results + this.Autocomplete = autocomplete + return &this +} + +// NewPaginatedGroupListWithDefaults instantiates a new PaginatedGroupList object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewPaginatedGroupListWithDefaults() *PaginatedGroupList { + this := PaginatedGroupList{} + return &this +} + +// GetPagination returns the Pagination field value +func (o *PaginatedGroupList) GetPagination() Pagination { + if o == nil { + var ret Pagination + return ret + } + + return o.Pagination +} + +// GetPaginationOk returns a tuple with the Pagination field value +// and a boolean to check if the value has been set. +func (o *PaginatedGroupList) GetPaginationOk() (*Pagination, bool) { + if o == nil { + return nil, false + } + return &o.Pagination, true +} + +// SetPagination sets field value +func (o *PaginatedGroupList) SetPagination(v Pagination) { + o.Pagination = v +} + +// GetResults returns the Results field value +func (o *PaginatedGroupList) GetResults() []Group { + if o == nil { + var ret []Group + return ret + } + + return o.Results +} + +// GetResultsOk returns a tuple with the Results field value +// and a boolean to check if the value has been set. +func (o *PaginatedGroupList) GetResultsOk() ([]Group, bool) { + if o == nil { + return nil, false + } + return o.Results, true +} + +// SetResults sets field value +func (o *PaginatedGroupList) SetResults(v []Group) { + o.Results = v +} + +// GetAutocomplete returns the Autocomplete field value +func (o *PaginatedGroupList) GetAutocomplete() map[string]interface{} { + if o == nil { + var ret map[string]interface{} + return ret + } + + return o.Autocomplete +} + +// GetAutocompleteOk returns a tuple with the Autocomplete field value +// and a boolean to check if the value has been set. +func (o *PaginatedGroupList) GetAutocompleteOk() (map[string]interface{}, bool) { + if o == nil { + return map[string]interface{}{}, false + } + return o.Autocomplete, true +} + +// SetAutocomplete sets field value +func (o *PaginatedGroupList) SetAutocomplete(v map[string]interface{}) { + o.Autocomplete = v +} + +func (o PaginatedGroupList) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o PaginatedGroupList) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + toSerialize["pagination"] = o.Pagination + toSerialize["results"] = o.Results + toSerialize["autocomplete"] = o.Autocomplete + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *PaginatedGroupList) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "pagination", + "results", + "autocomplete", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varPaginatedGroupList := _PaginatedGroupList{} + + err = json.Unmarshal(data, &varPaginatedGroupList) + + if err != nil { + return err + } + + *o = PaginatedGroupList(varPaginatedGroupList) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "pagination") + delete(additionalProperties, "results") + delete(additionalProperties, "autocomplete") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullablePaginatedGroupList struct { + value *PaginatedGroupList + isSet bool +} + +func (v NullablePaginatedGroupList) Get() *PaginatedGroupList { + return v.value +} + +func (v *NullablePaginatedGroupList) Set(val *PaginatedGroupList) { + v.value = val + v.isSet = true +} + +func (v NullablePaginatedGroupList) IsSet() bool { + return v.isSet +} + +func (v *NullablePaginatedGroupList) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullablePaginatedGroupList(val *PaginatedGroupList) *NullablePaginatedGroupList { + return &NullablePaginatedGroupList{value: val, isSet: true} +} + +func (v NullablePaginatedGroupList) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullablePaginatedGroupList) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_paginated_ldap_outpost_config_list.go b/packages/client-go/model_paginated_ldap_outpost_config_list.go new file mode 100644 index 0000000000..31f25752bc --- /dev/null +++ b/packages/client-go/model_paginated_ldap_outpost_config_list.go @@ -0,0 +1,225 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// checks if the PaginatedLDAPOutpostConfigList type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &PaginatedLDAPOutpostConfigList{} + +// PaginatedLDAPOutpostConfigList struct for PaginatedLDAPOutpostConfigList +type PaginatedLDAPOutpostConfigList struct { + Pagination Pagination `json:"pagination"` + Results []LDAPOutpostConfig `json:"results"` + Autocomplete map[string]interface{} `json:"autocomplete"` + AdditionalProperties map[string]interface{} +} + +type _PaginatedLDAPOutpostConfigList PaginatedLDAPOutpostConfigList + +// NewPaginatedLDAPOutpostConfigList instantiates a new PaginatedLDAPOutpostConfigList object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewPaginatedLDAPOutpostConfigList(pagination Pagination, results []LDAPOutpostConfig, autocomplete map[string]interface{}) *PaginatedLDAPOutpostConfigList { + this := PaginatedLDAPOutpostConfigList{} + this.Pagination = pagination + this.Results = results + this.Autocomplete = autocomplete + return &this +} + +// NewPaginatedLDAPOutpostConfigListWithDefaults instantiates a new PaginatedLDAPOutpostConfigList object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewPaginatedLDAPOutpostConfigListWithDefaults() *PaginatedLDAPOutpostConfigList { + this := PaginatedLDAPOutpostConfigList{} + return &this +} + +// GetPagination returns the Pagination field value +func (o *PaginatedLDAPOutpostConfigList) GetPagination() Pagination { + if o == nil { + var ret Pagination + return ret + } + + return o.Pagination +} + +// GetPaginationOk returns a tuple with the Pagination field value +// and a boolean to check if the value has been set. +func (o *PaginatedLDAPOutpostConfigList) GetPaginationOk() (*Pagination, bool) { + if o == nil { + return nil, false + } + return &o.Pagination, true +} + +// SetPagination sets field value +func (o *PaginatedLDAPOutpostConfigList) SetPagination(v Pagination) { + o.Pagination = v +} + +// GetResults returns the Results field value +func (o *PaginatedLDAPOutpostConfigList) GetResults() []LDAPOutpostConfig { + if o == nil { + var ret []LDAPOutpostConfig + return ret + } + + return o.Results +} + +// GetResultsOk returns a tuple with the Results field value +// and a boolean to check if the value has been set. +func (o *PaginatedLDAPOutpostConfigList) GetResultsOk() ([]LDAPOutpostConfig, bool) { + if o == nil { + return nil, false + } + return o.Results, true +} + +// SetResults sets field value +func (o *PaginatedLDAPOutpostConfigList) SetResults(v []LDAPOutpostConfig) { + o.Results = v +} + +// GetAutocomplete returns the Autocomplete field value +func (o *PaginatedLDAPOutpostConfigList) GetAutocomplete() map[string]interface{} { + if o == nil { + var ret map[string]interface{} + return ret + } + + return o.Autocomplete +} + +// GetAutocompleteOk returns a tuple with the Autocomplete field value +// and a boolean to check if the value has been set. +func (o *PaginatedLDAPOutpostConfigList) GetAutocompleteOk() (map[string]interface{}, bool) { + if o == nil { + return map[string]interface{}{}, false + } + return o.Autocomplete, true +} + +// SetAutocomplete sets field value +func (o *PaginatedLDAPOutpostConfigList) SetAutocomplete(v map[string]interface{}) { + o.Autocomplete = v +} + +func (o PaginatedLDAPOutpostConfigList) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o PaginatedLDAPOutpostConfigList) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + toSerialize["pagination"] = o.Pagination + toSerialize["results"] = o.Results + toSerialize["autocomplete"] = o.Autocomplete + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *PaginatedLDAPOutpostConfigList) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "pagination", + "results", + "autocomplete", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varPaginatedLDAPOutpostConfigList := _PaginatedLDAPOutpostConfigList{} + + err = json.Unmarshal(data, &varPaginatedLDAPOutpostConfigList) + + if err != nil { + return err + } + + *o = PaginatedLDAPOutpostConfigList(varPaginatedLDAPOutpostConfigList) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "pagination") + delete(additionalProperties, "results") + delete(additionalProperties, "autocomplete") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullablePaginatedLDAPOutpostConfigList struct { + value *PaginatedLDAPOutpostConfigList + isSet bool +} + +func (v NullablePaginatedLDAPOutpostConfigList) Get() *PaginatedLDAPOutpostConfigList { + return v.value +} + +func (v *NullablePaginatedLDAPOutpostConfigList) Set(val *PaginatedLDAPOutpostConfigList) { + v.value = val + v.isSet = true +} + +func (v NullablePaginatedLDAPOutpostConfigList) IsSet() bool { + return v.isSet +} + +func (v *NullablePaginatedLDAPOutpostConfigList) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullablePaginatedLDAPOutpostConfigList(val *PaginatedLDAPOutpostConfigList) *NullablePaginatedLDAPOutpostConfigList { + return &NullablePaginatedLDAPOutpostConfigList{value: val, isSet: true} +} + +func (v NullablePaginatedLDAPOutpostConfigList) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullablePaginatedLDAPOutpostConfigList) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_paginated_outpost_list.go b/packages/client-go/model_paginated_outpost_list.go new file mode 100644 index 0000000000..73c4a535af --- /dev/null +++ b/packages/client-go/model_paginated_outpost_list.go @@ -0,0 +1,225 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// checks if the PaginatedOutpostList type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &PaginatedOutpostList{} + +// PaginatedOutpostList struct for PaginatedOutpostList +type PaginatedOutpostList struct { + Pagination Pagination `json:"pagination"` + Results []Outpost `json:"results"` + Autocomplete map[string]interface{} `json:"autocomplete"` + AdditionalProperties map[string]interface{} +} + +type _PaginatedOutpostList PaginatedOutpostList + +// NewPaginatedOutpostList instantiates a new PaginatedOutpostList object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewPaginatedOutpostList(pagination Pagination, results []Outpost, autocomplete map[string]interface{}) *PaginatedOutpostList { + this := PaginatedOutpostList{} + this.Pagination = pagination + this.Results = results + this.Autocomplete = autocomplete + return &this +} + +// NewPaginatedOutpostListWithDefaults instantiates a new PaginatedOutpostList object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewPaginatedOutpostListWithDefaults() *PaginatedOutpostList { + this := PaginatedOutpostList{} + return &this +} + +// GetPagination returns the Pagination field value +func (o *PaginatedOutpostList) GetPagination() Pagination { + if o == nil { + var ret Pagination + return ret + } + + return o.Pagination +} + +// GetPaginationOk returns a tuple with the Pagination field value +// and a boolean to check if the value has been set. +func (o *PaginatedOutpostList) GetPaginationOk() (*Pagination, bool) { + if o == nil { + return nil, false + } + return &o.Pagination, true +} + +// SetPagination sets field value +func (o *PaginatedOutpostList) SetPagination(v Pagination) { + o.Pagination = v +} + +// GetResults returns the Results field value +func (o *PaginatedOutpostList) GetResults() []Outpost { + if o == nil { + var ret []Outpost + return ret + } + + return o.Results +} + +// GetResultsOk returns a tuple with the Results field value +// and a boolean to check if the value has been set. +func (o *PaginatedOutpostList) GetResultsOk() ([]Outpost, bool) { + if o == nil { + return nil, false + } + return o.Results, true +} + +// SetResults sets field value +func (o *PaginatedOutpostList) SetResults(v []Outpost) { + o.Results = v +} + +// GetAutocomplete returns the Autocomplete field value +func (o *PaginatedOutpostList) GetAutocomplete() map[string]interface{} { + if o == nil { + var ret map[string]interface{} + return ret + } + + return o.Autocomplete +} + +// GetAutocompleteOk returns a tuple with the Autocomplete field value +// and a boolean to check if the value has been set. +func (o *PaginatedOutpostList) GetAutocompleteOk() (map[string]interface{}, bool) { + if o == nil { + return map[string]interface{}{}, false + } + return o.Autocomplete, true +} + +// SetAutocomplete sets field value +func (o *PaginatedOutpostList) SetAutocomplete(v map[string]interface{}) { + o.Autocomplete = v +} + +func (o PaginatedOutpostList) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o PaginatedOutpostList) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + toSerialize["pagination"] = o.Pagination + toSerialize["results"] = o.Results + toSerialize["autocomplete"] = o.Autocomplete + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *PaginatedOutpostList) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "pagination", + "results", + "autocomplete", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varPaginatedOutpostList := _PaginatedOutpostList{} + + err = json.Unmarshal(data, &varPaginatedOutpostList) + + if err != nil { + return err + } + + *o = PaginatedOutpostList(varPaginatedOutpostList) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "pagination") + delete(additionalProperties, "results") + delete(additionalProperties, "autocomplete") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullablePaginatedOutpostList struct { + value *PaginatedOutpostList + isSet bool +} + +func (v NullablePaginatedOutpostList) Get() *PaginatedOutpostList { + return v.value +} + +func (v *NullablePaginatedOutpostList) Set(val *PaginatedOutpostList) { + v.value = val + v.isSet = true +} + +func (v NullablePaginatedOutpostList) IsSet() bool { + return v.isSet +} + +func (v *NullablePaginatedOutpostList) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullablePaginatedOutpostList(val *PaginatedOutpostList) *NullablePaginatedOutpostList { + return &NullablePaginatedOutpostList{value: val, isSet: true} +} + +func (v NullablePaginatedOutpostList) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullablePaginatedOutpostList) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_paginated_proxy_outpost_config_list.go b/packages/client-go/model_paginated_proxy_outpost_config_list.go new file mode 100644 index 0000000000..9240bd6000 --- /dev/null +++ b/packages/client-go/model_paginated_proxy_outpost_config_list.go @@ -0,0 +1,225 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// checks if the PaginatedProxyOutpostConfigList type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &PaginatedProxyOutpostConfigList{} + +// PaginatedProxyOutpostConfigList struct for PaginatedProxyOutpostConfigList +type PaginatedProxyOutpostConfigList struct { + Pagination Pagination `json:"pagination"` + Results []ProxyOutpostConfig `json:"results"` + Autocomplete map[string]interface{} `json:"autocomplete"` + AdditionalProperties map[string]interface{} +} + +type _PaginatedProxyOutpostConfigList PaginatedProxyOutpostConfigList + +// NewPaginatedProxyOutpostConfigList instantiates a new PaginatedProxyOutpostConfigList object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewPaginatedProxyOutpostConfigList(pagination Pagination, results []ProxyOutpostConfig, autocomplete map[string]interface{}) *PaginatedProxyOutpostConfigList { + this := PaginatedProxyOutpostConfigList{} + this.Pagination = pagination + this.Results = results + this.Autocomplete = autocomplete + return &this +} + +// NewPaginatedProxyOutpostConfigListWithDefaults instantiates a new PaginatedProxyOutpostConfigList object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewPaginatedProxyOutpostConfigListWithDefaults() *PaginatedProxyOutpostConfigList { + this := PaginatedProxyOutpostConfigList{} + return &this +} + +// GetPagination returns the Pagination field value +func (o *PaginatedProxyOutpostConfigList) GetPagination() Pagination { + if o == nil { + var ret Pagination + return ret + } + + return o.Pagination +} + +// GetPaginationOk returns a tuple with the Pagination field value +// and a boolean to check if the value has been set. +func (o *PaginatedProxyOutpostConfigList) GetPaginationOk() (*Pagination, bool) { + if o == nil { + return nil, false + } + return &o.Pagination, true +} + +// SetPagination sets field value +func (o *PaginatedProxyOutpostConfigList) SetPagination(v Pagination) { + o.Pagination = v +} + +// GetResults returns the Results field value +func (o *PaginatedProxyOutpostConfigList) GetResults() []ProxyOutpostConfig { + if o == nil { + var ret []ProxyOutpostConfig + return ret + } + + return o.Results +} + +// GetResultsOk returns a tuple with the Results field value +// and a boolean to check if the value has been set. +func (o *PaginatedProxyOutpostConfigList) GetResultsOk() ([]ProxyOutpostConfig, bool) { + if o == nil { + return nil, false + } + return o.Results, true +} + +// SetResults sets field value +func (o *PaginatedProxyOutpostConfigList) SetResults(v []ProxyOutpostConfig) { + o.Results = v +} + +// GetAutocomplete returns the Autocomplete field value +func (o *PaginatedProxyOutpostConfigList) GetAutocomplete() map[string]interface{} { + if o == nil { + var ret map[string]interface{} + return ret + } + + return o.Autocomplete +} + +// GetAutocompleteOk returns a tuple with the Autocomplete field value +// and a boolean to check if the value has been set. +func (o *PaginatedProxyOutpostConfigList) GetAutocompleteOk() (map[string]interface{}, bool) { + if o == nil { + return map[string]interface{}{}, false + } + return o.Autocomplete, true +} + +// SetAutocomplete sets field value +func (o *PaginatedProxyOutpostConfigList) SetAutocomplete(v map[string]interface{}) { + o.Autocomplete = v +} + +func (o PaginatedProxyOutpostConfigList) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o PaginatedProxyOutpostConfigList) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + toSerialize["pagination"] = o.Pagination + toSerialize["results"] = o.Results + toSerialize["autocomplete"] = o.Autocomplete + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *PaginatedProxyOutpostConfigList) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "pagination", + "results", + "autocomplete", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varPaginatedProxyOutpostConfigList := _PaginatedProxyOutpostConfigList{} + + err = json.Unmarshal(data, &varPaginatedProxyOutpostConfigList) + + if err != nil { + return err + } + + *o = PaginatedProxyOutpostConfigList(varPaginatedProxyOutpostConfigList) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "pagination") + delete(additionalProperties, "results") + delete(additionalProperties, "autocomplete") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullablePaginatedProxyOutpostConfigList struct { + value *PaginatedProxyOutpostConfigList + isSet bool +} + +func (v NullablePaginatedProxyOutpostConfigList) Get() *PaginatedProxyOutpostConfigList { + return v.value +} + +func (v *NullablePaginatedProxyOutpostConfigList) Set(val *PaginatedProxyOutpostConfigList) { + v.value = val + v.isSet = true +} + +func (v NullablePaginatedProxyOutpostConfigList) IsSet() bool { + return v.isSet +} + +func (v *NullablePaginatedProxyOutpostConfigList) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullablePaginatedProxyOutpostConfigList(val *PaginatedProxyOutpostConfigList) *NullablePaginatedProxyOutpostConfigList { + return &NullablePaginatedProxyOutpostConfigList{value: val, isSet: true} +} + +func (v NullablePaginatedProxyOutpostConfigList) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullablePaginatedProxyOutpostConfigList) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_paginated_radius_outpost_config_list.go b/packages/client-go/model_paginated_radius_outpost_config_list.go new file mode 100644 index 0000000000..1f8bb44139 --- /dev/null +++ b/packages/client-go/model_paginated_radius_outpost_config_list.go @@ -0,0 +1,225 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// checks if the PaginatedRadiusOutpostConfigList type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &PaginatedRadiusOutpostConfigList{} + +// PaginatedRadiusOutpostConfigList struct for PaginatedRadiusOutpostConfigList +type PaginatedRadiusOutpostConfigList struct { + Pagination Pagination `json:"pagination"` + Results []RadiusOutpostConfig `json:"results"` + Autocomplete map[string]interface{} `json:"autocomplete"` + AdditionalProperties map[string]interface{} +} + +type _PaginatedRadiusOutpostConfigList PaginatedRadiusOutpostConfigList + +// NewPaginatedRadiusOutpostConfigList instantiates a new PaginatedRadiusOutpostConfigList object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewPaginatedRadiusOutpostConfigList(pagination Pagination, results []RadiusOutpostConfig, autocomplete map[string]interface{}) *PaginatedRadiusOutpostConfigList { + this := PaginatedRadiusOutpostConfigList{} + this.Pagination = pagination + this.Results = results + this.Autocomplete = autocomplete + return &this +} + +// NewPaginatedRadiusOutpostConfigListWithDefaults instantiates a new PaginatedRadiusOutpostConfigList object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewPaginatedRadiusOutpostConfigListWithDefaults() *PaginatedRadiusOutpostConfigList { + this := PaginatedRadiusOutpostConfigList{} + return &this +} + +// GetPagination returns the Pagination field value +func (o *PaginatedRadiusOutpostConfigList) GetPagination() Pagination { + if o == nil { + var ret Pagination + return ret + } + + return o.Pagination +} + +// GetPaginationOk returns a tuple with the Pagination field value +// and a boolean to check if the value has been set. +func (o *PaginatedRadiusOutpostConfigList) GetPaginationOk() (*Pagination, bool) { + if o == nil { + return nil, false + } + return &o.Pagination, true +} + +// SetPagination sets field value +func (o *PaginatedRadiusOutpostConfigList) SetPagination(v Pagination) { + o.Pagination = v +} + +// GetResults returns the Results field value +func (o *PaginatedRadiusOutpostConfigList) GetResults() []RadiusOutpostConfig { + if o == nil { + var ret []RadiusOutpostConfig + return ret + } + + return o.Results +} + +// GetResultsOk returns a tuple with the Results field value +// and a boolean to check if the value has been set. +func (o *PaginatedRadiusOutpostConfigList) GetResultsOk() ([]RadiusOutpostConfig, bool) { + if o == nil { + return nil, false + } + return o.Results, true +} + +// SetResults sets field value +func (o *PaginatedRadiusOutpostConfigList) SetResults(v []RadiusOutpostConfig) { + o.Results = v +} + +// GetAutocomplete returns the Autocomplete field value +func (o *PaginatedRadiusOutpostConfigList) GetAutocomplete() map[string]interface{} { + if o == nil { + var ret map[string]interface{} + return ret + } + + return o.Autocomplete +} + +// GetAutocompleteOk returns a tuple with the Autocomplete field value +// and a boolean to check if the value has been set. +func (o *PaginatedRadiusOutpostConfigList) GetAutocompleteOk() (map[string]interface{}, bool) { + if o == nil { + return map[string]interface{}{}, false + } + return o.Autocomplete, true +} + +// SetAutocomplete sets field value +func (o *PaginatedRadiusOutpostConfigList) SetAutocomplete(v map[string]interface{}) { + o.Autocomplete = v +} + +func (o PaginatedRadiusOutpostConfigList) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o PaginatedRadiusOutpostConfigList) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + toSerialize["pagination"] = o.Pagination + toSerialize["results"] = o.Results + toSerialize["autocomplete"] = o.Autocomplete + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *PaginatedRadiusOutpostConfigList) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "pagination", + "results", + "autocomplete", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varPaginatedRadiusOutpostConfigList := _PaginatedRadiusOutpostConfigList{} + + err = json.Unmarshal(data, &varPaginatedRadiusOutpostConfigList) + + if err != nil { + return err + } + + *o = PaginatedRadiusOutpostConfigList(varPaginatedRadiusOutpostConfigList) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "pagination") + delete(additionalProperties, "results") + delete(additionalProperties, "autocomplete") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullablePaginatedRadiusOutpostConfigList struct { + value *PaginatedRadiusOutpostConfigList + isSet bool +} + +func (v NullablePaginatedRadiusOutpostConfigList) Get() *PaginatedRadiusOutpostConfigList { + return v.value +} + +func (v *NullablePaginatedRadiusOutpostConfigList) Set(val *PaginatedRadiusOutpostConfigList) { + v.value = val + v.isSet = true +} + +func (v NullablePaginatedRadiusOutpostConfigList) IsSet() bool { + return v.isSet +} + +func (v *NullablePaginatedRadiusOutpostConfigList) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullablePaginatedRadiusOutpostConfigList(val *PaginatedRadiusOutpostConfigList) *NullablePaginatedRadiusOutpostConfigList { + return &NullablePaginatedRadiusOutpostConfigList{value: val, isSet: true} +} + +func (v NullablePaginatedRadiusOutpostConfigList) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullablePaginatedRadiusOutpostConfigList) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_paginated_user_list.go b/packages/client-go/model_paginated_user_list.go new file mode 100644 index 0000000000..54ee8abe82 --- /dev/null +++ b/packages/client-go/model_paginated_user_list.go @@ -0,0 +1,225 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// checks if the PaginatedUserList type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &PaginatedUserList{} + +// PaginatedUserList struct for PaginatedUserList +type PaginatedUserList struct { + Pagination Pagination `json:"pagination"` + Results []User `json:"results"` + Autocomplete map[string]interface{} `json:"autocomplete"` + AdditionalProperties map[string]interface{} +} + +type _PaginatedUserList PaginatedUserList + +// NewPaginatedUserList instantiates a new PaginatedUserList object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewPaginatedUserList(pagination Pagination, results []User, autocomplete map[string]interface{}) *PaginatedUserList { + this := PaginatedUserList{} + this.Pagination = pagination + this.Results = results + this.Autocomplete = autocomplete + return &this +} + +// NewPaginatedUserListWithDefaults instantiates a new PaginatedUserList object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewPaginatedUserListWithDefaults() *PaginatedUserList { + this := PaginatedUserList{} + return &this +} + +// GetPagination returns the Pagination field value +func (o *PaginatedUserList) GetPagination() Pagination { + if o == nil { + var ret Pagination + return ret + } + + return o.Pagination +} + +// GetPaginationOk returns a tuple with the Pagination field value +// and a boolean to check if the value has been set. +func (o *PaginatedUserList) GetPaginationOk() (*Pagination, bool) { + if o == nil { + return nil, false + } + return &o.Pagination, true +} + +// SetPagination sets field value +func (o *PaginatedUserList) SetPagination(v Pagination) { + o.Pagination = v +} + +// GetResults returns the Results field value +func (o *PaginatedUserList) GetResults() []User { + if o == nil { + var ret []User + return ret + } + + return o.Results +} + +// GetResultsOk returns a tuple with the Results field value +// and a boolean to check if the value has been set. +func (o *PaginatedUserList) GetResultsOk() ([]User, bool) { + if o == nil { + return nil, false + } + return o.Results, true +} + +// SetResults sets field value +func (o *PaginatedUserList) SetResults(v []User) { + o.Results = v +} + +// GetAutocomplete returns the Autocomplete field value +func (o *PaginatedUserList) GetAutocomplete() map[string]interface{} { + if o == nil { + var ret map[string]interface{} + return ret + } + + return o.Autocomplete +} + +// GetAutocompleteOk returns a tuple with the Autocomplete field value +// and a boolean to check if the value has been set. +func (o *PaginatedUserList) GetAutocompleteOk() (map[string]interface{}, bool) { + if o == nil { + return map[string]interface{}{}, false + } + return o.Autocomplete, true +} + +// SetAutocomplete sets field value +func (o *PaginatedUserList) SetAutocomplete(v map[string]interface{}) { + o.Autocomplete = v +} + +func (o PaginatedUserList) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o PaginatedUserList) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + toSerialize["pagination"] = o.Pagination + toSerialize["results"] = o.Results + toSerialize["autocomplete"] = o.Autocomplete + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *PaginatedUserList) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "pagination", + "results", + "autocomplete", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varPaginatedUserList := _PaginatedUserList{} + + err = json.Unmarshal(data, &varPaginatedUserList) + + if err != nil { + return err + } + + *o = PaginatedUserList(varPaginatedUserList) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "pagination") + delete(additionalProperties, "results") + delete(additionalProperties, "autocomplete") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullablePaginatedUserList struct { + value *PaginatedUserList + isSet bool +} + +func (v NullablePaginatedUserList) Get() *PaginatedUserList { + return v.value +} + +func (v *NullablePaginatedUserList) Set(val *PaginatedUserList) { + v.value = val + v.isSet = true +} + +func (v NullablePaginatedUserList) IsSet() bool { + return v.isSet +} + +func (v *NullablePaginatedUserList) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullablePaginatedUserList(val *PaginatedUserList) *NullablePaginatedUserList { + return &NullablePaginatedUserList{value: val, isSet: true} +} + +func (v NullablePaginatedUserList) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullablePaginatedUserList) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_pagination.go b/packages/client-go/model_pagination.go new file mode 100644 index 0000000000..0ff49d7c79 --- /dev/null +++ b/packages/client-go/model_pagination.go @@ -0,0 +1,341 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// checks if the Pagination type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &Pagination{} + +// Pagination struct for Pagination +type Pagination struct { + Next float32 `json:"next"` + Previous float32 `json:"previous"` + Count float32 `json:"count"` + Current float32 `json:"current"` + TotalPages float32 `json:"total_pages"` + StartIndex float32 `json:"start_index"` + EndIndex float32 `json:"end_index"` + AdditionalProperties map[string]interface{} +} + +type _Pagination Pagination + +// NewPagination instantiates a new Pagination object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewPagination(next float32, previous float32, count float32, current float32, totalPages float32, startIndex float32, endIndex float32) *Pagination { + this := Pagination{} + this.Next = next + this.Previous = previous + this.Count = count + this.Current = current + this.TotalPages = totalPages + this.StartIndex = startIndex + this.EndIndex = endIndex + return &this +} + +// NewPaginationWithDefaults instantiates a new Pagination object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewPaginationWithDefaults() *Pagination { + this := Pagination{} + return &this +} + +// GetNext returns the Next field value +func (o *Pagination) GetNext() float32 { + if o == nil { + var ret float32 + return ret + } + + return o.Next +} + +// GetNextOk returns a tuple with the Next field value +// and a boolean to check if the value has been set. +func (o *Pagination) GetNextOk() (*float32, bool) { + if o == nil { + return nil, false + } + return &o.Next, true +} + +// SetNext sets field value +func (o *Pagination) SetNext(v float32) { + o.Next = v +} + +// GetPrevious returns the Previous field value +func (o *Pagination) GetPrevious() float32 { + if o == nil { + var ret float32 + return ret + } + + return o.Previous +} + +// GetPreviousOk returns a tuple with the Previous field value +// and a boolean to check if the value has been set. +func (o *Pagination) GetPreviousOk() (*float32, bool) { + if o == nil { + return nil, false + } + return &o.Previous, true +} + +// SetPrevious sets field value +func (o *Pagination) SetPrevious(v float32) { + o.Previous = v +} + +// GetCount returns the Count field value +func (o *Pagination) GetCount() float32 { + if o == nil { + var ret float32 + return ret + } + + return o.Count +} + +// GetCountOk returns a tuple with the Count field value +// and a boolean to check if the value has been set. +func (o *Pagination) GetCountOk() (*float32, bool) { + if o == nil { + return nil, false + } + return &o.Count, true +} + +// SetCount sets field value +func (o *Pagination) SetCount(v float32) { + o.Count = v +} + +// GetCurrent returns the Current field value +func (o *Pagination) GetCurrent() float32 { + if o == nil { + var ret float32 + return ret + } + + return o.Current +} + +// GetCurrentOk returns a tuple with the Current field value +// and a boolean to check if the value has been set. +func (o *Pagination) GetCurrentOk() (*float32, bool) { + if o == nil { + return nil, false + } + return &o.Current, true +} + +// SetCurrent sets field value +func (o *Pagination) SetCurrent(v float32) { + o.Current = v +} + +// GetTotalPages returns the TotalPages field value +func (o *Pagination) GetTotalPages() float32 { + if o == nil { + var ret float32 + return ret + } + + return o.TotalPages +} + +// GetTotalPagesOk returns a tuple with the TotalPages field value +// and a boolean to check if the value has been set. +func (o *Pagination) GetTotalPagesOk() (*float32, bool) { + if o == nil { + return nil, false + } + return &o.TotalPages, true +} + +// SetTotalPages sets field value +func (o *Pagination) SetTotalPages(v float32) { + o.TotalPages = v +} + +// GetStartIndex returns the StartIndex field value +func (o *Pagination) GetStartIndex() float32 { + if o == nil { + var ret float32 + return ret + } + + return o.StartIndex +} + +// GetStartIndexOk returns a tuple with the StartIndex field value +// and a boolean to check if the value has been set. +func (o *Pagination) GetStartIndexOk() (*float32, bool) { + if o == nil { + return nil, false + } + return &o.StartIndex, true +} + +// SetStartIndex sets field value +func (o *Pagination) SetStartIndex(v float32) { + o.StartIndex = v +} + +// GetEndIndex returns the EndIndex field value +func (o *Pagination) GetEndIndex() float32 { + if o == nil { + var ret float32 + return ret + } + + return o.EndIndex +} + +// GetEndIndexOk returns a tuple with the EndIndex field value +// and a boolean to check if the value has been set. +func (o *Pagination) GetEndIndexOk() (*float32, bool) { + if o == nil { + return nil, false + } + return &o.EndIndex, true +} + +// SetEndIndex sets field value +func (o *Pagination) SetEndIndex(v float32) { + o.EndIndex = v +} + +func (o Pagination) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o Pagination) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + toSerialize["next"] = o.Next + toSerialize["previous"] = o.Previous + toSerialize["count"] = o.Count + toSerialize["current"] = o.Current + toSerialize["total_pages"] = o.TotalPages + toSerialize["start_index"] = o.StartIndex + toSerialize["end_index"] = o.EndIndex + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *Pagination) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "next", + "previous", + "count", + "current", + "total_pages", + "start_index", + "end_index", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varPagination := _Pagination{} + + err = json.Unmarshal(data, &varPagination) + + if err != nil { + return err + } + + *o = Pagination(varPagination) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "next") + delete(additionalProperties, "previous") + delete(additionalProperties, "count") + delete(additionalProperties, "current") + delete(additionalProperties, "total_pages") + delete(additionalProperties, "start_index") + delete(additionalProperties, "end_index") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullablePagination struct { + value *Pagination + isSet bool +} + +func (v NullablePagination) Get() *Pagination { + return v.value +} + +func (v *NullablePagination) Set(val *Pagination) { + v.value = val + v.isSet = true +} + +func (v NullablePagination) IsSet() bool { + return v.isSet +} + +func (v *NullablePagination) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullablePagination(val *Pagination) *NullablePagination { + return &NullablePagination{value: val, isSet: true} +} + +func (v NullablePagination) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullablePagination) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_partial_group.go b/packages/client-go/model_partial_group.go new file mode 100644 index 0000000000..e5f913887e --- /dev/null +++ b/packages/client-go/model_partial_group.go @@ -0,0 +1,301 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// checks if the PartialGroup type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &PartialGroup{} + +// PartialGroup Partial Group Serializer, does not include child relations. +type PartialGroup struct { + Pk string `json:"pk"` + // Get a numerical, int32 ID for the group + NumPk int32 `json:"num_pk"` + Name string `json:"name"` + // Users added to this group will be superusers. + IsSuperuser *bool `json:"is_superuser,omitempty"` + Attributes map[string]interface{} `json:"attributes,omitempty"` + AdditionalProperties map[string]interface{} +} + +type _PartialGroup PartialGroup + +// NewPartialGroup instantiates a new PartialGroup object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewPartialGroup(pk string, numPk int32, name string) *PartialGroup { + this := PartialGroup{} + this.Pk = pk + this.NumPk = numPk + this.Name = name + return &this +} + +// NewPartialGroupWithDefaults instantiates a new PartialGroup object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewPartialGroupWithDefaults() *PartialGroup { + this := PartialGroup{} + return &this +} + +// GetPk returns the Pk field value +func (o *PartialGroup) GetPk() string { + if o == nil { + var ret string + return ret + } + + return o.Pk +} + +// GetPkOk returns a tuple with the Pk field value +// and a boolean to check if the value has been set. +func (o *PartialGroup) GetPkOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Pk, true +} + +// SetPk sets field value +func (o *PartialGroup) SetPk(v string) { + o.Pk = v +} + +// GetNumPk returns the NumPk field value +func (o *PartialGroup) GetNumPk() int32 { + if o == nil { + var ret int32 + return ret + } + + return o.NumPk +} + +// GetNumPkOk returns a tuple with the NumPk field value +// and a boolean to check if the value has been set. +func (o *PartialGroup) GetNumPkOk() (*int32, bool) { + if o == nil { + return nil, false + } + return &o.NumPk, true +} + +// SetNumPk sets field value +func (o *PartialGroup) SetNumPk(v int32) { + o.NumPk = v +} + +// GetName returns the Name field value +func (o *PartialGroup) GetName() string { + if o == nil { + var ret string + return ret + } + + return o.Name +} + +// GetNameOk returns a tuple with the Name field value +// and a boolean to check if the value has been set. +func (o *PartialGroup) GetNameOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Name, true +} + +// SetName sets field value +func (o *PartialGroup) SetName(v string) { + o.Name = v +} + +// GetIsSuperuser returns the IsSuperuser field value if set, zero value otherwise. +func (o *PartialGroup) GetIsSuperuser() bool { + if o == nil || IsNil(o.IsSuperuser) { + var ret bool + return ret + } + return *o.IsSuperuser +} + +// GetIsSuperuserOk returns a tuple with the IsSuperuser field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *PartialGroup) GetIsSuperuserOk() (*bool, bool) { + if o == nil || IsNil(o.IsSuperuser) { + return nil, false + } + return o.IsSuperuser, true +} + +// HasIsSuperuser returns a boolean if a field has been set. +func (o *PartialGroup) HasIsSuperuser() bool { + if o != nil && !IsNil(o.IsSuperuser) { + return true + } + + return false +} + +// SetIsSuperuser gets a reference to the given bool and assigns it to the IsSuperuser field. +func (o *PartialGroup) SetIsSuperuser(v bool) { + o.IsSuperuser = &v +} + +// GetAttributes returns the Attributes field value if set, zero value otherwise. +func (o *PartialGroup) GetAttributes() map[string]interface{} { + if o == nil || IsNil(o.Attributes) { + var ret map[string]interface{} + return ret + } + return o.Attributes +} + +// GetAttributesOk returns a tuple with the Attributes field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *PartialGroup) GetAttributesOk() (map[string]interface{}, bool) { + if o == nil || IsNil(o.Attributes) { + return map[string]interface{}{}, false + } + return o.Attributes, true +} + +// HasAttributes returns a boolean if a field has been set. +func (o *PartialGroup) HasAttributes() bool { + if o != nil && !IsNil(o.Attributes) { + return true + } + + return false +} + +// SetAttributes gets a reference to the given map[string]interface{} and assigns it to the Attributes field. +func (o *PartialGroup) SetAttributes(v map[string]interface{}) { + o.Attributes = v +} + +func (o PartialGroup) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o PartialGroup) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + toSerialize["pk"] = o.Pk + toSerialize["num_pk"] = o.NumPk + toSerialize["name"] = o.Name + if !IsNil(o.IsSuperuser) { + toSerialize["is_superuser"] = o.IsSuperuser + } + if !IsNil(o.Attributes) { + toSerialize["attributes"] = o.Attributes + } + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *PartialGroup) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "pk", + "num_pk", + "name", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varPartialGroup := _PartialGroup{} + + err = json.Unmarshal(data, &varPartialGroup) + + if err != nil { + return err + } + + *o = PartialGroup(varPartialGroup) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "pk") + delete(additionalProperties, "num_pk") + delete(additionalProperties, "name") + delete(additionalProperties, "is_superuser") + delete(additionalProperties, "attributes") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullablePartialGroup struct { + value *PartialGroup + isSet bool +} + +func (v NullablePartialGroup) Get() *PartialGroup { + return v.value +} + +func (v *NullablePartialGroup) Set(val *PartialGroup) { + v.value = val + v.isSet = true +} + +func (v NullablePartialGroup) IsSet() bool { + return v.isSet +} + +func (v *NullablePartialGroup) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullablePartialGroup(val *PartialGroup) *NullablePartialGroup { + return &NullablePartialGroup{value: val, isSet: true} +} + +func (v NullablePartialGroup) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullablePartialGroup) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_partial_user.go b/packages/client-go/model_partial_user.go new file mode 100644 index 0000000000..e182b0b1d0 --- /dev/null +++ b/packages/client-go/model_partial_user.go @@ -0,0 +1,417 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" + "time" +) + +// checks if the PartialUser type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &PartialUser{} + +// PartialUser Partial User Serializer, does not include child relations. +type PartialUser struct { + Pk int32 `json:"pk"` + // Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only. + Username string `json:"username" validate:"regexp=^[\\\\w.@+-]+$"` + // User's display name. + Name string `json:"name"` + // Designates whether this user should be treated as active. Unselect this instead of deleting accounts. + IsActive *bool `json:"is_active,omitempty"` + LastLogin NullableTime `json:"last_login,omitempty"` + Email *string `json:"email,omitempty"` + Attributes map[string]interface{} `json:"attributes,omitempty"` + Uid string `json:"uid"` + AdditionalProperties map[string]interface{} +} + +type _PartialUser PartialUser + +// NewPartialUser instantiates a new PartialUser object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewPartialUser(pk int32, username string, name string, uid string) *PartialUser { + this := PartialUser{} + this.Pk = pk + this.Username = username + this.Name = name + this.Uid = uid + return &this +} + +// NewPartialUserWithDefaults instantiates a new PartialUser object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewPartialUserWithDefaults() *PartialUser { + this := PartialUser{} + return &this +} + +// GetPk returns the Pk field value +func (o *PartialUser) GetPk() int32 { + if o == nil { + var ret int32 + return ret + } + + return o.Pk +} + +// GetPkOk returns a tuple with the Pk field value +// and a boolean to check if the value has been set. +func (o *PartialUser) GetPkOk() (*int32, bool) { + if o == nil { + return nil, false + } + return &o.Pk, true +} + +// SetPk sets field value +func (o *PartialUser) SetPk(v int32) { + o.Pk = v +} + +// GetUsername returns the Username field value +func (o *PartialUser) GetUsername() string { + if o == nil { + var ret string + return ret + } + + return o.Username +} + +// GetUsernameOk returns a tuple with the Username field value +// and a boolean to check if the value has been set. +func (o *PartialUser) GetUsernameOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Username, true +} + +// SetUsername sets field value +func (o *PartialUser) SetUsername(v string) { + o.Username = v +} + +// GetName returns the Name field value +func (o *PartialUser) GetName() string { + if o == nil { + var ret string + return ret + } + + return o.Name +} + +// GetNameOk returns a tuple with the Name field value +// and a boolean to check if the value has been set. +func (o *PartialUser) GetNameOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Name, true +} + +// SetName sets field value +func (o *PartialUser) SetName(v string) { + o.Name = v +} + +// GetIsActive returns the IsActive field value if set, zero value otherwise. +func (o *PartialUser) GetIsActive() bool { + if o == nil || IsNil(o.IsActive) { + var ret bool + return ret + } + return *o.IsActive +} + +// GetIsActiveOk returns a tuple with the IsActive field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *PartialUser) GetIsActiveOk() (*bool, bool) { + if o == nil || IsNil(o.IsActive) { + return nil, false + } + return o.IsActive, true +} + +// HasIsActive returns a boolean if a field has been set. +func (o *PartialUser) HasIsActive() bool { + if o != nil && !IsNil(o.IsActive) { + return true + } + + return false +} + +// SetIsActive gets a reference to the given bool and assigns it to the IsActive field. +func (o *PartialUser) SetIsActive(v bool) { + o.IsActive = &v +} + +// GetLastLogin returns the LastLogin field value if set, zero value otherwise (both if not set or set to explicit null). +func (o *PartialUser) GetLastLogin() time.Time { + if o == nil || IsNil(o.LastLogin.Get()) { + var ret time.Time + return ret + } + return *o.LastLogin.Get() +} + +// GetLastLoginOk returns a tuple with the LastLogin field value if set, nil otherwise +// and a boolean to check if the value has been set. +// NOTE: If the value is an explicit nil, `nil, true` will be returned +func (o *PartialUser) GetLastLoginOk() (*time.Time, bool) { + if o == nil { + return nil, false + } + return o.LastLogin.Get(), o.LastLogin.IsSet() +} + +// HasLastLogin returns a boolean if a field has been set. +func (o *PartialUser) HasLastLogin() bool { + if o != nil && o.LastLogin.IsSet() { + return true + } + + return false +} + +// SetLastLogin gets a reference to the given NullableTime and assigns it to the LastLogin field. +func (o *PartialUser) SetLastLogin(v time.Time) { + o.LastLogin.Set(&v) +} + +// SetLastLoginNil sets the value for LastLogin to be an explicit nil +func (o *PartialUser) SetLastLoginNil() { + o.LastLogin.Set(nil) +} + +// UnsetLastLogin ensures that no value is present for LastLogin, not even an explicit nil +func (o *PartialUser) UnsetLastLogin() { + o.LastLogin.Unset() +} + +// GetEmail returns the Email field value if set, zero value otherwise. +func (o *PartialUser) GetEmail() string { + if o == nil || IsNil(o.Email) { + var ret string + return ret + } + return *o.Email +} + +// GetEmailOk returns a tuple with the Email field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *PartialUser) GetEmailOk() (*string, bool) { + if o == nil || IsNil(o.Email) { + return nil, false + } + return o.Email, true +} + +// HasEmail returns a boolean if a field has been set. +func (o *PartialUser) HasEmail() bool { + if o != nil && !IsNil(o.Email) { + return true + } + + return false +} + +// SetEmail gets a reference to the given string and assigns it to the Email field. +func (o *PartialUser) SetEmail(v string) { + o.Email = &v +} + +// GetAttributes returns the Attributes field value if set, zero value otherwise. +func (o *PartialUser) GetAttributes() map[string]interface{} { + if o == nil || IsNil(o.Attributes) { + var ret map[string]interface{} + return ret + } + return o.Attributes +} + +// GetAttributesOk returns a tuple with the Attributes field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *PartialUser) GetAttributesOk() (map[string]interface{}, bool) { + if o == nil || IsNil(o.Attributes) { + return map[string]interface{}{}, false + } + return o.Attributes, true +} + +// HasAttributes returns a boolean if a field has been set. +func (o *PartialUser) HasAttributes() bool { + if o != nil && !IsNil(o.Attributes) { + return true + } + + return false +} + +// SetAttributes gets a reference to the given map[string]interface{} and assigns it to the Attributes field. +func (o *PartialUser) SetAttributes(v map[string]interface{}) { + o.Attributes = v +} + +// GetUid returns the Uid field value +func (o *PartialUser) GetUid() string { + if o == nil { + var ret string + return ret + } + + return o.Uid +} + +// GetUidOk returns a tuple with the Uid field value +// and a boolean to check if the value has been set. +func (o *PartialUser) GetUidOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Uid, true +} + +// SetUid sets field value +func (o *PartialUser) SetUid(v string) { + o.Uid = v +} + +func (o PartialUser) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o PartialUser) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + toSerialize["pk"] = o.Pk + toSerialize["username"] = o.Username + toSerialize["name"] = o.Name + if !IsNil(o.IsActive) { + toSerialize["is_active"] = o.IsActive + } + if o.LastLogin.IsSet() { + toSerialize["last_login"] = o.LastLogin.Get() + } + if !IsNil(o.Email) { + toSerialize["email"] = o.Email + } + if !IsNil(o.Attributes) { + toSerialize["attributes"] = o.Attributes + } + toSerialize["uid"] = o.Uid + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *PartialUser) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "pk", + "username", + "name", + "uid", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varPartialUser := _PartialUser{} + + err = json.Unmarshal(data, &varPartialUser) + + if err != nil { + return err + } + + *o = PartialUser(varPartialUser) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "pk") + delete(additionalProperties, "username") + delete(additionalProperties, "name") + delete(additionalProperties, "is_active") + delete(additionalProperties, "last_login") + delete(additionalProperties, "email") + delete(additionalProperties, "attributes") + delete(additionalProperties, "uid") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullablePartialUser struct { + value *PartialUser + isSet bool +} + +func (v NullablePartialUser) Get() *PartialUser { + return v.value +} + +func (v *NullablePartialUser) Set(val *PartialUser) { + v.value = val + v.isSet = true +} + +func (v NullablePartialUser) IsSet() bool { + return v.isSet +} + +func (v *NullablePartialUser) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullablePartialUser(val *PartialUser) *NullablePartialUser { + return &NullablePartialUser{value: val, isSet: true} +} + +func (v NullablePartialUser) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullablePartialUser) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_password_challenge.go b/packages/client-go/model_password_challenge.go new file mode 100644 index 0000000000..4a4c853b52 --- /dev/null +++ b/packages/client-go/model_password_challenge.go @@ -0,0 +1,389 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// checks if the PasswordChallenge type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &PasswordChallenge{} + +// PasswordChallenge Password challenge UI fields +type PasswordChallenge struct { + FlowInfo *ContextualFlowInfo `json:"flow_info,omitempty"` + Component *string `json:"component,omitempty"` + ResponseErrors *map[string][]ErrorDetail `json:"response_errors,omitempty"` + PendingUser string `json:"pending_user"` + PendingUserAvatar string `json:"pending_user_avatar"` + RecoveryUrl *string `json:"recovery_url,omitempty"` + AllowShowPassword *bool `json:"allow_show_password,omitempty"` + AdditionalProperties map[string]interface{} +} + +type _PasswordChallenge PasswordChallenge + +// NewPasswordChallenge instantiates a new PasswordChallenge object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewPasswordChallenge(pendingUser string, pendingUserAvatar string) *PasswordChallenge { + this := PasswordChallenge{} + var component string = "ak-stage-password" + this.Component = &component + this.PendingUser = pendingUser + this.PendingUserAvatar = pendingUserAvatar + var allowShowPassword bool = false + this.AllowShowPassword = &allowShowPassword + return &this +} + +// NewPasswordChallengeWithDefaults instantiates a new PasswordChallenge object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewPasswordChallengeWithDefaults() *PasswordChallenge { + this := PasswordChallenge{} + var component string = "ak-stage-password" + this.Component = &component + var allowShowPassword bool = false + this.AllowShowPassword = &allowShowPassword + return &this +} + +// GetFlowInfo returns the FlowInfo field value if set, zero value otherwise. +func (o *PasswordChallenge) GetFlowInfo() ContextualFlowInfo { + if o == nil || IsNil(o.FlowInfo) { + var ret ContextualFlowInfo + return ret + } + return *o.FlowInfo +} + +// GetFlowInfoOk returns a tuple with the FlowInfo field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *PasswordChallenge) GetFlowInfoOk() (*ContextualFlowInfo, bool) { + if o == nil || IsNil(o.FlowInfo) { + return nil, false + } + return o.FlowInfo, true +} + +// HasFlowInfo returns a boolean if a field has been set. +func (o *PasswordChallenge) HasFlowInfo() bool { + if o != nil && !IsNil(o.FlowInfo) { + return true + } + + return false +} + +// SetFlowInfo gets a reference to the given ContextualFlowInfo and assigns it to the FlowInfo field. +func (o *PasswordChallenge) SetFlowInfo(v ContextualFlowInfo) { + o.FlowInfo = &v +} + +// GetComponent returns the Component field value if set, zero value otherwise. +func (o *PasswordChallenge) GetComponent() string { + if o == nil || IsNil(o.Component) { + var ret string + return ret + } + return *o.Component +} + +// GetComponentOk returns a tuple with the Component field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *PasswordChallenge) GetComponentOk() (*string, bool) { + if o == nil || IsNil(o.Component) { + return nil, false + } + return o.Component, true +} + +// HasComponent returns a boolean if a field has been set. +func (o *PasswordChallenge) HasComponent() bool { + if o != nil && !IsNil(o.Component) { + return true + } + + return false +} + +// SetComponent gets a reference to the given string and assigns it to the Component field. +func (o *PasswordChallenge) SetComponent(v string) { + o.Component = &v +} + +// GetResponseErrors returns the ResponseErrors field value if set, zero value otherwise. +func (o *PasswordChallenge) GetResponseErrors() map[string][]ErrorDetail { + if o == nil || IsNil(o.ResponseErrors) { + var ret map[string][]ErrorDetail + return ret + } + return *o.ResponseErrors +} + +// GetResponseErrorsOk returns a tuple with the ResponseErrors field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *PasswordChallenge) GetResponseErrorsOk() (*map[string][]ErrorDetail, bool) { + if o == nil || IsNil(o.ResponseErrors) { + return nil, false + } + return o.ResponseErrors, true +} + +// HasResponseErrors returns a boolean if a field has been set. +func (o *PasswordChallenge) HasResponseErrors() bool { + if o != nil && !IsNil(o.ResponseErrors) { + return true + } + + return false +} + +// SetResponseErrors gets a reference to the given map[string][]ErrorDetail and assigns it to the ResponseErrors field. +func (o *PasswordChallenge) SetResponseErrors(v map[string][]ErrorDetail) { + o.ResponseErrors = &v +} + +// GetPendingUser returns the PendingUser field value +func (o *PasswordChallenge) GetPendingUser() string { + if o == nil { + var ret string + return ret + } + + return o.PendingUser +} + +// GetPendingUserOk returns a tuple with the PendingUser field value +// and a boolean to check if the value has been set. +func (o *PasswordChallenge) GetPendingUserOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.PendingUser, true +} + +// SetPendingUser sets field value +func (o *PasswordChallenge) SetPendingUser(v string) { + o.PendingUser = v +} + +// GetPendingUserAvatar returns the PendingUserAvatar field value +func (o *PasswordChallenge) GetPendingUserAvatar() string { + if o == nil { + var ret string + return ret + } + + return o.PendingUserAvatar +} + +// GetPendingUserAvatarOk returns a tuple with the PendingUserAvatar field value +// and a boolean to check if the value has been set. +func (o *PasswordChallenge) GetPendingUserAvatarOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.PendingUserAvatar, true +} + +// SetPendingUserAvatar sets field value +func (o *PasswordChallenge) SetPendingUserAvatar(v string) { + o.PendingUserAvatar = v +} + +// GetRecoveryUrl returns the RecoveryUrl field value if set, zero value otherwise. +func (o *PasswordChallenge) GetRecoveryUrl() string { + if o == nil || IsNil(o.RecoveryUrl) { + var ret string + return ret + } + return *o.RecoveryUrl +} + +// GetRecoveryUrlOk returns a tuple with the RecoveryUrl field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *PasswordChallenge) GetRecoveryUrlOk() (*string, bool) { + if o == nil || IsNil(o.RecoveryUrl) { + return nil, false + } + return o.RecoveryUrl, true +} + +// HasRecoveryUrl returns a boolean if a field has been set. +func (o *PasswordChallenge) HasRecoveryUrl() bool { + if o != nil && !IsNil(o.RecoveryUrl) { + return true + } + + return false +} + +// SetRecoveryUrl gets a reference to the given string and assigns it to the RecoveryUrl field. +func (o *PasswordChallenge) SetRecoveryUrl(v string) { + o.RecoveryUrl = &v +} + +// GetAllowShowPassword returns the AllowShowPassword field value if set, zero value otherwise. +func (o *PasswordChallenge) GetAllowShowPassword() bool { + if o == nil || IsNil(o.AllowShowPassword) { + var ret bool + return ret + } + return *o.AllowShowPassword +} + +// GetAllowShowPasswordOk returns a tuple with the AllowShowPassword field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *PasswordChallenge) GetAllowShowPasswordOk() (*bool, bool) { + if o == nil || IsNil(o.AllowShowPassword) { + return nil, false + } + return o.AllowShowPassword, true +} + +// HasAllowShowPassword returns a boolean if a field has been set. +func (o *PasswordChallenge) HasAllowShowPassword() bool { + if o != nil && !IsNil(o.AllowShowPassword) { + return true + } + + return false +} + +// SetAllowShowPassword gets a reference to the given bool and assigns it to the AllowShowPassword field. +func (o *PasswordChallenge) SetAllowShowPassword(v bool) { + o.AllowShowPassword = &v +} + +func (o PasswordChallenge) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o PasswordChallenge) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.FlowInfo) { + toSerialize["flow_info"] = o.FlowInfo + } + if !IsNil(o.Component) { + toSerialize["component"] = o.Component + } + if !IsNil(o.ResponseErrors) { + toSerialize["response_errors"] = o.ResponseErrors + } + toSerialize["pending_user"] = o.PendingUser + toSerialize["pending_user_avatar"] = o.PendingUserAvatar + if !IsNil(o.RecoveryUrl) { + toSerialize["recovery_url"] = o.RecoveryUrl + } + if !IsNil(o.AllowShowPassword) { + toSerialize["allow_show_password"] = o.AllowShowPassword + } + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *PasswordChallenge) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "pending_user", + "pending_user_avatar", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varPasswordChallenge := _PasswordChallenge{} + + err = json.Unmarshal(data, &varPasswordChallenge) + + if err != nil { + return err + } + + *o = PasswordChallenge(varPasswordChallenge) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "flow_info") + delete(additionalProperties, "component") + delete(additionalProperties, "response_errors") + delete(additionalProperties, "pending_user") + delete(additionalProperties, "pending_user_avatar") + delete(additionalProperties, "recovery_url") + delete(additionalProperties, "allow_show_password") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullablePasswordChallenge struct { + value *PasswordChallenge + isSet bool +} + +func (v NullablePasswordChallenge) Get() *PasswordChallenge { + return v.value +} + +func (v *NullablePasswordChallenge) Set(val *PasswordChallenge) { + v.value = val + v.isSet = true +} + +func (v NullablePasswordChallenge) IsSet() bool { + return v.isSet +} + +func (v *NullablePasswordChallenge) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullablePasswordChallenge(val *PasswordChallenge) *NullablePasswordChallenge { + return &NullablePasswordChallenge{value: val, isSet: true} +} + +func (v NullablePasswordChallenge) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullablePasswordChallenge) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_password_challenge_response_request.go b/packages/client-go/model_password_challenge_response_request.go new file mode 100644 index 0000000000..cdd451aaec --- /dev/null +++ b/packages/client-go/model_password_challenge_response_request.go @@ -0,0 +1,208 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// checks if the PasswordChallengeResponseRequest type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &PasswordChallengeResponseRequest{} + +// PasswordChallengeResponseRequest Password challenge response +type PasswordChallengeResponseRequest struct { + Component *string `json:"component,omitempty"` + Password string `json:"password"` + AdditionalProperties map[string]interface{} +} + +type _PasswordChallengeResponseRequest PasswordChallengeResponseRequest + +// NewPasswordChallengeResponseRequest instantiates a new PasswordChallengeResponseRequest object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewPasswordChallengeResponseRequest(password string) *PasswordChallengeResponseRequest { + this := PasswordChallengeResponseRequest{} + var component string = "ak-stage-password" + this.Component = &component + this.Password = password + return &this +} + +// NewPasswordChallengeResponseRequestWithDefaults instantiates a new PasswordChallengeResponseRequest object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewPasswordChallengeResponseRequestWithDefaults() *PasswordChallengeResponseRequest { + this := PasswordChallengeResponseRequest{} + var component string = "ak-stage-password" + this.Component = &component + return &this +} + +// GetComponent returns the Component field value if set, zero value otherwise. +func (o *PasswordChallengeResponseRequest) GetComponent() string { + if o == nil || IsNil(o.Component) { + var ret string + return ret + } + return *o.Component +} + +// GetComponentOk returns a tuple with the Component field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *PasswordChallengeResponseRequest) GetComponentOk() (*string, bool) { + if o == nil || IsNil(o.Component) { + return nil, false + } + return o.Component, true +} + +// HasComponent returns a boolean if a field has been set. +func (o *PasswordChallengeResponseRequest) HasComponent() bool { + if o != nil && !IsNil(o.Component) { + return true + } + + return false +} + +// SetComponent gets a reference to the given string and assigns it to the Component field. +func (o *PasswordChallengeResponseRequest) SetComponent(v string) { + o.Component = &v +} + +// GetPassword returns the Password field value +func (o *PasswordChallengeResponseRequest) GetPassword() string { + if o == nil { + var ret string + return ret + } + + return o.Password +} + +// GetPasswordOk returns a tuple with the Password field value +// and a boolean to check if the value has been set. +func (o *PasswordChallengeResponseRequest) GetPasswordOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Password, true +} + +// SetPassword sets field value +func (o *PasswordChallengeResponseRequest) SetPassword(v string) { + o.Password = v +} + +func (o PasswordChallengeResponseRequest) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o PasswordChallengeResponseRequest) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.Component) { + toSerialize["component"] = o.Component + } + toSerialize["password"] = o.Password + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *PasswordChallengeResponseRequest) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "password", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varPasswordChallengeResponseRequest := _PasswordChallengeResponseRequest{} + + err = json.Unmarshal(data, &varPasswordChallengeResponseRequest) + + if err != nil { + return err + } + + *o = PasswordChallengeResponseRequest(varPasswordChallengeResponseRequest) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "component") + delete(additionalProperties, "password") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullablePasswordChallengeResponseRequest struct { + value *PasswordChallengeResponseRequest + isSet bool +} + +func (v NullablePasswordChallengeResponseRequest) Get() *PasswordChallengeResponseRequest { + return v.value +} + +func (v *NullablePasswordChallengeResponseRequest) Set(val *PasswordChallengeResponseRequest) { + v.value = val + v.isSet = true +} + +func (v NullablePasswordChallengeResponseRequest) IsSet() bool { + return v.isSet +} + +func (v *NullablePasswordChallengeResponseRequest) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullablePasswordChallengeResponseRequest(val *PasswordChallengeResponseRequest) *NullablePasswordChallengeResponseRequest { + return &NullablePasswordChallengeResponseRequest{value: val, isSet: true} +} + +func (v NullablePasswordChallengeResponseRequest) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullablePasswordChallengeResponseRequest) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_plex_authentication_challenge.go b/packages/client-go/model_plex_authentication_challenge.go new file mode 100644 index 0000000000..ebfa1d66cc --- /dev/null +++ b/packages/client-go/model_plex_authentication_challenge.go @@ -0,0 +1,311 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// checks if the PlexAuthenticationChallenge type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &PlexAuthenticationChallenge{} + +// PlexAuthenticationChallenge Challenge shown to the user in identification stage +type PlexAuthenticationChallenge struct { + FlowInfo *ContextualFlowInfo `json:"flow_info,omitempty"` + Component *string `json:"component,omitempty"` + ResponseErrors *map[string][]ErrorDetail `json:"response_errors,omitempty"` + ClientId string `json:"client_id"` + Slug string `json:"slug"` + AdditionalProperties map[string]interface{} +} + +type _PlexAuthenticationChallenge PlexAuthenticationChallenge + +// NewPlexAuthenticationChallenge instantiates a new PlexAuthenticationChallenge object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewPlexAuthenticationChallenge(clientId string, slug string) *PlexAuthenticationChallenge { + this := PlexAuthenticationChallenge{} + var component string = "ak-source-plex" + this.Component = &component + this.ClientId = clientId + this.Slug = slug + return &this +} + +// NewPlexAuthenticationChallengeWithDefaults instantiates a new PlexAuthenticationChallenge object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewPlexAuthenticationChallengeWithDefaults() *PlexAuthenticationChallenge { + this := PlexAuthenticationChallenge{} + var component string = "ak-source-plex" + this.Component = &component + return &this +} + +// GetFlowInfo returns the FlowInfo field value if set, zero value otherwise. +func (o *PlexAuthenticationChallenge) GetFlowInfo() ContextualFlowInfo { + if o == nil || IsNil(o.FlowInfo) { + var ret ContextualFlowInfo + return ret + } + return *o.FlowInfo +} + +// GetFlowInfoOk returns a tuple with the FlowInfo field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *PlexAuthenticationChallenge) GetFlowInfoOk() (*ContextualFlowInfo, bool) { + if o == nil || IsNil(o.FlowInfo) { + return nil, false + } + return o.FlowInfo, true +} + +// HasFlowInfo returns a boolean if a field has been set. +func (o *PlexAuthenticationChallenge) HasFlowInfo() bool { + if o != nil && !IsNil(o.FlowInfo) { + return true + } + + return false +} + +// SetFlowInfo gets a reference to the given ContextualFlowInfo and assigns it to the FlowInfo field. +func (o *PlexAuthenticationChallenge) SetFlowInfo(v ContextualFlowInfo) { + o.FlowInfo = &v +} + +// GetComponent returns the Component field value if set, zero value otherwise. +func (o *PlexAuthenticationChallenge) GetComponent() string { + if o == nil || IsNil(o.Component) { + var ret string + return ret + } + return *o.Component +} + +// GetComponentOk returns a tuple with the Component field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *PlexAuthenticationChallenge) GetComponentOk() (*string, bool) { + if o == nil || IsNil(o.Component) { + return nil, false + } + return o.Component, true +} + +// HasComponent returns a boolean if a field has been set. +func (o *PlexAuthenticationChallenge) HasComponent() bool { + if o != nil && !IsNil(o.Component) { + return true + } + + return false +} + +// SetComponent gets a reference to the given string and assigns it to the Component field. +func (o *PlexAuthenticationChallenge) SetComponent(v string) { + o.Component = &v +} + +// GetResponseErrors returns the ResponseErrors field value if set, zero value otherwise. +func (o *PlexAuthenticationChallenge) GetResponseErrors() map[string][]ErrorDetail { + if o == nil || IsNil(o.ResponseErrors) { + var ret map[string][]ErrorDetail + return ret + } + return *o.ResponseErrors +} + +// GetResponseErrorsOk returns a tuple with the ResponseErrors field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *PlexAuthenticationChallenge) GetResponseErrorsOk() (*map[string][]ErrorDetail, bool) { + if o == nil || IsNil(o.ResponseErrors) { + return nil, false + } + return o.ResponseErrors, true +} + +// HasResponseErrors returns a boolean if a field has been set. +func (o *PlexAuthenticationChallenge) HasResponseErrors() bool { + if o != nil && !IsNil(o.ResponseErrors) { + return true + } + + return false +} + +// SetResponseErrors gets a reference to the given map[string][]ErrorDetail and assigns it to the ResponseErrors field. +func (o *PlexAuthenticationChallenge) SetResponseErrors(v map[string][]ErrorDetail) { + o.ResponseErrors = &v +} + +// GetClientId returns the ClientId field value +func (o *PlexAuthenticationChallenge) GetClientId() string { + if o == nil { + var ret string + return ret + } + + return o.ClientId +} + +// GetClientIdOk returns a tuple with the ClientId field value +// and a boolean to check if the value has been set. +func (o *PlexAuthenticationChallenge) GetClientIdOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.ClientId, true +} + +// SetClientId sets field value +func (o *PlexAuthenticationChallenge) SetClientId(v string) { + o.ClientId = v +} + +// GetSlug returns the Slug field value +func (o *PlexAuthenticationChallenge) GetSlug() string { + if o == nil { + var ret string + return ret + } + + return o.Slug +} + +// GetSlugOk returns a tuple with the Slug field value +// and a boolean to check if the value has been set. +func (o *PlexAuthenticationChallenge) GetSlugOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Slug, true +} + +// SetSlug sets field value +func (o *PlexAuthenticationChallenge) SetSlug(v string) { + o.Slug = v +} + +func (o PlexAuthenticationChallenge) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o PlexAuthenticationChallenge) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.FlowInfo) { + toSerialize["flow_info"] = o.FlowInfo + } + if !IsNil(o.Component) { + toSerialize["component"] = o.Component + } + if !IsNil(o.ResponseErrors) { + toSerialize["response_errors"] = o.ResponseErrors + } + toSerialize["client_id"] = o.ClientId + toSerialize["slug"] = o.Slug + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *PlexAuthenticationChallenge) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "client_id", + "slug", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varPlexAuthenticationChallenge := _PlexAuthenticationChallenge{} + + err = json.Unmarshal(data, &varPlexAuthenticationChallenge) + + if err != nil { + return err + } + + *o = PlexAuthenticationChallenge(varPlexAuthenticationChallenge) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "flow_info") + delete(additionalProperties, "component") + delete(additionalProperties, "response_errors") + delete(additionalProperties, "client_id") + delete(additionalProperties, "slug") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullablePlexAuthenticationChallenge struct { + value *PlexAuthenticationChallenge + isSet bool +} + +func (v NullablePlexAuthenticationChallenge) Get() *PlexAuthenticationChallenge { + return v.value +} + +func (v *NullablePlexAuthenticationChallenge) Set(val *PlexAuthenticationChallenge) { + v.value = val + v.isSet = true +} + +func (v NullablePlexAuthenticationChallenge) IsSet() bool { + return v.isSet +} + +func (v *NullablePlexAuthenticationChallenge) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullablePlexAuthenticationChallenge(val *PlexAuthenticationChallenge) *NullablePlexAuthenticationChallenge { + return &NullablePlexAuthenticationChallenge{value: val, isSet: true} +} + +func (v NullablePlexAuthenticationChallenge) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullablePlexAuthenticationChallenge) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_plex_authentication_challenge_response_request.go b/packages/client-go/model_plex_authentication_challenge_response_request.go new file mode 100644 index 0000000000..3e84f53ab4 --- /dev/null +++ b/packages/client-go/model_plex_authentication_challenge_response_request.go @@ -0,0 +1,158 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" +) + +// checks if the PlexAuthenticationChallengeResponseRequest type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &PlexAuthenticationChallengeResponseRequest{} + +// PlexAuthenticationChallengeResponseRequest Pseudo class for plex response +type PlexAuthenticationChallengeResponseRequest struct { + Component *string `json:"component,omitempty"` + AdditionalProperties map[string]interface{} +} + +type _PlexAuthenticationChallengeResponseRequest PlexAuthenticationChallengeResponseRequest + +// NewPlexAuthenticationChallengeResponseRequest instantiates a new PlexAuthenticationChallengeResponseRequest object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewPlexAuthenticationChallengeResponseRequest() *PlexAuthenticationChallengeResponseRequest { + this := PlexAuthenticationChallengeResponseRequest{} + var component string = "ak-source-plex" + this.Component = &component + return &this +} + +// NewPlexAuthenticationChallengeResponseRequestWithDefaults instantiates a new PlexAuthenticationChallengeResponseRequest object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewPlexAuthenticationChallengeResponseRequestWithDefaults() *PlexAuthenticationChallengeResponseRequest { + this := PlexAuthenticationChallengeResponseRequest{} + var component string = "ak-source-plex" + this.Component = &component + return &this +} + +// GetComponent returns the Component field value if set, zero value otherwise. +func (o *PlexAuthenticationChallengeResponseRequest) GetComponent() string { + if o == nil || IsNil(o.Component) { + var ret string + return ret + } + return *o.Component +} + +// GetComponentOk returns a tuple with the Component field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *PlexAuthenticationChallengeResponseRequest) GetComponentOk() (*string, bool) { + if o == nil || IsNil(o.Component) { + return nil, false + } + return o.Component, true +} + +// HasComponent returns a boolean if a field has been set. +func (o *PlexAuthenticationChallengeResponseRequest) HasComponent() bool { + if o != nil && !IsNil(o.Component) { + return true + } + + return false +} + +// SetComponent gets a reference to the given string and assigns it to the Component field. +func (o *PlexAuthenticationChallengeResponseRequest) SetComponent(v string) { + o.Component = &v +} + +func (o PlexAuthenticationChallengeResponseRequest) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o PlexAuthenticationChallengeResponseRequest) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.Component) { + toSerialize["component"] = o.Component + } + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *PlexAuthenticationChallengeResponseRequest) UnmarshalJSON(data []byte) (err error) { + varPlexAuthenticationChallengeResponseRequest := _PlexAuthenticationChallengeResponseRequest{} + + err = json.Unmarshal(data, &varPlexAuthenticationChallengeResponseRequest) + + if err != nil { + return err + } + + *o = PlexAuthenticationChallengeResponseRequest(varPlexAuthenticationChallengeResponseRequest) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "component") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullablePlexAuthenticationChallengeResponseRequest struct { + value *PlexAuthenticationChallengeResponseRequest + isSet bool +} + +func (v NullablePlexAuthenticationChallengeResponseRequest) Get() *PlexAuthenticationChallengeResponseRequest { + return v.value +} + +func (v *NullablePlexAuthenticationChallengeResponseRequest) Set(val *PlexAuthenticationChallengeResponseRequest) { + v.value = val + v.isSet = true +} + +func (v NullablePlexAuthenticationChallengeResponseRequest) IsSet() bool { + return v.isSet +} + +func (v *NullablePlexAuthenticationChallengeResponseRequest) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullablePlexAuthenticationChallengeResponseRequest(val *PlexAuthenticationChallengeResponseRequest) *NullablePlexAuthenticationChallengeResponseRequest { + return &NullablePlexAuthenticationChallengeResponseRequest{value: val, isSet: true} +} + +func (v NullablePlexAuthenticationChallengeResponseRequest) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullablePlexAuthenticationChallengeResponseRequest) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_policy_test_result.go b/packages/client-go/model_policy_test_result.go new file mode 100644 index 0000000000..e4c5d3f5c6 --- /dev/null +++ b/packages/client-go/model_policy_test_result.go @@ -0,0 +1,225 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// checks if the PolicyTestResult type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &PolicyTestResult{} + +// PolicyTestResult result of a policy test +type PolicyTestResult struct { + Passing bool `json:"passing"` + Messages []string `json:"messages"` + LogMessages []LogEvent `json:"log_messages"` + AdditionalProperties map[string]interface{} +} + +type _PolicyTestResult PolicyTestResult + +// NewPolicyTestResult instantiates a new PolicyTestResult object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewPolicyTestResult(passing bool, messages []string, logMessages []LogEvent) *PolicyTestResult { + this := PolicyTestResult{} + this.Passing = passing + this.Messages = messages + this.LogMessages = logMessages + return &this +} + +// NewPolicyTestResultWithDefaults instantiates a new PolicyTestResult object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewPolicyTestResultWithDefaults() *PolicyTestResult { + this := PolicyTestResult{} + return &this +} + +// GetPassing returns the Passing field value +func (o *PolicyTestResult) GetPassing() bool { + if o == nil { + var ret bool + return ret + } + + return o.Passing +} + +// GetPassingOk returns a tuple with the Passing field value +// and a boolean to check if the value has been set. +func (o *PolicyTestResult) GetPassingOk() (*bool, bool) { + if o == nil { + return nil, false + } + return &o.Passing, true +} + +// SetPassing sets field value +func (o *PolicyTestResult) SetPassing(v bool) { + o.Passing = v +} + +// GetMessages returns the Messages field value +func (o *PolicyTestResult) GetMessages() []string { + if o == nil { + var ret []string + return ret + } + + return o.Messages +} + +// GetMessagesOk returns a tuple with the Messages field value +// and a boolean to check if the value has been set. +func (o *PolicyTestResult) GetMessagesOk() ([]string, bool) { + if o == nil { + return nil, false + } + return o.Messages, true +} + +// SetMessages sets field value +func (o *PolicyTestResult) SetMessages(v []string) { + o.Messages = v +} + +// GetLogMessages returns the LogMessages field value +func (o *PolicyTestResult) GetLogMessages() []LogEvent { + if o == nil { + var ret []LogEvent + return ret + } + + return o.LogMessages +} + +// GetLogMessagesOk returns a tuple with the LogMessages field value +// and a boolean to check if the value has been set. +func (o *PolicyTestResult) GetLogMessagesOk() ([]LogEvent, bool) { + if o == nil { + return nil, false + } + return o.LogMessages, true +} + +// SetLogMessages sets field value +func (o *PolicyTestResult) SetLogMessages(v []LogEvent) { + o.LogMessages = v +} + +func (o PolicyTestResult) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o PolicyTestResult) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + toSerialize["passing"] = o.Passing + toSerialize["messages"] = o.Messages + toSerialize["log_messages"] = o.LogMessages + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *PolicyTestResult) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "passing", + "messages", + "log_messages", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varPolicyTestResult := _PolicyTestResult{} + + err = json.Unmarshal(data, &varPolicyTestResult) + + if err != nil { + return err + } + + *o = PolicyTestResult(varPolicyTestResult) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "passing") + delete(additionalProperties, "messages") + delete(additionalProperties, "log_messages") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullablePolicyTestResult struct { + value *PolicyTestResult + isSet bool +} + +func (v NullablePolicyTestResult) Get() *PolicyTestResult { + return v.value +} + +func (v *NullablePolicyTestResult) Set(val *PolicyTestResult) { + v.value = val + v.isSet = true +} + +func (v NullablePolicyTestResult) IsSet() bool { + return v.isSet +} + +func (v *NullablePolicyTestResult) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullablePolicyTestResult(val *PolicyTestResult) *NullablePolicyTestResult { + return &NullablePolicyTestResult{value: val, isSet: true} +} + +func (v NullablePolicyTestResult) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullablePolicyTestResult) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_prompt_challenge.go b/packages/client-go/model_prompt_challenge.go new file mode 100644 index 0000000000..9dd1811aa8 --- /dev/null +++ b/packages/client-go/model_prompt_challenge.go @@ -0,0 +1,282 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// checks if the PromptChallenge type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &PromptChallenge{} + +// PromptChallenge Initial challenge being sent, define fields +type PromptChallenge struct { + FlowInfo *ContextualFlowInfo `json:"flow_info,omitempty"` + Component *string `json:"component,omitempty"` + ResponseErrors *map[string][]ErrorDetail `json:"response_errors,omitempty"` + Fields []StagePrompt `json:"fields"` + AdditionalProperties map[string]interface{} +} + +type _PromptChallenge PromptChallenge + +// NewPromptChallenge instantiates a new PromptChallenge object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewPromptChallenge(fields []StagePrompt) *PromptChallenge { + this := PromptChallenge{} + var component string = "ak-stage-prompt" + this.Component = &component + this.Fields = fields + return &this +} + +// NewPromptChallengeWithDefaults instantiates a new PromptChallenge object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewPromptChallengeWithDefaults() *PromptChallenge { + this := PromptChallenge{} + var component string = "ak-stage-prompt" + this.Component = &component + return &this +} + +// GetFlowInfo returns the FlowInfo field value if set, zero value otherwise. +func (o *PromptChallenge) GetFlowInfo() ContextualFlowInfo { + if o == nil || IsNil(o.FlowInfo) { + var ret ContextualFlowInfo + return ret + } + return *o.FlowInfo +} + +// GetFlowInfoOk returns a tuple with the FlowInfo field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *PromptChallenge) GetFlowInfoOk() (*ContextualFlowInfo, bool) { + if o == nil || IsNil(o.FlowInfo) { + return nil, false + } + return o.FlowInfo, true +} + +// HasFlowInfo returns a boolean if a field has been set. +func (o *PromptChallenge) HasFlowInfo() bool { + if o != nil && !IsNil(o.FlowInfo) { + return true + } + + return false +} + +// SetFlowInfo gets a reference to the given ContextualFlowInfo and assigns it to the FlowInfo field. +func (o *PromptChallenge) SetFlowInfo(v ContextualFlowInfo) { + o.FlowInfo = &v +} + +// GetComponent returns the Component field value if set, zero value otherwise. +func (o *PromptChallenge) GetComponent() string { + if o == nil || IsNil(o.Component) { + var ret string + return ret + } + return *o.Component +} + +// GetComponentOk returns a tuple with the Component field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *PromptChallenge) GetComponentOk() (*string, bool) { + if o == nil || IsNil(o.Component) { + return nil, false + } + return o.Component, true +} + +// HasComponent returns a boolean if a field has been set. +func (o *PromptChallenge) HasComponent() bool { + if o != nil && !IsNil(o.Component) { + return true + } + + return false +} + +// SetComponent gets a reference to the given string and assigns it to the Component field. +func (o *PromptChallenge) SetComponent(v string) { + o.Component = &v +} + +// GetResponseErrors returns the ResponseErrors field value if set, zero value otherwise. +func (o *PromptChallenge) GetResponseErrors() map[string][]ErrorDetail { + if o == nil || IsNil(o.ResponseErrors) { + var ret map[string][]ErrorDetail + return ret + } + return *o.ResponseErrors +} + +// GetResponseErrorsOk returns a tuple with the ResponseErrors field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *PromptChallenge) GetResponseErrorsOk() (*map[string][]ErrorDetail, bool) { + if o == nil || IsNil(o.ResponseErrors) { + return nil, false + } + return o.ResponseErrors, true +} + +// HasResponseErrors returns a boolean if a field has been set. +func (o *PromptChallenge) HasResponseErrors() bool { + if o != nil && !IsNil(o.ResponseErrors) { + return true + } + + return false +} + +// SetResponseErrors gets a reference to the given map[string][]ErrorDetail and assigns it to the ResponseErrors field. +func (o *PromptChallenge) SetResponseErrors(v map[string][]ErrorDetail) { + o.ResponseErrors = &v +} + +// GetFields returns the Fields field value +func (o *PromptChallenge) GetFields() []StagePrompt { + if o == nil { + var ret []StagePrompt + return ret + } + + return o.Fields +} + +// GetFieldsOk returns a tuple with the Fields field value +// and a boolean to check if the value has been set. +func (o *PromptChallenge) GetFieldsOk() ([]StagePrompt, bool) { + if o == nil { + return nil, false + } + return o.Fields, true +} + +// SetFields sets field value +func (o *PromptChallenge) SetFields(v []StagePrompt) { + o.Fields = v +} + +func (o PromptChallenge) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o PromptChallenge) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.FlowInfo) { + toSerialize["flow_info"] = o.FlowInfo + } + if !IsNil(o.Component) { + toSerialize["component"] = o.Component + } + if !IsNil(o.ResponseErrors) { + toSerialize["response_errors"] = o.ResponseErrors + } + toSerialize["fields"] = o.Fields + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *PromptChallenge) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "fields", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varPromptChallenge := _PromptChallenge{} + + err = json.Unmarshal(data, &varPromptChallenge) + + if err != nil { + return err + } + + *o = PromptChallenge(varPromptChallenge) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "flow_info") + delete(additionalProperties, "component") + delete(additionalProperties, "response_errors") + delete(additionalProperties, "fields") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullablePromptChallenge struct { + value *PromptChallenge + isSet bool +} + +func (v NullablePromptChallenge) Get() *PromptChallenge { + return v.value +} + +func (v *NullablePromptChallenge) Set(val *PromptChallenge) { + v.value = val + v.isSet = true +} + +func (v NullablePromptChallenge) IsSet() bool { + return v.isSet +} + +func (v *NullablePromptChallenge) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullablePromptChallenge(val *PromptChallenge) *NullablePromptChallenge { + return &NullablePromptChallenge{value: val, isSet: true} +} + +func (v NullablePromptChallenge) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullablePromptChallenge) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_prompt_challenge_response_request.go b/packages/client-go/model_prompt_challenge_response_request.go new file mode 100644 index 0000000000..06b11b3523 --- /dev/null +++ b/packages/client-go/model_prompt_challenge_response_request.go @@ -0,0 +1,158 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" +) + +// checks if the PromptChallengeResponseRequest type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &PromptChallengeResponseRequest{} + +// PromptChallengeResponseRequest Validate response, fields are dynamically created based on the stage +type PromptChallengeResponseRequest struct { + Component *string `json:"component,omitempty"` + AdditionalProperties map[string]interface{} +} + +type _PromptChallengeResponseRequest PromptChallengeResponseRequest + +// NewPromptChallengeResponseRequest instantiates a new PromptChallengeResponseRequest object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewPromptChallengeResponseRequest() *PromptChallengeResponseRequest { + this := PromptChallengeResponseRequest{} + var component string = "ak-stage-prompt" + this.Component = &component + return &this +} + +// NewPromptChallengeResponseRequestWithDefaults instantiates a new PromptChallengeResponseRequest object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewPromptChallengeResponseRequestWithDefaults() *PromptChallengeResponseRequest { + this := PromptChallengeResponseRequest{} + var component string = "ak-stage-prompt" + this.Component = &component + return &this +} + +// GetComponent returns the Component field value if set, zero value otherwise. +func (o *PromptChallengeResponseRequest) GetComponent() string { + if o == nil || IsNil(o.Component) { + var ret string + return ret + } + return *o.Component +} + +// GetComponentOk returns a tuple with the Component field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *PromptChallengeResponseRequest) GetComponentOk() (*string, bool) { + if o == nil || IsNil(o.Component) { + return nil, false + } + return o.Component, true +} + +// HasComponent returns a boolean if a field has been set. +func (o *PromptChallengeResponseRequest) HasComponent() bool { + if o != nil && !IsNil(o.Component) { + return true + } + + return false +} + +// SetComponent gets a reference to the given string and assigns it to the Component field. +func (o *PromptChallengeResponseRequest) SetComponent(v string) { + o.Component = &v +} + +func (o PromptChallengeResponseRequest) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o PromptChallengeResponseRequest) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.Component) { + toSerialize["component"] = o.Component + } + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *PromptChallengeResponseRequest) UnmarshalJSON(data []byte) (err error) { + varPromptChallengeResponseRequest := _PromptChallengeResponseRequest{} + + err = json.Unmarshal(data, &varPromptChallengeResponseRequest) + + if err != nil { + return err + } + + *o = PromptChallengeResponseRequest(varPromptChallengeResponseRequest) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "component") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullablePromptChallengeResponseRequest struct { + value *PromptChallengeResponseRequest + isSet bool +} + +func (v NullablePromptChallengeResponseRequest) Get() *PromptChallengeResponseRequest { + return v.value +} + +func (v *NullablePromptChallengeResponseRequest) Set(val *PromptChallengeResponseRequest) { + v.value = val + v.isSet = true +} + +func (v NullablePromptChallengeResponseRequest) IsSet() bool { + return v.isSet +} + +func (v *NullablePromptChallengeResponseRequest) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullablePromptChallengeResponseRequest(val *PromptChallengeResponseRequest) *NullablePromptChallengeResponseRequest { + return &NullablePromptChallengeResponseRequest{value: val, isSet: true} +} + +func (v NullablePromptChallengeResponseRequest) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullablePromptChallengeResponseRequest) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_prompt_choice.go b/packages/client-go/model_prompt_choice.go new file mode 100644 index 0000000000..fe5d31d16f --- /dev/null +++ b/packages/client-go/model_prompt_choice.go @@ -0,0 +1,196 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// checks if the PromptChoice type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &PromptChoice{} + +// PromptChoice Serializer for a single Choice field +type PromptChoice struct { + Value string `json:"value"` + Label string `json:"label"` + AdditionalProperties map[string]interface{} +} + +type _PromptChoice PromptChoice + +// NewPromptChoice instantiates a new PromptChoice object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewPromptChoice(value string, label string) *PromptChoice { + this := PromptChoice{} + this.Value = value + this.Label = label + return &this +} + +// NewPromptChoiceWithDefaults instantiates a new PromptChoice object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewPromptChoiceWithDefaults() *PromptChoice { + this := PromptChoice{} + return &this +} + +// GetValue returns the Value field value +func (o *PromptChoice) GetValue() string { + if o == nil { + var ret string + return ret + } + + return o.Value +} + +// GetValueOk returns a tuple with the Value field value +// and a boolean to check if the value has been set. +func (o *PromptChoice) GetValueOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Value, true +} + +// SetValue sets field value +func (o *PromptChoice) SetValue(v string) { + o.Value = v +} + +// GetLabel returns the Label field value +func (o *PromptChoice) GetLabel() string { + if o == nil { + var ret string + return ret + } + + return o.Label +} + +// GetLabelOk returns a tuple with the Label field value +// and a boolean to check if the value has been set. +func (o *PromptChoice) GetLabelOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Label, true +} + +// SetLabel sets field value +func (o *PromptChoice) SetLabel(v string) { + o.Label = v +} + +func (o PromptChoice) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o PromptChoice) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + toSerialize["value"] = o.Value + toSerialize["label"] = o.Label + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *PromptChoice) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "value", + "label", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varPromptChoice := _PromptChoice{} + + err = json.Unmarshal(data, &varPromptChoice) + + if err != nil { + return err + } + + *o = PromptChoice(varPromptChoice) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "value") + delete(additionalProperties, "label") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullablePromptChoice struct { + value *PromptChoice + isSet bool +} + +func (v NullablePromptChoice) Get() *PromptChoice { + return v.value +} + +func (v *NullablePromptChoice) Set(val *PromptChoice) { + v.value = val + v.isSet = true +} + +func (v NullablePromptChoice) IsSet() bool { + return v.isSet +} + +func (v *NullablePromptChoice) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullablePromptChoice(val *PromptChoice) *NullablePromptChoice { + return &NullablePromptChoice{value: val, isSet: true} +} + +func (v NullablePromptChoice) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullablePromptChoice) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_prompt_type_enum.go b/packages/client-go/model_prompt_type_enum.go new file mode 100644 index 0000000000..f1fa6571a1 --- /dev/null +++ b/packages/client-go/model_prompt_type_enum.go @@ -0,0 +1,149 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// PromptTypeEnum the model 'PromptTypeEnum' +type PromptTypeEnum string + +// List of PromptTypeEnum +const ( + PROMPTTYPEENUM_TEXT PromptTypeEnum = "text" + PROMPTTYPEENUM_TEXT_AREA PromptTypeEnum = "text_area" + PROMPTTYPEENUM_TEXT_READ_ONLY PromptTypeEnum = "text_read_only" + PROMPTTYPEENUM_TEXT_AREA_READ_ONLY PromptTypeEnum = "text_area_read_only" + PROMPTTYPEENUM_USERNAME PromptTypeEnum = "username" + PROMPTTYPEENUM_EMAIL PromptTypeEnum = "email" + PROMPTTYPEENUM_PASSWORD PromptTypeEnum = "password" + PROMPTTYPEENUM_NUMBER PromptTypeEnum = "number" + PROMPTTYPEENUM_CHECKBOX PromptTypeEnum = "checkbox" + PROMPTTYPEENUM_RADIO_BUTTON_GROUP PromptTypeEnum = "radio-button-group" + PROMPTTYPEENUM_DROPDOWN PromptTypeEnum = "dropdown" + PROMPTTYPEENUM_DATE PromptTypeEnum = "date" + PROMPTTYPEENUM_DATE_TIME PromptTypeEnum = "date-time" + PROMPTTYPEENUM_FILE PromptTypeEnum = "file" + PROMPTTYPEENUM_SEPARATOR PromptTypeEnum = "separator" + PROMPTTYPEENUM_HIDDEN PromptTypeEnum = "hidden" + PROMPTTYPEENUM_STATIC PromptTypeEnum = "static" + PROMPTTYPEENUM_ALERT_INFO PromptTypeEnum = "alert_info" + PROMPTTYPEENUM_ALERT_WARNING PromptTypeEnum = "alert_warning" + PROMPTTYPEENUM_ALERT_DANGER PromptTypeEnum = "alert_danger" + PROMPTTYPEENUM_AK_LOCALE PromptTypeEnum = "ak-locale" +) + +// All allowed values of PromptTypeEnum enum +var AllowedPromptTypeEnumEnumValues = []PromptTypeEnum{ + "text", + "text_area", + "text_read_only", + "text_area_read_only", + "username", + "email", + "password", + "number", + "checkbox", + "radio-button-group", + "dropdown", + "date", + "date-time", + "file", + "separator", + "hidden", + "static", + "alert_info", + "alert_warning", + "alert_danger", + "ak-locale", +} + +func (v *PromptTypeEnum) UnmarshalJSON(src []byte) error { + var value string + err := json.Unmarshal(src, &value) + if err != nil { + return err + } + enumTypeValue := PromptTypeEnum(value) + for _, existing := range AllowedPromptTypeEnumEnumValues { + if existing == enumTypeValue { + *v = enumTypeValue + return nil + } + } + + return fmt.Errorf("%+v is not a valid PromptTypeEnum", value) +} + +// NewPromptTypeEnumFromValue returns a pointer to a valid PromptTypeEnum +// for the value passed as argument, or an error if the value passed is not allowed by the enum +func NewPromptTypeEnumFromValue(v string) (*PromptTypeEnum, error) { + ev := PromptTypeEnum(v) + if ev.IsValid() { + return &ev, nil + } else { + return nil, fmt.Errorf("invalid value '%v' for PromptTypeEnum: valid values are %v", v, AllowedPromptTypeEnumEnumValues) + } +} + +// IsValid return true if the value is valid for the enum, false otherwise +func (v PromptTypeEnum) IsValid() bool { + for _, existing := range AllowedPromptTypeEnumEnumValues { + if existing == v { + return true + } + } + return false +} + +// Ptr returns reference to PromptTypeEnum value +func (v PromptTypeEnum) Ptr() *PromptTypeEnum { + return &v +} + +type NullablePromptTypeEnum struct { + value *PromptTypeEnum + isSet bool +} + +func (v NullablePromptTypeEnum) Get() *PromptTypeEnum { + return v.value +} + +func (v *NullablePromptTypeEnum) Set(val *PromptTypeEnum) { + v.value = val + v.isSet = true +} + +func (v NullablePromptTypeEnum) IsSet() bool { + return v.isSet +} + +func (v *NullablePromptTypeEnum) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullablePromptTypeEnum(val *PromptTypeEnum) *NullablePromptTypeEnum { + return &NullablePromptTypeEnum{value: val, isSet: true} +} + +func (v NullablePromptTypeEnum) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullablePromptTypeEnum) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_provider.go b/packages/client-go/model_provider.go new file mode 100644 index 0000000000..7d3aab674c --- /dev/null +++ b/packages/client-go/model_provider.go @@ -0,0 +1,590 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// checks if the Provider type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &Provider{} + +// Provider Provider Serializer +type Provider struct { + Pk int32 `json:"pk"` + Name string `json:"name"` + // Flow used for authentication when the associated application is accessed by an un-authenticated user. + AuthenticationFlow NullableString `json:"authentication_flow,omitempty"` + // Flow used when authorizing this provider. + AuthorizationFlow string `json:"authorization_flow"` + // Flow used ending the session from a provider. + InvalidationFlow string `json:"invalidation_flow"` + PropertyMappings []string `json:"property_mappings,omitempty"` + // Get object component so that we know how to edit the object + Component string `json:"component"` + // Internal application name, used in URLs. + AssignedApplicationSlug NullableString `json:"assigned_application_slug"` + // Application's display Name. + AssignedApplicationName NullableString `json:"assigned_application_name"` + // Internal application name, used in URLs. + AssignedBackchannelApplicationSlug NullableString `json:"assigned_backchannel_application_slug"` + // Application's display Name. + AssignedBackchannelApplicationName NullableString `json:"assigned_backchannel_application_name"` + // Return object's verbose_name + VerboseName string `json:"verbose_name"` + // Return object's plural verbose_name + VerboseNamePlural string `json:"verbose_name_plural"` + // Return internal model name + MetaModelName string `json:"meta_model_name"` + AdditionalProperties map[string]interface{} +} + +type _Provider Provider + +// NewProvider instantiates a new Provider object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewProvider(pk int32, name string, authorizationFlow string, invalidationFlow string, component string, assignedApplicationSlug NullableString, assignedApplicationName NullableString, assignedBackchannelApplicationSlug NullableString, assignedBackchannelApplicationName NullableString, verboseName string, verboseNamePlural string, metaModelName string) *Provider { + this := Provider{} + this.Pk = pk + this.Name = name + this.AuthorizationFlow = authorizationFlow + this.InvalidationFlow = invalidationFlow + this.Component = component + this.AssignedApplicationSlug = assignedApplicationSlug + this.AssignedApplicationName = assignedApplicationName + this.AssignedBackchannelApplicationSlug = assignedBackchannelApplicationSlug + this.AssignedBackchannelApplicationName = assignedBackchannelApplicationName + this.VerboseName = verboseName + this.VerboseNamePlural = verboseNamePlural + this.MetaModelName = metaModelName + return &this +} + +// NewProviderWithDefaults instantiates a new Provider object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewProviderWithDefaults() *Provider { + this := Provider{} + return &this +} + +// GetPk returns the Pk field value +func (o *Provider) GetPk() int32 { + if o == nil { + var ret int32 + return ret + } + + return o.Pk +} + +// GetPkOk returns a tuple with the Pk field value +// and a boolean to check if the value has been set. +func (o *Provider) GetPkOk() (*int32, bool) { + if o == nil { + return nil, false + } + return &o.Pk, true +} + +// SetPk sets field value +func (o *Provider) SetPk(v int32) { + o.Pk = v +} + +// GetName returns the Name field value +func (o *Provider) GetName() string { + if o == nil { + var ret string + return ret + } + + return o.Name +} + +// GetNameOk returns a tuple with the Name field value +// and a boolean to check if the value has been set. +func (o *Provider) GetNameOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Name, true +} + +// SetName sets field value +func (o *Provider) SetName(v string) { + o.Name = v +} + +// GetAuthenticationFlow returns the AuthenticationFlow field value if set, zero value otherwise (both if not set or set to explicit null). +func (o *Provider) GetAuthenticationFlow() string { + if o == nil || IsNil(o.AuthenticationFlow.Get()) { + var ret string + return ret + } + return *o.AuthenticationFlow.Get() +} + +// GetAuthenticationFlowOk returns a tuple with the AuthenticationFlow field value if set, nil otherwise +// and a boolean to check if the value has been set. +// NOTE: If the value is an explicit nil, `nil, true` will be returned +func (o *Provider) GetAuthenticationFlowOk() (*string, bool) { + if o == nil { + return nil, false + } + return o.AuthenticationFlow.Get(), o.AuthenticationFlow.IsSet() +} + +// HasAuthenticationFlow returns a boolean if a field has been set. +func (o *Provider) HasAuthenticationFlow() bool { + if o != nil && o.AuthenticationFlow.IsSet() { + return true + } + + return false +} + +// SetAuthenticationFlow gets a reference to the given NullableString and assigns it to the AuthenticationFlow field. +func (o *Provider) SetAuthenticationFlow(v string) { + o.AuthenticationFlow.Set(&v) +} + +// SetAuthenticationFlowNil sets the value for AuthenticationFlow to be an explicit nil +func (o *Provider) SetAuthenticationFlowNil() { + o.AuthenticationFlow.Set(nil) +} + +// UnsetAuthenticationFlow ensures that no value is present for AuthenticationFlow, not even an explicit nil +func (o *Provider) UnsetAuthenticationFlow() { + o.AuthenticationFlow.Unset() +} + +// GetAuthorizationFlow returns the AuthorizationFlow field value +func (o *Provider) GetAuthorizationFlow() string { + if o == nil { + var ret string + return ret + } + + return o.AuthorizationFlow +} + +// GetAuthorizationFlowOk returns a tuple with the AuthorizationFlow field value +// and a boolean to check if the value has been set. +func (o *Provider) GetAuthorizationFlowOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.AuthorizationFlow, true +} + +// SetAuthorizationFlow sets field value +func (o *Provider) SetAuthorizationFlow(v string) { + o.AuthorizationFlow = v +} + +// GetInvalidationFlow returns the InvalidationFlow field value +func (o *Provider) GetInvalidationFlow() string { + if o == nil { + var ret string + return ret + } + + return o.InvalidationFlow +} + +// GetInvalidationFlowOk returns a tuple with the InvalidationFlow field value +// and a boolean to check if the value has been set. +func (o *Provider) GetInvalidationFlowOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.InvalidationFlow, true +} + +// SetInvalidationFlow sets field value +func (o *Provider) SetInvalidationFlow(v string) { + o.InvalidationFlow = v +} + +// GetPropertyMappings returns the PropertyMappings field value if set, zero value otherwise. +func (o *Provider) GetPropertyMappings() []string { + if o == nil || IsNil(o.PropertyMappings) { + var ret []string + return ret + } + return o.PropertyMappings +} + +// GetPropertyMappingsOk returns a tuple with the PropertyMappings field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *Provider) GetPropertyMappingsOk() ([]string, bool) { + if o == nil || IsNil(o.PropertyMappings) { + return nil, false + } + return o.PropertyMappings, true +} + +// HasPropertyMappings returns a boolean if a field has been set. +func (o *Provider) HasPropertyMappings() bool { + if o != nil && !IsNil(o.PropertyMappings) { + return true + } + + return false +} + +// SetPropertyMappings gets a reference to the given []string and assigns it to the PropertyMappings field. +func (o *Provider) SetPropertyMappings(v []string) { + o.PropertyMappings = v +} + +// GetComponent returns the Component field value +func (o *Provider) GetComponent() string { + if o == nil { + var ret string + return ret + } + + return o.Component +} + +// GetComponentOk returns a tuple with the Component field value +// and a boolean to check if the value has been set. +func (o *Provider) GetComponentOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Component, true +} + +// SetComponent sets field value +func (o *Provider) SetComponent(v string) { + o.Component = v +} + +// GetAssignedApplicationSlug returns the AssignedApplicationSlug field value +// If the value is explicit nil, the zero value for string will be returned +func (o *Provider) GetAssignedApplicationSlug() string { + if o == nil || o.AssignedApplicationSlug.Get() == nil { + var ret string + return ret + } + + return *o.AssignedApplicationSlug.Get() +} + +// GetAssignedApplicationSlugOk returns a tuple with the AssignedApplicationSlug field value +// and a boolean to check if the value has been set. +// NOTE: If the value is an explicit nil, `nil, true` will be returned +func (o *Provider) GetAssignedApplicationSlugOk() (*string, bool) { + if o == nil { + return nil, false + } + return o.AssignedApplicationSlug.Get(), o.AssignedApplicationSlug.IsSet() +} + +// SetAssignedApplicationSlug sets field value +func (o *Provider) SetAssignedApplicationSlug(v string) { + o.AssignedApplicationSlug.Set(&v) +} + +// GetAssignedApplicationName returns the AssignedApplicationName field value +// If the value is explicit nil, the zero value for string will be returned +func (o *Provider) GetAssignedApplicationName() string { + if o == nil || o.AssignedApplicationName.Get() == nil { + var ret string + return ret + } + + return *o.AssignedApplicationName.Get() +} + +// GetAssignedApplicationNameOk returns a tuple with the AssignedApplicationName field value +// and a boolean to check if the value has been set. +// NOTE: If the value is an explicit nil, `nil, true` will be returned +func (o *Provider) GetAssignedApplicationNameOk() (*string, bool) { + if o == nil { + return nil, false + } + return o.AssignedApplicationName.Get(), o.AssignedApplicationName.IsSet() +} + +// SetAssignedApplicationName sets field value +func (o *Provider) SetAssignedApplicationName(v string) { + o.AssignedApplicationName.Set(&v) +} + +// GetAssignedBackchannelApplicationSlug returns the AssignedBackchannelApplicationSlug field value +// If the value is explicit nil, the zero value for string will be returned +func (o *Provider) GetAssignedBackchannelApplicationSlug() string { + if o == nil || o.AssignedBackchannelApplicationSlug.Get() == nil { + var ret string + return ret + } + + return *o.AssignedBackchannelApplicationSlug.Get() +} + +// GetAssignedBackchannelApplicationSlugOk returns a tuple with the AssignedBackchannelApplicationSlug field value +// and a boolean to check if the value has been set. +// NOTE: If the value is an explicit nil, `nil, true` will be returned +func (o *Provider) GetAssignedBackchannelApplicationSlugOk() (*string, bool) { + if o == nil { + return nil, false + } + return o.AssignedBackchannelApplicationSlug.Get(), o.AssignedBackchannelApplicationSlug.IsSet() +} + +// SetAssignedBackchannelApplicationSlug sets field value +func (o *Provider) SetAssignedBackchannelApplicationSlug(v string) { + o.AssignedBackchannelApplicationSlug.Set(&v) +} + +// GetAssignedBackchannelApplicationName returns the AssignedBackchannelApplicationName field value +// If the value is explicit nil, the zero value for string will be returned +func (o *Provider) GetAssignedBackchannelApplicationName() string { + if o == nil || o.AssignedBackchannelApplicationName.Get() == nil { + var ret string + return ret + } + + return *o.AssignedBackchannelApplicationName.Get() +} + +// GetAssignedBackchannelApplicationNameOk returns a tuple with the AssignedBackchannelApplicationName field value +// and a boolean to check if the value has been set. +// NOTE: If the value is an explicit nil, `nil, true` will be returned +func (o *Provider) GetAssignedBackchannelApplicationNameOk() (*string, bool) { + if o == nil { + return nil, false + } + return o.AssignedBackchannelApplicationName.Get(), o.AssignedBackchannelApplicationName.IsSet() +} + +// SetAssignedBackchannelApplicationName sets field value +func (o *Provider) SetAssignedBackchannelApplicationName(v string) { + o.AssignedBackchannelApplicationName.Set(&v) +} + +// GetVerboseName returns the VerboseName field value +func (o *Provider) GetVerboseName() string { + if o == nil { + var ret string + return ret + } + + return o.VerboseName +} + +// GetVerboseNameOk returns a tuple with the VerboseName field value +// and a boolean to check if the value has been set. +func (o *Provider) GetVerboseNameOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.VerboseName, true +} + +// SetVerboseName sets field value +func (o *Provider) SetVerboseName(v string) { + o.VerboseName = v +} + +// GetVerboseNamePlural returns the VerboseNamePlural field value +func (o *Provider) GetVerboseNamePlural() string { + if o == nil { + var ret string + return ret + } + + return o.VerboseNamePlural +} + +// GetVerboseNamePluralOk returns a tuple with the VerboseNamePlural field value +// and a boolean to check if the value has been set. +func (o *Provider) GetVerboseNamePluralOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.VerboseNamePlural, true +} + +// SetVerboseNamePlural sets field value +func (o *Provider) SetVerboseNamePlural(v string) { + o.VerboseNamePlural = v +} + +// GetMetaModelName returns the MetaModelName field value +func (o *Provider) GetMetaModelName() string { + if o == nil { + var ret string + return ret + } + + return o.MetaModelName +} + +// GetMetaModelNameOk returns a tuple with the MetaModelName field value +// and a boolean to check if the value has been set. +func (o *Provider) GetMetaModelNameOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.MetaModelName, true +} + +// SetMetaModelName sets field value +func (o *Provider) SetMetaModelName(v string) { + o.MetaModelName = v +} + +func (o Provider) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o Provider) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + toSerialize["pk"] = o.Pk + toSerialize["name"] = o.Name + if o.AuthenticationFlow.IsSet() { + toSerialize["authentication_flow"] = o.AuthenticationFlow.Get() + } + toSerialize["authorization_flow"] = o.AuthorizationFlow + toSerialize["invalidation_flow"] = o.InvalidationFlow + if !IsNil(o.PropertyMappings) { + toSerialize["property_mappings"] = o.PropertyMappings + } + toSerialize["component"] = o.Component + toSerialize["assigned_application_slug"] = o.AssignedApplicationSlug.Get() + toSerialize["assigned_application_name"] = o.AssignedApplicationName.Get() + toSerialize["assigned_backchannel_application_slug"] = o.AssignedBackchannelApplicationSlug.Get() + toSerialize["assigned_backchannel_application_name"] = o.AssignedBackchannelApplicationName.Get() + toSerialize["verbose_name"] = o.VerboseName + toSerialize["verbose_name_plural"] = o.VerboseNamePlural + toSerialize["meta_model_name"] = o.MetaModelName + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *Provider) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "pk", + "name", + "authorization_flow", + "invalidation_flow", + "component", + "assigned_application_slug", + "assigned_application_name", + "assigned_backchannel_application_slug", + "assigned_backchannel_application_name", + "verbose_name", + "verbose_name_plural", + "meta_model_name", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varProvider := _Provider{} + + err = json.Unmarshal(data, &varProvider) + + if err != nil { + return err + } + + *o = Provider(varProvider) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "pk") + delete(additionalProperties, "name") + delete(additionalProperties, "authentication_flow") + delete(additionalProperties, "authorization_flow") + delete(additionalProperties, "invalidation_flow") + delete(additionalProperties, "property_mappings") + delete(additionalProperties, "component") + delete(additionalProperties, "assigned_application_slug") + delete(additionalProperties, "assigned_application_name") + delete(additionalProperties, "assigned_backchannel_application_slug") + delete(additionalProperties, "assigned_backchannel_application_name") + delete(additionalProperties, "verbose_name") + delete(additionalProperties, "verbose_name_plural") + delete(additionalProperties, "meta_model_name") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableProvider struct { + value *Provider + isSet bool +} + +func (v NullableProvider) Get() *Provider { + return v.value +} + +func (v *NullableProvider) Set(val *Provider) { + v.value = val + v.isSet = true +} + +func (v NullableProvider) IsSet() bool { + return v.isSet +} + +func (v *NullableProvider) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableProvider(val *Provider) *NullableProvider { + return &NullableProvider{value: val, isSet: true} +} + +func (v NullableProvider) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableProvider) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_proxy_mode.go b/packages/client-go/model_proxy_mode.go new file mode 100644 index 0000000000..c1a0f4655f --- /dev/null +++ b/packages/client-go/model_proxy_mode.go @@ -0,0 +1,113 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// ProxyMode the model 'ProxyMode' +type ProxyMode string + +// List of ProxyMode +const ( + PROXYMODE_PROXY ProxyMode = "proxy" + PROXYMODE_FORWARD_SINGLE ProxyMode = "forward_single" + PROXYMODE_FORWARD_DOMAIN ProxyMode = "forward_domain" +) + +// All allowed values of ProxyMode enum +var AllowedProxyModeEnumValues = []ProxyMode{ + "proxy", + "forward_single", + "forward_domain", +} + +func (v *ProxyMode) UnmarshalJSON(src []byte) error { + var value string + err := json.Unmarshal(src, &value) + if err != nil { + return err + } + enumTypeValue := ProxyMode(value) + for _, existing := range AllowedProxyModeEnumValues { + if existing == enumTypeValue { + *v = enumTypeValue + return nil + } + } + + return fmt.Errorf("%+v is not a valid ProxyMode", value) +} + +// NewProxyModeFromValue returns a pointer to a valid ProxyMode +// for the value passed as argument, or an error if the value passed is not allowed by the enum +func NewProxyModeFromValue(v string) (*ProxyMode, error) { + ev := ProxyMode(v) + if ev.IsValid() { + return &ev, nil + } else { + return nil, fmt.Errorf("invalid value '%v' for ProxyMode: valid values are %v", v, AllowedProxyModeEnumValues) + } +} + +// IsValid return true if the value is valid for the enum, false otherwise +func (v ProxyMode) IsValid() bool { + for _, existing := range AllowedProxyModeEnumValues { + if existing == v { + return true + } + } + return false +} + +// Ptr returns reference to ProxyMode value +func (v ProxyMode) Ptr() *ProxyMode { + return &v +} + +type NullableProxyMode struct { + value *ProxyMode + isSet bool +} + +func (v NullableProxyMode) Get() *ProxyMode { + return v.value +} + +func (v *NullableProxyMode) Set(val *ProxyMode) { + v.value = val + v.isSet = true +} + +func (v NullableProxyMode) IsSet() bool { + return v.isSet +} + +func (v *NullableProxyMode) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableProxyMode(val *ProxyMode) *NullableProxyMode { + return &NullableProxyMode{value: val, isSet: true} +} + +func (v NullableProxyMode) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableProxyMode) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_proxy_outpost_config.go b/packages/client-go/model_proxy_outpost_config.go new file mode 100644 index 0000000000..335cd4846c --- /dev/null +++ b/packages/client-go/model_proxy_outpost_config.go @@ -0,0 +1,875 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// checks if the ProxyOutpostConfig type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &ProxyOutpostConfig{} + +// ProxyOutpostConfig Proxy provider serializer for outposts +type ProxyOutpostConfig struct { + Pk int32 `json:"pk"` + Name string `json:"name"` + InternalHost *string `json:"internal_host,omitempty"` + ExternalHost string `json:"external_host"` + // Validate SSL Certificates of upstream servers + InternalHostSslValidation *bool `json:"internal_host_ssl_validation,omitempty"` + ClientId *string `json:"client_id,omitempty"` + ClientSecret *string `json:"client_secret,omitempty"` + OidcConfiguration OpenIDConnectConfiguration `json:"oidc_configuration"` + CookieSecret *string `json:"cookie_secret,omitempty"` + Certificate NullableString `json:"certificate,omitempty"` + // Regular expressions for which authentication is not required. Each new line is interpreted as a new Regular Expression. + SkipPathRegex *string `json:"skip_path_regex,omitempty"` + // Set a custom HTTP-Basic Authentication header based on values from authentik. + BasicAuthEnabled *bool `json:"basic_auth_enabled,omitempty"` + // User/Group Attribute used for the password part of the HTTP-Basic Header. + BasicAuthPasswordAttribute *string `json:"basic_auth_password_attribute,omitempty"` + // User/Group Attribute used for the user part of the HTTP-Basic Header. If not set, the user's Email address is used. + BasicAuthUserAttribute *string `json:"basic_auth_user_attribute,omitempty"` + // Enable support for forwardAuth in traefik and nginx auth_request. Exclusive with internal_host. + Mode *ProxyMode `json:"mode,omitempty"` + CookieDomain *string `json:"cookie_domain,omitempty"` + // Get token validity as second count + AccessTokenValidity NullableFloat64 `json:"access_token_validity"` + // When enabled, this provider will intercept the authorization header and authenticate requests based on its value. + InterceptHeaderAuth *bool `json:"intercept_header_auth,omitempty"` + // Get all the scope names the outpost should request, including custom-defined ones + ScopesToRequest []string `json:"scopes_to_request"` + // Internal application name, used in URLs. + AssignedApplicationSlug string `json:"assigned_application_slug"` + // Application's display Name. + AssignedApplicationName string `json:"assigned_application_name"` + AdditionalProperties map[string]interface{} +} + +type _ProxyOutpostConfig ProxyOutpostConfig + +// NewProxyOutpostConfig instantiates a new ProxyOutpostConfig object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewProxyOutpostConfig(pk int32, name string, externalHost string, oidcConfiguration OpenIDConnectConfiguration, accessTokenValidity NullableFloat64, scopesToRequest []string, assignedApplicationSlug string, assignedApplicationName string) *ProxyOutpostConfig { + this := ProxyOutpostConfig{} + this.Pk = pk + this.Name = name + this.ExternalHost = externalHost + this.OidcConfiguration = oidcConfiguration + this.AccessTokenValidity = accessTokenValidity + this.ScopesToRequest = scopesToRequest + this.AssignedApplicationSlug = assignedApplicationSlug + this.AssignedApplicationName = assignedApplicationName + return &this +} + +// NewProxyOutpostConfigWithDefaults instantiates a new ProxyOutpostConfig object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewProxyOutpostConfigWithDefaults() *ProxyOutpostConfig { + this := ProxyOutpostConfig{} + return &this +} + +// GetPk returns the Pk field value +func (o *ProxyOutpostConfig) GetPk() int32 { + if o == nil { + var ret int32 + return ret + } + + return o.Pk +} + +// GetPkOk returns a tuple with the Pk field value +// and a boolean to check if the value has been set. +func (o *ProxyOutpostConfig) GetPkOk() (*int32, bool) { + if o == nil { + return nil, false + } + return &o.Pk, true +} + +// SetPk sets field value +func (o *ProxyOutpostConfig) SetPk(v int32) { + o.Pk = v +} + +// GetName returns the Name field value +func (o *ProxyOutpostConfig) GetName() string { + if o == nil { + var ret string + return ret + } + + return o.Name +} + +// GetNameOk returns a tuple with the Name field value +// and a boolean to check if the value has been set. +func (o *ProxyOutpostConfig) GetNameOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Name, true +} + +// SetName sets field value +func (o *ProxyOutpostConfig) SetName(v string) { + o.Name = v +} + +// GetInternalHost returns the InternalHost field value if set, zero value otherwise. +func (o *ProxyOutpostConfig) GetInternalHost() string { + if o == nil || IsNil(o.InternalHost) { + var ret string + return ret + } + return *o.InternalHost +} + +// GetInternalHostOk returns a tuple with the InternalHost field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *ProxyOutpostConfig) GetInternalHostOk() (*string, bool) { + if o == nil || IsNil(o.InternalHost) { + return nil, false + } + return o.InternalHost, true +} + +// HasInternalHost returns a boolean if a field has been set. +func (o *ProxyOutpostConfig) HasInternalHost() bool { + if o != nil && !IsNil(o.InternalHost) { + return true + } + + return false +} + +// SetInternalHost gets a reference to the given string and assigns it to the InternalHost field. +func (o *ProxyOutpostConfig) SetInternalHost(v string) { + o.InternalHost = &v +} + +// GetExternalHost returns the ExternalHost field value +func (o *ProxyOutpostConfig) GetExternalHost() string { + if o == nil { + var ret string + return ret + } + + return o.ExternalHost +} + +// GetExternalHostOk returns a tuple with the ExternalHost field value +// and a boolean to check if the value has been set. +func (o *ProxyOutpostConfig) GetExternalHostOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.ExternalHost, true +} + +// SetExternalHost sets field value +func (o *ProxyOutpostConfig) SetExternalHost(v string) { + o.ExternalHost = v +} + +// GetInternalHostSslValidation returns the InternalHostSslValidation field value if set, zero value otherwise. +func (o *ProxyOutpostConfig) GetInternalHostSslValidation() bool { + if o == nil || IsNil(o.InternalHostSslValidation) { + var ret bool + return ret + } + return *o.InternalHostSslValidation +} + +// GetInternalHostSslValidationOk returns a tuple with the InternalHostSslValidation field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *ProxyOutpostConfig) GetInternalHostSslValidationOk() (*bool, bool) { + if o == nil || IsNil(o.InternalHostSslValidation) { + return nil, false + } + return o.InternalHostSslValidation, true +} + +// HasInternalHostSslValidation returns a boolean if a field has been set. +func (o *ProxyOutpostConfig) HasInternalHostSslValidation() bool { + if o != nil && !IsNil(o.InternalHostSslValidation) { + return true + } + + return false +} + +// SetInternalHostSslValidation gets a reference to the given bool and assigns it to the InternalHostSslValidation field. +func (o *ProxyOutpostConfig) SetInternalHostSslValidation(v bool) { + o.InternalHostSslValidation = &v +} + +// GetClientId returns the ClientId field value if set, zero value otherwise. +func (o *ProxyOutpostConfig) GetClientId() string { + if o == nil || IsNil(o.ClientId) { + var ret string + return ret + } + return *o.ClientId +} + +// GetClientIdOk returns a tuple with the ClientId field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *ProxyOutpostConfig) GetClientIdOk() (*string, bool) { + if o == nil || IsNil(o.ClientId) { + return nil, false + } + return o.ClientId, true +} + +// HasClientId returns a boolean if a field has been set. +func (o *ProxyOutpostConfig) HasClientId() bool { + if o != nil && !IsNil(o.ClientId) { + return true + } + + return false +} + +// SetClientId gets a reference to the given string and assigns it to the ClientId field. +func (o *ProxyOutpostConfig) SetClientId(v string) { + o.ClientId = &v +} + +// GetClientSecret returns the ClientSecret field value if set, zero value otherwise. +func (o *ProxyOutpostConfig) GetClientSecret() string { + if o == nil || IsNil(o.ClientSecret) { + var ret string + return ret + } + return *o.ClientSecret +} + +// GetClientSecretOk returns a tuple with the ClientSecret field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *ProxyOutpostConfig) GetClientSecretOk() (*string, bool) { + if o == nil || IsNil(o.ClientSecret) { + return nil, false + } + return o.ClientSecret, true +} + +// HasClientSecret returns a boolean if a field has been set. +func (o *ProxyOutpostConfig) HasClientSecret() bool { + if o != nil && !IsNil(o.ClientSecret) { + return true + } + + return false +} + +// SetClientSecret gets a reference to the given string and assigns it to the ClientSecret field. +func (o *ProxyOutpostConfig) SetClientSecret(v string) { + o.ClientSecret = &v +} + +// GetOidcConfiguration returns the OidcConfiguration field value +func (o *ProxyOutpostConfig) GetOidcConfiguration() OpenIDConnectConfiguration { + if o == nil { + var ret OpenIDConnectConfiguration + return ret + } + + return o.OidcConfiguration +} + +// GetOidcConfigurationOk returns a tuple with the OidcConfiguration field value +// and a boolean to check if the value has been set. +func (o *ProxyOutpostConfig) GetOidcConfigurationOk() (*OpenIDConnectConfiguration, bool) { + if o == nil { + return nil, false + } + return &o.OidcConfiguration, true +} + +// SetOidcConfiguration sets field value +func (o *ProxyOutpostConfig) SetOidcConfiguration(v OpenIDConnectConfiguration) { + o.OidcConfiguration = v +} + +// GetCookieSecret returns the CookieSecret field value if set, zero value otherwise. +func (o *ProxyOutpostConfig) GetCookieSecret() string { + if o == nil || IsNil(o.CookieSecret) { + var ret string + return ret + } + return *o.CookieSecret +} + +// GetCookieSecretOk returns a tuple with the CookieSecret field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *ProxyOutpostConfig) GetCookieSecretOk() (*string, bool) { + if o == nil || IsNil(o.CookieSecret) { + return nil, false + } + return o.CookieSecret, true +} + +// HasCookieSecret returns a boolean if a field has been set. +func (o *ProxyOutpostConfig) HasCookieSecret() bool { + if o != nil && !IsNil(o.CookieSecret) { + return true + } + + return false +} + +// SetCookieSecret gets a reference to the given string and assigns it to the CookieSecret field. +func (o *ProxyOutpostConfig) SetCookieSecret(v string) { + o.CookieSecret = &v +} + +// GetCertificate returns the Certificate field value if set, zero value otherwise (both if not set or set to explicit null). +func (o *ProxyOutpostConfig) GetCertificate() string { + if o == nil || IsNil(o.Certificate.Get()) { + var ret string + return ret + } + return *o.Certificate.Get() +} + +// GetCertificateOk returns a tuple with the Certificate field value if set, nil otherwise +// and a boolean to check if the value has been set. +// NOTE: If the value is an explicit nil, `nil, true` will be returned +func (o *ProxyOutpostConfig) GetCertificateOk() (*string, bool) { + if o == nil { + return nil, false + } + return o.Certificate.Get(), o.Certificate.IsSet() +} + +// HasCertificate returns a boolean if a field has been set. +func (o *ProxyOutpostConfig) HasCertificate() bool { + if o != nil && o.Certificate.IsSet() { + return true + } + + return false +} + +// SetCertificate gets a reference to the given NullableString and assigns it to the Certificate field. +func (o *ProxyOutpostConfig) SetCertificate(v string) { + o.Certificate.Set(&v) +} + +// SetCertificateNil sets the value for Certificate to be an explicit nil +func (o *ProxyOutpostConfig) SetCertificateNil() { + o.Certificate.Set(nil) +} + +// UnsetCertificate ensures that no value is present for Certificate, not even an explicit nil +func (o *ProxyOutpostConfig) UnsetCertificate() { + o.Certificate.Unset() +} + +// GetSkipPathRegex returns the SkipPathRegex field value if set, zero value otherwise. +func (o *ProxyOutpostConfig) GetSkipPathRegex() string { + if o == nil || IsNil(o.SkipPathRegex) { + var ret string + return ret + } + return *o.SkipPathRegex +} + +// GetSkipPathRegexOk returns a tuple with the SkipPathRegex field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *ProxyOutpostConfig) GetSkipPathRegexOk() (*string, bool) { + if o == nil || IsNil(o.SkipPathRegex) { + return nil, false + } + return o.SkipPathRegex, true +} + +// HasSkipPathRegex returns a boolean if a field has been set. +func (o *ProxyOutpostConfig) HasSkipPathRegex() bool { + if o != nil && !IsNil(o.SkipPathRegex) { + return true + } + + return false +} + +// SetSkipPathRegex gets a reference to the given string and assigns it to the SkipPathRegex field. +func (o *ProxyOutpostConfig) SetSkipPathRegex(v string) { + o.SkipPathRegex = &v +} + +// GetBasicAuthEnabled returns the BasicAuthEnabled field value if set, zero value otherwise. +func (o *ProxyOutpostConfig) GetBasicAuthEnabled() bool { + if o == nil || IsNil(o.BasicAuthEnabled) { + var ret bool + return ret + } + return *o.BasicAuthEnabled +} + +// GetBasicAuthEnabledOk returns a tuple with the BasicAuthEnabled field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *ProxyOutpostConfig) GetBasicAuthEnabledOk() (*bool, bool) { + if o == nil || IsNil(o.BasicAuthEnabled) { + return nil, false + } + return o.BasicAuthEnabled, true +} + +// HasBasicAuthEnabled returns a boolean if a field has been set. +func (o *ProxyOutpostConfig) HasBasicAuthEnabled() bool { + if o != nil && !IsNil(o.BasicAuthEnabled) { + return true + } + + return false +} + +// SetBasicAuthEnabled gets a reference to the given bool and assigns it to the BasicAuthEnabled field. +func (o *ProxyOutpostConfig) SetBasicAuthEnabled(v bool) { + o.BasicAuthEnabled = &v +} + +// GetBasicAuthPasswordAttribute returns the BasicAuthPasswordAttribute field value if set, zero value otherwise. +func (o *ProxyOutpostConfig) GetBasicAuthPasswordAttribute() string { + if o == nil || IsNil(o.BasicAuthPasswordAttribute) { + var ret string + return ret + } + return *o.BasicAuthPasswordAttribute +} + +// GetBasicAuthPasswordAttributeOk returns a tuple with the BasicAuthPasswordAttribute field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *ProxyOutpostConfig) GetBasicAuthPasswordAttributeOk() (*string, bool) { + if o == nil || IsNil(o.BasicAuthPasswordAttribute) { + return nil, false + } + return o.BasicAuthPasswordAttribute, true +} + +// HasBasicAuthPasswordAttribute returns a boolean if a field has been set. +func (o *ProxyOutpostConfig) HasBasicAuthPasswordAttribute() bool { + if o != nil && !IsNil(o.BasicAuthPasswordAttribute) { + return true + } + + return false +} + +// SetBasicAuthPasswordAttribute gets a reference to the given string and assigns it to the BasicAuthPasswordAttribute field. +func (o *ProxyOutpostConfig) SetBasicAuthPasswordAttribute(v string) { + o.BasicAuthPasswordAttribute = &v +} + +// GetBasicAuthUserAttribute returns the BasicAuthUserAttribute field value if set, zero value otherwise. +func (o *ProxyOutpostConfig) GetBasicAuthUserAttribute() string { + if o == nil || IsNil(o.BasicAuthUserAttribute) { + var ret string + return ret + } + return *o.BasicAuthUserAttribute +} + +// GetBasicAuthUserAttributeOk returns a tuple with the BasicAuthUserAttribute field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *ProxyOutpostConfig) GetBasicAuthUserAttributeOk() (*string, bool) { + if o == nil || IsNil(o.BasicAuthUserAttribute) { + return nil, false + } + return o.BasicAuthUserAttribute, true +} + +// HasBasicAuthUserAttribute returns a boolean if a field has been set. +func (o *ProxyOutpostConfig) HasBasicAuthUserAttribute() bool { + if o != nil && !IsNil(o.BasicAuthUserAttribute) { + return true + } + + return false +} + +// SetBasicAuthUserAttribute gets a reference to the given string and assigns it to the BasicAuthUserAttribute field. +func (o *ProxyOutpostConfig) SetBasicAuthUserAttribute(v string) { + o.BasicAuthUserAttribute = &v +} + +// GetMode returns the Mode field value if set, zero value otherwise. +func (o *ProxyOutpostConfig) GetMode() ProxyMode { + if o == nil || IsNil(o.Mode) { + var ret ProxyMode + return ret + } + return *o.Mode +} + +// GetModeOk returns a tuple with the Mode field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *ProxyOutpostConfig) GetModeOk() (*ProxyMode, bool) { + if o == nil || IsNil(o.Mode) { + return nil, false + } + return o.Mode, true +} + +// HasMode returns a boolean if a field has been set. +func (o *ProxyOutpostConfig) HasMode() bool { + if o != nil && !IsNil(o.Mode) { + return true + } + + return false +} + +// SetMode gets a reference to the given ProxyMode and assigns it to the Mode field. +func (o *ProxyOutpostConfig) SetMode(v ProxyMode) { + o.Mode = &v +} + +// GetCookieDomain returns the CookieDomain field value if set, zero value otherwise. +func (o *ProxyOutpostConfig) GetCookieDomain() string { + if o == nil || IsNil(o.CookieDomain) { + var ret string + return ret + } + return *o.CookieDomain +} + +// GetCookieDomainOk returns a tuple with the CookieDomain field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *ProxyOutpostConfig) GetCookieDomainOk() (*string, bool) { + if o == nil || IsNil(o.CookieDomain) { + return nil, false + } + return o.CookieDomain, true +} + +// HasCookieDomain returns a boolean if a field has been set. +func (o *ProxyOutpostConfig) HasCookieDomain() bool { + if o != nil && !IsNil(o.CookieDomain) { + return true + } + + return false +} + +// SetCookieDomain gets a reference to the given string and assigns it to the CookieDomain field. +func (o *ProxyOutpostConfig) SetCookieDomain(v string) { + o.CookieDomain = &v +} + +// GetAccessTokenValidity returns the AccessTokenValidity field value +// If the value is explicit nil, the zero value for float64 will be returned +func (o *ProxyOutpostConfig) GetAccessTokenValidity() float64 { + if o == nil || o.AccessTokenValidity.Get() == nil { + var ret float64 + return ret + } + + return *o.AccessTokenValidity.Get() +} + +// GetAccessTokenValidityOk returns a tuple with the AccessTokenValidity field value +// and a boolean to check if the value has been set. +// NOTE: If the value is an explicit nil, `nil, true` will be returned +func (o *ProxyOutpostConfig) GetAccessTokenValidityOk() (*float64, bool) { + if o == nil { + return nil, false + } + return o.AccessTokenValidity.Get(), o.AccessTokenValidity.IsSet() +} + +// SetAccessTokenValidity sets field value +func (o *ProxyOutpostConfig) SetAccessTokenValidity(v float64) { + o.AccessTokenValidity.Set(&v) +} + +// GetInterceptHeaderAuth returns the InterceptHeaderAuth field value if set, zero value otherwise. +func (o *ProxyOutpostConfig) GetInterceptHeaderAuth() bool { + if o == nil || IsNil(o.InterceptHeaderAuth) { + var ret bool + return ret + } + return *o.InterceptHeaderAuth +} + +// GetInterceptHeaderAuthOk returns a tuple with the InterceptHeaderAuth field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *ProxyOutpostConfig) GetInterceptHeaderAuthOk() (*bool, bool) { + if o == nil || IsNil(o.InterceptHeaderAuth) { + return nil, false + } + return o.InterceptHeaderAuth, true +} + +// HasInterceptHeaderAuth returns a boolean if a field has been set. +func (o *ProxyOutpostConfig) HasInterceptHeaderAuth() bool { + if o != nil && !IsNil(o.InterceptHeaderAuth) { + return true + } + + return false +} + +// SetInterceptHeaderAuth gets a reference to the given bool and assigns it to the InterceptHeaderAuth field. +func (o *ProxyOutpostConfig) SetInterceptHeaderAuth(v bool) { + o.InterceptHeaderAuth = &v +} + +// GetScopesToRequest returns the ScopesToRequest field value +func (o *ProxyOutpostConfig) GetScopesToRequest() []string { + if o == nil { + var ret []string + return ret + } + + return o.ScopesToRequest +} + +// GetScopesToRequestOk returns a tuple with the ScopesToRequest field value +// and a boolean to check if the value has been set. +func (o *ProxyOutpostConfig) GetScopesToRequestOk() ([]string, bool) { + if o == nil { + return nil, false + } + return o.ScopesToRequest, true +} + +// SetScopesToRequest sets field value +func (o *ProxyOutpostConfig) SetScopesToRequest(v []string) { + o.ScopesToRequest = v +} + +// GetAssignedApplicationSlug returns the AssignedApplicationSlug field value +func (o *ProxyOutpostConfig) GetAssignedApplicationSlug() string { + if o == nil { + var ret string + return ret + } + + return o.AssignedApplicationSlug +} + +// GetAssignedApplicationSlugOk returns a tuple with the AssignedApplicationSlug field value +// and a boolean to check if the value has been set. +func (o *ProxyOutpostConfig) GetAssignedApplicationSlugOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.AssignedApplicationSlug, true +} + +// SetAssignedApplicationSlug sets field value +func (o *ProxyOutpostConfig) SetAssignedApplicationSlug(v string) { + o.AssignedApplicationSlug = v +} + +// GetAssignedApplicationName returns the AssignedApplicationName field value +func (o *ProxyOutpostConfig) GetAssignedApplicationName() string { + if o == nil { + var ret string + return ret + } + + return o.AssignedApplicationName +} + +// GetAssignedApplicationNameOk returns a tuple with the AssignedApplicationName field value +// and a boolean to check if the value has been set. +func (o *ProxyOutpostConfig) GetAssignedApplicationNameOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.AssignedApplicationName, true +} + +// SetAssignedApplicationName sets field value +func (o *ProxyOutpostConfig) SetAssignedApplicationName(v string) { + o.AssignedApplicationName = v +} + +func (o ProxyOutpostConfig) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o ProxyOutpostConfig) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + toSerialize["pk"] = o.Pk + toSerialize["name"] = o.Name + if !IsNil(o.InternalHost) { + toSerialize["internal_host"] = o.InternalHost + } + toSerialize["external_host"] = o.ExternalHost + if !IsNil(o.InternalHostSslValidation) { + toSerialize["internal_host_ssl_validation"] = o.InternalHostSslValidation + } + if !IsNil(o.ClientId) { + toSerialize["client_id"] = o.ClientId + } + if !IsNil(o.ClientSecret) { + toSerialize["client_secret"] = o.ClientSecret + } + toSerialize["oidc_configuration"] = o.OidcConfiguration + if !IsNil(o.CookieSecret) { + toSerialize["cookie_secret"] = o.CookieSecret + } + if o.Certificate.IsSet() { + toSerialize["certificate"] = o.Certificate.Get() + } + if !IsNil(o.SkipPathRegex) { + toSerialize["skip_path_regex"] = o.SkipPathRegex + } + if !IsNil(o.BasicAuthEnabled) { + toSerialize["basic_auth_enabled"] = o.BasicAuthEnabled + } + if !IsNil(o.BasicAuthPasswordAttribute) { + toSerialize["basic_auth_password_attribute"] = o.BasicAuthPasswordAttribute + } + if !IsNil(o.BasicAuthUserAttribute) { + toSerialize["basic_auth_user_attribute"] = o.BasicAuthUserAttribute + } + if !IsNil(o.Mode) { + toSerialize["mode"] = o.Mode + } + if !IsNil(o.CookieDomain) { + toSerialize["cookie_domain"] = o.CookieDomain + } + toSerialize["access_token_validity"] = o.AccessTokenValidity.Get() + if !IsNil(o.InterceptHeaderAuth) { + toSerialize["intercept_header_auth"] = o.InterceptHeaderAuth + } + toSerialize["scopes_to_request"] = o.ScopesToRequest + toSerialize["assigned_application_slug"] = o.AssignedApplicationSlug + toSerialize["assigned_application_name"] = o.AssignedApplicationName + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *ProxyOutpostConfig) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "pk", + "name", + "external_host", + "oidc_configuration", + "access_token_validity", + "scopes_to_request", + "assigned_application_slug", + "assigned_application_name", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varProxyOutpostConfig := _ProxyOutpostConfig{} + + err = json.Unmarshal(data, &varProxyOutpostConfig) + + if err != nil { + return err + } + + *o = ProxyOutpostConfig(varProxyOutpostConfig) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "pk") + delete(additionalProperties, "name") + delete(additionalProperties, "internal_host") + delete(additionalProperties, "external_host") + delete(additionalProperties, "internal_host_ssl_validation") + delete(additionalProperties, "client_id") + delete(additionalProperties, "client_secret") + delete(additionalProperties, "oidc_configuration") + delete(additionalProperties, "cookie_secret") + delete(additionalProperties, "certificate") + delete(additionalProperties, "skip_path_regex") + delete(additionalProperties, "basic_auth_enabled") + delete(additionalProperties, "basic_auth_password_attribute") + delete(additionalProperties, "basic_auth_user_attribute") + delete(additionalProperties, "mode") + delete(additionalProperties, "cookie_domain") + delete(additionalProperties, "access_token_validity") + delete(additionalProperties, "intercept_header_auth") + delete(additionalProperties, "scopes_to_request") + delete(additionalProperties, "assigned_application_slug") + delete(additionalProperties, "assigned_application_name") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableProxyOutpostConfig struct { + value *ProxyOutpostConfig + isSet bool +} + +func (v NullableProxyOutpostConfig) Get() *ProxyOutpostConfig { + return v.value +} + +func (v *NullableProxyOutpostConfig) Set(val *ProxyOutpostConfig) { + v.value = val + v.isSet = true +} + +func (v NullableProxyOutpostConfig) IsSet() bool { + return v.isSet +} + +func (v *NullableProxyOutpostConfig) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableProxyOutpostConfig(val *ProxyOutpostConfig) *NullableProxyOutpostConfig { + return &NullableProxyOutpostConfig{value: val, isSet: true} +} + +func (v NullableProxyOutpostConfig) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableProxyOutpostConfig) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_radius_check_access.go b/packages/client-go/model_radius_check_access.go new file mode 100644 index 0000000000..62403b3be5 --- /dev/null +++ b/packages/client-go/model_radius_check_access.go @@ -0,0 +1,204 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// checks if the RadiusCheckAccess type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &RadiusCheckAccess{} + +// RadiusCheckAccess Base serializer class which doesn't implement create/update methods +type RadiusCheckAccess struct { + Attributes *string `json:"attributes,omitempty"` + Access PolicyTestResult `json:"access"` + AdditionalProperties map[string]interface{} +} + +type _RadiusCheckAccess RadiusCheckAccess + +// NewRadiusCheckAccess instantiates a new RadiusCheckAccess object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewRadiusCheckAccess(access PolicyTestResult) *RadiusCheckAccess { + this := RadiusCheckAccess{} + this.Access = access + return &this +} + +// NewRadiusCheckAccessWithDefaults instantiates a new RadiusCheckAccess object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewRadiusCheckAccessWithDefaults() *RadiusCheckAccess { + this := RadiusCheckAccess{} + return &this +} + +// GetAttributes returns the Attributes field value if set, zero value otherwise. +func (o *RadiusCheckAccess) GetAttributes() string { + if o == nil || IsNil(o.Attributes) { + var ret string + return ret + } + return *o.Attributes +} + +// GetAttributesOk returns a tuple with the Attributes field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *RadiusCheckAccess) GetAttributesOk() (*string, bool) { + if o == nil || IsNil(o.Attributes) { + return nil, false + } + return o.Attributes, true +} + +// HasAttributes returns a boolean if a field has been set. +func (o *RadiusCheckAccess) HasAttributes() bool { + if o != nil && !IsNil(o.Attributes) { + return true + } + + return false +} + +// SetAttributes gets a reference to the given string and assigns it to the Attributes field. +func (o *RadiusCheckAccess) SetAttributes(v string) { + o.Attributes = &v +} + +// GetAccess returns the Access field value +func (o *RadiusCheckAccess) GetAccess() PolicyTestResult { + if o == nil { + var ret PolicyTestResult + return ret + } + + return o.Access +} + +// GetAccessOk returns a tuple with the Access field value +// and a boolean to check if the value has been set. +func (o *RadiusCheckAccess) GetAccessOk() (*PolicyTestResult, bool) { + if o == nil { + return nil, false + } + return &o.Access, true +} + +// SetAccess sets field value +func (o *RadiusCheckAccess) SetAccess(v PolicyTestResult) { + o.Access = v +} + +func (o RadiusCheckAccess) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o RadiusCheckAccess) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.Attributes) { + toSerialize["attributes"] = o.Attributes + } + toSerialize["access"] = o.Access + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *RadiusCheckAccess) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "access", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varRadiusCheckAccess := _RadiusCheckAccess{} + + err = json.Unmarshal(data, &varRadiusCheckAccess) + + if err != nil { + return err + } + + *o = RadiusCheckAccess(varRadiusCheckAccess) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "attributes") + delete(additionalProperties, "access") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableRadiusCheckAccess struct { + value *RadiusCheckAccess + isSet bool +} + +func (v NullableRadiusCheckAccess) Get() *RadiusCheckAccess { + return v.value +} + +func (v *NullableRadiusCheckAccess) Set(val *RadiusCheckAccess) { + v.value = val + v.isSet = true +} + +func (v NullableRadiusCheckAccess) IsSet() bool { + return v.isSet +} + +func (v *NullableRadiusCheckAccess) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableRadiusCheckAccess(val *RadiusCheckAccess) *NullableRadiusCheckAccess { + return &NullableRadiusCheckAccess{value: val, isSet: true} +} + +func (v NullableRadiusCheckAccess) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableRadiusCheckAccess) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_radius_outpost_config.go b/packages/client-go/model_radius_outpost_config.go new file mode 100644 index 0000000000..dc9b79f497 --- /dev/null +++ b/packages/client-go/model_radius_outpost_config.go @@ -0,0 +1,416 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// checks if the RadiusOutpostConfig type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &RadiusOutpostConfig{} + +// RadiusOutpostConfig RadiusProvider Serializer +type RadiusOutpostConfig struct { + Pk int32 `json:"pk"` + Name string `json:"name"` + ApplicationSlug string `json:"application_slug"` + AuthFlowSlug string `json:"auth_flow_slug"` + // List of CIDRs (comma-separated) that clients can connect from. A more specific CIDR will match before a looser one. Clients connecting from a non-specified CIDR will be dropped. + ClientNetworks *string `json:"client_networks,omitempty"` + // Shared secret between clients and server to hash packets. + SharedSecret *string `json:"shared_secret,omitempty"` + // When enabled, code-based multi-factor authentication can be used by appending a semicolon and the TOTP code to the password. This should only be enabled if all users that will bind to this provider have a TOTP device configured, as otherwise a password may incorrectly be rejected if it contains a semicolon. + MfaSupport *bool `json:"mfa_support,omitempty"` + Certificate NullableString `json:"certificate,omitempty"` + AdditionalProperties map[string]interface{} +} + +type _RadiusOutpostConfig RadiusOutpostConfig + +// NewRadiusOutpostConfig instantiates a new RadiusOutpostConfig object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewRadiusOutpostConfig(pk int32, name string, applicationSlug string, authFlowSlug string) *RadiusOutpostConfig { + this := RadiusOutpostConfig{} + this.Pk = pk + this.Name = name + this.ApplicationSlug = applicationSlug + this.AuthFlowSlug = authFlowSlug + return &this +} + +// NewRadiusOutpostConfigWithDefaults instantiates a new RadiusOutpostConfig object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewRadiusOutpostConfigWithDefaults() *RadiusOutpostConfig { + this := RadiusOutpostConfig{} + return &this +} + +// GetPk returns the Pk field value +func (o *RadiusOutpostConfig) GetPk() int32 { + if o == nil { + var ret int32 + return ret + } + + return o.Pk +} + +// GetPkOk returns a tuple with the Pk field value +// and a boolean to check if the value has been set. +func (o *RadiusOutpostConfig) GetPkOk() (*int32, bool) { + if o == nil { + return nil, false + } + return &o.Pk, true +} + +// SetPk sets field value +func (o *RadiusOutpostConfig) SetPk(v int32) { + o.Pk = v +} + +// GetName returns the Name field value +func (o *RadiusOutpostConfig) GetName() string { + if o == nil { + var ret string + return ret + } + + return o.Name +} + +// GetNameOk returns a tuple with the Name field value +// and a boolean to check if the value has been set. +func (o *RadiusOutpostConfig) GetNameOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Name, true +} + +// SetName sets field value +func (o *RadiusOutpostConfig) SetName(v string) { + o.Name = v +} + +// GetApplicationSlug returns the ApplicationSlug field value +func (o *RadiusOutpostConfig) GetApplicationSlug() string { + if o == nil { + var ret string + return ret + } + + return o.ApplicationSlug +} + +// GetApplicationSlugOk returns a tuple with the ApplicationSlug field value +// and a boolean to check if the value has been set. +func (o *RadiusOutpostConfig) GetApplicationSlugOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.ApplicationSlug, true +} + +// SetApplicationSlug sets field value +func (o *RadiusOutpostConfig) SetApplicationSlug(v string) { + o.ApplicationSlug = v +} + +// GetAuthFlowSlug returns the AuthFlowSlug field value +func (o *RadiusOutpostConfig) GetAuthFlowSlug() string { + if o == nil { + var ret string + return ret + } + + return o.AuthFlowSlug +} + +// GetAuthFlowSlugOk returns a tuple with the AuthFlowSlug field value +// and a boolean to check if the value has been set. +func (o *RadiusOutpostConfig) GetAuthFlowSlugOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.AuthFlowSlug, true +} + +// SetAuthFlowSlug sets field value +func (o *RadiusOutpostConfig) SetAuthFlowSlug(v string) { + o.AuthFlowSlug = v +} + +// GetClientNetworks returns the ClientNetworks field value if set, zero value otherwise. +func (o *RadiusOutpostConfig) GetClientNetworks() string { + if o == nil || IsNil(o.ClientNetworks) { + var ret string + return ret + } + return *o.ClientNetworks +} + +// GetClientNetworksOk returns a tuple with the ClientNetworks field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *RadiusOutpostConfig) GetClientNetworksOk() (*string, bool) { + if o == nil || IsNil(o.ClientNetworks) { + return nil, false + } + return o.ClientNetworks, true +} + +// HasClientNetworks returns a boolean if a field has been set. +func (o *RadiusOutpostConfig) HasClientNetworks() bool { + if o != nil && !IsNil(o.ClientNetworks) { + return true + } + + return false +} + +// SetClientNetworks gets a reference to the given string and assigns it to the ClientNetworks field. +func (o *RadiusOutpostConfig) SetClientNetworks(v string) { + o.ClientNetworks = &v +} + +// GetSharedSecret returns the SharedSecret field value if set, zero value otherwise. +func (o *RadiusOutpostConfig) GetSharedSecret() string { + if o == nil || IsNil(o.SharedSecret) { + var ret string + return ret + } + return *o.SharedSecret +} + +// GetSharedSecretOk returns a tuple with the SharedSecret field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *RadiusOutpostConfig) GetSharedSecretOk() (*string, bool) { + if o == nil || IsNil(o.SharedSecret) { + return nil, false + } + return o.SharedSecret, true +} + +// HasSharedSecret returns a boolean if a field has been set. +func (o *RadiusOutpostConfig) HasSharedSecret() bool { + if o != nil && !IsNil(o.SharedSecret) { + return true + } + + return false +} + +// SetSharedSecret gets a reference to the given string and assigns it to the SharedSecret field. +func (o *RadiusOutpostConfig) SetSharedSecret(v string) { + o.SharedSecret = &v +} + +// GetMfaSupport returns the MfaSupport field value if set, zero value otherwise. +func (o *RadiusOutpostConfig) GetMfaSupport() bool { + if o == nil || IsNil(o.MfaSupport) { + var ret bool + return ret + } + return *o.MfaSupport +} + +// GetMfaSupportOk returns a tuple with the MfaSupport field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *RadiusOutpostConfig) GetMfaSupportOk() (*bool, bool) { + if o == nil || IsNil(o.MfaSupport) { + return nil, false + } + return o.MfaSupport, true +} + +// HasMfaSupport returns a boolean if a field has been set. +func (o *RadiusOutpostConfig) HasMfaSupport() bool { + if o != nil && !IsNil(o.MfaSupport) { + return true + } + + return false +} + +// SetMfaSupport gets a reference to the given bool and assigns it to the MfaSupport field. +func (o *RadiusOutpostConfig) SetMfaSupport(v bool) { + o.MfaSupport = &v +} + +// GetCertificate returns the Certificate field value if set, zero value otherwise (both if not set or set to explicit null). +func (o *RadiusOutpostConfig) GetCertificate() string { + if o == nil || IsNil(o.Certificate.Get()) { + var ret string + return ret + } + return *o.Certificate.Get() +} + +// GetCertificateOk returns a tuple with the Certificate field value if set, nil otherwise +// and a boolean to check if the value has been set. +// NOTE: If the value is an explicit nil, `nil, true` will be returned +func (o *RadiusOutpostConfig) GetCertificateOk() (*string, bool) { + if o == nil { + return nil, false + } + return o.Certificate.Get(), o.Certificate.IsSet() +} + +// HasCertificate returns a boolean if a field has been set. +func (o *RadiusOutpostConfig) HasCertificate() bool { + if o != nil && o.Certificate.IsSet() { + return true + } + + return false +} + +// SetCertificate gets a reference to the given NullableString and assigns it to the Certificate field. +func (o *RadiusOutpostConfig) SetCertificate(v string) { + o.Certificate.Set(&v) +} + +// SetCertificateNil sets the value for Certificate to be an explicit nil +func (o *RadiusOutpostConfig) SetCertificateNil() { + o.Certificate.Set(nil) +} + +// UnsetCertificate ensures that no value is present for Certificate, not even an explicit nil +func (o *RadiusOutpostConfig) UnsetCertificate() { + o.Certificate.Unset() +} + +func (o RadiusOutpostConfig) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o RadiusOutpostConfig) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + toSerialize["pk"] = o.Pk + toSerialize["name"] = o.Name + toSerialize["application_slug"] = o.ApplicationSlug + toSerialize["auth_flow_slug"] = o.AuthFlowSlug + if !IsNil(o.ClientNetworks) { + toSerialize["client_networks"] = o.ClientNetworks + } + if !IsNil(o.SharedSecret) { + toSerialize["shared_secret"] = o.SharedSecret + } + if !IsNil(o.MfaSupport) { + toSerialize["mfa_support"] = o.MfaSupport + } + if o.Certificate.IsSet() { + toSerialize["certificate"] = o.Certificate.Get() + } + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *RadiusOutpostConfig) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "pk", + "name", + "application_slug", + "auth_flow_slug", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varRadiusOutpostConfig := _RadiusOutpostConfig{} + + err = json.Unmarshal(data, &varRadiusOutpostConfig) + + if err != nil { + return err + } + + *o = RadiusOutpostConfig(varRadiusOutpostConfig) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "pk") + delete(additionalProperties, "name") + delete(additionalProperties, "application_slug") + delete(additionalProperties, "auth_flow_slug") + delete(additionalProperties, "client_networks") + delete(additionalProperties, "shared_secret") + delete(additionalProperties, "mfa_support") + delete(additionalProperties, "certificate") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableRadiusOutpostConfig struct { + value *RadiusOutpostConfig + isSet bool +} + +func (v NullableRadiusOutpostConfig) Get() *RadiusOutpostConfig { + return v.value +} + +func (v *NullableRadiusOutpostConfig) Set(val *RadiusOutpostConfig) { + v.value = val + v.isSet = true +} + +func (v NullableRadiusOutpostConfig) IsSet() bool { + return v.isSet +} + +func (v *NullableRadiusOutpostConfig) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableRadiusOutpostConfig(val *RadiusOutpostConfig) *NullableRadiusOutpostConfig { + return &NullableRadiusOutpostConfig{value: val, isSet: true} +} + +func (v NullableRadiusOutpostConfig) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableRadiusOutpostConfig) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_redirect_challenge.go b/packages/client-go/model_redirect_challenge.go new file mode 100644 index 0000000000..e99cd95066 --- /dev/null +++ b/packages/client-go/model_redirect_challenge.go @@ -0,0 +1,282 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// checks if the RedirectChallenge type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &RedirectChallenge{} + +// RedirectChallenge Challenge type to redirect the client +type RedirectChallenge struct { + FlowInfo *ContextualFlowInfo `json:"flow_info,omitempty"` + Component *string `json:"component,omitempty"` + ResponseErrors *map[string][]ErrorDetail `json:"response_errors,omitempty"` + To string `json:"to"` + AdditionalProperties map[string]interface{} +} + +type _RedirectChallenge RedirectChallenge + +// NewRedirectChallenge instantiates a new RedirectChallenge object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewRedirectChallenge(to string) *RedirectChallenge { + this := RedirectChallenge{} + var component string = "xak-flow-redirect" + this.Component = &component + this.To = to + return &this +} + +// NewRedirectChallengeWithDefaults instantiates a new RedirectChallenge object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewRedirectChallengeWithDefaults() *RedirectChallenge { + this := RedirectChallenge{} + var component string = "xak-flow-redirect" + this.Component = &component + return &this +} + +// GetFlowInfo returns the FlowInfo field value if set, zero value otherwise. +func (o *RedirectChallenge) GetFlowInfo() ContextualFlowInfo { + if o == nil || IsNil(o.FlowInfo) { + var ret ContextualFlowInfo + return ret + } + return *o.FlowInfo +} + +// GetFlowInfoOk returns a tuple with the FlowInfo field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *RedirectChallenge) GetFlowInfoOk() (*ContextualFlowInfo, bool) { + if o == nil || IsNil(o.FlowInfo) { + return nil, false + } + return o.FlowInfo, true +} + +// HasFlowInfo returns a boolean if a field has been set. +func (o *RedirectChallenge) HasFlowInfo() bool { + if o != nil && !IsNil(o.FlowInfo) { + return true + } + + return false +} + +// SetFlowInfo gets a reference to the given ContextualFlowInfo and assigns it to the FlowInfo field. +func (o *RedirectChallenge) SetFlowInfo(v ContextualFlowInfo) { + o.FlowInfo = &v +} + +// GetComponent returns the Component field value if set, zero value otherwise. +func (o *RedirectChallenge) GetComponent() string { + if o == nil || IsNil(o.Component) { + var ret string + return ret + } + return *o.Component +} + +// GetComponentOk returns a tuple with the Component field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *RedirectChallenge) GetComponentOk() (*string, bool) { + if o == nil || IsNil(o.Component) { + return nil, false + } + return o.Component, true +} + +// HasComponent returns a boolean if a field has been set. +func (o *RedirectChallenge) HasComponent() bool { + if o != nil && !IsNil(o.Component) { + return true + } + + return false +} + +// SetComponent gets a reference to the given string and assigns it to the Component field. +func (o *RedirectChallenge) SetComponent(v string) { + o.Component = &v +} + +// GetResponseErrors returns the ResponseErrors field value if set, zero value otherwise. +func (o *RedirectChallenge) GetResponseErrors() map[string][]ErrorDetail { + if o == nil || IsNil(o.ResponseErrors) { + var ret map[string][]ErrorDetail + return ret + } + return *o.ResponseErrors +} + +// GetResponseErrorsOk returns a tuple with the ResponseErrors field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *RedirectChallenge) GetResponseErrorsOk() (*map[string][]ErrorDetail, bool) { + if o == nil || IsNil(o.ResponseErrors) { + return nil, false + } + return o.ResponseErrors, true +} + +// HasResponseErrors returns a boolean if a field has been set. +func (o *RedirectChallenge) HasResponseErrors() bool { + if o != nil && !IsNil(o.ResponseErrors) { + return true + } + + return false +} + +// SetResponseErrors gets a reference to the given map[string][]ErrorDetail and assigns it to the ResponseErrors field. +func (o *RedirectChallenge) SetResponseErrors(v map[string][]ErrorDetail) { + o.ResponseErrors = &v +} + +// GetTo returns the To field value +func (o *RedirectChallenge) GetTo() string { + if o == nil { + var ret string + return ret + } + + return o.To +} + +// GetToOk returns a tuple with the To field value +// and a boolean to check if the value has been set. +func (o *RedirectChallenge) GetToOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.To, true +} + +// SetTo sets field value +func (o *RedirectChallenge) SetTo(v string) { + o.To = v +} + +func (o RedirectChallenge) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o RedirectChallenge) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.FlowInfo) { + toSerialize["flow_info"] = o.FlowInfo + } + if !IsNil(o.Component) { + toSerialize["component"] = o.Component + } + if !IsNil(o.ResponseErrors) { + toSerialize["response_errors"] = o.ResponseErrors + } + toSerialize["to"] = o.To + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *RedirectChallenge) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "to", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varRedirectChallenge := _RedirectChallenge{} + + err = json.Unmarshal(data, &varRedirectChallenge) + + if err != nil { + return err + } + + *o = RedirectChallenge(varRedirectChallenge) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "flow_info") + delete(additionalProperties, "component") + delete(additionalProperties, "response_errors") + delete(additionalProperties, "to") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableRedirectChallenge struct { + value *RedirectChallenge + isSet bool +} + +func (v NullableRedirectChallenge) Get() *RedirectChallenge { + return v.value +} + +func (v *NullableRedirectChallenge) Set(val *RedirectChallenge) { + v.value = val + v.isSet = true +} + +func (v NullableRedirectChallenge) IsSet() bool { + return v.isSet +} + +func (v *NullableRedirectChallenge) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableRedirectChallenge(val *RedirectChallenge) *NullableRedirectChallenge { + return &NullableRedirectChallenge{value: val, isSet: true} +} + +func (v NullableRedirectChallenge) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableRedirectChallenge) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_redirect_challenge_response_request.go b/packages/client-go/model_redirect_challenge_response_request.go new file mode 100644 index 0000000000..6b5544b4b3 --- /dev/null +++ b/packages/client-go/model_redirect_challenge_response_request.go @@ -0,0 +1,208 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// checks if the RedirectChallengeResponseRequest type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &RedirectChallengeResponseRequest{} + +// RedirectChallengeResponseRequest Redirect challenge response +type RedirectChallengeResponseRequest struct { + Component *string `json:"component,omitempty"` + To string `json:"to"` + AdditionalProperties map[string]interface{} +} + +type _RedirectChallengeResponseRequest RedirectChallengeResponseRequest + +// NewRedirectChallengeResponseRequest instantiates a new RedirectChallengeResponseRequest object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewRedirectChallengeResponseRequest(to string) *RedirectChallengeResponseRequest { + this := RedirectChallengeResponseRequest{} + var component string = "xak-flow-redirect" + this.Component = &component + this.To = to + return &this +} + +// NewRedirectChallengeResponseRequestWithDefaults instantiates a new RedirectChallengeResponseRequest object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewRedirectChallengeResponseRequestWithDefaults() *RedirectChallengeResponseRequest { + this := RedirectChallengeResponseRequest{} + var component string = "xak-flow-redirect" + this.Component = &component + return &this +} + +// GetComponent returns the Component field value if set, zero value otherwise. +func (o *RedirectChallengeResponseRequest) GetComponent() string { + if o == nil || IsNil(o.Component) { + var ret string + return ret + } + return *o.Component +} + +// GetComponentOk returns a tuple with the Component field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *RedirectChallengeResponseRequest) GetComponentOk() (*string, bool) { + if o == nil || IsNil(o.Component) { + return nil, false + } + return o.Component, true +} + +// HasComponent returns a boolean if a field has been set. +func (o *RedirectChallengeResponseRequest) HasComponent() bool { + if o != nil && !IsNil(o.Component) { + return true + } + + return false +} + +// SetComponent gets a reference to the given string and assigns it to the Component field. +func (o *RedirectChallengeResponseRequest) SetComponent(v string) { + o.Component = &v +} + +// GetTo returns the To field value +func (o *RedirectChallengeResponseRequest) GetTo() string { + if o == nil { + var ret string + return ret + } + + return o.To +} + +// GetToOk returns a tuple with the To field value +// and a boolean to check if the value has been set. +func (o *RedirectChallengeResponseRequest) GetToOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.To, true +} + +// SetTo sets field value +func (o *RedirectChallengeResponseRequest) SetTo(v string) { + o.To = v +} + +func (o RedirectChallengeResponseRequest) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o RedirectChallengeResponseRequest) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.Component) { + toSerialize["component"] = o.Component + } + toSerialize["to"] = o.To + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *RedirectChallengeResponseRequest) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "to", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varRedirectChallengeResponseRequest := _RedirectChallengeResponseRequest{} + + err = json.Unmarshal(data, &varRedirectChallengeResponseRequest) + + if err != nil { + return err + } + + *o = RedirectChallengeResponseRequest(varRedirectChallengeResponseRequest) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "component") + delete(additionalProperties, "to") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableRedirectChallengeResponseRequest struct { + value *RedirectChallengeResponseRequest + isSet bool +} + +func (v NullableRedirectChallengeResponseRequest) Get() *RedirectChallengeResponseRequest { + return v.value +} + +func (v *NullableRedirectChallengeResponseRequest) Set(val *RedirectChallengeResponseRequest) { + v.value = val + v.isSet = true +} + +func (v NullableRedirectChallengeResponseRequest) IsSet() bool { + return v.isSet +} + +func (v *NullableRedirectChallengeResponseRequest) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableRedirectChallengeResponseRequest(val *RedirectChallengeResponseRequest) *NullableRedirectChallengeResponseRequest { + return &NullableRedirectChallengeResponseRequest{value: val, isSet: true} +} + +func (v NullableRedirectChallengeResponseRequest) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableRedirectChallengeResponseRequest) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_related_group.go b/packages/client-go/model_related_group.go new file mode 100644 index 0000000000..6c1fecbda4 --- /dev/null +++ b/packages/client-go/model_related_group.go @@ -0,0 +1,300 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// checks if the RelatedGroup type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &RelatedGroup{} + +// RelatedGroup Stripped down group serializer to show relevant children/parents for groups +type RelatedGroup struct { + Pk string `json:"pk"` + Name string `json:"name"` + // Users added to this group will be superusers. + IsSuperuser *bool `json:"is_superuser,omitempty"` + Attributes map[string]interface{} `json:"attributes,omitempty"` + GroupUuid string `json:"group_uuid"` + AdditionalProperties map[string]interface{} +} + +type _RelatedGroup RelatedGroup + +// NewRelatedGroup instantiates a new RelatedGroup object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewRelatedGroup(pk string, name string, groupUuid string) *RelatedGroup { + this := RelatedGroup{} + this.Pk = pk + this.Name = name + this.GroupUuid = groupUuid + return &this +} + +// NewRelatedGroupWithDefaults instantiates a new RelatedGroup object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewRelatedGroupWithDefaults() *RelatedGroup { + this := RelatedGroup{} + return &this +} + +// GetPk returns the Pk field value +func (o *RelatedGroup) GetPk() string { + if o == nil { + var ret string + return ret + } + + return o.Pk +} + +// GetPkOk returns a tuple with the Pk field value +// and a boolean to check if the value has been set. +func (o *RelatedGroup) GetPkOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Pk, true +} + +// SetPk sets field value +func (o *RelatedGroup) SetPk(v string) { + o.Pk = v +} + +// GetName returns the Name field value +func (o *RelatedGroup) GetName() string { + if o == nil { + var ret string + return ret + } + + return o.Name +} + +// GetNameOk returns a tuple with the Name field value +// and a boolean to check if the value has been set. +func (o *RelatedGroup) GetNameOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Name, true +} + +// SetName sets field value +func (o *RelatedGroup) SetName(v string) { + o.Name = v +} + +// GetIsSuperuser returns the IsSuperuser field value if set, zero value otherwise. +func (o *RelatedGroup) GetIsSuperuser() bool { + if o == nil || IsNil(o.IsSuperuser) { + var ret bool + return ret + } + return *o.IsSuperuser +} + +// GetIsSuperuserOk returns a tuple with the IsSuperuser field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *RelatedGroup) GetIsSuperuserOk() (*bool, bool) { + if o == nil || IsNil(o.IsSuperuser) { + return nil, false + } + return o.IsSuperuser, true +} + +// HasIsSuperuser returns a boolean if a field has been set. +func (o *RelatedGroup) HasIsSuperuser() bool { + if o != nil && !IsNil(o.IsSuperuser) { + return true + } + + return false +} + +// SetIsSuperuser gets a reference to the given bool and assigns it to the IsSuperuser field. +func (o *RelatedGroup) SetIsSuperuser(v bool) { + o.IsSuperuser = &v +} + +// GetAttributes returns the Attributes field value if set, zero value otherwise. +func (o *RelatedGroup) GetAttributes() map[string]interface{} { + if o == nil || IsNil(o.Attributes) { + var ret map[string]interface{} + return ret + } + return o.Attributes +} + +// GetAttributesOk returns a tuple with the Attributes field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *RelatedGroup) GetAttributesOk() (map[string]interface{}, bool) { + if o == nil || IsNil(o.Attributes) { + return map[string]interface{}{}, false + } + return o.Attributes, true +} + +// HasAttributes returns a boolean if a field has been set. +func (o *RelatedGroup) HasAttributes() bool { + if o != nil && !IsNil(o.Attributes) { + return true + } + + return false +} + +// SetAttributes gets a reference to the given map[string]interface{} and assigns it to the Attributes field. +func (o *RelatedGroup) SetAttributes(v map[string]interface{}) { + o.Attributes = v +} + +// GetGroupUuid returns the GroupUuid field value +func (o *RelatedGroup) GetGroupUuid() string { + if o == nil { + var ret string + return ret + } + + return o.GroupUuid +} + +// GetGroupUuidOk returns a tuple with the GroupUuid field value +// and a boolean to check if the value has been set. +func (o *RelatedGroup) GetGroupUuidOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.GroupUuid, true +} + +// SetGroupUuid sets field value +func (o *RelatedGroup) SetGroupUuid(v string) { + o.GroupUuid = v +} + +func (o RelatedGroup) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o RelatedGroup) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + toSerialize["pk"] = o.Pk + toSerialize["name"] = o.Name + if !IsNil(o.IsSuperuser) { + toSerialize["is_superuser"] = o.IsSuperuser + } + if !IsNil(o.Attributes) { + toSerialize["attributes"] = o.Attributes + } + toSerialize["group_uuid"] = o.GroupUuid + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *RelatedGroup) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "pk", + "name", + "group_uuid", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varRelatedGroup := _RelatedGroup{} + + err = json.Unmarshal(data, &varRelatedGroup) + + if err != nil { + return err + } + + *o = RelatedGroup(varRelatedGroup) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "pk") + delete(additionalProperties, "name") + delete(additionalProperties, "is_superuser") + delete(additionalProperties, "attributes") + delete(additionalProperties, "group_uuid") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableRelatedGroup struct { + value *RelatedGroup + isSet bool +} + +func (v NullableRelatedGroup) Get() *RelatedGroup { + return v.value +} + +func (v *NullableRelatedGroup) Set(val *RelatedGroup) { + v.value = val + v.isSet = true +} + +func (v NullableRelatedGroup) IsSet() bool { + return v.isSet +} + +func (v *NullableRelatedGroup) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableRelatedGroup(val *RelatedGroup) *NullableRelatedGroup { + return &NullableRelatedGroup{value: val, isSet: true} +} + +func (v NullableRelatedGroup) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableRelatedGroup) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_role.go b/packages/client-go/model_role.go new file mode 100644 index 0000000000..a0182dae81 --- /dev/null +++ b/packages/client-go/model_role.go @@ -0,0 +1,196 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// checks if the Role type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &Role{} + +// Role Role serializer +type Role struct { + Pk string `json:"pk"` + Name string `json:"name"` + AdditionalProperties map[string]interface{} +} + +type _Role Role + +// NewRole instantiates a new Role object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewRole(pk string, name string) *Role { + this := Role{} + this.Pk = pk + this.Name = name + return &this +} + +// NewRoleWithDefaults instantiates a new Role object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewRoleWithDefaults() *Role { + this := Role{} + return &this +} + +// GetPk returns the Pk field value +func (o *Role) GetPk() string { + if o == nil { + var ret string + return ret + } + + return o.Pk +} + +// GetPkOk returns a tuple with the Pk field value +// and a boolean to check if the value has been set. +func (o *Role) GetPkOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Pk, true +} + +// SetPk sets field value +func (o *Role) SetPk(v string) { + o.Pk = v +} + +// GetName returns the Name field value +func (o *Role) GetName() string { + if o == nil { + var ret string + return ret + } + + return o.Name +} + +// GetNameOk returns a tuple with the Name field value +// and a boolean to check if the value has been set. +func (o *Role) GetNameOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Name, true +} + +// SetName sets field value +func (o *Role) SetName(v string) { + o.Name = v +} + +func (o Role) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o Role) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + toSerialize["pk"] = o.Pk + toSerialize["name"] = o.Name + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *Role) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "pk", + "name", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varRole := _Role{} + + err = json.Unmarshal(data, &varRole) + + if err != nil { + return err + } + + *o = Role(varRole) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "pk") + delete(additionalProperties, "name") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableRole struct { + value *Role + isSet bool +} + +func (v NullableRole) Get() *Role { + return v.value +} + +func (v *NullableRole) Set(val *Role) { + v.value = val + v.isSet = true +} + +func (v NullableRole) IsSet() bool { + return v.isSet +} + +func (v *NullableRole) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableRole(val *Role) *NullableRole { + return &NullableRole{value: val, isSet: true} +} + +func (v NullableRole) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableRole) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_saml_bindings_enum.go b/packages/client-go/model_saml_bindings_enum.go new file mode 100644 index 0000000000..178c54c930 --- /dev/null +++ b/packages/client-go/model_saml_bindings_enum.go @@ -0,0 +1,111 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// SAMLBindingsEnum the model 'SAMLBindingsEnum' +type SAMLBindingsEnum string + +// List of SAMLBindingsEnum +const ( + SAMLBINDINGSENUM_REDIRECT SAMLBindingsEnum = "redirect" + SAMLBINDINGSENUM_POST SAMLBindingsEnum = "post" +) + +// All allowed values of SAMLBindingsEnum enum +var AllowedSAMLBindingsEnumEnumValues = []SAMLBindingsEnum{ + "redirect", + "post", +} + +func (v *SAMLBindingsEnum) UnmarshalJSON(src []byte) error { + var value string + err := json.Unmarshal(src, &value) + if err != nil { + return err + } + enumTypeValue := SAMLBindingsEnum(value) + for _, existing := range AllowedSAMLBindingsEnumEnumValues { + if existing == enumTypeValue { + *v = enumTypeValue + return nil + } + } + + return fmt.Errorf("%+v is not a valid SAMLBindingsEnum", value) +} + +// NewSAMLBindingsEnumFromValue returns a pointer to a valid SAMLBindingsEnum +// for the value passed as argument, or an error if the value passed is not allowed by the enum +func NewSAMLBindingsEnumFromValue(v string) (*SAMLBindingsEnum, error) { + ev := SAMLBindingsEnum(v) + if ev.IsValid() { + return &ev, nil + } else { + return nil, fmt.Errorf("invalid value '%v' for SAMLBindingsEnum: valid values are %v", v, AllowedSAMLBindingsEnumEnumValues) + } +} + +// IsValid return true if the value is valid for the enum, false otherwise +func (v SAMLBindingsEnum) IsValid() bool { + for _, existing := range AllowedSAMLBindingsEnumEnumValues { + if existing == v { + return true + } + } + return false +} + +// Ptr returns reference to SAMLBindingsEnum value +func (v SAMLBindingsEnum) Ptr() *SAMLBindingsEnum { + return &v +} + +type NullableSAMLBindingsEnum struct { + value *SAMLBindingsEnum + isSet bool +} + +func (v NullableSAMLBindingsEnum) Get() *SAMLBindingsEnum { + return v.value +} + +func (v *NullableSAMLBindingsEnum) Set(val *SAMLBindingsEnum) { + v.value = val + v.isSet = true +} + +func (v NullableSAMLBindingsEnum) IsSet() bool { + return v.isSet +} + +func (v *NullableSAMLBindingsEnum) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableSAMLBindingsEnum(val *SAMLBindingsEnum) *NullableSAMLBindingsEnum { + return &NullableSAMLBindingsEnum{value: val, isSet: true} +} + +func (v NullableSAMLBindingsEnum) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableSAMLBindingsEnum) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_selectable_stage.go b/packages/client-go/model_selectable_stage.go new file mode 100644 index 0000000000..aada93572f --- /dev/null +++ b/packages/client-go/model_selectable_stage.go @@ -0,0 +1,254 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// checks if the SelectableStage type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &SelectableStage{} + +// SelectableStage Serializer for stages which can be selected by users +type SelectableStage struct { + Pk string `json:"pk"` + Name string `json:"name"` + VerboseName string `json:"verbose_name"` + MetaModelName string `json:"meta_model_name"` + AdditionalProperties map[string]interface{} +} + +type _SelectableStage SelectableStage + +// NewSelectableStage instantiates a new SelectableStage object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewSelectableStage(pk string, name string, verboseName string, metaModelName string) *SelectableStage { + this := SelectableStage{} + this.Pk = pk + this.Name = name + this.VerboseName = verboseName + this.MetaModelName = metaModelName + return &this +} + +// NewSelectableStageWithDefaults instantiates a new SelectableStage object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewSelectableStageWithDefaults() *SelectableStage { + this := SelectableStage{} + return &this +} + +// GetPk returns the Pk field value +func (o *SelectableStage) GetPk() string { + if o == nil { + var ret string + return ret + } + + return o.Pk +} + +// GetPkOk returns a tuple with the Pk field value +// and a boolean to check if the value has been set. +func (o *SelectableStage) GetPkOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Pk, true +} + +// SetPk sets field value +func (o *SelectableStage) SetPk(v string) { + o.Pk = v +} + +// GetName returns the Name field value +func (o *SelectableStage) GetName() string { + if o == nil { + var ret string + return ret + } + + return o.Name +} + +// GetNameOk returns a tuple with the Name field value +// and a boolean to check if the value has been set. +func (o *SelectableStage) GetNameOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Name, true +} + +// SetName sets field value +func (o *SelectableStage) SetName(v string) { + o.Name = v +} + +// GetVerboseName returns the VerboseName field value +func (o *SelectableStage) GetVerboseName() string { + if o == nil { + var ret string + return ret + } + + return o.VerboseName +} + +// GetVerboseNameOk returns a tuple with the VerboseName field value +// and a boolean to check if the value has been set. +func (o *SelectableStage) GetVerboseNameOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.VerboseName, true +} + +// SetVerboseName sets field value +func (o *SelectableStage) SetVerboseName(v string) { + o.VerboseName = v +} + +// GetMetaModelName returns the MetaModelName field value +func (o *SelectableStage) GetMetaModelName() string { + if o == nil { + var ret string + return ret + } + + return o.MetaModelName +} + +// GetMetaModelNameOk returns a tuple with the MetaModelName field value +// and a boolean to check if the value has been set. +func (o *SelectableStage) GetMetaModelNameOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.MetaModelName, true +} + +// SetMetaModelName sets field value +func (o *SelectableStage) SetMetaModelName(v string) { + o.MetaModelName = v +} + +func (o SelectableStage) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o SelectableStage) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + toSerialize["pk"] = o.Pk + toSerialize["name"] = o.Name + toSerialize["verbose_name"] = o.VerboseName + toSerialize["meta_model_name"] = o.MetaModelName + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *SelectableStage) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "pk", + "name", + "verbose_name", + "meta_model_name", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varSelectableStage := _SelectableStage{} + + err = json.Unmarshal(data, &varSelectableStage) + + if err != nil { + return err + } + + *o = SelectableStage(varSelectableStage) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "pk") + delete(additionalProperties, "name") + delete(additionalProperties, "verbose_name") + delete(additionalProperties, "meta_model_name") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableSelectableStage struct { + value *SelectableStage + isSet bool +} + +func (v NullableSelectableStage) Get() *SelectableStage { + return v.value +} + +func (v *NullableSelectableStage) Set(val *SelectableStage) { + v.value = val + v.isSet = true +} + +func (v NullableSelectableStage) IsSet() bool { + return v.isSet +} + +func (v *NullableSelectableStage) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableSelectableStage(val *SelectableStage) *NullableSelectableStage { + return &NullableSelectableStage{value: val, isSet: true} +} + +func (v NullableSelectableStage) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableSelectableStage) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_service_connection.go b/packages/client-go/model_service_connection.go new file mode 100644 index 0000000000..a92244d852 --- /dev/null +++ b/packages/client-go/model_service_connection.go @@ -0,0 +1,354 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// checks if the ServiceConnection type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &ServiceConnection{} + +// ServiceConnection ServiceConnection Serializer +type ServiceConnection struct { + Pk string `json:"pk"` + Name string `json:"name"` + // If enabled, use the local connection. Required Docker socket/Kubernetes Integration + Local *bool `json:"local,omitempty"` + // Return component used to edit this object + Component string `json:"component"` + // Return object's verbose_name + VerboseName string `json:"verbose_name"` + // Return object's plural verbose_name + VerboseNamePlural string `json:"verbose_name_plural"` + // Return internal model name + MetaModelName string `json:"meta_model_name"` + AdditionalProperties map[string]interface{} +} + +type _ServiceConnection ServiceConnection + +// NewServiceConnection instantiates a new ServiceConnection object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewServiceConnection(pk string, name string, component string, verboseName string, verboseNamePlural string, metaModelName string) *ServiceConnection { + this := ServiceConnection{} + this.Pk = pk + this.Name = name + this.Component = component + this.VerboseName = verboseName + this.VerboseNamePlural = verboseNamePlural + this.MetaModelName = metaModelName + return &this +} + +// NewServiceConnectionWithDefaults instantiates a new ServiceConnection object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewServiceConnectionWithDefaults() *ServiceConnection { + this := ServiceConnection{} + return &this +} + +// GetPk returns the Pk field value +func (o *ServiceConnection) GetPk() string { + if o == nil { + var ret string + return ret + } + + return o.Pk +} + +// GetPkOk returns a tuple with the Pk field value +// and a boolean to check if the value has been set. +func (o *ServiceConnection) GetPkOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Pk, true +} + +// SetPk sets field value +func (o *ServiceConnection) SetPk(v string) { + o.Pk = v +} + +// GetName returns the Name field value +func (o *ServiceConnection) GetName() string { + if o == nil { + var ret string + return ret + } + + return o.Name +} + +// GetNameOk returns a tuple with the Name field value +// and a boolean to check if the value has been set. +func (o *ServiceConnection) GetNameOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Name, true +} + +// SetName sets field value +func (o *ServiceConnection) SetName(v string) { + o.Name = v +} + +// GetLocal returns the Local field value if set, zero value otherwise. +func (o *ServiceConnection) GetLocal() bool { + if o == nil || IsNil(o.Local) { + var ret bool + return ret + } + return *o.Local +} + +// GetLocalOk returns a tuple with the Local field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *ServiceConnection) GetLocalOk() (*bool, bool) { + if o == nil || IsNil(o.Local) { + return nil, false + } + return o.Local, true +} + +// HasLocal returns a boolean if a field has been set. +func (o *ServiceConnection) HasLocal() bool { + if o != nil && !IsNil(o.Local) { + return true + } + + return false +} + +// SetLocal gets a reference to the given bool and assigns it to the Local field. +func (o *ServiceConnection) SetLocal(v bool) { + o.Local = &v +} + +// GetComponent returns the Component field value +func (o *ServiceConnection) GetComponent() string { + if o == nil { + var ret string + return ret + } + + return o.Component +} + +// GetComponentOk returns a tuple with the Component field value +// and a boolean to check if the value has been set. +func (o *ServiceConnection) GetComponentOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Component, true +} + +// SetComponent sets field value +func (o *ServiceConnection) SetComponent(v string) { + o.Component = v +} + +// GetVerboseName returns the VerboseName field value +func (o *ServiceConnection) GetVerboseName() string { + if o == nil { + var ret string + return ret + } + + return o.VerboseName +} + +// GetVerboseNameOk returns a tuple with the VerboseName field value +// and a boolean to check if the value has been set. +func (o *ServiceConnection) GetVerboseNameOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.VerboseName, true +} + +// SetVerboseName sets field value +func (o *ServiceConnection) SetVerboseName(v string) { + o.VerboseName = v +} + +// GetVerboseNamePlural returns the VerboseNamePlural field value +func (o *ServiceConnection) GetVerboseNamePlural() string { + if o == nil { + var ret string + return ret + } + + return o.VerboseNamePlural +} + +// GetVerboseNamePluralOk returns a tuple with the VerboseNamePlural field value +// and a boolean to check if the value has been set. +func (o *ServiceConnection) GetVerboseNamePluralOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.VerboseNamePlural, true +} + +// SetVerboseNamePlural sets field value +func (o *ServiceConnection) SetVerboseNamePlural(v string) { + o.VerboseNamePlural = v +} + +// GetMetaModelName returns the MetaModelName field value +func (o *ServiceConnection) GetMetaModelName() string { + if o == nil { + var ret string + return ret + } + + return o.MetaModelName +} + +// GetMetaModelNameOk returns a tuple with the MetaModelName field value +// and a boolean to check if the value has been set. +func (o *ServiceConnection) GetMetaModelNameOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.MetaModelName, true +} + +// SetMetaModelName sets field value +func (o *ServiceConnection) SetMetaModelName(v string) { + o.MetaModelName = v +} + +func (o ServiceConnection) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o ServiceConnection) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + toSerialize["pk"] = o.Pk + toSerialize["name"] = o.Name + if !IsNil(o.Local) { + toSerialize["local"] = o.Local + } + toSerialize["component"] = o.Component + toSerialize["verbose_name"] = o.VerboseName + toSerialize["verbose_name_plural"] = o.VerboseNamePlural + toSerialize["meta_model_name"] = o.MetaModelName + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *ServiceConnection) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "pk", + "name", + "component", + "verbose_name", + "verbose_name_plural", + "meta_model_name", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varServiceConnection := _ServiceConnection{} + + err = json.Unmarshal(data, &varServiceConnection) + + if err != nil { + return err + } + + *o = ServiceConnection(varServiceConnection) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "pk") + delete(additionalProperties, "name") + delete(additionalProperties, "local") + delete(additionalProperties, "component") + delete(additionalProperties, "verbose_name") + delete(additionalProperties, "verbose_name_plural") + delete(additionalProperties, "meta_model_name") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableServiceConnection struct { + value *ServiceConnection + isSet bool +} + +func (v NullableServiceConnection) Get() *ServiceConnection { + return v.value +} + +func (v *NullableServiceConnection) Set(val *ServiceConnection) { + v.value = val + v.isSet = true +} + +func (v NullableServiceConnection) IsSet() bool { + return v.isSet +} + +func (v *NullableServiceConnection) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableServiceConnection(val *ServiceConnection) *NullableServiceConnection { + return &NullableServiceConnection{value: val, isSet: true} +} + +func (v NullableServiceConnection) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableServiceConnection) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_session_end_challenge.go b/packages/client-go/model_session_end_challenge.go new file mode 100644 index 0000000000..a039b862d4 --- /dev/null +++ b/packages/client-go/model_session_end_challenge.go @@ -0,0 +1,451 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// checks if the SessionEndChallenge type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &SessionEndChallenge{} + +// SessionEndChallenge Challenge for ending a session +type SessionEndChallenge struct { + FlowInfo *ContextualFlowInfo `json:"flow_info,omitempty"` + Component *string `json:"component,omitempty"` + ResponseErrors *map[string][]ErrorDetail `json:"response_errors,omitempty"` + PendingUser string `json:"pending_user"` + PendingUserAvatar string `json:"pending_user_avatar"` + ApplicationName *string `json:"application_name,omitempty"` + ApplicationLaunchUrl *string `json:"application_launch_url,omitempty"` + InvalidationFlowUrl *string `json:"invalidation_flow_url,omitempty"` + BrandName string `json:"brand_name"` + AdditionalProperties map[string]interface{} +} + +type _SessionEndChallenge SessionEndChallenge + +// NewSessionEndChallenge instantiates a new SessionEndChallenge object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewSessionEndChallenge(pendingUser string, pendingUserAvatar string, brandName string) *SessionEndChallenge { + this := SessionEndChallenge{} + var component string = "ak-stage-session-end" + this.Component = &component + this.PendingUser = pendingUser + this.PendingUserAvatar = pendingUserAvatar + this.BrandName = brandName + return &this +} + +// NewSessionEndChallengeWithDefaults instantiates a new SessionEndChallenge object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewSessionEndChallengeWithDefaults() *SessionEndChallenge { + this := SessionEndChallenge{} + var component string = "ak-stage-session-end" + this.Component = &component + return &this +} + +// GetFlowInfo returns the FlowInfo field value if set, zero value otherwise. +func (o *SessionEndChallenge) GetFlowInfo() ContextualFlowInfo { + if o == nil || IsNil(o.FlowInfo) { + var ret ContextualFlowInfo + return ret + } + return *o.FlowInfo +} + +// GetFlowInfoOk returns a tuple with the FlowInfo field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *SessionEndChallenge) GetFlowInfoOk() (*ContextualFlowInfo, bool) { + if o == nil || IsNil(o.FlowInfo) { + return nil, false + } + return o.FlowInfo, true +} + +// HasFlowInfo returns a boolean if a field has been set. +func (o *SessionEndChallenge) HasFlowInfo() bool { + if o != nil && !IsNil(o.FlowInfo) { + return true + } + + return false +} + +// SetFlowInfo gets a reference to the given ContextualFlowInfo and assigns it to the FlowInfo field. +func (o *SessionEndChallenge) SetFlowInfo(v ContextualFlowInfo) { + o.FlowInfo = &v +} + +// GetComponent returns the Component field value if set, zero value otherwise. +func (o *SessionEndChallenge) GetComponent() string { + if o == nil || IsNil(o.Component) { + var ret string + return ret + } + return *o.Component +} + +// GetComponentOk returns a tuple with the Component field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *SessionEndChallenge) GetComponentOk() (*string, bool) { + if o == nil || IsNil(o.Component) { + return nil, false + } + return o.Component, true +} + +// HasComponent returns a boolean if a field has been set. +func (o *SessionEndChallenge) HasComponent() bool { + if o != nil && !IsNil(o.Component) { + return true + } + + return false +} + +// SetComponent gets a reference to the given string and assigns it to the Component field. +func (o *SessionEndChallenge) SetComponent(v string) { + o.Component = &v +} + +// GetResponseErrors returns the ResponseErrors field value if set, zero value otherwise. +func (o *SessionEndChallenge) GetResponseErrors() map[string][]ErrorDetail { + if o == nil || IsNil(o.ResponseErrors) { + var ret map[string][]ErrorDetail + return ret + } + return *o.ResponseErrors +} + +// GetResponseErrorsOk returns a tuple with the ResponseErrors field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *SessionEndChallenge) GetResponseErrorsOk() (*map[string][]ErrorDetail, bool) { + if o == nil || IsNil(o.ResponseErrors) { + return nil, false + } + return o.ResponseErrors, true +} + +// HasResponseErrors returns a boolean if a field has been set. +func (o *SessionEndChallenge) HasResponseErrors() bool { + if o != nil && !IsNil(o.ResponseErrors) { + return true + } + + return false +} + +// SetResponseErrors gets a reference to the given map[string][]ErrorDetail and assigns it to the ResponseErrors field. +func (o *SessionEndChallenge) SetResponseErrors(v map[string][]ErrorDetail) { + o.ResponseErrors = &v +} + +// GetPendingUser returns the PendingUser field value +func (o *SessionEndChallenge) GetPendingUser() string { + if o == nil { + var ret string + return ret + } + + return o.PendingUser +} + +// GetPendingUserOk returns a tuple with the PendingUser field value +// and a boolean to check if the value has been set. +func (o *SessionEndChallenge) GetPendingUserOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.PendingUser, true +} + +// SetPendingUser sets field value +func (o *SessionEndChallenge) SetPendingUser(v string) { + o.PendingUser = v +} + +// GetPendingUserAvatar returns the PendingUserAvatar field value +func (o *SessionEndChallenge) GetPendingUserAvatar() string { + if o == nil { + var ret string + return ret + } + + return o.PendingUserAvatar +} + +// GetPendingUserAvatarOk returns a tuple with the PendingUserAvatar field value +// and a boolean to check if the value has been set. +func (o *SessionEndChallenge) GetPendingUserAvatarOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.PendingUserAvatar, true +} + +// SetPendingUserAvatar sets field value +func (o *SessionEndChallenge) SetPendingUserAvatar(v string) { + o.PendingUserAvatar = v +} + +// GetApplicationName returns the ApplicationName field value if set, zero value otherwise. +func (o *SessionEndChallenge) GetApplicationName() string { + if o == nil || IsNil(o.ApplicationName) { + var ret string + return ret + } + return *o.ApplicationName +} + +// GetApplicationNameOk returns a tuple with the ApplicationName field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *SessionEndChallenge) GetApplicationNameOk() (*string, bool) { + if o == nil || IsNil(o.ApplicationName) { + return nil, false + } + return o.ApplicationName, true +} + +// HasApplicationName returns a boolean if a field has been set. +func (o *SessionEndChallenge) HasApplicationName() bool { + if o != nil && !IsNil(o.ApplicationName) { + return true + } + + return false +} + +// SetApplicationName gets a reference to the given string and assigns it to the ApplicationName field. +func (o *SessionEndChallenge) SetApplicationName(v string) { + o.ApplicationName = &v +} + +// GetApplicationLaunchUrl returns the ApplicationLaunchUrl field value if set, zero value otherwise. +func (o *SessionEndChallenge) GetApplicationLaunchUrl() string { + if o == nil || IsNil(o.ApplicationLaunchUrl) { + var ret string + return ret + } + return *o.ApplicationLaunchUrl +} + +// GetApplicationLaunchUrlOk returns a tuple with the ApplicationLaunchUrl field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *SessionEndChallenge) GetApplicationLaunchUrlOk() (*string, bool) { + if o == nil || IsNil(o.ApplicationLaunchUrl) { + return nil, false + } + return o.ApplicationLaunchUrl, true +} + +// HasApplicationLaunchUrl returns a boolean if a field has been set. +func (o *SessionEndChallenge) HasApplicationLaunchUrl() bool { + if o != nil && !IsNil(o.ApplicationLaunchUrl) { + return true + } + + return false +} + +// SetApplicationLaunchUrl gets a reference to the given string and assigns it to the ApplicationLaunchUrl field. +func (o *SessionEndChallenge) SetApplicationLaunchUrl(v string) { + o.ApplicationLaunchUrl = &v +} + +// GetInvalidationFlowUrl returns the InvalidationFlowUrl field value if set, zero value otherwise. +func (o *SessionEndChallenge) GetInvalidationFlowUrl() string { + if o == nil || IsNil(o.InvalidationFlowUrl) { + var ret string + return ret + } + return *o.InvalidationFlowUrl +} + +// GetInvalidationFlowUrlOk returns a tuple with the InvalidationFlowUrl field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *SessionEndChallenge) GetInvalidationFlowUrlOk() (*string, bool) { + if o == nil || IsNil(o.InvalidationFlowUrl) { + return nil, false + } + return o.InvalidationFlowUrl, true +} + +// HasInvalidationFlowUrl returns a boolean if a field has been set. +func (o *SessionEndChallenge) HasInvalidationFlowUrl() bool { + if o != nil && !IsNil(o.InvalidationFlowUrl) { + return true + } + + return false +} + +// SetInvalidationFlowUrl gets a reference to the given string and assigns it to the InvalidationFlowUrl field. +func (o *SessionEndChallenge) SetInvalidationFlowUrl(v string) { + o.InvalidationFlowUrl = &v +} + +// GetBrandName returns the BrandName field value +func (o *SessionEndChallenge) GetBrandName() string { + if o == nil { + var ret string + return ret + } + + return o.BrandName +} + +// GetBrandNameOk returns a tuple with the BrandName field value +// and a boolean to check if the value has been set. +func (o *SessionEndChallenge) GetBrandNameOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.BrandName, true +} + +// SetBrandName sets field value +func (o *SessionEndChallenge) SetBrandName(v string) { + o.BrandName = v +} + +func (o SessionEndChallenge) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o SessionEndChallenge) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.FlowInfo) { + toSerialize["flow_info"] = o.FlowInfo + } + if !IsNil(o.Component) { + toSerialize["component"] = o.Component + } + if !IsNil(o.ResponseErrors) { + toSerialize["response_errors"] = o.ResponseErrors + } + toSerialize["pending_user"] = o.PendingUser + toSerialize["pending_user_avatar"] = o.PendingUserAvatar + if !IsNil(o.ApplicationName) { + toSerialize["application_name"] = o.ApplicationName + } + if !IsNil(o.ApplicationLaunchUrl) { + toSerialize["application_launch_url"] = o.ApplicationLaunchUrl + } + if !IsNil(o.InvalidationFlowUrl) { + toSerialize["invalidation_flow_url"] = o.InvalidationFlowUrl + } + toSerialize["brand_name"] = o.BrandName + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *SessionEndChallenge) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "pending_user", + "pending_user_avatar", + "brand_name", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varSessionEndChallenge := _SessionEndChallenge{} + + err = json.Unmarshal(data, &varSessionEndChallenge) + + if err != nil { + return err + } + + *o = SessionEndChallenge(varSessionEndChallenge) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "flow_info") + delete(additionalProperties, "component") + delete(additionalProperties, "response_errors") + delete(additionalProperties, "pending_user") + delete(additionalProperties, "pending_user_avatar") + delete(additionalProperties, "application_name") + delete(additionalProperties, "application_launch_url") + delete(additionalProperties, "invalidation_flow_url") + delete(additionalProperties, "brand_name") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableSessionEndChallenge struct { + value *SessionEndChallenge + isSet bool +} + +func (v NullableSessionEndChallenge) Get() *SessionEndChallenge { + return v.value +} + +func (v *NullableSessionEndChallenge) Set(val *SessionEndChallenge) { + v.value = val + v.isSet = true +} + +func (v NullableSessionEndChallenge) IsSet() bool { + return v.isSet +} + +func (v *NullableSessionEndChallenge) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableSessionEndChallenge(val *SessionEndChallenge) *NullableSessionEndChallenge { + return &NullableSessionEndChallenge{value: val, isSet: true} +} + +func (v NullableSessionEndChallenge) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableSessionEndChallenge) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_session_user.go b/packages/client-go/model_session_user.go new file mode 100644 index 0000000000..53d627f430 --- /dev/null +++ b/packages/client-go/model_session_user.go @@ -0,0 +1,204 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// checks if the SessionUser type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &SessionUser{} + +// SessionUser Response for the /user/me endpoint, returns the currently active user (as `user` property) and, if this user is being impersonated, the original user in the `original` property. +type SessionUser struct { + User UserSelf `json:"user"` + Original *UserSelf `json:"original,omitempty"` + AdditionalProperties map[string]interface{} +} + +type _SessionUser SessionUser + +// NewSessionUser instantiates a new SessionUser object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewSessionUser(user UserSelf) *SessionUser { + this := SessionUser{} + this.User = user + return &this +} + +// NewSessionUserWithDefaults instantiates a new SessionUser object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewSessionUserWithDefaults() *SessionUser { + this := SessionUser{} + return &this +} + +// GetUser returns the User field value +func (o *SessionUser) GetUser() UserSelf { + if o == nil { + var ret UserSelf + return ret + } + + return o.User +} + +// GetUserOk returns a tuple with the User field value +// and a boolean to check if the value has been set. +func (o *SessionUser) GetUserOk() (*UserSelf, bool) { + if o == nil { + return nil, false + } + return &o.User, true +} + +// SetUser sets field value +func (o *SessionUser) SetUser(v UserSelf) { + o.User = v +} + +// GetOriginal returns the Original field value if set, zero value otherwise. +func (o *SessionUser) GetOriginal() UserSelf { + if o == nil || IsNil(o.Original) { + var ret UserSelf + return ret + } + return *o.Original +} + +// GetOriginalOk returns a tuple with the Original field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *SessionUser) GetOriginalOk() (*UserSelf, bool) { + if o == nil || IsNil(o.Original) { + return nil, false + } + return o.Original, true +} + +// HasOriginal returns a boolean if a field has been set. +func (o *SessionUser) HasOriginal() bool { + if o != nil && !IsNil(o.Original) { + return true + } + + return false +} + +// SetOriginal gets a reference to the given UserSelf and assigns it to the Original field. +func (o *SessionUser) SetOriginal(v UserSelf) { + o.Original = &v +} + +func (o SessionUser) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o SessionUser) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + toSerialize["user"] = o.User + if !IsNil(o.Original) { + toSerialize["original"] = o.Original + } + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *SessionUser) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "user", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varSessionUser := _SessionUser{} + + err = json.Unmarshal(data, &varSessionUser) + + if err != nil { + return err + } + + *o = SessionUser(varSessionUser) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "user") + delete(additionalProperties, "original") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableSessionUser struct { + value *SessionUser + isSet bool +} + +func (v NullableSessionUser) Get() *SessionUser { + return v.value +} + +func (v *NullableSessionUser) Set(val *SessionUser) { + v.value = val + v.isSet = true +} + +func (v NullableSessionUser) IsSet() bool { + return v.isSet +} + +func (v *NullableSessionUser) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableSessionUser(val *SessionUser) *NullableSessionUser { + return &NullableSessionUser{value: val, isSet: true} +} + +func (v NullableSessionUser) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableSessionUser) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_shell_challenge.go b/packages/client-go/model_shell_challenge.go new file mode 100644 index 0000000000..bb95b64a28 --- /dev/null +++ b/packages/client-go/model_shell_challenge.go @@ -0,0 +1,282 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// checks if the ShellChallenge type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &ShellChallenge{} + +// ShellChallenge challenge type to render HTML as-is +type ShellChallenge struct { + FlowInfo *ContextualFlowInfo `json:"flow_info,omitempty"` + Component *string `json:"component,omitempty"` + ResponseErrors *map[string][]ErrorDetail `json:"response_errors,omitempty"` + Body string `json:"body"` + AdditionalProperties map[string]interface{} +} + +type _ShellChallenge ShellChallenge + +// NewShellChallenge instantiates a new ShellChallenge object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewShellChallenge(body string) *ShellChallenge { + this := ShellChallenge{} + var component string = "xak-flow-shell" + this.Component = &component + this.Body = body + return &this +} + +// NewShellChallengeWithDefaults instantiates a new ShellChallenge object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewShellChallengeWithDefaults() *ShellChallenge { + this := ShellChallenge{} + var component string = "xak-flow-shell" + this.Component = &component + return &this +} + +// GetFlowInfo returns the FlowInfo field value if set, zero value otherwise. +func (o *ShellChallenge) GetFlowInfo() ContextualFlowInfo { + if o == nil || IsNil(o.FlowInfo) { + var ret ContextualFlowInfo + return ret + } + return *o.FlowInfo +} + +// GetFlowInfoOk returns a tuple with the FlowInfo field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *ShellChallenge) GetFlowInfoOk() (*ContextualFlowInfo, bool) { + if o == nil || IsNil(o.FlowInfo) { + return nil, false + } + return o.FlowInfo, true +} + +// HasFlowInfo returns a boolean if a field has been set. +func (o *ShellChallenge) HasFlowInfo() bool { + if o != nil && !IsNil(o.FlowInfo) { + return true + } + + return false +} + +// SetFlowInfo gets a reference to the given ContextualFlowInfo and assigns it to the FlowInfo field. +func (o *ShellChallenge) SetFlowInfo(v ContextualFlowInfo) { + o.FlowInfo = &v +} + +// GetComponent returns the Component field value if set, zero value otherwise. +func (o *ShellChallenge) GetComponent() string { + if o == nil || IsNil(o.Component) { + var ret string + return ret + } + return *o.Component +} + +// GetComponentOk returns a tuple with the Component field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *ShellChallenge) GetComponentOk() (*string, bool) { + if o == nil || IsNil(o.Component) { + return nil, false + } + return o.Component, true +} + +// HasComponent returns a boolean if a field has been set. +func (o *ShellChallenge) HasComponent() bool { + if o != nil && !IsNil(o.Component) { + return true + } + + return false +} + +// SetComponent gets a reference to the given string and assigns it to the Component field. +func (o *ShellChallenge) SetComponent(v string) { + o.Component = &v +} + +// GetResponseErrors returns the ResponseErrors field value if set, zero value otherwise. +func (o *ShellChallenge) GetResponseErrors() map[string][]ErrorDetail { + if o == nil || IsNil(o.ResponseErrors) { + var ret map[string][]ErrorDetail + return ret + } + return *o.ResponseErrors +} + +// GetResponseErrorsOk returns a tuple with the ResponseErrors field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *ShellChallenge) GetResponseErrorsOk() (*map[string][]ErrorDetail, bool) { + if o == nil || IsNil(o.ResponseErrors) { + return nil, false + } + return o.ResponseErrors, true +} + +// HasResponseErrors returns a boolean if a field has been set. +func (o *ShellChallenge) HasResponseErrors() bool { + if o != nil && !IsNil(o.ResponseErrors) { + return true + } + + return false +} + +// SetResponseErrors gets a reference to the given map[string][]ErrorDetail and assigns it to the ResponseErrors field. +func (o *ShellChallenge) SetResponseErrors(v map[string][]ErrorDetail) { + o.ResponseErrors = &v +} + +// GetBody returns the Body field value +func (o *ShellChallenge) GetBody() string { + if o == nil { + var ret string + return ret + } + + return o.Body +} + +// GetBodyOk returns a tuple with the Body field value +// and a boolean to check if the value has been set. +func (o *ShellChallenge) GetBodyOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Body, true +} + +// SetBody sets field value +func (o *ShellChallenge) SetBody(v string) { + o.Body = v +} + +func (o ShellChallenge) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o ShellChallenge) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.FlowInfo) { + toSerialize["flow_info"] = o.FlowInfo + } + if !IsNil(o.Component) { + toSerialize["component"] = o.Component + } + if !IsNil(o.ResponseErrors) { + toSerialize["response_errors"] = o.ResponseErrors + } + toSerialize["body"] = o.Body + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *ShellChallenge) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "body", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varShellChallenge := _ShellChallenge{} + + err = json.Unmarshal(data, &varShellChallenge) + + if err != nil { + return err + } + + *o = ShellChallenge(varShellChallenge) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "flow_info") + delete(additionalProperties, "component") + delete(additionalProperties, "response_errors") + delete(additionalProperties, "body") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableShellChallenge struct { + value *ShellChallenge + isSet bool +} + +func (v NullableShellChallenge) Get() *ShellChallenge { + return v.value +} + +func (v *NullableShellChallenge) Set(val *ShellChallenge) { + v.value = val + v.isSet = true +} + +func (v NullableShellChallenge) IsSet() bool { + return v.isSet +} + +func (v *NullableShellChallenge) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableShellChallenge(val *ShellChallenge) *NullableShellChallenge { + return &NullableShellChallenge{value: val, isSet: true} +} + +func (v NullableShellChallenge) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableShellChallenge) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_stage_prompt.go b/packages/client-go/model_stage_prompt.go new file mode 100644 index 0000000000..e8a363cd24 --- /dev/null +++ b/packages/client-go/model_stage_prompt.go @@ -0,0 +1,403 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// checks if the StagePrompt type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &StagePrompt{} + +// StagePrompt Serializer for a single Prompt field +type StagePrompt struct { + FieldKey string `json:"field_key"` + Label string `json:"label"` + Type PromptTypeEnum `json:"type"` + Required bool `json:"required"` + Placeholder string `json:"placeholder"` + InitialValue string `json:"initial_value"` + Order int32 `json:"order"` + SubText string `json:"sub_text"` + Choices []PromptChoice `json:"choices"` + AdditionalProperties map[string]interface{} +} + +type _StagePrompt StagePrompt + +// NewStagePrompt instantiates a new StagePrompt object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewStagePrompt(fieldKey string, label string, type_ PromptTypeEnum, required bool, placeholder string, initialValue string, order int32, subText string, choices []PromptChoice) *StagePrompt { + this := StagePrompt{} + this.FieldKey = fieldKey + this.Label = label + this.Type = type_ + this.Required = required + this.Placeholder = placeholder + this.InitialValue = initialValue + this.Order = order + this.SubText = subText + this.Choices = choices + return &this +} + +// NewStagePromptWithDefaults instantiates a new StagePrompt object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewStagePromptWithDefaults() *StagePrompt { + this := StagePrompt{} + return &this +} + +// GetFieldKey returns the FieldKey field value +func (o *StagePrompt) GetFieldKey() string { + if o == nil { + var ret string + return ret + } + + return o.FieldKey +} + +// GetFieldKeyOk returns a tuple with the FieldKey field value +// and a boolean to check if the value has been set. +func (o *StagePrompt) GetFieldKeyOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.FieldKey, true +} + +// SetFieldKey sets field value +func (o *StagePrompt) SetFieldKey(v string) { + o.FieldKey = v +} + +// GetLabel returns the Label field value +func (o *StagePrompt) GetLabel() string { + if o == nil { + var ret string + return ret + } + + return o.Label +} + +// GetLabelOk returns a tuple with the Label field value +// and a boolean to check if the value has been set. +func (o *StagePrompt) GetLabelOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Label, true +} + +// SetLabel sets field value +func (o *StagePrompt) SetLabel(v string) { + o.Label = v +} + +// GetType returns the Type field value +func (o *StagePrompt) GetType() PromptTypeEnum { + if o == nil { + var ret PromptTypeEnum + return ret + } + + return o.Type +} + +// GetTypeOk returns a tuple with the Type field value +// and a boolean to check if the value has been set. +func (o *StagePrompt) GetTypeOk() (*PromptTypeEnum, bool) { + if o == nil { + return nil, false + } + return &o.Type, true +} + +// SetType sets field value +func (o *StagePrompt) SetType(v PromptTypeEnum) { + o.Type = v +} + +// GetRequired returns the Required field value +func (o *StagePrompt) GetRequired() bool { + if o == nil { + var ret bool + return ret + } + + return o.Required +} + +// GetRequiredOk returns a tuple with the Required field value +// and a boolean to check if the value has been set. +func (o *StagePrompt) GetRequiredOk() (*bool, bool) { + if o == nil { + return nil, false + } + return &o.Required, true +} + +// SetRequired sets field value +func (o *StagePrompt) SetRequired(v bool) { + o.Required = v +} + +// GetPlaceholder returns the Placeholder field value +func (o *StagePrompt) GetPlaceholder() string { + if o == nil { + var ret string + return ret + } + + return o.Placeholder +} + +// GetPlaceholderOk returns a tuple with the Placeholder field value +// and a boolean to check if the value has been set. +func (o *StagePrompt) GetPlaceholderOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Placeholder, true +} + +// SetPlaceholder sets field value +func (o *StagePrompt) SetPlaceholder(v string) { + o.Placeholder = v +} + +// GetInitialValue returns the InitialValue field value +func (o *StagePrompt) GetInitialValue() string { + if o == nil { + var ret string + return ret + } + + return o.InitialValue +} + +// GetInitialValueOk returns a tuple with the InitialValue field value +// and a boolean to check if the value has been set. +func (o *StagePrompt) GetInitialValueOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.InitialValue, true +} + +// SetInitialValue sets field value +func (o *StagePrompt) SetInitialValue(v string) { + o.InitialValue = v +} + +// GetOrder returns the Order field value +func (o *StagePrompt) GetOrder() int32 { + if o == nil { + var ret int32 + return ret + } + + return o.Order +} + +// GetOrderOk returns a tuple with the Order field value +// and a boolean to check if the value has been set. +func (o *StagePrompt) GetOrderOk() (*int32, bool) { + if o == nil { + return nil, false + } + return &o.Order, true +} + +// SetOrder sets field value +func (o *StagePrompt) SetOrder(v int32) { + o.Order = v +} + +// GetSubText returns the SubText field value +func (o *StagePrompt) GetSubText() string { + if o == nil { + var ret string + return ret + } + + return o.SubText +} + +// GetSubTextOk returns a tuple with the SubText field value +// and a boolean to check if the value has been set. +func (o *StagePrompt) GetSubTextOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.SubText, true +} + +// SetSubText sets field value +func (o *StagePrompt) SetSubText(v string) { + o.SubText = v +} + +// GetChoices returns the Choices field value +// If the value is explicit nil, the zero value for []PromptChoice will be returned +func (o *StagePrompt) GetChoices() []PromptChoice { + if o == nil { + var ret []PromptChoice + return ret + } + + return o.Choices +} + +// GetChoicesOk returns a tuple with the Choices field value +// and a boolean to check if the value has been set. +// NOTE: If the value is an explicit nil, `nil, true` will be returned +func (o *StagePrompt) GetChoicesOk() ([]PromptChoice, bool) { + if o == nil || IsNil(o.Choices) { + return nil, false + } + return o.Choices, true +} + +// SetChoices sets field value +func (o *StagePrompt) SetChoices(v []PromptChoice) { + o.Choices = v +} + +func (o StagePrompt) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o StagePrompt) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + toSerialize["field_key"] = o.FieldKey + toSerialize["label"] = o.Label + toSerialize["type"] = o.Type + toSerialize["required"] = o.Required + toSerialize["placeholder"] = o.Placeholder + toSerialize["initial_value"] = o.InitialValue + toSerialize["order"] = o.Order + toSerialize["sub_text"] = o.SubText + if o.Choices != nil { + toSerialize["choices"] = o.Choices + } + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *StagePrompt) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "field_key", + "label", + "type", + "required", + "placeholder", + "initial_value", + "order", + "sub_text", + "choices", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varStagePrompt := _StagePrompt{} + + err = json.Unmarshal(data, &varStagePrompt) + + if err != nil { + return err + } + + *o = StagePrompt(varStagePrompt) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "field_key") + delete(additionalProperties, "label") + delete(additionalProperties, "type") + delete(additionalProperties, "required") + delete(additionalProperties, "placeholder") + delete(additionalProperties, "initial_value") + delete(additionalProperties, "order") + delete(additionalProperties, "sub_text") + delete(additionalProperties, "choices") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableStagePrompt struct { + value *StagePrompt + isSet bool +} + +func (v NullableStagePrompt) Get() *StagePrompt { + return v.value +} + +func (v *NullableStagePrompt) Set(val *StagePrompt) { + v.value = val + v.isSet = true +} + +func (v NullableStagePrompt) IsSet() bool { + return v.isSet +} + +func (v *NullableStagePrompt) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableStagePrompt(val *StagePrompt) *NullableStagePrompt { + return &NullableStagePrompt{value: val, isSet: true} +} + +func (v NullableStagePrompt) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableStagePrompt) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_telegram_challenge_response_request.go b/packages/client-go/model_telegram_challenge_response_request.go new file mode 100644 index 0000000000..1e8583b457 --- /dev/null +++ b/packages/client-go/model_telegram_challenge_response_request.go @@ -0,0 +1,414 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// checks if the TelegramChallengeResponseRequest type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &TelegramChallengeResponseRequest{} + +// TelegramChallengeResponseRequest Base class for all challenge responses +type TelegramChallengeResponseRequest struct { + Id int32 `json:"id"` + FirstName *string `json:"first_name,omitempty"` + LastName *string `json:"last_name,omitempty"` + Username *string `json:"username,omitempty"` + PhotoUrl *string `json:"photo_url,omitempty"` + AuthDate int32 `json:"auth_date"` + Hash string `json:"hash"` + Component *string `json:"component,omitempty"` + AdditionalProperties map[string]interface{} +} + +type _TelegramChallengeResponseRequest TelegramChallengeResponseRequest + +// NewTelegramChallengeResponseRequest instantiates a new TelegramChallengeResponseRequest object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewTelegramChallengeResponseRequest(id int32, authDate int32, hash string) *TelegramChallengeResponseRequest { + this := TelegramChallengeResponseRequest{} + this.Id = id + this.AuthDate = authDate + this.Hash = hash + var component string = "ak-source-telegram" + this.Component = &component + return &this +} + +// NewTelegramChallengeResponseRequestWithDefaults instantiates a new TelegramChallengeResponseRequest object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewTelegramChallengeResponseRequestWithDefaults() *TelegramChallengeResponseRequest { + this := TelegramChallengeResponseRequest{} + var component string = "ak-source-telegram" + this.Component = &component + return &this +} + +// GetId returns the Id field value +func (o *TelegramChallengeResponseRequest) GetId() int32 { + if o == nil { + var ret int32 + return ret + } + + return o.Id +} + +// GetIdOk returns a tuple with the Id field value +// and a boolean to check if the value has been set. +func (o *TelegramChallengeResponseRequest) GetIdOk() (*int32, bool) { + if o == nil { + return nil, false + } + return &o.Id, true +} + +// SetId sets field value +func (o *TelegramChallengeResponseRequest) SetId(v int32) { + o.Id = v +} + +// GetFirstName returns the FirstName field value if set, zero value otherwise. +func (o *TelegramChallengeResponseRequest) GetFirstName() string { + if o == nil || IsNil(o.FirstName) { + var ret string + return ret + } + return *o.FirstName +} + +// GetFirstNameOk returns a tuple with the FirstName field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *TelegramChallengeResponseRequest) GetFirstNameOk() (*string, bool) { + if o == nil || IsNil(o.FirstName) { + return nil, false + } + return o.FirstName, true +} + +// HasFirstName returns a boolean if a field has been set. +func (o *TelegramChallengeResponseRequest) HasFirstName() bool { + if o != nil && !IsNil(o.FirstName) { + return true + } + + return false +} + +// SetFirstName gets a reference to the given string and assigns it to the FirstName field. +func (o *TelegramChallengeResponseRequest) SetFirstName(v string) { + o.FirstName = &v +} + +// GetLastName returns the LastName field value if set, zero value otherwise. +func (o *TelegramChallengeResponseRequest) GetLastName() string { + if o == nil || IsNil(o.LastName) { + var ret string + return ret + } + return *o.LastName +} + +// GetLastNameOk returns a tuple with the LastName field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *TelegramChallengeResponseRequest) GetLastNameOk() (*string, bool) { + if o == nil || IsNil(o.LastName) { + return nil, false + } + return o.LastName, true +} + +// HasLastName returns a boolean if a field has been set. +func (o *TelegramChallengeResponseRequest) HasLastName() bool { + if o != nil && !IsNil(o.LastName) { + return true + } + + return false +} + +// SetLastName gets a reference to the given string and assigns it to the LastName field. +func (o *TelegramChallengeResponseRequest) SetLastName(v string) { + o.LastName = &v +} + +// GetUsername returns the Username field value if set, zero value otherwise. +func (o *TelegramChallengeResponseRequest) GetUsername() string { + if o == nil || IsNil(o.Username) { + var ret string + return ret + } + return *o.Username +} + +// GetUsernameOk returns a tuple with the Username field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *TelegramChallengeResponseRequest) GetUsernameOk() (*string, bool) { + if o == nil || IsNil(o.Username) { + return nil, false + } + return o.Username, true +} + +// HasUsername returns a boolean if a field has been set. +func (o *TelegramChallengeResponseRequest) HasUsername() bool { + if o != nil && !IsNil(o.Username) { + return true + } + + return false +} + +// SetUsername gets a reference to the given string and assigns it to the Username field. +func (o *TelegramChallengeResponseRequest) SetUsername(v string) { + o.Username = &v +} + +// GetPhotoUrl returns the PhotoUrl field value if set, zero value otherwise. +func (o *TelegramChallengeResponseRequest) GetPhotoUrl() string { + if o == nil || IsNil(o.PhotoUrl) { + var ret string + return ret + } + return *o.PhotoUrl +} + +// GetPhotoUrlOk returns a tuple with the PhotoUrl field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *TelegramChallengeResponseRequest) GetPhotoUrlOk() (*string, bool) { + if o == nil || IsNil(o.PhotoUrl) { + return nil, false + } + return o.PhotoUrl, true +} + +// HasPhotoUrl returns a boolean if a field has been set. +func (o *TelegramChallengeResponseRequest) HasPhotoUrl() bool { + if o != nil && !IsNil(o.PhotoUrl) { + return true + } + + return false +} + +// SetPhotoUrl gets a reference to the given string and assigns it to the PhotoUrl field. +func (o *TelegramChallengeResponseRequest) SetPhotoUrl(v string) { + o.PhotoUrl = &v +} + +// GetAuthDate returns the AuthDate field value +func (o *TelegramChallengeResponseRequest) GetAuthDate() int32 { + if o == nil { + var ret int32 + return ret + } + + return o.AuthDate +} + +// GetAuthDateOk returns a tuple with the AuthDate field value +// and a boolean to check if the value has been set. +func (o *TelegramChallengeResponseRequest) GetAuthDateOk() (*int32, bool) { + if o == nil { + return nil, false + } + return &o.AuthDate, true +} + +// SetAuthDate sets field value +func (o *TelegramChallengeResponseRequest) SetAuthDate(v int32) { + o.AuthDate = v +} + +// GetHash returns the Hash field value +func (o *TelegramChallengeResponseRequest) GetHash() string { + if o == nil { + var ret string + return ret + } + + return o.Hash +} + +// GetHashOk returns a tuple with the Hash field value +// and a boolean to check if the value has been set. +func (o *TelegramChallengeResponseRequest) GetHashOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Hash, true +} + +// SetHash sets field value +func (o *TelegramChallengeResponseRequest) SetHash(v string) { + o.Hash = v +} + +// GetComponent returns the Component field value if set, zero value otherwise. +func (o *TelegramChallengeResponseRequest) GetComponent() string { + if o == nil || IsNil(o.Component) { + var ret string + return ret + } + return *o.Component +} + +// GetComponentOk returns a tuple with the Component field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *TelegramChallengeResponseRequest) GetComponentOk() (*string, bool) { + if o == nil || IsNil(o.Component) { + return nil, false + } + return o.Component, true +} + +// HasComponent returns a boolean if a field has been set. +func (o *TelegramChallengeResponseRequest) HasComponent() bool { + if o != nil && !IsNil(o.Component) { + return true + } + + return false +} + +// SetComponent gets a reference to the given string and assigns it to the Component field. +func (o *TelegramChallengeResponseRequest) SetComponent(v string) { + o.Component = &v +} + +func (o TelegramChallengeResponseRequest) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o TelegramChallengeResponseRequest) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + toSerialize["id"] = o.Id + if !IsNil(o.FirstName) { + toSerialize["first_name"] = o.FirstName + } + if !IsNil(o.LastName) { + toSerialize["last_name"] = o.LastName + } + if !IsNil(o.Username) { + toSerialize["username"] = o.Username + } + if !IsNil(o.PhotoUrl) { + toSerialize["photo_url"] = o.PhotoUrl + } + toSerialize["auth_date"] = o.AuthDate + toSerialize["hash"] = o.Hash + if !IsNil(o.Component) { + toSerialize["component"] = o.Component + } + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *TelegramChallengeResponseRequest) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "id", + "auth_date", + "hash", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varTelegramChallengeResponseRequest := _TelegramChallengeResponseRequest{} + + err = json.Unmarshal(data, &varTelegramChallengeResponseRequest) + + if err != nil { + return err + } + + *o = TelegramChallengeResponseRequest(varTelegramChallengeResponseRequest) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "id") + delete(additionalProperties, "first_name") + delete(additionalProperties, "last_name") + delete(additionalProperties, "username") + delete(additionalProperties, "photo_url") + delete(additionalProperties, "auth_date") + delete(additionalProperties, "hash") + delete(additionalProperties, "component") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableTelegramChallengeResponseRequest struct { + value *TelegramChallengeResponseRequest + isSet bool +} + +func (v NullableTelegramChallengeResponseRequest) Get() *TelegramChallengeResponseRequest { + return v.value +} + +func (v *NullableTelegramChallengeResponseRequest) Set(val *TelegramChallengeResponseRequest) { + v.value = val + v.isSet = true +} + +func (v NullableTelegramChallengeResponseRequest) IsSet() bool { + return v.isSet +} + +func (v *NullableTelegramChallengeResponseRequest) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableTelegramChallengeResponseRequest(val *TelegramChallengeResponseRequest) *NullableTelegramChallengeResponseRequest { + return &NullableTelegramChallengeResponseRequest{value: val, isSet: true} +} + +func (v NullableTelegramChallengeResponseRequest) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableTelegramChallengeResponseRequest) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_telegram_login_challenge.go b/packages/client-go/model_telegram_login_challenge.go new file mode 100644 index 0000000000..e4638470dd --- /dev/null +++ b/packages/client-go/model_telegram_login_challenge.go @@ -0,0 +1,312 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// checks if the TelegramLoginChallenge type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &TelegramLoginChallenge{} + +// TelegramLoginChallenge Base login challenge for Identification stage +type TelegramLoginChallenge struct { + FlowInfo *ContextualFlowInfo `json:"flow_info,omitempty"` + Component *string `json:"component,omitempty"` + ResponseErrors *map[string][]ErrorDetail `json:"response_errors,omitempty"` + // Telegram bot username + BotUsername string `json:"bot_username"` + RequestMessageAccess bool `json:"request_message_access"` + AdditionalProperties map[string]interface{} +} + +type _TelegramLoginChallenge TelegramLoginChallenge + +// NewTelegramLoginChallenge instantiates a new TelegramLoginChallenge object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewTelegramLoginChallenge(botUsername string, requestMessageAccess bool) *TelegramLoginChallenge { + this := TelegramLoginChallenge{} + var component string = "ak-source-telegram" + this.Component = &component + this.BotUsername = botUsername + this.RequestMessageAccess = requestMessageAccess + return &this +} + +// NewTelegramLoginChallengeWithDefaults instantiates a new TelegramLoginChallenge object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewTelegramLoginChallengeWithDefaults() *TelegramLoginChallenge { + this := TelegramLoginChallenge{} + var component string = "ak-source-telegram" + this.Component = &component + return &this +} + +// GetFlowInfo returns the FlowInfo field value if set, zero value otherwise. +func (o *TelegramLoginChallenge) GetFlowInfo() ContextualFlowInfo { + if o == nil || IsNil(o.FlowInfo) { + var ret ContextualFlowInfo + return ret + } + return *o.FlowInfo +} + +// GetFlowInfoOk returns a tuple with the FlowInfo field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *TelegramLoginChallenge) GetFlowInfoOk() (*ContextualFlowInfo, bool) { + if o == nil || IsNil(o.FlowInfo) { + return nil, false + } + return o.FlowInfo, true +} + +// HasFlowInfo returns a boolean if a field has been set. +func (o *TelegramLoginChallenge) HasFlowInfo() bool { + if o != nil && !IsNil(o.FlowInfo) { + return true + } + + return false +} + +// SetFlowInfo gets a reference to the given ContextualFlowInfo and assigns it to the FlowInfo field. +func (o *TelegramLoginChallenge) SetFlowInfo(v ContextualFlowInfo) { + o.FlowInfo = &v +} + +// GetComponent returns the Component field value if set, zero value otherwise. +func (o *TelegramLoginChallenge) GetComponent() string { + if o == nil || IsNil(o.Component) { + var ret string + return ret + } + return *o.Component +} + +// GetComponentOk returns a tuple with the Component field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *TelegramLoginChallenge) GetComponentOk() (*string, bool) { + if o == nil || IsNil(o.Component) { + return nil, false + } + return o.Component, true +} + +// HasComponent returns a boolean if a field has been set. +func (o *TelegramLoginChallenge) HasComponent() bool { + if o != nil && !IsNil(o.Component) { + return true + } + + return false +} + +// SetComponent gets a reference to the given string and assigns it to the Component field. +func (o *TelegramLoginChallenge) SetComponent(v string) { + o.Component = &v +} + +// GetResponseErrors returns the ResponseErrors field value if set, zero value otherwise. +func (o *TelegramLoginChallenge) GetResponseErrors() map[string][]ErrorDetail { + if o == nil || IsNil(o.ResponseErrors) { + var ret map[string][]ErrorDetail + return ret + } + return *o.ResponseErrors +} + +// GetResponseErrorsOk returns a tuple with the ResponseErrors field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *TelegramLoginChallenge) GetResponseErrorsOk() (*map[string][]ErrorDetail, bool) { + if o == nil || IsNil(o.ResponseErrors) { + return nil, false + } + return o.ResponseErrors, true +} + +// HasResponseErrors returns a boolean if a field has been set. +func (o *TelegramLoginChallenge) HasResponseErrors() bool { + if o != nil && !IsNil(o.ResponseErrors) { + return true + } + + return false +} + +// SetResponseErrors gets a reference to the given map[string][]ErrorDetail and assigns it to the ResponseErrors field. +func (o *TelegramLoginChallenge) SetResponseErrors(v map[string][]ErrorDetail) { + o.ResponseErrors = &v +} + +// GetBotUsername returns the BotUsername field value +func (o *TelegramLoginChallenge) GetBotUsername() string { + if o == nil { + var ret string + return ret + } + + return o.BotUsername +} + +// GetBotUsernameOk returns a tuple with the BotUsername field value +// and a boolean to check if the value has been set. +func (o *TelegramLoginChallenge) GetBotUsernameOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.BotUsername, true +} + +// SetBotUsername sets field value +func (o *TelegramLoginChallenge) SetBotUsername(v string) { + o.BotUsername = v +} + +// GetRequestMessageAccess returns the RequestMessageAccess field value +func (o *TelegramLoginChallenge) GetRequestMessageAccess() bool { + if o == nil { + var ret bool + return ret + } + + return o.RequestMessageAccess +} + +// GetRequestMessageAccessOk returns a tuple with the RequestMessageAccess field value +// and a boolean to check if the value has been set. +func (o *TelegramLoginChallenge) GetRequestMessageAccessOk() (*bool, bool) { + if o == nil { + return nil, false + } + return &o.RequestMessageAccess, true +} + +// SetRequestMessageAccess sets field value +func (o *TelegramLoginChallenge) SetRequestMessageAccess(v bool) { + o.RequestMessageAccess = v +} + +func (o TelegramLoginChallenge) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o TelegramLoginChallenge) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.FlowInfo) { + toSerialize["flow_info"] = o.FlowInfo + } + if !IsNil(o.Component) { + toSerialize["component"] = o.Component + } + if !IsNil(o.ResponseErrors) { + toSerialize["response_errors"] = o.ResponseErrors + } + toSerialize["bot_username"] = o.BotUsername + toSerialize["request_message_access"] = o.RequestMessageAccess + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *TelegramLoginChallenge) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "bot_username", + "request_message_access", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varTelegramLoginChallenge := _TelegramLoginChallenge{} + + err = json.Unmarshal(data, &varTelegramLoginChallenge) + + if err != nil { + return err + } + + *o = TelegramLoginChallenge(varTelegramLoginChallenge) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "flow_info") + delete(additionalProperties, "component") + delete(additionalProperties, "response_errors") + delete(additionalProperties, "bot_username") + delete(additionalProperties, "request_message_access") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableTelegramLoginChallenge struct { + value *TelegramLoginChallenge + isSet bool +} + +func (v NullableTelegramLoginChallenge) Get() *TelegramLoginChallenge { + return v.value +} + +func (v *NullableTelegramLoginChallenge) Set(val *TelegramLoginChallenge) { + v.value = val + v.isSet = true +} + +func (v NullableTelegramLoginChallenge) IsSet() bool { + return v.isSet +} + +func (v *NullableTelegramLoginChallenge) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableTelegramLoginChallenge(val *TelegramLoginChallenge) *NullableTelegramLoginChallenge { + return &NullableTelegramLoginChallenge{value: val, isSet: true} +} + +func (v NullableTelegramLoginChallenge) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableTelegramLoginChallenge) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_themed_urls.go b/packages/client-go/model_themed_urls.go new file mode 100644 index 0000000000..2e5181d028 --- /dev/null +++ b/packages/client-go/model_themed_urls.go @@ -0,0 +1,213 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" +) + +// checks if the ThemedUrls type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &ThemedUrls{} + +// ThemedUrls Themed URLs - maps theme names to URLs for light and dark themes +type ThemedUrls struct { + Light NullableString `json:"light,omitempty"` + Dark NullableString `json:"dark,omitempty"` + AdditionalProperties map[string]interface{} +} + +type _ThemedUrls ThemedUrls + +// NewThemedUrls instantiates a new ThemedUrls object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewThemedUrls() *ThemedUrls { + this := ThemedUrls{} + return &this +} + +// NewThemedUrlsWithDefaults instantiates a new ThemedUrls object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewThemedUrlsWithDefaults() *ThemedUrls { + this := ThemedUrls{} + return &this +} + +// GetLight returns the Light field value if set, zero value otherwise (both if not set or set to explicit null). +func (o *ThemedUrls) GetLight() string { + if o == nil || IsNil(o.Light.Get()) { + var ret string + return ret + } + return *o.Light.Get() +} + +// GetLightOk returns a tuple with the Light field value if set, nil otherwise +// and a boolean to check if the value has been set. +// NOTE: If the value is an explicit nil, `nil, true` will be returned +func (o *ThemedUrls) GetLightOk() (*string, bool) { + if o == nil { + return nil, false + } + return o.Light.Get(), o.Light.IsSet() +} + +// HasLight returns a boolean if a field has been set. +func (o *ThemedUrls) HasLight() bool { + if o != nil && o.Light.IsSet() { + return true + } + + return false +} + +// SetLight gets a reference to the given NullableString and assigns it to the Light field. +func (o *ThemedUrls) SetLight(v string) { + o.Light.Set(&v) +} + +// SetLightNil sets the value for Light to be an explicit nil +func (o *ThemedUrls) SetLightNil() { + o.Light.Set(nil) +} + +// UnsetLight ensures that no value is present for Light, not even an explicit nil +func (o *ThemedUrls) UnsetLight() { + o.Light.Unset() +} + +// GetDark returns the Dark field value if set, zero value otherwise (both if not set or set to explicit null). +func (o *ThemedUrls) GetDark() string { + if o == nil || IsNil(o.Dark.Get()) { + var ret string + return ret + } + return *o.Dark.Get() +} + +// GetDarkOk returns a tuple with the Dark field value if set, nil otherwise +// and a boolean to check if the value has been set. +// NOTE: If the value is an explicit nil, `nil, true` will be returned +func (o *ThemedUrls) GetDarkOk() (*string, bool) { + if o == nil { + return nil, false + } + return o.Dark.Get(), o.Dark.IsSet() +} + +// HasDark returns a boolean if a field has been set. +func (o *ThemedUrls) HasDark() bool { + if o != nil && o.Dark.IsSet() { + return true + } + + return false +} + +// SetDark gets a reference to the given NullableString and assigns it to the Dark field. +func (o *ThemedUrls) SetDark(v string) { + o.Dark.Set(&v) +} + +// SetDarkNil sets the value for Dark to be an explicit nil +func (o *ThemedUrls) SetDarkNil() { + o.Dark.Set(nil) +} + +// UnsetDark ensures that no value is present for Dark, not even an explicit nil +func (o *ThemedUrls) UnsetDark() { + o.Dark.Unset() +} + +func (o ThemedUrls) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o ThemedUrls) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if o.Light.IsSet() { + toSerialize["light"] = o.Light.Get() + } + if o.Dark.IsSet() { + toSerialize["dark"] = o.Dark.Get() + } + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *ThemedUrls) UnmarshalJSON(data []byte) (err error) { + varThemedUrls := _ThemedUrls{} + + err = json.Unmarshal(data, &varThemedUrls) + + if err != nil { + return err + } + + *o = ThemedUrls(varThemedUrls) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "light") + delete(additionalProperties, "dark") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableThemedUrls struct { + value *ThemedUrls + isSet bool +} + +func (v NullableThemedUrls) Get() *ThemedUrls { + return v.value +} + +func (v *NullableThemedUrls) Set(val *ThemedUrls) { + v.value = val + v.isSet = true +} + +func (v NullableThemedUrls) IsSet() bool { + return v.isSet +} + +func (v *NullableThemedUrls) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableThemedUrls(val *ThemedUrls) *NullableThemedUrls { + return &NullableThemedUrls{value: val, isSet: true} +} + +func (v NullableThemedUrls) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableThemedUrls) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_user.go b/packages/client-go/model_user.go new file mode 100644 index 0000000000..9d80a27a75 --- /dev/null +++ b/packages/client-go/model_user.go @@ -0,0 +1,805 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" + "time" +) + +// checks if the User type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &User{} + +// User User Serializer +type User struct { + Pk int32 `json:"pk"` + Username string `json:"username"` + // User's display name. + Name string `json:"name"` + // Designates whether this user should be treated as active. Unselect this instead of deleting accounts. + IsActive *bool `json:"is_active,omitempty"` + LastLogin NullableTime `json:"last_login,omitempty"` + DateJoined time.Time `json:"date_joined"` + IsSuperuser bool `json:"is_superuser"` + Groups []string `json:"groups,omitempty"` + GroupsObj []PartialGroup `json:"groups_obj"` + Roles []string `json:"roles,omitempty"` + RolesObj []Role `json:"roles_obj"` + Email *string `json:"email,omitempty"` + // User's avatar, either a http/https URL or a data URI + Avatar string `json:"avatar"` + Attributes map[string]interface{} `json:"attributes,omitempty"` + Uid string `json:"uid"` + Path *string `json:"path,omitempty"` + Type *UserTypeEnum `json:"type,omitempty"` + Uuid string `json:"uuid"` + PasswordChangeDate time.Time `json:"password_change_date"` + LastUpdated time.Time `json:"last_updated"` + AdditionalProperties map[string]interface{} +} + +type _User User + +// NewUser instantiates a new User object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewUser(pk int32, username string, name string, dateJoined time.Time, isSuperuser bool, groupsObj []PartialGroup, rolesObj []Role, avatar string, uid string, uuid string, passwordChangeDate time.Time, lastUpdated time.Time) *User { + this := User{} + this.Pk = pk + this.Username = username + this.Name = name + this.DateJoined = dateJoined + this.IsSuperuser = isSuperuser + this.GroupsObj = groupsObj + this.RolesObj = rolesObj + this.Avatar = avatar + this.Uid = uid + this.Uuid = uuid + this.PasswordChangeDate = passwordChangeDate + this.LastUpdated = lastUpdated + return &this +} + +// NewUserWithDefaults instantiates a new User object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewUserWithDefaults() *User { + this := User{} + return &this +} + +// GetPk returns the Pk field value +func (o *User) GetPk() int32 { + if o == nil { + var ret int32 + return ret + } + + return o.Pk +} + +// GetPkOk returns a tuple with the Pk field value +// and a boolean to check if the value has been set. +func (o *User) GetPkOk() (*int32, bool) { + if o == nil { + return nil, false + } + return &o.Pk, true +} + +// SetPk sets field value +func (o *User) SetPk(v int32) { + o.Pk = v +} + +// GetUsername returns the Username field value +func (o *User) GetUsername() string { + if o == nil { + var ret string + return ret + } + + return o.Username +} + +// GetUsernameOk returns a tuple with the Username field value +// and a boolean to check if the value has been set. +func (o *User) GetUsernameOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Username, true +} + +// SetUsername sets field value +func (o *User) SetUsername(v string) { + o.Username = v +} + +// GetName returns the Name field value +func (o *User) GetName() string { + if o == nil { + var ret string + return ret + } + + return o.Name +} + +// GetNameOk returns a tuple with the Name field value +// and a boolean to check if the value has been set. +func (o *User) GetNameOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Name, true +} + +// SetName sets field value +func (o *User) SetName(v string) { + o.Name = v +} + +// GetIsActive returns the IsActive field value if set, zero value otherwise. +func (o *User) GetIsActive() bool { + if o == nil || IsNil(o.IsActive) { + var ret bool + return ret + } + return *o.IsActive +} + +// GetIsActiveOk returns a tuple with the IsActive field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *User) GetIsActiveOk() (*bool, bool) { + if o == nil || IsNil(o.IsActive) { + return nil, false + } + return o.IsActive, true +} + +// HasIsActive returns a boolean if a field has been set. +func (o *User) HasIsActive() bool { + if o != nil && !IsNil(o.IsActive) { + return true + } + + return false +} + +// SetIsActive gets a reference to the given bool and assigns it to the IsActive field. +func (o *User) SetIsActive(v bool) { + o.IsActive = &v +} + +// GetLastLogin returns the LastLogin field value if set, zero value otherwise (both if not set or set to explicit null). +func (o *User) GetLastLogin() time.Time { + if o == nil || IsNil(o.LastLogin.Get()) { + var ret time.Time + return ret + } + return *o.LastLogin.Get() +} + +// GetLastLoginOk returns a tuple with the LastLogin field value if set, nil otherwise +// and a boolean to check if the value has been set. +// NOTE: If the value is an explicit nil, `nil, true` will be returned +func (o *User) GetLastLoginOk() (*time.Time, bool) { + if o == nil { + return nil, false + } + return o.LastLogin.Get(), o.LastLogin.IsSet() +} + +// HasLastLogin returns a boolean if a field has been set. +func (o *User) HasLastLogin() bool { + if o != nil && o.LastLogin.IsSet() { + return true + } + + return false +} + +// SetLastLogin gets a reference to the given NullableTime and assigns it to the LastLogin field. +func (o *User) SetLastLogin(v time.Time) { + o.LastLogin.Set(&v) +} + +// SetLastLoginNil sets the value for LastLogin to be an explicit nil +func (o *User) SetLastLoginNil() { + o.LastLogin.Set(nil) +} + +// UnsetLastLogin ensures that no value is present for LastLogin, not even an explicit nil +func (o *User) UnsetLastLogin() { + o.LastLogin.Unset() +} + +// GetDateJoined returns the DateJoined field value +func (o *User) GetDateJoined() time.Time { + if o == nil { + var ret time.Time + return ret + } + + return o.DateJoined +} + +// GetDateJoinedOk returns a tuple with the DateJoined field value +// and a boolean to check if the value has been set. +func (o *User) GetDateJoinedOk() (*time.Time, bool) { + if o == nil { + return nil, false + } + return &o.DateJoined, true +} + +// SetDateJoined sets field value +func (o *User) SetDateJoined(v time.Time) { + o.DateJoined = v +} + +// GetIsSuperuser returns the IsSuperuser field value +func (o *User) GetIsSuperuser() bool { + if o == nil { + var ret bool + return ret + } + + return o.IsSuperuser +} + +// GetIsSuperuserOk returns a tuple with the IsSuperuser field value +// and a boolean to check if the value has been set. +func (o *User) GetIsSuperuserOk() (*bool, bool) { + if o == nil { + return nil, false + } + return &o.IsSuperuser, true +} + +// SetIsSuperuser sets field value +func (o *User) SetIsSuperuser(v bool) { + o.IsSuperuser = v +} + +// GetGroups returns the Groups field value if set, zero value otherwise. +func (o *User) GetGroups() []string { + if o == nil || IsNil(o.Groups) { + var ret []string + return ret + } + return o.Groups +} + +// GetGroupsOk returns a tuple with the Groups field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *User) GetGroupsOk() ([]string, bool) { + if o == nil || IsNil(o.Groups) { + return nil, false + } + return o.Groups, true +} + +// HasGroups returns a boolean if a field has been set. +func (o *User) HasGroups() bool { + if o != nil && !IsNil(o.Groups) { + return true + } + + return false +} + +// SetGroups gets a reference to the given []string and assigns it to the Groups field. +func (o *User) SetGroups(v []string) { + o.Groups = v +} + +// GetGroupsObj returns the GroupsObj field value +// If the value is explicit nil, the zero value for []PartialGroup will be returned +func (o *User) GetGroupsObj() []PartialGroup { + if o == nil { + var ret []PartialGroup + return ret + } + + return o.GroupsObj +} + +// GetGroupsObjOk returns a tuple with the GroupsObj field value +// and a boolean to check if the value has been set. +// NOTE: If the value is an explicit nil, `nil, true` will be returned +func (o *User) GetGroupsObjOk() ([]PartialGroup, bool) { + if o == nil || IsNil(o.GroupsObj) { + return nil, false + } + return o.GroupsObj, true +} + +// SetGroupsObj sets field value +func (o *User) SetGroupsObj(v []PartialGroup) { + o.GroupsObj = v +} + +// GetRoles returns the Roles field value if set, zero value otherwise. +func (o *User) GetRoles() []string { + if o == nil || IsNil(o.Roles) { + var ret []string + return ret + } + return o.Roles +} + +// GetRolesOk returns a tuple with the Roles field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *User) GetRolesOk() ([]string, bool) { + if o == nil || IsNil(o.Roles) { + return nil, false + } + return o.Roles, true +} + +// HasRoles returns a boolean if a field has been set. +func (o *User) HasRoles() bool { + if o != nil && !IsNil(o.Roles) { + return true + } + + return false +} + +// SetRoles gets a reference to the given []string and assigns it to the Roles field. +func (o *User) SetRoles(v []string) { + o.Roles = v +} + +// GetRolesObj returns the RolesObj field value +// If the value is explicit nil, the zero value for []Role will be returned +func (o *User) GetRolesObj() []Role { + if o == nil { + var ret []Role + return ret + } + + return o.RolesObj +} + +// GetRolesObjOk returns a tuple with the RolesObj field value +// and a boolean to check if the value has been set. +// NOTE: If the value is an explicit nil, `nil, true` will be returned +func (o *User) GetRolesObjOk() ([]Role, bool) { + if o == nil || IsNil(o.RolesObj) { + return nil, false + } + return o.RolesObj, true +} + +// SetRolesObj sets field value +func (o *User) SetRolesObj(v []Role) { + o.RolesObj = v +} + +// GetEmail returns the Email field value if set, zero value otherwise. +func (o *User) GetEmail() string { + if o == nil || IsNil(o.Email) { + var ret string + return ret + } + return *o.Email +} + +// GetEmailOk returns a tuple with the Email field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *User) GetEmailOk() (*string, bool) { + if o == nil || IsNil(o.Email) { + return nil, false + } + return o.Email, true +} + +// HasEmail returns a boolean if a field has been set. +func (o *User) HasEmail() bool { + if o != nil && !IsNil(o.Email) { + return true + } + + return false +} + +// SetEmail gets a reference to the given string and assigns it to the Email field. +func (o *User) SetEmail(v string) { + o.Email = &v +} + +// GetAvatar returns the Avatar field value +func (o *User) GetAvatar() string { + if o == nil { + var ret string + return ret + } + + return o.Avatar +} + +// GetAvatarOk returns a tuple with the Avatar field value +// and a boolean to check if the value has been set. +func (o *User) GetAvatarOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Avatar, true +} + +// SetAvatar sets field value +func (o *User) SetAvatar(v string) { + o.Avatar = v +} + +// GetAttributes returns the Attributes field value if set, zero value otherwise. +func (o *User) GetAttributes() map[string]interface{} { + if o == nil || IsNil(o.Attributes) { + var ret map[string]interface{} + return ret + } + return o.Attributes +} + +// GetAttributesOk returns a tuple with the Attributes field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *User) GetAttributesOk() (map[string]interface{}, bool) { + if o == nil || IsNil(o.Attributes) { + return map[string]interface{}{}, false + } + return o.Attributes, true +} + +// HasAttributes returns a boolean if a field has been set. +func (o *User) HasAttributes() bool { + if o != nil && !IsNil(o.Attributes) { + return true + } + + return false +} + +// SetAttributes gets a reference to the given map[string]interface{} and assigns it to the Attributes field. +func (o *User) SetAttributes(v map[string]interface{}) { + o.Attributes = v +} + +// GetUid returns the Uid field value +func (o *User) GetUid() string { + if o == nil { + var ret string + return ret + } + + return o.Uid +} + +// GetUidOk returns a tuple with the Uid field value +// and a boolean to check if the value has been set. +func (o *User) GetUidOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Uid, true +} + +// SetUid sets field value +func (o *User) SetUid(v string) { + o.Uid = v +} + +// GetPath returns the Path field value if set, zero value otherwise. +func (o *User) GetPath() string { + if o == nil || IsNil(o.Path) { + var ret string + return ret + } + return *o.Path +} + +// GetPathOk returns a tuple with the Path field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *User) GetPathOk() (*string, bool) { + if o == nil || IsNil(o.Path) { + return nil, false + } + return o.Path, true +} + +// HasPath returns a boolean if a field has been set. +func (o *User) HasPath() bool { + if o != nil && !IsNil(o.Path) { + return true + } + + return false +} + +// SetPath gets a reference to the given string and assigns it to the Path field. +func (o *User) SetPath(v string) { + o.Path = &v +} + +// GetType returns the Type field value if set, zero value otherwise. +func (o *User) GetType() UserTypeEnum { + if o == nil || IsNil(o.Type) { + var ret UserTypeEnum + return ret + } + return *o.Type +} + +// GetTypeOk returns a tuple with the Type field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *User) GetTypeOk() (*UserTypeEnum, bool) { + if o == nil || IsNil(o.Type) { + return nil, false + } + return o.Type, true +} + +// HasType returns a boolean if a field has been set. +func (o *User) HasType() bool { + if o != nil && !IsNil(o.Type) { + return true + } + + return false +} + +// SetType gets a reference to the given UserTypeEnum and assigns it to the Type field. +func (o *User) SetType(v UserTypeEnum) { + o.Type = &v +} + +// GetUuid returns the Uuid field value +func (o *User) GetUuid() string { + if o == nil { + var ret string + return ret + } + + return o.Uuid +} + +// GetUuidOk returns a tuple with the Uuid field value +// and a boolean to check if the value has been set. +func (o *User) GetUuidOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Uuid, true +} + +// SetUuid sets field value +func (o *User) SetUuid(v string) { + o.Uuid = v +} + +// GetPasswordChangeDate returns the PasswordChangeDate field value +func (o *User) GetPasswordChangeDate() time.Time { + if o == nil { + var ret time.Time + return ret + } + + return o.PasswordChangeDate +} + +// GetPasswordChangeDateOk returns a tuple with the PasswordChangeDate field value +// and a boolean to check if the value has been set. +func (o *User) GetPasswordChangeDateOk() (*time.Time, bool) { + if o == nil { + return nil, false + } + return &o.PasswordChangeDate, true +} + +// SetPasswordChangeDate sets field value +func (o *User) SetPasswordChangeDate(v time.Time) { + o.PasswordChangeDate = v +} + +// GetLastUpdated returns the LastUpdated field value +func (o *User) GetLastUpdated() time.Time { + if o == nil { + var ret time.Time + return ret + } + + return o.LastUpdated +} + +// GetLastUpdatedOk returns a tuple with the LastUpdated field value +// and a boolean to check if the value has been set. +func (o *User) GetLastUpdatedOk() (*time.Time, bool) { + if o == nil { + return nil, false + } + return &o.LastUpdated, true +} + +// SetLastUpdated sets field value +func (o *User) SetLastUpdated(v time.Time) { + o.LastUpdated = v +} + +func (o User) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o User) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + toSerialize["pk"] = o.Pk + toSerialize["username"] = o.Username + toSerialize["name"] = o.Name + if !IsNil(o.IsActive) { + toSerialize["is_active"] = o.IsActive + } + if o.LastLogin.IsSet() { + toSerialize["last_login"] = o.LastLogin.Get() + } + toSerialize["date_joined"] = o.DateJoined + toSerialize["is_superuser"] = o.IsSuperuser + if !IsNil(o.Groups) { + toSerialize["groups"] = o.Groups + } + if o.GroupsObj != nil { + toSerialize["groups_obj"] = o.GroupsObj + } + if !IsNil(o.Roles) { + toSerialize["roles"] = o.Roles + } + if o.RolesObj != nil { + toSerialize["roles_obj"] = o.RolesObj + } + if !IsNil(o.Email) { + toSerialize["email"] = o.Email + } + toSerialize["avatar"] = o.Avatar + if !IsNil(o.Attributes) { + toSerialize["attributes"] = o.Attributes + } + toSerialize["uid"] = o.Uid + if !IsNil(o.Path) { + toSerialize["path"] = o.Path + } + if !IsNil(o.Type) { + toSerialize["type"] = o.Type + } + toSerialize["uuid"] = o.Uuid + toSerialize["password_change_date"] = o.PasswordChangeDate + toSerialize["last_updated"] = o.LastUpdated + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *User) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "pk", + "username", + "name", + "date_joined", + "is_superuser", + "groups_obj", + "roles_obj", + "avatar", + "uid", + "uuid", + "password_change_date", + "last_updated", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varUser := _User{} + + err = json.Unmarshal(data, &varUser) + + if err != nil { + return err + } + + *o = User(varUser) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "pk") + delete(additionalProperties, "username") + delete(additionalProperties, "name") + delete(additionalProperties, "is_active") + delete(additionalProperties, "last_login") + delete(additionalProperties, "date_joined") + delete(additionalProperties, "is_superuser") + delete(additionalProperties, "groups") + delete(additionalProperties, "groups_obj") + delete(additionalProperties, "roles") + delete(additionalProperties, "roles_obj") + delete(additionalProperties, "email") + delete(additionalProperties, "avatar") + delete(additionalProperties, "attributes") + delete(additionalProperties, "uid") + delete(additionalProperties, "path") + delete(additionalProperties, "type") + delete(additionalProperties, "uuid") + delete(additionalProperties, "password_change_date") + delete(additionalProperties, "last_updated") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableUser struct { + value *User + isSet bool +} + +func (v NullableUser) Get() *User { + return v.value +} + +func (v *NullableUser) Set(val *User) { + v.value = val + v.isSet = true +} + +func (v NullableUser) IsSet() bool { + return v.isSet +} + +func (v *NullableUser) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableUser(val *User) *NullableUser { + return &NullableUser{value: val, isSet: true} +} + +func (v NullableUser) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableUser) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_user_login_challenge.go b/packages/client-go/model_user_login_challenge.go new file mode 100644 index 0000000000..1a70225244 --- /dev/null +++ b/packages/client-go/model_user_login_challenge.go @@ -0,0 +1,311 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// checks if the UserLoginChallenge type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &UserLoginChallenge{} + +// UserLoginChallenge Empty challenge +type UserLoginChallenge struct { + FlowInfo *ContextualFlowInfo `json:"flow_info,omitempty"` + Component *string `json:"component,omitempty"` + ResponseErrors *map[string][]ErrorDetail `json:"response_errors,omitempty"` + PendingUser string `json:"pending_user"` + PendingUserAvatar string `json:"pending_user_avatar"` + AdditionalProperties map[string]interface{} +} + +type _UserLoginChallenge UserLoginChallenge + +// NewUserLoginChallenge instantiates a new UserLoginChallenge object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewUserLoginChallenge(pendingUser string, pendingUserAvatar string) *UserLoginChallenge { + this := UserLoginChallenge{} + var component string = "ak-stage-user-login" + this.Component = &component + this.PendingUser = pendingUser + this.PendingUserAvatar = pendingUserAvatar + return &this +} + +// NewUserLoginChallengeWithDefaults instantiates a new UserLoginChallenge object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewUserLoginChallengeWithDefaults() *UserLoginChallenge { + this := UserLoginChallenge{} + var component string = "ak-stage-user-login" + this.Component = &component + return &this +} + +// GetFlowInfo returns the FlowInfo field value if set, zero value otherwise. +func (o *UserLoginChallenge) GetFlowInfo() ContextualFlowInfo { + if o == nil || IsNil(o.FlowInfo) { + var ret ContextualFlowInfo + return ret + } + return *o.FlowInfo +} + +// GetFlowInfoOk returns a tuple with the FlowInfo field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *UserLoginChallenge) GetFlowInfoOk() (*ContextualFlowInfo, bool) { + if o == nil || IsNil(o.FlowInfo) { + return nil, false + } + return o.FlowInfo, true +} + +// HasFlowInfo returns a boolean if a field has been set. +func (o *UserLoginChallenge) HasFlowInfo() bool { + if o != nil && !IsNil(o.FlowInfo) { + return true + } + + return false +} + +// SetFlowInfo gets a reference to the given ContextualFlowInfo and assigns it to the FlowInfo field. +func (o *UserLoginChallenge) SetFlowInfo(v ContextualFlowInfo) { + o.FlowInfo = &v +} + +// GetComponent returns the Component field value if set, zero value otherwise. +func (o *UserLoginChallenge) GetComponent() string { + if o == nil || IsNil(o.Component) { + var ret string + return ret + } + return *o.Component +} + +// GetComponentOk returns a tuple with the Component field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *UserLoginChallenge) GetComponentOk() (*string, bool) { + if o == nil || IsNil(o.Component) { + return nil, false + } + return o.Component, true +} + +// HasComponent returns a boolean if a field has been set. +func (o *UserLoginChallenge) HasComponent() bool { + if o != nil && !IsNil(o.Component) { + return true + } + + return false +} + +// SetComponent gets a reference to the given string and assigns it to the Component field. +func (o *UserLoginChallenge) SetComponent(v string) { + o.Component = &v +} + +// GetResponseErrors returns the ResponseErrors field value if set, zero value otherwise. +func (o *UserLoginChallenge) GetResponseErrors() map[string][]ErrorDetail { + if o == nil || IsNil(o.ResponseErrors) { + var ret map[string][]ErrorDetail + return ret + } + return *o.ResponseErrors +} + +// GetResponseErrorsOk returns a tuple with the ResponseErrors field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *UserLoginChallenge) GetResponseErrorsOk() (*map[string][]ErrorDetail, bool) { + if o == nil || IsNil(o.ResponseErrors) { + return nil, false + } + return o.ResponseErrors, true +} + +// HasResponseErrors returns a boolean if a field has been set. +func (o *UserLoginChallenge) HasResponseErrors() bool { + if o != nil && !IsNil(o.ResponseErrors) { + return true + } + + return false +} + +// SetResponseErrors gets a reference to the given map[string][]ErrorDetail and assigns it to the ResponseErrors field. +func (o *UserLoginChallenge) SetResponseErrors(v map[string][]ErrorDetail) { + o.ResponseErrors = &v +} + +// GetPendingUser returns the PendingUser field value +func (o *UserLoginChallenge) GetPendingUser() string { + if o == nil { + var ret string + return ret + } + + return o.PendingUser +} + +// GetPendingUserOk returns a tuple with the PendingUser field value +// and a boolean to check if the value has been set. +func (o *UserLoginChallenge) GetPendingUserOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.PendingUser, true +} + +// SetPendingUser sets field value +func (o *UserLoginChallenge) SetPendingUser(v string) { + o.PendingUser = v +} + +// GetPendingUserAvatar returns the PendingUserAvatar field value +func (o *UserLoginChallenge) GetPendingUserAvatar() string { + if o == nil { + var ret string + return ret + } + + return o.PendingUserAvatar +} + +// GetPendingUserAvatarOk returns a tuple with the PendingUserAvatar field value +// and a boolean to check if the value has been set. +func (o *UserLoginChallenge) GetPendingUserAvatarOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.PendingUserAvatar, true +} + +// SetPendingUserAvatar sets field value +func (o *UserLoginChallenge) SetPendingUserAvatar(v string) { + o.PendingUserAvatar = v +} + +func (o UserLoginChallenge) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o UserLoginChallenge) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.FlowInfo) { + toSerialize["flow_info"] = o.FlowInfo + } + if !IsNil(o.Component) { + toSerialize["component"] = o.Component + } + if !IsNil(o.ResponseErrors) { + toSerialize["response_errors"] = o.ResponseErrors + } + toSerialize["pending_user"] = o.PendingUser + toSerialize["pending_user_avatar"] = o.PendingUserAvatar + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *UserLoginChallenge) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "pending_user", + "pending_user_avatar", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varUserLoginChallenge := _UserLoginChallenge{} + + err = json.Unmarshal(data, &varUserLoginChallenge) + + if err != nil { + return err + } + + *o = UserLoginChallenge(varUserLoginChallenge) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "flow_info") + delete(additionalProperties, "component") + delete(additionalProperties, "response_errors") + delete(additionalProperties, "pending_user") + delete(additionalProperties, "pending_user_avatar") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableUserLoginChallenge struct { + value *UserLoginChallenge + isSet bool +} + +func (v NullableUserLoginChallenge) Get() *UserLoginChallenge { + return v.value +} + +func (v *NullableUserLoginChallenge) Set(val *UserLoginChallenge) { + v.value = val + v.isSet = true +} + +func (v NullableUserLoginChallenge) IsSet() bool { + return v.isSet +} + +func (v *NullableUserLoginChallenge) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableUserLoginChallenge(val *UserLoginChallenge) *NullableUserLoginChallenge { + return &NullableUserLoginChallenge{value: val, isSet: true} +} + +func (v NullableUserLoginChallenge) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableUserLoginChallenge) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_user_login_challenge_response_request.go b/packages/client-go/model_user_login_challenge_response_request.go new file mode 100644 index 0000000000..dc0a01c06f --- /dev/null +++ b/packages/client-go/model_user_login_challenge_response_request.go @@ -0,0 +1,208 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// checks if the UserLoginChallengeResponseRequest type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &UserLoginChallengeResponseRequest{} + +// UserLoginChallengeResponseRequest User login challenge +type UserLoginChallengeResponseRequest struct { + Component *string `json:"component,omitempty"` + RememberMe bool `json:"remember_me"` + AdditionalProperties map[string]interface{} +} + +type _UserLoginChallengeResponseRequest UserLoginChallengeResponseRequest + +// NewUserLoginChallengeResponseRequest instantiates a new UserLoginChallengeResponseRequest object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewUserLoginChallengeResponseRequest(rememberMe bool) *UserLoginChallengeResponseRequest { + this := UserLoginChallengeResponseRequest{} + var component string = "ak-stage-user-login" + this.Component = &component + this.RememberMe = rememberMe + return &this +} + +// NewUserLoginChallengeResponseRequestWithDefaults instantiates a new UserLoginChallengeResponseRequest object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewUserLoginChallengeResponseRequestWithDefaults() *UserLoginChallengeResponseRequest { + this := UserLoginChallengeResponseRequest{} + var component string = "ak-stage-user-login" + this.Component = &component + return &this +} + +// GetComponent returns the Component field value if set, zero value otherwise. +func (o *UserLoginChallengeResponseRequest) GetComponent() string { + if o == nil || IsNil(o.Component) { + var ret string + return ret + } + return *o.Component +} + +// GetComponentOk returns a tuple with the Component field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *UserLoginChallengeResponseRequest) GetComponentOk() (*string, bool) { + if o == nil || IsNil(o.Component) { + return nil, false + } + return o.Component, true +} + +// HasComponent returns a boolean if a field has been set. +func (o *UserLoginChallengeResponseRequest) HasComponent() bool { + if o != nil && !IsNil(o.Component) { + return true + } + + return false +} + +// SetComponent gets a reference to the given string and assigns it to the Component field. +func (o *UserLoginChallengeResponseRequest) SetComponent(v string) { + o.Component = &v +} + +// GetRememberMe returns the RememberMe field value +func (o *UserLoginChallengeResponseRequest) GetRememberMe() bool { + if o == nil { + var ret bool + return ret + } + + return o.RememberMe +} + +// GetRememberMeOk returns a tuple with the RememberMe field value +// and a boolean to check if the value has been set. +func (o *UserLoginChallengeResponseRequest) GetRememberMeOk() (*bool, bool) { + if o == nil { + return nil, false + } + return &o.RememberMe, true +} + +// SetRememberMe sets field value +func (o *UserLoginChallengeResponseRequest) SetRememberMe(v bool) { + o.RememberMe = v +} + +func (o UserLoginChallengeResponseRequest) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o UserLoginChallengeResponseRequest) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.Component) { + toSerialize["component"] = o.Component + } + toSerialize["remember_me"] = o.RememberMe + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *UserLoginChallengeResponseRequest) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "remember_me", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varUserLoginChallengeResponseRequest := _UserLoginChallengeResponseRequest{} + + err = json.Unmarshal(data, &varUserLoginChallengeResponseRequest) + + if err != nil { + return err + } + + *o = UserLoginChallengeResponseRequest(varUserLoginChallengeResponseRequest) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "component") + delete(additionalProperties, "remember_me") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableUserLoginChallengeResponseRequest struct { + value *UserLoginChallengeResponseRequest + isSet bool +} + +func (v NullableUserLoginChallengeResponseRequest) Get() *UserLoginChallengeResponseRequest { + return v.value +} + +func (v *NullableUserLoginChallengeResponseRequest) Set(val *UserLoginChallengeResponseRequest) { + v.value = val + v.isSet = true +} + +func (v NullableUserLoginChallengeResponseRequest) IsSet() bool { + return v.isSet +} + +func (v *NullableUserLoginChallengeResponseRequest) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableUserLoginChallengeResponseRequest(val *UserLoginChallengeResponseRequest) *NullableUserLoginChallengeResponseRequest { + return &NullableUserLoginChallengeResponseRequest{value: val, isSet: true} +} + +func (v NullableUserLoginChallengeResponseRequest) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableUserLoginChallengeResponseRequest) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_user_self.go b/packages/client-go/model_user_self.go new file mode 100644 index 0000000000..5e6ec55b6c --- /dev/null +++ b/packages/client-go/model_user_self.go @@ -0,0 +1,537 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// checks if the UserSelf type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &UserSelf{} + +// UserSelf User Serializer for information a user can retrieve about themselves +type UserSelf struct { + Pk int32 `json:"pk"` + // Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only. + Username string `json:"username" validate:"regexp=^[\\\\w.@+-]+$"` + // User's display name. + Name string `json:"name"` + // Designates whether this user should be treated as active. Unselect this instead of deleting accounts. + IsActive bool `json:"is_active"` + IsSuperuser bool `json:"is_superuser"` + Groups []UserSelfGroups `json:"groups"` + Roles []UserSelfRoles `json:"roles"` + Email *string `json:"email,omitempty"` + // User's avatar, either a http/https URL or a data URI + Avatar string `json:"avatar"` + Uid string `json:"uid"` + // Get user settings with brand and group settings applied + Settings map[string]interface{} `json:"settings"` + Type *UserTypeEnum `json:"type,omitempty"` + // Get all system permissions assigned to the user + SystemPermissions []string `json:"system_permissions"` + AdditionalProperties map[string]interface{} +} + +type _UserSelf UserSelf + +// NewUserSelf instantiates a new UserSelf object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewUserSelf(pk int32, username string, name string, isActive bool, isSuperuser bool, groups []UserSelfGroups, roles []UserSelfRoles, avatar string, uid string, settings map[string]interface{}, systemPermissions []string) *UserSelf { + this := UserSelf{} + this.Pk = pk + this.Username = username + this.Name = name + this.IsActive = isActive + this.IsSuperuser = isSuperuser + this.Groups = groups + this.Roles = roles + this.Avatar = avatar + this.Uid = uid + this.Settings = settings + this.SystemPermissions = systemPermissions + return &this +} + +// NewUserSelfWithDefaults instantiates a new UserSelf object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewUserSelfWithDefaults() *UserSelf { + this := UserSelf{} + return &this +} + +// GetPk returns the Pk field value +func (o *UserSelf) GetPk() int32 { + if o == nil { + var ret int32 + return ret + } + + return o.Pk +} + +// GetPkOk returns a tuple with the Pk field value +// and a boolean to check if the value has been set. +func (o *UserSelf) GetPkOk() (*int32, bool) { + if o == nil { + return nil, false + } + return &o.Pk, true +} + +// SetPk sets field value +func (o *UserSelf) SetPk(v int32) { + o.Pk = v +} + +// GetUsername returns the Username field value +func (o *UserSelf) GetUsername() string { + if o == nil { + var ret string + return ret + } + + return o.Username +} + +// GetUsernameOk returns a tuple with the Username field value +// and a boolean to check if the value has been set. +func (o *UserSelf) GetUsernameOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Username, true +} + +// SetUsername sets field value +func (o *UserSelf) SetUsername(v string) { + o.Username = v +} + +// GetName returns the Name field value +func (o *UserSelf) GetName() string { + if o == nil { + var ret string + return ret + } + + return o.Name +} + +// GetNameOk returns a tuple with the Name field value +// and a boolean to check if the value has been set. +func (o *UserSelf) GetNameOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Name, true +} + +// SetName sets field value +func (o *UserSelf) SetName(v string) { + o.Name = v +} + +// GetIsActive returns the IsActive field value +func (o *UserSelf) GetIsActive() bool { + if o == nil { + var ret bool + return ret + } + + return o.IsActive +} + +// GetIsActiveOk returns a tuple with the IsActive field value +// and a boolean to check if the value has been set. +func (o *UserSelf) GetIsActiveOk() (*bool, bool) { + if o == nil { + return nil, false + } + return &o.IsActive, true +} + +// SetIsActive sets field value +func (o *UserSelf) SetIsActive(v bool) { + o.IsActive = v +} + +// GetIsSuperuser returns the IsSuperuser field value +func (o *UserSelf) GetIsSuperuser() bool { + if o == nil { + var ret bool + return ret + } + + return o.IsSuperuser +} + +// GetIsSuperuserOk returns a tuple with the IsSuperuser field value +// and a boolean to check if the value has been set. +func (o *UserSelf) GetIsSuperuserOk() (*bool, bool) { + if o == nil { + return nil, false + } + return &o.IsSuperuser, true +} + +// SetIsSuperuser sets field value +func (o *UserSelf) SetIsSuperuser(v bool) { + o.IsSuperuser = v +} + +// GetGroups returns the Groups field value +func (o *UserSelf) GetGroups() []UserSelfGroups { + if o == nil { + var ret []UserSelfGroups + return ret + } + + return o.Groups +} + +// GetGroupsOk returns a tuple with the Groups field value +// and a boolean to check if the value has been set. +func (o *UserSelf) GetGroupsOk() ([]UserSelfGroups, bool) { + if o == nil { + return nil, false + } + return o.Groups, true +} + +// SetGroups sets field value +func (o *UserSelf) SetGroups(v []UserSelfGroups) { + o.Groups = v +} + +// GetRoles returns the Roles field value +func (o *UserSelf) GetRoles() []UserSelfRoles { + if o == nil { + var ret []UserSelfRoles + return ret + } + + return o.Roles +} + +// GetRolesOk returns a tuple with the Roles field value +// and a boolean to check if the value has been set. +func (o *UserSelf) GetRolesOk() ([]UserSelfRoles, bool) { + if o == nil { + return nil, false + } + return o.Roles, true +} + +// SetRoles sets field value +func (o *UserSelf) SetRoles(v []UserSelfRoles) { + o.Roles = v +} + +// GetEmail returns the Email field value if set, zero value otherwise. +func (o *UserSelf) GetEmail() string { + if o == nil || IsNil(o.Email) { + var ret string + return ret + } + return *o.Email +} + +// GetEmailOk returns a tuple with the Email field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *UserSelf) GetEmailOk() (*string, bool) { + if o == nil || IsNil(o.Email) { + return nil, false + } + return o.Email, true +} + +// HasEmail returns a boolean if a field has been set. +func (o *UserSelf) HasEmail() bool { + if o != nil && !IsNil(o.Email) { + return true + } + + return false +} + +// SetEmail gets a reference to the given string and assigns it to the Email field. +func (o *UserSelf) SetEmail(v string) { + o.Email = &v +} + +// GetAvatar returns the Avatar field value +func (o *UserSelf) GetAvatar() string { + if o == nil { + var ret string + return ret + } + + return o.Avatar +} + +// GetAvatarOk returns a tuple with the Avatar field value +// and a boolean to check if the value has been set. +func (o *UserSelf) GetAvatarOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Avatar, true +} + +// SetAvatar sets field value +func (o *UserSelf) SetAvatar(v string) { + o.Avatar = v +} + +// GetUid returns the Uid field value +func (o *UserSelf) GetUid() string { + if o == nil { + var ret string + return ret + } + + return o.Uid +} + +// GetUidOk returns a tuple with the Uid field value +// and a boolean to check if the value has been set. +func (o *UserSelf) GetUidOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Uid, true +} + +// SetUid sets field value +func (o *UserSelf) SetUid(v string) { + o.Uid = v +} + +// GetSettings returns the Settings field value +func (o *UserSelf) GetSettings() map[string]interface{} { + if o == nil { + var ret map[string]interface{} + return ret + } + + return o.Settings +} + +// GetSettingsOk returns a tuple with the Settings field value +// and a boolean to check if the value has been set. +func (o *UserSelf) GetSettingsOk() (map[string]interface{}, bool) { + if o == nil { + return map[string]interface{}{}, false + } + return o.Settings, true +} + +// SetSettings sets field value +func (o *UserSelf) SetSettings(v map[string]interface{}) { + o.Settings = v +} + +// GetType returns the Type field value if set, zero value otherwise. +func (o *UserSelf) GetType() UserTypeEnum { + if o == nil || IsNil(o.Type) { + var ret UserTypeEnum + return ret + } + return *o.Type +} + +// GetTypeOk returns a tuple with the Type field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *UserSelf) GetTypeOk() (*UserTypeEnum, bool) { + if o == nil || IsNil(o.Type) { + return nil, false + } + return o.Type, true +} + +// HasType returns a boolean if a field has been set. +func (o *UserSelf) HasType() bool { + if o != nil && !IsNil(o.Type) { + return true + } + + return false +} + +// SetType gets a reference to the given UserTypeEnum and assigns it to the Type field. +func (o *UserSelf) SetType(v UserTypeEnum) { + o.Type = &v +} + +// GetSystemPermissions returns the SystemPermissions field value +func (o *UserSelf) GetSystemPermissions() []string { + if o == nil { + var ret []string + return ret + } + + return o.SystemPermissions +} + +// GetSystemPermissionsOk returns a tuple with the SystemPermissions field value +// and a boolean to check if the value has been set. +func (o *UserSelf) GetSystemPermissionsOk() ([]string, bool) { + if o == nil { + return nil, false + } + return o.SystemPermissions, true +} + +// SetSystemPermissions sets field value +func (o *UserSelf) SetSystemPermissions(v []string) { + o.SystemPermissions = v +} + +func (o UserSelf) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o UserSelf) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + toSerialize["pk"] = o.Pk + toSerialize["username"] = o.Username + toSerialize["name"] = o.Name + toSerialize["is_active"] = o.IsActive + toSerialize["is_superuser"] = o.IsSuperuser + toSerialize["groups"] = o.Groups + toSerialize["roles"] = o.Roles + if !IsNil(o.Email) { + toSerialize["email"] = o.Email + } + toSerialize["avatar"] = o.Avatar + toSerialize["uid"] = o.Uid + toSerialize["settings"] = o.Settings + if !IsNil(o.Type) { + toSerialize["type"] = o.Type + } + toSerialize["system_permissions"] = o.SystemPermissions + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *UserSelf) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "pk", + "username", + "name", + "is_active", + "is_superuser", + "groups", + "roles", + "avatar", + "uid", + "settings", + "system_permissions", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varUserSelf := _UserSelf{} + + err = json.Unmarshal(data, &varUserSelf) + + if err != nil { + return err + } + + *o = UserSelf(varUserSelf) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "pk") + delete(additionalProperties, "username") + delete(additionalProperties, "name") + delete(additionalProperties, "is_active") + delete(additionalProperties, "is_superuser") + delete(additionalProperties, "groups") + delete(additionalProperties, "roles") + delete(additionalProperties, "email") + delete(additionalProperties, "avatar") + delete(additionalProperties, "uid") + delete(additionalProperties, "settings") + delete(additionalProperties, "type") + delete(additionalProperties, "system_permissions") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableUserSelf struct { + value *UserSelf + isSet bool +} + +func (v NullableUserSelf) Get() *UserSelf { + return v.value +} + +func (v *NullableUserSelf) Set(val *UserSelf) { + v.value = val + v.isSet = true +} + +func (v NullableUserSelf) IsSet() bool { + return v.isSet +} + +func (v *NullableUserSelf) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableUserSelf(val *UserSelf) *NullableUserSelf { + return &NullableUserSelf{value: val, isSet: true} +} + +func (v NullableUserSelf) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableUserSelf) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_user_self_groups.go b/packages/client-go/model_user_self_groups.go new file mode 100644 index 0000000000..9e30c87a09 --- /dev/null +++ b/packages/client-go/model_user_self_groups.go @@ -0,0 +1,196 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// checks if the UserSelfGroups type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &UserSelfGroups{} + +// UserSelfGroups struct for UserSelfGroups +type UserSelfGroups struct { + Name string `json:"name"` + Pk string `json:"pk"` + AdditionalProperties map[string]interface{} +} + +type _UserSelfGroups UserSelfGroups + +// NewUserSelfGroups instantiates a new UserSelfGroups object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewUserSelfGroups(name string, pk string) *UserSelfGroups { + this := UserSelfGroups{} + this.Name = name + this.Pk = pk + return &this +} + +// NewUserSelfGroupsWithDefaults instantiates a new UserSelfGroups object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewUserSelfGroupsWithDefaults() *UserSelfGroups { + this := UserSelfGroups{} + return &this +} + +// GetName returns the Name field value +func (o *UserSelfGroups) GetName() string { + if o == nil { + var ret string + return ret + } + + return o.Name +} + +// GetNameOk returns a tuple with the Name field value +// and a boolean to check if the value has been set. +func (o *UserSelfGroups) GetNameOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Name, true +} + +// SetName sets field value +func (o *UserSelfGroups) SetName(v string) { + o.Name = v +} + +// GetPk returns the Pk field value +func (o *UserSelfGroups) GetPk() string { + if o == nil { + var ret string + return ret + } + + return o.Pk +} + +// GetPkOk returns a tuple with the Pk field value +// and a boolean to check if the value has been set. +func (o *UserSelfGroups) GetPkOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Pk, true +} + +// SetPk sets field value +func (o *UserSelfGroups) SetPk(v string) { + o.Pk = v +} + +func (o UserSelfGroups) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o UserSelfGroups) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + toSerialize["name"] = o.Name + toSerialize["pk"] = o.Pk + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *UserSelfGroups) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "name", + "pk", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varUserSelfGroups := _UserSelfGroups{} + + err = json.Unmarshal(data, &varUserSelfGroups) + + if err != nil { + return err + } + + *o = UserSelfGroups(varUserSelfGroups) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "name") + delete(additionalProperties, "pk") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableUserSelfGroups struct { + value *UserSelfGroups + isSet bool +} + +func (v NullableUserSelfGroups) Get() *UserSelfGroups { + return v.value +} + +func (v *NullableUserSelfGroups) Set(val *UserSelfGroups) { + v.value = val + v.isSet = true +} + +func (v NullableUserSelfGroups) IsSet() bool { + return v.isSet +} + +func (v *NullableUserSelfGroups) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableUserSelfGroups(val *UserSelfGroups) *NullableUserSelfGroups { + return &NullableUserSelfGroups{value: val, isSet: true} +} + +func (v NullableUserSelfGroups) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableUserSelfGroups) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_user_self_roles.go b/packages/client-go/model_user_self_roles.go new file mode 100644 index 0000000000..ae98da6fa1 --- /dev/null +++ b/packages/client-go/model_user_self_roles.go @@ -0,0 +1,196 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// checks if the UserSelfRoles type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &UserSelfRoles{} + +// UserSelfRoles struct for UserSelfRoles +type UserSelfRoles struct { + Name string `json:"name"` + Pk string `json:"pk"` + AdditionalProperties map[string]interface{} +} + +type _UserSelfRoles UserSelfRoles + +// NewUserSelfRoles instantiates a new UserSelfRoles object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewUserSelfRoles(name string, pk string) *UserSelfRoles { + this := UserSelfRoles{} + this.Name = name + this.Pk = pk + return &this +} + +// NewUserSelfRolesWithDefaults instantiates a new UserSelfRoles object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewUserSelfRolesWithDefaults() *UserSelfRoles { + this := UserSelfRoles{} + return &this +} + +// GetName returns the Name field value +func (o *UserSelfRoles) GetName() string { + if o == nil { + var ret string + return ret + } + + return o.Name +} + +// GetNameOk returns a tuple with the Name field value +// and a boolean to check if the value has been set. +func (o *UserSelfRoles) GetNameOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Name, true +} + +// SetName sets field value +func (o *UserSelfRoles) SetName(v string) { + o.Name = v +} + +// GetPk returns the Pk field value +func (o *UserSelfRoles) GetPk() string { + if o == nil { + var ret string + return ret + } + + return o.Pk +} + +// GetPkOk returns a tuple with the Pk field value +// and a boolean to check if the value has been set. +func (o *UserSelfRoles) GetPkOk() (*string, bool) { + if o == nil { + return nil, false + } + return &o.Pk, true +} + +// SetPk sets field value +func (o *UserSelfRoles) SetPk(v string) { + o.Pk = v +} + +func (o UserSelfRoles) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o UserSelfRoles) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + toSerialize["name"] = o.Name + toSerialize["pk"] = o.Pk + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *UserSelfRoles) UnmarshalJSON(data []byte) (err error) { + // This validates that all required properties are included in the JSON object + // by unmarshalling the object into a generic map with string keys and checking + // that every required field exists as a key in the generic map. + requiredProperties := []string{ + "name", + "pk", + } + + allProperties := make(map[string]interface{}) + + err = json.Unmarshal(data, &allProperties) + + if err != nil { + return err + } + + for _, requiredProperty := range requiredProperties { + if _, exists := allProperties[requiredProperty]; !exists { + return fmt.Errorf("no value given for required property %v", requiredProperty) + } + } + + varUserSelfRoles := _UserSelfRoles{} + + err = json.Unmarshal(data, &varUserSelfRoles) + + if err != nil { + return err + } + + *o = UserSelfRoles(varUserSelfRoles) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "name") + delete(additionalProperties, "pk") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableUserSelfRoles struct { + value *UserSelfRoles + isSet bool +} + +func (v NullableUserSelfRoles) Get() *UserSelfRoles { + return v.value +} + +func (v *NullableUserSelfRoles) Set(val *UserSelfRoles) { + v.value = val + v.isSet = true +} + +func (v NullableUserSelfRoles) IsSet() bool { + return v.isSet +} + +func (v *NullableUserSelfRoles) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableUserSelfRoles(val *UserSelfRoles) *NullableUserSelfRoles { + return &NullableUserSelfRoles{value: val, isSet: true} +} + +func (v NullableUserSelfRoles) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableUserSelfRoles) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_user_type_enum.go b/packages/client-go/model_user_type_enum.go new file mode 100644 index 0000000000..19fb327e85 --- /dev/null +++ b/packages/client-go/model_user_type_enum.go @@ -0,0 +1,115 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" + "fmt" +) + +// UserTypeEnum the model 'UserTypeEnum' +type UserTypeEnum string + +// List of UserTypeEnum +const ( + USERTYPEENUM_INTERNAL UserTypeEnum = "internal" + USERTYPEENUM_EXTERNAL UserTypeEnum = "external" + USERTYPEENUM_SERVICE_ACCOUNT UserTypeEnum = "service_account" + USERTYPEENUM_INTERNAL_SERVICE_ACCOUNT UserTypeEnum = "internal_service_account" +) + +// All allowed values of UserTypeEnum enum +var AllowedUserTypeEnumEnumValues = []UserTypeEnum{ + "internal", + "external", + "service_account", + "internal_service_account", +} + +func (v *UserTypeEnum) UnmarshalJSON(src []byte) error { + var value string + err := json.Unmarshal(src, &value) + if err != nil { + return err + } + enumTypeValue := UserTypeEnum(value) + for _, existing := range AllowedUserTypeEnumEnumValues { + if existing == enumTypeValue { + *v = enumTypeValue + return nil + } + } + + return fmt.Errorf("%+v is not a valid UserTypeEnum", value) +} + +// NewUserTypeEnumFromValue returns a pointer to a valid UserTypeEnum +// for the value passed as argument, or an error if the value passed is not allowed by the enum +func NewUserTypeEnumFromValue(v string) (*UserTypeEnum, error) { + ev := UserTypeEnum(v) + if ev.IsValid() { + return &ev, nil + } else { + return nil, fmt.Errorf("invalid value '%v' for UserTypeEnum: valid values are %v", v, AllowedUserTypeEnumEnumValues) + } +} + +// IsValid return true if the value is valid for the enum, false otherwise +func (v UserTypeEnum) IsValid() bool { + for _, existing := range AllowedUserTypeEnumEnumValues { + if existing == v { + return true + } + } + return false +} + +// Ptr returns reference to UserTypeEnum value +func (v UserTypeEnum) Ptr() *UserTypeEnum { + return &v +} + +type NullableUserTypeEnum struct { + value *UserTypeEnum + isSet bool +} + +func (v NullableUserTypeEnum) Get() *UserTypeEnum { + return v.value +} + +func (v *NullableUserTypeEnum) Set(val *UserTypeEnum) { + v.value = val + v.isSet = true +} + +func (v NullableUserTypeEnum) IsSet() bool { + return v.isSet +} + +func (v *NullableUserTypeEnum) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableUserTypeEnum(val *UserTypeEnum) *NullableUserTypeEnum { + return &NullableUserTypeEnum{value: val, isSet: true} +} + +func (v NullableUserTypeEnum) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableUserTypeEnum) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/model_validation_error.go b/packages/client-go/model_validation_error.go new file mode 100644 index 0000000000..81443be0d0 --- /dev/null +++ b/packages/client-go/model_validation_error.go @@ -0,0 +1,191 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "encoding/json" +) + +// checks if the ValidationError type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &ValidationError{} + +// ValidationError Validation Error +type ValidationError struct { + NonFieldErrors []string `json:"non_field_errors,omitempty"` + Code *string `json:"code,omitempty"` + AdditionalProperties map[string]interface{} +} + +type _ValidationError ValidationError + +// NewValidationError instantiates a new ValidationError object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewValidationError() *ValidationError { + this := ValidationError{} + return &this +} + +// NewValidationErrorWithDefaults instantiates a new ValidationError object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewValidationErrorWithDefaults() *ValidationError { + this := ValidationError{} + return &this +} + +// GetNonFieldErrors returns the NonFieldErrors field value if set, zero value otherwise. +func (o *ValidationError) GetNonFieldErrors() []string { + if o == nil || IsNil(o.NonFieldErrors) { + var ret []string + return ret + } + return o.NonFieldErrors +} + +// GetNonFieldErrorsOk returns a tuple with the NonFieldErrors field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *ValidationError) GetNonFieldErrorsOk() ([]string, bool) { + if o == nil || IsNil(o.NonFieldErrors) { + return nil, false + } + return o.NonFieldErrors, true +} + +// HasNonFieldErrors returns a boolean if a field has been set. +func (o *ValidationError) HasNonFieldErrors() bool { + if o != nil && !IsNil(o.NonFieldErrors) { + return true + } + + return false +} + +// SetNonFieldErrors gets a reference to the given []string and assigns it to the NonFieldErrors field. +func (o *ValidationError) SetNonFieldErrors(v []string) { + o.NonFieldErrors = v +} + +// GetCode returns the Code field value if set, zero value otherwise. +func (o *ValidationError) GetCode() string { + if o == nil || IsNil(o.Code) { + var ret string + return ret + } + return *o.Code +} + +// GetCodeOk returns a tuple with the Code field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *ValidationError) GetCodeOk() (*string, bool) { + if o == nil || IsNil(o.Code) { + return nil, false + } + return o.Code, true +} + +// HasCode returns a boolean if a field has been set. +func (o *ValidationError) HasCode() bool { + if o != nil && !IsNil(o.Code) { + return true + } + + return false +} + +// SetCode gets a reference to the given string and assigns it to the Code field. +func (o *ValidationError) SetCode(v string) { + o.Code = &v +} + +func (o ValidationError) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o ValidationError) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !IsNil(o.NonFieldErrors) { + toSerialize["non_field_errors"] = o.NonFieldErrors + } + if !IsNil(o.Code) { + toSerialize["code"] = o.Code + } + + for key, value := range o.AdditionalProperties { + toSerialize[key] = value + } + + return toSerialize, nil +} + +func (o *ValidationError) UnmarshalJSON(data []byte) (err error) { + varValidationError := _ValidationError{} + + err = json.Unmarshal(data, &varValidationError) + + if err != nil { + return err + } + + *o = ValidationError(varValidationError) + + additionalProperties := make(map[string]interface{}) + + if err = json.Unmarshal(data, &additionalProperties); err == nil { + delete(additionalProperties, "non_field_errors") + delete(additionalProperties, "code") + o.AdditionalProperties = additionalProperties + } + + return err +} + +type NullableValidationError struct { + value *ValidationError + isSet bool +} + +func (v NullableValidationError) Get() *ValidationError { + return v.value +} + +func (v *NullableValidationError) Set(val *ValidationError) { + v.value = val + v.isSet = true +} + +func (v NullableValidationError) IsSet() bool { + return v.isSet +} + +func (v *NullableValidationError) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableValidationError(val *ValidationError) *NullableValidationError { + return &NullableValidationError{value: val, isSet: true} +} + +func (v NullableValidationError) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableValidationError) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/packages/client-go/operation_ids b/packages/client-go/operation_ids new file mode 100644 index 0000000000..af6fa9056a --- /dev/null +++ b/packages/client-go/operation_ids @@ -0,0 +1,18 @@ +core_brands_list +core_groups_list +core_users_list +core_users_me_retrieve +core_users_retrieve +crypto_certificatekeypairs_retrieve +crypto_certificatekeypairs_view_certificate_retrieve +crypto_certificatekeypairs_view_private_key_retrieve +events_events_create +flows_executor_get +flows_executor_solve +outposts_instances_list +outposts_ldap_access_check +outposts_ldap_list +outposts_proxy_list +outposts_radius_access_check +outposts_radius_list +root_config_retrieve diff --git a/packages/client-go/response.go b/packages/client-go/response.go new file mode 100644 index 0000000000..d326e665e8 --- /dev/null +++ b/packages/client-go/response.go @@ -0,0 +1,48 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "net/http" +) + +// APIResponse stores the API response returned by the server. +type APIResponse struct { + *http.Response `json:"-"` + Message string `json:"message,omitempty"` + // Operation is the name of the OpenAPI operation. + Operation string `json:"operation,omitempty"` + // RequestURL is the request URL. This value is always available, even if the + // embedded *http.Response is nil. + RequestURL string `json:"url,omitempty"` + // Method is the HTTP method used for the request. This value is always + // available, even if the embedded *http.Response is nil. + Method string `json:"method,omitempty"` + // Payload holds the contents of the response body (which may be nil or empty). + // This is provided here as the raw response.Body() reader will have already + // been drained. + Payload []byte `json:"-"` +} + +// NewAPIResponse returns a new APIResponse object. +func NewAPIResponse(r *http.Response) *APIResponse { + + response := &APIResponse{Response: r} + return response +} + +// NewAPIResponseWithError returns a new APIResponse object with the provided error message. +func NewAPIResponseWithError(errorMessage string) *APIResponse { + + response := &APIResponse{Message: errorMessage} + return response +} diff --git a/packages/client-go/utils.go b/packages/client-go/utils.go new file mode 100644 index 0000000000..4f65a939ae --- /dev/null +++ b/packages/client-go/utils.go @@ -0,0 +1,362 @@ +/* +authentik + +Making authentication simple. + +API version: 2026.8.0-rc1 +Contact: hello@goauthentik.io +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package api + +import ( + "bytes" + "encoding/json" + "fmt" + "reflect" + "time" +) + +// PtrBool is a helper routine that returns a pointer to given boolean value. +func PtrBool(v bool) *bool { return &v } + +// PtrInt is a helper routine that returns a pointer to given integer value. +func PtrInt(v int) *int { return &v } + +// PtrInt32 is a helper routine that returns a pointer to given integer value. +func PtrInt32(v int32) *int32 { return &v } + +// PtrInt64 is a helper routine that returns a pointer to given integer value. +func PtrInt64(v int64) *int64 { return &v } + +// PtrFloat32 is a helper routine that returns a pointer to given float value. +func PtrFloat32(v float32) *float32 { return &v } + +// PtrFloat64 is a helper routine that returns a pointer to given float value. +func PtrFloat64(v float64) *float64 { return &v } + +// PtrString is a helper routine that returns a pointer to given string value. +func PtrString(v string) *string { return &v } + +// PtrTime is helper routine that returns a pointer to given Time value. +func PtrTime(v time.Time) *time.Time { return &v } + +type NullableBool struct { + value *bool + isSet bool +} + +func (v NullableBool) Get() *bool { + return v.value +} + +func (v *NullableBool) Set(val *bool) { + v.value = val + v.isSet = true +} + +func (v NullableBool) IsSet() bool { + return v.isSet +} + +func (v *NullableBool) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableBool(val *bool) *NullableBool { + return &NullableBool{value: val, isSet: true} +} + +func (v NullableBool) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableBool) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} + +type NullableInt struct { + value *int + isSet bool +} + +func (v NullableInt) Get() *int { + return v.value +} + +func (v *NullableInt) Set(val *int) { + v.value = val + v.isSet = true +} + +func (v NullableInt) IsSet() bool { + return v.isSet +} + +func (v *NullableInt) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableInt(val *int) *NullableInt { + return &NullableInt{value: val, isSet: true} +} + +func (v NullableInt) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableInt) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} + +type NullableInt32 struct { + value *int32 + isSet bool +} + +func (v NullableInt32) Get() *int32 { + return v.value +} + +func (v *NullableInt32) Set(val *int32) { + v.value = val + v.isSet = true +} + +func (v NullableInt32) IsSet() bool { + return v.isSet +} + +func (v *NullableInt32) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableInt32(val *int32) *NullableInt32 { + return &NullableInt32{value: val, isSet: true} +} + +func (v NullableInt32) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableInt32) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} + +type NullableInt64 struct { + value *int64 + isSet bool +} + +func (v NullableInt64) Get() *int64 { + return v.value +} + +func (v *NullableInt64) Set(val *int64) { + v.value = val + v.isSet = true +} + +func (v NullableInt64) IsSet() bool { + return v.isSet +} + +func (v *NullableInt64) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableInt64(val *int64) *NullableInt64 { + return &NullableInt64{value: val, isSet: true} +} + +func (v NullableInt64) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableInt64) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} + +type NullableFloat32 struct { + value *float32 + isSet bool +} + +func (v NullableFloat32) Get() *float32 { + return v.value +} + +func (v *NullableFloat32) Set(val *float32) { + v.value = val + v.isSet = true +} + +func (v NullableFloat32) IsSet() bool { + return v.isSet +} + +func (v *NullableFloat32) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableFloat32(val *float32) *NullableFloat32 { + return &NullableFloat32{value: val, isSet: true} +} + +func (v NullableFloat32) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableFloat32) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} + +type NullableFloat64 struct { + value *float64 + isSet bool +} + +func (v NullableFloat64) Get() *float64 { + return v.value +} + +func (v *NullableFloat64) Set(val *float64) { + v.value = val + v.isSet = true +} + +func (v NullableFloat64) IsSet() bool { + return v.isSet +} + +func (v *NullableFloat64) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableFloat64(val *float64) *NullableFloat64 { + return &NullableFloat64{value: val, isSet: true} +} + +func (v NullableFloat64) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableFloat64) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} + +type NullableString struct { + value *string + isSet bool +} + +func (v NullableString) Get() *string { + return v.value +} + +func (v *NullableString) Set(val *string) { + v.value = val + v.isSet = true +} + +func (v NullableString) IsSet() bool { + return v.isSet +} + +func (v *NullableString) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableString(val *string) *NullableString { + return &NullableString{value: val, isSet: true} +} + +func (v NullableString) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableString) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} + +type NullableTime struct { + value *time.Time + isSet bool +} + +func (v NullableTime) Get() *time.Time { + return v.value +} + +func (v *NullableTime) Set(val *time.Time) { + v.value = val + v.isSet = true +} + +func (v NullableTime) IsSet() bool { + return v.isSet +} + +func (v *NullableTime) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableTime(val *time.Time) *NullableTime { + return &NullableTime{value: val, isSet: true} +} + +func (v NullableTime) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableTime) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} + +// IsNil checks if an input is nil +func IsNil(i interface{}) bool { + if i == nil { + return true + } + switch reflect.TypeOf(i).Kind() { + case reflect.Chan, reflect.Func, reflect.Map, reflect.Ptr, reflect.UnsafePointer, reflect.Interface, reflect.Slice: + return reflect.ValueOf(i).IsNil() + case reflect.Array: + return reflect.ValueOf(i).IsZero() + } + return false +} + +type MappedNullable interface { + ToMap() (map[string]interface{}, error) +} + +// A wrapper for strict JSON decoding +func newStrictDecoder(data []byte) *json.Decoder { + dec := json.NewDecoder(bytes.NewBuffer(data)) + dec.DisallowUnknownFields() + return dec +} + +// Prevent trying to import "fmt" +func reportError(format string, a ...interface{}) error { + return fmt.Errorf(format, a...) +} diff --git a/packages/client-rust/.openapi-generator-ignore b/packages/client-rust/.openapi-generator-ignore new file mode 100644 index 0000000000..138548437f --- /dev/null +++ b/packages/client-rust/.openapi-generator-ignore @@ -0,0 +1,6 @@ +Cargo.toml +.gitignore +.openapi-generator/** +git_push.sh +.travis.yml +README.md diff --git a/packages/client-rust/Cargo.toml b/packages/client-rust/Cargo.toml new file mode 100644 index 0000000000..7fb8527bed --- /dev/null +++ b/packages/client-rust/Cargo.toml @@ -0,0 +1,39 @@ +[package] +name = "authentik-client" +version.workspace = true +authors.workspace = true +description.workspace = true +edition = "2021" +readme.workspace = true +homepage.workspace = true +repository.workspace = true +license-file.workspace = true +publish = false + +[dependencies] +aws-lc-rs.workspace = true +serde.workspace = true +serde_with.workspace = true +serde_json.workspace = true +serde_repr.workspace = true +url.workspace = true +uuid.workspace = true +reqwest.workspace = true +reqwest-middleware.workspace = true +rustls.workspace = true + +[lints.rust] +non_snake_case = "allow" + +[lints.rustdoc] +invalid_html_tags = "allow" + +[lints.clippy] +derivable_impls = "allow" +empty_docs = "allow" +into_iter_on_ref = "allow" +large_enum_variant = "allow" +needless_return = "allow" + +[package.metadata.cargo-machete] +ignored = ["aws-lc-rs", "rustls"] diff --git a/packages/client-rust/Makefile b/packages/client-rust/Makefile new file mode 100644 index 0000000000..2d11217b44 --- /dev/null +++ b/packages/client-rust/Makefile @@ -0,0 +1,27 @@ +.SHELLFLAGS += -x -e +PWD = $(shell pwd) +UID = $(shell id -u) +GID = $(shell id -g) + +UNAME_S := $(shell uname -s) +ifeq ($(UNAME_S),Darwin) + SED_INPLACE = /usr/bin/sed -i '' +else + SED_INPLACE = sed -i +endif + +build: +ifndef version + $(error Usage: make build version=20xx.xx.xx) +endif + rm -rf "${PWD}/src" + "${PWD}/../../scripts/api_filter_schema.py" "${PWD}/../../schema.yml" "${PWD}/schema.yml" "${PWD}/operation_ids" + docker compose run --rm --user "${UID}:${GID}" gen \ + generate \ + -i /local/schema.yml \ + -g rust \ + -o local \ + -c /local/config.yaml \ + --additional-properties=packageVersion=$(version) + $(SED_INPLACE) 's/models::models::/models::/g' ${PWD}/src/apis/* + rm -rf "${PWD}/.openapi-generator" "${PWD}/api/openapi.yaml" "${PWD}/schema.yml" diff --git a/packages/client-rust/compose.yml b/packages/client-rust/compose.yml new file mode 100644 index 0000000000..c155090cd5 --- /dev/null +++ b/packages/client-rust/compose.yml @@ -0,0 +1,8 @@ +--- +services: + gen: + image: docker.io/openapitools/openapi-generator-cli:v7.20.0 + restart: never + network_mode: none + volumes: + - ./:/local diff --git a/packages/client-rust/config.yaml b/packages/client-rust/config.yaml new file mode 100644 index 0000000000..4747127ff7 --- /dev/null +++ b/packages/client-rust/config.yaml @@ -0,0 +1,18 @@ +--- +globalProperties: + supportingFiles: "" + apis: "" + models: "" + apiDocs: false + apiTests: false + modelDocs: false + modelTests: false +additionalProperties: + packageName: authentik-client + avoidBoxedModels: true + bestFitInt: true + preferUnsignedInt: true + library: reqwest + supportAsync: true + supportMiddleware: true + repositoryUrl: https://github.com/authentik-community/client-rust.git diff --git a/packages/client-rust/operation_ids b/packages/client-rust/operation_ids new file mode 100644 index 0000000000..af6fa9056a --- /dev/null +++ b/packages/client-rust/operation_ids @@ -0,0 +1,18 @@ +core_brands_list +core_groups_list +core_users_list +core_users_me_retrieve +core_users_retrieve +crypto_certificatekeypairs_retrieve +crypto_certificatekeypairs_view_certificate_retrieve +crypto_certificatekeypairs_view_private_key_retrieve +events_events_create +flows_executor_get +flows_executor_solve +outposts_instances_list +outposts_ldap_access_check +outposts_ldap_list +outposts_proxy_list +outposts_radius_access_check +outposts_radius_list +root_config_retrieve diff --git a/packages/client-rust/src/apis/configuration.rs b/packages/client-rust/src/apis/configuration.rs new file mode 100644 index 0000000000..3767f74145 --- /dev/null +++ b/packages/client-rust/src/apis/configuration.rs @@ -0,0 +1,46 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +#[derive(Debug, Clone)] +pub struct Configuration { + pub base_path: String, + pub user_agent: Option, + pub client: reqwest_middleware::ClientWithMiddleware, + pub basic_auth: Option, + pub oauth_access_token: Option, + pub bearer_access_token: Option, + pub api_key: Option, +} + +pub type BasicAuth = (String, Option); + +#[derive(Debug, Clone)] +pub struct ApiKey { + pub prefix: Option, + pub key: String, +} + +impl Configuration { + pub fn new() -> Configuration { + Configuration::default() + } +} + +impl Default for Configuration { + fn default() -> Self { + Configuration { + base_path: "/api/v3".to_owned(), + user_agent: Some("OpenAPI-Generator/2026.8.0-rc1/rust".to_owned()), + client: reqwest_middleware::ClientBuilder::new(reqwest::Client::new()).build(), + basic_auth: None, + oauth_access_token: None, + bearer_access_token: None, + api_key: None, + } + } +} diff --git a/packages/client-rust/src/apis/core_api.rs b/packages/client-rust/src/apis/core_api.rs new file mode 100644 index 0000000000..b87e2f4962 --- /dev/null +++ b/packages/client-rust/src/apis/core_api.rs @@ -0,0 +1,781 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use reqwest; +use serde::{Deserialize, Serialize, de::Error as _}; + +use super::{ContentType, Error, configuration}; +use crate::{apis::ResponseContent, models}; + +/// struct for typed errors of method [`core_brands_list`] +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(untagged)] +pub enum CoreBrandsListError { + Status400(models::ValidationError), + Status403(models::GenericError), + UnknownValue(serde_json::Value), +} + +/// struct for typed errors of method [`core_groups_list`] +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(untagged)] +pub enum CoreGroupsListError { + Status400(models::ValidationError), + Status403(models::GenericError), + UnknownValue(serde_json::Value), +} + +/// struct for typed errors of method [`core_users_list`] +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(untagged)] +pub enum CoreUsersListError { + Status400(models::ValidationError), + Status403(models::GenericError), + UnknownValue(serde_json::Value), +} + +/// struct for typed errors of method [`core_users_me_retrieve`] +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(untagged)] +pub enum CoreUsersMeRetrieveError { + Status400(models::ValidationError), + Status403(models::GenericError), + UnknownValue(serde_json::Value), +} + +/// struct for typed errors of method [`core_users_retrieve`] +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(untagged)] +pub enum CoreUsersRetrieveError { + Status400(models::ValidationError), + Status403(models::GenericError), + UnknownValue(serde_json::Value), +} + +/// Brand Viewset +pub async fn core_brands_list( + configuration: &configuration::Configuration, + brand_uuid: Option<&str>, + branding_default_flow_background: Option<&str>, + branding_favicon: Option<&str>, + branding_logo: Option<&str>, + branding_title: Option<&str>, + client_certificates: Option>, + default: Option, + domain: Option<&str>, + flow_authentication: Option<&str>, + flow_device_code: Option<&str>, + flow_invalidation: Option<&str>, + flow_lockdown: Option<&str>, + flow_recovery: Option<&str>, + flow_unenrollment: Option<&str>, + flow_user_settings: Option<&str>, + ordering: Option<&str>, + page: Option, + page_size: Option, + search: Option<&str>, + web_certificate: Option<&str>, +) -> Result> { + // add a prefix to parameters to efficiently prevent name collisions + let p_query_brand_uuid = brand_uuid; + let p_query_branding_default_flow_background = branding_default_flow_background; + let p_query_branding_favicon = branding_favicon; + let p_query_branding_logo = branding_logo; + let p_query_branding_title = branding_title; + let p_query_client_certificates = client_certificates; + let p_query_default = default; + let p_query_domain = domain; + let p_query_flow_authentication = flow_authentication; + let p_query_flow_device_code = flow_device_code; + let p_query_flow_invalidation = flow_invalidation; + let p_query_flow_lockdown = flow_lockdown; + let p_query_flow_recovery = flow_recovery; + let p_query_flow_unenrollment = flow_unenrollment; + let p_query_flow_user_settings = flow_user_settings; + let p_query_ordering = ordering; + let p_query_page = page; + let p_query_page_size = page_size; + let p_query_search = search; + let p_query_web_certificate = web_certificate; + + let uri_str = format!("{}/core/brands/", configuration.base_path); + let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str); + + if let Some(ref param_value) = p_query_brand_uuid { + req_builder = req_builder.query(&[("brand_uuid", ¶m_value.to_string())]); + } + if let Some(ref param_value) = p_query_branding_default_flow_background { + req_builder = + req_builder.query(&[("branding_default_flow_background", ¶m_value.to_string())]); + } + if let Some(ref param_value) = p_query_branding_favicon { + req_builder = req_builder.query(&[("branding_favicon", ¶m_value.to_string())]); + } + if let Some(ref param_value) = p_query_branding_logo { + req_builder = req_builder.query(&[("branding_logo", ¶m_value.to_string())]); + } + if let Some(ref param_value) = p_query_branding_title { + req_builder = req_builder.query(&[("branding_title", ¶m_value.to_string())]); + } + if let Some(ref param_value) = p_query_client_certificates { + req_builder = match "multi" { + "multi" => req_builder.query( + ¶m_value + .into_iter() + .map(|p| ("client_certificates".to_owned(), p.to_string())) + .collect::>(), + ), + _ => req_builder.query(&[( + "client_certificates", + ¶m_value + .into_iter() + .map(|p| p.to_string()) + .collect::>() + .join(",") + .to_string(), + )]), + }; + } + if let Some(ref param_value) = p_query_default { + req_builder = req_builder.query(&[("default", ¶m_value.to_string())]); + } + if let Some(ref param_value) = p_query_domain { + req_builder = req_builder.query(&[("domain", ¶m_value.to_string())]); + } + if let Some(ref param_value) = p_query_flow_authentication { + req_builder = req_builder.query(&[("flow_authentication", ¶m_value.to_string())]); + } + if let Some(ref param_value) = p_query_flow_device_code { + req_builder = req_builder.query(&[("flow_device_code", ¶m_value.to_string())]); + } + if let Some(ref param_value) = p_query_flow_invalidation { + req_builder = req_builder.query(&[("flow_invalidation", ¶m_value.to_string())]); + } + if let Some(ref param_value) = p_query_flow_lockdown { + req_builder = req_builder.query(&[("flow_lockdown", ¶m_value.to_string())]); + } + if let Some(ref param_value) = p_query_flow_recovery { + req_builder = req_builder.query(&[("flow_recovery", ¶m_value.to_string())]); + } + if let Some(ref param_value) = p_query_flow_unenrollment { + req_builder = req_builder.query(&[("flow_unenrollment", ¶m_value.to_string())]); + } + if let Some(ref param_value) = p_query_flow_user_settings { + req_builder = req_builder.query(&[("flow_user_settings", ¶m_value.to_string())]); + } + if let Some(ref param_value) = p_query_ordering { + req_builder = req_builder.query(&[("ordering", ¶m_value.to_string())]); + } + if let Some(ref param_value) = p_query_page { + req_builder = req_builder.query(&[("page", ¶m_value.to_string())]); + } + if let Some(ref param_value) = p_query_page_size { + req_builder = req_builder.query(&[("page_size", ¶m_value.to_string())]); + } + if let Some(ref param_value) = p_query_search { + req_builder = req_builder.query(&[("search", ¶m_value.to_string())]); + } + if let Some(ref param_value) = p_query_web_certificate { + req_builder = req_builder.query(&[("web_certificate", ¶m_value.to_string())]); + } + if let Some(ref user_agent) = configuration.user_agent { + req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone()); + } + if let Some(ref token) = configuration.bearer_access_token { + req_builder = req_builder.bearer_auth(token.to_owned()); + }; + + let req = req_builder.build()?; + let resp = configuration.client.execute(req).await?; + + let status = resp.status(); + let content_type = resp + .headers() + .get("content-type") + .and_then(|v| v.to_str().ok()) + .unwrap_or("application/octet-stream"); + let content_type = super::ContentType::from(content_type); + + if !status.is_client_error() && !status.is_server_error() { + let content = resp.text().await?; + match content_type { + ContentType::Json => serde_json::from_str(&content).map_err(Error::from), + ContentType::Text => { + return Err(Error::from(serde_json::Error::custom( + "Received `text/plain` content type response that cannot be converted to \ + `models::PaginatedBrandList`", + ))); + } + ContentType::Unsupported(unknown_type) => { + return Err(Error::from(serde_json::Error::custom(format!( + "Received `{unknown_type}` content type response that cannot be converted to \ + `models::PaginatedBrandList`" + )))); + } + } + } else { + let content = resp.text().await?; + let entity: Option = serde_json::from_str(&content).ok(); + Err(Error::ResponseError(ResponseContent { + status, + content, + entity, + })) + } +} + +/// Group Viewset +pub async fn core_groups_list( + configuration: &configuration::Configuration, + attributes: Option<&str>, + include_children: Option, + include_inherited_roles: Option, + include_parents: Option, + include_users: Option, + is_superuser: Option, + members_by_pk: Option>, + members_by_username: Option>, + name: Option<&str>, + ordering: Option<&str>, + page: Option, + page_size: Option, + search: Option<&str>, +) -> Result> { + // add a prefix to parameters to efficiently prevent name collisions + let p_query_attributes = attributes; + let p_query_include_children = include_children; + let p_query_include_inherited_roles = include_inherited_roles; + let p_query_include_parents = include_parents; + let p_query_include_users = include_users; + let p_query_is_superuser = is_superuser; + let p_query_members_by_pk = members_by_pk; + let p_query_members_by_username = members_by_username; + let p_query_name = name; + let p_query_ordering = ordering; + let p_query_page = page; + let p_query_page_size = page_size; + let p_query_search = search; + + let uri_str = format!("{}/core/groups/", configuration.base_path); + let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str); + + if let Some(ref param_value) = p_query_attributes { + req_builder = req_builder.query(&[("attributes", ¶m_value.to_string())]); + } + if let Some(ref param_value) = p_query_include_children { + req_builder = req_builder.query(&[("include_children", ¶m_value.to_string())]); + } + if let Some(ref param_value) = p_query_include_inherited_roles { + req_builder = req_builder.query(&[("include_inherited_roles", ¶m_value.to_string())]); + } + if let Some(ref param_value) = p_query_include_parents { + req_builder = req_builder.query(&[("include_parents", ¶m_value.to_string())]); + } + if let Some(ref param_value) = p_query_include_users { + req_builder = req_builder.query(&[("include_users", ¶m_value.to_string())]); + } + if let Some(ref param_value) = p_query_is_superuser { + req_builder = req_builder.query(&[("is_superuser", ¶m_value.to_string())]); + } + if let Some(ref param_value) = p_query_members_by_pk { + req_builder = match "multi" { + "multi" => req_builder.query( + ¶m_value + .into_iter() + .map(|p| ("members_by_pk".to_owned(), p.to_string())) + .collect::>(), + ), + _ => req_builder.query(&[( + "members_by_pk", + ¶m_value + .into_iter() + .map(|p| p.to_string()) + .collect::>() + .join(",") + .to_string(), + )]), + }; + } + if let Some(ref param_value) = p_query_members_by_username { + req_builder = match "multi" { + "multi" => req_builder.query( + ¶m_value + .into_iter() + .map(|p| ("members_by_username".to_owned(), p.to_string())) + .collect::>(), + ), + _ => req_builder.query(&[( + "members_by_username", + ¶m_value + .into_iter() + .map(|p| p.to_string()) + .collect::>() + .join(",") + .to_string(), + )]), + }; + } + if let Some(ref param_value) = p_query_name { + req_builder = req_builder.query(&[("name", ¶m_value.to_string())]); + } + if let Some(ref param_value) = p_query_ordering { + req_builder = req_builder.query(&[("ordering", ¶m_value.to_string())]); + } + if let Some(ref param_value) = p_query_page { + req_builder = req_builder.query(&[("page", ¶m_value.to_string())]); + } + if let Some(ref param_value) = p_query_page_size { + req_builder = req_builder.query(&[("page_size", ¶m_value.to_string())]); + } + if let Some(ref param_value) = p_query_search { + req_builder = req_builder.query(&[("search", ¶m_value.to_string())]); + } + if let Some(ref user_agent) = configuration.user_agent { + req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone()); + } + if let Some(ref token) = configuration.bearer_access_token { + req_builder = req_builder.bearer_auth(token.to_owned()); + }; + + let req = req_builder.build()?; + let resp = configuration.client.execute(req).await?; + + let status = resp.status(); + let content_type = resp + .headers() + .get("content-type") + .and_then(|v| v.to_str().ok()) + .unwrap_or("application/octet-stream"); + let content_type = super::ContentType::from(content_type); + + if !status.is_client_error() && !status.is_server_error() { + let content = resp.text().await?; + match content_type { + ContentType::Json => serde_json::from_str(&content).map_err(Error::from), + ContentType::Text => { + return Err(Error::from(serde_json::Error::custom( + "Received `text/plain` content type response that cannot be converted to \ + `models::PaginatedGroupList`", + ))); + } + ContentType::Unsupported(unknown_type) => { + return Err(Error::from(serde_json::Error::custom(format!( + "Received `{unknown_type}` content type response that cannot be converted to \ + `models::PaginatedGroupList`" + )))); + } + } + } else { + let content = resp.text().await?; + let entity: Option = serde_json::from_str(&content).ok(); + Err(Error::ResponseError(ResponseContent { + status, + content, + entity, + })) + } +} + +/// User Viewset +pub async fn core_users_list( + configuration: &configuration::Configuration, + attributes: Option<&str>, + date_joined: Option, + date_joined__gt: Option, + date_joined__lt: Option, + email: Option<&str>, + groups_by_name: Option>, + groups_by_pk: Option>, + include_groups: Option, + include_roles: Option, + is_active: Option, + is_superuser: Option, + last_login: Option, + last_login__gt: Option, + last_login__isnull: Option, + last_login__lt: Option, + last_updated: Option, + last_updated__gt: Option, + last_updated__lt: Option, + name: Option<&str>, + ordering: Option<&str>, + page: Option, + page_size: Option, + path: Option<&str>, + path_startswith: Option<&str>, + roles_by_name: Option>, + roles_by_pk: Option>, + search: Option<&str>, + r#type: Option>, + username: Option<&str>, + uuid: Option<&str>, +) -> Result> { + // add a prefix to parameters to efficiently prevent name collisions + let p_query_attributes = attributes; + let p_query_date_joined = date_joined; + let p_query_date_joined__gt = date_joined__gt; + let p_query_date_joined__lt = date_joined__lt; + let p_query_email = email; + let p_query_groups_by_name = groups_by_name; + let p_query_groups_by_pk = groups_by_pk; + let p_query_include_groups = include_groups; + let p_query_include_roles = include_roles; + let p_query_is_active = is_active; + let p_query_is_superuser = is_superuser; + let p_query_last_login = last_login; + let p_query_last_login__gt = last_login__gt; + let p_query_last_login__isnull = last_login__isnull; + let p_query_last_login__lt = last_login__lt; + let p_query_last_updated = last_updated; + let p_query_last_updated__gt = last_updated__gt; + let p_query_last_updated__lt = last_updated__lt; + let p_query_name = name; + let p_query_ordering = ordering; + let p_query_page = page; + let p_query_page_size = page_size; + let p_query_path = path; + let p_query_path_startswith = path_startswith; + let p_query_roles_by_name = roles_by_name; + let p_query_roles_by_pk = roles_by_pk; + let p_query_search = search; + let p_query_type = r#type; + let p_query_username = username; + let p_query_uuid = uuid; + + let uri_str = format!("{}/core/users/", configuration.base_path); + let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str); + + if let Some(ref param_value) = p_query_attributes { + req_builder = req_builder.query(&[("attributes", ¶m_value.to_string())]); + } + if let Some(ref param_value) = p_query_date_joined { + req_builder = req_builder.query(&[("date_joined", ¶m_value.to_string())]); + } + if let Some(ref param_value) = p_query_date_joined__gt { + req_builder = req_builder.query(&[("date_joined__gt", ¶m_value.to_string())]); + } + if let Some(ref param_value) = p_query_date_joined__lt { + req_builder = req_builder.query(&[("date_joined__lt", ¶m_value.to_string())]); + } + if let Some(ref param_value) = p_query_email { + req_builder = req_builder.query(&[("email", ¶m_value.to_string())]); + } + if let Some(ref param_value) = p_query_groups_by_name { + req_builder = match "multi" { + "multi" => req_builder.query( + ¶m_value + .into_iter() + .map(|p| ("groups_by_name".to_owned(), p.to_string())) + .collect::>(), + ), + _ => req_builder.query(&[( + "groups_by_name", + ¶m_value + .into_iter() + .map(|p| p.to_string()) + .collect::>() + .join(",") + .to_string(), + )]), + }; + } + if let Some(ref param_value) = p_query_groups_by_pk { + req_builder = match "multi" { + "multi" => req_builder.query( + ¶m_value + .into_iter() + .map(|p| ("groups_by_pk".to_owned(), p.to_string())) + .collect::>(), + ), + _ => req_builder.query(&[( + "groups_by_pk", + ¶m_value + .into_iter() + .map(|p| p.to_string()) + .collect::>() + .join(",") + .to_string(), + )]), + }; + } + if let Some(ref param_value) = p_query_include_groups { + req_builder = req_builder.query(&[("include_groups", ¶m_value.to_string())]); + } + if let Some(ref param_value) = p_query_include_roles { + req_builder = req_builder.query(&[("include_roles", ¶m_value.to_string())]); + } + if let Some(ref param_value) = p_query_is_active { + req_builder = req_builder.query(&[("is_active", ¶m_value.to_string())]); + } + if let Some(ref param_value) = p_query_is_superuser { + req_builder = req_builder.query(&[("is_superuser", ¶m_value.to_string())]); + } + if let Some(ref param_value) = p_query_last_login { + req_builder = req_builder.query(&[("last_login", ¶m_value.to_string())]); + } + if let Some(ref param_value) = p_query_last_login__gt { + req_builder = req_builder.query(&[("last_login__gt", ¶m_value.to_string())]); + } + if let Some(ref param_value) = p_query_last_login__isnull { + req_builder = req_builder.query(&[("last_login__isnull", ¶m_value.to_string())]); + } + if let Some(ref param_value) = p_query_last_login__lt { + req_builder = req_builder.query(&[("last_login__lt", ¶m_value.to_string())]); + } + if let Some(ref param_value) = p_query_last_updated { + req_builder = req_builder.query(&[("last_updated", ¶m_value.to_string())]); + } + if let Some(ref param_value) = p_query_last_updated__gt { + req_builder = req_builder.query(&[("last_updated__gt", ¶m_value.to_string())]); + } + if let Some(ref param_value) = p_query_last_updated__lt { + req_builder = req_builder.query(&[("last_updated__lt", ¶m_value.to_string())]); + } + if let Some(ref param_value) = p_query_name { + req_builder = req_builder.query(&[("name", ¶m_value.to_string())]); + } + if let Some(ref param_value) = p_query_ordering { + req_builder = req_builder.query(&[("ordering", ¶m_value.to_string())]); + } + if let Some(ref param_value) = p_query_page { + req_builder = req_builder.query(&[("page", ¶m_value.to_string())]); + } + if let Some(ref param_value) = p_query_page_size { + req_builder = req_builder.query(&[("page_size", ¶m_value.to_string())]); + } + if let Some(ref param_value) = p_query_path { + req_builder = req_builder.query(&[("path", ¶m_value.to_string())]); + } + if let Some(ref param_value) = p_query_path_startswith { + req_builder = req_builder.query(&[("path_startswith", ¶m_value.to_string())]); + } + if let Some(ref param_value) = p_query_roles_by_name { + req_builder = match "multi" { + "multi" => req_builder.query( + ¶m_value + .into_iter() + .map(|p| ("roles_by_name".to_owned(), p.to_string())) + .collect::>(), + ), + _ => req_builder.query(&[( + "roles_by_name", + ¶m_value + .into_iter() + .map(|p| p.to_string()) + .collect::>() + .join(",") + .to_string(), + )]), + }; + } + if let Some(ref param_value) = p_query_roles_by_pk { + req_builder = match "multi" { + "multi" => req_builder.query( + ¶m_value + .into_iter() + .map(|p| ("roles_by_pk".to_owned(), p.to_string())) + .collect::>(), + ), + _ => req_builder.query(&[( + "roles_by_pk", + ¶m_value + .into_iter() + .map(|p| p.to_string()) + .collect::>() + .join(",") + .to_string(), + )]), + }; + } + if let Some(ref param_value) = p_query_search { + req_builder = req_builder.query(&[("search", ¶m_value.to_string())]); + } + if let Some(ref param_value) = p_query_type { + req_builder = match "multi" { + "multi" => req_builder.query( + ¶m_value + .into_iter() + .map(|p| ("type".to_owned(), p.to_string())) + .collect::>(), + ), + _ => req_builder.query(&[( + "type", + ¶m_value + .into_iter() + .map(|p| p.to_string()) + .collect::>() + .join(",") + .to_string(), + )]), + }; + } + if let Some(ref param_value) = p_query_username { + req_builder = req_builder.query(&[("username", ¶m_value.to_string())]); + } + if let Some(ref param_value) = p_query_uuid { + req_builder = req_builder.query(&[("uuid", ¶m_value.to_string())]); + } + if let Some(ref user_agent) = configuration.user_agent { + req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone()); + } + if let Some(ref token) = configuration.bearer_access_token { + req_builder = req_builder.bearer_auth(token.to_owned()); + }; + + let req = req_builder.build()?; + let resp = configuration.client.execute(req).await?; + + let status = resp.status(); + let content_type = resp + .headers() + .get("content-type") + .and_then(|v| v.to_str().ok()) + .unwrap_or("application/octet-stream"); + let content_type = super::ContentType::from(content_type); + + if !status.is_client_error() && !status.is_server_error() { + let content = resp.text().await?; + match content_type { + ContentType::Json => serde_json::from_str(&content).map_err(Error::from), + ContentType::Text => { + return Err(Error::from(serde_json::Error::custom( + "Received `text/plain` content type response that cannot be converted to \ + `models::PaginatedUserList`", + ))); + } + ContentType::Unsupported(unknown_type) => { + return Err(Error::from(serde_json::Error::custom(format!( + "Received `{unknown_type}` content type response that cannot be converted to \ + `models::PaginatedUserList`" + )))); + } + } + } else { + let content = resp.text().await?; + let entity: Option = serde_json::from_str(&content).ok(); + Err(Error::ResponseError(ResponseContent { + status, + content, + entity, + })) + } +} + +/// Get information about current user +pub async fn core_users_me_retrieve( + configuration: &configuration::Configuration, +) -> Result> { + let uri_str = format!("{}/core/users/me/", configuration.base_path); + let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str); + + if let Some(ref user_agent) = configuration.user_agent { + req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone()); + } + if let Some(ref token) = configuration.bearer_access_token { + req_builder = req_builder.bearer_auth(token.to_owned()); + }; + + let req = req_builder.build()?; + let resp = configuration.client.execute(req).await?; + + let status = resp.status(); + let content_type = resp + .headers() + .get("content-type") + .and_then(|v| v.to_str().ok()) + .unwrap_or("application/octet-stream"); + let content_type = super::ContentType::from(content_type); + + if !status.is_client_error() && !status.is_server_error() { + let content = resp.text().await?; + match content_type { + ContentType::Json => serde_json::from_str(&content).map_err(Error::from), + ContentType::Text => { + return Err(Error::from(serde_json::Error::custom( + "Received `text/plain` content type response that cannot be converted to \ + `models::SessionUser`", + ))); + } + ContentType::Unsupported(unknown_type) => { + return Err(Error::from(serde_json::Error::custom(format!( + "Received `{unknown_type}` content type response that cannot be converted to \ + `models::SessionUser`" + )))); + } + } + } else { + let content = resp.text().await?; + let entity: Option = serde_json::from_str(&content).ok(); + Err(Error::ResponseError(ResponseContent { + status, + content, + entity, + })) + } +} + +/// User Viewset +pub async fn core_users_retrieve( + configuration: &configuration::Configuration, + id: i32, +) -> Result> { + // add a prefix to parameters to efficiently prevent name collisions + let p_path_id = id; + + let uri_str = format!( + "{}/core/users/{id}/", + configuration.base_path, + id = p_path_id + ); + let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str); + + if let Some(ref user_agent) = configuration.user_agent { + req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone()); + } + if let Some(ref token) = configuration.bearer_access_token { + req_builder = req_builder.bearer_auth(token.to_owned()); + }; + + let req = req_builder.build()?; + let resp = configuration.client.execute(req).await?; + + let status = resp.status(); + let content_type = resp + .headers() + .get("content-type") + .and_then(|v| v.to_str().ok()) + .unwrap_or("application/octet-stream"); + let content_type = super::ContentType::from(content_type); + + if !status.is_client_error() && !status.is_server_error() { + let content = resp.text().await?; + match content_type { + ContentType::Json => serde_json::from_str(&content).map_err(Error::from), + ContentType::Text => { + return Err(Error::from(serde_json::Error::custom( + "Received `text/plain` content type response that cannot be converted to \ + `models::User`", + ))); + } + ContentType::Unsupported(unknown_type) => { + return Err(Error::from(serde_json::Error::custom(format!( + "Received `{unknown_type}` content type response that cannot be converted to \ + `models::User`" + )))); + } + } + } else { + let content = resp.text().await?; + let entity: Option = serde_json::from_str(&content).ok(); + Err(Error::ResponseError(ResponseContent { + status, + content, + entity, + })) + } +} diff --git a/packages/client-rust/src/apis/crypto_api.rs b/packages/client-rust/src/apis/crypto_api.rs new file mode 100644 index 0000000000..ca69fa6140 --- /dev/null +++ b/packages/client-rust/src/apis/crypto_api.rs @@ -0,0 +1,236 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use reqwest; +use serde::{Deserialize, Serialize, de::Error as _}; + +use super::{ContentType, Error, configuration}; +use crate::{apis::ResponseContent, models}; + +/// struct for typed errors of method [`crypto_certificatekeypairs_retrieve`] +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(untagged)] +pub enum CryptoCertificatekeypairsRetrieveError { + Status400(models::ValidationError), + Status403(models::GenericError), + UnknownValue(serde_json::Value), +} + +/// struct for typed errors of method [`crypto_certificatekeypairs_view_certificate_retrieve`] +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(untagged)] +pub enum CryptoCertificatekeypairsViewCertificateRetrieveError { + Status400(models::ValidationError), + Status403(models::GenericError), + UnknownValue(serde_json::Value), +} + +/// struct for typed errors of method [`crypto_certificatekeypairs_view_private_key_retrieve`] +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(untagged)] +pub enum CryptoCertificatekeypairsViewPrivateKeyRetrieveError { + Status400(models::ValidationError), + Status403(models::GenericError), + UnknownValue(serde_json::Value), +} + +/// CertificateKeyPair Viewset +pub async fn crypto_certificatekeypairs_retrieve( + configuration: &configuration::Configuration, + kp_uuid: &str, +) -> Result> { + // add a prefix to parameters to efficiently prevent name collisions + let p_path_kp_uuid = kp_uuid; + + let uri_str = format!( + "{}/crypto/certificatekeypairs/{kp_uuid}/", + configuration.base_path, + kp_uuid = crate::apis::urlencode(p_path_kp_uuid) + ); + let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str); + + if let Some(ref user_agent) = configuration.user_agent { + req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone()); + } + if let Some(ref token) = configuration.bearer_access_token { + req_builder = req_builder.bearer_auth(token.to_owned()); + }; + + let req = req_builder.build()?; + let resp = configuration.client.execute(req).await?; + + let status = resp.status(); + let content_type = resp + .headers() + .get("content-type") + .and_then(|v| v.to_str().ok()) + .unwrap_or("application/octet-stream"); + let content_type = super::ContentType::from(content_type); + + if !status.is_client_error() && !status.is_server_error() { + let content = resp.text().await?; + match content_type { + ContentType::Json => serde_json::from_str(&content).map_err(Error::from), + ContentType::Text => { + return Err(Error::from(serde_json::Error::custom( + "Received `text/plain` content type response that cannot be converted to \ + `models::CertificateKeyPair`", + ))); + } + ContentType::Unsupported(unknown_type) => { + return Err(Error::from(serde_json::Error::custom(format!( + "Received `{unknown_type}` content type response that cannot be converted to \ + `models::CertificateKeyPair`" + )))); + } + } + } else { + let content = resp.text().await?; + let entity: Option = + serde_json::from_str(&content).ok(); + Err(Error::ResponseError(ResponseContent { + status, + content, + entity, + })) + } +} + +/// Return certificate-key pairs certificate and log access +pub async fn crypto_certificatekeypairs_view_certificate_retrieve( + configuration: &configuration::Configuration, + kp_uuid: &str, + download: Option, +) -> Result> { + // add a prefix to parameters to efficiently prevent name collisions + let p_path_kp_uuid = kp_uuid; + let p_query_download = download; + + let uri_str = format!( + "{}/crypto/certificatekeypairs/{kp_uuid}/view_certificate/", + configuration.base_path, + kp_uuid = crate::apis::urlencode(p_path_kp_uuid) + ); + let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str); + + if let Some(ref param_value) = p_query_download { + req_builder = req_builder.query(&[("download", ¶m_value.to_string())]); + } + if let Some(ref user_agent) = configuration.user_agent { + req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone()); + } + if let Some(ref token) = configuration.bearer_access_token { + req_builder = req_builder.bearer_auth(token.to_owned()); + }; + + let req = req_builder.build()?; + let resp = configuration.client.execute(req).await?; + + let status = resp.status(); + let content_type = resp + .headers() + .get("content-type") + .and_then(|v| v.to_str().ok()) + .unwrap_or("application/octet-stream"); + let content_type = super::ContentType::from(content_type); + + if !status.is_client_error() && !status.is_server_error() { + let content = resp.text().await?; + match content_type { + ContentType::Json => serde_json::from_str(&content).map_err(Error::from), + ContentType::Text => { + return Err(Error::from(serde_json::Error::custom( + "Received `text/plain` content type response that cannot be converted to \ + `models::CertificateData`", + ))); + } + ContentType::Unsupported(unknown_type) => { + return Err(Error::from(serde_json::Error::custom(format!( + "Received `{unknown_type}` content type response that cannot be converted to \ + `models::CertificateData`" + )))); + } + } + } else { + let content = resp.text().await?; + let entity: Option = + serde_json::from_str(&content).ok(); + Err(Error::ResponseError(ResponseContent { + status, + content, + entity, + })) + } +} + +/// Return certificate-key pairs private key and log access +pub async fn crypto_certificatekeypairs_view_private_key_retrieve( + configuration: &configuration::Configuration, + kp_uuid: &str, + download: Option, +) -> Result> { + // add a prefix to parameters to efficiently prevent name collisions + let p_path_kp_uuid = kp_uuid; + let p_query_download = download; + + let uri_str = format!( + "{}/crypto/certificatekeypairs/{kp_uuid}/view_private_key/", + configuration.base_path, + kp_uuid = crate::apis::urlencode(p_path_kp_uuid) + ); + let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str); + + if let Some(ref param_value) = p_query_download { + req_builder = req_builder.query(&[("download", ¶m_value.to_string())]); + } + if let Some(ref user_agent) = configuration.user_agent { + req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone()); + } + if let Some(ref token) = configuration.bearer_access_token { + req_builder = req_builder.bearer_auth(token.to_owned()); + }; + + let req = req_builder.build()?; + let resp = configuration.client.execute(req).await?; + + let status = resp.status(); + let content_type = resp + .headers() + .get("content-type") + .and_then(|v| v.to_str().ok()) + .unwrap_or("application/octet-stream"); + let content_type = super::ContentType::from(content_type); + + if !status.is_client_error() && !status.is_server_error() { + let content = resp.text().await?; + match content_type { + ContentType::Json => serde_json::from_str(&content).map_err(Error::from), + ContentType::Text => { + return Err(Error::from(serde_json::Error::custom( + "Received `text/plain` content type response that cannot be converted to \ + `models::CertificateData`", + ))); + } + ContentType::Unsupported(unknown_type) => { + return Err(Error::from(serde_json::Error::custom(format!( + "Received `{unknown_type}` content type response that cannot be converted to \ + `models::CertificateData`" + )))); + } + } + } else { + let content = resp.text().await?; + let entity: Option = + serde_json::from_str(&content).ok(); + Err(Error::ResponseError(ResponseContent { + status, + content, + entity, + })) + } +} diff --git a/packages/client-rust/src/apis/events_api.rs b/packages/client-rust/src/apis/events_api.rs new file mode 100644 index 0000000000..7c7f89f3bb --- /dev/null +++ b/packages/client-rust/src/apis/events_api.rs @@ -0,0 +1,82 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use reqwest; +use serde::{Deserialize, Serialize, de::Error as _}; + +use super::{ContentType, Error, configuration}; +use crate::{apis::ResponseContent, models}; + +/// struct for typed errors of method [`events_events_create`] +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(untagged)] +pub enum EventsEventsCreateError { + Status400(models::ValidationError), + Status403(models::GenericError), + UnknownValue(serde_json::Value), +} + +/// Event Read-Only Viewset +pub async fn events_events_create( + configuration: &configuration::Configuration, + event_request: models::EventRequest, +) -> Result> { + // add a prefix to parameters to efficiently prevent name collisions + let p_body_event_request = event_request; + + let uri_str = format!("{}/events/events/", configuration.base_path); + let mut req_builder = configuration + .client + .request(reqwest::Method::POST, &uri_str); + + if let Some(ref user_agent) = configuration.user_agent { + req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone()); + } + if let Some(ref token) = configuration.bearer_access_token { + req_builder = req_builder.bearer_auth(token.to_owned()); + }; + req_builder = req_builder.json(&p_body_event_request); + + let req = req_builder.build()?; + let resp = configuration.client.execute(req).await?; + + let status = resp.status(); + let content_type = resp + .headers() + .get("content-type") + .and_then(|v| v.to_str().ok()) + .unwrap_or("application/octet-stream"); + let content_type = super::ContentType::from(content_type); + + if !status.is_client_error() && !status.is_server_error() { + let content = resp.text().await?; + match content_type { + ContentType::Json => serde_json::from_str(&content).map_err(Error::from), + ContentType::Text => { + return Err(Error::from(serde_json::Error::custom( + "Received `text/plain` content type response that cannot be converted to \ + `models::Event`", + ))); + } + ContentType::Unsupported(unknown_type) => { + return Err(Error::from(serde_json::Error::custom(format!( + "Received `{unknown_type}` content type response that cannot be converted to \ + `models::Event`" + )))); + } + } + } else { + let content = resp.text().await?; + let entity: Option = serde_json::from_str(&content).ok(); + Err(Error::ResponseError(ResponseContent { + status, + content, + entity, + })) + } +} diff --git a/packages/client-rust/src/apis/flows_api.rs b/packages/client-rust/src/apis/flows_api.rs new file mode 100644 index 0000000000..43c868d999 --- /dev/null +++ b/packages/client-rust/src/apis/flows_api.rs @@ -0,0 +1,164 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use reqwest; +use serde::{Deserialize, Serialize, de::Error as _}; + +use super::{ContentType, Error, configuration}; +use crate::{apis::ResponseContent, models}; + +/// struct for typed errors of method [`flows_executor_get`] +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(untagged)] +pub enum FlowsExecutorGetError { + Status400(models::ValidationError), + Status403(models::GenericError), + UnknownValue(serde_json::Value), +} + +/// struct for typed errors of method [`flows_executor_solve`] +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(untagged)] +pub enum FlowsExecutorSolveError { + Status400(models::ValidationError), + Status403(models::GenericError), + UnknownValue(serde_json::Value), +} + +/// Get the next pending challenge from the currently active flow. +pub async fn flows_executor_get( + configuration: &configuration::Configuration, + flow_slug: &str, + query: &str, +) -> Result> { + // add a prefix to parameters to efficiently prevent name collisions + let p_path_flow_slug = flow_slug; + let p_query_query = query; + + let uri_str = format!( + "{}/flows/executor/{flow_slug}/", + configuration.base_path, + flow_slug = crate::apis::urlencode(p_path_flow_slug) + ); + let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str); + + req_builder = req_builder.query(&[("query", &p_query_query.to_string())]); + if let Some(ref user_agent) = configuration.user_agent { + req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone()); + } + if let Some(ref token) = configuration.bearer_access_token { + req_builder = req_builder.bearer_auth(token.to_owned()); + }; + + let req = req_builder.build()?; + let resp = configuration.client.execute(req).await?; + + let status = resp.status(); + let content_type = resp + .headers() + .get("content-type") + .and_then(|v| v.to_str().ok()) + .unwrap_or("application/octet-stream"); + let content_type = super::ContentType::from(content_type); + + if !status.is_client_error() && !status.is_server_error() { + let content = resp.text().await?; + match content_type { + ContentType::Json => serde_json::from_str(&content).map_err(Error::from), + ContentType::Text => { + return Err(Error::from(serde_json::Error::custom( + "Received `text/plain` content type response that cannot be converted to \ + `models::ChallengeTypes`", + ))); + } + ContentType::Unsupported(unknown_type) => { + return Err(Error::from(serde_json::Error::custom(format!( + "Received `{unknown_type}` content type response that cannot be converted to \ + `models::ChallengeTypes`" + )))); + } + } + } else { + let content = resp.text().await?; + let entity: Option = serde_json::from_str(&content).ok(); + Err(Error::ResponseError(ResponseContent { + status, + content, + entity, + })) + } +} + +/// Solve the previously retrieved challenge and advanced to the next stage. +pub async fn flows_executor_solve( + configuration: &configuration::Configuration, + flow_slug: &str, + query: &str, + flow_challenge_response_request: Option, +) -> Result> { + // add a prefix to parameters to efficiently prevent name collisions + let p_path_flow_slug = flow_slug; + let p_query_query = query; + let p_body_flow_challenge_response_request = flow_challenge_response_request; + + let uri_str = format!( + "{}/flows/executor/{flow_slug}/", + configuration.base_path, + flow_slug = crate::apis::urlencode(p_path_flow_slug) + ); + let mut req_builder = configuration + .client + .request(reqwest::Method::POST, &uri_str); + + req_builder = req_builder.query(&[("query", &p_query_query.to_string())]); + if let Some(ref user_agent) = configuration.user_agent { + req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone()); + } + if let Some(ref token) = configuration.bearer_access_token { + req_builder = req_builder.bearer_auth(token.to_owned()); + }; + req_builder = req_builder.json(&p_body_flow_challenge_response_request); + + let req = req_builder.build()?; + let resp = configuration.client.execute(req).await?; + + let status = resp.status(); + let content_type = resp + .headers() + .get("content-type") + .and_then(|v| v.to_str().ok()) + .unwrap_or("application/octet-stream"); + let content_type = super::ContentType::from(content_type); + + if !status.is_client_error() && !status.is_server_error() { + let content = resp.text().await?; + match content_type { + ContentType::Json => serde_json::from_str(&content).map_err(Error::from), + ContentType::Text => { + return Err(Error::from(serde_json::Error::custom( + "Received `text/plain` content type response that cannot be converted to \ + `models::ChallengeTypes`", + ))); + } + ContentType::Unsupported(unknown_type) => { + return Err(Error::from(serde_json::Error::custom(format!( + "Received `{unknown_type}` content type response that cannot be converted to \ + `models::ChallengeTypes`" + )))); + } + } + } else { + let content = resp.text().await?; + let entity: Option = serde_json::from_str(&content).ok(); + Err(Error::ResponseError(ResponseContent { + status, + content, + entity, + })) + } +} diff --git a/packages/client-rust/src/apis/mod.rs b/packages/client-rust/src/apis/mod.rs new file mode 100644 index 0000000000..ed22e46ddb --- /dev/null +++ b/packages/client-rust/src/apis/mod.rs @@ -0,0 +1,131 @@ +use std::{error, fmt}; + +#[derive(Debug, Clone)] +pub struct ResponseContent { + pub status: reqwest::StatusCode, + pub content: String, + pub entity: Option, +} + +#[derive(Debug)] +pub enum Error { + Reqwest(reqwest::Error), + ReqwestMiddleware(reqwest_middleware::Error), + Serde(serde_json::Error), + Io(std::io::Error), + ResponseError(ResponseContent), +} + +impl fmt::Display for Error { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + let (module, e) = match self { + Error::Reqwest(e) => ("reqwest", e.to_string()), + Error::ReqwestMiddleware(e) => ("reqwest-middleware", e.to_string()), + Error::Serde(e) => ("serde", e.to_string()), + Error::Io(e) => ("IO", e.to_string()), + Error::ResponseError(e) => ("response", format!("status code {}", e.status)), + }; + write!(f, "error in {}: {}", module, e) + } +} + +impl error::Error for Error { + fn source(&self) -> Option<&(dyn error::Error + 'static)> { + Some(match self { + Error::Reqwest(e) => e, + Error::ReqwestMiddleware(e) => e, + Error::Serde(e) => e, + Error::Io(e) => e, + Error::ResponseError(_) => return None, + }) + } +} + +impl From for Error { + fn from(e: reqwest::Error) -> Self { + Error::Reqwest(e) + } +} + +impl From for Error { + fn from(e: reqwest_middleware::Error) -> Self { + Error::ReqwestMiddleware(e) + } +} + +impl From for Error { + fn from(e: serde_json::Error) -> Self { + Error::Serde(e) + } +} + +impl From for Error { + fn from(e: std::io::Error) -> Self { + Error::Io(e) + } +} + +pub fn urlencode>(s: T) -> String { + ::url::form_urlencoded::byte_serialize(s.as_ref().as_bytes()).collect() +} + +pub fn parse_deep_object(prefix: &str, value: &serde_json::Value) -> Vec<(String, String)> { + if let serde_json::Value::Object(object) = value { + let mut params = vec![]; + + for (key, value) in object { + match value { + serde_json::Value::Object(_) => params.append(&mut parse_deep_object( + &format!("{}[{}]", prefix, key), + value, + )), + serde_json::Value::Array(array) => { + for (i, value) in array.iter().enumerate() { + params.append(&mut parse_deep_object( + &format!("{}[{}][{}]", prefix, key, i), + value, + )); + } + } + serde_json::Value::String(s) => { + params.push((format!("{}[{}]", prefix, key), s.clone())) + } + _ => params.push((format!("{}[{}]", prefix, key), value.to_string())), + } + } + + return params; + } + + unimplemented!("Only objects are supported with style=deepObject") +} + +/// Internal use only +/// A content type supported by this client. +#[allow(dead_code)] +enum ContentType { + Json, + Text, + Unsupported(String), +} + +impl From<&str> for ContentType { + fn from(content_type: &str) -> Self { + if content_type.starts_with("application") && content_type.contains("json") { + return Self::Json; + } else if content_type.starts_with("text/plain") { + return Self::Text; + } else { + return Self::Unsupported(content_type.to_string()); + } + } +} + +pub mod core_api; +pub mod crypto_api; +pub mod events_api; +pub mod flows_api; +pub mod outposts_api; +pub mod root_api; + +pub mod configuration; diff --git a/packages/client-rust/src/apis/outposts_api.rs b/packages/client-rust/src/apis/outposts_api.rs new file mode 100644 index 0000000000..ef768558d8 --- /dev/null +++ b/packages/client-rust/src/apis/outposts_api.rs @@ -0,0 +1,574 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use reqwest; +use serde::{Deserialize, Serialize, de::Error as _}; + +use super::{ContentType, Error, configuration}; +use crate::{apis::ResponseContent, models}; + +/// struct for typed errors of method [`outposts_instances_list`] +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(untagged)] +pub enum OutpostsInstancesListError { + Status400(models::ValidationError), + Status403(models::GenericError), + UnknownValue(serde_json::Value), +} + +/// struct for typed errors of method [`outposts_ldap_access_check`] +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(untagged)] +pub enum OutpostsLdapAccessCheckError { + Status400(models::ValidationError), + Status403(models::GenericError), + UnknownValue(serde_json::Value), +} + +/// struct for typed errors of method [`outposts_ldap_list`] +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(untagged)] +pub enum OutpostsLdapListError { + Status400(models::ValidationError), + Status403(models::GenericError), + UnknownValue(serde_json::Value), +} + +/// struct for typed errors of method [`outposts_proxy_list`] +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(untagged)] +pub enum OutpostsProxyListError { + Status400(models::ValidationError), + Status403(models::GenericError), + UnknownValue(serde_json::Value), +} + +/// struct for typed errors of method [`outposts_radius_access_check`] +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(untagged)] +pub enum OutpostsRadiusAccessCheckError { + Status400(models::ValidationError), + Status403(models::GenericError), + UnknownValue(serde_json::Value), +} + +/// struct for typed errors of method [`outposts_radius_list`] +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(untagged)] +pub enum OutpostsRadiusListError { + Status400(models::ValidationError), + Status403(models::GenericError), + UnknownValue(serde_json::Value), +} + +/// Outpost Viewset +pub async fn outposts_instances_list( + configuration: &configuration::Configuration, + managed__icontains: Option<&str>, + managed__iexact: Option<&str>, + name__icontains: Option<&str>, + name__iexact: Option<&str>, + ordering: Option<&str>, + page: Option, + page_size: Option, + providers__isnull: Option, + providers_by_pk: Option>, + search: Option<&str>, + service_connection__name__icontains: Option<&str>, + service_connection__name__iexact: Option<&str>, +) -> Result> { + // add a prefix to parameters to efficiently prevent name collisions + let p_query_managed__icontains = managed__icontains; + let p_query_managed__iexact = managed__iexact; + let p_query_name__icontains = name__icontains; + let p_query_name__iexact = name__iexact; + let p_query_ordering = ordering; + let p_query_page = page; + let p_query_page_size = page_size; + let p_query_providers__isnull = providers__isnull; + let p_query_providers_by_pk = providers_by_pk; + let p_query_search = search; + let p_query_service_connection__name__icontains = service_connection__name__icontains; + let p_query_service_connection__name__iexact = service_connection__name__iexact; + + let uri_str = format!("{}/outposts/instances/", configuration.base_path); + let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str); + + if let Some(ref param_value) = p_query_managed__icontains { + req_builder = req_builder.query(&[("managed__icontains", ¶m_value.to_string())]); + } + if let Some(ref param_value) = p_query_managed__iexact { + req_builder = req_builder.query(&[("managed__iexact", ¶m_value.to_string())]); + } + if let Some(ref param_value) = p_query_name__icontains { + req_builder = req_builder.query(&[("name__icontains", ¶m_value.to_string())]); + } + if let Some(ref param_value) = p_query_name__iexact { + req_builder = req_builder.query(&[("name__iexact", ¶m_value.to_string())]); + } + if let Some(ref param_value) = p_query_ordering { + req_builder = req_builder.query(&[("ordering", ¶m_value.to_string())]); + } + if let Some(ref param_value) = p_query_page { + req_builder = req_builder.query(&[("page", ¶m_value.to_string())]); + } + if let Some(ref param_value) = p_query_page_size { + req_builder = req_builder.query(&[("page_size", ¶m_value.to_string())]); + } + if let Some(ref param_value) = p_query_providers__isnull { + req_builder = req_builder.query(&[("providers__isnull", ¶m_value.to_string())]); + } + if let Some(ref param_value) = p_query_providers_by_pk { + req_builder = match "multi" { + "multi" => req_builder.query( + ¶m_value + .into_iter() + .map(|p| ("providers_by_pk".to_owned(), p.to_string())) + .collect::>(), + ), + _ => req_builder.query(&[( + "providers_by_pk", + ¶m_value + .into_iter() + .map(|p| p.to_string()) + .collect::>() + .join(",") + .to_string(), + )]), + }; + } + if let Some(ref param_value) = p_query_search { + req_builder = req_builder.query(&[("search", ¶m_value.to_string())]); + } + if let Some(ref param_value) = p_query_service_connection__name__icontains { + req_builder = req_builder.query(&[( + "service_connection__name__icontains", + ¶m_value.to_string(), + )]); + } + if let Some(ref param_value) = p_query_service_connection__name__iexact { + req_builder = + req_builder.query(&[("service_connection__name__iexact", ¶m_value.to_string())]); + } + if let Some(ref user_agent) = configuration.user_agent { + req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone()); + } + if let Some(ref token) = configuration.bearer_access_token { + req_builder = req_builder.bearer_auth(token.to_owned()); + }; + + let req = req_builder.build()?; + let resp = configuration.client.execute(req).await?; + + let status = resp.status(); + let content_type = resp + .headers() + .get("content-type") + .and_then(|v| v.to_str().ok()) + .unwrap_or("application/octet-stream"); + let content_type = super::ContentType::from(content_type); + + if !status.is_client_error() && !status.is_server_error() { + let content = resp.text().await?; + match content_type { + ContentType::Json => serde_json::from_str(&content).map_err(Error::from), + ContentType::Text => { + return Err(Error::from(serde_json::Error::custom( + "Received `text/plain` content type response that cannot be converted to \ + `models::PaginatedOutpostList`", + ))); + } + ContentType::Unsupported(unknown_type) => { + return Err(Error::from(serde_json::Error::custom(format!( + "Received `{unknown_type}` content type response that cannot be converted to \ + `models::PaginatedOutpostList`" + )))); + } + } + } else { + let content = resp.text().await?; + let entity: Option = serde_json::from_str(&content).ok(); + Err(Error::ResponseError(ResponseContent { + status, + content, + entity, + })) + } +} + +/// Check access to a single application by slug +pub async fn outposts_ldap_access_check( + configuration: &configuration::Configuration, + id: i32, + app_slug: Option<&str>, +) -> Result> { + // add a prefix to parameters to efficiently prevent name collisions + let p_path_id = id; + let p_query_app_slug = app_slug; + + let uri_str = format!( + "{}/outposts/ldap/{id}/check_access/", + configuration.base_path, + id = p_path_id + ); + let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str); + + if let Some(ref param_value) = p_query_app_slug { + req_builder = req_builder.query(&[("app_slug", ¶m_value.to_string())]); + } + if let Some(ref user_agent) = configuration.user_agent { + req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone()); + } + if let Some(ref token) = configuration.bearer_access_token { + req_builder = req_builder.bearer_auth(token.to_owned()); + }; + + let req = req_builder.build()?; + let resp = configuration.client.execute(req).await?; + + let status = resp.status(); + let content_type = resp + .headers() + .get("content-type") + .and_then(|v| v.to_str().ok()) + .unwrap_or("application/octet-stream"); + let content_type = super::ContentType::from(content_type); + + if !status.is_client_error() && !status.is_server_error() { + let content = resp.text().await?; + match content_type { + ContentType::Json => serde_json::from_str(&content).map_err(Error::from), + ContentType::Text => { + return Err(Error::from(serde_json::Error::custom( + "Received `text/plain` content type response that cannot be converted to \ + `models::LdapCheckAccess`", + ))); + } + ContentType::Unsupported(unknown_type) => { + return Err(Error::from(serde_json::Error::custom(format!( + "Received `{unknown_type}` content type response that cannot be converted to \ + `models::LdapCheckAccess`" + )))); + } + } + } else { + let content = resp.text().await?; + let entity: Option = serde_json::from_str(&content).ok(); + Err(Error::ResponseError(ResponseContent { + status, + content, + entity, + })) + } +} + +/// LDAPProvider Viewset +pub async fn outposts_ldap_list( + configuration: &configuration::Configuration, + name: Option<&str>, + ordering: Option<&str>, + page: Option, + page_size: Option, + search: Option<&str>, +) -> Result> { + // add a prefix to parameters to efficiently prevent name collisions + let p_query_name = name; + let p_query_ordering = ordering; + let p_query_page = page; + let p_query_page_size = page_size; + let p_query_search = search; + + let uri_str = format!("{}/outposts/ldap/", configuration.base_path); + let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str); + + if let Some(ref param_value) = p_query_name { + req_builder = req_builder.query(&[("name", ¶m_value.to_string())]); + } + if let Some(ref param_value) = p_query_ordering { + req_builder = req_builder.query(&[("ordering", ¶m_value.to_string())]); + } + if let Some(ref param_value) = p_query_page { + req_builder = req_builder.query(&[("page", ¶m_value.to_string())]); + } + if let Some(ref param_value) = p_query_page_size { + req_builder = req_builder.query(&[("page_size", ¶m_value.to_string())]); + } + if let Some(ref param_value) = p_query_search { + req_builder = req_builder.query(&[("search", ¶m_value.to_string())]); + } + if let Some(ref user_agent) = configuration.user_agent { + req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone()); + } + if let Some(ref token) = configuration.bearer_access_token { + req_builder = req_builder.bearer_auth(token.to_owned()); + }; + + let req = req_builder.build()?; + let resp = configuration.client.execute(req).await?; + + let status = resp.status(); + let content_type = resp + .headers() + .get("content-type") + .and_then(|v| v.to_str().ok()) + .unwrap_or("application/octet-stream"); + let content_type = super::ContentType::from(content_type); + + if !status.is_client_error() && !status.is_server_error() { + let content = resp.text().await?; + match content_type { + ContentType::Json => serde_json::from_str(&content).map_err(Error::from), + ContentType::Text => { + return Err(Error::from(serde_json::Error::custom( + "Received `text/plain` content type response that cannot be converted to \ + `models::PaginatedLdapOutpostConfigList`", + ))); + } + ContentType::Unsupported(unknown_type) => { + return Err(Error::from(serde_json::Error::custom(format!( + "Received `{unknown_type}` content type response that cannot be converted to \ + `models::PaginatedLdapOutpostConfigList`" + )))); + } + } + } else { + let content = resp.text().await?; + let entity: Option = serde_json::from_str(&content).ok(); + Err(Error::ResponseError(ResponseContent { + status, + content, + entity, + })) + } +} + +/// ProxyProvider Viewset +pub async fn outposts_proxy_list( + configuration: &configuration::Configuration, + name: Option<&str>, + ordering: Option<&str>, + page: Option, + page_size: Option, + search: Option<&str>, +) -> Result> { + // add a prefix to parameters to efficiently prevent name collisions + let p_query_name = name; + let p_query_ordering = ordering; + let p_query_page = page; + let p_query_page_size = page_size; + let p_query_search = search; + + let uri_str = format!("{}/outposts/proxy/", configuration.base_path); + let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str); + + if let Some(ref param_value) = p_query_name { + req_builder = req_builder.query(&[("name", ¶m_value.to_string())]); + } + if let Some(ref param_value) = p_query_ordering { + req_builder = req_builder.query(&[("ordering", ¶m_value.to_string())]); + } + if let Some(ref param_value) = p_query_page { + req_builder = req_builder.query(&[("page", ¶m_value.to_string())]); + } + if let Some(ref param_value) = p_query_page_size { + req_builder = req_builder.query(&[("page_size", ¶m_value.to_string())]); + } + if let Some(ref param_value) = p_query_search { + req_builder = req_builder.query(&[("search", ¶m_value.to_string())]); + } + if let Some(ref user_agent) = configuration.user_agent { + req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone()); + } + if let Some(ref token) = configuration.bearer_access_token { + req_builder = req_builder.bearer_auth(token.to_owned()); + }; + + let req = req_builder.build()?; + let resp = configuration.client.execute(req).await?; + + let status = resp.status(); + let content_type = resp + .headers() + .get("content-type") + .and_then(|v| v.to_str().ok()) + .unwrap_or("application/octet-stream"); + let content_type = super::ContentType::from(content_type); + + if !status.is_client_error() && !status.is_server_error() { + let content = resp.text().await?; + match content_type { + ContentType::Json => serde_json::from_str(&content).map_err(Error::from), + ContentType::Text => { + return Err(Error::from(serde_json::Error::custom( + "Received `text/plain` content type response that cannot be converted to \ + `models::PaginatedProxyOutpostConfigList`", + ))); + } + ContentType::Unsupported(unknown_type) => { + return Err(Error::from(serde_json::Error::custom(format!( + "Received `{unknown_type}` content type response that cannot be converted to \ + `models::PaginatedProxyOutpostConfigList`" + )))); + } + } + } else { + let content = resp.text().await?; + let entity: Option = serde_json::from_str(&content).ok(); + Err(Error::ResponseError(ResponseContent { + status, + content, + entity, + })) + } +} + +/// Check access to a single application by slug +pub async fn outposts_radius_access_check( + configuration: &configuration::Configuration, + id: i32, + app_slug: Option<&str>, +) -> Result> { + // add a prefix to parameters to efficiently prevent name collisions + let p_path_id = id; + let p_query_app_slug = app_slug; + + let uri_str = format!( + "{}/outposts/radius/{id}/check_access/", + configuration.base_path, + id = p_path_id + ); + let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str); + + if let Some(ref param_value) = p_query_app_slug { + req_builder = req_builder.query(&[("app_slug", ¶m_value.to_string())]); + } + if let Some(ref user_agent) = configuration.user_agent { + req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone()); + } + if let Some(ref token) = configuration.bearer_access_token { + req_builder = req_builder.bearer_auth(token.to_owned()); + }; + + let req = req_builder.build()?; + let resp = configuration.client.execute(req).await?; + + let status = resp.status(); + let content_type = resp + .headers() + .get("content-type") + .and_then(|v| v.to_str().ok()) + .unwrap_or("application/octet-stream"); + let content_type = super::ContentType::from(content_type); + + if !status.is_client_error() && !status.is_server_error() { + let content = resp.text().await?; + match content_type { + ContentType::Json => serde_json::from_str(&content).map_err(Error::from), + ContentType::Text => { + return Err(Error::from(serde_json::Error::custom( + "Received `text/plain` content type response that cannot be converted to \ + `models::RadiusCheckAccess`", + ))); + } + ContentType::Unsupported(unknown_type) => { + return Err(Error::from(serde_json::Error::custom(format!( + "Received `{unknown_type}` content type response that cannot be converted to \ + `models::RadiusCheckAccess`" + )))); + } + } + } else { + let content = resp.text().await?; + let entity: Option = serde_json::from_str(&content).ok(); + Err(Error::ResponseError(ResponseContent { + status, + content, + entity, + })) + } +} + +/// RadiusProvider Viewset +pub async fn outposts_radius_list( + configuration: &configuration::Configuration, + name: Option<&str>, + ordering: Option<&str>, + page: Option, + page_size: Option, + search: Option<&str>, +) -> Result> { + // add a prefix to parameters to efficiently prevent name collisions + let p_query_name = name; + let p_query_ordering = ordering; + let p_query_page = page; + let p_query_page_size = page_size; + let p_query_search = search; + + let uri_str = format!("{}/outposts/radius/", configuration.base_path); + let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str); + + if let Some(ref param_value) = p_query_name { + req_builder = req_builder.query(&[("name", ¶m_value.to_string())]); + } + if let Some(ref param_value) = p_query_ordering { + req_builder = req_builder.query(&[("ordering", ¶m_value.to_string())]); + } + if let Some(ref param_value) = p_query_page { + req_builder = req_builder.query(&[("page", ¶m_value.to_string())]); + } + if let Some(ref param_value) = p_query_page_size { + req_builder = req_builder.query(&[("page_size", ¶m_value.to_string())]); + } + if let Some(ref param_value) = p_query_search { + req_builder = req_builder.query(&[("search", ¶m_value.to_string())]); + } + if let Some(ref user_agent) = configuration.user_agent { + req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone()); + } + if let Some(ref token) = configuration.bearer_access_token { + req_builder = req_builder.bearer_auth(token.to_owned()); + }; + + let req = req_builder.build()?; + let resp = configuration.client.execute(req).await?; + + let status = resp.status(); + let content_type = resp + .headers() + .get("content-type") + .and_then(|v| v.to_str().ok()) + .unwrap_or("application/octet-stream"); + let content_type = super::ContentType::from(content_type); + + if !status.is_client_error() && !status.is_server_error() { + let content = resp.text().await?; + match content_type { + ContentType::Json => serde_json::from_str(&content).map_err(Error::from), + ContentType::Text => { + return Err(Error::from(serde_json::Error::custom( + "Received `text/plain` content type response that cannot be converted to \ + `models::PaginatedRadiusOutpostConfigList`", + ))); + } + ContentType::Unsupported(unknown_type) => { + return Err(Error::from(serde_json::Error::custom(format!( + "Received `{unknown_type}` content type response that cannot be converted to \ + `models::PaginatedRadiusOutpostConfigList`" + )))); + } + } + } else { + let content = resp.text().await?; + let entity: Option = serde_json::from_str(&content).ok(); + Err(Error::ResponseError(ResponseContent { + status, + content, + entity, + })) + } +} diff --git a/packages/client-rust/src/apis/root_api.rs b/packages/client-rust/src/apis/root_api.rs new file mode 100644 index 0000000000..a3ead5cc3c --- /dev/null +++ b/packages/client-rust/src/apis/root_api.rs @@ -0,0 +1,75 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use reqwest; +use serde::{Deserialize, Serialize, de::Error as _}; + +use super::{ContentType, Error, configuration}; +use crate::{apis::ResponseContent, models}; + +/// struct for typed errors of method [`root_config_retrieve`] +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(untagged)] +pub enum RootConfigRetrieveError { + Status400(models::ValidationError), + Status403(models::GenericError), + UnknownValue(serde_json::Value), +} + +/// Retrieve public configuration options +pub async fn root_config_retrieve( + configuration: &configuration::Configuration, +) -> Result> { + let uri_str = format!("{}/root/config/", configuration.base_path); + let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str); + + if let Some(ref user_agent) = configuration.user_agent { + req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone()); + } + if let Some(ref token) = configuration.bearer_access_token { + req_builder = req_builder.bearer_auth(token.to_owned()); + }; + + let req = req_builder.build()?; + let resp = configuration.client.execute(req).await?; + + let status = resp.status(); + let content_type = resp + .headers() + .get("content-type") + .and_then(|v| v.to_str().ok()) + .unwrap_or("application/octet-stream"); + let content_type = super::ContentType::from(content_type); + + if !status.is_client_error() && !status.is_server_error() { + let content = resp.text().await?; + match content_type { + ContentType::Json => serde_json::from_str(&content).map_err(Error::from), + ContentType::Text => { + return Err(Error::from(serde_json::Error::custom( + "Received `text/plain` content type response that cannot be converted to \ + `models::Config`", + ))); + } + ContentType::Unsupported(unknown_type) => { + return Err(Error::from(serde_json::Error::custom(format!( + "Received `{unknown_type}` content type response that cannot be converted to \ + `models::Config`" + )))); + } + } + } else { + let content = resp.text().await?; + let entity: Option = serde_json::from_str(&content).ok(); + Err(Error::ResponseError(ResponseContent { + status, + content, + entity, + })) + } +} diff --git a/packages/client-rust/src/lib.rs b/packages/client-rust/src/lib.rs new file mode 100644 index 0000000000..9556a0a134 --- /dev/null +++ b/packages/client-rust/src/lib.rs @@ -0,0 +1,11 @@ +#![allow(unused_imports)] +#![allow(clippy::too_many_arguments)] + +extern crate reqwest; +extern crate serde; +extern crate serde_json; +extern crate serde_repr; +extern crate url; + +pub mod apis; +pub mod models; diff --git a/packages/client-rust/src/models/access_denied_challenge.rs b/packages/client-rust/src/models/access_denied_challenge.rs new file mode 100644 index 0000000000..f24e2ff516 --- /dev/null +++ b/packages/client-rust/src/models/access_denied_challenge.rs @@ -0,0 +1,42 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// AccessDeniedChallenge : Challenge when a flow's active stage calls `stage_invalid()`. +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct AccessDeniedChallenge { + #[serde(rename = "flow_info", skip_serializing_if = "Option::is_none")] + pub flow_info: Option, + #[serde(rename = "component", skip_serializing_if = "Option::is_none")] + pub component: Option, + #[serde(rename = "response_errors", skip_serializing_if = "Option::is_none")] + pub response_errors: Option>>, + #[serde(rename = "pending_user")] + pub pending_user: String, + #[serde(rename = "pending_user_avatar")] + pub pending_user_avatar: String, + #[serde(rename = "error_message", skip_serializing_if = "Option::is_none")] + pub error_message: Option, +} + +impl AccessDeniedChallenge { + /// Challenge when a flow's active stage calls `stage_invalid()`. + pub fn new(pending_user: String, pending_user_avatar: String) -> AccessDeniedChallenge { + AccessDeniedChallenge { + flow_info: None, + component: None, + response_errors: None, + pending_user, + pending_user_avatar, + error_message: None, + } + } +} diff --git a/packages/client-rust/src/models/apple_challenge_response_request.rs b/packages/client-rust/src/models/apple_challenge_response_request.rs new file mode 100644 index 0000000000..78792cf4fd --- /dev/null +++ b/packages/client-rust/src/models/apple_challenge_response_request.rs @@ -0,0 +1,25 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// AppleChallengeResponseRequest : Pseudo class for apple response +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct AppleChallengeResponseRequest { + #[serde(rename = "component", skip_serializing_if = "Option::is_none")] + pub component: Option, +} + +impl AppleChallengeResponseRequest { + /// Pseudo class for apple response + pub fn new() -> AppleChallengeResponseRequest { + AppleChallengeResponseRequest { component: None } + } +} diff --git a/packages/client-rust/src/models/apple_login_challenge.rs b/packages/client-rust/src/models/apple_login_challenge.rs new file mode 100644 index 0000000000..853a4a77d0 --- /dev/null +++ b/packages/client-rust/src/models/apple_login_challenge.rs @@ -0,0 +1,51 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// AppleLoginChallenge : Special challenge for apple-native authentication flow, which happens on +/// the client. +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct AppleLoginChallenge { + #[serde(rename = "flow_info", skip_serializing_if = "Option::is_none")] + pub flow_info: Option, + #[serde(rename = "component", skip_serializing_if = "Option::is_none")] + pub component: Option, + #[serde(rename = "response_errors", skip_serializing_if = "Option::is_none")] + pub response_errors: Option>>, + #[serde(rename = "client_id")] + pub client_id: String, + #[serde(rename = "scope")] + pub scope: String, + #[serde(rename = "redirect_uri")] + pub redirect_uri: String, + #[serde(rename = "state")] + pub state: String, +} + +impl AppleLoginChallenge { + /// Special challenge for apple-native authentication flow, which happens on the client. + pub fn new( + client_id: String, + scope: String, + redirect_uri: String, + state: String, + ) -> AppleLoginChallenge { + AppleLoginChallenge { + flow_info: None, + component: None, + response_errors: None, + client_id, + scope, + redirect_uri, + state, + } + } +} diff --git a/packages/client-rust/src/models/authenticator_duo_challenge.rs b/packages/client-rust/src/models/authenticator_duo_challenge.rs new file mode 100644 index 0000000000..f779f44b5b --- /dev/null +++ b/packages/client-rust/src/models/authenticator_duo_challenge.rs @@ -0,0 +1,54 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// AuthenticatorDuoChallenge : Duo Challenge +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct AuthenticatorDuoChallenge { + #[serde(rename = "flow_info", skip_serializing_if = "Option::is_none")] + pub flow_info: Option, + #[serde(rename = "component", skip_serializing_if = "Option::is_none")] + pub component: Option, + #[serde(rename = "response_errors", skip_serializing_if = "Option::is_none")] + pub response_errors: Option>>, + #[serde(rename = "pending_user")] + pub pending_user: String, + #[serde(rename = "pending_user_avatar")] + pub pending_user_avatar: String, + #[serde(rename = "activation_barcode")] + pub activation_barcode: String, + #[serde(rename = "activation_code")] + pub activation_code: String, + #[serde(rename = "stage_uuid")] + pub stage_uuid: String, +} + +impl AuthenticatorDuoChallenge { + /// Duo Challenge + pub fn new( + pending_user: String, + pending_user_avatar: String, + activation_barcode: String, + activation_code: String, + stage_uuid: String, + ) -> AuthenticatorDuoChallenge { + AuthenticatorDuoChallenge { + flow_info: None, + component: None, + response_errors: None, + pending_user, + pending_user_avatar, + activation_barcode, + activation_code, + stage_uuid, + } + } +} diff --git a/packages/client-rust/src/models/authenticator_duo_challenge_response_request.rs b/packages/client-rust/src/models/authenticator_duo_challenge_response_request.rs new file mode 100644 index 0000000000..926362c6a9 --- /dev/null +++ b/packages/client-rust/src/models/authenticator_duo_challenge_response_request.rs @@ -0,0 +1,25 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// AuthenticatorDuoChallengeResponseRequest : Pseudo class for duo response +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct AuthenticatorDuoChallengeResponseRequest { + #[serde(rename = "component", skip_serializing_if = "Option::is_none")] + pub component: Option, +} + +impl AuthenticatorDuoChallengeResponseRequest { + /// Pseudo class for duo response + pub fn new() -> AuthenticatorDuoChallengeResponseRequest { + AuthenticatorDuoChallengeResponseRequest { component: None } + } +} diff --git a/packages/client-rust/src/models/authenticator_email_challenge.rs b/packages/client-rust/src/models/authenticator_email_challenge.rs new file mode 100644 index 0000000000..2a1e09fb1a --- /dev/null +++ b/packages/client-rust/src/models/authenticator_email_challenge.rs @@ -0,0 +1,50 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// AuthenticatorEmailChallenge : Authenticator Email Setup challenge +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct AuthenticatorEmailChallenge { + #[serde(rename = "flow_info", skip_serializing_if = "Option::is_none")] + pub flow_info: Option, + #[serde(rename = "component", skip_serializing_if = "Option::is_none")] + pub component: Option, + #[serde(rename = "response_errors", skip_serializing_if = "Option::is_none")] + pub response_errors: Option>>, + #[serde(rename = "pending_user")] + pub pending_user: String, + #[serde(rename = "pending_user_avatar")] + pub pending_user_avatar: String, + #[serde( + rename = "email", + default, + with = "::serde_with::rust::double_option", + skip_serializing_if = "Option::is_none" + )] + pub email: Option>, + #[serde(rename = "email_required", skip_serializing_if = "Option::is_none")] + pub email_required: Option, +} + +impl AuthenticatorEmailChallenge { + /// Authenticator Email Setup challenge + pub fn new(pending_user: String, pending_user_avatar: String) -> AuthenticatorEmailChallenge { + AuthenticatorEmailChallenge { + flow_info: None, + component: None, + response_errors: None, + pending_user, + pending_user_avatar, + email: None, + email_required: None, + } + } +} diff --git a/packages/client-rust/src/models/authenticator_email_challenge_response_request.rs b/packages/client-rust/src/models/authenticator_email_challenge_response_request.rs new file mode 100644 index 0000000000..c7c9e01f7f --- /dev/null +++ b/packages/client-rust/src/models/authenticator_email_challenge_response_request.rs @@ -0,0 +1,34 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// AuthenticatorEmailChallengeResponseRequest : Authenticator Email Challenge response, device is +/// set by get_response_instance +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct AuthenticatorEmailChallengeResponseRequest { + #[serde(rename = "component", skip_serializing_if = "Option::is_none")] + pub component: Option, + #[serde(rename = "code", skip_serializing_if = "Option::is_none")] + pub code: Option, + #[serde(rename = "email", skip_serializing_if = "Option::is_none")] + pub email: Option, +} + +impl AuthenticatorEmailChallengeResponseRequest { + /// Authenticator Email Challenge response, device is set by get_response_instance + pub fn new() -> AuthenticatorEmailChallengeResponseRequest { + AuthenticatorEmailChallengeResponseRequest { + component: None, + code: None, + email: None, + } + } +} diff --git a/packages/client-rust/src/models/authenticator_sms_challenge.rs b/packages/client-rust/src/models/authenticator_sms_challenge.rs new file mode 100644 index 0000000000..b7338cdb9e --- /dev/null +++ b/packages/client-rust/src/models/authenticator_sms_challenge.rs @@ -0,0 +1,45 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// AuthenticatorSmsChallenge : SMS Setup challenge +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct AuthenticatorSmsChallenge { + #[serde(rename = "flow_info", skip_serializing_if = "Option::is_none")] + pub flow_info: Option, + #[serde(rename = "component", skip_serializing_if = "Option::is_none")] + pub component: Option, + #[serde(rename = "response_errors", skip_serializing_if = "Option::is_none")] + pub response_errors: Option>>, + #[serde(rename = "pending_user")] + pub pending_user: String, + #[serde(rename = "pending_user_avatar")] + pub pending_user_avatar: String, + #[serde( + rename = "phone_number_required", + skip_serializing_if = "Option::is_none" + )] + pub phone_number_required: Option, +} + +impl AuthenticatorSmsChallenge { + /// SMS Setup challenge + pub fn new(pending_user: String, pending_user_avatar: String) -> AuthenticatorSmsChallenge { + AuthenticatorSmsChallenge { + flow_info: None, + component: None, + response_errors: None, + pending_user, + pending_user_avatar, + phone_number_required: None, + } + } +} diff --git a/packages/client-rust/src/models/authenticator_sms_challenge_response_request.rs b/packages/client-rust/src/models/authenticator_sms_challenge_response_request.rs new file mode 100644 index 0000000000..2af478da62 --- /dev/null +++ b/packages/client-rust/src/models/authenticator_sms_challenge_response_request.rs @@ -0,0 +1,34 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// AuthenticatorSmsChallengeResponseRequest : SMS Challenge response, device is set by +/// get_response_instance +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct AuthenticatorSmsChallengeResponseRequest { + #[serde(rename = "component", skip_serializing_if = "Option::is_none")] + pub component: Option, + #[serde(rename = "code", skip_serializing_if = "Option::is_none")] + pub code: Option, + #[serde(rename = "phone_number", skip_serializing_if = "Option::is_none")] + pub phone_number: Option, +} + +impl AuthenticatorSmsChallengeResponseRequest { + /// SMS Challenge response, device is set by get_response_instance + pub fn new() -> AuthenticatorSmsChallengeResponseRequest { + AuthenticatorSmsChallengeResponseRequest { + component: None, + code: None, + phone_number: None, + } + } +} diff --git a/packages/client-rust/src/models/authenticator_static_challenge.rs b/packages/client-rust/src/models/authenticator_static_challenge.rs new file mode 100644 index 0000000000..f62d03f4fc --- /dev/null +++ b/packages/client-rust/src/models/authenticator_static_challenge.rs @@ -0,0 +1,46 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// AuthenticatorStaticChallenge : Static authenticator challenge +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct AuthenticatorStaticChallenge { + #[serde(rename = "flow_info", skip_serializing_if = "Option::is_none")] + pub flow_info: Option, + #[serde(rename = "component", skip_serializing_if = "Option::is_none")] + pub component: Option, + #[serde(rename = "response_errors", skip_serializing_if = "Option::is_none")] + pub response_errors: Option>>, + #[serde(rename = "pending_user")] + pub pending_user: String, + #[serde(rename = "pending_user_avatar")] + pub pending_user_avatar: String, + #[serde(rename = "codes")] + pub codes: Vec, +} + +impl AuthenticatorStaticChallenge { + /// Static authenticator challenge + pub fn new( + pending_user: String, + pending_user_avatar: String, + codes: Vec, + ) -> AuthenticatorStaticChallenge { + AuthenticatorStaticChallenge { + flow_info: None, + component: None, + response_errors: None, + pending_user, + pending_user_avatar, + codes, + } + } +} diff --git a/packages/client-rust/src/models/authenticator_static_challenge_response_request.rs b/packages/client-rust/src/models/authenticator_static_challenge_response_request.rs new file mode 100644 index 0000000000..391109a643 --- /dev/null +++ b/packages/client-rust/src/models/authenticator_static_challenge_response_request.rs @@ -0,0 +1,25 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// AuthenticatorStaticChallengeResponseRequest : Pseudo class for static response +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct AuthenticatorStaticChallengeResponseRequest { + #[serde(rename = "component", skip_serializing_if = "Option::is_none")] + pub component: Option, +} + +impl AuthenticatorStaticChallengeResponseRequest { + /// Pseudo class for static response + pub fn new() -> AuthenticatorStaticChallengeResponseRequest { + AuthenticatorStaticChallengeResponseRequest { component: None } + } +} diff --git a/packages/client-rust/src/models/authenticator_totp_challenge.rs b/packages/client-rust/src/models/authenticator_totp_challenge.rs new file mode 100644 index 0000000000..fe9c9a2ec5 --- /dev/null +++ b/packages/client-rust/src/models/authenticator_totp_challenge.rs @@ -0,0 +1,46 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// AuthenticatorTotpChallenge : TOTP Setup challenge +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct AuthenticatorTotpChallenge { + #[serde(rename = "flow_info", skip_serializing_if = "Option::is_none")] + pub flow_info: Option, + #[serde(rename = "component", skip_serializing_if = "Option::is_none")] + pub component: Option, + #[serde(rename = "response_errors", skip_serializing_if = "Option::is_none")] + pub response_errors: Option>>, + #[serde(rename = "pending_user")] + pub pending_user: String, + #[serde(rename = "pending_user_avatar")] + pub pending_user_avatar: String, + #[serde(rename = "config_url")] + pub config_url: String, +} + +impl AuthenticatorTotpChallenge { + /// TOTP Setup challenge + pub fn new( + pending_user: String, + pending_user_avatar: String, + config_url: String, + ) -> AuthenticatorTotpChallenge { + AuthenticatorTotpChallenge { + flow_info: None, + component: None, + response_errors: None, + pending_user, + pending_user_avatar, + config_url, + } + } +} diff --git a/packages/client-rust/src/models/authenticator_totp_challenge_response_request.rs b/packages/client-rust/src/models/authenticator_totp_challenge_response_request.rs new file mode 100644 index 0000000000..c902f7fb29 --- /dev/null +++ b/packages/client-rust/src/models/authenticator_totp_challenge_response_request.rs @@ -0,0 +1,31 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// AuthenticatorTotpChallengeResponseRequest : TOTP Challenge response, device is set by +/// get_response_instance +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct AuthenticatorTotpChallengeResponseRequest { + #[serde(rename = "component", skip_serializing_if = "Option::is_none")] + pub component: Option, + #[serde(rename = "code")] + pub code: String, +} + +impl AuthenticatorTotpChallengeResponseRequest { + /// TOTP Challenge response, device is set by get_response_instance + pub fn new(code: String) -> AuthenticatorTotpChallengeResponseRequest { + AuthenticatorTotpChallengeResponseRequest { + component: None, + code, + } + } +} diff --git a/packages/client-rust/src/models/authenticator_validation_challenge.rs b/packages/client-rust/src/models/authenticator_validation_challenge.rs new file mode 100644 index 0000000000..138c2700e0 --- /dev/null +++ b/packages/client-rust/src/models/authenticator_validation_challenge.rs @@ -0,0 +1,50 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// AuthenticatorValidationChallenge : Authenticator challenge +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct AuthenticatorValidationChallenge { + #[serde(rename = "flow_info", skip_serializing_if = "Option::is_none")] + pub flow_info: Option, + #[serde(rename = "component", skip_serializing_if = "Option::is_none")] + pub component: Option, + #[serde(rename = "response_errors", skip_serializing_if = "Option::is_none")] + pub response_errors: Option>>, + #[serde(rename = "pending_user")] + pub pending_user: String, + #[serde(rename = "pending_user_avatar")] + pub pending_user_avatar: String, + #[serde(rename = "device_challenges")] + pub device_challenges: Vec, + #[serde(rename = "configuration_stages")] + pub configuration_stages: Vec, +} + +impl AuthenticatorValidationChallenge { + /// Authenticator challenge + pub fn new( + pending_user: String, + pending_user_avatar: String, + device_challenges: Vec, + configuration_stages: Vec, + ) -> AuthenticatorValidationChallenge { + AuthenticatorValidationChallenge { + flow_info: None, + component: None, + response_errors: None, + pending_user, + pending_user_avatar, + device_challenges, + configuration_stages, + } + } +} diff --git a/packages/client-rust/src/models/authenticator_validation_challenge_response_request.rs b/packages/client-rust/src/models/authenticator_validation_challenge_response_request.rs new file mode 100644 index 0000000000..2d9a0f49a1 --- /dev/null +++ b/packages/client-rust/src/models/authenticator_validation_challenge_response_request.rs @@ -0,0 +1,43 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// AuthenticatorValidationChallengeResponseRequest : Challenge used for Code-based and WebAuthn +/// authenticators +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct AuthenticatorValidationChallengeResponseRequest { + #[serde(rename = "component", skip_serializing_if = "Option::is_none")] + pub component: Option, + #[serde(rename = "selected_challenge", skip_serializing_if = "Option::is_none")] + pub selected_challenge: Option, + #[serde(rename = "selected_stage", skip_serializing_if = "Option::is_none")] + pub selected_stage: Option, + #[serde(rename = "code", skip_serializing_if = "Option::is_none")] + pub code: Option, + #[serde(rename = "webauthn", skip_serializing_if = "Option::is_none")] + pub webauthn: Option>, + #[serde(rename = "duo", skip_serializing_if = "Option::is_none")] + pub duo: Option, +} + +impl AuthenticatorValidationChallengeResponseRequest { + /// Challenge used for Code-based and WebAuthn authenticators + pub fn new() -> AuthenticatorValidationChallengeResponseRequest { + AuthenticatorValidationChallengeResponseRequest { + component: None, + selected_challenge: None, + selected_stage: None, + code: None, + webauthn: None, + duo: None, + } + } +} diff --git a/packages/client-rust/src/models/authenticator_web_authn_challenge.rs b/packages/client-rust/src/models/authenticator_web_authn_challenge.rs new file mode 100644 index 0000000000..173ddbe9e4 --- /dev/null +++ b/packages/client-rust/src/models/authenticator_web_authn_challenge.rs @@ -0,0 +1,46 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// AuthenticatorWebAuthnChallenge : WebAuthn Challenge +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct AuthenticatorWebAuthnChallenge { + #[serde(rename = "flow_info", skip_serializing_if = "Option::is_none")] + pub flow_info: Option, + #[serde(rename = "component", skip_serializing_if = "Option::is_none")] + pub component: Option, + #[serde(rename = "response_errors", skip_serializing_if = "Option::is_none")] + pub response_errors: Option>>, + #[serde(rename = "pending_user")] + pub pending_user: String, + #[serde(rename = "pending_user_avatar")] + pub pending_user_avatar: String, + #[serde(rename = "registration")] + pub registration: std::collections::HashMap, +} + +impl AuthenticatorWebAuthnChallenge { + /// WebAuthn Challenge + pub fn new( + pending_user: String, + pending_user_avatar: String, + registration: std::collections::HashMap, + ) -> AuthenticatorWebAuthnChallenge { + AuthenticatorWebAuthnChallenge { + flow_info: None, + component: None, + response_errors: None, + pending_user, + pending_user_avatar, + registration, + } + } +} diff --git a/packages/client-rust/src/models/authenticator_web_authn_challenge_response_request.rs b/packages/client-rust/src/models/authenticator_web_authn_challenge_response_request.rs new file mode 100644 index 0000000000..4e9b54837a --- /dev/null +++ b/packages/client-rust/src/models/authenticator_web_authn_challenge_response_request.rs @@ -0,0 +1,32 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// AuthenticatorWebAuthnChallengeResponseRequest : WebAuthn Challenge response +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct AuthenticatorWebAuthnChallengeResponseRequest { + #[serde(rename = "component", skip_serializing_if = "Option::is_none")] + pub component: Option, + #[serde(rename = "response")] + pub response: std::collections::HashMap, +} + +impl AuthenticatorWebAuthnChallengeResponseRequest { + /// WebAuthn Challenge response + pub fn new( + response: std::collections::HashMap, + ) -> AuthenticatorWebAuthnChallengeResponseRequest { + AuthenticatorWebAuthnChallengeResponseRequest { + component: None, + response, + } + } +} diff --git a/packages/client-rust/src/models/auto_submit_challenge_response_request.rs b/packages/client-rust/src/models/auto_submit_challenge_response_request.rs new file mode 100644 index 0000000000..a9d9bb77f5 --- /dev/null +++ b/packages/client-rust/src/models/auto_submit_challenge_response_request.rs @@ -0,0 +1,25 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// AutoSubmitChallengeResponseRequest : Pseudo class for autosubmit response +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct AutoSubmitChallengeResponseRequest { + #[serde(rename = "component", skip_serializing_if = "Option::is_none")] + pub component: Option, +} + +impl AutoSubmitChallengeResponseRequest { + /// Pseudo class for autosubmit response + pub fn new() -> AutoSubmitChallengeResponseRequest { + AutoSubmitChallengeResponseRequest { component: None } + } +} diff --git a/packages/client-rust/src/models/autosubmit_challenge.rs b/packages/client-rust/src/models/autosubmit_challenge.rs new file mode 100644 index 0000000000..6d6d8afb25 --- /dev/null +++ b/packages/client-rust/src/models/autosubmit_challenge.rs @@ -0,0 +1,45 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// AutosubmitChallenge : Autosubmit challenge used to send and navigate a POST request +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct AutosubmitChallenge { + #[serde(rename = "flow_info", skip_serializing_if = "Option::is_none")] + pub flow_info: Option, + #[serde(rename = "component", skip_serializing_if = "Option::is_none")] + pub component: Option, + #[serde(rename = "response_errors", skip_serializing_if = "Option::is_none")] + pub response_errors: Option>>, + #[serde(rename = "url")] + pub url: String, + #[serde(rename = "attrs")] + pub attrs: std::collections::HashMap, + #[serde(rename = "title", skip_serializing_if = "Option::is_none")] + pub title: Option, +} + +impl AutosubmitChallenge { + /// Autosubmit challenge used to send and navigate a POST request + pub fn new( + url: String, + attrs: std::collections::HashMap, + ) -> AutosubmitChallenge { + AutosubmitChallenge { + flow_info: None, + component: None, + response_errors: None, + url, + attrs, + title: None, + } + } +} diff --git a/packages/client-rust/src/models/brand.rs b/packages/client-rust/src/models/brand.rs new file mode 100644 index 0000000000..0d40682aee --- /dev/null +++ b/packages/client-rust/src/models/brand.rs @@ -0,0 +1,139 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// Brand : Brand Serializer +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct Brand { + #[serde(rename = "brand_uuid")] + pub brand_uuid: uuid::Uuid, + /// Domain that activates this brand. Can be a superset, i.e. `a.b` for `aa.b` and `ba.b` + #[serde(rename = "domain")] + pub domain: String, + #[serde(rename = "default", skip_serializing_if = "Option::is_none")] + pub default: Option, + #[serde(rename = "branding_title", skip_serializing_if = "Option::is_none")] + pub branding_title: Option, + #[serde(rename = "branding_logo", skip_serializing_if = "Option::is_none")] + pub branding_logo: Option, + #[serde(rename = "branding_favicon", skip_serializing_if = "Option::is_none")] + pub branding_favicon: Option, + #[serde( + rename = "branding_custom_css", + skip_serializing_if = "Option::is_none" + )] + pub branding_custom_css: Option, + #[serde( + rename = "branding_default_flow_background", + skip_serializing_if = "Option::is_none" + )] + pub branding_default_flow_background: Option, + #[serde( + rename = "flow_authentication", + default, + with = "::serde_with::rust::double_option", + skip_serializing_if = "Option::is_none" + )] + pub flow_authentication: Option>, + #[serde( + rename = "flow_invalidation", + default, + with = "::serde_with::rust::double_option", + skip_serializing_if = "Option::is_none" + )] + pub flow_invalidation: Option>, + #[serde( + rename = "flow_recovery", + default, + with = "::serde_with::rust::double_option", + skip_serializing_if = "Option::is_none" + )] + pub flow_recovery: Option>, + #[serde( + rename = "flow_unenrollment", + default, + with = "::serde_with::rust::double_option", + skip_serializing_if = "Option::is_none" + )] + pub flow_unenrollment: Option>, + #[serde( + rename = "flow_user_settings", + default, + with = "::serde_with::rust::double_option", + skip_serializing_if = "Option::is_none" + )] + pub flow_user_settings: Option>, + #[serde( + rename = "flow_device_code", + default, + with = "::serde_with::rust::double_option", + skip_serializing_if = "Option::is_none" + )] + pub flow_device_code: Option>, + #[serde( + rename = "flow_lockdown", + default, + with = "::serde_with::rust::double_option", + skip_serializing_if = "Option::is_none" + )] + pub flow_lockdown: Option>, + /// When set, external users will be redirected to this application after authenticating. + #[serde( + rename = "default_application", + default, + with = "::serde_with::rust::double_option", + skip_serializing_if = "Option::is_none" + )] + pub default_application: Option>, + /// Web Certificate used by the authentik Core webserver. + #[serde( + rename = "web_certificate", + default, + with = "::serde_with::rust::double_option", + skip_serializing_if = "Option::is_none" + )] + pub web_certificate: Option>, + /// Certificates used for client authentication. + #[serde( + rename = "client_certificates", + skip_serializing_if = "Option::is_none" + )] + pub client_certificates: Option>, + #[serde(rename = "attributes", skip_serializing_if = "Option::is_none")] + pub attributes: Option>, +} + +impl Brand { + /// Brand Serializer + pub fn new(brand_uuid: uuid::Uuid, domain: String) -> Brand { + Brand { + brand_uuid, + domain, + default: None, + branding_title: None, + branding_logo: None, + branding_favicon: None, + branding_custom_css: None, + branding_default_flow_background: None, + flow_authentication: None, + flow_invalidation: None, + flow_recovery: None, + flow_unenrollment: None, + flow_user_settings: None, + flow_device_code: None, + flow_lockdown: None, + default_application: None, + web_certificate: None, + client_certificates: None, + attributes: None, + } + } +} diff --git a/packages/client-rust/src/models/capabilities_enum.rs b/packages/client-rust/src/models/capabilities_enum.rs new file mode 100644 index 0000000000..5671eb644b --- /dev/null +++ b/packages/client-rust/src/models/capabilities_enum.rs @@ -0,0 +1,50 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum CapabilitiesEnum { + #[serde(rename = "can_save_media")] + CanSaveMedia, + #[serde(rename = "can_save_reports")] + CanSaveReports, + #[serde(rename = "can_geo_ip")] + CanGeoIp, + #[serde(rename = "can_asn")] + CanAsn, + #[serde(rename = "can_impersonate")] + CanImpersonate, + #[serde(rename = "can_debug")] + CanDebug, + #[serde(rename = "is_enterprise")] + IsEnterprise, +} + +impl std::fmt::Display for CapabilitiesEnum { + fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { + match self { + Self::CanSaveMedia => write!(f, "can_save_media"), + Self::CanSaveReports => write!(f, "can_save_reports"), + Self::CanGeoIp => write!(f, "can_geo_ip"), + Self::CanAsn => write!(f, "can_asn"), + Self::CanImpersonate => write!(f, "can_impersonate"), + Self::CanDebug => write!(f, "can_debug"), + Self::IsEnterprise => write!(f, "is_enterprise"), + } + } +} + +impl Default for CapabilitiesEnum { + fn default() -> CapabilitiesEnum { + Self::CanSaveMedia + } +} diff --git a/packages/client-rust/src/models/captcha_challenge.rs b/packages/client-rust/src/models/captcha_challenge.rs new file mode 100644 index 0000000000..a9f87122d0 --- /dev/null +++ b/packages/client-rust/src/models/captcha_challenge.rs @@ -0,0 +1,54 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// CaptchaChallenge : Site public key +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct CaptchaChallenge { + #[serde(rename = "flow_info", skip_serializing_if = "Option::is_none")] + pub flow_info: Option, + #[serde(rename = "component", skip_serializing_if = "Option::is_none")] + pub component: Option, + #[serde(rename = "response_errors", skip_serializing_if = "Option::is_none")] + pub response_errors: Option>>, + #[serde(rename = "pending_user")] + pub pending_user: String, + #[serde(rename = "pending_user_avatar")] + pub pending_user_avatar: String, + #[serde(rename = "site_key")] + pub site_key: String, + #[serde(rename = "js_url")] + pub js_url: String, + #[serde(rename = "interactive")] + pub interactive: bool, +} + +impl CaptchaChallenge { + /// Site public key + pub fn new( + pending_user: String, + pending_user_avatar: String, + site_key: String, + js_url: String, + interactive: bool, + ) -> CaptchaChallenge { + CaptchaChallenge { + flow_info: None, + component: None, + response_errors: None, + pending_user, + pending_user_avatar, + site_key, + js_url, + interactive, + } + } +} diff --git a/packages/client-rust/src/models/captcha_challenge_response_request.rs b/packages/client-rust/src/models/captcha_challenge_response_request.rs new file mode 100644 index 0000000000..6ae812b29d --- /dev/null +++ b/packages/client-rust/src/models/captcha_challenge_response_request.rs @@ -0,0 +1,30 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// CaptchaChallengeResponseRequest : Validate captcha token +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct CaptchaChallengeResponseRequest { + #[serde(rename = "component", skip_serializing_if = "Option::is_none")] + pub component: Option, + #[serde(rename = "token")] + pub token: String, +} + +impl CaptchaChallengeResponseRequest { + /// Validate captcha token + pub fn new(token: String) -> CaptchaChallengeResponseRequest { + CaptchaChallengeResponseRequest { + component: None, + token, + } + } +} diff --git a/packages/client-rust/src/models/certificate_data.rs b/packages/client-rust/src/models/certificate_data.rs new file mode 100644 index 0000000000..2860d53db8 --- /dev/null +++ b/packages/client-rust/src/models/certificate_data.rs @@ -0,0 +1,25 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// CertificateData : Get CertificateKeyPair's data +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct CertificateData { + #[serde(rename = "data")] + pub data: String, +} + +impl CertificateData { + /// Get CertificateKeyPair's data + pub fn new(data: String) -> CertificateData { + CertificateData { data } + } +} diff --git a/packages/client-rust/src/models/certificate_key_pair.rs b/packages/client-rust/src/models/certificate_key_pair.rs new file mode 100644 index 0000000000..909ac31dc6 --- /dev/null +++ b/packages/client-rust/src/models/certificate_key_pair.rs @@ -0,0 +1,83 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// CertificateKeyPair : CertificateKeyPair Serializer +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct CertificateKeyPair { + #[serde(rename = "pk")] + pub pk: uuid::Uuid, + #[serde(rename = "name")] + pub name: String, + /// SHA256 fingerprint of the certificate + #[serde( + rename = "fingerprint_sha256", + deserialize_with = "Option::deserialize" + )] + pub fingerprint_sha256: Option, + /// SHA1 fingerprint of the certificate + #[serde(rename = "fingerprint_sha1", deserialize_with = "Option::deserialize")] + pub fingerprint_sha1: Option, + /// Certificate expiry date + #[serde(rename = "cert_expiry", deserialize_with = "Option::deserialize")] + pub cert_expiry: Option, + /// Certificate subject as RFC4514 string + #[serde(rename = "cert_subject", deserialize_with = "Option::deserialize")] + pub cert_subject: Option, + /// Show if this keypair has a private key configured or not + #[serde(rename = "private_key_available")] + pub private_key_available: bool, + /// Key algorithm type detected from the certificate's public key + #[serde(rename = "key_type", deserialize_with = "Option::deserialize")] + pub key_type: Option, + /// Get URL to download certificate + #[serde(rename = "certificate_download_url")] + pub certificate_download_url: String, + /// Get URL to download private key + #[serde(rename = "private_key_download_url")] + pub private_key_download_url: String, + /// Objects that are managed by authentik. These objects are created and updated automatically. + /// This flag only indicates that an object can be overwritten by migrations. You can still + /// modify the objects via the API, but expect changes to be overwritten in a later update. + #[serde(rename = "managed", deserialize_with = "Option::deserialize")] + pub managed: Option, +} + +impl CertificateKeyPair { + /// CertificateKeyPair Serializer + pub fn new( + pk: uuid::Uuid, + name: String, + fingerprint_sha256: Option, + fingerprint_sha1: Option, + cert_expiry: Option, + cert_subject: Option, + private_key_available: bool, + key_type: Option, + certificate_download_url: String, + private_key_download_url: String, + managed: Option, + ) -> CertificateKeyPair { + CertificateKeyPair { + pk, + name, + fingerprint_sha256, + fingerprint_sha1, + cert_expiry, + cert_subject, + private_key_available, + key_type, + certificate_download_url, + private_key_download_url, + managed, + } + } +} diff --git a/packages/client-rust/src/models/certificate_key_pair_key_type_enum.rs b/packages/client-rust/src/models/certificate_key_pair_key_type_enum.rs new file mode 100644 index 0000000000..5098b567dc --- /dev/null +++ b/packages/client-rust/src/models/certificate_key_pair_key_type_enum.rs @@ -0,0 +1,44 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum CertificateKeyPairKeyTypeEnum { + #[serde(rename = "rsa")] + Rsa, + #[serde(rename = "ec")] + Ec, + #[serde(rename = "dsa")] + Dsa, + #[serde(rename = "ed25519")] + Ed25519, + #[serde(rename = "ed448")] + Ed448, +} + +impl std::fmt::Display for CertificateKeyPairKeyTypeEnum { + fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { + match self { + Self::Rsa => write!(f, "rsa"), + Self::Ec => write!(f, "ec"), + Self::Dsa => write!(f, "dsa"), + Self::Ed25519 => write!(f, "ed25519"), + Self::Ed448 => write!(f, "ed448"), + } + } +} + +impl Default for CertificateKeyPairKeyTypeEnum { + fn default() -> CertificateKeyPairKeyTypeEnum { + Self::Rsa + } +} diff --git a/packages/client-rust/src/models/challenge_types.rs b/packages/client-rust/src/models/challenge_types.rs new file mode 100644 index 0000000000..590f560865 --- /dev/null +++ b/packages/client-rust/src/models/challenge_types.rs @@ -0,0 +1,82 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] +#[serde(tag = "component")] +pub enum ChallengeTypes { + #[serde(rename = "ak-stage-access-denied")] + AkStageAccessDenied(models::AccessDeniedChallenge), + #[serde(rename = "ak-source-oauth-apple")] + AkSourceOauthApple(models::AppleLoginChallenge), + #[serde(rename = "ak-stage-authenticator-duo")] + AkStageAuthenticatorDuo(models::AuthenticatorDuoChallenge), + #[serde(rename = "ak-stage-authenticator-email")] + AkStageAuthenticatorEmail(models::AuthenticatorEmailChallenge), + #[serde(rename = "ak-stage-authenticator-sms")] + AkStageAuthenticatorSms(models::AuthenticatorSmsChallenge), + #[serde(rename = "ak-stage-authenticator-static")] + AkStageAuthenticatorStatic(models::AuthenticatorStaticChallenge), + #[serde(rename = "ak-stage-authenticator-totp")] + AkStageAuthenticatorTotp(models::AuthenticatorTotpChallenge), + #[serde(rename = "ak-stage-authenticator-validate")] + AkStageAuthenticatorValidate(models::AuthenticatorValidationChallenge), + #[serde(rename = "ak-stage-authenticator-webauthn")] + AkStageAuthenticatorWebauthn(models::AuthenticatorWebAuthnChallenge), + #[serde(rename = "ak-stage-autosubmit")] + AkStageAutosubmit(models::AutosubmitChallenge), + #[serde(rename = "ak-stage-captcha")] + AkStageCaptcha(models::CaptchaChallenge), + #[serde(rename = "ak-stage-consent")] + AkStageConsent(models::ConsentChallenge), + #[serde(rename = "ak-stage-dummy")] + AkStageDummy(models::DummyChallenge), + #[serde(rename = "ak-stage-email")] + AkStageEmail(models::EmailChallenge), + #[serde(rename = "ak-stage-endpoint-agent")] + AkStageEndpointAgent(models::EndpointAgentChallenge), + #[serde(rename = "ak-stage-flow-error")] + AkStageFlowError(models::FlowErrorChallenge), + #[serde(rename = "xak-flow-frame")] + XakFlowFrame(models::FrameChallenge), + #[serde(rename = "ak-stage-identification")] + AkStageIdentification(models::IdentificationChallenge), + #[serde(rename = "ak-provider-iframe-logout")] + AkProviderIframeLogout(models::IframeLogoutChallenge), + #[serde(rename = "ak-provider-saml-native-logout")] + AkProviderSamlNativeLogout(models::NativeLogoutChallenge), + #[serde(rename = "ak-provider-oauth2-device-code")] + AkProviderOauth2DeviceCode(models::OAuthDeviceCodeChallenge), + #[serde(rename = "ak-provider-oauth2-device-code-finish")] + AkProviderOauth2DeviceCodeFinish(models::OAuthDeviceCodeFinishChallenge), + #[serde(rename = "ak-stage-password")] + AkStagePassword(models::PasswordChallenge), + #[serde(rename = "ak-source-plex")] + AkSourcePlex(models::PlexAuthenticationChallenge), + #[serde(rename = "ak-stage-prompt")] + AkStagePrompt(models::PromptChallenge), + #[serde(rename = "xak-flow-redirect")] + XakFlowRedirect(models::RedirectChallenge), + #[serde(rename = "ak-stage-session-end")] + AkStageSessionEnd(models::SessionEndChallenge), + #[serde(rename = "xak-flow-shell")] + XakFlowShell(models::ShellChallenge), + #[serde(rename = "ak-source-telegram")] + AkSourceTelegram(models::TelegramLoginChallenge), + #[serde(rename = "ak-stage-user-login")] + AkStageUserLogin(models::UserLoginChallenge), +} + +impl Default for ChallengeTypes { + fn default() -> Self { + Self::AkStageAccessDenied(Default::default()) + } +} diff --git a/packages/client-rust/src/models/config.rs b/packages/client-rust/src/models/config.rs new file mode 100644 index 0000000000..677b344cf2 --- /dev/null +++ b/packages/client-rust/src/models/config.rs @@ -0,0 +1,45 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// Config : Serialize authentik Config into DRF Object +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct Config { + #[serde(rename = "error_reporting")] + pub error_reporting: models::ErrorReportingConfig, + #[serde(rename = "capabilities")] + pub capabilities: Vec, + #[serde(rename = "cache_timeout")] + pub cache_timeout: i32, + #[serde(rename = "cache_timeout_flows")] + pub cache_timeout_flows: i32, + #[serde(rename = "cache_timeout_policies")] + pub cache_timeout_policies: i32, +} + +impl Config { + /// Serialize authentik Config into DRF Object + pub fn new( + error_reporting: models::ErrorReportingConfig, + capabilities: Vec, + cache_timeout: i32, + cache_timeout_flows: i32, + cache_timeout_policies: i32, + ) -> Config { + Config { + error_reporting, + capabilities, + cache_timeout, + cache_timeout_flows, + cache_timeout_policies, + } + } +} diff --git a/packages/client-rust/src/models/consent_challenge.rs b/packages/client-rust/src/models/consent_challenge.rs new file mode 100644 index 0000000000..b8ccec94e7 --- /dev/null +++ b/packages/client-rust/src/models/consent_challenge.rs @@ -0,0 +1,57 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// ConsentChallenge : Challenge info for consent screens +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct ConsentChallenge { + #[serde(rename = "flow_info", skip_serializing_if = "Option::is_none")] + pub flow_info: Option, + #[serde(rename = "component", skip_serializing_if = "Option::is_none")] + pub component: Option, + #[serde(rename = "response_errors", skip_serializing_if = "Option::is_none")] + pub response_errors: Option>>, + #[serde(rename = "pending_user")] + pub pending_user: String, + #[serde(rename = "pending_user_avatar")] + pub pending_user_avatar: String, + #[serde(rename = "header_text", skip_serializing_if = "Option::is_none")] + pub header_text: Option, + #[serde(rename = "permissions")] + pub permissions: Vec, + #[serde(rename = "additional_permissions")] + pub additional_permissions: Vec, + #[serde(rename = "token")] + pub token: String, +} + +impl ConsentChallenge { + /// Challenge info for consent screens + pub fn new( + pending_user: String, + pending_user_avatar: String, + permissions: Vec, + additional_permissions: Vec, + token: String, + ) -> ConsentChallenge { + ConsentChallenge { + flow_info: None, + component: None, + response_errors: None, + pending_user, + pending_user_avatar, + header_text: None, + permissions, + additional_permissions, + token, + } + } +} diff --git a/packages/client-rust/src/models/consent_challenge_response_request.rs b/packages/client-rust/src/models/consent_challenge_response_request.rs new file mode 100644 index 0000000000..41ca023091 --- /dev/null +++ b/packages/client-rust/src/models/consent_challenge_response_request.rs @@ -0,0 +1,31 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// ConsentChallengeResponseRequest : Consent challenge response, any valid response request is +/// valid +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct ConsentChallengeResponseRequest { + #[serde(rename = "component", skip_serializing_if = "Option::is_none")] + pub component: Option, + #[serde(rename = "token")] + pub token: String, +} + +impl ConsentChallengeResponseRequest { + /// Consent challenge response, any valid response request is valid + pub fn new(token: String) -> ConsentChallengeResponseRequest { + ConsentChallengeResponseRequest { + component: None, + token, + } + } +} diff --git a/packages/client-rust/src/models/consent_permission.rs b/packages/client-rust/src/models/consent_permission.rs new file mode 100644 index 0000000000..861415b15a --- /dev/null +++ b/packages/client-rust/src/models/consent_permission.rs @@ -0,0 +1,27 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// ConsentPermission : Permission used for consent +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct ConsentPermission { + #[serde(rename = "name")] + pub name: String, + #[serde(rename = "id")] + pub id: String, +} + +impl ConsentPermission { + /// Permission used for consent + pub fn new(name: String, id: String) -> ConsentPermission { + ConsentPermission { name, id } + } +} diff --git a/packages/client-rust/src/models/contextual_flow_info.rs b/packages/client-rust/src/models/contextual_flow_info.rs new file mode 100644 index 0000000000..acf6f65b87 --- /dev/null +++ b/packages/client-rust/src/models/contextual_flow_info.rs @@ -0,0 +1,47 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// ContextualFlowInfo : Contextual flow information for a challenge +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct ContextualFlowInfo { + #[serde(rename = "title", skip_serializing_if = "Option::is_none")] + pub title: Option, + #[serde(rename = "background", skip_serializing_if = "Option::is_none")] + pub background: Option, + #[serde( + rename = "background_themed_urls", + default, + with = "::serde_with::rust::double_option", + skip_serializing_if = "Option::is_none" + )] + pub background_themed_urls: Option>, + #[serde(rename = "cancel_url")] + pub cancel_url: String, + #[serde(rename = "layout")] + pub layout: models::ContextualFlowInfoLayoutEnum, +} + +impl ContextualFlowInfo { + /// Contextual flow information for a challenge + pub fn new( + cancel_url: String, + layout: models::ContextualFlowInfoLayoutEnum, + ) -> ContextualFlowInfo { + ContextualFlowInfo { + title: None, + background: None, + background_themed_urls: None, + cancel_url, + layout, + } + } +} diff --git a/packages/client-rust/src/models/contextual_flow_info_layout_enum.rs b/packages/client-rust/src/models/contextual_flow_info_layout_enum.rs new file mode 100644 index 0000000000..9adfd144be --- /dev/null +++ b/packages/client-rust/src/models/contextual_flow_info_layout_enum.rs @@ -0,0 +1,50 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum ContextualFlowInfoLayoutEnum { + #[serde(rename = "stacked")] + Stacked, + #[serde(rename = "content_left")] + ContentLeft, + #[serde(rename = "content_right")] + ContentRight, + #[serde(rename = "sidebar_left")] + SidebarLeft, + #[serde(rename = "sidebar_right")] + SidebarRight, + #[serde(rename = "sidebar_left_frame_background")] + SidebarLeftFrameBackground, + #[serde(rename = "sidebar_right_frame_background")] + SidebarRightFrameBackground, +} + +impl std::fmt::Display for ContextualFlowInfoLayoutEnum { + fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { + match self { + Self::Stacked => write!(f, "stacked"), + Self::ContentLeft => write!(f, "content_left"), + Self::ContentRight => write!(f, "content_right"), + Self::SidebarLeft => write!(f, "sidebar_left"), + Self::SidebarRight => write!(f, "sidebar_right"), + Self::SidebarLeftFrameBackground => write!(f, "sidebar_left_frame_background"), + Self::SidebarRightFrameBackground => write!(f, "sidebar_right_frame_background"), + } + } +} + +impl Default for ContextualFlowInfoLayoutEnum { + fn default() -> ContextualFlowInfoLayoutEnum { + Self::Stacked + } +} diff --git a/packages/client-rust/src/models/device_challenge.rs b/packages/client-rust/src/models/device_challenge.rs new file mode 100644 index 0000000000..80a2fba48c --- /dev/null +++ b/packages/client-rust/src/models/device_challenge.rs @@ -0,0 +1,41 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// DeviceChallenge : Single device challenge +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct DeviceChallenge { + #[serde(rename = "device_class")] + pub device_class: models::DeviceClassesEnum, + #[serde(rename = "device_uid")] + pub device_uid: String, + #[serde(rename = "challenge")] + pub challenge: std::collections::HashMap, + #[serde(rename = "last_used", deserialize_with = "Option::deserialize")] + pub last_used: Option, +} + +impl DeviceChallenge { + /// Single device challenge + pub fn new( + device_class: models::DeviceClassesEnum, + device_uid: String, + challenge: std::collections::HashMap, + last_used: Option, + ) -> DeviceChallenge { + DeviceChallenge { + device_class, + device_uid, + challenge, + last_used, + } + } +} diff --git a/packages/client-rust/src/models/device_challenge_request.rs b/packages/client-rust/src/models/device_challenge_request.rs new file mode 100644 index 0000000000..ea565caf81 --- /dev/null +++ b/packages/client-rust/src/models/device_challenge_request.rs @@ -0,0 +1,41 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// DeviceChallengeRequest : Single device challenge +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct DeviceChallengeRequest { + #[serde(rename = "device_class")] + pub device_class: models::DeviceClassesEnum, + #[serde(rename = "device_uid")] + pub device_uid: String, + #[serde(rename = "challenge")] + pub challenge: std::collections::HashMap, + #[serde(rename = "last_used", deserialize_with = "Option::deserialize")] + pub last_used: Option, +} + +impl DeviceChallengeRequest { + /// Single device challenge + pub fn new( + device_class: models::DeviceClassesEnum, + device_uid: String, + challenge: std::collections::HashMap, + last_used: Option, + ) -> DeviceChallengeRequest { + DeviceChallengeRequest { + device_class, + device_uid, + challenge, + last_used, + } + } +} diff --git a/packages/client-rust/src/models/device_classes_enum.rs b/packages/client-rust/src/models/device_classes_enum.rs new file mode 100644 index 0000000000..a77083f1ee --- /dev/null +++ b/packages/client-rust/src/models/device_classes_enum.rs @@ -0,0 +1,47 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum DeviceClassesEnum { + #[serde(rename = "static")] + Static, + #[serde(rename = "totp")] + Totp, + #[serde(rename = "webauthn")] + Webauthn, + #[serde(rename = "duo")] + Duo, + #[serde(rename = "sms")] + Sms, + #[serde(rename = "email")] + Email, +} + +impl std::fmt::Display for DeviceClassesEnum { + fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { + match self { + Self::Static => write!(f, "static"), + Self::Totp => write!(f, "totp"), + Self::Webauthn => write!(f, "webauthn"), + Self::Duo => write!(f, "duo"), + Self::Sms => write!(f, "sms"), + Self::Email => write!(f, "email"), + } + } +} + +impl Default for DeviceClassesEnum { + fn default() -> DeviceClassesEnum { + Self::Static + } +} diff --git a/packages/client-rust/src/models/dummy_challenge.rs b/packages/client-rust/src/models/dummy_challenge.rs new file mode 100644 index 0000000000..6eb11e1e67 --- /dev/null +++ b/packages/client-rust/src/models/dummy_challenge.rs @@ -0,0 +1,36 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// DummyChallenge : Dummy challenge +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct DummyChallenge { + #[serde(rename = "flow_info", skip_serializing_if = "Option::is_none")] + pub flow_info: Option, + #[serde(rename = "component", skip_serializing_if = "Option::is_none")] + pub component: Option, + #[serde(rename = "response_errors", skip_serializing_if = "Option::is_none")] + pub response_errors: Option>>, + #[serde(rename = "name")] + pub name: String, +} + +impl DummyChallenge { + /// Dummy challenge + pub fn new(name: String) -> DummyChallenge { + DummyChallenge { + flow_info: None, + component: None, + response_errors: None, + name, + } + } +} diff --git a/packages/client-rust/src/models/dummy_challenge_response_request.rs b/packages/client-rust/src/models/dummy_challenge_response_request.rs new file mode 100644 index 0000000000..04c83fb3ae --- /dev/null +++ b/packages/client-rust/src/models/dummy_challenge_response_request.rs @@ -0,0 +1,25 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// DummyChallengeResponseRequest : Dummy challenge response +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct DummyChallengeResponseRequest { + #[serde(rename = "component", skip_serializing_if = "Option::is_none")] + pub component: Option, +} + +impl DummyChallengeResponseRequest { + /// Dummy challenge response + pub fn new() -> DummyChallengeResponseRequest { + DummyChallengeResponseRequest { component: None } + } +} diff --git a/packages/client-rust/src/models/email_challenge.rs b/packages/client-rust/src/models/email_challenge.rs new file mode 100644 index 0000000000..a6167df023 --- /dev/null +++ b/packages/client-rust/src/models/email_challenge.rs @@ -0,0 +1,33 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// EmailChallenge : Email challenge +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct EmailChallenge { + #[serde(rename = "flow_info", skip_serializing_if = "Option::is_none")] + pub flow_info: Option, + #[serde(rename = "component", skip_serializing_if = "Option::is_none")] + pub component: Option, + #[serde(rename = "response_errors", skip_serializing_if = "Option::is_none")] + pub response_errors: Option>>, +} + +impl EmailChallenge { + /// Email challenge + pub fn new() -> EmailChallenge { + EmailChallenge { + flow_info: None, + component: None, + response_errors: None, + } + } +} diff --git a/packages/client-rust/src/models/email_challenge_response_request.rs b/packages/client-rust/src/models/email_challenge_response_request.rs new file mode 100644 index 0000000000..2fcc0a61a3 --- /dev/null +++ b/packages/client-rust/src/models/email_challenge_response_request.rs @@ -0,0 +1,27 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// EmailChallengeResponseRequest : Email challenge resposen. No fields. This challenge is always +/// declared invalid to give the user a chance to retry +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct EmailChallengeResponseRequest { + #[serde(rename = "component", skip_serializing_if = "Option::is_none")] + pub component: Option, +} + +impl EmailChallengeResponseRequest { + /// Email challenge resposen. No fields. This challenge is always declared invalid to give the + /// user a chance to retry + pub fn new() -> EmailChallengeResponseRequest { + EmailChallengeResponseRequest { component: None } + } +} diff --git a/packages/client-rust/src/models/endpoint_agent_challenge.rs b/packages/client-rust/src/models/endpoint_agent_challenge.rs new file mode 100644 index 0000000000..43b8d18afd --- /dev/null +++ b/packages/client-rust/src/models/endpoint_agent_challenge.rs @@ -0,0 +1,39 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// EndpointAgentChallenge : Signed challenge for authentik agent to respond to +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct EndpointAgentChallenge { + #[serde(rename = "flow_info", skip_serializing_if = "Option::is_none")] + pub flow_info: Option, + #[serde(rename = "component", skip_serializing_if = "Option::is_none")] + pub component: Option, + #[serde(rename = "response_errors", skip_serializing_if = "Option::is_none")] + pub response_errors: Option>>, + #[serde(rename = "challenge")] + pub challenge: String, + #[serde(rename = "challenge_idle_timeout")] + pub challenge_idle_timeout: i32, +} + +impl EndpointAgentChallenge { + /// Signed challenge for authentik agent to respond to + pub fn new(challenge: String, challenge_idle_timeout: i32) -> EndpointAgentChallenge { + EndpointAgentChallenge { + flow_info: None, + component: None, + response_errors: None, + challenge, + challenge_idle_timeout, + } + } +} diff --git a/packages/client-rust/src/models/endpoint_agent_challenge_response_request.rs b/packages/client-rust/src/models/endpoint_agent_challenge_response_request.rs new file mode 100644 index 0000000000..aa03249847 --- /dev/null +++ b/packages/client-rust/src/models/endpoint_agent_challenge_response_request.rs @@ -0,0 +1,35 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// EndpointAgentChallengeResponseRequest : Response to signed challenge +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct EndpointAgentChallengeResponseRequest { + #[serde(rename = "component", skip_serializing_if = "Option::is_none")] + pub component: Option, + #[serde( + rename = "response", + default, + with = "::serde_with::rust::double_option", + skip_serializing_if = "Option::is_none" + )] + pub response: Option>, +} + +impl EndpointAgentChallengeResponseRequest { + /// Response to signed challenge + pub fn new() -> EndpointAgentChallengeResponseRequest { + EndpointAgentChallengeResponseRequest { + component: None, + response: None, + } + } +} diff --git a/packages/client-rust/src/models/error_detail.rs b/packages/client-rust/src/models/error_detail.rs new file mode 100644 index 0000000000..35653223d7 --- /dev/null +++ b/packages/client-rust/src/models/error_detail.rs @@ -0,0 +1,27 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// ErrorDetail : Serializer for rest_framework's error messages +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct ErrorDetail { + #[serde(rename = "string")] + pub string: String, + #[serde(rename = "code")] + pub code: String, +} + +impl ErrorDetail { + /// Serializer for rest_framework's error messages + pub fn new(string: String, code: String) -> ErrorDetail { + ErrorDetail { string, code } + } +} diff --git a/packages/client-rust/src/models/error_reporting_config.rs b/packages/client-rust/src/models/error_reporting_config.rs new file mode 100644 index 0000000000..78f97cb462 --- /dev/null +++ b/packages/client-rust/src/models/error_reporting_config.rs @@ -0,0 +1,45 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// ErrorReportingConfig : Config for error reporting +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct ErrorReportingConfig { + #[serde(rename = "enabled")] + pub enabled: bool, + #[serde(rename = "sentry_dsn")] + pub sentry_dsn: String, + #[serde(rename = "environment")] + pub environment: String, + #[serde(rename = "send_pii")] + pub send_pii: bool, + #[serde(rename = "traces_sample_rate")] + pub traces_sample_rate: f64, +} + +impl ErrorReportingConfig { + /// Config for error reporting + pub fn new( + enabled: bool, + sentry_dsn: String, + environment: String, + send_pii: bool, + traces_sample_rate: f64, + ) -> ErrorReportingConfig { + ErrorReportingConfig { + enabled, + sentry_dsn, + environment, + send_pii, + traces_sample_rate, + } + } +} diff --git a/packages/client-rust/src/models/event.rs b/packages/client-rust/src/models/event.rs new file mode 100644 index 0000000000..9940524622 --- /dev/null +++ b/packages/client-rust/src/models/event.rs @@ -0,0 +1,61 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// Event : Event Serializer +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct Event { + #[serde(rename = "pk")] + pub pk: uuid::Uuid, + #[serde(rename = "user", skip_serializing_if = "Option::is_none")] + pub user: Option>, + #[serde(rename = "action")] + pub action: models::EventActions, + #[serde(rename = "app")] + pub app: String, + #[serde(rename = "context", skip_serializing_if = "Option::is_none")] + pub context: Option>, + #[serde( + rename = "client_ip", + default, + with = "::serde_with::rust::double_option", + skip_serializing_if = "Option::is_none" + )] + pub client_ip: Option>, + #[serde(rename = "created")] + pub created: String, + #[serde(rename = "expires", skip_serializing_if = "Option::is_none")] + pub expires: Option, + #[serde(rename = "brand", skip_serializing_if = "Option::is_none")] + pub brand: Option>, +} + +impl Event { + /// Event Serializer + pub fn new( + pk: uuid::Uuid, + action: models::EventActions, + app: String, + created: String, + ) -> Event { + Event { + pk, + user: None, + action, + app, + context: None, + client_ip: None, + created, + expires: None, + brand: None, + } + } +} diff --git a/packages/client-rust/src/models/event_actions.rs b/packages/client-rust/src/models/event_actions.rs new file mode 100644 index 0000000000..4cce44eb6f --- /dev/null +++ b/packages/client-rust/src/models/event_actions.rs @@ -0,0 +1,128 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum EventActions { + #[serde(rename = "login")] + Login, + #[serde(rename = "login_failed")] + LoginFailed, + #[serde(rename = "logout")] + Logout, + #[serde(rename = "user_write")] + UserWrite, + #[serde(rename = "suspicious_request")] + SuspiciousRequest, + #[serde(rename = "password_set")] + PasswordSet, + #[serde(rename = "secret_view")] + SecretView, + #[serde(rename = "secret_rotate")] + SecretRotate, + #[serde(rename = "invitation_used")] + InvitationUsed, + #[serde(rename = "authorize_application")] + AuthorizeApplication, + #[serde(rename = "source_linked")] + SourceLinked, + #[serde(rename = "impersonation_started")] + ImpersonationStarted, + #[serde(rename = "impersonation_ended")] + ImpersonationEnded, + #[serde(rename = "flow_execution")] + FlowExecution, + #[serde(rename = "policy_execution")] + PolicyExecution, + #[serde(rename = "policy_exception")] + PolicyException, + #[serde(rename = "property_mapping_exception")] + PropertyMappingException, + #[serde(rename = "system_task_execution")] + SystemTaskExecution, + #[serde(rename = "system_task_exception")] + SystemTaskException, + #[serde(rename = "system_exception")] + SystemException, + #[serde(rename = "configuration_error")] + ConfigurationError, + #[serde(rename = "configuration_warning")] + ConfigurationWarning, + #[serde(rename = "model_created")] + ModelCreated, + #[serde(rename = "model_updated")] + ModelUpdated, + #[serde(rename = "model_deleted")] + ModelDeleted, + #[serde(rename = "email_sent")] + EmailSent, + #[serde(rename = "update_available")] + UpdateAvailable, + #[serde(rename = "export_ready")] + ExportReady, + #[serde(rename = "review_initiated")] + ReviewInitiated, + #[serde(rename = "review_overdue")] + ReviewOverdue, + #[serde(rename = "review_attested")] + ReviewAttested, + #[serde(rename = "review_completed")] + ReviewCompleted, + #[serde(rename = "custom_")] + Custom, +} + +impl std::fmt::Display for EventActions { + fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { + match self { + Self::Login => write!(f, "login"), + Self::LoginFailed => write!(f, "login_failed"), + Self::Logout => write!(f, "logout"), + Self::UserWrite => write!(f, "user_write"), + Self::SuspiciousRequest => write!(f, "suspicious_request"), + Self::PasswordSet => write!(f, "password_set"), + Self::SecretView => write!(f, "secret_view"), + Self::SecretRotate => write!(f, "secret_rotate"), + Self::InvitationUsed => write!(f, "invitation_used"), + Self::AuthorizeApplication => write!(f, "authorize_application"), + Self::SourceLinked => write!(f, "source_linked"), + Self::ImpersonationStarted => write!(f, "impersonation_started"), + Self::ImpersonationEnded => write!(f, "impersonation_ended"), + Self::FlowExecution => write!(f, "flow_execution"), + Self::PolicyExecution => write!(f, "policy_execution"), + Self::PolicyException => write!(f, "policy_exception"), + Self::PropertyMappingException => write!(f, "property_mapping_exception"), + Self::SystemTaskExecution => write!(f, "system_task_execution"), + Self::SystemTaskException => write!(f, "system_task_exception"), + Self::SystemException => write!(f, "system_exception"), + Self::ConfigurationError => write!(f, "configuration_error"), + Self::ConfigurationWarning => write!(f, "configuration_warning"), + Self::ModelCreated => write!(f, "model_created"), + Self::ModelUpdated => write!(f, "model_updated"), + Self::ModelDeleted => write!(f, "model_deleted"), + Self::EmailSent => write!(f, "email_sent"), + Self::UpdateAvailable => write!(f, "update_available"), + Self::ExportReady => write!(f, "export_ready"), + Self::ReviewInitiated => write!(f, "review_initiated"), + Self::ReviewOverdue => write!(f, "review_overdue"), + Self::ReviewAttested => write!(f, "review_attested"), + Self::ReviewCompleted => write!(f, "review_completed"), + Self::Custom => write!(f, "custom_"), + } + } +} + +impl Default for EventActions { + fn default() -> EventActions { + Self::Login + } +} diff --git a/packages/client-rust/src/models/event_request.rs b/packages/client-rust/src/models/event_request.rs new file mode 100644 index 0000000000..452780a5cc --- /dev/null +++ b/packages/client-rust/src/models/event_request.rs @@ -0,0 +1,50 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// EventRequest : Event Serializer +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct EventRequest { + #[serde(rename = "user", skip_serializing_if = "Option::is_none")] + pub user: Option>, + #[serde(rename = "action")] + pub action: models::EventActions, + #[serde(rename = "app")] + pub app: String, + #[serde(rename = "context", skip_serializing_if = "Option::is_none")] + pub context: Option>, + #[serde( + rename = "client_ip", + default, + with = "::serde_with::rust::double_option", + skip_serializing_if = "Option::is_none" + )] + pub client_ip: Option>, + #[serde(rename = "expires", skip_serializing_if = "Option::is_none")] + pub expires: Option, + #[serde(rename = "brand", skip_serializing_if = "Option::is_none")] + pub brand: Option>, +} + +impl EventRequest { + /// Event Serializer + pub fn new(action: models::EventActions, app: String) -> EventRequest { + EventRequest { + user: None, + action, + app, + context: None, + client_ip: None, + expires: None, + brand: None, + } + } +} diff --git a/packages/client-rust/src/models/flow_challenge_response_request.rs b/packages/client-rust/src/models/flow_challenge_response_request.rs new file mode 100644 index 0000000000..1414a220ba --- /dev/null +++ b/packages/client-rust/src/models/flow_challenge_response_request.rs @@ -0,0 +1,74 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] +#[serde(tag = "component")] +pub enum FlowChallengeResponseRequest { + #[serde(rename = "ak-source-oauth-apple")] + AkSourceOauthApple(models::AppleChallengeResponseRequest), + #[serde(rename = "ak-stage-authenticator-duo")] + AkStageAuthenticatorDuo(models::AuthenticatorDuoChallengeResponseRequest), + #[serde(rename = "ak-stage-authenticator-email")] + AkStageAuthenticatorEmail(models::AuthenticatorEmailChallengeResponseRequest), + #[serde(rename = "ak-stage-authenticator-sms")] + AkStageAuthenticatorSms(models::AuthenticatorSmsChallengeResponseRequest), + #[serde(rename = "ak-stage-authenticator-static")] + AkStageAuthenticatorStatic(models::AuthenticatorStaticChallengeResponseRequest), + #[serde(rename = "ak-stage-authenticator-totp")] + AkStageAuthenticatorTotp(models::AuthenticatorTotpChallengeResponseRequest), + #[serde(rename = "ak-stage-authenticator-validate")] + AkStageAuthenticatorValidate(models::AuthenticatorValidationChallengeResponseRequest), + #[serde(rename = "ak-stage-authenticator-webauthn")] + AkStageAuthenticatorWebauthn(models::AuthenticatorWebAuthnChallengeResponseRequest), + #[serde(rename = "ak-stage-autosubmit")] + AkStageAutosubmit(models::AutoSubmitChallengeResponseRequest), + #[serde(rename = "ak-stage-captcha")] + AkStageCaptcha(models::CaptchaChallengeResponseRequest), + #[serde(rename = "ak-stage-consent")] + AkStageConsent(models::ConsentChallengeResponseRequest), + #[serde(rename = "ak-stage-dummy")] + AkStageDummy(models::DummyChallengeResponseRequest), + #[serde(rename = "ak-stage-email")] + AkStageEmail(models::EmailChallengeResponseRequest), + #[serde(rename = "ak-stage-endpoint-agent")] + AkStageEndpointAgent(models::EndpointAgentChallengeResponseRequest), + #[serde(rename = "xak-flow-frame")] + XakFlowFrame(models::FrameChallengeResponseRequest), + #[serde(rename = "ak-stage-identification")] + AkStageIdentification(models::IdentificationChallengeResponseRequest), + #[serde(rename = "ak-provider-iframe-logout")] + AkProviderIframeLogout(models::IframeLogoutChallengeResponseRequest), + #[serde(rename = "ak-provider-saml-native-logout")] + AkProviderSamlNativeLogout(models::NativeLogoutChallengeResponseRequest), + #[serde(rename = "ak-provider-oauth2-device-code")] + AkProviderOauth2DeviceCode(models::OAuthDeviceCodeChallengeResponseRequest), + #[serde(rename = "ak-provider-oauth2-device-code-finish")] + AkProviderOauth2DeviceCodeFinish(models::OAuthDeviceCodeFinishChallengeResponseRequest), + #[serde(rename = "ak-stage-password")] + AkStagePassword(models::PasswordChallengeResponseRequest), + #[serde(rename = "ak-source-plex")] + AkSourcePlex(models::PlexAuthenticationChallengeResponseRequest), + #[serde(rename = "ak-stage-prompt")] + AkStagePrompt(models::PromptChallengeResponseRequest), + #[serde(rename = "xak-flow-redirect")] + XakFlowRedirect(models::RedirectChallengeResponseRequest), + #[serde(rename = "ak-source-telegram")] + AkSourceTelegram(models::TelegramChallengeResponseRequest), + #[serde(rename = "ak-stage-user-login")] + AkStageUserLogin(models::UserLoginChallengeResponseRequest), +} + +impl Default for FlowChallengeResponseRequest { + fn default() -> Self { + Self::AkSourceOauthApple(Default::default()) + } +} diff --git a/packages/client-rust/src/models/flow_designation_enum.rs b/packages/client-rust/src/models/flow_designation_enum.rs new file mode 100644 index 0000000000..b0cd725ada --- /dev/null +++ b/packages/client-rust/src/models/flow_designation_enum.rs @@ -0,0 +1,50 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum FlowDesignationEnum { + #[serde(rename = "authentication")] + Authentication, + #[serde(rename = "authorization")] + Authorization, + #[serde(rename = "invalidation")] + Invalidation, + #[serde(rename = "enrollment")] + Enrollment, + #[serde(rename = "unenrollment")] + Unenrollment, + #[serde(rename = "recovery")] + Recovery, + #[serde(rename = "stage_configuration")] + StageConfiguration, +} + +impl std::fmt::Display for FlowDesignationEnum { + fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { + match self { + Self::Authentication => write!(f, "authentication"), + Self::Authorization => write!(f, "authorization"), + Self::Invalidation => write!(f, "invalidation"), + Self::Enrollment => write!(f, "enrollment"), + Self::Unenrollment => write!(f, "unenrollment"), + Self::Recovery => write!(f, "recovery"), + Self::StageConfiguration => write!(f, "stage_configuration"), + } + } +} + +impl Default for FlowDesignationEnum { + fn default() -> FlowDesignationEnum { + Self::Authentication + } +} diff --git a/packages/client-rust/src/models/flow_error_challenge.rs b/packages/client-rust/src/models/flow_error_challenge.rs new file mode 100644 index 0000000000..29c1f0f27d --- /dev/null +++ b/packages/client-rust/src/models/flow_error_challenge.rs @@ -0,0 +1,44 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// FlowErrorChallenge : Challenge class when an unhandled error occurs during a stage. Normal users +/// are shown an error message, superusers are shown a full stacktrace. +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct FlowErrorChallenge { + #[serde(rename = "flow_info", skip_serializing_if = "Option::is_none")] + pub flow_info: Option, + #[serde(rename = "component", skip_serializing_if = "Option::is_none")] + pub component: Option, + #[serde(rename = "response_errors", skip_serializing_if = "Option::is_none")] + pub response_errors: Option>>, + #[serde(rename = "request_id")] + pub request_id: String, + #[serde(rename = "error", skip_serializing_if = "Option::is_none")] + pub error: Option, + #[serde(rename = "traceback", skip_serializing_if = "Option::is_none")] + pub traceback: Option, +} + +impl FlowErrorChallenge { + /// Challenge class when an unhandled error occurs during a stage. Normal users are shown an + /// error message, superusers are shown a full stacktrace. + pub fn new(request_id: String) -> FlowErrorChallenge { + FlowErrorChallenge { + flow_info: None, + component: None, + response_errors: None, + request_id, + error: None, + traceback: None, + } + } +} diff --git a/packages/client-rust/src/models/frame_challenge.rs b/packages/client-rust/src/models/frame_challenge.rs new file mode 100644 index 0000000000..d3d0d13fb7 --- /dev/null +++ b/packages/client-rust/src/models/frame_challenge.rs @@ -0,0 +1,42 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// FrameChallenge : Challenge type to render a frame +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct FrameChallenge { + #[serde(rename = "flow_info", skip_serializing_if = "Option::is_none")] + pub flow_info: Option, + #[serde(rename = "component", skip_serializing_if = "Option::is_none")] + pub component: Option, + #[serde(rename = "response_errors", skip_serializing_if = "Option::is_none")] + pub response_errors: Option>>, + #[serde(rename = "url")] + pub url: String, + #[serde(rename = "loading_overlay", skip_serializing_if = "Option::is_none")] + pub loading_overlay: Option, + #[serde(rename = "loading_text")] + pub loading_text: String, +} + +impl FrameChallenge { + /// Challenge type to render a frame + pub fn new(url: String, loading_text: String) -> FrameChallenge { + FrameChallenge { + flow_info: None, + component: None, + response_errors: None, + url, + loading_overlay: None, + loading_text, + } + } +} diff --git a/packages/client-rust/src/models/frame_challenge_response_request.rs b/packages/client-rust/src/models/frame_challenge_response_request.rs new file mode 100644 index 0000000000..ed566a5370 --- /dev/null +++ b/packages/client-rust/src/models/frame_challenge_response_request.rs @@ -0,0 +1,25 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// FrameChallengeResponseRequest : Base class for all challenge responses +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct FrameChallengeResponseRequest { + #[serde(rename = "component", skip_serializing_if = "Option::is_none")] + pub component: Option, +} + +impl FrameChallengeResponseRequest { + /// Base class for all challenge responses + pub fn new() -> FrameChallengeResponseRequest { + FrameChallengeResponseRequest { component: None } + } +} diff --git a/packages/client-rust/src/models/generic_error.rs b/packages/client-rust/src/models/generic_error.rs new file mode 100644 index 0000000000..e5474cf091 --- /dev/null +++ b/packages/client-rust/src/models/generic_error.rs @@ -0,0 +1,27 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// GenericError : Generic API Error +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct GenericError { + #[serde(rename = "detail")] + pub detail: String, + #[serde(rename = "code", skip_serializing_if = "Option::is_none")] + pub code: Option, +} + +impl GenericError { + /// Generic API Error + pub fn new(detail: String) -> GenericError { + GenericError { detail, code: None } + } +} diff --git a/packages/client-rust/src/models/group.rs b/packages/client-rust/src/models/group.rs new file mode 100644 index 0000000000..3fc6ce27d1 --- /dev/null +++ b/packages/client-rust/src/models/group.rs @@ -0,0 +1,80 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// Group : Group Serializer +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct Group { + #[serde(rename = "pk")] + pub pk: uuid::Uuid, + #[serde(rename = "num_pk")] + pub num_pk: i32, + #[serde(rename = "name")] + pub name: String, + /// Users added to this group will be superusers. + #[serde(rename = "is_superuser", skip_serializing_if = "Option::is_none")] + pub is_superuser: Option, + #[serde(rename = "parents", skip_serializing_if = "Option::is_none")] + pub parents: Option>, + #[serde(rename = "parents_obj", deserialize_with = "Option::deserialize")] + pub parents_obj: Option>, + #[serde(rename = "users", skip_serializing_if = "Option::is_none")] + pub users: Option>, + #[serde(rename = "users_obj", deserialize_with = "Option::deserialize")] + pub users_obj: Option>, + #[serde(rename = "attributes", skip_serializing_if = "Option::is_none")] + pub attributes: Option>, + #[serde(rename = "roles", skip_serializing_if = "Option::is_none")] + pub roles: Option>, + #[serde(rename = "roles_obj")] + pub roles_obj: Vec, + #[serde( + rename = "inherited_roles_obj", + deserialize_with = "Option::deserialize" + )] + pub inherited_roles_obj: Option>, + #[serde(rename = "children")] + pub children: Vec, + #[serde(rename = "children_obj", deserialize_with = "Option::deserialize")] + pub children_obj: Option>, +} + +impl Group { + /// Group Serializer + pub fn new( + pk: uuid::Uuid, + num_pk: i32, + name: String, + parents_obj: Option>, + users_obj: Option>, + roles_obj: Vec, + inherited_roles_obj: Option>, + children: Vec, + children_obj: Option>, + ) -> Group { + Group { + pk, + num_pk, + name, + is_superuser: None, + parents: None, + parents_obj, + users: None, + users_obj, + attributes: None, + roles: None, + roles_obj, + inherited_roles_obj, + children, + children_obj, + } + } +} diff --git a/packages/client-rust/src/models/identification_challenge.rs b/packages/client-rust/src/models/identification_challenge.rs new file mode 100644 index 0000000000..c53724c524 --- /dev/null +++ b/packages/client-rust/src/models/identification_challenge.rs @@ -0,0 +1,108 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// IdentificationChallenge : Identification challenges with all UI elements +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct IdentificationChallenge { + #[serde(rename = "flow_info", skip_serializing_if = "Option::is_none")] + pub flow_info: Option, + #[serde(rename = "component", skip_serializing_if = "Option::is_none")] + pub component: Option, + #[serde(rename = "response_errors", skip_serializing_if = "Option::is_none")] + pub response_errors: Option>>, + #[serde(rename = "user_fields", deserialize_with = "Option::deserialize")] + pub user_fields: Option>, + #[serde( + rename = "pending_user_identifier", + default, + with = "::serde_with::rust::double_option", + skip_serializing_if = "Option::is_none" + )] + pub pending_user_identifier: Option>, + #[serde(rename = "password_fields")] + pub password_fields: bool, + #[serde( + rename = "allow_show_password", + skip_serializing_if = "Option::is_none" + )] + pub allow_show_password: Option, + #[serde(rename = "application_pre", skip_serializing_if = "Option::is_none")] + pub application_pre: Option, + #[serde( + rename = "application_pre_launch", + skip_serializing_if = "Option::is_none" + )] + pub application_pre_launch: Option, + #[serde(rename = "flow_designation")] + pub flow_designation: models::FlowDesignationEnum, + #[serde( + rename = "captcha_stage", + default, + with = "::serde_with::rust::double_option", + skip_serializing_if = "Option::is_none" + )] + pub captcha_stage: Option>, + #[serde(rename = "enroll_url", skip_serializing_if = "Option::is_none")] + pub enroll_url: Option, + #[serde(rename = "recovery_url", skip_serializing_if = "Option::is_none")] + pub recovery_url: Option, + #[serde(rename = "passwordless_url", skip_serializing_if = "Option::is_none")] + pub passwordless_url: Option, + #[serde(rename = "primary_action")] + pub primary_action: String, + #[serde(rename = "sources", skip_serializing_if = "Option::is_none")] + pub sources: Option>, + #[serde(rename = "show_source_labels")] + pub show_source_labels: bool, + #[serde(rename = "enable_remember_me", skip_serializing_if = "Option::is_none")] + pub enable_remember_me: Option, + #[serde( + rename = "passkey_challenge", + default, + with = "::serde_with::rust::double_option", + skip_serializing_if = "Option::is_none" + )] + pub passkey_challenge: Option>>, +} + +impl IdentificationChallenge { + /// Identification challenges with all UI elements + pub fn new( + user_fields: Option>, + password_fields: bool, + flow_designation: models::FlowDesignationEnum, + primary_action: String, + show_source_labels: bool, + ) -> IdentificationChallenge { + IdentificationChallenge { + flow_info: None, + component: None, + response_errors: None, + user_fields, + pending_user_identifier: None, + password_fields, + allow_show_password: None, + application_pre: None, + application_pre_launch: None, + flow_designation, + captcha_stage: None, + enroll_url: None, + recovery_url: None, + passwordless_url: None, + primary_action, + sources: None, + show_source_labels, + enable_remember_me: None, + passkey_challenge: None, + } + } +} diff --git a/packages/client-rust/src/models/identification_challenge_response_request.rs b/packages/client-rust/src/models/identification_challenge_response_request.rs new file mode 100644 index 0000000000..254da1a018 --- /dev/null +++ b/packages/client-rust/src/models/identification_challenge_response_request.rs @@ -0,0 +1,59 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// IdentificationChallengeResponseRequest : Identification challenge +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct IdentificationChallengeResponseRequest { + #[serde(rename = "component", skip_serializing_if = "Option::is_none")] + pub component: Option, + #[serde( + rename = "uid_field", + default, + with = "::serde_with::rust::double_option", + skip_serializing_if = "Option::is_none" + )] + pub uid_field: Option>, + #[serde( + rename = "password", + default, + with = "::serde_with::rust::double_option", + skip_serializing_if = "Option::is_none" + )] + pub password: Option>, + #[serde( + rename = "captcha_token", + default, + with = "::serde_with::rust::double_option", + skip_serializing_if = "Option::is_none" + )] + pub captcha_token: Option>, + #[serde( + rename = "passkey", + default, + with = "::serde_with::rust::double_option", + skip_serializing_if = "Option::is_none" + )] + pub passkey: Option>>, +} + +impl IdentificationChallengeResponseRequest { + /// Identification challenge + pub fn new() -> IdentificationChallengeResponseRequest { + IdentificationChallengeResponseRequest { + component: None, + uid_field: None, + password: None, + captcha_token: None, + passkey: None, + } + } +} diff --git a/packages/client-rust/src/models/iframe_logout_challenge.rs b/packages/client-rust/src/models/iframe_logout_challenge.rs new file mode 100644 index 0000000000..2e5ec48d99 --- /dev/null +++ b/packages/client-rust/src/models/iframe_logout_challenge.rs @@ -0,0 +1,36 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// IframeLogoutChallenge : Challenge for iframe logout +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct IframeLogoutChallenge { + #[serde(rename = "flow_info", skip_serializing_if = "Option::is_none")] + pub flow_info: Option, + #[serde(rename = "component", skip_serializing_if = "Option::is_none")] + pub component: Option, + #[serde(rename = "response_errors", skip_serializing_if = "Option::is_none")] + pub response_errors: Option>>, + #[serde(rename = "logout_urls", skip_serializing_if = "Option::is_none")] + pub logout_urls: Option>, +} + +impl IframeLogoutChallenge { + /// Challenge for iframe logout + pub fn new() -> IframeLogoutChallenge { + IframeLogoutChallenge { + flow_info: None, + component: None, + response_errors: None, + logout_urls: None, + } + } +} diff --git a/packages/client-rust/src/models/iframe_logout_challenge_response_request.rs b/packages/client-rust/src/models/iframe_logout_challenge_response_request.rs new file mode 100644 index 0000000000..b36239bea1 --- /dev/null +++ b/packages/client-rust/src/models/iframe_logout_challenge_response_request.rs @@ -0,0 +1,25 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// IframeLogoutChallengeResponseRequest : Response for iframe logout +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct IframeLogoutChallengeResponseRequest { + #[serde(rename = "component", skip_serializing_if = "Option::is_none")] + pub component: Option, +} + +impl IframeLogoutChallengeResponseRequest { + /// Response for iframe logout + pub fn new() -> IframeLogoutChallengeResponseRequest { + IframeLogoutChallengeResponseRequest { component: None } + } +} diff --git a/packages/client-rust/src/models/ldap_check_access.rs b/packages/client-rust/src/models/ldap_check_access.rs new file mode 100644 index 0000000000..21f1899385 --- /dev/null +++ b/packages/client-rust/src/models/ldap_check_access.rs @@ -0,0 +1,33 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// LdapCheckAccess : Base serializer class which doesn't implement create/update methods +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct LdapCheckAccess { + #[serde( + rename = "has_search_permission", + skip_serializing_if = "Option::is_none" + )] + pub has_search_permission: Option, + #[serde(rename = "access")] + pub access: models::PolicyTestResult, +} + +impl LdapCheckAccess { + /// Base serializer class which doesn't implement create/update methods + pub fn new(access: models::PolicyTestResult) -> LdapCheckAccess { + LdapCheckAccess { + has_search_permission: None, + access, + } + } +} diff --git a/packages/client-rust/src/models/ldap_outpost_config.rs b/packages/client-rust/src/models/ldap_outpost_config.rs new file mode 100644 index 0000000000..cae97c78c7 --- /dev/null +++ b/packages/client-rust/src/models/ldap_outpost_config.rs @@ -0,0 +1,87 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// LdapOutpostConfig : LDAPProvider Serializer +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct LdapOutpostConfig { + #[serde(rename = "pk")] + pub pk: i32, + #[serde(rename = "name")] + pub name: String, + /// DN under which objects are accessible. + #[serde(rename = "base_dn", skip_serializing_if = "Option::is_none")] + pub base_dn: Option, + #[serde(rename = "bind_flow_slug")] + pub bind_flow_slug: String, + /// Get slug for unbind flow, defaulting to brand's default flow. + #[serde(rename = "unbind_flow_slug", deserialize_with = "Option::deserialize")] + pub unbind_flow_slug: Option, + /// Prioritise backchannel slug over direct application slug + #[serde(rename = "application_slug")] + pub application_slug: String, + #[serde( + rename = "certificate", + default, + with = "::serde_with::rust::double_option", + skip_serializing_if = "Option::is_none" + )] + pub certificate: Option>, + #[serde(rename = "tls_server_name", skip_serializing_if = "Option::is_none")] + pub tls_server_name: Option, + /// The start for uidNumbers, this number is added to the user.pk to make sure that the numbers + /// aren't too low for POSIX users. Default is 2000 to ensure that we don't collide with local + /// users uidNumber + #[serde(rename = "uid_start_number", skip_serializing_if = "Option::is_none")] + pub uid_start_number: Option, + /// The start for gidNumbers, this number is added to a number generated from the group.pk to + /// make sure that the numbers aren't too low for POSIX groups. Default is 4000 to ensure that + /// we don't collide with local groups or users primary groups gidNumber + #[serde(rename = "gid_start_number", skip_serializing_if = "Option::is_none")] + pub gid_start_number: Option, + #[serde(rename = "search_mode", skip_serializing_if = "Option::is_none")] + pub search_mode: Option, + #[serde(rename = "bind_mode", skip_serializing_if = "Option::is_none")] + pub bind_mode: Option, + /// When enabled, code-based multi-factor authentication can be used by appending a semicolon + /// and the TOTP code to the password. This should only be enabled if all users that will bind + /// to this provider have a TOTP device configured, as otherwise a password may incorrectly be + /// rejected if it contains a semicolon. + #[serde(rename = "mfa_support", skip_serializing_if = "Option::is_none")] + pub mfa_support: Option, +} + +impl LdapOutpostConfig { + /// LDAPProvider Serializer + pub fn new( + pk: i32, + name: String, + bind_flow_slug: String, + unbind_flow_slug: Option, + application_slug: String, + ) -> LdapOutpostConfig { + LdapOutpostConfig { + pk, + name, + base_dn: None, + bind_flow_slug, + unbind_flow_slug, + application_slug, + certificate: None, + tls_server_name: None, + uid_start_number: None, + gid_start_number: None, + search_mode: None, + bind_mode: None, + mfa_support: None, + } + } +} diff --git a/packages/client-rust/src/models/ldapapi_access_mode.rs b/packages/client-rust/src/models/ldapapi_access_mode.rs new file mode 100644 index 0000000000..3218bc823b --- /dev/null +++ b/packages/client-rust/src/models/ldapapi_access_mode.rs @@ -0,0 +1,35 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum LdapapiAccessMode { + #[serde(rename = "direct")] + Direct, + #[serde(rename = "cached")] + Cached, +} + +impl std::fmt::Display for LdapapiAccessMode { + fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { + match self { + Self::Direct => write!(f, "direct"), + Self::Cached => write!(f, "cached"), + } + } +} + +impl Default for LdapapiAccessMode { + fn default() -> LdapapiAccessMode { + Self::Direct + } +} diff --git a/packages/client-rust/src/models/log_event.rs b/packages/client-rust/src/models/log_event.rs new file mode 100644 index 0000000000..c43f23ffac --- /dev/null +++ b/packages/client-rust/src/models/log_event.rs @@ -0,0 +1,45 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// LogEvent : Single log message with all context logged. +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct LogEvent { + #[serde(rename = "timestamp")] + pub timestamp: String, + #[serde(rename = "log_level")] + pub log_level: models::LogLevelEnum, + #[serde(rename = "logger")] + pub logger: String, + #[serde(rename = "event")] + pub event: String, + #[serde(rename = "attributes")] + pub attributes: std::collections::HashMap, +} + +impl LogEvent { + /// Single log message with all context logged. + pub fn new( + timestamp: String, + log_level: models::LogLevelEnum, + logger: String, + event: String, + attributes: std::collections::HashMap, + ) -> LogEvent { + LogEvent { + timestamp, + log_level, + logger, + event, + attributes, + } + } +} diff --git a/packages/client-rust/src/models/log_level_enum.rs b/packages/client-rust/src/models/log_level_enum.rs new file mode 100644 index 0000000000..4e18f9ba21 --- /dev/null +++ b/packages/client-rust/src/models/log_level_enum.rs @@ -0,0 +1,53 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum LogLevelEnum { + #[serde(rename = "critical")] + Critical, + #[serde(rename = "exception")] + Exception, + #[serde(rename = "error")] + Error, + #[serde(rename = "warn")] + Warn, + #[serde(rename = "warning")] + Warning, + #[serde(rename = "info")] + Info, + #[serde(rename = "debug")] + Debug, + #[serde(rename = "notset")] + Notset, +} + +impl std::fmt::Display for LogLevelEnum { + fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { + match self { + Self::Critical => write!(f, "critical"), + Self::Exception => write!(f, "exception"), + Self::Error => write!(f, "error"), + Self::Warn => write!(f, "warn"), + Self::Warning => write!(f, "warning"), + Self::Info => write!(f, "info"), + Self::Debug => write!(f, "debug"), + Self::Notset => write!(f, "notset"), + } + } +} + +impl Default for LogLevelEnum { + fn default() -> LogLevelEnum { + Self::Critical + } +} diff --git a/packages/client-rust/src/models/login_challenge_types.rs b/packages/client-rust/src/models/login_challenge_types.rs new file mode 100644 index 0000000000..43531ccb63 --- /dev/null +++ b/packages/client-rust/src/models/login_challenge_types.rs @@ -0,0 +1,30 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] +#[serde(tag = "component")] +pub enum LoginChallengeTypes { + #[serde(rename = "xak-flow-redirect")] + XakFlowRedirect(models::RedirectChallenge), + #[serde(rename = "ak-source-oauth-apple")] + AkSourceOauthApple(models::AppleLoginChallenge), + #[serde(rename = "ak-source-plex")] + AkSourcePlex(models::PlexAuthenticationChallenge), + #[serde(rename = "ak-source-telegram")] + AkSourceTelegram(models::TelegramLoginChallenge), +} + +impl Default for LoginChallengeTypes { + fn default() -> Self { + Self::XakFlowRedirect(Default::default()) + } +} diff --git a/packages/client-rust/src/models/login_source.rs b/packages/client-rust/src/models/login_source.rs new file mode 100644 index 0000000000..712165e486 --- /dev/null +++ b/packages/client-rust/src/models/login_source.rs @@ -0,0 +1,41 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// LoginSource : Serializer for Login buttons of sources +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct LoginSource { + #[serde(rename = "name")] + pub name: String, + #[serde( + rename = "icon_url", + default, + with = "::serde_with::rust::double_option", + skip_serializing_if = "Option::is_none" + )] + pub icon_url: Option>, + #[serde(rename = "promoted", skip_serializing_if = "Option::is_none")] + pub promoted: Option, + #[serde(rename = "challenge")] + pub challenge: models::LoginChallengeTypes, +} + +impl LoginSource { + /// Serializer for Login buttons of sources + pub fn new(name: String, challenge: models::LoginChallengeTypes) -> LoginSource { + LoginSource { + name, + icon_url: None, + promoted: None, + challenge, + } + } +} diff --git a/packages/client-rust/src/models/logout_url.rs b/packages/client-rust/src/models/logout_url.rs new file mode 100644 index 0000000000..b7803ed87a --- /dev/null +++ b/packages/client-rust/src/models/logout_url.rs @@ -0,0 +1,67 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// LogoutUrl : Data for a single logout URL +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct LogoutUrl { + #[serde(rename = "url")] + pub url: String, + #[serde( + rename = "provider_name", + default, + with = "::serde_with::rust::double_option", + skip_serializing_if = "Option::is_none" + )] + pub provider_name: Option>, + #[serde( + rename = "binding", + default, + with = "::serde_with::rust::double_option", + skip_serializing_if = "Option::is_none" + )] + pub binding: Option>, + #[serde( + rename = "saml_request", + default, + with = "::serde_with::rust::double_option", + skip_serializing_if = "Option::is_none" + )] + pub saml_request: Option>, + #[serde( + rename = "saml_response", + default, + with = "::serde_with::rust::double_option", + skip_serializing_if = "Option::is_none" + )] + pub saml_response: Option>, + #[serde( + rename = "saml_relay_state", + default, + with = "::serde_with::rust::double_option", + skip_serializing_if = "Option::is_none" + )] + pub saml_relay_state: Option>, +} + +impl LogoutUrl { + /// Data for a single logout URL + pub fn new(url: String) -> LogoutUrl { + LogoutUrl { + url, + provider_name: None, + binding: None, + saml_request: None, + saml_response: None, + saml_relay_state: None, + } + } +} diff --git a/packages/client-rust/src/models/mod.rs b/packages/client-rust/src/models/mod.rs new file mode 100644 index 0000000000..04c024b7d4 --- /dev/null +++ b/packages/client-rust/src/models/mod.rs @@ -0,0 +1,242 @@ +pub mod access_denied_challenge; +pub use self::access_denied_challenge::AccessDeniedChallenge; +pub mod apple_challenge_response_request; +pub use self::apple_challenge_response_request::AppleChallengeResponseRequest; +pub mod apple_login_challenge; +pub use self::apple_login_challenge::AppleLoginChallenge; +pub mod authenticator_duo_challenge; +pub use self::authenticator_duo_challenge::AuthenticatorDuoChallenge; +pub mod authenticator_duo_challenge_response_request; +pub use self::authenticator_duo_challenge_response_request::AuthenticatorDuoChallengeResponseRequest; +pub mod authenticator_email_challenge; +pub use self::authenticator_email_challenge::AuthenticatorEmailChallenge; +pub mod authenticator_email_challenge_response_request; +pub use self::authenticator_email_challenge_response_request::AuthenticatorEmailChallengeResponseRequest; +pub mod authenticator_sms_challenge; +pub use self::authenticator_sms_challenge::AuthenticatorSmsChallenge; +pub mod authenticator_sms_challenge_response_request; +pub use self::authenticator_sms_challenge_response_request::AuthenticatorSmsChallengeResponseRequest; +pub mod authenticator_static_challenge; +pub use self::authenticator_static_challenge::AuthenticatorStaticChallenge; +pub mod authenticator_static_challenge_response_request; +pub use self::authenticator_static_challenge_response_request::AuthenticatorStaticChallengeResponseRequest; +pub mod authenticator_totp_challenge; +pub use self::authenticator_totp_challenge::AuthenticatorTotpChallenge; +pub mod authenticator_totp_challenge_response_request; +pub use self::authenticator_totp_challenge_response_request::AuthenticatorTotpChallengeResponseRequest; +pub mod authenticator_validation_challenge; +pub use self::authenticator_validation_challenge::AuthenticatorValidationChallenge; +pub mod authenticator_validation_challenge_response_request; +pub use self::authenticator_validation_challenge_response_request::AuthenticatorValidationChallengeResponseRequest; +pub mod authenticator_web_authn_challenge; +pub use self::authenticator_web_authn_challenge::AuthenticatorWebAuthnChallenge; +pub mod authenticator_web_authn_challenge_response_request; +pub use self::authenticator_web_authn_challenge_response_request::AuthenticatorWebAuthnChallengeResponseRequest; +pub mod auto_submit_challenge_response_request; +pub use self::auto_submit_challenge_response_request::AutoSubmitChallengeResponseRequest; +pub mod autosubmit_challenge; +pub use self::autosubmit_challenge::AutosubmitChallenge; +pub mod brand; +pub use self::brand::Brand; +pub mod capabilities_enum; +pub use self::capabilities_enum::CapabilitiesEnum; +pub mod captcha_challenge; +pub use self::captcha_challenge::CaptchaChallenge; +pub mod captcha_challenge_response_request; +pub use self::captcha_challenge_response_request::CaptchaChallengeResponseRequest; +pub mod certificate_data; +pub use self::certificate_data::CertificateData; +pub mod certificate_key_pair; +pub use self::certificate_key_pair::CertificateKeyPair; +pub mod certificate_key_pair_key_type_enum; +pub use self::certificate_key_pair_key_type_enum::CertificateKeyPairKeyTypeEnum; +pub mod challenge_types; +pub use self::challenge_types::ChallengeTypes; +pub mod config; +pub use self::config::Config; +pub mod consent_challenge; +pub use self::consent_challenge::ConsentChallenge; +pub mod consent_challenge_response_request; +pub use self::consent_challenge_response_request::ConsentChallengeResponseRequest; +pub mod consent_permission; +pub use self::consent_permission::ConsentPermission; +pub mod contextual_flow_info; +pub use self::contextual_flow_info::ContextualFlowInfo; +pub mod contextual_flow_info_layout_enum; +pub use self::contextual_flow_info_layout_enum::ContextualFlowInfoLayoutEnum; +pub mod device_challenge; +pub use self::device_challenge::DeviceChallenge; +pub mod device_challenge_request; +pub use self::device_challenge_request::DeviceChallengeRequest; +pub mod device_classes_enum; +pub use self::device_classes_enum::DeviceClassesEnum; +pub mod dummy_challenge; +pub use self::dummy_challenge::DummyChallenge; +pub mod dummy_challenge_response_request; +pub use self::dummy_challenge_response_request::DummyChallengeResponseRequest; +pub mod email_challenge; +pub use self::email_challenge::EmailChallenge; +pub mod email_challenge_response_request; +pub use self::email_challenge_response_request::EmailChallengeResponseRequest; +pub mod endpoint_agent_challenge; +pub use self::endpoint_agent_challenge::EndpointAgentChallenge; +pub mod endpoint_agent_challenge_response_request; +pub use self::endpoint_agent_challenge_response_request::EndpointAgentChallengeResponseRequest; +pub mod error_detail; +pub use self::error_detail::ErrorDetail; +pub mod error_reporting_config; +pub use self::error_reporting_config::ErrorReportingConfig; +pub mod event; +pub use self::event::Event; +pub mod event_actions; +pub use self::event_actions::EventActions; +pub mod event_request; +pub use self::event_request::EventRequest; +pub mod flow_challenge_response_request; +pub use self::flow_challenge_response_request::FlowChallengeResponseRequest; +pub mod flow_designation_enum; +pub use self::flow_designation_enum::FlowDesignationEnum; +pub mod flow_error_challenge; +pub use self::flow_error_challenge::FlowErrorChallenge; +pub mod frame_challenge; +pub use self::frame_challenge::FrameChallenge; +pub mod frame_challenge_response_request; +pub use self::frame_challenge_response_request::FrameChallengeResponseRequest; +pub mod generic_error; +pub use self::generic_error::GenericError; +pub mod group; +pub use self::group::Group; +pub mod identification_challenge; +pub use self::identification_challenge::IdentificationChallenge; +pub mod identification_challenge_response_request; +pub use self::identification_challenge_response_request::IdentificationChallengeResponseRequest; +pub mod iframe_logout_challenge; +pub use self::iframe_logout_challenge::IframeLogoutChallenge; +pub mod iframe_logout_challenge_response_request; +pub use self::iframe_logout_challenge_response_request::IframeLogoutChallengeResponseRequest; +pub mod ldap_check_access; +pub use self::ldap_check_access::LdapCheckAccess; +pub mod ldap_outpost_config; +pub use self::ldap_outpost_config::LdapOutpostConfig; +pub mod ldapapi_access_mode; +pub use self::ldapapi_access_mode::LdapapiAccessMode; +pub mod log_event; +pub use self::log_event::LogEvent; +pub mod log_level_enum; +pub use self::log_level_enum::LogLevelEnum; +pub mod login_challenge_types; +pub use self::login_challenge_types::LoginChallengeTypes; +pub mod login_source; +pub use self::login_source::LoginSource; +pub mod logout_url; +pub use self::logout_url::LogoutUrl; +pub mod native_logout_challenge; +pub use self::native_logout_challenge::NativeLogoutChallenge; +pub mod native_logout_challenge_response_request; +pub use self::native_logout_challenge_response_request::NativeLogoutChallengeResponseRequest; +pub mod o_auth_device_code_challenge; +pub use self::o_auth_device_code_challenge::OAuthDeviceCodeChallenge; +pub mod o_auth_device_code_challenge_response_request; +pub use self::o_auth_device_code_challenge_response_request::OAuthDeviceCodeChallengeResponseRequest; +pub mod o_auth_device_code_finish_challenge; +pub use self::o_auth_device_code_finish_challenge::OAuthDeviceCodeFinishChallenge; +pub mod o_auth_device_code_finish_challenge_response_request; +pub use self::o_auth_device_code_finish_challenge_response_request::OAuthDeviceCodeFinishChallengeResponseRequest; +pub mod open_id_connect_configuration; +pub use self::open_id_connect_configuration::OpenIdConnectConfiguration; +pub mod outpost; +pub use self::outpost::Outpost; +pub mod outpost_type_enum; +pub use self::outpost_type_enum::OutpostTypeEnum; +pub mod paginated_brand_list; +pub use self::paginated_brand_list::PaginatedBrandList; +pub mod paginated_group_list; +pub use self::paginated_group_list::PaginatedGroupList; +pub mod paginated_ldap_outpost_config_list; +pub use self::paginated_ldap_outpost_config_list::PaginatedLdapOutpostConfigList; +pub mod paginated_outpost_list; +pub use self::paginated_outpost_list::PaginatedOutpostList; +pub mod paginated_proxy_outpost_config_list; +pub use self::paginated_proxy_outpost_config_list::PaginatedProxyOutpostConfigList; +pub mod paginated_radius_outpost_config_list; +pub use self::paginated_radius_outpost_config_list::PaginatedRadiusOutpostConfigList; +pub mod paginated_user_list; +pub use self::paginated_user_list::PaginatedUserList; +pub mod pagination; +pub use self::pagination::Pagination; +pub mod partial_group; +pub use self::partial_group::PartialGroup; +pub mod partial_user; +pub use self::partial_user::PartialUser; +pub mod password_challenge; +pub use self::password_challenge::PasswordChallenge; +pub mod password_challenge_response_request; +pub use self::password_challenge_response_request::PasswordChallengeResponseRequest; +pub mod plex_authentication_challenge; +pub use self::plex_authentication_challenge::PlexAuthenticationChallenge; +pub mod plex_authentication_challenge_response_request; +pub use self::plex_authentication_challenge_response_request::PlexAuthenticationChallengeResponseRequest; +pub mod policy_test_result; +pub use self::policy_test_result::PolicyTestResult; +pub mod prompt_challenge; +pub use self::prompt_challenge::PromptChallenge; +pub mod prompt_challenge_response_request; +pub use self::prompt_challenge_response_request::PromptChallengeResponseRequest; +pub mod prompt_choice; +pub use self::prompt_choice::PromptChoice; +pub mod prompt_type_enum; +pub use self::prompt_type_enum::PromptTypeEnum; +pub mod provider; +pub use self::provider::Provider; +pub mod proxy_mode; +pub use self::proxy_mode::ProxyMode; +pub mod proxy_outpost_config; +pub use self::proxy_outpost_config::ProxyOutpostConfig; +pub mod radius_check_access; +pub use self::radius_check_access::RadiusCheckAccess; +pub mod radius_outpost_config; +pub use self::radius_outpost_config::RadiusOutpostConfig; +pub mod redirect_challenge; +pub use self::redirect_challenge::RedirectChallenge; +pub mod redirect_challenge_response_request; +pub use self::redirect_challenge_response_request::RedirectChallengeResponseRequest; +pub mod related_group; +pub use self::related_group::RelatedGroup; +pub mod role; +pub use self::role::Role; +pub mod saml_bindings_enum; +pub use self::saml_bindings_enum::SamlBindingsEnum; +pub mod selectable_stage; +pub use self::selectable_stage::SelectableStage; +pub mod service_connection; +pub use self::service_connection::ServiceConnection; +pub mod session_end_challenge; +pub use self::session_end_challenge::SessionEndChallenge; +pub mod session_user; +pub use self::session_user::SessionUser; +pub mod shell_challenge; +pub use self::shell_challenge::ShellChallenge; +pub mod stage_prompt; +pub use self::stage_prompt::StagePrompt; +pub mod telegram_challenge_response_request; +pub use self::telegram_challenge_response_request::TelegramChallengeResponseRequest; +pub mod telegram_login_challenge; +pub use self::telegram_login_challenge::TelegramLoginChallenge; +pub mod themed_urls; +pub use self::themed_urls::ThemedUrls; +pub mod user; +pub use self::user::User; +pub mod user_login_challenge; +pub use self::user_login_challenge::UserLoginChallenge; +pub mod user_login_challenge_response_request; +pub use self::user_login_challenge_response_request::UserLoginChallengeResponseRequest; +pub mod user_self; +pub use self::user_self::UserSelf; +pub mod user_self_groups; +pub use self::user_self_groups::UserSelfGroups; +pub mod user_self_roles; +pub use self::user_self_roles::UserSelfRoles; +pub mod user_type_enum; +pub use self::user_type_enum::UserTypeEnum; +pub mod validation_error; +pub use self::validation_error::ValidationError; diff --git a/packages/client-rust/src/models/native_logout_challenge.rs b/packages/client-rust/src/models/native_logout_challenge.rs new file mode 100644 index 0000000000..20d53fc0fa --- /dev/null +++ b/packages/client-rust/src/models/native_logout_challenge.rs @@ -0,0 +1,57 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// NativeLogoutChallenge : Challenge for native browser logout +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct NativeLogoutChallenge { + #[serde(rename = "flow_info", skip_serializing_if = "Option::is_none")] + pub flow_info: Option, + #[serde(rename = "component", skip_serializing_if = "Option::is_none")] + pub component: Option, + #[serde(rename = "response_errors", skip_serializing_if = "Option::is_none")] + pub response_errors: Option>>, + #[serde(rename = "provider_name", skip_serializing_if = "Option::is_none")] + pub provider_name: Option, + #[serde(rename = "is_complete", skip_serializing_if = "Option::is_none")] + pub is_complete: Option, + #[serde(rename = "post_url", skip_serializing_if = "Option::is_none")] + pub post_url: Option, + #[serde(rename = "redirect_url", skip_serializing_if = "Option::is_none")] + pub redirect_url: Option, + #[serde(rename = "saml_binding", skip_serializing_if = "Option::is_none")] + pub saml_binding: Option, + #[serde(rename = "saml_request", skip_serializing_if = "Option::is_none")] + pub saml_request: Option, + #[serde(rename = "saml_response", skip_serializing_if = "Option::is_none")] + pub saml_response: Option, + #[serde(rename = "saml_relay_state", skip_serializing_if = "Option::is_none")] + pub saml_relay_state: Option, +} + +impl NativeLogoutChallenge { + /// Challenge for native browser logout + pub fn new() -> NativeLogoutChallenge { + NativeLogoutChallenge { + flow_info: None, + component: None, + response_errors: None, + provider_name: None, + is_complete: None, + post_url: None, + redirect_url: None, + saml_binding: None, + saml_request: None, + saml_response: None, + saml_relay_state: None, + } + } +} diff --git a/packages/client-rust/src/models/native_logout_challenge_response_request.rs b/packages/client-rust/src/models/native_logout_challenge_response_request.rs new file mode 100644 index 0000000000..5f2791a3a6 --- /dev/null +++ b/packages/client-rust/src/models/native_logout_challenge_response_request.rs @@ -0,0 +1,25 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// NativeLogoutChallengeResponseRequest : Response for native browser logout +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct NativeLogoutChallengeResponseRequest { + #[serde(rename = "component", skip_serializing_if = "Option::is_none")] + pub component: Option, +} + +impl NativeLogoutChallengeResponseRequest { + /// Response for native browser logout + pub fn new() -> NativeLogoutChallengeResponseRequest { + NativeLogoutChallengeResponseRequest { component: None } + } +} diff --git a/packages/client-rust/src/models/o_auth_device_code_challenge.rs b/packages/client-rust/src/models/o_auth_device_code_challenge.rs new file mode 100644 index 0000000000..5ec5de1778 --- /dev/null +++ b/packages/client-rust/src/models/o_auth_device_code_challenge.rs @@ -0,0 +1,33 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// OAuthDeviceCodeChallenge : OAuth Device code challenge +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct OAuthDeviceCodeChallenge { + #[serde(rename = "flow_info", skip_serializing_if = "Option::is_none")] + pub flow_info: Option, + #[serde(rename = "component", skip_serializing_if = "Option::is_none")] + pub component: Option, + #[serde(rename = "response_errors", skip_serializing_if = "Option::is_none")] + pub response_errors: Option>>, +} + +impl OAuthDeviceCodeChallenge { + /// OAuth Device code challenge + pub fn new() -> OAuthDeviceCodeChallenge { + OAuthDeviceCodeChallenge { + flow_info: None, + component: None, + response_errors: None, + } + } +} diff --git a/packages/client-rust/src/models/o_auth_device_code_challenge_response_request.rs b/packages/client-rust/src/models/o_auth_device_code_challenge_response_request.rs new file mode 100644 index 0000000000..a82f19f5a5 --- /dev/null +++ b/packages/client-rust/src/models/o_auth_device_code_challenge_response_request.rs @@ -0,0 +1,30 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// OAuthDeviceCodeChallengeResponseRequest : Response that includes the user-entered device code +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct OAuthDeviceCodeChallengeResponseRequest { + #[serde(rename = "component", skip_serializing_if = "Option::is_none")] + pub component: Option, + #[serde(rename = "code")] + pub code: String, +} + +impl OAuthDeviceCodeChallengeResponseRequest { + /// Response that includes the user-entered device code + pub fn new(code: String) -> OAuthDeviceCodeChallengeResponseRequest { + OAuthDeviceCodeChallengeResponseRequest { + component: None, + code, + } + } +} diff --git a/packages/client-rust/src/models/o_auth_device_code_finish_challenge.rs b/packages/client-rust/src/models/o_auth_device_code_finish_challenge.rs new file mode 100644 index 0000000000..2d1dccdf72 --- /dev/null +++ b/packages/client-rust/src/models/o_auth_device_code_finish_challenge.rs @@ -0,0 +1,33 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// OAuthDeviceCodeFinishChallenge : Final challenge after user enters their code +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct OAuthDeviceCodeFinishChallenge { + #[serde(rename = "flow_info", skip_serializing_if = "Option::is_none")] + pub flow_info: Option, + #[serde(rename = "component", skip_serializing_if = "Option::is_none")] + pub component: Option, + #[serde(rename = "response_errors", skip_serializing_if = "Option::is_none")] + pub response_errors: Option>>, +} + +impl OAuthDeviceCodeFinishChallenge { + /// Final challenge after user enters their code + pub fn new() -> OAuthDeviceCodeFinishChallenge { + OAuthDeviceCodeFinishChallenge { + flow_info: None, + component: None, + response_errors: None, + } + } +} diff --git a/packages/client-rust/src/models/o_auth_device_code_finish_challenge_response_request.rs b/packages/client-rust/src/models/o_auth_device_code_finish_challenge_response_request.rs new file mode 100644 index 0000000000..3e8944bd4b --- /dev/null +++ b/packages/client-rust/src/models/o_auth_device_code_finish_challenge_response_request.rs @@ -0,0 +1,26 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// OAuthDeviceCodeFinishChallengeResponseRequest : Response that device has been authenticated and +/// tab can be closed +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct OAuthDeviceCodeFinishChallengeResponseRequest { + #[serde(rename = "component", skip_serializing_if = "Option::is_none")] + pub component: Option, +} + +impl OAuthDeviceCodeFinishChallengeResponseRequest { + /// Response that device has been authenticated and tab can be closed + pub fn new() -> OAuthDeviceCodeFinishChallengeResponseRequest { + OAuthDeviceCodeFinishChallengeResponseRequest { component: None } + } +} diff --git a/packages/client-rust/src/models/open_id_connect_configuration.rs b/packages/client-rust/src/models/open_id_connect_configuration.rs new file mode 100644 index 0000000000..71add5c341 --- /dev/null +++ b/packages/client-rust/src/models/open_id_connect_configuration.rs @@ -0,0 +1,69 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// OpenIdConnectConfiguration : rest_framework Serializer for OIDC Configuration +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct OpenIdConnectConfiguration { + #[serde(rename = "issuer")] + pub issuer: String, + #[serde(rename = "authorization_endpoint")] + pub authorization_endpoint: String, + #[serde(rename = "token_endpoint")] + pub token_endpoint: String, + #[serde(rename = "userinfo_endpoint")] + pub userinfo_endpoint: String, + #[serde(rename = "end_session_endpoint")] + pub end_session_endpoint: String, + #[serde(rename = "introspection_endpoint")] + pub introspection_endpoint: String, + #[serde(rename = "jwks_uri")] + pub jwks_uri: String, + #[serde(rename = "response_types_supported")] + pub response_types_supported: Vec, + #[serde(rename = "id_token_signing_alg_values_supported")] + pub id_token_signing_alg_values_supported: Vec, + #[serde(rename = "subject_types_supported")] + pub subject_types_supported: Vec, + #[serde(rename = "token_endpoint_auth_methods_supported")] + pub token_endpoint_auth_methods_supported: Vec, +} + +impl OpenIdConnectConfiguration { + /// rest_framework Serializer for OIDC Configuration + pub fn new( + issuer: String, + authorization_endpoint: String, + token_endpoint: String, + userinfo_endpoint: String, + end_session_endpoint: String, + introspection_endpoint: String, + jwks_uri: String, + response_types_supported: Vec, + id_token_signing_alg_values_supported: Vec, + subject_types_supported: Vec, + token_endpoint_auth_methods_supported: Vec, + ) -> OpenIdConnectConfiguration { + OpenIdConnectConfiguration { + issuer, + authorization_endpoint, + token_endpoint, + userinfo_endpoint, + end_session_endpoint, + introspection_endpoint, + jwks_uri, + response_types_supported, + id_token_signing_alg_values_supported, + subject_types_supported, + token_endpoint_auth_methods_supported, + } + } +} diff --git a/packages/client-rust/src/models/outpost.rs b/packages/client-rust/src/models/outpost.rs new file mode 100644 index 0000000000..49e214ac36 --- /dev/null +++ b/packages/client-rust/src/models/outpost.rs @@ -0,0 +1,86 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// Outpost : Outpost Serializer +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct Outpost { + #[serde(rename = "pk")] + pub pk: uuid::Uuid, + #[serde(rename = "name")] + pub name: String, + #[serde(rename = "type")] + pub r#type: models::OutpostTypeEnum, + #[serde(rename = "providers")] + pub providers: Vec, + #[serde(rename = "providers_obj")] + pub providers_obj: Vec, + /// Select Service-Connection authentik should use to manage this outpost. Leave empty if + /// authentik should not handle the deployment. + #[serde( + rename = "service_connection", + default, + with = "::serde_with::rust::double_option", + skip_serializing_if = "Option::is_none" + )] + pub service_connection: Option>, + #[serde( + rename = "service_connection_obj", + deserialize_with = "Option::deserialize" + )] + pub service_connection_obj: Option, + #[serde(rename = "refresh_interval_s")] + pub refresh_interval_s: i32, + /// Get Token identifier + #[serde(rename = "token_identifier")] + pub token_identifier: String, + #[serde(rename = "config")] + pub config: std::collections::HashMap, + /// Objects that are managed by authentik. These objects are created and updated automatically. + /// This flag only indicates that an object can be overwritten by migrations. You can still + /// modify the objects via the API, but expect changes to be overwritten in a later update. + #[serde( + rename = "managed", + default, + with = "::serde_with::rust::double_option", + skip_serializing_if = "Option::is_none" + )] + pub managed: Option>, +} + +impl Outpost { + /// Outpost Serializer + pub fn new( + pk: uuid::Uuid, + name: String, + r#type: models::OutpostTypeEnum, + providers: Vec, + providers_obj: Vec, + service_connection_obj: Option, + refresh_interval_s: i32, + token_identifier: String, + config: std::collections::HashMap, + ) -> Outpost { + Outpost { + pk, + name, + r#type, + providers, + providers_obj, + service_connection: None, + service_connection_obj, + refresh_interval_s, + token_identifier, + config, + managed: None, + } + } +} diff --git a/packages/client-rust/src/models/outpost_type_enum.rs b/packages/client-rust/src/models/outpost_type_enum.rs new file mode 100644 index 0000000000..da56854392 --- /dev/null +++ b/packages/client-rust/src/models/outpost_type_enum.rs @@ -0,0 +1,41 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum OutpostTypeEnum { + #[serde(rename = "proxy")] + Proxy, + #[serde(rename = "ldap")] + Ldap, + #[serde(rename = "radius")] + Radius, + #[serde(rename = "rac")] + Rac, +} + +impl std::fmt::Display for OutpostTypeEnum { + fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { + match self { + Self::Proxy => write!(f, "proxy"), + Self::Ldap => write!(f, "ldap"), + Self::Radius => write!(f, "radius"), + Self::Rac => write!(f, "rac"), + } + } +} + +impl Default for OutpostTypeEnum { + fn default() -> OutpostTypeEnum { + Self::Proxy + } +} diff --git a/packages/client-rust/src/models/paginated_brand_list.rs b/packages/client-rust/src/models/paginated_brand_list.rs new file mode 100644 index 0000000000..3fdb1b24fa --- /dev/null +++ b/packages/client-rust/src/models/paginated_brand_list.rs @@ -0,0 +1,35 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct PaginatedBrandList { + #[serde(rename = "pagination")] + pub pagination: models::Pagination, + #[serde(rename = "results")] + pub results: Vec, + #[serde(rename = "autocomplete")] + pub autocomplete: std::collections::HashMap, +} + +impl PaginatedBrandList { + pub fn new( + pagination: models::Pagination, + results: Vec, + autocomplete: std::collections::HashMap, + ) -> PaginatedBrandList { + PaginatedBrandList { + pagination, + results, + autocomplete, + } + } +} diff --git a/packages/client-rust/src/models/paginated_group_list.rs b/packages/client-rust/src/models/paginated_group_list.rs new file mode 100644 index 0000000000..973416cf2c --- /dev/null +++ b/packages/client-rust/src/models/paginated_group_list.rs @@ -0,0 +1,35 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct PaginatedGroupList { + #[serde(rename = "pagination")] + pub pagination: models::Pagination, + #[serde(rename = "results")] + pub results: Vec, + #[serde(rename = "autocomplete")] + pub autocomplete: std::collections::HashMap, +} + +impl PaginatedGroupList { + pub fn new( + pagination: models::Pagination, + results: Vec, + autocomplete: std::collections::HashMap, + ) -> PaginatedGroupList { + PaginatedGroupList { + pagination, + results, + autocomplete, + } + } +} diff --git a/packages/client-rust/src/models/paginated_ldap_outpost_config_list.rs b/packages/client-rust/src/models/paginated_ldap_outpost_config_list.rs new file mode 100644 index 0000000000..604833e0ce --- /dev/null +++ b/packages/client-rust/src/models/paginated_ldap_outpost_config_list.rs @@ -0,0 +1,35 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct PaginatedLdapOutpostConfigList { + #[serde(rename = "pagination")] + pub pagination: models::Pagination, + #[serde(rename = "results")] + pub results: Vec, + #[serde(rename = "autocomplete")] + pub autocomplete: std::collections::HashMap, +} + +impl PaginatedLdapOutpostConfigList { + pub fn new( + pagination: models::Pagination, + results: Vec, + autocomplete: std::collections::HashMap, + ) -> PaginatedLdapOutpostConfigList { + PaginatedLdapOutpostConfigList { + pagination, + results, + autocomplete, + } + } +} diff --git a/packages/client-rust/src/models/paginated_outpost_list.rs b/packages/client-rust/src/models/paginated_outpost_list.rs new file mode 100644 index 0000000000..c061793b1c --- /dev/null +++ b/packages/client-rust/src/models/paginated_outpost_list.rs @@ -0,0 +1,35 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct PaginatedOutpostList { + #[serde(rename = "pagination")] + pub pagination: models::Pagination, + #[serde(rename = "results")] + pub results: Vec, + #[serde(rename = "autocomplete")] + pub autocomplete: std::collections::HashMap, +} + +impl PaginatedOutpostList { + pub fn new( + pagination: models::Pagination, + results: Vec, + autocomplete: std::collections::HashMap, + ) -> PaginatedOutpostList { + PaginatedOutpostList { + pagination, + results, + autocomplete, + } + } +} diff --git a/packages/client-rust/src/models/paginated_proxy_outpost_config_list.rs b/packages/client-rust/src/models/paginated_proxy_outpost_config_list.rs new file mode 100644 index 0000000000..7cc2ad2e4a --- /dev/null +++ b/packages/client-rust/src/models/paginated_proxy_outpost_config_list.rs @@ -0,0 +1,35 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct PaginatedProxyOutpostConfigList { + #[serde(rename = "pagination")] + pub pagination: models::Pagination, + #[serde(rename = "results")] + pub results: Vec, + #[serde(rename = "autocomplete")] + pub autocomplete: std::collections::HashMap, +} + +impl PaginatedProxyOutpostConfigList { + pub fn new( + pagination: models::Pagination, + results: Vec, + autocomplete: std::collections::HashMap, + ) -> PaginatedProxyOutpostConfigList { + PaginatedProxyOutpostConfigList { + pagination, + results, + autocomplete, + } + } +} diff --git a/packages/client-rust/src/models/paginated_radius_outpost_config_list.rs b/packages/client-rust/src/models/paginated_radius_outpost_config_list.rs new file mode 100644 index 0000000000..ea14389a3e --- /dev/null +++ b/packages/client-rust/src/models/paginated_radius_outpost_config_list.rs @@ -0,0 +1,35 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct PaginatedRadiusOutpostConfigList { + #[serde(rename = "pagination")] + pub pagination: models::Pagination, + #[serde(rename = "results")] + pub results: Vec, + #[serde(rename = "autocomplete")] + pub autocomplete: std::collections::HashMap, +} + +impl PaginatedRadiusOutpostConfigList { + pub fn new( + pagination: models::Pagination, + results: Vec, + autocomplete: std::collections::HashMap, + ) -> PaginatedRadiusOutpostConfigList { + PaginatedRadiusOutpostConfigList { + pagination, + results, + autocomplete, + } + } +} diff --git a/packages/client-rust/src/models/paginated_user_list.rs b/packages/client-rust/src/models/paginated_user_list.rs new file mode 100644 index 0000000000..23287b8b42 --- /dev/null +++ b/packages/client-rust/src/models/paginated_user_list.rs @@ -0,0 +1,35 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct PaginatedUserList { + #[serde(rename = "pagination")] + pub pagination: models::Pagination, + #[serde(rename = "results")] + pub results: Vec, + #[serde(rename = "autocomplete")] + pub autocomplete: std::collections::HashMap, +} + +impl PaginatedUserList { + pub fn new( + pagination: models::Pagination, + results: Vec, + autocomplete: std::collections::HashMap, + ) -> PaginatedUserList { + PaginatedUserList { + pagination, + results, + autocomplete, + } + } +} diff --git a/packages/client-rust/src/models/pagination.rs b/packages/client-rust/src/models/pagination.rs new file mode 100644 index 0000000000..b543189436 --- /dev/null +++ b/packages/client-rust/src/models/pagination.rs @@ -0,0 +1,51 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct Pagination { + #[serde(rename = "next")] + pub next: f64, + #[serde(rename = "previous")] + pub previous: f64, + #[serde(rename = "count")] + pub count: f64, + #[serde(rename = "current")] + pub current: f64, + #[serde(rename = "total_pages")] + pub total_pages: f64, + #[serde(rename = "start_index")] + pub start_index: f64, + #[serde(rename = "end_index")] + pub end_index: f64, +} + +impl Pagination { + pub fn new( + next: f64, + previous: f64, + count: f64, + current: f64, + total_pages: f64, + start_index: f64, + end_index: f64, + ) -> Pagination { + Pagination { + next, + previous, + count, + current, + total_pages, + start_index, + end_index, + } + } +} diff --git a/packages/client-rust/src/models/partial_group.rs b/packages/client-rust/src/models/partial_group.rs new file mode 100644 index 0000000000..b299e9fd5b --- /dev/null +++ b/packages/client-rust/src/models/partial_group.rs @@ -0,0 +1,41 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// PartialGroup : Partial Group Serializer, does not include child relations. +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct PartialGroup { + #[serde(rename = "pk")] + pub pk: uuid::Uuid, + /// Get a numerical, int32 ID for the group + #[serde(rename = "num_pk")] + pub num_pk: i32, + #[serde(rename = "name")] + pub name: String, + /// Users added to this group will be superusers. + #[serde(rename = "is_superuser", skip_serializing_if = "Option::is_none")] + pub is_superuser: Option, + #[serde(rename = "attributes", skip_serializing_if = "Option::is_none")] + pub attributes: Option>, +} + +impl PartialGroup { + /// Partial Group Serializer, does not include child relations. + pub fn new(pk: uuid::Uuid, num_pk: i32, name: String) -> PartialGroup { + PartialGroup { + pk, + num_pk, + name, + is_superuser: None, + attributes: None, + } + } +} diff --git a/packages/client-rust/src/models/partial_user.rs b/packages/client-rust/src/models/partial_user.rs new file mode 100644 index 0000000000..266594f0ec --- /dev/null +++ b/packages/client-rust/src/models/partial_user.rs @@ -0,0 +1,57 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// PartialUser : Partial User Serializer, does not include child relations. +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct PartialUser { + #[serde(rename = "pk")] + pub pk: i32, + /// Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only. + #[serde(rename = "username")] + pub username: String, + /// User's display name. + #[serde(rename = "name")] + pub name: String, + /// Designates whether this user should be treated as active. Unselect this instead of deleting + /// accounts. + #[serde(rename = "is_active", skip_serializing_if = "Option::is_none")] + pub is_active: Option, + #[serde( + rename = "last_login", + default, + with = "::serde_with::rust::double_option", + skip_serializing_if = "Option::is_none" + )] + pub last_login: Option>, + #[serde(rename = "email", skip_serializing_if = "Option::is_none")] + pub email: Option, + #[serde(rename = "attributes", skip_serializing_if = "Option::is_none")] + pub attributes: Option>, + #[serde(rename = "uid")] + pub uid: String, +} + +impl PartialUser { + /// Partial User Serializer, does not include child relations. + pub fn new(pk: i32, username: String, name: String, uid: String) -> PartialUser { + PartialUser { + pk, + username, + name, + is_active: None, + last_login: None, + email: None, + attributes: None, + uid, + } + } +} diff --git a/packages/client-rust/src/models/password_challenge.rs b/packages/client-rust/src/models/password_challenge.rs new file mode 100644 index 0000000000..87665b3603 --- /dev/null +++ b/packages/client-rust/src/models/password_challenge.rs @@ -0,0 +1,48 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// PasswordChallenge : Password challenge UI fields +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct PasswordChallenge { + #[serde(rename = "flow_info", skip_serializing_if = "Option::is_none")] + pub flow_info: Option, + #[serde(rename = "component", skip_serializing_if = "Option::is_none")] + pub component: Option, + #[serde(rename = "response_errors", skip_serializing_if = "Option::is_none")] + pub response_errors: Option>>, + #[serde(rename = "pending_user")] + pub pending_user: String, + #[serde(rename = "pending_user_avatar")] + pub pending_user_avatar: String, + #[serde(rename = "recovery_url", skip_serializing_if = "Option::is_none")] + pub recovery_url: Option, + #[serde( + rename = "allow_show_password", + skip_serializing_if = "Option::is_none" + )] + pub allow_show_password: Option, +} + +impl PasswordChallenge { + /// Password challenge UI fields + pub fn new(pending_user: String, pending_user_avatar: String) -> PasswordChallenge { + PasswordChallenge { + flow_info: None, + component: None, + response_errors: None, + pending_user, + pending_user_avatar, + recovery_url: None, + allow_show_password: None, + } + } +} diff --git a/packages/client-rust/src/models/password_challenge_response_request.rs b/packages/client-rust/src/models/password_challenge_response_request.rs new file mode 100644 index 0000000000..de77b3cd81 --- /dev/null +++ b/packages/client-rust/src/models/password_challenge_response_request.rs @@ -0,0 +1,30 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// PasswordChallengeResponseRequest : Password challenge response +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct PasswordChallengeResponseRequest { + #[serde(rename = "component", skip_serializing_if = "Option::is_none")] + pub component: Option, + #[serde(rename = "password")] + pub password: String, +} + +impl PasswordChallengeResponseRequest { + /// Password challenge response + pub fn new(password: String) -> PasswordChallengeResponseRequest { + PasswordChallengeResponseRequest { + component: None, + password, + } + } +} diff --git a/packages/client-rust/src/models/plex_authentication_challenge.rs b/packages/client-rust/src/models/plex_authentication_challenge.rs new file mode 100644 index 0000000000..99a96909d4 --- /dev/null +++ b/packages/client-rust/src/models/plex_authentication_challenge.rs @@ -0,0 +1,39 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// PlexAuthenticationChallenge : Challenge shown to the user in identification stage +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct PlexAuthenticationChallenge { + #[serde(rename = "flow_info", skip_serializing_if = "Option::is_none")] + pub flow_info: Option, + #[serde(rename = "component", skip_serializing_if = "Option::is_none")] + pub component: Option, + #[serde(rename = "response_errors", skip_serializing_if = "Option::is_none")] + pub response_errors: Option>>, + #[serde(rename = "client_id")] + pub client_id: String, + #[serde(rename = "slug")] + pub slug: String, +} + +impl PlexAuthenticationChallenge { + /// Challenge shown to the user in identification stage + pub fn new(client_id: String, slug: String) -> PlexAuthenticationChallenge { + PlexAuthenticationChallenge { + flow_info: None, + component: None, + response_errors: None, + client_id, + slug, + } + } +} diff --git a/packages/client-rust/src/models/plex_authentication_challenge_response_request.rs b/packages/client-rust/src/models/plex_authentication_challenge_response_request.rs new file mode 100644 index 0000000000..b566e30558 --- /dev/null +++ b/packages/client-rust/src/models/plex_authentication_challenge_response_request.rs @@ -0,0 +1,25 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// PlexAuthenticationChallengeResponseRequest : Pseudo class for plex response +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct PlexAuthenticationChallengeResponseRequest { + #[serde(rename = "component", skip_serializing_if = "Option::is_none")] + pub component: Option, +} + +impl PlexAuthenticationChallengeResponseRequest { + /// Pseudo class for plex response + pub fn new() -> PlexAuthenticationChallengeResponseRequest { + PlexAuthenticationChallengeResponseRequest { component: None } + } +} diff --git a/packages/client-rust/src/models/policy_test_result.rs b/packages/client-rust/src/models/policy_test_result.rs new file mode 100644 index 0000000000..164b03c41c --- /dev/null +++ b/packages/client-rust/src/models/policy_test_result.rs @@ -0,0 +1,37 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// PolicyTestResult : result of a policy test +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct PolicyTestResult { + #[serde(rename = "passing")] + pub passing: bool, + #[serde(rename = "messages")] + pub messages: Vec, + #[serde(rename = "log_messages")] + pub log_messages: Vec, +} + +impl PolicyTestResult { + /// result of a policy test + pub fn new( + passing: bool, + messages: Vec, + log_messages: Vec, + ) -> PolicyTestResult { + PolicyTestResult { + passing, + messages, + log_messages, + } + } +} diff --git a/packages/client-rust/src/models/prompt_challenge.rs b/packages/client-rust/src/models/prompt_challenge.rs new file mode 100644 index 0000000000..e8c4d3879b --- /dev/null +++ b/packages/client-rust/src/models/prompt_challenge.rs @@ -0,0 +1,36 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// PromptChallenge : Initial challenge being sent, define fields +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct PromptChallenge { + #[serde(rename = "flow_info", skip_serializing_if = "Option::is_none")] + pub flow_info: Option, + #[serde(rename = "component", skip_serializing_if = "Option::is_none")] + pub component: Option, + #[serde(rename = "response_errors", skip_serializing_if = "Option::is_none")] + pub response_errors: Option>>, + #[serde(rename = "fields")] + pub fields: Vec, +} + +impl PromptChallenge { + /// Initial challenge being sent, define fields + pub fn new(fields: Vec) -> PromptChallenge { + PromptChallenge { + flow_info: None, + component: None, + response_errors: None, + fields, + } + } +} diff --git a/packages/client-rust/src/models/prompt_challenge_response_request.rs b/packages/client-rust/src/models/prompt_challenge_response_request.rs new file mode 100644 index 0000000000..9fd8e9c00f --- /dev/null +++ b/packages/client-rust/src/models/prompt_challenge_response_request.rs @@ -0,0 +1,26 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// PromptChallengeResponseRequest : Validate response, fields are dynamically created based on the +/// stage +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct PromptChallengeResponseRequest { + #[serde(rename = "component", skip_serializing_if = "Option::is_none")] + pub component: Option, +} + +impl PromptChallengeResponseRequest { + /// Validate response, fields are dynamically created based on the stage + pub fn new() -> PromptChallengeResponseRequest { + PromptChallengeResponseRequest { component: None } + } +} diff --git a/packages/client-rust/src/models/prompt_choice.rs b/packages/client-rust/src/models/prompt_choice.rs new file mode 100644 index 0000000000..897de8c455 --- /dev/null +++ b/packages/client-rust/src/models/prompt_choice.rs @@ -0,0 +1,27 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// PromptChoice : Serializer for a single Choice field +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct PromptChoice { + #[serde(rename = "value")] + pub value: String, + #[serde(rename = "label")] + pub label: String, +} + +impl PromptChoice { + /// Serializer for a single Choice field + pub fn new(value: String, label: String) -> PromptChoice { + PromptChoice { value, label } + } +} diff --git a/packages/client-rust/src/models/prompt_type_enum.rs b/packages/client-rust/src/models/prompt_type_enum.rs new file mode 100644 index 0000000000..e938f1476b --- /dev/null +++ b/packages/client-rust/src/models/prompt_type_enum.rs @@ -0,0 +1,92 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum PromptTypeEnum { + #[serde(rename = "text")] + Text, + #[serde(rename = "text_area")] + TextArea, + #[serde(rename = "text_read_only")] + TextReadOnly, + #[serde(rename = "text_area_read_only")] + TextAreaReadOnly, + #[serde(rename = "username")] + Username, + #[serde(rename = "email")] + Email, + #[serde(rename = "password")] + Password, + #[serde(rename = "number")] + Number, + #[serde(rename = "checkbox")] + Checkbox, + #[serde(rename = "radio-button-group")] + RadioButtonGroup, + #[serde(rename = "dropdown")] + Dropdown, + #[serde(rename = "date")] + Date, + #[serde(rename = "date-time")] + DateTime, + #[serde(rename = "file")] + File, + #[serde(rename = "separator")] + Separator, + #[serde(rename = "hidden")] + Hidden, + #[serde(rename = "static")] + Static, + #[serde(rename = "alert_info")] + AlertInfo, + #[serde(rename = "alert_warning")] + AlertWarning, + #[serde(rename = "alert_danger")] + AlertDanger, + #[serde(rename = "ak-locale")] + AkLocale, +} + +impl std::fmt::Display for PromptTypeEnum { + fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { + match self { + Self::Text => write!(f, "text"), + Self::TextArea => write!(f, "text_area"), + Self::TextReadOnly => write!(f, "text_read_only"), + Self::TextAreaReadOnly => write!(f, "text_area_read_only"), + Self::Username => write!(f, "username"), + Self::Email => write!(f, "email"), + Self::Password => write!(f, "password"), + Self::Number => write!(f, "number"), + Self::Checkbox => write!(f, "checkbox"), + Self::RadioButtonGroup => write!(f, "radio-button-group"), + Self::Dropdown => write!(f, "dropdown"), + Self::Date => write!(f, "date"), + Self::DateTime => write!(f, "date-time"), + Self::File => write!(f, "file"), + Self::Separator => write!(f, "separator"), + Self::Hidden => write!(f, "hidden"), + Self::Static => write!(f, "static"), + Self::AlertInfo => write!(f, "alert_info"), + Self::AlertWarning => write!(f, "alert_warning"), + Self::AlertDanger => write!(f, "alert_danger"), + Self::AkLocale => write!(f, "ak-locale"), + } + } +} + +impl Default for PromptTypeEnum { + fn default() -> PromptTypeEnum { + Self::Text + } +} diff --git a/packages/client-rust/src/models/provider.rs b/packages/client-rust/src/models/provider.rs new file mode 100644 index 0000000000..3adf9618c0 --- /dev/null +++ b/packages/client-rust/src/models/provider.rs @@ -0,0 +1,108 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// Provider : Provider Serializer +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct Provider { + #[serde(rename = "pk")] + pub pk: i32, + #[serde(rename = "name")] + pub name: String, + /// Flow used for authentication when the associated application is accessed by an + /// un-authenticated user. + #[serde( + rename = "authentication_flow", + default, + with = "::serde_with::rust::double_option", + skip_serializing_if = "Option::is_none" + )] + pub authentication_flow: Option>, + /// Flow used when authorizing this provider. + #[serde(rename = "authorization_flow")] + pub authorization_flow: uuid::Uuid, + /// Flow used ending the session from a provider. + #[serde(rename = "invalidation_flow")] + pub invalidation_flow: uuid::Uuid, + #[serde(rename = "property_mappings", skip_serializing_if = "Option::is_none")] + pub property_mappings: Option>, + /// Get object component so that we know how to edit the object + #[serde(rename = "component")] + pub component: String, + /// Internal application name, used in URLs. + #[serde( + rename = "assigned_application_slug", + deserialize_with = "Option::deserialize" + )] + pub assigned_application_slug: Option, + /// Application's display Name. + #[serde( + rename = "assigned_application_name", + deserialize_with = "Option::deserialize" + )] + pub assigned_application_name: Option, + /// Internal application name, used in URLs. + #[serde( + rename = "assigned_backchannel_application_slug", + deserialize_with = "Option::deserialize" + )] + pub assigned_backchannel_application_slug: Option, + /// Application's display Name. + #[serde( + rename = "assigned_backchannel_application_name", + deserialize_with = "Option::deserialize" + )] + pub assigned_backchannel_application_name: Option, + /// Return object's verbose_name + #[serde(rename = "verbose_name")] + pub verbose_name: String, + /// Return object's plural verbose_name + #[serde(rename = "verbose_name_plural")] + pub verbose_name_plural: String, + /// Return internal model name + #[serde(rename = "meta_model_name")] + pub meta_model_name: String, +} + +impl Provider { + /// Provider Serializer + pub fn new( + pk: i32, + name: String, + authorization_flow: uuid::Uuid, + invalidation_flow: uuid::Uuid, + component: String, + assigned_application_slug: Option, + assigned_application_name: Option, + assigned_backchannel_application_slug: Option, + assigned_backchannel_application_name: Option, + verbose_name: String, + verbose_name_plural: String, + meta_model_name: String, + ) -> Provider { + Provider { + pk, + name, + authentication_flow: None, + authorization_flow, + invalidation_flow, + property_mappings: None, + component, + assigned_application_slug, + assigned_application_name, + assigned_backchannel_application_slug, + assigned_backchannel_application_name, + verbose_name, + verbose_name_plural, + meta_model_name, + } + } +} diff --git a/packages/client-rust/src/models/proxy_mode.rs b/packages/client-rust/src/models/proxy_mode.rs new file mode 100644 index 0000000000..14b53834dd --- /dev/null +++ b/packages/client-rust/src/models/proxy_mode.rs @@ -0,0 +1,38 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum ProxyMode { + #[serde(rename = "proxy")] + Proxy, + #[serde(rename = "forward_single")] + ForwardSingle, + #[serde(rename = "forward_domain")] + ForwardDomain, +} + +impl std::fmt::Display for ProxyMode { + fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { + match self { + Self::Proxy => write!(f, "proxy"), + Self::ForwardSingle => write!(f, "forward_single"), + Self::ForwardDomain => write!(f, "forward_domain"), + } + } +} + +impl Default for ProxyMode { + fn default() -> ProxyMode { + Self::Proxy + } +} diff --git a/packages/client-rust/src/models/proxy_outpost_config.rs b/packages/client-rust/src/models/proxy_outpost_config.rs new file mode 100644 index 0000000000..921701bb6f --- /dev/null +++ b/packages/client-rust/src/models/proxy_outpost_config.rs @@ -0,0 +1,131 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// ProxyOutpostConfig : Proxy provider serializer for outposts +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct ProxyOutpostConfig { + #[serde(rename = "pk")] + pub pk: i32, + #[serde(rename = "name")] + pub name: String, + #[serde(rename = "internal_host", skip_serializing_if = "Option::is_none")] + pub internal_host: Option, + #[serde(rename = "external_host")] + pub external_host: String, + /// Validate SSL Certificates of upstream servers + #[serde( + rename = "internal_host_ssl_validation", + skip_serializing_if = "Option::is_none" + )] + pub internal_host_ssl_validation: Option, + #[serde(rename = "client_id", skip_serializing_if = "Option::is_none")] + pub client_id: Option, + #[serde(rename = "client_secret", skip_serializing_if = "Option::is_none")] + pub client_secret: Option, + #[serde(rename = "oidc_configuration")] + pub oidc_configuration: models::OpenIdConnectConfiguration, + #[serde(rename = "cookie_secret", skip_serializing_if = "Option::is_none")] + pub cookie_secret: Option, + #[serde( + rename = "certificate", + default, + with = "::serde_with::rust::double_option", + skip_serializing_if = "Option::is_none" + )] + pub certificate: Option>, + /// Regular expressions for which authentication is not required. Each new line is interpreted + /// as a new Regular Expression. + #[serde(rename = "skip_path_regex", skip_serializing_if = "Option::is_none")] + pub skip_path_regex: Option, + /// Set a custom HTTP-Basic Authentication header based on values from authentik. + #[serde(rename = "basic_auth_enabled", skip_serializing_if = "Option::is_none")] + pub basic_auth_enabled: Option, + /// User/Group Attribute used for the password part of the HTTP-Basic Header. + #[serde( + rename = "basic_auth_password_attribute", + skip_serializing_if = "Option::is_none" + )] + pub basic_auth_password_attribute: Option, + /// User/Group Attribute used for the user part of the HTTP-Basic Header. If not set, the + /// user's Email address is used. + #[serde( + rename = "basic_auth_user_attribute", + skip_serializing_if = "Option::is_none" + )] + pub basic_auth_user_attribute: Option, + /// Enable support for forwardAuth in traefik and nginx auth_request. Exclusive with + /// internal_host. + #[serde(rename = "mode", skip_serializing_if = "Option::is_none")] + pub mode: Option, + #[serde(rename = "cookie_domain", skip_serializing_if = "Option::is_none")] + pub cookie_domain: Option, + /// Get token validity as second count + #[serde( + rename = "access_token_validity", + deserialize_with = "Option::deserialize" + )] + pub access_token_validity: Option, + /// When enabled, this provider will intercept the authorization header and authenticate + /// requests based on its value. + #[serde( + rename = "intercept_header_auth", + skip_serializing_if = "Option::is_none" + )] + pub intercept_header_auth: Option, + /// Get all the scope names the outpost should request, including custom-defined ones + #[serde(rename = "scopes_to_request")] + pub scopes_to_request: Vec, + /// Internal application name, used in URLs. + #[serde(rename = "assigned_application_slug")] + pub assigned_application_slug: String, + /// Application's display Name. + #[serde(rename = "assigned_application_name")] + pub assigned_application_name: String, +} + +impl ProxyOutpostConfig { + /// Proxy provider serializer for outposts + pub fn new( + pk: i32, + name: String, + external_host: String, + oidc_configuration: models::OpenIdConnectConfiguration, + access_token_validity: Option, + scopes_to_request: Vec, + assigned_application_slug: String, + assigned_application_name: String, + ) -> ProxyOutpostConfig { + ProxyOutpostConfig { + pk, + name, + internal_host: None, + external_host, + internal_host_ssl_validation: None, + client_id: None, + client_secret: None, + oidc_configuration, + cookie_secret: None, + certificate: None, + skip_path_regex: None, + basic_auth_enabled: None, + basic_auth_password_attribute: None, + basic_auth_user_attribute: None, + mode: None, + cookie_domain: None, + access_token_validity, + intercept_header_auth: None, + scopes_to_request, + assigned_application_slug, + assigned_application_name, + } + } +} diff --git a/packages/client-rust/src/models/radius_check_access.rs b/packages/client-rust/src/models/radius_check_access.rs new file mode 100644 index 0000000000..7322b28771 --- /dev/null +++ b/packages/client-rust/src/models/radius_check_access.rs @@ -0,0 +1,30 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// RadiusCheckAccess : Base serializer class which doesn't implement create/update methods +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct RadiusCheckAccess { + #[serde(rename = "attributes", skip_serializing_if = "Option::is_none")] + pub attributes: Option, + #[serde(rename = "access")] + pub access: models::PolicyTestResult, +} + +impl RadiusCheckAccess { + /// Base serializer class which doesn't implement create/update methods + pub fn new(access: models::PolicyTestResult) -> RadiusCheckAccess { + RadiusCheckAccess { + attributes: None, + access, + } + } +} diff --git a/packages/client-rust/src/models/radius_outpost_config.rs b/packages/client-rust/src/models/radius_outpost_config.rs new file mode 100644 index 0000000000..5aeb7b8ab8 --- /dev/null +++ b/packages/client-rust/src/models/radius_outpost_config.rs @@ -0,0 +1,65 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// RadiusOutpostConfig : RadiusProvider Serializer +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct RadiusOutpostConfig { + #[serde(rename = "pk")] + pub pk: i32, + #[serde(rename = "name")] + pub name: String, + #[serde(rename = "application_slug")] + pub application_slug: String, + #[serde(rename = "auth_flow_slug")] + pub auth_flow_slug: String, + /// List of CIDRs (comma-separated) that clients can connect from. A more specific CIDR will + /// match before a looser one. Clients connecting from a non-specified CIDR will be dropped. + #[serde(rename = "client_networks", skip_serializing_if = "Option::is_none")] + pub client_networks: Option, + /// Shared secret between clients and server to hash packets. + #[serde(rename = "shared_secret", skip_serializing_if = "Option::is_none")] + pub shared_secret: Option, + /// When enabled, code-based multi-factor authentication can be used by appending a semicolon + /// and the TOTP code to the password. This should only be enabled if all users that will bind + /// to this provider have a TOTP device configured, as otherwise a password may incorrectly be + /// rejected if it contains a semicolon. + #[serde(rename = "mfa_support", skip_serializing_if = "Option::is_none")] + pub mfa_support: Option, + #[serde( + rename = "certificate", + default, + with = "::serde_with::rust::double_option", + skip_serializing_if = "Option::is_none" + )] + pub certificate: Option>, +} + +impl RadiusOutpostConfig { + /// RadiusProvider Serializer + pub fn new( + pk: i32, + name: String, + application_slug: String, + auth_flow_slug: String, + ) -> RadiusOutpostConfig { + RadiusOutpostConfig { + pk, + name, + application_slug, + auth_flow_slug, + client_networks: None, + shared_secret: None, + mfa_support: None, + certificate: None, + } + } +} diff --git a/packages/client-rust/src/models/redirect_challenge.rs b/packages/client-rust/src/models/redirect_challenge.rs new file mode 100644 index 0000000000..1551732a5c --- /dev/null +++ b/packages/client-rust/src/models/redirect_challenge.rs @@ -0,0 +1,36 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// RedirectChallenge : Challenge type to redirect the client +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct RedirectChallenge { + #[serde(rename = "flow_info", skip_serializing_if = "Option::is_none")] + pub flow_info: Option, + #[serde(rename = "component", skip_serializing_if = "Option::is_none")] + pub component: Option, + #[serde(rename = "response_errors", skip_serializing_if = "Option::is_none")] + pub response_errors: Option>>, + #[serde(rename = "to")] + pub to: String, +} + +impl RedirectChallenge { + /// Challenge type to redirect the client + pub fn new(to: String) -> RedirectChallenge { + RedirectChallenge { + flow_info: None, + component: None, + response_errors: None, + to, + } + } +} diff --git a/packages/client-rust/src/models/redirect_challenge_response_request.rs b/packages/client-rust/src/models/redirect_challenge_response_request.rs new file mode 100644 index 0000000000..15812d1703 --- /dev/null +++ b/packages/client-rust/src/models/redirect_challenge_response_request.rs @@ -0,0 +1,30 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// RedirectChallengeResponseRequest : Redirect challenge response +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct RedirectChallengeResponseRequest { + #[serde(rename = "component", skip_serializing_if = "Option::is_none")] + pub component: Option, + #[serde(rename = "to")] + pub to: String, +} + +impl RedirectChallengeResponseRequest { + /// Redirect challenge response + pub fn new(to: String) -> RedirectChallengeResponseRequest { + RedirectChallengeResponseRequest { + component: None, + to, + } + } +} diff --git a/packages/client-rust/src/models/related_group.rs b/packages/client-rust/src/models/related_group.rs new file mode 100644 index 0000000000..9df1478c9f --- /dev/null +++ b/packages/client-rust/src/models/related_group.rs @@ -0,0 +1,40 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// RelatedGroup : Stripped down group serializer to show relevant children/parents for groups +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct RelatedGroup { + #[serde(rename = "pk")] + pub pk: uuid::Uuid, + #[serde(rename = "name")] + pub name: String, + /// Users added to this group will be superusers. + #[serde(rename = "is_superuser", skip_serializing_if = "Option::is_none")] + pub is_superuser: Option, + #[serde(rename = "attributes", skip_serializing_if = "Option::is_none")] + pub attributes: Option>, + #[serde(rename = "group_uuid")] + pub group_uuid: uuid::Uuid, +} + +impl RelatedGroup { + /// Stripped down group serializer to show relevant children/parents for groups + pub fn new(pk: uuid::Uuid, name: String, group_uuid: uuid::Uuid) -> RelatedGroup { + RelatedGroup { + pk, + name, + is_superuser: None, + attributes: None, + group_uuid, + } + } +} diff --git a/packages/client-rust/src/models/role.rs b/packages/client-rust/src/models/role.rs new file mode 100644 index 0000000000..3dd4e5dfd4 --- /dev/null +++ b/packages/client-rust/src/models/role.rs @@ -0,0 +1,27 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// Role : Role serializer +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct Role { + #[serde(rename = "pk")] + pub pk: uuid::Uuid, + #[serde(rename = "name")] + pub name: String, +} + +impl Role { + /// Role serializer + pub fn new(pk: uuid::Uuid, name: String) -> Role { + Role { pk, name } + } +} diff --git a/packages/client-rust/src/models/saml_bindings_enum.rs b/packages/client-rust/src/models/saml_bindings_enum.rs new file mode 100644 index 0000000000..eadb32e793 --- /dev/null +++ b/packages/client-rust/src/models/saml_bindings_enum.rs @@ -0,0 +1,35 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum SamlBindingsEnum { + #[serde(rename = "redirect")] + Redirect, + #[serde(rename = "post")] + Post, +} + +impl std::fmt::Display for SamlBindingsEnum { + fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { + match self { + Self::Redirect => write!(f, "redirect"), + Self::Post => write!(f, "post"), + } + } +} + +impl Default for SamlBindingsEnum { + fn default() -> SamlBindingsEnum { + Self::Redirect + } +} diff --git a/packages/client-rust/src/models/selectable_stage.rs b/packages/client-rust/src/models/selectable_stage.rs new file mode 100644 index 0000000000..ff680d32e2 --- /dev/null +++ b/packages/client-rust/src/models/selectable_stage.rs @@ -0,0 +1,41 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// SelectableStage : Serializer for stages which can be selected by users +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct SelectableStage { + #[serde(rename = "pk")] + pub pk: uuid::Uuid, + #[serde(rename = "name")] + pub name: String, + #[serde(rename = "verbose_name")] + pub verbose_name: String, + #[serde(rename = "meta_model_name")] + pub meta_model_name: String, +} + +impl SelectableStage { + /// Serializer for stages which can be selected by users + pub fn new( + pk: uuid::Uuid, + name: String, + verbose_name: String, + meta_model_name: String, + ) -> SelectableStage { + SelectableStage { + pk, + name, + verbose_name, + meta_model_name, + } + } +} diff --git a/packages/client-rust/src/models/service_connection.rs b/packages/client-rust/src/models/service_connection.rs new file mode 100644 index 0000000000..b0ab2e3ac2 --- /dev/null +++ b/packages/client-rust/src/models/service_connection.rs @@ -0,0 +1,57 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// ServiceConnection : ServiceConnection Serializer +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct ServiceConnection { + #[serde(rename = "pk")] + pub pk: uuid::Uuid, + #[serde(rename = "name")] + pub name: String, + /// If enabled, use the local connection. Required Docker socket/Kubernetes Integration + #[serde(rename = "local", skip_serializing_if = "Option::is_none")] + pub local: Option, + /// Return component used to edit this object + #[serde(rename = "component")] + pub component: String, + /// Return object's verbose_name + #[serde(rename = "verbose_name")] + pub verbose_name: String, + /// Return object's plural verbose_name + #[serde(rename = "verbose_name_plural")] + pub verbose_name_plural: String, + /// Return internal model name + #[serde(rename = "meta_model_name")] + pub meta_model_name: String, +} + +impl ServiceConnection { + /// ServiceConnection Serializer + pub fn new( + pk: uuid::Uuid, + name: String, + component: String, + verbose_name: String, + verbose_name_plural: String, + meta_model_name: String, + ) -> ServiceConnection { + ServiceConnection { + pk, + name, + local: None, + component, + verbose_name, + verbose_name_plural, + meta_model_name, + } + } +} diff --git a/packages/client-rust/src/models/session_end_challenge.rs b/packages/client-rust/src/models/session_end_challenge.rs new file mode 100644 index 0000000000..da47aed8ce --- /dev/null +++ b/packages/client-rust/src/models/session_end_challenge.rs @@ -0,0 +1,61 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// SessionEndChallenge : Challenge for ending a session +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct SessionEndChallenge { + #[serde(rename = "flow_info", skip_serializing_if = "Option::is_none")] + pub flow_info: Option, + #[serde(rename = "component", skip_serializing_if = "Option::is_none")] + pub component: Option, + #[serde(rename = "response_errors", skip_serializing_if = "Option::is_none")] + pub response_errors: Option>>, + #[serde(rename = "pending_user")] + pub pending_user: String, + #[serde(rename = "pending_user_avatar")] + pub pending_user_avatar: String, + #[serde(rename = "application_name", skip_serializing_if = "Option::is_none")] + pub application_name: Option, + #[serde( + rename = "application_launch_url", + skip_serializing_if = "Option::is_none" + )] + pub application_launch_url: Option, + #[serde( + rename = "invalidation_flow_url", + skip_serializing_if = "Option::is_none" + )] + pub invalidation_flow_url: Option, + #[serde(rename = "brand_name")] + pub brand_name: String, +} + +impl SessionEndChallenge { + /// Challenge for ending a session + pub fn new( + pending_user: String, + pending_user_avatar: String, + brand_name: String, + ) -> SessionEndChallenge { + SessionEndChallenge { + flow_info: None, + component: None, + response_errors: None, + pending_user, + pending_user_avatar, + application_name: None, + application_launch_url: None, + invalidation_flow_url: None, + brand_name, + } + } +} diff --git a/packages/client-rust/src/models/session_user.rs b/packages/client-rust/src/models/session_user.rs new file mode 100644 index 0000000000..8c3cd59e83 --- /dev/null +++ b/packages/client-rust/src/models/session_user.rs @@ -0,0 +1,32 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// SessionUser : Response for the /user/me endpoint, returns the currently active user (as `user` +/// property) and, if this user is being impersonated, the original user in the `original` property. +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct SessionUser { + #[serde(rename = "user")] + pub user: models::UserSelf, + #[serde(rename = "original", skip_serializing_if = "Option::is_none")] + pub original: Option, +} + +impl SessionUser { + /// Response for the /user/me endpoint, returns the currently active user (as `user` property) + /// and, if this user is being impersonated, the original user in the `original` property. + pub fn new(user: models::UserSelf) -> SessionUser { + SessionUser { + user, + original: None, + } + } +} diff --git a/packages/client-rust/src/models/shell_challenge.rs b/packages/client-rust/src/models/shell_challenge.rs new file mode 100644 index 0000000000..83e209cf34 --- /dev/null +++ b/packages/client-rust/src/models/shell_challenge.rs @@ -0,0 +1,36 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// ShellChallenge : challenge type to render HTML as-is +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct ShellChallenge { + #[serde(rename = "flow_info", skip_serializing_if = "Option::is_none")] + pub flow_info: Option, + #[serde(rename = "component", skip_serializing_if = "Option::is_none")] + pub component: Option, + #[serde(rename = "response_errors", skip_serializing_if = "Option::is_none")] + pub response_errors: Option>>, + #[serde(rename = "body")] + pub body: String, +} + +impl ShellChallenge { + /// challenge type to render HTML as-is + pub fn new(body: String) -> ShellChallenge { + ShellChallenge { + flow_info: None, + component: None, + response_errors: None, + body, + } + } +} diff --git a/packages/client-rust/src/models/stage_prompt.rs b/packages/client-rust/src/models/stage_prompt.rs new file mode 100644 index 0000000000..3fe591fec7 --- /dev/null +++ b/packages/client-rust/src/models/stage_prompt.rs @@ -0,0 +1,61 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// StagePrompt : Serializer for a single Prompt field +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct StagePrompt { + #[serde(rename = "field_key")] + pub field_key: String, + #[serde(rename = "label")] + pub label: String, + #[serde(rename = "type")] + pub r#type: models::PromptTypeEnum, + #[serde(rename = "required")] + pub required: bool, + #[serde(rename = "placeholder")] + pub placeholder: String, + #[serde(rename = "initial_value")] + pub initial_value: String, + #[serde(rename = "order")] + pub order: i32, + #[serde(rename = "sub_text")] + pub sub_text: String, + #[serde(rename = "choices", deserialize_with = "Option::deserialize")] + pub choices: Option>, +} + +impl StagePrompt { + /// Serializer for a single Prompt field + pub fn new( + field_key: String, + label: String, + r#type: models::PromptTypeEnum, + required: bool, + placeholder: String, + initial_value: String, + order: i32, + sub_text: String, + choices: Option>, + ) -> StagePrompt { + StagePrompt { + field_key, + label, + r#type, + required, + placeholder, + initial_value, + order, + sub_text, + choices, + } + } +} diff --git a/packages/client-rust/src/models/telegram_challenge_response_request.rs b/packages/client-rust/src/models/telegram_challenge_response_request.rs new file mode 100644 index 0000000000..08c4caa898 --- /dev/null +++ b/packages/client-rust/src/models/telegram_challenge_response_request.rs @@ -0,0 +1,48 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// TelegramChallengeResponseRequest : Base class for all challenge responses +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct TelegramChallengeResponseRequest { + #[serde(rename = "id")] + pub id: i32, + #[serde(rename = "first_name", skip_serializing_if = "Option::is_none")] + pub first_name: Option, + #[serde(rename = "last_name", skip_serializing_if = "Option::is_none")] + pub last_name: Option, + #[serde(rename = "username", skip_serializing_if = "Option::is_none")] + pub username: Option, + #[serde(rename = "photo_url", skip_serializing_if = "Option::is_none")] + pub photo_url: Option, + #[serde(rename = "auth_date")] + pub auth_date: i32, + #[serde(rename = "hash")] + pub hash: String, + #[serde(rename = "component", skip_serializing_if = "Option::is_none")] + pub component: Option, +} + +impl TelegramChallengeResponseRequest { + /// Base class for all challenge responses + pub fn new(id: i32, auth_date: i32, hash: String) -> TelegramChallengeResponseRequest { + TelegramChallengeResponseRequest { + id, + first_name: None, + last_name: None, + username: None, + photo_url: None, + auth_date, + hash, + component: None, + } + } +} diff --git a/packages/client-rust/src/models/telegram_login_challenge.rs b/packages/client-rust/src/models/telegram_login_challenge.rs new file mode 100644 index 0000000000..b02ad3de4a --- /dev/null +++ b/packages/client-rust/src/models/telegram_login_challenge.rs @@ -0,0 +1,40 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// TelegramLoginChallenge : Base login challenge for Identification stage +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct TelegramLoginChallenge { + #[serde(rename = "flow_info", skip_serializing_if = "Option::is_none")] + pub flow_info: Option, + #[serde(rename = "component", skip_serializing_if = "Option::is_none")] + pub component: Option, + #[serde(rename = "response_errors", skip_serializing_if = "Option::is_none")] + pub response_errors: Option>>, + /// Telegram bot username + #[serde(rename = "bot_username")] + pub bot_username: String, + #[serde(rename = "request_message_access")] + pub request_message_access: bool, +} + +impl TelegramLoginChallenge { + /// Base login challenge for Identification stage + pub fn new(bot_username: String, request_message_access: bool) -> TelegramLoginChallenge { + TelegramLoginChallenge { + flow_info: None, + component: None, + response_errors: None, + bot_username, + request_message_access, + } + } +} diff --git a/packages/client-rust/src/models/themed_urls.rs b/packages/client-rust/src/models/themed_urls.rs new file mode 100644 index 0000000000..4b2005902e --- /dev/null +++ b/packages/client-rust/src/models/themed_urls.rs @@ -0,0 +1,40 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// ThemedUrls : Themed URLs - maps theme names to URLs for light and dark themes +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct ThemedUrls { + #[serde( + rename = "light", + default, + with = "::serde_with::rust::double_option", + skip_serializing_if = "Option::is_none" + )] + pub light: Option>, + #[serde( + rename = "dark", + default, + with = "::serde_with::rust::double_option", + skip_serializing_if = "Option::is_none" + )] + pub dark: Option>, +} + +impl ThemedUrls { + /// Themed URLs - maps theme names to URLs for light and dark themes + pub fn new() -> ThemedUrls { + ThemedUrls { + light: None, + dark: None, + } + } +} diff --git a/packages/client-rust/src/models/user.rs b/packages/client-rust/src/models/user.rs new file mode 100644 index 0000000000..700365a266 --- /dev/null +++ b/packages/client-rust/src/models/user.rs @@ -0,0 +1,106 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// User : User Serializer +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct User { + #[serde(rename = "pk")] + pub pk: i32, + #[serde(rename = "username")] + pub username: String, + /// User's display name. + #[serde(rename = "name")] + pub name: String, + /// Designates whether this user should be treated as active. Unselect this instead of deleting + /// accounts. + #[serde(rename = "is_active", skip_serializing_if = "Option::is_none")] + pub is_active: Option, + #[serde( + rename = "last_login", + default, + with = "::serde_with::rust::double_option", + skip_serializing_if = "Option::is_none" + )] + pub last_login: Option>, + #[serde(rename = "date_joined")] + pub date_joined: String, + #[serde(rename = "is_superuser")] + pub is_superuser: bool, + #[serde(rename = "groups", skip_serializing_if = "Option::is_none")] + pub groups: Option>, + #[serde(rename = "groups_obj", deserialize_with = "Option::deserialize")] + pub groups_obj: Option>, + #[serde(rename = "roles", skip_serializing_if = "Option::is_none")] + pub roles: Option>, + #[serde(rename = "roles_obj", deserialize_with = "Option::deserialize")] + pub roles_obj: Option>, + #[serde(rename = "email", skip_serializing_if = "Option::is_none")] + pub email: Option, + /// User's avatar, either a http/https URL or a data URI + #[serde(rename = "avatar")] + pub avatar: String, + #[serde(rename = "attributes", skip_serializing_if = "Option::is_none")] + pub attributes: Option>, + #[serde(rename = "uid")] + pub uid: String, + #[serde(rename = "path", skip_serializing_if = "Option::is_none")] + pub path: Option, + #[serde(rename = "type", skip_serializing_if = "Option::is_none")] + pub r#type: Option, + #[serde(rename = "uuid")] + pub uuid: uuid::Uuid, + #[serde(rename = "password_change_date")] + pub password_change_date: String, + #[serde(rename = "last_updated")] + pub last_updated: String, +} + +impl User { + /// User Serializer + pub fn new( + pk: i32, + username: String, + name: String, + date_joined: String, + is_superuser: bool, + groups_obj: Option>, + roles_obj: Option>, + avatar: String, + uid: String, + uuid: uuid::Uuid, + password_change_date: String, + last_updated: String, + ) -> User { + User { + pk, + username, + name, + is_active: None, + last_login: None, + date_joined, + is_superuser, + groups: None, + groups_obj, + roles: None, + roles_obj, + email: None, + avatar, + attributes: None, + uid, + path: None, + r#type: None, + uuid, + password_change_date, + last_updated, + } + } +} diff --git a/packages/client-rust/src/models/user_login_challenge.rs b/packages/client-rust/src/models/user_login_challenge.rs new file mode 100644 index 0000000000..0092b9e810 --- /dev/null +++ b/packages/client-rust/src/models/user_login_challenge.rs @@ -0,0 +1,39 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// UserLoginChallenge : Empty challenge +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct UserLoginChallenge { + #[serde(rename = "flow_info", skip_serializing_if = "Option::is_none")] + pub flow_info: Option, + #[serde(rename = "component", skip_serializing_if = "Option::is_none")] + pub component: Option, + #[serde(rename = "response_errors", skip_serializing_if = "Option::is_none")] + pub response_errors: Option>>, + #[serde(rename = "pending_user")] + pub pending_user: String, + #[serde(rename = "pending_user_avatar")] + pub pending_user_avatar: String, +} + +impl UserLoginChallenge { + /// Empty challenge + pub fn new(pending_user: String, pending_user_avatar: String) -> UserLoginChallenge { + UserLoginChallenge { + flow_info: None, + component: None, + response_errors: None, + pending_user, + pending_user_avatar, + } + } +} diff --git a/packages/client-rust/src/models/user_login_challenge_response_request.rs b/packages/client-rust/src/models/user_login_challenge_response_request.rs new file mode 100644 index 0000000000..2c5a6bab76 --- /dev/null +++ b/packages/client-rust/src/models/user_login_challenge_response_request.rs @@ -0,0 +1,30 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// UserLoginChallengeResponseRequest : User login challenge +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct UserLoginChallengeResponseRequest { + #[serde(rename = "component", skip_serializing_if = "Option::is_none")] + pub component: Option, + #[serde(rename = "remember_me")] + pub remember_me: bool, +} + +impl UserLoginChallengeResponseRequest { + /// User login challenge + pub fn new(remember_me: bool) -> UserLoginChallengeResponseRequest { + UserLoginChallengeResponseRequest { + component: None, + remember_me, + } + } +} diff --git a/packages/client-rust/src/models/user_self.rs b/packages/client-rust/src/models/user_self.rs new file mode 100644 index 0000000000..ea43f3b75a --- /dev/null +++ b/packages/client-rust/src/models/user_self.rs @@ -0,0 +1,82 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// UserSelf : User Serializer for information a user can retrieve about themselves +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct UserSelf { + #[serde(rename = "pk")] + pub pk: i32, + /// Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only. + #[serde(rename = "username")] + pub username: String, + /// User's display name. + #[serde(rename = "name")] + pub name: String, + /// Designates whether this user should be treated as active. Unselect this instead of deleting + /// accounts. + #[serde(rename = "is_active")] + pub is_active: bool, + #[serde(rename = "is_superuser")] + pub is_superuser: bool, + #[serde(rename = "groups")] + pub groups: Vec, + #[serde(rename = "roles")] + pub roles: Vec, + #[serde(rename = "email", skip_serializing_if = "Option::is_none")] + pub email: Option, + /// User's avatar, either a http/https URL or a data URI + #[serde(rename = "avatar")] + pub avatar: String, + #[serde(rename = "uid")] + pub uid: String, + /// Get user settings with brand and group settings applied + #[serde(rename = "settings")] + pub settings: std::collections::HashMap, + #[serde(rename = "type", skip_serializing_if = "Option::is_none")] + pub r#type: Option, + /// Get all system permissions assigned to the user + #[serde(rename = "system_permissions")] + pub system_permissions: Vec, +} + +impl UserSelf { + /// User Serializer for information a user can retrieve about themselves + pub fn new( + pk: i32, + username: String, + name: String, + is_active: bool, + is_superuser: bool, + groups: Vec, + roles: Vec, + avatar: String, + uid: String, + settings: std::collections::HashMap, + system_permissions: Vec, + ) -> UserSelf { + UserSelf { + pk, + username, + name, + is_active, + is_superuser, + groups, + roles, + email: None, + avatar, + uid, + settings, + r#type: None, + system_permissions, + } + } +} diff --git a/packages/client-rust/src/models/user_self_groups.rs b/packages/client-rust/src/models/user_self_groups.rs new file mode 100644 index 0000000000..883a4a40ae --- /dev/null +++ b/packages/client-rust/src/models/user_self_groups.rs @@ -0,0 +1,25 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct UserSelfGroups { + #[serde(rename = "name")] + pub name: String, + #[serde(rename = "pk")] + pub pk: String, +} + +impl UserSelfGroups { + pub fn new(name: String, pk: String) -> UserSelfGroups { + UserSelfGroups { name, pk } + } +} diff --git a/packages/client-rust/src/models/user_self_roles.rs b/packages/client-rust/src/models/user_self_roles.rs new file mode 100644 index 0000000000..13e0aaac7b --- /dev/null +++ b/packages/client-rust/src/models/user_self_roles.rs @@ -0,0 +1,25 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct UserSelfRoles { + #[serde(rename = "name")] + pub name: String, + #[serde(rename = "pk")] + pub pk: String, +} + +impl UserSelfRoles { + pub fn new(name: String, pk: String) -> UserSelfRoles { + UserSelfRoles { name, pk } + } +} diff --git a/packages/client-rust/src/models/user_type_enum.rs b/packages/client-rust/src/models/user_type_enum.rs new file mode 100644 index 0000000000..a5ec114398 --- /dev/null +++ b/packages/client-rust/src/models/user_type_enum.rs @@ -0,0 +1,41 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +pub enum UserTypeEnum { + #[serde(rename = "internal")] + Internal, + #[serde(rename = "external")] + External, + #[serde(rename = "service_account")] + ServiceAccount, + #[serde(rename = "internal_service_account")] + InternalServiceAccount, +} + +impl std::fmt::Display for UserTypeEnum { + fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { + match self { + Self::Internal => write!(f, "internal"), + Self::External => write!(f, "external"), + Self::ServiceAccount => write!(f, "service_account"), + Self::InternalServiceAccount => write!(f, "internal_service_account"), + } + } +} + +impl Default for UserTypeEnum { + fn default() -> UserTypeEnum { + Self::Internal + } +} diff --git a/packages/client-rust/src/models/validation_error.rs b/packages/client-rust/src/models/validation_error.rs new file mode 100644 index 0000000000..64ac0ed060 --- /dev/null +++ b/packages/client-rust/src/models/validation_error.rs @@ -0,0 +1,30 @@ +// authentik +// +// Making authentication simple. +// +// The version of the OpenAPI document: 2026.8.0-rc1 +// Contact: hello@goauthentik.io +// Generated by: https://openapi-generator.tech + +use serde::{Deserialize, Serialize}; + +use crate::models; + +/// ValidationError : Validation Error +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct ValidationError { + #[serde(rename = "non_field_errors", skip_serializing_if = "Option::is_none")] + pub non_field_errors: Option>, + #[serde(rename = "code", skip_serializing_if = "Option::is_none")] + pub code: Option, +} + +impl ValidationError { + /// Validation Error + pub fn new() -> ValidationError { + ValidationError { + non_field_errors: None, + code: None, + } + } +} diff --git a/packages/client-ts/.gitignore b/packages/client-ts/.gitignore new file mode 100644 index 0000000000..3cf51d416e --- /dev/null +++ b/packages/client-ts/.gitignore @@ -0,0 +1,5 @@ +wwwroot/*.js +node_modules +typings +dist +*.tsbuildinfo diff --git a/packages/client-ts/.openapi-generator-ignore b/packages/client-ts/.openapi-generator-ignore new file mode 100644 index 0000000000..3881c12128 --- /dev/null +++ b/packages/client-ts/.openapi-generator-ignore @@ -0,0 +1,5 @@ +.gitignore +.npmignore +docs/** +README.md +package.json diff --git a/packages/client-ts/Makefile b/packages/client-ts/Makefile new file mode 100644 index 0000000000..cb692d021e --- /dev/null +++ b/packages/client-ts/Makefile @@ -0,0 +1,18 @@ +.SHELLFLAGS += -x -e +PWD = $(shell pwd) +UID = $(shell id -u) +GID = $(shell id -g) + +build: + rm -rf src + docker compose run --rm --user "${UID}:${GID}" gen \ + generate \ + -i /schema.yml \ + -g typescript-fetch \ + -o local \ + -c /local/config.yaml \ + --additional-properties=npmVersion=0.0.0 \ + --git-repo-id authentik \ + --git-user-id goauthentik + rm -rf "${PWD}/.openapi-generator" + npx prettier --write -u "${PWD}" diff --git a/packages/client-ts/compose.yml b/packages/client-ts/compose.yml new file mode 100644 index 0000000000..629eeb762f --- /dev/null +++ b/packages/client-ts/compose.yml @@ -0,0 +1,9 @@ +--- +services: + gen: + image: docker.io/openapitools/openapi-generator-cli:v7.21.0 + restart: never + network_mode: none + volumes: + - ./:/local + - ../../schema.yml:/schema.yml:ro diff --git a/packages/client-ts/config.yaml b/packages/client-ts/config.yaml new file mode 100644 index 0000000000..4b3d7ef6aa --- /dev/null +++ b/packages/client-ts/config.yaml @@ -0,0 +1,9 @@ +--- +templateDir: /local/templates/ +additionalProperties: + typescriptThreePlus: true + supportsES6: true + npmName: "@goauthentik/api" + fileContentDataType: Blob + enumUnknownDefaultCase: true + useObjectParameters: true diff --git a/packages/client-ts/package.json b/packages/client-ts/package.json new file mode 100644 index 0000000000..f86c7e74a5 --- /dev/null +++ b/packages/client-ts/package.json @@ -0,0 +1,25 @@ +{ + "name": "@goauthentik/api", + "version": "0.0.0", + "description": "OpenAPI client for @goauthentik/api", + "author": "OpenAPI-Generator", + "repository": { + "type": "git", + "url": "https://github.com/goauthentik/authentik.git" + }, + "scripts": { + "build": "npm run clean && tsc -b tsconfig.json tsconfig.esm.json", + "clean": "tsc -b --clean tsconfig.json tsconfig.esm.json", + "prepare": "npm run build" + }, + "main": "./dist/index.js", + "types": "./dist/index.d.ts", + "devDependencies": { + "@goauthentik/prettier-config": "^3.5.0", + "prettier": "^3.8.1", + "typescript": "^4.0 || ^5.0" + }, + "prettier": "@goauthentik/prettier-config", + "sideEffects": false, + "module": "./dist/esm/index.js" +} diff --git a/packages/client-ts/src/apis/AdminApi.ts b/packages/client-ts/src/apis/AdminApi.ts new file mode 100644 index 0000000000..82576d92db --- /dev/null +++ b/packages/client-ts/src/apis/AdminApi.ts @@ -0,0 +1,900 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { + App, + FileList, + PatchedSettingsRequest, + Settings, + SettingsRequest, + SystemInfo, + UsageEnum, + UsedBy, + Version, + VersionHistory, +} from "../models/index"; +import { + AppFromJSON, + FileListFromJSON, + PatchedSettingsRequestToJSON, + SettingsFromJSON, + SettingsRequestToJSON, + SystemInfoFromJSON, + UsedByFromJSON, + VersionFromJSON, + VersionHistoryFromJSON, +} from "../models/index"; +import * as runtime from "../runtime"; + +export interface AdminFileCreateRequest { + file: Blob; + name?: string; + usage?: string; +} + +export interface AdminFileDestroyRequest { + name?: string; + usage?: UsageEnum; +} + +export interface AdminFileListRequest { + manageableOnly?: boolean; + search?: string; + usage?: UsageEnum; +} + +export interface AdminFileUsedByListRequest { + name?: string; +} + +export interface AdminSettingsPartialUpdateRequest { + patchedSettingsRequest?: PatchedSettingsRequest; +} + +export interface AdminSettingsUpdateRequest { + settingsRequest: SettingsRequest; +} + +export interface AdminVersionHistoryListRequest { + build?: string; + ordering?: string; + search?: string; + version?: string; +} + +export interface AdminVersionHistoryRetrieveRequest { + id: number; +} + +/** + * + */ +export class AdminApi extends runtime.BaseAPI { + /** + * Creates request options for adminAppsList without sending the request + */ + async adminAppsListRequestOpts(): Promise { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/admin/apps/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Read-only view list all installed apps + */ + async adminAppsListRaw( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.adminAppsListRequestOpts(); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(AppFromJSON)); + } + + /** + * Read-only view list all installed apps + */ + async adminAppsList( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.adminAppsListRaw(initOverrides); + return await response.value(); + } + + /** + * Creates request options for adminFileCreate without sending the request + */ + async adminFileCreateRequestOpts( + requestParameters: AdminFileCreateRequest, + ): Promise { + if (requestParameters["file"] == null) { + throw new runtime.RequiredError( + "file", + 'Required parameter "file" was null or undefined when calling adminFileCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + const consumes: runtime.Consume[] = [{ contentType: "multipart/form-data" }]; + // @ts-ignore: canConsumeForm may be unused + const canConsumeForm = runtime.canConsumeForm(consumes); + + let formParams: { append(param: string, value: any): any }; + let useForm = false; + // use FormData to transmit files using content-type "multipart/form-data" + useForm = canConsumeForm; + if (useForm) { + formParams = new FormData(); + } else { + formParams = new URLSearchParams(); + } + + if (requestParameters["file"] != null) { + formParams.append("file", requestParameters["file"] as any); + } + + if (requestParameters["name"] != null) { + formParams.append("name", requestParameters["name"] as any); + } + + if (requestParameters["usage"] != null) { + formParams.append("usage", requestParameters["usage"] as any); + } + + let urlPath = `/admin/file/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: formParams, + }; + } + + /** + * Upload file to storage backend. + */ + async adminFileCreateRaw( + requestParameters: AdminFileCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.adminFileCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Upload file to storage backend. + */ + async adminFileCreate( + requestParameters: AdminFileCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.adminFileCreateRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for adminFileDestroy without sending the request + */ + async adminFileDestroyRequestOpts( + requestParameters: AdminFileDestroyRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["usage"] != null) { + queryParameters["usage"] = requestParameters["usage"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/admin/file/`; + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Delete file from storage backend. + */ + async adminFileDestroyRaw( + requestParameters: AdminFileDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.adminFileDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Delete file from storage backend. + */ + async adminFileDestroy( + requestParameters: AdminFileDestroyRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.adminFileDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for adminFileList without sending the request + */ + async adminFileListRequestOpts( + requestParameters: AdminFileListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["manageableOnly"] != null) { + queryParameters["manageable_only"] = requestParameters["manageableOnly"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["usage"] != null) { + queryParameters["usage"] = requestParameters["usage"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/admin/file/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * List files from storage backend. + */ + async adminFileListRaw( + requestParameters: AdminFileListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.adminFileListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + jsonValue.map(FileListFromJSON), + ); + } + + /** + * List files from storage backend. + */ + async adminFileList( + requestParameters: AdminFileListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.adminFileListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for adminFileUsedByList without sending the request + */ + async adminFileUsedByListRequestOpts( + requestParameters: AdminFileUsedByListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/admin/file/used_by/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + */ + async adminFileUsedByListRaw( + requestParameters: AdminFileUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.adminFileUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + */ + async adminFileUsedByList( + requestParameters: AdminFileUsedByListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.adminFileUsedByListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for adminModelsList without sending the request + */ + async adminModelsListRequestOpts(): Promise { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/admin/models/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Read-only view list all installed models + */ + async adminModelsListRaw( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.adminModelsListRequestOpts(); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(AppFromJSON)); + } + + /** + * Read-only view list all installed models + */ + async adminModelsList( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.adminModelsListRaw(initOverrides); + return await response.value(); + } + + /** + * Creates request options for adminSettingsPartialUpdate without sending the request + */ + async adminSettingsPartialUpdateRequestOpts( + requestParameters: AdminSettingsPartialUpdateRequest, + ): Promise { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/admin/settings/`; + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedSettingsRequestToJSON(requestParameters["patchedSettingsRequest"]), + }; + } + + /** + * Settings view + */ + async adminSettingsPartialUpdateRaw( + requestParameters: AdminSettingsPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.adminSettingsPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => SettingsFromJSON(jsonValue)); + } + + /** + * Settings view + */ + async adminSettingsPartialUpdate( + requestParameters: AdminSettingsPartialUpdateRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.adminSettingsPartialUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for adminSettingsRetrieve without sending the request + */ + async adminSettingsRetrieveRequestOpts(): Promise { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/admin/settings/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Settings view + */ + async adminSettingsRetrieveRaw( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.adminSettingsRetrieveRequestOpts(); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => SettingsFromJSON(jsonValue)); + } + + /** + * Settings view + */ + async adminSettingsRetrieve( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.adminSettingsRetrieveRaw(initOverrides); + return await response.value(); + } + + /** + * Creates request options for adminSettingsUpdate without sending the request + */ + async adminSettingsUpdateRequestOpts( + requestParameters: AdminSettingsUpdateRequest, + ): Promise { + if (requestParameters["settingsRequest"] == null) { + throw new runtime.RequiredError( + "settingsRequest", + 'Required parameter "settingsRequest" was null or undefined when calling adminSettingsUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/admin/settings/`; + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: SettingsRequestToJSON(requestParameters["settingsRequest"]), + }; + } + + /** + * Settings view + */ + async adminSettingsUpdateRaw( + requestParameters: AdminSettingsUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.adminSettingsUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => SettingsFromJSON(jsonValue)); + } + + /** + * Settings view + */ + async adminSettingsUpdate( + requestParameters: AdminSettingsUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.adminSettingsUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for adminSystemCreate without sending the request + */ + async adminSystemCreateRequestOpts(): Promise { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/admin/system/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get system information. + */ + async adminSystemCreateRaw( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.adminSystemCreateRequestOpts(); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => SystemInfoFromJSON(jsonValue)); + } + + /** + * Get system information. + */ + async adminSystemCreate( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.adminSystemCreateRaw(initOverrides); + return await response.value(); + } + + /** + * Creates request options for adminSystemRetrieve without sending the request + */ + async adminSystemRetrieveRequestOpts(): Promise { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/admin/system/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get system information. + */ + async adminSystemRetrieveRaw( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.adminSystemRetrieveRequestOpts(); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => SystemInfoFromJSON(jsonValue)); + } + + /** + * Get system information. + */ + async adminSystemRetrieve( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.adminSystemRetrieveRaw(initOverrides); + return await response.value(); + } + + /** + * Creates request options for adminVersionHistoryList without sending the request + */ + async adminVersionHistoryListRequestOpts( + requestParameters: AdminVersionHistoryListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["build"] != null) { + queryParameters["build"] = requestParameters["build"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["version"] != null) { + queryParameters["version"] = requestParameters["version"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/admin/version/history/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * VersionHistory Viewset + */ + async adminVersionHistoryListRaw( + requestParameters: AdminVersionHistoryListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.adminVersionHistoryListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + jsonValue.map(VersionHistoryFromJSON), + ); + } + + /** + * VersionHistory Viewset + */ + async adminVersionHistoryList( + requestParameters: AdminVersionHistoryListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.adminVersionHistoryListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for adminVersionHistoryRetrieve without sending the request + */ + async adminVersionHistoryRetrieveRequestOpts( + requestParameters: AdminVersionHistoryRetrieveRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling adminVersionHistoryRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/admin/version/history/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * VersionHistory Viewset + */ + async adminVersionHistoryRetrieveRaw( + requestParameters: AdminVersionHistoryRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.adminVersionHistoryRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + VersionHistoryFromJSON(jsonValue), + ); + } + + /** + * VersionHistory Viewset + */ + async adminVersionHistoryRetrieve( + requestParameters: AdminVersionHistoryRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.adminVersionHistoryRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for adminVersionRetrieve without sending the request + */ + async adminVersionRetrieveRequestOpts(): Promise { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/admin/version/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get running and latest version. + */ + async adminVersionRetrieveRaw( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.adminVersionRetrieveRequestOpts(); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => VersionFromJSON(jsonValue)); + } + + /** + * Get running and latest version. + */ + async adminVersionRetrieve( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.adminVersionRetrieveRaw(initOverrides); + return await response.value(); + } +} diff --git a/packages/client-ts/src/apis/AuthenticatorsApi.ts b/packages/client-ts/src/apis/AuthenticatorsApi.ts new file mode 100644 index 0000000000..45606fc3d0 --- /dev/null +++ b/packages/client-ts/src/apis/AuthenticatorsApi.ts @@ -0,0 +1,6181 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { + Device, + DuoDevice, + DuoDeviceRequest, + EmailDevice, + EmailDeviceRequest, + GoogleEndpointDevice, + GoogleEndpointDeviceRequest, + PaginatedDuoDeviceList, + PaginatedEmailDeviceList, + PaginatedGoogleEndpointDeviceList, + PaginatedSMSDeviceList, + PaginatedStaticDeviceList, + PaginatedTOTPDeviceList, + PaginatedWebAuthnDeviceList, + PatchedDuoDeviceRequest, + PatchedEmailDeviceRequest, + PatchedGoogleEndpointDeviceRequest, + PatchedSMSDeviceRequest, + PatchedStaticDeviceRequest, + PatchedTOTPDeviceRequest, + PatchedWebAuthnDeviceRequest, + SMSDevice, + SMSDeviceRequest, + StaticDevice, + StaticDeviceRequest, + TOTPDevice, + TOTPDeviceRequest, + UsedBy, + WebAuthnDevice, + WebAuthnDeviceRequest, +} from "../models/index"; +import { + DeviceFromJSON, + DuoDeviceFromJSON, + DuoDeviceRequestToJSON, + EmailDeviceFromJSON, + EmailDeviceRequestToJSON, + GoogleEndpointDeviceFromJSON, + GoogleEndpointDeviceRequestToJSON, + PaginatedDuoDeviceListFromJSON, + PaginatedEmailDeviceListFromJSON, + PaginatedGoogleEndpointDeviceListFromJSON, + PaginatedSMSDeviceListFromJSON, + PaginatedStaticDeviceListFromJSON, + PaginatedTOTPDeviceListFromJSON, + PaginatedWebAuthnDeviceListFromJSON, + PatchedDuoDeviceRequestToJSON, + PatchedEmailDeviceRequestToJSON, + PatchedGoogleEndpointDeviceRequestToJSON, + PatchedSMSDeviceRequestToJSON, + PatchedStaticDeviceRequestToJSON, + PatchedTOTPDeviceRequestToJSON, + PatchedWebAuthnDeviceRequestToJSON, + SMSDeviceFromJSON, + SMSDeviceRequestToJSON, + StaticDeviceFromJSON, + StaticDeviceRequestToJSON, + TOTPDeviceFromJSON, + TOTPDeviceRequestToJSON, + UsedByFromJSON, + WebAuthnDeviceFromJSON, + WebAuthnDeviceRequestToJSON, +} from "../models/index"; +import * as runtime from "../runtime"; + +export interface AuthenticatorsAdminAllListRequest { + user?: number; +} + +export interface AuthenticatorsAdminDuoCreateRequest { + duoDeviceRequest: DuoDeviceRequest; +} + +export interface AuthenticatorsAdminDuoDestroyRequest { + id: number; +} + +export interface AuthenticatorsAdminDuoListRequest { + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; +} + +export interface AuthenticatorsAdminDuoPartialUpdateRequest { + id: number; + patchedDuoDeviceRequest?: PatchedDuoDeviceRequest; +} + +export interface AuthenticatorsAdminDuoRetrieveRequest { + id: number; +} + +export interface AuthenticatorsAdminDuoUpdateRequest { + id: number; + duoDeviceRequest: DuoDeviceRequest; +} + +export interface AuthenticatorsAdminEmailCreateRequest { + emailDeviceRequest: EmailDeviceRequest; +} + +export interface AuthenticatorsAdminEmailDestroyRequest { + id: number; +} + +export interface AuthenticatorsAdminEmailListRequest { + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; +} + +export interface AuthenticatorsAdminEmailPartialUpdateRequest { + id: number; + patchedEmailDeviceRequest?: PatchedEmailDeviceRequest; +} + +export interface AuthenticatorsAdminEmailRetrieveRequest { + id: number; +} + +export interface AuthenticatorsAdminEmailUpdateRequest { + id: number; + emailDeviceRequest: EmailDeviceRequest; +} + +export interface AuthenticatorsAdminEndpointCreateRequest { + googleEndpointDeviceRequest: GoogleEndpointDeviceRequest; +} + +export interface AuthenticatorsAdminEndpointDestroyRequest { + uuid: string; +} + +export interface AuthenticatorsAdminEndpointListRequest { + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; +} + +export interface AuthenticatorsAdminEndpointPartialUpdateRequest { + uuid: string; + patchedGoogleEndpointDeviceRequest?: PatchedGoogleEndpointDeviceRequest; +} + +export interface AuthenticatorsAdminEndpointRetrieveRequest { + uuid: string; +} + +export interface AuthenticatorsAdminEndpointUpdateRequest { + uuid: string; + googleEndpointDeviceRequest: GoogleEndpointDeviceRequest; +} + +export interface AuthenticatorsAdminSmsCreateRequest { + sMSDeviceRequest: SMSDeviceRequest; +} + +export interface AuthenticatorsAdminSmsDestroyRequest { + id: number; +} + +export interface AuthenticatorsAdminSmsListRequest { + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; +} + +export interface AuthenticatorsAdminSmsPartialUpdateRequest { + id: number; + patchedSMSDeviceRequest?: PatchedSMSDeviceRequest; +} + +export interface AuthenticatorsAdminSmsRetrieveRequest { + id: number; +} + +export interface AuthenticatorsAdminSmsUpdateRequest { + id: number; + sMSDeviceRequest: SMSDeviceRequest; +} + +export interface AuthenticatorsAdminStaticCreateRequest { + staticDeviceRequest: StaticDeviceRequest; +} + +export interface AuthenticatorsAdminStaticDestroyRequest { + id: number; +} + +export interface AuthenticatorsAdminStaticListRequest { + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; +} + +export interface AuthenticatorsAdminStaticPartialUpdateRequest { + id: number; + patchedStaticDeviceRequest?: PatchedStaticDeviceRequest; +} + +export interface AuthenticatorsAdminStaticRetrieveRequest { + id: number; +} + +export interface AuthenticatorsAdminStaticUpdateRequest { + id: number; + staticDeviceRequest: StaticDeviceRequest; +} + +export interface AuthenticatorsAdminTotpCreateRequest { + tOTPDeviceRequest: TOTPDeviceRequest; +} + +export interface AuthenticatorsAdminTotpDestroyRequest { + id: number; +} + +export interface AuthenticatorsAdminTotpListRequest { + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; +} + +export interface AuthenticatorsAdminTotpPartialUpdateRequest { + id: number; + patchedTOTPDeviceRequest?: PatchedTOTPDeviceRequest; +} + +export interface AuthenticatorsAdminTotpRetrieveRequest { + id: number; +} + +export interface AuthenticatorsAdminTotpUpdateRequest { + id: number; + tOTPDeviceRequest: TOTPDeviceRequest; +} + +export interface AuthenticatorsAdminWebauthnCreateRequest { + webAuthnDeviceRequest: WebAuthnDeviceRequest; +} + +export interface AuthenticatorsAdminWebauthnDestroyRequest { + id: number; +} + +export interface AuthenticatorsAdminWebauthnListRequest { + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; +} + +export interface AuthenticatorsAdminWebauthnPartialUpdateRequest { + id: number; + patchedWebAuthnDeviceRequest?: PatchedWebAuthnDeviceRequest; +} + +export interface AuthenticatorsAdminWebauthnRetrieveRequest { + id: number; +} + +export interface AuthenticatorsAdminWebauthnUpdateRequest { + id: number; + webAuthnDeviceRequest: WebAuthnDeviceRequest; +} + +export interface AuthenticatorsDuoDestroyRequest { + id: number; +} + +export interface AuthenticatorsDuoListRequest { + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; +} + +export interface AuthenticatorsDuoPartialUpdateRequest { + id: number; + patchedDuoDeviceRequest?: PatchedDuoDeviceRequest; +} + +export interface AuthenticatorsDuoRetrieveRequest { + id: number; +} + +export interface AuthenticatorsDuoUpdateRequest { + id: number; + duoDeviceRequest: DuoDeviceRequest; +} + +export interface AuthenticatorsDuoUsedByListRequest { + id: number; +} + +export interface AuthenticatorsEmailDestroyRequest { + id: number; +} + +export interface AuthenticatorsEmailListRequest { + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; +} + +export interface AuthenticatorsEmailPartialUpdateRequest { + id: number; + patchedEmailDeviceRequest?: PatchedEmailDeviceRequest; +} + +export interface AuthenticatorsEmailRetrieveRequest { + id: number; +} + +export interface AuthenticatorsEmailUpdateRequest { + id: number; + emailDeviceRequest: EmailDeviceRequest; +} + +export interface AuthenticatorsEmailUsedByListRequest { + id: number; +} + +export interface AuthenticatorsEndpointListRequest { + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; +} + +export interface AuthenticatorsEndpointRetrieveRequest { + uuid: string; +} + +export interface AuthenticatorsEndpointUsedByListRequest { + uuid: string; +} + +export interface AuthenticatorsSmsDestroyRequest { + id: number; +} + +export interface AuthenticatorsSmsListRequest { + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; +} + +export interface AuthenticatorsSmsPartialUpdateRequest { + id: number; + patchedSMSDeviceRequest?: PatchedSMSDeviceRequest; +} + +export interface AuthenticatorsSmsRetrieveRequest { + id: number; +} + +export interface AuthenticatorsSmsUpdateRequest { + id: number; + sMSDeviceRequest: SMSDeviceRequest; +} + +export interface AuthenticatorsSmsUsedByListRequest { + id: number; +} + +export interface AuthenticatorsStaticDestroyRequest { + id: number; +} + +export interface AuthenticatorsStaticListRequest { + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; +} + +export interface AuthenticatorsStaticPartialUpdateRequest { + id: number; + patchedStaticDeviceRequest?: PatchedStaticDeviceRequest; +} + +export interface AuthenticatorsStaticRetrieveRequest { + id: number; +} + +export interface AuthenticatorsStaticUpdateRequest { + id: number; + staticDeviceRequest: StaticDeviceRequest; +} + +export interface AuthenticatorsStaticUsedByListRequest { + id: number; +} + +export interface AuthenticatorsTotpDestroyRequest { + id: number; +} + +export interface AuthenticatorsTotpListRequest { + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; +} + +export interface AuthenticatorsTotpPartialUpdateRequest { + id: number; + patchedTOTPDeviceRequest?: PatchedTOTPDeviceRequest; +} + +export interface AuthenticatorsTotpRetrieveRequest { + id: number; +} + +export interface AuthenticatorsTotpUpdateRequest { + id: number; + tOTPDeviceRequest: TOTPDeviceRequest; +} + +export interface AuthenticatorsTotpUsedByListRequest { + id: number; +} + +export interface AuthenticatorsWebauthnDestroyRequest { + id: number; +} + +export interface AuthenticatorsWebauthnListRequest { + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; +} + +export interface AuthenticatorsWebauthnPartialUpdateRequest { + id: number; + patchedWebAuthnDeviceRequest?: PatchedWebAuthnDeviceRequest; +} + +export interface AuthenticatorsWebauthnRetrieveRequest { + id: number; +} + +export interface AuthenticatorsWebauthnUpdateRequest { + id: number; + webAuthnDeviceRequest: WebAuthnDeviceRequest; +} + +export interface AuthenticatorsWebauthnUsedByListRequest { + id: number; +} + +/** + * + */ +export class AuthenticatorsApi extends runtime.BaseAPI { + /** + * Creates request options for authenticatorsAdminAllList without sending the request + */ + async authenticatorsAdminAllListRequestOpts( + requestParameters: AuthenticatorsAdminAllListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["user"] != null) { + queryParameters["user"] = requestParameters["user"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/admin/all/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get all devices for current user + */ + async authenticatorsAdminAllListRaw( + requestParameters: AuthenticatorsAdminAllListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.authenticatorsAdminAllListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(DeviceFromJSON)); + } + + /** + * Get all devices for current user + */ + async authenticatorsAdminAllList( + requestParameters: AuthenticatorsAdminAllListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.authenticatorsAdminAllListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for authenticatorsAdminDuoCreate without sending the request + */ + async authenticatorsAdminDuoCreateRequestOpts( + requestParameters: AuthenticatorsAdminDuoCreateRequest, + ): Promise { + if (requestParameters["duoDeviceRequest"] == null) { + throw new runtime.RequiredError( + "duoDeviceRequest", + 'Required parameter "duoDeviceRequest" was null or undefined when calling authenticatorsAdminDuoCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/admin/duo/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: DuoDeviceRequestToJSON(requestParameters["duoDeviceRequest"]), + }; + } + + /** + * Viewset for Duo authenticator devices (for admins) + */ + async authenticatorsAdminDuoCreateRaw( + requestParameters: AuthenticatorsAdminDuoCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.authenticatorsAdminDuoCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => DuoDeviceFromJSON(jsonValue)); + } + + /** + * Viewset for Duo authenticator devices (for admins) + */ + async authenticatorsAdminDuoCreate( + requestParameters: AuthenticatorsAdminDuoCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.authenticatorsAdminDuoCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for authenticatorsAdminDuoDestroy without sending the request + */ + async authenticatorsAdminDuoDestroyRequestOpts( + requestParameters: AuthenticatorsAdminDuoDestroyRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling authenticatorsAdminDuoDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/admin/duo/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Viewset for Duo authenticator devices (for admins) + */ + async authenticatorsAdminDuoDestroyRaw( + requestParameters: AuthenticatorsAdminDuoDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.authenticatorsAdminDuoDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Viewset for Duo authenticator devices (for admins) + */ + async authenticatorsAdminDuoDestroy( + requestParameters: AuthenticatorsAdminDuoDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.authenticatorsAdminDuoDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for authenticatorsAdminDuoList without sending the request + */ + async authenticatorsAdminDuoListRequestOpts( + requestParameters: AuthenticatorsAdminDuoListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/admin/duo/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Viewset for Duo authenticator devices (for admins) + */ + async authenticatorsAdminDuoListRaw( + requestParameters: AuthenticatorsAdminDuoListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.authenticatorsAdminDuoListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedDuoDeviceListFromJSON(jsonValue), + ); + } + + /** + * Viewset for Duo authenticator devices (for admins) + */ + async authenticatorsAdminDuoList( + requestParameters: AuthenticatorsAdminDuoListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.authenticatorsAdminDuoListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for authenticatorsAdminDuoPartialUpdate without sending the request + */ + async authenticatorsAdminDuoPartialUpdateRequestOpts( + requestParameters: AuthenticatorsAdminDuoPartialUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling authenticatorsAdminDuoPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/admin/duo/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedDuoDeviceRequestToJSON(requestParameters["patchedDuoDeviceRequest"]), + }; + } + + /** + * Viewset for Duo authenticator devices (for admins) + */ + async authenticatorsAdminDuoPartialUpdateRaw( + requestParameters: AuthenticatorsAdminDuoPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.authenticatorsAdminDuoPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => DuoDeviceFromJSON(jsonValue)); + } + + /** + * Viewset for Duo authenticator devices (for admins) + */ + async authenticatorsAdminDuoPartialUpdate( + requestParameters: AuthenticatorsAdminDuoPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.authenticatorsAdminDuoPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for authenticatorsAdminDuoRetrieve without sending the request + */ + async authenticatorsAdminDuoRetrieveRequestOpts( + requestParameters: AuthenticatorsAdminDuoRetrieveRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling authenticatorsAdminDuoRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/admin/duo/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Viewset for Duo authenticator devices (for admins) + */ + async authenticatorsAdminDuoRetrieveRaw( + requestParameters: AuthenticatorsAdminDuoRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.authenticatorsAdminDuoRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => DuoDeviceFromJSON(jsonValue)); + } + + /** + * Viewset for Duo authenticator devices (for admins) + */ + async authenticatorsAdminDuoRetrieve( + requestParameters: AuthenticatorsAdminDuoRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.authenticatorsAdminDuoRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for authenticatorsAdminDuoUpdate without sending the request + */ + async authenticatorsAdminDuoUpdateRequestOpts( + requestParameters: AuthenticatorsAdminDuoUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling authenticatorsAdminDuoUpdate().', + ); + } + + if (requestParameters["duoDeviceRequest"] == null) { + throw new runtime.RequiredError( + "duoDeviceRequest", + 'Required parameter "duoDeviceRequest" was null or undefined when calling authenticatorsAdminDuoUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/admin/duo/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: DuoDeviceRequestToJSON(requestParameters["duoDeviceRequest"]), + }; + } + + /** + * Viewset for Duo authenticator devices (for admins) + */ + async authenticatorsAdminDuoUpdateRaw( + requestParameters: AuthenticatorsAdminDuoUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.authenticatorsAdminDuoUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => DuoDeviceFromJSON(jsonValue)); + } + + /** + * Viewset for Duo authenticator devices (for admins) + */ + async authenticatorsAdminDuoUpdate( + requestParameters: AuthenticatorsAdminDuoUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.authenticatorsAdminDuoUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for authenticatorsAdminEmailCreate without sending the request + */ + async authenticatorsAdminEmailCreateRequestOpts( + requestParameters: AuthenticatorsAdminEmailCreateRequest, + ): Promise { + if (requestParameters["emailDeviceRequest"] == null) { + throw new runtime.RequiredError( + "emailDeviceRequest", + 'Required parameter "emailDeviceRequest" was null or undefined when calling authenticatorsAdminEmailCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/admin/email/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: EmailDeviceRequestToJSON(requestParameters["emailDeviceRequest"]), + }; + } + + /** + * Viewset for email authenticator devices (for admins) + */ + async authenticatorsAdminEmailCreateRaw( + requestParameters: AuthenticatorsAdminEmailCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.authenticatorsAdminEmailCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => EmailDeviceFromJSON(jsonValue)); + } + + /** + * Viewset for email authenticator devices (for admins) + */ + async authenticatorsAdminEmailCreate( + requestParameters: AuthenticatorsAdminEmailCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.authenticatorsAdminEmailCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for authenticatorsAdminEmailDestroy without sending the request + */ + async authenticatorsAdminEmailDestroyRequestOpts( + requestParameters: AuthenticatorsAdminEmailDestroyRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling authenticatorsAdminEmailDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/admin/email/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Viewset for email authenticator devices (for admins) + */ + async authenticatorsAdminEmailDestroyRaw( + requestParameters: AuthenticatorsAdminEmailDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.authenticatorsAdminEmailDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Viewset for email authenticator devices (for admins) + */ + async authenticatorsAdminEmailDestroy( + requestParameters: AuthenticatorsAdminEmailDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.authenticatorsAdminEmailDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for authenticatorsAdminEmailList without sending the request + */ + async authenticatorsAdminEmailListRequestOpts( + requestParameters: AuthenticatorsAdminEmailListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/admin/email/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Viewset for email authenticator devices (for admins) + */ + async authenticatorsAdminEmailListRaw( + requestParameters: AuthenticatorsAdminEmailListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.authenticatorsAdminEmailListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedEmailDeviceListFromJSON(jsonValue), + ); + } + + /** + * Viewset for email authenticator devices (for admins) + */ + async authenticatorsAdminEmailList( + requestParameters: AuthenticatorsAdminEmailListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.authenticatorsAdminEmailListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for authenticatorsAdminEmailPartialUpdate without sending the request + */ + async authenticatorsAdminEmailPartialUpdateRequestOpts( + requestParameters: AuthenticatorsAdminEmailPartialUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling authenticatorsAdminEmailPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/admin/email/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedEmailDeviceRequestToJSON(requestParameters["patchedEmailDeviceRequest"]), + }; + } + + /** + * Viewset for email authenticator devices (for admins) + */ + async authenticatorsAdminEmailPartialUpdateRaw( + requestParameters: AuthenticatorsAdminEmailPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.authenticatorsAdminEmailPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => EmailDeviceFromJSON(jsonValue)); + } + + /** + * Viewset for email authenticator devices (for admins) + */ + async authenticatorsAdminEmailPartialUpdate( + requestParameters: AuthenticatorsAdminEmailPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.authenticatorsAdminEmailPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for authenticatorsAdminEmailRetrieve without sending the request + */ + async authenticatorsAdminEmailRetrieveRequestOpts( + requestParameters: AuthenticatorsAdminEmailRetrieveRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling authenticatorsAdminEmailRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/admin/email/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Viewset for email authenticator devices (for admins) + */ + async authenticatorsAdminEmailRetrieveRaw( + requestParameters: AuthenticatorsAdminEmailRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.authenticatorsAdminEmailRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => EmailDeviceFromJSON(jsonValue)); + } + + /** + * Viewset for email authenticator devices (for admins) + */ + async authenticatorsAdminEmailRetrieve( + requestParameters: AuthenticatorsAdminEmailRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.authenticatorsAdminEmailRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for authenticatorsAdminEmailUpdate without sending the request + */ + async authenticatorsAdminEmailUpdateRequestOpts( + requestParameters: AuthenticatorsAdminEmailUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling authenticatorsAdminEmailUpdate().', + ); + } + + if (requestParameters["emailDeviceRequest"] == null) { + throw new runtime.RequiredError( + "emailDeviceRequest", + 'Required parameter "emailDeviceRequest" was null or undefined when calling authenticatorsAdminEmailUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/admin/email/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: EmailDeviceRequestToJSON(requestParameters["emailDeviceRequest"]), + }; + } + + /** + * Viewset for email authenticator devices (for admins) + */ + async authenticatorsAdminEmailUpdateRaw( + requestParameters: AuthenticatorsAdminEmailUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.authenticatorsAdminEmailUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => EmailDeviceFromJSON(jsonValue)); + } + + /** + * Viewset for email authenticator devices (for admins) + */ + async authenticatorsAdminEmailUpdate( + requestParameters: AuthenticatorsAdminEmailUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.authenticatorsAdminEmailUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for authenticatorsAdminEndpointCreate without sending the request + */ + async authenticatorsAdminEndpointCreateRequestOpts( + requestParameters: AuthenticatorsAdminEndpointCreateRequest, + ): Promise { + if (requestParameters["googleEndpointDeviceRequest"] == null) { + throw new runtime.RequiredError( + "googleEndpointDeviceRequest", + 'Required parameter "googleEndpointDeviceRequest" was null or undefined when calling authenticatorsAdminEndpointCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/admin/endpoint/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: GoogleEndpointDeviceRequestToJSON( + requestParameters["googleEndpointDeviceRequest"], + ), + }; + } + + /** + * Viewset for Endpoint authenticator devices (for admins) + */ + async authenticatorsAdminEndpointCreateRaw( + requestParameters: AuthenticatorsAdminEndpointCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.authenticatorsAdminEndpointCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + GoogleEndpointDeviceFromJSON(jsonValue), + ); + } + + /** + * Viewset for Endpoint authenticator devices (for admins) + */ + async authenticatorsAdminEndpointCreate( + requestParameters: AuthenticatorsAdminEndpointCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.authenticatorsAdminEndpointCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for authenticatorsAdminEndpointDestroy without sending the request + */ + async authenticatorsAdminEndpointDestroyRequestOpts( + requestParameters: AuthenticatorsAdminEndpointDestroyRequest, + ): Promise { + if (requestParameters["uuid"] == null) { + throw new runtime.RequiredError( + "uuid", + 'Required parameter "uuid" was null or undefined when calling authenticatorsAdminEndpointDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/admin/endpoint/{uuid}/`; + urlPath = urlPath.replace( + `{${"uuid"}}`, + encodeURIComponent(String(requestParameters["uuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Viewset for Endpoint authenticator devices (for admins) + */ + async authenticatorsAdminEndpointDestroyRaw( + requestParameters: AuthenticatorsAdminEndpointDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.authenticatorsAdminEndpointDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Viewset for Endpoint authenticator devices (for admins) + */ + async authenticatorsAdminEndpointDestroy( + requestParameters: AuthenticatorsAdminEndpointDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.authenticatorsAdminEndpointDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for authenticatorsAdminEndpointList without sending the request + */ + async authenticatorsAdminEndpointListRequestOpts( + requestParameters: AuthenticatorsAdminEndpointListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/admin/endpoint/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Viewset for Endpoint authenticator devices (for admins) + */ + async authenticatorsAdminEndpointListRaw( + requestParameters: AuthenticatorsAdminEndpointListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.authenticatorsAdminEndpointListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedGoogleEndpointDeviceListFromJSON(jsonValue), + ); + } + + /** + * Viewset for Endpoint authenticator devices (for admins) + */ + async authenticatorsAdminEndpointList( + requestParameters: AuthenticatorsAdminEndpointListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.authenticatorsAdminEndpointListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for authenticatorsAdminEndpointPartialUpdate without sending the request + */ + async authenticatorsAdminEndpointPartialUpdateRequestOpts( + requestParameters: AuthenticatorsAdminEndpointPartialUpdateRequest, + ): Promise { + if (requestParameters["uuid"] == null) { + throw new runtime.RequiredError( + "uuid", + 'Required parameter "uuid" was null or undefined when calling authenticatorsAdminEndpointPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/admin/endpoint/{uuid}/`; + urlPath = urlPath.replace( + `{${"uuid"}}`, + encodeURIComponent(String(requestParameters["uuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedGoogleEndpointDeviceRequestToJSON( + requestParameters["patchedGoogleEndpointDeviceRequest"], + ), + }; + } + + /** + * Viewset for Endpoint authenticator devices (for admins) + */ + async authenticatorsAdminEndpointPartialUpdateRaw( + requestParameters: AuthenticatorsAdminEndpointPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.authenticatorsAdminEndpointPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + GoogleEndpointDeviceFromJSON(jsonValue), + ); + } + + /** + * Viewset for Endpoint authenticator devices (for admins) + */ + async authenticatorsAdminEndpointPartialUpdate( + requestParameters: AuthenticatorsAdminEndpointPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.authenticatorsAdminEndpointPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for authenticatorsAdminEndpointRetrieve without sending the request + */ + async authenticatorsAdminEndpointRetrieveRequestOpts( + requestParameters: AuthenticatorsAdminEndpointRetrieveRequest, + ): Promise { + if (requestParameters["uuid"] == null) { + throw new runtime.RequiredError( + "uuid", + 'Required parameter "uuid" was null or undefined when calling authenticatorsAdminEndpointRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/admin/endpoint/{uuid}/`; + urlPath = urlPath.replace( + `{${"uuid"}}`, + encodeURIComponent(String(requestParameters["uuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Viewset for Endpoint authenticator devices (for admins) + */ + async authenticatorsAdminEndpointRetrieveRaw( + requestParameters: AuthenticatorsAdminEndpointRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.authenticatorsAdminEndpointRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + GoogleEndpointDeviceFromJSON(jsonValue), + ); + } + + /** + * Viewset for Endpoint authenticator devices (for admins) + */ + async authenticatorsAdminEndpointRetrieve( + requestParameters: AuthenticatorsAdminEndpointRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.authenticatorsAdminEndpointRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for authenticatorsAdminEndpointUpdate without sending the request + */ + async authenticatorsAdminEndpointUpdateRequestOpts( + requestParameters: AuthenticatorsAdminEndpointUpdateRequest, + ): Promise { + if (requestParameters["uuid"] == null) { + throw new runtime.RequiredError( + "uuid", + 'Required parameter "uuid" was null or undefined when calling authenticatorsAdminEndpointUpdate().', + ); + } + + if (requestParameters["googleEndpointDeviceRequest"] == null) { + throw new runtime.RequiredError( + "googleEndpointDeviceRequest", + 'Required parameter "googleEndpointDeviceRequest" was null or undefined when calling authenticatorsAdminEndpointUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/admin/endpoint/{uuid}/`; + urlPath = urlPath.replace( + `{${"uuid"}}`, + encodeURIComponent(String(requestParameters["uuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: GoogleEndpointDeviceRequestToJSON( + requestParameters["googleEndpointDeviceRequest"], + ), + }; + } + + /** + * Viewset for Endpoint authenticator devices (for admins) + */ + async authenticatorsAdminEndpointUpdateRaw( + requestParameters: AuthenticatorsAdminEndpointUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.authenticatorsAdminEndpointUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + GoogleEndpointDeviceFromJSON(jsonValue), + ); + } + + /** + * Viewset for Endpoint authenticator devices (for admins) + */ + async authenticatorsAdminEndpointUpdate( + requestParameters: AuthenticatorsAdminEndpointUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.authenticatorsAdminEndpointUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for authenticatorsAdminSmsCreate without sending the request + */ + async authenticatorsAdminSmsCreateRequestOpts( + requestParameters: AuthenticatorsAdminSmsCreateRequest, + ): Promise { + if (requestParameters["sMSDeviceRequest"] == null) { + throw new runtime.RequiredError( + "sMSDeviceRequest", + 'Required parameter "sMSDeviceRequest" was null or undefined when calling authenticatorsAdminSmsCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/admin/sms/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: SMSDeviceRequestToJSON(requestParameters["sMSDeviceRequest"]), + }; + } + + /** + * Viewset for sms authenticator devices (for admins) + */ + async authenticatorsAdminSmsCreateRaw( + requestParameters: AuthenticatorsAdminSmsCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.authenticatorsAdminSmsCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => SMSDeviceFromJSON(jsonValue)); + } + + /** + * Viewset for sms authenticator devices (for admins) + */ + async authenticatorsAdminSmsCreate( + requestParameters: AuthenticatorsAdminSmsCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.authenticatorsAdminSmsCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for authenticatorsAdminSmsDestroy without sending the request + */ + async authenticatorsAdminSmsDestroyRequestOpts( + requestParameters: AuthenticatorsAdminSmsDestroyRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling authenticatorsAdminSmsDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/admin/sms/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Viewset for sms authenticator devices (for admins) + */ + async authenticatorsAdminSmsDestroyRaw( + requestParameters: AuthenticatorsAdminSmsDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.authenticatorsAdminSmsDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Viewset for sms authenticator devices (for admins) + */ + async authenticatorsAdminSmsDestroy( + requestParameters: AuthenticatorsAdminSmsDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.authenticatorsAdminSmsDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for authenticatorsAdminSmsList without sending the request + */ + async authenticatorsAdminSmsListRequestOpts( + requestParameters: AuthenticatorsAdminSmsListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/admin/sms/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Viewset for sms authenticator devices (for admins) + */ + async authenticatorsAdminSmsListRaw( + requestParameters: AuthenticatorsAdminSmsListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.authenticatorsAdminSmsListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedSMSDeviceListFromJSON(jsonValue), + ); + } + + /** + * Viewset for sms authenticator devices (for admins) + */ + async authenticatorsAdminSmsList( + requestParameters: AuthenticatorsAdminSmsListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.authenticatorsAdminSmsListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for authenticatorsAdminSmsPartialUpdate without sending the request + */ + async authenticatorsAdminSmsPartialUpdateRequestOpts( + requestParameters: AuthenticatorsAdminSmsPartialUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling authenticatorsAdminSmsPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/admin/sms/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedSMSDeviceRequestToJSON(requestParameters["patchedSMSDeviceRequest"]), + }; + } + + /** + * Viewset for sms authenticator devices (for admins) + */ + async authenticatorsAdminSmsPartialUpdateRaw( + requestParameters: AuthenticatorsAdminSmsPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.authenticatorsAdminSmsPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => SMSDeviceFromJSON(jsonValue)); + } + + /** + * Viewset for sms authenticator devices (for admins) + */ + async authenticatorsAdminSmsPartialUpdate( + requestParameters: AuthenticatorsAdminSmsPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.authenticatorsAdminSmsPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for authenticatorsAdminSmsRetrieve without sending the request + */ + async authenticatorsAdminSmsRetrieveRequestOpts( + requestParameters: AuthenticatorsAdminSmsRetrieveRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling authenticatorsAdminSmsRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/admin/sms/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Viewset for sms authenticator devices (for admins) + */ + async authenticatorsAdminSmsRetrieveRaw( + requestParameters: AuthenticatorsAdminSmsRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.authenticatorsAdminSmsRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => SMSDeviceFromJSON(jsonValue)); + } + + /** + * Viewset for sms authenticator devices (for admins) + */ + async authenticatorsAdminSmsRetrieve( + requestParameters: AuthenticatorsAdminSmsRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.authenticatorsAdminSmsRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for authenticatorsAdminSmsUpdate without sending the request + */ + async authenticatorsAdminSmsUpdateRequestOpts( + requestParameters: AuthenticatorsAdminSmsUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling authenticatorsAdminSmsUpdate().', + ); + } + + if (requestParameters["sMSDeviceRequest"] == null) { + throw new runtime.RequiredError( + "sMSDeviceRequest", + 'Required parameter "sMSDeviceRequest" was null or undefined when calling authenticatorsAdminSmsUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/admin/sms/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: SMSDeviceRequestToJSON(requestParameters["sMSDeviceRequest"]), + }; + } + + /** + * Viewset for sms authenticator devices (for admins) + */ + async authenticatorsAdminSmsUpdateRaw( + requestParameters: AuthenticatorsAdminSmsUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.authenticatorsAdminSmsUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => SMSDeviceFromJSON(jsonValue)); + } + + /** + * Viewset for sms authenticator devices (for admins) + */ + async authenticatorsAdminSmsUpdate( + requestParameters: AuthenticatorsAdminSmsUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.authenticatorsAdminSmsUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for authenticatorsAdminStaticCreate without sending the request + */ + async authenticatorsAdminStaticCreateRequestOpts( + requestParameters: AuthenticatorsAdminStaticCreateRequest, + ): Promise { + if (requestParameters["staticDeviceRequest"] == null) { + throw new runtime.RequiredError( + "staticDeviceRequest", + 'Required parameter "staticDeviceRequest" was null or undefined when calling authenticatorsAdminStaticCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/admin/static/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: StaticDeviceRequestToJSON(requestParameters["staticDeviceRequest"]), + }; + } + + /** + * Viewset for static authenticator devices (for admins) + */ + async authenticatorsAdminStaticCreateRaw( + requestParameters: AuthenticatorsAdminStaticCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.authenticatorsAdminStaticCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + StaticDeviceFromJSON(jsonValue), + ); + } + + /** + * Viewset for static authenticator devices (for admins) + */ + async authenticatorsAdminStaticCreate( + requestParameters: AuthenticatorsAdminStaticCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.authenticatorsAdminStaticCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for authenticatorsAdminStaticDestroy without sending the request + */ + async authenticatorsAdminStaticDestroyRequestOpts( + requestParameters: AuthenticatorsAdminStaticDestroyRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling authenticatorsAdminStaticDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/admin/static/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Viewset for static authenticator devices (for admins) + */ + async authenticatorsAdminStaticDestroyRaw( + requestParameters: AuthenticatorsAdminStaticDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.authenticatorsAdminStaticDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Viewset for static authenticator devices (for admins) + */ + async authenticatorsAdminStaticDestroy( + requestParameters: AuthenticatorsAdminStaticDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.authenticatorsAdminStaticDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for authenticatorsAdminStaticList without sending the request + */ + async authenticatorsAdminStaticListRequestOpts( + requestParameters: AuthenticatorsAdminStaticListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/admin/static/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Viewset for static authenticator devices (for admins) + */ + async authenticatorsAdminStaticListRaw( + requestParameters: AuthenticatorsAdminStaticListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.authenticatorsAdminStaticListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedStaticDeviceListFromJSON(jsonValue), + ); + } + + /** + * Viewset for static authenticator devices (for admins) + */ + async authenticatorsAdminStaticList( + requestParameters: AuthenticatorsAdminStaticListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.authenticatorsAdminStaticListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for authenticatorsAdminStaticPartialUpdate without sending the request + */ + async authenticatorsAdminStaticPartialUpdateRequestOpts( + requestParameters: AuthenticatorsAdminStaticPartialUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling authenticatorsAdminStaticPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/admin/static/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedStaticDeviceRequestToJSON(requestParameters["patchedStaticDeviceRequest"]), + }; + } + + /** + * Viewset for static authenticator devices (for admins) + */ + async authenticatorsAdminStaticPartialUpdateRaw( + requestParameters: AuthenticatorsAdminStaticPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.authenticatorsAdminStaticPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + StaticDeviceFromJSON(jsonValue), + ); + } + + /** + * Viewset for static authenticator devices (for admins) + */ + async authenticatorsAdminStaticPartialUpdate( + requestParameters: AuthenticatorsAdminStaticPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.authenticatorsAdminStaticPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for authenticatorsAdminStaticRetrieve without sending the request + */ + async authenticatorsAdminStaticRetrieveRequestOpts( + requestParameters: AuthenticatorsAdminStaticRetrieveRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling authenticatorsAdminStaticRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/admin/static/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Viewset for static authenticator devices (for admins) + */ + async authenticatorsAdminStaticRetrieveRaw( + requestParameters: AuthenticatorsAdminStaticRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.authenticatorsAdminStaticRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + StaticDeviceFromJSON(jsonValue), + ); + } + + /** + * Viewset for static authenticator devices (for admins) + */ + async authenticatorsAdminStaticRetrieve( + requestParameters: AuthenticatorsAdminStaticRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.authenticatorsAdminStaticRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for authenticatorsAdminStaticUpdate without sending the request + */ + async authenticatorsAdminStaticUpdateRequestOpts( + requestParameters: AuthenticatorsAdminStaticUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling authenticatorsAdminStaticUpdate().', + ); + } + + if (requestParameters["staticDeviceRequest"] == null) { + throw new runtime.RequiredError( + "staticDeviceRequest", + 'Required parameter "staticDeviceRequest" was null or undefined when calling authenticatorsAdminStaticUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/admin/static/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: StaticDeviceRequestToJSON(requestParameters["staticDeviceRequest"]), + }; + } + + /** + * Viewset for static authenticator devices (for admins) + */ + async authenticatorsAdminStaticUpdateRaw( + requestParameters: AuthenticatorsAdminStaticUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.authenticatorsAdminStaticUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + StaticDeviceFromJSON(jsonValue), + ); + } + + /** + * Viewset for static authenticator devices (for admins) + */ + async authenticatorsAdminStaticUpdate( + requestParameters: AuthenticatorsAdminStaticUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.authenticatorsAdminStaticUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for authenticatorsAdminTotpCreate without sending the request + */ + async authenticatorsAdminTotpCreateRequestOpts( + requestParameters: AuthenticatorsAdminTotpCreateRequest, + ): Promise { + if (requestParameters["tOTPDeviceRequest"] == null) { + throw new runtime.RequiredError( + "tOTPDeviceRequest", + 'Required parameter "tOTPDeviceRequest" was null or undefined when calling authenticatorsAdminTotpCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/admin/totp/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: TOTPDeviceRequestToJSON(requestParameters["tOTPDeviceRequest"]), + }; + } + + /** + * Viewset for totp authenticator devices (for admins) + */ + async authenticatorsAdminTotpCreateRaw( + requestParameters: AuthenticatorsAdminTotpCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.authenticatorsAdminTotpCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => TOTPDeviceFromJSON(jsonValue)); + } + + /** + * Viewset for totp authenticator devices (for admins) + */ + async authenticatorsAdminTotpCreate( + requestParameters: AuthenticatorsAdminTotpCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.authenticatorsAdminTotpCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for authenticatorsAdminTotpDestroy without sending the request + */ + async authenticatorsAdminTotpDestroyRequestOpts( + requestParameters: AuthenticatorsAdminTotpDestroyRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling authenticatorsAdminTotpDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/admin/totp/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Viewset for totp authenticator devices (for admins) + */ + async authenticatorsAdminTotpDestroyRaw( + requestParameters: AuthenticatorsAdminTotpDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.authenticatorsAdminTotpDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Viewset for totp authenticator devices (for admins) + */ + async authenticatorsAdminTotpDestroy( + requestParameters: AuthenticatorsAdminTotpDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.authenticatorsAdminTotpDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for authenticatorsAdminTotpList without sending the request + */ + async authenticatorsAdminTotpListRequestOpts( + requestParameters: AuthenticatorsAdminTotpListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/admin/totp/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Viewset for totp authenticator devices (for admins) + */ + async authenticatorsAdminTotpListRaw( + requestParameters: AuthenticatorsAdminTotpListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.authenticatorsAdminTotpListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedTOTPDeviceListFromJSON(jsonValue), + ); + } + + /** + * Viewset for totp authenticator devices (for admins) + */ + async authenticatorsAdminTotpList( + requestParameters: AuthenticatorsAdminTotpListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.authenticatorsAdminTotpListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for authenticatorsAdminTotpPartialUpdate without sending the request + */ + async authenticatorsAdminTotpPartialUpdateRequestOpts( + requestParameters: AuthenticatorsAdminTotpPartialUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling authenticatorsAdminTotpPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/admin/totp/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedTOTPDeviceRequestToJSON(requestParameters["patchedTOTPDeviceRequest"]), + }; + } + + /** + * Viewset for totp authenticator devices (for admins) + */ + async authenticatorsAdminTotpPartialUpdateRaw( + requestParameters: AuthenticatorsAdminTotpPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.authenticatorsAdminTotpPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => TOTPDeviceFromJSON(jsonValue)); + } + + /** + * Viewset for totp authenticator devices (for admins) + */ + async authenticatorsAdminTotpPartialUpdate( + requestParameters: AuthenticatorsAdminTotpPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.authenticatorsAdminTotpPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for authenticatorsAdminTotpRetrieve without sending the request + */ + async authenticatorsAdminTotpRetrieveRequestOpts( + requestParameters: AuthenticatorsAdminTotpRetrieveRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling authenticatorsAdminTotpRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/admin/totp/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Viewset for totp authenticator devices (for admins) + */ + async authenticatorsAdminTotpRetrieveRaw( + requestParameters: AuthenticatorsAdminTotpRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.authenticatorsAdminTotpRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => TOTPDeviceFromJSON(jsonValue)); + } + + /** + * Viewset for totp authenticator devices (for admins) + */ + async authenticatorsAdminTotpRetrieve( + requestParameters: AuthenticatorsAdminTotpRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.authenticatorsAdminTotpRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for authenticatorsAdminTotpUpdate without sending the request + */ + async authenticatorsAdminTotpUpdateRequestOpts( + requestParameters: AuthenticatorsAdminTotpUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling authenticatorsAdminTotpUpdate().', + ); + } + + if (requestParameters["tOTPDeviceRequest"] == null) { + throw new runtime.RequiredError( + "tOTPDeviceRequest", + 'Required parameter "tOTPDeviceRequest" was null or undefined when calling authenticatorsAdminTotpUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/admin/totp/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: TOTPDeviceRequestToJSON(requestParameters["tOTPDeviceRequest"]), + }; + } + + /** + * Viewset for totp authenticator devices (for admins) + */ + async authenticatorsAdminTotpUpdateRaw( + requestParameters: AuthenticatorsAdminTotpUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.authenticatorsAdminTotpUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => TOTPDeviceFromJSON(jsonValue)); + } + + /** + * Viewset for totp authenticator devices (for admins) + */ + async authenticatorsAdminTotpUpdate( + requestParameters: AuthenticatorsAdminTotpUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.authenticatorsAdminTotpUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for authenticatorsAdminWebauthnCreate without sending the request + */ + async authenticatorsAdminWebauthnCreateRequestOpts( + requestParameters: AuthenticatorsAdminWebauthnCreateRequest, + ): Promise { + if (requestParameters["webAuthnDeviceRequest"] == null) { + throw new runtime.RequiredError( + "webAuthnDeviceRequest", + 'Required parameter "webAuthnDeviceRequest" was null or undefined when calling authenticatorsAdminWebauthnCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/admin/webauthn/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: WebAuthnDeviceRequestToJSON(requestParameters["webAuthnDeviceRequest"]), + }; + } + + /** + * Viewset for WebAuthn authenticator devices (for admins) + */ + async authenticatorsAdminWebauthnCreateRaw( + requestParameters: AuthenticatorsAdminWebauthnCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.authenticatorsAdminWebauthnCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + WebAuthnDeviceFromJSON(jsonValue), + ); + } + + /** + * Viewset for WebAuthn authenticator devices (for admins) + */ + async authenticatorsAdminWebauthnCreate( + requestParameters: AuthenticatorsAdminWebauthnCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.authenticatorsAdminWebauthnCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for authenticatorsAdminWebauthnDestroy without sending the request + */ + async authenticatorsAdminWebauthnDestroyRequestOpts( + requestParameters: AuthenticatorsAdminWebauthnDestroyRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling authenticatorsAdminWebauthnDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/admin/webauthn/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Viewset for WebAuthn authenticator devices (for admins) + */ + async authenticatorsAdminWebauthnDestroyRaw( + requestParameters: AuthenticatorsAdminWebauthnDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.authenticatorsAdminWebauthnDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Viewset for WebAuthn authenticator devices (for admins) + */ + async authenticatorsAdminWebauthnDestroy( + requestParameters: AuthenticatorsAdminWebauthnDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.authenticatorsAdminWebauthnDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for authenticatorsAdminWebauthnList without sending the request + */ + async authenticatorsAdminWebauthnListRequestOpts( + requestParameters: AuthenticatorsAdminWebauthnListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/admin/webauthn/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Viewset for WebAuthn authenticator devices (for admins) + */ + async authenticatorsAdminWebauthnListRaw( + requestParameters: AuthenticatorsAdminWebauthnListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.authenticatorsAdminWebauthnListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedWebAuthnDeviceListFromJSON(jsonValue), + ); + } + + /** + * Viewset for WebAuthn authenticator devices (for admins) + */ + async authenticatorsAdminWebauthnList( + requestParameters: AuthenticatorsAdminWebauthnListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.authenticatorsAdminWebauthnListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for authenticatorsAdminWebauthnPartialUpdate without sending the request + */ + async authenticatorsAdminWebauthnPartialUpdateRequestOpts( + requestParameters: AuthenticatorsAdminWebauthnPartialUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling authenticatorsAdminWebauthnPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/admin/webauthn/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedWebAuthnDeviceRequestToJSON( + requestParameters["patchedWebAuthnDeviceRequest"], + ), + }; + } + + /** + * Viewset for WebAuthn authenticator devices (for admins) + */ + async authenticatorsAdminWebauthnPartialUpdateRaw( + requestParameters: AuthenticatorsAdminWebauthnPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.authenticatorsAdminWebauthnPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + WebAuthnDeviceFromJSON(jsonValue), + ); + } + + /** + * Viewset for WebAuthn authenticator devices (for admins) + */ + async authenticatorsAdminWebauthnPartialUpdate( + requestParameters: AuthenticatorsAdminWebauthnPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.authenticatorsAdminWebauthnPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for authenticatorsAdminWebauthnRetrieve without sending the request + */ + async authenticatorsAdminWebauthnRetrieveRequestOpts( + requestParameters: AuthenticatorsAdminWebauthnRetrieveRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling authenticatorsAdminWebauthnRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/admin/webauthn/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Viewset for WebAuthn authenticator devices (for admins) + */ + async authenticatorsAdminWebauthnRetrieveRaw( + requestParameters: AuthenticatorsAdminWebauthnRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.authenticatorsAdminWebauthnRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + WebAuthnDeviceFromJSON(jsonValue), + ); + } + + /** + * Viewset for WebAuthn authenticator devices (for admins) + */ + async authenticatorsAdminWebauthnRetrieve( + requestParameters: AuthenticatorsAdminWebauthnRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.authenticatorsAdminWebauthnRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for authenticatorsAdminWebauthnUpdate without sending the request + */ + async authenticatorsAdminWebauthnUpdateRequestOpts( + requestParameters: AuthenticatorsAdminWebauthnUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling authenticatorsAdminWebauthnUpdate().', + ); + } + + if (requestParameters["webAuthnDeviceRequest"] == null) { + throw new runtime.RequiredError( + "webAuthnDeviceRequest", + 'Required parameter "webAuthnDeviceRequest" was null or undefined when calling authenticatorsAdminWebauthnUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/admin/webauthn/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: WebAuthnDeviceRequestToJSON(requestParameters["webAuthnDeviceRequest"]), + }; + } + + /** + * Viewset for WebAuthn authenticator devices (for admins) + */ + async authenticatorsAdminWebauthnUpdateRaw( + requestParameters: AuthenticatorsAdminWebauthnUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.authenticatorsAdminWebauthnUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + WebAuthnDeviceFromJSON(jsonValue), + ); + } + + /** + * Viewset for WebAuthn authenticator devices (for admins) + */ + async authenticatorsAdminWebauthnUpdate( + requestParameters: AuthenticatorsAdminWebauthnUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.authenticatorsAdminWebauthnUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for authenticatorsAllList without sending the request + */ + async authenticatorsAllListRequestOpts(): Promise { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/all/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get all devices for current user + */ + async authenticatorsAllListRaw( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.authenticatorsAllListRequestOpts(); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(DeviceFromJSON)); + } + + /** + * Get all devices for current user + */ + async authenticatorsAllList( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.authenticatorsAllListRaw(initOverrides); + return await response.value(); + } + + /** + * Creates request options for authenticatorsDuoDestroy without sending the request + */ + async authenticatorsDuoDestroyRequestOpts( + requestParameters: AuthenticatorsDuoDestroyRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling authenticatorsDuoDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/duo/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Viewset for Duo authenticator devices + */ + async authenticatorsDuoDestroyRaw( + requestParameters: AuthenticatorsDuoDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.authenticatorsDuoDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Viewset for Duo authenticator devices + */ + async authenticatorsDuoDestroy( + requestParameters: AuthenticatorsDuoDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.authenticatorsDuoDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for authenticatorsDuoList without sending the request + */ + async authenticatorsDuoListRequestOpts( + requestParameters: AuthenticatorsDuoListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/duo/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Viewset for Duo authenticator devices + */ + async authenticatorsDuoListRaw( + requestParameters: AuthenticatorsDuoListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.authenticatorsDuoListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedDuoDeviceListFromJSON(jsonValue), + ); + } + + /** + * Viewset for Duo authenticator devices + */ + async authenticatorsDuoList( + requestParameters: AuthenticatorsDuoListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.authenticatorsDuoListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for authenticatorsDuoPartialUpdate without sending the request + */ + async authenticatorsDuoPartialUpdateRequestOpts( + requestParameters: AuthenticatorsDuoPartialUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling authenticatorsDuoPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/duo/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedDuoDeviceRequestToJSON(requestParameters["patchedDuoDeviceRequest"]), + }; + } + + /** + * Viewset for Duo authenticator devices + */ + async authenticatorsDuoPartialUpdateRaw( + requestParameters: AuthenticatorsDuoPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.authenticatorsDuoPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => DuoDeviceFromJSON(jsonValue)); + } + + /** + * Viewset for Duo authenticator devices + */ + async authenticatorsDuoPartialUpdate( + requestParameters: AuthenticatorsDuoPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.authenticatorsDuoPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for authenticatorsDuoRetrieve without sending the request + */ + async authenticatorsDuoRetrieveRequestOpts( + requestParameters: AuthenticatorsDuoRetrieveRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling authenticatorsDuoRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/duo/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Viewset for Duo authenticator devices + */ + async authenticatorsDuoRetrieveRaw( + requestParameters: AuthenticatorsDuoRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.authenticatorsDuoRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => DuoDeviceFromJSON(jsonValue)); + } + + /** + * Viewset for Duo authenticator devices + */ + async authenticatorsDuoRetrieve( + requestParameters: AuthenticatorsDuoRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.authenticatorsDuoRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for authenticatorsDuoUpdate without sending the request + */ + async authenticatorsDuoUpdateRequestOpts( + requestParameters: AuthenticatorsDuoUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling authenticatorsDuoUpdate().', + ); + } + + if (requestParameters["duoDeviceRequest"] == null) { + throw new runtime.RequiredError( + "duoDeviceRequest", + 'Required parameter "duoDeviceRequest" was null or undefined when calling authenticatorsDuoUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/duo/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: DuoDeviceRequestToJSON(requestParameters["duoDeviceRequest"]), + }; + } + + /** + * Viewset for Duo authenticator devices + */ + async authenticatorsDuoUpdateRaw( + requestParameters: AuthenticatorsDuoUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.authenticatorsDuoUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => DuoDeviceFromJSON(jsonValue)); + } + + /** + * Viewset for Duo authenticator devices + */ + async authenticatorsDuoUpdate( + requestParameters: AuthenticatorsDuoUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.authenticatorsDuoUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for authenticatorsDuoUsedByList without sending the request + */ + async authenticatorsDuoUsedByListRequestOpts( + requestParameters: AuthenticatorsDuoUsedByListRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling authenticatorsDuoUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/duo/{id}/used_by/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async authenticatorsDuoUsedByListRaw( + requestParameters: AuthenticatorsDuoUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.authenticatorsDuoUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async authenticatorsDuoUsedByList( + requestParameters: AuthenticatorsDuoUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.authenticatorsDuoUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for authenticatorsEmailDestroy without sending the request + */ + async authenticatorsEmailDestroyRequestOpts( + requestParameters: AuthenticatorsEmailDestroyRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling authenticatorsEmailDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/email/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Viewset for email authenticator devices + */ + async authenticatorsEmailDestroyRaw( + requestParameters: AuthenticatorsEmailDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.authenticatorsEmailDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Viewset for email authenticator devices + */ + async authenticatorsEmailDestroy( + requestParameters: AuthenticatorsEmailDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.authenticatorsEmailDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for authenticatorsEmailList without sending the request + */ + async authenticatorsEmailListRequestOpts( + requestParameters: AuthenticatorsEmailListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/email/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Viewset for email authenticator devices + */ + async authenticatorsEmailListRaw( + requestParameters: AuthenticatorsEmailListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.authenticatorsEmailListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedEmailDeviceListFromJSON(jsonValue), + ); + } + + /** + * Viewset for email authenticator devices + */ + async authenticatorsEmailList( + requestParameters: AuthenticatorsEmailListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.authenticatorsEmailListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for authenticatorsEmailPartialUpdate without sending the request + */ + async authenticatorsEmailPartialUpdateRequestOpts( + requestParameters: AuthenticatorsEmailPartialUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling authenticatorsEmailPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/email/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedEmailDeviceRequestToJSON(requestParameters["patchedEmailDeviceRequest"]), + }; + } + + /** + * Viewset for email authenticator devices + */ + async authenticatorsEmailPartialUpdateRaw( + requestParameters: AuthenticatorsEmailPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.authenticatorsEmailPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => EmailDeviceFromJSON(jsonValue)); + } + + /** + * Viewset for email authenticator devices + */ + async authenticatorsEmailPartialUpdate( + requestParameters: AuthenticatorsEmailPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.authenticatorsEmailPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for authenticatorsEmailRetrieve without sending the request + */ + async authenticatorsEmailRetrieveRequestOpts( + requestParameters: AuthenticatorsEmailRetrieveRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling authenticatorsEmailRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/email/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Viewset for email authenticator devices + */ + async authenticatorsEmailRetrieveRaw( + requestParameters: AuthenticatorsEmailRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.authenticatorsEmailRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => EmailDeviceFromJSON(jsonValue)); + } + + /** + * Viewset for email authenticator devices + */ + async authenticatorsEmailRetrieve( + requestParameters: AuthenticatorsEmailRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.authenticatorsEmailRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for authenticatorsEmailUpdate without sending the request + */ + async authenticatorsEmailUpdateRequestOpts( + requestParameters: AuthenticatorsEmailUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling authenticatorsEmailUpdate().', + ); + } + + if (requestParameters["emailDeviceRequest"] == null) { + throw new runtime.RequiredError( + "emailDeviceRequest", + 'Required parameter "emailDeviceRequest" was null or undefined when calling authenticatorsEmailUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/email/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: EmailDeviceRequestToJSON(requestParameters["emailDeviceRequest"]), + }; + } + + /** + * Viewset for email authenticator devices + */ + async authenticatorsEmailUpdateRaw( + requestParameters: AuthenticatorsEmailUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.authenticatorsEmailUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => EmailDeviceFromJSON(jsonValue)); + } + + /** + * Viewset for email authenticator devices + */ + async authenticatorsEmailUpdate( + requestParameters: AuthenticatorsEmailUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.authenticatorsEmailUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for authenticatorsEmailUsedByList without sending the request + */ + async authenticatorsEmailUsedByListRequestOpts( + requestParameters: AuthenticatorsEmailUsedByListRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling authenticatorsEmailUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/email/{id}/used_by/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async authenticatorsEmailUsedByListRaw( + requestParameters: AuthenticatorsEmailUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.authenticatorsEmailUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async authenticatorsEmailUsedByList( + requestParameters: AuthenticatorsEmailUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.authenticatorsEmailUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for authenticatorsEndpointList without sending the request + */ + async authenticatorsEndpointListRequestOpts( + requestParameters: AuthenticatorsEndpointListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/endpoint/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Viewset for Endpoint authenticator devices + */ + async authenticatorsEndpointListRaw( + requestParameters: AuthenticatorsEndpointListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.authenticatorsEndpointListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedGoogleEndpointDeviceListFromJSON(jsonValue), + ); + } + + /** + * Viewset for Endpoint authenticator devices + */ + async authenticatorsEndpointList( + requestParameters: AuthenticatorsEndpointListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.authenticatorsEndpointListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for authenticatorsEndpointRetrieve without sending the request + */ + async authenticatorsEndpointRetrieveRequestOpts( + requestParameters: AuthenticatorsEndpointRetrieveRequest, + ): Promise { + if (requestParameters["uuid"] == null) { + throw new runtime.RequiredError( + "uuid", + 'Required parameter "uuid" was null or undefined when calling authenticatorsEndpointRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/endpoint/{uuid}/`; + urlPath = urlPath.replace( + `{${"uuid"}}`, + encodeURIComponent(String(requestParameters["uuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Viewset for Endpoint authenticator devices + */ + async authenticatorsEndpointRetrieveRaw( + requestParameters: AuthenticatorsEndpointRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.authenticatorsEndpointRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + GoogleEndpointDeviceFromJSON(jsonValue), + ); + } + + /** + * Viewset for Endpoint authenticator devices + */ + async authenticatorsEndpointRetrieve( + requestParameters: AuthenticatorsEndpointRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.authenticatorsEndpointRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for authenticatorsEndpointUsedByList without sending the request + */ + async authenticatorsEndpointUsedByListRequestOpts( + requestParameters: AuthenticatorsEndpointUsedByListRequest, + ): Promise { + if (requestParameters["uuid"] == null) { + throw new runtime.RequiredError( + "uuid", + 'Required parameter "uuid" was null or undefined when calling authenticatorsEndpointUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/endpoint/{uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"uuid"}}`, + encodeURIComponent(String(requestParameters["uuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async authenticatorsEndpointUsedByListRaw( + requestParameters: AuthenticatorsEndpointUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.authenticatorsEndpointUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async authenticatorsEndpointUsedByList( + requestParameters: AuthenticatorsEndpointUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.authenticatorsEndpointUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for authenticatorsSmsDestroy without sending the request + */ + async authenticatorsSmsDestroyRequestOpts( + requestParameters: AuthenticatorsSmsDestroyRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling authenticatorsSmsDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/sms/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Viewset for sms authenticator devices + */ + async authenticatorsSmsDestroyRaw( + requestParameters: AuthenticatorsSmsDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.authenticatorsSmsDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Viewset for sms authenticator devices + */ + async authenticatorsSmsDestroy( + requestParameters: AuthenticatorsSmsDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.authenticatorsSmsDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for authenticatorsSmsList without sending the request + */ + async authenticatorsSmsListRequestOpts( + requestParameters: AuthenticatorsSmsListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/sms/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Viewset for sms authenticator devices + */ + async authenticatorsSmsListRaw( + requestParameters: AuthenticatorsSmsListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.authenticatorsSmsListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedSMSDeviceListFromJSON(jsonValue), + ); + } + + /** + * Viewset for sms authenticator devices + */ + async authenticatorsSmsList( + requestParameters: AuthenticatorsSmsListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.authenticatorsSmsListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for authenticatorsSmsPartialUpdate without sending the request + */ + async authenticatorsSmsPartialUpdateRequestOpts( + requestParameters: AuthenticatorsSmsPartialUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling authenticatorsSmsPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/sms/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedSMSDeviceRequestToJSON(requestParameters["patchedSMSDeviceRequest"]), + }; + } + + /** + * Viewset for sms authenticator devices + */ + async authenticatorsSmsPartialUpdateRaw( + requestParameters: AuthenticatorsSmsPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.authenticatorsSmsPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => SMSDeviceFromJSON(jsonValue)); + } + + /** + * Viewset for sms authenticator devices + */ + async authenticatorsSmsPartialUpdate( + requestParameters: AuthenticatorsSmsPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.authenticatorsSmsPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for authenticatorsSmsRetrieve without sending the request + */ + async authenticatorsSmsRetrieveRequestOpts( + requestParameters: AuthenticatorsSmsRetrieveRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling authenticatorsSmsRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/sms/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Viewset for sms authenticator devices + */ + async authenticatorsSmsRetrieveRaw( + requestParameters: AuthenticatorsSmsRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.authenticatorsSmsRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => SMSDeviceFromJSON(jsonValue)); + } + + /** + * Viewset for sms authenticator devices + */ + async authenticatorsSmsRetrieve( + requestParameters: AuthenticatorsSmsRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.authenticatorsSmsRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for authenticatorsSmsUpdate without sending the request + */ + async authenticatorsSmsUpdateRequestOpts( + requestParameters: AuthenticatorsSmsUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling authenticatorsSmsUpdate().', + ); + } + + if (requestParameters["sMSDeviceRequest"] == null) { + throw new runtime.RequiredError( + "sMSDeviceRequest", + 'Required parameter "sMSDeviceRequest" was null or undefined when calling authenticatorsSmsUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/sms/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: SMSDeviceRequestToJSON(requestParameters["sMSDeviceRequest"]), + }; + } + + /** + * Viewset for sms authenticator devices + */ + async authenticatorsSmsUpdateRaw( + requestParameters: AuthenticatorsSmsUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.authenticatorsSmsUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => SMSDeviceFromJSON(jsonValue)); + } + + /** + * Viewset for sms authenticator devices + */ + async authenticatorsSmsUpdate( + requestParameters: AuthenticatorsSmsUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.authenticatorsSmsUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for authenticatorsSmsUsedByList without sending the request + */ + async authenticatorsSmsUsedByListRequestOpts( + requestParameters: AuthenticatorsSmsUsedByListRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling authenticatorsSmsUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/sms/{id}/used_by/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async authenticatorsSmsUsedByListRaw( + requestParameters: AuthenticatorsSmsUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.authenticatorsSmsUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async authenticatorsSmsUsedByList( + requestParameters: AuthenticatorsSmsUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.authenticatorsSmsUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for authenticatorsStaticDestroy without sending the request + */ + async authenticatorsStaticDestroyRequestOpts( + requestParameters: AuthenticatorsStaticDestroyRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling authenticatorsStaticDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/static/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Viewset for static authenticator devices + */ + async authenticatorsStaticDestroyRaw( + requestParameters: AuthenticatorsStaticDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.authenticatorsStaticDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Viewset for static authenticator devices + */ + async authenticatorsStaticDestroy( + requestParameters: AuthenticatorsStaticDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.authenticatorsStaticDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for authenticatorsStaticList without sending the request + */ + async authenticatorsStaticListRequestOpts( + requestParameters: AuthenticatorsStaticListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/static/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Viewset for static authenticator devices + */ + async authenticatorsStaticListRaw( + requestParameters: AuthenticatorsStaticListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.authenticatorsStaticListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedStaticDeviceListFromJSON(jsonValue), + ); + } + + /** + * Viewset for static authenticator devices + */ + async authenticatorsStaticList( + requestParameters: AuthenticatorsStaticListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.authenticatorsStaticListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for authenticatorsStaticPartialUpdate without sending the request + */ + async authenticatorsStaticPartialUpdateRequestOpts( + requestParameters: AuthenticatorsStaticPartialUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling authenticatorsStaticPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/static/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedStaticDeviceRequestToJSON(requestParameters["patchedStaticDeviceRequest"]), + }; + } + + /** + * Viewset for static authenticator devices + */ + async authenticatorsStaticPartialUpdateRaw( + requestParameters: AuthenticatorsStaticPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.authenticatorsStaticPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + StaticDeviceFromJSON(jsonValue), + ); + } + + /** + * Viewset for static authenticator devices + */ + async authenticatorsStaticPartialUpdate( + requestParameters: AuthenticatorsStaticPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.authenticatorsStaticPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for authenticatorsStaticRetrieve without sending the request + */ + async authenticatorsStaticRetrieveRequestOpts( + requestParameters: AuthenticatorsStaticRetrieveRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling authenticatorsStaticRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/static/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Viewset for static authenticator devices + */ + async authenticatorsStaticRetrieveRaw( + requestParameters: AuthenticatorsStaticRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.authenticatorsStaticRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + StaticDeviceFromJSON(jsonValue), + ); + } + + /** + * Viewset for static authenticator devices + */ + async authenticatorsStaticRetrieve( + requestParameters: AuthenticatorsStaticRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.authenticatorsStaticRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for authenticatorsStaticUpdate without sending the request + */ + async authenticatorsStaticUpdateRequestOpts( + requestParameters: AuthenticatorsStaticUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling authenticatorsStaticUpdate().', + ); + } + + if (requestParameters["staticDeviceRequest"] == null) { + throw new runtime.RequiredError( + "staticDeviceRequest", + 'Required parameter "staticDeviceRequest" was null or undefined when calling authenticatorsStaticUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/static/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: StaticDeviceRequestToJSON(requestParameters["staticDeviceRequest"]), + }; + } + + /** + * Viewset for static authenticator devices + */ + async authenticatorsStaticUpdateRaw( + requestParameters: AuthenticatorsStaticUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.authenticatorsStaticUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + StaticDeviceFromJSON(jsonValue), + ); + } + + /** + * Viewset for static authenticator devices + */ + async authenticatorsStaticUpdate( + requestParameters: AuthenticatorsStaticUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.authenticatorsStaticUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for authenticatorsStaticUsedByList without sending the request + */ + async authenticatorsStaticUsedByListRequestOpts( + requestParameters: AuthenticatorsStaticUsedByListRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling authenticatorsStaticUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/static/{id}/used_by/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async authenticatorsStaticUsedByListRaw( + requestParameters: AuthenticatorsStaticUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.authenticatorsStaticUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async authenticatorsStaticUsedByList( + requestParameters: AuthenticatorsStaticUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.authenticatorsStaticUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for authenticatorsTotpDestroy without sending the request + */ + async authenticatorsTotpDestroyRequestOpts( + requestParameters: AuthenticatorsTotpDestroyRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling authenticatorsTotpDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/totp/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Viewset for totp authenticator devices + */ + async authenticatorsTotpDestroyRaw( + requestParameters: AuthenticatorsTotpDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.authenticatorsTotpDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Viewset for totp authenticator devices + */ + async authenticatorsTotpDestroy( + requestParameters: AuthenticatorsTotpDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.authenticatorsTotpDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for authenticatorsTotpList without sending the request + */ + async authenticatorsTotpListRequestOpts( + requestParameters: AuthenticatorsTotpListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/totp/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Viewset for totp authenticator devices + */ + async authenticatorsTotpListRaw( + requestParameters: AuthenticatorsTotpListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.authenticatorsTotpListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedTOTPDeviceListFromJSON(jsonValue), + ); + } + + /** + * Viewset for totp authenticator devices + */ + async authenticatorsTotpList( + requestParameters: AuthenticatorsTotpListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.authenticatorsTotpListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for authenticatorsTotpPartialUpdate without sending the request + */ + async authenticatorsTotpPartialUpdateRequestOpts( + requestParameters: AuthenticatorsTotpPartialUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling authenticatorsTotpPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/totp/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedTOTPDeviceRequestToJSON(requestParameters["patchedTOTPDeviceRequest"]), + }; + } + + /** + * Viewset for totp authenticator devices + */ + async authenticatorsTotpPartialUpdateRaw( + requestParameters: AuthenticatorsTotpPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.authenticatorsTotpPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => TOTPDeviceFromJSON(jsonValue)); + } + + /** + * Viewset for totp authenticator devices + */ + async authenticatorsTotpPartialUpdate( + requestParameters: AuthenticatorsTotpPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.authenticatorsTotpPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for authenticatorsTotpRetrieve without sending the request + */ + async authenticatorsTotpRetrieveRequestOpts( + requestParameters: AuthenticatorsTotpRetrieveRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling authenticatorsTotpRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/totp/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Viewset for totp authenticator devices + */ + async authenticatorsTotpRetrieveRaw( + requestParameters: AuthenticatorsTotpRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.authenticatorsTotpRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => TOTPDeviceFromJSON(jsonValue)); + } + + /** + * Viewset for totp authenticator devices + */ + async authenticatorsTotpRetrieve( + requestParameters: AuthenticatorsTotpRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.authenticatorsTotpRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for authenticatorsTotpUpdate without sending the request + */ + async authenticatorsTotpUpdateRequestOpts( + requestParameters: AuthenticatorsTotpUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling authenticatorsTotpUpdate().', + ); + } + + if (requestParameters["tOTPDeviceRequest"] == null) { + throw new runtime.RequiredError( + "tOTPDeviceRequest", + 'Required parameter "tOTPDeviceRequest" was null or undefined when calling authenticatorsTotpUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/totp/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: TOTPDeviceRequestToJSON(requestParameters["tOTPDeviceRequest"]), + }; + } + + /** + * Viewset for totp authenticator devices + */ + async authenticatorsTotpUpdateRaw( + requestParameters: AuthenticatorsTotpUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.authenticatorsTotpUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => TOTPDeviceFromJSON(jsonValue)); + } + + /** + * Viewset for totp authenticator devices + */ + async authenticatorsTotpUpdate( + requestParameters: AuthenticatorsTotpUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.authenticatorsTotpUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for authenticatorsTotpUsedByList without sending the request + */ + async authenticatorsTotpUsedByListRequestOpts( + requestParameters: AuthenticatorsTotpUsedByListRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling authenticatorsTotpUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/totp/{id}/used_by/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async authenticatorsTotpUsedByListRaw( + requestParameters: AuthenticatorsTotpUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.authenticatorsTotpUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async authenticatorsTotpUsedByList( + requestParameters: AuthenticatorsTotpUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.authenticatorsTotpUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for authenticatorsWebauthnDestroy without sending the request + */ + async authenticatorsWebauthnDestroyRequestOpts( + requestParameters: AuthenticatorsWebauthnDestroyRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling authenticatorsWebauthnDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/webauthn/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Viewset for WebAuthn authenticator devices + */ + async authenticatorsWebauthnDestroyRaw( + requestParameters: AuthenticatorsWebauthnDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.authenticatorsWebauthnDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Viewset for WebAuthn authenticator devices + */ + async authenticatorsWebauthnDestroy( + requestParameters: AuthenticatorsWebauthnDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.authenticatorsWebauthnDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for authenticatorsWebauthnList without sending the request + */ + async authenticatorsWebauthnListRequestOpts( + requestParameters: AuthenticatorsWebauthnListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/webauthn/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Viewset for WebAuthn authenticator devices + */ + async authenticatorsWebauthnListRaw( + requestParameters: AuthenticatorsWebauthnListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.authenticatorsWebauthnListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedWebAuthnDeviceListFromJSON(jsonValue), + ); + } + + /** + * Viewset for WebAuthn authenticator devices + */ + async authenticatorsWebauthnList( + requestParameters: AuthenticatorsWebauthnListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.authenticatorsWebauthnListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for authenticatorsWebauthnPartialUpdate without sending the request + */ + async authenticatorsWebauthnPartialUpdateRequestOpts( + requestParameters: AuthenticatorsWebauthnPartialUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling authenticatorsWebauthnPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/webauthn/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedWebAuthnDeviceRequestToJSON( + requestParameters["patchedWebAuthnDeviceRequest"], + ), + }; + } + + /** + * Viewset for WebAuthn authenticator devices + */ + async authenticatorsWebauthnPartialUpdateRaw( + requestParameters: AuthenticatorsWebauthnPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.authenticatorsWebauthnPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + WebAuthnDeviceFromJSON(jsonValue), + ); + } + + /** + * Viewset for WebAuthn authenticator devices + */ + async authenticatorsWebauthnPartialUpdate( + requestParameters: AuthenticatorsWebauthnPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.authenticatorsWebauthnPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for authenticatorsWebauthnRetrieve without sending the request + */ + async authenticatorsWebauthnRetrieveRequestOpts( + requestParameters: AuthenticatorsWebauthnRetrieveRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling authenticatorsWebauthnRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/webauthn/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Viewset for WebAuthn authenticator devices + */ + async authenticatorsWebauthnRetrieveRaw( + requestParameters: AuthenticatorsWebauthnRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.authenticatorsWebauthnRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + WebAuthnDeviceFromJSON(jsonValue), + ); + } + + /** + * Viewset for WebAuthn authenticator devices + */ + async authenticatorsWebauthnRetrieve( + requestParameters: AuthenticatorsWebauthnRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.authenticatorsWebauthnRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for authenticatorsWebauthnUpdate without sending the request + */ + async authenticatorsWebauthnUpdateRequestOpts( + requestParameters: AuthenticatorsWebauthnUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling authenticatorsWebauthnUpdate().', + ); + } + + if (requestParameters["webAuthnDeviceRequest"] == null) { + throw new runtime.RequiredError( + "webAuthnDeviceRequest", + 'Required parameter "webAuthnDeviceRequest" was null or undefined when calling authenticatorsWebauthnUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/webauthn/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: WebAuthnDeviceRequestToJSON(requestParameters["webAuthnDeviceRequest"]), + }; + } + + /** + * Viewset for WebAuthn authenticator devices + */ + async authenticatorsWebauthnUpdateRaw( + requestParameters: AuthenticatorsWebauthnUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.authenticatorsWebauthnUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + WebAuthnDeviceFromJSON(jsonValue), + ); + } + + /** + * Viewset for WebAuthn authenticator devices + */ + async authenticatorsWebauthnUpdate( + requestParameters: AuthenticatorsWebauthnUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.authenticatorsWebauthnUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for authenticatorsWebauthnUsedByList without sending the request + */ + async authenticatorsWebauthnUsedByListRequestOpts( + requestParameters: AuthenticatorsWebauthnUsedByListRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling authenticatorsWebauthnUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/authenticators/webauthn/{id}/used_by/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async authenticatorsWebauthnUsedByListRaw( + requestParameters: AuthenticatorsWebauthnUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.authenticatorsWebauthnUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async authenticatorsWebauthnUsedByList( + requestParameters: AuthenticatorsWebauthnUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.authenticatorsWebauthnUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } +} diff --git a/packages/client-ts/src/apis/CoreApi.ts b/packages/client-ts/src/apis/CoreApi.ts new file mode 100644 index 0000000000..dda06c179a --- /dev/null +++ b/packages/client-ts/src/apis/CoreApi.ts @@ -0,0 +1,5571 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { + Application, + ApplicationEntitlement, + ApplicationEntitlementRequest, + ApplicationRequest, + AuthenticatedSession, + Brand, + BrandRequest, + BulkDeleteSessionResponse, + CurrentBrand, + DataExport, + Group, + GroupRequest, + ImpersonationRequest, + IntentEnum, + Link, + PaginatedApplicationEntitlementList, + PaginatedApplicationList, + PaginatedAuthenticatedSessionList, + PaginatedBrandList, + PaginatedGroupList, + PaginatedTokenList, + PaginatedUserConsentList, + PaginatedUserList, + PatchedApplicationEntitlementRequest, + PatchedApplicationRequest, + PatchedBrandRequest, + PatchedGroupRequest, + PatchedTokenRequest, + PatchedUserRequest, + PolicyTestResult, + SessionUser, + Token, + TokenRequest, + TokenSetKeyRequest, + TokenView, + TransactionApplicationRequest, + TransactionApplicationResponse, + UsedBy, + User, + UserAccountLockdownRequest, + UserAccountRequest, + UserConsent, + UserPasswordHashSetRequest, + UserPasswordSetRequest, + UserPath, + UserRecoveryEmailRequest, + UserRecoveryLinkRequest, + UserRequest, + UserServiceAccountRequest, + UserServiceAccountResponse, + UserTypeEnum, +} from "../models/index"; +import { + ApplicationEntitlementFromJSON, + ApplicationEntitlementRequestToJSON, + ApplicationFromJSON, + ApplicationRequestToJSON, + AuthenticatedSessionFromJSON, + BrandFromJSON, + BrandRequestToJSON, + BulkDeleteSessionResponseFromJSON, + CurrentBrandFromJSON, + DataExportFromJSON, + GroupFromJSON, + GroupRequestToJSON, + ImpersonationRequestToJSON, + LinkFromJSON, + PaginatedApplicationEntitlementListFromJSON, + PaginatedApplicationListFromJSON, + PaginatedAuthenticatedSessionListFromJSON, + PaginatedBrandListFromJSON, + PaginatedGroupListFromJSON, + PaginatedTokenListFromJSON, + PaginatedUserConsentListFromJSON, + PaginatedUserListFromJSON, + PatchedApplicationEntitlementRequestToJSON, + PatchedApplicationRequestToJSON, + PatchedBrandRequestToJSON, + PatchedGroupRequestToJSON, + PatchedTokenRequestToJSON, + PatchedUserRequestToJSON, + PolicyTestResultFromJSON, + SessionUserFromJSON, + TokenFromJSON, + TokenRequestToJSON, + TokenSetKeyRequestToJSON, + TokenViewFromJSON, + TransactionApplicationRequestToJSON, + TransactionApplicationResponseFromJSON, + UsedByFromJSON, + UserAccountLockdownRequestToJSON, + UserAccountRequestToJSON, + UserConsentFromJSON, + UserFromJSON, + UserPasswordHashSetRequestToJSON, + UserPasswordSetRequestToJSON, + UserPathFromJSON, + UserRecoveryEmailRequestToJSON, + UserRecoveryLinkRequestToJSON, + UserRequestToJSON, + UserServiceAccountRequestToJSON, + UserServiceAccountResponseFromJSON, +} from "../models/index"; +import * as runtime from "../runtime"; + +export interface CoreApplicationEntitlementsCreateRequest { + applicationEntitlementRequest: ApplicationEntitlementRequest; +} + +export interface CoreApplicationEntitlementsDestroyRequest { + pbmUuid: string; +} + +export interface CoreApplicationEntitlementsListRequest { + app?: string; + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + pbmUuid?: string; + search?: string; +} + +export interface CoreApplicationEntitlementsPartialUpdateRequest { + pbmUuid: string; + patchedApplicationEntitlementRequest?: PatchedApplicationEntitlementRequest; +} + +export interface CoreApplicationEntitlementsRetrieveRequest { + pbmUuid: string; +} + +export interface CoreApplicationEntitlementsUpdateRequest { + pbmUuid: string; + applicationEntitlementRequest: ApplicationEntitlementRequest; +} + +export interface CoreApplicationEntitlementsUsedByListRequest { + pbmUuid: string; +} + +export interface CoreApplicationsCheckAccessRetrieveRequest { + slug: string; + forUser?: number; +} + +export interface CoreApplicationsCreateRequest { + applicationRequest: ApplicationRequest; +} + +export interface CoreApplicationsDestroyRequest { + slug: string; +} + +export interface CoreApplicationsListRequest { + forUser?: number; + group?: string; + metaDescription?: string; + metaLaunchUrl?: string; + metaPublisher?: string; + name?: string; + onlyWithLaunchUrl?: boolean; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; + slug?: string; + superuserFullList?: boolean; +} + +export interface CoreApplicationsPartialUpdateRequest { + slug: string; + patchedApplicationRequest?: PatchedApplicationRequest; +} + +export interface CoreApplicationsRetrieveRequest { + slug: string; +} + +export interface CoreApplicationsUpdateRequest { + slug: string; + applicationRequest: ApplicationRequest; +} + +export interface CoreApplicationsUsedByListRequest { + slug: string; +} + +export interface CoreAuthenticatedSessionsBulkDeleteDestroyRequest { + userPks: Array; +} + +export interface CoreAuthenticatedSessionsDestroyRequest { + uuid: string; +} + +export interface CoreAuthenticatedSessionsListRequest { + ordering?: string; + page?: number; + pageSize?: number; + search?: string; + sessionLastIp?: string; + sessionLastUserAgent?: string; + userUsername?: string; +} + +export interface CoreAuthenticatedSessionsRetrieveRequest { + uuid: string; +} + +export interface CoreAuthenticatedSessionsUsedByListRequest { + uuid: string; +} + +export interface CoreBrandsCreateRequest { + brandRequest: BrandRequest; +} + +export interface CoreBrandsDestroyRequest { + brandUuid: string; +} + +export interface CoreBrandsListRequest { + brandUuid?: string; + brandingDefaultFlowBackground?: string; + brandingFavicon?: string; + brandingLogo?: string; + brandingTitle?: string; + clientCertificates?: Array; + _default?: boolean; + domain?: string; + flowAuthentication?: string; + flowDeviceCode?: string; + flowInvalidation?: string; + flowLockdown?: string; + flowRecovery?: string; + flowUnenrollment?: string; + flowUserSettings?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; + webCertificate?: string; +} + +export interface CoreBrandsPartialUpdateRequest { + brandUuid: string; + patchedBrandRequest?: PatchedBrandRequest; +} + +export interface CoreBrandsRetrieveRequest { + brandUuid: string; +} + +export interface CoreBrandsUpdateRequest { + brandUuid: string; + brandRequest: BrandRequest; +} + +export interface CoreBrandsUsedByListRequest { + brandUuid: string; +} + +export interface CoreGroupsAddUserCreateRequest { + groupUuid: string; + userAccountRequest: UserAccountRequest; +} + +export interface CoreGroupsCreateRequest { + groupRequest: GroupRequest; +} + +export interface CoreGroupsDestroyRequest { + groupUuid: string; +} + +export interface CoreGroupsListRequest { + attributes?: string; + includeChildren?: boolean; + includeInheritedRoles?: boolean; + includeParents?: boolean; + includeUsers?: boolean; + isSuperuser?: boolean; + membersByPk?: Array; + membersByUsername?: Array; + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; +} + +export interface CoreGroupsPartialUpdateRequest { + groupUuid: string; + patchedGroupRequest?: PatchedGroupRequest; +} + +export interface CoreGroupsRemoveUserCreateRequest { + groupUuid: string; + userAccountRequest: UserAccountRequest; +} + +export interface CoreGroupsRetrieveRequest { + groupUuid: string; + includeChildren?: boolean; + includeInheritedRoles?: boolean; + includeParents?: boolean; + includeUsers?: boolean; +} + +export interface CoreGroupsUpdateRequest { + groupUuid: string; + groupRequest: GroupRequest; +} + +export interface CoreGroupsUsedByListRequest { + groupUuid: string; +} + +export interface CoreTokensCreateRequest { + tokenRequest: TokenRequest; +} + +export interface CoreTokensDestroyRequest { + identifier: string; +} + +export interface CoreTokensListRequest { + description?: string; + expires?: Date; + expiring?: boolean; + identifier?: string; + intent?: IntentEnum; + managed?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; + userUsername?: string; +} + +export interface CoreTokensPartialUpdateRequest { + identifier: string; + patchedTokenRequest?: PatchedTokenRequest; +} + +export interface CoreTokensRetrieveRequest { + identifier: string; +} + +export interface CoreTokensSetKeyCreateRequest { + identifier: string; + tokenSetKeyRequest: TokenSetKeyRequest; +} + +export interface CoreTokensUpdateRequest { + identifier: string; + tokenRequest: TokenRequest; +} + +export interface CoreTokensUsedByListRequest { + identifier: string; +} + +export interface CoreTokensViewKeyRetrieveRequest { + identifier: string; +} + +export interface CoreTransactionalApplicationsUpdateRequest { + transactionApplicationRequest: TransactionApplicationRequest; +} + +export interface CoreUserConsentDestroyRequest { + id: number; +} + +export interface CoreUserConsentListRequest { + application?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; + user?: number; +} + +export interface CoreUserConsentRetrieveRequest { + id: number; +} + +export interface CoreUserConsentUsedByListRequest { + id: number; +} + +export interface CoreUsersAccountLockdownCreateRequest { + userAccountLockdownRequest?: UserAccountLockdownRequest; +} + +export interface CoreUsersCreateRequest { + userRequest: UserRequest; +} + +export interface CoreUsersDestroyRequest { + id: number; +} + +export interface CoreUsersExportCreateRequest { + attributes?: string; + dateJoined?: Date; + dateJoinedGt?: Date; + dateJoinedLt?: Date; + email?: string; + groupsByName?: Array; + groupsByPk?: Array; + isActive?: boolean; + isSuperuser?: boolean; + lastLogin?: Date; + lastLoginGt?: Date; + lastLoginIsnull?: boolean; + lastLoginLt?: Date; + lastUpdated?: Date; + lastUpdatedGt?: Date; + lastUpdatedLt?: Date; + name?: string; + ordering?: string; + path?: string; + pathStartswith?: string; + rolesByName?: Array; + rolesByPk?: Array; + search?: string; + type?: Array; + username?: string; + uuid?: string; +} + +export interface CoreUsersImpersonateCreateRequest { + id: number; + impersonationRequest: ImpersonationRequest; +} + +export interface CoreUsersListRequest { + attributes?: string; + dateJoined?: Date; + dateJoinedGt?: Date; + dateJoinedLt?: Date; + email?: string; + groupsByName?: Array; + groupsByPk?: Array; + includeGroups?: boolean; + includeRoles?: boolean; + isActive?: boolean; + isSuperuser?: boolean; + lastLogin?: Date; + lastLoginGt?: Date; + lastLoginIsnull?: boolean; + lastLoginLt?: Date; + lastUpdated?: Date; + lastUpdatedGt?: Date; + lastUpdatedLt?: Date; + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + path?: string; + pathStartswith?: string; + rolesByName?: Array; + rolesByPk?: Array; + search?: string; + type?: Array; + username?: string; + uuid?: string; +} + +export interface CoreUsersPartialUpdateRequest { + id: number; + patchedUserRequest?: PatchedUserRequest; +} + +export interface CoreUsersPathsRetrieveRequest { + search?: string; +} + +export interface CoreUsersRecoveryCreateRequest { + id: number; + userRecoveryLinkRequest?: UserRecoveryLinkRequest; +} + +export interface CoreUsersRecoveryEmailCreateRequest { + id: number; + userRecoveryEmailRequest: UserRecoveryEmailRequest; +} + +export interface CoreUsersRetrieveRequest { + id: number; +} + +export interface CoreUsersServiceAccountCreateRequest { + userServiceAccountRequest: UserServiceAccountRequest; +} + +export interface CoreUsersSetPasswordCreateRequest { + id: number; + userPasswordSetRequest: UserPasswordSetRequest; +} + +export interface CoreUsersSetPasswordHashCreateRequest { + id: number; + userPasswordHashSetRequest: UserPasswordHashSetRequest; +} + +export interface CoreUsersUpdateRequest { + id: number; + userRequest: UserRequest; +} + +export interface CoreUsersUsedByListRequest { + id: number; +} + +/** + * + */ +export class CoreApi extends runtime.BaseAPI { + /** + * Creates request options for coreApplicationEntitlementsCreate without sending the request + */ + async coreApplicationEntitlementsCreateRequestOpts( + requestParameters: CoreApplicationEntitlementsCreateRequest, + ): Promise { + if (requestParameters["applicationEntitlementRequest"] == null) { + throw new runtime.RequiredError( + "applicationEntitlementRequest", + 'Required parameter "applicationEntitlementRequest" was null or undefined when calling coreApplicationEntitlementsCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/core/application_entitlements/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: ApplicationEntitlementRequestToJSON( + requestParameters["applicationEntitlementRequest"], + ), + }; + } + + /** + * ApplicationEntitlement Viewset + */ + async coreApplicationEntitlementsCreateRaw( + requestParameters: CoreApplicationEntitlementsCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.coreApplicationEntitlementsCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + ApplicationEntitlementFromJSON(jsonValue), + ); + } + + /** + * ApplicationEntitlement Viewset + */ + async coreApplicationEntitlementsCreate( + requestParameters: CoreApplicationEntitlementsCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.coreApplicationEntitlementsCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for coreApplicationEntitlementsDestroy without sending the request + */ + async coreApplicationEntitlementsDestroyRequestOpts( + requestParameters: CoreApplicationEntitlementsDestroyRequest, + ): Promise { + if (requestParameters["pbmUuid"] == null) { + throw new runtime.RequiredError( + "pbmUuid", + 'Required parameter "pbmUuid" was null or undefined when calling coreApplicationEntitlementsDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/core/application_entitlements/{pbm_uuid}/`; + urlPath = urlPath.replace( + `{${"pbm_uuid"}}`, + encodeURIComponent(String(requestParameters["pbmUuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * ApplicationEntitlement Viewset + */ + async coreApplicationEntitlementsDestroyRaw( + requestParameters: CoreApplicationEntitlementsDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.coreApplicationEntitlementsDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * ApplicationEntitlement Viewset + */ + async coreApplicationEntitlementsDestroy( + requestParameters: CoreApplicationEntitlementsDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.coreApplicationEntitlementsDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for coreApplicationEntitlementsList without sending the request + */ + async coreApplicationEntitlementsListRequestOpts( + requestParameters: CoreApplicationEntitlementsListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["app"] != null) { + queryParameters["app"] = requestParameters["app"]; + } + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["pbmUuid"] != null) { + queryParameters["pbm_uuid"] = requestParameters["pbmUuid"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/core/application_entitlements/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * ApplicationEntitlement Viewset + */ + async coreApplicationEntitlementsListRaw( + requestParameters: CoreApplicationEntitlementsListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.coreApplicationEntitlementsListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedApplicationEntitlementListFromJSON(jsonValue), + ); + } + + /** + * ApplicationEntitlement Viewset + */ + async coreApplicationEntitlementsList( + requestParameters: CoreApplicationEntitlementsListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.coreApplicationEntitlementsListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for coreApplicationEntitlementsPartialUpdate without sending the request + */ + async coreApplicationEntitlementsPartialUpdateRequestOpts( + requestParameters: CoreApplicationEntitlementsPartialUpdateRequest, + ): Promise { + if (requestParameters["pbmUuid"] == null) { + throw new runtime.RequiredError( + "pbmUuid", + 'Required parameter "pbmUuid" was null or undefined when calling coreApplicationEntitlementsPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/core/application_entitlements/{pbm_uuid}/`; + urlPath = urlPath.replace( + `{${"pbm_uuid"}}`, + encodeURIComponent(String(requestParameters["pbmUuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedApplicationEntitlementRequestToJSON( + requestParameters["patchedApplicationEntitlementRequest"], + ), + }; + } + + /** + * ApplicationEntitlement Viewset + */ + async coreApplicationEntitlementsPartialUpdateRaw( + requestParameters: CoreApplicationEntitlementsPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.coreApplicationEntitlementsPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + ApplicationEntitlementFromJSON(jsonValue), + ); + } + + /** + * ApplicationEntitlement Viewset + */ + async coreApplicationEntitlementsPartialUpdate( + requestParameters: CoreApplicationEntitlementsPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.coreApplicationEntitlementsPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for coreApplicationEntitlementsRetrieve without sending the request + */ + async coreApplicationEntitlementsRetrieveRequestOpts( + requestParameters: CoreApplicationEntitlementsRetrieveRequest, + ): Promise { + if (requestParameters["pbmUuid"] == null) { + throw new runtime.RequiredError( + "pbmUuid", + 'Required parameter "pbmUuid" was null or undefined when calling coreApplicationEntitlementsRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/core/application_entitlements/{pbm_uuid}/`; + urlPath = urlPath.replace( + `{${"pbm_uuid"}}`, + encodeURIComponent(String(requestParameters["pbmUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * ApplicationEntitlement Viewset + */ + async coreApplicationEntitlementsRetrieveRaw( + requestParameters: CoreApplicationEntitlementsRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.coreApplicationEntitlementsRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + ApplicationEntitlementFromJSON(jsonValue), + ); + } + + /** + * ApplicationEntitlement Viewset + */ + async coreApplicationEntitlementsRetrieve( + requestParameters: CoreApplicationEntitlementsRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.coreApplicationEntitlementsRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for coreApplicationEntitlementsUpdate without sending the request + */ + async coreApplicationEntitlementsUpdateRequestOpts( + requestParameters: CoreApplicationEntitlementsUpdateRequest, + ): Promise { + if (requestParameters["pbmUuid"] == null) { + throw new runtime.RequiredError( + "pbmUuid", + 'Required parameter "pbmUuid" was null or undefined when calling coreApplicationEntitlementsUpdate().', + ); + } + + if (requestParameters["applicationEntitlementRequest"] == null) { + throw new runtime.RequiredError( + "applicationEntitlementRequest", + 'Required parameter "applicationEntitlementRequest" was null or undefined when calling coreApplicationEntitlementsUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/core/application_entitlements/{pbm_uuid}/`; + urlPath = urlPath.replace( + `{${"pbm_uuid"}}`, + encodeURIComponent(String(requestParameters["pbmUuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: ApplicationEntitlementRequestToJSON( + requestParameters["applicationEntitlementRequest"], + ), + }; + } + + /** + * ApplicationEntitlement Viewset + */ + async coreApplicationEntitlementsUpdateRaw( + requestParameters: CoreApplicationEntitlementsUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.coreApplicationEntitlementsUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + ApplicationEntitlementFromJSON(jsonValue), + ); + } + + /** + * ApplicationEntitlement Viewset + */ + async coreApplicationEntitlementsUpdate( + requestParameters: CoreApplicationEntitlementsUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.coreApplicationEntitlementsUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for coreApplicationEntitlementsUsedByList without sending the request + */ + async coreApplicationEntitlementsUsedByListRequestOpts( + requestParameters: CoreApplicationEntitlementsUsedByListRequest, + ): Promise { + if (requestParameters["pbmUuid"] == null) { + throw new runtime.RequiredError( + "pbmUuid", + 'Required parameter "pbmUuid" was null or undefined when calling coreApplicationEntitlementsUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/core/application_entitlements/{pbm_uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"pbm_uuid"}}`, + encodeURIComponent(String(requestParameters["pbmUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async coreApplicationEntitlementsUsedByListRaw( + requestParameters: CoreApplicationEntitlementsUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.coreApplicationEntitlementsUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async coreApplicationEntitlementsUsedByList( + requestParameters: CoreApplicationEntitlementsUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.coreApplicationEntitlementsUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for coreApplicationsCheckAccessRetrieve without sending the request + */ + async coreApplicationsCheckAccessRetrieveRequestOpts( + requestParameters: CoreApplicationsCheckAccessRetrieveRequest, + ): Promise { + if (requestParameters["slug"] == null) { + throw new runtime.RequiredError( + "slug", + 'Required parameter "slug" was null or undefined when calling coreApplicationsCheckAccessRetrieve().', + ); + } + + const queryParameters: any = {}; + + if (requestParameters["forUser"] != null) { + queryParameters["for_user"] = requestParameters["forUser"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/core/applications/{slug}/check_access/`; + urlPath = urlPath.replace( + `{${"slug"}}`, + encodeURIComponent(String(requestParameters["slug"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Check access to a single application by slug + */ + async coreApplicationsCheckAccessRetrieveRaw( + requestParameters: CoreApplicationsCheckAccessRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.coreApplicationsCheckAccessRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PolicyTestResultFromJSON(jsonValue), + ); + } + + /** + * Check access to a single application by slug + */ + async coreApplicationsCheckAccessRetrieve( + requestParameters: CoreApplicationsCheckAccessRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.coreApplicationsCheckAccessRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for coreApplicationsCreate without sending the request + */ + async coreApplicationsCreateRequestOpts( + requestParameters: CoreApplicationsCreateRequest, + ): Promise { + if (requestParameters["applicationRequest"] == null) { + throw new runtime.RequiredError( + "applicationRequest", + 'Required parameter "applicationRequest" was null or undefined when calling coreApplicationsCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/core/applications/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: ApplicationRequestToJSON(requestParameters["applicationRequest"]), + }; + } + + /** + * Application Viewset + */ + async coreApplicationsCreateRaw( + requestParameters: CoreApplicationsCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.coreApplicationsCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => ApplicationFromJSON(jsonValue)); + } + + /** + * Application Viewset + */ + async coreApplicationsCreate( + requestParameters: CoreApplicationsCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.coreApplicationsCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for coreApplicationsDestroy without sending the request + */ + async coreApplicationsDestroyRequestOpts( + requestParameters: CoreApplicationsDestroyRequest, + ): Promise { + if (requestParameters["slug"] == null) { + throw new runtime.RequiredError( + "slug", + 'Required parameter "slug" was null or undefined when calling coreApplicationsDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/core/applications/{slug}/`; + urlPath = urlPath.replace( + `{${"slug"}}`, + encodeURIComponent(String(requestParameters["slug"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Application Viewset + */ + async coreApplicationsDestroyRaw( + requestParameters: CoreApplicationsDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.coreApplicationsDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Application Viewset + */ + async coreApplicationsDestroy( + requestParameters: CoreApplicationsDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.coreApplicationsDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for coreApplicationsList without sending the request + */ + async coreApplicationsListRequestOpts( + requestParameters: CoreApplicationsListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["forUser"] != null) { + queryParameters["for_user"] = requestParameters["forUser"]; + } + + if (requestParameters["group"] != null) { + queryParameters["group"] = requestParameters["group"]; + } + + if (requestParameters["metaDescription"] != null) { + queryParameters["meta_description"] = requestParameters["metaDescription"]; + } + + if (requestParameters["metaLaunchUrl"] != null) { + queryParameters["meta_launch_url"] = requestParameters["metaLaunchUrl"]; + } + + if (requestParameters["metaPublisher"] != null) { + queryParameters["meta_publisher"] = requestParameters["metaPublisher"]; + } + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["onlyWithLaunchUrl"] != null) { + queryParameters["only_with_launch_url"] = requestParameters["onlyWithLaunchUrl"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["slug"] != null) { + queryParameters["slug"] = requestParameters["slug"]; + } + + if (requestParameters["superuserFullList"] != null) { + queryParameters["superuser_full_list"] = requestParameters["superuserFullList"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/core/applications/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Custom list method that checks Policy based access instead of guardian + */ + async coreApplicationsListRaw( + requestParameters: CoreApplicationsListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.coreApplicationsListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedApplicationListFromJSON(jsonValue), + ); + } + + /** + * Custom list method that checks Policy based access instead of guardian + */ + async coreApplicationsList( + requestParameters: CoreApplicationsListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.coreApplicationsListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for coreApplicationsPartialUpdate without sending the request + */ + async coreApplicationsPartialUpdateRequestOpts( + requestParameters: CoreApplicationsPartialUpdateRequest, + ): Promise { + if (requestParameters["slug"] == null) { + throw new runtime.RequiredError( + "slug", + 'Required parameter "slug" was null or undefined when calling coreApplicationsPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/core/applications/{slug}/`; + urlPath = urlPath.replace( + `{${"slug"}}`, + encodeURIComponent(String(requestParameters["slug"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedApplicationRequestToJSON(requestParameters["patchedApplicationRequest"]), + }; + } + + /** + * Application Viewset + */ + async coreApplicationsPartialUpdateRaw( + requestParameters: CoreApplicationsPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.coreApplicationsPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => ApplicationFromJSON(jsonValue)); + } + + /** + * Application Viewset + */ + async coreApplicationsPartialUpdate( + requestParameters: CoreApplicationsPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.coreApplicationsPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for coreApplicationsRetrieve without sending the request + */ + async coreApplicationsRetrieveRequestOpts( + requestParameters: CoreApplicationsRetrieveRequest, + ): Promise { + if (requestParameters["slug"] == null) { + throw new runtime.RequiredError( + "slug", + 'Required parameter "slug" was null or undefined when calling coreApplicationsRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/core/applications/{slug}/`; + urlPath = urlPath.replace( + `{${"slug"}}`, + encodeURIComponent(String(requestParameters["slug"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Application Viewset + */ + async coreApplicationsRetrieveRaw( + requestParameters: CoreApplicationsRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.coreApplicationsRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => ApplicationFromJSON(jsonValue)); + } + + /** + * Application Viewset + */ + async coreApplicationsRetrieve( + requestParameters: CoreApplicationsRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.coreApplicationsRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for coreApplicationsUpdate without sending the request + */ + async coreApplicationsUpdateRequestOpts( + requestParameters: CoreApplicationsUpdateRequest, + ): Promise { + if (requestParameters["slug"] == null) { + throw new runtime.RequiredError( + "slug", + 'Required parameter "slug" was null or undefined when calling coreApplicationsUpdate().', + ); + } + + if (requestParameters["applicationRequest"] == null) { + throw new runtime.RequiredError( + "applicationRequest", + 'Required parameter "applicationRequest" was null or undefined when calling coreApplicationsUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/core/applications/{slug}/`; + urlPath = urlPath.replace( + `{${"slug"}}`, + encodeURIComponent(String(requestParameters["slug"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: ApplicationRequestToJSON(requestParameters["applicationRequest"]), + }; + } + + /** + * Application Viewset + */ + async coreApplicationsUpdateRaw( + requestParameters: CoreApplicationsUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.coreApplicationsUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => ApplicationFromJSON(jsonValue)); + } + + /** + * Application Viewset + */ + async coreApplicationsUpdate( + requestParameters: CoreApplicationsUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.coreApplicationsUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for coreApplicationsUsedByList without sending the request + */ + async coreApplicationsUsedByListRequestOpts( + requestParameters: CoreApplicationsUsedByListRequest, + ): Promise { + if (requestParameters["slug"] == null) { + throw new runtime.RequiredError( + "slug", + 'Required parameter "slug" was null or undefined when calling coreApplicationsUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/core/applications/{slug}/used_by/`; + urlPath = urlPath.replace( + `{${"slug"}}`, + encodeURIComponent(String(requestParameters["slug"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async coreApplicationsUsedByListRaw( + requestParameters: CoreApplicationsUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.coreApplicationsUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async coreApplicationsUsedByList( + requestParameters: CoreApplicationsUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.coreApplicationsUsedByListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for coreAuthenticatedSessionsBulkDeleteDestroy without sending the request + */ + async coreAuthenticatedSessionsBulkDeleteDestroyRequestOpts( + requestParameters: CoreAuthenticatedSessionsBulkDeleteDestroyRequest, + ): Promise { + if (requestParameters["userPks"] == null) { + throw new runtime.RequiredError( + "userPks", + 'Required parameter "userPks" was null or undefined when calling coreAuthenticatedSessionsBulkDeleteDestroy().', + ); + } + + const queryParameters: any = {}; + + if (requestParameters["userPks"] != null) { + queryParameters["user_pks"] = requestParameters["userPks"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/core/authenticated_sessions/bulk_delete/`; + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Bulk revoke all sessions for multiple users + */ + async coreAuthenticatedSessionsBulkDeleteDestroyRaw( + requestParameters: CoreAuthenticatedSessionsBulkDeleteDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.coreAuthenticatedSessionsBulkDeleteDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + BulkDeleteSessionResponseFromJSON(jsonValue), + ); + } + + /** + * Bulk revoke all sessions for multiple users + */ + async coreAuthenticatedSessionsBulkDeleteDestroy( + requestParameters: CoreAuthenticatedSessionsBulkDeleteDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.coreAuthenticatedSessionsBulkDeleteDestroyRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for coreAuthenticatedSessionsDestroy without sending the request + */ + async coreAuthenticatedSessionsDestroyRequestOpts( + requestParameters: CoreAuthenticatedSessionsDestroyRequest, + ): Promise { + if (requestParameters["uuid"] == null) { + throw new runtime.RequiredError( + "uuid", + 'Required parameter "uuid" was null or undefined when calling coreAuthenticatedSessionsDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/core/authenticated_sessions/{uuid}/`; + urlPath = urlPath.replace( + `{${"uuid"}}`, + encodeURIComponent(String(requestParameters["uuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * AuthenticatedSession Viewset + */ + async coreAuthenticatedSessionsDestroyRaw( + requestParameters: CoreAuthenticatedSessionsDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.coreAuthenticatedSessionsDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * AuthenticatedSession Viewset + */ + async coreAuthenticatedSessionsDestroy( + requestParameters: CoreAuthenticatedSessionsDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.coreAuthenticatedSessionsDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for coreAuthenticatedSessionsList without sending the request + */ + async coreAuthenticatedSessionsListRequestOpts( + requestParameters: CoreAuthenticatedSessionsListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["sessionLastIp"] != null) { + queryParameters["session__last_ip"] = requestParameters["sessionLastIp"]; + } + + if (requestParameters["sessionLastUserAgent"] != null) { + queryParameters["session__last_user_agent"] = requestParameters["sessionLastUserAgent"]; + } + + if (requestParameters["userUsername"] != null) { + queryParameters["user__username"] = requestParameters["userUsername"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/core/authenticated_sessions/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * AuthenticatedSession Viewset + */ + async coreAuthenticatedSessionsListRaw( + requestParameters: CoreAuthenticatedSessionsListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.coreAuthenticatedSessionsListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedAuthenticatedSessionListFromJSON(jsonValue), + ); + } + + /** + * AuthenticatedSession Viewset + */ + async coreAuthenticatedSessionsList( + requestParameters: CoreAuthenticatedSessionsListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.coreAuthenticatedSessionsListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for coreAuthenticatedSessionsRetrieve without sending the request + */ + async coreAuthenticatedSessionsRetrieveRequestOpts( + requestParameters: CoreAuthenticatedSessionsRetrieveRequest, + ): Promise { + if (requestParameters["uuid"] == null) { + throw new runtime.RequiredError( + "uuid", + 'Required parameter "uuid" was null or undefined when calling coreAuthenticatedSessionsRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/core/authenticated_sessions/{uuid}/`; + urlPath = urlPath.replace( + `{${"uuid"}}`, + encodeURIComponent(String(requestParameters["uuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * AuthenticatedSession Viewset + */ + async coreAuthenticatedSessionsRetrieveRaw( + requestParameters: CoreAuthenticatedSessionsRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.coreAuthenticatedSessionsRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + AuthenticatedSessionFromJSON(jsonValue), + ); + } + + /** + * AuthenticatedSession Viewset + */ + async coreAuthenticatedSessionsRetrieve( + requestParameters: CoreAuthenticatedSessionsRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.coreAuthenticatedSessionsRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for coreAuthenticatedSessionsUsedByList without sending the request + */ + async coreAuthenticatedSessionsUsedByListRequestOpts( + requestParameters: CoreAuthenticatedSessionsUsedByListRequest, + ): Promise { + if (requestParameters["uuid"] == null) { + throw new runtime.RequiredError( + "uuid", + 'Required parameter "uuid" was null or undefined when calling coreAuthenticatedSessionsUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/core/authenticated_sessions/{uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"uuid"}}`, + encodeURIComponent(String(requestParameters["uuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async coreAuthenticatedSessionsUsedByListRaw( + requestParameters: CoreAuthenticatedSessionsUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.coreAuthenticatedSessionsUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async coreAuthenticatedSessionsUsedByList( + requestParameters: CoreAuthenticatedSessionsUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.coreAuthenticatedSessionsUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for coreBrandsCreate without sending the request + */ + async coreBrandsCreateRequestOpts( + requestParameters: CoreBrandsCreateRequest, + ): Promise { + if (requestParameters["brandRequest"] == null) { + throw new runtime.RequiredError( + "brandRequest", + 'Required parameter "brandRequest" was null or undefined when calling coreBrandsCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/core/brands/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: BrandRequestToJSON(requestParameters["brandRequest"]), + }; + } + + /** + * Brand Viewset + */ + async coreBrandsCreateRaw( + requestParameters: CoreBrandsCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.coreBrandsCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => BrandFromJSON(jsonValue)); + } + + /** + * Brand Viewset + */ + async coreBrandsCreate( + requestParameters: CoreBrandsCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.coreBrandsCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for coreBrandsCurrentRetrieve without sending the request + */ + async coreBrandsCurrentRetrieveRequestOpts(): Promise { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/core/brands/current/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get current brand + */ + async coreBrandsCurrentRetrieveRaw( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.coreBrandsCurrentRetrieveRequestOpts(); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + CurrentBrandFromJSON(jsonValue), + ); + } + + /** + * Get current brand + */ + async coreBrandsCurrentRetrieve( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.coreBrandsCurrentRetrieveRaw(initOverrides); + return await response.value(); + } + + /** + * Creates request options for coreBrandsDestroy without sending the request + */ + async coreBrandsDestroyRequestOpts( + requestParameters: CoreBrandsDestroyRequest, + ): Promise { + if (requestParameters["brandUuid"] == null) { + throw new runtime.RequiredError( + "brandUuid", + 'Required parameter "brandUuid" was null or undefined when calling coreBrandsDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/core/brands/{brand_uuid}/`; + urlPath = urlPath.replace( + `{${"brand_uuid"}}`, + encodeURIComponent(String(requestParameters["brandUuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Brand Viewset + */ + async coreBrandsDestroyRaw( + requestParameters: CoreBrandsDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.coreBrandsDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Brand Viewset + */ + async coreBrandsDestroy( + requestParameters: CoreBrandsDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.coreBrandsDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for coreBrandsList without sending the request + */ + async coreBrandsListRequestOpts( + requestParameters: CoreBrandsListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["brandUuid"] != null) { + queryParameters["brand_uuid"] = requestParameters["brandUuid"]; + } + + if (requestParameters["brandingDefaultFlowBackground"] != null) { + queryParameters["branding_default_flow_background"] = + requestParameters["brandingDefaultFlowBackground"]; + } + + if (requestParameters["brandingFavicon"] != null) { + queryParameters["branding_favicon"] = requestParameters["brandingFavicon"]; + } + + if (requestParameters["brandingLogo"] != null) { + queryParameters["branding_logo"] = requestParameters["brandingLogo"]; + } + + if (requestParameters["brandingTitle"] != null) { + queryParameters["branding_title"] = requestParameters["brandingTitle"]; + } + + if (requestParameters["clientCertificates"] != null) { + queryParameters["client_certificates"] = requestParameters["clientCertificates"]; + } + + if (requestParameters["_default"] != null) { + queryParameters["default"] = requestParameters["_default"]; + } + + if (requestParameters["domain"] != null) { + queryParameters["domain"] = requestParameters["domain"]; + } + + if (requestParameters["flowAuthentication"] != null) { + queryParameters["flow_authentication"] = requestParameters["flowAuthentication"]; + } + + if (requestParameters["flowDeviceCode"] != null) { + queryParameters["flow_device_code"] = requestParameters["flowDeviceCode"]; + } + + if (requestParameters["flowInvalidation"] != null) { + queryParameters["flow_invalidation"] = requestParameters["flowInvalidation"]; + } + + if (requestParameters["flowLockdown"] != null) { + queryParameters["flow_lockdown"] = requestParameters["flowLockdown"]; + } + + if (requestParameters["flowRecovery"] != null) { + queryParameters["flow_recovery"] = requestParameters["flowRecovery"]; + } + + if (requestParameters["flowUnenrollment"] != null) { + queryParameters["flow_unenrollment"] = requestParameters["flowUnenrollment"]; + } + + if (requestParameters["flowUserSettings"] != null) { + queryParameters["flow_user_settings"] = requestParameters["flowUserSettings"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["webCertificate"] != null) { + queryParameters["web_certificate"] = requestParameters["webCertificate"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/core/brands/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Brand Viewset + */ + async coreBrandsListRaw( + requestParameters: CoreBrandsListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.coreBrandsListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedBrandListFromJSON(jsonValue), + ); + } + + /** + * Brand Viewset + */ + async coreBrandsList( + requestParameters: CoreBrandsListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.coreBrandsListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for coreBrandsPartialUpdate without sending the request + */ + async coreBrandsPartialUpdateRequestOpts( + requestParameters: CoreBrandsPartialUpdateRequest, + ): Promise { + if (requestParameters["brandUuid"] == null) { + throw new runtime.RequiredError( + "brandUuid", + 'Required parameter "brandUuid" was null or undefined when calling coreBrandsPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/core/brands/{brand_uuid}/`; + urlPath = urlPath.replace( + `{${"brand_uuid"}}`, + encodeURIComponent(String(requestParameters["brandUuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedBrandRequestToJSON(requestParameters["patchedBrandRequest"]), + }; + } + + /** + * Brand Viewset + */ + async coreBrandsPartialUpdateRaw( + requestParameters: CoreBrandsPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.coreBrandsPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => BrandFromJSON(jsonValue)); + } + + /** + * Brand Viewset + */ + async coreBrandsPartialUpdate( + requestParameters: CoreBrandsPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.coreBrandsPartialUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for coreBrandsRetrieve without sending the request + */ + async coreBrandsRetrieveRequestOpts( + requestParameters: CoreBrandsRetrieveRequest, + ): Promise { + if (requestParameters["brandUuid"] == null) { + throw new runtime.RequiredError( + "brandUuid", + 'Required parameter "brandUuid" was null or undefined when calling coreBrandsRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/core/brands/{brand_uuid}/`; + urlPath = urlPath.replace( + `{${"brand_uuid"}}`, + encodeURIComponent(String(requestParameters["brandUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Brand Viewset + */ + async coreBrandsRetrieveRaw( + requestParameters: CoreBrandsRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.coreBrandsRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => BrandFromJSON(jsonValue)); + } + + /** + * Brand Viewset + */ + async coreBrandsRetrieve( + requestParameters: CoreBrandsRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.coreBrandsRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for coreBrandsUpdate without sending the request + */ + async coreBrandsUpdateRequestOpts( + requestParameters: CoreBrandsUpdateRequest, + ): Promise { + if (requestParameters["brandUuid"] == null) { + throw new runtime.RequiredError( + "brandUuid", + 'Required parameter "brandUuid" was null or undefined when calling coreBrandsUpdate().', + ); + } + + if (requestParameters["brandRequest"] == null) { + throw new runtime.RequiredError( + "brandRequest", + 'Required parameter "brandRequest" was null or undefined when calling coreBrandsUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/core/brands/{brand_uuid}/`; + urlPath = urlPath.replace( + `{${"brand_uuid"}}`, + encodeURIComponent(String(requestParameters["brandUuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: BrandRequestToJSON(requestParameters["brandRequest"]), + }; + } + + /** + * Brand Viewset + */ + async coreBrandsUpdateRaw( + requestParameters: CoreBrandsUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.coreBrandsUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => BrandFromJSON(jsonValue)); + } + + /** + * Brand Viewset + */ + async coreBrandsUpdate( + requestParameters: CoreBrandsUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.coreBrandsUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for coreBrandsUsedByList without sending the request + */ + async coreBrandsUsedByListRequestOpts( + requestParameters: CoreBrandsUsedByListRequest, + ): Promise { + if (requestParameters["brandUuid"] == null) { + throw new runtime.RequiredError( + "brandUuid", + 'Required parameter "brandUuid" was null or undefined when calling coreBrandsUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/core/brands/{brand_uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"brand_uuid"}}`, + encodeURIComponent(String(requestParameters["brandUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async coreBrandsUsedByListRaw( + requestParameters: CoreBrandsUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.coreBrandsUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async coreBrandsUsedByList( + requestParameters: CoreBrandsUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.coreBrandsUsedByListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for coreGroupsAddUserCreate without sending the request + */ + async coreGroupsAddUserCreateRequestOpts( + requestParameters: CoreGroupsAddUserCreateRequest, + ): Promise { + if (requestParameters["groupUuid"] == null) { + throw new runtime.RequiredError( + "groupUuid", + 'Required parameter "groupUuid" was null or undefined when calling coreGroupsAddUserCreate().', + ); + } + + if (requestParameters["userAccountRequest"] == null) { + throw new runtime.RequiredError( + "userAccountRequest", + 'Required parameter "userAccountRequest" was null or undefined when calling coreGroupsAddUserCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/core/groups/{group_uuid}/add_user/`; + urlPath = urlPath.replace( + `{${"group_uuid"}}`, + encodeURIComponent(String(requestParameters["groupUuid"])), + ); + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: UserAccountRequestToJSON(requestParameters["userAccountRequest"]), + }; + } + + /** + * Add user to group + */ + async coreGroupsAddUserCreateRaw( + requestParameters: CoreGroupsAddUserCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.coreGroupsAddUserCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Add user to group + */ + async coreGroupsAddUserCreate( + requestParameters: CoreGroupsAddUserCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.coreGroupsAddUserCreateRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for coreGroupsCreate without sending the request + */ + async coreGroupsCreateRequestOpts( + requestParameters: CoreGroupsCreateRequest, + ): Promise { + if (requestParameters["groupRequest"] == null) { + throw new runtime.RequiredError( + "groupRequest", + 'Required parameter "groupRequest" was null or undefined when calling coreGroupsCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/core/groups/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: GroupRequestToJSON(requestParameters["groupRequest"]), + }; + } + + /** + * Group Viewset + */ + async coreGroupsCreateRaw( + requestParameters: CoreGroupsCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.coreGroupsCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => GroupFromJSON(jsonValue)); + } + + /** + * Group Viewset + */ + async coreGroupsCreate( + requestParameters: CoreGroupsCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.coreGroupsCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for coreGroupsDestroy without sending the request + */ + async coreGroupsDestroyRequestOpts( + requestParameters: CoreGroupsDestroyRequest, + ): Promise { + if (requestParameters["groupUuid"] == null) { + throw new runtime.RequiredError( + "groupUuid", + 'Required parameter "groupUuid" was null or undefined when calling coreGroupsDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/core/groups/{group_uuid}/`; + urlPath = urlPath.replace( + `{${"group_uuid"}}`, + encodeURIComponent(String(requestParameters["groupUuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Group Viewset + */ + async coreGroupsDestroyRaw( + requestParameters: CoreGroupsDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.coreGroupsDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Group Viewset + */ + async coreGroupsDestroy( + requestParameters: CoreGroupsDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.coreGroupsDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for coreGroupsList without sending the request + */ + async coreGroupsListRequestOpts( + requestParameters: CoreGroupsListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["attributes"] != null) { + queryParameters["attributes"] = requestParameters["attributes"]; + } + + if (requestParameters["includeChildren"] != null) { + queryParameters["include_children"] = requestParameters["includeChildren"]; + } + + if (requestParameters["includeInheritedRoles"] != null) { + queryParameters["include_inherited_roles"] = requestParameters["includeInheritedRoles"]; + } + + if (requestParameters["includeParents"] != null) { + queryParameters["include_parents"] = requestParameters["includeParents"]; + } + + if (requestParameters["includeUsers"] != null) { + queryParameters["include_users"] = requestParameters["includeUsers"]; + } + + if (requestParameters["isSuperuser"] != null) { + queryParameters["is_superuser"] = requestParameters["isSuperuser"]; + } + + if (requestParameters["membersByPk"] != null) { + queryParameters["members_by_pk"] = requestParameters["membersByPk"]; + } + + if (requestParameters["membersByUsername"] != null) { + queryParameters["members_by_username"] = requestParameters["membersByUsername"]; + } + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/core/groups/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Group Viewset + */ + async coreGroupsListRaw( + requestParameters: CoreGroupsListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.coreGroupsListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedGroupListFromJSON(jsonValue), + ); + } + + /** + * Group Viewset + */ + async coreGroupsList( + requestParameters: CoreGroupsListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.coreGroupsListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for coreGroupsPartialUpdate without sending the request + */ + async coreGroupsPartialUpdateRequestOpts( + requestParameters: CoreGroupsPartialUpdateRequest, + ): Promise { + if (requestParameters["groupUuid"] == null) { + throw new runtime.RequiredError( + "groupUuid", + 'Required parameter "groupUuid" was null or undefined when calling coreGroupsPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/core/groups/{group_uuid}/`; + urlPath = urlPath.replace( + `{${"group_uuid"}}`, + encodeURIComponent(String(requestParameters["groupUuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedGroupRequestToJSON(requestParameters["patchedGroupRequest"]), + }; + } + + /** + * Group Viewset + */ + async coreGroupsPartialUpdateRaw( + requestParameters: CoreGroupsPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.coreGroupsPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => GroupFromJSON(jsonValue)); + } + + /** + * Group Viewset + */ + async coreGroupsPartialUpdate( + requestParameters: CoreGroupsPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.coreGroupsPartialUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for coreGroupsRemoveUserCreate without sending the request + */ + async coreGroupsRemoveUserCreateRequestOpts( + requestParameters: CoreGroupsRemoveUserCreateRequest, + ): Promise { + if (requestParameters["groupUuid"] == null) { + throw new runtime.RequiredError( + "groupUuid", + 'Required parameter "groupUuid" was null or undefined when calling coreGroupsRemoveUserCreate().', + ); + } + + if (requestParameters["userAccountRequest"] == null) { + throw new runtime.RequiredError( + "userAccountRequest", + 'Required parameter "userAccountRequest" was null or undefined when calling coreGroupsRemoveUserCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/core/groups/{group_uuid}/remove_user/`; + urlPath = urlPath.replace( + `{${"group_uuid"}}`, + encodeURIComponent(String(requestParameters["groupUuid"])), + ); + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: UserAccountRequestToJSON(requestParameters["userAccountRequest"]), + }; + } + + /** + * Remove user from group + */ + async coreGroupsRemoveUserCreateRaw( + requestParameters: CoreGroupsRemoveUserCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.coreGroupsRemoveUserCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Remove user from group + */ + async coreGroupsRemoveUserCreate( + requestParameters: CoreGroupsRemoveUserCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.coreGroupsRemoveUserCreateRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for coreGroupsRetrieve without sending the request + */ + async coreGroupsRetrieveRequestOpts( + requestParameters: CoreGroupsRetrieveRequest, + ): Promise { + if (requestParameters["groupUuid"] == null) { + throw new runtime.RequiredError( + "groupUuid", + 'Required parameter "groupUuid" was null or undefined when calling coreGroupsRetrieve().', + ); + } + + const queryParameters: any = {}; + + if (requestParameters["includeChildren"] != null) { + queryParameters["include_children"] = requestParameters["includeChildren"]; + } + + if (requestParameters["includeInheritedRoles"] != null) { + queryParameters["include_inherited_roles"] = requestParameters["includeInheritedRoles"]; + } + + if (requestParameters["includeParents"] != null) { + queryParameters["include_parents"] = requestParameters["includeParents"]; + } + + if (requestParameters["includeUsers"] != null) { + queryParameters["include_users"] = requestParameters["includeUsers"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/core/groups/{group_uuid}/`; + urlPath = urlPath.replace( + `{${"group_uuid"}}`, + encodeURIComponent(String(requestParameters["groupUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Group Viewset + */ + async coreGroupsRetrieveRaw( + requestParameters: CoreGroupsRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.coreGroupsRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => GroupFromJSON(jsonValue)); + } + + /** + * Group Viewset + */ + async coreGroupsRetrieve( + requestParameters: CoreGroupsRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.coreGroupsRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for coreGroupsUpdate without sending the request + */ + async coreGroupsUpdateRequestOpts( + requestParameters: CoreGroupsUpdateRequest, + ): Promise { + if (requestParameters["groupUuid"] == null) { + throw new runtime.RequiredError( + "groupUuid", + 'Required parameter "groupUuid" was null or undefined when calling coreGroupsUpdate().', + ); + } + + if (requestParameters["groupRequest"] == null) { + throw new runtime.RequiredError( + "groupRequest", + 'Required parameter "groupRequest" was null or undefined when calling coreGroupsUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/core/groups/{group_uuid}/`; + urlPath = urlPath.replace( + `{${"group_uuid"}}`, + encodeURIComponent(String(requestParameters["groupUuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: GroupRequestToJSON(requestParameters["groupRequest"]), + }; + } + + /** + * Group Viewset + */ + async coreGroupsUpdateRaw( + requestParameters: CoreGroupsUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.coreGroupsUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => GroupFromJSON(jsonValue)); + } + + /** + * Group Viewset + */ + async coreGroupsUpdate( + requestParameters: CoreGroupsUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.coreGroupsUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for coreGroupsUsedByList without sending the request + */ + async coreGroupsUsedByListRequestOpts( + requestParameters: CoreGroupsUsedByListRequest, + ): Promise { + if (requestParameters["groupUuid"] == null) { + throw new runtime.RequiredError( + "groupUuid", + 'Required parameter "groupUuid" was null or undefined when calling coreGroupsUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/core/groups/{group_uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"group_uuid"}}`, + encodeURIComponent(String(requestParameters["groupUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async coreGroupsUsedByListRaw( + requestParameters: CoreGroupsUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.coreGroupsUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async coreGroupsUsedByList( + requestParameters: CoreGroupsUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.coreGroupsUsedByListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for coreTokensCreate without sending the request + */ + async coreTokensCreateRequestOpts( + requestParameters: CoreTokensCreateRequest, + ): Promise { + if (requestParameters["tokenRequest"] == null) { + throw new runtime.RequiredError( + "tokenRequest", + 'Required parameter "tokenRequest" was null or undefined when calling coreTokensCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/core/tokens/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: TokenRequestToJSON(requestParameters["tokenRequest"]), + }; + } + + /** + * Token Viewset + */ + async coreTokensCreateRaw( + requestParameters: CoreTokensCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.coreTokensCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => TokenFromJSON(jsonValue)); + } + + /** + * Token Viewset + */ + async coreTokensCreate( + requestParameters: CoreTokensCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.coreTokensCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for coreTokensDestroy without sending the request + */ + async coreTokensDestroyRequestOpts( + requestParameters: CoreTokensDestroyRequest, + ): Promise { + if (requestParameters["identifier"] == null) { + throw new runtime.RequiredError( + "identifier", + 'Required parameter "identifier" was null or undefined when calling coreTokensDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/core/tokens/{identifier}/`; + urlPath = urlPath.replace( + `{${"identifier"}}`, + encodeURIComponent(String(requestParameters["identifier"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Token Viewset + */ + async coreTokensDestroyRaw( + requestParameters: CoreTokensDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.coreTokensDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Token Viewset + */ + async coreTokensDestroy( + requestParameters: CoreTokensDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.coreTokensDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for coreTokensList without sending the request + */ + async coreTokensListRequestOpts( + requestParameters: CoreTokensListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["description"] != null) { + queryParameters["description"] = requestParameters["description"]; + } + + if (requestParameters["expires"] != null) { + queryParameters["expires"] = (requestParameters["expires"] as any).toISOString(); + } + + if (requestParameters["expiring"] != null) { + queryParameters["expiring"] = requestParameters["expiring"]; + } + + if (requestParameters["identifier"] != null) { + queryParameters["identifier"] = requestParameters["identifier"]; + } + + if (requestParameters["intent"] != null) { + queryParameters["intent"] = requestParameters["intent"]; + } + + if (requestParameters["managed"] != null) { + queryParameters["managed"] = requestParameters["managed"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["userUsername"] != null) { + queryParameters["user__username"] = requestParameters["userUsername"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/core/tokens/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Token Viewset + */ + async coreTokensListRaw( + requestParameters: CoreTokensListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.coreTokensListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedTokenListFromJSON(jsonValue), + ); + } + + /** + * Token Viewset + */ + async coreTokensList( + requestParameters: CoreTokensListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.coreTokensListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for coreTokensPartialUpdate without sending the request + */ + async coreTokensPartialUpdateRequestOpts( + requestParameters: CoreTokensPartialUpdateRequest, + ): Promise { + if (requestParameters["identifier"] == null) { + throw new runtime.RequiredError( + "identifier", + 'Required parameter "identifier" was null or undefined when calling coreTokensPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/core/tokens/{identifier}/`; + urlPath = urlPath.replace( + `{${"identifier"}}`, + encodeURIComponent(String(requestParameters["identifier"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedTokenRequestToJSON(requestParameters["patchedTokenRequest"]), + }; + } + + /** + * Token Viewset + */ + async coreTokensPartialUpdateRaw( + requestParameters: CoreTokensPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.coreTokensPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => TokenFromJSON(jsonValue)); + } + + /** + * Token Viewset + */ + async coreTokensPartialUpdate( + requestParameters: CoreTokensPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.coreTokensPartialUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for coreTokensRetrieve without sending the request + */ + async coreTokensRetrieveRequestOpts( + requestParameters: CoreTokensRetrieveRequest, + ): Promise { + if (requestParameters["identifier"] == null) { + throw new runtime.RequiredError( + "identifier", + 'Required parameter "identifier" was null or undefined when calling coreTokensRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/core/tokens/{identifier}/`; + urlPath = urlPath.replace( + `{${"identifier"}}`, + encodeURIComponent(String(requestParameters["identifier"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Token Viewset + */ + async coreTokensRetrieveRaw( + requestParameters: CoreTokensRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.coreTokensRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => TokenFromJSON(jsonValue)); + } + + /** + * Token Viewset + */ + async coreTokensRetrieve( + requestParameters: CoreTokensRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.coreTokensRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for coreTokensSetKeyCreate without sending the request + */ + async coreTokensSetKeyCreateRequestOpts( + requestParameters: CoreTokensSetKeyCreateRequest, + ): Promise { + if (requestParameters["identifier"] == null) { + throw new runtime.RequiredError( + "identifier", + 'Required parameter "identifier" was null or undefined when calling coreTokensSetKeyCreate().', + ); + } + + if (requestParameters["tokenSetKeyRequest"] == null) { + throw new runtime.RequiredError( + "tokenSetKeyRequest", + 'Required parameter "tokenSetKeyRequest" was null or undefined when calling coreTokensSetKeyCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/core/tokens/{identifier}/set_key/`; + urlPath = urlPath.replace( + `{${"identifier"}}`, + encodeURIComponent(String(requestParameters["identifier"])), + ); + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: TokenSetKeyRequestToJSON(requestParameters["tokenSetKeyRequest"]), + }; + } + + /** + * Set token key. Action is logged as event. `authentik_core.set_token_key` permission is required. + */ + async coreTokensSetKeyCreateRaw( + requestParameters: CoreTokensSetKeyCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.coreTokensSetKeyCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Set token key. Action is logged as event. `authentik_core.set_token_key` permission is required. + */ + async coreTokensSetKeyCreate( + requestParameters: CoreTokensSetKeyCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.coreTokensSetKeyCreateRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for coreTokensUpdate without sending the request + */ + async coreTokensUpdateRequestOpts( + requestParameters: CoreTokensUpdateRequest, + ): Promise { + if (requestParameters["identifier"] == null) { + throw new runtime.RequiredError( + "identifier", + 'Required parameter "identifier" was null or undefined when calling coreTokensUpdate().', + ); + } + + if (requestParameters["tokenRequest"] == null) { + throw new runtime.RequiredError( + "tokenRequest", + 'Required parameter "tokenRequest" was null or undefined when calling coreTokensUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/core/tokens/{identifier}/`; + urlPath = urlPath.replace( + `{${"identifier"}}`, + encodeURIComponent(String(requestParameters["identifier"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: TokenRequestToJSON(requestParameters["tokenRequest"]), + }; + } + + /** + * Token Viewset + */ + async coreTokensUpdateRaw( + requestParameters: CoreTokensUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.coreTokensUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => TokenFromJSON(jsonValue)); + } + + /** + * Token Viewset + */ + async coreTokensUpdate( + requestParameters: CoreTokensUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.coreTokensUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for coreTokensUsedByList without sending the request + */ + async coreTokensUsedByListRequestOpts( + requestParameters: CoreTokensUsedByListRequest, + ): Promise { + if (requestParameters["identifier"] == null) { + throw new runtime.RequiredError( + "identifier", + 'Required parameter "identifier" was null or undefined when calling coreTokensUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/core/tokens/{identifier}/used_by/`; + urlPath = urlPath.replace( + `{${"identifier"}}`, + encodeURIComponent(String(requestParameters["identifier"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async coreTokensUsedByListRaw( + requestParameters: CoreTokensUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.coreTokensUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async coreTokensUsedByList( + requestParameters: CoreTokensUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.coreTokensUsedByListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for coreTokensViewKeyRetrieve without sending the request + */ + async coreTokensViewKeyRetrieveRequestOpts( + requestParameters: CoreTokensViewKeyRetrieveRequest, + ): Promise { + if (requestParameters["identifier"] == null) { + throw new runtime.RequiredError( + "identifier", + 'Required parameter "identifier" was null or undefined when calling coreTokensViewKeyRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/core/tokens/{identifier}/view_key/`; + urlPath = urlPath.replace( + `{${"identifier"}}`, + encodeURIComponent(String(requestParameters["identifier"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Return token key and log access + */ + async coreTokensViewKeyRetrieveRaw( + requestParameters: CoreTokensViewKeyRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.coreTokensViewKeyRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => TokenViewFromJSON(jsonValue)); + } + + /** + * Return token key and log access + */ + async coreTokensViewKeyRetrieve( + requestParameters: CoreTokensViewKeyRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.coreTokensViewKeyRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for coreTransactionalApplicationsUpdate without sending the request + */ + async coreTransactionalApplicationsUpdateRequestOpts( + requestParameters: CoreTransactionalApplicationsUpdateRequest, + ): Promise { + if (requestParameters["transactionApplicationRequest"] == null) { + throw new runtime.RequiredError( + "transactionApplicationRequest", + 'Required parameter "transactionApplicationRequest" was null or undefined when calling coreTransactionalApplicationsUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/core/transactional/applications/`; + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: TransactionApplicationRequestToJSON( + requestParameters["transactionApplicationRequest"], + ), + }; + } + + /** + * Convert data into a blueprint, validate it and apply it + */ + async coreTransactionalApplicationsUpdateRaw( + requestParameters: CoreTransactionalApplicationsUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.coreTransactionalApplicationsUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + TransactionApplicationResponseFromJSON(jsonValue), + ); + } + + /** + * Convert data into a blueprint, validate it and apply it + */ + async coreTransactionalApplicationsUpdate( + requestParameters: CoreTransactionalApplicationsUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.coreTransactionalApplicationsUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for coreUserConsentDestroy without sending the request + */ + async coreUserConsentDestroyRequestOpts( + requestParameters: CoreUserConsentDestroyRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling coreUserConsentDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/core/user_consent/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * UserConsent Viewset + */ + async coreUserConsentDestroyRaw( + requestParameters: CoreUserConsentDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.coreUserConsentDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * UserConsent Viewset + */ + async coreUserConsentDestroy( + requestParameters: CoreUserConsentDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.coreUserConsentDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for coreUserConsentList without sending the request + */ + async coreUserConsentListRequestOpts( + requestParameters: CoreUserConsentListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["application"] != null) { + queryParameters["application"] = requestParameters["application"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["user"] != null) { + queryParameters["user"] = requestParameters["user"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/core/user_consent/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * UserConsent Viewset + */ + async coreUserConsentListRaw( + requestParameters: CoreUserConsentListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.coreUserConsentListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedUserConsentListFromJSON(jsonValue), + ); + } + + /** + * UserConsent Viewset + */ + async coreUserConsentList( + requestParameters: CoreUserConsentListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.coreUserConsentListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for coreUserConsentRetrieve without sending the request + */ + async coreUserConsentRetrieveRequestOpts( + requestParameters: CoreUserConsentRetrieveRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling coreUserConsentRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/core/user_consent/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * UserConsent Viewset + */ + async coreUserConsentRetrieveRaw( + requestParameters: CoreUserConsentRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.coreUserConsentRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => UserConsentFromJSON(jsonValue)); + } + + /** + * UserConsent Viewset + */ + async coreUserConsentRetrieve( + requestParameters: CoreUserConsentRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.coreUserConsentRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for coreUserConsentUsedByList without sending the request + */ + async coreUserConsentUsedByListRequestOpts( + requestParameters: CoreUserConsentUsedByListRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling coreUserConsentUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/core/user_consent/{id}/used_by/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async coreUserConsentUsedByListRaw( + requestParameters: CoreUserConsentUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.coreUserConsentUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async coreUserConsentUsedByList( + requestParameters: CoreUserConsentUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.coreUserConsentUsedByListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for coreUsersAccountLockdownCreate without sending the request + */ + async coreUsersAccountLockdownCreateRequestOpts( + requestParameters: CoreUsersAccountLockdownCreateRequest, + ): Promise { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/core/users/account_lockdown/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: UserAccountLockdownRequestToJSON(requestParameters["userAccountLockdownRequest"]), + }; + } + + /** + * Choose the target account, then return a flow link. + */ + async coreUsersAccountLockdownCreateRaw( + requestParameters: CoreUsersAccountLockdownCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.coreUsersAccountLockdownCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => LinkFromJSON(jsonValue)); + } + + /** + * Choose the target account, then return a flow link. + */ + async coreUsersAccountLockdownCreate( + requestParameters: CoreUsersAccountLockdownCreateRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.coreUsersAccountLockdownCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for coreUsersCreate without sending the request + */ + async coreUsersCreateRequestOpts( + requestParameters: CoreUsersCreateRequest, + ): Promise { + if (requestParameters["userRequest"] == null) { + throw new runtime.RequiredError( + "userRequest", + 'Required parameter "userRequest" was null or undefined when calling coreUsersCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/core/users/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: UserRequestToJSON(requestParameters["userRequest"]), + }; + } + + /** + * User Viewset + */ + async coreUsersCreateRaw( + requestParameters: CoreUsersCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.coreUsersCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => UserFromJSON(jsonValue)); + } + + /** + * User Viewset + */ + async coreUsersCreate( + requestParameters: CoreUsersCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.coreUsersCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for coreUsersDestroy without sending the request + */ + async coreUsersDestroyRequestOpts( + requestParameters: CoreUsersDestroyRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling coreUsersDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/core/users/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * User Viewset + */ + async coreUsersDestroyRaw( + requestParameters: CoreUsersDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.coreUsersDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * User Viewset + */ + async coreUsersDestroy( + requestParameters: CoreUsersDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.coreUsersDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for coreUsersExportCreate without sending the request + */ + async coreUsersExportCreateRequestOpts( + requestParameters: CoreUsersExportCreateRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["attributes"] != null) { + queryParameters["attributes"] = requestParameters["attributes"]; + } + + if (requestParameters["dateJoined"] != null) { + queryParameters["date_joined"] = (requestParameters["dateJoined"] as any).toISOString(); + } + + if (requestParameters["dateJoinedGt"] != null) { + queryParameters["date_joined__gt"] = ( + requestParameters["dateJoinedGt"] as any + ).toISOString(); + } + + if (requestParameters["dateJoinedLt"] != null) { + queryParameters["date_joined__lt"] = ( + requestParameters["dateJoinedLt"] as any + ).toISOString(); + } + + if (requestParameters["email"] != null) { + queryParameters["email"] = requestParameters["email"]; + } + + if (requestParameters["groupsByName"] != null) { + queryParameters["groups_by_name"] = requestParameters["groupsByName"]; + } + + if (requestParameters["groupsByPk"] != null) { + queryParameters["groups_by_pk"] = requestParameters["groupsByPk"]; + } + + if (requestParameters["isActive"] != null) { + queryParameters["is_active"] = requestParameters["isActive"]; + } + + if (requestParameters["isSuperuser"] != null) { + queryParameters["is_superuser"] = requestParameters["isSuperuser"]; + } + + if (requestParameters["lastLogin"] != null) { + queryParameters["last_login"] = (requestParameters["lastLogin"] as any).toISOString(); + } + + if (requestParameters["lastLoginGt"] != null) { + queryParameters["last_login__gt"] = ( + requestParameters["lastLoginGt"] as any + ).toISOString(); + } + + if (requestParameters["lastLoginIsnull"] != null) { + queryParameters["last_login__isnull"] = requestParameters["lastLoginIsnull"]; + } + + if (requestParameters["lastLoginLt"] != null) { + queryParameters["last_login__lt"] = ( + requestParameters["lastLoginLt"] as any + ).toISOString(); + } + + if (requestParameters["lastUpdated"] != null) { + queryParameters["last_updated"] = ( + requestParameters["lastUpdated"] as any + ).toISOString(); + } + + if (requestParameters["lastUpdatedGt"] != null) { + queryParameters["last_updated__gt"] = ( + requestParameters["lastUpdatedGt"] as any + ).toISOString(); + } + + if (requestParameters["lastUpdatedLt"] != null) { + queryParameters["last_updated__lt"] = ( + requestParameters["lastUpdatedLt"] as any + ).toISOString(); + } + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["path"] != null) { + queryParameters["path"] = requestParameters["path"]; + } + + if (requestParameters["pathStartswith"] != null) { + queryParameters["path_startswith"] = requestParameters["pathStartswith"]; + } + + if (requestParameters["rolesByName"] != null) { + queryParameters["roles_by_name"] = requestParameters["rolesByName"]; + } + + if (requestParameters["rolesByPk"] != null) { + queryParameters["roles_by_pk"] = requestParameters["rolesByPk"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["type"] != null) { + queryParameters["type"] = requestParameters["type"]; + } + + if (requestParameters["username"] != null) { + queryParameters["username"] = requestParameters["username"]; + } + + if (requestParameters["uuid"] != null) { + queryParameters["uuid"] = requestParameters["uuid"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/core/users/export/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Create a data export for this data type. Note that the export is generated asynchronously: this method returns a `DataExport` object that will initially have `completed=false` as well as the permanent URL to that object in the `Location` header. You can poll that URL until `completed=true`, at which point the `file_url` property will contain a URL to download + */ + async coreUsersExportCreateRaw( + requestParameters: CoreUsersExportCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.coreUsersExportCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => DataExportFromJSON(jsonValue)); + } + + /** + * Create a data export for this data type. Note that the export is generated asynchronously: this method returns a `DataExport` object that will initially have `completed=false` as well as the permanent URL to that object in the `Location` header. You can poll that URL until `completed=true`, at which point the `file_url` property will contain a URL to download + */ + async coreUsersExportCreate( + requestParameters: CoreUsersExportCreateRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.coreUsersExportCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for coreUsersImpersonateCreate without sending the request + */ + async coreUsersImpersonateCreateRequestOpts( + requestParameters: CoreUsersImpersonateCreateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling coreUsersImpersonateCreate().', + ); + } + + if (requestParameters["impersonationRequest"] == null) { + throw new runtime.RequiredError( + "impersonationRequest", + 'Required parameter "impersonationRequest" was null or undefined when calling coreUsersImpersonateCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/core/users/{id}/impersonate/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: ImpersonationRequestToJSON(requestParameters["impersonationRequest"]), + }; + } + + /** + * Impersonate a user + */ + async coreUsersImpersonateCreateRaw( + requestParameters: CoreUsersImpersonateCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.coreUsersImpersonateCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Impersonate a user + */ + async coreUsersImpersonateCreate( + requestParameters: CoreUsersImpersonateCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.coreUsersImpersonateCreateRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for coreUsersImpersonateEndRetrieve without sending the request + */ + async coreUsersImpersonateEndRetrieveRequestOpts(): Promise { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/core/users/impersonate_end/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * End Impersonation a user + */ + async coreUsersImpersonateEndRetrieveRaw( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.coreUsersImpersonateEndRetrieveRequestOpts(); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * End Impersonation a user + */ + async coreUsersImpersonateEndRetrieve( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.coreUsersImpersonateEndRetrieveRaw(initOverrides); + } + + /** + * Creates request options for coreUsersList without sending the request + */ + async coreUsersListRequestOpts( + requestParameters: CoreUsersListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["attributes"] != null) { + queryParameters["attributes"] = requestParameters["attributes"]; + } + + if (requestParameters["dateJoined"] != null) { + queryParameters["date_joined"] = (requestParameters["dateJoined"] as any).toISOString(); + } + + if (requestParameters["dateJoinedGt"] != null) { + queryParameters["date_joined__gt"] = ( + requestParameters["dateJoinedGt"] as any + ).toISOString(); + } + + if (requestParameters["dateJoinedLt"] != null) { + queryParameters["date_joined__lt"] = ( + requestParameters["dateJoinedLt"] as any + ).toISOString(); + } + + if (requestParameters["email"] != null) { + queryParameters["email"] = requestParameters["email"]; + } + + if (requestParameters["groupsByName"] != null) { + queryParameters["groups_by_name"] = requestParameters["groupsByName"]; + } + + if (requestParameters["groupsByPk"] != null) { + queryParameters["groups_by_pk"] = requestParameters["groupsByPk"]; + } + + if (requestParameters["includeGroups"] != null) { + queryParameters["include_groups"] = requestParameters["includeGroups"]; + } + + if (requestParameters["includeRoles"] != null) { + queryParameters["include_roles"] = requestParameters["includeRoles"]; + } + + if (requestParameters["isActive"] != null) { + queryParameters["is_active"] = requestParameters["isActive"]; + } + + if (requestParameters["isSuperuser"] != null) { + queryParameters["is_superuser"] = requestParameters["isSuperuser"]; + } + + if (requestParameters["lastLogin"] != null) { + queryParameters["last_login"] = (requestParameters["lastLogin"] as any).toISOString(); + } + + if (requestParameters["lastLoginGt"] != null) { + queryParameters["last_login__gt"] = ( + requestParameters["lastLoginGt"] as any + ).toISOString(); + } + + if (requestParameters["lastLoginIsnull"] != null) { + queryParameters["last_login__isnull"] = requestParameters["lastLoginIsnull"]; + } + + if (requestParameters["lastLoginLt"] != null) { + queryParameters["last_login__lt"] = ( + requestParameters["lastLoginLt"] as any + ).toISOString(); + } + + if (requestParameters["lastUpdated"] != null) { + queryParameters["last_updated"] = ( + requestParameters["lastUpdated"] as any + ).toISOString(); + } + + if (requestParameters["lastUpdatedGt"] != null) { + queryParameters["last_updated__gt"] = ( + requestParameters["lastUpdatedGt"] as any + ).toISOString(); + } + + if (requestParameters["lastUpdatedLt"] != null) { + queryParameters["last_updated__lt"] = ( + requestParameters["lastUpdatedLt"] as any + ).toISOString(); + } + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["path"] != null) { + queryParameters["path"] = requestParameters["path"]; + } + + if (requestParameters["pathStartswith"] != null) { + queryParameters["path_startswith"] = requestParameters["pathStartswith"]; + } + + if (requestParameters["rolesByName"] != null) { + queryParameters["roles_by_name"] = requestParameters["rolesByName"]; + } + + if (requestParameters["rolesByPk"] != null) { + queryParameters["roles_by_pk"] = requestParameters["rolesByPk"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["type"] != null) { + queryParameters["type"] = requestParameters["type"]; + } + + if (requestParameters["username"] != null) { + queryParameters["username"] = requestParameters["username"]; + } + + if (requestParameters["uuid"] != null) { + queryParameters["uuid"] = requestParameters["uuid"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/core/users/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * User Viewset + */ + async coreUsersListRaw( + requestParameters: CoreUsersListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.coreUsersListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedUserListFromJSON(jsonValue), + ); + } + + /** + * User Viewset + */ + async coreUsersList( + requestParameters: CoreUsersListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.coreUsersListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for coreUsersMeRetrieve without sending the request + */ + async coreUsersMeRetrieveRequestOpts(): Promise { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/core/users/me/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get information about current user + */ + async coreUsersMeRetrieveRaw( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.coreUsersMeRetrieveRequestOpts(); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => SessionUserFromJSON(jsonValue)); + } + + /** + * Get information about current user + */ + async coreUsersMeRetrieve( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.coreUsersMeRetrieveRaw(initOverrides); + return await response.value(); + } + + /** + * Creates request options for coreUsersPartialUpdate without sending the request + */ + async coreUsersPartialUpdateRequestOpts( + requestParameters: CoreUsersPartialUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling coreUsersPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/core/users/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedUserRequestToJSON(requestParameters["patchedUserRequest"]), + }; + } + + /** + * User Viewset + */ + async coreUsersPartialUpdateRaw( + requestParameters: CoreUsersPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.coreUsersPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => UserFromJSON(jsonValue)); + } + + /** + * User Viewset + */ + async coreUsersPartialUpdate( + requestParameters: CoreUsersPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.coreUsersPartialUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for coreUsersPathsRetrieve without sending the request + */ + async coreUsersPathsRetrieveRequestOpts( + requestParameters: CoreUsersPathsRetrieveRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/core/users/paths/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get all user paths + */ + async coreUsersPathsRetrieveRaw( + requestParameters: CoreUsersPathsRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.coreUsersPathsRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => UserPathFromJSON(jsonValue)); + } + + /** + * Get all user paths + */ + async coreUsersPathsRetrieve( + requestParameters: CoreUsersPathsRetrieveRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.coreUsersPathsRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for coreUsersRecoveryCreate without sending the request + */ + async coreUsersRecoveryCreateRequestOpts( + requestParameters: CoreUsersRecoveryCreateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling coreUsersRecoveryCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/core/users/{id}/recovery/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: UserRecoveryLinkRequestToJSON(requestParameters["userRecoveryLinkRequest"]), + }; + } + + /** + * Create a temporary link that a user can use to recover their account + */ + async coreUsersRecoveryCreateRaw( + requestParameters: CoreUsersRecoveryCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.coreUsersRecoveryCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => LinkFromJSON(jsonValue)); + } + + /** + * Create a temporary link that a user can use to recover their account + */ + async coreUsersRecoveryCreate( + requestParameters: CoreUsersRecoveryCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.coreUsersRecoveryCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for coreUsersRecoveryEmailCreate without sending the request + */ + async coreUsersRecoveryEmailCreateRequestOpts( + requestParameters: CoreUsersRecoveryEmailCreateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling coreUsersRecoveryEmailCreate().', + ); + } + + if (requestParameters["userRecoveryEmailRequest"] == null) { + throw new runtime.RequiredError( + "userRecoveryEmailRequest", + 'Required parameter "userRecoveryEmailRequest" was null or undefined when calling coreUsersRecoveryEmailCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/core/users/{id}/recovery_email/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: UserRecoveryEmailRequestToJSON(requestParameters["userRecoveryEmailRequest"]), + }; + } + + /** + * Send an email with a temporary link that a user can use to recover their account + */ + async coreUsersRecoveryEmailCreateRaw( + requestParameters: CoreUsersRecoveryEmailCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.coreUsersRecoveryEmailCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Send an email with a temporary link that a user can use to recover their account + */ + async coreUsersRecoveryEmailCreate( + requestParameters: CoreUsersRecoveryEmailCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.coreUsersRecoveryEmailCreateRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for coreUsersRetrieve without sending the request + */ + async coreUsersRetrieveRequestOpts( + requestParameters: CoreUsersRetrieveRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling coreUsersRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/core/users/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * User Viewset + */ + async coreUsersRetrieveRaw( + requestParameters: CoreUsersRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.coreUsersRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => UserFromJSON(jsonValue)); + } + + /** + * User Viewset + */ + async coreUsersRetrieve( + requestParameters: CoreUsersRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.coreUsersRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for coreUsersServiceAccountCreate without sending the request + */ + async coreUsersServiceAccountCreateRequestOpts( + requestParameters: CoreUsersServiceAccountCreateRequest, + ): Promise { + if (requestParameters["userServiceAccountRequest"] == null) { + throw new runtime.RequiredError( + "userServiceAccountRequest", + 'Required parameter "userServiceAccountRequest" was null or undefined when calling coreUsersServiceAccountCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/core/users/service_account/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: UserServiceAccountRequestToJSON(requestParameters["userServiceAccountRequest"]), + }; + } + + /** + * Create a new user account that is marked as a service account + */ + async coreUsersServiceAccountCreateRaw( + requestParameters: CoreUsersServiceAccountCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.coreUsersServiceAccountCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + UserServiceAccountResponseFromJSON(jsonValue), + ); + } + + /** + * Create a new user account that is marked as a service account + */ + async coreUsersServiceAccountCreate( + requestParameters: CoreUsersServiceAccountCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.coreUsersServiceAccountCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for coreUsersSetPasswordCreate without sending the request + */ + async coreUsersSetPasswordCreateRequestOpts( + requestParameters: CoreUsersSetPasswordCreateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling coreUsersSetPasswordCreate().', + ); + } + + if (requestParameters["userPasswordSetRequest"] == null) { + throw new runtime.RequiredError( + "userPasswordSetRequest", + 'Required parameter "userPasswordSetRequest" was null or undefined when calling coreUsersSetPasswordCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/core/users/{id}/set_password/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: UserPasswordSetRequestToJSON(requestParameters["userPasswordSetRequest"]), + }; + } + + /** + * Set password for user + */ + async coreUsersSetPasswordCreateRaw( + requestParameters: CoreUsersSetPasswordCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.coreUsersSetPasswordCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Set password for user + */ + async coreUsersSetPasswordCreate( + requestParameters: CoreUsersSetPasswordCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.coreUsersSetPasswordCreateRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for coreUsersSetPasswordHashCreate without sending the request + */ + async coreUsersSetPasswordHashCreateRequestOpts( + requestParameters: CoreUsersSetPasswordHashCreateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling coreUsersSetPasswordHashCreate().', + ); + } + + if (requestParameters["userPasswordHashSetRequest"] == null) { + throw new runtime.RequiredError( + "userPasswordHashSetRequest", + 'Required parameter "userPasswordHashSetRequest" was null or undefined when calling coreUsersSetPasswordHashCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/core/users/{id}/set_password_hash/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: UserPasswordHashSetRequestToJSON(requestParameters["userPasswordHashSetRequest"]), + }; + } + + /** + * Set a user\'s password from a pre-hashed Django password value. Submit the Django password hash in the shared ``password`` request field. This updates authentik\'s local password verifier only. It does not attempt to propagate the password change to LDAP or Kerberos because no raw password is available from the request payload. + */ + async coreUsersSetPasswordHashCreateRaw( + requestParameters: CoreUsersSetPasswordHashCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.coreUsersSetPasswordHashCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Set a user\'s password from a pre-hashed Django password value. Submit the Django password hash in the shared ``password`` request field. This updates authentik\'s local password verifier only. It does not attempt to propagate the password change to LDAP or Kerberos because no raw password is available from the request payload. + */ + async coreUsersSetPasswordHashCreate( + requestParameters: CoreUsersSetPasswordHashCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.coreUsersSetPasswordHashCreateRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for coreUsersUpdate without sending the request + */ + async coreUsersUpdateRequestOpts( + requestParameters: CoreUsersUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling coreUsersUpdate().', + ); + } + + if (requestParameters["userRequest"] == null) { + throw new runtime.RequiredError( + "userRequest", + 'Required parameter "userRequest" was null or undefined when calling coreUsersUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/core/users/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: UserRequestToJSON(requestParameters["userRequest"]), + }; + } + + /** + * User Viewset + */ + async coreUsersUpdateRaw( + requestParameters: CoreUsersUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.coreUsersUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => UserFromJSON(jsonValue)); + } + + /** + * User Viewset + */ + async coreUsersUpdate( + requestParameters: CoreUsersUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.coreUsersUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for coreUsersUsedByList without sending the request + */ + async coreUsersUsedByListRequestOpts( + requestParameters: CoreUsersUsedByListRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling coreUsersUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/core/users/{id}/used_by/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async coreUsersUsedByListRaw( + requestParameters: CoreUsersUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.coreUsersUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async coreUsersUsedByList( + requestParameters: CoreUsersUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.coreUsersUsedByListRaw(requestParameters, initOverrides); + return await response.value(); + } +} diff --git a/packages/client-ts/src/apis/CryptoApi.ts b/packages/client-ts/src/apis/CryptoApi.ts new file mode 100644 index 0000000000..c52c192a36 --- /dev/null +++ b/packages/client-ts/src/apis/CryptoApi.ts @@ -0,0 +1,830 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { + CertificateData, + CertificateGenerationRequest, + CertificateKeyPair, + CertificateKeyPairRequest, + KeyTypeEnum, + PaginatedCertificateKeyPairList, + PatchedCertificateKeyPairRequest, + UsedBy, +} from "../models/index"; +import { + CertificateDataFromJSON, + CertificateGenerationRequestToJSON, + CertificateKeyPairFromJSON, + CertificateKeyPairRequestToJSON, + PaginatedCertificateKeyPairListFromJSON, + PatchedCertificateKeyPairRequestToJSON, + UsedByFromJSON, +} from "../models/index"; +import * as runtime from "../runtime"; + +export interface CryptoCertificatekeypairsCreateRequest { + certificateKeyPairRequest: CertificateKeyPairRequest; +} + +export interface CryptoCertificatekeypairsDestroyRequest { + kpUuid: string; +} + +export interface CryptoCertificatekeypairsGenerateCreateRequest { + certificateGenerationRequest: CertificateGenerationRequest; +} + +export interface CryptoCertificatekeypairsListRequest { + hasKey?: boolean; + keyType?: Array; + managed?: string; + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; +} + +export interface CryptoCertificatekeypairsPartialUpdateRequest { + kpUuid: string; + patchedCertificateKeyPairRequest?: PatchedCertificateKeyPairRequest; +} + +export interface CryptoCertificatekeypairsRetrieveRequest { + kpUuid: string; +} + +export interface CryptoCertificatekeypairsUpdateRequest { + kpUuid: string; + certificateKeyPairRequest: CertificateKeyPairRequest; +} + +export interface CryptoCertificatekeypairsUsedByListRequest { + kpUuid: string; +} + +export interface CryptoCertificatekeypairsViewCertificateRetrieveRequest { + kpUuid: string; + download?: boolean; +} + +export interface CryptoCertificatekeypairsViewPrivateKeyRetrieveRequest { + kpUuid: string; + download?: boolean; +} + +/** + * + */ +export class CryptoApi extends runtime.BaseAPI { + /** + * Creates request options for cryptoCertificatekeypairsCreate without sending the request + */ + async cryptoCertificatekeypairsCreateRequestOpts( + requestParameters: CryptoCertificatekeypairsCreateRequest, + ): Promise { + if (requestParameters["certificateKeyPairRequest"] == null) { + throw new runtime.RequiredError( + "certificateKeyPairRequest", + 'Required parameter "certificateKeyPairRequest" was null or undefined when calling cryptoCertificatekeypairsCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/crypto/certificatekeypairs/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: CertificateKeyPairRequestToJSON(requestParameters["certificateKeyPairRequest"]), + }; + } + + /** + * CertificateKeyPair Viewset + */ + async cryptoCertificatekeypairsCreateRaw( + requestParameters: CryptoCertificatekeypairsCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.cryptoCertificatekeypairsCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + CertificateKeyPairFromJSON(jsonValue), + ); + } + + /** + * CertificateKeyPair Viewset + */ + async cryptoCertificatekeypairsCreate( + requestParameters: CryptoCertificatekeypairsCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.cryptoCertificatekeypairsCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for cryptoCertificatekeypairsDestroy without sending the request + */ + async cryptoCertificatekeypairsDestroyRequestOpts( + requestParameters: CryptoCertificatekeypairsDestroyRequest, + ): Promise { + if (requestParameters["kpUuid"] == null) { + throw new runtime.RequiredError( + "kpUuid", + 'Required parameter "kpUuid" was null or undefined when calling cryptoCertificatekeypairsDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/crypto/certificatekeypairs/{kp_uuid}/`; + urlPath = urlPath.replace( + `{${"kp_uuid"}}`, + encodeURIComponent(String(requestParameters["kpUuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * CertificateKeyPair Viewset + */ + async cryptoCertificatekeypairsDestroyRaw( + requestParameters: CryptoCertificatekeypairsDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.cryptoCertificatekeypairsDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * CertificateKeyPair Viewset + */ + async cryptoCertificatekeypairsDestroy( + requestParameters: CryptoCertificatekeypairsDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.cryptoCertificatekeypairsDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for cryptoCertificatekeypairsGenerateCreate without sending the request + */ + async cryptoCertificatekeypairsGenerateCreateRequestOpts( + requestParameters: CryptoCertificatekeypairsGenerateCreateRequest, + ): Promise { + if (requestParameters["certificateGenerationRequest"] == null) { + throw new runtime.RequiredError( + "certificateGenerationRequest", + 'Required parameter "certificateGenerationRequest" was null or undefined when calling cryptoCertificatekeypairsGenerateCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/crypto/certificatekeypairs/generate/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: CertificateGenerationRequestToJSON( + requestParameters["certificateGenerationRequest"], + ), + }; + } + + /** + * Generate a new, self-signed certificate-key pair + */ + async cryptoCertificatekeypairsGenerateCreateRaw( + requestParameters: CryptoCertificatekeypairsGenerateCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.cryptoCertificatekeypairsGenerateCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + CertificateKeyPairFromJSON(jsonValue), + ); + } + + /** + * Generate a new, self-signed certificate-key pair + */ + async cryptoCertificatekeypairsGenerateCreate( + requestParameters: CryptoCertificatekeypairsGenerateCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.cryptoCertificatekeypairsGenerateCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for cryptoCertificatekeypairsList without sending the request + */ + async cryptoCertificatekeypairsListRequestOpts( + requestParameters: CryptoCertificatekeypairsListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["hasKey"] != null) { + queryParameters["has_key"] = requestParameters["hasKey"]; + } + + if (requestParameters["keyType"] != null) { + queryParameters["key_type"] = requestParameters["keyType"]; + } + + if (requestParameters["managed"] != null) { + queryParameters["managed"] = requestParameters["managed"]; + } + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/crypto/certificatekeypairs/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * CertificateKeyPair Viewset + */ + async cryptoCertificatekeypairsListRaw( + requestParameters: CryptoCertificatekeypairsListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.cryptoCertificatekeypairsListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedCertificateKeyPairListFromJSON(jsonValue), + ); + } + + /** + * CertificateKeyPair Viewset + */ + async cryptoCertificatekeypairsList( + requestParameters: CryptoCertificatekeypairsListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.cryptoCertificatekeypairsListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for cryptoCertificatekeypairsPartialUpdate without sending the request + */ + async cryptoCertificatekeypairsPartialUpdateRequestOpts( + requestParameters: CryptoCertificatekeypairsPartialUpdateRequest, + ): Promise { + if (requestParameters["kpUuid"] == null) { + throw new runtime.RequiredError( + "kpUuid", + 'Required parameter "kpUuid" was null or undefined when calling cryptoCertificatekeypairsPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/crypto/certificatekeypairs/{kp_uuid}/`; + urlPath = urlPath.replace( + `{${"kp_uuid"}}`, + encodeURIComponent(String(requestParameters["kpUuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedCertificateKeyPairRequestToJSON( + requestParameters["patchedCertificateKeyPairRequest"], + ), + }; + } + + /** + * CertificateKeyPair Viewset + */ + async cryptoCertificatekeypairsPartialUpdateRaw( + requestParameters: CryptoCertificatekeypairsPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.cryptoCertificatekeypairsPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + CertificateKeyPairFromJSON(jsonValue), + ); + } + + /** + * CertificateKeyPair Viewset + */ + async cryptoCertificatekeypairsPartialUpdate( + requestParameters: CryptoCertificatekeypairsPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.cryptoCertificatekeypairsPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for cryptoCertificatekeypairsRetrieve without sending the request + */ + async cryptoCertificatekeypairsRetrieveRequestOpts( + requestParameters: CryptoCertificatekeypairsRetrieveRequest, + ): Promise { + if (requestParameters["kpUuid"] == null) { + throw new runtime.RequiredError( + "kpUuid", + 'Required parameter "kpUuid" was null or undefined when calling cryptoCertificatekeypairsRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/crypto/certificatekeypairs/{kp_uuid}/`; + urlPath = urlPath.replace( + `{${"kp_uuid"}}`, + encodeURIComponent(String(requestParameters["kpUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * CertificateKeyPair Viewset + */ + async cryptoCertificatekeypairsRetrieveRaw( + requestParameters: CryptoCertificatekeypairsRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.cryptoCertificatekeypairsRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + CertificateKeyPairFromJSON(jsonValue), + ); + } + + /** + * CertificateKeyPair Viewset + */ + async cryptoCertificatekeypairsRetrieve( + requestParameters: CryptoCertificatekeypairsRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.cryptoCertificatekeypairsRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for cryptoCertificatekeypairsUpdate without sending the request + */ + async cryptoCertificatekeypairsUpdateRequestOpts( + requestParameters: CryptoCertificatekeypairsUpdateRequest, + ): Promise { + if (requestParameters["kpUuid"] == null) { + throw new runtime.RequiredError( + "kpUuid", + 'Required parameter "kpUuid" was null or undefined when calling cryptoCertificatekeypairsUpdate().', + ); + } + + if (requestParameters["certificateKeyPairRequest"] == null) { + throw new runtime.RequiredError( + "certificateKeyPairRequest", + 'Required parameter "certificateKeyPairRequest" was null or undefined when calling cryptoCertificatekeypairsUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/crypto/certificatekeypairs/{kp_uuid}/`; + urlPath = urlPath.replace( + `{${"kp_uuid"}}`, + encodeURIComponent(String(requestParameters["kpUuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: CertificateKeyPairRequestToJSON(requestParameters["certificateKeyPairRequest"]), + }; + } + + /** + * CertificateKeyPair Viewset + */ + async cryptoCertificatekeypairsUpdateRaw( + requestParameters: CryptoCertificatekeypairsUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.cryptoCertificatekeypairsUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + CertificateKeyPairFromJSON(jsonValue), + ); + } + + /** + * CertificateKeyPair Viewset + */ + async cryptoCertificatekeypairsUpdate( + requestParameters: CryptoCertificatekeypairsUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.cryptoCertificatekeypairsUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for cryptoCertificatekeypairsUsedByList without sending the request + */ + async cryptoCertificatekeypairsUsedByListRequestOpts( + requestParameters: CryptoCertificatekeypairsUsedByListRequest, + ): Promise { + if (requestParameters["kpUuid"] == null) { + throw new runtime.RequiredError( + "kpUuid", + 'Required parameter "kpUuid" was null or undefined when calling cryptoCertificatekeypairsUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/crypto/certificatekeypairs/{kp_uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"kp_uuid"}}`, + encodeURIComponent(String(requestParameters["kpUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async cryptoCertificatekeypairsUsedByListRaw( + requestParameters: CryptoCertificatekeypairsUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.cryptoCertificatekeypairsUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async cryptoCertificatekeypairsUsedByList( + requestParameters: CryptoCertificatekeypairsUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.cryptoCertificatekeypairsUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for cryptoCertificatekeypairsViewCertificateRetrieve without sending the request + */ + async cryptoCertificatekeypairsViewCertificateRetrieveRequestOpts( + requestParameters: CryptoCertificatekeypairsViewCertificateRetrieveRequest, + ): Promise { + if (requestParameters["kpUuid"] == null) { + throw new runtime.RequiredError( + "kpUuid", + 'Required parameter "kpUuid" was null or undefined when calling cryptoCertificatekeypairsViewCertificateRetrieve().', + ); + } + + const queryParameters: any = {}; + + if (requestParameters["download"] != null) { + queryParameters["download"] = requestParameters["download"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/crypto/certificatekeypairs/{kp_uuid}/view_certificate/`; + urlPath = urlPath.replace( + `{${"kp_uuid"}}`, + encodeURIComponent(String(requestParameters["kpUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Return certificate-key pairs certificate and log access + */ + async cryptoCertificatekeypairsViewCertificateRetrieveRaw( + requestParameters: CryptoCertificatekeypairsViewCertificateRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.cryptoCertificatekeypairsViewCertificateRetrieveRequestOpts( + requestParameters, + ); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + CertificateDataFromJSON(jsonValue), + ); + } + + /** + * Return certificate-key pairs certificate and log access + */ + async cryptoCertificatekeypairsViewCertificateRetrieve( + requestParameters: CryptoCertificatekeypairsViewCertificateRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.cryptoCertificatekeypairsViewCertificateRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for cryptoCertificatekeypairsViewPrivateKeyRetrieve without sending the request + */ + async cryptoCertificatekeypairsViewPrivateKeyRetrieveRequestOpts( + requestParameters: CryptoCertificatekeypairsViewPrivateKeyRetrieveRequest, + ): Promise { + if (requestParameters["kpUuid"] == null) { + throw new runtime.RequiredError( + "kpUuid", + 'Required parameter "kpUuid" was null or undefined when calling cryptoCertificatekeypairsViewPrivateKeyRetrieve().', + ); + } + + const queryParameters: any = {}; + + if (requestParameters["download"] != null) { + queryParameters["download"] = requestParameters["download"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/crypto/certificatekeypairs/{kp_uuid}/view_private_key/`; + urlPath = urlPath.replace( + `{${"kp_uuid"}}`, + encodeURIComponent(String(requestParameters["kpUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Return certificate-key pairs private key and log access + */ + async cryptoCertificatekeypairsViewPrivateKeyRetrieveRaw( + requestParameters: CryptoCertificatekeypairsViewPrivateKeyRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.cryptoCertificatekeypairsViewPrivateKeyRetrieveRequestOpts( + requestParameters, + ); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + CertificateDataFromJSON(jsonValue), + ); + } + + /** + * Return certificate-key pairs private key and log access + */ + async cryptoCertificatekeypairsViewPrivateKeyRetrieve( + requestParameters: CryptoCertificatekeypairsViewPrivateKeyRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.cryptoCertificatekeypairsViewPrivateKeyRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } +} diff --git a/packages/client-ts/src/apis/EndpointsApi.ts b/packages/client-ts/src/apis/EndpointsApi.ts new file mode 100644 index 0000000000..d038e1d744 --- /dev/null +++ b/packages/client-ts/src/apis/EndpointsApi.ts @@ -0,0 +1,5339 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { + AgentAuthenticationResponse, + AgentConfig, + AgentConnector, + AgentConnectorRequest, + AgentPSSODeviceRegistrationRequest, + AgentPSSODeviceRegistrationResponse, + AgentPSSOUserRegistrationRequest, + AgentTokenResponse, + AppleIndependentSecureEnclave, + AppleIndependentSecureEnclaveRequest, + Connector, + DeviceAccessGroup, + DeviceAccessGroupRequest, + DeviceFactsRequest, + DeviceSummary, + DeviceUserBinding, + DeviceUserBindingRequest, + EndpointDevice, + EndpointDeviceDetails, + EndpointDeviceRequest, + EnrollmentToken, + EnrollmentTokenRequest, + EnrollRequest, + FleetConnector, + FleetConnectorRequest, + GoogleChromeConnector, + GoogleChromeConnectorRequest, + MDMConfigRequest, + MDMConfigResponse, + PaginatedAgentConnectorList, + PaginatedAppleIndependentSecureEnclaveList, + PaginatedConnectorList, + PaginatedDeviceAccessGroupList, + PaginatedDeviceUserBindingList, + PaginatedEndpointDeviceList, + PaginatedEnrollmentTokenList, + PaginatedFleetConnectorList, + PaginatedGoogleChromeConnectorList, + PatchedAgentConnectorRequest, + PatchedAppleIndependentSecureEnclaveRequest, + PatchedDeviceAccessGroupRequest, + PatchedDeviceUserBindingRequest, + PatchedEndpointDeviceRequest, + PatchedEnrollmentTokenRequest, + PatchedFleetConnectorRequest, + PatchedGoogleChromeConnectorRequest, + TokenView, + TypeCreate, + UsedBy, + UserSelf, +} from "../models/index"; +import { + AgentAuthenticationResponseFromJSON, + AgentConfigFromJSON, + AgentConnectorFromJSON, + AgentConnectorRequestToJSON, + AgentPSSODeviceRegistrationRequestToJSON, + AgentPSSODeviceRegistrationResponseFromJSON, + AgentPSSOUserRegistrationRequestToJSON, + AgentTokenResponseFromJSON, + AppleIndependentSecureEnclaveFromJSON, + AppleIndependentSecureEnclaveRequestToJSON, + ConnectorFromJSON, + DeviceAccessGroupFromJSON, + DeviceAccessGroupRequestToJSON, + DeviceFactsRequestToJSON, + DeviceSummaryFromJSON, + DeviceUserBindingFromJSON, + DeviceUserBindingRequestToJSON, + EndpointDeviceDetailsFromJSON, + EndpointDeviceFromJSON, + EndpointDeviceRequestToJSON, + EnrollmentTokenFromJSON, + EnrollmentTokenRequestToJSON, + EnrollRequestToJSON, + FleetConnectorFromJSON, + FleetConnectorRequestToJSON, + GoogleChromeConnectorFromJSON, + GoogleChromeConnectorRequestToJSON, + MDMConfigRequestToJSON, + MDMConfigResponseFromJSON, + PaginatedAgentConnectorListFromJSON, + PaginatedAppleIndependentSecureEnclaveListFromJSON, + PaginatedConnectorListFromJSON, + PaginatedDeviceAccessGroupListFromJSON, + PaginatedDeviceUserBindingListFromJSON, + PaginatedEndpointDeviceListFromJSON, + PaginatedEnrollmentTokenListFromJSON, + PaginatedFleetConnectorListFromJSON, + PaginatedGoogleChromeConnectorListFromJSON, + PatchedAgentConnectorRequestToJSON, + PatchedAppleIndependentSecureEnclaveRequestToJSON, + PatchedDeviceAccessGroupRequestToJSON, + PatchedDeviceUserBindingRequestToJSON, + PatchedEndpointDeviceRequestToJSON, + PatchedEnrollmentTokenRequestToJSON, + PatchedFleetConnectorRequestToJSON, + PatchedGoogleChromeConnectorRequestToJSON, + TokenViewFromJSON, + TypeCreateFromJSON, + UsedByFromJSON, + UserSelfFromJSON, +} from "../models/index"; +import * as runtime from "../runtime"; + +export interface EndpointsAgentsConnectorsAuthFedCreateRequest { + device: string; +} + +export interface EndpointsAgentsConnectorsCheckInCreateRequest { + deviceFactsRequest?: DeviceFactsRequest; +} + +export interface EndpointsAgentsConnectorsCreateRequest { + agentConnectorRequest: AgentConnectorRequest; +} + +export interface EndpointsAgentsConnectorsDestroyRequest { + connectorUuid: string; +} + +export interface EndpointsAgentsConnectorsEnrollCreateRequest { + enrollRequest: EnrollRequest; +} + +export interface EndpointsAgentsConnectorsListRequest { + enabled?: boolean; + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; +} + +export interface EndpointsAgentsConnectorsMdmConfigCreateRequest { + connectorUuid: string; + mDMConfigRequest: MDMConfigRequest; +} + +export interface EndpointsAgentsConnectorsPartialUpdateRequest { + connectorUuid: string; + patchedAgentConnectorRequest?: PatchedAgentConnectorRequest; +} + +export interface EndpointsAgentsConnectorsRetrieveRequest { + connectorUuid: string; +} + +export interface EndpointsAgentsConnectorsUpdateRequest { + connectorUuid: string; + agentConnectorRequest: AgentConnectorRequest; +} + +export interface EndpointsAgentsConnectorsUsedByListRequest { + connectorUuid: string; +} + +export interface EndpointsAgentsEnrollmentTokensCreateRequest { + enrollmentTokenRequest: EnrollmentTokenRequest; +} + +export interface EndpointsAgentsEnrollmentTokensDestroyRequest { + tokenUuid: string; +} + +export interface EndpointsAgentsEnrollmentTokensListRequest { + connector?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; + tokenUuid?: string; +} + +export interface EndpointsAgentsEnrollmentTokensPartialUpdateRequest { + tokenUuid: string; + patchedEnrollmentTokenRequest?: PatchedEnrollmentTokenRequest; +} + +export interface EndpointsAgentsEnrollmentTokensRetrieveRequest { + tokenUuid: string; +} + +export interface EndpointsAgentsEnrollmentTokensUpdateRequest { + tokenUuid: string; + enrollmentTokenRequest: EnrollmentTokenRequest; +} + +export interface EndpointsAgentsEnrollmentTokensUsedByListRequest { + tokenUuid: string; +} + +export interface EndpointsAgentsEnrollmentTokensViewKeyRetrieveRequest { + tokenUuid: string; +} + +export interface EndpointsAgentsPssoIseCreateRequest { + appleIndependentSecureEnclaveRequest: AppleIndependentSecureEnclaveRequest; +} + +export interface EndpointsAgentsPssoIseDestroyRequest { + uuid: string; +} + +export interface EndpointsAgentsPssoIseListRequest { + appleEnclaveKeyId?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; + user?: number; +} + +export interface EndpointsAgentsPssoIsePartialUpdateRequest { + uuid: string; + patchedAppleIndependentSecureEnclaveRequest?: PatchedAppleIndependentSecureEnclaveRequest; +} + +export interface EndpointsAgentsPssoIseRetrieveRequest { + uuid: string; +} + +export interface EndpointsAgentsPssoIseUpdateRequest { + uuid: string; + appleIndependentSecureEnclaveRequest: AppleIndependentSecureEnclaveRequest; +} + +export interface EndpointsAgentsPssoIseUsedByListRequest { + uuid: string; +} + +export interface EndpointsAgentsPssoRegisterDeviceCreateRequest { + agentPSSODeviceRegistrationRequest: AgentPSSODeviceRegistrationRequest; +} + +export interface EndpointsAgentsPssoRegisterUserCreateRequest { + agentPSSOUserRegistrationRequest: AgentPSSOUserRegistrationRequest; +} + +export interface EndpointsConnectorsDestroyRequest { + connectorUuid: string; +} + +export interface EndpointsConnectorsListRequest { + ordering?: string; + page?: number; + pageSize?: number; + search?: string; +} + +export interface EndpointsConnectorsRetrieveRequest { + connectorUuid: string; +} + +export interface EndpointsConnectorsUsedByListRequest { + connectorUuid: string; +} + +export interface EndpointsDeviceAccessGroupsCreateRequest { + deviceAccessGroupRequest: DeviceAccessGroupRequest; +} + +export interface EndpointsDeviceAccessGroupsDestroyRequest { + pbmUuid: string; +} + +export interface EndpointsDeviceAccessGroupsListRequest { + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + pbmUuid?: string; + search?: string; +} + +export interface EndpointsDeviceAccessGroupsPartialUpdateRequest { + pbmUuid: string; + patchedDeviceAccessGroupRequest?: PatchedDeviceAccessGroupRequest; +} + +export interface EndpointsDeviceAccessGroupsRetrieveRequest { + pbmUuid: string; +} + +export interface EndpointsDeviceAccessGroupsUpdateRequest { + pbmUuid: string; + deviceAccessGroupRequest: DeviceAccessGroupRequest; +} + +export interface EndpointsDeviceAccessGroupsUsedByListRequest { + pbmUuid: string; +} + +export interface EndpointsDeviceBindingsCreateRequest { + deviceUserBindingRequest: DeviceUserBindingRequest; +} + +export interface EndpointsDeviceBindingsDestroyRequest { + policyBindingUuid: string; +} + +export interface EndpointsDeviceBindingsListRequest { + enabled?: boolean; + order?: number; + ordering?: string; + page?: number; + pageSize?: number; + policy?: string; + policyIsnull?: boolean; + search?: string; + target?: string; + targetIn?: Array; + timeout?: number; +} + +export interface EndpointsDeviceBindingsPartialUpdateRequest { + policyBindingUuid: string; + patchedDeviceUserBindingRequest?: PatchedDeviceUserBindingRequest; +} + +export interface EndpointsDeviceBindingsRetrieveRequest { + policyBindingUuid: string; +} + +export interface EndpointsDeviceBindingsUpdateRequest { + policyBindingUuid: string; + deviceUserBindingRequest: DeviceUserBindingRequest; +} + +export interface EndpointsDeviceBindingsUsedByListRequest { + policyBindingUuid: string; +} + +export interface EndpointsDevicesDestroyRequest { + deviceUuid: string; +} + +export interface EndpointsDevicesListRequest { + identifier?: string; + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; +} + +export interface EndpointsDevicesPartialUpdateRequest { + deviceUuid: string; + patchedEndpointDeviceRequest?: PatchedEndpointDeviceRequest; +} + +export interface EndpointsDevicesRetrieveRequest { + deviceUuid: string; +} + +export interface EndpointsDevicesUpdateRequest { + deviceUuid: string; + endpointDeviceRequest: EndpointDeviceRequest; +} + +export interface EndpointsDevicesUsedByListRequest { + deviceUuid: string; +} + +export interface EndpointsFleetConnectorsCreateRequest { + fleetConnectorRequest: FleetConnectorRequest; +} + +export interface EndpointsFleetConnectorsDestroyRequest { + connectorUuid: string; +} + +export interface EndpointsFleetConnectorsListRequest { + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; +} + +export interface EndpointsFleetConnectorsPartialUpdateRequest { + connectorUuid: string; + patchedFleetConnectorRequest?: PatchedFleetConnectorRequest; +} + +export interface EndpointsFleetConnectorsRetrieveRequest { + connectorUuid: string; +} + +export interface EndpointsFleetConnectorsUpdateRequest { + connectorUuid: string; + fleetConnectorRequest: FleetConnectorRequest; +} + +export interface EndpointsFleetConnectorsUsedByListRequest { + connectorUuid: string; +} + +export interface EndpointsGoogleChromeConnectorsCreateRequest { + googleChromeConnectorRequest: GoogleChromeConnectorRequest; +} + +export interface EndpointsGoogleChromeConnectorsDestroyRequest { + connectorUuid: string; +} + +export interface EndpointsGoogleChromeConnectorsListRequest { + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; +} + +export interface EndpointsGoogleChromeConnectorsPartialUpdateRequest { + connectorUuid: string; + patchedGoogleChromeConnectorRequest?: PatchedGoogleChromeConnectorRequest; +} + +export interface EndpointsGoogleChromeConnectorsRetrieveRequest { + connectorUuid: string; +} + +export interface EndpointsGoogleChromeConnectorsUpdateRequest { + connectorUuid: string; + googleChromeConnectorRequest: GoogleChromeConnectorRequest; +} + +export interface EndpointsGoogleChromeConnectorsUsedByListRequest { + connectorUuid: string; +} + +/** + * + */ +export class EndpointsApi extends runtime.BaseAPI { + /** + * Creates request options for endpointsAgentsConnectorsAgentConfigRetrieve without sending the request + */ + async endpointsAgentsConnectorsAgentConfigRetrieveRequestOpts(): Promise { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + let urlPath = `/endpoints/agents/connectors/agent_config/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Mixin to add a used_by endpoint to return a list of all objects using this object + */ + async endpointsAgentsConnectorsAgentConfigRetrieveRaw( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.endpointsAgentsConnectorsAgentConfigRetrieveRequestOpts(); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => AgentConfigFromJSON(jsonValue)); + } + + /** + * Mixin to add a used_by endpoint to return a list of all objects using this object + */ + async endpointsAgentsConnectorsAgentConfigRetrieve( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.endpointsAgentsConnectorsAgentConfigRetrieveRaw(initOverrides); + return await response.value(); + } + + /** + * Creates request options for endpointsAgentsConnectorsAuthFedCreate without sending the request + */ + async endpointsAgentsConnectorsAuthFedCreateRequestOpts( + requestParameters: EndpointsAgentsConnectorsAuthFedCreateRequest, + ): Promise { + if (requestParameters["device"] == null) { + throw new runtime.RequiredError( + "device", + 'Required parameter "device" was null or undefined when calling endpointsAgentsConnectorsAuthFedCreate().', + ); + } + + const queryParameters: any = {}; + + if (requestParameters["device"] != null) { + queryParameters["device"] = requestParameters["device"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + let urlPath = `/endpoints/agents/connectors/auth_fed/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Mixin to add a used_by endpoint to return a list of all objects using this object + */ + async endpointsAgentsConnectorsAuthFedCreateRaw( + requestParameters: EndpointsAgentsConnectorsAuthFedCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.endpointsAgentsConnectorsAuthFedCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + AgentTokenResponseFromJSON(jsonValue), + ); + } + + /** + * Mixin to add a used_by endpoint to return a list of all objects using this object + */ + async endpointsAgentsConnectorsAuthFedCreate( + requestParameters: EndpointsAgentsConnectorsAuthFedCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.endpointsAgentsConnectorsAuthFedCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for endpointsAgentsConnectorsAuthIaCreate without sending the request + */ + async endpointsAgentsConnectorsAuthIaCreateRequestOpts(): Promise { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + let urlPath = `/endpoints/agents/connectors/auth_ia/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Mixin to add a used_by endpoint to return a list of all objects using this object + */ + async endpointsAgentsConnectorsAuthIaCreateRaw( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.endpointsAgentsConnectorsAuthIaCreateRequestOpts(); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + AgentAuthenticationResponseFromJSON(jsonValue), + ); + } + + /** + * Mixin to add a used_by endpoint to return a list of all objects using this object + */ + async endpointsAgentsConnectorsAuthIaCreate( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.endpointsAgentsConnectorsAuthIaCreateRaw(initOverrides); + return await response.value(); + } + + /** + * Creates request options for endpointsAgentsConnectorsCheckInCreate without sending the request + */ + async endpointsAgentsConnectorsCheckInCreateRequestOpts( + requestParameters: EndpointsAgentsConnectorsCheckInCreateRequest, + ): Promise { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + let urlPath = `/endpoints/agents/connectors/check_in/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: DeviceFactsRequestToJSON(requestParameters["deviceFactsRequest"]), + }; + } + + /** + * Mixin to add a used_by endpoint to return a list of all objects using this object + */ + async endpointsAgentsConnectorsCheckInCreateRaw( + requestParameters: EndpointsAgentsConnectorsCheckInCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.endpointsAgentsConnectorsCheckInCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Mixin to add a used_by endpoint to return a list of all objects using this object + */ + async endpointsAgentsConnectorsCheckInCreate( + requestParameters: EndpointsAgentsConnectorsCheckInCreateRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.endpointsAgentsConnectorsCheckInCreateRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for endpointsAgentsConnectorsCreate without sending the request + */ + async endpointsAgentsConnectorsCreateRequestOpts( + requestParameters: EndpointsAgentsConnectorsCreateRequest, + ): Promise { + if (requestParameters["agentConnectorRequest"] == null) { + throw new runtime.RequiredError( + "agentConnectorRequest", + 'Required parameter "agentConnectorRequest" was null or undefined when calling endpointsAgentsConnectorsCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/endpoints/agents/connectors/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: AgentConnectorRequestToJSON(requestParameters["agentConnectorRequest"]), + }; + } + + /** + * Mixin to add a used_by endpoint to return a list of all objects using this object + */ + async endpointsAgentsConnectorsCreateRaw( + requestParameters: EndpointsAgentsConnectorsCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.endpointsAgentsConnectorsCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + AgentConnectorFromJSON(jsonValue), + ); + } + + /** + * Mixin to add a used_by endpoint to return a list of all objects using this object + */ + async endpointsAgentsConnectorsCreate( + requestParameters: EndpointsAgentsConnectorsCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.endpointsAgentsConnectorsCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for endpointsAgentsConnectorsDestroy without sending the request + */ + async endpointsAgentsConnectorsDestroyRequestOpts( + requestParameters: EndpointsAgentsConnectorsDestroyRequest, + ): Promise { + if (requestParameters["connectorUuid"] == null) { + throw new runtime.RequiredError( + "connectorUuid", + 'Required parameter "connectorUuid" was null or undefined when calling endpointsAgentsConnectorsDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/endpoints/agents/connectors/{connector_uuid}/`; + urlPath = urlPath.replace( + `{${"connector_uuid"}}`, + encodeURIComponent(String(requestParameters["connectorUuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Mixin to add a used_by endpoint to return a list of all objects using this object + */ + async endpointsAgentsConnectorsDestroyRaw( + requestParameters: EndpointsAgentsConnectorsDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.endpointsAgentsConnectorsDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Mixin to add a used_by endpoint to return a list of all objects using this object + */ + async endpointsAgentsConnectorsDestroy( + requestParameters: EndpointsAgentsConnectorsDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.endpointsAgentsConnectorsDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for endpointsAgentsConnectorsEnrollCreate without sending the request + */ + async endpointsAgentsConnectorsEnrollCreateRequestOpts( + requestParameters: EndpointsAgentsConnectorsEnrollCreateRequest, + ): Promise { + if (requestParameters["enrollRequest"] == null) { + throw new runtime.RequiredError( + "enrollRequest", + 'Required parameter "enrollRequest" was null or undefined when calling endpointsAgentsConnectorsEnrollCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + let urlPath = `/endpoints/agents/connectors/enroll/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: EnrollRequestToJSON(requestParameters["enrollRequest"]), + }; + } + + /** + * Mixin to add a used_by endpoint to return a list of all objects using this object + */ + async endpointsAgentsConnectorsEnrollCreateRaw( + requestParameters: EndpointsAgentsConnectorsEnrollCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.endpointsAgentsConnectorsEnrollCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + AgentTokenResponseFromJSON(jsonValue), + ); + } + + /** + * Mixin to add a used_by endpoint to return a list of all objects using this object + */ + async endpointsAgentsConnectorsEnrollCreate( + requestParameters: EndpointsAgentsConnectorsEnrollCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.endpointsAgentsConnectorsEnrollCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for endpointsAgentsConnectorsList without sending the request + */ + async endpointsAgentsConnectorsListRequestOpts( + requestParameters: EndpointsAgentsConnectorsListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["enabled"] != null) { + queryParameters["enabled"] = requestParameters["enabled"]; + } + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/endpoints/agents/connectors/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Mixin to add a used_by endpoint to return a list of all objects using this object + */ + async endpointsAgentsConnectorsListRaw( + requestParameters: EndpointsAgentsConnectorsListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.endpointsAgentsConnectorsListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedAgentConnectorListFromJSON(jsonValue), + ); + } + + /** + * Mixin to add a used_by endpoint to return a list of all objects using this object + */ + async endpointsAgentsConnectorsList( + requestParameters: EndpointsAgentsConnectorsListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.endpointsAgentsConnectorsListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for endpointsAgentsConnectorsMdmConfigCreate without sending the request + */ + async endpointsAgentsConnectorsMdmConfigCreateRequestOpts( + requestParameters: EndpointsAgentsConnectorsMdmConfigCreateRequest, + ): Promise { + if (requestParameters["connectorUuid"] == null) { + throw new runtime.RequiredError( + "connectorUuid", + 'Required parameter "connectorUuid" was null or undefined when calling endpointsAgentsConnectorsMdmConfigCreate().', + ); + } + + if (requestParameters["mDMConfigRequest"] == null) { + throw new runtime.RequiredError( + "mDMConfigRequest", + 'Required parameter "mDMConfigRequest" was null or undefined when calling endpointsAgentsConnectorsMdmConfigCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/endpoints/agents/connectors/{connector_uuid}/mdm_config/`; + urlPath = urlPath.replace( + `{${"connector_uuid"}}`, + encodeURIComponent(String(requestParameters["connectorUuid"])), + ); + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: MDMConfigRequestToJSON(requestParameters["mDMConfigRequest"]), + }; + } + + /** + * Generate configuration for MDM systems to deploy authentik Agent + */ + async endpointsAgentsConnectorsMdmConfigCreateRaw( + requestParameters: EndpointsAgentsConnectorsMdmConfigCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.endpointsAgentsConnectorsMdmConfigCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + MDMConfigResponseFromJSON(jsonValue), + ); + } + + /** + * Generate configuration for MDM systems to deploy authentik Agent + */ + async endpointsAgentsConnectorsMdmConfigCreate( + requestParameters: EndpointsAgentsConnectorsMdmConfigCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.endpointsAgentsConnectorsMdmConfigCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for endpointsAgentsConnectorsPartialUpdate without sending the request + */ + async endpointsAgentsConnectorsPartialUpdateRequestOpts( + requestParameters: EndpointsAgentsConnectorsPartialUpdateRequest, + ): Promise { + if (requestParameters["connectorUuid"] == null) { + throw new runtime.RequiredError( + "connectorUuid", + 'Required parameter "connectorUuid" was null or undefined when calling endpointsAgentsConnectorsPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/endpoints/agents/connectors/{connector_uuid}/`; + urlPath = urlPath.replace( + `{${"connector_uuid"}}`, + encodeURIComponent(String(requestParameters["connectorUuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedAgentConnectorRequestToJSON( + requestParameters["patchedAgentConnectorRequest"], + ), + }; + } + + /** + * Mixin to add a used_by endpoint to return a list of all objects using this object + */ + async endpointsAgentsConnectorsPartialUpdateRaw( + requestParameters: EndpointsAgentsConnectorsPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.endpointsAgentsConnectorsPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + AgentConnectorFromJSON(jsonValue), + ); + } + + /** + * Mixin to add a used_by endpoint to return a list of all objects using this object + */ + async endpointsAgentsConnectorsPartialUpdate( + requestParameters: EndpointsAgentsConnectorsPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.endpointsAgentsConnectorsPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for endpointsAgentsConnectorsRetrieve without sending the request + */ + async endpointsAgentsConnectorsRetrieveRequestOpts( + requestParameters: EndpointsAgentsConnectorsRetrieveRequest, + ): Promise { + if (requestParameters["connectorUuid"] == null) { + throw new runtime.RequiredError( + "connectorUuid", + 'Required parameter "connectorUuid" was null or undefined when calling endpointsAgentsConnectorsRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/endpoints/agents/connectors/{connector_uuid}/`; + urlPath = urlPath.replace( + `{${"connector_uuid"}}`, + encodeURIComponent(String(requestParameters["connectorUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Mixin to add a used_by endpoint to return a list of all objects using this object + */ + async endpointsAgentsConnectorsRetrieveRaw( + requestParameters: EndpointsAgentsConnectorsRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.endpointsAgentsConnectorsRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + AgentConnectorFromJSON(jsonValue), + ); + } + + /** + * Mixin to add a used_by endpoint to return a list of all objects using this object + */ + async endpointsAgentsConnectorsRetrieve( + requestParameters: EndpointsAgentsConnectorsRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.endpointsAgentsConnectorsRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for endpointsAgentsConnectorsUpdate without sending the request + */ + async endpointsAgentsConnectorsUpdateRequestOpts( + requestParameters: EndpointsAgentsConnectorsUpdateRequest, + ): Promise { + if (requestParameters["connectorUuid"] == null) { + throw new runtime.RequiredError( + "connectorUuid", + 'Required parameter "connectorUuid" was null or undefined when calling endpointsAgentsConnectorsUpdate().', + ); + } + + if (requestParameters["agentConnectorRequest"] == null) { + throw new runtime.RequiredError( + "agentConnectorRequest", + 'Required parameter "agentConnectorRequest" was null or undefined when calling endpointsAgentsConnectorsUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/endpoints/agents/connectors/{connector_uuid}/`; + urlPath = urlPath.replace( + `{${"connector_uuid"}}`, + encodeURIComponent(String(requestParameters["connectorUuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: AgentConnectorRequestToJSON(requestParameters["agentConnectorRequest"]), + }; + } + + /** + * Mixin to add a used_by endpoint to return a list of all objects using this object + */ + async endpointsAgentsConnectorsUpdateRaw( + requestParameters: EndpointsAgentsConnectorsUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.endpointsAgentsConnectorsUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + AgentConnectorFromJSON(jsonValue), + ); + } + + /** + * Mixin to add a used_by endpoint to return a list of all objects using this object + */ + async endpointsAgentsConnectorsUpdate( + requestParameters: EndpointsAgentsConnectorsUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.endpointsAgentsConnectorsUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for endpointsAgentsConnectorsUsedByList without sending the request + */ + async endpointsAgentsConnectorsUsedByListRequestOpts( + requestParameters: EndpointsAgentsConnectorsUsedByListRequest, + ): Promise { + if (requestParameters["connectorUuid"] == null) { + throw new runtime.RequiredError( + "connectorUuid", + 'Required parameter "connectorUuid" was null or undefined when calling endpointsAgentsConnectorsUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/endpoints/agents/connectors/{connector_uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"connector_uuid"}}`, + encodeURIComponent(String(requestParameters["connectorUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async endpointsAgentsConnectorsUsedByListRaw( + requestParameters: EndpointsAgentsConnectorsUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.endpointsAgentsConnectorsUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async endpointsAgentsConnectorsUsedByList( + requestParameters: EndpointsAgentsConnectorsUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.endpointsAgentsConnectorsUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for endpointsAgentsEnrollmentTokensCreate without sending the request + */ + async endpointsAgentsEnrollmentTokensCreateRequestOpts( + requestParameters: EndpointsAgentsEnrollmentTokensCreateRequest, + ): Promise { + if (requestParameters["enrollmentTokenRequest"] == null) { + throw new runtime.RequiredError( + "enrollmentTokenRequest", + 'Required parameter "enrollmentTokenRequest" was null or undefined when calling endpointsAgentsEnrollmentTokensCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/endpoints/agents/enrollment_tokens/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: EnrollmentTokenRequestToJSON(requestParameters["enrollmentTokenRequest"]), + }; + } + + /** + * Mixin to add a used_by endpoint to return a list of all objects using this object + */ + async endpointsAgentsEnrollmentTokensCreateRaw( + requestParameters: EndpointsAgentsEnrollmentTokensCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.endpointsAgentsEnrollmentTokensCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + EnrollmentTokenFromJSON(jsonValue), + ); + } + + /** + * Mixin to add a used_by endpoint to return a list of all objects using this object + */ + async endpointsAgentsEnrollmentTokensCreate( + requestParameters: EndpointsAgentsEnrollmentTokensCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.endpointsAgentsEnrollmentTokensCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for endpointsAgentsEnrollmentTokensDestroy without sending the request + */ + async endpointsAgentsEnrollmentTokensDestroyRequestOpts( + requestParameters: EndpointsAgentsEnrollmentTokensDestroyRequest, + ): Promise { + if (requestParameters["tokenUuid"] == null) { + throw new runtime.RequiredError( + "tokenUuid", + 'Required parameter "tokenUuid" was null or undefined when calling endpointsAgentsEnrollmentTokensDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/endpoints/agents/enrollment_tokens/{token_uuid}/`; + urlPath = urlPath.replace( + `{${"token_uuid"}}`, + encodeURIComponent(String(requestParameters["tokenUuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Mixin to add a used_by endpoint to return a list of all objects using this object + */ + async endpointsAgentsEnrollmentTokensDestroyRaw( + requestParameters: EndpointsAgentsEnrollmentTokensDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.endpointsAgentsEnrollmentTokensDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Mixin to add a used_by endpoint to return a list of all objects using this object + */ + async endpointsAgentsEnrollmentTokensDestroy( + requestParameters: EndpointsAgentsEnrollmentTokensDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.endpointsAgentsEnrollmentTokensDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for endpointsAgentsEnrollmentTokensList without sending the request + */ + async endpointsAgentsEnrollmentTokensListRequestOpts( + requestParameters: EndpointsAgentsEnrollmentTokensListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["connector"] != null) { + queryParameters["connector"] = requestParameters["connector"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["tokenUuid"] != null) { + queryParameters["token_uuid"] = requestParameters["tokenUuid"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/endpoints/agents/enrollment_tokens/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Mixin to add a used_by endpoint to return a list of all objects using this object + */ + async endpointsAgentsEnrollmentTokensListRaw( + requestParameters: EndpointsAgentsEnrollmentTokensListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.endpointsAgentsEnrollmentTokensListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedEnrollmentTokenListFromJSON(jsonValue), + ); + } + + /** + * Mixin to add a used_by endpoint to return a list of all objects using this object + */ + async endpointsAgentsEnrollmentTokensList( + requestParameters: EndpointsAgentsEnrollmentTokensListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.endpointsAgentsEnrollmentTokensListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for endpointsAgentsEnrollmentTokensPartialUpdate without sending the request + */ + async endpointsAgentsEnrollmentTokensPartialUpdateRequestOpts( + requestParameters: EndpointsAgentsEnrollmentTokensPartialUpdateRequest, + ): Promise { + if (requestParameters["tokenUuid"] == null) { + throw new runtime.RequiredError( + "tokenUuid", + 'Required parameter "tokenUuid" was null or undefined when calling endpointsAgentsEnrollmentTokensPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/endpoints/agents/enrollment_tokens/{token_uuid}/`; + urlPath = urlPath.replace( + `{${"token_uuid"}}`, + encodeURIComponent(String(requestParameters["tokenUuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedEnrollmentTokenRequestToJSON( + requestParameters["patchedEnrollmentTokenRequest"], + ), + }; + } + + /** + * Mixin to add a used_by endpoint to return a list of all objects using this object + */ + async endpointsAgentsEnrollmentTokensPartialUpdateRaw( + requestParameters: EndpointsAgentsEnrollmentTokensPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.endpointsAgentsEnrollmentTokensPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + EnrollmentTokenFromJSON(jsonValue), + ); + } + + /** + * Mixin to add a used_by endpoint to return a list of all objects using this object + */ + async endpointsAgentsEnrollmentTokensPartialUpdate( + requestParameters: EndpointsAgentsEnrollmentTokensPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.endpointsAgentsEnrollmentTokensPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for endpointsAgentsEnrollmentTokensRetrieve without sending the request + */ + async endpointsAgentsEnrollmentTokensRetrieveRequestOpts( + requestParameters: EndpointsAgentsEnrollmentTokensRetrieveRequest, + ): Promise { + if (requestParameters["tokenUuid"] == null) { + throw new runtime.RequiredError( + "tokenUuid", + 'Required parameter "tokenUuid" was null or undefined when calling endpointsAgentsEnrollmentTokensRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/endpoints/agents/enrollment_tokens/{token_uuid}/`; + urlPath = urlPath.replace( + `{${"token_uuid"}}`, + encodeURIComponent(String(requestParameters["tokenUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Mixin to add a used_by endpoint to return a list of all objects using this object + */ + async endpointsAgentsEnrollmentTokensRetrieveRaw( + requestParameters: EndpointsAgentsEnrollmentTokensRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.endpointsAgentsEnrollmentTokensRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + EnrollmentTokenFromJSON(jsonValue), + ); + } + + /** + * Mixin to add a used_by endpoint to return a list of all objects using this object + */ + async endpointsAgentsEnrollmentTokensRetrieve( + requestParameters: EndpointsAgentsEnrollmentTokensRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.endpointsAgentsEnrollmentTokensRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for endpointsAgentsEnrollmentTokensUpdate without sending the request + */ + async endpointsAgentsEnrollmentTokensUpdateRequestOpts( + requestParameters: EndpointsAgentsEnrollmentTokensUpdateRequest, + ): Promise { + if (requestParameters["tokenUuid"] == null) { + throw new runtime.RequiredError( + "tokenUuid", + 'Required parameter "tokenUuid" was null or undefined when calling endpointsAgentsEnrollmentTokensUpdate().', + ); + } + + if (requestParameters["enrollmentTokenRequest"] == null) { + throw new runtime.RequiredError( + "enrollmentTokenRequest", + 'Required parameter "enrollmentTokenRequest" was null or undefined when calling endpointsAgentsEnrollmentTokensUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/endpoints/agents/enrollment_tokens/{token_uuid}/`; + urlPath = urlPath.replace( + `{${"token_uuid"}}`, + encodeURIComponent(String(requestParameters["tokenUuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: EnrollmentTokenRequestToJSON(requestParameters["enrollmentTokenRequest"]), + }; + } + + /** + * Mixin to add a used_by endpoint to return a list of all objects using this object + */ + async endpointsAgentsEnrollmentTokensUpdateRaw( + requestParameters: EndpointsAgentsEnrollmentTokensUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.endpointsAgentsEnrollmentTokensUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + EnrollmentTokenFromJSON(jsonValue), + ); + } + + /** + * Mixin to add a used_by endpoint to return a list of all objects using this object + */ + async endpointsAgentsEnrollmentTokensUpdate( + requestParameters: EndpointsAgentsEnrollmentTokensUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.endpointsAgentsEnrollmentTokensUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for endpointsAgentsEnrollmentTokensUsedByList without sending the request + */ + async endpointsAgentsEnrollmentTokensUsedByListRequestOpts( + requestParameters: EndpointsAgentsEnrollmentTokensUsedByListRequest, + ): Promise { + if (requestParameters["tokenUuid"] == null) { + throw new runtime.RequiredError( + "tokenUuid", + 'Required parameter "tokenUuid" was null or undefined when calling endpointsAgentsEnrollmentTokensUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/endpoints/agents/enrollment_tokens/{token_uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"token_uuid"}}`, + encodeURIComponent(String(requestParameters["tokenUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async endpointsAgentsEnrollmentTokensUsedByListRaw( + requestParameters: EndpointsAgentsEnrollmentTokensUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.endpointsAgentsEnrollmentTokensUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async endpointsAgentsEnrollmentTokensUsedByList( + requestParameters: EndpointsAgentsEnrollmentTokensUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.endpointsAgentsEnrollmentTokensUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for endpointsAgentsEnrollmentTokensViewKeyRetrieve without sending the request + */ + async endpointsAgentsEnrollmentTokensViewKeyRetrieveRequestOpts( + requestParameters: EndpointsAgentsEnrollmentTokensViewKeyRetrieveRequest, + ): Promise { + if (requestParameters["tokenUuid"] == null) { + throw new runtime.RequiredError( + "tokenUuid", + 'Required parameter "tokenUuid" was null or undefined when calling endpointsAgentsEnrollmentTokensViewKeyRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/endpoints/agents/enrollment_tokens/{token_uuid}/view_key/`; + urlPath = urlPath.replace( + `{${"token_uuid"}}`, + encodeURIComponent(String(requestParameters["tokenUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Return token key and log access + */ + async endpointsAgentsEnrollmentTokensViewKeyRetrieveRaw( + requestParameters: EndpointsAgentsEnrollmentTokensViewKeyRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.endpointsAgentsEnrollmentTokensViewKeyRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => TokenViewFromJSON(jsonValue)); + } + + /** + * Return token key and log access + */ + async endpointsAgentsEnrollmentTokensViewKeyRetrieve( + requestParameters: EndpointsAgentsEnrollmentTokensViewKeyRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.endpointsAgentsEnrollmentTokensViewKeyRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for endpointsAgentsPssoIseCreate without sending the request + */ + async endpointsAgentsPssoIseCreateRequestOpts( + requestParameters: EndpointsAgentsPssoIseCreateRequest, + ): Promise { + if (requestParameters["appleIndependentSecureEnclaveRequest"] == null) { + throw new runtime.RequiredError( + "appleIndependentSecureEnclaveRequest", + 'Required parameter "appleIndependentSecureEnclaveRequest" was null or undefined when calling endpointsAgentsPssoIseCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/endpoints/agents/psso/ise/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: AppleIndependentSecureEnclaveRequestToJSON( + requestParameters["appleIndependentSecureEnclaveRequest"], + ), + }; + } + + /** + * Mixin to add a used_by endpoint to return a list of all objects using this object + */ + async endpointsAgentsPssoIseCreateRaw( + requestParameters: EndpointsAgentsPssoIseCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.endpointsAgentsPssoIseCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + AppleIndependentSecureEnclaveFromJSON(jsonValue), + ); + } + + /** + * Mixin to add a used_by endpoint to return a list of all objects using this object + */ + async endpointsAgentsPssoIseCreate( + requestParameters: EndpointsAgentsPssoIseCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.endpointsAgentsPssoIseCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for endpointsAgentsPssoIseDestroy without sending the request + */ + async endpointsAgentsPssoIseDestroyRequestOpts( + requestParameters: EndpointsAgentsPssoIseDestroyRequest, + ): Promise { + if (requestParameters["uuid"] == null) { + throw new runtime.RequiredError( + "uuid", + 'Required parameter "uuid" was null or undefined when calling endpointsAgentsPssoIseDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/endpoints/agents/psso/ise/{uuid}/`; + urlPath = urlPath.replace( + `{${"uuid"}}`, + encodeURIComponent(String(requestParameters["uuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Mixin to add a used_by endpoint to return a list of all objects using this object + */ + async endpointsAgentsPssoIseDestroyRaw( + requestParameters: EndpointsAgentsPssoIseDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.endpointsAgentsPssoIseDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Mixin to add a used_by endpoint to return a list of all objects using this object + */ + async endpointsAgentsPssoIseDestroy( + requestParameters: EndpointsAgentsPssoIseDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.endpointsAgentsPssoIseDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for endpointsAgentsPssoIseList without sending the request + */ + async endpointsAgentsPssoIseListRequestOpts( + requestParameters: EndpointsAgentsPssoIseListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["appleEnclaveKeyId"] != null) { + queryParameters["apple_enclave_key_id"] = requestParameters["appleEnclaveKeyId"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["user"] != null) { + queryParameters["user"] = requestParameters["user"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/endpoints/agents/psso/ise/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Mixin to add a used_by endpoint to return a list of all objects using this object + */ + async endpointsAgentsPssoIseListRaw( + requestParameters: EndpointsAgentsPssoIseListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.endpointsAgentsPssoIseListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedAppleIndependentSecureEnclaveListFromJSON(jsonValue), + ); + } + + /** + * Mixin to add a used_by endpoint to return a list of all objects using this object + */ + async endpointsAgentsPssoIseList( + requestParameters: EndpointsAgentsPssoIseListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.endpointsAgentsPssoIseListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for endpointsAgentsPssoIsePartialUpdate without sending the request + */ + async endpointsAgentsPssoIsePartialUpdateRequestOpts( + requestParameters: EndpointsAgentsPssoIsePartialUpdateRequest, + ): Promise { + if (requestParameters["uuid"] == null) { + throw new runtime.RequiredError( + "uuid", + 'Required parameter "uuid" was null or undefined when calling endpointsAgentsPssoIsePartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/endpoints/agents/psso/ise/{uuid}/`; + urlPath = urlPath.replace( + `{${"uuid"}}`, + encodeURIComponent(String(requestParameters["uuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedAppleIndependentSecureEnclaveRequestToJSON( + requestParameters["patchedAppleIndependentSecureEnclaveRequest"], + ), + }; + } + + /** + * Mixin to add a used_by endpoint to return a list of all objects using this object + */ + async endpointsAgentsPssoIsePartialUpdateRaw( + requestParameters: EndpointsAgentsPssoIsePartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.endpointsAgentsPssoIsePartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + AppleIndependentSecureEnclaveFromJSON(jsonValue), + ); + } + + /** + * Mixin to add a used_by endpoint to return a list of all objects using this object + */ + async endpointsAgentsPssoIsePartialUpdate( + requestParameters: EndpointsAgentsPssoIsePartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.endpointsAgentsPssoIsePartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for endpointsAgentsPssoIseRetrieve without sending the request + */ + async endpointsAgentsPssoIseRetrieveRequestOpts( + requestParameters: EndpointsAgentsPssoIseRetrieveRequest, + ): Promise { + if (requestParameters["uuid"] == null) { + throw new runtime.RequiredError( + "uuid", + 'Required parameter "uuid" was null or undefined when calling endpointsAgentsPssoIseRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/endpoints/agents/psso/ise/{uuid}/`; + urlPath = urlPath.replace( + `{${"uuid"}}`, + encodeURIComponent(String(requestParameters["uuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Mixin to add a used_by endpoint to return a list of all objects using this object + */ + async endpointsAgentsPssoIseRetrieveRaw( + requestParameters: EndpointsAgentsPssoIseRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.endpointsAgentsPssoIseRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + AppleIndependentSecureEnclaveFromJSON(jsonValue), + ); + } + + /** + * Mixin to add a used_by endpoint to return a list of all objects using this object + */ + async endpointsAgentsPssoIseRetrieve( + requestParameters: EndpointsAgentsPssoIseRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.endpointsAgentsPssoIseRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for endpointsAgentsPssoIseUpdate without sending the request + */ + async endpointsAgentsPssoIseUpdateRequestOpts( + requestParameters: EndpointsAgentsPssoIseUpdateRequest, + ): Promise { + if (requestParameters["uuid"] == null) { + throw new runtime.RequiredError( + "uuid", + 'Required parameter "uuid" was null or undefined when calling endpointsAgentsPssoIseUpdate().', + ); + } + + if (requestParameters["appleIndependentSecureEnclaveRequest"] == null) { + throw new runtime.RequiredError( + "appleIndependentSecureEnclaveRequest", + 'Required parameter "appleIndependentSecureEnclaveRequest" was null or undefined when calling endpointsAgentsPssoIseUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/endpoints/agents/psso/ise/{uuid}/`; + urlPath = urlPath.replace( + `{${"uuid"}}`, + encodeURIComponent(String(requestParameters["uuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: AppleIndependentSecureEnclaveRequestToJSON( + requestParameters["appleIndependentSecureEnclaveRequest"], + ), + }; + } + + /** + * Mixin to add a used_by endpoint to return a list of all objects using this object + */ + async endpointsAgentsPssoIseUpdateRaw( + requestParameters: EndpointsAgentsPssoIseUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.endpointsAgentsPssoIseUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + AppleIndependentSecureEnclaveFromJSON(jsonValue), + ); + } + + /** + * Mixin to add a used_by endpoint to return a list of all objects using this object + */ + async endpointsAgentsPssoIseUpdate( + requestParameters: EndpointsAgentsPssoIseUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.endpointsAgentsPssoIseUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for endpointsAgentsPssoIseUsedByList without sending the request + */ + async endpointsAgentsPssoIseUsedByListRequestOpts( + requestParameters: EndpointsAgentsPssoIseUsedByListRequest, + ): Promise { + if (requestParameters["uuid"] == null) { + throw new runtime.RequiredError( + "uuid", + 'Required parameter "uuid" was null or undefined when calling endpointsAgentsPssoIseUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/endpoints/agents/psso/ise/{uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"uuid"}}`, + encodeURIComponent(String(requestParameters["uuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async endpointsAgentsPssoIseUsedByListRaw( + requestParameters: EndpointsAgentsPssoIseUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.endpointsAgentsPssoIseUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async endpointsAgentsPssoIseUsedByList( + requestParameters: EndpointsAgentsPssoIseUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.endpointsAgentsPssoIseUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for endpointsAgentsPssoRegisterDeviceCreate without sending the request + */ + async endpointsAgentsPssoRegisterDeviceCreateRequestOpts( + requestParameters: EndpointsAgentsPssoRegisterDeviceCreateRequest, + ): Promise { + if (requestParameters["agentPSSODeviceRegistrationRequest"] == null) { + throw new runtime.RequiredError( + "agentPSSODeviceRegistrationRequest", + 'Required parameter "agentPSSODeviceRegistrationRequest" was null or undefined when calling endpointsAgentsPssoRegisterDeviceCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + let urlPath = `/endpoints/agents/psso/register/device/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: AgentPSSODeviceRegistrationRequestToJSON( + requestParameters["agentPSSODeviceRegistrationRequest"], + ), + }; + } + + /** + */ + async endpointsAgentsPssoRegisterDeviceCreateRaw( + requestParameters: EndpointsAgentsPssoRegisterDeviceCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.endpointsAgentsPssoRegisterDeviceCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + AgentPSSODeviceRegistrationResponseFromJSON(jsonValue), + ); + } + + /** + */ + async endpointsAgentsPssoRegisterDeviceCreate( + requestParameters: EndpointsAgentsPssoRegisterDeviceCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.endpointsAgentsPssoRegisterDeviceCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for endpointsAgentsPssoRegisterUserCreate without sending the request + */ + async endpointsAgentsPssoRegisterUserCreateRequestOpts( + requestParameters: EndpointsAgentsPssoRegisterUserCreateRequest, + ): Promise { + if (requestParameters["agentPSSOUserRegistrationRequest"] == null) { + throw new runtime.RequiredError( + "agentPSSOUserRegistrationRequest", + 'Required parameter "agentPSSOUserRegistrationRequest" was null or undefined when calling endpointsAgentsPssoRegisterUserCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + let urlPath = `/endpoints/agents/psso/register/user/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: AgentPSSOUserRegistrationRequestToJSON( + requestParameters["agentPSSOUserRegistrationRequest"], + ), + }; + } + + /** + */ + async endpointsAgentsPssoRegisterUserCreateRaw( + requestParameters: EndpointsAgentsPssoRegisterUserCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.endpointsAgentsPssoRegisterUserCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => UserSelfFromJSON(jsonValue)); + } + + /** + */ + async endpointsAgentsPssoRegisterUserCreate( + requestParameters: EndpointsAgentsPssoRegisterUserCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.endpointsAgentsPssoRegisterUserCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for endpointsConnectorsDestroy without sending the request + */ + async endpointsConnectorsDestroyRequestOpts( + requestParameters: EndpointsConnectorsDestroyRequest, + ): Promise { + if (requestParameters["connectorUuid"] == null) { + throw new runtime.RequiredError( + "connectorUuid", + 'Required parameter "connectorUuid" was null or undefined when calling endpointsConnectorsDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/endpoints/connectors/{connector_uuid}/`; + urlPath = urlPath.replace( + `{${"connector_uuid"}}`, + encodeURIComponent(String(requestParameters["connectorUuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Connector Viewset + */ + async endpointsConnectorsDestroyRaw( + requestParameters: EndpointsConnectorsDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.endpointsConnectorsDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Connector Viewset + */ + async endpointsConnectorsDestroy( + requestParameters: EndpointsConnectorsDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.endpointsConnectorsDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for endpointsConnectorsList without sending the request + */ + async endpointsConnectorsListRequestOpts( + requestParameters: EndpointsConnectorsListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/endpoints/connectors/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Connector Viewset + */ + async endpointsConnectorsListRaw( + requestParameters: EndpointsConnectorsListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.endpointsConnectorsListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedConnectorListFromJSON(jsonValue), + ); + } + + /** + * Connector Viewset + */ + async endpointsConnectorsList( + requestParameters: EndpointsConnectorsListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.endpointsConnectorsListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for endpointsConnectorsRetrieve without sending the request + */ + async endpointsConnectorsRetrieveRequestOpts( + requestParameters: EndpointsConnectorsRetrieveRequest, + ): Promise { + if (requestParameters["connectorUuid"] == null) { + throw new runtime.RequiredError( + "connectorUuid", + 'Required parameter "connectorUuid" was null or undefined when calling endpointsConnectorsRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/endpoints/connectors/{connector_uuid}/`; + urlPath = urlPath.replace( + `{${"connector_uuid"}}`, + encodeURIComponent(String(requestParameters["connectorUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Connector Viewset + */ + async endpointsConnectorsRetrieveRaw( + requestParameters: EndpointsConnectorsRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.endpointsConnectorsRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => ConnectorFromJSON(jsonValue)); + } + + /** + * Connector Viewset + */ + async endpointsConnectorsRetrieve( + requestParameters: EndpointsConnectorsRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.endpointsConnectorsRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for endpointsConnectorsTypesList without sending the request + */ + async endpointsConnectorsTypesListRequestOpts(): Promise { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/endpoints/connectors/types/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get all creatable types + */ + async endpointsConnectorsTypesListRaw( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.endpointsConnectorsTypesListRequestOpts(); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + jsonValue.map(TypeCreateFromJSON), + ); + } + + /** + * Get all creatable types + */ + async endpointsConnectorsTypesList( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.endpointsConnectorsTypesListRaw(initOverrides); + return await response.value(); + } + + /** + * Creates request options for endpointsConnectorsUsedByList without sending the request + */ + async endpointsConnectorsUsedByListRequestOpts( + requestParameters: EndpointsConnectorsUsedByListRequest, + ): Promise { + if (requestParameters["connectorUuid"] == null) { + throw new runtime.RequiredError( + "connectorUuid", + 'Required parameter "connectorUuid" was null or undefined when calling endpointsConnectorsUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/endpoints/connectors/{connector_uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"connector_uuid"}}`, + encodeURIComponent(String(requestParameters["connectorUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async endpointsConnectorsUsedByListRaw( + requestParameters: EndpointsConnectorsUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.endpointsConnectorsUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async endpointsConnectorsUsedByList( + requestParameters: EndpointsConnectorsUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.endpointsConnectorsUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for endpointsDeviceAccessGroupsCreate without sending the request + */ + async endpointsDeviceAccessGroupsCreateRequestOpts( + requestParameters: EndpointsDeviceAccessGroupsCreateRequest, + ): Promise { + if (requestParameters["deviceAccessGroupRequest"] == null) { + throw new runtime.RequiredError( + "deviceAccessGroupRequest", + 'Required parameter "deviceAccessGroupRequest" was null or undefined when calling endpointsDeviceAccessGroupsCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/endpoints/device_access_groups/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: DeviceAccessGroupRequestToJSON(requestParameters["deviceAccessGroupRequest"]), + }; + } + + /** + * DeviceAccessGroup Viewset + */ + async endpointsDeviceAccessGroupsCreateRaw( + requestParameters: EndpointsDeviceAccessGroupsCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.endpointsDeviceAccessGroupsCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + DeviceAccessGroupFromJSON(jsonValue), + ); + } + + /** + * DeviceAccessGroup Viewset + */ + async endpointsDeviceAccessGroupsCreate( + requestParameters: EndpointsDeviceAccessGroupsCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.endpointsDeviceAccessGroupsCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for endpointsDeviceAccessGroupsDestroy without sending the request + */ + async endpointsDeviceAccessGroupsDestroyRequestOpts( + requestParameters: EndpointsDeviceAccessGroupsDestroyRequest, + ): Promise { + if (requestParameters["pbmUuid"] == null) { + throw new runtime.RequiredError( + "pbmUuid", + 'Required parameter "pbmUuid" was null or undefined when calling endpointsDeviceAccessGroupsDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/endpoints/device_access_groups/{pbm_uuid}/`; + urlPath = urlPath.replace( + `{${"pbm_uuid"}}`, + encodeURIComponent(String(requestParameters["pbmUuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * DeviceAccessGroup Viewset + */ + async endpointsDeviceAccessGroupsDestroyRaw( + requestParameters: EndpointsDeviceAccessGroupsDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.endpointsDeviceAccessGroupsDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * DeviceAccessGroup Viewset + */ + async endpointsDeviceAccessGroupsDestroy( + requestParameters: EndpointsDeviceAccessGroupsDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.endpointsDeviceAccessGroupsDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for endpointsDeviceAccessGroupsList without sending the request + */ + async endpointsDeviceAccessGroupsListRequestOpts( + requestParameters: EndpointsDeviceAccessGroupsListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["pbmUuid"] != null) { + queryParameters["pbm_uuid"] = requestParameters["pbmUuid"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/endpoints/device_access_groups/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * DeviceAccessGroup Viewset + */ + async endpointsDeviceAccessGroupsListRaw( + requestParameters: EndpointsDeviceAccessGroupsListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.endpointsDeviceAccessGroupsListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedDeviceAccessGroupListFromJSON(jsonValue), + ); + } + + /** + * DeviceAccessGroup Viewset + */ + async endpointsDeviceAccessGroupsList( + requestParameters: EndpointsDeviceAccessGroupsListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.endpointsDeviceAccessGroupsListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for endpointsDeviceAccessGroupsPartialUpdate without sending the request + */ + async endpointsDeviceAccessGroupsPartialUpdateRequestOpts( + requestParameters: EndpointsDeviceAccessGroupsPartialUpdateRequest, + ): Promise { + if (requestParameters["pbmUuid"] == null) { + throw new runtime.RequiredError( + "pbmUuid", + 'Required parameter "pbmUuid" was null or undefined when calling endpointsDeviceAccessGroupsPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/endpoints/device_access_groups/{pbm_uuid}/`; + urlPath = urlPath.replace( + `{${"pbm_uuid"}}`, + encodeURIComponent(String(requestParameters["pbmUuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedDeviceAccessGroupRequestToJSON( + requestParameters["patchedDeviceAccessGroupRequest"], + ), + }; + } + + /** + * DeviceAccessGroup Viewset + */ + async endpointsDeviceAccessGroupsPartialUpdateRaw( + requestParameters: EndpointsDeviceAccessGroupsPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.endpointsDeviceAccessGroupsPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + DeviceAccessGroupFromJSON(jsonValue), + ); + } + + /** + * DeviceAccessGroup Viewset + */ + async endpointsDeviceAccessGroupsPartialUpdate( + requestParameters: EndpointsDeviceAccessGroupsPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.endpointsDeviceAccessGroupsPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for endpointsDeviceAccessGroupsRetrieve without sending the request + */ + async endpointsDeviceAccessGroupsRetrieveRequestOpts( + requestParameters: EndpointsDeviceAccessGroupsRetrieveRequest, + ): Promise { + if (requestParameters["pbmUuid"] == null) { + throw new runtime.RequiredError( + "pbmUuid", + 'Required parameter "pbmUuid" was null or undefined when calling endpointsDeviceAccessGroupsRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/endpoints/device_access_groups/{pbm_uuid}/`; + urlPath = urlPath.replace( + `{${"pbm_uuid"}}`, + encodeURIComponent(String(requestParameters["pbmUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * DeviceAccessGroup Viewset + */ + async endpointsDeviceAccessGroupsRetrieveRaw( + requestParameters: EndpointsDeviceAccessGroupsRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.endpointsDeviceAccessGroupsRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + DeviceAccessGroupFromJSON(jsonValue), + ); + } + + /** + * DeviceAccessGroup Viewset + */ + async endpointsDeviceAccessGroupsRetrieve( + requestParameters: EndpointsDeviceAccessGroupsRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.endpointsDeviceAccessGroupsRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for endpointsDeviceAccessGroupsUpdate without sending the request + */ + async endpointsDeviceAccessGroupsUpdateRequestOpts( + requestParameters: EndpointsDeviceAccessGroupsUpdateRequest, + ): Promise { + if (requestParameters["pbmUuid"] == null) { + throw new runtime.RequiredError( + "pbmUuid", + 'Required parameter "pbmUuid" was null or undefined when calling endpointsDeviceAccessGroupsUpdate().', + ); + } + + if (requestParameters["deviceAccessGroupRequest"] == null) { + throw new runtime.RequiredError( + "deviceAccessGroupRequest", + 'Required parameter "deviceAccessGroupRequest" was null or undefined when calling endpointsDeviceAccessGroupsUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/endpoints/device_access_groups/{pbm_uuid}/`; + urlPath = urlPath.replace( + `{${"pbm_uuid"}}`, + encodeURIComponent(String(requestParameters["pbmUuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: DeviceAccessGroupRequestToJSON(requestParameters["deviceAccessGroupRequest"]), + }; + } + + /** + * DeviceAccessGroup Viewset + */ + async endpointsDeviceAccessGroupsUpdateRaw( + requestParameters: EndpointsDeviceAccessGroupsUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.endpointsDeviceAccessGroupsUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + DeviceAccessGroupFromJSON(jsonValue), + ); + } + + /** + * DeviceAccessGroup Viewset + */ + async endpointsDeviceAccessGroupsUpdate( + requestParameters: EndpointsDeviceAccessGroupsUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.endpointsDeviceAccessGroupsUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for endpointsDeviceAccessGroupsUsedByList without sending the request + */ + async endpointsDeviceAccessGroupsUsedByListRequestOpts( + requestParameters: EndpointsDeviceAccessGroupsUsedByListRequest, + ): Promise { + if (requestParameters["pbmUuid"] == null) { + throw new runtime.RequiredError( + "pbmUuid", + 'Required parameter "pbmUuid" was null or undefined when calling endpointsDeviceAccessGroupsUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/endpoints/device_access_groups/{pbm_uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"pbm_uuid"}}`, + encodeURIComponent(String(requestParameters["pbmUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async endpointsDeviceAccessGroupsUsedByListRaw( + requestParameters: EndpointsDeviceAccessGroupsUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.endpointsDeviceAccessGroupsUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async endpointsDeviceAccessGroupsUsedByList( + requestParameters: EndpointsDeviceAccessGroupsUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.endpointsDeviceAccessGroupsUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for endpointsDeviceBindingsCreate without sending the request + */ + async endpointsDeviceBindingsCreateRequestOpts( + requestParameters: EndpointsDeviceBindingsCreateRequest, + ): Promise { + if (requestParameters["deviceUserBindingRequest"] == null) { + throw new runtime.RequiredError( + "deviceUserBindingRequest", + 'Required parameter "deviceUserBindingRequest" was null or undefined when calling endpointsDeviceBindingsCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/endpoints/device_bindings/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: DeviceUserBindingRequestToJSON(requestParameters["deviceUserBindingRequest"]), + }; + } + + /** + * PolicyBinding Viewset + */ + async endpointsDeviceBindingsCreateRaw( + requestParameters: EndpointsDeviceBindingsCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.endpointsDeviceBindingsCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + DeviceUserBindingFromJSON(jsonValue), + ); + } + + /** + * PolicyBinding Viewset + */ + async endpointsDeviceBindingsCreate( + requestParameters: EndpointsDeviceBindingsCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.endpointsDeviceBindingsCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for endpointsDeviceBindingsDestroy without sending the request + */ + async endpointsDeviceBindingsDestroyRequestOpts( + requestParameters: EndpointsDeviceBindingsDestroyRequest, + ): Promise { + if (requestParameters["policyBindingUuid"] == null) { + throw new runtime.RequiredError( + "policyBindingUuid", + 'Required parameter "policyBindingUuid" was null or undefined when calling endpointsDeviceBindingsDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/endpoints/device_bindings/{policy_binding_uuid}/`; + urlPath = urlPath.replace( + `{${"policy_binding_uuid"}}`, + encodeURIComponent(String(requestParameters["policyBindingUuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * PolicyBinding Viewset + */ + async endpointsDeviceBindingsDestroyRaw( + requestParameters: EndpointsDeviceBindingsDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.endpointsDeviceBindingsDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * PolicyBinding Viewset + */ + async endpointsDeviceBindingsDestroy( + requestParameters: EndpointsDeviceBindingsDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.endpointsDeviceBindingsDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for endpointsDeviceBindingsList without sending the request + */ + async endpointsDeviceBindingsListRequestOpts( + requestParameters: EndpointsDeviceBindingsListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["enabled"] != null) { + queryParameters["enabled"] = requestParameters["enabled"]; + } + + if (requestParameters["order"] != null) { + queryParameters["order"] = requestParameters["order"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["policy"] != null) { + queryParameters["policy"] = requestParameters["policy"]; + } + + if (requestParameters["policyIsnull"] != null) { + queryParameters["policy__isnull"] = requestParameters["policyIsnull"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["target"] != null) { + queryParameters["target"] = requestParameters["target"]; + } + + if (requestParameters["targetIn"] != null) { + queryParameters["target_in"] = requestParameters["targetIn"]; + } + + if (requestParameters["timeout"] != null) { + queryParameters["timeout"] = requestParameters["timeout"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/endpoints/device_bindings/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * PolicyBinding Viewset + */ + async endpointsDeviceBindingsListRaw( + requestParameters: EndpointsDeviceBindingsListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.endpointsDeviceBindingsListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedDeviceUserBindingListFromJSON(jsonValue), + ); + } + + /** + * PolicyBinding Viewset + */ + async endpointsDeviceBindingsList( + requestParameters: EndpointsDeviceBindingsListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.endpointsDeviceBindingsListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for endpointsDeviceBindingsPartialUpdate without sending the request + */ + async endpointsDeviceBindingsPartialUpdateRequestOpts( + requestParameters: EndpointsDeviceBindingsPartialUpdateRequest, + ): Promise { + if (requestParameters["policyBindingUuid"] == null) { + throw new runtime.RequiredError( + "policyBindingUuid", + 'Required parameter "policyBindingUuid" was null or undefined when calling endpointsDeviceBindingsPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/endpoints/device_bindings/{policy_binding_uuid}/`; + urlPath = urlPath.replace( + `{${"policy_binding_uuid"}}`, + encodeURIComponent(String(requestParameters["policyBindingUuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedDeviceUserBindingRequestToJSON( + requestParameters["patchedDeviceUserBindingRequest"], + ), + }; + } + + /** + * PolicyBinding Viewset + */ + async endpointsDeviceBindingsPartialUpdateRaw( + requestParameters: EndpointsDeviceBindingsPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.endpointsDeviceBindingsPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + DeviceUserBindingFromJSON(jsonValue), + ); + } + + /** + * PolicyBinding Viewset + */ + async endpointsDeviceBindingsPartialUpdate( + requestParameters: EndpointsDeviceBindingsPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.endpointsDeviceBindingsPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for endpointsDeviceBindingsRetrieve without sending the request + */ + async endpointsDeviceBindingsRetrieveRequestOpts( + requestParameters: EndpointsDeviceBindingsRetrieveRequest, + ): Promise { + if (requestParameters["policyBindingUuid"] == null) { + throw new runtime.RequiredError( + "policyBindingUuid", + 'Required parameter "policyBindingUuid" was null or undefined when calling endpointsDeviceBindingsRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/endpoints/device_bindings/{policy_binding_uuid}/`; + urlPath = urlPath.replace( + `{${"policy_binding_uuid"}}`, + encodeURIComponent(String(requestParameters["policyBindingUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * PolicyBinding Viewset + */ + async endpointsDeviceBindingsRetrieveRaw( + requestParameters: EndpointsDeviceBindingsRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.endpointsDeviceBindingsRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + DeviceUserBindingFromJSON(jsonValue), + ); + } + + /** + * PolicyBinding Viewset + */ + async endpointsDeviceBindingsRetrieve( + requestParameters: EndpointsDeviceBindingsRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.endpointsDeviceBindingsRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for endpointsDeviceBindingsUpdate without sending the request + */ + async endpointsDeviceBindingsUpdateRequestOpts( + requestParameters: EndpointsDeviceBindingsUpdateRequest, + ): Promise { + if (requestParameters["policyBindingUuid"] == null) { + throw new runtime.RequiredError( + "policyBindingUuid", + 'Required parameter "policyBindingUuid" was null or undefined when calling endpointsDeviceBindingsUpdate().', + ); + } + + if (requestParameters["deviceUserBindingRequest"] == null) { + throw new runtime.RequiredError( + "deviceUserBindingRequest", + 'Required parameter "deviceUserBindingRequest" was null or undefined when calling endpointsDeviceBindingsUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/endpoints/device_bindings/{policy_binding_uuid}/`; + urlPath = urlPath.replace( + `{${"policy_binding_uuid"}}`, + encodeURIComponent(String(requestParameters["policyBindingUuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: DeviceUserBindingRequestToJSON(requestParameters["deviceUserBindingRequest"]), + }; + } + + /** + * PolicyBinding Viewset + */ + async endpointsDeviceBindingsUpdateRaw( + requestParameters: EndpointsDeviceBindingsUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.endpointsDeviceBindingsUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + DeviceUserBindingFromJSON(jsonValue), + ); + } + + /** + * PolicyBinding Viewset + */ + async endpointsDeviceBindingsUpdate( + requestParameters: EndpointsDeviceBindingsUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.endpointsDeviceBindingsUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for endpointsDeviceBindingsUsedByList without sending the request + */ + async endpointsDeviceBindingsUsedByListRequestOpts( + requestParameters: EndpointsDeviceBindingsUsedByListRequest, + ): Promise { + if (requestParameters["policyBindingUuid"] == null) { + throw new runtime.RequiredError( + "policyBindingUuid", + 'Required parameter "policyBindingUuid" was null or undefined when calling endpointsDeviceBindingsUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/endpoints/device_bindings/{policy_binding_uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"policy_binding_uuid"}}`, + encodeURIComponent(String(requestParameters["policyBindingUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async endpointsDeviceBindingsUsedByListRaw( + requestParameters: EndpointsDeviceBindingsUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.endpointsDeviceBindingsUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async endpointsDeviceBindingsUsedByList( + requestParameters: EndpointsDeviceBindingsUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.endpointsDeviceBindingsUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for endpointsDevicesDestroy without sending the request + */ + async endpointsDevicesDestroyRequestOpts( + requestParameters: EndpointsDevicesDestroyRequest, + ): Promise { + if (requestParameters["deviceUuid"] == null) { + throw new runtime.RequiredError( + "deviceUuid", + 'Required parameter "deviceUuid" was null or undefined when calling endpointsDevicesDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/endpoints/devices/{device_uuid}/`; + urlPath = urlPath.replace( + `{${"device_uuid"}}`, + encodeURIComponent(String(requestParameters["deviceUuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Mixin to add a used_by endpoint to return a list of all objects using this object + */ + async endpointsDevicesDestroyRaw( + requestParameters: EndpointsDevicesDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.endpointsDevicesDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Mixin to add a used_by endpoint to return a list of all objects using this object + */ + async endpointsDevicesDestroy( + requestParameters: EndpointsDevicesDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.endpointsDevicesDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for endpointsDevicesList without sending the request + */ + async endpointsDevicesListRequestOpts( + requestParameters: EndpointsDevicesListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["identifier"] != null) { + queryParameters["identifier"] = requestParameters["identifier"]; + } + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/endpoints/devices/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Mixin to add a used_by endpoint to return a list of all objects using this object + */ + async endpointsDevicesListRaw( + requestParameters: EndpointsDevicesListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.endpointsDevicesListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedEndpointDeviceListFromJSON(jsonValue), + ); + } + + /** + * Mixin to add a used_by endpoint to return a list of all objects using this object + */ + async endpointsDevicesList( + requestParameters: EndpointsDevicesListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.endpointsDevicesListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for endpointsDevicesPartialUpdate without sending the request + */ + async endpointsDevicesPartialUpdateRequestOpts( + requestParameters: EndpointsDevicesPartialUpdateRequest, + ): Promise { + if (requestParameters["deviceUuid"] == null) { + throw new runtime.RequiredError( + "deviceUuid", + 'Required parameter "deviceUuid" was null or undefined when calling endpointsDevicesPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/endpoints/devices/{device_uuid}/`; + urlPath = urlPath.replace( + `{${"device_uuid"}}`, + encodeURIComponent(String(requestParameters["deviceUuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedEndpointDeviceRequestToJSON( + requestParameters["patchedEndpointDeviceRequest"], + ), + }; + } + + /** + * Mixin to add a used_by endpoint to return a list of all objects using this object + */ + async endpointsDevicesPartialUpdateRaw( + requestParameters: EndpointsDevicesPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.endpointsDevicesPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + EndpointDeviceFromJSON(jsonValue), + ); + } + + /** + * Mixin to add a used_by endpoint to return a list of all objects using this object + */ + async endpointsDevicesPartialUpdate( + requestParameters: EndpointsDevicesPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.endpointsDevicesPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for endpointsDevicesRetrieve without sending the request + */ + async endpointsDevicesRetrieveRequestOpts( + requestParameters: EndpointsDevicesRetrieveRequest, + ): Promise { + if (requestParameters["deviceUuid"] == null) { + throw new runtime.RequiredError( + "deviceUuid", + 'Required parameter "deviceUuid" was null or undefined when calling endpointsDevicesRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/endpoints/devices/{device_uuid}/`; + urlPath = urlPath.replace( + `{${"device_uuid"}}`, + encodeURIComponent(String(requestParameters["deviceUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Mixin to add a used_by endpoint to return a list of all objects using this object + */ + async endpointsDevicesRetrieveRaw( + requestParameters: EndpointsDevicesRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.endpointsDevicesRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + EndpointDeviceDetailsFromJSON(jsonValue), + ); + } + + /** + * Mixin to add a used_by endpoint to return a list of all objects using this object + */ + async endpointsDevicesRetrieve( + requestParameters: EndpointsDevicesRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.endpointsDevicesRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for endpointsDevicesSummaryRetrieve without sending the request + */ + async endpointsDevicesSummaryRetrieveRequestOpts(): Promise { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/endpoints/devices/summary/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Mixin to add a used_by endpoint to return a list of all objects using this object + */ + async endpointsDevicesSummaryRetrieveRaw( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.endpointsDevicesSummaryRetrieveRequestOpts(); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + DeviceSummaryFromJSON(jsonValue), + ); + } + + /** + * Mixin to add a used_by endpoint to return a list of all objects using this object + */ + async endpointsDevicesSummaryRetrieve( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.endpointsDevicesSummaryRetrieveRaw(initOverrides); + return await response.value(); + } + + /** + * Creates request options for endpointsDevicesUpdate without sending the request + */ + async endpointsDevicesUpdateRequestOpts( + requestParameters: EndpointsDevicesUpdateRequest, + ): Promise { + if (requestParameters["deviceUuid"] == null) { + throw new runtime.RequiredError( + "deviceUuid", + 'Required parameter "deviceUuid" was null or undefined when calling endpointsDevicesUpdate().', + ); + } + + if (requestParameters["endpointDeviceRequest"] == null) { + throw new runtime.RequiredError( + "endpointDeviceRequest", + 'Required parameter "endpointDeviceRequest" was null or undefined when calling endpointsDevicesUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/endpoints/devices/{device_uuid}/`; + urlPath = urlPath.replace( + `{${"device_uuid"}}`, + encodeURIComponent(String(requestParameters["deviceUuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: EndpointDeviceRequestToJSON(requestParameters["endpointDeviceRequest"]), + }; + } + + /** + * Mixin to add a used_by endpoint to return a list of all objects using this object + */ + async endpointsDevicesUpdateRaw( + requestParameters: EndpointsDevicesUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.endpointsDevicesUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + EndpointDeviceFromJSON(jsonValue), + ); + } + + /** + * Mixin to add a used_by endpoint to return a list of all objects using this object + */ + async endpointsDevicesUpdate( + requestParameters: EndpointsDevicesUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.endpointsDevicesUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for endpointsDevicesUsedByList without sending the request + */ + async endpointsDevicesUsedByListRequestOpts( + requestParameters: EndpointsDevicesUsedByListRequest, + ): Promise { + if (requestParameters["deviceUuid"] == null) { + throw new runtime.RequiredError( + "deviceUuid", + 'Required parameter "deviceUuid" was null or undefined when calling endpointsDevicesUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/endpoints/devices/{device_uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"device_uuid"}}`, + encodeURIComponent(String(requestParameters["deviceUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async endpointsDevicesUsedByListRaw( + requestParameters: EndpointsDevicesUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.endpointsDevicesUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async endpointsDevicesUsedByList( + requestParameters: EndpointsDevicesUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.endpointsDevicesUsedByListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for endpointsFleetConnectorsCreate without sending the request + */ + async endpointsFleetConnectorsCreateRequestOpts( + requestParameters: EndpointsFleetConnectorsCreateRequest, + ): Promise { + if (requestParameters["fleetConnectorRequest"] == null) { + throw new runtime.RequiredError( + "fleetConnectorRequest", + 'Required parameter "fleetConnectorRequest" was null or undefined when calling endpointsFleetConnectorsCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/endpoints/fleet/connectors/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: FleetConnectorRequestToJSON(requestParameters["fleetConnectorRequest"]), + }; + } + + /** + * FleetConnector Viewset + */ + async endpointsFleetConnectorsCreateRaw( + requestParameters: EndpointsFleetConnectorsCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.endpointsFleetConnectorsCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + FleetConnectorFromJSON(jsonValue), + ); + } + + /** + * FleetConnector Viewset + */ + async endpointsFleetConnectorsCreate( + requestParameters: EndpointsFleetConnectorsCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.endpointsFleetConnectorsCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for endpointsFleetConnectorsDestroy without sending the request + */ + async endpointsFleetConnectorsDestroyRequestOpts( + requestParameters: EndpointsFleetConnectorsDestroyRequest, + ): Promise { + if (requestParameters["connectorUuid"] == null) { + throw new runtime.RequiredError( + "connectorUuid", + 'Required parameter "connectorUuid" was null or undefined when calling endpointsFleetConnectorsDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/endpoints/fleet/connectors/{connector_uuid}/`; + urlPath = urlPath.replace( + `{${"connector_uuid"}}`, + encodeURIComponent(String(requestParameters["connectorUuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * FleetConnector Viewset + */ + async endpointsFleetConnectorsDestroyRaw( + requestParameters: EndpointsFleetConnectorsDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.endpointsFleetConnectorsDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * FleetConnector Viewset + */ + async endpointsFleetConnectorsDestroy( + requestParameters: EndpointsFleetConnectorsDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.endpointsFleetConnectorsDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for endpointsFleetConnectorsList without sending the request + */ + async endpointsFleetConnectorsListRequestOpts( + requestParameters: EndpointsFleetConnectorsListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/endpoints/fleet/connectors/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * FleetConnector Viewset + */ + async endpointsFleetConnectorsListRaw( + requestParameters: EndpointsFleetConnectorsListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.endpointsFleetConnectorsListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedFleetConnectorListFromJSON(jsonValue), + ); + } + + /** + * FleetConnector Viewset + */ + async endpointsFleetConnectorsList( + requestParameters: EndpointsFleetConnectorsListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.endpointsFleetConnectorsListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for endpointsFleetConnectorsPartialUpdate without sending the request + */ + async endpointsFleetConnectorsPartialUpdateRequestOpts( + requestParameters: EndpointsFleetConnectorsPartialUpdateRequest, + ): Promise { + if (requestParameters["connectorUuid"] == null) { + throw new runtime.RequiredError( + "connectorUuid", + 'Required parameter "connectorUuid" was null or undefined when calling endpointsFleetConnectorsPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/endpoints/fleet/connectors/{connector_uuid}/`; + urlPath = urlPath.replace( + `{${"connector_uuid"}}`, + encodeURIComponent(String(requestParameters["connectorUuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedFleetConnectorRequestToJSON( + requestParameters["patchedFleetConnectorRequest"], + ), + }; + } + + /** + * FleetConnector Viewset + */ + async endpointsFleetConnectorsPartialUpdateRaw( + requestParameters: EndpointsFleetConnectorsPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.endpointsFleetConnectorsPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + FleetConnectorFromJSON(jsonValue), + ); + } + + /** + * FleetConnector Viewset + */ + async endpointsFleetConnectorsPartialUpdate( + requestParameters: EndpointsFleetConnectorsPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.endpointsFleetConnectorsPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for endpointsFleetConnectorsRetrieve without sending the request + */ + async endpointsFleetConnectorsRetrieveRequestOpts( + requestParameters: EndpointsFleetConnectorsRetrieveRequest, + ): Promise { + if (requestParameters["connectorUuid"] == null) { + throw new runtime.RequiredError( + "connectorUuid", + 'Required parameter "connectorUuid" was null or undefined when calling endpointsFleetConnectorsRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/endpoints/fleet/connectors/{connector_uuid}/`; + urlPath = urlPath.replace( + `{${"connector_uuid"}}`, + encodeURIComponent(String(requestParameters["connectorUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * FleetConnector Viewset + */ + async endpointsFleetConnectorsRetrieveRaw( + requestParameters: EndpointsFleetConnectorsRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.endpointsFleetConnectorsRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + FleetConnectorFromJSON(jsonValue), + ); + } + + /** + * FleetConnector Viewset + */ + async endpointsFleetConnectorsRetrieve( + requestParameters: EndpointsFleetConnectorsRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.endpointsFleetConnectorsRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for endpointsFleetConnectorsUpdate without sending the request + */ + async endpointsFleetConnectorsUpdateRequestOpts( + requestParameters: EndpointsFleetConnectorsUpdateRequest, + ): Promise { + if (requestParameters["connectorUuid"] == null) { + throw new runtime.RequiredError( + "connectorUuid", + 'Required parameter "connectorUuid" was null or undefined when calling endpointsFleetConnectorsUpdate().', + ); + } + + if (requestParameters["fleetConnectorRequest"] == null) { + throw new runtime.RequiredError( + "fleetConnectorRequest", + 'Required parameter "fleetConnectorRequest" was null or undefined when calling endpointsFleetConnectorsUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/endpoints/fleet/connectors/{connector_uuid}/`; + urlPath = urlPath.replace( + `{${"connector_uuid"}}`, + encodeURIComponent(String(requestParameters["connectorUuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: FleetConnectorRequestToJSON(requestParameters["fleetConnectorRequest"]), + }; + } + + /** + * FleetConnector Viewset + */ + async endpointsFleetConnectorsUpdateRaw( + requestParameters: EndpointsFleetConnectorsUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.endpointsFleetConnectorsUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + FleetConnectorFromJSON(jsonValue), + ); + } + + /** + * FleetConnector Viewset + */ + async endpointsFleetConnectorsUpdate( + requestParameters: EndpointsFleetConnectorsUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.endpointsFleetConnectorsUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for endpointsFleetConnectorsUsedByList without sending the request + */ + async endpointsFleetConnectorsUsedByListRequestOpts( + requestParameters: EndpointsFleetConnectorsUsedByListRequest, + ): Promise { + if (requestParameters["connectorUuid"] == null) { + throw new runtime.RequiredError( + "connectorUuid", + 'Required parameter "connectorUuid" was null or undefined when calling endpointsFleetConnectorsUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/endpoints/fleet/connectors/{connector_uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"connector_uuid"}}`, + encodeURIComponent(String(requestParameters["connectorUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async endpointsFleetConnectorsUsedByListRaw( + requestParameters: EndpointsFleetConnectorsUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.endpointsFleetConnectorsUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async endpointsFleetConnectorsUsedByList( + requestParameters: EndpointsFleetConnectorsUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.endpointsFleetConnectorsUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for endpointsGoogleChromeConnectorsCreate without sending the request + */ + async endpointsGoogleChromeConnectorsCreateRequestOpts( + requestParameters: EndpointsGoogleChromeConnectorsCreateRequest, + ): Promise { + if (requestParameters["googleChromeConnectorRequest"] == null) { + throw new runtime.RequiredError( + "googleChromeConnectorRequest", + 'Required parameter "googleChromeConnectorRequest" was null or undefined when calling endpointsGoogleChromeConnectorsCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/endpoints/google_chrome/connectors/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: GoogleChromeConnectorRequestToJSON( + requestParameters["googleChromeConnectorRequest"], + ), + }; + } + + /** + * GoogleChromeConnector Viewset + */ + async endpointsGoogleChromeConnectorsCreateRaw( + requestParameters: EndpointsGoogleChromeConnectorsCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.endpointsGoogleChromeConnectorsCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + GoogleChromeConnectorFromJSON(jsonValue), + ); + } + + /** + * GoogleChromeConnector Viewset + */ + async endpointsGoogleChromeConnectorsCreate( + requestParameters: EndpointsGoogleChromeConnectorsCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.endpointsGoogleChromeConnectorsCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for endpointsGoogleChromeConnectorsDestroy without sending the request + */ + async endpointsGoogleChromeConnectorsDestroyRequestOpts( + requestParameters: EndpointsGoogleChromeConnectorsDestroyRequest, + ): Promise { + if (requestParameters["connectorUuid"] == null) { + throw new runtime.RequiredError( + "connectorUuid", + 'Required parameter "connectorUuid" was null or undefined when calling endpointsGoogleChromeConnectorsDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/endpoints/google_chrome/connectors/{connector_uuid}/`; + urlPath = urlPath.replace( + `{${"connector_uuid"}}`, + encodeURIComponent(String(requestParameters["connectorUuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * GoogleChromeConnector Viewset + */ + async endpointsGoogleChromeConnectorsDestroyRaw( + requestParameters: EndpointsGoogleChromeConnectorsDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.endpointsGoogleChromeConnectorsDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * GoogleChromeConnector Viewset + */ + async endpointsGoogleChromeConnectorsDestroy( + requestParameters: EndpointsGoogleChromeConnectorsDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.endpointsGoogleChromeConnectorsDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for endpointsGoogleChromeConnectorsList without sending the request + */ + async endpointsGoogleChromeConnectorsListRequestOpts( + requestParameters: EndpointsGoogleChromeConnectorsListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/endpoints/google_chrome/connectors/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * GoogleChromeConnector Viewset + */ + async endpointsGoogleChromeConnectorsListRaw( + requestParameters: EndpointsGoogleChromeConnectorsListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.endpointsGoogleChromeConnectorsListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedGoogleChromeConnectorListFromJSON(jsonValue), + ); + } + + /** + * GoogleChromeConnector Viewset + */ + async endpointsGoogleChromeConnectorsList( + requestParameters: EndpointsGoogleChromeConnectorsListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.endpointsGoogleChromeConnectorsListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for endpointsGoogleChromeConnectorsPartialUpdate without sending the request + */ + async endpointsGoogleChromeConnectorsPartialUpdateRequestOpts( + requestParameters: EndpointsGoogleChromeConnectorsPartialUpdateRequest, + ): Promise { + if (requestParameters["connectorUuid"] == null) { + throw new runtime.RequiredError( + "connectorUuid", + 'Required parameter "connectorUuid" was null or undefined when calling endpointsGoogleChromeConnectorsPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/endpoints/google_chrome/connectors/{connector_uuid}/`; + urlPath = urlPath.replace( + `{${"connector_uuid"}}`, + encodeURIComponent(String(requestParameters["connectorUuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedGoogleChromeConnectorRequestToJSON( + requestParameters["patchedGoogleChromeConnectorRequest"], + ), + }; + } + + /** + * GoogleChromeConnector Viewset + */ + async endpointsGoogleChromeConnectorsPartialUpdateRaw( + requestParameters: EndpointsGoogleChromeConnectorsPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.endpointsGoogleChromeConnectorsPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + GoogleChromeConnectorFromJSON(jsonValue), + ); + } + + /** + * GoogleChromeConnector Viewset + */ + async endpointsGoogleChromeConnectorsPartialUpdate( + requestParameters: EndpointsGoogleChromeConnectorsPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.endpointsGoogleChromeConnectorsPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for endpointsGoogleChromeConnectorsRetrieve without sending the request + */ + async endpointsGoogleChromeConnectorsRetrieveRequestOpts( + requestParameters: EndpointsGoogleChromeConnectorsRetrieveRequest, + ): Promise { + if (requestParameters["connectorUuid"] == null) { + throw new runtime.RequiredError( + "connectorUuid", + 'Required parameter "connectorUuid" was null or undefined when calling endpointsGoogleChromeConnectorsRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/endpoints/google_chrome/connectors/{connector_uuid}/`; + urlPath = urlPath.replace( + `{${"connector_uuid"}}`, + encodeURIComponent(String(requestParameters["connectorUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * GoogleChromeConnector Viewset + */ + async endpointsGoogleChromeConnectorsRetrieveRaw( + requestParameters: EndpointsGoogleChromeConnectorsRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.endpointsGoogleChromeConnectorsRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + GoogleChromeConnectorFromJSON(jsonValue), + ); + } + + /** + * GoogleChromeConnector Viewset + */ + async endpointsGoogleChromeConnectorsRetrieve( + requestParameters: EndpointsGoogleChromeConnectorsRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.endpointsGoogleChromeConnectorsRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for endpointsGoogleChromeConnectorsUpdate without sending the request + */ + async endpointsGoogleChromeConnectorsUpdateRequestOpts( + requestParameters: EndpointsGoogleChromeConnectorsUpdateRequest, + ): Promise { + if (requestParameters["connectorUuid"] == null) { + throw new runtime.RequiredError( + "connectorUuid", + 'Required parameter "connectorUuid" was null or undefined when calling endpointsGoogleChromeConnectorsUpdate().', + ); + } + + if (requestParameters["googleChromeConnectorRequest"] == null) { + throw new runtime.RequiredError( + "googleChromeConnectorRequest", + 'Required parameter "googleChromeConnectorRequest" was null or undefined when calling endpointsGoogleChromeConnectorsUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/endpoints/google_chrome/connectors/{connector_uuid}/`; + urlPath = urlPath.replace( + `{${"connector_uuid"}}`, + encodeURIComponent(String(requestParameters["connectorUuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: GoogleChromeConnectorRequestToJSON( + requestParameters["googleChromeConnectorRequest"], + ), + }; + } + + /** + * GoogleChromeConnector Viewset + */ + async endpointsGoogleChromeConnectorsUpdateRaw( + requestParameters: EndpointsGoogleChromeConnectorsUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.endpointsGoogleChromeConnectorsUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + GoogleChromeConnectorFromJSON(jsonValue), + ); + } + + /** + * GoogleChromeConnector Viewset + */ + async endpointsGoogleChromeConnectorsUpdate( + requestParameters: EndpointsGoogleChromeConnectorsUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.endpointsGoogleChromeConnectorsUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for endpointsGoogleChromeConnectorsUsedByList without sending the request + */ + async endpointsGoogleChromeConnectorsUsedByListRequestOpts( + requestParameters: EndpointsGoogleChromeConnectorsUsedByListRequest, + ): Promise { + if (requestParameters["connectorUuid"] == null) { + throw new runtime.RequiredError( + "connectorUuid", + 'Required parameter "connectorUuid" was null or undefined when calling endpointsGoogleChromeConnectorsUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/endpoints/google_chrome/connectors/{connector_uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"connector_uuid"}}`, + encodeURIComponent(String(requestParameters["connectorUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async endpointsGoogleChromeConnectorsUsedByListRaw( + requestParameters: EndpointsGoogleChromeConnectorsUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.endpointsGoogleChromeConnectorsUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async endpointsGoogleChromeConnectorsUsedByList( + requestParameters: EndpointsGoogleChromeConnectorsUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.endpointsGoogleChromeConnectorsUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } +} diff --git a/packages/client-ts/src/apis/EnterpriseApi.ts b/packages/client-ts/src/apis/EnterpriseApi.ts new file mode 100644 index 0000000000..60a367d2fb --- /dev/null +++ b/packages/client-ts/src/apis/EnterpriseApi.ts @@ -0,0 +1,718 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { + InstallID, + License, + LicenseForecast, + LicenseRequest, + LicenseSummary, + PaginatedLicenseList, + PatchedLicenseRequest, + UsedBy, +} from "../models/index"; +import { + InstallIDFromJSON, + LicenseForecastFromJSON, + LicenseFromJSON, + LicenseRequestToJSON, + LicenseSummaryFromJSON, + PaginatedLicenseListFromJSON, + PatchedLicenseRequestToJSON, + UsedByFromJSON, +} from "../models/index"; +import * as runtime from "../runtime"; + +export interface EnterpriseLicenseCreateRequest { + licenseRequest: LicenseRequest; +} + +export interface EnterpriseLicenseDestroyRequest { + licenseUuid: string; +} + +export interface EnterpriseLicenseListRequest { + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; +} + +export interface EnterpriseLicensePartialUpdateRequest { + licenseUuid: string; + patchedLicenseRequest?: PatchedLicenseRequest; +} + +export interface EnterpriseLicenseRetrieveRequest { + licenseUuid: string; +} + +export interface EnterpriseLicenseSummaryRetrieveRequest { + cached?: boolean; +} + +export interface EnterpriseLicenseUpdateRequest { + licenseUuid: string; + licenseRequest: LicenseRequest; +} + +export interface EnterpriseLicenseUsedByListRequest { + licenseUuid: string; +} + +/** + * + */ +export class EnterpriseApi extends runtime.BaseAPI { + /** + * Creates request options for enterpriseLicenseCreate without sending the request + */ + async enterpriseLicenseCreateRequestOpts( + requestParameters: EnterpriseLicenseCreateRequest, + ): Promise { + if (requestParameters["licenseRequest"] == null) { + throw new runtime.RequiredError( + "licenseRequest", + 'Required parameter "licenseRequest" was null or undefined when calling enterpriseLicenseCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/enterprise/license/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: LicenseRequestToJSON(requestParameters["licenseRequest"]), + }; + } + + /** + * License Viewset + */ + async enterpriseLicenseCreateRaw( + requestParameters: EnterpriseLicenseCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.enterpriseLicenseCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => LicenseFromJSON(jsonValue)); + } + + /** + * License Viewset + */ + async enterpriseLicenseCreate( + requestParameters: EnterpriseLicenseCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.enterpriseLicenseCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for enterpriseLicenseDestroy without sending the request + */ + async enterpriseLicenseDestroyRequestOpts( + requestParameters: EnterpriseLicenseDestroyRequest, + ): Promise { + if (requestParameters["licenseUuid"] == null) { + throw new runtime.RequiredError( + "licenseUuid", + 'Required parameter "licenseUuid" was null or undefined when calling enterpriseLicenseDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/enterprise/license/{license_uuid}/`; + urlPath = urlPath.replace( + `{${"license_uuid"}}`, + encodeURIComponent(String(requestParameters["licenseUuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * License Viewset + */ + async enterpriseLicenseDestroyRaw( + requestParameters: EnterpriseLicenseDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.enterpriseLicenseDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * License Viewset + */ + async enterpriseLicenseDestroy( + requestParameters: EnterpriseLicenseDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.enterpriseLicenseDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for enterpriseLicenseForecastRetrieve without sending the request + */ + async enterpriseLicenseForecastRetrieveRequestOpts(): Promise { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/enterprise/license/forecast/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Forecast how many users will be required in a year + */ + async enterpriseLicenseForecastRetrieveRaw( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.enterpriseLicenseForecastRetrieveRequestOpts(); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + LicenseForecastFromJSON(jsonValue), + ); + } + + /** + * Forecast how many users will be required in a year + */ + async enterpriseLicenseForecastRetrieve( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.enterpriseLicenseForecastRetrieveRaw(initOverrides); + return await response.value(); + } + + /** + * Creates request options for enterpriseLicenseInstallIdRetrieve without sending the request + */ + async enterpriseLicenseInstallIdRetrieveRequestOpts(): Promise { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/enterprise/license/install_id/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get install_id + */ + async enterpriseLicenseInstallIdRetrieveRaw( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.enterpriseLicenseInstallIdRetrieveRequestOpts(); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => InstallIDFromJSON(jsonValue)); + } + + /** + * Get install_id + */ + async enterpriseLicenseInstallIdRetrieve( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.enterpriseLicenseInstallIdRetrieveRaw(initOverrides); + return await response.value(); + } + + /** + * Creates request options for enterpriseLicenseList without sending the request + */ + async enterpriseLicenseListRequestOpts( + requestParameters: EnterpriseLicenseListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/enterprise/license/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * License Viewset + */ + async enterpriseLicenseListRaw( + requestParameters: EnterpriseLicenseListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.enterpriseLicenseListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedLicenseListFromJSON(jsonValue), + ); + } + + /** + * License Viewset + */ + async enterpriseLicenseList( + requestParameters: EnterpriseLicenseListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.enterpriseLicenseListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for enterpriseLicensePartialUpdate without sending the request + */ + async enterpriseLicensePartialUpdateRequestOpts( + requestParameters: EnterpriseLicensePartialUpdateRequest, + ): Promise { + if (requestParameters["licenseUuid"] == null) { + throw new runtime.RequiredError( + "licenseUuid", + 'Required parameter "licenseUuid" was null or undefined when calling enterpriseLicensePartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/enterprise/license/{license_uuid}/`; + urlPath = urlPath.replace( + `{${"license_uuid"}}`, + encodeURIComponent(String(requestParameters["licenseUuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedLicenseRequestToJSON(requestParameters["patchedLicenseRequest"]), + }; + } + + /** + * License Viewset + */ + async enterpriseLicensePartialUpdateRaw( + requestParameters: EnterpriseLicensePartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.enterpriseLicensePartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => LicenseFromJSON(jsonValue)); + } + + /** + * License Viewset + */ + async enterpriseLicensePartialUpdate( + requestParameters: EnterpriseLicensePartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.enterpriseLicensePartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for enterpriseLicenseRetrieve without sending the request + */ + async enterpriseLicenseRetrieveRequestOpts( + requestParameters: EnterpriseLicenseRetrieveRequest, + ): Promise { + if (requestParameters["licenseUuid"] == null) { + throw new runtime.RequiredError( + "licenseUuid", + 'Required parameter "licenseUuid" was null or undefined when calling enterpriseLicenseRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/enterprise/license/{license_uuid}/`; + urlPath = urlPath.replace( + `{${"license_uuid"}}`, + encodeURIComponent(String(requestParameters["licenseUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * License Viewset + */ + async enterpriseLicenseRetrieveRaw( + requestParameters: EnterpriseLicenseRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.enterpriseLicenseRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => LicenseFromJSON(jsonValue)); + } + + /** + * License Viewset + */ + async enterpriseLicenseRetrieve( + requestParameters: EnterpriseLicenseRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.enterpriseLicenseRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for enterpriseLicenseSummaryRetrieve without sending the request + */ + async enterpriseLicenseSummaryRetrieveRequestOpts( + requestParameters: EnterpriseLicenseSummaryRetrieveRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["cached"] != null) { + queryParameters["cached"] = requestParameters["cached"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/enterprise/license/summary/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get the total license status + */ + async enterpriseLicenseSummaryRetrieveRaw( + requestParameters: EnterpriseLicenseSummaryRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.enterpriseLicenseSummaryRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + LicenseSummaryFromJSON(jsonValue), + ); + } + + /** + * Get the total license status + */ + async enterpriseLicenseSummaryRetrieve( + requestParameters: EnterpriseLicenseSummaryRetrieveRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.enterpriseLicenseSummaryRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for enterpriseLicenseUpdate without sending the request + */ + async enterpriseLicenseUpdateRequestOpts( + requestParameters: EnterpriseLicenseUpdateRequest, + ): Promise { + if (requestParameters["licenseUuid"] == null) { + throw new runtime.RequiredError( + "licenseUuid", + 'Required parameter "licenseUuid" was null or undefined when calling enterpriseLicenseUpdate().', + ); + } + + if (requestParameters["licenseRequest"] == null) { + throw new runtime.RequiredError( + "licenseRequest", + 'Required parameter "licenseRequest" was null or undefined when calling enterpriseLicenseUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/enterprise/license/{license_uuid}/`; + urlPath = urlPath.replace( + `{${"license_uuid"}}`, + encodeURIComponent(String(requestParameters["licenseUuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: LicenseRequestToJSON(requestParameters["licenseRequest"]), + }; + } + + /** + * License Viewset + */ + async enterpriseLicenseUpdateRaw( + requestParameters: EnterpriseLicenseUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.enterpriseLicenseUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => LicenseFromJSON(jsonValue)); + } + + /** + * License Viewset + */ + async enterpriseLicenseUpdate( + requestParameters: EnterpriseLicenseUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.enterpriseLicenseUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for enterpriseLicenseUsedByList without sending the request + */ + async enterpriseLicenseUsedByListRequestOpts( + requestParameters: EnterpriseLicenseUsedByListRequest, + ): Promise { + if (requestParameters["licenseUuid"] == null) { + throw new runtime.RequiredError( + "licenseUuid", + 'Required parameter "licenseUuid" was null or undefined when calling enterpriseLicenseUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/enterprise/license/{license_uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"license_uuid"}}`, + encodeURIComponent(String(requestParameters["licenseUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async enterpriseLicenseUsedByListRaw( + requestParameters: EnterpriseLicenseUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.enterpriseLicenseUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async enterpriseLicenseUsedByList( + requestParameters: EnterpriseLicenseUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.enterpriseLicenseUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } +} diff --git a/packages/client-ts/src/apis/EventsApi.ts b/packages/client-ts/src/apis/EventsApi.ts new file mode 100644 index 0000000000..18b8a7de8b --- /dev/null +++ b/packages/client-ts/src/apis/EventsApi.ts @@ -0,0 +1,2691 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { + DataExport, + Event, + EventActions, + EventRequest, + EventStats, + EventTopPerUser, + EventVolume, + Notification, + NotificationRequest, + NotificationRule, + NotificationRuleRequest, + NotificationTransport, + NotificationTransportRequest, + NotificationTransportTest, + PaginatedEventList, + PaginatedNotificationList, + PaginatedNotificationRuleList, + PaginatedNotificationTransportList, + PatchedEventRequest, + PatchedNotificationRequest, + PatchedNotificationRuleRequest, + PatchedNotificationTransportRequest, + SeverityEnum, + TransportModeEnum, + TypeCreate, + UsedBy, +} from "../models/index"; +import { + DataExportFromJSON, + EventFromJSON, + EventRequestToJSON, + EventStatsFromJSON, + EventTopPerUserFromJSON, + EventVolumeFromJSON, + NotificationFromJSON, + NotificationRequestToJSON, + NotificationRuleFromJSON, + NotificationRuleRequestToJSON, + NotificationTransportFromJSON, + NotificationTransportRequestToJSON, + NotificationTransportTestFromJSON, + PaginatedEventListFromJSON, + PaginatedNotificationListFromJSON, + PaginatedNotificationRuleListFromJSON, + PaginatedNotificationTransportListFromJSON, + PatchedEventRequestToJSON, + PatchedNotificationRequestToJSON, + PatchedNotificationRuleRequestToJSON, + PatchedNotificationTransportRequestToJSON, + TypeCreateFromJSON, + UsedByFromJSON, +} from "../models/index"; +import * as runtime from "../runtime"; + +export interface EventsEventsCreateRequest { + eventRequest: EventRequest; +} + +export interface EventsEventsDestroyRequest { + eventUuid: string; +} + +export interface EventsEventsExportCreateRequest { + action?: string; + actions?: Array; + brandName?: string; + clientIp?: string; + contextAuthorizedApp?: string; + contextDevice?: string; + contextModelApp?: string; + contextModelName?: string; + contextModelPk?: string; + ordering?: string; + search?: string; + username?: string; +} + +export interface EventsEventsListRequest { + action?: string; + actions?: Array; + brandName?: string; + clientIp?: string; + contextAuthorizedApp?: string; + contextDevice?: string; + contextModelApp?: string; + contextModelName?: string; + contextModelPk?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; + username?: string; +} + +export interface EventsEventsPartialUpdateRequest { + eventUuid: string; + patchedEventRequest?: PatchedEventRequest; +} + +export interface EventsEventsRetrieveRequest { + eventUuid: string; +} + +export interface EventsEventsStatsRetrieveRequest { + countSteps: Array; + action?: string; + actions?: Array; + brandName?: string; + clientIp?: string; + contextAuthorizedApp?: string; + contextDevice?: string; + contextModelApp?: string; + contextModelName?: string; + contextModelPk?: string; + ordering?: string; + search?: string; + username?: string; +} + +export interface EventsEventsTopPerUserListRequest { + action?: string; + topN?: number; +} + +export interface EventsEventsUpdateRequest { + eventUuid: string; + eventRequest: EventRequest; +} + +export interface EventsEventsVolumeListRequest { + action?: string; + actions?: Array; + brandName?: string; + clientIp?: string; + contextAuthorizedApp?: string; + contextDevice?: string; + contextModelApp?: string; + contextModelName?: string; + contextModelPk?: string; + historyDays?: number; + ordering?: string; + search?: string; + username?: string; +} + +export interface EventsNotificationsDestroyRequest { + uuid: string; +} + +export interface EventsNotificationsListRequest { + body?: string; + created?: Date; + event?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; + seen?: boolean; + severity?: SeverityEnum; + user?: number; +} + +export interface EventsNotificationsPartialUpdateRequest { + uuid: string; + patchedNotificationRequest?: PatchedNotificationRequest; +} + +export interface EventsNotificationsRetrieveRequest { + uuid: string; +} + +export interface EventsNotificationsUpdateRequest { + uuid: string; + notificationRequest?: NotificationRequest; +} + +export interface EventsNotificationsUsedByListRequest { + uuid: string; +} + +export interface EventsRulesCreateRequest { + notificationRuleRequest: NotificationRuleRequest; +} + +export interface EventsRulesDestroyRequest { + pbmUuid: string; +} + +export interface EventsRulesListRequest { + destinationGroupName?: string; + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; + severity?: SeverityEnum; +} + +export interface EventsRulesPartialUpdateRequest { + pbmUuid: string; + patchedNotificationRuleRequest?: PatchedNotificationRuleRequest; +} + +export interface EventsRulesRetrieveRequest { + pbmUuid: string; +} + +export interface EventsRulesUpdateRequest { + pbmUuid: string; + notificationRuleRequest: NotificationRuleRequest; +} + +export interface EventsRulesUsedByListRequest { + pbmUuid: string; +} + +export interface EventsTransportsCreateRequest { + notificationTransportRequest: NotificationTransportRequest; +} + +export interface EventsTransportsDestroyRequest { + uuid: string; +} + +export interface EventsTransportsListRequest { + mode?: TransportModeEnum; + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; + sendOnce?: boolean; + webhookUrl?: string; +} + +export interface EventsTransportsPartialUpdateRequest { + uuid: string; + patchedNotificationTransportRequest?: PatchedNotificationTransportRequest; +} + +export interface EventsTransportsRetrieveRequest { + uuid: string; +} + +export interface EventsTransportsTestCreateRequest { + uuid: string; +} + +export interface EventsTransportsUpdateRequest { + uuid: string; + notificationTransportRequest: NotificationTransportRequest; +} + +export interface EventsTransportsUsedByListRequest { + uuid: string; +} + +/** + * + */ +export class EventsApi extends runtime.BaseAPI { + /** + * Creates request options for eventsEventsActionsList without sending the request + */ + async eventsEventsActionsListRequestOpts(): Promise { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/events/events/actions/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get all actions + */ + async eventsEventsActionsListRaw( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.eventsEventsActionsListRequestOpts(); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + jsonValue.map(TypeCreateFromJSON), + ); + } + + /** + * Get all actions + */ + async eventsEventsActionsList( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.eventsEventsActionsListRaw(initOverrides); + return await response.value(); + } + + /** + * Creates request options for eventsEventsCreate without sending the request + */ + async eventsEventsCreateRequestOpts( + requestParameters: EventsEventsCreateRequest, + ): Promise { + if (requestParameters["eventRequest"] == null) { + throw new runtime.RequiredError( + "eventRequest", + 'Required parameter "eventRequest" was null or undefined when calling eventsEventsCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/events/events/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: EventRequestToJSON(requestParameters["eventRequest"]), + }; + } + + /** + * Event Read-Only Viewset + */ + async eventsEventsCreateRaw( + requestParameters: EventsEventsCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.eventsEventsCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => EventFromJSON(jsonValue)); + } + + /** + * Event Read-Only Viewset + */ + async eventsEventsCreate( + requestParameters: EventsEventsCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.eventsEventsCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for eventsEventsDestroy without sending the request + */ + async eventsEventsDestroyRequestOpts( + requestParameters: EventsEventsDestroyRequest, + ): Promise { + if (requestParameters["eventUuid"] == null) { + throw new runtime.RequiredError( + "eventUuid", + 'Required parameter "eventUuid" was null or undefined when calling eventsEventsDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/events/events/{event_uuid}/`; + urlPath = urlPath.replace( + `{${"event_uuid"}}`, + encodeURIComponent(String(requestParameters["eventUuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Event Read-Only Viewset + */ + async eventsEventsDestroyRaw( + requestParameters: EventsEventsDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.eventsEventsDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Event Read-Only Viewset + */ + async eventsEventsDestroy( + requestParameters: EventsEventsDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.eventsEventsDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for eventsEventsExportCreate without sending the request + */ + async eventsEventsExportCreateRequestOpts( + requestParameters: EventsEventsExportCreateRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["action"] != null) { + queryParameters["action"] = requestParameters["action"]; + } + + if (requestParameters["actions"] != null) { + queryParameters["actions"] = requestParameters["actions"]; + } + + if (requestParameters["brandName"] != null) { + queryParameters["brand_name"] = requestParameters["brandName"]; + } + + if (requestParameters["clientIp"] != null) { + queryParameters["client_ip"] = requestParameters["clientIp"]; + } + + if (requestParameters["contextAuthorizedApp"] != null) { + queryParameters["context_authorized_app"] = requestParameters["contextAuthorizedApp"]; + } + + if (requestParameters["contextDevice"] != null) { + queryParameters["context_device"] = requestParameters["contextDevice"]; + } + + if (requestParameters["contextModelApp"] != null) { + queryParameters["context_model_app"] = requestParameters["contextModelApp"]; + } + + if (requestParameters["contextModelName"] != null) { + queryParameters["context_model_name"] = requestParameters["contextModelName"]; + } + + if (requestParameters["contextModelPk"] != null) { + queryParameters["context_model_pk"] = requestParameters["contextModelPk"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["username"] != null) { + queryParameters["username"] = requestParameters["username"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/events/events/export/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Create a data export for this data type. Note that the export is generated asynchronously: this method returns a `DataExport` object that will initially have `completed=false` as well as the permanent URL to that object in the `Location` header. You can poll that URL until `completed=true`, at which point the `file_url` property will contain a URL to download + */ + async eventsEventsExportCreateRaw( + requestParameters: EventsEventsExportCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.eventsEventsExportCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => DataExportFromJSON(jsonValue)); + } + + /** + * Create a data export for this data type. Note that the export is generated asynchronously: this method returns a `DataExport` object that will initially have `completed=false` as well as the permanent URL to that object in the `Location` header. You can poll that URL until `completed=true`, at which point the `file_url` property will contain a URL to download + */ + async eventsEventsExportCreate( + requestParameters: EventsEventsExportCreateRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.eventsEventsExportCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for eventsEventsList without sending the request + */ + async eventsEventsListRequestOpts( + requestParameters: EventsEventsListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["action"] != null) { + queryParameters["action"] = requestParameters["action"]; + } + + if (requestParameters["actions"] != null) { + queryParameters["actions"] = requestParameters["actions"]; + } + + if (requestParameters["brandName"] != null) { + queryParameters["brand_name"] = requestParameters["brandName"]; + } + + if (requestParameters["clientIp"] != null) { + queryParameters["client_ip"] = requestParameters["clientIp"]; + } + + if (requestParameters["contextAuthorizedApp"] != null) { + queryParameters["context_authorized_app"] = requestParameters["contextAuthorizedApp"]; + } + + if (requestParameters["contextDevice"] != null) { + queryParameters["context_device"] = requestParameters["contextDevice"]; + } + + if (requestParameters["contextModelApp"] != null) { + queryParameters["context_model_app"] = requestParameters["contextModelApp"]; + } + + if (requestParameters["contextModelName"] != null) { + queryParameters["context_model_name"] = requestParameters["contextModelName"]; + } + + if (requestParameters["contextModelPk"] != null) { + queryParameters["context_model_pk"] = requestParameters["contextModelPk"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["username"] != null) { + queryParameters["username"] = requestParameters["username"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/events/events/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Event Read-Only Viewset + */ + async eventsEventsListRaw( + requestParameters: EventsEventsListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.eventsEventsListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedEventListFromJSON(jsonValue), + ); + } + + /** + * Event Read-Only Viewset + */ + async eventsEventsList( + requestParameters: EventsEventsListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.eventsEventsListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for eventsEventsPartialUpdate without sending the request + */ + async eventsEventsPartialUpdateRequestOpts( + requestParameters: EventsEventsPartialUpdateRequest, + ): Promise { + if (requestParameters["eventUuid"] == null) { + throw new runtime.RequiredError( + "eventUuid", + 'Required parameter "eventUuid" was null or undefined when calling eventsEventsPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/events/events/{event_uuid}/`; + urlPath = urlPath.replace( + `{${"event_uuid"}}`, + encodeURIComponent(String(requestParameters["eventUuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedEventRequestToJSON(requestParameters["patchedEventRequest"]), + }; + } + + /** + * Event Read-Only Viewset + */ + async eventsEventsPartialUpdateRaw( + requestParameters: EventsEventsPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.eventsEventsPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => EventFromJSON(jsonValue)); + } + + /** + * Event Read-Only Viewset + */ + async eventsEventsPartialUpdate( + requestParameters: EventsEventsPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.eventsEventsPartialUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for eventsEventsRetrieve without sending the request + */ + async eventsEventsRetrieveRequestOpts( + requestParameters: EventsEventsRetrieveRequest, + ): Promise { + if (requestParameters["eventUuid"] == null) { + throw new runtime.RequiredError( + "eventUuid", + 'Required parameter "eventUuid" was null or undefined when calling eventsEventsRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/events/events/{event_uuid}/`; + urlPath = urlPath.replace( + `{${"event_uuid"}}`, + encodeURIComponent(String(requestParameters["eventUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Event Read-Only Viewset + */ + async eventsEventsRetrieveRaw( + requestParameters: EventsEventsRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.eventsEventsRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => EventFromJSON(jsonValue)); + } + + /** + * Event Read-Only Viewset + */ + async eventsEventsRetrieve( + requestParameters: EventsEventsRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.eventsEventsRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for eventsEventsStatsRetrieve without sending the request + */ + async eventsEventsStatsRetrieveRequestOpts( + requestParameters: EventsEventsStatsRetrieveRequest, + ): Promise { + if (requestParameters["countSteps"] == null) { + throw new runtime.RequiredError( + "countSteps", + 'Required parameter "countSteps" was null or undefined when calling eventsEventsStatsRetrieve().', + ); + } + + const queryParameters: any = {}; + + if (requestParameters["action"] != null) { + queryParameters["action"] = requestParameters["action"]; + } + + if (requestParameters["actions"] != null) { + queryParameters["actions"] = requestParameters["actions"]; + } + + if (requestParameters["brandName"] != null) { + queryParameters["brand_name"] = requestParameters["brandName"]; + } + + if (requestParameters["clientIp"] != null) { + queryParameters["client_ip"] = requestParameters["clientIp"]; + } + + if (requestParameters["contextAuthorizedApp"] != null) { + queryParameters["context_authorized_app"] = requestParameters["contextAuthorizedApp"]; + } + + if (requestParameters["contextDevice"] != null) { + queryParameters["context_device"] = requestParameters["contextDevice"]; + } + + if (requestParameters["contextModelApp"] != null) { + queryParameters["context_model_app"] = requestParameters["contextModelApp"]; + } + + if (requestParameters["contextModelName"] != null) { + queryParameters["context_model_name"] = requestParameters["contextModelName"]; + } + + if (requestParameters["contextModelPk"] != null) { + queryParameters["context_model_pk"] = requestParameters["contextModelPk"]; + } + + if (requestParameters["countSteps"] != null) { + queryParameters["count_steps"] = requestParameters["countSteps"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["username"] != null) { + queryParameters["username"] = requestParameters["username"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/events/events/stats/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get event stats for specified filters and count steps + */ + async eventsEventsStatsRetrieveRaw( + requestParameters: EventsEventsStatsRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.eventsEventsStatsRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => EventStatsFromJSON(jsonValue)); + } + + /** + * Get event stats for specified filters and count steps + */ + async eventsEventsStatsRetrieve( + requestParameters: EventsEventsStatsRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.eventsEventsStatsRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for eventsEventsTopPerUserList without sending the request + */ + async eventsEventsTopPerUserListRequestOpts( + requestParameters: EventsEventsTopPerUserListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["action"] != null) { + queryParameters["action"] = requestParameters["action"]; + } + + if (requestParameters["topN"] != null) { + queryParameters["top_n"] = requestParameters["topN"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/events/events/top_per_user/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get the top_n events grouped by user count + */ + async eventsEventsTopPerUserListRaw( + requestParameters: EventsEventsTopPerUserListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.eventsEventsTopPerUserListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + jsonValue.map(EventTopPerUserFromJSON), + ); + } + + /** + * Get the top_n events grouped by user count + */ + async eventsEventsTopPerUserList( + requestParameters: EventsEventsTopPerUserListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.eventsEventsTopPerUserListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for eventsEventsUpdate without sending the request + */ + async eventsEventsUpdateRequestOpts( + requestParameters: EventsEventsUpdateRequest, + ): Promise { + if (requestParameters["eventUuid"] == null) { + throw new runtime.RequiredError( + "eventUuid", + 'Required parameter "eventUuid" was null or undefined when calling eventsEventsUpdate().', + ); + } + + if (requestParameters["eventRequest"] == null) { + throw new runtime.RequiredError( + "eventRequest", + 'Required parameter "eventRequest" was null or undefined when calling eventsEventsUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/events/events/{event_uuid}/`; + urlPath = urlPath.replace( + `{${"event_uuid"}}`, + encodeURIComponent(String(requestParameters["eventUuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: EventRequestToJSON(requestParameters["eventRequest"]), + }; + } + + /** + * Event Read-Only Viewset + */ + async eventsEventsUpdateRaw( + requestParameters: EventsEventsUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.eventsEventsUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => EventFromJSON(jsonValue)); + } + + /** + * Event Read-Only Viewset + */ + async eventsEventsUpdate( + requestParameters: EventsEventsUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.eventsEventsUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for eventsEventsVolumeList without sending the request + */ + async eventsEventsVolumeListRequestOpts( + requestParameters: EventsEventsVolumeListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["action"] != null) { + queryParameters["action"] = requestParameters["action"]; + } + + if (requestParameters["actions"] != null) { + queryParameters["actions"] = requestParameters["actions"]; + } + + if (requestParameters["brandName"] != null) { + queryParameters["brand_name"] = requestParameters["brandName"]; + } + + if (requestParameters["clientIp"] != null) { + queryParameters["client_ip"] = requestParameters["clientIp"]; + } + + if (requestParameters["contextAuthorizedApp"] != null) { + queryParameters["context_authorized_app"] = requestParameters["contextAuthorizedApp"]; + } + + if (requestParameters["contextDevice"] != null) { + queryParameters["context_device"] = requestParameters["contextDevice"]; + } + + if (requestParameters["contextModelApp"] != null) { + queryParameters["context_model_app"] = requestParameters["contextModelApp"]; + } + + if (requestParameters["contextModelName"] != null) { + queryParameters["context_model_name"] = requestParameters["contextModelName"]; + } + + if (requestParameters["contextModelPk"] != null) { + queryParameters["context_model_pk"] = requestParameters["contextModelPk"]; + } + + if (requestParameters["historyDays"] != null) { + queryParameters["history_days"] = requestParameters["historyDays"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["username"] != null) { + queryParameters["username"] = requestParameters["username"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/events/events/volume/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get event volume for specified filters and timeframe + */ + async eventsEventsVolumeListRaw( + requestParameters: EventsEventsVolumeListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.eventsEventsVolumeListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + jsonValue.map(EventVolumeFromJSON), + ); + } + + /** + * Get event volume for specified filters and timeframe + */ + async eventsEventsVolumeList( + requestParameters: EventsEventsVolumeListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.eventsEventsVolumeListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for eventsNotificationsDestroy without sending the request + */ + async eventsNotificationsDestroyRequestOpts( + requestParameters: EventsNotificationsDestroyRequest, + ): Promise { + if (requestParameters["uuid"] == null) { + throw new runtime.RequiredError( + "uuid", + 'Required parameter "uuid" was null or undefined when calling eventsNotificationsDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/events/notifications/{uuid}/`; + urlPath = urlPath.replace( + `{${"uuid"}}`, + encodeURIComponent(String(requestParameters["uuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Notification Viewset + */ + async eventsNotificationsDestroyRaw( + requestParameters: EventsNotificationsDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.eventsNotificationsDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Notification Viewset + */ + async eventsNotificationsDestroy( + requestParameters: EventsNotificationsDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.eventsNotificationsDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for eventsNotificationsList without sending the request + */ + async eventsNotificationsListRequestOpts( + requestParameters: EventsNotificationsListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["body"] != null) { + queryParameters["body"] = requestParameters["body"]; + } + + if (requestParameters["created"] != null) { + queryParameters["created"] = (requestParameters["created"] as any).toISOString(); + } + + if (requestParameters["event"] != null) { + queryParameters["event"] = requestParameters["event"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["seen"] != null) { + queryParameters["seen"] = requestParameters["seen"]; + } + + if (requestParameters["severity"] != null) { + queryParameters["severity"] = requestParameters["severity"]; + } + + if (requestParameters["user"] != null) { + queryParameters["user"] = requestParameters["user"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/events/notifications/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Notification Viewset + */ + async eventsNotificationsListRaw( + requestParameters: EventsNotificationsListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.eventsNotificationsListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedNotificationListFromJSON(jsonValue), + ); + } + + /** + * Notification Viewset + */ + async eventsNotificationsList( + requestParameters: EventsNotificationsListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.eventsNotificationsListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for eventsNotificationsMarkAllSeenCreate without sending the request + */ + async eventsNotificationsMarkAllSeenCreateRequestOpts(): Promise { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/events/notifications/mark_all_seen/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Mark all the user\'s notifications as seen + */ + async eventsNotificationsMarkAllSeenCreateRaw( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.eventsNotificationsMarkAllSeenCreateRequestOpts(); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Mark all the user\'s notifications as seen + */ + async eventsNotificationsMarkAllSeenCreate( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.eventsNotificationsMarkAllSeenCreateRaw(initOverrides); + } + + /** + * Creates request options for eventsNotificationsPartialUpdate without sending the request + */ + async eventsNotificationsPartialUpdateRequestOpts( + requestParameters: EventsNotificationsPartialUpdateRequest, + ): Promise { + if (requestParameters["uuid"] == null) { + throw new runtime.RequiredError( + "uuid", + 'Required parameter "uuid" was null or undefined when calling eventsNotificationsPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/events/notifications/{uuid}/`; + urlPath = urlPath.replace( + `{${"uuid"}}`, + encodeURIComponent(String(requestParameters["uuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedNotificationRequestToJSON(requestParameters["patchedNotificationRequest"]), + }; + } + + /** + * Notification Viewset + */ + async eventsNotificationsPartialUpdateRaw( + requestParameters: EventsNotificationsPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.eventsNotificationsPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + NotificationFromJSON(jsonValue), + ); + } + + /** + * Notification Viewset + */ + async eventsNotificationsPartialUpdate( + requestParameters: EventsNotificationsPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.eventsNotificationsPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for eventsNotificationsRetrieve without sending the request + */ + async eventsNotificationsRetrieveRequestOpts( + requestParameters: EventsNotificationsRetrieveRequest, + ): Promise { + if (requestParameters["uuid"] == null) { + throw new runtime.RequiredError( + "uuid", + 'Required parameter "uuid" was null or undefined when calling eventsNotificationsRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/events/notifications/{uuid}/`; + urlPath = urlPath.replace( + `{${"uuid"}}`, + encodeURIComponent(String(requestParameters["uuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Notification Viewset + */ + async eventsNotificationsRetrieveRaw( + requestParameters: EventsNotificationsRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.eventsNotificationsRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + NotificationFromJSON(jsonValue), + ); + } + + /** + * Notification Viewset + */ + async eventsNotificationsRetrieve( + requestParameters: EventsNotificationsRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.eventsNotificationsRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for eventsNotificationsUpdate without sending the request + */ + async eventsNotificationsUpdateRequestOpts( + requestParameters: EventsNotificationsUpdateRequest, + ): Promise { + if (requestParameters["uuid"] == null) { + throw new runtime.RequiredError( + "uuid", + 'Required parameter "uuid" was null or undefined when calling eventsNotificationsUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/events/notifications/{uuid}/`; + urlPath = urlPath.replace( + `{${"uuid"}}`, + encodeURIComponent(String(requestParameters["uuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: NotificationRequestToJSON(requestParameters["notificationRequest"]), + }; + } + + /** + * Notification Viewset + */ + async eventsNotificationsUpdateRaw( + requestParameters: EventsNotificationsUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.eventsNotificationsUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + NotificationFromJSON(jsonValue), + ); + } + + /** + * Notification Viewset + */ + async eventsNotificationsUpdate( + requestParameters: EventsNotificationsUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.eventsNotificationsUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for eventsNotificationsUsedByList without sending the request + */ + async eventsNotificationsUsedByListRequestOpts( + requestParameters: EventsNotificationsUsedByListRequest, + ): Promise { + if (requestParameters["uuid"] == null) { + throw new runtime.RequiredError( + "uuid", + 'Required parameter "uuid" was null or undefined when calling eventsNotificationsUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/events/notifications/{uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"uuid"}}`, + encodeURIComponent(String(requestParameters["uuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async eventsNotificationsUsedByListRaw( + requestParameters: EventsNotificationsUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.eventsNotificationsUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async eventsNotificationsUsedByList( + requestParameters: EventsNotificationsUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.eventsNotificationsUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for eventsRulesCreate without sending the request + */ + async eventsRulesCreateRequestOpts( + requestParameters: EventsRulesCreateRequest, + ): Promise { + if (requestParameters["notificationRuleRequest"] == null) { + throw new runtime.RequiredError( + "notificationRuleRequest", + 'Required parameter "notificationRuleRequest" was null or undefined when calling eventsRulesCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/events/rules/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: NotificationRuleRequestToJSON(requestParameters["notificationRuleRequest"]), + }; + } + + /** + * NotificationRule Viewset + */ + async eventsRulesCreateRaw( + requestParameters: EventsRulesCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.eventsRulesCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + NotificationRuleFromJSON(jsonValue), + ); + } + + /** + * NotificationRule Viewset + */ + async eventsRulesCreate( + requestParameters: EventsRulesCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.eventsRulesCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for eventsRulesDestroy without sending the request + */ + async eventsRulesDestroyRequestOpts( + requestParameters: EventsRulesDestroyRequest, + ): Promise { + if (requestParameters["pbmUuid"] == null) { + throw new runtime.RequiredError( + "pbmUuid", + 'Required parameter "pbmUuid" was null or undefined when calling eventsRulesDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/events/rules/{pbm_uuid}/`; + urlPath = urlPath.replace( + `{${"pbm_uuid"}}`, + encodeURIComponent(String(requestParameters["pbmUuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * NotificationRule Viewset + */ + async eventsRulesDestroyRaw( + requestParameters: EventsRulesDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.eventsRulesDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * NotificationRule Viewset + */ + async eventsRulesDestroy( + requestParameters: EventsRulesDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.eventsRulesDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for eventsRulesList without sending the request + */ + async eventsRulesListRequestOpts( + requestParameters: EventsRulesListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["destinationGroupName"] != null) { + queryParameters["destination_group__name"] = requestParameters["destinationGroupName"]; + } + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["severity"] != null) { + queryParameters["severity"] = requestParameters["severity"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/events/rules/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * NotificationRule Viewset + */ + async eventsRulesListRaw( + requestParameters: EventsRulesListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.eventsRulesListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedNotificationRuleListFromJSON(jsonValue), + ); + } + + /** + * NotificationRule Viewset + */ + async eventsRulesList( + requestParameters: EventsRulesListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.eventsRulesListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for eventsRulesPartialUpdate without sending the request + */ + async eventsRulesPartialUpdateRequestOpts( + requestParameters: EventsRulesPartialUpdateRequest, + ): Promise { + if (requestParameters["pbmUuid"] == null) { + throw new runtime.RequiredError( + "pbmUuid", + 'Required parameter "pbmUuid" was null or undefined when calling eventsRulesPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/events/rules/{pbm_uuid}/`; + urlPath = urlPath.replace( + `{${"pbm_uuid"}}`, + encodeURIComponent(String(requestParameters["pbmUuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedNotificationRuleRequestToJSON( + requestParameters["patchedNotificationRuleRequest"], + ), + }; + } + + /** + * NotificationRule Viewset + */ + async eventsRulesPartialUpdateRaw( + requestParameters: EventsRulesPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.eventsRulesPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + NotificationRuleFromJSON(jsonValue), + ); + } + + /** + * NotificationRule Viewset + */ + async eventsRulesPartialUpdate( + requestParameters: EventsRulesPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.eventsRulesPartialUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for eventsRulesRetrieve without sending the request + */ + async eventsRulesRetrieveRequestOpts( + requestParameters: EventsRulesRetrieveRequest, + ): Promise { + if (requestParameters["pbmUuid"] == null) { + throw new runtime.RequiredError( + "pbmUuid", + 'Required parameter "pbmUuid" was null or undefined when calling eventsRulesRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/events/rules/{pbm_uuid}/`; + urlPath = urlPath.replace( + `{${"pbm_uuid"}}`, + encodeURIComponent(String(requestParameters["pbmUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * NotificationRule Viewset + */ + async eventsRulesRetrieveRaw( + requestParameters: EventsRulesRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.eventsRulesRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + NotificationRuleFromJSON(jsonValue), + ); + } + + /** + * NotificationRule Viewset + */ + async eventsRulesRetrieve( + requestParameters: EventsRulesRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.eventsRulesRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for eventsRulesUpdate without sending the request + */ + async eventsRulesUpdateRequestOpts( + requestParameters: EventsRulesUpdateRequest, + ): Promise { + if (requestParameters["pbmUuid"] == null) { + throw new runtime.RequiredError( + "pbmUuid", + 'Required parameter "pbmUuid" was null or undefined when calling eventsRulesUpdate().', + ); + } + + if (requestParameters["notificationRuleRequest"] == null) { + throw new runtime.RequiredError( + "notificationRuleRequest", + 'Required parameter "notificationRuleRequest" was null or undefined when calling eventsRulesUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/events/rules/{pbm_uuid}/`; + urlPath = urlPath.replace( + `{${"pbm_uuid"}}`, + encodeURIComponent(String(requestParameters["pbmUuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: NotificationRuleRequestToJSON(requestParameters["notificationRuleRequest"]), + }; + } + + /** + * NotificationRule Viewset + */ + async eventsRulesUpdateRaw( + requestParameters: EventsRulesUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.eventsRulesUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + NotificationRuleFromJSON(jsonValue), + ); + } + + /** + * NotificationRule Viewset + */ + async eventsRulesUpdate( + requestParameters: EventsRulesUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.eventsRulesUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for eventsRulesUsedByList without sending the request + */ + async eventsRulesUsedByListRequestOpts( + requestParameters: EventsRulesUsedByListRequest, + ): Promise { + if (requestParameters["pbmUuid"] == null) { + throw new runtime.RequiredError( + "pbmUuid", + 'Required parameter "pbmUuid" was null or undefined when calling eventsRulesUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/events/rules/{pbm_uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"pbm_uuid"}}`, + encodeURIComponent(String(requestParameters["pbmUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async eventsRulesUsedByListRaw( + requestParameters: EventsRulesUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.eventsRulesUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async eventsRulesUsedByList( + requestParameters: EventsRulesUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.eventsRulesUsedByListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for eventsTransportsCreate without sending the request + */ + async eventsTransportsCreateRequestOpts( + requestParameters: EventsTransportsCreateRequest, + ): Promise { + if (requestParameters["notificationTransportRequest"] == null) { + throw new runtime.RequiredError( + "notificationTransportRequest", + 'Required parameter "notificationTransportRequest" was null or undefined when calling eventsTransportsCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/events/transports/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: NotificationTransportRequestToJSON( + requestParameters["notificationTransportRequest"], + ), + }; + } + + /** + * NotificationTransport Viewset + */ + async eventsTransportsCreateRaw( + requestParameters: EventsTransportsCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.eventsTransportsCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + NotificationTransportFromJSON(jsonValue), + ); + } + + /** + * NotificationTransport Viewset + */ + async eventsTransportsCreate( + requestParameters: EventsTransportsCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.eventsTransportsCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for eventsTransportsDestroy without sending the request + */ + async eventsTransportsDestroyRequestOpts( + requestParameters: EventsTransportsDestroyRequest, + ): Promise { + if (requestParameters["uuid"] == null) { + throw new runtime.RequiredError( + "uuid", + 'Required parameter "uuid" was null or undefined when calling eventsTransportsDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/events/transports/{uuid}/`; + urlPath = urlPath.replace( + `{${"uuid"}}`, + encodeURIComponent(String(requestParameters["uuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * NotificationTransport Viewset + */ + async eventsTransportsDestroyRaw( + requestParameters: EventsTransportsDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.eventsTransportsDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * NotificationTransport Viewset + */ + async eventsTransportsDestroy( + requestParameters: EventsTransportsDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.eventsTransportsDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for eventsTransportsList without sending the request + */ + async eventsTransportsListRequestOpts( + requestParameters: EventsTransportsListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["mode"] != null) { + queryParameters["mode"] = requestParameters["mode"]; + } + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["sendOnce"] != null) { + queryParameters["send_once"] = requestParameters["sendOnce"]; + } + + if (requestParameters["webhookUrl"] != null) { + queryParameters["webhook_url"] = requestParameters["webhookUrl"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/events/transports/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * NotificationTransport Viewset + */ + async eventsTransportsListRaw( + requestParameters: EventsTransportsListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.eventsTransportsListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedNotificationTransportListFromJSON(jsonValue), + ); + } + + /** + * NotificationTransport Viewset + */ + async eventsTransportsList( + requestParameters: EventsTransportsListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.eventsTransportsListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for eventsTransportsPartialUpdate without sending the request + */ + async eventsTransportsPartialUpdateRequestOpts( + requestParameters: EventsTransportsPartialUpdateRequest, + ): Promise { + if (requestParameters["uuid"] == null) { + throw new runtime.RequiredError( + "uuid", + 'Required parameter "uuid" was null or undefined when calling eventsTransportsPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/events/transports/{uuid}/`; + urlPath = urlPath.replace( + `{${"uuid"}}`, + encodeURIComponent(String(requestParameters["uuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedNotificationTransportRequestToJSON( + requestParameters["patchedNotificationTransportRequest"], + ), + }; + } + + /** + * NotificationTransport Viewset + */ + async eventsTransportsPartialUpdateRaw( + requestParameters: EventsTransportsPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.eventsTransportsPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + NotificationTransportFromJSON(jsonValue), + ); + } + + /** + * NotificationTransport Viewset + */ + async eventsTransportsPartialUpdate( + requestParameters: EventsTransportsPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.eventsTransportsPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for eventsTransportsRetrieve without sending the request + */ + async eventsTransportsRetrieveRequestOpts( + requestParameters: EventsTransportsRetrieveRequest, + ): Promise { + if (requestParameters["uuid"] == null) { + throw new runtime.RequiredError( + "uuid", + 'Required parameter "uuid" was null or undefined when calling eventsTransportsRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/events/transports/{uuid}/`; + urlPath = urlPath.replace( + `{${"uuid"}}`, + encodeURIComponent(String(requestParameters["uuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * NotificationTransport Viewset + */ + async eventsTransportsRetrieveRaw( + requestParameters: EventsTransportsRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.eventsTransportsRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + NotificationTransportFromJSON(jsonValue), + ); + } + + /** + * NotificationTransport Viewset + */ + async eventsTransportsRetrieve( + requestParameters: EventsTransportsRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.eventsTransportsRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for eventsTransportsTestCreate without sending the request + */ + async eventsTransportsTestCreateRequestOpts( + requestParameters: EventsTransportsTestCreateRequest, + ): Promise { + if (requestParameters["uuid"] == null) { + throw new runtime.RequiredError( + "uuid", + 'Required parameter "uuid" was null or undefined when calling eventsTransportsTestCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/events/transports/{uuid}/test/`; + urlPath = urlPath.replace( + `{${"uuid"}}`, + encodeURIComponent(String(requestParameters["uuid"])), + ); + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Send example notification using selected transport. Requires Modify permissions. + */ + async eventsTransportsTestCreateRaw( + requestParameters: EventsTransportsTestCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.eventsTransportsTestCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + NotificationTransportTestFromJSON(jsonValue), + ); + } + + /** + * Send example notification using selected transport. Requires Modify permissions. + */ + async eventsTransportsTestCreate( + requestParameters: EventsTransportsTestCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.eventsTransportsTestCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for eventsTransportsUpdate without sending the request + */ + async eventsTransportsUpdateRequestOpts( + requestParameters: EventsTransportsUpdateRequest, + ): Promise { + if (requestParameters["uuid"] == null) { + throw new runtime.RequiredError( + "uuid", + 'Required parameter "uuid" was null or undefined when calling eventsTransportsUpdate().', + ); + } + + if (requestParameters["notificationTransportRequest"] == null) { + throw new runtime.RequiredError( + "notificationTransportRequest", + 'Required parameter "notificationTransportRequest" was null or undefined when calling eventsTransportsUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/events/transports/{uuid}/`; + urlPath = urlPath.replace( + `{${"uuid"}}`, + encodeURIComponent(String(requestParameters["uuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: NotificationTransportRequestToJSON( + requestParameters["notificationTransportRequest"], + ), + }; + } + + /** + * NotificationTransport Viewset + */ + async eventsTransportsUpdateRaw( + requestParameters: EventsTransportsUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.eventsTransportsUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + NotificationTransportFromJSON(jsonValue), + ); + } + + /** + * NotificationTransport Viewset + */ + async eventsTransportsUpdate( + requestParameters: EventsTransportsUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.eventsTransportsUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for eventsTransportsUsedByList without sending the request + */ + async eventsTransportsUsedByListRequestOpts( + requestParameters: EventsTransportsUsedByListRequest, + ): Promise { + if (requestParameters["uuid"] == null) { + throw new runtime.RequiredError( + "uuid", + 'Required parameter "uuid" was null or undefined when calling eventsTransportsUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/events/transports/{uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"uuid"}}`, + encodeURIComponent(String(requestParameters["uuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async eventsTransportsUsedByListRaw( + requestParameters: EventsTransportsUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.eventsTransportsUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async eventsTransportsUsedByList( + requestParameters: EventsTransportsUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.eventsTransportsUsedByListRaw(requestParameters, initOverrides); + return await response.value(); + } +} diff --git a/packages/client-ts/src/apis/FlowsApi.ts b/packages/client-ts/src/apis/FlowsApi.ts new file mode 100644 index 0000000000..3969f0a5ea --- /dev/null +++ b/packages/client-ts/src/apis/FlowsApi.ts @@ -0,0 +1,1697 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { + Cache, + ChallengeTypes, + DeniedActionEnum, + Flow, + FlowChallengeResponseRequest, + FlowDesignationEnum, + FlowDiagram, + FlowInspection, + FlowRequest, + FlowStageBinding, + FlowStageBindingRequest, + InvalidResponseActionEnum, + Link, + PaginatedFlowList, + PaginatedFlowStageBindingList, + PatchedFlowRequest, + PatchedFlowStageBindingRequest, + PolicyEngineMode, + UsedBy, +} from "../models/index"; +import { + CacheFromJSON, + ChallengeTypesFromJSON, + FlowChallengeResponseRequestToJSON, + FlowDiagramFromJSON, + FlowFromJSON, + FlowInspectionFromJSON, + FlowRequestToJSON, + FlowStageBindingFromJSON, + FlowStageBindingRequestToJSON, + LinkFromJSON, + PaginatedFlowListFromJSON, + PaginatedFlowStageBindingListFromJSON, + PatchedFlowRequestToJSON, + PatchedFlowStageBindingRequestToJSON, + UsedByFromJSON, +} from "../models/index"; +import * as runtime from "../runtime"; + +export interface FlowsBindingsCreateRequest { + flowStageBindingRequest: FlowStageBindingRequest; +} + +export interface FlowsBindingsDestroyRequest { + fsbUuid: string; +} + +export interface FlowsBindingsListRequest { + evaluateOnPlan?: boolean; + fsbUuid?: string; + invalidResponseAction?: InvalidResponseActionEnum; + order?: number; + ordering?: string; + page?: number; + pageSize?: number; + pbmUuid?: string; + policies?: Array; + policyEngineMode?: PolicyEngineMode; + reEvaluatePolicies?: boolean; + search?: string; + stage?: string; + target?: string; +} + +export interface FlowsBindingsPartialUpdateRequest { + fsbUuid: string; + patchedFlowStageBindingRequest?: PatchedFlowStageBindingRequest; +} + +export interface FlowsBindingsRetrieveRequest { + fsbUuid: string; +} + +export interface FlowsBindingsUpdateRequest { + fsbUuid: string; + flowStageBindingRequest: FlowStageBindingRequest; +} + +export interface FlowsBindingsUsedByListRequest { + fsbUuid: string; +} + +export interface FlowsExecutorGetRequest { + flowSlug: string; + query: string; +} + +export interface FlowsExecutorSolveRequest { + flowSlug: string; + query: string; + flowChallengeResponseRequest?: FlowChallengeResponseRequest; +} + +export interface FlowsInspectorGetRequest { + flowSlug: string; +} + +export interface FlowsInstancesCreateRequest { + flowRequest: FlowRequest; +} + +export interface FlowsInstancesDestroyRequest { + slug: string; +} + +export interface FlowsInstancesDiagramRetrieveRequest { + slug: string; +} + +export interface FlowsInstancesExecuteRetrieveRequest { + slug: string; +} + +export interface FlowsInstancesExportRetrieveRequest { + slug: string; +} + +export interface FlowsInstancesListRequest { + deniedAction?: DeniedActionEnum; + designation?: FlowDesignationEnum; + flowUuid?: string; + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; + slug?: string; +} + +export interface FlowsInstancesPartialUpdateRequest { + slug: string; + patchedFlowRequest?: PatchedFlowRequest; +} + +export interface FlowsInstancesRetrieveRequest { + slug: string; +} + +export interface FlowsInstancesUpdateRequest { + slug: string; + flowRequest: FlowRequest; +} + +export interface FlowsInstancesUsedByListRequest { + slug: string; +} + +/** + * + */ +export class FlowsApi extends runtime.BaseAPI { + /** + * Creates request options for flowsBindingsCreate without sending the request + */ + async flowsBindingsCreateRequestOpts( + requestParameters: FlowsBindingsCreateRequest, + ): Promise { + if (requestParameters["flowStageBindingRequest"] == null) { + throw new runtime.RequiredError( + "flowStageBindingRequest", + 'Required parameter "flowStageBindingRequest" was null or undefined when calling flowsBindingsCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/flows/bindings/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: FlowStageBindingRequestToJSON(requestParameters["flowStageBindingRequest"]), + }; + } + + /** + * FlowStageBinding Viewset + */ + async flowsBindingsCreateRaw( + requestParameters: FlowsBindingsCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.flowsBindingsCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + FlowStageBindingFromJSON(jsonValue), + ); + } + + /** + * FlowStageBinding Viewset + */ + async flowsBindingsCreate( + requestParameters: FlowsBindingsCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.flowsBindingsCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for flowsBindingsDestroy without sending the request + */ + async flowsBindingsDestroyRequestOpts( + requestParameters: FlowsBindingsDestroyRequest, + ): Promise { + if (requestParameters["fsbUuid"] == null) { + throw new runtime.RequiredError( + "fsbUuid", + 'Required parameter "fsbUuid" was null or undefined when calling flowsBindingsDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/flows/bindings/{fsb_uuid}/`; + urlPath = urlPath.replace( + `{${"fsb_uuid"}}`, + encodeURIComponent(String(requestParameters["fsbUuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * FlowStageBinding Viewset + */ + async flowsBindingsDestroyRaw( + requestParameters: FlowsBindingsDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.flowsBindingsDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * FlowStageBinding Viewset + */ + async flowsBindingsDestroy( + requestParameters: FlowsBindingsDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.flowsBindingsDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for flowsBindingsList without sending the request + */ + async flowsBindingsListRequestOpts( + requestParameters: FlowsBindingsListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["evaluateOnPlan"] != null) { + queryParameters["evaluate_on_plan"] = requestParameters["evaluateOnPlan"]; + } + + if (requestParameters["fsbUuid"] != null) { + queryParameters["fsb_uuid"] = requestParameters["fsbUuid"]; + } + + if (requestParameters["invalidResponseAction"] != null) { + queryParameters["invalid_response_action"] = requestParameters["invalidResponseAction"]; + } + + if (requestParameters["order"] != null) { + queryParameters["order"] = requestParameters["order"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["pbmUuid"] != null) { + queryParameters["pbm_uuid"] = requestParameters["pbmUuid"]; + } + + if (requestParameters["policies"] != null) { + queryParameters["policies"] = requestParameters["policies"]; + } + + if (requestParameters["policyEngineMode"] != null) { + queryParameters["policy_engine_mode"] = requestParameters["policyEngineMode"]; + } + + if (requestParameters["reEvaluatePolicies"] != null) { + queryParameters["re_evaluate_policies"] = requestParameters["reEvaluatePolicies"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["stage"] != null) { + queryParameters["stage"] = requestParameters["stage"]; + } + + if (requestParameters["target"] != null) { + queryParameters["target"] = requestParameters["target"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/flows/bindings/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * FlowStageBinding Viewset + */ + async flowsBindingsListRaw( + requestParameters: FlowsBindingsListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.flowsBindingsListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedFlowStageBindingListFromJSON(jsonValue), + ); + } + + /** + * FlowStageBinding Viewset + */ + async flowsBindingsList( + requestParameters: FlowsBindingsListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.flowsBindingsListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for flowsBindingsPartialUpdate without sending the request + */ + async flowsBindingsPartialUpdateRequestOpts( + requestParameters: FlowsBindingsPartialUpdateRequest, + ): Promise { + if (requestParameters["fsbUuid"] == null) { + throw new runtime.RequiredError( + "fsbUuid", + 'Required parameter "fsbUuid" was null or undefined when calling flowsBindingsPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/flows/bindings/{fsb_uuid}/`; + urlPath = urlPath.replace( + `{${"fsb_uuid"}}`, + encodeURIComponent(String(requestParameters["fsbUuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedFlowStageBindingRequestToJSON( + requestParameters["patchedFlowStageBindingRequest"], + ), + }; + } + + /** + * FlowStageBinding Viewset + */ + async flowsBindingsPartialUpdateRaw( + requestParameters: FlowsBindingsPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.flowsBindingsPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + FlowStageBindingFromJSON(jsonValue), + ); + } + + /** + * FlowStageBinding Viewset + */ + async flowsBindingsPartialUpdate( + requestParameters: FlowsBindingsPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.flowsBindingsPartialUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for flowsBindingsRetrieve without sending the request + */ + async flowsBindingsRetrieveRequestOpts( + requestParameters: FlowsBindingsRetrieveRequest, + ): Promise { + if (requestParameters["fsbUuid"] == null) { + throw new runtime.RequiredError( + "fsbUuid", + 'Required parameter "fsbUuid" was null or undefined when calling flowsBindingsRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/flows/bindings/{fsb_uuid}/`; + urlPath = urlPath.replace( + `{${"fsb_uuid"}}`, + encodeURIComponent(String(requestParameters["fsbUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * FlowStageBinding Viewset + */ + async flowsBindingsRetrieveRaw( + requestParameters: FlowsBindingsRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.flowsBindingsRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + FlowStageBindingFromJSON(jsonValue), + ); + } + + /** + * FlowStageBinding Viewset + */ + async flowsBindingsRetrieve( + requestParameters: FlowsBindingsRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.flowsBindingsRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for flowsBindingsUpdate without sending the request + */ + async flowsBindingsUpdateRequestOpts( + requestParameters: FlowsBindingsUpdateRequest, + ): Promise { + if (requestParameters["fsbUuid"] == null) { + throw new runtime.RequiredError( + "fsbUuid", + 'Required parameter "fsbUuid" was null or undefined when calling flowsBindingsUpdate().', + ); + } + + if (requestParameters["flowStageBindingRequest"] == null) { + throw new runtime.RequiredError( + "flowStageBindingRequest", + 'Required parameter "flowStageBindingRequest" was null or undefined when calling flowsBindingsUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/flows/bindings/{fsb_uuid}/`; + urlPath = urlPath.replace( + `{${"fsb_uuid"}}`, + encodeURIComponent(String(requestParameters["fsbUuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: FlowStageBindingRequestToJSON(requestParameters["flowStageBindingRequest"]), + }; + } + + /** + * FlowStageBinding Viewset + */ + async flowsBindingsUpdateRaw( + requestParameters: FlowsBindingsUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.flowsBindingsUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + FlowStageBindingFromJSON(jsonValue), + ); + } + + /** + * FlowStageBinding Viewset + */ + async flowsBindingsUpdate( + requestParameters: FlowsBindingsUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.flowsBindingsUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for flowsBindingsUsedByList without sending the request + */ + async flowsBindingsUsedByListRequestOpts( + requestParameters: FlowsBindingsUsedByListRequest, + ): Promise { + if (requestParameters["fsbUuid"] == null) { + throw new runtime.RequiredError( + "fsbUuid", + 'Required parameter "fsbUuid" was null or undefined when calling flowsBindingsUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/flows/bindings/{fsb_uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"fsb_uuid"}}`, + encodeURIComponent(String(requestParameters["fsbUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async flowsBindingsUsedByListRaw( + requestParameters: FlowsBindingsUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.flowsBindingsUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async flowsBindingsUsedByList( + requestParameters: FlowsBindingsUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.flowsBindingsUsedByListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for flowsExecutorGet without sending the request + */ + async flowsExecutorGetRequestOpts( + requestParameters: FlowsExecutorGetRequest, + ): Promise { + if (requestParameters["flowSlug"] == null) { + throw new runtime.RequiredError( + "flowSlug", + 'Required parameter "flowSlug" was null or undefined when calling flowsExecutorGet().', + ); + } + + if (requestParameters["query"] == null) { + throw new runtime.RequiredError( + "query", + 'Required parameter "query" was null or undefined when calling flowsExecutorGet().', + ); + } + + const queryParameters: any = {}; + + if (requestParameters["query"] != null) { + queryParameters["query"] = requestParameters["query"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/flows/executor/{flow_slug}/`; + urlPath = urlPath.replace( + `{${"flow_slug"}}`, + encodeURIComponent(String(requestParameters["flowSlug"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get the next pending challenge from the currently active flow. + */ + async flowsExecutorGetRaw( + requestParameters: FlowsExecutorGetRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.flowsExecutorGetRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + ChallengeTypesFromJSON(jsonValue), + ); + } + + /** + * Get the next pending challenge from the currently active flow. + */ + async flowsExecutorGet( + requestParameters: FlowsExecutorGetRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.flowsExecutorGetRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for flowsExecutorSolve without sending the request + */ + async flowsExecutorSolveRequestOpts( + requestParameters: FlowsExecutorSolveRequest, + ): Promise { + if (requestParameters["flowSlug"] == null) { + throw new runtime.RequiredError( + "flowSlug", + 'Required parameter "flowSlug" was null or undefined when calling flowsExecutorSolve().', + ); + } + + if (requestParameters["query"] == null) { + throw new runtime.RequiredError( + "query", + 'Required parameter "query" was null or undefined when calling flowsExecutorSolve().', + ); + } + + const queryParameters: any = {}; + + if (requestParameters["query"] != null) { + queryParameters["query"] = requestParameters["query"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/flows/executor/{flow_slug}/`; + urlPath = urlPath.replace( + `{${"flow_slug"}}`, + encodeURIComponent(String(requestParameters["flowSlug"])), + ); + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: FlowChallengeResponseRequestToJSON( + requestParameters["flowChallengeResponseRequest"], + ), + }; + } + + /** + * Solve the previously retrieved challenge and advanced to the next stage. + */ + async flowsExecutorSolveRaw( + requestParameters: FlowsExecutorSolveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.flowsExecutorSolveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + ChallengeTypesFromJSON(jsonValue), + ); + } + + /** + * Solve the previously retrieved challenge and advanced to the next stage. + */ + async flowsExecutorSolve( + requestParameters: FlowsExecutorSolveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.flowsExecutorSolveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for flowsInspectorGet without sending the request + */ + async flowsInspectorGetRequestOpts( + requestParameters: FlowsInspectorGetRequest, + ): Promise { + if (requestParameters["flowSlug"] == null) { + throw new runtime.RequiredError( + "flowSlug", + 'Required parameter "flowSlug" was null or undefined when calling flowsInspectorGet().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/flows/inspector/{flow_slug}/`; + urlPath = urlPath.replace( + `{${"flow_slug"}}`, + encodeURIComponent(String(requestParameters["flowSlug"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get current flow state and record it + */ + async flowsInspectorGetRaw( + requestParameters: FlowsInspectorGetRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.flowsInspectorGetRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + FlowInspectionFromJSON(jsonValue), + ); + } + + /** + * Get current flow state and record it + */ + async flowsInspectorGet( + requestParameters: FlowsInspectorGetRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.flowsInspectorGetRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for flowsInstancesCacheClearCreate without sending the request + */ + async flowsInstancesCacheClearCreateRequestOpts(): Promise { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/flows/instances/cache_clear/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Clear flow cache + */ + async flowsInstancesCacheClearCreateRaw( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.flowsInstancesCacheClearCreateRequestOpts(); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Clear flow cache + */ + async flowsInstancesCacheClearCreate( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.flowsInstancesCacheClearCreateRaw(initOverrides); + } + + /** + * Creates request options for flowsInstancesCacheInfoRetrieve without sending the request + */ + async flowsInstancesCacheInfoRetrieveRequestOpts(): Promise { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/flows/instances/cache_info/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Info about cached flows + */ + async flowsInstancesCacheInfoRetrieveRaw( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.flowsInstancesCacheInfoRetrieveRequestOpts(); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => CacheFromJSON(jsonValue)); + } + + /** + * Info about cached flows + */ + async flowsInstancesCacheInfoRetrieve( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.flowsInstancesCacheInfoRetrieveRaw(initOverrides); + return await response.value(); + } + + /** + * Creates request options for flowsInstancesCreate without sending the request + */ + async flowsInstancesCreateRequestOpts( + requestParameters: FlowsInstancesCreateRequest, + ): Promise { + if (requestParameters["flowRequest"] == null) { + throw new runtime.RequiredError( + "flowRequest", + 'Required parameter "flowRequest" was null or undefined when calling flowsInstancesCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/flows/instances/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: FlowRequestToJSON(requestParameters["flowRequest"]), + }; + } + + /** + * Flow Viewset + */ + async flowsInstancesCreateRaw( + requestParameters: FlowsInstancesCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.flowsInstancesCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => FlowFromJSON(jsonValue)); + } + + /** + * Flow Viewset + */ + async flowsInstancesCreate( + requestParameters: FlowsInstancesCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.flowsInstancesCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for flowsInstancesDestroy without sending the request + */ + async flowsInstancesDestroyRequestOpts( + requestParameters: FlowsInstancesDestroyRequest, + ): Promise { + if (requestParameters["slug"] == null) { + throw new runtime.RequiredError( + "slug", + 'Required parameter "slug" was null or undefined when calling flowsInstancesDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/flows/instances/{slug}/`; + urlPath = urlPath.replace( + `{${"slug"}}`, + encodeURIComponent(String(requestParameters["slug"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Flow Viewset + */ + async flowsInstancesDestroyRaw( + requestParameters: FlowsInstancesDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.flowsInstancesDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Flow Viewset + */ + async flowsInstancesDestroy( + requestParameters: FlowsInstancesDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.flowsInstancesDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for flowsInstancesDiagramRetrieve without sending the request + */ + async flowsInstancesDiagramRetrieveRequestOpts( + requestParameters: FlowsInstancesDiagramRetrieveRequest, + ): Promise { + if (requestParameters["slug"] == null) { + throw new runtime.RequiredError( + "slug", + 'Required parameter "slug" was null or undefined when calling flowsInstancesDiagramRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/flows/instances/{slug}/diagram/`; + urlPath = urlPath.replace( + `{${"slug"}}`, + encodeURIComponent(String(requestParameters["slug"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Return diagram for flow with slug `slug`, in the format used by flowchart.js + */ + async flowsInstancesDiagramRetrieveRaw( + requestParameters: FlowsInstancesDiagramRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.flowsInstancesDiagramRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => FlowDiagramFromJSON(jsonValue)); + } + + /** + * Return diagram for flow with slug `slug`, in the format used by flowchart.js + */ + async flowsInstancesDiagramRetrieve( + requestParameters: FlowsInstancesDiagramRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.flowsInstancesDiagramRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for flowsInstancesExecuteRetrieve without sending the request + */ + async flowsInstancesExecuteRetrieveRequestOpts( + requestParameters: FlowsInstancesExecuteRetrieveRequest, + ): Promise { + if (requestParameters["slug"] == null) { + throw new runtime.RequiredError( + "slug", + 'Required parameter "slug" was null or undefined when calling flowsInstancesExecuteRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/flows/instances/{slug}/execute/`; + urlPath = urlPath.replace( + `{${"slug"}}`, + encodeURIComponent(String(requestParameters["slug"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Execute flow for current user + */ + async flowsInstancesExecuteRetrieveRaw( + requestParameters: FlowsInstancesExecuteRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.flowsInstancesExecuteRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => LinkFromJSON(jsonValue)); + } + + /** + * Execute flow for current user + */ + async flowsInstancesExecuteRetrieve( + requestParameters: FlowsInstancesExecuteRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.flowsInstancesExecuteRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for flowsInstancesExportRetrieve without sending the request + */ + async flowsInstancesExportRetrieveRequestOpts( + requestParameters: FlowsInstancesExportRetrieveRequest, + ): Promise { + if (requestParameters["slug"] == null) { + throw new runtime.RequiredError( + "slug", + 'Required parameter "slug" was null or undefined when calling flowsInstancesExportRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/flows/instances/{slug}/export/`; + urlPath = urlPath.replace( + `{${"slug"}}`, + encodeURIComponent(String(requestParameters["slug"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Export flow to .yaml file + */ + async flowsInstancesExportRetrieveRaw( + requestParameters: FlowsInstancesExportRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.flowsInstancesExportRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.BlobApiResponse(response); + } + + /** + * Export flow to .yaml file + */ + async flowsInstancesExportRetrieve( + requestParameters: FlowsInstancesExportRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.flowsInstancesExportRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for flowsInstancesList without sending the request + */ + async flowsInstancesListRequestOpts( + requestParameters: FlowsInstancesListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["deniedAction"] != null) { + queryParameters["denied_action"] = requestParameters["deniedAction"]; + } + + if (requestParameters["designation"] != null) { + queryParameters["designation"] = requestParameters["designation"]; + } + + if (requestParameters["flowUuid"] != null) { + queryParameters["flow_uuid"] = requestParameters["flowUuid"]; + } + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["slug"] != null) { + queryParameters["slug"] = requestParameters["slug"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/flows/instances/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Flow Viewset + */ + async flowsInstancesListRaw( + requestParameters: FlowsInstancesListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.flowsInstancesListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedFlowListFromJSON(jsonValue), + ); + } + + /** + * Flow Viewset + */ + async flowsInstancesList( + requestParameters: FlowsInstancesListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.flowsInstancesListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for flowsInstancesPartialUpdate without sending the request + */ + async flowsInstancesPartialUpdateRequestOpts( + requestParameters: FlowsInstancesPartialUpdateRequest, + ): Promise { + if (requestParameters["slug"] == null) { + throw new runtime.RequiredError( + "slug", + 'Required parameter "slug" was null or undefined when calling flowsInstancesPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/flows/instances/{slug}/`; + urlPath = urlPath.replace( + `{${"slug"}}`, + encodeURIComponent(String(requestParameters["slug"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedFlowRequestToJSON(requestParameters["patchedFlowRequest"]), + }; + } + + /** + * Flow Viewset + */ + async flowsInstancesPartialUpdateRaw( + requestParameters: FlowsInstancesPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.flowsInstancesPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => FlowFromJSON(jsonValue)); + } + + /** + * Flow Viewset + */ + async flowsInstancesPartialUpdate( + requestParameters: FlowsInstancesPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.flowsInstancesPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for flowsInstancesRetrieve without sending the request + */ + async flowsInstancesRetrieveRequestOpts( + requestParameters: FlowsInstancesRetrieveRequest, + ): Promise { + if (requestParameters["slug"] == null) { + throw new runtime.RequiredError( + "slug", + 'Required parameter "slug" was null or undefined when calling flowsInstancesRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/flows/instances/{slug}/`; + urlPath = urlPath.replace( + `{${"slug"}}`, + encodeURIComponent(String(requestParameters["slug"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Flow Viewset + */ + async flowsInstancesRetrieveRaw( + requestParameters: FlowsInstancesRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.flowsInstancesRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => FlowFromJSON(jsonValue)); + } + + /** + * Flow Viewset + */ + async flowsInstancesRetrieve( + requestParameters: FlowsInstancesRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.flowsInstancesRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for flowsInstancesUpdate without sending the request + */ + async flowsInstancesUpdateRequestOpts( + requestParameters: FlowsInstancesUpdateRequest, + ): Promise { + if (requestParameters["slug"] == null) { + throw new runtime.RequiredError( + "slug", + 'Required parameter "slug" was null or undefined when calling flowsInstancesUpdate().', + ); + } + + if (requestParameters["flowRequest"] == null) { + throw new runtime.RequiredError( + "flowRequest", + 'Required parameter "flowRequest" was null or undefined when calling flowsInstancesUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/flows/instances/{slug}/`; + urlPath = urlPath.replace( + `{${"slug"}}`, + encodeURIComponent(String(requestParameters["slug"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: FlowRequestToJSON(requestParameters["flowRequest"]), + }; + } + + /** + * Flow Viewset + */ + async flowsInstancesUpdateRaw( + requestParameters: FlowsInstancesUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.flowsInstancesUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => FlowFromJSON(jsonValue)); + } + + /** + * Flow Viewset + */ + async flowsInstancesUpdate( + requestParameters: FlowsInstancesUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.flowsInstancesUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for flowsInstancesUsedByList without sending the request + */ + async flowsInstancesUsedByListRequestOpts( + requestParameters: FlowsInstancesUsedByListRequest, + ): Promise { + if (requestParameters["slug"] == null) { + throw new runtime.RequiredError( + "slug", + 'Required parameter "slug" was null or undefined when calling flowsInstancesUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/flows/instances/{slug}/used_by/`; + urlPath = urlPath.replace( + `{${"slug"}}`, + encodeURIComponent(String(requestParameters["slug"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async flowsInstancesUsedByListRaw( + requestParameters: FlowsInstancesUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.flowsInstancesUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async flowsInstancesUsedByList( + requestParameters: FlowsInstancesUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.flowsInstancesUsedByListRaw(requestParameters, initOverrides); + return await response.value(); + } +} diff --git a/packages/client-ts/src/apis/LifecycleApi.ts b/packages/client-ts/src/apis/LifecycleApi.ts new file mode 100644 index 0000000000..a301cb9975 --- /dev/null +++ b/packages/client-ts/src/apis/LifecycleApi.ts @@ -0,0 +1,790 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { + LifecycleIteration, + LifecycleIterationRequest, + LifecycleRule, + LifecycleRuleRequest, + PaginatedLifecycleIterationList, + PaginatedLifecycleRuleList, + PatchedLifecycleRuleRequest, + Review, + ReviewRequest, +} from "../models/index"; +import { + LifecycleIterationFromJSON, + LifecycleIterationRequestToJSON, + LifecycleRuleFromJSON, + LifecycleRuleRequestToJSON, + PaginatedLifecycleIterationListFromJSON, + PaginatedLifecycleRuleListFromJSON, + PatchedLifecycleRuleRequestToJSON, + ReviewFromJSON, + ReviewRequestToJSON, +} from "../models/index"; +import * as runtime from "../runtime"; + +export interface LifecycleIterationsCreateRequest { + lifecycleIterationRequest: LifecycleIterationRequest; +} + +export interface LifecycleIterationsListLatestRequest { + contentType: string; + objectId: string; + ordering?: string; + search?: string; + userIsReviewer?: boolean; +} + +export interface LifecycleIterationsListOpenRequest { + ordering?: string; + page?: number; + pageSize?: number; + search?: string; + userIsReviewer?: boolean; +} + +export interface LifecycleReviewsCreateRequest { + reviewRequest: ReviewRequest; +} + +export interface LifecycleRulesCreateRequest { + lifecycleRuleRequest: LifecycleRuleRequest; +} + +export interface LifecycleRulesDestroyRequest { + id: string; +} + +export interface LifecycleRulesListRequest { + contentTypeModel?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; +} + +export interface LifecycleRulesPartialUpdateRequest { + id: string; + patchedLifecycleRuleRequest?: PatchedLifecycleRuleRequest; +} + +export interface LifecycleRulesRetrieveRequest { + id: string; +} + +export interface LifecycleRulesUpdateRequest { + id: string; + lifecycleRuleRequest: LifecycleRuleRequest; +} + +/** + * + */ +export class LifecycleApi extends runtime.BaseAPI { + /** + * Creates request options for lifecycleIterationsCreate without sending the request + */ + async lifecycleIterationsCreateRequestOpts( + requestParameters: LifecycleIterationsCreateRequest, + ): Promise { + if (requestParameters["lifecycleIterationRequest"] == null) { + throw new runtime.RequiredError( + "lifecycleIterationRequest", + 'Required parameter "lifecycleIterationRequest" was null or undefined when calling lifecycleIterationsCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/lifecycle/iterations/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: LifecycleIterationRequestToJSON(requestParameters["lifecycleIterationRequest"]), + }; + } + + /** + * Mixin to validate that a valid enterprise license exists before allowing to save the object + */ + async lifecycleIterationsCreateRaw( + requestParameters: LifecycleIterationsCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.lifecycleIterationsCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + LifecycleIterationFromJSON(jsonValue), + ); + } + + /** + * Mixin to validate that a valid enterprise license exists before allowing to save the object + */ + async lifecycleIterationsCreate( + requestParameters: LifecycleIterationsCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.lifecycleIterationsCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for lifecycleIterationsListLatest without sending the request + */ + async lifecycleIterationsListLatestRequestOpts( + requestParameters: LifecycleIterationsListLatestRequest, + ): Promise { + if (requestParameters["contentType"] == null) { + throw new runtime.RequiredError( + "contentType", + 'Required parameter "contentType" was null or undefined when calling lifecycleIterationsListLatest().', + ); + } + + if (requestParameters["objectId"] == null) { + throw new runtime.RequiredError( + "objectId", + 'Required parameter "objectId" was null or undefined when calling lifecycleIterationsListLatest().', + ); + } + + const queryParameters: any = {}; + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["userIsReviewer"] != null) { + queryParameters["user_is_reviewer"] = requestParameters["userIsReviewer"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/lifecycle/iterations/latest/{content_type}/{object_id}/`; + urlPath = urlPath.replace( + `{${"content_type"}}`, + encodeURIComponent(String(requestParameters["contentType"])), + ); + urlPath = urlPath.replace( + `{${"object_id"}}`, + encodeURIComponent(String(requestParameters["objectId"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Mixin to validate that a valid enterprise license exists before allowing to save the object + */ + async lifecycleIterationsListLatestRaw( + requestParameters: LifecycleIterationsListLatestRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.lifecycleIterationsListLatestRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + jsonValue.map(LifecycleIterationFromJSON), + ); + } + + /** + * Mixin to validate that a valid enterprise license exists before allowing to save the object + */ + async lifecycleIterationsListLatest( + requestParameters: LifecycleIterationsListLatestRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.lifecycleIterationsListLatestRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for lifecycleIterationsListOpen without sending the request + */ + async lifecycleIterationsListOpenRequestOpts( + requestParameters: LifecycleIterationsListOpenRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["userIsReviewer"] != null) { + queryParameters["user_is_reviewer"] = requestParameters["userIsReviewer"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/lifecycle/iterations/open/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Mixin to validate that a valid enterprise license exists before allowing to save the object + */ + async lifecycleIterationsListOpenRaw( + requestParameters: LifecycleIterationsListOpenRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.lifecycleIterationsListOpenRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedLifecycleIterationListFromJSON(jsonValue), + ); + } + + /** + * Mixin to validate that a valid enterprise license exists before allowing to save the object + */ + async lifecycleIterationsListOpen( + requestParameters: LifecycleIterationsListOpenRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.lifecycleIterationsListOpenRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for lifecycleReviewsCreate without sending the request + */ + async lifecycleReviewsCreateRequestOpts( + requestParameters: LifecycleReviewsCreateRequest, + ): Promise { + if (requestParameters["reviewRequest"] == null) { + throw new runtime.RequiredError( + "reviewRequest", + 'Required parameter "reviewRequest" was null or undefined when calling lifecycleReviewsCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/lifecycle/reviews/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: ReviewRequestToJSON(requestParameters["reviewRequest"]), + }; + } + + /** + * Mixin to validate that a valid enterprise license exists before allowing to save the object + */ + async lifecycleReviewsCreateRaw( + requestParameters: LifecycleReviewsCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.lifecycleReviewsCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => ReviewFromJSON(jsonValue)); + } + + /** + * Mixin to validate that a valid enterprise license exists before allowing to save the object + */ + async lifecycleReviewsCreate( + requestParameters: LifecycleReviewsCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.lifecycleReviewsCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for lifecycleRulesCreate without sending the request + */ + async lifecycleRulesCreateRequestOpts( + requestParameters: LifecycleRulesCreateRequest, + ): Promise { + if (requestParameters["lifecycleRuleRequest"] == null) { + throw new runtime.RequiredError( + "lifecycleRuleRequest", + 'Required parameter "lifecycleRuleRequest" was null or undefined when calling lifecycleRulesCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/lifecycle/rules/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: LifecycleRuleRequestToJSON(requestParameters["lifecycleRuleRequest"]), + }; + } + + /** + */ + async lifecycleRulesCreateRaw( + requestParameters: LifecycleRulesCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.lifecycleRulesCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + LifecycleRuleFromJSON(jsonValue), + ); + } + + /** + */ + async lifecycleRulesCreate( + requestParameters: LifecycleRulesCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.lifecycleRulesCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for lifecycleRulesDestroy without sending the request + */ + async lifecycleRulesDestroyRequestOpts( + requestParameters: LifecycleRulesDestroyRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling lifecycleRulesDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/lifecycle/rules/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + */ + async lifecycleRulesDestroyRaw( + requestParameters: LifecycleRulesDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.lifecycleRulesDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + */ + async lifecycleRulesDestroy( + requestParameters: LifecycleRulesDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.lifecycleRulesDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for lifecycleRulesList without sending the request + */ + async lifecycleRulesListRequestOpts( + requestParameters: LifecycleRulesListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["contentTypeModel"] != null) { + queryParameters["content_type__model"] = requestParameters["contentTypeModel"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/lifecycle/rules/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + */ + async lifecycleRulesListRaw( + requestParameters: LifecycleRulesListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.lifecycleRulesListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedLifecycleRuleListFromJSON(jsonValue), + ); + } + + /** + */ + async lifecycleRulesList( + requestParameters: LifecycleRulesListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.lifecycleRulesListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for lifecycleRulesPartialUpdate without sending the request + */ + async lifecycleRulesPartialUpdateRequestOpts( + requestParameters: LifecycleRulesPartialUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling lifecycleRulesPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/lifecycle/rules/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedLifecycleRuleRequestToJSON( + requestParameters["patchedLifecycleRuleRequest"], + ), + }; + } + + /** + */ + async lifecycleRulesPartialUpdateRaw( + requestParameters: LifecycleRulesPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.lifecycleRulesPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + LifecycleRuleFromJSON(jsonValue), + ); + } + + /** + */ + async lifecycleRulesPartialUpdate( + requestParameters: LifecycleRulesPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.lifecycleRulesPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for lifecycleRulesRetrieve without sending the request + */ + async lifecycleRulesRetrieveRequestOpts( + requestParameters: LifecycleRulesRetrieveRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling lifecycleRulesRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/lifecycle/rules/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + */ + async lifecycleRulesRetrieveRaw( + requestParameters: LifecycleRulesRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.lifecycleRulesRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + LifecycleRuleFromJSON(jsonValue), + ); + } + + /** + */ + async lifecycleRulesRetrieve( + requestParameters: LifecycleRulesRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.lifecycleRulesRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for lifecycleRulesUpdate without sending the request + */ + async lifecycleRulesUpdateRequestOpts( + requestParameters: LifecycleRulesUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling lifecycleRulesUpdate().', + ); + } + + if (requestParameters["lifecycleRuleRequest"] == null) { + throw new runtime.RequiredError( + "lifecycleRuleRequest", + 'Required parameter "lifecycleRuleRequest" was null or undefined when calling lifecycleRulesUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/lifecycle/rules/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: LifecycleRuleRequestToJSON(requestParameters["lifecycleRuleRequest"]), + }; + } + + /** + */ + async lifecycleRulesUpdateRaw( + requestParameters: LifecycleRulesUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.lifecycleRulesUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + LifecycleRuleFromJSON(jsonValue), + ); + } + + /** + */ + async lifecycleRulesUpdate( + requestParameters: LifecycleRulesUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.lifecycleRulesUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } +} diff --git a/packages/client-ts/src/apis/ManagedApi.ts b/packages/client-ts/src/apis/ManagedApi.ts new file mode 100644 index 0000000000..c941de9450 --- /dev/null +++ b/packages/client-ts/src/apis/ManagedApi.ts @@ -0,0 +1,780 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { + BlueprintFile, + BlueprintImportResult, + BlueprintInstance, + BlueprintInstanceRequest, + PaginatedBlueprintInstanceList, + PatchedBlueprintInstanceRequest, + UsedBy, +} from "../models/index"; +import { + BlueprintFileFromJSON, + BlueprintImportResultFromJSON, + BlueprintInstanceFromJSON, + BlueprintInstanceRequestToJSON, + PaginatedBlueprintInstanceListFromJSON, + PatchedBlueprintInstanceRequestToJSON, + UsedByFromJSON, +} from "../models/index"; +import * as runtime from "../runtime"; + +export interface ManagedBlueprintsApplyCreateRequest { + instanceUuid: string; +} + +export interface ManagedBlueprintsCreateRequest { + blueprintInstanceRequest: BlueprintInstanceRequest; +} + +export interface ManagedBlueprintsDestroyRequest { + instanceUuid: string; +} + +export interface ManagedBlueprintsImportCreateRequest { + file?: Blob; + path?: string; + context?: string; +} + +export interface ManagedBlueprintsListRequest { + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + path?: string; + search?: string; +} + +export interface ManagedBlueprintsPartialUpdateRequest { + instanceUuid: string; + patchedBlueprintInstanceRequest?: PatchedBlueprintInstanceRequest; +} + +export interface ManagedBlueprintsRetrieveRequest { + instanceUuid: string; +} + +export interface ManagedBlueprintsUpdateRequest { + instanceUuid: string; + blueprintInstanceRequest: BlueprintInstanceRequest; +} + +export interface ManagedBlueprintsUsedByListRequest { + instanceUuid: string; +} + +/** + * + */ +export class ManagedApi extends runtime.BaseAPI { + /** + * Creates request options for managedBlueprintsApplyCreate without sending the request + */ + async managedBlueprintsApplyCreateRequestOpts( + requestParameters: ManagedBlueprintsApplyCreateRequest, + ): Promise { + if (requestParameters["instanceUuid"] == null) { + throw new runtime.RequiredError( + "instanceUuid", + 'Required parameter "instanceUuid" was null or undefined when calling managedBlueprintsApplyCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/managed/blueprints/{instance_uuid}/apply/`; + urlPath = urlPath.replace( + `{${"instance_uuid"}}`, + encodeURIComponent(String(requestParameters["instanceUuid"])), + ); + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Apply a blueprint + */ + async managedBlueprintsApplyCreateRaw( + requestParameters: ManagedBlueprintsApplyCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.managedBlueprintsApplyCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + BlueprintInstanceFromJSON(jsonValue), + ); + } + + /** + * Apply a blueprint + */ + async managedBlueprintsApplyCreate( + requestParameters: ManagedBlueprintsApplyCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.managedBlueprintsApplyCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for managedBlueprintsAvailableList without sending the request + */ + async managedBlueprintsAvailableListRequestOpts(): Promise { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/managed/blueprints/available/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get blueprints + */ + async managedBlueprintsAvailableListRaw( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.managedBlueprintsAvailableListRequestOpts(); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + jsonValue.map(BlueprintFileFromJSON), + ); + } + + /** + * Get blueprints + */ + async managedBlueprintsAvailableList( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.managedBlueprintsAvailableListRaw(initOverrides); + return await response.value(); + } + + /** + * Creates request options for managedBlueprintsCreate without sending the request + */ + async managedBlueprintsCreateRequestOpts( + requestParameters: ManagedBlueprintsCreateRequest, + ): Promise { + if (requestParameters["blueprintInstanceRequest"] == null) { + throw new runtime.RequiredError( + "blueprintInstanceRequest", + 'Required parameter "blueprintInstanceRequest" was null or undefined when calling managedBlueprintsCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/managed/blueprints/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: BlueprintInstanceRequestToJSON(requestParameters["blueprintInstanceRequest"]), + }; + } + + /** + * Blueprint instances + */ + async managedBlueprintsCreateRaw( + requestParameters: ManagedBlueprintsCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.managedBlueprintsCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + BlueprintInstanceFromJSON(jsonValue), + ); + } + + /** + * Blueprint instances + */ + async managedBlueprintsCreate( + requestParameters: ManagedBlueprintsCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.managedBlueprintsCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for managedBlueprintsDestroy without sending the request + */ + async managedBlueprintsDestroyRequestOpts( + requestParameters: ManagedBlueprintsDestroyRequest, + ): Promise { + if (requestParameters["instanceUuid"] == null) { + throw new runtime.RequiredError( + "instanceUuid", + 'Required parameter "instanceUuid" was null or undefined when calling managedBlueprintsDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/managed/blueprints/{instance_uuid}/`; + urlPath = urlPath.replace( + `{${"instance_uuid"}}`, + encodeURIComponent(String(requestParameters["instanceUuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Blueprint instances + */ + async managedBlueprintsDestroyRaw( + requestParameters: ManagedBlueprintsDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.managedBlueprintsDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Blueprint instances + */ + async managedBlueprintsDestroy( + requestParameters: ManagedBlueprintsDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.managedBlueprintsDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for managedBlueprintsImportCreate without sending the request + */ + async managedBlueprintsImportCreateRequestOpts( + requestParameters: ManagedBlueprintsImportCreateRequest, + ): Promise { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + const consumes: runtime.Consume[] = [{ contentType: "multipart/form-data" }]; + // @ts-ignore: canConsumeForm may be unused + const canConsumeForm = runtime.canConsumeForm(consumes); + + let formParams: { append(param: string, value: any): any }; + let useForm = false; + // use FormData to transmit files using content-type "multipart/form-data" + useForm = canConsumeForm; + if (useForm) { + formParams = new FormData(); + } else { + formParams = new URLSearchParams(); + } + + if (requestParameters["file"] != null) { + formParams.append("file", requestParameters["file"] as any); + } + + if (requestParameters["path"] != null) { + formParams.append("path", requestParameters["path"] as any); + } + + if (requestParameters["context"] != null) { + formParams.append("context", requestParameters["context"] as any); + } + + let urlPath = `/managed/blueprints/import/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: formParams, + }; + } + + /** + * Import blueprint from .yaml file and apply it once, without creating an instance + */ + async managedBlueprintsImportCreateRaw( + requestParameters: ManagedBlueprintsImportCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.managedBlueprintsImportCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + BlueprintImportResultFromJSON(jsonValue), + ); + } + + /** + * Import blueprint from .yaml file and apply it once, without creating an instance + */ + async managedBlueprintsImportCreate( + requestParameters: ManagedBlueprintsImportCreateRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.managedBlueprintsImportCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for managedBlueprintsList without sending the request + */ + async managedBlueprintsListRequestOpts( + requestParameters: ManagedBlueprintsListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["path"] != null) { + queryParameters["path"] = requestParameters["path"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/managed/blueprints/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Blueprint instances + */ + async managedBlueprintsListRaw( + requestParameters: ManagedBlueprintsListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.managedBlueprintsListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedBlueprintInstanceListFromJSON(jsonValue), + ); + } + + /** + * Blueprint instances + */ + async managedBlueprintsList( + requestParameters: ManagedBlueprintsListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.managedBlueprintsListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for managedBlueprintsPartialUpdate without sending the request + */ + async managedBlueprintsPartialUpdateRequestOpts( + requestParameters: ManagedBlueprintsPartialUpdateRequest, + ): Promise { + if (requestParameters["instanceUuid"] == null) { + throw new runtime.RequiredError( + "instanceUuid", + 'Required parameter "instanceUuid" was null or undefined when calling managedBlueprintsPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/managed/blueprints/{instance_uuid}/`; + urlPath = urlPath.replace( + `{${"instance_uuid"}}`, + encodeURIComponent(String(requestParameters["instanceUuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedBlueprintInstanceRequestToJSON( + requestParameters["patchedBlueprintInstanceRequest"], + ), + }; + } + + /** + * Blueprint instances + */ + async managedBlueprintsPartialUpdateRaw( + requestParameters: ManagedBlueprintsPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.managedBlueprintsPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + BlueprintInstanceFromJSON(jsonValue), + ); + } + + /** + * Blueprint instances + */ + async managedBlueprintsPartialUpdate( + requestParameters: ManagedBlueprintsPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.managedBlueprintsPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for managedBlueprintsRetrieve without sending the request + */ + async managedBlueprintsRetrieveRequestOpts( + requestParameters: ManagedBlueprintsRetrieveRequest, + ): Promise { + if (requestParameters["instanceUuid"] == null) { + throw new runtime.RequiredError( + "instanceUuid", + 'Required parameter "instanceUuid" was null or undefined when calling managedBlueprintsRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/managed/blueprints/{instance_uuid}/`; + urlPath = urlPath.replace( + `{${"instance_uuid"}}`, + encodeURIComponent(String(requestParameters["instanceUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Blueprint instances + */ + async managedBlueprintsRetrieveRaw( + requestParameters: ManagedBlueprintsRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.managedBlueprintsRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + BlueprintInstanceFromJSON(jsonValue), + ); + } + + /** + * Blueprint instances + */ + async managedBlueprintsRetrieve( + requestParameters: ManagedBlueprintsRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.managedBlueprintsRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for managedBlueprintsUpdate without sending the request + */ + async managedBlueprintsUpdateRequestOpts( + requestParameters: ManagedBlueprintsUpdateRequest, + ): Promise { + if (requestParameters["instanceUuid"] == null) { + throw new runtime.RequiredError( + "instanceUuid", + 'Required parameter "instanceUuid" was null or undefined when calling managedBlueprintsUpdate().', + ); + } + + if (requestParameters["blueprintInstanceRequest"] == null) { + throw new runtime.RequiredError( + "blueprintInstanceRequest", + 'Required parameter "blueprintInstanceRequest" was null or undefined when calling managedBlueprintsUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/managed/blueprints/{instance_uuid}/`; + urlPath = urlPath.replace( + `{${"instance_uuid"}}`, + encodeURIComponent(String(requestParameters["instanceUuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: BlueprintInstanceRequestToJSON(requestParameters["blueprintInstanceRequest"]), + }; + } + + /** + * Blueprint instances + */ + async managedBlueprintsUpdateRaw( + requestParameters: ManagedBlueprintsUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.managedBlueprintsUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + BlueprintInstanceFromJSON(jsonValue), + ); + } + + /** + * Blueprint instances + */ + async managedBlueprintsUpdate( + requestParameters: ManagedBlueprintsUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.managedBlueprintsUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for managedBlueprintsUsedByList without sending the request + */ + async managedBlueprintsUsedByListRequestOpts( + requestParameters: ManagedBlueprintsUsedByListRequest, + ): Promise { + if (requestParameters["instanceUuid"] == null) { + throw new runtime.RequiredError( + "instanceUuid", + 'Required parameter "instanceUuid" was null or undefined when calling managedBlueprintsUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/managed/blueprints/{instance_uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"instance_uuid"}}`, + encodeURIComponent(String(requestParameters["instanceUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async managedBlueprintsUsedByListRaw( + requestParameters: ManagedBlueprintsUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.managedBlueprintsUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async managedBlueprintsUsedByList( + requestParameters: ManagedBlueprintsUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.managedBlueprintsUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } +} diff --git a/packages/client-ts/src/apis/Oauth2Api.ts b/packages/client-ts/src/apis/Oauth2Api.ts new file mode 100644 index 0000000000..fed335528d --- /dev/null +++ b/packages/client-ts/src/apis/Oauth2Api.ts @@ -0,0 +1,906 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { + ExpiringBaseGrantModel, + PaginatedExpiringBaseGrantModelList, + PaginatedTokenModelList, + TokenModel, + UsedBy, +} from "../models/index"; +import { + ExpiringBaseGrantModelFromJSON, + PaginatedExpiringBaseGrantModelListFromJSON, + PaginatedTokenModelListFromJSON, + TokenModelFromJSON, + UsedByFromJSON, +} from "../models/index"; +import * as runtime from "../runtime"; + +export interface Oauth2AccessTokensDestroyRequest { + id: number; +} + +export interface Oauth2AccessTokensListRequest { + ordering?: string; + page?: number; + pageSize?: number; + provider?: number; + search?: string; + user?: number; +} + +export interface Oauth2AccessTokensRetrieveRequest { + id: number; +} + +export interface Oauth2AccessTokensUsedByListRequest { + id: number; +} + +export interface Oauth2AuthorizationCodesDestroyRequest { + id: number; +} + +export interface Oauth2AuthorizationCodesListRequest { + ordering?: string; + page?: number; + pageSize?: number; + provider?: number; + search?: string; + user?: number; +} + +export interface Oauth2AuthorizationCodesRetrieveRequest { + id: number; +} + +export interface Oauth2AuthorizationCodesUsedByListRequest { + id: number; +} + +export interface Oauth2RefreshTokensDestroyRequest { + id: number; +} + +export interface Oauth2RefreshTokensListRequest { + ordering?: string; + page?: number; + pageSize?: number; + provider?: number; + search?: string; + user?: number; +} + +export interface Oauth2RefreshTokensRetrieveRequest { + id: number; +} + +export interface Oauth2RefreshTokensUsedByListRequest { + id: number; +} + +/** + * + */ +export class Oauth2Api extends runtime.BaseAPI { + /** + * Creates request options for oauth2AccessTokensDestroy without sending the request + */ + async oauth2AccessTokensDestroyRequestOpts( + requestParameters: Oauth2AccessTokensDestroyRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling oauth2AccessTokensDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/oauth2/access_tokens/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * AccessToken Viewset + */ + async oauth2AccessTokensDestroyRaw( + requestParameters: Oauth2AccessTokensDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.oauth2AccessTokensDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * AccessToken Viewset + */ + async oauth2AccessTokensDestroy( + requestParameters: Oauth2AccessTokensDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.oauth2AccessTokensDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for oauth2AccessTokensList without sending the request + */ + async oauth2AccessTokensListRequestOpts( + requestParameters: Oauth2AccessTokensListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["provider"] != null) { + queryParameters["provider"] = requestParameters["provider"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["user"] != null) { + queryParameters["user"] = requestParameters["user"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/oauth2/access_tokens/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * AccessToken Viewset + */ + async oauth2AccessTokensListRaw( + requestParameters: Oauth2AccessTokensListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.oauth2AccessTokensListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedTokenModelListFromJSON(jsonValue), + ); + } + + /** + * AccessToken Viewset + */ + async oauth2AccessTokensList( + requestParameters: Oauth2AccessTokensListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.oauth2AccessTokensListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for oauth2AccessTokensRetrieve without sending the request + */ + async oauth2AccessTokensRetrieveRequestOpts( + requestParameters: Oauth2AccessTokensRetrieveRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling oauth2AccessTokensRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/oauth2/access_tokens/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * AccessToken Viewset + */ + async oauth2AccessTokensRetrieveRaw( + requestParameters: Oauth2AccessTokensRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.oauth2AccessTokensRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => TokenModelFromJSON(jsonValue)); + } + + /** + * AccessToken Viewset + */ + async oauth2AccessTokensRetrieve( + requestParameters: Oauth2AccessTokensRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.oauth2AccessTokensRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for oauth2AccessTokensUsedByList without sending the request + */ + async oauth2AccessTokensUsedByListRequestOpts( + requestParameters: Oauth2AccessTokensUsedByListRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling oauth2AccessTokensUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/oauth2/access_tokens/{id}/used_by/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async oauth2AccessTokensUsedByListRaw( + requestParameters: Oauth2AccessTokensUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.oauth2AccessTokensUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async oauth2AccessTokensUsedByList( + requestParameters: Oauth2AccessTokensUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.oauth2AccessTokensUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for oauth2AuthorizationCodesDestroy without sending the request + */ + async oauth2AuthorizationCodesDestroyRequestOpts( + requestParameters: Oauth2AuthorizationCodesDestroyRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling oauth2AuthorizationCodesDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/oauth2/authorization_codes/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * AuthorizationCode Viewset + */ + async oauth2AuthorizationCodesDestroyRaw( + requestParameters: Oauth2AuthorizationCodesDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.oauth2AuthorizationCodesDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * AuthorizationCode Viewset + */ + async oauth2AuthorizationCodesDestroy( + requestParameters: Oauth2AuthorizationCodesDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.oauth2AuthorizationCodesDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for oauth2AuthorizationCodesList without sending the request + */ + async oauth2AuthorizationCodesListRequestOpts( + requestParameters: Oauth2AuthorizationCodesListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["provider"] != null) { + queryParameters["provider"] = requestParameters["provider"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["user"] != null) { + queryParameters["user"] = requestParameters["user"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/oauth2/authorization_codes/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * AuthorizationCode Viewset + */ + async oauth2AuthorizationCodesListRaw( + requestParameters: Oauth2AuthorizationCodesListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.oauth2AuthorizationCodesListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedExpiringBaseGrantModelListFromJSON(jsonValue), + ); + } + + /** + * AuthorizationCode Viewset + */ + async oauth2AuthorizationCodesList( + requestParameters: Oauth2AuthorizationCodesListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.oauth2AuthorizationCodesListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for oauth2AuthorizationCodesRetrieve without sending the request + */ + async oauth2AuthorizationCodesRetrieveRequestOpts( + requestParameters: Oauth2AuthorizationCodesRetrieveRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling oauth2AuthorizationCodesRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/oauth2/authorization_codes/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * AuthorizationCode Viewset + */ + async oauth2AuthorizationCodesRetrieveRaw( + requestParameters: Oauth2AuthorizationCodesRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.oauth2AuthorizationCodesRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + ExpiringBaseGrantModelFromJSON(jsonValue), + ); + } + + /** + * AuthorizationCode Viewset + */ + async oauth2AuthorizationCodesRetrieve( + requestParameters: Oauth2AuthorizationCodesRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.oauth2AuthorizationCodesRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for oauth2AuthorizationCodesUsedByList without sending the request + */ + async oauth2AuthorizationCodesUsedByListRequestOpts( + requestParameters: Oauth2AuthorizationCodesUsedByListRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling oauth2AuthorizationCodesUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/oauth2/authorization_codes/{id}/used_by/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async oauth2AuthorizationCodesUsedByListRaw( + requestParameters: Oauth2AuthorizationCodesUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.oauth2AuthorizationCodesUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async oauth2AuthorizationCodesUsedByList( + requestParameters: Oauth2AuthorizationCodesUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.oauth2AuthorizationCodesUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for oauth2RefreshTokensDestroy without sending the request + */ + async oauth2RefreshTokensDestroyRequestOpts( + requestParameters: Oauth2RefreshTokensDestroyRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling oauth2RefreshTokensDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/oauth2/refresh_tokens/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * RefreshToken Viewset + */ + async oauth2RefreshTokensDestroyRaw( + requestParameters: Oauth2RefreshTokensDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.oauth2RefreshTokensDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * RefreshToken Viewset + */ + async oauth2RefreshTokensDestroy( + requestParameters: Oauth2RefreshTokensDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.oauth2RefreshTokensDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for oauth2RefreshTokensList without sending the request + */ + async oauth2RefreshTokensListRequestOpts( + requestParameters: Oauth2RefreshTokensListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["provider"] != null) { + queryParameters["provider"] = requestParameters["provider"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["user"] != null) { + queryParameters["user"] = requestParameters["user"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/oauth2/refresh_tokens/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * RefreshToken Viewset + */ + async oauth2RefreshTokensListRaw( + requestParameters: Oauth2RefreshTokensListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.oauth2RefreshTokensListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedTokenModelListFromJSON(jsonValue), + ); + } + + /** + * RefreshToken Viewset + */ + async oauth2RefreshTokensList( + requestParameters: Oauth2RefreshTokensListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.oauth2RefreshTokensListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for oauth2RefreshTokensRetrieve without sending the request + */ + async oauth2RefreshTokensRetrieveRequestOpts( + requestParameters: Oauth2RefreshTokensRetrieveRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling oauth2RefreshTokensRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/oauth2/refresh_tokens/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * RefreshToken Viewset + */ + async oauth2RefreshTokensRetrieveRaw( + requestParameters: Oauth2RefreshTokensRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.oauth2RefreshTokensRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => TokenModelFromJSON(jsonValue)); + } + + /** + * RefreshToken Viewset + */ + async oauth2RefreshTokensRetrieve( + requestParameters: Oauth2RefreshTokensRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.oauth2RefreshTokensRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for oauth2RefreshTokensUsedByList without sending the request + */ + async oauth2RefreshTokensUsedByListRequestOpts( + requestParameters: Oauth2RefreshTokensUsedByListRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling oauth2RefreshTokensUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/oauth2/refresh_tokens/{id}/used_by/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async oauth2RefreshTokensUsedByListRaw( + requestParameters: Oauth2RefreshTokensUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.oauth2RefreshTokensUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async oauth2RefreshTokensUsedByList( + requestParameters: Oauth2RefreshTokensUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.oauth2RefreshTokensUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } +} diff --git a/packages/client-ts/src/apis/OutpostsApi.ts b/packages/client-ts/src/apis/OutpostsApi.ts new file mode 100644 index 0000000000..b8a9dd1a41 --- /dev/null +++ b/packages/client-ts/src/apis/OutpostsApi.ts @@ -0,0 +1,2728 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { + DockerServiceConnection, + DockerServiceConnectionRequest, + KubernetesServiceConnection, + KubernetesServiceConnectionRequest, + LDAPCheckAccess, + Outpost, + OutpostDefaultConfig, + OutpostHealth, + OutpostRequest, + PaginatedDockerServiceConnectionList, + PaginatedKubernetesServiceConnectionList, + PaginatedLDAPOutpostConfigList, + PaginatedOutpostList, + PaginatedProxyOutpostConfigList, + PaginatedRadiusOutpostConfigList, + PaginatedServiceConnectionList, + PatchedDockerServiceConnectionRequest, + PatchedKubernetesServiceConnectionRequest, + PatchedOutpostRequest, + RadiusCheckAccess, + ServiceConnection, + ServiceConnectionState, + TypeCreate, + UsedBy, +} from "../models/index"; +import { + DockerServiceConnectionFromJSON, + DockerServiceConnectionRequestToJSON, + KubernetesServiceConnectionFromJSON, + KubernetesServiceConnectionRequestToJSON, + LDAPCheckAccessFromJSON, + OutpostDefaultConfigFromJSON, + OutpostFromJSON, + OutpostHealthFromJSON, + OutpostRequestToJSON, + PaginatedDockerServiceConnectionListFromJSON, + PaginatedKubernetesServiceConnectionListFromJSON, + PaginatedLDAPOutpostConfigListFromJSON, + PaginatedOutpostListFromJSON, + PaginatedProxyOutpostConfigListFromJSON, + PaginatedRadiusOutpostConfigListFromJSON, + PaginatedServiceConnectionListFromJSON, + PatchedDockerServiceConnectionRequestToJSON, + PatchedKubernetesServiceConnectionRequestToJSON, + PatchedOutpostRequestToJSON, + RadiusCheckAccessFromJSON, + ServiceConnectionFromJSON, + ServiceConnectionStateFromJSON, + TypeCreateFromJSON, + UsedByFromJSON, +} from "../models/index"; +import * as runtime from "../runtime"; + +export interface OutpostsInstancesCreateRequest { + outpostRequest: OutpostRequest; +} + +export interface OutpostsInstancesDestroyRequest { + uuid: string; +} + +export interface OutpostsInstancesHealthListRequest { + uuid: string; + managedIcontains?: string; + managedIexact?: string; + nameIcontains?: string; + nameIexact?: string; + ordering?: string; + providersIsnull?: boolean; + providersByPk?: Array; + search?: string; + serviceConnectionNameIcontains?: string; + serviceConnectionNameIexact?: string; +} + +export interface OutpostsInstancesListRequest { + managedIcontains?: string; + managedIexact?: string; + nameIcontains?: string; + nameIexact?: string; + ordering?: string; + page?: number; + pageSize?: number; + providersIsnull?: boolean; + providersByPk?: Array; + search?: string; + serviceConnectionNameIcontains?: string; + serviceConnectionNameIexact?: string; +} + +export interface OutpostsInstancesPartialUpdateRequest { + uuid: string; + patchedOutpostRequest?: PatchedOutpostRequest; +} + +export interface OutpostsInstancesRetrieveRequest { + uuid: string; +} + +export interface OutpostsInstancesUpdateRequest { + uuid: string; + outpostRequest: OutpostRequest; +} + +export interface OutpostsInstancesUsedByListRequest { + uuid: string; +} + +export interface OutpostsLdapAccessCheckRequest { + id: number; + appSlug?: string; +} + +export interface OutpostsLdapListRequest { + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; +} + +export interface OutpostsProxyListRequest { + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; +} + +export interface OutpostsRadiusAccessCheckRequest { + id: number; + appSlug?: string; +} + +export interface OutpostsRadiusListRequest { + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; +} + +export interface OutpostsServiceConnectionsAllDestroyRequest { + uuid: string; +} + +export interface OutpostsServiceConnectionsAllListRequest { + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; +} + +export interface OutpostsServiceConnectionsAllRetrieveRequest { + uuid: string; +} + +export interface OutpostsServiceConnectionsAllStateRetrieveRequest { + uuid: string; +} + +export interface OutpostsServiceConnectionsAllUsedByListRequest { + uuid: string; +} + +export interface OutpostsServiceConnectionsDockerCreateRequest { + dockerServiceConnectionRequest: DockerServiceConnectionRequest; +} + +export interface OutpostsServiceConnectionsDockerDestroyRequest { + uuid: string; +} + +export interface OutpostsServiceConnectionsDockerListRequest { + local?: boolean; + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; + tlsAuthentication?: string; + tlsVerification?: string; + url?: string; +} + +export interface OutpostsServiceConnectionsDockerPartialUpdateRequest { + uuid: string; + patchedDockerServiceConnectionRequest?: PatchedDockerServiceConnectionRequest; +} + +export interface OutpostsServiceConnectionsDockerRetrieveRequest { + uuid: string; +} + +export interface OutpostsServiceConnectionsDockerUpdateRequest { + uuid: string; + dockerServiceConnectionRequest: DockerServiceConnectionRequest; +} + +export interface OutpostsServiceConnectionsDockerUsedByListRequest { + uuid: string; +} + +export interface OutpostsServiceConnectionsKubernetesCreateRequest { + kubernetesServiceConnectionRequest: KubernetesServiceConnectionRequest; +} + +export interface OutpostsServiceConnectionsKubernetesDestroyRequest { + uuid: string; +} + +export interface OutpostsServiceConnectionsKubernetesListRequest { + local?: boolean; + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; +} + +export interface OutpostsServiceConnectionsKubernetesPartialUpdateRequest { + uuid: string; + patchedKubernetesServiceConnectionRequest?: PatchedKubernetesServiceConnectionRequest; +} + +export interface OutpostsServiceConnectionsKubernetesRetrieveRequest { + uuid: string; +} + +export interface OutpostsServiceConnectionsKubernetesUpdateRequest { + uuid: string; + kubernetesServiceConnectionRequest: KubernetesServiceConnectionRequest; +} + +export interface OutpostsServiceConnectionsKubernetesUsedByListRequest { + uuid: string; +} + +/** + * + */ +export class OutpostsApi extends runtime.BaseAPI { + /** + * Creates request options for outpostsInstancesCreate without sending the request + */ + async outpostsInstancesCreateRequestOpts( + requestParameters: OutpostsInstancesCreateRequest, + ): Promise { + if (requestParameters["outpostRequest"] == null) { + throw new runtime.RequiredError( + "outpostRequest", + 'Required parameter "outpostRequest" was null or undefined when calling outpostsInstancesCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/outposts/instances/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: OutpostRequestToJSON(requestParameters["outpostRequest"]), + }; + } + + /** + * Outpost Viewset + */ + async outpostsInstancesCreateRaw( + requestParameters: OutpostsInstancesCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.outpostsInstancesCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => OutpostFromJSON(jsonValue)); + } + + /** + * Outpost Viewset + */ + async outpostsInstancesCreate( + requestParameters: OutpostsInstancesCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.outpostsInstancesCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for outpostsInstancesDefaultSettingsRetrieve without sending the request + */ + async outpostsInstancesDefaultSettingsRetrieveRequestOpts(): Promise { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/outposts/instances/default_settings/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Global default outpost config + */ + async outpostsInstancesDefaultSettingsRetrieveRaw( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.outpostsInstancesDefaultSettingsRetrieveRequestOpts(); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + OutpostDefaultConfigFromJSON(jsonValue), + ); + } + + /** + * Global default outpost config + */ + async outpostsInstancesDefaultSettingsRetrieve( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.outpostsInstancesDefaultSettingsRetrieveRaw(initOverrides); + return await response.value(); + } + + /** + * Creates request options for outpostsInstancesDestroy without sending the request + */ + async outpostsInstancesDestroyRequestOpts( + requestParameters: OutpostsInstancesDestroyRequest, + ): Promise { + if (requestParameters["uuid"] == null) { + throw new runtime.RequiredError( + "uuid", + 'Required parameter "uuid" was null or undefined when calling outpostsInstancesDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/outposts/instances/{uuid}/`; + urlPath = urlPath.replace( + `{${"uuid"}}`, + encodeURIComponent(String(requestParameters["uuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Outpost Viewset + */ + async outpostsInstancesDestroyRaw( + requestParameters: OutpostsInstancesDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.outpostsInstancesDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Outpost Viewset + */ + async outpostsInstancesDestroy( + requestParameters: OutpostsInstancesDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.outpostsInstancesDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for outpostsInstancesHealthList without sending the request + */ + async outpostsInstancesHealthListRequestOpts( + requestParameters: OutpostsInstancesHealthListRequest, + ): Promise { + if (requestParameters["uuid"] == null) { + throw new runtime.RequiredError( + "uuid", + 'Required parameter "uuid" was null or undefined when calling outpostsInstancesHealthList().', + ); + } + + const queryParameters: any = {}; + + if (requestParameters["managedIcontains"] != null) { + queryParameters["managed__icontains"] = requestParameters["managedIcontains"]; + } + + if (requestParameters["managedIexact"] != null) { + queryParameters["managed__iexact"] = requestParameters["managedIexact"]; + } + + if (requestParameters["nameIcontains"] != null) { + queryParameters["name__icontains"] = requestParameters["nameIcontains"]; + } + + if (requestParameters["nameIexact"] != null) { + queryParameters["name__iexact"] = requestParameters["nameIexact"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["providersIsnull"] != null) { + queryParameters["providers__isnull"] = requestParameters["providersIsnull"]; + } + + if (requestParameters["providersByPk"] != null) { + queryParameters["providers_by_pk"] = requestParameters["providersByPk"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["serviceConnectionNameIcontains"] != null) { + queryParameters["service_connection__name__icontains"] = + requestParameters["serviceConnectionNameIcontains"]; + } + + if (requestParameters["serviceConnectionNameIexact"] != null) { + queryParameters["service_connection__name__iexact"] = + requestParameters["serviceConnectionNameIexact"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/outposts/instances/{uuid}/health/`; + urlPath = urlPath.replace( + `{${"uuid"}}`, + encodeURIComponent(String(requestParameters["uuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get outposts current health + */ + async outpostsInstancesHealthListRaw( + requestParameters: OutpostsInstancesHealthListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.outpostsInstancesHealthListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + jsonValue.map(OutpostHealthFromJSON), + ); + } + + /** + * Get outposts current health + */ + async outpostsInstancesHealthList( + requestParameters: OutpostsInstancesHealthListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.outpostsInstancesHealthListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for outpostsInstancesList without sending the request + */ + async outpostsInstancesListRequestOpts( + requestParameters: OutpostsInstancesListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["managedIcontains"] != null) { + queryParameters["managed__icontains"] = requestParameters["managedIcontains"]; + } + + if (requestParameters["managedIexact"] != null) { + queryParameters["managed__iexact"] = requestParameters["managedIexact"]; + } + + if (requestParameters["nameIcontains"] != null) { + queryParameters["name__icontains"] = requestParameters["nameIcontains"]; + } + + if (requestParameters["nameIexact"] != null) { + queryParameters["name__iexact"] = requestParameters["nameIexact"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["providersIsnull"] != null) { + queryParameters["providers__isnull"] = requestParameters["providersIsnull"]; + } + + if (requestParameters["providersByPk"] != null) { + queryParameters["providers_by_pk"] = requestParameters["providersByPk"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["serviceConnectionNameIcontains"] != null) { + queryParameters["service_connection__name__icontains"] = + requestParameters["serviceConnectionNameIcontains"]; + } + + if (requestParameters["serviceConnectionNameIexact"] != null) { + queryParameters["service_connection__name__iexact"] = + requestParameters["serviceConnectionNameIexact"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/outposts/instances/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Outpost Viewset + */ + async outpostsInstancesListRaw( + requestParameters: OutpostsInstancesListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.outpostsInstancesListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedOutpostListFromJSON(jsonValue), + ); + } + + /** + * Outpost Viewset + */ + async outpostsInstancesList( + requestParameters: OutpostsInstancesListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.outpostsInstancesListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for outpostsInstancesPartialUpdate without sending the request + */ + async outpostsInstancesPartialUpdateRequestOpts( + requestParameters: OutpostsInstancesPartialUpdateRequest, + ): Promise { + if (requestParameters["uuid"] == null) { + throw new runtime.RequiredError( + "uuid", + 'Required parameter "uuid" was null or undefined when calling outpostsInstancesPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/outposts/instances/{uuid}/`; + urlPath = urlPath.replace( + `{${"uuid"}}`, + encodeURIComponent(String(requestParameters["uuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedOutpostRequestToJSON(requestParameters["patchedOutpostRequest"]), + }; + } + + /** + * Outpost Viewset + */ + async outpostsInstancesPartialUpdateRaw( + requestParameters: OutpostsInstancesPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.outpostsInstancesPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => OutpostFromJSON(jsonValue)); + } + + /** + * Outpost Viewset + */ + async outpostsInstancesPartialUpdate( + requestParameters: OutpostsInstancesPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.outpostsInstancesPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for outpostsInstancesRetrieve without sending the request + */ + async outpostsInstancesRetrieveRequestOpts( + requestParameters: OutpostsInstancesRetrieveRequest, + ): Promise { + if (requestParameters["uuid"] == null) { + throw new runtime.RequiredError( + "uuid", + 'Required parameter "uuid" was null or undefined when calling outpostsInstancesRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/outposts/instances/{uuid}/`; + urlPath = urlPath.replace( + `{${"uuid"}}`, + encodeURIComponent(String(requestParameters["uuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Outpost Viewset + */ + async outpostsInstancesRetrieveRaw( + requestParameters: OutpostsInstancesRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.outpostsInstancesRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => OutpostFromJSON(jsonValue)); + } + + /** + * Outpost Viewset + */ + async outpostsInstancesRetrieve( + requestParameters: OutpostsInstancesRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.outpostsInstancesRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for outpostsInstancesUpdate without sending the request + */ + async outpostsInstancesUpdateRequestOpts( + requestParameters: OutpostsInstancesUpdateRequest, + ): Promise { + if (requestParameters["uuid"] == null) { + throw new runtime.RequiredError( + "uuid", + 'Required parameter "uuid" was null or undefined when calling outpostsInstancesUpdate().', + ); + } + + if (requestParameters["outpostRequest"] == null) { + throw new runtime.RequiredError( + "outpostRequest", + 'Required parameter "outpostRequest" was null or undefined when calling outpostsInstancesUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/outposts/instances/{uuid}/`; + urlPath = urlPath.replace( + `{${"uuid"}}`, + encodeURIComponent(String(requestParameters["uuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: OutpostRequestToJSON(requestParameters["outpostRequest"]), + }; + } + + /** + * Outpost Viewset + */ + async outpostsInstancesUpdateRaw( + requestParameters: OutpostsInstancesUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.outpostsInstancesUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => OutpostFromJSON(jsonValue)); + } + + /** + * Outpost Viewset + */ + async outpostsInstancesUpdate( + requestParameters: OutpostsInstancesUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.outpostsInstancesUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for outpostsInstancesUsedByList without sending the request + */ + async outpostsInstancesUsedByListRequestOpts( + requestParameters: OutpostsInstancesUsedByListRequest, + ): Promise { + if (requestParameters["uuid"] == null) { + throw new runtime.RequiredError( + "uuid", + 'Required parameter "uuid" was null or undefined when calling outpostsInstancesUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/outposts/instances/{uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"uuid"}}`, + encodeURIComponent(String(requestParameters["uuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async outpostsInstancesUsedByListRaw( + requestParameters: OutpostsInstancesUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.outpostsInstancesUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async outpostsInstancesUsedByList( + requestParameters: OutpostsInstancesUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.outpostsInstancesUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for outpostsLdapAccessCheck without sending the request + */ + async outpostsLdapAccessCheckRequestOpts( + requestParameters: OutpostsLdapAccessCheckRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling outpostsLdapAccessCheck().', + ); + } + + const queryParameters: any = {}; + + if (requestParameters["appSlug"] != null) { + queryParameters["app_slug"] = requestParameters["appSlug"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/outposts/ldap/{id}/check_access/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Check access to a single application by slug + */ + async outpostsLdapAccessCheckRaw( + requestParameters: OutpostsLdapAccessCheckRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.outpostsLdapAccessCheckRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + LDAPCheckAccessFromJSON(jsonValue), + ); + } + + /** + * Check access to a single application by slug + */ + async outpostsLdapAccessCheck( + requestParameters: OutpostsLdapAccessCheckRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.outpostsLdapAccessCheckRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for outpostsLdapList without sending the request + */ + async outpostsLdapListRequestOpts( + requestParameters: OutpostsLdapListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/outposts/ldap/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * LDAPProvider Viewset + */ + async outpostsLdapListRaw( + requestParameters: OutpostsLdapListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.outpostsLdapListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedLDAPOutpostConfigListFromJSON(jsonValue), + ); + } + + /** + * LDAPProvider Viewset + */ + async outpostsLdapList( + requestParameters: OutpostsLdapListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.outpostsLdapListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for outpostsProxyList without sending the request + */ + async outpostsProxyListRequestOpts( + requestParameters: OutpostsProxyListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/outposts/proxy/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * ProxyProvider Viewset + */ + async outpostsProxyListRaw( + requestParameters: OutpostsProxyListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.outpostsProxyListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedProxyOutpostConfigListFromJSON(jsonValue), + ); + } + + /** + * ProxyProvider Viewset + */ + async outpostsProxyList( + requestParameters: OutpostsProxyListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.outpostsProxyListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for outpostsRadiusAccessCheck without sending the request + */ + async outpostsRadiusAccessCheckRequestOpts( + requestParameters: OutpostsRadiusAccessCheckRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling outpostsRadiusAccessCheck().', + ); + } + + const queryParameters: any = {}; + + if (requestParameters["appSlug"] != null) { + queryParameters["app_slug"] = requestParameters["appSlug"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/outposts/radius/{id}/check_access/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Check access to a single application by slug + */ + async outpostsRadiusAccessCheckRaw( + requestParameters: OutpostsRadiusAccessCheckRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.outpostsRadiusAccessCheckRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + RadiusCheckAccessFromJSON(jsonValue), + ); + } + + /** + * Check access to a single application by slug + */ + async outpostsRadiusAccessCheck( + requestParameters: OutpostsRadiusAccessCheckRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.outpostsRadiusAccessCheckRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for outpostsRadiusList without sending the request + */ + async outpostsRadiusListRequestOpts( + requestParameters: OutpostsRadiusListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/outposts/radius/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * RadiusProvider Viewset + */ + async outpostsRadiusListRaw( + requestParameters: OutpostsRadiusListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.outpostsRadiusListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedRadiusOutpostConfigListFromJSON(jsonValue), + ); + } + + /** + * RadiusProvider Viewset + */ + async outpostsRadiusList( + requestParameters: OutpostsRadiusListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.outpostsRadiusListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for outpostsServiceConnectionsAllDestroy without sending the request + */ + async outpostsServiceConnectionsAllDestroyRequestOpts( + requestParameters: OutpostsServiceConnectionsAllDestroyRequest, + ): Promise { + if (requestParameters["uuid"] == null) { + throw new runtime.RequiredError( + "uuid", + 'Required parameter "uuid" was null or undefined when calling outpostsServiceConnectionsAllDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/outposts/service_connections/all/{uuid}/`; + urlPath = urlPath.replace( + `{${"uuid"}}`, + encodeURIComponent(String(requestParameters["uuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * ServiceConnection Viewset + */ + async outpostsServiceConnectionsAllDestroyRaw( + requestParameters: OutpostsServiceConnectionsAllDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.outpostsServiceConnectionsAllDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * ServiceConnection Viewset + */ + async outpostsServiceConnectionsAllDestroy( + requestParameters: OutpostsServiceConnectionsAllDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.outpostsServiceConnectionsAllDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for outpostsServiceConnectionsAllList without sending the request + */ + async outpostsServiceConnectionsAllListRequestOpts( + requestParameters: OutpostsServiceConnectionsAllListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/outposts/service_connections/all/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * ServiceConnection Viewset + */ + async outpostsServiceConnectionsAllListRaw( + requestParameters: OutpostsServiceConnectionsAllListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.outpostsServiceConnectionsAllListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedServiceConnectionListFromJSON(jsonValue), + ); + } + + /** + * ServiceConnection Viewset + */ + async outpostsServiceConnectionsAllList( + requestParameters: OutpostsServiceConnectionsAllListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.outpostsServiceConnectionsAllListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for outpostsServiceConnectionsAllRetrieve without sending the request + */ + async outpostsServiceConnectionsAllRetrieveRequestOpts( + requestParameters: OutpostsServiceConnectionsAllRetrieveRequest, + ): Promise { + if (requestParameters["uuid"] == null) { + throw new runtime.RequiredError( + "uuid", + 'Required parameter "uuid" was null or undefined when calling outpostsServiceConnectionsAllRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/outposts/service_connections/all/{uuid}/`; + urlPath = urlPath.replace( + `{${"uuid"}}`, + encodeURIComponent(String(requestParameters["uuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * ServiceConnection Viewset + */ + async outpostsServiceConnectionsAllRetrieveRaw( + requestParameters: OutpostsServiceConnectionsAllRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.outpostsServiceConnectionsAllRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + ServiceConnectionFromJSON(jsonValue), + ); + } + + /** + * ServiceConnection Viewset + */ + async outpostsServiceConnectionsAllRetrieve( + requestParameters: OutpostsServiceConnectionsAllRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.outpostsServiceConnectionsAllRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for outpostsServiceConnectionsAllStateRetrieve without sending the request + */ + async outpostsServiceConnectionsAllStateRetrieveRequestOpts( + requestParameters: OutpostsServiceConnectionsAllStateRetrieveRequest, + ): Promise { + if (requestParameters["uuid"] == null) { + throw new runtime.RequiredError( + "uuid", + 'Required parameter "uuid" was null or undefined when calling outpostsServiceConnectionsAllStateRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/outposts/service_connections/all/{uuid}/state/`; + urlPath = urlPath.replace( + `{${"uuid"}}`, + encodeURIComponent(String(requestParameters["uuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get the service connection\'s state + */ + async outpostsServiceConnectionsAllStateRetrieveRaw( + requestParameters: OutpostsServiceConnectionsAllStateRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.outpostsServiceConnectionsAllStateRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + ServiceConnectionStateFromJSON(jsonValue), + ); + } + + /** + * Get the service connection\'s state + */ + async outpostsServiceConnectionsAllStateRetrieve( + requestParameters: OutpostsServiceConnectionsAllStateRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.outpostsServiceConnectionsAllStateRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for outpostsServiceConnectionsAllTypesList without sending the request + */ + async outpostsServiceConnectionsAllTypesListRequestOpts(): Promise { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/outposts/service_connections/all/types/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get all creatable types + */ + async outpostsServiceConnectionsAllTypesListRaw( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.outpostsServiceConnectionsAllTypesListRequestOpts(); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + jsonValue.map(TypeCreateFromJSON), + ); + } + + /** + * Get all creatable types + */ + async outpostsServiceConnectionsAllTypesList( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.outpostsServiceConnectionsAllTypesListRaw(initOverrides); + return await response.value(); + } + + /** + * Creates request options for outpostsServiceConnectionsAllUsedByList without sending the request + */ + async outpostsServiceConnectionsAllUsedByListRequestOpts( + requestParameters: OutpostsServiceConnectionsAllUsedByListRequest, + ): Promise { + if (requestParameters["uuid"] == null) { + throw new runtime.RequiredError( + "uuid", + 'Required parameter "uuid" was null or undefined when calling outpostsServiceConnectionsAllUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/outposts/service_connections/all/{uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"uuid"}}`, + encodeURIComponent(String(requestParameters["uuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async outpostsServiceConnectionsAllUsedByListRaw( + requestParameters: OutpostsServiceConnectionsAllUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.outpostsServiceConnectionsAllUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async outpostsServiceConnectionsAllUsedByList( + requestParameters: OutpostsServiceConnectionsAllUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.outpostsServiceConnectionsAllUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for outpostsServiceConnectionsDockerCreate without sending the request + */ + async outpostsServiceConnectionsDockerCreateRequestOpts( + requestParameters: OutpostsServiceConnectionsDockerCreateRequest, + ): Promise { + if (requestParameters["dockerServiceConnectionRequest"] == null) { + throw new runtime.RequiredError( + "dockerServiceConnectionRequest", + 'Required parameter "dockerServiceConnectionRequest" was null or undefined when calling outpostsServiceConnectionsDockerCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/outposts/service_connections/docker/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: DockerServiceConnectionRequestToJSON( + requestParameters["dockerServiceConnectionRequest"], + ), + }; + } + + /** + * DockerServiceConnection Viewset + */ + async outpostsServiceConnectionsDockerCreateRaw( + requestParameters: OutpostsServiceConnectionsDockerCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.outpostsServiceConnectionsDockerCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + DockerServiceConnectionFromJSON(jsonValue), + ); + } + + /** + * DockerServiceConnection Viewset + */ + async outpostsServiceConnectionsDockerCreate( + requestParameters: OutpostsServiceConnectionsDockerCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.outpostsServiceConnectionsDockerCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for outpostsServiceConnectionsDockerDestroy without sending the request + */ + async outpostsServiceConnectionsDockerDestroyRequestOpts( + requestParameters: OutpostsServiceConnectionsDockerDestroyRequest, + ): Promise { + if (requestParameters["uuid"] == null) { + throw new runtime.RequiredError( + "uuid", + 'Required parameter "uuid" was null or undefined when calling outpostsServiceConnectionsDockerDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/outposts/service_connections/docker/{uuid}/`; + urlPath = urlPath.replace( + `{${"uuid"}}`, + encodeURIComponent(String(requestParameters["uuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * DockerServiceConnection Viewset + */ + async outpostsServiceConnectionsDockerDestroyRaw( + requestParameters: OutpostsServiceConnectionsDockerDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.outpostsServiceConnectionsDockerDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * DockerServiceConnection Viewset + */ + async outpostsServiceConnectionsDockerDestroy( + requestParameters: OutpostsServiceConnectionsDockerDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.outpostsServiceConnectionsDockerDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for outpostsServiceConnectionsDockerList without sending the request + */ + async outpostsServiceConnectionsDockerListRequestOpts( + requestParameters: OutpostsServiceConnectionsDockerListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["local"] != null) { + queryParameters["local"] = requestParameters["local"]; + } + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["tlsAuthentication"] != null) { + queryParameters["tls_authentication"] = requestParameters["tlsAuthentication"]; + } + + if (requestParameters["tlsVerification"] != null) { + queryParameters["tls_verification"] = requestParameters["tlsVerification"]; + } + + if (requestParameters["url"] != null) { + queryParameters["url"] = requestParameters["url"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/outposts/service_connections/docker/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * DockerServiceConnection Viewset + */ + async outpostsServiceConnectionsDockerListRaw( + requestParameters: OutpostsServiceConnectionsDockerListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.outpostsServiceConnectionsDockerListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedDockerServiceConnectionListFromJSON(jsonValue), + ); + } + + /** + * DockerServiceConnection Viewset + */ + async outpostsServiceConnectionsDockerList( + requestParameters: OutpostsServiceConnectionsDockerListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.outpostsServiceConnectionsDockerListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for outpostsServiceConnectionsDockerPartialUpdate without sending the request + */ + async outpostsServiceConnectionsDockerPartialUpdateRequestOpts( + requestParameters: OutpostsServiceConnectionsDockerPartialUpdateRequest, + ): Promise { + if (requestParameters["uuid"] == null) { + throw new runtime.RequiredError( + "uuid", + 'Required parameter "uuid" was null or undefined when calling outpostsServiceConnectionsDockerPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/outposts/service_connections/docker/{uuid}/`; + urlPath = urlPath.replace( + `{${"uuid"}}`, + encodeURIComponent(String(requestParameters["uuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedDockerServiceConnectionRequestToJSON( + requestParameters["patchedDockerServiceConnectionRequest"], + ), + }; + } + + /** + * DockerServiceConnection Viewset + */ + async outpostsServiceConnectionsDockerPartialUpdateRaw( + requestParameters: OutpostsServiceConnectionsDockerPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.outpostsServiceConnectionsDockerPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + DockerServiceConnectionFromJSON(jsonValue), + ); + } + + /** + * DockerServiceConnection Viewset + */ + async outpostsServiceConnectionsDockerPartialUpdate( + requestParameters: OutpostsServiceConnectionsDockerPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.outpostsServiceConnectionsDockerPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for outpostsServiceConnectionsDockerRetrieve without sending the request + */ + async outpostsServiceConnectionsDockerRetrieveRequestOpts( + requestParameters: OutpostsServiceConnectionsDockerRetrieveRequest, + ): Promise { + if (requestParameters["uuid"] == null) { + throw new runtime.RequiredError( + "uuid", + 'Required parameter "uuid" was null or undefined when calling outpostsServiceConnectionsDockerRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/outposts/service_connections/docker/{uuid}/`; + urlPath = urlPath.replace( + `{${"uuid"}}`, + encodeURIComponent(String(requestParameters["uuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * DockerServiceConnection Viewset + */ + async outpostsServiceConnectionsDockerRetrieveRaw( + requestParameters: OutpostsServiceConnectionsDockerRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.outpostsServiceConnectionsDockerRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + DockerServiceConnectionFromJSON(jsonValue), + ); + } + + /** + * DockerServiceConnection Viewset + */ + async outpostsServiceConnectionsDockerRetrieve( + requestParameters: OutpostsServiceConnectionsDockerRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.outpostsServiceConnectionsDockerRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for outpostsServiceConnectionsDockerUpdate without sending the request + */ + async outpostsServiceConnectionsDockerUpdateRequestOpts( + requestParameters: OutpostsServiceConnectionsDockerUpdateRequest, + ): Promise { + if (requestParameters["uuid"] == null) { + throw new runtime.RequiredError( + "uuid", + 'Required parameter "uuid" was null or undefined when calling outpostsServiceConnectionsDockerUpdate().', + ); + } + + if (requestParameters["dockerServiceConnectionRequest"] == null) { + throw new runtime.RequiredError( + "dockerServiceConnectionRequest", + 'Required parameter "dockerServiceConnectionRequest" was null or undefined when calling outpostsServiceConnectionsDockerUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/outposts/service_connections/docker/{uuid}/`; + urlPath = urlPath.replace( + `{${"uuid"}}`, + encodeURIComponent(String(requestParameters["uuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: DockerServiceConnectionRequestToJSON( + requestParameters["dockerServiceConnectionRequest"], + ), + }; + } + + /** + * DockerServiceConnection Viewset + */ + async outpostsServiceConnectionsDockerUpdateRaw( + requestParameters: OutpostsServiceConnectionsDockerUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.outpostsServiceConnectionsDockerUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + DockerServiceConnectionFromJSON(jsonValue), + ); + } + + /** + * DockerServiceConnection Viewset + */ + async outpostsServiceConnectionsDockerUpdate( + requestParameters: OutpostsServiceConnectionsDockerUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.outpostsServiceConnectionsDockerUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for outpostsServiceConnectionsDockerUsedByList without sending the request + */ + async outpostsServiceConnectionsDockerUsedByListRequestOpts( + requestParameters: OutpostsServiceConnectionsDockerUsedByListRequest, + ): Promise { + if (requestParameters["uuid"] == null) { + throw new runtime.RequiredError( + "uuid", + 'Required parameter "uuid" was null or undefined when calling outpostsServiceConnectionsDockerUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/outposts/service_connections/docker/{uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"uuid"}}`, + encodeURIComponent(String(requestParameters["uuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async outpostsServiceConnectionsDockerUsedByListRaw( + requestParameters: OutpostsServiceConnectionsDockerUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.outpostsServiceConnectionsDockerUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async outpostsServiceConnectionsDockerUsedByList( + requestParameters: OutpostsServiceConnectionsDockerUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.outpostsServiceConnectionsDockerUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for outpostsServiceConnectionsKubernetesCreate without sending the request + */ + async outpostsServiceConnectionsKubernetesCreateRequestOpts( + requestParameters: OutpostsServiceConnectionsKubernetesCreateRequest, + ): Promise { + if (requestParameters["kubernetesServiceConnectionRequest"] == null) { + throw new runtime.RequiredError( + "kubernetesServiceConnectionRequest", + 'Required parameter "kubernetesServiceConnectionRequest" was null or undefined when calling outpostsServiceConnectionsKubernetesCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/outposts/service_connections/kubernetes/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: KubernetesServiceConnectionRequestToJSON( + requestParameters["kubernetesServiceConnectionRequest"], + ), + }; + } + + /** + * KubernetesServiceConnection Viewset + */ + async outpostsServiceConnectionsKubernetesCreateRaw( + requestParameters: OutpostsServiceConnectionsKubernetesCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.outpostsServiceConnectionsKubernetesCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + KubernetesServiceConnectionFromJSON(jsonValue), + ); + } + + /** + * KubernetesServiceConnection Viewset + */ + async outpostsServiceConnectionsKubernetesCreate( + requestParameters: OutpostsServiceConnectionsKubernetesCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.outpostsServiceConnectionsKubernetesCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for outpostsServiceConnectionsKubernetesDestroy without sending the request + */ + async outpostsServiceConnectionsKubernetesDestroyRequestOpts( + requestParameters: OutpostsServiceConnectionsKubernetesDestroyRequest, + ): Promise { + if (requestParameters["uuid"] == null) { + throw new runtime.RequiredError( + "uuid", + 'Required parameter "uuid" was null or undefined when calling outpostsServiceConnectionsKubernetesDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/outposts/service_connections/kubernetes/{uuid}/`; + urlPath = urlPath.replace( + `{${"uuid"}}`, + encodeURIComponent(String(requestParameters["uuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * KubernetesServiceConnection Viewset + */ + async outpostsServiceConnectionsKubernetesDestroyRaw( + requestParameters: OutpostsServiceConnectionsKubernetesDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.outpostsServiceConnectionsKubernetesDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * KubernetesServiceConnection Viewset + */ + async outpostsServiceConnectionsKubernetesDestroy( + requestParameters: OutpostsServiceConnectionsKubernetesDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.outpostsServiceConnectionsKubernetesDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for outpostsServiceConnectionsKubernetesList without sending the request + */ + async outpostsServiceConnectionsKubernetesListRequestOpts( + requestParameters: OutpostsServiceConnectionsKubernetesListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["local"] != null) { + queryParameters["local"] = requestParameters["local"]; + } + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/outposts/service_connections/kubernetes/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * KubernetesServiceConnection Viewset + */ + async outpostsServiceConnectionsKubernetesListRaw( + requestParameters: OutpostsServiceConnectionsKubernetesListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.outpostsServiceConnectionsKubernetesListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedKubernetesServiceConnectionListFromJSON(jsonValue), + ); + } + + /** + * KubernetesServiceConnection Viewset + */ + async outpostsServiceConnectionsKubernetesList( + requestParameters: OutpostsServiceConnectionsKubernetesListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.outpostsServiceConnectionsKubernetesListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for outpostsServiceConnectionsKubernetesPartialUpdate without sending the request + */ + async outpostsServiceConnectionsKubernetesPartialUpdateRequestOpts( + requestParameters: OutpostsServiceConnectionsKubernetesPartialUpdateRequest, + ): Promise { + if (requestParameters["uuid"] == null) { + throw new runtime.RequiredError( + "uuid", + 'Required parameter "uuid" was null or undefined when calling outpostsServiceConnectionsKubernetesPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/outposts/service_connections/kubernetes/{uuid}/`; + urlPath = urlPath.replace( + `{${"uuid"}}`, + encodeURIComponent(String(requestParameters["uuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedKubernetesServiceConnectionRequestToJSON( + requestParameters["patchedKubernetesServiceConnectionRequest"], + ), + }; + } + + /** + * KubernetesServiceConnection Viewset + */ + async outpostsServiceConnectionsKubernetesPartialUpdateRaw( + requestParameters: OutpostsServiceConnectionsKubernetesPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.outpostsServiceConnectionsKubernetesPartialUpdateRequestOpts( + requestParameters, + ); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + KubernetesServiceConnectionFromJSON(jsonValue), + ); + } + + /** + * KubernetesServiceConnection Viewset + */ + async outpostsServiceConnectionsKubernetesPartialUpdate( + requestParameters: OutpostsServiceConnectionsKubernetesPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.outpostsServiceConnectionsKubernetesPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for outpostsServiceConnectionsKubernetesRetrieve without sending the request + */ + async outpostsServiceConnectionsKubernetesRetrieveRequestOpts( + requestParameters: OutpostsServiceConnectionsKubernetesRetrieveRequest, + ): Promise { + if (requestParameters["uuid"] == null) { + throw new runtime.RequiredError( + "uuid", + 'Required parameter "uuid" was null or undefined when calling outpostsServiceConnectionsKubernetesRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/outposts/service_connections/kubernetes/{uuid}/`; + urlPath = urlPath.replace( + `{${"uuid"}}`, + encodeURIComponent(String(requestParameters["uuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * KubernetesServiceConnection Viewset + */ + async outpostsServiceConnectionsKubernetesRetrieveRaw( + requestParameters: OutpostsServiceConnectionsKubernetesRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.outpostsServiceConnectionsKubernetesRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + KubernetesServiceConnectionFromJSON(jsonValue), + ); + } + + /** + * KubernetesServiceConnection Viewset + */ + async outpostsServiceConnectionsKubernetesRetrieve( + requestParameters: OutpostsServiceConnectionsKubernetesRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.outpostsServiceConnectionsKubernetesRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for outpostsServiceConnectionsKubernetesUpdate without sending the request + */ + async outpostsServiceConnectionsKubernetesUpdateRequestOpts( + requestParameters: OutpostsServiceConnectionsKubernetesUpdateRequest, + ): Promise { + if (requestParameters["uuid"] == null) { + throw new runtime.RequiredError( + "uuid", + 'Required parameter "uuid" was null or undefined when calling outpostsServiceConnectionsKubernetesUpdate().', + ); + } + + if (requestParameters["kubernetesServiceConnectionRequest"] == null) { + throw new runtime.RequiredError( + "kubernetesServiceConnectionRequest", + 'Required parameter "kubernetesServiceConnectionRequest" was null or undefined when calling outpostsServiceConnectionsKubernetesUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/outposts/service_connections/kubernetes/{uuid}/`; + urlPath = urlPath.replace( + `{${"uuid"}}`, + encodeURIComponent(String(requestParameters["uuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: KubernetesServiceConnectionRequestToJSON( + requestParameters["kubernetesServiceConnectionRequest"], + ), + }; + } + + /** + * KubernetesServiceConnection Viewset + */ + async outpostsServiceConnectionsKubernetesUpdateRaw( + requestParameters: OutpostsServiceConnectionsKubernetesUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.outpostsServiceConnectionsKubernetesUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + KubernetesServiceConnectionFromJSON(jsonValue), + ); + } + + /** + * KubernetesServiceConnection Viewset + */ + async outpostsServiceConnectionsKubernetesUpdate( + requestParameters: OutpostsServiceConnectionsKubernetesUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.outpostsServiceConnectionsKubernetesUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for outpostsServiceConnectionsKubernetesUsedByList without sending the request + */ + async outpostsServiceConnectionsKubernetesUsedByListRequestOpts( + requestParameters: OutpostsServiceConnectionsKubernetesUsedByListRequest, + ): Promise { + if (requestParameters["uuid"] == null) { + throw new runtime.RequiredError( + "uuid", + 'Required parameter "uuid" was null or undefined when calling outpostsServiceConnectionsKubernetesUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/outposts/service_connections/kubernetes/{uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"uuid"}}`, + encodeURIComponent(String(requestParameters["uuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async outpostsServiceConnectionsKubernetesUsedByListRaw( + requestParameters: OutpostsServiceConnectionsKubernetesUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.outpostsServiceConnectionsKubernetesUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async outpostsServiceConnectionsKubernetesUsedByList( + requestParameters: OutpostsServiceConnectionsKubernetesUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.outpostsServiceConnectionsKubernetesUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } +} diff --git a/packages/client-ts/src/apis/PoliciesApi.ts b/packages/client-ts/src/apis/PoliciesApi.ts new file mode 100644 index 0000000000..d32d66f182 --- /dev/null +++ b/packages/client-ts/src/apis/PoliciesApi.ts @@ -0,0 +1,6026 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { + Cache, + DetailedCountry, + DummyPolicy, + DummyPolicyRequest, + EventActions, + EventMatcherPolicy, + EventMatcherPolicyRequest, + ExpressionPolicy, + ExpressionPolicyRequest, + GeoIPPolicy, + GeoIPPolicyRequest, + PaginatedDummyPolicyList, + PaginatedEventMatcherPolicyList, + PaginatedExpressionPolicyList, + PaginatedGeoIPPolicyList, + PaginatedPasswordExpiryPolicyList, + PaginatedPasswordPolicyList, + PaginatedPolicyBindingList, + PaginatedPolicyList, + PaginatedReputationList, + PaginatedReputationPolicyList, + PaginatedUniquePasswordPolicyList, + PasswordExpiryPolicy, + PasswordExpiryPolicyRequest, + PasswordPolicy, + PasswordPolicyRequest, + PatchedDummyPolicyRequest, + PatchedEventMatcherPolicyRequest, + PatchedExpressionPolicyRequest, + PatchedGeoIPPolicyRequest, + PatchedPasswordExpiryPolicyRequest, + PatchedPasswordPolicyRequest, + PatchedPolicyBindingRequest, + PatchedReputationPolicyRequest, + PatchedUniquePasswordPolicyRequest, + Policy, + PolicyBinding, + PolicyBindingRequest, + PolicyTestRequest, + PolicyTestResult, + Reputation, + ReputationPolicy, + ReputationPolicyRequest, + TypeCreate, + UniquePasswordPolicy, + UniquePasswordPolicyRequest, + UsedBy, +} from "../models/index"; +import { + CacheFromJSON, + DetailedCountryFromJSON, + DummyPolicyFromJSON, + DummyPolicyRequestToJSON, + EventMatcherPolicyFromJSON, + EventMatcherPolicyRequestToJSON, + ExpressionPolicyFromJSON, + ExpressionPolicyRequestToJSON, + GeoIPPolicyFromJSON, + GeoIPPolicyRequestToJSON, + PaginatedDummyPolicyListFromJSON, + PaginatedEventMatcherPolicyListFromJSON, + PaginatedExpressionPolicyListFromJSON, + PaginatedGeoIPPolicyListFromJSON, + PaginatedPasswordExpiryPolicyListFromJSON, + PaginatedPasswordPolicyListFromJSON, + PaginatedPolicyBindingListFromJSON, + PaginatedPolicyListFromJSON, + PaginatedReputationListFromJSON, + PaginatedReputationPolicyListFromJSON, + PaginatedUniquePasswordPolicyListFromJSON, + PasswordExpiryPolicyFromJSON, + PasswordExpiryPolicyRequestToJSON, + PasswordPolicyFromJSON, + PasswordPolicyRequestToJSON, + PatchedDummyPolicyRequestToJSON, + PatchedEventMatcherPolicyRequestToJSON, + PatchedExpressionPolicyRequestToJSON, + PatchedGeoIPPolicyRequestToJSON, + PatchedPasswordExpiryPolicyRequestToJSON, + PatchedPasswordPolicyRequestToJSON, + PatchedPolicyBindingRequestToJSON, + PatchedReputationPolicyRequestToJSON, + PatchedUniquePasswordPolicyRequestToJSON, + PolicyBindingFromJSON, + PolicyBindingRequestToJSON, + PolicyFromJSON, + PolicyTestRequestToJSON, + PolicyTestResultFromJSON, + ReputationFromJSON, + ReputationPolicyFromJSON, + ReputationPolicyRequestToJSON, + TypeCreateFromJSON, + UniquePasswordPolicyFromJSON, + UniquePasswordPolicyRequestToJSON, + UsedByFromJSON, +} from "../models/index"; +import * as runtime from "../runtime"; + +export interface PoliciesAllDestroyRequest { + policyUuid: string; +} + +export interface PoliciesAllListRequest { + bindingsIsnull?: boolean; + ordering?: string; + page?: number; + pageSize?: number; + promptstageIsnull?: boolean; + search?: string; +} + +export interface PoliciesAllRetrieveRequest { + policyUuid: string; +} + +export interface PoliciesAllTestCreateRequest { + policyUuid: string; + policyTestRequest: PolicyTestRequest; +} + +export interface PoliciesAllUsedByListRequest { + policyUuid: string; +} + +export interface PoliciesBindingsCreateRequest { + policyBindingRequest: PolicyBindingRequest; +} + +export interface PoliciesBindingsDestroyRequest { + policyBindingUuid: string; +} + +export interface PoliciesBindingsListRequest { + enabled?: boolean; + order?: number; + ordering?: string; + page?: number; + pageSize?: number; + policy?: string; + policyIsnull?: boolean; + search?: string; + target?: string; + targetIn?: Array; + timeout?: number; +} + +export interface PoliciesBindingsPartialUpdateRequest { + policyBindingUuid: string; + patchedPolicyBindingRequest?: PatchedPolicyBindingRequest; +} + +export interface PoliciesBindingsRetrieveRequest { + policyBindingUuid: string; +} + +export interface PoliciesBindingsUpdateRequest { + policyBindingUuid: string; + policyBindingRequest: PolicyBindingRequest; +} + +export interface PoliciesBindingsUsedByListRequest { + policyBindingUuid: string; +} + +export interface PoliciesDummyCreateRequest { + dummyPolicyRequest: DummyPolicyRequest; +} + +export interface PoliciesDummyDestroyRequest { + policyUuid: string; +} + +export interface PoliciesDummyListRequest { + created?: Date; + executionLogging?: boolean; + lastUpdated?: Date; + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + policyUuid?: string; + result?: boolean; + search?: string; + waitMax?: number; + waitMin?: number; +} + +export interface PoliciesDummyPartialUpdateRequest { + policyUuid: string; + patchedDummyPolicyRequest?: PatchedDummyPolicyRequest; +} + +export interface PoliciesDummyRetrieveRequest { + policyUuid: string; +} + +export interface PoliciesDummyUpdateRequest { + policyUuid: string; + dummyPolicyRequest: DummyPolicyRequest; +} + +export interface PoliciesDummyUsedByListRequest { + policyUuid: string; +} + +export interface PoliciesEventMatcherCreateRequest { + eventMatcherPolicyRequest: EventMatcherPolicyRequest; +} + +export interface PoliciesEventMatcherDestroyRequest { + policyUuid: string; +} + +export interface PoliciesEventMatcherListRequest { + action?: EventActions | null; + app?: string; + clientIp?: string; + created?: Date; + executionLogging?: boolean; + lastUpdated?: Date; + model?: string; + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + policyUuid?: string; + query?: string; + search?: string; +} + +export interface PoliciesEventMatcherPartialUpdateRequest { + policyUuid: string; + patchedEventMatcherPolicyRequest?: PatchedEventMatcherPolicyRequest; +} + +export interface PoliciesEventMatcherRetrieveRequest { + policyUuid: string; +} + +export interface PoliciesEventMatcherUpdateRequest { + policyUuid: string; + eventMatcherPolicyRequest: EventMatcherPolicyRequest; +} + +export interface PoliciesEventMatcherUsedByListRequest { + policyUuid: string; +} + +export interface PoliciesExpressionCreateRequest { + expressionPolicyRequest: ExpressionPolicyRequest; +} + +export interface PoliciesExpressionDestroyRequest { + policyUuid: string; +} + +export interface PoliciesExpressionListRequest { + created?: Date; + executionLogging?: boolean; + expression?: string; + lastUpdated?: Date; + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + policyUuid?: string; + search?: string; +} + +export interface PoliciesExpressionPartialUpdateRequest { + policyUuid: string; + patchedExpressionPolicyRequest?: PatchedExpressionPolicyRequest; +} + +export interface PoliciesExpressionRetrieveRequest { + policyUuid: string; +} + +export interface PoliciesExpressionUpdateRequest { + policyUuid: string; + expressionPolicyRequest: ExpressionPolicyRequest; +} + +export interface PoliciesExpressionUsedByListRequest { + policyUuid: string; +} + +export interface PoliciesGeoipCreateRequest { + geoIPPolicyRequest: GeoIPPolicyRequest; +} + +export interface PoliciesGeoipDestroyRequest { + policyUuid: string; +} + +export interface PoliciesGeoipListRequest { + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; +} + +export interface PoliciesGeoipPartialUpdateRequest { + policyUuid: string; + patchedGeoIPPolicyRequest?: PatchedGeoIPPolicyRequest; +} + +export interface PoliciesGeoipRetrieveRequest { + policyUuid: string; +} + +export interface PoliciesGeoipUpdateRequest { + policyUuid: string; + geoIPPolicyRequest: GeoIPPolicyRequest; +} + +export interface PoliciesGeoipUsedByListRequest { + policyUuid: string; +} + +export interface PoliciesPasswordCreateRequest { + passwordPolicyRequest: PasswordPolicyRequest; +} + +export interface PoliciesPasswordDestroyRequest { + policyUuid: string; +} + +export interface PoliciesPasswordExpiryCreateRequest { + passwordExpiryPolicyRequest: PasswordExpiryPolicyRequest; +} + +export interface PoliciesPasswordExpiryDestroyRequest { + policyUuid: string; +} + +export interface PoliciesPasswordExpiryListRequest { + created?: Date; + days?: number; + denyOnly?: boolean; + executionLogging?: boolean; + lastUpdated?: Date; + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + policyUuid?: string; + search?: string; +} + +export interface PoliciesPasswordExpiryPartialUpdateRequest { + policyUuid: string; + patchedPasswordExpiryPolicyRequest?: PatchedPasswordExpiryPolicyRequest; +} + +export interface PoliciesPasswordExpiryRetrieveRequest { + policyUuid: string; +} + +export interface PoliciesPasswordExpiryUpdateRequest { + policyUuid: string; + passwordExpiryPolicyRequest: PasswordExpiryPolicyRequest; +} + +export interface PoliciesPasswordExpiryUsedByListRequest { + policyUuid: string; +} + +export interface PoliciesPasswordListRequest { + amountDigits?: number; + amountLowercase?: number; + amountSymbols?: number; + amountUppercase?: number; + checkHaveIBeenPwned?: boolean; + checkStaticRules?: boolean; + checkZxcvbn?: boolean; + created?: Date; + errorMessage?: string; + executionLogging?: boolean; + hibpAllowedCount?: number; + lastUpdated?: Date; + lengthMin?: number; + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + passwordField?: string; + policyUuid?: string; + search?: string; + symbolCharset?: string; + zxcvbnScoreThreshold?: number; +} + +export interface PoliciesPasswordPartialUpdateRequest { + policyUuid: string; + patchedPasswordPolicyRequest?: PatchedPasswordPolicyRequest; +} + +export interface PoliciesPasswordRetrieveRequest { + policyUuid: string; +} + +export interface PoliciesPasswordUpdateRequest { + policyUuid: string; + passwordPolicyRequest: PasswordPolicyRequest; +} + +export interface PoliciesPasswordUsedByListRequest { + policyUuid: string; +} + +export interface PoliciesReputationCreateRequest { + reputationPolicyRequest: ReputationPolicyRequest; +} + +export interface PoliciesReputationDestroyRequest { + policyUuid: string; +} + +export interface PoliciesReputationListRequest { + checkIp?: boolean; + checkUsername?: boolean; + created?: Date; + executionLogging?: boolean; + lastUpdated?: Date; + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + policyUuid?: string; + search?: string; + threshold?: number; +} + +export interface PoliciesReputationPartialUpdateRequest { + policyUuid: string; + patchedReputationPolicyRequest?: PatchedReputationPolicyRequest; +} + +export interface PoliciesReputationRetrieveRequest { + policyUuid: string; +} + +export interface PoliciesReputationScoresDestroyRequest { + reputationUuid: string; +} + +export interface PoliciesReputationScoresListRequest { + identifier?: string; + identifierIn?: Array; + ip?: string; + ordering?: string; + page?: number; + pageSize?: number; + score?: number; + search?: string; +} + +export interface PoliciesReputationScoresRetrieveRequest { + reputationUuid: string; +} + +export interface PoliciesReputationScoresUsedByListRequest { + reputationUuid: string; +} + +export interface PoliciesReputationUpdateRequest { + policyUuid: string; + reputationPolicyRequest: ReputationPolicyRequest; +} + +export interface PoliciesReputationUsedByListRequest { + policyUuid: string; +} + +export interface PoliciesUniquePasswordCreateRequest { + uniquePasswordPolicyRequest: UniquePasswordPolicyRequest; +} + +export interface PoliciesUniquePasswordDestroyRequest { + policyUuid: string; +} + +export interface PoliciesUniquePasswordListRequest { + created?: Date; + executionLogging?: boolean; + lastUpdated?: Date; + name?: string; + numHistoricalPasswords?: number; + ordering?: string; + page?: number; + pageSize?: number; + passwordField?: string; + policyUuid?: string; + search?: string; +} + +export interface PoliciesUniquePasswordPartialUpdateRequest { + policyUuid: string; + patchedUniquePasswordPolicyRequest?: PatchedUniquePasswordPolicyRequest; +} + +export interface PoliciesUniquePasswordRetrieveRequest { + policyUuid: string; +} + +export interface PoliciesUniquePasswordUpdateRequest { + policyUuid: string; + uniquePasswordPolicyRequest: UniquePasswordPolicyRequest; +} + +export interface PoliciesUniquePasswordUsedByListRequest { + policyUuid: string; +} + +/** + * + */ +export class PoliciesApi extends runtime.BaseAPI { + /** + * Creates request options for policiesAllCacheClearCreate without sending the request + */ + async policiesAllCacheClearCreateRequestOpts(): Promise { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/policies/all/cache_clear/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Clear policy cache + */ + async policiesAllCacheClearCreateRaw( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.policiesAllCacheClearCreateRequestOpts(); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Clear policy cache + */ + async policiesAllCacheClearCreate( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.policiesAllCacheClearCreateRaw(initOverrides); + } + + /** + * Creates request options for policiesAllCacheInfoRetrieve without sending the request + */ + async policiesAllCacheInfoRetrieveRequestOpts(): Promise { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/policies/all/cache_info/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Info about cached policies + */ + async policiesAllCacheInfoRetrieveRaw( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.policiesAllCacheInfoRetrieveRequestOpts(); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => CacheFromJSON(jsonValue)); + } + + /** + * Info about cached policies + */ + async policiesAllCacheInfoRetrieve( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.policiesAllCacheInfoRetrieveRaw(initOverrides); + return await response.value(); + } + + /** + * Creates request options for policiesAllDestroy without sending the request + */ + async policiesAllDestroyRequestOpts( + requestParameters: PoliciesAllDestroyRequest, + ): Promise { + if (requestParameters["policyUuid"] == null) { + throw new runtime.RequiredError( + "policyUuid", + 'Required parameter "policyUuid" was null or undefined when calling policiesAllDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/policies/all/{policy_uuid}/`; + urlPath = urlPath.replace( + `{${"policy_uuid"}}`, + encodeURIComponent(String(requestParameters["policyUuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Policy Viewset + */ + async policiesAllDestroyRaw( + requestParameters: PoliciesAllDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.policiesAllDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Policy Viewset + */ + async policiesAllDestroy( + requestParameters: PoliciesAllDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.policiesAllDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for policiesAllList without sending the request + */ + async policiesAllListRequestOpts( + requestParameters: PoliciesAllListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["bindingsIsnull"] != null) { + queryParameters["bindings__isnull"] = requestParameters["bindingsIsnull"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["promptstageIsnull"] != null) { + queryParameters["promptstage__isnull"] = requestParameters["promptstageIsnull"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/policies/all/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Policy Viewset + */ + async policiesAllListRaw( + requestParameters: PoliciesAllListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.policiesAllListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedPolicyListFromJSON(jsonValue), + ); + } + + /** + * Policy Viewset + */ + async policiesAllList( + requestParameters: PoliciesAllListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.policiesAllListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for policiesAllRetrieve without sending the request + */ + async policiesAllRetrieveRequestOpts( + requestParameters: PoliciesAllRetrieveRequest, + ): Promise { + if (requestParameters["policyUuid"] == null) { + throw new runtime.RequiredError( + "policyUuid", + 'Required parameter "policyUuid" was null or undefined when calling policiesAllRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/policies/all/{policy_uuid}/`; + urlPath = urlPath.replace( + `{${"policy_uuid"}}`, + encodeURIComponent(String(requestParameters["policyUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Policy Viewset + */ + async policiesAllRetrieveRaw( + requestParameters: PoliciesAllRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.policiesAllRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => PolicyFromJSON(jsonValue)); + } + + /** + * Policy Viewset + */ + async policiesAllRetrieve( + requestParameters: PoliciesAllRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.policiesAllRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for policiesAllTestCreate without sending the request + */ + async policiesAllTestCreateRequestOpts( + requestParameters: PoliciesAllTestCreateRequest, + ): Promise { + if (requestParameters["policyUuid"] == null) { + throw new runtime.RequiredError( + "policyUuid", + 'Required parameter "policyUuid" was null or undefined when calling policiesAllTestCreate().', + ); + } + + if (requestParameters["policyTestRequest"] == null) { + throw new runtime.RequiredError( + "policyTestRequest", + 'Required parameter "policyTestRequest" was null or undefined when calling policiesAllTestCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/policies/all/{policy_uuid}/test/`; + urlPath = urlPath.replace( + `{${"policy_uuid"}}`, + encodeURIComponent(String(requestParameters["policyUuid"])), + ); + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: PolicyTestRequestToJSON(requestParameters["policyTestRequest"]), + }; + } + + /** + * Test policy + */ + async policiesAllTestCreateRaw( + requestParameters: PoliciesAllTestCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.policiesAllTestCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PolicyTestResultFromJSON(jsonValue), + ); + } + + /** + * Test policy + */ + async policiesAllTestCreate( + requestParameters: PoliciesAllTestCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.policiesAllTestCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for policiesAllTypesList without sending the request + */ + async policiesAllTypesListRequestOpts(): Promise { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/policies/all/types/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get all creatable types + */ + async policiesAllTypesListRaw( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.policiesAllTypesListRequestOpts(); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + jsonValue.map(TypeCreateFromJSON), + ); + } + + /** + * Get all creatable types + */ + async policiesAllTypesList( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.policiesAllTypesListRaw(initOverrides); + return await response.value(); + } + + /** + * Creates request options for policiesAllUsedByList without sending the request + */ + async policiesAllUsedByListRequestOpts( + requestParameters: PoliciesAllUsedByListRequest, + ): Promise { + if (requestParameters["policyUuid"] == null) { + throw new runtime.RequiredError( + "policyUuid", + 'Required parameter "policyUuid" was null or undefined when calling policiesAllUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/policies/all/{policy_uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"policy_uuid"}}`, + encodeURIComponent(String(requestParameters["policyUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async policiesAllUsedByListRaw( + requestParameters: PoliciesAllUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.policiesAllUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async policiesAllUsedByList( + requestParameters: PoliciesAllUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.policiesAllUsedByListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for policiesBindingsCreate without sending the request + */ + async policiesBindingsCreateRequestOpts( + requestParameters: PoliciesBindingsCreateRequest, + ): Promise { + if (requestParameters["policyBindingRequest"] == null) { + throw new runtime.RequiredError( + "policyBindingRequest", + 'Required parameter "policyBindingRequest" was null or undefined when calling policiesBindingsCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/policies/bindings/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: PolicyBindingRequestToJSON(requestParameters["policyBindingRequest"]), + }; + } + + /** + * PolicyBinding Viewset + */ + async policiesBindingsCreateRaw( + requestParameters: PoliciesBindingsCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.policiesBindingsCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PolicyBindingFromJSON(jsonValue), + ); + } + + /** + * PolicyBinding Viewset + */ + async policiesBindingsCreate( + requestParameters: PoliciesBindingsCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.policiesBindingsCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for policiesBindingsDestroy without sending the request + */ + async policiesBindingsDestroyRequestOpts( + requestParameters: PoliciesBindingsDestroyRequest, + ): Promise { + if (requestParameters["policyBindingUuid"] == null) { + throw new runtime.RequiredError( + "policyBindingUuid", + 'Required parameter "policyBindingUuid" was null or undefined when calling policiesBindingsDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/policies/bindings/{policy_binding_uuid}/`; + urlPath = urlPath.replace( + `{${"policy_binding_uuid"}}`, + encodeURIComponent(String(requestParameters["policyBindingUuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * PolicyBinding Viewset + */ + async policiesBindingsDestroyRaw( + requestParameters: PoliciesBindingsDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.policiesBindingsDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * PolicyBinding Viewset + */ + async policiesBindingsDestroy( + requestParameters: PoliciesBindingsDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.policiesBindingsDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for policiesBindingsList without sending the request + */ + async policiesBindingsListRequestOpts( + requestParameters: PoliciesBindingsListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["enabled"] != null) { + queryParameters["enabled"] = requestParameters["enabled"]; + } + + if (requestParameters["order"] != null) { + queryParameters["order"] = requestParameters["order"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["policy"] != null) { + queryParameters["policy"] = requestParameters["policy"]; + } + + if (requestParameters["policyIsnull"] != null) { + queryParameters["policy__isnull"] = requestParameters["policyIsnull"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["target"] != null) { + queryParameters["target"] = requestParameters["target"]; + } + + if (requestParameters["targetIn"] != null) { + queryParameters["target_in"] = requestParameters["targetIn"]; + } + + if (requestParameters["timeout"] != null) { + queryParameters["timeout"] = requestParameters["timeout"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/policies/bindings/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * PolicyBinding Viewset + */ + async policiesBindingsListRaw( + requestParameters: PoliciesBindingsListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.policiesBindingsListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedPolicyBindingListFromJSON(jsonValue), + ); + } + + /** + * PolicyBinding Viewset + */ + async policiesBindingsList( + requestParameters: PoliciesBindingsListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.policiesBindingsListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for policiesBindingsPartialUpdate without sending the request + */ + async policiesBindingsPartialUpdateRequestOpts( + requestParameters: PoliciesBindingsPartialUpdateRequest, + ): Promise { + if (requestParameters["policyBindingUuid"] == null) { + throw new runtime.RequiredError( + "policyBindingUuid", + 'Required parameter "policyBindingUuid" was null or undefined when calling policiesBindingsPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/policies/bindings/{policy_binding_uuid}/`; + urlPath = urlPath.replace( + `{${"policy_binding_uuid"}}`, + encodeURIComponent(String(requestParameters["policyBindingUuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedPolicyBindingRequestToJSON( + requestParameters["patchedPolicyBindingRequest"], + ), + }; + } + + /** + * PolicyBinding Viewset + */ + async policiesBindingsPartialUpdateRaw( + requestParameters: PoliciesBindingsPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.policiesBindingsPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PolicyBindingFromJSON(jsonValue), + ); + } + + /** + * PolicyBinding Viewset + */ + async policiesBindingsPartialUpdate( + requestParameters: PoliciesBindingsPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.policiesBindingsPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for policiesBindingsRetrieve without sending the request + */ + async policiesBindingsRetrieveRequestOpts( + requestParameters: PoliciesBindingsRetrieveRequest, + ): Promise { + if (requestParameters["policyBindingUuid"] == null) { + throw new runtime.RequiredError( + "policyBindingUuid", + 'Required parameter "policyBindingUuid" was null or undefined when calling policiesBindingsRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/policies/bindings/{policy_binding_uuid}/`; + urlPath = urlPath.replace( + `{${"policy_binding_uuid"}}`, + encodeURIComponent(String(requestParameters["policyBindingUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * PolicyBinding Viewset + */ + async policiesBindingsRetrieveRaw( + requestParameters: PoliciesBindingsRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.policiesBindingsRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PolicyBindingFromJSON(jsonValue), + ); + } + + /** + * PolicyBinding Viewset + */ + async policiesBindingsRetrieve( + requestParameters: PoliciesBindingsRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.policiesBindingsRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for policiesBindingsUpdate without sending the request + */ + async policiesBindingsUpdateRequestOpts( + requestParameters: PoliciesBindingsUpdateRequest, + ): Promise { + if (requestParameters["policyBindingUuid"] == null) { + throw new runtime.RequiredError( + "policyBindingUuid", + 'Required parameter "policyBindingUuid" was null or undefined when calling policiesBindingsUpdate().', + ); + } + + if (requestParameters["policyBindingRequest"] == null) { + throw new runtime.RequiredError( + "policyBindingRequest", + 'Required parameter "policyBindingRequest" was null or undefined when calling policiesBindingsUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/policies/bindings/{policy_binding_uuid}/`; + urlPath = urlPath.replace( + `{${"policy_binding_uuid"}}`, + encodeURIComponent(String(requestParameters["policyBindingUuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: PolicyBindingRequestToJSON(requestParameters["policyBindingRequest"]), + }; + } + + /** + * PolicyBinding Viewset + */ + async policiesBindingsUpdateRaw( + requestParameters: PoliciesBindingsUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.policiesBindingsUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PolicyBindingFromJSON(jsonValue), + ); + } + + /** + * PolicyBinding Viewset + */ + async policiesBindingsUpdate( + requestParameters: PoliciesBindingsUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.policiesBindingsUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for policiesBindingsUsedByList without sending the request + */ + async policiesBindingsUsedByListRequestOpts( + requestParameters: PoliciesBindingsUsedByListRequest, + ): Promise { + if (requestParameters["policyBindingUuid"] == null) { + throw new runtime.RequiredError( + "policyBindingUuid", + 'Required parameter "policyBindingUuid" was null or undefined when calling policiesBindingsUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/policies/bindings/{policy_binding_uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"policy_binding_uuid"}}`, + encodeURIComponent(String(requestParameters["policyBindingUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async policiesBindingsUsedByListRaw( + requestParameters: PoliciesBindingsUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.policiesBindingsUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async policiesBindingsUsedByList( + requestParameters: PoliciesBindingsUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.policiesBindingsUsedByListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for policiesDummyCreate without sending the request + */ + async policiesDummyCreateRequestOpts( + requestParameters: PoliciesDummyCreateRequest, + ): Promise { + if (requestParameters["dummyPolicyRequest"] == null) { + throw new runtime.RequiredError( + "dummyPolicyRequest", + 'Required parameter "dummyPolicyRequest" was null or undefined when calling policiesDummyCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/policies/dummy/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: DummyPolicyRequestToJSON(requestParameters["dummyPolicyRequest"]), + }; + } + + /** + * Dummy Viewset + */ + async policiesDummyCreateRaw( + requestParameters: PoliciesDummyCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.policiesDummyCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => DummyPolicyFromJSON(jsonValue)); + } + + /** + * Dummy Viewset + */ + async policiesDummyCreate( + requestParameters: PoliciesDummyCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.policiesDummyCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for policiesDummyDestroy without sending the request + */ + async policiesDummyDestroyRequestOpts( + requestParameters: PoliciesDummyDestroyRequest, + ): Promise { + if (requestParameters["policyUuid"] == null) { + throw new runtime.RequiredError( + "policyUuid", + 'Required parameter "policyUuid" was null or undefined when calling policiesDummyDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/policies/dummy/{policy_uuid}/`; + urlPath = urlPath.replace( + `{${"policy_uuid"}}`, + encodeURIComponent(String(requestParameters["policyUuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Dummy Viewset + */ + async policiesDummyDestroyRaw( + requestParameters: PoliciesDummyDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.policiesDummyDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Dummy Viewset + */ + async policiesDummyDestroy( + requestParameters: PoliciesDummyDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.policiesDummyDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for policiesDummyList without sending the request + */ + async policiesDummyListRequestOpts( + requestParameters: PoliciesDummyListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["created"] != null) { + queryParameters["created"] = (requestParameters["created"] as any).toISOString(); + } + + if (requestParameters["executionLogging"] != null) { + queryParameters["execution_logging"] = requestParameters["executionLogging"]; + } + + if (requestParameters["lastUpdated"] != null) { + queryParameters["last_updated"] = ( + requestParameters["lastUpdated"] as any + ).toISOString(); + } + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["policyUuid"] != null) { + queryParameters["policy_uuid"] = requestParameters["policyUuid"]; + } + + if (requestParameters["result"] != null) { + queryParameters["result"] = requestParameters["result"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["waitMax"] != null) { + queryParameters["wait_max"] = requestParameters["waitMax"]; + } + + if (requestParameters["waitMin"] != null) { + queryParameters["wait_min"] = requestParameters["waitMin"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/policies/dummy/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Dummy Viewset + */ + async policiesDummyListRaw( + requestParameters: PoliciesDummyListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.policiesDummyListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedDummyPolicyListFromJSON(jsonValue), + ); + } + + /** + * Dummy Viewset + */ + async policiesDummyList( + requestParameters: PoliciesDummyListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.policiesDummyListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for policiesDummyPartialUpdate without sending the request + */ + async policiesDummyPartialUpdateRequestOpts( + requestParameters: PoliciesDummyPartialUpdateRequest, + ): Promise { + if (requestParameters["policyUuid"] == null) { + throw new runtime.RequiredError( + "policyUuid", + 'Required parameter "policyUuid" was null or undefined when calling policiesDummyPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/policies/dummy/{policy_uuid}/`; + urlPath = urlPath.replace( + `{${"policy_uuid"}}`, + encodeURIComponent(String(requestParameters["policyUuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedDummyPolicyRequestToJSON(requestParameters["patchedDummyPolicyRequest"]), + }; + } + + /** + * Dummy Viewset + */ + async policiesDummyPartialUpdateRaw( + requestParameters: PoliciesDummyPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.policiesDummyPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => DummyPolicyFromJSON(jsonValue)); + } + + /** + * Dummy Viewset + */ + async policiesDummyPartialUpdate( + requestParameters: PoliciesDummyPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.policiesDummyPartialUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for policiesDummyRetrieve without sending the request + */ + async policiesDummyRetrieveRequestOpts( + requestParameters: PoliciesDummyRetrieveRequest, + ): Promise { + if (requestParameters["policyUuid"] == null) { + throw new runtime.RequiredError( + "policyUuid", + 'Required parameter "policyUuid" was null or undefined when calling policiesDummyRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/policies/dummy/{policy_uuid}/`; + urlPath = urlPath.replace( + `{${"policy_uuid"}}`, + encodeURIComponent(String(requestParameters["policyUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Dummy Viewset + */ + async policiesDummyRetrieveRaw( + requestParameters: PoliciesDummyRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.policiesDummyRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => DummyPolicyFromJSON(jsonValue)); + } + + /** + * Dummy Viewset + */ + async policiesDummyRetrieve( + requestParameters: PoliciesDummyRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.policiesDummyRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for policiesDummyUpdate without sending the request + */ + async policiesDummyUpdateRequestOpts( + requestParameters: PoliciesDummyUpdateRequest, + ): Promise { + if (requestParameters["policyUuid"] == null) { + throw new runtime.RequiredError( + "policyUuid", + 'Required parameter "policyUuid" was null or undefined when calling policiesDummyUpdate().', + ); + } + + if (requestParameters["dummyPolicyRequest"] == null) { + throw new runtime.RequiredError( + "dummyPolicyRequest", + 'Required parameter "dummyPolicyRequest" was null or undefined when calling policiesDummyUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/policies/dummy/{policy_uuid}/`; + urlPath = urlPath.replace( + `{${"policy_uuid"}}`, + encodeURIComponent(String(requestParameters["policyUuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: DummyPolicyRequestToJSON(requestParameters["dummyPolicyRequest"]), + }; + } + + /** + * Dummy Viewset + */ + async policiesDummyUpdateRaw( + requestParameters: PoliciesDummyUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.policiesDummyUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => DummyPolicyFromJSON(jsonValue)); + } + + /** + * Dummy Viewset + */ + async policiesDummyUpdate( + requestParameters: PoliciesDummyUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.policiesDummyUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for policiesDummyUsedByList without sending the request + */ + async policiesDummyUsedByListRequestOpts( + requestParameters: PoliciesDummyUsedByListRequest, + ): Promise { + if (requestParameters["policyUuid"] == null) { + throw new runtime.RequiredError( + "policyUuid", + 'Required parameter "policyUuid" was null or undefined when calling policiesDummyUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/policies/dummy/{policy_uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"policy_uuid"}}`, + encodeURIComponent(String(requestParameters["policyUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async policiesDummyUsedByListRaw( + requestParameters: PoliciesDummyUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.policiesDummyUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async policiesDummyUsedByList( + requestParameters: PoliciesDummyUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.policiesDummyUsedByListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for policiesEventMatcherCreate without sending the request + */ + async policiesEventMatcherCreateRequestOpts( + requestParameters: PoliciesEventMatcherCreateRequest, + ): Promise { + if (requestParameters["eventMatcherPolicyRequest"] == null) { + throw new runtime.RequiredError( + "eventMatcherPolicyRequest", + 'Required parameter "eventMatcherPolicyRequest" was null or undefined when calling policiesEventMatcherCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/policies/event_matcher/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: EventMatcherPolicyRequestToJSON(requestParameters["eventMatcherPolicyRequest"]), + }; + } + + /** + * Event Matcher Policy Viewset + */ + async policiesEventMatcherCreateRaw( + requestParameters: PoliciesEventMatcherCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.policiesEventMatcherCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + EventMatcherPolicyFromJSON(jsonValue), + ); + } + + /** + * Event Matcher Policy Viewset + */ + async policiesEventMatcherCreate( + requestParameters: PoliciesEventMatcherCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.policiesEventMatcherCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for policiesEventMatcherDestroy without sending the request + */ + async policiesEventMatcherDestroyRequestOpts( + requestParameters: PoliciesEventMatcherDestroyRequest, + ): Promise { + if (requestParameters["policyUuid"] == null) { + throw new runtime.RequiredError( + "policyUuid", + 'Required parameter "policyUuid" was null or undefined when calling policiesEventMatcherDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/policies/event_matcher/{policy_uuid}/`; + urlPath = urlPath.replace( + `{${"policy_uuid"}}`, + encodeURIComponent(String(requestParameters["policyUuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Event Matcher Policy Viewset + */ + async policiesEventMatcherDestroyRaw( + requestParameters: PoliciesEventMatcherDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.policiesEventMatcherDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Event Matcher Policy Viewset + */ + async policiesEventMatcherDestroy( + requestParameters: PoliciesEventMatcherDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.policiesEventMatcherDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for policiesEventMatcherList without sending the request + */ + async policiesEventMatcherListRequestOpts( + requestParameters: PoliciesEventMatcherListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["action"] != null) { + queryParameters["action"] = requestParameters["action"]; + } + + if (requestParameters["app"] != null) { + queryParameters["app"] = requestParameters["app"]; + } + + if (requestParameters["clientIp"] != null) { + queryParameters["client_ip"] = requestParameters["clientIp"]; + } + + if (requestParameters["created"] != null) { + queryParameters["created"] = (requestParameters["created"] as any).toISOString(); + } + + if (requestParameters["executionLogging"] != null) { + queryParameters["execution_logging"] = requestParameters["executionLogging"]; + } + + if (requestParameters["lastUpdated"] != null) { + queryParameters["last_updated"] = ( + requestParameters["lastUpdated"] as any + ).toISOString(); + } + + if (requestParameters["model"] != null) { + queryParameters["model"] = requestParameters["model"]; + } + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["policyUuid"] != null) { + queryParameters["policy_uuid"] = requestParameters["policyUuid"]; + } + + if (requestParameters["query"] != null) { + queryParameters["query"] = requestParameters["query"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/policies/event_matcher/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Event Matcher Policy Viewset + */ + async policiesEventMatcherListRaw( + requestParameters: PoliciesEventMatcherListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.policiesEventMatcherListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedEventMatcherPolicyListFromJSON(jsonValue), + ); + } + + /** + * Event Matcher Policy Viewset + */ + async policiesEventMatcherList( + requestParameters: PoliciesEventMatcherListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.policiesEventMatcherListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for policiesEventMatcherPartialUpdate without sending the request + */ + async policiesEventMatcherPartialUpdateRequestOpts( + requestParameters: PoliciesEventMatcherPartialUpdateRequest, + ): Promise { + if (requestParameters["policyUuid"] == null) { + throw new runtime.RequiredError( + "policyUuid", + 'Required parameter "policyUuid" was null or undefined when calling policiesEventMatcherPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/policies/event_matcher/{policy_uuid}/`; + urlPath = urlPath.replace( + `{${"policy_uuid"}}`, + encodeURIComponent(String(requestParameters["policyUuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedEventMatcherPolicyRequestToJSON( + requestParameters["patchedEventMatcherPolicyRequest"], + ), + }; + } + + /** + * Event Matcher Policy Viewset + */ + async policiesEventMatcherPartialUpdateRaw( + requestParameters: PoliciesEventMatcherPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.policiesEventMatcherPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + EventMatcherPolicyFromJSON(jsonValue), + ); + } + + /** + * Event Matcher Policy Viewset + */ + async policiesEventMatcherPartialUpdate( + requestParameters: PoliciesEventMatcherPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.policiesEventMatcherPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for policiesEventMatcherRetrieve without sending the request + */ + async policiesEventMatcherRetrieveRequestOpts( + requestParameters: PoliciesEventMatcherRetrieveRequest, + ): Promise { + if (requestParameters["policyUuid"] == null) { + throw new runtime.RequiredError( + "policyUuid", + 'Required parameter "policyUuid" was null or undefined when calling policiesEventMatcherRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/policies/event_matcher/{policy_uuid}/`; + urlPath = urlPath.replace( + `{${"policy_uuid"}}`, + encodeURIComponent(String(requestParameters["policyUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Event Matcher Policy Viewset + */ + async policiesEventMatcherRetrieveRaw( + requestParameters: PoliciesEventMatcherRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.policiesEventMatcherRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + EventMatcherPolicyFromJSON(jsonValue), + ); + } + + /** + * Event Matcher Policy Viewset + */ + async policiesEventMatcherRetrieve( + requestParameters: PoliciesEventMatcherRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.policiesEventMatcherRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for policiesEventMatcherUpdate without sending the request + */ + async policiesEventMatcherUpdateRequestOpts( + requestParameters: PoliciesEventMatcherUpdateRequest, + ): Promise { + if (requestParameters["policyUuid"] == null) { + throw new runtime.RequiredError( + "policyUuid", + 'Required parameter "policyUuid" was null or undefined when calling policiesEventMatcherUpdate().', + ); + } + + if (requestParameters["eventMatcherPolicyRequest"] == null) { + throw new runtime.RequiredError( + "eventMatcherPolicyRequest", + 'Required parameter "eventMatcherPolicyRequest" was null or undefined when calling policiesEventMatcherUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/policies/event_matcher/{policy_uuid}/`; + urlPath = urlPath.replace( + `{${"policy_uuid"}}`, + encodeURIComponent(String(requestParameters["policyUuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: EventMatcherPolicyRequestToJSON(requestParameters["eventMatcherPolicyRequest"]), + }; + } + + /** + * Event Matcher Policy Viewset + */ + async policiesEventMatcherUpdateRaw( + requestParameters: PoliciesEventMatcherUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.policiesEventMatcherUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + EventMatcherPolicyFromJSON(jsonValue), + ); + } + + /** + * Event Matcher Policy Viewset + */ + async policiesEventMatcherUpdate( + requestParameters: PoliciesEventMatcherUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.policiesEventMatcherUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for policiesEventMatcherUsedByList without sending the request + */ + async policiesEventMatcherUsedByListRequestOpts( + requestParameters: PoliciesEventMatcherUsedByListRequest, + ): Promise { + if (requestParameters["policyUuid"] == null) { + throw new runtime.RequiredError( + "policyUuid", + 'Required parameter "policyUuid" was null or undefined when calling policiesEventMatcherUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/policies/event_matcher/{policy_uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"policy_uuid"}}`, + encodeURIComponent(String(requestParameters["policyUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async policiesEventMatcherUsedByListRaw( + requestParameters: PoliciesEventMatcherUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.policiesEventMatcherUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async policiesEventMatcherUsedByList( + requestParameters: PoliciesEventMatcherUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.policiesEventMatcherUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for policiesExpressionCreate without sending the request + */ + async policiesExpressionCreateRequestOpts( + requestParameters: PoliciesExpressionCreateRequest, + ): Promise { + if (requestParameters["expressionPolicyRequest"] == null) { + throw new runtime.RequiredError( + "expressionPolicyRequest", + 'Required parameter "expressionPolicyRequest" was null or undefined when calling policiesExpressionCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/policies/expression/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: ExpressionPolicyRequestToJSON(requestParameters["expressionPolicyRequest"]), + }; + } + + /** + * Source Viewset + */ + async policiesExpressionCreateRaw( + requestParameters: PoliciesExpressionCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.policiesExpressionCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + ExpressionPolicyFromJSON(jsonValue), + ); + } + + /** + * Source Viewset + */ + async policiesExpressionCreate( + requestParameters: PoliciesExpressionCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.policiesExpressionCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for policiesExpressionDestroy without sending the request + */ + async policiesExpressionDestroyRequestOpts( + requestParameters: PoliciesExpressionDestroyRequest, + ): Promise { + if (requestParameters["policyUuid"] == null) { + throw new runtime.RequiredError( + "policyUuid", + 'Required parameter "policyUuid" was null or undefined when calling policiesExpressionDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/policies/expression/{policy_uuid}/`; + urlPath = urlPath.replace( + `{${"policy_uuid"}}`, + encodeURIComponent(String(requestParameters["policyUuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Source Viewset + */ + async policiesExpressionDestroyRaw( + requestParameters: PoliciesExpressionDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.policiesExpressionDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Source Viewset + */ + async policiesExpressionDestroy( + requestParameters: PoliciesExpressionDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.policiesExpressionDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for policiesExpressionList without sending the request + */ + async policiesExpressionListRequestOpts( + requestParameters: PoliciesExpressionListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["created"] != null) { + queryParameters["created"] = (requestParameters["created"] as any).toISOString(); + } + + if (requestParameters["executionLogging"] != null) { + queryParameters["execution_logging"] = requestParameters["executionLogging"]; + } + + if (requestParameters["expression"] != null) { + queryParameters["expression"] = requestParameters["expression"]; + } + + if (requestParameters["lastUpdated"] != null) { + queryParameters["last_updated"] = ( + requestParameters["lastUpdated"] as any + ).toISOString(); + } + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["policyUuid"] != null) { + queryParameters["policy_uuid"] = requestParameters["policyUuid"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/policies/expression/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Source Viewset + */ + async policiesExpressionListRaw( + requestParameters: PoliciesExpressionListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.policiesExpressionListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedExpressionPolicyListFromJSON(jsonValue), + ); + } + + /** + * Source Viewset + */ + async policiesExpressionList( + requestParameters: PoliciesExpressionListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.policiesExpressionListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for policiesExpressionPartialUpdate without sending the request + */ + async policiesExpressionPartialUpdateRequestOpts( + requestParameters: PoliciesExpressionPartialUpdateRequest, + ): Promise { + if (requestParameters["policyUuid"] == null) { + throw new runtime.RequiredError( + "policyUuid", + 'Required parameter "policyUuid" was null or undefined when calling policiesExpressionPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/policies/expression/{policy_uuid}/`; + urlPath = urlPath.replace( + `{${"policy_uuid"}}`, + encodeURIComponent(String(requestParameters["policyUuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedExpressionPolicyRequestToJSON( + requestParameters["patchedExpressionPolicyRequest"], + ), + }; + } + + /** + * Source Viewset + */ + async policiesExpressionPartialUpdateRaw( + requestParameters: PoliciesExpressionPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.policiesExpressionPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + ExpressionPolicyFromJSON(jsonValue), + ); + } + + /** + * Source Viewset + */ + async policiesExpressionPartialUpdate( + requestParameters: PoliciesExpressionPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.policiesExpressionPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for policiesExpressionRetrieve without sending the request + */ + async policiesExpressionRetrieveRequestOpts( + requestParameters: PoliciesExpressionRetrieveRequest, + ): Promise { + if (requestParameters["policyUuid"] == null) { + throw new runtime.RequiredError( + "policyUuid", + 'Required parameter "policyUuid" was null or undefined when calling policiesExpressionRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/policies/expression/{policy_uuid}/`; + urlPath = urlPath.replace( + `{${"policy_uuid"}}`, + encodeURIComponent(String(requestParameters["policyUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Source Viewset + */ + async policiesExpressionRetrieveRaw( + requestParameters: PoliciesExpressionRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.policiesExpressionRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + ExpressionPolicyFromJSON(jsonValue), + ); + } + + /** + * Source Viewset + */ + async policiesExpressionRetrieve( + requestParameters: PoliciesExpressionRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.policiesExpressionRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for policiesExpressionUpdate without sending the request + */ + async policiesExpressionUpdateRequestOpts( + requestParameters: PoliciesExpressionUpdateRequest, + ): Promise { + if (requestParameters["policyUuid"] == null) { + throw new runtime.RequiredError( + "policyUuid", + 'Required parameter "policyUuid" was null or undefined when calling policiesExpressionUpdate().', + ); + } + + if (requestParameters["expressionPolicyRequest"] == null) { + throw new runtime.RequiredError( + "expressionPolicyRequest", + 'Required parameter "expressionPolicyRequest" was null or undefined when calling policiesExpressionUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/policies/expression/{policy_uuid}/`; + urlPath = urlPath.replace( + `{${"policy_uuid"}}`, + encodeURIComponent(String(requestParameters["policyUuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: ExpressionPolicyRequestToJSON(requestParameters["expressionPolicyRequest"]), + }; + } + + /** + * Source Viewset + */ + async policiesExpressionUpdateRaw( + requestParameters: PoliciesExpressionUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.policiesExpressionUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + ExpressionPolicyFromJSON(jsonValue), + ); + } + + /** + * Source Viewset + */ + async policiesExpressionUpdate( + requestParameters: PoliciesExpressionUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.policiesExpressionUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for policiesExpressionUsedByList without sending the request + */ + async policiesExpressionUsedByListRequestOpts( + requestParameters: PoliciesExpressionUsedByListRequest, + ): Promise { + if (requestParameters["policyUuid"] == null) { + throw new runtime.RequiredError( + "policyUuid", + 'Required parameter "policyUuid" was null or undefined when calling policiesExpressionUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/policies/expression/{policy_uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"policy_uuid"}}`, + encodeURIComponent(String(requestParameters["policyUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async policiesExpressionUsedByListRaw( + requestParameters: PoliciesExpressionUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.policiesExpressionUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async policiesExpressionUsedByList( + requestParameters: PoliciesExpressionUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.policiesExpressionUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for policiesGeoipCreate without sending the request + */ + async policiesGeoipCreateRequestOpts( + requestParameters: PoliciesGeoipCreateRequest, + ): Promise { + if (requestParameters["geoIPPolicyRequest"] == null) { + throw new runtime.RequiredError( + "geoIPPolicyRequest", + 'Required parameter "geoIPPolicyRequest" was null or undefined when calling policiesGeoipCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/policies/geoip/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: GeoIPPolicyRequestToJSON(requestParameters["geoIPPolicyRequest"]), + }; + } + + /** + * GeoIP Viewset + */ + async policiesGeoipCreateRaw( + requestParameters: PoliciesGeoipCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.policiesGeoipCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => GeoIPPolicyFromJSON(jsonValue)); + } + + /** + * GeoIP Viewset + */ + async policiesGeoipCreate( + requestParameters: PoliciesGeoipCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.policiesGeoipCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for policiesGeoipDestroy without sending the request + */ + async policiesGeoipDestroyRequestOpts( + requestParameters: PoliciesGeoipDestroyRequest, + ): Promise { + if (requestParameters["policyUuid"] == null) { + throw new runtime.RequiredError( + "policyUuid", + 'Required parameter "policyUuid" was null or undefined when calling policiesGeoipDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/policies/geoip/{policy_uuid}/`; + urlPath = urlPath.replace( + `{${"policy_uuid"}}`, + encodeURIComponent(String(requestParameters["policyUuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * GeoIP Viewset + */ + async policiesGeoipDestroyRaw( + requestParameters: PoliciesGeoipDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.policiesGeoipDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * GeoIP Viewset + */ + async policiesGeoipDestroy( + requestParameters: PoliciesGeoipDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.policiesGeoipDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for policiesGeoipIso3166List without sending the request + */ + async policiesGeoipIso3166ListRequestOpts(): Promise { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/policies/geoip_iso3166/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get all countries in ISO-3166-1 + */ + async policiesGeoipIso3166ListRaw( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.policiesGeoipIso3166ListRequestOpts(); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + jsonValue.map(DetailedCountryFromJSON), + ); + } + + /** + * Get all countries in ISO-3166-1 + */ + async policiesGeoipIso3166List( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.policiesGeoipIso3166ListRaw(initOverrides); + return await response.value(); + } + + /** + * Creates request options for policiesGeoipList without sending the request + */ + async policiesGeoipListRequestOpts( + requestParameters: PoliciesGeoipListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/policies/geoip/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * GeoIP Viewset + */ + async policiesGeoipListRaw( + requestParameters: PoliciesGeoipListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.policiesGeoipListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedGeoIPPolicyListFromJSON(jsonValue), + ); + } + + /** + * GeoIP Viewset + */ + async policiesGeoipList( + requestParameters: PoliciesGeoipListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.policiesGeoipListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for policiesGeoipPartialUpdate without sending the request + */ + async policiesGeoipPartialUpdateRequestOpts( + requestParameters: PoliciesGeoipPartialUpdateRequest, + ): Promise { + if (requestParameters["policyUuid"] == null) { + throw new runtime.RequiredError( + "policyUuid", + 'Required parameter "policyUuid" was null or undefined when calling policiesGeoipPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/policies/geoip/{policy_uuid}/`; + urlPath = urlPath.replace( + `{${"policy_uuid"}}`, + encodeURIComponent(String(requestParameters["policyUuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedGeoIPPolicyRequestToJSON(requestParameters["patchedGeoIPPolicyRequest"]), + }; + } + + /** + * GeoIP Viewset + */ + async policiesGeoipPartialUpdateRaw( + requestParameters: PoliciesGeoipPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.policiesGeoipPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => GeoIPPolicyFromJSON(jsonValue)); + } + + /** + * GeoIP Viewset + */ + async policiesGeoipPartialUpdate( + requestParameters: PoliciesGeoipPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.policiesGeoipPartialUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for policiesGeoipRetrieve without sending the request + */ + async policiesGeoipRetrieveRequestOpts( + requestParameters: PoliciesGeoipRetrieveRequest, + ): Promise { + if (requestParameters["policyUuid"] == null) { + throw new runtime.RequiredError( + "policyUuid", + 'Required parameter "policyUuid" was null or undefined when calling policiesGeoipRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/policies/geoip/{policy_uuid}/`; + urlPath = urlPath.replace( + `{${"policy_uuid"}}`, + encodeURIComponent(String(requestParameters["policyUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * GeoIP Viewset + */ + async policiesGeoipRetrieveRaw( + requestParameters: PoliciesGeoipRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.policiesGeoipRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => GeoIPPolicyFromJSON(jsonValue)); + } + + /** + * GeoIP Viewset + */ + async policiesGeoipRetrieve( + requestParameters: PoliciesGeoipRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.policiesGeoipRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for policiesGeoipUpdate without sending the request + */ + async policiesGeoipUpdateRequestOpts( + requestParameters: PoliciesGeoipUpdateRequest, + ): Promise { + if (requestParameters["policyUuid"] == null) { + throw new runtime.RequiredError( + "policyUuid", + 'Required parameter "policyUuid" was null or undefined when calling policiesGeoipUpdate().', + ); + } + + if (requestParameters["geoIPPolicyRequest"] == null) { + throw new runtime.RequiredError( + "geoIPPolicyRequest", + 'Required parameter "geoIPPolicyRequest" was null or undefined when calling policiesGeoipUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/policies/geoip/{policy_uuid}/`; + urlPath = urlPath.replace( + `{${"policy_uuid"}}`, + encodeURIComponent(String(requestParameters["policyUuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: GeoIPPolicyRequestToJSON(requestParameters["geoIPPolicyRequest"]), + }; + } + + /** + * GeoIP Viewset + */ + async policiesGeoipUpdateRaw( + requestParameters: PoliciesGeoipUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.policiesGeoipUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => GeoIPPolicyFromJSON(jsonValue)); + } + + /** + * GeoIP Viewset + */ + async policiesGeoipUpdate( + requestParameters: PoliciesGeoipUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.policiesGeoipUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for policiesGeoipUsedByList without sending the request + */ + async policiesGeoipUsedByListRequestOpts( + requestParameters: PoliciesGeoipUsedByListRequest, + ): Promise { + if (requestParameters["policyUuid"] == null) { + throw new runtime.RequiredError( + "policyUuid", + 'Required parameter "policyUuid" was null or undefined when calling policiesGeoipUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/policies/geoip/{policy_uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"policy_uuid"}}`, + encodeURIComponent(String(requestParameters["policyUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async policiesGeoipUsedByListRaw( + requestParameters: PoliciesGeoipUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.policiesGeoipUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async policiesGeoipUsedByList( + requestParameters: PoliciesGeoipUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.policiesGeoipUsedByListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for policiesPasswordCreate without sending the request + */ + async policiesPasswordCreateRequestOpts( + requestParameters: PoliciesPasswordCreateRequest, + ): Promise { + if (requestParameters["passwordPolicyRequest"] == null) { + throw new runtime.RequiredError( + "passwordPolicyRequest", + 'Required parameter "passwordPolicyRequest" was null or undefined when calling policiesPasswordCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/policies/password/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: PasswordPolicyRequestToJSON(requestParameters["passwordPolicyRequest"]), + }; + } + + /** + * Password Policy Viewset + */ + async policiesPasswordCreateRaw( + requestParameters: PoliciesPasswordCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.policiesPasswordCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PasswordPolicyFromJSON(jsonValue), + ); + } + + /** + * Password Policy Viewset + */ + async policiesPasswordCreate( + requestParameters: PoliciesPasswordCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.policiesPasswordCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for policiesPasswordDestroy without sending the request + */ + async policiesPasswordDestroyRequestOpts( + requestParameters: PoliciesPasswordDestroyRequest, + ): Promise { + if (requestParameters["policyUuid"] == null) { + throw new runtime.RequiredError( + "policyUuid", + 'Required parameter "policyUuid" was null or undefined when calling policiesPasswordDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/policies/password/{policy_uuid}/`; + urlPath = urlPath.replace( + `{${"policy_uuid"}}`, + encodeURIComponent(String(requestParameters["policyUuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Password Policy Viewset + */ + async policiesPasswordDestroyRaw( + requestParameters: PoliciesPasswordDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.policiesPasswordDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Password Policy Viewset + */ + async policiesPasswordDestroy( + requestParameters: PoliciesPasswordDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.policiesPasswordDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for policiesPasswordExpiryCreate without sending the request + */ + async policiesPasswordExpiryCreateRequestOpts( + requestParameters: PoliciesPasswordExpiryCreateRequest, + ): Promise { + if (requestParameters["passwordExpiryPolicyRequest"] == null) { + throw new runtime.RequiredError( + "passwordExpiryPolicyRequest", + 'Required parameter "passwordExpiryPolicyRequest" was null or undefined when calling policiesPasswordExpiryCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/policies/password_expiry/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: PasswordExpiryPolicyRequestToJSON( + requestParameters["passwordExpiryPolicyRequest"], + ), + }; + } + + /** + * Password Expiry Viewset + */ + async policiesPasswordExpiryCreateRaw( + requestParameters: PoliciesPasswordExpiryCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.policiesPasswordExpiryCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PasswordExpiryPolicyFromJSON(jsonValue), + ); + } + + /** + * Password Expiry Viewset + */ + async policiesPasswordExpiryCreate( + requestParameters: PoliciesPasswordExpiryCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.policiesPasswordExpiryCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for policiesPasswordExpiryDestroy without sending the request + */ + async policiesPasswordExpiryDestroyRequestOpts( + requestParameters: PoliciesPasswordExpiryDestroyRequest, + ): Promise { + if (requestParameters["policyUuid"] == null) { + throw new runtime.RequiredError( + "policyUuid", + 'Required parameter "policyUuid" was null or undefined when calling policiesPasswordExpiryDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/policies/password_expiry/{policy_uuid}/`; + urlPath = urlPath.replace( + `{${"policy_uuid"}}`, + encodeURIComponent(String(requestParameters["policyUuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Password Expiry Viewset + */ + async policiesPasswordExpiryDestroyRaw( + requestParameters: PoliciesPasswordExpiryDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.policiesPasswordExpiryDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Password Expiry Viewset + */ + async policiesPasswordExpiryDestroy( + requestParameters: PoliciesPasswordExpiryDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.policiesPasswordExpiryDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for policiesPasswordExpiryList without sending the request + */ + async policiesPasswordExpiryListRequestOpts( + requestParameters: PoliciesPasswordExpiryListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["created"] != null) { + queryParameters["created"] = (requestParameters["created"] as any).toISOString(); + } + + if (requestParameters["days"] != null) { + queryParameters["days"] = requestParameters["days"]; + } + + if (requestParameters["denyOnly"] != null) { + queryParameters["deny_only"] = requestParameters["denyOnly"]; + } + + if (requestParameters["executionLogging"] != null) { + queryParameters["execution_logging"] = requestParameters["executionLogging"]; + } + + if (requestParameters["lastUpdated"] != null) { + queryParameters["last_updated"] = ( + requestParameters["lastUpdated"] as any + ).toISOString(); + } + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["policyUuid"] != null) { + queryParameters["policy_uuid"] = requestParameters["policyUuid"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/policies/password_expiry/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Password Expiry Viewset + */ + async policiesPasswordExpiryListRaw( + requestParameters: PoliciesPasswordExpiryListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.policiesPasswordExpiryListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedPasswordExpiryPolicyListFromJSON(jsonValue), + ); + } + + /** + * Password Expiry Viewset + */ + async policiesPasswordExpiryList( + requestParameters: PoliciesPasswordExpiryListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.policiesPasswordExpiryListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for policiesPasswordExpiryPartialUpdate without sending the request + */ + async policiesPasswordExpiryPartialUpdateRequestOpts( + requestParameters: PoliciesPasswordExpiryPartialUpdateRequest, + ): Promise { + if (requestParameters["policyUuid"] == null) { + throw new runtime.RequiredError( + "policyUuid", + 'Required parameter "policyUuid" was null or undefined when calling policiesPasswordExpiryPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/policies/password_expiry/{policy_uuid}/`; + urlPath = urlPath.replace( + `{${"policy_uuid"}}`, + encodeURIComponent(String(requestParameters["policyUuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedPasswordExpiryPolicyRequestToJSON( + requestParameters["patchedPasswordExpiryPolicyRequest"], + ), + }; + } + + /** + * Password Expiry Viewset + */ + async policiesPasswordExpiryPartialUpdateRaw( + requestParameters: PoliciesPasswordExpiryPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.policiesPasswordExpiryPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PasswordExpiryPolicyFromJSON(jsonValue), + ); + } + + /** + * Password Expiry Viewset + */ + async policiesPasswordExpiryPartialUpdate( + requestParameters: PoliciesPasswordExpiryPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.policiesPasswordExpiryPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for policiesPasswordExpiryRetrieve without sending the request + */ + async policiesPasswordExpiryRetrieveRequestOpts( + requestParameters: PoliciesPasswordExpiryRetrieveRequest, + ): Promise { + if (requestParameters["policyUuid"] == null) { + throw new runtime.RequiredError( + "policyUuid", + 'Required parameter "policyUuid" was null or undefined when calling policiesPasswordExpiryRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/policies/password_expiry/{policy_uuid}/`; + urlPath = urlPath.replace( + `{${"policy_uuid"}}`, + encodeURIComponent(String(requestParameters["policyUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Password Expiry Viewset + */ + async policiesPasswordExpiryRetrieveRaw( + requestParameters: PoliciesPasswordExpiryRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.policiesPasswordExpiryRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PasswordExpiryPolicyFromJSON(jsonValue), + ); + } + + /** + * Password Expiry Viewset + */ + async policiesPasswordExpiryRetrieve( + requestParameters: PoliciesPasswordExpiryRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.policiesPasswordExpiryRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for policiesPasswordExpiryUpdate without sending the request + */ + async policiesPasswordExpiryUpdateRequestOpts( + requestParameters: PoliciesPasswordExpiryUpdateRequest, + ): Promise { + if (requestParameters["policyUuid"] == null) { + throw new runtime.RequiredError( + "policyUuid", + 'Required parameter "policyUuid" was null or undefined when calling policiesPasswordExpiryUpdate().', + ); + } + + if (requestParameters["passwordExpiryPolicyRequest"] == null) { + throw new runtime.RequiredError( + "passwordExpiryPolicyRequest", + 'Required parameter "passwordExpiryPolicyRequest" was null or undefined when calling policiesPasswordExpiryUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/policies/password_expiry/{policy_uuid}/`; + urlPath = urlPath.replace( + `{${"policy_uuid"}}`, + encodeURIComponent(String(requestParameters["policyUuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: PasswordExpiryPolicyRequestToJSON( + requestParameters["passwordExpiryPolicyRequest"], + ), + }; + } + + /** + * Password Expiry Viewset + */ + async policiesPasswordExpiryUpdateRaw( + requestParameters: PoliciesPasswordExpiryUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.policiesPasswordExpiryUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PasswordExpiryPolicyFromJSON(jsonValue), + ); + } + + /** + * Password Expiry Viewset + */ + async policiesPasswordExpiryUpdate( + requestParameters: PoliciesPasswordExpiryUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.policiesPasswordExpiryUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for policiesPasswordExpiryUsedByList without sending the request + */ + async policiesPasswordExpiryUsedByListRequestOpts( + requestParameters: PoliciesPasswordExpiryUsedByListRequest, + ): Promise { + if (requestParameters["policyUuid"] == null) { + throw new runtime.RequiredError( + "policyUuid", + 'Required parameter "policyUuid" was null or undefined when calling policiesPasswordExpiryUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/policies/password_expiry/{policy_uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"policy_uuid"}}`, + encodeURIComponent(String(requestParameters["policyUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async policiesPasswordExpiryUsedByListRaw( + requestParameters: PoliciesPasswordExpiryUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.policiesPasswordExpiryUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async policiesPasswordExpiryUsedByList( + requestParameters: PoliciesPasswordExpiryUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.policiesPasswordExpiryUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for policiesPasswordList without sending the request + */ + async policiesPasswordListRequestOpts( + requestParameters: PoliciesPasswordListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["amountDigits"] != null) { + queryParameters["amount_digits"] = requestParameters["amountDigits"]; + } + + if (requestParameters["amountLowercase"] != null) { + queryParameters["amount_lowercase"] = requestParameters["amountLowercase"]; + } + + if (requestParameters["amountSymbols"] != null) { + queryParameters["amount_symbols"] = requestParameters["amountSymbols"]; + } + + if (requestParameters["amountUppercase"] != null) { + queryParameters["amount_uppercase"] = requestParameters["amountUppercase"]; + } + + if (requestParameters["checkHaveIBeenPwned"] != null) { + queryParameters["check_have_i_been_pwned"] = requestParameters["checkHaveIBeenPwned"]; + } + + if (requestParameters["checkStaticRules"] != null) { + queryParameters["check_static_rules"] = requestParameters["checkStaticRules"]; + } + + if (requestParameters["checkZxcvbn"] != null) { + queryParameters["check_zxcvbn"] = requestParameters["checkZxcvbn"]; + } + + if (requestParameters["created"] != null) { + queryParameters["created"] = (requestParameters["created"] as any).toISOString(); + } + + if (requestParameters["errorMessage"] != null) { + queryParameters["error_message"] = requestParameters["errorMessage"]; + } + + if (requestParameters["executionLogging"] != null) { + queryParameters["execution_logging"] = requestParameters["executionLogging"]; + } + + if (requestParameters["hibpAllowedCount"] != null) { + queryParameters["hibp_allowed_count"] = requestParameters["hibpAllowedCount"]; + } + + if (requestParameters["lastUpdated"] != null) { + queryParameters["last_updated"] = ( + requestParameters["lastUpdated"] as any + ).toISOString(); + } + + if (requestParameters["lengthMin"] != null) { + queryParameters["length_min"] = requestParameters["lengthMin"]; + } + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["passwordField"] != null) { + queryParameters["password_field"] = requestParameters["passwordField"]; + } + + if (requestParameters["policyUuid"] != null) { + queryParameters["policy_uuid"] = requestParameters["policyUuid"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["symbolCharset"] != null) { + queryParameters["symbol_charset"] = requestParameters["symbolCharset"]; + } + + if (requestParameters["zxcvbnScoreThreshold"] != null) { + queryParameters["zxcvbn_score_threshold"] = requestParameters["zxcvbnScoreThreshold"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/policies/password/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Password Policy Viewset + */ + async policiesPasswordListRaw( + requestParameters: PoliciesPasswordListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.policiesPasswordListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedPasswordPolicyListFromJSON(jsonValue), + ); + } + + /** + * Password Policy Viewset + */ + async policiesPasswordList( + requestParameters: PoliciesPasswordListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.policiesPasswordListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for policiesPasswordPartialUpdate without sending the request + */ + async policiesPasswordPartialUpdateRequestOpts( + requestParameters: PoliciesPasswordPartialUpdateRequest, + ): Promise { + if (requestParameters["policyUuid"] == null) { + throw new runtime.RequiredError( + "policyUuid", + 'Required parameter "policyUuid" was null or undefined when calling policiesPasswordPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/policies/password/{policy_uuid}/`; + urlPath = urlPath.replace( + `{${"policy_uuid"}}`, + encodeURIComponent(String(requestParameters["policyUuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedPasswordPolicyRequestToJSON( + requestParameters["patchedPasswordPolicyRequest"], + ), + }; + } + + /** + * Password Policy Viewset + */ + async policiesPasswordPartialUpdateRaw( + requestParameters: PoliciesPasswordPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.policiesPasswordPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PasswordPolicyFromJSON(jsonValue), + ); + } + + /** + * Password Policy Viewset + */ + async policiesPasswordPartialUpdate( + requestParameters: PoliciesPasswordPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.policiesPasswordPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for policiesPasswordRetrieve without sending the request + */ + async policiesPasswordRetrieveRequestOpts( + requestParameters: PoliciesPasswordRetrieveRequest, + ): Promise { + if (requestParameters["policyUuid"] == null) { + throw new runtime.RequiredError( + "policyUuid", + 'Required parameter "policyUuid" was null or undefined when calling policiesPasswordRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/policies/password/{policy_uuid}/`; + urlPath = urlPath.replace( + `{${"policy_uuid"}}`, + encodeURIComponent(String(requestParameters["policyUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Password Policy Viewset + */ + async policiesPasswordRetrieveRaw( + requestParameters: PoliciesPasswordRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.policiesPasswordRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PasswordPolicyFromJSON(jsonValue), + ); + } + + /** + * Password Policy Viewset + */ + async policiesPasswordRetrieve( + requestParameters: PoliciesPasswordRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.policiesPasswordRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for policiesPasswordUpdate without sending the request + */ + async policiesPasswordUpdateRequestOpts( + requestParameters: PoliciesPasswordUpdateRequest, + ): Promise { + if (requestParameters["policyUuid"] == null) { + throw new runtime.RequiredError( + "policyUuid", + 'Required parameter "policyUuid" was null or undefined when calling policiesPasswordUpdate().', + ); + } + + if (requestParameters["passwordPolicyRequest"] == null) { + throw new runtime.RequiredError( + "passwordPolicyRequest", + 'Required parameter "passwordPolicyRequest" was null or undefined when calling policiesPasswordUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/policies/password/{policy_uuid}/`; + urlPath = urlPath.replace( + `{${"policy_uuid"}}`, + encodeURIComponent(String(requestParameters["policyUuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: PasswordPolicyRequestToJSON(requestParameters["passwordPolicyRequest"]), + }; + } + + /** + * Password Policy Viewset + */ + async policiesPasswordUpdateRaw( + requestParameters: PoliciesPasswordUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.policiesPasswordUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PasswordPolicyFromJSON(jsonValue), + ); + } + + /** + * Password Policy Viewset + */ + async policiesPasswordUpdate( + requestParameters: PoliciesPasswordUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.policiesPasswordUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for policiesPasswordUsedByList without sending the request + */ + async policiesPasswordUsedByListRequestOpts( + requestParameters: PoliciesPasswordUsedByListRequest, + ): Promise { + if (requestParameters["policyUuid"] == null) { + throw new runtime.RequiredError( + "policyUuid", + 'Required parameter "policyUuid" was null or undefined when calling policiesPasswordUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/policies/password/{policy_uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"policy_uuid"}}`, + encodeURIComponent(String(requestParameters["policyUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async policiesPasswordUsedByListRaw( + requestParameters: PoliciesPasswordUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.policiesPasswordUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async policiesPasswordUsedByList( + requestParameters: PoliciesPasswordUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.policiesPasswordUsedByListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for policiesReputationCreate without sending the request + */ + async policiesReputationCreateRequestOpts( + requestParameters: PoliciesReputationCreateRequest, + ): Promise { + if (requestParameters["reputationPolicyRequest"] == null) { + throw new runtime.RequiredError( + "reputationPolicyRequest", + 'Required parameter "reputationPolicyRequest" was null or undefined when calling policiesReputationCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/policies/reputation/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: ReputationPolicyRequestToJSON(requestParameters["reputationPolicyRequest"]), + }; + } + + /** + * Reputation Policy Viewset + */ + async policiesReputationCreateRaw( + requestParameters: PoliciesReputationCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.policiesReputationCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + ReputationPolicyFromJSON(jsonValue), + ); + } + + /** + * Reputation Policy Viewset + */ + async policiesReputationCreate( + requestParameters: PoliciesReputationCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.policiesReputationCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for policiesReputationDestroy without sending the request + */ + async policiesReputationDestroyRequestOpts( + requestParameters: PoliciesReputationDestroyRequest, + ): Promise { + if (requestParameters["policyUuid"] == null) { + throw new runtime.RequiredError( + "policyUuid", + 'Required parameter "policyUuid" was null or undefined when calling policiesReputationDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/policies/reputation/{policy_uuid}/`; + urlPath = urlPath.replace( + `{${"policy_uuid"}}`, + encodeURIComponent(String(requestParameters["policyUuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Reputation Policy Viewset + */ + async policiesReputationDestroyRaw( + requestParameters: PoliciesReputationDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.policiesReputationDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Reputation Policy Viewset + */ + async policiesReputationDestroy( + requestParameters: PoliciesReputationDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.policiesReputationDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for policiesReputationList without sending the request + */ + async policiesReputationListRequestOpts( + requestParameters: PoliciesReputationListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["checkIp"] != null) { + queryParameters["check_ip"] = requestParameters["checkIp"]; + } + + if (requestParameters["checkUsername"] != null) { + queryParameters["check_username"] = requestParameters["checkUsername"]; + } + + if (requestParameters["created"] != null) { + queryParameters["created"] = (requestParameters["created"] as any).toISOString(); + } + + if (requestParameters["executionLogging"] != null) { + queryParameters["execution_logging"] = requestParameters["executionLogging"]; + } + + if (requestParameters["lastUpdated"] != null) { + queryParameters["last_updated"] = ( + requestParameters["lastUpdated"] as any + ).toISOString(); + } + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["policyUuid"] != null) { + queryParameters["policy_uuid"] = requestParameters["policyUuid"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["threshold"] != null) { + queryParameters["threshold"] = requestParameters["threshold"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/policies/reputation/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Reputation Policy Viewset + */ + async policiesReputationListRaw( + requestParameters: PoliciesReputationListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.policiesReputationListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedReputationPolicyListFromJSON(jsonValue), + ); + } + + /** + * Reputation Policy Viewset + */ + async policiesReputationList( + requestParameters: PoliciesReputationListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.policiesReputationListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for policiesReputationPartialUpdate without sending the request + */ + async policiesReputationPartialUpdateRequestOpts( + requestParameters: PoliciesReputationPartialUpdateRequest, + ): Promise { + if (requestParameters["policyUuid"] == null) { + throw new runtime.RequiredError( + "policyUuid", + 'Required parameter "policyUuid" was null or undefined when calling policiesReputationPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/policies/reputation/{policy_uuid}/`; + urlPath = urlPath.replace( + `{${"policy_uuid"}}`, + encodeURIComponent(String(requestParameters["policyUuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedReputationPolicyRequestToJSON( + requestParameters["patchedReputationPolicyRequest"], + ), + }; + } + + /** + * Reputation Policy Viewset + */ + async policiesReputationPartialUpdateRaw( + requestParameters: PoliciesReputationPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.policiesReputationPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + ReputationPolicyFromJSON(jsonValue), + ); + } + + /** + * Reputation Policy Viewset + */ + async policiesReputationPartialUpdate( + requestParameters: PoliciesReputationPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.policiesReputationPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for policiesReputationRetrieve without sending the request + */ + async policiesReputationRetrieveRequestOpts( + requestParameters: PoliciesReputationRetrieveRequest, + ): Promise { + if (requestParameters["policyUuid"] == null) { + throw new runtime.RequiredError( + "policyUuid", + 'Required parameter "policyUuid" was null or undefined when calling policiesReputationRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/policies/reputation/{policy_uuid}/`; + urlPath = urlPath.replace( + `{${"policy_uuid"}}`, + encodeURIComponent(String(requestParameters["policyUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Reputation Policy Viewset + */ + async policiesReputationRetrieveRaw( + requestParameters: PoliciesReputationRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.policiesReputationRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + ReputationPolicyFromJSON(jsonValue), + ); + } + + /** + * Reputation Policy Viewset + */ + async policiesReputationRetrieve( + requestParameters: PoliciesReputationRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.policiesReputationRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for policiesReputationScoresDestroy without sending the request + */ + async policiesReputationScoresDestroyRequestOpts( + requestParameters: PoliciesReputationScoresDestroyRequest, + ): Promise { + if (requestParameters["reputationUuid"] == null) { + throw new runtime.RequiredError( + "reputationUuid", + 'Required parameter "reputationUuid" was null or undefined when calling policiesReputationScoresDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/policies/reputation/scores/{reputation_uuid}/`; + urlPath = urlPath.replace( + `{${"reputation_uuid"}}`, + encodeURIComponent(String(requestParameters["reputationUuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Reputation Viewset + */ + async policiesReputationScoresDestroyRaw( + requestParameters: PoliciesReputationScoresDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.policiesReputationScoresDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Reputation Viewset + */ + async policiesReputationScoresDestroy( + requestParameters: PoliciesReputationScoresDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.policiesReputationScoresDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for policiesReputationScoresList without sending the request + */ + async policiesReputationScoresListRequestOpts( + requestParameters: PoliciesReputationScoresListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["identifier"] != null) { + queryParameters["identifier"] = requestParameters["identifier"]; + } + + if (requestParameters["identifierIn"] != null) { + queryParameters["identifier_in"] = requestParameters["identifierIn"]!.join( + runtime.COLLECTION_FORMATS["csv"], + ); + } + + if (requestParameters["ip"] != null) { + queryParameters["ip"] = requestParameters["ip"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["score"] != null) { + queryParameters["score"] = requestParameters["score"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/policies/reputation/scores/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Reputation Viewset + */ + async policiesReputationScoresListRaw( + requestParameters: PoliciesReputationScoresListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.policiesReputationScoresListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedReputationListFromJSON(jsonValue), + ); + } + + /** + * Reputation Viewset + */ + async policiesReputationScoresList( + requestParameters: PoliciesReputationScoresListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.policiesReputationScoresListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for policiesReputationScoresRetrieve without sending the request + */ + async policiesReputationScoresRetrieveRequestOpts( + requestParameters: PoliciesReputationScoresRetrieveRequest, + ): Promise { + if (requestParameters["reputationUuid"] == null) { + throw new runtime.RequiredError( + "reputationUuid", + 'Required parameter "reputationUuid" was null or undefined when calling policiesReputationScoresRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/policies/reputation/scores/{reputation_uuid}/`; + urlPath = urlPath.replace( + `{${"reputation_uuid"}}`, + encodeURIComponent(String(requestParameters["reputationUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Reputation Viewset + */ + async policiesReputationScoresRetrieveRaw( + requestParameters: PoliciesReputationScoresRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.policiesReputationScoresRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => ReputationFromJSON(jsonValue)); + } + + /** + * Reputation Viewset + */ + async policiesReputationScoresRetrieve( + requestParameters: PoliciesReputationScoresRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.policiesReputationScoresRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for policiesReputationScoresUsedByList without sending the request + */ + async policiesReputationScoresUsedByListRequestOpts( + requestParameters: PoliciesReputationScoresUsedByListRequest, + ): Promise { + if (requestParameters["reputationUuid"] == null) { + throw new runtime.RequiredError( + "reputationUuid", + 'Required parameter "reputationUuid" was null or undefined when calling policiesReputationScoresUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/policies/reputation/scores/{reputation_uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"reputation_uuid"}}`, + encodeURIComponent(String(requestParameters["reputationUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async policiesReputationScoresUsedByListRaw( + requestParameters: PoliciesReputationScoresUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.policiesReputationScoresUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async policiesReputationScoresUsedByList( + requestParameters: PoliciesReputationScoresUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.policiesReputationScoresUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for policiesReputationUpdate without sending the request + */ + async policiesReputationUpdateRequestOpts( + requestParameters: PoliciesReputationUpdateRequest, + ): Promise { + if (requestParameters["policyUuid"] == null) { + throw new runtime.RequiredError( + "policyUuid", + 'Required parameter "policyUuid" was null or undefined when calling policiesReputationUpdate().', + ); + } + + if (requestParameters["reputationPolicyRequest"] == null) { + throw new runtime.RequiredError( + "reputationPolicyRequest", + 'Required parameter "reputationPolicyRequest" was null or undefined when calling policiesReputationUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/policies/reputation/{policy_uuid}/`; + urlPath = urlPath.replace( + `{${"policy_uuid"}}`, + encodeURIComponent(String(requestParameters["policyUuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: ReputationPolicyRequestToJSON(requestParameters["reputationPolicyRequest"]), + }; + } + + /** + * Reputation Policy Viewset + */ + async policiesReputationUpdateRaw( + requestParameters: PoliciesReputationUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.policiesReputationUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + ReputationPolicyFromJSON(jsonValue), + ); + } + + /** + * Reputation Policy Viewset + */ + async policiesReputationUpdate( + requestParameters: PoliciesReputationUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.policiesReputationUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for policiesReputationUsedByList without sending the request + */ + async policiesReputationUsedByListRequestOpts( + requestParameters: PoliciesReputationUsedByListRequest, + ): Promise { + if (requestParameters["policyUuid"] == null) { + throw new runtime.RequiredError( + "policyUuid", + 'Required parameter "policyUuid" was null or undefined when calling policiesReputationUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/policies/reputation/{policy_uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"policy_uuid"}}`, + encodeURIComponent(String(requestParameters["policyUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async policiesReputationUsedByListRaw( + requestParameters: PoliciesReputationUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.policiesReputationUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async policiesReputationUsedByList( + requestParameters: PoliciesReputationUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.policiesReputationUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for policiesUniquePasswordCreate without sending the request + */ + async policiesUniquePasswordCreateRequestOpts( + requestParameters: PoliciesUniquePasswordCreateRequest, + ): Promise { + if (requestParameters["uniquePasswordPolicyRequest"] == null) { + throw new runtime.RequiredError( + "uniquePasswordPolicyRequest", + 'Required parameter "uniquePasswordPolicyRequest" was null or undefined when calling policiesUniquePasswordCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/policies/unique_password/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: UniquePasswordPolicyRequestToJSON( + requestParameters["uniquePasswordPolicyRequest"], + ), + }; + } + + /** + * Password Uniqueness Policy Viewset + */ + async policiesUniquePasswordCreateRaw( + requestParameters: PoliciesUniquePasswordCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.policiesUniquePasswordCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + UniquePasswordPolicyFromJSON(jsonValue), + ); + } + + /** + * Password Uniqueness Policy Viewset + */ + async policiesUniquePasswordCreate( + requestParameters: PoliciesUniquePasswordCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.policiesUniquePasswordCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for policiesUniquePasswordDestroy without sending the request + */ + async policiesUniquePasswordDestroyRequestOpts( + requestParameters: PoliciesUniquePasswordDestroyRequest, + ): Promise { + if (requestParameters["policyUuid"] == null) { + throw new runtime.RequiredError( + "policyUuid", + 'Required parameter "policyUuid" was null or undefined when calling policiesUniquePasswordDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/policies/unique_password/{policy_uuid}/`; + urlPath = urlPath.replace( + `{${"policy_uuid"}}`, + encodeURIComponent(String(requestParameters["policyUuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Password Uniqueness Policy Viewset + */ + async policiesUniquePasswordDestroyRaw( + requestParameters: PoliciesUniquePasswordDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.policiesUniquePasswordDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Password Uniqueness Policy Viewset + */ + async policiesUniquePasswordDestroy( + requestParameters: PoliciesUniquePasswordDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.policiesUniquePasswordDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for policiesUniquePasswordList without sending the request + */ + async policiesUniquePasswordListRequestOpts( + requestParameters: PoliciesUniquePasswordListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["created"] != null) { + queryParameters["created"] = (requestParameters["created"] as any).toISOString(); + } + + if (requestParameters["executionLogging"] != null) { + queryParameters["execution_logging"] = requestParameters["executionLogging"]; + } + + if (requestParameters["lastUpdated"] != null) { + queryParameters["last_updated"] = ( + requestParameters["lastUpdated"] as any + ).toISOString(); + } + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["numHistoricalPasswords"] != null) { + queryParameters["num_historical_passwords"] = + requestParameters["numHistoricalPasswords"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["passwordField"] != null) { + queryParameters["password_field"] = requestParameters["passwordField"]; + } + + if (requestParameters["policyUuid"] != null) { + queryParameters["policy_uuid"] = requestParameters["policyUuid"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/policies/unique_password/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Password Uniqueness Policy Viewset + */ + async policiesUniquePasswordListRaw( + requestParameters: PoliciesUniquePasswordListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.policiesUniquePasswordListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedUniquePasswordPolicyListFromJSON(jsonValue), + ); + } + + /** + * Password Uniqueness Policy Viewset + */ + async policiesUniquePasswordList( + requestParameters: PoliciesUniquePasswordListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.policiesUniquePasswordListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for policiesUniquePasswordPartialUpdate without sending the request + */ + async policiesUniquePasswordPartialUpdateRequestOpts( + requestParameters: PoliciesUniquePasswordPartialUpdateRequest, + ): Promise { + if (requestParameters["policyUuid"] == null) { + throw new runtime.RequiredError( + "policyUuid", + 'Required parameter "policyUuid" was null or undefined when calling policiesUniquePasswordPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/policies/unique_password/{policy_uuid}/`; + urlPath = urlPath.replace( + `{${"policy_uuid"}}`, + encodeURIComponent(String(requestParameters["policyUuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedUniquePasswordPolicyRequestToJSON( + requestParameters["patchedUniquePasswordPolicyRequest"], + ), + }; + } + + /** + * Password Uniqueness Policy Viewset + */ + async policiesUniquePasswordPartialUpdateRaw( + requestParameters: PoliciesUniquePasswordPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.policiesUniquePasswordPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + UniquePasswordPolicyFromJSON(jsonValue), + ); + } + + /** + * Password Uniqueness Policy Viewset + */ + async policiesUniquePasswordPartialUpdate( + requestParameters: PoliciesUniquePasswordPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.policiesUniquePasswordPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for policiesUniquePasswordRetrieve without sending the request + */ + async policiesUniquePasswordRetrieveRequestOpts( + requestParameters: PoliciesUniquePasswordRetrieveRequest, + ): Promise { + if (requestParameters["policyUuid"] == null) { + throw new runtime.RequiredError( + "policyUuid", + 'Required parameter "policyUuid" was null or undefined when calling policiesUniquePasswordRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/policies/unique_password/{policy_uuid}/`; + urlPath = urlPath.replace( + `{${"policy_uuid"}}`, + encodeURIComponent(String(requestParameters["policyUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Password Uniqueness Policy Viewset + */ + async policiesUniquePasswordRetrieveRaw( + requestParameters: PoliciesUniquePasswordRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.policiesUniquePasswordRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + UniquePasswordPolicyFromJSON(jsonValue), + ); + } + + /** + * Password Uniqueness Policy Viewset + */ + async policiesUniquePasswordRetrieve( + requestParameters: PoliciesUniquePasswordRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.policiesUniquePasswordRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for policiesUniquePasswordUpdate without sending the request + */ + async policiesUniquePasswordUpdateRequestOpts( + requestParameters: PoliciesUniquePasswordUpdateRequest, + ): Promise { + if (requestParameters["policyUuid"] == null) { + throw new runtime.RequiredError( + "policyUuid", + 'Required parameter "policyUuid" was null or undefined when calling policiesUniquePasswordUpdate().', + ); + } + + if (requestParameters["uniquePasswordPolicyRequest"] == null) { + throw new runtime.RequiredError( + "uniquePasswordPolicyRequest", + 'Required parameter "uniquePasswordPolicyRequest" was null or undefined when calling policiesUniquePasswordUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/policies/unique_password/{policy_uuid}/`; + urlPath = urlPath.replace( + `{${"policy_uuid"}}`, + encodeURIComponent(String(requestParameters["policyUuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: UniquePasswordPolicyRequestToJSON( + requestParameters["uniquePasswordPolicyRequest"], + ), + }; + } + + /** + * Password Uniqueness Policy Viewset + */ + async policiesUniquePasswordUpdateRaw( + requestParameters: PoliciesUniquePasswordUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.policiesUniquePasswordUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + UniquePasswordPolicyFromJSON(jsonValue), + ); + } + + /** + * Password Uniqueness Policy Viewset + */ + async policiesUniquePasswordUpdate( + requestParameters: PoliciesUniquePasswordUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.policiesUniquePasswordUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for policiesUniquePasswordUsedByList without sending the request + */ + async policiesUniquePasswordUsedByListRequestOpts( + requestParameters: PoliciesUniquePasswordUsedByListRequest, + ): Promise { + if (requestParameters["policyUuid"] == null) { + throw new runtime.RequiredError( + "policyUuid", + 'Required parameter "policyUuid" was null or undefined when calling policiesUniquePasswordUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/policies/unique_password/{policy_uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"policy_uuid"}}`, + encodeURIComponent(String(requestParameters["policyUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async policiesUniquePasswordUsedByListRaw( + requestParameters: PoliciesUniquePasswordUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.policiesUniquePasswordUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async policiesUniquePasswordUsedByList( + requestParameters: PoliciesUniquePasswordUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.policiesUniquePasswordUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } +} diff --git a/packages/client-ts/src/apis/PropertymappingsApi.ts b/packages/client-ts/src/apis/PropertymappingsApi.ts new file mode 100644 index 0000000000..664898eb14 --- /dev/null +++ b/packages/client-ts/src/apis/PropertymappingsApi.ts @@ -0,0 +1,8888 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { + GoogleWorkspaceProviderMapping, + GoogleWorkspaceProviderMappingRequest, + KerberosSourcePropertyMapping, + KerberosSourcePropertyMappingRequest, + LDAPSourcePropertyMapping, + LDAPSourcePropertyMappingRequest, + MicrosoftEntraProviderMapping, + MicrosoftEntraProviderMappingRequest, + NotificationWebhookMapping, + NotificationWebhookMappingRequest, + OAuthSourcePropertyMapping, + OAuthSourcePropertyMappingRequest, + PaginatedGoogleWorkspaceProviderMappingList, + PaginatedKerberosSourcePropertyMappingList, + PaginatedLDAPSourcePropertyMappingList, + PaginatedMicrosoftEntraProviderMappingList, + PaginatedNotificationWebhookMappingList, + PaginatedOAuthSourcePropertyMappingList, + PaginatedPlexSourcePropertyMappingList, + PaginatedPropertyMappingList, + PaginatedRACPropertyMappingList, + PaginatedRadiusProviderPropertyMappingList, + PaginatedSAMLPropertyMappingList, + PaginatedSAMLSourcePropertyMappingList, + PaginatedSCIMMappingList, + PaginatedSCIMSourcePropertyMappingList, + PaginatedScopeMappingList, + PaginatedTelegramSourcePropertyMappingList, + PatchedGoogleWorkspaceProviderMappingRequest, + PatchedKerberosSourcePropertyMappingRequest, + PatchedLDAPSourcePropertyMappingRequest, + PatchedMicrosoftEntraProviderMappingRequest, + PatchedNotificationWebhookMappingRequest, + PatchedOAuthSourcePropertyMappingRequest, + PatchedPlexSourcePropertyMappingRequest, + PatchedRACPropertyMappingRequest, + PatchedRadiusProviderPropertyMappingRequest, + PatchedSAMLPropertyMappingRequest, + PatchedSAMLSourcePropertyMappingRequest, + PatchedSCIMMappingRequest, + PatchedSCIMSourcePropertyMappingRequest, + PatchedScopeMappingRequest, + PatchedTelegramSourcePropertyMappingRequest, + PlexSourcePropertyMapping, + PlexSourcePropertyMappingRequest, + PropertyMapping, + PropertyMappingTestRequest, + PropertyMappingTestResult, + RACPropertyMapping, + RACPropertyMappingRequest, + RadiusProviderPropertyMapping, + RadiusProviderPropertyMappingRequest, + SAMLPropertyMapping, + SAMLPropertyMappingRequest, + SAMLSourcePropertyMapping, + SAMLSourcePropertyMappingRequest, + SCIMMapping, + SCIMMappingRequest, + SCIMSourcePropertyMapping, + SCIMSourcePropertyMappingRequest, + ScopeMapping, + ScopeMappingRequest, + TelegramSourcePropertyMapping, + TelegramSourcePropertyMappingRequest, + TypeCreate, + UsedBy, +} from "../models/index"; +import { + GoogleWorkspaceProviderMappingFromJSON, + GoogleWorkspaceProviderMappingRequestToJSON, + KerberosSourcePropertyMappingFromJSON, + KerberosSourcePropertyMappingRequestToJSON, + LDAPSourcePropertyMappingFromJSON, + LDAPSourcePropertyMappingRequestToJSON, + MicrosoftEntraProviderMappingFromJSON, + MicrosoftEntraProviderMappingRequestToJSON, + NotificationWebhookMappingFromJSON, + NotificationWebhookMappingRequestToJSON, + OAuthSourcePropertyMappingFromJSON, + OAuthSourcePropertyMappingRequestToJSON, + PaginatedGoogleWorkspaceProviderMappingListFromJSON, + PaginatedKerberosSourcePropertyMappingListFromJSON, + PaginatedLDAPSourcePropertyMappingListFromJSON, + PaginatedMicrosoftEntraProviderMappingListFromJSON, + PaginatedNotificationWebhookMappingListFromJSON, + PaginatedOAuthSourcePropertyMappingListFromJSON, + PaginatedPlexSourcePropertyMappingListFromJSON, + PaginatedPropertyMappingListFromJSON, + PaginatedRACPropertyMappingListFromJSON, + PaginatedRadiusProviderPropertyMappingListFromJSON, + PaginatedSAMLPropertyMappingListFromJSON, + PaginatedSAMLSourcePropertyMappingListFromJSON, + PaginatedSCIMMappingListFromJSON, + PaginatedSCIMSourcePropertyMappingListFromJSON, + PaginatedScopeMappingListFromJSON, + PaginatedTelegramSourcePropertyMappingListFromJSON, + PatchedGoogleWorkspaceProviderMappingRequestToJSON, + PatchedKerberosSourcePropertyMappingRequestToJSON, + PatchedLDAPSourcePropertyMappingRequestToJSON, + PatchedMicrosoftEntraProviderMappingRequestToJSON, + PatchedNotificationWebhookMappingRequestToJSON, + PatchedOAuthSourcePropertyMappingRequestToJSON, + PatchedPlexSourcePropertyMappingRequestToJSON, + PatchedRACPropertyMappingRequestToJSON, + PatchedRadiusProviderPropertyMappingRequestToJSON, + PatchedSAMLPropertyMappingRequestToJSON, + PatchedSAMLSourcePropertyMappingRequestToJSON, + PatchedSCIMMappingRequestToJSON, + PatchedSCIMSourcePropertyMappingRequestToJSON, + PatchedScopeMappingRequestToJSON, + PatchedTelegramSourcePropertyMappingRequestToJSON, + PlexSourcePropertyMappingFromJSON, + PlexSourcePropertyMappingRequestToJSON, + PropertyMappingFromJSON, + PropertyMappingTestRequestToJSON, + PropertyMappingTestResultFromJSON, + RACPropertyMappingFromJSON, + RACPropertyMappingRequestToJSON, + RadiusProviderPropertyMappingFromJSON, + RadiusProviderPropertyMappingRequestToJSON, + SAMLPropertyMappingFromJSON, + SAMLPropertyMappingRequestToJSON, + SAMLSourcePropertyMappingFromJSON, + SAMLSourcePropertyMappingRequestToJSON, + SCIMMappingFromJSON, + SCIMMappingRequestToJSON, + SCIMSourcePropertyMappingFromJSON, + SCIMSourcePropertyMappingRequestToJSON, + ScopeMappingFromJSON, + ScopeMappingRequestToJSON, + TelegramSourcePropertyMappingFromJSON, + TelegramSourcePropertyMappingRequestToJSON, + TypeCreateFromJSON, + UsedByFromJSON, +} from "../models/index"; +import * as runtime from "../runtime"; + +export interface PropertymappingsAllDestroyRequest { + pmUuid: string; +} + +export interface PropertymappingsAllListRequest { + managed?: Array; + managedIsnull?: boolean; + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; +} + +export interface PropertymappingsAllRetrieveRequest { + pmUuid: string; +} + +export interface PropertymappingsAllTestCreateRequest { + pmUuid: string; + formatResult?: boolean; + propertyMappingTestRequest?: PropertyMappingTestRequest; +} + +export interface PropertymappingsAllUsedByListRequest { + pmUuid: string; +} + +export interface PropertymappingsNotificationCreateRequest { + notificationWebhookMappingRequest: NotificationWebhookMappingRequest; +} + +export interface PropertymappingsNotificationDestroyRequest { + pmUuid: string; +} + +export interface PropertymappingsNotificationListRequest { + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; +} + +export interface PropertymappingsNotificationPartialUpdateRequest { + pmUuid: string; + patchedNotificationWebhookMappingRequest?: PatchedNotificationWebhookMappingRequest; +} + +export interface PropertymappingsNotificationRetrieveRequest { + pmUuid: string; +} + +export interface PropertymappingsNotificationUpdateRequest { + pmUuid: string; + notificationWebhookMappingRequest: NotificationWebhookMappingRequest; +} + +export interface PropertymappingsNotificationUsedByListRequest { + pmUuid: string; +} + +export interface PropertymappingsProviderGoogleWorkspaceCreateRequest { + googleWorkspaceProviderMappingRequest: GoogleWorkspaceProviderMappingRequest; +} + +export interface PropertymappingsProviderGoogleWorkspaceDestroyRequest { + pmUuid: string; +} + +export interface PropertymappingsProviderGoogleWorkspaceListRequest { + expression?: string; + managed?: Array; + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + pmUuid?: string; + search?: string; +} + +export interface PropertymappingsProviderGoogleWorkspacePartialUpdateRequest { + pmUuid: string; + patchedGoogleWorkspaceProviderMappingRequest?: PatchedGoogleWorkspaceProviderMappingRequest; +} + +export interface PropertymappingsProviderGoogleWorkspaceRetrieveRequest { + pmUuid: string; +} + +export interface PropertymappingsProviderGoogleWorkspaceUpdateRequest { + pmUuid: string; + googleWorkspaceProviderMappingRequest: GoogleWorkspaceProviderMappingRequest; +} + +export interface PropertymappingsProviderGoogleWorkspaceUsedByListRequest { + pmUuid: string; +} + +export interface PropertymappingsProviderMicrosoftEntraCreateRequest { + microsoftEntraProviderMappingRequest: MicrosoftEntraProviderMappingRequest; +} + +export interface PropertymappingsProviderMicrosoftEntraDestroyRequest { + pmUuid: string; +} + +export interface PropertymappingsProviderMicrosoftEntraListRequest { + expression?: string; + managed?: Array; + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + pmUuid?: string; + search?: string; +} + +export interface PropertymappingsProviderMicrosoftEntraPartialUpdateRequest { + pmUuid: string; + patchedMicrosoftEntraProviderMappingRequest?: PatchedMicrosoftEntraProviderMappingRequest; +} + +export interface PropertymappingsProviderMicrosoftEntraRetrieveRequest { + pmUuid: string; +} + +export interface PropertymappingsProviderMicrosoftEntraUpdateRequest { + pmUuid: string; + microsoftEntraProviderMappingRequest: MicrosoftEntraProviderMappingRequest; +} + +export interface PropertymappingsProviderMicrosoftEntraUsedByListRequest { + pmUuid: string; +} + +export interface PropertymappingsProviderRacCreateRequest { + rACPropertyMappingRequest: RACPropertyMappingRequest; +} + +export interface PropertymappingsProviderRacDestroyRequest { + pmUuid: string; +} + +export interface PropertymappingsProviderRacListRequest { + managed?: Array; + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; +} + +export interface PropertymappingsProviderRacPartialUpdateRequest { + pmUuid: string; + patchedRACPropertyMappingRequest?: PatchedRACPropertyMappingRequest; +} + +export interface PropertymappingsProviderRacRetrieveRequest { + pmUuid: string; +} + +export interface PropertymappingsProviderRacUpdateRequest { + pmUuid: string; + rACPropertyMappingRequest: RACPropertyMappingRequest; +} + +export interface PropertymappingsProviderRacUsedByListRequest { + pmUuid: string; +} + +export interface PropertymappingsProviderRadiusCreateRequest { + radiusProviderPropertyMappingRequest: RadiusProviderPropertyMappingRequest; +} + +export interface PropertymappingsProviderRadiusDestroyRequest { + pmUuid: string; +} + +export interface PropertymappingsProviderRadiusListRequest { + managed?: Array; + managedIsnull?: boolean; + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; +} + +export interface PropertymappingsProviderRadiusPartialUpdateRequest { + pmUuid: string; + patchedRadiusProviderPropertyMappingRequest?: PatchedRadiusProviderPropertyMappingRequest; +} + +export interface PropertymappingsProviderRadiusRetrieveRequest { + pmUuid: string; +} + +export interface PropertymappingsProviderRadiusUpdateRequest { + pmUuid: string; + radiusProviderPropertyMappingRequest: RadiusProviderPropertyMappingRequest; +} + +export interface PropertymappingsProviderRadiusUsedByListRequest { + pmUuid: string; +} + +export interface PropertymappingsProviderSamlCreateRequest { + sAMLPropertyMappingRequest: SAMLPropertyMappingRequest; +} + +export interface PropertymappingsProviderSamlDestroyRequest { + pmUuid: string; +} + +export interface PropertymappingsProviderSamlListRequest { + friendlyName?: string; + managed?: Array; + managedIsnull?: boolean; + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + samlName?: string; + search?: string; +} + +export interface PropertymappingsProviderSamlPartialUpdateRequest { + pmUuid: string; + patchedSAMLPropertyMappingRequest?: PatchedSAMLPropertyMappingRequest; +} + +export interface PropertymappingsProviderSamlRetrieveRequest { + pmUuid: string; +} + +export interface PropertymappingsProviderSamlUpdateRequest { + pmUuid: string; + sAMLPropertyMappingRequest: SAMLPropertyMappingRequest; +} + +export interface PropertymappingsProviderSamlUsedByListRequest { + pmUuid: string; +} + +export interface PropertymappingsProviderScimCreateRequest { + sCIMMappingRequest: SCIMMappingRequest; +} + +export interface PropertymappingsProviderScimDestroyRequest { + pmUuid: string; +} + +export interface PropertymappingsProviderScimListRequest { + managed?: Array; + managedIsnull?: boolean; + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; +} + +export interface PropertymappingsProviderScimPartialUpdateRequest { + pmUuid: string; + patchedSCIMMappingRequest?: PatchedSCIMMappingRequest; +} + +export interface PropertymappingsProviderScimRetrieveRequest { + pmUuid: string; +} + +export interface PropertymappingsProviderScimUpdateRequest { + pmUuid: string; + sCIMMappingRequest: SCIMMappingRequest; +} + +export interface PropertymappingsProviderScimUsedByListRequest { + pmUuid: string; +} + +export interface PropertymappingsProviderScopeCreateRequest { + scopeMappingRequest: ScopeMappingRequest; +} + +export interface PropertymappingsProviderScopeDestroyRequest { + pmUuid: string; +} + +export interface PropertymappingsProviderScopeListRequest { + managed?: Array; + managedIsnull?: boolean; + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + scopeName?: string; + search?: string; +} + +export interface PropertymappingsProviderScopePartialUpdateRequest { + pmUuid: string; + patchedScopeMappingRequest?: PatchedScopeMappingRequest; +} + +export interface PropertymappingsProviderScopeRetrieveRequest { + pmUuid: string; +} + +export interface PropertymappingsProviderScopeUpdateRequest { + pmUuid: string; + scopeMappingRequest: ScopeMappingRequest; +} + +export interface PropertymappingsProviderScopeUsedByListRequest { + pmUuid: string; +} + +export interface PropertymappingsSourceKerberosCreateRequest { + kerberosSourcePropertyMappingRequest: KerberosSourcePropertyMappingRequest; +} + +export interface PropertymappingsSourceKerberosDestroyRequest { + pmUuid: string; +} + +export interface PropertymappingsSourceKerberosListRequest { + managed?: Array; + managedIsnull?: boolean; + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; +} + +export interface PropertymappingsSourceKerberosPartialUpdateRequest { + pmUuid: string; + patchedKerberosSourcePropertyMappingRequest?: PatchedKerberosSourcePropertyMappingRequest; +} + +export interface PropertymappingsSourceKerberosRetrieveRequest { + pmUuid: string; +} + +export interface PropertymappingsSourceKerberosUpdateRequest { + pmUuid: string; + kerberosSourcePropertyMappingRequest: KerberosSourcePropertyMappingRequest; +} + +export interface PropertymappingsSourceKerberosUsedByListRequest { + pmUuid: string; +} + +export interface PropertymappingsSourceLdapCreateRequest { + lDAPSourcePropertyMappingRequest: LDAPSourcePropertyMappingRequest; +} + +export interface PropertymappingsSourceLdapDestroyRequest { + pmUuid: string; +} + +export interface PropertymappingsSourceLdapListRequest { + managed?: Array; + managedIsnull?: boolean; + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; +} + +export interface PropertymappingsSourceLdapPartialUpdateRequest { + pmUuid: string; + patchedLDAPSourcePropertyMappingRequest?: PatchedLDAPSourcePropertyMappingRequest; +} + +export interface PropertymappingsSourceLdapRetrieveRequest { + pmUuid: string; +} + +export interface PropertymappingsSourceLdapUpdateRequest { + pmUuid: string; + lDAPSourcePropertyMappingRequest: LDAPSourcePropertyMappingRequest; +} + +export interface PropertymappingsSourceLdapUsedByListRequest { + pmUuid: string; +} + +export interface PropertymappingsSourceOauthCreateRequest { + oAuthSourcePropertyMappingRequest: OAuthSourcePropertyMappingRequest; +} + +export interface PropertymappingsSourceOauthDestroyRequest { + pmUuid: string; +} + +export interface PropertymappingsSourceOauthListRequest { + managed?: Array; + managedIsnull?: boolean; + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; +} + +export interface PropertymappingsSourceOauthPartialUpdateRequest { + pmUuid: string; + patchedOAuthSourcePropertyMappingRequest?: PatchedOAuthSourcePropertyMappingRequest; +} + +export interface PropertymappingsSourceOauthRetrieveRequest { + pmUuid: string; +} + +export interface PropertymappingsSourceOauthUpdateRequest { + pmUuid: string; + oAuthSourcePropertyMappingRequest: OAuthSourcePropertyMappingRequest; +} + +export interface PropertymappingsSourceOauthUsedByListRequest { + pmUuid: string; +} + +export interface PropertymappingsSourcePlexCreateRequest { + plexSourcePropertyMappingRequest: PlexSourcePropertyMappingRequest; +} + +export interface PropertymappingsSourcePlexDestroyRequest { + pmUuid: string; +} + +export interface PropertymappingsSourcePlexListRequest { + managed?: Array; + managedIsnull?: boolean; + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; +} + +export interface PropertymappingsSourcePlexPartialUpdateRequest { + pmUuid: string; + patchedPlexSourcePropertyMappingRequest?: PatchedPlexSourcePropertyMappingRequest; +} + +export interface PropertymappingsSourcePlexRetrieveRequest { + pmUuid: string; +} + +export interface PropertymappingsSourcePlexUpdateRequest { + pmUuid: string; + plexSourcePropertyMappingRequest: PlexSourcePropertyMappingRequest; +} + +export interface PropertymappingsSourcePlexUsedByListRequest { + pmUuid: string; +} + +export interface PropertymappingsSourceSamlCreateRequest { + sAMLSourcePropertyMappingRequest: SAMLSourcePropertyMappingRequest; +} + +export interface PropertymappingsSourceSamlDestroyRequest { + pmUuid: string; +} + +export interface PropertymappingsSourceSamlListRequest { + managed?: Array; + managedIsnull?: boolean; + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; +} + +export interface PropertymappingsSourceSamlPartialUpdateRequest { + pmUuid: string; + patchedSAMLSourcePropertyMappingRequest?: PatchedSAMLSourcePropertyMappingRequest; +} + +export interface PropertymappingsSourceSamlRetrieveRequest { + pmUuid: string; +} + +export interface PropertymappingsSourceSamlUpdateRequest { + pmUuid: string; + sAMLSourcePropertyMappingRequest: SAMLSourcePropertyMappingRequest; +} + +export interface PropertymappingsSourceSamlUsedByListRequest { + pmUuid: string; +} + +export interface PropertymappingsSourceScimCreateRequest { + sCIMSourcePropertyMappingRequest: SCIMSourcePropertyMappingRequest; +} + +export interface PropertymappingsSourceScimDestroyRequest { + pmUuid: string; +} + +export interface PropertymappingsSourceScimListRequest { + managed?: Array; + managedIsnull?: boolean; + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; +} + +export interface PropertymappingsSourceScimPartialUpdateRequest { + pmUuid: string; + patchedSCIMSourcePropertyMappingRequest?: PatchedSCIMSourcePropertyMappingRequest; +} + +export interface PropertymappingsSourceScimRetrieveRequest { + pmUuid: string; +} + +export interface PropertymappingsSourceScimUpdateRequest { + pmUuid: string; + sCIMSourcePropertyMappingRequest: SCIMSourcePropertyMappingRequest; +} + +export interface PropertymappingsSourceScimUsedByListRequest { + pmUuid: string; +} + +export interface PropertymappingsSourceTelegramCreateRequest { + telegramSourcePropertyMappingRequest: TelegramSourcePropertyMappingRequest; +} + +export interface PropertymappingsSourceTelegramDestroyRequest { + pmUuid: string; +} + +export interface PropertymappingsSourceTelegramListRequest { + managed?: Array; + managedIsnull?: boolean; + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; +} + +export interface PropertymappingsSourceTelegramPartialUpdateRequest { + pmUuid: string; + patchedTelegramSourcePropertyMappingRequest?: PatchedTelegramSourcePropertyMappingRequest; +} + +export interface PropertymappingsSourceTelegramRetrieveRequest { + pmUuid: string; +} + +export interface PropertymappingsSourceTelegramUpdateRequest { + pmUuid: string; + telegramSourcePropertyMappingRequest: TelegramSourcePropertyMappingRequest; +} + +export interface PropertymappingsSourceTelegramUsedByListRequest { + pmUuid: string; +} + +/** + * + */ +export class PropertymappingsApi extends runtime.BaseAPI { + /** + * Creates request options for propertymappingsAllDestroy without sending the request + */ + async propertymappingsAllDestroyRequestOpts( + requestParameters: PropertymappingsAllDestroyRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsAllDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/all/{pm_uuid}/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * PropertyMapping Viewset + */ + async propertymappingsAllDestroyRaw( + requestParameters: PropertymappingsAllDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.propertymappingsAllDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * PropertyMapping Viewset + */ + async propertymappingsAllDestroy( + requestParameters: PropertymappingsAllDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.propertymappingsAllDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for propertymappingsAllList without sending the request + */ + async propertymappingsAllListRequestOpts( + requestParameters: PropertymappingsAllListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["managed"] != null) { + queryParameters["managed"] = requestParameters["managed"]; + } + + if (requestParameters["managedIsnull"] != null) { + queryParameters["managed__isnull"] = requestParameters["managedIsnull"]; + } + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/all/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * PropertyMapping Viewset + */ + async propertymappingsAllListRaw( + requestParameters: PropertymappingsAllListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.propertymappingsAllListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedPropertyMappingListFromJSON(jsonValue), + ); + } + + /** + * PropertyMapping Viewset + */ + async propertymappingsAllList( + requestParameters: PropertymappingsAllListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsAllListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for propertymappingsAllRetrieve without sending the request + */ + async propertymappingsAllRetrieveRequestOpts( + requestParameters: PropertymappingsAllRetrieveRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsAllRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/all/{pm_uuid}/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * PropertyMapping Viewset + */ + async propertymappingsAllRetrieveRaw( + requestParameters: PropertymappingsAllRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.propertymappingsAllRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PropertyMappingFromJSON(jsonValue), + ); + } + + /** + * PropertyMapping Viewset + */ + async propertymappingsAllRetrieve( + requestParameters: PropertymappingsAllRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsAllRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsAllTestCreate without sending the request + */ + async propertymappingsAllTestCreateRequestOpts( + requestParameters: PropertymappingsAllTestCreateRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsAllTestCreate().', + ); + } + + const queryParameters: any = {}; + + if (requestParameters["formatResult"] != null) { + queryParameters["format_result"] = requestParameters["formatResult"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/all/{pm_uuid}/test/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: PropertyMappingTestRequestToJSON(requestParameters["propertyMappingTestRequest"]), + }; + } + + /** + * Test Property Mapping + */ + async propertymappingsAllTestCreateRaw( + requestParameters: PropertymappingsAllTestCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsAllTestCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PropertyMappingTestResultFromJSON(jsonValue), + ); + } + + /** + * Test Property Mapping + */ + async propertymappingsAllTestCreate( + requestParameters: PropertymappingsAllTestCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsAllTestCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsAllTypesList without sending the request + */ + async propertymappingsAllTypesListRequestOpts(): Promise { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/all/types/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get all creatable types + */ + async propertymappingsAllTypesListRaw( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.propertymappingsAllTypesListRequestOpts(); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + jsonValue.map(TypeCreateFromJSON), + ); + } + + /** + * Get all creatable types + */ + async propertymappingsAllTypesList( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.propertymappingsAllTypesListRaw(initOverrides); + return await response.value(); + } + + /** + * Creates request options for propertymappingsAllUsedByList without sending the request + */ + async propertymappingsAllUsedByListRequestOpts( + requestParameters: PropertymappingsAllUsedByListRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsAllUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/all/{pm_uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async propertymappingsAllUsedByListRaw( + requestParameters: PropertymappingsAllUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.propertymappingsAllUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async propertymappingsAllUsedByList( + requestParameters: PropertymappingsAllUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.propertymappingsAllUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsNotificationCreate without sending the request + */ + async propertymappingsNotificationCreateRequestOpts( + requestParameters: PropertymappingsNotificationCreateRequest, + ): Promise { + if (requestParameters["notificationWebhookMappingRequest"] == null) { + throw new runtime.RequiredError( + "notificationWebhookMappingRequest", + 'Required parameter "notificationWebhookMappingRequest" was null or undefined when calling propertymappingsNotificationCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/notification/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: NotificationWebhookMappingRequestToJSON( + requestParameters["notificationWebhookMappingRequest"], + ), + }; + } + + /** + * NotificationWebhookMapping Viewset + */ + async propertymappingsNotificationCreateRaw( + requestParameters: PropertymappingsNotificationCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsNotificationCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + NotificationWebhookMappingFromJSON(jsonValue), + ); + } + + /** + * NotificationWebhookMapping Viewset + */ + async propertymappingsNotificationCreate( + requestParameters: PropertymappingsNotificationCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsNotificationCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsNotificationDestroy without sending the request + */ + async propertymappingsNotificationDestroyRequestOpts( + requestParameters: PropertymappingsNotificationDestroyRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsNotificationDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/notification/{pm_uuid}/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * NotificationWebhookMapping Viewset + */ + async propertymappingsNotificationDestroyRaw( + requestParameters: PropertymappingsNotificationDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsNotificationDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * NotificationWebhookMapping Viewset + */ + async propertymappingsNotificationDestroy( + requestParameters: PropertymappingsNotificationDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.propertymappingsNotificationDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for propertymappingsNotificationList without sending the request + */ + async propertymappingsNotificationListRequestOpts( + requestParameters: PropertymappingsNotificationListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/notification/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * NotificationWebhookMapping Viewset + */ + async propertymappingsNotificationListRaw( + requestParameters: PropertymappingsNotificationListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsNotificationListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedNotificationWebhookMappingListFromJSON(jsonValue), + ); + } + + /** + * NotificationWebhookMapping Viewset + */ + async propertymappingsNotificationList( + requestParameters: PropertymappingsNotificationListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsNotificationListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsNotificationPartialUpdate without sending the request + */ + async propertymappingsNotificationPartialUpdateRequestOpts( + requestParameters: PropertymappingsNotificationPartialUpdateRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsNotificationPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/notification/{pm_uuid}/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedNotificationWebhookMappingRequestToJSON( + requestParameters["patchedNotificationWebhookMappingRequest"], + ), + }; + } + + /** + * NotificationWebhookMapping Viewset + */ + async propertymappingsNotificationPartialUpdateRaw( + requestParameters: PropertymappingsNotificationPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsNotificationPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + NotificationWebhookMappingFromJSON(jsonValue), + ); + } + + /** + * NotificationWebhookMapping Viewset + */ + async propertymappingsNotificationPartialUpdate( + requestParameters: PropertymappingsNotificationPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsNotificationPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsNotificationRetrieve without sending the request + */ + async propertymappingsNotificationRetrieveRequestOpts( + requestParameters: PropertymappingsNotificationRetrieveRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsNotificationRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/notification/{pm_uuid}/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * NotificationWebhookMapping Viewset + */ + async propertymappingsNotificationRetrieveRaw( + requestParameters: PropertymappingsNotificationRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsNotificationRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + NotificationWebhookMappingFromJSON(jsonValue), + ); + } + + /** + * NotificationWebhookMapping Viewset + */ + async propertymappingsNotificationRetrieve( + requestParameters: PropertymappingsNotificationRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsNotificationRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsNotificationUpdate without sending the request + */ + async propertymappingsNotificationUpdateRequestOpts( + requestParameters: PropertymappingsNotificationUpdateRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsNotificationUpdate().', + ); + } + + if (requestParameters["notificationWebhookMappingRequest"] == null) { + throw new runtime.RequiredError( + "notificationWebhookMappingRequest", + 'Required parameter "notificationWebhookMappingRequest" was null or undefined when calling propertymappingsNotificationUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/notification/{pm_uuid}/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: NotificationWebhookMappingRequestToJSON( + requestParameters["notificationWebhookMappingRequest"], + ), + }; + } + + /** + * NotificationWebhookMapping Viewset + */ + async propertymappingsNotificationUpdateRaw( + requestParameters: PropertymappingsNotificationUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsNotificationUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + NotificationWebhookMappingFromJSON(jsonValue), + ); + } + + /** + * NotificationWebhookMapping Viewset + */ + async propertymappingsNotificationUpdate( + requestParameters: PropertymappingsNotificationUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsNotificationUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsNotificationUsedByList without sending the request + */ + async propertymappingsNotificationUsedByListRequestOpts( + requestParameters: PropertymappingsNotificationUsedByListRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsNotificationUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/notification/{pm_uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async propertymappingsNotificationUsedByListRaw( + requestParameters: PropertymappingsNotificationUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.propertymappingsNotificationUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async propertymappingsNotificationUsedByList( + requestParameters: PropertymappingsNotificationUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.propertymappingsNotificationUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsProviderGoogleWorkspaceCreate without sending the request + */ + async propertymappingsProviderGoogleWorkspaceCreateRequestOpts( + requestParameters: PropertymappingsProviderGoogleWorkspaceCreateRequest, + ): Promise { + if (requestParameters["googleWorkspaceProviderMappingRequest"] == null) { + throw new runtime.RequiredError( + "googleWorkspaceProviderMappingRequest", + 'Required parameter "googleWorkspaceProviderMappingRequest" was null or undefined when calling propertymappingsProviderGoogleWorkspaceCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/provider/google_workspace/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: GoogleWorkspaceProviderMappingRequestToJSON( + requestParameters["googleWorkspaceProviderMappingRequest"], + ), + }; + } + + /** + * GoogleWorkspaceProviderMapping Viewset + */ + async propertymappingsProviderGoogleWorkspaceCreateRaw( + requestParameters: PropertymappingsProviderGoogleWorkspaceCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsProviderGoogleWorkspaceCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + GoogleWorkspaceProviderMappingFromJSON(jsonValue), + ); + } + + /** + * GoogleWorkspaceProviderMapping Viewset + */ + async propertymappingsProviderGoogleWorkspaceCreate( + requestParameters: PropertymappingsProviderGoogleWorkspaceCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsProviderGoogleWorkspaceCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsProviderGoogleWorkspaceDestroy without sending the request + */ + async propertymappingsProviderGoogleWorkspaceDestroyRequestOpts( + requestParameters: PropertymappingsProviderGoogleWorkspaceDestroyRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsProviderGoogleWorkspaceDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/provider/google_workspace/{pm_uuid}/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * GoogleWorkspaceProviderMapping Viewset + */ + async propertymappingsProviderGoogleWorkspaceDestroyRaw( + requestParameters: PropertymappingsProviderGoogleWorkspaceDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsProviderGoogleWorkspaceDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * GoogleWorkspaceProviderMapping Viewset + */ + async propertymappingsProviderGoogleWorkspaceDestroy( + requestParameters: PropertymappingsProviderGoogleWorkspaceDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.propertymappingsProviderGoogleWorkspaceDestroyRaw( + requestParameters, + initOverrides, + ); + } + + /** + * Creates request options for propertymappingsProviderGoogleWorkspaceList without sending the request + */ + async propertymappingsProviderGoogleWorkspaceListRequestOpts( + requestParameters: PropertymappingsProviderGoogleWorkspaceListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["expression"] != null) { + queryParameters["expression"] = requestParameters["expression"]; + } + + if (requestParameters["managed"] != null) { + queryParameters["managed"] = requestParameters["managed"]; + } + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["pmUuid"] != null) { + queryParameters["pm_uuid"] = requestParameters["pmUuid"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/provider/google_workspace/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * GoogleWorkspaceProviderMapping Viewset + */ + async propertymappingsProviderGoogleWorkspaceListRaw( + requestParameters: PropertymappingsProviderGoogleWorkspaceListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsProviderGoogleWorkspaceListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedGoogleWorkspaceProviderMappingListFromJSON(jsonValue), + ); + } + + /** + * GoogleWorkspaceProviderMapping Viewset + */ + async propertymappingsProviderGoogleWorkspaceList( + requestParameters: PropertymappingsProviderGoogleWorkspaceListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsProviderGoogleWorkspaceListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsProviderGoogleWorkspacePartialUpdate without sending the request + */ + async propertymappingsProviderGoogleWorkspacePartialUpdateRequestOpts( + requestParameters: PropertymappingsProviderGoogleWorkspacePartialUpdateRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsProviderGoogleWorkspacePartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/provider/google_workspace/{pm_uuid}/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedGoogleWorkspaceProviderMappingRequestToJSON( + requestParameters["patchedGoogleWorkspaceProviderMappingRequest"], + ), + }; + } + + /** + * GoogleWorkspaceProviderMapping Viewset + */ + async propertymappingsProviderGoogleWorkspacePartialUpdateRaw( + requestParameters: PropertymappingsProviderGoogleWorkspacePartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsProviderGoogleWorkspacePartialUpdateRequestOpts( + requestParameters, + ); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + GoogleWorkspaceProviderMappingFromJSON(jsonValue), + ); + } + + /** + * GoogleWorkspaceProviderMapping Viewset + */ + async propertymappingsProviderGoogleWorkspacePartialUpdate( + requestParameters: PropertymappingsProviderGoogleWorkspacePartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsProviderGoogleWorkspacePartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsProviderGoogleWorkspaceRetrieve without sending the request + */ + async propertymappingsProviderGoogleWorkspaceRetrieveRequestOpts( + requestParameters: PropertymappingsProviderGoogleWorkspaceRetrieveRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsProviderGoogleWorkspaceRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/provider/google_workspace/{pm_uuid}/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * GoogleWorkspaceProviderMapping Viewset + */ + async propertymappingsProviderGoogleWorkspaceRetrieveRaw( + requestParameters: PropertymappingsProviderGoogleWorkspaceRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsProviderGoogleWorkspaceRetrieveRequestOpts( + requestParameters, + ); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + GoogleWorkspaceProviderMappingFromJSON(jsonValue), + ); + } + + /** + * GoogleWorkspaceProviderMapping Viewset + */ + async propertymappingsProviderGoogleWorkspaceRetrieve( + requestParameters: PropertymappingsProviderGoogleWorkspaceRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsProviderGoogleWorkspaceRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsProviderGoogleWorkspaceUpdate without sending the request + */ + async propertymappingsProviderGoogleWorkspaceUpdateRequestOpts( + requestParameters: PropertymappingsProviderGoogleWorkspaceUpdateRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsProviderGoogleWorkspaceUpdate().', + ); + } + + if (requestParameters["googleWorkspaceProviderMappingRequest"] == null) { + throw new runtime.RequiredError( + "googleWorkspaceProviderMappingRequest", + 'Required parameter "googleWorkspaceProviderMappingRequest" was null or undefined when calling propertymappingsProviderGoogleWorkspaceUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/provider/google_workspace/{pm_uuid}/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: GoogleWorkspaceProviderMappingRequestToJSON( + requestParameters["googleWorkspaceProviderMappingRequest"], + ), + }; + } + + /** + * GoogleWorkspaceProviderMapping Viewset + */ + async propertymappingsProviderGoogleWorkspaceUpdateRaw( + requestParameters: PropertymappingsProviderGoogleWorkspaceUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsProviderGoogleWorkspaceUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + GoogleWorkspaceProviderMappingFromJSON(jsonValue), + ); + } + + /** + * GoogleWorkspaceProviderMapping Viewset + */ + async propertymappingsProviderGoogleWorkspaceUpdate( + requestParameters: PropertymappingsProviderGoogleWorkspaceUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsProviderGoogleWorkspaceUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsProviderGoogleWorkspaceUsedByList without sending the request + */ + async propertymappingsProviderGoogleWorkspaceUsedByListRequestOpts( + requestParameters: PropertymappingsProviderGoogleWorkspaceUsedByListRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsProviderGoogleWorkspaceUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/provider/google_workspace/{pm_uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async propertymappingsProviderGoogleWorkspaceUsedByListRaw( + requestParameters: PropertymappingsProviderGoogleWorkspaceUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.propertymappingsProviderGoogleWorkspaceUsedByListRequestOpts( + requestParameters, + ); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async propertymappingsProviderGoogleWorkspaceUsedByList( + requestParameters: PropertymappingsProviderGoogleWorkspaceUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.propertymappingsProviderGoogleWorkspaceUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsProviderMicrosoftEntraCreate without sending the request + */ + async propertymappingsProviderMicrosoftEntraCreateRequestOpts( + requestParameters: PropertymappingsProviderMicrosoftEntraCreateRequest, + ): Promise { + if (requestParameters["microsoftEntraProviderMappingRequest"] == null) { + throw new runtime.RequiredError( + "microsoftEntraProviderMappingRequest", + 'Required parameter "microsoftEntraProviderMappingRequest" was null or undefined when calling propertymappingsProviderMicrosoftEntraCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/provider/microsoft_entra/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: MicrosoftEntraProviderMappingRequestToJSON( + requestParameters["microsoftEntraProviderMappingRequest"], + ), + }; + } + + /** + * MicrosoftEntraProviderMapping Viewset + */ + async propertymappingsProviderMicrosoftEntraCreateRaw( + requestParameters: PropertymappingsProviderMicrosoftEntraCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsProviderMicrosoftEntraCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + MicrosoftEntraProviderMappingFromJSON(jsonValue), + ); + } + + /** + * MicrosoftEntraProviderMapping Viewset + */ + async propertymappingsProviderMicrosoftEntraCreate( + requestParameters: PropertymappingsProviderMicrosoftEntraCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsProviderMicrosoftEntraCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsProviderMicrosoftEntraDestroy without sending the request + */ + async propertymappingsProviderMicrosoftEntraDestroyRequestOpts( + requestParameters: PropertymappingsProviderMicrosoftEntraDestroyRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsProviderMicrosoftEntraDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/provider/microsoft_entra/{pm_uuid}/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * MicrosoftEntraProviderMapping Viewset + */ + async propertymappingsProviderMicrosoftEntraDestroyRaw( + requestParameters: PropertymappingsProviderMicrosoftEntraDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsProviderMicrosoftEntraDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * MicrosoftEntraProviderMapping Viewset + */ + async propertymappingsProviderMicrosoftEntraDestroy( + requestParameters: PropertymappingsProviderMicrosoftEntraDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.propertymappingsProviderMicrosoftEntraDestroyRaw( + requestParameters, + initOverrides, + ); + } + + /** + * Creates request options for propertymappingsProviderMicrosoftEntraList without sending the request + */ + async propertymappingsProviderMicrosoftEntraListRequestOpts( + requestParameters: PropertymappingsProviderMicrosoftEntraListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["expression"] != null) { + queryParameters["expression"] = requestParameters["expression"]; + } + + if (requestParameters["managed"] != null) { + queryParameters["managed"] = requestParameters["managed"]; + } + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["pmUuid"] != null) { + queryParameters["pm_uuid"] = requestParameters["pmUuid"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/provider/microsoft_entra/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * MicrosoftEntraProviderMapping Viewset + */ + async propertymappingsProviderMicrosoftEntraListRaw( + requestParameters: PropertymappingsProviderMicrosoftEntraListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsProviderMicrosoftEntraListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedMicrosoftEntraProviderMappingListFromJSON(jsonValue), + ); + } + + /** + * MicrosoftEntraProviderMapping Viewset + */ + async propertymappingsProviderMicrosoftEntraList( + requestParameters: PropertymappingsProviderMicrosoftEntraListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsProviderMicrosoftEntraListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsProviderMicrosoftEntraPartialUpdate without sending the request + */ + async propertymappingsProviderMicrosoftEntraPartialUpdateRequestOpts( + requestParameters: PropertymappingsProviderMicrosoftEntraPartialUpdateRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsProviderMicrosoftEntraPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/provider/microsoft_entra/{pm_uuid}/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedMicrosoftEntraProviderMappingRequestToJSON( + requestParameters["patchedMicrosoftEntraProviderMappingRequest"], + ), + }; + } + + /** + * MicrosoftEntraProviderMapping Viewset + */ + async propertymappingsProviderMicrosoftEntraPartialUpdateRaw( + requestParameters: PropertymappingsProviderMicrosoftEntraPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsProviderMicrosoftEntraPartialUpdateRequestOpts( + requestParameters, + ); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + MicrosoftEntraProviderMappingFromJSON(jsonValue), + ); + } + + /** + * MicrosoftEntraProviderMapping Viewset + */ + async propertymappingsProviderMicrosoftEntraPartialUpdate( + requestParameters: PropertymappingsProviderMicrosoftEntraPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsProviderMicrosoftEntraPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsProviderMicrosoftEntraRetrieve without sending the request + */ + async propertymappingsProviderMicrosoftEntraRetrieveRequestOpts( + requestParameters: PropertymappingsProviderMicrosoftEntraRetrieveRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsProviderMicrosoftEntraRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/provider/microsoft_entra/{pm_uuid}/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * MicrosoftEntraProviderMapping Viewset + */ + async propertymappingsProviderMicrosoftEntraRetrieveRaw( + requestParameters: PropertymappingsProviderMicrosoftEntraRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsProviderMicrosoftEntraRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + MicrosoftEntraProviderMappingFromJSON(jsonValue), + ); + } + + /** + * MicrosoftEntraProviderMapping Viewset + */ + async propertymappingsProviderMicrosoftEntraRetrieve( + requestParameters: PropertymappingsProviderMicrosoftEntraRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsProviderMicrosoftEntraRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsProviderMicrosoftEntraUpdate without sending the request + */ + async propertymappingsProviderMicrosoftEntraUpdateRequestOpts( + requestParameters: PropertymappingsProviderMicrosoftEntraUpdateRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsProviderMicrosoftEntraUpdate().', + ); + } + + if (requestParameters["microsoftEntraProviderMappingRequest"] == null) { + throw new runtime.RequiredError( + "microsoftEntraProviderMappingRequest", + 'Required parameter "microsoftEntraProviderMappingRequest" was null or undefined when calling propertymappingsProviderMicrosoftEntraUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/provider/microsoft_entra/{pm_uuid}/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: MicrosoftEntraProviderMappingRequestToJSON( + requestParameters["microsoftEntraProviderMappingRequest"], + ), + }; + } + + /** + * MicrosoftEntraProviderMapping Viewset + */ + async propertymappingsProviderMicrosoftEntraUpdateRaw( + requestParameters: PropertymappingsProviderMicrosoftEntraUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsProviderMicrosoftEntraUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + MicrosoftEntraProviderMappingFromJSON(jsonValue), + ); + } + + /** + * MicrosoftEntraProviderMapping Viewset + */ + async propertymappingsProviderMicrosoftEntraUpdate( + requestParameters: PropertymappingsProviderMicrosoftEntraUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsProviderMicrosoftEntraUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsProviderMicrosoftEntraUsedByList without sending the request + */ + async propertymappingsProviderMicrosoftEntraUsedByListRequestOpts( + requestParameters: PropertymappingsProviderMicrosoftEntraUsedByListRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsProviderMicrosoftEntraUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/provider/microsoft_entra/{pm_uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async propertymappingsProviderMicrosoftEntraUsedByListRaw( + requestParameters: PropertymappingsProviderMicrosoftEntraUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.propertymappingsProviderMicrosoftEntraUsedByListRequestOpts( + requestParameters, + ); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async propertymappingsProviderMicrosoftEntraUsedByList( + requestParameters: PropertymappingsProviderMicrosoftEntraUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.propertymappingsProviderMicrosoftEntraUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsProviderRacCreate without sending the request + */ + async propertymappingsProviderRacCreateRequestOpts( + requestParameters: PropertymappingsProviderRacCreateRequest, + ): Promise { + if (requestParameters["rACPropertyMappingRequest"] == null) { + throw new runtime.RequiredError( + "rACPropertyMappingRequest", + 'Required parameter "rACPropertyMappingRequest" was null or undefined when calling propertymappingsProviderRacCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/provider/rac/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: RACPropertyMappingRequestToJSON(requestParameters["rACPropertyMappingRequest"]), + }; + } + + /** + * RACPropertyMapping Viewset + */ + async propertymappingsProviderRacCreateRaw( + requestParameters: PropertymappingsProviderRacCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsProviderRacCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + RACPropertyMappingFromJSON(jsonValue), + ); + } + + /** + * RACPropertyMapping Viewset + */ + async propertymappingsProviderRacCreate( + requestParameters: PropertymappingsProviderRacCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsProviderRacCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsProviderRacDestroy without sending the request + */ + async propertymappingsProviderRacDestroyRequestOpts( + requestParameters: PropertymappingsProviderRacDestroyRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsProviderRacDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/provider/rac/{pm_uuid}/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * RACPropertyMapping Viewset + */ + async propertymappingsProviderRacDestroyRaw( + requestParameters: PropertymappingsProviderRacDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsProviderRacDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * RACPropertyMapping Viewset + */ + async propertymappingsProviderRacDestroy( + requestParameters: PropertymappingsProviderRacDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.propertymappingsProviderRacDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for propertymappingsProviderRacList without sending the request + */ + async propertymappingsProviderRacListRequestOpts( + requestParameters: PropertymappingsProviderRacListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["managed"] != null) { + queryParameters["managed"] = requestParameters["managed"]; + } + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/provider/rac/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * RACPropertyMapping Viewset + */ + async propertymappingsProviderRacListRaw( + requestParameters: PropertymappingsProviderRacListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsProviderRacListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedRACPropertyMappingListFromJSON(jsonValue), + ); + } + + /** + * RACPropertyMapping Viewset + */ + async propertymappingsProviderRacList( + requestParameters: PropertymappingsProviderRacListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsProviderRacListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsProviderRacPartialUpdate without sending the request + */ + async propertymappingsProviderRacPartialUpdateRequestOpts( + requestParameters: PropertymappingsProviderRacPartialUpdateRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsProviderRacPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/provider/rac/{pm_uuid}/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedRACPropertyMappingRequestToJSON( + requestParameters["patchedRACPropertyMappingRequest"], + ), + }; + } + + /** + * RACPropertyMapping Viewset + */ + async propertymappingsProviderRacPartialUpdateRaw( + requestParameters: PropertymappingsProviderRacPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsProviderRacPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + RACPropertyMappingFromJSON(jsonValue), + ); + } + + /** + * RACPropertyMapping Viewset + */ + async propertymappingsProviderRacPartialUpdate( + requestParameters: PropertymappingsProviderRacPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsProviderRacPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsProviderRacRetrieve without sending the request + */ + async propertymappingsProviderRacRetrieveRequestOpts( + requestParameters: PropertymappingsProviderRacRetrieveRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsProviderRacRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/provider/rac/{pm_uuid}/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * RACPropertyMapping Viewset + */ + async propertymappingsProviderRacRetrieveRaw( + requestParameters: PropertymappingsProviderRacRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsProviderRacRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + RACPropertyMappingFromJSON(jsonValue), + ); + } + + /** + * RACPropertyMapping Viewset + */ + async propertymappingsProviderRacRetrieve( + requestParameters: PropertymappingsProviderRacRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsProviderRacRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsProviderRacUpdate without sending the request + */ + async propertymappingsProviderRacUpdateRequestOpts( + requestParameters: PropertymappingsProviderRacUpdateRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsProviderRacUpdate().', + ); + } + + if (requestParameters["rACPropertyMappingRequest"] == null) { + throw new runtime.RequiredError( + "rACPropertyMappingRequest", + 'Required parameter "rACPropertyMappingRequest" was null or undefined when calling propertymappingsProviderRacUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/provider/rac/{pm_uuid}/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: RACPropertyMappingRequestToJSON(requestParameters["rACPropertyMappingRequest"]), + }; + } + + /** + * RACPropertyMapping Viewset + */ + async propertymappingsProviderRacUpdateRaw( + requestParameters: PropertymappingsProviderRacUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsProviderRacUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + RACPropertyMappingFromJSON(jsonValue), + ); + } + + /** + * RACPropertyMapping Viewset + */ + async propertymappingsProviderRacUpdate( + requestParameters: PropertymappingsProviderRacUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsProviderRacUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsProviderRacUsedByList without sending the request + */ + async propertymappingsProviderRacUsedByListRequestOpts( + requestParameters: PropertymappingsProviderRacUsedByListRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsProviderRacUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/provider/rac/{pm_uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async propertymappingsProviderRacUsedByListRaw( + requestParameters: PropertymappingsProviderRacUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.propertymappingsProviderRacUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async propertymappingsProviderRacUsedByList( + requestParameters: PropertymappingsProviderRacUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.propertymappingsProviderRacUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsProviderRadiusCreate without sending the request + */ + async propertymappingsProviderRadiusCreateRequestOpts( + requestParameters: PropertymappingsProviderRadiusCreateRequest, + ): Promise { + if (requestParameters["radiusProviderPropertyMappingRequest"] == null) { + throw new runtime.RequiredError( + "radiusProviderPropertyMappingRequest", + 'Required parameter "radiusProviderPropertyMappingRequest" was null or undefined when calling propertymappingsProviderRadiusCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/provider/radius/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: RadiusProviderPropertyMappingRequestToJSON( + requestParameters["radiusProviderPropertyMappingRequest"], + ), + }; + } + + /** + * RadiusProviderPropertyMapping Viewset + */ + async propertymappingsProviderRadiusCreateRaw( + requestParameters: PropertymappingsProviderRadiusCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsProviderRadiusCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + RadiusProviderPropertyMappingFromJSON(jsonValue), + ); + } + + /** + * RadiusProviderPropertyMapping Viewset + */ + async propertymappingsProviderRadiusCreate( + requestParameters: PropertymappingsProviderRadiusCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsProviderRadiusCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsProviderRadiusDestroy without sending the request + */ + async propertymappingsProviderRadiusDestroyRequestOpts( + requestParameters: PropertymappingsProviderRadiusDestroyRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsProviderRadiusDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/provider/radius/{pm_uuid}/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * RadiusProviderPropertyMapping Viewset + */ + async propertymappingsProviderRadiusDestroyRaw( + requestParameters: PropertymappingsProviderRadiusDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsProviderRadiusDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * RadiusProviderPropertyMapping Viewset + */ + async propertymappingsProviderRadiusDestroy( + requestParameters: PropertymappingsProviderRadiusDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.propertymappingsProviderRadiusDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for propertymappingsProviderRadiusList without sending the request + */ + async propertymappingsProviderRadiusListRequestOpts( + requestParameters: PropertymappingsProviderRadiusListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["managed"] != null) { + queryParameters["managed"] = requestParameters["managed"]; + } + + if (requestParameters["managedIsnull"] != null) { + queryParameters["managed__isnull"] = requestParameters["managedIsnull"]; + } + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/provider/radius/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * RadiusProviderPropertyMapping Viewset + */ + async propertymappingsProviderRadiusListRaw( + requestParameters: PropertymappingsProviderRadiusListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsProviderRadiusListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedRadiusProviderPropertyMappingListFromJSON(jsonValue), + ); + } + + /** + * RadiusProviderPropertyMapping Viewset + */ + async propertymappingsProviderRadiusList( + requestParameters: PropertymappingsProviderRadiusListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsProviderRadiusListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsProviderRadiusPartialUpdate without sending the request + */ + async propertymappingsProviderRadiusPartialUpdateRequestOpts( + requestParameters: PropertymappingsProviderRadiusPartialUpdateRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsProviderRadiusPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/provider/radius/{pm_uuid}/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedRadiusProviderPropertyMappingRequestToJSON( + requestParameters["patchedRadiusProviderPropertyMappingRequest"], + ), + }; + } + + /** + * RadiusProviderPropertyMapping Viewset + */ + async propertymappingsProviderRadiusPartialUpdateRaw( + requestParameters: PropertymappingsProviderRadiusPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsProviderRadiusPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + RadiusProviderPropertyMappingFromJSON(jsonValue), + ); + } + + /** + * RadiusProviderPropertyMapping Viewset + */ + async propertymappingsProviderRadiusPartialUpdate( + requestParameters: PropertymappingsProviderRadiusPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsProviderRadiusPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsProviderRadiusRetrieve without sending the request + */ + async propertymappingsProviderRadiusRetrieveRequestOpts( + requestParameters: PropertymappingsProviderRadiusRetrieveRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsProviderRadiusRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/provider/radius/{pm_uuid}/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * RadiusProviderPropertyMapping Viewset + */ + async propertymappingsProviderRadiusRetrieveRaw( + requestParameters: PropertymappingsProviderRadiusRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsProviderRadiusRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + RadiusProviderPropertyMappingFromJSON(jsonValue), + ); + } + + /** + * RadiusProviderPropertyMapping Viewset + */ + async propertymappingsProviderRadiusRetrieve( + requestParameters: PropertymappingsProviderRadiusRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsProviderRadiusRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsProviderRadiusUpdate without sending the request + */ + async propertymappingsProviderRadiusUpdateRequestOpts( + requestParameters: PropertymappingsProviderRadiusUpdateRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsProviderRadiusUpdate().', + ); + } + + if (requestParameters["radiusProviderPropertyMappingRequest"] == null) { + throw new runtime.RequiredError( + "radiusProviderPropertyMappingRequest", + 'Required parameter "radiusProviderPropertyMappingRequest" was null or undefined when calling propertymappingsProviderRadiusUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/provider/radius/{pm_uuid}/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: RadiusProviderPropertyMappingRequestToJSON( + requestParameters["radiusProviderPropertyMappingRequest"], + ), + }; + } + + /** + * RadiusProviderPropertyMapping Viewset + */ + async propertymappingsProviderRadiusUpdateRaw( + requestParameters: PropertymappingsProviderRadiusUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsProviderRadiusUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + RadiusProviderPropertyMappingFromJSON(jsonValue), + ); + } + + /** + * RadiusProviderPropertyMapping Viewset + */ + async propertymappingsProviderRadiusUpdate( + requestParameters: PropertymappingsProviderRadiusUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsProviderRadiusUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsProviderRadiusUsedByList without sending the request + */ + async propertymappingsProviderRadiusUsedByListRequestOpts( + requestParameters: PropertymappingsProviderRadiusUsedByListRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsProviderRadiusUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/provider/radius/{pm_uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async propertymappingsProviderRadiusUsedByListRaw( + requestParameters: PropertymappingsProviderRadiusUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.propertymappingsProviderRadiusUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async propertymappingsProviderRadiusUsedByList( + requestParameters: PropertymappingsProviderRadiusUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.propertymappingsProviderRadiusUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsProviderSamlCreate without sending the request + */ + async propertymappingsProviderSamlCreateRequestOpts( + requestParameters: PropertymappingsProviderSamlCreateRequest, + ): Promise { + if (requestParameters["sAMLPropertyMappingRequest"] == null) { + throw new runtime.RequiredError( + "sAMLPropertyMappingRequest", + 'Required parameter "sAMLPropertyMappingRequest" was null or undefined when calling propertymappingsProviderSamlCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/provider/saml/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: SAMLPropertyMappingRequestToJSON(requestParameters["sAMLPropertyMappingRequest"]), + }; + } + + /** + * SAMLPropertyMapping Viewset + */ + async propertymappingsProviderSamlCreateRaw( + requestParameters: PropertymappingsProviderSamlCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsProviderSamlCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + SAMLPropertyMappingFromJSON(jsonValue), + ); + } + + /** + * SAMLPropertyMapping Viewset + */ + async propertymappingsProviderSamlCreate( + requestParameters: PropertymappingsProviderSamlCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsProviderSamlCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsProviderSamlDestroy without sending the request + */ + async propertymappingsProviderSamlDestroyRequestOpts( + requestParameters: PropertymappingsProviderSamlDestroyRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsProviderSamlDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/provider/saml/{pm_uuid}/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * SAMLPropertyMapping Viewset + */ + async propertymappingsProviderSamlDestroyRaw( + requestParameters: PropertymappingsProviderSamlDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsProviderSamlDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * SAMLPropertyMapping Viewset + */ + async propertymappingsProviderSamlDestroy( + requestParameters: PropertymappingsProviderSamlDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.propertymappingsProviderSamlDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for propertymappingsProviderSamlList without sending the request + */ + async propertymappingsProviderSamlListRequestOpts( + requestParameters: PropertymappingsProviderSamlListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["friendlyName"] != null) { + queryParameters["friendly_name"] = requestParameters["friendlyName"]; + } + + if (requestParameters["managed"] != null) { + queryParameters["managed"] = requestParameters["managed"]; + } + + if (requestParameters["managedIsnull"] != null) { + queryParameters["managed__isnull"] = requestParameters["managedIsnull"]; + } + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["samlName"] != null) { + queryParameters["saml_name"] = requestParameters["samlName"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/provider/saml/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * SAMLPropertyMapping Viewset + */ + async propertymappingsProviderSamlListRaw( + requestParameters: PropertymappingsProviderSamlListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsProviderSamlListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedSAMLPropertyMappingListFromJSON(jsonValue), + ); + } + + /** + * SAMLPropertyMapping Viewset + */ + async propertymappingsProviderSamlList( + requestParameters: PropertymappingsProviderSamlListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsProviderSamlListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsProviderSamlPartialUpdate without sending the request + */ + async propertymappingsProviderSamlPartialUpdateRequestOpts( + requestParameters: PropertymappingsProviderSamlPartialUpdateRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsProviderSamlPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/provider/saml/{pm_uuid}/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedSAMLPropertyMappingRequestToJSON( + requestParameters["patchedSAMLPropertyMappingRequest"], + ), + }; + } + + /** + * SAMLPropertyMapping Viewset + */ + async propertymappingsProviderSamlPartialUpdateRaw( + requestParameters: PropertymappingsProviderSamlPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsProviderSamlPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + SAMLPropertyMappingFromJSON(jsonValue), + ); + } + + /** + * SAMLPropertyMapping Viewset + */ + async propertymappingsProviderSamlPartialUpdate( + requestParameters: PropertymappingsProviderSamlPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsProviderSamlPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsProviderSamlRetrieve without sending the request + */ + async propertymappingsProviderSamlRetrieveRequestOpts( + requestParameters: PropertymappingsProviderSamlRetrieveRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsProviderSamlRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/provider/saml/{pm_uuid}/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * SAMLPropertyMapping Viewset + */ + async propertymappingsProviderSamlRetrieveRaw( + requestParameters: PropertymappingsProviderSamlRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsProviderSamlRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + SAMLPropertyMappingFromJSON(jsonValue), + ); + } + + /** + * SAMLPropertyMapping Viewset + */ + async propertymappingsProviderSamlRetrieve( + requestParameters: PropertymappingsProviderSamlRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsProviderSamlRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsProviderSamlUpdate without sending the request + */ + async propertymappingsProviderSamlUpdateRequestOpts( + requestParameters: PropertymappingsProviderSamlUpdateRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsProviderSamlUpdate().', + ); + } + + if (requestParameters["sAMLPropertyMappingRequest"] == null) { + throw new runtime.RequiredError( + "sAMLPropertyMappingRequest", + 'Required parameter "sAMLPropertyMappingRequest" was null or undefined when calling propertymappingsProviderSamlUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/provider/saml/{pm_uuid}/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: SAMLPropertyMappingRequestToJSON(requestParameters["sAMLPropertyMappingRequest"]), + }; + } + + /** + * SAMLPropertyMapping Viewset + */ + async propertymappingsProviderSamlUpdateRaw( + requestParameters: PropertymappingsProviderSamlUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsProviderSamlUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + SAMLPropertyMappingFromJSON(jsonValue), + ); + } + + /** + * SAMLPropertyMapping Viewset + */ + async propertymappingsProviderSamlUpdate( + requestParameters: PropertymappingsProviderSamlUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsProviderSamlUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsProviderSamlUsedByList without sending the request + */ + async propertymappingsProviderSamlUsedByListRequestOpts( + requestParameters: PropertymappingsProviderSamlUsedByListRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsProviderSamlUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/provider/saml/{pm_uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async propertymappingsProviderSamlUsedByListRaw( + requestParameters: PropertymappingsProviderSamlUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.propertymappingsProviderSamlUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async propertymappingsProviderSamlUsedByList( + requestParameters: PropertymappingsProviderSamlUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.propertymappingsProviderSamlUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsProviderScimCreate without sending the request + */ + async propertymappingsProviderScimCreateRequestOpts( + requestParameters: PropertymappingsProviderScimCreateRequest, + ): Promise { + if (requestParameters["sCIMMappingRequest"] == null) { + throw new runtime.RequiredError( + "sCIMMappingRequest", + 'Required parameter "sCIMMappingRequest" was null or undefined when calling propertymappingsProviderScimCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/provider/scim/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: SCIMMappingRequestToJSON(requestParameters["sCIMMappingRequest"]), + }; + } + + /** + * SCIMMapping Viewset + */ + async propertymappingsProviderScimCreateRaw( + requestParameters: PropertymappingsProviderScimCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsProviderScimCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => SCIMMappingFromJSON(jsonValue)); + } + + /** + * SCIMMapping Viewset + */ + async propertymappingsProviderScimCreate( + requestParameters: PropertymappingsProviderScimCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsProviderScimCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsProviderScimDestroy without sending the request + */ + async propertymappingsProviderScimDestroyRequestOpts( + requestParameters: PropertymappingsProviderScimDestroyRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsProviderScimDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/provider/scim/{pm_uuid}/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * SCIMMapping Viewset + */ + async propertymappingsProviderScimDestroyRaw( + requestParameters: PropertymappingsProviderScimDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsProviderScimDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * SCIMMapping Viewset + */ + async propertymappingsProviderScimDestroy( + requestParameters: PropertymappingsProviderScimDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.propertymappingsProviderScimDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for propertymappingsProviderScimList without sending the request + */ + async propertymappingsProviderScimListRequestOpts( + requestParameters: PropertymappingsProviderScimListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["managed"] != null) { + queryParameters["managed"] = requestParameters["managed"]; + } + + if (requestParameters["managedIsnull"] != null) { + queryParameters["managed__isnull"] = requestParameters["managedIsnull"]; + } + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/provider/scim/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * SCIMMapping Viewset + */ + async propertymappingsProviderScimListRaw( + requestParameters: PropertymappingsProviderScimListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsProviderScimListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedSCIMMappingListFromJSON(jsonValue), + ); + } + + /** + * SCIMMapping Viewset + */ + async propertymappingsProviderScimList( + requestParameters: PropertymappingsProviderScimListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsProviderScimListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsProviderScimPartialUpdate without sending the request + */ + async propertymappingsProviderScimPartialUpdateRequestOpts( + requestParameters: PropertymappingsProviderScimPartialUpdateRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsProviderScimPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/provider/scim/{pm_uuid}/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedSCIMMappingRequestToJSON(requestParameters["patchedSCIMMappingRequest"]), + }; + } + + /** + * SCIMMapping Viewset + */ + async propertymappingsProviderScimPartialUpdateRaw( + requestParameters: PropertymappingsProviderScimPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsProviderScimPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => SCIMMappingFromJSON(jsonValue)); + } + + /** + * SCIMMapping Viewset + */ + async propertymappingsProviderScimPartialUpdate( + requestParameters: PropertymappingsProviderScimPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsProviderScimPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsProviderScimRetrieve without sending the request + */ + async propertymappingsProviderScimRetrieveRequestOpts( + requestParameters: PropertymappingsProviderScimRetrieveRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsProviderScimRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/provider/scim/{pm_uuid}/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * SCIMMapping Viewset + */ + async propertymappingsProviderScimRetrieveRaw( + requestParameters: PropertymappingsProviderScimRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsProviderScimRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => SCIMMappingFromJSON(jsonValue)); + } + + /** + * SCIMMapping Viewset + */ + async propertymappingsProviderScimRetrieve( + requestParameters: PropertymappingsProviderScimRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsProviderScimRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsProviderScimUpdate without sending the request + */ + async propertymappingsProviderScimUpdateRequestOpts( + requestParameters: PropertymappingsProviderScimUpdateRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsProviderScimUpdate().', + ); + } + + if (requestParameters["sCIMMappingRequest"] == null) { + throw new runtime.RequiredError( + "sCIMMappingRequest", + 'Required parameter "sCIMMappingRequest" was null or undefined when calling propertymappingsProviderScimUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/provider/scim/{pm_uuid}/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: SCIMMappingRequestToJSON(requestParameters["sCIMMappingRequest"]), + }; + } + + /** + * SCIMMapping Viewset + */ + async propertymappingsProviderScimUpdateRaw( + requestParameters: PropertymappingsProviderScimUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsProviderScimUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => SCIMMappingFromJSON(jsonValue)); + } + + /** + * SCIMMapping Viewset + */ + async propertymappingsProviderScimUpdate( + requestParameters: PropertymappingsProviderScimUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsProviderScimUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsProviderScimUsedByList without sending the request + */ + async propertymappingsProviderScimUsedByListRequestOpts( + requestParameters: PropertymappingsProviderScimUsedByListRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsProviderScimUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/provider/scim/{pm_uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async propertymappingsProviderScimUsedByListRaw( + requestParameters: PropertymappingsProviderScimUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.propertymappingsProviderScimUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async propertymappingsProviderScimUsedByList( + requestParameters: PropertymappingsProviderScimUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.propertymappingsProviderScimUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsProviderScopeCreate without sending the request + */ + async propertymappingsProviderScopeCreateRequestOpts( + requestParameters: PropertymappingsProviderScopeCreateRequest, + ): Promise { + if (requestParameters["scopeMappingRequest"] == null) { + throw new runtime.RequiredError( + "scopeMappingRequest", + 'Required parameter "scopeMappingRequest" was null or undefined when calling propertymappingsProviderScopeCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/provider/scope/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: ScopeMappingRequestToJSON(requestParameters["scopeMappingRequest"]), + }; + } + + /** + * ScopeMapping Viewset + */ + async propertymappingsProviderScopeCreateRaw( + requestParameters: PropertymappingsProviderScopeCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsProviderScopeCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + ScopeMappingFromJSON(jsonValue), + ); + } + + /** + * ScopeMapping Viewset + */ + async propertymappingsProviderScopeCreate( + requestParameters: PropertymappingsProviderScopeCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsProviderScopeCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsProviderScopeDestroy without sending the request + */ + async propertymappingsProviderScopeDestroyRequestOpts( + requestParameters: PropertymappingsProviderScopeDestroyRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsProviderScopeDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/provider/scope/{pm_uuid}/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * ScopeMapping Viewset + */ + async propertymappingsProviderScopeDestroyRaw( + requestParameters: PropertymappingsProviderScopeDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsProviderScopeDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * ScopeMapping Viewset + */ + async propertymappingsProviderScopeDestroy( + requestParameters: PropertymappingsProviderScopeDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.propertymappingsProviderScopeDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for propertymappingsProviderScopeList without sending the request + */ + async propertymappingsProviderScopeListRequestOpts( + requestParameters: PropertymappingsProviderScopeListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["managed"] != null) { + queryParameters["managed"] = requestParameters["managed"]; + } + + if (requestParameters["managedIsnull"] != null) { + queryParameters["managed__isnull"] = requestParameters["managedIsnull"]; + } + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["scopeName"] != null) { + queryParameters["scope_name"] = requestParameters["scopeName"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/provider/scope/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * ScopeMapping Viewset + */ + async propertymappingsProviderScopeListRaw( + requestParameters: PropertymappingsProviderScopeListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsProviderScopeListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedScopeMappingListFromJSON(jsonValue), + ); + } + + /** + * ScopeMapping Viewset + */ + async propertymappingsProviderScopeList( + requestParameters: PropertymappingsProviderScopeListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsProviderScopeListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsProviderScopePartialUpdate without sending the request + */ + async propertymappingsProviderScopePartialUpdateRequestOpts( + requestParameters: PropertymappingsProviderScopePartialUpdateRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsProviderScopePartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/provider/scope/{pm_uuid}/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedScopeMappingRequestToJSON(requestParameters["patchedScopeMappingRequest"]), + }; + } + + /** + * ScopeMapping Viewset + */ + async propertymappingsProviderScopePartialUpdateRaw( + requestParameters: PropertymappingsProviderScopePartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsProviderScopePartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + ScopeMappingFromJSON(jsonValue), + ); + } + + /** + * ScopeMapping Viewset + */ + async propertymappingsProviderScopePartialUpdate( + requestParameters: PropertymappingsProviderScopePartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsProviderScopePartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsProviderScopeRetrieve without sending the request + */ + async propertymappingsProviderScopeRetrieveRequestOpts( + requestParameters: PropertymappingsProviderScopeRetrieveRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsProviderScopeRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/provider/scope/{pm_uuid}/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * ScopeMapping Viewset + */ + async propertymappingsProviderScopeRetrieveRaw( + requestParameters: PropertymappingsProviderScopeRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsProviderScopeRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + ScopeMappingFromJSON(jsonValue), + ); + } + + /** + * ScopeMapping Viewset + */ + async propertymappingsProviderScopeRetrieve( + requestParameters: PropertymappingsProviderScopeRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsProviderScopeRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsProviderScopeUpdate without sending the request + */ + async propertymappingsProviderScopeUpdateRequestOpts( + requestParameters: PropertymappingsProviderScopeUpdateRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsProviderScopeUpdate().', + ); + } + + if (requestParameters["scopeMappingRequest"] == null) { + throw new runtime.RequiredError( + "scopeMappingRequest", + 'Required parameter "scopeMappingRequest" was null or undefined when calling propertymappingsProviderScopeUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/provider/scope/{pm_uuid}/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: ScopeMappingRequestToJSON(requestParameters["scopeMappingRequest"]), + }; + } + + /** + * ScopeMapping Viewset + */ + async propertymappingsProviderScopeUpdateRaw( + requestParameters: PropertymappingsProviderScopeUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsProviderScopeUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + ScopeMappingFromJSON(jsonValue), + ); + } + + /** + * ScopeMapping Viewset + */ + async propertymappingsProviderScopeUpdate( + requestParameters: PropertymappingsProviderScopeUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsProviderScopeUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsProviderScopeUsedByList without sending the request + */ + async propertymappingsProviderScopeUsedByListRequestOpts( + requestParameters: PropertymappingsProviderScopeUsedByListRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsProviderScopeUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/provider/scope/{pm_uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async propertymappingsProviderScopeUsedByListRaw( + requestParameters: PropertymappingsProviderScopeUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.propertymappingsProviderScopeUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async propertymappingsProviderScopeUsedByList( + requestParameters: PropertymappingsProviderScopeUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.propertymappingsProviderScopeUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsSourceKerberosCreate without sending the request + */ + async propertymappingsSourceKerberosCreateRequestOpts( + requestParameters: PropertymappingsSourceKerberosCreateRequest, + ): Promise { + if (requestParameters["kerberosSourcePropertyMappingRequest"] == null) { + throw new runtime.RequiredError( + "kerberosSourcePropertyMappingRequest", + 'Required parameter "kerberosSourcePropertyMappingRequest" was null or undefined when calling propertymappingsSourceKerberosCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/source/kerberos/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: KerberosSourcePropertyMappingRequestToJSON( + requestParameters["kerberosSourcePropertyMappingRequest"], + ), + }; + } + + /** + * KerberosSource PropertyMapping Viewset + */ + async propertymappingsSourceKerberosCreateRaw( + requestParameters: PropertymappingsSourceKerberosCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsSourceKerberosCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + KerberosSourcePropertyMappingFromJSON(jsonValue), + ); + } + + /** + * KerberosSource PropertyMapping Viewset + */ + async propertymappingsSourceKerberosCreate( + requestParameters: PropertymappingsSourceKerberosCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsSourceKerberosCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsSourceKerberosDestroy without sending the request + */ + async propertymappingsSourceKerberosDestroyRequestOpts( + requestParameters: PropertymappingsSourceKerberosDestroyRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsSourceKerberosDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/source/kerberos/{pm_uuid}/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * KerberosSource PropertyMapping Viewset + */ + async propertymappingsSourceKerberosDestroyRaw( + requestParameters: PropertymappingsSourceKerberosDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsSourceKerberosDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * KerberosSource PropertyMapping Viewset + */ + async propertymappingsSourceKerberosDestroy( + requestParameters: PropertymappingsSourceKerberosDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.propertymappingsSourceKerberosDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for propertymappingsSourceKerberosList without sending the request + */ + async propertymappingsSourceKerberosListRequestOpts( + requestParameters: PropertymappingsSourceKerberosListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["managed"] != null) { + queryParameters["managed"] = requestParameters["managed"]; + } + + if (requestParameters["managedIsnull"] != null) { + queryParameters["managed__isnull"] = requestParameters["managedIsnull"]; + } + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/source/kerberos/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * KerberosSource PropertyMapping Viewset + */ + async propertymappingsSourceKerberosListRaw( + requestParameters: PropertymappingsSourceKerberosListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsSourceKerberosListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedKerberosSourcePropertyMappingListFromJSON(jsonValue), + ); + } + + /** + * KerberosSource PropertyMapping Viewset + */ + async propertymappingsSourceKerberosList( + requestParameters: PropertymappingsSourceKerberosListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsSourceKerberosListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsSourceKerberosPartialUpdate without sending the request + */ + async propertymappingsSourceKerberosPartialUpdateRequestOpts( + requestParameters: PropertymappingsSourceKerberosPartialUpdateRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsSourceKerberosPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/source/kerberos/{pm_uuid}/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedKerberosSourcePropertyMappingRequestToJSON( + requestParameters["patchedKerberosSourcePropertyMappingRequest"], + ), + }; + } + + /** + * KerberosSource PropertyMapping Viewset + */ + async propertymappingsSourceKerberosPartialUpdateRaw( + requestParameters: PropertymappingsSourceKerberosPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsSourceKerberosPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + KerberosSourcePropertyMappingFromJSON(jsonValue), + ); + } + + /** + * KerberosSource PropertyMapping Viewset + */ + async propertymappingsSourceKerberosPartialUpdate( + requestParameters: PropertymappingsSourceKerberosPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsSourceKerberosPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsSourceKerberosRetrieve without sending the request + */ + async propertymappingsSourceKerberosRetrieveRequestOpts( + requestParameters: PropertymappingsSourceKerberosRetrieveRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsSourceKerberosRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/source/kerberos/{pm_uuid}/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * KerberosSource PropertyMapping Viewset + */ + async propertymappingsSourceKerberosRetrieveRaw( + requestParameters: PropertymappingsSourceKerberosRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsSourceKerberosRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + KerberosSourcePropertyMappingFromJSON(jsonValue), + ); + } + + /** + * KerberosSource PropertyMapping Viewset + */ + async propertymappingsSourceKerberosRetrieve( + requestParameters: PropertymappingsSourceKerberosRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsSourceKerberosRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsSourceKerberosUpdate without sending the request + */ + async propertymappingsSourceKerberosUpdateRequestOpts( + requestParameters: PropertymappingsSourceKerberosUpdateRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsSourceKerberosUpdate().', + ); + } + + if (requestParameters["kerberosSourcePropertyMappingRequest"] == null) { + throw new runtime.RequiredError( + "kerberosSourcePropertyMappingRequest", + 'Required parameter "kerberosSourcePropertyMappingRequest" was null or undefined when calling propertymappingsSourceKerberosUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/source/kerberos/{pm_uuid}/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: KerberosSourcePropertyMappingRequestToJSON( + requestParameters["kerberosSourcePropertyMappingRequest"], + ), + }; + } + + /** + * KerberosSource PropertyMapping Viewset + */ + async propertymappingsSourceKerberosUpdateRaw( + requestParameters: PropertymappingsSourceKerberosUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsSourceKerberosUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + KerberosSourcePropertyMappingFromJSON(jsonValue), + ); + } + + /** + * KerberosSource PropertyMapping Viewset + */ + async propertymappingsSourceKerberosUpdate( + requestParameters: PropertymappingsSourceKerberosUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsSourceKerberosUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsSourceKerberosUsedByList without sending the request + */ + async propertymappingsSourceKerberosUsedByListRequestOpts( + requestParameters: PropertymappingsSourceKerberosUsedByListRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsSourceKerberosUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/source/kerberos/{pm_uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async propertymappingsSourceKerberosUsedByListRaw( + requestParameters: PropertymappingsSourceKerberosUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.propertymappingsSourceKerberosUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async propertymappingsSourceKerberosUsedByList( + requestParameters: PropertymappingsSourceKerberosUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.propertymappingsSourceKerberosUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsSourceLdapCreate without sending the request + */ + async propertymappingsSourceLdapCreateRequestOpts( + requestParameters: PropertymappingsSourceLdapCreateRequest, + ): Promise { + if (requestParameters["lDAPSourcePropertyMappingRequest"] == null) { + throw new runtime.RequiredError( + "lDAPSourcePropertyMappingRequest", + 'Required parameter "lDAPSourcePropertyMappingRequest" was null or undefined when calling propertymappingsSourceLdapCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/source/ldap/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: LDAPSourcePropertyMappingRequestToJSON( + requestParameters["lDAPSourcePropertyMappingRequest"], + ), + }; + } + + /** + * LDAP PropertyMapping Viewset + */ + async propertymappingsSourceLdapCreateRaw( + requestParameters: PropertymappingsSourceLdapCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsSourceLdapCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + LDAPSourcePropertyMappingFromJSON(jsonValue), + ); + } + + /** + * LDAP PropertyMapping Viewset + */ + async propertymappingsSourceLdapCreate( + requestParameters: PropertymappingsSourceLdapCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsSourceLdapCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsSourceLdapDestroy without sending the request + */ + async propertymappingsSourceLdapDestroyRequestOpts( + requestParameters: PropertymappingsSourceLdapDestroyRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsSourceLdapDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/source/ldap/{pm_uuid}/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * LDAP PropertyMapping Viewset + */ + async propertymappingsSourceLdapDestroyRaw( + requestParameters: PropertymappingsSourceLdapDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsSourceLdapDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * LDAP PropertyMapping Viewset + */ + async propertymappingsSourceLdapDestroy( + requestParameters: PropertymappingsSourceLdapDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.propertymappingsSourceLdapDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for propertymappingsSourceLdapList without sending the request + */ + async propertymappingsSourceLdapListRequestOpts( + requestParameters: PropertymappingsSourceLdapListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["managed"] != null) { + queryParameters["managed"] = requestParameters["managed"]; + } + + if (requestParameters["managedIsnull"] != null) { + queryParameters["managed__isnull"] = requestParameters["managedIsnull"]; + } + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/source/ldap/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * LDAP PropertyMapping Viewset + */ + async propertymappingsSourceLdapListRaw( + requestParameters: PropertymappingsSourceLdapListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsSourceLdapListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedLDAPSourcePropertyMappingListFromJSON(jsonValue), + ); + } + + /** + * LDAP PropertyMapping Viewset + */ + async propertymappingsSourceLdapList( + requestParameters: PropertymappingsSourceLdapListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsSourceLdapListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsSourceLdapPartialUpdate without sending the request + */ + async propertymappingsSourceLdapPartialUpdateRequestOpts( + requestParameters: PropertymappingsSourceLdapPartialUpdateRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsSourceLdapPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/source/ldap/{pm_uuid}/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedLDAPSourcePropertyMappingRequestToJSON( + requestParameters["patchedLDAPSourcePropertyMappingRequest"], + ), + }; + } + + /** + * LDAP PropertyMapping Viewset + */ + async propertymappingsSourceLdapPartialUpdateRaw( + requestParameters: PropertymappingsSourceLdapPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsSourceLdapPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + LDAPSourcePropertyMappingFromJSON(jsonValue), + ); + } + + /** + * LDAP PropertyMapping Viewset + */ + async propertymappingsSourceLdapPartialUpdate( + requestParameters: PropertymappingsSourceLdapPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsSourceLdapPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsSourceLdapRetrieve without sending the request + */ + async propertymappingsSourceLdapRetrieveRequestOpts( + requestParameters: PropertymappingsSourceLdapRetrieveRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsSourceLdapRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/source/ldap/{pm_uuid}/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * LDAP PropertyMapping Viewset + */ + async propertymappingsSourceLdapRetrieveRaw( + requestParameters: PropertymappingsSourceLdapRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsSourceLdapRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + LDAPSourcePropertyMappingFromJSON(jsonValue), + ); + } + + /** + * LDAP PropertyMapping Viewset + */ + async propertymappingsSourceLdapRetrieve( + requestParameters: PropertymappingsSourceLdapRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsSourceLdapRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsSourceLdapUpdate without sending the request + */ + async propertymappingsSourceLdapUpdateRequestOpts( + requestParameters: PropertymappingsSourceLdapUpdateRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsSourceLdapUpdate().', + ); + } + + if (requestParameters["lDAPSourcePropertyMappingRequest"] == null) { + throw new runtime.RequiredError( + "lDAPSourcePropertyMappingRequest", + 'Required parameter "lDAPSourcePropertyMappingRequest" was null or undefined when calling propertymappingsSourceLdapUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/source/ldap/{pm_uuid}/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: LDAPSourcePropertyMappingRequestToJSON( + requestParameters["lDAPSourcePropertyMappingRequest"], + ), + }; + } + + /** + * LDAP PropertyMapping Viewset + */ + async propertymappingsSourceLdapUpdateRaw( + requestParameters: PropertymappingsSourceLdapUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsSourceLdapUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + LDAPSourcePropertyMappingFromJSON(jsonValue), + ); + } + + /** + * LDAP PropertyMapping Viewset + */ + async propertymappingsSourceLdapUpdate( + requestParameters: PropertymappingsSourceLdapUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsSourceLdapUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsSourceLdapUsedByList without sending the request + */ + async propertymappingsSourceLdapUsedByListRequestOpts( + requestParameters: PropertymappingsSourceLdapUsedByListRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsSourceLdapUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/source/ldap/{pm_uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async propertymappingsSourceLdapUsedByListRaw( + requestParameters: PropertymappingsSourceLdapUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.propertymappingsSourceLdapUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async propertymappingsSourceLdapUsedByList( + requestParameters: PropertymappingsSourceLdapUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.propertymappingsSourceLdapUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsSourceOauthCreate without sending the request + */ + async propertymappingsSourceOauthCreateRequestOpts( + requestParameters: PropertymappingsSourceOauthCreateRequest, + ): Promise { + if (requestParameters["oAuthSourcePropertyMappingRequest"] == null) { + throw new runtime.RequiredError( + "oAuthSourcePropertyMappingRequest", + 'Required parameter "oAuthSourcePropertyMappingRequest" was null or undefined when calling propertymappingsSourceOauthCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/source/oauth/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: OAuthSourcePropertyMappingRequestToJSON( + requestParameters["oAuthSourcePropertyMappingRequest"], + ), + }; + } + + /** + * OAuthSourcePropertyMapping Viewset + */ + async propertymappingsSourceOauthCreateRaw( + requestParameters: PropertymappingsSourceOauthCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsSourceOauthCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + OAuthSourcePropertyMappingFromJSON(jsonValue), + ); + } + + /** + * OAuthSourcePropertyMapping Viewset + */ + async propertymappingsSourceOauthCreate( + requestParameters: PropertymappingsSourceOauthCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsSourceOauthCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsSourceOauthDestroy without sending the request + */ + async propertymappingsSourceOauthDestroyRequestOpts( + requestParameters: PropertymappingsSourceOauthDestroyRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsSourceOauthDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/source/oauth/{pm_uuid}/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * OAuthSourcePropertyMapping Viewset + */ + async propertymappingsSourceOauthDestroyRaw( + requestParameters: PropertymappingsSourceOauthDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsSourceOauthDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * OAuthSourcePropertyMapping Viewset + */ + async propertymappingsSourceOauthDestroy( + requestParameters: PropertymappingsSourceOauthDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.propertymappingsSourceOauthDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for propertymappingsSourceOauthList without sending the request + */ + async propertymappingsSourceOauthListRequestOpts( + requestParameters: PropertymappingsSourceOauthListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["managed"] != null) { + queryParameters["managed"] = requestParameters["managed"]; + } + + if (requestParameters["managedIsnull"] != null) { + queryParameters["managed__isnull"] = requestParameters["managedIsnull"]; + } + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/source/oauth/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * OAuthSourcePropertyMapping Viewset + */ + async propertymappingsSourceOauthListRaw( + requestParameters: PropertymappingsSourceOauthListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsSourceOauthListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedOAuthSourcePropertyMappingListFromJSON(jsonValue), + ); + } + + /** + * OAuthSourcePropertyMapping Viewset + */ + async propertymappingsSourceOauthList( + requestParameters: PropertymappingsSourceOauthListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsSourceOauthListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsSourceOauthPartialUpdate without sending the request + */ + async propertymappingsSourceOauthPartialUpdateRequestOpts( + requestParameters: PropertymappingsSourceOauthPartialUpdateRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsSourceOauthPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/source/oauth/{pm_uuid}/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedOAuthSourcePropertyMappingRequestToJSON( + requestParameters["patchedOAuthSourcePropertyMappingRequest"], + ), + }; + } + + /** + * OAuthSourcePropertyMapping Viewset + */ + async propertymappingsSourceOauthPartialUpdateRaw( + requestParameters: PropertymappingsSourceOauthPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsSourceOauthPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + OAuthSourcePropertyMappingFromJSON(jsonValue), + ); + } + + /** + * OAuthSourcePropertyMapping Viewset + */ + async propertymappingsSourceOauthPartialUpdate( + requestParameters: PropertymappingsSourceOauthPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsSourceOauthPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsSourceOauthRetrieve without sending the request + */ + async propertymappingsSourceOauthRetrieveRequestOpts( + requestParameters: PropertymappingsSourceOauthRetrieveRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsSourceOauthRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/source/oauth/{pm_uuid}/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * OAuthSourcePropertyMapping Viewset + */ + async propertymappingsSourceOauthRetrieveRaw( + requestParameters: PropertymappingsSourceOauthRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsSourceOauthRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + OAuthSourcePropertyMappingFromJSON(jsonValue), + ); + } + + /** + * OAuthSourcePropertyMapping Viewset + */ + async propertymappingsSourceOauthRetrieve( + requestParameters: PropertymappingsSourceOauthRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsSourceOauthRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsSourceOauthUpdate without sending the request + */ + async propertymappingsSourceOauthUpdateRequestOpts( + requestParameters: PropertymappingsSourceOauthUpdateRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsSourceOauthUpdate().', + ); + } + + if (requestParameters["oAuthSourcePropertyMappingRequest"] == null) { + throw new runtime.RequiredError( + "oAuthSourcePropertyMappingRequest", + 'Required parameter "oAuthSourcePropertyMappingRequest" was null or undefined when calling propertymappingsSourceOauthUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/source/oauth/{pm_uuid}/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: OAuthSourcePropertyMappingRequestToJSON( + requestParameters["oAuthSourcePropertyMappingRequest"], + ), + }; + } + + /** + * OAuthSourcePropertyMapping Viewset + */ + async propertymappingsSourceOauthUpdateRaw( + requestParameters: PropertymappingsSourceOauthUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsSourceOauthUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + OAuthSourcePropertyMappingFromJSON(jsonValue), + ); + } + + /** + * OAuthSourcePropertyMapping Viewset + */ + async propertymappingsSourceOauthUpdate( + requestParameters: PropertymappingsSourceOauthUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsSourceOauthUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsSourceOauthUsedByList without sending the request + */ + async propertymappingsSourceOauthUsedByListRequestOpts( + requestParameters: PropertymappingsSourceOauthUsedByListRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsSourceOauthUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/source/oauth/{pm_uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async propertymappingsSourceOauthUsedByListRaw( + requestParameters: PropertymappingsSourceOauthUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.propertymappingsSourceOauthUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async propertymappingsSourceOauthUsedByList( + requestParameters: PropertymappingsSourceOauthUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.propertymappingsSourceOauthUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsSourcePlexCreate without sending the request + */ + async propertymappingsSourcePlexCreateRequestOpts( + requestParameters: PropertymappingsSourcePlexCreateRequest, + ): Promise { + if (requestParameters["plexSourcePropertyMappingRequest"] == null) { + throw new runtime.RequiredError( + "plexSourcePropertyMappingRequest", + 'Required parameter "plexSourcePropertyMappingRequest" was null or undefined when calling propertymappingsSourcePlexCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/source/plex/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: PlexSourcePropertyMappingRequestToJSON( + requestParameters["plexSourcePropertyMappingRequest"], + ), + }; + } + + /** + * PlexSourcePropertyMapping Viewset + */ + async propertymappingsSourcePlexCreateRaw( + requestParameters: PropertymappingsSourcePlexCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsSourcePlexCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PlexSourcePropertyMappingFromJSON(jsonValue), + ); + } + + /** + * PlexSourcePropertyMapping Viewset + */ + async propertymappingsSourcePlexCreate( + requestParameters: PropertymappingsSourcePlexCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsSourcePlexCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsSourcePlexDestroy without sending the request + */ + async propertymappingsSourcePlexDestroyRequestOpts( + requestParameters: PropertymappingsSourcePlexDestroyRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsSourcePlexDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/source/plex/{pm_uuid}/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * PlexSourcePropertyMapping Viewset + */ + async propertymappingsSourcePlexDestroyRaw( + requestParameters: PropertymappingsSourcePlexDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsSourcePlexDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * PlexSourcePropertyMapping Viewset + */ + async propertymappingsSourcePlexDestroy( + requestParameters: PropertymappingsSourcePlexDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.propertymappingsSourcePlexDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for propertymappingsSourcePlexList without sending the request + */ + async propertymappingsSourcePlexListRequestOpts( + requestParameters: PropertymappingsSourcePlexListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["managed"] != null) { + queryParameters["managed"] = requestParameters["managed"]; + } + + if (requestParameters["managedIsnull"] != null) { + queryParameters["managed__isnull"] = requestParameters["managedIsnull"]; + } + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/source/plex/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * PlexSourcePropertyMapping Viewset + */ + async propertymappingsSourcePlexListRaw( + requestParameters: PropertymappingsSourcePlexListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsSourcePlexListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedPlexSourcePropertyMappingListFromJSON(jsonValue), + ); + } + + /** + * PlexSourcePropertyMapping Viewset + */ + async propertymappingsSourcePlexList( + requestParameters: PropertymappingsSourcePlexListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsSourcePlexListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsSourcePlexPartialUpdate without sending the request + */ + async propertymappingsSourcePlexPartialUpdateRequestOpts( + requestParameters: PropertymappingsSourcePlexPartialUpdateRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsSourcePlexPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/source/plex/{pm_uuid}/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedPlexSourcePropertyMappingRequestToJSON( + requestParameters["patchedPlexSourcePropertyMappingRequest"], + ), + }; + } + + /** + * PlexSourcePropertyMapping Viewset + */ + async propertymappingsSourcePlexPartialUpdateRaw( + requestParameters: PropertymappingsSourcePlexPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsSourcePlexPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PlexSourcePropertyMappingFromJSON(jsonValue), + ); + } + + /** + * PlexSourcePropertyMapping Viewset + */ + async propertymappingsSourcePlexPartialUpdate( + requestParameters: PropertymappingsSourcePlexPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsSourcePlexPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsSourcePlexRetrieve without sending the request + */ + async propertymappingsSourcePlexRetrieveRequestOpts( + requestParameters: PropertymappingsSourcePlexRetrieveRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsSourcePlexRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/source/plex/{pm_uuid}/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * PlexSourcePropertyMapping Viewset + */ + async propertymappingsSourcePlexRetrieveRaw( + requestParameters: PropertymappingsSourcePlexRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsSourcePlexRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PlexSourcePropertyMappingFromJSON(jsonValue), + ); + } + + /** + * PlexSourcePropertyMapping Viewset + */ + async propertymappingsSourcePlexRetrieve( + requestParameters: PropertymappingsSourcePlexRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsSourcePlexRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsSourcePlexUpdate without sending the request + */ + async propertymappingsSourcePlexUpdateRequestOpts( + requestParameters: PropertymappingsSourcePlexUpdateRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsSourcePlexUpdate().', + ); + } + + if (requestParameters["plexSourcePropertyMappingRequest"] == null) { + throw new runtime.RequiredError( + "plexSourcePropertyMappingRequest", + 'Required parameter "plexSourcePropertyMappingRequest" was null or undefined when calling propertymappingsSourcePlexUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/source/plex/{pm_uuid}/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: PlexSourcePropertyMappingRequestToJSON( + requestParameters["plexSourcePropertyMappingRequest"], + ), + }; + } + + /** + * PlexSourcePropertyMapping Viewset + */ + async propertymappingsSourcePlexUpdateRaw( + requestParameters: PropertymappingsSourcePlexUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsSourcePlexUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PlexSourcePropertyMappingFromJSON(jsonValue), + ); + } + + /** + * PlexSourcePropertyMapping Viewset + */ + async propertymappingsSourcePlexUpdate( + requestParameters: PropertymappingsSourcePlexUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsSourcePlexUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsSourcePlexUsedByList without sending the request + */ + async propertymappingsSourcePlexUsedByListRequestOpts( + requestParameters: PropertymappingsSourcePlexUsedByListRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsSourcePlexUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/source/plex/{pm_uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async propertymappingsSourcePlexUsedByListRaw( + requestParameters: PropertymappingsSourcePlexUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.propertymappingsSourcePlexUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async propertymappingsSourcePlexUsedByList( + requestParameters: PropertymappingsSourcePlexUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.propertymappingsSourcePlexUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsSourceSamlCreate without sending the request + */ + async propertymappingsSourceSamlCreateRequestOpts( + requestParameters: PropertymappingsSourceSamlCreateRequest, + ): Promise { + if (requestParameters["sAMLSourcePropertyMappingRequest"] == null) { + throw new runtime.RequiredError( + "sAMLSourcePropertyMappingRequest", + 'Required parameter "sAMLSourcePropertyMappingRequest" was null or undefined when calling propertymappingsSourceSamlCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/source/saml/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: SAMLSourcePropertyMappingRequestToJSON( + requestParameters["sAMLSourcePropertyMappingRequest"], + ), + }; + } + + /** + * SAMLSourcePropertyMapping Viewset + */ + async propertymappingsSourceSamlCreateRaw( + requestParameters: PropertymappingsSourceSamlCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsSourceSamlCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + SAMLSourcePropertyMappingFromJSON(jsonValue), + ); + } + + /** + * SAMLSourcePropertyMapping Viewset + */ + async propertymappingsSourceSamlCreate( + requestParameters: PropertymappingsSourceSamlCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsSourceSamlCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsSourceSamlDestroy without sending the request + */ + async propertymappingsSourceSamlDestroyRequestOpts( + requestParameters: PropertymappingsSourceSamlDestroyRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsSourceSamlDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/source/saml/{pm_uuid}/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * SAMLSourcePropertyMapping Viewset + */ + async propertymappingsSourceSamlDestroyRaw( + requestParameters: PropertymappingsSourceSamlDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsSourceSamlDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * SAMLSourcePropertyMapping Viewset + */ + async propertymappingsSourceSamlDestroy( + requestParameters: PropertymappingsSourceSamlDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.propertymappingsSourceSamlDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for propertymappingsSourceSamlList without sending the request + */ + async propertymappingsSourceSamlListRequestOpts( + requestParameters: PropertymappingsSourceSamlListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["managed"] != null) { + queryParameters["managed"] = requestParameters["managed"]; + } + + if (requestParameters["managedIsnull"] != null) { + queryParameters["managed__isnull"] = requestParameters["managedIsnull"]; + } + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/source/saml/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * SAMLSourcePropertyMapping Viewset + */ + async propertymappingsSourceSamlListRaw( + requestParameters: PropertymappingsSourceSamlListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsSourceSamlListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedSAMLSourcePropertyMappingListFromJSON(jsonValue), + ); + } + + /** + * SAMLSourcePropertyMapping Viewset + */ + async propertymappingsSourceSamlList( + requestParameters: PropertymappingsSourceSamlListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsSourceSamlListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsSourceSamlPartialUpdate without sending the request + */ + async propertymappingsSourceSamlPartialUpdateRequestOpts( + requestParameters: PropertymappingsSourceSamlPartialUpdateRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsSourceSamlPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/source/saml/{pm_uuid}/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedSAMLSourcePropertyMappingRequestToJSON( + requestParameters["patchedSAMLSourcePropertyMappingRequest"], + ), + }; + } + + /** + * SAMLSourcePropertyMapping Viewset + */ + async propertymappingsSourceSamlPartialUpdateRaw( + requestParameters: PropertymappingsSourceSamlPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsSourceSamlPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + SAMLSourcePropertyMappingFromJSON(jsonValue), + ); + } + + /** + * SAMLSourcePropertyMapping Viewset + */ + async propertymappingsSourceSamlPartialUpdate( + requestParameters: PropertymappingsSourceSamlPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsSourceSamlPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsSourceSamlRetrieve without sending the request + */ + async propertymappingsSourceSamlRetrieveRequestOpts( + requestParameters: PropertymappingsSourceSamlRetrieveRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsSourceSamlRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/source/saml/{pm_uuid}/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * SAMLSourcePropertyMapping Viewset + */ + async propertymappingsSourceSamlRetrieveRaw( + requestParameters: PropertymappingsSourceSamlRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsSourceSamlRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + SAMLSourcePropertyMappingFromJSON(jsonValue), + ); + } + + /** + * SAMLSourcePropertyMapping Viewset + */ + async propertymappingsSourceSamlRetrieve( + requestParameters: PropertymappingsSourceSamlRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsSourceSamlRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsSourceSamlUpdate without sending the request + */ + async propertymappingsSourceSamlUpdateRequestOpts( + requestParameters: PropertymappingsSourceSamlUpdateRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsSourceSamlUpdate().', + ); + } + + if (requestParameters["sAMLSourcePropertyMappingRequest"] == null) { + throw new runtime.RequiredError( + "sAMLSourcePropertyMappingRequest", + 'Required parameter "sAMLSourcePropertyMappingRequest" was null or undefined when calling propertymappingsSourceSamlUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/source/saml/{pm_uuid}/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: SAMLSourcePropertyMappingRequestToJSON( + requestParameters["sAMLSourcePropertyMappingRequest"], + ), + }; + } + + /** + * SAMLSourcePropertyMapping Viewset + */ + async propertymappingsSourceSamlUpdateRaw( + requestParameters: PropertymappingsSourceSamlUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsSourceSamlUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + SAMLSourcePropertyMappingFromJSON(jsonValue), + ); + } + + /** + * SAMLSourcePropertyMapping Viewset + */ + async propertymappingsSourceSamlUpdate( + requestParameters: PropertymappingsSourceSamlUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsSourceSamlUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsSourceSamlUsedByList without sending the request + */ + async propertymappingsSourceSamlUsedByListRequestOpts( + requestParameters: PropertymappingsSourceSamlUsedByListRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsSourceSamlUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/source/saml/{pm_uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async propertymappingsSourceSamlUsedByListRaw( + requestParameters: PropertymappingsSourceSamlUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.propertymappingsSourceSamlUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async propertymappingsSourceSamlUsedByList( + requestParameters: PropertymappingsSourceSamlUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.propertymappingsSourceSamlUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsSourceScimCreate without sending the request + */ + async propertymappingsSourceScimCreateRequestOpts( + requestParameters: PropertymappingsSourceScimCreateRequest, + ): Promise { + if (requestParameters["sCIMSourcePropertyMappingRequest"] == null) { + throw new runtime.RequiredError( + "sCIMSourcePropertyMappingRequest", + 'Required parameter "sCIMSourcePropertyMappingRequest" was null or undefined when calling propertymappingsSourceScimCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/source/scim/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: SCIMSourcePropertyMappingRequestToJSON( + requestParameters["sCIMSourcePropertyMappingRequest"], + ), + }; + } + + /** + * SCIMSourcePropertyMapping Viewset + */ + async propertymappingsSourceScimCreateRaw( + requestParameters: PropertymappingsSourceScimCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsSourceScimCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + SCIMSourcePropertyMappingFromJSON(jsonValue), + ); + } + + /** + * SCIMSourcePropertyMapping Viewset + */ + async propertymappingsSourceScimCreate( + requestParameters: PropertymappingsSourceScimCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsSourceScimCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsSourceScimDestroy without sending the request + */ + async propertymappingsSourceScimDestroyRequestOpts( + requestParameters: PropertymappingsSourceScimDestroyRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsSourceScimDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/source/scim/{pm_uuid}/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * SCIMSourcePropertyMapping Viewset + */ + async propertymappingsSourceScimDestroyRaw( + requestParameters: PropertymappingsSourceScimDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsSourceScimDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * SCIMSourcePropertyMapping Viewset + */ + async propertymappingsSourceScimDestroy( + requestParameters: PropertymappingsSourceScimDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.propertymappingsSourceScimDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for propertymappingsSourceScimList without sending the request + */ + async propertymappingsSourceScimListRequestOpts( + requestParameters: PropertymappingsSourceScimListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["managed"] != null) { + queryParameters["managed"] = requestParameters["managed"]; + } + + if (requestParameters["managedIsnull"] != null) { + queryParameters["managed__isnull"] = requestParameters["managedIsnull"]; + } + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/source/scim/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * SCIMSourcePropertyMapping Viewset + */ + async propertymappingsSourceScimListRaw( + requestParameters: PropertymappingsSourceScimListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsSourceScimListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedSCIMSourcePropertyMappingListFromJSON(jsonValue), + ); + } + + /** + * SCIMSourcePropertyMapping Viewset + */ + async propertymappingsSourceScimList( + requestParameters: PropertymappingsSourceScimListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsSourceScimListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsSourceScimPartialUpdate without sending the request + */ + async propertymappingsSourceScimPartialUpdateRequestOpts( + requestParameters: PropertymappingsSourceScimPartialUpdateRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsSourceScimPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/source/scim/{pm_uuid}/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedSCIMSourcePropertyMappingRequestToJSON( + requestParameters["patchedSCIMSourcePropertyMappingRequest"], + ), + }; + } + + /** + * SCIMSourcePropertyMapping Viewset + */ + async propertymappingsSourceScimPartialUpdateRaw( + requestParameters: PropertymappingsSourceScimPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsSourceScimPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + SCIMSourcePropertyMappingFromJSON(jsonValue), + ); + } + + /** + * SCIMSourcePropertyMapping Viewset + */ + async propertymappingsSourceScimPartialUpdate( + requestParameters: PropertymappingsSourceScimPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsSourceScimPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsSourceScimRetrieve without sending the request + */ + async propertymappingsSourceScimRetrieveRequestOpts( + requestParameters: PropertymappingsSourceScimRetrieveRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsSourceScimRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/source/scim/{pm_uuid}/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * SCIMSourcePropertyMapping Viewset + */ + async propertymappingsSourceScimRetrieveRaw( + requestParameters: PropertymappingsSourceScimRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsSourceScimRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + SCIMSourcePropertyMappingFromJSON(jsonValue), + ); + } + + /** + * SCIMSourcePropertyMapping Viewset + */ + async propertymappingsSourceScimRetrieve( + requestParameters: PropertymappingsSourceScimRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsSourceScimRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsSourceScimUpdate without sending the request + */ + async propertymappingsSourceScimUpdateRequestOpts( + requestParameters: PropertymappingsSourceScimUpdateRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsSourceScimUpdate().', + ); + } + + if (requestParameters["sCIMSourcePropertyMappingRequest"] == null) { + throw new runtime.RequiredError( + "sCIMSourcePropertyMappingRequest", + 'Required parameter "sCIMSourcePropertyMappingRequest" was null or undefined when calling propertymappingsSourceScimUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/source/scim/{pm_uuid}/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: SCIMSourcePropertyMappingRequestToJSON( + requestParameters["sCIMSourcePropertyMappingRequest"], + ), + }; + } + + /** + * SCIMSourcePropertyMapping Viewset + */ + async propertymappingsSourceScimUpdateRaw( + requestParameters: PropertymappingsSourceScimUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsSourceScimUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + SCIMSourcePropertyMappingFromJSON(jsonValue), + ); + } + + /** + * SCIMSourcePropertyMapping Viewset + */ + async propertymappingsSourceScimUpdate( + requestParameters: PropertymappingsSourceScimUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsSourceScimUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsSourceScimUsedByList without sending the request + */ + async propertymappingsSourceScimUsedByListRequestOpts( + requestParameters: PropertymappingsSourceScimUsedByListRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsSourceScimUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/source/scim/{pm_uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async propertymappingsSourceScimUsedByListRaw( + requestParameters: PropertymappingsSourceScimUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.propertymappingsSourceScimUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async propertymappingsSourceScimUsedByList( + requestParameters: PropertymappingsSourceScimUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.propertymappingsSourceScimUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsSourceTelegramCreate without sending the request + */ + async propertymappingsSourceTelegramCreateRequestOpts( + requestParameters: PropertymappingsSourceTelegramCreateRequest, + ): Promise { + if (requestParameters["telegramSourcePropertyMappingRequest"] == null) { + throw new runtime.RequiredError( + "telegramSourcePropertyMappingRequest", + 'Required parameter "telegramSourcePropertyMappingRequest" was null or undefined when calling propertymappingsSourceTelegramCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/source/telegram/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: TelegramSourcePropertyMappingRequestToJSON( + requestParameters["telegramSourcePropertyMappingRequest"], + ), + }; + } + + /** + * TelegramSourcePropertyMapping Viewset + */ + async propertymappingsSourceTelegramCreateRaw( + requestParameters: PropertymappingsSourceTelegramCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsSourceTelegramCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + TelegramSourcePropertyMappingFromJSON(jsonValue), + ); + } + + /** + * TelegramSourcePropertyMapping Viewset + */ + async propertymappingsSourceTelegramCreate( + requestParameters: PropertymappingsSourceTelegramCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsSourceTelegramCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsSourceTelegramDestroy without sending the request + */ + async propertymappingsSourceTelegramDestroyRequestOpts( + requestParameters: PropertymappingsSourceTelegramDestroyRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsSourceTelegramDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/source/telegram/{pm_uuid}/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * TelegramSourcePropertyMapping Viewset + */ + async propertymappingsSourceTelegramDestroyRaw( + requestParameters: PropertymappingsSourceTelegramDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsSourceTelegramDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * TelegramSourcePropertyMapping Viewset + */ + async propertymappingsSourceTelegramDestroy( + requestParameters: PropertymappingsSourceTelegramDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.propertymappingsSourceTelegramDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for propertymappingsSourceTelegramList without sending the request + */ + async propertymappingsSourceTelegramListRequestOpts( + requestParameters: PropertymappingsSourceTelegramListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["managed"] != null) { + queryParameters["managed"] = requestParameters["managed"]; + } + + if (requestParameters["managedIsnull"] != null) { + queryParameters["managed__isnull"] = requestParameters["managedIsnull"]; + } + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/source/telegram/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * TelegramSourcePropertyMapping Viewset + */ + async propertymappingsSourceTelegramListRaw( + requestParameters: PropertymappingsSourceTelegramListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsSourceTelegramListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedTelegramSourcePropertyMappingListFromJSON(jsonValue), + ); + } + + /** + * TelegramSourcePropertyMapping Viewset + */ + async propertymappingsSourceTelegramList( + requestParameters: PropertymappingsSourceTelegramListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsSourceTelegramListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsSourceTelegramPartialUpdate without sending the request + */ + async propertymappingsSourceTelegramPartialUpdateRequestOpts( + requestParameters: PropertymappingsSourceTelegramPartialUpdateRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsSourceTelegramPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/source/telegram/{pm_uuid}/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedTelegramSourcePropertyMappingRequestToJSON( + requestParameters["patchedTelegramSourcePropertyMappingRequest"], + ), + }; + } + + /** + * TelegramSourcePropertyMapping Viewset + */ + async propertymappingsSourceTelegramPartialUpdateRaw( + requestParameters: PropertymappingsSourceTelegramPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsSourceTelegramPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + TelegramSourcePropertyMappingFromJSON(jsonValue), + ); + } + + /** + * TelegramSourcePropertyMapping Viewset + */ + async propertymappingsSourceTelegramPartialUpdate( + requestParameters: PropertymappingsSourceTelegramPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsSourceTelegramPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsSourceTelegramRetrieve without sending the request + */ + async propertymappingsSourceTelegramRetrieveRequestOpts( + requestParameters: PropertymappingsSourceTelegramRetrieveRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsSourceTelegramRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/source/telegram/{pm_uuid}/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * TelegramSourcePropertyMapping Viewset + */ + async propertymappingsSourceTelegramRetrieveRaw( + requestParameters: PropertymappingsSourceTelegramRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsSourceTelegramRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + TelegramSourcePropertyMappingFromJSON(jsonValue), + ); + } + + /** + * TelegramSourcePropertyMapping Viewset + */ + async propertymappingsSourceTelegramRetrieve( + requestParameters: PropertymappingsSourceTelegramRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsSourceTelegramRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsSourceTelegramUpdate without sending the request + */ + async propertymappingsSourceTelegramUpdateRequestOpts( + requestParameters: PropertymappingsSourceTelegramUpdateRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsSourceTelegramUpdate().', + ); + } + + if (requestParameters["telegramSourcePropertyMappingRequest"] == null) { + throw new runtime.RequiredError( + "telegramSourcePropertyMappingRequest", + 'Required parameter "telegramSourcePropertyMappingRequest" was null or undefined when calling propertymappingsSourceTelegramUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/source/telegram/{pm_uuid}/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: TelegramSourcePropertyMappingRequestToJSON( + requestParameters["telegramSourcePropertyMappingRequest"], + ), + }; + } + + /** + * TelegramSourcePropertyMapping Viewset + */ + async propertymappingsSourceTelegramUpdateRaw( + requestParameters: PropertymappingsSourceTelegramUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.propertymappingsSourceTelegramUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + TelegramSourcePropertyMappingFromJSON(jsonValue), + ); + } + + /** + * TelegramSourcePropertyMapping Viewset + */ + async propertymappingsSourceTelegramUpdate( + requestParameters: PropertymappingsSourceTelegramUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.propertymappingsSourceTelegramUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for propertymappingsSourceTelegramUsedByList without sending the request + */ + async propertymappingsSourceTelegramUsedByListRequestOpts( + requestParameters: PropertymappingsSourceTelegramUsedByListRequest, + ): Promise { + if (requestParameters["pmUuid"] == null) { + throw new runtime.RequiredError( + "pmUuid", + 'Required parameter "pmUuid" was null or undefined when calling propertymappingsSourceTelegramUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/propertymappings/source/telegram/{pm_uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"pm_uuid"}}`, + encodeURIComponent(String(requestParameters["pmUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async propertymappingsSourceTelegramUsedByListRaw( + requestParameters: PropertymappingsSourceTelegramUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.propertymappingsSourceTelegramUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async propertymappingsSourceTelegramUsedByList( + requestParameters: PropertymappingsSourceTelegramUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.propertymappingsSourceTelegramUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } +} diff --git a/packages/client-ts/src/apis/ProvidersApi.ts b/packages/client-ts/src/apis/ProvidersApi.ts new file mode 100644 index 0000000000..480861dcb1 --- /dev/null +++ b/packages/client-ts/src/apis/ProvidersApi.ts @@ -0,0 +1,9872 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { + ClientTypeEnum, + DigestAlgorithmEnum, + ForceBindingEnum, + GoogleWorkspaceProvider, + GoogleWorkspaceProviderGroup, + GoogleWorkspaceProviderGroupRequest, + GoogleWorkspaceProviderRequest, + GoogleWorkspaceProviderUser, + GoogleWorkspaceProviderUserRequest, + IssuerModeEnum, + LDAPProvider, + LDAPProviderRequest, + MicrosoftEntraProvider, + MicrosoftEntraProviderGroup, + MicrosoftEntraProviderGroupRequest, + MicrosoftEntraProviderRequest, + MicrosoftEntraProviderUser, + MicrosoftEntraProviderUserRequest, + OAuth2Provider, + OAuth2ProviderRequest, + OAuth2ProviderSetupURLs, + PaginatedGoogleWorkspaceProviderGroupList, + PaginatedGoogleWorkspaceProviderList, + PaginatedGoogleWorkspaceProviderUserList, + PaginatedLDAPProviderList, + PaginatedMicrosoftEntraProviderGroupList, + PaginatedMicrosoftEntraProviderList, + PaginatedMicrosoftEntraProviderUserList, + PaginatedOAuth2ProviderList, + PaginatedProviderList, + PaginatedProxyProviderList, + PaginatedRACProviderList, + PaginatedRadiusProviderList, + PaginatedSAMLProviderList, + PaginatedSCIMProviderGroupList, + PaginatedSCIMProviderList, + PaginatedSCIMProviderUserList, + PaginatedSSFProviderList, + PaginatedWSFederationProviderList, + PatchedGoogleWorkspaceProviderRequest, + PatchedLDAPProviderRequest, + PatchedMicrosoftEntraProviderRequest, + PatchedOAuth2ProviderRequest, + PatchedProxyProviderRequest, + PatchedRACProviderRequest, + PatchedRadiusProviderRequest, + PatchedSAMLProviderRequest, + PatchedSCIMProviderRequest, + PatchedSSFProviderRequest, + PatchedWSFederationProviderRequest, + PropertyMappingPreview, + Provider, + ProxyProvider, + ProxyProviderRequest, + RACProvider, + RACProviderRequest, + RadiusProvider, + RadiusProviderRequest, + SAMLBindingsEnum, + SAMLLogoutMethods, + SAMLMetadata, + SAMLNameIDPolicyEnum, + SAMLProvider, + SAMLProviderRequest, + SCIMProvider, + SCIMProviderGroup, + SCIMProviderGroupRequest, + SCIMProviderRequest, + SCIMProviderUser, + SCIMProviderUserRequest, + SignatureAlgorithmEnum, + SSFProvider, + SSFProviderRequest, + SubModeEnum, + SyncObjectRequest, + SyncObjectResult, + SyncStatus, + TypeCreate, + UsedBy, + WSFederationProvider, + WSFederationProviderRequest, +} from "../models/index"; +import { + GoogleWorkspaceProviderFromJSON, + GoogleWorkspaceProviderGroupFromJSON, + GoogleWorkspaceProviderGroupRequestToJSON, + GoogleWorkspaceProviderRequestToJSON, + GoogleWorkspaceProviderUserFromJSON, + GoogleWorkspaceProviderUserRequestToJSON, + LDAPProviderFromJSON, + LDAPProviderRequestToJSON, + MicrosoftEntraProviderFromJSON, + MicrosoftEntraProviderGroupFromJSON, + MicrosoftEntraProviderGroupRequestToJSON, + MicrosoftEntraProviderRequestToJSON, + MicrosoftEntraProviderUserFromJSON, + MicrosoftEntraProviderUserRequestToJSON, + OAuth2ProviderFromJSON, + OAuth2ProviderRequestToJSON, + OAuth2ProviderSetupURLsFromJSON, + PaginatedGoogleWorkspaceProviderGroupListFromJSON, + PaginatedGoogleWorkspaceProviderListFromJSON, + PaginatedGoogleWorkspaceProviderUserListFromJSON, + PaginatedLDAPProviderListFromJSON, + PaginatedMicrosoftEntraProviderGroupListFromJSON, + PaginatedMicrosoftEntraProviderListFromJSON, + PaginatedMicrosoftEntraProviderUserListFromJSON, + PaginatedOAuth2ProviderListFromJSON, + PaginatedProviderListFromJSON, + PaginatedProxyProviderListFromJSON, + PaginatedRACProviderListFromJSON, + PaginatedRadiusProviderListFromJSON, + PaginatedSAMLProviderListFromJSON, + PaginatedSCIMProviderGroupListFromJSON, + PaginatedSCIMProviderListFromJSON, + PaginatedSCIMProviderUserListFromJSON, + PaginatedSSFProviderListFromJSON, + PaginatedWSFederationProviderListFromJSON, + PatchedGoogleWorkspaceProviderRequestToJSON, + PatchedLDAPProviderRequestToJSON, + PatchedMicrosoftEntraProviderRequestToJSON, + PatchedOAuth2ProviderRequestToJSON, + PatchedProxyProviderRequestToJSON, + PatchedRACProviderRequestToJSON, + PatchedRadiusProviderRequestToJSON, + PatchedSAMLProviderRequestToJSON, + PatchedSCIMProviderRequestToJSON, + PatchedSSFProviderRequestToJSON, + PatchedWSFederationProviderRequestToJSON, + PropertyMappingPreviewFromJSON, + ProviderFromJSON, + ProxyProviderFromJSON, + ProxyProviderRequestToJSON, + RACProviderFromJSON, + RACProviderRequestToJSON, + RadiusProviderFromJSON, + RadiusProviderRequestToJSON, + SAMLMetadataFromJSON, + SAMLProviderFromJSON, + SAMLProviderRequestToJSON, + SCIMProviderFromJSON, + SCIMProviderGroupFromJSON, + SCIMProviderGroupRequestToJSON, + SCIMProviderRequestToJSON, + SCIMProviderUserFromJSON, + SCIMProviderUserRequestToJSON, + SSFProviderFromJSON, + SSFProviderRequestToJSON, + SyncObjectRequestToJSON, + SyncObjectResultFromJSON, + SyncStatusFromJSON, + TypeCreateFromJSON, + UsedByFromJSON, + WSFederationProviderFromJSON, + WSFederationProviderRequestToJSON, +} from "../models/index"; +import * as runtime from "../runtime"; + +export interface ProvidersAllDestroyRequest { + id: number; +} + +export interface ProvidersAllListRequest { + applicationIsnull?: boolean; + backchannel?: boolean; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; +} + +export interface ProvidersAllRetrieveRequest { + id: number; +} + +export interface ProvidersAllUsedByListRequest { + id: number; +} + +export interface ProvidersGoogleWorkspaceCreateRequest { + googleWorkspaceProviderRequest: GoogleWorkspaceProviderRequest; +} + +export interface ProvidersGoogleWorkspaceDestroyRequest { + id: number; +} + +export interface ProvidersGoogleWorkspaceGroupsCreateRequest { + googleWorkspaceProviderGroupRequest: GoogleWorkspaceProviderGroupRequest; +} + +export interface ProvidersGoogleWorkspaceGroupsDestroyRequest { + id: string; +} + +export interface ProvidersGoogleWorkspaceGroupsListRequest { + groupGroupUuid?: string; + groupName?: string; + ordering?: string; + page?: number; + pageSize?: number; + providerId?: number; + search?: string; +} + +export interface ProvidersGoogleWorkspaceGroupsRetrieveRequest { + id: string; +} + +export interface ProvidersGoogleWorkspaceGroupsUsedByListRequest { + id: string; +} + +export interface ProvidersGoogleWorkspaceListRequest { + delegatedSubject?: string; + excludeUsersServiceAccount?: boolean; + filterGroup?: string; + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; +} + +export interface ProvidersGoogleWorkspacePartialUpdateRequest { + id: number; + patchedGoogleWorkspaceProviderRequest?: PatchedGoogleWorkspaceProviderRequest; +} + +export interface ProvidersGoogleWorkspaceRetrieveRequest { + id: number; +} + +export interface ProvidersGoogleWorkspaceSyncObjectCreateRequest { + id: number; + syncObjectRequest: SyncObjectRequest; +} + +export interface ProvidersGoogleWorkspaceSyncStatusRetrieveRequest { + id: number; +} + +export interface ProvidersGoogleWorkspaceUpdateRequest { + id: number; + googleWorkspaceProviderRequest: GoogleWorkspaceProviderRequest; +} + +export interface ProvidersGoogleWorkspaceUsedByListRequest { + id: number; +} + +export interface ProvidersGoogleWorkspaceUsersCreateRequest { + googleWorkspaceProviderUserRequest: GoogleWorkspaceProviderUserRequest; +} + +export interface ProvidersGoogleWorkspaceUsersDestroyRequest { + id: string; +} + +export interface ProvidersGoogleWorkspaceUsersListRequest { + ordering?: string; + page?: number; + pageSize?: number; + providerId?: number; + search?: string; + userId?: number; + userUsername?: string; +} + +export interface ProvidersGoogleWorkspaceUsersRetrieveRequest { + id: string; +} + +export interface ProvidersGoogleWorkspaceUsersUsedByListRequest { + id: string; +} + +export interface ProvidersLdapCreateRequest { + lDAPProviderRequest: LDAPProviderRequest; +} + +export interface ProvidersLdapDestroyRequest { + id: number; +} + +export interface ProvidersLdapListRequest { + applicationIsnull?: boolean; + authorizationFlowSlugIexact?: string; + baseDnIexact?: string; + certificateKpUuidIexact?: string; + certificateNameIexact?: string; + gidStartNumberIexact?: number; + nameIexact?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; + tlsServerNameIexact?: string; + uidStartNumberIexact?: number; +} + +export interface ProvidersLdapPartialUpdateRequest { + id: number; + patchedLDAPProviderRequest?: PatchedLDAPProviderRequest; +} + +export interface ProvidersLdapRetrieveRequest { + id: number; +} + +export interface ProvidersLdapUpdateRequest { + id: number; + lDAPProviderRequest: LDAPProviderRequest; +} + +export interface ProvidersLdapUsedByListRequest { + id: number; +} + +export interface ProvidersMicrosoftEntraCreateRequest { + microsoftEntraProviderRequest: MicrosoftEntraProviderRequest; +} + +export interface ProvidersMicrosoftEntraDestroyRequest { + id: number; +} + +export interface ProvidersMicrosoftEntraGroupsCreateRequest { + microsoftEntraProviderGroupRequest: MicrosoftEntraProviderGroupRequest; +} + +export interface ProvidersMicrosoftEntraGroupsDestroyRequest { + id: string; +} + +export interface ProvidersMicrosoftEntraGroupsListRequest { + groupGroupUuid?: string; + groupName?: string; + ordering?: string; + page?: number; + pageSize?: number; + providerId?: number; + search?: string; +} + +export interface ProvidersMicrosoftEntraGroupsRetrieveRequest { + id: string; +} + +export interface ProvidersMicrosoftEntraGroupsUsedByListRequest { + id: string; +} + +export interface ProvidersMicrosoftEntraListRequest { + excludeUsersServiceAccount?: boolean; + filterGroup?: string; + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; +} + +export interface ProvidersMicrosoftEntraPartialUpdateRequest { + id: number; + patchedMicrosoftEntraProviderRequest?: PatchedMicrosoftEntraProviderRequest; +} + +export interface ProvidersMicrosoftEntraRetrieveRequest { + id: number; +} + +export interface ProvidersMicrosoftEntraSyncObjectCreateRequest { + id: number; + syncObjectRequest: SyncObjectRequest; +} + +export interface ProvidersMicrosoftEntraSyncStatusRetrieveRequest { + id: number; +} + +export interface ProvidersMicrosoftEntraUpdateRequest { + id: number; + microsoftEntraProviderRequest: MicrosoftEntraProviderRequest; +} + +export interface ProvidersMicrosoftEntraUsedByListRequest { + id: number; +} + +export interface ProvidersMicrosoftEntraUsersCreateRequest { + microsoftEntraProviderUserRequest: MicrosoftEntraProviderUserRequest; +} + +export interface ProvidersMicrosoftEntraUsersDestroyRequest { + id: string; +} + +export interface ProvidersMicrosoftEntraUsersListRequest { + ordering?: string; + page?: number; + pageSize?: number; + providerId?: number; + search?: string; + userId?: number; + userUsername?: string; +} + +export interface ProvidersMicrosoftEntraUsersRetrieveRequest { + id: string; +} + +export interface ProvidersMicrosoftEntraUsersUsedByListRequest { + id: string; +} + +export interface ProvidersOauth2CreateRequest { + oAuth2ProviderRequest: OAuth2ProviderRequest; +} + +export interface ProvidersOauth2DestroyRequest { + id: number; +} + +export interface ProvidersOauth2ListRequest { + accessCodeValidity?: string; + accessTokenValidity?: string; + application?: string; + authorizationFlow?: string; + clientId?: string; + clientType?: ClientTypeEnum; + includeClaimsInIdToken?: boolean; + issuerMode?: IssuerModeEnum; + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + propertyMappings?: Array; + refreshTokenValidity?: string; + search?: string; + signingKey?: string; + subMode?: SubModeEnum; +} + +export interface ProvidersOauth2PartialUpdateRequest { + id: number; + patchedOAuth2ProviderRequest?: PatchedOAuth2ProviderRequest; +} + +export interface ProvidersOauth2PreviewUserRetrieveRequest { + id: number; + forUser?: number; +} + +export interface ProvidersOauth2RetrieveRequest { + id: number; +} + +export interface ProvidersOauth2SetupUrlsRetrieveRequest { + id: number; +} + +export interface ProvidersOauth2UpdateRequest { + id: number; + oAuth2ProviderRequest: OAuth2ProviderRequest; +} + +export interface ProvidersOauth2UsedByListRequest { + id: number; +} + +export interface ProvidersProxyCreateRequest { + proxyProviderRequest: ProxyProviderRequest; +} + +export interface ProvidersProxyDestroyRequest { + id: number; +} + +export interface ProvidersProxyListRequest { + applicationIsnull?: boolean; + authorizationFlowSlugIexact?: string; + basicAuthEnabledIexact?: boolean; + basicAuthPasswordAttributeIexact?: string; + basicAuthUserAttributeIexact?: string; + certificateKpUuidIexact?: string; + certificateNameIexact?: string; + cookieDomainIexact?: string; + externalHostIexact?: string; + internalHostIexact?: string; + internalHostSslValidationIexact?: boolean; + modeIexact?: string; + nameIexact?: string; + ordering?: string; + page?: number; + pageSize?: number; + propertyMappingsIexact?: Array; + search?: string; + skipPathRegexIexact?: string; +} + +export interface ProvidersProxyPartialUpdateRequest { + id: number; + patchedProxyProviderRequest?: PatchedProxyProviderRequest; +} + +export interface ProvidersProxyRetrieveRequest { + id: number; +} + +export interface ProvidersProxyUpdateRequest { + id: number; + proxyProviderRequest: ProxyProviderRequest; +} + +export interface ProvidersProxyUsedByListRequest { + id: number; +} + +export interface ProvidersRacCreateRequest { + rACProviderRequest: RACProviderRequest; +} + +export interface ProvidersRacDestroyRequest { + id: number; +} + +export interface ProvidersRacListRequest { + applicationIsnull?: boolean; + nameIexact?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; +} + +export interface ProvidersRacPartialUpdateRequest { + id: number; + patchedRACProviderRequest?: PatchedRACProviderRequest; +} + +export interface ProvidersRacRetrieveRequest { + id: number; +} + +export interface ProvidersRacUpdateRequest { + id: number; + rACProviderRequest: RACProviderRequest; +} + +export interface ProvidersRacUsedByListRequest { + id: number; +} + +export interface ProvidersRadiusCreateRequest { + radiusProviderRequest: RadiusProviderRequest; +} + +export interface ProvidersRadiusDestroyRequest { + id: number; +} + +export interface ProvidersRadiusListRequest { + applicationIsnull?: boolean; + authorizationFlowSlugIexact?: string; + clientNetworksIexact?: string; + nameIexact?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; +} + +export interface ProvidersRadiusPartialUpdateRequest { + id: number; + patchedRadiusProviderRequest?: PatchedRadiusProviderRequest; +} + +export interface ProvidersRadiusRetrieveRequest { + id: number; +} + +export interface ProvidersRadiusUpdateRequest { + id: number; + radiusProviderRequest: RadiusProviderRequest; +} + +export interface ProvidersRadiusUsedByListRequest { + id: number; +} + +export interface ProvidersSamlCreateRequest { + sAMLProviderRequest: SAMLProviderRequest; +} + +export interface ProvidersSamlDestroyRequest { + id: number; +} + +export interface ProvidersSamlImportMetadataCreateRequest { + name: string; + authorizationFlow: string; + invalidationFlow: string; + file: Blob; +} + +export interface ProvidersSamlListRequest { + acsUrl?: string; + assertionValidNotBefore?: string; + assertionValidNotOnOrAfter?: string; + audience?: string; + authenticationFlow?: string; + authnContextClassRefMapping?: string; + authorizationFlow?: string; + backchannelApplication?: string; + defaultNameIdPolicy?: SAMLNameIDPolicyEnum; + defaultRelayState?: string; + digestAlgorithm?: DigestAlgorithmEnum; + encryptionKp?: string; + invalidationFlow?: string; + isBackchannel?: boolean; + issuerOverride?: string; + logoutMethod?: SAMLLogoutMethods; + name?: string; + nameIdMapping?: string; + ordering?: string; + page?: number; + pageSize?: number; + propertyMappings?: Array; + search?: string; + sessionValidNotOnOrAfter?: string; + signAssertion?: boolean; + signLogoutRequest?: boolean; + signLogoutResponse?: boolean; + signResponse?: boolean; + signatureAlgorithm?: SignatureAlgorithmEnum; + signingKp?: string; + slsBinding?: SAMLBindingsEnum; + slsUrl?: string; + spBinding?: SAMLBindingsEnum; + verificationKp?: string; +} + +export interface ProvidersSamlMetadataRetrieveRequest { + id: number; + download?: boolean; + forceBinding?: ForceBindingEnum; +} + +export interface ProvidersSamlPartialUpdateRequest { + id: number; + patchedSAMLProviderRequest?: PatchedSAMLProviderRequest; +} + +export interface ProvidersSamlPreviewUserRetrieveRequest { + id: number; + forUser?: number; +} + +export interface ProvidersSamlRetrieveRequest { + id: number; +} + +export interface ProvidersSamlUpdateRequest { + id: number; + sAMLProviderRequest: SAMLProviderRequest; +} + +export interface ProvidersSamlUsedByListRequest { + id: number; +} + +export interface ProvidersScimCreateRequest { + sCIMProviderRequest: SCIMProviderRequest; +} + +export interface ProvidersScimDestroyRequest { + id: number; +} + +export interface ProvidersScimGroupsCreateRequest { + sCIMProviderGroupRequest: SCIMProviderGroupRequest; +} + +export interface ProvidersScimGroupsDestroyRequest { + id: string; +} + +export interface ProvidersScimGroupsListRequest { + groupGroupUuid?: string; + groupName?: string; + ordering?: string; + page?: number; + pageSize?: number; + providerId?: number; + search?: string; +} + +export interface ProvidersScimGroupsRetrieveRequest { + id: string; +} + +export interface ProvidersScimGroupsUsedByListRequest { + id: string; +} + +export interface ProvidersScimListRequest { + excludeUsersServiceAccount?: boolean; + groupFilters?: Array; + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; + url?: string; +} + +export interface ProvidersScimPartialUpdateRequest { + id: number; + patchedSCIMProviderRequest?: PatchedSCIMProviderRequest; +} + +export interface ProvidersScimRetrieveRequest { + id: number; +} + +export interface ProvidersScimSyncObjectCreateRequest { + id: number; + syncObjectRequest: SyncObjectRequest; +} + +export interface ProvidersScimSyncStatusRetrieveRequest { + id: number; +} + +export interface ProvidersScimUpdateRequest { + id: number; + sCIMProviderRequest: SCIMProviderRequest; +} + +export interface ProvidersScimUsedByListRequest { + id: number; +} + +export interface ProvidersScimUsersCreateRequest { + sCIMProviderUserRequest: SCIMProviderUserRequest; +} + +export interface ProvidersScimUsersDestroyRequest { + id: string; +} + +export interface ProvidersScimUsersListRequest { + ordering?: string; + page?: number; + pageSize?: number; + providerId?: number; + search?: string; + userId?: number; + userUsername?: string; +} + +export interface ProvidersScimUsersRetrieveRequest { + id: string; +} + +export interface ProvidersScimUsersUsedByListRequest { + id: string; +} + +export interface ProvidersSsfCreateRequest { + sSFProviderRequest: SSFProviderRequest; +} + +export interface ProvidersSsfDestroyRequest { + id: number; +} + +export interface ProvidersSsfListRequest { + applicationIsnull?: boolean; + nameIexact?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; +} + +export interface ProvidersSsfPartialUpdateRequest { + id: number; + patchedSSFProviderRequest?: PatchedSSFProviderRequest; +} + +export interface ProvidersSsfRetrieveRequest { + id: number; +} + +export interface ProvidersSsfUpdateRequest { + id: number; + sSFProviderRequest: SSFProviderRequest; +} + +export interface ProvidersSsfUsedByListRequest { + id: number; +} + +export interface ProvidersWsfedCreateRequest { + wSFederationProviderRequest: WSFederationProviderRequest; +} + +export interface ProvidersWsfedDestroyRequest { + id: number; +} + +export interface ProvidersWsfedListRequest { + acsUrl?: string; + assertionValidNotBefore?: string; + assertionValidNotOnOrAfter?: string; + audience?: string; + authenticationFlow?: string; + authnContextClassRefMapping?: string; + authorizationFlow?: string; + backchannelApplication?: string; + defaultNameIdPolicy?: SAMLNameIDPolicyEnum; + defaultRelayState?: string; + digestAlgorithm?: DigestAlgorithmEnum; + encryptionKp?: string; + invalidationFlow?: string; + isBackchannel?: boolean; + issuerOverride?: string; + logoutMethod?: SAMLLogoutMethods; + name?: string; + nameIdMapping?: string; + ordering?: string; + page?: number; + pageSize?: number; + propertyMappings?: Array; + search?: string; + sessionValidNotOnOrAfter?: string; + signAssertion?: boolean; + signLogoutRequest?: boolean; + signLogoutResponse?: boolean; + signResponse?: boolean; + signatureAlgorithm?: SignatureAlgorithmEnum; + signingKp?: string; + slsBinding?: SAMLBindingsEnum; + slsUrl?: string; + spBinding?: SAMLBindingsEnum; + verificationKp?: string; +} + +export interface ProvidersWsfedMetadataRetrieveRequest { + id: number; + download?: boolean; + forceBinding?: ForceBindingEnum; +} + +export interface ProvidersWsfedPartialUpdateRequest { + id: number; + patchedWSFederationProviderRequest?: PatchedWSFederationProviderRequest; +} + +export interface ProvidersWsfedPreviewUserRetrieveRequest { + id: number; + forUser?: number; +} + +export interface ProvidersWsfedRetrieveRequest { + id: number; +} + +export interface ProvidersWsfedUpdateRequest { + id: number; + wSFederationProviderRequest: WSFederationProviderRequest; +} + +export interface ProvidersWsfedUsedByListRequest { + id: number; +} + +/** + * + */ +export class ProvidersApi extends runtime.BaseAPI { + /** + * Creates request options for providersAllDestroy without sending the request + */ + async providersAllDestroyRequestOpts( + requestParameters: ProvidersAllDestroyRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersAllDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/all/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Provider Viewset + */ + async providersAllDestroyRaw( + requestParameters: ProvidersAllDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.providersAllDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Provider Viewset + */ + async providersAllDestroy( + requestParameters: ProvidersAllDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.providersAllDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for providersAllList without sending the request + */ + async providersAllListRequestOpts( + requestParameters: ProvidersAllListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["applicationIsnull"] != null) { + queryParameters["application__isnull"] = requestParameters["applicationIsnull"]; + } + + if (requestParameters["backchannel"] != null) { + queryParameters["backchannel"] = requestParameters["backchannel"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/all/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Provider Viewset + */ + async providersAllListRaw( + requestParameters: ProvidersAllListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.providersAllListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedProviderListFromJSON(jsonValue), + ); + } + + /** + * Provider Viewset + */ + async providersAllList( + requestParameters: ProvidersAllListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersAllListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for providersAllRetrieve without sending the request + */ + async providersAllRetrieveRequestOpts( + requestParameters: ProvidersAllRetrieveRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersAllRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/all/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Provider Viewset + */ + async providersAllRetrieveRaw( + requestParameters: ProvidersAllRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.providersAllRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => ProviderFromJSON(jsonValue)); + } + + /** + * Provider Viewset + */ + async providersAllRetrieve( + requestParameters: ProvidersAllRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersAllRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for providersAllTypesList without sending the request + */ + async providersAllTypesListRequestOpts(): Promise { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/all/types/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get all creatable types + */ + async providersAllTypesListRaw( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.providersAllTypesListRequestOpts(); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + jsonValue.map(TypeCreateFromJSON), + ); + } + + /** + * Get all creatable types + */ + async providersAllTypesList( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.providersAllTypesListRaw(initOverrides); + return await response.value(); + } + + /** + * Creates request options for providersAllUsedByList without sending the request + */ + async providersAllUsedByListRequestOpts( + requestParameters: ProvidersAllUsedByListRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersAllUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/all/{id}/used_by/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async providersAllUsedByListRaw( + requestParameters: ProvidersAllUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.providersAllUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async providersAllUsedByList( + requestParameters: ProvidersAllUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.providersAllUsedByListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for providersGoogleWorkspaceCreate without sending the request + */ + async providersGoogleWorkspaceCreateRequestOpts( + requestParameters: ProvidersGoogleWorkspaceCreateRequest, + ): Promise { + if (requestParameters["googleWorkspaceProviderRequest"] == null) { + throw new runtime.RequiredError( + "googleWorkspaceProviderRequest", + 'Required parameter "googleWorkspaceProviderRequest" was null or undefined when calling providersGoogleWorkspaceCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/google_workspace/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: GoogleWorkspaceProviderRequestToJSON( + requestParameters["googleWorkspaceProviderRequest"], + ), + }; + } + + /** + * GoogleWorkspaceProvider Viewset + */ + async providersGoogleWorkspaceCreateRaw( + requestParameters: ProvidersGoogleWorkspaceCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.providersGoogleWorkspaceCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + GoogleWorkspaceProviderFromJSON(jsonValue), + ); + } + + /** + * GoogleWorkspaceProvider Viewset + */ + async providersGoogleWorkspaceCreate( + requestParameters: ProvidersGoogleWorkspaceCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersGoogleWorkspaceCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for providersGoogleWorkspaceDestroy without sending the request + */ + async providersGoogleWorkspaceDestroyRequestOpts( + requestParameters: ProvidersGoogleWorkspaceDestroyRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersGoogleWorkspaceDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/google_workspace/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * GoogleWorkspaceProvider Viewset + */ + async providersGoogleWorkspaceDestroyRaw( + requestParameters: ProvidersGoogleWorkspaceDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.providersGoogleWorkspaceDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * GoogleWorkspaceProvider Viewset + */ + async providersGoogleWorkspaceDestroy( + requestParameters: ProvidersGoogleWorkspaceDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.providersGoogleWorkspaceDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for providersGoogleWorkspaceGroupsCreate without sending the request + */ + async providersGoogleWorkspaceGroupsCreateRequestOpts( + requestParameters: ProvidersGoogleWorkspaceGroupsCreateRequest, + ): Promise { + if (requestParameters["googleWorkspaceProviderGroupRequest"] == null) { + throw new runtime.RequiredError( + "googleWorkspaceProviderGroupRequest", + 'Required parameter "googleWorkspaceProviderGroupRequest" was null or undefined when calling providersGoogleWorkspaceGroupsCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/google_workspace_groups/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: GoogleWorkspaceProviderGroupRequestToJSON( + requestParameters["googleWorkspaceProviderGroupRequest"], + ), + }; + } + + /** + * GoogleWorkspaceProviderGroup Viewset + */ + async providersGoogleWorkspaceGroupsCreateRaw( + requestParameters: ProvidersGoogleWorkspaceGroupsCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.providersGoogleWorkspaceGroupsCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + GoogleWorkspaceProviderGroupFromJSON(jsonValue), + ); + } + + /** + * GoogleWorkspaceProviderGroup Viewset + */ + async providersGoogleWorkspaceGroupsCreate( + requestParameters: ProvidersGoogleWorkspaceGroupsCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersGoogleWorkspaceGroupsCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for providersGoogleWorkspaceGroupsDestroy without sending the request + */ + async providersGoogleWorkspaceGroupsDestroyRequestOpts( + requestParameters: ProvidersGoogleWorkspaceGroupsDestroyRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersGoogleWorkspaceGroupsDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/google_workspace_groups/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * GoogleWorkspaceProviderGroup Viewset + */ + async providersGoogleWorkspaceGroupsDestroyRaw( + requestParameters: ProvidersGoogleWorkspaceGroupsDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.providersGoogleWorkspaceGroupsDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * GoogleWorkspaceProviderGroup Viewset + */ + async providersGoogleWorkspaceGroupsDestroy( + requestParameters: ProvidersGoogleWorkspaceGroupsDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.providersGoogleWorkspaceGroupsDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for providersGoogleWorkspaceGroupsList without sending the request + */ + async providersGoogleWorkspaceGroupsListRequestOpts( + requestParameters: ProvidersGoogleWorkspaceGroupsListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["groupGroupUuid"] != null) { + queryParameters["group__group_uuid"] = requestParameters["groupGroupUuid"]; + } + + if (requestParameters["groupName"] != null) { + queryParameters["group__name"] = requestParameters["groupName"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["providerId"] != null) { + queryParameters["provider__id"] = requestParameters["providerId"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/google_workspace_groups/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * GoogleWorkspaceProviderGroup Viewset + */ + async providersGoogleWorkspaceGroupsListRaw( + requestParameters: ProvidersGoogleWorkspaceGroupsListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.providersGoogleWorkspaceGroupsListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedGoogleWorkspaceProviderGroupListFromJSON(jsonValue), + ); + } + + /** + * GoogleWorkspaceProviderGroup Viewset + */ + async providersGoogleWorkspaceGroupsList( + requestParameters: ProvidersGoogleWorkspaceGroupsListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersGoogleWorkspaceGroupsListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for providersGoogleWorkspaceGroupsRetrieve without sending the request + */ + async providersGoogleWorkspaceGroupsRetrieveRequestOpts( + requestParameters: ProvidersGoogleWorkspaceGroupsRetrieveRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersGoogleWorkspaceGroupsRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/google_workspace_groups/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * GoogleWorkspaceProviderGroup Viewset + */ + async providersGoogleWorkspaceGroupsRetrieveRaw( + requestParameters: ProvidersGoogleWorkspaceGroupsRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.providersGoogleWorkspaceGroupsRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + GoogleWorkspaceProviderGroupFromJSON(jsonValue), + ); + } + + /** + * GoogleWorkspaceProviderGroup Viewset + */ + async providersGoogleWorkspaceGroupsRetrieve( + requestParameters: ProvidersGoogleWorkspaceGroupsRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersGoogleWorkspaceGroupsRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for providersGoogleWorkspaceGroupsUsedByList without sending the request + */ + async providersGoogleWorkspaceGroupsUsedByListRequestOpts( + requestParameters: ProvidersGoogleWorkspaceGroupsUsedByListRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersGoogleWorkspaceGroupsUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/google_workspace_groups/{id}/used_by/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async providersGoogleWorkspaceGroupsUsedByListRaw( + requestParameters: ProvidersGoogleWorkspaceGroupsUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.providersGoogleWorkspaceGroupsUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async providersGoogleWorkspaceGroupsUsedByList( + requestParameters: ProvidersGoogleWorkspaceGroupsUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.providersGoogleWorkspaceGroupsUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for providersGoogleWorkspaceList without sending the request + */ + async providersGoogleWorkspaceListRequestOpts( + requestParameters: ProvidersGoogleWorkspaceListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["delegatedSubject"] != null) { + queryParameters["delegated_subject"] = requestParameters["delegatedSubject"]; + } + + if (requestParameters["excludeUsersServiceAccount"] != null) { + queryParameters["exclude_users_service_account"] = + requestParameters["excludeUsersServiceAccount"]; + } + + if (requestParameters["filterGroup"] != null) { + queryParameters["filter_group"] = requestParameters["filterGroup"]; + } + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/google_workspace/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * GoogleWorkspaceProvider Viewset + */ + async providersGoogleWorkspaceListRaw( + requestParameters: ProvidersGoogleWorkspaceListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.providersGoogleWorkspaceListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedGoogleWorkspaceProviderListFromJSON(jsonValue), + ); + } + + /** + * GoogleWorkspaceProvider Viewset + */ + async providersGoogleWorkspaceList( + requestParameters: ProvidersGoogleWorkspaceListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersGoogleWorkspaceListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for providersGoogleWorkspacePartialUpdate without sending the request + */ + async providersGoogleWorkspacePartialUpdateRequestOpts( + requestParameters: ProvidersGoogleWorkspacePartialUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersGoogleWorkspacePartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/google_workspace/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedGoogleWorkspaceProviderRequestToJSON( + requestParameters["patchedGoogleWorkspaceProviderRequest"], + ), + }; + } + + /** + * GoogleWorkspaceProvider Viewset + */ + async providersGoogleWorkspacePartialUpdateRaw( + requestParameters: ProvidersGoogleWorkspacePartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.providersGoogleWorkspacePartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + GoogleWorkspaceProviderFromJSON(jsonValue), + ); + } + + /** + * GoogleWorkspaceProvider Viewset + */ + async providersGoogleWorkspacePartialUpdate( + requestParameters: ProvidersGoogleWorkspacePartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersGoogleWorkspacePartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for providersGoogleWorkspaceRetrieve without sending the request + */ + async providersGoogleWorkspaceRetrieveRequestOpts( + requestParameters: ProvidersGoogleWorkspaceRetrieveRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersGoogleWorkspaceRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/google_workspace/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * GoogleWorkspaceProvider Viewset + */ + async providersGoogleWorkspaceRetrieveRaw( + requestParameters: ProvidersGoogleWorkspaceRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.providersGoogleWorkspaceRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + GoogleWorkspaceProviderFromJSON(jsonValue), + ); + } + + /** + * GoogleWorkspaceProvider Viewset + */ + async providersGoogleWorkspaceRetrieve( + requestParameters: ProvidersGoogleWorkspaceRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersGoogleWorkspaceRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for providersGoogleWorkspaceSyncObjectCreate without sending the request + */ + async providersGoogleWorkspaceSyncObjectCreateRequestOpts( + requestParameters: ProvidersGoogleWorkspaceSyncObjectCreateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersGoogleWorkspaceSyncObjectCreate().', + ); + } + + if (requestParameters["syncObjectRequest"] == null) { + throw new runtime.RequiredError( + "syncObjectRequest", + 'Required parameter "syncObjectRequest" was null or undefined when calling providersGoogleWorkspaceSyncObjectCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/google_workspace/{id}/sync/object/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: SyncObjectRequestToJSON(requestParameters["syncObjectRequest"]), + }; + } + + /** + * Sync/Re-sync a single user/group object + */ + async providersGoogleWorkspaceSyncObjectCreateRaw( + requestParameters: ProvidersGoogleWorkspaceSyncObjectCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.providersGoogleWorkspaceSyncObjectCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + SyncObjectResultFromJSON(jsonValue), + ); + } + + /** + * Sync/Re-sync a single user/group object + */ + async providersGoogleWorkspaceSyncObjectCreate( + requestParameters: ProvidersGoogleWorkspaceSyncObjectCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersGoogleWorkspaceSyncObjectCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for providersGoogleWorkspaceSyncStatusRetrieve without sending the request + */ + async providersGoogleWorkspaceSyncStatusRetrieveRequestOpts( + requestParameters: ProvidersGoogleWorkspaceSyncStatusRetrieveRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersGoogleWorkspaceSyncStatusRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/google_workspace/{id}/sync/status/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get provider\'s sync status + */ + async providersGoogleWorkspaceSyncStatusRetrieveRaw( + requestParameters: ProvidersGoogleWorkspaceSyncStatusRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.providersGoogleWorkspaceSyncStatusRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => SyncStatusFromJSON(jsonValue)); + } + + /** + * Get provider\'s sync status + */ + async providersGoogleWorkspaceSyncStatusRetrieve( + requestParameters: ProvidersGoogleWorkspaceSyncStatusRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersGoogleWorkspaceSyncStatusRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for providersGoogleWorkspaceUpdate without sending the request + */ + async providersGoogleWorkspaceUpdateRequestOpts( + requestParameters: ProvidersGoogleWorkspaceUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersGoogleWorkspaceUpdate().', + ); + } + + if (requestParameters["googleWorkspaceProviderRequest"] == null) { + throw new runtime.RequiredError( + "googleWorkspaceProviderRequest", + 'Required parameter "googleWorkspaceProviderRequest" was null or undefined when calling providersGoogleWorkspaceUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/google_workspace/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: GoogleWorkspaceProviderRequestToJSON( + requestParameters["googleWorkspaceProviderRequest"], + ), + }; + } + + /** + * GoogleWorkspaceProvider Viewset + */ + async providersGoogleWorkspaceUpdateRaw( + requestParameters: ProvidersGoogleWorkspaceUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.providersGoogleWorkspaceUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + GoogleWorkspaceProviderFromJSON(jsonValue), + ); + } + + /** + * GoogleWorkspaceProvider Viewset + */ + async providersGoogleWorkspaceUpdate( + requestParameters: ProvidersGoogleWorkspaceUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersGoogleWorkspaceUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for providersGoogleWorkspaceUsedByList without sending the request + */ + async providersGoogleWorkspaceUsedByListRequestOpts( + requestParameters: ProvidersGoogleWorkspaceUsedByListRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersGoogleWorkspaceUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/google_workspace/{id}/used_by/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async providersGoogleWorkspaceUsedByListRaw( + requestParameters: ProvidersGoogleWorkspaceUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.providersGoogleWorkspaceUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async providersGoogleWorkspaceUsedByList( + requestParameters: ProvidersGoogleWorkspaceUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.providersGoogleWorkspaceUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for providersGoogleWorkspaceUsersCreate without sending the request + */ + async providersGoogleWorkspaceUsersCreateRequestOpts( + requestParameters: ProvidersGoogleWorkspaceUsersCreateRequest, + ): Promise { + if (requestParameters["googleWorkspaceProviderUserRequest"] == null) { + throw new runtime.RequiredError( + "googleWorkspaceProviderUserRequest", + 'Required parameter "googleWorkspaceProviderUserRequest" was null or undefined when calling providersGoogleWorkspaceUsersCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/google_workspace_users/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: GoogleWorkspaceProviderUserRequestToJSON( + requestParameters["googleWorkspaceProviderUserRequest"], + ), + }; + } + + /** + * GoogleWorkspaceProviderUser Viewset + */ + async providersGoogleWorkspaceUsersCreateRaw( + requestParameters: ProvidersGoogleWorkspaceUsersCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.providersGoogleWorkspaceUsersCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + GoogleWorkspaceProviderUserFromJSON(jsonValue), + ); + } + + /** + * GoogleWorkspaceProviderUser Viewset + */ + async providersGoogleWorkspaceUsersCreate( + requestParameters: ProvidersGoogleWorkspaceUsersCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersGoogleWorkspaceUsersCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for providersGoogleWorkspaceUsersDestroy without sending the request + */ + async providersGoogleWorkspaceUsersDestroyRequestOpts( + requestParameters: ProvidersGoogleWorkspaceUsersDestroyRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersGoogleWorkspaceUsersDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/google_workspace_users/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * GoogleWorkspaceProviderUser Viewset + */ + async providersGoogleWorkspaceUsersDestroyRaw( + requestParameters: ProvidersGoogleWorkspaceUsersDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.providersGoogleWorkspaceUsersDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * GoogleWorkspaceProviderUser Viewset + */ + async providersGoogleWorkspaceUsersDestroy( + requestParameters: ProvidersGoogleWorkspaceUsersDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.providersGoogleWorkspaceUsersDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for providersGoogleWorkspaceUsersList without sending the request + */ + async providersGoogleWorkspaceUsersListRequestOpts( + requestParameters: ProvidersGoogleWorkspaceUsersListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["providerId"] != null) { + queryParameters["provider__id"] = requestParameters["providerId"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["userId"] != null) { + queryParameters["user__id"] = requestParameters["userId"]; + } + + if (requestParameters["userUsername"] != null) { + queryParameters["user__username"] = requestParameters["userUsername"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/google_workspace_users/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * GoogleWorkspaceProviderUser Viewset + */ + async providersGoogleWorkspaceUsersListRaw( + requestParameters: ProvidersGoogleWorkspaceUsersListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.providersGoogleWorkspaceUsersListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedGoogleWorkspaceProviderUserListFromJSON(jsonValue), + ); + } + + /** + * GoogleWorkspaceProviderUser Viewset + */ + async providersGoogleWorkspaceUsersList( + requestParameters: ProvidersGoogleWorkspaceUsersListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersGoogleWorkspaceUsersListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for providersGoogleWorkspaceUsersRetrieve without sending the request + */ + async providersGoogleWorkspaceUsersRetrieveRequestOpts( + requestParameters: ProvidersGoogleWorkspaceUsersRetrieveRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersGoogleWorkspaceUsersRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/google_workspace_users/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * GoogleWorkspaceProviderUser Viewset + */ + async providersGoogleWorkspaceUsersRetrieveRaw( + requestParameters: ProvidersGoogleWorkspaceUsersRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.providersGoogleWorkspaceUsersRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + GoogleWorkspaceProviderUserFromJSON(jsonValue), + ); + } + + /** + * GoogleWorkspaceProviderUser Viewset + */ + async providersGoogleWorkspaceUsersRetrieve( + requestParameters: ProvidersGoogleWorkspaceUsersRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersGoogleWorkspaceUsersRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for providersGoogleWorkspaceUsersUsedByList without sending the request + */ + async providersGoogleWorkspaceUsersUsedByListRequestOpts( + requestParameters: ProvidersGoogleWorkspaceUsersUsedByListRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersGoogleWorkspaceUsersUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/google_workspace_users/{id}/used_by/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async providersGoogleWorkspaceUsersUsedByListRaw( + requestParameters: ProvidersGoogleWorkspaceUsersUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.providersGoogleWorkspaceUsersUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async providersGoogleWorkspaceUsersUsedByList( + requestParameters: ProvidersGoogleWorkspaceUsersUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.providersGoogleWorkspaceUsersUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for providersLdapCreate without sending the request + */ + async providersLdapCreateRequestOpts( + requestParameters: ProvidersLdapCreateRequest, + ): Promise { + if (requestParameters["lDAPProviderRequest"] == null) { + throw new runtime.RequiredError( + "lDAPProviderRequest", + 'Required parameter "lDAPProviderRequest" was null or undefined when calling providersLdapCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/ldap/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: LDAPProviderRequestToJSON(requestParameters["lDAPProviderRequest"]), + }; + } + + /** + * LDAPProvider Viewset + */ + async providersLdapCreateRaw( + requestParameters: ProvidersLdapCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.providersLdapCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + LDAPProviderFromJSON(jsonValue), + ); + } + + /** + * LDAPProvider Viewset + */ + async providersLdapCreate( + requestParameters: ProvidersLdapCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersLdapCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for providersLdapDestroy without sending the request + */ + async providersLdapDestroyRequestOpts( + requestParameters: ProvidersLdapDestroyRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersLdapDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/ldap/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * LDAPProvider Viewset + */ + async providersLdapDestroyRaw( + requestParameters: ProvidersLdapDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.providersLdapDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * LDAPProvider Viewset + */ + async providersLdapDestroy( + requestParameters: ProvidersLdapDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.providersLdapDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for providersLdapList without sending the request + */ + async providersLdapListRequestOpts( + requestParameters: ProvidersLdapListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["applicationIsnull"] != null) { + queryParameters["application__isnull"] = requestParameters["applicationIsnull"]; + } + + if (requestParameters["authorizationFlowSlugIexact"] != null) { + queryParameters["authorization_flow__slug__iexact"] = + requestParameters["authorizationFlowSlugIexact"]; + } + + if (requestParameters["baseDnIexact"] != null) { + queryParameters["base_dn__iexact"] = requestParameters["baseDnIexact"]; + } + + if (requestParameters["certificateKpUuidIexact"] != null) { + queryParameters["certificate__kp_uuid__iexact"] = + requestParameters["certificateKpUuidIexact"]; + } + + if (requestParameters["certificateNameIexact"] != null) { + queryParameters["certificate__name__iexact"] = + requestParameters["certificateNameIexact"]; + } + + if (requestParameters["gidStartNumberIexact"] != null) { + queryParameters["gid_start_number__iexact"] = requestParameters["gidStartNumberIexact"]; + } + + if (requestParameters["nameIexact"] != null) { + queryParameters["name__iexact"] = requestParameters["nameIexact"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["tlsServerNameIexact"] != null) { + queryParameters["tls_server_name__iexact"] = requestParameters["tlsServerNameIexact"]; + } + + if (requestParameters["uidStartNumberIexact"] != null) { + queryParameters["uid_start_number__iexact"] = requestParameters["uidStartNumberIexact"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/ldap/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * LDAPProvider Viewset + */ + async providersLdapListRaw( + requestParameters: ProvidersLdapListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.providersLdapListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedLDAPProviderListFromJSON(jsonValue), + ); + } + + /** + * LDAPProvider Viewset + */ + async providersLdapList( + requestParameters: ProvidersLdapListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersLdapListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for providersLdapPartialUpdate without sending the request + */ + async providersLdapPartialUpdateRequestOpts( + requestParameters: ProvidersLdapPartialUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersLdapPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/ldap/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedLDAPProviderRequestToJSON(requestParameters["patchedLDAPProviderRequest"]), + }; + } + + /** + * LDAPProvider Viewset + */ + async providersLdapPartialUpdateRaw( + requestParameters: ProvidersLdapPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.providersLdapPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + LDAPProviderFromJSON(jsonValue), + ); + } + + /** + * LDAPProvider Viewset + */ + async providersLdapPartialUpdate( + requestParameters: ProvidersLdapPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersLdapPartialUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for providersLdapRetrieve without sending the request + */ + async providersLdapRetrieveRequestOpts( + requestParameters: ProvidersLdapRetrieveRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersLdapRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/ldap/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * LDAPProvider Viewset + */ + async providersLdapRetrieveRaw( + requestParameters: ProvidersLdapRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.providersLdapRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + LDAPProviderFromJSON(jsonValue), + ); + } + + /** + * LDAPProvider Viewset + */ + async providersLdapRetrieve( + requestParameters: ProvidersLdapRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersLdapRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for providersLdapUpdate without sending the request + */ + async providersLdapUpdateRequestOpts( + requestParameters: ProvidersLdapUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersLdapUpdate().', + ); + } + + if (requestParameters["lDAPProviderRequest"] == null) { + throw new runtime.RequiredError( + "lDAPProviderRequest", + 'Required parameter "lDAPProviderRequest" was null or undefined when calling providersLdapUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/ldap/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: LDAPProviderRequestToJSON(requestParameters["lDAPProviderRequest"]), + }; + } + + /** + * LDAPProvider Viewset + */ + async providersLdapUpdateRaw( + requestParameters: ProvidersLdapUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.providersLdapUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + LDAPProviderFromJSON(jsonValue), + ); + } + + /** + * LDAPProvider Viewset + */ + async providersLdapUpdate( + requestParameters: ProvidersLdapUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersLdapUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for providersLdapUsedByList without sending the request + */ + async providersLdapUsedByListRequestOpts( + requestParameters: ProvidersLdapUsedByListRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersLdapUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/ldap/{id}/used_by/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async providersLdapUsedByListRaw( + requestParameters: ProvidersLdapUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.providersLdapUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async providersLdapUsedByList( + requestParameters: ProvidersLdapUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.providersLdapUsedByListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for providersMicrosoftEntraCreate without sending the request + */ + async providersMicrosoftEntraCreateRequestOpts( + requestParameters: ProvidersMicrosoftEntraCreateRequest, + ): Promise { + if (requestParameters["microsoftEntraProviderRequest"] == null) { + throw new runtime.RequiredError( + "microsoftEntraProviderRequest", + 'Required parameter "microsoftEntraProviderRequest" was null or undefined when calling providersMicrosoftEntraCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/microsoft_entra/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: MicrosoftEntraProviderRequestToJSON( + requestParameters["microsoftEntraProviderRequest"], + ), + }; + } + + /** + * MicrosoftEntraProvider Viewset + */ + async providersMicrosoftEntraCreateRaw( + requestParameters: ProvidersMicrosoftEntraCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.providersMicrosoftEntraCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + MicrosoftEntraProviderFromJSON(jsonValue), + ); + } + + /** + * MicrosoftEntraProvider Viewset + */ + async providersMicrosoftEntraCreate( + requestParameters: ProvidersMicrosoftEntraCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersMicrosoftEntraCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for providersMicrosoftEntraDestroy without sending the request + */ + async providersMicrosoftEntraDestroyRequestOpts( + requestParameters: ProvidersMicrosoftEntraDestroyRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersMicrosoftEntraDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/microsoft_entra/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * MicrosoftEntraProvider Viewset + */ + async providersMicrosoftEntraDestroyRaw( + requestParameters: ProvidersMicrosoftEntraDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.providersMicrosoftEntraDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * MicrosoftEntraProvider Viewset + */ + async providersMicrosoftEntraDestroy( + requestParameters: ProvidersMicrosoftEntraDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.providersMicrosoftEntraDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for providersMicrosoftEntraGroupsCreate without sending the request + */ + async providersMicrosoftEntraGroupsCreateRequestOpts( + requestParameters: ProvidersMicrosoftEntraGroupsCreateRequest, + ): Promise { + if (requestParameters["microsoftEntraProviderGroupRequest"] == null) { + throw new runtime.RequiredError( + "microsoftEntraProviderGroupRequest", + 'Required parameter "microsoftEntraProviderGroupRequest" was null or undefined when calling providersMicrosoftEntraGroupsCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/microsoft_entra_groups/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: MicrosoftEntraProviderGroupRequestToJSON( + requestParameters["microsoftEntraProviderGroupRequest"], + ), + }; + } + + /** + * MicrosoftEntraProviderGroup Viewset + */ + async providersMicrosoftEntraGroupsCreateRaw( + requestParameters: ProvidersMicrosoftEntraGroupsCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.providersMicrosoftEntraGroupsCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + MicrosoftEntraProviderGroupFromJSON(jsonValue), + ); + } + + /** + * MicrosoftEntraProviderGroup Viewset + */ + async providersMicrosoftEntraGroupsCreate( + requestParameters: ProvidersMicrosoftEntraGroupsCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersMicrosoftEntraGroupsCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for providersMicrosoftEntraGroupsDestroy without sending the request + */ + async providersMicrosoftEntraGroupsDestroyRequestOpts( + requestParameters: ProvidersMicrosoftEntraGroupsDestroyRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersMicrosoftEntraGroupsDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/microsoft_entra_groups/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * MicrosoftEntraProviderGroup Viewset + */ + async providersMicrosoftEntraGroupsDestroyRaw( + requestParameters: ProvidersMicrosoftEntraGroupsDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.providersMicrosoftEntraGroupsDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * MicrosoftEntraProviderGroup Viewset + */ + async providersMicrosoftEntraGroupsDestroy( + requestParameters: ProvidersMicrosoftEntraGroupsDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.providersMicrosoftEntraGroupsDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for providersMicrosoftEntraGroupsList without sending the request + */ + async providersMicrosoftEntraGroupsListRequestOpts( + requestParameters: ProvidersMicrosoftEntraGroupsListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["groupGroupUuid"] != null) { + queryParameters["group__group_uuid"] = requestParameters["groupGroupUuid"]; + } + + if (requestParameters["groupName"] != null) { + queryParameters["group__name"] = requestParameters["groupName"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["providerId"] != null) { + queryParameters["provider__id"] = requestParameters["providerId"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/microsoft_entra_groups/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * MicrosoftEntraProviderGroup Viewset + */ + async providersMicrosoftEntraGroupsListRaw( + requestParameters: ProvidersMicrosoftEntraGroupsListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.providersMicrosoftEntraGroupsListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedMicrosoftEntraProviderGroupListFromJSON(jsonValue), + ); + } + + /** + * MicrosoftEntraProviderGroup Viewset + */ + async providersMicrosoftEntraGroupsList( + requestParameters: ProvidersMicrosoftEntraGroupsListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersMicrosoftEntraGroupsListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for providersMicrosoftEntraGroupsRetrieve without sending the request + */ + async providersMicrosoftEntraGroupsRetrieveRequestOpts( + requestParameters: ProvidersMicrosoftEntraGroupsRetrieveRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersMicrosoftEntraGroupsRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/microsoft_entra_groups/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * MicrosoftEntraProviderGroup Viewset + */ + async providersMicrosoftEntraGroupsRetrieveRaw( + requestParameters: ProvidersMicrosoftEntraGroupsRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.providersMicrosoftEntraGroupsRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + MicrosoftEntraProviderGroupFromJSON(jsonValue), + ); + } + + /** + * MicrosoftEntraProviderGroup Viewset + */ + async providersMicrosoftEntraGroupsRetrieve( + requestParameters: ProvidersMicrosoftEntraGroupsRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersMicrosoftEntraGroupsRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for providersMicrosoftEntraGroupsUsedByList without sending the request + */ + async providersMicrosoftEntraGroupsUsedByListRequestOpts( + requestParameters: ProvidersMicrosoftEntraGroupsUsedByListRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersMicrosoftEntraGroupsUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/microsoft_entra_groups/{id}/used_by/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async providersMicrosoftEntraGroupsUsedByListRaw( + requestParameters: ProvidersMicrosoftEntraGroupsUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.providersMicrosoftEntraGroupsUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async providersMicrosoftEntraGroupsUsedByList( + requestParameters: ProvidersMicrosoftEntraGroupsUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.providersMicrosoftEntraGroupsUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for providersMicrosoftEntraList without sending the request + */ + async providersMicrosoftEntraListRequestOpts( + requestParameters: ProvidersMicrosoftEntraListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["excludeUsersServiceAccount"] != null) { + queryParameters["exclude_users_service_account"] = + requestParameters["excludeUsersServiceAccount"]; + } + + if (requestParameters["filterGroup"] != null) { + queryParameters["filter_group"] = requestParameters["filterGroup"]; + } + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/microsoft_entra/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * MicrosoftEntraProvider Viewset + */ + async providersMicrosoftEntraListRaw( + requestParameters: ProvidersMicrosoftEntraListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.providersMicrosoftEntraListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedMicrosoftEntraProviderListFromJSON(jsonValue), + ); + } + + /** + * MicrosoftEntraProvider Viewset + */ + async providersMicrosoftEntraList( + requestParameters: ProvidersMicrosoftEntraListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersMicrosoftEntraListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for providersMicrosoftEntraPartialUpdate without sending the request + */ + async providersMicrosoftEntraPartialUpdateRequestOpts( + requestParameters: ProvidersMicrosoftEntraPartialUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersMicrosoftEntraPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/microsoft_entra/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedMicrosoftEntraProviderRequestToJSON( + requestParameters["patchedMicrosoftEntraProviderRequest"], + ), + }; + } + + /** + * MicrosoftEntraProvider Viewset + */ + async providersMicrosoftEntraPartialUpdateRaw( + requestParameters: ProvidersMicrosoftEntraPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.providersMicrosoftEntraPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + MicrosoftEntraProviderFromJSON(jsonValue), + ); + } + + /** + * MicrosoftEntraProvider Viewset + */ + async providersMicrosoftEntraPartialUpdate( + requestParameters: ProvidersMicrosoftEntraPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersMicrosoftEntraPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for providersMicrosoftEntraRetrieve without sending the request + */ + async providersMicrosoftEntraRetrieveRequestOpts( + requestParameters: ProvidersMicrosoftEntraRetrieveRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersMicrosoftEntraRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/microsoft_entra/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * MicrosoftEntraProvider Viewset + */ + async providersMicrosoftEntraRetrieveRaw( + requestParameters: ProvidersMicrosoftEntraRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.providersMicrosoftEntraRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + MicrosoftEntraProviderFromJSON(jsonValue), + ); + } + + /** + * MicrosoftEntraProvider Viewset + */ + async providersMicrosoftEntraRetrieve( + requestParameters: ProvidersMicrosoftEntraRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersMicrosoftEntraRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for providersMicrosoftEntraSyncObjectCreate without sending the request + */ + async providersMicrosoftEntraSyncObjectCreateRequestOpts( + requestParameters: ProvidersMicrosoftEntraSyncObjectCreateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersMicrosoftEntraSyncObjectCreate().', + ); + } + + if (requestParameters["syncObjectRequest"] == null) { + throw new runtime.RequiredError( + "syncObjectRequest", + 'Required parameter "syncObjectRequest" was null or undefined when calling providersMicrosoftEntraSyncObjectCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/microsoft_entra/{id}/sync/object/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: SyncObjectRequestToJSON(requestParameters["syncObjectRequest"]), + }; + } + + /** + * Sync/Re-sync a single user/group object + */ + async providersMicrosoftEntraSyncObjectCreateRaw( + requestParameters: ProvidersMicrosoftEntraSyncObjectCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.providersMicrosoftEntraSyncObjectCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + SyncObjectResultFromJSON(jsonValue), + ); + } + + /** + * Sync/Re-sync a single user/group object + */ + async providersMicrosoftEntraSyncObjectCreate( + requestParameters: ProvidersMicrosoftEntraSyncObjectCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersMicrosoftEntraSyncObjectCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for providersMicrosoftEntraSyncStatusRetrieve without sending the request + */ + async providersMicrosoftEntraSyncStatusRetrieveRequestOpts( + requestParameters: ProvidersMicrosoftEntraSyncStatusRetrieveRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersMicrosoftEntraSyncStatusRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/microsoft_entra/{id}/sync/status/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get provider\'s sync status + */ + async providersMicrosoftEntraSyncStatusRetrieveRaw( + requestParameters: ProvidersMicrosoftEntraSyncStatusRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.providersMicrosoftEntraSyncStatusRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => SyncStatusFromJSON(jsonValue)); + } + + /** + * Get provider\'s sync status + */ + async providersMicrosoftEntraSyncStatusRetrieve( + requestParameters: ProvidersMicrosoftEntraSyncStatusRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersMicrosoftEntraSyncStatusRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for providersMicrosoftEntraUpdate without sending the request + */ + async providersMicrosoftEntraUpdateRequestOpts( + requestParameters: ProvidersMicrosoftEntraUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersMicrosoftEntraUpdate().', + ); + } + + if (requestParameters["microsoftEntraProviderRequest"] == null) { + throw new runtime.RequiredError( + "microsoftEntraProviderRequest", + 'Required parameter "microsoftEntraProviderRequest" was null or undefined when calling providersMicrosoftEntraUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/microsoft_entra/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: MicrosoftEntraProviderRequestToJSON( + requestParameters["microsoftEntraProviderRequest"], + ), + }; + } + + /** + * MicrosoftEntraProvider Viewset + */ + async providersMicrosoftEntraUpdateRaw( + requestParameters: ProvidersMicrosoftEntraUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.providersMicrosoftEntraUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + MicrosoftEntraProviderFromJSON(jsonValue), + ); + } + + /** + * MicrosoftEntraProvider Viewset + */ + async providersMicrosoftEntraUpdate( + requestParameters: ProvidersMicrosoftEntraUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersMicrosoftEntraUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for providersMicrosoftEntraUsedByList without sending the request + */ + async providersMicrosoftEntraUsedByListRequestOpts( + requestParameters: ProvidersMicrosoftEntraUsedByListRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersMicrosoftEntraUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/microsoft_entra/{id}/used_by/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async providersMicrosoftEntraUsedByListRaw( + requestParameters: ProvidersMicrosoftEntraUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.providersMicrosoftEntraUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async providersMicrosoftEntraUsedByList( + requestParameters: ProvidersMicrosoftEntraUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.providersMicrosoftEntraUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for providersMicrosoftEntraUsersCreate without sending the request + */ + async providersMicrosoftEntraUsersCreateRequestOpts( + requestParameters: ProvidersMicrosoftEntraUsersCreateRequest, + ): Promise { + if (requestParameters["microsoftEntraProviderUserRequest"] == null) { + throw new runtime.RequiredError( + "microsoftEntraProviderUserRequest", + 'Required parameter "microsoftEntraProviderUserRequest" was null or undefined when calling providersMicrosoftEntraUsersCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/microsoft_entra_users/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: MicrosoftEntraProviderUserRequestToJSON( + requestParameters["microsoftEntraProviderUserRequest"], + ), + }; + } + + /** + * MicrosoftEntraProviderUser Viewset + */ + async providersMicrosoftEntraUsersCreateRaw( + requestParameters: ProvidersMicrosoftEntraUsersCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.providersMicrosoftEntraUsersCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + MicrosoftEntraProviderUserFromJSON(jsonValue), + ); + } + + /** + * MicrosoftEntraProviderUser Viewset + */ + async providersMicrosoftEntraUsersCreate( + requestParameters: ProvidersMicrosoftEntraUsersCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersMicrosoftEntraUsersCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for providersMicrosoftEntraUsersDestroy without sending the request + */ + async providersMicrosoftEntraUsersDestroyRequestOpts( + requestParameters: ProvidersMicrosoftEntraUsersDestroyRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersMicrosoftEntraUsersDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/microsoft_entra_users/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * MicrosoftEntraProviderUser Viewset + */ + async providersMicrosoftEntraUsersDestroyRaw( + requestParameters: ProvidersMicrosoftEntraUsersDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.providersMicrosoftEntraUsersDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * MicrosoftEntraProviderUser Viewset + */ + async providersMicrosoftEntraUsersDestroy( + requestParameters: ProvidersMicrosoftEntraUsersDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.providersMicrosoftEntraUsersDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for providersMicrosoftEntraUsersList without sending the request + */ + async providersMicrosoftEntraUsersListRequestOpts( + requestParameters: ProvidersMicrosoftEntraUsersListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["providerId"] != null) { + queryParameters["provider__id"] = requestParameters["providerId"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["userId"] != null) { + queryParameters["user__id"] = requestParameters["userId"]; + } + + if (requestParameters["userUsername"] != null) { + queryParameters["user__username"] = requestParameters["userUsername"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/microsoft_entra_users/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * MicrosoftEntraProviderUser Viewset + */ + async providersMicrosoftEntraUsersListRaw( + requestParameters: ProvidersMicrosoftEntraUsersListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.providersMicrosoftEntraUsersListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedMicrosoftEntraProviderUserListFromJSON(jsonValue), + ); + } + + /** + * MicrosoftEntraProviderUser Viewset + */ + async providersMicrosoftEntraUsersList( + requestParameters: ProvidersMicrosoftEntraUsersListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersMicrosoftEntraUsersListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for providersMicrosoftEntraUsersRetrieve without sending the request + */ + async providersMicrosoftEntraUsersRetrieveRequestOpts( + requestParameters: ProvidersMicrosoftEntraUsersRetrieveRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersMicrosoftEntraUsersRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/microsoft_entra_users/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * MicrosoftEntraProviderUser Viewset + */ + async providersMicrosoftEntraUsersRetrieveRaw( + requestParameters: ProvidersMicrosoftEntraUsersRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.providersMicrosoftEntraUsersRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + MicrosoftEntraProviderUserFromJSON(jsonValue), + ); + } + + /** + * MicrosoftEntraProviderUser Viewset + */ + async providersMicrosoftEntraUsersRetrieve( + requestParameters: ProvidersMicrosoftEntraUsersRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersMicrosoftEntraUsersRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for providersMicrosoftEntraUsersUsedByList without sending the request + */ + async providersMicrosoftEntraUsersUsedByListRequestOpts( + requestParameters: ProvidersMicrosoftEntraUsersUsedByListRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersMicrosoftEntraUsersUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/microsoft_entra_users/{id}/used_by/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async providersMicrosoftEntraUsersUsedByListRaw( + requestParameters: ProvidersMicrosoftEntraUsersUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.providersMicrosoftEntraUsersUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async providersMicrosoftEntraUsersUsedByList( + requestParameters: ProvidersMicrosoftEntraUsersUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.providersMicrosoftEntraUsersUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for providersOauth2Create without sending the request + */ + async providersOauth2CreateRequestOpts( + requestParameters: ProvidersOauth2CreateRequest, + ): Promise { + if (requestParameters["oAuth2ProviderRequest"] == null) { + throw new runtime.RequiredError( + "oAuth2ProviderRequest", + 'Required parameter "oAuth2ProviderRequest" was null or undefined when calling providersOauth2Create().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/oauth2/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: OAuth2ProviderRequestToJSON(requestParameters["oAuth2ProviderRequest"]), + }; + } + + /** + * OAuth2Provider Viewset + */ + async providersOauth2CreateRaw( + requestParameters: ProvidersOauth2CreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.providersOauth2CreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + OAuth2ProviderFromJSON(jsonValue), + ); + } + + /** + * OAuth2Provider Viewset + */ + async providersOauth2Create( + requestParameters: ProvidersOauth2CreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersOauth2CreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for providersOauth2Destroy without sending the request + */ + async providersOauth2DestroyRequestOpts( + requestParameters: ProvidersOauth2DestroyRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersOauth2Destroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/oauth2/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * OAuth2Provider Viewset + */ + async providersOauth2DestroyRaw( + requestParameters: ProvidersOauth2DestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.providersOauth2DestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * OAuth2Provider Viewset + */ + async providersOauth2Destroy( + requestParameters: ProvidersOauth2DestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.providersOauth2DestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for providersOauth2List without sending the request + */ + async providersOauth2ListRequestOpts( + requestParameters: ProvidersOauth2ListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["accessCodeValidity"] != null) { + queryParameters["access_code_validity"] = requestParameters["accessCodeValidity"]; + } + + if (requestParameters["accessTokenValidity"] != null) { + queryParameters["access_token_validity"] = requestParameters["accessTokenValidity"]; + } + + if (requestParameters["application"] != null) { + queryParameters["application"] = requestParameters["application"]; + } + + if (requestParameters["authorizationFlow"] != null) { + queryParameters["authorization_flow"] = requestParameters["authorizationFlow"]; + } + + if (requestParameters["clientId"] != null) { + queryParameters["client_id"] = requestParameters["clientId"]; + } + + if (requestParameters["clientType"] != null) { + queryParameters["client_type"] = requestParameters["clientType"]; + } + + if (requestParameters["includeClaimsInIdToken"] != null) { + queryParameters["include_claims_in_id_token"] = + requestParameters["includeClaimsInIdToken"]; + } + + if (requestParameters["issuerMode"] != null) { + queryParameters["issuer_mode"] = requestParameters["issuerMode"]; + } + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["propertyMappings"] != null) { + queryParameters["property_mappings"] = requestParameters["propertyMappings"]; + } + + if (requestParameters["refreshTokenValidity"] != null) { + queryParameters["refresh_token_validity"] = requestParameters["refreshTokenValidity"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["signingKey"] != null) { + queryParameters["signing_key"] = requestParameters["signingKey"]; + } + + if (requestParameters["subMode"] != null) { + queryParameters["sub_mode"] = requestParameters["subMode"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/oauth2/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * OAuth2Provider Viewset + */ + async providersOauth2ListRaw( + requestParameters: ProvidersOauth2ListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.providersOauth2ListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedOAuth2ProviderListFromJSON(jsonValue), + ); + } + + /** + * OAuth2Provider Viewset + */ + async providersOauth2List( + requestParameters: ProvidersOauth2ListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersOauth2ListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for providersOauth2PartialUpdate without sending the request + */ + async providersOauth2PartialUpdateRequestOpts( + requestParameters: ProvidersOauth2PartialUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersOauth2PartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/oauth2/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedOAuth2ProviderRequestToJSON( + requestParameters["patchedOAuth2ProviderRequest"], + ), + }; + } + + /** + * OAuth2Provider Viewset + */ + async providersOauth2PartialUpdateRaw( + requestParameters: ProvidersOauth2PartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.providersOauth2PartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + OAuth2ProviderFromJSON(jsonValue), + ); + } + + /** + * OAuth2Provider Viewset + */ + async providersOauth2PartialUpdate( + requestParameters: ProvidersOauth2PartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersOauth2PartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for providersOauth2PreviewUserRetrieve without sending the request + */ + async providersOauth2PreviewUserRetrieveRequestOpts( + requestParameters: ProvidersOauth2PreviewUserRetrieveRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersOauth2PreviewUserRetrieve().', + ); + } + + const queryParameters: any = {}; + + if (requestParameters["forUser"] != null) { + queryParameters["for_user"] = requestParameters["forUser"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/oauth2/{id}/preview_user/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Preview user data for provider + */ + async providersOauth2PreviewUserRetrieveRaw( + requestParameters: ProvidersOauth2PreviewUserRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.providersOauth2PreviewUserRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PropertyMappingPreviewFromJSON(jsonValue), + ); + } + + /** + * Preview user data for provider + */ + async providersOauth2PreviewUserRetrieve( + requestParameters: ProvidersOauth2PreviewUserRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersOauth2PreviewUserRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for providersOauth2Retrieve without sending the request + */ + async providersOauth2RetrieveRequestOpts( + requestParameters: ProvidersOauth2RetrieveRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersOauth2Retrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/oauth2/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * OAuth2Provider Viewset + */ + async providersOauth2RetrieveRaw( + requestParameters: ProvidersOauth2RetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.providersOauth2RetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + OAuth2ProviderFromJSON(jsonValue), + ); + } + + /** + * OAuth2Provider Viewset + */ + async providersOauth2Retrieve( + requestParameters: ProvidersOauth2RetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersOauth2RetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for providersOauth2SetupUrlsRetrieve without sending the request + */ + async providersOauth2SetupUrlsRetrieveRequestOpts( + requestParameters: ProvidersOauth2SetupUrlsRetrieveRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersOauth2SetupUrlsRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/oauth2/{id}/setup_urls/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get Providers setup URLs + */ + async providersOauth2SetupUrlsRetrieveRaw( + requestParameters: ProvidersOauth2SetupUrlsRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.providersOauth2SetupUrlsRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + OAuth2ProviderSetupURLsFromJSON(jsonValue), + ); + } + + /** + * Get Providers setup URLs + */ + async providersOauth2SetupUrlsRetrieve( + requestParameters: ProvidersOauth2SetupUrlsRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersOauth2SetupUrlsRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for providersOauth2Update without sending the request + */ + async providersOauth2UpdateRequestOpts( + requestParameters: ProvidersOauth2UpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersOauth2Update().', + ); + } + + if (requestParameters["oAuth2ProviderRequest"] == null) { + throw new runtime.RequiredError( + "oAuth2ProviderRequest", + 'Required parameter "oAuth2ProviderRequest" was null or undefined when calling providersOauth2Update().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/oauth2/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: OAuth2ProviderRequestToJSON(requestParameters["oAuth2ProviderRequest"]), + }; + } + + /** + * OAuth2Provider Viewset + */ + async providersOauth2UpdateRaw( + requestParameters: ProvidersOauth2UpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.providersOauth2UpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + OAuth2ProviderFromJSON(jsonValue), + ); + } + + /** + * OAuth2Provider Viewset + */ + async providersOauth2Update( + requestParameters: ProvidersOauth2UpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersOauth2UpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for providersOauth2UsedByList without sending the request + */ + async providersOauth2UsedByListRequestOpts( + requestParameters: ProvidersOauth2UsedByListRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersOauth2UsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/oauth2/{id}/used_by/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async providersOauth2UsedByListRaw( + requestParameters: ProvidersOauth2UsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.providersOauth2UsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async providersOauth2UsedByList( + requestParameters: ProvidersOauth2UsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.providersOauth2UsedByListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for providersProxyCreate without sending the request + */ + async providersProxyCreateRequestOpts( + requestParameters: ProvidersProxyCreateRequest, + ): Promise { + if (requestParameters["proxyProviderRequest"] == null) { + throw new runtime.RequiredError( + "proxyProviderRequest", + 'Required parameter "proxyProviderRequest" was null or undefined when calling providersProxyCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/proxy/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: ProxyProviderRequestToJSON(requestParameters["proxyProviderRequest"]), + }; + } + + /** + * ProxyProvider Viewset + */ + async providersProxyCreateRaw( + requestParameters: ProvidersProxyCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.providersProxyCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + ProxyProviderFromJSON(jsonValue), + ); + } + + /** + * ProxyProvider Viewset + */ + async providersProxyCreate( + requestParameters: ProvidersProxyCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersProxyCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for providersProxyDestroy without sending the request + */ + async providersProxyDestroyRequestOpts( + requestParameters: ProvidersProxyDestroyRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersProxyDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/proxy/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * ProxyProvider Viewset + */ + async providersProxyDestroyRaw( + requestParameters: ProvidersProxyDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.providersProxyDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * ProxyProvider Viewset + */ + async providersProxyDestroy( + requestParameters: ProvidersProxyDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.providersProxyDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for providersProxyList without sending the request + */ + async providersProxyListRequestOpts( + requestParameters: ProvidersProxyListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["applicationIsnull"] != null) { + queryParameters["application__isnull"] = requestParameters["applicationIsnull"]; + } + + if (requestParameters["authorizationFlowSlugIexact"] != null) { + queryParameters["authorization_flow__slug__iexact"] = + requestParameters["authorizationFlowSlugIexact"]; + } + + if (requestParameters["basicAuthEnabledIexact"] != null) { + queryParameters["basic_auth_enabled__iexact"] = + requestParameters["basicAuthEnabledIexact"]; + } + + if (requestParameters["basicAuthPasswordAttributeIexact"] != null) { + queryParameters["basic_auth_password_attribute__iexact"] = + requestParameters["basicAuthPasswordAttributeIexact"]; + } + + if (requestParameters["basicAuthUserAttributeIexact"] != null) { + queryParameters["basic_auth_user_attribute__iexact"] = + requestParameters["basicAuthUserAttributeIexact"]; + } + + if (requestParameters["certificateKpUuidIexact"] != null) { + queryParameters["certificate__kp_uuid__iexact"] = + requestParameters["certificateKpUuidIexact"]; + } + + if (requestParameters["certificateNameIexact"] != null) { + queryParameters["certificate__name__iexact"] = + requestParameters["certificateNameIexact"]; + } + + if (requestParameters["cookieDomainIexact"] != null) { + queryParameters["cookie_domain__iexact"] = requestParameters["cookieDomainIexact"]; + } + + if (requestParameters["externalHostIexact"] != null) { + queryParameters["external_host__iexact"] = requestParameters["externalHostIexact"]; + } + + if (requestParameters["internalHostIexact"] != null) { + queryParameters["internal_host__iexact"] = requestParameters["internalHostIexact"]; + } + + if (requestParameters["internalHostSslValidationIexact"] != null) { + queryParameters["internal_host_ssl_validation__iexact"] = + requestParameters["internalHostSslValidationIexact"]; + } + + if (requestParameters["modeIexact"] != null) { + queryParameters["mode__iexact"] = requestParameters["modeIexact"]; + } + + if (requestParameters["nameIexact"] != null) { + queryParameters["name__iexact"] = requestParameters["nameIexact"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["propertyMappingsIexact"] != null) { + queryParameters["property_mappings__iexact"] = + requestParameters["propertyMappingsIexact"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["skipPathRegexIexact"] != null) { + queryParameters["skip_path_regex__iexact"] = requestParameters["skipPathRegexIexact"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/proxy/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * ProxyProvider Viewset + */ + async providersProxyListRaw( + requestParameters: ProvidersProxyListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.providersProxyListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedProxyProviderListFromJSON(jsonValue), + ); + } + + /** + * ProxyProvider Viewset + */ + async providersProxyList( + requestParameters: ProvidersProxyListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersProxyListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for providersProxyPartialUpdate without sending the request + */ + async providersProxyPartialUpdateRequestOpts( + requestParameters: ProvidersProxyPartialUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersProxyPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/proxy/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedProxyProviderRequestToJSON( + requestParameters["patchedProxyProviderRequest"], + ), + }; + } + + /** + * ProxyProvider Viewset + */ + async providersProxyPartialUpdateRaw( + requestParameters: ProvidersProxyPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.providersProxyPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + ProxyProviderFromJSON(jsonValue), + ); + } + + /** + * ProxyProvider Viewset + */ + async providersProxyPartialUpdate( + requestParameters: ProvidersProxyPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersProxyPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for providersProxyRetrieve without sending the request + */ + async providersProxyRetrieveRequestOpts( + requestParameters: ProvidersProxyRetrieveRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersProxyRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/proxy/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * ProxyProvider Viewset + */ + async providersProxyRetrieveRaw( + requestParameters: ProvidersProxyRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.providersProxyRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + ProxyProviderFromJSON(jsonValue), + ); + } + + /** + * ProxyProvider Viewset + */ + async providersProxyRetrieve( + requestParameters: ProvidersProxyRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersProxyRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for providersProxyUpdate without sending the request + */ + async providersProxyUpdateRequestOpts( + requestParameters: ProvidersProxyUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersProxyUpdate().', + ); + } + + if (requestParameters["proxyProviderRequest"] == null) { + throw new runtime.RequiredError( + "proxyProviderRequest", + 'Required parameter "proxyProviderRequest" was null or undefined when calling providersProxyUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/proxy/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: ProxyProviderRequestToJSON(requestParameters["proxyProviderRequest"]), + }; + } + + /** + * ProxyProvider Viewset + */ + async providersProxyUpdateRaw( + requestParameters: ProvidersProxyUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.providersProxyUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + ProxyProviderFromJSON(jsonValue), + ); + } + + /** + * ProxyProvider Viewset + */ + async providersProxyUpdate( + requestParameters: ProvidersProxyUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersProxyUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for providersProxyUsedByList without sending the request + */ + async providersProxyUsedByListRequestOpts( + requestParameters: ProvidersProxyUsedByListRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersProxyUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/proxy/{id}/used_by/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async providersProxyUsedByListRaw( + requestParameters: ProvidersProxyUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.providersProxyUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async providersProxyUsedByList( + requestParameters: ProvidersProxyUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.providersProxyUsedByListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for providersRacCreate without sending the request + */ + async providersRacCreateRequestOpts( + requestParameters: ProvidersRacCreateRequest, + ): Promise { + if (requestParameters["rACProviderRequest"] == null) { + throw new runtime.RequiredError( + "rACProviderRequest", + 'Required parameter "rACProviderRequest" was null or undefined when calling providersRacCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/rac/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: RACProviderRequestToJSON(requestParameters["rACProviderRequest"]), + }; + } + + /** + * RACProvider Viewset + */ + async providersRacCreateRaw( + requestParameters: ProvidersRacCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.providersRacCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => RACProviderFromJSON(jsonValue)); + } + + /** + * RACProvider Viewset + */ + async providersRacCreate( + requestParameters: ProvidersRacCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersRacCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for providersRacDestroy without sending the request + */ + async providersRacDestroyRequestOpts( + requestParameters: ProvidersRacDestroyRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersRacDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/rac/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * RACProvider Viewset + */ + async providersRacDestroyRaw( + requestParameters: ProvidersRacDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.providersRacDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * RACProvider Viewset + */ + async providersRacDestroy( + requestParameters: ProvidersRacDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.providersRacDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for providersRacList without sending the request + */ + async providersRacListRequestOpts( + requestParameters: ProvidersRacListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["applicationIsnull"] != null) { + queryParameters["application__isnull"] = requestParameters["applicationIsnull"]; + } + + if (requestParameters["nameIexact"] != null) { + queryParameters["name__iexact"] = requestParameters["nameIexact"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/rac/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * RACProvider Viewset + */ + async providersRacListRaw( + requestParameters: ProvidersRacListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.providersRacListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedRACProviderListFromJSON(jsonValue), + ); + } + + /** + * RACProvider Viewset + */ + async providersRacList( + requestParameters: ProvidersRacListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersRacListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for providersRacPartialUpdate without sending the request + */ + async providersRacPartialUpdateRequestOpts( + requestParameters: ProvidersRacPartialUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersRacPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/rac/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedRACProviderRequestToJSON(requestParameters["patchedRACProviderRequest"]), + }; + } + + /** + * RACProvider Viewset + */ + async providersRacPartialUpdateRaw( + requestParameters: ProvidersRacPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.providersRacPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => RACProviderFromJSON(jsonValue)); + } + + /** + * RACProvider Viewset + */ + async providersRacPartialUpdate( + requestParameters: ProvidersRacPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersRacPartialUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for providersRacRetrieve without sending the request + */ + async providersRacRetrieveRequestOpts( + requestParameters: ProvidersRacRetrieveRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersRacRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/rac/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * RACProvider Viewset + */ + async providersRacRetrieveRaw( + requestParameters: ProvidersRacRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.providersRacRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => RACProviderFromJSON(jsonValue)); + } + + /** + * RACProvider Viewset + */ + async providersRacRetrieve( + requestParameters: ProvidersRacRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersRacRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for providersRacUpdate without sending the request + */ + async providersRacUpdateRequestOpts( + requestParameters: ProvidersRacUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersRacUpdate().', + ); + } + + if (requestParameters["rACProviderRequest"] == null) { + throw new runtime.RequiredError( + "rACProviderRequest", + 'Required parameter "rACProviderRequest" was null or undefined when calling providersRacUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/rac/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: RACProviderRequestToJSON(requestParameters["rACProviderRequest"]), + }; + } + + /** + * RACProvider Viewset + */ + async providersRacUpdateRaw( + requestParameters: ProvidersRacUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.providersRacUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => RACProviderFromJSON(jsonValue)); + } + + /** + * RACProvider Viewset + */ + async providersRacUpdate( + requestParameters: ProvidersRacUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersRacUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for providersRacUsedByList without sending the request + */ + async providersRacUsedByListRequestOpts( + requestParameters: ProvidersRacUsedByListRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersRacUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/rac/{id}/used_by/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async providersRacUsedByListRaw( + requestParameters: ProvidersRacUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.providersRacUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async providersRacUsedByList( + requestParameters: ProvidersRacUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.providersRacUsedByListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for providersRadiusCreate without sending the request + */ + async providersRadiusCreateRequestOpts( + requestParameters: ProvidersRadiusCreateRequest, + ): Promise { + if (requestParameters["radiusProviderRequest"] == null) { + throw new runtime.RequiredError( + "radiusProviderRequest", + 'Required parameter "radiusProviderRequest" was null or undefined when calling providersRadiusCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/radius/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: RadiusProviderRequestToJSON(requestParameters["radiusProviderRequest"]), + }; + } + + /** + * RadiusProvider Viewset + */ + async providersRadiusCreateRaw( + requestParameters: ProvidersRadiusCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.providersRadiusCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + RadiusProviderFromJSON(jsonValue), + ); + } + + /** + * RadiusProvider Viewset + */ + async providersRadiusCreate( + requestParameters: ProvidersRadiusCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersRadiusCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for providersRadiusDestroy without sending the request + */ + async providersRadiusDestroyRequestOpts( + requestParameters: ProvidersRadiusDestroyRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersRadiusDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/radius/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * RadiusProvider Viewset + */ + async providersRadiusDestroyRaw( + requestParameters: ProvidersRadiusDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.providersRadiusDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * RadiusProvider Viewset + */ + async providersRadiusDestroy( + requestParameters: ProvidersRadiusDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.providersRadiusDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for providersRadiusList without sending the request + */ + async providersRadiusListRequestOpts( + requestParameters: ProvidersRadiusListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["applicationIsnull"] != null) { + queryParameters["application__isnull"] = requestParameters["applicationIsnull"]; + } + + if (requestParameters["authorizationFlowSlugIexact"] != null) { + queryParameters["authorization_flow__slug__iexact"] = + requestParameters["authorizationFlowSlugIexact"]; + } + + if (requestParameters["clientNetworksIexact"] != null) { + queryParameters["client_networks__iexact"] = requestParameters["clientNetworksIexact"]; + } + + if (requestParameters["nameIexact"] != null) { + queryParameters["name__iexact"] = requestParameters["nameIexact"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/radius/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * RadiusProvider Viewset + */ + async providersRadiusListRaw( + requestParameters: ProvidersRadiusListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.providersRadiusListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedRadiusProviderListFromJSON(jsonValue), + ); + } + + /** + * RadiusProvider Viewset + */ + async providersRadiusList( + requestParameters: ProvidersRadiusListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersRadiusListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for providersRadiusPartialUpdate without sending the request + */ + async providersRadiusPartialUpdateRequestOpts( + requestParameters: ProvidersRadiusPartialUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersRadiusPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/radius/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedRadiusProviderRequestToJSON( + requestParameters["patchedRadiusProviderRequest"], + ), + }; + } + + /** + * RadiusProvider Viewset + */ + async providersRadiusPartialUpdateRaw( + requestParameters: ProvidersRadiusPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.providersRadiusPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + RadiusProviderFromJSON(jsonValue), + ); + } + + /** + * RadiusProvider Viewset + */ + async providersRadiusPartialUpdate( + requestParameters: ProvidersRadiusPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersRadiusPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for providersRadiusRetrieve without sending the request + */ + async providersRadiusRetrieveRequestOpts( + requestParameters: ProvidersRadiusRetrieveRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersRadiusRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/radius/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * RadiusProvider Viewset + */ + async providersRadiusRetrieveRaw( + requestParameters: ProvidersRadiusRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.providersRadiusRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + RadiusProviderFromJSON(jsonValue), + ); + } + + /** + * RadiusProvider Viewset + */ + async providersRadiusRetrieve( + requestParameters: ProvidersRadiusRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersRadiusRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for providersRadiusUpdate without sending the request + */ + async providersRadiusUpdateRequestOpts( + requestParameters: ProvidersRadiusUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersRadiusUpdate().', + ); + } + + if (requestParameters["radiusProviderRequest"] == null) { + throw new runtime.RequiredError( + "radiusProviderRequest", + 'Required parameter "radiusProviderRequest" was null or undefined when calling providersRadiusUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/radius/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: RadiusProviderRequestToJSON(requestParameters["radiusProviderRequest"]), + }; + } + + /** + * RadiusProvider Viewset + */ + async providersRadiusUpdateRaw( + requestParameters: ProvidersRadiusUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.providersRadiusUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + RadiusProviderFromJSON(jsonValue), + ); + } + + /** + * RadiusProvider Viewset + */ + async providersRadiusUpdate( + requestParameters: ProvidersRadiusUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersRadiusUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for providersRadiusUsedByList without sending the request + */ + async providersRadiusUsedByListRequestOpts( + requestParameters: ProvidersRadiusUsedByListRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersRadiusUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/radius/{id}/used_by/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async providersRadiusUsedByListRaw( + requestParameters: ProvidersRadiusUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.providersRadiusUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async providersRadiusUsedByList( + requestParameters: ProvidersRadiusUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.providersRadiusUsedByListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for providersSamlCreate without sending the request + */ + async providersSamlCreateRequestOpts( + requestParameters: ProvidersSamlCreateRequest, + ): Promise { + if (requestParameters["sAMLProviderRequest"] == null) { + throw new runtime.RequiredError( + "sAMLProviderRequest", + 'Required parameter "sAMLProviderRequest" was null or undefined when calling providersSamlCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/saml/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: SAMLProviderRequestToJSON(requestParameters["sAMLProviderRequest"]), + }; + } + + /** + * SAMLProvider Viewset + */ + async providersSamlCreateRaw( + requestParameters: ProvidersSamlCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.providersSamlCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + SAMLProviderFromJSON(jsonValue), + ); + } + + /** + * SAMLProvider Viewset + */ + async providersSamlCreate( + requestParameters: ProvidersSamlCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersSamlCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for providersSamlDestroy without sending the request + */ + async providersSamlDestroyRequestOpts( + requestParameters: ProvidersSamlDestroyRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersSamlDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/saml/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * SAMLProvider Viewset + */ + async providersSamlDestroyRaw( + requestParameters: ProvidersSamlDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.providersSamlDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * SAMLProvider Viewset + */ + async providersSamlDestroy( + requestParameters: ProvidersSamlDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.providersSamlDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for providersSamlImportMetadataCreate without sending the request + */ + async providersSamlImportMetadataCreateRequestOpts( + requestParameters: ProvidersSamlImportMetadataCreateRequest, + ): Promise { + if (requestParameters["name"] == null) { + throw new runtime.RequiredError( + "name", + 'Required parameter "name" was null or undefined when calling providersSamlImportMetadataCreate().', + ); + } + + if (requestParameters["authorizationFlow"] == null) { + throw new runtime.RequiredError( + "authorizationFlow", + 'Required parameter "authorizationFlow" was null or undefined when calling providersSamlImportMetadataCreate().', + ); + } + + if (requestParameters["invalidationFlow"] == null) { + throw new runtime.RequiredError( + "invalidationFlow", + 'Required parameter "invalidationFlow" was null or undefined when calling providersSamlImportMetadataCreate().', + ); + } + + if (requestParameters["file"] == null) { + throw new runtime.RequiredError( + "file", + 'Required parameter "file" was null or undefined when calling providersSamlImportMetadataCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + const consumes: runtime.Consume[] = [{ contentType: "multipart/form-data" }]; + // @ts-ignore: canConsumeForm may be unused + const canConsumeForm = runtime.canConsumeForm(consumes); + + let formParams: { append(param: string, value: any): any }; + let useForm = false; + // use FormData to transmit files using content-type "multipart/form-data" + useForm = canConsumeForm; + if (useForm) { + formParams = new FormData(); + } else { + formParams = new URLSearchParams(); + } + + if (requestParameters["name"] != null) { + formParams.append("name", requestParameters["name"] as any); + } + + if (requestParameters["authorizationFlow"] != null) { + formParams.append("authorization_flow", requestParameters["authorizationFlow"] as any); + } + + if (requestParameters["invalidationFlow"] != null) { + formParams.append("invalidation_flow", requestParameters["invalidationFlow"] as any); + } + + if (requestParameters["file"] != null) { + formParams.append("file", requestParameters["file"] as any); + } + + let urlPath = `/providers/saml/import_metadata/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: formParams, + }; + } + + /** + * Create provider from SAML Metadata + */ + async providersSamlImportMetadataCreateRaw( + requestParameters: ProvidersSamlImportMetadataCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.providersSamlImportMetadataCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + SAMLProviderFromJSON(jsonValue), + ); + } + + /** + * Create provider from SAML Metadata + */ + async providersSamlImportMetadataCreate( + requestParameters: ProvidersSamlImportMetadataCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersSamlImportMetadataCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for providersSamlList without sending the request + */ + async providersSamlListRequestOpts( + requestParameters: ProvidersSamlListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["acsUrl"] != null) { + queryParameters["acs_url"] = requestParameters["acsUrl"]; + } + + if (requestParameters["assertionValidNotBefore"] != null) { + queryParameters["assertion_valid_not_before"] = + requestParameters["assertionValidNotBefore"]; + } + + if (requestParameters["assertionValidNotOnOrAfter"] != null) { + queryParameters["assertion_valid_not_on_or_after"] = + requestParameters["assertionValidNotOnOrAfter"]; + } + + if (requestParameters["audience"] != null) { + queryParameters["audience"] = requestParameters["audience"]; + } + + if (requestParameters["authenticationFlow"] != null) { + queryParameters["authentication_flow"] = requestParameters["authenticationFlow"]; + } + + if (requestParameters["authnContextClassRefMapping"] != null) { + queryParameters["authn_context_class_ref_mapping"] = + requestParameters["authnContextClassRefMapping"]; + } + + if (requestParameters["authorizationFlow"] != null) { + queryParameters["authorization_flow"] = requestParameters["authorizationFlow"]; + } + + if (requestParameters["backchannelApplication"] != null) { + queryParameters["backchannel_application"] = + requestParameters["backchannelApplication"]; + } + + if (requestParameters["defaultNameIdPolicy"] != null) { + queryParameters["default_name_id_policy"] = requestParameters["defaultNameIdPolicy"]; + } + + if (requestParameters["defaultRelayState"] != null) { + queryParameters["default_relay_state"] = requestParameters["defaultRelayState"]; + } + + if (requestParameters["digestAlgorithm"] != null) { + queryParameters["digest_algorithm"] = requestParameters["digestAlgorithm"]; + } + + if (requestParameters["encryptionKp"] != null) { + queryParameters["encryption_kp"] = requestParameters["encryptionKp"]; + } + + if (requestParameters["invalidationFlow"] != null) { + queryParameters["invalidation_flow"] = requestParameters["invalidationFlow"]; + } + + if (requestParameters["isBackchannel"] != null) { + queryParameters["is_backchannel"] = requestParameters["isBackchannel"]; + } + + if (requestParameters["issuerOverride"] != null) { + queryParameters["issuer_override"] = requestParameters["issuerOverride"]; + } + + if (requestParameters["logoutMethod"] != null) { + queryParameters["logout_method"] = requestParameters["logoutMethod"]; + } + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["nameIdMapping"] != null) { + queryParameters["name_id_mapping"] = requestParameters["nameIdMapping"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["propertyMappings"] != null) { + queryParameters["property_mappings"] = requestParameters["propertyMappings"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["sessionValidNotOnOrAfter"] != null) { + queryParameters["session_valid_not_on_or_after"] = + requestParameters["sessionValidNotOnOrAfter"]; + } + + if (requestParameters["signAssertion"] != null) { + queryParameters["sign_assertion"] = requestParameters["signAssertion"]; + } + + if (requestParameters["signLogoutRequest"] != null) { + queryParameters["sign_logout_request"] = requestParameters["signLogoutRequest"]; + } + + if (requestParameters["signLogoutResponse"] != null) { + queryParameters["sign_logout_response"] = requestParameters["signLogoutResponse"]; + } + + if (requestParameters["signResponse"] != null) { + queryParameters["sign_response"] = requestParameters["signResponse"]; + } + + if (requestParameters["signatureAlgorithm"] != null) { + queryParameters["signature_algorithm"] = requestParameters["signatureAlgorithm"]; + } + + if (requestParameters["signingKp"] != null) { + queryParameters["signing_kp"] = requestParameters["signingKp"]; + } + + if (requestParameters["slsBinding"] != null) { + queryParameters["sls_binding"] = requestParameters["slsBinding"]; + } + + if (requestParameters["slsUrl"] != null) { + queryParameters["sls_url"] = requestParameters["slsUrl"]; + } + + if (requestParameters["spBinding"] != null) { + queryParameters["sp_binding"] = requestParameters["spBinding"]; + } + + if (requestParameters["verificationKp"] != null) { + queryParameters["verification_kp"] = requestParameters["verificationKp"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/saml/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * SAMLProvider Viewset + */ + async providersSamlListRaw( + requestParameters: ProvidersSamlListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.providersSamlListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedSAMLProviderListFromJSON(jsonValue), + ); + } + + /** + * SAMLProvider Viewset + */ + async providersSamlList( + requestParameters: ProvidersSamlListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersSamlListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for providersSamlMetadataRetrieve without sending the request + */ + async providersSamlMetadataRetrieveRequestOpts( + requestParameters: ProvidersSamlMetadataRetrieveRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersSamlMetadataRetrieve().', + ); + } + + const queryParameters: any = {}; + + if (requestParameters["download"] != null) { + queryParameters["download"] = requestParameters["download"]; + } + + if (requestParameters["forceBinding"] != null) { + queryParameters["force_binding"] = requestParameters["forceBinding"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/saml/{id}/metadata/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Return metadata as XML string + */ + async providersSamlMetadataRetrieveRaw( + requestParameters: ProvidersSamlMetadataRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.providersSamlMetadataRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + SAMLMetadataFromJSON(jsonValue), + ); + } + + /** + * Return metadata as XML string + */ + async providersSamlMetadataRetrieve( + requestParameters: ProvidersSamlMetadataRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersSamlMetadataRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for providersSamlPartialUpdate without sending the request + */ + async providersSamlPartialUpdateRequestOpts( + requestParameters: ProvidersSamlPartialUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersSamlPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/saml/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedSAMLProviderRequestToJSON(requestParameters["patchedSAMLProviderRequest"]), + }; + } + + /** + * SAMLProvider Viewset + */ + async providersSamlPartialUpdateRaw( + requestParameters: ProvidersSamlPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.providersSamlPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + SAMLProviderFromJSON(jsonValue), + ); + } + + /** + * SAMLProvider Viewset + */ + async providersSamlPartialUpdate( + requestParameters: ProvidersSamlPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersSamlPartialUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for providersSamlPreviewUserRetrieve without sending the request + */ + async providersSamlPreviewUserRetrieveRequestOpts( + requestParameters: ProvidersSamlPreviewUserRetrieveRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersSamlPreviewUserRetrieve().', + ); + } + + const queryParameters: any = {}; + + if (requestParameters["forUser"] != null) { + queryParameters["for_user"] = requestParameters["forUser"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/saml/{id}/preview_user/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Preview user data for provider + */ + async providersSamlPreviewUserRetrieveRaw( + requestParameters: ProvidersSamlPreviewUserRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.providersSamlPreviewUserRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PropertyMappingPreviewFromJSON(jsonValue), + ); + } + + /** + * Preview user data for provider + */ + async providersSamlPreviewUserRetrieve( + requestParameters: ProvidersSamlPreviewUserRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersSamlPreviewUserRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for providersSamlRetrieve without sending the request + */ + async providersSamlRetrieveRequestOpts( + requestParameters: ProvidersSamlRetrieveRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersSamlRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/saml/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * SAMLProvider Viewset + */ + async providersSamlRetrieveRaw( + requestParameters: ProvidersSamlRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.providersSamlRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + SAMLProviderFromJSON(jsonValue), + ); + } + + /** + * SAMLProvider Viewset + */ + async providersSamlRetrieve( + requestParameters: ProvidersSamlRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersSamlRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for providersSamlUpdate without sending the request + */ + async providersSamlUpdateRequestOpts( + requestParameters: ProvidersSamlUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersSamlUpdate().', + ); + } + + if (requestParameters["sAMLProviderRequest"] == null) { + throw new runtime.RequiredError( + "sAMLProviderRequest", + 'Required parameter "sAMLProviderRequest" was null or undefined when calling providersSamlUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/saml/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: SAMLProviderRequestToJSON(requestParameters["sAMLProviderRequest"]), + }; + } + + /** + * SAMLProvider Viewset + */ + async providersSamlUpdateRaw( + requestParameters: ProvidersSamlUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.providersSamlUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + SAMLProviderFromJSON(jsonValue), + ); + } + + /** + * SAMLProvider Viewset + */ + async providersSamlUpdate( + requestParameters: ProvidersSamlUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersSamlUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for providersSamlUsedByList without sending the request + */ + async providersSamlUsedByListRequestOpts( + requestParameters: ProvidersSamlUsedByListRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersSamlUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/saml/{id}/used_by/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async providersSamlUsedByListRaw( + requestParameters: ProvidersSamlUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.providersSamlUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async providersSamlUsedByList( + requestParameters: ProvidersSamlUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.providersSamlUsedByListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for providersScimCreate without sending the request + */ + async providersScimCreateRequestOpts( + requestParameters: ProvidersScimCreateRequest, + ): Promise { + if (requestParameters["sCIMProviderRequest"] == null) { + throw new runtime.RequiredError( + "sCIMProviderRequest", + 'Required parameter "sCIMProviderRequest" was null or undefined when calling providersScimCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/scim/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: SCIMProviderRequestToJSON(requestParameters["sCIMProviderRequest"]), + }; + } + + /** + * SCIMProvider Viewset + */ + async providersScimCreateRaw( + requestParameters: ProvidersScimCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.providersScimCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + SCIMProviderFromJSON(jsonValue), + ); + } + + /** + * SCIMProvider Viewset + */ + async providersScimCreate( + requestParameters: ProvidersScimCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersScimCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for providersScimDestroy without sending the request + */ + async providersScimDestroyRequestOpts( + requestParameters: ProvidersScimDestroyRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersScimDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/scim/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * SCIMProvider Viewset + */ + async providersScimDestroyRaw( + requestParameters: ProvidersScimDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.providersScimDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * SCIMProvider Viewset + */ + async providersScimDestroy( + requestParameters: ProvidersScimDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.providersScimDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for providersScimGroupsCreate without sending the request + */ + async providersScimGroupsCreateRequestOpts( + requestParameters: ProvidersScimGroupsCreateRequest, + ): Promise { + if (requestParameters["sCIMProviderGroupRequest"] == null) { + throw new runtime.RequiredError( + "sCIMProviderGroupRequest", + 'Required parameter "sCIMProviderGroupRequest" was null or undefined when calling providersScimGroupsCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/scim_groups/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: SCIMProviderGroupRequestToJSON(requestParameters["sCIMProviderGroupRequest"]), + }; + } + + /** + * SCIMProviderGroup Viewset + */ + async providersScimGroupsCreateRaw( + requestParameters: ProvidersScimGroupsCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.providersScimGroupsCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + SCIMProviderGroupFromJSON(jsonValue), + ); + } + + /** + * SCIMProviderGroup Viewset + */ + async providersScimGroupsCreate( + requestParameters: ProvidersScimGroupsCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersScimGroupsCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for providersScimGroupsDestroy without sending the request + */ + async providersScimGroupsDestroyRequestOpts( + requestParameters: ProvidersScimGroupsDestroyRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersScimGroupsDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/scim_groups/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * SCIMProviderGroup Viewset + */ + async providersScimGroupsDestroyRaw( + requestParameters: ProvidersScimGroupsDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.providersScimGroupsDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * SCIMProviderGroup Viewset + */ + async providersScimGroupsDestroy( + requestParameters: ProvidersScimGroupsDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.providersScimGroupsDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for providersScimGroupsList without sending the request + */ + async providersScimGroupsListRequestOpts( + requestParameters: ProvidersScimGroupsListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["groupGroupUuid"] != null) { + queryParameters["group__group_uuid"] = requestParameters["groupGroupUuid"]; + } + + if (requestParameters["groupName"] != null) { + queryParameters["group__name"] = requestParameters["groupName"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["providerId"] != null) { + queryParameters["provider__id"] = requestParameters["providerId"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/scim_groups/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * SCIMProviderGroup Viewset + */ + async providersScimGroupsListRaw( + requestParameters: ProvidersScimGroupsListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.providersScimGroupsListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedSCIMProviderGroupListFromJSON(jsonValue), + ); + } + + /** + * SCIMProviderGroup Viewset + */ + async providersScimGroupsList( + requestParameters: ProvidersScimGroupsListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersScimGroupsListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for providersScimGroupsRetrieve without sending the request + */ + async providersScimGroupsRetrieveRequestOpts( + requestParameters: ProvidersScimGroupsRetrieveRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersScimGroupsRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/scim_groups/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * SCIMProviderGroup Viewset + */ + async providersScimGroupsRetrieveRaw( + requestParameters: ProvidersScimGroupsRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.providersScimGroupsRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + SCIMProviderGroupFromJSON(jsonValue), + ); + } + + /** + * SCIMProviderGroup Viewset + */ + async providersScimGroupsRetrieve( + requestParameters: ProvidersScimGroupsRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersScimGroupsRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for providersScimGroupsUsedByList without sending the request + */ + async providersScimGroupsUsedByListRequestOpts( + requestParameters: ProvidersScimGroupsUsedByListRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersScimGroupsUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/scim_groups/{id}/used_by/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async providersScimGroupsUsedByListRaw( + requestParameters: ProvidersScimGroupsUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.providersScimGroupsUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async providersScimGroupsUsedByList( + requestParameters: ProvidersScimGroupsUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.providersScimGroupsUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for providersScimList without sending the request + */ + async providersScimListRequestOpts( + requestParameters: ProvidersScimListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["excludeUsersServiceAccount"] != null) { + queryParameters["exclude_users_service_account"] = + requestParameters["excludeUsersServiceAccount"]; + } + + if (requestParameters["groupFilters"] != null) { + queryParameters["group_filters"] = requestParameters["groupFilters"]; + } + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["url"] != null) { + queryParameters["url"] = requestParameters["url"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/scim/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * SCIMProvider Viewset + */ + async providersScimListRaw( + requestParameters: ProvidersScimListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.providersScimListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedSCIMProviderListFromJSON(jsonValue), + ); + } + + /** + * SCIMProvider Viewset + */ + async providersScimList( + requestParameters: ProvidersScimListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersScimListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for providersScimPartialUpdate without sending the request + */ + async providersScimPartialUpdateRequestOpts( + requestParameters: ProvidersScimPartialUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersScimPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/scim/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedSCIMProviderRequestToJSON(requestParameters["patchedSCIMProviderRequest"]), + }; + } + + /** + * SCIMProvider Viewset + */ + async providersScimPartialUpdateRaw( + requestParameters: ProvidersScimPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.providersScimPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + SCIMProviderFromJSON(jsonValue), + ); + } + + /** + * SCIMProvider Viewset + */ + async providersScimPartialUpdate( + requestParameters: ProvidersScimPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersScimPartialUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for providersScimRetrieve without sending the request + */ + async providersScimRetrieveRequestOpts( + requestParameters: ProvidersScimRetrieveRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersScimRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/scim/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * SCIMProvider Viewset + */ + async providersScimRetrieveRaw( + requestParameters: ProvidersScimRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.providersScimRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + SCIMProviderFromJSON(jsonValue), + ); + } + + /** + * SCIMProvider Viewset + */ + async providersScimRetrieve( + requestParameters: ProvidersScimRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersScimRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for providersScimSyncObjectCreate without sending the request + */ + async providersScimSyncObjectCreateRequestOpts( + requestParameters: ProvidersScimSyncObjectCreateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersScimSyncObjectCreate().', + ); + } + + if (requestParameters["syncObjectRequest"] == null) { + throw new runtime.RequiredError( + "syncObjectRequest", + 'Required parameter "syncObjectRequest" was null or undefined when calling providersScimSyncObjectCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/scim/{id}/sync/object/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: SyncObjectRequestToJSON(requestParameters["syncObjectRequest"]), + }; + } + + /** + * Sync/Re-sync a single user/group object + */ + async providersScimSyncObjectCreateRaw( + requestParameters: ProvidersScimSyncObjectCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.providersScimSyncObjectCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + SyncObjectResultFromJSON(jsonValue), + ); + } + + /** + * Sync/Re-sync a single user/group object + */ + async providersScimSyncObjectCreate( + requestParameters: ProvidersScimSyncObjectCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersScimSyncObjectCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for providersScimSyncStatusRetrieve without sending the request + */ + async providersScimSyncStatusRetrieveRequestOpts( + requestParameters: ProvidersScimSyncStatusRetrieveRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersScimSyncStatusRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/scim/{id}/sync/status/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get provider\'s sync status + */ + async providersScimSyncStatusRetrieveRaw( + requestParameters: ProvidersScimSyncStatusRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.providersScimSyncStatusRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => SyncStatusFromJSON(jsonValue)); + } + + /** + * Get provider\'s sync status + */ + async providersScimSyncStatusRetrieve( + requestParameters: ProvidersScimSyncStatusRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersScimSyncStatusRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for providersScimUpdate without sending the request + */ + async providersScimUpdateRequestOpts( + requestParameters: ProvidersScimUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersScimUpdate().', + ); + } + + if (requestParameters["sCIMProviderRequest"] == null) { + throw new runtime.RequiredError( + "sCIMProviderRequest", + 'Required parameter "sCIMProviderRequest" was null or undefined when calling providersScimUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/scim/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: SCIMProviderRequestToJSON(requestParameters["sCIMProviderRequest"]), + }; + } + + /** + * SCIMProvider Viewset + */ + async providersScimUpdateRaw( + requestParameters: ProvidersScimUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.providersScimUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + SCIMProviderFromJSON(jsonValue), + ); + } + + /** + * SCIMProvider Viewset + */ + async providersScimUpdate( + requestParameters: ProvidersScimUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersScimUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for providersScimUsedByList without sending the request + */ + async providersScimUsedByListRequestOpts( + requestParameters: ProvidersScimUsedByListRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersScimUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/scim/{id}/used_by/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async providersScimUsedByListRaw( + requestParameters: ProvidersScimUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.providersScimUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async providersScimUsedByList( + requestParameters: ProvidersScimUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.providersScimUsedByListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for providersScimUsersCreate without sending the request + */ + async providersScimUsersCreateRequestOpts( + requestParameters: ProvidersScimUsersCreateRequest, + ): Promise { + if (requestParameters["sCIMProviderUserRequest"] == null) { + throw new runtime.RequiredError( + "sCIMProviderUserRequest", + 'Required parameter "sCIMProviderUserRequest" was null or undefined when calling providersScimUsersCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/scim_users/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: SCIMProviderUserRequestToJSON(requestParameters["sCIMProviderUserRequest"]), + }; + } + + /** + * SCIMProviderUser Viewset + */ + async providersScimUsersCreateRaw( + requestParameters: ProvidersScimUsersCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.providersScimUsersCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + SCIMProviderUserFromJSON(jsonValue), + ); + } + + /** + * SCIMProviderUser Viewset + */ + async providersScimUsersCreate( + requestParameters: ProvidersScimUsersCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersScimUsersCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for providersScimUsersDestroy without sending the request + */ + async providersScimUsersDestroyRequestOpts( + requestParameters: ProvidersScimUsersDestroyRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersScimUsersDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/scim_users/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * SCIMProviderUser Viewset + */ + async providersScimUsersDestroyRaw( + requestParameters: ProvidersScimUsersDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.providersScimUsersDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * SCIMProviderUser Viewset + */ + async providersScimUsersDestroy( + requestParameters: ProvidersScimUsersDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.providersScimUsersDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for providersScimUsersList without sending the request + */ + async providersScimUsersListRequestOpts( + requestParameters: ProvidersScimUsersListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["providerId"] != null) { + queryParameters["provider__id"] = requestParameters["providerId"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["userId"] != null) { + queryParameters["user__id"] = requestParameters["userId"]; + } + + if (requestParameters["userUsername"] != null) { + queryParameters["user__username"] = requestParameters["userUsername"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/scim_users/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * SCIMProviderUser Viewset + */ + async providersScimUsersListRaw( + requestParameters: ProvidersScimUsersListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.providersScimUsersListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedSCIMProviderUserListFromJSON(jsonValue), + ); + } + + /** + * SCIMProviderUser Viewset + */ + async providersScimUsersList( + requestParameters: ProvidersScimUsersListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersScimUsersListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for providersScimUsersRetrieve without sending the request + */ + async providersScimUsersRetrieveRequestOpts( + requestParameters: ProvidersScimUsersRetrieveRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersScimUsersRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/scim_users/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * SCIMProviderUser Viewset + */ + async providersScimUsersRetrieveRaw( + requestParameters: ProvidersScimUsersRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.providersScimUsersRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + SCIMProviderUserFromJSON(jsonValue), + ); + } + + /** + * SCIMProviderUser Viewset + */ + async providersScimUsersRetrieve( + requestParameters: ProvidersScimUsersRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersScimUsersRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for providersScimUsersUsedByList without sending the request + */ + async providersScimUsersUsedByListRequestOpts( + requestParameters: ProvidersScimUsersUsedByListRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersScimUsersUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/scim_users/{id}/used_by/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async providersScimUsersUsedByListRaw( + requestParameters: ProvidersScimUsersUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.providersScimUsersUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async providersScimUsersUsedByList( + requestParameters: ProvidersScimUsersUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.providersScimUsersUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for providersSsfCreate without sending the request + */ + async providersSsfCreateRequestOpts( + requestParameters: ProvidersSsfCreateRequest, + ): Promise { + if (requestParameters["sSFProviderRequest"] == null) { + throw new runtime.RequiredError( + "sSFProviderRequest", + 'Required parameter "sSFProviderRequest" was null or undefined when calling providersSsfCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/ssf/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: SSFProviderRequestToJSON(requestParameters["sSFProviderRequest"]), + }; + } + + /** + * SSFProvider Viewset + */ + async providersSsfCreateRaw( + requestParameters: ProvidersSsfCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.providersSsfCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => SSFProviderFromJSON(jsonValue)); + } + + /** + * SSFProvider Viewset + */ + async providersSsfCreate( + requestParameters: ProvidersSsfCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersSsfCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for providersSsfDestroy without sending the request + */ + async providersSsfDestroyRequestOpts( + requestParameters: ProvidersSsfDestroyRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersSsfDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/ssf/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * SSFProvider Viewset + */ + async providersSsfDestroyRaw( + requestParameters: ProvidersSsfDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.providersSsfDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * SSFProvider Viewset + */ + async providersSsfDestroy( + requestParameters: ProvidersSsfDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.providersSsfDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for providersSsfList without sending the request + */ + async providersSsfListRequestOpts( + requestParameters: ProvidersSsfListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["applicationIsnull"] != null) { + queryParameters["application__isnull"] = requestParameters["applicationIsnull"]; + } + + if (requestParameters["nameIexact"] != null) { + queryParameters["name__iexact"] = requestParameters["nameIexact"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/ssf/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * SSFProvider Viewset + */ + async providersSsfListRaw( + requestParameters: ProvidersSsfListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.providersSsfListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedSSFProviderListFromJSON(jsonValue), + ); + } + + /** + * SSFProvider Viewset + */ + async providersSsfList( + requestParameters: ProvidersSsfListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersSsfListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for providersSsfPartialUpdate without sending the request + */ + async providersSsfPartialUpdateRequestOpts( + requestParameters: ProvidersSsfPartialUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersSsfPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/ssf/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedSSFProviderRequestToJSON(requestParameters["patchedSSFProviderRequest"]), + }; + } + + /** + * SSFProvider Viewset + */ + async providersSsfPartialUpdateRaw( + requestParameters: ProvidersSsfPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.providersSsfPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => SSFProviderFromJSON(jsonValue)); + } + + /** + * SSFProvider Viewset + */ + async providersSsfPartialUpdate( + requestParameters: ProvidersSsfPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersSsfPartialUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for providersSsfRetrieve without sending the request + */ + async providersSsfRetrieveRequestOpts( + requestParameters: ProvidersSsfRetrieveRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersSsfRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/ssf/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * SSFProvider Viewset + */ + async providersSsfRetrieveRaw( + requestParameters: ProvidersSsfRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.providersSsfRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => SSFProviderFromJSON(jsonValue)); + } + + /** + * SSFProvider Viewset + */ + async providersSsfRetrieve( + requestParameters: ProvidersSsfRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersSsfRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for providersSsfUpdate without sending the request + */ + async providersSsfUpdateRequestOpts( + requestParameters: ProvidersSsfUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersSsfUpdate().', + ); + } + + if (requestParameters["sSFProviderRequest"] == null) { + throw new runtime.RequiredError( + "sSFProviderRequest", + 'Required parameter "sSFProviderRequest" was null or undefined when calling providersSsfUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/ssf/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: SSFProviderRequestToJSON(requestParameters["sSFProviderRequest"]), + }; + } + + /** + * SSFProvider Viewset + */ + async providersSsfUpdateRaw( + requestParameters: ProvidersSsfUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.providersSsfUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => SSFProviderFromJSON(jsonValue)); + } + + /** + * SSFProvider Viewset + */ + async providersSsfUpdate( + requestParameters: ProvidersSsfUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersSsfUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for providersSsfUsedByList without sending the request + */ + async providersSsfUsedByListRequestOpts( + requestParameters: ProvidersSsfUsedByListRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersSsfUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/ssf/{id}/used_by/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async providersSsfUsedByListRaw( + requestParameters: ProvidersSsfUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.providersSsfUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async providersSsfUsedByList( + requestParameters: ProvidersSsfUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.providersSsfUsedByListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for providersWsfedCreate without sending the request + */ + async providersWsfedCreateRequestOpts( + requestParameters: ProvidersWsfedCreateRequest, + ): Promise { + if (requestParameters["wSFederationProviderRequest"] == null) { + throw new runtime.RequiredError( + "wSFederationProviderRequest", + 'Required parameter "wSFederationProviderRequest" was null or undefined when calling providersWsfedCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/wsfed/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: WSFederationProviderRequestToJSON( + requestParameters["wSFederationProviderRequest"], + ), + }; + } + + /** + * WSFederationProvider Viewset + */ + async providersWsfedCreateRaw( + requestParameters: ProvidersWsfedCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.providersWsfedCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + WSFederationProviderFromJSON(jsonValue), + ); + } + + /** + * WSFederationProvider Viewset + */ + async providersWsfedCreate( + requestParameters: ProvidersWsfedCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersWsfedCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for providersWsfedDestroy without sending the request + */ + async providersWsfedDestroyRequestOpts( + requestParameters: ProvidersWsfedDestroyRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersWsfedDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/wsfed/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * WSFederationProvider Viewset + */ + async providersWsfedDestroyRaw( + requestParameters: ProvidersWsfedDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.providersWsfedDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * WSFederationProvider Viewset + */ + async providersWsfedDestroy( + requestParameters: ProvidersWsfedDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.providersWsfedDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for providersWsfedList without sending the request + */ + async providersWsfedListRequestOpts( + requestParameters: ProvidersWsfedListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["acsUrl"] != null) { + queryParameters["acs_url"] = requestParameters["acsUrl"]; + } + + if (requestParameters["assertionValidNotBefore"] != null) { + queryParameters["assertion_valid_not_before"] = + requestParameters["assertionValidNotBefore"]; + } + + if (requestParameters["assertionValidNotOnOrAfter"] != null) { + queryParameters["assertion_valid_not_on_or_after"] = + requestParameters["assertionValidNotOnOrAfter"]; + } + + if (requestParameters["audience"] != null) { + queryParameters["audience"] = requestParameters["audience"]; + } + + if (requestParameters["authenticationFlow"] != null) { + queryParameters["authentication_flow"] = requestParameters["authenticationFlow"]; + } + + if (requestParameters["authnContextClassRefMapping"] != null) { + queryParameters["authn_context_class_ref_mapping"] = + requestParameters["authnContextClassRefMapping"]; + } + + if (requestParameters["authorizationFlow"] != null) { + queryParameters["authorization_flow"] = requestParameters["authorizationFlow"]; + } + + if (requestParameters["backchannelApplication"] != null) { + queryParameters["backchannel_application"] = + requestParameters["backchannelApplication"]; + } + + if (requestParameters["defaultNameIdPolicy"] != null) { + queryParameters["default_name_id_policy"] = requestParameters["defaultNameIdPolicy"]; + } + + if (requestParameters["defaultRelayState"] != null) { + queryParameters["default_relay_state"] = requestParameters["defaultRelayState"]; + } + + if (requestParameters["digestAlgorithm"] != null) { + queryParameters["digest_algorithm"] = requestParameters["digestAlgorithm"]; + } + + if (requestParameters["encryptionKp"] != null) { + queryParameters["encryption_kp"] = requestParameters["encryptionKp"]; + } + + if (requestParameters["invalidationFlow"] != null) { + queryParameters["invalidation_flow"] = requestParameters["invalidationFlow"]; + } + + if (requestParameters["isBackchannel"] != null) { + queryParameters["is_backchannel"] = requestParameters["isBackchannel"]; + } + + if (requestParameters["issuerOverride"] != null) { + queryParameters["issuer_override"] = requestParameters["issuerOverride"]; + } + + if (requestParameters["logoutMethod"] != null) { + queryParameters["logout_method"] = requestParameters["logoutMethod"]; + } + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["nameIdMapping"] != null) { + queryParameters["name_id_mapping"] = requestParameters["nameIdMapping"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["propertyMappings"] != null) { + queryParameters["property_mappings"] = requestParameters["propertyMappings"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["sessionValidNotOnOrAfter"] != null) { + queryParameters["session_valid_not_on_or_after"] = + requestParameters["sessionValidNotOnOrAfter"]; + } + + if (requestParameters["signAssertion"] != null) { + queryParameters["sign_assertion"] = requestParameters["signAssertion"]; + } + + if (requestParameters["signLogoutRequest"] != null) { + queryParameters["sign_logout_request"] = requestParameters["signLogoutRequest"]; + } + + if (requestParameters["signLogoutResponse"] != null) { + queryParameters["sign_logout_response"] = requestParameters["signLogoutResponse"]; + } + + if (requestParameters["signResponse"] != null) { + queryParameters["sign_response"] = requestParameters["signResponse"]; + } + + if (requestParameters["signatureAlgorithm"] != null) { + queryParameters["signature_algorithm"] = requestParameters["signatureAlgorithm"]; + } + + if (requestParameters["signingKp"] != null) { + queryParameters["signing_kp"] = requestParameters["signingKp"]; + } + + if (requestParameters["slsBinding"] != null) { + queryParameters["sls_binding"] = requestParameters["slsBinding"]; + } + + if (requestParameters["slsUrl"] != null) { + queryParameters["sls_url"] = requestParameters["slsUrl"]; + } + + if (requestParameters["spBinding"] != null) { + queryParameters["sp_binding"] = requestParameters["spBinding"]; + } + + if (requestParameters["verificationKp"] != null) { + queryParameters["verification_kp"] = requestParameters["verificationKp"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/wsfed/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * WSFederationProvider Viewset + */ + async providersWsfedListRaw( + requestParameters: ProvidersWsfedListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.providersWsfedListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedWSFederationProviderListFromJSON(jsonValue), + ); + } + + /** + * WSFederationProvider Viewset + */ + async providersWsfedList( + requestParameters: ProvidersWsfedListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersWsfedListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for providersWsfedMetadataRetrieve without sending the request + */ + async providersWsfedMetadataRetrieveRequestOpts( + requestParameters: ProvidersWsfedMetadataRetrieveRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersWsfedMetadataRetrieve().', + ); + } + + const queryParameters: any = {}; + + if (requestParameters["download"] != null) { + queryParameters["download"] = requestParameters["download"]; + } + + if (requestParameters["forceBinding"] != null) { + queryParameters["force_binding"] = requestParameters["forceBinding"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/wsfed/{id}/metadata/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Return metadata as XML string + */ + async providersWsfedMetadataRetrieveRaw( + requestParameters: ProvidersWsfedMetadataRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.providersWsfedMetadataRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + SAMLMetadataFromJSON(jsonValue), + ); + } + + /** + * Return metadata as XML string + */ + async providersWsfedMetadataRetrieve( + requestParameters: ProvidersWsfedMetadataRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersWsfedMetadataRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for providersWsfedPartialUpdate without sending the request + */ + async providersWsfedPartialUpdateRequestOpts( + requestParameters: ProvidersWsfedPartialUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersWsfedPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/wsfed/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedWSFederationProviderRequestToJSON( + requestParameters["patchedWSFederationProviderRequest"], + ), + }; + } + + /** + * WSFederationProvider Viewset + */ + async providersWsfedPartialUpdateRaw( + requestParameters: ProvidersWsfedPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.providersWsfedPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + WSFederationProviderFromJSON(jsonValue), + ); + } + + /** + * WSFederationProvider Viewset + */ + async providersWsfedPartialUpdate( + requestParameters: ProvidersWsfedPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersWsfedPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for providersWsfedPreviewUserRetrieve without sending the request + */ + async providersWsfedPreviewUserRetrieveRequestOpts( + requestParameters: ProvidersWsfedPreviewUserRetrieveRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersWsfedPreviewUserRetrieve().', + ); + } + + const queryParameters: any = {}; + + if (requestParameters["forUser"] != null) { + queryParameters["for_user"] = requestParameters["forUser"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/wsfed/{id}/preview_user/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Preview user data for provider + */ + async providersWsfedPreviewUserRetrieveRaw( + requestParameters: ProvidersWsfedPreviewUserRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.providersWsfedPreviewUserRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PropertyMappingPreviewFromJSON(jsonValue), + ); + } + + /** + * Preview user data for provider + */ + async providersWsfedPreviewUserRetrieve( + requestParameters: ProvidersWsfedPreviewUserRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersWsfedPreviewUserRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for providersWsfedRetrieve without sending the request + */ + async providersWsfedRetrieveRequestOpts( + requestParameters: ProvidersWsfedRetrieveRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersWsfedRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/wsfed/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * WSFederationProvider Viewset + */ + async providersWsfedRetrieveRaw( + requestParameters: ProvidersWsfedRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.providersWsfedRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + WSFederationProviderFromJSON(jsonValue), + ); + } + + /** + * WSFederationProvider Viewset + */ + async providersWsfedRetrieve( + requestParameters: ProvidersWsfedRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersWsfedRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for providersWsfedUpdate without sending the request + */ + async providersWsfedUpdateRequestOpts( + requestParameters: ProvidersWsfedUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersWsfedUpdate().', + ); + } + + if (requestParameters["wSFederationProviderRequest"] == null) { + throw new runtime.RequiredError( + "wSFederationProviderRequest", + 'Required parameter "wSFederationProviderRequest" was null or undefined when calling providersWsfedUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/wsfed/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: WSFederationProviderRequestToJSON( + requestParameters["wSFederationProviderRequest"], + ), + }; + } + + /** + * WSFederationProvider Viewset + */ + async providersWsfedUpdateRaw( + requestParameters: ProvidersWsfedUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.providersWsfedUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + WSFederationProviderFromJSON(jsonValue), + ); + } + + /** + * WSFederationProvider Viewset + */ + async providersWsfedUpdate( + requestParameters: ProvidersWsfedUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.providersWsfedUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for providersWsfedUsedByList without sending the request + */ + async providersWsfedUsedByListRequestOpts( + requestParameters: ProvidersWsfedUsedByListRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling providersWsfedUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/providers/wsfed/{id}/used_by/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async providersWsfedUsedByListRaw( + requestParameters: ProvidersWsfedUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.providersWsfedUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async providersWsfedUsedByList( + requestParameters: ProvidersWsfedUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.providersWsfedUsedByListRaw(requestParameters, initOverrides); + return await response.value(); + } +} diff --git a/packages/client-ts/src/apis/RacApi.ts b/packages/client-ts/src/apis/RacApi.ts new file mode 100644 index 0000000000..011814dd6f --- /dev/null +++ b/packages/client-ts/src/apis/RacApi.ts @@ -0,0 +1,1022 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { + ConnectionToken, + ConnectionTokenRequest, + Endpoint, + EndpointRequest, + PaginatedConnectionTokenList, + PaginatedEndpointList, + PatchedConnectionTokenRequest, + PatchedEndpointRequest, + UsedBy, +} from "../models/index"; +import { + ConnectionTokenFromJSON, + ConnectionTokenRequestToJSON, + EndpointFromJSON, + EndpointRequestToJSON, + PaginatedConnectionTokenListFromJSON, + PaginatedEndpointListFromJSON, + PatchedConnectionTokenRequestToJSON, + PatchedEndpointRequestToJSON, + UsedByFromJSON, +} from "../models/index"; +import * as runtime from "../runtime"; + +export interface RacConnectionTokensDestroyRequest { + connectionTokenUuid: string; +} + +export interface RacConnectionTokensListRequest { + endpoint?: string; + ordering?: string; + page?: number; + pageSize?: number; + provider?: number; + search?: string; + sessionUser?: number; +} + +export interface RacConnectionTokensPartialUpdateRequest { + connectionTokenUuid: string; + patchedConnectionTokenRequest?: PatchedConnectionTokenRequest; +} + +export interface RacConnectionTokensRetrieveRequest { + connectionTokenUuid: string; +} + +export interface RacConnectionTokensUpdateRequest { + connectionTokenUuid: string; + connectionTokenRequest: ConnectionTokenRequest; +} + +export interface RacConnectionTokensUsedByListRequest { + connectionTokenUuid: string; +} + +export interface RacEndpointsCreateRequest { + endpointRequest: EndpointRequest; +} + +export interface RacEndpointsDestroyRequest { + pbmUuid: string; +} + +export interface RacEndpointsListRequest { + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + provider?: number; + search?: string; + superuserFullList?: boolean; +} + +export interface RacEndpointsPartialUpdateRequest { + pbmUuid: string; + patchedEndpointRequest?: PatchedEndpointRequest; +} + +export interface RacEndpointsRetrieveRequest { + pbmUuid: string; +} + +export interface RacEndpointsUpdateRequest { + pbmUuid: string; + endpointRequest: EndpointRequest; +} + +export interface RacEndpointsUsedByListRequest { + pbmUuid: string; +} + +/** + * + */ +export class RacApi extends runtime.BaseAPI { + /** + * Creates request options for racConnectionTokensDestroy without sending the request + */ + async racConnectionTokensDestroyRequestOpts( + requestParameters: RacConnectionTokensDestroyRequest, + ): Promise { + if (requestParameters["connectionTokenUuid"] == null) { + throw new runtime.RequiredError( + "connectionTokenUuid", + 'Required parameter "connectionTokenUuid" was null or undefined when calling racConnectionTokensDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/rac/connection_tokens/{connection_token_uuid}/`; + urlPath = urlPath.replace( + `{${"connection_token_uuid"}}`, + encodeURIComponent(String(requestParameters["connectionTokenUuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * ConnectionToken Viewset + */ + async racConnectionTokensDestroyRaw( + requestParameters: RacConnectionTokensDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.racConnectionTokensDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * ConnectionToken Viewset + */ + async racConnectionTokensDestroy( + requestParameters: RacConnectionTokensDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.racConnectionTokensDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for racConnectionTokensList without sending the request + */ + async racConnectionTokensListRequestOpts( + requestParameters: RacConnectionTokensListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["endpoint"] != null) { + queryParameters["endpoint"] = requestParameters["endpoint"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["provider"] != null) { + queryParameters["provider"] = requestParameters["provider"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["sessionUser"] != null) { + queryParameters["session__user"] = requestParameters["sessionUser"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/rac/connection_tokens/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * ConnectionToken Viewset + */ + async racConnectionTokensListRaw( + requestParameters: RacConnectionTokensListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.racConnectionTokensListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedConnectionTokenListFromJSON(jsonValue), + ); + } + + /** + * ConnectionToken Viewset + */ + async racConnectionTokensList( + requestParameters: RacConnectionTokensListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.racConnectionTokensListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for racConnectionTokensPartialUpdate without sending the request + */ + async racConnectionTokensPartialUpdateRequestOpts( + requestParameters: RacConnectionTokensPartialUpdateRequest, + ): Promise { + if (requestParameters["connectionTokenUuid"] == null) { + throw new runtime.RequiredError( + "connectionTokenUuid", + 'Required parameter "connectionTokenUuid" was null or undefined when calling racConnectionTokensPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/rac/connection_tokens/{connection_token_uuid}/`; + urlPath = urlPath.replace( + `{${"connection_token_uuid"}}`, + encodeURIComponent(String(requestParameters["connectionTokenUuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedConnectionTokenRequestToJSON( + requestParameters["patchedConnectionTokenRequest"], + ), + }; + } + + /** + * ConnectionToken Viewset + */ + async racConnectionTokensPartialUpdateRaw( + requestParameters: RacConnectionTokensPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.racConnectionTokensPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + ConnectionTokenFromJSON(jsonValue), + ); + } + + /** + * ConnectionToken Viewset + */ + async racConnectionTokensPartialUpdate( + requestParameters: RacConnectionTokensPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.racConnectionTokensPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for racConnectionTokensRetrieve without sending the request + */ + async racConnectionTokensRetrieveRequestOpts( + requestParameters: RacConnectionTokensRetrieveRequest, + ): Promise { + if (requestParameters["connectionTokenUuid"] == null) { + throw new runtime.RequiredError( + "connectionTokenUuid", + 'Required parameter "connectionTokenUuid" was null or undefined when calling racConnectionTokensRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/rac/connection_tokens/{connection_token_uuid}/`; + urlPath = urlPath.replace( + `{${"connection_token_uuid"}}`, + encodeURIComponent(String(requestParameters["connectionTokenUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * ConnectionToken Viewset + */ + async racConnectionTokensRetrieveRaw( + requestParameters: RacConnectionTokensRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.racConnectionTokensRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + ConnectionTokenFromJSON(jsonValue), + ); + } + + /** + * ConnectionToken Viewset + */ + async racConnectionTokensRetrieve( + requestParameters: RacConnectionTokensRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.racConnectionTokensRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for racConnectionTokensUpdate without sending the request + */ + async racConnectionTokensUpdateRequestOpts( + requestParameters: RacConnectionTokensUpdateRequest, + ): Promise { + if (requestParameters["connectionTokenUuid"] == null) { + throw new runtime.RequiredError( + "connectionTokenUuid", + 'Required parameter "connectionTokenUuid" was null or undefined when calling racConnectionTokensUpdate().', + ); + } + + if (requestParameters["connectionTokenRequest"] == null) { + throw new runtime.RequiredError( + "connectionTokenRequest", + 'Required parameter "connectionTokenRequest" was null or undefined when calling racConnectionTokensUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/rac/connection_tokens/{connection_token_uuid}/`; + urlPath = urlPath.replace( + `{${"connection_token_uuid"}}`, + encodeURIComponent(String(requestParameters["connectionTokenUuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: ConnectionTokenRequestToJSON(requestParameters["connectionTokenRequest"]), + }; + } + + /** + * ConnectionToken Viewset + */ + async racConnectionTokensUpdateRaw( + requestParameters: RacConnectionTokensUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.racConnectionTokensUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + ConnectionTokenFromJSON(jsonValue), + ); + } + + /** + * ConnectionToken Viewset + */ + async racConnectionTokensUpdate( + requestParameters: RacConnectionTokensUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.racConnectionTokensUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for racConnectionTokensUsedByList without sending the request + */ + async racConnectionTokensUsedByListRequestOpts( + requestParameters: RacConnectionTokensUsedByListRequest, + ): Promise { + if (requestParameters["connectionTokenUuid"] == null) { + throw new runtime.RequiredError( + "connectionTokenUuid", + 'Required parameter "connectionTokenUuid" was null or undefined when calling racConnectionTokensUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/rac/connection_tokens/{connection_token_uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"connection_token_uuid"}}`, + encodeURIComponent(String(requestParameters["connectionTokenUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async racConnectionTokensUsedByListRaw( + requestParameters: RacConnectionTokensUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.racConnectionTokensUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async racConnectionTokensUsedByList( + requestParameters: RacConnectionTokensUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.racConnectionTokensUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for racEndpointsCreate without sending the request + */ + async racEndpointsCreateRequestOpts( + requestParameters: RacEndpointsCreateRequest, + ): Promise { + if (requestParameters["endpointRequest"] == null) { + throw new runtime.RequiredError( + "endpointRequest", + 'Required parameter "endpointRequest" was null or undefined when calling racEndpointsCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/rac/endpoints/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: EndpointRequestToJSON(requestParameters["endpointRequest"]), + }; + } + + /** + * Endpoint Viewset + */ + async racEndpointsCreateRaw( + requestParameters: RacEndpointsCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.racEndpointsCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => EndpointFromJSON(jsonValue)); + } + + /** + * Endpoint Viewset + */ + async racEndpointsCreate( + requestParameters: RacEndpointsCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.racEndpointsCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for racEndpointsDestroy without sending the request + */ + async racEndpointsDestroyRequestOpts( + requestParameters: RacEndpointsDestroyRequest, + ): Promise { + if (requestParameters["pbmUuid"] == null) { + throw new runtime.RequiredError( + "pbmUuid", + 'Required parameter "pbmUuid" was null or undefined when calling racEndpointsDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/rac/endpoints/{pbm_uuid}/`; + urlPath = urlPath.replace( + `{${"pbm_uuid"}}`, + encodeURIComponent(String(requestParameters["pbmUuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Endpoint Viewset + */ + async racEndpointsDestroyRaw( + requestParameters: RacEndpointsDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.racEndpointsDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Endpoint Viewset + */ + async racEndpointsDestroy( + requestParameters: RacEndpointsDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.racEndpointsDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for racEndpointsList without sending the request + */ + async racEndpointsListRequestOpts( + requestParameters: RacEndpointsListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["provider"] != null) { + queryParameters["provider"] = requestParameters["provider"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["superuserFullList"] != null) { + queryParameters["superuser_full_list"] = requestParameters["superuserFullList"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/rac/endpoints/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * List accessible endpoints + */ + async racEndpointsListRaw( + requestParameters: RacEndpointsListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.racEndpointsListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedEndpointListFromJSON(jsonValue), + ); + } + + /** + * List accessible endpoints + */ + async racEndpointsList( + requestParameters: RacEndpointsListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.racEndpointsListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for racEndpointsPartialUpdate without sending the request + */ + async racEndpointsPartialUpdateRequestOpts( + requestParameters: RacEndpointsPartialUpdateRequest, + ): Promise { + if (requestParameters["pbmUuid"] == null) { + throw new runtime.RequiredError( + "pbmUuid", + 'Required parameter "pbmUuid" was null or undefined when calling racEndpointsPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/rac/endpoints/{pbm_uuid}/`; + urlPath = urlPath.replace( + `{${"pbm_uuid"}}`, + encodeURIComponent(String(requestParameters["pbmUuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedEndpointRequestToJSON(requestParameters["patchedEndpointRequest"]), + }; + } + + /** + * Endpoint Viewset + */ + async racEndpointsPartialUpdateRaw( + requestParameters: RacEndpointsPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.racEndpointsPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => EndpointFromJSON(jsonValue)); + } + + /** + * Endpoint Viewset + */ + async racEndpointsPartialUpdate( + requestParameters: RacEndpointsPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.racEndpointsPartialUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for racEndpointsRetrieve without sending the request + */ + async racEndpointsRetrieveRequestOpts( + requestParameters: RacEndpointsRetrieveRequest, + ): Promise { + if (requestParameters["pbmUuid"] == null) { + throw new runtime.RequiredError( + "pbmUuid", + 'Required parameter "pbmUuid" was null or undefined when calling racEndpointsRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/rac/endpoints/{pbm_uuid}/`; + urlPath = urlPath.replace( + `{${"pbm_uuid"}}`, + encodeURIComponent(String(requestParameters["pbmUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Endpoint Viewset + */ + async racEndpointsRetrieveRaw( + requestParameters: RacEndpointsRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.racEndpointsRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => EndpointFromJSON(jsonValue)); + } + + /** + * Endpoint Viewset + */ + async racEndpointsRetrieve( + requestParameters: RacEndpointsRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.racEndpointsRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for racEndpointsUpdate without sending the request + */ + async racEndpointsUpdateRequestOpts( + requestParameters: RacEndpointsUpdateRequest, + ): Promise { + if (requestParameters["pbmUuid"] == null) { + throw new runtime.RequiredError( + "pbmUuid", + 'Required parameter "pbmUuid" was null or undefined when calling racEndpointsUpdate().', + ); + } + + if (requestParameters["endpointRequest"] == null) { + throw new runtime.RequiredError( + "endpointRequest", + 'Required parameter "endpointRequest" was null or undefined when calling racEndpointsUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/rac/endpoints/{pbm_uuid}/`; + urlPath = urlPath.replace( + `{${"pbm_uuid"}}`, + encodeURIComponent(String(requestParameters["pbmUuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: EndpointRequestToJSON(requestParameters["endpointRequest"]), + }; + } + + /** + * Endpoint Viewset + */ + async racEndpointsUpdateRaw( + requestParameters: RacEndpointsUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.racEndpointsUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => EndpointFromJSON(jsonValue)); + } + + /** + * Endpoint Viewset + */ + async racEndpointsUpdate( + requestParameters: RacEndpointsUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.racEndpointsUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for racEndpointsUsedByList without sending the request + */ + async racEndpointsUsedByListRequestOpts( + requestParameters: RacEndpointsUsedByListRequest, + ): Promise { + if (requestParameters["pbmUuid"] == null) { + throw new runtime.RequiredError( + "pbmUuid", + 'Required parameter "pbmUuid" was null or undefined when calling racEndpointsUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/rac/endpoints/{pbm_uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"pbm_uuid"}}`, + encodeURIComponent(String(requestParameters["pbmUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async racEndpointsUsedByListRaw( + requestParameters: RacEndpointsUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.racEndpointsUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async racEndpointsUsedByList( + requestParameters: RacEndpointsUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.racEndpointsUsedByListRaw(requestParameters, initOverrides); + return await response.value(); + } +} diff --git a/packages/client-ts/src/apis/RbacApi.ts b/packages/client-ts/src/apis/RbacApi.ts new file mode 100644 index 0000000000..03d34d1896 --- /dev/null +++ b/packages/client-ts/src/apis/RbacApi.ts @@ -0,0 +1,1776 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { + InitialPermissions, + InitialPermissionsRequest, + PaginatedExtraRoleObjectPermissionList, + PaginatedInitialPermissionsList, + PaginatedPermissionList, + PaginatedRoleAssignedObjectPermissionList, + PaginatedRoleList, + PatchedInitialPermissionsRequest, + PatchedPermissionAssignRequest, + PatchedRoleRequest, + Permission, + PermissionAssignRequest, + PermissionAssignResult, + Role, + RoleRequest, + UsedBy, + UserAccountSerializerForRoleRequest, +} from "../models/index"; +import { + InitialPermissionsFromJSON, + InitialPermissionsRequestToJSON, + PaginatedExtraRoleObjectPermissionListFromJSON, + PaginatedInitialPermissionsListFromJSON, + PaginatedPermissionListFromJSON, + PaginatedRoleAssignedObjectPermissionListFromJSON, + PaginatedRoleListFromJSON, + PatchedInitialPermissionsRequestToJSON, + PatchedPermissionAssignRequestToJSON, + PatchedRoleRequestToJSON, + PermissionAssignRequestToJSON, + PermissionAssignResultFromJSON, + PermissionFromJSON, + RoleFromJSON, + RoleRequestToJSON, + UsedByFromJSON, + UserAccountSerializerForRoleRequestToJSON, +} from "../models/index"; +import * as runtime from "../runtime"; + +export interface RbacInitialPermissionsCreateRequest { + initialPermissionsRequest: InitialPermissionsRequest; +} + +export interface RbacInitialPermissionsDestroyRequest { + id: number; +} + +export interface RbacInitialPermissionsListRequest { + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; +} + +export interface RbacInitialPermissionsPartialUpdateRequest { + id: number; + patchedInitialPermissionsRequest?: PatchedInitialPermissionsRequest; +} + +export interface RbacInitialPermissionsRetrieveRequest { + id: number; +} + +export interface RbacInitialPermissionsUpdateRequest { + id: number; + initialPermissionsRequest: InitialPermissionsRequest; +} + +export interface RbacInitialPermissionsUsedByListRequest { + id: number; +} + +export interface RbacPermissionsAssignedByRolesAssignRequest { + uuid: string; + permissionAssignRequest: PermissionAssignRequest; +} + +export interface RbacPermissionsAssignedByRolesListRequest { + model: string; + objectPk?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; +} + +export interface RbacPermissionsAssignedByRolesUnassignPartialUpdateRequest { + uuid: string; + patchedPermissionAssignRequest?: PatchedPermissionAssignRequest; +} + +export interface RbacPermissionsListRequest { + codename?: string; + contentTypeAppLabel?: string; + contentTypeModel?: string; + ordering?: string; + page?: number; + pageSize?: number; + role?: string; + search?: string; +} + +export interface RbacPermissionsRetrieveRequest { + id: number; +} + +export interface RbacPermissionsRolesListRequest { + ordering?: string; + page?: number; + pageSize?: number; + search?: string; + uuid?: string; +} + +export interface RbacRolesAddUserCreateRequest { + uuid: string; + userAccountSerializerForRoleRequest: UserAccountSerializerForRoleRequest; +} + +export interface RbacRolesCreateRequest { + roleRequest: RoleRequest; +} + +export interface RbacRolesDestroyRequest { + uuid: string; +} + +export interface RbacRolesListRequest { + groups?: string; + inherited?: boolean; + managed?: Array; + managedIsnull?: boolean; + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; + users?: number; +} + +export interface RbacRolesPartialUpdateRequest { + uuid: string; + patchedRoleRequest?: PatchedRoleRequest; +} + +export interface RbacRolesRemoveUserCreateRequest { + uuid: string; + userAccountSerializerForRoleRequest: UserAccountSerializerForRoleRequest; +} + +export interface RbacRolesRetrieveRequest { + uuid: string; +} + +export interface RbacRolesUpdateRequest { + uuid: string; + roleRequest: RoleRequest; +} + +export interface RbacRolesUsedByListRequest { + uuid: string; +} + +/** + * + */ +export class RbacApi extends runtime.BaseAPI { + /** + * Creates request options for rbacInitialPermissionsCreate without sending the request + */ + async rbacInitialPermissionsCreateRequestOpts( + requestParameters: RbacInitialPermissionsCreateRequest, + ): Promise { + if (requestParameters["initialPermissionsRequest"] == null) { + throw new runtime.RequiredError( + "initialPermissionsRequest", + 'Required parameter "initialPermissionsRequest" was null or undefined when calling rbacInitialPermissionsCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/rbac/initial_permissions/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: InitialPermissionsRequestToJSON(requestParameters["initialPermissionsRequest"]), + }; + } + + /** + * InitialPermissions viewset + */ + async rbacInitialPermissionsCreateRaw( + requestParameters: RbacInitialPermissionsCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.rbacInitialPermissionsCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + InitialPermissionsFromJSON(jsonValue), + ); + } + + /** + * InitialPermissions viewset + */ + async rbacInitialPermissionsCreate( + requestParameters: RbacInitialPermissionsCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.rbacInitialPermissionsCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for rbacInitialPermissionsDestroy without sending the request + */ + async rbacInitialPermissionsDestroyRequestOpts( + requestParameters: RbacInitialPermissionsDestroyRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling rbacInitialPermissionsDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/rbac/initial_permissions/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * InitialPermissions viewset + */ + async rbacInitialPermissionsDestroyRaw( + requestParameters: RbacInitialPermissionsDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.rbacInitialPermissionsDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * InitialPermissions viewset + */ + async rbacInitialPermissionsDestroy( + requestParameters: RbacInitialPermissionsDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.rbacInitialPermissionsDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for rbacInitialPermissionsList without sending the request + */ + async rbacInitialPermissionsListRequestOpts( + requestParameters: RbacInitialPermissionsListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/rbac/initial_permissions/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * InitialPermissions viewset + */ + async rbacInitialPermissionsListRaw( + requestParameters: RbacInitialPermissionsListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.rbacInitialPermissionsListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedInitialPermissionsListFromJSON(jsonValue), + ); + } + + /** + * InitialPermissions viewset + */ + async rbacInitialPermissionsList( + requestParameters: RbacInitialPermissionsListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.rbacInitialPermissionsListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for rbacInitialPermissionsPartialUpdate without sending the request + */ + async rbacInitialPermissionsPartialUpdateRequestOpts( + requestParameters: RbacInitialPermissionsPartialUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling rbacInitialPermissionsPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/rbac/initial_permissions/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedInitialPermissionsRequestToJSON( + requestParameters["patchedInitialPermissionsRequest"], + ), + }; + } + + /** + * InitialPermissions viewset + */ + async rbacInitialPermissionsPartialUpdateRaw( + requestParameters: RbacInitialPermissionsPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.rbacInitialPermissionsPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + InitialPermissionsFromJSON(jsonValue), + ); + } + + /** + * InitialPermissions viewset + */ + async rbacInitialPermissionsPartialUpdate( + requestParameters: RbacInitialPermissionsPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.rbacInitialPermissionsPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for rbacInitialPermissionsRetrieve without sending the request + */ + async rbacInitialPermissionsRetrieveRequestOpts( + requestParameters: RbacInitialPermissionsRetrieveRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling rbacInitialPermissionsRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/rbac/initial_permissions/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * InitialPermissions viewset + */ + async rbacInitialPermissionsRetrieveRaw( + requestParameters: RbacInitialPermissionsRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.rbacInitialPermissionsRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + InitialPermissionsFromJSON(jsonValue), + ); + } + + /** + * InitialPermissions viewset + */ + async rbacInitialPermissionsRetrieve( + requestParameters: RbacInitialPermissionsRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.rbacInitialPermissionsRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for rbacInitialPermissionsUpdate without sending the request + */ + async rbacInitialPermissionsUpdateRequestOpts( + requestParameters: RbacInitialPermissionsUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling rbacInitialPermissionsUpdate().', + ); + } + + if (requestParameters["initialPermissionsRequest"] == null) { + throw new runtime.RequiredError( + "initialPermissionsRequest", + 'Required parameter "initialPermissionsRequest" was null or undefined when calling rbacInitialPermissionsUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/rbac/initial_permissions/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: InitialPermissionsRequestToJSON(requestParameters["initialPermissionsRequest"]), + }; + } + + /** + * InitialPermissions viewset + */ + async rbacInitialPermissionsUpdateRaw( + requestParameters: RbacInitialPermissionsUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.rbacInitialPermissionsUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + InitialPermissionsFromJSON(jsonValue), + ); + } + + /** + * InitialPermissions viewset + */ + async rbacInitialPermissionsUpdate( + requestParameters: RbacInitialPermissionsUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.rbacInitialPermissionsUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for rbacInitialPermissionsUsedByList without sending the request + */ + async rbacInitialPermissionsUsedByListRequestOpts( + requestParameters: RbacInitialPermissionsUsedByListRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling rbacInitialPermissionsUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/rbac/initial_permissions/{id}/used_by/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async rbacInitialPermissionsUsedByListRaw( + requestParameters: RbacInitialPermissionsUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.rbacInitialPermissionsUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async rbacInitialPermissionsUsedByList( + requestParameters: RbacInitialPermissionsUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.rbacInitialPermissionsUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for rbacPermissionsAssignedByRolesAssign without sending the request + */ + async rbacPermissionsAssignedByRolesAssignRequestOpts( + requestParameters: RbacPermissionsAssignedByRolesAssignRequest, + ): Promise { + if (requestParameters["uuid"] == null) { + throw new runtime.RequiredError( + "uuid", + 'Required parameter "uuid" was null or undefined when calling rbacPermissionsAssignedByRolesAssign().', + ); + } + + if (requestParameters["permissionAssignRequest"] == null) { + throw new runtime.RequiredError( + "permissionAssignRequest", + 'Required parameter "permissionAssignRequest" was null or undefined when calling rbacPermissionsAssignedByRolesAssign().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/rbac/permissions/assigned_by_roles/{uuid}/assign/`; + urlPath = urlPath.replace( + `{${"uuid"}}`, + encodeURIComponent(String(requestParameters["uuid"])), + ); + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: PermissionAssignRequestToJSON(requestParameters["permissionAssignRequest"]), + }; + } + + /** + * Assign permission(s) to role. When `object_pk` is set, the permissions are only assigned to the specific object, otherwise they are assigned globally. + */ + async rbacPermissionsAssignedByRolesAssignRaw( + requestParameters: RbacPermissionsAssignedByRolesAssignRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.rbacPermissionsAssignedByRolesAssignRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + jsonValue.map(PermissionAssignResultFromJSON), + ); + } + + /** + * Assign permission(s) to role. When `object_pk` is set, the permissions are only assigned to the specific object, otherwise they are assigned globally. + */ + async rbacPermissionsAssignedByRolesAssign( + requestParameters: RbacPermissionsAssignedByRolesAssignRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.rbacPermissionsAssignedByRolesAssignRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for rbacPermissionsAssignedByRolesList without sending the request + */ + async rbacPermissionsAssignedByRolesListRequestOpts( + requestParameters: RbacPermissionsAssignedByRolesListRequest, + ): Promise { + if (requestParameters["model"] == null) { + throw new runtime.RequiredError( + "model", + 'Required parameter "model" was null or undefined when calling rbacPermissionsAssignedByRolesList().', + ); + } + + const queryParameters: any = {}; + + if (requestParameters["model"] != null) { + queryParameters["model"] = requestParameters["model"]; + } + + if (requestParameters["objectPk"] != null) { + queryParameters["object_pk"] = requestParameters["objectPk"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/rbac/permissions/assigned_by_roles/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get assigned object permissions for a single object + */ + async rbacPermissionsAssignedByRolesListRaw( + requestParameters: RbacPermissionsAssignedByRolesListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.rbacPermissionsAssignedByRolesListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedRoleAssignedObjectPermissionListFromJSON(jsonValue), + ); + } + + /** + * Get assigned object permissions for a single object + */ + async rbacPermissionsAssignedByRolesList( + requestParameters: RbacPermissionsAssignedByRolesListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.rbacPermissionsAssignedByRolesListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for rbacPermissionsAssignedByRolesUnassignPartialUpdate without sending the request + */ + async rbacPermissionsAssignedByRolesUnassignPartialUpdateRequestOpts( + requestParameters: RbacPermissionsAssignedByRolesUnassignPartialUpdateRequest, + ): Promise { + if (requestParameters["uuid"] == null) { + throw new runtime.RequiredError( + "uuid", + 'Required parameter "uuid" was null or undefined when calling rbacPermissionsAssignedByRolesUnassignPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/rbac/permissions/assigned_by_roles/{uuid}/unassign/`; + urlPath = urlPath.replace( + `{${"uuid"}}`, + encodeURIComponent(String(requestParameters["uuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedPermissionAssignRequestToJSON( + requestParameters["patchedPermissionAssignRequest"], + ), + }; + } + + /** + * Unassign permission(s) to role. When `object_pk` is set, the permissions are only assigned to the specific object, otherwise they are assigned globally. + */ + async rbacPermissionsAssignedByRolesUnassignPartialUpdateRaw( + requestParameters: RbacPermissionsAssignedByRolesUnassignPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.rbacPermissionsAssignedByRolesUnassignPartialUpdateRequestOpts( + requestParameters, + ); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Unassign permission(s) to role. When `object_pk` is set, the permissions are only assigned to the specific object, otherwise they are assigned globally. + */ + async rbacPermissionsAssignedByRolesUnassignPartialUpdate( + requestParameters: RbacPermissionsAssignedByRolesUnassignPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.rbacPermissionsAssignedByRolesUnassignPartialUpdateRaw( + requestParameters, + initOverrides, + ); + } + + /** + * Creates request options for rbacPermissionsList without sending the request + */ + async rbacPermissionsListRequestOpts( + requestParameters: RbacPermissionsListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["codename"] != null) { + queryParameters["codename"] = requestParameters["codename"]; + } + + if (requestParameters["contentTypeAppLabel"] != null) { + queryParameters["content_type__app_label"] = requestParameters["contentTypeAppLabel"]; + } + + if (requestParameters["contentTypeModel"] != null) { + queryParameters["content_type__model"] = requestParameters["contentTypeModel"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["role"] != null) { + queryParameters["role"] = requestParameters["role"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/rbac/permissions/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Read-only list of all permissions, filterable by model and app + */ + async rbacPermissionsListRaw( + requestParameters: RbacPermissionsListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.rbacPermissionsListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedPermissionListFromJSON(jsonValue), + ); + } + + /** + * Read-only list of all permissions, filterable by model and app + */ + async rbacPermissionsList( + requestParameters: RbacPermissionsListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.rbacPermissionsListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for rbacPermissionsRetrieve without sending the request + */ + async rbacPermissionsRetrieveRequestOpts( + requestParameters: RbacPermissionsRetrieveRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling rbacPermissionsRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/rbac/permissions/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Read-only list of all permissions, filterable by model and app + */ + async rbacPermissionsRetrieveRaw( + requestParameters: RbacPermissionsRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.rbacPermissionsRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => PermissionFromJSON(jsonValue)); + } + + /** + * Read-only list of all permissions, filterable by model and app + */ + async rbacPermissionsRetrieve( + requestParameters: RbacPermissionsRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.rbacPermissionsRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for rbacPermissionsRolesList without sending the request + */ + async rbacPermissionsRolesListRequestOpts( + requestParameters: RbacPermissionsRolesListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["uuid"] != null) { + queryParameters["uuid"] = requestParameters["uuid"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/rbac/permissions/roles/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a role\'s assigned object permissions + */ + async rbacPermissionsRolesListRaw( + requestParameters: RbacPermissionsRolesListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.rbacPermissionsRolesListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedExtraRoleObjectPermissionListFromJSON(jsonValue), + ); + } + + /** + * Get a role\'s assigned object permissions + */ + async rbacPermissionsRolesList( + requestParameters: RbacPermissionsRolesListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.rbacPermissionsRolesListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for rbacRolesAddUserCreate without sending the request + */ + async rbacRolesAddUserCreateRequestOpts( + requestParameters: RbacRolesAddUserCreateRequest, + ): Promise { + if (requestParameters["uuid"] == null) { + throw new runtime.RequiredError( + "uuid", + 'Required parameter "uuid" was null or undefined when calling rbacRolesAddUserCreate().', + ); + } + + if (requestParameters["userAccountSerializerForRoleRequest"] == null) { + throw new runtime.RequiredError( + "userAccountSerializerForRoleRequest", + 'Required parameter "userAccountSerializerForRoleRequest" was null or undefined when calling rbacRolesAddUserCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/rbac/roles/{uuid}/add_user/`; + urlPath = urlPath.replace( + `{${"uuid"}}`, + encodeURIComponent(String(requestParameters["uuid"])), + ); + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: UserAccountSerializerForRoleRequestToJSON( + requestParameters["userAccountSerializerForRoleRequest"], + ), + }; + } + + /** + * Add user to role + */ + async rbacRolesAddUserCreateRaw( + requestParameters: RbacRolesAddUserCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.rbacRolesAddUserCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Add user to role + */ + async rbacRolesAddUserCreate( + requestParameters: RbacRolesAddUserCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.rbacRolesAddUserCreateRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for rbacRolesCreate without sending the request + */ + async rbacRolesCreateRequestOpts( + requestParameters: RbacRolesCreateRequest, + ): Promise { + if (requestParameters["roleRequest"] == null) { + throw new runtime.RequiredError( + "roleRequest", + 'Required parameter "roleRequest" was null or undefined when calling rbacRolesCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/rbac/roles/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: RoleRequestToJSON(requestParameters["roleRequest"]), + }; + } + + /** + * Role viewset + */ + async rbacRolesCreateRaw( + requestParameters: RbacRolesCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.rbacRolesCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => RoleFromJSON(jsonValue)); + } + + /** + * Role viewset + */ + async rbacRolesCreate( + requestParameters: RbacRolesCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.rbacRolesCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for rbacRolesDestroy without sending the request + */ + async rbacRolesDestroyRequestOpts( + requestParameters: RbacRolesDestroyRequest, + ): Promise { + if (requestParameters["uuid"] == null) { + throw new runtime.RequiredError( + "uuid", + 'Required parameter "uuid" was null or undefined when calling rbacRolesDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/rbac/roles/{uuid}/`; + urlPath = urlPath.replace( + `{${"uuid"}}`, + encodeURIComponent(String(requestParameters["uuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Role viewset + */ + async rbacRolesDestroyRaw( + requestParameters: RbacRolesDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.rbacRolesDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Role viewset + */ + async rbacRolesDestroy( + requestParameters: RbacRolesDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.rbacRolesDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for rbacRolesList without sending the request + */ + async rbacRolesListRequestOpts( + requestParameters: RbacRolesListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["groups"] != null) { + queryParameters["groups"] = requestParameters["groups"]; + } + + if (requestParameters["inherited"] != null) { + queryParameters["inherited"] = requestParameters["inherited"]; + } + + if (requestParameters["managed"] != null) { + queryParameters["managed"] = requestParameters["managed"]; + } + + if (requestParameters["managedIsnull"] != null) { + queryParameters["managed__isnull"] = requestParameters["managedIsnull"]; + } + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["users"] != null) { + queryParameters["users"] = requestParameters["users"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/rbac/roles/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Role viewset + */ + async rbacRolesListRaw( + requestParameters: RbacRolesListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.rbacRolesListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedRoleListFromJSON(jsonValue), + ); + } + + /** + * Role viewset + */ + async rbacRolesList( + requestParameters: RbacRolesListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.rbacRolesListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for rbacRolesPartialUpdate without sending the request + */ + async rbacRolesPartialUpdateRequestOpts( + requestParameters: RbacRolesPartialUpdateRequest, + ): Promise { + if (requestParameters["uuid"] == null) { + throw new runtime.RequiredError( + "uuid", + 'Required parameter "uuid" was null or undefined when calling rbacRolesPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/rbac/roles/{uuid}/`; + urlPath = urlPath.replace( + `{${"uuid"}}`, + encodeURIComponent(String(requestParameters["uuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedRoleRequestToJSON(requestParameters["patchedRoleRequest"]), + }; + } + + /** + * Role viewset + */ + async rbacRolesPartialUpdateRaw( + requestParameters: RbacRolesPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.rbacRolesPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => RoleFromJSON(jsonValue)); + } + + /** + * Role viewset + */ + async rbacRolesPartialUpdate( + requestParameters: RbacRolesPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.rbacRolesPartialUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for rbacRolesRemoveUserCreate without sending the request + */ + async rbacRolesRemoveUserCreateRequestOpts( + requestParameters: RbacRolesRemoveUserCreateRequest, + ): Promise { + if (requestParameters["uuid"] == null) { + throw new runtime.RequiredError( + "uuid", + 'Required parameter "uuid" was null or undefined when calling rbacRolesRemoveUserCreate().', + ); + } + + if (requestParameters["userAccountSerializerForRoleRequest"] == null) { + throw new runtime.RequiredError( + "userAccountSerializerForRoleRequest", + 'Required parameter "userAccountSerializerForRoleRequest" was null or undefined when calling rbacRolesRemoveUserCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/rbac/roles/{uuid}/remove_user/`; + urlPath = urlPath.replace( + `{${"uuid"}}`, + encodeURIComponent(String(requestParameters["uuid"])), + ); + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: UserAccountSerializerForRoleRequestToJSON( + requestParameters["userAccountSerializerForRoleRequest"], + ), + }; + } + + /** + * Remove user from role + */ + async rbacRolesRemoveUserCreateRaw( + requestParameters: RbacRolesRemoveUserCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.rbacRolesRemoveUserCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Remove user from role + */ + async rbacRolesRemoveUserCreate( + requestParameters: RbacRolesRemoveUserCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.rbacRolesRemoveUserCreateRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for rbacRolesRetrieve without sending the request + */ + async rbacRolesRetrieveRequestOpts( + requestParameters: RbacRolesRetrieveRequest, + ): Promise { + if (requestParameters["uuid"] == null) { + throw new runtime.RequiredError( + "uuid", + 'Required parameter "uuid" was null or undefined when calling rbacRolesRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/rbac/roles/{uuid}/`; + urlPath = urlPath.replace( + `{${"uuid"}}`, + encodeURIComponent(String(requestParameters["uuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Role viewset + */ + async rbacRolesRetrieveRaw( + requestParameters: RbacRolesRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.rbacRolesRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => RoleFromJSON(jsonValue)); + } + + /** + * Role viewset + */ + async rbacRolesRetrieve( + requestParameters: RbacRolesRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.rbacRolesRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for rbacRolesUpdate without sending the request + */ + async rbacRolesUpdateRequestOpts( + requestParameters: RbacRolesUpdateRequest, + ): Promise { + if (requestParameters["uuid"] == null) { + throw new runtime.RequiredError( + "uuid", + 'Required parameter "uuid" was null or undefined when calling rbacRolesUpdate().', + ); + } + + if (requestParameters["roleRequest"] == null) { + throw new runtime.RequiredError( + "roleRequest", + 'Required parameter "roleRequest" was null or undefined when calling rbacRolesUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/rbac/roles/{uuid}/`; + urlPath = urlPath.replace( + `{${"uuid"}}`, + encodeURIComponent(String(requestParameters["uuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: RoleRequestToJSON(requestParameters["roleRequest"]), + }; + } + + /** + * Role viewset + */ + async rbacRolesUpdateRaw( + requestParameters: RbacRolesUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.rbacRolesUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => RoleFromJSON(jsonValue)); + } + + /** + * Role viewset + */ + async rbacRolesUpdate( + requestParameters: RbacRolesUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.rbacRolesUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for rbacRolesUsedByList without sending the request + */ + async rbacRolesUsedByListRequestOpts( + requestParameters: RbacRolesUsedByListRequest, + ): Promise { + if (requestParameters["uuid"] == null) { + throw new runtime.RequiredError( + "uuid", + 'Required parameter "uuid" was null or undefined when calling rbacRolesUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/rbac/roles/{uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"uuid"}}`, + encodeURIComponent(String(requestParameters["uuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async rbacRolesUsedByListRaw( + requestParameters: RbacRolesUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.rbacRolesUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async rbacRolesUsedByList( + requestParameters: RbacRolesUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.rbacRolesUsedByListRaw(requestParameters, initOverrides); + return await response.value(); + } +} diff --git a/packages/client-ts/src/apis/ReportsApi.ts b/packages/client-ts/src/apis/ReportsApi.ts new file mode 100644 index 0000000000..6bbebf572b --- /dev/null +++ b/packages/client-ts/src/apis/ReportsApi.ts @@ -0,0 +1,223 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { DataExport, PaginatedDataExportList } from "../models/index"; +import { DataExportFromJSON, PaginatedDataExportListFromJSON } from "../models/index"; +import * as runtime from "../runtime"; + +export interface ReportsExportsDestroyRequest { + id: string; +} + +export interface ReportsExportsListRequest { + ordering?: string; + page?: number; + pageSize?: number; + search?: string; +} + +export interface ReportsExportsRetrieveRequest { + id: string; +} + +/** + * + */ +export class ReportsApi extends runtime.BaseAPI { + /** + * Creates request options for reportsExportsDestroy without sending the request + */ + async reportsExportsDestroyRequestOpts( + requestParameters: ReportsExportsDestroyRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling reportsExportsDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/reports/exports/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + */ + async reportsExportsDestroyRaw( + requestParameters: ReportsExportsDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.reportsExportsDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + */ + async reportsExportsDestroy( + requestParameters: ReportsExportsDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.reportsExportsDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for reportsExportsList without sending the request + */ + async reportsExportsListRequestOpts( + requestParameters: ReportsExportsListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/reports/exports/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + */ + async reportsExportsListRaw( + requestParameters: ReportsExportsListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.reportsExportsListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedDataExportListFromJSON(jsonValue), + ); + } + + /** + */ + async reportsExportsList( + requestParameters: ReportsExportsListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.reportsExportsListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for reportsExportsRetrieve without sending the request + */ + async reportsExportsRetrieveRequestOpts( + requestParameters: ReportsExportsRetrieveRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling reportsExportsRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/reports/exports/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + */ + async reportsExportsRetrieveRaw( + requestParameters: ReportsExportsRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.reportsExportsRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => DataExportFromJSON(jsonValue)); + } + + /** + */ + async reportsExportsRetrieve( + requestParameters: ReportsExportsRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.reportsExportsRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } +} diff --git a/packages/client-ts/src/apis/RootApi.ts b/packages/client-ts/src/apis/RootApi.ts new file mode 100644 index 0000000000..ed8437e5f0 --- /dev/null +++ b/packages/client-ts/src/apis/RootApi.ts @@ -0,0 +1,71 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Config } from "../models/index"; +import { ConfigFromJSON } from "../models/index"; +import * as runtime from "../runtime"; + +/** + * + */ +export class RootApi extends runtime.BaseAPI { + /** + * Creates request options for rootConfigRetrieve without sending the request + */ + async rootConfigRetrieveRequestOpts(): Promise { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/root/config/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Retrieve public configuration options + */ + async rootConfigRetrieveRaw( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.rootConfigRetrieveRequestOpts(); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => ConfigFromJSON(jsonValue)); + } + + /** + * Retrieve public configuration options + */ + async rootConfigRetrieve( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.rootConfigRetrieveRaw(initOverrides); + return await response.value(); + } +} diff --git a/packages/client-ts/src/apis/SchemaApi.ts b/packages/client-ts/src/apis/SchemaApi.ts new file mode 100644 index 0000000000..a6d668e8e8 --- /dev/null +++ b/packages/client-ts/src/apis/SchemaApi.ts @@ -0,0 +1,87 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { FormatEnum, LangEnum } from "../models/index"; +import * as runtime from "../runtime"; + +export interface SchemaRetrieveRequest { + format?: FormatEnum; + lang?: LangEnum; +} + +/** + * + */ +export class SchemaApi extends runtime.BaseAPI { + /** + * Creates request options for schemaRetrieve without sending the request + */ + async schemaRetrieveRequestOpts( + requestParameters: SchemaRetrieveRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["format"] != null) { + queryParameters["format"] = requestParameters["format"]; + } + + if (requestParameters["lang"] != null) { + queryParameters["lang"] = requestParameters["lang"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/schema/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * OpenApi3 schema for this API. Format can be selected via content negotiation. - YAML: application/vnd.oai.openapi - JSON: application/vnd.oai.openapi+json + */ + async schemaRetrieveRaw( + requestParameters: SchemaRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.schemaRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response); + } + + /** + * OpenApi3 schema for this API. Format can be selected via content negotiation. - YAML: application/vnd.oai.openapi - JSON: application/vnd.oai.openapi+json + */ + async schemaRetrieve( + requestParameters: SchemaRetrieveRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise<{ [key: string]: any }> { + const response = await this.schemaRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } +} diff --git a/packages/client-ts/src/apis/SourcesApi.ts b/packages/client-ts/src/apis/SourcesApi.ts new file mode 100644 index 0000000000..79bb3e7ca4 --- /dev/null +++ b/packages/client-ts/src/apis/SourcesApi.ts @@ -0,0 +1,13616 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { + BindingTypeEnum, + DigestAlgorithmEnum, + GroupKerberosSourceConnection, + GroupKerberosSourceConnectionRequest, + GroupLDAPSourceConnection, + GroupLDAPSourceConnectionRequest, + GroupMatchingModeEnum, + GroupOAuthSourceConnection, + GroupOAuthSourceConnectionRequest, + GroupPlexSourceConnection, + GroupPlexSourceConnectionRequest, + GroupSAMLSourceConnection, + GroupSAMLSourceConnectionRequest, + GroupSourceConnection, + GroupSourceConnectionRequest, + GroupTelegramSourceConnection, + GroupTelegramSourceConnectionRequest, + KadminTypeEnum, + KerberosSource, + KerberosSourceRequest, + LDAPDebug, + LDAPSource, + LDAPSourceRequest, + OAuthSource, + OAuthSourceRequest, + PaginatedGroupKerberosSourceConnectionList, + PaginatedGroupLDAPSourceConnectionList, + PaginatedGroupOAuthSourceConnectionList, + PaginatedGroupPlexSourceConnectionList, + PaginatedGroupSAMLSourceConnectionList, + PaginatedGroupSourceConnectionList, + PaginatedGroupTelegramSourceConnectionList, + PaginatedKerberosSourceList, + PaginatedLDAPSourceList, + PaginatedOAuthSourceList, + PaginatedPlexSourceList, + PaginatedSAMLSourceList, + PaginatedSCIMSourceGroupList, + PaginatedSCIMSourceList, + PaginatedSCIMSourceUserList, + PaginatedSourceList, + PaginatedTelegramSourceList, + PaginatedUserKerberosSourceConnectionList, + PaginatedUserLDAPSourceConnectionList, + PaginatedUserOAuthSourceConnectionList, + PaginatedUserPlexSourceConnectionList, + PaginatedUserSAMLSourceConnectionList, + PaginatedUserSourceConnectionList, + PaginatedUserTelegramSourceConnectionList, + PatchedGroupKerberosSourceConnectionRequest, + PatchedGroupLDAPSourceConnectionRequest, + PatchedGroupOAuthSourceConnectionRequest, + PatchedGroupPlexSourceConnectionRequest, + PatchedGroupSAMLSourceConnectionRequest, + PatchedGroupSourceConnectionRequest, + PatchedGroupTelegramSourceConnectionRequest, + PatchedKerberosSourceRequest, + PatchedLDAPSourceRequest, + PatchedOAuthSourceRequest, + PatchedPlexSourceRequest, + PatchedSAMLSourceRequest, + PatchedSCIMSourceGroupRequest, + PatchedSCIMSourceRequest, + PatchedSCIMSourceUserRequest, + PatchedTelegramSourceRequest, + PatchedUserKerberosSourceConnectionRequest, + PatchedUserLDAPSourceConnectionRequest, + PatchedUserOAuthSourceConnectionRequest, + PatchedUserPlexSourceConnectionRequest, + PatchedUserSAMLSourceConnectionRequest, + PatchedUserSourceConnectionRequest, + PatchedUserTelegramSourceConnectionRequest, + PlexSource, + PlexSourceRequest, + PlexTokenRedeemRequest, + PolicyEngineMode, + RedirectChallenge, + SAMLMetadata, + SAMLNameIDPolicyEnum, + SAMLSource, + SAMLSourceRequest, + SCIMSource, + SCIMSourceGroup, + SCIMSourceGroupRequest, + SCIMSourceRequest, + SCIMSourceUser, + SCIMSourceUserRequest, + SignatureAlgorithmEnum, + Source, + SourceType, + SyncStatus, + TelegramAuthRequest, + TelegramSource, + TelegramSourceRequest, + TypeCreate, + UsedBy, + UserKerberosSourceConnection, + UserKerberosSourceConnectionRequest, + UserLDAPSourceConnection, + UserLDAPSourceConnectionRequest, + UserMatchingModeEnum, + UserOAuthSourceConnection, + UserOAuthSourceConnectionRequest, + UserPlexSourceConnection, + UserPlexSourceConnectionRequest, + UserSAMLSourceConnection, + UserSAMLSourceConnectionRequest, + UserSetting, + UserSourceConnection, + UserSourceConnectionRequest, + UserTelegramSourceConnection, + UserTelegramSourceConnectionRequest, +} from "../models/index"; +import { + GroupKerberosSourceConnectionFromJSON, + GroupKerberosSourceConnectionRequestToJSON, + GroupLDAPSourceConnectionFromJSON, + GroupLDAPSourceConnectionRequestToJSON, + GroupOAuthSourceConnectionFromJSON, + GroupOAuthSourceConnectionRequestToJSON, + GroupPlexSourceConnectionFromJSON, + GroupPlexSourceConnectionRequestToJSON, + GroupSAMLSourceConnectionFromJSON, + GroupSAMLSourceConnectionRequestToJSON, + GroupSourceConnectionFromJSON, + GroupSourceConnectionRequestToJSON, + GroupTelegramSourceConnectionFromJSON, + GroupTelegramSourceConnectionRequestToJSON, + KerberosSourceFromJSON, + KerberosSourceRequestToJSON, + LDAPDebugFromJSON, + LDAPSourceFromJSON, + LDAPSourceRequestToJSON, + OAuthSourceFromJSON, + OAuthSourceRequestToJSON, + PaginatedGroupKerberosSourceConnectionListFromJSON, + PaginatedGroupLDAPSourceConnectionListFromJSON, + PaginatedGroupOAuthSourceConnectionListFromJSON, + PaginatedGroupPlexSourceConnectionListFromJSON, + PaginatedGroupSAMLSourceConnectionListFromJSON, + PaginatedGroupSourceConnectionListFromJSON, + PaginatedGroupTelegramSourceConnectionListFromJSON, + PaginatedKerberosSourceListFromJSON, + PaginatedLDAPSourceListFromJSON, + PaginatedOAuthSourceListFromJSON, + PaginatedPlexSourceListFromJSON, + PaginatedSAMLSourceListFromJSON, + PaginatedSCIMSourceGroupListFromJSON, + PaginatedSCIMSourceListFromJSON, + PaginatedSCIMSourceUserListFromJSON, + PaginatedSourceListFromJSON, + PaginatedTelegramSourceListFromJSON, + PaginatedUserKerberosSourceConnectionListFromJSON, + PaginatedUserLDAPSourceConnectionListFromJSON, + PaginatedUserOAuthSourceConnectionListFromJSON, + PaginatedUserPlexSourceConnectionListFromJSON, + PaginatedUserSAMLSourceConnectionListFromJSON, + PaginatedUserSourceConnectionListFromJSON, + PaginatedUserTelegramSourceConnectionListFromJSON, + PatchedGroupKerberosSourceConnectionRequestToJSON, + PatchedGroupLDAPSourceConnectionRequestToJSON, + PatchedGroupOAuthSourceConnectionRequestToJSON, + PatchedGroupPlexSourceConnectionRequestToJSON, + PatchedGroupSAMLSourceConnectionRequestToJSON, + PatchedGroupSourceConnectionRequestToJSON, + PatchedGroupTelegramSourceConnectionRequestToJSON, + PatchedKerberosSourceRequestToJSON, + PatchedLDAPSourceRequestToJSON, + PatchedOAuthSourceRequestToJSON, + PatchedPlexSourceRequestToJSON, + PatchedSAMLSourceRequestToJSON, + PatchedSCIMSourceGroupRequestToJSON, + PatchedSCIMSourceRequestToJSON, + PatchedSCIMSourceUserRequestToJSON, + PatchedTelegramSourceRequestToJSON, + PatchedUserKerberosSourceConnectionRequestToJSON, + PatchedUserLDAPSourceConnectionRequestToJSON, + PatchedUserOAuthSourceConnectionRequestToJSON, + PatchedUserPlexSourceConnectionRequestToJSON, + PatchedUserSAMLSourceConnectionRequestToJSON, + PatchedUserSourceConnectionRequestToJSON, + PatchedUserTelegramSourceConnectionRequestToJSON, + PlexSourceFromJSON, + PlexSourceRequestToJSON, + PlexTokenRedeemRequestToJSON, + RedirectChallengeFromJSON, + SAMLMetadataFromJSON, + SAMLSourceFromJSON, + SAMLSourceRequestToJSON, + SCIMSourceFromJSON, + SCIMSourceGroupFromJSON, + SCIMSourceGroupRequestToJSON, + SCIMSourceRequestToJSON, + SCIMSourceUserFromJSON, + SCIMSourceUserRequestToJSON, + SourceFromJSON, + SourceTypeFromJSON, + SyncStatusFromJSON, + TelegramAuthRequestToJSON, + TelegramSourceFromJSON, + TelegramSourceRequestToJSON, + TypeCreateFromJSON, + UsedByFromJSON, + UserKerberosSourceConnectionFromJSON, + UserKerberosSourceConnectionRequestToJSON, + UserLDAPSourceConnectionFromJSON, + UserLDAPSourceConnectionRequestToJSON, + UserOAuthSourceConnectionFromJSON, + UserOAuthSourceConnectionRequestToJSON, + UserPlexSourceConnectionFromJSON, + UserPlexSourceConnectionRequestToJSON, + UserSAMLSourceConnectionFromJSON, + UserSAMLSourceConnectionRequestToJSON, + UserSettingFromJSON, + UserSourceConnectionFromJSON, + UserSourceConnectionRequestToJSON, + UserTelegramSourceConnectionFromJSON, + UserTelegramSourceConnectionRequestToJSON, +} from "../models/index"; +import * as runtime from "../runtime"; + +export interface SourcesAllDestroyRequest { + slug: string; +} + +export interface SourcesAllListRequest { + managed?: string; + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + pbmUuid?: string; + search?: string; + slug?: string; +} + +export interface SourcesAllRetrieveRequest { + slug: string; +} + +export interface SourcesAllUsedByListRequest { + slug: string; +} + +export interface SourcesGroupConnectionsAllDestroyRequest { + id: number; +} + +export interface SourcesGroupConnectionsAllListRequest { + group?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; + sourceSlug?: string; +} + +export interface SourcesGroupConnectionsAllPartialUpdateRequest { + id: number; + patchedGroupSourceConnectionRequest?: PatchedGroupSourceConnectionRequest; +} + +export interface SourcesGroupConnectionsAllRetrieveRequest { + id: number; +} + +export interface SourcesGroupConnectionsAllUpdateRequest { + id: number; + groupSourceConnectionRequest: GroupSourceConnectionRequest; +} + +export interface SourcesGroupConnectionsAllUsedByListRequest { + id: number; +} + +export interface SourcesGroupConnectionsKerberosCreateRequest { + groupKerberosSourceConnectionRequest: GroupKerberosSourceConnectionRequest; +} + +export interface SourcesGroupConnectionsKerberosDestroyRequest { + id: number; +} + +export interface SourcesGroupConnectionsKerberosListRequest { + group?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; + sourceSlug?: string; +} + +export interface SourcesGroupConnectionsKerberosPartialUpdateRequest { + id: number; + patchedGroupKerberosSourceConnectionRequest?: PatchedGroupKerberosSourceConnectionRequest; +} + +export interface SourcesGroupConnectionsKerberosRetrieveRequest { + id: number; +} + +export interface SourcesGroupConnectionsKerberosUpdateRequest { + id: number; + groupKerberosSourceConnectionRequest: GroupKerberosSourceConnectionRequest; +} + +export interface SourcesGroupConnectionsKerberosUsedByListRequest { + id: number; +} + +export interface SourcesGroupConnectionsLdapCreateRequest { + groupLDAPSourceConnectionRequest: GroupLDAPSourceConnectionRequest; +} + +export interface SourcesGroupConnectionsLdapDestroyRequest { + id: number; +} + +export interface SourcesGroupConnectionsLdapListRequest { + group?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; + sourceSlug?: string; +} + +export interface SourcesGroupConnectionsLdapPartialUpdateRequest { + id: number; + patchedGroupLDAPSourceConnectionRequest?: PatchedGroupLDAPSourceConnectionRequest; +} + +export interface SourcesGroupConnectionsLdapRetrieveRequest { + id: number; +} + +export interface SourcesGroupConnectionsLdapUpdateRequest { + id: number; + groupLDAPSourceConnectionRequest: GroupLDAPSourceConnectionRequest; +} + +export interface SourcesGroupConnectionsLdapUsedByListRequest { + id: number; +} + +export interface SourcesGroupConnectionsOauthCreateRequest { + groupOAuthSourceConnectionRequest: GroupOAuthSourceConnectionRequest; +} + +export interface SourcesGroupConnectionsOauthDestroyRequest { + id: number; +} + +export interface SourcesGroupConnectionsOauthListRequest { + group?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; + sourceSlug?: string; +} + +export interface SourcesGroupConnectionsOauthPartialUpdateRequest { + id: number; + patchedGroupOAuthSourceConnectionRequest?: PatchedGroupOAuthSourceConnectionRequest; +} + +export interface SourcesGroupConnectionsOauthRetrieveRequest { + id: number; +} + +export interface SourcesGroupConnectionsOauthUpdateRequest { + id: number; + groupOAuthSourceConnectionRequest: GroupOAuthSourceConnectionRequest; +} + +export interface SourcesGroupConnectionsOauthUsedByListRequest { + id: number; +} + +export interface SourcesGroupConnectionsPlexCreateRequest { + groupPlexSourceConnectionRequest: GroupPlexSourceConnectionRequest; +} + +export interface SourcesGroupConnectionsPlexDestroyRequest { + id: number; +} + +export interface SourcesGroupConnectionsPlexListRequest { + group?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; + sourceSlug?: string; +} + +export interface SourcesGroupConnectionsPlexPartialUpdateRequest { + id: number; + patchedGroupPlexSourceConnectionRequest?: PatchedGroupPlexSourceConnectionRequest; +} + +export interface SourcesGroupConnectionsPlexRetrieveRequest { + id: number; +} + +export interface SourcesGroupConnectionsPlexUpdateRequest { + id: number; + groupPlexSourceConnectionRequest: GroupPlexSourceConnectionRequest; +} + +export interface SourcesGroupConnectionsPlexUsedByListRequest { + id: number; +} + +export interface SourcesGroupConnectionsSamlCreateRequest { + groupSAMLSourceConnectionRequest: GroupSAMLSourceConnectionRequest; +} + +export interface SourcesGroupConnectionsSamlDestroyRequest { + id: number; +} + +export interface SourcesGroupConnectionsSamlListRequest { + group?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; + sourceSlug?: string; +} + +export interface SourcesGroupConnectionsSamlPartialUpdateRequest { + id: number; + patchedGroupSAMLSourceConnectionRequest?: PatchedGroupSAMLSourceConnectionRequest; +} + +export interface SourcesGroupConnectionsSamlRetrieveRequest { + id: number; +} + +export interface SourcesGroupConnectionsSamlUpdateRequest { + id: number; + groupSAMLSourceConnectionRequest: GroupSAMLSourceConnectionRequest; +} + +export interface SourcesGroupConnectionsSamlUsedByListRequest { + id: number; +} + +export interface SourcesGroupConnectionsTelegramCreateRequest { + groupTelegramSourceConnectionRequest: GroupTelegramSourceConnectionRequest; +} + +export interface SourcesGroupConnectionsTelegramDestroyRequest { + id: number; +} + +export interface SourcesGroupConnectionsTelegramListRequest { + group?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; + sourceSlug?: string; +} + +export interface SourcesGroupConnectionsTelegramPartialUpdateRequest { + id: number; + patchedGroupTelegramSourceConnectionRequest?: PatchedGroupTelegramSourceConnectionRequest; +} + +export interface SourcesGroupConnectionsTelegramRetrieveRequest { + id: number; +} + +export interface SourcesGroupConnectionsTelegramUpdateRequest { + id: number; + groupTelegramSourceConnectionRequest: GroupTelegramSourceConnectionRequest; +} + +export interface SourcesGroupConnectionsTelegramUsedByListRequest { + id: number; +} + +export interface SourcesKerberosCreateRequest { + kerberosSourceRequest: KerberosSourceRequest; +} + +export interface SourcesKerberosDestroyRequest { + slug: string; +} + +export interface SourcesKerberosListRequest { + enabled?: boolean; + kadminType?: KadminTypeEnum; + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + passwordLoginUpdateInternalPassword?: boolean; + pbmUuid?: string; + realm?: string; + search?: string; + slug?: string; + spnegoServerName?: string; + syncPrincipal?: string; + syncUsers?: boolean; + syncUsersPassword?: boolean; +} + +export interface SourcesKerberosPartialUpdateRequest { + slug: string; + patchedKerberosSourceRequest?: PatchedKerberosSourceRequest; +} + +export interface SourcesKerberosRetrieveRequest { + slug: string; +} + +export interface SourcesKerberosSyncStatusRetrieveRequest { + slug: string; +} + +export interface SourcesKerberosUpdateRequest { + slug: string; + kerberosSourceRequest: KerberosSourceRequest; +} + +export interface SourcesKerberosUsedByListRequest { + slug: string; +} + +export interface SourcesLdapCreateRequest { + lDAPSourceRequest: LDAPSourceRequest; +} + +export interface SourcesLdapDebugRetrieveRequest { + slug: string; +} + +export interface SourcesLdapDestroyRequest { + slug: string; +} + +export interface SourcesLdapListRequest { + additionalGroupDn?: string; + additionalUserDn?: string; + baseDn?: string; + bindCn?: string; + clientCertificate?: string; + deleteNotFoundObjects?: boolean; + enabled?: boolean; + groupMembershipField?: string; + groupObjectFilter?: string; + groupPropertyMappings?: Array; + lookupGroupsFromUser?: boolean; + name?: string; + objectUniquenessField?: string; + ordering?: string; + page?: number; + pageSize?: number; + passwordLoginUpdateInternalPassword?: boolean; + pbmUuid?: string; + peerCertificate?: string; + search?: string; + serverUri?: string; + slug?: string; + sni?: boolean; + startTls?: boolean; + syncGroups?: boolean; + syncParentGroup?: string; + syncUsers?: boolean; + syncUsersPassword?: boolean; + userMembershipAttribute?: string; + userObjectFilter?: string; + userPropertyMappings?: Array; +} + +export interface SourcesLdapPartialUpdateRequest { + slug: string; + patchedLDAPSourceRequest?: PatchedLDAPSourceRequest; +} + +export interface SourcesLdapRetrieveRequest { + slug: string; +} + +export interface SourcesLdapSyncStatusRetrieveRequest { + slug: string; +} + +export interface SourcesLdapUpdateRequest { + slug: string; + lDAPSourceRequest: LDAPSourceRequest; +} + +export interface SourcesLdapUsedByListRequest { + slug: string; +} + +export interface SourcesOauthCreateRequest { + oAuthSourceRequest: OAuthSourceRequest; +} + +export interface SourcesOauthDestroyRequest { + slug: string; +} + +export interface SourcesOauthListRequest { + accessTokenUrl?: string; + additionalScopes?: string; + authenticationFlow?: string; + authorizationUrl?: string; + consumerKey?: string; + enabled?: boolean; + enrollmentFlow?: string; + groupMatchingMode?: GroupMatchingModeEnum; + hasJwks?: boolean; + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + pbmUuid?: string; + policyEngineMode?: PolicyEngineMode; + profileUrl?: string; + providerType?: string; + requestTokenUrl?: string; + search?: string; + slug?: string; + userMatchingMode?: UserMatchingModeEnum; +} + +export interface SourcesOauthPartialUpdateRequest { + slug: string; + patchedOAuthSourceRequest?: PatchedOAuthSourceRequest; +} + +export interface SourcesOauthRetrieveRequest { + slug: string; +} + +export interface SourcesOauthSourceTypesListRequest { + name?: string; +} + +export interface SourcesOauthUpdateRequest { + slug: string; + oAuthSourceRequest: OAuthSourceRequest; +} + +export interface SourcesOauthUsedByListRequest { + slug: string; +} + +export interface SourcesPlexCreateRequest { + plexSourceRequest: PlexSourceRequest; +} + +export interface SourcesPlexDestroyRequest { + slug: string; +} + +export interface SourcesPlexListRequest { + allowFriends?: boolean; + authenticationFlow?: string; + clientId?: string; + enabled?: boolean; + enrollmentFlow?: string; + groupMatchingMode?: GroupMatchingModeEnum; + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + pbmUuid?: string; + policyEngineMode?: PolicyEngineMode; + search?: string; + slug?: string; + userMatchingMode?: UserMatchingModeEnum; +} + +export interface SourcesPlexPartialUpdateRequest { + slug: string; + patchedPlexSourceRequest?: PatchedPlexSourceRequest; +} + +export interface SourcesPlexRedeemTokenAuthenticatedCreateRequest { + plexTokenRedeemRequest: PlexTokenRedeemRequest; + slug?: string; +} + +export interface SourcesPlexRedeemTokenCreateRequest { + plexTokenRedeemRequest: PlexTokenRedeemRequest; + slug?: string; +} + +export interface SourcesPlexRetrieveRequest { + slug: string; +} + +export interface SourcesPlexUpdateRequest { + slug: string; + plexSourceRequest: PlexSourceRequest; +} + +export interface SourcesPlexUsedByListRequest { + slug: string; +} + +export interface SourcesSamlCreateRequest { + sAMLSourceRequest: SAMLSourceRequest; +} + +export interface SourcesSamlDestroyRequest { + slug: string; +} + +export interface SourcesSamlListRequest { + allowIdpInitiated?: boolean; + authenticationFlow?: string; + bindingType?: BindingTypeEnum; + digestAlgorithm?: DigestAlgorithmEnum; + enabled?: boolean; + enrollmentFlow?: string; + forceAuthn?: boolean; + issuer?: string; + managed?: string; + name?: string; + nameIdPolicy?: SAMLNameIDPolicyEnum; + ordering?: string; + page?: number; + pageSize?: number; + pbmUuid?: string; + policyEngineMode?: PolicyEngineMode; + preAuthenticationFlow?: string; + search?: string; + signatureAlgorithm?: SignatureAlgorithmEnum; + signedAssertion?: boolean; + signedResponse?: boolean; + signingKp?: string; + sloUrl?: string; + slug?: string; + ssoUrl?: string; + temporaryUserDeleteAfter?: string; + userMatchingMode?: UserMatchingModeEnum; + verificationKp?: string; +} + +export interface SourcesSamlMetadataRetrieveRequest { + slug: string; +} + +export interface SourcesSamlPartialUpdateRequest { + slug: string; + patchedSAMLSourceRequest?: PatchedSAMLSourceRequest; +} + +export interface SourcesSamlRetrieveRequest { + slug: string; +} + +export interface SourcesSamlUpdateRequest { + slug: string; + sAMLSourceRequest: SAMLSourceRequest; +} + +export interface SourcesSamlUsedByListRequest { + slug: string; +} + +export interface SourcesScimCreateRequest { + sCIMSourceRequest: SCIMSourceRequest; +} + +export interface SourcesScimDestroyRequest { + slug: string; +} + +export interface SourcesScimGroupsCreateRequest { + sCIMSourceGroupRequest: SCIMSourceGroupRequest; +} + +export interface SourcesScimGroupsDestroyRequest { + id: string; +} + +export interface SourcesScimGroupsListRequest { + groupGroupUuid?: string; + groupName?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; + sourceSlug?: string; +} + +export interface SourcesScimGroupsPartialUpdateRequest { + id: string; + patchedSCIMSourceGroupRequest?: PatchedSCIMSourceGroupRequest; +} + +export interface SourcesScimGroupsRetrieveRequest { + id: string; +} + +export interface SourcesScimGroupsUpdateRequest { + id: string; + sCIMSourceGroupRequest: SCIMSourceGroupRequest; +} + +export interface SourcesScimGroupsUsedByListRequest { + id: string; +} + +export interface SourcesScimListRequest { + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + pbmUuid?: string; + search?: string; + slug?: string; +} + +export interface SourcesScimPartialUpdateRequest { + slug: string; + patchedSCIMSourceRequest?: PatchedSCIMSourceRequest; +} + +export interface SourcesScimRetrieveRequest { + slug: string; +} + +export interface SourcesScimUpdateRequest { + slug: string; + sCIMSourceRequest: SCIMSourceRequest; +} + +export interface SourcesScimUsedByListRequest { + slug: string; +} + +export interface SourcesScimUsersCreateRequest { + sCIMSourceUserRequest: SCIMSourceUserRequest; +} + +export interface SourcesScimUsersDestroyRequest { + id: string; +} + +export interface SourcesScimUsersListRequest { + ordering?: string; + page?: number; + pageSize?: number; + search?: string; + sourceSlug?: string; + userId?: number; + userUsername?: string; +} + +export interface SourcesScimUsersPartialUpdateRequest { + id: string; + patchedSCIMSourceUserRequest?: PatchedSCIMSourceUserRequest; +} + +export interface SourcesScimUsersRetrieveRequest { + id: string; +} + +export interface SourcesScimUsersUpdateRequest { + id: string; + sCIMSourceUserRequest: SCIMSourceUserRequest; +} + +export interface SourcesScimUsersUsedByListRequest { + id: string; +} + +export interface SourcesTelegramConnectUserCreateRequest { + slug: string; + telegramAuthRequest: TelegramAuthRequest; +} + +export interface SourcesTelegramCreateRequest { + telegramSourceRequest: TelegramSourceRequest; +} + +export interface SourcesTelegramDestroyRequest { + slug: string; +} + +export interface SourcesTelegramListRequest { + authenticationFlow?: string; + botUsername?: string; + enabled?: boolean; + enrollmentFlow?: string; + groupMatchingMode?: GroupMatchingModeEnum; + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + pbmUuid?: string; + policyEngineMode?: PolicyEngineMode; + requestMessageAccess?: boolean; + search?: string; + slug?: string; + userMatchingMode?: UserMatchingModeEnum; +} + +export interface SourcesTelegramPartialUpdateRequest { + slug: string; + patchedTelegramSourceRequest?: PatchedTelegramSourceRequest; +} + +export interface SourcesTelegramRetrieveRequest { + slug: string; +} + +export interface SourcesTelegramUpdateRequest { + slug: string; + telegramSourceRequest: TelegramSourceRequest; +} + +export interface SourcesTelegramUsedByListRequest { + slug: string; +} + +export interface SourcesUserConnectionsAllDestroyRequest { + id: number; +} + +export interface SourcesUserConnectionsAllListRequest { + ordering?: string; + page?: number; + pageSize?: number; + search?: string; + sourceSlug?: string; + user?: number; +} + +export interface SourcesUserConnectionsAllPartialUpdateRequest { + id: number; + patchedUserSourceConnectionRequest?: PatchedUserSourceConnectionRequest; +} + +export interface SourcesUserConnectionsAllRetrieveRequest { + id: number; +} + +export interface SourcesUserConnectionsAllUpdateRequest { + id: number; + userSourceConnectionRequest: UserSourceConnectionRequest; +} + +export interface SourcesUserConnectionsAllUsedByListRequest { + id: number; +} + +export interface SourcesUserConnectionsKerberosCreateRequest { + userKerberosSourceConnectionRequest: UserKerberosSourceConnectionRequest; +} + +export interface SourcesUserConnectionsKerberosDestroyRequest { + id: number; +} + +export interface SourcesUserConnectionsKerberosListRequest { + ordering?: string; + page?: number; + pageSize?: number; + search?: string; + sourceSlug?: string; + user?: number; +} + +export interface SourcesUserConnectionsKerberosPartialUpdateRequest { + id: number; + patchedUserKerberosSourceConnectionRequest?: PatchedUserKerberosSourceConnectionRequest; +} + +export interface SourcesUserConnectionsKerberosRetrieveRequest { + id: number; +} + +export interface SourcesUserConnectionsKerberosUpdateRequest { + id: number; + userKerberosSourceConnectionRequest: UserKerberosSourceConnectionRequest; +} + +export interface SourcesUserConnectionsKerberosUsedByListRequest { + id: number; +} + +export interface SourcesUserConnectionsLdapCreateRequest { + userLDAPSourceConnectionRequest: UserLDAPSourceConnectionRequest; +} + +export interface SourcesUserConnectionsLdapDestroyRequest { + id: number; +} + +export interface SourcesUserConnectionsLdapListRequest { + ordering?: string; + page?: number; + pageSize?: number; + search?: string; + sourceSlug?: string; + user?: number; +} + +export interface SourcesUserConnectionsLdapPartialUpdateRequest { + id: number; + patchedUserLDAPSourceConnectionRequest?: PatchedUserLDAPSourceConnectionRequest; +} + +export interface SourcesUserConnectionsLdapRetrieveRequest { + id: number; +} + +export interface SourcesUserConnectionsLdapUpdateRequest { + id: number; + userLDAPSourceConnectionRequest: UserLDAPSourceConnectionRequest; +} + +export interface SourcesUserConnectionsLdapUsedByListRequest { + id: number; +} + +export interface SourcesUserConnectionsOauthCreateRequest { + userOAuthSourceConnectionRequest: UserOAuthSourceConnectionRequest; +} + +export interface SourcesUserConnectionsOauthDestroyRequest { + id: number; +} + +export interface SourcesUserConnectionsOauthListRequest { + ordering?: string; + page?: number; + pageSize?: number; + search?: string; + sourceSlug?: string; + user?: number; +} + +export interface SourcesUserConnectionsOauthPartialUpdateRequest { + id: number; + patchedUserOAuthSourceConnectionRequest?: PatchedUserOAuthSourceConnectionRequest; +} + +export interface SourcesUserConnectionsOauthRetrieveRequest { + id: number; +} + +export interface SourcesUserConnectionsOauthUpdateRequest { + id: number; + userOAuthSourceConnectionRequest: UserOAuthSourceConnectionRequest; +} + +export interface SourcesUserConnectionsOauthUsedByListRequest { + id: number; +} + +export interface SourcesUserConnectionsPlexCreateRequest { + userPlexSourceConnectionRequest: UserPlexSourceConnectionRequest; +} + +export interface SourcesUserConnectionsPlexDestroyRequest { + id: number; +} + +export interface SourcesUserConnectionsPlexListRequest { + ordering?: string; + page?: number; + pageSize?: number; + search?: string; + sourceSlug?: string; + user?: number; +} + +export interface SourcesUserConnectionsPlexPartialUpdateRequest { + id: number; + patchedUserPlexSourceConnectionRequest?: PatchedUserPlexSourceConnectionRequest; +} + +export interface SourcesUserConnectionsPlexRetrieveRequest { + id: number; +} + +export interface SourcesUserConnectionsPlexUpdateRequest { + id: number; + userPlexSourceConnectionRequest: UserPlexSourceConnectionRequest; +} + +export interface SourcesUserConnectionsPlexUsedByListRequest { + id: number; +} + +export interface SourcesUserConnectionsSamlCreateRequest { + userSAMLSourceConnectionRequest: UserSAMLSourceConnectionRequest; +} + +export interface SourcesUserConnectionsSamlDestroyRequest { + id: number; +} + +export interface SourcesUserConnectionsSamlListRequest { + ordering?: string; + page?: number; + pageSize?: number; + search?: string; + sourceSlug?: string; + user?: number; +} + +export interface SourcesUserConnectionsSamlPartialUpdateRequest { + id: number; + patchedUserSAMLSourceConnectionRequest?: PatchedUserSAMLSourceConnectionRequest; +} + +export interface SourcesUserConnectionsSamlRetrieveRequest { + id: number; +} + +export interface SourcesUserConnectionsSamlUpdateRequest { + id: number; + userSAMLSourceConnectionRequest: UserSAMLSourceConnectionRequest; +} + +export interface SourcesUserConnectionsSamlUsedByListRequest { + id: number; +} + +export interface SourcesUserConnectionsTelegramCreateRequest { + userTelegramSourceConnectionRequest: UserTelegramSourceConnectionRequest; +} + +export interface SourcesUserConnectionsTelegramDestroyRequest { + id: number; +} + +export interface SourcesUserConnectionsTelegramListRequest { + ordering?: string; + page?: number; + pageSize?: number; + search?: string; + sourceSlug?: string; + user?: number; +} + +export interface SourcesUserConnectionsTelegramPartialUpdateRequest { + id: number; + patchedUserTelegramSourceConnectionRequest?: PatchedUserTelegramSourceConnectionRequest; +} + +export interface SourcesUserConnectionsTelegramRetrieveRequest { + id: number; +} + +export interface SourcesUserConnectionsTelegramUpdateRequest { + id: number; + userTelegramSourceConnectionRequest: UserTelegramSourceConnectionRequest; +} + +export interface SourcesUserConnectionsTelegramUsedByListRequest { + id: number; +} + +/** + * + */ +export class SourcesApi extends runtime.BaseAPI { + /** + * Creates request options for sourcesAllDestroy without sending the request + */ + async sourcesAllDestroyRequestOpts( + requestParameters: SourcesAllDestroyRequest, + ): Promise { + if (requestParameters["slug"] == null) { + throw new runtime.RequiredError( + "slug", + 'Required parameter "slug" was null or undefined when calling sourcesAllDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/all/{slug}/`; + urlPath = urlPath.replace( + `{${"slug"}}`, + encodeURIComponent(String(requestParameters["slug"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Prevent deletion of built-in sources + */ + async sourcesAllDestroyRaw( + requestParameters: SourcesAllDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.sourcesAllDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Prevent deletion of built-in sources + */ + async sourcesAllDestroy( + requestParameters: SourcesAllDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.sourcesAllDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for sourcesAllList without sending the request + */ + async sourcesAllListRequestOpts( + requestParameters: SourcesAllListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["managed"] != null) { + queryParameters["managed"] = requestParameters["managed"]; + } + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["pbmUuid"] != null) { + queryParameters["pbm_uuid"] = requestParameters["pbmUuid"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["slug"] != null) { + queryParameters["slug"] = requestParameters["slug"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/all/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Source Viewset + */ + async sourcesAllListRaw( + requestParameters: SourcesAllListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.sourcesAllListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedSourceListFromJSON(jsonValue), + ); + } + + /** + * Source Viewset + */ + async sourcesAllList( + requestParameters: SourcesAllListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesAllListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for sourcesAllRetrieve without sending the request + */ + async sourcesAllRetrieveRequestOpts( + requestParameters: SourcesAllRetrieveRequest, + ): Promise { + if (requestParameters["slug"] == null) { + throw new runtime.RequiredError( + "slug", + 'Required parameter "slug" was null or undefined when calling sourcesAllRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/all/{slug}/`; + urlPath = urlPath.replace( + `{${"slug"}}`, + encodeURIComponent(String(requestParameters["slug"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Source Viewset + */ + async sourcesAllRetrieveRaw( + requestParameters: SourcesAllRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.sourcesAllRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => SourceFromJSON(jsonValue)); + } + + /** + * Source Viewset + */ + async sourcesAllRetrieve( + requestParameters: SourcesAllRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesAllRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for sourcesAllTypesList without sending the request + */ + async sourcesAllTypesListRequestOpts(): Promise { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/all/types/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get all creatable types + */ + async sourcesAllTypesListRaw( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.sourcesAllTypesListRequestOpts(); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + jsonValue.map(TypeCreateFromJSON), + ); + } + + /** + * Get all creatable types + */ + async sourcesAllTypesList( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.sourcesAllTypesListRaw(initOverrides); + return await response.value(); + } + + /** + * Creates request options for sourcesAllUsedByList without sending the request + */ + async sourcesAllUsedByListRequestOpts( + requestParameters: SourcesAllUsedByListRequest, + ): Promise { + if (requestParameters["slug"] == null) { + throw new runtime.RequiredError( + "slug", + 'Required parameter "slug" was null or undefined when calling sourcesAllUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/all/{slug}/used_by/`; + urlPath = urlPath.replace( + `{${"slug"}}`, + encodeURIComponent(String(requestParameters["slug"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async sourcesAllUsedByListRaw( + requestParameters: SourcesAllUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.sourcesAllUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async sourcesAllUsedByList( + requestParameters: SourcesAllUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.sourcesAllUsedByListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for sourcesAllUserSettingsList without sending the request + */ + async sourcesAllUserSettingsListRequestOpts(): Promise { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/all/user_settings/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get all sources the user can configure + */ + async sourcesAllUserSettingsListRaw( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.sourcesAllUserSettingsListRequestOpts(); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + jsonValue.map(UserSettingFromJSON), + ); + } + + /** + * Get all sources the user can configure + */ + async sourcesAllUserSettingsList( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.sourcesAllUserSettingsListRaw(initOverrides); + return await response.value(); + } + + /** + * Creates request options for sourcesGroupConnectionsAllDestroy without sending the request + */ + async sourcesGroupConnectionsAllDestroyRequestOpts( + requestParameters: SourcesGroupConnectionsAllDestroyRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesGroupConnectionsAllDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/group_connections/all/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsAllDestroyRaw( + requestParameters: SourcesGroupConnectionsAllDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesGroupConnectionsAllDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsAllDestroy( + requestParameters: SourcesGroupConnectionsAllDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.sourcesGroupConnectionsAllDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for sourcesGroupConnectionsAllList without sending the request + */ + async sourcesGroupConnectionsAllListRequestOpts( + requestParameters: SourcesGroupConnectionsAllListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["group"] != null) { + queryParameters["group"] = requestParameters["group"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["sourceSlug"] != null) { + queryParameters["source__slug"] = requestParameters["sourceSlug"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/group_connections/all/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsAllListRaw( + requestParameters: SourcesGroupConnectionsAllListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesGroupConnectionsAllListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedGroupSourceConnectionListFromJSON(jsonValue), + ); + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsAllList( + requestParameters: SourcesGroupConnectionsAllListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesGroupConnectionsAllListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesGroupConnectionsAllPartialUpdate without sending the request + */ + async sourcesGroupConnectionsAllPartialUpdateRequestOpts( + requestParameters: SourcesGroupConnectionsAllPartialUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesGroupConnectionsAllPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/group_connections/all/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedGroupSourceConnectionRequestToJSON( + requestParameters["patchedGroupSourceConnectionRequest"], + ), + }; + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsAllPartialUpdateRaw( + requestParameters: SourcesGroupConnectionsAllPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesGroupConnectionsAllPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + GroupSourceConnectionFromJSON(jsonValue), + ); + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsAllPartialUpdate( + requestParameters: SourcesGroupConnectionsAllPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesGroupConnectionsAllPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesGroupConnectionsAllRetrieve without sending the request + */ + async sourcesGroupConnectionsAllRetrieveRequestOpts( + requestParameters: SourcesGroupConnectionsAllRetrieveRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesGroupConnectionsAllRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/group_connections/all/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsAllRetrieveRaw( + requestParameters: SourcesGroupConnectionsAllRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesGroupConnectionsAllRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + GroupSourceConnectionFromJSON(jsonValue), + ); + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsAllRetrieve( + requestParameters: SourcesGroupConnectionsAllRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesGroupConnectionsAllRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesGroupConnectionsAllUpdate without sending the request + */ + async sourcesGroupConnectionsAllUpdateRequestOpts( + requestParameters: SourcesGroupConnectionsAllUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesGroupConnectionsAllUpdate().', + ); + } + + if (requestParameters["groupSourceConnectionRequest"] == null) { + throw new runtime.RequiredError( + "groupSourceConnectionRequest", + 'Required parameter "groupSourceConnectionRequest" was null or undefined when calling sourcesGroupConnectionsAllUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/group_connections/all/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: GroupSourceConnectionRequestToJSON( + requestParameters["groupSourceConnectionRequest"], + ), + }; + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsAllUpdateRaw( + requestParameters: SourcesGroupConnectionsAllUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesGroupConnectionsAllUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + GroupSourceConnectionFromJSON(jsonValue), + ); + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsAllUpdate( + requestParameters: SourcesGroupConnectionsAllUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesGroupConnectionsAllUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesGroupConnectionsAllUsedByList without sending the request + */ + async sourcesGroupConnectionsAllUsedByListRequestOpts( + requestParameters: SourcesGroupConnectionsAllUsedByListRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesGroupConnectionsAllUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/group_connections/all/{id}/used_by/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async sourcesGroupConnectionsAllUsedByListRaw( + requestParameters: SourcesGroupConnectionsAllUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.sourcesGroupConnectionsAllUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async sourcesGroupConnectionsAllUsedByList( + requestParameters: SourcesGroupConnectionsAllUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.sourcesGroupConnectionsAllUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesGroupConnectionsKerberosCreate without sending the request + */ + async sourcesGroupConnectionsKerberosCreateRequestOpts( + requestParameters: SourcesGroupConnectionsKerberosCreateRequest, + ): Promise { + if (requestParameters["groupKerberosSourceConnectionRequest"] == null) { + throw new runtime.RequiredError( + "groupKerberosSourceConnectionRequest", + 'Required parameter "groupKerberosSourceConnectionRequest" was null or undefined when calling sourcesGroupConnectionsKerberosCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/group_connections/kerberos/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: GroupKerberosSourceConnectionRequestToJSON( + requestParameters["groupKerberosSourceConnectionRequest"], + ), + }; + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsKerberosCreateRaw( + requestParameters: SourcesGroupConnectionsKerberosCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesGroupConnectionsKerberosCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + GroupKerberosSourceConnectionFromJSON(jsonValue), + ); + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsKerberosCreate( + requestParameters: SourcesGroupConnectionsKerberosCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesGroupConnectionsKerberosCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesGroupConnectionsKerberosDestroy without sending the request + */ + async sourcesGroupConnectionsKerberosDestroyRequestOpts( + requestParameters: SourcesGroupConnectionsKerberosDestroyRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesGroupConnectionsKerberosDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/group_connections/kerberos/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsKerberosDestroyRaw( + requestParameters: SourcesGroupConnectionsKerberosDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesGroupConnectionsKerberosDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsKerberosDestroy( + requestParameters: SourcesGroupConnectionsKerberosDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.sourcesGroupConnectionsKerberosDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for sourcesGroupConnectionsKerberosList without sending the request + */ + async sourcesGroupConnectionsKerberosListRequestOpts( + requestParameters: SourcesGroupConnectionsKerberosListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["group"] != null) { + queryParameters["group"] = requestParameters["group"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["sourceSlug"] != null) { + queryParameters["source__slug"] = requestParameters["sourceSlug"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/group_connections/kerberos/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsKerberosListRaw( + requestParameters: SourcesGroupConnectionsKerberosListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesGroupConnectionsKerberosListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedGroupKerberosSourceConnectionListFromJSON(jsonValue), + ); + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsKerberosList( + requestParameters: SourcesGroupConnectionsKerberosListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesGroupConnectionsKerberosListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesGroupConnectionsKerberosPartialUpdate without sending the request + */ + async sourcesGroupConnectionsKerberosPartialUpdateRequestOpts( + requestParameters: SourcesGroupConnectionsKerberosPartialUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesGroupConnectionsKerberosPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/group_connections/kerberos/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedGroupKerberosSourceConnectionRequestToJSON( + requestParameters["patchedGroupKerberosSourceConnectionRequest"], + ), + }; + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsKerberosPartialUpdateRaw( + requestParameters: SourcesGroupConnectionsKerberosPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesGroupConnectionsKerberosPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + GroupKerberosSourceConnectionFromJSON(jsonValue), + ); + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsKerberosPartialUpdate( + requestParameters: SourcesGroupConnectionsKerberosPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesGroupConnectionsKerberosPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesGroupConnectionsKerberosRetrieve without sending the request + */ + async sourcesGroupConnectionsKerberosRetrieveRequestOpts( + requestParameters: SourcesGroupConnectionsKerberosRetrieveRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesGroupConnectionsKerberosRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/group_connections/kerberos/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsKerberosRetrieveRaw( + requestParameters: SourcesGroupConnectionsKerberosRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesGroupConnectionsKerberosRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + GroupKerberosSourceConnectionFromJSON(jsonValue), + ); + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsKerberosRetrieve( + requestParameters: SourcesGroupConnectionsKerberosRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesGroupConnectionsKerberosRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesGroupConnectionsKerberosUpdate without sending the request + */ + async sourcesGroupConnectionsKerberosUpdateRequestOpts( + requestParameters: SourcesGroupConnectionsKerberosUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesGroupConnectionsKerberosUpdate().', + ); + } + + if (requestParameters["groupKerberosSourceConnectionRequest"] == null) { + throw new runtime.RequiredError( + "groupKerberosSourceConnectionRequest", + 'Required parameter "groupKerberosSourceConnectionRequest" was null or undefined when calling sourcesGroupConnectionsKerberosUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/group_connections/kerberos/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: GroupKerberosSourceConnectionRequestToJSON( + requestParameters["groupKerberosSourceConnectionRequest"], + ), + }; + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsKerberosUpdateRaw( + requestParameters: SourcesGroupConnectionsKerberosUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesGroupConnectionsKerberosUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + GroupKerberosSourceConnectionFromJSON(jsonValue), + ); + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsKerberosUpdate( + requestParameters: SourcesGroupConnectionsKerberosUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesGroupConnectionsKerberosUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesGroupConnectionsKerberosUsedByList without sending the request + */ + async sourcesGroupConnectionsKerberosUsedByListRequestOpts( + requestParameters: SourcesGroupConnectionsKerberosUsedByListRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesGroupConnectionsKerberosUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/group_connections/kerberos/{id}/used_by/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async sourcesGroupConnectionsKerberosUsedByListRaw( + requestParameters: SourcesGroupConnectionsKerberosUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.sourcesGroupConnectionsKerberosUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async sourcesGroupConnectionsKerberosUsedByList( + requestParameters: SourcesGroupConnectionsKerberosUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.sourcesGroupConnectionsKerberosUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesGroupConnectionsLdapCreate without sending the request + */ + async sourcesGroupConnectionsLdapCreateRequestOpts( + requestParameters: SourcesGroupConnectionsLdapCreateRequest, + ): Promise { + if (requestParameters["groupLDAPSourceConnectionRequest"] == null) { + throw new runtime.RequiredError( + "groupLDAPSourceConnectionRequest", + 'Required parameter "groupLDAPSourceConnectionRequest" was null or undefined when calling sourcesGroupConnectionsLdapCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/group_connections/ldap/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: GroupLDAPSourceConnectionRequestToJSON( + requestParameters["groupLDAPSourceConnectionRequest"], + ), + }; + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsLdapCreateRaw( + requestParameters: SourcesGroupConnectionsLdapCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesGroupConnectionsLdapCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + GroupLDAPSourceConnectionFromJSON(jsonValue), + ); + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsLdapCreate( + requestParameters: SourcesGroupConnectionsLdapCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesGroupConnectionsLdapCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesGroupConnectionsLdapDestroy without sending the request + */ + async sourcesGroupConnectionsLdapDestroyRequestOpts( + requestParameters: SourcesGroupConnectionsLdapDestroyRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesGroupConnectionsLdapDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/group_connections/ldap/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsLdapDestroyRaw( + requestParameters: SourcesGroupConnectionsLdapDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesGroupConnectionsLdapDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsLdapDestroy( + requestParameters: SourcesGroupConnectionsLdapDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.sourcesGroupConnectionsLdapDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for sourcesGroupConnectionsLdapList without sending the request + */ + async sourcesGroupConnectionsLdapListRequestOpts( + requestParameters: SourcesGroupConnectionsLdapListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["group"] != null) { + queryParameters["group"] = requestParameters["group"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["sourceSlug"] != null) { + queryParameters["source__slug"] = requestParameters["sourceSlug"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/group_connections/ldap/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsLdapListRaw( + requestParameters: SourcesGroupConnectionsLdapListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesGroupConnectionsLdapListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedGroupLDAPSourceConnectionListFromJSON(jsonValue), + ); + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsLdapList( + requestParameters: SourcesGroupConnectionsLdapListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesGroupConnectionsLdapListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesGroupConnectionsLdapPartialUpdate without sending the request + */ + async sourcesGroupConnectionsLdapPartialUpdateRequestOpts( + requestParameters: SourcesGroupConnectionsLdapPartialUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesGroupConnectionsLdapPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/group_connections/ldap/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedGroupLDAPSourceConnectionRequestToJSON( + requestParameters["patchedGroupLDAPSourceConnectionRequest"], + ), + }; + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsLdapPartialUpdateRaw( + requestParameters: SourcesGroupConnectionsLdapPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesGroupConnectionsLdapPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + GroupLDAPSourceConnectionFromJSON(jsonValue), + ); + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsLdapPartialUpdate( + requestParameters: SourcesGroupConnectionsLdapPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesGroupConnectionsLdapPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesGroupConnectionsLdapRetrieve without sending the request + */ + async sourcesGroupConnectionsLdapRetrieveRequestOpts( + requestParameters: SourcesGroupConnectionsLdapRetrieveRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesGroupConnectionsLdapRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/group_connections/ldap/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsLdapRetrieveRaw( + requestParameters: SourcesGroupConnectionsLdapRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesGroupConnectionsLdapRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + GroupLDAPSourceConnectionFromJSON(jsonValue), + ); + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsLdapRetrieve( + requestParameters: SourcesGroupConnectionsLdapRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesGroupConnectionsLdapRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesGroupConnectionsLdapUpdate without sending the request + */ + async sourcesGroupConnectionsLdapUpdateRequestOpts( + requestParameters: SourcesGroupConnectionsLdapUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesGroupConnectionsLdapUpdate().', + ); + } + + if (requestParameters["groupLDAPSourceConnectionRequest"] == null) { + throw new runtime.RequiredError( + "groupLDAPSourceConnectionRequest", + 'Required parameter "groupLDAPSourceConnectionRequest" was null or undefined when calling sourcesGroupConnectionsLdapUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/group_connections/ldap/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: GroupLDAPSourceConnectionRequestToJSON( + requestParameters["groupLDAPSourceConnectionRequest"], + ), + }; + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsLdapUpdateRaw( + requestParameters: SourcesGroupConnectionsLdapUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesGroupConnectionsLdapUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + GroupLDAPSourceConnectionFromJSON(jsonValue), + ); + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsLdapUpdate( + requestParameters: SourcesGroupConnectionsLdapUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesGroupConnectionsLdapUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesGroupConnectionsLdapUsedByList without sending the request + */ + async sourcesGroupConnectionsLdapUsedByListRequestOpts( + requestParameters: SourcesGroupConnectionsLdapUsedByListRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesGroupConnectionsLdapUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/group_connections/ldap/{id}/used_by/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async sourcesGroupConnectionsLdapUsedByListRaw( + requestParameters: SourcesGroupConnectionsLdapUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.sourcesGroupConnectionsLdapUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async sourcesGroupConnectionsLdapUsedByList( + requestParameters: SourcesGroupConnectionsLdapUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.sourcesGroupConnectionsLdapUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesGroupConnectionsOauthCreate without sending the request + */ + async sourcesGroupConnectionsOauthCreateRequestOpts( + requestParameters: SourcesGroupConnectionsOauthCreateRequest, + ): Promise { + if (requestParameters["groupOAuthSourceConnectionRequest"] == null) { + throw new runtime.RequiredError( + "groupOAuthSourceConnectionRequest", + 'Required parameter "groupOAuthSourceConnectionRequest" was null or undefined when calling sourcesGroupConnectionsOauthCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/group_connections/oauth/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: GroupOAuthSourceConnectionRequestToJSON( + requestParameters["groupOAuthSourceConnectionRequest"], + ), + }; + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsOauthCreateRaw( + requestParameters: SourcesGroupConnectionsOauthCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesGroupConnectionsOauthCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + GroupOAuthSourceConnectionFromJSON(jsonValue), + ); + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsOauthCreate( + requestParameters: SourcesGroupConnectionsOauthCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesGroupConnectionsOauthCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesGroupConnectionsOauthDestroy without sending the request + */ + async sourcesGroupConnectionsOauthDestroyRequestOpts( + requestParameters: SourcesGroupConnectionsOauthDestroyRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesGroupConnectionsOauthDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/group_connections/oauth/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsOauthDestroyRaw( + requestParameters: SourcesGroupConnectionsOauthDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesGroupConnectionsOauthDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsOauthDestroy( + requestParameters: SourcesGroupConnectionsOauthDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.sourcesGroupConnectionsOauthDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for sourcesGroupConnectionsOauthList without sending the request + */ + async sourcesGroupConnectionsOauthListRequestOpts( + requestParameters: SourcesGroupConnectionsOauthListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["group"] != null) { + queryParameters["group"] = requestParameters["group"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["sourceSlug"] != null) { + queryParameters["source__slug"] = requestParameters["sourceSlug"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/group_connections/oauth/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsOauthListRaw( + requestParameters: SourcesGroupConnectionsOauthListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesGroupConnectionsOauthListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedGroupOAuthSourceConnectionListFromJSON(jsonValue), + ); + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsOauthList( + requestParameters: SourcesGroupConnectionsOauthListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesGroupConnectionsOauthListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesGroupConnectionsOauthPartialUpdate without sending the request + */ + async sourcesGroupConnectionsOauthPartialUpdateRequestOpts( + requestParameters: SourcesGroupConnectionsOauthPartialUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesGroupConnectionsOauthPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/group_connections/oauth/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedGroupOAuthSourceConnectionRequestToJSON( + requestParameters["patchedGroupOAuthSourceConnectionRequest"], + ), + }; + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsOauthPartialUpdateRaw( + requestParameters: SourcesGroupConnectionsOauthPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesGroupConnectionsOauthPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + GroupOAuthSourceConnectionFromJSON(jsonValue), + ); + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsOauthPartialUpdate( + requestParameters: SourcesGroupConnectionsOauthPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesGroupConnectionsOauthPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesGroupConnectionsOauthRetrieve without sending the request + */ + async sourcesGroupConnectionsOauthRetrieveRequestOpts( + requestParameters: SourcesGroupConnectionsOauthRetrieveRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesGroupConnectionsOauthRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/group_connections/oauth/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsOauthRetrieveRaw( + requestParameters: SourcesGroupConnectionsOauthRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesGroupConnectionsOauthRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + GroupOAuthSourceConnectionFromJSON(jsonValue), + ); + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsOauthRetrieve( + requestParameters: SourcesGroupConnectionsOauthRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesGroupConnectionsOauthRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesGroupConnectionsOauthUpdate without sending the request + */ + async sourcesGroupConnectionsOauthUpdateRequestOpts( + requestParameters: SourcesGroupConnectionsOauthUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesGroupConnectionsOauthUpdate().', + ); + } + + if (requestParameters["groupOAuthSourceConnectionRequest"] == null) { + throw new runtime.RequiredError( + "groupOAuthSourceConnectionRequest", + 'Required parameter "groupOAuthSourceConnectionRequest" was null or undefined when calling sourcesGroupConnectionsOauthUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/group_connections/oauth/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: GroupOAuthSourceConnectionRequestToJSON( + requestParameters["groupOAuthSourceConnectionRequest"], + ), + }; + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsOauthUpdateRaw( + requestParameters: SourcesGroupConnectionsOauthUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesGroupConnectionsOauthUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + GroupOAuthSourceConnectionFromJSON(jsonValue), + ); + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsOauthUpdate( + requestParameters: SourcesGroupConnectionsOauthUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesGroupConnectionsOauthUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesGroupConnectionsOauthUsedByList without sending the request + */ + async sourcesGroupConnectionsOauthUsedByListRequestOpts( + requestParameters: SourcesGroupConnectionsOauthUsedByListRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesGroupConnectionsOauthUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/group_connections/oauth/{id}/used_by/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async sourcesGroupConnectionsOauthUsedByListRaw( + requestParameters: SourcesGroupConnectionsOauthUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.sourcesGroupConnectionsOauthUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async sourcesGroupConnectionsOauthUsedByList( + requestParameters: SourcesGroupConnectionsOauthUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.sourcesGroupConnectionsOauthUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesGroupConnectionsPlexCreate without sending the request + */ + async sourcesGroupConnectionsPlexCreateRequestOpts( + requestParameters: SourcesGroupConnectionsPlexCreateRequest, + ): Promise { + if (requestParameters["groupPlexSourceConnectionRequest"] == null) { + throw new runtime.RequiredError( + "groupPlexSourceConnectionRequest", + 'Required parameter "groupPlexSourceConnectionRequest" was null or undefined when calling sourcesGroupConnectionsPlexCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/group_connections/plex/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: GroupPlexSourceConnectionRequestToJSON( + requestParameters["groupPlexSourceConnectionRequest"], + ), + }; + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsPlexCreateRaw( + requestParameters: SourcesGroupConnectionsPlexCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesGroupConnectionsPlexCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + GroupPlexSourceConnectionFromJSON(jsonValue), + ); + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsPlexCreate( + requestParameters: SourcesGroupConnectionsPlexCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesGroupConnectionsPlexCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesGroupConnectionsPlexDestroy without sending the request + */ + async sourcesGroupConnectionsPlexDestroyRequestOpts( + requestParameters: SourcesGroupConnectionsPlexDestroyRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesGroupConnectionsPlexDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/group_connections/plex/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsPlexDestroyRaw( + requestParameters: SourcesGroupConnectionsPlexDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesGroupConnectionsPlexDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsPlexDestroy( + requestParameters: SourcesGroupConnectionsPlexDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.sourcesGroupConnectionsPlexDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for sourcesGroupConnectionsPlexList without sending the request + */ + async sourcesGroupConnectionsPlexListRequestOpts( + requestParameters: SourcesGroupConnectionsPlexListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["group"] != null) { + queryParameters["group"] = requestParameters["group"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["sourceSlug"] != null) { + queryParameters["source__slug"] = requestParameters["sourceSlug"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/group_connections/plex/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsPlexListRaw( + requestParameters: SourcesGroupConnectionsPlexListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesGroupConnectionsPlexListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedGroupPlexSourceConnectionListFromJSON(jsonValue), + ); + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsPlexList( + requestParameters: SourcesGroupConnectionsPlexListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesGroupConnectionsPlexListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesGroupConnectionsPlexPartialUpdate without sending the request + */ + async sourcesGroupConnectionsPlexPartialUpdateRequestOpts( + requestParameters: SourcesGroupConnectionsPlexPartialUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesGroupConnectionsPlexPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/group_connections/plex/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedGroupPlexSourceConnectionRequestToJSON( + requestParameters["patchedGroupPlexSourceConnectionRequest"], + ), + }; + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsPlexPartialUpdateRaw( + requestParameters: SourcesGroupConnectionsPlexPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesGroupConnectionsPlexPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + GroupPlexSourceConnectionFromJSON(jsonValue), + ); + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsPlexPartialUpdate( + requestParameters: SourcesGroupConnectionsPlexPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesGroupConnectionsPlexPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesGroupConnectionsPlexRetrieve without sending the request + */ + async sourcesGroupConnectionsPlexRetrieveRequestOpts( + requestParameters: SourcesGroupConnectionsPlexRetrieveRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesGroupConnectionsPlexRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/group_connections/plex/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsPlexRetrieveRaw( + requestParameters: SourcesGroupConnectionsPlexRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesGroupConnectionsPlexRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + GroupPlexSourceConnectionFromJSON(jsonValue), + ); + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsPlexRetrieve( + requestParameters: SourcesGroupConnectionsPlexRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesGroupConnectionsPlexRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesGroupConnectionsPlexUpdate without sending the request + */ + async sourcesGroupConnectionsPlexUpdateRequestOpts( + requestParameters: SourcesGroupConnectionsPlexUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesGroupConnectionsPlexUpdate().', + ); + } + + if (requestParameters["groupPlexSourceConnectionRequest"] == null) { + throw new runtime.RequiredError( + "groupPlexSourceConnectionRequest", + 'Required parameter "groupPlexSourceConnectionRequest" was null or undefined when calling sourcesGroupConnectionsPlexUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/group_connections/plex/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: GroupPlexSourceConnectionRequestToJSON( + requestParameters["groupPlexSourceConnectionRequest"], + ), + }; + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsPlexUpdateRaw( + requestParameters: SourcesGroupConnectionsPlexUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesGroupConnectionsPlexUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + GroupPlexSourceConnectionFromJSON(jsonValue), + ); + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsPlexUpdate( + requestParameters: SourcesGroupConnectionsPlexUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesGroupConnectionsPlexUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesGroupConnectionsPlexUsedByList without sending the request + */ + async sourcesGroupConnectionsPlexUsedByListRequestOpts( + requestParameters: SourcesGroupConnectionsPlexUsedByListRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesGroupConnectionsPlexUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/group_connections/plex/{id}/used_by/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async sourcesGroupConnectionsPlexUsedByListRaw( + requestParameters: SourcesGroupConnectionsPlexUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.sourcesGroupConnectionsPlexUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async sourcesGroupConnectionsPlexUsedByList( + requestParameters: SourcesGroupConnectionsPlexUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.sourcesGroupConnectionsPlexUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesGroupConnectionsSamlCreate without sending the request + */ + async sourcesGroupConnectionsSamlCreateRequestOpts( + requestParameters: SourcesGroupConnectionsSamlCreateRequest, + ): Promise { + if (requestParameters["groupSAMLSourceConnectionRequest"] == null) { + throw new runtime.RequiredError( + "groupSAMLSourceConnectionRequest", + 'Required parameter "groupSAMLSourceConnectionRequest" was null or undefined when calling sourcesGroupConnectionsSamlCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/group_connections/saml/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: GroupSAMLSourceConnectionRequestToJSON( + requestParameters["groupSAMLSourceConnectionRequest"], + ), + }; + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsSamlCreateRaw( + requestParameters: SourcesGroupConnectionsSamlCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesGroupConnectionsSamlCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + GroupSAMLSourceConnectionFromJSON(jsonValue), + ); + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsSamlCreate( + requestParameters: SourcesGroupConnectionsSamlCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesGroupConnectionsSamlCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesGroupConnectionsSamlDestroy without sending the request + */ + async sourcesGroupConnectionsSamlDestroyRequestOpts( + requestParameters: SourcesGroupConnectionsSamlDestroyRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesGroupConnectionsSamlDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/group_connections/saml/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsSamlDestroyRaw( + requestParameters: SourcesGroupConnectionsSamlDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesGroupConnectionsSamlDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsSamlDestroy( + requestParameters: SourcesGroupConnectionsSamlDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.sourcesGroupConnectionsSamlDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for sourcesGroupConnectionsSamlList without sending the request + */ + async sourcesGroupConnectionsSamlListRequestOpts( + requestParameters: SourcesGroupConnectionsSamlListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["group"] != null) { + queryParameters["group"] = requestParameters["group"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["sourceSlug"] != null) { + queryParameters["source__slug"] = requestParameters["sourceSlug"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/group_connections/saml/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsSamlListRaw( + requestParameters: SourcesGroupConnectionsSamlListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesGroupConnectionsSamlListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedGroupSAMLSourceConnectionListFromJSON(jsonValue), + ); + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsSamlList( + requestParameters: SourcesGroupConnectionsSamlListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesGroupConnectionsSamlListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesGroupConnectionsSamlPartialUpdate without sending the request + */ + async sourcesGroupConnectionsSamlPartialUpdateRequestOpts( + requestParameters: SourcesGroupConnectionsSamlPartialUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesGroupConnectionsSamlPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/group_connections/saml/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedGroupSAMLSourceConnectionRequestToJSON( + requestParameters["patchedGroupSAMLSourceConnectionRequest"], + ), + }; + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsSamlPartialUpdateRaw( + requestParameters: SourcesGroupConnectionsSamlPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesGroupConnectionsSamlPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + GroupSAMLSourceConnectionFromJSON(jsonValue), + ); + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsSamlPartialUpdate( + requestParameters: SourcesGroupConnectionsSamlPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesGroupConnectionsSamlPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesGroupConnectionsSamlRetrieve without sending the request + */ + async sourcesGroupConnectionsSamlRetrieveRequestOpts( + requestParameters: SourcesGroupConnectionsSamlRetrieveRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesGroupConnectionsSamlRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/group_connections/saml/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsSamlRetrieveRaw( + requestParameters: SourcesGroupConnectionsSamlRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesGroupConnectionsSamlRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + GroupSAMLSourceConnectionFromJSON(jsonValue), + ); + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsSamlRetrieve( + requestParameters: SourcesGroupConnectionsSamlRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesGroupConnectionsSamlRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesGroupConnectionsSamlUpdate without sending the request + */ + async sourcesGroupConnectionsSamlUpdateRequestOpts( + requestParameters: SourcesGroupConnectionsSamlUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesGroupConnectionsSamlUpdate().', + ); + } + + if (requestParameters["groupSAMLSourceConnectionRequest"] == null) { + throw new runtime.RequiredError( + "groupSAMLSourceConnectionRequest", + 'Required parameter "groupSAMLSourceConnectionRequest" was null or undefined when calling sourcesGroupConnectionsSamlUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/group_connections/saml/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: GroupSAMLSourceConnectionRequestToJSON( + requestParameters["groupSAMLSourceConnectionRequest"], + ), + }; + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsSamlUpdateRaw( + requestParameters: SourcesGroupConnectionsSamlUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesGroupConnectionsSamlUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + GroupSAMLSourceConnectionFromJSON(jsonValue), + ); + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsSamlUpdate( + requestParameters: SourcesGroupConnectionsSamlUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesGroupConnectionsSamlUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesGroupConnectionsSamlUsedByList without sending the request + */ + async sourcesGroupConnectionsSamlUsedByListRequestOpts( + requestParameters: SourcesGroupConnectionsSamlUsedByListRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesGroupConnectionsSamlUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/group_connections/saml/{id}/used_by/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async sourcesGroupConnectionsSamlUsedByListRaw( + requestParameters: SourcesGroupConnectionsSamlUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.sourcesGroupConnectionsSamlUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async sourcesGroupConnectionsSamlUsedByList( + requestParameters: SourcesGroupConnectionsSamlUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.sourcesGroupConnectionsSamlUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesGroupConnectionsTelegramCreate without sending the request + */ + async sourcesGroupConnectionsTelegramCreateRequestOpts( + requestParameters: SourcesGroupConnectionsTelegramCreateRequest, + ): Promise { + if (requestParameters["groupTelegramSourceConnectionRequest"] == null) { + throw new runtime.RequiredError( + "groupTelegramSourceConnectionRequest", + 'Required parameter "groupTelegramSourceConnectionRequest" was null or undefined when calling sourcesGroupConnectionsTelegramCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/group_connections/telegram/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: GroupTelegramSourceConnectionRequestToJSON( + requestParameters["groupTelegramSourceConnectionRequest"], + ), + }; + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsTelegramCreateRaw( + requestParameters: SourcesGroupConnectionsTelegramCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesGroupConnectionsTelegramCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + GroupTelegramSourceConnectionFromJSON(jsonValue), + ); + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsTelegramCreate( + requestParameters: SourcesGroupConnectionsTelegramCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesGroupConnectionsTelegramCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesGroupConnectionsTelegramDestroy without sending the request + */ + async sourcesGroupConnectionsTelegramDestroyRequestOpts( + requestParameters: SourcesGroupConnectionsTelegramDestroyRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesGroupConnectionsTelegramDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/group_connections/telegram/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsTelegramDestroyRaw( + requestParameters: SourcesGroupConnectionsTelegramDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesGroupConnectionsTelegramDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsTelegramDestroy( + requestParameters: SourcesGroupConnectionsTelegramDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.sourcesGroupConnectionsTelegramDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for sourcesGroupConnectionsTelegramList without sending the request + */ + async sourcesGroupConnectionsTelegramListRequestOpts( + requestParameters: SourcesGroupConnectionsTelegramListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["group"] != null) { + queryParameters["group"] = requestParameters["group"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["sourceSlug"] != null) { + queryParameters["source__slug"] = requestParameters["sourceSlug"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/group_connections/telegram/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsTelegramListRaw( + requestParameters: SourcesGroupConnectionsTelegramListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesGroupConnectionsTelegramListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedGroupTelegramSourceConnectionListFromJSON(jsonValue), + ); + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsTelegramList( + requestParameters: SourcesGroupConnectionsTelegramListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesGroupConnectionsTelegramListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesGroupConnectionsTelegramPartialUpdate without sending the request + */ + async sourcesGroupConnectionsTelegramPartialUpdateRequestOpts( + requestParameters: SourcesGroupConnectionsTelegramPartialUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesGroupConnectionsTelegramPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/group_connections/telegram/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedGroupTelegramSourceConnectionRequestToJSON( + requestParameters["patchedGroupTelegramSourceConnectionRequest"], + ), + }; + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsTelegramPartialUpdateRaw( + requestParameters: SourcesGroupConnectionsTelegramPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesGroupConnectionsTelegramPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + GroupTelegramSourceConnectionFromJSON(jsonValue), + ); + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsTelegramPartialUpdate( + requestParameters: SourcesGroupConnectionsTelegramPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesGroupConnectionsTelegramPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesGroupConnectionsTelegramRetrieve without sending the request + */ + async sourcesGroupConnectionsTelegramRetrieveRequestOpts( + requestParameters: SourcesGroupConnectionsTelegramRetrieveRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesGroupConnectionsTelegramRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/group_connections/telegram/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsTelegramRetrieveRaw( + requestParameters: SourcesGroupConnectionsTelegramRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesGroupConnectionsTelegramRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + GroupTelegramSourceConnectionFromJSON(jsonValue), + ); + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsTelegramRetrieve( + requestParameters: SourcesGroupConnectionsTelegramRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesGroupConnectionsTelegramRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesGroupConnectionsTelegramUpdate without sending the request + */ + async sourcesGroupConnectionsTelegramUpdateRequestOpts( + requestParameters: SourcesGroupConnectionsTelegramUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesGroupConnectionsTelegramUpdate().', + ); + } + + if (requestParameters["groupTelegramSourceConnectionRequest"] == null) { + throw new runtime.RequiredError( + "groupTelegramSourceConnectionRequest", + 'Required parameter "groupTelegramSourceConnectionRequest" was null or undefined when calling sourcesGroupConnectionsTelegramUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/group_connections/telegram/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: GroupTelegramSourceConnectionRequestToJSON( + requestParameters["groupTelegramSourceConnectionRequest"], + ), + }; + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsTelegramUpdateRaw( + requestParameters: SourcesGroupConnectionsTelegramUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesGroupConnectionsTelegramUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + GroupTelegramSourceConnectionFromJSON(jsonValue), + ); + } + + /** + * Group-source connection Viewset + */ + async sourcesGroupConnectionsTelegramUpdate( + requestParameters: SourcesGroupConnectionsTelegramUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesGroupConnectionsTelegramUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesGroupConnectionsTelegramUsedByList without sending the request + */ + async sourcesGroupConnectionsTelegramUsedByListRequestOpts( + requestParameters: SourcesGroupConnectionsTelegramUsedByListRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesGroupConnectionsTelegramUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/group_connections/telegram/{id}/used_by/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async sourcesGroupConnectionsTelegramUsedByListRaw( + requestParameters: SourcesGroupConnectionsTelegramUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.sourcesGroupConnectionsTelegramUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async sourcesGroupConnectionsTelegramUsedByList( + requestParameters: SourcesGroupConnectionsTelegramUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.sourcesGroupConnectionsTelegramUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesKerberosCreate without sending the request + */ + async sourcesKerberosCreateRequestOpts( + requestParameters: SourcesKerberosCreateRequest, + ): Promise { + if (requestParameters["kerberosSourceRequest"] == null) { + throw new runtime.RequiredError( + "kerberosSourceRequest", + 'Required parameter "kerberosSourceRequest" was null or undefined when calling sourcesKerberosCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/kerberos/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: KerberosSourceRequestToJSON(requestParameters["kerberosSourceRequest"]), + }; + } + + /** + * Kerberos Source Viewset + */ + async sourcesKerberosCreateRaw( + requestParameters: SourcesKerberosCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.sourcesKerberosCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + KerberosSourceFromJSON(jsonValue), + ); + } + + /** + * Kerberos Source Viewset + */ + async sourcesKerberosCreate( + requestParameters: SourcesKerberosCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesKerberosCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for sourcesKerberosDestroy without sending the request + */ + async sourcesKerberosDestroyRequestOpts( + requestParameters: SourcesKerberosDestroyRequest, + ): Promise { + if (requestParameters["slug"] == null) { + throw new runtime.RequiredError( + "slug", + 'Required parameter "slug" was null or undefined when calling sourcesKerberosDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/kerberos/{slug}/`; + urlPath = urlPath.replace( + `{${"slug"}}`, + encodeURIComponent(String(requestParameters["slug"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Kerberos Source Viewset + */ + async sourcesKerberosDestroyRaw( + requestParameters: SourcesKerberosDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.sourcesKerberosDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Kerberos Source Viewset + */ + async sourcesKerberosDestroy( + requestParameters: SourcesKerberosDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.sourcesKerberosDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for sourcesKerberosList without sending the request + */ + async sourcesKerberosListRequestOpts( + requestParameters: SourcesKerberosListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["enabled"] != null) { + queryParameters["enabled"] = requestParameters["enabled"]; + } + + if (requestParameters["kadminType"] != null) { + queryParameters["kadmin_type"] = requestParameters["kadminType"]; + } + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["passwordLoginUpdateInternalPassword"] != null) { + queryParameters["password_login_update_internal_password"] = + requestParameters["passwordLoginUpdateInternalPassword"]; + } + + if (requestParameters["pbmUuid"] != null) { + queryParameters["pbm_uuid"] = requestParameters["pbmUuid"]; + } + + if (requestParameters["realm"] != null) { + queryParameters["realm"] = requestParameters["realm"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["slug"] != null) { + queryParameters["slug"] = requestParameters["slug"]; + } + + if (requestParameters["spnegoServerName"] != null) { + queryParameters["spnego_server_name"] = requestParameters["spnegoServerName"]; + } + + if (requestParameters["syncPrincipal"] != null) { + queryParameters["sync_principal"] = requestParameters["syncPrincipal"]; + } + + if (requestParameters["syncUsers"] != null) { + queryParameters["sync_users"] = requestParameters["syncUsers"]; + } + + if (requestParameters["syncUsersPassword"] != null) { + queryParameters["sync_users_password"] = requestParameters["syncUsersPassword"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/kerberos/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Kerberos Source Viewset + */ + async sourcesKerberosListRaw( + requestParameters: SourcesKerberosListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.sourcesKerberosListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedKerberosSourceListFromJSON(jsonValue), + ); + } + + /** + * Kerberos Source Viewset + */ + async sourcesKerberosList( + requestParameters: SourcesKerberosListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesKerberosListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for sourcesKerberosPartialUpdate without sending the request + */ + async sourcesKerberosPartialUpdateRequestOpts( + requestParameters: SourcesKerberosPartialUpdateRequest, + ): Promise { + if (requestParameters["slug"] == null) { + throw new runtime.RequiredError( + "slug", + 'Required parameter "slug" was null or undefined when calling sourcesKerberosPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/kerberos/{slug}/`; + urlPath = urlPath.replace( + `{${"slug"}}`, + encodeURIComponent(String(requestParameters["slug"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedKerberosSourceRequestToJSON( + requestParameters["patchedKerberosSourceRequest"], + ), + }; + } + + /** + * Kerberos Source Viewset + */ + async sourcesKerberosPartialUpdateRaw( + requestParameters: SourcesKerberosPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesKerberosPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + KerberosSourceFromJSON(jsonValue), + ); + } + + /** + * Kerberos Source Viewset + */ + async sourcesKerberosPartialUpdate( + requestParameters: SourcesKerberosPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesKerberosPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesKerberosRetrieve without sending the request + */ + async sourcesKerberosRetrieveRequestOpts( + requestParameters: SourcesKerberosRetrieveRequest, + ): Promise { + if (requestParameters["slug"] == null) { + throw new runtime.RequiredError( + "slug", + 'Required parameter "slug" was null or undefined when calling sourcesKerberosRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/kerberos/{slug}/`; + urlPath = urlPath.replace( + `{${"slug"}}`, + encodeURIComponent(String(requestParameters["slug"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Kerberos Source Viewset + */ + async sourcesKerberosRetrieveRaw( + requestParameters: SourcesKerberosRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.sourcesKerberosRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + KerberosSourceFromJSON(jsonValue), + ); + } + + /** + * Kerberos Source Viewset + */ + async sourcesKerberosRetrieve( + requestParameters: SourcesKerberosRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesKerberosRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for sourcesKerberosSyncStatusRetrieve without sending the request + */ + async sourcesKerberosSyncStatusRetrieveRequestOpts( + requestParameters: SourcesKerberosSyncStatusRetrieveRequest, + ): Promise { + if (requestParameters["slug"] == null) { + throw new runtime.RequiredError( + "slug", + 'Required parameter "slug" was null or undefined when calling sourcesKerberosSyncStatusRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/kerberos/{slug}/sync/status/`; + urlPath = urlPath.replace( + `{${"slug"}}`, + encodeURIComponent(String(requestParameters["slug"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get provider\'s sync status + */ + async sourcesKerberosSyncStatusRetrieveRaw( + requestParameters: SourcesKerberosSyncStatusRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesKerberosSyncStatusRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => SyncStatusFromJSON(jsonValue)); + } + + /** + * Get provider\'s sync status + */ + async sourcesKerberosSyncStatusRetrieve( + requestParameters: SourcesKerberosSyncStatusRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesKerberosSyncStatusRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesKerberosUpdate without sending the request + */ + async sourcesKerberosUpdateRequestOpts( + requestParameters: SourcesKerberosUpdateRequest, + ): Promise { + if (requestParameters["slug"] == null) { + throw new runtime.RequiredError( + "slug", + 'Required parameter "slug" was null or undefined when calling sourcesKerberosUpdate().', + ); + } + + if (requestParameters["kerberosSourceRequest"] == null) { + throw new runtime.RequiredError( + "kerberosSourceRequest", + 'Required parameter "kerberosSourceRequest" was null or undefined when calling sourcesKerberosUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/kerberos/{slug}/`; + urlPath = urlPath.replace( + `{${"slug"}}`, + encodeURIComponent(String(requestParameters["slug"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: KerberosSourceRequestToJSON(requestParameters["kerberosSourceRequest"]), + }; + } + + /** + * Kerberos Source Viewset + */ + async sourcesKerberosUpdateRaw( + requestParameters: SourcesKerberosUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.sourcesKerberosUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + KerberosSourceFromJSON(jsonValue), + ); + } + + /** + * Kerberos Source Viewset + */ + async sourcesKerberosUpdate( + requestParameters: SourcesKerberosUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesKerberosUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for sourcesKerberosUsedByList without sending the request + */ + async sourcesKerberosUsedByListRequestOpts( + requestParameters: SourcesKerberosUsedByListRequest, + ): Promise { + if (requestParameters["slug"] == null) { + throw new runtime.RequiredError( + "slug", + 'Required parameter "slug" was null or undefined when calling sourcesKerberosUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/kerberos/{slug}/used_by/`; + urlPath = urlPath.replace( + `{${"slug"}}`, + encodeURIComponent(String(requestParameters["slug"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async sourcesKerberosUsedByListRaw( + requestParameters: SourcesKerberosUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.sourcesKerberosUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async sourcesKerberosUsedByList( + requestParameters: SourcesKerberosUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.sourcesKerberosUsedByListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for sourcesLdapCreate without sending the request + */ + async sourcesLdapCreateRequestOpts( + requestParameters: SourcesLdapCreateRequest, + ): Promise { + if (requestParameters["lDAPSourceRequest"] == null) { + throw new runtime.RequiredError( + "lDAPSourceRequest", + 'Required parameter "lDAPSourceRequest" was null or undefined when calling sourcesLdapCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/ldap/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: LDAPSourceRequestToJSON(requestParameters["lDAPSourceRequest"]), + }; + } + + /** + * LDAP Source Viewset + */ + async sourcesLdapCreateRaw( + requestParameters: SourcesLdapCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.sourcesLdapCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => LDAPSourceFromJSON(jsonValue)); + } + + /** + * LDAP Source Viewset + */ + async sourcesLdapCreate( + requestParameters: SourcesLdapCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesLdapCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for sourcesLdapDebugRetrieve without sending the request + */ + async sourcesLdapDebugRetrieveRequestOpts( + requestParameters: SourcesLdapDebugRetrieveRequest, + ): Promise { + if (requestParameters["slug"] == null) { + throw new runtime.RequiredError( + "slug", + 'Required parameter "slug" was null or undefined when calling sourcesLdapDebugRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/ldap/{slug}/debug/`; + urlPath = urlPath.replace( + `{${"slug"}}`, + encodeURIComponent(String(requestParameters["slug"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get raw LDAP data to debug + */ + async sourcesLdapDebugRetrieveRaw( + requestParameters: SourcesLdapDebugRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.sourcesLdapDebugRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => LDAPDebugFromJSON(jsonValue)); + } + + /** + * Get raw LDAP data to debug + */ + async sourcesLdapDebugRetrieve( + requestParameters: SourcesLdapDebugRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesLdapDebugRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for sourcesLdapDestroy without sending the request + */ + async sourcesLdapDestroyRequestOpts( + requestParameters: SourcesLdapDestroyRequest, + ): Promise { + if (requestParameters["slug"] == null) { + throw new runtime.RequiredError( + "slug", + 'Required parameter "slug" was null or undefined when calling sourcesLdapDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/ldap/{slug}/`; + urlPath = urlPath.replace( + `{${"slug"}}`, + encodeURIComponent(String(requestParameters["slug"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * LDAP Source Viewset + */ + async sourcesLdapDestroyRaw( + requestParameters: SourcesLdapDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.sourcesLdapDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * LDAP Source Viewset + */ + async sourcesLdapDestroy( + requestParameters: SourcesLdapDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.sourcesLdapDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for sourcesLdapList without sending the request + */ + async sourcesLdapListRequestOpts( + requestParameters: SourcesLdapListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["additionalGroupDn"] != null) { + queryParameters["additional_group_dn"] = requestParameters["additionalGroupDn"]; + } + + if (requestParameters["additionalUserDn"] != null) { + queryParameters["additional_user_dn"] = requestParameters["additionalUserDn"]; + } + + if (requestParameters["baseDn"] != null) { + queryParameters["base_dn"] = requestParameters["baseDn"]; + } + + if (requestParameters["bindCn"] != null) { + queryParameters["bind_cn"] = requestParameters["bindCn"]; + } + + if (requestParameters["clientCertificate"] != null) { + queryParameters["client_certificate"] = requestParameters["clientCertificate"]; + } + + if (requestParameters["deleteNotFoundObjects"] != null) { + queryParameters["delete_not_found_objects"] = + requestParameters["deleteNotFoundObjects"]; + } + + if (requestParameters["enabled"] != null) { + queryParameters["enabled"] = requestParameters["enabled"]; + } + + if (requestParameters["groupMembershipField"] != null) { + queryParameters["group_membership_field"] = requestParameters["groupMembershipField"]; + } + + if (requestParameters["groupObjectFilter"] != null) { + queryParameters["group_object_filter"] = requestParameters["groupObjectFilter"]; + } + + if (requestParameters["groupPropertyMappings"] != null) { + queryParameters["group_property_mappings"] = requestParameters["groupPropertyMappings"]; + } + + if (requestParameters["lookupGroupsFromUser"] != null) { + queryParameters["lookup_groups_from_user"] = requestParameters["lookupGroupsFromUser"]; + } + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["objectUniquenessField"] != null) { + queryParameters["object_uniqueness_field"] = requestParameters["objectUniquenessField"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["passwordLoginUpdateInternalPassword"] != null) { + queryParameters["password_login_update_internal_password"] = + requestParameters["passwordLoginUpdateInternalPassword"]; + } + + if (requestParameters["pbmUuid"] != null) { + queryParameters["pbm_uuid"] = requestParameters["pbmUuid"]; + } + + if (requestParameters["peerCertificate"] != null) { + queryParameters["peer_certificate"] = requestParameters["peerCertificate"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["serverUri"] != null) { + queryParameters["server_uri"] = requestParameters["serverUri"]; + } + + if (requestParameters["slug"] != null) { + queryParameters["slug"] = requestParameters["slug"]; + } + + if (requestParameters["sni"] != null) { + queryParameters["sni"] = requestParameters["sni"]; + } + + if (requestParameters["startTls"] != null) { + queryParameters["start_tls"] = requestParameters["startTls"]; + } + + if (requestParameters["syncGroups"] != null) { + queryParameters["sync_groups"] = requestParameters["syncGroups"]; + } + + if (requestParameters["syncParentGroup"] != null) { + queryParameters["sync_parent_group"] = requestParameters["syncParentGroup"]; + } + + if (requestParameters["syncUsers"] != null) { + queryParameters["sync_users"] = requestParameters["syncUsers"]; + } + + if (requestParameters["syncUsersPassword"] != null) { + queryParameters["sync_users_password"] = requestParameters["syncUsersPassword"]; + } + + if (requestParameters["userMembershipAttribute"] != null) { + queryParameters["user_membership_attribute"] = + requestParameters["userMembershipAttribute"]; + } + + if (requestParameters["userObjectFilter"] != null) { + queryParameters["user_object_filter"] = requestParameters["userObjectFilter"]; + } + + if (requestParameters["userPropertyMappings"] != null) { + queryParameters["user_property_mappings"] = requestParameters["userPropertyMappings"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/ldap/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * LDAP Source Viewset + */ + async sourcesLdapListRaw( + requestParameters: SourcesLdapListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.sourcesLdapListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedLDAPSourceListFromJSON(jsonValue), + ); + } + + /** + * LDAP Source Viewset + */ + async sourcesLdapList( + requestParameters: SourcesLdapListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesLdapListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for sourcesLdapPartialUpdate without sending the request + */ + async sourcesLdapPartialUpdateRequestOpts( + requestParameters: SourcesLdapPartialUpdateRequest, + ): Promise { + if (requestParameters["slug"] == null) { + throw new runtime.RequiredError( + "slug", + 'Required parameter "slug" was null or undefined when calling sourcesLdapPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/ldap/{slug}/`; + urlPath = urlPath.replace( + `{${"slug"}}`, + encodeURIComponent(String(requestParameters["slug"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedLDAPSourceRequestToJSON(requestParameters["patchedLDAPSourceRequest"]), + }; + } + + /** + * LDAP Source Viewset + */ + async sourcesLdapPartialUpdateRaw( + requestParameters: SourcesLdapPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.sourcesLdapPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => LDAPSourceFromJSON(jsonValue)); + } + + /** + * LDAP Source Viewset + */ + async sourcesLdapPartialUpdate( + requestParameters: SourcesLdapPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesLdapPartialUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for sourcesLdapRetrieve without sending the request + */ + async sourcesLdapRetrieveRequestOpts( + requestParameters: SourcesLdapRetrieveRequest, + ): Promise { + if (requestParameters["slug"] == null) { + throw new runtime.RequiredError( + "slug", + 'Required parameter "slug" was null or undefined when calling sourcesLdapRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/ldap/{slug}/`; + urlPath = urlPath.replace( + `{${"slug"}}`, + encodeURIComponent(String(requestParameters["slug"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * LDAP Source Viewset + */ + async sourcesLdapRetrieveRaw( + requestParameters: SourcesLdapRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.sourcesLdapRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => LDAPSourceFromJSON(jsonValue)); + } + + /** + * LDAP Source Viewset + */ + async sourcesLdapRetrieve( + requestParameters: SourcesLdapRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesLdapRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for sourcesLdapSyncStatusRetrieve without sending the request + */ + async sourcesLdapSyncStatusRetrieveRequestOpts( + requestParameters: SourcesLdapSyncStatusRetrieveRequest, + ): Promise { + if (requestParameters["slug"] == null) { + throw new runtime.RequiredError( + "slug", + 'Required parameter "slug" was null or undefined when calling sourcesLdapSyncStatusRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/ldap/{slug}/sync/status/`; + urlPath = urlPath.replace( + `{${"slug"}}`, + encodeURIComponent(String(requestParameters["slug"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get provider\'s sync status + */ + async sourcesLdapSyncStatusRetrieveRaw( + requestParameters: SourcesLdapSyncStatusRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesLdapSyncStatusRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => SyncStatusFromJSON(jsonValue)); + } + + /** + * Get provider\'s sync status + */ + async sourcesLdapSyncStatusRetrieve( + requestParameters: SourcesLdapSyncStatusRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesLdapSyncStatusRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesLdapUpdate without sending the request + */ + async sourcesLdapUpdateRequestOpts( + requestParameters: SourcesLdapUpdateRequest, + ): Promise { + if (requestParameters["slug"] == null) { + throw new runtime.RequiredError( + "slug", + 'Required parameter "slug" was null or undefined when calling sourcesLdapUpdate().', + ); + } + + if (requestParameters["lDAPSourceRequest"] == null) { + throw new runtime.RequiredError( + "lDAPSourceRequest", + 'Required parameter "lDAPSourceRequest" was null or undefined when calling sourcesLdapUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/ldap/{slug}/`; + urlPath = urlPath.replace( + `{${"slug"}}`, + encodeURIComponent(String(requestParameters["slug"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: LDAPSourceRequestToJSON(requestParameters["lDAPSourceRequest"]), + }; + } + + /** + * LDAP Source Viewset + */ + async sourcesLdapUpdateRaw( + requestParameters: SourcesLdapUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.sourcesLdapUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => LDAPSourceFromJSON(jsonValue)); + } + + /** + * LDAP Source Viewset + */ + async sourcesLdapUpdate( + requestParameters: SourcesLdapUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesLdapUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for sourcesLdapUsedByList without sending the request + */ + async sourcesLdapUsedByListRequestOpts( + requestParameters: SourcesLdapUsedByListRequest, + ): Promise { + if (requestParameters["slug"] == null) { + throw new runtime.RequiredError( + "slug", + 'Required parameter "slug" was null or undefined when calling sourcesLdapUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/ldap/{slug}/used_by/`; + urlPath = urlPath.replace( + `{${"slug"}}`, + encodeURIComponent(String(requestParameters["slug"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async sourcesLdapUsedByListRaw( + requestParameters: SourcesLdapUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.sourcesLdapUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async sourcesLdapUsedByList( + requestParameters: SourcesLdapUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.sourcesLdapUsedByListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for sourcesOauthCreate without sending the request + */ + async sourcesOauthCreateRequestOpts( + requestParameters: SourcesOauthCreateRequest, + ): Promise { + if (requestParameters["oAuthSourceRequest"] == null) { + throw new runtime.RequiredError( + "oAuthSourceRequest", + 'Required parameter "oAuthSourceRequest" was null or undefined when calling sourcesOauthCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/oauth/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: OAuthSourceRequestToJSON(requestParameters["oAuthSourceRequest"]), + }; + } + + /** + * Source Viewset + */ + async sourcesOauthCreateRaw( + requestParameters: SourcesOauthCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.sourcesOauthCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => OAuthSourceFromJSON(jsonValue)); + } + + /** + * Source Viewset + */ + async sourcesOauthCreate( + requestParameters: SourcesOauthCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesOauthCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for sourcesOauthDestroy without sending the request + */ + async sourcesOauthDestroyRequestOpts( + requestParameters: SourcesOauthDestroyRequest, + ): Promise { + if (requestParameters["slug"] == null) { + throw new runtime.RequiredError( + "slug", + 'Required parameter "slug" was null or undefined when calling sourcesOauthDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/oauth/{slug}/`; + urlPath = urlPath.replace( + `{${"slug"}}`, + encodeURIComponent(String(requestParameters["slug"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Source Viewset + */ + async sourcesOauthDestroyRaw( + requestParameters: SourcesOauthDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.sourcesOauthDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Source Viewset + */ + async sourcesOauthDestroy( + requestParameters: SourcesOauthDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.sourcesOauthDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for sourcesOauthList without sending the request + */ + async sourcesOauthListRequestOpts( + requestParameters: SourcesOauthListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["accessTokenUrl"] != null) { + queryParameters["access_token_url"] = requestParameters["accessTokenUrl"]; + } + + if (requestParameters["additionalScopes"] != null) { + queryParameters["additional_scopes"] = requestParameters["additionalScopes"]; + } + + if (requestParameters["authenticationFlow"] != null) { + queryParameters["authentication_flow"] = requestParameters["authenticationFlow"]; + } + + if (requestParameters["authorizationUrl"] != null) { + queryParameters["authorization_url"] = requestParameters["authorizationUrl"]; + } + + if (requestParameters["consumerKey"] != null) { + queryParameters["consumer_key"] = requestParameters["consumerKey"]; + } + + if (requestParameters["enabled"] != null) { + queryParameters["enabled"] = requestParameters["enabled"]; + } + + if (requestParameters["enrollmentFlow"] != null) { + queryParameters["enrollment_flow"] = requestParameters["enrollmentFlow"]; + } + + if (requestParameters["groupMatchingMode"] != null) { + queryParameters["group_matching_mode"] = requestParameters["groupMatchingMode"]; + } + + if (requestParameters["hasJwks"] != null) { + queryParameters["has_jwks"] = requestParameters["hasJwks"]; + } + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["pbmUuid"] != null) { + queryParameters["pbm_uuid"] = requestParameters["pbmUuid"]; + } + + if (requestParameters["policyEngineMode"] != null) { + queryParameters["policy_engine_mode"] = requestParameters["policyEngineMode"]; + } + + if (requestParameters["profileUrl"] != null) { + queryParameters["profile_url"] = requestParameters["profileUrl"]; + } + + if (requestParameters["providerType"] != null) { + queryParameters["provider_type"] = requestParameters["providerType"]; + } + + if (requestParameters["requestTokenUrl"] != null) { + queryParameters["request_token_url"] = requestParameters["requestTokenUrl"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["slug"] != null) { + queryParameters["slug"] = requestParameters["slug"]; + } + + if (requestParameters["userMatchingMode"] != null) { + queryParameters["user_matching_mode"] = requestParameters["userMatchingMode"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/oauth/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Source Viewset + */ + async sourcesOauthListRaw( + requestParameters: SourcesOauthListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.sourcesOauthListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedOAuthSourceListFromJSON(jsonValue), + ); + } + + /** + * Source Viewset + */ + async sourcesOauthList( + requestParameters: SourcesOauthListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesOauthListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for sourcesOauthPartialUpdate without sending the request + */ + async sourcesOauthPartialUpdateRequestOpts( + requestParameters: SourcesOauthPartialUpdateRequest, + ): Promise { + if (requestParameters["slug"] == null) { + throw new runtime.RequiredError( + "slug", + 'Required parameter "slug" was null or undefined when calling sourcesOauthPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/oauth/{slug}/`; + urlPath = urlPath.replace( + `{${"slug"}}`, + encodeURIComponent(String(requestParameters["slug"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedOAuthSourceRequestToJSON(requestParameters["patchedOAuthSourceRequest"]), + }; + } + + /** + * Source Viewset + */ + async sourcesOauthPartialUpdateRaw( + requestParameters: SourcesOauthPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.sourcesOauthPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => OAuthSourceFromJSON(jsonValue)); + } + + /** + * Source Viewset + */ + async sourcesOauthPartialUpdate( + requestParameters: SourcesOauthPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesOauthPartialUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for sourcesOauthRetrieve without sending the request + */ + async sourcesOauthRetrieveRequestOpts( + requestParameters: SourcesOauthRetrieveRequest, + ): Promise { + if (requestParameters["slug"] == null) { + throw new runtime.RequiredError( + "slug", + 'Required parameter "slug" was null or undefined when calling sourcesOauthRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/oauth/{slug}/`; + urlPath = urlPath.replace( + `{${"slug"}}`, + encodeURIComponent(String(requestParameters["slug"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Source Viewset + */ + async sourcesOauthRetrieveRaw( + requestParameters: SourcesOauthRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.sourcesOauthRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => OAuthSourceFromJSON(jsonValue)); + } + + /** + * Source Viewset + */ + async sourcesOauthRetrieve( + requestParameters: SourcesOauthRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesOauthRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for sourcesOauthSourceTypesList without sending the request + */ + async sourcesOauthSourceTypesListRequestOpts( + requestParameters: SourcesOauthSourceTypesListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/oauth/source_types/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get all creatable source types. If ?name is set, only returns the type for . If isn\'t found, returns the default type. + */ + async sourcesOauthSourceTypesListRaw( + requestParameters: SourcesOauthSourceTypesListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.sourcesOauthSourceTypesListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + jsonValue.map(SourceTypeFromJSON), + ); + } + + /** + * Get all creatable source types. If ?name is set, only returns the type for . If isn\'t found, returns the default type. + */ + async sourcesOauthSourceTypesList( + requestParameters: SourcesOauthSourceTypesListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.sourcesOauthSourceTypesListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesOauthUpdate without sending the request + */ + async sourcesOauthUpdateRequestOpts( + requestParameters: SourcesOauthUpdateRequest, + ): Promise { + if (requestParameters["slug"] == null) { + throw new runtime.RequiredError( + "slug", + 'Required parameter "slug" was null or undefined when calling sourcesOauthUpdate().', + ); + } + + if (requestParameters["oAuthSourceRequest"] == null) { + throw new runtime.RequiredError( + "oAuthSourceRequest", + 'Required parameter "oAuthSourceRequest" was null or undefined when calling sourcesOauthUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/oauth/{slug}/`; + urlPath = urlPath.replace( + `{${"slug"}}`, + encodeURIComponent(String(requestParameters["slug"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: OAuthSourceRequestToJSON(requestParameters["oAuthSourceRequest"]), + }; + } + + /** + * Source Viewset + */ + async sourcesOauthUpdateRaw( + requestParameters: SourcesOauthUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.sourcesOauthUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => OAuthSourceFromJSON(jsonValue)); + } + + /** + * Source Viewset + */ + async sourcesOauthUpdate( + requestParameters: SourcesOauthUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesOauthUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for sourcesOauthUsedByList without sending the request + */ + async sourcesOauthUsedByListRequestOpts( + requestParameters: SourcesOauthUsedByListRequest, + ): Promise { + if (requestParameters["slug"] == null) { + throw new runtime.RequiredError( + "slug", + 'Required parameter "slug" was null or undefined when calling sourcesOauthUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/oauth/{slug}/used_by/`; + urlPath = urlPath.replace( + `{${"slug"}}`, + encodeURIComponent(String(requestParameters["slug"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async sourcesOauthUsedByListRaw( + requestParameters: SourcesOauthUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.sourcesOauthUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async sourcesOauthUsedByList( + requestParameters: SourcesOauthUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.sourcesOauthUsedByListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for sourcesPlexCreate without sending the request + */ + async sourcesPlexCreateRequestOpts( + requestParameters: SourcesPlexCreateRequest, + ): Promise { + if (requestParameters["plexSourceRequest"] == null) { + throw new runtime.RequiredError( + "plexSourceRequest", + 'Required parameter "plexSourceRequest" was null or undefined when calling sourcesPlexCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/plex/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: PlexSourceRequestToJSON(requestParameters["plexSourceRequest"]), + }; + } + + /** + * Plex source Viewset + */ + async sourcesPlexCreateRaw( + requestParameters: SourcesPlexCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.sourcesPlexCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => PlexSourceFromJSON(jsonValue)); + } + + /** + * Plex source Viewset + */ + async sourcesPlexCreate( + requestParameters: SourcesPlexCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesPlexCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for sourcesPlexDestroy without sending the request + */ + async sourcesPlexDestroyRequestOpts( + requestParameters: SourcesPlexDestroyRequest, + ): Promise { + if (requestParameters["slug"] == null) { + throw new runtime.RequiredError( + "slug", + 'Required parameter "slug" was null or undefined when calling sourcesPlexDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/plex/{slug}/`; + urlPath = urlPath.replace( + `{${"slug"}}`, + encodeURIComponent(String(requestParameters["slug"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Plex source Viewset + */ + async sourcesPlexDestroyRaw( + requestParameters: SourcesPlexDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.sourcesPlexDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Plex source Viewset + */ + async sourcesPlexDestroy( + requestParameters: SourcesPlexDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.sourcesPlexDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for sourcesPlexList without sending the request + */ + async sourcesPlexListRequestOpts( + requestParameters: SourcesPlexListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["allowFriends"] != null) { + queryParameters["allow_friends"] = requestParameters["allowFriends"]; + } + + if (requestParameters["authenticationFlow"] != null) { + queryParameters["authentication_flow"] = requestParameters["authenticationFlow"]; + } + + if (requestParameters["clientId"] != null) { + queryParameters["client_id"] = requestParameters["clientId"]; + } + + if (requestParameters["enabled"] != null) { + queryParameters["enabled"] = requestParameters["enabled"]; + } + + if (requestParameters["enrollmentFlow"] != null) { + queryParameters["enrollment_flow"] = requestParameters["enrollmentFlow"]; + } + + if (requestParameters["groupMatchingMode"] != null) { + queryParameters["group_matching_mode"] = requestParameters["groupMatchingMode"]; + } + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["pbmUuid"] != null) { + queryParameters["pbm_uuid"] = requestParameters["pbmUuid"]; + } + + if (requestParameters["policyEngineMode"] != null) { + queryParameters["policy_engine_mode"] = requestParameters["policyEngineMode"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["slug"] != null) { + queryParameters["slug"] = requestParameters["slug"]; + } + + if (requestParameters["userMatchingMode"] != null) { + queryParameters["user_matching_mode"] = requestParameters["userMatchingMode"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/plex/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Plex source Viewset + */ + async sourcesPlexListRaw( + requestParameters: SourcesPlexListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.sourcesPlexListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedPlexSourceListFromJSON(jsonValue), + ); + } + + /** + * Plex source Viewset + */ + async sourcesPlexList( + requestParameters: SourcesPlexListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesPlexListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for sourcesPlexPartialUpdate without sending the request + */ + async sourcesPlexPartialUpdateRequestOpts( + requestParameters: SourcesPlexPartialUpdateRequest, + ): Promise { + if (requestParameters["slug"] == null) { + throw new runtime.RequiredError( + "slug", + 'Required parameter "slug" was null or undefined when calling sourcesPlexPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/plex/{slug}/`; + urlPath = urlPath.replace( + `{${"slug"}}`, + encodeURIComponent(String(requestParameters["slug"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedPlexSourceRequestToJSON(requestParameters["patchedPlexSourceRequest"]), + }; + } + + /** + * Plex source Viewset + */ + async sourcesPlexPartialUpdateRaw( + requestParameters: SourcesPlexPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.sourcesPlexPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => PlexSourceFromJSON(jsonValue)); + } + + /** + * Plex source Viewset + */ + async sourcesPlexPartialUpdate( + requestParameters: SourcesPlexPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesPlexPartialUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for sourcesPlexRedeemTokenAuthenticatedCreate without sending the request + */ + async sourcesPlexRedeemTokenAuthenticatedCreateRequestOpts( + requestParameters: SourcesPlexRedeemTokenAuthenticatedCreateRequest, + ): Promise { + if (requestParameters["plexTokenRedeemRequest"] == null) { + throw new runtime.RequiredError( + "plexTokenRedeemRequest", + 'Required parameter "plexTokenRedeemRequest" was null or undefined when calling sourcesPlexRedeemTokenAuthenticatedCreate().', + ); + } + + const queryParameters: any = {}; + + if (requestParameters["slug"] != null) { + queryParameters["slug"] = requestParameters["slug"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/plex/redeem_token_authenticated/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: PlexTokenRedeemRequestToJSON(requestParameters["plexTokenRedeemRequest"]), + }; + } + + /** + * Redeem a plex token for an authenticated user, creating a connection + */ + async sourcesPlexRedeemTokenAuthenticatedCreateRaw( + requestParameters: SourcesPlexRedeemTokenAuthenticatedCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesPlexRedeemTokenAuthenticatedCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Redeem a plex token for an authenticated user, creating a connection + */ + async sourcesPlexRedeemTokenAuthenticatedCreate( + requestParameters: SourcesPlexRedeemTokenAuthenticatedCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.sourcesPlexRedeemTokenAuthenticatedCreateRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for sourcesPlexRedeemTokenCreate without sending the request + */ + async sourcesPlexRedeemTokenCreateRequestOpts( + requestParameters: SourcesPlexRedeemTokenCreateRequest, + ): Promise { + if (requestParameters["plexTokenRedeemRequest"] == null) { + throw new runtime.RequiredError( + "plexTokenRedeemRequest", + 'Required parameter "plexTokenRedeemRequest" was null or undefined when calling sourcesPlexRedeemTokenCreate().', + ); + } + + const queryParameters: any = {}; + + if (requestParameters["slug"] != null) { + queryParameters["slug"] = requestParameters["slug"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/plex/redeem_token/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: PlexTokenRedeemRequestToJSON(requestParameters["plexTokenRedeemRequest"]), + }; + } + + /** + * Redeem a plex token, check it\'s access to resources against what\'s allowed for the source, and redirect to an authentication/enrollment flow. + */ + async sourcesPlexRedeemTokenCreateRaw( + requestParameters: SourcesPlexRedeemTokenCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesPlexRedeemTokenCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + RedirectChallengeFromJSON(jsonValue), + ); + } + + /** + * Redeem a plex token, check it\'s access to resources against what\'s allowed for the source, and redirect to an authentication/enrollment flow. + */ + async sourcesPlexRedeemTokenCreate( + requestParameters: SourcesPlexRedeemTokenCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesPlexRedeemTokenCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesPlexRetrieve without sending the request + */ + async sourcesPlexRetrieveRequestOpts( + requestParameters: SourcesPlexRetrieveRequest, + ): Promise { + if (requestParameters["slug"] == null) { + throw new runtime.RequiredError( + "slug", + 'Required parameter "slug" was null or undefined when calling sourcesPlexRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/plex/{slug}/`; + urlPath = urlPath.replace( + `{${"slug"}}`, + encodeURIComponent(String(requestParameters["slug"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Plex source Viewset + */ + async sourcesPlexRetrieveRaw( + requestParameters: SourcesPlexRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.sourcesPlexRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => PlexSourceFromJSON(jsonValue)); + } + + /** + * Plex source Viewset + */ + async sourcesPlexRetrieve( + requestParameters: SourcesPlexRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesPlexRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for sourcesPlexUpdate without sending the request + */ + async sourcesPlexUpdateRequestOpts( + requestParameters: SourcesPlexUpdateRequest, + ): Promise { + if (requestParameters["slug"] == null) { + throw new runtime.RequiredError( + "slug", + 'Required parameter "slug" was null or undefined when calling sourcesPlexUpdate().', + ); + } + + if (requestParameters["plexSourceRequest"] == null) { + throw new runtime.RequiredError( + "plexSourceRequest", + 'Required parameter "plexSourceRequest" was null or undefined when calling sourcesPlexUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/plex/{slug}/`; + urlPath = urlPath.replace( + `{${"slug"}}`, + encodeURIComponent(String(requestParameters["slug"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: PlexSourceRequestToJSON(requestParameters["plexSourceRequest"]), + }; + } + + /** + * Plex source Viewset + */ + async sourcesPlexUpdateRaw( + requestParameters: SourcesPlexUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.sourcesPlexUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => PlexSourceFromJSON(jsonValue)); + } + + /** + * Plex source Viewset + */ + async sourcesPlexUpdate( + requestParameters: SourcesPlexUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesPlexUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for sourcesPlexUsedByList without sending the request + */ + async sourcesPlexUsedByListRequestOpts( + requestParameters: SourcesPlexUsedByListRequest, + ): Promise { + if (requestParameters["slug"] == null) { + throw new runtime.RequiredError( + "slug", + 'Required parameter "slug" was null or undefined when calling sourcesPlexUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/plex/{slug}/used_by/`; + urlPath = urlPath.replace( + `{${"slug"}}`, + encodeURIComponent(String(requestParameters["slug"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async sourcesPlexUsedByListRaw( + requestParameters: SourcesPlexUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.sourcesPlexUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async sourcesPlexUsedByList( + requestParameters: SourcesPlexUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.sourcesPlexUsedByListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for sourcesSamlCreate without sending the request + */ + async sourcesSamlCreateRequestOpts( + requestParameters: SourcesSamlCreateRequest, + ): Promise { + if (requestParameters["sAMLSourceRequest"] == null) { + throw new runtime.RequiredError( + "sAMLSourceRequest", + 'Required parameter "sAMLSourceRequest" was null or undefined when calling sourcesSamlCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/saml/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: SAMLSourceRequestToJSON(requestParameters["sAMLSourceRequest"]), + }; + } + + /** + * SAMLSource Viewset + */ + async sourcesSamlCreateRaw( + requestParameters: SourcesSamlCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.sourcesSamlCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => SAMLSourceFromJSON(jsonValue)); + } + + /** + * SAMLSource Viewset + */ + async sourcesSamlCreate( + requestParameters: SourcesSamlCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesSamlCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for sourcesSamlDestroy without sending the request + */ + async sourcesSamlDestroyRequestOpts( + requestParameters: SourcesSamlDestroyRequest, + ): Promise { + if (requestParameters["slug"] == null) { + throw new runtime.RequiredError( + "slug", + 'Required parameter "slug" was null or undefined when calling sourcesSamlDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/saml/{slug}/`; + urlPath = urlPath.replace( + `{${"slug"}}`, + encodeURIComponent(String(requestParameters["slug"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * SAMLSource Viewset + */ + async sourcesSamlDestroyRaw( + requestParameters: SourcesSamlDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.sourcesSamlDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * SAMLSource Viewset + */ + async sourcesSamlDestroy( + requestParameters: SourcesSamlDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.sourcesSamlDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for sourcesSamlList without sending the request + */ + async sourcesSamlListRequestOpts( + requestParameters: SourcesSamlListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["allowIdpInitiated"] != null) { + queryParameters["allow_idp_initiated"] = requestParameters["allowIdpInitiated"]; + } + + if (requestParameters["authenticationFlow"] != null) { + queryParameters["authentication_flow"] = requestParameters["authenticationFlow"]; + } + + if (requestParameters["bindingType"] != null) { + queryParameters["binding_type"] = requestParameters["bindingType"]; + } + + if (requestParameters["digestAlgorithm"] != null) { + queryParameters["digest_algorithm"] = requestParameters["digestAlgorithm"]; + } + + if (requestParameters["enabled"] != null) { + queryParameters["enabled"] = requestParameters["enabled"]; + } + + if (requestParameters["enrollmentFlow"] != null) { + queryParameters["enrollment_flow"] = requestParameters["enrollmentFlow"]; + } + + if (requestParameters["forceAuthn"] != null) { + queryParameters["force_authn"] = requestParameters["forceAuthn"]; + } + + if (requestParameters["issuer"] != null) { + queryParameters["issuer"] = requestParameters["issuer"]; + } + + if (requestParameters["managed"] != null) { + queryParameters["managed"] = requestParameters["managed"]; + } + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["nameIdPolicy"] != null) { + queryParameters["name_id_policy"] = requestParameters["nameIdPolicy"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["pbmUuid"] != null) { + queryParameters["pbm_uuid"] = requestParameters["pbmUuid"]; + } + + if (requestParameters["policyEngineMode"] != null) { + queryParameters["policy_engine_mode"] = requestParameters["policyEngineMode"]; + } + + if (requestParameters["preAuthenticationFlow"] != null) { + queryParameters["pre_authentication_flow"] = requestParameters["preAuthenticationFlow"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["signatureAlgorithm"] != null) { + queryParameters["signature_algorithm"] = requestParameters["signatureAlgorithm"]; + } + + if (requestParameters["signedAssertion"] != null) { + queryParameters["signed_assertion"] = requestParameters["signedAssertion"]; + } + + if (requestParameters["signedResponse"] != null) { + queryParameters["signed_response"] = requestParameters["signedResponse"]; + } + + if (requestParameters["signingKp"] != null) { + queryParameters["signing_kp"] = requestParameters["signingKp"]; + } + + if (requestParameters["sloUrl"] != null) { + queryParameters["slo_url"] = requestParameters["sloUrl"]; + } + + if (requestParameters["slug"] != null) { + queryParameters["slug"] = requestParameters["slug"]; + } + + if (requestParameters["ssoUrl"] != null) { + queryParameters["sso_url"] = requestParameters["ssoUrl"]; + } + + if (requestParameters["temporaryUserDeleteAfter"] != null) { + queryParameters["temporary_user_delete_after"] = + requestParameters["temporaryUserDeleteAfter"]; + } + + if (requestParameters["userMatchingMode"] != null) { + queryParameters["user_matching_mode"] = requestParameters["userMatchingMode"]; + } + + if (requestParameters["verificationKp"] != null) { + queryParameters["verification_kp"] = requestParameters["verificationKp"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/saml/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * SAMLSource Viewset + */ + async sourcesSamlListRaw( + requestParameters: SourcesSamlListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.sourcesSamlListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedSAMLSourceListFromJSON(jsonValue), + ); + } + + /** + * SAMLSource Viewset + */ + async sourcesSamlList( + requestParameters: SourcesSamlListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesSamlListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for sourcesSamlMetadataRetrieve without sending the request + */ + async sourcesSamlMetadataRetrieveRequestOpts( + requestParameters: SourcesSamlMetadataRetrieveRequest, + ): Promise { + if (requestParameters["slug"] == null) { + throw new runtime.RequiredError( + "slug", + 'Required parameter "slug" was null or undefined when calling sourcesSamlMetadataRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/saml/{slug}/metadata/`; + urlPath = urlPath.replace( + `{${"slug"}}`, + encodeURIComponent(String(requestParameters["slug"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Return metadata as XML string + */ + async sourcesSamlMetadataRetrieveRaw( + requestParameters: SourcesSamlMetadataRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.sourcesSamlMetadataRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + SAMLMetadataFromJSON(jsonValue), + ); + } + + /** + * Return metadata as XML string + */ + async sourcesSamlMetadataRetrieve( + requestParameters: SourcesSamlMetadataRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesSamlMetadataRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesSamlPartialUpdate without sending the request + */ + async sourcesSamlPartialUpdateRequestOpts( + requestParameters: SourcesSamlPartialUpdateRequest, + ): Promise { + if (requestParameters["slug"] == null) { + throw new runtime.RequiredError( + "slug", + 'Required parameter "slug" was null or undefined when calling sourcesSamlPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/saml/{slug}/`; + urlPath = urlPath.replace( + `{${"slug"}}`, + encodeURIComponent(String(requestParameters["slug"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedSAMLSourceRequestToJSON(requestParameters["patchedSAMLSourceRequest"]), + }; + } + + /** + * SAMLSource Viewset + */ + async sourcesSamlPartialUpdateRaw( + requestParameters: SourcesSamlPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.sourcesSamlPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => SAMLSourceFromJSON(jsonValue)); + } + + /** + * SAMLSource Viewset + */ + async sourcesSamlPartialUpdate( + requestParameters: SourcesSamlPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesSamlPartialUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for sourcesSamlRetrieve without sending the request + */ + async sourcesSamlRetrieveRequestOpts( + requestParameters: SourcesSamlRetrieveRequest, + ): Promise { + if (requestParameters["slug"] == null) { + throw new runtime.RequiredError( + "slug", + 'Required parameter "slug" was null or undefined when calling sourcesSamlRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/saml/{slug}/`; + urlPath = urlPath.replace( + `{${"slug"}}`, + encodeURIComponent(String(requestParameters["slug"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * SAMLSource Viewset + */ + async sourcesSamlRetrieveRaw( + requestParameters: SourcesSamlRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.sourcesSamlRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => SAMLSourceFromJSON(jsonValue)); + } + + /** + * SAMLSource Viewset + */ + async sourcesSamlRetrieve( + requestParameters: SourcesSamlRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesSamlRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for sourcesSamlUpdate without sending the request + */ + async sourcesSamlUpdateRequestOpts( + requestParameters: SourcesSamlUpdateRequest, + ): Promise { + if (requestParameters["slug"] == null) { + throw new runtime.RequiredError( + "slug", + 'Required parameter "slug" was null or undefined when calling sourcesSamlUpdate().', + ); + } + + if (requestParameters["sAMLSourceRequest"] == null) { + throw new runtime.RequiredError( + "sAMLSourceRequest", + 'Required parameter "sAMLSourceRequest" was null or undefined when calling sourcesSamlUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/saml/{slug}/`; + urlPath = urlPath.replace( + `{${"slug"}}`, + encodeURIComponent(String(requestParameters["slug"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: SAMLSourceRequestToJSON(requestParameters["sAMLSourceRequest"]), + }; + } + + /** + * SAMLSource Viewset + */ + async sourcesSamlUpdateRaw( + requestParameters: SourcesSamlUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.sourcesSamlUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => SAMLSourceFromJSON(jsonValue)); + } + + /** + * SAMLSource Viewset + */ + async sourcesSamlUpdate( + requestParameters: SourcesSamlUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesSamlUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for sourcesSamlUsedByList without sending the request + */ + async sourcesSamlUsedByListRequestOpts( + requestParameters: SourcesSamlUsedByListRequest, + ): Promise { + if (requestParameters["slug"] == null) { + throw new runtime.RequiredError( + "slug", + 'Required parameter "slug" was null or undefined when calling sourcesSamlUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/saml/{slug}/used_by/`; + urlPath = urlPath.replace( + `{${"slug"}}`, + encodeURIComponent(String(requestParameters["slug"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async sourcesSamlUsedByListRaw( + requestParameters: SourcesSamlUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.sourcesSamlUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async sourcesSamlUsedByList( + requestParameters: SourcesSamlUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.sourcesSamlUsedByListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for sourcesScimCreate without sending the request + */ + async sourcesScimCreateRequestOpts( + requestParameters: SourcesScimCreateRequest, + ): Promise { + if (requestParameters["sCIMSourceRequest"] == null) { + throw new runtime.RequiredError( + "sCIMSourceRequest", + 'Required parameter "sCIMSourceRequest" was null or undefined when calling sourcesScimCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/scim/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: SCIMSourceRequestToJSON(requestParameters["sCIMSourceRequest"]), + }; + } + + /** + * SCIMSource Viewset + */ + async sourcesScimCreateRaw( + requestParameters: SourcesScimCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.sourcesScimCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => SCIMSourceFromJSON(jsonValue)); + } + + /** + * SCIMSource Viewset + */ + async sourcesScimCreate( + requestParameters: SourcesScimCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesScimCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for sourcesScimDestroy without sending the request + */ + async sourcesScimDestroyRequestOpts( + requestParameters: SourcesScimDestroyRequest, + ): Promise { + if (requestParameters["slug"] == null) { + throw new runtime.RequiredError( + "slug", + 'Required parameter "slug" was null or undefined when calling sourcesScimDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/scim/{slug}/`; + urlPath = urlPath.replace( + `{${"slug"}}`, + encodeURIComponent(String(requestParameters["slug"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * SCIMSource Viewset + */ + async sourcesScimDestroyRaw( + requestParameters: SourcesScimDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.sourcesScimDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * SCIMSource Viewset + */ + async sourcesScimDestroy( + requestParameters: SourcesScimDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.sourcesScimDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for sourcesScimGroupsCreate without sending the request + */ + async sourcesScimGroupsCreateRequestOpts( + requestParameters: SourcesScimGroupsCreateRequest, + ): Promise { + if (requestParameters["sCIMSourceGroupRequest"] == null) { + throw new runtime.RequiredError( + "sCIMSourceGroupRequest", + 'Required parameter "sCIMSourceGroupRequest" was null or undefined when calling sourcesScimGroupsCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/scim_groups/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: SCIMSourceGroupRequestToJSON(requestParameters["sCIMSourceGroupRequest"]), + }; + } + + /** + * SCIMSourceGroup Viewset + */ + async sourcesScimGroupsCreateRaw( + requestParameters: SourcesScimGroupsCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.sourcesScimGroupsCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + SCIMSourceGroupFromJSON(jsonValue), + ); + } + + /** + * SCIMSourceGroup Viewset + */ + async sourcesScimGroupsCreate( + requestParameters: SourcesScimGroupsCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesScimGroupsCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for sourcesScimGroupsDestroy without sending the request + */ + async sourcesScimGroupsDestroyRequestOpts( + requestParameters: SourcesScimGroupsDestroyRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesScimGroupsDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/scim_groups/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * SCIMSourceGroup Viewset + */ + async sourcesScimGroupsDestroyRaw( + requestParameters: SourcesScimGroupsDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.sourcesScimGroupsDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * SCIMSourceGroup Viewset + */ + async sourcesScimGroupsDestroy( + requestParameters: SourcesScimGroupsDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.sourcesScimGroupsDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for sourcesScimGroupsList without sending the request + */ + async sourcesScimGroupsListRequestOpts( + requestParameters: SourcesScimGroupsListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["groupGroupUuid"] != null) { + queryParameters["group__group_uuid"] = requestParameters["groupGroupUuid"]; + } + + if (requestParameters["groupName"] != null) { + queryParameters["group__name"] = requestParameters["groupName"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["sourceSlug"] != null) { + queryParameters["source__slug"] = requestParameters["sourceSlug"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/scim_groups/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * SCIMSourceGroup Viewset + */ + async sourcesScimGroupsListRaw( + requestParameters: SourcesScimGroupsListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.sourcesScimGroupsListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedSCIMSourceGroupListFromJSON(jsonValue), + ); + } + + /** + * SCIMSourceGroup Viewset + */ + async sourcesScimGroupsList( + requestParameters: SourcesScimGroupsListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesScimGroupsListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for sourcesScimGroupsPartialUpdate without sending the request + */ + async sourcesScimGroupsPartialUpdateRequestOpts( + requestParameters: SourcesScimGroupsPartialUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesScimGroupsPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/scim_groups/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedSCIMSourceGroupRequestToJSON( + requestParameters["patchedSCIMSourceGroupRequest"], + ), + }; + } + + /** + * SCIMSourceGroup Viewset + */ + async sourcesScimGroupsPartialUpdateRaw( + requestParameters: SourcesScimGroupsPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesScimGroupsPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + SCIMSourceGroupFromJSON(jsonValue), + ); + } + + /** + * SCIMSourceGroup Viewset + */ + async sourcesScimGroupsPartialUpdate( + requestParameters: SourcesScimGroupsPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesScimGroupsPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesScimGroupsRetrieve without sending the request + */ + async sourcesScimGroupsRetrieveRequestOpts( + requestParameters: SourcesScimGroupsRetrieveRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesScimGroupsRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/scim_groups/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * SCIMSourceGroup Viewset + */ + async sourcesScimGroupsRetrieveRaw( + requestParameters: SourcesScimGroupsRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.sourcesScimGroupsRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + SCIMSourceGroupFromJSON(jsonValue), + ); + } + + /** + * SCIMSourceGroup Viewset + */ + async sourcesScimGroupsRetrieve( + requestParameters: SourcesScimGroupsRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesScimGroupsRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for sourcesScimGroupsUpdate without sending the request + */ + async sourcesScimGroupsUpdateRequestOpts( + requestParameters: SourcesScimGroupsUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesScimGroupsUpdate().', + ); + } + + if (requestParameters["sCIMSourceGroupRequest"] == null) { + throw new runtime.RequiredError( + "sCIMSourceGroupRequest", + 'Required parameter "sCIMSourceGroupRequest" was null or undefined when calling sourcesScimGroupsUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/scim_groups/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: SCIMSourceGroupRequestToJSON(requestParameters["sCIMSourceGroupRequest"]), + }; + } + + /** + * SCIMSourceGroup Viewset + */ + async sourcesScimGroupsUpdateRaw( + requestParameters: SourcesScimGroupsUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.sourcesScimGroupsUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + SCIMSourceGroupFromJSON(jsonValue), + ); + } + + /** + * SCIMSourceGroup Viewset + */ + async sourcesScimGroupsUpdate( + requestParameters: SourcesScimGroupsUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesScimGroupsUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for sourcesScimGroupsUsedByList without sending the request + */ + async sourcesScimGroupsUsedByListRequestOpts( + requestParameters: SourcesScimGroupsUsedByListRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesScimGroupsUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/scim_groups/{id}/used_by/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async sourcesScimGroupsUsedByListRaw( + requestParameters: SourcesScimGroupsUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.sourcesScimGroupsUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async sourcesScimGroupsUsedByList( + requestParameters: SourcesScimGroupsUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.sourcesScimGroupsUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesScimList without sending the request + */ + async sourcesScimListRequestOpts( + requestParameters: SourcesScimListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["pbmUuid"] != null) { + queryParameters["pbm_uuid"] = requestParameters["pbmUuid"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["slug"] != null) { + queryParameters["slug"] = requestParameters["slug"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/scim/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * SCIMSource Viewset + */ + async sourcesScimListRaw( + requestParameters: SourcesScimListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.sourcesScimListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedSCIMSourceListFromJSON(jsonValue), + ); + } + + /** + * SCIMSource Viewset + */ + async sourcesScimList( + requestParameters: SourcesScimListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesScimListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for sourcesScimPartialUpdate without sending the request + */ + async sourcesScimPartialUpdateRequestOpts( + requestParameters: SourcesScimPartialUpdateRequest, + ): Promise { + if (requestParameters["slug"] == null) { + throw new runtime.RequiredError( + "slug", + 'Required parameter "slug" was null or undefined when calling sourcesScimPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/scim/{slug}/`; + urlPath = urlPath.replace( + `{${"slug"}}`, + encodeURIComponent(String(requestParameters["slug"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedSCIMSourceRequestToJSON(requestParameters["patchedSCIMSourceRequest"]), + }; + } + + /** + * SCIMSource Viewset + */ + async sourcesScimPartialUpdateRaw( + requestParameters: SourcesScimPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.sourcesScimPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => SCIMSourceFromJSON(jsonValue)); + } + + /** + * SCIMSource Viewset + */ + async sourcesScimPartialUpdate( + requestParameters: SourcesScimPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesScimPartialUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for sourcesScimRetrieve without sending the request + */ + async sourcesScimRetrieveRequestOpts( + requestParameters: SourcesScimRetrieveRequest, + ): Promise { + if (requestParameters["slug"] == null) { + throw new runtime.RequiredError( + "slug", + 'Required parameter "slug" was null or undefined when calling sourcesScimRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/scim/{slug}/`; + urlPath = urlPath.replace( + `{${"slug"}}`, + encodeURIComponent(String(requestParameters["slug"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * SCIMSource Viewset + */ + async sourcesScimRetrieveRaw( + requestParameters: SourcesScimRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.sourcesScimRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => SCIMSourceFromJSON(jsonValue)); + } + + /** + * SCIMSource Viewset + */ + async sourcesScimRetrieve( + requestParameters: SourcesScimRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesScimRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for sourcesScimUpdate without sending the request + */ + async sourcesScimUpdateRequestOpts( + requestParameters: SourcesScimUpdateRequest, + ): Promise { + if (requestParameters["slug"] == null) { + throw new runtime.RequiredError( + "slug", + 'Required parameter "slug" was null or undefined when calling sourcesScimUpdate().', + ); + } + + if (requestParameters["sCIMSourceRequest"] == null) { + throw new runtime.RequiredError( + "sCIMSourceRequest", + 'Required parameter "sCIMSourceRequest" was null or undefined when calling sourcesScimUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/scim/{slug}/`; + urlPath = urlPath.replace( + `{${"slug"}}`, + encodeURIComponent(String(requestParameters["slug"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: SCIMSourceRequestToJSON(requestParameters["sCIMSourceRequest"]), + }; + } + + /** + * SCIMSource Viewset + */ + async sourcesScimUpdateRaw( + requestParameters: SourcesScimUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.sourcesScimUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => SCIMSourceFromJSON(jsonValue)); + } + + /** + * SCIMSource Viewset + */ + async sourcesScimUpdate( + requestParameters: SourcesScimUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesScimUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for sourcesScimUsedByList without sending the request + */ + async sourcesScimUsedByListRequestOpts( + requestParameters: SourcesScimUsedByListRequest, + ): Promise { + if (requestParameters["slug"] == null) { + throw new runtime.RequiredError( + "slug", + 'Required parameter "slug" was null or undefined when calling sourcesScimUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/scim/{slug}/used_by/`; + urlPath = urlPath.replace( + `{${"slug"}}`, + encodeURIComponent(String(requestParameters["slug"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async sourcesScimUsedByListRaw( + requestParameters: SourcesScimUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.sourcesScimUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async sourcesScimUsedByList( + requestParameters: SourcesScimUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.sourcesScimUsedByListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for sourcesScimUsersCreate without sending the request + */ + async sourcesScimUsersCreateRequestOpts( + requestParameters: SourcesScimUsersCreateRequest, + ): Promise { + if (requestParameters["sCIMSourceUserRequest"] == null) { + throw new runtime.RequiredError( + "sCIMSourceUserRequest", + 'Required parameter "sCIMSourceUserRequest" was null or undefined when calling sourcesScimUsersCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/scim_users/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: SCIMSourceUserRequestToJSON(requestParameters["sCIMSourceUserRequest"]), + }; + } + + /** + * SCIMSourceUser Viewset + */ + async sourcesScimUsersCreateRaw( + requestParameters: SourcesScimUsersCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.sourcesScimUsersCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + SCIMSourceUserFromJSON(jsonValue), + ); + } + + /** + * SCIMSourceUser Viewset + */ + async sourcesScimUsersCreate( + requestParameters: SourcesScimUsersCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesScimUsersCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for sourcesScimUsersDestroy without sending the request + */ + async sourcesScimUsersDestroyRequestOpts( + requestParameters: SourcesScimUsersDestroyRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesScimUsersDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/scim_users/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * SCIMSourceUser Viewset + */ + async sourcesScimUsersDestroyRaw( + requestParameters: SourcesScimUsersDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.sourcesScimUsersDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * SCIMSourceUser Viewset + */ + async sourcesScimUsersDestroy( + requestParameters: SourcesScimUsersDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.sourcesScimUsersDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for sourcesScimUsersList without sending the request + */ + async sourcesScimUsersListRequestOpts( + requestParameters: SourcesScimUsersListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["sourceSlug"] != null) { + queryParameters["source__slug"] = requestParameters["sourceSlug"]; + } + + if (requestParameters["userId"] != null) { + queryParameters["user__id"] = requestParameters["userId"]; + } + + if (requestParameters["userUsername"] != null) { + queryParameters["user__username"] = requestParameters["userUsername"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/scim_users/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * SCIMSourceUser Viewset + */ + async sourcesScimUsersListRaw( + requestParameters: SourcesScimUsersListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.sourcesScimUsersListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedSCIMSourceUserListFromJSON(jsonValue), + ); + } + + /** + * SCIMSourceUser Viewset + */ + async sourcesScimUsersList( + requestParameters: SourcesScimUsersListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesScimUsersListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for sourcesScimUsersPartialUpdate without sending the request + */ + async sourcesScimUsersPartialUpdateRequestOpts( + requestParameters: SourcesScimUsersPartialUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesScimUsersPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/scim_users/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedSCIMSourceUserRequestToJSON( + requestParameters["patchedSCIMSourceUserRequest"], + ), + }; + } + + /** + * SCIMSourceUser Viewset + */ + async sourcesScimUsersPartialUpdateRaw( + requestParameters: SourcesScimUsersPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesScimUsersPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + SCIMSourceUserFromJSON(jsonValue), + ); + } + + /** + * SCIMSourceUser Viewset + */ + async sourcesScimUsersPartialUpdate( + requestParameters: SourcesScimUsersPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesScimUsersPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesScimUsersRetrieve without sending the request + */ + async sourcesScimUsersRetrieveRequestOpts( + requestParameters: SourcesScimUsersRetrieveRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesScimUsersRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/scim_users/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * SCIMSourceUser Viewset + */ + async sourcesScimUsersRetrieveRaw( + requestParameters: SourcesScimUsersRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.sourcesScimUsersRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + SCIMSourceUserFromJSON(jsonValue), + ); + } + + /** + * SCIMSourceUser Viewset + */ + async sourcesScimUsersRetrieve( + requestParameters: SourcesScimUsersRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesScimUsersRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for sourcesScimUsersUpdate without sending the request + */ + async sourcesScimUsersUpdateRequestOpts( + requestParameters: SourcesScimUsersUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesScimUsersUpdate().', + ); + } + + if (requestParameters["sCIMSourceUserRequest"] == null) { + throw new runtime.RequiredError( + "sCIMSourceUserRequest", + 'Required parameter "sCIMSourceUserRequest" was null or undefined when calling sourcesScimUsersUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/scim_users/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: SCIMSourceUserRequestToJSON(requestParameters["sCIMSourceUserRequest"]), + }; + } + + /** + * SCIMSourceUser Viewset + */ + async sourcesScimUsersUpdateRaw( + requestParameters: SourcesScimUsersUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.sourcesScimUsersUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + SCIMSourceUserFromJSON(jsonValue), + ); + } + + /** + * SCIMSourceUser Viewset + */ + async sourcesScimUsersUpdate( + requestParameters: SourcesScimUsersUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesScimUsersUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for sourcesScimUsersUsedByList without sending the request + */ + async sourcesScimUsersUsedByListRequestOpts( + requestParameters: SourcesScimUsersUsedByListRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesScimUsersUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/scim_users/{id}/used_by/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async sourcesScimUsersUsedByListRaw( + requestParameters: SourcesScimUsersUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.sourcesScimUsersUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async sourcesScimUsersUsedByList( + requestParameters: SourcesScimUsersUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.sourcesScimUsersUsedByListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for sourcesTelegramConnectUserCreate without sending the request + */ + async sourcesTelegramConnectUserCreateRequestOpts( + requestParameters: SourcesTelegramConnectUserCreateRequest, + ): Promise { + if (requestParameters["slug"] == null) { + throw new runtime.RequiredError( + "slug", + 'Required parameter "slug" was null or undefined when calling sourcesTelegramConnectUserCreate().', + ); + } + + if (requestParameters["telegramAuthRequest"] == null) { + throw new runtime.RequiredError( + "telegramAuthRequest", + 'Required parameter "telegramAuthRequest" was null or undefined when calling sourcesTelegramConnectUserCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/telegram/{slug}/connect_user/`; + urlPath = urlPath.replace( + `{${"slug"}}`, + encodeURIComponent(String(requestParameters["slug"])), + ); + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: TelegramAuthRequestToJSON(requestParameters["telegramAuthRequest"]), + }; + } + + /** + * Mixin to add a used_by endpoint to return a list of all objects using this object + */ + async sourcesTelegramConnectUserCreateRaw( + requestParameters: SourcesTelegramConnectUserCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesTelegramConnectUserCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + UserTelegramSourceConnectionFromJSON(jsonValue), + ); + } + + /** + * Mixin to add a used_by endpoint to return a list of all objects using this object + */ + async sourcesTelegramConnectUserCreate( + requestParameters: SourcesTelegramConnectUserCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesTelegramConnectUserCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesTelegramCreate without sending the request + */ + async sourcesTelegramCreateRequestOpts( + requestParameters: SourcesTelegramCreateRequest, + ): Promise { + if (requestParameters["telegramSourceRequest"] == null) { + throw new runtime.RequiredError( + "telegramSourceRequest", + 'Required parameter "telegramSourceRequest" was null or undefined when calling sourcesTelegramCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/telegram/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: TelegramSourceRequestToJSON(requestParameters["telegramSourceRequest"]), + }; + } + + /** + * Mixin to add a used_by endpoint to return a list of all objects using this object + */ + async sourcesTelegramCreateRaw( + requestParameters: SourcesTelegramCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.sourcesTelegramCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + TelegramSourceFromJSON(jsonValue), + ); + } + + /** + * Mixin to add a used_by endpoint to return a list of all objects using this object + */ + async sourcesTelegramCreate( + requestParameters: SourcesTelegramCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesTelegramCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for sourcesTelegramDestroy without sending the request + */ + async sourcesTelegramDestroyRequestOpts( + requestParameters: SourcesTelegramDestroyRequest, + ): Promise { + if (requestParameters["slug"] == null) { + throw new runtime.RequiredError( + "slug", + 'Required parameter "slug" was null or undefined when calling sourcesTelegramDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/telegram/{slug}/`; + urlPath = urlPath.replace( + `{${"slug"}}`, + encodeURIComponent(String(requestParameters["slug"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Mixin to add a used_by endpoint to return a list of all objects using this object + */ + async sourcesTelegramDestroyRaw( + requestParameters: SourcesTelegramDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.sourcesTelegramDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Mixin to add a used_by endpoint to return a list of all objects using this object + */ + async sourcesTelegramDestroy( + requestParameters: SourcesTelegramDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.sourcesTelegramDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for sourcesTelegramList without sending the request + */ + async sourcesTelegramListRequestOpts( + requestParameters: SourcesTelegramListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["authenticationFlow"] != null) { + queryParameters["authentication_flow"] = requestParameters["authenticationFlow"]; + } + + if (requestParameters["botUsername"] != null) { + queryParameters["bot_username"] = requestParameters["botUsername"]; + } + + if (requestParameters["enabled"] != null) { + queryParameters["enabled"] = requestParameters["enabled"]; + } + + if (requestParameters["enrollmentFlow"] != null) { + queryParameters["enrollment_flow"] = requestParameters["enrollmentFlow"]; + } + + if (requestParameters["groupMatchingMode"] != null) { + queryParameters["group_matching_mode"] = requestParameters["groupMatchingMode"]; + } + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["pbmUuid"] != null) { + queryParameters["pbm_uuid"] = requestParameters["pbmUuid"]; + } + + if (requestParameters["policyEngineMode"] != null) { + queryParameters["policy_engine_mode"] = requestParameters["policyEngineMode"]; + } + + if (requestParameters["requestMessageAccess"] != null) { + queryParameters["request_message_access"] = requestParameters["requestMessageAccess"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["slug"] != null) { + queryParameters["slug"] = requestParameters["slug"]; + } + + if (requestParameters["userMatchingMode"] != null) { + queryParameters["user_matching_mode"] = requestParameters["userMatchingMode"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/telegram/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Mixin to add a used_by endpoint to return a list of all objects using this object + */ + async sourcesTelegramListRaw( + requestParameters: SourcesTelegramListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.sourcesTelegramListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedTelegramSourceListFromJSON(jsonValue), + ); + } + + /** + * Mixin to add a used_by endpoint to return a list of all objects using this object + */ + async sourcesTelegramList( + requestParameters: SourcesTelegramListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesTelegramListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for sourcesTelegramPartialUpdate without sending the request + */ + async sourcesTelegramPartialUpdateRequestOpts( + requestParameters: SourcesTelegramPartialUpdateRequest, + ): Promise { + if (requestParameters["slug"] == null) { + throw new runtime.RequiredError( + "slug", + 'Required parameter "slug" was null or undefined when calling sourcesTelegramPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/telegram/{slug}/`; + urlPath = urlPath.replace( + `{${"slug"}}`, + encodeURIComponent(String(requestParameters["slug"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedTelegramSourceRequestToJSON( + requestParameters["patchedTelegramSourceRequest"], + ), + }; + } + + /** + * Mixin to add a used_by endpoint to return a list of all objects using this object + */ + async sourcesTelegramPartialUpdateRaw( + requestParameters: SourcesTelegramPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesTelegramPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + TelegramSourceFromJSON(jsonValue), + ); + } + + /** + * Mixin to add a used_by endpoint to return a list of all objects using this object + */ + async sourcesTelegramPartialUpdate( + requestParameters: SourcesTelegramPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesTelegramPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesTelegramRetrieve without sending the request + */ + async sourcesTelegramRetrieveRequestOpts( + requestParameters: SourcesTelegramRetrieveRequest, + ): Promise { + if (requestParameters["slug"] == null) { + throw new runtime.RequiredError( + "slug", + 'Required parameter "slug" was null or undefined when calling sourcesTelegramRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/telegram/{slug}/`; + urlPath = urlPath.replace( + `{${"slug"}}`, + encodeURIComponent(String(requestParameters["slug"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Mixin to add a used_by endpoint to return a list of all objects using this object + */ + async sourcesTelegramRetrieveRaw( + requestParameters: SourcesTelegramRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.sourcesTelegramRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + TelegramSourceFromJSON(jsonValue), + ); + } + + /** + * Mixin to add a used_by endpoint to return a list of all objects using this object + */ + async sourcesTelegramRetrieve( + requestParameters: SourcesTelegramRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesTelegramRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for sourcesTelegramUpdate without sending the request + */ + async sourcesTelegramUpdateRequestOpts( + requestParameters: SourcesTelegramUpdateRequest, + ): Promise { + if (requestParameters["slug"] == null) { + throw new runtime.RequiredError( + "slug", + 'Required parameter "slug" was null or undefined when calling sourcesTelegramUpdate().', + ); + } + + if (requestParameters["telegramSourceRequest"] == null) { + throw new runtime.RequiredError( + "telegramSourceRequest", + 'Required parameter "telegramSourceRequest" was null or undefined when calling sourcesTelegramUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/telegram/{slug}/`; + urlPath = urlPath.replace( + `{${"slug"}}`, + encodeURIComponent(String(requestParameters["slug"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: TelegramSourceRequestToJSON(requestParameters["telegramSourceRequest"]), + }; + } + + /** + * Mixin to add a used_by endpoint to return a list of all objects using this object + */ + async sourcesTelegramUpdateRaw( + requestParameters: SourcesTelegramUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.sourcesTelegramUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + TelegramSourceFromJSON(jsonValue), + ); + } + + /** + * Mixin to add a used_by endpoint to return a list of all objects using this object + */ + async sourcesTelegramUpdate( + requestParameters: SourcesTelegramUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesTelegramUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for sourcesTelegramUsedByList without sending the request + */ + async sourcesTelegramUsedByListRequestOpts( + requestParameters: SourcesTelegramUsedByListRequest, + ): Promise { + if (requestParameters["slug"] == null) { + throw new runtime.RequiredError( + "slug", + 'Required parameter "slug" was null or undefined when calling sourcesTelegramUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/telegram/{slug}/used_by/`; + urlPath = urlPath.replace( + `{${"slug"}}`, + encodeURIComponent(String(requestParameters["slug"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async sourcesTelegramUsedByListRaw( + requestParameters: SourcesTelegramUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.sourcesTelegramUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async sourcesTelegramUsedByList( + requestParameters: SourcesTelegramUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.sourcesTelegramUsedByListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for sourcesUserConnectionsAllDestroy without sending the request + */ + async sourcesUserConnectionsAllDestroyRequestOpts( + requestParameters: SourcesUserConnectionsAllDestroyRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesUserConnectionsAllDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/user_connections/all/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsAllDestroyRaw( + requestParameters: SourcesUserConnectionsAllDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesUserConnectionsAllDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsAllDestroy( + requestParameters: SourcesUserConnectionsAllDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.sourcesUserConnectionsAllDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for sourcesUserConnectionsAllList without sending the request + */ + async sourcesUserConnectionsAllListRequestOpts( + requestParameters: SourcesUserConnectionsAllListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["sourceSlug"] != null) { + queryParameters["source__slug"] = requestParameters["sourceSlug"]; + } + + if (requestParameters["user"] != null) { + queryParameters["user"] = requestParameters["user"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/user_connections/all/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsAllListRaw( + requestParameters: SourcesUserConnectionsAllListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesUserConnectionsAllListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedUserSourceConnectionListFromJSON(jsonValue), + ); + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsAllList( + requestParameters: SourcesUserConnectionsAllListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesUserConnectionsAllListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesUserConnectionsAllPartialUpdate without sending the request + */ + async sourcesUserConnectionsAllPartialUpdateRequestOpts( + requestParameters: SourcesUserConnectionsAllPartialUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesUserConnectionsAllPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/user_connections/all/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedUserSourceConnectionRequestToJSON( + requestParameters["patchedUserSourceConnectionRequest"], + ), + }; + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsAllPartialUpdateRaw( + requestParameters: SourcesUserConnectionsAllPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesUserConnectionsAllPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + UserSourceConnectionFromJSON(jsonValue), + ); + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsAllPartialUpdate( + requestParameters: SourcesUserConnectionsAllPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesUserConnectionsAllPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesUserConnectionsAllRetrieve without sending the request + */ + async sourcesUserConnectionsAllRetrieveRequestOpts( + requestParameters: SourcesUserConnectionsAllRetrieveRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesUserConnectionsAllRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/user_connections/all/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsAllRetrieveRaw( + requestParameters: SourcesUserConnectionsAllRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesUserConnectionsAllRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + UserSourceConnectionFromJSON(jsonValue), + ); + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsAllRetrieve( + requestParameters: SourcesUserConnectionsAllRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesUserConnectionsAllRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesUserConnectionsAllUpdate without sending the request + */ + async sourcesUserConnectionsAllUpdateRequestOpts( + requestParameters: SourcesUserConnectionsAllUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesUserConnectionsAllUpdate().', + ); + } + + if (requestParameters["userSourceConnectionRequest"] == null) { + throw new runtime.RequiredError( + "userSourceConnectionRequest", + 'Required parameter "userSourceConnectionRequest" was null or undefined when calling sourcesUserConnectionsAllUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/user_connections/all/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: UserSourceConnectionRequestToJSON( + requestParameters["userSourceConnectionRequest"], + ), + }; + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsAllUpdateRaw( + requestParameters: SourcesUserConnectionsAllUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesUserConnectionsAllUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + UserSourceConnectionFromJSON(jsonValue), + ); + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsAllUpdate( + requestParameters: SourcesUserConnectionsAllUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesUserConnectionsAllUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesUserConnectionsAllUsedByList without sending the request + */ + async sourcesUserConnectionsAllUsedByListRequestOpts( + requestParameters: SourcesUserConnectionsAllUsedByListRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesUserConnectionsAllUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/user_connections/all/{id}/used_by/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async sourcesUserConnectionsAllUsedByListRaw( + requestParameters: SourcesUserConnectionsAllUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.sourcesUserConnectionsAllUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async sourcesUserConnectionsAllUsedByList( + requestParameters: SourcesUserConnectionsAllUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.sourcesUserConnectionsAllUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesUserConnectionsKerberosCreate without sending the request + */ + async sourcesUserConnectionsKerberosCreateRequestOpts( + requestParameters: SourcesUserConnectionsKerberosCreateRequest, + ): Promise { + if (requestParameters["userKerberosSourceConnectionRequest"] == null) { + throw new runtime.RequiredError( + "userKerberosSourceConnectionRequest", + 'Required parameter "userKerberosSourceConnectionRequest" was null or undefined when calling sourcesUserConnectionsKerberosCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/user_connections/kerberos/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: UserKerberosSourceConnectionRequestToJSON( + requestParameters["userKerberosSourceConnectionRequest"], + ), + }; + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsKerberosCreateRaw( + requestParameters: SourcesUserConnectionsKerberosCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesUserConnectionsKerberosCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + UserKerberosSourceConnectionFromJSON(jsonValue), + ); + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsKerberosCreate( + requestParameters: SourcesUserConnectionsKerberosCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesUserConnectionsKerberosCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesUserConnectionsKerberosDestroy without sending the request + */ + async sourcesUserConnectionsKerberosDestroyRequestOpts( + requestParameters: SourcesUserConnectionsKerberosDestroyRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesUserConnectionsKerberosDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/user_connections/kerberos/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsKerberosDestroyRaw( + requestParameters: SourcesUserConnectionsKerberosDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesUserConnectionsKerberosDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsKerberosDestroy( + requestParameters: SourcesUserConnectionsKerberosDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.sourcesUserConnectionsKerberosDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for sourcesUserConnectionsKerberosList without sending the request + */ + async sourcesUserConnectionsKerberosListRequestOpts( + requestParameters: SourcesUserConnectionsKerberosListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["sourceSlug"] != null) { + queryParameters["source__slug"] = requestParameters["sourceSlug"]; + } + + if (requestParameters["user"] != null) { + queryParameters["user"] = requestParameters["user"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/user_connections/kerberos/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsKerberosListRaw( + requestParameters: SourcesUserConnectionsKerberosListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesUserConnectionsKerberosListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedUserKerberosSourceConnectionListFromJSON(jsonValue), + ); + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsKerberosList( + requestParameters: SourcesUserConnectionsKerberosListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesUserConnectionsKerberosListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesUserConnectionsKerberosPartialUpdate without sending the request + */ + async sourcesUserConnectionsKerberosPartialUpdateRequestOpts( + requestParameters: SourcesUserConnectionsKerberosPartialUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesUserConnectionsKerberosPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/user_connections/kerberos/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedUserKerberosSourceConnectionRequestToJSON( + requestParameters["patchedUserKerberosSourceConnectionRequest"], + ), + }; + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsKerberosPartialUpdateRaw( + requestParameters: SourcesUserConnectionsKerberosPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesUserConnectionsKerberosPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + UserKerberosSourceConnectionFromJSON(jsonValue), + ); + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsKerberosPartialUpdate( + requestParameters: SourcesUserConnectionsKerberosPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesUserConnectionsKerberosPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesUserConnectionsKerberosRetrieve without sending the request + */ + async sourcesUserConnectionsKerberosRetrieveRequestOpts( + requestParameters: SourcesUserConnectionsKerberosRetrieveRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesUserConnectionsKerberosRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/user_connections/kerberos/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsKerberosRetrieveRaw( + requestParameters: SourcesUserConnectionsKerberosRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesUserConnectionsKerberosRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + UserKerberosSourceConnectionFromJSON(jsonValue), + ); + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsKerberosRetrieve( + requestParameters: SourcesUserConnectionsKerberosRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesUserConnectionsKerberosRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesUserConnectionsKerberosUpdate without sending the request + */ + async sourcesUserConnectionsKerberosUpdateRequestOpts( + requestParameters: SourcesUserConnectionsKerberosUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesUserConnectionsKerberosUpdate().', + ); + } + + if (requestParameters["userKerberosSourceConnectionRequest"] == null) { + throw new runtime.RequiredError( + "userKerberosSourceConnectionRequest", + 'Required parameter "userKerberosSourceConnectionRequest" was null or undefined when calling sourcesUserConnectionsKerberosUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/user_connections/kerberos/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: UserKerberosSourceConnectionRequestToJSON( + requestParameters["userKerberosSourceConnectionRequest"], + ), + }; + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsKerberosUpdateRaw( + requestParameters: SourcesUserConnectionsKerberosUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesUserConnectionsKerberosUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + UserKerberosSourceConnectionFromJSON(jsonValue), + ); + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsKerberosUpdate( + requestParameters: SourcesUserConnectionsKerberosUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesUserConnectionsKerberosUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesUserConnectionsKerberosUsedByList without sending the request + */ + async sourcesUserConnectionsKerberosUsedByListRequestOpts( + requestParameters: SourcesUserConnectionsKerberosUsedByListRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesUserConnectionsKerberosUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/user_connections/kerberos/{id}/used_by/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async sourcesUserConnectionsKerberosUsedByListRaw( + requestParameters: SourcesUserConnectionsKerberosUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.sourcesUserConnectionsKerberosUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async sourcesUserConnectionsKerberosUsedByList( + requestParameters: SourcesUserConnectionsKerberosUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.sourcesUserConnectionsKerberosUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesUserConnectionsLdapCreate without sending the request + */ + async sourcesUserConnectionsLdapCreateRequestOpts( + requestParameters: SourcesUserConnectionsLdapCreateRequest, + ): Promise { + if (requestParameters["userLDAPSourceConnectionRequest"] == null) { + throw new runtime.RequiredError( + "userLDAPSourceConnectionRequest", + 'Required parameter "userLDAPSourceConnectionRequest" was null or undefined when calling sourcesUserConnectionsLdapCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/user_connections/ldap/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: UserLDAPSourceConnectionRequestToJSON( + requestParameters["userLDAPSourceConnectionRequest"], + ), + }; + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsLdapCreateRaw( + requestParameters: SourcesUserConnectionsLdapCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesUserConnectionsLdapCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + UserLDAPSourceConnectionFromJSON(jsonValue), + ); + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsLdapCreate( + requestParameters: SourcesUserConnectionsLdapCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesUserConnectionsLdapCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesUserConnectionsLdapDestroy without sending the request + */ + async sourcesUserConnectionsLdapDestroyRequestOpts( + requestParameters: SourcesUserConnectionsLdapDestroyRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesUserConnectionsLdapDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/user_connections/ldap/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsLdapDestroyRaw( + requestParameters: SourcesUserConnectionsLdapDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesUserConnectionsLdapDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsLdapDestroy( + requestParameters: SourcesUserConnectionsLdapDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.sourcesUserConnectionsLdapDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for sourcesUserConnectionsLdapList without sending the request + */ + async sourcesUserConnectionsLdapListRequestOpts( + requestParameters: SourcesUserConnectionsLdapListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["sourceSlug"] != null) { + queryParameters["source__slug"] = requestParameters["sourceSlug"]; + } + + if (requestParameters["user"] != null) { + queryParameters["user"] = requestParameters["user"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/user_connections/ldap/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsLdapListRaw( + requestParameters: SourcesUserConnectionsLdapListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesUserConnectionsLdapListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedUserLDAPSourceConnectionListFromJSON(jsonValue), + ); + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsLdapList( + requestParameters: SourcesUserConnectionsLdapListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesUserConnectionsLdapListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesUserConnectionsLdapPartialUpdate without sending the request + */ + async sourcesUserConnectionsLdapPartialUpdateRequestOpts( + requestParameters: SourcesUserConnectionsLdapPartialUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesUserConnectionsLdapPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/user_connections/ldap/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedUserLDAPSourceConnectionRequestToJSON( + requestParameters["patchedUserLDAPSourceConnectionRequest"], + ), + }; + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsLdapPartialUpdateRaw( + requestParameters: SourcesUserConnectionsLdapPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesUserConnectionsLdapPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + UserLDAPSourceConnectionFromJSON(jsonValue), + ); + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsLdapPartialUpdate( + requestParameters: SourcesUserConnectionsLdapPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesUserConnectionsLdapPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesUserConnectionsLdapRetrieve without sending the request + */ + async sourcesUserConnectionsLdapRetrieveRequestOpts( + requestParameters: SourcesUserConnectionsLdapRetrieveRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesUserConnectionsLdapRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/user_connections/ldap/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsLdapRetrieveRaw( + requestParameters: SourcesUserConnectionsLdapRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesUserConnectionsLdapRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + UserLDAPSourceConnectionFromJSON(jsonValue), + ); + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsLdapRetrieve( + requestParameters: SourcesUserConnectionsLdapRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesUserConnectionsLdapRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesUserConnectionsLdapUpdate without sending the request + */ + async sourcesUserConnectionsLdapUpdateRequestOpts( + requestParameters: SourcesUserConnectionsLdapUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesUserConnectionsLdapUpdate().', + ); + } + + if (requestParameters["userLDAPSourceConnectionRequest"] == null) { + throw new runtime.RequiredError( + "userLDAPSourceConnectionRequest", + 'Required parameter "userLDAPSourceConnectionRequest" was null or undefined when calling sourcesUserConnectionsLdapUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/user_connections/ldap/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: UserLDAPSourceConnectionRequestToJSON( + requestParameters["userLDAPSourceConnectionRequest"], + ), + }; + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsLdapUpdateRaw( + requestParameters: SourcesUserConnectionsLdapUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesUserConnectionsLdapUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + UserLDAPSourceConnectionFromJSON(jsonValue), + ); + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsLdapUpdate( + requestParameters: SourcesUserConnectionsLdapUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesUserConnectionsLdapUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesUserConnectionsLdapUsedByList without sending the request + */ + async sourcesUserConnectionsLdapUsedByListRequestOpts( + requestParameters: SourcesUserConnectionsLdapUsedByListRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesUserConnectionsLdapUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/user_connections/ldap/{id}/used_by/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async sourcesUserConnectionsLdapUsedByListRaw( + requestParameters: SourcesUserConnectionsLdapUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.sourcesUserConnectionsLdapUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async sourcesUserConnectionsLdapUsedByList( + requestParameters: SourcesUserConnectionsLdapUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.sourcesUserConnectionsLdapUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesUserConnectionsOauthCreate without sending the request + */ + async sourcesUserConnectionsOauthCreateRequestOpts( + requestParameters: SourcesUserConnectionsOauthCreateRequest, + ): Promise { + if (requestParameters["userOAuthSourceConnectionRequest"] == null) { + throw new runtime.RequiredError( + "userOAuthSourceConnectionRequest", + 'Required parameter "userOAuthSourceConnectionRequest" was null or undefined when calling sourcesUserConnectionsOauthCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/user_connections/oauth/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: UserOAuthSourceConnectionRequestToJSON( + requestParameters["userOAuthSourceConnectionRequest"], + ), + }; + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsOauthCreateRaw( + requestParameters: SourcesUserConnectionsOauthCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesUserConnectionsOauthCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + UserOAuthSourceConnectionFromJSON(jsonValue), + ); + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsOauthCreate( + requestParameters: SourcesUserConnectionsOauthCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesUserConnectionsOauthCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesUserConnectionsOauthDestroy without sending the request + */ + async sourcesUserConnectionsOauthDestroyRequestOpts( + requestParameters: SourcesUserConnectionsOauthDestroyRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesUserConnectionsOauthDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/user_connections/oauth/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsOauthDestroyRaw( + requestParameters: SourcesUserConnectionsOauthDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesUserConnectionsOauthDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsOauthDestroy( + requestParameters: SourcesUserConnectionsOauthDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.sourcesUserConnectionsOauthDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for sourcesUserConnectionsOauthList without sending the request + */ + async sourcesUserConnectionsOauthListRequestOpts( + requestParameters: SourcesUserConnectionsOauthListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["sourceSlug"] != null) { + queryParameters["source__slug"] = requestParameters["sourceSlug"]; + } + + if (requestParameters["user"] != null) { + queryParameters["user"] = requestParameters["user"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/user_connections/oauth/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsOauthListRaw( + requestParameters: SourcesUserConnectionsOauthListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesUserConnectionsOauthListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedUserOAuthSourceConnectionListFromJSON(jsonValue), + ); + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsOauthList( + requestParameters: SourcesUserConnectionsOauthListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesUserConnectionsOauthListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesUserConnectionsOauthPartialUpdate without sending the request + */ + async sourcesUserConnectionsOauthPartialUpdateRequestOpts( + requestParameters: SourcesUserConnectionsOauthPartialUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesUserConnectionsOauthPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/user_connections/oauth/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedUserOAuthSourceConnectionRequestToJSON( + requestParameters["patchedUserOAuthSourceConnectionRequest"], + ), + }; + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsOauthPartialUpdateRaw( + requestParameters: SourcesUserConnectionsOauthPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesUserConnectionsOauthPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + UserOAuthSourceConnectionFromJSON(jsonValue), + ); + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsOauthPartialUpdate( + requestParameters: SourcesUserConnectionsOauthPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesUserConnectionsOauthPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesUserConnectionsOauthRetrieve without sending the request + */ + async sourcesUserConnectionsOauthRetrieveRequestOpts( + requestParameters: SourcesUserConnectionsOauthRetrieveRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesUserConnectionsOauthRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/user_connections/oauth/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsOauthRetrieveRaw( + requestParameters: SourcesUserConnectionsOauthRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesUserConnectionsOauthRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + UserOAuthSourceConnectionFromJSON(jsonValue), + ); + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsOauthRetrieve( + requestParameters: SourcesUserConnectionsOauthRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesUserConnectionsOauthRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesUserConnectionsOauthUpdate without sending the request + */ + async sourcesUserConnectionsOauthUpdateRequestOpts( + requestParameters: SourcesUserConnectionsOauthUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesUserConnectionsOauthUpdate().', + ); + } + + if (requestParameters["userOAuthSourceConnectionRequest"] == null) { + throw new runtime.RequiredError( + "userOAuthSourceConnectionRequest", + 'Required parameter "userOAuthSourceConnectionRequest" was null or undefined when calling sourcesUserConnectionsOauthUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/user_connections/oauth/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: UserOAuthSourceConnectionRequestToJSON( + requestParameters["userOAuthSourceConnectionRequest"], + ), + }; + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsOauthUpdateRaw( + requestParameters: SourcesUserConnectionsOauthUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesUserConnectionsOauthUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + UserOAuthSourceConnectionFromJSON(jsonValue), + ); + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsOauthUpdate( + requestParameters: SourcesUserConnectionsOauthUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesUserConnectionsOauthUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesUserConnectionsOauthUsedByList without sending the request + */ + async sourcesUserConnectionsOauthUsedByListRequestOpts( + requestParameters: SourcesUserConnectionsOauthUsedByListRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesUserConnectionsOauthUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/user_connections/oauth/{id}/used_by/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async sourcesUserConnectionsOauthUsedByListRaw( + requestParameters: SourcesUserConnectionsOauthUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.sourcesUserConnectionsOauthUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async sourcesUserConnectionsOauthUsedByList( + requestParameters: SourcesUserConnectionsOauthUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.sourcesUserConnectionsOauthUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesUserConnectionsPlexCreate without sending the request + */ + async sourcesUserConnectionsPlexCreateRequestOpts( + requestParameters: SourcesUserConnectionsPlexCreateRequest, + ): Promise { + if (requestParameters["userPlexSourceConnectionRequest"] == null) { + throw new runtime.RequiredError( + "userPlexSourceConnectionRequest", + 'Required parameter "userPlexSourceConnectionRequest" was null or undefined when calling sourcesUserConnectionsPlexCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/user_connections/plex/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: UserPlexSourceConnectionRequestToJSON( + requestParameters["userPlexSourceConnectionRequest"], + ), + }; + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsPlexCreateRaw( + requestParameters: SourcesUserConnectionsPlexCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesUserConnectionsPlexCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + UserPlexSourceConnectionFromJSON(jsonValue), + ); + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsPlexCreate( + requestParameters: SourcesUserConnectionsPlexCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesUserConnectionsPlexCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesUserConnectionsPlexDestroy without sending the request + */ + async sourcesUserConnectionsPlexDestroyRequestOpts( + requestParameters: SourcesUserConnectionsPlexDestroyRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesUserConnectionsPlexDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/user_connections/plex/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsPlexDestroyRaw( + requestParameters: SourcesUserConnectionsPlexDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesUserConnectionsPlexDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsPlexDestroy( + requestParameters: SourcesUserConnectionsPlexDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.sourcesUserConnectionsPlexDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for sourcesUserConnectionsPlexList without sending the request + */ + async sourcesUserConnectionsPlexListRequestOpts( + requestParameters: SourcesUserConnectionsPlexListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["sourceSlug"] != null) { + queryParameters["source__slug"] = requestParameters["sourceSlug"]; + } + + if (requestParameters["user"] != null) { + queryParameters["user"] = requestParameters["user"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/user_connections/plex/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsPlexListRaw( + requestParameters: SourcesUserConnectionsPlexListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesUserConnectionsPlexListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedUserPlexSourceConnectionListFromJSON(jsonValue), + ); + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsPlexList( + requestParameters: SourcesUserConnectionsPlexListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesUserConnectionsPlexListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesUserConnectionsPlexPartialUpdate without sending the request + */ + async sourcesUserConnectionsPlexPartialUpdateRequestOpts( + requestParameters: SourcesUserConnectionsPlexPartialUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesUserConnectionsPlexPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/user_connections/plex/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedUserPlexSourceConnectionRequestToJSON( + requestParameters["patchedUserPlexSourceConnectionRequest"], + ), + }; + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsPlexPartialUpdateRaw( + requestParameters: SourcesUserConnectionsPlexPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesUserConnectionsPlexPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + UserPlexSourceConnectionFromJSON(jsonValue), + ); + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsPlexPartialUpdate( + requestParameters: SourcesUserConnectionsPlexPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesUserConnectionsPlexPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesUserConnectionsPlexRetrieve without sending the request + */ + async sourcesUserConnectionsPlexRetrieveRequestOpts( + requestParameters: SourcesUserConnectionsPlexRetrieveRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesUserConnectionsPlexRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/user_connections/plex/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsPlexRetrieveRaw( + requestParameters: SourcesUserConnectionsPlexRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesUserConnectionsPlexRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + UserPlexSourceConnectionFromJSON(jsonValue), + ); + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsPlexRetrieve( + requestParameters: SourcesUserConnectionsPlexRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesUserConnectionsPlexRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesUserConnectionsPlexUpdate without sending the request + */ + async sourcesUserConnectionsPlexUpdateRequestOpts( + requestParameters: SourcesUserConnectionsPlexUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesUserConnectionsPlexUpdate().', + ); + } + + if (requestParameters["userPlexSourceConnectionRequest"] == null) { + throw new runtime.RequiredError( + "userPlexSourceConnectionRequest", + 'Required parameter "userPlexSourceConnectionRequest" was null or undefined when calling sourcesUserConnectionsPlexUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/user_connections/plex/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: UserPlexSourceConnectionRequestToJSON( + requestParameters["userPlexSourceConnectionRequest"], + ), + }; + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsPlexUpdateRaw( + requestParameters: SourcesUserConnectionsPlexUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesUserConnectionsPlexUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + UserPlexSourceConnectionFromJSON(jsonValue), + ); + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsPlexUpdate( + requestParameters: SourcesUserConnectionsPlexUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesUserConnectionsPlexUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesUserConnectionsPlexUsedByList without sending the request + */ + async sourcesUserConnectionsPlexUsedByListRequestOpts( + requestParameters: SourcesUserConnectionsPlexUsedByListRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesUserConnectionsPlexUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/user_connections/plex/{id}/used_by/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async sourcesUserConnectionsPlexUsedByListRaw( + requestParameters: SourcesUserConnectionsPlexUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.sourcesUserConnectionsPlexUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async sourcesUserConnectionsPlexUsedByList( + requestParameters: SourcesUserConnectionsPlexUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.sourcesUserConnectionsPlexUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesUserConnectionsSamlCreate without sending the request + */ + async sourcesUserConnectionsSamlCreateRequestOpts( + requestParameters: SourcesUserConnectionsSamlCreateRequest, + ): Promise { + if (requestParameters["userSAMLSourceConnectionRequest"] == null) { + throw new runtime.RequiredError( + "userSAMLSourceConnectionRequest", + 'Required parameter "userSAMLSourceConnectionRequest" was null or undefined when calling sourcesUserConnectionsSamlCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/user_connections/saml/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: UserSAMLSourceConnectionRequestToJSON( + requestParameters["userSAMLSourceConnectionRequest"], + ), + }; + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsSamlCreateRaw( + requestParameters: SourcesUserConnectionsSamlCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesUserConnectionsSamlCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + UserSAMLSourceConnectionFromJSON(jsonValue), + ); + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsSamlCreate( + requestParameters: SourcesUserConnectionsSamlCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesUserConnectionsSamlCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesUserConnectionsSamlDestroy without sending the request + */ + async sourcesUserConnectionsSamlDestroyRequestOpts( + requestParameters: SourcesUserConnectionsSamlDestroyRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesUserConnectionsSamlDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/user_connections/saml/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsSamlDestroyRaw( + requestParameters: SourcesUserConnectionsSamlDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesUserConnectionsSamlDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsSamlDestroy( + requestParameters: SourcesUserConnectionsSamlDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.sourcesUserConnectionsSamlDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for sourcesUserConnectionsSamlList without sending the request + */ + async sourcesUserConnectionsSamlListRequestOpts( + requestParameters: SourcesUserConnectionsSamlListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["sourceSlug"] != null) { + queryParameters["source__slug"] = requestParameters["sourceSlug"]; + } + + if (requestParameters["user"] != null) { + queryParameters["user"] = requestParameters["user"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/user_connections/saml/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsSamlListRaw( + requestParameters: SourcesUserConnectionsSamlListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesUserConnectionsSamlListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedUserSAMLSourceConnectionListFromJSON(jsonValue), + ); + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsSamlList( + requestParameters: SourcesUserConnectionsSamlListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesUserConnectionsSamlListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesUserConnectionsSamlPartialUpdate without sending the request + */ + async sourcesUserConnectionsSamlPartialUpdateRequestOpts( + requestParameters: SourcesUserConnectionsSamlPartialUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesUserConnectionsSamlPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/user_connections/saml/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedUserSAMLSourceConnectionRequestToJSON( + requestParameters["patchedUserSAMLSourceConnectionRequest"], + ), + }; + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsSamlPartialUpdateRaw( + requestParameters: SourcesUserConnectionsSamlPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesUserConnectionsSamlPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + UserSAMLSourceConnectionFromJSON(jsonValue), + ); + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsSamlPartialUpdate( + requestParameters: SourcesUserConnectionsSamlPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesUserConnectionsSamlPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesUserConnectionsSamlRetrieve without sending the request + */ + async sourcesUserConnectionsSamlRetrieveRequestOpts( + requestParameters: SourcesUserConnectionsSamlRetrieveRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesUserConnectionsSamlRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/user_connections/saml/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsSamlRetrieveRaw( + requestParameters: SourcesUserConnectionsSamlRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesUserConnectionsSamlRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + UserSAMLSourceConnectionFromJSON(jsonValue), + ); + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsSamlRetrieve( + requestParameters: SourcesUserConnectionsSamlRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesUserConnectionsSamlRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesUserConnectionsSamlUpdate without sending the request + */ + async sourcesUserConnectionsSamlUpdateRequestOpts( + requestParameters: SourcesUserConnectionsSamlUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesUserConnectionsSamlUpdate().', + ); + } + + if (requestParameters["userSAMLSourceConnectionRequest"] == null) { + throw new runtime.RequiredError( + "userSAMLSourceConnectionRequest", + 'Required parameter "userSAMLSourceConnectionRequest" was null or undefined when calling sourcesUserConnectionsSamlUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/user_connections/saml/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: UserSAMLSourceConnectionRequestToJSON( + requestParameters["userSAMLSourceConnectionRequest"], + ), + }; + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsSamlUpdateRaw( + requestParameters: SourcesUserConnectionsSamlUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesUserConnectionsSamlUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + UserSAMLSourceConnectionFromJSON(jsonValue), + ); + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsSamlUpdate( + requestParameters: SourcesUserConnectionsSamlUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesUserConnectionsSamlUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesUserConnectionsSamlUsedByList without sending the request + */ + async sourcesUserConnectionsSamlUsedByListRequestOpts( + requestParameters: SourcesUserConnectionsSamlUsedByListRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesUserConnectionsSamlUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/user_connections/saml/{id}/used_by/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async sourcesUserConnectionsSamlUsedByListRaw( + requestParameters: SourcesUserConnectionsSamlUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.sourcesUserConnectionsSamlUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async sourcesUserConnectionsSamlUsedByList( + requestParameters: SourcesUserConnectionsSamlUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.sourcesUserConnectionsSamlUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesUserConnectionsTelegramCreate without sending the request + */ + async sourcesUserConnectionsTelegramCreateRequestOpts( + requestParameters: SourcesUserConnectionsTelegramCreateRequest, + ): Promise { + if (requestParameters["userTelegramSourceConnectionRequest"] == null) { + throw new runtime.RequiredError( + "userTelegramSourceConnectionRequest", + 'Required parameter "userTelegramSourceConnectionRequest" was null or undefined when calling sourcesUserConnectionsTelegramCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/user_connections/telegram/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: UserTelegramSourceConnectionRequestToJSON( + requestParameters["userTelegramSourceConnectionRequest"], + ), + }; + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsTelegramCreateRaw( + requestParameters: SourcesUserConnectionsTelegramCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesUserConnectionsTelegramCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + UserTelegramSourceConnectionFromJSON(jsonValue), + ); + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsTelegramCreate( + requestParameters: SourcesUserConnectionsTelegramCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesUserConnectionsTelegramCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesUserConnectionsTelegramDestroy without sending the request + */ + async sourcesUserConnectionsTelegramDestroyRequestOpts( + requestParameters: SourcesUserConnectionsTelegramDestroyRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesUserConnectionsTelegramDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/user_connections/telegram/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsTelegramDestroyRaw( + requestParameters: SourcesUserConnectionsTelegramDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesUserConnectionsTelegramDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsTelegramDestroy( + requestParameters: SourcesUserConnectionsTelegramDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.sourcesUserConnectionsTelegramDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for sourcesUserConnectionsTelegramList without sending the request + */ + async sourcesUserConnectionsTelegramListRequestOpts( + requestParameters: SourcesUserConnectionsTelegramListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["sourceSlug"] != null) { + queryParameters["source__slug"] = requestParameters["sourceSlug"]; + } + + if (requestParameters["user"] != null) { + queryParameters["user"] = requestParameters["user"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/user_connections/telegram/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsTelegramListRaw( + requestParameters: SourcesUserConnectionsTelegramListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesUserConnectionsTelegramListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedUserTelegramSourceConnectionListFromJSON(jsonValue), + ); + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsTelegramList( + requestParameters: SourcesUserConnectionsTelegramListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesUserConnectionsTelegramListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesUserConnectionsTelegramPartialUpdate without sending the request + */ + async sourcesUserConnectionsTelegramPartialUpdateRequestOpts( + requestParameters: SourcesUserConnectionsTelegramPartialUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesUserConnectionsTelegramPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/user_connections/telegram/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedUserTelegramSourceConnectionRequestToJSON( + requestParameters["patchedUserTelegramSourceConnectionRequest"], + ), + }; + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsTelegramPartialUpdateRaw( + requestParameters: SourcesUserConnectionsTelegramPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesUserConnectionsTelegramPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + UserTelegramSourceConnectionFromJSON(jsonValue), + ); + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsTelegramPartialUpdate( + requestParameters: SourcesUserConnectionsTelegramPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesUserConnectionsTelegramPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesUserConnectionsTelegramRetrieve without sending the request + */ + async sourcesUserConnectionsTelegramRetrieveRequestOpts( + requestParameters: SourcesUserConnectionsTelegramRetrieveRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesUserConnectionsTelegramRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/user_connections/telegram/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsTelegramRetrieveRaw( + requestParameters: SourcesUserConnectionsTelegramRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesUserConnectionsTelegramRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + UserTelegramSourceConnectionFromJSON(jsonValue), + ); + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsTelegramRetrieve( + requestParameters: SourcesUserConnectionsTelegramRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesUserConnectionsTelegramRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesUserConnectionsTelegramUpdate without sending the request + */ + async sourcesUserConnectionsTelegramUpdateRequestOpts( + requestParameters: SourcesUserConnectionsTelegramUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesUserConnectionsTelegramUpdate().', + ); + } + + if (requestParameters["userTelegramSourceConnectionRequest"] == null) { + throw new runtime.RequiredError( + "userTelegramSourceConnectionRequest", + 'Required parameter "userTelegramSourceConnectionRequest" was null or undefined when calling sourcesUserConnectionsTelegramUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/user_connections/telegram/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: UserTelegramSourceConnectionRequestToJSON( + requestParameters["userTelegramSourceConnectionRequest"], + ), + }; + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsTelegramUpdateRaw( + requestParameters: SourcesUserConnectionsTelegramUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.sourcesUserConnectionsTelegramUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + UserTelegramSourceConnectionFromJSON(jsonValue), + ); + } + + /** + * User-source connection Viewset + */ + async sourcesUserConnectionsTelegramUpdate( + requestParameters: SourcesUserConnectionsTelegramUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.sourcesUserConnectionsTelegramUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for sourcesUserConnectionsTelegramUsedByList without sending the request + */ + async sourcesUserConnectionsTelegramUsedByListRequestOpts( + requestParameters: SourcesUserConnectionsTelegramUsedByListRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling sourcesUserConnectionsTelegramUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/sources/user_connections/telegram/{id}/used_by/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async sourcesUserConnectionsTelegramUsedByListRaw( + requestParameters: SourcesUserConnectionsTelegramUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.sourcesUserConnectionsTelegramUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async sourcesUserConnectionsTelegramUsedByList( + requestParameters: SourcesUserConnectionsTelegramUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.sourcesUserConnectionsTelegramUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } +} diff --git a/packages/client-ts/src/apis/SsfApi.ts b/packages/client-ts/src/apis/SsfApi.ts new file mode 100644 index 0000000000..37a827d955 --- /dev/null +++ b/packages/client-ts/src/apis/SsfApi.ts @@ -0,0 +1,250 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { DeliveryMethodEnum, PaginatedSSFStreamList, SSFStream } from "../models/index"; +import { PaginatedSSFStreamListFromJSON, SSFStreamFromJSON } from "../models/index"; +import * as runtime from "../runtime"; + +export interface SsfStreamsDestroyRequest { + uuid: string; +} + +export interface SsfStreamsListRequest { + deliveryMethod?: DeliveryMethodEnum; + endpointUrl?: string; + ordering?: string; + page?: number; + pageSize?: number; + provider?: number; + search?: string; +} + +export interface SsfStreamsRetrieveRequest { + uuid: string; +} + +/** + * + */ +export class SsfApi extends runtime.BaseAPI { + /** + * Creates request options for ssfStreamsDestroy without sending the request + */ + async ssfStreamsDestroyRequestOpts( + requestParameters: SsfStreamsDestroyRequest, + ): Promise { + if (requestParameters["uuid"] == null) { + throw new runtime.RequiredError( + "uuid", + 'Required parameter "uuid" was null or undefined when calling ssfStreamsDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/ssf/streams/{uuid}/`; + urlPath = urlPath.replace( + `{${"uuid"}}`, + encodeURIComponent(String(requestParameters["uuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * SSFStream Viewset + */ + async ssfStreamsDestroyRaw( + requestParameters: SsfStreamsDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.ssfStreamsDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * SSFStream Viewset + */ + async ssfStreamsDestroy( + requestParameters: SsfStreamsDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.ssfStreamsDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for ssfStreamsList without sending the request + */ + async ssfStreamsListRequestOpts( + requestParameters: SsfStreamsListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["deliveryMethod"] != null) { + queryParameters["delivery_method"] = requestParameters["deliveryMethod"]; + } + + if (requestParameters["endpointUrl"] != null) { + queryParameters["endpoint_url"] = requestParameters["endpointUrl"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["provider"] != null) { + queryParameters["provider"] = requestParameters["provider"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/ssf/streams/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * SSFStream Viewset + */ + async ssfStreamsListRaw( + requestParameters: SsfStreamsListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.ssfStreamsListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedSSFStreamListFromJSON(jsonValue), + ); + } + + /** + * SSFStream Viewset + */ + async ssfStreamsList( + requestParameters: SsfStreamsListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.ssfStreamsListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for ssfStreamsRetrieve without sending the request + */ + async ssfStreamsRetrieveRequestOpts( + requestParameters: SsfStreamsRetrieveRequest, + ): Promise { + if (requestParameters["uuid"] == null) { + throw new runtime.RequiredError( + "uuid", + 'Required parameter "uuid" was null or undefined when calling ssfStreamsRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/ssf/streams/{uuid}/`; + urlPath = urlPath.replace( + `{${"uuid"}}`, + encodeURIComponent(String(requestParameters["uuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * SSFStream Viewset + */ + async ssfStreamsRetrieveRaw( + requestParameters: SsfStreamsRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.ssfStreamsRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => SSFStreamFromJSON(jsonValue)); + } + + /** + * SSFStream Viewset + */ + async ssfStreamsRetrieve( + requestParameters: SsfStreamsRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.ssfStreamsRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } +} diff --git a/packages/client-ts/src/apis/StagesApi.ts b/packages/client-ts/src/apis/StagesApi.ts new file mode 100644 index 0000000000..aa44ccfe78 --- /dev/null +++ b/packages/client-ts/src/apis/StagesApi.ts @@ -0,0 +1,16557 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { + AccountLockdownStage, + AccountLockdownStageRequest, + AuthenticatorAttachmentEnum, + AuthenticatorDuoStage, + AuthenticatorDuoStageDeviceImportResponse, + AuthenticatorDuoStageManualDeviceImportRequest, + AuthenticatorDuoStageRequest, + AuthenticatorEmailStage, + AuthenticatorEmailStageRequest, + AuthenticatorEndpointGDTCStage, + AuthenticatorEndpointGDTCStageRequest, + AuthenticatorSMSStage, + AuthenticatorSMSStageRequest, + AuthenticatorStaticStage, + AuthenticatorStaticStageRequest, + AuthenticatorTOTPStage, + AuthenticatorTOTPStageRequest, + AuthenticatorValidateStage, + AuthenticatorValidateStageRequest, + AuthenticatorWebAuthnStage, + AuthenticatorWebAuthnStageRequest, + AuthTypeEnum, + CaptchaStage, + CaptchaStageRequest, + CertAttributeEnum, + ConsentModeEnum, + ConsentStage, + ConsentStageRequest, + DenyStage, + DenyStageRequest, + DigitsEnum, + DummyStage, + DummyStageRequest, + DuoDeviceEnrollmentStatus, + EmailStage, + EmailStageRequest, + EndpointStage, + EndpointStageRequest, + GeoipBindingEnum, + IdentificationStage, + IdentificationStageRequest, + Invitation, + InvitationRequest, + InvitationSendEmailRequest, + InvitationStage, + InvitationStageRequest, + MutualTLSStage, + MutualTLSStageRequest, + NetworkBindingEnum, + NotConfiguredActionEnum, + PaginatedAccountLockdownStageList, + PaginatedAuthenticatorDuoStageList, + PaginatedAuthenticatorEmailStageList, + PaginatedAuthenticatorEndpointGDTCStageList, + PaginatedAuthenticatorSMSStageList, + PaginatedAuthenticatorStaticStageList, + PaginatedAuthenticatorTOTPStageList, + PaginatedAuthenticatorValidateStageList, + PaginatedAuthenticatorWebAuthnStageList, + PaginatedCaptchaStageList, + PaginatedConsentStageList, + PaginatedDenyStageList, + PaginatedDummyStageList, + PaginatedEmailStageList, + PaginatedEndpointStageList, + PaginatedIdentificationStageList, + PaginatedInvitationList, + PaginatedInvitationStageList, + PaginatedMutualTLSStageList, + PaginatedPasswordStageList, + PaginatedPromptList, + PaginatedPromptStageList, + PaginatedRedirectStageList, + PaginatedSourceStageList, + PaginatedStageList, + PaginatedUserDeleteStageList, + PaginatedUserLoginStageList, + PaginatedUserLogoutStageList, + PaginatedUserWriteStageList, + PaginatedWebAuthnDeviceTypeList, + PasswordStage, + PasswordStageRequest, + PatchedAccountLockdownStageRequest, + PatchedAuthenticatorDuoStageRequest, + PatchedAuthenticatorEmailStageRequest, + PatchedAuthenticatorEndpointGDTCStageRequest, + PatchedAuthenticatorSMSStageRequest, + PatchedAuthenticatorStaticStageRequest, + PatchedAuthenticatorTOTPStageRequest, + PatchedAuthenticatorValidateStageRequest, + PatchedAuthenticatorWebAuthnStageRequest, + PatchedCaptchaStageRequest, + PatchedConsentStageRequest, + PatchedDenyStageRequest, + PatchedDummyStageRequest, + PatchedEmailStageRequest, + PatchedEndpointStageRequest, + PatchedIdentificationStageRequest, + PatchedInvitationRequest, + PatchedInvitationStageRequest, + PatchedMutualTLSStageRequest, + PatchedPasswordStageRequest, + PatchedPromptRequest, + PatchedPromptStageRequest, + PatchedRedirectStageRequest, + PatchedSourceStageRequest, + PatchedUserDeleteStageRequest, + PatchedUserLoginStageRequest, + PatchedUserLogoutStageRequest, + PatchedUserWriteStageRequest, + Prompt, + PromptChallenge, + PromptRequest, + PromptStage, + PromptStageRequest, + PromptTypeEnum, + ProviderEnum, + RedirectStage, + RedirectStageRequest, + SourceStage, + SourceStageRequest, + Stage, + StageModeEnum, + TypeCreate, + UsedBy, + UserAttributeEnum, + UserCreationModeEnum, + UserDeleteStage, + UserDeleteStageRequest, + UserLoginStage, + UserLoginStageRequest, + UserLogoutStage, + UserLogoutStageRequest, + UserSetting, + UserTypeEnum, + UserVerificationEnum, + UserWriteStage, + UserWriteStageRequest, + WebAuthnDeviceType, +} from "../models/index"; +import { + AccountLockdownStageFromJSON, + AccountLockdownStageRequestToJSON, + AuthenticatorDuoStageDeviceImportResponseFromJSON, + AuthenticatorDuoStageFromJSON, + AuthenticatorDuoStageManualDeviceImportRequestToJSON, + AuthenticatorDuoStageRequestToJSON, + AuthenticatorEmailStageFromJSON, + AuthenticatorEmailStageRequestToJSON, + AuthenticatorEndpointGDTCStageFromJSON, + AuthenticatorEndpointGDTCStageRequestToJSON, + AuthenticatorSMSStageFromJSON, + AuthenticatorSMSStageRequestToJSON, + AuthenticatorStaticStageFromJSON, + AuthenticatorStaticStageRequestToJSON, + AuthenticatorTOTPStageFromJSON, + AuthenticatorTOTPStageRequestToJSON, + AuthenticatorValidateStageFromJSON, + AuthenticatorValidateStageRequestToJSON, + AuthenticatorWebAuthnStageFromJSON, + AuthenticatorWebAuthnStageRequestToJSON, + CaptchaStageFromJSON, + CaptchaStageRequestToJSON, + ConsentStageFromJSON, + ConsentStageRequestToJSON, + DenyStageFromJSON, + DenyStageRequestToJSON, + DummyStageFromJSON, + DummyStageRequestToJSON, + DuoDeviceEnrollmentStatusFromJSON, + EmailStageFromJSON, + EmailStageRequestToJSON, + EndpointStageFromJSON, + EndpointStageRequestToJSON, + IdentificationStageFromJSON, + IdentificationStageRequestToJSON, + InvitationFromJSON, + InvitationRequestToJSON, + InvitationSendEmailRequestToJSON, + InvitationStageFromJSON, + InvitationStageRequestToJSON, + MutualTLSStageFromJSON, + MutualTLSStageRequestToJSON, + PaginatedAccountLockdownStageListFromJSON, + PaginatedAuthenticatorDuoStageListFromJSON, + PaginatedAuthenticatorEmailStageListFromJSON, + PaginatedAuthenticatorEndpointGDTCStageListFromJSON, + PaginatedAuthenticatorSMSStageListFromJSON, + PaginatedAuthenticatorStaticStageListFromJSON, + PaginatedAuthenticatorTOTPStageListFromJSON, + PaginatedAuthenticatorValidateStageListFromJSON, + PaginatedAuthenticatorWebAuthnStageListFromJSON, + PaginatedCaptchaStageListFromJSON, + PaginatedConsentStageListFromJSON, + PaginatedDenyStageListFromJSON, + PaginatedDummyStageListFromJSON, + PaginatedEmailStageListFromJSON, + PaginatedEndpointStageListFromJSON, + PaginatedIdentificationStageListFromJSON, + PaginatedInvitationListFromJSON, + PaginatedInvitationStageListFromJSON, + PaginatedMutualTLSStageListFromJSON, + PaginatedPasswordStageListFromJSON, + PaginatedPromptListFromJSON, + PaginatedPromptStageListFromJSON, + PaginatedRedirectStageListFromJSON, + PaginatedSourceStageListFromJSON, + PaginatedStageListFromJSON, + PaginatedUserDeleteStageListFromJSON, + PaginatedUserLoginStageListFromJSON, + PaginatedUserLogoutStageListFromJSON, + PaginatedUserWriteStageListFromJSON, + PaginatedWebAuthnDeviceTypeListFromJSON, + PasswordStageFromJSON, + PasswordStageRequestToJSON, + PatchedAccountLockdownStageRequestToJSON, + PatchedAuthenticatorDuoStageRequestToJSON, + PatchedAuthenticatorEmailStageRequestToJSON, + PatchedAuthenticatorEndpointGDTCStageRequestToJSON, + PatchedAuthenticatorSMSStageRequestToJSON, + PatchedAuthenticatorStaticStageRequestToJSON, + PatchedAuthenticatorTOTPStageRequestToJSON, + PatchedAuthenticatorValidateStageRequestToJSON, + PatchedAuthenticatorWebAuthnStageRequestToJSON, + PatchedCaptchaStageRequestToJSON, + PatchedConsentStageRequestToJSON, + PatchedDenyStageRequestToJSON, + PatchedDummyStageRequestToJSON, + PatchedEmailStageRequestToJSON, + PatchedEndpointStageRequestToJSON, + PatchedIdentificationStageRequestToJSON, + PatchedInvitationRequestToJSON, + PatchedInvitationStageRequestToJSON, + PatchedMutualTLSStageRequestToJSON, + PatchedPasswordStageRequestToJSON, + PatchedPromptRequestToJSON, + PatchedPromptStageRequestToJSON, + PatchedRedirectStageRequestToJSON, + PatchedSourceStageRequestToJSON, + PatchedUserDeleteStageRequestToJSON, + PatchedUserLoginStageRequestToJSON, + PatchedUserLogoutStageRequestToJSON, + PatchedUserWriteStageRequestToJSON, + PromptChallengeFromJSON, + PromptFromJSON, + PromptRequestToJSON, + PromptStageFromJSON, + PromptStageRequestToJSON, + RedirectStageFromJSON, + RedirectStageRequestToJSON, + SourceStageFromJSON, + SourceStageRequestToJSON, + StageFromJSON, + TypeCreateFromJSON, + UsedByFromJSON, + UserDeleteStageFromJSON, + UserDeleteStageRequestToJSON, + UserLoginStageFromJSON, + UserLoginStageRequestToJSON, + UserLogoutStageFromJSON, + UserLogoutStageRequestToJSON, + UserSettingFromJSON, + UserWriteStageFromJSON, + UserWriteStageRequestToJSON, + WebAuthnDeviceTypeFromJSON, +} from "../models/index"; +import * as runtime from "../runtime"; + +export interface StagesAccountLockdownCreateRequest { + accountLockdownStageRequest: AccountLockdownStageRequest; +} + +export interface StagesAccountLockdownDestroyRequest { + stageUuid: string; +} + +export interface StagesAccountLockdownListRequest { + deactivateUser?: boolean; + deleteSessions?: boolean; + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + revokeTokens?: boolean; + search?: string; + selfServiceCompletionFlow?: string; + setUnusablePassword?: boolean; + stageUuid?: string; +} + +export interface StagesAccountLockdownPartialUpdateRequest { + stageUuid: string; + patchedAccountLockdownStageRequest?: PatchedAccountLockdownStageRequest; +} + +export interface StagesAccountLockdownRetrieveRequest { + stageUuid: string; +} + +export interface StagesAccountLockdownUpdateRequest { + stageUuid: string; + accountLockdownStageRequest: AccountLockdownStageRequest; +} + +export interface StagesAccountLockdownUsedByListRequest { + stageUuid: string; +} + +export interface StagesAllDestroyRequest { + stageUuid: string; +} + +export interface StagesAllListRequest { + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; +} + +export interface StagesAllRetrieveRequest { + stageUuid: string; +} + +export interface StagesAllUsedByListRequest { + stageUuid: string; +} + +export interface StagesAuthenticatorDuoCreateRequest { + authenticatorDuoStageRequest: AuthenticatorDuoStageRequest; +} + +export interface StagesAuthenticatorDuoDestroyRequest { + stageUuid: string; +} + +export interface StagesAuthenticatorDuoEnrollmentStatusCreateRequest { + stageUuid: string; +} + +export interface StagesAuthenticatorDuoImportDeviceManualCreateRequest { + stageUuid: string; + authenticatorDuoStageManualDeviceImportRequest: AuthenticatorDuoStageManualDeviceImportRequest; +} + +export interface StagesAuthenticatorDuoImportDevicesAutomaticCreateRequest { + stageUuid: string; +} + +export interface StagesAuthenticatorDuoListRequest { + apiHostname?: string; + clientId?: string; + configureFlow?: string; + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; +} + +export interface StagesAuthenticatorDuoPartialUpdateRequest { + stageUuid: string; + patchedAuthenticatorDuoStageRequest?: PatchedAuthenticatorDuoStageRequest; +} + +export interface StagesAuthenticatorDuoRetrieveRequest { + stageUuid: string; +} + +export interface StagesAuthenticatorDuoUpdateRequest { + stageUuid: string; + authenticatorDuoStageRequest: AuthenticatorDuoStageRequest; +} + +export interface StagesAuthenticatorDuoUsedByListRequest { + stageUuid: string; +} + +export interface StagesAuthenticatorEmailCreateRequest { + authenticatorEmailStageRequest: AuthenticatorEmailStageRequest; +} + +export interface StagesAuthenticatorEmailDestroyRequest { + stageUuid: string; +} + +export interface StagesAuthenticatorEmailListRequest { + configureFlow?: string; + friendlyName?: string; + fromAddress?: string; + host?: string; + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + password?: string; + port?: number; + search?: string; + stageUuid?: string; + subject?: string; + template?: string; + timeout?: number; + tokenExpiry?: string; + useGlobalSettings?: boolean; + useSsl?: boolean; + useTls?: boolean; + username?: string; +} + +export interface StagesAuthenticatorEmailPartialUpdateRequest { + stageUuid: string; + patchedAuthenticatorEmailStageRequest?: PatchedAuthenticatorEmailStageRequest; +} + +export interface StagesAuthenticatorEmailRetrieveRequest { + stageUuid: string; +} + +export interface StagesAuthenticatorEmailUpdateRequest { + stageUuid: string; + authenticatorEmailStageRequest: AuthenticatorEmailStageRequest; +} + +export interface StagesAuthenticatorEmailUsedByListRequest { + stageUuid: string; +} + +export interface StagesAuthenticatorEndpointGdtcCreateRequest { + authenticatorEndpointGDTCStageRequest: AuthenticatorEndpointGDTCStageRequest; +} + +export interface StagesAuthenticatorEndpointGdtcDestroyRequest { + stageUuid: string; +} + +export interface StagesAuthenticatorEndpointGdtcListRequest { + configureFlow?: string; + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; +} + +export interface StagesAuthenticatorEndpointGdtcPartialUpdateRequest { + stageUuid: string; + patchedAuthenticatorEndpointGDTCStageRequest?: PatchedAuthenticatorEndpointGDTCStageRequest; +} + +export interface StagesAuthenticatorEndpointGdtcRetrieveRequest { + stageUuid: string; +} + +export interface StagesAuthenticatorEndpointGdtcUpdateRequest { + stageUuid: string; + authenticatorEndpointGDTCStageRequest: AuthenticatorEndpointGDTCStageRequest; +} + +export interface StagesAuthenticatorEndpointGdtcUsedByListRequest { + stageUuid: string; +} + +export interface StagesAuthenticatorSmsCreateRequest { + authenticatorSMSStageRequest: AuthenticatorSMSStageRequest; +} + +export interface StagesAuthenticatorSmsDestroyRequest { + stageUuid: string; +} + +export interface StagesAuthenticatorSmsListRequest { + accountSid?: string; + auth?: string; + authPassword?: string; + authType?: AuthTypeEnum; + configureFlow?: string; + friendlyName?: string; + fromNumber?: string; + mapping?: string; + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + provider?: ProviderEnum; + search?: string; + stageUuid?: string; + verifyOnly?: boolean; +} + +export interface StagesAuthenticatorSmsPartialUpdateRequest { + stageUuid: string; + patchedAuthenticatorSMSStageRequest?: PatchedAuthenticatorSMSStageRequest; +} + +export interface StagesAuthenticatorSmsRetrieveRequest { + stageUuid: string; +} + +export interface StagesAuthenticatorSmsUpdateRequest { + stageUuid: string; + authenticatorSMSStageRequest: AuthenticatorSMSStageRequest; +} + +export interface StagesAuthenticatorSmsUsedByListRequest { + stageUuid: string; +} + +export interface StagesAuthenticatorStaticCreateRequest { + authenticatorStaticStageRequest: AuthenticatorStaticStageRequest; +} + +export interface StagesAuthenticatorStaticDestroyRequest { + stageUuid: string; +} + +export interface StagesAuthenticatorStaticListRequest { + configureFlow?: string; + friendlyName?: string; + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; + stageUuid?: string; + tokenCount?: number; + tokenLength?: number; +} + +export interface StagesAuthenticatorStaticPartialUpdateRequest { + stageUuid: string; + patchedAuthenticatorStaticStageRequest?: PatchedAuthenticatorStaticStageRequest; +} + +export interface StagesAuthenticatorStaticRetrieveRequest { + stageUuid: string; +} + +export interface StagesAuthenticatorStaticUpdateRequest { + stageUuid: string; + authenticatorStaticStageRequest: AuthenticatorStaticStageRequest; +} + +export interface StagesAuthenticatorStaticUsedByListRequest { + stageUuid: string; +} + +export interface StagesAuthenticatorTotpCreateRequest { + authenticatorTOTPStageRequest: AuthenticatorTOTPStageRequest; +} + +export interface StagesAuthenticatorTotpDestroyRequest { + stageUuid: string; +} + +export interface StagesAuthenticatorTotpListRequest { + configureFlow?: string; + digits?: DigitsEnum; + friendlyName?: string; + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; + stageUuid?: string; +} + +export interface StagesAuthenticatorTotpPartialUpdateRequest { + stageUuid: string; + patchedAuthenticatorTOTPStageRequest?: PatchedAuthenticatorTOTPStageRequest; +} + +export interface StagesAuthenticatorTotpRetrieveRequest { + stageUuid: string; +} + +export interface StagesAuthenticatorTotpUpdateRequest { + stageUuid: string; + authenticatorTOTPStageRequest: AuthenticatorTOTPStageRequest; +} + +export interface StagesAuthenticatorTotpUsedByListRequest { + stageUuid: string; +} + +export interface StagesAuthenticatorValidateCreateRequest { + authenticatorValidateStageRequest: AuthenticatorValidateStageRequest; +} + +export interface StagesAuthenticatorValidateDestroyRequest { + stageUuid: string; +} + +export interface StagesAuthenticatorValidateListRequest { + configurationStages?: Array; + name?: string; + notConfiguredAction?: NotConfiguredActionEnum; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; +} + +export interface StagesAuthenticatorValidatePartialUpdateRequest { + stageUuid: string; + patchedAuthenticatorValidateStageRequest?: PatchedAuthenticatorValidateStageRequest; +} + +export interface StagesAuthenticatorValidateRetrieveRequest { + stageUuid: string; +} + +export interface StagesAuthenticatorValidateUpdateRequest { + stageUuid: string; + authenticatorValidateStageRequest: AuthenticatorValidateStageRequest; +} + +export interface StagesAuthenticatorValidateUsedByListRequest { + stageUuid: string; +} + +export interface StagesAuthenticatorWebauthnCreateRequest { + authenticatorWebAuthnStageRequest: AuthenticatorWebAuthnStageRequest; +} + +export interface StagesAuthenticatorWebauthnDestroyRequest { + stageUuid: string; +} + +export interface StagesAuthenticatorWebauthnDeviceTypesListRequest { + aaguid?: string; + description?: string; + icon?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; +} + +export interface StagesAuthenticatorWebauthnDeviceTypesRetrieveRequest { + aaguid: string; +} + +export interface StagesAuthenticatorWebauthnListRequest { + authenticatorAttachment?: AuthenticatorAttachmentEnum | null; + configureFlow?: string; + deviceTypeRestrictions?: Array; + maxAttempts?: number; + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + residentKeyRequirement?: UserVerificationEnum; + search?: string; + userVerification?: UserVerificationEnum; +} + +export interface StagesAuthenticatorWebauthnPartialUpdateRequest { + stageUuid: string; + patchedAuthenticatorWebAuthnStageRequest?: PatchedAuthenticatorWebAuthnStageRequest; +} + +export interface StagesAuthenticatorWebauthnRetrieveRequest { + stageUuid: string; +} + +export interface StagesAuthenticatorWebauthnUpdateRequest { + stageUuid: string; + authenticatorWebAuthnStageRequest: AuthenticatorWebAuthnStageRequest; +} + +export interface StagesAuthenticatorWebauthnUsedByListRequest { + stageUuid: string; +} + +export interface StagesCaptchaCreateRequest { + captchaStageRequest: CaptchaStageRequest; +} + +export interface StagesCaptchaDestroyRequest { + stageUuid: string; +} + +export interface StagesCaptchaListRequest { + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + publicKey?: string; + search?: string; +} + +export interface StagesCaptchaPartialUpdateRequest { + stageUuid: string; + patchedCaptchaStageRequest?: PatchedCaptchaStageRequest; +} + +export interface StagesCaptchaRetrieveRequest { + stageUuid: string; +} + +export interface StagesCaptchaUpdateRequest { + stageUuid: string; + captchaStageRequest: CaptchaStageRequest; +} + +export interface StagesCaptchaUsedByListRequest { + stageUuid: string; +} + +export interface StagesConsentCreateRequest { + consentStageRequest: ConsentStageRequest; +} + +export interface StagesConsentDestroyRequest { + stageUuid: string; +} + +export interface StagesConsentListRequest { + consentExpireIn?: string; + mode?: ConsentModeEnum; + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; + stageUuid?: string; +} + +export interface StagesConsentPartialUpdateRequest { + stageUuid: string; + patchedConsentStageRequest?: PatchedConsentStageRequest; +} + +export interface StagesConsentRetrieveRequest { + stageUuid: string; +} + +export interface StagesConsentUpdateRequest { + stageUuid: string; + consentStageRequest: ConsentStageRequest; +} + +export interface StagesConsentUsedByListRequest { + stageUuid: string; +} + +export interface StagesDenyCreateRequest { + denyStageRequest: DenyStageRequest; +} + +export interface StagesDenyDestroyRequest { + stageUuid: string; +} + +export interface StagesDenyListRequest { + denyMessage?: string; + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; + stageUuid?: string; +} + +export interface StagesDenyPartialUpdateRequest { + stageUuid: string; + patchedDenyStageRequest?: PatchedDenyStageRequest; +} + +export interface StagesDenyRetrieveRequest { + stageUuid: string; +} + +export interface StagesDenyUpdateRequest { + stageUuid: string; + denyStageRequest: DenyStageRequest; +} + +export interface StagesDenyUsedByListRequest { + stageUuid: string; +} + +export interface StagesDummyCreateRequest { + dummyStageRequest: DummyStageRequest; +} + +export interface StagesDummyDestroyRequest { + stageUuid: string; +} + +export interface StagesDummyListRequest { + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; + stageUuid?: string; + throwError?: boolean; +} + +export interface StagesDummyPartialUpdateRequest { + stageUuid: string; + patchedDummyStageRequest?: PatchedDummyStageRequest; +} + +export interface StagesDummyRetrieveRequest { + stageUuid: string; +} + +export interface StagesDummyUpdateRequest { + stageUuid: string; + dummyStageRequest: DummyStageRequest; +} + +export interface StagesDummyUsedByListRequest { + stageUuid: string; +} + +export interface StagesEmailCreateRequest { + emailStageRequest: EmailStageRequest; +} + +export interface StagesEmailDestroyRequest { + stageUuid: string; +} + +export interface StagesEmailListRequest { + activateUserOnSuccess?: boolean; + fromAddress?: string; + host?: string; + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + port?: number; + search?: string; + subject?: string; + template?: string; + timeout?: number; + tokenExpiry?: string; + useGlobalSettings?: boolean; + useSsl?: boolean; + useTls?: boolean; + username?: string; +} + +export interface StagesEmailPartialUpdateRequest { + stageUuid: string; + patchedEmailStageRequest?: PatchedEmailStageRequest; +} + +export interface StagesEmailRetrieveRequest { + stageUuid: string; +} + +export interface StagesEmailUpdateRequest { + stageUuid: string; + emailStageRequest: EmailStageRequest; +} + +export interface StagesEmailUsedByListRequest { + stageUuid: string; +} + +export interface StagesEndpointsCreateRequest { + endpointStageRequest: EndpointStageRequest; +} + +export interface StagesEndpointsDestroyRequest { + stageUuid: string; +} + +export interface StagesEndpointsListRequest { + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; +} + +export interface StagesEndpointsPartialUpdateRequest { + stageUuid: string; + patchedEndpointStageRequest?: PatchedEndpointStageRequest; +} + +export interface StagesEndpointsRetrieveRequest { + stageUuid: string; +} + +export interface StagesEndpointsUpdateRequest { + stageUuid: string; + endpointStageRequest: EndpointStageRequest; +} + +export interface StagesEndpointsUsedByListRequest { + stageUuid: string; +} + +export interface StagesIdentificationCreateRequest { + identificationStageRequest: IdentificationStageRequest; +} + +export interface StagesIdentificationDestroyRequest { + stageUuid: string; +} + +export interface StagesIdentificationListRequest { + captchaStage?: string; + caseInsensitiveMatching?: boolean; + enrollmentFlow?: string; + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + passwordStage?: string; + passwordlessFlow?: string; + recoveryFlow?: string; + search?: string; + showMatchedUser?: boolean; + showSourceLabels?: boolean; + webauthnStage?: string; +} + +export interface StagesIdentificationPartialUpdateRequest { + stageUuid: string; + patchedIdentificationStageRequest?: PatchedIdentificationStageRequest; +} + +export interface StagesIdentificationRetrieveRequest { + stageUuid: string; +} + +export interface StagesIdentificationUpdateRequest { + stageUuid: string; + identificationStageRequest: IdentificationStageRequest; +} + +export interface StagesIdentificationUsedByListRequest { + stageUuid: string; +} + +export interface StagesInvitationInvitationsCreateRequest { + invitationRequest: InvitationRequest; +} + +export interface StagesInvitationInvitationsDestroyRequest { + inviteUuid: string; +} + +export interface StagesInvitationInvitationsListRequest { + createdByUsername?: string; + expires?: Date; + flowSlug?: string; + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; +} + +export interface StagesInvitationInvitationsPartialUpdateRequest { + inviteUuid: string; + patchedInvitationRequest?: PatchedInvitationRequest; +} + +export interface StagesInvitationInvitationsRetrieveRequest { + inviteUuid: string; +} + +export interface StagesInvitationInvitationsSendEmailCreateRequest { + inviteUuid: string; + invitationSendEmailRequest: InvitationSendEmailRequest; +} + +export interface StagesInvitationInvitationsUpdateRequest { + inviteUuid: string; + invitationRequest: InvitationRequest; +} + +export interface StagesInvitationInvitationsUsedByListRequest { + inviteUuid: string; +} + +export interface StagesInvitationStagesCreateRequest { + invitationStageRequest: InvitationStageRequest; +} + +export interface StagesInvitationStagesDestroyRequest { + stageUuid: string; +} + +export interface StagesInvitationStagesListRequest { + continueFlowWithoutInvitation?: boolean; + name?: string; + noFlows?: boolean; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; + stageUuid?: string; +} + +export interface StagesInvitationStagesPartialUpdateRequest { + stageUuid: string; + patchedInvitationStageRequest?: PatchedInvitationStageRequest; +} + +export interface StagesInvitationStagesRetrieveRequest { + stageUuid: string; +} + +export interface StagesInvitationStagesUpdateRequest { + stageUuid: string; + invitationStageRequest: InvitationStageRequest; +} + +export interface StagesInvitationStagesUsedByListRequest { + stageUuid: string; +} + +export interface StagesMtlsCreateRequest { + mutualTLSStageRequest: MutualTLSStageRequest; +} + +export interface StagesMtlsDestroyRequest { + stageUuid: string; +} + +export interface StagesMtlsListRequest { + certAttribute?: CertAttributeEnum; + certificateAuthorities?: Array; + mode?: StageModeEnum; + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; + stageUuid?: string; + userAttribute?: UserAttributeEnum; +} + +export interface StagesMtlsPartialUpdateRequest { + stageUuid: string; + patchedMutualTLSStageRequest?: PatchedMutualTLSStageRequest; +} + +export interface StagesMtlsRetrieveRequest { + stageUuid: string; +} + +export interface StagesMtlsUpdateRequest { + stageUuid: string; + mutualTLSStageRequest: MutualTLSStageRequest; +} + +export interface StagesMtlsUsedByListRequest { + stageUuid: string; +} + +export interface StagesPasswordCreateRequest { + passwordStageRequest: PasswordStageRequest; +} + +export interface StagesPasswordDestroyRequest { + stageUuid: string; +} + +export interface StagesPasswordListRequest { + allowShowPassword?: boolean; + configureFlow?: string; + failedAttemptsBeforeCancel?: number; + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; +} + +export interface StagesPasswordPartialUpdateRequest { + stageUuid: string; + patchedPasswordStageRequest?: PatchedPasswordStageRequest; +} + +export interface StagesPasswordRetrieveRequest { + stageUuid: string; +} + +export interface StagesPasswordUpdateRequest { + stageUuid: string; + passwordStageRequest: PasswordStageRequest; +} + +export interface StagesPasswordUsedByListRequest { + stageUuid: string; +} + +export interface StagesPromptPromptsCreateRequest { + promptRequest: PromptRequest; +} + +export interface StagesPromptPromptsDestroyRequest { + promptUuid: string; +} + +export interface StagesPromptPromptsListRequest { + fieldKey?: string; + label?: string; + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + placeholder?: string; + search?: string; + type?: PromptTypeEnum; +} + +export interface StagesPromptPromptsPartialUpdateRequest { + promptUuid: string; + patchedPromptRequest?: PatchedPromptRequest; +} + +export interface StagesPromptPromptsPreviewCreateRequest { + promptRequest: PromptRequest; +} + +export interface StagesPromptPromptsRetrieveRequest { + promptUuid: string; +} + +export interface StagesPromptPromptsUpdateRequest { + promptUuid: string; + promptRequest: PromptRequest; +} + +export interface StagesPromptPromptsUsedByListRequest { + promptUuid: string; +} + +export interface StagesPromptStagesCreateRequest { + promptStageRequest: PromptStageRequest; +} + +export interface StagesPromptStagesDestroyRequest { + stageUuid: string; +} + +export interface StagesPromptStagesListRequest { + fields?: Array; + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; + stageUuid?: string; + validationPolicies?: Array; +} + +export interface StagesPromptStagesPartialUpdateRequest { + stageUuid: string; + patchedPromptStageRequest?: PatchedPromptStageRequest; +} + +export interface StagesPromptStagesRetrieveRequest { + stageUuid: string; +} + +export interface StagesPromptStagesUpdateRequest { + stageUuid: string; + promptStageRequest: PromptStageRequest; +} + +export interface StagesPromptStagesUsedByListRequest { + stageUuid: string; +} + +export interface StagesRedirectCreateRequest { + redirectStageRequest: RedirectStageRequest; +} + +export interface StagesRedirectDestroyRequest { + stageUuid: string; +} + +export interface StagesRedirectListRequest { + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; +} + +export interface StagesRedirectPartialUpdateRequest { + stageUuid: string; + patchedRedirectStageRequest?: PatchedRedirectStageRequest; +} + +export interface StagesRedirectRetrieveRequest { + stageUuid: string; +} + +export interface StagesRedirectUpdateRequest { + stageUuid: string; + redirectStageRequest: RedirectStageRequest; +} + +export interface StagesRedirectUsedByListRequest { + stageUuid: string; +} + +export interface StagesSourceCreateRequest { + sourceStageRequest: SourceStageRequest; +} + +export interface StagesSourceDestroyRequest { + stageUuid: string; +} + +export interface StagesSourceListRequest { + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + resumeTimeout?: string; + search?: string; + source?: string; + stageUuid?: string; +} + +export interface StagesSourcePartialUpdateRequest { + stageUuid: string; + patchedSourceStageRequest?: PatchedSourceStageRequest; +} + +export interface StagesSourceRetrieveRequest { + stageUuid: string; +} + +export interface StagesSourceUpdateRequest { + stageUuid: string; + sourceStageRequest: SourceStageRequest; +} + +export interface StagesSourceUsedByListRequest { + stageUuid: string; +} + +export interface StagesUserDeleteCreateRequest { + userDeleteStageRequest: UserDeleteStageRequest; +} + +export interface StagesUserDeleteDestroyRequest { + stageUuid: string; +} + +export interface StagesUserDeleteListRequest { + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; + stageUuid?: string; +} + +export interface StagesUserDeletePartialUpdateRequest { + stageUuid: string; + patchedUserDeleteStageRequest?: PatchedUserDeleteStageRequest; +} + +export interface StagesUserDeleteRetrieveRequest { + stageUuid: string; +} + +export interface StagesUserDeleteUpdateRequest { + stageUuid: string; + userDeleteStageRequest: UserDeleteStageRequest; +} + +export interface StagesUserDeleteUsedByListRequest { + stageUuid: string; +} + +export interface StagesUserLoginCreateRequest { + userLoginStageRequest: UserLoginStageRequest; +} + +export interface StagesUserLoginDestroyRequest { + stageUuid: string; +} + +export interface StagesUserLoginListRequest { + geoipBinding?: GeoipBindingEnum; + name?: string; + networkBinding?: NetworkBindingEnum; + ordering?: string; + page?: number; + pageSize?: number; + rememberDevice?: string; + rememberMeOffset?: string; + search?: string; + sessionDuration?: string; + stageUuid?: string; + terminateOtherSessions?: boolean; +} + +export interface StagesUserLoginPartialUpdateRequest { + stageUuid: string; + patchedUserLoginStageRequest?: PatchedUserLoginStageRequest; +} + +export interface StagesUserLoginRetrieveRequest { + stageUuid: string; +} + +export interface StagesUserLoginUpdateRequest { + stageUuid: string; + userLoginStageRequest: UserLoginStageRequest; +} + +export interface StagesUserLoginUsedByListRequest { + stageUuid: string; +} + +export interface StagesUserLogoutCreateRequest { + userLogoutStageRequest: UserLogoutStageRequest; +} + +export interface StagesUserLogoutDestroyRequest { + stageUuid: string; +} + +export interface StagesUserLogoutListRequest { + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; + stageUuid?: string; +} + +export interface StagesUserLogoutPartialUpdateRequest { + stageUuid: string; + patchedUserLogoutStageRequest?: PatchedUserLogoutStageRequest; +} + +export interface StagesUserLogoutRetrieveRequest { + stageUuid: string; +} + +export interface StagesUserLogoutUpdateRequest { + stageUuid: string; + userLogoutStageRequest: UserLogoutStageRequest; +} + +export interface StagesUserLogoutUsedByListRequest { + stageUuid: string; +} + +export interface StagesUserWriteCreateRequest { + userWriteStageRequest: UserWriteStageRequest; +} + +export interface StagesUserWriteDestroyRequest { + stageUuid: string; +} + +export interface StagesUserWriteListRequest { + createUsersAsInactive?: boolean; + createUsersGroup?: string; + name?: string; + ordering?: string; + page?: number; + pageSize?: number; + search?: string; + stageUuid?: string; + userCreationMode?: UserCreationModeEnum; + userPathTemplate?: string; + userType?: UserTypeEnum; +} + +export interface StagesUserWritePartialUpdateRequest { + stageUuid: string; + patchedUserWriteStageRequest?: PatchedUserWriteStageRequest; +} + +export interface StagesUserWriteRetrieveRequest { + stageUuid: string; +} + +export interface StagesUserWriteUpdateRequest { + stageUuid: string; + userWriteStageRequest: UserWriteStageRequest; +} + +export interface StagesUserWriteUsedByListRequest { + stageUuid: string; +} + +/** + * + */ +export class StagesApi extends runtime.BaseAPI { + /** + * Creates request options for stagesAccountLockdownCreate without sending the request + */ + async stagesAccountLockdownCreateRequestOpts( + requestParameters: StagesAccountLockdownCreateRequest, + ): Promise { + if (requestParameters["accountLockdownStageRequest"] == null) { + throw new runtime.RequiredError( + "accountLockdownStageRequest", + 'Required parameter "accountLockdownStageRequest" was null or undefined when calling stagesAccountLockdownCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/account_lockdown/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: AccountLockdownStageRequestToJSON( + requestParameters["accountLockdownStageRequest"], + ), + }; + } + + /** + * AccountLockdownStage Viewset + */ + async stagesAccountLockdownCreateRaw( + requestParameters: StagesAccountLockdownCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesAccountLockdownCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + AccountLockdownStageFromJSON(jsonValue), + ); + } + + /** + * AccountLockdownStage Viewset + */ + async stagesAccountLockdownCreate( + requestParameters: StagesAccountLockdownCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesAccountLockdownCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesAccountLockdownDestroy without sending the request + */ + async stagesAccountLockdownDestroyRequestOpts( + requestParameters: StagesAccountLockdownDestroyRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesAccountLockdownDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/account_lockdown/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * AccountLockdownStage Viewset + */ + async stagesAccountLockdownDestroyRaw( + requestParameters: StagesAccountLockdownDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.stagesAccountLockdownDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * AccountLockdownStage Viewset + */ + async stagesAccountLockdownDestroy( + requestParameters: StagesAccountLockdownDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.stagesAccountLockdownDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for stagesAccountLockdownList without sending the request + */ + async stagesAccountLockdownListRequestOpts( + requestParameters: StagesAccountLockdownListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["deactivateUser"] != null) { + queryParameters["deactivate_user"] = requestParameters["deactivateUser"]; + } + + if (requestParameters["deleteSessions"] != null) { + queryParameters["delete_sessions"] = requestParameters["deleteSessions"]; + } + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["revokeTokens"] != null) { + queryParameters["revoke_tokens"] = requestParameters["revokeTokens"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["selfServiceCompletionFlow"] != null) { + queryParameters["self_service_completion_flow"] = + requestParameters["selfServiceCompletionFlow"]; + } + + if (requestParameters["setUnusablePassword"] != null) { + queryParameters["set_unusable_password"] = requestParameters["setUnusablePassword"]; + } + + if (requestParameters["stageUuid"] != null) { + queryParameters["stage_uuid"] = requestParameters["stageUuid"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/account_lockdown/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * AccountLockdownStage Viewset + */ + async stagesAccountLockdownListRaw( + requestParameters: StagesAccountLockdownListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesAccountLockdownListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedAccountLockdownStageListFromJSON(jsonValue), + ); + } + + /** + * AccountLockdownStage Viewset + */ + async stagesAccountLockdownList( + requestParameters: StagesAccountLockdownListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesAccountLockdownListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesAccountLockdownPartialUpdate without sending the request + */ + async stagesAccountLockdownPartialUpdateRequestOpts( + requestParameters: StagesAccountLockdownPartialUpdateRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesAccountLockdownPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/account_lockdown/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedAccountLockdownStageRequestToJSON( + requestParameters["patchedAccountLockdownStageRequest"], + ), + }; + } + + /** + * AccountLockdownStage Viewset + */ + async stagesAccountLockdownPartialUpdateRaw( + requestParameters: StagesAccountLockdownPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.stagesAccountLockdownPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + AccountLockdownStageFromJSON(jsonValue), + ); + } + + /** + * AccountLockdownStage Viewset + */ + async stagesAccountLockdownPartialUpdate( + requestParameters: StagesAccountLockdownPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesAccountLockdownPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesAccountLockdownRetrieve without sending the request + */ + async stagesAccountLockdownRetrieveRequestOpts( + requestParameters: StagesAccountLockdownRetrieveRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesAccountLockdownRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/account_lockdown/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * AccountLockdownStage Viewset + */ + async stagesAccountLockdownRetrieveRaw( + requestParameters: StagesAccountLockdownRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.stagesAccountLockdownRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + AccountLockdownStageFromJSON(jsonValue), + ); + } + + /** + * AccountLockdownStage Viewset + */ + async stagesAccountLockdownRetrieve( + requestParameters: StagesAccountLockdownRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesAccountLockdownRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesAccountLockdownUpdate without sending the request + */ + async stagesAccountLockdownUpdateRequestOpts( + requestParameters: StagesAccountLockdownUpdateRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesAccountLockdownUpdate().', + ); + } + + if (requestParameters["accountLockdownStageRequest"] == null) { + throw new runtime.RequiredError( + "accountLockdownStageRequest", + 'Required parameter "accountLockdownStageRequest" was null or undefined when calling stagesAccountLockdownUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/account_lockdown/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: AccountLockdownStageRequestToJSON( + requestParameters["accountLockdownStageRequest"], + ), + }; + } + + /** + * AccountLockdownStage Viewset + */ + async stagesAccountLockdownUpdateRaw( + requestParameters: StagesAccountLockdownUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesAccountLockdownUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + AccountLockdownStageFromJSON(jsonValue), + ); + } + + /** + * AccountLockdownStage Viewset + */ + async stagesAccountLockdownUpdate( + requestParameters: StagesAccountLockdownUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesAccountLockdownUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesAccountLockdownUsedByList without sending the request + */ + async stagesAccountLockdownUsedByListRequestOpts( + requestParameters: StagesAccountLockdownUsedByListRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesAccountLockdownUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/account_lockdown/{stage_uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async stagesAccountLockdownUsedByListRaw( + requestParameters: StagesAccountLockdownUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.stagesAccountLockdownUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async stagesAccountLockdownUsedByList( + requestParameters: StagesAccountLockdownUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.stagesAccountLockdownUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesAllDestroy without sending the request + */ + async stagesAllDestroyRequestOpts( + requestParameters: StagesAllDestroyRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesAllDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/all/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Stage Viewset + */ + async stagesAllDestroyRaw( + requestParameters: StagesAllDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesAllDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Stage Viewset + */ + async stagesAllDestroy( + requestParameters: StagesAllDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.stagesAllDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for stagesAllList without sending the request + */ + async stagesAllListRequestOpts( + requestParameters: StagesAllListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/all/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Stage Viewset + */ + async stagesAllListRaw( + requestParameters: StagesAllListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesAllListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedStageListFromJSON(jsonValue), + ); + } + + /** + * Stage Viewset + */ + async stagesAllList( + requestParameters: StagesAllListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesAllListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesAllRetrieve without sending the request + */ + async stagesAllRetrieveRequestOpts( + requestParameters: StagesAllRetrieveRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesAllRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/all/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Stage Viewset + */ + async stagesAllRetrieveRaw( + requestParameters: StagesAllRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesAllRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => StageFromJSON(jsonValue)); + } + + /** + * Stage Viewset + */ + async stagesAllRetrieve( + requestParameters: StagesAllRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesAllRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesAllTypesList without sending the request + */ + async stagesAllTypesListRequestOpts(): Promise { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/all/types/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get all creatable types + */ + async stagesAllTypesListRaw( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.stagesAllTypesListRequestOpts(); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + jsonValue.map(TypeCreateFromJSON), + ); + } + + /** + * Get all creatable types + */ + async stagesAllTypesList( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.stagesAllTypesListRaw(initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesAllUsedByList without sending the request + */ + async stagesAllUsedByListRequestOpts( + requestParameters: StagesAllUsedByListRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesAllUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/all/{stage_uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async stagesAllUsedByListRaw( + requestParameters: StagesAllUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.stagesAllUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async stagesAllUsedByList( + requestParameters: StagesAllUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.stagesAllUsedByListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesAllUserSettingsList without sending the request + */ + async stagesAllUserSettingsListRequestOpts(): Promise { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/all/user_settings/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get all stages the user can configure + */ + async stagesAllUserSettingsListRaw( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.stagesAllUserSettingsListRequestOpts(); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + jsonValue.map(UserSettingFromJSON), + ); + } + + /** + * Get all stages the user can configure + */ + async stagesAllUserSettingsList( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.stagesAllUserSettingsListRaw(initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesAuthenticatorDuoCreate without sending the request + */ + async stagesAuthenticatorDuoCreateRequestOpts( + requestParameters: StagesAuthenticatorDuoCreateRequest, + ): Promise { + if (requestParameters["authenticatorDuoStageRequest"] == null) { + throw new runtime.RequiredError( + "authenticatorDuoStageRequest", + 'Required parameter "authenticatorDuoStageRequest" was null or undefined when calling stagesAuthenticatorDuoCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/authenticator/duo/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: AuthenticatorDuoStageRequestToJSON( + requestParameters["authenticatorDuoStageRequest"], + ), + }; + } + + /** + * AuthenticatorDuoStage Viewset + */ + async stagesAuthenticatorDuoCreateRaw( + requestParameters: StagesAuthenticatorDuoCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.stagesAuthenticatorDuoCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + AuthenticatorDuoStageFromJSON(jsonValue), + ); + } + + /** + * AuthenticatorDuoStage Viewset + */ + async stagesAuthenticatorDuoCreate( + requestParameters: StagesAuthenticatorDuoCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesAuthenticatorDuoCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesAuthenticatorDuoDestroy without sending the request + */ + async stagesAuthenticatorDuoDestroyRequestOpts( + requestParameters: StagesAuthenticatorDuoDestroyRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesAuthenticatorDuoDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/authenticator/duo/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * AuthenticatorDuoStage Viewset + */ + async stagesAuthenticatorDuoDestroyRaw( + requestParameters: StagesAuthenticatorDuoDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.stagesAuthenticatorDuoDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * AuthenticatorDuoStage Viewset + */ + async stagesAuthenticatorDuoDestroy( + requestParameters: StagesAuthenticatorDuoDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.stagesAuthenticatorDuoDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for stagesAuthenticatorDuoEnrollmentStatusCreate without sending the request + */ + async stagesAuthenticatorDuoEnrollmentStatusCreateRequestOpts( + requestParameters: StagesAuthenticatorDuoEnrollmentStatusCreateRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesAuthenticatorDuoEnrollmentStatusCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + let urlPath = `/stages/authenticator/duo/{stage_uuid}/enrollment_status/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Check enrollment status of user details in current session + */ + async stagesAuthenticatorDuoEnrollmentStatusCreateRaw( + requestParameters: StagesAuthenticatorDuoEnrollmentStatusCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.stagesAuthenticatorDuoEnrollmentStatusCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + DuoDeviceEnrollmentStatusFromJSON(jsonValue), + ); + } + + /** + * Check enrollment status of user details in current session + */ + async stagesAuthenticatorDuoEnrollmentStatusCreate( + requestParameters: StagesAuthenticatorDuoEnrollmentStatusCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesAuthenticatorDuoEnrollmentStatusCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesAuthenticatorDuoImportDeviceManualCreate without sending the request + */ + async stagesAuthenticatorDuoImportDeviceManualCreateRequestOpts( + requestParameters: StagesAuthenticatorDuoImportDeviceManualCreateRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesAuthenticatorDuoImportDeviceManualCreate().', + ); + } + + if (requestParameters["authenticatorDuoStageManualDeviceImportRequest"] == null) { + throw new runtime.RequiredError( + "authenticatorDuoStageManualDeviceImportRequest", + 'Required parameter "authenticatorDuoStageManualDeviceImportRequest" was null or undefined when calling stagesAuthenticatorDuoImportDeviceManualCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/authenticator/duo/{stage_uuid}/import_device_manual/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: AuthenticatorDuoStageManualDeviceImportRequestToJSON( + requestParameters["authenticatorDuoStageManualDeviceImportRequest"], + ), + }; + } + + /** + * Import duo devices into authentik + */ + async stagesAuthenticatorDuoImportDeviceManualCreateRaw( + requestParameters: StagesAuthenticatorDuoImportDeviceManualCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.stagesAuthenticatorDuoImportDeviceManualCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Import duo devices into authentik + */ + async stagesAuthenticatorDuoImportDeviceManualCreate( + requestParameters: StagesAuthenticatorDuoImportDeviceManualCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.stagesAuthenticatorDuoImportDeviceManualCreateRaw( + requestParameters, + initOverrides, + ); + } + + /** + * Creates request options for stagesAuthenticatorDuoImportDevicesAutomaticCreate without sending the request + */ + async stagesAuthenticatorDuoImportDevicesAutomaticCreateRequestOpts( + requestParameters: StagesAuthenticatorDuoImportDevicesAutomaticCreateRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesAuthenticatorDuoImportDevicesAutomaticCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/authenticator/duo/{stage_uuid}/import_devices_automatic/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Import duo devices into authentik + */ + async stagesAuthenticatorDuoImportDevicesAutomaticCreateRaw( + requestParameters: StagesAuthenticatorDuoImportDevicesAutomaticCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.stagesAuthenticatorDuoImportDevicesAutomaticCreateRequestOpts( + requestParameters, + ); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + AuthenticatorDuoStageDeviceImportResponseFromJSON(jsonValue), + ); + } + + /** + * Import duo devices into authentik + */ + async stagesAuthenticatorDuoImportDevicesAutomaticCreate( + requestParameters: StagesAuthenticatorDuoImportDevicesAutomaticCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesAuthenticatorDuoImportDevicesAutomaticCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesAuthenticatorDuoList without sending the request + */ + async stagesAuthenticatorDuoListRequestOpts( + requestParameters: StagesAuthenticatorDuoListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["apiHostname"] != null) { + queryParameters["api_hostname"] = requestParameters["apiHostname"]; + } + + if (requestParameters["clientId"] != null) { + queryParameters["client_id"] = requestParameters["clientId"]; + } + + if (requestParameters["configureFlow"] != null) { + queryParameters["configure_flow"] = requestParameters["configureFlow"]; + } + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/authenticator/duo/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * AuthenticatorDuoStage Viewset + */ + async stagesAuthenticatorDuoListRaw( + requestParameters: StagesAuthenticatorDuoListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesAuthenticatorDuoListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedAuthenticatorDuoStageListFromJSON(jsonValue), + ); + } + + /** + * AuthenticatorDuoStage Viewset + */ + async stagesAuthenticatorDuoList( + requestParameters: StagesAuthenticatorDuoListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesAuthenticatorDuoListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesAuthenticatorDuoPartialUpdate without sending the request + */ + async stagesAuthenticatorDuoPartialUpdateRequestOpts( + requestParameters: StagesAuthenticatorDuoPartialUpdateRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesAuthenticatorDuoPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/authenticator/duo/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedAuthenticatorDuoStageRequestToJSON( + requestParameters["patchedAuthenticatorDuoStageRequest"], + ), + }; + } + + /** + * AuthenticatorDuoStage Viewset + */ + async stagesAuthenticatorDuoPartialUpdateRaw( + requestParameters: StagesAuthenticatorDuoPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.stagesAuthenticatorDuoPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + AuthenticatorDuoStageFromJSON(jsonValue), + ); + } + + /** + * AuthenticatorDuoStage Viewset + */ + async stagesAuthenticatorDuoPartialUpdate( + requestParameters: StagesAuthenticatorDuoPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesAuthenticatorDuoPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesAuthenticatorDuoRetrieve without sending the request + */ + async stagesAuthenticatorDuoRetrieveRequestOpts( + requestParameters: StagesAuthenticatorDuoRetrieveRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesAuthenticatorDuoRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/authenticator/duo/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * AuthenticatorDuoStage Viewset + */ + async stagesAuthenticatorDuoRetrieveRaw( + requestParameters: StagesAuthenticatorDuoRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.stagesAuthenticatorDuoRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + AuthenticatorDuoStageFromJSON(jsonValue), + ); + } + + /** + * AuthenticatorDuoStage Viewset + */ + async stagesAuthenticatorDuoRetrieve( + requestParameters: StagesAuthenticatorDuoRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesAuthenticatorDuoRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesAuthenticatorDuoUpdate without sending the request + */ + async stagesAuthenticatorDuoUpdateRequestOpts( + requestParameters: StagesAuthenticatorDuoUpdateRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesAuthenticatorDuoUpdate().', + ); + } + + if (requestParameters["authenticatorDuoStageRequest"] == null) { + throw new runtime.RequiredError( + "authenticatorDuoStageRequest", + 'Required parameter "authenticatorDuoStageRequest" was null or undefined when calling stagesAuthenticatorDuoUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/authenticator/duo/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: AuthenticatorDuoStageRequestToJSON( + requestParameters["authenticatorDuoStageRequest"], + ), + }; + } + + /** + * AuthenticatorDuoStage Viewset + */ + async stagesAuthenticatorDuoUpdateRaw( + requestParameters: StagesAuthenticatorDuoUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.stagesAuthenticatorDuoUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + AuthenticatorDuoStageFromJSON(jsonValue), + ); + } + + /** + * AuthenticatorDuoStage Viewset + */ + async stagesAuthenticatorDuoUpdate( + requestParameters: StagesAuthenticatorDuoUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesAuthenticatorDuoUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesAuthenticatorDuoUsedByList without sending the request + */ + async stagesAuthenticatorDuoUsedByListRequestOpts( + requestParameters: StagesAuthenticatorDuoUsedByListRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesAuthenticatorDuoUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/authenticator/duo/{stage_uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async stagesAuthenticatorDuoUsedByListRaw( + requestParameters: StagesAuthenticatorDuoUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.stagesAuthenticatorDuoUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async stagesAuthenticatorDuoUsedByList( + requestParameters: StagesAuthenticatorDuoUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.stagesAuthenticatorDuoUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesAuthenticatorEmailCreate without sending the request + */ + async stagesAuthenticatorEmailCreateRequestOpts( + requestParameters: StagesAuthenticatorEmailCreateRequest, + ): Promise { + if (requestParameters["authenticatorEmailStageRequest"] == null) { + throw new runtime.RequiredError( + "authenticatorEmailStageRequest", + 'Required parameter "authenticatorEmailStageRequest" was null or undefined when calling stagesAuthenticatorEmailCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/authenticator/email/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: AuthenticatorEmailStageRequestToJSON( + requestParameters["authenticatorEmailStageRequest"], + ), + }; + } + + /** + * AuthenticatorEmailStage Viewset + */ + async stagesAuthenticatorEmailCreateRaw( + requestParameters: StagesAuthenticatorEmailCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.stagesAuthenticatorEmailCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + AuthenticatorEmailStageFromJSON(jsonValue), + ); + } + + /** + * AuthenticatorEmailStage Viewset + */ + async stagesAuthenticatorEmailCreate( + requestParameters: StagesAuthenticatorEmailCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesAuthenticatorEmailCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesAuthenticatorEmailDestroy without sending the request + */ + async stagesAuthenticatorEmailDestroyRequestOpts( + requestParameters: StagesAuthenticatorEmailDestroyRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesAuthenticatorEmailDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/authenticator/email/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * AuthenticatorEmailStage Viewset + */ + async stagesAuthenticatorEmailDestroyRaw( + requestParameters: StagesAuthenticatorEmailDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.stagesAuthenticatorEmailDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * AuthenticatorEmailStage Viewset + */ + async stagesAuthenticatorEmailDestroy( + requestParameters: StagesAuthenticatorEmailDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.stagesAuthenticatorEmailDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for stagesAuthenticatorEmailList without sending the request + */ + async stagesAuthenticatorEmailListRequestOpts( + requestParameters: StagesAuthenticatorEmailListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["configureFlow"] != null) { + queryParameters["configure_flow"] = requestParameters["configureFlow"]; + } + + if (requestParameters["friendlyName"] != null) { + queryParameters["friendly_name"] = requestParameters["friendlyName"]; + } + + if (requestParameters["fromAddress"] != null) { + queryParameters["from_address"] = requestParameters["fromAddress"]; + } + + if (requestParameters["host"] != null) { + queryParameters["host"] = requestParameters["host"]; + } + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["password"] != null) { + queryParameters["password"] = requestParameters["password"]; + } + + if (requestParameters["port"] != null) { + queryParameters["port"] = requestParameters["port"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["stageUuid"] != null) { + queryParameters["stage_uuid"] = requestParameters["stageUuid"]; + } + + if (requestParameters["subject"] != null) { + queryParameters["subject"] = requestParameters["subject"]; + } + + if (requestParameters["template"] != null) { + queryParameters["template"] = requestParameters["template"]; + } + + if (requestParameters["timeout"] != null) { + queryParameters["timeout"] = requestParameters["timeout"]; + } + + if (requestParameters["tokenExpiry"] != null) { + queryParameters["token_expiry"] = requestParameters["tokenExpiry"]; + } + + if (requestParameters["useGlobalSettings"] != null) { + queryParameters["use_global_settings"] = requestParameters["useGlobalSettings"]; + } + + if (requestParameters["useSsl"] != null) { + queryParameters["use_ssl"] = requestParameters["useSsl"]; + } + + if (requestParameters["useTls"] != null) { + queryParameters["use_tls"] = requestParameters["useTls"]; + } + + if (requestParameters["username"] != null) { + queryParameters["username"] = requestParameters["username"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/authenticator/email/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * AuthenticatorEmailStage Viewset + */ + async stagesAuthenticatorEmailListRaw( + requestParameters: StagesAuthenticatorEmailListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.stagesAuthenticatorEmailListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedAuthenticatorEmailStageListFromJSON(jsonValue), + ); + } + + /** + * AuthenticatorEmailStage Viewset + */ + async stagesAuthenticatorEmailList( + requestParameters: StagesAuthenticatorEmailListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesAuthenticatorEmailListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesAuthenticatorEmailPartialUpdate without sending the request + */ + async stagesAuthenticatorEmailPartialUpdateRequestOpts( + requestParameters: StagesAuthenticatorEmailPartialUpdateRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesAuthenticatorEmailPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/authenticator/email/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedAuthenticatorEmailStageRequestToJSON( + requestParameters["patchedAuthenticatorEmailStageRequest"], + ), + }; + } + + /** + * AuthenticatorEmailStage Viewset + */ + async stagesAuthenticatorEmailPartialUpdateRaw( + requestParameters: StagesAuthenticatorEmailPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.stagesAuthenticatorEmailPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + AuthenticatorEmailStageFromJSON(jsonValue), + ); + } + + /** + * AuthenticatorEmailStage Viewset + */ + async stagesAuthenticatorEmailPartialUpdate( + requestParameters: StagesAuthenticatorEmailPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesAuthenticatorEmailPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesAuthenticatorEmailRetrieve without sending the request + */ + async stagesAuthenticatorEmailRetrieveRequestOpts( + requestParameters: StagesAuthenticatorEmailRetrieveRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesAuthenticatorEmailRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/authenticator/email/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * AuthenticatorEmailStage Viewset + */ + async stagesAuthenticatorEmailRetrieveRaw( + requestParameters: StagesAuthenticatorEmailRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.stagesAuthenticatorEmailRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + AuthenticatorEmailStageFromJSON(jsonValue), + ); + } + + /** + * AuthenticatorEmailStage Viewset + */ + async stagesAuthenticatorEmailRetrieve( + requestParameters: StagesAuthenticatorEmailRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesAuthenticatorEmailRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesAuthenticatorEmailUpdate without sending the request + */ + async stagesAuthenticatorEmailUpdateRequestOpts( + requestParameters: StagesAuthenticatorEmailUpdateRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesAuthenticatorEmailUpdate().', + ); + } + + if (requestParameters["authenticatorEmailStageRequest"] == null) { + throw new runtime.RequiredError( + "authenticatorEmailStageRequest", + 'Required parameter "authenticatorEmailStageRequest" was null or undefined when calling stagesAuthenticatorEmailUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/authenticator/email/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: AuthenticatorEmailStageRequestToJSON( + requestParameters["authenticatorEmailStageRequest"], + ), + }; + } + + /** + * AuthenticatorEmailStage Viewset + */ + async stagesAuthenticatorEmailUpdateRaw( + requestParameters: StagesAuthenticatorEmailUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.stagesAuthenticatorEmailUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + AuthenticatorEmailStageFromJSON(jsonValue), + ); + } + + /** + * AuthenticatorEmailStage Viewset + */ + async stagesAuthenticatorEmailUpdate( + requestParameters: StagesAuthenticatorEmailUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesAuthenticatorEmailUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesAuthenticatorEmailUsedByList without sending the request + */ + async stagesAuthenticatorEmailUsedByListRequestOpts( + requestParameters: StagesAuthenticatorEmailUsedByListRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesAuthenticatorEmailUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/authenticator/email/{stage_uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async stagesAuthenticatorEmailUsedByListRaw( + requestParameters: StagesAuthenticatorEmailUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.stagesAuthenticatorEmailUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async stagesAuthenticatorEmailUsedByList( + requestParameters: StagesAuthenticatorEmailUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.stagesAuthenticatorEmailUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesAuthenticatorEndpointGdtcCreate without sending the request + */ + async stagesAuthenticatorEndpointGdtcCreateRequestOpts( + requestParameters: StagesAuthenticatorEndpointGdtcCreateRequest, + ): Promise { + if (requestParameters["authenticatorEndpointGDTCStageRequest"] == null) { + throw new runtime.RequiredError( + "authenticatorEndpointGDTCStageRequest", + 'Required parameter "authenticatorEndpointGDTCStageRequest" was null or undefined when calling stagesAuthenticatorEndpointGdtcCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/authenticator/endpoint_gdtc/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: AuthenticatorEndpointGDTCStageRequestToJSON( + requestParameters["authenticatorEndpointGDTCStageRequest"], + ), + }; + } + + /** + * AuthenticatorEndpointGDTCStage Viewset + */ + async stagesAuthenticatorEndpointGdtcCreateRaw( + requestParameters: StagesAuthenticatorEndpointGdtcCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.stagesAuthenticatorEndpointGdtcCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + AuthenticatorEndpointGDTCStageFromJSON(jsonValue), + ); + } + + /** + * AuthenticatorEndpointGDTCStage Viewset + */ + async stagesAuthenticatorEndpointGdtcCreate( + requestParameters: StagesAuthenticatorEndpointGdtcCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesAuthenticatorEndpointGdtcCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesAuthenticatorEndpointGdtcDestroy without sending the request + */ + async stagesAuthenticatorEndpointGdtcDestroyRequestOpts( + requestParameters: StagesAuthenticatorEndpointGdtcDestroyRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesAuthenticatorEndpointGdtcDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/authenticator/endpoint_gdtc/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * AuthenticatorEndpointGDTCStage Viewset + */ + async stagesAuthenticatorEndpointGdtcDestroyRaw( + requestParameters: StagesAuthenticatorEndpointGdtcDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.stagesAuthenticatorEndpointGdtcDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * AuthenticatorEndpointGDTCStage Viewset + */ + async stagesAuthenticatorEndpointGdtcDestroy( + requestParameters: StagesAuthenticatorEndpointGdtcDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.stagesAuthenticatorEndpointGdtcDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for stagesAuthenticatorEndpointGdtcList without sending the request + */ + async stagesAuthenticatorEndpointGdtcListRequestOpts( + requestParameters: StagesAuthenticatorEndpointGdtcListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["configureFlow"] != null) { + queryParameters["configure_flow"] = requestParameters["configureFlow"]; + } + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/authenticator/endpoint_gdtc/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * AuthenticatorEndpointGDTCStage Viewset + */ + async stagesAuthenticatorEndpointGdtcListRaw( + requestParameters: StagesAuthenticatorEndpointGdtcListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.stagesAuthenticatorEndpointGdtcListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedAuthenticatorEndpointGDTCStageListFromJSON(jsonValue), + ); + } + + /** + * AuthenticatorEndpointGDTCStage Viewset + */ + async stagesAuthenticatorEndpointGdtcList( + requestParameters: StagesAuthenticatorEndpointGdtcListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesAuthenticatorEndpointGdtcListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesAuthenticatorEndpointGdtcPartialUpdate without sending the request + */ + async stagesAuthenticatorEndpointGdtcPartialUpdateRequestOpts( + requestParameters: StagesAuthenticatorEndpointGdtcPartialUpdateRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesAuthenticatorEndpointGdtcPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/authenticator/endpoint_gdtc/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedAuthenticatorEndpointGDTCStageRequestToJSON( + requestParameters["patchedAuthenticatorEndpointGDTCStageRequest"], + ), + }; + } + + /** + * AuthenticatorEndpointGDTCStage Viewset + */ + async stagesAuthenticatorEndpointGdtcPartialUpdateRaw( + requestParameters: StagesAuthenticatorEndpointGdtcPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.stagesAuthenticatorEndpointGdtcPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + AuthenticatorEndpointGDTCStageFromJSON(jsonValue), + ); + } + + /** + * AuthenticatorEndpointGDTCStage Viewset + */ + async stagesAuthenticatorEndpointGdtcPartialUpdate( + requestParameters: StagesAuthenticatorEndpointGdtcPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesAuthenticatorEndpointGdtcPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesAuthenticatorEndpointGdtcRetrieve without sending the request + */ + async stagesAuthenticatorEndpointGdtcRetrieveRequestOpts( + requestParameters: StagesAuthenticatorEndpointGdtcRetrieveRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesAuthenticatorEndpointGdtcRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/authenticator/endpoint_gdtc/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * AuthenticatorEndpointGDTCStage Viewset + */ + async stagesAuthenticatorEndpointGdtcRetrieveRaw( + requestParameters: StagesAuthenticatorEndpointGdtcRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.stagesAuthenticatorEndpointGdtcRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + AuthenticatorEndpointGDTCStageFromJSON(jsonValue), + ); + } + + /** + * AuthenticatorEndpointGDTCStage Viewset + */ + async stagesAuthenticatorEndpointGdtcRetrieve( + requestParameters: StagesAuthenticatorEndpointGdtcRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesAuthenticatorEndpointGdtcRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesAuthenticatorEndpointGdtcUpdate without sending the request + */ + async stagesAuthenticatorEndpointGdtcUpdateRequestOpts( + requestParameters: StagesAuthenticatorEndpointGdtcUpdateRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesAuthenticatorEndpointGdtcUpdate().', + ); + } + + if (requestParameters["authenticatorEndpointGDTCStageRequest"] == null) { + throw new runtime.RequiredError( + "authenticatorEndpointGDTCStageRequest", + 'Required parameter "authenticatorEndpointGDTCStageRequest" was null or undefined when calling stagesAuthenticatorEndpointGdtcUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/authenticator/endpoint_gdtc/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: AuthenticatorEndpointGDTCStageRequestToJSON( + requestParameters["authenticatorEndpointGDTCStageRequest"], + ), + }; + } + + /** + * AuthenticatorEndpointGDTCStage Viewset + */ + async stagesAuthenticatorEndpointGdtcUpdateRaw( + requestParameters: StagesAuthenticatorEndpointGdtcUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.stagesAuthenticatorEndpointGdtcUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + AuthenticatorEndpointGDTCStageFromJSON(jsonValue), + ); + } + + /** + * AuthenticatorEndpointGDTCStage Viewset + */ + async stagesAuthenticatorEndpointGdtcUpdate( + requestParameters: StagesAuthenticatorEndpointGdtcUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesAuthenticatorEndpointGdtcUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesAuthenticatorEndpointGdtcUsedByList without sending the request + */ + async stagesAuthenticatorEndpointGdtcUsedByListRequestOpts( + requestParameters: StagesAuthenticatorEndpointGdtcUsedByListRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesAuthenticatorEndpointGdtcUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/authenticator/endpoint_gdtc/{stage_uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async stagesAuthenticatorEndpointGdtcUsedByListRaw( + requestParameters: StagesAuthenticatorEndpointGdtcUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.stagesAuthenticatorEndpointGdtcUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async stagesAuthenticatorEndpointGdtcUsedByList( + requestParameters: StagesAuthenticatorEndpointGdtcUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.stagesAuthenticatorEndpointGdtcUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesAuthenticatorSmsCreate without sending the request + */ + async stagesAuthenticatorSmsCreateRequestOpts( + requestParameters: StagesAuthenticatorSmsCreateRequest, + ): Promise { + if (requestParameters["authenticatorSMSStageRequest"] == null) { + throw new runtime.RequiredError( + "authenticatorSMSStageRequest", + 'Required parameter "authenticatorSMSStageRequest" was null or undefined when calling stagesAuthenticatorSmsCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/authenticator/sms/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: AuthenticatorSMSStageRequestToJSON( + requestParameters["authenticatorSMSStageRequest"], + ), + }; + } + + /** + * AuthenticatorSMSStage Viewset + */ + async stagesAuthenticatorSmsCreateRaw( + requestParameters: StagesAuthenticatorSmsCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.stagesAuthenticatorSmsCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + AuthenticatorSMSStageFromJSON(jsonValue), + ); + } + + /** + * AuthenticatorSMSStage Viewset + */ + async stagesAuthenticatorSmsCreate( + requestParameters: StagesAuthenticatorSmsCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesAuthenticatorSmsCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesAuthenticatorSmsDestroy without sending the request + */ + async stagesAuthenticatorSmsDestroyRequestOpts( + requestParameters: StagesAuthenticatorSmsDestroyRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesAuthenticatorSmsDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/authenticator/sms/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * AuthenticatorSMSStage Viewset + */ + async stagesAuthenticatorSmsDestroyRaw( + requestParameters: StagesAuthenticatorSmsDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.stagesAuthenticatorSmsDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * AuthenticatorSMSStage Viewset + */ + async stagesAuthenticatorSmsDestroy( + requestParameters: StagesAuthenticatorSmsDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.stagesAuthenticatorSmsDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for stagesAuthenticatorSmsList without sending the request + */ + async stagesAuthenticatorSmsListRequestOpts( + requestParameters: StagesAuthenticatorSmsListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["accountSid"] != null) { + queryParameters["account_sid"] = requestParameters["accountSid"]; + } + + if (requestParameters["auth"] != null) { + queryParameters["auth"] = requestParameters["auth"]; + } + + if (requestParameters["authPassword"] != null) { + queryParameters["auth_password"] = requestParameters["authPassword"]; + } + + if (requestParameters["authType"] != null) { + queryParameters["auth_type"] = requestParameters["authType"]; + } + + if (requestParameters["configureFlow"] != null) { + queryParameters["configure_flow"] = requestParameters["configureFlow"]; + } + + if (requestParameters["friendlyName"] != null) { + queryParameters["friendly_name"] = requestParameters["friendlyName"]; + } + + if (requestParameters["fromNumber"] != null) { + queryParameters["from_number"] = requestParameters["fromNumber"]; + } + + if (requestParameters["mapping"] != null) { + queryParameters["mapping"] = requestParameters["mapping"]; + } + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["provider"] != null) { + queryParameters["provider"] = requestParameters["provider"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["stageUuid"] != null) { + queryParameters["stage_uuid"] = requestParameters["stageUuid"]; + } + + if (requestParameters["verifyOnly"] != null) { + queryParameters["verify_only"] = requestParameters["verifyOnly"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/authenticator/sms/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * AuthenticatorSMSStage Viewset + */ + async stagesAuthenticatorSmsListRaw( + requestParameters: StagesAuthenticatorSmsListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesAuthenticatorSmsListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedAuthenticatorSMSStageListFromJSON(jsonValue), + ); + } + + /** + * AuthenticatorSMSStage Viewset + */ + async stagesAuthenticatorSmsList( + requestParameters: StagesAuthenticatorSmsListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesAuthenticatorSmsListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesAuthenticatorSmsPartialUpdate without sending the request + */ + async stagesAuthenticatorSmsPartialUpdateRequestOpts( + requestParameters: StagesAuthenticatorSmsPartialUpdateRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesAuthenticatorSmsPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/authenticator/sms/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedAuthenticatorSMSStageRequestToJSON( + requestParameters["patchedAuthenticatorSMSStageRequest"], + ), + }; + } + + /** + * AuthenticatorSMSStage Viewset + */ + async stagesAuthenticatorSmsPartialUpdateRaw( + requestParameters: StagesAuthenticatorSmsPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.stagesAuthenticatorSmsPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + AuthenticatorSMSStageFromJSON(jsonValue), + ); + } + + /** + * AuthenticatorSMSStage Viewset + */ + async stagesAuthenticatorSmsPartialUpdate( + requestParameters: StagesAuthenticatorSmsPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesAuthenticatorSmsPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesAuthenticatorSmsRetrieve without sending the request + */ + async stagesAuthenticatorSmsRetrieveRequestOpts( + requestParameters: StagesAuthenticatorSmsRetrieveRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesAuthenticatorSmsRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/authenticator/sms/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * AuthenticatorSMSStage Viewset + */ + async stagesAuthenticatorSmsRetrieveRaw( + requestParameters: StagesAuthenticatorSmsRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.stagesAuthenticatorSmsRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + AuthenticatorSMSStageFromJSON(jsonValue), + ); + } + + /** + * AuthenticatorSMSStage Viewset + */ + async stagesAuthenticatorSmsRetrieve( + requestParameters: StagesAuthenticatorSmsRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesAuthenticatorSmsRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesAuthenticatorSmsUpdate without sending the request + */ + async stagesAuthenticatorSmsUpdateRequestOpts( + requestParameters: StagesAuthenticatorSmsUpdateRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesAuthenticatorSmsUpdate().', + ); + } + + if (requestParameters["authenticatorSMSStageRequest"] == null) { + throw new runtime.RequiredError( + "authenticatorSMSStageRequest", + 'Required parameter "authenticatorSMSStageRequest" was null or undefined when calling stagesAuthenticatorSmsUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/authenticator/sms/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: AuthenticatorSMSStageRequestToJSON( + requestParameters["authenticatorSMSStageRequest"], + ), + }; + } + + /** + * AuthenticatorSMSStage Viewset + */ + async stagesAuthenticatorSmsUpdateRaw( + requestParameters: StagesAuthenticatorSmsUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.stagesAuthenticatorSmsUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + AuthenticatorSMSStageFromJSON(jsonValue), + ); + } + + /** + * AuthenticatorSMSStage Viewset + */ + async stagesAuthenticatorSmsUpdate( + requestParameters: StagesAuthenticatorSmsUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesAuthenticatorSmsUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesAuthenticatorSmsUsedByList without sending the request + */ + async stagesAuthenticatorSmsUsedByListRequestOpts( + requestParameters: StagesAuthenticatorSmsUsedByListRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesAuthenticatorSmsUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/authenticator/sms/{stage_uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async stagesAuthenticatorSmsUsedByListRaw( + requestParameters: StagesAuthenticatorSmsUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.stagesAuthenticatorSmsUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async stagesAuthenticatorSmsUsedByList( + requestParameters: StagesAuthenticatorSmsUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.stagesAuthenticatorSmsUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesAuthenticatorStaticCreate without sending the request + */ + async stagesAuthenticatorStaticCreateRequestOpts( + requestParameters: StagesAuthenticatorStaticCreateRequest, + ): Promise { + if (requestParameters["authenticatorStaticStageRequest"] == null) { + throw new runtime.RequiredError( + "authenticatorStaticStageRequest", + 'Required parameter "authenticatorStaticStageRequest" was null or undefined when calling stagesAuthenticatorStaticCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/authenticator/static/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: AuthenticatorStaticStageRequestToJSON( + requestParameters["authenticatorStaticStageRequest"], + ), + }; + } + + /** + * AuthenticatorStaticStage Viewset + */ + async stagesAuthenticatorStaticCreateRaw( + requestParameters: StagesAuthenticatorStaticCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.stagesAuthenticatorStaticCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + AuthenticatorStaticStageFromJSON(jsonValue), + ); + } + + /** + * AuthenticatorStaticStage Viewset + */ + async stagesAuthenticatorStaticCreate( + requestParameters: StagesAuthenticatorStaticCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesAuthenticatorStaticCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesAuthenticatorStaticDestroy without sending the request + */ + async stagesAuthenticatorStaticDestroyRequestOpts( + requestParameters: StagesAuthenticatorStaticDestroyRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesAuthenticatorStaticDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/authenticator/static/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * AuthenticatorStaticStage Viewset + */ + async stagesAuthenticatorStaticDestroyRaw( + requestParameters: StagesAuthenticatorStaticDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.stagesAuthenticatorStaticDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * AuthenticatorStaticStage Viewset + */ + async stagesAuthenticatorStaticDestroy( + requestParameters: StagesAuthenticatorStaticDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.stagesAuthenticatorStaticDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for stagesAuthenticatorStaticList without sending the request + */ + async stagesAuthenticatorStaticListRequestOpts( + requestParameters: StagesAuthenticatorStaticListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["configureFlow"] != null) { + queryParameters["configure_flow"] = requestParameters["configureFlow"]; + } + + if (requestParameters["friendlyName"] != null) { + queryParameters["friendly_name"] = requestParameters["friendlyName"]; + } + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["stageUuid"] != null) { + queryParameters["stage_uuid"] = requestParameters["stageUuid"]; + } + + if (requestParameters["tokenCount"] != null) { + queryParameters["token_count"] = requestParameters["tokenCount"]; + } + + if (requestParameters["tokenLength"] != null) { + queryParameters["token_length"] = requestParameters["tokenLength"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/authenticator/static/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * AuthenticatorStaticStage Viewset + */ + async stagesAuthenticatorStaticListRaw( + requestParameters: StagesAuthenticatorStaticListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.stagesAuthenticatorStaticListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedAuthenticatorStaticStageListFromJSON(jsonValue), + ); + } + + /** + * AuthenticatorStaticStage Viewset + */ + async stagesAuthenticatorStaticList( + requestParameters: StagesAuthenticatorStaticListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesAuthenticatorStaticListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesAuthenticatorStaticPartialUpdate without sending the request + */ + async stagesAuthenticatorStaticPartialUpdateRequestOpts( + requestParameters: StagesAuthenticatorStaticPartialUpdateRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesAuthenticatorStaticPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/authenticator/static/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedAuthenticatorStaticStageRequestToJSON( + requestParameters["patchedAuthenticatorStaticStageRequest"], + ), + }; + } + + /** + * AuthenticatorStaticStage Viewset + */ + async stagesAuthenticatorStaticPartialUpdateRaw( + requestParameters: StagesAuthenticatorStaticPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.stagesAuthenticatorStaticPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + AuthenticatorStaticStageFromJSON(jsonValue), + ); + } + + /** + * AuthenticatorStaticStage Viewset + */ + async stagesAuthenticatorStaticPartialUpdate( + requestParameters: StagesAuthenticatorStaticPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesAuthenticatorStaticPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesAuthenticatorStaticRetrieve without sending the request + */ + async stagesAuthenticatorStaticRetrieveRequestOpts( + requestParameters: StagesAuthenticatorStaticRetrieveRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesAuthenticatorStaticRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/authenticator/static/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * AuthenticatorStaticStage Viewset + */ + async stagesAuthenticatorStaticRetrieveRaw( + requestParameters: StagesAuthenticatorStaticRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.stagesAuthenticatorStaticRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + AuthenticatorStaticStageFromJSON(jsonValue), + ); + } + + /** + * AuthenticatorStaticStage Viewset + */ + async stagesAuthenticatorStaticRetrieve( + requestParameters: StagesAuthenticatorStaticRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesAuthenticatorStaticRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesAuthenticatorStaticUpdate without sending the request + */ + async stagesAuthenticatorStaticUpdateRequestOpts( + requestParameters: StagesAuthenticatorStaticUpdateRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesAuthenticatorStaticUpdate().', + ); + } + + if (requestParameters["authenticatorStaticStageRequest"] == null) { + throw new runtime.RequiredError( + "authenticatorStaticStageRequest", + 'Required parameter "authenticatorStaticStageRequest" was null or undefined when calling stagesAuthenticatorStaticUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/authenticator/static/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: AuthenticatorStaticStageRequestToJSON( + requestParameters["authenticatorStaticStageRequest"], + ), + }; + } + + /** + * AuthenticatorStaticStage Viewset + */ + async stagesAuthenticatorStaticUpdateRaw( + requestParameters: StagesAuthenticatorStaticUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.stagesAuthenticatorStaticUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + AuthenticatorStaticStageFromJSON(jsonValue), + ); + } + + /** + * AuthenticatorStaticStage Viewset + */ + async stagesAuthenticatorStaticUpdate( + requestParameters: StagesAuthenticatorStaticUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesAuthenticatorStaticUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesAuthenticatorStaticUsedByList without sending the request + */ + async stagesAuthenticatorStaticUsedByListRequestOpts( + requestParameters: StagesAuthenticatorStaticUsedByListRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesAuthenticatorStaticUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/authenticator/static/{stage_uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async stagesAuthenticatorStaticUsedByListRaw( + requestParameters: StagesAuthenticatorStaticUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.stagesAuthenticatorStaticUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async stagesAuthenticatorStaticUsedByList( + requestParameters: StagesAuthenticatorStaticUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.stagesAuthenticatorStaticUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesAuthenticatorTotpCreate without sending the request + */ + async stagesAuthenticatorTotpCreateRequestOpts( + requestParameters: StagesAuthenticatorTotpCreateRequest, + ): Promise { + if (requestParameters["authenticatorTOTPStageRequest"] == null) { + throw new runtime.RequiredError( + "authenticatorTOTPStageRequest", + 'Required parameter "authenticatorTOTPStageRequest" was null or undefined when calling stagesAuthenticatorTotpCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/authenticator/totp/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: AuthenticatorTOTPStageRequestToJSON( + requestParameters["authenticatorTOTPStageRequest"], + ), + }; + } + + /** + * AuthenticatorTOTPStage Viewset + */ + async stagesAuthenticatorTotpCreateRaw( + requestParameters: StagesAuthenticatorTotpCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.stagesAuthenticatorTotpCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + AuthenticatorTOTPStageFromJSON(jsonValue), + ); + } + + /** + * AuthenticatorTOTPStage Viewset + */ + async stagesAuthenticatorTotpCreate( + requestParameters: StagesAuthenticatorTotpCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesAuthenticatorTotpCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesAuthenticatorTotpDestroy without sending the request + */ + async stagesAuthenticatorTotpDestroyRequestOpts( + requestParameters: StagesAuthenticatorTotpDestroyRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesAuthenticatorTotpDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/authenticator/totp/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * AuthenticatorTOTPStage Viewset + */ + async stagesAuthenticatorTotpDestroyRaw( + requestParameters: StagesAuthenticatorTotpDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.stagesAuthenticatorTotpDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * AuthenticatorTOTPStage Viewset + */ + async stagesAuthenticatorTotpDestroy( + requestParameters: StagesAuthenticatorTotpDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.stagesAuthenticatorTotpDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for stagesAuthenticatorTotpList without sending the request + */ + async stagesAuthenticatorTotpListRequestOpts( + requestParameters: StagesAuthenticatorTotpListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["configureFlow"] != null) { + queryParameters["configure_flow"] = requestParameters["configureFlow"]; + } + + if (requestParameters["digits"] != null) { + queryParameters["digits"] = requestParameters["digits"]; + } + + if (requestParameters["friendlyName"] != null) { + queryParameters["friendly_name"] = requestParameters["friendlyName"]; + } + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["stageUuid"] != null) { + queryParameters["stage_uuid"] = requestParameters["stageUuid"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/authenticator/totp/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * AuthenticatorTOTPStage Viewset + */ + async stagesAuthenticatorTotpListRaw( + requestParameters: StagesAuthenticatorTotpListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesAuthenticatorTotpListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedAuthenticatorTOTPStageListFromJSON(jsonValue), + ); + } + + /** + * AuthenticatorTOTPStage Viewset + */ + async stagesAuthenticatorTotpList( + requestParameters: StagesAuthenticatorTotpListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesAuthenticatorTotpListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesAuthenticatorTotpPartialUpdate without sending the request + */ + async stagesAuthenticatorTotpPartialUpdateRequestOpts( + requestParameters: StagesAuthenticatorTotpPartialUpdateRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesAuthenticatorTotpPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/authenticator/totp/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedAuthenticatorTOTPStageRequestToJSON( + requestParameters["patchedAuthenticatorTOTPStageRequest"], + ), + }; + } + + /** + * AuthenticatorTOTPStage Viewset + */ + async stagesAuthenticatorTotpPartialUpdateRaw( + requestParameters: StagesAuthenticatorTotpPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.stagesAuthenticatorTotpPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + AuthenticatorTOTPStageFromJSON(jsonValue), + ); + } + + /** + * AuthenticatorTOTPStage Viewset + */ + async stagesAuthenticatorTotpPartialUpdate( + requestParameters: StagesAuthenticatorTotpPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesAuthenticatorTotpPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesAuthenticatorTotpRetrieve without sending the request + */ + async stagesAuthenticatorTotpRetrieveRequestOpts( + requestParameters: StagesAuthenticatorTotpRetrieveRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesAuthenticatorTotpRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/authenticator/totp/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * AuthenticatorTOTPStage Viewset + */ + async stagesAuthenticatorTotpRetrieveRaw( + requestParameters: StagesAuthenticatorTotpRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.stagesAuthenticatorTotpRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + AuthenticatorTOTPStageFromJSON(jsonValue), + ); + } + + /** + * AuthenticatorTOTPStage Viewset + */ + async stagesAuthenticatorTotpRetrieve( + requestParameters: StagesAuthenticatorTotpRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesAuthenticatorTotpRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesAuthenticatorTotpUpdate without sending the request + */ + async stagesAuthenticatorTotpUpdateRequestOpts( + requestParameters: StagesAuthenticatorTotpUpdateRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesAuthenticatorTotpUpdate().', + ); + } + + if (requestParameters["authenticatorTOTPStageRequest"] == null) { + throw new runtime.RequiredError( + "authenticatorTOTPStageRequest", + 'Required parameter "authenticatorTOTPStageRequest" was null or undefined when calling stagesAuthenticatorTotpUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/authenticator/totp/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: AuthenticatorTOTPStageRequestToJSON( + requestParameters["authenticatorTOTPStageRequest"], + ), + }; + } + + /** + * AuthenticatorTOTPStage Viewset + */ + async stagesAuthenticatorTotpUpdateRaw( + requestParameters: StagesAuthenticatorTotpUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.stagesAuthenticatorTotpUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + AuthenticatorTOTPStageFromJSON(jsonValue), + ); + } + + /** + * AuthenticatorTOTPStage Viewset + */ + async stagesAuthenticatorTotpUpdate( + requestParameters: StagesAuthenticatorTotpUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesAuthenticatorTotpUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesAuthenticatorTotpUsedByList without sending the request + */ + async stagesAuthenticatorTotpUsedByListRequestOpts( + requestParameters: StagesAuthenticatorTotpUsedByListRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesAuthenticatorTotpUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/authenticator/totp/{stage_uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async stagesAuthenticatorTotpUsedByListRaw( + requestParameters: StagesAuthenticatorTotpUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.stagesAuthenticatorTotpUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async stagesAuthenticatorTotpUsedByList( + requestParameters: StagesAuthenticatorTotpUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.stagesAuthenticatorTotpUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesAuthenticatorValidateCreate without sending the request + */ + async stagesAuthenticatorValidateCreateRequestOpts( + requestParameters: StagesAuthenticatorValidateCreateRequest, + ): Promise { + if (requestParameters["authenticatorValidateStageRequest"] == null) { + throw new runtime.RequiredError( + "authenticatorValidateStageRequest", + 'Required parameter "authenticatorValidateStageRequest" was null or undefined when calling stagesAuthenticatorValidateCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/authenticator/validate/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: AuthenticatorValidateStageRequestToJSON( + requestParameters["authenticatorValidateStageRequest"], + ), + }; + } + + /** + * AuthenticatorValidateStage Viewset + */ + async stagesAuthenticatorValidateCreateRaw( + requestParameters: StagesAuthenticatorValidateCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.stagesAuthenticatorValidateCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + AuthenticatorValidateStageFromJSON(jsonValue), + ); + } + + /** + * AuthenticatorValidateStage Viewset + */ + async stagesAuthenticatorValidateCreate( + requestParameters: StagesAuthenticatorValidateCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesAuthenticatorValidateCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesAuthenticatorValidateDestroy without sending the request + */ + async stagesAuthenticatorValidateDestroyRequestOpts( + requestParameters: StagesAuthenticatorValidateDestroyRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesAuthenticatorValidateDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/authenticator/validate/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * AuthenticatorValidateStage Viewset + */ + async stagesAuthenticatorValidateDestroyRaw( + requestParameters: StagesAuthenticatorValidateDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.stagesAuthenticatorValidateDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * AuthenticatorValidateStage Viewset + */ + async stagesAuthenticatorValidateDestroy( + requestParameters: StagesAuthenticatorValidateDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.stagesAuthenticatorValidateDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for stagesAuthenticatorValidateList without sending the request + */ + async stagesAuthenticatorValidateListRequestOpts( + requestParameters: StagesAuthenticatorValidateListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["configurationStages"] != null) { + queryParameters["configuration_stages"] = requestParameters["configurationStages"]; + } + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["notConfiguredAction"] != null) { + queryParameters["not_configured_action"] = requestParameters["notConfiguredAction"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/authenticator/validate/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * AuthenticatorValidateStage Viewset + */ + async stagesAuthenticatorValidateListRaw( + requestParameters: StagesAuthenticatorValidateListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.stagesAuthenticatorValidateListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedAuthenticatorValidateStageListFromJSON(jsonValue), + ); + } + + /** + * AuthenticatorValidateStage Viewset + */ + async stagesAuthenticatorValidateList( + requestParameters: StagesAuthenticatorValidateListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesAuthenticatorValidateListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesAuthenticatorValidatePartialUpdate without sending the request + */ + async stagesAuthenticatorValidatePartialUpdateRequestOpts( + requestParameters: StagesAuthenticatorValidatePartialUpdateRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesAuthenticatorValidatePartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/authenticator/validate/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedAuthenticatorValidateStageRequestToJSON( + requestParameters["patchedAuthenticatorValidateStageRequest"], + ), + }; + } + + /** + * AuthenticatorValidateStage Viewset + */ + async stagesAuthenticatorValidatePartialUpdateRaw( + requestParameters: StagesAuthenticatorValidatePartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.stagesAuthenticatorValidatePartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + AuthenticatorValidateStageFromJSON(jsonValue), + ); + } + + /** + * AuthenticatorValidateStage Viewset + */ + async stagesAuthenticatorValidatePartialUpdate( + requestParameters: StagesAuthenticatorValidatePartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesAuthenticatorValidatePartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesAuthenticatorValidateRetrieve without sending the request + */ + async stagesAuthenticatorValidateRetrieveRequestOpts( + requestParameters: StagesAuthenticatorValidateRetrieveRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesAuthenticatorValidateRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/authenticator/validate/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * AuthenticatorValidateStage Viewset + */ + async stagesAuthenticatorValidateRetrieveRaw( + requestParameters: StagesAuthenticatorValidateRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.stagesAuthenticatorValidateRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + AuthenticatorValidateStageFromJSON(jsonValue), + ); + } + + /** + * AuthenticatorValidateStage Viewset + */ + async stagesAuthenticatorValidateRetrieve( + requestParameters: StagesAuthenticatorValidateRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesAuthenticatorValidateRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesAuthenticatorValidateUpdate without sending the request + */ + async stagesAuthenticatorValidateUpdateRequestOpts( + requestParameters: StagesAuthenticatorValidateUpdateRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesAuthenticatorValidateUpdate().', + ); + } + + if (requestParameters["authenticatorValidateStageRequest"] == null) { + throw new runtime.RequiredError( + "authenticatorValidateStageRequest", + 'Required parameter "authenticatorValidateStageRequest" was null or undefined when calling stagesAuthenticatorValidateUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/authenticator/validate/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: AuthenticatorValidateStageRequestToJSON( + requestParameters["authenticatorValidateStageRequest"], + ), + }; + } + + /** + * AuthenticatorValidateStage Viewset + */ + async stagesAuthenticatorValidateUpdateRaw( + requestParameters: StagesAuthenticatorValidateUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.stagesAuthenticatorValidateUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + AuthenticatorValidateStageFromJSON(jsonValue), + ); + } + + /** + * AuthenticatorValidateStage Viewset + */ + async stagesAuthenticatorValidateUpdate( + requestParameters: StagesAuthenticatorValidateUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesAuthenticatorValidateUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesAuthenticatorValidateUsedByList without sending the request + */ + async stagesAuthenticatorValidateUsedByListRequestOpts( + requestParameters: StagesAuthenticatorValidateUsedByListRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesAuthenticatorValidateUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/authenticator/validate/{stage_uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async stagesAuthenticatorValidateUsedByListRaw( + requestParameters: StagesAuthenticatorValidateUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.stagesAuthenticatorValidateUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async stagesAuthenticatorValidateUsedByList( + requestParameters: StagesAuthenticatorValidateUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.stagesAuthenticatorValidateUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesAuthenticatorWebauthnCreate without sending the request + */ + async stagesAuthenticatorWebauthnCreateRequestOpts( + requestParameters: StagesAuthenticatorWebauthnCreateRequest, + ): Promise { + if (requestParameters["authenticatorWebAuthnStageRequest"] == null) { + throw new runtime.RequiredError( + "authenticatorWebAuthnStageRequest", + 'Required parameter "authenticatorWebAuthnStageRequest" was null or undefined when calling stagesAuthenticatorWebauthnCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/authenticator/webauthn/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: AuthenticatorWebAuthnStageRequestToJSON( + requestParameters["authenticatorWebAuthnStageRequest"], + ), + }; + } + + /** + * AuthenticatorWebAuthnStage Viewset + */ + async stagesAuthenticatorWebauthnCreateRaw( + requestParameters: StagesAuthenticatorWebauthnCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.stagesAuthenticatorWebauthnCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + AuthenticatorWebAuthnStageFromJSON(jsonValue), + ); + } + + /** + * AuthenticatorWebAuthnStage Viewset + */ + async stagesAuthenticatorWebauthnCreate( + requestParameters: StagesAuthenticatorWebauthnCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesAuthenticatorWebauthnCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesAuthenticatorWebauthnDestroy without sending the request + */ + async stagesAuthenticatorWebauthnDestroyRequestOpts( + requestParameters: StagesAuthenticatorWebauthnDestroyRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesAuthenticatorWebauthnDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/authenticator/webauthn/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * AuthenticatorWebAuthnStage Viewset + */ + async stagesAuthenticatorWebauthnDestroyRaw( + requestParameters: StagesAuthenticatorWebauthnDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.stagesAuthenticatorWebauthnDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * AuthenticatorWebAuthnStage Viewset + */ + async stagesAuthenticatorWebauthnDestroy( + requestParameters: StagesAuthenticatorWebauthnDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.stagesAuthenticatorWebauthnDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for stagesAuthenticatorWebauthnDeviceTypesList without sending the request + */ + async stagesAuthenticatorWebauthnDeviceTypesListRequestOpts( + requestParameters: StagesAuthenticatorWebauthnDeviceTypesListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["aaguid"] != null) { + queryParameters["aaguid"] = requestParameters["aaguid"]; + } + + if (requestParameters["description"] != null) { + queryParameters["description"] = requestParameters["description"]; + } + + if (requestParameters["icon"] != null) { + queryParameters["icon"] = requestParameters["icon"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/authenticator/webauthn_device_types/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * WebAuthnDeviceType Viewset + */ + async stagesAuthenticatorWebauthnDeviceTypesListRaw( + requestParameters: StagesAuthenticatorWebauthnDeviceTypesListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.stagesAuthenticatorWebauthnDeviceTypesListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedWebAuthnDeviceTypeListFromJSON(jsonValue), + ); + } + + /** + * WebAuthnDeviceType Viewset + */ + async stagesAuthenticatorWebauthnDeviceTypesList( + requestParameters: StagesAuthenticatorWebauthnDeviceTypesListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesAuthenticatorWebauthnDeviceTypesListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesAuthenticatorWebauthnDeviceTypesRetrieve without sending the request + */ + async stagesAuthenticatorWebauthnDeviceTypesRetrieveRequestOpts( + requestParameters: StagesAuthenticatorWebauthnDeviceTypesRetrieveRequest, + ): Promise { + if (requestParameters["aaguid"] == null) { + throw new runtime.RequiredError( + "aaguid", + 'Required parameter "aaguid" was null or undefined when calling stagesAuthenticatorWebauthnDeviceTypesRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/authenticator/webauthn_device_types/{aaguid}/`; + urlPath = urlPath.replace( + `{${"aaguid"}}`, + encodeURIComponent(String(requestParameters["aaguid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * WebAuthnDeviceType Viewset + */ + async stagesAuthenticatorWebauthnDeviceTypesRetrieveRaw( + requestParameters: StagesAuthenticatorWebauthnDeviceTypesRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.stagesAuthenticatorWebauthnDeviceTypesRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + WebAuthnDeviceTypeFromJSON(jsonValue), + ); + } + + /** + * WebAuthnDeviceType Viewset + */ + async stagesAuthenticatorWebauthnDeviceTypesRetrieve( + requestParameters: StagesAuthenticatorWebauthnDeviceTypesRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesAuthenticatorWebauthnDeviceTypesRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesAuthenticatorWebauthnList without sending the request + */ + async stagesAuthenticatorWebauthnListRequestOpts( + requestParameters: StagesAuthenticatorWebauthnListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["authenticatorAttachment"] != null) { + queryParameters["authenticator_attachment"] = + requestParameters["authenticatorAttachment"]; + } + + if (requestParameters["configureFlow"] != null) { + queryParameters["configure_flow"] = requestParameters["configureFlow"]; + } + + if (requestParameters["deviceTypeRestrictions"] != null) { + queryParameters["device_type_restrictions"] = + requestParameters["deviceTypeRestrictions"]; + } + + if (requestParameters["maxAttempts"] != null) { + queryParameters["max_attempts"] = requestParameters["maxAttempts"]; + } + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["residentKeyRequirement"] != null) { + queryParameters["resident_key_requirement"] = + requestParameters["residentKeyRequirement"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["userVerification"] != null) { + queryParameters["user_verification"] = requestParameters["userVerification"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/authenticator/webauthn/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * AuthenticatorWebAuthnStage Viewset + */ + async stagesAuthenticatorWebauthnListRaw( + requestParameters: StagesAuthenticatorWebauthnListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.stagesAuthenticatorWebauthnListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedAuthenticatorWebAuthnStageListFromJSON(jsonValue), + ); + } + + /** + * AuthenticatorWebAuthnStage Viewset + */ + async stagesAuthenticatorWebauthnList( + requestParameters: StagesAuthenticatorWebauthnListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesAuthenticatorWebauthnListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesAuthenticatorWebauthnPartialUpdate without sending the request + */ + async stagesAuthenticatorWebauthnPartialUpdateRequestOpts( + requestParameters: StagesAuthenticatorWebauthnPartialUpdateRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesAuthenticatorWebauthnPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/authenticator/webauthn/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedAuthenticatorWebAuthnStageRequestToJSON( + requestParameters["patchedAuthenticatorWebAuthnStageRequest"], + ), + }; + } + + /** + * AuthenticatorWebAuthnStage Viewset + */ + async stagesAuthenticatorWebauthnPartialUpdateRaw( + requestParameters: StagesAuthenticatorWebauthnPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.stagesAuthenticatorWebauthnPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + AuthenticatorWebAuthnStageFromJSON(jsonValue), + ); + } + + /** + * AuthenticatorWebAuthnStage Viewset + */ + async stagesAuthenticatorWebauthnPartialUpdate( + requestParameters: StagesAuthenticatorWebauthnPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesAuthenticatorWebauthnPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesAuthenticatorWebauthnRetrieve without sending the request + */ + async stagesAuthenticatorWebauthnRetrieveRequestOpts( + requestParameters: StagesAuthenticatorWebauthnRetrieveRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesAuthenticatorWebauthnRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/authenticator/webauthn/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * AuthenticatorWebAuthnStage Viewset + */ + async stagesAuthenticatorWebauthnRetrieveRaw( + requestParameters: StagesAuthenticatorWebauthnRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.stagesAuthenticatorWebauthnRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + AuthenticatorWebAuthnStageFromJSON(jsonValue), + ); + } + + /** + * AuthenticatorWebAuthnStage Viewset + */ + async stagesAuthenticatorWebauthnRetrieve( + requestParameters: StagesAuthenticatorWebauthnRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesAuthenticatorWebauthnRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesAuthenticatorWebauthnUpdate without sending the request + */ + async stagesAuthenticatorWebauthnUpdateRequestOpts( + requestParameters: StagesAuthenticatorWebauthnUpdateRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesAuthenticatorWebauthnUpdate().', + ); + } + + if (requestParameters["authenticatorWebAuthnStageRequest"] == null) { + throw new runtime.RequiredError( + "authenticatorWebAuthnStageRequest", + 'Required parameter "authenticatorWebAuthnStageRequest" was null or undefined when calling stagesAuthenticatorWebauthnUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/authenticator/webauthn/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: AuthenticatorWebAuthnStageRequestToJSON( + requestParameters["authenticatorWebAuthnStageRequest"], + ), + }; + } + + /** + * AuthenticatorWebAuthnStage Viewset + */ + async stagesAuthenticatorWebauthnUpdateRaw( + requestParameters: StagesAuthenticatorWebauthnUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.stagesAuthenticatorWebauthnUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + AuthenticatorWebAuthnStageFromJSON(jsonValue), + ); + } + + /** + * AuthenticatorWebAuthnStage Viewset + */ + async stagesAuthenticatorWebauthnUpdate( + requestParameters: StagesAuthenticatorWebauthnUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesAuthenticatorWebauthnUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesAuthenticatorWebauthnUsedByList without sending the request + */ + async stagesAuthenticatorWebauthnUsedByListRequestOpts( + requestParameters: StagesAuthenticatorWebauthnUsedByListRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesAuthenticatorWebauthnUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/authenticator/webauthn/{stage_uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async stagesAuthenticatorWebauthnUsedByListRaw( + requestParameters: StagesAuthenticatorWebauthnUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.stagesAuthenticatorWebauthnUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async stagesAuthenticatorWebauthnUsedByList( + requestParameters: StagesAuthenticatorWebauthnUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.stagesAuthenticatorWebauthnUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesCaptchaCreate without sending the request + */ + async stagesCaptchaCreateRequestOpts( + requestParameters: StagesCaptchaCreateRequest, + ): Promise { + if (requestParameters["captchaStageRequest"] == null) { + throw new runtime.RequiredError( + "captchaStageRequest", + 'Required parameter "captchaStageRequest" was null or undefined when calling stagesCaptchaCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/captcha/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: CaptchaStageRequestToJSON(requestParameters["captchaStageRequest"]), + }; + } + + /** + * CaptchaStage Viewset + */ + async stagesCaptchaCreateRaw( + requestParameters: StagesCaptchaCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesCaptchaCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + CaptchaStageFromJSON(jsonValue), + ); + } + + /** + * CaptchaStage Viewset + */ + async stagesCaptchaCreate( + requestParameters: StagesCaptchaCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesCaptchaCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesCaptchaDestroy without sending the request + */ + async stagesCaptchaDestroyRequestOpts( + requestParameters: StagesCaptchaDestroyRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesCaptchaDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/captcha/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * CaptchaStage Viewset + */ + async stagesCaptchaDestroyRaw( + requestParameters: StagesCaptchaDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesCaptchaDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * CaptchaStage Viewset + */ + async stagesCaptchaDestroy( + requestParameters: StagesCaptchaDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.stagesCaptchaDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for stagesCaptchaList without sending the request + */ + async stagesCaptchaListRequestOpts( + requestParameters: StagesCaptchaListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["publicKey"] != null) { + queryParameters["public_key"] = requestParameters["publicKey"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/captcha/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * CaptchaStage Viewset + */ + async stagesCaptchaListRaw( + requestParameters: StagesCaptchaListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesCaptchaListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedCaptchaStageListFromJSON(jsonValue), + ); + } + + /** + * CaptchaStage Viewset + */ + async stagesCaptchaList( + requestParameters: StagesCaptchaListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesCaptchaListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesCaptchaPartialUpdate without sending the request + */ + async stagesCaptchaPartialUpdateRequestOpts( + requestParameters: StagesCaptchaPartialUpdateRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesCaptchaPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/captcha/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedCaptchaStageRequestToJSON(requestParameters["patchedCaptchaStageRequest"]), + }; + } + + /** + * CaptchaStage Viewset + */ + async stagesCaptchaPartialUpdateRaw( + requestParameters: StagesCaptchaPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesCaptchaPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + CaptchaStageFromJSON(jsonValue), + ); + } + + /** + * CaptchaStage Viewset + */ + async stagesCaptchaPartialUpdate( + requestParameters: StagesCaptchaPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesCaptchaPartialUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesCaptchaRetrieve without sending the request + */ + async stagesCaptchaRetrieveRequestOpts( + requestParameters: StagesCaptchaRetrieveRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesCaptchaRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/captcha/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * CaptchaStage Viewset + */ + async stagesCaptchaRetrieveRaw( + requestParameters: StagesCaptchaRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesCaptchaRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + CaptchaStageFromJSON(jsonValue), + ); + } + + /** + * CaptchaStage Viewset + */ + async stagesCaptchaRetrieve( + requestParameters: StagesCaptchaRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesCaptchaRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesCaptchaUpdate without sending the request + */ + async stagesCaptchaUpdateRequestOpts( + requestParameters: StagesCaptchaUpdateRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesCaptchaUpdate().', + ); + } + + if (requestParameters["captchaStageRequest"] == null) { + throw new runtime.RequiredError( + "captchaStageRequest", + 'Required parameter "captchaStageRequest" was null or undefined when calling stagesCaptchaUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/captcha/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: CaptchaStageRequestToJSON(requestParameters["captchaStageRequest"]), + }; + } + + /** + * CaptchaStage Viewset + */ + async stagesCaptchaUpdateRaw( + requestParameters: StagesCaptchaUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesCaptchaUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + CaptchaStageFromJSON(jsonValue), + ); + } + + /** + * CaptchaStage Viewset + */ + async stagesCaptchaUpdate( + requestParameters: StagesCaptchaUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesCaptchaUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesCaptchaUsedByList without sending the request + */ + async stagesCaptchaUsedByListRequestOpts( + requestParameters: StagesCaptchaUsedByListRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesCaptchaUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/captcha/{stage_uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async stagesCaptchaUsedByListRaw( + requestParameters: StagesCaptchaUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.stagesCaptchaUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async stagesCaptchaUsedByList( + requestParameters: StagesCaptchaUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.stagesCaptchaUsedByListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesConsentCreate without sending the request + */ + async stagesConsentCreateRequestOpts( + requestParameters: StagesConsentCreateRequest, + ): Promise { + if (requestParameters["consentStageRequest"] == null) { + throw new runtime.RequiredError( + "consentStageRequest", + 'Required parameter "consentStageRequest" was null or undefined when calling stagesConsentCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/consent/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: ConsentStageRequestToJSON(requestParameters["consentStageRequest"]), + }; + } + + /** + * ConsentStage Viewset + */ + async stagesConsentCreateRaw( + requestParameters: StagesConsentCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesConsentCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + ConsentStageFromJSON(jsonValue), + ); + } + + /** + * ConsentStage Viewset + */ + async stagesConsentCreate( + requestParameters: StagesConsentCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesConsentCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesConsentDestroy without sending the request + */ + async stagesConsentDestroyRequestOpts( + requestParameters: StagesConsentDestroyRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesConsentDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/consent/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * ConsentStage Viewset + */ + async stagesConsentDestroyRaw( + requestParameters: StagesConsentDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesConsentDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * ConsentStage Viewset + */ + async stagesConsentDestroy( + requestParameters: StagesConsentDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.stagesConsentDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for stagesConsentList without sending the request + */ + async stagesConsentListRequestOpts( + requestParameters: StagesConsentListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["consentExpireIn"] != null) { + queryParameters["consent_expire_in"] = requestParameters["consentExpireIn"]; + } + + if (requestParameters["mode"] != null) { + queryParameters["mode"] = requestParameters["mode"]; + } + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["stageUuid"] != null) { + queryParameters["stage_uuid"] = requestParameters["stageUuid"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/consent/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * ConsentStage Viewset + */ + async stagesConsentListRaw( + requestParameters: StagesConsentListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesConsentListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedConsentStageListFromJSON(jsonValue), + ); + } + + /** + * ConsentStage Viewset + */ + async stagesConsentList( + requestParameters: StagesConsentListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesConsentListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesConsentPartialUpdate without sending the request + */ + async stagesConsentPartialUpdateRequestOpts( + requestParameters: StagesConsentPartialUpdateRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesConsentPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/consent/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedConsentStageRequestToJSON(requestParameters["patchedConsentStageRequest"]), + }; + } + + /** + * ConsentStage Viewset + */ + async stagesConsentPartialUpdateRaw( + requestParameters: StagesConsentPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesConsentPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + ConsentStageFromJSON(jsonValue), + ); + } + + /** + * ConsentStage Viewset + */ + async stagesConsentPartialUpdate( + requestParameters: StagesConsentPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesConsentPartialUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesConsentRetrieve without sending the request + */ + async stagesConsentRetrieveRequestOpts( + requestParameters: StagesConsentRetrieveRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesConsentRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/consent/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * ConsentStage Viewset + */ + async stagesConsentRetrieveRaw( + requestParameters: StagesConsentRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesConsentRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + ConsentStageFromJSON(jsonValue), + ); + } + + /** + * ConsentStage Viewset + */ + async stagesConsentRetrieve( + requestParameters: StagesConsentRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesConsentRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesConsentUpdate without sending the request + */ + async stagesConsentUpdateRequestOpts( + requestParameters: StagesConsentUpdateRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesConsentUpdate().', + ); + } + + if (requestParameters["consentStageRequest"] == null) { + throw new runtime.RequiredError( + "consentStageRequest", + 'Required parameter "consentStageRequest" was null or undefined when calling stagesConsentUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/consent/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: ConsentStageRequestToJSON(requestParameters["consentStageRequest"]), + }; + } + + /** + * ConsentStage Viewset + */ + async stagesConsentUpdateRaw( + requestParameters: StagesConsentUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesConsentUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + ConsentStageFromJSON(jsonValue), + ); + } + + /** + * ConsentStage Viewset + */ + async stagesConsentUpdate( + requestParameters: StagesConsentUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesConsentUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesConsentUsedByList without sending the request + */ + async stagesConsentUsedByListRequestOpts( + requestParameters: StagesConsentUsedByListRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesConsentUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/consent/{stage_uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async stagesConsentUsedByListRaw( + requestParameters: StagesConsentUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.stagesConsentUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async stagesConsentUsedByList( + requestParameters: StagesConsentUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.stagesConsentUsedByListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesDenyCreate without sending the request + */ + async stagesDenyCreateRequestOpts( + requestParameters: StagesDenyCreateRequest, + ): Promise { + if (requestParameters["denyStageRequest"] == null) { + throw new runtime.RequiredError( + "denyStageRequest", + 'Required parameter "denyStageRequest" was null or undefined when calling stagesDenyCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/deny/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: DenyStageRequestToJSON(requestParameters["denyStageRequest"]), + }; + } + + /** + * DenyStage Viewset + */ + async stagesDenyCreateRaw( + requestParameters: StagesDenyCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesDenyCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => DenyStageFromJSON(jsonValue)); + } + + /** + * DenyStage Viewset + */ + async stagesDenyCreate( + requestParameters: StagesDenyCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesDenyCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesDenyDestroy without sending the request + */ + async stagesDenyDestroyRequestOpts( + requestParameters: StagesDenyDestroyRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesDenyDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/deny/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * DenyStage Viewset + */ + async stagesDenyDestroyRaw( + requestParameters: StagesDenyDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesDenyDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * DenyStage Viewset + */ + async stagesDenyDestroy( + requestParameters: StagesDenyDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.stagesDenyDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for stagesDenyList without sending the request + */ + async stagesDenyListRequestOpts( + requestParameters: StagesDenyListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["denyMessage"] != null) { + queryParameters["deny_message"] = requestParameters["denyMessage"]; + } + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["stageUuid"] != null) { + queryParameters["stage_uuid"] = requestParameters["stageUuid"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/deny/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * DenyStage Viewset + */ + async stagesDenyListRaw( + requestParameters: StagesDenyListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesDenyListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedDenyStageListFromJSON(jsonValue), + ); + } + + /** + * DenyStage Viewset + */ + async stagesDenyList( + requestParameters: StagesDenyListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesDenyListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesDenyPartialUpdate without sending the request + */ + async stagesDenyPartialUpdateRequestOpts( + requestParameters: StagesDenyPartialUpdateRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesDenyPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/deny/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedDenyStageRequestToJSON(requestParameters["patchedDenyStageRequest"]), + }; + } + + /** + * DenyStage Viewset + */ + async stagesDenyPartialUpdateRaw( + requestParameters: StagesDenyPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesDenyPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => DenyStageFromJSON(jsonValue)); + } + + /** + * DenyStage Viewset + */ + async stagesDenyPartialUpdate( + requestParameters: StagesDenyPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesDenyPartialUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesDenyRetrieve without sending the request + */ + async stagesDenyRetrieveRequestOpts( + requestParameters: StagesDenyRetrieveRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesDenyRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/deny/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * DenyStage Viewset + */ + async stagesDenyRetrieveRaw( + requestParameters: StagesDenyRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesDenyRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => DenyStageFromJSON(jsonValue)); + } + + /** + * DenyStage Viewset + */ + async stagesDenyRetrieve( + requestParameters: StagesDenyRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesDenyRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesDenyUpdate without sending the request + */ + async stagesDenyUpdateRequestOpts( + requestParameters: StagesDenyUpdateRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesDenyUpdate().', + ); + } + + if (requestParameters["denyStageRequest"] == null) { + throw new runtime.RequiredError( + "denyStageRequest", + 'Required parameter "denyStageRequest" was null or undefined when calling stagesDenyUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/deny/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: DenyStageRequestToJSON(requestParameters["denyStageRequest"]), + }; + } + + /** + * DenyStage Viewset + */ + async stagesDenyUpdateRaw( + requestParameters: StagesDenyUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesDenyUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => DenyStageFromJSON(jsonValue)); + } + + /** + * DenyStage Viewset + */ + async stagesDenyUpdate( + requestParameters: StagesDenyUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesDenyUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesDenyUsedByList without sending the request + */ + async stagesDenyUsedByListRequestOpts( + requestParameters: StagesDenyUsedByListRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesDenyUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/deny/{stage_uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async stagesDenyUsedByListRaw( + requestParameters: StagesDenyUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.stagesDenyUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async stagesDenyUsedByList( + requestParameters: StagesDenyUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.stagesDenyUsedByListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesDummyCreate without sending the request + */ + async stagesDummyCreateRequestOpts( + requestParameters: StagesDummyCreateRequest, + ): Promise { + if (requestParameters["dummyStageRequest"] == null) { + throw new runtime.RequiredError( + "dummyStageRequest", + 'Required parameter "dummyStageRequest" was null or undefined when calling stagesDummyCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/dummy/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: DummyStageRequestToJSON(requestParameters["dummyStageRequest"]), + }; + } + + /** + * DummyStage Viewset + */ + async stagesDummyCreateRaw( + requestParameters: StagesDummyCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesDummyCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => DummyStageFromJSON(jsonValue)); + } + + /** + * DummyStage Viewset + */ + async stagesDummyCreate( + requestParameters: StagesDummyCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesDummyCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesDummyDestroy without sending the request + */ + async stagesDummyDestroyRequestOpts( + requestParameters: StagesDummyDestroyRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesDummyDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/dummy/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * DummyStage Viewset + */ + async stagesDummyDestroyRaw( + requestParameters: StagesDummyDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesDummyDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * DummyStage Viewset + */ + async stagesDummyDestroy( + requestParameters: StagesDummyDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.stagesDummyDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for stagesDummyList without sending the request + */ + async stagesDummyListRequestOpts( + requestParameters: StagesDummyListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["stageUuid"] != null) { + queryParameters["stage_uuid"] = requestParameters["stageUuid"]; + } + + if (requestParameters["throwError"] != null) { + queryParameters["throw_error"] = requestParameters["throwError"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/dummy/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * DummyStage Viewset + */ + async stagesDummyListRaw( + requestParameters: StagesDummyListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesDummyListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedDummyStageListFromJSON(jsonValue), + ); + } + + /** + * DummyStage Viewset + */ + async stagesDummyList( + requestParameters: StagesDummyListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesDummyListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesDummyPartialUpdate without sending the request + */ + async stagesDummyPartialUpdateRequestOpts( + requestParameters: StagesDummyPartialUpdateRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesDummyPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/dummy/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedDummyStageRequestToJSON(requestParameters["patchedDummyStageRequest"]), + }; + } + + /** + * DummyStage Viewset + */ + async stagesDummyPartialUpdateRaw( + requestParameters: StagesDummyPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesDummyPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => DummyStageFromJSON(jsonValue)); + } + + /** + * DummyStage Viewset + */ + async stagesDummyPartialUpdate( + requestParameters: StagesDummyPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesDummyPartialUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesDummyRetrieve without sending the request + */ + async stagesDummyRetrieveRequestOpts( + requestParameters: StagesDummyRetrieveRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesDummyRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/dummy/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * DummyStage Viewset + */ + async stagesDummyRetrieveRaw( + requestParameters: StagesDummyRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesDummyRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => DummyStageFromJSON(jsonValue)); + } + + /** + * DummyStage Viewset + */ + async stagesDummyRetrieve( + requestParameters: StagesDummyRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesDummyRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesDummyUpdate without sending the request + */ + async stagesDummyUpdateRequestOpts( + requestParameters: StagesDummyUpdateRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesDummyUpdate().', + ); + } + + if (requestParameters["dummyStageRequest"] == null) { + throw new runtime.RequiredError( + "dummyStageRequest", + 'Required parameter "dummyStageRequest" was null or undefined when calling stagesDummyUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/dummy/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: DummyStageRequestToJSON(requestParameters["dummyStageRequest"]), + }; + } + + /** + * DummyStage Viewset + */ + async stagesDummyUpdateRaw( + requestParameters: StagesDummyUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesDummyUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => DummyStageFromJSON(jsonValue)); + } + + /** + * DummyStage Viewset + */ + async stagesDummyUpdate( + requestParameters: StagesDummyUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesDummyUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesDummyUsedByList without sending the request + */ + async stagesDummyUsedByListRequestOpts( + requestParameters: StagesDummyUsedByListRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesDummyUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/dummy/{stage_uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async stagesDummyUsedByListRaw( + requestParameters: StagesDummyUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.stagesDummyUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async stagesDummyUsedByList( + requestParameters: StagesDummyUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.stagesDummyUsedByListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesEmailCreate without sending the request + */ + async stagesEmailCreateRequestOpts( + requestParameters: StagesEmailCreateRequest, + ): Promise { + if (requestParameters["emailStageRequest"] == null) { + throw new runtime.RequiredError( + "emailStageRequest", + 'Required parameter "emailStageRequest" was null or undefined when calling stagesEmailCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/email/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: EmailStageRequestToJSON(requestParameters["emailStageRequest"]), + }; + } + + /** + * EmailStage Viewset + */ + async stagesEmailCreateRaw( + requestParameters: StagesEmailCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesEmailCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => EmailStageFromJSON(jsonValue)); + } + + /** + * EmailStage Viewset + */ + async stagesEmailCreate( + requestParameters: StagesEmailCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesEmailCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesEmailDestroy without sending the request + */ + async stagesEmailDestroyRequestOpts( + requestParameters: StagesEmailDestroyRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesEmailDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/email/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * EmailStage Viewset + */ + async stagesEmailDestroyRaw( + requestParameters: StagesEmailDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesEmailDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * EmailStage Viewset + */ + async stagesEmailDestroy( + requestParameters: StagesEmailDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.stagesEmailDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for stagesEmailList without sending the request + */ + async stagesEmailListRequestOpts( + requestParameters: StagesEmailListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["activateUserOnSuccess"] != null) { + queryParameters["activate_user_on_success"] = + requestParameters["activateUserOnSuccess"]; + } + + if (requestParameters["fromAddress"] != null) { + queryParameters["from_address"] = requestParameters["fromAddress"]; + } + + if (requestParameters["host"] != null) { + queryParameters["host"] = requestParameters["host"]; + } + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["port"] != null) { + queryParameters["port"] = requestParameters["port"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["subject"] != null) { + queryParameters["subject"] = requestParameters["subject"]; + } + + if (requestParameters["template"] != null) { + queryParameters["template"] = requestParameters["template"]; + } + + if (requestParameters["timeout"] != null) { + queryParameters["timeout"] = requestParameters["timeout"]; + } + + if (requestParameters["tokenExpiry"] != null) { + queryParameters["token_expiry"] = requestParameters["tokenExpiry"]; + } + + if (requestParameters["useGlobalSettings"] != null) { + queryParameters["use_global_settings"] = requestParameters["useGlobalSettings"]; + } + + if (requestParameters["useSsl"] != null) { + queryParameters["use_ssl"] = requestParameters["useSsl"]; + } + + if (requestParameters["useTls"] != null) { + queryParameters["use_tls"] = requestParameters["useTls"]; + } + + if (requestParameters["username"] != null) { + queryParameters["username"] = requestParameters["username"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/email/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * EmailStage Viewset + */ + async stagesEmailListRaw( + requestParameters: StagesEmailListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesEmailListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedEmailStageListFromJSON(jsonValue), + ); + } + + /** + * EmailStage Viewset + */ + async stagesEmailList( + requestParameters: StagesEmailListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesEmailListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesEmailPartialUpdate without sending the request + */ + async stagesEmailPartialUpdateRequestOpts( + requestParameters: StagesEmailPartialUpdateRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesEmailPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/email/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedEmailStageRequestToJSON(requestParameters["patchedEmailStageRequest"]), + }; + } + + /** + * EmailStage Viewset + */ + async stagesEmailPartialUpdateRaw( + requestParameters: StagesEmailPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesEmailPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => EmailStageFromJSON(jsonValue)); + } + + /** + * EmailStage Viewset + */ + async stagesEmailPartialUpdate( + requestParameters: StagesEmailPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesEmailPartialUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesEmailRetrieve without sending the request + */ + async stagesEmailRetrieveRequestOpts( + requestParameters: StagesEmailRetrieveRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesEmailRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/email/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * EmailStage Viewset + */ + async stagesEmailRetrieveRaw( + requestParameters: StagesEmailRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesEmailRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => EmailStageFromJSON(jsonValue)); + } + + /** + * EmailStage Viewset + */ + async stagesEmailRetrieve( + requestParameters: StagesEmailRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesEmailRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesEmailTemplatesList without sending the request + */ + async stagesEmailTemplatesListRequestOpts(): Promise { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/email/templates/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get all available templates, including custom templates + */ + async stagesEmailTemplatesListRaw( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.stagesEmailTemplatesListRequestOpts(); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + jsonValue.map(TypeCreateFromJSON), + ); + } + + /** + * Get all available templates, including custom templates + */ + async stagesEmailTemplatesList( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.stagesEmailTemplatesListRaw(initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesEmailUpdate without sending the request + */ + async stagesEmailUpdateRequestOpts( + requestParameters: StagesEmailUpdateRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesEmailUpdate().', + ); + } + + if (requestParameters["emailStageRequest"] == null) { + throw new runtime.RequiredError( + "emailStageRequest", + 'Required parameter "emailStageRequest" was null or undefined when calling stagesEmailUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/email/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: EmailStageRequestToJSON(requestParameters["emailStageRequest"]), + }; + } + + /** + * EmailStage Viewset + */ + async stagesEmailUpdateRaw( + requestParameters: StagesEmailUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesEmailUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => EmailStageFromJSON(jsonValue)); + } + + /** + * EmailStage Viewset + */ + async stagesEmailUpdate( + requestParameters: StagesEmailUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesEmailUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesEmailUsedByList without sending the request + */ + async stagesEmailUsedByListRequestOpts( + requestParameters: StagesEmailUsedByListRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesEmailUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/email/{stage_uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async stagesEmailUsedByListRaw( + requestParameters: StagesEmailUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.stagesEmailUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async stagesEmailUsedByList( + requestParameters: StagesEmailUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.stagesEmailUsedByListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesEndpointsCreate without sending the request + */ + async stagesEndpointsCreateRequestOpts( + requestParameters: StagesEndpointsCreateRequest, + ): Promise { + if (requestParameters["endpointStageRequest"] == null) { + throw new runtime.RequiredError( + "endpointStageRequest", + 'Required parameter "endpointStageRequest" was null or undefined when calling stagesEndpointsCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/endpoints/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: EndpointStageRequestToJSON(requestParameters["endpointStageRequest"]), + }; + } + + /** + * EndpointStage Viewset + */ + async stagesEndpointsCreateRaw( + requestParameters: StagesEndpointsCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesEndpointsCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + EndpointStageFromJSON(jsonValue), + ); + } + + /** + * EndpointStage Viewset + */ + async stagesEndpointsCreate( + requestParameters: StagesEndpointsCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesEndpointsCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesEndpointsDestroy without sending the request + */ + async stagesEndpointsDestroyRequestOpts( + requestParameters: StagesEndpointsDestroyRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesEndpointsDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/endpoints/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * EndpointStage Viewset + */ + async stagesEndpointsDestroyRaw( + requestParameters: StagesEndpointsDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesEndpointsDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * EndpointStage Viewset + */ + async stagesEndpointsDestroy( + requestParameters: StagesEndpointsDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.stagesEndpointsDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for stagesEndpointsList without sending the request + */ + async stagesEndpointsListRequestOpts( + requestParameters: StagesEndpointsListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/endpoints/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * EndpointStage Viewset + */ + async stagesEndpointsListRaw( + requestParameters: StagesEndpointsListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesEndpointsListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedEndpointStageListFromJSON(jsonValue), + ); + } + + /** + * EndpointStage Viewset + */ + async stagesEndpointsList( + requestParameters: StagesEndpointsListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesEndpointsListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesEndpointsPartialUpdate without sending the request + */ + async stagesEndpointsPartialUpdateRequestOpts( + requestParameters: StagesEndpointsPartialUpdateRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesEndpointsPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/endpoints/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedEndpointStageRequestToJSON( + requestParameters["patchedEndpointStageRequest"], + ), + }; + } + + /** + * EndpointStage Viewset + */ + async stagesEndpointsPartialUpdateRaw( + requestParameters: StagesEndpointsPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.stagesEndpointsPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + EndpointStageFromJSON(jsonValue), + ); + } + + /** + * EndpointStage Viewset + */ + async stagesEndpointsPartialUpdate( + requestParameters: StagesEndpointsPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesEndpointsPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesEndpointsRetrieve without sending the request + */ + async stagesEndpointsRetrieveRequestOpts( + requestParameters: StagesEndpointsRetrieveRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesEndpointsRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/endpoints/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * EndpointStage Viewset + */ + async stagesEndpointsRetrieveRaw( + requestParameters: StagesEndpointsRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesEndpointsRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + EndpointStageFromJSON(jsonValue), + ); + } + + /** + * EndpointStage Viewset + */ + async stagesEndpointsRetrieve( + requestParameters: StagesEndpointsRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesEndpointsRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesEndpointsUpdate without sending the request + */ + async stagesEndpointsUpdateRequestOpts( + requestParameters: StagesEndpointsUpdateRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesEndpointsUpdate().', + ); + } + + if (requestParameters["endpointStageRequest"] == null) { + throw new runtime.RequiredError( + "endpointStageRequest", + 'Required parameter "endpointStageRequest" was null or undefined when calling stagesEndpointsUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/endpoints/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: EndpointStageRequestToJSON(requestParameters["endpointStageRequest"]), + }; + } + + /** + * EndpointStage Viewset + */ + async stagesEndpointsUpdateRaw( + requestParameters: StagesEndpointsUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesEndpointsUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + EndpointStageFromJSON(jsonValue), + ); + } + + /** + * EndpointStage Viewset + */ + async stagesEndpointsUpdate( + requestParameters: StagesEndpointsUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesEndpointsUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesEndpointsUsedByList without sending the request + */ + async stagesEndpointsUsedByListRequestOpts( + requestParameters: StagesEndpointsUsedByListRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesEndpointsUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/endpoints/{stage_uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async stagesEndpointsUsedByListRaw( + requestParameters: StagesEndpointsUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.stagesEndpointsUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async stagesEndpointsUsedByList( + requestParameters: StagesEndpointsUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.stagesEndpointsUsedByListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesIdentificationCreate without sending the request + */ + async stagesIdentificationCreateRequestOpts( + requestParameters: StagesIdentificationCreateRequest, + ): Promise { + if (requestParameters["identificationStageRequest"] == null) { + throw new runtime.RequiredError( + "identificationStageRequest", + 'Required parameter "identificationStageRequest" was null or undefined when calling stagesIdentificationCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/identification/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: IdentificationStageRequestToJSON(requestParameters["identificationStageRequest"]), + }; + } + + /** + * IdentificationStage Viewset + */ + async stagesIdentificationCreateRaw( + requestParameters: StagesIdentificationCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesIdentificationCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + IdentificationStageFromJSON(jsonValue), + ); + } + + /** + * IdentificationStage Viewset + */ + async stagesIdentificationCreate( + requestParameters: StagesIdentificationCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesIdentificationCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesIdentificationDestroy without sending the request + */ + async stagesIdentificationDestroyRequestOpts( + requestParameters: StagesIdentificationDestroyRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesIdentificationDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/identification/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * IdentificationStage Viewset + */ + async stagesIdentificationDestroyRaw( + requestParameters: StagesIdentificationDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesIdentificationDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * IdentificationStage Viewset + */ + async stagesIdentificationDestroy( + requestParameters: StagesIdentificationDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.stagesIdentificationDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for stagesIdentificationList without sending the request + */ + async stagesIdentificationListRequestOpts( + requestParameters: StagesIdentificationListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["captchaStage"] != null) { + queryParameters["captcha_stage"] = requestParameters["captchaStage"]; + } + + if (requestParameters["caseInsensitiveMatching"] != null) { + queryParameters["case_insensitive_matching"] = + requestParameters["caseInsensitiveMatching"]; + } + + if (requestParameters["enrollmentFlow"] != null) { + queryParameters["enrollment_flow"] = requestParameters["enrollmentFlow"]; + } + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["passwordStage"] != null) { + queryParameters["password_stage"] = requestParameters["passwordStage"]; + } + + if (requestParameters["passwordlessFlow"] != null) { + queryParameters["passwordless_flow"] = requestParameters["passwordlessFlow"]; + } + + if (requestParameters["recoveryFlow"] != null) { + queryParameters["recovery_flow"] = requestParameters["recoveryFlow"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["showMatchedUser"] != null) { + queryParameters["show_matched_user"] = requestParameters["showMatchedUser"]; + } + + if (requestParameters["showSourceLabels"] != null) { + queryParameters["show_source_labels"] = requestParameters["showSourceLabels"]; + } + + if (requestParameters["webauthnStage"] != null) { + queryParameters["webauthn_stage"] = requestParameters["webauthnStage"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/identification/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * IdentificationStage Viewset + */ + async stagesIdentificationListRaw( + requestParameters: StagesIdentificationListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesIdentificationListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedIdentificationStageListFromJSON(jsonValue), + ); + } + + /** + * IdentificationStage Viewset + */ + async stagesIdentificationList( + requestParameters: StagesIdentificationListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesIdentificationListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesIdentificationPartialUpdate without sending the request + */ + async stagesIdentificationPartialUpdateRequestOpts( + requestParameters: StagesIdentificationPartialUpdateRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesIdentificationPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/identification/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedIdentificationStageRequestToJSON( + requestParameters["patchedIdentificationStageRequest"], + ), + }; + } + + /** + * IdentificationStage Viewset + */ + async stagesIdentificationPartialUpdateRaw( + requestParameters: StagesIdentificationPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.stagesIdentificationPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + IdentificationStageFromJSON(jsonValue), + ); + } + + /** + * IdentificationStage Viewset + */ + async stagesIdentificationPartialUpdate( + requestParameters: StagesIdentificationPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesIdentificationPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesIdentificationRetrieve without sending the request + */ + async stagesIdentificationRetrieveRequestOpts( + requestParameters: StagesIdentificationRetrieveRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesIdentificationRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/identification/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * IdentificationStage Viewset + */ + async stagesIdentificationRetrieveRaw( + requestParameters: StagesIdentificationRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.stagesIdentificationRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + IdentificationStageFromJSON(jsonValue), + ); + } + + /** + * IdentificationStage Viewset + */ + async stagesIdentificationRetrieve( + requestParameters: StagesIdentificationRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesIdentificationRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesIdentificationUpdate without sending the request + */ + async stagesIdentificationUpdateRequestOpts( + requestParameters: StagesIdentificationUpdateRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesIdentificationUpdate().', + ); + } + + if (requestParameters["identificationStageRequest"] == null) { + throw new runtime.RequiredError( + "identificationStageRequest", + 'Required parameter "identificationStageRequest" was null or undefined when calling stagesIdentificationUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/identification/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: IdentificationStageRequestToJSON(requestParameters["identificationStageRequest"]), + }; + } + + /** + * IdentificationStage Viewset + */ + async stagesIdentificationUpdateRaw( + requestParameters: StagesIdentificationUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesIdentificationUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + IdentificationStageFromJSON(jsonValue), + ); + } + + /** + * IdentificationStage Viewset + */ + async stagesIdentificationUpdate( + requestParameters: StagesIdentificationUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesIdentificationUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesIdentificationUsedByList without sending the request + */ + async stagesIdentificationUsedByListRequestOpts( + requestParameters: StagesIdentificationUsedByListRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesIdentificationUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/identification/{stage_uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async stagesIdentificationUsedByListRaw( + requestParameters: StagesIdentificationUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.stagesIdentificationUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async stagesIdentificationUsedByList( + requestParameters: StagesIdentificationUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.stagesIdentificationUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesInvitationInvitationsCreate without sending the request + */ + async stagesInvitationInvitationsCreateRequestOpts( + requestParameters: StagesInvitationInvitationsCreateRequest, + ): Promise { + if (requestParameters["invitationRequest"] == null) { + throw new runtime.RequiredError( + "invitationRequest", + 'Required parameter "invitationRequest" was null or undefined when calling stagesInvitationInvitationsCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/invitation/invitations/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: InvitationRequestToJSON(requestParameters["invitationRequest"]), + }; + } + + /** + * Invitation Viewset + */ + async stagesInvitationInvitationsCreateRaw( + requestParameters: StagesInvitationInvitationsCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.stagesInvitationInvitationsCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => InvitationFromJSON(jsonValue)); + } + + /** + * Invitation Viewset + */ + async stagesInvitationInvitationsCreate( + requestParameters: StagesInvitationInvitationsCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesInvitationInvitationsCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesInvitationInvitationsDestroy without sending the request + */ + async stagesInvitationInvitationsDestroyRequestOpts( + requestParameters: StagesInvitationInvitationsDestroyRequest, + ): Promise { + if (requestParameters["inviteUuid"] == null) { + throw new runtime.RequiredError( + "inviteUuid", + 'Required parameter "inviteUuid" was null or undefined when calling stagesInvitationInvitationsDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/invitation/invitations/{invite_uuid}/`; + urlPath = urlPath.replace( + `{${"invite_uuid"}}`, + encodeURIComponent(String(requestParameters["inviteUuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Invitation Viewset + */ + async stagesInvitationInvitationsDestroyRaw( + requestParameters: StagesInvitationInvitationsDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.stagesInvitationInvitationsDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Invitation Viewset + */ + async stagesInvitationInvitationsDestroy( + requestParameters: StagesInvitationInvitationsDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.stagesInvitationInvitationsDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for stagesInvitationInvitationsList without sending the request + */ + async stagesInvitationInvitationsListRequestOpts( + requestParameters: StagesInvitationInvitationsListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["createdByUsername"] != null) { + queryParameters["created_by__username"] = requestParameters["createdByUsername"]; + } + + if (requestParameters["expires"] != null) { + queryParameters["expires"] = (requestParameters["expires"] as any).toISOString(); + } + + if (requestParameters["flowSlug"] != null) { + queryParameters["flow__slug"] = requestParameters["flowSlug"]; + } + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/invitation/invitations/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Invitation Viewset + */ + async stagesInvitationInvitationsListRaw( + requestParameters: StagesInvitationInvitationsListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.stagesInvitationInvitationsListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedInvitationListFromJSON(jsonValue), + ); + } + + /** + * Invitation Viewset + */ + async stagesInvitationInvitationsList( + requestParameters: StagesInvitationInvitationsListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesInvitationInvitationsListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesInvitationInvitationsPartialUpdate without sending the request + */ + async stagesInvitationInvitationsPartialUpdateRequestOpts( + requestParameters: StagesInvitationInvitationsPartialUpdateRequest, + ): Promise { + if (requestParameters["inviteUuid"] == null) { + throw new runtime.RequiredError( + "inviteUuid", + 'Required parameter "inviteUuid" was null or undefined when calling stagesInvitationInvitationsPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/invitation/invitations/{invite_uuid}/`; + urlPath = urlPath.replace( + `{${"invite_uuid"}}`, + encodeURIComponent(String(requestParameters["inviteUuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedInvitationRequestToJSON(requestParameters["patchedInvitationRequest"]), + }; + } + + /** + * Invitation Viewset + */ + async stagesInvitationInvitationsPartialUpdateRaw( + requestParameters: StagesInvitationInvitationsPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.stagesInvitationInvitationsPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => InvitationFromJSON(jsonValue)); + } + + /** + * Invitation Viewset + */ + async stagesInvitationInvitationsPartialUpdate( + requestParameters: StagesInvitationInvitationsPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesInvitationInvitationsPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesInvitationInvitationsRetrieve without sending the request + */ + async stagesInvitationInvitationsRetrieveRequestOpts( + requestParameters: StagesInvitationInvitationsRetrieveRequest, + ): Promise { + if (requestParameters["inviteUuid"] == null) { + throw new runtime.RequiredError( + "inviteUuid", + 'Required parameter "inviteUuid" was null or undefined when calling stagesInvitationInvitationsRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/invitation/invitations/{invite_uuid}/`; + urlPath = urlPath.replace( + `{${"invite_uuid"}}`, + encodeURIComponent(String(requestParameters["inviteUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Invitation Viewset + */ + async stagesInvitationInvitationsRetrieveRaw( + requestParameters: StagesInvitationInvitationsRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.stagesInvitationInvitationsRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => InvitationFromJSON(jsonValue)); + } + + /** + * Invitation Viewset + */ + async stagesInvitationInvitationsRetrieve( + requestParameters: StagesInvitationInvitationsRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesInvitationInvitationsRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesInvitationInvitationsSendEmailCreate without sending the request + */ + async stagesInvitationInvitationsSendEmailCreateRequestOpts( + requestParameters: StagesInvitationInvitationsSendEmailCreateRequest, + ): Promise { + if (requestParameters["inviteUuid"] == null) { + throw new runtime.RequiredError( + "inviteUuid", + 'Required parameter "inviteUuid" was null or undefined when calling stagesInvitationInvitationsSendEmailCreate().', + ); + } + + if (requestParameters["invitationSendEmailRequest"] == null) { + throw new runtime.RequiredError( + "invitationSendEmailRequest", + 'Required parameter "invitationSendEmailRequest" was null or undefined when calling stagesInvitationInvitationsSendEmailCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/invitation/invitations/{invite_uuid}/send_email/`; + urlPath = urlPath.replace( + `{${"invite_uuid"}}`, + encodeURIComponent(String(requestParameters["inviteUuid"])), + ); + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: InvitationSendEmailRequestToJSON(requestParameters["invitationSendEmailRequest"]), + }; + } + + /** + * Send invitation link via email to one or more addresses + */ + async stagesInvitationInvitationsSendEmailCreateRaw( + requestParameters: StagesInvitationInvitationsSendEmailCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.stagesInvitationInvitationsSendEmailCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Send invitation link via email to one or more addresses + */ + async stagesInvitationInvitationsSendEmailCreate( + requestParameters: StagesInvitationInvitationsSendEmailCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.stagesInvitationInvitationsSendEmailCreateRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for stagesInvitationInvitationsUpdate without sending the request + */ + async stagesInvitationInvitationsUpdateRequestOpts( + requestParameters: StagesInvitationInvitationsUpdateRequest, + ): Promise { + if (requestParameters["inviteUuid"] == null) { + throw new runtime.RequiredError( + "inviteUuid", + 'Required parameter "inviteUuid" was null or undefined when calling stagesInvitationInvitationsUpdate().', + ); + } + + if (requestParameters["invitationRequest"] == null) { + throw new runtime.RequiredError( + "invitationRequest", + 'Required parameter "invitationRequest" was null or undefined when calling stagesInvitationInvitationsUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/invitation/invitations/{invite_uuid}/`; + urlPath = urlPath.replace( + `{${"invite_uuid"}}`, + encodeURIComponent(String(requestParameters["inviteUuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: InvitationRequestToJSON(requestParameters["invitationRequest"]), + }; + } + + /** + * Invitation Viewset + */ + async stagesInvitationInvitationsUpdateRaw( + requestParameters: StagesInvitationInvitationsUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.stagesInvitationInvitationsUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => InvitationFromJSON(jsonValue)); + } + + /** + * Invitation Viewset + */ + async stagesInvitationInvitationsUpdate( + requestParameters: StagesInvitationInvitationsUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesInvitationInvitationsUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesInvitationInvitationsUsedByList without sending the request + */ + async stagesInvitationInvitationsUsedByListRequestOpts( + requestParameters: StagesInvitationInvitationsUsedByListRequest, + ): Promise { + if (requestParameters["inviteUuid"] == null) { + throw new runtime.RequiredError( + "inviteUuid", + 'Required parameter "inviteUuid" was null or undefined when calling stagesInvitationInvitationsUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/invitation/invitations/{invite_uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"invite_uuid"}}`, + encodeURIComponent(String(requestParameters["inviteUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async stagesInvitationInvitationsUsedByListRaw( + requestParameters: StagesInvitationInvitationsUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.stagesInvitationInvitationsUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async stagesInvitationInvitationsUsedByList( + requestParameters: StagesInvitationInvitationsUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.stagesInvitationInvitationsUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesInvitationStagesCreate without sending the request + */ + async stagesInvitationStagesCreateRequestOpts( + requestParameters: StagesInvitationStagesCreateRequest, + ): Promise { + if (requestParameters["invitationStageRequest"] == null) { + throw new runtime.RequiredError( + "invitationStageRequest", + 'Required parameter "invitationStageRequest" was null or undefined when calling stagesInvitationStagesCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/invitation/stages/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: InvitationStageRequestToJSON(requestParameters["invitationStageRequest"]), + }; + } + + /** + * InvitationStage Viewset + */ + async stagesInvitationStagesCreateRaw( + requestParameters: StagesInvitationStagesCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.stagesInvitationStagesCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + InvitationStageFromJSON(jsonValue), + ); + } + + /** + * InvitationStage Viewset + */ + async stagesInvitationStagesCreate( + requestParameters: StagesInvitationStagesCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesInvitationStagesCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesInvitationStagesDestroy without sending the request + */ + async stagesInvitationStagesDestroyRequestOpts( + requestParameters: StagesInvitationStagesDestroyRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesInvitationStagesDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/invitation/stages/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * InvitationStage Viewset + */ + async stagesInvitationStagesDestroyRaw( + requestParameters: StagesInvitationStagesDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.stagesInvitationStagesDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * InvitationStage Viewset + */ + async stagesInvitationStagesDestroy( + requestParameters: StagesInvitationStagesDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.stagesInvitationStagesDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for stagesInvitationStagesList without sending the request + */ + async stagesInvitationStagesListRequestOpts( + requestParameters: StagesInvitationStagesListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["continueFlowWithoutInvitation"] != null) { + queryParameters["continue_flow_without_invitation"] = + requestParameters["continueFlowWithoutInvitation"]; + } + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["noFlows"] != null) { + queryParameters["no_flows"] = requestParameters["noFlows"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["stageUuid"] != null) { + queryParameters["stage_uuid"] = requestParameters["stageUuid"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/invitation/stages/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * InvitationStage Viewset + */ + async stagesInvitationStagesListRaw( + requestParameters: StagesInvitationStagesListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesInvitationStagesListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedInvitationStageListFromJSON(jsonValue), + ); + } + + /** + * InvitationStage Viewset + */ + async stagesInvitationStagesList( + requestParameters: StagesInvitationStagesListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesInvitationStagesListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesInvitationStagesPartialUpdate without sending the request + */ + async stagesInvitationStagesPartialUpdateRequestOpts( + requestParameters: StagesInvitationStagesPartialUpdateRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesInvitationStagesPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/invitation/stages/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedInvitationStageRequestToJSON( + requestParameters["patchedInvitationStageRequest"], + ), + }; + } + + /** + * InvitationStage Viewset + */ + async stagesInvitationStagesPartialUpdateRaw( + requestParameters: StagesInvitationStagesPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.stagesInvitationStagesPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + InvitationStageFromJSON(jsonValue), + ); + } + + /** + * InvitationStage Viewset + */ + async stagesInvitationStagesPartialUpdate( + requestParameters: StagesInvitationStagesPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesInvitationStagesPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesInvitationStagesRetrieve without sending the request + */ + async stagesInvitationStagesRetrieveRequestOpts( + requestParameters: StagesInvitationStagesRetrieveRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesInvitationStagesRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/invitation/stages/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * InvitationStage Viewset + */ + async stagesInvitationStagesRetrieveRaw( + requestParameters: StagesInvitationStagesRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.stagesInvitationStagesRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + InvitationStageFromJSON(jsonValue), + ); + } + + /** + * InvitationStage Viewset + */ + async stagesInvitationStagesRetrieve( + requestParameters: StagesInvitationStagesRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesInvitationStagesRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesInvitationStagesUpdate without sending the request + */ + async stagesInvitationStagesUpdateRequestOpts( + requestParameters: StagesInvitationStagesUpdateRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesInvitationStagesUpdate().', + ); + } + + if (requestParameters["invitationStageRequest"] == null) { + throw new runtime.RequiredError( + "invitationStageRequest", + 'Required parameter "invitationStageRequest" was null or undefined when calling stagesInvitationStagesUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/invitation/stages/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: InvitationStageRequestToJSON(requestParameters["invitationStageRequest"]), + }; + } + + /** + * InvitationStage Viewset + */ + async stagesInvitationStagesUpdateRaw( + requestParameters: StagesInvitationStagesUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.stagesInvitationStagesUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + InvitationStageFromJSON(jsonValue), + ); + } + + /** + * InvitationStage Viewset + */ + async stagesInvitationStagesUpdate( + requestParameters: StagesInvitationStagesUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesInvitationStagesUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesInvitationStagesUsedByList without sending the request + */ + async stagesInvitationStagesUsedByListRequestOpts( + requestParameters: StagesInvitationStagesUsedByListRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesInvitationStagesUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/invitation/stages/{stage_uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async stagesInvitationStagesUsedByListRaw( + requestParameters: StagesInvitationStagesUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.stagesInvitationStagesUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async stagesInvitationStagesUsedByList( + requestParameters: StagesInvitationStagesUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.stagesInvitationStagesUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesMtlsCreate without sending the request + */ + async stagesMtlsCreateRequestOpts( + requestParameters: StagesMtlsCreateRequest, + ): Promise { + if (requestParameters["mutualTLSStageRequest"] == null) { + throw new runtime.RequiredError( + "mutualTLSStageRequest", + 'Required parameter "mutualTLSStageRequest" was null or undefined when calling stagesMtlsCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/mtls/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: MutualTLSStageRequestToJSON(requestParameters["mutualTLSStageRequest"]), + }; + } + + /** + * MutualTLSStage Viewset + */ + async stagesMtlsCreateRaw( + requestParameters: StagesMtlsCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesMtlsCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + MutualTLSStageFromJSON(jsonValue), + ); + } + + /** + * MutualTLSStage Viewset + */ + async stagesMtlsCreate( + requestParameters: StagesMtlsCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesMtlsCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesMtlsDestroy without sending the request + */ + async stagesMtlsDestroyRequestOpts( + requestParameters: StagesMtlsDestroyRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesMtlsDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/mtls/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * MutualTLSStage Viewset + */ + async stagesMtlsDestroyRaw( + requestParameters: StagesMtlsDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesMtlsDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * MutualTLSStage Viewset + */ + async stagesMtlsDestroy( + requestParameters: StagesMtlsDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.stagesMtlsDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for stagesMtlsList without sending the request + */ + async stagesMtlsListRequestOpts( + requestParameters: StagesMtlsListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["certAttribute"] != null) { + queryParameters["cert_attribute"] = requestParameters["certAttribute"]; + } + + if (requestParameters["certificateAuthorities"] != null) { + queryParameters["certificate_authorities"] = + requestParameters["certificateAuthorities"]; + } + + if (requestParameters["mode"] != null) { + queryParameters["mode"] = requestParameters["mode"]; + } + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["stageUuid"] != null) { + queryParameters["stage_uuid"] = requestParameters["stageUuid"]; + } + + if (requestParameters["userAttribute"] != null) { + queryParameters["user_attribute"] = requestParameters["userAttribute"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/mtls/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * MutualTLSStage Viewset + */ + async stagesMtlsListRaw( + requestParameters: StagesMtlsListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesMtlsListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedMutualTLSStageListFromJSON(jsonValue), + ); + } + + /** + * MutualTLSStage Viewset + */ + async stagesMtlsList( + requestParameters: StagesMtlsListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesMtlsListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesMtlsPartialUpdate without sending the request + */ + async stagesMtlsPartialUpdateRequestOpts( + requestParameters: StagesMtlsPartialUpdateRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesMtlsPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/mtls/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedMutualTLSStageRequestToJSON( + requestParameters["patchedMutualTLSStageRequest"], + ), + }; + } + + /** + * MutualTLSStage Viewset + */ + async stagesMtlsPartialUpdateRaw( + requestParameters: StagesMtlsPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesMtlsPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + MutualTLSStageFromJSON(jsonValue), + ); + } + + /** + * MutualTLSStage Viewset + */ + async stagesMtlsPartialUpdate( + requestParameters: StagesMtlsPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesMtlsPartialUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesMtlsRetrieve without sending the request + */ + async stagesMtlsRetrieveRequestOpts( + requestParameters: StagesMtlsRetrieveRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesMtlsRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/mtls/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * MutualTLSStage Viewset + */ + async stagesMtlsRetrieveRaw( + requestParameters: StagesMtlsRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesMtlsRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + MutualTLSStageFromJSON(jsonValue), + ); + } + + /** + * MutualTLSStage Viewset + */ + async stagesMtlsRetrieve( + requestParameters: StagesMtlsRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesMtlsRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesMtlsUpdate without sending the request + */ + async stagesMtlsUpdateRequestOpts( + requestParameters: StagesMtlsUpdateRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesMtlsUpdate().', + ); + } + + if (requestParameters["mutualTLSStageRequest"] == null) { + throw new runtime.RequiredError( + "mutualTLSStageRequest", + 'Required parameter "mutualTLSStageRequest" was null or undefined when calling stagesMtlsUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/mtls/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: MutualTLSStageRequestToJSON(requestParameters["mutualTLSStageRequest"]), + }; + } + + /** + * MutualTLSStage Viewset + */ + async stagesMtlsUpdateRaw( + requestParameters: StagesMtlsUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesMtlsUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + MutualTLSStageFromJSON(jsonValue), + ); + } + + /** + * MutualTLSStage Viewset + */ + async stagesMtlsUpdate( + requestParameters: StagesMtlsUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesMtlsUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesMtlsUsedByList without sending the request + */ + async stagesMtlsUsedByListRequestOpts( + requestParameters: StagesMtlsUsedByListRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesMtlsUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/mtls/{stage_uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async stagesMtlsUsedByListRaw( + requestParameters: StagesMtlsUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.stagesMtlsUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async stagesMtlsUsedByList( + requestParameters: StagesMtlsUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.stagesMtlsUsedByListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesPasswordCreate without sending the request + */ + async stagesPasswordCreateRequestOpts( + requestParameters: StagesPasswordCreateRequest, + ): Promise { + if (requestParameters["passwordStageRequest"] == null) { + throw new runtime.RequiredError( + "passwordStageRequest", + 'Required parameter "passwordStageRequest" was null or undefined when calling stagesPasswordCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/password/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: PasswordStageRequestToJSON(requestParameters["passwordStageRequest"]), + }; + } + + /** + * PasswordStage Viewset + */ + async stagesPasswordCreateRaw( + requestParameters: StagesPasswordCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesPasswordCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PasswordStageFromJSON(jsonValue), + ); + } + + /** + * PasswordStage Viewset + */ + async stagesPasswordCreate( + requestParameters: StagesPasswordCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesPasswordCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesPasswordDestroy without sending the request + */ + async stagesPasswordDestroyRequestOpts( + requestParameters: StagesPasswordDestroyRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesPasswordDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/password/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * PasswordStage Viewset + */ + async stagesPasswordDestroyRaw( + requestParameters: StagesPasswordDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesPasswordDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * PasswordStage Viewset + */ + async stagesPasswordDestroy( + requestParameters: StagesPasswordDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.stagesPasswordDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for stagesPasswordList without sending the request + */ + async stagesPasswordListRequestOpts( + requestParameters: StagesPasswordListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["allowShowPassword"] != null) { + queryParameters["allow_show_password"] = requestParameters["allowShowPassword"]; + } + + if (requestParameters["configureFlow"] != null) { + queryParameters["configure_flow"] = requestParameters["configureFlow"]; + } + + if (requestParameters["failedAttemptsBeforeCancel"] != null) { + queryParameters["failed_attempts_before_cancel"] = + requestParameters["failedAttemptsBeforeCancel"]; + } + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/password/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * PasswordStage Viewset + */ + async stagesPasswordListRaw( + requestParameters: StagesPasswordListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesPasswordListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedPasswordStageListFromJSON(jsonValue), + ); + } + + /** + * PasswordStage Viewset + */ + async stagesPasswordList( + requestParameters: StagesPasswordListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesPasswordListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesPasswordPartialUpdate without sending the request + */ + async stagesPasswordPartialUpdateRequestOpts( + requestParameters: StagesPasswordPartialUpdateRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesPasswordPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/password/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedPasswordStageRequestToJSON( + requestParameters["patchedPasswordStageRequest"], + ), + }; + } + + /** + * PasswordStage Viewset + */ + async stagesPasswordPartialUpdateRaw( + requestParameters: StagesPasswordPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesPasswordPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PasswordStageFromJSON(jsonValue), + ); + } + + /** + * PasswordStage Viewset + */ + async stagesPasswordPartialUpdate( + requestParameters: StagesPasswordPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesPasswordPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesPasswordRetrieve without sending the request + */ + async stagesPasswordRetrieveRequestOpts( + requestParameters: StagesPasswordRetrieveRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesPasswordRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/password/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * PasswordStage Viewset + */ + async stagesPasswordRetrieveRaw( + requestParameters: StagesPasswordRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesPasswordRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PasswordStageFromJSON(jsonValue), + ); + } + + /** + * PasswordStage Viewset + */ + async stagesPasswordRetrieve( + requestParameters: StagesPasswordRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesPasswordRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesPasswordUpdate without sending the request + */ + async stagesPasswordUpdateRequestOpts( + requestParameters: StagesPasswordUpdateRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesPasswordUpdate().', + ); + } + + if (requestParameters["passwordStageRequest"] == null) { + throw new runtime.RequiredError( + "passwordStageRequest", + 'Required parameter "passwordStageRequest" was null or undefined when calling stagesPasswordUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/password/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: PasswordStageRequestToJSON(requestParameters["passwordStageRequest"]), + }; + } + + /** + * PasswordStage Viewset + */ + async stagesPasswordUpdateRaw( + requestParameters: StagesPasswordUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesPasswordUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PasswordStageFromJSON(jsonValue), + ); + } + + /** + * PasswordStage Viewset + */ + async stagesPasswordUpdate( + requestParameters: StagesPasswordUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesPasswordUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesPasswordUsedByList without sending the request + */ + async stagesPasswordUsedByListRequestOpts( + requestParameters: StagesPasswordUsedByListRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesPasswordUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/password/{stage_uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async stagesPasswordUsedByListRaw( + requestParameters: StagesPasswordUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.stagesPasswordUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async stagesPasswordUsedByList( + requestParameters: StagesPasswordUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.stagesPasswordUsedByListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesPromptPromptsCreate without sending the request + */ + async stagesPromptPromptsCreateRequestOpts( + requestParameters: StagesPromptPromptsCreateRequest, + ): Promise { + if (requestParameters["promptRequest"] == null) { + throw new runtime.RequiredError( + "promptRequest", + 'Required parameter "promptRequest" was null or undefined when calling stagesPromptPromptsCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/prompt/prompts/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: PromptRequestToJSON(requestParameters["promptRequest"]), + }; + } + + /** + * Prompt Viewset + */ + async stagesPromptPromptsCreateRaw( + requestParameters: StagesPromptPromptsCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesPromptPromptsCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => PromptFromJSON(jsonValue)); + } + + /** + * Prompt Viewset + */ + async stagesPromptPromptsCreate( + requestParameters: StagesPromptPromptsCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesPromptPromptsCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesPromptPromptsDestroy without sending the request + */ + async stagesPromptPromptsDestroyRequestOpts( + requestParameters: StagesPromptPromptsDestroyRequest, + ): Promise { + if (requestParameters["promptUuid"] == null) { + throw new runtime.RequiredError( + "promptUuid", + 'Required parameter "promptUuid" was null or undefined when calling stagesPromptPromptsDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/prompt/prompts/{prompt_uuid}/`; + urlPath = urlPath.replace( + `{${"prompt_uuid"}}`, + encodeURIComponent(String(requestParameters["promptUuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Prompt Viewset + */ + async stagesPromptPromptsDestroyRaw( + requestParameters: StagesPromptPromptsDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesPromptPromptsDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Prompt Viewset + */ + async stagesPromptPromptsDestroy( + requestParameters: StagesPromptPromptsDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.stagesPromptPromptsDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for stagesPromptPromptsList without sending the request + */ + async stagesPromptPromptsListRequestOpts( + requestParameters: StagesPromptPromptsListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["fieldKey"] != null) { + queryParameters["field_key"] = requestParameters["fieldKey"]; + } + + if (requestParameters["label"] != null) { + queryParameters["label"] = requestParameters["label"]; + } + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["placeholder"] != null) { + queryParameters["placeholder"] = requestParameters["placeholder"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["type"] != null) { + queryParameters["type"] = requestParameters["type"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/prompt/prompts/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Prompt Viewset + */ + async stagesPromptPromptsListRaw( + requestParameters: StagesPromptPromptsListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesPromptPromptsListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedPromptListFromJSON(jsonValue), + ); + } + + /** + * Prompt Viewset + */ + async stagesPromptPromptsList( + requestParameters: StagesPromptPromptsListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesPromptPromptsListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesPromptPromptsPartialUpdate without sending the request + */ + async stagesPromptPromptsPartialUpdateRequestOpts( + requestParameters: StagesPromptPromptsPartialUpdateRequest, + ): Promise { + if (requestParameters["promptUuid"] == null) { + throw new runtime.RequiredError( + "promptUuid", + 'Required parameter "promptUuid" was null or undefined when calling stagesPromptPromptsPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/prompt/prompts/{prompt_uuid}/`; + urlPath = urlPath.replace( + `{${"prompt_uuid"}}`, + encodeURIComponent(String(requestParameters["promptUuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedPromptRequestToJSON(requestParameters["patchedPromptRequest"]), + }; + } + + /** + * Prompt Viewset + */ + async stagesPromptPromptsPartialUpdateRaw( + requestParameters: StagesPromptPromptsPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.stagesPromptPromptsPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => PromptFromJSON(jsonValue)); + } + + /** + * Prompt Viewset + */ + async stagesPromptPromptsPartialUpdate( + requestParameters: StagesPromptPromptsPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesPromptPromptsPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesPromptPromptsPreviewCreate without sending the request + */ + async stagesPromptPromptsPreviewCreateRequestOpts( + requestParameters: StagesPromptPromptsPreviewCreateRequest, + ): Promise { + if (requestParameters["promptRequest"] == null) { + throw new runtime.RequiredError( + "promptRequest", + 'Required parameter "promptRequest" was null or undefined when calling stagesPromptPromptsPreviewCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/prompt/prompts/preview/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: PromptRequestToJSON(requestParameters["promptRequest"]), + }; + } + + /** + * Preview a prompt as a challenge, just like a flow would receive + */ + async stagesPromptPromptsPreviewCreateRaw( + requestParameters: StagesPromptPromptsPreviewCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.stagesPromptPromptsPreviewCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PromptChallengeFromJSON(jsonValue), + ); + } + + /** + * Preview a prompt as a challenge, just like a flow would receive + */ + async stagesPromptPromptsPreviewCreate( + requestParameters: StagesPromptPromptsPreviewCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesPromptPromptsPreviewCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesPromptPromptsRetrieve without sending the request + */ + async stagesPromptPromptsRetrieveRequestOpts( + requestParameters: StagesPromptPromptsRetrieveRequest, + ): Promise { + if (requestParameters["promptUuid"] == null) { + throw new runtime.RequiredError( + "promptUuid", + 'Required parameter "promptUuid" was null or undefined when calling stagesPromptPromptsRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/prompt/prompts/{prompt_uuid}/`; + urlPath = urlPath.replace( + `{${"prompt_uuid"}}`, + encodeURIComponent(String(requestParameters["promptUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Prompt Viewset + */ + async stagesPromptPromptsRetrieveRaw( + requestParameters: StagesPromptPromptsRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesPromptPromptsRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => PromptFromJSON(jsonValue)); + } + + /** + * Prompt Viewset + */ + async stagesPromptPromptsRetrieve( + requestParameters: StagesPromptPromptsRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesPromptPromptsRetrieveRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesPromptPromptsUpdate without sending the request + */ + async stagesPromptPromptsUpdateRequestOpts( + requestParameters: StagesPromptPromptsUpdateRequest, + ): Promise { + if (requestParameters["promptUuid"] == null) { + throw new runtime.RequiredError( + "promptUuid", + 'Required parameter "promptUuid" was null or undefined when calling stagesPromptPromptsUpdate().', + ); + } + + if (requestParameters["promptRequest"] == null) { + throw new runtime.RequiredError( + "promptRequest", + 'Required parameter "promptRequest" was null or undefined when calling stagesPromptPromptsUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/prompt/prompts/{prompt_uuid}/`; + urlPath = urlPath.replace( + `{${"prompt_uuid"}}`, + encodeURIComponent(String(requestParameters["promptUuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: PromptRequestToJSON(requestParameters["promptRequest"]), + }; + } + + /** + * Prompt Viewset + */ + async stagesPromptPromptsUpdateRaw( + requestParameters: StagesPromptPromptsUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesPromptPromptsUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => PromptFromJSON(jsonValue)); + } + + /** + * Prompt Viewset + */ + async stagesPromptPromptsUpdate( + requestParameters: StagesPromptPromptsUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesPromptPromptsUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesPromptPromptsUsedByList without sending the request + */ + async stagesPromptPromptsUsedByListRequestOpts( + requestParameters: StagesPromptPromptsUsedByListRequest, + ): Promise { + if (requestParameters["promptUuid"] == null) { + throw new runtime.RequiredError( + "promptUuid", + 'Required parameter "promptUuid" was null or undefined when calling stagesPromptPromptsUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/prompt/prompts/{prompt_uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"prompt_uuid"}}`, + encodeURIComponent(String(requestParameters["promptUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async stagesPromptPromptsUsedByListRaw( + requestParameters: StagesPromptPromptsUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.stagesPromptPromptsUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async stagesPromptPromptsUsedByList( + requestParameters: StagesPromptPromptsUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.stagesPromptPromptsUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesPromptStagesCreate without sending the request + */ + async stagesPromptStagesCreateRequestOpts( + requestParameters: StagesPromptStagesCreateRequest, + ): Promise { + if (requestParameters["promptStageRequest"] == null) { + throw new runtime.RequiredError( + "promptStageRequest", + 'Required parameter "promptStageRequest" was null or undefined when calling stagesPromptStagesCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/prompt/stages/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: PromptStageRequestToJSON(requestParameters["promptStageRequest"]), + }; + } + + /** + * PromptStage Viewset + */ + async stagesPromptStagesCreateRaw( + requestParameters: StagesPromptStagesCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesPromptStagesCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => PromptStageFromJSON(jsonValue)); + } + + /** + * PromptStage Viewset + */ + async stagesPromptStagesCreate( + requestParameters: StagesPromptStagesCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesPromptStagesCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesPromptStagesDestroy without sending the request + */ + async stagesPromptStagesDestroyRequestOpts( + requestParameters: StagesPromptStagesDestroyRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesPromptStagesDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/prompt/stages/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * PromptStage Viewset + */ + async stagesPromptStagesDestroyRaw( + requestParameters: StagesPromptStagesDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesPromptStagesDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * PromptStage Viewset + */ + async stagesPromptStagesDestroy( + requestParameters: StagesPromptStagesDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.stagesPromptStagesDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for stagesPromptStagesList without sending the request + */ + async stagesPromptStagesListRequestOpts( + requestParameters: StagesPromptStagesListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["fields"] != null) { + queryParameters["fields"] = requestParameters["fields"]; + } + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["stageUuid"] != null) { + queryParameters["stage_uuid"] = requestParameters["stageUuid"]; + } + + if (requestParameters["validationPolicies"] != null) { + queryParameters["validation_policies"] = requestParameters["validationPolicies"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/prompt/stages/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * PromptStage Viewset + */ + async stagesPromptStagesListRaw( + requestParameters: StagesPromptStagesListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesPromptStagesListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedPromptStageListFromJSON(jsonValue), + ); + } + + /** + * PromptStage Viewset + */ + async stagesPromptStagesList( + requestParameters: StagesPromptStagesListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesPromptStagesListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesPromptStagesPartialUpdate without sending the request + */ + async stagesPromptStagesPartialUpdateRequestOpts( + requestParameters: StagesPromptStagesPartialUpdateRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesPromptStagesPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/prompt/stages/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedPromptStageRequestToJSON(requestParameters["patchedPromptStageRequest"]), + }; + } + + /** + * PromptStage Viewset + */ + async stagesPromptStagesPartialUpdateRaw( + requestParameters: StagesPromptStagesPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.stagesPromptStagesPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => PromptStageFromJSON(jsonValue)); + } + + /** + * PromptStage Viewset + */ + async stagesPromptStagesPartialUpdate( + requestParameters: StagesPromptStagesPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesPromptStagesPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesPromptStagesRetrieve without sending the request + */ + async stagesPromptStagesRetrieveRequestOpts( + requestParameters: StagesPromptStagesRetrieveRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesPromptStagesRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/prompt/stages/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * PromptStage Viewset + */ + async stagesPromptStagesRetrieveRaw( + requestParameters: StagesPromptStagesRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesPromptStagesRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => PromptStageFromJSON(jsonValue)); + } + + /** + * PromptStage Viewset + */ + async stagesPromptStagesRetrieve( + requestParameters: StagesPromptStagesRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesPromptStagesRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesPromptStagesUpdate without sending the request + */ + async stagesPromptStagesUpdateRequestOpts( + requestParameters: StagesPromptStagesUpdateRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesPromptStagesUpdate().', + ); + } + + if (requestParameters["promptStageRequest"] == null) { + throw new runtime.RequiredError( + "promptStageRequest", + 'Required parameter "promptStageRequest" was null or undefined when calling stagesPromptStagesUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/prompt/stages/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: PromptStageRequestToJSON(requestParameters["promptStageRequest"]), + }; + } + + /** + * PromptStage Viewset + */ + async stagesPromptStagesUpdateRaw( + requestParameters: StagesPromptStagesUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesPromptStagesUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => PromptStageFromJSON(jsonValue)); + } + + /** + * PromptStage Viewset + */ + async stagesPromptStagesUpdate( + requestParameters: StagesPromptStagesUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesPromptStagesUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesPromptStagesUsedByList without sending the request + */ + async stagesPromptStagesUsedByListRequestOpts( + requestParameters: StagesPromptStagesUsedByListRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesPromptStagesUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/prompt/stages/{stage_uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async stagesPromptStagesUsedByListRaw( + requestParameters: StagesPromptStagesUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = + await this.stagesPromptStagesUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async stagesPromptStagesUsedByList( + requestParameters: StagesPromptStagesUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.stagesPromptStagesUsedByListRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesRedirectCreate without sending the request + */ + async stagesRedirectCreateRequestOpts( + requestParameters: StagesRedirectCreateRequest, + ): Promise { + if (requestParameters["redirectStageRequest"] == null) { + throw new runtime.RequiredError( + "redirectStageRequest", + 'Required parameter "redirectStageRequest" was null or undefined when calling stagesRedirectCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/redirect/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: RedirectStageRequestToJSON(requestParameters["redirectStageRequest"]), + }; + } + + /** + * RedirectStage Viewset + */ + async stagesRedirectCreateRaw( + requestParameters: StagesRedirectCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesRedirectCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + RedirectStageFromJSON(jsonValue), + ); + } + + /** + * RedirectStage Viewset + */ + async stagesRedirectCreate( + requestParameters: StagesRedirectCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesRedirectCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesRedirectDestroy without sending the request + */ + async stagesRedirectDestroyRequestOpts( + requestParameters: StagesRedirectDestroyRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesRedirectDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/redirect/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * RedirectStage Viewset + */ + async stagesRedirectDestroyRaw( + requestParameters: StagesRedirectDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesRedirectDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * RedirectStage Viewset + */ + async stagesRedirectDestroy( + requestParameters: StagesRedirectDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.stagesRedirectDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for stagesRedirectList without sending the request + */ + async stagesRedirectListRequestOpts( + requestParameters: StagesRedirectListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/redirect/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * RedirectStage Viewset + */ + async stagesRedirectListRaw( + requestParameters: StagesRedirectListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesRedirectListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedRedirectStageListFromJSON(jsonValue), + ); + } + + /** + * RedirectStage Viewset + */ + async stagesRedirectList( + requestParameters: StagesRedirectListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesRedirectListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesRedirectPartialUpdate without sending the request + */ + async stagesRedirectPartialUpdateRequestOpts( + requestParameters: StagesRedirectPartialUpdateRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesRedirectPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/redirect/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedRedirectStageRequestToJSON( + requestParameters["patchedRedirectStageRequest"], + ), + }; + } + + /** + * RedirectStage Viewset + */ + async stagesRedirectPartialUpdateRaw( + requestParameters: StagesRedirectPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesRedirectPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + RedirectStageFromJSON(jsonValue), + ); + } + + /** + * RedirectStage Viewset + */ + async stagesRedirectPartialUpdate( + requestParameters: StagesRedirectPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesRedirectPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesRedirectRetrieve without sending the request + */ + async stagesRedirectRetrieveRequestOpts( + requestParameters: StagesRedirectRetrieveRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesRedirectRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/redirect/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * RedirectStage Viewset + */ + async stagesRedirectRetrieveRaw( + requestParameters: StagesRedirectRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesRedirectRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + RedirectStageFromJSON(jsonValue), + ); + } + + /** + * RedirectStage Viewset + */ + async stagesRedirectRetrieve( + requestParameters: StagesRedirectRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesRedirectRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesRedirectUpdate without sending the request + */ + async stagesRedirectUpdateRequestOpts( + requestParameters: StagesRedirectUpdateRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesRedirectUpdate().', + ); + } + + if (requestParameters["redirectStageRequest"] == null) { + throw new runtime.RequiredError( + "redirectStageRequest", + 'Required parameter "redirectStageRequest" was null or undefined when calling stagesRedirectUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/redirect/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: RedirectStageRequestToJSON(requestParameters["redirectStageRequest"]), + }; + } + + /** + * RedirectStage Viewset + */ + async stagesRedirectUpdateRaw( + requestParameters: StagesRedirectUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesRedirectUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + RedirectStageFromJSON(jsonValue), + ); + } + + /** + * RedirectStage Viewset + */ + async stagesRedirectUpdate( + requestParameters: StagesRedirectUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesRedirectUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesRedirectUsedByList without sending the request + */ + async stagesRedirectUsedByListRequestOpts( + requestParameters: StagesRedirectUsedByListRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesRedirectUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/redirect/{stage_uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async stagesRedirectUsedByListRaw( + requestParameters: StagesRedirectUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.stagesRedirectUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async stagesRedirectUsedByList( + requestParameters: StagesRedirectUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.stagesRedirectUsedByListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesSourceCreate without sending the request + */ + async stagesSourceCreateRequestOpts( + requestParameters: StagesSourceCreateRequest, + ): Promise { + if (requestParameters["sourceStageRequest"] == null) { + throw new runtime.RequiredError( + "sourceStageRequest", + 'Required parameter "sourceStageRequest" was null or undefined when calling stagesSourceCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/source/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: SourceStageRequestToJSON(requestParameters["sourceStageRequest"]), + }; + } + + /** + * SourceStage Viewset + */ + async stagesSourceCreateRaw( + requestParameters: StagesSourceCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesSourceCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => SourceStageFromJSON(jsonValue)); + } + + /** + * SourceStage Viewset + */ + async stagesSourceCreate( + requestParameters: StagesSourceCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesSourceCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesSourceDestroy without sending the request + */ + async stagesSourceDestroyRequestOpts( + requestParameters: StagesSourceDestroyRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesSourceDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/source/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * SourceStage Viewset + */ + async stagesSourceDestroyRaw( + requestParameters: StagesSourceDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesSourceDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * SourceStage Viewset + */ + async stagesSourceDestroy( + requestParameters: StagesSourceDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.stagesSourceDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for stagesSourceList without sending the request + */ + async stagesSourceListRequestOpts( + requestParameters: StagesSourceListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["resumeTimeout"] != null) { + queryParameters["resume_timeout"] = requestParameters["resumeTimeout"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["source"] != null) { + queryParameters["source"] = requestParameters["source"]; + } + + if (requestParameters["stageUuid"] != null) { + queryParameters["stage_uuid"] = requestParameters["stageUuid"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/source/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * SourceStage Viewset + */ + async stagesSourceListRaw( + requestParameters: StagesSourceListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesSourceListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedSourceStageListFromJSON(jsonValue), + ); + } + + /** + * SourceStage Viewset + */ + async stagesSourceList( + requestParameters: StagesSourceListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesSourceListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesSourcePartialUpdate without sending the request + */ + async stagesSourcePartialUpdateRequestOpts( + requestParameters: StagesSourcePartialUpdateRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesSourcePartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/source/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedSourceStageRequestToJSON(requestParameters["patchedSourceStageRequest"]), + }; + } + + /** + * SourceStage Viewset + */ + async stagesSourcePartialUpdateRaw( + requestParameters: StagesSourcePartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesSourcePartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => SourceStageFromJSON(jsonValue)); + } + + /** + * SourceStage Viewset + */ + async stagesSourcePartialUpdate( + requestParameters: StagesSourcePartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesSourcePartialUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesSourceRetrieve without sending the request + */ + async stagesSourceRetrieveRequestOpts( + requestParameters: StagesSourceRetrieveRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesSourceRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/source/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * SourceStage Viewset + */ + async stagesSourceRetrieveRaw( + requestParameters: StagesSourceRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesSourceRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => SourceStageFromJSON(jsonValue)); + } + + /** + * SourceStage Viewset + */ + async stagesSourceRetrieve( + requestParameters: StagesSourceRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesSourceRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesSourceUpdate without sending the request + */ + async stagesSourceUpdateRequestOpts( + requestParameters: StagesSourceUpdateRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesSourceUpdate().', + ); + } + + if (requestParameters["sourceStageRequest"] == null) { + throw new runtime.RequiredError( + "sourceStageRequest", + 'Required parameter "sourceStageRequest" was null or undefined when calling stagesSourceUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/source/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: SourceStageRequestToJSON(requestParameters["sourceStageRequest"]), + }; + } + + /** + * SourceStage Viewset + */ + async stagesSourceUpdateRaw( + requestParameters: StagesSourceUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesSourceUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => SourceStageFromJSON(jsonValue)); + } + + /** + * SourceStage Viewset + */ + async stagesSourceUpdate( + requestParameters: StagesSourceUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesSourceUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesSourceUsedByList without sending the request + */ + async stagesSourceUsedByListRequestOpts( + requestParameters: StagesSourceUsedByListRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesSourceUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/source/{stage_uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async stagesSourceUsedByListRaw( + requestParameters: StagesSourceUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.stagesSourceUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async stagesSourceUsedByList( + requestParameters: StagesSourceUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.stagesSourceUsedByListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesUserDeleteCreate without sending the request + */ + async stagesUserDeleteCreateRequestOpts( + requestParameters: StagesUserDeleteCreateRequest, + ): Promise { + if (requestParameters["userDeleteStageRequest"] == null) { + throw new runtime.RequiredError( + "userDeleteStageRequest", + 'Required parameter "userDeleteStageRequest" was null or undefined when calling stagesUserDeleteCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/user_delete/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: UserDeleteStageRequestToJSON(requestParameters["userDeleteStageRequest"]), + }; + } + + /** + * UserDeleteStage Viewset + */ + async stagesUserDeleteCreateRaw( + requestParameters: StagesUserDeleteCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesUserDeleteCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + UserDeleteStageFromJSON(jsonValue), + ); + } + + /** + * UserDeleteStage Viewset + */ + async stagesUserDeleteCreate( + requestParameters: StagesUserDeleteCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesUserDeleteCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesUserDeleteDestroy without sending the request + */ + async stagesUserDeleteDestroyRequestOpts( + requestParameters: StagesUserDeleteDestroyRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesUserDeleteDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/user_delete/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * UserDeleteStage Viewset + */ + async stagesUserDeleteDestroyRaw( + requestParameters: StagesUserDeleteDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesUserDeleteDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * UserDeleteStage Viewset + */ + async stagesUserDeleteDestroy( + requestParameters: StagesUserDeleteDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.stagesUserDeleteDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for stagesUserDeleteList without sending the request + */ + async stagesUserDeleteListRequestOpts( + requestParameters: StagesUserDeleteListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["stageUuid"] != null) { + queryParameters["stage_uuid"] = requestParameters["stageUuid"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/user_delete/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * UserDeleteStage Viewset + */ + async stagesUserDeleteListRaw( + requestParameters: StagesUserDeleteListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesUserDeleteListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedUserDeleteStageListFromJSON(jsonValue), + ); + } + + /** + * UserDeleteStage Viewset + */ + async stagesUserDeleteList( + requestParameters: StagesUserDeleteListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesUserDeleteListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesUserDeletePartialUpdate without sending the request + */ + async stagesUserDeletePartialUpdateRequestOpts( + requestParameters: StagesUserDeletePartialUpdateRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesUserDeletePartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/user_delete/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedUserDeleteStageRequestToJSON( + requestParameters["patchedUserDeleteStageRequest"], + ), + }; + } + + /** + * UserDeleteStage Viewset + */ + async stagesUserDeletePartialUpdateRaw( + requestParameters: StagesUserDeletePartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.stagesUserDeletePartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + UserDeleteStageFromJSON(jsonValue), + ); + } + + /** + * UserDeleteStage Viewset + */ + async stagesUserDeletePartialUpdate( + requestParameters: StagesUserDeletePartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesUserDeletePartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesUserDeleteRetrieve without sending the request + */ + async stagesUserDeleteRetrieveRequestOpts( + requestParameters: StagesUserDeleteRetrieveRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesUserDeleteRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/user_delete/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * UserDeleteStage Viewset + */ + async stagesUserDeleteRetrieveRaw( + requestParameters: StagesUserDeleteRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesUserDeleteRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + UserDeleteStageFromJSON(jsonValue), + ); + } + + /** + * UserDeleteStage Viewset + */ + async stagesUserDeleteRetrieve( + requestParameters: StagesUserDeleteRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesUserDeleteRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesUserDeleteUpdate without sending the request + */ + async stagesUserDeleteUpdateRequestOpts( + requestParameters: StagesUserDeleteUpdateRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesUserDeleteUpdate().', + ); + } + + if (requestParameters["userDeleteStageRequest"] == null) { + throw new runtime.RequiredError( + "userDeleteStageRequest", + 'Required parameter "userDeleteStageRequest" was null or undefined when calling stagesUserDeleteUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/user_delete/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: UserDeleteStageRequestToJSON(requestParameters["userDeleteStageRequest"]), + }; + } + + /** + * UserDeleteStage Viewset + */ + async stagesUserDeleteUpdateRaw( + requestParameters: StagesUserDeleteUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesUserDeleteUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + UserDeleteStageFromJSON(jsonValue), + ); + } + + /** + * UserDeleteStage Viewset + */ + async stagesUserDeleteUpdate( + requestParameters: StagesUserDeleteUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesUserDeleteUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesUserDeleteUsedByList without sending the request + */ + async stagesUserDeleteUsedByListRequestOpts( + requestParameters: StagesUserDeleteUsedByListRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesUserDeleteUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/user_delete/{stage_uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async stagesUserDeleteUsedByListRaw( + requestParameters: StagesUserDeleteUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.stagesUserDeleteUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async stagesUserDeleteUsedByList( + requestParameters: StagesUserDeleteUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.stagesUserDeleteUsedByListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesUserLoginCreate without sending the request + */ + async stagesUserLoginCreateRequestOpts( + requestParameters: StagesUserLoginCreateRequest, + ): Promise { + if (requestParameters["userLoginStageRequest"] == null) { + throw new runtime.RequiredError( + "userLoginStageRequest", + 'Required parameter "userLoginStageRequest" was null or undefined when calling stagesUserLoginCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/user_login/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: UserLoginStageRequestToJSON(requestParameters["userLoginStageRequest"]), + }; + } + + /** + * UserLoginStage Viewset + */ + async stagesUserLoginCreateRaw( + requestParameters: StagesUserLoginCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesUserLoginCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + UserLoginStageFromJSON(jsonValue), + ); + } + + /** + * UserLoginStage Viewset + */ + async stagesUserLoginCreate( + requestParameters: StagesUserLoginCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesUserLoginCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesUserLoginDestroy without sending the request + */ + async stagesUserLoginDestroyRequestOpts( + requestParameters: StagesUserLoginDestroyRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesUserLoginDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/user_login/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * UserLoginStage Viewset + */ + async stagesUserLoginDestroyRaw( + requestParameters: StagesUserLoginDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesUserLoginDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * UserLoginStage Viewset + */ + async stagesUserLoginDestroy( + requestParameters: StagesUserLoginDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.stagesUserLoginDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for stagesUserLoginList without sending the request + */ + async stagesUserLoginListRequestOpts( + requestParameters: StagesUserLoginListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["geoipBinding"] != null) { + queryParameters["geoip_binding"] = requestParameters["geoipBinding"]; + } + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["networkBinding"] != null) { + queryParameters["network_binding"] = requestParameters["networkBinding"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["rememberDevice"] != null) { + queryParameters["remember_device"] = requestParameters["rememberDevice"]; + } + + if (requestParameters["rememberMeOffset"] != null) { + queryParameters["remember_me_offset"] = requestParameters["rememberMeOffset"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["sessionDuration"] != null) { + queryParameters["session_duration"] = requestParameters["sessionDuration"]; + } + + if (requestParameters["stageUuid"] != null) { + queryParameters["stage_uuid"] = requestParameters["stageUuid"]; + } + + if (requestParameters["terminateOtherSessions"] != null) { + queryParameters["terminate_other_sessions"] = + requestParameters["terminateOtherSessions"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/user_login/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * UserLoginStage Viewset + */ + async stagesUserLoginListRaw( + requestParameters: StagesUserLoginListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesUserLoginListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedUserLoginStageListFromJSON(jsonValue), + ); + } + + /** + * UserLoginStage Viewset + */ + async stagesUserLoginList( + requestParameters: StagesUserLoginListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesUserLoginListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesUserLoginPartialUpdate without sending the request + */ + async stagesUserLoginPartialUpdateRequestOpts( + requestParameters: StagesUserLoginPartialUpdateRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesUserLoginPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/user_login/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedUserLoginStageRequestToJSON( + requestParameters["patchedUserLoginStageRequest"], + ), + }; + } + + /** + * UserLoginStage Viewset + */ + async stagesUserLoginPartialUpdateRaw( + requestParameters: StagesUserLoginPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.stagesUserLoginPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + UserLoginStageFromJSON(jsonValue), + ); + } + + /** + * UserLoginStage Viewset + */ + async stagesUserLoginPartialUpdate( + requestParameters: StagesUserLoginPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesUserLoginPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesUserLoginRetrieve without sending the request + */ + async stagesUserLoginRetrieveRequestOpts( + requestParameters: StagesUserLoginRetrieveRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesUserLoginRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/user_login/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * UserLoginStage Viewset + */ + async stagesUserLoginRetrieveRaw( + requestParameters: StagesUserLoginRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesUserLoginRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + UserLoginStageFromJSON(jsonValue), + ); + } + + /** + * UserLoginStage Viewset + */ + async stagesUserLoginRetrieve( + requestParameters: StagesUserLoginRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesUserLoginRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesUserLoginUpdate without sending the request + */ + async stagesUserLoginUpdateRequestOpts( + requestParameters: StagesUserLoginUpdateRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesUserLoginUpdate().', + ); + } + + if (requestParameters["userLoginStageRequest"] == null) { + throw new runtime.RequiredError( + "userLoginStageRequest", + 'Required parameter "userLoginStageRequest" was null or undefined when calling stagesUserLoginUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/user_login/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: UserLoginStageRequestToJSON(requestParameters["userLoginStageRequest"]), + }; + } + + /** + * UserLoginStage Viewset + */ + async stagesUserLoginUpdateRaw( + requestParameters: StagesUserLoginUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesUserLoginUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + UserLoginStageFromJSON(jsonValue), + ); + } + + /** + * UserLoginStage Viewset + */ + async stagesUserLoginUpdate( + requestParameters: StagesUserLoginUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesUserLoginUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesUserLoginUsedByList without sending the request + */ + async stagesUserLoginUsedByListRequestOpts( + requestParameters: StagesUserLoginUsedByListRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesUserLoginUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/user_login/{stage_uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async stagesUserLoginUsedByListRaw( + requestParameters: StagesUserLoginUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.stagesUserLoginUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async stagesUserLoginUsedByList( + requestParameters: StagesUserLoginUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.stagesUserLoginUsedByListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesUserLogoutCreate without sending the request + */ + async stagesUserLogoutCreateRequestOpts( + requestParameters: StagesUserLogoutCreateRequest, + ): Promise { + if (requestParameters["userLogoutStageRequest"] == null) { + throw new runtime.RequiredError( + "userLogoutStageRequest", + 'Required parameter "userLogoutStageRequest" was null or undefined when calling stagesUserLogoutCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/user_logout/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: UserLogoutStageRequestToJSON(requestParameters["userLogoutStageRequest"]), + }; + } + + /** + * UserLogoutStage Viewset + */ + async stagesUserLogoutCreateRaw( + requestParameters: StagesUserLogoutCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesUserLogoutCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + UserLogoutStageFromJSON(jsonValue), + ); + } + + /** + * UserLogoutStage Viewset + */ + async stagesUserLogoutCreate( + requestParameters: StagesUserLogoutCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesUserLogoutCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesUserLogoutDestroy without sending the request + */ + async stagesUserLogoutDestroyRequestOpts( + requestParameters: StagesUserLogoutDestroyRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesUserLogoutDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/user_logout/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * UserLogoutStage Viewset + */ + async stagesUserLogoutDestroyRaw( + requestParameters: StagesUserLogoutDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesUserLogoutDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * UserLogoutStage Viewset + */ + async stagesUserLogoutDestroy( + requestParameters: StagesUserLogoutDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.stagesUserLogoutDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for stagesUserLogoutList without sending the request + */ + async stagesUserLogoutListRequestOpts( + requestParameters: StagesUserLogoutListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["stageUuid"] != null) { + queryParameters["stage_uuid"] = requestParameters["stageUuid"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/user_logout/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * UserLogoutStage Viewset + */ + async stagesUserLogoutListRaw( + requestParameters: StagesUserLogoutListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesUserLogoutListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedUserLogoutStageListFromJSON(jsonValue), + ); + } + + /** + * UserLogoutStage Viewset + */ + async stagesUserLogoutList( + requestParameters: StagesUserLogoutListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesUserLogoutListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesUserLogoutPartialUpdate without sending the request + */ + async stagesUserLogoutPartialUpdateRequestOpts( + requestParameters: StagesUserLogoutPartialUpdateRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesUserLogoutPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/user_logout/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedUserLogoutStageRequestToJSON( + requestParameters["patchedUserLogoutStageRequest"], + ), + }; + } + + /** + * UserLogoutStage Viewset + */ + async stagesUserLogoutPartialUpdateRaw( + requestParameters: StagesUserLogoutPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.stagesUserLogoutPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + UserLogoutStageFromJSON(jsonValue), + ); + } + + /** + * UserLogoutStage Viewset + */ + async stagesUserLogoutPartialUpdate( + requestParameters: StagesUserLogoutPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesUserLogoutPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesUserLogoutRetrieve without sending the request + */ + async stagesUserLogoutRetrieveRequestOpts( + requestParameters: StagesUserLogoutRetrieveRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesUserLogoutRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/user_logout/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * UserLogoutStage Viewset + */ + async stagesUserLogoutRetrieveRaw( + requestParameters: StagesUserLogoutRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesUserLogoutRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + UserLogoutStageFromJSON(jsonValue), + ); + } + + /** + * UserLogoutStage Viewset + */ + async stagesUserLogoutRetrieve( + requestParameters: StagesUserLogoutRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesUserLogoutRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesUserLogoutUpdate without sending the request + */ + async stagesUserLogoutUpdateRequestOpts( + requestParameters: StagesUserLogoutUpdateRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesUserLogoutUpdate().', + ); + } + + if (requestParameters["userLogoutStageRequest"] == null) { + throw new runtime.RequiredError( + "userLogoutStageRequest", + 'Required parameter "userLogoutStageRequest" was null or undefined when calling stagesUserLogoutUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/user_logout/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: UserLogoutStageRequestToJSON(requestParameters["userLogoutStageRequest"]), + }; + } + + /** + * UserLogoutStage Viewset + */ + async stagesUserLogoutUpdateRaw( + requestParameters: StagesUserLogoutUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesUserLogoutUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + UserLogoutStageFromJSON(jsonValue), + ); + } + + /** + * UserLogoutStage Viewset + */ + async stagesUserLogoutUpdate( + requestParameters: StagesUserLogoutUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesUserLogoutUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesUserLogoutUsedByList without sending the request + */ + async stagesUserLogoutUsedByListRequestOpts( + requestParameters: StagesUserLogoutUsedByListRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesUserLogoutUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/user_logout/{stage_uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async stagesUserLogoutUsedByListRaw( + requestParameters: StagesUserLogoutUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.stagesUserLogoutUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async stagesUserLogoutUsedByList( + requestParameters: StagesUserLogoutUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.stagesUserLogoutUsedByListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesUserWriteCreate without sending the request + */ + async stagesUserWriteCreateRequestOpts( + requestParameters: StagesUserWriteCreateRequest, + ): Promise { + if (requestParameters["userWriteStageRequest"] == null) { + throw new runtime.RequiredError( + "userWriteStageRequest", + 'Required parameter "userWriteStageRequest" was null or undefined when calling stagesUserWriteCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/user_write/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: UserWriteStageRequestToJSON(requestParameters["userWriteStageRequest"]), + }; + } + + /** + * UserWriteStage Viewset + */ + async stagesUserWriteCreateRaw( + requestParameters: StagesUserWriteCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesUserWriteCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + UserWriteStageFromJSON(jsonValue), + ); + } + + /** + * UserWriteStage Viewset + */ + async stagesUserWriteCreate( + requestParameters: StagesUserWriteCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesUserWriteCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesUserWriteDestroy without sending the request + */ + async stagesUserWriteDestroyRequestOpts( + requestParameters: StagesUserWriteDestroyRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesUserWriteDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/user_write/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * UserWriteStage Viewset + */ + async stagesUserWriteDestroyRaw( + requestParameters: StagesUserWriteDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesUserWriteDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * UserWriteStage Viewset + */ + async stagesUserWriteDestroy( + requestParameters: StagesUserWriteDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.stagesUserWriteDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for stagesUserWriteList without sending the request + */ + async stagesUserWriteListRequestOpts( + requestParameters: StagesUserWriteListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["createUsersAsInactive"] != null) { + queryParameters["create_users_as_inactive"] = + requestParameters["createUsersAsInactive"]; + } + + if (requestParameters["createUsersGroup"] != null) { + queryParameters["create_users_group"] = requestParameters["createUsersGroup"]; + } + + if (requestParameters["name"] != null) { + queryParameters["name"] = requestParameters["name"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["stageUuid"] != null) { + queryParameters["stage_uuid"] = requestParameters["stageUuid"]; + } + + if (requestParameters["userCreationMode"] != null) { + queryParameters["user_creation_mode"] = requestParameters["userCreationMode"]; + } + + if (requestParameters["userPathTemplate"] != null) { + queryParameters["user_path_template"] = requestParameters["userPathTemplate"]; + } + + if (requestParameters["userType"] != null) { + queryParameters["user_type"] = requestParameters["userType"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/user_write/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * UserWriteStage Viewset + */ + async stagesUserWriteListRaw( + requestParameters: StagesUserWriteListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesUserWriteListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedUserWriteStageListFromJSON(jsonValue), + ); + } + + /** + * UserWriteStage Viewset + */ + async stagesUserWriteList( + requestParameters: StagesUserWriteListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesUserWriteListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesUserWritePartialUpdate without sending the request + */ + async stagesUserWritePartialUpdateRequestOpts( + requestParameters: StagesUserWritePartialUpdateRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesUserWritePartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/user_write/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedUserWriteStageRequestToJSON( + requestParameters["patchedUserWriteStageRequest"], + ), + }; + } + + /** + * UserWriteStage Viewset + */ + async stagesUserWritePartialUpdateRaw( + requestParameters: StagesUserWritePartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.stagesUserWritePartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + UserWriteStageFromJSON(jsonValue), + ); + } + + /** + * UserWriteStage Viewset + */ + async stagesUserWritePartialUpdate( + requestParameters: StagesUserWritePartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesUserWritePartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for stagesUserWriteRetrieve without sending the request + */ + async stagesUserWriteRetrieveRequestOpts( + requestParameters: StagesUserWriteRetrieveRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesUserWriteRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/user_write/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * UserWriteStage Viewset + */ + async stagesUserWriteRetrieveRaw( + requestParameters: StagesUserWriteRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesUserWriteRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + UserWriteStageFromJSON(jsonValue), + ); + } + + /** + * UserWriteStage Viewset + */ + async stagesUserWriteRetrieve( + requestParameters: StagesUserWriteRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesUserWriteRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesUserWriteUpdate without sending the request + */ + async stagesUserWriteUpdateRequestOpts( + requestParameters: StagesUserWriteUpdateRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesUserWriteUpdate().', + ); + } + + if (requestParameters["userWriteStageRequest"] == null) { + throw new runtime.RequiredError( + "userWriteStageRequest", + 'Required parameter "userWriteStageRequest" was null or undefined when calling stagesUserWriteUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/user_write/{stage_uuid}/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: UserWriteStageRequestToJSON(requestParameters["userWriteStageRequest"]), + }; + } + + /** + * UserWriteStage Viewset + */ + async stagesUserWriteUpdateRaw( + requestParameters: StagesUserWriteUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.stagesUserWriteUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + UserWriteStageFromJSON(jsonValue), + ); + } + + /** + * UserWriteStage Viewset + */ + async stagesUserWriteUpdate( + requestParameters: StagesUserWriteUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.stagesUserWriteUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for stagesUserWriteUsedByList without sending the request + */ + async stagesUserWriteUsedByListRequestOpts( + requestParameters: StagesUserWriteUsedByListRequest, + ): Promise { + if (requestParameters["stageUuid"] == null) { + throw new runtime.RequiredError( + "stageUuid", + 'Required parameter "stageUuid" was null or undefined when calling stagesUserWriteUsedByList().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/stages/user_write/{stage_uuid}/used_by/`; + urlPath = urlPath.replace( + `{${"stage_uuid"}}`, + encodeURIComponent(String(requestParameters["stageUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get a list of all objects that use this object + */ + async stagesUserWriteUsedByListRaw( + requestParameters: StagesUserWriteUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.stagesUserWriteUsedByListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON)); + } + + /** + * Get a list of all objects that use this object + */ + async stagesUserWriteUsedByList( + requestParameters: StagesUserWriteUsedByListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.stagesUserWriteUsedByListRaw(requestParameters, initOverrides); + return await response.value(); + } +} diff --git a/packages/client-ts/src/apis/TasksApi.ts b/packages/client-ts/src/apis/TasksApi.ts new file mode 100644 index 0000000000..0dc0bfaf0f --- /dev/null +++ b/packages/client-ts/src/apis/TasksApi.ts @@ -0,0 +1,772 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { + GlobalTaskStatus, + PaginatedScheduleList, + PaginatedTaskList, + PatchedScheduleRequest, + Schedule, + ScheduleRequest, + Task, + TaskAggregatedStatusEnum, + TaskStatusEnum, + Worker, +} from "../models/index"; +import { + GlobalTaskStatusFromJSON, + PaginatedScheduleListFromJSON, + PaginatedTaskListFromJSON, + PatchedScheduleRequestToJSON, + ScheduleFromJSON, + ScheduleRequestToJSON, + TaskFromJSON, + WorkerFromJSON, +} from "../models/index"; +import * as runtime from "../runtime"; + +export interface TasksSchedulesListRequest { + actorName?: string; + ordering?: string; + page?: number; + pageSize?: number; + paused?: boolean; + relObjContentTypeAppLabel?: string; + relObjContentTypeModel?: string; + relObjId?: string; + relObjIdIsnull?: boolean; + search?: string; +} + +export interface TasksSchedulesPartialUpdateRequest { + id: string; + patchedScheduleRequest?: PatchedScheduleRequest; +} + +export interface TasksSchedulesRetrieveRequest { + id: string; +} + +export interface TasksSchedulesSendCreateRequest { + id: string; +} + +export interface TasksSchedulesUpdateRequest { + id: string; + scheduleRequest: ScheduleRequest; +} + +export interface TasksTasksListRequest { + actorName?: string; + aggregatedStatus?: Array; + ordering?: string; + page?: number; + pageSize?: number; + queueName?: string; + relObjContentTypeAppLabel?: string; + relObjContentTypeModel?: string; + relObjId?: string; + relObjIdIsnull?: boolean; + search?: string; + state?: TaskStatusEnum; +} + +export interface TasksTasksRetrieveRequest { + messageId: string; +} + +export interface TasksTasksRetryCreateRequest { + messageId: string; +} + +/** + * + */ +export class TasksApi extends runtime.BaseAPI { + /** + * Creates request options for tasksSchedulesList without sending the request + */ + async tasksSchedulesListRequestOpts( + requestParameters: TasksSchedulesListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["actorName"] != null) { + queryParameters["actor_name"] = requestParameters["actorName"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["paused"] != null) { + queryParameters["paused"] = requestParameters["paused"]; + } + + if (requestParameters["relObjContentTypeAppLabel"] != null) { + queryParameters["rel_obj_content_type__app_label"] = + requestParameters["relObjContentTypeAppLabel"]; + } + + if (requestParameters["relObjContentTypeModel"] != null) { + queryParameters["rel_obj_content_type__model"] = + requestParameters["relObjContentTypeModel"]; + } + + if (requestParameters["relObjId"] != null) { + queryParameters["rel_obj_id"] = requestParameters["relObjId"]; + } + + if (requestParameters["relObjIdIsnull"] != null) { + queryParameters["rel_obj_id__isnull"] = requestParameters["relObjIdIsnull"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/tasks/schedules/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + */ + async tasksSchedulesListRaw( + requestParameters: TasksSchedulesListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.tasksSchedulesListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedScheduleListFromJSON(jsonValue), + ); + } + + /** + */ + async tasksSchedulesList( + requestParameters: TasksSchedulesListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.tasksSchedulesListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for tasksSchedulesPartialUpdate without sending the request + */ + async tasksSchedulesPartialUpdateRequestOpts( + requestParameters: TasksSchedulesPartialUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling tasksSchedulesPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/tasks/schedules/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedScheduleRequestToJSON(requestParameters["patchedScheduleRequest"]), + }; + } + + /** + */ + async tasksSchedulesPartialUpdateRaw( + requestParameters: TasksSchedulesPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.tasksSchedulesPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => ScheduleFromJSON(jsonValue)); + } + + /** + */ + async tasksSchedulesPartialUpdate( + requestParameters: TasksSchedulesPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.tasksSchedulesPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for tasksSchedulesRetrieve without sending the request + */ + async tasksSchedulesRetrieveRequestOpts( + requestParameters: TasksSchedulesRetrieveRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling tasksSchedulesRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/tasks/schedules/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + */ + async tasksSchedulesRetrieveRaw( + requestParameters: TasksSchedulesRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.tasksSchedulesRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => ScheduleFromJSON(jsonValue)); + } + + /** + */ + async tasksSchedulesRetrieve( + requestParameters: TasksSchedulesRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.tasksSchedulesRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for tasksSchedulesSendCreate without sending the request + */ + async tasksSchedulesSendCreateRequestOpts( + requestParameters: TasksSchedulesSendCreateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling tasksSchedulesSendCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/tasks/schedules/{id}/send/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Trigger this schedule now + */ + async tasksSchedulesSendCreateRaw( + requestParameters: TasksSchedulesSendCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.tasksSchedulesSendCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Trigger this schedule now + */ + async tasksSchedulesSendCreate( + requestParameters: TasksSchedulesSendCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.tasksSchedulesSendCreateRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for tasksSchedulesUpdate without sending the request + */ + async tasksSchedulesUpdateRequestOpts( + requestParameters: TasksSchedulesUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling tasksSchedulesUpdate().', + ); + } + + if (requestParameters["scheduleRequest"] == null) { + throw new runtime.RequiredError( + "scheduleRequest", + 'Required parameter "scheduleRequest" was null or undefined when calling tasksSchedulesUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/tasks/schedules/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: ScheduleRequestToJSON(requestParameters["scheduleRequest"]), + }; + } + + /** + */ + async tasksSchedulesUpdateRaw( + requestParameters: TasksSchedulesUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.tasksSchedulesUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => ScheduleFromJSON(jsonValue)); + } + + /** + */ + async tasksSchedulesUpdate( + requestParameters: TasksSchedulesUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.tasksSchedulesUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for tasksTasksList without sending the request + */ + async tasksTasksListRequestOpts( + requestParameters: TasksTasksListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["actorName"] != null) { + queryParameters["actor_name"] = requestParameters["actorName"]; + } + + if (requestParameters["aggregatedStatus"] != null) { + queryParameters["aggregated_status"] = requestParameters["aggregatedStatus"]; + } + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["queueName"] != null) { + queryParameters["queue_name"] = requestParameters["queueName"]; + } + + if (requestParameters["relObjContentTypeAppLabel"] != null) { + queryParameters["rel_obj_content_type__app_label"] = + requestParameters["relObjContentTypeAppLabel"]; + } + + if (requestParameters["relObjContentTypeModel"] != null) { + queryParameters["rel_obj_content_type__model"] = + requestParameters["relObjContentTypeModel"]; + } + + if (requestParameters["relObjId"] != null) { + queryParameters["rel_obj_id"] = requestParameters["relObjId"]; + } + + if (requestParameters["relObjIdIsnull"] != null) { + queryParameters["rel_obj_id__isnull"] = requestParameters["relObjIdIsnull"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + if (requestParameters["state"] != null) { + queryParameters["state"] = requestParameters["state"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/tasks/tasks/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + */ + async tasksTasksListRaw( + requestParameters: TasksTasksListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.tasksTasksListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedTaskListFromJSON(jsonValue), + ); + } + + /** + */ + async tasksTasksList( + requestParameters: TasksTasksListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.tasksTasksListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for tasksTasksRetrieve without sending the request + */ + async tasksTasksRetrieveRequestOpts( + requestParameters: TasksTasksRetrieveRequest, + ): Promise { + if (requestParameters["messageId"] == null) { + throw new runtime.RequiredError( + "messageId", + 'Required parameter "messageId" was null or undefined when calling tasksTasksRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/tasks/tasks/{message_id}/`; + urlPath = urlPath.replace( + `{${"message_id"}}`, + encodeURIComponent(String(requestParameters["messageId"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + */ + async tasksTasksRetrieveRaw( + requestParameters: TasksTasksRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.tasksTasksRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => TaskFromJSON(jsonValue)); + } + + /** + */ + async tasksTasksRetrieve( + requestParameters: TasksTasksRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.tasksTasksRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for tasksTasksRetryCreate without sending the request + */ + async tasksTasksRetryCreateRequestOpts( + requestParameters: TasksTasksRetryCreateRequest, + ): Promise { + if (requestParameters["messageId"] == null) { + throw new runtime.RequiredError( + "messageId", + 'Required parameter "messageId" was null or undefined when calling tasksTasksRetryCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/tasks/tasks/{message_id}/retry/`; + urlPath = urlPath.replace( + `{${"message_id"}}`, + encodeURIComponent(String(requestParameters["messageId"])), + ); + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Retry task + */ + async tasksTasksRetryCreateRaw( + requestParameters: TasksTasksRetryCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.tasksTasksRetryCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Retry task + */ + async tasksTasksRetryCreate( + requestParameters: TasksTasksRetryCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.tasksTasksRetryCreateRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for tasksTasksStatusRetrieve without sending the request + */ + async tasksTasksStatusRetrieveRequestOpts(): Promise { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/tasks/tasks/status/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Global status summary for all tasks + */ + async tasksTasksStatusRetrieveRaw( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.tasksTasksStatusRetrieveRequestOpts(); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + GlobalTaskStatusFromJSON(jsonValue), + ); + } + + /** + * Global status summary for all tasks + */ + async tasksTasksStatusRetrieve( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.tasksTasksStatusRetrieveRaw(initOverrides); + return await response.value(); + } + + /** + * Creates request options for tasksWorkersList without sending the request + */ + async tasksWorkersListRequestOpts(): Promise { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("authentik", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/tasks/workers/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Get currently connected worker count. + */ + async tasksWorkersListRaw( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise>> { + const requestOptions = await this.tasksWorkersListRequestOpts(); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(WorkerFromJSON)); + } + + /** + * Get currently connected worker count. + */ + async tasksWorkersList( + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const response = await this.tasksWorkersListRaw(initOverrides); + return await response.value(); + } +} diff --git a/packages/client-ts/src/apis/TenantsApi.ts b/packages/client-ts/src/apis/TenantsApi.ts new file mode 100644 index 0000000000..d897b558c5 --- /dev/null +++ b/packages/client-ts/src/apis/TenantsApi.ts @@ -0,0 +1,944 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { + Domain, + DomainRequest, + PaginatedDomainList, + PaginatedTenantList, + PatchedDomainRequest, + PatchedTenantRequest, + Tenant, + TenantAdminGroupRequestRequest, + TenantRecoveryKeyRequestRequest, + TenantRecoveryKeyResponse, + TenantRequest, +} from "../models/index"; +import { + DomainFromJSON, + DomainRequestToJSON, + PaginatedDomainListFromJSON, + PaginatedTenantListFromJSON, + PatchedDomainRequestToJSON, + PatchedTenantRequestToJSON, + TenantAdminGroupRequestRequestToJSON, + TenantFromJSON, + TenantRecoveryKeyRequestRequestToJSON, + TenantRecoveryKeyResponseFromJSON, + TenantRequestToJSON, +} from "../models/index"; +import * as runtime from "../runtime"; + +export interface TenantsDomainsCreateRequest { + domainRequest: DomainRequest; +} + +export interface TenantsDomainsDestroyRequest { + id: number; +} + +export interface TenantsDomainsListRequest { + ordering?: string; + page?: number; + pageSize?: number; + search?: string; +} + +export interface TenantsDomainsPartialUpdateRequest { + id: number; + patchedDomainRequest?: PatchedDomainRequest; +} + +export interface TenantsDomainsRetrieveRequest { + id: number; +} + +export interface TenantsDomainsUpdateRequest { + id: number; + domainRequest: DomainRequest; +} + +export interface TenantsTenantsCreateRequest { + tenantRequest: TenantRequest; +} + +export interface TenantsTenantsCreateAdminGroupCreateRequest { + tenantUuid: string; + tenantAdminGroupRequestRequest: TenantAdminGroupRequestRequest; +} + +export interface TenantsTenantsCreateRecoveryKeyCreateRequest { + tenantUuid: string; + tenantRecoveryKeyRequestRequest: TenantRecoveryKeyRequestRequest; +} + +export interface TenantsTenantsDestroyRequest { + tenantUuid: string; +} + +export interface TenantsTenantsListRequest { + ordering?: string; + page?: number; + pageSize?: number; + search?: string; +} + +export interface TenantsTenantsPartialUpdateRequest { + tenantUuid: string; + patchedTenantRequest?: PatchedTenantRequest; +} + +export interface TenantsTenantsRetrieveRequest { + tenantUuid: string; +} + +export interface TenantsTenantsUpdateRequest { + tenantUuid: string; + tenantRequest: TenantRequest; +} + +/** + * + */ +export class TenantsApi extends runtime.BaseAPI { + /** + * Creates request options for tenantsDomainsCreate without sending the request + */ + async tenantsDomainsCreateRequestOpts( + requestParameters: TenantsDomainsCreateRequest, + ): Promise { + if (requestParameters["domainRequest"] == null) { + throw new runtime.RequiredError( + "domainRequest", + 'Required parameter "domainRequest" was null or undefined when calling tenantsDomainsCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + let urlPath = `/tenants/domains/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: DomainRequestToJSON(requestParameters["domainRequest"]), + }; + } + + /** + * Domain ViewSet + */ + async tenantsDomainsCreateRaw( + requestParameters: TenantsDomainsCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.tenantsDomainsCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => DomainFromJSON(jsonValue)); + } + + /** + * Domain ViewSet + */ + async tenantsDomainsCreate( + requestParameters: TenantsDomainsCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.tenantsDomainsCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for tenantsDomainsDestroy without sending the request + */ + async tenantsDomainsDestroyRequestOpts( + requestParameters: TenantsDomainsDestroyRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling tenantsDomainsDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + let urlPath = `/tenants/domains/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Domain ViewSet + */ + async tenantsDomainsDestroyRaw( + requestParameters: TenantsDomainsDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.tenantsDomainsDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Domain ViewSet + */ + async tenantsDomainsDestroy( + requestParameters: TenantsDomainsDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.tenantsDomainsDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for tenantsDomainsList without sending the request + */ + async tenantsDomainsListRequestOpts( + requestParameters: TenantsDomainsListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + let urlPath = `/tenants/domains/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Domain ViewSet + */ + async tenantsDomainsListRaw( + requestParameters: TenantsDomainsListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.tenantsDomainsListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedDomainListFromJSON(jsonValue), + ); + } + + /** + * Domain ViewSet + */ + async tenantsDomainsList( + requestParameters: TenantsDomainsListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.tenantsDomainsListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for tenantsDomainsPartialUpdate without sending the request + */ + async tenantsDomainsPartialUpdateRequestOpts( + requestParameters: TenantsDomainsPartialUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling tenantsDomainsPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + let urlPath = `/tenants/domains/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedDomainRequestToJSON(requestParameters["patchedDomainRequest"]), + }; + } + + /** + * Domain ViewSet + */ + async tenantsDomainsPartialUpdateRaw( + requestParameters: TenantsDomainsPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.tenantsDomainsPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => DomainFromJSON(jsonValue)); + } + + /** + * Domain ViewSet + */ + async tenantsDomainsPartialUpdate( + requestParameters: TenantsDomainsPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.tenantsDomainsPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for tenantsDomainsRetrieve without sending the request + */ + async tenantsDomainsRetrieveRequestOpts( + requestParameters: TenantsDomainsRetrieveRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling tenantsDomainsRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + let urlPath = `/tenants/domains/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Domain ViewSet + */ + async tenantsDomainsRetrieveRaw( + requestParameters: TenantsDomainsRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.tenantsDomainsRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => DomainFromJSON(jsonValue)); + } + + /** + * Domain ViewSet + */ + async tenantsDomainsRetrieve( + requestParameters: TenantsDomainsRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.tenantsDomainsRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for tenantsDomainsUpdate without sending the request + */ + async tenantsDomainsUpdateRequestOpts( + requestParameters: TenantsDomainsUpdateRequest, + ): Promise { + if (requestParameters["id"] == null) { + throw new runtime.RequiredError( + "id", + 'Required parameter "id" was null or undefined when calling tenantsDomainsUpdate().', + ); + } + + if (requestParameters["domainRequest"] == null) { + throw new runtime.RequiredError( + "domainRequest", + 'Required parameter "domainRequest" was null or undefined when calling tenantsDomainsUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + let urlPath = `/tenants/domains/{id}/`; + urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters["id"]))); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: DomainRequestToJSON(requestParameters["domainRequest"]), + }; + } + + /** + * Domain ViewSet + */ + async tenantsDomainsUpdateRaw( + requestParameters: TenantsDomainsUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.tenantsDomainsUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => DomainFromJSON(jsonValue)); + } + + /** + * Domain ViewSet + */ + async tenantsDomainsUpdate( + requestParameters: TenantsDomainsUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.tenantsDomainsUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for tenantsTenantsCreate without sending the request + */ + async tenantsTenantsCreateRequestOpts( + requestParameters: TenantsTenantsCreateRequest, + ): Promise { + if (requestParameters["tenantRequest"] == null) { + throw new runtime.RequiredError( + "tenantRequest", + 'Required parameter "tenantRequest" was null or undefined when calling tenantsTenantsCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + let urlPath = `/tenants/tenants/`; + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: TenantRequestToJSON(requestParameters["tenantRequest"]), + }; + } + + /** + * Tenant Viewset + */ + async tenantsTenantsCreateRaw( + requestParameters: TenantsTenantsCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.tenantsTenantsCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => TenantFromJSON(jsonValue)); + } + + /** + * Tenant Viewset + */ + async tenantsTenantsCreate( + requestParameters: TenantsTenantsCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.tenantsTenantsCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for tenantsTenantsCreateAdminGroupCreate without sending the request + */ + async tenantsTenantsCreateAdminGroupCreateRequestOpts( + requestParameters: TenantsTenantsCreateAdminGroupCreateRequest, + ): Promise { + if (requestParameters["tenantUuid"] == null) { + throw new runtime.RequiredError( + "tenantUuid", + 'Required parameter "tenantUuid" was null or undefined when calling tenantsTenantsCreateAdminGroupCreate().', + ); + } + + if (requestParameters["tenantAdminGroupRequestRequest"] == null) { + throw new runtime.RequiredError( + "tenantAdminGroupRequestRequest", + 'Required parameter "tenantAdminGroupRequestRequest" was null or undefined when calling tenantsTenantsCreateAdminGroupCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + let urlPath = `/tenants/tenants/{tenant_uuid}/create_admin_group/`; + urlPath = urlPath.replace( + `{${"tenant_uuid"}}`, + encodeURIComponent(String(requestParameters["tenantUuid"])), + ); + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: TenantAdminGroupRequestRequestToJSON( + requestParameters["tenantAdminGroupRequestRequest"], + ), + }; + } + + /** + * Create admin group and add user to it. + */ + async tenantsTenantsCreateAdminGroupCreateRaw( + requestParameters: TenantsTenantsCreateAdminGroupCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.tenantsTenantsCreateAdminGroupCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Create admin group and add user to it. + */ + async tenantsTenantsCreateAdminGroupCreate( + requestParameters: TenantsTenantsCreateAdminGroupCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.tenantsTenantsCreateAdminGroupCreateRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for tenantsTenantsCreateRecoveryKeyCreate without sending the request + */ + async tenantsTenantsCreateRecoveryKeyCreateRequestOpts( + requestParameters: TenantsTenantsCreateRecoveryKeyCreateRequest, + ): Promise { + if (requestParameters["tenantUuid"] == null) { + throw new runtime.RequiredError( + "tenantUuid", + 'Required parameter "tenantUuid" was null or undefined when calling tenantsTenantsCreateRecoveryKeyCreate().', + ); + } + + if (requestParameters["tenantRecoveryKeyRequestRequest"] == null) { + throw new runtime.RequiredError( + "tenantRecoveryKeyRequestRequest", + 'Required parameter "tenantRecoveryKeyRequestRequest" was null or undefined when calling tenantsTenantsCreateRecoveryKeyCreate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + let urlPath = `/tenants/tenants/{tenant_uuid}/create_recovery_key/`; + urlPath = urlPath.replace( + `{${"tenant_uuid"}}`, + encodeURIComponent(String(requestParameters["tenantUuid"])), + ); + + return { + path: urlPath, + method: "POST", + headers: headerParameters, + query: queryParameters, + body: TenantRecoveryKeyRequestRequestToJSON( + requestParameters["tenantRecoveryKeyRequestRequest"], + ), + }; + } + + /** + * Create recovery key for user. + */ + async tenantsTenantsCreateRecoveryKeyCreateRaw( + requestParameters: TenantsTenantsCreateRecoveryKeyCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = + await this.tenantsTenantsCreateRecoveryKeyCreateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + TenantRecoveryKeyResponseFromJSON(jsonValue), + ); + } + + /** + * Create recovery key for user. + */ + async tenantsTenantsCreateRecoveryKeyCreate( + requestParameters: TenantsTenantsCreateRecoveryKeyCreateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.tenantsTenantsCreateRecoveryKeyCreateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for tenantsTenantsDestroy without sending the request + */ + async tenantsTenantsDestroyRequestOpts( + requestParameters: TenantsTenantsDestroyRequest, + ): Promise { + if (requestParameters["tenantUuid"] == null) { + throw new runtime.RequiredError( + "tenantUuid", + 'Required parameter "tenantUuid" was null or undefined when calling tenantsTenantsDestroy().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + let urlPath = `/tenants/tenants/{tenant_uuid}/`; + urlPath = urlPath.replace( + `{${"tenant_uuid"}}`, + encodeURIComponent(String(requestParameters["tenantUuid"])), + ); + + return { + path: urlPath, + method: "DELETE", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Tenant Viewset + */ + async tenantsTenantsDestroyRaw( + requestParameters: TenantsTenantsDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.tenantsTenantsDestroyRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Tenant Viewset + */ + async tenantsTenantsDestroy( + requestParameters: TenantsTenantsDestroyRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + await this.tenantsTenantsDestroyRaw(requestParameters, initOverrides); + } + + /** + * Creates request options for tenantsTenantsList without sending the request + */ + async tenantsTenantsListRequestOpts( + requestParameters: TenantsTenantsListRequest, + ): Promise { + const queryParameters: any = {}; + + if (requestParameters["ordering"] != null) { + queryParameters["ordering"] = requestParameters["ordering"]; + } + + if (requestParameters["page"] != null) { + queryParameters["page"] = requestParameters["page"]; + } + + if (requestParameters["pageSize"] != null) { + queryParameters["page_size"] = requestParameters["pageSize"]; + } + + if (requestParameters["search"] != null) { + queryParameters["search"] = requestParameters["search"]; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + let urlPath = `/tenants/tenants/`; + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Tenant Viewset + */ + async tenantsTenantsListRaw( + requestParameters: TenantsTenantsListRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.tenantsTenantsListRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => + PaginatedTenantListFromJSON(jsonValue), + ); + } + + /** + * Tenant Viewset + */ + async tenantsTenantsList( + requestParameters: TenantsTenantsListRequest = {}, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.tenantsTenantsListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for tenantsTenantsPartialUpdate without sending the request + */ + async tenantsTenantsPartialUpdateRequestOpts( + requestParameters: TenantsTenantsPartialUpdateRequest, + ): Promise { + if (requestParameters["tenantUuid"] == null) { + throw new runtime.RequiredError( + "tenantUuid", + 'Required parameter "tenantUuid" was null or undefined when calling tenantsTenantsPartialUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + let urlPath = `/tenants/tenants/{tenant_uuid}/`; + urlPath = urlPath.replace( + `{${"tenant_uuid"}}`, + encodeURIComponent(String(requestParameters["tenantUuid"])), + ); + + return { + path: urlPath, + method: "PATCH", + headers: headerParameters, + query: queryParameters, + body: PatchedTenantRequestToJSON(requestParameters["patchedTenantRequest"]), + }; + } + + /** + * Tenant Viewset + */ + async tenantsTenantsPartialUpdateRaw( + requestParameters: TenantsTenantsPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.tenantsTenantsPartialUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => TenantFromJSON(jsonValue)); + } + + /** + * Tenant Viewset + */ + async tenantsTenantsPartialUpdate( + requestParameters: TenantsTenantsPartialUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.tenantsTenantsPartialUpdateRaw( + requestParameters, + initOverrides, + ); + return await response.value(); + } + + /** + * Creates request options for tenantsTenantsRetrieve without sending the request + */ + async tenantsTenantsRetrieveRequestOpts( + requestParameters: TenantsTenantsRetrieveRequest, + ): Promise { + if (requestParameters["tenantUuid"] == null) { + throw new runtime.RequiredError( + "tenantUuid", + 'Required parameter "tenantUuid" was null or undefined when calling tenantsTenantsRetrieve().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + let urlPath = `/tenants/tenants/{tenant_uuid}/`; + urlPath = urlPath.replace( + `{${"tenant_uuid"}}`, + encodeURIComponent(String(requestParameters["tenantUuid"])), + ); + + return { + path: urlPath, + method: "GET", + headers: headerParameters, + query: queryParameters, + }; + } + + /** + * Tenant Viewset + */ + async tenantsTenantsRetrieveRaw( + requestParameters: TenantsTenantsRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.tenantsTenantsRetrieveRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => TenantFromJSON(jsonValue)); + } + + /** + * Tenant Viewset + */ + async tenantsTenantsRetrieve( + requestParameters: TenantsTenantsRetrieveRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.tenantsTenantsRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Creates request options for tenantsTenantsUpdate without sending the request + */ + async tenantsTenantsUpdateRequestOpts( + requestParameters: TenantsTenantsUpdateRequest, + ): Promise { + if (requestParameters["tenantUuid"] == null) { + throw new runtime.RequiredError( + "tenantUuid", + 'Required parameter "tenantUuid" was null or undefined when calling tenantsTenantsUpdate().', + ); + } + + if (requestParameters["tenantRequest"] == null) { + throw new runtime.RequiredError( + "tenantRequest", + 'Required parameter "tenantRequest" was null or undefined when calling tenantsTenantsUpdate().', + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters["Content-Type"] = "application/json"; + + let urlPath = `/tenants/tenants/{tenant_uuid}/`; + urlPath = urlPath.replace( + `{${"tenant_uuid"}}`, + encodeURIComponent(String(requestParameters["tenantUuid"])), + ); + + return { + path: urlPath, + method: "PUT", + headers: headerParameters, + query: queryParameters, + body: TenantRequestToJSON(requestParameters["tenantRequest"]), + }; + } + + /** + * Tenant Viewset + */ + async tenantsTenantsUpdateRaw( + requestParameters: TenantsTenantsUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise> { + const requestOptions = await this.tenantsTenantsUpdateRequestOpts(requestParameters); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => TenantFromJSON(jsonValue)); + } + + /** + * Tenant Viewset + */ + async tenantsTenantsUpdate( + requestParameters: TenantsTenantsUpdateRequest, + initOverrides?: RequestInit | runtime.InitOverrideFunction, + ): Promise { + const response = await this.tenantsTenantsUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } +} diff --git a/packages/client-ts/src/apis/index.ts b/packages/client-ts/src/apis/index.ts new file mode 100644 index 0000000000..c69bb4e9b7 --- /dev/null +++ b/packages/client-ts/src/apis/index.ts @@ -0,0 +1,27 @@ +/* tslint:disable */ +/* eslint-disable */ +export * from "./AdminApi"; +export * from "./AuthenticatorsApi"; +export * from "./CoreApi"; +export * from "./CryptoApi"; +export * from "./EndpointsApi"; +export * from "./EnterpriseApi"; +export * from "./EventsApi"; +export * from "./FlowsApi"; +export * from "./LifecycleApi"; +export * from "./ManagedApi"; +export * from "./Oauth2Api"; +export * from "./OutpostsApi"; +export * from "./PoliciesApi"; +export * from "./PropertymappingsApi"; +export * from "./ProvidersApi"; +export * from "./RacApi"; +export * from "./RbacApi"; +export * from "./ReportsApi"; +export * from "./RootApi"; +export * from "./SchemaApi"; +export * from "./SourcesApi"; +export * from "./SsfApi"; +export * from "./StagesApi"; +export * from "./TasksApi"; +export * from "./TenantsApi"; diff --git a/packages/client-ts/src/index.ts b/packages/client-ts/src/index.ts new file mode 100644 index 0000000000..ee2637724a --- /dev/null +++ b/packages/client-ts/src/index.ts @@ -0,0 +1,5 @@ +/* tslint:disable */ +/* eslint-disable */ +export * from "./runtime"; +export * from "./apis/index"; +export * from "./models/index"; diff --git a/packages/client-ts/src/models/AccessDeniedChallenge.ts b/packages/client-ts/src/models/AccessDeniedChallenge.ts new file mode 100644 index 0000000000..4025970b83 --- /dev/null +++ b/packages/client-ts/src/models/AccessDeniedChallenge.ts @@ -0,0 +1,114 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { ContextualFlowInfo } from "./ContextualFlowInfo"; +import { ContextualFlowInfoFromJSON, ContextualFlowInfoToJSON } from "./ContextualFlowInfo"; +import type { ErrorDetail } from "./ErrorDetail"; + +/** + * Challenge when a flow's active stage calls `stage_invalid()`. + * @export + * @interface AccessDeniedChallenge + */ +export interface AccessDeniedChallenge { + /** + * + * @type {ContextualFlowInfo} + * @memberof AccessDeniedChallenge + */ + flowInfo?: ContextualFlowInfo; + /** + * + * @type {string} + * @memberof AccessDeniedChallenge + */ + component?: string; + /** + * + * @type {{ [key: string]: Array; }} + * @memberof AccessDeniedChallenge + */ + responseErrors?: { [key: string]: Array }; + /** + * + * @type {string} + * @memberof AccessDeniedChallenge + */ + pendingUser: string; + /** + * + * @type {string} + * @memberof AccessDeniedChallenge + */ + pendingUserAvatar: string; + /** + * + * @type {string} + * @memberof AccessDeniedChallenge + */ + errorMessage?: string; +} + +/** + * Check if a given object implements the AccessDeniedChallenge interface. + */ +export function instanceOfAccessDeniedChallenge(value: object): value is AccessDeniedChallenge { + if (!("pendingUser" in value) || value["pendingUser"] === undefined) return false; + if (!("pendingUserAvatar" in value) || value["pendingUserAvatar"] === undefined) return false; + return true; +} + +export function AccessDeniedChallengeFromJSON(json: any): AccessDeniedChallenge { + return AccessDeniedChallengeFromJSONTyped(json, false); +} + +export function AccessDeniedChallengeFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): AccessDeniedChallenge { + if (json == null) { + return json; + } + return { + flowInfo: + json["flow_info"] == null ? undefined : ContextualFlowInfoFromJSON(json["flow_info"]), + component: json["component"] == null ? undefined : json["component"], + responseErrors: json["response_errors"] == null ? undefined : json["response_errors"], + pendingUser: json["pending_user"], + pendingUserAvatar: json["pending_user_avatar"], + errorMessage: json["error_message"] == null ? undefined : json["error_message"], + }; +} + +export function AccessDeniedChallengeToJSON(json: any): AccessDeniedChallenge { + return AccessDeniedChallengeToJSONTyped(json, false); +} + +export function AccessDeniedChallengeToJSONTyped( + value?: AccessDeniedChallenge | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + flow_info: ContextualFlowInfoToJSON(value["flowInfo"]), + component: value["component"], + response_errors: value["responseErrors"], + pending_user: value["pendingUser"], + pending_user_avatar: value["pendingUserAvatar"], + error_message: value["errorMessage"], + }; +} diff --git a/packages/client-ts/src/models/AccountLockdownStage.ts b/packages/client-ts/src/models/AccountLockdownStage.ts new file mode 100644 index 0000000000..729afc7bcc --- /dev/null +++ b/packages/client-ts/src/models/AccountLockdownStage.ts @@ -0,0 +1,166 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { FlowSet } from "./FlowSet"; +import { FlowSetFromJSON } from "./FlowSet"; + +/** + * AccountLockdownStage Serializer + * @export + * @interface AccountLockdownStage + */ +export interface AccountLockdownStage { + /** + * + * @type {string} + * @memberof AccountLockdownStage + */ + readonly pk: string; + /** + * + * @type {string} + * @memberof AccountLockdownStage + */ + name: string; + /** + * Get object type so that we know how to edit the object + * @type {string} + * @memberof AccountLockdownStage + */ + readonly component: string; + /** + * Return object's verbose_name + * @type {string} + * @memberof AccountLockdownStage + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof AccountLockdownStage + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof AccountLockdownStage + */ + readonly metaModelName: string; + /** + * + * @type {Array} + * @memberof AccountLockdownStage + */ + readonly flowSet: Array; + /** + * Deactivate the user account (set is_active to False) + * @type {boolean} + * @memberof AccountLockdownStage + */ + deactivateUser?: boolean; + /** + * Set an unusable password for the user + * @type {boolean} + * @memberof AccountLockdownStage + */ + setUnusablePassword?: boolean; + /** + * Delete all active sessions for the user + * @type {boolean} + * @memberof AccountLockdownStage + */ + deleteSessions?: boolean; + /** + * Revoke all tokens for the user (API, app password, recovery, verification, OAuth) + * @type {boolean} + * @memberof AccountLockdownStage + */ + revokeTokens?: boolean; + /** + * Flow to redirect users to after self-service lockdown. This flow should not require authentication since the user's session is deleted. + * @type {string} + * @memberof AccountLockdownStage + */ + selfServiceCompletionFlow?: string | null; +} + +/** + * Check if a given object implements the AccountLockdownStage interface. + */ +export function instanceOfAccountLockdownStage(value: object): value is AccountLockdownStage { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + if (!("flowSet" in value) || value["flowSet"] === undefined) return false; + return true; +} + +export function AccountLockdownStageFromJSON(json: any): AccountLockdownStage { + return AccountLockdownStageFromJSONTyped(json, false); +} + +export function AccountLockdownStageFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): AccountLockdownStage { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + component: json["component"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + flowSet: (json["flow_set"] as Array).map(FlowSetFromJSON), + deactivateUser: json["deactivate_user"] == null ? undefined : json["deactivate_user"], + setUnusablePassword: + json["set_unusable_password"] == null ? undefined : json["set_unusable_password"], + deleteSessions: json["delete_sessions"] == null ? undefined : json["delete_sessions"], + revokeTokens: json["revoke_tokens"] == null ? undefined : json["revoke_tokens"], + selfServiceCompletionFlow: + json["self_service_completion_flow"] == null + ? undefined + : json["self_service_completion_flow"], + }; +} + +export function AccountLockdownStageToJSON(json: any): AccountLockdownStage { + return AccountLockdownStageToJSONTyped(json, false); +} + +export function AccountLockdownStageToJSONTyped( + value?: Omit< + AccountLockdownStage, + "pk" | "component" | "verbose_name" | "verbose_name_plural" | "meta_model_name" | "flow_set" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + deactivate_user: value["deactivateUser"], + set_unusable_password: value["setUnusablePassword"], + delete_sessions: value["deleteSessions"], + revoke_tokens: value["revokeTokens"], + self_service_completion_flow: value["selfServiceCompletionFlow"], + }; +} diff --git a/packages/client-ts/src/models/AccountLockdownStageRequest.ts b/packages/client-ts/src/models/AccountLockdownStageRequest.ts new file mode 100644 index 0000000000..230f28d8ed --- /dev/null +++ b/packages/client-ts/src/models/AccountLockdownStageRequest.ts @@ -0,0 +1,114 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * AccountLockdownStage Serializer + * @export + * @interface AccountLockdownStageRequest + */ +export interface AccountLockdownStageRequest { + /** + * + * @type {string} + * @memberof AccountLockdownStageRequest + */ + name: string; + /** + * Deactivate the user account (set is_active to False) + * @type {boolean} + * @memberof AccountLockdownStageRequest + */ + deactivateUser?: boolean; + /** + * Set an unusable password for the user + * @type {boolean} + * @memberof AccountLockdownStageRequest + */ + setUnusablePassword?: boolean; + /** + * Delete all active sessions for the user + * @type {boolean} + * @memberof AccountLockdownStageRequest + */ + deleteSessions?: boolean; + /** + * Revoke all tokens for the user (API, app password, recovery, verification, OAuth) + * @type {boolean} + * @memberof AccountLockdownStageRequest + */ + revokeTokens?: boolean; + /** + * Flow to redirect users to after self-service lockdown. This flow should not require authentication since the user's session is deleted. + * @type {string} + * @memberof AccountLockdownStageRequest + */ + selfServiceCompletionFlow?: string | null; +} + +/** + * Check if a given object implements the AccountLockdownStageRequest interface. + */ +export function instanceOfAccountLockdownStageRequest( + value: object, +): value is AccountLockdownStageRequest { + if (!("name" in value) || value["name"] === undefined) return false; + return true; +} + +export function AccountLockdownStageRequestFromJSON(json: any): AccountLockdownStageRequest { + return AccountLockdownStageRequestFromJSONTyped(json, false); +} + +export function AccountLockdownStageRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): AccountLockdownStageRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + deactivateUser: json["deactivate_user"] == null ? undefined : json["deactivate_user"], + setUnusablePassword: + json["set_unusable_password"] == null ? undefined : json["set_unusable_password"], + deleteSessions: json["delete_sessions"] == null ? undefined : json["delete_sessions"], + revokeTokens: json["revoke_tokens"] == null ? undefined : json["revoke_tokens"], + selfServiceCompletionFlow: + json["self_service_completion_flow"] == null + ? undefined + : json["self_service_completion_flow"], + }; +} + +export function AccountLockdownStageRequestToJSON(json: any): AccountLockdownStageRequest { + return AccountLockdownStageRequestToJSONTyped(json, false); +} + +export function AccountLockdownStageRequestToJSONTyped( + value?: AccountLockdownStageRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + deactivate_user: value["deactivateUser"], + set_unusable_password: value["setUnusablePassword"], + delete_sessions: value["deleteSessions"], + revoke_tokens: value["revokeTokens"], + self_service_completion_flow: value["selfServiceCompletionFlow"], + }; +} diff --git a/packages/client-ts/src/models/AgentAuthenticationResponse.ts b/packages/client-ts/src/models/AgentAuthenticationResponse.ts new file mode 100644 index 0000000000..a7549a6d8b --- /dev/null +++ b/packages/client-ts/src/models/AgentAuthenticationResponse.ts @@ -0,0 +1,70 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Base serializer class which doesn't implement create/update methods + * @export + * @interface AgentAuthenticationResponse + */ +export interface AgentAuthenticationResponse { + /** + * + * @type {string} + * @memberof AgentAuthenticationResponse + */ + url: string; +} + +/** + * Check if a given object implements the AgentAuthenticationResponse interface. + */ +export function instanceOfAgentAuthenticationResponse( + value: object, +): value is AgentAuthenticationResponse { + if (!("url" in value) || value["url"] === undefined) return false; + return true; +} + +export function AgentAuthenticationResponseFromJSON(json: any): AgentAuthenticationResponse { + return AgentAuthenticationResponseFromJSONTyped(json, false); +} + +export function AgentAuthenticationResponseFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): AgentAuthenticationResponse { + if (json == null) { + return json; + } + return { + url: json["url"], + }; +} + +export function AgentAuthenticationResponseToJSON(json: any): AgentAuthenticationResponse { + return AgentAuthenticationResponseToJSONTyped(json, false); +} + +export function AgentAuthenticationResponseToJSONTyped( + value?: AgentAuthenticationResponse | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + url: value["url"], + }; +} diff --git a/packages/client-ts/src/models/AgentConfig.ts b/packages/client-ts/src/models/AgentConfig.ts new file mode 100644 index 0000000000..443efdd50b --- /dev/null +++ b/packages/client-ts/src/models/AgentConfig.ts @@ -0,0 +1,157 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Config } from "./Config"; +import { ConfigFromJSON } from "./Config"; +import type { LicenseStatusEnum } from "./LicenseStatusEnum"; +import { LicenseStatusEnumFromJSON } from "./LicenseStatusEnum"; + +/** + * Base serializer class which doesn't implement create/update methods + * @export + * @interface AgentConfig + */ +export interface AgentConfig { + /** + * + * @type {string} + * @memberof AgentConfig + */ + readonly deviceId: string; + /** + * + * @type {number} + * @memberof AgentConfig + */ + readonly refreshInterval: number; + /** + * + * @type {string} + * @memberof AgentConfig + */ + readonly authorizationFlow: string | null; + /** + * + * @type {{ [key: string]: any; }} + * @memberof AgentConfig + */ + readonly jwksAuth: { [key: string]: any }; + /** + * + * @type {{ [key: string]: any; }} + * @memberof AgentConfig + */ + readonly jwksChallenge: { [key: string]: any } | null; + /** + * + * @type {number} + * @memberof AgentConfig + */ + nssUidOffset: number; + /** + * + * @type {number} + * @memberof AgentConfig + */ + nssGidOffset: number; + /** + * + * @type {boolean} + * @memberof AgentConfig + */ + authTerminateSessionOnExpiry: boolean; + /** + * + * @type {Config} + * @memberof AgentConfig + */ + readonly systemConfig: Config; + /** + * + * @type {LicenseStatusEnum} + * @memberof AgentConfig + */ + readonly licenseStatus: LicenseStatusEnum | null; +} + +/** + * Check if a given object implements the AgentConfig interface. + */ +export function instanceOfAgentConfig(value: object): value is AgentConfig { + if (!("deviceId" in value) || value["deviceId"] === undefined) return false; + if (!("refreshInterval" in value) || value["refreshInterval"] === undefined) return false; + if (!("authorizationFlow" in value) || value["authorizationFlow"] === undefined) return false; + if (!("jwksAuth" in value) || value["jwksAuth"] === undefined) return false; + if (!("jwksChallenge" in value) || value["jwksChallenge"] === undefined) return false; + if (!("nssUidOffset" in value) || value["nssUidOffset"] === undefined) return false; + if (!("nssGidOffset" in value) || value["nssGidOffset"] === undefined) return false; + if ( + !("authTerminateSessionOnExpiry" in value) || + value["authTerminateSessionOnExpiry"] === undefined + ) + return false; + if (!("systemConfig" in value) || value["systemConfig"] === undefined) return false; + if (!("licenseStatus" in value) || value["licenseStatus"] === undefined) return false; + return true; +} + +export function AgentConfigFromJSON(json: any): AgentConfig { + return AgentConfigFromJSONTyped(json, false); +} + +export function AgentConfigFromJSONTyped(json: any, ignoreDiscriminator: boolean): AgentConfig { + if (json == null) { + return json; + } + return { + deviceId: json["device_id"], + refreshInterval: json["refresh_interval"], + authorizationFlow: json["authorization_flow"], + jwksAuth: json["jwks_auth"], + jwksChallenge: json["jwks_challenge"], + nssUidOffset: json["nss_uid_offset"], + nssGidOffset: json["nss_gid_offset"], + authTerminateSessionOnExpiry: json["auth_terminate_session_on_expiry"], + systemConfig: ConfigFromJSON(json["system_config"]), + licenseStatus: LicenseStatusEnumFromJSON(json["license_status"]), + }; +} + +export function AgentConfigToJSON(json: any): AgentConfig { + return AgentConfigToJSONTyped(json, false); +} + +export function AgentConfigToJSONTyped( + value?: Omit< + AgentConfig, + | "device_id" + | "refresh_interval" + | "authorization_flow" + | "jwks_auth" + | "jwks_challenge" + | "system_config" + | "license_status" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + nss_uid_offset: value["nssUidOffset"], + nss_gid_offset: value["nssGidOffset"], + auth_terminate_session_on_expiry: value["authTerminateSessionOnExpiry"], + }; +} diff --git a/packages/client-ts/src/models/AgentConnector.ts b/packages/client-ts/src/models/AgentConnector.ts new file mode 100644 index 0000000000..4fdcaffa68 --- /dev/null +++ b/packages/client-ts/src/models/AgentConnector.ts @@ -0,0 +1,217 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + * @interface AgentConnector + */ +export interface AgentConnector { + /** + * + * @type {string} + * @memberof AgentConnector + */ + connectorUuid?: string; + /** + * + * @type {string} + * @memberof AgentConnector + */ + name: string; + /** + * + * @type {boolean} + * @memberof AgentConnector + */ + enabled?: boolean; + /** + * Get object component so that we know how to edit the object + * @type {string} + * @memberof AgentConnector + */ + readonly component: string; + /** + * Return object's verbose_name + * @type {string} + * @memberof AgentConnector + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof AgentConnector + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof AgentConnector + */ + readonly metaModelName: string; + /** + * + * @type {string} + * @memberof AgentConnector + */ + snapshotExpiry?: string; + /** + * + * @type {string} + * @memberof AgentConnector + */ + authSessionDuration?: string; + /** + * + * @type {boolean} + * @memberof AgentConnector + */ + authTerminateSessionOnExpiry?: boolean; + /** + * + * @type {string} + * @memberof AgentConnector + */ + refreshInterval?: string; + /** + * + * @type {string} + * @memberof AgentConnector + */ + authorizationFlow?: string | null; + /** + * + * @type {number} + * @memberof AgentConnector + */ + nssUidOffset?: number; + /** + * + * @type {number} + * @memberof AgentConnector + */ + nssGidOffset?: number; + /** + * + * @type {string} + * @memberof AgentConnector + */ + challengeKey?: string | null; + /** + * + * @type {string} + * @memberof AgentConnector + */ + challengeIdleTimeout?: string; + /** + * + * @type {boolean} + * @memberof AgentConnector + */ + challengeTriggerCheckIn?: boolean; + /** + * + * @type {Array} + * @memberof AgentConnector + */ + jwtFederationProviders?: Array; +} + +/** + * Check if a given object implements the AgentConnector interface. + */ +export function instanceOfAgentConnector(value: object): value is AgentConnector { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + return true; +} + +export function AgentConnectorFromJSON(json: any): AgentConnector { + return AgentConnectorFromJSONTyped(json, false); +} + +export function AgentConnectorFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): AgentConnector { + if (json == null) { + return json; + } + return { + connectorUuid: json["connector_uuid"] == null ? undefined : json["connector_uuid"], + name: json["name"], + enabled: json["enabled"] == null ? undefined : json["enabled"], + component: json["component"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + snapshotExpiry: json["snapshot_expiry"] == null ? undefined : json["snapshot_expiry"], + authSessionDuration: + json["auth_session_duration"] == null ? undefined : json["auth_session_duration"], + authTerminateSessionOnExpiry: + json["auth_terminate_session_on_expiry"] == null + ? undefined + : json["auth_terminate_session_on_expiry"], + refreshInterval: json["refresh_interval"] == null ? undefined : json["refresh_interval"], + authorizationFlow: + json["authorization_flow"] == null ? undefined : json["authorization_flow"], + nssUidOffset: json["nss_uid_offset"] == null ? undefined : json["nss_uid_offset"], + nssGidOffset: json["nss_gid_offset"] == null ? undefined : json["nss_gid_offset"], + challengeKey: json["challenge_key"] == null ? undefined : json["challenge_key"], + challengeIdleTimeout: + json["challenge_idle_timeout"] == null ? undefined : json["challenge_idle_timeout"], + challengeTriggerCheckIn: + json["challenge_trigger_check_in"] == null + ? undefined + : json["challenge_trigger_check_in"], + jwtFederationProviders: + json["jwt_federation_providers"] == null ? undefined : json["jwt_federation_providers"], + }; +} + +export function AgentConnectorToJSON(json: any): AgentConnector { + return AgentConnectorToJSONTyped(json, false); +} + +export function AgentConnectorToJSONTyped( + value?: Omit< + AgentConnector, + "component" | "verbose_name" | "verbose_name_plural" | "meta_model_name" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + connector_uuid: value["connectorUuid"], + name: value["name"], + enabled: value["enabled"], + snapshot_expiry: value["snapshotExpiry"], + auth_session_duration: value["authSessionDuration"], + auth_terminate_session_on_expiry: value["authTerminateSessionOnExpiry"], + refresh_interval: value["refreshInterval"], + authorization_flow: value["authorizationFlow"], + nss_uid_offset: value["nssUidOffset"], + nss_gid_offset: value["nssGidOffset"], + challenge_key: value["challengeKey"], + challenge_idle_timeout: value["challengeIdleTimeout"], + challenge_trigger_check_in: value["challengeTriggerCheckIn"], + jwt_federation_providers: value["jwtFederationProviders"], + }; +} diff --git a/packages/client-ts/src/models/AgentConnectorRequest.ts b/packages/client-ts/src/models/AgentConnectorRequest.ts new file mode 100644 index 0000000000..d77e34dd01 --- /dev/null +++ b/packages/client-ts/src/models/AgentConnectorRequest.ts @@ -0,0 +1,182 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + * @interface AgentConnectorRequest + */ +export interface AgentConnectorRequest { + /** + * + * @type {string} + * @memberof AgentConnectorRequest + */ + connectorUuid?: string; + /** + * + * @type {string} + * @memberof AgentConnectorRequest + */ + name: string; + /** + * + * @type {boolean} + * @memberof AgentConnectorRequest + */ + enabled?: boolean; + /** + * + * @type {string} + * @memberof AgentConnectorRequest + */ + snapshotExpiry?: string; + /** + * + * @type {string} + * @memberof AgentConnectorRequest + */ + authSessionDuration?: string; + /** + * + * @type {boolean} + * @memberof AgentConnectorRequest + */ + authTerminateSessionOnExpiry?: boolean; + /** + * + * @type {string} + * @memberof AgentConnectorRequest + */ + refreshInterval?: string; + /** + * + * @type {string} + * @memberof AgentConnectorRequest + */ + authorizationFlow?: string | null; + /** + * + * @type {number} + * @memberof AgentConnectorRequest + */ + nssUidOffset?: number; + /** + * + * @type {number} + * @memberof AgentConnectorRequest + */ + nssGidOffset?: number; + /** + * + * @type {string} + * @memberof AgentConnectorRequest + */ + challengeKey?: string | null; + /** + * + * @type {string} + * @memberof AgentConnectorRequest + */ + challengeIdleTimeout?: string; + /** + * + * @type {boolean} + * @memberof AgentConnectorRequest + */ + challengeTriggerCheckIn?: boolean; + /** + * + * @type {Array} + * @memberof AgentConnectorRequest + */ + jwtFederationProviders?: Array; +} + +/** + * Check if a given object implements the AgentConnectorRequest interface. + */ +export function instanceOfAgentConnectorRequest(value: object): value is AgentConnectorRequest { + if (!("name" in value) || value["name"] === undefined) return false; + return true; +} + +export function AgentConnectorRequestFromJSON(json: any): AgentConnectorRequest { + return AgentConnectorRequestFromJSONTyped(json, false); +} + +export function AgentConnectorRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): AgentConnectorRequest { + if (json == null) { + return json; + } + return { + connectorUuid: json["connector_uuid"] == null ? undefined : json["connector_uuid"], + name: json["name"], + enabled: json["enabled"] == null ? undefined : json["enabled"], + snapshotExpiry: json["snapshot_expiry"] == null ? undefined : json["snapshot_expiry"], + authSessionDuration: + json["auth_session_duration"] == null ? undefined : json["auth_session_duration"], + authTerminateSessionOnExpiry: + json["auth_terminate_session_on_expiry"] == null + ? undefined + : json["auth_terminate_session_on_expiry"], + refreshInterval: json["refresh_interval"] == null ? undefined : json["refresh_interval"], + authorizationFlow: + json["authorization_flow"] == null ? undefined : json["authorization_flow"], + nssUidOffset: json["nss_uid_offset"] == null ? undefined : json["nss_uid_offset"], + nssGidOffset: json["nss_gid_offset"] == null ? undefined : json["nss_gid_offset"], + challengeKey: json["challenge_key"] == null ? undefined : json["challenge_key"], + challengeIdleTimeout: + json["challenge_idle_timeout"] == null ? undefined : json["challenge_idle_timeout"], + challengeTriggerCheckIn: + json["challenge_trigger_check_in"] == null + ? undefined + : json["challenge_trigger_check_in"], + jwtFederationProviders: + json["jwt_federation_providers"] == null ? undefined : json["jwt_federation_providers"], + }; +} + +export function AgentConnectorRequestToJSON(json: any): AgentConnectorRequest { + return AgentConnectorRequestToJSONTyped(json, false); +} + +export function AgentConnectorRequestToJSONTyped( + value?: AgentConnectorRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + connector_uuid: value["connectorUuid"], + name: value["name"], + enabled: value["enabled"], + snapshot_expiry: value["snapshotExpiry"], + auth_session_duration: value["authSessionDuration"], + auth_terminate_session_on_expiry: value["authTerminateSessionOnExpiry"], + refresh_interval: value["refreshInterval"], + authorization_flow: value["authorizationFlow"], + nss_uid_offset: value["nssUidOffset"], + nss_gid_offset: value["nssGidOffset"], + challenge_key: value["challengeKey"], + challenge_idle_timeout: value["challengeIdleTimeout"], + challenge_trigger_check_in: value["challengeTriggerCheckIn"], + jwt_federation_providers: value["jwtFederationProviders"], + }; +} diff --git a/packages/client-ts/src/models/AgentPSSODeviceRegistrationRequest.ts b/packages/client-ts/src/models/AgentPSSODeviceRegistrationRequest.ts new file mode 100644 index 0000000000..17f7ee2e0b --- /dev/null +++ b/packages/client-ts/src/models/AgentPSSODeviceRegistrationRequest.ts @@ -0,0 +1,102 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Register Apple device via Platform SSO + * @export + * @interface AgentPSSODeviceRegistrationRequest + */ +export interface AgentPSSODeviceRegistrationRequest { + /** + * + * @type {string} + * @memberof AgentPSSODeviceRegistrationRequest + */ + deviceSigningKey: string; + /** + * + * @type {string} + * @memberof AgentPSSODeviceRegistrationRequest + */ + deviceEncryptionKey: string; + /** + * + * @type {string} + * @memberof AgentPSSODeviceRegistrationRequest + */ + signKeyId: string; + /** + * + * @type {string} + * @memberof AgentPSSODeviceRegistrationRequest + */ + encKeyId: string; +} + +/** + * Check if a given object implements the AgentPSSODeviceRegistrationRequest interface. + */ +export function instanceOfAgentPSSODeviceRegistrationRequest( + value: object, +): value is AgentPSSODeviceRegistrationRequest { + if (!("deviceSigningKey" in value) || value["deviceSigningKey"] === undefined) return false; + if (!("deviceEncryptionKey" in value) || value["deviceEncryptionKey"] === undefined) + return false; + if (!("signKeyId" in value) || value["signKeyId"] === undefined) return false; + if (!("encKeyId" in value) || value["encKeyId"] === undefined) return false; + return true; +} + +export function AgentPSSODeviceRegistrationRequestFromJSON( + json: any, +): AgentPSSODeviceRegistrationRequest { + return AgentPSSODeviceRegistrationRequestFromJSONTyped(json, false); +} + +export function AgentPSSODeviceRegistrationRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): AgentPSSODeviceRegistrationRequest { + if (json == null) { + return json; + } + return { + deviceSigningKey: json["device_signing_key"], + deviceEncryptionKey: json["device_encryption_key"], + signKeyId: json["sign_key_id"], + encKeyId: json["enc_key_id"], + }; +} + +export function AgentPSSODeviceRegistrationRequestToJSON( + json: any, +): AgentPSSODeviceRegistrationRequest { + return AgentPSSODeviceRegistrationRequestToJSONTyped(json, false); +} + +export function AgentPSSODeviceRegistrationRequestToJSONTyped( + value?: AgentPSSODeviceRegistrationRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + device_signing_key: value["deviceSigningKey"], + device_encryption_key: value["deviceEncryptionKey"], + sign_key_id: value["signKeyId"], + enc_key_id: value["encKeyId"], + }; +} diff --git a/packages/client-ts/src/models/AgentPSSODeviceRegistrationResponse.ts b/packages/client-ts/src/models/AgentPSSODeviceRegistrationResponse.ts new file mode 100644 index 0000000000..e5432def62 --- /dev/null +++ b/packages/client-ts/src/models/AgentPSSODeviceRegistrationResponse.ts @@ -0,0 +1,119 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * authentik settings for Platform SSO tokens + * @export + * @interface AgentPSSODeviceRegistrationResponse + */ +export interface AgentPSSODeviceRegistrationResponse { + /** + * + * @type {string} + * @memberof AgentPSSODeviceRegistrationResponse + */ + clientId: string; + /** + * + * @type {string} + * @memberof AgentPSSODeviceRegistrationResponse + */ + issuer: string; + /** + * + * @type {string} + * @memberof AgentPSSODeviceRegistrationResponse + */ + tokenEndpoint: string; + /** + * + * @type {string} + * @memberof AgentPSSODeviceRegistrationResponse + */ + jwksEndpoint: string; + /** + * + * @type {string} + * @memberof AgentPSSODeviceRegistrationResponse + */ + audience: string; + /** + * + * @type {string} + * @memberof AgentPSSODeviceRegistrationResponse + */ + nonceEndpoint: string; +} + +/** + * Check if a given object implements the AgentPSSODeviceRegistrationResponse interface. + */ +export function instanceOfAgentPSSODeviceRegistrationResponse( + value: object, +): value is AgentPSSODeviceRegistrationResponse { + if (!("clientId" in value) || value["clientId"] === undefined) return false; + if (!("issuer" in value) || value["issuer"] === undefined) return false; + if (!("tokenEndpoint" in value) || value["tokenEndpoint"] === undefined) return false; + if (!("jwksEndpoint" in value) || value["jwksEndpoint"] === undefined) return false; + if (!("audience" in value) || value["audience"] === undefined) return false; + if (!("nonceEndpoint" in value) || value["nonceEndpoint"] === undefined) return false; + return true; +} + +export function AgentPSSODeviceRegistrationResponseFromJSON( + json: any, +): AgentPSSODeviceRegistrationResponse { + return AgentPSSODeviceRegistrationResponseFromJSONTyped(json, false); +} + +export function AgentPSSODeviceRegistrationResponseFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): AgentPSSODeviceRegistrationResponse { + if (json == null) { + return json; + } + return { + clientId: json["client_id"], + issuer: json["issuer"], + tokenEndpoint: json["token_endpoint"], + jwksEndpoint: json["jwks_endpoint"], + audience: json["audience"], + nonceEndpoint: json["nonce_endpoint"], + }; +} + +export function AgentPSSODeviceRegistrationResponseToJSON( + json: any, +): AgentPSSODeviceRegistrationResponse { + return AgentPSSODeviceRegistrationResponseToJSONTyped(json, false); +} + +export function AgentPSSODeviceRegistrationResponseToJSONTyped( + value?: AgentPSSODeviceRegistrationResponse | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + client_id: value["clientId"], + issuer: value["issuer"], + token_endpoint: value["tokenEndpoint"], + jwks_endpoint: value["jwksEndpoint"], + audience: value["audience"], + nonce_endpoint: value["nonceEndpoint"], + }; +} diff --git a/packages/client-ts/src/models/AgentPSSOUserRegistrationRequest.ts b/packages/client-ts/src/models/AgentPSSOUserRegistrationRequest.ts new file mode 100644 index 0000000000..374c04d376 --- /dev/null +++ b/packages/client-ts/src/models/AgentPSSOUserRegistrationRequest.ts @@ -0,0 +1,93 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Register Apple device user via Platform SSO + * @export + * @interface AgentPSSOUserRegistrationRequest + */ +export interface AgentPSSOUserRegistrationRequest { + /** + * + * @type {string} + * @memberof AgentPSSOUserRegistrationRequest + */ + userAuth: string; + /** + * + * @type {string} + * @memberof AgentPSSOUserRegistrationRequest + */ + userSecureEnclaveKey: string; + /** + * + * @type {string} + * @memberof AgentPSSOUserRegistrationRequest + */ + enclaveKeyId: string; +} + +/** + * Check if a given object implements the AgentPSSOUserRegistrationRequest interface. + */ +export function instanceOfAgentPSSOUserRegistrationRequest( + value: object, +): value is AgentPSSOUserRegistrationRequest { + if (!("userAuth" in value) || value["userAuth"] === undefined) return false; + if (!("userSecureEnclaveKey" in value) || value["userSecureEnclaveKey"] === undefined) + return false; + if (!("enclaveKeyId" in value) || value["enclaveKeyId"] === undefined) return false; + return true; +} + +export function AgentPSSOUserRegistrationRequestFromJSON( + json: any, +): AgentPSSOUserRegistrationRequest { + return AgentPSSOUserRegistrationRequestFromJSONTyped(json, false); +} + +export function AgentPSSOUserRegistrationRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): AgentPSSOUserRegistrationRequest { + if (json == null) { + return json; + } + return { + userAuth: json["user_auth"], + userSecureEnclaveKey: json["user_secure_enclave_key"], + enclaveKeyId: json["enclave_key_id"], + }; +} + +export function AgentPSSOUserRegistrationRequestToJSON( + json: any, +): AgentPSSOUserRegistrationRequest { + return AgentPSSOUserRegistrationRequestToJSONTyped(json, false); +} + +export function AgentPSSOUserRegistrationRequestToJSONTyped( + value?: AgentPSSOUserRegistrationRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + user_auth: value["userAuth"], + user_secure_enclave_key: value["userSecureEnclaveKey"], + enclave_key_id: value["enclaveKeyId"], + }; +} diff --git a/packages/client-ts/src/models/AgentTokenResponse.ts b/packages/client-ts/src/models/AgentTokenResponse.ts new file mode 100644 index 0000000000..51e924ac7a --- /dev/null +++ b/packages/client-ts/src/models/AgentTokenResponse.ts @@ -0,0 +1,76 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Base serializer class which doesn't implement create/update methods + * @export + * @interface AgentTokenResponse + */ +export interface AgentTokenResponse { + /** + * + * @type {string} + * @memberof AgentTokenResponse + */ + token: string; + /** + * + * @type {number} + * @memberof AgentTokenResponse + */ + expiresIn?: number; +} + +/** + * Check if a given object implements the AgentTokenResponse interface. + */ +export function instanceOfAgentTokenResponse(value: object): value is AgentTokenResponse { + if (!("token" in value) || value["token"] === undefined) return false; + return true; +} + +export function AgentTokenResponseFromJSON(json: any): AgentTokenResponse { + return AgentTokenResponseFromJSONTyped(json, false); +} + +export function AgentTokenResponseFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): AgentTokenResponse { + if (json == null) { + return json; + } + return { + token: json["token"], + expiresIn: json["expires_in"] == null ? undefined : json["expires_in"], + }; +} + +export function AgentTokenResponseToJSON(json: any): AgentTokenResponse { + return AgentTokenResponseToJSONTyped(json, false); +} + +export function AgentTokenResponseToJSONTyped( + value?: AgentTokenResponse | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + token: value["token"], + expires_in: value["expiresIn"], + }; +} diff --git a/packages/client-ts/src/models/AlgEnum.ts b/packages/client-ts/src/models/AlgEnum.ts new file mode 100644 index 0000000000..25be64d3ad --- /dev/null +++ b/packages/client-ts/src/models/AlgEnum.ts @@ -0,0 +1,53 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const AlgEnum = { + Rsa: "rsa", + Ecdsa: "ecdsa", + Ed25519: "ed25519", + Ed448: "ed448", + UnknownDefaultOpenApi: "11184809", +} as const; +export type AlgEnum = (typeof AlgEnum)[keyof typeof AlgEnum]; + +export function instanceOfAlgEnum(value: any): boolean { + for (const key in AlgEnum) { + if (Object.prototype.hasOwnProperty.call(AlgEnum, key)) { + if (AlgEnum[key as keyof typeof AlgEnum] === value) { + return true; + } + } + } + return false; +} + +export function AlgEnumFromJSON(json: any): AlgEnum { + return AlgEnumFromJSONTyped(json, false); +} + +export function AlgEnumFromJSONTyped(json: any, ignoreDiscriminator: boolean): AlgEnum { + return json as AlgEnum; +} + +export function AlgEnumToJSON(value?: AlgEnum | null): any { + return value as any; +} + +export function AlgEnumToJSONTyped(value: any, ignoreDiscriminator: boolean): AlgEnum { + return value as AlgEnum; +} diff --git a/packages/client-ts/src/models/App.ts b/packages/client-ts/src/models/App.ts new file mode 100644 index 0000000000..6d9a3a3ff2 --- /dev/null +++ b/packages/client-ts/src/models/App.ts @@ -0,0 +1,71 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Serialize Application info + * @export + * @interface App + */ +export interface App { + /** + * + * @type {string} + * @memberof App + */ + name: string; + /** + * + * @type {string} + * @memberof App + */ + label: string; +} + +/** + * Check if a given object implements the App interface. + */ +export function instanceOfApp(value: object): value is App { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("label" in value) || value["label"] === undefined) return false; + return true; +} + +export function AppFromJSON(json: any): App { + return AppFromJSONTyped(json, false); +} + +export function AppFromJSONTyped(json: any, ignoreDiscriminator: boolean): App { + if (json == null) { + return json; + } + return { + name: json["name"], + label: json["label"], + }; +} + +export function AppToJSON(json: any): App { + return AppToJSONTyped(json, false); +} + +export function AppToJSONTyped(value?: App | null, ignoreDiscriminator: boolean = false): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + label: value["label"], + }; +} diff --git a/packages/client-ts/src/models/AppEnum.ts b/packages/client-ts/src/models/AppEnum.ts new file mode 100644 index 0000000000..4223c49778 --- /dev/null +++ b/packages/client-ts/src/models/AppEnum.ts @@ -0,0 +1,131 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const AppEnum = { + AuthentikCommands: "authentik.commands", + AuthentikTenants: "authentik.tenants", + AuthentikTasks: "authentik.tasks", + AuthentikAdmin: "authentik.admin", + AuthentikApi: "authentik.api", + AuthentikCore: "authentik.core", + AuthentikCrypto: "authentik.crypto", + AuthentikEndpoints: "authentik.endpoints", + AuthentikEndpointsConnectorsAgent: "authentik.endpoints.connectors.agent", + AuthentikEnterprise: "authentik.enterprise", + AuthentikEvents: "authentik.events", + AuthentikAdminFiles: "authentik.admin.files", + AuthentikFlows: "authentik.flows", + AuthentikOutposts: "authentik.outposts", + AuthentikPoliciesDummy: "authentik.policies.dummy", + AuthentikPoliciesEventMatcher: "authentik.policies.event_matcher", + AuthentikPoliciesExpiry: "authentik.policies.expiry", + AuthentikPoliciesExpression: "authentik.policies.expression", + AuthentikPoliciesGeoip: "authentik.policies.geoip", + AuthentikPoliciesPassword: "authentik.policies.password", + AuthentikPoliciesReputation: "authentik.policies.reputation", + AuthentikPolicies: "authentik.policies", + AuthentikProvidersLdap: "authentik.providers.ldap", + AuthentikProvidersOauth2: "authentik.providers.oauth2", + AuthentikProvidersProxy: "authentik.providers.proxy", + AuthentikProvidersRac: "authentik.providers.rac", + AuthentikProvidersRadius: "authentik.providers.radius", + AuthentikProvidersSaml: "authentik.providers.saml", + AuthentikProvidersScim: "authentik.providers.scim", + AuthentikRbac: "authentik.rbac", + AuthentikRecovery: "authentik.recovery", + AuthentikSourcesKerberos: "authentik.sources.kerberos", + AuthentikSourcesLdap: "authentik.sources.ldap", + AuthentikSourcesOauth: "authentik.sources.oauth", + AuthentikSourcesPlex: "authentik.sources.plex", + AuthentikSourcesSaml: "authentik.sources.saml", + AuthentikSourcesScim: "authentik.sources.scim", + AuthentikSourcesTelegram: "authentik.sources.telegram", + AuthentikStagesAuthenticator: "authentik.stages.authenticator", + AuthentikStagesAuthenticatorDuo: "authentik.stages.authenticator_duo", + AuthentikStagesAuthenticatorEmail: "authentik.stages.authenticator_email", + AuthentikStagesAuthenticatorSms: "authentik.stages.authenticator_sms", + AuthentikStagesAuthenticatorStatic: "authentik.stages.authenticator_static", + AuthentikStagesAuthenticatorTotp: "authentik.stages.authenticator_totp", + AuthentikStagesAuthenticatorValidate: "authentik.stages.authenticator_validate", + AuthentikStagesAuthenticatorWebauthn: "authentik.stages.authenticator_webauthn", + AuthentikStagesCaptcha: "authentik.stages.captcha", + AuthentikStagesConsent: "authentik.stages.consent", + AuthentikStagesDeny: "authentik.stages.deny", + AuthentikStagesDummy: "authentik.stages.dummy", + AuthentikStagesEmail: "authentik.stages.email", + AuthentikStagesIdentification: "authentik.stages.identification", + AuthentikStagesInvitation: "authentik.stages.invitation", + AuthentikStagesPassword: "authentik.stages.password", + AuthentikStagesPrompt: "authentik.stages.prompt", + AuthentikStagesRedirect: "authentik.stages.redirect", + AuthentikStagesUserDelete: "authentik.stages.user_delete", + AuthentikStagesUserLogin: "authentik.stages.user_login", + AuthentikStagesUserLogout: "authentik.stages.user_logout", + AuthentikStagesUserWrite: "authentik.stages.user_write", + AuthentikTasksSchedules: "authentik.tasks.schedules", + AuthentikBrands: "authentik.brands", + AuthentikBlueprints: "authentik.blueprints", + AuthentikEnterpriseAudit: "authentik.enterprise.audit", + AuthentikEnterpriseEndpointsConnectorsAgent: "authentik.enterprise.endpoints.connectors.agent", + AuthentikEnterpriseEndpointsConnectorsFleet: "authentik.enterprise.endpoints.connectors.fleet", + AuthentikEnterpriseEndpointsConnectorsGoogleChrome: + "authentik.enterprise.endpoints.connectors.google_chrome", + AuthentikEnterpriseLifecycle: "authentik.enterprise.lifecycle", + AuthentikEnterprisePoliciesUniquePassword: "authentik.enterprise.policies.unique_password", + AuthentikEnterpriseProvidersGoogleWorkspace: "authentik.enterprise.providers.google_workspace", + AuthentikEnterpriseProvidersMicrosoftEntra: "authentik.enterprise.providers.microsoft_entra", + AuthentikEnterpriseProvidersRadius: "authentik.enterprise.providers.radius", + AuthentikEnterpriseProvidersScim: "authentik.enterprise.providers.scim", + AuthentikEnterpriseProvidersSsf: "authentik.enterprise.providers.ssf", + AuthentikEnterpriseProvidersWsFederation: "authentik.enterprise.providers.ws_federation", + AuthentikEnterpriseReports: "authentik.enterprise.reports", + AuthentikEnterpriseStagesAccountLockdown: "authentik.enterprise.stages.account_lockdown", + AuthentikEnterpriseStagesAuthenticatorEndpointGdtc: + "authentik.enterprise.stages.authenticator_endpoint_gdtc", + AuthentikEnterpriseStagesMtls: "authentik.enterprise.stages.mtls", + AuthentikEnterpriseStagesSource: "authentik.enterprise.stages.source", + UnknownDefaultOpenApi: "11184809", +} as const; +export type AppEnum = (typeof AppEnum)[keyof typeof AppEnum]; + +export function instanceOfAppEnum(value: any): boolean { + for (const key in AppEnum) { + if (Object.prototype.hasOwnProperty.call(AppEnum, key)) { + if (AppEnum[key as keyof typeof AppEnum] === value) { + return true; + } + } + } + return false; +} + +export function AppEnumFromJSON(json: any): AppEnum { + return AppEnumFromJSONTyped(json, false); +} + +export function AppEnumFromJSONTyped(json: any, ignoreDiscriminator: boolean): AppEnum { + return json as AppEnum; +} + +export function AppEnumToJSON(value?: AppEnum | null): any { + return value as any; +} + +export function AppEnumToJSONTyped(value: any, ignoreDiscriminator: boolean): AppEnum { + return value as AppEnum; +} diff --git a/packages/client-ts/src/models/AppleChallengeResponseRequest.ts b/packages/client-ts/src/models/AppleChallengeResponseRequest.ts new file mode 100644 index 0000000000..4d7eb4680c --- /dev/null +++ b/packages/client-ts/src/models/AppleChallengeResponseRequest.ts @@ -0,0 +1,69 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Pseudo class for apple response + * @export + * @interface AppleChallengeResponseRequest + */ +export interface AppleChallengeResponseRequest { + /** + * + * @type {string} + * @memberof AppleChallengeResponseRequest + */ + component?: string; +} + +/** + * Check if a given object implements the AppleChallengeResponseRequest interface. + */ +export function instanceOfAppleChallengeResponseRequest( + value: object, +): value is AppleChallengeResponseRequest { + return true; +} + +export function AppleChallengeResponseRequestFromJSON(json: any): AppleChallengeResponseRequest { + return AppleChallengeResponseRequestFromJSONTyped(json, false); +} + +export function AppleChallengeResponseRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): AppleChallengeResponseRequest { + if (json == null) { + return json; + } + return { + component: json["component"] == null ? undefined : json["component"], + }; +} + +export function AppleChallengeResponseRequestToJSON(json: any): AppleChallengeResponseRequest { + return AppleChallengeResponseRequestToJSONTyped(json, false); +} + +export function AppleChallengeResponseRequestToJSONTyped( + value?: AppleChallengeResponseRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + component: value["component"], + }; +} diff --git a/packages/client-ts/src/models/AppleIndependentSecureEnclave.ts b/packages/client-ts/src/models/AppleIndependentSecureEnclave.ts new file mode 100644 index 0000000000..a169f7be83 --- /dev/null +++ b/packages/client-ts/src/models/AppleIndependentSecureEnclave.ts @@ -0,0 +1,106 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + * @interface AppleIndependentSecureEnclave + */ +export interface AppleIndependentSecureEnclave { + /** + * + * @type {string} + * @memberof AppleIndependentSecureEnclave + */ + uuid?: string; + /** + * The user that this device belongs to. + * @type {number} + * @memberof AppleIndependentSecureEnclave + */ + user: number; + /** + * + * @type {string} + * @memberof AppleIndependentSecureEnclave + */ + appleSecureEnclaveKey: string; + /** + * + * @type {string} + * @memberof AppleIndependentSecureEnclave + */ + appleEnclaveKeyId: string; + /** + * + * @type {string} + * @memberof AppleIndependentSecureEnclave + */ + deviceType: string; +} + +/** + * Check if a given object implements the AppleIndependentSecureEnclave interface. + */ +export function instanceOfAppleIndependentSecureEnclave( + value: object, +): value is AppleIndependentSecureEnclave { + if (!("user" in value) || value["user"] === undefined) return false; + if (!("appleSecureEnclaveKey" in value) || value["appleSecureEnclaveKey"] === undefined) + return false; + if (!("appleEnclaveKeyId" in value) || value["appleEnclaveKeyId"] === undefined) return false; + if (!("deviceType" in value) || value["deviceType"] === undefined) return false; + return true; +} + +export function AppleIndependentSecureEnclaveFromJSON(json: any): AppleIndependentSecureEnclave { + return AppleIndependentSecureEnclaveFromJSONTyped(json, false); +} + +export function AppleIndependentSecureEnclaveFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): AppleIndependentSecureEnclave { + if (json == null) { + return json; + } + return { + uuid: json["uuid"] == null ? undefined : json["uuid"], + user: json["user"], + appleSecureEnclaveKey: json["apple_secure_enclave_key"], + appleEnclaveKeyId: json["apple_enclave_key_id"], + deviceType: json["device_type"], + }; +} + +export function AppleIndependentSecureEnclaveToJSON(json: any): AppleIndependentSecureEnclave { + return AppleIndependentSecureEnclaveToJSONTyped(json, false); +} + +export function AppleIndependentSecureEnclaveToJSONTyped( + value?: AppleIndependentSecureEnclave | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + uuid: value["uuid"], + user: value["user"], + apple_secure_enclave_key: value["appleSecureEnclaveKey"], + apple_enclave_key_id: value["appleEnclaveKeyId"], + device_type: value["deviceType"], + }; +} diff --git a/packages/client-ts/src/models/AppleIndependentSecureEnclaveRequest.ts b/packages/client-ts/src/models/AppleIndependentSecureEnclaveRequest.ts new file mode 100644 index 0000000000..b8e56367ba --- /dev/null +++ b/packages/client-ts/src/models/AppleIndependentSecureEnclaveRequest.ts @@ -0,0 +1,110 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + * @interface AppleIndependentSecureEnclaveRequest + */ +export interface AppleIndependentSecureEnclaveRequest { + /** + * + * @type {string} + * @memberof AppleIndependentSecureEnclaveRequest + */ + uuid?: string; + /** + * The user that this device belongs to. + * @type {number} + * @memberof AppleIndependentSecureEnclaveRequest + */ + user: number; + /** + * + * @type {string} + * @memberof AppleIndependentSecureEnclaveRequest + */ + appleSecureEnclaveKey: string; + /** + * + * @type {string} + * @memberof AppleIndependentSecureEnclaveRequest + */ + appleEnclaveKeyId: string; + /** + * + * @type {string} + * @memberof AppleIndependentSecureEnclaveRequest + */ + deviceType: string; +} + +/** + * Check if a given object implements the AppleIndependentSecureEnclaveRequest interface. + */ +export function instanceOfAppleIndependentSecureEnclaveRequest( + value: object, +): value is AppleIndependentSecureEnclaveRequest { + if (!("user" in value) || value["user"] === undefined) return false; + if (!("appleSecureEnclaveKey" in value) || value["appleSecureEnclaveKey"] === undefined) + return false; + if (!("appleEnclaveKeyId" in value) || value["appleEnclaveKeyId"] === undefined) return false; + if (!("deviceType" in value) || value["deviceType"] === undefined) return false; + return true; +} + +export function AppleIndependentSecureEnclaveRequestFromJSON( + json: any, +): AppleIndependentSecureEnclaveRequest { + return AppleIndependentSecureEnclaveRequestFromJSONTyped(json, false); +} + +export function AppleIndependentSecureEnclaveRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): AppleIndependentSecureEnclaveRequest { + if (json == null) { + return json; + } + return { + uuid: json["uuid"] == null ? undefined : json["uuid"], + user: json["user"], + appleSecureEnclaveKey: json["apple_secure_enclave_key"], + appleEnclaveKeyId: json["apple_enclave_key_id"], + deviceType: json["device_type"], + }; +} + +export function AppleIndependentSecureEnclaveRequestToJSON( + json: any, +): AppleIndependentSecureEnclaveRequest { + return AppleIndependentSecureEnclaveRequestToJSONTyped(json, false); +} + +export function AppleIndependentSecureEnclaveRequestToJSONTyped( + value?: AppleIndependentSecureEnclaveRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + uuid: value["uuid"], + user: value["user"], + apple_secure_enclave_key: value["appleSecureEnclaveKey"], + apple_enclave_key_id: value["appleEnclaveKeyId"], + device_type: value["deviceType"], + }; +} diff --git a/packages/client-ts/src/models/AppleLoginChallenge.ts b/packages/client-ts/src/models/AppleLoginChallenge.ts new file mode 100644 index 0000000000..dea21821ad --- /dev/null +++ b/packages/client-ts/src/models/AppleLoginChallenge.ts @@ -0,0 +1,124 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { ContextualFlowInfo } from "./ContextualFlowInfo"; +import { ContextualFlowInfoFromJSON, ContextualFlowInfoToJSON } from "./ContextualFlowInfo"; +import type { ErrorDetail } from "./ErrorDetail"; + +/** + * Special challenge for apple-native authentication flow, which happens on the client. + * @export + * @interface AppleLoginChallenge + */ +export interface AppleLoginChallenge { + /** + * + * @type {ContextualFlowInfo} + * @memberof AppleLoginChallenge + */ + flowInfo?: ContextualFlowInfo; + /** + * + * @type {string} + * @memberof AppleLoginChallenge + */ + component?: string; + /** + * + * @type {{ [key: string]: Array; }} + * @memberof AppleLoginChallenge + */ + responseErrors?: { [key: string]: Array }; + /** + * + * @type {string} + * @memberof AppleLoginChallenge + */ + clientId: string; + /** + * + * @type {string} + * @memberof AppleLoginChallenge + */ + scope: string; + /** + * + * @type {string} + * @memberof AppleLoginChallenge + */ + redirectUri: string; + /** + * + * @type {string} + * @memberof AppleLoginChallenge + */ + state: string; +} + +/** + * Check if a given object implements the AppleLoginChallenge interface. + */ +export function instanceOfAppleLoginChallenge(value: object): value is AppleLoginChallenge { + if (!("clientId" in value) || value["clientId"] === undefined) return false; + if (!("scope" in value) || value["scope"] === undefined) return false; + if (!("redirectUri" in value) || value["redirectUri"] === undefined) return false; + if (!("state" in value) || value["state"] === undefined) return false; + return true; +} + +export function AppleLoginChallengeFromJSON(json: any): AppleLoginChallenge { + return AppleLoginChallengeFromJSONTyped(json, false); +} + +export function AppleLoginChallengeFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): AppleLoginChallenge { + if (json == null) { + return json; + } + return { + flowInfo: + json["flow_info"] == null ? undefined : ContextualFlowInfoFromJSON(json["flow_info"]), + component: json["component"] == null ? undefined : json["component"], + responseErrors: json["response_errors"] == null ? undefined : json["response_errors"], + clientId: json["client_id"], + scope: json["scope"], + redirectUri: json["redirect_uri"], + state: json["state"], + }; +} + +export function AppleLoginChallengeToJSON(json: any): AppleLoginChallenge { + return AppleLoginChallengeToJSONTyped(json, false); +} + +export function AppleLoginChallengeToJSONTyped( + value?: AppleLoginChallenge | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + flow_info: ContextualFlowInfoToJSON(value["flowInfo"]), + component: value["component"], + response_errors: value["responseErrors"], + client_id: value["clientId"], + scope: value["scope"], + redirect_uri: value["redirectUri"], + state: value["state"], + }; +} diff --git a/packages/client-ts/src/models/Application.ts b/packages/client-ts/src/models/Application.ts new file mode 100644 index 0000000000..2ddedc5c69 --- /dev/null +++ b/packages/client-ts/src/models/Application.ts @@ -0,0 +1,224 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { PolicyEngineMode } from "./PolicyEngineMode"; +import { PolicyEngineModeFromJSON, PolicyEngineModeToJSON } from "./PolicyEngineMode"; +import type { Provider } from "./Provider"; +import { ProviderFromJSON } from "./Provider"; +import type { ThemedUrls } from "./ThemedUrls"; +import { ThemedUrlsFromJSON } from "./ThemedUrls"; + +/** + * Application Serializer + * @export + * @interface Application + */ +export interface Application { + /** + * + * @type {string} + * @memberof Application + */ + readonly pk: string; + /** + * Application's display Name. + * @type {string} + * @memberof Application + */ + name: string; + /** + * Internal application name, used in URLs. + * @type {string} + * @memberof Application + */ + slug: string; + /** + * + * @type {number} + * @memberof Application + */ + provider?: number | null; + /** + * + * @type {Provider} + * @memberof Application + */ + readonly providerObj: Provider | null; + /** + * + * @type {Array} + * @memberof Application + */ + backchannelProviders?: Array; + /** + * + * @type {Array} + * @memberof Application + */ + readonly backchannelProvidersObj: Array; + /** + * Allow formatting of launch URL + * @type {string} + * @memberof Application + */ + readonly launchUrl: string | null; + /** + * Open launch URL in a new browser tab or window. + * @type {boolean} + * @memberof Application + */ + openInNewTab?: boolean; + /** + * + * @type {string} + * @memberof Application + */ + metaLaunchUrl?: string; + /** + * + * @type {string} + * @memberof Application + */ + metaIcon?: string; + /** + * Get the URL to the App Icon image + * @type {string} + * @memberof Application + */ + readonly metaIconUrl: string | null; + /** + * + * @type {ThemedUrls} + * @memberof Application + */ + readonly metaIconThemedUrls: ThemedUrls | null; + /** + * + * @type {string} + * @memberof Application + */ + metaDescription?: string; + /** + * + * @type {string} + * @memberof Application + */ + metaPublisher?: string; + /** + * + * @type {PolicyEngineMode} + * @memberof Application + */ + policyEngineMode?: PolicyEngineMode; + /** + * + * @type {string} + * @memberof Application + */ + group?: string; + /** + * Hide this application from the user's My applications page. + * @type {boolean} + * @memberof Application + */ + metaHide?: boolean; +} + +/** + * Check if a given object implements the Application interface. + */ +export function instanceOfApplication(value: object): value is Application { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("slug" in value) || value["slug"] === undefined) return false; + if (!("providerObj" in value) || value["providerObj"] === undefined) return false; + if (!("backchannelProvidersObj" in value) || value["backchannelProvidersObj"] === undefined) + return false; + if (!("launchUrl" in value) || value["launchUrl"] === undefined) return false; + if (!("metaIconUrl" in value) || value["metaIconUrl"] === undefined) return false; + if (!("metaIconThemedUrls" in value) || value["metaIconThemedUrls"] === undefined) return false; + return true; +} + +export function ApplicationFromJSON(json: any): Application { + return ApplicationFromJSONTyped(json, false); +} + +export function ApplicationFromJSONTyped(json: any, ignoreDiscriminator: boolean): Application { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + slug: json["slug"], + provider: json["provider"] == null ? undefined : json["provider"], + providerObj: ProviderFromJSON(json["provider_obj"]), + backchannelProviders: + json["backchannel_providers"] == null ? undefined : json["backchannel_providers"], + backchannelProvidersObj: (json["backchannel_providers_obj"] as Array).map( + ProviderFromJSON, + ), + launchUrl: json["launch_url"], + openInNewTab: json["open_in_new_tab"] == null ? undefined : json["open_in_new_tab"], + metaLaunchUrl: json["meta_launch_url"] == null ? undefined : json["meta_launch_url"], + metaIcon: json["meta_icon"] == null ? undefined : json["meta_icon"], + metaIconUrl: json["meta_icon_url"], + metaIconThemedUrls: ThemedUrlsFromJSON(json["meta_icon_themed_urls"]), + metaDescription: json["meta_description"] == null ? undefined : json["meta_description"], + metaPublisher: json["meta_publisher"] == null ? undefined : json["meta_publisher"], + policyEngineMode: + json["policy_engine_mode"] == null + ? undefined + : PolicyEngineModeFromJSON(json["policy_engine_mode"]), + group: json["group"] == null ? undefined : json["group"], + metaHide: json["meta_hide"] == null ? undefined : json["meta_hide"], + }; +} + +export function ApplicationToJSON(json: any): Application { + return ApplicationToJSONTyped(json, false); +} + +export function ApplicationToJSONTyped( + value?: Omit< + Application, + | "pk" + | "provider_obj" + | "backchannel_providers_obj" + | "launch_url" + | "meta_icon_url" + | "meta_icon_themed_urls" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + slug: value["slug"], + provider: value["provider"], + backchannel_providers: value["backchannelProviders"], + open_in_new_tab: value["openInNewTab"], + meta_launch_url: value["metaLaunchUrl"], + meta_icon: value["metaIcon"], + meta_description: value["metaDescription"], + meta_publisher: value["metaPublisher"], + policy_engine_mode: PolicyEngineModeToJSON(value["policyEngineMode"]), + group: value["group"], + meta_hide: value["metaHide"], + }; +} diff --git a/packages/client-ts/src/models/ApplicationEntitlement.ts b/packages/client-ts/src/models/ApplicationEntitlement.ts new file mode 100644 index 0000000000..01f6f7556d --- /dev/null +++ b/packages/client-ts/src/models/ApplicationEntitlement.ts @@ -0,0 +1,93 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * ApplicationEntitlement Serializer + * @export + * @interface ApplicationEntitlement + */ +export interface ApplicationEntitlement { + /** + * + * @type {string} + * @memberof ApplicationEntitlement + */ + readonly pbmUuid: string; + /** + * + * @type {string} + * @memberof ApplicationEntitlement + */ + name: string; + /** + * + * @type {string} + * @memberof ApplicationEntitlement + */ + app: string; + /** + * + * @type {{ [key: string]: any; }} + * @memberof ApplicationEntitlement + */ + attributes?: { [key: string]: any }; +} + +/** + * Check if a given object implements the ApplicationEntitlement interface. + */ +export function instanceOfApplicationEntitlement(value: object): value is ApplicationEntitlement { + if (!("pbmUuid" in value) || value["pbmUuid"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("app" in value) || value["app"] === undefined) return false; + return true; +} + +export function ApplicationEntitlementFromJSON(json: any): ApplicationEntitlement { + return ApplicationEntitlementFromJSONTyped(json, false); +} + +export function ApplicationEntitlementFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): ApplicationEntitlement { + if (json == null) { + return json; + } + return { + pbmUuid: json["pbm_uuid"], + name: json["name"], + app: json["app"], + attributes: json["attributes"] == null ? undefined : json["attributes"], + }; +} + +export function ApplicationEntitlementToJSON(json: any): ApplicationEntitlement { + return ApplicationEntitlementToJSONTyped(json, false); +} + +export function ApplicationEntitlementToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + app: value["app"], + attributes: value["attributes"], + }; +} diff --git a/packages/client-ts/src/models/ApplicationEntitlementRequest.ts b/packages/client-ts/src/models/ApplicationEntitlementRequest.ts new file mode 100644 index 0000000000..47ff5b01e9 --- /dev/null +++ b/packages/client-ts/src/models/ApplicationEntitlementRequest.ts @@ -0,0 +1,87 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * ApplicationEntitlement Serializer + * @export + * @interface ApplicationEntitlementRequest + */ +export interface ApplicationEntitlementRequest { + /** + * + * @type {string} + * @memberof ApplicationEntitlementRequest + */ + name: string; + /** + * + * @type {string} + * @memberof ApplicationEntitlementRequest + */ + app: string; + /** + * + * @type {{ [key: string]: any; }} + * @memberof ApplicationEntitlementRequest + */ + attributes?: { [key: string]: any }; +} + +/** + * Check if a given object implements the ApplicationEntitlementRequest interface. + */ +export function instanceOfApplicationEntitlementRequest( + value: object, +): value is ApplicationEntitlementRequest { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("app" in value) || value["app"] === undefined) return false; + return true; +} + +export function ApplicationEntitlementRequestFromJSON(json: any): ApplicationEntitlementRequest { + return ApplicationEntitlementRequestFromJSONTyped(json, false); +} + +export function ApplicationEntitlementRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): ApplicationEntitlementRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + app: json["app"], + attributes: json["attributes"] == null ? undefined : json["attributes"], + }; +} + +export function ApplicationEntitlementRequestToJSON(json: any): ApplicationEntitlementRequest { + return ApplicationEntitlementRequestToJSONTyped(json, false); +} + +export function ApplicationEntitlementRequestToJSONTyped( + value?: ApplicationEntitlementRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + app: value["app"], + attributes: value["attributes"], + }; +} diff --git a/packages/client-ts/src/models/ApplicationRequest.ts b/packages/client-ts/src/models/ApplicationRequest.ts new file mode 100644 index 0000000000..de0a22b513 --- /dev/null +++ b/packages/client-ts/src/models/ApplicationRequest.ts @@ -0,0 +1,164 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { PolicyEngineMode } from "./PolicyEngineMode"; +import { PolicyEngineModeFromJSON, PolicyEngineModeToJSON } from "./PolicyEngineMode"; + +/** + * Application Serializer + * @export + * @interface ApplicationRequest + */ +export interface ApplicationRequest { + /** + * Application's display Name. + * @type {string} + * @memberof ApplicationRequest + */ + name: string; + /** + * Internal application name, used in URLs. + * @type {string} + * @memberof ApplicationRequest + */ + slug: string; + /** + * + * @type {number} + * @memberof ApplicationRequest + */ + provider?: number | null; + /** + * + * @type {Array} + * @memberof ApplicationRequest + */ + backchannelProviders?: Array; + /** + * Open launch URL in a new browser tab or window. + * @type {boolean} + * @memberof ApplicationRequest + */ + openInNewTab?: boolean; + /** + * + * @type {string} + * @memberof ApplicationRequest + */ + metaLaunchUrl?: string; + /** + * + * @type {string} + * @memberof ApplicationRequest + */ + metaIcon?: string; + /** + * + * @type {string} + * @memberof ApplicationRequest + */ + metaDescription?: string; + /** + * + * @type {string} + * @memberof ApplicationRequest + */ + metaPublisher?: string; + /** + * + * @type {PolicyEngineMode} + * @memberof ApplicationRequest + */ + policyEngineMode?: PolicyEngineMode; + /** + * + * @type {string} + * @memberof ApplicationRequest + */ + group?: string; + /** + * Hide this application from the user's My applications page. + * @type {boolean} + * @memberof ApplicationRequest + */ + metaHide?: boolean; +} + +/** + * Check if a given object implements the ApplicationRequest interface. + */ +export function instanceOfApplicationRequest(value: object): value is ApplicationRequest { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("slug" in value) || value["slug"] === undefined) return false; + return true; +} + +export function ApplicationRequestFromJSON(json: any): ApplicationRequest { + return ApplicationRequestFromJSONTyped(json, false); +} + +export function ApplicationRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): ApplicationRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + slug: json["slug"], + provider: json["provider"] == null ? undefined : json["provider"], + backchannelProviders: + json["backchannel_providers"] == null ? undefined : json["backchannel_providers"], + openInNewTab: json["open_in_new_tab"] == null ? undefined : json["open_in_new_tab"], + metaLaunchUrl: json["meta_launch_url"] == null ? undefined : json["meta_launch_url"], + metaIcon: json["meta_icon"] == null ? undefined : json["meta_icon"], + metaDescription: json["meta_description"] == null ? undefined : json["meta_description"], + metaPublisher: json["meta_publisher"] == null ? undefined : json["meta_publisher"], + policyEngineMode: + json["policy_engine_mode"] == null + ? undefined + : PolicyEngineModeFromJSON(json["policy_engine_mode"]), + group: json["group"] == null ? undefined : json["group"], + metaHide: json["meta_hide"] == null ? undefined : json["meta_hide"], + }; +} + +export function ApplicationRequestToJSON(json: any): ApplicationRequest { + return ApplicationRequestToJSONTyped(json, false); +} + +export function ApplicationRequestToJSONTyped( + value?: ApplicationRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + slug: value["slug"], + provider: value["provider"], + backchannel_providers: value["backchannelProviders"], + open_in_new_tab: value["openInNewTab"], + meta_launch_url: value["metaLaunchUrl"], + meta_icon: value["metaIcon"], + meta_description: value["metaDescription"], + meta_publisher: value["metaPublisher"], + policy_engine_mode: PolicyEngineModeToJSON(value["policyEngineMode"]), + group: value["group"], + meta_hide: value["metaHide"], + }; +} diff --git a/packages/client-ts/src/models/AuthTypeEnum.ts b/packages/client-ts/src/models/AuthTypeEnum.ts new file mode 100644 index 0000000000..1001753a6c --- /dev/null +++ b/packages/client-ts/src/models/AuthTypeEnum.ts @@ -0,0 +1,51 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const AuthTypeEnum = { + Basic: "basic", + Bearer: "bearer", + UnknownDefaultOpenApi: "11184809", +} as const; +export type AuthTypeEnum = (typeof AuthTypeEnum)[keyof typeof AuthTypeEnum]; + +export function instanceOfAuthTypeEnum(value: any): boolean { + for (const key in AuthTypeEnum) { + if (Object.prototype.hasOwnProperty.call(AuthTypeEnum, key)) { + if (AuthTypeEnum[key as keyof typeof AuthTypeEnum] === value) { + return true; + } + } + } + return false; +} + +export function AuthTypeEnumFromJSON(json: any): AuthTypeEnum { + return AuthTypeEnumFromJSONTyped(json, false); +} + +export function AuthTypeEnumFromJSONTyped(json: any, ignoreDiscriminator: boolean): AuthTypeEnum { + return json as AuthTypeEnum; +} + +export function AuthTypeEnumToJSON(value?: AuthTypeEnum | null): any { + return value as any; +} + +export function AuthTypeEnumToJSONTyped(value: any, ignoreDiscriminator: boolean): AuthTypeEnum { + return value as AuthTypeEnum; +} diff --git a/packages/client-ts/src/models/AuthenticatedSession.ts b/packages/client-ts/src/models/AuthenticatedSession.ts new file mode 100644 index 0000000000..352d5f82c2 --- /dev/null +++ b/packages/client-ts/src/models/AuthenticatedSession.ts @@ -0,0 +1,162 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { AuthenticatedSessionAsn } from "./AuthenticatedSessionAsn"; +import { + AuthenticatedSessionAsnFromJSON, + AuthenticatedSessionAsnToJSON, +} from "./AuthenticatedSessionAsn"; +import type { AuthenticatedSessionGeoIp } from "./AuthenticatedSessionGeoIp"; +import { + AuthenticatedSessionGeoIpFromJSON, + AuthenticatedSessionGeoIpToJSON, +} from "./AuthenticatedSessionGeoIp"; +import type { AuthenticatedSessionUserAgent } from "./AuthenticatedSessionUserAgent"; +import { + AuthenticatedSessionUserAgentFromJSON, + AuthenticatedSessionUserAgentToJSON, +} from "./AuthenticatedSessionUserAgent"; + +/** + * AuthenticatedSession Serializer + * @export + * @interface AuthenticatedSession + */ +export interface AuthenticatedSession { + /** + * + * @type {string} + * @memberof AuthenticatedSession + */ + uuid?: string; + /** + * Check if session is currently active session + * @type {boolean} + * @memberof AuthenticatedSession + */ + readonly current: boolean; + /** + * + * @type {AuthenticatedSessionUserAgent} + * @memberof AuthenticatedSession + */ + userAgent: AuthenticatedSessionUserAgent; + /** + * + * @type {AuthenticatedSessionGeoIp} + * @memberof AuthenticatedSession + */ + geoIp: AuthenticatedSessionGeoIp | null; + /** + * + * @type {AuthenticatedSessionAsn} + * @memberof AuthenticatedSession + */ + asn: AuthenticatedSessionAsn | null; + /** + * + * @type {number} + * @memberof AuthenticatedSession + */ + user: number; + /** + * + * @type {string} + * @memberof AuthenticatedSession + */ + readonly lastIp: string; + /** + * + * @type {string} + * @memberof AuthenticatedSession + */ + readonly lastUserAgent: string; + /** + * + * @type {Date} + * @memberof AuthenticatedSession + */ + readonly lastUsed: Date; + /** + * + * @type {Date} + * @memberof AuthenticatedSession + */ + readonly expires: Date; +} + +/** + * Check if a given object implements the AuthenticatedSession interface. + */ +export function instanceOfAuthenticatedSession(value: object): value is AuthenticatedSession { + if (!("current" in value) || value["current"] === undefined) return false; + if (!("userAgent" in value) || value["userAgent"] === undefined) return false; + if (!("geoIp" in value) || value["geoIp"] === undefined) return false; + if (!("asn" in value) || value["asn"] === undefined) return false; + if (!("user" in value) || value["user"] === undefined) return false; + if (!("lastIp" in value) || value["lastIp"] === undefined) return false; + if (!("lastUserAgent" in value) || value["lastUserAgent"] === undefined) return false; + if (!("lastUsed" in value) || value["lastUsed"] === undefined) return false; + if (!("expires" in value) || value["expires"] === undefined) return false; + return true; +} + +export function AuthenticatedSessionFromJSON(json: any): AuthenticatedSession { + return AuthenticatedSessionFromJSONTyped(json, false); +} + +export function AuthenticatedSessionFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): AuthenticatedSession { + if (json == null) { + return json; + } + return { + uuid: json["uuid"] == null ? undefined : json["uuid"], + current: json["current"], + userAgent: AuthenticatedSessionUserAgentFromJSON(json["user_agent"]), + geoIp: AuthenticatedSessionGeoIpFromJSON(json["geo_ip"]), + asn: AuthenticatedSessionAsnFromJSON(json["asn"]), + user: json["user"], + lastIp: json["last_ip"], + lastUserAgent: json["last_user_agent"], + lastUsed: new Date(json["last_used"]), + expires: new Date(json["expires"]), + }; +} + +export function AuthenticatedSessionToJSON(json: any): AuthenticatedSession { + return AuthenticatedSessionToJSONTyped(json, false); +} + +export function AuthenticatedSessionToJSONTyped( + value?: Omit< + AuthenticatedSession, + "current" | "last_ip" | "last_user_agent" | "last_used" | "expires" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + uuid: value["uuid"], + user_agent: AuthenticatedSessionUserAgentToJSON(value["userAgent"]), + geo_ip: AuthenticatedSessionGeoIpToJSON(value["geoIp"]), + asn: AuthenticatedSessionAsnToJSON(value["asn"]), + user: value["user"], + }; +} diff --git a/packages/client-ts/src/models/AuthenticatedSessionAsn.ts b/packages/client-ts/src/models/AuthenticatedSessionAsn.ts new file mode 100644 index 0000000000..9d343f51f8 --- /dev/null +++ b/packages/client-ts/src/models/AuthenticatedSessionAsn.ts @@ -0,0 +1,86 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Get ASN Data + * @export + * @interface AuthenticatedSessionAsn + */ +export interface AuthenticatedSessionAsn { + /** + * + * @type {number} + * @memberof AuthenticatedSessionAsn + */ + asn: number | null; + /** + * + * @type {string} + * @memberof AuthenticatedSessionAsn + */ + asOrg: string | null; + /** + * + * @type {string} + * @memberof AuthenticatedSessionAsn + */ + network: string | null; +} + +/** + * Check if a given object implements the AuthenticatedSessionAsn interface. + */ +export function instanceOfAuthenticatedSessionAsn(value: object): value is AuthenticatedSessionAsn { + if (!("asn" in value) || value["asn"] === undefined) return false; + if (!("asOrg" in value) || value["asOrg"] === undefined) return false; + if (!("network" in value) || value["network"] === undefined) return false; + return true; +} + +export function AuthenticatedSessionAsnFromJSON(json: any): AuthenticatedSessionAsn { + return AuthenticatedSessionAsnFromJSONTyped(json, false); +} + +export function AuthenticatedSessionAsnFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): AuthenticatedSessionAsn { + if (json == null) { + return json; + } + return { + asn: json["asn"], + asOrg: json["as_org"], + network: json["network"], + }; +} + +export function AuthenticatedSessionAsnToJSON(json: any): AuthenticatedSessionAsn { + return AuthenticatedSessionAsnToJSONTyped(json, false); +} + +export function AuthenticatedSessionAsnToJSONTyped( + value?: AuthenticatedSessionAsn | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + asn: value["asn"], + as_org: value["asOrg"], + network: value["network"], + }; +} diff --git a/packages/client-ts/src/models/AuthenticatedSessionGeoIp.ts b/packages/client-ts/src/models/AuthenticatedSessionGeoIp.ts new file mode 100644 index 0000000000..ee9ea7176f --- /dev/null +++ b/packages/client-ts/src/models/AuthenticatedSessionGeoIp.ts @@ -0,0 +1,106 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Get GeoIP Data + * @export + * @interface AuthenticatedSessionGeoIp + */ +export interface AuthenticatedSessionGeoIp { + /** + * + * @type {string} + * @memberof AuthenticatedSessionGeoIp + */ + continent: string | null; + /** + * + * @type {string} + * @memberof AuthenticatedSessionGeoIp + */ + country: string | null; + /** + * + * @type {number} + * @memberof AuthenticatedSessionGeoIp + */ + lat: number | null; + /** + * + * @type {number} + * @memberof AuthenticatedSessionGeoIp + */ + _long: number | null; + /** + * + * @type {string} + * @memberof AuthenticatedSessionGeoIp + */ + city: string; +} + +/** + * Check if a given object implements the AuthenticatedSessionGeoIp interface. + */ +export function instanceOfAuthenticatedSessionGeoIp( + value: object, +): value is AuthenticatedSessionGeoIp { + if (!("continent" in value) || value["continent"] === undefined) return false; + if (!("country" in value) || value["country"] === undefined) return false; + if (!("lat" in value) || value["lat"] === undefined) return false; + if (!("_long" in value) || value["_long"] === undefined) return false; + if (!("city" in value) || value["city"] === undefined) return false; + return true; +} + +export function AuthenticatedSessionGeoIpFromJSON(json: any): AuthenticatedSessionGeoIp { + return AuthenticatedSessionGeoIpFromJSONTyped(json, false); +} + +export function AuthenticatedSessionGeoIpFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): AuthenticatedSessionGeoIp { + if (json == null) { + return json; + } + return { + continent: json["continent"], + country: json["country"], + lat: json["lat"], + _long: json["long"], + city: json["city"], + }; +} + +export function AuthenticatedSessionGeoIpToJSON(json: any): AuthenticatedSessionGeoIp { + return AuthenticatedSessionGeoIpToJSONTyped(json, false); +} + +export function AuthenticatedSessionGeoIpToJSONTyped( + value?: AuthenticatedSessionGeoIp | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + continent: value["continent"], + country: value["country"], + lat: value["lat"], + long: value["_long"], + city: value["city"], + }; +} diff --git a/packages/client-ts/src/models/AuthenticatedSessionUserAgent.ts b/packages/client-ts/src/models/AuthenticatedSessionUserAgent.ts new file mode 100644 index 0000000000..50026ae238 --- /dev/null +++ b/packages/client-ts/src/models/AuthenticatedSessionUserAgent.ts @@ -0,0 +1,113 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { AuthenticatedSessionUserAgentDevice } from "./AuthenticatedSessionUserAgentDevice"; +import { + AuthenticatedSessionUserAgentDeviceFromJSON, + AuthenticatedSessionUserAgentDeviceToJSON, +} from "./AuthenticatedSessionUserAgentDevice"; +import type { AuthenticatedSessionUserAgentOs } from "./AuthenticatedSessionUserAgentOs"; +import { + AuthenticatedSessionUserAgentOsFromJSON, + AuthenticatedSessionUserAgentOsToJSON, +} from "./AuthenticatedSessionUserAgentOs"; +import type { AuthenticatedSessionUserAgentUserAgent } from "./AuthenticatedSessionUserAgentUserAgent"; +import { + AuthenticatedSessionUserAgentUserAgentFromJSON, + AuthenticatedSessionUserAgentUserAgentToJSON, +} from "./AuthenticatedSessionUserAgentUserAgent"; + +/** + * Get parsed user agent + * @export + * @interface AuthenticatedSessionUserAgent + */ +export interface AuthenticatedSessionUserAgent { + /** + * + * @type {AuthenticatedSessionUserAgentDevice} + * @memberof AuthenticatedSessionUserAgent + */ + device: AuthenticatedSessionUserAgentDevice; + /** + * + * @type {AuthenticatedSessionUserAgentOs} + * @memberof AuthenticatedSessionUserAgent + */ + os: AuthenticatedSessionUserAgentOs; + /** + * + * @type {AuthenticatedSessionUserAgentUserAgent} + * @memberof AuthenticatedSessionUserAgent + */ + userAgent: AuthenticatedSessionUserAgentUserAgent; + /** + * + * @type {string} + * @memberof AuthenticatedSessionUserAgent + */ + string: string; +} + +/** + * Check if a given object implements the AuthenticatedSessionUserAgent interface. + */ +export function instanceOfAuthenticatedSessionUserAgent( + value: object, +): value is AuthenticatedSessionUserAgent { + if (!("device" in value) || value["device"] === undefined) return false; + if (!("os" in value) || value["os"] === undefined) return false; + if (!("userAgent" in value) || value["userAgent"] === undefined) return false; + if (!("string" in value) || value["string"] === undefined) return false; + return true; +} + +export function AuthenticatedSessionUserAgentFromJSON(json: any): AuthenticatedSessionUserAgent { + return AuthenticatedSessionUserAgentFromJSONTyped(json, false); +} + +export function AuthenticatedSessionUserAgentFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): AuthenticatedSessionUserAgent { + if (json == null) { + return json; + } + return { + device: AuthenticatedSessionUserAgentDeviceFromJSON(json["device"]), + os: AuthenticatedSessionUserAgentOsFromJSON(json["os"]), + userAgent: AuthenticatedSessionUserAgentUserAgentFromJSON(json["user_agent"]), + string: json["string"], + }; +} + +export function AuthenticatedSessionUserAgentToJSON(json: any): AuthenticatedSessionUserAgent { + return AuthenticatedSessionUserAgentToJSONTyped(json, false); +} + +export function AuthenticatedSessionUserAgentToJSONTyped( + value?: AuthenticatedSessionUserAgent | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + device: AuthenticatedSessionUserAgentDeviceToJSON(value["device"]), + os: AuthenticatedSessionUserAgentOsToJSON(value["os"]), + user_agent: AuthenticatedSessionUserAgentUserAgentToJSON(value["userAgent"]), + string: value["string"], + }; +} diff --git a/packages/client-ts/src/models/AuthenticatedSessionUserAgentDevice.ts b/packages/client-ts/src/models/AuthenticatedSessionUserAgentDevice.ts new file mode 100644 index 0000000000..1e91b2998f --- /dev/null +++ b/packages/client-ts/src/models/AuthenticatedSessionUserAgentDevice.ts @@ -0,0 +1,92 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * User agent device + * @export + * @interface AuthenticatedSessionUserAgentDevice + */ +export interface AuthenticatedSessionUserAgentDevice { + /** + * + * @type {string} + * @memberof AuthenticatedSessionUserAgentDevice + */ + brand: string | null; + /** + * + * @type {string} + * @memberof AuthenticatedSessionUserAgentDevice + */ + family: string; + /** + * + * @type {string} + * @memberof AuthenticatedSessionUserAgentDevice + */ + model: string | null; +} + +/** + * Check if a given object implements the AuthenticatedSessionUserAgentDevice interface. + */ +export function instanceOfAuthenticatedSessionUserAgentDevice( + value: object, +): value is AuthenticatedSessionUserAgentDevice { + if (!("brand" in value) || value["brand"] === undefined) return false; + if (!("family" in value) || value["family"] === undefined) return false; + if (!("model" in value) || value["model"] === undefined) return false; + return true; +} + +export function AuthenticatedSessionUserAgentDeviceFromJSON( + json: any, +): AuthenticatedSessionUserAgentDevice { + return AuthenticatedSessionUserAgentDeviceFromJSONTyped(json, false); +} + +export function AuthenticatedSessionUserAgentDeviceFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): AuthenticatedSessionUserAgentDevice { + if (json == null) { + return json; + } + return { + brand: json["brand"], + family: json["family"], + model: json["model"], + }; +} + +export function AuthenticatedSessionUserAgentDeviceToJSON( + json: any, +): AuthenticatedSessionUserAgentDevice { + return AuthenticatedSessionUserAgentDeviceToJSONTyped(json, false); +} + +export function AuthenticatedSessionUserAgentDeviceToJSONTyped( + value?: AuthenticatedSessionUserAgentDevice | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + brand: value["brand"], + family: value["family"], + model: value["model"], + }; +} diff --git a/packages/client-ts/src/models/AuthenticatedSessionUserAgentOs.ts b/packages/client-ts/src/models/AuthenticatedSessionUserAgentOs.ts new file mode 100644 index 0000000000..ac2e6d775d --- /dev/null +++ b/packages/client-ts/src/models/AuthenticatedSessionUserAgentOs.ts @@ -0,0 +1,108 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * User agent os + * @export + * @interface AuthenticatedSessionUserAgentOs + */ +export interface AuthenticatedSessionUserAgentOs { + /** + * + * @type {string} + * @memberof AuthenticatedSessionUserAgentOs + */ + family: string; + /** + * + * @type {string} + * @memberof AuthenticatedSessionUserAgentOs + */ + major: string | null; + /** + * + * @type {string} + * @memberof AuthenticatedSessionUserAgentOs + */ + minor: string | null; + /** + * + * @type {string} + * @memberof AuthenticatedSessionUserAgentOs + */ + patch: string | null; + /** + * + * @type {string} + * @memberof AuthenticatedSessionUserAgentOs + */ + patchMinor: string | null; +} + +/** + * Check if a given object implements the AuthenticatedSessionUserAgentOs interface. + */ +export function instanceOfAuthenticatedSessionUserAgentOs( + value: object, +): value is AuthenticatedSessionUserAgentOs { + if (!("family" in value) || value["family"] === undefined) return false; + if (!("major" in value) || value["major"] === undefined) return false; + if (!("minor" in value) || value["minor"] === undefined) return false; + if (!("patch" in value) || value["patch"] === undefined) return false; + if (!("patchMinor" in value) || value["patchMinor"] === undefined) return false; + return true; +} + +export function AuthenticatedSessionUserAgentOsFromJSON( + json: any, +): AuthenticatedSessionUserAgentOs { + return AuthenticatedSessionUserAgentOsFromJSONTyped(json, false); +} + +export function AuthenticatedSessionUserAgentOsFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): AuthenticatedSessionUserAgentOs { + if (json == null) { + return json; + } + return { + family: json["family"], + major: json["major"], + minor: json["minor"], + patch: json["patch"], + patchMinor: json["patch_minor"], + }; +} + +export function AuthenticatedSessionUserAgentOsToJSON(json: any): AuthenticatedSessionUserAgentOs { + return AuthenticatedSessionUserAgentOsToJSONTyped(json, false); +} + +export function AuthenticatedSessionUserAgentOsToJSONTyped( + value?: AuthenticatedSessionUserAgentOs | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + family: value["family"], + major: value["major"], + minor: value["minor"], + patch: value["patch"], + patch_minor: value["patchMinor"], + }; +} diff --git a/packages/client-ts/src/models/AuthenticatedSessionUserAgentUserAgent.ts b/packages/client-ts/src/models/AuthenticatedSessionUserAgentUserAgent.ts new file mode 100644 index 0000000000..e6987db2fd --- /dev/null +++ b/packages/client-ts/src/models/AuthenticatedSessionUserAgentUserAgent.ts @@ -0,0 +1,101 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * User agent browser + * @export + * @interface AuthenticatedSessionUserAgentUserAgent + */ +export interface AuthenticatedSessionUserAgentUserAgent { + /** + * + * @type {string} + * @memberof AuthenticatedSessionUserAgentUserAgent + */ + family: string; + /** + * + * @type {string} + * @memberof AuthenticatedSessionUserAgentUserAgent + */ + major: string; + /** + * + * @type {string} + * @memberof AuthenticatedSessionUserAgentUserAgent + */ + minor: string; + /** + * + * @type {string} + * @memberof AuthenticatedSessionUserAgentUserAgent + */ + patch: string; +} + +/** + * Check if a given object implements the AuthenticatedSessionUserAgentUserAgent interface. + */ +export function instanceOfAuthenticatedSessionUserAgentUserAgent( + value: object, +): value is AuthenticatedSessionUserAgentUserAgent { + if (!("family" in value) || value["family"] === undefined) return false; + if (!("major" in value) || value["major"] === undefined) return false; + if (!("minor" in value) || value["minor"] === undefined) return false; + if (!("patch" in value) || value["patch"] === undefined) return false; + return true; +} + +export function AuthenticatedSessionUserAgentUserAgentFromJSON( + json: any, +): AuthenticatedSessionUserAgentUserAgent { + return AuthenticatedSessionUserAgentUserAgentFromJSONTyped(json, false); +} + +export function AuthenticatedSessionUserAgentUserAgentFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): AuthenticatedSessionUserAgentUserAgent { + if (json == null) { + return json; + } + return { + family: json["family"], + major: json["major"], + minor: json["minor"], + patch: json["patch"], + }; +} + +export function AuthenticatedSessionUserAgentUserAgentToJSON( + json: any, +): AuthenticatedSessionUserAgentUserAgent { + return AuthenticatedSessionUserAgentUserAgentToJSONTyped(json, false); +} + +export function AuthenticatedSessionUserAgentUserAgentToJSONTyped( + value?: AuthenticatedSessionUserAgentUserAgent | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + family: value["family"], + major: value["major"], + minor: value["minor"], + patch: value["patch"], + }; +} diff --git a/packages/client-ts/src/models/AuthenticationEnum.ts b/packages/client-ts/src/models/AuthenticationEnum.ts new file mode 100644 index 0000000000..6e3d797c69 --- /dev/null +++ b/packages/client-ts/src/models/AuthenticationEnum.ts @@ -0,0 +1,62 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const AuthenticationEnum = { + None: "none", + RequireAuthenticated: "require_authenticated", + RequireUnauthenticated: "require_unauthenticated", + RequireSuperuser: "require_superuser", + RequireRedirect: "require_redirect", + RequireOutpost: "require_outpost", + RequireToken: "require_token", + UnknownDefaultOpenApi: "11184809", +} as const; +export type AuthenticationEnum = (typeof AuthenticationEnum)[keyof typeof AuthenticationEnum]; + +export function instanceOfAuthenticationEnum(value: any): boolean { + for (const key in AuthenticationEnum) { + if (Object.prototype.hasOwnProperty.call(AuthenticationEnum, key)) { + if (AuthenticationEnum[key as keyof typeof AuthenticationEnum] === value) { + return true; + } + } + } + return false; +} + +export function AuthenticationEnumFromJSON(json: any): AuthenticationEnum { + return AuthenticationEnumFromJSONTyped(json, false); +} + +export function AuthenticationEnumFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): AuthenticationEnum { + return json as AuthenticationEnum; +} + +export function AuthenticationEnumToJSON(value?: AuthenticationEnum | null): any { + return value as any; +} + +export function AuthenticationEnumToJSONTyped( + value: any, + ignoreDiscriminator: boolean, +): AuthenticationEnum { + return value as AuthenticationEnum; +} diff --git a/packages/client-ts/src/models/AuthenticatorAttachmentEnum.ts b/packages/client-ts/src/models/AuthenticatorAttachmentEnum.ts new file mode 100644 index 0000000000..9e46dd035e --- /dev/null +++ b/packages/client-ts/src/models/AuthenticatorAttachmentEnum.ts @@ -0,0 +1,61 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const AuthenticatorAttachmentEnum = { + Platform: "platform", + CrossPlatform: "cross-platform", + UnknownDefaultOpenApi: "11184809", +} as const; +export type AuthenticatorAttachmentEnum = + (typeof AuthenticatorAttachmentEnum)[keyof typeof AuthenticatorAttachmentEnum]; + +export function instanceOfAuthenticatorAttachmentEnum(value: any): boolean { + for (const key in AuthenticatorAttachmentEnum) { + if (Object.prototype.hasOwnProperty.call(AuthenticatorAttachmentEnum, key)) { + if ( + AuthenticatorAttachmentEnum[key as keyof typeof AuthenticatorAttachmentEnum] === + value + ) { + return true; + } + } + } + return false; +} + +export function AuthenticatorAttachmentEnumFromJSON(json: any): AuthenticatorAttachmentEnum { + return AuthenticatorAttachmentEnumFromJSONTyped(json, false); +} + +export function AuthenticatorAttachmentEnumFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): AuthenticatorAttachmentEnum { + return json as AuthenticatorAttachmentEnum; +} + +export function AuthenticatorAttachmentEnumToJSON(value?: AuthenticatorAttachmentEnum | null): any { + return value as any; +} + +export function AuthenticatorAttachmentEnumToJSONTyped( + value: any, + ignoreDiscriminator: boolean, +): AuthenticatorAttachmentEnum { + return value as AuthenticatorAttachmentEnum; +} diff --git a/packages/client-ts/src/models/AuthenticatorDuoChallenge.ts b/packages/client-ts/src/models/AuthenticatorDuoChallenge.ts new file mode 100644 index 0000000000..29e69127d1 --- /dev/null +++ b/packages/client-ts/src/models/AuthenticatorDuoChallenge.ts @@ -0,0 +1,135 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { ContextualFlowInfo } from "./ContextualFlowInfo"; +import { ContextualFlowInfoFromJSON, ContextualFlowInfoToJSON } from "./ContextualFlowInfo"; +import type { ErrorDetail } from "./ErrorDetail"; + +/** + * Duo Challenge + * @export + * @interface AuthenticatorDuoChallenge + */ +export interface AuthenticatorDuoChallenge { + /** + * + * @type {ContextualFlowInfo} + * @memberof AuthenticatorDuoChallenge + */ + flowInfo?: ContextualFlowInfo; + /** + * + * @type {string} + * @memberof AuthenticatorDuoChallenge + */ + component?: string; + /** + * + * @type {{ [key: string]: Array; }} + * @memberof AuthenticatorDuoChallenge + */ + responseErrors?: { [key: string]: Array }; + /** + * + * @type {string} + * @memberof AuthenticatorDuoChallenge + */ + pendingUser: string; + /** + * + * @type {string} + * @memberof AuthenticatorDuoChallenge + */ + pendingUserAvatar: string; + /** + * + * @type {string} + * @memberof AuthenticatorDuoChallenge + */ + activationBarcode: string; + /** + * + * @type {string} + * @memberof AuthenticatorDuoChallenge + */ + activationCode: string; + /** + * + * @type {string} + * @memberof AuthenticatorDuoChallenge + */ + stageUuid: string; +} + +/** + * Check if a given object implements the AuthenticatorDuoChallenge interface. + */ +export function instanceOfAuthenticatorDuoChallenge( + value: object, +): value is AuthenticatorDuoChallenge { + if (!("pendingUser" in value) || value["pendingUser"] === undefined) return false; + if (!("pendingUserAvatar" in value) || value["pendingUserAvatar"] === undefined) return false; + if (!("activationBarcode" in value) || value["activationBarcode"] === undefined) return false; + if (!("activationCode" in value) || value["activationCode"] === undefined) return false; + if (!("stageUuid" in value) || value["stageUuid"] === undefined) return false; + return true; +} + +export function AuthenticatorDuoChallengeFromJSON(json: any): AuthenticatorDuoChallenge { + return AuthenticatorDuoChallengeFromJSONTyped(json, false); +} + +export function AuthenticatorDuoChallengeFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): AuthenticatorDuoChallenge { + if (json == null) { + return json; + } + return { + flowInfo: + json["flow_info"] == null ? undefined : ContextualFlowInfoFromJSON(json["flow_info"]), + component: json["component"] == null ? undefined : json["component"], + responseErrors: json["response_errors"] == null ? undefined : json["response_errors"], + pendingUser: json["pending_user"], + pendingUserAvatar: json["pending_user_avatar"], + activationBarcode: json["activation_barcode"], + activationCode: json["activation_code"], + stageUuid: json["stage_uuid"], + }; +} + +export function AuthenticatorDuoChallengeToJSON(json: any): AuthenticatorDuoChallenge { + return AuthenticatorDuoChallengeToJSONTyped(json, false); +} + +export function AuthenticatorDuoChallengeToJSONTyped( + value?: AuthenticatorDuoChallenge | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + flow_info: ContextualFlowInfoToJSON(value["flowInfo"]), + component: value["component"], + response_errors: value["responseErrors"], + pending_user: value["pendingUser"], + pending_user_avatar: value["pendingUserAvatar"], + activation_barcode: value["activationBarcode"], + activation_code: value["activationCode"], + stage_uuid: value["stageUuid"], + }; +} diff --git a/packages/client-ts/src/models/AuthenticatorDuoChallengeResponseRequest.ts b/packages/client-ts/src/models/AuthenticatorDuoChallengeResponseRequest.ts new file mode 100644 index 0000000000..a213ac4d92 --- /dev/null +++ b/packages/client-ts/src/models/AuthenticatorDuoChallengeResponseRequest.ts @@ -0,0 +1,73 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Pseudo class for duo response + * @export + * @interface AuthenticatorDuoChallengeResponseRequest + */ +export interface AuthenticatorDuoChallengeResponseRequest { + /** + * + * @type {string} + * @memberof AuthenticatorDuoChallengeResponseRequest + */ + component?: string; +} + +/** + * Check if a given object implements the AuthenticatorDuoChallengeResponseRequest interface. + */ +export function instanceOfAuthenticatorDuoChallengeResponseRequest( + value: object, +): value is AuthenticatorDuoChallengeResponseRequest { + return true; +} + +export function AuthenticatorDuoChallengeResponseRequestFromJSON( + json: any, +): AuthenticatorDuoChallengeResponseRequest { + return AuthenticatorDuoChallengeResponseRequestFromJSONTyped(json, false); +} + +export function AuthenticatorDuoChallengeResponseRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): AuthenticatorDuoChallengeResponseRequest { + if (json == null) { + return json; + } + return { + component: json["component"] == null ? undefined : json["component"], + }; +} + +export function AuthenticatorDuoChallengeResponseRequestToJSON( + json: any, +): AuthenticatorDuoChallengeResponseRequest { + return AuthenticatorDuoChallengeResponseRequestToJSONTyped(json, false); +} + +export function AuthenticatorDuoChallengeResponseRequestToJSONTyped( + value?: AuthenticatorDuoChallengeResponseRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + component: value["component"], + }; +} diff --git a/packages/client-ts/src/models/AuthenticatorDuoStage.ts b/packages/client-ts/src/models/AuthenticatorDuoStage.ts new file mode 100644 index 0000000000..c45e3a0988 --- /dev/null +++ b/packages/client-ts/src/models/AuthenticatorDuoStage.ts @@ -0,0 +1,165 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { FlowSet } from "./FlowSet"; +import { FlowSetFromJSON } from "./FlowSet"; + +/** + * AuthenticatorDuoStage Serializer + * @export + * @interface AuthenticatorDuoStage + */ +export interface AuthenticatorDuoStage { + /** + * + * @type {string} + * @memberof AuthenticatorDuoStage + */ + readonly pk: string; + /** + * + * @type {string} + * @memberof AuthenticatorDuoStage + */ + name: string; + /** + * Get object type so that we know how to edit the object + * @type {string} + * @memberof AuthenticatorDuoStage + */ + readonly component: string; + /** + * Return object's verbose_name + * @type {string} + * @memberof AuthenticatorDuoStage + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof AuthenticatorDuoStage + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof AuthenticatorDuoStage + */ + readonly metaModelName: string; + /** + * + * @type {Array} + * @memberof AuthenticatorDuoStage + */ + readonly flowSet: Array; + /** + * Flow used by an authenticated user to configure this Stage. If empty, user will not be able to configure this stage. + * @type {string} + * @memberof AuthenticatorDuoStage + */ + configureFlow?: string | null; + /** + * + * @type {string} + * @memberof AuthenticatorDuoStage + */ + friendlyName?: string; + /** + * + * @type {string} + * @memberof AuthenticatorDuoStage + */ + clientId: string; + /** + * + * @type {string} + * @memberof AuthenticatorDuoStage + */ + apiHostname: string; + /** + * + * @type {string} + * @memberof AuthenticatorDuoStage + */ + adminIntegrationKey?: string; +} + +/** + * Check if a given object implements the AuthenticatorDuoStage interface. + */ +export function instanceOfAuthenticatorDuoStage(value: object): value is AuthenticatorDuoStage { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + if (!("flowSet" in value) || value["flowSet"] === undefined) return false; + if (!("clientId" in value) || value["clientId"] === undefined) return false; + if (!("apiHostname" in value) || value["apiHostname"] === undefined) return false; + return true; +} + +export function AuthenticatorDuoStageFromJSON(json: any): AuthenticatorDuoStage { + return AuthenticatorDuoStageFromJSONTyped(json, false); +} + +export function AuthenticatorDuoStageFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): AuthenticatorDuoStage { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + component: json["component"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + flowSet: (json["flow_set"] as Array).map(FlowSetFromJSON), + configureFlow: json["configure_flow"] == null ? undefined : json["configure_flow"], + friendlyName: json["friendly_name"] == null ? undefined : json["friendly_name"], + clientId: json["client_id"], + apiHostname: json["api_hostname"], + adminIntegrationKey: + json["admin_integration_key"] == null ? undefined : json["admin_integration_key"], + }; +} + +export function AuthenticatorDuoStageToJSON(json: any): AuthenticatorDuoStage { + return AuthenticatorDuoStageToJSONTyped(json, false); +} + +export function AuthenticatorDuoStageToJSONTyped( + value?: Omit< + AuthenticatorDuoStage, + "pk" | "component" | "verbose_name" | "verbose_name_plural" | "meta_model_name" | "flow_set" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + configure_flow: value["configureFlow"], + friendly_name: value["friendlyName"], + client_id: value["clientId"], + api_hostname: value["apiHostname"], + admin_integration_key: value["adminIntegrationKey"], + }; +} diff --git a/packages/client-ts/src/models/AuthenticatorDuoStageDeviceImportResponse.ts b/packages/client-ts/src/models/AuthenticatorDuoStageDeviceImportResponse.ts new file mode 100644 index 0000000000..38b9abce30 --- /dev/null +++ b/packages/client-ts/src/models/AuthenticatorDuoStageDeviceImportResponse.ts @@ -0,0 +1,80 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + * @interface AuthenticatorDuoStageDeviceImportResponse + */ +export interface AuthenticatorDuoStageDeviceImportResponse { + /** + * + * @type {number} + * @memberof AuthenticatorDuoStageDeviceImportResponse + */ + readonly count: number; + /** + * + * @type {string} + * @memberof AuthenticatorDuoStageDeviceImportResponse + */ + readonly error: string; +} + +/** + * Check if a given object implements the AuthenticatorDuoStageDeviceImportResponse interface. + */ +export function instanceOfAuthenticatorDuoStageDeviceImportResponse( + value: object, +): value is AuthenticatorDuoStageDeviceImportResponse { + if (!("count" in value) || value["count"] === undefined) return false; + if (!("error" in value) || value["error"] === undefined) return false; + return true; +} + +export function AuthenticatorDuoStageDeviceImportResponseFromJSON( + json: any, +): AuthenticatorDuoStageDeviceImportResponse { + return AuthenticatorDuoStageDeviceImportResponseFromJSONTyped(json, false); +} + +export function AuthenticatorDuoStageDeviceImportResponseFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): AuthenticatorDuoStageDeviceImportResponse { + if (json == null) { + return json; + } + return { + count: json["count"], + error: json["error"], + }; +} + +export function AuthenticatorDuoStageDeviceImportResponseToJSON( + json: any, +): AuthenticatorDuoStageDeviceImportResponse { + return AuthenticatorDuoStageDeviceImportResponseToJSONTyped(json, false); +} + +export function AuthenticatorDuoStageDeviceImportResponseToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return {}; +} diff --git a/packages/client-ts/src/models/AuthenticatorDuoStageManualDeviceImportRequest.ts b/packages/client-ts/src/models/AuthenticatorDuoStageManualDeviceImportRequest.ts new file mode 100644 index 0000000000..6913077f68 --- /dev/null +++ b/packages/client-ts/src/models/AuthenticatorDuoStageManualDeviceImportRequest.ts @@ -0,0 +1,83 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + * @interface AuthenticatorDuoStageManualDeviceImportRequest + */ +export interface AuthenticatorDuoStageManualDeviceImportRequest { + /** + * + * @type {string} + * @memberof AuthenticatorDuoStageManualDeviceImportRequest + */ + duoUserId: string; + /** + * + * @type {string} + * @memberof AuthenticatorDuoStageManualDeviceImportRequest + */ + username: string; +} + +/** + * Check if a given object implements the AuthenticatorDuoStageManualDeviceImportRequest interface. + */ +export function instanceOfAuthenticatorDuoStageManualDeviceImportRequest( + value: object, +): value is AuthenticatorDuoStageManualDeviceImportRequest { + if (!("duoUserId" in value) || value["duoUserId"] === undefined) return false; + if (!("username" in value) || value["username"] === undefined) return false; + return true; +} + +export function AuthenticatorDuoStageManualDeviceImportRequestFromJSON( + json: any, +): AuthenticatorDuoStageManualDeviceImportRequest { + return AuthenticatorDuoStageManualDeviceImportRequestFromJSONTyped(json, false); +} + +export function AuthenticatorDuoStageManualDeviceImportRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): AuthenticatorDuoStageManualDeviceImportRequest { + if (json == null) { + return json; + } + return { + duoUserId: json["duo_user_id"], + username: json["username"], + }; +} + +export function AuthenticatorDuoStageManualDeviceImportRequestToJSON( + json: any, +): AuthenticatorDuoStageManualDeviceImportRequest { + return AuthenticatorDuoStageManualDeviceImportRequestToJSONTyped(json, false); +} + +export function AuthenticatorDuoStageManualDeviceImportRequestToJSONTyped( + value?: AuthenticatorDuoStageManualDeviceImportRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + duo_user_id: value["duoUserId"], + username: value["username"], + }; +} diff --git a/packages/client-ts/src/models/AuthenticatorDuoStageRequest.ts b/packages/client-ts/src/models/AuthenticatorDuoStageRequest.ts new file mode 100644 index 0000000000..8f9320a55b --- /dev/null +++ b/packages/client-ts/src/models/AuthenticatorDuoStageRequest.ts @@ -0,0 +1,130 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * AuthenticatorDuoStage Serializer + * @export + * @interface AuthenticatorDuoStageRequest + */ +export interface AuthenticatorDuoStageRequest { + /** + * + * @type {string} + * @memberof AuthenticatorDuoStageRequest + */ + name: string; + /** + * Flow used by an authenticated user to configure this Stage. If empty, user will not be able to configure this stage. + * @type {string} + * @memberof AuthenticatorDuoStageRequest + */ + configureFlow?: string | null; + /** + * + * @type {string} + * @memberof AuthenticatorDuoStageRequest + */ + friendlyName?: string; + /** + * + * @type {string} + * @memberof AuthenticatorDuoStageRequest + */ + clientId: string; + /** + * + * @type {string} + * @memberof AuthenticatorDuoStageRequest + */ + clientSecret: string; + /** + * + * @type {string} + * @memberof AuthenticatorDuoStageRequest + */ + apiHostname: string; + /** + * + * @type {string} + * @memberof AuthenticatorDuoStageRequest + */ + adminIntegrationKey?: string; + /** + * + * @type {string} + * @memberof AuthenticatorDuoStageRequest + */ + adminSecretKey?: string; +} + +/** + * Check if a given object implements the AuthenticatorDuoStageRequest interface. + */ +export function instanceOfAuthenticatorDuoStageRequest( + value: object, +): value is AuthenticatorDuoStageRequest { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("clientId" in value) || value["clientId"] === undefined) return false; + if (!("clientSecret" in value) || value["clientSecret"] === undefined) return false; + if (!("apiHostname" in value) || value["apiHostname"] === undefined) return false; + return true; +} + +export function AuthenticatorDuoStageRequestFromJSON(json: any): AuthenticatorDuoStageRequest { + return AuthenticatorDuoStageRequestFromJSONTyped(json, false); +} + +export function AuthenticatorDuoStageRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): AuthenticatorDuoStageRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + configureFlow: json["configure_flow"] == null ? undefined : json["configure_flow"], + friendlyName: json["friendly_name"] == null ? undefined : json["friendly_name"], + clientId: json["client_id"], + clientSecret: json["client_secret"], + apiHostname: json["api_hostname"], + adminIntegrationKey: + json["admin_integration_key"] == null ? undefined : json["admin_integration_key"], + adminSecretKey: json["admin_secret_key"] == null ? undefined : json["admin_secret_key"], + }; +} + +export function AuthenticatorDuoStageRequestToJSON(json: any): AuthenticatorDuoStageRequest { + return AuthenticatorDuoStageRequestToJSONTyped(json, false); +} + +export function AuthenticatorDuoStageRequestToJSONTyped( + value?: AuthenticatorDuoStageRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + configure_flow: value["configureFlow"], + friendly_name: value["friendlyName"], + client_id: value["clientId"], + client_secret: value["clientSecret"], + api_hostname: value["apiHostname"], + admin_integration_key: value["adminIntegrationKey"], + admin_secret_key: value["adminSecretKey"], + }; +} diff --git a/packages/client-ts/src/models/AuthenticatorEmailChallenge.ts b/packages/client-ts/src/models/AuthenticatorEmailChallenge.ts new file mode 100644 index 0000000000..5603b9ffca --- /dev/null +++ b/packages/client-ts/src/models/AuthenticatorEmailChallenge.ts @@ -0,0 +1,124 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { ContextualFlowInfo } from "./ContextualFlowInfo"; +import { ContextualFlowInfoFromJSON, ContextualFlowInfoToJSON } from "./ContextualFlowInfo"; +import type { ErrorDetail } from "./ErrorDetail"; + +/** + * Authenticator Email Setup challenge + * @export + * @interface AuthenticatorEmailChallenge + */ +export interface AuthenticatorEmailChallenge { + /** + * + * @type {ContextualFlowInfo} + * @memberof AuthenticatorEmailChallenge + */ + flowInfo?: ContextualFlowInfo; + /** + * + * @type {string} + * @memberof AuthenticatorEmailChallenge + */ + component?: string; + /** + * + * @type {{ [key: string]: Array; }} + * @memberof AuthenticatorEmailChallenge + */ + responseErrors?: { [key: string]: Array }; + /** + * + * @type {string} + * @memberof AuthenticatorEmailChallenge + */ + pendingUser: string; + /** + * + * @type {string} + * @memberof AuthenticatorEmailChallenge + */ + pendingUserAvatar: string; + /** + * + * @type {string} + * @memberof AuthenticatorEmailChallenge + */ + email?: string | null; + /** + * + * @type {boolean} + * @memberof AuthenticatorEmailChallenge + */ + emailRequired?: boolean; +} + +/** + * Check if a given object implements the AuthenticatorEmailChallenge interface. + */ +export function instanceOfAuthenticatorEmailChallenge( + value: object, +): value is AuthenticatorEmailChallenge { + if (!("pendingUser" in value) || value["pendingUser"] === undefined) return false; + if (!("pendingUserAvatar" in value) || value["pendingUserAvatar"] === undefined) return false; + return true; +} + +export function AuthenticatorEmailChallengeFromJSON(json: any): AuthenticatorEmailChallenge { + return AuthenticatorEmailChallengeFromJSONTyped(json, false); +} + +export function AuthenticatorEmailChallengeFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): AuthenticatorEmailChallenge { + if (json == null) { + return json; + } + return { + flowInfo: + json["flow_info"] == null ? undefined : ContextualFlowInfoFromJSON(json["flow_info"]), + component: json["component"] == null ? undefined : json["component"], + responseErrors: json["response_errors"] == null ? undefined : json["response_errors"], + pendingUser: json["pending_user"], + pendingUserAvatar: json["pending_user_avatar"], + email: json["email"] == null ? undefined : json["email"], + emailRequired: json["email_required"] == null ? undefined : json["email_required"], + }; +} + +export function AuthenticatorEmailChallengeToJSON(json: any): AuthenticatorEmailChallenge { + return AuthenticatorEmailChallengeToJSONTyped(json, false); +} + +export function AuthenticatorEmailChallengeToJSONTyped( + value?: AuthenticatorEmailChallenge | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + flow_info: ContextualFlowInfoToJSON(value["flowInfo"]), + component: value["component"], + response_errors: value["responseErrors"], + pending_user: value["pendingUser"], + pending_user_avatar: value["pendingUserAvatar"], + email: value["email"], + email_required: value["emailRequired"], + }; +} diff --git a/packages/client-ts/src/models/AuthenticatorEmailChallengeResponseRequest.ts b/packages/client-ts/src/models/AuthenticatorEmailChallengeResponseRequest.ts new file mode 100644 index 0000000000..099886a51e --- /dev/null +++ b/packages/client-ts/src/models/AuthenticatorEmailChallengeResponseRequest.ts @@ -0,0 +1,89 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Authenticator Email Challenge response, device is set by get_response_instance + * @export + * @interface AuthenticatorEmailChallengeResponseRequest + */ +export interface AuthenticatorEmailChallengeResponseRequest { + /** + * + * @type {string} + * @memberof AuthenticatorEmailChallengeResponseRequest + */ + component?: string; + /** + * + * @type {string} + * @memberof AuthenticatorEmailChallengeResponseRequest + */ + code?: string; + /** + * + * @type {string} + * @memberof AuthenticatorEmailChallengeResponseRequest + */ + email?: string; +} + +/** + * Check if a given object implements the AuthenticatorEmailChallengeResponseRequest interface. + */ +export function instanceOfAuthenticatorEmailChallengeResponseRequest( + value: object, +): value is AuthenticatorEmailChallengeResponseRequest { + return true; +} + +export function AuthenticatorEmailChallengeResponseRequestFromJSON( + json: any, +): AuthenticatorEmailChallengeResponseRequest { + return AuthenticatorEmailChallengeResponseRequestFromJSONTyped(json, false); +} + +export function AuthenticatorEmailChallengeResponseRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): AuthenticatorEmailChallengeResponseRequest { + if (json == null) { + return json; + } + return { + component: json["component"] == null ? undefined : json["component"], + code: json["code"] == null ? undefined : json["code"], + email: json["email"] == null ? undefined : json["email"], + }; +} + +export function AuthenticatorEmailChallengeResponseRequestToJSON( + json: any, +): AuthenticatorEmailChallengeResponseRequest { + return AuthenticatorEmailChallengeResponseRequestToJSONTyped(json, false); +} + +export function AuthenticatorEmailChallengeResponseRequestToJSONTyped( + value?: AuthenticatorEmailChallengeResponseRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + component: value["component"], + code: value["code"], + email: value["email"], + }; +} diff --git a/packages/client-ts/src/models/AuthenticatorEmailStage.ts b/packages/client-ts/src/models/AuthenticatorEmailStage.ts new file mode 100644 index 0000000000..c5f8cedd30 --- /dev/null +++ b/packages/client-ts/src/models/AuthenticatorEmailStage.ts @@ -0,0 +1,235 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { FlowSet } from "./FlowSet"; +import { FlowSetFromJSON } from "./FlowSet"; + +/** + * AuthenticatorEmailStage Serializer + * @export + * @interface AuthenticatorEmailStage + */ +export interface AuthenticatorEmailStage { + /** + * + * @type {string} + * @memberof AuthenticatorEmailStage + */ + readonly pk: string; + /** + * + * @type {string} + * @memberof AuthenticatorEmailStage + */ + name: string; + /** + * Get object type so that we know how to edit the object + * @type {string} + * @memberof AuthenticatorEmailStage + */ + readonly component: string; + /** + * Return object's verbose_name + * @type {string} + * @memberof AuthenticatorEmailStage + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof AuthenticatorEmailStage + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof AuthenticatorEmailStage + */ + readonly metaModelName: string; + /** + * + * @type {Array} + * @memberof AuthenticatorEmailStage + */ + readonly flowSet: Array; + /** + * Flow used by an authenticated user to configure this Stage. If empty, user will not be able to configure this stage. + * @type {string} + * @memberof AuthenticatorEmailStage + */ + configureFlow?: string | null; + /** + * + * @type {string} + * @memberof AuthenticatorEmailStage + */ + friendlyName?: string; + /** + * When enabled, global Email connection settings will be used and connection settings below will be ignored. + * @type {boolean} + * @memberof AuthenticatorEmailStage + */ + useGlobalSettings?: boolean; + /** + * + * @type {string} + * @memberof AuthenticatorEmailStage + */ + host?: string; + /** + * + * @type {number} + * @memberof AuthenticatorEmailStage + */ + port?: number; + /** + * + * @type {string} + * @memberof AuthenticatorEmailStage + */ + username?: string; + /** + * + * @type {string} + * @memberof AuthenticatorEmailStage + */ + password?: string; + /** + * + * @type {boolean} + * @memberof AuthenticatorEmailStage + */ + useTls?: boolean; + /** + * + * @type {boolean} + * @memberof AuthenticatorEmailStage + */ + useSsl?: boolean; + /** + * + * @type {number} + * @memberof AuthenticatorEmailStage + */ + timeout?: number; + /** + * + * @type {string} + * @memberof AuthenticatorEmailStage + */ + fromAddress?: string; + /** + * + * @type {string} + * @memberof AuthenticatorEmailStage + */ + subject?: string; + /** + * Time the token sent is valid (Format: hours=3,minutes=17,seconds=300). + * @type {string} + * @memberof AuthenticatorEmailStage + */ + tokenExpiry?: string; + /** + * + * @type {string} + * @memberof AuthenticatorEmailStage + */ + template?: string; +} + +/** + * Check if a given object implements the AuthenticatorEmailStage interface. + */ +export function instanceOfAuthenticatorEmailStage(value: object): value is AuthenticatorEmailStage { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + if (!("flowSet" in value) || value["flowSet"] === undefined) return false; + return true; +} + +export function AuthenticatorEmailStageFromJSON(json: any): AuthenticatorEmailStage { + return AuthenticatorEmailStageFromJSONTyped(json, false); +} + +export function AuthenticatorEmailStageFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): AuthenticatorEmailStage { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + component: json["component"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + flowSet: (json["flow_set"] as Array).map(FlowSetFromJSON), + configureFlow: json["configure_flow"] == null ? undefined : json["configure_flow"], + friendlyName: json["friendly_name"] == null ? undefined : json["friendly_name"], + useGlobalSettings: + json["use_global_settings"] == null ? undefined : json["use_global_settings"], + host: json["host"] == null ? undefined : json["host"], + port: json["port"] == null ? undefined : json["port"], + username: json["username"] == null ? undefined : json["username"], + password: json["password"] == null ? undefined : json["password"], + useTls: json["use_tls"] == null ? undefined : json["use_tls"], + useSsl: json["use_ssl"] == null ? undefined : json["use_ssl"], + timeout: json["timeout"] == null ? undefined : json["timeout"], + fromAddress: json["from_address"] == null ? undefined : json["from_address"], + subject: json["subject"] == null ? undefined : json["subject"], + tokenExpiry: json["token_expiry"] == null ? undefined : json["token_expiry"], + template: json["template"] == null ? undefined : json["template"], + }; +} + +export function AuthenticatorEmailStageToJSON(json: any): AuthenticatorEmailStage { + return AuthenticatorEmailStageToJSONTyped(json, false); +} + +export function AuthenticatorEmailStageToJSONTyped( + value?: Omit< + AuthenticatorEmailStage, + "pk" | "component" | "verbose_name" | "verbose_name_plural" | "meta_model_name" | "flow_set" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + configure_flow: value["configureFlow"], + friendly_name: value["friendlyName"], + use_global_settings: value["useGlobalSettings"], + host: value["host"], + port: value["port"], + username: value["username"], + password: value["password"], + use_tls: value["useTls"], + use_ssl: value["useSsl"], + timeout: value["timeout"], + from_address: value["fromAddress"], + subject: value["subject"], + token_expiry: value["tokenExpiry"], + template: value["template"], + }; +} diff --git a/packages/client-ts/src/models/AuthenticatorEmailStageRequest.ts b/packages/client-ts/src/models/AuthenticatorEmailStageRequest.ts new file mode 100644 index 0000000000..22836610fd --- /dev/null +++ b/packages/client-ts/src/models/AuthenticatorEmailStageRequest.ts @@ -0,0 +1,183 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * AuthenticatorEmailStage Serializer + * @export + * @interface AuthenticatorEmailStageRequest + */ +export interface AuthenticatorEmailStageRequest { + /** + * + * @type {string} + * @memberof AuthenticatorEmailStageRequest + */ + name: string; + /** + * Flow used by an authenticated user to configure this Stage. If empty, user will not be able to configure this stage. + * @type {string} + * @memberof AuthenticatorEmailStageRequest + */ + configureFlow?: string | null; + /** + * + * @type {string} + * @memberof AuthenticatorEmailStageRequest + */ + friendlyName?: string; + /** + * When enabled, global Email connection settings will be used and connection settings below will be ignored. + * @type {boolean} + * @memberof AuthenticatorEmailStageRequest + */ + useGlobalSettings?: boolean; + /** + * + * @type {string} + * @memberof AuthenticatorEmailStageRequest + */ + host?: string; + /** + * + * @type {number} + * @memberof AuthenticatorEmailStageRequest + */ + port?: number; + /** + * + * @type {string} + * @memberof AuthenticatorEmailStageRequest + */ + username?: string; + /** + * + * @type {string} + * @memberof AuthenticatorEmailStageRequest + */ + password?: string; + /** + * + * @type {boolean} + * @memberof AuthenticatorEmailStageRequest + */ + useTls?: boolean; + /** + * + * @type {boolean} + * @memberof AuthenticatorEmailStageRequest + */ + useSsl?: boolean; + /** + * + * @type {number} + * @memberof AuthenticatorEmailStageRequest + */ + timeout?: number; + /** + * + * @type {string} + * @memberof AuthenticatorEmailStageRequest + */ + fromAddress?: string; + /** + * + * @type {string} + * @memberof AuthenticatorEmailStageRequest + */ + subject?: string; + /** + * Time the token sent is valid (Format: hours=3,minutes=17,seconds=300). + * @type {string} + * @memberof AuthenticatorEmailStageRequest + */ + tokenExpiry?: string; + /** + * + * @type {string} + * @memberof AuthenticatorEmailStageRequest + */ + template?: string; +} + +/** + * Check if a given object implements the AuthenticatorEmailStageRequest interface. + */ +export function instanceOfAuthenticatorEmailStageRequest( + value: object, +): value is AuthenticatorEmailStageRequest { + if (!("name" in value) || value["name"] === undefined) return false; + return true; +} + +export function AuthenticatorEmailStageRequestFromJSON(json: any): AuthenticatorEmailStageRequest { + return AuthenticatorEmailStageRequestFromJSONTyped(json, false); +} + +export function AuthenticatorEmailStageRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): AuthenticatorEmailStageRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + configureFlow: json["configure_flow"] == null ? undefined : json["configure_flow"], + friendlyName: json["friendly_name"] == null ? undefined : json["friendly_name"], + useGlobalSettings: + json["use_global_settings"] == null ? undefined : json["use_global_settings"], + host: json["host"] == null ? undefined : json["host"], + port: json["port"] == null ? undefined : json["port"], + username: json["username"] == null ? undefined : json["username"], + password: json["password"] == null ? undefined : json["password"], + useTls: json["use_tls"] == null ? undefined : json["use_tls"], + useSsl: json["use_ssl"] == null ? undefined : json["use_ssl"], + timeout: json["timeout"] == null ? undefined : json["timeout"], + fromAddress: json["from_address"] == null ? undefined : json["from_address"], + subject: json["subject"] == null ? undefined : json["subject"], + tokenExpiry: json["token_expiry"] == null ? undefined : json["token_expiry"], + template: json["template"] == null ? undefined : json["template"], + }; +} + +export function AuthenticatorEmailStageRequestToJSON(json: any): AuthenticatorEmailStageRequest { + return AuthenticatorEmailStageRequestToJSONTyped(json, false); +} + +export function AuthenticatorEmailStageRequestToJSONTyped( + value?: AuthenticatorEmailStageRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + configure_flow: value["configureFlow"], + friendly_name: value["friendlyName"], + use_global_settings: value["useGlobalSettings"], + host: value["host"], + port: value["port"], + username: value["username"], + password: value["password"], + use_tls: value["useTls"], + use_ssl: value["useSsl"], + timeout: value["timeout"], + from_address: value["fromAddress"], + subject: value["subject"], + token_expiry: value["tokenExpiry"], + template: value["template"], + }; +} diff --git a/packages/client-ts/src/models/AuthenticatorEndpointGDTCStage.ts b/packages/client-ts/src/models/AuthenticatorEndpointGDTCStage.ts new file mode 100644 index 0000000000..f901d8feda --- /dev/null +++ b/packages/client-ts/src/models/AuthenticatorEndpointGDTCStage.ts @@ -0,0 +1,149 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { FlowSet } from "./FlowSet"; +import { FlowSetFromJSON } from "./FlowSet"; + +/** + * AuthenticatorEndpointGDTCStage Serializer + * @export + * @interface AuthenticatorEndpointGDTCStage + */ +export interface AuthenticatorEndpointGDTCStage { + /** + * + * @type {string} + * @memberof AuthenticatorEndpointGDTCStage + */ + readonly pk: string; + /** + * + * @type {string} + * @memberof AuthenticatorEndpointGDTCStage + */ + name: string; + /** + * Get object type so that we know how to edit the object + * @type {string} + * @memberof AuthenticatorEndpointGDTCStage + */ + readonly component: string; + /** + * Return object's verbose_name + * @type {string} + * @memberof AuthenticatorEndpointGDTCStage + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof AuthenticatorEndpointGDTCStage + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof AuthenticatorEndpointGDTCStage + */ + readonly metaModelName: string; + /** + * + * @type {Array} + * @memberof AuthenticatorEndpointGDTCStage + */ + readonly flowSet: Array; + /** + * Flow used by an authenticated user to configure this Stage. If empty, user will not be able to configure this stage. + * @type {string} + * @memberof AuthenticatorEndpointGDTCStage + */ + configureFlow?: string | null; + /** + * + * @type {string} + * @memberof AuthenticatorEndpointGDTCStage + */ + friendlyName?: string; + /** + * + * @type {{ [key: string]: any; }} + * @memberof AuthenticatorEndpointGDTCStage + */ + credentials: { [key: string]: any }; +} + +/** + * Check if a given object implements the AuthenticatorEndpointGDTCStage interface. + */ +export function instanceOfAuthenticatorEndpointGDTCStage( + value: object, +): value is AuthenticatorEndpointGDTCStage { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + if (!("flowSet" in value) || value["flowSet"] === undefined) return false; + if (!("credentials" in value) || value["credentials"] === undefined) return false; + return true; +} + +export function AuthenticatorEndpointGDTCStageFromJSON(json: any): AuthenticatorEndpointGDTCStage { + return AuthenticatorEndpointGDTCStageFromJSONTyped(json, false); +} + +export function AuthenticatorEndpointGDTCStageFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): AuthenticatorEndpointGDTCStage { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + component: json["component"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + flowSet: (json["flow_set"] as Array).map(FlowSetFromJSON), + configureFlow: json["configure_flow"] == null ? undefined : json["configure_flow"], + friendlyName: json["friendly_name"] == null ? undefined : json["friendly_name"], + credentials: json["credentials"], + }; +} + +export function AuthenticatorEndpointGDTCStageToJSON(json: any): AuthenticatorEndpointGDTCStage { + return AuthenticatorEndpointGDTCStageToJSONTyped(json, false); +} + +export function AuthenticatorEndpointGDTCStageToJSONTyped( + value?: Omit< + AuthenticatorEndpointGDTCStage, + "pk" | "component" | "verbose_name" | "verbose_name_plural" | "meta_model_name" | "flow_set" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + configure_flow: value["configureFlow"], + friendly_name: value["friendlyName"], + credentials: value["credentials"], + }; +} diff --git a/packages/client-ts/src/models/AuthenticatorEndpointGDTCStageRequest.ts b/packages/client-ts/src/models/AuthenticatorEndpointGDTCStageRequest.ts new file mode 100644 index 0000000000..1d1fe2cba6 --- /dev/null +++ b/packages/client-ts/src/models/AuthenticatorEndpointGDTCStageRequest.ts @@ -0,0 +1,99 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * AuthenticatorEndpointGDTCStage Serializer + * @export + * @interface AuthenticatorEndpointGDTCStageRequest + */ +export interface AuthenticatorEndpointGDTCStageRequest { + /** + * + * @type {string} + * @memberof AuthenticatorEndpointGDTCStageRequest + */ + name: string; + /** + * Flow used by an authenticated user to configure this Stage. If empty, user will not be able to configure this stage. + * @type {string} + * @memberof AuthenticatorEndpointGDTCStageRequest + */ + configureFlow?: string | null; + /** + * + * @type {string} + * @memberof AuthenticatorEndpointGDTCStageRequest + */ + friendlyName?: string; + /** + * + * @type {{ [key: string]: any; }} + * @memberof AuthenticatorEndpointGDTCStageRequest + */ + credentials: { [key: string]: any }; +} + +/** + * Check if a given object implements the AuthenticatorEndpointGDTCStageRequest interface. + */ +export function instanceOfAuthenticatorEndpointGDTCStageRequest( + value: object, +): value is AuthenticatorEndpointGDTCStageRequest { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("credentials" in value) || value["credentials"] === undefined) return false; + return true; +} + +export function AuthenticatorEndpointGDTCStageRequestFromJSON( + json: any, +): AuthenticatorEndpointGDTCStageRequest { + return AuthenticatorEndpointGDTCStageRequestFromJSONTyped(json, false); +} + +export function AuthenticatorEndpointGDTCStageRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): AuthenticatorEndpointGDTCStageRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + configureFlow: json["configure_flow"] == null ? undefined : json["configure_flow"], + friendlyName: json["friendly_name"] == null ? undefined : json["friendly_name"], + credentials: json["credentials"], + }; +} + +export function AuthenticatorEndpointGDTCStageRequestToJSON( + json: any, +): AuthenticatorEndpointGDTCStageRequest { + return AuthenticatorEndpointGDTCStageRequestToJSONTyped(json, false); +} + +export function AuthenticatorEndpointGDTCStageRequestToJSONTyped( + value?: AuthenticatorEndpointGDTCStageRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + configure_flow: value["configureFlow"], + friendly_name: value["friendlyName"], + credentials: value["credentials"], + }; +} diff --git a/packages/client-ts/src/models/AuthenticatorSMSChallenge.ts b/packages/client-ts/src/models/AuthenticatorSMSChallenge.ts new file mode 100644 index 0000000000..f18eb78828 --- /dev/null +++ b/packages/client-ts/src/models/AuthenticatorSMSChallenge.ts @@ -0,0 +1,117 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { ContextualFlowInfo } from "./ContextualFlowInfo"; +import { ContextualFlowInfoFromJSON, ContextualFlowInfoToJSON } from "./ContextualFlowInfo"; +import type { ErrorDetail } from "./ErrorDetail"; + +/** + * SMS Setup challenge + * @export + * @interface AuthenticatorSMSChallenge + */ +export interface AuthenticatorSMSChallenge { + /** + * + * @type {ContextualFlowInfo} + * @memberof AuthenticatorSMSChallenge + */ + flowInfo?: ContextualFlowInfo; + /** + * + * @type {string} + * @memberof AuthenticatorSMSChallenge + */ + component?: string; + /** + * + * @type {{ [key: string]: Array; }} + * @memberof AuthenticatorSMSChallenge + */ + responseErrors?: { [key: string]: Array }; + /** + * + * @type {string} + * @memberof AuthenticatorSMSChallenge + */ + pendingUser: string; + /** + * + * @type {string} + * @memberof AuthenticatorSMSChallenge + */ + pendingUserAvatar: string; + /** + * + * @type {boolean} + * @memberof AuthenticatorSMSChallenge + */ + phoneNumberRequired?: boolean; +} + +/** + * Check if a given object implements the AuthenticatorSMSChallenge interface. + */ +export function instanceOfAuthenticatorSMSChallenge( + value: object, +): value is AuthenticatorSMSChallenge { + if (!("pendingUser" in value) || value["pendingUser"] === undefined) return false; + if (!("pendingUserAvatar" in value) || value["pendingUserAvatar"] === undefined) return false; + return true; +} + +export function AuthenticatorSMSChallengeFromJSON(json: any): AuthenticatorSMSChallenge { + return AuthenticatorSMSChallengeFromJSONTyped(json, false); +} + +export function AuthenticatorSMSChallengeFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): AuthenticatorSMSChallenge { + if (json == null) { + return json; + } + return { + flowInfo: + json["flow_info"] == null ? undefined : ContextualFlowInfoFromJSON(json["flow_info"]), + component: json["component"] == null ? undefined : json["component"], + responseErrors: json["response_errors"] == null ? undefined : json["response_errors"], + pendingUser: json["pending_user"], + pendingUserAvatar: json["pending_user_avatar"], + phoneNumberRequired: + json["phone_number_required"] == null ? undefined : json["phone_number_required"], + }; +} + +export function AuthenticatorSMSChallengeToJSON(json: any): AuthenticatorSMSChallenge { + return AuthenticatorSMSChallengeToJSONTyped(json, false); +} + +export function AuthenticatorSMSChallengeToJSONTyped( + value?: AuthenticatorSMSChallenge | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + flow_info: ContextualFlowInfoToJSON(value["flowInfo"]), + component: value["component"], + response_errors: value["responseErrors"], + pending_user: value["pendingUser"], + pending_user_avatar: value["pendingUserAvatar"], + phone_number_required: value["phoneNumberRequired"], + }; +} diff --git a/packages/client-ts/src/models/AuthenticatorSMSChallengeResponseRequest.ts b/packages/client-ts/src/models/AuthenticatorSMSChallengeResponseRequest.ts new file mode 100644 index 0000000000..a8d6d15876 --- /dev/null +++ b/packages/client-ts/src/models/AuthenticatorSMSChallengeResponseRequest.ts @@ -0,0 +1,89 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * SMS Challenge response, device is set by get_response_instance + * @export + * @interface AuthenticatorSMSChallengeResponseRequest + */ +export interface AuthenticatorSMSChallengeResponseRequest { + /** + * + * @type {string} + * @memberof AuthenticatorSMSChallengeResponseRequest + */ + component?: string; + /** + * + * @type {string} + * @memberof AuthenticatorSMSChallengeResponseRequest + */ + code?: string; + /** + * + * @type {string} + * @memberof AuthenticatorSMSChallengeResponseRequest + */ + phoneNumber?: string; +} + +/** + * Check if a given object implements the AuthenticatorSMSChallengeResponseRequest interface. + */ +export function instanceOfAuthenticatorSMSChallengeResponseRequest( + value: object, +): value is AuthenticatorSMSChallengeResponseRequest { + return true; +} + +export function AuthenticatorSMSChallengeResponseRequestFromJSON( + json: any, +): AuthenticatorSMSChallengeResponseRequest { + return AuthenticatorSMSChallengeResponseRequestFromJSONTyped(json, false); +} + +export function AuthenticatorSMSChallengeResponseRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): AuthenticatorSMSChallengeResponseRequest { + if (json == null) { + return json; + } + return { + component: json["component"] == null ? undefined : json["component"], + code: json["code"] == null ? undefined : json["code"], + phoneNumber: json["phone_number"] == null ? undefined : json["phone_number"], + }; +} + +export function AuthenticatorSMSChallengeResponseRequestToJSON( + json: any, +): AuthenticatorSMSChallengeResponseRequest { + return AuthenticatorSMSChallengeResponseRequestToJSONTyped(json, false); +} + +export function AuthenticatorSMSChallengeResponseRequestToJSONTyped( + value?: AuthenticatorSMSChallengeResponseRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + component: value["component"], + code: value["code"], + phone_number: value["phoneNumber"], + }; +} diff --git a/packages/client-ts/src/models/AuthenticatorSMSStage.ts b/packages/client-ts/src/models/AuthenticatorSMSStage.ts new file mode 100644 index 0000000000..52208c6617 --- /dev/null +++ b/packages/client-ts/src/models/AuthenticatorSMSStage.ts @@ -0,0 +1,210 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { AuthTypeEnum } from "./AuthTypeEnum"; +import { AuthTypeEnumFromJSON, AuthTypeEnumToJSON } from "./AuthTypeEnum"; +import type { FlowSet } from "./FlowSet"; +import { FlowSetFromJSON } from "./FlowSet"; +import type { ProviderEnum } from "./ProviderEnum"; +import { ProviderEnumFromJSON, ProviderEnumToJSON } from "./ProviderEnum"; + +/** + * AuthenticatorSMSStage Serializer + * @export + * @interface AuthenticatorSMSStage + */ +export interface AuthenticatorSMSStage { + /** + * + * @type {string} + * @memberof AuthenticatorSMSStage + */ + readonly pk: string; + /** + * + * @type {string} + * @memberof AuthenticatorSMSStage + */ + name: string; + /** + * Get object type so that we know how to edit the object + * @type {string} + * @memberof AuthenticatorSMSStage + */ + readonly component: string; + /** + * Return object's verbose_name + * @type {string} + * @memberof AuthenticatorSMSStage + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof AuthenticatorSMSStage + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof AuthenticatorSMSStage + */ + readonly metaModelName: string; + /** + * + * @type {Array} + * @memberof AuthenticatorSMSStage + */ + readonly flowSet: Array; + /** + * Flow used by an authenticated user to configure this Stage. If empty, user will not be able to configure this stage. + * @type {string} + * @memberof AuthenticatorSMSStage + */ + configureFlow?: string | null; + /** + * + * @type {string} + * @memberof AuthenticatorSMSStage + */ + friendlyName?: string; + /** + * + * @type {ProviderEnum} + * @memberof AuthenticatorSMSStage + */ + provider: ProviderEnum; + /** + * + * @type {string} + * @memberof AuthenticatorSMSStage + */ + fromNumber: string; + /** + * + * @type {string} + * @memberof AuthenticatorSMSStage + */ + accountSid: string; + /** + * + * @type {string} + * @memberof AuthenticatorSMSStage + */ + auth: string; + /** + * + * @type {string} + * @memberof AuthenticatorSMSStage + */ + authPassword?: string; + /** + * + * @type {AuthTypeEnum} + * @memberof AuthenticatorSMSStage + */ + authType?: AuthTypeEnum; + /** + * When enabled, the Phone number is only used during enrollment to verify the users authenticity. Only a hash of the phone number is saved to ensure it is not reused in the future. + * @type {boolean} + * @memberof AuthenticatorSMSStage + */ + verifyOnly?: boolean; + /** + * Optionally modify the payload being sent to custom providers. + * @type {string} + * @memberof AuthenticatorSMSStage + */ + mapping?: string | null; +} + +/** + * Check if a given object implements the AuthenticatorSMSStage interface. + */ +export function instanceOfAuthenticatorSMSStage(value: object): value is AuthenticatorSMSStage { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + if (!("flowSet" in value) || value["flowSet"] === undefined) return false; + if (!("provider" in value) || value["provider"] === undefined) return false; + if (!("fromNumber" in value) || value["fromNumber"] === undefined) return false; + if (!("accountSid" in value) || value["accountSid"] === undefined) return false; + if (!("auth" in value) || value["auth"] === undefined) return false; + return true; +} + +export function AuthenticatorSMSStageFromJSON(json: any): AuthenticatorSMSStage { + return AuthenticatorSMSStageFromJSONTyped(json, false); +} + +export function AuthenticatorSMSStageFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): AuthenticatorSMSStage { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + component: json["component"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + flowSet: (json["flow_set"] as Array).map(FlowSetFromJSON), + configureFlow: json["configure_flow"] == null ? undefined : json["configure_flow"], + friendlyName: json["friendly_name"] == null ? undefined : json["friendly_name"], + provider: ProviderEnumFromJSON(json["provider"]), + fromNumber: json["from_number"], + accountSid: json["account_sid"], + auth: json["auth"], + authPassword: json["auth_password"] == null ? undefined : json["auth_password"], + authType: json["auth_type"] == null ? undefined : AuthTypeEnumFromJSON(json["auth_type"]), + verifyOnly: json["verify_only"] == null ? undefined : json["verify_only"], + mapping: json["mapping"] == null ? undefined : json["mapping"], + }; +} + +export function AuthenticatorSMSStageToJSON(json: any): AuthenticatorSMSStage { + return AuthenticatorSMSStageToJSONTyped(json, false); +} + +export function AuthenticatorSMSStageToJSONTyped( + value?: Omit< + AuthenticatorSMSStage, + "pk" | "component" | "verbose_name" | "verbose_name_plural" | "meta_model_name" | "flow_set" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + configure_flow: value["configureFlow"], + friendly_name: value["friendlyName"], + provider: ProviderEnumToJSON(value["provider"]), + from_number: value["fromNumber"], + account_sid: value["accountSid"], + auth: value["auth"], + auth_password: value["authPassword"], + auth_type: AuthTypeEnumToJSON(value["authType"]), + verify_only: value["verifyOnly"], + mapping: value["mapping"], + }; +} diff --git a/packages/client-ts/src/models/AuthenticatorSMSStageRequest.ts b/packages/client-ts/src/models/AuthenticatorSMSStageRequest.ts new file mode 100644 index 0000000000..0333c97f0e --- /dev/null +++ b/packages/client-ts/src/models/AuthenticatorSMSStageRequest.ts @@ -0,0 +1,159 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { AuthTypeEnum } from "./AuthTypeEnum"; +import { AuthTypeEnumFromJSON, AuthTypeEnumToJSON } from "./AuthTypeEnum"; +import type { ProviderEnum } from "./ProviderEnum"; +import { ProviderEnumFromJSON, ProviderEnumToJSON } from "./ProviderEnum"; + +/** + * AuthenticatorSMSStage Serializer + * @export + * @interface AuthenticatorSMSStageRequest + */ +export interface AuthenticatorSMSStageRequest { + /** + * + * @type {string} + * @memberof AuthenticatorSMSStageRequest + */ + name: string; + /** + * Flow used by an authenticated user to configure this Stage. If empty, user will not be able to configure this stage. + * @type {string} + * @memberof AuthenticatorSMSStageRequest + */ + configureFlow?: string | null; + /** + * + * @type {string} + * @memberof AuthenticatorSMSStageRequest + */ + friendlyName?: string; + /** + * + * @type {ProviderEnum} + * @memberof AuthenticatorSMSStageRequest + */ + provider: ProviderEnum; + /** + * + * @type {string} + * @memberof AuthenticatorSMSStageRequest + */ + fromNumber: string; + /** + * + * @type {string} + * @memberof AuthenticatorSMSStageRequest + */ + accountSid: string; + /** + * + * @type {string} + * @memberof AuthenticatorSMSStageRequest + */ + auth: string; + /** + * + * @type {string} + * @memberof AuthenticatorSMSStageRequest + */ + authPassword?: string; + /** + * + * @type {AuthTypeEnum} + * @memberof AuthenticatorSMSStageRequest + */ + authType?: AuthTypeEnum; + /** + * When enabled, the Phone number is only used during enrollment to verify the users authenticity. Only a hash of the phone number is saved to ensure it is not reused in the future. + * @type {boolean} + * @memberof AuthenticatorSMSStageRequest + */ + verifyOnly?: boolean; + /** + * Optionally modify the payload being sent to custom providers. + * @type {string} + * @memberof AuthenticatorSMSStageRequest + */ + mapping?: string | null; +} + +/** + * Check if a given object implements the AuthenticatorSMSStageRequest interface. + */ +export function instanceOfAuthenticatorSMSStageRequest( + value: object, +): value is AuthenticatorSMSStageRequest { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("provider" in value) || value["provider"] === undefined) return false; + if (!("fromNumber" in value) || value["fromNumber"] === undefined) return false; + if (!("accountSid" in value) || value["accountSid"] === undefined) return false; + if (!("auth" in value) || value["auth"] === undefined) return false; + return true; +} + +export function AuthenticatorSMSStageRequestFromJSON(json: any): AuthenticatorSMSStageRequest { + return AuthenticatorSMSStageRequestFromJSONTyped(json, false); +} + +export function AuthenticatorSMSStageRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): AuthenticatorSMSStageRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + configureFlow: json["configure_flow"] == null ? undefined : json["configure_flow"], + friendlyName: json["friendly_name"] == null ? undefined : json["friendly_name"], + provider: ProviderEnumFromJSON(json["provider"]), + fromNumber: json["from_number"], + accountSid: json["account_sid"], + auth: json["auth"], + authPassword: json["auth_password"] == null ? undefined : json["auth_password"], + authType: json["auth_type"] == null ? undefined : AuthTypeEnumFromJSON(json["auth_type"]), + verifyOnly: json["verify_only"] == null ? undefined : json["verify_only"], + mapping: json["mapping"] == null ? undefined : json["mapping"], + }; +} + +export function AuthenticatorSMSStageRequestToJSON(json: any): AuthenticatorSMSStageRequest { + return AuthenticatorSMSStageRequestToJSONTyped(json, false); +} + +export function AuthenticatorSMSStageRequestToJSONTyped( + value?: AuthenticatorSMSStageRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + configure_flow: value["configureFlow"], + friendly_name: value["friendlyName"], + provider: ProviderEnumToJSON(value["provider"]), + from_number: value["fromNumber"], + account_sid: value["accountSid"], + auth: value["auth"], + auth_password: value["authPassword"], + auth_type: AuthTypeEnumToJSON(value["authType"]), + verify_only: value["verifyOnly"], + mapping: value["mapping"], + }; +} diff --git a/packages/client-ts/src/models/AuthenticatorStaticChallenge.ts b/packages/client-ts/src/models/AuthenticatorStaticChallenge.ts new file mode 100644 index 0000000000..5d1b06c5ac --- /dev/null +++ b/packages/client-ts/src/models/AuthenticatorStaticChallenge.ts @@ -0,0 +1,117 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { ContextualFlowInfo } from "./ContextualFlowInfo"; +import { ContextualFlowInfoFromJSON, ContextualFlowInfoToJSON } from "./ContextualFlowInfo"; +import type { ErrorDetail } from "./ErrorDetail"; + +/** + * Static authenticator challenge + * @export + * @interface AuthenticatorStaticChallenge + */ +export interface AuthenticatorStaticChallenge { + /** + * + * @type {ContextualFlowInfo} + * @memberof AuthenticatorStaticChallenge + */ + flowInfo?: ContextualFlowInfo; + /** + * + * @type {string} + * @memberof AuthenticatorStaticChallenge + */ + component?: string; + /** + * + * @type {{ [key: string]: Array; }} + * @memberof AuthenticatorStaticChallenge + */ + responseErrors?: { [key: string]: Array }; + /** + * + * @type {string} + * @memberof AuthenticatorStaticChallenge + */ + pendingUser: string; + /** + * + * @type {string} + * @memberof AuthenticatorStaticChallenge + */ + pendingUserAvatar: string; + /** + * + * @type {Array} + * @memberof AuthenticatorStaticChallenge + */ + codes: Array; +} + +/** + * Check if a given object implements the AuthenticatorStaticChallenge interface. + */ +export function instanceOfAuthenticatorStaticChallenge( + value: object, +): value is AuthenticatorStaticChallenge { + if (!("pendingUser" in value) || value["pendingUser"] === undefined) return false; + if (!("pendingUserAvatar" in value) || value["pendingUserAvatar"] === undefined) return false; + if (!("codes" in value) || value["codes"] === undefined) return false; + return true; +} + +export function AuthenticatorStaticChallengeFromJSON(json: any): AuthenticatorStaticChallenge { + return AuthenticatorStaticChallengeFromJSONTyped(json, false); +} + +export function AuthenticatorStaticChallengeFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): AuthenticatorStaticChallenge { + if (json == null) { + return json; + } + return { + flowInfo: + json["flow_info"] == null ? undefined : ContextualFlowInfoFromJSON(json["flow_info"]), + component: json["component"] == null ? undefined : json["component"], + responseErrors: json["response_errors"] == null ? undefined : json["response_errors"], + pendingUser: json["pending_user"], + pendingUserAvatar: json["pending_user_avatar"], + codes: json["codes"], + }; +} + +export function AuthenticatorStaticChallengeToJSON(json: any): AuthenticatorStaticChallenge { + return AuthenticatorStaticChallengeToJSONTyped(json, false); +} + +export function AuthenticatorStaticChallengeToJSONTyped( + value?: AuthenticatorStaticChallenge | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + flow_info: ContextualFlowInfoToJSON(value["flowInfo"]), + component: value["component"], + response_errors: value["responseErrors"], + pending_user: value["pendingUser"], + pending_user_avatar: value["pendingUserAvatar"], + codes: value["codes"], + }; +} diff --git a/packages/client-ts/src/models/AuthenticatorStaticChallengeResponseRequest.ts b/packages/client-ts/src/models/AuthenticatorStaticChallengeResponseRequest.ts new file mode 100644 index 0000000000..ae9a0a87ed --- /dev/null +++ b/packages/client-ts/src/models/AuthenticatorStaticChallengeResponseRequest.ts @@ -0,0 +1,73 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Pseudo class for static response + * @export + * @interface AuthenticatorStaticChallengeResponseRequest + */ +export interface AuthenticatorStaticChallengeResponseRequest { + /** + * + * @type {string} + * @memberof AuthenticatorStaticChallengeResponseRequest + */ + component?: string; +} + +/** + * Check if a given object implements the AuthenticatorStaticChallengeResponseRequest interface. + */ +export function instanceOfAuthenticatorStaticChallengeResponseRequest( + value: object, +): value is AuthenticatorStaticChallengeResponseRequest { + return true; +} + +export function AuthenticatorStaticChallengeResponseRequestFromJSON( + json: any, +): AuthenticatorStaticChallengeResponseRequest { + return AuthenticatorStaticChallengeResponseRequestFromJSONTyped(json, false); +} + +export function AuthenticatorStaticChallengeResponseRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): AuthenticatorStaticChallengeResponseRequest { + if (json == null) { + return json; + } + return { + component: json["component"] == null ? undefined : json["component"], + }; +} + +export function AuthenticatorStaticChallengeResponseRequestToJSON( + json: any, +): AuthenticatorStaticChallengeResponseRequest { + return AuthenticatorStaticChallengeResponseRequestToJSONTyped(json, false); +} + +export function AuthenticatorStaticChallengeResponseRequestToJSONTyped( + value?: AuthenticatorStaticChallengeResponseRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + component: value["component"], + }; +} diff --git a/packages/client-ts/src/models/AuthenticatorStaticStage.ts b/packages/client-ts/src/models/AuthenticatorStaticStage.ts new file mode 100644 index 0000000000..347e64dee4 --- /dev/null +++ b/packages/client-ts/src/models/AuthenticatorStaticStage.ts @@ -0,0 +1,156 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { FlowSet } from "./FlowSet"; +import { FlowSetFromJSON } from "./FlowSet"; + +/** + * AuthenticatorStaticStage Serializer + * @export + * @interface AuthenticatorStaticStage + */ +export interface AuthenticatorStaticStage { + /** + * + * @type {string} + * @memberof AuthenticatorStaticStage + */ + readonly pk: string; + /** + * + * @type {string} + * @memberof AuthenticatorStaticStage + */ + name: string; + /** + * Get object type so that we know how to edit the object + * @type {string} + * @memberof AuthenticatorStaticStage + */ + readonly component: string; + /** + * Return object's verbose_name + * @type {string} + * @memberof AuthenticatorStaticStage + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof AuthenticatorStaticStage + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof AuthenticatorStaticStage + */ + readonly metaModelName: string; + /** + * + * @type {Array} + * @memberof AuthenticatorStaticStage + */ + readonly flowSet: Array; + /** + * Flow used by an authenticated user to configure this Stage. If empty, user will not be able to configure this stage. + * @type {string} + * @memberof AuthenticatorStaticStage + */ + configureFlow?: string | null; + /** + * + * @type {string} + * @memberof AuthenticatorStaticStage + */ + friendlyName?: string; + /** + * + * @type {number} + * @memberof AuthenticatorStaticStage + */ + tokenCount?: number; + /** + * + * @type {number} + * @memberof AuthenticatorStaticStage + */ + tokenLength?: number; +} + +/** + * Check if a given object implements the AuthenticatorStaticStage interface. + */ +export function instanceOfAuthenticatorStaticStage( + value: object, +): value is AuthenticatorStaticStage { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + if (!("flowSet" in value) || value["flowSet"] === undefined) return false; + return true; +} + +export function AuthenticatorStaticStageFromJSON(json: any): AuthenticatorStaticStage { + return AuthenticatorStaticStageFromJSONTyped(json, false); +} + +export function AuthenticatorStaticStageFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): AuthenticatorStaticStage { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + component: json["component"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + flowSet: (json["flow_set"] as Array).map(FlowSetFromJSON), + configureFlow: json["configure_flow"] == null ? undefined : json["configure_flow"], + friendlyName: json["friendly_name"] == null ? undefined : json["friendly_name"], + tokenCount: json["token_count"] == null ? undefined : json["token_count"], + tokenLength: json["token_length"] == null ? undefined : json["token_length"], + }; +} + +export function AuthenticatorStaticStageToJSON(json: any): AuthenticatorStaticStage { + return AuthenticatorStaticStageToJSONTyped(json, false); +} + +export function AuthenticatorStaticStageToJSONTyped( + value?: Omit< + AuthenticatorStaticStage, + "pk" | "component" | "verbose_name" | "verbose_name_plural" | "meta_model_name" | "flow_set" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + configure_flow: value["configureFlow"], + friendly_name: value["friendlyName"], + token_count: value["tokenCount"], + token_length: value["tokenLength"], + }; +} diff --git a/packages/client-ts/src/models/AuthenticatorStaticStageRequest.ts b/packages/client-ts/src/models/AuthenticatorStaticStageRequest.ts new file mode 100644 index 0000000000..757742d5c0 --- /dev/null +++ b/packages/client-ts/src/models/AuthenticatorStaticStageRequest.ts @@ -0,0 +1,104 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * AuthenticatorStaticStage Serializer + * @export + * @interface AuthenticatorStaticStageRequest + */ +export interface AuthenticatorStaticStageRequest { + /** + * + * @type {string} + * @memberof AuthenticatorStaticStageRequest + */ + name: string; + /** + * Flow used by an authenticated user to configure this Stage. If empty, user will not be able to configure this stage. + * @type {string} + * @memberof AuthenticatorStaticStageRequest + */ + configureFlow?: string | null; + /** + * + * @type {string} + * @memberof AuthenticatorStaticStageRequest + */ + friendlyName?: string; + /** + * + * @type {number} + * @memberof AuthenticatorStaticStageRequest + */ + tokenCount?: number; + /** + * + * @type {number} + * @memberof AuthenticatorStaticStageRequest + */ + tokenLength?: number; +} + +/** + * Check if a given object implements the AuthenticatorStaticStageRequest interface. + */ +export function instanceOfAuthenticatorStaticStageRequest( + value: object, +): value is AuthenticatorStaticStageRequest { + if (!("name" in value) || value["name"] === undefined) return false; + return true; +} + +export function AuthenticatorStaticStageRequestFromJSON( + json: any, +): AuthenticatorStaticStageRequest { + return AuthenticatorStaticStageRequestFromJSONTyped(json, false); +} + +export function AuthenticatorStaticStageRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): AuthenticatorStaticStageRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + configureFlow: json["configure_flow"] == null ? undefined : json["configure_flow"], + friendlyName: json["friendly_name"] == null ? undefined : json["friendly_name"], + tokenCount: json["token_count"] == null ? undefined : json["token_count"], + tokenLength: json["token_length"] == null ? undefined : json["token_length"], + }; +} + +export function AuthenticatorStaticStageRequestToJSON(json: any): AuthenticatorStaticStageRequest { + return AuthenticatorStaticStageRequestToJSONTyped(json, false); +} + +export function AuthenticatorStaticStageRequestToJSONTyped( + value?: AuthenticatorStaticStageRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + configure_flow: value["configureFlow"], + friendly_name: value["friendlyName"], + token_count: value["tokenCount"], + token_length: value["tokenLength"], + }; +} diff --git a/packages/client-ts/src/models/AuthenticatorTOTPChallenge.ts b/packages/client-ts/src/models/AuthenticatorTOTPChallenge.ts new file mode 100644 index 0000000000..246b6a2ecc --- /dev/null +++ b/packages/client-ts/src/models/AuthenticatorTOTPChallenge.ts @@ -0,0 +1,117 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { ContextualFlowInfo } from "./ContextualFlowInfo"; +import { ContextualFlowInfoFromJSON, ContextualFlowInfoToJSON } from "./ContextualFlowInfo"; +import type { ErrorDetail } from "./ErrorDetail"; + +/** + * TOTP Setup challenge + * @export + * @interface AuthenticatorTOTPChallenge + */ +export interface AuthenticatorTOTPChallenge { + /** + * + * @type {ContextualFlowInfo} + * @memberof AuthenticatorTOTPChallenge + */ + flowInfo?: ContextualFlowInfo; + /** + * + * @type {string} + * @memberof AuthenticatorTOTPChallenge + */ + component?: string; + /** + * + * @type {{ [key: string]: Array; }} + * @memberof AuthenticatorTOTPChallenge + */ + responseErrors?: { [key: string]: Array }; + /** + * + * @type {string} + * @memberof AuthenticatorTOTPChallenge + */ + pendingUser: string; + /** + * + * @type {string} + * @memberof AuthenticatorTOTPChallenge + */ + pendingUserAvatar: string; + /** + * + * @type {string} + * @memberof AuthenticatorTOTPChallenge + */ + configUrl: string; +} + +/** + * Check if a given object implements the AuthenticatorTOTPChallenge interface. + */ +export function instanceOfAuthenticatorTOTPChallenge( + value: object, +): value is AuthenticatorTOTPChallenge { + if (!("pendingUser" in value) || value["pendingUser"] === undefined) return false; + if (!("pendingUserAvatar" in value) || value["pendingUserAvatar"] === undefined) return false; + if (!("configUrl" in value) || value["configUrl"] === undefined) return false; + return true; +} + +export function AuthenticatorTOTPChallengeFromJSON(json: any): AuthenticatorTOTPChallenge { + return AuthenticatorTOTPChallengeFromJSONTyped(json, false); +} + +export function AuthenticatorTOTPChallengeFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): AuthenticatorTOTPChallenge { + if (json == null) { + return json; + } + return { + flowInfo: + json["flow_info"] == null ? undefined : ContextualFlowInfoFromJSON(json["flow_info"]), + component: json["component"] == null ? undefined : json["component"], + responseErrors: json["response_errors"] == null ? undefined : json["response_errors"], + pendingUser: json["pending_user"], + pendingUserAvatar: json["pending_user_avatar"], + configUrl: json["config_url"], + }; +} + +export function AuthenticatorTOTPChallengeToJSON(json: any): AuthenticatorTOTPChallenge { + return AuthenticatorTOTPChallengeToJSONTyped(json, false); +} + +export function AuthenticatorTOTPChallengeToJSONTyped( + value?: AuthenticatorTOTPChallenge | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + flow_info: ContextualFlowInfoToJSON(value["flowInfo"]), + component: value["component"], + response_errors: value["responseErrors"], + pending_user: value["pendingUser"], + pending_user_avatar: value["pendingUserAvatar"], + config_url: value["configUrl"], + }; +} diff --git a/packages/client-ts/src/models/AuthenticatorTOTPChallengeResponseRequest.ts b/packages/client-ts/src/models/AuthenticatorTOTPChallengeResponseRequest.ts new file mode 100644 index 0000000000..61a4c56a5a --- /dev/null +++ b/packages/client-ts/src/models/AuthenticatorTOTPChallengeResponseRequest.ts @@ -0,0 +1,82 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * TOTP Challenge response, device is set by get_response_instance + * @export + * @interface AuthenticatorTOTPChallengeResponseRequest + */ +export interface AuthenticatorTOTPChallengeResponseRequest { + /** + * + * @type {string} + * @memberof AuthenticatorTOTPChallengeResponseRequest + */ + component?: string; + /** + * + * @type {string} + * @memberof AuthenticatorTOTPChallengeResponseRequest + */ + code: string; +} + +/** + * Check if a given object implements the AuthenticatorTOTPChallengeResponseRequest interface. + */ +export function instanceOfAuthenticatorTOTPChallengeResponseRequest( + value: object, +): value is AuthenticatorTOTPChallengeResponseRequest { + if (!("code" in value) || value["code"] === undefined) return false; + return true; +} + +export function AuthenticatorTOTPChallengeResponseRequestFromJSON( + json: any, +): AuthenticatorTOTPChallengeResponseRequest { + return AuthenticatorTOTPChallengeResponseRequestFromJSONTyped(json, false); +} + +export function AuthenticatorTOTPChallengeResponseRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): AuthenticatorTOTPChallengeResponseRequest { + if (json == null) { + return json; + } + return { + component: json["component"] == null ? undefined : json["component"], + code: json["code"], + }; +} + +export function AuthenticatorTOTPChallengeResponseRequestToJSON( + json: any, +): AuthenticatorTOTPChallengeResponseRequest { + return AuthenticatorTOTPChallengeResponseRequestToJSONTyped(json, false); +} + +export function AuthenticatorTOTPChallengeResponseRequestToJSONTyped( + value?: AuthenticatorTOTPChallengeResponseRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + component: value["component"], + code: value["code"], + }; +} diff --git a/packages/client-ts/src/models/AuthenticatorTOTPStage.ts b/packages/client-ts/src/models/AuthenticatorTOTPStage.ts new file mode 100644 index 0000000000..18ae4ce36d --- /dev/null +++ b/packages/client-ts/src/models/AuthenticatorTOTPStage.ts @@ -0,0 +1,149 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { DigitsEnum } from "./DigitsEnum"; +import { DigitsEnumFromJSON, DigitsEnumToJSON } from "./DigitsEnum"; +import type { FlowSet } from "./FlowSet"; +import { FlowSetFromJSON } from "./FlowSet"; + +/** + * AuthenticatorTOTPStage Serializer + * @export + * @interface AuthenticatorTOTPStage + */ +export interface AuthenticatorTOTPStage { + /** + * + * @type {string} + * @memberof AuthenticatorTOTPStage + */ + readonly pk: string; + /** + * + * @type {string} + * @memberof AuthenticatorTOTPStage + */ + name: string; + /** + * Get object type so that we know how to edit the object + * @type {string} + * @memberof AuthenticatorTOTPStage + */ + readonly component: string; + /** + * Return object's verbose_name + * @type {string} + * @memberof AuthenticatorTOTPStage + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof AuthenticatorTOTPStage + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof AuthenticatorTOTPStage + */ + readonly metaModelName: string; + /** + * + * @type {Array} + * @memberof AuthenticatorTOTPStage + */ + readonly flowSet: Array; + /** + * Flow used by an authenticated user to configure this Stage. If empty, user will not be able to configure this stage. + * @type {string} + * @memberof AuthenticatorTOTPStage + */ + configureFlow?: string | null; + /** + * + * @type {string} + * @memberof AuthenticatorTOTPStage + */ + friendlyName?: string; + /** + * + * @type {DigitsEnum} + * @memberof AuthenticatorTOTPStage + */ + digits: DigitsEnum; +} + +/** + * Check if a given object implements the AuthenticatorTOTPStage interface. + */ +export function instanceOfAuthenticatorTOTPStage(value: object): value is AuthenticatorTOTPStage { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + if (!("flowSet" in value) || value["flowSet"] === undefined) return false; + if (!("digits" in value) || value["digits"] === undefined) return false; + return true; +} + +export function AuthenticatorTOTPStageFromJSON(json: any): AuthenticatorTOTPStage { + return AuthenticatorTOTPStageFromJSONTyped(json, false); +} + +export function AuthenticatorTOTPStageFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): AuthenticatorTOTPStage { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + component: json["component"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + flowSet: (json["flow_set"] as Array).map(FlowSetFromJSON), + configureFlow: json["configure_flow"] == null ? undefined : json["configure_flow"], + friendlyName: json["friendly_name"] == null ? undefined : json["friendly_name"], + digits: DigitsEnumFromJSON(json["digits"]), + }; +} + +export function AuthenticatorTOTPStageToJSON(json: any): AuthenticatorTOTPStage { + return AuthenticatorTOTPStageToJSONTyped(json, false); +} + +export function AuthenticatorTOTPStageToJSONTyped( + value?: Omit< + AuthenticatorTOTPStage, + "pk" | "component" | "verbose_name" | "verbose_name_plural" | "meta_model_name" | "flow_set" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + configure_flow: value["configureFlow"], + friendly_name: value["friendlyName"], + digits: DigitsEnumToJSON(value["digits"]), + }; +} diff --git a/packages/client-ts/src/models/AuthenticatorTOTPStageRequest.ts b/packages/client-ts/src/models/AuthenticatorTOTPStageRequest.ts new file mode 100644 index 0000000000..34f5b626fd --- /dev/null +++ b/packages/client-ts/src/models/AuthenticatorTOTPStageRequest.ts @@ -0,0 +1,98 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { DigitsEnum } from "./DigitsEnum"; +import { DigitsEnumFromJSON, DigitsEnumToJSON } from "./DigitsEnum"; + +/** + * AuthenticatorTOTPStage Serializer + * @export + * @interface AuthenticatorTOTPStageRequest + */ +export interface AuthenticatorTOTPStageRequest { + /** + * + * @type {string} + * @memberof AuthenticatorTOTPStageRequest + */ + name: string; + /** + * Flow used by an authenticated user to configure this Stage. If empty, user will not be able to configure this stage. + * @type {string} + * @memberof AuthenticatorTOTPStageRequest + */ + configureFlow?: string | null; + /** + * + * @type {string} + * @memberof AuthenticatorTOTPStageRequest + */ + friendlyName?: string; + /** + * + * @type {DigitsEnum} + * @memberof AuthenticatorTOTPStageRequest + */ + digits: DigitsEnum; +} + +/** + * Check if a given object implements the AuthenticatorTOTPStageRequest interface. + */ +export function instanceOfAuthenticatorTOTPStageRequest( + value: object, +): value is AuthenticatorTOTPStageRequest { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("digits" in value) || value["digits"] === undefined) return false; + return true; +} + +export function AuthenticatorTOTPStageRequestFromJSON(json: any): AuthenticatorTOTPStageRequest { + return AuthenticatorTOTPStageRequestFromJSONTyped(json, false); +} + +export function AuthenticatorTOTPStageRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): AuthenticatorTOTPStageRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + configureFlow: json["configure_flow"] == null ? undefined : json["configure_flow"], + friendlyName: json["friendly_name"] == null ? undefined : json["friendly_name"], + digits: DigitsEnumFromJSON(json["digits"]), + }; +} + +export function AuthenticatorTOTPStageRequestToJSON(json: any): AuthenticatorTOTPStageRequest { + return AuthenticatorTOTPStageRequestToJSONTyped(json, false); +} + +export function AuthenticatorTOTPStageRequestToJSONTyped( + value?: AuthenticatorTOTPStageRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + configure_flow: value["configureFlow"], + friendly_name: value["friendlyName"], + digits: DigitsEnumToJSON(value["digits"]), + }; +} diff --git a/packages/client-ts/src/models/AuthenticatorValidateStage.ts b/packages/client-ts/src/models/AuthenticatorValidateStage.ts new file mode 100644 index 0000000000..256521faa3 --- /dev/null +++ b/packages/client-ts/src/models/AuthenticatorValidateStage.ts @@ -0,0 +1,280 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { DeviceClassesEnum } from "./DeviceClassesEnum"; +import { DeviceClassesEnumFromJSON, DeviceClassesEnumToJSON } from "./DeviceClassesEnum"; +import type { FlowSet } from "./FlowSet"; +import { FlowSetFromJSON } from "./FlowSet"; +import type { NotConfiguredActionEnum } from "./NotConfiguredActionEnum"; +import { + NotConfiguredActionEnumFromJSON, + NotConfiguredActionEnumToJSON, +} from "./NotConfiguredActionEnum"; +import type { UserVerificationEnum } from "./UserVerificationEnum"; +import { UserVerificationEnumFromJSON, UserVerificationEnumToJSON } from "./UserVerificationEnum"; +import type { WebAuthnDeviceType } from "./WebAuthnDeviceType"; +import { WebAuthnDeviceTypeFromJSON } from "./WebAuthnDeviceType"; +import type { WebAuthnHintEnum } from "./WebAuthnHintEnum"; +import { WebAuthnHintEnumFromJSON, WebAuthnHintEnumToJSON } from "./WebAuthnHintEnum"; + +/** + * AuthenticatorValidateStage Serializer + * @export + * @interface AuthenticatorValidateStage + */ +export interface AuthenticatorValidateStage { + /** + * + * @type {string} + * @memberof AuthenticatorValidateStage + */ + readonly pk: string; + /** + * + * @type {string} + * @memberof AuthenticatorValidateStage + */ + name: string; + /** + * Get object type so that we know how to edit the object + * @type {string} + * @memberof AuthenticatorValidateStage + */ + readonly component: string; + /** + * Return object's verbose_name + * @type {string} + * @memberof AuthenticatorValidateStage + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof AuthenticatorValidateStage + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof AuthenticatorValidateStage + */ + readonly metaModelName: string; + /** + * + * @type {Array} + * @memberof AuthenticatorValidateStage + */ + readonly flowSet: Array; + /** + * + * @type {NotConfiguredActionEnum} + * @memberof AuthenticatorValidateStage + */ + notConfiguredAction?: NotConfiguredActionEnum; + /** + * Device classes which can be used to authenticate + * @type {Array} + * @memberof AuthenticatorValidateStage + */ + deviceClasses?: Array; + /** + * Stages used to configure Authenticator when user doesn't have any compatible devices. After this configuration Stage passes, the user is not prompted again. + * @type {Array} + * @memberof AuthenticatorValidateStage + */ + configurationStages?: Array; + /** + * If any of the user's device has been used within this threshold, this stage will be skipped + * @type {string} + * @memberof AuthenticatorValidateStage + */ + lastAuthThreshold?: string; + /** + * Enforce user verification for WebAuthn devices. + * @type {UserVerificationEnum} + * @memberof AuthenticatorValidateStage + */ + webauthnUserVerification?: UserVerificationEnum; + /** + * + * @type {Array} + * @memberof AuthenticatorValidateStage + */ + webauthnHints?: Array; + /** + * + * @type {Array} + * @memberof AuthenticatorValidateStage + */ + webauthnAllowedDeviceTypes?: Array; + /** + * + * @type {Array} + * @memberof AuthenticatorValidateStage + */ + readonly webauthnAllowedDeviceTypesObj: Array; + /** + * + * @type {number} + * @memberof AuthenticatorValidateStage + */ + emailOtpThrottlingFactor?: number; + /** + * + * @type {number} + * @memberof AuthenticatorValidateStage + */ + smsOtpThrottlingFactor?: number; + /** + * + * @type {number} + * @memberof AuthenticatorValidateStage + */ + totpOtpThrottlingFactor?: number; + /** + * + * @type {number} + * @memberof AuthenticatorValidateStage + */ + staticOtpThrottlingFactor?: number; +} + +/** + * Check if a given object implements the AuthenticatorValidateStage interface. + */ +export function instanceOfAuthenticatorValidateStage( + value: object, +): value is AuthenticatorValidateStage { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + if (!("flowSet" in value) || value["flowSet"] === undefined) return false; + if ( + !("webauthnAllowedDeviceTypesObj" in value) || + value["webauthnAllowedDeviceTypesObj"] === undefined + ) + return false; + return true; +} + +export function AuthenticatorValidateStageFromJSON(json: any): AuthenticatorValidateStage { + return AuthenticatorValidateStageFromJSONTyped(json, false); +} + +export function AuthenticatorValidateStageFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): AuthenticatorValidateStage { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + component: json["component"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + flowSet: (json["flow_set"] as Array).map(FlowSetFromJSON), + notConfiguredAction: + json["not_configured_action"] == null + ? undefined + : NotConfiguredActionEnumFromJSON(json["not_configured_action"]), + deviceClasses: + json["device_classes"] == null + ? undefined + : (json["device_classes"] as Array).map(DeviceClassesEnumFromJSON), + configurationStages: + json["configuration_stages"] == null ? undefined : json["configuration_stages"], + lastAuthThreshold: + json["last_auth_threshold"] == null ? undefined : json["last_auth_threshold"], + webauthnUserVerification: + json["webauthn_user_verification"] == null + ? undefined + : UserVerificationEnumFromJSON(json["webauthn_user_verification"]), + webauthnHints: + json["webauthn_hints"] == null + ? undefined + : (json["webauthn_hints"] as Array).map(WebAuthnHintEnumFromJSON), + webauthnAllowedDeviceTypes: + json["webauthn_allowed_device_types"] == null + ? undefined + : json["webauthn_allowed_device_types"], + webauthnAllowedDeviceTypesObj: ( + json["webauthn_allowed_device_types_obj"] as Array + ).map(WebAuthnDeviceTypeFromJSON), + emailOtpThrottlingFactor: + json["email_otp_throttling_factor"] == null + ? undefined + : json["email_otp_throttling_factor"], + smsOtpThrottlingFactor: + json["sms_otp_throttling_factor"] == null + ? undefined + : json["sms_otp_throttling_factor"], + totpOtpThrottlingFactor: + json["totp_otp_throttling_factor"] == null + ? undefined + : json["totp_otp_throttling_factor"], + staticOtpThrottlingFactor: + json["static_otp_throttling_factor"] == null + ? undefined + : json["static_otp_throttling_factor"], + }; +} + +export function AuthenticatorValidateStageToJSON(json: any): AuthenticatorValidateStage { + return AuthenticatorValidateStageToJSONTyped(json, false); +} + +export function AuthenticatorValidateStageToJSONTyped( + value?: Omit< + AuthenticatorValidateStage, + | "pk" + | "component" + | "verbose_name" + | "verbose_name_plural" + | "meta_model_name" + | "flow_set" + | "webauthn_allowed_device_types_obj" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + not_configured_action: NotConfiguredActionEnumToJSON(value["notConfiguredAction"]), + device_classes: + value["deviceClasses"] == null + ? undefined + : (value["deviceClasses"] as Array).map(DeviceClassesEnumToJSON), + configuration_stages: value["configurationStages"], + last_auth_threshold: value["lastAuthThreshold"], + webauthn_user_verification: UserVerificationEnumToJSON(value["webauthnUserVerification"]), + webauthn_hints: + value["webauthnHints"] == null + ? undefined + : (value["webauthnHints"] as Array).map(WebAuthnHintEnumToJSON), + webauthn_allowed_device_types: value["webauthnAllowedDeviceTypes"], + email_otp_throttling_factor: value["emailOtpThrottlingFactor"], + sms_otp_throttling_factor: value["smsOtpThrottlingFactor"], + totp_otp_throttling_factor: value["totpOtpThrottlingFactor"], + static_otp_throttling_factor: value["staticOtpThrottlingFactor"], + }; +} diff --git a/packages/client-ts/src/models/AuthenticatorValidateStageRequest.ts b/packages/client-ts/src/models/AuthenticatorValidateStageRequest.ts new file mode 100644 index 0000000000..f1c52e4695 --- /dev/null +++ b/packages/client-ts/src/models/AuthenticatorValidateStageRequest.ts @@ -0,0 +1,209 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { DeviceClassesEnum } from "./DeviceClassesEnum"; +import { DeviceClassesEnumFromJSON, DeviceClassesEnumToJSON } from "./DeviceClassesEnum"; +import type { NotConfiguredActionEnum } from "./NotConfiguredActionEnum"; +import { + NotConfiguredActionEnumFromJSON, + NotConfiguredActionEnumToJSON, +} from "./NotConfiguredActionEnum"; +import type { UserVerificationEnum } from "./UserVerificationEnum"; +import { UserVerificationEnumFromJSON, UserVerificationEnumToJSON } from "./UserVerificationEnum"; +import type { WebAuthnHintEnum } from "./WebAuthnHintEnum"; +import { WebAuthnHintEnumFromJSON, WebAuthnHintEnumToJSON } from "./WebAuthnHintEnum"; + +/** + * AuthenticatorValidateStage Serializer + * @export + * @interface AuthenticatorValidateStageRequest + */ +export interface AuthenticatorValidateStageRequest { + /** + * + * @type {string} + * @memberof AuthenticatorValidateStageRequest + */ + name: string; + /** + * + * @type {NotConfiguredActionEnum} + * @memberof AuthenticatorValidateStageRequest + */ + notConfiguredAction?: NotConfiguredActionEnum; + /** + * Device classes which can be used to authenticate + * @type {Array} + * @memberof AuthenticatorValidateStageRequest + */ + deviceClasses?: Array; + /** + * Stages used to configure Authenticator when user doesn't have any compatible devices. After this configuration Stage passes, the user is not prompted again. + * @type {Array} + * @memberof AuthenticatorValidateStageRequest + */ + configurationStages?: Array; + /** + * If any of the user's device has been used within this threshold, this stage will be skipped + * @type {string} + * @memberof AuthenticatorValidateStageRequest + */ + lastAuthThreshold?: string; + /** + * Enforce user verification for WebAuthn devices. + * @type {UserVerificationEnum} + * @memberof AuthenticatorValidateStageRequest + */ + webauthnUserVerification?: UserVerificationEnum; + /** + * + * @type {Array} + * @memberof AuthenticatorValidateStageRequest + */ + webauthnHints?: Array; + /** + * + * @type {Array} + * @memberof AuthenticatorValidateStageRequest + */ + webauthnAllowedDeviceTypes?: Array; + /** + * + * @type {number} + * @memberof AuthenticatorValidateStageRequest + */ + emailOtpThrottlingFactor?: number; + /** + * + * @type {number} + * @memberof AuthenticatorValidateStageRequest + */ + smsOtpThrottlingFactor?: number; + /** + * + * @type {number} + * @memberof AuthenticatorValidateStageRequest + */ + totpOtpThrottlingFactor?: number; + /** + * + * @type {number} + * @memberof AuthenticatorValidateStageRequest + */ + staticOtpThrottlingFactor?: number; +} + +/** + * Check if a given object implements the AuthenticatorValidateStageRequest interface. + */ +export function instanceOfAuthenticatorValidateStageRequest( + value: object, +): value is AuthenticatorValidateStageRequest { + if (!("name" in value) || value["name"] === undefined) return false; + return true; +} + +export function AuthenticatorValidateStageRequestFromJSON( + json: any, +): AuthenticatorValidateStageRequest { + return AuthenticatorValidateStageRequestFromJSONTyped(json, false); +} + +export function AuthenticatorValidateStageRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): AuthenticatorValidateStageRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + notConfiguredAction: + json["not_configured_action"] == null + ? undefined + : NotConfiguredActionEnumFromJSON(json["not_configured_action"]), + deviceClasses: + json["device_classes"] == null + ? undefined + : (json["device_classes"] as Array).map(DeviceClassesEnumFromJSON), + configurationStages: + json["configuration_stages"] == null ? undefined : json["configuration_stages"], + lastAuthThreshold: + json["last_auth_threshold"] == null ? undefined : json["last_auth_threshold"], + webauthnUserVerification: + json["webauthn_user_verification"] == null + ? undefined + : UserVerificationEnumFromJSON(json["webauthn_user_verification"]), + webauthnHints: + json["webauthn_hints"] == null + ? undefined + : (json["webauthn_hints"] as Array).map(WebAuthnHintEnumFromJSON), + webauthnAllowedDeviceTypes: + json["webauthn_allowed_device_types"] == null + ? undefined + : json["webauthn_allowed_device_types"], + emailOtpThrottlingFactor: + json["email_otp_throttling_factor"] == null + ? undefined + : json["email_otp_throttling_factor"], + smsOtpThrottlingFactor: + json["sms_otp_throttling_factor"] == null + ? undefined + : json["sms_otp_throttling_factor"], + totpOtpThrottlingFactor: + json["totp_otp_throttling_factor"] == null + ? undefined + : json["totp_otp_throttling_factor"], + staticOtpThrottlingFactor: + json["static_otp_throttling_factor"] == null + ? undefined + : json["static_otp_throttling_factor"], + }; +} + +export function AuthenticatorValidateStageRequestToJSON( + json: any, +): AuthenticatorValidateStageRequest { + return AuthenticatorValidateStageRequestToJSONTyped(json, false); +} + +export function AuthenticatorValidateStageRequestToJSONTyped( + value?: AuthenticatorValidateStageRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + not_configured_action: NotConfiguredActionEnumToJSON(value["notConfiguredAction"]), + device_classes: + value["deviceClasses"] == null + ? undefined + : (value["deviceClasses"] as Array).map(DeviceClassesEnumToJSON), + configuration_stages: value["configurationStages"], + last_auth_threshold: value["lastAuthThreshold"], + webauthn_user_verification: UserVerificationEnumToJSON(value["webauthnUserVerification"]), + webauthn_hints: + value["webauthnHints"] == null + ? undefined + : (value["webauthnHints"] as Array).map(WebAuthnHintEnumToJSON), + webauthn_allowed_device_types: value["webauthnAllowedDeviceTypes"], + email_otp_throttling_factor: value["emailOtpThrottlingFactor"], + sms_otp_throttling_factor: value["smsOtpThrottlingFactor"], + totp_otp_throttling_factor: value["totpOtpThrottlingFactor"], + static_otp_throttling_factor: value["staticOtpThrottlingFactor"], + }; +} diff --git a/packages/client-ts/src/models/AuthenticatorValidationChallenge.ts b/packages/client-ts/src/models/AuthenticatorValidationChallenge.ts new file mode 100644 index 0000000000..f01811a9e1 --- /dev/null +++ b/packages/client-ts/src/models/AuthenticatorValidationChallenge.ts @@ -0,0 +1,139 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { ContextualFlowInfo } from "./ContextualFlowInfo"; +import { ContextualFlowInfoFromJSON, ContextualFlowInfoToJSON } from "./ContextualFlowInfo"; +import type { DeviceChallenge } from "./DeviceChallenge"; +import { DeviceChallengeFromJSON, DeviceChallengeToJSON } from "./DeviceChallenge"; +import type { ErrorDetail } from "./ErrorDetail"; +import type { SelectableStage } from "./SelectableStage"; +import { SelectableStageFromJSON, SelectableStageToJSON } from "./SelectableStage"; + +/** + * Authenticator challenge + * @export + * @interface AuthenticatorValidationChallenge + */ +export interface AuthenticatorValidationChallenge { + /** + * + * @type {ContextualFlowInfo} + * @memberof AuthenticatorValidationChallenge + */ + flowInfo?: ContextualFlowInfo; + /** + * + * @type {string} + * @memberof AuthenticatorValidationChallenge + */ + component?: string; + /** + * + * @type {{ [key: string]: Array; }} + * @memberof AuthenticatorValidationChallenge + */ + responseErrors?: { [key: string]: Array }; + /** + * + * @type {string} + * @memberof AuthenticatorValidationChallenge + */ + pendingUser: string; + /** + * + * @type {string} + * @memberof AuthenticatorValidationChallenge + */ + pendingUserAvatar: string; + /** + * + * @type {Array} + * @memberof AuthenticatorValidationChallenge + */ + deviceChallenges: Array; + /** + * + * @type {Array} + * @memberof AuthenticatorValidationChallenge + */ + configurationStages: Array; +} + +/** + * Check if a given object implements the AuthenticatorValidationChallenge interface. + */ +export function instanceOfAuthenticatorValidationChallenge( + value: object, +): value is AuthenticatorValidationChallenge { + if (!("pendingUser" in value) || value["pendingUser"] === undefined) return false; + if (!("pendingUserAvatar" in value) || value["pendingUserAvatar"] === undefined) return false; + if (!("deviceChallenges" in value) || value["deviceChallenges"] === undefined) return false; + if (!("configurationStages" in value) || value["configurationStages"] === undefined) + return false; + return true; +} + +export function AuthenticatorValidationChallengeFromJSON( + json: any, +): AuthenticatorValidationChallenge { + return AuthenticatorValidationChallengeFromJSONTyped(json, false); +} + +export function AuthenticatorValidationChallengeFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): AuthenticatorValidationChallenge { + if (json == null) { + return json; + } + return { + flowInfo: + json["flow_info"] == null ? undefined : ContextualFlowInfoFromJSON(json["flow_info"]), + component: json["component"] == null ? undefined : json["component"], + responseErrors: json["response_errors"] == null ? undefined : json["response_errors"], + pendingUser: json["pending_user"], + pendingUserAvatar: json["pending_user_avatar"], + deviceChallenges: (json["device_challenges"] as Array).map(DeviceChallengeFromJSON), + configurationStages: (json["configuration_stages"] as Array).map( + SelectableStageFromJSON, + ), + }; +} + +export function AuthenticatorValidationChallengeToJSON( + json: any, +): AuthenticatorValidationChallenge { + return AuthenticatorValidationChallengeToJSONTyped(json, false); +} + +export function AuthenticatorValidationChallengeToJSONTyped( + value?: AuthenticatorValidationChallenge | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + flow_info: ContextualFlowInfoToJSON(value["flowInfo"]), + component: value["component"], + response_errors: value["responseErrors"], + pending_user: value["pendingUser"], + pending_user_avatar: value["pendingUserAvatar"], + device_challenges: (value["deviceChallenges"] as Array).map(DeviceChallengeToJSON), + configuration_stages: (value["configurationStages"] as Array).map( + SelectableStageToJSON, + ), + }; +} diff --git a/packages/client-ts/src/models/AuthenticatorValidationChallengeResponseRequest.ts b/packages/client-ts/src/models/AuthenticatorValidationChallengeResponseRequest.ts new file mode 100644 index 0000000000..65679f5ea5 --- /dev/null +++ b/packages/client-ts/src/models/AuthenticatorValidationChallengeResponseRequest.ts @@ -0,0 +1,122 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { DeviceChallengeRequest } from "./DeviceChallengeRequest"; +import { + DeviceChallengeRequestFromJSON, + DeviceChallengeRequestToJSON, +} from "./DeviceChallengeRequest"; + +/** + * Challenge used for Code-based and WebAuthn authenticators + * @export + * @interface AuthenticatorValidationChallengeResponseRequest + */ +export interface AuthenticatorValidationChallengeResponseRequest { + /** + * + * @type {string} + * @memberof AuthenticatorValidationChallengeResponseRequest + */ + component?: string; + /** + * + * @type {DeviceChallengeRequest} + * @memberof AuthenticatorValidationChallengeResponseRequest + */ + selectedChallenge?: DeviceChallengeRequest; + /** + * + * @type {string} + * @memberof AuthenticatorValidationChallengeResponseRequest + */ + selectedStage?: string; + /** + * + * @type {string} + * @memberof AuthenticatorValidationChallengeResponseRequest + */ + code?: string; + /** + * + * @type {{ [key: string]: any; }} + * @memberof AuthenticatorValidationChallengeResponseRequest + */ + webauthn?: { [key: string]: any }; + /** + * + * @type {number} + * @memberof AuthenticatorValidationChallengeResponseRequest + */ + duo?: number; +} + +/** + * Check if a given object implements the AuthenticatorValidationChallengeResponseRequest interface. + */ +export function instanceOfAuthenticatorValidationChallengeResponseRequest( + value: object, +): value is AuthenticatorValidationChallengeResponseRequest { + return true; +} + +export function AuthenticatorValidationChallengeResponseRequestFromJSON( + json: any, +): AuthenticatorValidationChallengeResponseRequest { + return AuthenticatorValidationChallengeResponseRequestFromJSONTyped(json, false); +} + +export function AuthenticatorValidationChallengeResponseRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): AuthenticatorValidationChallengeResponseRequest { + if (json == null) { + return json; + } + return { + component: json["component"] == null ? undefined : json["component"], + selectedChallenge: + json["selected_challenge"] == null + ? undefined + : DeviceChallengeRequestFromJSON(json["selected_challenge"]), + selectedStage: json["selected_stage"] == null ? undefined : json["selected_stage"], + code: json["code"] == null ? undefined : json["code"], + webauthn: json["webauthn"] == null ? undefined : json["webauthn"], + duo: json["duo"] == null ? undefined : json["duo"], + }; +} + +export function AuthenticatorValidationChallengeResponseRequestToJSON( + json: any, +): AuthenticatorValidationChallengeResponseRequest { + return AuthenticatorValidationChallengeResponseRequestToJSONTyped(json, false); +} + +export function AuthenticatorValidationChallengeResponseRequestToJSONTyped( + value?: AuthenticatorValidationChallengeResponseRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + component: value["component"], + selected_challenge: DeviceChallengeRequestToJSON(value["selectedChallenge"]), + selected_stage: value["selectedStage"], + code: value["code"], + webauthn: value["webauthn"], + duo: value["duo"], + }; +} diff --git a/packages/client-ts/src/models/AuthenticatorWebAuthnChallenge.ts b/packages/client-ts/src/models/AuthenticatorWebAuthnChallenge.ts new file mode 100644 index 0000000000..32d5103505 --- /dev/null +++ b/packages/client-ts/src/models/AuthenticatorWebAuthnChallenge.ts @@ -0,0 +1,117 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { ContextualFlowInfo } from "./ContextualFlowInfo"; +import { ContextualFlowInfoFromJSON, ContextualFlowInfoToJSON } from "./ContextualFlowInfo"; +import type { ErrorDetail } from "./ErrorDetail"; + +/** + * WebAuthn Challenge + * @export + * @interface AuthenticatorWebAuthnChallenge + */ +export interface AuthenticatorWebAuthnChallenge { + /** + * + * @type {ContextualFlowInfo} + * @memberof AuthenticatorWebAuthnChallenge + */ + flowInfo?: ContextualFlowInfo; + /** + * + * @type {string} + * @memberof AuthenticatorWebAuthnChallenge + */ + component?: string; + /** + * + * @type {{ [key: string]: Array; }} + * @memberof AuthenticatorWebAuthnChallenge + */ + responseErrors?: { [key: string]: Array }; + /** + * + * @type {string} + * @memberof AuthenticatorWebAuthnChallenge + */ + pendingUser: string; + /** + * + * @type {string} + * @memberof AuthenticatorWebAuthnChallenge + */ + pendingUserAvatar: string; + /** + * + * @type {{ [key: string]: any; }} + * @memberof AuthenticatorWebAuthnChallenge + */ + registration: { [key: string]: any }; +} + +/** + * Check if a given object implements the AuthenticatorWebAuthnChallenge interface. + */ +export function instanceOfAuthenticatorWebAuthnChallenge( + value: object, +): value is AuthenticatorWebAuthnChallenge { + if (!("pendingUser" in value) || value["pendingUser"] === undefined) return false; + if (!("pendingUserAvatar" in value) || value["pendingUserAvatar"] === undefined) return false; + if (!("registration" in value) || value["registration"] === undefined) return false; + return true; +} + +export function AuthenticatorWebAuthnChallengeFromJSON(json: any): AuthenticatorWebAuthnChallenge { + return AuthenticatorWebAuthnChallengeFromJSONTyped(json, false); +} + +export function AuthenticatorWebAuthnChallengeFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): AuthenticatorWebAuthnChallenge { + if (json == null) { + return json; + } + return { + flowInfo: + json["flow_info"] == null ? undefined : ContextualFlowInfoFromJSON(json["flow_info"]), + component: json["component"] == null ? undefined : json["component"], + responseErrors: json["response_errors"] == null ? undefined : json["response_errors"], + pendingUser: json["pending_user"], + pendingUserAvatar: json["pending_user_avatar"], + registration: json["registration"], + }; +} + +export function AuthenticatorWebAuthnChallengeToJSON(json: any): AuthenticatorWebAuthnChallenge { + return AuthenticatorWebAuthnChallengeToJSONTyped(json, false); +} + +export function AuthenticatorWebAuthnChallengeToJSONTyped( + value?: AuthenticatorWebAuthnChallenge | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + flow_info: ContextualFlowInfoToJSON(value["flowInfo"]), + component: value["component"], + response_errors: value["responseErrors"], + pending_user: value["pendingUser"], + pending_user_avatar: value["pendingUserAvatar"], + registration: value["registration"], + }; +} diff --git a/packages/client-ts/src/models/AuthenticatorWebAuthnChallengeResponseRequest.ts b/packages/client-ts/src/models/AuthenticatorWebAuthnChallengeResponseRequest.ts new file mode 100644 index 0000000000..e0e6d61bce --- /dev/null +++ b/packages/client-ts/src/models/AuthenticatorWebAuthnChallengeResponseRequest.ts @@ -0,0 +1,82 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * WebAuthn Challenge response + * @export + * @interface AuthenticatorWebAuthnChallengeResponseRequest + */ +export interface AuthenticatorWebAuthnChallengeResponseRequest { + /** + * + * @type {string} + * @memberof AuthenticatorWebAuthnChallengeResponseRequest + */ + component?: string; + /** + * + * @type {{ [key: string]: any; }} + * @memberof AuthenticatorWebAuthnChallengeResponseRequest + */ + response: { [key: string]: any }; +} + +/** + * Check if a given object implements the AuthenticatorWebAuthnChallengeResponseRequest interface. + */ +export function instanceOfAuthenticatorWebAuthnChallengeResponseRequest( + value: object, +): value is AuthenticatorWebAuthnChallengeResponseRequest { + if (!("response" in value) || value["response"] === undefined) return false; + return true; +} + +export function AuthenticatorWebAuthnChallengeResponseRequestFromJSON( + json: any, +): AuthenticatorWebAuthnChallengeResponseRequest { + return AuthenticatorWebAuthnChallengeResponseRequestFromJSONTyped(json, false); +} + +export function AuthenticatorWebAuthnChallengeResponseRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): AuthenticatorWebAuthnChallengeResponseRequest { + if (json == null) { + return json; + } + return { + component: json["component"] == null ? undefined : json["component"], + response: json["response"], + }; +} + +export function AuthenticatorWebAuthnChallengeResponseRequestToJSON( + json: any, +): AuthenticatorWebAuthnChallengeResponseRequest { + return AuthenticatorWebAuthnChallengeResponseRequestToJSONTyped(json, false); +} + +export function AuthenticatorWebAuthnChallengeResponseRequestToJSONTyped( + value?: AuthenticatorWebAuthnChallengeResponseRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + component: value["component"], + response: value["response"], + }; +} diff --git a/packages/client-ts/src/models/AuthenticatorWebAuthnStage.ts b/packages/client-ts/src/models/AuthenticatorWebAuthnStage.ts new file mode 100644 index 0000000000..e0b2429ea2 --- /dev/null +++ b/packages/client-ts/src/models/AuthenticatorWebAuthnStage.ts @@ -0,0 +1,245 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { AuthenticatorAttachmentEnum } from "./AuthenticatorAttachmentEnum"; +import { + AuthenticatorAttachmentEnumFromJSON, + AuthenticatorAttachmentEnumToJSON, +} from "./AuthenticatorAttachmentEnum"; +import type { FlowSet } from "./FlowSet"; +import { FlowSetFromJSON } from "./FlowSet"; +import type { UserVerificationEnum } from "./UserVerificationEnum"; +import { UserVerificationEnumFromJSON, UserVerificationEnumToJSON } from "./UserVerificationEnum"; +import type { WebAuthnDeviceType } from "./WebAuthnDeviceType"; +import { WebAuthnDeviceTypeFromJSON } from "./WebAuthnDeviceType"; +import type { WebAuthnHintEnum } from "./WebAuthnHintEnum"; +import { WebAuthnHintEnumFromJSON, WebAuthnHintEnumToJSON } from "./WebAuthnHintEnum"; + +/** + * AuthenticatorWebAuthnStage Serializer + * @export + * @interface AuthenticatorWebAuthnStage + */ +export interface AuthenticatorWebAuthnStage { + /** + * + * @type {string} + * @memberof AuthenticatorWebAuthnStage + */ + readonly pk: string; + /** + * + * @type {string} + * @memberof AuthenticatorWebAuthnStage + */ + name: string; + /** + * Get object type so that we know how to edit the object + * @type {string} + * @memberof AuthenticatorWebAuthnStage + */ + readonly component: string; + /** + * Return object's verbose_name + * @type {string} + * @memberof AuthenticatorWebAuthnStage + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof AuthenticatorWebAuthnStage + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof AuthenticatorWebAuthnStage + */ + readonly metaModelName: string; + /** + * + * @type {Array} + * @memberof AuthenticatorWebAuthnStage + */ + readonly flowSet: Array; + /** + * Flow used by an authenticated user to configure this Stage. If empty, user will not be able to configure this stage. + * @type {string} + * @memberof AuthenticatorWebAuthnStage + */ + configureFlow?: string | null; + /** + * + * @type {string} + * @memberof AuthenticatorWebAuthnStage + */ + friendlyName?: string; + /** + * + * @type {UserVerificationEnum} + * @memberof AuthenticatorWebAuthnStage + */ + userVerification?: UserVerificationEnum; + /** + * + * @type {AuthenticatorAttachmentEnum} + * @memberof AuthenticatorWebAuthnStage + */ + authenticatorAttachment?: AuthenticatorAttachmentEnum | null; + /** + * + * @type {UserVerificationEnum} + * @memberof AuthenticatorWebAuthnStage + */ + residentKeyRequirement?: UserVerificationEnum; + /** + * + * @type {Array} + * @memberof AuthenticatorWebAuthnStage + */ + hints?: Array; + /** + * + * @type {Array} + * @memberof AuthenticatorWebAuthnStage + */ + deviceTypeRestrictions?: Array; + /** + * + * @type {Array} + * @memberof AuthenticatorWebAuthnStage + */ + readonly deviceTypeRestrictionsObj: Array; + /** + * When enabled, a given device can only be registered once. + * @type {boolean} + * @memberof AuthenticatorWebAuthnStage + */ + preventDuplicateDevices?: boolean; + /** + * + * @type {number} + * @memberof AuthenticatorWebAuthnStage + */ + maxAttempts?: number; +} + +/** + * Check if a given object implements the AuthenticatorWebAuthnStage interface. + */ +export function instanceOfAuthenticatorWebAuthnStage( + value: object, +): value is AuthenticatorWebAuthnStage { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + if (!("flowSet" in value) || value["flowSet"] === undefined) return false; + if (!("deviceTypeRestrictionsObj" in value) || value["deviceTypeRestrictionsObj"] === undefined) + return false; + return true; +} + +export function AuthenticatorWebAuthnStageFromJSON(json: any): AuthenticatorWebAuthnStage { + return AuthenticatorWebAuthnStageFromJSONTyped(json, false); +} + +export function AuthenticatorWebAuthnStageFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): AuthenticatorWebAuthnStage { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + component: json["component"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + flowSet: (json["flow_set"] as Array).map(FlowSetFromJSON), + configureFlow: json["configure_flow"] == null ? undefined : json["configure_flow"], + friendlyName: json["friendly_name"] == null ? undefined : json["friendly_name"], + userVerification: + json["user_verification"] == null + ? undefined + : UserVerificationEnumFromJSON(json["user_verification"]), + authenticatorAttachment: + json["authenticator_attachment"] == null + ? undefined + : AuthenticatorAttachmentEnumFromJSON(json["authenticator_attachment"]), + residentKeyRequirement: + json["resident_key_requirement"] == null + ? undefined + : UserVerificationEnumFromJSON(json["resident_key_requirement"]), + hints: + json["hints"] == null + ? undefined + : (json["hints"] as Array).map(WebAuthnHintEnumFromJSON), + deviceTypeRestrictions: + json["device_type_restrictions"] == null ? undefined : json["device_type_restrictions"], + deviceTypeRestrictionsObj: (json["device_type_restrictions_obj"] as Array).map( + WebAuthnDeviceTypeFromJSON, + ), + preventDuplicateDevices: + json["prevent_duplicate_devices"] == null + ? undefined + : json["prevent_duplicate_devices"], + maxAttempts: json["max_attempts"] == null ? undefined : json["max_attempts"], + }; +} + +export function AuthenticatorWebAuthnStageToJSON(json: any): AuthenticatorWebAuthnStage { + return AuthenticatorWebAuthnStageToJSONTyped(json, false); +} + +export function AuthenticatorWebAuthnStageToJSONTyped( + value?: Omit< + AuthenticatorWebAuthnStage, + | "pk" + | "component" + | "verbose_name" + | "verbose_name_plural" + | "meta_model_name" + | "flow_set" + | "device_type_restrictions_obj" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + configure_flow: value["configureFlow"], + friendly_name: value["friendlyName"], + user_verification: UserVerificationEnumToJSON(value["userVerification"]), + authenticator_attachment: AuthenticatorAttachmentEnumToJSON( + value["authenticatorAttachment"], + ), + resident_key_requirement: UserVerificationEnumToJSON(value["residentKeyRequirement"]), + hints: + value["hints"] == null + ? undefined + : (value["hints"] as Array).map(WebAuthnHintEnumToJSON), + device_type_restrictions: value["deviceTypeRestrictions"], + prevent_duplicate_devices: value["preventDuplicateDevices"], + max_attempts: value["maxAttempts"], + }; +} diff --git a/packages/client-ts/src/models/AuthenticatorWebAuthnStageRequest.ts b/packages/client-ts/src/models/AuthenticatorWebAuthnStageRequest.ts new file mode 100644 index 0000000000..4216d248fc --- /dev/null +++ b/packages/client-ts/src/models/AuthenticatorWebAuthnStageRequest.ts @@ -0,0 +1,177 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { AuthenticatorAttachmentEnum } from "./AuthenticatorAttachmentEnum"; +import { + AuthenticatorAttachmentEnumFromJSON, + AuthenticatorAttachmentEnumToJSON, +} from "./AuthenticatorAttachmentEnum"; +import type { UserVerificationEnum } from "./UserVerificationEnum"; +import { UserVerificationEnumFromJSON, UserVerificationEnumToJSON } from "./UserVerificationEnum"; +import type { WebAuthnHintEnum } from "./WebAuthnHintEnum"; +import { WebAuthnHintEnumFromJSON, WebAuthnHintEnumToJSON } from "./WebAuthnHintEnum"; + +/** + * AuthenticatorWebAuthnStage Serializer + * @export + * @interface AuthenticatorWebAuthnStageRequest + */ +export interface AuthenticatorWebAuthnStageRequest { + /** + * + * @type {string} + * @memberof AuthenticatorWebAuthnStageRequest + */ + name: string; + /** + * Flow used by an authenticated user to configure this Stage. If empty, user will not be able to configure this stage. + * @type {string} + * @memberof AuthenticatorWebAuthnStageRequest + */ + configureFlow?: string | null; + /** + * + * @type {string} + * @memberof AuthenticatorWebAuthnStageRequest + */ + friendlyName?: string; + /** + * + * @type {UserVerificationEnum} + * @memberof AuthenticatorWebAuthnStageRequest + */ + userVerification?: UserVerificationEnum; + /** + * + * @type {AuthenticatorAttachmentEnum} + * @memberof AuthenticatorWebAuthnStageRequest + */ + authenticatorAttachment?: AuthenticatorAttachmentEnum | null; + /** + * + * @type {UserVerificationEnum} + * @memberof AuthenticatorWebAuthnStageRequest + */ + residentKeyRequirement?: UserVerificationEnum; + /** + * + * @type {Array} + * @memberof AuthenticatorWebAuthnStageRequest + */ + hints?: Array; + /** + * + * @type {Array} + * @memberof AuthenticatorWebAuthnStageRequest + */ + deviceTypeRestrictions?: Array; + /** + * When enabled, a given device can only be registered once. + * @type {boolean} + * @memberof AuthenticatorWebAuthnStageRequest + */ + preventDuplicateDevices?: boolean; + /** + * + * @type {number} + * @memberof AuthenticatorWebAuthnStageRequest + */ + maxAttempts?: number; +} + +/** + * Check if a given object implements the AuthenticatorWebAuthnStageRequest interface. + */ +export function instanceOfAuthenticatorWebAuthnStageRequest( + value: object, +): value is AuthenticatorWebAuthnStageRequest { + if (!("name" in value) || value["name"] === undefined) return false; + return true; +} + +export function AuthenticatorWebAuthnStageRequestFromJSON( + json: any, +): AuthenticatorWebAuthnStageRequest { + return AuthenticatorWebAuthnStageRequestFromJSONTyped(json, false); +} + +export function AuthenticatorWebAuthnStageRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): AuthenticatorWebAuthnStageRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + configureFlow: json["configure_flow"] == null ? undefined : json["configure_flow"], + friendlyName: json["friendly_name"] == null ? undefined : json["friendly_name"], + userVerification: + json["user_verification"] == null + ? undefined + : UserVerificationEnumFromJSON(json["user_verification"]), + authenticatorAttachment: + json["authenticator_attachment"] == null + ? undefined + : AuthenticatorAttachmentEnumFromJSON(json["authenticator_attachment"]), + residentKeyRequirement: + json["resident_key_requirement"] == null + ? undefined + : UserVerificationEnumFromJSON(json["resident_key_requirement"]), + hints: + json["hints"] == null + ? undefined + : (json["hints"] as Array).map(WebAuthnHintEnumFromJSON), + deviceTypeRestrictions: + json["device_type_restrictions"] == null ? undefined : json["device_type_restrictions"], + preventDuplicateDevices: + json["prevent_duplicate_devices"] == null + ? undefined + : json["prevent_duplicate_devices"], + maxAttempts: json["max_attempts"] == null ? undefined : json["max_attempts"], + }; +} + +export function AuthenticatorWebAuthnStageRequestToJSON( + json: any, +): AuthenticatorWebAuthnStageRequest { + return AuthenticatorWebAuthnStageRequestToJSONTyped(json, false); +} + +export function AuthenticatorWebAuthnStageRequestToJSONTyped( + value?: AuthenticatorWebAuthnStageRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + configure_flow: value["configureFlow"], + friendly_name: value["friendlyName"], + user_verification: UserVerificationEnumToJSON(value["userVerification"]), + authenticator_attachment: AuthenticatorAttachmentEnumToJSON( + value["authenticatorAttachment"], + ), + resident_key_requirement: UserVerificationEnumToJSON(value["residentKeyRequirement"]), + hints: + value["hints"] == null + ? undefined + : (value["hints"] as Array).map(WebAuthnHintEnumToJSON), + device_type_restrictions: value["deviceTypeRestrictions"], + prevent_duplicate_devices: value["preventDuplicateDevices"], + max_attempts: value["maxAttempts"], + }; +} diff --git a/packages/client-ts/src/models/AuthorizationCodeAuthMethodEnum.ts b/packages/client-ts/src/models/AuthorizationCodeAuthMethodEnum.ts new file mode 100644 index 0000000000..2baf6164af --- /dev/null +++ b/packages/client-ts/src/models/AuthorizationCodeAuthMethodEnum.ts @@ -0,0 +1,66 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const AuthorizationCodeAuthMethodEnum = { + BasicAuth: "basic_auth", + PostBody: "post_body", + UnknownDefaultOpenApi: "11184809", +} as const; +export type AuthorizationCodeAuthMethodEnum = + (typeof AuthorizationCodeAuthMethodEnum)[keyof typeof AuthorizationCodeAuthMethodEnum]; + +export function instanceOfAuthorizationCodeAuthMethodEnum(value: any): boolean { + for (const key in AuthorizationCodeAuthMethodEnum) { + if (Object.prototype.hasOwnProperty.call(AuthorizationCodeAuthMethodEnum, key)) { + if ( + AuthorizationCodeAuthMethodEnum[ + key as keyof typeof AuthorizationCodeAuthMethodEnum + ] === value + ) { + return true; + } + } + } + return false; +} + +export function AuthorizationCodeAuthMethodEnumFromJSON( + json: any, +): AuthorizationCodeAuthMethodEnum { + return AuthorizationCodeAuthMethodEnumFromJSONTyped(json, false); +} + +export function AuthorizationCodeAuthMethodEnumFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): AuthorizationCodeAuthMethodEnum { + return json as AuthorizationCodeAuthMethodEnum; +} + +export function AuthorizationCodeAuthMethodEnumToJSON( + value?: AuthorizationCodeAuthMethodEnum | null, +): any { + return value as any; +} + +export function AuthorizationCodeAuthMethodEnumToJSONTyped( + value: any, + ignoreDiscriminator: boolean, +): AuthorizationCodeAuthMethodEnum { + return value as AuthorizationCodeAuthMethodEnum; +} diff --git a/packages/client-ts/src/models/AutoSubmitChallengeResponseRequest.ts b/packages/client-ts/src/models/AutoSubmitChallengeResponseRequest.ts new file mode 100644 index 0000000000..ec6543025e --- /dev/null +++ b/packages/client-ts/src/models/AutoSubmitChallengeResponseRequest.ts @@ -0,0 +1,73 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Pseudo class for autosubmit response + * @export + * @interface AutoSubmitChallengeResponseRequest + */ +export interface AutoSubmitChallengeResponseRequest { + /** + * + * @type {string} + * @memberof AutoSubmitChallengeResponseRequest + */ + component?: string; +} + +/** + * Check if a given object implements the AutoSubmitChallengeResponseRequest interface. + */ +export function instanceOfAutoSubmitChallengeResponseRequest( + value: object, +): value is AutoSubmitChallengeResponseRequest { + return true; +} + +export function AutoSubmitChallengeResponseRequestFromJSON( + json: any, +): AutoSubmitChallengeResponseRequest { + return AutoSubmitChallengeResponseRequestFromJSONTyped(json, false); +} + +export function AutoSubmitChallengeResponseRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): AutoSubmitChallengeResponseRequest { + if (json == null) { + return json; + } + return { + component: json["component"] == null ? undefined : json["component"], + }; +} + +export function AutoSubmitChallengeResponseRequestToJSON( + json: any, +): AutoSubmitChallengeResponseRequest { + return AutoSubmitChallengeResponseRequestToJSONTyped(json, false); +} + +export function AutoSubmitChallengeResponseRequestToJSONTyped( + value?: AutoSubmitChallengeResponseRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + component: value["component"], + }; +} diff --git a/packages/client-ts/src/models/AutosubmitChallenge.ts b/packages/client-ts/src/models/AutosubmitChallenge.ts new file mode 100644 index 0000000000..b8f8245081 --- /dev/null +++ b/packages/client-ts/src/models/AutosubmitChallenge.ts @@ -0,0 +1,114 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { ContextualFlowInfo } from "./ContextualFlowInfo"; +import { ContextualFlowInfoFromJSON, ContextualFlowInfoToJSON } from "./ContextualFlowInfo"; +import type { ErrorDetail } from "./ErrorDetail"; + +/** + * Autosubmit challenge used to send and navigate a POST request + * @export + * @interface AutosubmitChallenge + */ +export interface AutosubmitChallenge { + /** + * + * @type {ContextualFlowInfo} + * @memberof AutosubmitChallenge + */ + flowInfo?: ContextualFlowInfo; + /** + * + * @type {string} + * @memberof AutosubmitChallenge + */ + component?: string; + /** + * + * @type {{ [key: string]: Array; }} + * @memberof AutosubmitChallenge + */ + responseErrors?: { [key: string]: Array }; + /** + * + * @type {string} + * @memberof AutosubmitChallenge + */ + url: string; + /** + * + * @type {{ [key: string]: string; }} + * @memberof AutosubmitChallenge + */ + attrs: { [key: string]: string }; + /** + * + * @type {string} + * @memberof AutosubmitChallenge + */ + title?: string; +} + +/** + * Check if a given object implements the AutosubmitChallenge interface. + */ +export function instanceOfAutosubmitChallenge(value: object): value is AutosubmitChallenge { + if (!("url" in value) || value["url"] === undefined) return false; + if (!("attrs" in value) || value["attrs"] === undefined) return false; + return true; +} + +export function AutosubmitChallengeFromJSON(json: any): AutosubmitChallenge { + return AutosubmitChallengeFromJSONTyped(json, false); +} + +export function AutosubmitChallengeFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): AutosubmitChallenge { + if (json == null) { + return json; + } + return { + flowInfo: + json["flow_info"] == null ? undefined : ContextualFlowInfoFromJSON(json["flow_info"]), + component: json["component"] == null ? undefined : json["component"], + responseErrors: json["response_errors"] == null ? undefined : json["response_errors"], + url: json["url"], + attrs: json["attrs"], + title: json["title"] == null ? undefined : json["title"], + }; +} + +export function AutosubmitChallengeToJSON(json: any): AutosubmitChallenge { + return AutosubmitChallengeToJSONTyped(json, false); +} + +export function AutosubmitChallengeToJSONTyped( + value?: AutosubmitChallenge | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + flow_info: ContextualFlowInfoToJSON(value["flowInfo"]), + component: value["component"], + response_errors: value["responseErrors"], + url: value["url"], + attrs: value["attrs"], + title: value["title"], + }; +} diff --git a/packages/client-ts/src/models/BackendsEnum.ts b/packages/client-ts/src/models/BackendsEnum.ts new file mode 100644 index 0000000000..1803749649 --- /dev/null +++ b/packages/client-ts/src/models/BackendsEnum.ts @@ -0,0 +1,53 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const BackendsEnum = { + AuthentikCoreAuthInbuiltBackend: "authentik.core.auth.InbuiltBackend", + AuthentikCoreAuthTokenBackend: "authentik.core.auth.TokenBackend", + AuthentikSourcesLdapAuthLdapBackend: "authentik.sources.ldap.auth.LDAPBackend", + AuthentikSourcesKerberosAuthKerberosBackend: "authentik.sources.kerberos.auth.KerberosBackend", + UnknownDefaultOpenApi: "11184809", +} as const; +export type BackendsEnum = (typeof BackendsEnum)[keyof typeof BackendsEnum]; + +export function instanceOfBackendsEnum(value: any): boolean { + for (const key in BackendsEnum) { + if (Object.prototype.hasOwnProperty.call(BackendsEnum, key)) { + if (BackendsEnum[key as keyof typeof BackendsEnum] === value) { + return true; + } + } + } + return false; +} + +export function BackendsEnumFromJSON(json: any): BackendsEnum { + return BackendsEnumFromJSONTyped(json, false); +} + +export function BackendsEnumFromJSONTyped(json: any, ignoreDiscriminator: boolean): BackendsEnum { + return json as BackendsEnum; +} + +export function BackendsEnumToJSON(value?: BackendsEnum | null): any { + return value as any; +} + +export function BackendsEnumToJSONTyped(value: any, ignoreDiscriminator: boolean): BackendsEnum { + return value as BackendsEnum; +} diff --git a/packages/client-ts/src/models/BindingTypeEnum.ts b/packages/client-ts/src/models/BindingTypeEnum.ts new file mode 100644 index 0000000000..d531cf8a3f --- /dev/null +++ b/packages/client-ts/src/models/BindingTypeEnum.ts @@ -0,0 +1,58 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const BindingTypeEnum = { + Redirect: "REDIRECT", + Post: "POST", + PostAuto: "POST_AUTO", + UnknownDefaultOpenApi: "11184809", +} as const; +export type BindingTypeEnum = (typeof BindingTypeEnum)[keyof typeof BindingTypeEnum]; + +export function instanceOfBindingTypeEnum(value: any): boolean { + for (const key in BindingTypeEnum) { + if (Object.prototype.hasOwnProperty.call(BindingTypeEnum, key)) { + if (BindingTypeEnum[key as keyof typeof BindingTypeEnum] === value) { + return true; + } + } + } + return false; +} + +export function BindingTypeEnumFromJSON(json: any): BindingTypeEnum { + return BindingTypeEnumFromJSONTyped(json, false); +} + +export function BindingTypeEnumFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): BindingTypeEnum { + return json as BindingTypeEnum; +} + +export function BindingTypeEnumToJSON(value?: BindingTypeEnum | null): any { + return value as any; +} + +export function BindingTypeEnumToJSONTyped( + value: any, + ignoreDiscriminator: boolean, +): BindingTypeEnum { + return value as BindingTypeEnum; +} diff --git a/packages/client-ts/src/models/BlueprintFile.ts b/packages/client-ts/src/models/BlueprintFile.ts new file mode 100644 index 0000000000..3a5acb1a93 --- /dev/null +++ b/packages/client-ts/src/models/BlueprintFile.ts @@ -0,0 +1,94 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Metadata } from "./Metadata"; +import { MetadataFromJSON } from "./Metadata"; + +/** + * + * @export + * @interface BlueprintFile + */ +export interface BlueprintFile { + /** + * + * @type {string} + * @memberof BlueprintFile + */ + path: string; + /** + * + * @type {Date} + * @memberof BlueprintFile + */ + lastM: Date; + /** + * + * @type {string} + * @memberof BlueprintFile + */ + hash: string; + /** + * + * @type {Metadata} + * @memberof BlueprintFile + */ + readonly meta: Metadata; +} + +/** + * Check if a given object implements the BlueprintFile interface. + */ +export function instanceOfBlueprintFile(value: object): value is BlueprintFile { + if (!("path" in value) || value["path"] === undefined) return false; + if (!("lastM" in value) || value["lastM"] === undefined) return false; + if (!("hash" in value) || value["hash"] === undefined) return false; + if (!("meta" in value) || value["meta"] === undefined) return false; + return true; +} + +export function BlueprintFileFromJSON(json: any): BlueprintFile { + return BlueprintFileFromJSONTyped(json, false); +} + +export function BlueprintFileFromJSONTyped(json: any, ignoreDiscriminator: boolean): BlueprintFile { + if (json == null) { + return json; + } + return { + path: json["path"], + lastM: new Date(json["last_m"]), + hash: json["hash"], + meta: MetadataFromJSON(json["meta"]), + }; +} + +export function BlueprintFileToJSON(json: any): BlueprintFile { + return BlueprintFileToJSONTyped(json, false); +} + +export function BlueprintFileToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + path: value["path"], + last_m: value["lastM"].toISOString(), + hash: value["hash"], + }; +} diff --git a/packages/client-ts/src/models/BlueprintImportResult.ts b/packages/client-ts/src/models/BlueprintImportResult.ts new file mode 100644 index 0000000000..2fae41c879 --- /dev/null +++ b/packages/client-ts/src/models/BlueprintImportResult.ts @@ -0,0 +1,77 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { LogEvent } from "./LogEvent"; +import { LogEventFromJSON } from "./LogEvent"; + +/** + * Logs of an attempted blueprint import + * @export + * @interface BlueprintImportResult + */ +export interface BlueprintImportResult { + /** + * + * @type {Array} + * @memberof BlueprintImportResult + */ + readonly logs: Array; + /** + * + * @type {boolean} + * @memberof BlueprintImportResult + */ + readonly success: boolean; +} + +/** + * Check if a given object implements the BlueprintImportResult interface. + */ +export function instanceOfBlueprintImportResult(value: object): value is BlueprintImportResult { + if (!("logs" in value) || value["logs"] === undefined) return false; + if (!("success" in value) || value["success"] === undefined) return false; + return true; +} + +export function BlueprintImportResultFromJSON(json: any): BlueprintImportResult { + return BlueprintImportResultFromJSONTyped(json, false); +} + +export function BlueprintImportResultFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): BlueprintImportResult { + if (json == null) { + return json; + } + return { + logs: (json["logs"] as Array).map(LogEventFromJSON), + success: json["success"], + }; +} + +export function BlueprintImportResultToJSON(json: any): BlueprintImportResult { + return BlueprintImportResultToJSONTyped(json, false); +} + +export function BlueprintImportResultToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return {}; +} diff --git a/packages/client-ts/src/models/BlueprintInstance.ts b/packages/client-ts/src/models/BlueprintInstance.ts new file mode 100644 index 0000000000..92acca3964 --- /dev/null +++ b/packages/client-ts/src/models/BlueprintInstance.ts @@ -0,0 +1,154 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { BlueprintInstanceStatusEnum } from "./BlueprintInstanceStatusEnum"; +import { BlueprintInstanceStatusEnumFromJSON } from "./BlueprintInstanceStatusEnum"; + +/** + * Info about a single blueprint instance file + * @export + * @interface BlueprintInstance + */ +export interface BlueprintInstance { + /** + * + * @type {string} + * @memberof BlueprintInstance + */ + readonly pk: string; + /** + * + * @type {string} + * @memberof BlueprintInstance + */ + name: string; + /** + * + * @type {string} + * @memberof BlueprintInstance + */ + path?: string; + /** + * + * @type {{ [key: string]: any; }} + * @memberof BlueprintInstance + */ + context?: { [key: string]: any }; + /** + * + * @type {Date} + * @memberof BlueprintInstance + */ + readonly lastApplied: Date; + /** + * + * @type {string} + * @memberof BlueprintInstance + */ + readonly lastAppliedHash: string; + /** + * + * @type {BlueprintInstanceStatusEnum} + * @memberof BlueprintInstance + */ + readonly status: BlueprintInstanceStatusEnum; + /** + * + * @type {boolean} + * @memberof BlueprintInstance + */ + enabled?: boolean; + /** + * + * @type {Array} + * @memberof BlueprintInstance + */ + readonly managedModels: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof BlueprintInstance + */ + readonly metadata: { [key: string]: any }; + /** + * + * @type {string} + * @memberof BlueprintInstance + */ + content?: string; +} + +/** + * Check if a given object implements the BlueprintInstance interface. + */ +export function instanceOfBlueprintInstance(value: object): value is BlueprintInstance { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("lastApplied" in value) || value["lastApplied"] === undefined) return false; + if (!("lastAppliedHash" in value) || value["lastAppliedHash"] === undefined) return false; + if (!("status" in value) || value["status"] === undefined) return false; + if (!("managedModels" in value) || value["managedModels"] === undefined) return false; + if (!("metadata" in value) || value["metadata"] === undefined) return false; + return true; +} + +export function BlueprintInstanceFromJSON(json: any): BlueprintInstance { + return BlueprintInstanceFromJSONTyped(json, false); +} + +export function BlueprintInstanceFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): BlueprintInstance { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + path: json["path"] == null ? undefined : json["path"], + context: json["context"] == null ? undefined : json["context"], + lastApplied: new Date(json["last_applied"]), + lastAppliedHash: json["last_applied_hash"], + status: BlueprintInstanceStatusEnumFromJSON(json["status"]), + enabled: json["enabled"] == null ? undefined : json["enabled"], + managedModels: json["managed_models"], + metadata: json["metadata"], + content: json["content"] == null ? undefined : json["content"], + }; +} + +export function BlueprintInstanceToJSON(json: any): BlueprintInstance { + return BlueprintInstanceToJSONTyped(json, false); +} + +export function BlueprintInstanceToJSONTyped( + value?: Omit< + BlueprintInstance, + "pk" | "last_applied" | "last_applied_hash" | "status" | "managed_models" | "metadata" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + path: value["path"], + context: value["context"], + enabled: value["enabled"], + content: value["content"], + }; +} diff --git a/packages/client-ts/src/models/BlueprintInstanceRequest.ts b/packages/client-ts/src/models/BlueprintInstanceRequest.ts new file mode 100644 index 0000000000..81ce201aa6 --- /dev/null +++ b/packages/client-ts/src/models/BlueprintInstanceRequest.ts @@ -0,0 +1,102 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Info about a single blueprint instance file + * @export + * @interface BlueprintInstanceRequest + */ +export interface BlueprintInstanceRequest { + /** + * + * @type {string} + * @memberof BlueprintInstanceRequest + */ + name: string; + /** + * + * @type {string} + * @memberof BlueprintInstanceRequest + */ + path?: string; + /** + * + * @type {{ [key: string]: any; }} + * @memberof BlueprintInstanceRequest + */ + context?: { [key: string]: any }; + /** + * + * @type {boolean} + * @memberof BlueprintInstanceRequest + */ + enabled?: boolean; + /** + * + * @type {string} + * @memberof BlueprintInstanceRequest + */ + content?: string; +} + +/** + * Check if a given object implements the BlueprintInstanceRequest interface. + */ +export function instanceOfBlueprintInstanceRequest( + value: object, +): value is BlueprintInstanceRequest { + if (!("name" in value) || value["name"] === undefined) return false; + return true; +} + +export function BlueprintInstanceRequestFromJSON(json: any): BlueprintInstanceRequest { + return BlueprintInstanceRequestFromJSONTyped(json, false); +} + +export function BlueprintInstanceRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): BlueprintInstanceRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + path: json["path"] == null ? undefined : json["path"], + context: json["context"] == null ? undefined : json["context"], + enabled: json["enabled"] == null ? undefined : json["enabled"], + content: json["content"] == null ? undefined : json["content"], + }; +} + +export function BlueprintInstanceRequestToJSON(json: any): BlueprintInstanceRequest { + return BlueprintInstanceRequestToJSONTyped(json, false); +} + +export function BlueprintInstanceRequestToJSONTyped( + value?: BlueprintInstanceRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + path: value["path"], + context: value["context"], + enabled: value["enabled"], + content: value["content"], + }; +} diff --git a/packages/client-ts/src/models/BlueprintInstanceStatusEnum.ts b/packages/client-ts/src/models/BlueprintInstanceStatusEnum.ts new file mode 100644 index 0000000000..1307392587 --- /dev/null +++ b/packages/client-ts/src/models/BlueprintInstanceStatusEnum.ts @@ -0,0 +1,64 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const BlueprintInstanceStatusEnum = { + Successful: "successful", + Warning: "warning", + Error: "error", + Orphaned: "orphaned", + Unknown: "unknown", + UnknownDefaultOpenApi: "11184809", +} as const; +export type BlueprintInstanceStatusEnum = + (typeof BlueprintInstanceStatusEnum)[keyof typeof BlueprintInstanceStatusEnum]; + +export function instanceOfBlueprintInstanceStatusEnum(value: any): boolean { + for (const key in BlueprintInstanceStatusEnum) { + if (Object.prototype.hasOwnProperty.call(BlueprintInstanceStatusEnum, key)) { + if ( + BlueprintInstanceStatusEnum[key as keyof typeof BlueprintInstanceStatusEnum] === + value + ) { + return true; + } + } + } + return false; +} + +export function BlueprintInstanceStatusEnumFromJSON(json: any): BlueprintInstanceStatusEnum { + return BlueprintInstanceStatusEnumFromJSONTyped(json, false); +} + +export function BlueprintInstanceStatusEnumFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): BlueprintInstanceStatusEnum { + return json as BlueprintInstanceStatusEnum; +} + +export function BlueprintInstanceStatusEnumToJSON(value?: BlueprintInstanceStatusEnum | null): any { + return value as any; +} + +export function BlueprintInstanceStatusEnumToJSONTyped( + value: any, + ignoreDiscriminator: boolean, +): BlueprintInstanceStatusEnum { + return value as BlueprintInstanceStatusEnum; +} diff --git a/packages/client-ts/src/models/Brand.ts b/packages/client-ts/src/models/Brand.ts new file mode 100644 index 0000000000..04b2726990 --- /dev/null +++ b/packages/client-ts/src/models/Brand.ts @@ -0,0 +1,217 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Brand Serializer + * @export + * @interface Brand + */ +export interface Brand { + /** + * + * @type {string} + * @memberof Brand + */ + readonly brandUuid: string; + /** + * Domain that activates this brand. Can be a superset, i.e. `a.b` for `aa.b` and `ba.b` + * @type {string} + * @memberof Brand + */ + domain: string; + /** + * + * @type {boolean} + * @memberof Brand + */ + _default?: boolean; + /** + * + * @type {string} + * @memberof Brand + */ + brandingTitle?: string; + /** + * + * @type {string} + * @memberof Brand + */ + brandingLogo?: string; + /** + * + * @type {string} + * @memberof Brand + */ + brandingFavicon?: string; + /** + * + * @type {string} + * @memberof Brand + */ + brandingCustomCss?: string; + /** + * + * @type {string} + * @memberof Brand + */ + brandingDefaultFlowBackground?: string; + /** + * + * @type {string} + * @memberof Brand + */ + flowAuthentication?: string | null; + /** + * + * @type {string} + * @memberof Brand + */ + flowInvalidation?: string | null; + /** + * + * @type {string} + * @memberof Brand + */ + flowRecovery?: string | null; + /** + * + * @type {string} + * @memberof Brand + */ + flowUnenrollment?: string | null; + /** + * + * @type {string} + * @memberof Brand + */ + flowUserSettings?: string | null; + /** + * + * @type {string} + * @memberof Brand + */ + flowDeviceCode?: string | null; + /** + * + * @type {string} + * @memberof Brand + */ + flowLockdown?: string | null; + /** + * When set, external users will be redirected to this application after authenticating. + * @type {string} + * @memberof Brand + */ + defaultApplication?: string | null; + /** + * Web Certificate used by the authentik Core webserver. + * @type {string} + * @memberof Brand + */ + webCertificate?: string | null; + /** + * Certificates used for client authentication. + * @type {Array} + * @memberof Brand + */ + clientCertificates?: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof Brand + */ + attributes?: { [key: string]: any }; +} + +/** + * Check if a given object implements the Brand interface. + */ +export function instanceOfBrand(value: object): value is Brand { + if (!("brandUuid" in value) || value["brandUuid"] === undefined) return false; + if (!("domain" in value) || value["domain"] === undefined) return false; + return true; +} + +export function BrandFromJSON(json: any): Brand { + return BrandFromJSONTyped(json, false); +} + +export function BrandFromJSONTyped(json: any, ignoreDiscriminator: boolean): Brand { + if (json == null) { + return json; + } + return { + brandUuid: json["brand_uuid"], + domain: json["domain"], + _default: json["default"] == null ? undefined : json["default"], + brandingTitle: json["branding_title"] == null ? undefined : json["branding_title"], + brandingLogo: json["branding_logo"] == null ? undefined : json["branding_logo"], + brandingFavicon: json["branding_favicon"] == null ? undefined : json["branding_favicon"], + brandingCustomCss: + json["branding_custom_css"] == null ? undefined : json["branding_custom_css"], + brandingDefaultFlowBackground: + json["branding_default_flow_background"] == null + ? undefined + : json["branding_default_flow_background"], + flowAuthentication: + json["flow_authentication"] == null ? undefined : json["flow_authentication"], + flowInvalidation: json["flow_invalidation"] == null ? undefined : json["flow_invalidation"], + flowRecovery: json["flow_recovery"] == null ? undefined : json["flow_recovery"], + flowUnenrollment: json["flow_unenrollment"] == null ? undefined : json["flow_unenrollment"], + flowUserSettings: + json["flow_user_settings"] == null ? undefined : json["flow_user_settings"], + flowDeviceCode: json["flow_device_code"] == null ? undefined : json["flow_device_code"], + flowLockdown: json["flow_lockdown"] == null ? undefined : json["flow_lockdown"], + defaultApplication: + json["default_application"] == null ? undefined : json["default_application"], + webCertificate: json["web_certificate"] == null ? undefined : json["web_certificate"], + clientCertificates: + json["client_certificates"] == null ? undefined : json["client_certificates"], + attributes: json["attributes"] == null ? undefined : json["attributes"], + }; +} + +export function BrandToJSON(json: any): Brand { + return BrandToJSONTyped(json, false); +} + +export function BrandToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + domain: value["domain"], + default: value["_default"], + branding_title: value["brandingTitle"], + branding_logo: value["brandingLogo"], + branding_favicon: value["brandingFavicon"], + branding_custom_css: value["brandingCustomCss"], + branding_default_flow_background: value["brandingDefaultFlowBackground"], + flow_authentication: value["flowAuthentication"], + flow_invalidation: value["flowInvalidation"], + flow_recovery: value["flowRecovery"], + flow_unenrollment: value["flowUnenrollment"], + flow_user_settings: value["flowUserSettings"], + flow_device_code: value["flowDeviceCode"], + flow_lockdown: value["flowLockdown"], + default_application: value["defaultApplication"], + web_certificate: value["webCertificate"], + client_certificates: value["clientCertificates"], + attributes: value["attributes"], + }; +} diff --git a/packages/client-ts/src/models/BrandRequest.ts b/packages/client-ts/src/models/BrandRequest.ts new file mode 100644 index 0000000000..a5aec44e54 --- /dev/null +++ b/packages/client-ts/src/models/BrandRequest.ts @@ -0,0 +1,209 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Brand Serializer + * @export + * @interface BrandRequest + */ +export interface BrandRequest { + /** + * Domain that activates this brand. Can be a superset, i.e. `a.b` for `aa.b` and `ba.b` + * @type {string} + * @memberof BrandRequest + */ + domain: string; + /** + * + * @type {boolean} + * @memberof BrandRequest + */ + _default?: boolean; + /** + * + * @type {string} + * @memberof BrandRequest + */ + brandingTitle?: string; + /** + * + * @type {string} + * @memberof BrandRequest + */ + brandingLogo?: string; + /** + * + * @type {string} + * @memberof BrandRequest + */ + brandingFavicon?: string; + /** + * + * @type {string} + * @memberof BrandRequest + */ + brandingCustomCss?: string; + /** + * + * @type {string} + * @memberof BrandRequest + */ + brandingDefaultFlowBackground?: string; + /** + * + * @type {string} + * @memberof BrandRequest + */ + flowAuthentication?: string | null; + /** + * + * @type {string} + * @memberof BrandRequest + */ + flowInvalidation?: string | null; + /** + * + * @type {string} + * @memberof BrandRequest + */ + flowRecovery?: string | null; + /** + * + * @type {string} + * @memberof BrandRequest + */ + flowUnenrollment?: string | null; + /** + * + * @type {string} + * @memberof BrandRequest + */ + flowUserSettings?: string | null; + /** + * + * @type {string} + * @memberof BrandRequest + */ + flowDeviceCode?: string | null; + /** + * + * @type {string} + * @memberof BrandRequest + */ + flowLockdown?: string | null; + /** + * When set, external users will be redirected to this application after authenticating. + * @type {string} + * @memberof BrandRequest + */ + defaultApplication?: string | null; + /** + * Web Certificate used by the authentik Core webserver. + * @type {string} + * @memberof BrandRequest + */ + webCertificate?: string | null; + /** + * Certificates used for client authentication. + * @type {Array} + * @memberof BrandRequest + */ + clientCertificates?: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof BrandRequest + */ + attributes?: { [key: string]: any }; +} + +/** + * Check if a given object implements the BrandRequest interface. + */ +export function instanceOfBrandRequest(value: object): value is BrandRequest { + if (!("domain" in value) || value["domain"] === undefined) return false; + return true; +} + +export function BrandRequestFromJSON(json: any): BrandRequest { + return BrandRequestFromJSONTyped(json, false); +} + +export function BrandRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): BrandRequest { + if (json == null) { + return json; + } + return { + domain: json["domain"], + _default: json["default"] == null ? undefined : json["default"], + brandingTitle: json["branding_title"] == null ? undefined : json["branding_title"], + brandingLogo: json["branding_logo"] == null ? undefined : json["branding_logo"], + brandingFavicon: json["branding_favicon"] == null ? undefined : json["branding_favicon"], + brandingCustomCss: + json["branding_custom_css"] == null ? undefined : json["branding_custom_css"], + brandingDefaultFlowBackground: + json["branding_default_flow_background"] == null + ? undefined + : json["branding_default_flow_background"], + flowAuthentication: + json["flow_authentication"] == null ? undefined : json["flow_authentication"], + flowInvalidation: json["flow_invalidation"] == null ? undefined : json["flow_invalidation"], + flowRecovery: json["flow_recovery"] == null ? undefined : json["flow_recovery"], + flowUnenrollment: json["flow_unenrollment"] == null ? undefined : json["flow_unenrollment"], + flowUserSettings: + json["flow_user_settings"] == null ? undefined : json["flow_user_settings"], + flowDeviceCode: json["flow_device_code"] == null ? undefined : json["flow_device_code"], + flowLockdown: json["flow_lockdown"] == null ? undefined : json["flow_lockdown"], + defaultApplication: + json["default_application"] == null ? undefined : json["default_application"], + webCertificate: json["web_certificate"] == null ? undefined : json["web_certificate"], + clientCertificates: + json["client_certificates"] == null ? undefined : json["client_certificates"], + attributes: json["attributes"] == null ? undefined : json["attributes"], + }; +} + +export function BrandRequestToJSON(json: any): BrandRequest { + return BrandRequestToJSONTyped(json, false); +} + +export function BrandRequestToJSONTyped( + value?: BrandRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + domain: value["domain"], + default: value["_default"], + branding_title: value["brandingTitle"], + branding_logo: value["brandingLogo"], + branding_favicon: value["brandingFavicon"], + branding_custom_css: value["brandingCustomCss"], + branding_default_flow_background: value["brandingDefaultFlowBackground"], + flow_authentication: value["flowAuthentication"], + flow_invalidation: value["flowInvalidation"], + flow_recovery: value["flowRecovery"], + flow_unenrollment: value["flowUnenrollment"], + flow_user_settings: value["flowUserSettings"], + flow_device_code: value["flowDeviceCode"], + flow_lockdown: value["flowLockdown"], + default_application: value["defaultApplication"], + web_certificate: value["webCertificate"], + client_certificates: value["clientCertificates"], + attributes: value["attributes"], + }; +} diff --git a/packages/client-ts/src/models/BulkDeleteSessionResponse.ts b/packages/client-ts/src/models/BulkDeleteSessionResponse.ts new file mode 100644 index 0000000000..71ac0854da --- /dev/null +++ b/packages/client-ts/src/models/BulkDeleteSessionResponse.ts @@ -0,0 +1,70 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + * @interface BulkDeleteSessionResponse + */ +export interface BulkDeleteSessionResponse { + /** + * + * @type {number} + * @memberof BulkDeleteSessionResponse + */ + deleted: number; +} + +/** + * Check if a given object implements the BulkDeleteSessionResponse interface. + */ +export function instanceOfBulkDeleteSessionResponse( + value: object, +): value is BulkDeleteSessionResponse { + if (!("deleted" in value) || value["deleted"] === undefined) return false; + return true; +} + +export function BulkDeleteSessionResponseFromJSON(json: any): BulkDeleteSessionResponse { + return BulkDeleteSessionResponseFromJSONTyped(json, false); +} + +export function BulkDeleteSessionResponseFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): BulkDeleteSessionResponse { + if (json == null) { + return json; + } + return { + deleted: json["deleted"], + }; +} + +export function BulkDeleteSessionResponseToJSON(json: any): BulkDeleteSessionResponse { + return BulkDeleteSessionResponseToJSONTyped(json, false); +} + +export function BulkDeleteSessionResponseToJSONTyped( + value?: BulkDeleteSessionResponse | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + deleted: value["deleted"], + }; +} diff --git a/packages/client-ts/src/models/Cache.ts b/packages/client-ts/src/models/Cache.ts new file mode 100644 index 0000000000..f788680890 --- /dev/null +++ b/packages/client-ts/src/models/Cache.ts @@ -0,0 +1,63 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Generic cache stats for an object + * @export + * @interface Cache + */ +export interface Cache { + /** + * + * @type {number} + * @memberof Cache + */ + readonly count: number; +} + +/** + * Check if a given object implements the Cache interface. + */ +export function instanceOfCache(value: object): value is Cache { + if (!("count" in value) || value["count"] === undefined) return false; + return true; +} + +export function CacheFromJSON(json: any): Cache { + return CacheFromJSONTyped(json, false); +} + +export function CacheFromJSONTyped(json: any, ignoreDiscriminator: boolean): Cache { + if (json == null) { + return json; + } + return { + count: json["count"], + }; +} + +export function CacheToJSON(json: any): Cache { + return CacheToJSONTyped(json, false); +} + +export function CacheToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return {}; +} diff --git a/packages/client-ts/src/models/CapabilitiesEnum.ts b/packages/client-ts/src/models/CapabilitiesEnum.ts new file mode 100644 index 0000000000..3151528644 --- /dev/null +++ b/packages/client-ts/src/models/CapabilitiesEnum.ts @@ -0,0 +1,62 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const CapabilitiesEnum = { + CanSaveMedia: "can_save_media", + CanSaveReports: "can_save_reports", + CanGeoIp: "can_geo_ip", + CanAsn: "can_asn", + CanImpersonate: "can_impersonate", + CanDebug: "can_debug", + IsEnterprise: "is_enterprise", + UnknownDefaultOpenApi: "11184809", +} as const; +export type CapabilitiesEnum = (typeof CapabilitiesEnum)[keyof typeof CapabilitiesEnum]; + +export function instanceOfCapabilitiesEnum(value: any): boolean { + for (const key in CapabilitiesEnum) { + if (Object.prototype.hasOwnProperty.call(CapabilitiesEnum, key)) { + if (CapabilitiesEnum[key as keyof typeof CapabilitiesEnum] === value) { + return true; + } + } + } + return false; +} + +export function CapabilitiesEnumFromJSON(json: any): CapabilitiesEnum { + return CapabilitiesEnumFromJSONTyped(json, false); +} + +export function CapabilitiesEnumFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): CapabilitiesEnum { + return json as CapabilitiesEnum; +} + +export function CapabilitiesEnumToJSON(value?: CapabilitiesEnum | null): any { + return value as any; +} + +export function CapabilitiesEnumToJSONTyped( + value: any, + ignoreDiscriminator: boolean, +): CapabilitiesEnum { + return value as CapabilitiesEnum; +} diff --git a/packages/client-ts/src/models/CaptchaChallenge.ts b/packages/client-ts/src/models/CaptchaChallenge.ts new file mode 100644 index 0000000000..97816bce31 --- /dev/null +++ b/packages/client-ts/src/models/CaptchaChallenge.ts @@ -0,0 +1,133 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { ContextualFlowInfo } from "./ContextualFlowInfo"; +import { ContextualFlowInfoFromJSON, ContextualFlowInfoToJSON } from "./ContextualFlowInfo"; +import type { ErrorDetail } from "./ErrorDetail"; + +/** + * Site public key + * @export + * @interface CaptchaChallenge + */ +export interface CaptchaChallenge { + /** + * + * @type {ContextualFlowInfo} + * @memberof CaptchaChallenge + */ + flowInfo?: ContextualFlowInfo; + /** + * + * @type {string} + * @memberof CaptchaChallenge + */ + component?: string; + /** + * + * @type {{ [key: string]: Array; }} + * @memberof CaptchaChallenge + */ + responseErrors?: { [key: string]: Array }; + /** + * + * @type {string} + * @memberof CaptchaChallenge + */ + pendingUser: string; + /** + * + * @type {string} + * @memberof CaptchaChallenge + */ + pendingUserAvatar: string; + /** + * + * @type {string} + * @memberof CaptchaChallenge + */ + siteKey: string; + /** + * + * @type {string} + * @memberof CaptchaChallenge + */ + jsUrl: string; + /** + * + * @type {boolean} + * @memberof CaptchaChallenge + */ + interactive: boolean; +} + +/** + * Check if a given object implements the CaptchaChallenge interface. + */ +export function instanceOfCaptchaChallenge(value: object): value is CaptchaChallenge { + if (!("pendingUser" in value) || value["pendingUser"] === undefined) return false; + if (!("pendingUserAvatar" in value) || value["pendingUserAvatar"] === undefined) return false; + if (!("siteKey" in value) || value["siteKey"] === undefined) return false; + if (!("jsUrl" in value) || value["jsUrl"] === undefined) return false; + if (!("interactive" in value) || value["interactive"] === undefined) return false; + return true; +} + +export function CaptchaChallengeFromJSON(json: any): CaptchaChallenge { + return CaptchaChallengeFromJSONTyped(json, false); +} + +export function CaptchaChallengeFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): CaptchaChallenge { + if (json == null) { + return json; + } + return { + flowInfo: + json["flow_info"] == null ? undefined : ContextualFlowInfoFromJSON(json["flow_info"]), + component: json["component"] == null ? undefined : json["component"], + responseErrors: json["response_errors"] == null ? undefined : json["response_errors"], + pendingUser: json["pending_user"], + pendingUserAvatar: json["pending_user_avatar"], + siteKey: json["site_key"], + jsUrl: json["js_url"], + interactive: json["interactive"], + }; +} + +export function CaptchaChallengeToJSON(json: any): CaptchaChallenge { + return CaptchaChallengeToJSONTyped(json, false); +} + +export function CaptchaChallengeToJSONTyped( + value?: CaptchaChallenge | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + flow_info: ContextualFlowInfoToJSON(value["flowInfo"]), + component: value["component"], + response_errors: value["responseErrors"], + pending_user: value["pendingUser"], + pending_user_avatar: value["pendingUserAvatar"], + site_key: value["siteKey"], + js_url: value["jsUrl"], + interactive: value["interactive"], + }; +} diff --git a/packages/client-ts/src/models/CaptchaChallengeResponseRequest.ts b/packages/client-ts/src/models/CaptchaChallengeResponseRequest.ts new file mode 100644 index 0000000000..f9e56ff0ab --- /dev/null +++ b/packages/client-ts/src/models/CaptchaChallengeResponseRequest.ts @@ -0,0 +1,80 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Validate captcha token + * @export + * @interface CaptchaChallengeResponseRequest + */ +export interface CaptchaChallengeResponseRequest { + /** + * + * @type {string} + * @memberof CaptchaChallengeResponseRequest + */ + component?: string; + /** + * + * @type {string} + * @memberof CaptchaChallengeResponseRequest + */ + token: string; +} + +/** + * Check if a given object implements the CaptchaChallengeResponseRequest interface. + */ +export function instanceOfCaptchaChallengeResponseRequest( + value: object, +): value is CaptchaChallengeResponseRequest { + if (!("token" in value) || value["token"] === undefined) return false; + return true; +} + +export function CaptchaChallengeResponseRequestFromJSON( + json: any, +): CaptchaChallengeResponseRequest { + return CaptchaChallengeResponseRequestFromJSONTyped(json, false); +} + +export function CaptchaChallengeResponseRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): CaptchaChallengeResponseRequest { + if (json == null) { + return json; + } + return { + component: json["component"] == null ? undefined : json["component"], + token: json["token"], + }; +} + +export function CaptchaChallengeResponseRequestToJSON(json: any): CaptchaChallengeResponseRequest { + return CaptchaChallengeResponseRequestToJSONTyped(json, false); +} + +export function CaptchaChallengeResponseRequestToJSONTyped( + value?: CaptchaChallengeResponseRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + component: value["component"], + token: value["token"], + }; +} diff --git a/packages/client-ts/src/models/CaptchaStage.ts b/packages/client-ts/src/models/CaptchaStage.ts new file mode 100644 index 0000000000..2c6b18c9dc --- /dev/null +++ b/packages/client-ts/src/models/CaptchaStage.ts @@ -0,0 +1,179 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { FlowSet } from "./FlowSet"; +import { FlowSetFromJSON } from "./FlowSet"; + +/** + * CaptchaStage Serializer + * @export + * @interface CaptchaStage + */ +export interface CaptchaStage { + /** + * + * @type {string} + * @memberof CaptchaStage + */ + readonly pk: string; + /** + * + * @type {string} + * @memberof CaptchaStage + */ + name: string; + /** + * Get object type so that we know how to edit the object + * @type {string} + * @memberof CaptchaStage + */ + readonly component: string; + /** + * Return object's verbose_name + * @type {string} + * @memberof CaptchaStage + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof CaptchaStage + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof CaptchaStage + */ + readonly metaModelName: string; + /** + * + * @type {Array} + * @memberof CaptchaStage + */ + readonly flowSet: Array; + /** + * Public key, acquired your captcha Provider. + * @type {string} + * @memberof CaptchaStage + */ + publicKey: string; + /** + * + * @type {string} + * @memberof CaptchaStage + */ + jsUrl?: string; + /** + * + * @type {string} + * @memberof CaptchaStage + */ + apiUrl?: string; + /** + * + * @type {boolean} + * @memberof CaptchaStage + */ + interactive?: boolean; + /** + * + * @type {number} + * @memberof CaptchaStage + */ + scoreMinThreshold?: number; + /** + * + * @type {number} + * @memberof CaptchaStage + */ + scoreMaxThreshold?: number; + /** + * When enabled and the received captcha score is outside of the given threshold, the stage will show an error message. When not enabled, the flow will continue, but the data from the captcha will be available in the context for policy decisions + * @type {boolean} + * @memberof CaptchaStage + */ + errorOnInvalidScore?: boolean; +} + +/** + * Check if a given object implements the CaptchaStage interface. + */ +export function instanceOfCaptchaStage(value: object): value is CaptchaStage { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + if (!("flowSet" in value) || value["flowSet"] === undefined) return false; + if (!("publicKey" in value) || value["publicKey"] === undefined) return false; + return true; +} + +export function CaptchaStageFromJSON(json: any): CaptchaStage { + return CaptchaStageFromJSONTyped(json, false); +} + +export function CaptchaStageFromJSONTyped(json: any, ignoreDiscriminator: boolean): CaptchaStage { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + component: json["component"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + flowSet: (json["flow_set"] as Array).map(FlowSetFromJSON), + publicKey: json["public_key"], + jsUrl: json["js_url"] == null ? undefined : json["js_url"], + apiUrl: json["api_url"] == null ? undefined : json["api_url"], + interactive: json["interactive"] == null ? undefined : json["interactive"], + scoreMinThreshold: + json["score_min_threshold"] == null ? undefined : json["score_min_threshold"], + scoreMaxThreshold: + json["score_max_threshold"] == null ? undefined : json["score_max_threshold"], + errorOnInvalidScore: + json["error_on_invalid_score"] == null ? undefined : json["error_on_invalid_score"], + }; +} + +export function CaptchaStageToJSON(json: any): CaptchaStage { + return CaptchaStageToJSONTyped(json, false); +} + +export function CaptchaStageToJSONTyped( + value?: Omit< + CaptchaStage, + "pk" | "component" | "verbose_name" | "verbose_name_plural" | "meta_model_name" | "flow_set" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + public_key: value["publicKey"], + js_url: value["jsUrl"], + api_url: value["apiUrl"], + interactive: value["interactive"], + score_min_threshold: value["scoreMinThreshold"], + score_max_threshold: value["scoreMaxThreshold"], + error_on_invalid_score: value["errorOnInvalidScore"], + }; +} diff --git a/packages/client-ts/src/models/CaptchaStageRequest.ts b/packages/client-ts/src/models/CaptchaStageRequest.ts new file mode 100644 index 0000000000..1c68022168 --- /dev/null +++ b/packages/client-ts/src/models/CaptchaStageRequest.ts @@ -0,0 +1,137 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * CaptchaStage Serializer + * @export + * @interface CaptchaStageRequest + */ +export interface CaptchaStageRequest { + /** + * + * @type {string} + * @memberof CaptchaStageRequest + */ + name: string; + /** + * Public key, acquired your captcha Provider. + * @type {string} + * @memberof CaptchaStageRequest + */ + publicKey: string; + /** + * Private key, acquired your captcha Provider. + * @type {string} + * @memberof CaptchaStageRequest + */ + privateKey: string; + /** + * + * @type {string} + * @memberof CaptchaStageRequest + */ + jsUrl?: string; + /** + * + * @type {string} + * @memberof CaptchaStageRequest + */ + apiUrl?: string; + /** + * + * @type {boolean} + * @memberof CaptchaStageRequest + */ + interactive?: boolean; + /** + * + * @type {number} + * @memberof CaptchaStageRequest + */ + scoreMinThreshold?: number; + /** + * + * @type {number} + * @memberof CaptchaStageRequest + */ + scoreMaxThreshold?: number; + /** + * When enabled and the received captcha score is outside of the given threshold, the stage will show an error message. When not enabled, the flow will continue, but the data from the captcha will be available in the context for policy decisions + * @type {boolean} + * @memberof CaptchaStageRequest + */ + errorOnInvalidScore?: boolean; +} + +/** + * Check if a given object implements the CaptchaStageRequest interface. + */ +export function instanceOfCaptchaStageRequest(value: object): value is CaptchaStageRequest { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("publicKey" in value) || value["publicKey"] === undefined) return false; + if (!("privateKey" in value) || value["privateKey"] === undefined) return false; + return true; +} + +export function CaptchaStageRequestFromJSON(json: any): CaptchaStageRequest { + return CaptchaStageRequestFromJSONTyped(json, false); +} + +export function CaptchaStageRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): CaptchaStageRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + publicKey: json["public_key"], + privateKey: json["private_key"], + jsUrl: json["js_url"] == null ? undefined : json["js_url"], + apiUrl: json["api_url"] == null ? undefined : json["api_url"], + interactive: json["interactive"] == null ? undefined : json["interactive"], + scoreMinThreshold: + json["score_min_threshold"] == null ? undefined : json["score_min_threshold"], + scoreMaxThreshold: + json["score_max_threshold"] == null ? undefined : json["score_max_threshold"], + errorOnInvalidScore: + json["error_on_invalid_score"] == null ? undefined : json["error_on_invalid_score"], + }; +} + +export function CaptchaStageRequestToJSON(json: any): CaptchaStageRequest { + return CaptchaStageRequestToJSONTyped(json, false); +} + +export function CaptchaStageRequestToJSONTyped( + value?: CaptchaStageRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + public_key: value["publicKey"], + private_key: value["privateKey"], + js_url: value["jsUrl"], + api_url: value["apiUrl"], + interactive: value["interactive"], + score_min_threshold: value["scoreMinThreshold"], + score_max_threshold: value["scoreMaxThreshold"], + error_on_invalid_score: value["errorOnInvalidScore"], + }; +} diff --git a/packages/client-ts/src/models/CertAttributeEnum.ts b/packages/client-ts/src/models/CertAttributeEnum.ts new file mode 100644 index 0000000000..8f942f8618 --- /dev/null +++ b/packages/client-ts/src/models/CertAttributeEnum.ts @@ -0,0 +1,58 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const CertAttributeEnum = { + Subject: "subject", + CommonName: "common_name", + Email: "email", + UnknownDefaultOpenApi: "11184809", +} as const; +export type CertAttributeEnum = (typeof CertAttributeEnum)[keyof typeof CertAttributeEnum]; + +export function instanceOfCertAttributeEnum(value: any): boolean { + for (const key in CertAttributeEnum) { + if (Object.prototype.hasOwnProperty.call(CertAttributeEnum, key)) { + if (CertAttributeEnum[key as keyof typeof CertAttributeEnum] === value) { + return true; + } + } + } + return false; +} + +export function CertAttributeEnumFromJSON(json: any): CertAttributeEnum { + return CertAttributeEnumFromJSONTyped(json, false); +} + +export function CertAttributeEnumFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): CertAttributeEnum { + return json as CertAttributeEnum; +} + +export function CertAttributeEnumToJSON(value?: CertAttributeEnum | null): any { + return value as any; +} + +export function CertAttributeEnumToJSONTyped( + value: any, + ignoreDiscriminator: boolean, +): CertAttributeEnum { + return value as CertAttributeEnum; +} diff --git a/packages/client-ts/src/models/CertificateData.ts b/packages/client-ts/src/models/CertificateData.ts new file mode 100644 index 0000000000..639140cd15 --- /dev/null +++ b/packages/client-ts/src/models/CertificateData.ts @@ -0,0 +1,66 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Get CertificateKeyPair's data + * @export + * @interface CertificateData + */ +export interface CertificateData { + /** + * + * @type {string} + * @memberof CertificateData + */ + readonly data: string; +} + +/** + * Check if a given object implements the CertificateData interface. + */ +export function instanceOfCertificateData(value: object): value is CertificateData { + if (!("data" in value) || value["data"] === undefined) return false; + return true; +} + +export function CertificateDataFromJSON(json: any): CertificateData { + return CertificateDataFromJSONTyped(json, false); +} + +export function CertificateDataFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): CertificateData { + if (json == null) { + return json; + } + return { + data: json["data"], + }; +} + +export function CertificateDataToJSON(json: any): CertificateData { + return CertificateDataToJSONTyped(json, false); +} + +export function CertificateDataToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return {}; +} diff --git a/packages/client-ts/src/models/CertificateGenerationRequest.ts b/packages/client-ts/src/models/CertificateGenerationRequest.ts new file mode 100644 index 0000000000..f3359edbe9 --- /dev/null +++ b/packages/client-ts/src/models/CertificateGenerationRequest.ts @@ -0,0 +1,98 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { AlgEnum } from "./AlgEnum"; +import { AlgEnumFromJSON, AlgEnumToJSON } from "./AlgEnum"; + +/** + * Certificate generation parameters + * @export + * @interface CertificateGenerationRequest + */ +export interface CertificateGenerationRequest { + /** + * + * @type {string} + * @memberof CertificateGenerationRequest + */ + commonName: string; + /** + * + * @type {string} + * @memberof CertificateGenerationRequest + */ + subjectAltName?: string; + /** + * + * @type {number} + * @memberof CertificateGenerationRequest + */ + validityDays: number; + /** + * + * @type {AlgEnum} + * @memberof CertificateGenerationRequest + */ + alg?: AlgEnum; +} + +/** + * Check if a given object implements the CertificateGenerationRequest interface. + */ +export function instanceOfCertificateGenerationRequest( + value: object, +): value is CertificateGenerationRequest { + if (!("commonName" in value) || value["commonName"] === undefined) return false; + if (!("validityDays" in value) || value["validityDays"] === undefined) return false; + return true; +} + +export function CertificateGenerationRequestFromJSON(json: any): CertificateGenerationRequest { + return CertificateGenerationRequestFromJSONTyped(json, false); +} + +export function CertificateGenerationRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): CertificateGenerationRequest { + if (json == null) { + return json; + } + return { + commonName: json["common_name"], + subjectAltName: json["subject_alt_name"] == null ? undefined : json["subject_alt_name"], + validityDays: json["validity_days"], + alg: json["alg"] == null ? undefined : AlgEnumFromJSON(json["alg"]), + }; +} + +export function CertificateGenerationRequestToJSON(json: any): CertificateGenerationRequest { + return CertificateGenerationRequestToJSONTyped(json, false); +} + +export function CertificateGenerationRequestToJSONTyped( + value?: CertificateGenerationRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + common_name: value["commonName"], + subject_alt_name: value["subjectAltName"], + validity_days: value["validityDays"], + alg: AlgEnumToJSON(value["alg"]), + }; +} diff --git a/packages/client-ts/src/models/CertificateKeyPair.ts b/packages/client-ts/src/models/CertificateKeyPair.ts new file mode 100644 index 0000000000..462c47a816 --- /dev/null +++ b/packages/client-ts/src/models/CertificateKeyPair.ts @@ -0,0 +1,166 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { CertificateKeyPairKeyTypeEnum } from "./CertificateKeyPairKeyTypeEnum"; +import { CertificateKeyPairKeyTypeEnumFromJSON } from "./CertificateKeyPairKeyTypeEnum"; + +/** + * CertificateKeyPair Serializer + * @export + * @interface CertificateKeyPair + */ +export interface CertificateKeyPair { + /** + * + * @type {string} + * @memberof CertificateKeyPair + */ + readonly pk: string; + /** + * + * @type {string} + * @memberof CertificateKeyPair + */ + name: string; + /** + * SHA256 fingerprint of the certificate + * @type {string} + * @memberof CertificateKeyPair + */ + readonly fingerprintSha256: string | null; + /** + * SHA1 fingerprint of the certificate + * @type {string} + * @memberof CertificateKeyPair + */ + readonly fingerprintSha1: string | null; + /** + * Certificate expiry date + * @type {Date} + * @memberof CertificateKeyPair + */ + readonly certExpiry: Date | null; + /** + * Certificate subject as RFC4514 string + * @type {string} + * @memberof CertificateKeyPair + */ + readonly certSubject: string | null; + /** + * Show if this keypair has a private key configured or not + * @type {boolean} + * @memberof CertificateKeyPair + */ + readonly privateKeyAvailable: boolean; + /** + * Key algorithm type detected from the certificate's public key + * @type {CertificateKeyPairKeyTypeEnum} + * @memberof CertificateKeyPair + */ + readonly keyType: CertificateKeyPairKeyTypeEnum | null; + /** + * Get URL to download certificate + * @type {string} + * @memberof CertificateKeyPair + */ + readonly certificateDownloadUrl: string; + /** + * Get URL to download private key + * @type {string} + * @memberof CertificateKeyPair + */ + readonly privateKeyDownloadUrl: string; + /** + * Objects that are managed by authentik. These objects are created and updated automatically. This flag only indicates that an object can be overwritten by migrations. You can still modify the objects via the API, but expect changes to be overwritten in a later update. + * @type {string} + * @memberof CertificateKeyPair + */ + readonly managed: string | null; +} + +/** + * Check if a given object implements the CertificateKeyPair interface. + */ +export function instanceOfCertificateKeyPair(value: object): value is CertificateKeyPair { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("fingerprintSha256" in value) || value["fingerprintSha256"] === undefined) return false; + if (!("fingerprintSha1" in value) || value["fingerprintSha1"] === undefined) return false; + if (!("certExpiry" in value) || value["certExpiry"] === undefined) return false; + if (!("certSubject" in value) || value["certSubject"] === undefined) return false; + if (!("privateKeyAvailable" in value) || value["privateKeyAvailable"] === undefined) + return false; + if (!("keyType" in value) || value["keyType"] === undefined) return false; + if (!("certificateDownloadUrl" in value) || value["certificateDownloadUrl"] === undefined) + return false; + if (!("privateKeyDownloadUrl" in value) || value["privateKeyDownloadUrl"] === undefined) + return false; + if (!("managed" in value) || value["managed"] === undefined) return false; + return true; +} + +export function CertificateKeyPairFromJSON(json: any): CertificateKeyPair { + return CertificateKeyPairFromJSONTyped(json, false); +} + +export function CertificateKeyPairFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): CertificateKeyPair { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + fingerprintSha256: json["fingerprint_sha256"], + fingerprintSha1: json["fingerprint_sha1"], + certExpiry: json["cert_expiry"] == null ? null : new Date(json["cert_expiry"]), + certSubject: json["cert_subject"], + privateKeyAvailable: json["private_key_available"], + keyType: CertificateKeyPairKeyTypeEnumFromJSON(json["key_type"]), + certificateDownloadUrl: json["certificate_download_url"], + privateKeyDownloadUrl: json["private_key_download_url"], + managed: json["managed"], + }; +} + +export function CertificateKeyPairToJSON(json: any): CertificateKeyPair { + return CertificateKeyPairToJSONTyped(json, false); +} + +export function CertificateKeyPairToJSONTyped( + value?: Omit< + CertificateKeyPair, + | "pk" + | "fingerprint_sha256" + | "fingerprint_sha1" + | "cert_expiry" + | "cert_subject" + | "private_key_available" + | "key_type" + | "certificate_download_url" + | "private_key_download_url" + | "managed" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + }; +} diff --git a/packages/client-ts/src/models/CertificateKeyPairKeyTypeEnum.ts b/packages/client-ts/src/models/CertificateKeyPairKeyTypeEnum.ts new file mode 100644 index 0000000000..f0430f3a67 --- /dev/null +++ b/packages/client-ts/src/models/CertificateKeyPairKeyTypeEnum.ts @@ -0,0 +1,66 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const CertificateKeyPairKeyTypeEnum = { + Rsa: "rsa", + Ec: "ec", + Dsa: "dsa", + Ed25519: "ed25519", + Ed448: "ed448", + UnknownDefaultOpenApi: "11184809", +} as const; +export type CertificateKeyPairKeyTypeEnum = + (typeof CertificateKeyPairKeyTypeEnum)[keyof typeof CertificateKeyPairKeyTypeEnum]; + +export function instanceOfCertificateKeyPairKeyTypeEnum(value: any): boolean { + for (const key in CertificateKeyPairKeyTypeEnum) { + if (Object.prototype.hasOwnProperty.call(CertificateKeyPairKeyTypeEnum, key)) { + if ( + CertificateKeyPairKeyTypeEnum[key as keyof typeof CertificateKeyPairKeyTypeEnum] === + value + ) { + return true; + } + } + } + return false; +} + +export function CertificateKeyPairKeyTypeEnumFromJSON(json: any): CertificateKeyPairKeyTypeEnum { + return CertificateKeyPairKeyTypeEnumFromJSONTyped(json, false); +} + +export function CertificateKeyPairKeyTypeEnumFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): CertificateKeyPairKeyTypeEnum { + return json as CertificateKeyPairKeyTypeEnum; +} + +export function CertificateKeyPairKeyTypeEnumToJSON( + value?: CertificateKeyPairKeyTypeEnum | null, +): any { + return value as any; +} + +export function CertificateKeyPairKeyTypeEnumToJSONTyped( + value: any, + ignoreDiscriminator: boolean, +): CertificateKeyPairKeyTypeEnum { + return value as CertificateKeyPairKeyTypeEnum; +} diff --git a/packages/client-ts/src/models/CertificateKeyPairRequest.ts b/packages/client-ts/src/models/CertificateKeyPairRequest.ts new file mode 100644 index 0000000000..c39e2990bf --- /dev/null +++ b/packages/client-ts/src/models/CertificateKeyPairRequest.ts @@ -0,0 +1,87 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * CertificateKeyPair Serializer + * @export + * @interface CertificateKeyPairRequest + */ +export interface CertificateKeyPairRequest { + /** + * + * @type {string} + * @memberof CertificateKeyPairRequest + */ + name: string; + /** + * PEM-encoded Certificate data + * @type {string} + * @memberof CertificateKeyPairRequest + */ + certificateData: string; + /** + * Optional Private Key. If this is set, you can use this keypair for encryption. + * @type {string} + * @memberof CertificateKeyPairRequest + */ + keyData?: string; +} + +/** + * Check if a given object implements the CertificateKeyPairRequest interface. + */ +export function instanceOfCertificateKeyPairRequest( + value: object, +): value is CertificateKeyPairRequest { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("certificateData" in value) || value["certificateData"] === undefined) return false; + return true; +} + +export function CertificateKeyPairRequestFromJSON(json: any): CertificateKeyPairRequest { + return CertificateKeyPairRequestFromJSONTyped(json, false); +} + +export function CertificateKeyPairRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): CertificateKeyPairRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + certificateData: json["certificate_data"], + keyData: json["key_data"] == null ? undefined : json["key_data"], + }; +} + +export function CertificateKeyPairRequestToJSON(json: any): CertificateKeyPairRequest { + return CertificateKeyPairRequestToJSONTyped(json, false); +} + +export function CertificateKeyPairRequestToJSONTyped( + value?: CertificateKeyPairRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + certificate_data: value["certificateData"], + key_data: value["keyData"], + }; +} diff --git a/packages/client-ts/src/models/ChallengeTypes.ts b/packages/client-ts/src/models/ChallengeTypes.ts new file mode 100644 index 0000000000..b2cea97332 --- /dev/null +++ b/packages/client-ts/src/models/ChallengeTypes.ts @@ -0,0 +1,433 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { AccessDeniedChallenge } from "./AccessDeniedChallenge"; +import { + AccessDeniedChallengeFromJSONTyped, + AccessDeniedChallengeToJSON, +} from "./AccessDeniedChallenge"; +import type { AppleLoginChallenge } from "./AppleLoginChallenge"; +import { AppleLoginChallengeFromJSONTyped, AppleLoginChallengeToJSON } from "./AppleLoginChallenge"; +import type { AuthenticatorDuoChallenge } from "./AuthenticatorDuoChallenge"; +import { + AuthenticatorDuoChallengeFromJSONTyped, + AuthenticatorDuoChallengeToJSON, +} from "./AuthenticatorDuoChallenge"; +import type { AuthenticatorEmailChallenge } from "./AuthenticatorEmailChallenge"; +import { + AuthenticatorEmailChallengeFromJSONTyped, + AuthenticatorEmailChallengeToJSON, +} from "./AuthenticatorEmailChallenge"; +import type { AuthenticatorSMSChallenge } from "./AuthenticatorSMSChallenge"; +import { + AuthenticatorSMSChallengeFromJSONTyped, + AuthenticatorSMSChallengeToJSON, +} from "./AuthenticatorSMSChallenge"; +import type { AuthenticatorStaticChallenge } from "./AuthenticatorStaticChallenge"; +import { + AuthenticatorStaticChallengeFromJSONTyped, + AuthenticatorStaticChallengeToJSON, +} from "./AuthenticatorStaticChallenge"; +import type { AuthenticatorTOTPChallenge } from "./AuthenticatorTOTPChallenge"; +import { + AuthenticatorTOTPChallengeFromJSONTyped, + AuthenticatorTOTPChallengeToJSON, +} from "./AuthenticatorTOTPChallenge"; +import type { AuthenticatorValidationChallenge } from "./AuthenticatorValidationChallenge"; +import { + AuthenticatorValidationChallengeFromJSONTyped, + AuthenticatorValidationChallengeToJSON, +} from "./AuthenticatorValidationChallenge"; +import type { AuthenticatorWebAuthnChallenge } from "./AuthenticatorWebAuthnChallenge"; +import { + AuthenticatorWebAuthnChallengeFromJSONTyped, + AuthenticatorWebAuthnChallengeToJSON, +} from "./AuthenticatorWebAuthnChallenge"; +import type { AutosubmitChallenge } from "./AutosubmitChallenge"; +import { AutosubmitChallengeFromJSONTyped, AutosubmitChallengeToJSON } from "./AutosubmitChallenge"; +import type { CaptchaChallenge } from "./CaptchaChallenge"; +import { CaptchaChallengeFromJSONTyped, CaptchaChallengeToJSON } from "./CaptchaChallenge"; +import type { ConsentChallenge } from "./ConsentChallenge"; +import { ConsentChallengeFromJSONTyped, ConsentChallengeToJSON } from "./ConsentChallenge"; +import type { DummyChallenge } from "./DummyChallenge"; +import { DummyChallengeFromJSONTyped, DummyChallengeToJSON } from "./DummyChallenge"; +import type { EmailChallenge } from "./EmailChallenge"; +import { EmailChallengeFromJSONTyped, EmailChallengeToJSON } from "./EmailChallenge"; +import type { EndpointAgentChallenge } from "./EndpointAgentChallenge"; +import { + EndpointAgentChallengeFromJSONTyped, + EndpointAgentChallengeToJSON, +} from "./EndpointAgentChallenge"; +import type { FlowErrorChallenge } from "./FlowErrorChallenge"; +import { FlowErrorChallengeFromJSONTyped, FlowErrorChallengeToJSON } from "./FlowErrorChallenge"; +import type { FrameChallenge } from "./FrameChallenge"; +import { FrameChallengeFromJSONTyped, FrameChallengeToJSON } from "./FrameChallenge"; +import type { IdentificationChallenge } from "./IdentificationChallenge"; +import { + IdentificationChallengeFromJSONTyped, + IdentificationChallengeToJSON, +} from "./IdentificationChallenge"; +import type { IframeLogoutChallenge } from "./IframeLogoutChallenge"; +import { + IframeLogoutChallengeFromJSONTyped, + IframeLogoutChallengeToJSON, +} from "./IframeLogoutChallenge"; +import type { NativeLogoutChallenge } from "./NativeLogoutChallenge"; +import { + NativeLogoutChallengeFromJSONTyped, + NativeLogoutChallengeToJSON, +} from "./NativeLogoutChallenge"; +import type { OAuthDeviceCodeChallenge } from "./OAuthDeviceCodeChallenge"; +import { + OAuthDeviceCodeChallengeFromJSONTyped, + OAuthDeviceCodeChallengeToJSON, +} from "./OAuthDeviceCodeChallenge"; +import type { OAuthDeviceCodeFinishChallenge } from "./OAuthDeviceCodeFinishChallenge"; +import { + OAuthDeviceCodeFinishChallengeFromJSONTyped, + OAuthDeviceCodeFinishChallengeToJSON, +} from "./OAuthDeviceCodeFinishChallenge"; +import type { PasswordChallenge } from "./PasswordChallenge"; +import { PasswordChallengeFromJSONTyped, PasswordChallengeToJSON } from "./PasswordChallenge"; +import type { PlexAuthenticationChallenge } from "./PlexAuthenticationChallenge"; +import { + PlexAuthenticationChallengeFromJSONTyped, + PlexAuthenticationChallengeToJSON, +} from "./PlexAuthenticationChallenge"; +import type { PromptChallenge } from "./PromptChallenge"; +import { PromptChallengeFromJSONTyped, PromptChallengeToJSON } from "./PromptChallenge"; +import type { RedirectChallenge } from "./RedirectChallenge"; +import { RedirectChallengeFromJSONTyped, RedirectChallengeToJSON } from "./RedirectChallenge"; +import type { SessionEndChallenge } from "./SessionEndChallenge"; +import { SessionEndChallengeFromJSONTyped, SessionEndChallengeToJSON } from "./SessionEndChallenge"; +import type { ShellChallenge } from "./ShellChallenge"; +import { ShellChallengeFromJSONTyped, ShellChallengeToJSON } from "./ShellChallenge"; +import type { TelegramLoginChallenge } from "./TelegramLoginChallenge"; +import { + TelegramLoginChallengeFromJSONTyped, + TelegramLoginChallengeToJSON, +} from "./TelegramLoginChallenge"; +import type { UserLoginChallenge } from "./UserLoginChallenge"; +import { UserLoginChallengeFromJSONTyped, UserLoginChallengeToJSON } from "./UserLoginChallenge"; + +/** + * @type ChallengeTypes + * + * @export + */ +export type ChallengeTypes = + | ({ component: "ak-provider-iframe-logout" } & IframeLogoutChallenge) + | ({ component: "ak-provider-oauth2-device-code" } & OAuthDeviceCodeChallenge) + | ({ component: "ak-provider-oauth2-device-code-finish" } & OAuthDeviceCodeFinishChallenge) + | ({ component: "ak-provider-saml-native-logout" } & NativeLogoutChallenge) + | ({ component: "ak-source-oauth-apple" } & AppleLoginChallenge) + | ({ component: "ak-source-plex" } & PlexAuthenticationChallenge) + | ({ component: "ak-source-telegram" } & TelegramLoginChallenge) + | ({ component: "ak-stage-access-denied" } & AccessDeniedChallenge) + | ({ component: "ak-stage-authenticator-duo" } & AuthenticatorDuoChallenge) + | ({ component: "ak-stage-authenticator-email" } & AuthenticatorEmailChallenge) + | ({ component: "ak-stage-authenticator-sms" } & AuthenticatorSMSChallenge) + | ({ component: "ak-stage-authenticator-static" } & AuthenticatorStaticChallenge) + | ({ component: "ak-stage-authenticator-totp" } & AuthenticatorTOTPChallenge) + | ({ component: "ak-stage-authenticator-validate" } & AuthenticatorValidationChallenge) + | ({ component: "ak-stage-authenticator-webauthn" } & AuthenticatorWebAuthnChallenge) + | ({ component: "ak-stage-autosubmit" } & AutosubmitChallenge) + | ({ component: "ak-stage-captcha" } & CaptchaChallenge) + | ({ component: "ak-stage-consent" } & ConsentChallenge) + | ({ component: "ak-stage-dummy" } & DummyChallenge) + | ({ component: "ak-stage-email" } & EmailChallenge) + | ({ component: "ak-stage-endpoint-agent" } & EndpointAgentChallenge) + | ({ component: "ak-stage-flow-error" } & FlowErrorChallenge) + | ({ component: "ak-stage-identification" } & IdentificationChallenge) + | ({ component: "ak-stage-password" } & PasswordChallenge) + | ({ component: "ak-stage-prompt" } & PromptChallenge) + | ({ component: "ak-stage-session-end" } & SessionEndChallenge) + | ({ component: "ak-stage-user-login" } & UserLoginChallenge) + | ({ component: "xak-flow-frame" } & FrameChallenge) + | ({ component: "xak-flow-redirect" } & RedirectChallenge) + | ({ component: "xak-flow-shell" } & ShellChallenge); + +export function ChallengeTypesFromJSON(json: any): ChallengeTypes { + return ChallengeTypesFromJSONTyped(json, false); +} + +export function ChallengeTypesFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): ChallengeTypes { + if (json == null) { + return json; + } + switch (json["component"]) { + case "ak-provider-iframe-logout": + return Object.assign({}, IframeLogoutChallengeFromJSONTyped(json, true), { + component: "ak-provider-iframe-logout", + } as const); + case "ak-provider-oauth2-device-code": + return Object.assign({}, OAuthDeviceCodeChallengeFromJSONTyped(json, true), { + component: "ak-provider-oauth2-device-code", + } as const); + case "ak-provider-oauth2-device-code-finish": + return Object.assign({}, OAuthDeviceCodeFinishChallengeFromJSONTyped(json, true), { + component: "ak-provider-oauth2-device-code-finish", + } as const); + case "ak-provider-saml-native-logout": + return Object.assign({}, NativeLogoutChallengeFromJSONTyped(json, true), { + component: "ak-provider-saml-native-logout", + } as const); + case "ak-source-oauth-apple": + return Object.assign({}, AppleLoginChallengeFromJSONTyped(json, true), { + component: "ak-source-oauth-apple", + } as const); + case "ak-source-plex": + return Object.assign({}, PlexAuthenticationChallengeFromJSONTyped(json, true), { + component: "ak-source-plex", + } as const); + case "ak-source-telegram": + return Object.assign({}, TelegramLoginChallengeFromJSONTyped(json, true), { + component: "ak-source-telegram", + } as const); + case "ak-stage-access-denied": + return Object.assign({}, AccessDeniedChallengeFromJSONTyped(json, true), { + component: "ak-stage-access-denied", + } as const); + case "ak-stage-authenticator-duo": + return Object.assign({}, AuthenticatorDuoChallengeFromJSONTyped(json, true), { + component: "ak-stage-authenticator-duo", + } as const); + case "ak-stage-authenticator-email": + return Object.assign({}, AuthenticatorEmailChallengeFromJSONTyped(json, true), { + component: "ak-stage-authenticator-email", + } as const); + case "ak-stage-authenticator-sms": + return Object.assign({}, AuthenticatorSMSChallengeFromJSONTyped(json, true), { + component: "ak-stage-authenticator-sms", + } as const); + case "ak-stage-authenticator-static": + return Object.assign({}, AuthenticatorStaticChallengeFromJSONTyped(json, true), { + component: "ak-stage-authenticator-static", + } as const); + case "ak-stage-authenticator-totp": + return Object.assign({}, AuthenticatorTOTPChallengeFromJSONTyped(json, true), { + component: "ak-stage-authenticator-totp", + } as const); + case "ak-stage-authenticator-validate": + return Object.assign({}, AuthenticatorValidationChallengeFromJSONTyped(json, true), { + component: "ak-stage-authenticator-validate", + } as const); + case "ak-stage-authenticator-webauthn": + return Object.assign({}, AuthenticatorWebAuthnChallengeFromJSONTyped(json, true), { + component: "ak-stage-authenticator-webauthn", + } as const); + case "ak-stage-autosubmit": + return Object.assign({}, AutosubmitChallengeFromJSONTyped(json, true), { + component: "ak-stage-autosubmit", + } as const); + case "ak-stage-captcha": + return Object.assign({}, CaptchaChallengeFromJSONTyped(json, true), { + component: "ak-stage-captcha", + } as const); + case "ak-stage-consent": + return Object.assign({}, ConsentChallengeFromJSONTyped(json, true), { + component: "ak-stage-consent", + } as const); + case "ak-stage-dummy": + return Object.assign({}, DummyChallengeFromJSONTyped(json, true), { + component: "ak-stage-dummy", + } as const); + case "ak-stage-email": + return Object.assign({}, EmailChallengeFromJSONTyped(json, true), { + component: "ak-stage-email", + } as const); + case "ak-stage-endpoint-agent": + return Object.assign({}, EndpointAgentChallengeFromJSONTyped(json, true), { + component: "ak-stage-endpoint-agent", + } as const); + case "ak-stage-flow-error": + return Object.assign({}, FlowErrorChallengeFromJSONTyped(json, true), { + component: "ak-stage-flow-error", + } as const); + case "ak-stage-identification": + return Object.assign({}, IdentificationChallengeFromJSONTyped(json, true), { + component: "ak-stage-identification", + } as const); + case "ak-stage-password": + return Object.assign({}, PasswordChallengeFromJSONTyped(json, true), { + component: "ak-stage-password", + } as const); + case "ak-stage-prompt": + return Object.assign({}, PromptChallengeFromJSONTyped(json, true), { + component: "ak-stage-prompt", + } as const); + case "ak-stage-session-end": + return Object.assign({}, SessionEndChallengeFromJSONTyped(json, true), { + component: "ak-stage-session-end", + } as const); + case "ak-stage-user-login": + return Object.assign({}, UserLoginChallengeFromJSONTyped(json, true), { + component: "ak-stage-user-login", + } as const); + case "xak-flow-frame": + return Object.assign({}, FrameChallengeFromJSONTyped(json, true), { + component: "xak-flow-frame", + } as const); + case "xak-flow-redirect": + return Object.assign({}, RedirectChallengeFromJSONTyped(json, true), { + component: "xak-flow-redirect", + } as const); + case "xak-flow-shell": + return Object.assign({}, ShellChallengeFromJSONTyped(json, true), { + component: "xak-flow-shell", + } as const); + default: + return json; + } +} + +export function ChallengeTypesToJSON(json: any): any { + return ChallengeTypesToJSONTyped(json, false); +} + +export function ChallengeTypesToJSONTyped( + value?: ChallengeTypes | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + switch (value["component"]) { + case "ak-provider-iframe-logout": + return Object.assign({}, IframeLogoutChallengeToJSON(value), { + component: "ak-provider-iframe-logout", + } as const); + case "ak-provider-oauth2-device-code": + return Object.assign({}, OAuthDeviceCodeChallengeToJSON(value), { + component: "ak-provider-oauth2-device-code", + } as const); + case "ak-provider-oauth2-device-code-finish": + return Object.assign({}, OAuthDeviceCodeFinishChallengeToJSON(value), { + component: "ak-provider-oauth2-device-code-finish", + } as const); + case "ak-provider-saml-native-logout": + return Object.assign({}, NativeLogoutChallengeToJSON(value), { + component: "ak-provider-saml-native-logout", + } as const); + case "ak-source-oauth-apple": + return Object.assign({}, AppleLoginChallengeToJSON(value), { + component: "ak-source-oauth-apple", + } as const); + case "ak-source-plex": + return Object.assign({}, PlexAuthenticationChallengeToJSON(value), { + component: "ak-source-plex", + } as const); + case "ak-source-telegram": + return Object.assign({}, TelegramLoginChallengeToJSON(value), { + component: "ak-source-telegram", + } as const); + case "ak-stage-access-denied": + return Object.assign({}, AccessDeniedChallengeToJSON(value), { + component: "ak-stage-access-denied", + } as const); + case "ak-stage-authenticator-duo": + return Object.assign({}, AuthenticatorDuoChallengeToJSON(value), { + component: "ak-stage-authenticator-duo", + } as const); + case "ak-stage-authenticator-email": + return Object.assign({}, AuthenticatorEmailChallengeToJSON(value), { + component: "ak-stage-authenticator-email", + } as const); + case "ak-stage-authenticator-sms": + return Object.assign({}, AuthenticatorSMSChallengeToJSON(value), { + component: "ak-stage-authenticator-sms", + } as const); + case "ak-stage-authenticator-static": + return Object.assign({}, AuthenticatorStaticChallengeToJSON(value), { + component: "ak-stage-authenticator-static", + } as const); + case "ak-stage-authenticator-totp": + return Object.assign({}, AuthenticatorTOTPChallengeToJSON(value), { + component: "ak-stage-authenticator-totp", + } as const); + case "ak-stage-authenticator-validate": + return Object.assign({}, AuthenticatorValidationChallengeToJSON(value), { + component: "ak-stage-authenticator-validate", + } as const); + case "ak-stage-authenticator-webauthn": + return Object.assign({}, AuthenticatorWebAuthnChallengeToJSON(value), { + component: "ak-stage-authenticator-webauthn", + } as const); + case "ak-stage-autosubmit": + return Object.assign({}, AutosubmitChallengeToJSON(value), { + component: "ak-stage-autosubmit", + } as const); + case "ak-stage-captcha": + return Object.assign({}, CaptchaChallengeToJSON(value), { + component: "ak-stage-captcha", + } as const); + case "ak-stage-consent": + return Object.assign({}, ConsentChallengeToJSON(value), { + component: "ak-stage-consent", + } as const); + case "ak-stage-dummy": + return Object.assign({}, DummyChallengeToJSON(value), { + component: "ak-stage-dummy", + } as const); + case "ak-stage-email": + return Object.assign({}, EmailChallengeToJSON(value), { + component: "ak-stage-email", + } as const); + case "ak-stage-endpoint-agent": + return Object.assign({}, EndpointAgentChallengeToJSON(value), { + component: "ak-stage-endpoint-agent", + } as const); + case "ak-stage-flow-error": + return Object.assign({}, FlowErrorChallengeToJSON(value), { + component: "ak-stage-flow-error", + } as const); + case "ak-stage-identification": + return Object.assign({}, IdentificationChallengeToJSON(value), { + component: "ak-stage-identification", + } as const); + case "ak-stage-password": + return Object.assign({}, PasswordChallengeToJSON(value), { + component: "ak-stage-password", + } as const); + case "ak-stage-prompt": + return Object.assign({}, PromptChallengeToJSON(value), { + component: "ak-stage-prompt", + } as const); + case "ak-stage-session-end": + return Object.assign({}, SessionEndChallengeToJSON(value), { + component: "ak-stage-session-end", + } as const); + case "ak-stage-user-login": + return Object.assign({}, UserLoginChallengeToJSON(value), { + component: "ak-stage-user-login", + } as const); + case "xak-flow-frame": + return Object.assign({}, FrameChallengeToJSON(value), { + component: "xak-flow-frame", + } as const); + case "xak-flow-redirect": + return Object.assign({}, RedirectChallengeToJSON(value), { + component: "xak-flow-redirect", + } as const); + case "xak-flow-shell": + return Object.assign({}, ShellChallengeToJSON(value), { + component: "xak-flow-shell", + } as const); + default: + return value; + } +} diff --git a/packages/client-ts/src/models/ClientTypeEnum.ts b/packages/client-ts/src/models/ClientTypeEnum.ts new file mode 100644 index 0000000000..61ff5bb2d2 --- /dev/null +++ b/packages/client-ts/src/models/ClientTypeEnum.ts @@ -0,0 +1,57 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const ClientTypeEnum = { + Confidential: "confidential", + Public: "public", + UnknownDefaultOpenApi: "11184809", +} as const; +export type ClientTypeEnum = (typeof ClientTypeEnum)[keyof typeof ClientTypeEnum]; + +export function instanceOfClientTypeEnum(value: any): boolean { + for (const key in ClientTypeEnum) { + if (Object.prototype.hasOwnProperty.call(ClientTypeEnum, key)) { + if (ClientTypeEnum[key as keyof typeof ClientTypeEnum] === value) { + return true; + } + } + } + return false; +} + +export function ClientTypeEnumFromJSON(json: any): ClientTypeEnum { + return ClientTypeEnumFromJSONTyped(json, false); +} + +export function ClientTypeEnumFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): ClientTypeEnum { + return json as ClientTypeEnum; +} + +export function ClientTypeEnumToJSON(value?: ClientTypeEnum | null): any { + return value as any; +} + +export function ClientTypeEnumToJSONTyped( + value: any, + ignoreDiscriminator: boolean, +): ClientTypeEnum { + return value as ClientTypeEnum; +} diff --git a/packages/client-ts/src/models/CompatibilityModeEnum.ts b/packages/client-ts/src/models/CompatibilityModeEnum.ts new file mode 100644 index 0000000000..d80a395ea4 --- /dev/null +++ b/packages/client-ts/src/models/CompatibilityModeEnum.ts @@ -0,0 +1,62 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const CompatibilityModeEnum = { + Default: "default", + Aws: "aws", + Slack: "slack", + Sfdc: "sfdc", + Webex: "webex", + Vcenter: "vcenter", + UnknownDefaultOpenApi: "11184809", +} as const; +export type CompatibilityModeEnum = + (typeof CompatibilityModeEnum)[keyof typeof CompatibilityModeEnum]; + +export function instanceOfCompatibilityModeEnum(value: any): boolean { + for (const key in CompatibilityModeEnum) { + if (Object.prototype.hasOwnProperty.call(CompatibilityModeEnum, key)) { + if (CompatibilityModeEnum[key as keyof typeof CompatibilityModeEnum] === value) { + return true; + } + } + } + return false; +} + +export function CompatibilityModeEnumFromJSON(json: any): CompatibilityModeEnum { + return CompatibilityModeEnumFromJSONTyped(json, false); +} + +export function CompatibilityModeEnumFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): CompatibilityModeEnum { + return json as CompatibilityModeEnum; +} + +export function CompatibilityModeEnumToJSON(value?: CompatibilityModeEnum | null): any { + return value as any; +} + +export function CompatibilityModeEnumToJSONTyped( + value: any, + ignoreDiscriminator: boolean, +): CompatibilityModeEnum { + return value as CompatibilityModeEnum; +} diff --git a/packages/client-ts/src/models/Config.ts b/packages/client-ts/src/models/Config.ts new file mode 100644 index 0000000000..b5c511d802 --- /dev/null +++ b/packages/client-ts/src/models/Config.ts @@ -0,0 +1,107 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { CapabilitiesEnum } from "./CapabilitiesEnum"; +import { CapabilitiesEnumFromJSON, CapabilitiesEnumToJSON } from "./CapabilitiesEnum"; +import type { ErrorReportingConfig } from "./ErrorReportingConfig"; +import { ErrorReportingConfigFromJSON, ErrorReportingConfigToJSON } from "./ErrorReportingConfig"; + +/** + * Serialize authentik Config into DRF Object + * @export + * @interface Config + */ +export interface Config { + /** + * + * @type {ErrorReportingConfig} + * @memberof Config + */ + errorReporting: ErrorReportingConfig; + /** + * + * @type {Array} + * @memberof Config + */ + capabilities: Array; + /** + * + * @type {number} + * @memberof Config + */ + cacheTimeout: number; + /** + * + * @type {number} + * @memberof Config + */ + cacheTimeoutFlows: number; + /** + * + * @type {number} + * @memberof Config + */ + cacheTimeoutPolicies: number; +} + +/** + * Check if a given object implements the Config interface. + */ +export function instanceOfConfig(value: object): value is Config { + if (!("errorReporting" in value) || value["errorReporting"] === undefined) return false; + if (!("capabilities" in value) || value["capabilities"] === undefined) return false; + if (!("cacheTimeout" in value) || value["cacheTimeout"] === undefined) return false; + if (!("cacheTimeoutFlows" in value) || value["cacheTimeoutFlows"] === undefined) return false; + if (!("cacheTimeoutPolicies" in value) || value["cacheTimeoutPolicies"] === undefined) + return false; + return true; +} + +export function ConfigFromJSON(json: any): Config { + return ConfigFromJSONTyped(json, false); +} + +export function ConfigFromJSONTyped(json: any, ignoreDiscriminator: boolean): Config { + if (json == null) { + return json; + } + return { + errorReporting: ErrorReportingConfigFromJSON(json["error_reporting"]), + capabilities: (json["capabilities"] as Array).map(CapabilitiesEnumFromJSON), + cacheTimeout: json["cache_timeout"], + cacheTimeoutFlows: json["cache_timeout_flows"], + cacheTimeoutPolicies: json["cache_timeout_policies"], + }; +} + +export function ConfigToJSON(json: any): Config { + return ConfigToJSONTyped(json, false); +} + +export function ConfigToJSONTyped( + value?: Config | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + error_reporting: ErrorReportingConfigToJSON(value["errorReporting"]), + capabilities: (value["capabilities"] as Array).map(CapabilitiesEnumToJSON), + cache_timeout: value["cacheTimeout"], + cache_timeout_flows: value["cacheTimeoutFlows"], + cache_timeout_policies: value["cacheTimeoutPolicies"], + }; +} diff --git a/packages/client-ts/src/models/ConnectionToken.ts b/packages/client-ts/src/models/ConnectionToken.ts new file mode 100644 index 0000000000..a3c068400b --- /dev/null +++ b/packages/client-ts/src/models/ConnectionToken.ts @@ -0,0 +1,116 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Endpoint } from "./Endpoint"; +import { EndpointFromJSON } from "./Endpoint"; +import type { PartialUser } from "./PartialUser"; +import { PartialUserFromJSON } from "./PartialUser"; +import type { RACProvider } from "./RACProvider"; +import { RACProviderFromJSON } from "./RACProvider"; + +/** + * ConnectionToken Serializer + * @export + * @interface ConnectionToken + */ +export interface ConnectionToken { + /** + * + * @type {string} + * @memberof ConnectionToken + */ + pk?: string; + /** + * + * @type {number} + * @memberof ConnectionToken + */ + provider: number; + /** + * + * @type {RACProvider} + * @memberof ConnectionToken + */ + readonly providerObj: RACProvider; + /** + * + * @type {string} + * @memberof ConnectionToken + */ + endpoint: string; + /** + * + * @type {Endpoint} + * @memberof ConnectionToken + */ + readonly endpointObj: Endpoint; + /** + * + * @type {PartialUser} + * @memberof ConnectionToken + */ + readonly user: PartialUser; +} + +/** + * Check if a given object implements the ConnectionToken interface. + */ +export function instanceOfConnectionToken(value: object): value is ConnectionToken { + if (!("provider" in value) || value["provider"] === undefined) return false; + if (!("providerObj" in value) || value["providerObj"] === undefined) return false; + if (!("endpoint" in value) || value["endpoint"] === undefined) return false; + if (!("endpointObj" in value) || value["endpointObj"] === undefined) return false; + if (!("user" in value) || value["user"] === undefined) return false; + return true; +} + +export function ConnectionTokenFromJSON(json: any): ConnectionToken { + return ConnectionTokenFromJSONTyped(json, false); +} + +export function ConnectionTokenFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): ConnectionToken { + if (json == null) { + return json; + } + return { + pk: json["pk"] == null ? undefined : json["pk"], + provider: json["provider"], + providerObj: RACProviderFromJSON(json["provider_obj"]), + endpoint: json["endpoint"], + endpointObj: EndpointFromJSON(json["endpoint_obj"]), + user: PartialUserFromJSON(json["user"]), + }; +} + +export function ConnectionTokenToJSON(json: any): ConnectionToken { + return ConnectionTokenToJSONTyped(json, false); +} + +export function ConnectionTokenToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pk: value["pk"], + provider: value["provider"], + endpoint: value["endpoint"], + }; +} diff --git a/packages/client-ts/src/models/ConnectionTokenRequest.ts b/packages/client-ts/src/models/ConnectionTokenRequest.ts new file mode 100644 index 0000000000..80f29731ff --- /dev/null +++ b/packages/client-ts/src/models/ConnectionTokenRequest.ts @@ -0,0 +1,85 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * ConnectionToken Serializer + * @export + * @interface ConnectionTokenRequest + */ +export interface ConnectionTokenRequest { + /** + * + * @type {string} + * @memberof ConnectionTokenRequest + */ + pk?: string; + /** + * + * @type {number} + * @memberof ConnectionTokenRequest + */ + provider: number; + /** + * + * @type {string} + * @memberof ConnectionTokenRequest + */ + endpoint: string; +} + +/** + * Check if a given object implements the ConnectionTokenRequest interface. + */ +export function instanceOfConnectionTokenRequest(value: object): value is ConnectionTokenRequest { + if (!("provider" in value) || value["provider"] === undefined) return false; + if (!("endpoint" in value) || value["endpoint"] === undefined) return false; + return true; +} + +export function ConnectionTokenRequestFromJSON(json: any): ConnectionTokenRequest { + return ConnectionTokenRequestFromJSONTyped(json, false); +} + +export function ConnectionTokenRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): ConnectionTokenRequest { + if (json == null) { + return json; + } + return { + pk: json["pk"] == null ? undefined : json["pk"], + provider: json["provider"], + endpoint: json["endpoint"], + }; +} + +export function ConnectionTokenRequestToJSON(json: any): ConnectionTokenRequest { + return ConnectionTokenRequestToJSONTyped(json, false); +} + +export function ConnectionTokenRequestToJSONTyped( + value?: ConnectionTokenRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pk: value["pk"], + provider: value["provider"], + endpoint: value["endpoint"], + }; +} diff --git a/packages/client-ts/src/models/Connector.ts b/packages/client-ts/src/models/Connector.ts new file mode 100644 index 0000000000..c7414475b3 --- /dev/null +++ b/packages/client-ts/src/models/Connector.ts @@ -0,0 +1,116 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + * @interface Connector + */ +export interface Connector { + /** + * + * @type {string} + * @memberof Connector + */ + connectorUuid?: string; + /** + * + * @type {string} + * @memberof Connector + */ + name: string; + /** + * + * @type {boolean} + * @memberof Connector + */ + enabled?: boolean; + /** + * Get object component so that we know how to edit the object + * @type {string} + * @memberof Connector + */ + readonly component: string; + /** + * Return object's verbose_name + * @type {string} + * @memberof Connector + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof Connector + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof Connector + */ + readonly metaModelName: string; +} + +/** + * Check if a given object implements the Connector interface. + */ +export function instanceOfConnector(value: object): value is Connector { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + return true; +} + +export function ConnectorFromJSON(json: any): Connector { + return ConnectorFromJSONTyped(json, false); +} + +export function ConnectorFromJSONTyped(json: any, ignoreDiscriminator: boolean): Connector { + if (json == null) { + return json; + } + return { + connectorUuid: json["connector_uuid"] == null ? undefined : json["connector_uuid"], + name: json["name"], + enabled: json["enabled"] == null ? undefined : json["enabled"], + component: json["component"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + }; +} + +export function ConnectorToJSON(json: any): Connector { + return ConnectorToJSONTyped(json, false); +} + +export function ConnectorToJSONTyped( + value?: Omit< + Connector, + "component" | "verbose_name" | "verbose_name_plural" | "meta_model_name" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + connector_uuid: value["connectorUuid"], + name: value["name"], + enabled: value["enabled"], + }; +} diff --git a/packages/client-ts/src/models/ConsentChallenge.ts b/packages/client-ts/src/models/ConsentChallenge.ts new file mode 100644 index 0000000000..b730b32385 --- /dev/null +++ b/packages/client-ts/src/models/ConsentChallenge.ts @@ -0,0 +1,148 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { ConsentPermission } from "./ConsentPermission"; +import { ConsentPermissionFromJSON, ConsentPermissionToJSON } from "./ConsentPermission"; +import type { ContextualFlowInfo } from "./ContextualFlowInfo"; +import { ContextualFlowInfoFromJSON, ContextualFlowInfoToJSON } from "./ContextualFlowInfo"; +import type { ErrorDetail } from "./ErrorDetail"; + +/** + * Challenge info for consent screens + * @export + * @interface ConsentChallenge + */ +export interface ConsentChallenge { + /** + * + * @type {ContextualFlowInfo} + * @memberof ConsentChallenge + */ + flowInfo?: ContextualFlowInfo; + /** + * + * @type {string} + * @memberof ConsentChallenge + */ + component?: string; + /** + * + * @type {{ [key: string]: Array; }} + * @memberof ConsentChallenge + */ + responseErrors?: { [key: string]: Array }; + /** + * + * @type {string} + * @memberof ConsentChallenge + */ + pendingUser: string; + /** + * + * @type {string} + * @memberof ConsentChallenge + */ + pendingUserAvatar: string; + /** + * + * @type {string} + * @memberof ConsentChallenge + */ + headerText?: string; + /** + * + * @type {Array} + * @memberof ConsentChallenge + */ + permissions: Array; + /** + * + * @type {Array} + * @memberof ConsentChallenge + */ + additionalPermissions: Array; + /** + * + * @type {string} + * @memberof ConsentChallenge + */ + token: string; +} + +/** + * Check if a given object implements the ConsentChallenge interface. + */ +export function instanceOfConsentChallenge(value: object): value is ConsentChallenge { + if (!("pendingUser" in value) || value["pendingUser"] === undefined) return false; + if (!("pendingUserAvatar" in value) || value["pendingUserAvatar"] === undefined) return false; + if (!("permissions" in value) || value["permissions"] === undefined) return false; + if (!("additionalPermissions" in value) || value["additionalPermissions"] === undefined) + return false; + if (!("token" in value) || value["token"] === undefined) return false; + return true; +} + +export function ConsentChallengeFromJSON(json: any): ConsentChallenge { + return ConsentChallengeFromJSONTyped(json, false); +} + +export function ConsentChallengeFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): ConsentChallenge { + if (json == null) { + return json; + } + return { + flowInfo: + json["flow_info"] == null ? undefined : ContextualFlowInfoFromJSON(json["flow_info"]), + component: json["component"] == null ? undefined : json["component"], + responseErrors: json["response_errors"] == null ? undefined : json["response_errors"], + pendingUser: json["pending_user"], + pendingUserAvatar: json["pending_user_avatar"], + headerText: json["header_text"] == null ? undefined : json["header_text"], + permissions: (json["permissions"] as Array).map(ConsentPermissionFromJSON), + additionalPermissions: (json["additional_permissions"] as Array).map( + ConsentPermissionFromJSON, + ), + token: json["token"], + }; +} + +export function ConsentChallengeToJSON(json: any): ConsentChallenge { + return ConsentChallengeToJSONTyped(json, false); +} + +export function ConsentChallengeToJSONTyped( + value?: ConsentChallenge | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + flow_info: ContextualFlowInfoToJSON(value["flowInfo"]), + component: value["component"], + response_errors: value["responseErrors"], + pending_user: value["pendingUser"], + pending_user_avatar: value["pendingUserAvatar"], + header_text: value["headerText"], + permissions: (value["permissions"] as Array).map(ConsentPermissionToJSON), + additional_permissions: (value["additionalPermissions"] as Array).map( + ConsentPermissionToJSON, + ), + token: value["token"], + }; +} diff --git a/packages/client-ts/src/models/ConsentChallengeResponseRequest.ts b/packages/client-ts/src/models/ConsentChallengeResponseRequest.ts new file mode 100644 index 0000000000..57bde74792 --- /dev/null +++ b/packages/client-ts/src/models/ConsentChallengeResponseRequest.ts @@ -0,0 +1,80 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Consent challenge response, any valid response request is valid + * @export + * @interface ConsentChallengeResponseRequest + */ +export interface ConsentChallengeResponseRequest { + /** + * + * @type {string} + * @memberof ConsentChallengeResponseRequest + */ + component?: string; + /** + * + * @type {string} + * @memberof ConsentChallengeResponseRequest + */ + token: string; +} + +/** + * Check if a given object implements the ConsentChallengeResponseRequest interface. + */ +export function instanceOfConsentChallengeResponseRequest( + value: object, +): value is ConsentChallengeResponseRequest { + if (!("token" in value) || value["token"] === undefined) return false; + return true; +} + +export function ConsentChallengeResponseRequestFromJSON( + json: any, +): ConsentChallengeResponseRequest { + return ConsentChallengeResponseRequestFromJSONTyped(json, false); +} + +export function ConsentChallengeResponseRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): ConsentChallengeResponseRequest { + if (json == null) { + return json; + } + return { + component: json["component"] == null ? undefined : json["component"], + token: json["token"], + }; +} + +export function ConsentChallengeResponseRequestToJSON(json: any): ConsentChallengeResponseRequest { + return ConsentChallengeResponseRequestToJSONTyped(json, false); +} + +export function ConsentChallengeResponseRequestToJSONTyped( + value?: ConsentChallengeResponseRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + component: value["component"], + token: value["token"], + }; +} diff --git a/packages/client-ts/src/models/ConsentModeEnum.ts b/packages/client-ts/src/models/ConsentModeEnum.ts new file mode 100644 index 0000000000..62ab426db3 --- /dev/null +++ b/packages/client-ts/src/models/ConsentModeEnum.ts @@ -0,0 +1,58 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const ConsentModeEnum = { + AlwaysRequire: "always_require", + Permanent: "permanent", + Expiring: "expiring", + UnknownDefaultOpenApi: "11184809", +} as const; +export type ConsentModeEnum = (typeof ConsentModeEnum)[keyof typeof ConsentModeEnum]; + +export function instanceOfConsentModeEnum(value: any): boolean { + for (const key in ConsentModeEnum) { + if (Object.prototype.hasOwnProperty.call(ConsentModeEnum, key)) { + if (ConsentModeEnum[key as keyof typeof ConsentModeEnum] === value) { + return true; + } + } + } + return false; +} + +export function ConsentModeEnumFromJSON(json: any): ConsentModeEnum { + return ConsentModeEnumFromJSONTyped(json, false); +} + +export function ConsentModeEnumFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): ConsentModeEnum { + return json as ConsentModeEnum; +} + +export function ConsentModeEnumToJSON(value?: ConsentModeEnum | null): any { + return value as any; +} + +export function ConsentModeEnumToJSONTyped( + value: any, + ignoreDiscriminator: boolean, +): ConsentModeEnum { + return value as ConsentModeEnum; +} diff --git a/packages/client-ts/src/models/ConsentPermission.ts b/packages/client-ts/src/models/ConsentPermission.ts new file mode 100644 index 0000000000..c0aa58f8ed --- /dev/null +++ b/packages/client-ts/src/models/ConsentPermission.ts @@ -0,0 +1,77 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Permission used for consent + * @export + * @interface ConsentPermission + */ +export interface ConsentPermission { + /** + * + * @type {string} + * @memberof ConsentPermission + */ + name: string; + /** + * + * @type {string} + * @memberof ConsentPermission + */ + id: string; +} + +/** + * Check if a given object implements the ConsentPermission interface. + */ +export function instanceOfConsentPermission(value: object): value is ConsentPermission { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("id" in value) || value["id"] === undefined) return false; + return true; +} + +export function ConsentPermissionFromJSON(json: any): ConsentPermission { + return ConsentPermissionFromJSONTyped(json, false); +} + +export function ConsentPermissionFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): ConsentPermission { + if (json == null) { + return json; + } + return { + name: json["name"], + id: json["id"], + }; +} + +export function ConsentPermissionToJSON(json: any): ConsentPermission { + return ConsentPermissionToJSONTyped(json, false); +} + +export function ConsentPermissionToJSONTyped( + value?: ConsentPermission | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + id: value["id"], + }; +} diff --git a/packages/client-ts/src/models/ConsentStage.ts b/packages/client-ts/src/models/ConsentStage.ts new file mode 100644 index 0000000000..1360d9fa38 --- /dev/null +++ b/packages/client-ts/src/models/ConsentStage.ts @@ -0,0 +1,137 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { ConsentModeEnum } from "./ConsentModeEnum"; +import { ConsentModeEnumFromJSON, ConsentModeEnumToJSON } from "./ConsentModeEnum"; +import type { FlowSet } from "./FlowSet"; +import { FlowSetFromJSON } from "./FlowSet"; + +/** + * ConsentStage Serializer + * @export + * @interface ConsentStage + */ +export interface ConsentStage { + /** + * + * @type {string} + * @memberof ConsentStage + */ + readonly pk: string; + /** + * + * @type {string} + * @memberof ConsentStage + */ + name: string; + /** + * Get object type so that we know how to edit the object + * @type {string} + * @memberof ConsentStage + */ + readonly component: string; + /** + * Return object's verbose_name + * @type {string} + * @memberof ConsentStage + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof ConsentStage + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof ConsentStage + */ + readonly metaModelName: string; + /** + * + * @type {Array} + * @memberof ConsentStage + */ + readonly flowSet: Array; + /** + * + * @type {ConsentModeEnum} + * @memberof ConsentStage + */ + mode?: ConsentModeEnum; + /** + * Offset after which consent expires. (Format: hours=1;minutes=2;seconds=3). + * @type {string} + * @memberof ConsentStage + */ + consentExpireIn?: string; +} + +/** + * Check if a given object implements the ConsentStage interface. + */ +export function instanceOfConsentStage(value: object): value is ConsentStage { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + if (!("flowSet" in value) || value["flowSet"] === undefined) return false; + return true; +} + +export function ConsentStageFromJSON(json: any): ConsentStage { + return ConsentStageFromJSONTyped(json, false); +} + +export function ConsentStageFromJSONTyped(json: any, ignoreDiscriminator: boolean): ConsentStage { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + component: json["component"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + flowSet: (json["flow_set"] as Array).map(FlowSetFromJSON), + mode: json["mode"] == null ? undefined : ConsentModeEnumFromJSON(json["mode"]), + consentExpireIn: json["consent_expire_in"] == null ? undefined : json["consent_expire_in"], + }; +} + +export function ConsentStageToJSON(json: any): ConsentStage { + return ConsentStageToJSONTyped(json, false); +} + +export function ConsentStageToJSONTyped( + value?: Omit< + ConsentStage, + "pk" | "component" | "verbose_name" | "verbose_name_plural" | "meta_model_name" | "flow_set" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + mode: ConsentModeEnumToJSON(value["mode"]), + consent_expire_in: value["consentExpireIn"], + }; +} diff --git a/packages/client-ts/src/models/ConsentStageRequest.ts b/packages/client-ts/src/models/ConsentStageRequest.ts new file mode 100644 index 0000000000..ea1fa57501 --- /dev/null +++ b/packages/client-ts/src/models/ConsentStageRequest.ts @@ -0,0 +1,87 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { ConsentModeEnum } from "./ConsentModeEnum"; +import { ConsentModeEnumFromJSON, ConsentModeEnumToJSON } from "./ConsentModeEnum"; + +/** + * ConsentStage Serializer + * @export + * @interface ConsentStageRequest + */ +export interface ConsentStageRequest { + /** + * + * @type {string} + * @memberof ConsentStageRequest + */ + name: string; + /** + * + * @type {ConsentModeEnum} + * @memberof ConsentStageRequest + */ + mode?: ConsentModeEnum; + /** + * Offset after which consent expires. (Format: hours=1;minutes=2;seconds=3). + * @type {string} + * @memberof ConsentStageRequest + */ + consentExpireIn?: string; +} + +/** + * Check if a given object implements the ConsentStageRequest interface. + */ +export function instanceOfConsentStageRequest(value: object): value is ConsentStageRequest { + if (!("name" in value) || value["name"] === undefined) return false; + return true; +} + +export function ConsentStageRequestFromJSON(json: any): ConsentStageRequest { + return ConsentStageRequestFromJSONTyped(json, false); +} + +export function ConsentStageRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): ConsentStageRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + mode: json["mode"] == null ? undefined : ConsentModeEnumFromJSON(json["mode"]), + consentExpireIn: json["consent_expire_in"] == null ? undefined : json["consent_expire_in"], + }; +} + +export function ConsentStageRequestToJSON(json: any): ConsentStageRequest { + return ConsentStageRequestToJSONTyped(json, false); +} + +export function ConsentStageRequestToJSONTyped( + value?: ConsentStageRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + mode: ConsentModeEnumToJSON(value["mode"]), + consent_expire_in: value["consentExpireIn"], + }; +} diff --git a/packages/client-ts/src/models/ContentType.ts b/packages/client-ts/src/models/ContentType.ts new file mode 100644 index 0000000000..f06a13ff75 --- /dev/null +++ b/packages/client-ts/src/models/ContentType.ts @@ -0,0 +1,87 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + * @interface ContentType + */ +export interface ContentType { + /** + * + * @type {number} + * @memberof ContentType + */ + readonly id: number; + /** + * + * @type {string} + * @memberof ContentType + */ + readonly appLabel: string; + /** + * + * @type {string} + * @memberof ContentType + */ + readonly model: string; + /** + * + * @type {string} + * @memberof ContentType + */ + readonly verboseNamePlural: string; +} + +/** + * Check if a given object implements the ContentType interface. + */ +export function instanceOfContentType(value: object): value is ContentType { + if (!("id" in value) || value["id"] === undefined) return false; + if (!("appLabel" in value) || value["appLabel"] === undefined) return false; + if (!("model" in value) || value["model"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + return true; +} + +export function ContentTypeFromJSON(json: any): ContentType { + return ContentTypeFromJSONTyped(json, false); +} + +export function ContentTypeFromJSONTyped(json: any, ignoreDiscriminator: boolean): ContentType { + if (json == null) { + return json; + } + return { + id: json["id"], + appLabel: json["app_label"], + model: json["model"], + verboseNamePlural: json["verbose_name_plural"], + }; +} + +export function ContentTypeToJSON(json: any): ContentType { + return ContentTypeToJSONTyped(json, false); +} + +export function ContentTypeToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return {}; +} diff --git a/packages/client-ts/src/models/ContentTypeEnum.ts b/packages/client-ts/src/models/ContentTypeEnum.ts new file mode 100644 index 0000000000..cb850df3c6 --- /dev/null +++ b/packages/client-ts/src/models/ContentTypeEnum.ts @@ -0,0 +1,58 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const ContentTypeEnum = { + AuthentikCoreApplication: "authentik_core.application", + AuthentikCoreGroup: "authentik_core.group", + AuthentikRbacRole: "authentik_rbac.role", + UnknownDefaultOpenApi: "11184809", +} as const; +export type ContentTypeEnum = (typeof ContentTypeEnum)[keyof typeof ContentTypeEnum]; + +export function instanceOfContentTypeEnum(value: any): boolean { + for (const key in ContentTypeEnum) { + if (Object.prototype.hasOwnProperty.call(ContentTypeEnum, key)) { + if (ContentTypeEnum[key as keyof typeof ContentTypeEnum] === value) { + return true; + } + } + } + return false; +} + +export function ContentTypeEnumFromJSON(json: any): ContentTypeEnum { + return ContentTypeEnumFromJSONTyped(json, false); +} + +export function ContentTypeEnumFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): ContentTypeEnum { + return json as ContentTypeEnum; +} + +export function ContentTypeEnumToJSON(value?: ContentTypeEnum | null): any { + return value as any; +} + +export function ContentTypeEnumToJSONTyped( + value: any, + ignoreDiscriminator: boolean, +): ContentTypeEnum { + return value as ContentTypeEnum; +} diff --git a/packages/client-ts/src/models/ContextualFlowInfo.ts b/packages/client-ts/src/models/ContextualFlowInfo.ts new file mode 100644 index 0000000000..99babc4690 --- /dev/null +++ b/packages/client-ts/src/models/ContextualFlowInfo.ts @@ -0,0 +1,112 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { ContextualFlowInfoLayoutEnum } from "./ContextualFlowInfoLayoutEnum"; +import { + ContextualFlowInfoLayoutEnumFromJSON, + ContextualFlowInfoLayoutEnumToJSON, +} from "./ContextualFlowInfoLayoutEnum"; +import type { ThemedUrls } from "./ThemedUrls"; +import { ThemedUrlsFromJSON, ThemedUrlsToJSON } from "./ThemedUrls"; + +/** + * Contextual flow information for a challenge + * @export + * @interface ContextualFlowInfo + */ +export interface ContextualFlowInfo { + /** + * + * @type {string} + * @memberof ContextualFlowInfo + */ + title?: string; + /** + * + * @type {string} + * @memberof ContextualFlowInfo + */ + background?: string; + /** + * + * @type {ThemedUrls} + * @memberof ContextualFlowInfo + */ + backgroundThemedUrls?: ThemedUrls | null; + /** + * + * @type {string} + * @memberof ContextualFlowInfo + */ + cancelUrl: string; + /** + * + * @type {ContextualFlowInfoLayoutEnum} + * @memberof ContextualFlowInfo + */ + layout: ContextualFlowInfoLayoutEnum; +} + +/** + * Check if a given object implements the ContextualFlowInfo interface. + */ +export function instanceOfContextualFlowInfo(value: object): value is ContextualFlowInfo { + if (!("cancelUrl" in value) || value["cancelUrl"] === undefined) return false; + if (!("layout" in value) || value["layout"] === undefined) return false; + return true; +} + +export function ContextualFlowInfoFromJSON(json: any): ContextualFlowInfo { + return ContextualFlowInfoFromJSONTyped(json, false); +} + +export function ContextualFlowInfoFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): ContextualFlowInfo { + if (json == null) { + return json; + } + return { + title: json["title"] == null ? undefined : json["title"], + background: json["background"] == null ? undefined : json["background"], + backgroundThemedUrls: + json["background_themed_urls"] == null + ? undefined + : ThemedUrlsFromJSON(json["background_themed_urls"]), + cancelUrl: json["cancel_url"], + layout: ContextualFlowInfoLayoutEnumFromJSON(json["layout"]), + }; +} + +export function ContextualFlowInfoToJSON(json: any): ContextualFlowInfo { + return ContextualFlowInfoToJSONTyped(json, false); +} + +export function ContextualFlowInfoToJSONTyped( + value?: ContextualFlowInfo | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + title: value["title"], + background: value["background"], + background_themed_urls: ThemedUrlsToJSON(value["backgroundThemedUrls"]), + cancel_url: value["cancelUrl"], + layout: ContextualFlowInfoLayoutEnumToJSON(value["layout"]), + }; +} diff --git a/packages/client-ts/src/models/ContextualFlowInfoLayoutEnum.ts b/packages/client-ts/src/models/ContextualFlowInfoLayoutEnum.ts new file mode 100644 index 0000000000..aeb2328d28 --- /dev/null +++ b/packages/client-ts/src/models/ContextualFlowInfoLayoutEnum.ts @@ -0,0 +1,68 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const ContextualFlowInfoLayoutEnum = { + Stacked: "stacked", + ContentLeft: "content_left", + ContentRight: "content_right", + SidebarLeft: "sidebar_left", + SidebarRight: "sidebar_right", + SidebarLeftFrameBackground: "sidebar_left_frame_background", + SidebarRightFrameBackground: "sidebar_right_frame_background", + UnknownDefaultOpenApi: "11184809", +} as const; +export type ContextualFlowInfoLayoutEnum = + (typeof ContextualFlowInfoLayoutEnum)[keyof typeof ContextualFlowInfoLayoutEnum]; + +export function instanceOfContextualFlowInfoLayoutEnum(value: any): boolean { + for (const key in ContextualFlowInfoLayoutEnum) { + if (Object.prototype.hasOwnProperty.call(ContextualFlowInfoLayoutEnum, key)) { + if ( + ContextualFlowInfoLayoutEnum[key as keyof typeof ContextualFlowInfoLayoutEnum] === + value + ) { + return true; + } + } + } + return false; +} + +export function ContextualFlowInfoLayoutEnumFromJSON(json: any): ContextualFlowInfoLayoutEnum { + return ContextualFlowInfoLayoutEnumFromJSONTyped(json, false); +} + +export function ContextualFlowInfoLayoutEnumFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): ContextualFlowInfoLayoutEnum { + return json as ContextualFlowInfoLayoutEnum; +} + +export function ContextualFlowInfoLayoutEnumToJSON( + value?: ContextualFlowInfoLayoutEnum | null, +): any { + return value as any; +} + +export function ContextualFlowInfoLayoutEnumToJSONTyped( + value: any, + ignoreDiscriminator: boolean, +): ContextualFlowInfoLayoutEnum { + return value as ContextualFlowInfoLayoutEnum; +} diff --git a/packages/client-ts/src/models/CountryCodeEnum.ts b/packages/client-ts/src/models/CountryCodeEnum.ts new file mode 100644 index 0000000000..0347ed9b14 --- /dev/null +++ b/packages/client-ts/src/models/CountryCodeEnum.ts @@ -0,0 +1,304 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const CountryCodeEnum = { + Af: "AF", + Ax: "AX", + Al: "AL", + Dz: "DZ", + As: "AS", + Ad: "AD", + Ao: "AO", + Ai: "AI", + Aq: "AQ", + Ag: "AG", + Ar: "AR", + Am: "AM", + Aw: "AW", + Au: "AU", + At: "AT", + Az: "AZ", + Bs: "BS", + Bh: "BH", + Bd: "BD", + Bb: "BB", + By: "BY", + Be: "BE", + Bz: "BZ", + Bj: "BJ", + Bm: "BM", + Bt: "BT", + Bo: "BO", + Bq: "BQ", + Ba: "BA", + Bw: "BW", + Bv: "BV", + Br: "BR", + Io: "IO", + Bn: "BN", + Bg: "BG", + Bf: "BF", + Bi: "BI", + Cv: "CV", + Kh: "KH", + Cm: "CM", + Ca: "CA", + Ky: "KY", + Cf: "CF", + Td: "TD", + Cl: "CL", + Cn: "CN", + Cx: "CX", + Cc: "CC", + Co: "CO", + Km: "KM", + Cg: "CG", + Ck: "CK", + Cr: "CR", + Ci: "CI", + Hr: "HR", + Cu: "CU", + Cw: "CW", + Cy: "CY", + Cz: "CZ", + Cd: "CD", + Dk: "DK", + Dj: "DJ", + Dm: "DM", + Do: "DO", + Ec: "EC", + Eg: "EG", + Sv: "SV", + Gq: "GQ", + Er: "ER", + Ee: "EE", + Sz: "SZ", + Et: "ET", + Fk: "FK", + Fo: "FO", + Fj: "FJ", + Fi: "FI", + Fr: "FR", + Gf: "GF", + Pf: "PF", + Tf: "TF", + Ga: "GA", + Gm: "GM", + Ge: "GE", + De: "DE", + Gh: "GH", + Gi: "GI", + Gr: "GR", + Gl: "GL", + Gd: "GD", + Gp: "GP", + Gu: "GU", + Gt: "GT", + Gg: "GG", + Gn: "GN", + Gw: "GW", + Gy: "GY", + Ht: "HT", + Hm: "HM", + Hn: "HN", + Hk: "HK", + Hu: "HU", + Is: "IS", + In: "IN", + Id: "ID", + Ir: "IR", + Iq: "IQ", + Ie: "IE", + Im: "IM", + Il: "IL", + It: "IT", + Jm: "JM", + Jp: "JP", + Je: "JE", + Jo: "JO", + Kz: "KZ", + Ke: "KE", + Ki: "KI", + Kw: "KW", + Kg: "KG", + La: "LA", + Lv: "LV", + Lb: "LB", + Ls: "LS", + Lr: "LR", + Ly: "LY", + Li: "LI", + Lt: "LT", + Lu: "LU", + Mo: "MO", + Mg: "MG", + Mw: "MW", + My: "MY", + Mv: "MV", + Ml: "ML", + Mt: "MT", + Mh: "MH", + Mq: "MQ", + Mr: "MR", + Mu: "MU", + Yt: "YT", + Mx: "MX", + Fm: "FM", + Md: "MD", + Mc: "MC", + Mn: "MN", + Me: "ME", + Ms: "MS", + Ma: "MA", + Mz: "MZ", + Mm: "MM", + Na: "NA", + Nr: "NR", + Np: "NP", + Nl: "NL", + Nc: "NC", + Nz: "NZ", + Ni: "NI", + Ne: "NE", + Ng: "NG", + Nu: "NU", + Nf: "NF", + Kp: "KP", + Mk: "MK", + Mp: "MP", + No: "NO", + Om: "OM", + Pk: "PK", + Pw: "PW", + Ps: "PS", + Pa: "PA", + Pg: "PG", + Py: "PY", + Pe: "PE", + Ph: "PH", + Pn: "PN", + Pl: "PL", + Pt: "PT", + Pr: "PR", + Qa: "QA", + Re: "RE", + Ro: "RO", + Ru: "RU", + Rw: "RW", + Bl: "BL", + Sh: "SH", + Kn: "KN", + Lc: "LC", + Mf: "MF", + Pm: "PM", + Vc: "VC", + Ws: "WS", + Sm: "SM", + St: "ST", + Sa: "SA", + Sn: "SN", + Rs: "RS", + Sc: "SC", + Sl: "SL", + Sg: "SG", + Sx: "SX", + Sk: "SK", + Si: "SI", + Sb: "SB", + So: "SO", + Za: "ZA", + Gs: "GS", + Kr: "KR", + Ss: "SS", + Es: "ES", + Lk: "LK", + Sd: "SD", + Sr: "SR", + Sj: "SJ", + Se: "SE", + Ch: "CH", + Sy: "SY", + Tw: "TW", + Tj: "TJ", + Tz: "TZ", + Th: "TH", + Tl: "TL", + Tg: "TG", + Tk: "TK", + To: "TO", + Tt: "TT", + Tn: "TN", + Tr: "TR", + Tm: "TM", + Tc: "TC", + Tv: "TV", + Ug: "UG", + Ua: "UA", + Ae: "AE", + Gb: "GB", + Um: "UM", + Us: "US", + Uy: "UY", + Uz: "UZ", + Vu: "VU", + Va: "VA", + Ve: "VE", + Vn: "VN", + Vg: "VG", + Vi: "VI", + Wf: "WF", + Eh: "EH", + Ye: "YE", + Zm: "ZM", + Zw: "ZW", + UnknownDefaultOpenApi: "11184809", +} as const; +export type CountryCodeEnum = (typeof CountryCodeEnum)[keyof typeof CountryCodeEnum]; + +export function instanceOfCountryCodeEnum(value: any): boolean { + for (const key in CountryCodeEnum) { + if (Object.prototype.hasOwnProperty.call(CountryCodeEnum, key)) { + if (CountryCodeEnum[key as keyof typeof CountryCodeEnum] === value) { + return true; + } + } + } + return false; +} + +export function CountryCodeEnumFromJSON(json: any): CountryCodeEnum { + return CountryCodeEnumFromJSONTyped(json, false); +} + +export function CountryCodeEnumFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): CountryCodeEnum { + return json as CountryCodeEnum; +} + +export function CountryCodeEnumToJSON(value?: CountryCodeEnum | null): any { + return value as any; +} + +export function CountryCodeEnumToJSONTyped( + value: any, + ignoreDiscriminator: boolean, +): CountryCodeEnum { + return value as CountryCodeEnum; +} diff --git a/packages/client-ts/src/models/CurrentBrand.ts b/packages/client-ts/src/models/CurrentBrand.ts new file mode 100644 index 0000000000..f55cec9066 --- /dev/null +++ b/packages/client-ts/src/models/CurrentBrand.ts @@ -0,0 +1,226 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { CurrentBrandFlags } from "./CurrentBrandFlags"; +import { CurrentBrandFlagsFromJSON, CurrentBrandFlagsToJSON } from "./CurrentBrandFlags"; +import type { FooterLink } from "./FooterLink"; +import { FooterLinkFromJSON } from "./FooterLink"; +import type { ThemedUrls } from "./ThemedUrls"; +import { ThemedUrlsFromJSON } from "./ThemedUrls"; +import type { UiThemeEnum } from "./UiThemeEnum"; +import { UiThemeEnumFromJSON } from "./UiThemeEnum"; + +/** + * Partial brand information for styling + * @export + * @interface CurrentBrand + */ +export interface CurrentBrand { + /** + * + * @type {string} + * @memberof CurrentBrand + */ + matchedDomain: string; + /** + * + * @type {string} + * @memberof CurrentBrand + */ + brandingTitle: string; + /** + * + * @type {string} + * @memberof CurrentBrand + */ + brandingLogo: string; + /** + * + * @type {ThemedUrls} + * @memberof CurrentBrand + */ + readonly brandingLogoThemedUrls: ThemedUrls | null; + /** + * + * @type {string} + * @memberof CurrentBrand + */ + brandingFavicon: string; + /** + * + * @type {ThemedUrls} + * @memberof CurrentBrand + */ + readonly brandingFaviconThemedUrls: ThemedUrls | null; + /** + * + * @type {string} + * @memberof CurrentBrand + */ + brandingCustomCss: string; + /** + * + * @type {Array} + * @memberof CurrentBrand + */ + readonly uiFooterLinks: Array; + /** + * + * @type {UiThemeEnum} + * @memberof CurrentBrand + */ + readonly uiTheme: UiThemeEnum; + /** + * + * @type {string} + * @memberof CurrentBrand + */ + flowAuthentication?: string; + /** + * + * @type {string} + * @memberof CurrentBrand + */ + flowInvalidation?: string; + /** + * + * @type {string} + * @memberof CurrentBrand + */ + flowRecovery?: string; + /** + * + * @type {string} + * @memberof CurrentBrand + */ + flowUnenrollment?: string; + /** + * + * @type {string} + * @memberof CurrentBrand + */ + flowUserSettings?: string; + /** + * + * @type {string} + * @memberof CurrentBrand + */ + flowDeviceCode?: string; + /** + * + * @type {string} + * @memberof CurrentBrand + */ + flowLockdown?: string; + /** + * + * @type {string} + * @memberof CurrentBrand + */ + readonly defaultLocale: string; + /** + * + * @type {CurrentBrandFlags} + * @memberof CurrentBrand + */ + flags: CurrentBrandFlags; +} + +/** + * Check if a given object implements the CurrentBrand interface. + */ +export function instanceOfCurrentBrand(value: object): value is CurrentBrand { + if (!("matchedDomain" in value) || value["matchedDomain"] === undefined) return false; + if (!("brandingTitle" in value) || value["brandingTitle"] === undefined) return false; + if (!("brandingLogo" in value) || value["brandingLogo"] === undefined) return false; + if (!("brandingLogoThemedUrls" in value) || value["brandingLogoThemedUrls"] === undefined) + return false; + if (!("brandingFavicon" in value) || value["brandingFavicon"] === undefined) return false; + if (!("brandingFaviconThemedUrls" in value) || value["brandingFaviconThemedUrls"] === undefined) + return false; + if (!("brandingCustomCss" in value) || value["brandingCustomCss"] === undefined) return false; + if (!("uiFooterLinks" in value) || value["uiFooterLinks"] === undefined) return false; + if (!("uiTheme" in value) || value["uiTheme"] === undefined) return false; + if (!("defaultLocale" in value) || value["defaultLocale"] === undefined) return false; + if (!("flags" in value) || value["flags"] === undefined) return false; + return true; +} + +export function CurrentBrandFromJSON(json: any): CurrentBrand { + return CurrentBrandFromJSONTyped(json, false); +} + +export function CurrentBrandFromJSONTyped(json: any, ignoreDiscriminator: boolean): CurrentBrand { + if (json == null) { + return json; + } + return { + matchedDomain: json["matched_domain"], + brandingTitle: json["branding_title"], + brandingLogo: json["branding_logo"], + brandingLogoThemedUrls: ThemedUrlsFromJSON(json["branding_logo_themed_urls"]), + brandingFavicon: json["branding_favicon"], + brandingFaviconThemedUrls: ThemedUrlsFromJSON(json["branding_favicon_themed_urls"]), + brandingCustomCss: json["branding_custom_css"], + uiFooterLinks: (json["ui_footer_links"] as Array).map(FooterLinkFromJSON), + uiTheme: UiThemeEnumFromJSON(json["ui_theme"]), + flowAuthentication: + json["flow_authentication"] == null ? undefined : json["flow_authentication"], + flowInvalidation: json["flow_invalidation"] == null ? undefined : json["flow_invalidation"], + flowRecovery: json["flow_recovery"] == null ? undefined : json["flow_recovery"], + flowUnenrollment: json["flow_unenrollment"] == null ? undefined : json["flow_unenrollment"], + flowUserSettings: + json["flow_user_settings"] == null ? undefined : json["flow_user_settings"], + flowDeviceCode: json["flow_device_code"] == null ? undefined : json["flow_device_code"], + flowLockdown: json["flow_lockdown"] == null ? undefined : json["flow_lockdown"], + defaultLocale: json["default_locale"], + flags: CurrentBrandFlagsFromJSON(json["flags"]), + }; +} + +export function CurrentBrandToJSON(json: any): CurrentBrand { + return CurrentBrandToJSONTyped(json, false); +} + +export function CurrentBrandToJSONTyped( + value?: Omit< + CurrentBrand, + | "branding_logo_themed_urls" + | "branding_favicon_themed_urls" + | "ui_footer_links" + | "ui_theme" + | "default_locale" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + matched_domain: value["matchedDomain"], + branding_title: value["brandingTitle"], + branding_logo: value["brandingLogo"], + branding_favicon: value["brandingFavicon"], + branding_custom_css: value["brandingCustomCss"], + flow_authentication: value["flowAuthentication"], + flow_invalidation: value["flowInvalidation"], + flow_recovery: value["flowRecovery"], + flow_unenrollment: value["flowUnenrollment"], + flow_user_settings: value["flowUserSettings"], + flow_device_code: value["flowDeviceCode"], + flow_lockdown: value["flowLockdown"], + flags: CurrentBrandFlagsToJSON(value["flags"]), + }; +} diff --git a/packages/client-ts/src/models/CurrentBrandFlags.ts b/packages/client-ts/src/models/CurrentBrandFlags.ts new file mode 100644 index 0000000000..ff7f3d17a0 --- /dev/null +++ b/packages/client-ts/src/models/CurrentBrandFlags.ts @@ -0,0 +1,102 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + * @interface CurrentBrandFlags + */ +export interface CurrentBrandFlags { + /** + * Configure if applications without any policy/group/user bindings should be accessible to any user. + * @type {boolean} + * @memberof CurrentBrandFlags + */ + coreDefaultAppAccess: boolean; + /** + * Include additional information in audit logs, may incur a performance penalty. + * @type {boolean} + * @memberof CurrentBrandFlags + */ + enterpriseAuditIncludeExpandedDiff: boolean; + /** + * Upon successful authentication, re-start authentication in other open tabs. + * @type {boolean} + * @memberof CurrentBrandFlags + */ + flowsContinuousLogin: boolean; + /** + * Refresh other tabs after successful authentication. + * @type {boolean} + * @memberof CurrentBrandFlags + * @deprecated + */ + flowsRefreshOthers: boolean; +} + +/** + * Check if a given object implements the CurrentBrandFlags interface. + */ +export function instanceOfCurrentBrandFlags(value: object): value is CurrentBrandFlags { + if (!("coreDefaultAppAccess" in value) || value["coreDefaultAppAccess"] === undefined) + return false; + if ( + !("enterpriseAuditIncludeExpandedDiff" in value) || + value["enterpriseAuditIncludeExpandedDiff"] === undefined + ) + return false; + if (!("flowsContinuousLogin" in value) || value["flowsContinuousLogin"] === undefined) + return false; + if (!("flowsRefreshOthers" in value) || value["flowsRefreshOthers"] === undefined) return false; + return true; +} + +export function CurrentBrandFlagsFromJSON(json: any): CurrentBrandFlags { + return CurrentBrandFlagsFromJSONTyped(json, false); +} + +export function CurrentBrandFlagsFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): CurrentBrandFlags { + if (json == null) { + return json; + } + return { + coreDefaultAppAccess: json["core_default_app_access"], + enterpriseAuditIncludeExpandedDiff: json["enterprise_audit_include_expanded_diff"], + flowsContinuousLogin: json["flows_continuous_login"], + flowsRefreshOthers: json["flows_refresh_others"], + }; +} + +export function CurrentBrandFlagsToJSON(json: any): CurrentBrandFlags { + return CurrentBrandFlagsToJSONTyped(json, false); +} + +export function CurrentBrandFlagsToJSONTyped( + value?: CurrentBrandFlags | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + core_default_app_access: value["coreDefaultAppAccess"], + enterprise_audit_include_expanded_diff: value["enterpriseAuditIncludeExpandedDiff"], + flows_continuous_login: value["flowsContinuousLogin"], + flows_refresh_others: value["flowsRefreshOthers"], + }; +} diff --git a/packages/client-ts/src/models/DataExport.ts b/packages/client-ts/src/models/DataExport.ts new file mode 100644 index 0000000000..719ee1c9f8 --- /dev/null +++ b/packages/client-ts/src/models/DataExport.ts @@ -0,0 +1,122 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { ContentType } from "./ContentType"; +import { ContentTypeFromJSON } from "./ContentType"; +import type { PartialUser } from "./PartialUser"; +import { PartialUserFromJSON } from "./PartialUser"; + +/** + * Mixin to validate that a valid enterprise license + * exists before allowing to save the object + * @export + * @interface DataExport + */ +export interface DataExport { + /** + * + * @type {string} + * @memberof DataExport + */ + readonly id: string; + /** + * + * @type {PartialUser} + * @memberof DataExport + */ + readonly requestedBy: PartialUser; + /** + * + * @type {Date} + * @memberof DataExport + */ + readonly requestedOn: Date; + /** + * + * @type {ContentType} + * @memberof DataExport + */ + readonly contentType: ContentType; + /** + * + * @type {{ [key: string]: any; }} + * @memberof DataExport + */ + queryParams: { [key: string]: any }; + /** + * + * @type {string} + * @memberof DataExport + */ + readonly fileUrl: string; + /** + * + * @type {boolean} + * @memberof DataExport + */ + readonly completed: boolean; +} + +/** + * Check if a given object implements the DataExport interface. + */ +export function instanceOfDataExport(value: object): value is DataExport { + if (!("id" in value) || value["id"] === undefined) return false; + if (!("requestedBy" in value) || value["requestedBy"] === undefined) return false; + if (!("requestedOn" in value) || value["requestedOn"] === undefined) return false; + if (!("contentType" in value) || value["contentType"] === undefined) return false; + if (!("queryParams" in value) || value["queryParams"] === undefined) return false; + if (!("fileUrl" in value) || value["fileUrl"] === undefined) return false; + if (!("completed" in value) || value["completed"] === undefined) return false; + return true; +} + +export function DataExportFromJSON(json: any): DataExport { + return DataExportFromJSONTyped(json, false); +} + +export function DataExportFromJSONTyped(json: any, ignoreDiscriminator: boolean): DataExport { + if (json == null) { + return json; + } + return { + id: json["id"], + requestedBy: PartialUserFromJSON(json["requested_by"]), + requestedOn: new Date(json["requested_on"]), + contentType: ContentTypeFromJSON(json["content_type"]), + queryParams: json["query_params"], + fileUrl: json["file_url"], + completed: json["completed"], + }; +} + +export function DataExportToJSON(json: any): DataExport { + return DataExportToJSONTyped(json, false); +} + +export function DataExportToJSONTyped( + value?: Omit< + DataExport, + "id" | "requested_by" | "requested_on" | "content_type" | "file_url" | "completed" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + query_params: value["queryParams"], + }; +} diff --git a/packages/client-ts/src/models/DeliveryMethodEnum.ts b/packages/client-ts/src/models/DeliveryMethodEnum.ts new file mode 100644 index 0000000000..d165929579 --- /dev/null +++ b/packages/client-ts/src/models/DeliveryMethodEnum.ts @@ -0,0 +1,61 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const DeliveryMethodEnum = { + HttpsSchemasOpenidNetSeceventRiscDeliveryMethodPush: + "https://schemas.openid.net/secevent/risc/delivery-method/push", + HttpsSchemasOpenidNetSeceventRiscDeliveryMethodPoll: + "https://schemas.openid.net/secevent/risc/delivery-method/poll", + UrnIetfRfc8935: "urn:ietf:rfc:8935", + UrnIetfRfc8936: "urn:ietf:rfc:8936", + UnknownDefaultOpenApi: "11184809", +} as const; +export type DeliveryMethodEnum = (typeof DeliveryMethodEnum)[keyof typeof DeliveryMethodEnum]; + +export function instanceOfDeliveryMethodEnum(value: any): boolean { + for (const key in DeliveryMethodEnum) { + if (Object.prototype.hasOwnProperty.call(DeliveryMethodEnum, key)) { + if (DeliveryMethodEnum[key as keyof typeof DeliveryMethodEnum] === value) { + return true; + } + } + } + return false; +} + +export function DeliveryMethodEnumFromJSON(json: any): DeliveryMethodEnum { + return DeliveryMethodEnumFromJSONTyped(json, false); +} + +export function DeliveryMethodEnumFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): DeliveryMethodEnum { + return json as DeliveryMethodEnum; +} + +export function DeliveryMethodEnumToJSON(value?: DeliveryMethodEnum | null): any { + return value as any; +} + +export function DeliveryMethodEnumToJSONTyped( + value: any, + ignoreDiscriminator: boolean, +): DeliveryMethodEnum { + return value as DeliveryMethodEnum; +} diff --git a/packages/client-ts/src/models/DeniedActionEnum.ts b/packages/client-ts/src/models/DeniedActionEnum.ts new file mode 100644 index 0000000000..06adf9d87e --- /dev/null +++ b/packages/client-ts/src/models/DeniedActionEnum.ts @@ -0,0 +1,58 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const DeniedActionEnum = { + MessageContinue: "message_continue", + Message: "message", + Continue: "continue", + UnknownDefaultOpenApi: "11184809", +} as const; +export type DeniedActionEnum = (typeof DeniedActionEnum)[keyof typeof DeniedActionEnum]; + +export function instanceOfDeniedActionEnum(value: any): boolean { + for (const key in DeniedActionEnum) { + if (Object.prototype.hasOwnProperty.call(DeniedActionEnum, key)) { + if (DeniedActionEnum[key as keyof typeof DeniedActionEnum] === value) { + return true; + } + } + } + return false; +} + +export function DeniedActionEnumFromJSON(json: any): DeniedActionEnum { + return DeniedActionEnumFromJSONTyped(json, false); +} + +export function DeniedActionEnumFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): DeniedActionEnum { + return json as DeniedActionEnum; +} + +export function DeniedActionEnumToJSON(value?: DeniedActionEnum | null): any { + return value as any; +} + +export function DeniedActionEnumToJSONTyped( + value: any, + ignoreDiscriminator: boolean, +): DeniedActionEnum { + return value as DeniedActionEnum; +} diff --git a/packages/client-ts/src/models/DenyStage.ts b/packages/client-ts/src/models/DenyStage.ts new file mode 100644 index 0000000000..30e1d6bd5c --- /dev/null +++ b/packages/client-ts/src/models/DenyStage.ts @@ -0,0 +1,127 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { FlowSet } from "./FlowSet"; +import { FlowSetFromJSON } from "./FlowSet"; + +/** + * DenyStage Serializer + * @export + * @interface DenyStage + */ +export interface DenyStage { + /** + * + * @type {string} + * @memberof DenyStage + */ + readonly pk: string; + /** + * + * @type {string} + * @memberof DenyStage + */ + name: string; + /** + * Get object type so that we know how to edit the object + * @type {string} + * @memberof DenyStage + */ + readonly component: string; + /** + * Return object's verbose_name + * @type {string} + * @memberof DenyStage + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof DenyStage + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof DenyStage + */ + readonly metaModelName: string; + /** + * + * @type {Array} + * @memberof DenyStage + */ + readonly flowSet: Array; + /** + * + * @type {string} + * @memberof DenyStage + */ + denyMessage?: string; +} + +/** + * Check if a given object implements the DenyStage interface. + */ +export function instanceOfDenyStage(value: object): value is DenyStage { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + if (!("flowSet" in value) || value["flowSet"] === undefined) return false; + return true; +} + +export function DenyStageFromJSON(json: any): DenyStage { + return DenyStageFromJSONTyped(json, false); +} + +export function DenyStageFromJSONTyped(json: any, ignoreDiscriminator: boolean): DenyStage { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + component: json["component"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + flowSet: (json["flow_set"] as Array).map(FlowSetFromJSON), + denyMessage: json["deny_message"] == null ? undefined : json["deny_message"], + }; +} + +export function DenyStageToJSON(json: any): DenyStage { + return DenyStageToJSONTyped(json, false); +} + +export function DenyStageToJSONTyped( + value?: Omit< + DenyStage, + "pk" | "component" | "verbose_name" | "verbose_name_plural" | "meta_model_name" | "flow_set" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + deny_message: value["denyMessage"], + }; +} diff --git a/packages/client-ts/src/models/DenyStageRequest.ts b/packages/client-ts/src/models/DenyStageRequest.ts new file mode 100644 index 0000000000..0d817a6f51 --- /dev/null +++ b/packages/client-ts/src/models/DenyStageRequest.ts @@ -0,0 +1,76 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * DenyStage Serializer + * @export + * @interface DenyStageRequest + */ +export interface DenyStageRequest { + /** + * + * @type {string} + * @memberof DenyStageRequest + */ + name: string; + /** + * + * @type {string} + * @memberof DenyStageRequest + */ + denyMessage?: string; +} + +/** + * Check if a given object implements the DenyStageRequest interface. + */ +export function instanceOfDenyStageRequest(value: object): value is DenyStageRequest { + if (!("name" in value) || value["name"] === undefined) return false; + return true; +} + +export function DenyStageRequestFromJSON(json: any): DenyStageRequest { + return DenyStageRequestFromJSONTyped(json, false); +} + +export function DenyStageRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): DenyStageRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + denyMessage: json["deny_message"] == null ? undefined : json["deny_message"], + }; +} + +export function DenyStageRequestToJSON(json: any): DenyStageRequest { + return DenyStageRequestToJSONTyped(json, false); +} + +export function DenyStageRequestToJSONTyped( + value?: DenyStageRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + deny_message: value["denyMessage"], + }; +} diff --git a/packages/client-ts/src/models/DetailedCountry.ts b/packages/client-ts/src/models/DetailedCountry.ts new file mode 100644 index 0000000000..e34ed41ecc --- /dev/null +++ b/packages/client-ts/src/models/DetailedCountry.ts @@ -0,0 +1,80 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { CountryCodeEnum } from "./CountryCodeEnum"; +import { CountryCodeEnumFromJSON, CountryCodeEnumToJSON } from "./CountryCodeEnum"; + +/** + * + * @export + * @interface DetailedCountry + */ +export interface DetailedCountry { + /** + * + * @type {CountryCodeEnum} + * @memberof DetailedCountry + */ + code: CountryCodeEnum; + /** + * + * @type {string} + * @memberof DetailedCountry + */ + name: string; +} + +/** + * Check if a given object implements the DetailedCountry interface. + */ +export function instanceOfDetailedCountry(value: object): value is DetailedCountry { + if (!("code" in value) || value["code"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + return true; +} + +export function DetailedCountryFromJSON(json: any): DetailedCountry { + return DetailedCountryFromJSONTyped(json, false); +} + +export function DetailedCountryFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): DetailedCountry { + if (json == null) { + return json; + } + return { + code: CountryCodeEnumFromJSON(json["code"]), + name: json["name"], + }; +} + +export function DetailedCountryToJSON(json: any): DetailedCountry { + return DetailedCountryToJSONTyped(json, false); +} + +export function DetailedCountryToJSONTyped( + value?: DetailedCountry | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + code: CountryCodeEnumToJSON(value["code"]), + name: value["name"], + }; +} diff --git a/packages/client-ts/src/models/Device.ts b/packages/client-ts/src/models/Device.ts new file mode 100644 index 0000000000..37481c4ad7 --- /dev/null +++ b/packages/client-ts/src/models/Device.ts @@ -0,0 +1,166 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Serializer for authenticator devices + * @export + * @interface Device + */ +export interface Device { + /** + * Return object's verbose_name + * @type {string} + * @memberof Device + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof Device + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof Device + */ + readonly metaModelName: string; + /** + * + * @type {string} + * @memberof Device + */ + pk: string; + /** + * + * @type {string} + * @memberof Device + */ + name: string; + /** + * Get type of device + * @type {string} + * @memberof Device + */ + readonly type: string; + /** + * + * @type {boolean} + * @memberof Device + */ + confirmed: boolean; + /** + * + * @type {Date} + * @memberof Device + */ + readonly created: Date; + /** + * + * @type {Date} + * @memberof Device + */ + readonly lastUpdated: Date; + /** + * + * @type {Date} + * @memberof Device + */ + readonly lastUsed: Date | null; + /** + * Get extra description + * @type {string} + * @memberof Device + */ + readonly extraDescription: string | null; + /** + * Get external Device ID + * @type {string} + * @memberof Device + */ + readonly externalId: string | null; +} + +/** + * Check if a given object implements the Device interface. + */ +export function instanceOfDevice(value: object): value is Device { + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("type" in value) || value["type"] === undefined) return false; + if (!("confirmed" in value) || value["confirmed"] === undefined) return false; + if (!("created" in value) || value["created"] === undefined) return false; + if (!("lastUpdated" in value) || value["lastUpdated"] === undefined) return false; + if (!("lastUsed" in value) || value["lastUsed"] === undefined) return false; + if (!("extraDescription" in value) || value["extraDescription"] === undefined) return false; + if (!("externalId" in value) || value["externalId"] === undefined) return false; + return true; +} + +export function DeviceFromJSON(json: any): Device { + return DeviceFromJSONTyped(json, false); +} + +export function DeviceFromJSONTyped(json: any, ignoreDiscriminator: boolean): Device { + if (json == null) { + return json; + } + return { + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + pk: json["pk"], + name: json["name"], + type: json["type"], + confirmed: json["confirmed"], + created: new Date(json["created"]), + lastUpdated: new Date(json["last_updated"]), + lastUsed: json["last_used"] == null ? null : new Date(json["last_used"]), + extraDescription: json["extra_description"], + externalId: json["external_id"], + }; +} + +export function DeviceToJSON(json: any): Device { + return DeviceToJSONTyped(json, false); +} + +export function DeviceToJSONTyped( + value?: Omit< + Device, + | "verbose_name" + | "verbose_name_plural" + | "meta_model_name" + | "type" + | "created" + | "last_updated" + | "last_used" + | "extra_description" + | "external_id" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pk: value["pk"], + name: value["name"], + confirmed: value["confirmed"], + }; +} diff --git a/packages/client-ts/src/models/DeviceAccessGroup.ts b/packages/client-ts/src/models/DeviceAccessGroup.ts new file mode 100644 index 0000000000..cde50c674b --- /dev/null +++ b/packages/client-ts/src/models/DeviceAccessGroup.ts @@ -0,0 +1,84 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + * @interface DeviceAccessGroup + */ +export interface DeviceAccessGroup { + /** + * + * @type {string} + * @memberof DeviceAccessGroup + */ + readonly pbmUuid: string; + /** + * + * @type {string} + * @memberof DeviceAccessGroup + */ + name: string; + /** + * + * @type {{ [key: string]: any; }} + * @memberof DeviceAccessGroup + */ + attributes?: { [key: string]: any }; +} + +/** + * Check if a given object implements the DeviceAccessGroup interface. + */ +export function instanceOfDeviceAccessGroup(value: object): value is DeviceAccessGroup { + if (!("pbmUuid" in value) || value["pbmUuid"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + return true; +} + +export function DeviceAccessGroupFromJSON(json: any): DeviceAccessGroup { + return DeviceAccessGroupFromJSONTyped(json, false); +} + +export function DeviceAccessGroupFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): DeviceAccessGroup { + if (json == null) { + return json; + } + return { + pbmUuid: json["pbm_uuid"], + name: json["name"], + attributes: json["attributes"] == null ? undefined : json["attributes"], + }; +} + +export function DeviceAccessGroupToJSON(json: any): DeviceAccessGroup { + return DeviceAccessGroupToJSONTyped(json, false); +} + +export function DeviceAccessGroupToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + attributes: value["attributes"], + }; +} diff --git a/packages/client-ts/src/models/DeviceAccessGroupRequest.ts b/packages/client-ts/src/models/DeviceAccessGroupRequest.ts new file mode 100644 index 0000000000..f37704f82e --- /dev/null +++ b/packages/client-ts/src/models/DeviceAccessGroupRequest.ts @@ -0,0 +1,78 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + * @interface DeviceAccessGroupRequest + */ +export interface DeviceAccessGroupRequest { + /** + * + * @type {string} + * @memberof DeviceAccessGroupRequest + */ + name: string; + /** + * + * @type {{ [key: string]: any; }} + * @memberof DeviceAccessGroupRequest + */ + attributes?: { [key: string]: any }; +} + +/** + * Check if a given object implements the DeviceAccessGroupRequest interface. + */ +export function instanceOfDeviceAccessGroupRequest( + value: object, +): value is DeviceAccessGroupRequest { + if (!("name" in value) || value["name"] === undefined) return false; + return true; +} + +export function DeviceAccessGroupRequestFromJSON(json: any): DeviceAccessGroupRequest { + return DeviceAccessGroupRequestFromJSONTyped(json, false); +} + +export function DeviceAccessGroupRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): DeviceAccessGroupRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + attributes: json["attributes"] == null ? undefined : json["attributes"], + }; +} + +export function DeviceAccessGroupRequestToJSON(json: any): DeviceAccessGroupRequest { + return DeviceAccessGroupRequestToJSONTyped(json, false); +} + +export function DeviceAccessGroupRequestToJSONTyped( + value?: DeviceAccessGroupRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + attributes: value["attributes"], + }; +} diff --git a/packages/client-ts/src/models/DeviceChallenge.ts b/packages/client-ts/src/models/DeviceChallenge.ts new file mode 100644 index 0000000000..8001533c8b --- /dev/null +++ b/packages/client-ts/src/models/DeviceChallenge.ts @@ -0,0 +1,98 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { DeviceClassesEnum } from "./DeviceClassesEnum"; +import { DeviceClassesEnumFromJSON, DeviceClassesEnumToJSON } from "./DeviceClassesEnum"; + +/** + * Single device challenge + * @export + * @interface DeviceChallenge + */ +export interface DeviceChallenge { + /** + * + * @type {DeviceClassesEnum} + * @memberof DeviceChallenge + */ + deviceClass: DeviceClassesEnum; + /** + * + * @type {string} + * @memberof DeviceChallenge + */ + deviceUid: string; + /** + * + * @type {{ [key: string]: any; }} + * @memberof DeviceChallenge + */ + challenge: { [key: string]: any }; + /** + * + * @type {Date} + * @memberof DeviceChallenge + */ + lastUsed: Date | null; +} + +/** + * Check if a given object implements the DeviceChallenge interface. + */ +export function instanceOfDeviceChallenge(value: object): value is DeviceChallenge { + if (!("deviceClass" in value) || value["deviceClass"] === undefined) return false; + if (!("deviceUid" in value) || value["deviceUid"] === undefined) return false; + if (!("challenge" in value) || value["challenge"] === undefined) return false; + if (!("lastUsed" in value) || value["lastUsed"] === undefined) return false; + return true; +} + +export function DeviceChallengeFromJSON(json: any): DeviceChallenge { + return DeviceChallengeFromJSONTyped(json, false); +} + +export function DeviceChallengeFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): DeviceChallenge { + if (json == null) { + return json; + } + return { + deviceClass: DeviceClassesEnumFromJSON(json["device_class"]), + deviceUid: json["device_uid"], + challenge: json["challenge"], + lastUsed: json["last_used"] == null ? null : new Date(json["last_used"]), + }; +} + +export function DeviceChallengeToJSON(json: any): DeviceChallenge { + return DeviceChallengeToJSONTyped(json, false); +} + +export function DeviceChallengeToJSONTyped( + value?: DeviceChallenge | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + device_class: DeviceClassesEnumToJSON(value["deviceClass"]), + device_uid: value["deviceUid"], + challenge: value["challenge"], + last_used: value["lastUsed"] == null ? value["lastUsed"] : value["lastUsed"].toISOString(), + }; +} diff --git a/packages/client-ts/src/models/DeviceChallengeRequest.ts b/packages/client-ts/src/models/DeviceChallengeRequest.ts new file mode 100644 index 0000000000..2f0ae02e17 --- /dev/null +++ b/packages/client-ts/src/models/DeviceChallengeRequest.ts @@ -0,0 +1,98 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { DeviceClassesEnum } from "./DeviceClassesEnum"; +import { DeviceClassesEnumFromJSON, DeviceClassesEnumToJSON } from "./DeviceClassesEnum"; + +/** + * Single device challenge + * @export + * @interface DeviceChallengeRequest + */ +export interface DeviceChallengeRequest { + /** + * + * @type {DeviceClassesEnum} + * @memberof DeviceChallengeRequest + */ + deviceClass: DeviceClassesEnum; + /** + * + * @type {string} + * @memberof DeviceChallengeRequest + */ + deviceUid: string; + /** + * + * @type {{ [key: string]: any; }} + * @memberof DeviceChallengeRequest + */ + challenge: { [key: string]: any }; + /** + * + * @type {Date} + * @memberof DeviceChallengeRequest + */ + lastUsed: Date | null; +} + +/** + * Check if a given object implements the DeviceChallengeRequest interface. + */ +export function instanceOfDeviceChallengeRequest(value: object): value is DeviceChallengeRequest { + if (!("deviceClass" in value) || value["deviceClass"] === undefined) return false; + if (!("deviceUid" in value) || value["deviceUid"] === undefined) return false; + if (!("challenge" in value) || value["challenge"] === undefined) return false; + if (!("lastUsed" in value) || value["lastUsed"] === undefined) return false; + return true; +} + +export function DeviceChallengeRequestFromJSON(json: any): DeviceChallengeRequest { + return DeviceChallengeRequestFromJSONTyped(json, false); +} + +export function DeviceChallengeRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): DeviceChallengeRequest { + if (json == null) { + return json; + } + return { + deviceClass: DeviceClassesEnumFromJSON(json["device_class"]), + deviceUid: json["device_uid"], + challenge: json["challenge"], + lastUsed: json["last_used"] == null ? null : new Date(json["last_used"]), + }; +} + +export function DeviceChallengeRequestToJSON(json: any): DeviceChallengeRequest { + return DeviceChallengeRequestToJSONTyped(json, false); +} + +export function DeviceChallengeRequestToJSONTyped( + value?: DeviceChallengeRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + device_class: DeviceClassesEnumToJSON(value["deviceClass"]), + device_uid: value["deviceUid"], + challenge: value["challenge"], + last_used: value["lastUsed"] == null ? value["lastUsed"] : value["lastUsed"].toISOString(), + }; +} diff --git a/packages/client-ts/src/models/DeviceClassesEnum.ts b/packages/client-ts/src/models/DeviceClassesEnum.ts new file mode 100644 index 0000000000..3b5615535a --- /dev/null +++ b/packages/client-ts/src/models/DeviceClassesEnum.ts @@ -0,0 +1,61 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const DeviceClassesEnum = { + Static: "static", + Totp: "totp", + Webauthn: "webauthn", + Duo: "duo", + Sms: "sms", + Email: "email", + UnknownDefaultOpenApi: "11184809", +} as const; +export type DeviceClassesEnum = (typeof DeviceClassesEnum)[keyof typeof DeviceClassesEnum]; + +export function instanceOfDeviceClassesEnum(value: any): boolean { + for (const key in DeviceClassesEnum) { + if (Object.prototype.hasOwnProperty.call(DeviceClassesEnum, key)) { + if (DeviceClassesEnum[key as keyof typeof DeviceClassesEnum] === value) { + return true; + } + } + } + return false; +} + +export function DeviceClassesEnumFromJSON(json: any): DeviceClassesEnum { + return DeviceClassesEnumFromJSONTyped(json, false); +} + +export function DeviceClassesEnumFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): DeviceClassesEnum { + return json as DeviceClassesEnum; +} + +export function DeviceClassesEnumToJSON(value?: DeviceClassesEnum | null): any { + return value as any; +} + +export function DeviceClassesEnumToJSONTyped( + value: any, + ignoreDiscriminator: boolean, +): DeviceClassesEnum { + return value as DeviceClassesEnum; +} diff --git a/packages/client-ts/src/models/DeviceConnection.ts b/packages/client-ts/src/models/DeviceConnection.ts new file mode 100644 index 0000000000..acba902614 --- /dev/null +++ b/packages/client-ts/src/models/DeviceConnection.ts @@ -0,0 +1,98 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Connector } from "./Connector"; +import { ConnectorFromJSON } from "./Connector"; +import type { DeviceFactSnapshot } from "./DeviceFactSnapshot"; +import { DeviceFactSnapshotFromJSON } from "./DeviceFactSnapshot"; + +/** + * + * @export + * @interface DeviceConnection + */ +export interface DeviceConnection { + /** + * + * @type {string} + * @memberof DeviceConnection + */ + device: string; + /** + * + * @type {string} + * @memberof DeviceConnection + */ + connector: string; + /** + * + * @type {Connector} + * @memberof DeviceConnection + */ + readonly connectorObj: Connector; + /** + * + * @type {DeviceFactSnapshot} + * @memberof DeviceConnection + */ + readonly latestSnapshot: DeviceFactSnapshot | null; +} + +/** + * Check if a given object implements the DeviceConnection interface. + */ +export function instanceOfDeviceConnection(value: object): value is DeviceConnection { + if (!("device" in value) || value["device"] === undefined) return false; + if (!("connector" in value) || value["connector"] === undefined) return false; + if (!("connectorObj" in value) || value["connectorObj"] === undefined) return false; + if (!("latestSnapshot" in value) || value["latestSnapshot"] === undefined) return false; + return true; +} + +export function DeviceConnectionFromJSON(json: any): DeviceConnection { + return DeviceConnectionFromJSONTyped(json, false); +} + +export function DeviceConnectionFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): DeviceConnection { + if (json == null) { + return json; + } + return { + device: json["device"], + connector: json["connector"], + connectorObj: ConnectorFromJSON(json["connector_obj"]), + latestSnapshot: DeviceFactSnapshotFromJSON(json["latest_snapshot"]), + }; +} + +export function DeviceConnectionToJSON(json: any): DeviceConnection { + return DeviceConnectionToJSONTyped(json, false); +} + +export function DeviceConnectionToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + device: value["device"], + connector: value["connector"], + }; +} diff --git a/packages/client-ts/src/models/DeviceFactSnapshot.ts b/packages/client-ts/src/models/DeviceFactSnapshot.ts new file mode 100644 index 0000000000..ae0b1c1784 --- /dev/null +++ b/packages/client-ts/src/models/DeviceFactSnapshot.ts @@ -0,0 +1,106 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { DeviceFacts } from "./DeviceFacts"; +import { DeviceFactsFromJSON, DeviceFactsToJSON } from "./DeviceFacts"; +import type { VendorEnum } from "./VendorEnum"; +import { VendorEnumFromJSON } from "./VendorEnum"; + +/** + * + * @export + * @interface DeviceFactSnapshot + */ +export interface DeviceFactSnapshot { + /** + * + * @type {DeviceFacts} + * @memberof DeviceFactSnapshot + */ + data: DeviceFacts; + /** + * + * @type {string} + * @memberof DeviceFactSnapshot + */ + connection: string; + /** + * + * @type {Date} + * @memberof DeviceFactSnapshot + */ + readonly created: Date; + /** + * + * @type {Date} + * @memberof DeviceFactSnapshot + */ + readonly expires: Date | null; + /** + * + * @type {VendorEnum} + * @memberof DeviceFactSnapshot + */ + readonly vendor: VendorEnum; +} + +/** + * Check if a given object implements the DeviceFactSnapshot interface. + */ +export function instanceOfDeviceFactSnapshot(value: object): value is DeviceFactSnapshot { + if (!("data" in value) || value["data"] === undefined) return false; + if (!("connection" in value) || value["connection"] === undefined) return false; + if (!("created" in value) || value["created"] === undefined) return false; + if (!("expires" in value) || value["expires"] === undefined) return false; + if (!("vendor" in value) || value["vendor"] === undefined) return false; + return true; +} + +export function DeviceFactSnapshotFromJSON(json: any): DeviceFactSnapshot { + return DeviceFactSnapshotFromJSONTyped(json, false); +} + +export function DeviceFactSnapshotFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): DeviceFactSnapshot { + if (json == null) { + return json; + } + return { + data: DeviceFactsFromJSON(json["data"]), + connection: json["connection"], + created: new Date(json["created"]), + expires: json["expires"] == null ? null : new Date(json["expires"]), + vendor: VendorEnumFromJSON(json["vendor"]), + }; +} + +export function DeviceFactSnapshotToJSON(json: any): DeviceFactSnapshot { + return DeviceFactSnapshotToJSONTyped(json, false); +} + +export function DeviceFactSnapshotToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + data: DeviceFactsToJSON(value["data"]), + connection: value["connection"], + }; +} diff --git a/packages/client-ts/src/models/DeviceFacts.ts b/packages/client-ts/src/models/DeviceFacts.ts new file mode 100644 index 0000000000..42b54e905a --- /dev/null +++ b/packages/client-ts/src/models/DeviceFacts.ts @@ -0,0 +1,169 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { DeviceGroup } from "./DeviceGroup"; +import { DeviceGroupFromJSON, DeviceGroupToJSON } from "./DeviceGroup"; +import type { DeviceUser } from "./DeviceUser"; +import { DeviceUserFromJSON, DeviceUserToJSON } from "./DeviceUser"; +import type { Disk } from "./Disk"; +import { DiskFromJSON, DiskToJSON } from "./Disk"; +import type { Hardware } from "./Hardware"; +import { HardwareFromJSON, HardwareToJSON } from "./Hardware"; +import type { Network } from "./Network"; +import { NetworkFromJSON, NetworkToJSON } from "./Network"; +import type { OperatingSystem } from "./OperatingSystem"; +import { OperatingSystemFromJSON, OperatingSystemToJSON } from "./OperatingSystem"; +import type { Process } from "./Process"; +import { ProcessFromJSON, ProcessToJSON } from "./Process"; +import type { Software } from "./Software"; +import { SoftwareFromJSON, SoftwareToJSON } from "./Software"; + +/** + * + * @export + * @interface DeviceFacts + */ +export interface DeviceFacts { + /** + * + * @type {OperatingSystem} + * @memberof DeviceFacts + */ + os?: OperatingSystem | null; + /** + * + * @type {Array} + * @memberof DeviceFacts + */ + disks?: Array | null; + /** + * + * @type {Network} + * @memberof DeviceFacts + */ + network?: Network | null; + /** + * + * @type {Hardware} + * @memberof DeviceFacts + */ + hardware?: Hardware | null; + /** + * + * @type {Array} + * @memberof DeviceFacts + */ + software?: Array | null; + /** + * + * @type {Array} + * @memberof DeviceFacts + */ + processes?: Array | null; + /** + * + * @type {Array} + * @memberof DeviceFacts + */ + users?: Array | null; + /** + * + * @type {Array} + * @memberof DeviceFacts + */ + groups?: Array | null; + /** + * + * @type {{ [key: string]: any; }} + * @memberof DeviceFacts + */ + vendor?: { [key: string]: any }; +} + +/** + * Check if a given object implements the DeviceFacts interface. + */ +export function instanceOfDeviceFacts(value: object): value is DeviceFacts { + return true; +} + +export function DeviceFactsFromJSON(json: any): DeviceFacts { + return DeviceFactsFromJSONTyped(json, false); +} + +export function DeviceFactsFromJSONTyped(json: any, ignoreDiscriminator: boolean): DeviceFacts { + if (json == null) { + return json; + } + return { + os: json["os"] == null ? undefined : OperatingSystemFromJSON(json["os"]), + disks: json["disks"] == null ? undefined : (json["disks"] as Array).map(DiskFromJSON), + network: json["network"] == null ? undefined : NetworkFromJSON(json["network"]), + hardware: json["hardware"] == null ? undefined : HardwareFromJSON(json["hardware"]), + software: + json["software"] == null + ? undefined + : (json["software"] as Array).map(SoftwareFromJSON), + processes: + json["processes"] == null + ? undefined + : (json["processes"] as Array).map(ProcessFromJSON), + users: + json["users"] == null + ? undefined + : (json["users"] as Array).map(DeviceUserFromJSON), + groups: + json["groups"] == null + ? undefined + : (json["groups"] as Array).map(DeviceGroupFromJSON), + vendor: json["vendor"] == null ? undefined : json["vendor"], + }; +} + +export function DeviceFactsToJSON(json: any): DeviceFacts { + return DeviceFactsToJSONTyped(json, false); +} + +export function DeviceFactsToJSONTyped( + value?: DeviceFacts | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + os: OperatingSystemToJSON(value["os"]), + disks: value["disks"] == null ? undefined : (value["disks"] as Array).map(DiskToJSON), + network: NetworkToJSON(value["network"]), + hardware: HardwareToJSON(value["hardware"]), + software: + value["software"] == null + ? undefined + : (value["software"] as Array).map(SoftwareToJSON), + processes: + value["processes"] == null + ? undefined + : (value["processes"] as Array).map(ProcessToJSON), + users: + value["users"] == null + ? undefined + : (value["users"] as Array).map(DeviceUserToJSON), + groups: + value["groups"] == null + ? undefined + : (value["groups"] as Array).map(DeviceGroupToJSON), + vendor: value["vendor"], + }; +} diff --git a/packages/client-ts/src/models/DeviceFactsOSFamily.ts b/packages/client-ts/src/models/DeviceFactsOSFamily.ts new file mode 100644 index 0000000000..a5bae67a0f --- /dev/null +++ b/packages/client-ts/src/models/DeviceFactsOSFamily.ts @@ -0,0 +1,63 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const DeviceFactsOSFamily = { + Linux: "linux", + Unix: "unix", + Bsd: "bsd", + Windows: "windows", + MacOs: "mac_os", + Android: "android", + IOs: "i_os", + Other: "other", + UnknownDefaultOpenApi: "11184809", +} as const; +export type DeviceFactsOSFamily = (typeof DeviceFactsOSFamily)[keyof typeof DeviceFactsOSFamily]; + +export function instanceOfDeviceFactsOSFamily(value: any): boolean { + for (const key in DeviceFactsOSFamily) { + if (Object.prototype.hasOwnProperty.call(DeviceFactsOSFamily, key)) { + if (DeviceFactsOSFamily[key as keyof typeof DeviceFactsOSFamily] === value) { + return true; + } + } + } + return false; +} + +export function DeviceFactsOSFamilyFromJSON(json: any): DeviceFactsOSFamily { + return DeviceFactsOSFamilyFromJSONTyped(json, false); +} + +export function DeviceFactsOSFamilyFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): DeviceFactsOSFamily { + return json as DeviceFactsOSFamily; +} + +export function DeviceFactsOSFamilyToJSON(value?: DeviceFactsOSFamily | null): any { + return value as any; +} + +export function DeviceFactsOSFamilyToJSONTyped( + value: any, + ignoreDiscriminator: boolean, +): DeviceFactsOSFamily { + return value as DeviceFactsOSFamily; +} diff --git a/packages/client-ts/src/models/DeviceFactsRequest.ts b/packages/client-ts/src/models/DeviceFactsRequest.ts new file mode 100644 index 0000000000..1aae7670a7 --- /dev/null +++ b/packages/client-ts/src/models/DeviceFactsRequest.ts @@ -0,0 +1,181 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { DeviceGroupRequest } from "./DeviceGroupRequest"; +import { DeviceGroupRequestFromJSON, DeviceGroupRequestToJSON } from "./DeviceGroupRequest"; +import type { DeviceUserRequest } from "./DeviceUserRequest"; +import { DeviceUserRequestFromJSON, DeviceUserRequestToJSON } from "./DeviceUserRequest"; +import type { DiskRequest } from "./DiskRequest"; +import { DiskRequestFromJSON, DiskRequestToJSON } from "./DiskRequest"; +import type { HardwareRequest } from "./HardwareRequest"; +import { HardwareRequestFromJSON, HardwareRequestToJSON } from "./HardwareRequest"; +import type { NetworkRequest } from "./NetworkRequest"; +import { NetworkRequestFromJSON, NetworkRequestToJSON } from "./NetworkRequest"; +import type { OperatingSystemRequest } from "./OperatingSystemRequest"; +import { + OperatingSystemRequestFromJSON, + OperatingSystemRequestToJSON, +} from "./OperatingSystemRequest"; +import type { ProcessRequest } from "./ProcessRequest"; +import { ProcessRequestFromJSON, ProcessRequestToJSON } from "./ProcessRequest"; +import type { SoftwareRequest } from "./SoftwareRequest"; +import { SoftwareRequestFromJSON, SoftwareRequestToJSON } from "./SoftwareRequest"; + +/** + * + * @export + * @interface DeviceFactsRequest + */ +export interface DeviceFactsRequest { + /** + * + * @type {OperatingSystemRequest} + * @memberof DeviceFactsRequest + */ + os?: OperatingSystemRequest | null; + /** + * + * @type {Array} + * @memberof DeviceFactsRequest + */ + disks?: Array | null; + /** + * + * @type {NetworkRequest} + * @memberof DeviceFactsRequest + */ + network?: NetworkRequest | null; + /** + * + * @type {HardwareRequest} + * @memberof DeviceFactsRequest + */ + hardware?: HardwareRequest | null; + /** + * + * @type {Array} + * @memberof DeviceFactsRequest + */ + software?: Array | null; + /** + * + * @type {Array} + * @memberof DeviceFactsRequest + */ + processes?: Array | null; + /** + * + * @type {Array} + * @memberof DeviceFactsRequest + */ + users?: Array | null; + /** + * + * @type {Array} + * @memberof DeviceFactsRequest + */ + groups?: Array | null; + /** + * + * @type {{ [key: string]: any; }} + * @memberof DeviceFactsRequest + */ + vendor?: { [key: string]: any }; +} + +/** + * Check if a given object implements the DeviceFactsRequest interface. + */ +export function instanceOfDeviceFactsRequest(value: object): value is DeviceFactsRequest { + return true; +} + +export function DeviceFactsRequestFromJSON(json: any): DeviceFactsRequest { + return DeviceFactsRequestFromJSONTyped(json, false); +} + +export function DeviceFactsRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): DeviceFactsRequest { + if (json == null) { + return json; + } + return { + os: json["os"] == null ? undefined : OperatingSystemRequestFromJSON(json["os"]), + disks: + json["disks"] == null + ? undefined + : (json["disks"] as Array).map(DiskRequestFromJSON), + network: json["network"] == null ? undefined : NetworkRequestFromJSON(json["network"]), + hardware: json["hardware"] == null ? undefined : HardwareRequestFromJSON(json["hardware"]), + software: + json["software"] == null + ? undefined + : (json["software"] as Array).map(SoftwareRequestFromJSON), + processes: + json["processes"] == null + ? undefined + : (json["processes"] as Array).map(ProcessRequestFromJSON), + users: + json["users"] == null + ? undefined + : (json["users"] as Array).map(DeviceUserRequestFromJSON), + groups: + json["groups"] == null + ? undefined + : (json["groups"] as Array).map(DeviceGroupRequestFromJSON), + vendor: json["vendor"] == null ? undefined : json["vendor"], + }; +} + +export function DeviceFactsRequestToJSON(json: any): DeviceFactsRequest { + return DeviceFactsRequestToJSONTyped(json, false); +} + +export function DeviceFactsRequestToJSONTyped( + value?: DeviceFactsRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + os: OperatingSystemRequestToJSON(value["os"]), + disks: + value["disks"] == null + ? undefined + : (value["disks"] as Array).map(DiskRequestToJSON), + network: NetworkRequestToJSON(value["network"]), + hardware: HardwareRequestToJSON(value["hardware"]), + software: + value["software"] == null + ? undefined + : (value["software"] as Array).map(SoftwareRequestToJSON), + processes: + value["processes"] == null + ? undefined + : (value["processes"] as Array).map(ProcessRequestToJSON), + users: + value["users"] == null + ? undefined + : (value["users"] as Array).map(DeviceUserRequestToJSON), + groups: + value["groups"] == null + ? undefined + : (value["groups"] as Array).map(DeviceGroupRequestToJSON), + vendor: value["vendor"], + }; +} diff --git a/packages/client-ts/src/models/DeviceGroup.ts b/packages/client-ts/src/models/DeviceGroup.ts new file mode 100644 index 0000000000..8c2410d014 --- /dev/null +++ b/packages/client-ts/src/models/DeviceGroup.ts @@ -0,0 +1,73 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + * @interface DeviceGroup + */ +export interface DeviceGroup { + /** + * + * @type {string} + * @memberof DeviceGroup + */ + id: string; + /** + * + * @type {string} + * @memberof DeviceGroup + */ + name?: string; +} + +/** + * Check if a given object implements the DeviceGroup interface. + */ +export function instanceOfDeviceGroup(value: object): value is DeviceGroup { + if (!("id" in value) || value["id"] === undefined) return false; + return true; +} + +export function DeviceGroupFromJSON(json: any): DeviceGroup { + return DeviceGroupFromJSONTyped(json, false); +} + +export function DeviceGroupFromJSONTyped(json: any, ignoreDiscriminator: boolean): DeviceGroup { + if (json == null) { + return json; + } + return { + id: json["id"], + name: json["name"] == null ? undefined : json["name"], + }; +} + +export function DeviceGroupToJSON(json: any): DeviceGroup { + return DeviceGroupToJSONTyped(json, false); +} + +export function DeviceGroupToJSONTyped( + value?: DeviceGroup | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + id: value["id"], + name: value["name"], + }; +} diff --git a/packages/client-ts/src/models/DeviceGroupRequest.ts b/packages/client-ts/src/models/DeviceGroupRequest.ts new file mode 100644 index 0000000000..c389f69b95 --- /dev/null +++ b/packages/client-ts/src/models/DeviceGroupRequest.ts @@ -0,0 +1,76 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + * @interface DeviceGroupRequest + */ +export interface DeviceGroupRequest { + /** + * + * @type {string} + * @memberof DeviceGroupRequest + */ + id: string; + /** + * + * @type {string} + * @memberof DeviceGroupRequest + */ + name?: string; +} + +/** + * Check if a given object implements the DeviceGroupRequest interface. + */ +export function instanceOfDeviceGroupRequest(value: object): value is DeviceGroupRequest { + if (!("id" in value) || value["id"] === undefined) return false; + return true; +} + +export function DeviceGroupRequestFromJSON(json: any): DeviceGroupRequest { + return DeviceGroupRequestFromJSONTyped(json, false); +} + +export function DeviceGroupRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): DeviceGroupRequest { + if (json == null) { + return json; + } + return { + id: json["id"], + name: json["name"] == null ? undefined : json["name"], + }; +} + +export function DeviceGroupRequestToJSON(json: any): DeviceGroupRequest { + return DeviceGroupRequestToJSONTyped(json, false); +} + +export function DeviceGroupRequestToJSONTyped( + value?: DeviceGroupRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + id: value["id"], + name: value["name"], + }; +} diff --git a/packages/client-ts/src/models/DeviceSummary.ts b/packages/client-ts/src/models/DeviceSummary.ts new file mode 100644 index 0000000000..dcc464552b --- /dev/null +++ b/packages/client-ts/src/models/DeviceSummary.ts @@ -0,0 +1,83 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Summary of registered devices + * @export + * @interface DeviceSummary + */ +export interface DeviceSummary { + /** + * + * @type {number} + * @memberof DeviceSummary + */ + totalCount: number; + /** + * + * @type {number} + * @memberof DeviceSummary + */ + unreachableCount: number; + /** + * + * @type {number} + * @memberof DeviceSummary + */ + outdatedAgentCount: number; +} + +/** + * Check if a given object implements the DeviceSummary interface. + */ +export function instanceOfDeviceSummary(value: object): value is DeviceSummary { + if (!("totalCount" in value) || value["totalCount"] === undefined) return false; + if (!("unreachableCount" in value) || value["unreachableCount"] === undefined) return false; + if (!("outdatedAgentCount" in value) || value["outdatedAgentCount"] === undefined) return false; + return true; +} + +export function DeviceSummaryFromJSON(json: any): DeviceSummary { + return DeviceSummaryFromJSONTyped(json, false); +} + +export function DeviceSummaryFromJSONTyped(json: any, ignoreDiscriminator: boolean): DeviceSummary { + if (json == null) { + return json; + } + return { + totalCount: json["total_count"], + unreachableCount: json["unreachable_count"], + outdatedAgentCount: json["outdated_agent_count"], + }; +} + +export function DeviceSummaryToJSON(json: any): DeviceSummary { + return DeviceSummaryToJSONTyped(json, false); +} + +export function DeviceSummaryToJSONTyped( + value?: DeviceSummary | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + total_count: value["totalCount"], + unreachable_count: value["unreachableCount"], + outdated_agent_count: value["outdatedAgentCount"], + }; +} diff --git a/packages/client-ts/src/models/DeviceUser.ts b/packages/client-ts/src/models/DeviceUser.ts new file mode 100644 index 0000000000..14a9b04aa8 --- /dev/null +++ b/packages/client-ts/src/models/DeviceUser.ts @@ -0,0 +1,89 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + * @interface DeviceUser + */ +export interface DeviceUser { + /** + * + * @type {string} + * @memberof DeviceUser + */ + id: string; + /** + * + * @type {string} + * @memberof DeviceUser + */ + username?: string; + /** + * + * @type {string} + * @memberof DeviceUser + */ + name?: string; + /** + * + * @type {string} + * @memberof DeviceUser + */ + home?: string; +} + +/** + * Check if a given object implements the DeviceUser interface. + */ +export function instanceOfDeviceUser(value: object): value is DeviceUser { + if (!("id" in value) || value["id"] === undefined) return false; + return true; +} + +export function DeviceUserFromJSON(json: any): DeviceUser { + return DeviceUserFromJSONTyped(json, false); +} + +export function DeviceUserFromJSONTyped(json: any, ignoreDiscriminator: boolean): DeviceUser { + if (json == null) { + return json; + } + return { + id: json["id"], + username: json["username"] == null ? undefined : json["username"], + name: json["name"] == null ? undefined : json["name"], + home: json["home"] == null ? undefined : json["home"], + }; +} + +export function DeviceUserToJSON(json: any): DeviceUser { + return DeviceUserToJSONTyped(json, false); +} + +export function DeviceUserToJSONTyped( + value?: DeviceUser | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + id: value["id"], + username: value["username"], + name: value["name"], + home: value["home"], + }; +} diff --git a/packages/client-ts/src/models/DeviceUserBinding.ts b/packages/client-ts/src/models/DeviceUserBinding.ts new file mode 100644 index 0000000000..ba6fc62328 --- /dev/null +++ b/packages/client-ts/src/models/DeviceUserBinding.ts @@ -0,0 +1,201 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Connector } from "./Connector"; +import { ConnectorFromJSON } from "./Connector"; +import type { PartialGroup } from "./PartialGroup"; +import { PartialGroupFromJSON } from "./PartialGroup"; +import type { PartialUser } from "./PartialUser"; +import { PartialUserFromJSON } from "./PartialUser"; +import type { Policy } from "./Policy"; +import { PolicyFromJSON } from "./Policy"; + +/** + * PolicyBinding Serializer + * @export + * @interface DeviceUserBinding + */ +export interface DeviceUserBinding { + /** + * + * @type {string} + * @memberof DeviceUserBinding + */ + readonly pk: string; + /** + * + * @type {string} + * @memberof DeviceUserBinding + */ + policy?: string | null; + /** + * + * @type {string} + * @memberof DeviceUserBinding + */ + group?: string | null; + /** + * + * @type {number} + * @memberof DeviceUserBinding + */ + user?: number | null; + /** + * + * @type {Policy} + * @memberof DeviceUserBinding + */ + readonly policyObj: Policy | null; + /** + * + * @type {PartialGroup} + * @memberof DeviceUserBinding + */ + readonly groupObj: PartialGroup | null; + /** + * + * @type {PartialUser} + * @memberof DeviceUserBinding + */ + readonly userObj: PartialUser | null; + /** + * + * @type {string} + * @memberof DeviceUserBinding + */ + target: string; + /** + * Negates the outcome of the policy. Messages are unaffected. + * @type {boolean} + * @memberof DeviceUserBinding + */ + negate?: boolean; + /** + * + * @type {boolean} + * @memberof DeviceUserBinding + */ + enabled?: boolean; + /** + * + * @type {number} + * @memberof DeviceUserBinding + */ + order: number; + /** + * Timeout after which Policy execution is terminated. + * @type {number} + * @memberof DeviceUserBinding + */ + timeout?: number; + /** + * Result if the Policy execution fails. + * @type {boolean} + * @memberof DeviceUserBinding + */ + failureResult?: boolean; + /** + * + * @type {boolean} + * @memberof DeviceUserBinding + */ + isPrimary?: boolean; + /** + * + * @type {string} + * @memberof DeviceUserBinding + */ + readonly connector: string | null; + /** + * + * @type {Connector} + * @memberof DeviceUserBinding + */ + readonly connectorObj: Connector; +} + +/** + * Check if a given object implements the DeviceUserBinding interface. + */ +export function instanceOfDeviceUserBinding(value: object): value is DeviceUserBinding { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("policyObj" in value) || value["policyObj"] === undefined) return false; + if (!("groupObj" in value) || value["groupObj"] === undefined) return false; + if (!("userObj" in value) || value["userObj"] === undefined) return false; + if (!("target" in value) || value["target"] === undefined) return false; + if (!("order" in value) || value["order"] === undefined) return false; + if (!("connector" in value) || value["connector"] === undefined) return false; + if (!("connectorObj" in value) || value["connectorObj"] === undefined) return false; + return true; +} + +export function DeviceUserBindingFromJSON(json: any): DeviceUserBinding { + return DeviceUserBindingFromJSONTyped(json, false); +} + +export function DeviceUserBindingFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): DeviceUserBinding { + if (json == null) { + return json; + } + return { + pk: json["pk"], + policy: json["policy"] == null ? undefined : json["policy"], + group: json["group"] == null ? undefined : json["group"], + user: json["user"] == null ? undefined : json["user"], + policyObj: PolicyFromJSON(json["policy_obj"]), + groupObj: PartialGroupFromJSON(json["group_obj"]), + userObj: PartialUserFromJSON(json["user_obj"]), + target: json["target"], + negate: json["negate"] == null ? undefined : json["negate"], + enabled: json["enabled"] == null ? undefined : json["enabled"], + order: json["order"], + timeout: json["timeout"] == null ? undefined : json["timeout"], + failureResult: json["failure_result"] == null ? undefined : json["failure_result"], + isPrimary: json["is_primary"] == null ? undefined : json["is_primary"], + connector: json["connector"], + connectorObj: ConnectorFromJSON(json["connector_obj"]), + }; +} + +export function DeviceUserBindingToJSON(json: any): DeviceUserBinding { + return DeviceUserBindingToJSONTyped(json, false); +} + +export function DeviceUserBindingToJSONTyped( + value?: Omit< + DeviceUserBinding, + "pk" | "policy_obj" | "group_obj" | "user_obj" | "connector" | "connector_obj" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + policy: value["policy"], + group: value["group"], + user: value["user"], + target: value["target"], + negate: value["negate"], + enabled: value["enabled"], + order: value["order"], + timeout: value["timeout"], + failure_result: value["failureResult"], + is_primary: value["isPrimary"], + }; +} diff --git a/packages/client-ts/src/models/DeviceUserBindingRequest.ts b/packages/client-ts/src/models/DeviceUserBindingRequest.ts new file mode 100644 index 0000000000..f649b5a4bf --- /dev/null +++ b/packages/client-ts/src/models/DeviceUserBindingRequest.ts @@ -0,0 +1,143 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * PolicyBinding Serializer + * @export + * @interface DeviceUserBindingRequest + */ +export interface DeviceUserBindingRequest { + /** + * + * @type {string} + * @memberof DeviceUserBindingRequest + */ + policy?: string | null; + /** + * + * @type {string} + * @memberof DeviceUserBindingRequest + */ + group?: string | null; + /** + * + * @type {number} + * @memberof DeviceUserBindingRequest + */ + user?: number | null; + /** + * + * @type {string} + * @memberof DeviceUserBindingRequest + */ + target: string; + /** + * Negates the outcome of the policy. Messages are unaffected. + * @type {boolean} + * @memberof DeviceUserBindingRequest + */ + negate?: boolean; + /** + * + * @type {boolean} + * @memberof DeviceUserBindingRequest + */ + enabled?: boolean; + /** + * + * @type {number} + * @memberof DeviceUserBindingRequest + */ + order: number; + /** + * Timeout after which Policy execution is terminated. + * @type {number} + * @memberof DeviceUserBindingRequest + */ + timeout?: number; + /** + * Result if the Policy execution fails. + * @type {boolean} + * @memberof DeviceUserBindingRequest + */ + failureResult?: boolean; + /** + * + * @type {boolean} + * @memberof DeviceUserBindingRequest + */ + isPrimary?: boolean; +} + +/** + * Check if a given object implements the DeviceUserBindingRequest interface. + */ +export function instanceOfDeviceUserBindingRequest( + value: object, +): value is DeviceUserBindingRequest { + if (!("target" in value) || value["target"] === undefined) return false; + if (!("order" in value) || value["order"] === undefined) return false; + return true; +} + +export function DeviceUserBindingRequestFromJSON(json: any): DeviceUserBindingRequest { + return DeviceUserBindingRequestFromJSONTyped(json, false); +} + +export function DeviceUserBindingRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): DeviceUserBindingRequest { + if (json == null) { + return json; + } + return { + policy: json["policy"] == null ? undefined : json["policy"], + group: json["group"] == null ? undefined : json["group"], + user: json["user"] == null ? undefined : json["user"], + target: json["target"], + negate: json["negate"] == null ? undefined : json["negate"], + enabled: json["enabled"] == null ? undefined : json["enabled"], + order: json["order"], + timeout: json["timeout"] == null ? undefined : json["timeout"], + failureResult: json["failure_result"] == null ? undefined : json["failure_result"], + isPrimary: json["is_primary"] == null ? undefined : json["is_primary"], + }; +} + +export function DeviceUserBindingRequestToJSON(json: any): DeviceUserBindingRequest { + return DeviceUserBindingRequestToJSONTyped(json, false); +} + +export function DeviceUserBindingRequestToJSONTyped( + value?: DeviceUserBindingRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + policy: value["policy"], + group: value["group"], + user: value["user"], + target: value["target"], + negate: value["negate"], + enabled: value["enabled"], + order: value["order"], + timeout: value["timeout"], + failure_result: value["failureResult"], + is_primary: value["isPrimary"], + }; +} diff --git a/packages/client-ts/src/models/DeviceUserRequest.ts b/packages/client-ts/src/models/DeviceUserRequest.ts new file mode 100644 index 0000000000..c803fc4068 --- /dev/null +++ b/packages/client-ts/src/models/DeviceUserRequest.ts @@ -0,0 +1,92 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + * @interface DeviceUserRequest + */ +export interface DeviceUserRequest { + /** + * + * @type {string} + * @memberof DeviceUserRequest + */ + id: string; + /** + * + * @type {string} + * @memberof DeviceUserRequest + */ + username?: string; + /** + * + * @type {string} + * @memberof DeviceUserRequest + */ + name?: string; + /** + * + * @type {string} + * @memberof DeviceUserRequest + */ + home?: string; +} + +/** + * Check if a given object implements the DeviceUserRequest interface. + */ +export function instanceOfDeviceUserRequest(value: object): value is DeviceUserRequest { + if (!("id" in value) || value["id"] === undefined) return false; + return true; +} + +export function DeviceUserRequestFromJSON(json: any): DeviceUserRequest { + return DeviceUserRequestFromJSONTyped(json, false); +} + +export function DeviceUserRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): DeviceUserRequest { + if (json == null) { + return json; + } + return { + id: json["id"], + username: json["username"] == null ? undefined : json["username"], + name: json["name"] == null ? undefined : json["name"], + home: json["home"] == null ? undefined : json["home"], + }; +} + +export function DeviceUserRequestToJSON(json: any): DeviceUserRequest { + return DeviceUserRequestToJSONTyped(json, false); +} + +export function DeviceUserRequestToJSONTyped( + value?: DeviceUserRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + id: value["id"], + username: value["username"], + name: value["name"], + home: value["home"], + }; +} diff --git a/packages/client-ts/src/models/DigestAlgorithmEnum.ts b/packages/client-ts/src/models/DigestAlgorithmEnum.ts new file mode 100644 index 0000000000..c92ba23c19 --- /dev/null +++ b/packages/client-ts/src/models/DigestAlgorithmEnum.ts @@ -0,0 +1,59 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const DigestAlgorithmEnum = { + HttpWwwW3Org200009Xmldsigsha1: "http://www.w3.org/2000/09/xmldsig#sha1", + HttpWwwW3Org200104Xmlencsha256: "http://www.w3.org/2001/04/xmlenc#sha256", + HttpWwwW3Org200104XmldsigMoresha384: "http://www.w3.org/2001/04/xmldsig-more#sha384", + HttpWwwW3Org200104Xmlencsha512: "http://www.w3.org/2001/04/xmlenc#sha512", + UnknownDefaultOpenApi: "11184809", +} as const; +export type DigestAlgorithmEnum = (typeof DigestAlgorithmEnum)[keyof typeof DigestAlgorithmEnum]; + +export function instanceOfDigestAlgorithmEnum(value: any): boolean { + for (const key in DigestAlgorithmEnum) { + if (Object.prototype.hasOwnProperty.call(DigestAlgorithmEnum, key)) { + if (DigestAlgorithmEnum[key as keyof typeof DigestAlgorithmEnum] === value) { + return true; + } + } + } + return false; +} + +export function DigestAlgorithmEnumFromJSON(json: any): DigestAlgorithmEnum { + return DigestAlgorithmEnumFromJSONTyped(json, false); +} + +export function DigestAlgorithmEnumFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): DigestAlgorithmEnum { + return json as DigestAlgorithmEnum; +} + +export function DigestAlgorithmEnumToJSON(value?: DigestAlgorithmEnum | null): any { + return value as any; +} + +export function DigestAlgorithmEnumToJSONTyped( + value: any, + ignoreDiscriminator: boolean, +): DigestAlgorithmEnum { + return value as DigestAlgorithmEnum; +} diff --git a/packages/client-ts/src/models/DigitsEnum.ts b/packages/client-ts/src/models/DigitsEnum.ts new file mode 100644 index 0000000000..bf5c7aeabf --- /dev/null +++ b/packages/client-ts/src/models/DigitsEnum.ts @@ -0,0 +1,51 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const DigitsEnum = { + _6: "6", + _8: "8", + UnknownDefaultOpenApi: "11184809", +} as const; +export type DigitsEnum = (typeof DigitsEnum)[keyof typeof DigitsEnum]; + +export function instanceOfDigitsEnum(value: any): boolean { + for (const key in DigitsEnum) { + if (Object.prototype.hasOwnProperty.call(DigitsEnum, key)) { + if (DigitsEnum[key as keyof typeof DigitsEnum] === value) { + return true; + } + } + } + return false; +} + +export function DigitsEnumFromJSON(json: any): DigitsEnum { + return DigitsEnumFromJSONTyped(json, false); +} + +export function DigitsEnumFromJSONTyped(json: any, ignoreDiscriminator: boolean): DigitsEnum { + return json as DigitsEnum; +} + +export function DigitsEnumToJSON(value?: DigitsEnum | null): any { + return value as any; +} + +export function DigitsEnumToJSONTyped(value: any, ignoreDiscriminator: boolean): DigitsEnum { + return value as DigitsEnum; +} diff --git a/packages/client-ts/src/models/Disk.ts b/packages/client-ts/src/models/Disk.ts new file mode 100644 index 0000000000..8b92ec6dfc --- /dev/null +++ b/packages/client-ts/src/models/Disk.ts @@ -0,0 +1,106 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + * @interface Disk + */ +export interface Disk { + /** + * + * @type {string} + * @memberof Disk + */ + name: string; + /** + * + * @type {string} + * @memberof Disk + */ + mountpoint: string; + /** + * + * @type {string} + * @memberof Disk + */ + label?: string; + /** + * + * @type {number} + * @memberof Disk + */ + capacityTotalBytes?: number; + /** + * + * @type {number} + * @memberof Disk + */ + capacityUsedBytes?: number; + /** + * + * @type {boolean} + * @memberof Disk + */ + encryptionEnabled?: boolean; +} + +/** + * Check if a given object implements the Disk interface. + */ +export function instanceOfDisk(value: object): value is Disk { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("mountpoint" in value) || value["mountpoint"] === undefined) return false; + return true; +} + +export function DiskFromJSON(json: any): Disk { + return DiskFromJSONTyped(json, false); +} + +export function DiskFromJSONTyped(json: any, ignoreDiscriminator: boolean): Disk { + if (json == null) { + return json; + } + return { + name: json["name"], + mountpoint: json["mountpoint"], + label: json["label"] == null ? undefined : json["label"], + capacityTotalBytes: + json["capacity_total_bytes"] == null ? undefined : json["capacity_total_bytes"], + capacityUsedBytes: + json["capacity_used_bytes"] == null ? undefined : json["capacity_used_bytes"], + encryptionEnabled: + json["encryption_enabled"] == null ? undefined : json["encryption_enabled"], + }; +} + +export function DiskToJSON(json: any): Disk { + return DiskToJSONTyped(json, false); +} + +export function DiskToJSONTyped(value?: Disk | null, ignoreDiscriminator: boolean = false): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + mountpoint: value["mountpoint"], + label: value["label"], + capacity_total_bytes: value["capacityTotalBytes"], + capacity_used_bytes: value["capacityUsedBytes"], + encryption_enabled: value["encryptionEnabled"], + }; +} diff --git a/packages/client-ts/src/models/DiskRequest.ts b/packages/client-ts/src/models/DiskRequest.ts new file mode 100644 index 0000000000..587610d360 --- /dev/null +++ b/packages/client-ts/src/models/DiskRequest.ts @@ -0,0 +1,109 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + * @interface DiskRequest + */ +export interface DiskRequest { + /** + * + * @type {string} + * @memberof DiskRequest + */ + name: string; + /** + * + * @type {string} + * @memberof DiskRequest + */ + mountpoint: string; + /** + * + * @type {string} + * @memberof DiskRequest + */ + label?: string; + /** + * + * @type {number} + * @memberof DiskRequest + */ + capacityTotalBytes?: number; + /** + * + * @type {number} + * @memberof DiskRequest + */ + capacityUsedBytes?: number; + /** + * + * @type {boolean} + * @memberof DiskRequest + */ + encryptionEnabled?: boolean; +} + +/** + * Check if a given object implements the DiskRequest interface. + */ +export function instanceOfDiskRequest(value: object): value is DiskRequest { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("mountpoint" in value) || value["mountpoint"] === undefined) return false; + return true; +} + +export function DiskRequestFromJSON(json: any): DiskRequest { + return DiskRequestFromJSONTyped(json, false); +} + +export function DiskRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): DiskRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + mountpoint: json["mountpoint"], + label: json["label"] == null ? undefined : json["label"], + capacityTotalBytes: + json["capacity_total_bytes"] == null ? undefined : json["capacity_total_bytes"], + capacityUsedBytes: + json["capacity_used_bytes"] == null ? undefined : json["capacity_used_bytes"], + encryptionEnabled: + json["encryption_enabled"] == null ? undefined : json["encryption_enabled"], + }; +} + +export function DiskRequestToJSON(json: any): DiskRequest { + return DiskRequestToJSONTyped(json, false); +} + +export function DiskRequestToJSONTyped( + value?: DiskRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + mountpoint: value["mountpoint"], + label: value["label"], + capacity_total_bytes: value["capacityTotalBytes"], + capacity_used_bytes: value["capacityUsedBytes"], + encryption_enabled: value["encryptionEnabled"], + }; +} diff --git a/packages/client-ts/src/models/DockerServiceConnection.ts b/packages/client-ts/src/models/DockerServiceConnection.ts new file mode 100644 index 0000000000..519e4b83b2 --- /dev/null +++ b/packages/client-ts/src/models/DockerServiceConnection.ts @@ -0,0 +1,145 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * DockerServiceConnection Serializer + * @export + * @interface DockerServiceConnection + */ +export interface DockerServiceConnection { + /** + * + * @type {string} + * @memberof DockerServiceConnection + */ + readonly pk: string; + /** + * + * @type {string} + * @memberof DockerServiceConnection + */ + name: string; + /** + * If enabled, use the local connection. Required Docker socket/Kubernetes Integration + * @type {boolean} + * @memberof DockerServiceConnection + */ + local?: boolean; + /** + * + * @type {string} + * @memberof DockerServiceConnection + */ + readonly component: string; + /** + * Return object's verbose_name + * @type {string} + * @memberof DockerServiceConnection + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof DockerServiceConnection + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof DockerServiceConnection + */ + readonly metaModelName: string; + /** + * Can be in the format of 'unix://' when connecting to a local docker daemon, or 'https://:2376' when connecting to a remote system. + * @type {string} + * @memberof DockerServiceConnection + */ + url: string; + /** + * CA which the endpoint's Certificate is verified against. Can be left empty for no validation. + * @type {string} + * @memberof DockerServiceConnection + */ + tlsVerification?: string | null; + /** + * Certificate/Key used for authentication. Can be left empty for no authentication. + * @type {string} + * @memberof DockerServiceConnection + */ + tlsAuthentication?: string | null; +} + +/** + * Check if a given object implements the DockerServiceConnection interface. + */ +export function instanceOfDockerServiceConnection(value: object): value is DockerServiceConnection { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + if (!("url" in value) || value["url"] === undefined) return false; + return true; +} + +export function DockerServiceConnectionFromJSON(json: any): DockerServiceConnection { + return DockerServiceConnectionFromJSONTyped(json, false); +} + +export function DockerServiceConnectionFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): DockerServiceConnection { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + local: json["local"] == null ? undefined : json["local"], + component: json["component"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + url: json["url"], + tlsVerification: json["tls_verification"] == null ? undefined : json["tls_verification"], + tlsAuthentication: + json["tls_authentication"] == null ? undefined : json["tls_authentication"], + }; +} + +export function DockerServiceConnectionToJSON(json: any): DockerServiceConnection { + return DockerServiceConnectionToJSONTyped(json, false); +} + +export function DockerServiceConnectionToJSONTyped( + value?: Omit< + DockerServiceConnection, + "pk" | "component" | "verbose_name" | "verbose_name_plural" | "meta_model_name" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + local: value["local"], + url: value["url"], + tls_verification: value["tlsVerification"], + tls_authentication: value["tlsAuthentication"], + }; +} diff --git a/packages/client-ts/src/models/DockerServiceConnectionRequest.ts b/packages/client-ts/src/models/DockerServiceConnectionRequest.ts new file mode 100644 index 0000000000..dd297a7568 --- /dev/null +++ b/packages/client-ts/src/models/DockerServiceConnectionRequest.ts @@ -0,0 +1,104 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * DockerServiceConnection Serializer + * @export + * @interface DockerServiceConnectionRequest + */ +export interface DockerServiceConnectionRequest { + /** + * + * @type {string} + * @memberof DockerServiceConnectionRequest + */ + name: string; + /** + * If enabled, use the local connection. Required Docker socket/Kubernetes Integration + * @type {boolean} + * @memberof DockerServiceConnectionRequest + */ + local?: boolean; + /** + * Can be in the format of 'unix://' when connecting to a local docker daemon, or 'https://:2376' when connecting to a remote system. + * @type {string} + * @memberof DockerServiceConnectionRequest + */ + url: string; + /** + * CA which the endpoint's Certificate is verified against. Can be left empty for no validation. + * @type {string} + * @memberof DockerServiceConnectionRequest + */ + tlsVerification?: string | null; + /** + * Certificate/Key used for authentication. Can be left empty for no authentication. + * @type {string} + * @memberof DockerServiceConnectionRequest + */ + tlsAuthentication?: string | null; +} + +/** + * Check if a given object implements the DockerServiceConnectionRequest interface. + */ +export function instanceOfDockerServiceConnectionRequest( + value: object, +): value is DockerServiceConnectionRequest { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("url" in value) || value["url"] === undefined) return false; + return true; +} + +export function DockerServiceConnectionRequestFromJSON(json: any): DockerServiceConnectionRequest { + return DockerServiceConnectionRequestFromJSONTyped(json, false); +} + +export function DockerServiceConnectionRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): DockerServiceConnectionRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + local: json["local"] == null ? undefined : json["local"], + url: json["url"], + tlsVerification: json["tls_verification"] == null ? undefined : json["tls_verification"], + tlsAuthentication: + json["tls_authentication"] == null ? undefined : json["tls_authentication"], + }; +} + +export function DockerServiceConnectionRequestToJSON(json: any): DockerServiceConnectionRequest { + return DockerServiceConnectionRequestToJSONTyped(json, false); +} + +export function DockerServiceConnectionRequestToJSONTyped( + value?: DockerServiceConnectionRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + local: value["local"], + url: value["url"], + tls_verification: value["tlsVerification"], + tls_authentication: value["tlsAuthentication"], + }; +} diff --git a/packages/client-ts/src/models/Domain.ts b/packages/client-ts/src/models/Domain.ts new file mode 100644 index 0000000000..e531e1f1c2 --- /dev/null +++ b/packages/client-ts/src/models/Domain.ts @@ -0,0 +1,90 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Domain Serializer + * @export + * @interface Domain + */ +export interface Domain { + /** + * + * @type {number} + * @memberof Domain + */ + readonly id: number; + /** + * + * @type {string} + * @memberof Domain + */ + domain: string; + /** + * + * @type {boolean} + * @memberof Domain + */ + isPrimary?: boolean; + /** + * + * @type {string} + * @memberof Domain + */ + tenant: string; +} + +/** + * Check if a given object implements the Domain interface. + */ +export function instanceOfDomain(value: object): value is Domain { + if (!("id" in value) || value["id"] === undefined) return false; + if (!("domain" in value) || value["domain"] === undefined) return false; + if (!("tenant" in value) || value["tenant"] === undefined) return false; + return true; +} + +export function DomainFromJSON(json: any): Domain { + return DomainFromJSONTyped(json, false); +} + +export function DomainFromJSONTyped(json: any, ignoreDiscriminator: boolean): Domain { + if (json == null) { + return json; + } + return { + id: json["id"], + domain: json["domain"], + isPrimary: json["is_primary"] == null ? undefined : json["is_primary"], + tenant: json["tenant"], + }; +} + +export function DomainToJSON(json: any): Domain { + return DomainToJSONTyped(json, false); +} + +export function DomainToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + domain: value["domain"], + is_primary: value["isPrimary"], + tenant: value["tenant"], + }; +} diff --git a/packages/client-ts/src/models/DomainRequest.ts b/packages/client-ts/src/models/DomainRequest.ts new file mode 100644 index 0000000000..16ef4c642b --- /dev/null +++ b/packages/client-ts/src/models/DomainRequest.ts @@ -0,0 +1,82 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Domain Serializer + * @export + * @interface DomainRequest + */ +export interface DomainRequest { + /** + * + * @type {string} + * @memberof DomainRequest + */ + domain: string; + /** + * + * @type {boolean} + * @memberof DomainRequest + */ + isPrimary?: boolean; + /** + * + * @type {string} + * @memberof DomainRequest + */ + tenant: string; +} + +/** + * Check if a given object implements the DomainRequest interface. + */ +export function instanceOfDomainRequest(value: object): value is DomainRequest { + if (!("domain" in value) || value["domain"] === undefined) return false; + if (!("tenant" in value) || value["tenant"] === undefined) return false; + return true; +} + +export function DomainRequestFromJSON(json: any): DomainRequest { + return DomainRequestFromJSONTyped(json, false); +} + +export function DomainRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): DomainRequest { + if (json == null) { + return json; + } + return { + domain: json["domain"], + isPrimary: json["is_primary"] == null ? undefined : json["is_primary"], + tenant: json["tenant"], + }; +} + +export function DomainRequestToJSON(json: any): DomainRequest { + return DomainRequestToJSONTyped(json, false); +} + +export function DomainRequestToJSONTyped( + value?: DomainRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + domain: value["domain"], + is_primary: value["isPrimary"], + tenant: value["tenant"], + }; +} diff --git a/packages/client-ts/src/models/DummyChallenge.ts b/packages/client-ts/src/models/DummyChallenge.ts new file mode 100644 index 0000000000..4d46d1241b --- /dev/null +++ b/packages/client-ts/src/models/DummyChallenge.ts @@ -0,0 +1,97 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { ContextualFlowInfo } from "./ContextualFlowInfo"; +import { ContextualFlowInfoFromJSON, ContextualFlowInfoToJSON } from "./ContextualFlowInfo"; +import type { ErrorDetail } from "./ErrorDetail"; + +/** + * Dummy challenge + * @export + * @interface DummyChallenge + */ +export interface DummyChallenge { + /** + * + * @type {ContextualFlowInfo} + * @memberof DummyChallenge + */ + flowInfo?: ContextualFlowInfo; + /** + * + * @type {string} + * @memberof DummyChallenge + */ + component?: string; + /** + * + * @type {{ [key: string]: Array; }} + * @memberof DummyChallenge + */ + responseErrors?: { [key: string]: Array }; + /** + * + * @type {string} + * @memberof DummyChallenge + */ + name: string; +} + +/** + * Check if a given object implements the DummyChallenge interface. + */ +export function instanceOfDummyChallenge(value: object): value is DummyChallenge { + if (!("name" in value) || value["name"] === undefined) return false; + return true; +} + +export function DummyChallengeFromJSON(json: any): DummyChallenge { + return DummyChallengeFromJSONTyped(json, false); +} + +export function DummyChallengeFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): DummyChallenge { + if (json == null) { + return json; + } + return { + flowInfo: + json["flow_info"] == null ? undefined : ContextualFlowInfoFromJSON(json["flow_info"]), + component: json["component"] == null ? undefined : json["component"], + responseErrors: json["response_errors"] == null ? undefined : json["response_errors"], + name: json["name"], + }; +} + +export function DummyChallengeToJSON(json: any): DummyChallenge { + return DummyChallengeToJSONTyped(json, false); +} + +export function DummyChallengeToJSONTyped( + value?: DummyChallenge | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + flow_info: ContextualFlowInfoToJSON(value["flowInfo"]), + component: value["component"], + response_errors: value["responseErrors"], + name: value["name"], + }; +} diff --git a/packages/client-ts/src/models/DummyChallengeResponseRequest.ts b/packages/client-ts/src/models/DummyChallengeResponseRequest.ts new file mode 100644 index 0000000000..53e3c398fc --- /dev/null +++ b/packages/client-ts/src/models/DummyChallengeResponseRequest.ts @@ -0,0 +1,69 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Dummy challenge response + * @export + * @interface DummyChallengeResponseRequest + */ +export interface DummyChallengeResponseRequest { + /** + * + * @type {string} + * @memberof DummyChallengeResponseRequest + */ + component?: string; +} + +/** + * Check if a given object implements the DummyChallengeResponseRequest interface. + */ +export function instanceOfDummyChallengeResponseRequest( + value: object, +): value is DummyChallengeResponseRequest { + return true; +} + +export function DummyChallengeResponseRequestFromJSON(json: any): DummyChallengeResponseRequest { + return DummyChallengeResponseRequestFromJSONTyped(json, false); +} + +export function DummyChallengeResponseRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): DummyChallengeResponseRequest { + if (json == null) { + return json; + } + return { + component: json["component"] == null ? undefined : json["component"], + }; +} + +export function DummyChallengeResponseRequestToJSON(json: any): DummyChallengeResponseRequest { + return DummyChallengeResponseRequestToJSONTyped(json, false); +} + +export function DummyChallengeResponseRequestToJSONTyped( + value?: DummyChallengeResponseRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + component: value["component"], + }; +} diff --git a/packages/client-ts/src/models/DummyPolicy.ts b/packages/client-ts/src/models/DummyPolicy.ts new file mode 100644 index 0000000000..451dbb24df --- /dev/null +++ b/packages/client-ts/src/models/DummyPolicy.ts @@ -0,0 +1,148 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Dummy Policy Serializer + * @export + * @interface DummyPolicy + */ +export interface DummyPolicy { + /** + * + * @type {string} + * @memberof DummyPolicy + */ + readonly pk: string; + /** + * + * @type {string} + * @memberof DummyPolicy + */ + name: string; + /** + * When this option is enabled, all executions of this policy will be logged. By default, only execution errors are logged. + * @type {boolean} + * @memberof DummyPolicy + */ + executionLogging?: boolean; + /** + * Get object component so that we know how to edit the object + * @type {string} + * @memberof DummyPolicy + */ + readonly component: string; + /** + * Return object's verbose_name + * @type {string} + * @memberof DummyPolicy + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof DummyPolicy + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof DummyPolicy + */ + readonly metaModelName: string; + /** + * Return objects policy is bound to + * @type {number} + * @memberof DummyPolicy + */ + readonly boundTo: number; + /** + * + * @type {boolean} + * @memberof DummyPolicy + */ + result?: boolean; + /** + * + * @type {number} + * @memberof DummyPolicy + */ + waitMin?: number; + /** + * + * @type {number} + * @memberof DummyPolicy + */ + waitMax?: number; +} + +/** + * Check if a given object implements the DummyPolicy interface. + */ +export function instanceOfDummyPolicy(value: object): value is DummyPolicy { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + if (!("boundTo" in value) || value["boundTo"] === undefined) return false; + return true; +} + +export function DummyPolicyFromJSON(json: any): DummyPolicy { + return DummyPolicyFromJSONTyped(json, false); +} + +export function DummyPolicyFromJSONTyped(json: any, ignoreDiscriminator: boolean): DummyPolicy { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + executionLogging: json["execution_logging"] == null ? undefined : json["execution_logging"], + component: json["component"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + boundTo: json["bound_to"], + result: json["result"] == null ? undefined : json["result"], + waitMin: json["wait_min"] == null ? undefined : json["wait_min"], + waitMax: json["wait_max"] == null ? undefined : json["wait_max"], + }; +} + +export function DummyPolicyToJSON(json: any): DummyPolicy { + return DummyPolicyToJSONTyped(json, false); +} + +export function DummyPolicyToJSONTyped( + value?: Omit< + DummyPolicy, + "pk" | "component" | "verbose_name" | "verbose_name_plural" | "meta_model_name" | "bound_to" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + execution_logging: value["executionLogging"], + result: value["result"], + wait_min: value["waitMin"], + wait_max: value["waitMax"], + }; +} diff --git a/packages/client-ts/src/models/DummyPolicyRequest.ts b/packages/client-ts/src/models/DummyPolicyRequest.ts new file mode 100644 index 0000000000..5c7120a6b5 --- /dev/null +++ b/packages/client-ts/src/models/DummyPolicyRequest.ts @@ -0,0 +1,100 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Dummy Policy Serializer + * @export + * @interface DummyPolicyRequest + */ +export interface DummyPolicyRequest { + /** + * + * @type {string} + * @memberof DummyPolicyRequest + */ + name: string; + /** + * When this option is enabled, all executions of this policy will be logged. By default, only execution errors are logged. + * @type {boolean} + * @memberof DummyPolicyRequest + */ + executionLogging?: boolean; + /** + * + * @type {boolean} + * @memberof DummyPolicyRequest + */ + result?: boolean; + /** + * + * @type {number} + * @memberof DummyPolicyRequest + */ + waitMin?: number; + /** + * + * @type {number} + * @memberof DummyPolicyRequest + */ + waitMax?: number; +} + +/** + * Check if a given object implements the DummyPolicyRequest interface. + */ +export function instanceOfDummyPolicyRequest(value: object): value is DummyPolicyRequest { + if (!("name" in value) || value["name"] === undefined) return false; + return true; +} + +export function DummyPolicyRequestFromJSON(json: any): DummyPolicyRequest { + return DummyPolicyRequestFromJSONTyped(json, false); +} + +export function DummyPolicyRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): DummyPolicyRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + executionLogging: json["execution_logging"] == null ? undefined : json["execution_logging"], + result: json["result"] == null ? undefined : json["result"], + waitMin: json["wait_min"] == null ? undefined : json["wait_min"], + waitMax: json["wait_max"] == null ? undefined : json["wait_max"], + }; +} + +export function DummyPolicyRequestToJSON(json: any): DummyPolicyRequest { + return DummyPolicyRequestToJSONTyped(json, false); +} + +export function DummyPolicyRequestToJSONTyped( + value?: DummyPolicyRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + execution_logging: value["executionLogging"], + result: value["result"], + wait_min: value["waitMin"], + wait_max: value["waitMax"], + }; +} diff --git a/packages/client-ts/src/models/DummyStage.ts b/packages/client-ts/src/models/DummyStage.ts new file mode 100644 index 0000000000..895e91730d --- /dev/null +++ b/packages/client-ts/src/models/DummyStage.ts @@ -0,0 +1,127 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { FlowSet } from "./FlowSet"; +import { FlowSetFromJSON } from "./FlowSet"; + +/** + * DummyStage Serializer + * @export + * @interface DummyStage + */ +export interface DummyStage { + /** + * + * @type {string} + * @memberof DummyStage + */ + readonly pk: string; + /** + * + * @type {string} + * @memberof DummyStage + */ + name: string; + /** + * Get object type so that we know how to edit the object + * @type {string} + * @memberof DummyStage + */ + readonly component: string; + /** + * Return object's verbose_name + * @type {string} + * @memberof DummyStage + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof DummyStage + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof DummyStage + */ + readonly metaModelName: string; + /** + * + * @type {Array} + * @memberof DummyStage + */ + readonly flowSet: Array; + /** + * + * @type {boolean} + * @memberof DummyStage + */ + throwError?: boolean; +} + +/** + * Check if a given object implements the DummyStage interface. + */ +export function instanceOfDummyStage(value: object): value is DummyStage { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + if (!("flowSet" in value) || value["flowSet"] === undefined) return false; + return true; +} + +export function DummyStageFromJSON(json: any): DummyStage { + return DummyStageFromJSONTyped(json, false); +} + +export function DummyStageFromJSONTyped(json: any, ignoreDiscriminator: boolean): DummyStage { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + component: json["component"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + flowSet: (json["flow_set"] as Array).map(FlowSetFromJSON), + throwError: json["throw_error"] == null ? undefined : json["throw_error"], + }; +} + +export function DummyStageToJSON(json: any): DummyStage { + return DummyStageToJSONTyped(json, false); +} + +export function DummyStageToJSONTyped( + value?: Omit< + DummyStage, + "pk" | "component" | "verbose_name" | "verbose_name_plural" | "meta_model_name" | "flow_set" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + throw_error: value["throwError"], + }; +} diff --git a/packages/client-ts/src/models/DummyStageRequest.ts b/packages/client-ts/src/models/DummyStageRequest.ts new file mode 100644 index 0000000000..631dd2690b --- /dev/null +++ b/packages/client-ts/src/models/DummyStageRequest.ts @@ -0,0 +1,76 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * DummyStage Serializer + * @export + * @interface DummyStageRequest + */ +export interface DummyStageRequest { + /** + * + * @type {string} + * @memberof DummyStageRequest + */ + name: string; + /** + * + * @type {boolean} + * @memberof DummyStageRequest + */ + throwError?: boolean; +} + +/** + * Check if a given object implements the DummyStageRequest interface. + */ +export function instanceOfDummyStageRequest(value: object): value is DummyStageRequest { + if (!("name" in value) || value["name"] === undefined) return false; + return true; +} + +export function DummyStageRequestFromJSON(json: any): DummyStageRequest { + return DummyStageRequestFromJSONTyped(json, false); +} + +export function DummyStageRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): DummyStageRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + throwError: json["throw_error"] == null ? undefined : json["throw_error"], + }; +} + +export function DummyStageRequestToJSON(json: any): DummyStageRequest { + return DummyStageRequestToJSONTyped(json, false); +} + +export function DummyStageRequestToJSONTyped( + value?: DummyStageRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + throw_error: value["throwError"], + }; +} diff --git a/packages/client-ts/src/models/DuoDevice.ts b/packages/client-ts/src/models/DuoDevice.ts new file mode 100644 index 0000000000..5ce2ca29cf --- /dev/null +++ b/packages/client-ts/src/models/DuoDevice.ts @@ -0,0 +1,84 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { PartialUser } from "./PartialUser"; +import { PartialUserFromJSON } from "./PartialUser"; + +/** + * Serializer for Duo authenticator devices + * @export + * @interface DuoDevice + */ +export interface DuoDevice { + /** + * + * @type {number} + * @memberof DuoDevice + */ + readonly pk: number; + /** + * The human-readable name of this device. + * @type {string} + * @memberof DuoDevice + */ + name: string; + /** + * + * @type {PartialUser} + * @memberof DuoDevice + */ + readonly user: PartialUser; +} + +/** + * Check if a given object implements the DuoDevice interface. + */ +export function instanceOfDuoDevice(value: object): value is DuoDevice { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("user" in value) || value["user"] === undefined) return false; + return true; +} + +export function DuoDeviceFromJSON(json: any): DuoDevice { + return DuoDeviceFromJSONTyped(json, false); +} + +export function DuoDeviceFromJSONTyped(json: any, ignoreDiscriminator: boolean): DuoDevice { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + user: PartialUserFromJSON(json["user"]), + }; +} + +export function DuoDeviceToJSON(json: any): DuoDevice { + return DuoDeviceToJSONTyped(json, false); +} + +export function DuoDeviceToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + }; +} diff --git a/packages/client-ts/src/models/DuoDeviceEnrollmentStatus.ts b/packages/client-ts/src/models/DuoDeviceEnrollmentStatus.ts new file mode 100644 index 0000000000..98afd741bb --- /dev/null +++ b/packages/client-ts/src/models/DuoDeviceEnrollmentStatus.ts @@ -0,0 +1,73 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { DuoResponseEnum } from "./DuoResponseEnum"; +import { DuoResponseEnumFromJSON, DuoResponseEnumToJSON } from "./DuoResponseEnum"; + +/** + * + * @export + * @interface DuoDeviceEnrollmentStatus + */ +export interface DuoDeviceEnrollmentStatus { + /** + * + * @type {DuoResponseEnum} + * @memberof DuoDeviceEnrollmentStatus + */ + duoResponse: DuoResponseEnum; +} + +/** + * Check if a given object implements the DuoDeviceEnrollmentStatus interface. + */ +export function instanceOfDuoDeviceEnrollmentStatus( + value: object, +): value is DuoDeviceEnrollmentStatus { + if (!("duoResponse" in value) || value["duoResponse"] === undefined) return false; + return true; +} + +export function DuoDeviceEnrollmentStatusFromJSON(json: any): DuoDeviceEnrollmentStatus { + return DuoDeviceEnrollmentStatusFromJSONTyped(json, false); +} + +export function DuoDeviceEnrollmentStatusFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): DuoDeviceEnrollmentStatus { + if (json == null) { + return json; + } + return { + duoResponse: DuoResponseEnumFromJSON(json["duo_response"]), + }; +} + +export function DuoDeviceEnrollmentStatusToJSON(json: any): DuoDeviceEnrollmentStatus { + return DuoDeviceEnrollmentStatusToJSONTyped(json, false); +} + +export function DuoDeviceEnrollmentStatusToJSONTyped( + value?: DuoDeviceEnrollmentStatus | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + duo_response: DuoResponseEnumToJSON(value["duoResponse"]), + }; +} diff --git a/packages/client-ts/src/models/DuoDeviceRequest.ts b/packages/client-ts/src/models/DuoDeviceRequest.ts new file mode 100644 index 0000000000..b5a227d055 --- /dev/null +++ b/packages/client-ts/src/models/DuoDeviceRequest.ts @@ -0,0 +1,68 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Serializer for Duo authenticator devices + * @export + * @interface DuoDeviceRequest + */ +export interface DuoDeviceRequest { + /** + * The human-readable name of this device. + * @type {string} + * @memberof DuoDeviceRequest + */ + name: string; +} + +/** + * Check if a given object implements the DuoDeviceRequest interface. + */ +export function instanceOfDuoDeviceRequest(value: object): value is DuoDeviceRequest { + if (!("name" in value) || value["name"] === undefined) return false; + return true; +} + +export function DuoDeviceRequestFromJSON(json: any): DuoDeviceRequest { + return DuoDeviceRequestFromJSONTyped(json, false); +} + +export function DuoDeviceRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): DuoDeviceRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + }; +} + +export function DuoDeviceRequestToJSON(json: any): DuoDeviceRequest { + return DuoDeviceRequestToJSONTyped(json, false); +} + +export function DuoDeviceRequestToJSONTyped( + value?: DuoDeviceRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + }; +} diff --git a/packages/client-ts/src/models/DuoResponseEnum.ts b/packages/client-ts/src/models/DuoResponseEnum.ts new file mode 100644 index 0000000000..850bf0c719 --- /dev/null +++ b/packages/client-ts/src/models/DuoResponseEnum.ts @@ -0,0 +1,58 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const DuoResponseEnum = { + Success: "success", + Waiting: "waiting", + Invalid: "invalid", + UnknownDefaultOpenApi: "11184809", +} as const; +export type DuoResponseEnum = (typeof DuoResponseEnum)[keyof typeof DuoResponseEnum]; + +export function instanceOfDuoResponseEnum(value: any): boolean { + for (const key in DuoResponseEnum) { + if (Object.prototype.hasOwnProperty.call(DuoResponseEnum, key)) { + if (DuoResponseEnum[key as keyof typeof DuoResponseEnum] === value) { + return true; + } + } + } + return false; +} + +export function DuoResponseEnumFromJSON(json: any): DuoResponseEnum { + return DuoResponseEnumFromJSONTyped(json, false); +} + +export function DuoResponseEnumFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): DuoResponseEnum { + return json as DuoResponseEnum; +} + +export function DuoResponseEnumToJSON(value?: DuoResponseEnum | null): any { + return value as any; +} + +export function DuoResponseEnumToJSONTyped( + value: any, + ignoreDiscriminator: boolean, +): DuoResponseEnum { + return value as DuoResponseEnum; +} diff --git a/packages/client-ts/src/models/EmailChallenge.ts b/packages/client-ts/src/models/EmailChallenge.ts new file mode 100644 index 0000000000..c0e8471d2a --- /dev/null +++ b/packages/client-ts/src/models/EmailChallenge.ts @@ -0,0 +1,88 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { ContextualFlowInfo } from "./ContextualFlowInfo"; +import { ContextualFlowInfoFromJSON, ContextualFlowInfoToJSON } from "./ContextualFlowInfo"; +import type { ErrorDetail } from "./ErrorDetail"; + +/** + * Email challenge + * @export + * @interface EmailChallenge + */ +export interface EmailChallenge { + /** + * + * @type {ContextualFlowInfo} + * @memberof EmailChallenge + */ + flowInfo?: ContextualFlowInfo; + /** + * + * @type {string} + * @memberof EmailChallenge + */ + component?: string; + /** + * + * @type {{ [key: string]: Array; }} + * @memberof EmailChallenge + */ + responseErrors?: { [key: string]: Array }; +} + +/** + * Check if a given object implements the EmailChallenge interface. + */ +export function instanceOfEmailChallenge(value: object): value is EmailChallenge { + return true; +} + +export function EmailChallengeFromJSON(json: any): EmailChallenge { + return EmailChallengeFromJSONTyped(json, false); +} + +export function EmailChallengeFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): EmailChallenge { + if (json == null) { + return json; + } + return { + flowInfo: + json["flow_info"] == null ? undefined : ContextualFlowInfoFromJSON(json["flow_info"]), + component: json["component"] == null ? undefined : json["component"], + responseErrors: json["response_errors"] == null ? undefined : json["response_errors"], + }; +} + +export function EmailChallengeToJSON(json: any): EmailChallenge { + return EmailChallengeToJSONTyped(json, false); +} + +export function EmailChallengeToJSONTyped( + value?: EmailChallenge | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + flow_info: ContextualFlowInfoToJSON(value["flowInfo"]), + component: value["component"], + response_errors: value["responseErrors"], + }; +} diff --git a/packages/client-ts/src/models/EmailChallengeResponseRequest.ts b/packages/client-ts/src/models/EmailChallengeResponseRequest.ts new file mode 100644 index 0000000000..9504612354 --- /dev/null +++ b/packages/client-ts/src/models/EmailChallengeResponseRequest.ts @@ -0,0 +1,70 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Email challenge resposen. No fields. This challenge is + * always declared invalid to give the user a chance to retry + * @export + * @interface EmailChallengeResponseRequest + */ +export interface EmailChallengeResponseRequest { + /** + * + * @type {string} + * @memberof EmailChallengeResponseRequest + */ + component?: string; +} + +/** + * Check if a given object implements the EmailChallengeResponseRequest interface. + */ +export function instanceOfEmailChallengeResponseRequest( + value: object, +): value is EmailChallengeResponseRequest { + return true; +} + +export function EmailChallengeResponseRequestFromJSON(json: any): EmailChallengeResponseRequest { + return EmailChallengeResponseRequestFromJSONTyped(json, false); +} + +export function EmailChallengeResponseRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): EmailChallengeResponseRequest { + if (json == null) { + return json; + } + return { + component: json["component"] == null ? undefined : json["component"], + }; +} + +export function EmailChallengeResponseRequestToJSON(json: any): EmailChallengeResponseRequest { + return EmailChallengeResponseRequestToJSONTyped(json, false); +} + +export function EmailChallengeResponseRequestToJSONTyped( + value?: EmailChallengeResponseRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + component: value["component"], + }; +} diff --git a/packages/client-ts/src/models/EmailDevice.ts b/packages/client-ts/src/models/EmailDevice.ts new file mode 100644 index 0000000000..4d5a018a12 --- /dev/null +++ b/packages/client-ts/src/models/EmailDevice.ts @@ -0,0 +1,92 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { PartialUser } from "./PartialUser"; +import { PartialUserFromJSON } from "./PartialUser"; + +/** + * Serializer for email authenticator devices + * @export + * @interface EmailDevice + */ +export interface EmailDevice { + /** + * The human-readable name of this device. + * @type {string} + * @memberof EmailDevice + */ + name: string; + /** + * + * @type {number} + * @memberof EmailDevice + */ + readonly pk: number; + /** + * + * @type {string} + * @memberof EmailDevice + */ + readonly email: string; + /** + * + * @type {PartialUser} + * @memberof EmailDevice + */ + readonly user: PartialUser; +} + +/** + * Check if a given object implements the EmailDevice interface. + */ +export function instanceOfEmailDevice(value: object): value is EmailDevice { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("email" in value) || value["email"] === undefined) return false; + if (!("user" in value) || value["user"] === undefined) return false; + return true; +} + +export function EmailDeviceFromJSON(json: any): EmailDevice { + return EmailDeviceFromJSONTyped(json, false); +} + +export function EmailDeviceFromJSONTyped(json: any, ignoreDiscriminator: boolean): EmailDevice { + if (json == null) { + return json; + } + return { + name: json["name"], + pk: json["pk"], + email: json["email"], + user: PartialUserFromJSON(json["user"]), + }; +} + +export function EmailDeviceToJSON(json: any): EmailDevice { + return EmailDeviceToJSONTyped(json, false); +} + +export function EmailDeviceToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + }; +} diff --git a/packages/client-ts/src/models/EmailDeviceRequest.ts b/packages/client-ts/src/models/EmailDeviceRequest.ts new file mode 100644 index 0000000000..f764f05dfb --- /dev/null +++ b/packages/client-ts/src/models/EmailDeviceRequest.ts @@ -0,0 +1,68 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Serializer for email authenticator devices + * @export + * @interface EmailDeviceRequest + */ +export interface EmailDeviceRequest { + /** + * The human-readable name of this device. + * @type {string} + * @memberof EmailDeviceRequest + */ + name: string; +} + +/** + * Check if a given object implements the EmailDeviceRequest interface. + */ +export function instanceOfEmailDeviceRequest(value: object): value is EmailDeviceRequest { + if (!("name" in value) || value["name"] === undefined) return false; + return true; +} + +export function EmailDeviceRequestFromJSON(json: any): EmailDeviceRequest { + return EmailDeviceRequestFromJSONTyped(json, false); +} + +export function EmailDeviceRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): EmailDeviceRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + }; +} + +export function EmailDeviceRequestToJSON(json: any): EmailDeviceRequest { + return EmailDeviceRequestToJSONTyped(json, false); +} + +export function EmailDeviceRequestToJSONTyped( + value?: EmailDeviceRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + }; +} diff --git a/packages/client-ts/src/models/EmailStage.ts b/packages/client-ts/src/models/EmailStage.ts new file mode 100644 index 0000000000..43e07de982 --- /dev/null +++ b/packages/client-ts/src/models/EmailStage.ts @@ -0,0 +1,235 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { FlowSet } from "./FlowSet"; +import { FlowSetFromJSON } from "./FlowSet"; + +/** + * EmailStage Serializer + * @export + * @interface EmailStage + */ +export interface EmailStage { + /** + * + * @type {string} + * @memberof EmailStage + */ + readonly pk: string; + /** + * + * @type {string} + * @memberof EmailStage + */ + name: string; + /** + * Get object type so that we know how to edit the object + * @type {string} + * @memberof EmailStage + */ + readonly component: string; + /** + * Return object's verbose_name + * @type {string} + * @memberof EmailStage + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof EmailStage + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof EmailStage + */ + readonly metaModelName: string; + /** + * + * @type {Array} + * @memberof EmailStage + */ + readonly flowSet: Array; + /** + * When enabled, global Email connection settings will be used and connection settings below will be ignored. + * @type {boolean} + * @memberof EmailStage + */ + useGlobalSettings?: boolean; + /** + * + * @type {string} + * @memberof EmailStage + */ + host?: string; + /** + * + * @type {number} + * @memberof EmailStage + */ + port?: number; + /** + * + * @type {string} + * @memberof EmailStage + */ + username?: string; + /** + * + * @type {boolean} + * @memberof EmailStage + */ + useTls?: boolean; + /** + * + * @type {boolean} + * @memberof EmailStage + */ + useSsl?: boolean; + /** + * + * @type {number} + * @memberof EmailStage + */ + timeout?: number; + /** + * + * @type {string} + * @memberof EmailStage + */ + fromAddress?: string; + /** + * Time the token sent is valid (Format: hours=3,minutes=17,seconds=300). + * @type {string} + * @memberof EmailStage + */ + tokenExpiry?: string; + /** + * + * @type {string} + * @memberof EmailStage + */ + subject?: string; + /** + * + * @type {string} + * @memberof EmailStage + */ + template?: string; + /** + * Activate users upon completion of stage. + * @type {boolean} + * @memberof EmailStage + */ + activateUserOnSuccess?: boolean; + /** + * + * @type {number} + * @memberof EmailStage + */ + recoveryMaxAttempts?: number; + /** + * The time window used to count recent account recovery attempts. If the number of attempts exceed recovery_max_attempts within this period, further attempts will be rate-limited. (Format: hours=1;minutes=2;seconds=3). + * @type {string} + * @memberof EmailStage + */ + recoveryCacheTimeout?: string; +} + +/** + * Check if a given object implements the EmailStage interface. + */ +export function instanceOfEmailStage(value: object): value is EmailStage { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + if (!("flowSet" in value) || value["flowSet"] === undefined) return false; + return true; +} + +export function EmailStageFromJSON(json: any): EmailStage { + return EmailStageFromJSONTyped(json, false); +} + +export function EmailStageFromJSONTyped(json: any, ignoreDiscriminator: boolean): EmailStage { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + component: json["component"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + flowSet: (json["flow_set"] as Array).map(FlowSetFromJSON), + useGlobalSettings: + json["use_global_settings"] == null ? undefined : json["use_global_settings"], + host: json["host"] == null ? undefined : json["host"], + port: json["port"] == null ? undefined : json["port"], + username: json["username"] == null ? undefined : json["username"], + useTls: json["use_tls"] == null ? undefined : json["use_tls"], + useSsl: json["use_ssl"] == null ? undefined : json["use_ssl"], + timeout: json["timeout"] == null ? undefined : json["timeout"], + fromAddress: json["from_address"] == null ? undefined : json["from_address"], + tokenExpiry: json["token_expiry"] == null ? undefined : json["token_expiry"], + subject: json["subject"] == null ? undefined : json["subject"], + template: json["template"] == null ? undefined : json["template"], + activateUserOnSuccess: + json["activate_user_on_success"] == null ? undefined : json["activate_user_on_success"], + recoveryMaxAttempts: + json["recovery_max_attempts"] == null ? undefined : json["recovery_max_attempts"], + recoveryCacheTimeout: + json["recovery_cache_timeout"] == null ? undefined : json["recovery_cache_timeout"], + }; +} + +export function EmailStageToJSON(json: any): EmailStage { + return EmailStageToJSONTyped(json, false); +} + +export function EmailStageToJSONTyped( + value?: Omit< + EmailStage, + "pk" | "component" | "verbose_name" | "verbose_name_plural" | "meta_model_name" | "flow_set" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + use_global_settings: value["useGlobalSettings"], + host: value["host"], + port: value["port"], + username: value["username"], + use_tls: value["useTls"], + use_ssl: value["useSsl"], + timeout: value["timeout"], + from_address: value["fromAddress"], + token_expiry: value["tokenExpiry"], + subject: value["subject"], + template: value["template"], + activate_user_on_success: value["activateUserOnSuccess"], + recovery_max_attempts: value["recoveryMaxAttempts"], + recovery_cache_timeout: value["recoveryCacheTimeout"], + }; +} diff --git a/packages/client-ts/src/models/EmailStageRequest.ts b/packages/client-ts/src/models/EmailStageRequest.ts new file mode 100644 index 0000000000..adc9400003 --- /dev/null +++ b/packages/client-ts/src/models/EmailStageRequest.ts @@ -0,0 +1,192 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * EmailStage Serializer + * @export + * @interface EmailStageRequest + */ +export interface EmailStageRequest { + /** + * + * @type {string} + * @memberof EmailStageRequest + */ + name: string; + /** + * When enabled, global Email connection settings will be used and connection settings below will be ignored. + * @type {boolean} + * @memberof EmailStageRequest + */ + useGlobalSettings?: boolean; + /** + * + * @type {string} + * @memberof EmailStageRequest + */ + host?: string; + /** + * + * @type {number} + * @memberof EmailStageRequest + */ + port?: number; + /** + * + * @type {string} + * @memberof EmailStageRequest + */ + username?: string; + /** + * + * @type {string} + * @memberof EmailStageRequest + */ + password?: string; + /** + * + * @type {boolean} + * @memberof EmailStageRequest + */ + useTls?: boolean; + /** + * + * @type {boolean} + * @memberof EmailStageRequest + */ + useSsl?: boolean; + /** + * + * @type {number} + * @memberof EmailStageRequest + */ + timeout?: number; + /** + * + * @type {string} + * @memberof EmailStageRequest + */ + fromAddress?: string; + /** + * Time the token sent is valid (Format: hours=3,minutes=17,seconds=300). + * @type {string} + * @memberof EmailStageRequest + */ + tokenExpiry?: string; + /** + * + * @type {string} + * @memberof EmailStageRequest + */ + subject?: string; + /** + * + * @type {string} + * @memberof EmailStageRequest + */ + template?: string; + /** + * Activate users upon completion of stage. + * @type {boolean} + * @memberof EmailStageRequest + */ + activateUserOnSuccess?: boolean; + /** + * + * @type {number} + * @memberof EmailStageRequest + */ + recoveryMaxAttempts?: number; + /** + * The time window used to count recent account recovery attempts. If the number of attempts exceed recovery_max_attempts within this period, further attempts will be rate-limited. (Format: hours=1;minutes=2;seconds=3). + * @type {string} + * @memberof EmailStageRequest + */ + recoveryCacheTimeout?: string; +} + +/** + * Check if a given object implements the EmailStageRequest interface. + */ +export function instanceOfEmailStageRequest(value: object): value is EmailStageRequest { + if (!("name" in value) || value["name"] === undefined) return false; + return true; +} + +export function EmailStageRequestFromJSON(json: any): EmailStageRequest { + return EmailStageRequestFromJSONTyped(json, false); +} + +export function EmailStageRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): EmailStageRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + useGlobalSettings: + json["use_global_settings"] == null ? undefined : json["use_global_settings"], + host: json["host"] == null ? undefined : json["host"], + port: json["port"] == null ? undefined : json["port"], + username: json["username"] == null ? undefined : json["username"], + password: json["password"] == null ? undefined : json["password"], + useTls: json["use_tls"] == null ? undefined : json["use_tls"], + useSsl: json["use_ssl"] == null ? undefined : json["use_ssl"], + timeout: json["timeout"] == null ? undefined : json["timeout"], + fromAddress: json["from_address"] == null ? undefined : json["from_address"], + tokenExpiry: json["token_expiry"] == null ? undefined : json["token_expiry"], + subject: json["subject"] == null ? undefined : json["subject"], + template: json["template"] == null ? undefined : json["template"], + activateUserOnSuccess: + json["activate_user_on_success"] == null ? undefined : json["activate_user_on_success"], + recoveryMaxAttempts: + json["recovery_max_attempts"] == null ? undefined : json["recovery_max_attempts"], + recoveryCacheTimeout: + json["recovery_cache_timeout"] == null ? undefined : json["recovery_cache_timeout"], + }; +} + +export function EmailStageRequestToJSON(json: any): EmailStageRequest { + return EmailStageRequestToJSONTyped(json, false); +} + +export function EmailStageRequestToJSONTyped( + value?: EmailStageRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + use_global_settings: value["useGlobalSettings"], + host: value["host"], + port: value["port"], + username: value["username"], + password: value["password"], + use_tls: value["useTls"], + use_ssl: value["useSsl"], + timeout: value["timeout"], + from_address: value["fromAddress"], + token_expiry: value["tokenExpiry"], + subject: value["subject"], + template: value["template"], + activate_user_on_success: value["activateUserOnSuccess"], + recovery_max_attempts: value["recoveryMaxAttempts"], + recovery_cache_timeout: value["recoveryCacheTimeout"], + }; +} diff --git a/packages/client-ts/src/models/Endpoint.ts b/packages/client-ts/src/models/Endpoint.ts new file mode 100644 index 0000000000..c199e6b54e --- /dev/null +++ b/packages/client-ts/src/models/Endpoint.ts @@ -0,0 +1,158 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { EndpointAuthModeEnum } from "./EndpointAuthModeEnum"; +import { EndpointAuthModeEnumFromJSON, EndpointAuthModeEnumToJSON } from "./EndpointAuthModeEnum"; +import type { ProtocolEnum } from "./ProtocolEnum"; +import { ProtocolEnumFromJSON, ProtocolEnumToJSON } from "./ProtocolEnum"; +import type { RACProvider } from "./RACProvider"; +import { RACProviderFromJSON } from "./RACProvider"; + +/** + * Endpoint Serializer + * @export + * @interface Endpoint + */ +export interface Endpoint { + /** + * + * @type {string} + * @memberof Endpoint + */ + readonly pk: string; + /** + * + * @type {string} + * @memberof Endpoint + */ + name: string; + /** + * + * @type {number} + * @memberof Endpoint + */ + provider: number; + /** + * + * @type {RACProvider} + * @memberof Endpoint + */ + readonly providerObj: RACProvider; + /** + * + * @type {ProtocolEnum} + * @memberof Endpoint + */ + protocol: ProtocolEnum; + /** + * + * @type {string} + * @memberof Endpoint + */ + host: string; + /** + * + * @type {{ [key: string]: any; }} + * @memberof Endpoint + */ + settings?: { [key: string]: any }; + /** + * + * @type {Array} + * @memberof Endpoint + */ + propertyMappings?: Array; + /** + * + * @type {EndpointAuthModeEnum} + * @memberof Endpoint + */ + authMode: EndpointAuthModeEnum; + /** + * Build actual launch URL (the provider itself does not have one, just + * individual endpoints) + * @type {string} + * @memberof Endpoint + */ + readonly launchUrl: string | null; + /** + * + * @type {number} + * @memberof Endpoint + */ + maximumConnections?: number; +} + +/** + * Check if a given object implements the Endpoint interface. + */ +export function instanceOfEndpoint(value: object): value is Endpoint { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("provider" in value) || value["provider"] === undefined) return false; + if (!("providerObj" in value) || value["providerObj"] === undefined) return false; + if (!("protocol" in value) || value["protocol"] === undefined) return false; + if (!("host" in value) || value["host"] === undefined) return false; + if (!("authMode" in value) || value["authMode"] === undefined) return false; + if (!("launchUrl" in value) || value["launchUrl"] === undefined) return false; + return true; +} + +export function EndpointFromJSON(json: any): Endpoint { + return EndpointFromJSONTyped(json, false); +} + +export function EndpointFromJSONTyped(json: any, ignoreDiscriminator: boolean): Endpoint { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + provider: json["provider"], + providerObj: RACProviderFromJSON(json["provider_obj"]), + protocol: ProtocolEnumFromJSON(json["protocol"]), + host: json["host"], + settings: json["settings"] == null ? undefined : json["settings"], + propertyMappings: json["property_mappings"] == null ? undefined : json["property_mappings"], + authMode: EndpointAuthModeEnumFromJSON(json["auth_mode"]), + launchUrl: json["launch_url"], + maximumConnections: + json["maximum_connections"] == null ? undefined : json["maximum_connections"], + }; +} + +export function EndpointToJSON(json: any): Endpoint { + return EndpointToJSONTyped(json, false); +} + +export function EndpointToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + provider: value["provider"], + protocol: ProtocolEnumToJSON(value["protocol"]), + host: value["host"], + settings: value["settings"], + property_mappings: value["propertyMappings"], + auth_mode: EndpointAuthModeEnumToJSON(value["authMode"]), + maximum_connections: value["maximumConnections"], + }; +} diff --git a/packages/client-ts/src/models/EndpointAgentChallenge.ts b/packages/client-ts/src/models/EndpointAgentChallenge.ts new file mode 100644 index 0000000000..05d841e5d5 --- /dev/null +++ b/packages/client-ts/src/models/EndpointAgentChallenge.ts @@ -0,0 +1,107 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { ContextualFlowInfo } from "./ContextualFlowInfo"; +import { ContextualFlowInfoFromJSON, ContextualFlowInfoToJSON } from "./ContextualFlowInfo"; +import type { ErrorDetail } from "./ErrorDetail"; + +/** + * Signed challenge for authentik agent to respond to + * @export + * @interface EndpointAgentChallenge + */ +export interface EndpointAgentChallenge { + /** + * + * @type {ContextualFlowInfo} + * @memberof EndpointAgentChallenge + */ + flowInfo?: ContextualFlowInfo; + /** + * + * @type {string} + * @memberof EndpointAgentChallenge + */ + component?: string; + /** + * + * @type {{ [key: string]: Array; }} + * @memberof EndpointAgentChallenge + */ + responseErrors?: { [key: string]: Array }; + /** + * + * @type {string} + * @memberof EndpointAgentChallenge + */ + challenge: string; + /** + * + * @type {number} + * @memberof EndpointAgentChallenge + */ + challengeIdleTimeout: number; +} + +/** + * Check if a given object implements the EndpointAgentChallenge interface. + */ +export function instanceOfEndpointAgentChallenge(value: object): value is EndpointAgentChallenge { + if (!("challenge" in value) || value["challenge"] === undefined) return false; + if (!("challengeIdleTimeout" in value) || value["challengeIdleTimeout"] === undefined) + return false; + return true; +} + +export function EndpointAgentChallengeFromJSON(json: any): EndpointAgentChallenge { + return EndpointAgentChallengeFromJSONTyped(json, false); +} + +export function EndpointAgentChallengeFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): EndpointAgentChallenge { + if (json == null) { + return json; + } + return { + flowInfo: + json["flow_info"] == null ? undefined : ContextualFlowInfoFromJSON(json["flow_info"]), + component: json["component"] == null ? undefined : json["component"], + responseErrors: json["response_errors"] == null ? undefined : json["response_errors"], + challenge: json["challenge"], + challengeIdleTimeout: json["challenge_idle_timeout"], + }; +} + +export function EndpointAgentChallengeToJSON(json: any): EndpointAgentChallenge { + return EndpointAgentChallengeToJSONTyped(json, false); +} + +export function EndpointAgentChallengeToJSONTyped( + value?: EndpointAgentChallenge | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + flow_info: ContextualFlowInfoToJSON(value["flowInfo"]), + component: value["component"], + response_errors: value["responseErrors"], + challenge: value["challenge"], + challenge_idle_timeout: value["challengeIdleTimeout"], + }; +} diff --git a/packages/client-ts/src/models/EndpointAgentChallengeResponseRequest.ts b/packages/client-ts/src/models/EndpointAgentChallengeResponseRequest.ts new file mode 100644 index 0000000000..7f1de229b6 --- /dev/null +++ b/packages/client-ts/src/models/EndpointAgentChallengeResponseRequest.ts @@ -0,0 +1,81 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Response to signed challenge + * @export + * @interface EndpointAgentChallengeResponseRequest + */ +export interface EndpointAgentChallengeResponseRequest { + /** + * + * @type {string} + * @memberof EndpointAgentChallengeResponseRequest + */ + component?: string; + /** + * + * @type {string} + * @memberof EndpointAgentChallengeResponseRequest + */ + response?: string | null; +} + +/** + * Check if a given object implements the EndpointAgentChallengeResponseRequest interface. + */ +export function instanceOfEndpointAgentChallengeResponseRequest( + value: object, +): value is EndpointAgentChallengeResponseRequest { + return true; +} + +export function EndpointAgentChallengeResponseRequestFromJSON( + json: any, +): EndpointAgentChallengeResponseRequest { + return EndpointAgentChallengeResponseRequestFromJSONTyped(json, false); +} + +export function EndpointAgentChallengeResponseRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): EndpointAgentChallengeResponseRequest { + if (json == null) { + return json; + } + return { + component: json["component"] == null ? undefined : json["component"], + response: json["response"] == null ? undefined : json["response"], + }; +} + +export function EndpointAgentChallengeResponseRequestToJSON( + json: any, +): EndpointAgentChallengeResponseRequest { + return EndpointAgentChallengeResponseRequestToJSONTyped(json, false); +} + +export function EndpointAgentChallengeResponseRequestToJSONTyped( + value?: EndpointAgentChallengeResponseRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + component: value["component"], + response: value["response"], + }; +} diff --git a/packages/client-ts/src/models/EndpointAuthModeEnum.ts b/packages/client-ts/src/models/EndpointAuthModeEnum.ts new file mode 100644 index 0000000000..6e1f960565 --- /dev/null +++ b/packages/client-ts/src/models/EndpointAuthModeEnum.ts @@ -0,0 +1,57 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const EndpointAuthModeEnum = { + Static: "static", + Prompt: "prompt", + UnknownDefaultOpenApi: "11184809", +} as const; +export type EndpointAuthModeEnum = (typeof EndpointAuthModeEnum)[keyof typeof EndpointAuthModeEnum]; + +export function instanceOfEndpointAuthModeEnum(value: any): boolean { + for (const key in EndpointAuthModeEnum) { + if (Object.prototype.hasOwnProperty.call(EndpointAuthModeEnum, key)) { + if (EndpointAuthModeEnum[key as keyof typeof EndpointAuthModeEnum] === value) { + return true; + } + } + } + return false; +} + +export function EndpointAuthModeEnumFromJSON(json: any): EndpointAuthModeEnum { + return EndpointAuthModeEnumFromJSONTyped(json, false); +} + +export function EndpointAuthModeEnumFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): EndpointAuthModeEnum { + return json as EndpointAuthModeEnum; +} + +export function EndpointAuthModeEnumToJSON(value?: EndpointAuthModeEnum | null): any { + return value as any; +} + +export function EndpointAuthModeEnumToJSONTyped( + value: any, + ignoreDiscriminator: boolean, +): EndpointAuthModeEnum { + return value as EndpointAuthModeEnum; +} diff --git a/packages/client-ts/src/models/EndpointDevice.ts b/packages/client-ts/src/models/EndpointDevice.ts new file mode 100644 index 0000000000..5aac3783e7 --- /dev/null +++ b/packages/client-ts/src/models/EndpointDevice.ts @@ -0,0 +1,140 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { DeviceAccessGroup } from "./DeviceAccessGroup"; +import { DeviceAccessGroupFromJSON, DeviceAccessGroupToJSON } from "./DeviceAccessGroup"; +import type { DeviceFactSnapshot } from "./DeviceFactSnapshot"; +import { DeviceFactSnapshotFromJSON } from "./DeviceFactSnapshot"; + +/** + * + * @export + * @interface EndpointDevice + */ +export interface EndpointDevice { + /** + * + * @type {string} + * @memberof EndpointDevice + */ + deviceUuid?: string; + /** + * + * @type {string} + * @memberof EndpointDevice + */ + readonly pbmUuid: string; + /** + * + * @type {string} + * @memberof EndpointDevice + */ + name: string; + /** + * + * @type {string} + * @memberof EndpointDevice + */ + accessGroup?: string | null; + /** + * + * @type {DeviceAccessGroup} + * @memberof EndpointDevice + */ + accessGroupObj?: DeviceAccessGroup; + /** + * + * @type {boolean} + * @memberof EndpointDevice + */ + expiring?: boolean; + /** + * + * @type {Date} + * @memberof EndpointDevice + */ + expires?: Date | null; + /** + * + * @type {DeviceFactSnapshot} + * @memberof EndpointDevice + */ + readonly facts: DeviceFactSnapshot; + /** + * + * @type {{ [key: string]: any; }} + * @memberof EndpointDevice + */ + attributes?: { [key: string]: any }; +} + +/** + * Check if a given object implements the EndpointDevice interface. + */ +export function instanceOfEndpointDevice(value: object): value is EndpointDevice { + if (!("pbmUuid" in value) || value["pbmUuid"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("facts" in value) || value["facts"] === undefined) return false; + return true; +} + +export function EndpointDeviceFromJSON(json: any): EndpointDevice { + return EndpointDeviceFromJSONTyped(json, false); +} + +export function EndpointDeviceFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): EndpointDevice { + if (json == null) { + return json; + } + return { + deviceUuid: json["device_uuid"] == null ? undefined : json["device_uuid"], + pbmUuid: json["pbm_uuid"], + name: json["name"], + accessGroup: json["access_group"] == null ? undefined : json["access_group"], + accessGroupObj: + json["access_group_obj"] == null + ? undefined + : DeviceAccessGroupFromJSON(json["access_group_obj"]), + expiring: json["expiring"] == null ? undefined : json["expiring"], + expires: json["expires"] == null ? undefined : new Date(json["expires"]), + facts: DeviceFactSnapshotFromJSON(json["facts"]), + attributes: json["attributes"] == null ? undefined : json["attributes"], + }; +} + +export function EndpointDeviceToJSON(json: any): EndpointDevice { + return EndpointDeviceToJSONTyped(json, false); +} + +export function EndpointDeviceToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + device_uuid: value["deviceUuid"], + name: value["name"], + access_group: value["accessGroup"], + access_group_obj: DeviceAccessGroupToJSON(value["accessGroupObj"]), + expiring: value["expiring"], + expires: value["expires"] == null ? value["expires"] : value["expires"].toISOString(), + attributes: value["attributes"], + }; +} diff --git a/packages/client-ts/src/models/EndpointDeviceDetails.ts b/packages/client-ts/src/models/EndpointDeviceDetails.ts new file mode 100644 index 0000000000..23329e9126 --- /dev/null +++ b/packages/client-ts/src/models/EndpointDeviceDetails.ts @@ -0,0 +1,167 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { DeviceAccessGroup } from "./DeviceAccessGroup"; +import { DeviceAccessGroupFromJSON, DeviceAccessGroupToJSON } from "./DeviceAccessGroup"; +import type { DeviceConnection } from "./DeviceConnection"; +import { DeviceConnectionFromJSON, DeviceConnectionToJSON } from "./DeviceConnection"; +import type { DeviceFactSnapshot } from "./DeviceFactSnapshot"; +import { DeviceFactSnapshotFromJSON } from "./DeviceFactSnapshot"; + +/** + * + * @export + * @interface EndpointDeviceDetails + */ +export interface EndpointDeviceDetails { + /** + * + * @type {string} + * @memberof EndpointDeviceDetails + */ + deviceUuid?: string; + /** + * + * @type {string} + * @memberof EndpointDeviceDetails + */ + readonly pbmUuid: string; + /** + * + * @type {string} + * @memberof EndpointDeviceDetails + */ + name: string; + /** + * + * @type {string} + * @memberof EndpointDeviceDetails + */ + accessGroup?: string | null; + /** + * + * @type {DeviceAccessGroup} + * @memberof EndpointDeviceDetails + */ + accessGroupObj?: DeviceAccessGroup; + /** + * + * @type {boolean} + * @memberof EndpointDeviceDetails + */ + expiring?: boolean; + /** + * + * @type {Date} + * @memberof EndpointDeviceDetails + */ + expires?: Date | null; + /** + * + * @type {DeviceFactSnapshot} + * @memberof EndpointDeviceDetails + */ + readonly facts: DeviceFactSnapshot; + /** + * + * @type {{ [key: string]: any; }} + * @memberof EndpointDeviceDetails + */ + attributes?: { [key: string]: any }; + /** + * + * @type {Array} + * @memberof EndpointDeviceDetails + */ + connectionsObj: Array; + /** + * + * @type {Array} + * @memberof EndpointDeviceDetails + */ + readonly policies: Array; + /** + * + * @type {Array} + * @memberof EndpointDeviceDetails + */ + readonly connections: Array; +} + +/** + * Check if a given object implements the EndpointDeviceDetails interface. + */ +export function instanceOfEndpointDeviceDetails(value: object): value is EndpointDeviceDetails { + if (!("pbmUuid" in value) || value["pbmUuid"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("facts" in value) || value["facts"] === undefined) return false; + if (!("connectionsObj" in value) || value["connectionsObj"] === undefined) return false; + if (!("policies" in value) || value["policies"] === undefined) return false; + if (!("connections" in value) || value["connections"] === undefined) return false; + return true; +} + +export function EndpointDeviceDetailsFromJSON(json: any): EndpointDeviceDetails { + return EndpointDeviceDetailsFromJSONTyped(json, false); +} + +export function EndpointDeviceDetailsFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): EndpointDeviceDetails { + if (json == null) { + return json; + } + return { + deviceUuid: json["device_uuid"] == null ? undefined : json["device_uuid"], + pbmUuid: json["pbm_uuid"], + name: json["name"], + accessGroup: json["access_group"] == null ? undefined : json["access_group"], + accessGroupObj: + json["access_group_obj"] == null + ? undefined + : DeviceAccessGroupFromJSON(json["access_group_obj"]), + expiring: json["expiring"] == null ? undefined : json["expiring"], + expires: json["expires"] == null ? undefined : new Date(json["expires"]), + facts: DeviceFactSnapshotFromJSON(json["facts"]), + attributes: json["attributes"] == null ? undefined : json["attributes"], + connectionsObj: (json["connections_obj"] as Array).map(DeviceConnectionFromJSON), + policies: json["policies"], + connections: json["connections"], + }; +} + +export function EndpointDeviceDetailsToJSON(json: any): EndpointDeviceDetails { + return EndpointDeviceDetailsToJSONTyped(json, false); +} + +export function EndpointDeviceDetailsToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + device_uuid: value["deviceUuid"], + name: value["name"], + access_group: value["accessGroup"], + access_group_obj: DeviceAccessGroupToJSON(value["accessGroupObj"]), + expiring: value["expiring"], + expires: value["expires"] == null ? value["expires"] : value["expires"].toISOString(), + attributes: value["attributes"], + connections_obj: (value["connectionsObj"] as Array).map(DeviceConnectionToJSON), + }; +} diff --git a/packages/client-ts/src/models/EndpointDeviceRequest.ts b/packages/client-ts/src/models/EndpointDeviceRequest.ts new file mode 100644 index 0000000000..accb1b698c --- /dev/null +++ b/packages/client-ts/src/models/EndpointDeviceRequest.ts @@ -0,0 +1,125 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { DeviceAccessGroupRequest } from "./DeviceAccessGroupRequest"; +import { + DeviceAccessGroupRequestFromJSON, + DeviceAccessGroupRequestToJSON, +} from "./DeviceAccessGroupRequest"; + +/** + * + * @export + * @interface EndpointDeviceRequest + */ +export interface EndpointDeviceRequest { + /** + * + * @type {string} + * @memberof EndpointDeviceRequest + */ + deviceUuid?: string; + /** + * + * @type {string} + * @memberof EndpointDeviceRequest + */ + name: string; + /** + * + * @type {string} + * @memberof EndpointDeviceRequest + */ + accessGroup?: string | null; + /** + * + * @type {DeviceAccessGroupRequest} + * @memberof EndpointDeviceRequest + */ + accessGroupObj?: DeviceAccessGroupRequest; + /** + * + * @type {boolean} + * @memberof EndpointDeviceRequest + */ + expiring?: boolean; + /** + * + * @type {Date} + * @memberof EndpointDeviceRequest + */ + expires?: Date | null; + /** + * + * @type {{ [key: string]: any; }} + * @memberof EndpointDeviceRequest + */ + attributes?: { [key: string]: any }; +} + +/** + * Check if a given object implements the EndpointDeviceRequest interface. + */ +export function instanceOfEndpointDeviceRequest(value: object): value is EndpointDeviceRequest { + if (!("name" in value) || value["name"] === undefined) return false; + return true; +} + +export function EndpointDeviceRequestFromJSON(json: any): EndpointDeviceRequest { + return EndpointDeviceRequestFromJSONTyped(json, false); +} + +export function EndpointDeviceRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): EndpointDeviceRequest { + if (json == null) { + return json; + } + return { + deviceUuid: json["device_uuid"] == null ? undefined : json["device_uuid"], + name: json["name"], + accessGroup: json["access_group"] == null ? undefined : json["access_group"], + accessGroupObj: + json["access_group_obj"] == null + ? undefined + : DeviceAccessGroupRequestFromJSON(json["access_group_obj"]), + expiring: json["expiring"] == null ? undefined : json["expiring"], + expires: json["expires"] == null ? undefined : new Date(json["expires"]), + attributes: json["attributes"] == null ? undefined : json["attributes"], + }; +} + +export function EndpointDeviceRequestToJSON(json: any): EndpointDeviceRequest { + return EndpointDeviceRequestToJSONTyped(json, false); +} + +export function EndpointDeviceRequestToJSONTyped( + value?: EndpointDeviceRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + device_uuid: value["deviceUuid"], + name: value["name"], + access_group: value["accessGroup"], + access_group_obj: DeviceAccessGroupRequestToJSON(value["accessGroupObj"]), + expiring: value["expiring"], + expires: value["expires"] == null ? value["expires"] : value["expires"].toISOString(), + attributes: value["attributes"], + }; +} diff --git a/packages/client-ts/src/models/EndpointRequest.ts b/packages/client-ts/src/models/EndpointRequest.ts new file mode 100644 index 0000000000..b21cecf1b8 --- /dev/null +++ b/packages/client-ts/src/models/EndpointRequest.ts @@ -0,0 +1,134 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { EndpointAuthModeEnum } from "./EndpointAuthModeEnum"; +import { EndpointAuthModeEnumFromJSON, EndpointAuthModeEnumToJSON } from "./EndpointAuthModeEnum"; +import type { ProtocolEnum } from "./ProtocolEnum"; +import { ProtocolEnumFromJSON, ProtocolEnumToJSON } from "./ProtocolEnum"; + +/** + * Endpoint Serializer + * @export + * @interface EndpointRequest + */ +export interface EndpointRequest { + /** + * + * @type {string} + * @memberof EndpointRequest + */ + name: string; + /** + * + * @type {number} + * @memberof EndpointRequest + */ + provider: number; + /** + * + * @type {ProtocolEnum} + * @memberof EndpointRequest + */ + protocol: ProtocolEnum; + /** + * + * @type {string} + * @memberof EndpointRequest + */ + host: string; + /** + * + * @type {{ [key: string]: any; }} + * @memberof EndpointRequest + */ + settings?: { [key: string]: any }; + /** + * + * @type {Array} + * @memberof EndpointRequest + */ + propertyMappings?: Array; + /** + * + * @type {EndpointAuthModeEnum} + * @memberof EndpointRequest + */ + authMode: EndpointAuthModeEnum; + /** + * + * @type {number} + * @memberof EndpointRequest + */ + maximumConnections?: number; +} + +/** + * Check if a given object implements the EndpointRequest interface. + */ +export function instanceOfEndpointRequest(value: object): value is EndpointRequest { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("provider" in value) || value["provider"] === undefined) return false; + if (!("protocol" in value) || value["protocol"] === undefined) return false; + if (!("host" in value) || value["host"] === undefined) return false; + if (!("authMode" in value) || value["authMode"] === undefined) return false; + return true; +} + +export function EndpointRequestFromJSON(json: any): EndpointRequest { + return EndpointRequestFromJSONTyped(json, false); +} + +export function EndpointRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): EndpointRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + provider: json["provider"], + protocol: ProtocolEnumFromJSON(json["protocol"]), + host: json["host"], + settings: json["settings"] == null ? undefined : json["settings"], + propertyMappings: json["property_mappings"] == null ? undefined : json["property_mappings"], + authMode: EndpointAuthModeEnumFromJSON(json["auth_mode"]), + maximumConnections: + json["maximum_connections"] == null ? undefined : json["maximum_connections"], + }; +} + +export function EndpointRequestToJSON(json: any): EndpointRequest { + return EndpointRequestToJSONTyped(json, false); +} + +export function EndpointRequestToJSONTyped( + value?: EndpointRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + provider: value["provider"], + protocol: ProtocolEnumToJSON(value["protocol"]), + host: value["host"], + settings: value["settings"], + property_mappings: value["propertyMappings"], + auth_mode: EndpointAuthModeEnumToJSON(value["authMode"]), + maximum_connections: value["maximumConnections"], + }; +} diff --git a/packages/client-ts/src/models/EndpointStage.ts b/packages/client-ts/src/models/EndpointStage.ts new file mode 100644 index 0000000000..54aed5043d --- /dev/null +++ b/packages/client-ts/src/models/EndpointStage.ts @@ -0,0 +1,154 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Connector } from "./Connector"; +import { ConnectorFromJSON } from "./Connector"; +import type { FlowSet } from "./FlowSet"; +import { FlowSetFromJSON } from "./FlowSet"; +import type { StageModeEnum } from "./StageModeEnum"; +import { StageModeEnumFromJSON, StageModeEnumToJSON } from "./StageModeEnum"; + +/** + * EndpointStage Serializer + * @export + * @interface EndpointStage + */ +export interface EndpointStage { + /** + * + * @type {string} + * @memberof EndpointStage + */ + readonly pk: string; + /** + * + * @type {string} + * @memberof EndpointStage + */ + name: string; + /** + * Get object type so that we know how to edit the object + * @type {string} + * @memberof EndpointStage + */ + readonly component: string; + /** + * Return object's verbose_name + * @type {string} + * @memberof EndpointStage + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof EndpointStage + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof EndpointStage + */ + readonly metaModelName: string; + /** + * + * @type {Array} + * @memberof EndpointStage + */ + readonly flowSet: Array; + /** + * + * @type {string} + * @memberof EndpointStage + */ + connector: string; + /** + * + * @type {Connector} + * @memberof EndpointStage + */ + readonly connectorObj: Connector; + /** + * + * @type {StageModeEnum} + * @memberof EndpointStage + */ + mode?: StageModeEnum; +} + +/** + * Check if a given object implements the EndpointStage interface. + */ +export function instanceOfEndpointStage(value: object): value is EndpointStage { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + if (!("flowSet" in value) || value["flowSet"] === undefined) return false; + if (!("connector" in value) || value["connector"] === undefined) return false; + if (!("connectorObj" in value) || value["connectorObj"] === undefined) return false; + return true; +} + +export function EndpointStageFromJSON(json: any): EndpointStage { + return EndpointStageFromJSONTyped(json, false); +} + +export function EndpointStageFromJSONTyped(json: any, ignoreDiscriminator: boolean): EndpointStage { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + component: json["component"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + flowSet: (json["flow_set"] as Array).map(FlowSetFromJSON), + connector: json["connector"], + connectorObj: ConnectorFromJSON(json["connector_obj"]), + mode: json["mode"] == null ? undefined : StageModeEnumFromJSON(json["mode"]), + }; +} + +export function EndpointStageToJSON(json: any): EndpointStage { + return EndpointStageToJSONTyped(json, false); +} + +export function EndpointStageToJSONTyped( + value?: Omit< + EndpointStage, + | "pk" + | "component" + | "verbose_name" + | "verbose_name_plural" + | "meta_model_name" + | "flow_set" + | "connector_obj" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + connector: value["connector"], + mode: StageModeEnumToJSON(value["mode"]), + }; +} diff --git a/packages/client-ts/src/models/EndpointStageRequest.ts b/packages/client-ts/src/models/EndpointStageRequest.ts new file mode 100644 index 0000000000..75493d514a --- /dev/null +++ b/packages/client-ts/src/models/EndpointStageRequest.ts @@ -0,0 +1,88 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { StageModeEnum } from "./StageModeEnum"; +import { StageModeEnumFromJSON, StageModeEnumToJSON } from "./StageModeEnum"; + +/** + * EndpointStage Serializer + * @export + * @interface EndpointStageRequest + */ +export interface EndpointStageRequest { + /** + * + * @type {string} + * @memberof EndpointStageRequest + */ + name: string; + /** + * + * @type {string} + * @memberof EndpointStageRequest + */ + connector: string; + /** + * + * @type {StageModeEnum} + * @memberof EndpointStageRequest + */ + mode?: StageModeEnum; +} + +/** + * Check if a given object implements the EndpointStageRequest interface. + */ +export function instanceOfEndpointStageRequest(value: object): value is EndpointStageRequest { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("connector" in value) || value["connector"] === undefined) return false; + return true; +} + +export function EndpointStageRequestFromJSON(json: any): EndpointStageRequest { + return EndpointStageRequestFromJSONTyped(json, false); +} + +export function EndpointStageRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): EndpointStageRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + connector: json["connector"], + mode: json["mode"] == null ? undefined : StageModeEnumFromJSON(json["mode"]), + }; +} + +export function EndpointStageRequestToJSON(json: any): EndpointStageRequest { + return EndpointStageRequestToJSONTyped(json, false); +} + +export function EndpointStageRequestToJSONTyped( + value?: EndpointStageRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + connector: value["connector"], + mode: StageModeEnumToJSON(value["mode"]), + }; +} diff --git a/packages/client-ts/src/models/EnrollRequest.ts b/packages/client-ts/src/models/EnrollRequest.ts new file mode 100644 index 0000000000..027b1b4411 --- /dev/null +++ b/packages/client-ts/src/models/EnrollRequest.ts @@ -0,0 +1,74 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Base serializer class which doesn't implement create/update methods + * @export + * @interface EnrollRequest + */ +export interface EnrollRequest { + /** + * + * @type {string} + * @memberof EnrollRequest + */ + deviceSerial: string; + /** + * + * @type {string} + * @memberof EnrollRequest + */ + deviceName: string; +} + +/** + * Check if a given object implements the EnrollRequest interface. + */ +export function instanceOfEnrollRequest(value: object): value is EnrollRequest { + if (!("deviceSerial" in value) || value["deviceSerial"] === undefined) return false; + if (!("deviceName" in value) || value["deviceName"] === undefined) return false; + return true; +} + +export function EnrollRequestFromJSON(json: any): EnrollRequest { + return EnrollRequestFromJSONTyped(json, false); +} + +export function EnrollRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): EnrollRequest { + if (json == null) { + return json; + } + return { + deviceSerial: json["device_serial"], + deviceName: json["device_name"], + }; +} + +export function EnrollRequestToJSON(json: any): EnrollRequest { + return EnrollRequestToJSONTyped(json, false); +} + +export function EnrollRequestToJSONTyped( + value?: EnrollRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + device_serial: value["deviceSerial"], + device_name: value["deviceName"], + }; +} diff --git a/packages/client-ts/src/models/EnrollmentToken.ts b/packages/client-ts/src/models/EnrollmentToken.ts new file mode 100644 index 0000000000..6d06dba61e --- /dev/null +++ b/packages/client-ts/src/models/EnrollmentToken.ts @@ -0,0 +1,120 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { DeviceAccessGroup } from "./DeviceAccessGroup"; +import { DeviceAccessGroupFromJSON } from "./DeviceAccessGroup"; + +/** + * + * @export + * @interface EnrollmentToken + */ +export interface EnrollmentToken { + /** + * + * @type {string} + * @memberof EnrollmentToken + */ + readonly tokenUuid: string; + /** + * + * @type {string} + * @memberof EnrollmentToken + */ + deviceGroup?: string | null; + /** + * + * @type {DeviceAccessGroup} + * @memberof EnrollmentToken + */ + readonly deviceGroupObj: DeviceAccessGroup | null; + /** + * + * @type {string} + * @memberof EnrollmentToken + */ + connector: string; + /** + * + * @type {string} + * @memberof EnrollmentToken + */ + name: string; + /** + * + * @type {boolean} + * @memberof EnrollmentToken + */ + expiring?: boolean; + /** + * + * @type {Date} + * @memberof EnrollmentToken + */ + expires?: Date | null; +} + +/** + * Check if a given object implements the EnrollmentToken interface. + */ +export function instanceOfEnrollmentToken(value: object): value is EnrollmentToken { + if (!("tokenUuid" in value) || value["tokenUuid"] === undefined) return false; + if (!("deviceGroupObj" in value) || value["deviceGroupObj"] === undefined) return false; + if (!("connector" in value) || value["connector"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + return true; +} + +export function EnrollmentTokenFromJSON(json: any): EnrollmentToken { + return EnrollmentTokenFromJSONTyped(json, false); +} + +export function EnrollmentTokenFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): EnrollmentToken { + if (json == null) { + return json; + } + return { + tokenUuid: json["token_uuid"], + deviceGroup: json["device_group"] == null ? undefined : json["device_group"], + deviceGroupObj: DeviceAccessGroupFromJSON(json["device_group_obj"]), + connector: json["connector"], + name: json["name"], + expiring: json["expiring"] == null ? undefined : json["expiring"], + expires: json["expires"] == null ? undefined : new Date(json["expires"]), + }; +} + +export function EnrollmentTokenToJSON(json: any): EnrollmentToken { + return EnrollmentTokenToJSONTyped(json, false); +} + +export function EnrollmentTokenToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + device_group: value["deviceGroup"], + connector: value["connector"], + name: value["name"], + expiring: value["expiring"], + expires: value["expires"] == null ? value["expires"] : value["expires"].toISOString(), + }; +} diff --git a/packages/client-ts/src/models/EnrollmentTokenRequest.ts b/packages/client-ts/src/models/EnrollmentTokenRequest.ts new file mode 100644 index 0000000000..7b2778c1ec --- /dev/null +++ b/packages/client-ts/src/models/EnrollmentTokenRequest.ts @@ -0,0 +1,101 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + * @interface EnrollmentTokenRequest + */ +export interface EnrollmentTokenRequest { + /** + * + * @type {string} + * @memberof EnrollmentTokenRequest + */ + deviceGroup?: string | null; + /** + * + * @type {string} + * @memberof EnrollmentTokenRequest + */ + connector: string; + /** + * + * @type {string} + * @memberof EnrollmentTokenRequest + */ + name: string; + /** + * + * @type {boolean} + * @memberof EnrollmentTokenRequest + */ + expiring?: boolean; + /** + * + * @type {Date} + * @memberof EnrollmentTokenRequest + */ + expires?: Date | null; +} + +/** + * Check if a given object implements the EnrollmentTokenRequest interface. + */ +export function instanceOfEnrollmentTokenRequest(value: object): value is EnrollmentTokenRequest { + if (!("connector" in value) || value["connector"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + return true; +} + +export function EnrollmentTokenRequestFromJSON(json: any): EnrollmentTokenRequest { + return EnrollmentTokenRequestFromJSONTyped(json, false); +} + +export function EnrollmentTokenRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): EnrollmentTokenRequest { + if (json == null) { + return json; + } + return { + deviceGroup: json["device_group"] == null ? undefined : json["device_group"], + connector: json["connector"], + name: json["name"], + expiring: json["expiring"] == null ? undefined : json["expiring"], + expires: json["expires"] == null ? undefined : new Date(json["expires"]), + }; +} + +export function EnrollmentTokenRequestToJSON(json: any): EnrollmentTokenRequest { + return EnrollmentTokenRequestToJSONTyped(json, false); +} + +export function EnrollmentTokenRequestToJSONTyped( + value?: EnrollmentTokenRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + device_group: value["deviceGroup"], + connector: value["connector"], + name: value["name"], + expiring: value["expiring"], + expires: value["expires"] == null ? value["expires"] : value["expires"].toISOString(), + }; +} diff --git a/packages/client-ts/src/models/ErrorDetail.ts b/packages/client-ts/src/models/ErrorDetail.ts new file mode 100644 index 0000000000..3dd5aeff24 --- /dev/null +++ b/packages/client-ts/src/models/ErrorDetail.ts @@ -0,0 +1,74 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Serializer for rest_framework's error messages + * @export + * @interface ErrorDetail + */ +export interface ErrorDetail { + /** + * + * @type {string} + * @memberof ErrorDetail + */ + string: string; + /** + * + * @type {string} + * @memberof ErrorDetail + */ + code: string; +} + +/** + * Check if a given object implements the ErrorDetail interface. + */ +export function instanceOfErrorDetail(value: object): value is ErrorDetail { + if (!("string" in value) || value["string"] === undefined) return false; + if (!("code" in value) || value["code"] === undefined) return false; + return true; +} + +export function ErrorDetailFromJSON(json: any): ErrorDetail { + return ErrorDetailFromJSONTyped(json, false); +} + +export function ErrorDetailFromJSONTyped(json: any, ignoreDiscriminator: boolean): ErrorDetail { + if (json == null) { + return json; + } + return { + string: json["string"], + code: json["code"], + }; +} + +export function ErrorDetailToJSON(json: any): ErrorDetail { + return ErrorDetailToJSONTyped(json, false); +} + +export function ErrorDetailToJSONTyped( + value?: ErrorDetail | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + string: value["string"], + code: value["code"], + }; +} diff --git a/packages/client-ts/src/models/ErrorReportingConfig.ts b/packages/client-ts/src/models/ErrorReportingConfig.ts new file mode 100644 index 0000000000..39af6637af --- /dev/null +++ b/packages/client-ts/src/models/ErrorReportingConfig.ts @@ -0,0 +1,101 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Config for error reporting + * @export + * @interface ErrorReportingConfig + */ +export interface ErrorReportingConfig { + /** + * + * @type {boolean} + * @memberof ErrorReportingConfig + */ + readonly enabled: boolean; + /** + * + * @type {string} + * @memberof ErrorReportingConfig + */ + readonly sentryDsn: string; + /** + * + * @type {string} + * @memberof ErrorReportingConfig + */ + readonly environment: string; + /** + * + * @type {boolean} + * @memberof ErrorReportingConfig + */ + readonly sendPii: boolean; + /** + * + * @type {number} + * @memberof ErrorReportingConfig + */ + readonly tracesSampleRate: number; +} + +/** + * Check if a given object implements the ErrorReportingConfig interface. + */ +export function instanceOfErrorReportingConfig(value: object): value is ErrorReportingConfig { + if (!("enabled" in value) || value["enabled"] === undefined) return false; + if (!("sentryDsn" in value) || value["sentryDsn"] === undefined) return false; + if (!("environment" in value) || value["environment"] === undefined) return false; + if (!("sendPii" in value) || value["sendPii"] === undefined) return false; + if (!("tracesSampleRate" in value) || value["tracesSampleRate"] === undefined) return false; + return true; +} + +export function ErrorReportingConfigFromJSON(json: any): ErrorReportingConfig { + return ErrorReportingConfigFromJSONTyped(json, false); +} + +export function ErrorReportingConfigFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): ErrorReportingConfig { + if (json == null) { + return json; + } + return { + enabled: json["enabled"], + sentryDsn: json["sentry_dsn"], + environment: json["environment"], + sendPii: json["send_pii"], + tracesSampleRate: json["traces_sample_rate"], + }; +} + +export function ErrorReportingConfigToJSON(json: any): ErrorReportingConfig { + return ErrorReportingConfigToJSONTyped(json, false); +} + +export function ErrorReportingConfigToJSONTyped( + value?: Omit< + ErrorReportingConfig, + "enabled" | "sentry_dsn" | "environment" | "send_pii" | "traces_sample_rate" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return {}; +} diff --git a/packages/client-ts/src/models/Event.ts b/packages/client-ts/src/models/Event.ts new file mode 100644 index 0000000000..9c30abdba6 --- /dev/null +++ b/packages/client-ts/src/models/Event.ts @@ -0,0 +1,133 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { EventActions } from "./EventActions"; +import { EventActionsFromJSON, EventActionsToJSON } from "./EventActions"; + +/** + * Event Serializer + * @export + * @interface Event + */ +export interface Event { + /** + * + * @type {string} + * @memberof Event + */ + readonly pk: string; + /** + * + * @type {{ [key: string]: any; }} + * @memberof Event + */ + user?: { [key: string]: any }; + /** + * + * @type {EventActions} + * @memberof Event + */ + action: EventActions; + /** + * + * @type {string} + * @memberof Event + */ + app: string; + /** + * + * @type {{ [key: string]: any; }} + * @memberof Event + */ + context?: { [key: string]: any }; + /** + * + * @type {string} + * @memberof Event + */ + clientIp?: string | null; + /** + * + * @type {Date} + * @memberof Event + */ + readonly created: Date; + /** + * + * @type {Date} + * @memberof Event + */ + expires?: Date; + /** + * + * @type {{ [key: string]: any; }} + * @memberof Event + */ + brand?: { [key: string]: any }; +} + +/** + * Check if a given object implements the Event interface. + */ +export function instanceOfEvent(value: object): value is Event { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("action" in value) || value["action"] === undefined) return false; + if (!("app" in value) || value["app"] === undefined) return false; + if (!("created" in value) || value["created"] === undefined) return false; + return true; +} + +export function EventFromJSON(json: any): Event { + return EventFromJSONTyped(json, false); +} + +export function EventFromJSONTyped(json: any, ignoreDiscriminator: boolean): Event { + if (json == null) { + return json; + } + return { + pk: json["pk"], + user: json["user"] == null ? undefined : json["user"], + action: EventActionsFromJSON(json["action"]), + app: json["app"], + context: json["context"] == null ? undefined : json["context"], + clientIp: json["client_ip"] == null ? undefined : json["client_ip"], + created: new Date(json["created"]), + expires: json["expires"] == null ? undefined : new Date(json["expires"]), + brand: json["brand"] == null ? undefined : json["brand"], + }; +} + +export function EventToJSON(json: any): Event { + return EventToJSONTyped(json, false); +} + +export function EventToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + user: value["user"], + action: EventActionsToJSON(value["action"]), + app: value["app"], + context: value["context"], + client_ip: value["clientIp"], + expires: value["expires"] == null ? value["expires"] : value["expires"].toISOString(), + brand: value["brand"], + }; +} diff --git a/packages/client-ts/src/models/EventActions.ts b/packages/client-ts/src/models/EventActions.ts new file mode 100644 index 0000000000..de25e0f0fa --- /dev/null +++ b/packages/client-ts/src/models/EventActions.ts @@ -0,0 +1,82 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const EventActions = { + Login: "login", + LoginFailed: "login_failed", + Logout: "logout", + UserWrite: "user_write", + SuspiciousRequest: "suspicious_request", + PasswordSet: "password_set", + SecretView: "secret_view", + SecretRotate: "secret_rotate", + InvitationUsed: "invitation_used", + AuthorizeApplication: "authorize_application", + SourceLinked: "source_linked", + ImpersonationStarted: "impersonation_started", + ImpersonationEnded: "impersonation_ended", + FlowExecution: "flow_execution", + PolicyExecution: "policy_execution", + PolicyException: "policy_exception", + PropertyMappingException: "property_mapping_exception", + SystemTaskExecution: "system_task_execution", + SystemTaskException: "system_task_exception", + SystemException: "system_exception", + ConfigurationError: "configuration_error", + ConfigurationWarning: "configuration_warning", + ModelCreated: "model_created", + ModelUpdated: "model_updated", + ModelDeleted: "model_deleted", + EmailSent: "email_sent", + UpdateAvailable: "update_available", + ExportReady: "export_ready", + ReviewInitiated: "review_initiated", + ReviewOverdue: "review_overdue", + ReviewAttested: "review_attested", + ReviewCompleted: "review_completed", + Custom: "custom_", + UnknownDefaultOpenApi: "11184809", +} as const; +export type EventActions = (typeof EventActions)[keyof typeof EventActions]; + +export function instanceOfEventActions(value: any): boolean { + for (const key in EventActions) { + if (Object.prototype.hasOwnProperty.call(EventActions, key)) { + if (EventActions[key as keyof typeof EventActions] === value) { + return true; + } + } + } + return false; +} + +export function EventActionsFromJSON(json: any): EventActions { + return EventActionsFromJSONTyped(json, false); +} + +export function EventActionsFromJSONTyped(json: any, ignoreDiscriminator: boolean): EventActions { + return json as EventActions; +} + +export function EventActionsToJSON(value?: EventActions | null): any { + return value as any; +} + +export function EventActionsToJSONTyped(value: any, ignoreDiscriminator: boolean): EventActions { + return value as EventActions; +} diff --git a/packages/client-ts/src/models/EventMatcherPolicy.ts b/packages/client-ts/src/models/EventMatcherPolicy.ts new file mode 100644 index 0000000000..63b5a4ef2b --- /dev/null +++ b/packages/client-ts/src/models/EventMatcherPolicy.ts @@ -0,0 +1,174 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { AppEnum } from "./AppEnum"; +import { AppEnumFromJSON, AppEnumToJSON } from "./AppEnum"; +import type { EventActions } from "./EventActions"; +import { EventActionsFromJSON, EventActionsToJSON } from "./EventActions"; +import type { ModelEnum } from "./ModelEnum"; +import { ModelEnumFromJSON, ModelEnumToJSON } from "./ModelEnum"; + +/** + * Event Matcher Policy Serializer + * @export + * @interface EventMatcherPolicy + */ +export interface EventMatcherPolicy { + /** + * + * @type {string} + * @memberof EventMatcherPolicy + */ + readonly pk: string; + /** + * + * @type {string} + * @memberof EventMatcherPolicy + */ + name: string; + /** + * When this option is enabled, all executions of this policy will be logged. By default, only execution errors are logged. + * @type {boolean} + * @memberof EventMatcherPolicy + */ + executionLogging?: boolean; + /** + * Get object component so that we know how to edit the object + * @type {string} + * @memberof EventMatcherPolicy + */ + readonly component: string; + /** + * Return object's verbose_name + * @type {string} + * @memberof EventMatcherPolicy + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof EventMatcherPolicy + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof EventMatcherPolicy + */ + readonly metaModelName: string; + /** + * Return objects policy is bound to + * @type {number} + * @memberof EventMatcherPolicy + */ + readonly boundTo: number; + /** + * Match created events with this action type. When left empty, all action types will be matched. + * @type {EventActions} + * @memberof EventMatcherPolicy + */ + action?: EventActions | null; + /** + * Matches Event's Client IP (strict matching, for network matching use an Expression Policy) + * @type {string} + * @memberof EventMatcherPolicy + */ + clientIp?: string | null; + /** + * Match events created by selected application. When left empty, all applications are matched. + * @type {AppEnum} + * @memberof EventMatcherPolicy + */ + app?: AppEnum | null; + /** + * Match events created by selected model. When left empty, all models are matched. When an app is selected, all the application's models are matched. + * @type {ModelEnum} + * @memberof EventMatcherPolicy + */ + model?: ModelEnum | null; + /** + * + * @type {string} + * @memberof EventMatcherPolicy + */ + query?: string | null; +} + +/** + * Check if a given object implements the EventMatcherPolicy interface. + */ +export function instanceOfEventMatcherPolicy(value: object): value is EventMatcherPolicy { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + if (!("boundTo" in value) || value["boundTo"] === undefined) return false; + return true; +} + +export function EventMatcherPolicyFromJSON(json: any): EventMatcherPolicy { + return EventMatcherPolicyFromJSONTyped(json, false); +} + +export function EventMatcherPolicyFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): EventMatcherPolicy { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + executionLogging: json["execution_logging"] == null ? undefined : json["execution_logging"], + component: json["component"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + boundTo: json["bound_to"], + action: json["action"] == null ? undefined : EventActionsFromJSON(json["action"]), + clientIp: json["client_ip"] == null ? undefined : json["client_ip"], + app: json["app"] == null ? undefined : AppEnumFromJSON(json["app"]), + model: json["model"] == null ? undefined : ModelEnumFromJSON(json["model"]), + query: json["query"] == null ? undefined : json["query"], + }; +} + +export function EventMatcherPolicyToJSON(json: any): EventMatcherPolicy { + return EventMatcherPolicyToJSONTyped(json, false); +} + +export function EventMatcherPolicyToJSONTyped( + value?: Omit< + EventMatcherPolicy, + "pk" | "component" | "verbose_name" | "verbose_name_plural" | "meta_model_name" | "bound_to" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + execution_logging: value["executionLogging"], + action: EventActionsToJSON(value["action"]), + client_ip: value["clientIp"], + app: AppEnumToJSON(value["app"]), + model: ModelEnumToJSON(value["model"]), + query: value["query"], + }; +} diff --git a/packages/client-ts/src/models/EventMatcherPolicyRequest.ts b/packages/client-ts/src/models/EventMatcherPolicyRequest.ts new file mode 100644 index 0000000000..50a56d72b0 --- /dev/null +++ b/packages/client-ts/src/models/EventMatcherPolicyRequest.ts @@ -0,0 +1,125 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { AppEnum } from "./AppEnum"; +import { AppEnumFromJSON, AppEnumToJSON } from "./AppEnum"; +import type { EventActions } from "./EventActions"; +import { EventActionsFromJSON, EventActionsToJSON } from "./EventActions"; +import type { ModelEnum } from "./ModelEnum"; +import { ModelEnumFromJSON, ModelEnumToJSON } from "./ModelEnum"; + +/** + * Event Matcher Policy Serializer + * @export + * @interface EventMatcherPolicyRequest + */ +export interface EventMatcherPolicyRequest { + /** + * + * @type {string} + * @memberof EventMatcherPolicyRequest + */ + name: string; + /** + * When this option is enabled, all executions of this policy will be logged. By default, only execution errors are logged. + * @type {boolean} + * @memberof EventMatcherPolicyRequest + */ + executionLogging?: boolean; + /** + * Match created events with this action type. When left empty, all action types will be matched. + * @type {EventActions} + * @memberof EventMatcherPolicyRequest + */ + action?: EventActions | null; + /** + * Matches Event's Client IP (strict matching, for network matching use an Expression Policy) + * @type {string} + * @memberof EventMatcherPolicyRequest + */ + clientIp?: string | null; + /** + * Match events created by selected application. When left empty, all applications are matched. + * @type {AppEnum} + * @memberof EventMatcherPolicyRequest + */ + app?: AppEnum | null; + /** + * Match events created by selected model. When left empty, all models are matched. When an app is selected, all the application's models are matched. + * @type {ModelEnum} + * @memberof EventMatcherPolicyRequest + */ + model?: ModelEnum | null; + /** + * + * @type {string} + * @memberof EventMatcherPolicyRequest + */ + query?: string | null; +} + +/** + * Check if a given object implements the EventMatcherPolicyRequest interface. + */ +export function instanceOfEventMatcherPolicyRequest( + value: object, +): value is EventMatcherPolicyRequest { + if (!("name" in value) || value["name"] === undefined) return false; + return true; +} + +export function EventMatcherPolicyRequestFromJSON(json: any): EventMatcherPolicyRequest { + return EventMatcherPolicyRequestFromJSONTyped(json, false); +} + +export function EventMatcherPolicyRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): EventMatcherPolicyRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + executionLogging: json["execution_logging"] == null ? undefined : json["execution_logging"], + action: json["action"] == null ? undefined : EventActionsFromJSON(json["action"]), + clientIp: json["client_ip"] == null ? undefined : json["client_ip"], + app: json["app"] == null ? undefined : AppEnumFromJSON(json["app"]), + model: json["model"] == null ? undefined : ModelEnumFromJSON(json["model"]), + query: json["query"] == null ? undefined : json["query"], + }; +} + +export function EventMatcherPolicyRequestToJSON(json: any): EventMatcherPolicyRequest { + return EventMatcherPolicyRequestToJSONTyped(json, false); +} + +export function EventMatcherPolicyRequestToJSONTyped( + value?: EventMatcherPolicyRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + execution_logging: value["executionLogging"], + action: EventActionsToJSON(value["action"]), + client_ip: value["clientIp"], + app: AppEnumToJSON(value["app"]), + model: ModelEnumToJSON(value["model"]), + query: value["query"], + }; +} diff --git a/packages/client-ts/src/models/EventRequest.ts b/packages/client-ts/src/models/EventRequest.ts new file mode 100644 index 0000000000..36126377e6 --- /dev/null +++ b/packages/client-ts/src/models/EventRequest.ts @@ -0,0 +1,117 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { EventActions } from "./EventActions"; +import { EventActionsFromJSON, EventActionsToJSON } from "./EventActions"; + +/** + * Event Serializer + * @export + * @interface EventRequest + */ +export interface EventRequest { + /** + * + * @type {{ [key: string]: any; }} + * @memberof EventRequest + */ + user?: { [key: string]: any }; + /** + * + * @type {EventActions} + * @memberof EventRequest + */ + action: EventActions; + /** + * + * @type {string} + * @memberof EventRequest + */ + app: string; + /** + * + * @type {{ [key: string]: any; }} + * @memberof EventRequest + */ + context?: { [key: string]: any }; + /** + * + * @type {string} + * @memberof EventRequest + */ + clientIp?: string | null; + /** + * + * @type {Date} + * @memberof EventRequest + */ + expires?: Date; + /** + * + * @type {{ [key: string]: any; }} + * @memberof EventRequest + */ + brand?: { [key: string]: any }; +} + +/** + * Check if a given object implements the EventRequest interface. + */ +export function instanceOfEventRequest(value: object): value is EventRequest { + if (!("action" in value) || value["action"] === undefined) return false; + if (!("app" in value) || value["app"] === undefined) return false; + return true; +} + +export function EventRequestFromJSON(json: any): EventRequest { + return EventRequestFromJSONTyped(json, false); +} + +export function EventRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): EventRequest { + if (json == null) { + return json; + } + return { + user: json["user"] == null ? undefined : json["user"], + action: EventActionsFromJSON(json["action"]), + app: json["app"], + context: json["context"] == null ? undefined : json["context"], + clientIp: json["client_ip"] == null ? undefined : json["client_ip"], + expires: json["expires"] == null ? undefined : new Date(json["expires"]), + brand: json["brand"] == null ? undefined : json["brand"], + }; +} + +export function EventRequestToJSON(json: any): EventRequest { + return EventRequestToJSONTyped(json, false); +} + +export function EventRequestToJSONTyped( + value?: EventRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + user: value["user"], + action: EventActionsToJSON(value["action"]), + app: value["app"], + context: value["context"], + client_ip: value["clientIp"], + expires: value["expires"] == null ? value["expires"] : value["expires"].toISOString(), + brand: value["brand"], + }; +} diff --git a/packages/client-ts/src/models/EventStats.ts b/packages/client-ts/src/models/EventStats.ts new file mode 100644 index 0000000000..e803fdd3a2 --- /dev/null +++ b/packages/client-ts/src/models/EventStats.ts @@ -0,0 +1,74 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Count of unique users in events and aggregated counts per specified deltas + * @export + * @interface EventStats + */ +export interface EventStats { + /** + * + * @type {number} + * @memberof EventStats + */ + uniqueUsers: number; + /** + * + * @type {{ [key: string]: any; }} + * @memberof EventStats + */ + countStep: { [key: string]: any }; +} + +/** + * Check if a given object implements the EventStats interface. + */ +export function instanceOfEventStats(value: object): value is EventStats { + if (!("uniqueUsers" in value) || value["uniqueUsers"] === undefined) return false; + if (!("countStep" in value) || value["countStep"] === undefined) return false; + return true; +} + +export function EventStatsFromJSON(json: any): EventStats { + return EventStatsFromJSONTyped(json, false); +} + +export function EventStatsFromJSONTyped(json: any, ignoreDiscriminator: boolean): EventStats { + if (json == null) { + return json; + } + return { + uniqueUsers: json["unique_users"], + countStep: json["count_step"], + }; +} + +export function EventStatsToJSON(json: any): EventStats { + return EventStatsToJSONTyped(json, false); +} + +export function EventStatsToJSONTyped( + value?: EventStats | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + unique_users: value["uniqueUsers"], + count_step: value["countStep"], + }; +} diff --git a/packages/client-ts/src/models/EventTopPerUser.ts b/packages/client-ts/src/models/EventTopPerUser.ts new file mode 100644 index 0000000000..b8f49f77d4 --- /dev/null +++ b/packages/client-ts/src/models/EventTopPerUser.ts @@ -0,0 +1,86 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Response object of Event's top_per_user + * @export + * @interface EventTopPerUser + */ +export interface EventTopPerUser { + /** + * + * @type {{ [key: string]: any; }} + * @memberof EventTopPerUser + */ + application: { [key: string]: any }; + /** + * + * @type {number} + * @memberof EventTopPerUser + */ + countedEvents: number; + /** + * + * @type {number} + * @memberof EventTopPerUser + */ + uniqueUsers: number; +} + +/** + * Check if a given object implements the EventTopPerUser interface. + */ +export function instanceOfEventTopPerUser(value: object): value is EventTopPerUser { + if (!("application" in value) || value["application"] === undefined) return false; + if (!("countedEvents" in value) || value["countedEvents"] === undefined) return false; + if (!("uniqueUsers" in value) || value["uniqueUsers"] === undefined) return false; + return true; +} + +export function EventTopPerUserFromJSON(json: any): EventTopPerUser { + return EventTopPerUserFromJSONTyped(json, false); +} + +export function EventTopPerUserFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): EventTopPerUser { + if (json == null) { + return json; + } + return { + application: json["application"], + countedEvents: json["counted_events"], + uniqueUsers: json["unique_users"], + }; +} + +export function EventTopPerUserToJSON(json: any): EventTopPerUser { + return EventTopPerUserToJSONTyped(json, false); +} + +export function EventTopPerUserToJSONTyped( + value?: EventTopPerUser | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + application: value["application"], + counted_events: value["countedEvents"], + unique_users: value["uniqueUsers"], + }; +} diff --git a/packages/client-ts/src/models/EventVolume.ts b/packages/client-ts/src/models/EventVolume.ts new file mode 100644 index 0000000000..596ad790ff --- /dev/null +++ b/packages/client-ts/src/models/EventVolume.ts @@ -0,0 +1,86 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { EventActions } from "./EventActions"; +import { EventActionsFromJSON, EventActionsToJSON } from "./EventActions"; + +/** + * Count of events of action created on day for a single event action + * @export + * @interface EventVolume + */ +export interface EventVolume { + /** + * + * @type {EventActions} + * @memberof EventVolume + */ + action: EventActions; + /** + * + * @type {Date} + * @memberof EventVolume + */ + time: Date; + /** + * + * @type {number} + * @memberof EventVolume + */ + count: number; +} + +/** + * Check if a given object implements the EventVolume interface. + */ +export function instanceOfEventVolume(value: object): value is EventVolume { + if (!("action" in value) || value["action"] === undefined) return false; + if (!("time" in value) || value["time"] === undefined) return false; + if (!("count" in value) || value["count"] === undefined) return false; + return true; +} + +export function EventVolumeFromJSON(json: any): EventVolume { + return EventVolumeFromJSONTyped(json, false); +} + +export function EventVolumeFromJSONTyped(json: any, ignoreDiscriminator: boolean): EventVolume { + if (json == null) { + return json; + } + return { + action: EventActionsFromJSON(json["action"]), + time: new Date(json["time"]), + count: json["count"], + }; +} + +export function EventVolumeToJSON(json: any): EventVolume { + return EventVolumeToJSONTyped(json, false); +} + +export function EventVolumeToJSONTyped( + value?: EventVolume | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + action: EventActionsToJSON(value["action"]), + time: value["time"].toISOString(), + count: value["count"], + }; +} diff --git a/packages/client-ts/src/models/EventsRequestedEnum.ts b/packages/client-ts/src/models/EventsRequestedEnum.ts new file mode 100644 index 0000000000..ba7380c572 --- /dev/null +++ b/packages/client-ts/src/models/EventsRequestedEnum.ts @@ -0,0 +1,73 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const EventsRequestedEnum = { + HttpsSchemasOpenidNetSeceventCaepEventTypeSessionRevoked: + "https://schemas.openid.net/secevent/caep/event-type/session-revoked", + HttpsSchemasOpenidNetSeceventCaepEventTypeTokenClaimsChange: + "https://schemas.openid.net/secevent/caep/event-type/token-claims-change", + HttpsSchemasOpenidNetSeceventCaepEventTypeCredentialChange: + "https://schemas.openid.net/secevent/caep/event-type/credential-change", + HttpsSchemasOpenidNetSeceventCaepEventTypeAssuranceLevelChange: + "https://schemas.openid.net/secevent/caep/event-type/assurance-level-change", + HttpsSchemasOpenidNetSeceventCaepEventTypeDeviceComplianceChange: + "https://schemas.openid.net/secevent/caep/event-type/device-compliance-change", + HttpsSchemasOpenidNetSeceventCaepEventTypeSessionEstablished: + "https://schemas.openid.net/secevent/caep/event-type/session-established", + HttpsSchemasOpenidNetSeceventCaepEventTypeSessionPresented: + "https://schemas.openid.net/secevent/caep/event-type/session-presented", + HttpsSchemasOpenidNetSeceventCaepEventTypeRiskLevelChange: + "https://schemas.openid.net/secevent/caep/event-type/risk-level-change", + HttpsSchemasOpenidNetSeceventSsfEventTypeVerification: + "https://schemas.openid.net/secevent/ssf/event-type/verification", + UnknownDefaultOpenApi: "11184809", +} as const; +export type EventsRequestedEnum = (typeof EventsRequestedEnum)[keyof typeof EventsRequestedEnum]; + +export function instanceOfEventsRequestedEnum(value: any): boolean { + for (const key in EventsRequestedEnum) { + if (Object.prototype.hasOwnProperty.call(EventsRequestedEnum, key)) { + if (EventsRequestedEnum[key as keyof typeof EventsRequestedEnum] === value) { + return true; + } + } + } + return false; +} + +export function EventsRequestedEnumFromJSON(json: any): EventsRequestedEnum { + return EventsRequestedEnumFromJSONTyped(json, false); +} + +export function EventsRequestedEnumFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): EventsRequestedEnum { + return json as EventsRequestedEnum; +} + +export function EventsRequestedEnumToJSON(value?: EventsRequestedEnum | null): any { + return value as any; +} + +export function EventsRequestedEnumToJSONTyped( + value: any, + ignoreDiscriminator: boolean, +): EventsRequestedEnum { + return value as EventsRequestedEnum; +} diff --git a/packages/client-ts/src/models/ExpiringBaseGrantModel.ts b/packages/client-ts/src/models/ExpiringBaseGrantModel.ts new file mode 100644 index 0000000000..933c0e2176 --- /dev/null +++ b/packages/client-ts/src/models/ExpiringBaseGrantModel.ts @@ -0,0 +1,115 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Provider } from "./Provider"; +import { ProviderFromJSON, ProviderToJSON } from "./Provider"; +import type { User } from "./User"; +import { UserFromJSON, UserToJSON } from "./User"; + +/** + * Serializer for BaseGrantModel and ExpiringBaseGrant + * @export + * @interface ExpiringBaseGrantModel + */ +export interface ExpiringBaseGrantModel { + /** + * + * @type {number} + * @memberof ExpiringBaseGrantModel + */ + readonly pk: number; + /** + * + * @type {Provider} + * @memberof ExpiringBaseGrantModel + */ + provider: Provider; + /** + * + * @type {User} + * @memberof ExpiringBaseGrantModel + */ + user: User; + /** + * Check if token is expired yet. + * @type {boolean} + * @memberof ExpiringBaseGrantModel + */ + readonly isExpired: boolean; + /** + * + * @type {Date} + * @memberof ExpiringBaseGrantModel + */ + expires?: Date | null; + /** + * + * @type {Array} + * @memberof ExpiringBaseGrantModel + */ + scope: Array; +} + +/** + * Check if a given object implements the ExpiringBaseGrantModel interface. + */ +export function instanceOfExpiringBaseGrantModel(value: object): value is ExpiringBaseGrantModel { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("provider" in value) || value["provider"] === undefined) return false; + if (!("user" in value) || value["user"] === undefined) return false; + if (!("isExpired" in value) || value["isExpired"] === undefined) return false; + if (!("scope" in value) || value["scope"] === undefined) return false; + return true; +} + +export function ExpiringBaseGrantModelFromJSON(json: any): ExpiringBaseGrantModel { + return ExpiringBaseGrantModelFromJSONTyped(json, false); +} + +export function ExpiringBaseGrantModelFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): ExpiringBaseGrantModel { + if (json == null) { + return json; + } + return { + pk: json["pk"], + provider: ProviderFromJSON(json["provider"]), + user: UserFromJSON(json["user"]), + isExpired: json["is_expired"], + expires: json["expires"] == null ? undefined : new Date(json["expires"]), + scope: json["scope"], + }; +} + +export function ExpiringBaseGrantModelToJSON(json: any): ExpiringBaseGrantModel { + return ExpiringBaseGrantModelToJSONTyped(json, false); +} + +export function ExpiringBaseGrantModelToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + provider: ProviderToJSON(value["provider"]), + user: UserToJSON(value["user"]), + expires: value["expires"] == null ? value["expires"] : value["expires"].toISOString(), + scope: value["scope"], + }; +} diff --git a/packages/client-ts/src/models/ExpressionPolicy.ts b/packages/client-ts/src/models/ExpressionPolicy.ts new file mode 100644 index 0000000000..66087f5755 --- /dev/null +++ b/packages/client-ts/src/models/ExpressionPolicy.ts @@ -0,0 +1,136 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Group Membership Policy Serializer + * @export + * @interface ExpressionPolicy + */ +export interface ExpressionPolicy { + /** + * + * @type {string} + * @memberof ExpressionPolicy + */ + readonly pk: string; + /** + * + * @type {string} + * @memberof ExpressionPolicy + */ + name: string; + /** + * When this option is enabled, all executions of this policy will be logged. By default, only execution errors are logged. + * @type {boolean} + * @memberof ExpressionPolicy + */ + executionLogging?: boolean; + /** + * Get object component so that we know how to edit the object + * @type {string} + * @memberof ExpressionPolicy + */ + readonly component: string; + /** + * Return object's verbose_name + * @type {string} + * @memberof ExpressionPolicy + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof ExpressionPolicy + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof ExpressionPolicy + */ + readonly metaModelName: string; + /** + * Return objects policy is bound to + * @type {number} + * @memberof ExpressionPolicy + */ + readonly boundTo: number; + /** + * + * @type {string} + * @memberof ExpressionPolicy + */ + expression: string; +} + +/** + * Check if a given object implements the ExpressionPolicy interface. + */ +export function instanceOfExpressionPolicy(value: object): value is ExpressionPolicy { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + if (!("boundTo" in value) || value["boundTo"] === undefined) return false; + if (!("expression" in value) || value["expression"] === undefined) return false; + return true; +} + +export function ExpressionPolicyFromJSON(json: any): ExpressionPolicy { + return ExpressionPolicyFromJSONTyped(json, false); +} + +export function ExpressionPolicyFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): ExpressionPolicy { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + executionLogging: json["execution_logging"] == null ? undefined : json["execution_logging"], + component: json["component"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + boundTo: json["bound_to"], + expression: json["expression"], + }; +} + +export function ExpressionPolicyToJSON(json: any): ExpressionPolicy { + return ExpressionPolicyToJSONTyped(json, false); +} + +export function ExpressionPolicyToJSONTyped( + value?: Omit< + ExpressionPolicy, + "pk" | "component" | "verbose_name" | "verbose_name_plural" | "meta_model_name" | "bound_to" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + execution_logging: value["executionLogging"], + expression: value["expression"], + }; +} diff --git a/packages/client-ts/src/models/ExpressionPolicyRequest.ts b/packages/client-ts/src/models/ExpressionPolicyRequest.ts new file mode 100644 index 0000000000..b3a8286f67 --- /dev/null +++ b/packages/client-ts/src/models/ExpressionPolicyRequest.ts @@ -0,0 +1,85 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Group Membership Policy Serializer + * @export + * @interface ExpressionPolicyRequest + */ +export interface ExpressionPolicyRequest { + /** + * + * @type {string} + * @memberof ExpressionPolicyRequest + */ + name: string; + /** + * When this option is enabled, all executions of this policy will be logged. By default, only execution errors are logged. + * @type {boolean} + * @memberof ExpressionPolicyRequest + */ + executionLogging?: boolean; + /** + * + * @type {string} + * @memberof ExpressionPolicyRequest + */ + expression: string; +} + +/** + * Check if a given object implements the ExpressionPolicyRequest interface. + */ +export function instanceOfExpressionPolicyRequest(value: object): value is ExpressionPolicyRequest { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("expression" in value) || value["expression"] === undefined) return false; + return true; +} + +export function ExpressionPolicyRequestFromJSON(json: any): ExpressionPolicyRequest { + return ExpressionPolicyRequestFromJSONTyped(json, false); +} + +export function ExpressionPolicyRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): ExpressionPolicyRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + executionLogging: json["execution_logging"] == null ? undefined : json["execution_logging"], + expression: json["expression"], + }; +} + +export function ExpressionPolicyRequestToJSON(json: any): ExpressionPolicyRequest { + return ExpressionPolicyRequestToJSONTyped(json, false); +} + +export function ExpressionPolicyRequestToJSONTyped( + value?: ExpressionPolicyRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + execution_logging: value["executionLogging"], + expression: value["expression"], + }; +} diff --git a/packages/client-ts/src/models/ExtraRoleObjectPermission.ts b/packages/client-ts/src/models/ExtraRoleObjectPermission.ts new file mode 100644 index 0000000000..261f3e2fc5 --- /dev/null +++ b/packages/client-ts/src/models/ExtraRoleObjectPermission.ts @@ -0,0 +1,146 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Role permission with additional object-related data + * @export + * @interface ExtraRoleObjectPermission + */ +export interface ExtraRoleObjectPermission { + /** + * + * @type {number} + * @memberof ExtraRoleObjectPermission + */ + readonly id: number; + /** + * + * @type {string} + * @memberof ExtraRoleObjectPermission + */ + readonly codename: string; + /** + * + * @type {string} + * @memberof ExtraRoleObjectPermission + */ + readonly model: string; + /** + * + * @type {string} + * @memberof ExtraRoleObjectPermission + */ + readonly appLabel: string; + /** + * + * @type {string} + * @memberof ExtraRoleObjectPermission + */ + objectPk: string; + /** + * + * @type {string} + * @memberof ExtraRoleObjectPermission + */ + readonly name: string; + /** + * Get app label from permission's model + * @type {string} + * @memberof ExtraRoleObjectPermission + */ + readonly appLabelVerbose: string; + /** + * Get model label from permission's model + * @type {string} + * @memberof ExtraRoleObjectPermission + */ + readonly modelVerbose: string; + /** + * Get model description from attached model. This operation takes at least + * one additional query, and the description is only shown if the role has the + * view_ permission on the object + * @type {string} + * @memberof ExtraRoleObjectPermission + */ + readonly objectDescription: string | null; +} + +/** + * Check if a given object implements the ExtraRoleObjectPermission interface. + */ +export function instanceOfExtraRoleObjectPermission( + value: object, +): value is ExtraRoleObjectPermission { + if (!("id" in value) || value["id"] === undefined) return false; + if (!("codename" in value) || value["codename"] === undefined) return false; + if (!("model" in value) || value["model"] === undefined) return false; + if (!("appLabel" in value) || value["appLabel"] === undefined) return false; + if (!("objectPk" in value) || value["objectPk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("appLabelVerbose" in value) || value["appLabelVerbose"] === undefined) return false; + if (!("modelVerbose" in value) || value["modelVerbose"] === undefined) return false; + if (!("objectDescription" in value) || value["objectDescription"] === undefined) return false; + return true; +} + +export function ExtraRoleObjectPermissionFromJSON(json: any): ExtraRoleObjectPermission { + return ExtraRoleObjectPermissionFromJSONTyped(json, false); +} + +export function ExtraRoleObjectPermissionFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): ExtraRoleObjectPermission { + if (json == null) { + return json; + } + return { + id: json["id"], + codename: json["codename"], + model: json["model"], + appLabel: json["app_label"], + objectPk: json["object_pk"], + name: json["name"], + appLabelVerbose: json["app_label_verbose"], + modelVerbose: json["model_verbose"], + objectDescription: json["object_description"], + }; +} + +export function ExtraRoleObjectPermissionToJSON(json: any): ExtraRoleObjectPermission { + return ExtraRoleObjectPermissionToJSONTyped(json, false); +} + +export function ExtraRoleObjectPermissionToJSONTyped( + value?: Omit< + ExtraRoleObjectPermission, + | "id" + | "codename" + | "model" + | "app_label" + | "name" + | "app_label_verbose" + | "model_verbose" + | "object_description" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + object_pk: value["objectPk"], + }; +} diff --git a/packages/client-ts/src/models/FileList.ts b/packages/client-ts/src/models/FileList.ts new file mode 100644 index 0000000000..d251cb5ea7 --- /dev/null +++ b/packages/client-ts/src/models/FileList.ts @@ -0,0 +1,95 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { ThemedUrls } from "./ThemedUrls"; +import { ThemedUrlsFromJSON, ThemedUrlsToJSON } from "./ThemedUrls"; + +/** + * Base serializer class which doesn't implement create/update methods + * @export + * @interface FileList + */ +export interface FileList { + /** + * + * @type {string} + * @memberof FileList + */ + name: string; + /** + * + * @type {string} + * @memberof FileList + */ + mimeType: string; + /** + * + * @type {string} + * @memberof FileList + */ + url: string; + /** + * + * @type {ThemedUrls} + * @memberof FileList + */ + themedUrls?: ThemedUrls | null; +} + +/** + * Check if a given object implements the FileList interface. + */ +export function instanceOfFileList(value: object): value is FileList { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("mimeType" in value) || value["mimeType"] === undefined) return false; + if (!("url" in value) || value["url"] === undefined) return false; + return true; +} + +export function FileListFromJSON(json: any): FileList { + return FileListFromJSONTyped(json, false); +} + +export function FileListFromJSONTyped(json: any, ignoreDiscriminator: boolean): FileList { + if (json == null) { + return json; + } + return { + name: json["name"], + mimeType: json["mime_type"], + url: json["url"], + themedUrls: + json["themed_urls"] == null ? undefined : ThemedUrlsFromJSON(json["themed_urls"]), + }; +} + +export function FileListToJSON(json: any): FileList { + return FileListToJSONTyped(json, false); +} + +export function FileListToJSONTyped( + value?: FileList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + mime_type: value["mimeType"], + url: value["url"], + themed_urls: ThemedUrlsToJSON(value["themedUrls"]), + }; +} diff --git a/packages/client-ts/src/models/FleetConnector.ts b/packages/client-ts/src/models/FleetConnector.ts new file mode 100644 index 0000000000..cd7b71e3a2 --- /dev/null +++ b/packages/client-ts/src/models/FleetConnector.ts @@ -0,0 +1,153 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * FleetConnector Serializer + * @export + * @interface FleetConnector + */ +export interface FleetConnector { + /** + * + * @type {string} + * @memberof FleetConnector + */ + connectorUuid?: string; + /** + * + * @type {string} + * @memberof FleetConnector + */ + name: string; + /** + * + * @type {boolean} + * @memberof FleetConnector + */ + enabled?: boolean; + /** + * Get object component so that we know how to edit the object + * @type {string} + * @memberof FleetConnector + */ + readonly component: string; + /** + * Return object's verbose_name + * @type {string} + * @memberof FleetConnector + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof FleetConnector + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof FleetConnector + */ + readonly metaModelName: string; + /** + * + * @type {string} + * @memberof FleetConnector + */ + url: string; + /** + * Configure additional headers to be sent. Mapping should return a dictionary of key-value pairs + * @type {string} + * @memberof FleetConnector + */ + headersMapping?: string | null; + /** + * + * @type {boolean} + * @memberof FleetConnector + */ + mapUsers?: boolean; + /** + * + * @type {boolean} + * @memberof FleetConnector + */ + mapTeamsAccessGroup?: boolean; +} + +/** + * Check if a given object implements the FleetConnector interface. + */ +export function instanceOfFleetConnector(value: object): value is FleetConnector { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + if (!("url" in value) || value["url"] === undefined) return false; + return true; +} + +export function FleetConnectorFromJSON(json: any): FleetConnector { + return FleetConnectorFromJSONTyped(json, false); +} + +export function FleetConnectorFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): FleetConnector { + if (json == null) { + return json; + } + return { + connectorUuid: json["connector_uuid"] == null ? undefined : json["connector_uuid"], + name: json["name"], + enabled: json["enabled"] == null ? undefined : json["enabled"], + component: json["component"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + url: json["url"], + headersMapping: json["headers_mapping"] == null ? undefined : json["headers_mapping"], + mapUsers: json["map_users"] == null ? undefined : json["map_users"], + mapTeamsAccessGroup: + json["map_teams_access_group"] == null ? undefined : json["map_teams_access_group"], + }; +} + +export function FleetConnectorToJSON(json: any): FleetConnector { + return FleetConnectorToJSONTyped(json, false); +} + +export function FleetConnectorToJSONTyped( + value?: Omit< + FleetConnector, + "component" | "verbose_name" | "verbose_name_plural" | "meta_model_name" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + connector_uuid: value["connectorUuid"], + name: value["name"], + enabled: value["enabled"], + url: value["url"], + headers_mapping: value["headersMapping"], + map_users: value["mapUsers"], + map_teams_access_group: value["mapTeamsAccessGroup"], + }; +} diff --git a/packages/client-ts/src/models/FleetConnectorRequest.ts b/packages/client-ts/src/models/FleetConnectorRequest.ts new file mode 100644 index 0000000000..85643d0d7b --- /dev/null +++ b/packages/client-ts/src/models/FleetConnectorRequest.ts @@ -0,0 +1,127 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * FleetConnector Serializer + * @export + * @interface FleetConnectorRequest + */ +export interface FleetConnectorRequest { + /** + * + * @type {string} + * @memberof FleetConnectorRequest + */ + connectorUuid?: string; + /** + * + * @type {string} + * @memberof FleetConnectorRequest + */ + name: string; + /** + * + * @type {boolean} + * @memberof FleetConnectorRequest + */ + enabled?: boolean; + /** + * + * @type {string} + * @memberof FleetConnectorRequest + */ + url: string; + /** + * + * @type {string} + * @memberof FleetConnectorRequest + */ + token: string; + /** + * Configure additional headers to be sent. Mapping should return a dictionary of key-value pairs + * @type {string} + * @memberof FleetConnectorRequest + */ + headersMapping?: string | null; + /** + * + * @type {boolean} + * @memberof FleetConnectorRequest + */ + mapUsers?: boolean; + /** + * + * @type {boolean} + * @memberof FleetConnectorRequest + */ + mapTeamsAccessGroup?: boolean; +} + +/** + * Check if a given object implements the FleetConnectorRequest interface. + */ +export function instanceOfFleetConnectorRequest(value: object): value is FleetConnectorRequest { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("url" in value) || value["url"] === undefined) return false; + if (!("token" in value) || value["token"] === undefined) return false; + return true; +} + +export function FleetConnectorRequestFromJSON(json: any): FleetConnectorRequest { + return FleetConnectorRequestFromJSONTyped(json, false); +} + +export function FleetConnectorRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): FleetConnectorRequest { + if (json == null) { + return json; + } + return { + connectorUuid: json["connector_uuid"] == null ? undefined : json["connector_uuid"], + name: json["name"], + enabled: json["enabled"] == null ? undefined : json["enabled"], + url: json["url"], + token: json["token"], + headersMapping: json["headers_mapping"] == null ? undefined : json["headers_mapping"], + mapUsers: json["map_users"] == null ? undefined : json["map_users"], + mapTeamsAccessGroup: + json["map_teams_access_group"] == null ? undefined : json["map_teams_access_group"], + }; +} + +export function FleetConnectorRequestToJSON(json: any): FleetConnectorRequest { + return FleetConnectorRequestToJSONTyped(json, false); +} + +export function FleetConnectorRequestToJSONTyped( + value?: FleetConnectorRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + connector_uuid: value["connectorUuid"], + name: value["name"], + enabled: value["enabled"], + url: value["url"], + token: value["token"], + headers_mapping: value["headersMapping"], + map_users: value["mapUsers"], + map_teams_access_group: value["mapTeamsAccessGroup"], + }; +} diff --git a/packages/client-ts/src/models/Flow.ts b/packages/client-ts/src/models/Flow.ts new file mode 100644 index 0000000000..a15b3161d7 --- /dev/null +++ b/packages/client-ts/src/models/Flow.ts @@ -0,0 +1,239 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { AuthenticationEnum } from "./AuthenticationEnum"; +import { AuthenticationEnumFromJSON, AuthenticationEnumToJSON } from "./AuthenticationEnum"; +import type { DeniedActionEnum } from "./DeniedActionEnum"; +import { DeniedActionEnumFromJSON, DeniedActionEnumToJSON } from "./DeniedActionEnum"; +import type { FlowDesignationEnum } from "./FlowDesignationEnum"; +import { FlowDesignationEnumFromJSON, FlowDesignationEnumToJSON } from "./FlowDesignationEnum"; +import type { FlowLayoutEnum } from "./FlowLayoutEnum"; +import { FlowLayoutEnumFromJSON, FlowLayoutEnumToJSON } from "./FlowLayoutEnum"; +import type { PolicyEngineMode } from "./PolicyEngineMode"; +import { PolicyEngineModeFromJSON, PolicyEngineModeToJSON } from "./PolicyEngineMode"; +import type { ThemedUrls } from "./ThemedUrls"; +import { ThemedUrlsFromJSON } from "./ThemedUrls"; + +/** + * Flow Serializer + * @export + * @interface Flow + */ +export interface Flow { + /** + * + * @type {string} + * @memberof Flow + */ + readonly pk: string; + /** + * + * @type {string} + * @memberof Flow + */ + readonly policybindingmodelPtrId: string; + /** + * + * @type {string} + * @memberof Flow + */ + name: string; + /** + * Visible in the URL. + * @type {string} + * @memberof Flow + */ + slug: string; + /** + * Shown as the Title in Flow pages. + * @type {string} + * @memberof Flow + */ + title: string; + /** + * Decides what this Flow is used for. For example, the Authentication flow is redirect to when an un-authenticated user visits authentik. + * @type {FlowDesignationEnum} + * @memberof Flow + */ + designation: FlowDesignationEnum; + /** + * Background shown during execution + * @type {string} + * @memberof Flow + */ + background?: string; + /** + * Get the URL to the background image + * @type {string} + * @memberof Flow + */ + readonly backgroundUrl: string; + /** + * + * @type {ThemedUrls} + * @memberof Flow + */ + readonly backgroundThemedUrls: ThemedUrls | null; + /** + * + * @type {Array} + * @memberof Flow + */ + readonly stages: Array; + /** + * + * @type {Array} + * @memberof Flow + */ + readonly policies: Array; + /** + * Get count of cached flows + * @type {number} + * @memberof Flow + */ + readonly cacheCount: number; + /** + * + * @type {PolicyEngineMode} + * @memberof Flow + */ + policyEngineMode?: PolicyEngineMode; + /** + * Enable compatibility mode, increases compatibility with password managers on mobile devices. + * @type {boolean} + * @memberof Flow + */ + compatibilityMode?: boolean; + /** + * Get export URL for flow + * @type {string} + * @memberof Flow + */ + readonly exportUrl: string; + /** + * + * @type {FlowLayoutEnum} + * @memberof Flow + */ + layout?: FlowLayoutEnum; + /** + * Configure what should happen when a flow denies access to a user. + * @type {DeniedActionEnum} + * @memberof Flow + */ + deniedAction?: DeniedActionEnum; + /** + * Required level of authentication and authorization to access a flow. + * @type {AuthenticationEnum} + * @memberof Flow + */ + authentication?: AuthenticationEnum; +} + +/** + * Check if a given object implements the Flow interface. + */ +export function instanceOfFlow(value: object): value is Flow { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("policybindingmodelPtrId" in value) || value["policybindingmodelPtrId"] === undefined) + return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("slug" in value) || value["slug"] === undefined) return false; + if (!("title" in value) || value["title"] === undefined) return false; + if (!("designation" in value) || value["designation"] === undefined) return false; + if (!("backgroundUrl" in value) || value["backgroundUrl"] === undefined) return false; + if (!("backgroundThemedUrls" in value) || value["backgroundThemedUrls"] === undefined) + return false; + if (!("stages" in value) || value["stages"] === undefined) return false; + if (!("policies" in value) || value["policies"] === undefined) return false; + if (!("cacheCount" in value) || value["cacheCount"] === undefined) return false; + if (!("exportUrl" in value) || value["exportUrl"] === undefined) return false; + return true; +} + +export function FlowFromJSON(json: any): Flow { + return FlowFromJSONTyped(json, false); +} + +export function FlowFromJSONTyped(json: any, ignoreDiscriminator: boolean): Flow { + if (json == null) { + return json; + } + return { + pk: json["pk"], + policybindingmodelPtrId: json["policybindingmodel_ptr_id"], + name: json["name"], + slug: json["slug"], + title: json["title"], + designation: FlowDesignationEnumFromJSON(json["designation"]), + background: json["background"] == null ? undefined : json["background"], + backgroundUrl: json["background_url"], + backgroundThemedUrls: ThemedUrlsFromJSON(json["background_themed_urls"]), + stages: json["stages"], + policies: json["policies"], + cacheCount: json["cache_count"], + policyEngineMode: + json["policy_engine_mode"] == null + ? undefined + : PolicyEngineModeFromJSON(json["policy_engine_mode"]), + compatibilityMode: + json["compatibility_mode"] == null ? undefined : json["compatibility_mode"], + exportUrl: json["export_url"], + layout: json["layout"] == null ? undefined : FlowLayoutEnumFromJSON(json["layout"]), + deniedAction: + json["denied_action"] == null + ? undefined + : DeniedActionEnumFromJSON(json["denied_action"]), + authentication: + json["authentication"] == null + ? undefined + : AuthenticationEnumFromJSON(json["authentication"]), + }; +} + +export function FlowToJSON(json: any): Flow { + return FlowToJSONTyped(json, false); +} + +export function FlowToJSONTyped( + value?: Omit< + Flow, + | "pk" + | "policybindingmodel_ptr_id" + | "background_url" + | "background_themed_urls" + | "stages" + | "policies" + | "cache_count" + | "export_url" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + slug: value["slug"], + title: value["title"], + designation: FlowDesignationEnumToJSON(value["designation"]), + background: value["background"], + policy_engine_mode: PolicyEngineModeToJSON(value["policyEngineMode"]), + compatibility_mode: value["compatibilityMode"], + layout: FlowLayoutEnumToJSON(value["layout"]), + denied_action: DeniedActionEnumToJSON(value["deniedAction"]), + authentication: AuthenticationEnumToJSON(value["authentication"]), + }; +} diff --git a/packages/client-ts/src/models/FlowChallengeResponseRequest.ts b/packages/client-ts/src/models/FlowChallengeResponseRequest.ts new file mode 100644 index 0000000000..5d60d7000b --- /dev/null +++ b/packages/client-ts/src/models/FlowChallengeResponseRequest.ts @@ -0,0 +1,453 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { AppleChallengeResponseRequest } from "./AppleChallengeResponseRequest"; +import { + AppleChallengeResponseRequestFromJSONTyped, + AppleChallengeResponseRequestToJSON, +} from "./AppleChallengeResponseRequest"; +import type { AuthenticatorDuoChallengeResponseRequest } from "./AuthenticatorDuoChallengeResponseRequest"; +import { + AuthenticatorDuoChallengeResponseRequestFromJSONTyped, + AuthenticatorDuoChallengeResponseRequestToJSON, +} from "./AuthenticatorDuoChallengeResponseRequest"; +import type { AuthenticatorEmailChallengeResponseRequest } from "./AuthenticatorEmailChallengeResponseRequest"; +import { + AuthenticatorEmailChallengeResponseRequestFromJSONTyped, + AuthenticatorEmailChallengeResponseRequestToJSON, +} from "./AuthenticatorEmailChallengeResponseRequest"; +import type { AuthenticatorSMSChallengeResponseRequest } from "./AuthenticatorSMSChallengeResponseRequest"; +import { + AuthenticatorSMSChallengeResponseRequestFromJSONTyped, + AuthenticatorSMSChallengeResponseRequestToJSON, +} from "./AuthenticatorSMSChallengeResponseRequest"; +import type { AuthenticatorStaticChallengeResponseRequest } from "./AuthenticatorStaticChallengeResponseRequest"; +import { + AuthenticatorStaticChallengeResponseRequestFromJSONTyped, + AuthenticatorStaticChallengeResponseRequestToJSON, +} from "./AuthenticatorStaticChallengeResponseRequest"; +import type { AuthenticatorTOTPChallengeResponseRequest } from "./AuthenticatorTOTPChallengeResponseRequest"; +import { + AuthenticatorTOTPChallengeResponseRequestFromJSONTyped, + AuthenticatorTOTPChallengeResponseRequestToJSON, +} from "./AuthenticatorTOTPChallengeResponseRequest"; +import type { AuthenticatorValidationChallengeResponseRequest } from "./AuthenticatorValidationChallengeResponseRequest"; +import { + AuthenticatorValidationChallengeResponseRequestFromJSONTyped, + AuthenticatorValidationChallengeResponseRequestToJSON, +} from "./AuthenticatorValidationChallengeResponseRequest"; +import type { AuthenticatorWebAuthnChallengeResponseRequest } from "./AuthenticatorWebAuthnChallengeResponseRequest"; +import { + AuthenticatorWebAuthnChallengeResponseRequestFromJSONTyped, + AuthenticatorWebAuthnChallengeResponseRequestToJSON, +} from "./AuthenticatorWebAuthnChallengeResponseRequest"; +import type { AutoSubmitChallengeResponseRequest } from "./AutoSubmitChallengeResponseRequest"; +import { + AutoSubmitChallengeResponseRequestFromJSONTyped, + AutoSubmitChallengeResponseRequestToJSON, +} from "./AutoSubmitChallengeResponseRequest"; +import type { CaptchaChallengeResponseRequest } from "./CaptchaChallengeResponseRequest"; +import { + CaptchaChallengeResponseRequestFromJSONTyped, + CaptchaChallengeResponseRequestToJSON, +} from "./CaptchaChallengeResponseRequest"; +import type { ConsentChallengeResponseRequest } from "./ConsentChallengeResponseRequest"; +import { + ConsentChallengeResponseRequestFromJSONTyped, + ConsentChallengeResponseRequestToJSON, +} from "./ConsentChallengeResponseRequest"; +import type { DummyChallengeResponseRequest } from "./DummyChallengeResponseRequest"; +import { + DummyChallengeResponseRequestFromJSONTyped, + DummyChallengeResponseRequestToJSON, +} from "./DummyChallengeResponseRequest"; +import type { EmailChallengeResponseRequest } from "./EmailChallengeResponseRequest"; +import { + EmailChallengeResponseRequestFromJSONTyped, + EmailChallengeResponseRequestToJSON, +} from "./EmailChallengeResponseRequest"; +import type { EndpointAgentChallengeResponseRequest } from "./EndpointAgentChallengeResponseRequest"; +import { + EndpointAgentChallengeResponseRequestFromJSONTyped, + EndpointAgentChallengeResponseRequestToJSON, +} from "./EndpointAgentChallengeResponseRequest"; +import type { FrameChallengeResponseRequest } from "./FrameChallengeResponseRequest"; +import { + FrameChallengeResponseRequestFromJSONTyped, + FrameChallengeResponseRequestToJSON, +} from "./FrameChallengeResponseRequest"; +import type { IdentificationChallengeResponseRequest } from "./IdentificationChallengeResponseRequest"; +import { + IdentificationChallengeResponseRequestFromJSONTyped, + IdentificationChallengeResponseRequestToJSON, +} from "./IdentificationChallengeResponseRequest"; +import type { IframeLogoutChallengeResponseRequest } from "./IframeLogoutChallengeResponseRequest"; +import { + IframeLogoutChallengeResponseRequestFromJSONTyped, + IframeLogoutChallengeResponseRequestToJSON, +} from "./IframeLogoutChallengeResponseRequest"; +import type { NativeLogoutChallengeResponseRequest } from "./NativeLogoutChallengeResponseRequest"; +import { + NativeLogoutChallengeResponseRequestFromJSONTyped, + NativeLogoutChallengeResponseRequestToJSON, +} from "./NativeLogoutChallengeResponseRequest"; +import type { OAuthDeviceCodeChallengeResponseRequest } from "./OAuthDeviceCodeChallengeResponseRequest"; +import { + OAuthDeviceCodeChallengeResponseRequestFromJSONTyped, + OAuthDeviceCodeChallengeResponseRequestToJSON, +} from "./OAuthDeviceCodeChallengeResponseRequest"; +import type { OAuthDeviceCodeFinishChallengeResponseRequest } from "./OAuthDeviceCodeFinishChallengeResponseRequest"; +import { + OAuthDeviceCodeFinishChallengeResponseRequestFromJSONTyped, + OAuthDeviceCodeFinishChallengeResponseRequestToJSON, +} from "./OAuthDeviceCodeFinishChallengeResponseRequest"; +import type { PasswordChallengeResponseRequest } from "./PasswordChallengeResponseRequest"; +import { + PasswordChallengeResponseRequestFromJSONTyped, + PasswordChallengeResponseRequestToJSON, +} from "./PasswordChallengeResponseRequest"; +import type { PlexAuthenticationChallengeResponseRequest } from "./PlexAuthenticationChallengeResponseRequest"; +import { + PlexAuthenticationChallengeResponseRequestFromJSONTyped, + PlexAuthenticationChallengeResponseRequestToJSON, +} from "./PlexAuthenticationChallengeResponseRequest"; +import type { PromptChallengeResponseRequest } from "./PromptChallengeResponseRequest"; +import { + PromptChallengeResponseRequestFromJSONTyped, + PromptChallengeResponseRequestToJSON, +} from "./PromptChallengeResponseRequest"; +import type { RedirectChallengeResponseRequest } from "./RedirectChallengeResponseRequest"; +import { + RedirectChallengeResponseRequestFromJSONTyped, + RedirectChallengeResponseRequestToJSON, +} from "./RedirectChallengeResponseRequest"; +import type { TelegramChallengeResponseRequest } from "./TelegramChallengeResponseRequest"; +import { + TelegramChallengeResponseRequestFromJSONTyped, + TelegramChallengeResponseRequestToJSON, +} from "./TelegramChallengeResponseRequest"; +import type { UserLoginChallengeResponseRequest } from "./UserLoginChallengeResponseRequest"; +import { + UserLoginChallengeResponseRequestFromJSONTyped, + UserLoginChallengeResponseRequestToJSON, +} from "./UserLoginChallengeResponseRequest"; + +/** + * @type FlowChallengeResponseRequest + * + * @export + */ +export type FlowChallengeResponseRequest = + | ({ component: "ak-provider-iframe-logout" } & IframeLogoutChallengeResponseRequest) + | ({ component: "ak-provider-oauth2-device-code" } & OAuthDeviceCodeChallengeResponseRequest) + | ({ + component: "ak-provider-oauth2-device-code-finish"; + } & OAuthDeviceCodeFinishChallengeResponseRequest) + | ({ component: "ak-provider-saml-native-logout" } & NativeLogoutChallengeResponseRequest) + | ({ component: "ak-source-oauth-apple" } & AppleChallengeResponseRequest) + | ({ component: "ak-source-plex" } & PlexAuthenticationChallengeResponseRequest) + | ({ component: "ak-source-telegram" } & TelegramChallengeResponseRequest) + | ({ component: "ak-stage-authenticator-duo" } & AuthenticatorDuoChallengeResponseRequest) + | ({ component: "ak-stage-authenticator-email" } & AuthenticatorEmailChallengeResponseRequest) + | ({ component: "ak-stage-authenticator-sms" } & AuthenticatorSMSChallengeResponseRequest) + | ({ component: "ak-stage-authenticator-static" } & AuthenticatorStaticChallengeResponseRequest) + | ({ component: "ak-stage-authenticator-totp" } & AuthenticatorTOTPChallengeResponseRequest) + | ({ + component: "ak-stage-authenticator-validate"; + } & AuthenticatorValidationChallengeResponseRequest) + | ({ + component: "ak-stage-authenticator-webauthn"; + } & AuthenticatorWebAuthnChallengeResponseRequest) + | ({ component: "ak-stage-autosubmit" } & AutoSubmitChallengeResponseRequest) + | ({ component: "ak-stage-captcha" } & CaptchaChallengeResponseRequest) + | ({ component: "ak-stage-consent" } & ConsentChallengeResponseRequest) + | ({ component: "ak-stage-dummy" } & DummyChallengeResponseRequest) + | ({ component: "ak-stage-email" } & EmailChallengeResponseRequest) + | ({ component: "ak-stage-endpoint-agent" } & EndpointAgentChallengeResponseRequest) + | ({ component: "ak-stage-identification" } & IdentificationChallengeResponseRequest) + | ({ component: "ak-stage-password" } & PasswordChallengeResponseRequest) + | ({ component: "ak-stage-prompt" } & PromptChallengeResponseRequest) + | ({ component: "ak-stage-user-login" } & UserLoginChallengeResponseRequest) + | ({ component: "xak-flow-frame" } & FrameChallengeResponseRequest) + | ({ component: "xak-flow-redirect" } & RedirectChallengeResponseRequest); + +export function FlowChallengeResponseRequestFromJSON(json: any): FlowChallengeResponseRequest { + return FlowChallengeResponseRequestFromJSONTyped(json, false); +} + +export function FlowChallengeResponseRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): FlowChallengeResponseRequest { + if (json == null) { + return json; + } + switch (json["component"]) { + case "ak-provider-iframe-logout": + return Object.assign( + {}, + IframeLogoutChallengeResponseRequestFromJSONTyped(json, true), + { component: "ak-provider-iframe-logout" } as const, + ); + case "ak-provider-oauth2-device-code": + return Object.assign( + {}, + OAuthDeviceCodeChallengeResponseRequestFromJSONTyped(json, true), + { component: "ak-provider-oauth2-device-code" } as const, + ); + case "ak-provider-oauth2-device-code-finish": + return Object.assign( + {}, + OAuthDeviceCodeFinishChallengeResponseRequestFromJSONTyped(json, true), + { component: "ak-provider-oauth2-device-code-finish" } as const, + ); + case "ak-provider-saml-native-logout": + return Object.assign( + {}, + NativeLogoutChallengeResponseRequestFromJSONTyped(json, true), + { component: "ak-provider-saml-native-logout" } as const, + ); + case "ak-source-oauth-apple": + return Object.assign({}, AppleChallengeResponseRequestFromJSONTyped(json, true), { + component: "ak-source-oauth-apple", + } as const); + case "ak-source-plex": + return Object.assign( + {}, + PlexAuthenticationChallengeResponseRequestFromJSONTyped(json, true), + { component: "ak-source-plex" } as const, + ); + case "ak-source-telegram": + return Object.assign({}, TelegramChallengeResponseRequestFromJSONTyped(json, true), { + component: "ak-source-telegram", + } as const); + case "ak-stage-authenticator-duo": + return Object.assign( + {}, + AuthenticatorDuoChallengeResponseRequestFromJSONTyped(json, true), + { component: "ak-stage-authenticator-duo" } as const, + ); + case "ak-stage-authenticator-email": + return Object.assign( + {}, + AuthenticatorEmailChallengeResponseRequestFromJSONTyped(json, true), + { component: "ak-stage-authenticator-email" } as const, + ); + case "ak-stage-authenticator-sms": + return Object.assign( + {}, + AuthenticatorSMSChallengeResponseRequestFromJSONTyped(json, true), + { component: "ak-stage-authenticator-sms" } as const, + ); + case "ak-stage-authenticator-static": + return Object.assign( + {}, + AuthenticatorStaticChallengeResponseRequestFromJSONTyped(json, true), + { component: "ak-stage-authenticator-static" } as const, + ); + case "ak-stage-authenticator-totp": + return Object.assign( + {}, + AuthenticatorTOTPChallengeResponseRequestFromJSONTyped(json, true), + { component: "ak-stage-authenticator-totp" } as const, + ); + case "ak-stage-authenticator-validate": + return Object.assign( + {}, + AuthenticatorValidationChallengeResponseRequestFromJSONTyped(json, true), + { component: "ak-stage-authenticator-validate" } as const, + ); + case "ak-stage-authenticator-webauthn": + return Object.assign( + {}, + AuthenticatorWebAuthnChallengeResponseRequestFromJSONTyped(json, true), + { component: "ak-stage-authenticator-webauthn" } as const, + ); + case "ak-stage-autosubmit": + return Object.assign({}, AutoSubmitChallengeResponseRequestFromJSONTyped(json, true), { + component: "ak-stage-autosubmit", + } as const); + case "ak-stage-captcha": + return Object.assign({}, CaptchaChallengeResponseRequestFromJSONTyped(json, true), { + component: "ak-stage-captcha", + } as const); + case "ak-stage-consent": + return Object.assign({}, ConsentChallengeResponseRequestFromJSONTyped(json, true), { + component: "ak-stage-consent", + } as const); + case "ak-stage-dummy": + return Object.assign({}, DummyChallengeResponseRequestFromJSONTyped(json, true), { + component: "ak-stage-dummy", + } as const); + case "ak-stage-email": + return Object.assign({}, EmailChallengeResponseRequestFromJSONTyped(json, true), { + component: "ak-stage-email", + } as const); + case "ak-stage-endpoint-agent": + return Object.assign( + {}, + EndpointAgentChallengeResponseRequestFromJSONTyped(json, true), + { component: "ak-stage-endpoint-agent" } as const, + ); + case "ak-stage-identification": + return Object.assign( + {}, + IdentificationChallengeResponseRequestFromJSONTyped(json, true), + { component: "ak-stage-identification" } as const, + ); + case "ak-stage-password": + return Object.assign({}, PasswordChallengeResponseRequestFromJSONTyped(json, true), { + component: "ak-stage-password", + } as const); + case "ak-stage-prompt": + return Object.assign({}, PromptChallengeResponseRequestFromJSONTyped(json, true), { + component: "ak-stage-prompt", + } as const); + case "ak-stage-user-login": + return Object.assign({}, UserLoginChallengeResponseRequestFromJSONTyped(json, true), { + component: "ak-stage-user-login", + } as const); + case "xak-flow-frame": + return Object.assign({}, FrameChallengeResponseRequestFromJSONTyped(json, true), { + component: "xak-flow-frame", + } as const); + case "xak-flow-redirect": + return Object.assign({}, RedirectChallengeResponseRequestFromJSONTyped(json, true), { + component: "xak-flow-redirect", + } as const); + default: + return json; + } +} + +export function FlowChallengeResponseRequestToJSON(json: any): any { + return FlowChallengeResponseRequestToJSONTyped(json, false); +} + +export function FlowChallengeResponseRequestToJSONTyped( + value?: FlowChallengeResponseRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + switch (value["component"]) { + case "ak-provider-iframe-logout": + return Object.assign({}, IframeLogoutChallengeResponseRequestToJSON(value), { + component: "ak-provider-iframe-logout", + } as const); + case "ak-provider-oauth2-device-code": + return Object.assign({}, OAuthDeviceCodeChallengeResponseRequestToJSON(value), { + component: "ak-provider-oauth2-device-code", + } as const); + case "ak-provider-oauth2-device-code-finish": + return Object.assign({}, OAuthDeviceCodeFinishChallengeResponseRequestToJSON(value), { + component: "ak-provider-oauth2-device-code-finish", + } as const); + case "ak-provider-saml-native-logout": + return Object.assign({}, NativeLogoutChallengeResponseRequestToJSON(value), { + component: "ak-provider-saml-native-logout", + } as const); + case "ak-source-oauth-apple": + return Object.assign({}, AppleChallengeResponseRequestToJSON(value), { + component: "ak-source-oauth-apple", + } as const); + case "ak-source-plex": + return Object.assign({}, PlexAuthenticationChallengeResponseRequestToJSON(value), { + component: "ak-source-plex", + } as const); + case "ak-source-telegram": + return Object.assign({}, TelegramChallengeResponseRequestToJSON(value), { + component: "ak-source-telegram", + } as const); + case "ak-stage-authenticator-duo": + return Object.assign({}, AuthenticatorDuoChallengeResponseRequestToJSON(value), { + component: "ak-stage-authenticator-duo", + } as const); + case "ak-stage-authenticator-email": + return Object.assign({}, AuthenticatorEmailChallengeResponseRequestToJSON(value), { + component: "ak-stage-authenticator-email", + } as const); + case "ak-stage-authenticator-sms": + return Object.assign({}, AuthenticatorSMSChallengeResponseRequestToJSON(value), { + component: "ak-stage-authenticator-sms", + } as const); + case "ak-stage-authenticator-static": + return Object.assign({}, AuthenticatorStaticChallengeResponseRequestToJSON(value), { + component: "ak-stage-authenticator-static", + } as const); + case "ak-stage-authenticator-totp": + return Object.assign({}, AuthenticatorTOTPChallengeResponseRequestToJSON(value), { + component: "ak-stage-authenticator-totp", + } as const); + case "ak-stage-authenticator-validate": + return Object.assign({}, AuthenticatorValidationChallengeResponseRequestToJSON(value), { + component: "ak-stage-authenticator-validate", + } as const); + case "ak-stage-authenticator-webauthn": + return Object.assign({}, AuthenticatorWebAuthnChallengeResponseRequestToJSON(value), { + component: "ak-stage-authenticator-webauthn", + } as const); + case "ak-stage-autosubmit": + return Object.assign({}, AutoSubmitChallengeResponseRequestToJSON(value), { + component: "ak-stage-autosubmit", + } as const); + case "ak-stage-captcha": + return Object.assign({}, CaptchaChallengeResponseRequestToJSON(value), { + component: "ak-stage-captcha", + } as const); + case "ak-stage-consent": + return Object.assign({}, ConsentChallengeResponseRequestToJSON(value), { + component: "ak-stage-consent", + } as const); + case "ak-stage-dummy": + return Object.assign({}, DummyChallengeResponseRequestToJSON(value), { + component: "ak-stage-dummy", + } as const); + case "ak-stage-email": + return Object.assign({}, EmailChallengeResponseRequestToJSON(value), { + component: "ak-stage-email", + } as const); + case "ak-stage-endpoint-agent": + return Object.assign({}, EndpointAgentChallengeResponseRequestToJSON(value), { + component: "ak-stage-endpoint-agent", + } as const); + case "ak-stage-identification": + return Object.assign({}, IdentificationChallengeResponseRequestToJSON(value), { + component: "ak-stage-identification", + } as const); + case "ak-stage-password": + return Object.assign({}, PasswordChallengeResponseRequestToJSON(value), { + component: "ak-stage-password", + } as const); + case "ak-stage-prompt": + return Object.assign({}, PromptChallengeResponseRequestToJSON(value), { + component: "ak-stage-prompt", + } as const); + case "ak-stage-user-login": + return Object.assign({}, UserLoginChallengeResponseRequestToJSON(value), { + component: "ak-stage-user-login", + } as const); + case "xak-flow-frame": + return Object.assign({}, FrameChallengeResponseRequestToJSON(value), { + component: "xak-flow-frame", + } as const); + case "xak-flow-redirect": + return Object.assign({}, RedirectChallengeResponseRequestToJSON(value), { + component: "xak-flow-redirect", + } as const); + default: + return value; + } +} diff --git a/packages/client-ts/src/models/FlowDesignationEnum.ts b/packages/client-ts/src/models/FlowDesignationEnum.ts new file mode 100644 index 0000000000..05130afc17 --- /dev/null +++ b/packages/client-ts/src/models/FlowDesignationEnum.ts @@ -0,0 +1,62 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const FlowDesignationEnum = { + Authentication: "authentication", + Authorization: "authorization", + Invalidation: "invalidation", + Enrollment: "enrollment", + Unenrollment: "unenrollment", + Recovery: "recovery", + StageConfiguration: "stage_configuration", + UnknownDefaultOpenApi: "11184809", +} as const; +export type FlowDesignationEnum = (typeof FlowDesignationEnum)[keyof typeof FlowDesignationEnum]; + +export function instanceOfFlowDesignationEnum(value: any): boolean { + for (const key in FlowDesignationEnum) { + if (Object.prototype.hasOwnProperty.call(FlowDesignationEnum, key)) { + if (FlowDesignationEnum[key as keyof typeof FlowDesignationEnum] === value) { + return true; + } + } + } + return false; +} + +export function FlowDesignationEnumFromJSON(json: any): FlowDesignationEnum { + return FlowDesignationEnumFromJSONTyped(json, false); +} + +export function FlowDesignationEnumFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): FlowDesignationEnum { + return json as FlowDesignationEnum; +} + +export function FlowDesignationEnumToJSON(value?: FlowDesignationEnum | null): any { + return value as any; +} + +export function FlowDesignationEnumToJSONTyped( + value: any, + ignoreDiscriminator: boolean, +): FlowDesignationEnum { + return value as FlowDesignationEnum; +} diff --git a/packages/client-ts/src/models/FlowDiagram.ts b/packages/client-ts/src/models/FlowDiagram.ts new file mode 100644 index 0000000000..649edad025 --- /dev/null +++ b/packages/client-ts/src/models/FlowDiagram.ts @@ -0,0 +1,63 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * response of the flow's diagram action + * @export + * @interface FlowDiagram + */ +export interface FlowDiagram { + /** + * + * @type {string} + * @memberof FlowDiagram + */ + readonly diagram: string; +} + +/** + * Check if a given object implements the FlowDiagram interface. + */ +export function instanceOfFlowDiagram(value: object): value is FlowDiagram { + if (!("diagram" in value) || value["diagram"] === undefined) return false; + return true; +} + +export function FlowDiagramFromJSON(json: any): FlowDiagram { + return FlowDiagramFromJSONTyped(json, false); +} + +export function FlowDiagramFromJSONTyped(json: any, ignoreDiscriminator: boolean): FlowDiagram { + if (json == null) { + return json; + } + return { + diagram: json["diagram"], + }; +} + +export function FlowDiagramToJSON(json: any): FlowDiagram { + return FlowDiagramToJSONTyped(json, false); +} + +export function FlowDiagramToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return {}; +} diff --git a/packages/client-ts/src/models/FlowErrorChallenge.ts b/packages/client-ts/src/models/FlowErrorChallenge.ts new file mode 100644 index 0000000000..163aa509db --- /dev/null +++ b/packages/client-ts/src/models/FlowErrorChallenge.ts @@ -0,0 +1,114 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { ContextualFlowInfo } from "./ContextualFlowInfo"; +import { ContextualFlowInfoFromJSON, ContextualFlowInfoToJSON } from "./ContextualFlowInfo"; +import type { ErrorDetail } from "./ErrorDetail"; + +/** + * Challenge class when an unhandled error occurs during a stage. Normal users + * are shown an error message, superusers are shown a full stacktrace. + * @export + * @interface FlowErrorChallenge + */ +export interface FlowErrorChallenge { + /** + * + * @type {ContextualFlowInfo} + * @memberof FlowErrorChallenge + */ + flowInfo?: ContextualFlowInfo; + /** + * + * @type {string} + * @memberof FlowErrorChallenge + */ + component?: string; + /** + * + * @type {{ [key: string]: Array; }} + * @memberof FlowErrorChallenge + */ + responseErrors?: { [key: string]: Array }; + /** + * + * @type {string} + * @memberof FlowErrorChallenge + */ + requestId: string; + /** + * + * @type {string} + * @memberof FlowErrorChallenge + */ + error?: string; + /** + * + * @type {string} + * @memberof FlowErrorChallenge + */ + traceback?: string; +} + +/** + * Check if a given object implements the FlowErrorChallenge interface. + */ +export function instanceOfFlowErrorChallenge(value: object): value is FlowErrorChallenge { + if (!("requestId" in value) || value["requestId"] === undefined) return false; + return true; +} + +export function FlowErrorChallengeFromJSON(json: any): FlowErrorChallenge { + return FlowErrorChallengeFromJSONTyped(json, false); +} + +export function FlowErrorChallengeFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): FlowErrorChallenge { + if (json == null) { + return json; + } + return { + flowInfo: + json["flow_info"] == null ? undefined : ContextualFlowInfoFromJSON(json["flow_info"]), + component: json["component"] == null ? undefined : json["component"], + responseErrors: json["response_errors"] == null ? undefined : json["response_errors"], + requestId: json["request_id"], + error: json["error"] == null ? undefined : json["error"], + traceback: json["traceback"] == null ? undefined : json["traceback"], + }; +} + +export function FlowErrorChallengeToJSON(json: any): FlowErrorChallenge { + return FlowErrorChallengeToJSONTyped(json, false); +} + +export function FlowErrorChallengeToJSONTyped( + value?: FlowErrorChallenge | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + flow_info: ContextualFlowInfoToJSON(value["flowInfo"]), + component: value["component"], + response_errors: value["responseErrors"], + request_id: value["requestId"], + error: value["error"], + traceback: value["traceback"], + }; +} diff --git a/packages/client-ts/src/models/FlowInspection.ts b/packages/client-ts/src/models/FlowInspection.ts new file mode 100644 index 0000000000..12e8de7b27 --- /dev/null +++ b/packages/client-ts/src/models/FlowInspection.ts @@ -0,0 +1,91 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { FlowInspectorPlan } from "./FlowInspectorPlan"; +import { FlowInspectorPlanFromJSON, FlowInspectorPlanToJSON } from "./FlowInspectorPlan"; + +/** + * Serializer for inspect endpoint + * @export + * @interface FlowInspection + */ +export interface FlowInspection { + /** + * + * @type {Array} + * @memberof FlowInspection + */ + plans: Array; + /** + * + * @type {FlowInspectorPlan} + * @memberof FlowInspection + */ + currentPlan?: FlowInspectorPlan; + /** + * + * @type {boolean} + * @memberof FlowInspection + */ + isCompleted: boolean; +} + +/** + * Check if a given object implements the FlowInspection interface. + */ +export function instanceOfFlowInspection(value: object): value is FlowInspection { + if (!("plans" in value) || value["plans"] === undefined) return false; + if (!("isCompleted" in value) || value["isCompleted"] === undefined) return false; + return true; +} + +export function FlowInspectionFromJSON(json: any): FlowInspection { + return FlowInspectionFromJSONTyped(json, false); +} + +export function FlowInspectionFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): FlowInspection { + if (json == null) { + return json; + } + return { + plans: (json["plans"] as Array).map(FlowInspectorPlanFromJSON), + currentPlan: + json["current_plan"] == null + ? undefined + : FlowInspectorPlanFromJSON(json["current_plan"]), + isCompleted: json["is_completed"], + }; +} + +export function FlowInspectionToJSON(json: any): FlowInspection { + return FlowInspectionToJSONTyped(json, false); +} + +export function FlowInspectionToJSONTyped( + value?: FlowInspection | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + plans: (value["plans"] as Array).map(FlowInspectorPlanToJSON), + current_plan: FlowInspectorPlanToJSON(value["currentPlan"]), + is_completed: value["isCompleted"], + }; +} diff --git a/packages/client-ts/src/models/FlowInspectorPlan.ts b/packages/client-ts/src/models/FlowInspectorPlan.ts new file mode 100644 index 0000000000..8964770ad5 --- /dev/null +++ b/packages/client-ts/src/models/FlowInspectorPlan.ts @@ -0,0 +1,96 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { FlowStageBinding } from "./FlowStageBinding"; +import { FlowStageBindingFromJSON } from "./FlowStageBinding"; + +/** + * Serializer for an active FlowPlan + * @export + * @interface FlowInspectorPlan + */ +export interface FlowInspectorPlan { + /** + * + * @type {FlowStageBinding} + * @memberof FlowInspectorPlan + */ + readonly currentStage: FlowStageBinding; + /** + * + * @type {FlowStageBinding} + * @memberof FlowInspectorPlan + */ + readonly nextPlannedStage: FlowStageBinding; + /** + * Get the plan's context, sanitized + * @type {{ [key: string]: any; }} + * @memberof FlowInspectorPlan + */ + readonly planContext: { [key: string]: any }; + /** + * Get a unique session ID + * @type {string} + * @memberof FlowInspectorPlan + */ + readonly sessionId: string; +} + +/** + * Check if a given object implements the FlowInspectorPlan interface. + */ +export function instanceOfFlowInspectorPlan(value: object): value is FlowInspectorPlan { + if (!("currentStage" in value) || value["currentStage"] === undefined) return false; + if (!("nextPlannedStage" in value) || value["nextPlannedStage"] === undefined) return false; + if (!("planContext" in value) || value["planContext"] === undefined) return false; + if (!("sessionId" in value) || value["sessionId"] === undefined) return false; + return true; +} + +export function FlowInspectorPlanFromJSON(json: any): FlowInspectorPlan { + return FlowInspectorPlanFromJSONTyped(json, false); +} + +export function FlowInspectorPlanFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): FlowInspectorPlan { + if (json == null) { + return json; + } + return { + currentStage: FlowStageBindingFromJSON(json["current_stage"]), + nextPlannedStage: FlowStageBindingFromJSON(json["next_planned_stage"]), + planContext: json["plan_context"], + sessionId: json["session_id"], + }; +} + +export function FlowInspectorPlanToJSON(json: any): FlowInspectorPlan { + return FlowInspectorPlanToJSONTyped(json, false); +} + +export function FlowInspectorPlanToJSONTyped( + value?: Omit< + FlowInspectorPlan, + "current_stage" | "next_planned_stage" | "plan_context" | "session_id" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return {}; +} diff --git a/packages/client-ts/src/models/FlowLayoutEnum.ts b/packages/client-ts/src/models/FlowLayoutEnum.ts new file mode 100644 index 0000000000..f771e07927 --- /dev/null +++ b/packages/client-ts/src/models/FlowLayoutEnum.ts @@ -0,0 +1,62 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const FlowLayoutEnum = { + Stacked: "stacked", + ContentLeft: "content_left", + ContentRight: "content_right", + SidebarLeft: "sidebar_left", + SidebarRight: "sidebar_right", + SidebarLeftFrameBackground: "sidebar_left_frame_background", + SidebarRightFrameBackground: "sidebar_right_frame_background", + UnknownDefaultOpenApi: "11184809", +} as const; +export type FlowLayoutEnum = (typeof FlowLayoutEnum)[keyof typeof FlowLayoutEnum]; + +export function instanceOfFlowLayoutEnum(value: any): boolean { + for (const key in FlowLayoutEnum) { + if (Object.prototype.hasOwnProperty.call(FlowLayoutEnum, key)) { + if (FlowLayoutEnum[key as keyof typeof FlowLayoutEnum] === value) { + return true; + } + } + } + return false; +} + +export function FlowLayoutEnumFromJSON(json: any): FlowLayoutEnum { + return FlowLayoutEnumFromJSONTyped(json, false); +} + +export function FlowLayoutEnumFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): FlowLayoutEnum { + return json as FlowLayoutEnum; +} + +export function FlowLayoutEnumToJSON(value?: FlowLayoutEnum | null): any { + return value as any; +} + +export function FlowLayoutEnumToJSONTyped( + value: any, + ignoreDiscriminator: boolean, +): FlowLayoutEnum { + return value as FlowLayoutEnum; +} diff --git a/packages/client-ts/src/models/FlowRequest.ts b/packages/client-ts/src/models/FlowRequest.ts new file mode 100644 index 0000000000..424e96532a --- /dev/null +++ b/packages/client-ts/src/models/FlowRequest.ts @@ -0,0 +1,161 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { AuthenticationEnum } from "./AuthenticationEnum"; +import { AuthenticationEnumFromJSON, AuthenticationEnumToJSON } from "./AuthenticationEnum"; +import type { DeniedActionEnum } from "./DeniedActionEnum"; +import { DeniedActionEnumFromJSON, DeniedActionEnumToJSON } from "./DeniedActionEnum"; +import type { FlowDesignationEnum } from "./FlowDesignationEnum"; +import { FlowDesignationEnumFromJSON, FlowDesignationEnumToJSON } from "./FlowDesignationEnum"; +import type { FlowLayoutEnum } from "./FlowLayoutEnum"; +import { FlowLayoutEnumFromJSON, FlowLayoutEnumToJSON } from "./FlowLayoutEnum"; +import type { PolicyEngineMode } from "./PolicyEngineMode"; +import { PolicyEngineModeFromJSON, PolicyEngineModeToJSON } from "./PolicyEngineMode"; + +/** + * Flow Serializer + * @export + * @interface FlowRequest + */ +export interface FlowRequest { + /** + * + * @type {string} + * @memberof FlowRequest + */ + name: string; + /** + * Visible in the URL. + * @type {string} + * @memberof FlowRequest + */ + slug: string; + /** + * Shown as the Title in Flow pages. + * @type {string} + * @memberof FlowRequest + */ + title: string; + /** + * Decides what this Flow is used for. For example, the Authentication flow is redirect to when an un-authenticated user visits authentik. + * @type {FlowDesignationEnum} + * @memberof FlowRequest + */ + designation: FlowDesignationEnum; + /** + * Background shown during execution + * @type {string} + * @memberof FlowRequest + */ + background?: string; + /** + * + * @type {PolicyEngineMode} + * @memberof FlowRequest + */ + policyEngineMode?: PolicyEngineMode; + /** + * Enable compatibility mode, increases compatibility with password managers on mobile devices. + * @type {boolean} + * @memberof FlowRequest + */ + compatibilityMode?: boolean; + /** + * + * @type {FlowLayoutEnum} + * @memberof FlowRequest + */ + layout?: FlowLayoutEnum; + /** + * Configure what should happen when a flow denies access to a user. + * @type {DeniedActionEnum} + * @memberof FlowRequest + */ + deniedAction?: DeniedActionEnum; + /** + * Required level of authentication and authorization to access a flow. + * @type {AuthenticationEnum} + * @memberof FlowRequest + */ + authentication?: AuthenticationEnum; +} + +/** + * Check if a given object implements the FlowRequest interface. + */ +export function instanceOfFlowRequest(value: object): value is FlowRequest { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("slug" in value) || value["slug"] === undefined) return false; + if (!("title" in value) || value["title"] === undefined) return false; + if (!("designation" in value) || value["designation"] === undefined) return false; + return true; +} + +export function FlowRequestFromJSON(json: any): FlowRequest { + return FlowRequestFromJSONTyped(json, false); +} + +export function FlowRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): FlowRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + slug: json["slug"], + title: json["title"], + designation: FlowDesignationEnumFromJSON(json["designation"]), + background: json["background"] == null ? undefined : json["background"], + policyEngineMode: + json["policy_engine_mode"] == null + ? undefined + : PolicyEngineModeFromJSON(json["policy_engine_mode"]), + compatibilityMode: + json["compatibility_mode"] == null ? undefined : json["compatibility_mode"], + layout: json["layout"] == null ? undefined : FlowLayoutEnumFromJSON(json["layout"]), + deniedAction: + json["denied_action"] == null + ? undefined + : DeniedActionEnumFromJSON(json["denied_action"]), + authentication: + json["authentication"] == null + ? undefined + : AuthenticationEnumFromJSON(json["authentication"]), + }; +} + +export function FlowRequestToJSON(json: any): FlowRequest { + return FlowRequestToJSONTyped(json, false); +} + +export function FlowRequestToJSONTyped( + value?: FlowRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + slug: value["slug"], + title: value["title"], + designation: FlowDesignationEnumToJSON(value["designation"]), + background: value["background"], + policy_engine_mode: PolicyEngineModeToJSON(value["policyEngineMode"]), + compatibility_mode: value["compatibilityMode"], + layout: FlowLayoutEnumToJSON(value["layout"]), + denied_action: DeniedActionEnumToJSON(value["deniedAction"]), + authentication: AuthenticationEnumToJSON(value["authentication"]), + }; +} diff --git a/packages/client-ts/src/models/FlowSet.ts b/packages/client-ts/src/models/FlowSet.ts new file mode 100644 index 0000000000..3c8b943a3e --- /dev/null +++ b/packages/client-ts/src/models/FlowSet.ts @@ -0,0 +1,176 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { DeniedActionEnum } from "./DeniedActionEnum"; +import { DeniedActionEnumFromJSON, DeniedActionEnumToJSON } from "./DeniedActionEnum"; +import type { FlowDesignationEnum } from "./FlowDesignationEnum"; +import { FlowDesignationEnumFromJSON, FlowDesignationEnumToJSON } from "./FlowDesignationEnum"; +import type { FlowLayoutEnum } from "./FlowLayoutEnum"; +import { FlowLayoutEnumFromJSON, FlowLayoutEnumToJSON } from "./FlowLayoutEnum"; +import type { PolicyEngineMode } from "./PolicyEngineMode"; +import { PolicyEngineModeFromJSON, PolicyEngineModeToJSON } from "./PolicyEngineMode"; + +/** + * Stripped down flow serializer + * @export + * @interface FlowSet + */ +export interface FlowSet { + /** + * + * @type {string} + * @memberof FlowSet + */ + readonly pk: string; + /** + * + * @type {string} + * @memberof FlowSet + */ + readonly policybindingmodelPtrId: string; + /** + * + * @type {string} + * @memberof FlowSet + */ + name: string; + /** + * Visible in the URL. + * @type {string} + * @memberof FlowSet + */ + slug: string; + /** + * Shown as the Title in Flow pages. + * @type {string} + * @memberof FlowSet + */ + title: string; + /** + * Decides what this Flow is used for. For example, the Authentication flow is redirect to when an un-authenticated user visits authentik. + * @type {FlowDesignationEnum} + * @memberof FlowSet + */ + designation: FlowDesignationEnum; + /** + * Get the URL to the background image + * @type {string} + * @memberof FlowSet + */ + readonly backgroundUrl: string; + /** + * + * @type {PolicyEngineMode} + * @memberof FlowSet + */ + policyEngineMode?: PolicyEngineMode; + /** + * Enable compatibility mode, increases compatibility with password managers on mobile devices. + * @type {boolean} + * @memberof FlowSet + */ + compatibilityMode?: boolean; + /** + * Get export URL for flow + * @type {string} + * @memberof FlowSet + */ + readonly exportUrl: string; + /** + * + * @type {FlowLayoutEnum} + * @memberof FlowSet + */ + layout?: FlowLayoutEnum; + /** + * Configure what should happen when a flow denies access to a user. + * @type {DeniedActionEnum} + * @memberof FlowSet + */ + deniedAction?: DeniedActionEnum; +} + +/** + * Check if a given object implements the FlowSet interface. + */ +export function instanceOfFlowSet(value: object): value is FlowSet { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("policybindingmodelPtrId" in value) || value["policybindingmodelPtrId"] === undefined) + return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("slug" in value) || value["slug"] === undefined) return false; + if (!("title" in value) || value["title"] === undefined) return false; + if (!("designation" in value) || value["designation"] === undefined) return false; + if (!("backgroundUrl" in value) || value["backgroundUrl"] === undefined) return false; + if (!("exportUrl" in value) || value["exportUrl"] === undefined) return false; + return true; +} + +export function FlowSetFromJSON(json: any): FlowSet { + return FlowSetFromJSONTyped(json, false); +} + +export function FlowSetFromJSONTyped(json: any, ignoreDiscriminator: boolean): FlowSet { + if (json == null) { + return json; + } + return { + pk: json["pk"], + policybindingmodelPtrId: json["policybindingmodel_ptr_id"], + name: json["name"], + slug: json["slug"], + title: json["title"], + designation: FlowDesignationEnumFromJSON(json["designation"]), + backgroundUrl: json["background_url"], + policyEngineMode: + json["policy_engine_mode"] == null + ? undefined + : PolicyEngineModeFromJSON(json["policy_engine_mode"]), + compatibilityMode: + json["compatibility_mode"] == null ? undefined : json["compatibility_mode"], + exportUrl: json["export_url"], + layout: json["layout"] == null ? undefined : FlowLayoutEnumFromJSON(json["layout"]), + deniedAction: + json["denied_action"] == null + ? undefined + : DeniedActionEnumFromJSON(json["denied_action"]), + }; +} + +export function FlowSetToJSON(json: any): FlowSet { + return FlowSetToJSONTyped(json, false); +} + +export function FlowSetToJSONTyped( + value?: Omit< + FlowSet, + "pk" | "policybindingmodel_ptr_id" | "background_url" | "export_url" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + slug: value["slug"], + title: value["title"], + designation: FlowDesignationEnumToJSON(value["designation"]), + policy_engine_mode: PolicyEngineModeToJSON(value["policyEngineMode"]), + compatibility_mode: value["compatibilityMode"], + layout: FlowLayoutEnumToJSON(value["layout"]), + denied_action: DeniedActionEnumToJSON(value["deniedAction"]), + }; +} diff --git a/packages/client-ts/src/models/FlowStageBinding.ts b/packages/client-ts/src/models/FlowStageBinding.ts new file mode 100644 index 0000000000..456a9ace14 --- /dev/null +++ b/packages/client-ts/src/models/FlowStageBinding.ts @@ -0,0 +1,160 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { InvalidResponseActionEnum } from "./InvalidResponseActionEnum"; +import { + InvalidResponseActionEnumFromJSON, + InvalidResponseActionEnumToJSON, +} from "./InvalidResponseActionEnum"; +import type { PolicyEngineMode } from "./PolicyEngineMode"; +import { PolicyEngineModeFromJSON, PolicyEngineModeToJSON } from "./PolicyEngineMode"; +import type { Stage } from "./Stage"; +import { StageFromJSON } from "./Stage"; + +/** + * FlowStageBinding Serializer + * @export + * @interface FlowStageBinding + */ +export interface FlowStageBinding { + /** + * + * @type {string} + * @memberof FlowStageBinding + */ + readonly pk: string; + /** + * + * @type {string} + * @memberof FlowStageBinding + */ + readonly policybindingmodelPtrId: string; + /** + * + * @type {string} + * @memberof FlowStageBinding + */ + target: string; + /** + * + * @type {string} + * @memberof FlowStageBinding + */ + stage: string; + /** + * + * @type {Stage} + * @memberof FlowStageBinding + */ + readonly stageObj: Stage; + /** + * Evaluate policies during the Flow planning process. + * @type {boolean} + * @memberof FlowStageBinding + */ + evaluateOnPlan?: boolean; + /** + * Evaluate policies when the Stage is presented to the user. + * @type {boolean} + * @memberof FlowStageBinding + */ + reEvaluatePolicies?: boolean; + /** + * + * @type {number} + * @memberof FlowStageBinding + */ + order: number; + /** + * + * @type {PolicyEngineMode} + * @memberof FlowStageBinding + */ + policyEngineMode?: PolicyEngineMode; + /** + * Configure how the flow executor should handle an invalid response to a challenge. RETRY returns the error message and a similar challenge to the executor. RESTART restarts the flow from the beginning, and RESTART_WITH_CONTEXT restarts the flow while keeping the current context. + * @type {InvalidResponseActionEnum} + * @memberof FlowStageBinding + */ + invalidResponseAction?: InvalidResponseActionEnum; +} + +/** + * Check if a given object implements the FlowStageBinding interface. + */ +export function instanceOfFlowStageBinding(value: object): value is FlowStageBinding { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("policybindingmodelPtrId" in value) || value["policybindingmodelPtrId"] === undefined) + return false; + if (!("target" in value) || value["target"] === undefined) return false; + if (!("stage" in value) || value["stage"] === undefined) return false; + if (!("stageObj" in value) || value["stageObj"] === undefined) return false; + if (!("order" in value) || value["order"] === undefined) return false; + return true; +} + +export function FlowStageBindingFromJSON(json: any): FlowStageBinding { + return FlowStageBindingFromJSONTyped(json, false); +} + +export function FlowStageBindingFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): FlowStageBinding { + if (json == null) { + return json; + } + return { + pk: json["pk"], + policybindingmodelPtrId: json["policybindingmodel_ptr_id"], + target: json["target"], + stage: json["stage"], + stageObj: StageFromJSON(json["stage_obj"]), + evaluateOnPlan: json["evaluate_on_plan"] == null ? undefined : json["evaluate_on_plan"], + reEvaluatePolicies: + json["re_evaluate_policies"] == null ? undefined : json["re_evaluate_policies"], + order: json["order"], + policyEngineMode: + json["policy_engine_mode"] == null + ? undefined + : PolicyEngineModeFromJSON(json["policy_engine_mode"]), + invalidResponseAction: + json["invalid_response_action"] == null + ? undefined + : InvalidResponseActionEnumFromJSON(json["invalid_response_action"]), + }; +} + +export function FlowStageBindingToJSON(json: any): FlowStageBinding { + return FlowStageBindingToJSONTyped(json, false); +} + +export function FlowStageBindingToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + target: value["target"], + stage: value["stage"], + evaluate_on_plan: value["evaluateOnPlan"], + re_evaluate_policies: value["reEvaluatePolicies"], + order: value["order"], + policy_engine_mode: PolicyEngineModeToJSON(value["policyEngineMode"]), + invalid_response_action: InvalidResponseActionEnumToJSON(value["invalidResponseAction"]), + }; +} diff --git a/packages/client-ts/src/models/FlowStageBindingRequest.ts b/packages/client-ts/src/models/FlowStageBindingRequest.ts new file mode 100644 index 0000000000..393eb1ce40 --- /dev/null +++ b/packages/client-ts/src/models/FlowStageBindingRequest.ts @@ -0,0 +1,133 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { InvalidResponseActionEnum } from "./InvalidResponseActionEnum"; +import { + InvalidResponseActionEnumFromJSON, + InvalidResponseActionEnumToJSON, +} from "./InvalidResponseActionEnum"; +import type { PolicyEngineMode } from "./PolicyEngineMode"; +import { PolicyEngineModeFromJSON, PolicyEngineModeToJSON } from "./PolicyEngineMode"; + +/** + * FlowStageBinding Serializer + * @export + * @interface FlowStageBindingRequest + */ +export interface FlowStageBindingRequest { + /** + * + * @type {string} + * @memberof FlowStageBindingRequest + */ + target: string; + /** + * + * @type {string} + * @memberof FlowStageBindingRequest + */ + stage: string; + /** + * Evaluate policies during the Flow planning process. + * @type {boolean} + * @memberof FlowStageBindingRequest + */ + evaluateOnPlan?: boolean; + /** + * Evaluate policies when the Stage is presented to the user. + * @type {boolean} + * @memberof FlowStageBindingRequest + */ + reEvaluatePolicies?: boolean; + /** + * + * @type {number} + * @memberof FlowStageBindingRequest + */ + order: number; + /** + * + * @type {PolicyEngineMode} + * @memberof FlowStageBindingRequest + */ + policyEngineMode?: PolicyEngineMode; + /** + * Configure how the flow executor should handle an invalid response to a challenge. RETRY returns the error message and a similar challenge to the executor. RESTART restarts the flow from the beginning, and RESTART_WITH_CONTEXT restarts the flow while keeping the current context. + * @type {InvalidResponseActionEnum} + * @memberof FlowStageBindingRequest + */ + invalidResponseAction?: InvalidResponseActionEnum; +} + +/** + * Check if a given object implements the FlowStageBindingRequest interface. + */ +export function instanceOfFlowStageBindingRequest(value: object): value is FlowStageBindingRequest { + if (!("target" in value) || value["target"] === undefined) return false; + if (!("stage" in value) || value["stage"] === undefined) return false; + if (!("order" in value) || value["order"] === undefined) return false; + return true; +} + +export function FlowStageBindingRequestFromJSON(json: any): FlowStageBindingRequest { + return FlowStageBindingRequestFromJSONTyped(json, false); +} + +export function FlowStageBindingRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): FlowStageBindingRequest { + if (json == null) { + return json; + } + return { + target: json["target"], + stage: json["stage"], + evaluateOnPlan: json["evaluate_on_plan"] == null ? undefined : json["evaluate_on_plan"], + reEvaluatePolicies: + json["re_evaluate_policies"] == null ? undefined : json["re_evaluate_policies"], + order: json["order"], + policyEngineMode: + json["policy_engine_mode"] == null + ? undefined + : PolicyEngineModeFromJSON(json["policy_engine_mode"]), + invalidResponseAction: + json["invalid_response_action"] == null + ? undefined + : InvalidResponseActionEnumFromJSON(json["invalid_response_action"]), + }; +} + +export function FlowStageBindingRequestToJSON(json: any): FlowStageBindingRequest { + return FlowStageBindingRequestToJSONTyped(json, false); +} + +export function FlowStageBindingRequestToJSONTyped( + value?: FlowStageBindingRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + target: value["target"], + stage: value["stage"], + evaluate_on_plan: value["evaluateOnPlan"], + re_evaluate_policies: value["reEvaluatePolicies"], + order: value["order"], + policy_engine_mode: PolicyEngineModeToJSON(value["policyEngineMode"]), + invalid_response_action: InvalidResponseActionEnumToJSON(value["invalidResponseAction"]), + }; +} diff --git a/packages/client-ts/src/models/FooterLink.ts b/packages/client-ts/src/models/FooterLink.ts new file mode 100644 index 0000000000..5691f5687d --- /dev/null +++ b/packages/client-ts/src/models/FooterLink.ts @@ -0,0 +1,71 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Links returned in Config API + * @export + * @interface FooterLink + */ +export interface FooterLink { + /** + * + * @type {string} + * @memberof FooterLink + */ + readonly href: string | null; + /** + * + * @type {string} + * @memberof FooterLink + */ + readonly name: string; +} + +/** + * Check if a given object implements the FooterLink interface. + */ +export function instanceOfFooterLink(value: object): value is FooterLink { + if (!("href" in value) || value["href"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + return true; +} + +export function FooterLinkFromJSON(json: any): FooterLink { + return FooterLinkFromJSONTyped(json, false); +} + +export function FooterLinkFromJSONTyped(json: any, ignoreDiscriminator: boolean): FooterLink { + if (json == null) { + return json; + } + return { + href: json["href"], + name: json["name"], + }; +} + +export function FooterLinkToJSON(json: any): FooterLink { + return FooterLinkToJSONTyped(json, false); +} + +export function FooterLinkToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return {}; +} diff --git a/packages/client-ts/src/models/ForceBindingEnum.ts b/packages/client-ts/src/models/ForceBindingEnum.ts new file mode 100644 index 0000000000..015ba01a33 --- /dev/null +++ b/packages/client-ts/src/models/ForceBindingEnum.ts @@ -0,0 +1,57 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const ForceBindingEnum = { + UrnOasisNamesTcSaml20BindingsHttpPost: "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST", + UrnOasisNamesTcSaml20BindingsHttpRedirect: "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect", + UnknownDefaultOpenApi: "11184809", +} as const; +export type ForceBindingEnum = (typeof ForceBindingEnum)[keyof typeof ForceBindingEnum]; + +export function instanceOfForceBindingEnum(value: any): boolean { + for (const key in ForceBindingEnum) { + if (Object.prototype.hasOwnProperty.call(ForceBindingEnum, key)) { + if (ForceBindingEnum[key as keyof typeof ForceBindingEnum] === value) { + return true; + } + } + } + return false; +} + +export function ForceBindingEnumFromJSON(json: any): ForceBindingEnum { + return ForceBindingEnumFromJSONTyped(json, false); +} + +export function ForceBindingEnumFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): ForceBindingEnum { + return json as ForceBindingEnum; +} + +export function ForceBindingEnumToJSON(value?: ForceBindingEnum | null): any { + return value as any; +} + +export function ForceBindingEnumToJSONTyped( + value: any, + ignoreDiscriminator: boolean, +): ForceBindingEnum { + return value as ForceBindingEnum; +} diff --git a/packages/client-ts/src/models/FormatEnum.ts b/packages/client-ts/src/models/FormatEnum.ts new file mode 100644 index 0000000000..e95575aeb0 --- /dev/null +++ b/packages/client-ts/src/models/FormatEnum.ts @@ -0,0 +1,51 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const FormatEnum = { + Json: "json", + Yaml: "yaml", + UnknownDefaultOpenApi: "11184809", +} as const; +export type FormatEnum = (typeof FormatEnum)[keyof typeof FormatEnum]; + +export function instanceOfFormatEnum(value: any): boolean { + for (const key in FormatEnum) { + if (Object.prototype.hasOwnProperty.call(FormatEnum, key)) { + if (FormatEnum[key as keyof typeof FormatEnum] === value) { + return true; + } + } + } + return false; +} + +export function FormatEnumFromJSON(json: any): FormatEnum { + return FormatEnumFromJSONTyped(json, false); +} + +export function FormatEnumFromJSONTyped(json: any, ignoreDiscriminator: boolean): FormatEnum { + return json as FormatEnum; +} + +export function FormatEnumToJSON(value?: FormatEnum | null): any { + return value as any; +} + +export function FormatEnumToJSONTyped(value: any, ignoreDiscriminator: boolean): FormatEnum { + return value as FormatEnum; +} diff --git a/packages/client-ts/src/models/FrameChallenge.ts b/packages/client-ts/src/models/FrameChallenge.ts new file mode 100644 index 0000000000..ae1b698fb7 --- /dev/null +++ b/packages/client-ts/src/models/FrameChallenge.ts @@ -0,0 +1,114 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { ContextualFlowInfo } from "./ContextualFlowInfo"; +import { ContextualFlowInfoFromJSON, ContextualFlowInfoToJSON } from "./ContextualFlowInfo"; +import type { ErrorDetail } from "./ErrorDetail"; + +/** + * Challenge type to render a frame + * @export + * @interface FrameChallenge + */ +export interface FrameChallenge { + /** + * + * @type {ContextualFlowInfo} + * @memberof FrameChallenge + */ + flowInfo?: ContextualFlowInfo; + /** + * + * @type {string} + * @memberof FrameChallenge + */ + component?: string; + /** + * + * @type {{ [key: string]: Array; }} + * @memberof FrameChallenge + */ + responseErrors?: { [key: string]: Array }; + /** + * + * @type {string} + * @memberof FrameChallenge + */ + url: string; + /** + * + * @type {boolean} + * @memberof FrameChallenge + */ + loadingOverlay?: boolean; + /** + * + * @type {string} + * @memberof FrameChallenge + */ + loadingText: string; +} + +/** + * Check if a given object implements the FrameChallenge interface. + */ +export function instanceOfFrameChallenge(value: object): value is FrameChallenge { + if (!("url" in value) || value["url"] === undefined) return false; + if (!("loadingText" in value) || value["loadingText"] === undefined) return false; + return true; +} + +export function FrameChallengeFromJSON(json: any): FrameChallenge { + return FrameChallengeFromJSONTyped(json, false); +} + +export function FrameChallengeFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): FrameChallenge { + if (json == null) { + return json; + } + return { + flowInfo: + json["flow_info"] == null ? undefined : ContextualFlowInfoFromJSON(json["flow_info"]), + component: json["component"] == null ? undefined : json["component"], + responseErrors: json["response_errors"] == null ? undefined : json["response_errors"], + url: json["url"], + loadingOverlay: json["loading_overlay"] == null ? undefined : json["loading_overlay"], + loadingText: json["loading_text"], + }; +} + +export function FrameChallengeToJSON(json: any): FrameChallenge { + return FrameChallengeToJSONTyped(json, false); +} + +export function FrameChallengeToJSONTyped( + value?: FrameChallenge | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + flow_info: ContextualFlowInfoToJSON(value["flowInfo"]), + component: value["component"], + response_errors: value["responseErrors"], + url: value["url"], + loading_overlay: value["loadingOverlay"], + loading_text: value["loadingText"], + }; +} diff --git a/packages/client-ts/src/models/FrameChallengeResponseRequest.ts b/packages/client-ts/src/models/FrameChallengeResponseRequest.ts new file mode 100644 index 0000000000..27ceb8e9b0 --- /dev/null +++ b/packages/client-ts/src/models/FrameChallengeResponseRequest.ts @@ -0,0 +1,69 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Base class for all challenge responses + * @export + * @interface FrameChallengeResponseRequest + */ +export interface FrameChallengeResponseRequest { + /** + * + * @type {string} + * @memberof FrameChallengeResponseRequest + */ + component?: string; +} + +/** + * Check if a given object implements the FrameChallengeResponseRequest interface. + */ +export function instanceOfFrameChallengeResponseRequest( + value: object, +): value is FrameChallengeResponseRequest { + return true; +} + +export function FrameChallengeResponseRequestFromJSON(json: any): FrameChallengeResponseRequest { + return FrameChallengeResponseRequestFromJSONTyped(json, false); +} + +export function FrameChallengeResponseRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): FrameChallengeResponseRequest { + if (json == null) { + return json; + } + return { + component: json["component"] == null ? undefined : json["component"], + }; +} + +export function FrameChallengeResponseRequestToJSON(json: any): FrameChallengeResponseRequest { + return FrameChallengeResponseRequestToJSONTyped(json, false); +} + +export function FrameChallengeResponseRequestToJSONTyped( + value?: FrameChallengeResponseRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + component: value["component"], + }; +} diff --git a/packages/client-ts/src/models/GenericError.ts b/packages/client-ts/src/models/GenericError.ts new file mode 100644 index 0000000000..aea93498c7 --- /dev/null +++ b/packages/client-ts/src/models/GenericError.ts @@ -0,0 +1,73 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Generic API Error + * @export + * @interface GenericError + */ +export interface GenericError { + /** + * + * @type {string} + * @memberof GenericError + */ + detail: string; + /** + * + * @type {string} + * @memberof GenericError + */ + code?: string; +} + +/** + * Check if a given object implements the GenericError interface. + */ +export function instanceOfGenericError(value: object): value is GenericError { + if (!("detail" in value) || value["detail"] === undefined) return false; + return true; +} + +export function GenericErrorFromJSON(json: any): GenericError { + return GenericErrorFromJSONTyped(json, false); +} + +export function GenericErrorFromJSONTyped(json: any, ignoreDiscriminator: boolean): GenericError { + if (json == null) { + return json; + } + return { + detail: json["detail"], + code: json["code"] == null ? undefined : json["code"], + }; +} + +export function GenericErrorToJSON(json: any): GenericError { + return GenericErrorToJSONTyped(json, false); +} + +export function GenericErrorToJSONTyped( + value?: GenericError | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + detail: value["detail"], + code: value["code"], + }; +} diff --git a/packages/client-ts/src/models/GeoIPPolicy.ts b/packages/client-ts/src/models/GeoIPPolicy.ts new file mode 100644 index 0000000000..b70f93f737 --- /dev/null +++ b/packages/client-ts/src/models/GeoIPPolicy.ts @@ -0,0 +1,216 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { CountryCodeEnum } from "./CountryCodeEnum"; +import { CountryCodeEnumFromJSON, CountryCodeEnumToJSON } from "./CountryCodeEnum"; +import type { GeoIPPolicyCountriesObjInner } from "./GeoIPPolicyCountriesObjInner"; +import { GeoIPPolicyCountriesObjInnerFromJSON } from "./GeoIPPolicyCountriesObjInner"; + +/** + * GeoIP Policy Serializer + * @export + * @interface GeoIPPolicy + */ +export interface GeoIPPolicy { + /** + * + * @type {string} + * @memberof GeoIPPolicy + */ + readonly pk: string; + /** + * + * @type {string} + * @memberof GeoIPPolicy + */ + name: string; + /** + * When this option is enabled, all executions of this policy will be logged. By default, only execution errors are logged. + * @type {boolean} + * @memberof GeoIPPolicy + */ + executionLogging?: boolean; + /** + * Get object component so that we know how to edit the object + * @type {string} + * @memberof GeoIPPolicy + */ + readonly component: string; + /** + * Return object's verbose_name + * @type {string} + * @memberof GeoIPPolicy + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof GeoIPPolicy + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof GeoIPPolicy + */ + readonly metaModelName: string; + /** + * Return objects policy is bound to + * @type {number} + * @memberof GeoIPPolicy + */ + readonly boundTo: number; + /** + * + * @type {Array} + * @memberof GeoIPPolicy + */ + asns?: Array; + /** + * + * @type {Array} + * @memberof GeoIPPolicy + */ + countries: Array; + /** + * + * @type {Array} + * @memberof GeoIPPolicy + */ + readonly countriesObj: Array; + /** + * + * @type {boolean} + * @memberof GeoIPPolicy + */ + checkHistoryDistance?: boolean; + /** + * + * @type {number} + * @memberof GeoIPPolicy + */ + historyMaxDistanceKm?: number; + /** + * + * @type {number} + * @memberof GeoIPPolicy + */ + distanceToleranceKm?: number; + /** + * + * @type {number} + * @memberof GeoIPPolicy + */ + historyLoginCount?: number; + /** + * + * @type {boolean} + * @memberof GeoIPPolicy + */ + checkImpossibleTravel?: boolean; + /** + * + * @type {number} + * @memberof GeoIPPolicy + */ + impossibleToleranceKm?: number; +} + +/** + * Check if a given object implements the GeoIPPolicy interface. + */ +export function instanceOfGeoIPPolicy(value: object): value is GeoIPPolicy { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + if (!("boundTo" in value) || value["boundTo"] === undefined) return false; + if (!("countries" in value) || value["countries"] === undefined) return false; + if (!("countriesObj" in value) || value["countriesObj"] === undefined) return false; + return true; +} + +export function GeoIPPolicyFromJSON(json: any): GeoIPPolicy { + return GeoIPPolicyFromJSONTyped(json, false); +} + +export function GeoIPPolicyFromJSONTyped(json: any, ignoreDiscriminator: boolean): GeoIPPolicy { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + executionLogging: json["execution_logging"] == null ? undefined : json["execution_logging"], + component: json["component"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + boundTo: json["bound_to"], + asns: json["asns"] == null ? undefined : json["asns"], + countries: (json["countries"] as Array).map(CountryCodeEnumFromJSON), + countriesObj: (json["countries_obj"] as Array).map( + GeoIPPolicyCountriesObjInnerFromJSON, + ), + checkHistoryDistance: + json["check_history_distance"] == null ? undefined : json["check_history_distance"], + historyMaxDistanceKm: + json["history_max_distance_km"] == null ? undefined : json["history_max_distance_km"], + distanceToleranceKm: + json["distance_tolerance_km"] == null ? undefined : json["distance_tolerance_km"], + historyLoginCount: + json["history_login_count"] == null ? undefined : json["history_login_count"], + checkImpossibleTravel: + json["check_impossible_travel"] == null ? undefined : json["check_impossible_travel"], + impossibleToleranceKm: + json["impossible_tolerance_km"] == null ? undefined : json["impossible_tolerance_km"], + }; +} + +export function GeoIPPolicyToJSON(json: any): GeoIPPolicy { + return GeoIPPolicyToJSONTyped(json, false); +} + +export function GeoIPPolicyToJSONTyped( + value?: Omit< + GeoIPPolicy, + | "pk" + | "component" + | "verbose_name" + | "verbose_name_plural" + | "meta_model_name" + | "bound_to" + | "countries_obj" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + execution_logging: value["executionLogging"], + asns: value["asns"], + countries: (value["countries"] as Array).map(CountryCodeEnumToJSON), + check_history_distance: value["checkHistoryDistance"], + history_max_distance_km: value["historyMaxDistanceKm"], + distance_tolerance_km: value["distanceToleranceKm"], + history_login_count: value["historyLoginCount"], + check_impossible_travel: value["checkImpossibleTravel"], + impossible_tolerance_km: value["impossibleToleranceKm"], + }; +} diff --git a/packages/client-ts/src/models/GeoIPPolicyCountriesObjInner.ts b/packages/client-ts/src/models/GeoIPPolicyCountriesObjInner.ts new file mode 100644 index 0000000000..b991e6e1a6 --- /dev/null +++ b/packages/client-ts/src/models/GeoIPPolicyCountriesObjInner.ts @@ -0,0 +1,79 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + * @interface GeoIPPolicyCountriesObjInner + */ +export interface GeoIPPolicyCountriesObjInner { + /** + * + * @type {string} + * @memberof GeoIPPolicyCountriesObjInner + */ + code: string; + /** + * + * @type {string} + * @memberof GeoIPPolicyCountriesObjInner + */ + name: string; +} + +/** + * Check if a given object implements the GeoIPPolicyCountriesObjInner interface. + */ +export function instanceOfGeoIPPolicyCountriesObjInner( + value: object, +): value is GeoIPPolicyCountriesObjInner { + if (!("code" in value) || value["code"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + return true; +} + +export function GeoIPPolicyCountriesObjInnerFromJSON(json: any): GeoIPPolicyCountriesObjInner { + return GeoIPPolicyCountriesObjInnerFromJSONTyped(json, false); +} + +export function GeoIPPolicyCountriesObjInnerFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): GeoIPPolicyCountriesObjInner { + if (json == null) { + return json; + } + return { + code: json["code"], + name: json["name"], + }; +} + +export function GeoIPPolicyCountriesObjInnerToJSON(json: any): GeoIPPolicyCountriesObjInner { + return GeoIPPolicyCountriesObjInnerToJSONTyped(json, false); +} + +export function GeoIPPolicyCountriesObjInnerToJSONTyped( + value?: GeoIPPolicyCountriesObjInner | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + code: value["code"], + name: value["name"], + }; +} diff --git a/packages/client-ts/src/models/GeoIPPolicyRequest.ts b/packages/client-ts/src/models/GeoIPPolicyRequest.ts new file mode 100644 index 0000000000..ff29f12bb3 --- /dev/null +++ b/packages/client-ts/src/models/GeoIPPolicyRequest.ts @@ -0,0 +1,150 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { CountryCodeEnum } from "./CountryCodeEnum"; +import { CountryCodeEnumFromJSON, CountryCodeEnumToJSON } from "./CountryCodeEnum"; + +/** + * GeoIP Policy Serializer + * @export + * @interface GeoIPPolicyRequest + */ +export interface GeoIPPolicyRequest { + /** + * + * @type {string} + * @memberof GeoIPPolicyRequest + */ + name: string; + /** + * When this option is enabled, all executions of this policy will be logged. By default, only execution errors are logged. + * @type {boolean} + * @memberof GeoIPPolicyRequest + */ + executionLogging?: boolean; + /** + * + * @type {Array} + * @memberof GeoIPPolicyRequest + */ + asns?: Array; + /** + * + * @type {Array} + * @memberof GeoIPPolicyRequest + */ + countries: Array; + /** + * + * @type {boolean} + * @memberof GeoIPPolicyRequest + */ + checkHistoryDistance?: boolean; + /** + * + * @type {number} + * @memberof GeoIPPolicyRequest + */ + historyMaxDistanceKm?: number; + /** + * + * @type {number} + * @memberof GeoIPPolicyRequest + */ + distanceToleranceKm?: number; + /** + * + * @type {number} + * @memberof GeoIPPolicyRequest + */ + historyLoginCount?: number; + /** + * + * @type {boolean} + * @memberof GeoIPPolicyRequest + */ + checkImpossibleTravel?: boolean; + /** + * + * @type {number} + * @memberof GeoIPPolicyRequest + */ + impossibleToleranceKm?: number; +} + +/** + * Check if a given object implements the GeoIPPolicyRequest interface. + */ +export function instanceOfGeoIPPolicyRequest(value: object): value is GeoIPPolicyRequest { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("countries" in value) || value["countries"] === undefined) return false; + return true; +} + +export function GeoIPPolicyRequestFromJSON(json: any): GeoIPPolicyRequest { + return GeoIPPolicyRequestFromJSONTyped(json, false); +} + +export function GeoIPPolicyRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): GeoIPPolicyRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + executionLogging: json["execution_logging"] == null ? undefined : json["execution_logging"], + asns: json["asns"] == null ? undefined : json["asns"], + countries: (json["countries"] as Array).map(CountryCodeEnumFromJSON), + checkHistoryDistance: + json["check_history_distance"] == null ? undefined : json["check_history_distance"], + historyMaxDistanceKm: + json["history_max_distance_km"] == null ? undefined : json["history_max_distance_km"], + distanceToleranceKm: + json["distance_tolerance_km"] == null ? undefined : json["distance_tolerance_km"], + historyLoginCount: + json["history_login_count"] == null ? undefined : json["history_login_count"], + checkImpossibleTravel: + json["check_impossible_travel"] == null ? undefined : json["check_impossible_travel"], + impossibleToleranceKm: + json["impossible_tolerance_km"] == null ? undefined : json["impossible_tolerance_km"], + }; +} + +export function GeoIPPolicyRequestToJSON(json: any): GeoIPPolicyRequest { + return GeoIPPolicyRequestToJSONTyped(json, false); +} + +export function GeoIPPolicyRequestToJSONTyped( + value?: GeoIPPolicyRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + execution_logging: value["executionLogging"], + asns: value["asns"], + countries: (value["countries"] as Array).map(CountryCodeEnumToJSON), + check_history_distance: value["checkHistoryDistance"], + history_max_distance_km: value["historyMaxDistanceKm"], + distance_tolerance_km: value["distanceToleranceKm"], + history_login_count: value["historyLoginCount"], + check_impossible_travel: value["checkImpossibleTravel"], + impossible_tolerance_km: value["impossibleToleranceKm"], + }; +} diff --git a/packages/client-ts/src/models/GeoipBindingEnum.ts b/packages/client-ts/src/models/GeoipBindingEnum.ts new file mode 100644 index 0000000000..bb933d67a0 --- /dev/null +++ b/packages/client-ts/src/models/GeoipBindingEnum.ts @@ -0,0 +1,59 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const GeoipBindingEnum = { + NoBinding: "no_binding", + BindContinent: "bind_continent", + BindContinentCountry: "bind_continent_country", + BindContinentCountryCity: "bind_continent_country_city", + UnknownDefaultOpenApi: "11184809", +} as const; +export type GeoipBindingEnum = (typeof GeoipBindingEnum)[keyof typeof GeoipBindingEnum]; + +export function instanceOfGeoipBindingEnum(value: any): boolean { + for (const key in GeoipBindingEnum) { + if (Object.prototype.hasOwnProperty.call(GeoipBindingEnum, key)) { + if (GeoipBindingEnum[key as keyof typeof GeoipBindingEnum] === value) { + return true; + } + } + } + return false; +} + +export function GeoipBindingEnumFromJSON(json: any): GeoipBindingEnum { + return GeoipBindingEnumFromJSONTyped(json, false); +} + +export function GeoipBindingEnumFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): GeoipBindingEnum { + return json as GeoipBindingEnum; +} + +export function GeoipBindingEnumToJSON(value?: GeoipBindingEnum | null): any { + return value as any; +} + +export function GeoipBindingEnumToJSONTyped( + value: any, + ignoreDiscriminator: boolean, +): GeoipBindingEnum { + return value as GeoipBindingEnum; +} diff --git a/packages/client-ts/src/models/GlobalTaskStatus.ts b/packages/client-ts/src/models/GlobalTaskStatus.ts new file mode 100644 index 0000000000..f9d6b3f0eb --- /dev/null +++ b/packages/client-ts/src/models/GlobalTaskStatus.ts @@ -0,0 +1,150 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + * @interface GlobalTaskStatus + */ +export interface GlobalTaskStatus { + /** + * + * @type {number} + * @memberof GlobalTaskStatus + */ + readonly queued: number; + /** + * + * @type {number} + * @memberof GlobalTaskStatus + */ + readonly consumed: number; + /** + * + * @type {number} + * @memberof GlobalTaskStatus + */ + readonly preprocess: number; + /** + * + * @type {number} + * @memberof GlobalTaskStatus + */ + readonly running: number; + /** + * + * @type {number} + * @memberof GlobalTaskStatus + */ + readonly postprocess: number; + /** + * + * @type {number} + * @memberof GlobalTaskStatus + */ + readonly rejected: number; + /** + * + * @type {number} + * @memberof GlobalTaskStatus + */ + readonly done: number; + /** + * + * @type {number} + * @memberof GlobalTaskStatus + */ + readonly info: number; + /** + * + * @type {number} + * @memberof GlobalTaskStatus + */ + readonly warning: number; + /** + * + * @type {number} + * @memberof GlobalTaskStatus + */ + readonly error: number; +} + +/** + * Check if a given object implements the GlobalTaskStatus interface. + */ +export function instanceOfGlobalTaskStatus(value: object): value is GlobalTaskStatus { + if (!("queued" in value) || value["queued"] === undefined) return false; + if (!("consumed" in value) || value["consumed"] === undefined) return false; + if (!("preprocess" in value) || value["preprocess"] === undefined) return false; + if (!("running" in value) || value["running"] === undefined) return false; + if (!("postprocess" in value) || value["postprocess"] === undefined) return false; + if (!("rejected" in value) || value["rejected"] === undefined) return false; + if (!("done" in value) || value["done"] === undefined) return false; + if (!("info" in value) || value["info"] === undefined) return false; + if (!("warning" in value) || value["warning"] === undefined) return false; + if (!("error" in value) || value["error"] === undefined) return false; + return true; +} + +export function GlobalTaskStatusFromJSON(json: any): GlobalTaskStatus { + return GlobalTaskStatusFromJSONTyped(json, false); +} + +export function GlobalTaskStatusFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): GlobalTaskStatus { + if (json == null) { + return json; + } + return { + queued: json["queued"], + consumed: json["consumed"], + preprocess: json["preprocess"], + running: json["running"], + postprocess: json["postprocess"], + rejected: json["rejected"], + done: json["done"], + info: json["info"], + warning: json["warning"], + error: json["error"], + }; +} + +export function GlobalTaskStatusToJSON(json: any): GlobalTaskStatus { + return GlobalTaskStatusToJSONTyped(json, false); +} + +export function GlobalTaskStatusToJSONTyped( + value?: Omit< + GlobalTaskStatus, + | "queued" + | "consumed" + | "preprocess" + | "running" + | "postprocess" + | "rejected" + | "done" + | "info" + | "warning" + | "error" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return {}; +} diff --git a/packages/client-ts/src/models/GoogleChromeConnector.ts b/packages/client-ts/src/models/GoogleChromeConnector.ts new file mode 100644 index 0000000000..423de9a280 --- /dev/null +++ b/packages/client-ts/src/models/GoogleChromeConnector.ts @@ -0,0 +1,136 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * GoogleChromeConnector Serializer + * @export + * @interface GoogleChromeConnector + */ +export interface GoogleChromeConnector { + /** + * + * @type {string} + * @memberof GoogleChromeConnector + */ + connectorUuid?: string; + /** + * + * @type {string} + * @memberof GoogleChromeConnector + */ + name: string; + /** + * + * @type {boolean} + * @memberof GoogleChromeConnector + */ + enabled?: boolean; + /** + * Get object component so that we know how to edit the object + * @type {string} + * @memberof GoogleChromeConnector + */ + readonly component: string; + /** + * Return object's verbose_name + * @type {string} + * @memberof GoogleChromeConnector + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof GoogleChromeConnector + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof GoogleChromeConnector + */ + readonly metaModelName: string; + /** + * + * @type {{ [key: string]: any; }} + * @memberof GoogleChromeConnector + */ + credentials: { [key: string]: any }; + /** + * Full URL to be used in Google Workspace configuration + * @type {string} + * @memberof GoogleChromeConnector + */ + readonly chromeUrl: string | null; +} + +/** + * Check if a given object implements the GoogleChromeConnector interface. + */ +export function instanceOfGoogleChromeConnector(value: object): value is GoogleChromeConnector { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + if (!("credentials" in value) || value["credentials"] === undefined) return false; + if (!("chromeUrl" in value) || value["chromeUrl"] === undefined) return false; + return true; +} + +export function GoogleChromeConnectorFromJSON(json: any): GoogleChromeConnector { + return GoogleChromeConnectorFromJSONTyped(json, false); +} + +export function GoogleChromeConnectorFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): GoogleChromeConnector { + if (json == null) { + return json; + } + return { + connectorUuid: json["connector_uuid"] == null ? undefined : json["connector_uuid"], + name: json["name"], + enabled: json["enabled"] == null ? undefined : json["enabled"], + component: json["component"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + credentials: json["credentials"], + chromeUrl: json["chrome_url"], + }; +} + +export function GoogleChromeConnectorToJSON(json: any): GoogleChromeConnector { + return GoogleChromeConnectorToJSONTyped(json, false); +} + +export function GoogleChromeConnectorToJSONTyped( + value?: Omit< + GoogleChromeConnector, + "component" | "verbose_name" | "verbose_name_plural" | "meta_model_name" | "chrome_url" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + connector_uuid: value["connectorUuid"], + name: value["name"], + enabled: value["enabled"], + credentials: value["credentials"], + }; +} diff --git a/packages/client-ts/src/models/GoogleChromeConnectorRequest.ts b/packages/client-ts/src/models/GoogleChromeConnectorRequest.ts new file mode 100644 index 0000000000..54236cb0c6 --- /dev/null +++ b/packages/client-ts/src/models/GoogleChromeConnectorRequest.ts @@ -0,0 +1,95 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * GoogleChromeConnector Serializer + * @export + * @interface GoogleChromeConnectorRequest + */ +export interface GoogleChromeConnectorRequest { + /** + * + * @type {string} + * @memberof GoogleChromeConnectorRequest + */ + connectorUuid?: string; + /** + * + * @type {string} + * @memberof GoogleChromeConnectorRequest + */ + name: string; + /** + * + * @type {boolean} + * @memberof GoogleChromeConnectorRequest + */ + enabled?: boolean; + /** + * + * @type {{ [key: string]: any; }} + * @memberof GoogleChromeConnectorRequest + */ + credentials: { [key: string]: any }; +} + +/** + * Check if a given object implements the GoogleChromeConnectorRequest interface. + */ +export function instanceOfGoogleChromeConnectorRequest( + value: object, +): value is GoogleChromeConnectorRequest { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("credentials" in value) || value["credentials"] === undefined) return false; + return true; +} + +export function GoogleChromeConnectorRequestFromJSON(json: any): GoogleChromeConnectorRequest { + return GoogleChromeConnectorRequestFromJSONTyped(json, false); +} + +export function GoogleChromeConnectorRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): GoogleChromeConnectorRequest { + if (json == null) { + return json; + } + return { + connectorUuid: json["connector_uuid"] == null ? undefined : json["connector_uuid"], + name: json["name"], + enabled: json["enabled"] == null ? undefined : json["enabled"], + credentials: json["credentials"], + }; +} + +export function GoogleChromeConnectorRequestToJSON(json: any): GoogleChromeConnectorRequest { + return GoogleChromeConnectorRequestToJSONTyped(json, false); +} + +export function GoogleChromeConnectorRequestToJSONTyped( + value?: GoogleChromeConnectorRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + connector_uuid: value["connectorUuid"], + name: value["name"], + enabled: value["enabled"], + credentials: value["credentials"], + }; +} diff --git a/packages/client-ts/src/models/GoogleEndpointDevice.ts b/packages/client-ts/src/models/GoogleEndpointDevice.ts new file mode 100644 index 0000000000..35e470acf4 --- /dev/null +++ b/packages/client-ts/src/models/GoogleEndpointDevice.ts @@ -0,0 +1,76 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Serializer for Endpoint authenticator devices + * @export + * @interface GoogleEndpointDevice + */ +export interface GoogleEndpointDevice { + /** + * + * @type {string} + * @memberof GoogleEndpointDevice + */ + pk?: string; + /** + * The human-readable name of this device. + * @type {string} + * @memberof GoogleEndpointDevice + */ + name: string; +} + +/** + * Check if a given object implements the GoogleEndpointDevice interface. + */ +export function instanceOfGoogleEndpointDevice(value: object): value is GoogleEndpointDevice { + if (!("name" in value) || value["name"] === undefined) return false; + return true; +} + +export function GoogleEndpointDeviceFromJSON(json: any): GoogleEndpointDevice { + return GoogleEndpointDeviceFromJSONTyped(json, false); +} + +export function GoogleEndpointDeviceFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): GoogleEndpointDevice { + if (json == null) { + return json; + } + return { + pk: json["pk"] == null ? undefined : json["pk"], + name: json["name"], + }; +} + +export function GoogleEndpointDeviceToJSON(json: any): GoogleEndpointDevice { + return GoogleEndpointDeviceToJSONTyped(json, false); +} + +export function GoogleEndpointDeviceToJSONTyped( + value?: GoogleEndpointDevice | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pk: value["pk"], + name: value["name"], + }; +} diff --git a/packages/client-ts/src/models/GoogleEndpointDeviceRequest.ts b/packages/client-ts/src/models/GoogleEndpointDeviceRequest.ts new file mode 100644 index 0000000000..60b742befc --- /dev/null +++ b/packages/client-ts/src/models/GoogleEndpointDeviceRequest.ts @@ -0,0 +1,78 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Serializer for Endpoint authenticator devices + * @export + * @interface GoogleEndpointDeviceRequest + */ +export interface GoogleEndpointDeviceRequest { + /** + * + * @type {string} + * @memberof GoogleEndpointDeviceRequest + */ + pk?: string; + /** + * The human-readable name of this device. + * @type {string} + * @memberof GoogleEndpointDeviceRequest + */ + name: string; +} + +/** + * Check if a given object implements the GoogleEndpointDeviceRequest interface. + */ +export function instanceOfGoogleEndpointDeviceRequest( + value: object, +): value is GoogleEndpointDeviceRequest { + if (!("name" in value) || value["name"] === undefined) return false; + return true; +} + +export function GoogleEndpointDeviceRequestFromJSON(json: any): GoogleEndpointDeviceRequest { + return GoogleEndpointDeviceRequestFromJSONTyped(json, false); +} + +export function GoogleEndpointDeviceRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): GoogleEndpointDeviceRequest { + if (json == null) { + return json; + } + return { + pk: json["pk"] == null ? undefined : json["pk"], + name: json["name"], + }; +} + +export function GoogleEndpointDeviceRequestToJSON(json: any): GoogleEndpointDeviceRequest { + return GoogleEndpointDeviceRequestToJSONTyped(json, false); +} + +export function GoogleEndpointDeviceRequestToJSONTyped( + value?: GoogleEndpointDeviceRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pk: value["pk"], + name: value["name"], + }; +} diff --git a/packages/client-ts/src/models/GoogleWorkspaceProvider.ts b/packages/client-ts/src/models/GoogleWorkspaceProvider.ts new file mode 100644 index 0000000000..3d8026ab66 --- /dev/null +++ b/packages/client-ts/src/models/GoogleWorkspaceProvider.ts @@ -0,0 +1,265 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { OutgoingSyncDeleteAction } from "./OutgoingSyncDeleteAction"; +import { + OutgoingSyncDeleteActionFromJSON, + OutgoingSyncDeleteActionToJSON, +} from "./OutgoingSyncDeleteAction"; + +/** + * GoogleWorkspaceProvider Serializer + * @export + * @interface GoogleWorkspaceProvider + */ +export interface GoogleWorkspaceProvider { + /** + * + * @type {number} + * @memberof GoogleWorkspaceProvider + */ + readonly pk: number; + /** + * + * @type {string} + * @memberof GoogleWorkspaceProvider + */ + name: string; + /** + * + * @type {Array} + * @memberof GoogleWorkspaceProvider + */ + propertyMappings?: Array; + /** + * Property mappings used for group creation/updating. + * @type {Array} + * @memberof GoogleWorkspaceProvider + */ + propertyMappingsGroup?: Array; + /** + * Get object component so that we know how to edit the object + * @type {string} + * @memberof GoogleWorkspaceProvider + */ + readonly component: string; + /** + * Internal application name, used in URLs. + * @type {string} + * @memberof GoogleWorkspaceProvider + */ + readonly assignedBackchannelApplicationSlug: string | null; + /** + * Application's display Name. + * @type {string} + * @memberof GoogleWorkspaceProvider + */ + readonly assignedBackchannelApplicationName: string | null; + /** + * Return object's verbose_name + * @type {string} + * @memberof GoogleWorkspaceProvider + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof GoogleWorkspaceProvider + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof GoogleWorkspaceProvider + */ + readonly metaModelName: string; + /** + * + * @type {string} + * @memberof GoogleWorkspaceProvider + */ + delegatedSubject: string; + /** + * + * @type {{ [key: string]: any; }} + * @memberof GoogleWorkspaceProvider + */ + credentials: { [key: string]: any }; + /** + * + * @type {string} + * @memberof GoogleWorkspaceProvider + */ + scopes?: string; + /** + * + * @type {boolean} + * @memberof GoogleWorkspaceProvider + */ + excludeUsersServiceAccount?: boolean; + /** + * + * @type {string} + * @memberof GoogleWorkspaceProvider + */ + filterGroup?: string | null; + /** + * + * @type {OutgoingSyncDeleteAction} + * @memberof GoogleWorkspaceProvider + */ + userDeleteAction?: OutgoingSyncDeleteAction; + /** + * + * @type {OutgoingSyncDeleteAction} + * @memberof GoogleWorkspaceProvider + */ + groupDeleteAction?: OutgoingSyncDeleteAction; + /** + * + * @type {string} + * @memberof GoogleWorkspaceProvider + */ + defaultGroupEmailDomain: string; + /** + * Controls the number of objects synced in a single task + * @type {number} + * @memberof GoogleWorkspaceProvider + */ + syncPageSize?: number; + /** + * Timeout for synchronization of a single page + * @type {string} + * @memberof GoogleWorkspaceProvider + */ + syncPageTimeout?: string; + /** + * When enabled, provider will not modify or create objects in the remote system. + * @type {boolean} + * @memberof GoogleWorkspaceProvider + */ + dryRun?: boolean; +} + +/** + * Check if a given object implements the GoogleWorkspaceProvider interface. + */ +export function instanceOfGoogleWorkspaceProvider(value: object): value is GoogleWorkspaceProvider { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if ( + !("assignedBackchannelApplicationSlug" in value) || + value["assignedBackchannelApplicationSlug"] === undefined + ) + return false; + if ( + !("assignedBackchannelApplicationName" in value) || + value["assignedBackchannelApplicationName"] === undefined + ) + return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + if (!("delegatedSubject" in value) || value["delegatedSubject"] === undefined) return false; + if (!("credentials" in value) || value["credentials"] === undefined) return false; + if (!("defaultGroupEmailDomain" in value) || value["defaultGroupEmailDomain"] === undefined) + return false; + return true; +} + +export function GoogleWorkspaceProviderFromJSON(json: any): GoogleWorkspaceProvider { + return GoogleWorkspaceProviderFromJSONTyped(json, false); +} + +export function GoogleWorkspaceProviderFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): GoogleWorkspaceProvider { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + propertyMappings: json["property_mappings"] == null ? undefined : json["property_mappings"], + propertyMappingsGroup: + json["property_mappings_group"] == null ? undefined : json["property_mappings_group"], + component: json["component"], + assignedBackchannelApplicationSlug: json["assigned_backchannel_application_slug"], + assignedBackchannelApplicationName: json["assigned_backchannel_application_name"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + delegatedSubject: json["delegated_subject"], + credentials: json["credentials"], + scopes: json["scopes"] == null ? undefined : json["scopes"], + excludeUsersServiceAccount: + json["exclude_users_service_account"] == null + ? undefined + : json["exclude_users_service_account"], + filterGroup: json["filter_group"] == null ? undefined : json["filter_group"], + userDeleteAction: + json["user_delete_action"] == null + ? undefined + : OutgoingSyncDeleteActionFromJSON(json["user_delete_action"]), + groupDeleteAction: + json["group_delete_action"] == null + ? undefined + : OutgoingSyncDeleteActionFromJSON(json["group_delete_action"]), + defaultGroupEmailDomain: json["default_group_email_domain"], + syncPageSize: json["sync_page_size"] == null ? undefined : json["sync_page_size"], + syncPageTimeout: json["sync_page_timeout"] == null ? undefined : json["sync_page_timeout"], + dryRun: json["dry_run"] == null ? undefined : json["dry_run"], + }; +} + +export function GoogleWorkspaceProviderToJSON(json: any): GoogleWorkspaceProvider { + return GoogleWorkspaceProviderToJSONTyped(json, false); +} + +export function GoogleWorkspaceProviderToJSONTyped( + value?: Omit< + GoogleWorkspaceProvider, + | "pk" + | "component" + | "assigned_backchannel_application_slug" + | "assigned_backchannel_application_name" + | "verbose_name" + | "verbose_name_plural" + | "meta_model_name" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + property_mappings: value["propertyMappings"], + property_mappings_group: value["propertyMappingsGroup"], + delegated_subject: value["delegatedSubject"], + credentials: value["credentials"], + scopes: value["scopes"], + exclude_users_service_account: value["excludeUsersServiceAccount"], + filter_group: value["filterGroup"], + user_delete_action: OutgoingSyncDeleteActionToJSON(value["userDeleteAction"]), + group_delete_action: OutgoingSyncDeleteActionToJSON(value["groupDeleteAction"]), + default_group_email_domain: value["defaultGroupEmailDomain"], + sync_page_size: value["syncPageSize"], + sync_page_timeout: value["syncPageTimeout"], + dry_run: value["dryRun"], + }; +} diff --git a/packages/client-ts/src/models/GoogleWorkspaceProviderGroup.ts b/packages/client-ts/src/models/GoogleWorkspaceProviderGroup.ts new file mode 100644 index 0000000000..8503c62815 --- /dev/null +++ b/packages/client-ts/src/models/GoogleWorkspaceProviderGroup.ts @@ -0,0 +1,115 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { PartialGroup } from "./PartialGroup"; +import { PartialGroupFromJSON } from "./PartialGroup"; + +/** + * GoogleWorkspaceProviderGroup Serializer + * @export + * @interface GoogleWorkspaceProviderGroup + */ +export interface GoogleWorkspaceProviderGroup { + /** + * + * @type {string} + * @memberof GoogleWorkspaceProviderGroup + */ + readonly id: string; + /** + * + * @type {string} + * @memberof GoogleWorkspaceProviderGroup + */ + googleId: string; + /** + * + * @type {string} + * @memberof GoogleWorkspaceProviderGroup + */ + group: string; + /** + * + * @type {PartialGroup} + * @memberof GoogleWorkspaceProviderGroup + */ + readonly groupObj: PartialGroup; + /** + * + * @type {number} + * @memberof GoogleWorkspaceProviderGroup + */ + provider: number; + /** + * + * @type {{ [key: string]: any; }} + * @memberof GoogleWorkspaceProviderGroup + */ + readonly attributes: { [key: string]: any }; +} + +/** + * Check if a given object implements the GoogleWorkspaceProviderGroup interface. + */ +export function instanceOfGoogleWorkspaceProviderGroup( + value: object, +): value is GoogleWorkspaceProviderGroup { + if (!("id" in value) || value["id"] === undefined) return false; + if (!("googleId" in value) || value["googleId"] === undefined) return false; + if (!("group" in value) || value["group"] === undefined) return false; + if (!("groupObj" in value) || value["groupObj"] === undefined) return false; + if (!("provider" in value) || value["provider"] === undefined) return false; + if (!("attributes" in value) || value["attributes"] === undefined) return false; + return true; +} + +export function GoogleWorkspaceProviderGroupFromJSON(json: any): GoogleWorkspaceProviderGroup { + return GoogleWorkspaceProviderGroupFromJSONTyped(json, false); +} + +export function GoogleWorkspaceProviderGroupFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): GoogleWorkspaceProviderGroup { + if (json == null) { + return json; + } + return { + id: json["id"], + googleId: json["google_id"], + group: json["group"], + groupObj: PartialGroupFromJSON(json["group_obj"]), + provider: json["provider"], + attributes: json["attributes"], + }; +} + +export function GoogleWorkspaceProviderGroupToJSON(json: any): GoogleWorkspaceProviderGroup { + return GoogleWorkspaceProviderGroupToJSONTyped(json, false); +} + +export function GoogleWorkspaceProviderGroupToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + google_id: value["googleId"], + group: value["group"], + provider: value["provider"], + }; +} diff --git a/packages/client-ts/src/models/GoogleWorkspaceProviderGroupRequest.ts b/packages/client-ts/src/models/GoogleWorkspaceProviderGroupRequest.ts new file mode 100644 index 0000000000..99d812dc70 --- /dev/null +++ b/packages/client-ts/src/models/GoogleWorkspaceProviderGroupRequest.ts @@ -0,0 +1,92 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * GoogleWorkspaceProviderGroup Serializer + * @export + * @interface GoogleWorkspaceProviderGroupRequest + */ +export interface GoogleWorkspaceProviderGroupRequest { + /** + * + * @type {string} + * @memberof GoogleWorkspaceProviderGroupRequest + */ + googleId: string; + /** + * + * @type {string} + * @memberof GoogleWorkspaceProviderGroupRequest + */ + group: string; + /** + * + * @type {number} + * @memberof GoogleWorkspaceProviderGroupRequest + */ + provider: number; +} + +/** + * Check if a given object implements the GoogleWorkspaceProviderGroupRequest interface. + */ +export function instanceOfGoogleWorkspaceProviderGroupRequest( + value: object, +): value is GoogleWorkspaceProviderGroupRequest { + if (!("googleId" in value) || value["googleId"] === undefined) return false; + if (!("group" in value) || value["group"] === undefined) return false; + if (!("provider" in value) || value["provider"] === undefined) return false; + return true; +} + +export function GoogleWorkspaceProviderGroupRequestFromJSON( + json: any, +): GoogleWorkspaceProviderGroupRequest { + return GoogleWorkspaceProviderGroupRequestFromJSONTyped(json, false); +} + +export function GoogleWorkspaceProviderGroupRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): GoogleWorkspaceProviderGroupRequest { + if (json == null) { + return json; + } + return { + googleId: json["google_id"], + group: json["group"], + provider: json["provider"], + }; +} + +export function GoogleWorkspaceProviderGroupRequestToJSON( + json: any, +): GoogleWorkspaceProviderGroupRequest { + return GoogleWorkspaceProviderGroupRequestToJSONTyped(json, false); +} + +export function GoogleWorkspaceProviderGroupRequestToJSONTyped( + value?: GoogleWorkspaceProviderGroupRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + google_id: value["googleId"], + group: value["group"], + provider: value["provider"], + }; +} diff --git a/packages/client-ts/src/models/GoogleWorkspaceProviderMapping.ts b/packages/client-ts/src/models/GoogleWorkspaceProviderMapping.ts new file mode 100644 index 0000000000..4bbc49e177 --- /dev/null +++ b/packages/client-ts/src/models/GoogleWorkspaceProviderMapping.ts @@ -0,0 +1,130 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * GoogleWorkspaceProviderMapping Serializer + * @export + * @interface GoogleWorkspaceProviderMapping + */ +export interface GoogleWorkspaceProviderMapping { + /** + * + * @type {string} + * @memberof GoogleWorkspaceProviderMapping + */ + readonly pk: string; + /** + * Objects that are managed by authentik. These objects are created and updated automatically. This flag only indicates that an object can be overwritten by migrations. You can still modify the objects via the API, but expect changes to be overwritten in a later update. + * @type {string} + * @memberof GoogleWorkspaceProviderMapping + */ + managed?: string | null; + /** + * + * @type {string} + * @memberof GoogleWorkspaceProviderMapping + */ + name: string; + /** + * + * @type {string} + * @memberof GoogleWorkspaceProviderMapping + */ + expression: string; + /** + * Get object's component so that we know how to edit the object + * @type {string} + * @memberof GoogleWorkspaceProviderMapping + */ + readonly component: string; + /** + * Return object's verbose_name + * @type {string} + * @memberof GoogleWorkspaceProviderMapping + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof GoogleWorkspaceProviderMapping + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof GoogleWorkspaceProviderMapping + */ + readonly metaModelName: string; +} + +/** + * Check if a given object implements the GoogleWorkspaceProviderMapping interface. + */ +export function instanceOfGoogleWorkspaceProviderMapping( + value: object, +): value is GoogleWorkspaceProviderMapping { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("expression" in value) || value["expression"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + return true; +} + +export function GoogleWorkspaceProviderMappingFromJSON(json: any): GoogleWorkspaceProviderMapping { + return GoogleWorkspaceProviderMappingFromJSONTyped(json, false); +} + +export function GoogleWorkspaceProviderMappingFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): GoogleWorkspaceProviderMapping { + if (json == null) { + return json; + } + return { + pk: json["pk"], + managed: json["managed"] == null ? undefined : json["managed"], + name: json["name"], + expression: json["expression"], + component: json["component"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + }; +} + +export function GoogleWorkspaceProviderMappingToJSON(json: any): GoogleWorkspaceProviderMapping { + return GoogleWorkspaceProviderMappingToJSONTyped(json, false); +} + +export function GoogleWorkspaceProviderMappingToJSONTyped( + value?: Omit< + GoogleWorkspaceProviderMapping, + "pk" | "component" | "verbose_name" | "verbose_name_plural" | "meta_model_name" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + managed: value["managed"], + name: value["name"], + expression: value["expression"], + }; +} diff --git a/packages/client-ts/src/models/GoogleWorkspaceProviderMappingRequest.ts b/packages/client-ts/src/models/GoogleWorkspaceProviderMappingRequest.ts new file mode 100644 index 0000000000..14404f9d86 --- /dev/null +++ b/packages/client-ts/src/models/GoogleWorkspaceProviderMappingRequest.ts @@ -0,0 +1,91 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * GoogleWorkspaceProviderMapping Serializer + * @export + * @interface GoogleWorkspaceProviderMappingRequest + */ +export interface GoogleWorkspaceProviderMappingRequest { + /** + * Objects that are managed by authentik. These objects are created and updated automatically. This flag only indicates that an object can be overwritten by migrations. You can still modify the objects via the API, but expect changes to be overwritten in a later update. + * @type {string} + * @memberof GoogleWorkspaceProviderMappingRequest + */ + managed?: string | null; + /** + * + * @type {string} + * @memberof GoogleWorkspaceProviderMappingRequest + */ + name: string; + /** + * + * @type {string} + * @memberof GoogleWorkspaceProviderMappingRequest + */ + expression: string; +} + +/** + * Check if a given object implements the GoogleWorkspaceProviderMappingRequest interface. + */ +export function instanceOfGoogleWorkspaceProviderMappingRequest( + value: object, +): value is GoogleWorkspaceProviderMappingRequest { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("expression" in value) || value["expression"] === undefined) return false; + return true; +} + +export function GoogleWorkspaceProviderMappingRequestFromJSON( + json: any, +): GoogleWorkspaceProviderMappingRequest { + return GoogleWorkspaceProviderMappingRequestFromJSONTyped(json, false); +} + +export function GoogleWorkspaceProviderMappingRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): GoogleWorkspaceProviderMappingRequest { + if (json == null) { + return json; + } + return { + managed: json["managed"] == null ? undefined : json["managed"], + name: json["name"], + expression: json["expression"], + }; +} + +export function GoogleWorkspaceProviderMappingRequestToJSON( + json: any, +): GoogleWorkspaceProviderMappingRequest { + return GoogleWorkspaceProviderMappingRequestToJSONTyped(json, false); +} + +export function GoogleWorkspaceProviderMappingRequestToJSONTyped( + value?: GoogleWorkspaceProviderMappingRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + managed: value["managed"], + name: value["name"], + expression: value["expression"], + }; +} diff --git a/packages/client-ts/src/models/GoogleWorkspaceProviderRequest.ts b/packages/client-ts/src/models/GoogleWorkspaceProviderRequest.ts new file mode 100644 index 0000000000..092e50935c --- /dev/null +++ b/packages/client-ts/src/models/GoogleWorkspaceProviderRequest.ts @@ -0,0 +1,194 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { OutgoingSyncDeleteAction } from "./OutgoingSyncDeleteAction"; +import { + OutgoingSyncDeleteActionFromJSON, + OutgoingSyncDeleteActionToJSON, +} from "./OutgoingSyncDeleteAction"; + +/** + * GoogleWorkspaceProvider Serializer + * @export + * @interface GoogleWorkspaceProviderRequest + */ +export interface GoogleWorkspaceProviderRequest { + /** + * + * @type {string} + * @memberof GoogleWorkspaceProviderRequest + */ + name: string; + /** + * + * @type {Array} + * @memberof GoogleWorkspaceProviderRequest + */ + propertyMappings?: Array; + /** + * Property mappings used for group creation/updating. + * @type {Array} + * @memberof GoogleWorkspaceProviderRequest + */ + propertyMappingsGroup?: Array; + /** + * + * @type {string} + * @memberof GoogleWorkspaceProviderRequest + */ + delegatedSubject: string; + /** + * + * @type {{ [key: string]: any; }} + * @memberof GoogleWorkspaceProviderRequest + */ + credentials: { [key: string]: any }; + /** + * + * @type {string} + * @memberof GoogleWorkspaceProviderRequest + */ + scopes?: string; + /** + * + * @type {boolean} + * @memberof GoogleWorkspaceProviderRequest + */ + excludeUsersServiceAccount?: boolean; + /** + * + * @type {string} + * @memberof GoogleWorkspaceProviderRequest + */ + filterGroup?: string | null; + /** + * + * @type {OutgoingSyncDeleteAction} + * @memberof GoogleWorkspaceProviderRequest + */ + userDeleteAction?: OutgoingSyncDeleteAction; + /** + * + * @type {OutgoingSyncDeleteAction} + * @memberof GoogleWorkspaceProviderRequest + */ + groupDeleteAction?: OutgoingSyncDeleteAction; + /** + * + * @type {string} + * @memberof GoogleWorkspaceProviderRequest + */ + defaultGroupEmailDomain: string; + /** + * Controls the number of objects synced in a single task + * @type {number} + * @memberof GoogleWorkspaceProviderRequest + */ + syncPageSize?: number; + /** + * Timeout for synchronization of a single page + * @type {string} + * @memberof GoogleWorkspaceProviderRequest + */ + syncPageTimeout?: string; + /** + * When enabled, provider will not modify or create objects in the remote system. + * @type {boolean} + * @memberof GoogleWorkspaceProviderRequest + */ + dryRun?: boolean; +} + +/** + * Check if a given object implements the GoogleWorkspaceProviderRequest interface. + */ +export function instanceOfGoogleWorkspaceProviderRequest( + value: object, +): value is GoogleWorkspaceProviderRequest { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("delegatedSubject" in value) || value["delegatedSubject"] === undefined) return false; + if (!("credentials" in value) || value["credentials"] === undefined) return false; + if (!("defaultGroupEmailDomain" in value) || value["defaultGroupEmailDomain"] === undefined) + return false; + return true; +} + +export function GoogleWorkspaceProviderRequestFromJSON(json: any): GoogleWorkspaceProviderRequest { + return GoogleWorkspaceProviderRequestFromJSONTyped(json, false); +} + +export function GoogleWorkspaceProviderRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): GoogleWorkspaceProviderRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + propertyMappings: json["property_mappings"] == null ? undefined : json["property_mappings"], + propertyMappingsGroup: + json["property_mappings_group"] == null ? undefined : json["property_mappings_group"], + delegatedSubject: json["delegated_subject"], + credentials: json["credentials"], + scopes: json["scopes"] == null ? undefined : json["scopes"], + excludeUsersServiceAccount: + json["exclude_users_service_account"] == null + ? undefined + : json["exclude_users_service_account"], + filterGroup: json["filter_group"] == null ? undefined : json["filter_group"], + userDeleteAction: + json["user_delete_action"] == null + ? undefined + : OutgoingSyncDeleteActionFromJSON(json["user_delete_action"]), + groupDeleteAction: + json["group_delete_action"] == null + ? undefined + : OutgoingSyncDeleteActionFromJSON(json["group_delete_action"]), + defaultGroupEmailDomain: json["default_group_email_domain"], + syncPageSize: json["sync_page_size"] == null ? undefined : json["sync_page_size"], + syncPageTimeout: json["sync_page_timeout"] == null ? undefined : json["sync_page_timeout"], + dryRun: json["dry_run"] == null ? undefined : json["dry_run"], + }; +} + +export function GoogleWorkspaceProviderRequestToJSON(json: any): GoogleWorkspaceProviderRequest { + return GoogleWorkspaceProviderRequestToJSONTyped(json, false); +} + +export function GoogleWorkspaceProviderRequestToJSONTyped( + value?: GoogleWorkspaceProviderRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + property_mappings: value["propertyMappings"], + property_mappings_group: value["propertyMappingsGroup"], + delegated_subject: value["delegatedSubject"], + credentials: value["credentials"], + scopes: value["scopes"], + exclude_users_service_account: value["excludeUsersServiceAccount"], + filter_group: value["filterGroup"], + user_delete_action: OutgoingSyncDeleteActionToJSON(value["userDeleteAction"]), + group_delete_action: OutgoingSyncDeleteActionToJSON(value["groupDeleteAction"]), + default_group_email_domain: value["defaultGroupEmailDomain"], + sync_page_size: value["syncPageSize"], + sync_page_timeout: value["syncPageTimeout"], + dry_run: value["dryRun"], + }; +} diff --git a/packages/client-ts/src/models/GoogleWorkspaceProviderUser.ts b/packages/client-ts/src/models/GoogleWorkspaceProviderUser.ts new file mode 100644 index 0000000000..3d09f36bcc --- /dev/null +++ b/packages/client-ts/src/models/GoogleWorkspaceProviderUser.ts @@ -0,0 +1,115 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { PartialUser } from "./PartialUser"; +import { PartialUserFromJSON } from "./PartialUser"; + +/** + * GoogleWorkspaceProviderUser Serializer + * @export + * @interface GoogleWorkspaceProviderUser + */ +export interface GoogleWorkspaceProviderUser { + /** + * + * @type {string} + * @memberof GoogleWorkspaceProviderUser + */ + readonly id: string; + /** + * + * @type {string} + * @memberof GoogleWorkspaceProviderUser + */ + googleId: string; + /** + * + * @type {number} + * @memberof GoogleWorkspaceProviderUser + */ + user: number; + /** + * + * @type {PartialUser} + * @memberof GoogleWorkspaceProviderUser + */ + readonly userObj: PartialUser; + /** + * + * @type {number} + * @memberof GoogleWorkspaceProviderUser + */ + provider: number; + /** + * + * @type {{ [key: string]: any; }} + * @memberof GoogleWorkspaceProviderUser + */ + readonly attributes: { [key: string]: any }; +} + +/** + * Check if a given object implements the GoogleWorkspaceProviderUser interface. + */ +export function instanceOfGoogleWorkspaceProviderUser( + value: object, +): value is GoogleWorkspaceProviderUser { + if (!("id" in value) || value["id"] === undefined) return false; + if (!("googleId" in value) || value["googleId"] === undefined) return false; + if (!("user" in value) || value["user"] === undefined) return false; + if (!("userObj" in value) || value["userObj"] === undefined) return false; + if (!("provider" in value) || value["provider"] === undefined) return false; + if (!("attributes" in value) || value["attributes"] === undefined) return false; + return true; +} + +export function GoogleWorkspaceProviderUserFromJSON(json: any): GoogleWorkspaceProviderUser { + return GoogleWorkspaceProviderUserFromJSONTyped(json, false); +} + +export function GoogleWorkspaceProviderUserFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): GoogleWorkspaceProviderUser { + if (json == null) { + return json; + } + return { + id: json["id"], + googleId: json["google_id"], + user: json["user"], + userObj: PartialUserFromJSON(json["user_obj"]), + provider: json["provider"], + attributes: json["attributes"], + }; +} + +export function GoogleWorkspaceProviderUserToJSON(json: any): GoogleWorkspaceProviderUser { + return GoogleWorkspaceProviderUserToJSONTyped(json, false); +} + +export function GoogleWorkspaceProviderUserToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + google_id: value["googleId"], + user: value["user"], + provider: value["provider"], + }; +} diff --git a/packages/client-ts/src/models/GoogleWorkspaceProviderUserRequest.ts b/packages/client-ts/src/models/GoogleWorkspaceProviderUserRequest.ts new file mode 100644 index 0000000000..6e30ca4d6f --- /dev/null +++ b/packages/client-ts/src/models/GoogleWorkspaceProviderUserRequest.ts @@ -0,0 +1,92 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * GoogleWorkspaceProviderUser Serializer + * @export + * @interface GoogleWorkspaceProviderUserRequest + */ +export interface GoogleWorkspaceProviderUserRequest { + /** + * + * @type {string} + * @memberof GoogleWorkspaceProviderUserRequest + */ + googleId: string; + /** + * + * @type {number} + * @memberof GoogleWorkspaceProviderUserRequest + */ + user: number; + /** + * + * @type {number} + * @memberof GoogleWorkspaceProviderUserRequest + */ + provider: number; +} + +/** + * Check if a given object implements the GoogleWorkspaceProviderUserRequest interface. + */ +export function instanceOfGoogleWorkspaceProviderUserRequest( + value: object, +): value is GoogleWorkspaceProviderUserRequest { + if (!("googleId" in value) || value["googleId"] === undefined) return false; + if (!("user" in value) || value["user"] === undefined) return false; + if (!("provider" in value) || value["provider"] === undefined) return false; + return true; +} + +export function GoogleWorkspaceProviderUserRequestFromJSON( + json: any, +): GoogleWorkspaceProviderUserRequest { + return GoogleWorkspaceProviderUserRequestFromJSONTyped(json, false); +} + +export function GoogleWorkspaceProviderUserRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): GoogleWorkspaceProviderUserRequest { + if (json == null) { + return json; + } + return { + googleId: json["google_id"], + user: json["user"], + provider: json["provider"], + }; +} + +export function GoogleWorkspaceProviderUserRequestToJSON( + json: any, +): GoogleWorkspaceProviderUserRequest { + return GoogleWorkspaceProviderUserRequestToJSONTyped(json, false); +} + +export function GoogleWorkspaceProviderUserRequestToJSONTyped( + value?: GoogleWorkspaceProviderUserRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + google_id: value["googleId"], + user: value["user"], + provider: value["provider"], + }; +} diff --git a/packages/client-ts/src/models/GrantTypesEnum.ts b/packages/client-ts/src/models/GrantTypesEnum.ts new file mode 100644 index 0000000000..6b17c3db9a --- /dev/null +++ b/packages/client-ts/src/models/GrantTypesEnum.ts @@ -0,0 +1,62 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const GrantTypesEnum = { + AuthorizationCode: "authorization_code", + Implicit: "implicit", + Hybrid: "hybrid", + RefreshToken: "refresh_token", + ClientCredentials: "client_credentials", + Password: "password", + UrnIetfParamsOauthGrantTypeDeviceCode: "urn:ietf:params:oauth:grant-type:device_code", + UnknownDefaultOpenApi: "11184809", +} as const; +export type GrantTypesEnum = (typeof GrantTypesEnum)[keyof typeof GrantTypesEnum]; + +export function instanceOfGrantTypesEnum(value: any): boolean { + for (const key in GrantTypesEnum) { + if (Object.prototype.hasOwnProperty.call(GrantTypesEnum, key)) { + if (GrantTypesEnum[key as keyof typeof GrantTypesEnum] === value) { + return true; + } + } + } + return false; +} + +export function GrantTypesEnumFromJSON(json: any): GrantTypesEnum { + return GrantTypesEnumFromJSONTyped(json, false); +} + +export function GrantTypesEnumFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): GrantTypesEnum { + return json as GrantTypesEnum; +} + +export function GrantTypesEnumToJSON(value?: GrantTypesEnum | null): any { + return value as any; +} + +export function GrantTypesEnumToJSONTyped( + value: any, + ignoreDiscriminator: boolean, +): GrantTypesEnum { + return value as GrantTypesEnum; +} diff --git a/packages/client-ts/src/models/Group.ts b/packages/client-ts/src/models/Group.ts new file mode 100644 index 0000000000..bdcb54fefa --- /dev/null +++ b/packages/client-ts/src/models/Group.ts @@ -0,0 +1,198 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { PartialUser } from "./PartialUser"; +import { PartialUserFromJSON } from "./PartialUser"; +import type { RelatedGroup } from "./RelatedGroup"; +import { RelatedGroupFromJSON } from "./RelatedGroup"; +import type { Role } from "./Role"; +import { RoleFromJSON } from "./Role"; + +/** + * Group Serializer + * @export + * @interface Group + */ +export interface Group { + /** + * + * @type {string} + * @memberof Group + */ + readonly pk: string; + /** + * + * @type {number} + * @memberof Group + */ + readonly numPk: number; + /** + * + * @type {string} + * @memberof Group + */ + name: string; + /** + * Users added to this group will be superusers. + * @type {boolean} + * @memberof Group + */ + isSuperuser?: boolean; + /** + * + * @type {Array} + * @memberof Group + */ + parents?: Array; + /** + * + * @type {Array} + * @memberof Group + */ + readonly parentsObj: Array | null; + /** + * + * @type {Array} + * @memberof Group + */ + users?: Array; + /** + * + * @type {Array} + * @memberof Group + */ + readonly usersObj: Array | null; + /** + * + * @type {{ [key: string]: any; }} + * @memberof Group + */ + attributes?: { [key: string]: any }; + /** + * + * @type {Array} + * @memberof Group + */ + roles?: Array; + /** + * + * @type {Array} + * @memberof Group + */ + readonly rolesObj: Array; + /** + * + * @type {Array} + * @memberof Group + */ + readonly inheritedRolesObj: Array | null; + /** + * + * @type {Array} + * @memberof Group + */ + readonly children: Array; + /** + * + * @type {Array} + * @memberof Group + */ + readonly childrenObj: Array | null; +} + +/** + * Check if a given object implements the Group interface. + */ +export function instanceOfGroup(value: object): value is Group { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("numPk" in value) || value["numPk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("parentsObj" in value) || value["parentsObj"] === undefined) return false; + if (!("usersObj" in value) || value["usersObj"] === undefined) return false; + if (!("rolesObj" in value) || value["rolesObj"] === undefined) return false; + if (!("inheritedRolesObj" in value) || value["inheritedRolesObj"] === undefined) return false; + if (!("children" in value) || value["children"] === undefined) return false; + if (!("childrenObj" in value) || value["childrenObj"] === undefined) return false; + return true; +} + +export function GroupFromJSON(json: any): Group { + return GroupFromJSONTyped(json, false); +} + +export function GroupFromJSONTyped(json: any, ignoreDiscriminator: boolean): Group { + if (json == null) { + return json; + } + return { + pk: json["pk"], + numPk: json["num_pk"], + name: json["name"], + isSuperuser: json["is_superuser"] == null ? undefined : json["is_superuser"], + parents: json["parents"] == null ? undefined : json["parents"], + parentsObj: + json["parents_obj"] == null + ? null + : (json["parents_obj"] as Array).map(RelatedGroupFromJSON), + users: json["users"] == null ? undefined : json["users"], + usersObj: + json["users_obj"] == null + ? null + : (json["users_obj"] as Array).map(PartialUserFromJSON), + attributes: json["attributes"] == null ? undefined : json["attributes"], + roles: json["roles"] == null ? undefined : json["roles"], + rolesObj: (json["roles_obj"] as Array).map(RoleFromJSON), + inheritedRolesObj: + json["inherited_roles_obj"] == null + ? null + : (json["inherited_roles_obj"] as Array).map(RoleFromJSON), + children: json["children"], + childrenObj: + json["children_obj"] == null + ? null + : (json["children_obj"] as Array).map(RelatedGroupFromJSON), + }; +} + +export function GroupToJSON(json: any): Group { + return GroupToJSONTyped(json, false); +} + +export function GroupToJSONTyped( + value?: Omit< + Group, + | "pk" + | "num_pk" + | "parents_obj" + | "users_obj" + | "roles_obj" + | "inherited_roles_obj" + | "children" + | "children_obj" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + is_superuser: value["isSuperuser"], + parents: value["parents"], + users: value["users"], + attributes: value["attributes"], + roles: value["roles"], + }; +} diff --git a/packages/client-ts/src/models/GroupKerberosSourceConnection.ts b/packages/client-ts/src/models/GroupKerberosSourceConnection.ts new file mode 100644 index 0000000000..ff0f203aa3 --- /dev/null +++ b/packages/client-ts/src/models/GroupKerberosSourceConnection.ts @@ -0,0 +1,126 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Source } from "./Source"; +import { SourceFromJSON } from "./Source"; + +/** + * Group Source Connection + * @export + * @interface GroupKerberosSourceConnection + */ +export interface GroupKerberosSourceConnection { + /** + * + * @type {number} + * @memberof GroupKerberosSourceConnection + */ + readonly pk: number; + /** + * + * @type {string} + * @memberof GroupKerberosSourceConnection + */ + group: string; + /** + * + * @type {string} + * @memberof GroupKerberosSourceConnection + */ + source: string; + /** + * + * @type {Source} + * @memberof GroupKerberosSourceConnection + */ + readonly sourceObj: Source; + /** + * + * @type {string} + * @memberof GroupKerberosSourceConnection + */ + identifier: string; + /** + * + * @type {Date} + * @memberof GroupKerberosSourceConnection + */ + readonly created: Date; + /** + * + * @type {Date} + * @memberof GroupKerberosSourceConnection + */ + readonly lastUpdated: Date; +} + +/** + * Check if a given object implements the GroupKerberosSourceConnection interface. + */ +export function instanceOfGroupKerberosSourceConnection( + value: object, +): value is GroupKerberosSourceConnection { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("group" in value) || value["group"] === undefined) return false; + if (!("source" in value) || value["source"] === undefined) return false; + if (!("sourceObj" in value) || value["sourceObj"] === undefined) return false; + if (!("identifier" in value) || value["identifier"] === undefined) return false; + if (!("created" in value) || value["created"] === undefined) return false; + if (!("lastUpdated" in value) || value["lastUpdated"] === undefined) return false; + return true; +} + +export function GroupKerberosSourceConnectionFromJSON(json: any): GroupKerberosSourceConnection { + return GroupKerberosSourceConnectionFromJSONTyped(json, false); +} + +export function GroupKerberosSourceConnectionFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): GroupKerberosSourceConnection { + if (json == null) { + return json; + } + return { + pk: json["pk"], + group: json["group"], + source: json["source"], + sourceObj: SourceFromJSON(json["source_obj"]), + identifier: json["identifier"], + created: new Date(json["created"]), + lastUpdated: new Date(json["last_updated"]), + }; +} + +export function GroupKerberosSourceConnectionToJSON(json: any): GroupKerberosSourceConnection { + return GroupKerberosSourceConnectionToJSONTyped(json, false); +} + +export function GroupKerberosSourceConnectionToJSONTyped( + value?: Omit< + GroupKerberosSourceConnection, + "pk" | "source_obj" | "created" | "last_updated" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + group: value["group"], + source: value["source"], + identifier: value["identifier"], + }; +} diff --git a/packages/client-ts/src/models/GroupKerberosSourceConnectionRequest.ts b/packages/client-ts/src/models/GroupKerberosSourceConnectionRequest.ts new file mode 100644 index 0000000000..d47767f9d9 --- /dev/null +++ b/packages/client-ts/src/models/GroupKerberosSourceConnectionRequest.ts @@ -0,0 +1,92 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Group Source Connection + * @export + * @interface GroupKerberosSourceConnectionRequest + */ +export interface GroupKerberosSourceConnectionRequest { + /** + * + * @type {string} + * @memberof GroupKerberosSourceConnectionRequest + */ + group: string; + /** + * + * @type {string} + * @memberof GroupKerberosSourceConnectionRequest + */ + source: string; + /** + * + * @type {string} + * @memberof GroupKerberosSourceConnectionRequest + */ + identifier: string; +} + +/** + * Check if a given object implements the GroupKerberosSourceConnectionRequest interface. + */ +export function instanceOfGroupKerberosSourceConnectionRequest( + value: object, +): value is GroupKerberosSourceConnectionRequest { + if (!("group" in value) || value["group"] === undefined) return false; + if (!("source" in value) || value["source"] === undefined) return false; + if (!("identifier" in value) || value["identifier"] === undefined) return false; + return true; +} + +export function GroupKerberosSourceConnectionRequestFromJSON( + json: any, +): GroupKerberosSourceConnectionRequest { + return GroupKerberosSourceConnectionRequestFromJSONTyped(json, false); +} + +export function GroupKerberosSourceConnectionRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): GroupKerberosSourceConnectionRequest { + if (json == null) { + return json; + } + return { + group: json["group"], + source: json["source"], + identifier: json["identifier"], + }; +} + +export function GroupKerberosSourceConnectionRequestToJSON( + json: any, +): GroupKerberosSourceConnectionRequest { + return GroupKerberosSourceConnectionRequestToJSONTyped(json, false); +} + +export function GroupKerberosSourceConnectionRequestToJSONTyped( + value?: GroupKerberosSourceConnectionRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + group: value["group"], + source: value["source"], + identifier: value["identifier"], + }; +} diff --git a/packages/client-ts/src/models/GroupLDAPSourceConnection.ts b/packages/client-ts/src/models/GroupLDAPSourceConnection.ts new file mode 100644 index 0000000000..99de50c331 --- /dev/null +++ b/packages/client-ts/src/models/GroupLDAPSourceConnection.ts @@ -0,0 +1,136 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { PartialGroup } from "./PartialGroup"; +import { PartialGroupFromJSON } from "./PartialGroup"; +import type { Source } from "./Source"; +import { SourceFromJSON } from "./Source"; + +/** + * Group Source Connection + * @export + * @interface GroupLDAPSourceConnection + */ +export interface GroupLDAPSourceConnection { + /** + * + * @type {number} + * @memberof GroupLDAPSourceConnection + */ + readonly pk: number; + /** + * + * @type {string} + * @memberof GroupLDAPSourceConnection + */ + group: string; + /** + * + * @type {string} + * @memberof GroupLDAPSourceConnection + */ + source: string; + /** + * + * @type {Source} + * @memberof GroupLDAPSourceConnection + */ + readonly sourceObj: Source; + /** + * + * @type {string} + * @memberof GroupLDAPSourceConnection + */ + identifier: string; + /** + * + * @type {Date} + * @memberof GroupLDAPSourceConnection + */ + readonly created: Date; + /** + * + * @type {Date} + * @memberof GroupLDAPSourceConnection + */ + readonly lastUpdated: Date; + /** + * + * @type {PartialGroup} + * @memberof GroupLDAPSourceConnection + */ + readonly groupObj: PartialGroup; +} + +/** + * Check if a given object implements the GroupLDAPSourceConnection interface. + */ +export function instanceOfGroupLDAPSourceConnection( + value: object, +): value is GroupLDAPSourceConnection { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("group" in value) || value["group"] === undefined) return false; + if (!("source" in value) || value["source"] === undefined) return false; + if (!("sourceObj" in value) || value["sourceObj"] === undefined) return false; + if (!("identifier" in value) || value["identifier"] === undefined) return false; + if (!("created" in value) || value["created"] === undefined) return false; + if (!("lastUpdated" in value) || value["lastUpdated"] === undefined) return false; + if (!("groupObj" in value) || value["groupObj"] === undefined) return false; + return true; +} + +export function GroupLDAPSourceConnectionFromJSON(json: any): GroupLDAPSourceConnection { + return GroupLDAPSourceConnectionFromJSONTyped(json, false); +} + +export function GroupLDAPSourceConnectionFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): GroupLDAPSourceConnection { + if (json == null) { + return json; + } + return { + pk: json["pk"], + group: json["group"], + source: json["source"], + sourceObj: SourceFromJSON(json["source_obj"]), + identifier: json["identifier"], + created: new Date(json["created"]), + lastUpdated: new Date(json["last_updated"]), + groupObj: PartialGroupFromJSON(json["group_obj"]), + }; +} + +export function GroupLDAPSourceConnectionToJSON(json: any): GroupLDAPSourceConnection { + return GroupLDAPSourceConnectionToJSONTyped(json, false); +} + +export function GroupLDAPSourceConnectionToJSONTyped( + value?: Omit< + GroupLDAPSourceConnection, + "pk" | "source_obj" | "created" | "last_updated" | "group_obj" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + group: value["group"], + source: value["source"], + identifier: value["identifier"], + }; +} diff --git a/packages/client-ts/src/models/GroupLDAPSourceConnectionRequest.ts b/packages/client-ts/src/models/GroupLDAPSourceConnectionRequest.ts new file mode 100644 index 0000000000..a536c86cf5 --- /dev/null +++ b/packages/client-ts/src/models/GroupLDAPSourceConnectionRequest.ts @@ -0,0 +1,92 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Group Source Connection + * @export + * @interface GroupLDAPSourceConnectionRequest + */ +export interface GroupLDAPSourceConnectionRequest { + /** + * + * @type {string} + * @memberof GroupLDAPSourceConnectionRequest + */ + group: string; + /** + * + * @type {string} + * @memberof GroupLDAPSourceConnectionRequest + */ + source: string; + /** + * + * @type {string} + * @memberof GroupLDAPSourceConnectionRequest + */ + identifier: string; +} + +/** + * Check if a given object implements the GroupLDAPSourceConnectionRequest interface. + */ +export function instanceOfGroupLDAPSourceConnectionRequest( + value: object, +): value is GroupLDAPSourceConnectionRequest { + if (!("group" in value) || value["group"] === undefined) return false; + if (!("source" in value) || value["source"] === undefined) return false; + if (!("identifier" in value) || value["identifier"] === undefined) return false; + return true; +} + +export function GroupLDAPSourceConnectionRequestFromJSON( + json: any, +): GroupLDAPSourceConnectionRequest { + return GroupLDAPSourceConnectionRequestFromJSONTyped(json, false); +} + +export function GroupLDAPSourceConnectionRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): GroupLDAPSourceConnectionRequest { + if (json == null) { + return json; + } + return { + group: json["group"], + source: json["source"], + identifier: json["identifier"], + }; +} + +export function GroupLDAPSourceConnectionRequestToJSON( + json: any, +): GroupLDAPSourceConnectionRequest { + return GroupLDAPSourceConnectionRequestToJSONTyped(json, false); +} + +export function GroupLDAPSourceConnectionRequestToJSONTyped( + value?: GroupLDAPSourceConnectionRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + group: value["group"], + source: value["source"], + identifier: value["identifier"], + }; +} diff --git a/packages/client-ts/src/models/GroupMatchingModeEnum.ts b/packages/client-ts/src/models/GroupMatchingModeEnum.ts new file mode 100644 index 0000000000..14a07ef08e --- /dev/null +++ b/packages/client-ts/src/models/GroupMatchingModeEnum.ts @@ -0,0 +1,59 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const GroupMatchingModeEnum = { + Identifier: "identifier", + NameLink: "name_link", + NameDeny: "name_deny", + UnknownDefaultOpenApi: "11184809", +} as const; +export type GroupMatchingModeEnum = + (typeof GroupMatchingModeEnum)[keyof typeof GroupMatchingModeEnum]; + +export function instanceOfGroupMatchingModeEnum(value: any): boolean { + for (const key in GroupMatchingModeEnum) { + if (Object.prototype.hasOwnProperty.call(GroupMatchingModeEnum, key)) { + if (GroupMatchingModeEnum[key as keyof typeof GroupMatchingModeEnum] === value) { + return true; + } + } + } + return false; +} + +export function GroupMatchingModeEnumFromJSON(json: any): GroupMatchingModeEnum { + return GroupMatchingModeEnumFromJSONTyped(json, false); +} + +export function GroupMatchingModeEnumFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): GroupMatchingModeEnum { + return json as GroupMatchingModeEnum; +} + +export function GroupMatchingModeEnumToJSON(value?: GroupMatchingModeEnum | null): any { + return value as any; +} + +export function GroupMatchingModeEnumToJSONTyped( + value: any, + ignoreDiscriminator: boolean, +): GroupMatchingModeEnum { + return value as GroupMatchingModeEnum; +} diff --git a/packages/client-ts/src/models/GroupOAuthSourceConnection.ts b/packages/client-ts/src/models/GroupOAuthSourceConnection.ts new file mode 100644 index 0000000000..82b46536cf --- /dev/null +++ b/packages/client-ts/src/models/GroupOAuthSourceConnection.ts @@ -0,0 +1,126 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Source } from "./Source"; +import { SourceFromJSON } from "./Source"; + +/** + * Group Source Connection + * @export + * @interface GroupOAuthSourceConnection + */ +export interface GroupOAuthSourceConnection { + /** + * + * @type {number} + * @memberof GroupOAuthSourceConnection + */ + readonly pk: number; + /** + * + * @type {string} + * @memberof GroupOAuthSourceConnection + */ + group: string; + /** + * + * @type {string} + * @memberof GroupOAuthSourceConnection + */ + source: string; + /** + * + * @type {Source} + * @memberof GroupOAuthSourceConnection + */ + readonly sourceObj: Source; + /** + * + * @type {string} + * @memberof GroupOAuthSourceConnection + */ + identifier: string; + /** + * + * @type {Date} + * @memberof GroupOAuthSourceConnection + */ + readonly created: Date; + /** + * + * @type {Date} + * @memberof GroupOAuthSourceConnection + */ + readonly lastUpdated: Date; +} + +/** + * Check if a given object implements the GroupOAuthSourceConnection interface. + */ +export function instanceOfGroupOAuthSourceConnection( + value: object, +): value is GroupOAuthSourceConnection { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("group" in value) || value["group"] === undefined) return false; + if (!("source" in value) || value["source"] === undefined) return false; + if (!("sourceObj" in value) || value["sourceObj"] === undefined) return false; + if (!("identifier" in value) || value["identifier"] === undefined) return false; + if (!("created" in value) || value["created"] === undefined) return false; + if (!("lastUpdated" in value) || value["lastUpdated"] === undefined) return false; + return true; +} + +export function GroupOAuthSourceConnectionFromJSON(json: any): GroupOAuthSourceConnection { + return GroupOAuthSourceConnectionFromJSONTyped(json, false); +} + +export function GroupOAuthSourceConnectionFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): GroupOAuthSourceConnection { + if (json == null) { + return json; + } + return { + pk: json["pk"], + group: json["group"], + source: json["source"], + sourceObj: SourceFromJSON(json["source_obj"]), + identifier: json["identifier"], + created: new Date(json["created"]), + lastUpdated: new Date(json["last_updated"]), + }; +} + +export function GroupOAuthSourceConnectionToJSON(json: any): GroupOAuthSourceConnection { + return GroupOAuthSourceConnectionToJSONTyped(json, false); +} + +export function GroupOAuthSourceConnectionToJSONTyped( + value?: Omit< + GroupOAuthSourceConnection, + "pk" | "source_obj" | "created" | "last_updated" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + group: value["group"], + source: value["source"], + identifier: value["identifier"], + }; +} diff --git a/packages/client-ts/src/models/GroupOAuthSourceConnectionRequest.ts b/packages/client-ts/src/models/GroupOAuthSourceConnectionRequest.ts new file mode 100644 index 0000000000..5466684e3b --- /dev/null +++ b/packages/client-ts/src/models/GroupOAuthSourceConnectionRequest.ts @@ -0,0 +1,92 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Group Source Connection + * @export + * @interface GroupOAuthSourceConnectionRequest + */ +export interface GroupOAuthSourceConnectionRequest { + /** + * + * @type {string} + * @memberof GroupOAuthSourceConnectionRequest + */ + group: string; + /** + * + * @type {string} + * @memberof GroupOAuthSourceConnectionRequest + */ + source: string; + /** + * + * @type {string} + * @memberof GroupOAuthSourceConnectionRequest + */ + identifier: string; +} + +/** + * Check if a given object implements the GroupOAuthSourceConnectionRequest interface. + */ +export function instanceOfGroupOAuthSourceConnectionRequest( + value: object, +): value is GroupOAuthSourceConnectionRequest { + if (!("group" in value) || value["group"] === undefined) return false; + if (!("source" in value) || value["source"] === undefined) return false; + if (!("identifier" in value) || value["identifier"] === undefined) return false; + return true; +} + +export function GroupOAuthSourceConnectionRequestFromJSON( + json: any, +): GroupOAuthSourceConnectionRequest { + return GroupOAuthSourceConnectionRequestFromJSONTyped(json, false); +} + +export function GroupOAuthSourceConnectionRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): GroupOAuthSourceConnectionRequest { + if (json == null) { + return json; + } + return { + group: json["group"], + source: json["source"], + identifier: json["identifier"], + }; +} + +export function GroupOAuthSourceConnectionRequestToJSON( + json: any, +): GroupOAuthSourceConnectionRequest { + return GroupOAuthSourceConnectionRequestToJSONTyped(json, false); +} + +export function GroupOAuthSourceConnectionRequestToJSONTyped( + value?: GroupOAuthSourceConnectionRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + group: value["group"], + source: value["source"], + identifier: value["identifier"], + }; +} diff --git a/packages/client-ts/src/models/GroupPlexSourceConnection.ts b/packages/client-ts/src/models/GroupPlexSourceConnection.ts new file mode 100644 index 0000000000..79a0c14367 --- /dev/null +++ b/packages/client-ts/src/models/GroupPlexSourceConnection.ts @@ -0,0 +1,126 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Source } from "./Source"; +import { SourceFromJSON } from "./Source"; + +/** + * Group Source Connection + * @export + * @interface GroupPlexSourceConnection + */ +export interface GroupPlexSourceConnection { + /** + * + * @type {number} + * @memberof GroupPlexSourceConnection + */ + readonly pk: number; + /** + * + * @type {string} + * @memberof GroupPlexSourceConnection + */ + group: string; + /** + * + * @type {string} + * @memberof GroupPlexSourceConnection + */ + source: string; + /** + * + * @type {Source} + * @memberof GroupPlexSourceConnection + */ + readonly sourceObj: Source; + /** + * + * @type {string} + * @memberof GroupPlexSourceConnection + */ + identifier: string; + /** + * + * @type {Date} + * @memberof GroupPlexSourceConnection + */ + readonly created: Date; + /** + * + * @type {Date} + * @memberof GroupPlexSourceConnection + */ + readonly lastUpdated: Date; +} + +/** + * Check if a given object implements the GroupPlexSourceConnection interface. + */ +export function instanceOfGroupPlexSourceConnection( + value: object, +): value is GroupPlexSourceConnection { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("group" in value) || value["group"] === undefined) return false; + if (!("source" in value) || value["source"] === undefined) return false; + if (!("sourceObj" in value) || value["sourceObj"] === undefined) return false; + if (!("identifier" in value) || value["identifier"] === undefined) return false; + if (!("created" in value) || value["created"] === undefined) return false; + if (!("lastUpdated" in value) || value["lastUpdated"] === undefined) return false; + return true; +} + +export function GroupPlexSourceConnectionFromJSON(json: any): GroupPlexSourceConnection { + return GroupPlexSourceConnectionFromJSONTyped(json, false); +} + +export function GroupPlexSourceConnectionFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): GroupPlexSourceConnection { + if (json == null) { + return json; + } + return { + pk: json["pk"], + group: json["group"], + source: json["source"], + sourceObj: SourceFromJSON(json["source_obj"]), + identifier: json["identifier"], + created: new Date(json["created"]), + lastUpdated: new Date(json["last_updated"]), + }; +} + +export function GroupPlexSourceConnectionToJSON(json: any): GroupPlexSourceConnection { + return GroupPlexSourceConnectionToJSONTyped(json, false); +} + +export function GroupPlexSourceConnectionToJSONTyped( + value?: Omit< + GroupPlexSourceConnection, + "pk" | "source_obj" | "created" | "last_updated" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + group: value["group"], + source: value["source"], + identifier: value["identifier"], + }; +} diff --git a/packages/client-ts/src/models/GroupPlexSourceConnectionRequest.ts b/packages/client-ts/src/models/GroupPlexSourceConnectionRequest.ts new file mode 100644 index 0000000000..074395d336 --- /dev/null +++ b/packages/client-ts/src/models/GroupPlexSourceConnectionRequest.ts @@ -0,0 +1,92 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Group Source Connection + * @export + * @interface GroupPlexSourceConnectionRequest + */ +export interface GroupPlexSourceConnectionRequest { + /** + * + * @type {string} + * @memberof GroupPlexSourceConnectionRequest + */ + group: string; + /** + * + * @type {string} + * @memberof GroupPlexSourceConnectionRequest + */ + source: string; + /** + * + * @type {string} + * @memberof GroupPlexSourceConnectionRequest + */ + identifier: string; +} + +/** + * Check if a given object implements the GroupPlexSourceConnectionRequest interface. + */ +export function instanceOfGroupPlexSourceConnectionRequest( + value: object, +): value is GroupPlexSourceConnectionRequest { + if (!("group" in value) || value["group"] === undefined) return false; + if (!("source" in value) || value["source"] === undefined) return false; + if (!("identifier" in value) || value["identifier"] === undefined) return false; + return true; +} + +export function GroupPlexSourceConnectionRequestFromJSON( + json: any, +): GroupPlexSourceConnectionRequest { + return GroupPlexSourceConnectionRequestFromJSONTyped(json, false); +} + +export function GroupPlexSourceConnectionRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): GroupPlexSourceConnectionRequest { + if (json == null) { + return json; + } + return { + group: json["group"], + source: json["source"], + identifier: json["identifier"], + }; +} + +export function GroupPlexSourceConnectionRequestToJSON( + json: any, +): GroupPlexSourceConnectionRequest { + return GroupPlexSourceConnectionRequestToJSONTyped(json, false); +} + +export function GroupPlexSourceConnectionRequestToJSONTyped( + value?: GroupPlexSourceConnectionRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + group: value["group"], + source: value["source"], + identifier: value["identifier"], + }; +} diff --git a/packages/client-ts/src/models/GroupRequest.ts b/packages/client-ts/src/models/GroupRequest.ts new file mode 100644 index 0000000000..03175705af --- /dev/null +++ b/packages/client-ts/src/models/GroupRequest.ts @@ -0,0 +1,105 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Group Serializer + * @export + * @interface GroupRequest + */ +export interface GroupRequest { + /** + * + * @type {string} + * @memberof GroupRequest + */ + name: string; + /** + * Users added to this group will be superusers. + * @type {boolean} + * @memberof GroupRequest + */ + isSuperuser?: boolean; + /** + * + * @type {Array} + * @memberof GroupRequest + */ + parents?: Array; + /** + * + * @type {Array} + * @memberof GroupRequest + */ + users?: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof GroupRequest + */ + attributes?: { [key: string]: any }; + /** + * + * @type {Array} + * @memberof GroupRequest + */ + roles?: Array; +} + +/** + * Check if a given object implements the GroupRequest interface. + */ +export function instanceOfGroupRequest(value: object): value is GroupRequest { + if (!("name" in value) || value["name"] === undefined) return false; + return true; +} + +export function GroupRequestFromJSON(json: any): GroupRequest { + return GroupRequestFromJSONTyped(json, false); +} + +export function GroupRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): GroupRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + isSuperuser: json["is_superuser"] == null ? undefined : json["is_superuser"], + parents: json["parents"] == null ? undefined : json["parents"], + users: json["users"] == null ? undefined : json["users"], + attributes: json["attributes"] == null ? undefined : json["attributes"], + roles: json["roles"] == null ? undefined : json["roles"], + }; +} + +export function GroupRequestToJSON(json: any): GroupRequest { + return GroupRequestToJSONTyped(json, false); +} + +export function GroupRequestToJSONTyped( + value?: GroupRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + is_superuser: value["isSuperuser"], + parents: value["parents"], + users: value["users"], + attributes: value["attributes"], + roles: value["roles"], + }; +} diff --git a/packages/client-ts/src/models/GroupSAMLSourceConnection.ts b/packages/client-ts/src/models/GroupSAMLSourceConnection.ts new file mode 100644 index 0000000000..bdf320f677 --- /dev/null +++ b/packages/client-ts/src/models/GroupSAMLSourceConnection.ts @@ -0,0 +1,126 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Source } from "./Source"; +import { SourceFromJSON } from "./Source"; + +/** + * Group Source Connection + * @export + * @interface GroupSAMLSourceConnection + */ +export interface GroupSAMLSourceConnection { + /** + * + * @type {number} + * @memberof GroupSAMLSourceConnection + */ + readonly pk: number; + /** + * + * @type {string} + * @memberof GroupSAMLSourceConnection + */ + group: string; + /** + * + * @type {string} + * @memberof GroupSAMLSourceConnection + */ + source: string; + /** + * + * @type {Source} + * @memberof GroupSAMLSourceConnection + */ + readonly sourceObj: Source; + /** + * + * @type {string} + * @memberof GroupSAMLSourceConnection + */ + identifier: string; + /** + * + * @type {Date} + * @memberof GroupSAMLSourceConnection + */ + readonly created: Date; + /** + * + * @type {Date} + * @memberof GroupSAMLSourceConnection + */ + readonly lastUpdated: Date; +} + +/** + * Check if a given object implements the GroupSAMLSourceConnection interface. + */ +export function instanceOfGroupSAMLSourceConnection( + value: object, +): value is GroupSAMLSourceConnection { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("group" in value) || value["group"] === undefined) return false; + if (!("source" in value) || value["source"] === undefined) return false; + if (!("sourceObj" in value) || value["sourceObj"] === undefined) return false; + if (!("identifier" in value) || value["identifier"] === undefined) return false; + if (!("created" in value) || value["created"] === undefined) return false; + if (!("lastUpdated" in value) || value["lastUpdated"] === undefined) return false; + return true; +} + +export function GroupSAMLSourceConnectionFromJSON(json: any): GroupSAMLSourceConnection { + return GroupSAMLSourceConnectionFromJSONTyped(json, false); +} + +export function GroupSAMLSourceConnectionFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): GroupSAMLSourceConnection { + if (json == null) { + return json; + } + return { + pk: json["pk"], + group: json["group"], + source: json["source"], + sourceObj: SourceFromJSON(json["source_obj"]), + identifier: json["identifier"], + created: new Date(json["created"]), + lastUpdated: new Date(json["last_updated"]), + }; +} + +export function GroupSAMLSourceConnectionToJSON(json: any): GroupSAMLSourceConnection { + return GroupSAMLSourceConnectionToJSONTyped(json, false); +} + +export function GroupSAMLSourceConnectionToJSONTyped( + value?: Omit< + GroupSAMLSourceConnection, + "pk" | "source_obj" | "created" | "last_updated" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + group: value["group"], + source: value["source"], + identifier: value["identifier"], + }; +} diff --git a/packages/client-ts/src/models/GroupSAMLSourceConnectionRequest.ts b/packages/client-ts/src/models/GroupSAMLSourceConnectionRequest.ts new file mode 100644 index 0000000000..9c4e3307b2 --- /dev/null +++ b/packages/client-ts/src/models/GroupSAMLSourceConnectionRequest.ts @@ -0,0 +1,92 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Group Source Connection + * @export + * @interface GroupSAMLSourceConnectionRequest + */ +export interface GroupSAMLSourceConnectionRequest { + /** + * + * @type {string} + * @memberof GroupSAMLSourceConnectionRequest + */ + group: string; + /** + * + * @type {string} + * @memberof GroupSAMLSourceConnectionRequest + */ + source: string; + /** + * + * @type {string} + * @memberof GroupSAMLSourceConnectionRequest + */ + identifier: string; +} + +/** + * Check if a given object implements the GroupSAMLSourceConnectionRequest interface. + */ +export function instanceOfGroupSAMLSourceConnectionRequest( + value: object, +): value is GroupSAMLSourceConnectionRequest { + if (!("group" in value) || value["group"] === undefined) return false; + if (!("source" in value) || value["source"] === undefined) return false; + if (!("identifier" in value) || value["identifier"] === undefined) return false; + return true; +} + +export function GroupSAMLSourceConnectionRequestFromJSON( + json: any, +): GroupSAMLSourceConnectionRequest { + return GroupSAMLSourceConnectionRequestFromJSONTyped(json, false); +} + +export function GroupSAMLSourceConnectionRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): GroupSAMLSourceConnectionRequest { + if (json == null) { + return json; + } + return { + group: json["group"], + source: json["source"], + identifier: json["identifier"], + }; +} + +export function GroupSAMLSourceConnectionRequestToJSON( + json: any, +): GroupSAMLSourceConnectionRequest { + return GroupSAMLSourceConnectionRequestToJSONTyped(json, false); +} + +export function GroupSAMLSourceConnectionRequestToJSONTyped( + value?: GroupSAMLSourceConnectionRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + group: value["group"], + source: value["source"], + identifier: value["identifier"], + }; +} diff --git a/packages/client-ts/src/models/GroupSourceConnection.ts b/packages/client-ts/src/models/GroupSourceConnection.ts new file mode 100644 index 0000000000..79e9036e17 --- /dev/null +++ b/packages/client-ts/src/models/GroupSourceConnection.ts @@ -0,0 +1,121 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Source } from "./Source"; +import { SourceFromJSON } from "./Source"; + +/** + * Group Source Connection + * @export + * @interface GroupSourceConnection + */ +export interface GroupSourceConnection { + /** + * + * @type {number} + * @memberof GroupSourceConnection + */ + readonly pk: number; + /** + * + * @type {string} + * @memberof GroupSourceConnection + */ + group: string; + /** + * + * @type {string} + * @memberof GroupSourceConnection + */ + source: string; + /** + * + * @type {Source} + * @memberof GroupSourceConnection + */ + readonly sourceObj: Source; + /** + * + * @type {string} + * @memberof GroupSourceConnection + */ + identifier: string; + /** + * + * @type {Date} + * @memberof GroupSourceConnection + */ + readonly created: Date; + /** + * + * @type {Date} + * @memberof GroupSourceConnection + */ + readonly lastUpdated: Date; +} + +/** + * Check if a given object implements the GroupSourceConnection interface. + */ +export function instanceOfGroupSourceConnection(value: object): value is GroupSourceConnection { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("group" in value) || value["group"] === undefined) return false; + if (!("source" in value) || value["source"] === undefined) return false; + if (!("sourceObj" in value) || value["sourceObj"] === undefined) return false; + if (!("identifier" in value) || value["identifier"] === undefined) return false; + if (!("created" in value) || value["created"] === undefined) return false; + if (!("lastUpdated" in value) || value["lastUpdated"] === undefined) return false; + return true; +} + +export function GroupSourceConnectionFromJSON(json: any): GroupSourceConnection { + return GroupSourceConnectionFromJSONTyped(json, false); +} + +export function GroupSourceConnectionFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): GroupSourceConnection { + if (json == null) { + return json; + } + return { + pk: json["pk"], + group: json["group"], + source: json["source"], + sourceObj: SourceFromJSON(json["source_obj"]), + identifier: json["identifier"], + created: new Date(json["created"]), + lastUpdated: new Date(json["last_updated"]), + }; +} + +export function GroupSourceConnectionToJSON(json: any): GroupSourceConnection { + return GroupSourceConnectionToJSONTyped(json, false); +} + +export function GroupSourceConnectionToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + group: value["group"], + source: value["source"], + identifier: value["identifier"], + }; +} diff --git a/packages/client-ts/src/models/GroupSourceConnectionRequest.ts b/packages/client-ts/src/models/GroupSourceConnectionRequest.ts new file mode 100644 index 0000000000..59d8400e04 --- /dev/null +++ b/packages/client-ts/src/models/GroupSourceConnectionRequest.ts @@ -0,0 +1,88 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Group Source Connection + * @export + * @interface GroupSourceConnectionRequest + */ +export interface GroupSourceConnectionRequest { + /** + * + * @type {string} + * @memberof GroupSourceConnectionRequest + */ + group: string; + /** + * + * @type {string} + * @memberof GroupSourceConnectionRequest + */ + source: string; + /** + * + * @type {string} + * @memberof GroupSourceConnectionRequest + */ + identifier: string; +} + +/** + * Check if a given object implements the GroupSourceConnectionRequest interface. + */ +export function instanceOfGroupSourceConnectionRequest( + value: object, +): value is GroupSourceConnectionRequest { + if (!("group" in value) || value["group"] === undefined) return false; + if (!("source" in value) || value["source"] === undefined) return false; + if (!("identifier" in value) || value["identifier"] === undefined) return false; + return true; +} + +export function GroupSourceConnectionRequestFromJSON(json: any): GroupSourceConnectionRequest { + return GroupSourceConnectionRequestFromJSONTyped(json, false); +} + +export function GroupSourceConnectionRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): GroupSourceConnectionRequest { + if (json == null) { + return json; + } + return { + group: json["group"], + source: json["source"], + identifier: json["identifier"], + }; +} + +export function GroupSourceConnectionRequestToJSON(json: any): GroupSourceConnectionRequest { + return GroupSourceConnectionRequestToJSONTyped(json, false); +} + +export function GroupSourceConnectionRequestToJSONTyped( + value?: GroupSourceConnectionRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + group: value["group"], + source: value["source"], + identifier: value["identifier"], + }; +} diff --git a/packages/client-ts/src/models/GroupTelegramSourceConnection.ts b/packages/client-ts/src/models/GroupTelegramSourceConnection.ts new file mode 100644 index 0000000000..a93d98c8dd --- /dev/null +++ b/packages/client-ts/src/models/GroupTelegramSourceConnection.ts @@ -0,0 +1,126 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Source } from "./Source"; +import { SourceFromJSON } from "./Source"; + +/** + * Group Source Connection + * @export + * @interface GroupTelegramSourceConnection + */ +export interface GroupTelegramSourceConnection { + /** + * + * @type {number} + * @memberof GroupTelegramSourceConnection + */ + readonly pk: number; + /** + * + * @type {string} + * @memberof GroupTelegramSourceConnection + */ + group: string; + /** + * + * @type {string} + * @memberof GroupTelegramSourceConnection + */ + source: string; + /** + * + * @type {Source} + * @memberof GroupTelegramSourceConnection + */ + readonly sourceObj: Source; + /** + * + * @type {string} + * @memberof GroupTelegramSourceConnection + */ + identifier: string; + /** + * + * @type {Date} + * @memberof GroupTelegramSourceConnection + */ + readonly created: Date; + /** + * + * @type {Date} + * @memberof GroupTelegramSourceConnection + */ + readonly lastUpdated: Date; +} + +/** + * Check if a given object implements the GroupTelegramSourceConnection interface. + */ +export function instanceOfGroupTelegramSourceConnection( + value: object, +): value is GroupTelegramSourceConnection { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("group" in value) || value["group"] === undefined) return false; + if (!("source" in value) || value["source"] === undefined) return false; + if (!("sourceObj" in value) || value["sourceObj"] === undefined) return false; + if (!("identifier" in value) || value["identifier"] === undefined) return false; + if (!("created" in value) || value["created"] === undefined) return false; + if (!("lastUpdated" in value) || value["lastUpdated"] === undefined) return false; + return true; +} + +export function GroupTelegramSourceConnectionFromJSON(json: any): GroupTelegramSourceConnection { + return GroupTelegramSourceConnectionFromJSONTyped(json, false); +} + +export function GroupTelegramSourceConnectionFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): GroupTelegramSourceConnection { + if (json == null) { + return json; + } + return { + pk: json["pk"], + group: json["group"], + source: json["source"], + sourceObj: SourceFromJSON(json["source_obj"]), + identifier: json["identifier"], + created: new Date(json["created"]), + lastUpdated: new Date(json["last_updated"]), + }; +} + +export function GroupTelegramSourceConnectionToJSON(json: any): GroupTelegramSourceConnection { + return GroupTelegramSourceConnectionToJSONTyped(json, false); +} + +export function GroupTelegramSourceConnectionToJSONTyped( + value?: Omit< + GroupTelegramSourceConnection, + "pk" | "source_obj" | "created" | "last_updated" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + group: value["group"], + source: value["source"], + identifier: value["identifier"], + }; +} diff --git a/packages/client-ts/src/models/GroupTelegramSourceConnectionRequest.ts b/packages/client-ts/src/models/GroupTelegramSourceConnectionRequest.ts new file mode 100644 index 0000000000..f1f7e36640 --- /dev/null +++ b/packages/client-ts/src/models/GroupTelegramSourceConnectionRequest.ts @@ -0,0 +1,92 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Group Source Connection + * @export + * @interface GroupTelegramSourceConnectionRequest + */ +export interface GroupTelegramSourceConnectionRequest { + /** + * + * @type {string} + * @memberof GroupTelegramSourceConnectionRequest + */ + group: string; + /** + * + * @type {string} + * @memberof GroupTelegramSourceConnectionRequest + */ + source: string; + /** + * + * @type {string} + * @memberof GroupTelegramSourceConnectionRequest + */ + identifier: string; +} + +/** + * Check if a given object implements the GroupTelegramSourceConnectionRequest interface. + */ +export function instanceOfGroupTelegramSourceConnectionRequest( + value: object, +): value is GroupTelegramSourceConnectionRequest { + if (!("group" in value) || value["group"] === undefined) return false; + if (!("source" in value) || value["source"] === undefined) return false; + if (!("identifier" in value) || value["identifier"] === undefined) return false; + return true; +} + +export function GroupTelegramSourceConnectionRequestFromJSON( + json: any, +): GroupTelegramSourceConnectionRequest { + return GroupTelegramSourceConnectionRequestFromJSONTyped(json, false); +} + +export function GroupTelegramSourceConnectionRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): GroupTelegramSourceConnectionRequest { + if (json == null) { + return json; + } + return { + group: json["group"], + source: json["source"], + identifier: json["identifier"], + }; +} + +export function GroupTelegramSourceConnectionRequestToJSON( + json: any, +): GroupTelegramSourceConnectionRequest { + return GroupTelegramSourceConnectionRequestToJSONTyped(json, false); +} + +export function GroupTelegramSourceConnectionRequestToJSONTyped( + value?: GroupTelegramSourceConnectionRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + group: value["group"], + source: value["source"], + identifier: value["identifier"], + }; +} diff --git a/packages/client-ts/src/models/Hardware.ts b/packages/client-ts/src/models/Hardware.ts new file mode 100644 index 0000000000..404ddff137 --- /dev/null +++ b/packages/client-ts/src/models/Hardware.ts @@ -0,0 +1,105 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + * @interface Hardware + */ +export interface Hardware { + /** + * + * @type {string} + * @memberof Hardware + */ + model?: string; + /** + * + * @type {string} + * @memberof Hardware + */ + manufacturer?: string; + /** + * + * @type {string} + * @memberof Hardware + */ + serial: string; + /** + * + * @type {string} + * @memberof Hardware + */ + cpuName?: string; + /** + * + * @type {number} + * @memberof Hardware + */ + cpuCount?: number; + /** + * + * @type {number} + * @memberof Hardware + */ + memoryBytes?: number; +} + +/** + * Check if a given object implements the Hardware interface. + */ +export function instanceOfHardware(value: object): value is Hardware { + if (!("serial" in value) || value["serial"] === undefined) return false; + return true; +} + +export function HardwareFromJSON(json: any): Hardware { + return HardwareFromJSONTyped(json, false); +} + +export function HardwareFromJSONTyped(json: any, ignoreDiscriminator: boolean): Hardware { + if (json == null) { + return json; + } + return { + model: json["model"] == null ? undefined : json["model"], + manufacturer: json["manufacturer"] == null ? undefined : json["manufacturer"], + serial: json["serial"], + cpuName: json["cpu_name"] == null ? undefined : json["cpu_name"], + cpuCount: json["cpu_count"] == null ? undefined : json["cpu_count"], + memoryBytes: json["memory_bytes"] == null ? undefined : json["memory_bytes"], + }; +} + +export function HardwareToJSON(json: any): Hardware { + return HardwareToJSONTyped(json, false); +} + +export function HardwareToJSONTyped( + value?: Hardware | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + model: value["model"], + manufacturer: value["manufacturer"], + serial: value["serial"], + cpu_name: value["cpuName"], + cpu_count: value["cpuCount"], + memory_bytes: value["memoryBytes"], + }; +} diff --git a/packages/client-ts/src/models/HardwareRequest.ts b/packages/client-ts/src/models/HardwareRequest.ts new file mode 100644 index 0000000000..bfeb0e3814 --- /dev/null +++ b/packages/client-ts/src/models/HardwareRequest.ts @@ -0,0 +1,108 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + * @interface HardwareRequest + */ +export interface HardwareRequest { + /** + * + * @type {string} + * @memberof HardwareRequest + */ + model?: string; + /** + * + * @type {string} + * @memberof HardwareRequest + */ + manufacturer?: string; + /** + * + * @type {string} + * @memberof HardwareRequest + */ + serial: string; + /** + * + * @type {string} + * @memberof HardwareRequest + */ + cpuName?: string; + /** + * + * @type {number} + * @memberof HardwareRequest + */ + cpuCount?: number; + /** + * + * @type {number} + * @memberof HardwareRequest + */ + memoryBytes?: number; +} + +/** + * Check if a given object implements the HardwareRequest interface. + */ +export function instanceOfHardwareRequest(value: object): value is HardwareRequest { + if (!("serial" in value) || value["serial"] === undefined) return false; + return true; +} + +export function HardwareRequestFromJSON(json: any): HardwareRequest { + return HardwareRequestFromJSONTyped(json, false); +} + +export function HardwareRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): HardwareRequest { + if (json == null) { + return json; + } + return { + model: json["model"] == null ? undefined : json["model"], + manufacturer: json["manufacturer"] == null ? undefined : json["manufacturer"], + serial: json["serial"], + cpuName: json["cpu_name"] == null ? undefined : json["cpu_name"], + cpuCount: json["cpu_count"] == null ? undefined : json["cpu_count"], + memoryBytes: json["memory_bytes"] == null ? undefined : json["memory_bytes"], + }; +} + +export function HardwareRequestToJSON(json: any): HardwareRequest { + return HardwareRequestToJSONTyped(json, false); +} + +export function HardwareRequestToJSONTyped( + value?: HardwareRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + model: value["model"], + manufacturer: value["manufacturer"], + serial: value["serial"], + cpu_name: value["cpuName"], + cpu_count: value["cpuCount"], + memory_bytes: value["memoryBytes"], + }; +} diff --git a/packages/client-ts/src/models/IdentificationChallenge.ts b/packages/client-ts/src/models/IdentificationChallenge.ts new file mode 100644 index 0000000000..46df9d6e72 --- /dev/null +++ b/packages/client-ts/src/models/IdentificationChallenge.ts @@ -0,0 +1,240 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { CaptchaChallenge } from "./CaptchaChallenge"; +import { CaptchaChallengeFromJSON, CaptchaChallengeToJSON } from "./CaptchaChallenge"; +import type { ContextualFlowInfo } from "./ContextualFlowInfo"; +import { ContextualFlowInfoFromJSON, ContextualFlowInfoToJSON } from "./ContextualFlowInfo"; +import type { ErrorDetail } from "./ErrorDetail"; +import type { FlowDesignationEnum } from "./FlowDesignationEnum"; +import { FlowDesignationEnumFromJSON, FlowDesignationEnumToJSON } from "./FlowDesignationEnum"; +import type { LoginSource } from "./LoginSource"; +import { LoginSourceFromJSON, LoginSourceToJSON } from "./LoginSource"; + +/** + * Identification challenges with all UI elements + * @export + * @interface IdentificationChallenge + */ +export interface IdentificationChallenge { + /** + * + * @type {ContextualFlowInfo} + * @memberof IdentificationChallenge + */ + flowInfo?: ContextualFlowInfo; + /** + * + * @type {string} + * @memberof IdentificationChallenge + */ + component?: string; + /** + * + * @type {{ [key: string]: Array; }} + * @memberof IdentificationChallenge + */ + responseErrors?: { [key: string]: Array }; + /** + * + * @type {Array} + * @memberof IdentificationChallenge + */ + userFields: Array | null; + /** + * + * @type {string} + * @memberof IdentificationChallenge + */ + pendingUserIdentifier?: string | null; + /** + * + * @type {boolean} + * @memberof IdentificationChallenge + */ + passwordFields: boolean; + /** + * + * @type {boolean} + * @memberof IdentificationChallenge + */ + allowShowPassword?: boolean; + /** + * + * @type {string} + * @memberof IdentificationChallenge + */ + applicationPre?: string; + /** + * + * @type {string} + * @memberof IdentificationChallenge + */ + applicationPreLaunch?: string; + /** + * + * @type {FlowDesignationEnum} + * @memberof IdentificationChallenge + */ + flowDesignation: FlowDesignationEnum; + /** + * + * @type {CaptchaChallenge} + * @memberof IdentificationChallenge + */ + captchaStage?: CaptchaChallenge | null; + /** + * + * @type {string} + * @memberof IdentificationChallenge + */ + enrollUrl?: string; + /** + * + * @type {string} + * @memberof IdentificationChallenge + */ + recoveryUrl?: string; + /** + * + * @type {string} + * @memberof IdentificationChallenge + */ + passwordlessUrl?: string; + /** + * + * @type {string} + * @memberof IdentificationChallenge + */ + primaryAction: string; + /** + * + * @type {Array} + * @memberof IdentificationChallenge + */ + sources?: Array; + /** + * + * @type {boolean} + * @memberof IdentificationChallenge + */ + showSourceLabels: boolean; + /** + * + * @type {boolean} + * @memberof IdentificationChallenge + */ + enableRememberMe?: boolean; + /** + * + * @type {{ [key: string]: any; }} + * @memberof IdentificationChallenge + */ + passkeyChallenge?: { [key: string]: any } | null; +} + +/** + * Check if a given object implements the IdentificationChallenge interface. + */ +export function instanceOfIdentificationChallenge(value: object): value is IdentificationChallenge { + if (!("userFields" in value) || value["userFields"] === undefined) return false; + if (!("passwordFields" in value) || value["passwordFields"] === undefined) return false; + if (!("flowDesignation" in value) || value["flowDesignation"] === undefined) return false; + if (!("primaryAction" in value) || value["primaryAction"] === undefined) return false; + if (!("showSourceLabels" in value) || value["showSourceLabels"] === undefined) return false; + return true; +} + +export function IdentificationChallengeFromJSON(json: any): IdentificationChallenge { + return IdentificationChallengeFromJSONTyped(json, false); +} + +export function IdentificationChallengeFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): IdentificationChallenge { + if (json == null) { + return json; + } + return { + flowInfo: + json["flow_info"] == null ? undefined : ContextualFlowInfoFromJSON(json["flow_info"]), + component: json["component"] == null ? undefined : json["component"], + responseErrors: json["response_errors"] == null ? undefined : json["response_errors"], + userFields: json["user_fields"] == null ? null : json["user_fields"], + pendingUserIdentifier: + json["pending_user_identifier"] == null ? undefined : json["pending_user_identifier"], + passwordFields: json["password_fields"], + allowShowPassword: + json["allow_show_password"] == null ? undefined : json["allow_show_password"], + applicationPre: json["application_pre"] == null ? undefined : json["application_pre"], + applicationPreLaunch: + json["application_pre_launch"] == null ? undefined : json["application_pre_launch"], + flowDesignation: FlowDesignationEnumFromJSON(json["flow_designation"]), + captchaStage: + json["captcha_stage"] == null + ? undefined + : CaptchaChallengeFromJSON(json["captcha_stage"]), + enrollUrl: json["enroll_url"] == null ? undefined : json["enroll_url"], + recoveryUrl: json["recovery_url"] == null ? undefined : json["recovery_url"], + passwordlessUrl: json["passwordless_url"] == null ? undefined : json["passwordless_url"], + primaryAction: json["primary_action"], + sources: + json["sources"] == null + ? undefined + : (json["sources"] as Array).map(LoginSourceFromJSON), + showSourceLabels: json["show_source_labels"], + enableRememberMe: + json["enable_remember_me"] == null ? undefined : json["enable_remember_me"], + passkeyChallenge: json["passkey_challenge"] == null ? undefined : json["passkey_challenge"], + }; +} + +export function IdentificationChallengeToJSON(json: any): IdentificationChallenge { + return IdentificationChallengeToJSONTyped(json, false); +} + +export function IdentificationChallengeToJSONTyped( + value?: IdentificationChallenge | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + flow_info: ContextualFlowInfoToJSON(value["flowInfo"]), + component: value["component"], + response_errors: value["responseErrors"], + user_fields: value["userFields"], + pending_user_identifier: value["pendingUserIdentifier"], + password_fields: value["passwordFields"], + allow_show_password: value["allowShowPassword"], + application_pre: value["applicationPre"], + application_pre_launch: value["applicationPreLaunch"], + flow_designation: FlowDesignationEnumToJSON(value["flowDesignation"]), + captcha_stage: CaptchaChallengeToJSON(value["captchaStage"]), + enroll_url: value["enrollUrl"], + recovery_url: value["recoveryUrl"], + passwordless_url: value["passwordlessUrl"], + primary_action: value["primaryAction"], + sources: + value["sources"] == null + ? undefined + : (value["sources"] as Array).map(LoginSourceToJSON), + show_source_labels: value["showSourceLabels"], + enable_remember_me: value["enableRememberMe"], + passkey_challenge: value["passkeyChallenge"], + }; +} diff --git a/packages/client-ts/src/models/IdentificationChallengeResponseRequest.ts b/packages/client-ts/src/models/IdentificationChallengeResponseRequest.ts new file mode 100644 index 0000000000..027bb9ce6f --- /dev/null +++ b/packages/client-ts/src/models/IdentificationChallengeResponseRequest.ts @@ -0,0 +1,105 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Identification challenge + * @export + * @interface IdentificationChallengeResponseRequest + */ +export interface IdentificationChallengeResponseRequest { + /** + * + * @type {string} + * @memberof IdentificationChallengeResponseRequest + */ + component?: string; + /** + * + * @type {string} + * @memberof IdentificationChallengeResponseRequest + */ + uidField?: string | null; + /** + * + * @type {string} + * @memberof IdentificationChallengeResponseRequest + */ + password?: string | null; + /** + * + * @type {string} + * @memberof IdentificationChallengeResponseRequest + */ + captchaToken?: string | null; + /** + * + * @type {{ [key: string]: any; }} + * @memberof IdentificationChallengeResponseRequest + */ + passkey?: { [key: string]: any } | null; +} + +/** + * Check if a given object implements the IdentificationChallengeResponseRequest interface. + */ +export function instanceOfIdentificationChallengeResponseRequest( + value: object, +): value is IdentificationChallengeResponseRequest { + return true; +} + +export function IdentificationChallengeResponseRequestFromJSON( + json: any, +): IdentificationChallengeResponseRequest { + return IdentificationChallengeResponseRequestFromJSONTyped(json, false); +} + +export function IdentificationChallengeResponseRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): IdentificationChallengeResponseRequest { + if (json == null) { + return json; + } + return { + component: json["component"] == null ? undefined : json["component"], + uidField: json["uid_field"] == null ? undefined : json["uid_field"], + password: json["password"] == null ? undefined : json["password"], + captchaToken: json["captcha_token"] == null ? undefined : json["captcha_token"], + passkey: json["passkey"] == null ? undefined : json["passkey"], + }; +} + +export function IdentificationChallengeResponseRequestToJSON( + json: any, +): IdentificationChallengeResponseRequest { + return IdentificationChallengeResponseRequestToJSONTyped(json, false); +} + +export function IdentificationChallengeResponseRequestToJSONTyped( + value?: IdentificationChallengeResponseRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + component: value["component"], + uid_field: value["uidField"], + password: value["password"], + captcha_token: value["captchaToken"], + passkey: value["passkey"], + }; +} diff --git a/packages/client-ts/src/models/IdentificationStage.ts b/packages/client-ts/src/models/IdentificationStage.ts new file mode 100644 index 0000000000..7309585d39 --- /dev/null +++ b/packages/client-ts/src/models/IdentificationStage.ts @@ -0,0 +1,240 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { FlowSet } from "./FlowSet"; +import { FlowSetFromJSON } from "./FlowSet"; +import type { UserFieldsEnum } from "./UserFieldsEnum"; +import { UserFieldsEnumFromJSON, UserFieldsEnumToJSON } from "./UserFieldsEnum"; + +/** + * IdentificationStage Serializer + * @export + * @interface IdentificationStage + */ +export interface IdentificationStage { + /** + * + * @type {string} + * @memberof IdentificationStage + */ + readonly pk: string; + /** + * + * @type {string} + * @memberof IdentificationStage + */ + name: string; + /** + * Get object type so that we know how to edit the object + * @type {string} + * @memberof IdentificationStage + */ + readonly component: string; + /** + * Return object's verbose_name + * @type {string} + * @memberof IdentificationStage + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof IdentificationStage + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof IdentificationStage + */ + readonly metaModelName: string; + /** + * + * @type {Array} + * @memberof IdentificationStage + */ + readonly flowSet: Array; + /** + * Fields of the user object to match against. (Hold shift to select multiple options) + * @type {Array} + * @memberof IdentificationStage + */ + userFields?: Array; + /** + * When set, shows a password field, instead of showing the password field as separate step. + * @type {string} + * @memberof IdentificationStage + */ + passwordStage?: string | null; + /** + * When set, adds functionality exactly like a Captcha stage, but baked into the Identification stage. + * @type {string} + * @memberof IdentificationStage + */ + captchaStage?: string | null; + /** + * When enabled, user fields are matched regardless of their casing. + * @type {boolean} + * @memberof IdentificationStage + */ + caseInsensitiveMatching?: boolean; + /** + * When a valid username/email has been entered, and this option is enabled, the user's username and avatar will be shown. Otherwise, the text that the user entered will be shown + * @type {boolean} + * @memberof IdentificationStage + */ + showMatchedUser?: boolean; + /** + * Optional enrollment flow, which is linked at the bottom of the page. + * @type {string} + * @memberof IdentificationStage + */ + enrollmentFlow?: string | null; + /** + * Optional recovery flow, which is linked at the bottom of the page. + * @type {string} + * @memberof IdentificationStage + */ + recoveryFlow?: string | null; + /** + * Optional passwordless flow, which is linked at the bottom of the page. + * @type {string} + * @memberof IdentificationStage + */ + passwordlessFlow?: string | null; + /** + * Specify which sources should be shown. + * @type {Array} + * @memberof IdentificationStage + */ + sources?: Array; + /** + * + * @type {boolean} + * @memberof IdentificationStage + */ + showSourceLabels?: boolean; + /** + * When enabled, the stage will succeed and continue even when incorrect user info is entered. + * @type {boolean} + * @memberof IdentificationStage + */ + pretendUserExists?: boolean; + /** + * Show the user the 'Remember me on this device' toggle, allowing repeat users to skip straight to entering their password. + * @type {boolean} + * @memberof IdentificationStage + */ + enableRememberMe?: boolean; + /** + * When set, and conditional WebAuthn is available, allow the user to use their passkey as a first factor. + * @type {string} + * @memberof IdentificationStage + */ + webauthnStage?: string | null; +} + +/** + * Check if a given object implements the IdentificationStage interface. + */ +export function instanceOfIdentificationStage(value: object): value is IdentificationStage { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + if (!("flowSet" in value) || value["flowSet"] === undefined) return false; + return true; +} + +export function IdentificationStageFromJSON(json: any): IdentificationStage { + return IdentificationStageFromJSONTyped(json, false); +} + +export function IdentificationStageFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): IdentificationStage { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + component: json["component"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + flowSet: (json["flow_set"] as Array).map(FlowSetFromJSON), + userFields: + json["user_fields"] == null + ? undefined + : (json["user_fields"] as Array).map(UserFieldsEnumFromJSON), + passwordStage: json["password_stage"] == null ? undefined : json["password_stage"], + captchaStage: json["captcha_stage"] == null ? undefined : json["captcha_stage"], + caseInsensitiveMatching: + json["case_insensitive_matching"] == null + ? undefined + : json["case_insensitive_matching"], + showMatchedUser: json["show_matched_user"] == null ? undefined : json["show_matched_user"], + enrollmentFlow: json["enrollment_flow"] == null ? undefined : json["enrollment_flow"], + recoveryFlow: json["recovery_flow"] == null ? undefined : json["recovery_flow"], + passwordlessFlow: json["passwordless_flow"] == null ? undefined : json["passwordless_flow"], + sources: json["sources"] == null ? undefined : json["sources"], + showSourceLabels: + json["show_source_labels"] == null ? undefined : json["show_source_labels"], + pretendUserExists: + json["pretend_user_exists"] == null ? undefined : json["pretend_user_exists"], + enableRememberMe: + json["enable_remember_me"] == null ? undefined : json["enable_remember_me"], + webauthnStage: json["webauthn_stage"] == null ? undefined : json["webauthn_stage"], + }; +} + +export function IdentificationStageToJSON(json: any): IdentificationStage { + return IdentificationStageToJSONTyped(json, false); +} + +export function IdentificationStageToJSONTyped( + value?: Omit< + IdentificationStage, + "pk" | "component" | "verbose_name" | "verbose_name_plural" | "meta_model_name" | "flow_set" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + user_fields: + value["userFields"] == null + ? undefined + : (value["userFields"] as Array).map(UserFieldsEnumToJSON), + password_stage: value["passwordStage"], + captcha_stage: value["captchaStage"], + case_insensitive_matching: value["caseInsensitiveMatching"], + show_matched_user: value["showMatchedUser"], + enrollment_flow: value["enrollmentFlow"], + recovery_flow: value["recoveryFlow"], + passwordless_flow: value["passwordlessFlow"], + sources: value["sources"], + show_source_labels: value["showSourceLabels"], + pretend_user_exists: value["pretendUserExists"], + enable_remember_me: value["enableRememberMe"], + webauthn_stage: value["webauthnStage"], + }; +} diff --git a/packages/client-ts/src/models/IdentificationStageRequest.ts b/packages/client-ts/src/models/IdentificationStageRequest.ts new file mode 100644 index 0000000000..0d56cfd818 --- /dev/null +++ b/packages/client-ts/src/models/IdentificationStageRequest.ts @@ -0,0 +1,189 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { UserFieldsEnum } from "./UserFieldsEnum"; +import { UserFieldsEnumFromJSON, UserFieldsEnumToJSON } from "./UserFieldsEnum"; + +/** + * IdentificationStage Serializer + * @export + * @interface IdentificationStageRequest + */ +export interface IdentificationStageRequest { + /** + * + * @type {string} + * @memberof IdentificationStageRequest + */ + name: string; + /** + * Fields of the user object to match against. (Hold shift to select multiple options) + * @type {Array} + * @memberof IdentificationStageRequest + */ + userFields?: Array; + /** + * When set, shows a password field, instead of showing the password field as separate step. + * @type {string} + * @memberof IdentificationStageRequest + */ + passwordStage?: string | null; + /** + * When set, adds functionality exactly like a Captcha stage, but baked into the Identification stage. + * @type {string} + * @memberof IdentificationStageRequest + */ + captchaStage?: string | null; + /** + * When enabled, user fields are matched regardless of their casing. + * @type {boolean} + * @memberof IdentificationStageRequest + */ + caseInsensitiveMatching?: boolean; + /** + * When a valid username/email has been entered, and this option is enabled, the user's username and avatar will be shown. Otherwise, the text that the user entered will be shown + * @type {boolean} + * @memberof IdentificationStageRequest + */ + showMatchedUser?: boolean; + /** + * Optional enrollment flow, which is linked at the bottom of the page. + * @type {string} + * @memberof IdentificationStageRequest + */ + enrollmentFlow?: string | null; + /** + * Optional recovery flow, which is linked at the bottom of the page. + * @type {string} + * @memberof IdentificationStageRequest + */ + recoveryFlow?: string | null; + /** + * Optional passwordless flow, which is linked at the bottom of the page. + * @type {string} + * @memberof IdentificationStageRequest + */ + passwordlessFlow?: string | null; + /** + * Specify which sources should be shown. + * @type {Array} + * @memberof IdentificationStageRequest + */ + sources?: Array; + /** + * + * @type {boolean} + * @memberof IdentificationStageRequest + */ + showSourceLabels?: boolean; + /** + * When enabled, the stage will succeed and continue even when incorrect user info is entered. + * @type {boolean} + * @memberof IdentificationStageRequest + */ + pretendUserExists?: boolean; + /** + * Show the user the 'Remember me on this device' toggle, allowing repeat users to skip straight to entering their password. + * @type {boolean} + * @memberof IdentificationStageRequest + */ + enableRememberMe?: boolean; + /** + * When set, and conditional WebAuthn is available, allow the user to use their passkey as a first factor. + * @type {string} + * @memberof IdentificationStageRequest + */ + webauthnStage?: string | null; +} + +/** + * Check if a given object implements the IdentificationStageRequest interface. + */ +export function instanceOfIdentificationStageRequest( + value: object, +): value is IdentificationStageRequest { + if (!("name" in value) || value["name"] === undefined) return false; + return true; +} + +export function IdentificationStageRequestFromJSON(json: any): IdentificationStageRequest { + return IdentificationStageRequestFromJSONTyped(json, false); +} + +export function IdentificationStageRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): IdentificationStageRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + userFields: + json["user_fields"] == null + ? undefined + : (json["user_fields"] as Array).map(UserFieldsEnumFromJSON), + passwordStage: json["password_stage"] == null ? undefined : json["password_stage"], + captchaStage: json["captcha_stage"] == null ? undefined : json["captcha_stage"], + caseInsensitiveMatching: + json["case_insensitive_matching"] == null + ? undefined + : json["case_insensitive_matching"], + showMatchedUser: json["show_matched_user"] == null ? undefined : json["show_matched_user"], + enrollmentFlow: json["enrollment_flow"] == null ? undefined : json["enrollment_flow"], + recoveryFlow: json["recovery_flow"] == null ? undefined : json["recovery_flow"], + passwordlessFlow: json["passwordless_flow"] == null ? undefined : json["passwordless_flow"], + sources: json["sources"] == null ? undefined : json["sources"], + showSourceLabels: + json["show_source_labels"] == null ? undefined : json["show_source_labels"], + pretendUserExists: + json["pretend_user_exists"] == null ? undefined : json["pretend_user_exists"], + enableRememberMe: + json["enable_remember_me"] == null ? undefined : json["enable_remember_me"], + webauthnStage: json["webauthn_stage"] == null ? undefined : json["webauthn_stage"], + }; +} + +export function IdentificationStageRequestToJSON(json: any): IdentificationStageRequest { + return IdentificationStageRequestToJSONTyped(json, false); +} + +export function IdentificationStageRequestToJSONTyped( + value?: IdentificationStageRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + user_fields: + value["userFields"] == null + ? undefined + : (value["userFields"] as Array).map(UserFieldsEnumToJSON), + password_stage: value["passwordStage"], + captcha_stage: value["captchaStage"], + case_insensitive_matching: value["caseInsensitiveMatching"], + show_matched_user: value["showMatchedUser"], + enrollment_flow: value["enrollmentFlow"], + recovery_flow: value["recoveryFlow"], + passwordless_flow: value["passwordlessFlow"], + sources: value["sources"], + show_source_labels: value["showSourceLabels"], + pretend_user_exists: value["pretendUserExists"], + enable_remember_me: value["enableRememberMe"], + webauthn_stage: value["webauthnStage"], + }; +} diff --git a/packages/client-ts/src/models/IframeLogoutChallenge.ts b/packages/client-ts/src/models/IframeLogoutChallenge.ts new file mode 100644 index 0000000000..1c256b37d9 --- /dev/null +++ b/packages/client-ts/src/models/IframeLogoutChallenge.ts @@ -0,0 +1,104 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { ContextualFlowInfo } from "./ContextualFlowInfo"; +import { ContextualFlowInfoFromJSON, ContextualFlowInfoToJSON } from "./ContextualFlowInfo"; +import type { ErrorDetail } from "./ErrorDetail"; +import type { LogoutURL } from "./LogoutURL"; +import { LogoutURLFromJSON, LogoutURLToJSON } from "./LogoutURL"; + +/** + * Challenge for iframe logout + * @export + * @interface IframeLogoutChallenge + */ +export interface IframeLogoutChallenge { + /** + * + * @type {ContextualFlowInfo} + * @memberof IframeLogoutChallenge + */ + flowInfo?: ContextualFlowInfo; + /** + * + * @type {string} + * @memberof IframeLogoutChallenge + */ + component?: string; + /** + * + * @type {{ [key: string]: Array; }} + * @memberof IframeLogoutChallenge + */ + responseErrors?: { [key: string]: Array }; + /** + * + * @type {Array} + * @memberof IframeLogoutChallenge + */ + logoutUrls?: Array; +} + +/** + * Check if a given object implements the IframeLogoutChallenge interface. + */ +export function instanceOfIframeLogoutChallenge(value: object): value is IframeLogoutChallenge { + return true; +} + +export function IframeLogoutChallengeFromJSON(json: any): IframeLogoutChallenge { + return IframeLogoutChallengeFromJSONTyped(json, false); +} + +export function IframeLogoutChallengeFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): IframeLogoutChallenge { + if (json == null) { + return json; + } + return { + flowInfo: + json["flow_info"] == null ? undefined : ContextualFlowInfoFromJSON(json["flow_info"]), + component: json["component"] == null ? undefined : json["component"], + responseErrors: json["response_errors"] == null ? undefined : json["response_errors"], + logoutUrls: + json["logout_urls"] == null + ? undefined + : (json["logout_urls"] as Array).map(LogoutURLFromJSON), + }; +} + +export function IframeLogoutChallengeToJSON(json: any): IframeLogoutChallenge { + return IframeLogoutChallengeToJSONTyped(json, false); +} + +export function IframeLogoutChallengeToJSONTyped( + value?: IframeLogoutChallenge | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + flow_info: ContextualFlowInfoToJSON(value["flowInfo"]), + component: value["component"], + response_errors: value["responseErrors"], + logout_urls: + value["logoutUrls"] == null + ? undefined + : (value["logoutUrls"] as Array).map(LogoutURLToJSON), + }; +} diff --git a/packages/client-ts/src/models/IframeLogoutChallengeResponseRequest.ts b/packages/client-ts/src/models/IframeLogoutChallengeResponseRequest.ts new file mode 100644 index 0000000000..09312956da --- /dev/null +++ b/packages/client-ts/src/models/IframeLogoutChallengeResponseRequest.ts @@ -0,0 +1,73 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Response for iframe logout + * @export + * @interface IframeLogoutChallengeResponseRequest + */ +export interface IframeLogoutChallengeResponseRequest { + /** + * + * @type {string} + * @memberof IframeLogoutChallengeResponseRequest + */ + component?: string; +} + +/** + * Check if a given object implements the IframeLogoutChallengeResponseRequest interface. + */ +export function instanceOfIframeLogoutChallengeResponseRequest( + value: object, +): value is IframeLogoutChallengeResponseRequest { + return true; +} + +export function IframeLogoutChallengeResponseRequestFromJSON( + json: any, +): IframeLogoutChallengeResponseRequest { + return IframeLogoutChallengeResponseRequestFromJSONTyped(json, false); +} + +export function IframeLogoutChallengeResponseRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): IframeLogoutChallengeResponseRequest { + if (json == null) { + return json; + } + return { + component: json["component"] == null ? undefined : json["component"], + }; +} + +export function IframeLogoutChallengeResponseRequestToJSON( + json: any, +): IframeLogoutChallengeResponseRequest { + return IframeLogoutChallengeResponseRequestToJSONTyped(json, false); +} + +export function IframeLogoutChallengeResponseRequestToJSONTyped( + value?: IframeLogoutChallengeResponseRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + component: value["component"], + }; +} diff --git a/packages/client-ts/src/models/ImpersonationRequest.ts b/packages/client-ts/src/models/ImpersonationRequest.ts new file mode 100644 index 0000000000..47dd83b320 --- /dev/null +++ b/packages/client-ts/src/models/ImpersonationRequest.ts @@ -0,0 +1,68 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + * @interface ImpersonationRequest + */ +export interface ImpersonationRequest { + /** + * + * @type {string} + * @memberof ImpersonationRequest + */ + reason: string; +} + +/** + * Check if a given object implements the ImpersonationRequest interface. + */ +export function instanceOfImpersonationRequest(value: object): value is ImpersonationRequest { + if (!("reason" in value) || value["reason"] === undefined) return false; + return true; +} + +export function ImpersonationRequestFromJSON(json: any): ImpersonationRequest { + return ImpersonationRequestFromJSONTyped(json, false); +} + +export function ImpersonationRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): ImpersonationRequest { + if (json == null) { + return json; + } + return { + reason: json["reason"], + }; +} + +export function ImpersonationRequestToJSON(json: any): ImpersonationRequest { + return ImpersonationRequestToJSONTyped(json, false); +} + +export function ImpersonationRequestToJSONTyped( + value?: ImpersonationRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + reason: value["reason"], + }; +} diff --git a/packages/client-ts/src/models/InitialPermissions.ts b/packages/client-ts/src/models/InitialPermissions.ts new file mode 100644 index 0000000000..d7c7d02e14 --- /dev/null +++ b/packages/client-ts/src/models/InitialPermissions.ts @@ -0,0 +1,104 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Permission } from "./Permission"; +import { PermissionFromJSON } from "./Permission"; + +/** + * InitialPermissions serializer + * @export + * @interface InitialPermissions + */ +export interface InitialPermissions { + /** + * + * @type {number} + * @memberof InitialPermissions + */ + readonly pk: number; + /** + * + * @type {string} + * @memberof InitialPermissions + */ + name: string; + /** + * + * @type {string} + * @memberof InitialPermissions + */ + role: string; + /** + * + * @type {Array} + * @memberof InitialPermissions + */ + permissions?: Array; + /** + * + * @type {Array} + * @memberof InitialPermissions + */ + readonly permissionsObj: Array; +} + +/** + * Check if a given object implements the InitialPermissions interface. + */ +export function instanceOfInitialPermissions(value: object): value is InitialPermissions { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("role" in value) || value["role"] === undefined) return false; + if (!("permissionsObj" in value) || value["permissionsObj"] === undefined) return false; + return true; +} + +export function InitialPermissionsFromJSON(json: any): InitialPermissions { + return InitialPermissionsFromJSONTyped(json, false); +} + +export function InitialPermissionsFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): InitialPermissions { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + role: json["role"], + permissions: json["permissions"] == null ? undefined : json["permissions"], + permissionsObj: (json["permissions_obj"] as Array).map(PermissionFromJSON), + }; +} + +export function InitialPermissionsToJSON(json: any): InitialPermissions { + return InitialPermissionsToJSONTyped(json, false); +} + +export function InitialPermissionsToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + role: value["role"], + permissions: value["permissions"], + }; +} diff --git a/packages/client-ts/src/models/InitialPermissionsRequest.ts b/packages/client-ts/src/models/InitialPermissionsRequest.ts new file mode 100644 index 0000000000..24542b0e56 --- /dev/null +++ b/packages/client-ts/src/models/InitialPermissionsRequest.ts @@ -0,0 +1,87 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * InitialPermissions serializer + * @export + * @interface InitialPermissionsRequest + */ +export interface InitialPermissionsRequest { + /** + * + * @type {string} + * @memberof InitialPermissionsRequest + */ + name: string; + /** + * + * @type {string} + * @memberof InitialPermissionsRequest + */ + role: string; + /** + * + * @type {Array} + * @memberof InitialPermissionsRequest + */ + permissions?: Array; +} + +/** + * Check if a given object implements the InitialPermissionsRequest interface. + */ +export function instanceOfInitialPermissionsRequest( + value: object, +): value is InitialPermissionsRequest { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("role" in value) || value["role"] === undefined) return false; + return true; +} + +export function InitialPermissionsRequestFromJSON(json: any): InitialPermissionsRequest { + return InitialPermissionsRequestFromJSONTyped(json, false); +} + +export function InitialPermissionsRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): InitialPermissionsRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + role: json["role"], + permissions: json["permissions"] == null ? undefined : json["permissions"], + }; +} + +export function InitialPermissionsRequestToJSON(json: any): InitialPermissionsRequest { + return InitialPermissionsRequestToJSONTyped(json, false); +} + +export function InitialPermissionsRequestToJSONTyped( + value?: InitialPermissionsRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + role: value["role"], + permissions: value["permissions"], + }; +} diff --git a/packages/client-ts/src/models/InstallID.ts b/packages/client-ts/src/models/InstallID.ts new file mode 100644 index 0000000000..deb05604fd --- /dev/null +++ b/packages/client-ts/src/models/InstallID.ts @@ -0,0 +1,65 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + * @interface InstallID + */ +export interface InstallID { + /** + * + * @type {string} + * @memberof InstallID + */ + installId: string; +} + +/** + * Check if a given object implements the InstallID interface. + */ +export function instanceOfInstallID(value: object): value is InstallID { + if (!("installId" in value) || value["installId"] === undefined) return false; + return true; +} + +export function InstallIDFromJSON(json: any): InstallID { + return InstallIDFromJSONTyped(json, false); +} + +export function InstallIDFromJSONTyped(json: any, ignoreDiscriminator: boolean): InstallID { + if (json == null) { + return json; + } + return { + installId: json["install_id"], + }; +} + +export function InstallIDToJSON(json: any): InstallID { + return InstallIDToJSONTyped(json, false); +} + +export function InstallIDToJSONTyped( + value?: InstallID | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + install_id: value["installId"], + }; +} diff --git a/packages/client-ts/src/models/IntentEnum.ts b/packages/client-ts/src/models/IntentEnum.ts new file mode 100644 index 0000000000..11fb7a34a5 --- /dev/null +++ b/packages/client-ts/src/models/IntentEnum.ts @@ -0,0 +1,53 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const IntentEnum = { + Verification: "verification", + Api: "api", + Recovery: "recovery", + AppPassword: "app_password", + UnknownDefaultOpenApi: "11184809", +} as const; +export type IntentEnum = (typeof IntentEnum)[keyof typeof IntentEnum]; + +export function instanceOfIntentEnum(value: any): boolean { + for (const key in IntentEnum) { + if (Object.prototype.hasOwnProperty.call(IntentEnum, key)) { + if (IntentEnum[key as keyof typeof IntentEnum] === value) { + return true; + } + } + } + return false; +} + +export function IntentEnumFromJSON(json: any): IntentEnum { + return IntentEnumFromJSONTyped(json, false); +} + +export function IntentEnumFromJSONTyped(json: any, ignoreDiscriminator: boolean): IntentEnum { + return json as IntentEnum; +} + +export function IntentEnumToJSON(value?: IntentEnum | null): any { + return value as any; +} + +export function IntentEnumToJSONTyped(value: any, ignoreDiscriminator: boolean): IntentEnum { + return value as IntentEnum; +} diff --git a/packages/client-ts/src/models/InvalidResponseActionEnum.ts b/packages/client-ts/src/models/InvalidResponseActionEnum.ts new file mode 100644 index 0000000000..3b7614a6e9 --- /dev/null +++ b/packages/client-ts/src/models/InvalidResponseActionEnum.ts @@ -0,0 +1,61 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const InvalidResponseActionEnum = { + Retry: "retry", + Restart: "restart", + RestartWithContext: "restart_with_context", + UnknownDefaultOpenApi: "11184809", +} as const; +export type InvalidResponseActionEnum = + (typeof InvalidResponseActionEnum)[keyof typeof InvalidResponseActionEnum]; + +export function instanceOfInvalidResponseActionEnum(value: any): boolean { + for (const key in InvalidResponseActionEnum) { + if (Object.prototype.hasOwnProperty.call(InvalidResponseActionEnum, key)) { + if ( + InvalidResponseActionEnum[key as keyof typeof InvalidResponseActionEnum] === value + ) { + return true; + } + } + } + return false; +} + +export function InvalidResponseActionEnumFromJSON(json: any): InvalidResponseActionEnum { + return InvalidResponseActionEnumFromJSONTyped(json, false); +} + +export function InvalidResponseActionEnumFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): InvalidResponseActionEnum { + return json as InvalidResponseActionEnum; +} + +export function InvalidResponseActionEnumToJSON(value?: InvalidResponseActionEnum | null): any { + return value as any; +} + +export function InvalidResponseActionEnumToJSONTyped( + value: any, + ignoreDiscriminator: boolean, +): InvalidResponseActionEnum { + return value as InvalidResponseActionEnum; +} diff --git a/packages/client-ts/src/models/Invitation.ts b/packages/client-ts/src/models/Invitation.ts new file mode 100644 index 0000000000..e416f04d80 --- /dev/null +++ b/packages/client-ts/src/models/Invitation.ts @@ -0,0 +1,126 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Flow } from "./Flow"; +import { FlowFromJSON } from "./Flow"; +import type { PartialUser } from "./PartialUser"; +import { PartialUserFromJSON } from "./PartialUser"; + +/** + * Invitation Serializer + * @export + * @interface Invitation + */ +export interface Invitation { + /** + * + * @type {string} + * @memberof Invitation + */ + readonly pk: string; + /** + * + * @type {string} + * @memberof Invitation + */ + name: string; + /** + * + * @type {Date} + * @memberof Invitation + */ + expires?: Date | null; + /** + * + * @type {{ [key: string]: any; }} + * @memberof Invitation + */ + fixedData?: { [key: string]: any }; + /** + * + * @type {PartialUser} + * @memberof Invitation + */ + readonly createdBy: PartialUser; + /** + * When enabled, the invitation will be deleted after usage. + * @type {boolean} + * @memberof Invitation + */ + singleUse?: boolean; + /** + * When set, only the configured flow can use this invitation. + * @type {string} + * @memberof Invitation + */ + flow?: string | null; + /** + * + * @type {Flow} + * @memberof Invitation + */ + readonly flowObj: Flow; +} + +/** + * Check if a given object implements the Invitation interface. + */ +export function instanceOfInvitation(value: object): value is Invitation { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("createdBy" in value) || value["createdBy"] === undefined) return false; + if (!("flowObj" in value) || value["flowObj"] === undefined) return false; + return true; +} + +export function InvitationFromJSON(json: any): Invitation { + return InvitationFromJSONTyped(json, false); +} + +export function InvitationFromJSONTyped(json: any, ignoreDiscriminator: boolean): Invitation { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + expires: json["expires"] == null ? undefined : new Date(json["expires"]), + fixedData: json["fixed_data"] == null ? undefined : json["fixed_data"], + createdBy: PartialUserFromJSON(json["created_by"]), + singleUse: json["single_use"] == null ? undefined : json["single_use"], + flow: json["flow"] == null ? undefined : json["flow"], + flowObj: FlowFromJSON(json["flow_obj"]), + }; +} + +export function InvitationToJSON(json: any): Invitation { + return InvitationToJSONTyped(json, false); +} + +export function InvitationToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + expires: value["expires"] == null ? value["expires"] : value["expires"].toISOString(), + fixed_data: value["fixedData"], + single_use: value["singleUse"], + flow: value["flow"], + }; +} diff --git a/packages/client-ts/src/models/InvitationRequest.ts b/packages/client-ts/src/models/InvitationRequest.ts new file mode 100644 index 0000000000..a5c4d1b201 --- /dev/null +++ b/packages/client-ts/src/models/InvitationRequest.ts @@ -0,0 +1,100 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Invitation Serializer + * @export + * @interface InvitationRequest + */ +export interface InvitationRequest { + /** + * + * @type {string} + * @memberof InvitationRequest + */ + name: string; + /** + * + * @type {Date} + * @memberof InvitationRequest + */ + expires?: Date | null; + /** + * + * @type {{ [key: string]: any; }} + * @memberof InvitationRequest + */ + fixedData?: { [key: string]: any }; + /** + * When enabled, the invitation will be deleted after usage. + * @type {boolean} + * @memberof InvitationRequest + */ + singleUse?: boolean; + /** + * When set, only the configured flow can use this invitation. + * @type {string} + * @memberof InvitationRequest + */ + flow?: string | null; +} + +/** + * Check if a given object implements the InvitationRequest interface. + */ +export function instanceOfInvitationRequest(value: object): value is InvitationRequest { + if (!("name" in value) || value["name"] === undefined) return false; + return true; +} + +export function InvitationRequestFromJSON(json: any): InvitationRequest { + return InvitationRequestFromJSONTyped(json, false); +} + +export function InvitationRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): InvitationRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + expires: json["expires"] == null ? undefined : new Date(json["expires"]), + fixedData: json["fixed_data"] == null ? undefined : json["fixed_data"], + singleUse: json["single_use"] == null ? undefined : json["single_use"], + flow: json["flow"] == null ? undefined : json["flow"], + }; +} + +export function InvitationRequestToJSON(json: any): InvitationRequest { + return InvitationRequestToJSONTyped(json, false); +} + +export function InvitationRequestToJSONTyped( + value?: InvitationRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + expires: value["expires"] == null ? value["expires"] : value["expires"].toISOString(), + fixed_data: value["fixedData"], + single_use: value["singleUse"], + flow: value["flow"], + }; +} diff --git a/packages/client-ts/src/models/InvitationSendEmailRequest.ts b/packages/client-ts/src/models/InvitationSendEmailRequest.ts new file mode 100644 index 0000000000..4aace89174 --- /dev/null +++ b/packages/client-ts/src/models/InvitationSendEmailRequest.ts @@ -0,0 +1,94 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Serializer for sending invitation emails + * @export + * @interface InvitationSendEmailRequest + */ +export interface InvitationSendEmailRequest { + /** + * + * @type {Array} + * @memberof InvitationSendEmailRequest + */ + emailAddresses: Array; + /** + * + * @type {Array} + * @memberof InvitationSendEmailRequest + */ + ccAddresses?: Array; + /** + * + * @type {Array} + * @memberof InvitationSendEmailRequest + */ + bccAddresses?: Array; + /** + * + * @type {string} + * @memberof InvitationSendEmailRequest + */ + template?: string; +} + +/** + * Check if a given object implements the InvitationSendEmailRequest interface. + */ +export function instanceOfInvitationSendEmailRequest( + value: object, +): value is InvitationSendEmailRequest { + if (!("emailAddresses" in value) || value["emailAddresses"] === undefined) return false; + return true; +} + +export function InvitationSendEmailRequestFromJSON(json: any): InvitationSendEmailRequest { + return InvitationSendEmailRequestFromJSONTyped(json, false); +} + +export function InvitationSendEmailRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): InvitationSendEmailRequest { + if (json == null) { + return json; + } + return { + emailAddresses: json["email_addresses"], + ccAddresses: json["cc_addresses"] == null ? undefined : json["cc_addresses"], + bccAddresses: json["bcc_addresses"] == null ? undefined : json["bcc_addresses"], + template: json["template"] == null ? undefined : json["template"], + }; +} + +export function InvitationSendEmailRequestToJSON(json: any): InvitationSendEmailRequest { + return InvitationSendEmailRequestToJSONTyped(json, false); +} + +export function InvitationSendEmailRequestToJSONTyped( + value?: InvitationSendEmailRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + email_addresses: value["emailAddresses"], + cc_addresses: value["ccAddresses"], + bcc_addresses: value["bccAddresses"], + template: value["template"], + }; +} diff --git a/packages/client-ts/src/models/InvitationStage.ts b/packages/client-ts/src/models/InvitationStage.ts new file mode 100644 index 0000000000..0eee2ac879 --- /dev/null +++ b/packages/client-ts/src/models/InvitationStage.ts @@ -0,0 +1,133 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { FlowSet } from "./FlowSet"; +import { FlowSetFromJSON } from "./FlowSet"; + +/** + * InvitationStage Serializer + * @export + * @interface InvitationStage + */ +export interface InvitationStage { + /** + * + * @type {string} + * @memberof InvitationStage + */ + readonly pk: string; + /** + * + * @type {string} + * @memberof InvitationStage + */ + name: string; + /** + * Get object type so that we know how to edit the object + * @type {string} + * @memberof InvitationStage + */ + readonly component: string; + /** + * Return object's verbose_name + * @type {string} + * @memberof InvitationStage + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof InvitationStage + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof InvitationStage + */ + readonly metaModelName: string; + /** + * + * @type {Array} + * @memberof InvitationStage + */ + readonly flowSet: Array; + /** + * If this flag is set, this Stage will jump to the next Stage when no Invitation is given. By default this Stage will cancel the Flow when no invitation is given. + * @type {boolean} + * @memberof InvitationStage + */ + continueFlowWithoutInvitation?: boolean; +} + +/** + * Check if a given object implements the InvitationStage interface. + */ +export function instanceOfInvitationStage(value: object): value is InvitationStage { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + if (!("flowSet" in value) || value["flowSet"] === undefined) return false; + return true; +} + +export function InvitationStageFromJSON(json: any): InvitationStage { + return InvitationStageFromJSONTyped(json, false); +} + +export function InvitationStageFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): InvitationStage { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + component: json["component"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + flowSet: (json["flow_set"] as Array).map(FlowSetFromJSON), + continueFlowWithoutInvitation: + json["continue_flow_without_invitation"] == null + ? undefined + : json["continue_flow_without_invitation"], + }; +} + +export function InvitationStageToJSON(json: any): InvitationStage { + return InvitationStageToJSONTyped(json, false); +} + +export function InvitationStageToJSONTyped( + value?: Omit< + InvitationStage, + "pk" | "component" | "verbose_name" | "verbose_name_plural" | "meta_model_name" | "flow_set" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + continue_flow_without_invitation: value["continueFlowWithoutInvitation"], + }; +} diff --git a/packages/client-ts/src/models/InvitationStageRequest.ts b/packages/client-ts/src/models/InvitationStageRequest.ts new file mode 100644 index 0000000000..449c47b2e8 --- /dev/null +++ b/packages/client-ts/src/models/InvitationStageRequest.ts @@ -0,0 +1,79 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * InvitationStage Serializer + * @export + * @interface InvitationStageRequest + */ +export interface InvitationStageRequest { + /** + * + * @type {string} + * @memberof InvitationStageRequest + */ + name: string; + /** + * If this flag is set, this Stage will jump to the next Stage when no Invitation is given. By default this Stage will cancel the Flow when no invitation is given. + * @type {boolean} + * @memberof InvitationStageRequest + */ + continueFlowWithoutInvitation?: boolean; +} + +/** + * Check if a given object implements the InvitationStageRequest interface. + */ +export function instanceOfInvitationStageRequest(value: object): value is InvitationStageRequest { + if (!("name" in value) || value["name"] === undefined) return false; + return true; +} + +export function InvitationStageRequestFromJSON(json: any): InvitationStageRequest { + return InvitationStageRequestFromJSONTyped(json, false); +} + +export function InvitationStageRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): InvitationStageRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + continueFlowWithoutInvitation: + json["continue_flow_without_invitation"] == null + ? undefined + : json["continue_flow_without_invitation"], + }; +} + +export function InvitationStageRequestToJSON(json: any): InvitationStageRequest { + return InvitationStageRequestToJSONTyped(json, false); +} + +export function InvitationStageRequestToJSONTyped( + value?: InvitationStageRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + continue_flow_without_invitation: value["continueFlowWithoutInvitation"], + }; +} diff --git a/packages/client-ts/src/models/IssuerModeEnum.ts b/packages/client-ts/src/models/IssuerModeEnum.ts new file mode 100644 index 0000000000..db39da8c41 --- /dev/null +++ b/packages/client-ts/src/models/IssuerModeEnum.ts @@ -0,0 +1,57 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const IssuerModeEnum = { + Global: "global", + PerProvider: "per_provider", + UnknownDefaultOpenApi: "11184809", +} as const; +export type IssuerModeEnum = (typeof IssuerModeEnum)[keyof typeof IssuerModeEnum]; + +export function instanceOfIssuerModeEnum(value: any): boolean { + for (const key in IssuerModeEnum) { + if (Object.prototype.hasOwnProperty.call(IssuerModeEnum, key)) { + if (IssuerModeEnum[key as keyof typeof IssuerModeEnum] === value) { + return true; + } + } + } + return false; +} + +export function IssuerModeEnumFromJSON(json: any): IssuerModeEnum { + return IssuerModeEnumFromJSONTyped(json, false); +} + +export function IssuerModeEnumFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): IssuerModeEnum { + return json as IssuerModeEnum; +} + +export function IssuerModeEnumToJSON(value?: IssuerModeEnum | null): any { + return value as any; +} + +export function IssuerModeEnumToJSONTyped( + value: any, + ignoreDiscriminator: boolean, +): IssuerModeEnum { + return value as IssuerModeEnum; +} diff --git a/packages/client-ts/src/models/KadminTypeEnum.ts b/packages/client-ts/src/models/KadminTypeEnum.ts new file mode 100644 index 0000000000..bcc43dbd62 --- /dev/null +++ b/packages/client-ts/src/models/KadminTypeEnum.ts @@ -0,0 +1,57 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const KadminTypeEnum = { + Mit: "MIT", + Heimdal: "Heimdal", + UnknownDefaultOpenApi: "11184809", +} as const; +export type KadminTypeEnum = (typeof KadminTypeEnum)[keyof typeof KadminTypeEnum]; + +export function instanceOfKadminTypeEnum(value: any): boolean { + for (const key in KadminTypeEnum) { + if (Object.prototype.hasOwnProperty.call(KadminTypeEnum, key)) { + if (KadminTypeEnum[key as keyof typeof KadminTypeEnum] === value) { + return true; + } + } + } + return false; +} + +export function KadminTypeEnumFromJSON(json: any): KadminTypeEnum { + return KadminTypeEnumFromJSONTyped(json, false); +} + +export function KadminTypeEnumFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): KadminTypeEnum { + return json as KadminTypeEnum; +} + +export function KadminTypeEnumToJSON(value?: KadminTypeEnum | null): any { + return value as any; +} + +export function KadminTypeEnumToJSONTyped( + value: any, + ignoreDiscriminator: boolean, +): KadminTypeEnum { + return value as KadminTypeEnum; +} diff --git a/packages/client-ts/src/models/KerberosSource.ts b/packages/client-ts/src/models/KerberosSource.ts new file mode 100644 index 0000000000..54ca1522a1 --- /dev/null +++ b/packages/client-ts/src/models/KerberosSource.ts @@ -0,0 +1,380 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { GroupMatchingModeEnum } from "./GroupMatchingModeEnum"; +import { + GroupMatchingModeEnumFromJSON, + GroupMatchingModeEnumToJSON, +} from "./GroupMatchingModeEnum"; +import type { KadminTypeEnum } from "./KadminTypeEnum"; +import { KadminTypeEnumFromJSON, KadminTypeEnumToJSON } from "./KadminTypeEnum"; +import type { PolicyEngineMode } from "./PolicyEngineMode"; +import { PolicyEngineModeFromJSON, PolicyEngineModeToJSON } from "./PolicyEngineMode"; +import type { SyncOutgoingTriggerModeEnum } from "./SyncOutgoingTriggerModeEnum"; +import { + SyncOutgoingTriggerModeEnumFromJSON, + SyncOutgoingTriggerModeEnumToJSON, +} from "./SyncOutgoingTriggerModeEnum"; +import type { ThemedUrls } from "./ThemedUrls"; +import { ThemedUrlsFromJSON } from "./ThemedUrls"; +import type { UserMatchingModeEnum } from "./UserMatchingModeEnum"; +import { UserMatchingModeEnumFromJSON, UserMatchingModeEnumToJSON } from "./UserMatchingModeEnum"; + +/** + * Kerberos Source Serializer + * @export + * @interface KerberosSource + */ +export interface KerberosSource { + /** + * + * @type {string} + * @memberof KerberosSource + */ + readonly pk: string; + /** + * Source's display Name. + * @type {string} + * @memberof KerberosSource + */ + name: string; + /** + * Internal source name, used in URLs. + * @type {string} + * @memberof KerberosSource + */ + slug: string; + /** + * + * @type {boolean} + * @memberof KerberosSource + */ + enabled?: boolean; + /** + * When enabled, this source will be displayed as a prominent button on the login page, instead of a small icon. + * @type {boolean} + * @memberof KerberosSource + */ + promoted?: boolean; + /** + * Flow to use when authenticating existing users. + * @type {string} + * @memberof KerberosSource + */ + authenticationFlow?: string | null; + /** + * Flow to use when enrolling new users. + * @type {string} + * @memberof KerberosSource + */ + enrollmentFlow?: string | null; + /** + * + * @type {Array} + * @memberof KerberosSource + */ + userPropertyMappings?: Array; + /** + * + * @type {Array} + * @memberof KerberosSource + */ + groupPropertyMappings?: Array; + /** + * Get object component so that we know how to edit the object + * @type {string} + * @memberof KerberosSource + */ + readonly component: string; + /** + * Return object's verbose_name + * @type {string} + * @memberof KerberosSource + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof KerberosSource + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof KerberosSource + */ + readonly metaModelName: string; + /** + * + * @type {PolicyEngineMode} + * @memberof KerberosSource + */ + policyEngineMode?: PolicyEngineMode; + /** + * How the source determines if an existing user should be authenticated or a new user enrolled. + * @type {UserMatchingModeEnum} + * @memberof KerberosSource + */ + userMatchingMode?: UserMatchingModeEnum; + /** + * Objects that are managed by authentik. These objects are created and updated automatically. This flag only indicates that an object can be overwritten by migrations. You can still modify the objects via the API, but expect changes to be overwritten in a later update. + * @type {string} + * @memberof KerberosSource + */ + readonly managed: string | null; + /** + * + * @type {string} + * @memberof KerberosSource + */ + userPathTemplate?: string; + /** + * + * @type {string} + * @memberof KerberosSource + */ + icon?: string; + /** + * + * @type {string} + * @memberof KerberosSource + */ + readonly iconUrl: string; + /** + * + * @type {ThemedUrls} + * @memberof KerberosSource + */ + readonly iconThemedUrls: ThemedUrls | null; + /** + * How the source determines if an existing group should be used or a new group created. + * @type {GroupMatchingModeEnum} + * @memberof KerberosSource + */ + groupMatchingMode?: GroupMatchingModeEnum; + /** + * Kerberos realm + * @type {string} + * @memberof KerberosSource + */ + realm: string; + /** + * Custom krb5.conf to use. Uses the system one by default + * @type {string} + * @memberof KerberosSource + */ + krb5Conf?: string; + /** + * KAdmin server type + * @type {KadminTypeEnum} + * @memberof KerberosSource + */ + kadminType?: KadminTypeEnum; + /** + * Sync users from Kerberos into authentik + * @type {boolean} + * @memberof KerberosSource + */ + syncUsers?: boolean; + /** + * When a user changes their password, sync it back to Kerberos + * @type {boolean} + * @memberof KerberosSource + */ + syncUsersPassword?: boolean; + /** + * Principal to authenticate to kadmin for sync. + * @type {string} + * @memberof KerberosSource + */ + syncPrincipal?: string; + /** + * Credentials cache to authenticate to kadmin for sync. Must be in the form TYPE:residual + * @type {string} + * @memberof KerberosSource + */ + syncCcache?: string; + /** + * Get cached source connectivity + * @type {{ [key: string]: string; }} + * @memberof KerberosSource + */ + readonly connectivity: { [key: string]: string } | null; + /** + * Force the use of a specific server name for SPNEGO. Must be in the form HTTP@hostname + * @type {string} + * @memberof KerberosSource + */ + spnegoServerName?: string; + /** + * Credential cache to use for SPNEGO in form type:residual + * @type {string} + * @memberof KerberosSource + */ + spnegoCcache?: string; + /** + * If enabled, the authentik-stored password will be updated upon login with the Kerberos password backend + * @type {boolean} + * @memberof KerberosSource + */ + passwordLoginUpdateInternalPassword?: boolean; + /** + * When to trigger sync for outgoing providers + * @type {SyncOutgoingTriggerModeEnum} + * @memberof KerberosSource + */ + syncOutgoingTriggerMode?: SyncOutgoingTriggerModeEnum; +} + +/** + * Check if a given object implements the KerberosSource interface. + */ +export function instanceOfKerberosSource(value: object): value is KerberosSource { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("slug" in value) || value["slug"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + if (!("managed" in value) || value["managed"] === undefined) return false; + if (!("iconUrl" in value) || value["iconUrl"] === undefined) return false; + if (!("iconThemedUrls" in value) || value["iconThemedUrls"] === undefined) return false; + if (!("realm" in value) || value["realm"] === undefined) return false; + if (!("connectivity" in value) || value["connectivity"] === undefined) return false; + return true; +} + +export function KerberosSourceFromJSON(json: any): KerberosSource { + return KerberosSourceFromJSONTyped(json, false); +} + +export function KerberosSourceFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): KerberosSource { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + slug: json["slug"], + enabled: json["enabled"] == null ? undefined : json["enabled"], + promoted: json["promoted"] == null ? undefined : json["promoted"], + authenticationFlow: + json["authentication_flow"] == null ? undefined : json["authentication_flow"], + enrollmentFlow: json["enrollment_flow"] == null ? undefined : json["enrollment_flow"], + userPropertyMappings: + json["user_property_mappings"] == null ? undefined : json["user_property_mappings"], + groupPropertyMappings: + json["group_property_mappings"] == null ? undefined : json["group_property_mappings"], + component: json["component"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + policyEngineMode: + json["policy_engine_mode"] == null + ? undefined + : PolicyEngineModeFromJSON(json["policy_engine_mode"]), + userMatchingMode: + json["user_matching_mode"] == null + ? undefined + : UserMatchingModeEnumFromJSON(json["user_matching_mode"]), + managed: json["managed"], + userPathTemplate: + json["user_path_template"] == null ? undefined : json["user_path_template"], + icon: json["icon"] == null ? undefined : json["icon"], + iconUrl: json["icon_url"], + iconThemedUrls: ThemedUrlsFromJSON(json["icon_themed_urls"]), + groupMatchingMode: + json["group_matching_mode"] == null + ? undefined + : GroupMatchingModeEnumFromJSON(json["group_matching_mode"]), + realm: json["realm"], + krb5Conf: json["krb5_conf"] == null ? undefined : json["krb5_conf"], + kadminType: + json["kadmin_type"] == null ? undefined : KadminTypeEnumFromJSON(json["kadmin_type"]), + syncUsers: json["sync_users"] == null ? undefined : json["sync_users"], + syncUsersPassword: + json["sync_users_password"] == null ? undefined : json["sync_users_password"], + syncPrincipal: json["sync_principal"] == null ? undefined : json["sync_principal"], + syncCcache: json["sync_ccache"] == null ? undefined : json["sync_ccache"], + connectivity: json["connectivity"], + spnegoServerName: + json["spnego_server_name"] == null ? undefined : json["spnego_server_name"], + spnegoCcache: json["spnego_ccache"] == null ? undefined : json["spnego_ccache"], + passwordLoginUpdateInternalPassword: + json["password_login_update_internal_password"] == null + ? undefined + : json["password_login_update_internal_password"], + syncOutgoingTriggerMode: + json["sync_outgoing_trigger_mode"] == null + ? undefined + : SyncOutgoingTriggerModeEnumFromJSON(json["sync_outgoing_trigger_mode"]), + }; +} + +export function KerberosSourceToJSON(json: any): KerberosSource { + return KerberosSourceToJSONTyped(json, false); +} + +export function KerberosSourceToJSONTyped( + value?: Omit< + KerberosSource, + | "pk" + | "component" + | "verbose_name" + | "verbose_name_plural" + | "meta_model_name" + | "managed" + | "icon_url" + | "icon_themed_urls" + | "connectivity" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + slug: value["slug"], + enabled: value["enabled"], + promoted: value["promoted"], + authentication_flow: value["authenticationFlow"], + enrollment_flow: value["enrollmentFlow"], + user_property_mappings: value["userPropertyMappings"], + group_property_mappings: value["groupPropertyMappings"], + policy_engine_mode: PolicyEngineModeToJSON(value["policyEngineMode"]), + user_matching_mode: UserMatchingModeEnumToJSON(value["userMatchingMode"]), + user_path_template: value["userPathTemplate"], + icon: value["icon"], + group_matching_mode: GroupMatchingModeEnumToJSON(value["groupMatchingMode"]), + realm: value["realm"], + krb5_conf: value["krb5Conf"], + kadmin_type: KadminTypeEnumToJSON(value["kadminType"]), + sync_users: value["syncUsers"], + sync_users_password: value["syncUsersPassword"], + sync_principal: value["syncPrincipal"], + sync_ccache: value["syncCcache"], + spnego_server_name: value["spnegoServerName"], + spnego_ccache: value["spnegoCcache"], + password_login_update_internal_password: value["passwordLoginUpdateInternalPassword"], + sync_outgoing_trigger_mode: SyncOutgoingTriggerModeEnumToJSON( + value["syncOutgoingTriggerMode"], + ), + }; +} diff --git a/packages/client-ts/src/models/KerberosSourcePropertyMapping.ts b/packages/client-ts/src/models/KerberosSourcePropertyMapping.ts new file mode 100644 index 0000000000..2ab7c29777 --- /dev/null +++ b/packages/client-ts/src/models/KerberosSourcePropertyMapping.ts @@ -0,0 +1,130 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Kerberos PropertyMapping Serializer + * @export + * @interface KerberosSourcePropertyMapping + */ +export interface KerberosSourcePropertyMapping { + /** + * + * @type {string} + * @memberof KerberosSourcePropertyMapping + */ + readonly pk: string; + /** + * Objects that are managed by authentik. These objects are created and updated automatically. This flag only indicates that an object can be overwritten by migrations. You can still modify the objects via the API, but expect changes to be overwritten in a later update. + * @type {string} + * @memberof KerberosSourcePropertyMapping + */ + managed?: string | null; + /** + * + * @type {string} + * @memberof KerberosSourcePropertyMapping + */ + name: string; + /** + * + * @type {string} + * @memberof KerberosSourcePropertyMapping + */ + expression: string; + /** + * Get object's component so that we know how to edit the object + * @type {string} + * @memberof KerberosSourcePropertyMapping + */ + readonly component: string; + /** + * Return object's verbose_name + * @type {string} + * @memberof KerberosSourcePropertyMapping + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof KerberosSourcePropertyMapping + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof KerberosSourcePropertyMapping + */ + readonly metaModelName: string; +} + +/** + * Check if a given object implements the KerberosSourcePropertyMapping interface. + */ +export function instanceOfKerberosSourcePropertyMapping( + value: object, +): value is KerberosSourcePropertyMapping { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("expression" in value) || value["expression"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + return true; +} + +export function KerberosSourcePropertyMappingFromJSON(json: any): KerberosSourcePropertyMapping { + return KerberosSourcePropertyMappingFromJSONTyped(json, false); +} + +export function KerberosSourcePropertyMappingFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): KerberosSourcePropertyMapping { + if (json == null) { + return json; + } + return { + pk: json["pk"], + managed: json["managed"] == null ? undefined : json["managed"], + name: json["name"], + expression: json["expression"], + component: json["component"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + }; +} + +export function KerberosSourcePropertyMappingToJSON(json: any): KerberosSourcePropertyMapping { + return KerberosSourcePropertyMappingToJSONTyped(json, false); +} + +export function KerberosSourcePropertyMappingToJSONTyped( + value?: Omit< + KerberosSourcePropertyMapping, + "pk" | "component" | "verbose_name" | "verbose_name_plural" | "meta_model_name" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + managed: value["managed"], + name: value["name"], + expression: value["expression"], + }; +} diff --git a/packages/client-ts/src/models/KerberosSourcePropertyMappingRequest.ts b/packages/client-ts/src/models/KerberosSourcePropertyMappingRequest.ts new file mode 100644 index 0000000000..720a7a92dd --- /dev/null +++ b/packages/client-ts/src/models/KerberosSourcePropertyMappingRequest.ts @@ -0,0 +1,91 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Kerberos PropertyMapping Serializer + * @export + * @interface KerberosSourcePropertyMappingRequest + */ +export interface KerberosSourcePropertyMappingRequest { + /** + * Objects that are managed by authentik. These objects are created and updated automatically. This flag only indicates that an object can be overwritten by migrations. You can still modify the objects via the API, but expect changes to be overwritten in a later update. + * @type {string} + * @memberof KerberosSourcePropertyMappingRequest + */ + managed?: string | null; + /** + * + * @type {string} + * @memberof KerberosSourcePropertyMappingRequest + */ + name: string; + /** + * + * @type {string} + * @memberof KerberosSourcePropertyMappingRequest + */ + expression: string; +} + +/** + * Check if a given object implements the KerberosSourcePropertyMappingRequest interface. + */ +export function instanceOfKerberosSourcePropertyMappingRequest( + value: object, +): value is KerberosSourcePropertyMappingRequest { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("expression" in value) || value["expression"] === undefined) return false; + return true; +} + +export function KerberosSourcePropertyMappingRequestFromJSON( + json: any, +): KerberosSourcePropertyMappingRequest { + return KerberosSourcePropertyMappingRequestFromJSONTyped(json, false); +} + +export function KerberosSourcePropertyMappingRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): KerberosSourcePropertyMappingRequest { + if (json == null) { + return json; + } + return { + managed: json["managed"] == null ? undefined : json["managed"], + name: json["name"], + expression: json["expression"], + }; +} + +export function KerberosSourcePropertyMappingRequestToJSON( + json: any, +): KerberosSourcePropertyMappingRequest { + return KerberosSourcePropertyMappingRequestToJSONTyped(json, false); +} + +export function KerberosSourcePropertyMappingRequestToJSONTyped( + value?: KerberosSourcePropertyMappingRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + managed: value["managed"], + name: value["name"], + expression: value["expression"], + }; +} diff --git a/packages/client-ts/src/models/KerberosSourceRequest.ts b/packages/client-ts/src/models/KerberosSourceRequest.ts new file mode 100644 index 0000000000..cee1494fd7 --- /dev/null +++ b/packages/client-ts/src/models/KerberosSourceRequest.ts @@ -0,0 +1,319 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { GroupMatchingModeEnum } from "./GroupMatchingModeEnum"; +import { + GroupMatchingModeEnumFromJSON, + GroupMatchingModeEnumToJSON, +} from "./GroupMatchingModeEnum"; +import type { KadminTypeEnum } from "./KadminTypeEnum"; +import { KadminTypeEnumFromJSON, KadminTypeEnumToJSON } from "./KadminTypeEnum"; +import type { PolicyEngineMode } from "./PolicyEngineMode"; +import { PolicyEngineModeFromJSON, PolicyEngineModeToJSON } from "./PolicyEngineMode"; +import type { SyncOutgoingTriggerModeEnum } from "./SyncOutgoingTriggerModeEnum"; +import { + SyncOutgoingTriggerModeEnumFromJSON, + SyncOutgoingTriggerModeEnumToJSON, +} from "./SyncOutgoingTriggerModeEnum"; +import type { UserMatchingModeEnum } from "./UserMatchingModeEnum"; +import { UserMatchingModeEnumFromJSON, UserMatchingModeEnumToJSON } from "./UserMatchingModeEnum"; + +/** + * Kerberos Source Serializer + * @export + * @interface KerberosSourceRequest + */ +export interface KerberosSourceRequest { + /** + * Source's display Name. + * @type {string} + * @memberof KerberosSourceRequest + */ + name: string; + /** + * Internal source name, used in URLs. + * @type {string} + * @memberof KerberosSourceRequest + */ + slug: string; + /** + * + * @type {boolean} + * @memberof KerberosSourceRequest + */ + enabled?: boolean; + /** + * When enabled, this source will be displayed as a prominent button on the login page, instead of a small icon. + * @type {boolean} + * @memberof KerberosSourceRequest + */ + promoted?: boolean; + /** + * Flow to use when authenticating existing users. + * @type {string} + * @memberof KerberosSourceRequest + */ + authenticationFlow?: string | null; + /** + * Flow to use when enrolling new users. + * @type {string} + * @memberof KerberosSourceRequest + */ + enrollmentFlow?: string | null; + /** + * + * @type {Array} + * @memberof KerberosSourceRequest + */ + userPropertyMappings?: Array; + /** + * + * @type {Array} + * @memberof KerberosSourceRequest + */ + groupPropertyMappings?: Array; + /** + * + * @type {PolicyEngineMode} + * @memberof KerberosSourceRequest + */ + policyEngineMode?: PolicyEngineMode; + /** + * How the source determines if an existing user should be authenticated or a new user enrolled. + * @type {UserMatchingModeEnum} + * @memberof KerberosSourceRequest + */ + userMatchingMode?: UserMatchingModeEnum; + /** + * + * @type {string} + * @memberof KerberosSourceRequest + */ + userPathTemplate?: string; + /** + * + * @type {string} + * @memberof KerberosSourceRequest + */ + icon?: string; + /** + * How the source determines if an existing group should be used or a new group created. + * @type {GroupMatchingModeEnum} + * @memberof KerberosSourceRequest + */ + groupMatchingMode?: GroupMatchingModeEnum; + /** + * Kerberos realm + * @type {string} + * @memberof KerberosSourceRequest + */ + realm: string; + /** + * Custom krb5.conf to use. Uses the system one by default + * @type {string} + * @memberof KerberosSourceRequest + */ + krb5Conf?: string; + /** + * KAdmin server type + * @type {KadminTypeEnum} + * @memberof KerberosSourceRequest + */ + kadminType?: KadminTypeEnum; + /** + * Sync users from Kerberos into authentik + * @type {boolean} + * @memberof KerberosSourceRequest + */ + syncUsers?: boolean; + /** + * When a user changes their password, sync it back to Kerberos + * @type {boolean} + * @memberof KerberosSourceRequest + */ + syncUsersPassword?: boolean; + /** + * Principal to authenticate to kadmin for sync. + * @type {string} + * @memberof KerberosSourceRequest + */ + syncPrincipal?: string; + /** + * Password to authenticate to kadmin for sync + * @type {string} + * @memberof KerberosSourceRequest + */ + syncPassword?: string; + /** + * Keytab to authenticate to kadmin for sync. Must be base64-encoded or in the form TYPE:residual + * @type {string} + * @memberof KerberosSourceRequest + */ + syncKeytab?: string; + /** + * Credentials cache to authenticate to kadmin for sync. Must be in the form TYPE:residual + * @type {string} + * @memberof KerberosSourceRequest + */ + syncCcache?: string; + /** + * Force the use of a specific server name for SPNEGO. Must be in the form HTTP@hostname + * @type {string} + * @memberof KerberosSourceRequest + */ + spnegoServerName?: string; + /** + * SPNEGO keytab base64-encoded or path to keytab in the form FILE:path + * @type {string} + * @memberof KerberosSourceRequest + */ + spnegoKeytab?: string; + /** + * Credential cache to use for SPNEGO in form type:residual + * @type {string} + * @memberof KerberosSourceRequest + */ + spnegoCcache?: string; + /** + * If enabled, the authentik-stored password will be updated upon login with the Kerberos password backend + * @type {boolean} + * @memberof KerberosSourceRequest + */ + passwordLoginUpdateInternalPassword?: boolean; + /** + * When to trigger sync for outgoing providers + * @type {SyncOutgoingTriggerModeEnum} + * @memberof KerberosSourceRequest + */ + syncOutgoingTriggerMode?: SyncOutgoingTriggerModeEnum; +} + +/** + * Check if a given object implements the KerberosSourceRequest interface. + */ +export function instanceOfKerberosSourceRequest(value: object): value is KerberosSourceRequest { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("slug" in value) || value["slug"] === undefined) return false; + if (!("realm" in value) || value["realm"] === undefined) return false; + return true; +} + +export function KerberosSourceRequestFromJSON(json: any): KerberosSourceRequest { + return KerberosSourceRequestFromJSONTyped(json, false); +} + +export function KerberosSourceRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): KerberosSourceRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + slug: json["slug"], + enabled: json["enabled"] == null ? undefined : json["enabled"], + promoted: json["promoted"] == null ? undefined : json["promoted"], + authenticationFlow: + json["authentication_flow"] == null ? undefined : json["authentication_flow"], + enrollmentFlow: json["enrollment_flow"] == null ? undefined : json["enrollment_flow"], + userPropertyMappings: + json["user_property_mappings"] == null ? undefined : json["user_property_mappings"], + groupPropertyMappings: + json["group_property_mappings"] == null ? undefined : json["group_property_mappings"], + policyEngineMode: + json["policy_engine_mode"] == null + ? undefined + : PolicyEngineModeFromJSON(json["policy_engine_mode"]), + userMatchingMode: + json["user_matching_mode"] == null + ? undefined + : UserMatchingModeEnumFromJSON(json["user_matching_mode"]), + userPathTemplate: + json["user_path_template"] == null ? undefined : json["user_path_template"], + icon: json["icon"] == null ? undefined : json["icon"], + groupMatchingMode: + json["group_matching_mode"] == null + ? undefined + : GroupMatchingModeEnumFromJSON(json["group_matching_mode"]), + realm: json["realm"], + krb5Conf: json["krb5_conf"] == null ? undefined : json["krb5_conf"], + kadminType: + json["kadmin_type"] == null ? undefined : KadminTypeEnumFromJSON(json["kadmin_type"]), + syncUsers: json["sync_users"] == null ? undefined : json["sync_users"], + syncUsersPassword: + json["sync_users_password"] == null ? undefined : json["sync_users_password"], + syncPrincipal: json["sync_principal"] == null ? undefined : json["sync_principal"], + syncPassword: json["sync_password"] == null ? undefined : json["sync_password"], + syncKeytab: json["sync_keytab"] == null ? undefined : json["sync_keytab"], + syncCcache: json["sync_ccache"] == null ? undefined : json["sync_ccache"], + spnegoServerName: + json["spnego_server_name"] == null ? undefined : json["spnego_server_name"], + spnegoKeytab: json["spnego_keytab"] == null ? undefined : json["spnego_keytab"], + spnegoCcache: json["spnego_ccache"] == null ? undefined : json["spnego_ccache"], + passwordLoginUpdateInternalPassword: + json["password_login_update_internal_password"] == null + ? undefined + : json["password_login_update_internal_password"], + syncOutgoingTriggerMode: + json["sync_outgoing_trigger_mode"] == null + ? undefined + : SyncOutgoingTriggerModeEnumFromJSON(json["sync_outgoing_trigger_mode"]), + }; +} + +export function KerberosSourceRequestToJSON(json: any): KerberosSourceRequest { + return KerberosSourceRequestToJSONTyped(json, false); +} + +export function KerberosSourceRequestToJSONTyped( + value?: KerberosSourceRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + slug: value["slug"], + enabled: value["enabled"], + promoted: value["promoted"], + authentication_flow: value["authenticationFlow"], + enrollment_flow: value["enrollmentFlow"], + user_property_mappings: value["userPropertyMappings"], + group_property_mappings: value["groupPropertyMappings"], + policy_engine_mode: PolicyEngineModeToJSON(value["policyEngineMode"]), + user_matching_mode: UserMatchingModeEnumToJSON(value["userMatchingMode"]), + user_path_template: value["userPathTemplate"], + icon: value["icon"], + group_matching_mode: GroupMatchingModeEnumToJSON(value["groupMatchingMode"]), + realm: value["realm"], + krb5_conf: value["krb5Conf"], + kadmin_type: KadminTypeEnumToJSON(value["kadminType"]), + sync_users: value["syncUsers"], + sync_users_password: value["syncUsersPassword"], + sync_principal: value["syncPrincipal"], + sync_password: value["syncPassword"], + sync_keytab: value["syncKeytab"], + sync_ccache: value["syncCcache"], + spnego_server_name: value["spnegoServerName"], + spnego_keytab: value["spnegoKeytab"], + spnego_ccache: value["spnegoCcache"], + password_login_update_internal_password: value["passwordLoginUpdateInternalPassword"], + sync_outgoing_trigger_mode: SyncOutgoingTriggerModeEnumToJSON( + value["syncOutgoingTriggerMode"], + ), + }; +} diff --git a/packages/client-ts/src/models/KeyTypeEnum.ts b/packages/client-ts/src/models/KeyTypeEnum.ts new file mode 100644 index 0000000000..768f2b7cfa --- /dev/null +++ b/packages/client-ts/src/models/KeyTypeEnum.ts @@ -0,0 +1,54 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const KeyTypeEnum = { + Dsa: "dsa", + Ec: "ec", + Ed25519: "ed25519", + Ed448: "ed448", + Rsa: "rsa", + UnknownDefaultOpenApi: "11184809", +} as const; +export type KeyTypeEnum = (typeof KeyTypeEnum)[keyof typeof KeyTypeEnum]; + +export function instanceOfKeyTypeEnum(value: any): boolean { + for (const key in KeyTypeEnum) { + if (Object.prototype.hasOwnProperty.call(KeyTypeEnum, key)) { + if (KeyTypeEnum[key as keyof typeof KeyTypeEnum] === value) { + return true; + } + } + } + return false; +} + +export function KeyTypeEnumFromJSON(json: any): KeyTypeEnum { + return KeyTypeEnumFromJSONTyped(json, false); +} + +export function KeyTypeEnumFromJSONTyped(json: any, ignoreDiscriminator: boolean): KeyTypeEnum { + return json as KeyTypeEnum; +} + +export function KeyTypeEnumToJSON(value?: KeyTypeEnum | null): any { + return value as any; +} + +export function KeyTypeEnumToJSONTyped(value: any, ignoreDiscriminator: boolean): KeyTypeEnum { + return value as KeyTypeEnum; +} diff --git a/packages/client-ts/src/models/KubernetesServiceConnection.ts b/packages/client-ts/src/models/KubernetesServiceConnection.ts new file mode 100644 index 0000000000..ad324b6fe3 --- /dev/null +++ b/packages/client-ts/src/models/KubernetesServiceConnection.ts @@ -0,0 +1,137 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * KubernetesServiceConnection Serializer + * @export + * @interface KubernetesServiceConnection + */ +export interface KubernetesServiceConnection { + /** + * + * @type {string} + * @memberof KubernetesServiceConnection + */ + readonly pk: string; + /** + * + * @type {string} + * @memberof KubernetesServiceConnection + */ + name: string; + /** + * If enabled, use the local connection. Required Docker socket/Kubernetes Integration + * @type {boolean} + * @memberof KubernetesServiceConnection + */ + local?: boolean; + /** + * + * @type {string} + * @memberof KubernetesServiceConnection + */ + readonly component: string; + /** + * Return object's verbose_name + * @type {string} + * @memberof KubernetesServiceConnection + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof KubernetesServiceConnection + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof KubernetesServiceConnection + */ + readonly metaModelName: string; + /** + * Paste your kubeconfig here. authentik will automatically use the currently selected context. + * @type {{ [key: string]: any; }} + * @memberof KubernetesServiceConnection + */ + kubeconfig?: { [key: string]: any }; + /** + * Verify SSL Certificates of the Kubernetes API endpoint + * @type {boolean} + * @memberof KubernetesServiceConnection + */ + verifySsl?: boolean; +} + +/** + * Check if a given object implements the KubernetesServiceConnection interface. + */ +export function instanceOfKubernetesServiceConnection( + value: object, +): value is KubernetesServiceConnection { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + return true; +} + +export function KubernetesServiceConnectionFromJSON(json: any): KubernetesServiceConnection { + return KubernetesServiceConnectionFromJSONTyped(json, false); +} + +export function KubernetesServiceConnectionFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): KubernetesServiceConnection { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + local: json["local"] == null ? undefined : json["local"], + component: json["component"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + kubeconfig: json["kubeconfig"] == null ? undefined : json["kubeconfig"], + verifySsl: json["verify_ssl"] == null ? undefined : json["verify_ssl"], + }; +} + +export function KubernetesServiceConnectionToJSON(json: any): KubernetesServiceConnection { + return KubernetesServiceConnectionToJSONTyped(json, false); +} + +export function KubernetesServiceConnectionToJSONTyped( + value?: Omit< + KubernetesServiceConnection, + "pk" | "component" | "verbose_name" | "verbose_name_plural" | "meta_model_name" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + local: value["local"], + kubeconfig: value["kubeconfig"], + verify_ssl: value["verifySsl"], + }; +} diff --git a/packages/client-ts/src/models/KubernetesServiceConnectionRequest.ts b/packages/client-ts/src/models/KubernetesServiceConnectionRequest.ts new file mode 100644 index 0000000000..a7090763b0 --- /dev/null +++ b/packages/client-ts/src/models/KubernetesServiceConnectionRequest.ts @@ -0,0 +1,98 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * KubernetesServiceConnection Serializer + * @export + * @interface KubernetesServiceConnectionRequest + */ +export interface KubernetesServiceConnectionRequest { + /** + * + * @type {string} + * @memberof KubernetesServiceConnectionRequest + */ + name: string; + /** + * If enabled, use the local connection. Required Docker socket/Kubernetes Integration + * @type {boolean} + * @memberof KubernetesServiceConnectionRequest + */ + local?: boolean; + /** + * Paste your kubeconfig here. authentik will automatically use the currently selected context. + * @type {{ [key: string]: any; }} + * @memberof KubernetesServiceConnectionRequest + */ + kubeconfig?: { [key: string]: any }; + /** + * Verify SSL Certificates of the Kubernetes API endpoint + * @type {boolean} + * @memberof KubernetesServiceConnectionRequest + */ + verifySsl?: boolean; +} + +/** + * Check if a given object implements the KubernetesServiceConnectionRequest interface. + */ +export function instanceOfKubernetesServiceConnectionRequest( + value: object, +): value is KubernetesServiceConnectionRequest { + if (!("name" in value) || value["name"] === undefined) return false; + return true; +} + +export function KubernetesServiceConnectionRequestFromJSON( + json: any, +): KubernetesServiceConnectionRequest { + return KubernetesServiceConnectionRequestFromJSONTyped(json, false); +} + +export function KubernetesServiceConnectionRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): KubernetesServiceConnectionRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + local: json["local"] == null ? undefined : json["local"], + kubeconfig: json["kubeconfig"] == null ? undefined : json["kubeconfig"], + verifySsl: json["verify_ssl"] == null ? undefined : json["verify_ssl"], + }; +} + +export function KubernetesServiceConnectionRequestToJSON( + json: any, +): KubernetesServiceConnectionRequest { + return KubernetesServiceConnectionRequestToJSONTyped(json, false); +} + +export function KubernetesServiceConnectionRequestToJSONTyped( + value?: KubernetesServiceConnectionRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + local: value["local"], + kubeconfig: value["kubeconfig"], + verify_ssl: value["verifySsl"], + }; +} diff --git a/packages/client-ts/src/models/LDAPAPIAccessMode.ts b/packages/client-ts/src/models/LDAPAPIAccessMode.ts new file mode 100644 index 0000000000..ee4d8e19d5 --- /dev/null +++ b/packages/client-ts/src/models/LDAPAPIAccessMode.ts @@ -0,0 +1,57 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const LDAPAPIAccessMode = { + Direct: "direct", + Cached: "cached", + UnknownDefaultOpenApi: "11184809", +} as const; +export type LDAPAPIAccessMode = (typeof LDAPAPIAccessMode)[keyof typeof LDAPAPIAccessMode]; + +export function instanceOfLDAPAPIAccessMode(value: any): boolean { + for (const key in LDAPAPIAccessMode) { + if (Object.prototype.hasOwnProperty.call(LDAPAPIAccessMode, key)) { + if (LDAPAPIAccessMode[key as keyof typeof LDAPAPIAccessMode] === value) { + return true; + } + } + } + return false; +} + +export function LDAPAPIAccessModeFromJSON(json: any): LDAPAPIAccessMode { + return LDAPAPIAccessModeFromJSONTyped(json, false); +} + +export function LDAPAPIAccessModeFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): LDAPAPIAccessMode { + return json as LDAPAPIAccessMode; +} + +export function LDAPAPIAccessModeToJSON(value?: LDAPAPIAccessMode | null): any { + return value as any; +} + +export function LDAPAPIAccessModeToJSONTyped( + value: any, + ignoreDiscriminator: boolean, +): LDAPAPIAccessMode { + return value as LDAPAPIAccessMode; +} diff --git a/packages/client-ts/src/models/LDAPCheckAccess.ts b/packages/client-ts/src/models/LDAPCheckAccess.ts new file mode 100644 index 0000000000..e4d5cd508c --- /dev/null +++ b/packages/client-ts/src/models/LDAPCheckAccess.ts @@ -0,0 +1,80 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { PolicyTestResult } from "./PolicyTestResult"; +import { PolicyTestResultFromJSON, PolicyTestResultToJSON } from "./PolicyTestResult"; + +/** + * Base serializer class which doesn't implement create/update methods + * @export + * @interface LDAPCheckAccess + */ +export interface LDAPCheckAccess { + /** + * + * @type {boolean} + * @memberof LDAPCheckAccess + */ + hasSearchPermission?: boolean; + /** + * + * @type {PolicyTestResult} + * @memberof LDAPCheckAccess + */ + access: PolicyTestResult; +} + +/** + * Check if a given object implements the LDAPCheckAccess interface. + */ +export function instanceOfLDAPCheckAccess(value: object): value is LDAPCheckAccess { + if (!("access" in value) || value["access"] === undefined) return false; + return true; +} + +export function LDAPCheckAccessFromJSON(json: any): LDAPCheckAccess { + return LDAPCheckAccessFromJSONTyped(json, false); +} + +export function LDAPCheckAccessFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): LDAPCheckAccess { + if (json == null) { + return json; + } + return { + hasSearchPermission: + json["has_search_permission"] == null ? undefined : json["has_search_permission"], + access: PolicyTestResultFromJSON(json["access"]), + }; +} + +export function LDAPCheckAccessToJSON(json: any): LDAPCheckAccess { + return LDAPCheckAccessToJSONTyped(json, false); +} + +export function LDAPCheckAccessToJSONTyped( + value?: LDAPCheckAccess | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + has_search_permission: value["hasSearchPermission"], + access: PolicyTestResultToJSON(value["access"]), + }; +} diff --git a/packages/client-ts/src/models/LDAPDebug.ts b/packages/client-ts/src/models/LDAPDebug.ts new file mode 100644 index 0000000000..3f8f0a71eb --- /dev/null +++ b/packages/client-ts/src/models/LDAPDebug.ts @@ -0,0 +1,79 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + * @interface LDAPDebug + */ +export interface LDAPDebug { + /** + * + * @type {Array<{ [key: string]: any; }>} + * @memberof LDAPDebug + */ + readonly user: Array<{ [key: string]: any }>; + /** + * + * @type {Array<{ [key: string]: any; }>} + * @memberof LDAPDebug + */ + readonly group: Array<{ [key: string]: any }>; + /** + * + * @type {Array<{ [key: string]: any; }>} + * @memberof LDAPDebug + */ + readonly membership: Array<{ [key: string]: any }>; +} + +/** + * Check if a given object implements the LDAPDebug interface. + */ +export function instanceOfLDAPDebug(value: object): value is LDAPDebug { + if (!("user" in value) || value["user"] === undefined) return false; + if (!("group" in value) || value["group"] === undefined) return false; + if (!("membership" in value) || value["membership"] === undefined) return false; + return true; +} + +export function LDAPDebugFromJSON(json: any): LDAPDebug { + return LDAPDebugFromJSONTyped(json, false); +} + +export function LDAPDebugFromJSONTyped(json: any, ignoreDiscriminator: boolean): LDAPDebug { + if (json == null) { + return json; + } + return { + user: json["user"], + group: json["group"], + membership: json["membership"], + }; +} + +export function LDAPDebugToJSON(json: any): LDAPDebug { + return LDAPDebugToJSONTyped(json, false); +} + +export function LDAPDebugToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return {}; +} diff --git a/packages/client-ts/src/models/LDAPOutpostConfig.ts b/packages/client-ts/src/models/LDAPOutpostConfig.ts new file mode 100644 index 0000000000..0ca156ee92 --- /dev/null +++ b/packages/client-ts/src/models/LDAPOutpostConfig.ts @@ -0,0 +1,172 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { LDAPAPIAccessMode } from "./LDAPAPIAccessMode"; +import { LDAPAPIAccessModeFromJSON, LDAPAPIAccessModeToJSON } from "./LDAPAPIAccessMode"; + +/** + * LDAPProvider Serializer + * @export + * @interface LDAPOutpostConfig + */ +export interface LDAPOutpostConfig { + /** + * + * @type {number} + * @memberof LDAPOutpostConfig + */ + readonly pk: number; + /** + * + * @type {string} + * @memberof LDAPOutpostConfig + */ + name: string; + /** + * DN under which objects are accessible. + * @type {string} + * @memberof LDAPOutpostConfig + */ + baseDn?: string; + /** + * + * @type {string} + * @memberof LDAPOutpostConfig + */ + bindFlowSlug: string; + /** + * Get slug for unbind flow, defaulting to brand's default flow. + * @type {string} + * @memberof LDAPOutpostConfig + */ + readonly unbindFlowSlug: string | null; + /** + * Prioritise backchannel slug over direct application slug + * @type {string} + * @memberof LDAPOutpostConfig + */ + readonly applicationSlug: string; + /** + * + * @type {string} + * @memberof LDAPOutpostConfig + */ + certificate?: string | null; + /** + * + * @type {string} + * @memberof LDAPOutpostConfig + */ + tlsServerName?: string; + /** + * The start for uidNumbers, this number is added to the user.pk to make sure that the numbers aren't too low for POSIX users. Default is 2000 to ensure that we don't collide with local users uidNumber + * @type {number} + * @memberof LDAPOutpostConfig + */ + uidStartNumber?: number; + /** + * The start for gidNumbers, this number is added to a number generated from the group.pk to make sure that the numbers aren't too low for POSIX groups. Default is 4000 to ensure that we don't collide with local groups or users primary groups gidNumber + * @type {number} + * @memberof LDAPOutpostConfig + */ + gidStartNumber?: number; + /** + * + * @type {LDAPAPIAccessMode} + * @memberof LDAPOutpostConfig + */ + searchMode?: LDAPAPIAccessMode; + /** + * + * @type {LDAPAPIAccessMode} + * @memberof LDAPOutpostConfig + */ + bindMode?: LDAPAPIAccessMode; + /** + * When enabled, code-based multi-factor authentication can be used by appending a semicolon and the TOTP code to the password. This should only be enabled if all users that will bind to this provider have a TOTP device configured, as otherwise a password may incorrectly be rejected if it contains a semicolon. + * @type {boolean} + * @memberof LDAPOutpostConfig + */ + mfaSupport?: boolean; +} + +/** + * Check if a given object implements the LDAPOutpostConfig interface. + */ +export function instanceOfLDAPOutpostConfig(value: object): value is LDAPOutpostConfig { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("bindFlowSlug" in value) || value["bindFlowSlug"] === undefined) return false; + if (!("unbindFlowSlug" in value) || value["unbindFlowSlug"] === undefined) return false; + if (!("applicationSlug" in value) || value["applicationSlug"] === undefined) return false; + return true; +} + +export function LDAPOutpostConfigFromJSON(json: any): LDAPOutpostConfig { + return LDAPOutpostConfigFromJSONTyped(json, false); +} + +export function LDAPOutpostConfigFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): LDAPOutpostConfig { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + baseDn: json["base_dn"] == null ? undefined : json["base_dn"], + bindFlowSlug: json["bind_flow_slug"], + unbindFlowSlug: json["unbind_flow_slug"], + applicationSlug: json["application_slug"], + certificate: json["certificate"] == null ? undefined : json["certificate"], + tlsServerName: json["tls_server_name"] == null ? undefined : json["tls_server_name"], + uidStartNumber: json["uid_start_number"] == null ? undefined : json["uid_start_number"], + gidStartNumber: json["gid_start_number"] == null ? undefined : json["gid_start_number"], + searchMode: + json["search_mode"] == null + ? undefined + : LDAPAPIAccessModeFromJSON(json["search_mode"]), + bindMode: + json["bind_mode"] == null ? undefined : LDAPAPIAccessModeFromJSON(json["bind_mode"]), + mfaSupport: json["mfa_support"] == null ? undefined : json["mfa_support"], + }; +} + +export function LDAPOutpostConfigToJSON(json: any): LDAPOutpostConfig { + return LDAPOutpostConfigToJSONTyped(json, false); +} + +export function LDAPOutpostConfigToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + base_dn: value["baseDn"], + bind_flow_slug: value["bindFlowSlug"], + certificate: value["certificate"], + tls_server_name: value["tlsServerName"], + uid_start_number: value["uidStartNumber"], + gid_start_number: value["gidStartNumber"], + search_mode: LDAPAPIAccessModeToJSON(value["searchMode"]), + bind_mode: LDAPAPIAccessModeToJSON(value["bindMode"]), + mfa_support: value["mfaSupport"], + }; +} diff --git a/packages/client-ts/src/models/LDAPProvider.ts b/packages/client-ts/src/models/LDAPProvider.ts new file mode 100644 index 0000000000..ec9dff338c --- /dev/null +++ b/packages/client-ts/src/models/LDAPProvider.ts @@ -0,0 +1,273 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { LDAPAPIAccessMode } from "./LDAPAPIAccessMode"; +import { LDAPAPIAccessModeFromJSON, LDAPAPIAccessModeToJSON } from "./LDAPAPIAccessMode"; + +/** + * LDAPProvider Serializer + * @export + * @interface LDAPProvider + */ +export interface LDAPProvider { + /** + * + * @type {number} + * @memberof LDAPProvider + */ + readonly pk: number; + /** + * + * @type {string} + * @memberof LDAPProvider + */ + name: string; + /** + * Flow used for authentication when the associated application is accessed by an un-authenticated user. + * @type {string} + * @memberof LDAPProvider + */ + authenticationFlow?: string | null; + /** + * Flow used when authorizing this provider. + * @type {string} + * @memberof LDAPProvider + */ + authorizationFlow: string; + /** + * Flow used ending the session from a provider. + * @type {string} + * @memberof LDAPProvider + */ + invalidationFlow: string; + /** + * + * @type {Array} + * @memberof LDAPProvider + */ + propertyMappings?: Array; + /** + * Get object component so that we know how to edit the object + * @type {string} + * @memberof LDAPProvider + */ + readonly component: string; + /** + * Internal application name, used in URLs. + * @type {string} + * @memberof LDAPProvider + */ + readonly assignedApplicationSlug: string | null; + /** + * Application's display Name. + * @type {string} + * @memberof LDAPProvider + */ + readonly assignedApplicationName: string | null; + /** + * Internal application name, used in URLs. + * @type {string} + * @memberof LDAPProvider + */ + readonly assignedBackchannelApplicationSlug: string | null; + /** + * Application's display Name. + * @type {string} + * @memberof LDAPProvider + */ + readonly assignedBackchannelApplicationName: string | null; + /** + * Return object's verbose_name + * @type {string} + * @memberof LDAPProvider + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof LDAPProvider + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof LDAPProvider + */ + readonly metaModelName: string; + /** + * DN under which objects are accessible. + * @type {string} + * @memberof LDAPProvider + */ + baseDn?: string; + /** + * + * @type {string} + * @memberof LDAPProvider + */ + certificate?: string | null; + /** + * + * @type {string} + * @memberof LDAPProvider + */ + tlsServerName?: string; + /** + * The start for uidNumbers, this number is added to the user.pk to make sure that the numbers aren't too low for POSIX users. Default is 2000 to ensure that we don't collide with local users uidNumber + * @type {number} + * @memberof LDAPProvider + */ + uidStartNumber?: number; + /** + * The start for gidNumbers, this number is added to a number generated from the group.pk to make sure that the numbers aren't too low for POSIX groups. Default is 4000 to ensure that we don't collide with local groups or users primary groups gidNumber + * @type {number} + * @memberof LDAPProvider + */ + gidStartNumber?: number; + /** + * + * @type {Array} + * @memberof LDAPProvider + */ + readonly outpostSet: Array; + /** + * + * @type {LDAPAPIAccessMode} + * @memberof LDAPProvider + */ + searchMode?: LDAPAPIAccessMode; + /** + * + * @type {LDAPAPIAccessMode} + * @memberof LDAPProvider + */ + bindMode?: LDAPAPIAccessMode; + /** + * When enabled, code-based multi-factor authentication can be used by appending a semicolon and the TOTP code to the password. This should only be enabled if all users that will bind to this provider have a TOTP device configured, as otherwise a password may incorrectly be rejected if it contains a semicolon. + * @type {boolean} + * @memberof LDAPProvider + */ + mfaSupport?: boolean; +} + +/** + * Check if a given object implements the LDAPProvider interface. + */ +export function instanceOfLDAPProvider(value: object): value is LDAPProvider { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("authorizationFlow" in value) || value["authorizationFlow"] === undefined) return false; + if (!("invalidationFlow" in value) || value["invalidationFlow"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if (!("assignedApplicationSlug" in value) || value["assignedApplicationSlug"] === undefined) + return false; + if (!("assignedApplicationName" in value) || value["assignedApplicationName"] === undefined) + return false; + if ( + !("assignedBackchannelApplicationSlug" in value) || + value["assignedBackchannelApplicationSlug"] === undefined + ) + return false; + if ( + !("assignedBackchannelApplicationName" in value) || + value["assignedBackchannelApplicationName"] === undefined + ) + return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + if (!("outpostSet" in value) || value["outpostSet"] === undefined) return false; + return true; +} + +export function LDAPProviderFromJSON(json: any): LDAPProvider { + return LDAPProviderFromJSONTyped(json, false); +} + +export function LDAPProviderFromJSONTyped(json: any, ignoreDiscriminator: boolean): LDAPProvider { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + authenticationFlow: + json["authentication_flow"] == null ? undefined : json["authentication_flow"], + authorizationFlow: json["authorization_flow"], + invalidationFlow: json["invalidation_flow"], + propertyMappings: json["property_mappings"] == null ? undefined : json["property_mappings"], + component: json["component"], + assignedApplicationSlug: json["assigned_application_slug"], + assignedApplicationName: json["assigned_application_name"], + assignedBackchannelApplicationSlug: json["assigned_backchannel_application_slug"], + assignedBackchannelApplicationName: json["assigned_backchannel_application_name"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + baseDn: json["base_dn"] == null ? undefined : json["base_dn"], + certificate: json["certificate"] == null ? undefined : json["certificate"], + tlsServerName: json["tls_server_name"] == null ? undefined : json["tls_server_name"], + uidStartNumber: json["uid_start_number"] == null ? undefined : json["uid_start_number"], + gidStartNumber: json["gid_start_number"] == null ? undefined : json["gid_start_number"], + outpostSet: json["outpost_set"], + searchMode: + json["search_mode"] == null + ? undefined + : LDAPAPIAccessModeFromJSON(json["search_mode"]), + bindMode: + json["bind_mode"] == null ? undefined : LDAPAPIAccessModeFromJSON(json["bind_mode"]), + mfaSupport: json["mfa_support"] == null ? undefined : json["mfa_support"], + }; +} + +export function LDAPProviderToJSON(json: any): LDAPProvider { + return LDAPProviderToJSONTyped(json, false); +} + +export function LDAPProviderToJSONTyped( + value?: Omit< + LDAPProvider, + | "pk" + | "component" + | "assigned_application_slug" + | "assigned_application_name" + | "assigned_backchannel_application_slug" + | "assigned_backchannel_application_name" + | "verbose_name" + | "verbose_name_plural" + | "meta_model_name" + | "outpost_set" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + authentication_flow: value["authenticationFlow"], + authorization_flow: value["authorizationFlow"], + invalidation_flow: value["invalidationFlow"], + property_mappings: value["propertyMappings"], + base_dn: value["baseDn"], + certificate: value["certificate"], + tls_server_name: value["tlsServerName"], + uid_start_number: value["uidStartNumber"], + gid_start_number: value["gidStartNumber"], + search_mode: LDAPAPIAccessModeToJSON(value["searchMode"]), + bind_mode: LDAPAPIAccessModeToJSON(value["bindMode"]), + mfa_support: value["mfaSupport"], + }; +} diff --git a/packages/client-ts/src/models/LDAPProviderRequest.ts b/packages/client-ts/src/models/LDAPProviderRequest.ts new file mode 100644 index 0000000000..8a8362602e --- /dev/null +++ b/packages/client-ts/src/models/LDAPProviderRequest.ts @@ -0,0 +1,174 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { LDAPAPIAccessMode } from "./LDAPAPIAccessMode"; +import { LDAPAPIAccessModeFromJSON, LDAPAPIAccessModeToJSON } from "./LDAPAPIAccessMode"; + +/** + * LDAPProvider Serializer + * @export + * @interface LDAPProviderRequest + */ +export interface LDAPProviderRequest { + /** + * + * @type {string} + * @memberof LDAPProviderRequest + */ + name: string; + /** + * Flow used for authentication when the associated application is accessed by an un-authenticated user. + * @type {string} + * @memberof LDAPProviderRequest + */ + authenticationFlow?: string | null; + /** + * Flow used when authorizing this provider. + * @type {string} + * @memberof LDAPProviderRequest + */ + authorizationFlow: string; + /** + * Flow used ending the session from a provider. + * @type {string} + * @memberof LDAPProviderRequest + */ + invalidationFlow: string; + /** + * + * @type {Array} + * @memberof LDAPProviderRequest + */ + propertyMappings?: Array; + /** + * DN under which objects are accessible. + * @type {string} + * @memberof LDAPProviderRequest + */ + baseDn?: string; + /** + * + * @type {string} + * @memberof LDAPProviderRequest + */ + certificate?: string | null; + /** + * + * @type {string} + * @memberof LDAPProviderRequest + */ + tlsServerName?: string; + /** + * The start for uidNumbers, this number is added to the user.pk to make sure that the numbers aren't too low for POSIX users. Default is 2000 to ensure that we don't collide with local users uidNumber + * @type {number} + * @memberof LDAPProviderRequest + */ + uidStartNumber?: number; + /** + * The start for gidNumbers, this number is added to a number generated from the group.pk to make sure that the numbers aren't too low for POSIX groups. Default is 4000 to ensure that we don't collide with local groups or users primary groups gidNumber + * @type {number} + * @memberof LDAPProviderRequest + */ + gidStartNumber?: number; + /** + * + * @type {LDAPAPIAccessMode} + * @memberof LDAPProviderRequest + */ + searchMode?: LDAPAPIAccessMode; + /** + * + * @type {LDAPAPIAccessMode} + * @memberof LDAPProviderRequest + */ + bindMode?: LDAPAPIAccessMode; + /** + * When enabled, code-based multi-factor authentication can be used by appending a semicolon and the TOTP code to the password. This should only be enabled if all users that will bind to this provider have a TOTP device configured, as otherwise a password may incorrectly be rejected if it contains a semicolon. + * @type {boolean} + * @memberof LDAPProviderRequest + */ + mfaSupport?: boolean; +} + +/** + * Check if a given object implements the LDAPProviderRequest interface. + */ +export function instanceOfLDAPProviderRequest(value: object): value is LDAPProviderRequest { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("authorizationFlow" in value) || value["authorizationFlow"] === undefined) return false; + if (!("invalidationFlow" in value) || value["invalidationFlow"] === undefined) return false; + return true; +} + +export function LDAPProviderRequestFromJSON(json: any): LDAPProviderRequest { + return LDAPProviderRequestFromJSONTyped(json, false); +} + +export function LDAPProviderRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): LDAPProviderRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + authenticationFlow: + json["authentication_flow"] == null ? undefined : json["authentication_flow"], + authorizationFlow: json["authorization_flow"], + invalidationFlow: json["invalidation_flow"], + propertyMappings: json["property_mappings"] == null ? undefined : json["property_mappings"], + baseDn: json["base_dn"] == null ? undefined : json["base_dn"], + certificate: json["certificate"] == null ? undefined : json["certificate"], + tlsServerName: json["tls_server_name"] == null ? undefined : json["tls_server_name"], + uidStartNumber: json["uid_start_number"] == null ? undefined : json["uid_start_number"], + gidStartNumber: json["gid_start_number"] == null ? undefined : json["gid_start_number"], + searchMode: + json["search_mode"] == null + ? undefined + : LDAPAPIAccessModeFromJSON(json["search_mode"]), + bindMode: + json["bind_mode"] == null ? undefined : LDAPAPIAccessModeFromJSON(json["bind_mode"]), + mfaSupport: json["mfa_support"] == null ? undefined : json["mfa_support"], + }; +} + +export function LDAPProviderRequestToJSON(json: any): LDAPProviderRequest { + return LDAPProviderRequestToJSONTyped(json, false); +} + +export function LDAPProviderRequestToJSONTyped( + value?: LDAPProviderRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + authentication_flow: value["authenticationFlow"], + authorization_flow: value["authorizationFlow"], + invalidation_flow: value["invalidationFlow"], + property_mappings: value["propertyMappings"], + base_dn: value["baseDn"], + certificate: value["certificate"], + tls_server_name: value["tlsServerName"], + uid_start_number: value["uidStartNumber"], + gid_start_number: value["gidStartNumber"], + search_mode: LDAPAPIAccessModeToJSON(value["searchMode"]), + bind_mode: LDAPAPIAccessModeToJSON(value["bindMode"]), + mfa_support: value["mfaSupport"], + }; +} diff --git a/packages/client-ts/src/models/LDAPSource.ts b/packages/client-ts/src/models/LDAPSource.ts new file mode 100644 index 0000000000..be884ba6cd --- /dev/null +++ b/packages/client-ts/src/models/LDAPSource.ts @@ -0,0 +1,458 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { PolicyEngineMode } from "./PolicyEngineMode"; +import { PolicyEngineModeFromJSON, PolicyEngineModeToJSON } from "./PolicyEngineMode"; +import type { SyncOutgoingTriggerModeEnum } from "./SyncOutgoingTriggerModeEnum"; +import { + SyncOutgoingTriggerModeEnumFromJSON, + SyncOutgoingTriggerModeEnumToJSON, +} from "./SyncOutgoingTriggerModeEnum"; +import type { ThemedUrls } from "./ThemedUrls"; +import { ThemedUrlsFromJSON } from "./ThemedUrls"; +import type { UserMatchingModeEnum } from "./UserMatchingModeEnum"; +import { UserMatchingModeEnumFromJSON, UserMatchingModeEnumToJSON } from "./UserMatchingModeEnum"; + +/** + * LDAP Source Serializer + * @export + * @interface LDAPSource + */ +export interface LDAPSource { + /** + * + * @type {string} + * @memberof LDAPSource + */ + readonly pk: string; + /** + * Source's display Name. + * @type {string} + * @memberof LDAPSource + */ + name: string; + /** + * Internal source name, used in URLs. + * @type {string} + * @memberof LDAPSource + */ + slug: string; + /** + * + * @type {boolean} + * @memberof LDAPSource + */ + enabled?: boolean; + /** + * When enabled, this source will be displayed as a prominent button on the login page, instead of a small icon. + * @type {boolean} + * @memberof LDAPSource + */ + promoted?: boolean; + /** + * Flow to use when authenticating existing users. + * @type {string} + * @memberof LDAPSource + */ + authenticationFlow?: string | null; + /** + * Flow to use when enrolling new users. + * @type {string} + * @memberof LDAPSource + */ + enrollmentFlow?: string | null; + /** + * + * @type {Array} + * @memberof LDAPSource + */ + userPropertyMappings?: Array; + /** + * + * @type {Array} + * @memberof LDAPSource + */ + groupPropertyMappings?: Array; + /** + * Get object component so that we know how to edit the object + * @type {string} + * @memberof LDAPSource + */ + readonly component: string; + /** + * Return object's verbose_name + * @type {string} + * @memberof LDAPSource + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof LDAPSource + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof LDAPSource + */ + readonly metaModelName: string; + /** + * + * @type {PolicyEngineMode} + * @memberof LDAPSource + */ + policyEngineMode?: PolicyEngineMode; + /** + * How the source determines if an existing user should be authenticated or a new user enrolled. + * @type {UserMatchingModeEnum} + * @memberof LDAPSource + */ + userMatchingMode?: UserMatchingModeEnum; + /** + * Objects that are managed by authentik. These objects are created and updated automatically. This flag only indicates that an object can be overwritten by migrations. You can still modify the objects via the API, but expect changes to be overwritten in a later update. + * @type {string} + * @memberof LDAPSource + */ + readonly managed: string | null; + /** + * + * @type {string} + * @memberof LDAPSource + */ + userPathTemplate?: string; + /** + * + * @type {string} + * @memberof LDAPSource + */ + icon?: string; + /** + * + * @type {string} + * @memberof LDAPSource + */ + readonly iconUrl: string; + /** + * + * @type {ThemedUrls} + * @memberof LDAPSource + */ + readonly iconThemedUrls: ThemedUrls | null; + /** + * + * @type {string} + * @memberof LDAPSource + */ + serverUri: string; + /** + * Optionally verify the LDAP Server's Certificate against the CA Chain in this keypair. + * @type {string} + * @memberof LDAPSource + */ + peerCertificate?: string | null; + /** + * Client certificate to authenticate against the LDAP Server's Certificate. + * @type {string} + * @memberof LDAPSource + */ + clientCertificate?: string | null; + /** + * + * @type {string} + * @memberof LDAPSource + */ + bindCn?: string; + /** + * + * @type {boolean} + * @memberof LDAPSource + */ + startTls?: boolean; + /** + * + * @type {boolean} + * @memberof LDAPSource + */ + sni?: boolean; + /** + * + * @type {string} + * @memberof LDAPSource + */ + baseDn: string; + /** + * Prepended to Base DN for User-queries. + * @type {string} + * @memberof LDAPSource + */ + additionalUserDn?: string; + /** + * Prepended to Base DN for Group-queries. + * @type {string} + * @memberof LDAPSource + */ + additionalGroupDn?: string; + /** + * Consider Objects matching this filter to be Users. + * @type {string} + * @memberof LDAPSource + */ + userObjectFilter?: string; + /** + * Consider Objects matching this filter to be Groups. + * @type {string} + * @memberof LDAPSource + */ + groupObjectFilter?: string; + /** + * Field which contains members of a group. + * @type {string} + * @memberof LDAPSource + */ + groupMembershipField?: string; + /** + * Attribute which matches the value of `group_membership_field`. + * @type {string} + * @memberof LDAPSource + */ + userMembershipAttribute?: string; + /** + * Field which contains a unique Identifier. + * @type {string} + * @memberof LDAPSource + */ + objectUniquenessField?: string; + /** + * Update internal authentik password when login succeeds with LDAP + * @type {boolean} + * @memberof LDAPSource + */ + passwordLoginUpdateInternalPassword?: boolean; + /** + * + * @type {boolean} + * @memberof LDAPSource + */ + syncUsers?: boolean; + /** + * When a user changes their password, sync it back to LDAP. This can only be enabled on a single LDAP source. + * @type {boolean} + * @memberof LDAPSource + */ + syncUsersPassword?: boolean; + /** + * + * @type {boolean} + * @memberof LDAPSource + */ + syncGroups?: boolean; + /** + * + * @type {string} + * @memberof LDAPSource + */ + syncParentGroup?: string | null; + /** + * Get cached source connectivity + * @type {{ [key: string]: { [key: string]: string; }; }} + * @memberof LDAPSource + */ + readonly connectivity: { [key: string]: { [key: string]: string } } | null; + /** + * Lookup group membership based on a user attribute instead of a group attribute. This allows nested group resolution on systems like FreeIPA and Active Directory + * @type {boolean} + * @memberof LDAPSource + */ + lookupGroupsFromUser?: boolean; + /** + * Delete authentik users and groups which were previously supplied by this source, but are now missing from it. + * @type {boolean} + * @memberof LDAPSource + */ + deleteNotFoundObjects?: boolean; + /** + * When to trigger sync for outgoing providers + * @type {SyncOutgoingTriggerModeEnum} + * @memberof LDAPSource + */ + syncOutgoingTriggerMode?: SyncOutgoingTriggerModeEnum; +} + +/** + * Check if a given object implements the LDAPSource interface. + */ +export function instanceOfLDAPSource(value: object): value is LDAPSource { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("slug" in value) || value["slug"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + if (!("managed" in value) || value["managed"] === undefined) return false; + if (!("iconUrl" in value) || value["iconUrl"] === undefined) return false; + if (!("iconThemedUrls" in value) || value["iconThemedUrls"] === undefined) return false; + if (!("serverUri" in value) || value["serverUri"] === undefined) return false; + if (!("baseDn" in value) || value["baseDn"] === undefined) return false; + if (!("connectivity" in value) || value["connectivity"] === undefined) return false; + return true; +} + +export function LDAPSourceFromJSON(json: any): LDAPSource { + return LDAPSourceFromJSONTyped(json, false); +} + +export function LDAPSourceFromJSONTyped(json: any, ignoreDiscriminator: boolean): LDAPSource { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + slug: json["slug"], + enabled: json["enabled"] == null ? undefined : json["enabled"], + promoted: json["promoted"] == null ? undefined : json["promoted"], + authenticationFlow: + json["authentication_flow"] == null ? undefined : json["authentication_flow"], + enrollmentFlow: json["enrollment_flow"] == null ? undefined : json["enrollment_flow"], + userPropertyMappings: + json["user_property_mappings"] == null ? undefined : json["user_property_mappings"], + groupPropertyMappings: + json["group_property_mappings"] == null ? undefined : json["group_property_mappings"], + component: json["component"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + policyEngineMode: + json["policy_engine_mode"] == null + ? undefined + : PolicyEngineModeFromJSON(json["policy_engine_mode"]), + userMatchingMode: + json["user_matching_mode"] == null + ? undefined + : UserMatchingModeEnumFromJSON(json["user_matching_mode"]), + managed: json["managed"], + userPathTemplate: + json["user_path_template"] == null ? undefined : json["user_path_template"], + icon: json["icon"] == null ? undefined : json["icon"], + iconUrl: json["icon_url"], + iconThemedUrls: ThemedUrlsFromJSON(json["icon_themed_urls"]), + serverUri: json["server_uri"], + peerCertificate: json["peer_certificate"] == null ? undefined : json["peer_certificate"], + clientCertificate: + json["client_certificate"] == null ? undefined : json["client_certificate"], + bindCn: json["bind_cn"] == null ? undefined : json["bind_cn"], + startTls: json["start_tls"] == null ? undefined : json["start_tls"], + sni: json["sni"] == null ? undefined : json["sni"], + baseDn: json["base_dn"], + additionalUserDn: + json["additional_user_dn"] == null ? undefined : json["additional_user_dn"], + additionalGroupDn: + json["additional_group_dn"] == null ? undefined : json["additional_group_dn"], + userObjectFilter: + json["user_object_filter"] == null ? undefined : json["user_object_filter"], + groupObjectFilter: + json["group_object_filter"] == null ? undefined : json["group_object_filter"], + groupMembershipField: + json["group_membership_field"] == null ? undefined : json["group_membership_field"], + userMembershipAttribute: + json["user_membership_attribute"] == null + ? undefined + : json["user_membership_attribute"], + objectUniquenessField: + json["object_uniqueness_field"] == null ? undefined : json["object_uniqueness_field"], + passwordLoginUpdateInternalPassword: + json["password_login_update_internal_password"] == null + ? undefined + : json["password_login_update_internal_password"], + syncUsers: json["sync_users"] == null ? undefined : json["sync_users"], + syncUsersPassword: + json["sync_users_password"] == null ? undefined : json["sync_users_password"], + syncGroups: json["sync_groups"] == null ? undefined : json["sync_groups"], + syncParentGroup: json["sync_parent_group"] == null ? undefined : json["sync_parent_group"], + connectivity: json["connectivity"], + lookupGroupsFromUser: + json["lookup_groups_from_user"] == null ? undefined : json["lookup_groups_from_user"], + deleteNotFoundObjects: + json["delete_not_found_objects"] == null ? undefined : json["delete_not_found_objects"], + syncOutgoingTriggerMode: + json["sync_outgoing_trigger_mode"] == null + ? undefined + : SyncOutgoingTriggerModeEnumFromJSON(json["sync_outgoing_trigger_mode"]), + }; +} + +export function LDAPSourceToJSON(json: any): LDAPSource { + return LDAPSourceToJSONTyped(json, false); +} + +export function LDAPSourceToJSONTyped( + value?: Omit< + LDAPSource, + | "pk" + | "component" + | "verbose_name" + | "verbose_name_plural" + | "meta_model_name" + | "managed" + | "icon_url" + | "icon_themed_urls" + | "connectivity" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + slug: value["slug"], + enabled: value["enabled"], + promoted: value["promoted"], + authentication_flow: value["authenticationFlow"], + enrollment_flow: value["enrollmentFlow"], + user_property_mappings: value["userPropertyMappings"], + group_property_mappings: value["groupPropertyMappings"], + policy_engine_mode: PolicyEngineModeToJSON(value["policyEngineMode"]), + user_matching_mode: UserMatchingModeEnumToJSON(value["userMatchingMode"]), + user_path_template: value["userPathTemplate"], + icon: value["icon"], + server_uri: value["serverUri"], + peer_certificate: value["peerCertificate"], + client_certificate: value["clientCertificate"], + bind_cn: value["bindCn"], + start_tls: value["startTls"], + sni: value["sni"], + base_dn: value["baseDn"], + additional_user_dn: value["additionalUserDn"], + additional_group_dn: value["additionalGroupDn"], + user_object_filter: value["userObjectFilter"], + group_object_filter: value["groupObjectFilter"], + group_membership_field: value["groupMembershipField"], + user_membership_attribute: value["userMembershipAttribute"], + object_uniqueness_field: value["objectUniquenessField"], + password_login_update_internal_password: value["passwordLoginUpdateInternalPassword"], + sync_users: value["syncUsers"], + sync_users_password: value["syncUsersPassword"], + sync_groups: value["syncGroups"], + sync_parent_group: value["syncParentGroup"], + lookup_groups_from_user: value["lookupGroupsFromUser"], + delete_not_found_objects: value["deleteNotFoundObjects"], + sync_outgoing_trigger_mode: SyncOutgoingTriggerModeEnumToJSON( + value["syncOutgoingTriggerMode"], + ), + }; +} diff --git a/packages/client-ts/src/models/LDAPSourcePropertyMapping.ts b/packages/client-ts/src/models/LDAPSourcePropertyMapping.ts new file mode 100644 index 0000000000..0a222e96fc --- /dev/null +++ b/packages/client-ts/src/models/LDAPSourcePropertyMapping.ts @@ -0,0 +1,130 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * LDAP PropertyMapping Serializer + * @export + * @interface LDAPSourcePropertyMapping + */ +export interface LDAPSourcePropertyMapping { + /** + * + * @type {string} + * @memberof LDAPSourcePropertyMapping + */ + readonly pk: string; + /** + * Objects that are managed by authentik. These objects are created and updated automatically. This flag only indicates that an object can be overwritten by migrations. You can still modify the objects via the API, but expect changes to be overwritten in a later update. + * @type {string} + * @memberof LDAPSourcePropertyMapping + */ + managed?: string | null; + /** + * + * @type {string} + * @memberof LDAPSourcePropertyMapping + */ + name: string; + /** + * + * @type {string} + * @memberof LDAPSourcePropertyMapping + */ + expression: string; + /** + * Get object's component so that we know how to edit the object + * @type {string} + * @memberof LDAPSourcePropertyMapping + */ + readonly component: string; + /** + * Return object's verbose_name + * @type {string} + * @memberof LDAPSourcePropertyMapping + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof LDAPSourcePropertyMapping + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof LDAPSourcePropertyMapping + */ + readonly metaModelName: string; +} + +/** + * Check if a given object implements the LDAPSourcePropertyMapping interface. + */ +export function instanceOfLDAPSourcePropertyMapping( + value: object, +): value is LDAPSourcePropertyMapping { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("expression" in value) || value["expression"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + return true; +} + +export function LDAPSourcePropertyMappingFromJSON(json: any): LDAPSourcePropertyMapping { + return LDAPSourcePropertyMappingFromJSONTyped(json, false); +} + +export function LDAPSourcePropertyMappingFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): LDAPSourcePropertyMapping { + if (json == null) { + return json; + } + return { + pk: json["pk"], + managed: json["managed"] == null ? undefined : json["managed"], + name: json["name"], + expression: json["expression"], + component: json["component"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + }; +} + +export function LDAPSourcePropertyMappingToJSON(json: any): LDAPSourcePropertyMapping { + return LDAPSourcePropertyMappingToJSONTyped(json, false); +} + +export function LDAPSourcePropertyMappingToJSONTyped( + value?: Omit< + LDAPSourcePropertyMapping, + "pk" | "component" | "verbose_name" | "verbose_name_plural" | "meta_model_name" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + managed: value["managed"], + name: value["name"], + expression: value["expression"], + }; +} diff --git a/packages/client-ts/src/models/LDAPSourcePropertyMappingRequest.ts b/packages/client-ts/src/models/LDAPSourcePropertyMappingRequest.ts new file mode 100644 index 0000000000..2d06c91b38 --- /dev/null +++ b/packages/client-ts/src/models/LDAPSourcePropertyMappingRequest.ts @@ -0,0 +1,91 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * LDAP PropertyMapping Serializer + * @export + * @interface LDAPSourcePropertyMappingRequest + */ +export interface LDAPSourcePropertyMappingRequest { + /** + * Objects that are managed by authentik. These objects are created and updated automatically. This flag only indicates that an object can be overwritten by migrations. You can still modify the objects via the API, but expect changes to be overwritten in a later update. + * @type {string} + * @memberof LDAPSourcePropertyMappingRequest + */ + managed?: string | null; + /** + * + * @type {string} + * @memberof LDAPSourcePropertyMappingRequest + */ + name: string; + /** + * + * @type {string} + * @memberof LDAPSourcePropertyMappingRequest + */ + expression: string; +} + +/** + * Check if a given object implements the LDAPSourcePropertyMappingRequest interface. + */ +export function instanceOfLDAPSourcePropertyMappingRequest( + value: object, +): value is LDAPSourcePropertyMappingRequest { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("expression" in value) || value["expression"] === undefined) return false; + return true; +} + +export function LDAPSourcePropertyMappingRequestFromJSON( + json: any, +): LDAPSourcePropertyMappingRequest { + return LDAPSourcePropertyMappingRequestFromJSONTyped(json, false); +} + +export function LDAPSourcePropertyMappingRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): LDAPSourcePropertyMappingRequest { + if (json == null) { + return json; + } + return { + managed: json["managed"] == null ? undefined : json["managed"], + name: json["name"], + expression: json["expression"], + }; +} + +export function LDAPSourcePropertyMappingRequestToJSON( + json: any, +): LDAPSourcePropertyMappingRequest { + return LDAPSourcePropertyMappingRequestToJSONTyped(json, false); +} + +export function LDAPSourcePropertyMappingRequestToJSONTyped( + value?: LDAPSourcePropertyMappingRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + managed: value["managed"], + name: value["name"], + expression: value["expression"], + }; +} diff --git a/packages/client-ts/src/models/LDAPSourceRequest.ts b/packages/client-ts/src/models/LDAPSourceRequest.ts new file mode 100644 index 0000000000..1c7dff775c --- /dev/null +++ b/packages/client-ts/src/models/LDAPSourceRequest.ts @@ -0,0 +1,384 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { PolicyEngineMode } from "./PolicyEngineMode"; +import { PolicyEngineModeFromJSON, PolicyEngineModeToJSON } from "./PolicyEngineMode"; +import type { SyncOutgoingTriggerModeEnum } from "./SyncOutgoingTriggerModeEnum"; +import { + SyncOutgoingTriggerModeEnumFromJSON, + SyncOutgoingTriggerModeEnumToJSON, +} from "./SyncOutgoingTriggerModeEnum"; +import type { UserMatchingModeEnum } from "./UserMatchingModeEnum"; +import { UserMatchingModeEnumFromJSON, UserMatchingModeEnumToJSON } from "./UserMatchingModeEnum"; + +/** + * LDAP Source Serializer + * @export + * @interface LDAPSourceRequest + */ +export interface LDAPSourceRequest { + /** + * Source's display Name. + * @type {string} + * @memberof LDAPSourceRequest + */ + name: string; + /** + * Internal source name, used in URLs. + * @type {string} + * @memberof LDAPSourceRequest + */ + slug: string; + /** + * + * @type {boolean} + * @memberof LDAPSourceRequest + */ + enabled?: boolean; + /** + * When enabled, this source will be displayed as a prominent button on the login page, instead of a small icon. + * @type {boolean} + * @memberof LDAPSourceRequest + */ + promoted?: boolean; + /** + * Flow to use when authenticating existing users. + * @type {string} + * @memberof LDAPSourceRequest + */ + authenticationFlow?: string | null; + /** + * Flow to use when enrolling new users. + * @type {string} + * @memberof LDAPSourceRequest + */ + enrollmentFlow?: string | null; + /** + * + * @type {Array} + * @memberof LDAPSourceRequest + */ + userPropertyMappings?: Array; + /** + * + * @type {Array} + * @memberof LDAPSourceRequest + */ + groupPropertyMappings?: Array; + /** + * + * @type {PolicyEngineMode} + * @memberof LDAPSourceRequest + */ + policyEngineMode?: PolicyEngineMode; + /** + * How the source determines if an existing user should be authenticated or a new user enrolled. + * @type {UserMatchingModeEnum} + * @memberof LDAPSourceRequest + */ + userMatchingMode?: UserMatchingModeEnum; + /** + * + * @type {string} + * @memberof LDAPSourceRequest + */ + userPathTemplate?: string; + /** + * + * @type {string} + * @memberof LDAPSourceRequest + */ + icon?: string; + /** + * + * @type {string} + * @memberof LDAPSourceRequest + */ + serverUri: string; + /** + * Optionally verify the LDAP Server's Certificate against the CA Chain in this keypair. + * @type {string} + * @memberof LDAPSourceRequest + */ + peerCertificate?: string | null; + /** + * Client certificate to authenticate against the LDAP Server's Certificate. + * @type {string} + * @memberof LDAPSourceRequest + */ + clientCertificate?: string | null; + /** + * + * @type {string} + * @memberof LDAPSourceRequest + */ + bindCn?: string; + /** + * + * @type {string} + * @memberof LDAPSourceRequest + */ + bindPassword?: string; + /** + * + * @type {boolean} + * @memberof LDAPSourceRequest + */ + startTls?: boolean; + /** + * + * @type {boolean} + * @memberof LDAPSourceRequest + */ + sni?: boolean; + /** + * + * @type {string} + * @memberof LDAPSourceRequest + */ + baseDn: string; + /** + * Prepended to Base DN for User-queries. + * @type {string} + * @memberof LDAPSourceRequest + */ + additionalUserDn?: string; + /** + * Prepended to Base DN for Group-queries. + * @type {string} + * @memberof LDAPSourceRequest + */ + additionalGroupDn?: string; + /** + * Consider Objects matching this filter to be Users. + * @type {string} + * @memberof LDAPSourceRequest + */ + userObjectFilter?: string; + /** + * Consider Objects matching this filter to be Groups. + * @type {string} + * @memberof LDAPSourceRequest + */ + groupObjectFilter?: string; + /** + * Field which contains members of a group. + * @type {string} + * @memberof LDAPSourceRequest + */ + groupMembershipField?: string; + /** + * Attribute which matches the value of `group_membership_field`. + * @type {string} + * @memberof LDAPSourceRequest + */ + userMembershipAttribute?: string; + /** + * Field which contains a unique Identifier. + * @type {string} + * @memberof LDAPSourceRequest + */ + objectUniquenessField?: string; + /** + * Update internal authentik password when login succeeds with LDAP + * @type {boolean} + * @memberof LDAPSourceRequest + */ + passwordLoginUpdateInternalPassword?: boolean; + /** + * + * @type {boolean} + * @memberof LDAPSourceRequest + */ + syncUsers?: boolean; + /** + * When a user changes their password, sync it back to LDAP. This can only be enabled on a single LDAP source. + * @type {boolean} + * @memberof LDAPSourceRequest + */ + syncUsersPassword?: boolean; + /** + * + * @type {boolean} + * @memberof LDAPSourceRequest + */ + syncGroups?: boolean; + /** + * + * @type {string} + * @memberof LDAPSourceRequest + */ + syncParentGroup?: string | null; + /** + * Lookup group membership based on a user attribute instead of a group attribute. This allows nested group resolution on systems like FreeIPA and Active Directory + * @type {boolean} + * @memberof LDAPSourceRequest + */ + lookupGroupsFromUser?: boolean; + /** + * Delete authentik users and groups which were previously supplied by this source, but are now missing from it. + * @type {boolean} + * @memberof LDAPSourceRequest + */ + deleteNotFoundObjects?: boolean; + /** + * When to trigger sync for outgoing providers + * @type {SyncOutgoingTriggerModeEnum} + * @memberof LDAPSourceRequest + */ + syncOutgoingTriggerMode?: SyncOutgoingTriggerModeEnum; +} + +/** + * Check if a given object implements the LDAPSourceRequest interface. + */ +export function instanceOfLDAPSourceRequest(value: object): value is LDAPSourceRequest { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("slug" in value) || value["slug"] === undefined) return false; + if (!("serverUri" in value) || value["serverUri"] === undefined) return false; + if (!("baseDn" in value) || value["baseDn"] === undefined) return false; + return true; +} + +export function LDAPSourceRequestFromJSON(json: any): LDAPSourceRequest { + return LDAPSourceRequestFromJSONTyped(json, false); +} + +export function LDAPSourceRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): LDAPSourceRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + slug: json["slug"], + enabled: json["enabled"] == null ? undefined : json["enabled"], + promoted: json["promoted"] == null ? undefined : json["promoted"], + authenticationFlow: + json["authentication_flow"] == null ? undefined : json["authentication_flow"], + enrollmentFlow: json["enrollment_flow"] == null ? undefined : json["enrollment_flow"], + userPropertyMappings: + json["user_property_mappings"] == null ? undefined : json["user_property_mappings"], + groupPropertyMappings: + json["group_property_mappings"] == null ? undefined : json["group_property_mappings"], + policyEngineMode: + json["policy_engine_mode"] == null + ? undefined + : PolicyEngineModeFromJSON(json["policy_engine_mode"]), + userMatchingMode: + json["user_matching_mode"] == null + ? undefined + : UserMatchingModeEnumFromJSON(json["user_matching_mode"]), + userPathTemplate: + json["user_path_template"] == null ? undefined : json["user_path_template"], + icon: json["icon"] == null ? undefined : json["icon"], + serverUri: json["server_uri"], + peerCertificate: json["peer_certificate"] == null ? undefined : json["peer_certificate"], + clientCertificate: + json["client_certificate"] == null ? undefined : json["client_certificate"], + bindCn: json["bind_cn"] == null ? undefined : json["bind_cn"], + bindPassword: json["bind_password"] == null ? undefined : json["bind_password"], + startTls: json["start_tls"] == null ? undefined : json["start_tls"], + sni: json["sni"] == null ? undefined : json["sni"], + baseDn: json["base_dn"], + additionalUserDn: + json["additional_user_dn"] == null ? undefined : json["additional_user_dn"], + additionalGroupDn: + json["additional_group_dn"] == null ? undefined : json["additional_group_dn"], + userObjectFilter: + json["user_object_filter"] == null ? undefined : json["user_object_filter"], + groupObjectFilter: + json["group_object_filter"] == null ? undefined : json["group_object_filter"], + groupMembershipField: + json["group_membership_field"] == null ? undefined : json["group_membership_field"], + userMembershipAttribute: + json["user_membership_attribute"] == null + ? undefined + : json["user_membership_attribute"], + objectUniquenessField: + json["object_uniqueness_field"] == null ? undefined : json["object_uniqueness_field"], + passwordLoginUpdateInternalPassword: + json["password_login_update_internal_password"] == null + ? undefined + : json["password_login_update_internal_password"], + syncUsers: json["sync_users"] == null ? undefined : json["sync_users"], + syncUsersPassword: + json["sync_users_password"] == null ? undefined : json["sync_users_password"], + syncGroups: json["sync_groups"] == null ? undefined : json["sync_groups"], + syncParentGroup: json["sync_parent_group"] == null ? undefined : json["sync_parent_group"], + lookupGroupsFromUser: + json["lookup_groups_from_user"] == null ? undefined : json["lookup_groups_from_user"], + deleteNotFoundObjects: + json["delete_not_found_objects"] == null ? undefined : json["delete_not_found_objects"], + syncOutgoingTriggerMode: + json["sync_outgoing_trigger_mode"] == null + ? undefined + : SyncOutgoingTriggerModeEnumFromJSON(json["sync_outgoing_trigger_mode"]), + }; +} + +export function LDAPSourceRequestToJSON(json: any): LDAPSourceRequest { + return LDAPSourceRequestToJSONTyped(json, false); +} + +export function LDAPSourceRequestToJSONTyped( + value?: LDAPSourceRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + slug: value["slug"], + enabled: value["enabled"], + promoted: value["promoted"], + authentication_flow: value["authenticationFlow"], + enrollment_flow: value["enrollmentFlow"], + user_property_mappings: value["userPropertyMappings"], + group_property_mappings: value["groupPropertyMappings"], + policy_engine_mode: PolicyEngineModeToJSON(value["policyEngineMode"]), + user_matching_mode: UserMatchingModeEnumToJSON(value["userMatchingMode"]), + user_path_template: value["userPathTemplate"], + icon: value["icon"], + server_uri: value["serverUri"], + peer_certificate: value["peerCertificate"], + client_certificate: value["clientCertificate"], + bind_cn: value["bindCn"], + bind_password: value["bindPassword"], + start_tls: value["startTls"], + sni: value["sni"], + base_dn: value["baseDn"], + additional_user_dn: value["additionalUserDn"], + additional_group_dn: value["additionalGroupDn"], + user_object_filter: value["userObjectFilter"], + group_object_filter: value["groupObjectFilter"], + group_membership_field: value["groupMembershipField"], + user_membership_attribute: value["userMembershipAttribute"], + object_uniqueness_field: value["objectUniquenessField"], + password_login_update_internal_password: value["passwordLoginUpdateInternalPassword"], + sync_users: value["syncUsers"], + sync_users_password: value["syncUsersPassword"], + sync_groups: value["syncGroups"], + sync_parent_group: value["syncParentGroup"], + lookup_groups_from_user: value["lookupGroupsFromUser"], + delete_not_found_objects: value["deleteNotFoundObjects"], + sync_outgoing_trigger_mode: SyncOutgoingTriggerModeEnumToJSON( + value["syncOutgoingTriggerMode"], + ), + }; +} diff --git a/packages/client-ts/src/models/LangEnum.ts b/packages/client-ts/src/models/LangEnum.ts new file mode 100644 index 0000000000..574e223981 --- /dev/null +++ b/packages/client-ts/src/models/LangEnum.ts @@ -0,0 +1,148 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const LangEnum = { + Af: "af", + Ar: "ar", + ArDz: "ar-dz", + Ast: "ast", + Az: "az", + Be: "be", + Bg: "bg", + Bn: "bn", + Br: "br", + Bs: "bs", + Ca: "ca", + Ckb: "ckb", + Cs: "cs", + Cy: "cy", + Da: "da", + De: "de", + Dsb: "dsb", + El: "el", + En: "en", + EnAu: "en-au", + EnGb: "en-gb", + Eo: "eo", + Es: "es", + EsAr: "es-ar", + EsCo: "es-co", + EsMx: "es-mx", + EsNi: "es-ni", + EsVe: "es-ve", + Et: "et", + Eu: "eu", + Fa: "fa", + Fi: "fi", + Fr: "fr", + Fy: "fy", + Ga: "ga", + Gd: "gd", + Gl: "gl", + He: "he", + Hi: "hi", + Hr: "hr", + Hsb: "hsb", + Hu: "hu", + Hy: "hy", + Ia: "ia", + Id: "id", + Ig: "ig", + Io: "io", + Is: "is", + It: "it", + Ja: "ja", + Ka: "ka", + Kab: "kab", + Kk: "kk", + Km: "km", + Kn: "kn", + Ko: "ko", + Ky: "ky", + Lb: "lb", + Lt: "lt", + Lv: "lv", + Mk: "mk", + Ml: "ml", + Mn: "mn", + Mr: "mr", + Ms: "ms", + My: "my", + Nb: "nb", + Ne: "ne", + Nl: "nl", + Nn: "nn", + Os: "os", + Pa: "pa", + Pl: "pl", + Pt: "pt", + PtBr: "pt-br", + Ro: "ro", + Ru: "ru", + Sk: "sk", + Sl: "sl", + Sq: "sq", + Sr: "sr", + SrLatn: "sr-latn", + Sv: "sv", + Sw: "sw", + Ta: "ta", + Te: "te", + Tg: "tg", + Th: "th", + Tk: "tk", + Tr: "tr", + Tt: "tt", + Udm: "udm", + Ug: "ug", + Uk: "uk", + Ur: "ur", + Uz: "uz", + Vi: "vi", + ZhHans: "zh-hans", + ZhHant: "zh-hant", + UnknownDefaultOpenApi: "11184809", +} as const; +export type LangEnum = (typeof LangEnum)[keyof typeof LangEnum]; + +export function instanceOfLangEnum(value: any): boolean { + for (const key in LangEnum) { + if (Object.prototype.hasOwnProperty.call(LangEnum, key)) { + if (LangEnum[key as keyof typeof LangEnum] === value) { + return true; + } + } + } + return false; +} + +export function LangEnumFromJSON(json: any): LangEnum { + return LangEnumFromJSONTyped(json, false); +} + +export function LangEnumFromJSONTyped(json: any, ignoreDiscriminator: boolean): LangEnum { + return json as LangEnum; +} + +export function LangEnumToJSON(value?: LangEnum | null): any { + return value as any; +} + +export function LangEnumToJSONTyped(value: any, ignoreDiscriminator: boolean): LangEnum { + return value as LangEnum; +} diff --git a/packages/client-ts/src/models/LastTaskStatusEnum.ts b/packages/client-ts/src/models/LastTaskStatusEnum.ts new file mode 100644 index 0000000000..5f546a5c7b --- /dev/null +++ b/packages/client-ts/src/models/LastTaskStatusEnum.ts @@ -0,0 +1,65 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const LastTaskStatusEnum = { + Queued: "queued", + Consumed: "consumed", + Preprocess: "preprocess", + Running: "running", + Postprocess: "postprocess", + Rejected: "rejected", + Done: "done", + Info: "info", + Warning: "warning", + Error: "error", + UnknownDefaultOpenApi: "11184809", +} as const; +export type LastTaskStatusEnum = (typeof LastTaskStatusEnum)[keyof typeof LastTaskStatusEnum]; + +export function instanceOfLastTaskStatusEnum(value: any): boolean { + for (const key in LastTaskStatusEnum) { + if (Object.prototype.hasOwnProperty.call(LastTaskStatusEnum, key)) { + if (LastTaskStatusEnum[key as keyof typeof LastTaskStatusEnum] === value) { + return true; + } + } + } + return false; +} + +export function LastTaskStatusEnumFromJSON(json: any): LastTaskStatusEnum { + return LastTaskStatusEnumFromJSONTyped(json, false); +} + +export function LastTaskStatusEnumFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): LastTaskStatusEnum { + return json as LastTaskStatusEnum; +} + +export function LastTaskStatusEnumToJSON(value?: LastTaskStatusEnum | null): any { + return value as any; +} + +export function LastTaskStatusEnumToJSONTyped( + value: any, + ignoreDiscriminator: boolean, +): LastTaskStatusEnum { + return value as LastTaskStatusEnum; +} diff --git a/packages/client-ts/src/models/License.ts b/packages/client-ts/src/models/License.ts new file mode 100644 index 0000000000..9751dfea69 --- /dev/null +++ b/packages/client-ts/src/models/License.ts @@ -0,0 +1,108 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * License Serializer + * @export + * @interface License + */ +export interface License { + /** + * + * @type {string} + * @memberof License + */ + readonly licenseUuid: string; + /** + * + * @type {string} + * @memberof License + */ + readonly name: string; + /** + * + * @type {string} + * @memberof License + */ + key: string; + /** + * + * @type {Date} + * @memberof License + */ + readonly expiry: Date; + /** + * + * @type {number} + * @memberof License + */ + readonly internalUsers: number; + /** + * + * @type {number} + * @memberof License + */ + readonly externalUsers: number; +} + +/** + * Check if a given object implements the License interface. + */ +export function instanceOfLicense(value: object): value is License { + if (!("licenseUuid" in value) || value["licenseUuid"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("key" in value) || value["key"] === undefined) return false; + if (!("expiry" in value) || value["expiry"] === undefined) return false; + if (!("internalUsers" in value) || value["internalUsers"] === undefined) return false; + if (!("externalUsers" in value) || value["externalUsers"] === undefined) return false; + return true; +} + +export function LicenseFromJSON(json: any): License { + return LicenseFromJSONTyped(json, false); +} + +export function LicenseFromJSONTyped(json: any, ignoreDiscriminator: boolean): License { + if (json == null) { + return json; + } + return { + licenseUuid: json["license_uuid"], + name: json["name"], + key: json["key"], + expiry: new Date(json["expiry"]), + internalUsers: json["internal_users"], + externalUsers: json["external_users"], + }; +} + +export function LicenseToJSON(json: any): License { + return LicenseToJSONTyped(json, false); +} + +export function LicenseToJSONTyped( + value?: Omit< + License, + "license_uuid" | "name" | "expiry" | "internal_users" | "external_users" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + key: value["key"], + }; +} diff --git a/packages/client-ts/src/models/LicenseFlagsEnum.ts b/packages/client-ts/src/models/LicenseFlagsEnum.ts new file mode 100644 index 0000000000..f1dfeba405 --- /dev/null +++ b/packages/client-ts/src/models/LicenseFlagsEnum.ts @@ -0,0 +1,57 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const LicenseFlagsEnum = { + Trial: "trial", + NonProduction: "non_production", + UnknownDefaultOpenApi: "11184809", +} as const; +export type LicenseFlagsEnum = (typeof LicenseFlagsEnum)[keyof typeof LicenseFlagsEnum]; + +export function instanceOfLicenseFlagsEnum(value: any): boolean { + for (const key in LicenseFlagsEnum) { + if (Object.prototype.hasOwnProperty.call(LicenseFlagsEnum, key)) { + if (LicenseFlagsEnum[key as keyof typeof LicenseFlagsEnum] === value) { + return true; + } + } + } + return false; +} + +export function LicenseFlagsEnumFromJSON(json: any): LicenseFlagsEnum { + return LicenseFlagsEnumFromJSONTyped(json, false); +} + +export function LicenseFlagsEnumFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): LicenseFlagsEnum { + return json as LicenseFlagsEnum; +} + +export function LicenseFlagsEnumToJSON(value?: LicenseFlagsEnum | null): any { + return value as any; +} + +export function LicenseFlagsEnumToJSONTyped( + value: any, + ignoreDiscriminator: boolean, +): LicenseFlagsEnum { + return value as LicenseFlagsEnum; +} diff --git a/packages/client-ts/src/models/LicenseForecast.ts b/packages/client-ts/src/models/LicenseForecast.ts new file mode 100644 index 0000000000..2cb4b181e3 --- /dev/null +++ b/packages/client-ts/src/models/LicenseForecast.ts @@ -0,0 +1,97 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Serializer for license forecast + * @export + * @interface LicenseForecast + */ +export interface LicenseForecast { + /** + * + * @type {number} + * @memberof LicenseForecast + */ + internalUsers: number; + /** + * + * @type {number} + * @memberof LicenseForecast + */ + externalUsers: number; + /** + * + * @type {number} + * @memberof LicenseForecast + */ + forecastedInternalUsers: number; + /** + * + * @type {number} + * @memberof LicenseForecast + */ + forecastedExternalUsers: number; +} + +/** + * Check if a given object implements the LicenseForecast interface. + */ +export function instanceOfLicenseForecast(value: object): value is LicenseForecast { + if (!("internalUsers" in value) || value["internalUsers"] === undefined) return false; + if (!("externalUsers" in value) || value["externalUsers"] === undefined) return false; + if (!("forecastedInternalUsers" in value) || value["forecastedInternalUsers"] === undefined) + return false; + if (!("forecastedExternalUsers" in value) || value["forecastedExternalUsers"] === undefined) + return false; + return true; +} + +export function LicenseForecastFromJSON(json: any): LicenseForecast { + return LicenseForecastFromJSONTyped(json, false); +} + +export function LicenseForecastFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): LicenseForecast { + if (json == null) { + return json; + } + return { + internalUsers: json["internal_users"], + externalUsers: json["external_users"], + forecastedInternalUsers: json["forecasted_internal_users"], + forecastedExternalUsers: json["forecasted_external_users"], + }; +} + +export function LicenseForecastToJSON(json: any): LicenseForecast { + return LicenseForecastToJSONTyped(json, false); +} + +export function LicenseForecastToJSONTyped( + value?: LicenseForecast | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + internal_users: value["internalUsers"], + external_users: value["externalUsers"], + forecasted_internal_users: value["forecastedInternalUsers"], + forecasted_external_users: value["forecastedExternalUsers"], + }; +} diff --git a/packages/client-ts/src/models/LicenseRequest.ts b/packages/client-ts/src/models/LicenseRequest.ts new file mode 100644 index 0000000000..2b20d750c0 --- /dev/null +++ b/packages/client-ts/src/models/LicenseRequest.ts @@ -0,0 +1,68 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * License Serializer + * @export + * @interface LicenseRequest + */ +export interface LicenseRequest { + /** + * + * @type {string} + * @memberof LicenseRequest + */ + key: string; +} + +/** + * Check if a given object implements the LicenseRequest interface. + */ +export function instanceOfLicenseRequest(value: object): value is LicenseRequest { + if (!("key" in value) || value["key"] === undefined) return false; + return true; +} + +export function LicenseRequestFromJSON(json: any): LicenseRequest { + return LicenseRequestFromJSONTyped(json, false); +} + +export function LicenseRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): LicenseRequest { + if (json == null) { + return json; + } + return { + key: json["key"], + }; +} + +export function LicenseRequestToJSON(json: any): LicenseRequest { + return LicenseRequestToJSONTyped(json, false); +} + +export function LicenseRequestToJSONTyped( + value?: LicenseRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + key: value["key"], + }; +} diff --git a/packages/client-ts/src/models/LicenseStatusEnum.ts b/packages/client-ts/src/models/LicenseStatusEnum.ts new file mode 100644 index 0000000000..382e27c71f --- /dev/null +++ b/packages/client-ts/src/models/LicenseStatusEnum.ts @@ -0,0 +1,62 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const LicenseStatusEnum = { + Unlicensed: "unlicensed", + Valid: "valid", + Expired: "expired", + ExpirySoon: "expiry_soon", + LimitExceededAdmin: "limit_exceeded_admin", + LimitExceededUser: "limit_exceeded_user", + ReadOnly: "read_only", + UnknownDefaultOpenApi: "11184809", +} as const; +export type LicenseStatusEnum = (typeof LicenseStatusEnum)[keyof typeof LicenseStatusEnum]; + +export function instanceOfLicenseStatusEnum(value: any): boolean { + for (const key in LicenseStatusEnum) { + if (Object.prototype.hasOwnProperty.call(LicenseStatusEnum, key)) { + if (LicenseStatusEnum[key as keyof typeof LicenseStatusEnum] === value) { + return true; + } + } + } + return false; +} + +export function LicenseStatusEnumFromJSON(json: any): LicenseStatusEnum { + return LicenseStatusEnumFromJSONTyped(json, false); +} + +export function LicenseStatusEnumFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): LicenseStatusEnum { + return json as LicenseStatusEnum; +} + +export function LicenseStatusEnumToJSON(value?: LicenseStatusEnum | null): any { + return value as any; +} + +export function LicenseStatusEnumToJSONTyped( + value: any, + ignoreDiscriminator: boolean, +): LicenseStatusEnum { + return value as LicenseStatusEnum; +} diff --git a/packages/client-ts/src/models/LicenseSummary.ts b/packages/client-ts/src/models/LicenseSummary.ts new file mode 100644 index 0000000000..9641beffc1 --- /dev/null +++ b/packages/client-ts/src/models/LicenseSummary.ts @@ -0,0 +1,112 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { LicenseFlagsEnum } from "./LicenseFlagsEnum"; +import { LicenseFlagsEnumFromJSON, LicenseFlagsEnumToJSON } from "./LicenseFlagsEnum"; +import type { LicenseSummaryStatusEnum } from "./LicenseSummaryStatusEnum"; +import { + LicenseSummaryStatusEnumFromJSON, + LicenseSummaryStatusEnumToJSON, +} from "./LicenseSummaryStatusEnum"; + +/** + * Serializer for license status + * @export + * @interface LicenseSummary + */ +export interface LicenseSummary { + /** + * + * @type {number} + * @memberof LicenseSummary + */ + internalUsers: number; + /** + * + * @type {number} + * @memberof LicenseSummary + */ + externalUsers: number; + /** + * + * @type {LicenseSummaryStatusEnum} + * @memberof LicenseSummary + */ + status: LicenseSummaryStatusEnum; + /** + * + * @type {Date} + * @memberof LicenseSummary + */ + latestValid: Date; + /** + * + * @type {Array} + * @memberof LicenseSummary + */ + licenseFlags: Array; +} + +/** + * Check if a given object implements the LicenseSummary interface. + */ +export function instanceOfLicenseSummary(value: object): value is LicenseSummary { + if (!("internalUsers" in value) || value["internalUsers"] === undefined) return false; + if (!("externalUsers" in value) || value["externalUsers"] === undefined) return false; + if (!("status" in value) || value["status"] === undefined) return false; + if (!("latestValid" in value) || value["latestValid"] === undefined) return false; + if (!("licenseFlags" in value) || value["licenseFlags"] === undefined) return false; + return true; +} + +export function LicenseSummaryFromJSON(json: any): LicenseSummary { + return LicenseSummaryFromJSONTyped(json, false); +} + +export function LicenseSummaryFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): LicenseSummary { + if (json == null) { + return json; + } + return { + internalUsers: json["internal_users"], + externalUsers: json["external_users"], + status: LicenseSummaryStatusEnumFromJSON(json["status"]), + latestValid: new Date(json["latest_valid"]), + licenseFlags: (json["license_flags"] as Array).map(LicenseFlagsEnumFromJSON), + }; +} + +export function LicenseSummaryToJSON(json: any): LicenseSummary { + return LicenseSummaryToJSONTyped(json, false); +} + +export function LicenseSummaryToJSONTyped( + value?: LicenseSummary | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + internal_users: value["internalUsers"], + external_users: value["externalUsers"], + status: LicenseSummaryStatusEnumToJSON(value["status"]), + latest_valid: value["latestValid"].toISOString(), + license_flags: (value["licenseFlags"] as Array).map(LicenseFlagsEnumToJSON), + }; +} diff --git a/packages/client-ts/src/models/LicenseSummaryStatusEnum.ts b/packages/client-ts/src/models/LicenseSummaryStatusEnum.ts new file mode 100644 index 0000000000..228cad050e --- /dev/null +++ b/packages/client-ts/src/models/LicenseSummaryStatusEnum.ts @@ -0,0 +1,63 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const LicenseSummaryStatusEnum = { + Unlicensed: "unlicensed", + Valid: "valid", + Expired: "expired", + ExpirySoon: "expiry_soon", + LimitExceededAdmin: "limit_exceeded_admin", + LimitExceededUser: "limit_exceeded_user", + ReadOnly: "read_only", + UnknownDefaultOpenApi: "11184809", +} as const; +export type LicenseSummaryStatusEnum = + (typeof LicenseSummaryStatusEnum)[keyof typeof LicenseSummaryStatusEnum]; + +export function instanceOfLicenseSummaryStatusEnum(value: any): boolean { + for (const key in LicenseSummaryStatusEnum) { + if (Object.prototype.hasOwnProperty.call(LicenseSummaryStatusEnum, key)) { + if (LicenseSummaryStatusEnum[key as keyof typeof LicenseSummaryStatusEnum] === value) { + return true; + } + } + } + return false; +} + +export function LicenseSummaryStatusEnumFromJSON(json: any): LicenseSummaryStatusEnum { + return LicenseSummaryStatusEnumFromJSONTyped(json, false); +} + +export function LicenseSummaryStatusEnumFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): LicenseSummaryStatusEnum { + return json as LicenseSummaryStatusEnum; +} + +export function LicenseSummaryStatusEnumToJSON(value?: LicenseSummaryStatusEnum | null): any { + return value as any; +} + +export function LicenseSummaryStatusEnumToJSONTyped( + value: any, + ignoreDiscriminator: boolean, +): LicenseSummaryStatusEnum { + return value as LicenseSummaryStatusEnum; +} diff --git a/packages/client-ts/src/models/LifecycleIteration.ts b/packages/client-ts/src/models/LifecycleIteration.ts new file mode 100644 index 0000000000..1df103cc90 --- /dev/null +++ b/packages/client-ts/src/models/LifecycleIteration.ts @@ -0,0 +1,179 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { ContentTypeEnum } from "./ContentTypeEnum"; +import { ContentTypeEnumFromJSON, ContentTypeEnumToJSON } from "./ContentTypeEnum"; +import type { LifecycleIterationStateEnum } from "./LifecycleIterationStateEnum"; +import { LifecycleIterationStateEnumFromJSON } from "./LifecycleIterationStateEnum"; +import type { RelatedRule } from "./RelatedRule"; +import { RelatedRuleFromJSON } from "./RelatedRule"; +import type { Review } from "./Review"; +import { ReviewFromJSON } from "./Review"; + +/** + * Mixin to validate that a valid enterprise license + * exists before allowing to save the object + * @export + * @interface LifecycleIteration + */ +export interface LifecycleIteration { + /** + * + * @type {string} + * @memberof LifecycleIteration + */ + readonly id: string; + /** + * + * @type {ContentTypeEnum} + * @memberof LifecycleIteration + */ + contentType: ContentTypeEnum; + /** + * + * @type {string} + * @memberof LifecycleIteration + */ + readonly objectId: string; + /** + * + * @type {string} + * @memberof LifecycleIteration + */ + readonly objectVerbose: string; + /** + * + * @type {string} + * @memberof LifecycleIteration + */ + readonly objectAdminUrl: string; + /** + * + * @type {LifecycleIterationStateEnum} + * @memberof LifecycleIteration + */ + readonly state: LifecycleIterationStateEnum; + /** + * + * @type {Date} + * @memberof LifecycleIteration + */ + readonly openedOn: Date; + /** + * + * @type {Date} + * @memberof LifecycleIteration + */ + readonly gracePeriodEnd: Date; + /** + * + * @type {Date} + * @memberof LifecycleIteration + */ + readonly nextReviewDate: Date; + /** + * + * @type {Array} + * @memberof LifecycleIteration + */ + readonly reviews: Array; + /** + * + * @type {RelatedRule} + * @memberof LifecycleIteration + */ + readonly rule: RelatedRule; + /** + * + * @type {boolean} + * @memberof LifecycleIteration + */ + readonly userCanReview: boolean; +} + +/** + * Check if a given object implements the LifecycleIteration interface. + */ +export function instanceOfLifecycleIteration(value: object): value is LifecycleIteration { + if (!("id" in value) || value["id"] === undefined) return false; + if (!("contentType" in value) || value["contentType"] === undefined) return false; + if (!("objectId" in value) || value["objectId"] === undefined) return false; + if (!("objectVerbose" in value) || value["objectVerbose"] === undefined) return false; + if (!("objectAdminUrl" in value) || value["objectAdminUrl"] === undefined) return false; + if (!("state" in value) || value["state"] === undefined) return false; + if (!("openedOn" in value) || value["openedOn"] === undefined) return false; + if (!("gracePeriodEnd" in value) || value["gracePeriodEnd"] === undefined) return false; + if (!("nextReviewDate" in value) || value["nextReviewDate"] === undefined) return false; + if (!("reviews" in value) || value["reviews"] === undefined) return false; + if (!("rule" in value) || value["rule"] === undefined) return false; + if (!("userCanReview" in value) || value["userCanReview"] === undefined) return false; + return true; +} + +export function LifecycleIterationFromJSON(json: any): LifecycleIteration { + return LifecycleIterationFromJSONTyped(json, false); +} + +export function LifecycleIterationFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): LifecycleIteration { + if (json == null) { + return json; + } + return { + id: json["id"], + contentType: ContentTypeEnumFromJSON(json["content_type"]), + objectId: json["object_id"], + objectVerbose: json["object_verbose"], + objectAdminUrl: json["object_admin_url"], + state: LifecycleIterationStateEnumFromJSON(json["state"]), + openedOn: new Date(json["opened_on"]), + gracePeriodEnd: new Date(json["grace_period_end"]), + nextReviewDate: new Date(json["next_review_date"]), + reviews: (json["reviews"] as Array).map(ReviewFromJSON), + rule: RelatedRuleFromJSON(json["rule"]), + userCanReview: json["user_can_review"], + }; +} + +export function LifecycleIterationToJSON(json: any): LifecycleIteration { + return LifecycleIterationToJSONTyped(json, false); +} + +export function LifecycleIterationToJSONTyped( + value?: Omit< + LifecycleIteration, + | "id" + | "object_id" + | "object_verbose" + | "object_admin_url" + | "state" + | "opened_on" + | "grace_period_end" + | "next_review_date" + | "reviews" + | "rule" + | "user_can_review" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + content_type: ContentTypeEnumToJSON(value["contentType"]), + }; +} diff --git a/packages/client-ts/src/models/LifecycleIterationRequest.ts b/packages/client-ts/src/models/LifecycleIterationRequest.ts new file mode 100644 index 0000000000..bd102c9909 --- /dev/null +++ b/packages/client-ts/src/models/LifecycleIterationRequest.ts @@ -0,0 +1,74 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { ContentTypeEnum } from "./ContentTypeEnum"; +import { ContentTypeEnumFromJSON, ContentTypeEnumToJSON } from "./ContentTypeEnum"; + +/** + * Mixin to validate that a valid enterprise license + * exists before allowing to save the object + * @export + * @interface LifecycleIterationRequest + */ +export interface LifecycleIterationRequest { + /** + * + * @type {ContentTypeEnum} + * @memberof LifecycleIterationRequest + */ + contentType: ContentTypeEnum; +} + +/** + * Check if a given object implements the LifecycleIterationRequest interface. + */ +export function instanceOfLifecycleIterationRequest( + value: object, +): value is LifecycleIterationRequest { + if (!("contentType" in value) || value["contentType"] === undefined) return false; + return true; +} + +export function LifecycleIterationRequestFromJSON(json: any): LifecycleIterationRequest { + return LifecycleIterationRequestFromJSONTyped(json, false); +} + +export function LifecycleIterationRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): LifecycleIterationRequest { + if (json == null) { + return json; + } + return { + contentType: ContentTypeEnumFromJSON(json["content_type"]), + }; +} + +export function LifecycleIterationRequestToJSON(json: any): LifecycleIterationRequest { + return LifecycleIterationRequestToJSONTyped(json, false); +} + +export function LifecycleIterationRequestToJSONTyped( + value?: LifecycleIterationRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + content_type: ContentTypeEnumToJSON(value["contentType"]), + }; +} diff --git a/packages/client-ts/src/models/LifecycleIterationStateEnum.ts b/packages/client-ts/src/models/LifecycleIterationStateEnum.ts new file mode 100644 index 0000000000..ba43d022c4 --- /dev/null +++ b/packages/client-ts/src/models/LifecycleIterationStateEnum.ts @@ -0,0 +1,63 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const LifecycleIterationStateEnum = { + Reviewed: "REVIEWED", + Pending: "PENDING", + Overdue: "OVERDUE", + Canceled: "CANCELED", + UnknownDefaultOpenApi: "11184809", +} as const; +export type LifecycleIterationStateEnum = + (typeof LifecycleIterationStateEnum)[keyof typeof LifecycleIterationStateEnum]; + +export function instanceOfLifecycleIterationStateEnum(value: any): boolean { + for (const key in LifecycleIterationStateEnum) { + if (Object.prototype.hasOwnProperty.call(LifecycleIterationStateEnum, key)) { + if ( + LifecycleIterationStateEnum[key as keyof typeof LifecycleIterationStateEnum] === + value + ) { + return true; + } + } + } + return false; +} + +export function LifecycleIterationStateEnumFromJSON(json: any): LifecycleIterationStateEnum { + return LifecycleIterationStateEnumFromJSONTyped(json, false); +} + +export function LifecycleIterationStateEnumFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): LifecycleIterationStateEnum { + return json as LifecycleIterationStateEnum; +} + +export function LifecycleIterationStateEnumToJSON(value?: LifecycleIterationStateEnum | null): any { + return value as any; +} + +export function LifecycleIterationStateEnumToJSONTyped( + value: any, + ignoreDiscriminator: boolean, +): LifecycleIterationStateEnum { + return value as LifecycleIterationStateEnum; +} diff --git a/packages/client-ts/src/models/LifecycleRule.ts b/packages/client-ts/src/models/LifecycleRule.ts new file mode 100644 index 0000000000..fa1bd0a850 --- /dev/null +++ b/packages/client-ts/src/models/LifecycleRule.ts @@ -0,0 +1,186 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { ContentTypeEnum } from "./ContentTypeEnum"; +import { ContentTypeEnumFromJSON, ContentTypeEnumToJSON } from "./ContentTypeEnum"; +import type { ReviewerGroup } from "./ReviewerGroup"; +import { ReviewerGroupFromJSON } from "./ReviewerGroup"; +import type { ReviewerUser } from "./ReviewerUser"; +import { ReviewerUserFromJSON } from "./ReviewerUser"; + +/** + * Mixin to validate that a valid enterprise license + * exists before allowing to save the object + * @export + * @interface LifecycleRule + */ +export interface LifecycleRule { + /** + * + * @type {string} + * @memberof LifecycleRule + */ + readonly id: string; + /** + * + * @type {string} + * @memberof LifecycleRule + */ + name: string; + /** + * + * @type {ContentTypeEnum} + * @memberof LifecycleRule + */ + contentType: ContentTypeEnum; + /** + * + * @type {string} + * @memberof LifecycleRule + */ + objectId?: string | null; + /** + * + * @type {string} + * @memberof LifecycleRule + */ + interval?: string; + /** + * + * @type {string} + * @memberof LifecycleRule + */ + gracePeriod?: string; + /** + * + * @type {Array} + * @memberof LifecycleRule + */ + reviewerGroups?: Array; + /** + * + * @type {Array} + * @memberof LifecycleRule + */ + readonly reviewerGroupsObj: Array; + /** + * + * @type {number} + * @memberof LifecycleRule + */ + minReviewers?: number; + /** + * + * @type {boolean} + * @memberof LifecycleRule + */ + minReviewersIsPerGroup?: boolean; + /** + * + * @type {Array} + * @memberof LifecycleRule + */ + reviewers: Array; + /** + * + * @type {Array} + * @memberof LifecycleRule + */ + readonly reviewersObj: Array; + /** + * Select which transports should be used to notify the reviewers. If none are selected, the notification will only be shown in the authentik UI. + * @type {Array} + * @memberof LifecycleRule + */ + notificationTransports?: Array; + /** + * + * @type {string} + * @memberof LifecycleRule + */ + readonly targetVerbose: string; +} + +/** + * Check if a given object implements the LifecycleRule interface. + */ +export function instanceOfLifecycleRule(value: object): value is LifecycleRule { + if (!("id" in value) || value["id"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("contentType" in value) || value["contentType"] === undefined) return false; + if (!("reviewerGroupsObj" in value) || value["reviewerGroupsObj"] === undefined) return false; + if (!("reviewers" in value) || value["reviewers"] === undefined) return false; + if (!("reviewersObj" in value) || value["reviewersObj"] === undefined) return false; + if (!("targetVerbose" in value) || value["targetVerbose"] === undefined) return false; + return true; +} + +export function LifecycleRuleFromJSON(json: any): LifecycleRule { + return LifecycleRuleFromJSONTyped(json, false); +} + +export function LifecycleRuleFromJSONTyped(json: any, ignoreDiscriminator: boolean): LifecycleRule { + if (json == null) { + return json; + } + return { + id: json["id"], + name: json["name"], + contentType: ContentTypeEnumFromJSON(json["content_type"]), + objectId: json["object_id"] == null ? undefined : json["object_id"], + interval: json["interval"] == null ? undefined : json["interval"], + gracePeriod: json["grace_period"] == null ? undefined : json["grace_period"], + reviewerGroups: json["reviewer_groups"] == null ? undefined : json["reviewer_groups"], + reviewerGroupsObj: (json["reviewer_groups_obj"] as Array).map(ReviewerGroupFromJSON), + minReviewers: json["min_reviewers"] == null ? undefined : json["min_reviewers"], + minReviewersIsPerGroup: + json["min_reviewers_is_per_group"] == null + ? undefined + : json["min_reviewers_is_per_group"], + reviewers: json["reviewers"], + reviewersObj: (json["reviewers_obj"] as Array).map(ReviewerUserFromJSON), + notificationTransports: + json["notification_transports"] == null ? undefined : json["notification_transports"], + targetVerbose: json["target_verbose"], + }; +} + +export function LifecycleRuleToJSON(json: any): LifecycleRule { + return LifecycleRuleToJSONTyped(json, false); +} + +export function LifecycleRuleToJSONTyped( + value?: Omit< + LifecycleRule, + "id" | "reviewer_groups_obj" | "reviewers_obj" | "target_verbose" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + content_type: ContentTypeEnumToJSON(value["contentType"]), + object_id: value["objectId"], + interval: value["interval"], + grace_period: value["gracePeriod"], + reviewer_groups: value["reviewerGroups"], + min_reviewers: value["minReviewers"], + min_reviewers_is_per_group: value["minReviewersIsPerGroup"], + reviewers: value["reviewers"], + notification_transports: value["notificationTransports"], + }; +} diff --git a/packages/client-ts/src/models/LifecycleRuleRequest.ts b/packages/client-ts/src/models/LifecycleRuleRequest.ts new file mode 100644 index 0000000000..c609eb831e --- /dev/null +++ b/packages/client-ts/src/models/LifecycleRuleRequest.ts @@ -0,0 +1,150 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { ContentTypeEnum } from "./ContentTypeEnum"; +import { ContentTypeEnumFromJSON, ContentTypeEnumToJSON } from "./ContentTypeEnum"; + +/** + * Mixin to validate that a valid enterprise license + * exists before allowing to save the object + * @export + * @interface LifecycleRuleRequest + */ +export interface LifecycleRuleRequest { + /** + * + * @type {string} + * @memberof LifecycleRuleRequest + */ + name: string; + /** + * + * @type {ContentTypeEnum} + * @memberof LifecycleRuleRequest + */ + contentType: ContentTypeEnum; + /** + * + * @type {string} + * @memberof LifecycleRuleRequest + */ + objectId?: string | null; + /** + * + * @type {string} + * @memberof LifecycleRuleRequest + */ + interval?: string; + /** + * + * @type {string} + * @memberof LifecycleRuleRequest + */ + gracePeriod?: string; + /** + * + * @type {Array} + * @memberof LifecycleRuleRequest + */ + reviewerGroups?: Array; + /** + * + * @type {number} + * @memberof LifecycleRuleRequest + */ + minReviewers?: number; + /** + * + * @type {boolean} + * @memberof LifecycleRuleRequest + */ + minReviewersIsPerGroup?: boolean; + /** + * + * @type {Array} + * @memberof LifecycleRuleRequest + */ + reviewers: Array; + /** + * Select which transports should be used to notify the reviewers. If none are selected, the notification will only be shown in the authentik UI. + * @type {Array} + * @memberof LifecycleRuleRequest + */ + notificationTransports?: Array; +} + +/** + * Check if a given object implements the LifecycleRuleRequest interface. + */ +export function instanceOfLifecycleRuleRequest(value: object): value is LifecycleRuleRequest { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("contentType" in value) || value["contentType"] === undefined) return false; + if (!("reviewers" in value) || value["reviewers"] === undefined) return false; + return true; +} + +export function LifecycleRuleRequestFromJSON(json: any): LifecycleRuleRequest { + return LifecycleRuleRequestFromJSONTyped(json, false); +} + +export function LifecycleRuleRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): LifecycleRuleRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + contentType: ContentTypeEnumFromJSON(json["content_type"]), + objectId: json["object_id"] == null ? undefined : json["object_id"], + interval: json["interval"] == null ? undefined : json["interval"], + gracePeriod: json["grace_period"] == null ? undefined : json["grace_period"], + reviewerGroups: json["reviewer_groups"] == null ? undefined : json["reviewer_groups"], + minReviewers: json["min_reviewers"] == null ? undefined : json["min_reviewers"], + minReviewersIsPerGroup: + json["min_reviewers_is_per_group"] == null + ? undefined + : json["min_reviewers_is_per_group"], + reviewers: json["reviewers"], + notificationTransports: + json["notification_transports"] == null ? undefined : json["notification_transports"], + }; +} + +export function LifecycleRuleRequestToJSON(json: any): LifecycleRuleRequest { + return LifecycleRuleRequestToJSONTyped(json, false); +} + +export function LifecycleRuleRequestToJSONTyped( + value?: LifecycleRuleRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + content_type: ContentTypeEnumToJSON(value["contentType"]), + object_id: value["objectId"], + interval: value["interval"], + grace_period: value["gracePeriod"], + reviewer_groups: value["reviewerGroups"], + min_reviewers: value["minReviewers"], + min_reviewers_is_per_group: value["minReviewersIsPerGroup"], + reviewers: value["reviewers"], + notification_transports: value["notificationTransports"], + }; +} diff --git a/packages/client-ts/src/models/Link.ts b/packages/client-ts/src/models/Link.ts new file mode 100644 index 0000000000..6d0515b2e5 --- /dev/null +++ b/packages/client-ts/src/models/Link.ts @@ -0,0 +1,62 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Returns a single link + * @export + * @interface Link + */ +export interface Link { + /** + * + * @type {string} + * @memberof Link + */ + link: string; +} + +/** + * Check if a given object implements the Link interface. + */ +export function instanceOfLink(value: object): value is Link { + if (!("link" in value) || value["link"] === undefined) return false; + return true; +} + +export function LinkFromJSON(json: any): Link { + return LinkFromJSONTyped(json, false); +} + +export function LinkFromJSONTyped(json: any, ignoreDiscriminator: boolean): Link { + if (json == null) { + return json; + } + return { + link: json["link"], + }; +} + +export function LinkToJSON(json: any): Link { + return LinkToJSONTyped(json, false); +} + +export function LinkToJSONTyped(value?: Link | null, ignoreDiscriminator: boolean = false): any { + if (value == null) { + return value; + } + + return { + link: value["link"], + }; +} diff --git a/packages/client-ts/src/models/LogEvent.ts b/packages/client-ts/src/models/LogEvent.ts new file mode 100644 index 0000000000..09f42ea09e --- /dev/null +++ b/packages/client-ts/src/models/LogEvent.ts @@ -0,0 +1,104 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { LogLevelEnum } from "./LogLevelEnum"; +import { LogLevelEnumFromJSON, LogLevelEnumToJSON } from "./LogLevelEnum"; + +/** + * Single log message with all context logged. + * @export + * @interface LogEvent + */ +export interface LogEvent { + /** + * + * @type {Date} + * @memberof LogEvent + */ + timestamp: Date; + /** + * + * @type {LogLevelEnum} + * @memberof LogEvent + */ + logLevel: LogLevelEnum; + /** + * + * @type {string} + * @memberof LogEvent + */ + logger: string; + /** + * + * @type {string} + * @memberof LogEvent + */ + event: string; + /** + * + * @type {{ [key: string]: any; }} + * @memberof LogEvent + */ + attributes: { [key: string]: any }; +} + +/** + * Check if a given object implements the LogEvent interface. + */ +export function instanceOfLogEvent(value: object): value is LogEvent { + if (!("timestamp" in value) || value["timestamp"] === undefined) return false; + if (!("logLevel" in value) || value["logLevel"] === undefined) return false; + if (!("logger" in value) || value["logger"] === undefined) return false; + if (!("event" in value) || value["event"] === undefined) return false; + if (!("attributes" in value) || value["attributes"] === undefined) return false; + return true; +} + +export function LogEventFromJSON(json: any): LogEvent { + return LogEventFromJSONTyped(json, false); +} + +export function LogEventFromJSONTyped(json: any, ignoreDiscriminator: boolean): LogEvent { + if (json == null) { + return json; + } + return { + timestamp: new Date(json["timestamp"]), + logLevel: LogLevelEnumFromJSON(json["log_level"]), + logger: json["logger"], + event: json["event"], + attributes: json["attributes"], + }; +} + +export function LogEventToJSON(json: any): LogEvent { + return LogEventToJSONTyped(json, false); +} + +export function LogEventToJSONTyped( + value?: LogEvent | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + timestamp: value["timestamp"].toISOString(), + log_level: LogLevelEnumToJSON(value["logLevel"]), + logger: value["logger"], + event: value["event"], + attributes: value["attributes"], + }; +} diff --git a/packages/client-ts/src/models/LogLevelEnum.ts b/packages/client-ts/src/models/LogLevelEnum.ts new file mode 100644 index 0000000000..56a93e053b --- /dev/null +++ b/packages/client-ts/src/models/LogLevelEnum.ts @@ -0,0 +1,57 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const LogLevelEnum = { + Critical: "critical", + Exception: "exception", + Error: "error", + Warn: "warn", + Warning: "warning", + Info: "info", + Debug: "debug", + Notset: "notset", + UnknownDefaultOpenApi: "11184809", +} as const; +export type LogLevelEnum = (typeof LogLevelEnum)[keyof typeof LogLevelEnum]; + +export function instanceOfLogLevelEnum(value: any): boolean { + for (const key in LogLevelEnum) { + if (Object.prototype.hasOwnProperty.call(LogLevelEnum, key)) { + if (LogLevelEnum[key as keyof typeof LogLevelEnum] === value) { + return true; + } + } + } + return false; +} + +export function LogLevelEnumFromJSON(json: any): LogLevelEnum { + return LogLevelEnumFromJSONTyped(json, false); +} + +export function LogLevelEnumFromJSONTyped(json: any, ignoreDiscriminator: boolean): LogLevelEnum { + return json as LogLevelEnum; +} + +export function LogLevelEnumToJSON(value?: LogLevelEnum | null): any { + return value as any; +} + +export function LogLevelEnumToJSONTyped(value: any, ignoreDiscriminator: boolean): LogLevelEnum { + return value as LogLevelEnum; +} diff --git a/packages/client-ts/src/models/LoginChallengeTypes.ts b/packages/client-ts/src/models/LoginChallengeTypes.ts new file mode 100644 index 0000000000..2216dc72fe --- /dev/null +++ b/packages/client-ts/src/models/LoginChallengeTypes.ts @@ -0,0 +1,105 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { AppleLoginChallenge } from "./AppleLoginChallenge"; +import { AppleLoginChallengeFromJSONTyped, AppleLoginChallengeToJSON } from "./AppleLoginChallenge"; +import type { PlexAuthenticationChallenge } from "./PlexAuthenticationChallenge"; +import { + PlexAuthenticationChallengeFromJSONTyped, + PlexAuthenticationChallengeToJSON, +} from "./PlexAuthenticationChallenge"; +import type { RedirectChallenge } from "./RedirectChallenge"; +import { RedirectChallengeFromJSONTyped, RedirectChallengeToJSON } from "./RedirectChallenge"; +import type { TelegramLoginChallenge } from "./TelegramLoginChallenge"; +import { + TelegramLoginChallengeFromJSONTyped, + TelegramLoginChallengeToJSON, +} from "./TelegramLoginChallenge"; + +/** + * @type LoginChallengeTypes + * + * @export + */ +export type LoginChallengeTypes = + | ({ component: "ak-source-oauth-apple" } & AppleLoginChallenge) + | ({ component: "ak-source-plex" } & PlexAuthenticationChallenge) + | ({ component: "ak-source-telegram" } & TelegramLoginChallenge) + | ({ component: "xak-flow-redirect" } & RedirectChallenge); + +export function LoginChallengeTypesFromJSON(json: any): LoginChallengeTypes { + return LoginChallengeTypesFromJSONTyped(json, false); +} + +export function LoginChallengeTypesFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): LoginChallengeTypes { + if (json == null) { + return json; + } + switch (json["component"]) { + case "ak-source-oauth-apple": + return Object.assign({}, AppleLoginChallengeFromJSONTyped(json, true), { + component: "ak-source-oauth-apple", + } as const); + case "ak-source-plex": + return Object.assign({}, PlexAuthenticationChallengeFromJSONTyped(json, true), { + component: "ak-source-plex", + } as const); + case "ak-source-telegram": + return Object.assign({}, TelegramLoginChallengeFromJSONTyped(json, true), { + component: "ak-source-telegram", + } as const); + case "xak-flow-redirect": + return Object.assign({}, RedirectChallengeFromJSONTyped(json, true), { + component: "xak-flow-redirect", + } as const); + default: + return json; + } +} + +export function LoginChallengeTypesToJSON(json: any): any { + return LoginChallengeTypesToJSONTyped(json, false); +} + +export function LoginChallengeTypesToJSONTyped( + value?: LoginChallengeTypes | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + switch (value["component"]) { + case "ak-source-oauth-apple": + return Object.assign({}, AppleLoginChallengeToJSON(value), { + component: "ak-source-oauth-apple", + } as const); + case "ak-source-plex": + return Object.assign({}, PlexAuthenticationChallengeToJSON(value), { + component: "ak-source-plex", + } as const); + case "ak-source-telegram": + return Object.assign({}, TelegramLoginChallengeToJSON(value), { + component: "ak-source-telegram", + } as const); + case "xak-flow-redirect": + return Object.assign({}, RedirectChallengeToJSON(value), { + component: "xak-flow-redirect", + } as const); + default: + return value; + } +} diff --git a/packages/client-ts/src/models/LoginSource.ts b/packages/client-ts/src/models/LoginSource.ts new file mode 100644 index 0000000000..4cbe2df09a --- /dev/null +++ b/packages/client-ts/src/models/LoginSource.ts @@ -0,0 +1,93 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { LoginChallengeTypes } from "./LoginChallengeTypes"; +import { LoginChallengeTypesFromJSON, LoginChallengeTypesToJSON } from "./LoginChallengeTypes"; + +/** + * Serializer for Login buttons of sources + * @export + * @interface LoginSource + */ +export interface LoginSource { + /** + * + * @type {string} + * @memberof LoginSource + */ + name: string; + /** + * + * @type {string} + * @memberof LoginSource + */ + iconUrl?: string | null; + /** + * + * @type {boolean} + * @memberof LoginSource + */ + promoted?: boolean; + /** + * + * @type {LoginChallengeTypes} + * @memberof LoginSource + */ + challenge: LoginChallengeTypes; +} + +/** + * Check if a given object implements the LoginSource interface. + */ +export function instanceOfLoginSource(value: object): value is LoginSource { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("challenge" in value) || value["challenge"] === undefined) return false; + return true; +} + +export function LoginSourceFromJSON(json: any): LoginSource { + return LoginSourceFromJSONTyped(json, false); +} + +export function LoginSourceFromJSONTyped(json: any, ignoreDiscriminator: boolean): LoginSource { + if (json == null) { + return json; + } + return { + name: json["name"], + iconUrl: json["icon_url"] == null ? undefined : json["icon_url"], + promoted: json["promoted"] == null ? undefined : json["promoted"], + challenge: LoginChallengeTypesFromJSON(json["challenge"]), + }; +} + +export function LoginSourceToJSON(json: any): LoginSource { + return LoginSourceToJSONTyped(json, false); +} + +export function LoginSourceToJSONTyped( + value?: LoginSource | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + icon_url: value["iconUrl"], + promoted: value["promoted"], + challenge: LoginChallengeTypesToJSON(value["challenge"]), + }; +} diff --git a/packages/client-ts/src/models/LogoutURL.ts b/packages/client-ts/src/models/LogoutURL.ts new file mode 100644 index 0000000000..df39865e92 --- /dev/null +++ b/packages/client-ts/src/models/LogoutURL.ts @@ -0,0 +1,105 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Data for a single logout URL + * @export + * @interface LogoutURL + */ +export interface LogoutURL { + /** + * + * @type {string} + * @memberof LogoutURL + */ + url: string; + /** + * + * @type {string} + * @memberof LogoutURL + */ + providerName?: string | null; + /** + * + * @type {string} + * @memberof LogoutURL + */ + binding?: string | null; + /** + * + * @type {string} + * @memberof LogoutURL + */ + samlRequest?: string | null; + /** + * + * @type {string} + * @memberof LogoutURL + */ + samlResponse?: string | null; + /** + * + * @type {string} + * @memberof LogoutURL + */ + samlRelayState?: string | null; +} + +/** + * Check if a given object implements the LogoutURL interface. + */ +export function instanceOfLogoutURL(value: object): value is LogoutURL { + if (!("url" in value) || value["url"] === undefined) return false; + return true; +} + +export function LogoutURLFromJSON(json: any): LogoutURL { + return LogoutURLFromJSONTyped(json, false); +} + +export function LogoutURLFromJSONTyped(json: any, ignoreDiscriminator: boolean): LogoutURL { + if (json == null) { + return json; + } + return { + url: json["url"], + providerName: json["provider_name"] == null ? undefined : json["provider_name"], + binding: json["binding"] == null ? undefined : json["binding"], + samlRequest: json["saml_request"] == null ? undefined : json["saml_request"], + samlResponse: json["saml_response"] == null ? undefined : json["saml_response"], + samlRelayState: json["saml_relay_state"] == null ? undefined : json["saml_relay_state"], + }; +} + +export function LogoutURLToJSON(json: any): LogoutURL { + return LogoutURLToJSONTyped(json, false); +} + +export function LogoutURLToJSONTyped( + value?: LogoutURL | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + url: value["url"], + provider_name: value["providerName"], + binding: value["binding"], + saml_request: value["samlRequest"], + saml_response: value["samlResponse"], + saml_relay_state: value["samlRelayState"], + }; +} diff --git a/packages/client-ts/src/models/MDMConfigRequest.ts b/packages/client-ts/src/models/MDMConfigRequest.ts new file mode 100644 index 0000000000..11e1d17c68 --- /dev/null +++ b/packages/client-ts/src/models/MDMConfigRequest.ts @@ -0,0 +1,80 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { DeviceFactsOSFamily } from "./DeviceFactsOSFamily"; +import { DeviceFactsOSFamilyFromJSON, DeviceFactsOSFamilyToJSON } from "./DeviceFactsOSFamily"; + +/** + * Base serializer class which doesn't implement create/update methods + * @export + * @interface MDMConfigRequest + */ +export interface MDMConfigRequest { + /** + * + * @type {DeviceFactsOSFamily} + * @memberof MDMConfigRequest + */ + platform: DeviceFactsOSFamily; + /** + * + * @type {string} + * @memberof MDMConfigRequest + */ + enrollmentToken: string; +} + +/** + * Check if a given object implements the MDMConfigRequest interface. + */ +export function instanceOfMDMConfigRequest(value: object): value is MDMConfigRequest { + if (!("platform" in value) || value["platform"] === undefined) return false; + if (!("enrollmentToken" in value) || value["enrollmentToken"] === undefined) return false; + return true; +} + +export function MDMConfigRequestFromJSON(json: any): MDMConfigRequest { + return MDMConfigRequestFromJSONTyped(json, false); +} + +export function MDMConfigRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): MDMConfigRequest { + if (json == null) { + return json; + } + return { + platform: DeviceFactsOSFamilyFromJSON(json["platform"]), + enrollmentToken: json["enrollment_token"], + }; +} + +export function MDMConfigRequestToJSON(json: any): MDMConfigRequest { + return MDMConfigRequestToJSONTyped(json, false); +} + +export function MDMConfigRequestToJSONTyped( + value?: MDMConfigRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + platform: DeviceFactsOSFamilyToJSON(value["platform"]), + enrollment_token: value["enrollmentToken"], + }; +} diff --git a/packages/client-ts/src/models/MDMConfigResponse.ts b/packages/client-ts/src/models/MDMConfigResponse.ts new file mode 100644 index 0000000000..f8a73e81ee --- /dev/null +++ b/packages/client-ts/src/models/MDMConfigResponse.ts @@ -0,0 +1,86 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Base serializer class which doesn't implement create/update methods + * @export + * @interface MDMConfigResponse + */ +export interface MDMConfigResponse { + /** + * + * @type {string} + * @memberof MDMConfigResponse + */ + config: string; + /** + * + * @type {string} + * @memberof MDMConfigResponse + */ + mimeType: string; + /** + * + * @type {string} + * @memberof MDMConfigResponse + */ + filename: string; +} + +/** + * Check if a given object implements the MDMConfigResponse interface. + */ +export function instanceOfMDMConfigResponse(value: object): value is MDMConfigResponse { + if (!("config" in value) || value["config"] === undefined) return false; + if (!("mimeType" in value) || value["mimeType"] === undefined) return false; + if (!("filename" in value) || value["filename"] === undefined) return false; + return true; +} + +export function MDMConfigResponseFromJSON(json: any): MDMConfigResponse { + return MDMConfigResponseFromJSONTyped(json, false); +} + +export function MDMConfigResponseFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): MDMConfigResponse { + if (json == null) { + return json; + } + return { + config: json["config"], + mimeType: json["mime_type"], + filename: json["filename"], + }; +} + +export function MDMConfigResponseToJSON(json: any): MDMConfigResponse { + return MDMConfigResponseToJSONTyped(json, false); +} + +export function MDMConfigResponseToJSONTyped( + value?: MDMConfigResponse | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + config: value["config"], + mime_type: value["mimeType"], + filename: value["filename"], + }; +} diff --git a/packages/client-ts/src/models/MatchingModeEnum.ts b/packages/client-ts/src/models/MatchingModeEnum.ts new file mode 100644 index 0000000000..387fd3faea --- /dev/null +++ b/packages/client-ts/src/models/MatchingModeEnum.ts @@ -0,0 +1,57 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const MatchingModeEnum = { + Strict: "strict", + Regex: "regex", + UnknownDefaultOpenApi: "11184809", +} as const; +export type MatchingModeEnum = (typeof MatchingModeEnum)[keyof typeof MatchingModeEnum]; + +export function instanceOfMatchingModeEnum(value: any): boolean { + for (const key in MatchingModeEnum) { + if (Object.prototype.hasOwnProperty.call(MatchingModeEnum, key)) { + if (MatchingModeEnum[key as keyof typeof MatchingModeEnum] === value) { + return true; + } + } + } + return false; +} + +export function MatchingModeEnumFromJSON(json: any): MatchingModeEnum { + return MatchingModeEnumFromJSONTyped(json, false); +} + +export function MatchingModeEnumFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): MatchingModeEnum { + return json as MatchingModeEnum; +} + +export function MatchingModeEnumToJSON(value?: MatchingModeEnum | null): any { + return value as any; +} + +export function MatchingModeEnumToJSONTyped( + value: any, + ignoreDiscriminator: boolean, +): MatchingModeEnum { + return value as MatchingModeEnum; +} diff --git a/packages/client-ts/src/models/Metadata.ts b/packages/client-ts/src/models/Metadata.ts new file mode 100644 index 0000000000..40cd8db191 --- /dev/null +++ b/packages/client-ts/src/models/Metadata.ts @@ -0,0 +1,74 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Serializer for blueprint metadata + * @export + * @interface Metadata + */ +export interface Metadata { + /** + * + * @type {string} + * @memberof Metadata + */ + name: string; + /** + * + * @type {{ [key: string]: any; }} + * @memberof Metadata + */ + labels: { [key: string]: any }; +} + +/** + * Check if a given object implements the Metadata interface. + */ +export function instanceOfMetadata(value: object): value is Metadata { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("labels" in value) || value["labels"] === undefined) return false; + return true; +} + +export function MetadataFromJSON(json: any): Metadata { + return MetadataFromJSONTyped(json, false); +} + +export function MetadataFromJSONTyped(json: any, ignoreDiscriminator: boolean): Metadata { + if (json == null) { + return json; + } + return { + name: json["name"], + labels: json["labels"], + }; +} + +export function MetadataToJSON(json: any): Metadata { + return MetadataToJSONTyped(json, false); +} + +export function MetadataToJSONTyped( + value?: Metadata | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + labels: value["labels"], + }; +} diff --git a/packages/client-ts/src/models/MicrosoftEntraProvider.ts b/packages/client-ts/src/models/MicrosoftEntraProvider.ts new file mode 100644 index 0000000000..b02a00d820 --- /dev/null +++ b/packages/client-ts/src/models/MicrosoftEntraProvider.ts @@ -0,0 +1,256 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { OutgoingSyncDeleteAction } from "./OutgoingSyncDeleteAction"; +import { + OutgoingSyncDeleteActionFromJSON, + OutgoingSyncDeleteActionToJSON, +} from "./OutgoingSyncDeleteAction"; + +/** + * MicrosoftEntraProvider Serializer + * @export + * @interface MicrosoftEntraProvider + */ +export interface MicrosoftEntraProvider { + /** + * + * @type {number} + * @memberof MicrosoftEntraProvider + */ + readonly pk: number; + /** + * + * @type {string} + * @memberof MicrosoftEntraProvider + */ + name: string; + /** + * + * @type {Array} + * @memberof MicrosoftEntraProvider + */ + propertyMappings?: Array; + /** + * Property mappings used for group creation/updating. + * @type {Array} + * @memberof MicrosoftEntraProvider + */ + propertyMappingsGroup?: Array; + /** + * Get object component so that we know how to edit the object + * @type {string} + * @memberof MicrosoftEntraProvider + */ + readonly component: string; + /** + * Internal application name, used in URLs. + * @type {string} + * @memberof MicrosoftEntraProvider + */ + readonly assignedBackchannelApplicationSlug: string | null; + /** + * Application's display Name. + * @type {string} + * @memberof MicrosoftEntraProvider + */ + readonly assignedBackchannelApplicationName: string | null; + /** + * Return object's verbose_name + * @type {string} + * @memberof MicrosoftEntraProvider + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof MicrosoftEntraProvider + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof MicrosoftEntraProvider + */ + readonly metaModelName: string; + /** + * + * @type {string} + * @memberof MicrosoftEntraProvider + */ + clientId: string; + /** + * + * @type {string} + * @memberof MicrosoftEntraProvider + */ + clientSecret: string; + /** + * + * @type {string} + * @memberof MicrosoftEntraProvider + */ + tenantId: string; + /** + * + * @type {boolean} + * @memberof MicrosoftEntraProvider + */ + excludeUsersServiceAccount?: boolean; + /** + * + * @type {string} + * @memberof MicrosoftEntraProvider + */ + filterGroup?: string | null; + /** + * + * @type {OutgoingSyncDeleteAction} + * @memberof MicrosoftEntraProvider + */ + userDeleteAction?: OutgoingSyncDeleteAction; + /** + * + * @type {OutgoingSyncDeleteAction} + * @memberof MicrosoftEntraProvider + */ + groupDeleteAction?: OutgoingSyncDeleteAction; + /** + * Controls the number of objects synced in a single task + * @type {number} + * @memberof MicrosoftEntraProvider + */ + syncPageSize?: number; + /** + * Timeout for synchronization of a single page + * @type {string} + * @memberof MicrosoftEntraProvider + */ + syncPageTimeout?: string; + /** + * When enabled, provider will not modify or create objects in the remote system. + * @type {boolean} + * @memberof MicrosoftEntraProvider + */ + dryRun?: boolean; +} + +/** + * Check if a given object implements the MicrosoftEntraProvider interface. + */ +export function instanceOfMicrosoftEntraProvider(value: object): value is MicrosoftEntraProvider { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if ( + !("assignedBackchannelApplicationSlug" in value) || + value["assignedBackchannelApplicationSlug"] === undefined + ) + return false; + if ( + !("assignedBackchannelApplicationName" in value) || + value["assignedBackchannelApplicationName"] === undefined + ) + return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + if (!("clientId" in value) || value["clientId"] === undefined) return false; + if (!("clientSecret" in value) || value["clientSecret"] === undefined) return false; + if (!("tenantId" in value) || value["tenantId"] === undefined) return false; + return true; +} + +export function MicrosoftEntraProviderFromJSON(json: any): MicrosoftEntraProvider { + return MicrosoftEntraProviderFromJSONTyped(json, false); +} + +export function MicrosoftEntraProviderFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): MicrosoftEntraProvider { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + propertyMappings: json["property_mappings"] == null ? undefined : json["property_mappings"], + propertyMappingsGroup: + json["property_mappings_group"] == null ? undefined : json["property_mappings_group"], + component: json["component"], + assignedBackchannelApplicationSlug: json["assigned_backchannel_application_slug"], + assignedBackchannelApplicationName: json["assigned_backchannel_application_name"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + clientId: json["client_id"], + clientSecret: json["client_secret"], + tenantId: json["tenant_id"], + excludeUsersServiceAccount: + json["exclude_users_service_account"] == null + ? undefined + : json["exclude_users_service_account"], + filterGroup: json["filter_group"] == null ? undefined : json["filter_group"], + userDeleteAction: + json["user_delete_action"] == null + ? undefined + : OutgoingSyncDeleteActionFromJSON(json["user_delete_action"]), + groupDeleteAction: + json["group_delete_action"] == null + ? undefined + : OutgoingSyncDeleteActionFromJSON(json["group_delete_action"]), + syncPageSize: json["sync_page_size"] == null ? undefined : json["sync_page_size"], + syncPageTimeout: json["sync_page_timeout"] == null ? undefined : json["sync_page_timeout"], + dryRun: json["dry_run"] == null ? undefined : json["dry_run"], + }; +} + +export function MicrosoftEntraProviderToJSON(json: any): MicrosoftEntraProvider { + return MicrosoftEntraProviderToJSONTyped(json, false); +} + +export function MicrosoftEntraProviderToJSONTyped( + value?: Omit< + MicrosoftEntraProvider, + | "pk" + | "component" + | "assigned_backchannel_application_slug" + | "assigned_backchannel_application_name" + | "verbose_name" + | "verbose_name_plural" + | "meta_model_name" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + property_mappings: value["propertyMappings"], + property_mappings_group: value["propertyMappingsGroup"], + client_id: value["clientId"], + client_secret: value["clientSecret"], + tenant_id: value["tenantId"], + exclude_users_service_account: value["excludeUsersServiceAccount"], + filter_group: value["filterGroup"], + user_delete_action: OutgoingSyncDeleteActionToJSON(value["userDeleteAction"]), + group_delete_action: OutgoingSyncDeleteActionToJSON(value["groupDeleteAction"]), + sync_page_size: value["syncPageSize"], + sync_page_timeout: value["syncPageTimeout"], + dry_run: value["dryRun"], + }; +} diff --git a/packages/client-ts/src/models/MicrosoftEntraProviderGroup.ts b/packages/client-ts/src/models/MicrosoftEntraProviderGroup.ts new file mode 100644 index 0000000000..7a21e2e278 --- /dev/null +++ b/packages/client-ts/src/models/MicrosoftEntraProviderGroup.ts @@ -0,0 +1,115 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { PartialGroup } from "./PartialGroup"; +import { PartialGroupFromJSON } from "./PartialGroup"; + +/** + * MicrosoftEntraProviderGroup Serializer + * @export + * @interface MicrosoftEntraProviderGroup + */ +export interface MicrosoftEntraProviderGroup { + /** + * + * @type {string} + * @memberof MicrosoftEntraProviderGroup + */ + readonly id: string; + /** + * + * @type {string} + * @memberof MicrosoftEntraProviderGroup + */ + microsoftId: string; + /** + * + * @type {string} + * @memberof MicrosoftEntraProviderGroup + */ + group: string; + /** + * + * @type {PartialGroup} + * @memberof MicrosoftEntraProviderGroup + */ + readonly groupObj: PartialGroup; + /** + * + * @type {number} + * @memberof MicrosoftEntraProviderGroup + */ + provider: number; + /** + * + * @type {{ [key: string]: any; }} + * @memberof MicrosoftEntraProviderGroup + */ + readonly attributes: { [key: string]: any }; +} + +/** + * Check if a given object implements the MicrosoftEntraProviderGroup interface. + */ +export function instanceOfMicrosoftEntraProviderGroup( + value: object, +): value is MicrosoftEntraProviderGroup { + if (!("id" in value) || value["id"] === undefined) return false; + if (!("microsoftId" in value) || value["microsoftId"] === undefined) return false; + if (!("group" in value) || value["group"] === undefined) return false; + if (!("groupObj" in value) || value["groupObj"] === undefined) return false; + if (!("provider" in value) || value["provider"] === undefined) return false; + if (!("attributes" in value) || value["attributes"] === undefined) return false; + return true; +} + +export function MicrosoftEntraProviderGroupFromJSON(json: any): MicrosoftEntraProviderGroup { + return MicrosoftEntraProviderGroupFromJSONTyped(json, false); +} + +export function MicrosoftEntraProviderGroupFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): MicrosoftEntraProviderGroup { + if (json == null) { + return json; + } + return { + id: json["id"], + microsoftId: json["microsoft_id"], + group: json["group"], + groupObj: PartialGroupFromJSON(json["group_obj"]), + provider: json["provider"], + attributes: json["attributes"], + }; +} + +export function MicrosoftEntraProviderGroupToJSON(json: any): MicrosoftEntraProviderGroup { + return MicrosoftEntraProviderGroupToJSONTyped(json, false); +} + +export function MicrosoftEntraProviderGroupToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + microsoft_id: value["microsoftId"], + group: value["group"], + provider: value["provider"], + }; +} diff --git a/packages/client-ts/src/models/MicrosoftEntraProviderGroupRequest.ts b/packages/client-ts/src/models/MicrosoftEntraProviderGroupRequest.ts new file mode 100644 index 0000000000..e6623063a0 --- /dev/null +++ b/packages/client-ts/src/models/MicrosoftEntraProviderGroupRequest.ts @@ -0,0 +1,92 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * MicrosoftEntraProviderGroup Serializer + * @export + * @interface MicrosoftEntraProviderGroupRequest + */ +export interface MicrosoftEntraProviderGroupRequest { + /** + * + * @type {string} + * @memberof MicrosoftEntraProviderGroupRequest + */ + microsoftId: string; + /** + * + * @type {string} + * @memberof MicrosoftEntraProviderGroupRequest + */ + group: string; + /** + * + * @type {number} + * @memberof MicrosoftEntraProviderGroupRequest + */ + provider: number; +} + +/** + * Check if a given object implements the MicrosoftEntraProviderGroupRequest interface. + */ +export function instanceOfMicrosoftEntraProviderGroupRequest( + value: object, +): value is MicrosoftEntraProviderGroupRequest { + if (!("microsoftId" in value) || value["microsoftId"] === undefined) return false; + if (!("group" in value) || value["group"] === undefined) return false; + if (!("provider" in value) || value["provider"] === undefined) return false; + return true; +} + +export function MicrosoftEntraProviderGroupRequestFromJSON( + json: any, +): MicrosoftEntraProviderGroupRequest { + return MicrosoftEntraProviderGroupRequestFromJSONTyped(json, false); +} + +export function MicrosoftEntraProviderGroupRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): MicrosoftEntraProviderGroupRequest { + if (json == null) { + return json; + } + return { + microsoftId: json["microsoft_id"], + group: json["group"], + provider: json["provider"], + }; +} + +export function MicrosoftEntraProviderGroupRequestToJSON( + json: any, +): MicrosoftEntraProviderGroupRequest { + return MicrosoftEntraProviderGroupRequestToJSONTyped(json, false); +} + +export function MicrosoftEntraProviderGroupRequestToJSONTyped( + value?: MicrosoftEntraProviderGroupRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + microsoft_id: value["microsoftId"], + group: value["group"], + provider: value["provider"], + }; +} diff --git a/packages/client-ts/src/models/MicrosoftEntraProviderMapping.ts b/packages/client-ts/src/models/MicrosoftEntraProviderMapping.ts new file mode 100644 index 0000000000..b2f4bc90cb --- /dev/null +++ b/packages/client-ts/src/models/MicrosoftEntraProviderMapping.ts @@ -0,0 +1,130 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * MicrosoftEntraProviderMapping Serializer + * @export + * @interface MicrosoftEntraProviderMapping + */ +export interface MicrosoftEntraProviderMapping { + /** + * + * @type {string} + * @memberof MicrosoftEntraProviderMapping + */ + readonly pk: string; + /** + * Objects that are managed by authentik. These objects are created and updated automatically. This flag only indicates that an object can be overwritten by migrations. You can still modify the objects via the API, but expect changes to be overwritten in a later update. + * @type {string} + * @memberof MicrosoftEntraProviderMapping + */ + managed?: string | null; + /** + * + * @type {string} + * @memberof MicrosoftEntraProviderMapping + */ + name: string; + /** + * + * @type {string} + * @memberof MicrosoftEntraProviderMapping + */ + expression: string; + /** + * Get object's component so that we know how to edit the object + * @type {string} + * @memberof MicrosoftEntraProviderMapping + */ + readonly component: string; + /** + * Return object's verbose_name + * @type {string} + * @memberof MicrosoftEntraProviderMapping + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof MicrosoftEntraProviderMapping + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof MicrosoftEntraProviderMapping + */ + readonly metaModelName: string; +} + +/** + * Check if a given object implements the MicrosoftEntraProviderMapping interface. + */ +export function instanceOfMicrosoftEntraProviderMapping( + value: object, +): value is MicrosoftEntraProviderMapping { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("expression" in value) || value["expression"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + return true; +} + +export function MicrosoftEntraProviderMappingFromJSON(json: any): MicrosoftEntraProviderMapping { + return MicrosoftEntraProviderMappingFromJSONTyped(json, false); +} + +export function MicrosoftEntraProviderMappingFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): MicrosoftEntraProviderMapping { + if (json == null) { + return json; + } + return { + pk: json["pk"], + managed: json["managed"] == null ? undefined : json["managed"], + name: json["name"], + expression: json["expression"], + component: json["component"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + }; +} + +export function MicrosoftEntraProviderMappingToJSON(json: any): MicrosoftEntraProviderMapping { + return MicrosoftEntraProviderMappingToJSONTyped(json, false); +} + +export function MicrosoftEntraProviderMappingToJSONTyped( + value?: Omit< + MicrosoftEntraProviderMapping, + "pk" | "component" | "verbose_name" | "verbose_name_plural" | "meta_model_name" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + managed: value["managed"], + name: value["name"], + expression: value["expression"], + }; +} diff --git a/packages/client-ts/src/models/MicrosoftEntraProviderMappingRequest.ts b/packages/client-ts/src/models/MicrosoftEntraProviderMappingRequest.ts new file mode 100644 index 0000000000..1e8f900f3a --- /dev/null +++ b/packages/client-ts/src/models/MicrosoftEntraProviderMappingRequest.ts @@ -0,0 +1,91 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * MicrosoftEntraProviderMapping Serializer + * @export + * @interface MicrosoftEntraProviderMappingRequest + */ +export interface MicrosoftEntraProviderMappingRequest { + /** + * Objects that are managed by authentik. These objects are created and updated automatically. This flag only indicates that an object can be overwritten by migrations. You can still modify the objects via the API, but expect changes to be overwritten in a later update. + * @type {string} + * @memberof MicrosoftEntraProviderMappingRequest + */ + managed?: string | null; + /** + * + * @type {string} + * @memberof MicrosoftEntraProviderMappingRequest + */ + name: string; + /** + * + * @type {string} + * @memberof MicrosoftEntraProviderMappingRequest + */ + expression: string; +} + +/** + * Check if a given object implements the MicrosoftEntraProviderMappingRequest interface. + */ +export function instanceOfMicrosoftEntraProviderMappingRequest( + value: object, +): value is MicrosoftEntraProviderMappingRequest { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("expression" in value) || value["expression"] === undefined) return false; + return true; +} + +export function MicrosoftEntraProviderMappingRequestFromJSON( + json: any, +): MicrosoftEntraProviderMappingRequest { + return MicrosoftEntraProviderMappingRequestFromJSONTyped(json, false); +} + +export function MicrosoftEntraProviderMappingRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): MicrosoftEntraProviderMappingRequest { + if (json == null) { + return json; + } + return { + managed: json["managed"] == null ? undefined : json["managed"], + name: json["name"], + expression: json["expression"], + }; +} + +export function MicrosoftEntraProviderMappingRequestToJSON( + json: any, +): MicrosoftEntraProviderMappingRequest { + return MicrosoftEntraProviderMappingRequestToJSONTyped(json, false); +} + +export function MicrosoftEntraProviderMappingRequestToJSONTyped( + value?: MicrosoftEntraProviderMappingRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + managed: value["managed"], + name: value["name"], + expression: value["expression"], + }; +} diff --git a/packages/client-ts/src/models/MicrosoftEntraProviderRequest.ts b/packages/client-ts/src/models/MicrosoftEntraProviderRequest.ts new file mode 100644 index 0000000000..b31c2743c4 --- /dev/null +++ b/packages/client-ts/src/models/MicrosoftEntraProviderRequest.ts @@ -0,0 +1,185 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { OutgoingSyncDeleteAction } from "./OutgoingSyncDeleteAction"; +import { + OutgoingSyncDeleteActionFromJSON, + OutgoingSyncDeleteActionToJSON, +} from "./OutgoingSyncDeleteAction"; + +/** + * MicrosoftEntraProvider Serializer + * @export + * @interface MicrosoftEntraProviderRequest + */ +export interface MicrosoftEntraProviderRequest { + /** + * + * @type {string} + * @memberof MicrosoftEntraProviderRequest + */ + name: string; + /** + * + * @type {Array} + * @memberof MicrosoftEntraProviderRequest + */ + propertyMappings?: Array; + /** + * Property mappings used for group creation/updating. + * @type {Array} + * @memberof MicrosoftEntraProviderRequest + */ + propertyMappingsGroup?: Array; + /** + * + * @type {string} + * @memberof MicrosoftEntraProviderRequest + */ + clientId: string; + /** + * + * @type {string} + * @memberof MicrosoftEntraProviderRequest + */ + clientSecret: string; + /** + * + * @type {string} + * @memberof MicrosoftEntraProviderRequest + */ + tenantId: string; + /** + * + * @type {boolean} + * @memberof MicrosoftEntraProviderRequest + */ + excludeUsersServiceAccount?: boolean; + /** + * + * @type {string} + * @memberof MicrosoftEntraProviderRequest + */ + filterGroup?: string | null; + /** + * + * @type {OutgoingSyncDeleteAction} + * @memberof MicrosoftEntraProviderRequest + */ + userDeleteAction?: OutgoingSyncDeleteAction; + /** + * + * @type {OutgoingSyncDeleteAction} + * @memberof MicrosoftEntraProviderRequest + */ + groupDeleteAction?: OutgoingSyncDeleteAction; + /** + * Controls the number of objects synced in a single task + * @type {number} + * @memberof MicrosoftEntraProviderRequest + */ + syncPageSize?: number; + /** + * Timeout for synchronization of a single page + * @type {string} + * @memberof MicrosoftEntraProviderRequest + */ + syncPageTimeout?: string; + /** + * When enabled, provider will not modify or create objects in the remote system. + * @type {boolean} + * @memberof MicrosoftEntraProviderRequest + */ + dryRun?: boolean; +} + +/** + * Check if a given object implements the MicrosoftEntraProviderRequest interface. + */ +export function instanceOfMicrosoftEntraProviderRequest( + value: object, +): value is MicrosoftEntraProviderRequest { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("clientId" in value) || value["clientId"] === undefined) return false; + if (!("clientSecret" in value) || value["clientSecret"] === undefined) return false; + if (!("tenantId" in value) || value["tenantId"] === undefined) return false; + return true; +} + +export function MicrosoftEntraProviderRequestFromJSON(json: any): MicrosoftEntraProviderRequest { + return MicrosoftEntraProviderRequestFromJSONTyped(json, false); +} + +export function MicrosoftEntraProviderRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): MicrosoftEntraProviderRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + propertyMappings: json["property_mappings"] == null ? undefined : json["property_mappings"], + propertyMappingsGroup: + json["property_mappings_group"] == null ? undefined : json["property_mappings_group"], + clientId: json["client_id"], + clientSecret: json["client_secret"], + tenantId: json["tenant_id"], + excludeUsersServiceAccount: + json["exclude_users_service_account"] == null + ? undefined + : json["exclude_users_service_account"], + filterGroup: json["filter_group"] == null ? undefined : json["filter_group"], + userDeleteAction: + json["user_delete_action"] == null + ? undefined + : OutgoingSyncDeleteActionFromJSON(json["user_delete_action"]), + groupDeleteAction: + json["group_delete_action"] == null + ? undefined + : OutgoingSyncDeleteActionFromJSON(json["group_delete_action"]), + syncPageSize: json["sync_page_size"] == null ? undefined : json["sync_page_size"], + syncPageTimeout: json["sync_page_timeout"] == null ? undefined : json["sync_page_timeout"], + dryRun: json["dry_run"] == null ? undefined : json["dry_run"], + }; +} + +export function MicrosoftEntraProviderRequestToJSON(json: any): MicrosoftEntraProviderRequest { + return MicrosoftEntraProviderRequestToJSONTyped(json, false); +} + +export function MicrosoftEntraProviderRequestToJSONTyped( + value?: MicrosoftEntraProviderRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + property_mappings: value["propertyMappings"], + property_mappings_group: value["propertyMappingsGroup"], + client_id: value["clientId"], + client_secret: value["clientSecret"], + tenant_id: value["tenantId"], + exclude_users_service_account: value["excludeUsersServiceAccount"], + filter_group: value["filterGroup"], + user_delete_action: OutgoingSyncDeleteActionToJSON(value["userDeleteAction"]), + group_delete_action: OutgoingSyncDeleteActionToJSON(value["groupDeleteAction"]), + sync_page_size: value["syncPageSize"], + sync_page_timeout: value["syncPageTimeout"], + dry_run: value["dryRun"], + }; +} diff --git a/packages/client-ts/src/models/MicrosoftEntraProviderUser.ts b/packages/client-ts/src/models/MicrosoftEntraProviderUser.ts new file mode 100644 index 0000000000..c94c82b91a --- /dev/null +++ b/packages/client-ts/src/models/MicrosoftEntraProviderUser.ts @@ -0,0 +1,115 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { PartialUser } from "./PartialUser"; +import { PartialUserFromJSON } from "./PartialUser"; + +/** + * MicrosoftEntraProviderUser Serializer + * @export + * @interface MicrosoftEntraProviderUser + */ +export interface MicrosoftEntraProviderUser { + /** + * + * @type {string} + * @memberof MicrosoftEntraProviderUser + */ + readonly id: string; + /** + * + * @type {string} + * @memberof MicrosoftEntraProviderUser + */ + microsoftId: string; + /** + * + * @type {number} + * @memberof MicrosoftEntraProviderUser + */ + user: number; + /** + * + * @type {PartialUser} + * @memberof MicrosoftEntraProviderUser + */ + readonly userObj: PartialUser; + /** + * + * @type {number} + * @memberof MicrosoftEntraProviderUser + */ + provider: number; + /** + * + * @type {{ [key: string]: any; }} + * @memberof MicrosoftEntraProviderUser + */ + readonly attributes: { [key: string]: any }; +} + +/** + * Check if a given object implements the MicrosoftEntraProviderUser interface. + */ +export function instanceOfMicrosoftEntraProviderUser( + value: object, +): value is MicrosoftEntraProviderUser { + if (!("id" in value) || value["id"] === undefined) return false; + if (!("microsoftId" in value) || value["microsoftId"] === undefined) return false; + if (!("user" in value) || value["user"] === undefined) return false; + if (!("userObj" in value) || value["userObj"] === undefined) return false; + if (!("provider" in value) || value["provider"] === undefined) return false; + if (!("attributes" in value) || value["attributes"] === undefined) return false; + return true; +} + +export function MicrosoftEntraProviderUserFromJSON(json: any): MicrosoftEntraProviderUser { + return MicrosoftEntraProviderUserFromJSONTyped(json, false); +} + +export function MicrosoftEntraProviderUserFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): MicrosoftEntraProviderUser { + if (json == null) { + return json; + } + return { + id: json["id"], + microsoftId: json["microsoft_id"], + user: json["user"], + userObj: PartialUserFromJSON(json["user_obj"]), + provider: json["provider"], + attributes: json["attributes"], + }; +} + +export function MicrosoftEntraProviderUserToJSON(json: any): MicrosoftEntraProviderUser { + return MicrosoftEntraProviderUserToJSONTyped(json, false); +} + +export function MicrosoftEntraProviderUserToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + microsoft_id: value["microsoftId"], + user: value["user"], + provider: value["provider"], + }; +} diff --git a/packages/client-ts/src/models/MicrosoftEntraProviderUserRequest.ts b/packages/client-ts/src/models/MicrosoftEntraProviderUserRequest.ts new file mode 100644 index 0000000000..7208a8157b --- /dev/null +++ b/packages/client-ts/src/models/MicrosoftEntraProviderUserRequest.ts @@ -0,0 +1,92 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * MicrosoftEntraProviderUser Serializer + * @export + * @interface MicrosoftEntraProviderUserRequest + */ +export interface MicrosoftEntraProviderUserRequest { + /** + * + * @type {string} + * @memberof MicrosoftEntraProviderUserRequest + */ + microsoftId: string; + /** + * + * @type {number} + * @memberof MicrosoftEntraProviderUserRequest + */ + user: number; + /** + * + * @type {number} + * @memberof MicrosoftEntraProviderUserRequest + */ + provider: number; +} + +/** + * Check if a given object implements the MicrosoftEntraProviderUserRequest interface. + */ +export function instanceOfMicrosoftEntraProviderUserRequest( + value: object, +): value is MicrosoftEntraProviderUserRequest { + if (!("microsoftId" in value) || value["microsoftId"] === undefined) return false; + if (!("user" in value) || value["user"] === undefined) return false; + if (!("provider" in value) || value["provider"] === undefined) return false; + return true; +} + +export function MicrosoftEntraProviderUserRequestFromJSON( + json: any, +): MicrosoftEntraProviderUserRequest { + return MicrosoftEntraProviderUserRequestFromJSONTyped(json, false); +} + +export function MicrosoftEntraProviderUserRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): MicrosoftEntraProviderUserRequest { + if (json == null) { + return json; + } + return { + microsoftId: json["microsoft_id"], + user: json["user"], + provider: json["provider"], + }; +} + +export function MicrosoftEntraProviderUserRequestToJSON( + json: any, +): MicrosoftEntraProviderUserRequest { + return MicrosoftEntraProviderUserRequestToJSONTyped(json, false); +} + +export function MicrosoftEntraProviderUserRequestToJSONTyped( + value?: MicrosoftEntraProviderUserRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + microsoft_id: value["microsoftId"], + user: value["user"], + provider: value["provider"], + }; +} diff --git a/packages/client-ts/src/models/ModelEnum.ts b/packages/client-ts/src/models/ModelEnum.ts new file mode 100644 index 0000000000..60b0fed96a --- /dev/null +++ b/packages/client-ts/src/models/ModelEnum.ts @@ -0,0 +1,213 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const ModelEnum = { + AuthentikTenantsDomain: "authentik_tenants.domain", + AuthentikCoreGroup: "authentik_core.group", + AuthentikCoreUser: "authentik_core.user", + AuthentikCoreApplication: "authentik_core.application", + AuthentikCoreApplicationentitlement: "authentik_core.applicationentitlement", + AuthentikCoreToken: "authentik_core.token", + AuthentikCryptoCertificatekeypair: "authentik_crypto.certificatekeypair", + AuthentikEndpointsDeviceuserbinding: "authentik_endpoints.deviceuserbinding", + AuthentikEndpointsDeviceaccessgroup: "authentik_endpoints.deviceaccessgroup", + AuthentikEndpointsEndpointstage: "authentik_endpoints.endpointstage", + AuthentikEndpointsConnectorsAgentAgentconnector: + "authentik_endpoints_connectors_agent.agentconnector", + AuthentikEndpointsConnectorsAgentAgentdeviceuserbinding: + "authentik_endpoints_connectors_agent.agentdeviceuserbinding", + AuthentikEndpointsConnectorsAgentEnrollmenttoken: + "authentik_endpoints_connectors_agent.enrollmenttoken", + AuthentikEnterpriseLicense: "authentik_enterprise.license", + AuthentikEventsEvent: "authentik_events.event", + AuthentikEventsNotificationtransport: "authentik_events.notificationtransport", + AuthentikEventsNotification: "authentik_events.notification", + AuthentikEventsNotificationrule: "authentik_events.notificationrule", + AuthentikEventsNotificationwebhookmapping: "authentik_events.notificationwebhookmapping", + AuthentikFlowsFlow: "authentik_flows.flow", + AuthentikFlowsFlowstagebinding: "authentik_flows.flowstagebinding", + AuthentikOutpostsDockerserviceconnection: "authentik_outposts.dockerserviceconnection", + AuthentikOutpostsKubernetesserviceconnection: "authentik_outposts.kubernetesserviceconnection", + AuthentikOutpostsOutpost: "authentik_outposts.outpost", + AuthentikPoliciesDummyDummypolicy: "authentik_policies_dummy.dummypolicy", + AuthentikPoliciesEventMatcherEventmatcherpolicy: + "authentik_policies_event_matcher.eventmatcherpolicy", + AuthentikPoliciesExpiryPasswordexpirypolicy: "authentik_policies_expiry.passwordexpirypolicy", + AuthentikPoliciesExpressionExpressionpolicy: "authentik_policies_expression.expressionpolicy", + AuthentikPoliciesGeoipGeoippolicy: "authentik_policies_geoip.geoippolicy", + AuthentikPoliciesPasswordPasswordpolicy: "authentik_policies_password.passwordpolicy", + AuthentikPoliciesReputationReputationpolicy: "authentik_policies_reputation.reputationpolicy", + AuthentikPoliciesPolicybinding: "authentik_policies.policybinding", + AuthentikProvidersLdapLdapprovider: "authentik_providers_ldap.ldapprovider", + AuthentikProvidersOauth2Scopemapping: "authentik_providers_oauth2.scopemapping", + AuthentikProvidersOauth2Oauth2provider: "authentik_providers_oauth2.oauth2provider", + AuthentikProvidersProxyProxyprovider: "authentik_providers_proxy.proxyprovider", + AuthentikProvidersRacRacprovider: "authentik_providers_rac.racprovider", + AuthentikProvidersRacEndpoint: "authentik_providers_rac.endpoint", + AuthentikProvidersRacRacpropertymapping: "authentik_providers_rac.racpropertymapping", + AuthentikProvidersRadiusRadiusprovider: "authentik_providers_radius.radiusprovider", + AuthentikProvidersRadiusRadiusproviderpropertymapping: + "authentik_providers_radius.radiusproviderpropertymapping", + AuthentikProvidersSamlSamlprovider: "authentik_providers_saml.samlprovider", + AuthentikProvidersSamlSamlpropertymapping: "authentik_providers_saml.samlpropertymapping", + AuthentikProvidersScimScimprovider: "authentik_providers_scim.scimprovider", + AuthentikProvidersScimScimmapping: "authentik_providers_scim.scimmapping", + AuthentikRbacRole: "authentik_rbac.role", + AuthentikRbacInitialpermissions: "authentik_rbac.initialpermissions", + AuthentikSourcesKerberosKerberossource: "authentik_sources_kerberos.kerberossource", + AuthentikSourcesKerberosKerberossourcepropertymapping: + "authentik_sources_kerberos.kerberossourcepropertymapping", + AuthentikSourcesKerberosUserkerberossourceconnection: + "authentik_sources_kerberos.userkerberossourceconnection", + AuthentikSourcesKerberosGroupkerberossourceconnection: + "authentik_sources_kerberos.groupkerberossourceconnection", + AuthentikSourcesLdapLdapsource: "authentik_sources_ldap.ldapsource", + AuthentikSourcesLdapLdapsourcepropertymapping: + "authentik_sources_ldap.ldapsourcepropertymapping", + AuthentikSourcesLdapUserldapsourceconnection: "authentik_sources_ldap.userldapsourceconnection", + AuthentikSourcesLdapGroupldapsourceconnection: + "authentik_sources_ldap.groupldapsourceconnection", + AuthentikSourcesOauthOauthsource: "authentik_sources_oauth.oauthsource", + AuthentikSourcesOauthOauthsourcepropertymapping: + "authentik_sources_oauth.oauthsourcepropertymapping", + AuthentikSourcesOauthUseroauthsourceconnection: + "authentik_sources_oauth.useroauthsourceconnection", + AuthentikSourcesOauthGroupoauthsourceconnection: + "authentik_sources_oauth.groupoauthsourceconnection", + AuthentikSourcesPlexPlexsource: "authentik_sources_plex.plexsource", + AuthentikSourcesPlexPlexsourcepropertymapping: + "authentik_sources_plex.plexsourcepropertymapping", + AuthentikSourcesPlexUserplexsourceconnection: "authentik_sources_plex.userplexsourceconnection", + AuthentikSourcesPlexGroupplexsourceconnection: + "authentik_sources_plex.groupplexsourceconnection", + AuthentikSourcesSamlSamlsource: "authentik_sources_saml.samlsource", + AuthentikSourcesSamlSamlsourcepropertymapping: + "authentik_sources_saml.samlsourcepropertymapping", + AuthentikSourcesSamlUsersamlsourceconnection: "authentik_sources_saml.usersamlsourceconnection", + AuthentikSourcesSamlGroupsamlsourceconnection: + "authentik_sources_saml.groupsamlsourceconnection", + AuthentikSourcesScimScimsource: "authentik_sources_scim.scimsource", + AuthentikSourcesScimScimsourcepropertymapping: + "authentik_sources_scim.scimsourcepropertymapping", + AuthentikSourcesTelegramTelegramsource: "authentik_sources_telegram.telegramsource", + AuthentikSourcesTelegramTelegramsourcepropertymapping: + "authentik_sources_telegram.telegramsourcepropertymapping", + AuthentikSourcesTelegramUsertelegramsourceconnection: + "authentik_sources_telegram.usertelegramsourceconnection", + AuthentikSourcesTelegramGrouptelegramsourceconnection: + "authentik_sources_telegram.grouptelegramsourceconnection", + AuthentikStagesAuthenticatorDuoAuthenticatorduostage: + "authentik_stages_authenticator_duo.authenticatorduostage", + AuthentikStagesAuthenticatorDuoDuodevice: "authentik_stages_authenticator_duo.duodevice", + AuthentikStagesAuthenticatorEmailAuthenticatoremailstage: + "authentik_stages_authenticator_email.authenticatoremailstage", + AuthentikStagesAuthenticatorEmailEmaildevice: + "authentik_stages_authenticator_email.emaildevice", + AuthentikStagesAuthenticatorSmsAuthenticatorsmsstage: + "authentik_stages_authenticator_sms.authenticatorsmsstage", + AuthentikStagesAuthenticatorSmsSmsdevice: "authentik_stages_authenticator_sms.smsdevice", + AuthentikStagesAuthenticatorStaticAuthenticatorstaticstage: + "authentik_stages_authenticator_static.authenticatorstaticstage", + AuthentikStagesAuthenticatorStaticStaticdevice: + "authentik_stages_authenticator_static.staticdevice", + AuthentikStagesAuthenticatorTotpAuthenticatortotpstage: + "authentik_stages_authenticator_totp.authenticatortotpstage", + AuthentikStagesAuthenticatorTotpTotpdevice: "authentik_stages_authenticator_totp.totpdevice", + AuthentikStagesAuthenticatorValidateAuthenticatorvalidatestage: + "authentik_stages_authenticator_validate.authenticatorvalidatestage", + AuthentikStagesAuthenticatorWebauthnAuthenticatorwebauthnstage: + "authentik_stages_authenticator_webauthn.authenticatorwebauthnstage", + AuthentikStagesAuthenticatorWebauthnWebauthndevice: + "authentik_stages_authenticator_webauthn.webauthndevice", + AuthentikStagesCaptchaCaptchastage: "authentik_stages_captcha.captchastage", + AuthentikStagesConsentConsentstage: "authentik_stages_consent.consentstage", + AuthentikStagesDenyDenystage: "authentik_stages_deny.denystage", + AuthentikStagesDummyDummystage: "authentik_stages_dummy.dummystage", + AuthentikStagesEmailEmailstage: "authentik_stages_email.emailstage", + AuthentikStagesIdentificationIdentificationstage: + "authentik_stages_identification.identificationstage", + AuthentikStagesInvitationInvitationstage: "authentik_stages_invitation.invitationstage", + AuthentikStagesInvitationInvitation: "authentik_stages_invitation.invitation", + AuthentikStagesPasswordPasswordstage: "authentik_stages_password.passwordstage", + AuthentikStagesPromptPrompt: "authentik_stages_prompt.prompt", + AuthentikStagesPromptPromptstage: "authentik_stages_prompt.promptstage", + AuthentikStagesRedirectRedirectstage: "authentik_stages_redirect.redirectstage", + AuthentikStagesUserDeleteUserdeletestage: "authentik_stages_user_delete.userdeletestage", + AuthentikStagesUserLoginUserloginstage: "authentik_stages_user_login.userloginstage", + AuthentikStagesUserLogoutUserlogoutstage: "authentik_stages_user_logout.userlogoutstage", + AuthentikStagesUserWriteUserwritestage: "authentik_stages_user_write.userwritestage", + AuthentikTasksSchedulesSchedule: "authentik_tasks_schedules.schedule", + AuthentikBrandsBrand: "authentik_brands.brand", + AuthentikBlueprintsBlueprintinstance: "authentik_blueprints.blueprintinstance", + AuthentikEndpointsConnectorsFleetFleetconnector: + "authentik_endpoints_connectors_fleet.fleetconnector", + AuthentikEndpointsConnectorsGoogleChromeGooglechromeconnector: + "authentik_endpoints_connectors_google_chrome.googlechromeconnector", + AuthentikLifecycleLifecyclerule: "authentik_lifecycle.lifecyclerule", + AuthentikLifecycleLifecycleiteration: "authentik_lifecycle.lifecycleiteration", + AuthentikLifecycleReview: "authentik_lifecycle.review", + AuthentikPoliciesUniquePasswordUniquepasswordpolicy: + "authentik_policies_unique_password.uniquepasswordpolicy", + AuthentikProvidersGoogleWorkspaceGoogleworkspaceprovider: + "authentik_providers_google_workspace.googleworkspaceprovider", + AuthentikProvidersGoogleWorkspaceGoogleworkspaceprovidermapping: + "authentik_providers_google_workspace.googleworkspaceprovidermapping", + AuthentikProvidersMicrosoftEntraMicrosoftentraprovider: + "authentik_providers_microsoft_entra.microsoftentraprovider", + AuthentikProvidersMicrosoftEntraMicrosoftentraprovidermapping: + "authentik_providers_microsoft_entra.microsoftentraprovidermapping", + AuthentikProvidersSsfSsfprovider: "authentik_providers_ssf.ssfprovider", + AuthentikProvidersWsFederationWsfederationprovider: + "authentik_providers_ws_federation.wsfederationprovider", + AuthentikReportsDataexport: "authentik_reports.dataexport", + AuthentikStagesAccountLockdownAccountlockdownstage: + "authentik_stages_account_lockdown.accountlockdownstage", + AuthentikStagesAuthenticatorEndpointGdtcAuthenticatorendpointgdtcstage: + "authentik_stages_authenticator_endpoint_gdtc.authenticatorendpointgdtcstage", + AuthentikStagesMtlsMutualtlsstage: "authentik_stages_mtls.mutualtlsstage", + AuthentikStagesSourceSourcestage: "authentik_stages_source.sourcestage", + UnknownDefaultOpenApi: "11184809", +} as const; +export type ModelEnum = (typeof ModelEnum)[keyof typeof ModelEnum]; + +export function instanceOfModelEnum(value: any): boolean { + for (const key in ModelEnum) { + if (Object.prototype.hasOwnProperty.call(ModelEnum, key)) { + if (ModelEnum[key as keyof typeof ModelEnum] === value) { + return true; + } + } + } + return false; +} + +export function ModelEnumFromJSON(json: any): ModelEnum { + return ModelEnumFromJSONTyped(json, false); +} + +export function ModelEnumFromJSONTyped(json: any, ignoreDiscriminator: boolean): ModelEnum { + return json as ModelEnum; +} + +export function ModelEnumToJSON(value?: ModelEnum | null): any { + return value as any; +} + +export function ModelEnumToJSONTyped(value: any, ignoreDiscriminator: boolean): ModelEnum { + return value as ModelEnum; +} diff --git a/packages/client-ts/src/models/ModelRequest.ts b/packages/client-ts/src/models/ModelRequest.ts new file mode 100644 index 0000000000..04fecfa431 --- /dev/null +++ b/packages/client-ts/src/models/ModelRequest.ts @@ -0,0 +1,197 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { GoogleWorkspaceProviderRequest } from "./GoogleWorkspaceProviderRequest"; +import { + GoogleWorkspaceProviderRequestFromJSONTyped, + GoogleWorkspaceProviderRequestToJSON, +} from "./GoogleWorkspaceProviderRequest"; +import type { LDAPProviderRequest } from "./LDAPProviderRequest"; +import { LDAPProviderRequestFromJSONTyped, LDAPProviderRequestToJSON } from "./LDAPProviderRequest"; +import type { MicrosoftEntraProviderRequest } from "./MicrosoftEntraProviderRequest"; +import { + MicrosoftEntraProviderRequestFromJSONTyped, + MicrosoftEntraProviderRequestToJSON, +} from "./MicrosoftEntraProviderRequest"; +import type { OAuth2ProviderRequest } from "./OAuth2ProviderRequest"; +import { + OAuth2ProviderRequestFromJSONTyped, + OAuth2ProviderRequestToJSON, +} from "./OAuth2ProviderRequest"; +import type { ProxyProviderRequest } from "./ProxyProviderRequest"; +import { + ProxyProviderRequestFromJSONTyped, + ProxyProviderRequestToJSON, +} from "./ProxyProviderRequest"; +import type { RACProviderRequest } from "./RACProviderRequest"; +import { RACProviderRequestFromJSONTyped, RACProviderRequestToJSON } from "./RACProviderRequest"; +import type { RadiusProviderRequest } from "./RadiusProviderRequest"; +import { + RadiusProviderRequestFromJSONTyped, + RadiusProviderRequestToJSON, +} from "./RadiusProviderRequest"; +import type { SAMLProviderRequest } from "./SAMLProviderRequest"; +import { SAMLProviderRequestFromJSONTyped, SAMLProviderRequestToJSON } from "./SAMLProviderRequest"; +import type { SCIMProviderRequest } from "./SCIMProviderRequest"; +import { SCIMProviderRequestFromJSONTyped, SCIMProviderRequestToJSON } from "./SCIMProviderRequest"; +import type { SSFProviderRequest } from "./SSFProviderRequest"; +import { SSFProviderRequestFromJSONTyped, SSFProviderRequestToJSON } from "./SSFProviderRequest"; +import type { WSFederationProviderRequest } from "./WSFederationProviderRequest"; +import { + WSFederationProviderRequestFromJSONTyped, + WSFederationProviderRequestToJSON, +} from "./WSFederationProviderRequest"; + +/** + * @type ModelRequest + * + * @export + */ +export type ModelRequest = + | ({ + providerModel: "authentik_providers_google_workspace.googleworkspaceprovider"; + } & GoogleWorkspaceProviderRequest) + | ({ providerModel: "authentik_providers_ldap.ldapprovider" } & LDAPProviderRequest) + | ({ + providerModel: "authentik_providers_microsoft_entra.microsoftentraprovider"; + } & MicrosoftEntraProviderRequest) + | ({ providerModel: "authentik_providers_oauth2.oauth2provider" } & OAuth2ProviderRequest) + | ({ providerModel: "authentik_providers_proxy.proxyprovider" } & ProxyProviderRequest) + | ({ providerModel: "authentik_providers_rac.racprovider" } & RACProviderRequest) + | ({ providerModel: "authentik_providers_radius.radiusprovider" } & RadiusProviderRequest) + | ({ providerModel: "authentik_providers_saml.samlprovider" } & SAMLProviderRequest) + | ({ providerModel: "authentik_providers_scim.scimprovider" } & SCIMProviderRequest) + | ({ providerModel: "authentik_providers_ssf.ssfprovider" } & SSFProviderRequest) + | ({ + providerModel: "authentik_providers_ws_federation.wsfederationprovider"; + } & WSFederationProviderRequest); + +export function ModelRequestFromJSON(json: any): ModelRequest { + return ModelRequestFromJSONTyped(json, false); +} + +export function ModelRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): ModelRequest { + if (json == null) { + return json; + } + switch (json["provider_model"]) { + case "authentik_providers_google_workspace.googleworkspaceprovider": + return Object.assign({}, GoogleWorkspaceProviderRequestFromJSONTyped(json, true), { + providerModel: "authentik_providers_google_workspace.googleworkspaceprovider", + } as const); + case "authentik_providers_ldap.ldapprovider": + return Object.assign({}, LDAPProviderRequestFromJSONTyped(json, true), { + providerModel: "authentik_providers_ldap.ldapprovider", + } as const); + case "authentik_providers_microsoft_entra.microsoftentraprovider": + return Object.assign({}, MicrosoftEntraProviderRequestFromJSONTyped(json, true), { + providerModel: "authentik_providers_microsoft_entra.microsoftentraprovider", + } as const); + case "authentik_providers_oauth2.oauth2provider": + return Object.assign({}, OAuth2ProviderRequestFromJSONTyped(json, true), { + providerModel: "authentik_providers_oauth2.oauth2provider", + } as const); + case "authentik_providers_proxy.proxyprovider": + return Object.assign({}, ProxyProviderRequestFromJSONTyped(json, true), { + providerModel: "authentik_providers_proxy.proxyprovider", + } as const); + case "authentik_providers_rac.racprovider": + return Object.assign({}, RACProviderRequestFromJSONTyped(json, true), { + providerModel: "authentik_providers_rac.racprovider", + } as const); + case "authentik_providers_radius.radiusprovider": + return Object.assign({}, RadiusProviderRequestFromJSONTyped(json, true), { + providerModel: "authentik_providers_radius.radiusprovider", + } as const); + case "authentik_providers_saml.samlprovider": + return Object.assign({}, SAMLProviderRequestFromJSONTyped(json, true), { + providerModel: "authentik_providers_saml.samlprovider", + } as const); + case "authentik_providers_scim.scimprovider": + return Object.assign({}, SCIMProviderRequestFromJSONTyped(json, true), { + providerModel: "authentik_providers_scim.scimprovider", + } as const); + case "authentik_providers_ssf.ssfprovider": + return Object.assign({}, SSFProviderRequestFromJSONTyped(json, true), { + providerModel: "authentik_providers_ssf.ssfprovider", + } as const); + case "authentik_providers_ws_federation.wsfederationprovider": + return Object.assign({}, WSFederationProviderRequestFromJSONTyped(json, true), { + providerModel: "authentik_providers_ws_federation.wsfederationprovider", + } as const); + default: + return json; + } +} + +export function ModelRequestToJSON(json: any): any { + return ModelRequestToJSONTyped(json, false); +} + +export function ModelRequestToJSONTyped( + value?: ModelRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + switch (value["providerModel"]) { + case "authentik_providers_google_workspace.googleworkspaceprovider": + return Object.assign({}, GoogleWorkspaceProviderRequestToJSON(value), { + providerModel: "authentik_providers_google_workspace.googleworkspaceprovider", + } as const); + case "authentik_providers_ldap.ldapprovider": + return Object.assign({}, LDAPProviderRequestToJSON(value), { + providerModel: "authentik_providers_ldap.ldapprovider", + } as const); + case "authentik_providers_microsoft_entra.microsoftentraprovider": + return Object.assign({}, MicrosoftEntraProviderRequestToJSON(value), { + providerModel: "authentik_providers_microsoft_entra.microsoftentraprovider", + } as const); + case "authentik_providers_oauth2.oauth2provider": + return Object.assign({}, OAuth2ProviderRequestToJSON(value), { + providerModel: "authentik_providers_oauth2.oauth2provider", + } as const); + case "authentik_providers_proxy.proxyprovider": + return Object.assign({}, ProxyProviderRequestToJSON(value), { + providerModel: "authentik_providers_proxy.proxyprovider", + } as const); + case "authentik_providers_rac.racprovider": + return Object.assign({}, RACProviderRequestToJSON(value), { + providerModel: "authentik_providers_rac.racprovider", + } as const); + case "authentik_providers_radius.radiusprovider": + return Object.assign({}, RadiusProviderRequestToJSON(value), { + providerModel: "authentik_providers_radius.radiusprovider", + } as const); + case "authentik_providers_saml.samlprovider": + return Object.assign({}, SAMLProviderRequestToJSON(value), { + providerModel: "authentik_providers_saml.samlprovider", + } as const); + case "authentik_providers_scim.scimprovider": + return Object.assign({}, SCIMProviderRequestToJSON(value), { + providerModel: "authentik_providers_scim.scimprovider", + } as const); + case "authentik_providers_ssf.ssfprovider": + return Object.assign({}, SSFProviderRequestToJSON(value), { + providerModel: "authentik_providers_ssf.ssfprovider", + } as const); + case "authentik_providers_ws_federation.wsfederationprovider": + return Object.assign({}, WSFederationProviderRequestToJSON(value), { + providerModel: "authentik_providers_ws_federation.wsfederationprovider", + } as const); + default: + return value; + } +} diff --git a/packages/client-ts/src/models/MutualTLSStage.ts b/packages/client-ts/src/models/MutualTLSStage.ts new file mode 100644 index 0000000000..d7e229e0a1 --- /dev/null +++ b/packages/client-ts/src/models/MutualTLSStage.ts @@ -0,0 +1,164 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { CertAttributeEnum } from "./CertAttributeEnum"; +import { CertAttributeEnumFromJSON, CertAttributeEnumToJSON } from "./CertAttributeEnum"; +import type { FlowSet } from "./FlowSet"; +import { FlowSetFromJSON } from "./FlowSet"; +import type { StageModeEnum } from "./StageModeEnum"; +import { StageModeEnumFromJSON, StageModeEnumToJSON } from "./StageModeEnum"; +import type { UserAttributeEnum } from "./UserAttributeEnum"; +import { UserAttributeEnumFromJSON, UserAttributeEnumToJSON } from "./UserAttributeEnum"; + +/** + * MutualTLSStage Serializer + * @export + * @interface MutualTLSStage + */ +export interface MutualTLSStage { + /** + * + * @type {string} + * @memberof MutualTLSStage + */ + readonly pk: string; + /** + * + * @type {string} + * @memberof MutualTLSStage + */ + name: string; + /** + * Get object type so that we know how to edit the object + * @type {string} + * @memberof MutualTLSStage + */ + readonly component: string; + /** + * Return object's verbose_name + * @type {string} + * @memberof MutualTLSStage + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof MutualTLSStage + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof MutualTLSStage + */ + readonly metaModelName: string; + /** + * + * @type {Array} + * @memberof MutualTLSStage + */ + readonly flowSet: Array; + /** + * + * @type {StageModeEnum} + * @memberof MutualTLSStage + */ + mode: StageModeEnum; + /** + * Configure certificate authorities to validate the certificate against. This option has a higher priority than the `client_certificate` option on `Brand`. + * @type {Array} + * @memberof MutualTLSStage + */ + certificateAuthorities?: Array; + /** + * + * @type {CertAttributeEnum} + * @memberof MutualTLSStage + */ + certAttribute: CertAttributeEnum; + /** + * + * @type {UserAttributeEnum} + * @memberof MutualTLSStage + */ + userAttribute: UserAttributeEnum; +} + +/** + * Check if a given object implements the MutualTLSStage interface. + */ +export function instanceOfMutualTLSStage(value: object): value is MutualTLSStage { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + if (!("flowSet" in value) || value["flowSet"] === undefined) return false; + if (!("mode" in value) || value["mode"] === undefined) return false; + if (!("certAttribute" in value) || value["certAttribute"] === undefined) return false; + if (!("userAttribute" in value) || value["userAttribute"] === undefined) return false; + return true; +} + +export function MutualTLSStageFromJSON(json: any): MutualTLSStage { + return MutualTLSStageFromJSONTyped(json, false); +} + +export function MutualTLSStageFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): MutualTLSStage { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + component: json["component"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + flowSet: (json["flow_set"] as Array).map(FlowSetFromJSON), + mode: StageModeEnumFromJSON(json["mode"]), + certificateAuthorities: + json["certificate_authorities"] == null ? undefined : json["certificate_authorities"], + certAttribute: CertAttributeEnumFromJSON(json["cert_attribute"]), + userAttribute: UserAttributeEnumFromJSON(json["user_attribute"]), + }; +} + +export function MutualTLSStageToJSON(json: any): MutualTLSStage { + return MutualTLSStageToJSONTyped(json, false); +} + +export function MutualTLSStageToJSONTyped( + value?: Omit< + MutualTLSStage, + "pk" | "component" | "verbose_name" | "verbose_name_plural" | "meta_model_name" | "flow_set" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + mode: StageModeEnumToJSON(value["mode"]), + certificate_authorities: value["certificateAuthorities"], + cert_attribute: CertAttributeEnumToJSON(value["certAttribute"]), + user_attribute: UserAttributeEnumToJSON(value["userAttribute"]), + }; +} diff --git a/packages/client-ts/src/models/MutualTLSStageRequest.ts b/packages/client-ts/src/models/MutualTLSStageRequest.ts new file mode 100644 index 0000000000..b045f378be --- /dev/null +++ b/packages/client-ts/src/models/MutualTLSStageRequest.ts @@ -0,0 +1,111 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { CertAttributeEnum } from "./CertAttributeEnum"; +import { CertAttributeEnumFromJSON, CertAttributeEnumToJSON } from "./CertAttributeEnum"; +import type { StageModeEnum } from "./StageModeEnum"; +import { StageModeEnumFromJSON, StageModeEnumToJSON } from "./StageModeEnum"; +import type { UserAttributeEnum } from "./UserAttributeEnum"; +import { UserAttributeEnumFromJSON, UserAttributeEnumToJSON } from "./UserAttributeEnum"; + +/** + * MutualTLSStage Serializer + * @export + * @interface MutualTLSStageRequest + */ +export interface MutualTLSStageRequest { + /** + * + * @type {string} + * @memberof MutualTLSStageRequest + */ + name: string; + /** + * + * @type {StageModeEnum} + * @memberof MutualTLSStageRequest + */ + mode: StageModeEnum; + /** + * Configure certificate authorities to validate the certificate against. This option has a higher priority than the `client_certificate` option on `Brand`. + * @type {Array} + * @memberof MutualTLSStageRequest + */ + certificateAuthorities?: Array; + /** + * + * @type {CertAttributeEnum} + * @memberof MutualTLSStageRequest + */ + certAttribute: CertAttributeEnum; + /** + * + * @type {UserAttributeEnum} + * @memberof MutualTLSStageRequest + */ + userAttribute: UserAttributeEnum; +} + +/** + * Check if a given object implements the MutualTLSStageRequest interface. + */ +export function instanceOfMutualTLSStageRequest(value: object): value is MutualTLSStageRequest { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("mode" in value) || value["mode"] === undefined) return false; + if (!("certAttribute" in value) || value["certAttribute"] === undefined) return false; + if (!("userAttribute" in value) || value["userAttribute"] === undefined) return false; + return true; +} + +export function MutualTLSStageRequestFromJSON(json: any): MutualTLSStageRequest { + return MutualTLSStageRequestFromJSONTyped(json, false); +} + +export function MutualTLSStageRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): MutualTLSStageRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + mode: StageModeEnumFromJSON(json["mode"]), + certificateAuthorities: + json["certificate_authorities"] == null ? undefined : json["certificate_authorities"], + certAttribute: CertAttributeEnumFromJSON(json["cert_attribute"]), + userAttribute: UserAttributeEnumFromJSON(json["user_attribute"]), + }; +} + +export function MutualTLSStageRequestToJSON(json: any): MutualTLSStageRequest { + return MutualTLSStageRequestToJSONTyped(json, false); +} + +export function MutualTLSStageRequestToJSONTyped( + value?: MutualTLSStageRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + mode: StageModeEnumToJSON(value["mode"]), + certificate_authorities: value["certificateAuthorities"], + cert_attribute: CertAttributeEnumToJSON(value["certAttribute"]), + user_attribute: UserAttributeEnumToJSON(value["userAttribute"]), + }; +} diff --git a/packages/client-ts/src/models/NativeLogoutChallenge.ts b/packages/client-ts/src/models/NativeLogoutChallenge.ts new file mode 100644 index 0000000000..ac03207534 --- /dev/null +++ b/packages/client-ts/src/models/NativeLogoutChallenge.ts @@ -0,0 +1,157 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { ContextualFlowInfo } from "./ContextualFlowInfo"; +import { ContextualFlowInfoFromJSON, ContextualFlowInfoToJSON } from "./ContextualFlowInfo"; +import type { ErrorDetail } from "./ErrorDetail"; +import type { SAMLBindingsEnum } from "./SAMLBindingsEnum"; +import { SAMLBindingsEnumFromJSON, SAMLBindingsEnumToJSON } from "./SAMLBindingsEnum"; + +/** + * Challenge for native browser logout + * @export + * @interface NativeLogoutChallenge + */ +export interface NativeLogoutChallenge { + /** + * + * @type {ContextualFlowInfo} + * @memberof NativeLogoutChallenge + */ + flowInfo?: ContextualFlowInfo; + /** + * + * @type {string} + * @memberof NativeLogoutChallenge + */ + component?: string; + /** + * + * @type {{ [key: string]: Array; }} + * @memberof NativeLogoutChallenge + */ + responseErrors?: { [key: string]: Array }; + /** + * + * @type {string} + * @memberof NativeLogoutChallenge + */ + providerName?: string; + /** + * + * @type {boolean} + * @memberof NativeLogoutChallenge + */ + isComplete?: boolean; + /** + * + * @type {string} + * @memberof NativeLogoutChallenge + */ + postUrl?: string; + /** + * + * @type {string} + * @memberof NativeLogoutChallenge + */ + redirectUrl?: string; + /** + * + * @type {SAMLBindingsEnum} + * @memberof NativeLogoutChallenge + */ + samlBinding?: SAMLBindingsEnum; + /** + * + * @type {string} + * @memberof NativeLogoutChallenge + */ + samlRequest?: string; + /** + * + * @type {string} + * @memberof NativeLogoutChallenge + */ + samlResponse?: string; + /** + * + * @type {string} + * @memberof NativeLogoutChallenge + */ + samlRelayState?: string; +} + +/** + * Check if a given object implements the NativeLogoutChallenge interface. + */ +export function instanceOfNativeLogoutChallenge(value: object): value is NativeLogoutChallenge { + return true; +} + +export function NativeLogoutChallengeFromJSON(json: any): NativeLogoutChallenge { + return NativeLogoutChallengeFromJSONTyped(json, false); +} + +export function NativeLogoutChallengeFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): NativeLogoutChallenge { + if (json == null) { + return json; + } + return { + flowInfo: + json["flow_info"] == null ? undefined : ContextualFlowInfoFromJSON(json["flow_info"]), + component: json["component"] == null ? undefined : json["component"], + responseErrors: json["response_errors"] == null ? undefined : json["response_errors"], + providerName: json["provider_name"] == null ? undefined : json["provider_name"], + isComplete: json["is_complete"] == null ? undefined : json["is_complete"], + postUrl: json["post_url"] == null ? undefined : json["post_url"], + redirectUrl: json["redirect_url"] == null ? undefined : json["redirect_url"], + samlBinding: + json["saml_binding"] == null + ? undefined + : SAMLBindingsEnumFromJSON(json["saml_binding"]), + samlRequest: json["saml_request"] == null ? undefined : json["saml_request"], + samlResponse: json["saml_response"] == null ? undefined : json["saml_response"], + samlRelayState: json["saml_relay_state"] == null ? undefined : json["saml_relay_state"], + }; +} + +export function NativeLogoutChallengeToJSON(json: any): NativeLogoutChallenge { + return NativeLogoutChallengeToJSONTyped(json, false); +} + +export function NativeLogoutChallengeToJSONTyped( + value?: NativeLogoutChallenge | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + flow_info: ContextualFlowInfoToJSON(value["flowInfo"]), + component: value["component"], + response_errors: value["responseErrors"], + provider_name: value["providerName"], + is_complete: value["isComplete"], + post_url: value["postUrl"], + redirect_url: value["redirectUrl"], + saml_binding: SAMLBindingsEnumToJSON(value["samlBinding"]), + saml_request: value["samlRequest"], + saml_response: value["samlResponse"], + saml_relay_state: value["samlRelayState"], + }; +} diff --git a/packages/client-ts/src/models/NativeLogoutChallengeResponseRequest.ts b/packages/client-ts/src/models/NativeLogoutChallengeResponseRequest.ts new file mode 100644 index 0000000000..42fc180a50 --- /dev/null +++ b/packages/client-ts/src/models/NativeLogoutChallengeResponseRequest.ts @@ -0,0 +1,73 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Response for native browser logout + * @export + * @interface NativeLogoutChallengeResponseRequest + */ +export interface NativeLogoutChallengeResponseRequest { + /** + * + * @type {string} + * @memberof NativeLogoutChallengeResponseRequest + */ + component?: string; +} + +/** + * Check if a given object implements the NativeLogoutChallengeResponseRequest interface. + */ +export function instanceOfNativeLogoutChallengeResponseRequest( + value: object, +): value is NativeLogoutChallengeResponseRequest { + return true; +} + +export function NativeLogoutChallengeResponseRequestFromJSON( + json: any, +): NativeLogoutChallengeResponseRequest { + return NativeLogoutChallengeResponseRequestFromJSONTyped(json, false); +} + +export function NativeLogoutChallengeResponseRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): NativeLogoutChallengeResponseRequest { + if (json == null) { + return json; + } + return { + component: json["component"] == null ? undefined : json["component"], + }; +} + +export function NativeLogoutChallengeResponseRequestToJSON( + json: any, +): NativeLogoutChallengeResponseRequest { + return NativeLogoutChallengeResponseRequestToJSONTyped(json, false); +} + +export function NativeLogoutChallengeResponseRequestToJSONTyped( + value?: NativeLogoutChallengeResponseRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + component: value["component"], + }; +} diff --git a/packages/client-ts/src/models/Network.ts b/packages/client-ts/src/models/Network.ts new file mode 100644 index 0000000000..e30fe02a94 --- /dev/null +++ b/packages/client-ts/src/models/Network.ts @@ -0,0 +1,93 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { NetworkInterface } from "./NetworkInterface"; +import { NetworkInterfaceFromJSON, NetworkInterfaceToJSON } from "./NetworkInterface"; + +/** + * + * @export + * @interface Network + */ +export interface Network { + /** + * + * @type {string} + * @memberof Network + */ + hostname: string; + /** + * + * @type {boolean} + * @memberof Network + */ + firewallEnabled?: boolean; + /** + * + * @type {Array} + * @memberof Network + */ + interfaces: Array; + /** + * + * @type {string} + * @memberof Network + */ + gateway?: string; +} + +/** + * Check if a given object implements the Network interface. + */ +export function instanceOfNetwork(value: object): value is Network { + if (!("hostname" in value) || value["hostname"] === undefined) return false; + if (!("interfaces" in value) || value["interfaces"] === undefined) return false; + return true; +} + +export function NetworkFromJSON(json: any): Network { + return NetworkFromJSONTyped(json, false); +} + +export function NetworkFromJSONTyped(json: any, ignoreDiscriminator: boolean): Network { + if (json == null) { + return json; + } + return { + hostname: json["hostname"], + firewallEnabled: json["firewall_enabled"] == null ? undefined : json["firewall_enabled"], + interfaces: (json["interfaces"] as Array).map(NetworkInterfaceFromJSON), + gateway: json["gateway"] == null ? undefined : json["gateway"], + }; +} + +export function NetworkToJSON(json: any): Network { + return NetworkToJSONTyped(json, false); +} + +export function NetworkToJSONTyped( + value?: Network | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + hostname: value["hostname"], + firewall_enabled: value["firewallEnabled"], + interfaces: (value["interfaces"] as Array).map(NetworkInterfaceToJSON), + gateway: value["gateway"], + }; +} diff --git a/packages/client-ts/src/models/NetworkBindingEnum.ts b/packages/client-ts/src/models/NetworkBindingEnum.ts new file mode 100644 index 0000000000..6a252ea4d5 --- /dev/null +++ b/packages/client-ts/src/models/NetworkBindingEnum.ts @@ -0,0 +1,59 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const NetworkBindingEnum = { + NoBinding: "no_binding", + BindAsn: "bind_asn", + BindAsnNetwork: "bind_asn_network", + BindAsnNetworkIp: "bind_asn_network_ip", + UnknownDefaultOpenApi: "11184809", +} as const; +export type NetworkBindingEnum = (typeof NetworkBindingEnum)[keyof typeof NetworkBindingEnum]; + +export function instanceOfNetworkBindingEnum(value: any): boolean { + for (const key in NetworkBindingEnum) { + if (Object.prototype.hasOwnProperty.call(NetworkBindingEnum, key)) { + if (NetworkBindingEnum[key as keyof typeof NetworkBindingEnum] === value) { + return true; + } + } + } + return false; +} + +export function NetworkBindingEnumFromJSON(json: any): NetworkBindingEnum { + return NetworkBindingEnumFromJSONTyped(json, false); +} + +export function NetworkBindingEnumFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): NetworkBindingEnum { + return json as NetworkBindingEnum; +} + +export function NetworkBindingEnumToJSON(value?: NetworkBindingEnum | null): any { + return value as any; +} + +export function NetworkBindingEnumToJSONTyped( + value: any, + ignoreDiscriminator: boolean, +): NetworkBindingEnum { + return value as NetworkBindingEnum; +} diff --git a/packages/client-ts/src/models/NetworkInterface.ts b/packages/client-ts/src/models/NetworkInterface.ts new file mode 100644 index 0000000000..6837a81312 --- /dev/null +++ b/packages/client-ts/src/models/NetworkInterface.ts @@ -0,0 +1,93 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + * @interface NetworkInterface + */ +export interface NetworkInterface { + /** + * + * @type {string} + * @memberof NetworkInterface + */ + name: string; + /** + * + * @type {string} + * @memberof NetworkInterface + */ + hardwareAddress: string; + /** + * + * @type {Array} + * @memberof NetworkInterface + */ + ipAddresses?: Array; + /** + * + * @type {Array} + * @memberof NetworkInterface + */ + dnsServers?: Array; +} + +/** + * Check if a given object implements the NetworkInterface interface. + */ +export function instanceOfNetworkInterface(value: object): value is NetworkInterface { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("hardwareAddress" in value) || value["hardwareAddress"] === undefined) return false; + return true; +} + +export function NetworkInterfaceFromJSON(json: any): NetworkInterface { + return NetworkInterfaceFromJSONTyped(json, false); +} + +export function NetworkInterfaceFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): NetworkInterface { + if (json == null) { + return json; + } + return { + name: json["name"], + hardwareAddress: json["hardware_address"], + ipAddresses: json["ip_addresses"] == null ? undefined : json["ip_addresses"], + dnsServers: json["dns_servers"] == null ? undefined : json["dns_servers"], + }; +} + +export function NetworkInterfaceToJSON(json: any): NetworkInterface { + return NetworkInterfaceToJSONTyped(json, false); +} + +export function NetworkInterfaceToJSONTyped( + value?: NetworkInterface | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + hardware_address: value["hardwareAddress"], + ip_addresses: value["ipAddresses"], + dns_servers: value["dnsServers"], + }; +} diff --git a/packages/client-ts/src/models/NetworkInterfaceRequest.ts b/packages/client-ts/src/models/NetworkInterfaceRequest.ts new file mode 100644 index 0000000000..da3f3daebd --- /dev/null +++ b/packages/client-ts/src/models/NetworkInterfaceRequest.ts @@ -0,0 +1,93 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + * @interface NetworkInterfaceRequest + */ +export interface NetworkInterfaceRequest { + /** + * + * @type {string} + * @memberof NetworkInterfaceRequest + */ + name: string; + /** + * + * @type {string} + * @memberof NetworkInterfaceRequest + */ + hardwareAddress: string; + /** + * + * @type {Array} + * @memberof NetworkInterfaceRequest + */ + ipAddresses?: Array; + /** + * + * @type {Array} + * @memberof NetworkInterfaceRequest + */ + dnsServers?: Array; +} + +/** + * Check if a given object implements the NetworkInterfaceRequest interface. + */ +export function instanceOfNetworkInterfaceRequest(value: object): value is NetworkInterfaceRequest { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("hardwareAddress" in value) || value["hardwareAddress"] === undefined) return false; + return true; +} + +export function NetworkInterfaceRequestFromJSON(json: any): NetworkInterfaceRequest { + return NetworkInterfaceRequestFromJSONTyped(json, false); +} + +export function NetworkInterfaceRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): NetworkInterfaceRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + hardwareAddress: json["hardware_address"], + ipAddresses: json["ip_addresses"] == null ? undefined : json["ip_addresses"], + dnsServers: json["dns_servers"] == null ? undefined : json["dns_servers"], + }; +} + +export function NetworkInterfaceRequestToJSON(json: any): NetworkInterfaceRequest { + return NetworkInterfaceRequestToJSONTyped(json, false); +} + +export function NetworkInterfaceRequestToJSONTyped( + value?: NetworkInterfaceRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + hardware_address: value["hardwareAddress"], + ip_addresses: value["ipAddresses"], + dns_servers: value["dnsServers"], + }; +} diff --git a/packages/client-ts/src/models/NetworkRequest.ts b/packages/client-ts/src/models/NetworkRequest.ts new file mode 100644 index 0000000000..2b6628753f --- /dev/null +++ b/packages/client-ts/src/models/NetworkRequest.ts @@ -0,0 +1,99 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { NetworkInterfaceRequest } from "./NetworkInterfaceRequest"; +import { + NetworkInterfaceRequestFromJSON, + NetworkInterfaceRequestToJSON, +} from "./NetworkInterfaceRequest"; + +/** + * + * @export + * @interface NetworkRequest + */ +export interface NetworkRequest { + /** + * + * @type {string} + * @memberof NetworkRequest + */ + hostname: string; + /** + * + * @type {boolean} + * @memberof NetworkRequest + */ + firewallEnabled?: boolean; + /** + * + * @type {Array} + * @memberof NetworkRequest + */ + interfaces: Array; + /** + * + * @type {string} + * @memberof NetworkRequest + */ + gateway?: string; +} + +/** + * Check if a given object implements the NetworkRequest interface. + */ +export function instanceOfNetworkRequest(value: object): value is NetworkRequest { + if (!("hostname" in value) || value["hostname"] === undefined) return false; + if (!("interfaces" in value) || value["interfaces"] === undefined) return false; + return true; +} + +export function NetworkRequestFromJSON(json: any): NetworkRequest { + return NetworkRequestFromJSONTyped(json, false); +} + +export function NetworkRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): NetworkRequest { + if (json == null) { + return json; + } + return { + hostname: json["hostname"], + firewallEnabled: json["firewall_enabled"] == null ? undefined : json["firewall_enabled"], + interfaces: (json["interfaces"] as Array).map(NetworkInterfaceRequestFromJSON), + gateway: json["gateway"] == null ? undefined : json["gateway"], + }; +} + +export function NetworkRequestToJSON(json: any): NetworkRequest { + return NetworkRequestToJSONTyped(json, false); +} + +export function NetworkRequestToJSONTyped( + value?: NetworkRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + hostname: value["hostname"], + firewall_enabled: value["firewallEnabled"], + interfaces: (value["interfaces"] as Array).map(NetworkInterfaceRequestToJSON), + gateway: value["gateway"], + }; +} diff --git a/packages/client-ts/src/models/NotConfiguredActionEnum.ts b/packages/client-ts/src/models/NotConfiguredActionEnum.ts new file mode 100644 index 0000000000..d602551e0d --- /dev/null +++ b/packages/client-ts/src/models/NotConfiguredActionEnum.ts @@ -0,0 +1,59 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const NotConfiguredActionEnum = { + Skip: "skip", + Deny: "deny", + Configure: "configure", + UnknownDefaultOpenApi: "11184809", +} as const; +export type NotConfiguredActionEnum = + (typeof NotConfiguredActionEnum)[keyof typeof NotConfiguredActionEnum]; + +export function instanceOfNotConfiguredActionEnum(value: any): boolean { + for (const key in NotConfiguredActionEnum) { + if (Object.prototype.hasOwnProperty.call(NotConfiguredActionEnum, key)) { + if (NotConfiguredActionEnum[key as keyof typeof NotConfiguredActionEnum] === value) { + return true; + } + } + } + return false; +} + +export function NotConfiguredActionEnumFromJSON(json: any): NotConfiguredActionEnum { + return NotConfiguredActionEnumFromJSONTyped(json, false); +} + +export function NotConfiguredActionEnumFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): NotConfiguredActionEnum { + return json as NotConfiguredActionEnum; +} + +export function NotConfiguredActionEnumToJSON(value?: NotConfiguredActionEnum | null): any { + return value as any; +} + +export function NotConfiguredActionEnumToJSONTyped( + value: any, + ignoreDiscriminator: boolean, +): NotConfiguredActionEnum { + return value as NotConfiguredActionEnum; +} diff --git a/packages/client-ts/src/models/Notification.ts b/packages/client-ts/src/models/Notification.ts new file mode 100644 index 0000000000..848e1b24e3 --- /dev/null +++ b/packages/client-ts/src/models/Notification.ts @@ -0,0 +1,125 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Event } from "./Event"; +import { EventFromJSON, EventToJSON } from "./Event"; +import type { SeverityEnum } from "./SeverityEnum"; +import { SeverityEnumFromJSON } from "./SeverityEnum"; + +/** + * Notification Serializer + * @export + * @interface Notification + */ +export interface Notification { + /** + * + * @type {string} + * @memberof Notification + */ + readonly pk: string; + /** + * + * @type {SeverityEnum} + * @memberof Notification + */ + readonly severity: SeverityEnum; + /** + * + * @type {string} + * @memberof Notification + */ + readonly body: string; + /** + * + * @type {string} + * @memberof Notification + */ + hyperlink?: string | null; + /** + * + * @type {string} + * @memberof Notification + */ + hyperlinkLabel?: string | null; + /** + * + * @type {Date} + * @memberof Notification + */ + readonly created: Date; + /** + * + * @type {Event} + * @memberof Notification + */ + event?: Event; + /** + * + * @type {boolean} + * @memberof Notification + */ + seen?: boolean; +} + +/** + * Check if a given object implements the Notification interface. + */ +export function instanceOfNotification(value: object): value is Notification { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("severity" in value) || value["severity"] === undefined) return false; + if (!("body" in value) || value["body"] === undefined) return false; + if (!("created" in value) || value["created"] === undefined) return false; + return true; +} + +export function NotificationFromJSON(json: any): Notification { + return NotificationFromJSONTyped(json, false); +} + +export function NotificationFromJSONTyped(json: any, ignoreDiscriminator: boolean): Notification { + if (json == null) { + return json; + } + return { + pk: json["pk"], + severity: SeverityEnumFromJSON(json["severity"]), + body: json["body"], + hyperlink: json["hyperlink"] == null ? undefined : json["hyperlink"], + hyperlinkLabel: json["hyperlink_label"] == null ? undefined : json["hyperlink_label"], + created: new Date(json["created"]), + event: json["event"] == null ? undefined : EventFromJSON(json["event"]), + seen: json["seen"] == null ? undefined : json["seen"], + }; +} + +export function NotificationToJSON(json: any): Notification { + return NotificationToJSONTyped(json, false); +} + +export function NotificationToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + hyperlink: value["hyperlink"], + hyperlink_label: value["hyperlinkLabel"], + event: EventToJSON(value["event"]), + seen: value["seen"], + }; +} diff --git a/packages/client-ts/src/models/NotificationRequest.ts b/packages/client-ts/src/models/NotificationRequest.ts new file mode 100644 index 0000000000..6e054d06e5 --- /dev/null +++ b/packages/client-ts/src/models/NotificationRequest.ts @@ -0,0 +1,94 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { EventRequest } from "./EventRequest"; +import { EventRequestFromJSON, EventRequestToJSON } from "./EventRequest"; + +/** + * Notification Serializer + * @export + * @interface NotificationRequest + */ +export interface NotificationRequest { + /** + * + * @type {string} + * @memberof NotificationRequest + */ + hyperlink?: string | null; + /** + * + * @type {string} + * @memberof NotificationRequest + */ + hyperlinkLabel?: string | null; + /** + * + * @type {EventRequest} + * @memberof NotificationRequest + */ + event?: EventRequest; + /** + * + * @type {boolean} + * @memberof NotificationRequest + */ + seen?: boolean; +} + +/** + * Check if a given object implements the NotificationRequest interface. + */ +export function instanceOfNotificationRequest(value: object): value is NotificationRequest { + return true; +} + +export function NotificationRequestFromJSON(json: any): NotificationRequest { + return NotificationRequestFromJSONTyped(json, false); +} + +export function NotificationRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): NotificationRequest { + if (json == null) { + return json; + } + return { + hyperlink: json["hyperlink"] == null ? undefined : json["hyperlink"], + hyperlinkLabel: json["hyperlink_label"] == null ? undefined : json["hyperlink_label"], + event: json["event"] == null ? undefined : EventRequestFromJSON(json["event"]), + seen: json["seen"] == null ? undefined : json["seen"], + }; +} + +export function NotificationRequestToJSON(json: any): NotificationRequest { + return NotificationRequestToJSONTyped(json, false); +} + +export function NotificationRequestToJSONTyped( + value?: NotificationRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + hyperlink: value["hyperlink"], + hyperlink_label: value["hyperlinkLabel"], + event: EventRequestToJSON(value["event"]), + seen: value["seen"], + }; +} diff --git a/packages/client-ts/src/models/NotificationRule.ts b/packages/client-ts/src/models/NotificationRule.ts new file mode 100644 index 0000000000..a96f895c1e --- /dev/null +++ b/packages/client-ts/src/models/NotificationRule.ts @@ -0,0 +1,123 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Group } from "./Group"; +import { GroupFromJSON } from "./Group"; +import type { SeverityEnum } from "./SeverityEnum"; +import { SeverityEnumFromJSON, SeverityEnumToJSON } from "./SeverityEnum"; + +/** + * NotificationRule Serializer + * @export + * @interface NotificationRule + */ +export interface NotificationRule { + /** + * + * @type {string} + * @memberof NotificationRule + */ + readonly pk: string; + /** + * + * @type {string} + * @memberof NotificationRule + */ + name: string; + /** + * Select which transports should be used to notify the user. If none are selected, the notification will only be shown in the authentik UI. + * @type {Array} + * @memberof NotificationRule + */ + transports?: Array; + /** + * Controls which severity level the created notifications will have. + * @type {SeverityEnum} + * @memberof NotificationRule + */ + severity?: SeverityEnum; + /** + * Define which group of users this notification should be sent and shown to. If left empty, Notification won't ben sent. + * @type {string} + * @memberof NotificationRule + */ + destinationGroup?: string | null; + /** + * + * @type {Group} + * @memberof NotificationRule + */ + readonly destinationGroupObj: Group | null; + /** + * When enabled, notification will be sent to user the user that triggered the event.When destination_group is configured, notification is sent to both. + * @type {boolean} + * @memberof NotificationRule + */ + destinationEventUser?: boolean; +} + +/** + * Check if a given object implements the NotificationRule interface. + */ +export function instanceOfNotificationRule(value: object): value is NotificationRule { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("destinationGroupObj" in value) || value["destinationGroupObj"] === undefined) + return false; + return true; +} + +export function NotificationRuleFromJSON(json: any): NotificationRule { + return NotificationRuleFromJSONTyped(json, false); +} + +export function NotificationRuleFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): NotificationRule { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + transports: json["transports"] == null ? undefined : json["transports"], + severity: json["severity"] == null ? undefined : SeverityEnumFromJSON(json["severity"]), + destinationGroup: json["destination_group"] == null ? undefined : json["destination_group"], + destinationGroupObj: GroupFromJSON(json["destination_group_obj"]), + destinationEventUser: + json["destination_event_user"] == null ? undefined : json["destination_event_user"], + }; +} + +export function NotificationRuleToJSON(json: any): NotificationRule { + return NotificationRuleToJSONTyped(json, false); +} + +export function NotificationRuleToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + transports: value["transports"], + severity: SeverityEnumToJSON(value["severity"]), + destination_group: value["destinationGroup"], + destination_event_user: value["destinationEventUser"], + }; +} diff --git a/packages/client-ts/src/models/NotificationRuleRequest.ts b/packages/client-ts/src/models/NotificationRuleRequest.ts new file mode 100644 index 0000000000..9a05028986 --- /dev/null +++ b/packages/client-ts/src/models/NotificationRuleRequest.ts @@ -0,0 +1,104 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { SeverityEnum } from "./SeverityEnum"; +import { SeverityEnumFromJSON, SeverityEnumToJSON } from "./SeverityEnum"; + +/** + * NotificationRule Serializer + * @export + * @interface NotificationRuleRequest + */ +export interface NotificationRuleRequest { + /** + * + * @type {string} + * @memberof NotificationRuleRequest + */ + name: string; + /** + * Select which transports should be used to notify the user. If none are selected, the notification will only be shown in the authentik UI. + * @type {Array} + * @memberof NotificationRuleRequest + */ + transports?: Array; + /** + * Controls which severity level the created notifications will have. + * @type {SeverityEnum} + * @memberof NotificationRuleRequest + */ + severity?: SeverityEnum; + /** + * Define which group of users this notification should be sent and shown to. If left empty, Notification won't ben sent. + * @type {string} + * @memberof NotificationRuleRequest + */ + destinationGroup?: string | null; + /** + * When enabled, notification will be sent to user the user that triggered the event.When destination_group is configured, notification is sent to both. + * @type {boolean} + * @memberof NotificationRuleRequest + */ + destinationEventUser?: boolean; +} + +/** + * Check if a given object implements the NotificationRuleRequest interface. + */ +export function instanceOfNotificationRuleRequest(value: object): value is NotificationRuleRequest { + if (!("name" in value) || value["name"] === undefined) return false; + return true; +} + +export function NotificationRuleRequestFromJSON(json: any): NotificationRuleRequest { + return NotificationRuleRequestFromJSONTyped(json, false); +} + +export function NotificationRuleRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): NotificationRuleRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + transports: json["transports"] == null ? undefined : json["transports"], + severity: json["severity"] == null ? undefined : SeverityEnumFromJSON(json["severity"]), + destinationGroup: json["destination_group"] == null ? undefined : json["destination_group"], + destinationEventUser: + json["destination_event_user"] == null ? undefined : json["destination_event_user"], + }; +} + +export function NotificationRuleRequestToJSON(json: any): NotificationRuleRequest { + return NotificationRuleRequestToJSONTyped(json, false); +} + +export function NotificationRuleRequestToJSONTyped( + value?: NotificationRuleRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + transports: value["transports"], + severity: SeverityEnumToJSON(value["severity"]), + destination_group: value["destinationGroup"], + destination_event_user: value["destinationEventUser"], + }; +} diff --git a/packages/client-ts/src/models/NotificationTransport.ts b/packages/client-ts/src/models/NotificationTransport.ts new file mode 100644 index 0000000000..84b0bb52bf --- /dev/null +++ b/packages/client-ts/src/models/NotificationTransport.ts @@ -0,0 +1,154 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { TransportModeEnum } from "./TransportModeEnum"; +import { TransportModeEnumFromJSON, TransportModeEnumToJSON } from "./TransportModeEnum"; + +/** + * NotificationTransport Serializer + * @export + * @interface NotificationTransport + */ +export interface NotificationTransport { + /** + * + * @type {string} + * @memberof NotificationTransport + */ + readonly pk: string; + /** + * + * @type {string} + * @memberof NotificationTransport + */ + name: string; + /** + * + * @type {TransportModeEnum} + * @memberof NotificationTransport + */ + mode?: TransportModeEnum; + /** + * Return selected mode with a UI Label + * @type {string} + * @memberof NotificationTransport + */ + readonly modeVerbose: string; + /** + * + * @type {string} + * @memberof NotificationTransport + */ + webhookUrl?: string; + /** + * When set, the selected ceritifcate is used to validate the certificate of the webhook server. + * @type {string} + * @memberof NotificationTransport + */ + webhookCa?: string | null; + /** + * Customize the body of the request. Mapping should return data that is JSON-serializable. + * @type {string} + * @memberof NotificationTransport + */ + webhookMappingBody?: string | null; + /** + * Configure additional headers to be sent. Mapping should return a dictionary of key-value pairs + * @type {string} + * @memberof NotificationTransport + */ + webhookMappingHeaders?: string | null; + /** + * + * @type {string} + * @memberof NotificationTransport + */ + emailSubjectPrefix?: string; + /** + * + * @type {string} + * @memberof NotificationTransport + */ + emailTemplate?: string; + /** + * Only send notification once, for example when sending a webhook into a chat channel. + * @type {boolean} + * @memberof NotificationTransport + */ + sendOnce?: boolean; +} + +/** + * Check if a given object implements the NotificationTransport interface. + */ +export function instanceOfNotificationTransport(value: object): value is NotificationTransport { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("modeVerbose" in value) || value["modeVerbose"] === undefined) return false; + return true; +} + +export function NotificationTransportFromJSON(json: any): NotificationTransport { + return NotificationTransportFromJSONTyped(json, false); +} + +export function NotificationTransportFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): NotificationTransport { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + mode: json["mode"] == null ? undefined : TransportModeEnumFromJSON(json["mode"]), + modeVerbose: json["mode_verbose"], + webhookUrl: json["webhook_url"] == null ? undefined : json["webhook_url"], + webhookCa: json["webhook_ca"] == null ? undefined : json["webhook_ca"], + webhookMappingBody: + json["webhook_mapping_body"] == null ? undefined : json["webhook_mapping_body"], + webhookMappingHeaders: + json["webhook_mapping_headers"] == null ? undefined : json["webhook_mapping_headers"], + emailSubjectPrefix: + json["email_subject_prefix"] == null ? undefined : json["email_subject_prefix"], + emailTemplate: json["email_template"] == null ? undefined : json["email_template"], + sendOnce: json["send_once"] == null ? undefined : json["send_once"], + }; +} + +export function NotificationTransportToJSON(json: any): NotificationTransport { + return NotificationTransportToJSONTyped(json, false); +} + +export function NotificationTransportToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + mode: TransportModeEnumToJSON(value["mode"]), + webhook_url: value["webhookUrl"], + webhook_ca: value["webhookCa"], + webhook_mapping_body: value["webhookMappingBody"], + webhook_mapping_headers: value["webhookMappingHeaders"], + email_subject_prefix: value["emailSubjectPrefix"], + email_template: value["emailTemplate"], + send_once: value["sendOnce"], + }; +} diff --git a/packages/client-ts/src/models/NotificationTransportRequest.ts b/packages/client-ts/src/models/NotificationTransportRequest.ts new file mode 100644 index 0000000000..fb22f46e40 --- /dev/null +++ b/packages/client-ts/src/models/NotificationTransportRequest.ts @@ -0,0 +1,140 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { TransportModeEnum } from "./TransportModeEnum"; +import { TransportModeEnumFromJSON, TransportModeEnumToJSON } from "./TransportModeEnum"; + +/** + * NotificationTransport Serializer + * @export + * @interface NotificationTransportRequest + */ +export interface NotificationTransportRequest { + /** + * + * @type {string} + * @memberof NotificationTransportRequest + */ + name: string; + /** + * + * @type {TransportModeEnum} + * @memberof NotificationTransportRequest + */ + mode?: TransportModeEnum; + /** + * + * @type {string} + * @memberof NotificationTransportRequest + */ + webhookUrl?: string; + /** + * When set, the selected ceritifcate is used to validate the certificate of the webhook server. + * @type {string} + * @memberof NotificationTransportRequest + */ + webhookCa?: string | null; + /** + * Customize the body of the request. Mapping should return data that is JSON-serializable. + * @type {string} + * @memberof NotificationTransportRequest + */ + webhookMappingBody?: string | null; + /** + * Configure additional headers to be sent. Mapping should return a dictionary of key-value pairs + * @type {string} + * @memberof NotificationTransportRequest + */ + webhookMappingHeaders?: string | null; + /** + * + * @type {string} + * @memberof NotificationTransportRequest + */ + emailSubjectPrefix?: string; + /** + * + * @type {string} + * @memberof NotificationTransportRequest + */ + emailTemplate?: string; + /** + * Only send notification once, for example when sending a webhook into a chat channel. + * @type {boolean} + * @memberof NotificationTransportRequest + */ + sendOnce?: boolean; +} + +/** + * Check if a given object implements the NotificationTransportRequest interface. + */ +export function instanceOfNotificationTransportRequest( + value: object, +): value is NotificationTransportRequest { + if (!("name" in value) || value["name"] === undefined) return false; + return true; +} + +export function NotificationTransportRequestFromJSON(json: any): NotificationTransportRequest { + return NotificationTransportRequestFromJSONTyped(json, false); +} + +export function NotificationTransportRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): NotificationTransportRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + mode: json["mode"] == null ? undefined : TransportModeEnumFromJSON(json["mode"]), + webhookUrl: json["webhook_url"] == null ? undefined : json["webhook_url"], + webhookCa: json["webhook_ca"] == null ? undefined : json["webhook_ca"], + webhookMappingBody: + json["webhook_mapping_body"] == null ? undefined : json["webhook_mapping_body"], + webhookMappingHeaders: + json["webhook_mapping_headers"] == null ? undefined : json["webhook_mapping_headers"], + emailSubjectPrefix: + json["email_subject_prefix"] == null ? undefined : json["email_subject_prefix"], + emailTemplate: json["email_template"] == null ? undefined : json["email_template"], + sendOnce: json["send_once"] == null ? undefined : json["send_once"], + }; +} + +export function NotificationTransportRequestToJSON(json: any): NotificationTransportRequest { + return NotificationTransportRequestToJSONTyped(json, false); +} + +export function NotificationTransportRequestToJSONTyped( + value?: NotificationTransportRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + mode: TransportModeEnumToJSON(value["mode"]), + webhook_url: value["webhookUrl"], + webhook_ca: value["webhookCa"], + webhook_mapping_body: value["webhookMappingBody"], + webhook_mapping_headers: value["webhookMappingHeaders"], + email_subject_prefix: value["emailSubjectPrefix"], + email_template: value["emailTemplate"], + send_once: value["sendOnce"], + }; +} diff --git a/packages/client-ts/src/models/NotificationTransportTest.ts b/packages/client-ts/src/models/NotificationTransportTest.ts new file mode 100644 index 0000000000..38ee96aa4b --- /dev/null +++ b/packages/client-ts/src/models/NotificationTransportTest.ts @@ -0,0 +1,70 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Notification test serializer + * @export + * @interface NotificationTransportTest + */ +export interface NotificationTransportTest { + /** + * + * @type {Array} + * @memberof NotificationTransportTest + */ + messages: Array; +} + +/** + * Check if a given object implements the NotificationTransportTest interface. + */ +export function instanceOfNotificationTransportTest( + value: object, +): value is NotificationTransportTest { + if (!("messages" in value) || value["messages"] === undefined) return false; + return true; +} + +export function NotificationTransportTestFromJSON(json: any): NotificationTransportTest { + return NotificationTransportTestFromJSONTyped(json, false); +} + +export function NotificationTransportTestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): NotificationTransportTest { + if (json == null) { + return json; + } + return { + messages: json["messages"], + }; +} + +export function NotificationTransportTestToJSON(json: any): NotificationTransportTest { + return NotificationTransportTestToJSONTyped(json, false); +} + +export function NotificationTransportTestToJSONTyped( + value?: NotificationTransportTest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + messages: value["messages"], + }; +} diff --git a/packages/client-ts/src/models/NotificationWebhookMapping.ts b/packages/client-ts/src/models/NotificationWebhookMapping.ts new file mode 100644 index 0000000000..e05dbbd466 --- /dev/null +++ b/packages/client-ts/src/models/NotificationWebhookMapping.ts @@ -0,0 +1,87 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * NotificationWebhookMapping Serializer + * @export + * @interface NotificationWebhookMapping + */ +export interface NotificationWebhookMapping { + /** + * + * @type {string} + * @memberof NotificationWebhookMapping + */ + readonly pk: string; + /** + * + * @type {string} + * @memberof NotificationWebhookMapping + */ + name: string; + /** + * + * @type {string} + * @memberof NotificationWebhookMapping + */ + expression: string; +} + +/** + * Check if a given object implements the NotificationWebhookMapping interface. + */ +export function instanceOfNotificationWebhookMapping( + value: object, +): value is NotificationWebhookMapping { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("expression" in value) || value["expression"] === undefined) return false; + return true; +} + +export function NotificationWebhookMappingFromJSON(json: any): NotificationWebhookMapping { + return NotificationWebhookMappingFromJSONTyped(json, false); +} + +export function NotificationWebhookMappingFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): NotificationWebhookMapping { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + expression: json["expression"], + }; +} + +export function NotificationWebhookMappingToJSON(json: any): NotificationWebhookMapping { + return NotificationWebhookMappingToJSONTyped(json, false); +} + +export function NotificationWebhookMappingToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + expression: value["expression"], + }; +} diff --git a/packages/client-ts/src/models/NotificationWebhookMappingRequest.ts b/packages/client-ts/src/models/NotificationWebhookMappingRequest.ts new file mode 100644 index 0000000000..bbadc4e148 --- /dev/null +++ b/packages/client-ts/src/models/NotificationWebhookMappingRequest.ts @@ -0,0 +1,83 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * NotificationWebhookMapping Serializer + * @export + * @interface NotificationWebhookMappingRequest + */ +export interface NotificationWebhookMappingRequest { + /** + * + * @type {string} + * @memberof NotificationWebhookMappingRequest + */ + name: string; + /** + * + * @type {string} + * @memberof NotificationWebhookMappingRequest + */ + expression: string; +} + +/** + * Check if a given object implements the NotificationWebhookMappingRequest interface. + */ +export function instanceOfNotificationWebhookMappingRequest( + value: object, +): value is NotificationWebhookMappingRequest { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("expression" in value) || value["expression"] === undefined) return false; + return true; +} + +export function NotificationWebhookMappingRequestFromJSON( + json: any, +): NotificationWebhookMappingRequest { + return NotificationWebhookMappingRequestFromJSONTyped(json, false); +} + +export function NotificationWebhookMappingRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): NotificationWebhookMappingRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + expression: json["expression"], + }; +} + +export function NotificationWebhookMappingRequestToJSON( + json: any, +): NotificationWebhookMappingRequest { + return NotificationWebhookMappingRequestToJSONTyped(json, false); +} + +export function NotificationWebhookMappingRequestToJSONTyped( + value?: NotificationWebhookMappingRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + expression: value["expression"], + }; +} diff --git a/packages/client-ts/src/models/OAuth2Provider.ts b/packages/client-ts/src/models/OAuth2Provider.ts new file mode 100644 index 0000000000..17af2b4a72 --- /dev/null +++ b/packages/client-ts/src/models/OAuth2Provider.ts @@ -0,0 +1,377 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { ClientTypeEnum } from "./ClientTypeEnum"; +import { ClientTypeEnumFromJSON, ClientTypeEnumToJSON } from "./ClientTypeEnum"; +import type { GrantTypesEnum } from "./GrantTypesEnum"; +import { GrantTypesEnumFromJSON, GrantTypesEnumToJSON } from "./GrantTypesEnum"; +import type { IssuerModeEnum } from "./IssuerModeEnum"; +import { IssuerModeEnumFromJSON, IssuerModeEnumToJSON } from "./IssuerModeEnum"; +import type { OAuth2ProviderLogoutMethodEnum } from "./OAuth2ProviderLogoutMethodEnum"; +import { + OAuth2ProviderLogoutMethodEnumFromJSON, + OAuth2ProviderLogoutMethodEnumToJSON, +} from "./OAuth2ProviderLogoutMethodEnum"; +import type { RedirectURI } from "./RedirectURI"; +import { RedirectURIFromJSON, RedirectURIToJSON } from "./RedirectURI"; +import type { SubModeEnum } from "./SubModeEnum"; +import { SubModeEnumFromJSON, SubModeEnumToJSON } from "./SubModeEnum"; + +/** + * OAuth2Provider Serializer + * @export + * @interface OAuth2Provider + */ +export interface OAuth2Provider { + /** + * + * @type {number} + * @memberof OAuth2Provider + */ + readonly pk: number; + /** + * + * @type {string} + * @memberof OAuth2Provider + */ + name: string; + /** + * Flow used for authentication when the associated application is accessed by an un-authenticated user. + * @type {string} + * @memberof OAuth2Provider + */ + authenticationFlow?: string | null; + /** + * Flow used when authorizing this provider. + * @type {string} + * @memberof OAuth2Provider + */ + authorizationFlow: string; + /** + * Flow used ending the session from a provider. + * @type {string} + * @memberof OAuth2Provider + */ + invalidationFlow: string; + /** + * + * @type {Array} + * @memberof OAuth2Provider + */ + propertyMappings?: Array; + /** + * Get object component so that we know how to edit the object + * @type {string} + * @memberof OAuth2Provider + */ + readonly component: string; + /** + * Internal application name, used in URLs. + * @type {string} + * @memberof OAuth2Provider + */ + readonly assignedApplicationSlug: string | null; + /** + * Application's display Name. + * @type {string} + * @memberof OAuth2Provider + */ + readonly assignedApplicationName: string | null; + /** + * Internal application name, used in URLs. + * @type {string} + * @memberof OAuth2Provider + */ + readonly assignedBackchannelApplicationSlug: string | null; + /** + * Application's display Name. + * @type {string} + * @memberof OAuth2Provider + */ + readonly assignedBackchannelApplicationName: string | null; + /** + * Return object's verbose_name + * @type {string} + * @memberof OAuth2Provider + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof OAuth2Provider + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof OAuth2Provider + */ + readonly metaModelName: string; + /** + * Confidential clients are capable of maintaining the confidentiality of their credentials. Public clients are incapable + * @type {ClientTypeEnum} + * @memberof OAuth2Provider + */ + clientType?: ClientTypeEnum; + /** + * + * @type {Array} + * @memberof OAuth2Provider + */ + grantTypes?: Array; + /** + * + * @type {string} + * @memberof OAuth2Provider + */ + clientId?: string; + /** + * + * @type {string} + * @memberof OAuth2Provider + */ + clientSecret?: string; + /** + * Access codes not valid on or after current time + this value (Format: hours=1;minutes=2;seconds=3). + * @type {string} + * @memberof OAuth2Provider + */ + accessCodeValidity?: string; + /** + * Tokens not valid on or after current time + this value (Format: hours=1;minutes=2;seconds=3). + * @type {string} + * @memberof OAuth2Provider + */ + accessTokenValidity?: string; + /** + * Tokens not valid on or after current time + this value (Format: hours=1;minutes=2;seconds=3). + * @type {string} + * @memberof OAuth2Provider + */ + refreshTokenValidity?: string; + /** + * When refreshing a token, if the refresh token is valid for less than this duration, it will be renewed. When set to seconds=0, token will always be renewed. (Format: hours=1;minutes=2;seconds=3). + * @type {string} + * @memberof OAuth2Provider + */ + refreshTokenThreshold?: string; + /** + * Include User claims from scopes in the id_token, for applications that don't access the userinfo endpoint. + * @type {boolean} + * @memberof OAuth2Provider + */ + includeClaimsInIdToken?: boolean; + /** + * Key used to sign the tokens. + * @type {string} + * @memberof OAuth2Provider + */ + signingKey?: string | null; + /** + * Key used to encrypt the tokens. When set, tokens will be encrypted and returned as JWEs. + * @type {string} + * @memberof OAuth2Provider + */ + encryptionKey?: string | null; + /** + * + * @type {Array} + * @memberof OAuth2Provider + */ + redirectUris: Array; + /** + * + * @type {string} + * @memberof OAuth2Provider + */ + logoutUri?: string; + /** + * Backchannel logs out with server to server calls. Frontchannel uses iframes in your browser + * @type {OAuth2ProviderLogoutMethodEnum} + * @memberof OAuth2Provider + */ + logoutMethod?: OAuth2ProviderLogoutMethodEnum; + /** + * Configure what data should be used as unique User Identifier. For most cases, the default should be fine. + * @type {SubModeEnum} + * @memberof OAuth2Provider + */ + subMode?: SubModeEnum; + /** + * Configure how the issuer field of the ID Token should be filled. + * @type {IssuerModeEnum} + * @memberof OAuth2Provider + */ + issuerMode?: IssuerModeEnum; + /** + * + * @type {Array} + * @memberof OAuth2Provider + */ + jwtFederationSources?: Array; + /** + * + * @type {Array} + * @memberof OAuth2Provider + */ + jwtFederationProviders?: Array; +} + +/** + * Check if a given object implements the OAuth2Provider interface. + */ +export function instanceOfOAuth2Provider(value: object): value is OAuth2Provider { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("authorizationFlow" in value) || value["authorizationFlow"] === undefined) return false; + if (!("invalidationFlow" in value) || value["invalidationFlow"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if (!("assignedApplicationSlug" in value) || value["assignedApplicationSlug"] === undefined) + return false; + if (!("assignedApplicationName" in value) || value["assignedApplicationName"] === undefined) + return false; + if ( + !("assignedBackchannelApplicationSlug" in value) || + value["assignedBackchannelApplicationSlug"] === undefined + ) + return false; + if ( + !("assignedBackchannelApplicationName" in value) || + value["assignedBackchannelApplicationName"] === undefined + ) + return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + if (!("redirectUris" in value) || value["redirectUris"] === undefined) return false; + return true; +} + +export function OAuth2ProviderFromJSON(json: any): OAuth2Provider { + return OAuth2ProviderFromJSONTyped(json, false); +} + +export function OAuth2ProviderFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): OAuth2Provider { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + authenticationFlow: + json["authentication_flow"] == null ? undefined : json["authentication_flow"], + authorizationFlow: json["authorization_flow"], + invalidationFlow: json["invalidation_flow"], + propertyMappings: json["property_mappings"] == null ? undefined : json["property_mappings"], + component: json["component"], + assignedApplicationSlug: json["assigned_application_slug"], + assignedApplicationName: json["assigned_application_name"], + assignedBackchannelApplicationSlug: json["assigned_backchannel_application_slug"], + assignedBackchannelApplicationName: json["assigned_backchannel_application_name"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + clientType: + json["client_type"] == null ? undefined : ClientTypeEnumFromJSON(json["client_type"]), + grantTypes: + json["grant_types"] == null + ? undefined + : (json["grant_types"] as Array).map(GrantTypesEnumFromJSON), + clientId: json["client_id"] == null ? undefined : json["client_id"], + clientSecret: json["client_secret"] == null ? undefined : json["client_secret"], + accessCodeValidity: + json["access_code_validity"] == null ? undefined : json["access_code_validity"], + accessTokenValidity: + json["access_token_validity"] == null ? undefined : json["access_token_validity"], + refreshTokenValidity: + json["refresh_token_validity"] == null ? undefined : json["refresh_token_validity"], + refreshTokenThreshold: + json["refresh_token_threshold"] == null ? undefined : json["refresh_token_threshold"], + includeClaimsInIdToken: + json["include_claims_in_id_token"] == null + ? undefined + : json["include_claims_in_id_token"], + signingKey: json["signing_key"] == null ? undefined : json["signing_key"], + encryptionKey: json["encryption_key"] == null ? undefined : json["encryption_key"], + redirectUris: (json["redirect_uris"] as Array).map(RedirectURIFromJSON), + logoutUri: json["logout_uri"] == null ? undefined : json["logout_uri"], + logoutMethod: + json["logout_method"] == null + ? undefined + : OAuth2ProviderLogoutMethodEnumFromJSON(json["logout_method"]), + subMode: json["sub_mode"] == null ? undefined : SubModeEnumFromJSON(json["sub_mode"]), + issuerMode: + json["issuer_mode"] == null ? undefined : IssuerModeEnumFromJSON(json["issuer_mode"]), + jwtFederationSources: + json["jwt_federation_sources"] == null ? undefined : json["jwt_federation_sources"], + jwtFederationProviders: + json["jwt_federation_providers"] == null ? undefined : json["jwt_federation_providers"], + }; +} + +export function OAuth2ProviderToJSON(json: any): OAuth2Provider { + return OAuth2ProviderToJSONTyped(json, false); +} + +export function OAuth2ProviderToJSONTyped( + value?: Omit< + OAuth2Provider, + | "pk" + | "component" + | "assigned_application_slug" + | "assigned_application_name" + | "assigned_backchannel_application_slug" + | "assigned_backchannel_application_name" + | "verbose_name" + | "verbose_name_plural" + | "meta_model_name" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + authentication_flow: value["authenticationFlow"], + authorization_flow: value["authorizationFlow"], + invalidation_flow: value["invalidationFlow"], + property_mappings: value["propertyMappings"], + client_type: ClientTypeEnumToJSON(value["clientType"]), + grant_types: + value["grantTypes"] == null + ? undefined + : (value["grantTypes"] as Array).map(GrantTypesEnumToJSON), + client_id: value["clientId"], + client_secret: value["clientSecret"], + access_code_validity: value["accessCodeValidity"], + access_token_validity: value["accessTokenValidity"], + refresh_token_validity: value["refreshTokenValidity"], + refresh_token_threshold: value["refreshTokenThreshold"], + include_claims_in_id_token: value["includeClaimsInIdToken"], + signing_key: value["signingKey"], + encryption_key: value["encryptionKey"], + redirect_uris: (value["redirectUris"] as Array).map(RedirectURIToJSON), + logout_uri: value["logoutUri"], + logout_method: OAuth2ProviderLogoutMethodEnumToJSON(value["logoutMethod"]), + sub_mode: SubModeEnumToJSON(value["subMode"]), + issuer_mode: IssuerModeEnumToJSON(value["issuerMode"]), + jwt_federation_sources: value["jwtFederationSources"], + jwt_federation_providers: value["jwtFederationProviders"], + }; +} diff --git a/packages/client-ts/src/models/OAuth2ProviderLogoutMethodEnum.ts b/packages/client-ts/src/models/OAuth2ProviderLogoutMethodEnum.ts new file mode 100644 index 0000000000..4466e2fe64 --- /dev/null +++ b/packages/client-ts/src/models/OAuth2ProviderLogoutMethodEnum.ts @@ -0,0 +1,64 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const OAuth2ProviderLogoutMethodEnum = { + Backchannel: "backchannel", + Frontchannel: "frontchannel", + UnknownDefaultOpenApi: "11184809", +} as const; +export type OAuth2ProviderLogoutMethodEnum = + (typeof OAuth2ProviderLogoutMethodEnum)[keyof typeof OAuth2ProviderLogoutMethodEnum]; + +export function instanceOfOAuth2ProviderLogoutMethodEnum(value: any): boolean { + for (const key in OAuth2ProviderLogoutMethodEnum) { + if (Object.prototype.hasOwnProperty.call(OAuth2ProviderLogoutMethodEnum, key)) { + if ( + OAuth2ProviderLogoutMethodEnum[ + key as keyof typeof OAuth2ProviderLogoutMethodEnum + ] === value + ) { + return true; + } + } + } + return false; +} + +export function OAuth2ProviderLogoutMethodEnumFromJSON(json: any): OAuth2ProviderLogoutMethodEnum { + return OAuth2ProviderLogoutMethodEnumFromJSONTyped(json, false); +} + +export function OAuth2ProviderLogoutMethodEnumFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): OAuth2ProviderLogoutMethodEnum { + return json as OAuth2ProviderLogoutMethodEnum; +} + +export function OAuth2ProviderLogoutMethodEnumToJSON( + value?: OAuth2ProviderLogoutMethodEnum | null, +): any { + return value as any; +} + +export function OAuth2ProviderLogoutMethodEnumToJSONTyped( + value: any, + ignoreDiscriminator: boolean, +): OAuth2ProviderLogoutMethodEnum { + return value as OAuth2ProviderLogoutMethodEnum; +} diff --git a/packages/client-ts/src/models/OAuth2ProviderRequest.ts b/packages/client-ts/src/models/OAuth2ProviderRequest.ts new file mode 100644 index 0000000000..68e99708c5 --- /dev/null +++ b/packages/client-ts/src/models/OAuth2ProviderRequest.ts @@ -0,0 +1,284 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { ClientTypeEnum } from "./ClientTypeEnum"; +import { ClientTypeEnumFromJSON, ClientTypeEnumToJSON } from "./ClientTypeEnum"; +import type { GrantTypesEnum } from "./GrantTypesEnum"; +import { GrantTypesEnumFromJSON, GrantTypesEnumToJSON } from "./GrantTypesEnum"; +import type { IssuerModeEnum } from "./IssuerModeEnum"; +import { IssuerModeEnumFromJSON, IssuerModeEnumToJSON } from "./IssuerModeEnum"; +import type { OAuth2ProviderLogoutMethodEnum } from "./OAuth2ProviderLogoutMethodEnum"; +import { + OAuth2ProviderLogoutMethodEnumFromJSON, + OAuth2ProviderLogoutMethodEnumToJSON, +} from "./OAuth2ProviderLogoutMethodEnum"; +import type { RedirectURIRequest } from "./RedirectURIRequest"; +import { RedirectURIRequestFromJSON, RedirectURIRequestToJSON } from "./RedirectURIRequest"; +import type { SubModeEnum } from "./SubModeEnum"; +import { SubModeEnumFromJSON, SubModeEnumToJSON } from "./SubModeEnum"; + +/** + * OAuth2Provider Serializer + * @export + * @interface OAuth2ProviderRequest + */ +export interface OAuth2ProviderRequest { + /** + * + * @type {string} + * @memberof OAuth2ProviderRequest + */ + name: string; + /** + * Flow used for authentication when the associated application is accessed by an un-authenticated user. + * @type {string} + * @memberof OAuth2ProviderRequest + */ + authenticationFlow?: string | null; + /** + * Flow used when authorizing this provider. + * @type {string} + * @memberof OAuth2ProviderRequest + */ + authorizationFlow: string; + /** + * Flow used ending the session from a provider. + * @type {string} + * @memberof OAuth2ProviderRequest + */ + invalidationFlow: string; + /** + * + * @type {Array} + * @memberof OAuth2ProviderRequest + */ + propertyMappings?: Array; + /** + * Confidential clients are capable of maintaining the confidentiality of their credentials. Public clients are incapable + * @type {ClientTypeEnum} + * @memberof OAuth2ProviderRequest + */ + clientType?: ClientTypeEnum; + /** + * + * @type {Array} + * @memberof OAuth2ProviderRequest + */ + grantTypes?: Array; + /** + * + * @type {string} + * @memberof OAuth2ProviderRequest + */ + clientId?: string; + /** + * + * @type {string} + * @memberof OAuth2ProviderRequest + */ + clientSecret?: string; + /** + * Access codes not valid on or after current time + this value (Format: hours=1;minutes=2;seconds=3). + * @type {string} + * @memberof OAuth2ProviderRequest + */ + accessCodeValidity?: string; + /** + * Tokens not valid on or after current time + this value (Format: hours=1;minutes=2;seconds=3). + * @type {string} + * @memberof OAuth2ProviderRequest + */ + accessTokenValidity?: string; + /** + * Tokens not valid on or after current time + this value (Format: hours=1;minutes=2;seconds=3). + * @type {string} + * @memberof OAuth2ProviderRequest + */ + refreshTokenValidity?: string; + /** + * When refreshing a token, if the refresh token is valid for less than this duration, it will be renewed. When set to seconds=0, token will always be renewed. (Format: hours=1;minutes=2;seconds=3). + * @type {string} + * @memberof OAuth2ProviderRequest + */ + refreshTokenThreshold?: string; + /** + * Include User claims from scopes in the id_token, for applications that don't access the userinfo endpoint. + * @type {boolean} + * @memberof OAuth2ProviderRequest + */ + includeClaimsInIdToken?: boolean; + /** + * Key used to sign the tokens. + * @type {string} + * @memberof OAuth2ProviderRequest + */ + signingKey?: string | null; + /** + * Key used to encrypt the tokens. When set, tokens will be encrypted and returned as JWEs. + * @type {string} + * @memberof OAuth2ProviderRequest + */ + encryptionKey?: string | null; + /** + * + * @type {Array} + * @memberof OAuth2ProviderRequest + */ + redirectUris: Array; + /** + * + * @type {string} + * @memberof OAuth2ProviderRequest + */ + logoutUri?: string; + /** + * Backchannel logs out with server to server calls. Frontchannel uses iframes in your browser + * @type {OAuth2ProviderLogoutMethodEnum} + * @memberof OAuth2ProviderRequest + */ + logoutMethod?: OAuth2ProviderLogoutMethodEnum; + /** + * Configure what data should be used as unique User Identifier. For most cases, the default should be fine. + * @type {SubModeEnum} + * @memberof OAuth2ProviderRequest + */ + subMode?: SubModeEnum; + /** + * Configure how the issuer field of the ID Token should be filled. + * @type {IssuerModeEnum} + * @memberof OAuth2ProviderRequest + */ + issuerMode?: IssuerModeEnum; + /** + * + * @type {Array} + * @memberof OAuth2ProviderRequest + */ + jwtFederationSources?: Array; + /** + * + * @type {Array} + * @memberof OAuth2ProviderRequest + */ + jwtFederationProviders?: Array; +} + +/** + * Check if a given object implements the OAuth2ProviderRequest interface. + */ +export function instanceOfOAuth2ProviderRequest(value: object): value is OAuth2ProviderRequest { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("authorizationFlow" in value) || value["authorizationFlow"] === undefined) return false; + if (!("invalidationFlow" in value) || value["invalidationFlow"] === undefined) return false; + if (!("redirectUris" in value) || value["redirectUris"] === undefined) return false; + return true; +} + +export function OAuth2ProviderRequestFromJSON(json: any): OAuth2ProviderRequest { + return OAuth2ProviderRequestFromJSONTyped(json, false); +} + +export function OAuth2ProviderRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): OAuth2ProviderRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + authenticationFlow: + json["authentication_flow"] == null ? undefined : json["authentication_flow"], + authorizationFlow: json["authorization_flow"], + invalidationFlow: json["invalidation_flow"], + propertyMappings: json["property_mappings"] == null ? undefined : json["property_mappings"], + clientType: + json["client_type"] == null ? undefined : ClientTypeEnumFromJSON(json["client_type"]), + grantTypes: + json["grant_types"] == null + ? undefined + : (json["grant_types"] as Array).map(GrantTypesEnumFromJSON), + clientId: json["client_id"] == null ? undefined : json["client_id"], + clientSecret: json["client_secret"] == null ? undefined : json["client_secret"], + accessCodeValidity: + json["access_code_validity"] == null ? undefined : json["access_code_validity"], + accessTokenValidity: + json["access_token_validity"] == null ? undefined : json["access_token_validity"], + refreshTokenValidity: + json["refresh_token_validity"] == null ? undefined : json["refresh_token_validity"], + refreshTokenThreshold: + json["refresh_token_threshold"] == null ? undefined : json["refresh_token_threshold"], + includeClaimsInIdToken: + json["include_claims_in_id_token"] == null + ? undefined + : json["include_claims_in_id_token"], + signingKey: json["signing_key"] == null ? undefined : json["signing_key"], + encryptionKey: json["encryption_key"] == null ? undefined : json["encryption_key"], + redirectUris: (json["redirect_uris"] as Array).map(RedirectURIRequestFromJSON), + logoutUri: json["logout_uri"] == null ? undefined : json["logout_uri"], + logoutMethod: + json["logout_method"] == null + ? undefined + : OAuth2ProviderLogoutMethodEnumFromJSON(json["logout_method"]), + subMode: json["sub_mode"] == null ? undefined : SubModeEnumFromJSON(json["sub_mode"]), + issuerMode: + json["issuer_mode"] == null ? undefined : IssuerModeEnumFromJSON(json["issuer_mode"]), + jwtFederationSources: + json["jwt_federation_sources"] == null ? undefined : json["jwt_federation_sources"], + jwtFederationProviders: + json["jwt_federation_providers"] == null ? undefined : json["jwt_federation_providers"], + }; +} + +export function OAuth2ProviderRequestToJSON(json: any): OAuth2ProviderRequest { + return OAuth2ProviderRequestToJSONTyped(json, false); +} + +export function OAuth2ProviderRequestToJSONTyped( + value?: OAuth2ProviderRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + authentication_flow: value["authenticationFlow"], + authorization_flow: value["authorizationFlow"], + invalidation_flow: value["invalidationFlow"], + property_mappings: value["propertyMappings"], + client_type: ClientTypeEnumToJSON(value["clientType"]), + grant_types: + value["grantTypes"] == null + ? undefined + : (value["grantTypes"] as Array).map(GrantTypesEnumToJSON), + client_id: value["clientId"], + client_secret: value["clientSecret"], + access_code_validity: value["accessCodeValidity"], + access_token_validity: value["accessTokenValidity"], + refresh_token_validity: value["refreshTokenValidity"], + refresh_token_threshold: value["refreshTokenThreshold"], + include_claims_in_id_token: value["includeClaimsInIdToken"], + signing_key: value["signingKey"], + encryption_key: value["encryptionKey"], + redirect_uris: (value["redirectUris"] as Array).map(RedirectURIRequestToJSON), + logout_uri: value["logoutUri"], + logout_method: OAuth2ProviderLogoutMethodEnumToJSON(value["logoutMethod"]), + sub_mode: SubModeEnumToJSON(value["subMode"]), + issuer_mode: IssuerModeEnumToJSON(value["issuerMode"]), + jwt_federation_sources: value["jwtFederationSources"], + jwt_federation_providers: value["jwtFederationProviders"], + }; +} diff --git a/packages/client-ts/src/models/OAuth2ProviderSetupURLs.ts b/packages/client-ts/src/models/OAuth2ProviderSetupURLs.ts new file mode 100644 index 0000000000..0518dd596d --- /dev/null +++ b/packages/client-ts/src/models/OAuth2ProviderSetupURLs.ts @@ -0,0 +1,117 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * OAuth2 Provider Metadata serializer + * @export + * @interface OAuth2ProviderSetupURLs + */ +export interface OAuth2ProviderSetupURLs { + /** + * + * @type {string} + * @memberof OAuth2ProviderSetupURLs + */ + readonly issuer: string; + /** + * + * @type {string} + * @memberof OAuth2ProviderSetupURLs + */ + readonly authorize: string; + /** + * + * @type {string} + * @memberof OAuth2ProviderSetupURLs + */ + readonly token: string; + /** + * + * @type {string} + * @memberof OAuth2ProviderSetupURLs + */ + readonly userInfo: string; + /** + * + * @type {string} + * @memberof OAuth2ProviderSetupURLs + */ + readonly providerInfo: string; + /** + * + * @type {string} + * @memberof OAuth2ProviderSetupURLs + */ + readonly logout: string; + /** + * + * @type {string} + * @memberof OAuth2ProviderSetupURLs + */ + readonly jwks: string; +} + +/** + * Check if a given object implements the OAuth2ProviderSetupURLs interface. + */ +export function instanceOfOAuth2ProviderSetupURLs(value: object): value is OAuth2ProviderSetupURLs { + if (!("issuer" in value) || value["issuer"] === undefined) return false; + if (!("authorize" in value) || value["authorize"] === undefined) return false; + if (!("token" in value) || value["token"] === undefined) return false; + if (!("userInfo" in value) || value["userInfo"] === undefined) return false; + if (!("providerInfo" in value) || value["providerInfo"] === undefined) return false; + if (!("logout" in value) || value["logout"] === undefined) return false; + if (!("jwks" in value) || value["jwks"] === undefined) return false; + return true; +} + +export function OAuth2ProviderSetupURLsFromJSON(json: any): OAuth2ProviderSetupURLs { + return OAuth2ProviderSetupURLsFromJSONTyped(json, false); +} + +export function OAuth2ProviderSetupURLsFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): OAuth2ProviderSetupURLs { + if (json == null) { + return json; + } + return { + issuer: json["issuer"], + authorize: json["authorize"], + token: json["token"], + userInfo: json["user_info"], + providerInfo: json["provider_info"], + logout: json["logout"], + jwks: json["jwks"], + }; +} + +export function OAuth2ProviderSetupURLsToJSON(json: any): OAuth2ProviderSetupURLs { + return OAuth2ProviderSetupURLsToJSONTyped(json, false); +} + +export function OAuth2ProviderSetupURLsToJSONTyped( + value?: Omit< + OAuth2ProviderSetupURLs, + "issuer" | "authorize" | "token" | "user_info" | "provider_info" | "logout" | "jwks" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return {}; +} diff --git a/packages/client-ts/src/models/OAuthDeviceCodeChallenge.ts b/packages/client-ts/src/models/OAuthDeviceCodeChallenge.ts new file mode 100644 index 0000000000..17797ef1b5 --- /dev/null +++ b/packages/client-ts/src/models/OAuthDeviceCodeChallenge.ts @@ -0,0 +1,90 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { ContextualFlowInfo } from "./ContextualFlowInfo"; +import { ContextualFlowInfoFromJSON, ContextualFlowInfoToJSON } from "./ContextualFlowInfo"; +import type { ErrorDetail } from "./ErrorDetail"; + +/** + * OAuth Device code challenge + * @export + * @interface OAuthDeviceCodeChallenge + */ +export interface OAuthDeviceCodeChallenge { + /** + * + * @type {ContextualFlowInfo} + * @memberof OAuthDeviceCodeChallenge + */ + flowInfo?: ContextualFlowInfo; + /** + * + * @type {string} + * @memberof OAuthDeviceCodeChallenge + */ + component?: string; + /** + * + * @type {{ [key: string]: Array; }} + * @memberof OAuthDeviceCodeChallenge + */ + responseErrors?: { [key: string]: Array }; +} + +/** + * Check if a given object implements the OAuthDeviceCodeChallenge interface. + */ +export function instanceOfOAuthDeviceCodeChallenge( + value: object, +): value is OAuthDeviceCodeChallenge { + return true; +} + +export function OAuthDeviceCodeChallengeFromJSON(json: any): OAuthDeviceCodeChallenge { + return OAuthDeviceCodeChallengeFromJSONTyped(json, false); +} + +export function OAuthDeviceCodeChallengeFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): OAuthDeviceCodeChallenge { + if (json == null) { + return json; + } + return { + flowInfo: + json["flow_info"] == null ? undefined : ContextualFlowInfoFromJSON(json["flow_info"]), + component: json["component"] == null ? undefined : json["component"], + responseErrors: json["response_errors"] == null ? undefined : json["response_errors"], + }; +} + +export function OAuthDeviceCodeChallengeToJSON(json: any): OAuthDeviceCodeChallenge { + return OAuthDeviceCodeChallengeToJSONTyped(json, false); +} + +export function OAuthDeviceCodeChallengeToJSONTyped( + value?: OAuthDeviceCodeChallenge | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + flow_info: ContextualFlowInfoToJSON(value["flowInfo"]), + component: value["component"], + response_errors: value["responseErrors"], + }; +} diff --git a/packages/client-ts/src/models/OAuthDeviceCodeChallengeResponseRequest.ts b/packages/client-ts/src/models/OAuthDeviceCodeChallengeResponseRequest.ts new file mode 100644 index 0000000000..85a2599843 --- /dev/null +++ b/packages/client-ts/src/models/OAuthDeviceCodeChallengeResponseRequest.ts @@ -0,0 +1,82 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Response that includes the user-entered device code + * @export + * @interface OAuthDeviceCodeChallengeResponseRequest + */ +export interface OAuthDeviceCodeChallengeResponseRequest { + /** + * + * @type {string} + * @memberof OAuthDeviceCodeChallengeResponseRequest + */ + component?: string; + /** + * + * @type {string} + * @memberof OAuthDeviceCodeChallengeResponseRequest + */ + code: string; +} + +/** + * Check if a given object implements the OAuthDeviceCodeChallengeResponseRequest interface. + */ +export function instanceOfOAuthDeviceCodeChallengeResponseRequest( + value: object, +): value is OAuthDeviceCodeChallengeResponseRequest { + if (!("code" in value) || value["code"] === undefined) return false; + return true; +} + +export function OAuthDeviceCodeChallengeResponseRequestFromJSON( + json: any, +): OAuthDeviceCodeChallengeResponseRequest { + return OAuthDeviceCodeChallengeResponseRequestFromJSONTyped(json, false); +} + +export function OAuthDeviceCodeChallengeResponseRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): OAuthDeviceCodeChallengeResponseRequest { + if (json == null) { + return json; + } + return { + component: json["component"] == null ? undefined : json["component"], + code: json["code"], + }; +} + +export function OAuthDeviceCodeChallengeResponseRequestToJSON( + json: any, +): OAuthDeviceCodeChallengeResponseRequest { + return OAuthDeviceCodeChallengeResponseRequestToJSONTyped(json, false); +} + +export function OAuthDeviceCodeChallengeResponseRequestToJSONTyped( + value?: OAuthDeviceCodeChallengeResponseRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + component: value["component"], + code: value["code"], + }; +} diff --git a/packages/client-ts/src/models/OAuthDeviceCodeFinishChallenge.ts b/packages/client-ts/src/models/OAuthDeviceCodeFinishChallenge.ts new file mode 100644 index 0000000000..7bdc32d4d2 --- /dev/null +++ b/packages/client-ts/src/models/OAuthDeviceCodeFinishChallenge.ts @@ -0,0 +1,90 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { ContextualFlowInfo } from "./ContextualFlowInfo"; +import { ContextualFlowInfoFromJSON, ContextualFlowInfoToJSON } from "./ContextualFlowInfo"; +import type { ErrorDetail } from "./ErrorDetail"; + +/** + * Final challenge after user enters their code + * @export + * @interface OAuthDeviceCodeFinishChallenge + */ +export interface OAuthDeviceCodeFinishChallenge { + /** + * + * @type {ContextualFlowInfo} + * @memberof OAuthDeviceCodeFinishChallenge + */ + flowInfo?: ContextualFlowInfo; + /** + * + * @type {string} + * @memberof OAuthDeviceCodeFinishChallenge + */ + component?: string; + /** + * + * @type {{ [key: string]: Array; }} + * @memberof OAuthDeviceCodeFinishChallenge + */ + responseErrors?: { [key: string]: Array }; +} + +/** + * Check if a given object implements the OAuthDeviceCodeFinishChallenge interface. + */ +export function instanceOfOAuthDeviceCodeFinishChallenge( + value: object, +): value is OAuthDeviceCodeFinishChallenge { + return true; +} + +export function OAuthDeviceCodeFinishChallengeFromJSON(json: any): OAuthDeviceCodeFinishChallenge { + return OAuthDeviceCodeFinishChallengeFromJSONTyped(json, false); +} + +export function OAuthDeviceCodeFinishChallengeFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): OAuthDeviceCodeFinishChallenge { + if (json == null) { + return json; + } + return { + flowInfo: + json["flow_info"] == null ? undefined : ContextualFlowInfoFromJSON(json["flow_info"]), + component: json["component"] == null ? undefined : json["component"], + responseErrors: json["response_errors"] == null ? undefined : json["response_errors"], + }; +} + +export function OAuthDeviceCodeFinishChallengeToJSON(json: any): OAuthDeviceCodeFinishChallenge { + return OAuthDeviceCodeFinishChallengeToJSONTyped(json, false); +} + +export function OAuthDeviceCodeFinishChallengeToJSONTyped( + value?: OAuthDeviceCodeFinishChallenge | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + flow_info: ContextualFlowInfoToJSON(value["flowInfo"]), + component: value["component"], + response_errors: value["responseErrors"], + }; +} diff --git a/packages/client-ts/src/models/OAuthDeviceCodeFinishChallengeResponseRequest.ts b/packages/client-ts/src/models/OAuthDeviceCodeFinishChallengeResponseRequest.ts new file mode 100644 index 0000000000..3979ec4e59 --- /dev/null +++ b/packages/client-ts/src/models/OAuthDeviceCodeFinishChallengeResponseRequest.ts @@ -0,0 +1,73 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Response that device has been authenticated and tab can be closed + * @export + * @interface OAuthDeviceCodeFinishChallengeResponseRequest + */ +export interface OAuthDeviceCodeFinishChallengeResponseRequest { + /** + * + * @type {string} + * @memberof OAuthDeviceCodeFinishChallengeResponseRequest + */ + component?: string; +} + +/** + * Check if a given object implements the OAuthDeviceCodeFinishChallengeResponseRequest interface. + */ +export function instanceOfOAuthDeviceCodeFinishChallengeResponseRequest( + value: object, +): value is OAuthDeviceCodeFinishChallengeResponseRequest { + return true; +} + +export function OAuthDeviceCodeFinishChallengeResponseRequestFromJSON( + json: any, +): OAuthDeviceCodeFinishChallengeResponseRequest { + return OAuthDeviceCodeFinishChallengeResponseRequestFromJSONTyped(json, false); +} + +export function OAuthDeviceCodeFinishChallengeResponseRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): OAuthDeviceCodeFinishChallengeResponseRequest { + if (json == null) { + return json; + } + return { + component: json["component"] == null ? undefined : json["component"], + }; +} + +export function OAuthDeviceCodeFinishChallengeResponseRequestToJSON( + json: any, +): OAuthDeviceCodeFinishChallengeResponseRequest { + return OAuthDeviceCodeFinishChallengeResponseRequestToJSONTyped(json, false); +} + +export function OAuthDeviceCodeFinishChallengeResponseRequestToJSONTyped( + value?: OAuthDeviceCodeFinishChallengeResponseRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + component: value["component"], + }; +} diff --git a/packages/client-ts/src/models/OAuthSource.ts b/packages/client-ts/src/models/OAuthSource.ts new file mode 100644 index 0000000000..3f91411ff7 --- /dev/null +++ b/packages/client-ts/src/models/OAuthSource.ts @@ -0,0 +1,394 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { AuthorizationCodeAuthMethodEnum } from "./AuthorizationCodeAuthMethodEnum"; +import { + AuthorizationCodeAuthMethodEnumFromJSON, + AuthorizationCodeAuthMethodEnumToJSON, +} from "./AuthorizationCodeAuthMethodEnum"; +import type { GroupMatchingModeEnum } from "./GroupMatchingModeEnum"; +import { + GroupMatchingModeEnumFromJSON, + GroupMatchingModeEnumToJSON, +} from "./GroupMatchingModeEnum"; +import type { PKCEMethodEnum } from "./PKCEMethodEnum"; +import { PKCEMethodEnumFromJSON, PKCEMethodEnumToJSON } from "./PKCEMethodEnum"; +import type { PolicyEngineMode } from "./PolicyEngineMode"; +import { PolicyEngineModeFromJSON, PolicyEngineModeToJSON } from "./PolicyEngineMode"; +import type { ProviderTypeEnum } from "./ProviderTypeEnum"; +import { ProviderTypeEnumFromJSON, ProviderTypeEnumToJSON } from "./ProviderTypeEnum"; +import type { SourceType } from "./SourceType"; +import { SourceTypeFromJSON } from "./SourceType"; +import type { ThemedUrls } from "./ThemedUrls"; +import { ThemedUrlsFromJSON } from "./ThemedUrls"; +import type { UserMatchingModeEnum } from "./UserMatchingModeEnum"; +import { UserMatchingModeEnumFromJSON, UserMatchingModeEnumToJSON } from "./UserMatchingModeEnum"; + +/** + * OAuth Source Serializer + * @export + * @interface OAuthSource + */ +export interface OAuthSource { + /** + * + * @type {string} + * @memberof OAuthSource + */ + readonly pk: string; + /** + * Source's display Name. + * @type {string} + * @memberof OAuthSource + */ + name: string; + /** + * Internal source name, used in URLs. + * @type {string} + * @memberof OAuthSource + */ + slug: string; + /** + * + * @type {boolean} + * @memberof OAuthSource + */ + enabled?: boolean; + /** + * When enabled, this source will be displayed as a prominent button on the login page, instead of a small icon. + * @type {boolean} + * @memberof OAuthSource + */ + promoted?: boolean; + /** + * Flow to use when authenticating existing users. + * @type {string} + * @memberof OAuthSource + */ + authenticationFlow?: string | null; + /** + * Flow to use when enrolling new users. + * @type {string} + * @memberof OAuthSource + */ + enrollmentFlow?: string | null; + /** + * + * @type {Array} + * @memberof OAuthSource + */ + userPropertyMappings?: Array; + /** + * + * @type {Array} + * @memberof OAuthSource + */ + groupPropertyMappings?: Array; + /** + * Get object component so that we know how to edit the object + * @type {string} + * @memberof OAuthSource + */ + readonly component: string; + /** + * Return object's verbose_name + * @type {string} + * @memberof OAuthSource + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof OAuthSource + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof OAuthSource + */ + readonly metaModelName: string; + /** + * + * @type {PolicyEngineMode} + * @memberof OAuthSource + */ + policyEngineMode?: PolicyEngineMode; + /** + * How the source determines if an existing user should be authenticated or a new user enrolled. + * @type {UserMatchingModeEnum} + * @memberof OAuthSource + */ + userMatchingMode?: UserMatchingModeEnum; + /** + * Objects that are managed by authentik. These objects are created and updated automatically. This flag only indicates that an object can be overwritten by migrations. You can still modify the objects via the API, but expect changes to be overwritten in a later update. + * @type {string} + * @memberof OAuthSource + */ + readonly managed: string | null; + /** + * + * @type {string} + * @memberof OAuthSource + */ + userPathTemplate?: string; + /** + * + * @type {string} + * @memberof OAuthSource + */ + icon?: string; + /** + * + * @type {string} + * @memberof OAuthSource + */ + readonly iconUrl: string | null; + /** + * + * @type {ThemedUrls} + * @memberof OAuthSource + */ + readonly iconThemedUrls: ThemedUrls | null; + /** + * How the source determines if an existing group should be used or a new group created. + * @type {GroupMatchingModeEnum} + * @memberof OAuthSource + */ + groupMatchingMode?: GroupMatchingModeEnum; + /** + * + * @type {ProviderTypeEnum} + * @memberof OAuthSource + */ + providerType: ProviderTypeEnum; + /** + * URL used to request the initial token. This URL is only required for OAuth 1. + * @type {string} + * @memberof OAuthSource + */ + requestTokenUrl?: string | null; + /** + * URL the user is redirect to to conest the flow. + * @type {string} + * @memberof OAuthSource + */ + authorizationUrl?: string | null; + /** + * URL used by authentik to retrieve tokens. + * @type {string} + * @memberof OAuthSource + */ + accessTokenUrl?: string | null; + /** + * URL used by authentik to get user information. + * @type {string} + * @memberof OAuthSource + */ + profileUrl?: string | null; + /** + * + * @type {PKCEMethodEnum} + * @memberof OAuthSource + */ + pkce?: PKCEMethodEnum; + /** + * + * @type {string} + * @memberof OAuthSource + */ + consumerKey: string; + /** + * Get OAuth Callback URL + * @type {string} + * @memberof OAuthSource + */ + readonly callbackUrl: string; + /** + * + * @type {string} + * @memberof OAuthSource + */ + additionalScopes?: string; + /** + * + * @type {SourceType} + * @memberof OAuthSource + */ + readonly type: SourceType; + /** + * + * @type {string} + * @memberof OAuthSource + */ + oidcWellKnownUrl?: string; + /** + * + * @type {string} + * @memberof OAuthSource + */ + oidcJwksUrl?: string; + /** + * + * @type {{ [key: string]: any; }} + * @memberof OAuthSource + */ + oidcJwks?: { [key: string]: any }; + /** + * How to perform authentication during an authorization_code token request flow + * @type {AuthorizationCodeAuthMethodEnum} + * @memberof OAuthSource + */ + authorizationCodeAuthMethod?: AuthorizationCodeAuthMethodEnum; +} + +/** + * Check if a given object implements the OAuthSource interface. + */ +export function instanceOfOAuthSource(value: object): value is OAuthSource { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("slug" in value) || value["slug"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + if (!("managed" in value) || value["managed"] === undefined) return false; + if (!("iconUrl" in value) || value["iconUrl"] === undefined) return false; + if (!("iconThemedUrls" in value) || value["iconThemedUrls"] === undefined) return false; + if (!("providerType" in value) || value["providerType"] === undefined) return false; + if (!("consumerKey" in value) || value["consumerKey"] === undefined) return false; + if (!("callbackUrl" in value) || value["callbackUrl"] === undefined) return false; + if (!("type" in value) || value["type"] === undefined) return false; + return true; +} + +export function OAuthSourceFromJSON(json: any): OAuthSource { + return OAuthSourceFromJSONTyped(json, false); +} + +export function OAuthSourceFromJSONTyped(json: any, ignoreDiscriminator: boolean): OAuthSource { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + slug: json["slug"], + enabled: json["enabled"] == null ? undefined : json["enabled"], + promoted: json["promoted"] == null ? undefined : json["promoted"], + authenticationFlow: + json["authentication_flow"] == null ? undefined : json["authentication_flow"], + enrollmentFlow: json["enrollment_flow"] == null ? undefined : json["enrollment_flow"], + userPropertyMappings: + json["user_property_mappings"] == null ? undefined : json["user_property_mappings"], + groupPropertyMappings: + json["group_property_mappings"] == null ? undefined : json["group_property_mappings"], + component: json["component"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + policyEngineMode: + json["policy_engine_mode"] == null + ? undefined + : PolicyEngineModeFromJSON(json["policy_engine_mode"]), + userMatchingMode: + json["user_matching_mode"] == null + ? undefined + : UserMatchingModeEnumFromJSON(json["user_matching_mode"]), + managed: json["managed"], + userPathTemplate: + json["user_path_template"] == null ? undefined : json["user_path_template"], + icon: json["icon"] == null ? undefined : json["icon"], + iconUrl: json["icon_url"], + iconThemedUrls: ThemedUrlsFromJSON(json["icon_themed_urls"]), + groupMatchingMode: + json["group_matching_mode"] == null + ? undefined + : GroupMatchingModeEnumFromJSON(json["group_matching_mode"]), + providerType: ProviderTypeEnumFromJSON(json["provider_type"]), + requestTokenUrl: json["request_token_url"] == null ? undefined : json["request_token_url"], + authorizationUrl: json["authorization_url"] == null ? undefined : json["authorization_url"], + accessTokenUrl: json["access_token_url"] == null ? undefined : json["access_token_url"], + profileUrl: json["profile_url"] == null ? undefined : json["profile_url"], + pkce: json["pkce"] == null ? undefined : PKCEMethodEnumFromJSON(json["pkce"]), + consumerKey: json["consumer_key"], + callbackUrl: json["callback_url"], + additionalScopes: json["additional_scopes"] == null ? undefined : json["additional_scopes"], + type: SourceTypeFromJSON(json["type"]), + oidcWellKnownUrl: + json["oidc_well_known_url"] == null ? undefined : json["oidc_well_known_url"], + oidcJwksUrl: json["oidc_jwks_url"] == null ? undefined : json["oidc_jwks_url"], + oidcJwks: json["oidc_jwks"] == null ? undefined : json["oidc_jwks"], + authorizationCodeAuthMethod: + json["authorization_code_auth_method"] == null + ? undefined + : AuthorizationCodeAuthMethodEnumFromJSON(json["authorization_code_auth_method"]), + }; +} + +export function OAuthSourceToJSON(json: any): OAuthSource { + return OAuthSourceToJSONTyped(json, false); +} + +export function OAuthSourceToJSONTyped( + value?: Omit< + OAuthSource, + | "pk" + | "component" + | "verbose_name" + | "verbose_name_plural" + | "meta_model_name" + | "managed" + | "icon_url" + | "icon_themed_urls" + | "callback_url" + | "type" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + slug: value["slug"], + enabled: value["enabled"], + promoted: value["promoted"], + authentication_flow: value["authenticationFlow"], + enrollment_flow: value["enrollmentFlow"], + user_property_mappings: value["userPropertyMappings"], + group_property_mappings: value["groupPropertyMappings"], + policy_engine_mode: PolicyEngineModeToJSON(value["policyEngineMode"]), + user_matching_mode: UserMatchingModeEnumToJSON(value["userMatchingMode"]), + user_path_template: value["userPathTemplate"], + icon: value["icon"], + group_matching_mode: GroupMatchingModeEnumToJSON(value["groupMatchingMode"]), + provider_type: ProviderTypeEnumToJSON(value["providerType"]), + request_token_url: value["requestTokenUrl"], + authorization_url: value["authorizationUrl"], + access_token_url: value["accessTokenUrl"], + profile_url: value["profileUrl"], + pkce: PKCEMethodEnumToJSON(value["pkce"]), + consumer_key: value["consumerKey"], + additional_scopes: value["additionalScopes"], + oidc_well_known_url: value["oidcWellKnownUrl"], + oidc_jwks_url: value["oidcJwksUrl"], + oidc_jwks: value["oidcJwks"], + authorization_code_auth_method: AuthorizationCodeAuthMethodEnumToJSON( + value["authorizationCodeAuthMethod"], + ), + }; +} diff --git a/packages/client-ts/src/models/OAuthSourcePropertyMapping.ts b/packages/client-ts/src/models/OAuthSourcePropertyMapping.ts new file mode 100644 index 0000000000..9431948a56 --- /dev/null +++ b/packages/client-ts/src/models/OAuthSourcePropertyMapping.ts @@ -0,0 +1,130 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * OAuthSourcePropertyMapping Serializer + * @export + * @interface OAuthSourcePropertyMapping + */ +export interface OAuthSourcePropertyMapping { + /** + * + * @type {string} + * @memberof OAuthSourcePropertyMapping + */ + readonly pk: string; + /** + * Objects that are managed by authentik. These objects are created and updated automatically. This flag only indicates that an object can be overwritten by migrations. You can still modify the objects via the API, but expect changes to be overwritten in a later update. + * @type {string} + * @memberof OAuthSourcePropertyMapping + */ + managed?: string | null; + /** + * + * @type {string} + * @memberof OAuthSourcePropertyMapping + */ + name: string; + /** + * + * @type {string} + * @memberof OAuthSourcePropertyMapping + */ + expression: string; + /** + * Get object's component so that we know how to edit the object + * @type {string} + * @memberof OAuthSourcePropertyMapping + */ + readonly component: string; + /** + * Return object's verbose_name + * @type {string} + * @memberof OAuthSourcePropertyMapping + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof OAuthSourcePropertyMapping + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof OAuthSourcePropertyMapping + */ + readonly metaModelName: string; +} + +/** + * Check if a given object implements the OAuthSourcePropertyMapping interface. + */ +export function instanceOfOAuthSourcePropertyMapping( + value: object, +): value is OAuthSourcePropertyMapping { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("expression" in value) || value["expression"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + return true; +} + +export function OAuthSourcePropertyMappingFromJSON(json: any): OAuthSourcePropertyMapping { + return OAuthSourcePropertyMappingFromJSONTyped(json, false); +} + +export function OAuthSourcePropertyMappingFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): OAuthSourcePropertyMapping { + if (json == null) { + return json; + } + return { + pk: json["pk"], + managed: json["managed"] == null ? undefined : json["managed"], + name: json["name"], + expression: json["expression"], + component: json["component"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + }; +} + +export function OAuthSourcePropertyMappingToJSON(json: any): OAuthSourcePropertyMapping { + return OAuthSourcePropertyMappingToJSONTyped(json, false); +} + +export function OAuthSourcePropertyMappingToJSONTyped( + value?: Omit< + OAuthSourcePropertyMapping, + "pk" | "component" | "verbose_name" | "verbose_name_plural" | "meta_model_name" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + managed: value["managed"], + name: value["name"], + expression: value["expression"], + }; +} diff --git a/packages/client-ts/src/models/OAuthSourcePropertyMappingRequest.ts b/packages/client-ts/src/models/OAuthSourcePropertyMappingRequest.ts new file mode 100644 index 0000000000..27f1fffa6f --- /dev/null +++ b/packages/client-ts/src/models/OAuthSourcePropertyMappingRequest.ts @@ -0,0 +1,91 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * OAuthSourcePropertyMapping Serializer + * @export + * @interface OAuthSourcePropertyMappingRequest + */ +export interface OAuthSourcePropertyMappingRequest { + /** + * Objects that are managed by authentik. These objects are created and updated automatically. This flag only indicates that an object can be overwritten by migrations. You can still modify the objects via the API, but expect changes to be overwritten in a later update. + * @type {string} + * @memberof OAuthSourcePropertyMappingRequest + */ + managed?: string | null; + /** + * + * @type {string} + * @memberof OAuthSourcePropertyMappingRequest + */ + name: string; + /** + * + * @type {string} + * @memberof OAuthSourcePropertyMappingRequest + */ + expression: string; +} + +/** + * Check if a given object implements the OAuthSourcePropertyMappingRequest interface. + */ +export function instanceOfOAuthSourcePropertyMappingRequest( + value: object, +): value is OAuthSourcePropertyMappingRequest { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("expression" in value) || value["expression"] === undefined) return false; + return true; +} + +export function OAuthSourcePropertyMappingRequestFromJSON( + json: any, +): OAuthSourcePropertyMappingRequest { + return OAuthSourcePropertyMappingRequestFromJSONTyped(json, false); +} + +export function OAuthSourcePropertyMappingRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): OAuthSourcePropertyMappingRequest { + if (json == null) { + return json; + } + return { + managed: json["managed"] == null ? undefined : json["managed"], + name: json["name"], + expression: json["expression"], + }; +} + +export function OAuthSourcePropertyMappingRequestToJSON( + json: any, +): OAuthSourcePropertyMappingRequest { + return OAuthSourcePropertyMappingRequestToJSONTyped(json, false); +} + +export function OAuthSourcePropertyMappingRequestToJSONTyped( + value?: OAuthSourcePropertyMappingRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + managed: value["managed"], + name: value["name"], + expression: value["expression"], + }; +} diff --git a/packages/client-ts/src/models/OAuthSourceRequest.ts b/packages/client-ts/src/models/OAuthSourceRequest.ts new file mode 100644 index 0000000000..bf665aa229 --- /dev/null +++ b/packages/client-ts/src/models/OAuthSourceRequest.ts @@ -0,0 +1,310 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { AuthorizationCodeAuthMethodEnum } from "./AuthorizationCodeAuthMethodEnum"; +import { + AuthorizationCodeAuthMethodEnumFromJSON, + AuthorizationCodeAuthMethodEnumToJSON, +} from "./AuthorizationCodeAuthMethodEnum"; +import type { GroupMatchingModeEnum } from "./GroupMatchingModeEnum"; +import { + GroupMatchingModeEnumFromJSON, + GroupMatchingModeEnumToJSON, +} from "./GroupMatchingModeEnum"; +import type { PKCEMethodEnum } from "./PKCEMethodEnum"; +import { PKCEMethodEnumFromJSON, PKCEMethodEnumToJSON } from "./PKCEMethodEnum"; +import type { PolicyEngineMode } from "./PolicyEngineMode"; +import { PolicyEngineModeFromJSON, PolicyEngineModeToJSON } from "./PolicyEngineMode"; +import type { ProviderTypeEnum } from "./ProviderTypeEnum"; +import { ProviderTypeEnumFromJSON, ProviderTypeEnumToJSON } from "./ProviderTypeEnum"; +import type { UserMatchingModeEnum } from "./UserMatchingModeEnum"; +import { UserMatchingModeEnumFromJSON, UserMatchingModeEnumToJSON } from "./UserMatchingModeEnum"; + +/** + * OAuth Source Serializer + * @export + * @interface OAuthSourceRequest + */ +export interface OAuthSourceRequest { + /** + * Source's display Name. + * @type {string} + * @memberof OAuthSourceRequest + */ + name: string; + /** + * Internal source name, used in URLs. + * @type {string} + * @memberof OAuthSourceRequest + */ + slug: string; + /** + * + * @type {boolean} + * @memberof OAuthSourceRequest + */ + enabled?: boolean; + /** + * When enabled, this source will be displayed as a prominent button on the login page, instead of a small icon. + * @type {boolean} + * @memberof OAuthSourceRequest + */ + promoted?: boolean; + /** + * Flow to use when authenticating existing users. + * @type {string} + * @memberof OAuthSourceRequest + */ + authenticationFlow?: string | null; + /** + * Flow to use when enrolling new users. + * @type {string} + * @memberof OAuthSourceRequest + */ + enrollmentFlow?: string | null; + /** + * + * @type {Array} + * @memberof OAuthSourceRequest + */ + userPropertyMappings?: Array; + /** + * + * @type {Array} + * @memberof OAuthSourceRequest + */ + groupPropertyMappings?: Array; + /** + * + * @type {PolicyEngineMode} + * @memberof OAuthSourceRequest + */ + policyEngineMode?: PolicyEngineMode; + /** + * How the source determines if an existing user should be authenticated or a new user enrolled. + * @type {UserMatchingModeEnum} + * @memberof OAuthSourceRequest + */ + userMatchingMode?: UserMatchingModeEnum; + /** + * + * @type {string} + * @memberof OAuthSourceRequest + */ + userPathTemplate?: string; + /** + * + * @type {string} + * @memberof OAuthSourceRequest + */ + icon?: string; + /** + * How the source determines if an existing group should be used or a new group created. + * @type {GroupMatchingModeEnum} + * @memberof OAuthSourceRequest + */ + groupMatchingMode?: GroupMatchingModeEnum; + /** + * + * @type {ProviderTypeEnum} + * @memberof OAuthSourceRequest + */ + providerType: ProviderTypeEnum; + /** + * URL used to request the initial token. This URL is only required for OAuth 1. + * @type {string} + * @memberof OAuthSourceRequest + */ + requestTokenUrl?: string | null; + /** + * URL the user is redirect to to conest the flow. + * @type {string} + * @memberof OAuthSourceRequest + */ + authorizationUrl?: string | null; + /** + * URL used by authentik to retrieve tokens. + * @type {string} + * @memberof OAuthSourceRequest + */ + accessTokenUrl?: string | null; + /** + * URL used by authentik to get user information. + * @type {string} + * @memberof OAuthSourceRequest + */ + profileUrl?: string | null; + /** + * + * @type {PKCEMethodEnum} + * @memberof OAuthSourceRequest + */ + pkce?: PKCEMethodEnum; + /** + * + * @type {string} + * @memberof OAuthSourceRequest + */ + consumerKey: string; + /** + * + * @type {string} + * @memberof OAuthSourceRequest + */ + consumerSecret: string; + /** + * + * @type {string} + * @memberof OAuthSourceRequest + */ + additionalScopes?: string; + /** + * + * @type {string} + * @memberof OAuthSourceRequest + */ + oidcWellKnownUrl?: string; + /** + * + * @type {string} + * @memberof OAuthSourceRequest + */ + oidcJwksUrl?: string; + /** + * + * @type {{ [key: string]: any; }} + * @memberof OAuthSourceRequest + */ + oidcJwks?: { [key: string]: any }; + /** + * How to perform authentication during an authorization_code token request flow + * @type {AuthorizationCodeAuthMethodEnum} + * @memberof OAuthSourceRequest + */ + authorizationCodeAuthMethod?: AuthorizationCodeAuthMethodEnum; +} + +/** + * Check if a given object implements the OAuthSourceRequest interface. + */ +export function instanceOfOAuthSourceRequest(value: object): value is OAuthSourceRequest { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("slug" in value) || value["slug"] === undefined) return false; + if (!("providerType" in value) || value["providerType"] === undefined) return false; + if (!("consumerKey" in value) || value["consumerKey"] === undefined) return false; + if (!("consumerSecret" in value) || value["consumerSecret"] === undefined) return false; + return true; +} + +export function OAuthSourceRequestFromJSON(json: any): OAuthSourceRequest { + return OAuthSourceRequestFromJSONTyped(json, false); +} + +export function OAuthSourceRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): OAuthSourceRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + slug: json["slug"], + enabled: json["enabled"] == null ? undefined : json["enabled"], + promoted: json["promoted"] == null ? undefined : json["promoted"], + authenticationFlow: + json["authentication_flow"] == null ? undefined : json["authentication_flow"], + enrollmentFlow: json["enrollment_flow"] == null ? undefined : json["enrollment_flow"], + userPropertyMappings: + json["user_property_mappings"] == null ? undefined : json["user_property_mappings"], + groupPropertyMappings: + json["group_property_mappings"] == null ? undefined : json["group_property_mappings"], + policyEngineMode: + json["policy_engine_mode"] == null + ? undefined + : PolicyEngineModeFromJSON(json["policy_engine_mode"]), + userMatchingMode: + json["user_matching_mode"] == null + ? undefined + : UserMatchingModeEnumFromJSON(json["user_matching_mode"]), + userPathTemplate: + json["user_path_template"] == null ? undefined : json["user_path_template"], + icon: json["icon"] == null ? undefined : json["icon"], + groupMatchingMode: + json["group_matching_mode"] == null + ? undefined + : GroupMatchingModeEnumFromJSON(json["group_matching_mode"]), + providerType: ProviderTypeEnumFromJSON(json["provider_type"]), + requestTokenUrl: json["request_token_url"] == null ? undefined : json["request_token_url"], + authorizationUrl: json["authorization_url"] == null ? undefined : json["authorization_url"], + accessTokenUrl: json["access_token_url"] == null ? undefined : json["access_token_url"], + profileUrl: json["profile_url"] == null ? undefined : json["profile_url"], + pkce: json["pkce"] == null ? undefined : PKCEMethodEnumFromJSON(json["pkce"]), + consumerKey: json["consumer_key"], + consumerSecret: json["consumer_secret"], + additionalScopes: json["additional_scopes"] == null ? undefined : json["additional_scopes"], + oidcWellKnownUrl: + json["oidc_well_known_url"] == null ? undefined : json["oidc_well_known_url"], + oidcJwksUrl: json["oidc_jwks_url"] == null ? undefined : json["oidc_jwks_url"], + oidcJwks: json["oidc_jwks"] == null ? undefined : json["oidc_jwks"], + authorizationCodeAuthMethod: + json["authorization_code_auth_method"] == null + ? undefined + : AuthorizationCodeAuthMethodEnumFromJSON(json["authorization_code_auth_method"]), + }; +} + +export function OAuthSourceRequestToJSON(json: any): OAuthSourceRequest { + return OAuthSourceRequestToJSONTyped(json, false); +} + +export function OAuthSourceRequestToJSONTyped( + value?: OAuthSourceRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + slug: value["slug"], + enabled: value["enabled"], + promoted: value["promoted"], + authentication_flow: value["authenticationFlow"], + enrollment_flow: value["enrollmentFlow"], + user_property_mappings: value["userPropertyMappings"], + group_property_mappings: value["groupPropertyMappings"], + policy_engine_mode: PolicyEngineModeToJSON(value["policyEngineMode"]), + user_matching_mode: UserMatchingModeEnumToJSON(value["userMatchingMode"]), + user_path_template: value["userPathTemplate"], + icon: value["icon"], + group_matching_mode: GroupMatchingModeEnumToJSON(value["groupMatchingMode"]), + provider_type: ProviderTypeEnumToJSON(value["providerType"]), + request_token_url: value["requestTokenUrl"], + authorization_url: value["authorizationUrl"], + access_token_url: value["accessTokenUrl"], + profile_url: value["profileUrl"], + pkce: PKCEMethodEnumToJSON(value["pkce"]), + consumer_key: value["consumerKey"], + consumer_secret: value["consumerSecret"], + additional_scopes: value["additionalScopes"], + oidc_well_known_url: value["oidcWellKnownUrl"], + oidc_jwks_url: value["oidcJwksUrl"], + oidc_jwks: value["oidcJwks"], + authorization_code_auth_method: AuthorizationCodeAuthMethodEnumToJSON( + value["authorizationCodeAuthMethod"], + ), + }; +} diff --git a/packages/client-ts/src/models/OpenIDConnectConfiguration.ts b/packages/client-ts/src/models/OpenIDConnectConfiguration.ts new file mode 100644 index 0000000000..85f450761c --- /dev/null +++ b/packages/client-ts/src/models/OpenIDConnectConfiguration.ts @@ -0,0 +1,172 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * rest_framework Serializer for OIDC Configuration + * @export + * @interface OpenIDConnectConfiguration + */ +export interface OpenIDConnectConfiguration { + /** + * + * @type {string} + * @memberof OpenIDConnectConfiguration + */ + issuer: string; + /** + * + * @type {string} + * @memberof OpenIDConnectConfiguration + */ + authorizationEndpoint: string; + /** + * + * @type {string} + * @memberof OpenIDConnectConfiguration + */ + tokenEndpoint: string; + /** + * + * @type {string} + * @memberof OpenIDConnectConfiguration + */ + userinfoEndpoint: string; + /** + * + * @type {string} + * @memberof OpenIDConnectConfiguration + */ + endSessionEndpoint: string; + /** + * + * @type {string} + * @memberof OpenIDConnectConfiguration + */ + introspectionEndpoint: string; + /** + * + * @type {string} + * @memberof OpenIDConnectConfiguration + */ + jwksUri: string; + /** + * + * @type {Array} + * @memberof OpenIDConnectConfiguration + */ + responseTypesSupported: Array; + /** + * + * @type {Array} + * @memberof OpenIDConnectConfiguration + */ + idTokenSigningAlgValuesSupported: Array; + /** + * + * @type {Array} + * @memberof OpenIDConnectConfiguration + */ + subjectTypesSupported: Array; + /** + * + * @type {Array} + * @memberof OpenIDConnectConfiguration + */ + tokenEndpointAuthMethodsSupported: Array; +} + +/** + * Check if a given object implements the OpenIDConnectConfiguration interface. + */ +export function instanceOfOpenIDConnectConfiguration( + value: object, +): value is OpenIDConnectConfiguration { + if (!("issuer" in value) || value["issuer"] === undefined) return false; + if (!("authorizationEndpoint" in value) || value["authorizationEndpoint"] === undefined) + return false; + if (!("tokenEndpoint" in value) || value["tokenEndpoint"] === undefined) return false; + if (!("userinfoEndpoint" in value) || value["userinfoEndpoint"] === undefined) return false; + if (!("endSessionEndpoint" in value) || value["endSessionEndpoint"] === undefined) return false; + if (!("introspectionEndpoint" in value) || value["introspectionEndpoint"] === undefined) + return false; + if (!("jwksUri" in value) || value["jwksUri"] === undefined) return false; + if (!("responseTypesSupported" in value) || value["responseTypesSupported"] === undefined) + return false; + if ( + !("idTokenSigningAlgValuesSupported" in value) || + value["idTokenSigningAlgValuesSupported"] === undefined + ) + return false; + if (!("subjectTypesSupported" in value) || value["subjectTypesSupported"] === undefined) + return false; + if ( + !("tokenEndpointAuthMethodsSupported" in value) || + value["tokenEndpointAuthMethodsSupported"] === undefined + ) + return false; + return true; +} + +export function OpenIDConnectConfigurationFromJSON(json: any): OpenIDConnectConfiguration { + return OpenIDConnectConfigurationFromJSONTyped(json, false); +} + +export function OpenIDConnectConfigurationFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): OpenIDConnectConfiguration { + if (json == null) { + return json; + } + return { + issuer: json["issuer"], + authorizationEndpoint: json["authorization_endpoint"], + tokenEndpoint: json["token_endpoint"], + userinfoEndpoint: json["userinfo_endpoint"], + endSessionEndpoint: json["end_session_endpoint"], + introspectionEndpoint: json["introspection_endpoint"], + jwksUri: json["jwks_uri"], + responseTypesSupported: json["response_types_supported"], + idTokenSigningAlgValuesSupported: json["id_token_signing_alg_values_supported"], + subjectTypesSupported: json["subject_types_supported"], + tokenEndpointAuthMethodsSupported: json["token_endpoint_auth_methods_supported"], + }; +} + +export function OpenIDConnectConfigurationToJSON(json: any): OpenIDConnectConfiguration { + return OpenIDConnectConfigurationToJSONTyped(json, false); +} + +export function OpenIDConnectConfigurationToJSONTyped( + value?: OpenIDConnectConfiguration | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + issuer: value["issuer"], + authorization_endpoint: value["authorizationEndpoint"], + token_endpoint: value["tokenEndpoint"], + userinfo_endpoint: value["userinfoEndpoint"], + end_session_endpoint: value["endSessionEndpoint"], + introspection_endpoint: value["introspectionEndpoint"], + jwks_uri: value["jwksUri"], + response_types_supported: value["responseTypesSupported"], + id_token_signing_alg_values_supported: value["idTokenSigningAlgValuesSupported"], + subject_types_supported: value["subjectTypesSupported"], + token_endpoint_auth_methods_supported: value["tokenEndpointAuthMethodsSupported"], + }; +} diff --git a/packages/client-ts/src/models/OperatingSystem.ts b/packages/client-ts/src/models/OperatingSystem.ts new file mode 100644 index 0000000000..e00b899122 --- /dev/null +++ b/packages/client-ts/src/models/OperatingSystem.ts @@ -0,0 +1,99 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { DeviceFactsOSFamily } from "./DeviceFactsOSFamily"; +import { DeviceFactsOSFamilyFromJSON, DeviceFactsOSFamilyToJSON } from "./DeviceFactsOSFamily"; + +/** + * For example: + * {"family":"linux","name":"Ubuntu","version":"24.04.3 LTS (Noble Numbat)","arch":"amd64"} + * {"family": "windows","name":"Server 2022 Datacenter","version":"10.0.20348.4405","arch":"amd64"} + * {"family": "windows","name":"Server 2022 Datacenter","version":"10.0.20348.4405","arch":"amd64"} + * {"family": "mac_os", "name": "", "version": "26.2", "arch": "arm64"} + * @export + * @interface OperatingSystem + */ +export interface OperatingSystem { + /** + * + * @type {DeviceFactsOSFamily} + * @memberof OperatingSystem + */ + family: DeviceFactsOSFamily; + /** + * Operating System name, such as 'Server 2022' or 'Ubuntu' + * @type {string} + * @memberof OperatingSystem + */ + name?: string; + /** + * Operating System version, must always be the version number but may contain build name + * @type {string} + * @memberof OperatingSystem + */ + version?: string; + /** + * + * @type {string} + * @memberof OperatingSystem + */ + arch?: string; +} + +/** + * Check if a given object implements the OperatingSystem interface. + */ +export function instanceOfOperatingSystem(value: object): value is OperatingSystem { + if (!("family" in value) || value["family"] === undefined) return false; + return true; +} + +export function OperatingSystemFromJSON(json: any): OperatingSystem { + return OperatingSystemFromJSONTyped(json, false); +} + +export function OperatingSystemFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): OperatingSystem { + if (json == null) { + return json; + } + return { + family: DeviceFactsOSFamilyFromJSON(json["family"]), + name: json["name"] == null ? undefined : json["name"], + version: json["version"] == null ? undefined : json["version"], + arch: json["arch"] == null ? undefined : json["arch"], + }; +} + +export function OperatingSystemToJSON(json: any): OperatingSystem { + return OperatingSystemToJSONTyped(json, false); +} + +export function OperatingSystemToJSONTyped( + value?: OperatingSystem | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + family: DeviceFactsOSFamilyToJSON(value["family"]), + name: value["name"], + version: value["version"], + arch: value["arch"], + }; +} diff --git a/packages/client-ts/src/models/OperatingSystemRequest.ts b/packages/client-ts/src/models/OperatingSystemRequest.ts new file mode 100644 index 0000000000..b5d511e5c2 --- /dev/null +++ b/packages/client-ts/src/models/OperatingSystemRequest.ts @@ -0,0 +1,99 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { DeviceFactsOSFamily } from "./DeviceFactsOSFamily"; +import { DeviceFactsOSFamilyFromJSON, DeviceFactsOSFamilyToJSON } from "./DeviceFactsOSFamily"; + +/** + * For example: + * {"family":"linux","name":"Ubuntu","version":"24.04.3 LTS (Noble Numbat)","arch":"amd64"} + * {"family": "windows","name":"Server 2022 Datacenter","version":"10.0.20348.4405","arch":"amd64"} + * {"family": "windows","name":"Server 2022 Datacenter","version":"10.0.20348.4405","arch":"amd64"} + * {"family": "mac_os", "name": "", "version": "26.2", "arch": "arm64"} + * @export + * @interface OperatingSystemRequest + */ +export interface OperatingSystemRequest { + /** + * + * @type {DeviceFactsOSFamily} + * @memberof OperatingSystemRequest + */ + family: DeviceFactsOSFamily; + /** + * Operating System name, such as 'Server 2022' or 'Ubuntu' + * @type {string} + * @memberof OperatingSystemRequest + */ + name?: string; + /** + * Operating System version, must always be the version number but may contain build name + * @type {string} + * @memberof OperatingSystemRequest + */ + version?: string; + /** + * + * @type {string} + * @memberof OperatingSystemRequest + */ + arch?: string; +} + +/** + * Check if a given object implements the OperatingSystemRequest interface. + */ +export function instanceOfOperatingSystemRequest(value: object): value is OperatingSystemRequest { + if (!("family" in value) || value["family"] === undefined) return false; + return true; +} + +export function OperatingSystemRequestFromJSON(json: any): OperatingSystemRequest { + return OperatingSystemRequestFromJSONTyped(json, false); +} + +export function OperatingSystemRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): OperatingSystemRequest { + if (json == null) { + return json; + } + return { + family: DeviceFactsOSFamilyFromJSON(json["family"]), + name: json["name"] == null ? undefined : json["name"], + version: json["version"] == null ? undefined : json["version"], + arch: json["arch"] == null ? undefined : json["arch"], + }; +} + +export function OperatingSystemRequestToJSON(json: any): OperatingSystemRequest { + return OperatingSystemRequestToJSONTyped(json, false); +} + +export function OperatingSystemRequestToJSONTyped( + value?: OperatingSystemRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + family: DeviceFactsOSFamilyToJSON(value["family"]), + name: value["name"], + version: value["version"], + arch: value["arch"], + }; +} diff --git a/packages/client-ts/src/models/OutgoingSyncDeleteAction.ts b/packages/client-ts/src/models/OutgoingSyncDeleteAction.ts new file mode 100644 index 0000000000..5b45252d8f --- /dev/null +++ b/packages/client-ts/src/models/OutgoingSyncDeleteAction.ts @@ -0,0 +1,59 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const OutgoingSyncDeleteAction = { + DoNothing: "do_nothing", + Delete: "delete", + Suspend: "suspend", + UnknownDefaultOpenApi: "11184809", +} as const; +export type OutgoingSyncDeleteAction = + (typeof OutgoingSyncDeleteAction)[keyof typeof OutgoingSyncDeleteAction]; + +export function instanceOfOutgoingSyncDeleteAction(value: any): boolean { + for (const key in OutgoingSyncDeleteAction) { + if (Object.prototype.hasOwnProperty.call(OutgoingSyncDeleteAction, key)) { + if (OutgoingSyncDeleteAction[key as keyof typeof OutgoingSyncDeleteAction] === value) { + return true; + } + } + } + return false; +} + +export function OutgoingSyncDeleteActionFromJSON(json: any): OutgoingSyncDeleteAction { + return OutgoingSyncDeleteActionFromJSONTyped(json, false); +} + +export function OutgoingSyncDeleteActionFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): OutgoingSyncDeleteAction { + return json as OutgoingSyncDeleteAction; +} + +export function OutgoingSyncDeleteActionToJSON(value?: OutgoingSyncDeleteAction | null): any { + return value as any; +} + +export function OutgoingSyncDeleteActionToJSONTyped( + value: any, + ignoreDiscriminator: boolean, +): OutgoingSyncDeleteAction { + return value as OutgoingSyncDeleteAction; +} diff --git a/packages/client-ts/src/models/Outpost.ts b/packages/client-ts/src/models/Outpost.ts new file mode 100644 index 0000000000..19e1a4c739 --- /dev/null +++ b/packages/client-ts/src/models/Outpost.ts @@ -0,0 +1,164 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { OutpostTypeEnum } from "./OutpostTypeEnum"; +import { OutpostTypeEnumFromJSON, OutpostTypeEnumToJSON } from "./OutpostTypeEnum"; +import type { Provider } from "./Provider"; +import { ProviderFromJSON } from "./Provider"; +import type { ServiceConnection } from "./ServiceConnection"; +import { ServiceConnectionFromJSON } from "./ServiceConnection"; + +/** + * Outpost Serializer + * @export + * @interface Outpost + */ +export interface Outpost { + /** + * + * @type {string} + * @memberof Outpost + */ + readonly pk: string; + /** + * + * @type {string} + * @memberof Outpost + */ + name: string; + /** + * + * @type {OutpostTypeEnum} + * @memberof Outpost + */ + type: OutpostTypeEnum; + /** + * + * @type {Array} + * @memberof Outpost + */ + providers: Array; + /** + * + * @type {Array} + * @memberof Outpost + */ + readonly providersObj: Array; + /** + * Select Service-Connection authentik should use to manage this outpost. Leave empty if authentik should not handle the deployment. + * @type {string} + * @memberof Outpost + */ + serviceConnection?: string | null; + /** + * + * @type {ServiceConnection} + * @memberof Outpost + */ + readonly serviceConnectionObj: ServiceConnection | null; + /** + * + * @type {number} + * @memberof Outpost + */ + readonly refreshIntervalS: number; + /** + * Get Token identifier + * @type {string} + * @memberof Outpost + */ + readonly tokenIdentifier: string; + /** + * + * @type {{ [key: string]: any; }} + * @memberof Outpost + */ + config: { [key: string]: any }; + /** + * Objects that are managed by authentik. These objects are created and updated automatically. This flag only indicates that an object can be overwritten by migrations. You can still modify the objects via the API, but expect changes to be overwritten in a later update. + * @type {string} + * @memberof Outpost + */ + managed?: string | null; +} + +/** + * Check if a given object implements the Outpost interface. + */ +export function instanceOfOutpost(value: object): value is Outpost { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("type" in value) || value["type"] === undefined) return false; + if (!("providers" in value) || value["providers"] === undefined) return false; + if (!("providersObj" in value) || value["providersObj"] === undefined) return false; + if (!("serviceConnectionObj" in value) || value["serviceConnectionObj"] === undefined) + return false; + if (!("refreshIntervalS" in value) || value["refreshIntervalS"] === undefined) return false; + if (!("tokenIdentifier" in value) || value["tokenIdentifier"] === undefined) return false; + if (!("config" in value) || value["config"] === undefined) return false; + return true; +} + +export function OutpostFromJSON(json: any): Outpost { + return OutpostFromJSONTyped(json, false); +} + +export function OutpostFromJSONTyped(json: any, ignoreDiscriminator: boolean): Outpost { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + type: OutpostTypeEnumFromJSON(json["type"]), + providers: json["providers"], + providersObj: (json["providers_obj"] as Array).map(ProviderFromJSON), + serviceConnection: + json["service_connection"] == null ? undefined : json["service_connection"], + serviceConnectionObj: ServiceConnectionFromJSON(json["service_connection_obj"]), + refreshIntervalS: json["refresh_interval_s"], + tokenIdentifier: json["token_identifier"], + config: json["config"], + managed: json["managed"] == null ? undefined : json["managed"], + }; +} + +export function OutpostToJSON(json: any): Outpost { + return OutpostToJSONTyped(json, false); +} + +export function OutpostToJSONTyped( + value?: Omit< + Outpost, + | "pk" + | "providers_obj" + | "service_connection_obj" + | "refresh_interval_s" + | "token_identifier" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + type: OutpostTypeEnumToJSON(value["type"]), + providers: value["providers"], + service_connection: value["serviceConnection"], + config: value["config"], + managed: value["managed"], + }; +} diff --git a/packages/client-ts/src/models/OutpostDefaultConfig.ts b/packages/client-ts/src/models/OutpostDefaultConfig.ts new file mode 100644 index 0000000000..ea558f94f1 --- /dev/null +++ b/packages/client-ts/src/models/OutpostDefaultConfig.ts @@ -0,0 +1,66 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Global default outpost config + * @export + * @interface OutpostDefaultConfig + */ +export interface OutpostDefaultConfig { + /** + * + * @type {{ [key: string]: any; }} + * @memberof OutpostDefaultConfig + */ + readonly config: { [key: string]: any }; +} + +/** + * Check if a given object implements the OutpostDefaultConfig interface. + */ +export function instanceOfOutpostDefaultConfig(value: object): value is OutpostDefaultConfig { + if (!("config" in value) || value["config"] === undefined) return false; + return true; +} + +export function OutpostDefaultConfigFromJSON(json: any): OutpostDefaultConfig { + return OutpostDefaultConfigFromJSONTyped(json, false); +} + +export function OutpostDefaultConfigFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): OutpostDefaultConfig { + if (json == null) { + return json; + } + return { + config: json["config"], + }; +} + +export function OutpostDefaultConfigToJSON(json: any): OutpostDefaultConfig { + return OutpostDefaultConfigToJSONTyped(json, false); +} + +export function OutpostDefaultConfigToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return {}; +} diff --git a/packages/client-ts/src/models/OutpostHealth.ts b/packages/client-ts/src/models/OutpostHealth.ts new file mode 100644 index 0000000000..d701a6691a --- /dev/null +++ b/packages/client-ts/src/models/OutpostHealth.ts @@ -0,0 +1,165 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Outpost health status + * @export + * @interface OutpostHealth + */ +export interface OutpostHealth { + /** + * + * @type {string} + * @memberof OutpostHealth + */ + readonly uid: string; + /** + * + * @type {Date} + * @memberof OutpostHealth + */ + readonly lastSeen: Date; + /** + * + * @type {string} + * @memberof OutpostHealth + */ + readonly version: string; + /** + * + * @type {string} + * @memberof OutpostHealth + */ + readonly golangVersion: string; + /** + * + * @type {boolean} + * @memberof OutpostHealth + */ + readonly opensslEnabled: boolean; + /** + * + * @type {string} + * @memberof OutpostHealth + */ + readonly opensslVersion: string; + /** + * Get FIPS enabled + * @type {boolean} + * @memberof OutpostHealth + */ + readonly fipsEnabled: boolean | null; + /** + * + * @type {string} + * @memberof OutpostHealth + */ + readonly versionShould: string; + /** + * + * @type {boolean} + * @memberof OutpostHealth + */ + readonly versionOutdated: boolean; + /** + * + * @type {string} + * @memberof OutpostHealth + */ + readonly buildHash: string; + /** + * + * @type {string} + * @memberof OutpostHealth + */ + readonly buildHashShould: string; + /** + * + * @type {string} + * @memberof OutpostHealth + */ + readonly hostname: string; +} + +/** + * Check if a given object implements the OutpostHealth interface. + */ +export function instanceOfOutpostHealth(value: object): value is OutpostHealth { + if (!("uid" in value) || value["uid"] === undefined) return false; + if (!("lastSeen" in value) || value["lastSeen"] === undefined) return false; + if (!("version" in value) || value["version"] === undefined) return false; + if (!("golangVersion" in value) || value["golangVersion"] === undefined) return false; + if (!("opensslEnabled" in value) || value["opensslEnabled"] === undefined) return false; + if (!("opensslVersion" in value) || value["opensslVersion"] === undefined) return false; + if (!("fipsEnabled" in value) || value["fipsEnabled"] === undefined) return false; + if (!("versionShould" in value) || value["versionShould"] === undefined) return false; + if (!("versionOutdated" in value) || value["versionOutdated"] === undefined) return false; + if (!("buildHash" in value) || value["buildHash"] === undefined) return false; + if (!("buildHashShould" in value) || value["buildHashShould"] === undefined) return false; + if (!("hostname" in value) || value["hostname"] === undefined) return false; + return true; +} + +export function OutpostHealthFromJSON(json: any): OutpostHealth { + return OutpostHealthFromJSONTyped(json, false); +} + +export function OutpostHealthFromJSONTyped(json: any, ignoreDiscriminator: boolean): OutpostHealth { + if (json == null) { + return json; + } + return { + uid: json["uid"], + lastSeen: new Date(json["last_seen"]), + version: json["version"], + golangVersion: json["golang_version"], + opensslEnabled: json["openssl_enabled"], + opensslVersion: json["openssl_version"], + fipsEnabled: json["fips_enabled"], + versionShould: json["version_should"], + versionOutdated: json["version_outdated"], + buildHash: json["build_hash"], + buildHashShould: json["build_hash_should"], + hostname: json["hostname"], + }; +} + +export function OutpostHealthToJSON(json: any): OutpostHealth { + return OutpostHealthToJSONTyped(json, false); +} + +export function OutpostHealthToJSONTyped( + value?: Omit< + OutpostHealth, + | "uid" + | "last_seen" + | "version" + | "golang_version" + | "openssl_enabled" + | "openssl_version" + | "fips_enabled" + | "version_should" + | "version_outdated" + | "build_hash" + | "build_hash_should" + | "hostname" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return {}; +} diff --git a/packages/client-ts/src/models/OutpostRequest.ts b/packages/client-ts/src/models/OutpostRequest.ts new file mode 100644 index 0000000000..213fe9c4cc --- /dev/null +++ b/packages/client-ts/src/models/OutpostRequest.ts @@ -0,0 +1,115 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { OutpostTypeEnum } from "./OutpostTypeEnum"; +import { OutpostTypeEnumFromJSON, OutpostTypeEnumToJSON } from "./OutpostTypeEnum"; + +/** + * Outpost Serializer + * @export + * @interface OutpostRequest + */ +export interface OutpostRequest { + /** + * + * @type {string} + * @memberof OutpostRequest + */ + name: string; + /** + * + * @type {OutpostTypeEnum} + * @memberof OutpostRequest + */ + type: OutpostTypeEnum; + /** + * + * @type {Array} + * @memberof OutpostRequest + */ + providers: Array; + /** + * Select Service-Connection authentik should use to manage this outpost. Leave empty if authentik should not handle the deployment. + * @type {string} + * @memberof OutpostRequest + */ + serviceConnection?: string | null; + /** + * + * @type {{ [key: string]: any; }} + * @memberof OutpostRequest + */ + config: { [key: string]: any }; + /** + * Objects that are managed by authentik. These objects are created and updated automatically. This flag only indicates that an object can be overwritten by migrations. You can still modify the objects via the API, but expect changes to be overwritten in a later update. + * @type {string} + * @memberof OutpostRequest + */ + managed?: string | null; +} + +/** + * Check if a given object implements the OutpostRequest interface. + */ +export function instanceOfOutpostRequest(value: object): value is OutpostRequest { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("type" in value) || value["type"] === undefined) return false; + if (!("providers" in value) || value["providers"] === undefined) return false; + if (!("config" in value) || value["config"] === undefined) return false; + return true; +} + +export function OutpostRequestFromJSON(json: any): OutpostRequest { + return OutpostRequestFromJSONTyped(json, false); +} + +export function OutpostRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): OutpostRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + type: OutpostTypeEnumFromJSON(json["type"]), + providers: json["providers"], + serviceConnection: + json["service_connection"] == null ? undefined : json["service_connection"], + config: json["config"], + managed: json["managed"] == null ? undefined : json["managed"], + }; +} + +export function OutpostRequestToJSON(json: any): OutpostRequest { + return OutpostRequestToJSONTyped(json, false); +} + +export function OutpostRequestToJSONTyped( + value?: OutpostRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + type: OutpostTypeEnumToJSON(value["type"]), + providers: value["providers"], + service_connection: value["serviceConnection"], + config: value["config"], + managed: value["managed"], + }; +} diff --git a/packages/client-ts/src/models/OutpostTypeEnum.ts b/packages/client-ts/src/models/OutpostTypeEnum.ts new file mode 100644 index 0000000000..561e478ce9 --- /dev/null +++ b/packages/client-ts/src/models/OutpostTypeEnum.ts @@ -0,0 +1,59 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const OutpostTypeEnum = { + Proxy: "proxy", + Ldap: "ldap", + Radius: "radius", + Rac: "rac", + UnknownDefaultOpenApi: "11184809", +} as const; +export type OutpostTypeEnum = (typeof OutpostTypeEnum)[keyof typeof OutpostTypeEnum]; + +export function instanceOfOutpostTypeEnum(value: any): boolean { + for (const key in OutpostTypeEnum) { + if (Object.prototype.hasOwnProperty.call(OutpostTypeEnum, key)) { + if (OutpostTypeEnum[key as keyof typeof OutpostTypeEnum] === value) { + return true; + } + } + } + return false; +} + +export function OutpostTypeEnumFromJSON(json: any): OutpostTypeEnum { + return OutpostTypeEnumFromJSONTyped(json, false); +} + +export function OutpostTypeEnumFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): OutpostTypeEnum { + return json as OutpostTypeEnum; +} + +export function OutpostTypeEnumToJSON(value?: OutpostTypeEnum | null): any { + return value as any; +} + +export function OutpostTypeEnumToJSONTyped( + value: any, + ignoreDiscriminator: boolean, +): OutpostTypeEnum { + return value as OutpostTypeEnum; +} diff --git a/packages/client-ts/src/models/PKCEMethodEnum.ts b/packages/client-ts/src/models/PKCEMethodEnum.ts new file mode 100644 index 0000000000..6188f020e6 --- /dev/null +++ b/packages/client-ts/src/models/PKCEMethodEnum.ts @@ -0,0 +1,58 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const PKCEMethodEnum = { + None: "none", + Plain: "plain", + S256: "S256", + UnknownDefaultOpenApi: "11184809", +} as const; +export type PKCEMethodEnum = (typeof PKCEMethodEnum)[keyof typeof PKCEMethodEnum]; + +export function instanceOfPKCEMethodEnum(value: any): boolean { + for (const key in PKCEMethodEnum) { + if (Object.prototype.hasOwnProperty.call(PKCEMethodEnum, key)) { + if (PKCEMethodEnum[key as keyof typeof PKCEMethodEnum] === value) { + return true; + } + } + } + return false; +} + +export function PKCEMethodEnumFromJSON(json: any): PKCEMethodEnum { + return PKCEMethodEnumFromJSONTyped(json, false); +} + +export function PKCEMethodEnumFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PKCEMethodEnum { + return json as PKCEMethodEnum; +} + +export function PKCEMethodEnumToJSON(value?: PKCEMethodEnum | null): any { + return value as any; +} + +export function PKCEMethodEnumToJSONTyped( + value: any, + ignoreDiscriminator: boolean, +): PKCEMethodEnum { + return value as PKCEMethodEnum; +} diff --git a/packages/client-ts/src/models/PaginatedAccountLockdownStageList.ts b/packages/client-ts/src/models/PaginatedAccountLockdownStageList.ts new file mode 100644 index 0000000000..35a1201d1c --- /dev/null +++ b/packages/client-ts/src/models/PaginatedAccountLockdownStageList.ts @@ -0,0 +1,97 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { AccountLockdownStage } from "./AccountLockdownStage"; +import { AccountLockdownStageFromJSON, AccountLockdownStageToJSON } from "./AccountLockdownStage"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedAccountLockdownStageList + */ +export interface PaginatedAccountLockdownStageList { + /** + * + * @type {Pagination} + * @memberof PaginatedAccountLockdownStageList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedAccountLockdownStageList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedAccountLockdownStageList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedAccountLockdownStageList interface. + */ +export function instanceOfPaginatedAccountLockdownStageList( + value: object, +): value is PaginatedAccountLockdownStageList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedAccountLockdownStageListFromJSON( + json: any, +): PaginatedAccountLockdownStageList { + return PaginatedAccountLockdownStageListFromJSONTyped(json, false); +} + +export function PaginatedAccountLockdownStageListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedAccountLockdownStageList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(AccountLockdownStageFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedAccountLockdownStageListToJSON( + json: any, +): PaginatedAccountLockdownStageList { + return PaginatedAccountLockdownStageListToJSONTyped(json, false); +} + +export function PaginatedAccountLockdownStageListToJSONTyped( + value?: PaginatedAccountLockdownStageList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(AccountLockdownStageToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedAgentConnectorList.ts b/packages/client-ts/src/models/PaginatedAgentConnectorList.ts new file mode 100644 index 0000000000..3bdb649c4d --- /dev/null +++ b/packages/client-ts/src/models/PaginatedAgentConnectorList.ts @@ -0,0 +1,93 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { AgentConnector } from "./AgentConnector"; +import { AgentConnectorFromJSON, AgentConnectorToJSON } from "./AgentConnector"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedAgentConnectorList + */ +export interface PaginatedAgentConnectorList { + /** + * + * @type {Pagination} + * @memberof PaginatedAgentConnectorList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedAgentConnectorList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedAgentConnectorList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedAgentConnectorList interface. + */ +export function instanceOfPaginatedAgentConnectorList( + value: object, +): value is PaginatedAgentConnectorList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedAgentConnectorListFromJSON(json: any): PaginatedAgentConnectorList { + return PaginatedAgentConnectorListFromJSONTyped(json, false); +} + +export function PaginatedAgentConnectorListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedAgentConnectorList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(AgentConnectorFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedAgentConnectorListToJSON(json: any): PaginatedAgentConnectorList { + return PaginatedAgentConnectorListToJSONTyped(json, false); +} + +export function PaginatedAgentConnectorListToJSONTyped( + value?: PaginatedAgentConnectorList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(AgentConnectorToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedAppleIndependentSecureEnclaveList.ts b/packages/client-ts/src/models/PaginatedAppleIndependentSecureEnclaveList.ts new file mode 100644 index 0000000000..c182be41b5 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedAppleIndependentSecureEnclaveList.ts @@ -0,0 +1,100 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { AppleIndependentSecureEnclave } from "./AppleIndependentSecureEnclave"; +import { + AppleIndependentSecureEnclaveFromJSON, + AppleIndependentSecureEnclaveToJSON, +} from "./AppleIndependentSecureEnclave"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedAppleIndependentSecureEnclaveList + */ +export interface PaginatedAppleIndependentSecureEnclaveList { + /** + * + * @type {Pagination} + * @memberof PaginatedAppleIndependentSecureEnclaveList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedAppleIndependentSecureEnclaveList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedAppleIndependentSecureEnclaveList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedAppleIndependentSecureEnclaveList interface. + */ +export function instanceOfPaginatedAppleIndependentSecureEnclaveList( + value: object, +): value is PaginatedAppleIndependentSecureEnclaveList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedAppleIndependentSecureEnclaveListFromJSON( + json: any, +): PaginatedAppleIndependentSecureEnclaveList { + return PaginatedAppleIndependentSecureEnclaveListFromJSONTyped(json, false); +} + +export function PaginatedAppleIndependentSecureEnclaveListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedAppleIndependentSecureEnclaveList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(AppleIndependentSecureEnclaveFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedAppleIndependentSecureEnclaveListToJSON( + json: any, +): PaginatedAppleIndependentSecureEnclaveList { + return PaginatedAppleIndependentSecureEnclaveListToJSONTyped(json, false); +} + +export function PaginatedAppleIndependentSecureEnclaveListToJSONTyped( + value?: PaginatedAppleIndependentSecureEnclaveList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(AppleIndependentSecureEnclaveToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedApplicationEntitlementList.ts b/packages/client-ts/src/models/PaginatedApplicationEntitlementList.ts new file mode 100644 index 0000000000..6021726542 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedApplicationEntitlementList.ts @@ -0,0 +1,100 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { ApplicationEntitlement } from "./ApplicationEntitlement"; +import { + ApplicationEntitlementFromJSON, + ApplicationEntitlementToJSON, +} from "./ApplicationEntitlement"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedApplicationEntitlementList + */ +export interface PaginatedApplicationEntitlementList { + /** + * + * @type {Pagination} + * @memberof PaginatedApplicationEntitlementList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedApplicationEntitlementList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedApplicationEntitlementList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedApplicationEntitlementList interface. + */ +export function instanceOfPaginatedApplicationEntitlementList( + value: object, +): value is PaginatedApplicationEntitlementList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedApplicationEntitlementListFromJSON( + json: any, +): PaginatedApplicationEntitlementList { + return PaginatedApplicationEntitlementListFromJSONTyped(json, false); +} + +export function PaginatedApplicationEntitlementListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedApplicationEntitlementList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(ApplicationEntitlementFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedApplicationEntitlementListToJSON( + json: any, +): PaginatedApplicationEntitlementList { + return PaginatedApplicationEntitlementListToJSONTyped(json, false); +} + +export function PaginatedApplicationEntitlementListToJSONTyped( + value?: PaginatedApplicationEntitlementList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(ApplicationEntitlementToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedApplicationList.ts b/packages/client-ts/src/models/PaginatedApplicationList.ts new file mode 100644 index 0000000000..889449952d --- /dev/null +++ b/packages/client-ts/src/models/PaginatedApplicationList.ts @@ -0,0 +1,93 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Application } from "./Application"; +import { ApplicationFromJSON, ApplicationToJSON } from "./Application"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedApplicationList + */ +export interface PaginatedApplicationList { + /** + * + * @type {Pagination} + * @memberof PaginatedApplicationList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedApplicationList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedApplicationList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedApplicationList interface. + */ +export function instanceOfPaginatedApplicationList( + value: object, +): value is PaginatedApplicationList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedApplicationListFromJSON(json: any): PaginatedApplicationList { + return PaginatedApplicationListFromJSONTyped(json, false); +} + +export function PaginatedApplicationListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedApplicationList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(ApplicationFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedApplicationListToJSON(json: any): PaginatedApplicationList { + return PaginatedApplicationListToJSONTyped(json, false); +} + +export function PaginatedApplicationListToJSONTyped( + value?: PaginatedApplicationList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(ApplicationToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedAuthenticatedSessionList.ts b/packages/client-ts/src/models/PaginatedAuthenticatedSessionList.ts new file mode 100644 index 0000000000..56425a7a3b --- /dev/null +++ b/packages/client-ts/src/models/PaginatedAuthenticatedSessionList.ts @@ -0,0 +1,97 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { AuthenticatedSession } from "./AuthenticatedSession"; +import { AuthenticatedSessionFromJSON, AuthenticatedSessionToJSON } from "./AuthenticatedSession"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedAuthenticatedSessionList + */ +export interface PaginatedAuthenticatedSessionList { + /** + * + * @type {Pagination} + * @memberof PaginatedAuthenticatedSessionList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedAuthenticatedSessionList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedAuthenticatedSessionList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedAuthenticatedSessionList interface. + */ +export function instanceOfPaginatedAuthenticatedSessionList( + value: object, +): value is PaginatedAuthenticatedSessionList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedAuthenticatedSessionListFromJSON( + json: any, +): PaginatedAuthenticatedSessionList { + return PaginatedAuthenticatedSessionListFromJSONTyped(json, false); +} + +export function PaginatedAuthenticatedSessionListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedAuthenticatedSessionList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(AuthenticatedSessionFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedAuthenticatedSessionListToJSON( + json: any, +): PaginatedAuthenticatedSessionList { + return PaginatedAuthenticatedSessionListToJSONTyped(json, false); +} + +export function PaginatedAuthenticatedSessionListToJSONTyped( + value?: PaginatedAuthenticatedSessionList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(AuthenticatedSessionToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedAuthenticatorDuoStageList.ts b/packages/client-ts/src/models/PaginatedAuthenticatorDuoStageList.ts new file mode 100644 index 0000000000..a516095fc7 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedAuthenticatorDuoStageList.ts @@ -0,0 +1,100 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { AuthenticatorDuoStage } from "./AuthenticatorDuoStage"; +import { + AuthenticatorDuoStageFromJSON, + AuthenticatorDuoStageToJSON, +} from "./AuthenticatorDuoStage"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedAuthenticatorDuoStageList + */ +export interface PaginatedAuthenticatorDuoStageList { + /** + * + * @type {Pagination} + * @memberof PaginatedAuthenticatorDuoStageList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedAuthenticatorDuoStageList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedAuthenticatorDuoStageList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedAuthenticatorDuoStageList interface. + */ +export function instanceOfPaginatedAuthenticatorDuoStageList( + value: object, +): value is PaginatedAuthenticatorDuoStageList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedAuthenticatorDuoStageListFromJSON( + json: any, +): PaginatedAuthenticatorDuoStageList { + return PaginatedAuthenticatorDuoStageListFromJSONTyped(json, false); +} + +export function PaginatedAuthenticatorDuoStageListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedAuthenticatorDuoStageList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(AuthenticatorDuoStageFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedAuthenticatorDuoStageListToJSON( + json: any, +): PaginatedAuthenticatorDuoStageList { + return PaginatedAuthenticatorDuoStageListToJSONTyped(json, false); +} + +export function PaginatedAuthenticatorDuoStageListToJSONTyped( + value?: PaginatedAuthenticatorDuoStageList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(AuthenticatorDuoStageToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedAuthenticatorEmailStageList.ts b/packages/client-ts/src/models/PaginatedAuthenticatorEmailStageList.ts new file mode 100644 index 0000000000..4d16d15c39 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedAuthenticatorEmailStageList.ts @@ -0,0 +1,100 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { AuthenticatorEmailStage } from "./AuthenticatorEmailStage"; +import { + AuthenticatorEmailStageFromJSON, + AuthenticatorEmailStageToJSON, +} from "./AuthenticatorEmailStage"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedAuthenticatorEmailStageList + */ +export interface PaginatedAuthenticatorEmailStageList { + /** + * + * @type {Pagination} + * @memberof PaginatedAuthenticatorEmailStageList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedAuthenticatorEmailStageList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedAuthenticatorEmailStageList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedAuthenticatorEmailStageList interface. + */ +export function instanceOfPaginatedAuthenticatorEmailStageList( + value: object, +): value is PaginatedAuthenticatorEmailStageList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedAuthenticatorEmailStageListFromJSON( + json: any, +): PaginatedAuthenticatorEmailStageList { + return PaginatedAuthenticatorEmailStageListFromJSONTyped(json, false); +} + +export function PaginatedAuthenticatorEmailStageListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedAuthenticatorEmailStageList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(AuthenticatorEmailStageFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedAuthenticatorEmailStageListToJSON( + json: any, +): PaginatedAuthenticatorEmailStageList { + return PaginatedAuthenticatorEmailStageListToJSONTyped(json, false); +} + +export function PaginatedAuthenticatorEmailStageListToJSONTyped( + value?: PaginatedAuthenticatorEmailStageList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(AuthenticatorEmailStageToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedAuthenticatorEndpointGDTCStageList.ts b/packages/client-ts/src/models/PaginatedAuthenticatorEndpointGDTCStageList.ts new file mode 100644 index 0000000000..2c1e5b6fe2 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedAuthenticatorEndpointGDTCStageList.ts @@ -0,0 +1,100 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { AuthenticatorEndpointGDTCStage } from "./AuthenticatorEndpointGDTCStage"; +import { + AuthenticatorEndpointGDTCStageFromJSON, + AuthenticatorEndpointGDTCStageToJSON, +} from "./AuthenticatorEndpointGDTCStage"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedAuthenticatorEndpointGDTCStageList + */ +export interface PaginatedAuthenticatorEndpointGDTCStageList { + /** + * + * @type {Pagination} + * @memberof PaginatedAuthenticatorEndpointGDTCStageList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedAuthenticatorEndpointGDTCStageList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedAuthenticatorEndpointGDTCStageList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedAuthenticatorEndpointGDTCStageList interface. + */ +export function instanceOfPaginatedAuthenticatorEndpointGDTCStageList( + value: object, +): value is PaginatedAuthenticatorEndpointGDTCStageList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedAuthenticatorEndpointGDTCStageListFromJSON( + json: any, +): PaginatedAuthenticatorEndpointGDTCStageList { + return PaginatedAuthenticatorEndpointGDTCStageListFromJSONTyped(json, false); +} + +export function PaginatedAuthenticatorEndpointGDTCStageListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedAuthenticatorEndpointGDTCStageList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(AuthenticatorEndpointGDTCStageFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedAuthenticatorEndpointGDTCStageListToJSON( + json: any, +): PaginatedAuthenticatorEndpointGDTCStageList { + return PaginatedAuthenticatorEndpointGDTCStageListToJSONTyped(json, false); +} + +export function PaginatedAuthenticatorEndpointGDTCStageListToJSONTyped( + value?: PaginatedAuthenticatorEndpointGDTCStageList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(AuthenticatorEndpointGDTCStageToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedAuthenticatorSMSStageList.ts b/packages/client-ts/src/models/PaginatedAuthenticatorSMSStageList.ts new file mode 100644 index 0000000000..0f4fb8c4cd --- /dev/null +++ b/packages/client-ts/src/models/PaginatedAuthenticatorSMSStageList.ts @@ -0,0 +1,100 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { AuthenticatorSMSStage } from "./AuthenticatorSMSStage"; +import { + AuthenticatorSMSStageFromJSON, + AuthenticatorSMSStageToJSON, +} from "./AuthenticatorSMSStage"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedAuthenticatorSMSStageList + */ +export interface PaginatedAuthenticatorSMSStageList { + /** + * + * @type {Pagination} + * @memberof PaginatedAuthenticatorSMSStageList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedAuthenticatorSMSStageList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedAuthenticatorSMSStageList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedAuthenticatorSMSStageList interface. + */ +export function instanceOfPaginatedAuthenticatorSMSStageList( + value: object, +): value is PaginatedAuthenticatorSMSStageList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedAuthenticatorSMSStageListFromJSON( + json: any, +): PaginatedAuthenticatorSMSStageList { + return PaginatedAuthenticatorSMSStageListFromJSONTyped(json, false); +} + +export function PaginatedAuthenticatorSMSStageListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedAuthenticatorSMSStageList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(AuthenticatorSMSStageFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedAuthenticatorSMSStageListToJSON( + json: any, +): PaginatedAuthenticatorSMSStageList { + return PaginatedAuthenticatorSMSStageListToJSONTyped(json, false); +} + +export function PaginatedAuthenticatorSMSStageListToJSONTyped( + value?: PaginatedAuthenticatorSMSStageList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(AuthenticatorSMSStageToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedAuthenticatorStaticStageList.ts b/packages/client-ts/src/models/PaginatedAuthenticatorStaticStageList.ts new file mode 100644 index 0000000000..6747e63c17 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedAuthenticatorStaticStageList.ts @@ -0,0 +1,100 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { AuthenticatorStaticStage } from "./AuthenticatorStaticStage"; +import { + AuthenticatorStaticStageFromJSON, + AuthenticatorStaticStageToJSON, +} from "./AuthenticatorStaticStage"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedAuthenticatorStaticStageList + */ +export interface PaginatedAuthenticatorStaticStageList { + /** + * + * @type {Pagination} + * @memberof PaginatedAuthenticatorStaticStageList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedAuthenticatorStaticStageList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedAuthenticatorStaticStageList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedAuthenticatorStaticStageList interface. + */ +export function instanceOfPaginatedAuthenticatorStaticStageList( + value: object, +): value is PaginatedAuthenticatorStaticStageList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedAuthenticatorStaticStageListFromJSON( + json: any, +): PaginatedAuthenticatorStaticStageList { + return PaginatedAuthenticatorStaticStageListFromJSONTyped(json, false); +} + +export function PaginatedAuthenticatorStaticStageListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedAuthenticatorStaticStageList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(AuthenticatorStaticStageFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedAuthenticatorStaticStageListToJSON( + json: any, +): PaginatedAuthenticatorStaticStageList { + return PaginatedAuthenticatorStaticStageListToJSONTyped(json, false); +} + +export function PaginatedAuthenticatorStaticStageListToJSONTyped( + value?: PaginatedAuthenticatorStaticStageList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(AuthenticatorStaticStageToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedAuthenticatorTOTPStageList.ts b/packages/client-ts/src/models/PaginatedAuthenticatorTOTPStageList.ts new file mode 100644 index 0000000000..1f3dc3495f --- /dev/null +++ b/packages/client-ts/src/models/PaginatedAuthenticatorTOTPStageList.ts @@ -0,0 +1,100 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { AuthenticatorTOTPStage } from "./AuthenticatorTOTPStage"; +import { + AuthenticatorTOTPStageFromJSON, + AuthenticatorTOTPStageToJSON, +} from "./AuthenticatorTOTPStage"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedAuthenticatorTOTPStageList + */ +export interface PaginatedAuthenticatorTOTPStageList { + /** + * + * @type {Pagination} + * @memberof PaginatedAuthenticatorTOTPStageList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedAuthenticatorTOTPStageList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedAuthenticatorTOTPStageList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedAuthenticatorTOTPStageList interface. + */ +export function instanceOfPaginatedAuthenticatorTOTPStageList( + value: object, +): value is PaginatedAuthenticatorTOTPStageList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedAuthenticatorTOTPStageListFromJSON( + json: any, +): PaginatedAuthenticatorTOTPStageList { + return PaginatedAuthenticatorTOTPStageListFromJSONTyped(json, false); +} + +export function PaginatedAuthenticatorTOTPStageListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedAuthenticatorTOTPStageList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(AuthenticatorTOTPStageFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedAuthenticatorTOTPStageListToJSON( + json: any, +): PaginatedAuthenticatorTOTPStageList { + return PaginatedAuthenticatorTOTPStageListToJSONTyped(json, false); +} + +export function PaginatedAuthenticatorTOTPStageListToJSONTyped( + value?: PaginatedAuthenticatorTOTPStageList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(AuthenticatorTOTPStageToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedAuthenticatorValidateStageList.ts b/packages/client-ts/src/models/PaginatedAuthenticatorValidateStageList.ts new file mode 100644 index 0000000000..11ed8e706a --- /dev/null +++ b/packages/client-ts/src/models/PaginatedAuthenticatorValidateStageList.ts @@ -0,0 +1,100 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { AuthenticatorValidateStage } from "./AuthenticatorValidateStage"; +import { + AuthenticatorValidateStageFromJSON, + AuthenticatorValidateStageToJSON, +} from "./AuthenticatorValidateStage"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedAuthenticatorValidateStageList + */ +export interface PaginatedAuthenticatorValidateStageList { + /** + * + * @type {Pagination} + * @memberof PaginatedAuthenticatorValidateStageList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedAuthenticatorValidateStageList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedAuthenticatorValidateStageList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedAuthenticatorValidateStageList interface. + */ +export function instanceOfPaginatedAuthenticatorValidateStageList( + value: object, +): value is PaginatedAuthenticatorValidateStageList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedAuthenticatorValidateStageListFromJSON( + json: any, +): PaginatedAuthenticatorValidateStageList { + return PaginatedAuthenticatorValidateStageListFromJSONTyped(json, false); +} + +export function PaginatedAuthenticatorValidateStageListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedAuthenticatorValidateStageList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(AuthenticatorValidateStageFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedAuthenticatorValidateStageListToJSON( + json: any, +): PaginatedAuthenticatorValidateStageList { + return PaginatedAuthenticatorValidateStageListToJSONTyped(json, false); +} + +export function PaginatedAuthenticatorValidateStageListToJSONTyped( + value?: PaginatedAuthenticatorValidateStageList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(AuthenticatorValidateStageToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedAuthenticatorWebAuthnStageList.ts b/packages/client-ts/src/models/PaginatedAuthenticatorWebAuthnStageList.ts new file mode 100644 index 0000000000..e44f8c52d4 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedAuthenticatorWebAuthnStageList.ts @@ -0,0 +1,100 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { AuthenticatorWebAuthnStage } from "./AuthenticatorWebAuthnStage"; +import { + AuthenticatorWebAuthnStageFromJSON, + AuthenticatorWebAuthnStageToJSON, +} from "./AuthenticatorWebAuthnStage"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedAuthenticatorWebAuthnStageList + */ +export interface PaginatedAuthenticatorWebAuthnStageList { + /** + * + * @type {Pagination} + * @memberof PaginatedAuthenticatorWebAuthnStageList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedAuthenticatorWebAuthnStageList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedAuthenticatorWebAuthnStageList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedAuthenticatorWebAuthnStageList interface. + */ +export function instanceOfPaginatedAuthenticatorWebAuthnStageList( + value: object, +): value is PaginatedAuthenticatorWebAuthnStageList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedAuthenticatorWebAuthnStageListFromJSON( + json: any, +): PaginatedAuthenticatorWebAuthnStageList { + return PaginatedAuthenticatorWebAuthnStageListFromJSONTyped(json, false); +} + +export function PaginatedAuthenticatorWebAuthnStageListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedAuthenticatorWebAuthnStageList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(AuthenticatorWebAuthnStageFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedAuthenticatorWebAuthnStageListToJSON( + json: any, +): PaginatedAuthenticatorWebAuthnStageList { + return PaginatedAuthenticatorWebAuthnStageListToJSONTyped(json, false); +} + +export function PaginatedAuthenticatorWebAuthnStageListToJSONTyped( + value?: PaginatedAuthenticatorWebAuthnStageList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(AuthenticatorWebAuthnStageToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedBlueprintInstanceList.ts b/packages/client-ts/src/models/PaginatedBlueprintInstanceList.ts new file mode 100644 index 0000000000..a9e125ddf2 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedBlueprintInstanceList.ts @@ -0,0 +1,93 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { BlueprintInstance } from "./BlueprintInstance"; +import { BlueprintInstanceFromJSON, BlueprintInstanceToJSON } from "./BlueprintInstance"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedBlueprintInstanceList + */ +export interface PaginatedBlueprintInstanceList { + /** + * + * @type {Pagination} + * @memberof PaginatedBlueprintInstanceList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedBlueprintInstanceList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedBlueprintInstanceList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedBlueprintInstanceList interface. + */ +export function instanceOfPaginatedBlueprintInstanceList( + value: object, +): value is PaginatedBlueprintInstanceList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedBlueprintInstanceListFromJSON(json: any): PaginatedBlueprintInstanceList { + return PaginatedBlueprintInstanceListFromJSONTyped(json, false); +} + +export function PaginatedBlueprintInstanceListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedBlueprintInstanceList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(BlueprintInstanceFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedBlueprintInstanceListToJSON(json: any): PaginatedBlueprintInstanceList { + return PaginatedBlueprintInstanceListToJSONTyped(json, false); +} + +export function PaginatedBlueprintInstanceListToJSONTyped( + value?: PaginatedBlueprintInstanceList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(BlueprintInstanceToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedBrandList.ts b/packages/client-ts/src/models/PaginatedBrandList.ts new file mode 100644 index 0000000000..783f77d0c0 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedBrandList.ts @@ -0,0 +1,91 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Brand } from "./Brand"; +import { BrandFromJSON, BrandToJSON } from "./Brand"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedBrandList + */ +export interface PaginatedBrandList { + /** + * + * @type {Pagination} + * @memberof PaginatedBrandList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedBrandList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedBrandList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedBrandList interface. + */ +export function instanceOfPaginatedBrandList(value: object): value is PaginatedBrandList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedBrandListFromJSON(json: any): PaginatedBrandList { + return PaginatedBrandListFromJSONTyped(json, false); +} + +export function PaginatedBrandListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedBrandList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(BrandFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedBrandListToJSON(json: any): PaginatedBrandList { + return PaginatedBrandListToJSONTyped(json, false); +} + +export function PaginatedBrandListToJSONTyped( + value?: PaginatedBrandList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(BrandToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedCaptchaStageList.ts b/packages/client-ts/src/models/PaginatedCaptchaStageList.ts new file mode 100644 index 0000000000..06ca3201be --- /dev/null +++ b/packages/client-ts/src/models/PaginatedCaptchaStageList.ts @@ -0,0 +1,93 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { CaptchaStage } from "./CaptchaStage"; +import { CaptchaStageFromJSON, CaptchaStageToJSON } from "./CaptchaStage"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedCaptchaStageList + */ +export interface PaginatedCaptchaStageList { + /** + * + * @type {Pagination} + * @memberof PaginatedCaptchaStageList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedCaptchaStageList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedCaptchaStageList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedCaptchaStageList interface. + */ +export function instanceOfPaginatedCaptchaStageList( + value: object, +): value is PaginatedCaptchaStageList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedCaptchaStageListFromJSON(json: any): PaginatedCaptchaStageList { + return PaginatedCaptchaStageListFromJSONTyped(json, false); +} + +export function PaginatedCaptchaStageListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedCaptchaStageList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(CaptchaStageFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedCaptchaStageListToJSON(json: any): PaginatedCaptchaStageList { + return PaginatedCaptchaStageListToJSONTyped(json, false); +} + +export function PaginatedCaptchaStageListToJSONTyped( + value?: PaginatedCaptchaStageList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(CaptchaStageToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedCertificateKeyPairList.ts b/packages/client-ts/src/models/PaginatedCertificateKeyPairList.ts new file mode 100644 index 0000000000..b2229a71a8 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedCertificateKeyPairList.ts @@ -0,0 +1,95 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { CertificateKeyPair } from "./CertificateKeyPair"; +import { CertificateKeyPairFromJSON, CertificateKeyPairToJSON } from "./CertificateKeyPair"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedCertificateKeyPairList + */ +export interface PaginatedCertificateKeyPairList { + /** + * + * @type {Pagination} + * @memberof PaginatedCertificateKeyPairList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedCertificateKeyPairList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedCertificateKeyPairList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedCertificateKeyPairList interface. + */ +export function instanceOfPaginatedCertificateKeyPairList( + value: object, +): value is PaginatedCertificateKeyPairList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedCertificateKeyPairListFromJSON( + json: any, +): PaginatedCertificateKeyPairList { + return PaginatedCertificateKeyPairListFromJSONTyped(json, false); +} + +export function PaginatedCertificateKeyPairListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedCertificateKeyPairList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(CertificateKeyPairFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedCertificateKeyPairListToJSON(json: any): PaginatedCertificateKeyPairList { + return PaginatedCertificateKeyPairListToJSONTyped(json, false); +} + +export function PaginatedCertificateKeyPairListToJSONTyped( + value?: PaginatedCertificateKeyPairList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(CertificateKeyPairToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedConnectionTokenList.ts b/packages/client-ts/src/models/PaginatedConnectionTokenList.ts new file mode 100644 index 0000000000..fa36e008bb --- /dev/null +++ b/packages/client-ts/src/models/PaginatedConnectionTokenList.ts @@ -0,0 +1,93 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { ConnectionToken } from "./ConnectionToken"; +import { ConnectionTokenFromJSON, ConnectionTokenToJSON } from "./ConnectionToken"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedConnectionTokenList + */ +export interface PaginatedConnectionTokenList { + /** + * + * @type {Pagination} + * @memberof PaginatedConnectionTokenList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedConnectionTokenList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedConnectionTokenList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedConnectionTokenList interface. + */ +export function instanceOfPaginatedConnectionTokenList( + value: object, +): value is PaginatedConnectionTokenList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedConnectionTokenListFromJSON(json: any): PaginatedConnectionTokenList { + return PaginatedConnectionTokenListFromJSONTyped(json, false); +} + +export function PaginatedConnectionTokenListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedConnectionTokenList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(ConnectionTokenFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedConnectionTokenListToJSON(json: any): PaginatedConnectionTokenList { + return PaginatedConnectionTokenListToJSONTyped(json, false); +} + +export function PaginatedConnectionTokenListToJSONTyped( + value?: PaginatedConnectionTokenList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(ConnectionTokenToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedConnectorList.ts b/packages/client-ts/src/models/PaginatedConnectorList.ts new file mode 100644 index 0000000000..c49e93974a --- /dev/null +++ b/packages/client-ts/src/models/PaginatedConnectorList.ts @@ -0,0 +1,91 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Connector } from "./Connector"; +import { ConnectorFromJSON, ConnectorToJSON } from "./Connector"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedConnectorList + */ +export interface PaginatedConnectorList { + /** + * + * @type {Pagination} + * @memberof PaginatedConnectorList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedConnectorList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedConnectorList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedConnectorList interface. + */ +export function instanceOfPaginatedConnectorList(value: object): value is PaginatedConnectorList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedConnectorListFromJSON(json: any): PaginatedConnectorList { + return PaginatedConnectorListFromJSONTyped(json, false); +} + +export function PaginatedConnectorListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedConnectorList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(ConnectorFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedConnectorListToJSON(json: any): PaginatedConnectorList { + return PaginatedConnectorListToJSONTyped(json, false); +} + +export function PaginatedConnectorListToJSONTyped( + value?: PaginatedConnectorList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(ConnectorToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedConsentStageList.ts b/packages/client-ts/src/models/PaginatedConsentStageList.ts new file mode 100644 index 0000000000..9f3fe9c979 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedConsentStageList.ts @@ -0,0 +1,93 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { ConsentStage } from "./ConsentStage"; +import { ConsentStageFromJSON, ConsentStageToJSON } from "./ConsentStage"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedConsentStageList + */ +export interface PaginatedConsentStageList { + /** + * + * @type {Pagination} + * @memberof PaginatedConsentStageList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedConsentStageList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedConsentStageList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedConsentStageList interface. + */ +export function instanceOfPaginatedConsentStageList( + value: object, +): value is PaginatedConsentStageList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedConsentStageListFromJSON(json: any): PaginatedConsentStageList { + return PaginatedConsentStageListFromJSONTyped(json, false); +} + +export function PaginatedConsentStageListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedConsentStageList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(ConsentStageFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedConsentStageListToJSON(json: any): PaginatedConsentStageList { + return PaginatedConsentStageListToJSONTyped(json, false); +} + +export function PaginatedConsentStageListToJSONTyped( + value?: PaginatedConsentStageList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(ConsentStageToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedDataExportList.ts b/packages/client-ts/src/models/PaginatedDataExportList.ts new file mode 100644 index 0000000000..375df9ee01 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedDataExportList.ts @@ -0,0 +1,91 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { DataExport } from "./DataExport"; +import { DataExportFromJSON, DataExportToJSON } from "./DataExport"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedDataExportList + */ +export interface PaginatedDataExportList { + /** + * + * @type {Pagination} + * @memberof PaginatedDataExportList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedDataExportList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedDataExportList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedDataExportList interface. + */ +export function instanceOfPaginatedDataExportList(value: object): value is PaginatedDataExportList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedDataExportListFromJSON(json: any): PaginatedDataExportList { + return PaginatedDataExportListFromJSONTyped(json, false); +} + +export function PaginatedDataExportListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedDataExportList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(DataExportFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedDataExportListToJSON(json: any): PaginatedDataExportList { + return PaginatedDataExportListToJSONTyped(json, false); +} + +export function PaginatedDataExportListToJSONTyped( + value?: PaginatedDataExportList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(DataExportToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedDenyStageList.ts b/packages/client-ts/src/models/PaginatedDenyStageList.ts new file mode 100644 index 0000000000..023d4ea5ba --- /dev/null +++ b/packages/client-ts/src/models/PaginatedDenyStageList.ts @@ -0,0 +1,91 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { DenyStage } from "./DenyStage"; +import { DenyStageFromJSON, DenyStageToJSON } from "./DenyStage"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedDenyStageList + */ +export interface PaginatedDenyStageList { + /** + * + * @type {Pagination} + * @memberof PaginatedDenyStageList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedDenyStageList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedDenyStageList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedDenyStageList interface. + */ +export function instanceOfPaginatedDenyStageList(value: object): value is PaginatedDenyStageList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedDenyStageListFromJSON(json: any): PaginatedDenyStageList { + return PaginatedDenyStageListFromJSONTyped(json, false); +} + +export function PaginatedDenyStageListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedDenyStageList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(DenyStageFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedDenyStageListToJSON(json: any): PaginatedDenyStageList { + return PaginatedDenyStageListToJSONTyped(json, false); +} + +export function PaginatedDenyStageListToJSONTyped( + value?: PaginatedDenyStageList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(DenyStageToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedDeviceAccessGroupList.ts b/packages/client-ts/src/models/PaginatedDeviceAccessGroupList.ts new file mode 100644 index 0000000000..6f8ce7f386 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedDeviceAccessGroupList.ts @@ -0,0 +1,93 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { DeviceAccessGroup } from "./DeviceAccessGroup"; +import { DeviceAccessGroupFromJSON, DeviceAccessGroupToJSON } from "./DeviceAccessGroup"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedDeviceAccessGroupList + */ +export interface PaginatedDeviceAccessGroupList { + /** + * + * @type {Pagination} + * @memberof PaginatedDeviceAccessGroupList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedDeviceAccessGroupList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedDeviceAccessGroupList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedDeviceAccessGroupList interface. + */ +export function instanceOfPaginatedDeviceAccessGroupList( + value: object, +): value is PaginatedDeviceAccessGroupList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedDeviceAccessGroupListFromJSON(json: any): PaginatedDeviceAccessGroupList { + return PaginatedDeviceAccessGroupListFromJSONTyped(json, false); +} + +export function PaginatedDeviceAccessGroupListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedDeviceAccessGroupList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(DeviceAccessGroupFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedDeviceAccessGroupListToJSON(json: any): PaginatedDeviceAccessGroupList { + return PaginatedDeviceAccessGroupListToJSONTyped(json, false); +} + +export function PaginatedDeviceAccessGroupListToJSONTyped( + value?: PaginatedDeviceAccessGroupList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(DeviceAccessGroupToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedDeviceUserBindingList.ts b/packages/client-ts/src/models/PaginatedDeviceUserBindingList.ts new file mode 100644 index 0000000000..47ed1f3108 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedDeviceUserBindingList.ts @@ -0,0 +1,93 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { DeviceUserBinding } from "./DeviceUserBinding"; +import { DeviceUserBindingFromJSON, DeviceUserBindingToJSON } from "./DeviceUserBinding"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedDeviceUserBindingList + */ +export interface PaginatedDeviceUserBindingList { + /** + * + * @type {Pagination} + * @memberof PaginatedDeviceUserBindingList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedDeviceUserBindingList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedDeviceUserBindingList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedDeviceUserBindingList interface. + */ +export function instanceOfPaginatedDeviceUserBindingList( + value: object, +): value is PaginatedDeviceUserBindingList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedDeviceUserBindingListFromJSON(json: any): PaginatedDeviceUserBindingList { + return PaginatedDeviceUserBindingListFromJSONTyped(json, false); +} + +export function PaginatedDeviceUserBindingListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedDeviceUserBindingList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(DeviceUserBindingFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedDeviceUserBindingListToJSON(json: any): PaginatedDeviceUserBindingList { + return PaginatedDeviceUserBindingListToJSONTyped(json, false); +} + +export function PaginatedDeviceUserBindingListToJSONTyped( + value?: PaginatedDeviceUserBindingList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(DeviceUserBindingToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedDockerServiceConnectionList.ts b/packages/client-ts/src/models/PaginatedDockerServiceConnectionList.ts new file mode 100644 index 0000000000..15e1dfc929 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedDockerServiceConnectionList.ts @@ -0,0 +1,100 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { DockerServiceConnection } from "./DockerServiceConnection"; +import { + DockerServiceConnectionFromJSON, + DockerServiceConnectionToJSON, +} from "./DockerServiceConnection"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedDockerServiceConnectionList + */ +export interface PaginatedDockerServiceConnectionList { + /** + * + * @type {Pagination} + * @memberof PaginatedDockerServiceConnectionList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedDockerServiceConnectionList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedDockerServiceConnectionList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedDockerServiceConnectionList interface. + */ +export function instanceOfPaginatedDockerServiceConnectionList( + value: object, +): value is PaginatedDockerServiceConnectionList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedDockerServiceConnectionListFromJSON( + json: any, +): PaginatedDockerServiceConnectionList { + return PaginatedDockerServiceConnectionListFromJSONTyped(json, false); +} + +export function PaginatedDockerServiceConnectionListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedDockerServiceConnectionList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(DockerServiceConnectionFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedDockerServiceConnectionListToJSON( + json: any, +): PaginatedDockerServiceConnectionList { + return PaginatedDockerServiceConnectionListToJSONTyped(json, false); +} + +export function PaginatedDockerServiceConnectionListToJSONTyped( + value?: PaginatedDockerServiceConnectionList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(DockerServiceConnectionToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedDomainList.ts b/packages/client-ts/src/models/PaginatedDomainList.ts new file mode 100644 index 0000000000..ae8e9c87fd --- /dev/null +++ b/packages/client-ts/src/models/PaginatedDomainList.ts @@ -0,0 +1,91 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Domain } from "./Domain"; +import { DomainFromJSON, DomainToJSON } from "./Domain"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedDomainList + */ +export interface PaginatedDomainList { + /** + * + * @type {Pagination} + * @memberof PaginatedDomainList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedDomainList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedDomainList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedDomainList interface. + */ +export function instanceOfPaginatedDomainList(value: object): value is PaginatedDomainList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedDomainListFromJSON(json: any): PaginatedDomainList { + return PaginatedDomainListFromJSONTyped(json, false); +} + +export function PaginatedDomainListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedDomainList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(DomainFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedDomainListToJSON(json: any): PaginatedDomainList { + return PaginatedDomainListToJSONTyped(json, false); +} + +export function PaginatedDomainListToJSONTyped( + value?: PaginatedDomainList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(DomainToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedDummyPolicyList.ts b/packages/client-ts/src/models/PaginatedDummyPolicyList.ts new file mode 100644 index 0000000000..9c9618b437 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedDummyPolicyList.ts @@ -0,0 +1,93 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { DummyPolicy } from "./DummyPolicy"; +import { DummyPolicyFromJSON, DummyPolicyToJSON } from "./DummyPolicy"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedDummyPolicyList + */ +export interface PaginatedDummyPolicyList { + /** + * + * @type {Pagination} + * @memberof PaginatedDummyPolicyList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedDummyPolicyList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedDummyPolicyList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedDummyPolicyList interface. + */ +export function instanceOfPaginatedDummyPolicyList( + value: object, +): value is PaginatedDummyPolicyList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedDummyPolicyListFromJSON(json: any): PaginatedDummyPolicyList { + return PaginatedDummyPolicyListFromJSONTyped(json, false); +} + +export function PaginatedDummyPolicyListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedDummyPolicyList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(DummyPolicyFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedDummyPolicyListToJSON(json: any): PaginatedDummyPolicyList { + return PaginatedDummyPolicyListToJSONTyped(json, false); +} + +export function PaginatedDummyPolicyListToJSONTyped( + value?: PaginatedDummyPolicyList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(DummyPolicyToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedDummyStageList.ts b/packages/client-ts/src/models/PaginatedDummyStageList.ts new file mode 100644 index 0000000000..6f76f6906e --- /dev/null +++ b/packages/client-ts/src/models/PaginatedDummyStageList.ts @@ -0,0 +1,91 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { DummyStage } from "./DummyStage"; +import { DummyStageFromJSON, DummyStageToJSON } from "./DummyStage"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedDummyStageList + */ +export interface PaginatedDummyStageList { + /** + * + * @type {Pagination} + * @memberof PaginatedDummyStageList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedDummyStageList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedDummyStageList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedDummyStageList interface. + */ +export function instanceOfPaginatedDummyStageList(value: object): value is PaginatedDummyStageList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedDummyStageListFromJSON(json: any): PaginatedDummyStageList { + return PaginatedDummyStageListFromJSONTyped(json, false); +} + +export function PaginatedDummyStageListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedDummyStageList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(DummyStageFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedDummyStageListToJSON(json: any): PaginatedDummyStageList { + return PaginatedDummyStageListToJSONTyped(json, false); +} + +export function PaginatedDummyStageListToJSONTyped( + value?: PaginatedDummyStageList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(DummyStageToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedDuoDeviceList.ts b/packages/client-ts/src/models/PaginatedDuoDeviceList.ts new file mode 100644 index 0000000000..fda0315168 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedDuoDeviceList.ts @@ -0,0 +1,91 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { DuoDevice } from "./DuoDevice"; +import { DuoDeviceFromJSON, DuoDeviceToJSON } from "./DuoDevice"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedDuoDeviceList + */ +export interface PaginatedDuoDeviceList { + /** + * + * @type {Pagination} + * @memberof PaginatedDuoDeviceList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedDuoDeviceList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedDuoDeviceList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedDuoDeviceList interface. + */ +export function instanceOfPaginatedDuoDeviceList(value: object): value is PaginatedDuoDeviceList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedDuoDeviceListFromJSON(json: any): PaginatedDuoDeviceList { + return PaginatedDuoDeviceListFromJSONTyped(json, false); +} + +export function PaginatedDuoDeviceListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedDuoDeviceList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(DuoDeviceFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedDuoDeviceListToJSON(json: any): PaginatedDuoDeviceList { + return PaginatedDuoDeviceListToJSONTyped(json, false); +} + +export function PaginatedDuoDeviceListToJSONTyped( + value?: PaginatedDuoDeviceList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(DuoDeviceToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedEmailDeviceList.ts b/packages/client-ts/src/models/PaginatedEmailDeviceList.ts new file mode 100644 index 0000000000..ee330f3e7e --- /dev/null +++ b/packages/client-ts/src/models/PaginatedEmailDeviceList.ts @@ -0,0 +1,93 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { EmailDevice } from "./EmailDevice"; +import { EmailDeviceFromJSON, EmailDeviceToJSON } from "./EmailDevice"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedEmailDeviceList + */ +export interface PaginatedEmailDeviceList { + /** + * + * @type {Pagination} + * @memberof PaginatedEmailDeviceList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedEmailDeviceList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedEmailDeviceList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedEmailDeviceList interface. + */ +export function instanceOfPaginatedEmailDeviceList( + value: object, +): value is PaginatedEmailDeviceList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedEmailDeviceListFromJSON(json: any): PaginatedEmailDeviceList { + return PaginatedEmailDeviceListFromJSONTyped(json, false); +} + +export function PaginatedEmailDeviceListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedEmailDeviceList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(EmailDeviceFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedEmailDeviceListToJSON(json: any): PaginatedEmailDeviceList { + return PaginatedEmailDeviceListToJSONTyped(json, false); +} + +export function PaginatedEmailDeviceListToJSONTyped( + value?: PaginatedEmailDeviceList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(EmailDeviceToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedEmailStageList.ts b/packages/client-ts/src/models/PaginatedEmailStageList.ts new file mode 100644 index 0000000000..0ad619a5a6 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedEmailStageList.ts @@ -0,0 +1,91 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { EmailStage } from "./EmailStage"; +import { EmailStageFromJSON, EmailStageToJSON } from "./EmailStage"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedEmailStageList + */ +export interface PaginatedEmailStageList { + /** + * + * @type {Pagination} + * @memberof PaginatedEmailStageList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedEmailStageList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedEmailStageList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedEmailStageList interface. + */ +export function instanceOfPaginatedEmailStageList(value: object): value is PaginatedEmailStageList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedEmailStageListFromJSON(json: any): PaginatedEmailStageList { + return PaginatedEmailStageListFromJSONTyped(json, false); +} + +export function PaginatedEmailStageListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedEmailStageList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(EmailStageFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedEmailStageListToJSON(json: any): PaginatedEmailStageList { + return PaginatedEmailStageListToJSONTyped(json, false); +} + +export function PaginatedEmailStageListToJSONTyped( + value?: PaginatedEmailStageList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(EmailStageToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedEndpointDeviceList.ts b/packages/client-ts/src/models/PaginatedEndpointDeviceList.ts new file mode 100644 index 0000000000..c13b76feb6 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedEndpointDeviceList.ts @@ -0,0 +1,93 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { EndpointDevice } from "./EndpointDevice"; +import { EndpointDeviceFromJSON, EndpointDeviceToJSON } from "./EndpointDevice"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedEndpointDeviceList + */ +export interface PaginatedEndpointDeviceList { + /** + * + * @type {Pagination} + * @memberof PaginatedEndpointDeviceList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedEndpointDeviceList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedEndpointDeviceList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedEndpointDeviceList interface. + */ +export function instanceOfPaginatedEndpointDeviceList( + value: object, +): value is PaginatedEndpointDeviceList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedEndpointDeviceListFromJSON(json: any): PaginatedEndpointDeviceList { + return PaginatedEndpointDeviceListFromJSONTyped(json, false); +} + +export function PaginatedEndpointDeviceListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedEndpointDeviceList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(EndpointDeviceFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedEndpointDeviceListToJSON(json: any): PaginatedEndpointDeviceList { + return PaginatedEndpointDeviceListToJSONTyped(json, false); +} + +export function PaginatedEndpointDeviceListToJSONTyped( + value?: PaginatedEndpointDeviceList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(EndpointDeviceToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedEndpointList.ts b/packages/client-ts/src/models/PaginatedEndpointList.ts new file mode 100644 index 0000000000..7ec82a4ec8 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedEndpointList.ts @@ -0,0 +1,91 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Endpoint } from "./Endpoint"; +import { EndpointFromJSON, EndpointToJSON } from "./Endpoint"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedEndpointList + */ +export interface PaginatedEndpointList { + /** + * + * @type {Pagination} + * @memberof PaginatedEndpointList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedEndpointList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedEndpointList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedEndpointList interface. + */ +export function instanceOfPaginatedEndpointList(value: object): value is PaginatedEndpointList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedEndpointListFromJSON(json: any): PaginatedEndpointList { + return PaginatedEndpointListFromJSONTyped(json, false); +} + +export function PaginatedEndpointListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedEndpointList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(EndpointFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedEndpointListToJSON(json: any): PaginatedEndpointList { + return PaginatedEndpointListToJSONTyped(json, false); +} + +export function PaginatedEndpointListToJSONTyped( + value?: PaginatedEndpointList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(EndpointToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedEndpointStageList.ts b/packages/client-ts/src/models/PaginatedEndpointStageList.ts new file mode 100644 index 0000000000..ad3a7f733d --- /dev/null +++ b/packages/client-ts/src/models/PaginatedEndpointStageList.ts @@ -0,0 +1,93 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { EndpointStage } from "./EndpointStage"; +import { EndpointStageFromJSON, EndpointStageToJSON } from "./EndpointStage"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedEndpointStageList + */ +export interface PaginatedEndpointStageList { + /** + * + * @type {Pagination} + * @memberof PaginatedEndpointStageList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedEndpointStageList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedEndpointStageList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedEndpointStageList interface. + */ +export function instanceOfPaginatedEndpointStageList( + value: object, +): value is PaginatedEndpointStageList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedEndpointStageListFromJSON(json: any): PaginatedEndpointStageList { + return PaginatedEndpointStageListFromJSONTyped(json, false); +} + +export function PaginatedEndpointStageListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedEndpointStageList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(EndpointStageFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedEndpointStageListToJSON(json: any): PaginatedEndpointStageList { + return PaginatedEndpointStageListToJSONTyped(json, false); +} + +export function PaginatedEndpointStageListToJSONTyped( + value?: PaginatedEndpointStageList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(EndpointStageToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedEnrollmentTokenList.ts b/packages/client-ts/src/models/PaginatedEnrollmentTokenList.ts new file mode 100644 index 0000000000..a65fe0a4d7 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedEnrollmentTokenList.ts @@ -0,0 +1,93 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { EnrollmentToken } from "./EnrollmentToken"; +import { EnrollmentTokenFromJSON, EnrollmentTokenToJSON } from "./EnrollmentToken"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedEnrollmentTokenList + */ +export interface PaginatedEnrollmentTokenList { + /** + * + * @type {Pagination} + * @memberof PaginatedEnrollmentTokenList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedEnrollmentTokenList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedEnrollmentTokenList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedEnrollmentTokenList interface. + */ +export function instanceOfPaginatedEnrollmentTokenList( + value: object, +): value is PaginatedEnrollmentTokenList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedEnrollmentTokenListFromJSON(json: any): PaginatedEnrollmentTokenList { + return PaginatedEnrollmentTokenListFromJSONTyped(json, false); +} + +export function PaginatedEnrollmentTokenListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedEnrollmentTokenList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(EnrollmentTokenFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedEnrollmentTokenListToJSON(json: any): PaginatedEnrollmentTokenList { + return PaginatedEnrollmentTokenListToJSONTyped(json, false); +} + +export function PaginatedEnrollmentTokenListToJSONTyped( + value?: PaginatedEnrollmentTokenList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(EnrollmentTokenToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedEventList.ts b/packages/client-ts/src/models/PaginatedEventList.ts new file mode 100644 index 0000000000..b2bea20cdd --- /dev/null +++ b/packages/client-ts/src/models/PaginatedEventList.ts @@ -0,0 +1,91 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Event } from "./Event"; +import { EventFromJSON, EventToJSON } from "./Event"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedEventList + */ +export interface PaginatedEventList { + /** + * + * @type {Pagination} + * @memberof PaginatedEventList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedEventList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedEventList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedEventList interface. + */ +export function instanceOfPaginatedEventList(value: object): value is PaginatedEventList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedEventListFromJSON(json: any): PaginatedEventList { + return PaginatedEventListFromJSONTyped(json, false); +} + +export function PaginatedEventListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedEventList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(EventFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedEventListToJSON(json: any): PaginatedEventList { + return PaginatedEventListToJSONTyped(json, false); +} + +export function PaginatedEventListToJSONTyped( + value?: PaginatedEventList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(EventToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedEventMatcherPolicyList.ts b/packages/client-ts/src/models/PaginatedEventMatcherPolicyList.ts new file mode 100644 index 0000000000..7cc8b77ebd --- /dev/null +++ b/packages/client-ts/src/models/PaginatedEventMatcherPolicyList.ts @@ -0,0 +1,95 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { EventMatcherPolicy } from "./EventMatcherPolicy"; +import { EventMatcherPolicyFromJSON, EventMatcherPolicyToJSON } from "./EventMatcherPolicy"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedEventMatcherPolicyList + */ +export interface PaginatedEventMatcherPolicyList { + /** + * + * @type {Pagination} + * @memberof PaginatedEventMatcherPolicyList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedEventMatcherPolicyList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedEventMatcherPolicyList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedEventMatcherPolicyList interface. + */ +export function instanceOfPaginatedEventMatcherPolicyList( + value: object, +): value is PaginatedEventMatcherPolicyList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedEventMatcherPolicyListFromJSON( + json: any, +): PaginatedEventMatcherPolicyList { + return PaginatedEventMatcherPolicyListFromJSONTyped(json, false); +} + +export function PaginatedEventMatcherPolicyListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedEventMatcherPolicyList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(EventMatcherPolicyFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedEventMatcherPolicyListToJSON(json: any): PaginatedEventMatcherPolicyList { + return PaginatedEventMatcherPolicyListToJSONTyped(json, false); +} + +export function PaginatedEventMatcherPolicyListToJSONTyped( + value?: PaginatedEventMatcherPolicyList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(EventMatcherPolicyToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedExpiringBaseGrantModelList.ts b/packages/client-ts/src/models/PaginatedExpiringBaseGrantModelList.ts new file mode 100644 index 0000000000..e66fb7fd85 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedExpiringBaseGrantModelList.ts @@ -0,0 +1,100 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { ExpiringBaseGrantModel } from "./ExpiringBaseGrantModel"; +import { + ExpiringBaseGrantModelFromJSON, + ExpiringBaseGrantModelToJSON, +} from "./ExpiringBaseGrantModel"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedExpiringBaseGrantModelList + */ +export interface PaginatedExpiringBaseGrantModelList { + /** + * + * @type {Pagination} + * @memberof PaginatedExpiringBaseGrantModelList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedExpiringBaseGrantModelList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedExpiringBaseGrantModelList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedExpiringBaseGrantModelList interface. + */ +export function instanceOfPaginatedExpiringBaseGrantModelList( + value: object, +): value is PaginatedExpiringBaseGrantModelList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedExpiringBaseGrantModelListFromJSON( + json: any, +): PaginatedExpiringBaseGrantModelList { + return PaginatedExpiringBaseGrantModelListFromJSONTyped(json, false); +} + +export function PaginatedExpiringBaseGrantModelListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedExpiringBaseGrantModelList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(ExpiringBaseGrantModelFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedExpiringBaseGrantModelListToJSON( + json: any, +): PaginatedExpiringBaseGrantModelList { + return PaginatedExpiringBaseGrantModelListToJSONTyped(json, false); +} + +export function PaginatedExpiringBaseGrantModelListToJSONTyped( + value?: PaginatedExpiringBaseGrantModelList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(ExpiringBaseGrantModelToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedExpressionPolicyList.ts b/packages/client-ts/src/models/PaginatedExpressionPolicyList.ts new file mode 100644 index 0000000000..fccb87a515 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedExpressionPolicyList.ts @@ -0,0 +1,93 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { ExpressionPolicy } from "./ExpressionPolicy"; +import { ExpressionPolicyFromJSON, ExpressionPolicyToJSON } from "./ExpressionPolicy"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedExpressionPolicyList + */ +export interface PaginatedExpressionPolicyList { + /** + * + * @type {Pagination} + * @memberof PaginatedExpressionPolicyList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedExpressionPolicyList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedExpressionPolicyList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedExpressionPolicyList interface. + */ +export function instanceOfPaginatedExpressionPolicyList( + value: object, +): value is PaginatedExpressionPolicyList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedExpressionPolicyListFromJSON(json: any): PaginatedExpressionPolicyList { + return PaginatedExpressionPolicyListFromJSONTyped(json, false); +} + +export function PaginatedExpressionPolicyListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedExpressionPolicyList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(ExpressionPolicyFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedExpressionPolicyListToJSON(json: any): PaginatedExpressionPolicyList { + return PaginatedExpressionPolicyListToJSONTyped(json, false); +} + +export function PaginatedExpressionPolicyListToJSONTyped( + value?: PaginatedExpressionPolicyList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(ExpressionPolicyToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedExtraRoleObjectPermissionList.ts b/packages/client-ts/src/models/PaginatedExtraRoleObjectPermissionList.ts new file mode 100644 index 0000000000..92a481c00b --- /dev/null +++ b/packages/client-ts/src/models/PaginatedExtraRoleObjectPermissionList.ts @@ -0,0 +1,100 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { ExtraRoleObjectPermission } from "./ExtraRoleObjectPermission"; +import { + ExtraRoleObjectPermissionFromJSON, + ExtraRoleObjectPermissionToJSON, +} from "./ExtraRoleObjectPermission"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedExtraRoleObjectPermissionList + */ +export interface PaginatedExtraRoleObjectPermissionList { + /** + * + * @type {Pagination} + * @memberof PaginatedExtraRoleObjectPermissionList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedExtraRoleObjectPermissionList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedExtraRoleObjectPermissionList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedExtraRoleObjectPermissionList interface. + */ +export function instanceOfPaginatedExtraRoleObjectPermissionList( + value: object, +): value is PaginatedExtraRoleObjectPermissionList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedExtraRoleObjectPermissionListFromJSON( + json: any, +): PaginatedExtraRoleObjectPermissionList { + return PaginatedExtraRoleObjectPermissionListFromJSONTyped(json, false); +} + +export function PaginatedExtraRoleObjectPermissionListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedExtraRoleObjectPermissionList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(ExtraRoleObjectPermissionFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedExtraRoleObjectPermissionListToJSON( + json: any, +): PaginatedExtraRoleObjectPermissionList { + return PaginatedExtraRoleObjectPermissionListToJSONTyped(json, false); +} + +export function PaginatedExtraRoleObjectPermissionListToJSONTyped( + value?: PaginatedExtraRoleObjectPermissionList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(ExtraRoleObjectPermissionToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedFleetConnectorList.ts b/packages/client-ts/src/models/PaginatedFleetConnectorList.ts new file mode 100644 index 0000000000..305f641ef2 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedFleetConnectorList.ts @@ -0,0 +1,93 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { FleetConnector } from "./FleetConnector"; +import { FleetConnectorFromJSON, FleetConnectorToJSON } from "./FleetConnector"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedFleetConnectorList + */ +export interface PaginatedFleetConnectorList { + /** + * + * @type {Pagination} + * @memberof PaginatedFleetConnectorList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedFleetConnectorList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedFleetConnectorList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedFleetConnectorList interface. + */ +export function instanceOfPaginatedFleetConnectorList( + value: object, +): value is PaginatedFleetConnectorList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedFleetConnectorListFromJSON(json: any): PaginatedFleetConnectorList { + return PaginatedFleetConnectorListFromJSONTyped(json, false); +} + +export function PaginatedFleetConnectorListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedFleetConnectorList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(FleetConnectorFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedFleetConnectorListToJSON(json: any): PaginatedFleetConnectorList { + return PaginatedFleetConnectorListToJSONTyped(json, false); +} + +export function PaginatedFleetConnectorListToJSONTyped( + value?: PaginatedFleetConnectorList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(FleetConnectorToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedFlowList.ts b/packages/client-ts/src/models/PaginatedFlowList.ts new file mode 100644 index 0000000000..ee42dce0e5 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedFlowList.ts @@ -0,0 +1,91 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Flow } from "./Flow"; +import { FlowFromJSON, FlowToJSON } from "./Flow"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedFlowList + */ +export interface PaginatedFlowList { + /** + * + * @type {Pagination} + * @memberof PaginatedFlowList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedFlowList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedFlowList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedFlowList interface. + */ +export function instanceOfPaginatedFlowList(value: object): value is PaginatedFlowList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedFlowListFromJSON(json: any): PaginatedFlowList { + return PaginatedFlowListFromJSONTyped(json, false); +} + +export function PaginatedFlowListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedFlowList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(FlowFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedFlowListToJSON(json: any): PaginatedFlowList { + return PaginatedFlowListToJSONTyped(json, false); +} + +export function PaginatedFlowListToJSONTyped( + value?: PaginatedFlowList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(FlowToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedFlowStageBindingList.ts b/packages/client-ts/src/models/PaginatedFlowStageBindingList.ts new file mode 100644 index 0000000000..9d97bf97b1 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedFlowStageBindingList.ts @@ -0,0 +1,93 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { FlowStageBinding } from "./FlowStageBinding"; +import { FlowStageBindingFromJSON, FlowStageBindingToJSON } from "./FlowStageBinding"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedFlowStageBindingList + */ +export interface PaginatedFlowStageBindingList { + /** + * + * @type {Pagination} + * @memberof PaginatedFlowStageBindingList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedFlowStageBindingList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedFlowStageBindingList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedFlowStageBindingList interface. + */ +export function instanceOfPaginatedFlowStageBindingList( + value: object, +): value is PaginatedFlowStageBindingList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedFlowStageBindingListFromJSON(json: any): PaginatedFlowStageBindingList { + return PaginatedFlowStageBindingListFromJSONTyped(json, false); +} + +export function PaginatedFlowStageBindingListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedFlowStageBindingList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(FlowStageBindingFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedFlowStageBindingListToJSON(json: any): PaginatedFlowStageBindingList { + return PaginatedFlowStageBindingListToJSONTyped(json, false); +} + +export function PaginatedFlowStageBindingListToJSONTyped( + value?: PaginatedFlowStageBindingList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(FlowStageBindingToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedGeoIPPolicyList.ts b/packages/client-ts/src/models/PaginatedGeoIPPolicyList.ts new file mode 100644 index 0000000000..26bf2b0690 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedGeoIPPolicyList.ts @@ -0,0 +1,93 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { GeoIPPolicy } from "./GeoIPPolicy"; +import { GeoIPPolicyFromJSON, GeoIPPolicyToJSON } from "./GeoIPPolicy"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedGeoIPPolicyList + */ +export interface PaginatedGeoIPPolicyList { + /** + * + * @type {Pagination} + * @memberof PaginatedGeoIPPolicyList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedGeoIPPolicyList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedGeoIPPolicyList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedGeoIPPolicyList interface. + */ +export function instanceOfPaginatedGeoIPPolicyList( + value: object, +): value is PaginatedGeoIPPolicyList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedGeoIPPolicyListFromJSON(json: any): PaginatedGeoIPPolicyList { + return PaginatedGeoIPPolicyListFromJSONTyped(json, false); +} + +export function PaginatedGeoIPPolicyListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedGeoIPPolicyList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(GeoIPPolicyFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedGeoIPPolicyListToJSON(json: any): PaginatedGeoIPPolicyList { + return PaginatedGeoIPPolicyListToJSONTyped(json, false); +} + +export function PaginatedGeoIPPolicyListToJSONTyped( + value?: PaginatedGeoIPPolicyList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(GeoIPPolicyToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedGoogleChromeConnectorList.ts b/packages/client-ts/src/models/PaginatedGoogleChromeConnectorList.ts new file mode 100644 index 0000000000..ebecb5e86e --- /dev/null +++ b/packages/client-ts/src/models/PaginatedGoogleChromeConnectorList.ts @@ -0,0 +1,100 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { GoogleChromeConnector } from "./GoogleChromeConnector"; +import { + GoogleChromeConnectorFromJSON, + GoogleChromeConnectorToJSON, +} from "./GoogleChromeConnector"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedGoogleChromeConnectorList + */ +export interface PaginatedGoogleChromeConnectorList { + /** + * + * @type {Pagination} + * @memberof PaginatedGoogleChromeConnectorList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedGoogleChromeConnectorList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedGoogleChromeConnectorList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedGoogleChromeConnectorList interface. + */ +export function instanceOfPaginatedGoogleChromeConnectorList( + value: object, +): value is PaginatedGoogleChromeConnectorList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedGoogleChromeConnectorListFromJSON( + json: any, +): PaginatedGoogleChromeConnectorList { + return PaginatedGoogleChromeConnectorListFromJSONTyped(json, false); +} + +export function PaginatedGoogleChromeConnectorListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedGoogleChromeConnectorList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(GoogleChromeConnectorFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedGoogleChromeConnectorListToJSON( + json: any, +): PaginatedGoogleChromeConnectorList { + return PaginatedGoogleChromeConnectorListToJSONTyped(json, false); +} + +export function PaginatedGoogleChromeConnectorListToJSONTyped( + value?: PaginatedGoogleChromeConnectorList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(GoogleChromeConnectorToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedGoogleEndpointDeviceList.ts b/packages/client-ts/src/models/PaginatedGoogleEndpointDeviceList.ts new file mode 100644 index 0000000000..1e43f6b4ac --- /dev/null +++ b/packages/client-ts/src/models/PaginatedGoogleEndpointDeviceList.ts @@ -0,0 +1,97 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { GoogleEndpointDevice } from "./GoogleEndpointDevice"; +import { GoogleEndpointDeviceFromJSON, GoogleEndpointDeviceToJSON } from "./GoogleEndpointDevice"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedGoogleEndpointDeviceList + */ +export interface PaginatedGoogleEndpointDeviceList { + /** + * + * @type {Pagination} + * @memberof PaginatedGoogleEndpointDeviceList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedGoogleEndpointDeviceList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedGoogleEndpointDeviceList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedGoogleEndpointDeviceList interface. + */ +export function instanceOfPaginatedGoogleEndpointDeviceList( + value: object, +): value is PaginatedGoogleEndpointDeviceList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedGoogleEndpointDeviceListFromJSON( + json: any, +): PaginatedGoogleEndpointDeviceList { + return PaginatedGoogleEndpointDeviceListFromJSONTyped(json, false); +} + +export function PaginatedGoogleEndpointDeviceListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedGoogleEndpointDeviceList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(GoogleEndpointDeviceFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedGoogleEndpointDeviceListToJSON( + json: any, +): PaginatedGoogleEndpointDeviceList { + return PaginatedGoogleEndpointDeviceListToJSONTyped(json, false); +} + +export function PaginatedGoogleEndpointDeviceListToJSONTyped( + value?: PaginatedGoogleEndpointDeviceList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(GoogleEndpointDeviceToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedGoogleWorkspaceProviderGroupList.ts b/packages/client-ts/src/models/PaginatedGoogleWorkspaceProviderGroupList.ts new file mode 100644 index 0000000000..4bfca5c008 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedGoogleWorkspaceProviderGroupList.ts @@ -0,0 +1,100 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { GoogleWorkspaceProviderGroup } from "./GoogleWorkspaceProviderGroup"; +import { + GoogleWorkspaceProviderGroupFromJSON, + GoogleWorkspaceProviderGroupToJSON, +} from "./GoogleWorkspaceProviderGroup"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedGoogleWorkspaceProviderGroupList + */ +export interface PaginatedGoogleWorkspaceProviderGroupList { + /** + * + * @type {Pagination} + * @memberof PaginatedGoogleWorkspaceProviderGroupList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedGoogleWorkspaceProviderGroupList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedGoogleWorkspaceProviderGroupList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedGoogleWorkspaceProviderGroupList interface. + */ +export function instanceOfPaginatedGoogleWorkspaceProviderGroupList( + value: object, +): value is PaginatedGoogleWorkspaceProviderGroupList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedGoogleWorkspaceProviderGroupListFromJSON( + json: any, +): PaginatedGoogleWorkspaceProviderGroupList { + return PaginatedGoogleWorkspaceProviderGroupListFromJSONTyped(json, false); +} + +export function PaginatedGoogleWorkspaceProviderGroupListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedGoogleWorkspaceProviderGroupList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(GoogleWorkspaceProviderGroupFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedGoogleWorkspaceProviderGroupListToJSON( + json: any, +): PaginatedGoogleWorkspaceProviderGroupList { + return PaginatedGoogleWorkspaceProviderGroupListToJSONTyped(json, false); +} + +export function PaginatedGoogleWorkspaceProviderGroupListToJSONTyped( + value?: PaginatedGoogleWorkspaceProviderGroupList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(GoogleWorkspaceProviderGroupToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedGoogleWorkspaceProviderList.ts b/packages/client-ts/src/models/PaginatedGoogleWorkspaceProviderList.ts new file mode 100644 index 0000000000..1dda44e3ab --- /dev/null +++ b/packages/client-ts/src/models/PaginatedGoogleWorkspaceProviderList.ts @@ -0,0 +1,100 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { GoogleWorkspaceProvider } from "./GoogleWorkspaceProvider"; +import { + GoogleWorkspaceProviderFromJSON, + GoogleWorkspaceProviderToJSON, +} from "./GoogleWorkspaceProvider"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedGoogleWorkspaceProviderList + */ +export interface PaginatedGoogleWorkspaceProviderList { + /** + * + * @type {Pagination} + * @memberof PaginatedGoogleWorkspaceProviderList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedGoogleWorkspaceProviderList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedGoogleWorkspaceProviderList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedGoogleWorkspaceProviderList interface. + */ +export function instanceOfPaginatedGoogleWorkspaceProviderList( + value: object, +): value is PaginatedGoogleWorkspaceProviderList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedGoogleWorkspaceProviderListFromJSON( + json: any, +): PaginatedGoogleWorkspaceProviderList { + return PaginatedGoogleWorkspaceProviderListFromJSONTyped(json, false); +} + +export function PaginatedGoogleWorkspaceProviderListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedGoogleWorkspaceProviderList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(GoogleWorkspaceProviderFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedGoogleWorkspaceProviderListToJSON( + json: any, +): PaginatedGoogleWorkspaceProviderList { + return PaginatedGoogleWorkspaceProviderListToJSONTyped(json, false); +} + +export function PaginatedGoogleWorkspaceProviderListToJSONTyped( + value?: PaginatedGoogleWorkspaceProviderList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(GoogleWorkspaceProviderToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedGoogleWorkspaceProviderMappingList.ts b/packages/client-ts/src/models/PaginatedGoogleWorkspaceProviderMappingList.ts new file mode 100644 index 0000000000..859e0c210e --- /dev/null +++ b/packages/client-ts/src/models/PaginatedGoogleWorkspaceProviderMappingList.ts @@ -0,0 +1,100 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { GoogleWorkspaceProviderMapping } from "./GoogleWorkspaceProviderMapping"; +import { + GoogleWorkspaceProviderMappingFromJSON, + GoogleWorkspaceProviderMappingToJSON, +} from "./GoogleWorkspaceProviderMapping"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedGoogleWorkspaceProviderMappingList + */ +export interface PaginatedGoogleWorkspaceProviderMappingList { + /** + * + * @type {Pagination} + * @memberof PaginatedGoogleWorkspaceProviderMappingList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedGoogleWorkspaceProviderMappingList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedGoogleWorkspaceProviderMappingList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedGoogleWorkspaceProviderMappingList interface. + */ +export function instanceOfPaginatedGoogleWorkspaceProviderMappingList( + value: object, +): value is PaginatedGoogleWorkspaceProviderMappingList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedGoogleWorkspaceProviderMappingListFromJSON( + json: any, +): PaginatedGoogleWorkspaceProviderMappingList { + return PaginatedGoogleWorkspaceProviderMappingListFromJSONTyped(json, false); +} + +export function PaginatedGoogleWorkspaceProviderMappingListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedGoogleWorkspaceProviderMappingList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(GoogleWorkspaceProviderMappingFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedGoogleWorkspaceProviderMappingListToJSON( + json: any, +): PaginatedGoogleWorkspaceProviderMappingList { + return PaginatedGoogleWorkspaceProviderMappingListToJSONTyped(json, false); +} + +export function PaginatedGoogleWorkspaceProviderMappingListToJSONTyped( + value?: PaginatedGoogleWorkspaceProviderMappingList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(GoogleWorkspaceProviderMappingToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedGoogleWorkspaceProviderUserList.ts b/packages/client-ts/src/models/PaginatedGoogleWorkspaceProviderUserList.ts new file mode 100644 index 0000000000..f71f2c4b60 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedGoogleWorkspaceProviderUserList.ts @@ -0,0 +1,100 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { GoogleWorkspaceProviderUser } from "./GoogleWorkspaceProviderUser"; +import { + GoogleWorkspaceProviderUserFromJSON, + GoogleWorkspaceProviderUserToJSON, +} from "./GoogleWorkspaceProviderUser"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedGoogleWorkspaceProviderUserList + */ +export interface PaginatedGoogleWorkspaceProviderUserList { + /** + * + * @type {Pagination} + * @memberof PaginatedGoogleWorkspaceProviderUserList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedGoogleWorkspaceProviderUserList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedGoogleWorkspaceProviderUserList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedGoogleWorkspaceProviderUserList interface. + */ +export function instanceOfPaginatedGoogleWorkspaceProviderUserList( + value: object, +): value is PaginatedGoogleWorkspaceProviderUserList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedGoogleWorkspaceProviderUserListFromJSON( + json: any, +): PaginatedGoogleWorkspaceProviderUserList { + return PaginatedGoogleWorkspaceProviderUserListFromJSONTyped(json, false); +} + +export function PaginatedGoogleWorkspaceProviderUserListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedGoogleWorkspaceProviderUserList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(GoogleWorkspaceProviderUserFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedGoogleWorkspaceProviderUserListToJSON( + json: any, +): PaginatedGoogleWorkspaceProviderUserList { + return PaginatedGoogleWorkspaceProviderUserListToJSONTyped(json, false); +} + +export function PaginatedGoogleWorkspaceProviderUserListToJSONTyped( + value?: PaginatedGoogleWorkspaceProviderUserList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(GoogleWorkspaceProviderUserToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedGroupKerberosSourceConnectionList.ts b/packages/client-ts/src/models/PaginatedGroupKerberosSourceConnectionList.ts new file mode 100644 index 0000000000..41f257f179 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedGroupKerberosSourceConnectionList.ts @@ -0,0 +1,100 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { GroupKerberosSourceConnection } from "./GroupKerberosSourceConnection"; +import { + GroupKerberosSourceConnectionFromJSON, + GroupKerberosSourceConnectionToJSON, +} from "./GroupKerberosSourceConnection"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedGroupKerberosSourceConnectionList + */ +export interface PaginatedGroupKerberosSourceConnectionList { + /** + * + * @type {Pagination} + * @memberof PaginatedGroupKerberosSourceConnectionList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedGroupKerberosSourceConnectionList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedGroupKerberosSourceConnectionList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedGroupKerberosSourceConnectionList interface. + */ +export function instanceOfPaginatedGroupKerberosSourceConnectionList( + value: object, +): value is PaginatedGroupKerberosSourceConnectionList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedGroupKerberosSourceConnectionListFromJSON( + json: any, +): PaginatedGroupKerberosSourceConnectionList { + return PaginatedGroupKerberosSourceConnectionListFromJSONTyped(json, false); +} + +export function PaginatedGroupKerberosSourceConnectionListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedGroupKerberosSourceConnectionList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(GroupKerberosSourceConnectionFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedGroupKerberosSourceConnectionListToJSON( + json: any, +): PaginatedGroupKerberosSourceConnectionList { + return PaginatedGroupKerberosSourceConnectionListToJSONTyped(json, false); +} + +export function PaginatedGroupKerberosSourceConnectionListToJSONTyped( + value?: PaginatedGroupKerberosSourceConnectionList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(GroupKerberosSourceConnectionToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedGroupLDAPSourceConnectionList.ts b/packages/client-ts/src/models/PaginatedGroupLDAPSourceConnectionList.ts new file mode 100644 index 0000000000..230579d023 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedGroupLDAPSourceConnectionList.ts @@ -0,0 +1,100 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { GroupLDAPSourceConnection } from "./GroupLDAPSourceConnection"; +import { + GroupLDAPSourceConnectionFromJSON, + GroupLDAPSourceConnectionToJSON, +} from "./GroupLDAPSourceConnection"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedGroupLDAPSourceConnectionList + */ +export interface PaginatedGroupLDAPSourceConnectionList { + /** + * + * @type {Pagination} + * @memberof PaginatedGroupLDAPSourceConnectionList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedGroupLDAPSourceConnectionList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedGroupLDAPSourceConnectionList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedGroupLDAPSourceConnectionList interface. + */ +export function instanceOfPaginatedGroupLDAPSourceConnectionList( + value: object, +): value is PaginatedGroupLDAPSourceConnectionList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedGroupLDAPSourceConnectionListFromJSON( + json: any, +): PaginatedGroupLDAPSourceConnectionList { + return PaginatedGroupLDAPSourceConnectionListFromJSONTyped(json, false); +} + +export function PaginatedGroupLDAPSourceConnectionListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedGroupLDAPSourceConnectionList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(GroupLDAPSourceConnectionFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedGroupLDAPSourceConnectionListToJSON( + json: any, +): PaginatedGroupLDAPSourceConnectionList { + return PaginatedGroupLDAPSourceConnectionListToJSONTyped(json, false); +} + +export function PaginatedGroupLDAPSourceConnectionListToJSONTyped( + value?: PaginatedGroupLDAPSourceConnectionList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(GroupLDAPSourceConnectionToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedGroupList.ts b/packages/client-ts/src/models/PaginatedGroupList.ts new file mode 100644 index 0000000000..c6bd57de21 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedGroupList.ts @@ -0,0 +1,91 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Group } from "./Group"; +import { GroupFromJSON, GroupToJSON } from "./Group"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedGroupList + */ +export interface PaginatedGroupList { + /** + * + * @type {Pagination} + * @memberof PaginatedGroupList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedGroupList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedGroupList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedGroupList interface. + */ +export function instanceOfPaginatedGroupList(value: object): value is PaginatedGroupList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedGroupListFromJSON(json: any): PaginatedGroupList { + return PaginatedGroupListFromJSONTyped(json, false); +} + +export function PaginatedGroupListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedGroupList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(GroupFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedGroupListToJSON(json: any): PaginatedGroupList { + return PaginatedGroupListToJSONTyped(json, false); +} + +export function PaginatedGroupListToJSONTyped( + value?: PaginatedGroupList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(GroupToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedGroupOAuthSourceConnectionList.ts b/packages/client-ts/src/models/PaginatedGroupOAuthSourceConnectionList.ts new file mode 100644 index 0000000000..1f647059b2 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedGroupOAuthSourceConnectionList.ts @@ -0,0 +1,100 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { GroupOAuthSourceConnection } from "./GroupOAuthSourceConnection"; +import { + GroupOAuthSourceConnectionFromJSON, + GroupOAuthSourceConnectionToJSON, +} from "./GroupOAuthSourceConnection"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedGroupOAuthSourceConnectionList + */ +export interface PaginatedGroupOAuthSourceConnectionList { + /** + * + * @type {Pagination} + * @memberof PaginatedGroupOAuthSourceConnectionList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedGroupOAuthSourceConnectionList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedGroupOAuthSourceConnectionList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedGroupOAuthSourceConnectionList interface. + */ +export function instanceOfPaginatedGroupOAuthSourceConnectionList( + value: object, +): value is PaginatedGroupOAuthSourceConnectionList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedGroupOAuthSourceConnectionListFromJSON( + json: any, +): PaginatedGroupOAuthSourceConnectionList { + return PaginatedGroupOAuthSourceConnectionListFromJSONTyped(json, false); +} + +export function PaginatedGroupOAuthSourceConnectionListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedGroupOAuthSourceConnectionList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(GroupOAuthSourceConnectionFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedGroupOAuthSourceConnectionListToJSON( + json: any, +): PaginatedGroupOAuthSourceConnectionList { + return PaginatedGroupOAuthSourceConnectionListToJSONTyped(json, false); +} + +export function PaginatedGroupOAuthSourceConnectionListToJSONTyped( + value?: PaginatedGroupOAuthSourceConnectionList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(GroupOAuthSourceConnectionToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedGroupPlexSourceConnectionList.ts b/packages/client-ts/src/models/PaginatedGroupPlexSourceConnectionList.ts new file mode 100644 index 0000000000..a271464988 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedGroupPlexSourceConnectionList.ts @@ -0,0 +1,100 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { GroupPlexSourceConnection } from "./GroupPlexSourceConnection"; +import { + GroupPlexSourceConnectionFromJSON, + GroupPlexSourceConnectionToJSON, +} from "./GroupPlexSourceConnection"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedGroupPlexSourceConnectionList + */ +export interface PaginatedGroupPlexSourceConnectionList { + /** + * + * @type {Pagination} + * @memberof PaginatedGroupPlexSourceConnectionList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedGroupPlexSourceConnectionList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedGroupPlexSourceConnectionList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedGroupPlexSourceConnectionList interface. + */ +export function instanceOfPaginatedGroupPlexSourceConnectionList( + value: object, +): value is PaginatedGroupPlexSourceConnectionList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedGroupPlexSourceConnectionListFromJSON( + json: any, +): PaginatedGroupPlexSourceConnectionList { + return PaginatedGroupPlexSourceConnectionListFromJSONTyped(json, false); +} + +export function PaginatedGroupPlexSourceConnectionListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedGroupPlexSourceConnectionList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(GroupPlexSourceConnectionFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedGroupPlexSourceConnectionListToJSON( + json: any, +): PaginatedGroupPlexSourceConnectionList { + return PaginatedGroupPlexSourceConnectionListToJSONTyped(json, false); +} + +export function PaginatedGroupPlexSourceConnectionListToJSONTyped( + value?: PaginatedGroupPlexSourceConnectionList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(GroupPlexSourceConnectionToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedGroupSAMLSourceConnectionList.ts b/packages/client-ts/src/models/PaginatedGroupSAMLSourceConnectionList.ts new file mode 100644 index 0000000000..dba54c679f --- /dev/null +++ b/packages/client-ts/src/models/PaginatedGroupSAMLSourceConnectionList.ts @@ -0,0 +1,100 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { GroupSAMLSourceConnection } from "./GroupSAMLSourceConnection"; +import { + GroupSAMLSourceConnectionFromJSON, + GroupSAMLSourceConnectionToJSON, +} from "./GroupSAMLSourceConnection"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedGroupSAMLSourceConnectionList + */ +export interface PaginatedGroupSAMLSourceConnectionList { + /** + * + * @type {Pagination} + * @memberof PaginatedGroupSAMLSourceConnectionList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedGroupSAMLSourceConnectionList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedGroupSAMLSourceConnectionList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedGroupSAMLSourceConnectionList interface. + */ +export function instanceOfPaginatedGroupSAMLSourceConnectionList( + value: object, +): value is PaginatedGroupSAMLSourceConnectionList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedGroupSAMLSourceConnectionListFromJSON( + json: any, +): PaginatedGroupSAMLSourceConnectionList { + return PaginatedGroupSAMLSourceConnectionListFromJSONTyped(json, false); +} + +export function PaginatedGroupSAMLSourceConnectionListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedGroupSAMLSourceConnectionList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(GroupSAMLSourceConnectionFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedGroupSAMLSourceConnectionListToJSON( + json: any, +): PaginatedGroupSAMLSourceConnectionList { + return PaginatedGroupSAMLSourceConnectionListToJSONTyped(json, false); +} + +export function PaginatedGroupSAMLSourceConnectionListToJSONTyped( + value?: PaginatedGroupSAMLSourceConnectionList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(GroupSAMLSourceConnectionToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedGroupSourceConnectionList.ts b/packages/client-ts/src/models/PaginatedGroupSourceConnectionList.ts new file mode 100644 index 0000000000..eebcea7205 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedGroupSourceConnectionList.ts @@ -0,0 +1,100 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { GroupSourceConnection } from "./GroupSourceConnection"; +import { + GroupSourceConnectionFromJSON, + GroupSourceConnectionToJSON, +} from "./GroupSourceConnection"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedGroupSourceConnectionList + */ +export interface PaginatedGroupSourceConnectionList { + /** + * + * @type {Pagination} + * @memberof PaginatedGroupSourceConnectionList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedGroupSourceConnectionList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedGroupSourceConnectionList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedGroupSourceConnectionList interface. + */ +export function instanceOfPaginatedGroupSourceConnectionList( + value: object, +): value is PaginatedGroupSourceConnectionList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedGroupSourceConnectionListFromJSON( + json: any, +): PaginatedGroupSourceConnectionList { + return PaginatedGroupSourceConnectionListFromJSONTyped(json, false); +} + +export function PaginatedGroupSourceConnectionListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedGroupSourceConnectionList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(GroupSourceConnectionFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedGroupSourceConnectionListToJSON( + json: any, +): PaginatedGroupSourceConnectionList { + return PaginatedGroupSourceConnectionListToJSONTyped(json, false); +} + +export function PaginatedGroupSourceConnectionListToJSONTyped( + value?: PaginatedGroupSourceConnectionList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(GroupSourceConnectionToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedGroupTelegramSourceConnectionList.ts b/packages/client-ts/src/models/PaginatedGroupTelegramSourceConnectionList.ts new file mode 100644 index 0000000000..258f63b0f7 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedGroupTelegramSourceConnectionList.ts @@ -0,0 +1,100 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { GroupTelegramSourceConnection } from "./GroupTelegramSourceConnection"; +import { + GroupTelegramSourceConnectionFromJSON, + GroupTelegramSourceConnectionToJSON, +} from "./GroupTelegramSourceConnection"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedGroupTelegramSourceConnectionList + */ +export interface PaginatedGroupTelegramSourceConnectionList { + /** + * + * @type {Pagination} + * @memberof PaginatedGroupTelegramSourceConnectionList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedGroupTelegramSourceConnectionList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedGroupTelegramSourceConnectionList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedGroupTelegramSourceConnectionList interface. + */ +export function instanceOfPaginatedGroupTelegramSourceConnectionList( + value: object, +): value is PaginatedGroupTelegramSourceConnectionList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedGroupTelegramSourceConnectionListFromJSON( + json: any, +): PaginatedGroupTelegramSourceConnectionList { + return PaginatedGroupTelegramSourceConnectionListFromJSONTyped(json, false); +} + +export function PaginatedGroupTelegramSourceConnectionListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedGroupTelegramSourceConnectionList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(GroupTelegramSourceConnectionFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedGroupTelegramSourceConnectionListToJSON( + json: any, +): PaginatedGroupTelegramSourceConnectionList { + return PaginatedGroupTelegramSourceConnectionListToJSONTyped(json, false); +} + +export function PaginatedGroupTelegramSourceConnectionListToJSONTyped( + value?: PaginatedGroupTelegramSourceConnectionList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(GroupTelegramSourceConnectionToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedIdentificationStageList.ts b/packages/client-ts/src/models/PaginatedIdentificationStageList.ts new file mode 100644 index 0000000000..a325c0dc35 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedIdentificationStageList.ts @@ -0,0 +1,97 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { IdentificationStage } from "./IdentificationStage"; +import { IdentificationStageFromJSON, IdentificationStageToJSON } from "./IdentificationStage"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedIdentificationStageList + */ +export interface PaginatedIdentificationStageList { + /** + * + * @type {Pagination} + * @memberof PaginatedIdentificationStageList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedIdentificationStageList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedIdentificationStageList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedIdentificationStageList interface. + */ +export function instanceOfPaginatedIdentificationStageList( + value: object, +): value is PaginatedIdentificationStageList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedIdentificationStageListFromJSON( + json: any, +): PaginatedIdentificationStageList { + return PaginatedIdentificationStageListFromJSONTyped(json, false); +} + +export function PaginatedIdentificationStageListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedIdentificationStageList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(IdentificationStageFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedIdentificationStageListToJSON( + json: any, +): PaginatedIdentificationStageList { + return PaginatedIdentificationStageListToJSONTyped(json, false); +} + +export function PaginatedIdentificationStageListToJSONTyped( + value?: PaginatedIdentificationStageList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(IdentificationStageToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedInitialPermissionsList.ts b/packages/client-ts/src/models/PaginatedInitialPermissionsList.ts new file mode 100644 index 0000000000..a4b078b846 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedInitialPermissionsList.ts @@ -0,0 +1,95 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { InitialPermissions } from "./InitialPermissions"; +import { InitialPermissionsFromJSON, InitialPermissionsToJSON } from "./InitialPermissions"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedInitialPermissionsList + */ +export interface PaginatedInitialPermissionsList { + /** + * + * @type {Pagination} + * @memberof PaginatedInitialPermissionsList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedInitialPermissionsList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedInitialPermissionsList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedInitialPermissionsList interface. + */ +export function instanceOfPaginatedInitialPermissionsList( + value: object, +): value is PaginatedInitialPermissionsList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedInitialPermissionsListFromJSON( + json: any, +): PaginatedInitialPermissionsList { + return PaginatedInitialPermissionsListFromJSONTyped(json, false); +} + +export function PaginatedInitialPermissionsListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedInitialPermissionsList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(InitialPermissionsFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedInitialPermissionsListToJSON(json: any): PaginatedInitialPermissionsList { + return PaginatedInitialPermissionsListToJSONTyped(json, false); +} + +export function PaginatedInitialPermissionsListToJSONTyped( + value?: PaginatedInitialPermissionsList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(InitialPermissionsToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedInvitationList.ts b/packages/client-ts/src/models/PaginatedInvitationList.ts new file mode 100644 index 0000000000..183e41bc67 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedInvitationList.ts @@ -0,0 +1,91 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Invitation } from "./Invitation"; +import { InvitationFromJSON, InvitationToJSON } from "./Invitation"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedInvitationList + */ +export interface PaginatedInvitationList { + /** + * + * @type {Pagination} + * @memberof PaginatedInvitationList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedInvitationList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedInvitationList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedInvitationList interface. + */ +export function instanceOfPaginatedInvitationList(value: object): value is PaginatedInvitationList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedInvitationListFromJSON(json: any): PaginatedInvitationList { + return PaginatedInvitationListFromJSONTyped(json, false); +} + +export function PaginatedInvitationListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedInvitationList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(InvitationFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedInvitationListToJSON(json: any): PaginatedInvitationList { + return PaginatedInvitationListToJSONTyped(json, false); +} + +export function PaginatedInvitationListToJSONTyped( + value?: PaginatedInvitationList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(InvitationToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedInvitationStageList.ts b/packages/client-ts/src/models/PaginatedInvitationStageList.ts new file mode 100644 index 0000000000..7bb589e858 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedInvitationStageList.ts @@ -0,0 +1,93 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { InvitationStage } from "./InvitationStage"; +import { InvitationStageFromJSON, InvitationStageToJSON } from "./InvitationStage"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedInvitationStageList + */ +export interface PaginatedInvitationStageList { + /** + * + * @type {Pagination} + * @memberof PaginatedInvitationStageList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedInvitationStageList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedInvitationStageList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedInvitationStageList interface. + */ +export function instanceOfPaginatedInvitationStageList( + value: object, +): value is PaginatedInvitationStageList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedInvitationStageListFromJSON(json: any): PaginatedInvitationStageList { + return PaginatedInvitationStageListFromJSONTyped(json, false); +} + +export function PaginatedInvitationStageListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedInvitationStageList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(InvitationStageFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedInvitationStageListToJSON(json: any): PaginatedInvitationStageList { + return PaginatedInvitationStageListToJSONTyped(json, false); +} + +export function PaginatedInvitationStageListToJSONTyped( + value?: PaginatedInvitationStageList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(InvitationStageToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedKerberosSourceList.ts b/packages/client-ts/src/models/PaginatedKerberosSourceList.ts new file mode 100644 index 0000000000..e9a13b73f2 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedKerberosSourceList.ts @@ -0,0 +1,93 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { KerberosSource } from "./KerberosSource"; +import { KerberosSourceFromJSON, KerberosSourceToJSON } from "./KerberosSource"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedKerberosSourceList + */ +export interface PaginatedKerberosSourceList { + /** + * + * @type {Pagination} + * @memberof PaginatedKerberosSourceList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedKerberosSourceList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedKerberosSourceList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedKerberosSourceList interface. + */ +export function instanceOfPaginatedKerberosSourceList( + value: object, +): value is PaginatedKerberosSourceList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedKerberosSourceListFromJSON(json: any): PaginatedKerberosSourceList { + return PaginatedKerberosSourceListFromJSONTyped(json, false); +} + +export function PaginatedKerberosSourceListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedKerberosSourceList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(KerberosSourceFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedKerberosSourceListToJSON(json: any): PaginatedKerberosSourceList { + return PaginatedKerberosSourceListToJSONTyped(json, false); +} + +export function PaginatedKerberosSourceListToJSONTyped( + value?: PaginatedKerberosSourceList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(KerberosSourceToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedKerberosSourcePropertyMappingList.ts b/packages/client-ts/src/models/PaginatedKerberosSourcePropertyMappingList.ts new file mode 100644 index 0000000000..d1792efb23 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedKerberosSourcePropertyMappingList.ts @@ -0,0 +1,100 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { KerberosSourcePropertyMapping } from "./KerberosSourcePropertyMapping"; +import { + KerberosSourcePropertyMappingFromJSON, + KerberosSourcePropertyMappingToJSON, +} from "./KerberosSourcePropertyMapping"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedKerberosSourcePropertyMappingList + */ +export interface PaginatedKerberosSourcePropertyMappingList { + /** + * + * @type {Pagination} + * @memberof PaginatedKerberosSourcePropertyMappingList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedKerberosSourcePropertyMappingList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedKerberosSourcePropertyMappingList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedKerberosSourcePropertyMappingList interface. + */ +export function instanceOfPaginatedKerberosSourcePropertyMappingList( + value: object, +): value is PaginatedKerberosSourcePropertyMappingList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedKerberosSourcePropertyMappingListFromJSON( + json: any, +): PaginatedKerberosSourcePropertyMappingList { + return PaginatedKerberosSourcePropertyMappingListFromJSONTyped(json, false); +} + +export function PaginatedKerberosSourcePropertyMappingListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedKerberosSourcePropertyMappingList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(KerberosSourcePropertyMappingFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedKerberosSourcePropertyMappingListToJSON( + json: any, +): PaginatedKerberosSourcePropertyMappingList { + return PaginatedKerberosSourcePropertyMappingListToJSONTyped(json, false); +} + +export function PaginatedKerberosSourcePropertyMappingListToJSONTyped( + value?: PaginatedKerberosSourcePropertyMappingList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(KerberosSourcePropertyMappingToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedKubernetesServiceConnectionList.ts b/packages/client-ts/src/models/PaginatedKubernetesServiceConnectionList.ts new file mode 100644 index 0000000000..a07dcdf3eb --- /dev/null +++ b/packages/client-ts/src/models/PaginatedKubernetesServiceConnectionList.ts @@ -0,0 +1,100 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { KubernetesServiceConnection } from "./KubernetesServiceConnection"; +import { + KubernetesServiceConnectionFromJSON, + KubernetesServiceConnectionToJSON, +} from "./KubernetesServiceConnection"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedKubernetesServiceConnectionList + */ +export interface PaginatedKubernetesServiceConnectionList { + /** + * + * @type {Pagination} + * @memberof PaginatedKubernetesServiceConnectionList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedKubernetesServiceConnectionList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedKubernetesServiceConnectionList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedKubernetesServiceConnectionList interface. + */ +export function instanceOfPaginatedKubernetesServiceConnectionList( + value: object, +): value is PaginatedKubernetesServiceConnectionList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedKubernetesServiceConnectionListFromJSON( + json: any, +): PaginatedKubernetesServiceConnectionList { + return PaginatedKubernetesServiceConnectionListFromJSONTyped(json, false); +} + +export function PaginatedKubernetesServiceConnectionListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedKubernetesServiceConnectionList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(KubernetesServiceConnectionFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedKubernetesServiceConnectionListToJSON( + json: any, +): PaginatedKubernetesServiceConnectionList { + return PaginatedKubernetesServiceConnectionListToJSONTyped(json, false); +} + +export function PaginatedKubernetesServiceConnectionListToJSONTyped( + value?: PaginatedKubernetesServiceConnectionList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(KubernetesServiceConnectionToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedLDAPOutpostConfigList.ts b/packages/client-ts/src/models/PaginatedLDAPOutpostConfigList.ts new file mode 100644 index 0000000000..eb038d077b --- /dev/null +++ b/packages/client-ts/src/models/PaginatedLDAPOutpostConfigList.ts @@ -0,0 +1,93 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { LDAPOutpostConfig } from "./LDAPOutpostConfig"; +import { LDAPOutpostConfigFromJSON, LDAPOutpostConfigToJSON } from "./LDAPOutpostConfig"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedLDAPOutpostConfigList + */ +export interface PaginatedLDAPOutpostConfigList { + /** + * + * @type {Pagination} + * @memberof PaginatedLDAPOutpostConfigList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedLDAPOutpostConfigList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedLDAPOutpostConfigList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedLDAPOutpostConfigList interface. + */ +export function instanceOfPaginatedLDAPOutpostConfigList( + value: object, +): value is PaginatedLDAPOutpostConfigList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedLDAPOutpostConfigListFromJSON(json: any): PaginatedLDAPOutpostConfigList { + return PaginatedLDAPOutpostConfigListFromJSONTyped(json, false); +} + +export function PaginatedLDAPOutpostConfigListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedLDAPOutpostConfigList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(LDAPOutpostConfigFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedLDAPOutpostConfigListToJSON(json: any): PaginatedLDAPOutpostConfigList { + return PaginatedLDAPOutpostConfigListToJSONTyped(json, false); +} + +export function PaginatedLDAPOutpostConfigListToJSONTyped( + value?: PaginatedLDAPOutpostConfigList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(LDAPOutpostConfigToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedLDAPProviderList.ts b/packages/client-ts/src/models/PaginatedLDAPProviderList.ts new file mode 100644 index 0000000000..f96b341aae --- /dev/null +++ b/packages/client-ts/src/models/PaginatedLDAPProviderList.ts @@ -0,0 +1,93 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { LDAPProvider } from "./LDAPProvider"; +import { LDAPProviderFromJSON, LDAPProviderToJSON } from "./LDAPProvider"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedLDAPProviderList + */ +export interface PaginatedLDAPProviderList { + /** + * + * @type {Pagination} + * @memberof PaginatedLDAPProviderList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedLDAPProviderList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedLDAPProviderList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedLDAPProviderList interface. + */ +export function instanceOfPaginatedLDAPProviderList( + value: object, +): value is PaginatedLDAPProviderList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedLDAPProviderListFromJSON(json: any): PaginatedLDAPProviderList { + return PaginatedLDAPProviderListFromJSONTyped(json, false); +} + +export function PaginatedLDAPProviderListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedLDAPProviderList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(LDAPProviderFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedLDAPProviderListToJSON(json: any): PaginatedLDAPProviderList { + return PaginatedLDAPProviderListToJSONTyped(json, false); +} + +export function PaginatedLDAPProviderListToJSONTyped( + value?: PaginatedLDAPProviderList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(LDAPProviderToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedLDAPSourceList.ts b/packages/client-ts/src/models/PaginatedLDAPSourceList.ts new file mode 100644 index 0000000000..8c41dd1d06 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedLDAPSourceList.ts @@ -0,0 +1,91 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { LDAPSource } from "./LDAPSource"; +import { LDAPSourceFromJSON, LDAPSourceToJSON } from "./LDAPSource"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedLDAPSourceList + */ +export interface PaginatedLDAPSourceList { + /** + * + * @type {Pagination} + * @memberof PaginatedLDAPSourceList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedLDAPSourceList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedLDAPSourceList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedLDAPSourceList interface. + */ +export function instanceOfPaginatedLDAPSourceList(value: object): value is PaginatedLDAPSourceList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedLDAPSourceListFromJSON(json: any): PaginatedLDAPSourceList { + return PaginatedLDAPSourceListFromJSONTyped(json, false); +} + +export function PaginatedLDAPSourceListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedLDAPSourceList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(LDAPSourceFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedLDAPSourceListToJSON(json: any): PaginatedLDAPSourceList { + return PaginatedLDAPSourceListToJSONTyped(json, false); +} + +export function PaginatedLDAPSourceListToJSONTyped( + value?: PaginatedLDAPSourceList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(LDAPSourceToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedLDAPSourcePropertyMappingList.ts b/packages/client-ts/src/models/PaginatedLDAPSourcePropertyMappingList.ts new file mode 100644 index 0000000000..45a76b552e --- /dev/null +++ b/packages/client-ts/src/models/PaginatedLDAPSourcePropertyMappingList.ts @@ -0,0 +1,100 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { LDAPSourcePropertyMapping } from "./LDAPSourcePropertyMapping"; +import { + LDAPSourcePropertyMappingFromJSON, + LDAPSourcePropertyMappingToJSON, +} from "./LDAPSourcePropertyMapping"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedLDAPSourcePropertyMappingList + */ +export interface PaginatedLDAPSourcePropertyMappingList { + /** + * + * @type {Pagination} + * @memberof PaginatedLDAPSourcePropertyMappingList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedLDAPSourcePropertyMappingList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedLDAPSourcePropertyMappingList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedLDAPSourcePropertyMappingList interface. + */ +export function instanceOfPaginatedLDAPSourcePropertyMappingList( + value: object, +): value is PaginatedLDAPSourcePropertyMappingList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedLDAPSourcePropertyMappingListFromJSON( + json: any, +): PaginatedLDAPSourcePropertyMappingList { + return PaginatedLDAPSourcePropertyMappingListFromJSONTyped(json, false); +} + +export function PaginatedLDAPSourcePropertyMappingListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedLDAPSourcePropertyMappingList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(LDAPSourcePropertyMappingFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedLDAPSourcePropertyMappingListToJSON( + json: any, +): PaginatedLDAPSourcePropertyMappingList { + return PaginatedLDAPSourcePropertyMappingListToJSONTyped(json, false); +} + +export function PaginatedLDAPSourcePropertyMappingListToJSONTyped( + value?: PaginatedLDAPSourcePropertyMappingList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(LDAPSourcePropertyMappingToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedLicenseList.ts b/packages/client-ts/src/models/PaginatedLicenseList.ts new file mode 100644 index 0000000000..08c938b10b --- /dev/null +++ b/packages/client-ts/src/models/PaginatedLicenseList.ts @@ -0,0 +1,91 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { License } from "./License"; +import { LicenseFromJSON, LicenseToJSON } from "./License"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedLicenseList + */ +export interface PaginatedLicenseList { + /** + * + * @type {Pagination} + * @memberof PaginatedLicenseList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedLicenseList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedLicenseList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedLicenseList interface. + */ +export function instanceOfPaginatedLicenseList(value: object): value is PaginatedLicenseList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedLicenseListFromJSON(json: any): PaginatedLicenseList { + return PaginatedLicenseListFromJSONTyped(json, false); +} + +export function PaginatedLicenseListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedLicenseList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(LicenseFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedLicenseListToJSON(json: any): PaginatedLicenseList { + return PaginatedLicenseListToJSONTyped(json, false); +} + +export function PaginatedLicenseListToJSONTyped( + value?: PaginatedLicenseList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(LicenseToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedLifecycleIterationList.ts b/packages/client-ts/src/models/PaginatedLifecycleIterationList.ts new file mode 100644 index 0000000000..24da4410ad --- /dev/null +++ b/packages/client-ts/src/models/PaginatedLifecycleIterationList.ts @@ -0,0 +1,95 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { LifecycleIteration } from "./LifecycleIteration"; +import { LifecycleIterationFromJSON, LifecycleIterationToJSON } from "./LifecycleIteration"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedLifecycleIterationList + */ +export interface PaginatedLifecycleIterationList { + /** + * + * @type {Pagination} + * @memberof PaginatedLifecycleIterationList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedLifecycleIterationList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedLifecycleIterationList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedLifecycleIterationList interface. + */ +export function instanceOfPaginatedLifecycleIterationList( + value: object, +): value is PaginatedLifecycleIterationList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedLifecycleIterationListFromJSON( + json: any, +): PaginatedLifecycleIterationList { + return PaginatedLifecycleIterationListFromJSONTyped(json, false); +} + +export function PaginatedLifecycleIterationListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedLifecycleIterationList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(LifecycleIterationFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedLifecycleIterationListToJSON(json: any): PaginatedLifecycleIterationList { + return PaginatedLifecycleIterationListToJSONTyped(json, false); +} + +export function PaginatedLifecycleIterationListToJSONTyped( + value?: PaginatedLifecycleIterationList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(LifecycleIterationToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedLifecycleRuleList.ts b/packages/client-ts/src/models/PaginatedLifecycleRuleList.ts new file mode 100644 index 0000000000..7449491120 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedLifecycleRuleList.ts @@ -0,0 +1,93 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { LifecycleRule } from "./LifecycleRule"; +import { LifecycleRuleFromJSON, LifecycleRuleToJSON } from "./LifecycleRule"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedLifecycleRuleList + */ +export interface PaginatedLifecycleRuleList { + /** + * + * @type {Pagination} + * @memberof PaginatedLifecycleRuleList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedLifecycleRuleList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedLifecycleRuleList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedLifecycleRuleList interface. + */ +export function instanceOfPaginatedLifecycleRuleList( + value: object, +): value is PaginatedLifecycleRuleList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedLifecycleRuleListFromJSON(json: any): PaginatedLifecycleRuleList { + return PaginatedLifecycleRuleListFromJSONTyped(json, false); +} + +export function PaginatedLifecycleRuleListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedLifecycleRuleList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(LifecycleRuleFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedLifecycleRuleListToJSON(json: any): PaginatedLifecycleRuleList { + return PaginatedLifecycleRuleListToJSONTyped(json, false); +} + +export function PaginatedLifecycleRuleListToJSONTyped( + value?: PaginatedLifecycleRuleList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(LifecycleRuleToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedMicrosoftEntraProviderGroupList.ts b/packages/client-ts/src/models/PaginatedMicrosoftEntraProviderGroupList.ts new file mode 100644 index 0000000000..5e447c2134 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedMicrosoftEntraProviderGroupList.ts @@ -0,0 +1,100 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { MicrosoftEntraProviderGroup } from "./MicrosoftEntraProviderGroup"; +import { + MicrosoftEntraProviderGroupFromJSON, + MicrosoftEntraProviderGroupToJSON, +} from "./MicrosoftEntraProviderGroup"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedMicrosoftEntraProviderGroupList + */ +export interface PaginatedMicrosoftEntraProviderGroupList { + /** + * + * @type {Pagination} + * @memberof PaginatedMicrosoftEntraProviderGroupList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedMicrosoftEntraProviderGroupList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedMicrosoftEntraProviderGroupList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedMicrosoftEntraProviderGroupList interface. + */ +export function instanceOfPaginatedMicrosoftEntraProviderGroupList( + value: object, +): value is PaginatedMicrosoftEntraProviderGroupList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedMicrosoftEntraProviderGroupListFromJSON( + json: any, +): PaginatedMicrosoftEntraProviderGroupList { + return PaginatedMicrosoftEntraProviderGroupListFromJSONTyped(json, false); +} + +export function PaginatedMicrosoftEntraProviderGroupListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedMicrosoftEntraProviderGroupList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(MicrosoftEntraProviderGroupFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedMicrosoftEntraProviderGroupListToJSON( + json: any, +): PaginatedMicrosoftEntraProviderGroupList { + return PaginatedMicrosoftEntraProviderGroupListToJSONTyped(json, false); +} + +export function PaginatedMicrosoftEntraProviderGroupListToJSONTyped( + value?: PaginatedMicrosoftEntraProviderGroupList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(MicrosoftEntraProviderGroupToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedMicrosoftEntraProviderList.ts b/packages/client-ts/src/models/PaginatedMicrosoftEntraProviderList.ts new file mode 100644 index 0000000000..6884a06707 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedMicrosoftEntraProviderList.ts @@ -0,0 +1,100 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { MicrosoftEntraProvider } from "./MicrosoftEntraProvider"; +import { + MicrosoftEntraProviderFromJSON, + MicrosoftEntraProviderToJSON, +} from "./MicrosoftEntraProvider"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedMicrosoftEntraProviderList + */ +export interface PaginatedMicrosoftEntraProviderList { + /** + * + * @type {Pagination} + * @memberof PaginatedMicrosoftEntraProviderList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedMicrosoftEntraProviderList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedMicrosoftEntraProviderList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedMicrosoftEntraProviderList interface. + */ +export function instanceOfPaginatedMicrosoftEntraProviderList( + value: object, +): value is PaginatedMicrosoftEntraProviderList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedMicrosoftEntraProviderListFromJSON( + json: any, +): PaginatedMicrosoftEntraProviderList { + return PaginatedMicrosoftEntraProviderListFromJSONTyped(json, false); +} + +export function PaginatedMicrosoftEntraProviderListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedMicrosoftEntraProviderList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(MicrosoftEntraProviderFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedMicrosoftEntraProviderListToJSON( + json: any, +): PaginatedMicrosoftEntraProviderList { + return PaginatedMicrosoftEntraProviderListToJSONTyped(json, false); +} + +export function PaginatedMicrosoftEntraProviderListToJSONTyped( + value?: PaginatedMicrosoftEntraProviderList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(MicrosoftEntraProviderToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedMicrosoftEntraProviderMappingList.ts b/packages/client-ts/src/models/PaginatedMicrosoftEntraProviderMappingList.ts new file mode 100644 index 0000000000..00fac82eb1 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedMicrosoftEntraProviderMappingList.ts @@ -0,0 +1,100 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { MicrosoftEntraProviderMapping } from "./MicrosoftEntraProviderMapping"; +import { + MicrosoftEntraProviderMappingFromJSON, + MicrosoftEntraProviderMappingToJSON, +} from "./MicrosoftEntraProviderMapping"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedMicrosoftEntraProviderMappingList + */ +export interface PaginatedMicrosoftEntraProviderMappingList { + /** + * + * @type {Pagination} + * @memberof PaginatedMicrosoftEntraProviderMappingList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedMicrosoftEntraProviderMappingList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedMicrosoftEntraProviderMappingList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedMicrosoftEntraProviderMappingList interface. + */ +export function instanceOfPaginatedMicrosoftEntraProviderMappingList( + value: object, +): value is PaginatedMicrosoftEntraProviderMappingList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedMicrosoftEntraProviderMappingListFromJSON( + json: any, +): PaginatedMicrosoftEntraProviderMappingList { + return PaginatedMicrosoftEntraProviderMappingListFromJSONTyped(json, false); +} + +export function PaginatedMicrosoftEntraProviderMappingListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedMicrosoftEntraProviderMappingList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(MicrosoftEntraProviderMappingFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedMicrosoftEntraProviderMappingListToJSON( + json: any, +): PaginatedMicrosoftEntraProviderMappingList { + return PaginatedMicrosoftEntraProviderMappingListToJSONTyped(json, false); +} + +export function PaginatedMicrosoftEntraProviderMappingListToJSONTyped( + value?: PaginatedMicrosoftEntraProviderMappingList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(MicrosoftEntraProviderMappingToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedMicrosoftEntraProviderUserList.ts b/packages/client-ts/src/models/PaginatedMicrosoftEntraProviderUserList.ts new file mode 100644 index 0000000000..9d9a353fef --- /dev/null +++ b/packages/client-ts/src/models/PaginatedMicrosoftEntraProviderUserList.ts @@ -0,0 +1,100 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { MicrosoftEntraProviderUser } from "./MicrosoftEntraProviderUser"; +import { + MicrosoftEntraProviderUserFromJSON, + MicrosoftEntraProviderUserToJSON, +} from "./MicrosoftEntraProviderUser"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedMicrosoftEntraProviderUserList + */ +export interface PaginatedMicrosoftEntraProviderUserList { + /** + * + * @type {Pagination} + * @memberof PaginatedMicrosoftEntraProviderUserList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedMicrosoftEntraProviderUserList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedMicrosoftEntraProviderUserList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedMicrosoftEntraProviderUserList interface. + */ +export function instanceOfPaginatedMicrosoftEntraProviderUserList( + value: object, +): value is PaginatedMicrosoftEntraProviderUserList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedMicrosoftEntraProviderUserListFromJSON( + json: any, +): PaginatedMicrosoftEntraProviderUserList { + return PaginatedMicrosoftEntraProviderUserListFromJSONTyped(json, false); +} + +export function PaginatedMicrosoftEntraProviderUserListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedMicrosoftEntraProviderUserList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(MicrosoftEntraProviderUserFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedMicrosoftEntraProviderUserListToJSON( + json: any, +): PaginatedMicrosoftEntraProviderUserList { + return PaginatedMicrosoftEntraProviderUserListToJSONTyped(json, false); +} + +export function PaginatedMicrosoftEntraProviderUserListToJSONTyped( + value?: PaginatedMicrosoftEntraProviderUserList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(MicrosoftEntraProviderUserToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedMutualTLSStageList.ts b/packages/client-ts/src/models/PaginatedMutualTLSStageList.ts new file mode 100644 index 0000000000..32c2cf28d1 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedMutualTLSStageList.ts @@ -0,0 +1,93 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { MutualTLSStage } from "./MutualTLSStage"; +import { MutualTLSStageFromJSON, MutualTLSStageToJSON } from "./MutualTLSStage"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedMutualTLSStageList + */ +export interface PaginatedMutualTLSStageList { + /** + * + * @type {Pagination} + * @memberof PaginatedMutualTLSStageList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedMutualTLSStageList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedMutualTLSStageList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedMutualTLSStageList interface. + */ +export function instanceOfPaginatedMutualTLSStageList( + value: object, +): value is PaginatedMutualTLSStageList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedMutualTLSStageListFromJSON(json: any): PaginatedMutualTLSStageList { + return PaginatedMutualTLSStageListFromJSONTyped(json, false); +} + +export function PaginatedMutualTLSStageListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedMutualTLSStageList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(MutualTLSStageFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedMutualTLSStageListToJSON(json: any): PaginatedMutualTLSStageList { + return PaginatedMutualTLSStageListToJSONTyped(json, false); +} + +export function PaginatedMutualTLSStageListToJSONTyped( + value?: PaginatedMutualTLSStageList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(MutualTLSStageToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedNotificationList.ts b/packages/client-ts/src/models/PaginatedNotificationList.ts new file mode 100644 index 0000000000..ddeac2e45f --- /dev/null +++ b/packages/client-ts/src/models/PaginatedNotificationList.ts @@ -0,0 +1,93 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Notification } from "./Notification"; +import { NotificationFromJSON, NotificationToJSON } from "./Notification"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedNotificationList + */ +export interface PaginatedNotificationList { + /** + * + * @type {Pagination} + * @memberof PaginatedNotificationList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedNotificationList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedNotificationList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedNotificationList interface. + */ +export function instanceOfPaginatedNotificationList( + value: object, +): value is PaginatedNotificationList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedNotificationListFromJSON(json: any): PaginatedNotificationList { + return PaginatedNotificationListFromJSONTyped(json, false); +} + +export function PaginatedNotificationListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedNotificationList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(NotificationFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedNotificationListToJSON(json: any): PaginatedNotificationList { + return PaginatedNotificationListToJSONTyped(json, false); +} + +export function PaginatedNotificationListToJSONTyped( + value?: PaginatedNotificationList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(NotificationToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedNotificationRuleList.ts b/packages/client-ts/src/models/PaginatedNotificationRuleList.ts new file mode 100644 index 0000000000..f0c84703ad --- /dev/null +++ b/packages/client-ts/src/models/PaginatedNotificationRuleList.ts @@ -0,0 +1,93 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { NotificationRule } from "./NotificationRule"; +import { NotificationRuleFromJSON, NotificationRuleToJSON } from "./NotificationRule"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedNotificationRuleList + */ +export interface PaginatedNotificationRuleList { + /** + * + * @type {Pagination} + * @memberof PaginatedNotificationRuleList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedNotificationRuleList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedNotificationRuleList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedNotificationRuleList interface. + */ +export function instanceOfPaginatedNotificationRuleList( + value: object, +): value is PaginatedNotificationRuleList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedNotificationRuleListFromJSON(json: any): PaginatedNotificationRuleList { + return PaginatedNotificationRuleListFromJSONTyped(json, false); +} + +export function PaginatedNotificationRuleListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedNotificationRuleList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(NotificationRuleFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedNotificationRuleListToJSON(json: any): PaginatedNotificationRuleList { + return PaginatedNotificationRuleListToJSONTyped(json, false); +} + +export function PaginatedNotificationRuleListToJSONTyped( + value?: PaginatedNotificationRuleList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(NotificationRuleToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedNotificationTransportList.ts b/packages/client-ts/src/models/PaginatedNotificationTransportList.ts new file mode 100644 index 0000000000..7f7e8d2806 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedNotificationTransportList.ts @@ -0,0 +1,100 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { NotificationTransport } from "./NotificationTransport"; +import { + NotificationTransportFromJSON, + NotificationTransportToJSON, +} from "./NotificationTransport"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedNotificationTransportList + */ +export interface PaginatedNotificationTransportList { + /** + * + * @type {Pagination} + * @memberof PaginatedNotificationTransportList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedNotificationTransportList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedNotificationTransportList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedNotificationTransportList interface. + */ +export function instanceOfPaginatedNotificationTransportList( + value: object, +): value is PaginatedNotificationTransportList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedNotificationTransportListFromJSON( + json: any, +): PaginatedNotificationTransportList { + return PaginatedNotificationTransportListFromJSONTyped(json, false); +} + +export function PaginatedNotificationTransportListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedNotificationTransportList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(NotificationTransportFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedNotificationTransportListToJSON( + json: any, +): PaginatedNotificationTransportList { + return PaginatedNotificationTransportListToJSONTyped(json, false); +} + +export function PaginatedNotificationTransportListToJSONTyped( + value?: PaginatedNotificationTransportList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(NotificationTransportToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedNotificationWebhookMappingList.ts b/packages/client-ts/src/models/PaginatedNotificationWebhookMappingList.ts new file mode 100644 index 0000000000..7b24ae4881 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedNotificationWebhookMappingList.ts @@ -0,0 +1,100 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { NotificationWebhookMapping } from "./NotificationWebhookMapping"; +import { + NotificationWebhookMappingFromJSON, + NotificationWebhookMappingToJSON, +} from "./NotificationWebhookMapping"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedNotificationWebhookMappingList + */ +export interface PaginatedNotificationWebhookMappingList { + /** + * + * @type {Pagination} + * @memberof PaginatedNotificationWebhookMappingList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedNotificationWebhookMappingList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedNotificationWebhookMappingList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedNotificationWebhookMappingList interface. + */ +export function instanceOfPaginatedNotificationWebhookMappingList( + value: object, +): value is PaginatedNotificationWebhookMappingList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedNotificationWebhookMappingListFromJSON( + json: any, +): PaginatedNotificationWebhookMappingList { + return PaginatedNotificationWebhookMappingListFromJSONTyped(json, false); +} + +export function PaginatedNotificationWebhookMappingListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedNotificationWebhookMappingList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(NotificationWebhookMappingFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedNotificationWebhookMappingListToJSON( + json: any, +): PaginatedNotificationWebhookMappingList { + return PaginatedNotificationWebhookMappingListToJSONTyped(json, false); +} + +export function PaginatedNotificationWebhookMappingListToJSONTyped( + value?: PaginatedNotificationWebhookMappingList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(NotificationWebhookMappingToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedOAuth2ProviderList.ts b/packages/client-ts/src/models/PaginatedOAuth2ProviderList.ts new file mode 100644 index 0000000000..18a3862719 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedOAuth2ProviderList.ts @@ -0,0 +1,93 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { OAuth2Provider } from "./OAuth2Provider"; +import { OAuth2ProviderFromJSON, OAuth2ProviderToJSON } from "./OAuth2Provider"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedOAuth2ProviderList + */ +export interface PaginatedOAuth2ProviderList { + /** + * + * @type {Pagination} + * @memberof PaginatedOAuth2ProviderList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedOAuth2ProviderList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedOAuth2ProviderList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedOAuth2ProviderList interface. + */ +export function instanceOfPaginatedOAuth2ProviderList( + value: object, +): value is PaginatedOAuth2ProviderList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedOAuth2ProviderListFromJSON(json: any): PaginatedOAuth2ProviderList { + return PaginatedOAuth2ProviderListFromJSONTyped(json, false); +} + +export function PaginatedOAuth2ProviderListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedOAuth2ProviderList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(OAuth2ProviderFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedOAuth2ProviderListToJSON(json: any): PaginatedOAuth2ProviderList { + return PaginatedOAuth2ProviderListToJSONTyped(json, false); +} + +export function PaginatedOAuth2ProviderListToJSONTyped( + value?: PaginatedOAuth2ProviderList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(OAuth2ProviderToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedOAuthSourceList.ts b/packages/client-ts/src/models/PaginatedOAuthSourceList.ts new file mode 100644 index 0000000000..93bef323f6 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedOAuthSourceList.ts @@ -0,0 +1,93 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { OAuthSource } from "./OAuthSource"; +import { OAuthSourceFromJSON, OAuthSourceToJSON } from "./OAuthSource"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedOAuthSourceList + */ +export interface PaginatedOAuthSourceList { + /** + * + * @type {Pagination} + * @memberof PaginatedOAuthSourceList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedOAuthSourceList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedOAuthSourceList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedOAuthSourceList interface. + */ +export function instanceOfPaginatedOAuthSourceList( + value: object, +): value is PaginatedOAuthSourceList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedOAuthSourceListFromJSON(json: any): PaginatedOAuthSourceList { + return PaginatedOAuthSourceListFromJSONTyped(json, false); +} + +export function PaginatedOAuthSourceListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedOAuthSourceList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(OAuthSourceFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedOAuthSourceListToJSON(json: any): PaginatedOAuthSourceList { + return PaginatedOAuthSourceListToJSONTyped(json, false); +} + +export function PaginatedOAuthSourceListToJSONTyped( + value?: PaginatedOAuthSourceList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(OAuthSourceToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedOAuthSourcePropertyMappingList.ts b/packages/client-ts/src/models/PaginatedOAuthSourcePropertyMappingList.ts new file mode 100644 index 0000000000..dc8bd87bab --- /dev/null +++ b/packages/client-ts/src/models/PaginatedOAuthSourcePropertyMappingList.ts @@ -0,0 +1,100 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { OAuthSourcePropertyMapping } from "./OAuthSourcePropertyMapping"; +import { + OAuthSourcePropertyMappingFromJSON, + OAuthSourcePropertyMappingToJSON, +} from "./OAuthSourcePropertyMapping"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedOAuthSourcePropertyMappingList + */ +export interface PaginatedOAuthSourcePropertyMappingList { + /** + * + * @type {Pagination} + * @memberof PaginatedOAuthSourcePropertyMappingList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedOAuthSourcePropertyMappingList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedOAuthSourcePropertyMappingList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedOAuthSourcePropertyMappingList interface. + */ +export function instanceOfPaginatedOAuthSourcePropertyMappingList( + value: object, +): value is PaginatedOAuthSourcePropertyMappingList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedOAuthSourcePropertyMappingListFromJSON( + json: any, +): PaginatedOAuthSourcePropertyMappingList { + return PaginatedOAuthSourcePropertyMappingListFromJSONTyped(json, false); +} + +export function PaginatedOAuthSourcePropertyMappingListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedOAuthSourcePropertyMappingList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(OAuthSourcePropertyMappingFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedOAuthSourcePropertyMappingListToJSON( + json: any, +): PaginatedOAuthSourcePropertyMappingList { + return PaginatedOAuthSourcePropertyMappingListToJSONTyped(json, false); +} + +export function PaginatedOAuthSourcePropertyMappingListToJSONTyped( + value?: PaginatedOAuthSourcePropertyMappingList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(OAuthSourcePropertyMappingToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedOutpostList.ts b/packages/client-ts/src/models/PaginatedOutpostList.ts new file mode 100644 index 0000000000..d6f049a631 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedOutpostList.ts @@ -0,0 +1,91 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Outpost } from "./Outpost"; +import { OutpostFromJSON, OutpostToJSON } from "./Outpost"; +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; + +/** + * + * @export + * @interface PaginatedOutpostList + */ +export interface PaginatedOutpostList { + /** + * + * @type {Pagination} + * @memberof PaginatedOutpostList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedOutpostList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedOutpostList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedOutpostList interface. + */ +export function instanceOfPaginatedOutpostList(value: object): value is PaginatedOutpostList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedOutpostListFromJSON(json: any): PaginatedOutpostList { + return PaginatedOutpostListFromJSONTyped(json, false); +} + +export function PaginatedOutpostListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedOutpostList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(OutpostFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedOutpostListToJSON(json: any): PaginatedOutpostList { + return PaginatedOutpostListToJSONTyped(json, false); +} + +export function PaginatedOutpostListToJSONTyped( + value?: PaginatedOutpostList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(OutpostToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedPasswordExpiryPolicyList.ts b/packages/client-ts/src/models/PaginatedPasswordExpiryPolicyList.ts new file mode 100644 index 0000000000..1afdd71e05 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedPasswordExpiryPolicyList.ts @@ -0,0 +1,97 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; +import type { PasswordExpiryPolicy } from "./PasswordExpiryPolicy"; +import { PasswordExpiryPolicyFromJSON, PasswordExpiryPolicyToJSON } from "./PasswordExpiryPolicy"; + +/** + * + * @export + * @interface PaginatedPasswordExpiryPolicyList + */ +export interface PaginatedPasswordExpiryPolicyList { + /** + * + * @type {Pagination} + * @memberof PaginatedPasswordExpiryPolicyList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedPasswordExpiryPolicyList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedPasswordExpiryPolicyList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedPasswordExpiryPolicyList interface. + */ +export function instanceOfPaginatedPasswordExpiryPolicyList( + value: object, +): value is PaginatedPasswordExpiryPolicyList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedPasswordExpiryPolicyListFromJSON( + json: any, +): PaginatedPasswordExpiryPolicyList { + return PaginatedPasswordExpiryPolicyListFromJSONTyped(json, false); +} + +export function PaginatedPasswordExpiryPolicyListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedPasswordExpiryPolicyList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(PasswordExpiryPolicyFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedPasswordExpiryPolicyListToJSON( + json: any, +): PaginatedPasswordExpiryPolicyList { + return PaginatedPasswordExpiryPolicyListToJSONTyped(json, false); +} + +export function PaginatedPasswordExpiryPolicyListToJSONTyped( + value?: PaginatedPasswordExpiryPolicyList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(PasswordExpiryPolicyToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedPasswordPolicyList.ts b/packages/client-ts/src/models/PaginatedPasswordPolicyList.ts new file mode 100644 index 0000000000..f15fcee2fc --- /dev/null +++ b/packages/client-ts/src/models/PaginatedPasswordPolicyList.ts @@ -0,0 +1,93 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; +import type { PasswordPolicy } from "./PasswordPolicy"; +import { PasswordPolicyFromJSON, PasswordPolicyToJSON } from "./PasswordPolicy"; + +/** + * + * @export + * @interface PaginatedPasswordPolicyList + */ +export interface PaginatedPasswordPolicyList { + /** + * + * @type {Pagination} + * @memberof PaginatedPasswordPolicyList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedPasswordPolicyList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedPasswordPolicyList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedPasswordPolicyList interface. + */ +export function instanceOfPaginatedPasswordPolicyList( + value: object, +): value is PaginatedPasswordPolicyList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedPasswordPolicyListFromJSON(json: any): PaginatedPasswordPolicyList { + return PaginatedPasswordPolicyListFromJSONTyped(json, false); +} + +export function PaginatedPasswordPolicyListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedPasswordPolicyList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(PasswordPolicyFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedPasswordPolicyListToJSON(json: any): PaginatedPasswordPolicyList { + return PaginatedPasswordPolicyListToJSONTyped(json, false); +} + +export function PaginatedPasswordPolicyListToJSONTyped( + value?: PaginatedPasswordPolicyList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(PasswordPolicyToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedPasswordStageList.ts b/packages/client-ts/src/models/PaginatedPasswordStageList.ts new file mode 100644 index 0000000000..14cea1e9dc --- /dev/null +++ b/packages/client-ts/src/models/PaginatedPasswordStageList.ts @@ -0,0 +1,93 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; +import type { PasswordStage } from "./PasswordStage"; +import { PasswordStageFromJSON, PasswordStageToJSON } from "./PasswordStage"; + +/** + * + * @export + * @interface PaginatedPasswordStageList + */ +export interface PaginatedPasswordStageList { + /** + * + * @type {Pagination} + * @memberof PaginatedPasswordStageList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedPasswordStageList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedPasswordStageList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedPasswordStageList interface. + */ +export function instanceOfPaginatedPasswordStageList( + value: object, +): value is PaginatedPasswordStageList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedPasswordStageListFromJSON(json: any): PaginatedPasswordStageList { + return PaginatedPasswordStageListFromJSONTyped(json, false); +} + +export function PaginatedPasswordStageListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedPasswordStageList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(PasswordStageFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedPasswordStageListToJSON(json: any): PaginatedPasswordStageList { + return PaginatedPasswordStageListToJSONTyped(json, false); +} + +export function PaginatedPasswordStageListToJSONTyped( + value?: PaginatedPasswordStageList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(PasswordStageToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedPermissionList.ts b/packages/client-ts/src/models/PaginatedPermissionList.ts new file mode 100644 index 0000000000..0e780e63ad --- /dev/null +++ b/packages/client-ts/src/models/PaginatedPermissionList.ts @@ -0,0 +1,91 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; +import type { Permission } from "./Permission"; +import { PermissionFromJSON, PermissionToJSON } from "./Permission"; + +/** + * + * @export + * @interface PaginatedPermissionList + */ +export interface PaginatedPermissionList { + /** + * + * @type {Pagination} + * @memberof PaginatedPermissionList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedPermissionList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedPermissionList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedPermissionList interface. + */ +export function instanceOfPaginatedPermissionList(value: object): value is PaginatedPermissionList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedPermissionListFromJSON(json: any): PaginatedPermissionList { + return PaginatedPermissionListFromJSONTyped(json, false); +} + +export function PaginatedPermissionListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedPermissionList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(PermissionFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedPermissionListToJSON(json: any): PaginatedPermissionList { + return PaginatedPermissionListToJSONTyped(json, false); +} + +export function PaginatedPermissionListToJSONTyped( + value?: PaginatedPermissionList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(PermissionToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedPlexSourceList.ts b/packages/client-ts/src/models/PaginatedPlexSourceList.ts new file mode 100644 index 0000000000..d7c4d147c6 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedPlexSourceList.ts @@ -0,0 +1,91 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; +import type { PlexSource } from "./PlexSource"; +import { PlexSourceFromJSON, PlexSourceToJSON } from "./PlexSource"; + +/** + * + * @export + * @interface PaginatedPlexSourceList + */ +export interface PaginatedPlexSourceList { + /** + * + * @type {Pagination} + * @memberof PaginatedPlexSourceList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedPlexSourceList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedPlexSourceList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedPlexSourceList interface. + */ +export function instanceOfPaginatedPlexSourceList(value: object): value is PaginatedPlexSourceList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedPlexSourceListFromJSON(json: any): PaginatedPlexSourceList { + return PaginatedPlexSourceListFromJSONTyped(json, false); +} + +export function PaginatedPlexSourceListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedPlexSourceList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(PlexSourceFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedPlexSourceListToJSON(json: any): PaginatedPlexSourceList { + return PaginatedPlexSourceListToJSONTyped(json, false); +} + +export function PaginatedPlexSourceListToJSONTyped( + value?: PaginatedPlexSourceList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(PlexSourceToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedPlexSourcePropertyMappingList.ts b/packages/client-ts/src/models/PaginatedPlexSourcePropertyMappingList.ts new file mode 100644 index 0000000000..3a6d10c1ad --- /dev/null +++ b/packages/client-ts/src/models/PaginatedPlexSourcePropertyMappingList.ts @@ -0,0 +1,100 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; +import type { PlexSourcePropertyMapping } from "./PlexSourcePropertyMapping"; +import { + PlexSourcePropertyMappingFromJSON, + PlexSourcePropertyMappingToJSON, +} from "./PlexSourcePropertyMapping"; + +/** + * + * @export + * @interface PaginatedPlexSourcePropertyMappingList + */ +export interface PaginatedPlexSourcePropertyMappingList { + /** + * + * @type {Pagination} + * @memberof PaginatedPlexSourcePropertyMappingList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedPlexSourcePropertyMappingList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedPlexSourcePropertyMappingList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedPlexSourcePropertyMappingList interface. + */ +export function instanceOfPaginatedPlexSourcePropertyMappingList( + value: object, +): value is PaginatedPlexSourcePropertyMappingList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedPlexSourcePropertyMappingListFromJSON( + json: any, +): PaginatedPlexSourcePropertyMappingList { + return PaginatedPlexSourcePropertyMappingListFromJSONTyped(json, false); +} + +export function PaginatedPlexSourcePropertyMappingListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedPlexSourcePropertyMappingList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(PlexSourcePropertyMappingFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedPlexSourcePropertyMappingListToJSON( + json: any, +): PaginatedPlexSourcePropertyMappingList { + return PaginatedPlexSourcePropertyMappingListToJSONTyped(json, false); +} + +export function PaginatedPlexSourcePropertyMappingListToJSONTyped( + value?: PaginatedPlexSourcePropertyMappingList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(PlexSourcePropertyMappingToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedPolicyBindingList.ts b/packages/client-ts/src/models/PaginatedPolicyBindingList.ts new file mode 100644 index 0000000000..cf60ffcce7 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedPolicyBindingList.ts @@ -0,0 +1,93 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; +import type { PolicyBinding } from "./PolicyBinding"; +import { PolicyBindingFromJSON, PolicyBindingToJSON } from "./PolicyBinding"; + +/** + * + * @export + * @interface PaginatedPolicyBindingList + */ +export interface PaginatedPolicyBindingList { + /** + * + * @type {Pagination} + * @memberof PaginatedPolicyBindingList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedPolicyBindingList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedPolicyBindingList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedPolicyBindingList interface. + */ +export function instanceOfPaginatedPolicyBindingList( + value: object, +): value is PaginatedPolicyBindingList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedPolicyBindingListFromJSON(json: any): PaginatedPolicyBindingList { + return PaginatedPolicyBindingListFromJSONTyped(json, false); +} + +export function PaginatedPolicyBindingListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedPolicyBindingList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(PolicyBindingFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedPolicyBindingListToJSON(json: any): PaginatedPolicyBindingList { + return PaginatedPolicyBindingListToJSONTyped(json, false); +} + +export function PaginatedPolicyBindingListToJSONTyped( + value?: PaginatedPolicyBindingList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(PolicyBindingToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedPolicyList.ts b/packages/client-ts/src/models/PaginatedPolicyList.ts new file mode 100644 index 0000000000..243a6bb945 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedPolicyList.ts @@ -0,0 +1,91 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; +import type { Policy } from "./Policy"; +import { PolicyFromJSON, PolicyToJSON } from "./Policy"; + +/** + * + * @export + * @interface PaginatedPolicyList + */ +export interface PaginatedPolicyList { + /** + * + * @type {Pagination} + * @memberof PaginatedPolicyList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedPolicyList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedPolicyList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedPolicyList interface. + */ +export function instanceOfPaginatedPolicyList(value: object): value is PaginatedPolicyList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedPolicyListFromJSON(json: any): PaginatedPolicyList { + return PaginatedPolicyListFromJSONTyped(json, false); +} + +export function PaginatedPolicyListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedPolicyList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(PolicyFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedPolicyListToJSON(json: any): PaginatedPolicyList { + return PaginatedPolicyListToJSONTyped(json, false); +} + +export function PaginatedPolicyListToJSONTyped( + value?: PaginatedPolicyList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(PolicyToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedPromptList.ts b/packages/client-ts/src/models/PaginatedPromptList.ts new file mode 100644 index 0000000000..1f099a79cc --- /dev/null +++ b/packages/client-ts/src/models/PaginatedPromptList.ts @@ -0,0 +1,91 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; +import type { Prompt } from "./Prompt"; +import { PromptFromJSON, PromptToJSON } from "./Prompt"; + +/** + * + * @export + * @interface PaginatedPromptList + */ +export interface PaginatedPromptList { + /** + * + * @type {Pagination} + * @memberof PaginatedPromptList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedPromptList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedPromptList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedPromptList interface. + */ +export function instanceOfPaginatedPromptList(value: object): value is PaginatedPromptList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedPromptListFromJSON(json: any): PaginatedPromptList { + return PaginatedPromptListFromJSONTyped(json, false); +} + +export function PaginatedPromptListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedPromptList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(PromptFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedPromptListToJSON(json: any): PaginatedPromptList { + return PaginatedPromptListToJSONTyped(json, false); +} + +export function PaginatedPromptListToJSONTyped( + value?: PaginatedPromptList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(PromptToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedPromptStageList.ts b/packages/client-ts/src/models/PaginatedPromptStageList.ts new file mode 100644 index 0000000000..884511e614 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedPromptStageList.ts @@ -0,0 +1,93 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; +import type { PromptStage } from "./PromptStage"; +import { PromptStageFromJSON, PromptStageToJSON } from "./PromptStage"; + +/** + * + * @export + * @interface PaginatedPromptStageList + */ +export interface PaginatedPromptStageList { + /** + * + * @type {Pagination} + * @memberof PaginatedPromptStageList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedPromptStageList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedPromptStageList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedPromptStageList interface. + */ +export function instanceOfPaginatedPromptStageList( + value: object, +): value is PaginatedPromptStageList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedPromptStageListFromJSON(json: any): PaginatedPromptStageList { + return PaginatedPromptStageListFromJSONTyped(json, false); +} + +export function PaginatedPromptStageListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedPromptStageList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(PromptStageFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedPromptStageListToJSON(json: any): PaginatedPromptStageList { + return PaginatedPromptStageListToJSONTyped(json, false); +} + +export function PaginatedPromptStageListToJSONTyped( + value?: PaginatedPromptStageList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(PromptStageToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedPropertyMappingList.ts b/packages/client-ts/src/models/PaginatedPropertyMappingList.ts new file mode 100644 index 0000000000..1b69eb463c --- /dev/null +++ b/packages/client-ts/src/models/PaginatedPropertyMappingList.ts @@ -0,0 +1,93 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; +import type { PropertyMapping } from "./PropertyMapping"; +import { PropertyMappingFromJSON, PropertyMappingToJSON } from "./PropertyMapping"; + +/** + * + * @export + * @interface PaginatedPropertyMappingList + */ +export interface PaginatedPropertyMappingList { + /** + * + * @type {Pagination} + * @memberof PaginatedPropertyMappingList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedPropertyMappingList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedPropertyMappingList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedPropertyMappingList interface. + */ +export function instanceOfPaginatedPropertyMappingList( + value: object, +): value is PaginatedPropertyMappingList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedPropertyMappingListFromJSON(json: any): PaginatedPropertyMappingList { + return PaginatedPropertyMappingListFromJSONTyped(json, false); +} + +export function PaginatedPropertyMappingListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedPropertyMappingList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(PropertyMappingFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedPropertyMappingListToJSON(json: any): PaginatedPropertyMappingList { + return PaginatedPropertyMappingListToJSONTyped(json, false); +} + +export function PaginatedPropertyMappingListToJSONTyped( + value?: PaginatedPropertyMappingList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(PropertyMappingToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedProviderList.ts b/packages/client-ts/src/models/PaginatedProviderList.ts new file mode 100644 index 0000000000..029eb79ee2 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedProviderList.ts @@ -0,0 +1,91 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; +import type { Provider } from "./Provider"; +import { ProviderFromJSON, ProviderToJSON } from "./Provider"; + +/** + * + * @export + * @interface PaginatedProviderList + */ +export interface PaginatedProviderList { + /** + * + * @type {Pagination} + * @memberof PaginatedProviderList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedProviderList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedProviderList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedProviderList interface. + */ +export function instanceOfPaginatedProviderList(value: object): value is PaginatedProviderList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedProviderListFromJSON(json: any): PaginatedProviderList { + return PaginatedProviderListFromJSONTyped(json, false); +} + +export function PaginatedProviderListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedProviderList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(ProviderFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedProviderListToJSON(json: any): PaginatedProviderList { + return PaginatedProviderListToJSONTyped(json, false); +} + +export function PaginatedProviderListToJSONTyped( + value?: PaginatedProviderList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(ProviderToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedProxyOutpostConfigList.ts b/packages/client-ts/src/models/PaginatedProxyOutpostConfigList.ts new file mode 100644 index 0000000000..229d25388c --- /dev/null +++ b/packages/client-ts/src/models/PaginatedProxyOutpostConfigList.ts @@ -0,0 +1,95 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; +import type { ProxyOutpostConfig } from "./ProxyOutpostConfig"; +import { ProxyOutpostConfigFromJSON, ProxyOutpostConfigToJSON } from "./ProxyOutpostConfig"; + +/** + * + * @export + * @interface PaginatedProxyOutpostConfigList + */ +export interface PaginatedProxyOutpostConfigList { + /** + * + * @type {Pagination} + * @memberof PaginatedProxyOutpostConfigList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedProxyOutpostConfigList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedProxyOutpostConfigList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedProxyOutpostConfigList interface. + */ +export function instanceOfPaginatedProxyOutpostConfigList( + value: object, +): value is PaginatedProxyOutpostConfigList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedProxyOutpostConfigListFromJSON( + json: any, +): PaginatedProxyOutpostConfigList { + return PaginatedProxyOutpostConfigListFromJSONTyped(json, false); +} + +export function PaginatedProxyOutpostConfigListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedProxyOutpostConfigList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(ProxyOutpostConfigFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedProxyOutpostConfigListToJSON(json: any): PaginatedProxyOutpostConfigList { + return PaginatedProxyOutpostConfigListToJSONTyped(json, false); +} + +export function PaginatedProxyOutpostConfigListToJSONTyped( + value?: PaginatedProxyOutpostConfigList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(ProxyOutpostConfigToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedProxyProviderList.ts b/packages/client-ts/src/models/PaginatedProxyProviderList.ts new file mode 100644 index 0000000000..2cc2c20841 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedProxyProviderList.ts @@ -0,0 +1,93 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; +import type { ProxyProvider } from "./ProxyProvider"; +import { ProxyProviderFromJSON, ProxyProviderToJSON } from "./ProxyProvider"; + +/** + * + * @export + * @interface PaginatedProxyProviderList + */ +export interface PaginatedProxyProviderList { + /** + * + * @type {Pagination} + * @memberof PaginatedProxyProviderList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedProxyProviderList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedProxyProviderList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedProxyProviderList interface. + */ +export function instanceOfPaginatedProxyProviderList( + value: object, +): value is PaginatedProxyProviderList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedProxyProviderListFromJSON(json: any): PaginatedProxyProviderList { + return PaginatedProxyProviderListFromJSONTyped(json, false); +} + +export function PaginatedProxyProviderListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedProxyProviderList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(ProxyProviderFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedProxyProviderListToJSON(json: any): PaginatedProxyProviderList { + return PaginatedProxyProviderListToJSONTyped(json, false); +} + +export function PaginatedProxyProviderListToJSONTyped( + value?: PaginatedProxyProviderList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(ProxyProviderToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedRACPropertyMappingList.ts b/packages/client-ts/src/models/PaginatedRACPropertyMappingList.ts new file mode 100644 index 0000000000..1963abafdf --- /dev/null +++ b/packages/client-ts/src/models/PaginatedRACPropertyMappingList.ts @@ -0,0 +1,95 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; +import type { RACPropertyMapping } from "./RACPropertyMapping"; +import { RACPropertyMappingFromJSON, RACPropertyMappingToJSON } from "./RACPropertyMapping"; + +/** + * + * @export + * @interface PaginatedRACPropertyMappingList + */ +export interface PaginatedRACPropertyMappingList { + /** + * + * @type {Pagination} + * @memberof PaginatedRACPropertyMappingList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedRACPropertyMappingList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedRACPropertyMappingList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedRACPropertyMappingList interface. + */ +export function instanceOfPaginatedRACPropertyMappingList( + value: object, +): value is PaginatedRACPropertyMappingList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedRACPropertyMappingListFromJSON( + json: any, +): PaginatedRACPropertyMappingList { + return PaginatedRACPropertyMappingListFromJSONTyped(json, false); +} + +export function PaginatedRACPropertyMappingListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedRACPropertyMappingList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(RACPropertyMappingFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedRACPropertyMappingListToJSON(json: any): PaginatedRACPropertyMappingList { + return PaginatedRACPropertyMappingListToJSONTyped(json, false); +} + +export function PaginatedRACPropertyMappingListToJSONTyped( + value?: PaginatedRACPropertyMappingList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(RACPropertyMappingToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedRACProviderList.ts b/packages/client-ts/src/models/PaginatedRACProviderList.ts new file mode 100644 index 0000000000..7ee7dcd106 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedRACProviderList.ts @@ -0,0 +1,93 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; +import type { RACProvider } from "./RACProvider"; +import { RACProviderFromJSON, RACProviderToJSON } from "./RACProvider"; + +/** + * + * @export + * @interface PaginatedRACProviderList + */ +export interface PaginatedRACProviderList { + /** + * + * @type {Pagination} + * @memberof PaginatedRACProviderList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedRACProviderList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedRACProviderList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedRACProviderList interface. + */ +export function instanceOfPaginatedRACProviderList( + value: object, +): value is PaginatedRACProviderList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedRACProviderListFromJSON(json: any): PaginatedRACProviderList { + return PaginatedRACProviderListFromJSONTyped(json, false); +} + +export function PaginatedRACProviderListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedRACProviderList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(RACProviderFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedRACProviderListToJSON(json: any): PaginatedRACProviderList { + return PaginatedRACProviderListToJSONTyped(json, false); +} + +export function PaginatedRACProviderListToJSONTyped( + value?: PaginatedRACProviderList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(RACProviderToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedRadiusOutpostConfigList.ts b/packages/client-ts/src/models/PaginatedRadiusOutpostConfigList.ts new file mode 100644 index 0000000000..7821f9d753 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedRadiusOutpostConfigList.ts @@ -0,0 +1,97 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; +import type { RadiusOutpostConfig } from "./RadiusOutpostConfig"; +import { RadiusOutpostConfigFromJSON, RadiusOutpostConfigToJSON } from "./RadiusOutpostConfig"; + +/** + * + * @export + * @interface PaginatedRadiusOutpostConfigList + */ +export interface PaginatedRadiusOutpostConfigList { + /** + * + * @type {Pagination} + * @memberof PaginatedRadiusOutpostConfigList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedRadiusOutpostConfigList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedRadiusOutpostConfigList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedRadiusOutpostConfigList interface. + */ +export function instanceOfPaginatedRadiusOutpostConfigList( + value: object, +): value is PaginatedRadiusOutpostConfigList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedRadiusOutpostConfigListFromJSON( + json: any, +): PaginatedRadiusOutpostConfigList { + return PaginatedRadiusOutpostConfigListFromJSONTyped(json, false); +} + +export function PaginatedRadiusOutpostConfigListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedRadiusOutpostConfigList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(RadiusOutpostConfigFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedRadiusOutpostConfigListToJSON( + json: any, +): PaginatedRadiusOutpostConfigList { + return PaginatedRadiusOutpostConfigListToJSONTyped(json, false); +} + +export function PaginatedRadiusOutpostConfigListToJSONTyped( + value?: PaginatedRadiusOutpostConfigList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(RadiusOutpostConfigToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedRadiusProviderList.ts b/packages/client-ts/src/models/PaginatedRadiusProviderList.ts new file mode 100644 index 0000000000..b86d0075b4 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedRadiusProviderList.ts @@ -0,0 +1,93 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; +import type { RadiusProvider } from "./RadiusProvider"; +import { RadiusProviderFromJSON, RadiusProviderToJSON } from "./RadiusProvider"; + +/** + * + * @export + * @interface PaginatedRadiusProviderList + */ +export interface PaginatedRadiusProviderList { + /** + * + * @type {Pagination} + * @memberof PaginatedRadiusProviderList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedRadiusProviderList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedRadiusProviderList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedRadiusProviderList interface. + */ +export function instanceOfPaginatedRadiusProviderList( + value: object, +): value is PaginatedRadiusProviderList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedRadiusProviderListFromJSON(json: any): PaginatedRadiusProviderList { + return PaginatedRadiusProviderListFromJSONTyped(json, false); +} + +export function PaginatedRadiusProviderListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedRadiusProviderList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(RadiusProviderFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedRadiusProviderListToJSON(json: any): PaginatedRadiusProviderList { + return PaginatedRadiusProviderListToJSONTyped(json, false); +} + +export function PaginatedRadiusProviderListToJSONTyped( + value?: PaginatedRadiusProviderList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(RadiusProviderToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedRadiusProviderPropertyMappingList.ts b/packages/client-ts/src/models/PaginatedRadiusProviderPropertyMappingList.ts new file mode 100644 index 0000000000..a1a9aa2980 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedRadiusProviderPropertyMappingList.ts @@ -0,0 +1,100 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; +import type { RadiusProviderPropertyMapping } from "./RadiusProviderPropertyMapping"; +import { + RadiusProviderPropertyMappingFromJSON, + RadiusProviderPropertyMappingToJSON, +} from "./RadiusProviderPropertyMapping"; + +/** + * + * @export + * @interface PaginatedRadiusProviderPropertyMappingList + */ +export interface PaginatedRadiusProviderPropertyMappingList { + /** + * + * @type {Pagination} + * @memberof PaginatedRadiusProviderPropertyMappingList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedRadiusProviderPropertyMappingList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedRadiusProviderPropertyMappingList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedRadiusProviderPropertyMappingList interface. + */ +export function instanceOfPaginatedRadiusProviderPropertyMappingList( + value: object, +): value is PaginatedRadiusProviderPropertyMappingList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedRadiusProviderPropertyMappingListFromJSON( + json: any, +): PaginatedRadiusProviderPropertyMappingList { + return PaginatedRadiusProviderPropertyMappingListFromJSONTyped(json, false); +} + +export function PaginatedRadiusProviderPropertyMappingListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedRadiusProviderPropertyMappingList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(RadiusProviderPropertyMappingFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedRadiusProviderPropertyMappingListToJSON( + json: any, +): PaginatedRadiusProviderPropertyMappingList { + return PaginatedRadiusProviderPropertyMappingListToJSONTyped(json, false); +} + +export function PaginatedRadiusProviderPropertyMappingListToJSONTyped( + value?: PaginatedRadiusProviderPropertyMappingList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(RadiusProviderPropertyMappingToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedRedirectStageList.ts b/packages/client-ts/src/models/PaginatedRedirectStageList.ts new file mode 100644 index 0000000000..2531915444 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedRedirectStageList.ts @@ -0,0 +1,93 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; +import type { RedirectStage } from "./RedirectStage"; +import { RedirectStageFromJSON, RedirectStageToJSON } from "./RedirectStage"; + +/** + * + * @export + * @interface PaginatedRedirectStageList + */ +export interface PaginatedRedirectStageList { + /** + * + * @type {Pagination} + * @memberof PaginatedRedirectStageList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedRedirectStageList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedRedirectStageList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedRedirectStageList interface. + */ +export function instanceOfPaginatedRedirectStageList( + value: object, +): value is PaginatedRedirectStageList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedRedirectStageListFromJSON(json: any): PaginatedRedirectStageList { + return PaginatedRedirectStageListFromJSONTyped(json, false); +} + +export function PaginatedRedirectStageListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedRedirectStageList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(RedirectStageFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedRedirectStageListToJSON(json: any): PaginatedRedirectStageList { + return PaginatedRedirectStageListToJSONTyped(json, false); +} + +export function PaginatedRedirectStageListToJSONTyped( + value?: PaginatedRedirectStageList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(RedirectStageToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedReputationList.ts b/packages/client-ts/src/models/PaginatedReputationList.ts new file mode 100644 index 0000000000..9b7b3724e9 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedReputationList.ts @@ -0,0 +1,91 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; +import type { Reputation } from "./Reputation"; +import { ReputationFromJSON, ReputationToJSON } from "./Reputation"; + +/** + * + * @export + * @interface PaginatedReputationList + */ +export interface PaginatedReputationList { + /** + * + * @type {Pagination} + * @memberof PaginatedReputationList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedReputationList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedReputationList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedReputationList interface. + */ +export function instanceOfPaginatedReputationList(value: object): value is PaginatedReputationList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedReputationListFromJSON(json: any): PaginatedReputationList { + return PaginatedReputationListFromJSONTyped(json, false); +} + +export function PaginatedReputationListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedReputationList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(ReputationFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedReputationListToJSON(json: any): PaginatedReputationList { + return PaginatedReputationListToJSONTyped(json, false); +} + +export function PaginatedReputationListToJSONTyped( + value?: PaginatedReputationList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(ReputationToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedReputationPolicyList.ts b/packages/client-ts/src/models/PaginatedReputationPolicyList.ts new file mode 100644 index 0000000000..abe30ba63f --- /dev/null +++ b/packages/client-ts/src/models/PaginatedReputationPolicyList.ts @@ -0,0 +1,93 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; +import type { ReputationPolicy } from "./ReputationPolicy"; +import { ReputationPolicyFromJSON, ReputationPolicyToJSON } from "./ReputationPolicy"; + +/** + * + * @export + * @interface PaginatedReputationPolicyList + */ +export interface PaginatedReputationPolicyList { + /** + * + * @type {Pagination} + * @memberof PaginatedReputationPolicyList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedReputationPolicyList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedReputationPolicyList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedReputationPolicyList interface. + */ +export function instanceOfPaginatedReputationPolicyList( + value: object, +): value is PaginatedReputationPolicyList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedReputationPolicyListFromJSON(json: any): PaginatedReputationPolicyList { + return PaginatedReputationPolicyListFromJSONTyped(json, false); +} + +export function PaginatedReputationPolicyListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedReputationPolicyList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(ReputationPolicyFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedReputationPolicyListToJSON(json: any): PaginatedReputationPolicyList { + return PaginatedReputationPolicyListToJSONTyped(json, false); +} + +export function PaginatedReputationPolicyListToJSONTyped( + value?: PaginatedReputationPolicyList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(ReputationPolicyToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedRoleAssignedObjectPermissionList.ts b/packages/client-ts/src/models/PaginatedRoleAssignedObjectPermissionList.ts new file mode 100644 index 0000000000..3b56b265cf --- /dev/null +++ b/packages/client-ts/src/models/PaginatedRoleAssignedObjectPermissionList.ts @@ -0,0 +1,100 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; +import type { RoleAssignedObjectPermission } from "./RoleAssignedObjectPermission"; +import { + RoleAssignedObjectPermissionFromJSON, + RoleAssignedObjectPermissionToJSON, +} from "./RoleAssignedObjectPermission"; + +/** + * + * @export + * @interface PaginatedRoleAssignedObjectPermissionList + */ +export interface PaginatedRoleAssignedObjectPermissionList { + /** + * + * @type {Pagination} + * @memberof PaginatedRoleAssignedObjectPermissionList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedRoleAssignedObjectPermissionList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedRoleAssignedObjectPermissionList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedRoleAssignedObjectPermissionList interface. + */ +export function instanceOfPaginatedRoleAssignedObjectPermissionList( + value: object, +): value is PaginatedRoleAssignedObjectPermissionList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedRoleAssignedObjectPermissionListFromJSON( + json: any, +): PaginatedRoleAssignedObjectPermissionList { + return PaginatedRoleAssignedObjectPermissionListFromJSONTyped(json, false); +} + +export function PaginatedRoleAssignedObjectPermissionListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedRoleAssignedObjectPermissionList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(RoleAssignedObjectPermissionFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedRoleAssignedObjectPermissionListToJSON( + json: any, +): PaginatedRoleAssignedObjectPermissionList { + return PaginatedRoleAssignedObjectPermissionListToJSONTyped(json, false); +} + +export function PaginatedRoleAssignedObjectPermissionListToJSONTyped( + value?: PaginatedRoleAssignedObjectPermissionList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(RoleAssignedObjectPermissionToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedRoleList.ts b/packages/client-ts/src/models/PaginatedRoleList.ts new file mode 100644 index 0000000000..85300e0d58 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedRoleList.ts @@ -0,0 +1,91 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; +import type { Role } from "./Role"; +import { RoleFromJSON, RoleToJSON } from "./Role"; + +/** + * + * @export + * @interface PaginatedRoleList + */ +export interface PaginatedRoleList { + /** + * + * @type {Pagination} + * @memberof PaginatedRoleList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedRoleList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedRoleList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedRoleList interface. + */ +export function instanceOfPaginatedRoleList(value: object): value is PaginatedRoleList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedRoleListFromJSON(json: any): PaginatedRoleList { + return PaginatedRoleListFromJSONTyped(json, false); +} + +export function PaginatedRoleListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedRoleList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(RoleFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedRoleListToJSON(json: any): PaginatedRoleList { + return PaginatedRoleListToJSONTyped(json, false); +} + +export function PaginatedRoleListToJSONTyped( + value?: PaginatedRoleList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(RoleToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedSAMLPropertyMappingList.ts b/packages/client-ts/src/models/PaginatedSAMLPropertyMappingList.ts new file mode 100644 index 0000000000..99fb6d4fbc --- /dev/null +++ b/packages/client-ts/src/models/PaginatedSAMLPropertyMappingList.ts @@ -0,0 +1,97 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; +import type { SAMLPropertyMapping } from "./SAMLPropertyMapping"; +import { SAMLPropertyMappingFromJSON, SAMLPropertyMappingToJSON } from "./SAMLPropertyMapping"; + +/** + * + * @export + * @interface PaginatedSAMLPropertyMappingList + */ +export interface PaginatedSAMLPropertyMappingList { + /** + * + * @type {Pagination} + * @memberof PaginatedSAMLPropertyMappingList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedSAMLPropertyMappingList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedSAMLPropertyMappingList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedSAMLPropertyMappingList interface. + */ +export function instanceOfPaginatedSAMLPropertyMappingList( + value: object, +): value is PaginatedSAMLPropertyMappingList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedSAMLPropertyMappingListFromJSON( + json: any, +): PaginatedSAMLPropertyMappingList { + return PaginatedSAMLPropertyMappingListFromJSONTyped(json, false); +} + +export function PaginatedSAMLPropertyMappingListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedSAMLPropertyMappingList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(SAMLPropertyMappingFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedSAMLPropertyMappingListToJSON( + json: any, +): PaginatedSAMLPropertyMappingList { + return PaginatedSAMLPropertyMappingListToJSONTyped(json, false); +} + +export function PaginatedSAMLPropertyMappingListToJSONTyped( + value?: PaginatedSAMLPropertyMappingList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(SAMLPropertyMappingToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedSAMLProviderList.ts b/packages/client-ts/src/models/PaginatedSAMLProviderList.ts new file mode 100644 index 0000000000..e80ebc1cd5 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedSAMLProviderList.ts @@ -0,0 +1,93 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; +import type { SAMLProvider } from "./SAMLProvider"; +import { SAMLProviderFromJSON, SAMLProviderToJSON } from "./SAMLProvider"; + +/** + * + * @export + * @interface PaginatedSAMLProviderList + */ +export interface PaginatedSAMLProviderList { + /** + * + * @type {Pagination} + * @memberof PaginatedSAMLProviderList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedSAMLProviderList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedSAMLProviderList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedSAMLProviderList interface. + */ +export function instanceOfPaginatedSAMLProviderList( + value: object, +): value is PaginatedSAMLProviderList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedSAMLProviderListFromJSON(json: any): PaginatedSAMLProviderList { + return PaginatedSAMLProviderListFromJSONTyped(json, false); +} + +export function PaginatedSAMLProviderListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedSAMLProviderList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(SAMLProviderFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedSAMLProviderListToJSON(json: any): PaginatedSAMLProviderList { + return PaginatedSAMLProviderListToJSONTyped(json, false); +} + +export function PaginatedSAMLProviderListToJSONTyped( + value?: PaginatedSAMLProviderList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(SAMLProviderToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedSAMLSourceList.ts b/packages/client-ts/src/models/PaginatedSAMLSourceList.ts new file mode 100644 index 0000000000..c27f99f1f5 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedSAMLSourceList.ts @@ -0,0 +1,91 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; +import type { SAMLSource } from "./SAMLSource"; +import { SAMLSourceFromJSON, SAMLSourceToJSON } from "./SAMLSource"; + +/** + * + * @export + * @interface PaginatedSAMLSourceList + */ +export interface PaginatedSAMLSourceList { + /** + * + * @type {Pagination} + * @memberof PaginatedSAMLSourceList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedSAMLSourceList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedSAMLSourceList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedSAMLSourceList interface. + */ +export function instanceOfPaginatedSAMLSourceList(value: object): value is PaginatedSAMLSourceList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedSAMLSourceListFromJSON(json: any): PaginatedSAMLSourceList { + return PaginatedSAMLSourceListFromJSONTyped(json, false); +} + +export function PaginatedSAMLSourceListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedSAMLSourceList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(SAMLSourceFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedSAMLSourceListToJSON(json: any): PaginatedSAMLSourceList { + return PaginatedSAMLSourceListToJSONTyped(json, false); +} + +export function PaginatedSAMLSourceListToJSONTyped( + value?: PaginatedSAMLSourceList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(SAMLSourceToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedSAMLSourcePropertyMappingList.ts b/packages/client-ts/src/models/PaginatedSAMLSourcePropertyMappingList.ts new file mode 100644 index 0000000000..4dac2ef0f7 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedSAMLSourcePropertyMappingList.ts @@ -0,0 +1,100 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; +import type { SAMLSourcePropertyMapping } from "./SAMLSourcePropertyMapping"; +import { + SAMLSourcePropertyMappingFromJSON, + SAMLSourcePropertyMappingToJSON, +} from "./SAMLSourcePropertyMapping"; + +/** + * + * @export + * @interface PaginatedSAMLSourcePropertyMappingList + */ +export interface PaginatedSAMLSourcePropertyMappingList { + /** + * + * @type {Pagination} + * @memberof PaginatedSAMLSourcePropertyMappingList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedSAMLSourcePropertyMappingList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedSAMLSourcePropertyMappingList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedSAMLSourcePropertyMappingList interface. + */ +export function instanceOfPaginatedSAMLSourcePropertyMappingList( + value: object, +): value is PaginatedSAMLSourcePropertyMappingList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedSAMLSourcePropertyMappingListFromJSON( + json: any, +): PaginatedSAMLSourcePropertyMappingList { + return PaginatedSAMLSourcePropertyMappingListFromJSONTyped(json, false); +} + +export function PaginatedSAMLSourcePropertyMappingListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedSAMLSourcePropertyMappingList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(SAMLSourcePropertyMappingFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedSAMLSourcePropertyMappingListToJSON( + json: any, +): PaginatedSAMLSourcePropertyMappingList { + return PaginatedSAMLSourcePropertyMappingListToJSONTyped(json, false); +} + +export function PaginatedSAMLSourcePropertyMappingListToJSONTyped( + value?: PaginatedSAMLSourcePropertyMappingList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(SAMLSourcePropertyMappingToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedSCIMMappingList.ts b/packages/client-ts/src/models/PaginatedSCIMMappingList.ts new file mode 100644 index 0000000000..e496268d88 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedSCIMMappingList.ts @@ -0,0 +1,93 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; +import type { SCIMMapping } from "./SCIMMapping"; +import { SCIMMappingFromJSON, SCIMMappingToJSON } from "./SCIMMapping"; + +/** + * + * @export + * @interface PaginatedSCIMMappingList + */ +export interface PaginatedSCIMMappingList { + /** + * + * @type {Pagination} + * @memberof PaginatedSCIMMappingList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedSCIMMappingList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedSCIMMappingList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedSCIMMappingList interface. + */ +export function instanceOfPaginatedSCIMMappingList( + value: object, +): value is PaginatedSCIMMappingList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedSCIMMappingListFromJSON(json: any): PaginatedSCIMMappingList { + return PaginatedSCIMMappingListFromJSONTyped(json, false); +} + +export function PaginatedSCIMMappingListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedSCIMMappingList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(SCIMMappingFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedSCIMMappingListToJSON(json: any): PaginatedSCIMMappingList { + return PaginatedSCIMMappingListToJSONTyped(json, false); +} + +export function PaginatedSCIMMappingListToJSONTyped( + value?: PaginatedSCIMMappingList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(SCIMMappingToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedSCIMProviderGroupList.ts b/packages/client-ts/src/models/PaginatedSCIMProviderGroupList.ts new file mode 100644 index 0000000000..197fa14fc1 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedSCIMProviderGroupList.ts @@ -0,0 +1,93 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; +import type { SCIMProviderGroup } from "./SCIMProviderGroup"; +import { SCIMProviderGroupFromJSON, SCIMProviderGroupToJSON } from "./SCIMProviderGroup"; + +/** + * + * @export + * @interface PaginatedSCIMProviderGroupList + */ +export interface PaginatedSCIMProviderGroupList { + /** + * + * @type {Pagination} + * @memberof PaginatedSCIMProviderGroupList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedSCIMProviderGroupList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedSCIMProviderGroupList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedSCIMProviderGroupList interface. + */ +export function instanceOfPaginatedSCIMProviderGroupList( + value: object, +): value is PaginatedSCIMProviderGroupList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedSCIMProviderGroupListFromJSON(json: any): PaginatedSCIMProviderGroupList { + return PaginatedSCIMProviderGroupListFromJSONTyped(json, false); +} + +export function PaginatedSCIMProviderGroupListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedSCIMProviderGroupList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(SCIMProviderGroupFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedSCIMProviderGroupListToJSON(json: any): PaginatedSCIMProviderGroupList { + return PaginatedSCIMProviderGroupListToJSONTyped(json, false); +} + +export function PaginatedSCIMProviderGroupListToJSONTyped( + value?: PaginatedSCIMProviderGroupList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(SCIMProviderGroupToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedSCIMProviderList.ts b/packages/client-ts/src/models/PaginatedSCIMProviderList.ts new file mode 100644 index 0000000000..6af2ba74d6 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedSCIMProviderList.ts @@ -0,0 +1,93 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; +import type { SCIMProvider } from "./SCIMProvider"; +import { SCIMProviderFromJSON, SCIMProviderToJSON } from "./SCIMProvider"; + +/** + * + * @export + * @interface PaginatedSCIMProviderList + */ +export interface PaginatedSCIMProviderList { + /** + * + * @type {Pagination} + * @memberof PaginatedSCIMProviderList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedSCIMProviderList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedSCIMProviderList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedSCIMProviderList interface. + */ +export function instanceOfPaginatedSCIMProviderList( + value: object, +): value is PaginatedSCIMProviderList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedSCIMProviderListFromJSON(json: any): PaginatedSCIMProviderList { + return PaginatedSCIMProviderListFromJSONTyped(json, false); +} + +export function PaginatedSCIMProviderListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedSCIMProviderList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(SCIMProviderFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedSCIMProviderListToJSON(json: any): PaginatedSCIMProviderList { + return PaginatedSCIMProviderListToJSONTyped(json, false); +} + +export function PaginatedSCIMProviderListToJSONTyped( + value?: PaginatedSCIMProviderList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(SCIMProviderToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedSCIMProviderUserList.ts b/packages/client-ts/src/models/PaginatedSCIMProviderUserList.ts new file mode 100644 index 0000000000..587604c420 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedSCIMProviderUserList.ts @@ -0,0 +1,93 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; +import type { SCIMProviderUser } from "./SCIMProviderUser"; +import { SCIMProviderUserFromJSON, SCIMProviderUserToJSON } from "./SCIMProviderUser"; + +/** + * + * @export + * @interface PaginatedSCIMProviderUserList + */ +export interface PaginatedSCIMProviderUserList { + /** + * + * @type {Pagination} + * @memberof PaginatedSCIMProviderUserList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedSCIMProviderUserList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedSCIMProviderUserList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedSCIMProviderUserList interface. + */ +export function instanceOfPaginatedSCIMProviderUserList( + value: object, +): value is PaginatedSCIMProviderUserList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedSCIMProviderUserListFromJSON(json: any): PaginatedSCIMProviderUserList { + return PaginatedSCIMProviderUserListFromJSONTyped(json, false); +} + +export function PaginatedSCIMProviderUserListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedSCIMProviderUserList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(SCIMProviderUserFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedSCIMProviderUserListToJSON(json: any): PaginatedSCIMProviderUserList { + return PaginatedSCIMProviderUserListToJSONTyped(json, false); +} + +export function PaginatedSCIMProviderUserListToJSONTyped( + value?: PaginatedSCIMProviderUserList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(SCIMProviderUserToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedSCIMSourceGroupList.ts b/packages/client-ts/src/models/PaginatedSCIMSourceGroupList.ts new file mode 100644 index 0000000000..a6ffb69fb5 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedSCIMSourceGroupList.ts @@ -0,0 +1,93 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; +import type { SCIMSourceGroup } from "./SCIMSourceGroup"; +import { SCIMSourceGroupFromJSON, SCIMSourceGroupToJSON } from "./SCIMSourceGroup"; + +/** + * + * @export + * @interface PaginatedSCIMSourceGroupList + */ +export interface PaginatedSCIMSourceGroupList { + /** + * + * @type {Pagination} + * @memberof PaginatedSCIMSourceGroupList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedSCIMSourceGroupList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedSCIMSourceGroupList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedSCIMSourceGroupList interface. + */ +export function instanceOfPaginatedSCIMSourceGroupList( + value: object, +): value is PaginatedSCIMSourceGroupList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedSCIMSourceGroupListFromJSON(json: any): PaginatedSCIMSourceGroupList { + return PaginatedSCIMSourceGroupListFromJSONTyped(json, false); +} + +export function PaginatedSCIMSourceGroupListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedSCIMSourceGroupList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(SCIMSourceGroupFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedSCIMSourceGroupListToJSON(json: any): PaginatedSCIMSourceGroupList { + return PaginatedSCIMSourceGroupListToJSONTyped(json, false); +} + +export function PaginatedSCIMSourceGroupListToJSONTyped( + value?: PaginatedSCIMSourceGroupList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(SCIMSourceGroupToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedSCIMSourceList.ts b/packages/client-ts/src/models/PaginatedSCIMSourceList.ts new file mode 100644 index 0000000000..191232cf73 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedSCIMSourceList.ts @@ -0,0 +1,91 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; +import type { SCIMSource } from "./SCIMSource"; +import { SCIMSourceFromJSON, SCIMSourceToJSON } from "./SCIMSource"; + +/** + * + * @export + * @interface PaginatedSCIMSourceList + */ +export interface PaginatedSCIMSourceList { + /** + * + * @type {Pagination} + * @memberof PaginatedSCIMSourceList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedSCIMSourceList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedSCIMSourceList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedSCIMSourceList interface. + */ +export function instanceOfPaginatedSCIMSourceList(value: object): value is PaginatedSCIMSourceList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedSCIMSourceListFromJSON(json: any): PaginatedSCIMSourceList { + return PaginatedSCIMSourceListFromJSONTyped(json, false); +} + +export function PaginatedSCIMSourceListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedSCIMSourceList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(SCIMSourceFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedSCIMSourceListToJSON(json: any): PaginatedSCIMSourceList { + return PaginatedSCIMSourceListToJSONTyped(json, false); +} + +export function PaginatedSCIMSourceListToJSONTyped( + value?: PaginatedSCIMSourceList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(SCIMSourceToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedSCIMSourcePropertyMappingList.ts b/packages/client-ts/src/models/PaginatedSCIMSourcePropertyMappingList.ts new file mode 100644 index 0000000000..61a939bbd8 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedSCIMSourcePropertyMappingList.ts @@ -0,0 +1,100 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; +import type { SCIMSourcePropertyMapping } from "./SCIMSourcePropertyMapping"; +import { + SCIMSourcePropertyMappingFromJSON, + SCIMSourcePropertyMappingToJSON, +} from "./SCIMSourcePropertyMapping"; + +/** + * + * @export + * @interface PaginatedSCIMSourcePropertyMappingList + */ +export interface PaginatedSCIMSourcePropertyMappingList { + /** + * + * @type {Pagination} + * @memberof PaginatedSCIMSourcePropertyMappingList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedSCIMSourcePropertyMappingList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedSCIMSourcePropertyMappingList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedSCIMSourcePropertyMappingList interface. + */ +export function instanceOfPaginatedSCIMSourcePropertyMappingList( + value: object, +): value is PaginatedSCIMSourcePropertyMappingList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedSCIMSourcePropertyMappingListFromJSON( + json: any, +): PaginatedSCIMSourcePropertyMappingList { + return PaginatedSCIMSourcePropertyMappingListFromJSONTyped(json, false); +} + +export function PaginatedSCIMSourcePropertyMappingListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedSCIMSourcePropertyMappingList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(SCIMSourcePropertyMappingFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedSCIMSourcePropertyMappingListToJSON( + json: any, +): PaginatedSCIMSourcePropertyMappingList { + return PaginatedSCIMSourcePropertyMappingListToJSONTyped(json, false); +} + +export function PaginatedSCIMSourcePropertyMappingListToJSONTyped( + value?: PaginatedSCIMSourcePropertyMappingList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(SCIMSourcePropertyMappingToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedSCIMSourceUserList.ts b/packages/client-ts/src/models/PaginatedSCIMSourceUserList.ts new file mode 100644 index 0000000000..c483c49a34 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedSCIMSourceUserList.ts @@ -0,0 +1,93 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; +import type { SCIMSourceUser } from "./SCIMSourceUser"; +import { SCIMSourceUserFromJSON, SCIMSourceUserToJSON } from "./SCIMSourceUser"; + +/** + * + * @export + * @interface PaginatedSCIMSourceUserList + */ +export interface PaginatedSCIMSourceUserList { + /** + * + * @type {Pagination} + * @memberof PaginatedSCIMSourceUserList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedSCIMSourceUserList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedSCIMSourceUserList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedSCIMSourceUserList interface. + */ +export function instanceOfPaginatedSCIMSourceUserList( + value: object, +): value is PaginatedSCIMSourceUserList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedSCIMSourceUserListFromJSON(json: any): PaginatedSCIMSourceUserList { + return PaginatedSCIMSourceUserListFromJSONTyped(json, false); +} + +export function PaginatedSCIMSourceUserListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedSCIMSourceUserList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(SCIMSourceUserFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedSCIMSourceUserListToJSON(json: any): PaginatedSCIMSourceUserList { + return PaginatedSCIMSourceUserListToJSONTyped(json, false); +} + +export function PaginatedSCIMSourceUserListToJSONTyped( + value?: PaginatedSCIMSourceUserList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(SCIMSourceUserToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedSMSDeviceList.ts b/packages/client-ts/src/models/PaginatedSMSDeviceList.ts new file mode 100644 index 0000000000..001b0e6c43 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedSMSDeviceList.ts @@ -0,0 +1,91 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; +import type { SMSDevice } from "./SMSDevice"; +import { SMSDeviceFromJSON, SMSDeviceToJSON } from "./SMSDevice"; + +/** + * + * @export + * @interface PaginatedSMSDeviceList + */ +export interface PaginatedSMSDeviceList { + /** + * + * @type {Pagination} + * @memberof PaginatedSMSDeviceList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedSMSDeviceList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedSMSDeviceList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedSMSDeviceList interface. + */ +export function instanceOfPaginatedSMSDeviceList(value: object): value is PaginatedSMSDeviceList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedSMSDeviceListFromJSON(json: any): PaginatedSMSDeviceList { + return PaginatedSMSDeviceListFromJSONTyped(json, false); +} + +export function PaginatedSMSDeviceListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedSMSDeviceList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(SMSDeviceFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedSMSDeviceListToJSON(json: any): PaginatedSMSDeviceList { + return PaginatedSMSDeviceListToJSONTyped(json, false); +} + +export function PaginatedSMSDeviceListToJSONTyped( + value?: PaginatedSMSDeviceList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(SMSDeviceToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedSSFProviderList.ts b/packages/client-ts/src/models/PaginatedSSFProviderList.ts new file mode 100644 index 0000000000..ec969371c6 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedSSFProviderList.ts @@ -0,0 +1,93 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; +import type { SSFProvider } from "./SSFProvider"; +import { SSFProviderFromJSON, SSFProviderToJSON } from "./SSFProvider"; + +/** + * + * @export + * @interface PaginatedSSFProviderList + */ +export interface PaginatedSSFProviderList { + /** + * + * @type {Pagination} + * @memberof PaginatedSSFProviderList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedSSFProviderList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedSSFProviderList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedSSFProviderList interface. + */ +export function instanceOfPaginatedSSFProviderList( + value: object, +): value is PaginatedSSFProviderList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedSSFProviderListFromJSON(json: any): PaginatedSSFProviderList { + return PaginatedSSFProviderListFromJSONTyped(json, false); +} + +export function PaginatedSSFProviderListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedSSFProviderList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(SSFProviderFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedSSFProviderListToJSON(json: any): PaginatedSSFProviderList { + return PaginatedSSFProviderListToJSONTyped(json, false); +} + +export function PaginatedSSFProviderListToJSONTyped( + value?: PaginatedSSFProviderList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(SSFProviderToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedSSFStreamList.ts b/packages/client-ts/src/models/PaginatedSSFStreamList.ts new file mode 100644 index 0000000000..37e3e364da --- /dev/null +++ b/packages/client-ts/src/models/PaginatedSSFStreamList.ts @@ -0,0 +1,91 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; +import type { SSFStream } from "./SSFStream"; +import { SSFStreamFromJSON, SSFStreamToJSON } from "./SSFStream"; + +/** + * + * @export + * @interface PaginatedSSFStreamList + */ +export interface PaginatedSSFStreamList { + /** + * + * @type {Pagination} + * @memberof PaginatedSSFStreamList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedSSFStreamList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedSSFStreamList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedSSFStreamList interface. + */ +export function instanceOfPaginatedSSFStreamList(value: object): value is PaginatedSSFStreamList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedSSFStreamListFromJSON(json: any): PaginatedSSFStreamList { + return PaginatedSSFStreamListFromJSONTyped(json, false); +} + +export function PaginatedSSFStreamListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedSSFStreamList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(SSFStreamFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedSSFStreamListToJSON(json: any): PaginatedSSFStreamList { + return PaginatedSSFStreamListToJSONTyped(json, false); +} + +export function PaginatedSSFStreamListToJSONTyped( + value?: PaginatedSSFStreamList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(SSFStreamToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedScheduleList.ts b/packages/client-ts/src/models/PaginatedScheduleList.ts new file mode 100644 index 0000000000..dc92ed0b3b --- /dev/null +++ b/packages/client-ts/src/models/PaginatedScheduleList.ts @@ -0,0 +1,91 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; +import type { Schedule } from "./Schedule"; +import { ScheduleFromJSON, ScheduleToJSON } from "./Schedule"; + +/** + * + * @export + * @interface PaginatedScheduleList + */ +export interface PaginatedScheduleList { + /** + * + * @type {Pagination} + * @memberof PaginatedScheduleList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedScheduleList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedScheduleList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedScheduleList interface. + */ +export function instanceOfPaginatedScheduleList(value: object): value is PaginatedScheduleList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedScheduleListFromJSON(json: any): PaginatedScheduleList { + return PaginatedScheduleListFromJSONTyped(json, false); +} + +export function PaginatedScheduleListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedScheduleList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(ScheduleFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedScheduleListToJSON(json: any): PaginatedScheduleList { + return PaginatedScheduleListToJSONTyped(json, false); +} + +export function PaginatedScheduleListToJSONTyped( + value?: PaginatedScheduleList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(ScheduleToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedScopeMappingList.ts b/packages/client-ts/src/models/PaginatedScopeMappingList.ts new file mode 100644 index 0000000000..6959024dca --- /dev/null +++ b/packages/client-ts/src/models/PaginatedScopeMappingList.ts @@ -0,0 +1,93 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; +import type { ScopeMapping } from "./ScopeMapping"; +import { ScopeMappingFromJSON, ScopeMappingToJSON } from "./ScopeMapping"; + +/** + * + * @export + * @interface PaginatedScopeMappingList + */ +export interface PaginatedScopeMappingList { + /** + * + * @type {Pagination} + * @memberof PaginatedScopeMappingList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedScopeMappingList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedScopeMappingList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedScopeMappingList interface. + */ +export function instanceOfPaginatedScopeMappingList( + value: object, +): value is PaginatedScopeMappingList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedScopeMappingListFromJSON(json: any): PaginatedScopeMappingList { + return PaginatedScopeMappingListFromJSONTyped(json, false); +} + +export function PaginatedScopeMappingListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedScopeMappingList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(ScopeMappingFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedScopeMappingListToJSON(json: any): PaginatedScopeMappingList { + return PaginatedScopeMappingListToJSONTyped(json, false); +} + +export function PaginatedScopeMappingListToJSONTyped( + value?: PaginatedScopeMappingList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(ScopeMappingToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedServiceConnectionList.ts b/packages/client-ts/src/models/PaginatedServiceConnectionList.ts new file mode 100644 index 0000000000..3b395d7739 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedServiceConnectionList.ts @@ -0,0 +1,93 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; +import type { ServiceConnection } from "./ServiceConnection"; +import { ServiceConnectionFromJSON, ServiceConnectionToJSON } from "./ServiceConnection"; + +/** + * + * @export + * @interface PaginatedServiceConnectionList + */ +export interface PaginatedServiceConnectionList { + /** + * + * @type {Pagination} + * @memberof PaginatedServiceConnectionList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedServiceConnectionList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedServiceConnectionList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedServiceConnectionList interface. + */ +export function instanceOfPaginatedServiceConnectionList( + value: object, +): value is PaginatedServiceConnectionList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedServiceConnectionListFromJSON(json: any): PaginatedServiceConnectionList { + return PaginatedServiceConnectionListFromJSONTyped(json, false); +} + +export function PaginatedServiceConnectionListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedServiceConnectionList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(ServiceConnectionFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedServiceConnectionListToJSON(json: any): PaginatedServiceConnectionList { + return PaginatedServiceConnectionListToJSONTyped(json, false); +} + +export function PaginatedServiceConnectionListToJSONTyped( + value?: PaginatedServiceConnectionList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(ServiceConnectionToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedSourceList.ts b/packages/client-ts/src/models/PaginatedSourceList.ts new file mode 100644 index 0000000000..c3bbe60bed --- /dev/null +++ b/packages/client-ts/src/models/PaginatedSourceList.ts @@ -0,0 +1,91 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; +import type { Source } from "./Source"; +import { SourceFromJSON, SourceToJSON } from "./Source"; + +/** + * + * @export + * @interface PaginatedSourceList + */ +export interface PaginatedSourceList { + /** + * + * @type {Pagination} + * @memberof PaginatedSourceList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedSourceList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedSourceList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedSourceList interface. + */ +export function instanceOfPaginatedSourceList(value: object): value is PaginatedSourceList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedSourceListFromJSON(json: any): PaginatedSourceList { + return PaginatedSourceListFromJSONTyped(json, false); +} + +export function PaginatedSourceListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedSourceList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(SourceFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedSourceListToJSON(json: any): PaginatedSourceList { + return PaginatedSourceListToJSONTyped(json, false); +} + +export function PaginatedSourceListToJSONTyped( + value?: PaginatedSourceList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(SourceToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedSourceStageList.ts b/packages/client-ts/src/models/PaginatedSourceStageList.ts new file mode 100644 index 0000000000..00dddb49ae --- /dev/null +++ b/packages/client-ts/src/models/PaginatedSourceStageList.ts @@ -0,0 +1,93 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; +import type { SourceStage } from "./SourceStage"; +import { SourceStageFromJSON, SourceStageToJSON } from "./SourceStage"; + +/** + * + * @export + * @interface PaginatedSourceStageList + */ +export interface PaginatedSourceStageList { + /** + * + * @type {Pagination} + * @memberof PaginatedSourceStageList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedSourceStageList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedSourceStageList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedSourceStageList interface. + */ +export function instanceOfPaginatedSourceStageList( + value: object, +): value is PaginatedSourceStageList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedSourceStageListFromJSON(json: any): PaginatedSourceStageList { + return PaginatedSourceStageListFromJSONTyped(json, false); +} + +export function PaginatedSourceStageListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedSourceStageList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(SourceStageFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedSourceStageListToJSON(json: any): PaginatedSourceStageList { + return PaginatedSourceStageListToJSONTyped(json, false); +} + +export function PaginatedSourceStageListToJSONTyped( + value?: PaginatedSourceStageList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(SourceStageToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedStageList.ts b/packages/client-ts/src/models/PaginatedStageList.ts new file mode 100644 index 0000000000..e8f31bb9e4 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedStageList.ts @@ -0,0 +1,91 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; +import type { Stage } from "./Stage"; +import { StageFromJSON, StageToJSON } from "./Stage"; + +/** + * + * @export + * @interface PaginatedStageList + */ +export interface PaginatedStageList { + /** + * + * @type {Pagination} + * @memberof PaginatedStageList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedStageList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedStageList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedStageList interface. + */ +export function instanceOfPaginatedStageList(value: object): value is PaginatedStageList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedStageListFromJSON(json: any): PaginatedStageList { + return PaginatedStageListFromJSONTyped(json, false); +} + +export function PaginatedStageListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedStageList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(StageFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedStageListToJSON(json: any): PaginatedStageList { + return PaginatedStageListToJSONTyped(json, false); +} + +export function PaginatedStageListToJSONTyped( + value?: PaginatedStageList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(StageToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedStaticDeviceList.ts b/packages/client-ts/src/models/PaginatedStaticDeviceList.ts new file mode 100644 index 0000000000..8049008180 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedStaticDeviceList.ts @@ -0,0 +1,93 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; +import type { StaticDevice } from "./StaticDevice"; +import { StaticDeviceFromJSON, StaticDeviceToJSON } from "./StaticDevice"; + +/** + * + * @export + * @interface PaginatedStaticDeviceList + */ +export interface PaginatedStaticDeviceList { + /** + * + * @type {Pagination} + * @memberof PaginatedStaticDeviceList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedStaticDeviceList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedStaticDeviceList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedStaticDeviceList interface. + */ +export function instanceOfPaginatedStaticDeviceList( + value: object, +): value is PaginatedStaticDeviceList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedStaticDeviceListFromJSON(json: any): PaginatedStaticDeviceList { + return PaginatedStaticDeviceListFromJSONTyped(json, false); +} + +export function PaginatedStaticDeviceListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedStaticDeviceList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(StaticDeviceFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedStaticDeviceListToJSON(json: any): PaginatedStaticDeviceList { + return PaginatedStaticDeviceListToJSONTyped(json, false); +} + +export function PaginatedStaticDeviceListToJSONTyped( + value?: PaginatedStaticDeviceList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(StaticDeviceToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedTOTPDeviceList.ts b/packages/client-ts/src/models/PaginatedTOTPDeviceList.ts new file mode 100644 index 0000000000..ffeff371ae --- /dev/null +++ b/packages/client-ts/src/models/PaginatedTOTPDeviceList.ts @@ -0,0 +1,91 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; +import type { TOTPDevice } from "./TOTPDevice"; +import { TOTPDeviceFromJSON, TOTPDeviceToJSON } from "./TOTPDevice"; + +/** + * + * @export + * @interface PaginatedTOTPDeviceList + */ +export interface PaginatedTOTPDeviceList { + /** + * + * @type {Pagination} + * @memberof PaginatedTOTPDeviceList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedTOTPDeviceList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedTOTPDeviceList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedTOTPDeviceList interface. + */ +export function instanceOfPaginatedTOTPDeviceList(value: object): value is PaginatedTOTPDeviceList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedTOTPDeviceListFromJSON(json: any): PaginatedTOTPDeviceList { + return PaginatedTOTPDeviceListFromJSONTyped(json, false); +} + +export function PaginatedTOTPDeviceListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedTOTPDeviceList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(TOTPDeviceFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedTOTPDeviceListToJSON(json: any): PaginatedTOTPDeviceList { + return PaginatedTOTPDeviceListToJSONTyped(json, false); +} + +export function PaginatedTOTPDeviceListToJSONTyped( + value?: PaginatedTOTPDeviceList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(TOTPDeviceToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedTaskList.ts b/packages/client-ts/src/models/PaginatedTaskList.ts new file mode 100644 index 0000000000..64954bac12 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedTaskList.ts @@ -0,0 +1,91 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; +import type { Task } from "./Task"; +import { TaskFromJSON, TaskToJSON } from "./Task"; + +/** + * + * @export + * @interface PaginatedTaskList + */ +export interface PaginatedTaskList { + /** + * + * @type {Pagination} + * @memberof PaginatedTaskList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedTaskList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedTaskList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedTaskList interface. + */ +export function instanceOfPaginatedTaskList(value: object): value is PaginatedTaskList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedTaskListFromJSON(json: any): PaginatedTaskList { + return PaginatedTaskListFromJSONTyped(json, false); +} + +export function PaginatedTaskListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedTaskList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(TaskFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedTaskListToJSON(json: any): PaginatedTaskList { + return PaginatedTaskListToJSONTyped(json, false); +} + +export function PaginatedTaskListToJSONTyped( + value?: PaginatedTaskList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(TaskToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedTelegramSourceList.ts b/packages/client-ts/src/models/PaginatedTelegramSourceList.ts new file mode 100644 index 0000000000..68a3681f33 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedTelegramSourceList.ts @@ -0,0 +1,93 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; +import type { TelegramSource } from "./TelegramSource"; +import { TelegramSourceFromJSON, TelegramSourceToJSON } from "./TelegramSource"; + +/** + * + * @export + * @interface PaginatedTelegramSourceList + */ +export interface PaginatedTelegramSourceList { + /** + * + * @type {Pagination} + * @memberof PaginatedTelegramSourceList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedTelegramSourceList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedTelegramSourceList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedTelegramSourceList interface. + */ +export function instanceOfPaginatedTelegramSourceList( + value: object, +): value is PaginatedTelegramSourceList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedTelegramSourceListFromJSON(json: any): PaginatedTelegramSourceList { + return PaginatedTelegramSourceListFromJSONTyped(json, false); +} + +export function PaginatedTelegramSourceListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedTelegramSourceList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(TelegramSourceFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedTelegramSourceListToJSON(json: any): PaginatedTelegramSourceList { + return PaginatedTelegramSourceListToJSONTyped(json, false); +} + +export function PaginatedTelegramSourceListToJSONTyped( + value?: PaginatedTelegramSourceList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(TelegramSourceToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedTelegramSourcePropertyMappingList.ts b/packages/client-ts/src/models/PaginatedTelegramSourcePropertyMappingList.ts new file mode 100644 index 0000000000..ceee8cd971 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedTelegramSourcePropertyMappingList.ts @@ -0,0 +1,100 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; +import type { TelegramSourcePropertyMapping } from "./TelegramSourcePropertyMapping"; +import { + TelegramSourcePropertyMappingFromJSON, + TelegramSourcePropertyMappingToJSON, +} from "./TelegramSourcePropertyMapping"; + +/** + * + * @export + * @interface PaginatedTelegramSourcePropertyMappingList + */ +export interface PaginatedTelegramSourcePropertyMappingList { + /** + * + * @type {Pagination} + * @memberof PaginatedTelegramSourcePropertyMappingList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedTelegramSourcePropertyMappingList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedTelegramSourcePropertyMappingList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedTelegramSourcePropertyMappingList interface. + */ +export function instanceOfPaginatedTelegramSourcePropertyMappingList( + value: object, +): value is PaginatedTelegramSourcePropertyMappingList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedTelegramSourcePropertyMappingListFromJSON( + json: any, +): PaginatedTelegramSourcePropertyMappingList { + return PaginatedTelegramSourcePropertyMappingListFromJSONTyped(json, false); +} + +export function PaginatedTelegramSourcePropertyMappingListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedTelegramSourcePropertyMappingList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(TelegramSourcePropertyMappingFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedTelegramSourcePropertyMappingListToJSON( + json: any, +): PaginatedTelegramSourcePropertyMappingList { + return PaginatedTelegramSourcePropertyMappingListToJSONTyped(json, false); +} + +export function PaginatedTelegramSourcePropertyMappingListToJSONTyped( + value?: PaginatedTelegramSourcePropertyMappingList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(TelegramSourcePropertyMappingToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedTenantList.ts b/packages/client-ts/src/models/PaginatedTenantList.ts new file mode 100644 index 0000000000..a8e497db23 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedTenantList.ts @@ -0,0 +1,91 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; +import type { Tenant } from "./Tenant"; +import { TenantFromJSON, TenantToJSON } from "./Tenant"; + +/** + * + * @export + * @interface PaginatedTenantList + */ +export interface PaginatedTenantList { + /** + * + * @type {Pagination} + * @memberof PaginatedTenantList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedTenantList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedTenantList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedTenantList interface. + */ +export function instanceOfPaginatedTenantList(value: object): value is PaginatedTenantList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedTenantListFromJSON(json: any): PaginatedTenantList { + return PaginatedTenantListFromJSONTyped(json, false); +} + +export function PaginatedTenantListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedTenantList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(TenantFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedTenantListToJSON(json: any): PaginatedTenantList { + return PaginatedTenantListToJSONTyped(json, false); +} + +export function PaginatedTenantListToJSONTyped( + value?: PaginatedTenantList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(TenantToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedTokenList.ts b/packages/client-ts/src/models/PaginatedTokenList.ts new file mode 100644 index 0000000000..7bc5f6c992 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedTokenList.ts @@ -0,0 +1,91 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; +import type { Token } from "./Token"; +import { TokenFromJSON, TokenToJSON } from "./Token"; + +/** + * + * @export + * @interface PaginatedTokenList + */ +export interface PaginatedTokenList { + /** + * + * @type {Pagination} + * @memberof PaginatedTokenList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedTokenList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedTokenList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedTokenList interface. + */ +export function instanceOfPaginatedTokenList(value: object): value is PaginatedTokenList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedTokenListFromJSON(json: any): PaginatedTokenList { + return PaginatedTokenListFromJSONTyped(json, false); +} + +export function PaginatedTokenListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedTokenList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(TokenFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedTokenListToJSON(json: any): PaginatedTokenList { + return PaginatedTokenListToJSONTyped(json, false); +} + +export function PaginatedTokenListToJSONTyped( + value?: PaginatedTokenList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(TokenToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedTokenModelList.ts b/packages/client-ts/src/models/PaginatedTokenModelList.ts new file mode 100644 index 0000000000..24c50a6c3f --- /dev/null +++ b/packages/client-ts/src/models/PaginatedTokenModelList.ts @@ -0,0 +1,91 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; +import type { TokenModel } from "./TokenModel"; +import { TokenModelFromJSON, TokenModelToJSON } from "./TokenModel"; + +/** + * + * @export + * @interface PaginatedTokenModelList + */ +export interface PaginatedTokenModelList { + /** + * + * @type {Pagination} + * @memberof PaginatedTokenModelList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedTokenModelList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedTokenModelList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedTokenModelList interface. + */ +export function instanceOfPaginatedTokenModelList(value: object): value is PaginatedTokenModelList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedTokenModelListFromJSON(json: any): PaginatedTokenModelList { + return PaginatedTokenModelListFromJSONTyped(json, false); +} + +export function PaginatedTokenModelListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedTokenModelList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(TokenModelFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedTokenModelListToJSON(json: any): PaginatedTokenModelList { + return PaginatedTokenModelListToJSONTyped(json, false); +} + +export function PaginatedTokenModelListToJSONTyped( + value?: PaginatedTokenModelList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(TokenModelToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedUniquePasswordPolicyList.ts b/packages/client-ts/src/models/PaginatedUniquePasswordPolicyList.ts new file mode 100644 index 0000000000..e60254e496 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedUniquePasswordPolicyList.ts @@ -0,0 +1,97 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; +import type { UniquePasswordPolicy } from "./UniquePasswordPolicy"; +import { UniquePasswordPolicyFromJSON, UniquePasswordPolicyToJSON } from "./UniquePasswordPolicy"; + +/** + * + * @export + * @interface PaginatedUniquePasswordPolicyList + */ +export interface PaginatedUniquePasswordPolicyList { + /** + * + * @type {Pagination} + * @memberof PaginatedUniquePasswordPolicyList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedUniquePasswordPolicyList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedUniquePasswordPolicyList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedUniquePasswordPolicyList interface. + */ +export function instanceOfPaginatedUniquePasswordPolicyList( + value: object, +): value is PaginatedUniquePasswordPolicyList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedUniquePasswordPolicyListFromJSON( + json: any, +): PaginatedUniquePasswordPolicyList { + return PaginatedUniquePasswordPolicyListFromJSONTyped(json, false); +} + +export function PaginatedUniquePasswordPolicyListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedUniquePasswordPolicyList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(UniquePasswordPolicyFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedUniquePasswordPolicyListToJSON( + json: any, +): PaginatedUniquePasswordPolicyList { + return PaginatedUniquePasswordPolicyListToJSONTyped(json, false); +} + +export function PaginatedUniquePasswordPolicyListToJSONTyped( + value?: PaginatedUniquePasswordPolicyList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(UniquePasswordPolicyToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedUserConsentList.ts b/packages/client-ts/src/models/PaginatedUserConsentList.ts new file mode 100644 index 0000000000..7c2f90e30a --- /dev/null +++ b/packages/client-ts/src/models/PaginatedUserConsentList.ts @@ -0,0 +1,93 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; +import type { UserConsent } from "./UserConsent"; +import { UserConsentFromJSON, UserConsentToJSON } from "./UserConsent"; + +/** + * + * @export + * @interface PaginatedUserConsentList + */ +export interface PaginatedUserConsentList { + /** + * + * @type {Pagination} + * @memberof PaginatedUserConsentList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedUserConsentList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedUserConsentList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedUserConsentList interface. + */ +export function instanceOfPaginatedUserConsentList( + value: object, +): value is PaginatedUserConsentList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedUserConsentListFromJSON(json: any): PaginatedUserConsentList { + return PaginatedUserConsentListFromJSONTyped(json, false); +} + +export function PaginatedUserConsentListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedUserConsentList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(UserConsentFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedUserConsentListToJSON(json: any): PaginatedUserConsentList { + return PaginatedUserConsentListToJSONTyped(json, false); +} + +export function PaginatedUserConsentListToJSONTyped( + value?: PaginatedUserConsentList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(UserConsentToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedUserDeleteStageList.ts b/packages/client-ts/src/models/PaginatedUserDeleteStageList.ts new file mode 100644 index 0000000000..191b5b9536 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedUserDeleteStageList.ts @@ -0,0 +1,93 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; +import type { UserDeleteStage } from "./UserDeleteStage"; +import { UserDeleteStageFromJSON, UserDeleteStageToJSON } from "./UserDeleteStage"; + +/** + * + * @export + * @interface PaginatedUserDeleteStageList + */ +export interface PaginatedUserDeleteStageList { + /** + * + * @type {Pagination} + * @memberof PaginatedUserDeleteStageList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedUserDeleteStageList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedUserDeleteStageList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedUserDeleteStageList interface. + */ +export function instanceOfPaginatedUserDeleteStageList( + value: object, +): value is PaginatedUserDeleteStageList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedUserDeleteStageListFromJSON(json: any): PaginatedUserDeleteStageList { + return PaginatedUserDeleteStageListFromJSONTyped(json, false); +} + +export function PaginatedUserDeleteStageListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedUserDeleteStageList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(UserDeleteStageFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedUserDeleteStageListToJSON(json: any): PaginatedUserDeleteStageList { + return PaginatedUserDeleteStageListToJSONTyped(json, false); +} + +export function PaginatedUserDeleteStageListToJSONTyped( + value?: PaginatedUserDeleteStageList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(UserDeleteStageToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedUserKerberosSourceConnectionList.ts b/packages/client-ts/src/models/PaginatedUserKerberosSourceConnectionList.ts new file mode 100644 index 0000000000..3cc1a58d26 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedUserKerberosSourceConnectionList.ts @@ -0,0 +1,100 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; +import type { UserKerberosSourceConnection } from "./UserKerberosSourceConnection"; +import { + UserKerberosSourceConnectionFromJSON, + UserKerberosSourceConnectionToJSON, +} from "./UserKerberosSourceConnection"; + +/** + * + * @export + * @interface PaginatedUserKerberosSourceConnectionList + */ +export interface PaginatedUserKerberosSourceConnectionList { + /** + * + * @type {Pagination} + * @memberof PaginatedUserKerberosSourceConnectionList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedUserKerberosSourceConnectionList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedUserKerberosSourceConnectionList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedUserKerberosSourceConnectionList interface. + */ +export function instanceOfPaginatedUserKerberosSourceConnectionList( + value: object, +): value is PaginatedUserKerberosSourceConnectionList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedUserKerberosSourceConnectionListFromJSON( + json: any, +): PaginatedUserKerberosSourceConnectionList { + return PaginatedUserKerberosSourceConnectionListFromJSONTyped(json, false); +} + +export function PaginatedUserKerberosSourceConnectionListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedUserKerberosSourceConnectionList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(UserKerberosSourceConnectionFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedUserKerberosSourceConnectionListToJSON( + json: any, +): PaginatedUserKerberosSourceConnectionList { + return PaginatedUserKerberosSourceConnectionListToJSONTyped(json, false); +} + +export function PaginatedUserKerberosSourceConnectionListToJSONTyped( + value?: PaginatedUserKerberosSourceConnectionList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(UserKerberosSourceConnectionToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedUserLDAPSourceConnectionList.ts b/packages/client-ts/src/models/PaginatedUserLDAPSourceConnectionList.ts new file mode 100644 index 0000000000..dc3e4146eb --- /dev/null +++ b/packages/client-ts/src/models/PaginatedUserLDAPSourceConnectionList.ts @@ -0,0 +1,100 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; +import type { UserLDAPSourceConnection } from "./UserLDAPSourceConnection"; +import { + UserLDAPSourceConnectionFromJSON, + UserLDAPSourceConnectionToJSON, +} from "./UserLDAPSourceConnection"; + +/** + * + * @export + * @interface PaginatedUserLDAPSourceConnectionList + */ +export interface PaginatedUserLDAPSourceConnectionList { + /** + * + * @type {Pagination} + * @memberof PaginatedUserLDAPSourceConnectionList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedUserLDAPSourceConnectionList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedUserLDAPSourceConnectionList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedUserLDAPSourceConnectionList interface. + */ +export function instanceOfPaginatedUserLDAPSourceConnectionList( + value: object, +): value is PaginatedUserLDAPSourceConnectionList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedUserLDAPSourceConnectionListFromJSON( + json: any, +): PaginatedUserLDAPSourceConnectionList { + return PaginatedUserLDAPSourceConnectionListFromJSONTyped(json, false); +} + +export function PaginatedUserLDAPSourceConnectionListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedUserLDAPSourceConnectionList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(UserLDAPSourceConnectionFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedUserLDAPSourceConnectionListToJSON( + json: any, +): PaginatedUserLDAPSourceConnectionList { + return PaginatedUserLDAPSourceConnectionListToJSONTyped(json, false); +} + +export function PaginatedUserLDAPSourceConnectionListToJSONTyped( + value?: PaginatedUserLDAPSourceConnectionList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(UserLDAPSourceConnectionToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedUserList.ts b/packages/client-ts/src/models/PaginatedUserList.ts new file mode 100644 index 0000000000..a17fc23dab --- /dev/null +++ b/packages/client-ts/src/models/PaginatedUserList.ts @@ -0,0 +1,91 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; +import type { User } from "./User"; +import { UserFromJSON, UserToJSON } from "./User"; + +/** + * + * @export + * @interface PaginatedUserList + */ +export interface PaginatedUserList { + /** + * + * @type {Pagination} + * @memberof PaginatedUserList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedUserList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedUserList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedUserList interface. + */ +export function instanceOfPaginatedUserList(value: object): value is PaginatedUserList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedUserListFromJSON(json: any): PaginatedUserList { + return PaginatedUserListFromJSONTyped(json, false); +} + +export function PaginatedUserListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedUserList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(UserFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedUserListToJSON(json: any): PaginatedUserList { + return PaginatedUserListToJSONTyped(json, false); +} + +export function PaginatedUserListToJSONTyped( + value?: PaginatedUserList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(UserToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedUserLoginStageList.ts b/packages/client-ts/src/models/PaginatedUserLoginStageList.ts new file mode 100644 index 0000000000..96a28009ed --- /dev/null +++ b/packages/client-ts/src/models/PaginatedUserLoginStageList.ts @@ -0,0 +1,93 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; +import type { UserLoginStage } from "./UserLoginStage"; +import { UserLoginStageFromJSON, UserLoginStageToJSON } from "./UserLoginStage"; + +/** + * + * @export + * @interface PaginatedUserLoginStageList + */ +export interface PaginatedUserLoginStageList { + /** + * + * @type {Pagination} + * @memberof PaginatedUserLoginStageList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedUserLoginStageList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedUserLoginStageList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedUserLoginStageList interface. + */ +export function instanceOfPaginatedUserLoginStageList( + value: object, +): value is PaginatedUserLoginStageList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedUserLoginStageListFromJSON(json: any): PaginatedUserLoginStageList { + return PaginatedUserLoginStageListFromJSONTyped(json, false); +} + +export function PaginatedUserLoginStageListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedUserLoginStageList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(UserLoginStageFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedUserLoginStageListToJSON(json: any): PaginatedUserLoginStageList { + return PaginatedUserLoginStageListToJSONTyped(json, false); +} + +export function PaginatedUserLoginStageListToJSONTyped( + value?: PaginatedUserLoginStageList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(UserLoginStageToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedUserLogoutStageList.ts b/packages/client-ts/src/models/PaginatedUserLogoutStageList.ts new file mode 100644 index 0000000000..e51244fed8 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedUserLogoutStageList.ts @@ -0,0 +1,93 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; +import type { UserLogoutStage } from "./UserLogoutStage"; +import { UserLogoutStageFromJSON, UserLogoutStageToJSON } from "./UserLogoutStage"; + +/** + * + * @export + * @interface PaginatedUserLogoutStageList + */ +export interface PaginatedUserLogoutStageList { + /** + * + * @type {Pagination} + * @memberof PaginatedUserLogoutStageList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedUserLogoutStageList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedUserLogoutStageList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedUserLogoutStageList interface. + */ +export function instanceOfPaginatedUserLogoutStageList( + value: object, +): value is PaginatedUserLogoutStageList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedUserLogoutStageListFromJSON(json: any): PaginatedUserLogoutStageList { + return PaginatedUserLogoutStageListFromJSONTyped(json, false); +} + +export function PaginatedUserLogoutStageListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedUserLogoutStageList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(UserLogoutStageFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedUserLogoutStageListToJSON(json: any): PaginatedUserLogoutStageList { + return PaginatedUserLogoutStageListToJSONTyped(json, false); +} + +export function PaginatedUserLogoutStageListToJSONTyped( + value?: PaginatedUserLogoutStageList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(UserLogoutStageToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedUserOAuthSourceConnectionList.ts b/packages/client-ts/src/models/PaginatedUserOAuthSourceConnectionList.ts new file mode 100644 index 0000000000..8e1abea87e --- /dev/null +++ b/packages/client-ts/src/models/PaginatedUserOAuthSourceConnectionList.ts @@ -0,0 +1,100 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; +import type { UserOAuthSourceConnection } from "./UserOAuthSourceConnection"; +import { + UserOAuthSourceConnectionFromJSON, + UserOAuthSourceConnectionToJSON, +} from "./UserOAuthSourceConnection"; + +/** + * + * @export + * @interface PaginatedUserOAuthSourceConnectionList + */ +export interface PaginatedUserOAuthSourceConnectionList { + /** + * + * @type {Pagination} + * @memberof PaginatedUserOAuthSourceConnectionList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedUserOAuthSourceConnectionList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedUserOAuthSourceConnectionList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedUserOAuthSourceConnectionList interface. + */ +export function instanceOfPaginatedUserOAuthSourceConnectionList( + value: object, +): value is PaginatedUserOAuthSourceConnectionList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedUserOAuthSourceConnectionListFromJSON( + json: any, +): PaginatedUserOAuthSourceConnectionList { + return PaginatedUserOAuthSourceConnectionListFromJSONTyped(json, false); +} + +export function PaginatedUserOAuthSourceConnectionListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedUserOAuthSourceConnectionList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(UserOAuthSourceConnectionFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedUserOAuthSourceConnectionListToJSON( + json: any, +): PaginatedUserOAuthSourceConnectionList { + return PaginatedUserOAuthSourceConnectionListToJSONTyped(json, false); +} + +export function PaginatedUserOAuthSourceConnectionListToJSONTyped( + value?: PaginatedUserOAuthSourceConnectionList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(UserOAuthSourceConnectionToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedUserPlexSourceConnectionList.ts b/packages/client-ts/src/models/PaginatedUserPlexSourceConnectionList.ts new file mode 100644 index 0000000000..a9c8684844 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedUserPlexSourceConnectionList.ts @@ -0,0 +1,100 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; +import type { UserPlexSourceConnection } from "./UserPlexSourceConnection"; +import { + UserPlexSourceConnectionFromJSON, + UserPlexSourceConnectionToJSON, +} from "./UserPlexSourceConnection"; + +/** + * + * @export + * @interface PaginatedUserPlexSourceConnectionList + */ +export interface PaginatedUserPlexSourceConnectionList { + /** + * + * @type {Pagination} + * @memberof PaginatedUserPlexSourceConnectionList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedUserPlexSourceConnectionList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedUserPlexSourceConnectionList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedUserPlexSourceConnectionList interface. + */ +export function instanceOfPaginatedUserPlexSourceConnectionList( + value: object, +): value is PaginatedUserPlexSourceConnectionList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedUserPlexSourceConnectionListFromJSON( + json: any, +): PaginatedUserPlexSourceConnectionList { + return PaginatedUserPlexSourceConnectionListFromJSONTyped(json, false); +} + +export function PaginatedUserPlexSourceConnectionListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedUserPlexSourceConnectionList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(UserPlexSourceConnectionFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedUserPlexSourceConnectionListToJSON( + json: any, +): PaginatedUserPlexSourceConnectionList { + return PaginatedUserPlexSourceConnectionListToJSONTyped(json, false); +} + +export function PaginatedUserPlexSourceConnectionListToJSONTyped( + value?: PaginatedUserPlexSourceConnectionList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(UserPlexSourceConnectionToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedUserSAMLSourceConnectionList.ts b/packages/client-ts/src/models/PaginatedUserSAMLSourceConnectionList.ts new file mode 100644 index 0000000000..77192cc4e9 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedUserSAMLSourceConnectionList.ts @@ -0,0 +1,100 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; +import type { UserSAMLSourceConnection } from "./UserSAMLSourceConnection"; +import { + UserSAMLSourceConnectionFromJSON, + UserSAMLSourceConnectionToJSON, +} from "./UserSAMLSourceConnection"; + +/** + * + * @export + * @interface PaginatedUserSAMLSourceConnectionList + */ +export interface PaginatedUserSAMLSourceConnectionList { + /** + * + * @type {Pagination} + * @memberof PaginatedUserSAMLSourceConnectionList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedUserSAMLSourceConnectionList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedUserSAMLSourceConnectionList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedUserSAMLSourceConnectionList interface. + */ +export function instanceOfPaginatedUserSAMLSourceConnectionList( + value: object, +): value is PaginatedUserSAMLSourceConnectionList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedUserSAMLSourceConnectionListFromJSON( + json: any, +): PaginatedUserSAMLSourceConnectionList { + return PaginatedUserSAMLSourceConnectionListFromJSONTyped(json, false); +} + +export function PaginatedUserSAMLSourceConnectionListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedUserSAMLSourceConnectionList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(UserSAMLSourceConnectionFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedUserSAMLSourceConnectionListToJSON( + json: any, +): PaginatedUserSAMLSourceConnectionList { + return PaginatedUserSAMLSourceConnectionListToJSONTyped(json, false); +} + +export function PaginatedUserSAMLSourceConnectionListToJSONTyped( + value?: PaginatedUserSAMLSourceConnectionList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(UserSAMLSourceConnectionToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedUserSourceConnectionList.ts b/packages/client-ts/src/models/PaginatedUserSourceConnectionList.ts new file mode 100644 index 0000000000..b443dd5a7f --- /dev/null +++ b/packages/client-ts/src/models/PaginatedUserSourceConnectionList.ts @@ -0,0 +1,97 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; +import type { UserSourceConnection } from "./UserSourceConnection"; +import { UserSourceConnectionFromJSON, UserSourceConnectionToJSON } from "./UserSourceConnection"; + +/** + * + * @export + * @interface PaginatedUserSourceConnectionList + */ +export interface PaginatedUserSourceConnectionList { + /** + * + * @type {Pagination} + * @memberof PaginatedUserSourceConnectionList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedUserSourceConnectionList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedUserSourceConnectionList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedUserSourceConnectionList interface. + */ +export function instanceOfPaginatedUserSourceConnectionList( + value: object, +): value is PaginatedUserSourceConnectionList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedUserSourceConnectionListFromJSON( + json: any, +): PaginatedUserSourceConnectionList { + return PaginatedUserSourceConnectionListFromJSONTyped(json, false); +} + +export function PaginatedUserSourceConnectionListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedUserSourceConnectionList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(UserSourceConnectionFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedUserSourceConnectionListToJSON( + json: any, +): PaginatedUserSourceConnectionList { + return PaginatedUserSourceConnectionListToJSONTyped(json, false); +} + +export function PaginatedUserSourceConnectionListToJSONTyped( + value?: PaginatedUserSourceConnectionList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(UserSourceConnectionToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedUserTelegramSourceConnectionList.ts b/packages/client-ts/src/models/PaginatedUserTelegramSourceConnectionList.ts new file mode 100644 index 0000000000..d0817b0ca5 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedUserTelegramSourceConnectionList.ts @@ -0,0 +1,100 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; +import type { UserTelegramSourceConnection } from "./UserTelegramSourceConnection"; +import { + UserTelegramSourceConnectionFromJSON, + UserTelegramSourceConnectionToJSON, +} from "./UserTelegramSourceConnection"; + +/** + * + * @export + * @interface PaginatedUserTelegramSourceConnectionList + */ +export interface PaginatedUserTelegramSourceConnectionList { + /** + * + * @type {Pagination} + * @memberof PaginatedUserTelegramSourceConnectionList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedUserTelegramSourceConnectionList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedUserTelegramSourceConnectionList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedUserTelegramSourceConnectionList interface. + */ +export function instanceOfPaginatedUserTelegramSourceConnectionList( + value: object, +): value is PaginatedUserTelegramSourceConnectionList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedUserTelegramSourceConnectionListFromJSON( + json: any, +): PaginatedUserTelegramSourceConnectionList { + return PaginatedUserTelegramSourceConnectionListFromJSONTyped(json, false); +} + +export function PaginatedUserTelegramSourceConnectionListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedUserTelegramSourceConnectionList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(UserTelegramSourceConnectionFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedUserTelegramSourceConnectionListToJSON( + json: any, +): PaginatedUserTelegramSourceConnectionList { + return PaginatedUserTelegramSourceConnectionListToJSONTyped(json, false); +} + +export function PaginatedUserTelegramSourceConnectionListToJSONTyped( + value?: PaginatedUserTelegramSourceConnectionList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(UserTelegramSourceConnectionToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedUserWriteStageList.ts b/packages/client-ts/src/models/PaginatedUserWriteStageList.ts new file mode 100644 index 0000000000..b4823625c0 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedUserWriteStageList.ts @@ -0,0 +1,93 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; +import type { UserWriteStage } from "./UserWriteStage"; +import { UserWriteStageFromJSON, UserWriteStageToJSON } from "./UserWriteStage"; + +/** + * + * @export + * @interface PaginatedUserWriteStageList + */ +export interface PaginatedUserWriteStageList { + /** + * + * @type {Pagination} + * @memberof PaginatedUserWriteStageList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedUserWriteStageList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedUserWriteStageList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedUserWriteStageList interface. + */ +export function instanceOfPaginatedUserWriteStageList( + value: object, +): value is PaginatedUserWriteStageList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedUserWriteStageListFromJSON(json: any): PaginatedUserWriteStageList { + return PaginatedUserWriteStageListFromJSONTyped(json, false); +} + +export function PaginatedUserWriteStageListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedUserWriteStageList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(UserWriteStageFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedUserWriteStageListToJSON(json: any): PaginatedUserWriteStageList { + return PaginatedUserWriteStageListToJSONTyped(json, false); +} + +export function PaginatedUserWriteStageListToJSONTyped( + value?: PaginatedUserWriteStageList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(UserWriteStageToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedWSFederationProviderList.ts b/packages/client-ts/src/models/PaginatedWSFederationProviderList.ts new file mode 100644 index 0000000000..7229336da4 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedWSFederationProviderList.ts @@ -0,0 +1,97 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; +import type { WSFederationProvider } from "./WSFederationProvider"; +import { WSFederationProviderFromJSON, WSFederationProviderToJSON } from "./WSFederationProvider"; + +/** + * + * @export + * @interface PaginatedWSFederationProviderList + */ +export interface PaginatedWSFederationProviderList { + /** + * + * @type {Pagination} + * @memberof PaginatedWSFederationProviderList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedWSFederationProviderList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedWSFederationProviderList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedWSFederationProviderList interface. + */ +export function instanceOfPaginatedWSFederationProviderList( + value: object, +): value is PaginatedWSFederationProviderList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedWSFederationProviderListFromJSON( + json: any, +): PaginatedWSFederationProviderList { + return PaginatedWSFederationProviderListFromJSONTyped(json, false); +} + +export function PaginatedWSFederationProviderListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedWSFederationProviderList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(WSFederationProviderFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedWSFederationProviderListToJSON( + json: any, +): PaginatedWSFederationProviderList { + return PaginatedWSFederationProviderListToJSONTyped(json, false); +} + +export function PaginatedWSFederationProviderListToJSONTyped( + value?: PaginatedWSFederationProviderList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(WSFederationProviderToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedWebAuthnDeviceList.ts b/packages/client-ts/src/models/PaginatedWebAuthnDeviceList.ts new file mode 100644 index 0000000000..22ea3b4288 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedWebAuthnDeviceList.ts @@ -0,0 +1,93 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; +import type { WebAuthnDevice } from "./WebAuthnDevice"; +import { WebAuthnDeviceFromJSON, WebAuthnDeviceToJSON } from "./WebAuthnDevice"; + +/** + * + * @export + * @interface PaginatedWebAuthnDeviceList + */ +export interface PaginatedWebAuthnDeviceList { + /** + * + * @type {Pagination} + * @memberof PaginatedWebAuthnDeviceList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedWebAuthnDeviceList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedWebAuthnDeviceList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedWebAuthnDeviceList interface. + */ +export function instanceOfPaginatedWebAuthnDeviceList( + value: object, +): value is PaginatedWebAuthnDeviceList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedWebAuthnDeviceListFromJSON(json: any): PaginatedWebAuthnDeviceList { + return PaginatedWebAuthnDeviceListFromJSONTyped(json, false); +} + +export function PaginatedWebAuthnDeviceListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedWebAuthnDeviceList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(WebAuthnDeviceFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedWebAuthnDeviceListToJSON(json: any): PaginatedWebAuthnDeviceList { + return PaginatedWebAuthnDeviceListToJSONTyped(json, false); +} + +export function PaginatedWebAuthnDeviceListToJSONTyped( + value?: PaginatedWebAuthnDeviceList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(WebAuthnDeviceToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/PaginatedWebAuthnDeviceTypeList.ts b/packages/client-ts/src/models/PaginatedWebAuthnDeviceTypeList.ts new file mode 100644 index 0000000000..ef8e106d42 --- /dev/null +++ b/packages/client-ts/src/models/PaginatedWebAuthnDeviceTypeList.ts @@ -0,0 +1,95 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Pagination } from "./Pagination"; +import { PaginationFromJSON, PaginationToJSON } from "./Pagination"; +import type { WebAuthnDeviceType } from "./WebAuthnDeviceType"; +import { WebAuthnDeviceTypeFromJSON, WebAuthnDeviceTypeToJSON } from "./WebAuthnDeviceType"; + +/** + * + * @export + * @interface PaginatedWebAuthnDeviceTypeList + */ +export interface PaginatedWebAuthnDeviceTypeList { + /** + * + * @type {Pagination} + * @memberof PaginatedWebAuthnDeviceTypeList + */ + pagination: Pagination; + /** + * + * @type {Array} + * @memberof PaginatedWebAuthnDeviceTypeList + */ + results: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PaginatedWebAuthnDeviceTypeList + */ + autocomplete: { [key: string]: any }; +} + +/** + * Check if a given object implements the PaginatedWebAuthnDeviceTypeList interface. + */ +export function instanceOfPaginatedWebAuthnDeviceTypeList( + value: object, +): value is PaginatedWebAuthnDeviceTypeList { + if (!("pagination" in value) || value["pagination"] === undefined) return false; + if (!("results" in value) || value["results"] === undefined) return false; + if (!("autocomplete" in value) || value["autocomplete"] === undefined) return false; + return true; +} + +export function PaginatedWebAuthnDeviceTypeListFromJSON( + json: any, +): PaginatedWebAuthnDeviceTypeList { + return PaginatedWebAuthnDeviceTypeListFromJSONTyped(json, false); +} + +export function PaginatedWebAuthnDeviceTypeListFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PaginatedWebAuthnDeviceTypeList { + if (json == null) { + return json; + } + return { + pagination: PaginationFromJSON(json["pagination"]), + results: (json["results"] as Array).map(WebAuthnDeviceTypeFromJSON), + autocomplete: json["autocomplete"], + }; +} + +export function PaginatedWebAuthnDeviceTypeListToJSON(json: any): PaginatedWebAuthnDeviceTypeList { + return PaginatedWebAuthnDeviceTypeListToJSONTyped(json, false); +} + +export function PaginatedWebAuthnDeviceTypeListToJSONTyped( + value?: PaginatedWebAuthnDeviceTypeList | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pagination: PaginationToJSON(value["pagination"]), + results: (value["results"] as Array).map(WebAuthnDeviceTypeToJSON), + autocomplete: value["autocomplete"], + }; +} diff --git a/packages/client-ts/src/models/Pagination.ts b/packages/client-ts/src/models/Pagination.ts new file mode 100644 index 0000000000..e645a87e78 --- /dev/null +++ b/packages/client-ts/src/models/Pagination.ts @@ -0,0 +1,119 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + * @interface Pagination + */ +export interface Pagination { + /** + * + * @type {number} + * @memberof Pagination + */ + next: number; + /** + * + * @type {number} + * @memberof Pagination + */ + previous: number; + /** + * + * @type {number} + * @memberof Pagination + */ + count: number; + /** + * + * @type {number} + * @memberof Pagination + */ + current: number; + /** + * + * @type {number} + * @memberof Pagination + */ + totalPages: number; + /** + * + * @type {number} + * @memberof Pagination + */ + startIndex: number; + /** + * + * @type {number} + * @memberof Pagination + */ + endIndex: number; +} + +/** + * Check if a given object implements the Pagination interface. + */ +export function instanceOfPagination(value: object): value is Pagination { + if (!("next" in value) || value["next"] === undefined) return false; + if (!("previous" in value) || value["previous"] === undefined) return false; + if (!("count" in value) || value["count"] === undefined) return false; + if (!("current" in value) || value["current"] === undefined) return false; + if (!("totalPages" in value) || value["totalPages"] === undefined) return false; + if (!("startIndex" in value) || value["startIndex"] === undefined) return false; + if (!("endIndex" in value) || value["endIndex"] === undefined) return false; + return true; +} + +export function PaginationFromJSON(json: any): Pagination { + return PaginationFromJSONTyped(json, false); +} + +export function PaginationFromJSONTyped(json: any, ignoreDiscriminator: boolean): Pagination { + if (json == null) { + return json; + } + return { + next: json["next"], + previous: json["previous"], + count: json["count"], + current: json["current"], + totalPages: json["total_pages"], + startIndex: json["start_index"], + endIndex: json["end_index"], + }; +} + +export function PaginationToJSON(json: any): Pagination { + return PaginationToJSONTyped(json, false); +} + +export function PaginationToJSONTyped( + value?: Pagination | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + next: value["next"], + previous: value["previous"], + count: value["count"], + current: value["current"], + total_pages: value["totalPages"], + start_index: value["startIndex"], + end_index: value["endIndex"], + }; +} diff --git a/packages/client-ts/src/models/PartialGroup.ts b/packages/client-ts/src/models/PartialGroup.ts new file mode 100644 index 0000000000..4b540343fd --- /dev/null +++ b/packages/client-ts/src/models/PartialGroup.ts @@ -0,0 +1,97 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Partial Group Serializer, does not include child relations. + * @export + * @interface PartialGroup + */ +export interface PartialGroup { + /** + * + * @type {string} + * @memberof PartialGroup + */ + readonly pk: string; + /** + * Get a numerical, int32 ID for the group + * @type {number} + * @memberof PartialGroup + */ + readonly numPk: number; + /** + * + * @type {string} + * @memberof PartialGroup + */ + name: string; + /** + * Users added to this group will be superusers. + * @type {boolean} + * @memberof PartialGroup + */ + isSuperuser?: boolean; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PartialGroup + */ + attributes?: { [key: string]: any }; +} + +/** + * Check if a given object implements the PartialGroup interface. + */ +export function instanceOfPartialGroup(value: object): value is PartialGroup { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("numPk" in value) || value["numPk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + return true; +} + +export function PartialGroupFromJSON(json: any): PartialGroup { + return PartialGroupFromJSONTyped(json, false); +} + +export function PartialGroupFromJSONTyped(json: any, ignoreDiscriminator: boolean): PartialGroup { + if (json == null) { + return json; + } + return { + pk: json["pk"], + numPk: json["num_pk"], + name: json["name"], + isSuperuser: json["is_superuser"] == null ? undefined : json["is_superuser"], + attributes: json["attributes"] == null ? undefined : json["attributes"], + }; +} + +export function PartialGroupToJSON(json: any): PartialGroup { + return PartialGroupToJSONTyped(json, false); +} + +export function PartialGroupToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + is_superuser: value["isSuperuser"], + attributes: value["attributes"], + }; +} diff --git a/packages/client-ts/src/models/PartialUser.ts b/packages/client-ts/src/models/PartialUser.ts new file mode 100644 index 0000000000..1ce5380f08 --- /dev/null +++ b/packages/client-ts/src/models/PartialUser.ts @@ -0,0 +1,123 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Partial User Serializer, does not include child relations. + * @export + * @interface PartialUser + */ +export interface PartialUser { + /** + * + * @type {number} + * @memberof PartialUser + */ + readonly pk: number; + /** + * Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only. + * @type {string} + * @memberof PartialUser + */ + username: string; + /** + * User's display name. + * @type {string} + * @memberof PartialUser + */ + name: string; + /** + * Designates whether this user should be treated as active. Unselect this instead of deleting accounts. + * @type {boolean} + * @memberof PartialUser + */ + isActive?: boolean; + /** + * + * @type {Date} + * @memberof PartialUser + */ + lastLogin?: Date | null; + /** + * + * @type {string} + * @memberof PartialUser + */ + email?: string; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PartialUser + */ + attributes?: { [key: string]: any }; + /** + * + * @type {string} + * @memberof PartialUser + */ + readonly uid: string; +} + +/** + * Check if a given object implements the PartialUser interface. + */ +export function instanceOfPartialUser(value: object): value is PartialUser { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("username" in value) || value["username"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("uid" in value) || value["uid"] === undefined) return false; + return true; +} + +export function PartialUserFromJSON(json: any): PartialUser { + return PartialUserFromJSONTyped(json, false); +} + +export function PartialUserFromJSONTyped(json: any, ignoreDiscriminator: boolean): PartialUser { + if (json == null) { + return json; + } + return { + pk: json["pk"], + username: json["username"], + name: json["name"], + isActive: json["is_active"] == null ? undefined : json["is_active"], + lastLogin: json["last_login"] == null ? undefined : new Date(json["last_login"]), + email: json["email"] == null ? undefined : json["email"], + attributes: json["attributes"] == null ? undefined : json["attributes"], + uid: json["uid"], + }; +} + +export function PartialUserToJSON(json: any): PartialUser { + return PartialUserToJSONTyped(json, false); +} + +export function PartialUserToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + username: value["username"], + name: value["name"], + is_active: value["isActive"], + last_login: + value["lastLogin"] == null ? value["lastLogin"] : value["lastLogin"].toISOString(), + email: value["email"], + attributes: value["attributes"], + }; +} diff --git a/packages/client-ts/src/models/PasswordChallenge.ts b/packages/client-ts/src/models/PasswordChallenge.ts new file mode 100644 index 0000000000..e70747e1b4 --- /dev/null +++ b/packages/client-ts/src/models/PasswordChallenge.ts @@ -0,0 +1,123 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { ContextualFlowInfo } from "./ContextualFlowInfo"; +import { ContextualFlowInfoFromJSON, ContextualFlowInfoToJSON } from "./ContextualFlowInfo"; +import type { ErrorDetail } from "./ErrorDetail"; + +/** + * Password challenge UI fields + * @export + * @interface PasswordChallenge + */ +export interface PasswordChallenge { + /** + * + * @type {ContextualFlowInfo} + * @memberof PasswordChallenge + */ + flowInfo?: ContextualFlowInfo; + /** + * + * @type {string} + * @memberof PasswordChallenge + */ + component?: string; + /** + * + * @type {{ [key: string]: Array; }} + * @memberof PasswordChallenge + */ + responseErrors?: { [key: string]: Array }; + /** + * + * @type {string} + * @memberof PasswordChallenge + */ + pendingUser: string; + /** + * + * @type {string} + * @memberof PasswordChallenge + */ + pendingUserAvatar: string; + /** + * + * @type {string} + * @memberof PasswordChallenge + */ + recoveryUrl?: string; + /** + * + * @type {boolean} + * @memberof PasswordChallenge + */ + allowShowPassword?: boolean; +} + +/** + * Check if a given object implements the PasswordChallenge interface. + */ +export function instanceOfPasswordChallenge(value: object): value is PasswordChallenge { + if (!("pendingUser" in value) || value["pendingUser"] === undefined) return false; + if (!("pendingUserAvatar" in value) || value["pendingUserAvatar"] === undefined) return false; + return true; +} + +export function PasswordChallengeFromJSON(json: any): PasswordChallenge { + return PasswordChallengeFromJSONTyped(json, false); +} + +export function PasswordChallengeFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PasswordChallenge { + if (json == null) { + return json; + } + return { + flowInfo: + json["flow_info"] == null ? undefined : ContextualFlowInfoFromJSON(json["flow_info"]), + component: json["component"] == null ? undefined : json["component"], + responseErrors: json["response_errors"] == null ? undefined : json["response_errors"], + pendingUser: json["pending_user"], + pendingUserAvatar: json["pending_user_avatar"], + recoveryUrl: json["recovery_url"] == null ? undefined : json["recovery_url"], + allowShowPassword: + json["allow_show_password"] == null ? undefined : json["allow_show_password"], + }; +} + +export function PasswordChallengeToJSON(json: any): PasswordChallenge { + return PasswordChallengeToJSONTyped(json, false); +} + +export function PasswordChallengeToJSONTyped( + value?: PasswordChallenge | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + flow_info: ContextualFlowInfoToJSON(value["flowInfo"]), + component: value["component"], + response_errors: value["responseErrors"], + pending_user: value["pendingUser"], + pending_user_avatar: value["pendingUserAvatar"], + recovery_url: value["recoveryUrl"], + allow_show_password: value["allowShowPassword"], + }; +} diff --git a/packages/client-ts/src/models/PasswordChallengeResponseRequest.ts b/packages/client-ts/src/models/PasswordChallengeResponseRequest.ts new file mode 100644 index 0000000000..1d860eb546 --- /dev/null +++ b/packages/client-ts/src/models/PasswordChallengeResponseRequest.ts @@ -0,0 +1,82 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Password challenge response + * @export + * @interface PasswordChallengeResponseRequest + */ +export interface PasswordChallengeResponseRequest { + /** + * + * @type {string} + * @memberof PasswordChallengeResponseRequest + */ + component?: string; + /** + * + * @type {string} + * @memberof PasswordChallengeResponseRequest + */ + password: string; +} + +/** + * Check if a given object implements the PasswordChallengeResponseRequest interface. + */ +export function instanceOfPasswordChallengeResponseRequest( + value: object, +): value is PasswordChallengeResponseRequest { + if (!("password" in value) || value["password"] === undefined) return false; + return true; +} + +export function PasswordChallengeResponseRequestFromJSON( + json: any, +): PasswordChallengeResponseRequest { + return PasswordChallengeResponseRequestFromJSONTyped(json, false); +} + +export function PasswordChallengeResponseRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PasswordChallengeResponseRequest { + if (json == null) { + return json; + } + return { + component: json["component"] == null ? undefined : json["component"], + password: json["password"], + }; +} + +export function PasswordChallengeResponseRequestToJSON( + json: any, +): PasswordChallengeResponseRequest { + return PasswordChallengeResponseRequestToJSONTyped(json, false); +} + +export function PasswordChallengeResponseRequestToJSONTyped( + value?: PasswordChallengeResponseRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + component: value["component"], + password: value["password"], + }; +} diff --git a/packages/client-ts/src/models/PasswordExpiryPolicy.ts b/packages/client-ts/src/models/PasswordExpiryPolicy.ts new file mode 100644 index 0000000000..5cae9df5a7 --- /dev/null +++ b/packages/client-ts/src/models/PasswordExpiryPolicy.ts @@ -0,0 +1,144 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Password Expiry Policy Serializer + * @export + * @interface PasswordExpiryPolicy + */ +export interface PasswordExpiryPolicy { + /** + * + * @type {string} + * @memberof PasswordExpiryPolicy + */ + readonly pk: string; + /** + * + * @type {string} + * @memberof PasswordExpiryPolicy + */ + name: string; + /** + * When this option is enabled, all executions of this policy will be logged. By default, only execution errors are logged. + * @type {boolean} + * @memberof PasswordExpiryPolicy + */ + executionLogging?: boolean; + /** + * Get object component so that we know how to edit the object + * @type {string} + * @memberof PasswordExpiryPolicy + */ + readonly component: string; + /** + * Return object's verbose_name + * @type {string} + * @memberof PasswordExpiryPolicy + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof PasswordExpiryPolicy + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof PasswordExpiryPolicy + */ + readonly metaModelName: string; + /** + * Return objects policy is bound to + * @type {number} + * @memberof PasswordExpiryPolicy + */ + readonly boundTo: number; + /** + * + * @type {number} + * @memberof PasswordExpiryPolicy + */ + days: number; + /** + * + * @type {boolean} + * @memberof PasswordExpiryPolicy + */ + denyOnly?: boolean; +} + +/** + * Check if a given object implements the PasswordExpiryPolicy interface. + */ +export function instanceOfPasswordExpiryPolicy(value: object): value is PasswordExpiryPolicy { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + if (!("boundTo" in value) || value["boundTo"] === undefined) return false; + if (!("days" in value) || value["days"] === undefined) return false; + return true; +} + +export function PasswordExpiryPolicyFromJSON(json: any): PasswordExpiryPolicy { + return PasswordExpiryPolicyFromJSONTyped(json, false); +} + +export function PasswordExpiryPolicyFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PasswordExpiryPolicy { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + executionLogging: json["execution_logging"] == null ? undefined : json["execution_logging"], + component: json["component"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + boundTo: json["bound_to"], + days: json["days"], + denyOnly: json["deny_only"] == null ? undefined : json["deny_only"], + }; +} + +export function PasswordExpiryPolicyToJSON(json: any): PasswordExpiryPolicy { + return PasswordExpiryPolicyToJSONTyped(json, false); +} + +export function PasswordExpiryPolicyToJSONTyped( + value?: Omit< + PasswordExpiryPolicy, + "pk" | "component" | "verbose_name" | "verbose_name_plural" | "meta_model_name" | "bound_to" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + execution_logging: value["executionLogging"], + days: value["days"], + deny_only: value["denyOnly"], + }; +} diff --git a/packages/client-ts/src/models/PasswordExpiryPolicyRequest.ts b/packages/client-ts/src/models/PasswordExpiryPolicyRequest.ts new file mode 100644 index 0000000000..dbf9efa45d --- /dev/null +++ b/packages/client-ts/src/models/PasswordExpiryPolicyRequest.ts @@ -0,0 +1,95 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Password Expiry Policy Serializer + * @export + * @interface PasswordExpiryPolicyRequest + */ +export interface PasswordExpiryPolicyRequest { + /** + * + * @type {string} + * @memberof PasswordExpiryPolicyRequest + */ + name: string; + /** + * When this option is enabled, all executions of this policy will be logged. By default, only execution errors are logged. + * @type {boolean} + * @memberof PasswordExpiryPolicyRequest + */ + executionLogging?: boolean; + /** + * + * @type {number} + * @memberof PasswordExpiryPolicyRequest + */ + days: number; + /** + * + * @type {boolean} + * @memberof PasswordExpiryPolicyRequest + */ + denyOnly?: boolean; +} + +/** + * Check if a given object implements the PasswordExpiryPolicyRequest interface. + */ +export function instanceOfPasswordExpiryPolicyRequest( + value: object, +): value is PasswordExpiryPolicyRequest { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("days" in value) || value["days"] === undefined) return false; + return true; +} + +export function PasswordExpiryPolicyRequestFromJSON(json: any): PasswordExpiryPolicyRequest { + return PasswordExpiryPolicyRequestFromJSONTyped(json, false); +} + +export function PasswordExpiryPolicyRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PasswordExpiryPolicyRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + executionLogging: json["execution_logging"] == null ? undefined : json["execution_logging"], + days: json["days"], + denyOnly: json["deny_only"] == null ? undefined : json["deny_only"], + }; +} + +export function PasswordExpiryPolicyRequestToJSON(json: any): PasswordExpiryPolicyRequest { + return PasswordExpiryPolicyRequestToJSONTyped(json, false); +} + +export function PasswordExpiryPolicyRequestToJSONTyped( + value?: PasswordExpiryPolicyRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + execution_logging: value["executionLogging"], + days: value["days"], + deny_only: value["denyOnly"], + }; +} diff --git a/packages/client-ts/src/models/PasswordPolicy.ts b/packages/client-ts/src/models/PasswordPolicy.ts new file mode 100644 index 0000000000..5a1496209b --- /dev/null +++ b/packages/client-ts/src/models/PasswordPolicy.ts @@ -0,0 +1,235 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Password Policy Serializer + * @export + * @interface PasswordPolicy + */ +export interface PasswordPolicy { + /** + * + * @type {string} + * @memberof PasswordPolicy + */ + readonly pk: string; + /** + * + * @type {string} + * @memberof PasswordPolicy + */ + name: string; + /** + * When this option is enabled, all executions of this policy will be logged. By default, only execution errors are logged. + * @type {boolean} + * @memberof PasswordPolicy + */ + executionLogging?: boolean; + /** + * Get object component so that we know how to edit the object + * @type {string} + * @memberof PasswordPolicy + */ + readonly component: string; + /** + * Return object's verbose_name + * @type {string} + * @memberof PasswordPolicy + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof PasswordPolicy + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof PasswordPolicy + */ + readonly metaModelName: string; + /** + * Return objects policy is bound to + * @type {number} + * @memberof PasswordPolicy + */ + readonly boundTo: number; + /** + * Field key to check, field keys defined in Prompt stages are available. + * @type {string} + * @memberof PasswordPolicy + */ + passwordField?: string; + /** + * + * @type {number} + * @memberof PasswordPolicy + */ + amountDigits?: number; + /** + * + * @type {number} + * @memberof PasswordPolicy + */ + amountUppercase?: number; + /** + * + * @type {number} + * @memberof PasswordPolicy + */ + amountLowercase?: number; + /** + * + * @type {number} + * @memberof PasswordPolicy + */ + amountSymbols?: number; + /** + * + * @type {number} + * @memberof PasswordPolicy + */ + lengthMin?: number; + /** + * + * @type {string} + * @memberof PasswordPolicy + */ + symbolCharset?: string; + /** + * + * @type {string} + * @memberof PasswordPolicy + */ + errorMessage?: string; + /** + * + * @type {boolean} + * @memberof PasswordPolicy + */ + checkStaticRules?: boolean; + /** + * + * @type {boolean} + * @memberof PasswordPolicy + */ + checkHaveIBeenPwned?: boolean; + /** + * + * @type {boolean} + * @memberof PasswordPolicy + */ + checkZxcvbn?: boolean; + /** + * How many times the password hash is allowed to be on haveibeenpwned + * @type {number} + * @memberof PasswordPolicy + */ + hibpAllowedCount?: number; + /** + * If the zxcvbn score is equal or less than this value, the policy will fail. + * @type {number} + * @memberof PasswordPolicy + */ + zxcvbnScoreThreshold?: number; +} + +/** + * Check if a given object implements the PasswordPolicy interface. + */ +export function instanceOfPasswordPolicy(value: object): value is PasswordPolicy { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + if (!("boundTo" in value) || value["boundTo"] === undefined) return false; + return true; +} + +export function PasswordPolicyFromJSON(json: any): PasswordPolicy { + return PasswordPolicyFromJSONTyped(json, false); +} + +export function PasswordPolicyFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PasswordPolicy { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + executionLogging: json["execution_logging"] == null ? undefined : json["execution_logging"], + component: json["component"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + boundTo: json["bound_to"], + passwordField: json["password_field"] == null ? undefined : json["password_field"], + amountDigits: json["amount_digits"] == null ? undefined : json["amount_digits"], + amountUppercase: json["amount_uppercase"] == null ? undefined : json["amount_uppercase"], + amountLowercase: json["amount_lowercase"] == null ? undefined : json["amount_lowercase"], + amountSymbols: json["amount_symbols"] == null ? undefined : json["amount_symbols"], + lengthMin: json["length_min"] == null ? undefined : json["length_min"], + symbolCharset: json["symbol_charset"] == null ? undefined : json["symbol_charset"], + errorMessage: json["error_message"] == null ? undefined : json["error_message"], + checkStaticRules: + json["check_static_rules"] == null ? undefined : json["check_static_rules"], + checkHaveIBeenPwned: + json["check_have_i_been_pwned"] == null ? undefined : json["check_have_i_been_pwned"], + checkZxcvbn: json["check_zxcvbn"] == null ? undefined : json["check_zxcvbn"], + hibpAllowedCount: + json["hibp_allowed_count"] == null ? undefined : json["hibp_allowed_count"], + zxcvbnScoreThreshold: + json["zxcvbn_score_threshold"] == null ? undefined : json["zxcvbn_score_threshold"], + }; +} + +export function PasswordPolicyToJSON(json: any): PasswordPolicy { + return PasswordPolicyToJSONTyped(json, false); +} + +export function PasswordPolicyToJSONTyped( + value?: Omit< + PasswordPolicy, + "pk" | "component" | "verbose_name" | "verbose_name_plural" | "meta_model_name" | "bound_to" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + execution_logging: value["executionLogging"], + password_field: value["passwordField"], + amount_digits: value["amountDigits"], + amount_uppercase: value["amountUppercase"], + amount_lowercase: value["amountLowercase"], + amount_symbols: value["amountSymbols"], + length_min: value["lengthMin"], + symbol_charset: value["symbolCharset"], + error_message: value["errorMessage"], + check_static_rules: value["checkStaticRules"], + check_have_i_been_pwned: value["checkHaveIBeenPwned"], + check_zxcvbn: value["checkZxcvbn"], + hibp_allowed_count: value["hibpAllowedCount"], + zxcvbn_score_threshold: value["zxcvbnScoreThreshold"], + }; +} diff --git a/packages/client-ts/src/models/PasswordPolicyRequest.ts b/packages/client-ts/src/models/PasswordPolicyRequest.ts new file mode 100644 index 0000000000..d28f45e117 --- /dev/null +++ b/packages/client-ts/src/models/PasswordPolicyRequest.ts @@ -0,0 +1,184 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Password Policy Serializer + * @export + * @interface PasswordPolicyRequest + */ +export interface PasswordPolicyRequest { + /** + * + * @type {string} + * @memberof PasswordPolicyRequest + */ + name: string; + /** + * When this option is enabled, all executions of this policy will be logged. By default, only execution errors are logged. + * @type {boolean} + * @memberof PasswordPolicyRequest + */ + executionLogging?: boolean; + /** + * Field key to check, field keys defined in Prompt stages are available. + * @type {string} + * @memberof PasswordPolicyRequest + */ + passwordField?: string; + /** + * + * @type {number} + * @memberof PasswordPolicyRequest + */ + amountDigits?: number; + /** + * + * @type {number} + * @memberof PasswordPolicyRequest + */ + amountUppercase?: number; + /** + * + * @type {number} + * @memberof PasswordPolicyRequest + */ + amountLowercase?: number; + /** + * + * @type {number} + * @memberof PasswordPolicyRequest + */ + amountSymbols?: number; + /** + * + * @type {number} + * @memberof PasswordPolicyRequest + */ + lengthMin?: number; + /** + * + * @type {string} + * @memberof PasswordPolicyRequest + */ + symbolCharset?: string; + /** + * + * @type {string} + * @memberof PasswordPolicyRequest + */ + errorMessage?: string; + /** + * + * @type {boolean} + * @memberof PasswordPolicyRequest + */ + checkStaticRules?: boolean; + /** + * + * @type {boolean} + * @memberof PasswordPolicyRequest + */ + checkHaveIBeenPwned?: boolean; + /** + * + * @type {boolean} + * @memberof PasswordPolicyRequest + */ + checkZxcvbn?: boolean; + /** + * How many times the password hash is allowed to be on haveibeenpwned + * @type {number} + * @memberof PasswordPolicyRequest + */ + hibpAllowedCount?: number; + /** + * If the zxcvbn score is equal or less than this value, the policy will fail. + * @type {number} + * @memberof PasswordPolicyRequest + */ + zxcvbnScoreThreshold?: number; +} + +/** + * Check if a given object implements the PasswordPolicyRequest interface. + */ +export function instanceOfPasswordPolicyRequest(value: object): value is PasswordPolicyRequest { + if (!("name" in value) || value["name"] === undefined) return false; + return true; +} + +export function PasswordPolicyRequestFromJSON(json: any): PasswordPolicyRequest { + return PasswordPolicyRequestFromJSONTyped(json, false); +} + +export function PasswordPolicyRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PasswordPolicyRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + executionLogging: json["execution_logging"] == null ? undefined : json["execution_logging"], + passwordField: json["password_field"] == null ? undefined : json["password_field"], + amountDigits: json["amount_digits"] == null ? undefined : json["amount_digits"], + amountUppercase: json["amount_uppercase"] == null ? undefined : json["amount_uppercase"], + amountLowercase: json["amount_lowercase"] == null ? undefined : json["amount_lowercase"], + amountSymbols: json["amount_symbols"] == null ? undefined : json["amount_symbols"], + lengthMin: json["length_min"] == null ? undefined : json["length_min"], + symbolCharset: json["symbol_charset"] == null ? undefined : json["symbol_charset"], + errorMessage: json["error_message"] == null ? undefined : json["error_message"], + checkStaticRules: + json["check_static_rules"] == null ? undefined : json["check_static_rules"], + checkHaveIBeenPwned: + json["check_have_i_been_pwned"] == null ? undefined : json["check_have_i_been_pwned"], + checkZxcvbn: json["check_zxcvbn"] == null ? undefined : json["check_zxcvbn"], + hibpAllowedCount: + json["hibp_allowed_count"] == null ? undefined : json["hibp_allowed_count"], + zxcvbnScoreThreshold: + json["zxcvbn_score_threshold"] == null ? undefined : json["zxcvbn_score_threshold"], + }; +} + +export function PasswordPolicyRequestToJSON(json: any): PasswordPolicyRequest { + return PasswordPolicyRequestToJSONTyped(json, false); +} + +export function PasswordPolicyRequestToJSONTyped( + value?: PasswordPolicyRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + execution_logging: value["executionLogging"], + password_field: value["passwordField"], + amount_digits: value["amountDigits"], + amount_uppercase: value["amountUppercase"], + amount_lowercase: value["amountLowercase"], + amount_symbols: value["amountSymbols"], + length_min: value["lengthMin"], + symbol_charset: value["symbolCharset"], + error_message: value["errorMessage"], + check_static_rules: value["checkStaticRules"], + check_have_i_been_pwned: value["checkHaveIBeenPwned"], + check_zxcvbn: value["checkZxcvbn"], + hibp_allowed_count: value["hibpAllowedCount"], + zxcvbn_score_threshold: value["zxcvbnScoreThreshold"], + }; +} diff --git a/packages/client-ts/src/models/PasswordStage.ts b/packages/client-ts/src/models/PasswordStage.ts new file mode 100644 index 0000000000..16a1b4f7a0 --- /dev/null +++ b/packages/client-ts/src/models/PasswordStage.ts @@ -0,0 +1,158 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { BackendsEnum } from "./BackendsEnum"; +import { BackendsEnumFromJSON, BackendsEnumToJSON } from "./BackendsEnum"; +import type { FlowSet } from "./FlowSet"; +import { FlowSetFromJSON } from "./FlowSet"; + +/** + * PasswordStage Serializer + * @export + * @interface PasswordStage + */ +export interface PasswordStage { + /** + * + * @type {string} + * @memberof PasswordStage + */ + readonly pk: string; + /** + * + * @type {string} + * @memberof PasswordStage + */ + name: string; + /** + * Get object type so that we know how to edit the object + * @type {string} + * @memberof PasswordStage + */ + readonly component: string; + /** + * Return object's verbose_name + * @type {string} + * @memberof PasswordStage + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof PasswordStage + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof PasswordStage + */ + readonly metaModelName: string; + /** + * + * @type {Array} + * @memberof PasswordStage + */ + readonly flowSet: Array; + /** + * Selection of backends to test the password against. + * @type {Array} + * @memberof PasswordStage + */ + backends: Array; + /** + * Flow used by an authenticated user to configure this Stage. If empty, user will not be able to configure this stage. + * @type {string} + * @memberof PasswordStage + */ + configureFlow?: string | null; + /** + * How many attempts a user has before the flow is canceled. To lock the user out, use a reputation policy and a user_write stage. + * @type {number} + * @memberof PasswordStage + */ + failedAttemptsBeforeCancel?: number; + /** + * When enabled, provides a 'show password' button with the password input field. + * @type {boolean} + * @memberof PasswordStage + */ + allowShowPassword?: boolean; +} + +/** + * Check if a given object implements the PasswordStage interface. + */ +export function instanceOfPasswordStage(value: object): value is PasswordStage { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + if (!("flowSet" in value) || value["flowSet"] === undefined) return false; + if (!("backends" in value) || value["backends"] === undefined) return false; + return true; +} + +export function PasswordStageFromJSON(json: any): PasswordStage { + return PasswordStageFromJSONTyped(json, false); +} + +export function PasswordStageFromJSONTyped(json: any, ignoreDiscriminator: boolean): PasswordStage { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + component: json["component"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + flowSet: (json["flow_set"] as Array).map(FlowSetFromJSON), + backends: (json["backends"] as Array).map(BackendsEnumFromJSON), + configureFlow: json["configure_flow"] == null ? undefined : json["configure_flow"], + failedAttemptsBeforeCancel: + json["failed_attempts_before_cancel"] == null + ? undefined + : json["failed_attempts_before_cancel"], + allowShowPassword: + json["allow_show_password"] == null ? undefined : json["allow_show_password"], + }; +} + +export function PasswordStageToJSON(json: any): PasswordStage { + return PasswordStageToJSONTyped(json, false); +} + +export function PasswordStageToJSONTyped( + value?: Omit< + PasswordStage, + "pk" | "component" | "verbose_name" | "verbose_name_plural" | "meta_model_name" | "flow_set" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + backends: (value["backends"] as Array).map(BackendsEnumToJSON), + configure_flow: value["configureFlow"], + failed_attempts_before_cancel: value["failedAttemptsBeforeCancel"], + allow_show_password: value["allowShowPassword"], + }; +} diff --git a/packages/client-ts/src/models/PasswordStageRequest.ts b/packages/client-ts/src/models/PasswordStageRequest.ts new file mode 100644 index 0000000000..e7ec8daaa9 --- /dev/null +++ b/packages/client-ts/src/models/PasswordStageRequest.ts @@ -0,0 +1,108 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { BackendsEnum } from "./BackendsEnum"; +import { BackendsEnumFromJSON, BackendsEnumToJSON } from "./BackendsEnum"; + +/** + * PasswordStage Serializer + * @export + * @interface PasswordStageRequest + */ +export interface PasswordStageRequest { + /** + * + * @type {string} + * @memberof PasswordStageRequest + */ + name: string; + /** + * Selection of backends to test the password against. + * @type {Array} + * @memberof PasswordStageRequest + */ + backends: Array; + /** + * Flow used by an authenticated user to configure this Stage. If empty, user will not be able to configure this stage. + * @type {string} + * @memberof PasswordStageRequest + */ + configureFlow?: string | null; + /** + * How many attempts a user has before the flow is canceled. To lock the user out, use a reputation policy and a user_write stage. + * @type {number} + * @memberof PasswordStageRequest + */ + failedAttemptsBeforeCancel?: number; + /** + * When enabled, provides a 'show password' button with the password input field. + * @type {boolean} + * @memberof PasswordStageRequest + */ + allowShowPassword?: boolean; +} + +/** + * Check if a given object implements the PasswordStageRequest interface. + */ +export function instanceOfPasswordStageRequest(value: object): value is PasswordStageRequest { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("backends" in value) || value["backends"] === undefined) return false; + return true; +} + +export function PasswordStageRequestFromJSON(json: any): PasswordStageRequest { + return PasswordStageRequestFromJSONTyped(json, false); +} + +export function PasswordStageRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PasswordStageRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + backends: (json["backends"] as Array).map(BackendsEnumFromJSON), + configureFlow: json["configure_flow"] == null ? undefined : json["configure_flow"], + failedAttemptsBeforeCancel: + json["failed_attempts_before_cancel"] == null + ? undefined + : json["failed_attempts_before_cancel"], + allowShowPassword: + json["allow_show_password"] == null ? undefined : json["allow_show_password"], + }; +} + +export function PasswordStageRequestToJSON(json: any): PasswordStageRequest { + return PasswordStageRequestToJSONTyped(json, false); +} + +export function PasswordStageRequestToJSONTyped( + value?: PasswordStageRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + backends: (value["backends"] as Array).map(BackendsEnumToJSON), + configure_flow: value["configureFlow"], + failed_attempts_before_cancel: value["failedAttemptsBeforeCancel"], + allow_show_password: value["allowShowPassword"], + }; +} diff --git a/packages/client-ts/src/models/PatchedAccountLockdownStageRequest.ts b/packages/client-ts/src/models/PatchedAccountLockdownStageRequest.ts new file mode 100644 index 0000000000..dfcf5cb567 --- /dev/null +++ b/packages/client-ts/src/models/PatchedAccountLockdownStageRequest.ts @@ -0,0 +1,117 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * AccountLockdownStage Serializer + * @export + * @interface PatchedAccountLockdownStageRequest + */ +export interface PatchedAccountLockdownStageRequest { + /** + * + * @type {string} + * @memberof PatchedAccountLockdownStageRequest + */ + name?: string; + /** + * Deactivate the user account (set is_active to False) + * @type {boolean} + * @memberof PatchedAccountLockdownStageRequest + */ + deactivateUser?: boolean; + /** + * Set an unusable password for the user + * @type {boolean} + * @memberof PatchedAccountLockdownStageRequest + */ + setUnusablePassword?: boolean; + /** + * Delete all active sessions for the user + * @type {boolean} + * @memberof PatchedAccountLockdownStageRequest + */ + deleteSessions?: boolean; + /** + * Revoke all tokens for the user (API, app password, recovery, verification, OAuth) + * @type {boolean} + * @memberof PatchedAccountLockdownStageRequest + */ + revokeTokens?: boolean; + /** + * Flow to redirect users to after self-service lockdown. This flow should not require authentication since the user's session is deleted. + * @type {string} + * @memberof PatchedAccountLockdownStageRequest + */ + selfServiceCompletionFlow?: string | null; +} + +/** + * Check if a given object implements the PatchedAccountLockdownStageRequest interface. + */ +export function instanceOfPatchedAccountLockdownStageRequest( + value: object, +): value is PatchedAccountLockdownStageRequest { + return true; +} + +export function PatchedAccountLockdownStageRequestFromJSON( + json: any, +): PatchedAccountLockdownStageRequest { + return PatchedAccountLockdownStageRequestFromJSONTyped(json, false); +} + +export function PatchedAccountLockdownStageRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedAccountLockdownStageRequest { + if (json == null) { + return json; + } + return { + name: json["name"] == null ? undefined : json["name"], + deactivateUser: json["deactivate_user"] == null ? undefined : json["deactivate_user"], + setUnusablePassword: + json["set_unusable_password"] == null ? undefined : json["set_unusable_password"], + deleteSessions: json["delete_sessions"] == null ? undefined : json["delete_sessions"], + revokeTokens: json["revoke_tokens"] == null ? undefined : json["revoke_tokens"], + selfServiceCompletionFlow: + json["self_service_completion_flow"] == null + ? undefined + : json["self_service_completion_flow"], + }; +} + +export function PatchedAccountLockdownStageRequestToJSON( + json: any, +): PatchedAccountLockdownStageRequest { + return PatchedAccountLockdownStageRequestToJSONTyped(json, false); +} + +export function PatchedAccountLockdownStageRequestToJSONTyped( + value?: PatchedAccountLockdownStageRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + deactivate_user: value["deactivateUser"], + set_unusable_password: value["setUnusablePassword"], + delete_sessions: value["deleteSessions"], + revoke_tokens: value["revokeTokens"], + self_service_completion_flow: value["selfServiceCompletionFlow"], + }; +} diff --git a/packages/client-ts/src/models/PatchedAgentConnectorRequest.ts b/packages/client-ts/src/models/PatchedAgentConnectorRequest.ts new file mode 100644 index 0000000000..9be196636a --- /dev/null +++ b/packages/client-ts/src/models/PatchedAgentConnectorRequest.ts @@ -0,0 +1,183 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + * @interface PatchedAgentConnectorRequest + */ +export interface PatchedAgentConnectorRequest { + /** + * + * @type {string} + * @memberof PatchedAgentConnectorRequest + */ + connectorUuid?: string; + /** + * + * @type {string} + * @memberof PatchedAgentConnectorRequest + */ + name?: string; + /** + * + * @type {boolean} + * @memberof PatchedAgentConnectorRequest + */ + enabled?: boolean; + /** + * + * @type {string} + * @memberof PatchedAgentConnectorRequest + */ + snapshotExpiry?: string; + /** + * + * @type {string} + * @memberof PatchedAgentConnectorRequest + */ + authSessionDuration?: string; + /** + * + * @type {boolean} + * @memberof PatchedAgentConnectorRequest + */ + authTerminateSessionOnExpiry?: boolean; + /** + * + * @type {string} + * @memberof PatchedAgentConnectorRequest + */ + refreshInterval?: string; + /** + * + * @type {string} + * @memberof PatchedAgentConnectorRequest + */ + authorizationFlow?: string | null; + /** + * + * @type {number} + * @memberof PatchedAgentConnectorRequest + */ + nssUidOffset?: number; + /** + * + * @type {number} + * @memberof PatchedAgentConnectorRequest + */ + nssGidOffset?: number; + /** + * + * @type {string} + * @memberof PatchedAgentConnectorRequest + */ + challengeKey?: string | null; + /** + * + * @type {string} + * @memberof PatchedAgentConnectorRequest + */ + challengeIdleTimeout?: string; + /** + * + * @type {boolean} + * @memberof PatchedAgentConnectorRequest + */ + challengeTriggerCheckIn?: boolean; + /** + * + * @type {Array} + * @memberof PatchedAgentConnectorRequest + */ + jwtFederationProviders?: Array; +} + +/** + * Check if a given object implements the PatchedAgentConnectorRequest interface. + */ +export function instanceOfPatchedAgentConnectorRequest( + value: object, +): value is PatchedAgentConnectorRequest { + return true; +} + +export function PatchedAgentConnectorRequestFromJSON(json: any): PatchedAgentConnectorRequest { + return PatchedAgentConnectorRequestFromJSONTyped(json, false); +} + +export function PatchedAgentConnectorRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedAgentConnectorRequest { + if (json == null) { + return json; + } + return { + connectorUuid: json["connector_uuid"] == null ? undefined : json["connector_uuid"], + name: json["name"] == null ? undefined : json["name"], + enabled: json["enabled"] == null ? undefined : json["enabled"], + snapshotExpiry: json["snapshot_expiry"] == null ? undefined : json["snapshot_expiry"], + authSessionDuration: + json["auth_session_duration"] == null ? undefined : json["auth_session_duration"], + authTerminateSessionOnExpiry: + json["auth_terminate_session_on_expiry"] == null + ? undefined + : json["auth_terminate_session_on_expiry"], + refreshInterval: json["refresh_interval"] == null ? undefined : json["refresh_interval"], + authorizationFlow: + json["authorization_flow"] == null ? undefined : json["authorization_flow"], + nssUidOffset: json["nss_uid_offset"] == null ? undefined : json["nss_uid_offset"], + nssGidOffset: json["nss_gid_offset"] == null ? undefined : json["nss_gid_offset"], + challengeKey: json["challenge_key"] == null ? undefined : json["challenge_key"], + challengeIdleTimeout: + json["challenge_idle_timeout"] == null ? undefined : json["challenge_idle_timeout"], + challengeTriggerCheckIn: + json["challenge_trigger_check_in"] == null + ? undefined + : json["challenge_trigger_check_in"], + jwtFederationProviders: + json["jwt_federation_providers"] == null ? undefined : json["jwt_federation_providers"], + }; +} + +export function PatchedAgentConnectorRequestToJSON(json: any): PatchedAgentConnectorRequest { + return PatchedAgentConnectorRequestToJSONTyped(json, false); +} + +export function PatchedAgentConnectorRequestToJSONTyped( + value?: PatchedAgentConnectorRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + connector_uuid: value["connectorUuid"], + name: value["name"], + enabled: value["enabled"], + snapshot_expiry: value["snapshotExpiry"], + auth_session_duration: value["authSessionDuration"], + auth_terminate_session_on_expiry: value["authTerminateSessionOnExpiry"], + refresh_interval: value["refreshInterval"], + authorization_flow: value["authorizationFlow"], + nss_uid_offset: value["nssUidOffset"], + nss_gid_offset: value["nssGidOffset"], + challenge_key: value["challengeKey"], + challenge_idle_timeout: value["challengeIdleTimeout"], + challenge_trigger_check_in: value["challengeTriggerCheckIn"], + jwt_federation_providers: value["jwtFederationProviders"], + }; +} diff --git a/packages/client-ts/src/models/PatchedAppleIndependentSecureEnclaveRequest.ts b/packages/client-ts/src/models/PatchedAppleIndependentSecureEnclaveRequest.ts new file mode 100644 index 0000000000..52e283b3c5 --- /dev/null +++ b/packages/client-ts/src/models/PatchedAppleIndependentSecureEnclaveRequest.ts @@ -0,0 +1,107 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + * @interface PatchedAppleIndependentSecureEnclaveRequest + */ +export interface PatchedAppleIndependentSecureEnclaveRequest { + /** + * + * @type {string} + * @memberof PatchedAppleIndependentSecureEnclaveRequest + */ + uuid?: string; + /** + * The user that this device belongs to. + * @type {number} + * @memberof PatchedAppleIndependentSecureEnclaveRequest + */ + user?: number; + /** + * + * @type {string} + * @memberof PatchedAppleIndependentSecureEnclaveRequest + */ + appleSecureEnclaveKey?: string; + /** + * + * @type {string} + * @memberof PatchedAppleIndependentSecureEnclaveRequest + */ + appleEnclaveKeyId?: string; + /** + * + * @type {string} + * @memberof PatchedAppleIndependentSecureEnclaveRequest + */ + deviceType?: string; +} + +/** + * Check if a given object implements the PatchedAppleIndependentSecureEnclaveRequest interface. + */ +export function instanceOfPatchedAppleIndependentSecureEnclaveRequest( + value: object, +): value is PatchedAppleIndependentSecureEnclaveRequest { + return true; +} + +export function PatchedAppleIndependentSecureEnclaveRequestFromJSON( + json: any, +): PatchedAppleIndependentSecureEnclaveRequest { + return PatchedAppleIndependentSecureEnclaveRequestFromJSONTyped(json, false); +} + +export function PatchedAppleIndependentSecureEnclaveRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedAppleIndependentSecureEnclaveRequest { + if (json == null) { + return json; + } + return { + uuid: json["uuid"] == null ? undefined : json["uuid"], + user: json["user"] == null ? undefined : json["user"], + appleSecureEnclaveKey: + json["apple_secure_enclave_key"] == null ? undefined : json["apple_secure_enclave_key"], + appleEnclaveKeyId: + json["apple_enclave_key_id"] == null ? undefined : json["apple_enclave_key_id"], + deviceType: json["device_type"] == null ? undefined : json["device_type"], + }; +} + +export function PatchedAppleIndependentSecureEnclaveRequestToJSON( + json: any, +): PatchedAppleIndependentSecureEnclaveRequest { + return PatchedAppleIndependentSecureEnclaveRequestToJSONTyped(json, false); +} + +export function PatchedAppleIndependentSecureEnclaveRequestToJSONTyped( + value?: PatchedAppleIndependentSecureEnclaveRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + uuid: value["uuid"], + user: value["user"], + apple_secure_enclave_key: value["appleSecureEnclaveKey"], + apple_enclave_key_id: value["appleEnclaveKeyId"], + device_type: value["deviceType"], + }; +} diff --git a/packages/client-ts/src/models/PatchedApplicationEntitlementRequest.ts b/packages/client-ts/src/models/PatchedApplicationEntitlementRequest.ts new file mode 100644 index 0000000000..11a7bf87b7 --- /dev/null +++ b/packages/client-ts/src/models/PatchedApplicationEntitlementRequest.ts @@ -0,0 +1,89 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * ApplicationEntitlement Serializer + * @export + * @interface PatchedApplicationEntitlementRequest + */ +export interface PatchedApplicationEntitlementRequest { + /** + * + * @type {string} + * @memberof PatchedApplicationEntitlementRequest + */ + name?: string; + /** + * + * @type {string} + * @memberof PatchedApplicationEntitlementRequest + */ + app?: string; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PatchedApplicationEntitlementRequest + */ + attributes?: { [key: string]: any }; +} + +/** + * Check if a given object implements the PatchedApplicationEntitlementRequest interface. + */ +export function instanceOfPatchedApplicationEntitlementRequest( + value: object, +): value is PatchedApplicationEntitlementRequest { + return true; +} + +export function PatchedApplicationEntitlementRequestFromJSON( + json: any, +): PatchedApplicationEntitlementRequest { + return PatchedApplicationEntitlementRequestFromJSONTyped(json, false); +} + +export function PatchedApplicationEntitlementRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedApplicationEntitlementRequest { + if (json == null) { + return json; + } + return { + name: json["name"] == null ? undefined : json["name"], + app: json["app"] == null ? undefined : json["app"], + attributes: json["attributes"] == null ? undefined : json["attributes"], + }; +} + +export function PatchedApplicationEntitlementRequestToJSON( + json: any, +): PatchedApplicationEntitlementRequest { + return PatchedApplicationEntitlementRequestToJSONTyped(json, false); +} + +export function PatchedApplicationEntitlementRequestToJSONTyped( + value?: PatchedApplicationEntitlementRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + app: value["app"], + attributes: value["attributes"], + }; +} diff --git a/packages/client-ts/src/models/PatchedApplicationRequest.ts b/packages/client-ts/src/models/PatchedApplicationRequest.ts new file mode 100644 index 0000000000..1a79027966 --- /dev/null +++ b/packages/client-ts/src/models/PatchedApplicationRequest.ts @@ -0,0 +1,164 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { PolicyEngineMode } from "./PolicyEngineMode"; +import { PolicyEngineModeFromJSON, PolicyEngineModeToJSON } from "./PolicyEngineMode"; + +/** + * Application Serializer + * @export + * @interface PatchedApplicationRequest + */ +export interface PatchedApplicationRequest { + /** + * Application's display Name. + * @type {string} + * @memberof PatchedApplicationRequest + */ + name?: string; + /** + * Internal application name, used in URLs. + * @type {string} + * @memberof PatchedApplicationRequest + */ + slug?: string; + /** + * + * @type {number} + * @memberof PatchedApplicationRequest + */ + provider?: number | null; + /** + * + * @type {Array} + * @memberof PatchedApplicationRequest + */ + backchannelProviders?: Array; + /** + * Open launch URL in a new browser tab or window. + * @type {boolean} + * @memberof PatchedApplicationRequest + */ + openInNewTab?: boolean; + /** + * + * @type {string} + * @memberof PatchedApplicationRequest + */ + metaLaunchUrl?: string; + /** + * + * @type {string} + * @memberof PatchedApplicationRequest + */ + metaIcon?: string; + /** + * + * @type {string} + * @memberof PatchedApplicationRequest + */ + metaDescription?: string; + /** + * + * @type {string} + * @memberof PatchedApplicationRequest + */ + metaPublisher?: string; + /** + * + * @type {PolicyEngineMode} + * @memberof PatchedApplicationRequest + */ + policyEngineMode?: PolicyEngineMode; + /** + * + * @type {string} + * @memberof PatchedApplicationRequest + */ + group?: string; + /** + * Hide this application from the user's My applications page. + * @type {boolean} + * @memberof PatchedApplicationRequest + */ + metaHide?: boolean; +} + +/** + * Check if a given object implements the PatchedApplicationRequest interface. + */ +export function instanceOfPatchedApplicationRequest( + value: object, +): value is PatchedApplicationRequest { + return true; +} + +export function PatchedApplicationRequestFromJSON(json: any): PatchedApplicationRequest { + return PatchedApplicationRequestFromJSONTyped(json, false); +} + +export function PatchedApplicationRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedApplicationRequest { + if (json == null) { + return json; + } + return { + name: json["name"] == null ? undefined : json["name"], + slug: json["slug"] == null ? undefined : json["slug"], + provider: json["provider"] == null ? undefined : json["provider"], + backchannelProviders: + json["backchannel_providers"] == null ? undefined : json["backchannel_providers"], + openInNewTab: json["open_in_new_tab"] == null ? undefined : json["open_in_new_tab"], + metaLaunchUrl: json["meta_launch_url"] == null ? undefined : json["meta_launch_url"], + metaIcon: json["meta_icon"] == null ? undefined : json["meta_icon"], + metaDescription: json["meta_description"] == null ? undefined : json["meta_description"], + metaPublisher: json["meta_publisher"] == null ? undefined : json["meta_publisher"], + policyEngineMode: + json["policy_engine_mode"] == null + ? undefined + : PolicyEngineModeFromJSON(json["policy_engine_mode"]), + group: json["group"] == null ? undefined : json["group"], + metaHide: json["meta_hide"] == null ? undefined : json["meta_hide"], + }; +} + +export function PatchedApplicationRequestToJSON(json: any): PatchedApplicationRequest { + return PatchedApplicationRequestToJSONTyped(json, false); +} + +export function PatchedApplicationRequestToJSONTyped( + value?: PatchedApplicationRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + slug: value["slug"], + provider: value["provider"], + backchannel_providers: value["backchannelProviders"], + open_in_new_tab: value["openInNewTab"], + meta_launch_url: value["metaLaunchUrl"], + meta_icon: value["metaIcon"], + meta_description: value["metaDescription"], + meta_publisher: value["metaPublisher"], + policy_engine_mode: PolicyEngineModeToJSON(value["policyEngineMode"]), + group: value["group"], + meta_hide: value["metaHide"], + }; +} diff --git a/packages/client-ts/src/models/PatchedAuthenticatorDuoStageRequest.ts b/packages/client-ts/src/models/PatchedAuthenticatorDuoStageRequest.ts new file mode 100644 index 0000000000..3c0460d2d5 --- /dev/null +++ b/packages/client-ts/src/models/PatchedAuthenticatorDuoStageRequest.ts @@ -0,0 +1,130 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * AuthenticatorDuoStage Serializer + * @export + * @interface PatchedAuthenticatorDuoStageRequest + */ +export interface PatchedAuthenticatorDuoStageRequest { + /** + * + * @type {string} + * @memberof PatchedAuthenticatorDuoStageRequest + */ + name?: string; + /** + * Flow used by an authenticated user to configure this Stage. If empty, user will not be able to configure this stage. + * @type {string} + * @memberof PatchedAuthenticatorDuoStageRequest + */ + configureFlow?: string | null; + /** + * + * @type {string} + * @memberof PatchedAuthenticatorDuoStageRequest + */ + friendlyName?: string; + /** + * + * @type {string} + * @memberof PatchedAuthenticatorDuoStageRequest + */ + clientId?: string; + /** + * + * @type {string} + * @memberof PatchedAuthenticatorDuoStageRequest + */ + clientSecret?: string; + /** + * + * @type {string} + * @memberof PatchedAuthenticatorDuoStageRequest + */ + apiHostname?: string; + /** + * + * @type {string} + * @memberof PatchedAuthenticatorDuoStageRequest + */ + adminIntegrationKey?: string; + /** + * + * @type {string} + * @memberof PatchedAuthenticatorDuoStageRequest + */ + adminSecretKey?: string; +} + +/** + * Check if a given object implements the PatchedAuthenticatorDuoStageRequest interface. + */ +export function instanceOfPatchedAuthenticatorDuoStageRequest( + value: object, +): value is PatchedAuthenticatorDuoStageRequest { + return true; +} + +export function PatchedAuthenticatorDuoStageRequestFromJSON( + json: any, +): PatchedAuthenticatorDuoStageRequest { + return PatchedAuthenticatorDuoStageRequestFromJSONTyped(json, false); +} + +export function PatchedAuthenticatorDuoStageRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedAuthenticatorDuoStageRequest { + if (json == null) { + return json; + } + return { + name: json["name"] == null ? undefined : json["name"], + configureFlow: json["configure_flow"] == null ? undefined : json["configure_flow"], + friendlyName: json["friendly_name"] == null ? undefined : json["friendly_name"], + clientId: json["client_id"] == null ? undefined : json["client_id"], + clientSecret: json["client_secret"] == null ? undefined : json["client_secret"], + apiHostname: json["api_hostname"] == null ? undefined : json["api_hostname"], + adminIntegrationKey: + json["admin_integration_key"] == null ? undefined : json["admin_integration_key"], + adminSecretKey: json["admin_secret_key"] == null ? undefined : json["admin_secret_key"], + }; +} + +export function PatchedAuthenticatorDuoStageRequestToJSON( + json: any, +): PatchedAuthenticatorDuoStageRequest { + return PatchedAuthenticatorDuoStageRequestToJSONTyped(json, false); +} + +export function PatchedAuthenticatorDuoStageRequestToJSONTyped( + value?: PatchedAuthenticatorDuoStageRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + configure_flow: value["configureFlow"], + friendly_name: value["friendlyName"], + client_id: value["clientId"], + client_secret: value["clientSecret"], + api_hostname: value["apiHostname"], + admin_integration_key: value["adminIntegrationKey"], + admin_secret_key: value["adminSecretKey"], + }; +} diff --git a/packages/client-ts/src/models/PatchedAuthenticatorEmailStageRequest.ts b/packages/client-ts/src/models/PatchedAuthenticatorEmailStageRequest.ts new file mode 100644 index 0000000000..390d1a2018 --- /dev/null +++ b/packages/client-ts/src/models/PatchedAuthenticatorEmailStageRequest.ts @@ -0,0 +1,186 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * AuthenticatorEmailStage Serializer + * @export + * @interface PatchedAuthenticatorEmailStageRequest + */ +export interface PatchedAuthenticatorEmailStageRequest { + /** + * + * @type {string} + * @memberof PatchedAuthenticatorEmailStageRequest + */ + name?: string; + /** + * Flow used by an authenticated user to configure this Stage. If empty, user will not be able to configure this stage. + * @type {string} + * @memberof PatchedAuthenticatorEmailStageRequest + */ + configureFlow?: string | null; + /** + * + * @type {string} + * @memberof PatchedAuthenticatorEmailStageRequest + */ + friendlyName?: string; + /** + * When enabled, global Email connection settings will be used and connection settings below will be ignored. + * @type {boolean} + * @memberof PatchedAuthenticatorEmailStageRequest + */ + useGlobalSettings?: boolean; + /** + * + * @type {string} + * @memberof PatchedAuthenticatorEmailStageRequest + */ + host?: string; + /** + * + * @type {number} + * @memberof PatchedAuthenticatorEmailStageRequest + */ + port?: number; + /** + * + * @type {string} + * @memberof PatchedAuthenticatorEmailStageRequest + */ + username?: string; + /** + * + * @type {string} + * @memberof PatchedAuthenticatorEmailStageRequest + */ + password?: string; + /** + * + * @type {boolean} + * @memberof PatchedAuthenticatorEmailStageRequest + */ + useTls?: boolean; + /** + * + * @type {boolean} + * @memberof PatchedAuthenticatorEmailStageRequest + */ + useSsl?: boolean; + /** + * + * @type {number} + * @memberof PatchedAuthenticatorEmailStageRequest + */ + timeout?: number; + /** + * + * @type {string} + * @memberof PatchedAuthenticatorEmailStageRequest + */ + fromAddress?: string; + /** + * + * @type {string} + * @memberof PatchedAuthenticatorEmailStageRequest + */ + subject?: string; + /** + * Time the token sent is valid (Format: hours=3,minutes=17,seconds=300). + * @type {string} + * @memberof PatchedAuthenticatorEmailStageRequest + */ + tokenExpiry?: string; + /** + * + * @type {string} + * @memberof PatchedAuthenticatorEmailStageRequest + */ + template?: string; +} + +/** + * Check if a given object implements the PatchedAuthenticatorEmailStageRequest interface. + */ +export function instanceOfPatchedAuthenticatorEmailStageRequest( + value: object, +): value is PatchedAuthenticatorEmailStageRequest { + return true; +} + +export function PatchedAuthenticatorEmailStageRequestFromJSON( + json: any, +): PatchedAuthenticatorEmailStageRequest { + return PatchedAuthenticatorEmailStageRequestFromJSONTyped(json, false); +} + +export function PatchedAuthenticatorEmailStageRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedAuthenticatorEmailStageRequest { + if (json == null) { + return json; + } + return { + name: json["name"] == null ? undefined : json["name"], + configureFlow: json["configure_flow"] == null ? undefined : json["configure_flow"], + friendlyName: json["friendly_name"] == null ? undefined : json["friendly_name"], + useGlobalSettings: + json["use_global_settings"] == null ? undefined : json["use_global_settings"], + host: json["host"] == null ? undefined : json["host"], + port: json["port"] == null ? undefined : json["port"], + username: json["username"] == null ? undefined : json["username"], + password: json["password"] == null ? undefined : json["password"], + useTls: json["use_tls"] == null ? undefined : json["use_tls"], + useSsl: json["use_ssl"] == null ? undefined : json["use_ssl"], + timeout: json["timeout"] == null ? undefined : json["timeout"], + fromAddress: json["from_address"] == null ? undefined : json["from_address"], + subject: json["subject"] == null ? undefined : json["subject"], + tokenExpiry: json["token_expiry"] == null ? undefined : json["token_expiry"], + template: json["template"] == null ? undefined : json["template"], + }; +} + +export function PatchedAuthenticatorEmailStageRequestToJSON( + json: any, +): PatchedAuthenticatorEmailStageRequest { + return PatchedAuthenticatorEmailStageRequestToJSONTyped(json, false); +} + +export function PatchedAuthenticatorEmailStageRequestToJSONTyped( + value?: PatchedAuthenticatorEmailStageRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + configure_flow: value["configureFlow"], + friendly_name: value["friendlyName"], + use_global_settings: value["useGlobalSettings"], + host: value["host"], + port: value["port"], + username: value["username"], + password: value["password"], + use_tls: value["useTls"], + use_ssl: value["useSsl"], + timeout: value["timeout"], + from_address: value["fromAddress"], + subject: value["subject"], + token_expiry: value["tokenExpiry"], + template: value["template"], + }; +} diff --git a/packages/client-ts/src/models/PatchedAuthenticatorEndpointGDTCStageRequest.ts b/packages/client-ts/src/models/PatchedAuthenticatorEndpointGDTCStageRequest.ts new file mode 100644 index 0000000000..8c0482f53d --- /dev/null +++ b/packages/client-ts/src/models/PatchedAuthenticatorEndpointGDTCStageRequest.ts @@ -0,0 +1,97 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * AuthenticatorEndpointGDTCStage Serializer + * @export + * @interface PatchedAuthenticatorEndpointGDTCStageRequest + */ +export interface PatchedAuthenticatorEndpointGDTCStageRequest { + /** + * + * @type {string} + * @memberof PatchedAuthenticatorEndpointGDTCStageRequest + */ + name?: string; + /** + * Flow used by an authenticated user to configure this Stage. If empty, user will not be able to configure this stage. + * @type {string} + * @memberof PatchedAuthenticatorEndpointGDTCStageRequest + */ + configureFlow?: string | null; + /** + * + * @type {string} + * @memberof PatchedAuthenticatorEndpointGDTCStageRequest + */ + friendlyName?: string; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PatchedAuthenticatorEndpointGDTCStageRequest + */ + credentials?: { [key: string]: any }; +} + +/** + * Check if a given object implements the PatchedAuthenticatorEndpointGDTCStageRequest interface. + */ +export function instanceOfPatchedAuthenticatorEndpointGDTCStageRequest( + value: object, +): value is PatchedAuthenticatorEndpointGDTCStageRequest { + return true; +} + +export function PatchedAuthenticatorEndpointGDTCStageRequestFromJSON( + json: any, +): PatchedAuthenticatorEndpointGDTCStageRequest { + return PatchedAuthenticatorEndpointGDTCStageRequestFromJSONTyped(json, false); +} + +export function PatchedAuthenticatorEndpointGDTCStageRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedAuthenticatorEndpointGDTCStageRequest { + if (json == null) { + return json; + } + return { + name: json["name"] == null ? undefined : json["name"], + configureFlow: json["configure_flow"] == null ? undefined : json["configure_flow"], + friendlyName: json["friendly_name"] == null ? undefined : json["friendly_name"], + credentials: json["credentials"] == null ? undefined : json["credentials"], + }; +} + +export function PatchedAuthenticatorEndpointGDTCStageRequestToJSON( + json: any, +): PatchedAuthenticatorEndpointGDTCStageRequest { + return PatchedAuthenticatorEndpointGDTCStageRequestToJSONTyped(json, false); +} + +export function PatchedAuthenticatorEndpointGDTCStageRequestToJSONTyped( + value?: PatchedAuthenticatorEndpointGDTCStageRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + configure_flow: value["configureFlow"], + friendly_name: value["friendlyName"], + credentials: value["credentials"], + }; +} diff --git a/packages/client-ts/src/models/PatchedAuthenticatorSMSStageRequest.ts b/packages/client-ts/src/models/PatchedAuthenticatorSMSStageRequest.ts new file mode 100644 index 0000000000..53fafb2651 --- /dev/null +++ b/packages/client-ts/src/models/PatchedAuthenticatorSMSStageRequest.ts @@ -0,0 +1,158 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { AuthTypeEnum } from "./AuthTypeEnum"; +import { AuthTypeEnumFromJSON, AuthTypeEnumToJSON } from "./AuthTypeEnum"; +import type { ProviderEnum } from "./ProviderEnum"; +import { ProviderEnumFromJSON, ProviderEnumToJSON } from "./ProviderEnum"; + +/** + * AuthenticatorSMSStage Serializer + * @export + * @interface PatchedAuthenticatorSMSStageRequest + */ +export interface PatchedAuthenticatorSMSStageRequest { + /** + * + * @type {string} + * @memberof PatchedAuthenticatorSMSStageRequest + */ + name?: string; + /** + * Flow used by an authenticated user to configure this Stage. If empty, user will not be able to configure this stage. + * @type {string} + * @memberof PatchedAuthenticatorSMSStageRequest + */ + configureFlow?: string | null; + /** + * + * @type {string} + * @memberof PatchedAuthenticatorSMSStageRequest + */ + friendlyName?: string; + /** + * + * @type {ProviderEnum} + * @memberof PatchedAuthenticatorSMSStageRequest + */ + provider?: ProviderEnum; + /** + * + * @type {string} + * @memberof PatchedAuthenticatorSMSStageRequest + */ + fromNumber?: string; + /** + * + * @type {string} + * @memberof PatchedAuthenticatorSMSStageRequest + */ + accountSid?: string; + /** + * + * @type {string} + * @memberof PatchedAuthenticatorSMSStageRequest + */ + auth?: string; + /** + * + * @type {string} + * @memberof PatchedAuthenticatorSMSStageRequest + */ + authPassword?: string; + /** + * + * @type {AuthTypeEnum} + * @memberof PatchedAuthenticatorSMSStageRequest + */ + authType?: AuthTypeEnum; + /** + * When enabled, the Phone number is only used during enrollment to verify the users authenticity. Only a hash of the phone number is saved to ensure it is not reused in the future. + * @type {boolean} + * @memberof PatchedAuthenticatorSMSStageRequest + */ + verifyOnly?: boolean; + /** + * Optionally modify the payload being sent to custom providers. + * @type {string} + * @memberof PatchedAuthenticatorSMSStageRequest + */ + mapping?: string | null; +} + +/** + * Check if a given object implements the PatchedAuthenticatorSMSStageRequest interface. + */ +export function instanceOfPatchedAuthenticatorSMSStageRequest( + value: object, +): value is PatchedAuthenticatorSMSStageRequest { + return true; +} + +export function PatchedAuthenticatorSMSStageRequestFromJSON( + json: any, +): PatchedAuthenticatorSMSStageRequest { + return PatchedAuthenticatorSMSStageRequestFromJSONTyped(json, false); +} + +export function PatchedAuthenticatorSMSStageRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedAuthenticatorSMSStageRequest { + if (json == null) { + return json; + } + return { + name: json["name"] == null ? undefined : json["name"], + configureFlow: json["configure_flow"] == null ? undefined : json["configure_flow"], + friendlyName: json["friendly_name"] == null ? undefined : json["friendly_name"], + provider: json["provider"] == null ? undefined : ProviderEnumFromJSON(json["provider"]), + fromNumber: json["from_number"] == null ? undefined : json["from_number"], + accountSid: json["account_sid"] == null ? undefined : json["account_sid"], + auth: json["auth"] == null ? undefined : json["auth"], + authPassword: json["auth_password"] == null ? undefined : json["auth_password"], + authType: json["auth_type"] == null ? undefined : AuthTypeEnumFromJSON(json["auth_type"]), + verifyOnly: json["verify_only"] == null ? undefined : json["verify_only"], + mapping: json["mapping"] == null ? undefined : json["mapping"], + }; +} + +export function PatchedAuthenticatorSMSStageRequestToJSON( + json: any, +): PatchedAuthenticatorSMSStageRequest { + return PatchedAuthenticatorSMSStageRequestToJSONTyped(json, false); +} + +export function PatchedAuthenticatorSMSStageRequestToJSONTyped( + value?: PatchedAuthenticatorSMSStageRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + configure_flow: value["configureFlow"], + friendly_name: value["friendlyName"], + provider: ProviderEnumToJSON(value["provider"]), + from_number: value["fromNumber"], + account_sid: value["accountSid"], + auth: value["auth"], + auth_password: value["authPassword"], + auth_type: AuthTypeEnumToJSON(value["authType"]), + verify_only: value["verifyOnly"], + mapping: value["mapping"], + }; +} diff --git a/packages/client-ts/src/models/PatchedAuthenticatorStaticStageRequest.ts b/packages/client-ts/src/models/PatchedAuthenticatorStaticStageRequest.ts new file mode 100644 index 0000000000..57a7e14aed --- /dev/null +++ b/packages/client-ts/src/models/PatchedAuthenticatorStaticStageRequest.ts @@ -0,0 +1,105 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * AuthenticatorStaticStage Serializer + * @export + * @interface PatchedAuthenticatorStaticStageRequest + */ +export interface PatchedAuthenticatorStaticStageRequest { + /** + * + * @type {string} + * @memberof PatchedAuthenticatorStaticStageRequest + */ + name?: string; + /** + * Flow used by an authenticated user to configure this Stage. If empty, user will not be able to configure this stage. + * @type {string} + * @memberof PatchedAuthenticatorStaticStageRequest + */ + configureFlow?: string | null; + /** + * + * @type {string} + * @memberof PatchedAuthenticatorStaticStageRequest + */ + friendlyName?: string; + /** + * + * @type {number} + * @memberof PatchedAuthenticatorStaticStageRequest + */ + tokenCount?: number; + /** + * + * @type {number} + * @memberof PatchedAuthenticatorStaticStageRequest + */ + tokenLength?: number; +} + +/** + * Check if a given object implements the PatchedAuthenticatorStaticStageRequest interface. + */ +export function instanceOfPatchedAuthenticatorStaticStageRequest( + value: object, +): value is PatchedAuthenticatorStaticStageRequest { + return true; +} + +export function PatchedAuthenticatorStaticStageRequestFromJSON( + json: any, +): PatchedAuthenticatorStaticStageRequest { + return PatchedAuthenticatorStaticStageRequestFromJSONTyped(json, false); +} + +export function PatchedAuthenticatorStaticStageRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedAuthenticatorStaticStageRequest { + if (json == null) { + return json; + } + return { + name: json["name"] == null ? undefined : json["name"], + configureFlow: json["configure_flow"] == null ? undefined : json["configure_flow"], + friendlyName: json["friendly_name"] == null ? undefined : json["friendly_name"], + tokenCount: json["token_count"] == null ? undefined : json["token_count"], + tokenLength: json["token_length"] == null ? undefined : json["token_length"], + }; +} + +export function PatchedAuthenticatorStaticStageRequestToJSON( + json: any, +): PatchedAuthenticatorStaticStageRequest { + return PatchedAuthenticatorStaticStageRequestToJSONTyped(json, false); +} + +export function PatchedAuthenticatorStaticStageRequestToJSONTyped( + value?: PatchedAuthenticatorStaticStageRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + configure_flow: value["configureFlow"], + friendly_name: value["friendlyName"], + token_count: value["tokenCount"], + token_length: value["tokenLength"], + }; +} diff --git a/packages/client-ts/src/models/PatchedAuthenticatorTOTPStageRequest.ts b/packages/client-ts/src/models/PatchedAuthenticatorTOTPStageRequest.ts new file mode 100644 index 0000000000..0b9afbc6e7 --- /dev/null +++ b/packages/client-ts/src/models/PatchedAuthenticatorTOTPStageRequest.ts @@ -0,0 +1,100 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { DigitsEnum } from "./DigitsEnum"; +import { DigitsEnumFromJSON, DigitsEnumToJSON } from "./DigitsEnum"; + +/** + * AuthenticatorTOTPStage Serializer + * @export + * @interface PatchedAuthenticatorTOTPStageRequest + */ +export interface PatchedAuthenticatorTOTPStageRequest { + /** + * + * @type {string} + * @memberof PatchedAuthenticatorTOTPStageRequest + */ + name?: string; + /** + * Flow used by an authenticated user to configure this Stage. If empty, user will not be able to configure this stage. + * @type {string} + * @memberof PatchedAuthenticatorTOTPStageRequest + */ + configureFlow?: string | null; + /** + * + * @type {string} + * @memberof PatchedAuthenticatorTOTPStageRequest + */ + friendlyName?: string; + /** + * + * @type {DigitsEnum} + * @memberof PatchedAuthenticatorTOTPStageRequest + */ + digits?: DigitsEnum; +} + +/** + * Check if a given object implements the PatchedAuthenticatorTOTPStageRequest interface. + */ +export function instanceOfPatchedAuthenticatorTOTPStageRequest( + value: object, +): value is PatchedAuthenticatorTOTPStageRequest { + return true; +} + +export function PatchedAuthenticatorTOTPStageRequestFromJSON( + json: any, +): PatchedAuthenticatorTOTPStageRequest { + return PatchedAuthenticatorTOTPStageRequestFromJSONTyped(json, false); +} + +export function PatchedAuthenticatorTOTPStageRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedAuthenticatorTOTPStageRequest { + if (json == null) { + return json; + } + return { + name: json["name"] == null ? undefined : json["name"], + configureFlow: json["configure_flow"] == null ? undefined : json["configure_flow"], + friendlyName: json["friendly_name"] == null ? undefined : json["friendly_name"], + digits: json["digits"] == null ? undefined : DigitsEnumFromJSON(json["digits"]), + }; +} + +export function PatchedAuthenticatorTOTPStageRequestToJSON( + json: any, +): PatchedAuthenticatorTOTPStageRequest { + return PatchedAuthenticatorTOTPStageRequestToJSONTyped(json, false); +} + +export function PatchedAuthenticatorTOTPStageRequestToJSONTyped( + value?: PatchedAuthenticatorTOTPStageRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + configure_flow: value["configureFlow"], + friendly_name: value["friendlyName"], + digits: DigitsEnumToJSON(value["digits"]), + }; +} diff --git a/packages/client-ts/src/models/PatchedAuthenticatorValidateStageRequest.ts b/packages/client-ts/src/models/PatchedAuthenticatorValidateStageRequest.ts new file mode 100644 index 0000000000..239eafb443 --- /dev/null +++ b/packages/client-ts/src/models/PatchedAuthenticatorValidateStageRequest.ts @@ -0,0 +1,208 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { DeviceClassesEnum } from "./DeviceClassesEnum"; +import { DeviceClassesEnumFromJSON, DeviceClassesEnumToJSON } from "./DeviceClassesEnum"; +import type { NotConfiguredActionEnum } from "./NotConfiguredActionEnum"; +import { + NotConfiguredActionEnumFromJSON, + NotConfiguredActionEnumToJSON, +} from "./NotConfiguredActionEnum"; +import type { UserVerificationEnum } from "./UserVerificationEnum"; +import { UserVerificationEnumFromJSON, UserVerificationEnumToJSON } from "./UserVerificationEnum"; +import type { WebAuthnHintEnum } from "./WebAuthnHintEnum"; +import { WebAuthnHintEnumFromJSON, WebAuthnHintEnumToJSON } from "./WebAuthnHintEnum"; + +/** + * AuthenticatorValidateStage Serializer + * @export + * @interface PatchedAuthenticatorValidateStageRequest + */ +export interface PatchedAuthenticatorValidateStageRequest { + /** + * + * @type {string} + * @memberof PatchedAuthenticatorValidateStageRequest + */ + name?: string; + /** + * + * @type {NotConfiguredActionEnum} + * @memberof PatchedAuthenticatorValidateStageRequest + */ + notConfiguredAction?: NotConfiguredActionEnum; + /** + * Device classes which can be used to authenticate + * @type {Array} + * @memberof PatchedAuthenticatorValidateStageRequest + */ + deviceClasses?: Array; + /** + * Stages used to configure Authenticator when user doesn't have any compatible devices. After this configuration Stage passes, the user is not prompted again. + * @type {Array} + * @memberof PatchedAuthenticatorValidateStageRequest + */ + configurationStages?: Array; + /** + * If any of the user's device has been used within this threshold, this stage will be skipped + * @type {string} + * @memberof PatchedAuthenticatorValidateStageRequest + */ + lastAuthThreshold?: string; + /** + * Enforce user verification for WebAuthn devices. + * @type {UserVerificationEnum} + * @memberof PatchedAuthenticatorValidateStageRequest + */ + webauthnUserVerification?: UserVerificationEnum; + /** + * + * @type {Array} + * @memberof PatchedAuthenticatorValidateStageRequest + */ + webauthnHints?: Array; + /** + * + * @type {Array} + * @memberof PatchedAuthenticatorValidateStageRequest + */ + webauthnAllowedDeviceTypes?: Array; + /** + * + * @type {number} + * @memberof PatchedAuthenticatorValidateStageRequest + */ + emailOtpThrottlingFactor?: number; + /** + * + * @type {number} + * @memberof PatchedAuthenticatorValidateStageRequest + */ + smsOtpThrottlingFactor?: number; + /** + * + * @type {number} + * @memberof PatchedAuthenticatorValidateStageRequest + */ + totpOtpThrottlingFactor?: number; + /** + * + * @type {number} + * @memberof PatchedAuthenticatorValidateStageRequest + */ + staticOtpThrottlingFactor?: number; +} + +/** + * Check if a given object implements the PatchedAuthenticatorValidateStageRequest interface. + */ +export function instanceOfPatchedAuthenticatorValidateStageRequest( + value: object, +): value is PatchedAuthenticatorValidateStageRequest { + return true; +} + +export function PatchedAuthenticatorValidateStageRequestFromJSON( + json: any, +): PatchedAuthenticatorValidateStageRequest { + return PatchedAuthenticatorValidateStageRequestFromJSONTyped(json, false); +} + +export function PatchedAuthenticatorValidateStageRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedAuthenticatorValidateStageRequest { + if (json == null) { + return json; + } + return { + name: json["name"] == null ? undefined : json["name"], + notConfiguredAction: + json["not_configured_action"] == null + ? undefined + : NotConfiguredActionEnumFromJSON(json["not_configured_action"]), + deviceClasses: + json["device_classes"] == null + ? undefined + : (json["device_classes"] as Array).map(DeviceClassesEnumFromJSON), + configurationStages: + json["configuration_stages"] == null ? undefined : json["configuration_stages"], + lastAuthThreshold: + json["last_auth_threshold"] == null ? undefined : json["last_auth_threshold"], + webauthnUserVerification: + json["webauthn_user_verification"] == null + ? undefined + : UserVerificationEnumFromJSON(json["webauthn_user_verification"]), + webauthnHints: + json["webauthn_hints"] == null + ? undefined + : (json["webauthn_hints"] as Array).map(WebAuthnHintEnumFromJSON), + webauthnAllowedDeviceTypes: + json["webauthn_allowed_device_types"] == null + ? undefined + : json["webauthn_allowed_device_types"], + emailOtpThrottlingFactor: + json["email_otp_throttling_factor"] == null + ? undefined + : json["email_otp_throttling_factor"], + smsOtpThrottlingFactor: + json["sms_otp_throttling_factor"] == null + ? undefined + : json["sms_otp_throttling_factor"], + totpOtpThrottlingFactor: + json["totp_otp_throttling_factor"] == null + ? undefined + : json["totp_otp_throttling_factor"], + staticOtpThrottlingFactor: + json["static_otp_throttling_factor"] == null + ? undefined + : json["static_otp_throttling_factor"], + }; +} + +export function PatchedAuthenticatorValidateStageRequestToJSON( + json: any, +): PatchedAuthenticatorValidateStageRequest { + return PatchedAuthenticatorValidateStageRequestToJSONTyped(json, false); +} + +export function PatchedAuthenticatorValidateStageRequestToJSONTyped( + value?: PatchedAuthenticatorValidateStageRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + not_configured_action: NotConfiguredActionEnumToJSON(value["notConfiguredAction"]), + device_classes: + value["deviceClasses"] == null + ? undefined + : (value["deviceClasses"] as Array).map(DeviceClassesEnumToJSON), + configuration_stages: value["configurationStages"], + last_auth_threshold: value["lastAuthThreshold"], + webauthn_user_verification: UserVerificationEnumToJSON(value["webauthnUserVerification"]), + webauthn_hints: + value["webauthnHints"] == null + ? undefined + : (value["webauthnHints"] as Array).map(WebAuthnHintEnumToJSON), + webauthn_allowed_device_types: value["webauthnAllowedDeviceTypes"], + email_otp_throttling_factor: value["emailOtpThrottlingFactor"], + sms_otp_throttling_factor: value["smsOtpThrottlingFactor"], + totp_otp_throttling_factor: value["totpOtpThrottlingFactor"], + static_otp_throttling_factor: value["staticOtpThrottlingFactor"], + }; +} diff --git a/packages/client-ts/src/models/PatchedAuthenticatorWebAuthnStageRequest.ts b/packages/client-ts/src/models/PatchedAuthenticatorWebAuthnStageRequest.ts new file mode 100644 index 0000000000..9d19f8a8f0 --- /dev/null +++ b/packages/client-ts/src/models/PatchedAuthenticatorWebAuthnStageRequest.ts @@ -0,0 +1,176 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { AuthenticatorAttachmentEnum } from "./AuthenticatorAttachmentEnum"; +import { + AuthenticatorAttachmentEnumFromJSON, + AuthenticatorAttachmentEnumToJSON, +} from "./AuthenticatorAttachmentEnum"; +import type { UserVerificationEnum } from "./UserVerificationEnum"; +import { UserVerificationEnumFromJSON, UserVerificationEnumToJSON } from "./UserVerificationEnum"; +import type { WebAuthnHintEnum } from "./WebAuthnHintEnum"; +import { WebAuthnHintEnumFromJSON, WebAuthnHintEnumToJSON } from "./WebAuthnHintEnum"; + +/** + * AuthenticatorWebAuthnStage Serializer + * @export + * @interface PatchedAuthenticatorWebAuthnStageRequest + */ +export interface PatchedAuthenticatorWebAuthnStageRequest { + /** + * + * @type {string} + * @memberof PatchedAuthenticatorWebAuthnStageRequest + */ + name?: string; + /** + * Flow used by an authenticated user to configure this Stage. If empty, user will not be able to configure this stage. + * @type {string} + * @memberof PatchedAuthenticatorWebAuthnStageRequest + */ + configureFlow?: string | null; + /** + * + * @type {string} + * @memberof PatchedAuthenticatorWebAuthnStageRequest + */ + friendlyName?: string; + /** + * + * @type {UserVerificationEnum} + * @memberof PatchedAuthenticatorWebAuthnStageRequest + */ + userVerification?: UserVerificationEnum; + /** + * + * @type {AuthenticatorAttachmentEnum} + * @memberof PatchedAuthenticatorWebAuthnStageRequest + */ + authenticatorAttachment?: AuthenticatorAttachmentEnum | null; + /** + * + * @type {UserVerificationEnum} + * @memberof PatchedAuthenticatorWebAuthnStageRequest + */ + residentKeyRequirement?: UserVerificationEnum; + /** + * + * @type {Array} + * @memberof PatchedAuthenticatorWebAuthnStageRequest + */ + hints?: Array; + /** + * + * @type {Array} + * @memberof PatchedAuthenticatorWebAuthnStageRequest + */ + deviceTypeRestrictions?: Array; + /** + * When enabled, a given device can only be registered once. + * @type {boolean} + * @memberof PatchedAuthenticatorWebAuthnStageRequest + */ + preventDuplicateDevices?: boolean; + /** + * + * @type {number} + * @memberof PatchedAuthenticatorWebAuthnStageRequest + */ + maxAttempts?: number; +} + +/** + * Check if a given object implements the PatchedAuthenticatorWebAuthnStageRequest interface. + */ +export function instanceOfPatchedAuthenticatorWebAuthnStageRequest( + value: object, +): value is PatchedAuthenticatorWebAuthnStageRequest { + return true; +} + +export function PatchedAuthenticatorWebAuthnStageRequestFromJSON( + json: any, +): PatchedAuthenticatorWebAuthnStageRequest { + return PatchedAuthenticatorWebAuthnStageRequestFromJSONTyped(json, false); +} + +export function PatchedAuthenticatorWebAuthnStageRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedAuthenticatorWebAuthnStageRequest { + if (json == null) { + return json; + } + return { + name: json["name"] == null ? undefined : json["name"], + configureFlow: json["configure_flow"] == null ? undefined : json["configure_flow"], + friendlyName: json["friendly_name"] == null ? undefined : json["friendly_name"], + userVerification: + json["user_verification"] == null + ? undefined + : UserVerificationEnumFromJSON(json["user_verification"]), + authenticatorAttachment: + json["authenticator_attachment"] == null + ? undefined + : AuthenticatorAttachmentEnumFromJSON(json["authenticator_attachment"]), + residentKeyRequirement: + json["resident_key_requirement"] == null + ? undefined + : UserVerificationEnumFromJSON(json["resident_key_requirement"]), + hints: + json["hints"] == null + ? undefined + : (json["hints"] as Array).map(WebAuthnHintEnumFromJSON), + deviceTypeRestrictions: + json["device_type_restrictions"] == null ? undefined : json["device_type_restrictions"], + preventDuplicateDevices: + json["prevent_duplicate_devices"] == null + ? undefined + : json["prevent_duplicate_devices"], + maxAttempts: json["max_attempts"] == null ? undefined : json["max_attempts"], + }; +} + +export function PatchedAuthenticatorWebAuthnStageRequestToJSON( + json: any, +): PatchedAuthenticatorWebAuthnStageRequest { + return PatchedAuthenticatorWebAuthnStageRequestToJSONTyped(json, false); +} + +export function PatchedAuthenticatorWebAuthnStageRequestToJSONTyped( + value?: PatchedAuthenticatorWebAuthnStageRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + configure_flow: value["configureFlow"], + friendly_name: value["friendlyName"], + user_verification: UserVerificationEnumToJSON(value["userVerification"]), + authenticator_attachment: AuthenticatorAttachmentEnumToJSON( + value["authenticatorAttachment"], + ), + resident_key_requirement: UserVerificationEnumToJSON(value["residentKeyRequirement"]), + hints: + value["hints"] == null + ? undefined + : (value["hints"] as Array).map(WebAuthnHintEnumToJSON), + device_type_restrictions: value["deviceTypeRestrictions"], + prevent_duplicate_devices: value["preventDuplicateDevices"], + max_attempts: value["maxAttempts"], + }; +} diff --git a/packages/client-ts/src/models/PatchedBlueprintInstanceRequest.ts b/packages/client-ts/src/models/PatchedBlueprintInstanceRequest.ts new file mode 100644 index 0000000000..1b288e8cc9 --- /dev/null +++ b/packages/client-ts/src/models/PatchedBlueprintInstanceRequest.ts @@ -0,0 +1,103 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Info about a single blueprint instance file + * @export + * @interface PatchedBlueprintInstanceRequest + */ +export interface PatchedBlueprintInstanceRequest { + /** + * + * @type {string} + * @memberof PatchedBlueprintInstanceRequest + */ + name?: string; + /** + * + * @type {string} + * @memberof PatchedBlueprintInstanceRequest + */ + path?: string; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PatchedBlueprintInstanceRequest + */ + context?: { [key: string]: any }; + /** + * + * @type {boolean} + * @memberof PatchedBlueprintInstanceRequest + */ + enabled?: boolean; + /** + * + * @type {string} + * @memberof PatchedBlueprintInstanceRequest + */ + content?: string; +} + +/** + * Check if a given object implements the PatchedBlueprintInstanceRequest interface. + */ +export function instanceOfPatchedBlueprintInstanceRequest( + value: object, +): value is PatchedBlueprintInstanceRequest { + return true; +} + +export function PatchedBlueprintInstanceRequestFromJSON( + json: any, +): PatchedBlueprintInstanceRequest { + return PatchedBlueprintInstanceRequestFromJSONTyped(json, false); +} + +export function PatchedBlueprintInstanceRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedBlueprintInstanceRequest { + if (json == null) { + return json; + } + return { + name: json["name"] == null ? undefined : json["name"], + path: json["path"] == null ? undefined : json["path"], + context: json["context"] == null ? undefined : json["context"], + enabled: json["enabled"] == null ? undefined : json["enabled"], + content: json["content"] == null ? undefined : json["content"], + }; +} + +export function PatchedBlueprintInstanceRequestToJSON(json: any): PatchedBlueprintInstanceRequest { + return PatchedBlueprintInstanceRequestToJSONTyped(json, false); +} + +export function PatchedBlueprintInstanceRequestToJSONTyped( + value?: PatchedBlueprintInstanceRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + path: value["path"], + context: value["context"], + enabled: value["enabled"], + content: value["content"], + }; +} diff --git a/packages/client-ts/src/models/PatchedBrandRequest.ts b/packages/client-ts/src/models/PatchedBrandRequest.ts new file mode 100644 index 0000000000..0118c9436c --- /dev/null +++ b/packages/client-ts/src/models/PatchedBrandRequest.ts @@ -0,0 +1,211 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Brand Serializer + * @export + * @interface PatchedBrandRequest + */ +export interface PatchedBrandRequest { + /** + * Domain that activates this brand. Can be a superset, i.e. `a.b` for `aa.b` and `ba.b` + * @type {string} + * @memberof PatchedBrandRequest + */ + domain?: string; + /** + * + * @type {boolean} + * @memberof PatchedBrandRequest + */ + _default?: boolean; + /** + * + * @type {string} + * @memberof PatchedBrandRequest + */ + brandingTitle?: string; + /** + * + * @type {string} + * @memberof PatchedBrandRequest + */ + brandingLogo?: string; + /** + * + * @type {string} + * @memberof PatchedBrandRequest + */ + brandingFavicon?: string; + /** + * + * @type {string} + * @memberof PatchedBrandRequest + */ + brandingCustomCss?: string; + /** + * + * @type {string} + * @memberof PatchedBrandRequest + */ + brandingDefaultFlowBackground?: string; + /** + * + * @type {string} + * @memberof PatchedBrandRequest + */ + flowAuthentication?: string | null; + /** + * + * @type {string} + * @memberof PatchedBrandRequest + */ + flowInvalidation?: string | null; + /** + * + * @type {string} + * @memberof PatchedBrandRequest + */ + flowRecovery?: string | null; + /** + * + * @type {string} + * @memberof PatchedBrandRequest + */ + flowUnenrollment?: string | null; + /** + * + * @type {string} + * @memberof PatchedBrandRequest + */ + flowUserSettings?: string | null; + /** + * + * @type {string} + * @memberof PatchedBrandRequest + */ + flowDeviceCode?: string | null; + /** + * + * @type {string} + * @memberof PatchedBrandRequest + */ + flowLockdown?: string | null; + /** + * When set, external users will be redirected to this application after authenticating. + * @type {string} + * @memberof PatchedBrandRequest + */ + defaultApplication?: string | null; + /** + * Web Certificate used by the authentik Core webserver. + * @type {string} + * @memberof PatchedBrandRequest + */ + webCertificate?: string | null; + /** + * Certificates used for client authentication. + * @type {Array} + * @memberof PatchedBrandRequest + */ + clientCertificates?: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PatchedBrandRequest + */ + attributes?: { [key: string]: any }; +} + +/** + * Check if a given object implements the PatchedBrandRequest interface. + */ +export function instanceOfPatchedBrandRequest(value: object): value is PatchedBrandRequest { + return true; +} + +export function PatchedBrandRequestFromJSON(json: any): PatchedBrandRequest { + return PatchedBrandRequestFromJSONTyped(json, false); +} + +export function PatchedBrandRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedBrandRequest { + if (json == null) { + return json; + } + return { + domain: json["domain"] == null ? undefined : json["domain"], + _default: json["default"] == null ? undefined : json["default"], + brandingTitle: json["branding_title"] == null ? undefined : json["branding_title"], + brandingLogo: json["branding_logo"] == null ? undefined : json["branding_logo"], + brandingFavicon: json["branding_favicon"] == null ? undefined : json["branding_favicon"], + brandingCustomCss: + json["branding_custom_css"] == null ? undefined : json["branding_custom_css"], + brandingDefaultFlowBackground: + json["branding_default_flow_background"] == null + ? undefined + : json["branding_default_flow_background"], + flowAuthentication: + json["flow_authentication"] == null ? undefined : json["flow_authentication"], + flowInvalidation: json["flow_invalidation"] == null ? undefined : json["flow_invalidation"], + flowRecovery: json["flow_recovery"] == null ? undefined : json["flow_recovery"], + flowUnenrollment: json["flow_unenrollment"] == null ? undefined : json["flow_unenrollment"], + flowUserSettings: + json["flow_user_settings"] == null ? undefined : json["flow_user_settings"], + flowDeviceCode: json["flow_device_code"] == null ? undefined : json["flow_device_code"], + flowLockdown: json["flow_lockdown"] == null ? undefined : json["flow_lockdown"], + defaultApplication: + json["default_application"] == null ? undefined : json["default_application"], + webCertificate: json["web_certificate"] == null ? undefined : json["web_certificate"], + clientCertificates: + json["client_certificates"] == null ? undefined : json["client_certificates"], + attributes: json["attributes"] == null ? undefined : json["attributes"], + }; +} + +export function PatchedBrandRequestToJSON(json: any): PatchedBrandRequest { + return PatchedBrandRequestToJSONTyped(json, false); +} + +export function PatchedBrandRequestToJSONTyped( + value?: PatchedBrandRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + domain: value["domain"], + default: value["_default"], + branding_title: value["brandingTitle"], + branding_logo: value["brandingLogo"], + branding_favicon: value["brandingFavicon"], + branding_custom_css: value["brandingCustomCss"], + branding_default_flow_background: value["brandingDefaultFlowBackground"], + flow_authentication: value["flowAuthentication"], + flow_invalidation: value["flowInvalidation"], + flow_recovery: value["flowRecovery"], + flow_unenrollment: value["flowUnenrollment"], + flow_user_settings: value["flowUserSettings"], + flow_device_code: value["flowDeviceCode"], + flow_lockdown: value["flowLockdown"], + default_application: value["defaultApplication"], + web_certificate: value["webCertificate"], + client_certificates: value["clientCertificates"], + attributes: value["attributes"], + }; +} diff --git a/packages/client-ts/src/models/PatchedCaptchaStageRequest.ts b/packages/client-ts/src/models/PatchedCaptchaStageRequest.ts new file mode 100644 index 0000000000..b616986c41 --- /dev/null +++ b/packages/client-ts/src/models/PatchedCaptchaStageRequest.ts @@ -0,0 +1,136 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * CaptchaStage Serializer + * @export + * @interface PatchedCaptchaStageRequest + */ +export interface PatchedCaptchaStageRequest { + /** + * + * @type {string} + * @memberof PatchedCaptchaStageRequest + */ + name?: string; + /** + * Public key, acquired your captcha Provider. + * @type {string} + * @memberof PatchedCaptchaStageRequest + */ + publicKey?: string; + /** + * Private key, acquired your captcha Provider. + * @type {string} + * @memberof PatchedCaptchaStageRequest + */ + privateKey?: string; + /** + * + * @type {string} + * @memberof PatchedCaptchaStageRequest + */ + jsUrl?: string; + /** + * + * @type {string} + * @memberof PatchedCaptchaStageRequest + */ + apiUrl?: string; + /** + * + * @type {boolean} + * @memberof PatchedCaptchaStageRequest + */ + interactive?: boolean; + /** + * + * @type {number} + * @memberof PatchedCaptchaStageRequest + */ + scoreMinThreshold?: number; + /** + * + * @type {number} + * @memberof PatchedCaptchaStageRequest + */ + scoreMaxThreshold?: number; + /** + * When enabled and the received captcha score is outside of the given threshold, the stage will show an error message. When not enabled, the flow will continue, but the data from the captcha will be available in the context for policy decisions + * @type {boolean} + * @memberof PatchedCaptchaStageRequest + */ + errorOnInvalidScore?: boolean; +} + +/** + * Check if a given object implements the PatchedCaptchaStageRequest interface. + */ +export function instanceOfPatchedCaptchaStageRequest( + value: object, +): value is PatchedCaptchaStageRequest { + return true; +} + +export function PatchedCaptchaStageRequestFromJSON(json: any): PatchedCaptchaStageRequest { + return PatchedCaptchaStageRequestFromJSONTyped(json, false); +} + +export function PatchedCaptchaStageRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedCaptchaStageRequest { + if (json == null) { + return json; + } + return { + name: json["name"] == null ? undefined : json["name"], + publicKey: json["public_key"] == null ? undefined : json["public_key"], + privateKey: json["private_key"] == null ? undefined : json["private_key"], + jsUrl: json["js_url"] == null ? undefined : json["js_url"], + apiUrl: json["api_url"] == null ? undefined : json["api_url"], + interactive: json["interactive"] == null ? undefined : json["interactive"], + scoreMinThreshold: + json["score_min_threshold"] == null ? undefined : json["score_min_threshold"], + scoreMaxThreshold: + json["score_max_threshold"] == null ? undefined : json["score_max_threshold"], + errorOnInvalidScore: + json["error_on_invalid_score"] == null ? undefined : json["error_on_invalid_score"], + }; +} + +export function PatchedCaptchaStageRequestToJSON(json: any): PatchedCaptchaStageRequest { + return PatchedCaptchaStageRequestToJSONTyped(json, false); +} + +export function PatchedCaptchaStageRequestToJSONTyped( + value?: PatchedCaptchaStageRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + public_key: value["publicKey"], + private_key: value["privateKey"], + js_url: value["jsUrl"], + api_url: value["apiUrl"], + interactive: value["interactive"], + score_min_threshold: value["scoreMinThreshold"], + score_max_threshold: value["scoreMaxThreshold"], + error_on_invalid_score: value["errorOnInvalidScore"], + }; +} diff --git a/packages/client-ts/src/models/PatchedCertificateKeyPairRequest.ts b/packages/client-ts/src/models/PatchedCertificateKeyPairRequest.ts new file mode 100644 index 0000000000..a0eea76105 --- /dev/null +++ b/packages/client-ts/src/models/PatchedCertificateKeyPairRequest.ts @@ -0,0 +1,89 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * CertificateKeyPair Serializer + * @export + * @interface PatchedCertificateKeyPairRequest + */ +export interface PatchedCertificateKeyPairRequest { + /** + * + * @type {string} + * @memberof PatchedCertificateKeyPairRequest + */ + name?: string; + /** + * PEM-encoded Certificate data + * @type {string} + * @memberof PatchedCertificateKeyPairRequest + */ + certificateData?: string; + /** + * Optional Private Key. If this is set, you can use this keypair for encryption. + * @type {string} + * @memberof PatchedCertificateKeyPairRequest + */ + keyData?: string; +} + +/** + * Check if a given object implements the PatchedCertificateKeyPairRequest interface. + */ +export function instanceOfPatchedCertificateKeyPairRequest( + value: object, +): value is PatchedCertificateKeyPairRequest { + return true; +} + +export function PatchedCertificateKeyPairRequestFromJSON( + json: any, +): PatchedCertificateKeyPairRequest { + return PatchedCertificateKeyPairRequestFromJSONTyped(json, false); +} + +export function PatchedCertificateKeyPairRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedCertificateKeyPairRequest { + if (json == null) { + return json; + } + return { + name: json["name"] == null ? undefined : json["name"], + certificateData: json["certificate_data"] == null ? undefined : json["certificate_data"], + keyData: json["key_data"] == null ? undefined : json["key_data"], + }; +} + +export function PatchedCertificateKeyPairRequestToJSON( + json: any, +): PatchedCertificateKeyPairRequest { + return PatchedCertificateKeyPairRequestToJSONTyped(json, false); +} + +export function PatchedCertificateKeyPairRequestToJSONTyped( + value?: PatchedCertificateKeyPairRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + certificate_data: value["certificateData"], + key_data: value["keyData"], + }; +} diff --git a/packages/client-ts/src/models/PatchedConnectionTokenRequest.ts b/packages/client-ts/src/models/PatchedConnectionTokenRequest.ts new file mode 100644 index 0000000000..251e71817f --- /dev/null +++ b/packages/client-ts/src/models/PatchedConnectionTokenRequest.ts @@ -0,0 +1,85 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * ConnectionToken Serializer + * @export + * @interface PatchedConnectionTokenRequest + */ +export interface PatchedConnectionTokenRequest { + /** + * + * @type {string} + * @memberof PatchedConnectionTokenRequest + */ + pk?: string; + /** + * + * @type {number} + * @memberof PatchedConnectionTokenRequest + */ + provider?: number; + /** + * + * @type {string} + * @memberof PatchedConnectionTokenRequest + */ + endpoint?: string; +} + +/** + * Check if a given object implements the PatchedConnectionTokenRequest interface. + */ +export function instanceOfPatchedConnectionTokenRequest( + value: object, +): value is PatchedConnectionTokenRequest { + return true; +} + +export function PatchedConnectionTokenRequestFromJSON(json: any): PatchedConnectionTokenRequest { + return PatchedConnectionTokenRequestFromJSONTyped(json, false); +} + +export function PatchedConnectionTokenRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedConnectionTokenRequest { + if (json == null) { + return json; + } + return { + pk: json["pk"] == null ? undefined : json["pk"], + provider: json["provider"] == null ? undefined : json["provider"], + endpoint: json["endpoint"] == null ? undefined : json["endpoint"], + }; +} + +export function PatchedConnectionTokenRequestToJSON(json: any): PatchedConnectionTokenRequest { + return PatchedConnectionTokenRequestToJSONTyped(json, false); +} + +export function PatchedConnectionTokenRequestToJSONTyped( + value?: PatchedConnectionTokenRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pk: value["pk"], + provider: value["provider"], + endpoint: value["endpoint"], + }; +} diff --git a/packages/client-ts/src/models/PatchedConsentStageRequest.ts b/packages/client-ts/src/models/PatchedConsentStageRequest.ts new file mode 100644 index 0000000000..e0ca3cf8ce --- /dev/null +++ b/packages/client-ts/src/models/PatchedConsentStageRequest.ts @@ -0,0 +1,88 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { ConsentModeEnum } from "./ConsentModeEnum"; +import { ConsentModeEnumFromJSON, ConsentModeEnumToJSON } from "./ConsentModeEnum"; + +/** + * ConsentStage Serializer + * @export + * @interface PatchedConsentStageRequest + */ +export interface PatchedConsentStageRequest { + /** + * + * @type {string} + * @memberof PatchedConsentStageRequest + */ + name?: string; + /** + * + * @type {ConsentModeEnum} + * @memberof PatchedConsentStageRequest + */ + mode?: ConsentModeEnum; + /** + * Offset after which consent expires. (Format: hours=1;minutes=2;seconds=3). + * @type {string} + * @memberof PatchedConsentStageRequest + */ + consentExpireIn?: string; +} + +/** + * Check if a given object implements the PatchedConsentStageRequest interface. + */ +export function instanceOfPatchedConsentStageRequest( + value: object, +): value is PatchedConsentStageRequest { + return true; +} + +export function PatchedConsentStageRequestFromJSON(json: any): PatchedConsentStageRequest { + return PatchedConsentStageRequestFromJSONTyped(json, false); +} + +export function PatchedConsentStageRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedConsentStageRequest { + if (json == null) { + return json; + } + return { + name: json["name"] == null ? undefined : json["name"], + mode: json["mode"] == null ? undefined : ConsentModeEnumFromJSON(json["mode"]), + consentExpireIn: json["consent_expire_in"] == null ? undefined : json["consent_expire_in"], + }; +} + +export function PatchedConsentStageRequestToJSON(json: any): PatchedConsentStageRequest { + return PatchedConsentStageRequestToJSONTyped(json, false); +} + +export function PatchedConsentStageRequestToJSONTyped( + value?: PatchedConsentStageRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + mode: ConsentModeEnumToJSON(value["mode"]), + consent_expire_in: value["consentExpireIn"], + }; +} diff --git a/packages/client-ts/src/models/PatchedDenyStageRequest.ts b/packages/client-ts/src/models/PatchedDenyStageRequest.ts new file mode 100644 index 0000000000..f5119331fa --- /dev/null +++ b/packages/client-ts/src/models/PatchedDenyStageRequest.ts @@ -0,0 +1,75 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * DenyStage Serializer + * @export + * @interface PatchedDenyStageRequest + */ +export interface PatchedDenyStageRequest { + /** + * + * @type {string} + * @memberof PatchedDenyStageRequest + */ + name?: string; + /** + * + * @type {string} + * @memberof PatchedDenyStageRequest + */ + denyMessage?: string; +} + +/** + * Check if a given object implements the PatchedDenyStageRequest interface. + */ +export function instanceOfPatchedDenyStageRequest(value: object): value is PatchedDenyStageRequest { + return true; +} + +export function PatchedDenyStageRequestFromJSON(json: any): PatchedDenyStageRequest { + return PatchedDenyStageRequestFromJSONTyped(json, false); +} + +export function PatchedDenyStageRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedDenyStageRequest { + if (json == null) { + return json; + } + return { + name: json["name"] == null ? undefined : json["name"], + denyMessage: json["deny_message"] == null ? undefined : json["deny_message"], + }; +} + +export function PatchedDenyStageRequestToJSON(json: any): PatchedDenyStageRequest { + return PatchedDenyStageRequestToJSONTyped(json, false); +} + +export function PatchedDenyStageRequestToJSONTyped( + value?: PatchedDenyStageRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + deny_message: value["denyMessage"], + }; +} diff --git a/packages/client-ts/src/models/PatchedDeviceAccessGroupRequest.ts b/packages/client-ts/src/models/PatchedDeviceAccessGroupRequest.ts new file mode 100644 index 0000000000..c5375efbf3 --- /dev/null +++ b/packages/client-ts/src/models/PatchedDeviceAccessGroupRequest.ts @@ -0,0 +1,79 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + * @interface PatchedDeviceAccessGroupRequest + */ +export interface PatchedDeviceAccessGroupRequest { + /** + * + * @type {string} + * @memberof PatchedDeviceAccessGroupRequest + */ + name?: string; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PatchedDeviceAccessGroupRequest + */ + attributes?: { [key: string]: any }; +} + +/** + * Check if a given object implements the PatchedDeviceAccessGroupRequest interface. + */ +export function instanceOfPatchedDeviceAccessGroupRequest( + value: object, +): value is PatchedDeviceAccessGroupRequest { + return true; +} + +export function PatchedDeviceAccessGroupRequestFromJSON( + json: any, +): PatchedDeviceAccessGroupRequest { + return PatchedDeviceAccessGroupRequestFromJSONTyped(json, false); +} + +export function PatchedDeviceAccessGroupRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedDeviceAccessGroupRequest { + if (json == null) { + return json; + } + return { + name: json["name"] == null ? undefined : json["name"], + attributes: json["attributes"] == null ? undefined : json["attributes"], + }; +} + +export function PatchedDeviceAccessGroupRequestToJSON(json: any): PatchedDeviceAccessGroupRequest { + return PatchedDeviceAccessGroupRequestToJSONTyped(json, false); +} + +export function PatchedDeviceAccessGroupRequestToJSONTyped( + value?: PatchedDeviceAccessGroupRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + attributes: value["attributes"], + }; +} diff --git a/packages/client-ts/src/models/PatchedDeviceUserBindingRequest.ts b/packages/client-ts/src/models/PatchedDeviceUserBindingRequest.ts new file mode 100644 index 0000000000..59d64bb3b9 --- /dev/null +++ b/packages/client-ts/src/models/PatchedDeviceUserBindingRequest.ts @@ -0,0 +1,143 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * PolicyBinding Serializer + * @export + * @interface PatchedDeviceUserBindingRequest + */ +export interface PatchedDeviceUserBindingRequest { + /** + * + * @type {string} + * @memberof PatchedDeviceUserBindingRequest + */ + policy?: string | null; + /** + * + * @type {string} + * @memberof PatchedDeviceUserBindingRequest + */ + group?: string | null; + /** + * + * @type {number} + * @memberof PatchedDeviceUserBindingRequest + */ + user?: number | null; + /** + * + * @type {string} + * @memberof PatchedDeviceUserBindingRequest + */ + target?: string; + /** + * Negates the outcome of the policy. Messages are unaffected. + * @type {boolean} + * @memberof PatchedDeviceUserBindingRequest + */ + negate?: boolean; + /** + * + * @type {boolean} + * @memberof PatchedDeviceUserBindingRequest + */ + enabled?: boolean; + /** + * + * @type {number} + * @memberof PatchedDeviceUserBindingRequest + */ + order?: number; + /** + * Timeout after which Policy execution is terminated. + * @type {number} + * @memberof PatchedDeviceUserBindingRequest + */ + timeout?: number; + /** + * Result if the Policy execution fails. + * @type {boolean} + * @memberof PatchedDeviceUserBindingRequest + */ + failureResult?: boolean; + /** + * + * @type {boolean} + * @memberof PatchedDeviceUserBindingRequest + */ + isPrimary?: boolean; +} + +/** + * Check if a given object implements the PatchedDeviceUserBindingRequest interface. + */ +export function instanceOfPatchedDeviceUserBindingRequest( + value: object, +): value is PatchedDeviceUserBindingRequest { + return true; +} + +export function PatchedDeviceUserBindingRequestFromJSON( + json: any, +): PatchedDeviceUserBindingRequest { + return PatchedDeviceUserBindingRequestFromJSONTyped(json, false); +} + +export function PatchedDeviceUserBindingRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedDeviceUserBindingRequest { + if (json == null) { + return json; + } + return { + policy: json["policy"] == null ? undefined : json["policy"], + group: json["group"] == null ? undefined : json["group"], + user: json["user"] == null ? undefined : json["user"], + target: json["target"] == null ? undefined : json["target"], + negate: json["negate"] == null ? undefined : json["negate"], + enabled: json["enabled"] == null ? undefined : json["enabled"], + order: json["order"] == null ? undefined : json["order"], + timeout: json["timeout"] == null ? undefined : json["timeout"], + failureResult: json["failure_result"] == null ? undefined : json["failure_result"], + isPrimary: json["is_primary"] == null ? undefined : json["is_primary"], + }; +} + +export function PatchedDeviceUserBindingRequestToJSON(json: any): PatchedDeviceUserBindingRequest { + return PatchedDeviceUserBindingRequestToJSONTyped(json, false); +} + +export function PatchedDeviceUserBindingRequestToJSONTyped( + value?: PatchedDeviceUserBindingRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + policy: value["policy"], + group: value["group"], + user: value["user"], + target: value["target"], + negate: value["negate"], + enabled: value["enabled"], + order: value["order"], + timeout: value["timeout"], + failure_result: value["failureResult"], + is_primary: value["isPrimary"], + }; +} diff --git a/packages/client-ts/src/models/PatchedDockerServiceConnectionRequest.ts b/packages/client-ts/src/models/PatchedDockerServiceConnectionRequest.ts new file mode 100644 index 0000000000..93d96da089 --- /dev/null +++ b/packages/client-ts/src/models/PatchedDockerServiceConnectionRequest.ts @@ -0,0 +1,106 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * DockerServiceConnection Serializer + * @export + * @interface PatchedDockerServiceConnectionRequest + */ +export interface PatchedDockerServiceConnectionRequest { + /** + * + * @type {string} + * @memberof PatchedDockerServiceConnectionRequest + */ + name?: string; + /** + * If enabled, use the local connection. Required Docker socket/Kubernetes Integration + * @type {boolean} + * @memberof PatchedDockerServiceConnectionRequest + */ + local?: boolean; + /** + * Can be in the format of 'unix://' when connecting to a local docker daemon, or 'https://:2376' when connecting to a remote system. + * @type {string} + * @memberof PatchedDockerServiceConnectionRequest + */ + url?: string; + /** + * CA which the endpoint's Certificate is verified against. Can be left empty for no validation. + * @type {string} + * @memberof PatchedDockerServiceConnectionRequest + */ + tlsVerification?: string | null; + /** + * Certificate/Key used for authentication. Can be left empty for no authentication. + * @type {string} + * @memberof PatchedDockerServiceConnectionRequest + */ + tlsAuthentication?: string | null; +} + +/** + * Check if a given object implements the PatchedDockerServiceConnectionRequest interface. + */ +export function instanceOfPatchedDockerServiceConnectionRequest( + value: object, +): value is PatchedDockerServiceConnectionRequest { + return true; +} + +export function PatchedDockerServiceConnectionRequestFromJSON( + json: any, +): PatchedDockerServiceConnectionRequest { + return PatchedDockerServiceConnectionRequestFromJSONTyped(json, false); +} + +export function PatchedDockerServiceConnectionRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedDockerServiceConnectionRequest { + if (json == null) { + return json; + } + return { + name: json["name"] == null ? undefined : json["name"], + local: json["local"] == null ? undefined : json["local"], + url: json["url"] == null ? undefined : json["url"], + tlsVerification: json["tls_verification"] == null ? undefined : json["tls_verification"], + tlsAuthentication: + json["tls_authentication"] == null ? undefined : json["tls_authentication"], + }; +} + +export function PatchedDockerServiceConnectionRequestToJSON( + json: any, +): PatchedDockerServiceConnectionRequest { + return PatchedDockerServiceConnectionRequestToJSONTyped(json, false); +} + +export function PatchedDockerServiceConnectionRequestToJSONTyped( + value?: PatchedDockerServiceConnectionRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + local: value["local"], + url: value["url"], + tls_verification: value["tlsVerification"], + tls_authentication: value["tlsAuthentication"], + }; +} diff --git a/packages/client-ts/src/models/PatchedDomainRequest.ts b/packages/client-ts/src/models/PatchedDomainRequest.ts new file mode 100644 index 0000000000..9e0da0eb55 --- /dev/null +++ b/packages/client-ts/src/models/PatchedDomainRequest.ts @@ -0,0 +1,83 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Domain Serializer + * @export + * @interface PatchedDomainRequest + */ +export interface PatchedDomainRequest { + /** + * + * @type {string} + * @memberof PatchedDomainRequest + */ + domain?: string; + /** + * + * @type {boolean} + * @memberof PatchedDomainRequest + */ + isPrimary?: boolean; + /** + * + * @type {string} + * @memberof PatchedDomainRequest + */ + tenant?: string; +} + +/** + * Check if a given object implements the PatchedDomainRequest interface. + */ +export function instanceOfPatchedDomainRequest(value: object): value is PatchedDomainRequest { + return true; +} + +export function PatchedDomainRequestFromJSON(json: any): PatchedDomainRequest { + return PatchedDomainRequestFromJSONTyped(json, false); +} + +export function PatchedDomainRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedDomainRequest { + if (json == null) { + return json; + } + return { + domain: json["domain"] == null ? undefined : json["domain"], + isPrimary: json["is_primary"] == null ? undefined : json["is_primary"], + tenant: json["tenant"] == null ? undefined : json["tenant"], + }; +} + +export function PatchedDomainRequestToJSON(json: any): PatchedDomainRequest { + return PatchedDomainRequestToJSONTyped(json, false); +} + +export function PatchedDomainRequestToJSONTyped( + value?: PatchedDomainRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + domain: value["domain"], + is_primary: value["isPrimary"], + tenant: value["tenant"], + }; +} diff --git a/packages/client-ts/src/models/PatchedDummyPolicyRequest.ts b/packages/client-ts/src/models/PatchedDummyPolicyRequest.ts new file mode 100644 index 0000000000..681d36c6d9 --- /dev/null +++ b/packages/client-ts/src/models/PatchedDummyPolicyRequest.ts @@ -0,0 +1,101 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Dummy Policy Serializer + * @export + * @interface PatchedDummyPolicyRequest + */ +export interface PatchedDummyPolicyRequest { + /** + * + * @type {string} + * @memberof PatchedDummyPolicyRequest + */ + name?: string; + /** + * When this option is enabled, all executions of this policy will be logged. By default, only execution errors are logged. + * @type {boolean} + * @memberof PatchedDummyPolicyRequest + */ + executionLogging?: boolean; + /** + * + * @type {boolean} + * @memberof PatchedDummyPolicyRequest + */ + result?: boolean; + /** + * + * @type {number} + * @memberof PatchedDummyPolicyRequest + */ + waitMin?: number; + /** + * + * @type {number} + * @memberof PatchedDummyPolicyRequest + */ + waitMax?: number; +} + +/** + * Check if a given object implements the PatchedDummyPolicyRequest interface. + */ +export function instanceOfPatchedDummyPolicyRequest( + value: object, +): value is PatchedDummyPolicyRequest { + return true; +} + +export function PatchedDummyPolicyRequestFromJSON(json: any): PatchedDummyPolicyRequest { + return PatchedDummyPolicyRequestFromJSONTyped(json, false); +} + +export function PatchedDummyPolicyRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedDummyPolicyRequest { + if (json == null) { + return json; + } + return { + name: json["name"] == null ? undefined : json["name"], + executionLogging: json["execution_logging"] == null ? undefined : json["execution_logging"], + result: json["result"] == null ? undefined : json["result"], + waitMin: json["wait_min"] == null ? undefined : json["wait_min"], + waitMax: json["wait_max"] == null ? undefined : json["wait_max"], + }; +} + +export function PatchedDummyPolicyRequestToJSON(json: any): PatchedDummyPolicyRequest { + return PatchedDummyPolicyRequestToJSONTyped(json, false); +} + +export function PatchedDummyPolicyRequestToJSONTyped( + value?: PatchedDummyPolicyRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + execution_logging: value["executionLogging"], + result: value["result"], + wait_min: value["waitMin"], + wait_max: value["waitMax"], + }; +} diff --git a/packages/client-ts/src/models/PatchedDummyStageRequest.ts b/packages/client-ts/src/models/PatchedDummyStageRequest.ts new file mode 100644 index 0000000000..bbdb99a546 --- /dev/null +++ b/packages/client-ts/src/models/PatchedDummyStageRequest.ts @@ -0,0 +1,77 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * DummyStage Serializer + * @export + * @interface PatchedDummyStageRequest + */ +export interface PatchedDummyStageRequest { + /** + * + * @type {string} + * @memberof PatchedDummyStageRequest + */ + name?: string; + /** + * + * @type {boolean} + * @memberof PatchedDummyStageRequest + */ + throwError?: boolean; +} + +/** + * Check if a given object implements the PatchedDummyStageRequest interface. + */ +export function instanceOfPatchedDummyStageRequest( + value: object, +): value is PatchedDummyStageRequest { + return true; +} + +export function PatchedDummyStageRequestFromJSON(json: any): PatchedDummyStageRequest { + return PatchedDummyStageRequestFromJSONTyped(json, false); +} + +export function PatchedDummyStageRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedDummyStageRequest { + if (json == null) { + return json; + } + return { + name: json["name"] == null ? undefined : json["name"], + throwError: json["throw_error"] == null ? undefined : json["throw_error"], + }; +} + +export function PatchedDummyStageRequestToJSON(json: any): PatchedDummyStageRequest { + return PatchedDummyStageRequestToJSONTyped(json, false); +} + +export function PatchedDummyStageRequestToJSONTyped( + value?: PatchedDummyStageRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + throw_error: value["throwError"], + }; +} diff --git a/packages/client-ts/src/models/PatchedDuoDeviceRequest.ts b/packages/client-ts/src/models/PatchedDuoDeviceRequest.ts new file mode 100644 index 0000000000..f6fb65b825 --- /dev/null +++ b/packages/client-ts/src/models/PatchedDuoDeviceRequest.ts @@ -0,0 +1,67 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Serializer for Duo authenticator devices + * @export + * @interface PatchedDuoDeviceRequest + */ +export interface PatchedDuoDeviceRequest { + /** + * The human-readable name of this device. + * @type {string} + * @memberof PatchedDuoDeviceRequest + */ + name?: string; +} + +/** + * Check if a given object implements the PatchedDuoDeviceRequest interface. + */ +export function instanceOfPatchedDuoDeviceRequest(value: object): value is PatchedDuoDeviceRequest { + return true; +} + +export function PatchedDuoDeviceRequestFromJSON(json: any): PatchedDuoDeviceRequest { + return PatchedDuoDeviceRequestFromJSONTyped(json, false); +} + +export function PatchedDuoDeviceRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedDuoDeviceRequest { + if (json == null) { + return json; + } + return { + name: json["name"] == null ? undefined : json["name"], + }; +} + +export function PatchedDuoDeviceRequestToJSON(json: any): PatchedDuoDeviceRequest { + return PatchedDuoDeviceRequestToJSONTyped(json, false); +} + +export function PatchedDuoDeviceRequestToJSONTyped( + value?: PatchedDuoDeviceRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + }; +} diff --git a/packages/client-ts/src/models/PatchedEmailDeviceRequest.ts b/packages/client-ts/src/models/PatchedEmailDeviceRequest.ts new file mode 100644 index 0000000000..2132d7f690 --- /dev/null +++ b/packages/client-ts/src/models/PatchedEmailDeviceRequest.ts @@ -0,0 +1,69 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Serializer for email authenticator devices + * @export + * @interface PatchedEmailDeviceRequest + */ +export interface PatchedEmailDeviceRequest { + /** + * The human-readable name of this device. + * @type {string} + * @memberof PatchedEmailDeviceRequest + */ + name?: string; +} + +/** + * Check if a given object implements the PatchedEmailDeviceRequest interface. + */ +export function instanceOfPatchedEmailDeviceRequest( + value: object, +): value is PatchedEmailDeviceRequest { + return true; +} + +export function PatchedEmailDeviceRequestFromJSON(json: any): PatchedEmailDeviceRequest { + return PatchedEmailDeviceRequestFromJSONTyped(json, false); +} + +export function PatchedEmailDeviceRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedEmailDeviceRequest { + if (json == null) { + return json; + } + return { + name: json["name"] == null ? undefined : json["name"], + }; +} + +export function PatchedEmailDeviceRequestToJSON(json: any): PatchedEmailDeviceRequest { + return PatchedEmailDeviceRequestToJSONTyped(json, false); +} + +export function PatchedEmailDeviceRequestToJSONTyped( + value?: PatchedEmailDeviceRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + }; +} diff --git a/packages/client-ts/src/models/PatchedEmailStageRequest.ts b/packages/client-ts/src/models/PatchedEmailStageRequest.ts new file mode 100644 index 0000000000..e6a6a00f5b --- /dev/null +++ b/packages/client-ts/src/models/PatchedEmailStageRequest.ts @@ -0,0 +1,193 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * EmailStage Serializer + * @export + * @interface PatchedEmailStageRequest + */ +export interface PatchedEmailStageRequest { + /** + * + * @type {string} + * @memberof PatchedEmailStageRequest + */ + name?: string; + /** + * When enabled, global Email connection settings will be used and connection settings below will be ignored. + * @type {boolean} + * @memberof PatchedEmailStageRequest + */ + useGlobalSettings?: boolean; + /** + * + * @type {string} + * @memberof PatchedEmailStageRequest + */ + host?: string; + /** + * + * @type {number} + * @memberof PatchedEmailStageRequest + */ + port?: number; + /** + * + * @type {string} + * @memberof PatchedEmailStageRequest + */ + username?: string; + /** + * + * @type {string} + * @memberof PatchedEmailStageRequest + */ + password?: string; + /** + * + * @type {boolean} + * @memberof PatchedEmailStageRequest + */ + useTls?: boolean; + /** + * + * @type {boolean} + * @memberof PatchedEmailStageRequest + */ + useSsl?: boolean; + /** + * + * @type {number} + * @memberof PatchedEmailStageRequest + */ + timeout?: number; + /** + * + * @type {string} + * @memberof PatchedEmailStageRequest + */ + fromAddress?: string; + /** + * Time the token sent is valid (Format: hours=3,minutes=17,seconds=300). + * @type {string} + * @memberof PatchedEmailStageRequest + */ + tokenExpiry?: string; + /** + * + * @type {string} + * @memberof PatchedEmailStageRequest + */ + subject?: string; + /** + * + * @type {string} + * @memberof PatchedEmailStageRequest + */ + template?: string; + /** + * Activate users upon completion of stage. + * @type {boolean} + * @memberof PatchedEmailStageRequest + */ + activateUserOnSuccess?: boolean; + /** + * + * @type {number} + * @memberof PatchedEmailStageRequest + */ + recoveryMaxAttempts?: number; + /** + * The time window used to count recent account recovery attempts. If the number of attempts exceed recovery_max_attempts within this period, further attempts will be rate-limited. (Format: hours=1;minutes=2;seconds=3). + * @type {string} + * @memberof PatchedEmailStageRequest + */ + recoveryCacheTimeout?: string; +} + +/** + * Check if a given object implements the PatchedEmailStageRequest interface. + */ +export function instanceOfPatchedEmailStageRequest( + value: object, +): value is PatchedEmailStageRequest { + return true; +} + +export function PatchedEmailStageRequestFromJSON(json: any): PatchedEmailStageRequest { + return PatchedEmailStageRequestFromJSONTyped(json, false); +} + +export function PatchedEmailStageRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedEmailStageRequest { + if (json == null) { + return json; + } + return { + name: json["name"] == null ? undefined : json["name"], + useGlobalSettings: + json["use_global_settings"] == null ? undefined : json["use_global_settings"], + host: json["host"] == null ? undefined : json["host"], + port: json["port"] == null ? undefined : json["port"], + username: json["username"] == null ? undefined : json["username"], + password: json["password"] == null ? undefined : json["password"], + useTls: json["use_tls"] == null ? undefined : json["use_tls"], + useSsl: json["use_ssl"] == null ? undefined : json["use_ssl"], + timeout: json["timeout"] == null ? undefined : json["timeout"], + fromAddress: json["from_address"] == null ? undefined : json["from_address"], + tokenExpiry: json["token_expiry"] == null ? undefined : json["token_expiry"], + subject: json["subject"] == null ? undefined : json["subject"], + template: json["template"] == null ? undefined : json["template"], + activateUserOnSuccess: + json["activate_user_on_success"] == null ? undefined : json["activate_user_on_success"], + recoveryMaxAttempts: + json["recovery_max_attempts"] == null ? undefined : json["recovery_max_attempts"], + recoveryCacheTimeout: + json["recovery_cache_timeout"] == null ? undefined : json["recovery_cache_timeout"], + }; +} + +export function PatchedEmailStageRequestToJSON(json: any): PatchedEmailStageRequest { + return PatchedEmailStageRequestToJSONTyped(json, false); +} + +export function PatchedEmailStageRequestToJSONTyped( + value?: PatchedEmailStageRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + use_global_settings: value["useGlobalSettings"], + host: value["host"], + port: value["port"], + username: value["username"], + password: value["password"], + use_tls: value["useTls"], + use_ssl: value["useSsl"], + timeout: value["timeout"], + from_address: value["fromAddress"], + token_expiry: value["tokenExpiry"], + subject: value["subject"], + template: value["template"], + activate_user_on_success: value["activateUserOnSuccess"], + recovery_max_attempts: value["recoveryMaxAttempts"], + recovery_cache_timeout: value["recoveryCacheTimeout"], + }; +} diff --git a/packages/client-ts/src/models/PatchedEndpointDeviceRequest.ts b/packages/client-ts/src/models/PatchedEndpointDeviceRequest.ts new file mode 100644 index 0000000000..d11f20b814 --- /dev/null +++ b/packages/client-ts/src/models/PatchedEndpointDeviceRequest.ts @@ -0,0 +1,126 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { DeviceAccessGroupRequest } from "./DeviceAccessGroupRequest"; +import { + DeviceAccessGroupRequestFromJSON, + DeviceAccessGroupRequestToJSON, +} from "./DeviceAccessGroupRequest"; + +/** + * + * @export + * @interface PatchedEndpointDeviceRequest + */ +export interface PatchedEndpointDeviceRequest { + /** + * + * @type {string} + * @memberof PatchedEndpointDeviceRequest + */ + deviceUuid?: string; + /** + * + * @type {string} + * @memberof PatchedEndpointDeviceRequest + */ + name?: string; + /** + * + * @type {string} + * @memberof PatchedEndpointDeviceRequest + */ + accessGroup?: string | null; + /** + * + * @type {DeviceAccessGroupRequest} + * @memberof PatchedEndpointDeviceRequest + */ + accessGroupObj?: DeviceAccessGroupRequest; + /** + * + * @type {boolean} + * @memberof PatchedEndpointDeviceRequest + */ + expiring?: boolean; + /** + * + * @type {Date} + * @memberof PatchedEndpointDeviceRequest + */ + expires?: Date | null; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PatchedEndpointDeviceRequest + */ + attributes?: { [key: string]: any }; +} + +/** + * Check if a given object implements the PatchedEndpointDeviceRequest interface. + */ +export function instanceOfPatchedEndpointDeviceRequest( + value: object, +): value is PatchedEndpointDeviceRequest { + return true; +} + +export function PatchedEndpointDeviceRequestFromJSON(json: any): PatchedEndpointDeviceRequest { + return PatchedEndpointDeviceRequestFromJSONTyped(json, false); +} + +export function PatchedEndpointDeviceRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedEndpointDeviceRequest { + if (json == null) { + return json; + } + return { + deviceUuid: json["device_uuid"] == null ? undefined : json["device_uuid"], + name: json["name"] == null ? undefined : json["name"], + accessGroup: json["access_group"] == null ? undefined : json["access_group"], + accessGroupObj: + json["access_group_obj"] == null + ? undefined + : DeviceAccessGroupRequestFromJSON(json["access_group_obj"]), + expiring: json["expiring"] == null ? undefined : json["expiring"], + expires: json["expires"] == null ? undefined : new Date(json["expires"]), + attributes: json["attributes"] == null ? undefined : json["attributes"], + }; +} + +export function PatchedEndpointDeviceRequestToJSON(json: any): PatchedEndpointDeviceRequest { + return PatchedEndpointDeviceRequestToJSONTyped(json, false); +} + +export function PatchedEndpointDeviceRequestToJSONTyped( + value?: PatchedEndpointDeviceRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + device_uuid: value["deviceUuid"], + name: value["name"], + access_group: value["accessGroup"], + access_group_obj: DeviceAccessGroupRequestToJSON(value["accessGroupObj"]), + expiring: value["expiring"], + expires: value["expires"] == null ? value["expires"] : value["expires"].toISOString(), + attributes: value["attributes"], + }; +} diff --git a/packages/client-ts/src/models/PatchedEndpointRequest.ts b/packages/client-ts/src/models/PatchedEndpointRequest.ts new file mode 100644 index 0000000000..30d1046d84 --- /dev/null +++ b/packages/client-ts/src/models/PatchedEndpointRequest.ts @@ -0,0 +1,130 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { EndpointAuthModeEnum } from "./EndpointAuthModeEnum"; +import { EndpointAuthModeEnumFromJSON, EndpointAuthModeEnumToJSON } from "./EndpointAuthModeEnum"; +import type { ProtocolEnum } from "./ProtocolEnum"; +import { ProtocolEnumFromJSON, ProtocolEnumToJSON } from "./ProtocolEnum"; + +/** + * Endpoint Serializer + * @export + * @interface PatchedEndpointRequest + */ +export interface PatchedEndpointRequest { + /** + * + * @type {string} + * @memberof PatchedEndpointRequest + */ + name?: string; + /** + * + * @type {number} + * @memberof PatchedEndpointRequest + */ + provider?: number; + /** + * + * @type {ProtocolEnum} + * @memberof PatchedEndpointRequest + */ + protocol?: ProtocolEnum; + /** + * + * @type {string} + * @memberof PatchedEndpointRequest + */ + host?: string; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PatchedEndpointRequest + */ + settings?: { [key: string]: any }; + /** + * + * @type {Array} + * @memberof PatchedEndpointRequest + */ + propertyMappings?: Array; + /** + * + * @type {EndpointAuthModeEnum} + * @memberof PatchedEndpointRequest + */ + authMode?: EndpointAuthModeEnum; + /** + * + * @type {number} + * @memberof PatchedEndpointRequest + */ + maximumConnections?: number; +} + +/** + * Check if a given object implements the PatchedEndpointRequest interface. + */ +export function instanceOfPatchedEndpointRequest(value: object): value is PatchedEndpointRequest { + return true; +} + +export function PatchedEndpointRequestFromJSON(json: any): PatchedEndpointRequest { + return PatchedEndpointRequestFromJSONTyped(json, false); +} + +export function PatchedEndpointRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedEndpointRequest { + if (json == null) { + return json; + } + return { + name: json["name"] == null ? undefined : json["name"], + provider: json["provider"] == null ? undefined : json["provider"], + protocol: json["protocol"] == null ? undefined : ProtocolEnumFromJSON(json["protocol"]), + host: json["host"] == null ? undefined : json["host"], + settings: json["settings"] == null ? undefined : json["settings"], + propertyMappings: json["property_mappings"] == null ? undefined : json["property_mappings"], + authMode: + json["auth_mode"] == null ? undefined : EndpointAuthModeEnumFromJSON(json["auth_mode"]), + maximumConnections: + json["maximum_connections"] == null ? undefined : json["maximum_connections"], + }; +} + +export function PatchedEndpointRequestToJSON(json: any): PatchedEndpointRequest { + return PatchedEndpointRequestToJSONTyped(json, false); +} + +export function PatchedEndpointRequestToJSONTyped( + value?: PatchedEndpointRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + provider: value["provider"], + protocol: ProtocolEnumToJSON(value["protocol"]), + host: value["host"], + settings: value["settings"], + property_mappings: value["propertyMappings"], + auth_mode: EndpointAuthModeEnumToJSON(value["authMode"]), + maximum_connections: value["maximumConnections"], + }; +} diff --git a/packages/client-ts/src/models/PatchedEndpointStageRequest.ts b/packages/client-ts/src/models/PatchedEndpointStageRequest.ts new file mode 100644 index 0000000000..f5ebc8b50e --- /dev/null +++ b/packages/client-ts/src/models/PatchedEndpointStageRequest.ts @@ -0,0 +1,88 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { StageModeEnum } from "./StageModeEnum"; +import { StageModeEnumFromJSON, StageModeEnumToJSON } from "./StageModeEnum"; + +/** + * EndpointStage Serializer + * @export + * @interface PatchedEndpointStageRequest + */ +export interface PatchedEndpointStageRequest { + /** + * + * @type {string} + * @memberof PatchedEndpointStageRequest + */ + name?: string; + /** + * + * @type {string} + * @memberof PatchedEndpointStageRequest + */ + connector?: string; + /** + * + * @type {StageModeEnum} + * @memberof PatchedEndpointStageRequest + */ + mode?: StageModeEnum; +} + +/** + * Check if a given object implements the PatchedEndpointStageRequest interface. + */ +export function instanceOfPatchedEndpointStageRequest( + value: object, +): value is PatchedEndpointStageRequest { + return true; +} + +export function PatchedEndpointStageRequestFromJSON(json: any): PatchedEndpointStageRequest { + return PatchedEndpointStageRequestFromJSONTyped(json, false); +} + +export function PatchedEndpointStageRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedEndpointStageRequest { + if (json == null) { + return json; + } + return { + name: json["name"] == null ? undefined : json["name"], + connector: json["connector"] == null ? undefined : json["connector"], + mode: json["mode"] == null ? undefined : StageModeEnumFromJSON(json["mode"]), + }; +} + +export function PatchedEndpointStageRequestToJSON(json: any): PatchedEndpointStageRequest { + return PatchedEndpointStageRequestToJSONTyped(json, false); +} + +export function PatchedEndpointStageRequestToJSONTyped( + value?: PatchedEndpointStageRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + connector: value["connector"], + mode: StageModeEnumToJSON(value["mode"]), + }; +} diff --git a/packages/client-ts/src/models/PatchedEnrollmentTokenRequest.ts b/packages/client-ts/src/models/PatchedEnrollmentTokenRequest.ts new file mode 100644 index 0000000000..1822d2b008 --- /dev/null +++ b/packages/client-ts/src/models/PatchedEnrollmentTokenRequest.ts @@ -0,0 +1,101 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + * @interface PatchedEnrollmentTokenRequest + */ +export interface PatchedEnrollmentTokenRequest { + /** + * + * @type {string} + * @memberof PatchedEnrollmentTokenRequest + */ + deviceGroup?: string | null; + /** + * + * @type {string} + * @memberof PatchedEnrollmentTokenRequest + */ + connector?: string; + /** + * + * @type {string} + * @memberof PatchedEnrollmentTokenRequest + */ + name?: string; + /** + * + * @type {boolean} + * @memberof PatchedEnrollmentTokenRequest + */ + expiring?: boolean; + /** + * + * @type {Date} + * @memberof PatchedEnrollmentTokenRequest + */ + expires?: Date | null; +} + +/** + * Check if a given object implements the PatchedEnrollmentTokenRequest interface. + */ +export function instanceOfPatchedEnrollmentTokenRequest( + value: object, +): value is PatchedEnrollmentTokenRequest { + return true; +} + +export function PatchedEnrollmentTokenRequestFromJSON(json: any): PatchedEnrollmentTokenRequest { + return PatchedEnrollmentTokenRequestFromJSONTyped(json, false); +} + +export function PatchedEnrollmentTokenRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedEnrollmentTokenRequest { + if (json == null) { + return json; + } + return { + deviceGroup: json["device_group"] == null ? undefined : json["device_group"], + connector: json["connector"] == null ? undefined : json["connector"], + name: json["name"] == null ? undefined : json["name"], + expiring: json["expiring"] == null ? undefined : json["expiring"], + expires: json["expires"] == null ? undefined : new Date(json["expires"]), + }; +} + +export function PatchedEnrollmentTokenRequestToJSON(json: any): PatchedEnrollmentTokenRequest { + return PatchedEnrollmentTokenRequestToJSONTyped(json, false); +} + +export function PatchedEnrollmentTokenRequestToJSONTyped( + value?: PatchedEnrollmentTokenRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + device_group: value["deviceGroup"], + connector: value["connector"], + name: value["name"], + expiring: value["expiring"], + expires: value["expires"] == null ? value["expires"] : value["expires"].toISOString(), + }; +} diff --git a/packages/client-ts/src/models/PatchedEventMatcherPolicyRequest.ts b/packages/client-ts/src/models/PatchedEventMatcherPolicyRequest.ts new file mode 100644 index 0000000000..0a38fdeda9 --- /dev/null +++ b/packages/client-ts/src/models/PatchedEventMatcherPolicyRequest.ts @@ -0,0 +1,128 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { AppEnum } from "./AppEnum"; +import { AppEnumFromJSON, AppEnumToJSON } from "./AppEnum"; +import type { EventActions } from "./EventActions"; +import { EventActionsFromJSON, EventActionsToJSON } from "./EventActions"; +import type { ModelEnum } from "./ModelEnum"; +import { ModelEnumFromJSON, ModelEnumToJSON } from "./ModelEnum"; + +/** + * Event Matcher Policy Serializer + * @export + * @interface PatchedEventMatcherPolicyRequest + */ +export interface PatchedEventMatcherPolicyRequest { + /** + * + * @type {string} + * @memberof PatchedEventMatcherPolicyRequest + */ + name?: string; + /** + * When this option is enabled, all executions of this policy will be logged. By default, only execution errors are logged. + * @type {boolean} + * @memberof PatchedEventMatcherPolicyRequest + */ + executionLogging?: boolean; + /** + * Match created events with this action type. When left empty, all action types will be matched. + * @type {EventActions} + * @memberof PatchedEventMatcherPolicyRequest + */ + action?: EventActions | null; + /** + * Matches Event's Client IP (strict matching, for network matching use an Expression Policy) + * @type {string} + * @memberof PatchedEventMatcherPolicyRequest + */ + clientIp?: string | null; + /** + * Match events created by selected application. When left empty, all applications are matched. + * @type {AppEnum} + * @memberof PatchedEventMatcherPolicyRequest + */ + app?: AppEnum | null; + /** + * Match events created by selected model. When left empty, all models are matched. When an app is selected, all the application's models are matched. + * @type {ModelEnum} + * @memberof PatchedEventMatcherPolicyRequest + */ + model?: ModelEnum | null; + /** + * + * @type {string} + * @memberof PatchedEventMatcherPolicyRequest + */ + query?: string | null; +} + +/** + * Check if a given object implements the PatchedEventMatcherPolicyRequest interface. + */ +export function instanceOfPatchedEventMatcherPolicyRequest( + value: object, +): value is PatchedEventMatcherPolicyRequest { + return true; +} + +export function PatchedEventMatcherPolicyRequestFromJSON( + json: any, +): PatchedEventMatcherPolicyRequest { + return PatchedEventMatcherPolicyRequestFromJSONTyped(json, false); +} + +export function PatchedEventMatcherPolicyRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedEventMatcherPolicyRequest { + if (json == null) { + return json; + } + return { + name: json["name"] == null ? undefined : json["name"], + executionLogging: json["execution_logging"] == null ? undefined : json["execution_logging"], + action: json["action"] == null ? undefined : EventActionsFromJSON(json["action"]), + clientIp: json["client_ip"] == null ? undefined : json["client_ip"], + app: json["app"] == null ? undefined : AppEnumFromJSON(json["app"]), + model: json["model"] == null ? undefined : ModelEnumFromJSON(json["model"]), + query: json["query"] == null ? undefined : json["query"], + }; +} + +export function PatchedEventMatcherPolicyRequestToJSON( + json: any, +): PatchedEventMatcherPolicyRequest { + return PatchedEventMatcherPolicyRequestToJSONTyped(json, false); +} + +export function PatchedEventMatcherPolicyRequestToJSONTyped( + value?: PatchedEventMatcherPolicyRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + execution_logging: value["executionLogging"], + action: EventActionsToJSON(value["action"]), + client_ip: value["clientIp"], + app: AppEnumToJSON(value["app"]), + model: ModelEnumToJSON(value["model"]), + query: value["query"], + }; +} diff --git a/packages/client-ts/src/models/PatchedEventRequest.ts b/packages/client-ts/src/models/PatchedEventRequest.ts new file mode 100644 index 0000000000..38db223b42 --- /dev/null +++ b/packages/client-ts/src/models/PatchedEventRequest.ts @@ -0,0 +1,118 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { EventActions } from "./EventActions"; +import { EventActionsFromJSON, EventActionsToJSON } from "./EventActions"; + +/** + * Event Serializer + * @export + * @interface PatchedEventRequest + */ +export interface PatchedEventRequest { + /** + * + * @type {{ [key: string]: any; }} + * @memberof PatchedEventRequest + */ + user?: { [key: string]: any }; + /** + * + * @type {EventActions} + * @memberof PatchedEventRequest + */ + action?: EventActions; + /** + * + * @type {string} + * @memberof PatchedEventRequest + */ + app?: string; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PatchedEventRequest + */ + context?: { [key: string]: any }; + /** + * + * @type {string} + * @memberof PatchedEventRequest + */ + clientIp?: string | null; + /** + * + * @type {Date} + * @memberof PatchedEventRequest + */ + expires?: Date; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PatchedEventRequest + */ + brand?: { [key: string]: any }; +} + +/** + * Check if a given object implements the PatchedEventRequest interface. + */ +export function instanceOfPatchedEventRequest(value: object): value is PatchedEventRequest { + return true; +} + +export function PatchedEventRequestFromJSON(json: any): PatchedEventRequest { + return PatchedEventRequestFromJSONTyped(json, false); +} + +export function PatchedEventRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedEventRequest { + if (json == null) { + return json; + } + return { + user: json["user"] == null ? undefined : json["user"], + action: json["action"] == null ? undefined : EventActionsFromJSON(json["action"]), + app: json["app"] == null ? undefined : json["app"], + context: json["context"] == null ? undefined : json["context"], + clientIp: json["client_ip"] == null ? undefined : json["client_ip"], + expires: json["expires"] == null ? undefined : new Date(json["expires"]), + brand: json["brand"] == null ? undefined : json["brand"], + }; +} + +export function PatchedEventRequestToJSON(json: any): PatchedEventRequest { + return PatchedEventRequestToJSONTyped(json, false); +} + +export function PatchedEventRequestToJSONTyped( + value?: PatchedEventRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + user: value["user"], + action: EventActionsToJSON(value["action"]), + app: value["app"], + context: value["context"], + client_ip: value["clientIp"], + expires: value["expires"] == null ? value["expires"] : value["expires"].toISOString(), + brand: value["brand"], + }; +} diff --git a/packages/client-ts/src/models/PatchedExpressionPolicyRequest.ts b/packages/client-ts/src/models/PatchedExpressionPolicyRequest.ts new file mode 100644 index 0000000000..cb6ac21b14 --- /dev/null +++ b/packages/client-ts/src/models/PatchedExpressionPolicyRequest.ts @@ -0,0 +1,85 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Group Membership Policy Serializer + * @export + * @interface PatchedExpressionPolicyRequest + */ +export interface PatchedExpressionPolicyRequest { + /** + * + * @type {string} + * @memberof PatchedExpressionPolicyRequest + */ + name?: string; + /** + * When this option is enabled, all executions of this policy will be logged. By default, only execution errors are logged. + * @type {boolean} + * @memberof PatchedExpressionPolicyRequest + */ + executionLogging?: boolean; + /** + * + * @type {string} + * @memberof PatchedExpressionPolicyRequest + */ + expression?: string; +} + +/** + * Check if a given object implements the PatchedExpressionPolicyRequest interface. + */ +export function instanceOfPatchedExpressionPolicyRequest( + value: object, +): value is PatchedExpressionPolicyRequest { + return true; +} + +export function PatchedExpressionPolicyRequestFromJSON(json: any): PatchedExpressionPolicyRequest { + return PatchedExpressionPolicyRequestFromJSONTyped(json, false); +} + +export function PatchedExpressionPolicyRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedExpressionPolicyRequest { + if (json == null) { + return json; + } + return { + name: json["name"] == null ? undefined : json["name"], + executionLogging: json["execution_logging"] == null ? undefined : json["execution_logging"], + expression: json["expression"] == null ? undefined : json["expression"], + }; +} + +export function PatchedExpressionPolicyRequestToJSON(json: any): PatchedExpressionPolicyRequest { + return PatchedExpressionPolicyRequestToJSONTyped(json, false); +} + +export function PatchedExpressionPolicyRequestToJSONTyped( + value?: PatchedExpressionPolicyRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + execution_logging: value["executionLogging"], + expression: value["expression"], + }; +} diff --git a/packages/client-ts/src/models/PatchedFleetConnectorRequest.ts b/packages/client-ts/src/models/PatchedFleetConnectorRequest.ts new file mode 100644 index 0000000000..49a48a40e8 --- /dev/null +++ b/packages/client-ts/src/models/PatchedFleetConnectorRequest.ts @@ -0,0 +1,126 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * FleetConnector Serializer + * @export + * @interface PatchedFleetConnectorRequest + */ +export interface PatchedFleetConnectorRequest { + /** + * + * @type {string} + * @memberof PatchedFleetConnectorRequest + */ + connectorUuid?: string; + /** + * + * @type {string} + * @memberof PatchedFleetConnectorRequest + */ + name?: string; + /** + * + * @type {boolean} + * @memberof PatchedFleetConnectorRequest + */ + enabled?: boolean; + /** + * + * @type {string} + * @memberof PatchedFleetConnectorRequest + */ + url?: string; + /** + * + * @type {string} + * @memberof PatchedFleetConnectorRequest + */ + token?: string; + /** + * Configure additional headers to be sent. Mapping should return a dictionary of key-value pairs + * @type {string} + * @memberof PatchedFleetConnectorRequest + */ + headersMapping?: string | null; + /** + * + * @type {boolean} + * @memberof PatchedFleetConnectorRequest + */ + mapUsers?: boolean; + /** + * + * @type {boolean} + * @memberof PatchedFleetConnectorRequest + */ + mapTeamsAccessGroup?: boolean; +} + +/** + * Check if a given object implements the PatchedFleetConnectorRequest interface. + */ +export function instanceOfPatchedFleetConnectorRequest( + value: object, +): value is PatchedFleetConnectorRequest { + return true; +} + +export function PatchedFleetConnectorRequestFromJSON(json: any): PatchedFleetConnectorRequest { + return PatchedFleetConnectorRequestFromJSONTyped(json, false); +} + +export function PatchedFleetConnectorRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedFleetConnectorRequest { + if (json == null) { + return json; + } + return { + connectorUuid: json["connector_uuid"] == null ? undefined : json["connector_uuid"], + name: json["name"] == null ? undefined : json["name"], + enabled: json["enabled"] == null ? undefined : json["enabled"], + url: json["url"] == null ? undefined : json["url"], + token: json["token"] == null ? undefined : json["token"], + headersMapping: json["headers_mapping"] == null ? undefined : json["headers_mapping"], + mapUsers: json["map_users"] == null ? undefined : json["map_users"], + mapTeamsAccessGroup: + json["map_teams_access_group"] == null ? undefined : json["map_teams_access_group"], + }; +} + +export function PatchedFleetConnectorRequestToJSON(json: any): PatchedFleetConnectorRequest { + return PatchedFleetConnectorRequestToJSONTyped(json, false); +} + +export function PatchedFleetConnectorRequestToJSONTyped( + value?: PatchedFleetConnectorRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + connector_uuid: value["connectorUuid"], + name: value["name"], + enabled: value["enabled"], + url: value["url"], + token: value["token"], + headers_mapping: value["headersMapping"], + map_users: value["mapUsers"], + map_teams_access_group: value["mapTeamsAccessGroup"], + }; +} diff --git a/packages/client-ts/src/models/PatchedFlowRequest.ts b/packages/client-ts/src/models/PatchedFlowRequest.ts new file mode 100644 index 0000000000..3075c515ea --- /dev/null +++ b/packages/client-ts/src/models/PatchedFlowRequest.ts @@ -0,0 +1,163 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { AuthenticationEnum } from "./AuthenticationEnum"; +import { AuthenticationEnumFromJSON, AuthenticationEnumToJSON } from "./AuthenticationEnum"; +import type { DeniedActionEnum } from "./DeniedActionEnum"; +import { DeniedActionEnumFromJSON, DeniedActionEnumToJSON } from "./DeniedActionEnum"; +import type { FlowDesignationEnum } from "./FlowDesignationEnum"; +import { FlowDesignationEnumFromJSON, FlowDesignationEnumToJSON } from "./FlowDesignationEnum"; +import type { FlowLayoutEnum } from "./FlowLayoutEnum"; +import { FlowLayoutEnumFromJSON, FlowLayoutEnumToJSON } from "./FlowLayoutEnum"; +import type { PolicyEngineMode } from "./PolicyEngineMode"; +import { PolicyEngineModeFromJSON, PolicyEngineModeToJSON } from "./PolicyEngineMode"; + +/** + * Flow Serializer + * @export + * @interface PatchedFlowRequest + */ +export interface PatchedFlowRequest { + /** + * + * @type {string} + * @memberof PatchedFlowRequest + */ + name?: string; + /** + * Visible in the URL. + * @type {string} + * @memberof PatchedFlowRequest + */ + slug?: string; + /** + * Shown as the Title in Flow pages. + * @type {string} + * @memberof PatchedFlowRequest + */ + title?: string; + /** + * Decides what this Flow is used for. For example, the Authentication flow is redirect to when an un-authenticated user visits authentik. + * @type {FlowDesignationEnum} + * @memberof PatchedFlowRequest + */ + designation?: FlowDesignationEnum; + /** + * Background shown during execution + * @type {string} + * @memberof PatchedFlowRequest + */ + background?: string; + /** + * + * @type {PolicyEngineMode} + * @memberof PatchedFlowRequest + */ + policyEngineMode?: PolicyEngineMode; + /** + * Enable compatibility mode, increases compatibility with password managers on mobile devices. + * @type {boolean} + * @memberof PatchedFlowRequest + */ + compatibilityMode?: boolean; + /** + * + * @type {FlowLayoutEnum} + * @memberof PatchedFlowRequest + */ + layout?: FlowLayoutEnum; + /** + * Configure what should happen when a flow denies access to a user. + * @type {DeniedActionEnum} + * @memberof PatchedFlowRequest + */ + deniedAction?: DeniedActionEnum; + /** + * Required level of authentication and authorization to access a flow. + * @type {AuthenticationEnum} + * @memberof PatchedFlowRequest + */ + authentication?: AuthenticationEnum; +} + +/** + * Check if a given object implements the PatchedFlowRequest interface. + */ +export function instanceOfPatchedFlowRequest(value: object): value is PatchedFlowRequest { + return true; +} + +export function PatchedFlowRequestFromJSON(json: any): PatchedFlowRequest { + return PatchedFlowRequestFromJSONTyped(json, false); +} + +export function PatchedFlowRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedFlowRequest { + if (json == null) { + return json; + } + return { + name: json["name"] == null ? undefined : json["name"], + slug: json["slug"] == null ? undefined : json["slug"], + title: json["title"] == null ? undefined : json["title"], + designation: + json["designation"] == null + ? undefined + : FlowDesignationEnumFromJSON(json["designation"]), + background: json["background"] == null ? undefined : json["background"], + policyEngineMode: + json["policy_engine_mode"] == null + ? undefined + : PolicyEngineModeFromJSON(json["policy_engine_mode"]), + compatibilityMode: + json["compatibility_mode"] == null ? undefined : json["compatibility_mode"], + layout: json["layout"] == null ? undefined : FlowLayoutEnumFromJSON(json["layout"]), + deniedAction: + json["denied_action"] == null + ? undefined + : DeniedActionEnumFromJSON(json["denied_action"]), + authentication: + json["authentication"] == null + ? undefined + : AuthenticationEnumFromJSON(json["authentication"]), + }; +} + +export function PatchedFlowRequestToJSON(json: any): PatchedFlowRequest { + return PatchedFlowRequestToJSONTyped(json, false); +} + +export function PatchedFlowRequestToJSONTyped( + value?: PatchedFlowRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + slug: value["slug"], + title: value["title"], + designation: FlowDesignationEnumToJSON(value["designation"]), + background: value["background"], + policy_engine_mode: PolicyEngineModeToJSON(value["policyEngineMode"]), + compatibility_mode: value["compatibilityMode"], + layout: FlowLayoutEnumToJSON(value["layout"]), + denied_action: DeniedActionEnumToJSON(value["deniedAction"]), + authentication: AuthenticationEnumToJSON(value["authentication"]), + }; +} diff --git a/packages/client-ts/src/models/PatchedFlowStageBindingRequest.ts b/packages/client-ts/src/models/PatchedFlowStageBindingRequest.ts new file mode 100644 index 0000000000..5f435befb7 --- /dev/null +++ b/packages/client-ts/src/models/PatchedFlowStageBindingRequest.ts @@ -0,0 +1,132 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { InvalidResponseActionEnum } from "./InvalidResponseActionEnum"; +import { + InvalidResponseActionEnumFromJSON, + InvalidResponseActionEnumToJSON, +} from "./InvalidResponseActionEnum"; +import type { PolicyEngineMode } from "./PolicyEngineMode"; +import { PolicyEngineModeFromJSON, PolicyEngineModeToJSON } from "./PolicyEngineMode"; + +/** + * FlowStageBinding Serializer + * @export + * @interface PatchedFlowStageBindingRequest + */ +export interface PatchedFlowStageBindingRequest { + /** + * + * @type {string} + * @memberof PatchedFlowStageBindingRequest + */ + target?: string; + /** + * + * @type {string} + * @memberof PatchedFlowStageBindingRequest + */ + stage?: string; + /** + * Evaluate policies during the Flow planning process. + * @type {boolean} + * @memberof PatchedFlowStageBindingRequest + */ + evaluateOnPlan?: boolean; + /** + * Evaluate policies when the Stage is presented to the user. + * @type {boolean} + * @memberof PatchedFlowStageBindingRequest + */ + reEvaluatePolicies?: boolean; + /** + * + * @type {number} + * @memberof PatchedFlowStageBindingRequest + */ + order?: number; + /** + * + * @type {PolicyEngineMode} + * @memberof PatchedFlowStageBindingRequest + */ + policyEngineMode?: PolicyEngineMode; + /** + * Configure how the flow executor should handle an invalid response to a challenge. RETRY returns the error message and a similar challenge to the executor. RESTART restarts the flow from the beginning, and RESTART_WITH_CONTEXT restarts the flow while keeping the current context. + * @type {InvalidResponseActionEnum} + * @memberof PatchedFlowStageBindingRequest + */ + invalidResponseAction?: InvalidResponseActionEnum; +} + +/** + * Check if a given object implements the PatchedFlowStageBindingRequest interface. + */ +export function instanceOfPatchedFlowStageBindingRequest( + value: object, +): value is PatchedFlowStageBindingRequest { + return true; +} + +export function PatchedFlowStageBindingRequestFromJSON(json: any): PatchedFlowStageBindingRequest { + return PatchedFlowStageBindingRequestFromJSONTyped(json, false); +} + +export function PatchedFlowStageBindingRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedFlowStageBindingRequest { + if (json == null) { + return json; + } + return { + target: json["target"] == null ? undefined : json["target"], + stage: json["stage"] == null ? undefined : json["stage"], + evaluateOnPlan: json["evaluate_on_plan"] == null ? undefined : json["evaluate_on_plan"], + reEvaluatePolicies: + json["re_evaluate_policies"] == null ? undefined : json["re_evaluate_policies"], + order: json["order"] == null ? undefined : json["order"], + policyEngineMode: + json["policy_engine_mode"] == null + ? undefined + : PolicyEngineModeFromJSON(json["policy_engine_mode"]), + invalidResponseAction: + json["invalid_response_action"] == null + ? undefined + : InvalidResponseActionEnumFromJSON(json["invalid_response_action"]), + }; +} + +export function PatchedFlowStageBindingRequestToJSON(json: any): PatchedFlowStageBindingRequest { + return PatchedFlowStageBindingRequestToJSONTyped(json, false); +} + +export function PatchedFlowStageBindingRequestToJSONTyped( + value?: PatchedFlowStageBindingRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + target: value["target"], + stage: value["stage"], + evaluate_on_plan: value["evaluateOnPlan"], + re_evaluate_policies: value["reEvaluatePolicies"], + order: value["order"], + policy_engine_mode: PolicyEngineModeToJSON(value["policyEngineMode"]), + invalid_response_action: InvalidResponseActionEnumToJSON(value["invalidResponseAction"]), + }; +} diff --git a/packages/client-ts/src/models/PatchedGeoIPPolicyRequest.ts b/packages/client-ts/src/models/PatchedGeoIPPolicyRequest.ts new file mode 100644 index 0000000000..b07ea1828a --- /dev/null +++ b/packages/client-ts/src/models/PatchedGeoIPPolicyRequest.ts @@ -0,0 +1,156 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { CountryCodeEnum } from "./CountryCodeEnum"; +import { CountryCodeEnumFromJSON, CountryCodeEnumToJSON } from "./CountryCodeEnum"; + +/** + * GeoIP Policy Serializer + * @export + * @interface PatchedGeoIPPolicyRequest + */ +export interface PatchedGeoIPPolicyRequest { + /** + * + * @type {string} + * @memberof PatchedGeoIPPolicyRequest + */ + name?: string; + /** + * When this option is enabled, all executions of this policy will be logged. By default, only execution errors are logged. + * @type {boolean} + * @memberof PatchedGeoIPPolicyRequest + */ + executionLogging?: boolean; + /** + * + * @type {Array} + * @memberof PatchedGeoIPPolicyRequest + */ + asns?: Array; + /** + * + * @type {Array} + * @memberof PatchedGeoIPPolicyRequest + */ + countries?: Array; + /** + * + * @type {boolean} + * @memberof PatchedGeoIPPolicyRequest + */ + checkHistoryDistance?: boolean; + /** + * + * @type {number} + * @memberof PatchedGeoIPPolicyRequest + */ + historyMaxDistanceKm?: number; + /** + * + * @type {number} + * @memberof PatchedGeoIPPolicyRequest + */ + distanceToleranceKm?: number; + /** + * + * @type {number} + * @memberof PatchedGeoIPPolicyRequest + */ + historyLoginCount?: number; + /** + * + * @type {boolean} + * @memberof PatchedGeoIPPolicyRequest + */ + checkImpossibleTravel?: boolean; + /** + * + * @type {number} + * @memberof PatchedGeoIPPolicyRequest + */ + impossibleToleranceKm?: number; +} + +/** + * Check if a given object implements the PatchedGeoIPPolicyRequest interface. + */ +export function instanceOfPatchedGeoIPPolicyRequest( + value: object, +): value is PatchedGeoIPPolicyRequest { + return true; +} + +export function PatchedGeoIPPolicyRequestFromJSON(json: any): PatchedGeoIPPolicyRequest { + return PatchedGeoIPPolicyRequestFromJSONTyped(json, false); +} + +export function PatchedGeoIPPolicyRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedGeoIPPolicyRequest { + if (json == null) { + return json; + } + return { + name: json["name"] == null ? undefined : json["name"], + executionLogging: json["execution_logging"] == null ? undefined : json["execution_logging"], + asns: json["asns"] == null ? undefined : json["asns"], + countries: + json["countries"] == null + ? undefined + : (json["countries"] as Array).map(CountryCodeEnumFromJSON), + checkHistoryDistance: + json["check_history_distance"] == null ? undefined : json["check_history_distance"], + historyMaxDistanceKm: + json["history_max_distance_km"] == null ? undefined : json["history_max_distance_km"], + distanceToleranceKm: + json["distance_tolerance_km"] == null ? undefined : json["distance_tolerance_km"], + historyLoginCount: + json["history_login_count"] == null ? undefined : json["history_login_count"], + checkImpossibleTravel: + json["check_impossible_travel"] == null ? undefined : json["check_impossible_travel"], + impossibleToleranceKm: + json["impossible_tolerance_km"] == null ? undefined : json["impossible_tolerance_km"], + }; +} + +export function PatchedGeoIPPolicyRequestToJSON(json: any): PatchedGeoIPPolicyRequest { + return PatchedGeoIPPolicyRequestToJSONTyped(json, false); +} + +export function PatchedGeoIPPolicyRequestToJSONTyped( + value?: PatchedGeoIPPolicyRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + execution_logging: value["executionLogging"], + asns: value["asns"], + countries: + value["countries"] == null + ? undefined + : (value["countries"] as Array).map(CountryCodeEnumToJSON), + check_history_distance: value["checkHistoryDistance"], + history_max_distance_km: value["historyMaxDistanceKm"], + distance_tolerance_km: value["distanceToleranceKm"], + history_login_count: value["historyLoginCount"], + check_impossible_travel: value["checkImpossibleTravel"], + impossible_tolerance_km: value["impossibleToleranceKm"], + }; +} diff --git a/packages/client-ts/src/models/PatchedGoogleChromeConnectorRequest.ts b/packages/client-ts/src/models/PatchedGoogleChromeConnectorRequest.ts new file mode 100644 index 0000000000..51483722a9 --- /dev/null +++ b/packages/client-ts/src/models/PatchedGoogleChromeConnectorRequest.ts @@ -0,0 +1,97 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * GoogleChromeConnector Serializer + * @export + * @interface PatchedGoogleChromeConnectorRequest + */ +export interface PatchedGoogleChromeConnectorRequest { + /** + * + * @type {string} + * @memberof PatchedGoogleChromeConnectorRequest + */ + connectorUuid?: string; + /** + * + * @type {string} + * @memberof PatchedGoogleChromeConnectorRequest + */ + name?: string; + /** + * + * @type {boolean} + * @memberof PatchedGoogleChromeConnectorRequest + */ + enabled?: boolean; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PatchedGoogleChromeConnectorRequest + */ + credentials?: { [key: string]: any }; +} + +/** + * Check if a given object implements the PatchedGoogleChromeConnectorRequest interface. + */ +export function instanceOfPatchedGoogleChromeConnectorRequest( + value: object, +): value is PatchedGoogleChromeConnectorRequest { + return true; +} + +export function PatchedGoogleChromeConnectorRequestFromJSON( + json: any, +): PatchedGoogleChromeConnectorRequest { + return PatchedGoogleChromeConnectorRequestFromJSONTyped(json, false); +} + +export function PatchedGoogleChromeConnectorRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedGoogleChromeConnectorRequest { + if (json == null) { + return json; + } + return { + connectorUuid: json["connector_uuid"] == null ? undefined : json["connector_uuid"], + name: json["name"] == null ? undefined : json["name"], + enabled: json["enabled"] == null ? undefined : json["enabled"], + credentials: json["credentials"] == null ? undefined : json["credentials"], + }; +} + +export function PatchedGoogleChromeConnectorRequestToJSON( + json: any, +): PatchedGoogleChromeConnectorRequest { + return PatchedGoogleChromeConnectorRequestToJSONTyped(json, false); +} + +export function PatchedGoogleChromeConnectorRequestToJSONTyped( + value?: PatchedGoogleChromeConnectorRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + connector_uuid: value["connectorUuid"], + name: value["name"], + enabled: value["enabled"], + credentials: value["credentials"], + }; +} diff --git a/packages/client-ts/src/models/PatchedGoogleEndpointDeviceRequest.ts b/packages/client-ts/src/models/PatchedGoogleEndpointDeviceRequest.ts new file mode 100644 index 0000000000..d2e0ba11e9 --- /dev/null +++ b/packages/client-ts/src/models/PatchedGoogleEndpointDeviceRequest.ts @@ -0,0 +1,81 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Serializer for Endpoint authenticator devices + * @export + * @interface PatchedGoogleEndpointDeviceRequest + */ +export interface PatchedGoogleEndpointDeviceRequest { + /** + * + * @type {string} + * @memberof PatchedGoogleEndpointDeviceRequest + */ + pk?: string; + /** + * The human-readable name of this device. + * @type {string} + * @memberof PatchedGoogleEndpointDeviceRequest + */ + name?: string; +} + +/** + * Check if a given object implements the PatchedGoogleEndpointDeviceRequest interface. + */ +export function instanceOfPatchedGoogleEndpointDeviceRequest( + value: object, +): value is PatchedGoogleEndpointDeviceRequest { + return true; +} + +export function PatchedGoogleEndpointDeviceRequestFromJSON( + json: any, +): PatchedGoogleEndpointDeviceRequest { + return PatchedGoogleEndpointDeviceRequestFromJSONTyped(json, false); +} + +export function PatchedGoogleEndpointDeviceRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedGoogleEndpointDeviceRequest { + if (json == null) { + return json; + } + return { + pk: json["pk"] == null ? undefined : json["pk"], + name: json["name"] == null ? undefined : json["name"], + }; +} + +export function PatchedGoogleEndpointDeviceRequestToJSON( + json: any, +): PatchedGoogleEndpointDeviceRequest { + return PatchedGoogleEndpointDeviceRequestToJSONTyped(json, false); +} + +export function PatchedGoogleEndpointDeviceRequestToJSONTyped( + value?: PatchedGoogleEndpointDeviceRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pk: value["pk"], + name: value["name"], + }; +} diff --git a/packages/client-ts/src/models/PatchedGoogleWorkspaceProviderMappingRequest.ts b/packages/client-ts/src/models/PatchedGoogleWorkspaceProviderMappingRequest.ts new file mode 100644 index 0000000000..630bebd09e --- /dev/null +++ b/packages/client-ts/src/models/PatchedGoogleWorkspaceProviderMappingRequest.ts @@ -0,0 +1,89 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * GoogleWorkspaceProviderMapping Serializer + * @export + * @interface PatchedGoogleWorkspaceProviderMappingRequest + */ +export interface PatchedGoogleWorkspaceProviderMappingRequest { + /** + * Objects that are managed by authentik. These objects are created and updated automatically. This flag only indicates that an object can be overwritten by migrations. You can still modify the objects via the API, but expect changes to be overwritten in a later update. + * @type {string} + * @memberof PatchedGoogleWorkspaceProviderMappingRequest + */ + managed?: string | null; + /** + * + * @type {string} + * @memberof PatchedGoogleWorkspaceProviderMappingRequest + */ + name?: string; + /** + * + * @type {string} + * @memberof PatchedGoogleWorkspaceProviderMappingRequest + */ + expression?: string; +} + +/** + * Check if a given object implements the PatchedGoogleWorkspaceProviderMappingRequest interface. + */ +export function instanceOfPatchedGoogleWorkspaceProviderMappingRequest( + value: object, +): value is PatchedGoogleWorkspaceProviderMappingRequest { + return true; +} + +export function PatchedGoogleWorkspaceProviderMappingRequestFromJSON( + json: any, +): PatchedGoogleWorkspaceProviderMappingRequest { + return PatchedGoogleWorkspaceProviderMappingRequestFromJSONTyped(json, false); +} + +export function PatchedGoogleWorkspaceProviderMappingRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedGoogleWorkspaceProviderMappingRequest { + if (json == null) { + return json; + } + return { + managed: json["managed"] == null ? undefined : json["managed"], + name: json["name"] == null ? undefined : json["name"], + expression: json["expression"] == null ? undefined : json["expression"], + }; +} + +export function PatchedGoogleWorkspaceProviderMappingRequestToJSON( + json: any, +): PatchedGoogleWorkspaceProviderMappingRequest { + return PatchedGoogleWorkspaceProviderMappingRequestToJSONTyped(json, false); +} + +export function PatchedGoogleWorkspaceProviderMappingRequestToJSONTyped( + value?: PatchedGoogleWorkspaceProviderMappingRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + managed: value["managed"], + name: value["name"], + expression: value["expression"], + }; +} diff --git a/packages/client-ts/src/models/PatchedGoogleWorkspaceProviderRequest.ts b/packages/client-ts/src/models/PatchedGoogleWorkspaceProviderRequest.ts new file mode 100644 index 0000000000..d2e4c09c4d --- /dev/null +++ b/packages/client-ts/src/models/PatchedGoogleWorkspaceProviderRequest.ts @@ -0,0 +1,196 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { OutgoingSyncDeleteAction } from "./OutgoingSyncDeleteAction"; +import { + OutgoingSyncDeleteActionFromJSON, + OutgoingSyncDeleteActionToJSON, +} from "./OutgoingSyncDeleteAction"; + +/** + * GoogleWorkspaceProvider Serializer + * @export + * @interface PatchedGoogleWorkspaceProviderRequest + */ +export interface PatchedGoogleWorkspaceProviderRequest { + /** + * + * @type {string} + * @memberof PatchedGoogleWorkspaceProviderRequest + */ + name?: string; + /** + * + * @type {Array} + * @memberof PatchedGoogleWorkspaceProviderRequest + */ + propertyMappings?: Array; + /** + * Property mappings used for group creation/updating. + * @type {Array} + * @memberof PatchedGoogleWorkspaceProviderRequest + */ + propertyMappingsGroup?: Array; + /** + * + * @type {string} + * @memberof PatchedGoogleWorkspaceProviderRequest + */ + delegatedSubject?: string; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PatchedGoogleWorkspaceProviderRequest + */ + credentials?: { [key: string]: any }; + /** + * + * @type {string} + * @memberof PatchedGoogleWorkspaceProviderRequest + */ + scopes?: string; + /** + * + * @type {boolean} + * @memberof PatchedGoogleWorkspaceProviderRequest + */ + excludeUsersServiceAccount?: boolean; + /** + * + * @type {string} + * @memberof PatchedGoogleWorkspaceProviderRequest + */ + filterGroup?: string | null; + /** + * + * @type {OutgoingSyncDeleteAction} + * @memberof PatchedGoogleWorkspaceProviderRequest + */ + userDeleteAction?: OutgoingSyncDeleteAction; + /** + * + * @type {OutgoingSyncDeleteAction} + * @memberof PatchedGoogleWorkspaceProviderRequest + */ + groupDeleteAction?: OutgoingSyncDeleteAction; + /** + * + * @type {string} + * @memberof PatchedGoogleWorkspaceProviderRequest + */ + defaultGroupEmailDomain?: string; + /** + * Controls the number of objects synced in a single task + * @type {number} + * @memberof PatchedGoogleWorkspaceProviderRequest + */ + syncPageSize?: number; + /** + * Timeout for synchronization of a single page + * @type {string} + * @memberof PatchedGoogleWorkspaceProviderRequest + */ + syncPageTimeout?: string; + /** + * When enabled, provider will not modify or create objects in the remote system. + * @type {boolean} + * @memberof PatchedGoogleWorkspaceProviderRequest + */ + dryRun?: boolean; +} + +/** + * Check if a given object implements the PatchedGoogleWorkspaceProviderRequest interface. + */ +export function instanceOfPatchedGoogleWorkspaceProviderRequest( + value: object, +): value is PatchedGoogleWorkspaceProviderRequest { + return true; +} + +export function PatchedGoogleWorkspaceProviderRequestFromJSON( + json: any, +): PatchedGoogleWorkspaceProviderRequest { + return PatchedGoogleWorkspaceProviderRequestFromJSONTyped(json, false); +} + +export function PatchedGoogleWorkspaceProviderRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedGoogleWorkspaceProviderRequest { + if (json == null) { + return json; + } + return { + name: json["name"] == null ? undefined : json["name"], + propertyMappings: json["property_mappings"] == null ? undefined : json["property_mappings"], + propertyMappingsGroup: + json["property_mappings_group"] == null ? undefined : json["property_mappings_group"], + delegatedSubject: json["delegated_subject"] == null ? undefined : json["delegated_subject"], + credentials: json["credentials"] == null ? undefined : json["credentials"], + scopes: json["scopes"] == null ? undefined : json["scopes"], + excludeUsersServiceAccount: + json["exclude_users_service_account"] == null + ? undefined + : json["exclude_users_service_account"], + filterGroup: json["filter_group"] == null ? undefined : json["filter_group"], + userDeleteAction: + json["user_delete_action"] == null + ? undefined + : OutgoingSyncDeleteActionFromJSON(json["user_delete_action"]), + groupDeleteAction: + json["group_delete_action"] == null + ? undefined + : OutgoingSyncDeleteActionFromJSON(json["group_delete_action"]), + defaultGroupEmailDomain: + json["default_group_email_domain"] == null + ? undefined + : json["default_group_email_domain"], + syncPageSize: json["sync_page_size"] == null ? undefined : json["sync_page_size"], + syncPageTimeout: json["sync_page_timeout"] == null ? undefined : json["sync_page_timeout"], + dryRun: json["dry_run"] == null ? undefined : json["dry_run"], + }; +} + +export function PatchedGoogleWorkspaceProviderRequestToJSON( + json: any, +): PatchedGoogleWorkspaceProviderRequest { + return PatchedGoogleWorkspaceProviderRequestToJSONTyped(json, false); +} + +export function PatchedGoogleWorkspaceProviderRequestToJSONTyped( + value?: PatchedGoogleWorkspaceProviderRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + property_mappings: value["propertyMappings"], + property_mappings_group: value["propertyMappingsGroup"], + delegated_subject: value["delegatedSubject"], + credentials: value["credentials"], + scopes: value["scopes"], + exclude_users_service_account: value["excludeUsersServiceAccount"], + filter_group: value["filterGroup"], + user_delete_action: OutgoingSyncDeleteActionToJSON(value["userDeleteAction"]), + group_delete_action: OutgoingSyncDeleteActionToJSON(value["groupDeleteAction"]), + default_group_email_domain: value["defaultGroupEmailDomain"], + sync_page_size: value["syncPageSize"], + sync_page_timeout: value["syncPageTimeout"], + dry_run: value["dryRun"], + }; +} diff --git a/packages/client-ts/src/models/PatchedGroupKerberosSourceConnectionRequest.ts b/packages/client-ts/src/models/PatchedGroupKerberosSourceConnectionRequest.ts new file mode 100644 index 0000000000..42e27a80e0 --- /dev/null +++ b/packages/client-ts/src/models/PatchedGroupKerberosSourceConnectionRequest.ts @@ -0,0 +1,89 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Group Source Connection + * @export + * @interface PatchedGroupKerberosSourceConnectionRequest + */ +export interface PatchedGroupKerberosSourceConnectionRequest { + /** + * + * @type {string} + * @memberof PatchedGroupKerberosSourceConnectionRequest + */ + group?: string; + /** + * + * @type {string} + * @memberof PatchedGroupKerberosSourceConnectionRequest + */ + source?: string; + /** + * + * @type {string} + * @memberof PatchedGroupKerberosSourceConnectionRequest + */ + identifier?: string; +} + +/** + * Check if a given object implements the PatchedGroupKerberosSourceConnectionRequest interface. + */ +export function instanceOfPatchedGroupKerberosSourceConnectionRequest( + value: object, +): value is PatchedGroupKerberosSourceConnectionRequest { + return true; +} + +export function PatchedGroupKerberosSourceConnectionRequestFromJSON( + json: any, +): PatchedGroupKerberosSourceConnectionRequest { + return PatchedGroupKerberosSourceConnectionRequestFromJSONTyped(json, false); +} + +export function PatchedGroupKerberosSourceConnectionRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedGroupKerberosSourceConnectionRequest { + if (json == null) { + return json; + } + return { + group: json["group"] == null ? undefined : json["group"], + source: json["source"] == null ? undefined : json["source"], + identifier: json["identifier"] == null ? undefined : json["identifier"], + }; +} + +export function PatchedGroupKerberosSourceConnectionRequestToJSON( + json: any, +): PatchedGroupKerberosSourceConnectionRequest { + return PatchedGroupKerberosSourceConnectionRequestToJSONTyped(json, false); +} + +export function PatchedGroupKerberosSourceConnectionRequestToJSONTyped( + value?: PatchedGroupKerberosSourceConnectionRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + group: value["group"], + source: value["source"], + identifier: value["identifier"], + }; +} diff --git a/packages/client-ts/src/models/PatchedGroupLDAPSourceConnectionRequest.ts b/packages/client-ts/src/models/PatchedGroupLDAPSourceConnectionRequest.ts new file mode 100644 index 0000000000..3037cf8671 --- /dev/null +++ b/packages/client-ts/src/models/PatchedGroupLDAPSourceConnectionRequest.ts @@ -0,0 +1,89 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Group Source Connection + * @export + * @interface PatchedGroupLDAPSourceConnectionRequest + */ +export interface PatchedGroupLDAPSourceConnectionRequest { + /** + * + * @type {string} + * @memberof PatchedGroupLDAPSourceConnectionRequest + */ + group?: string; + /** + * + * @type {string} + * @memberof PatchedGroupLDAPSourceConnectionRequest + */ + source?: string; + /** + * + * @type {string} + * @memberof PatchedGroupLDAPSourceConnectionRequest + */ + identifier?: string; +} + +/** + * Check if a given object implements the PatchedGroupLDAPSourceConnectionRequest interface. + */ +export function instanceOfPatchedGroupLDAPSourceConnectionRequest( + value: object, +): value is PatchedGroupLDAPSourceConnectionRequest { + return true; +} + +export function PatchedGroupLDAPSourceConnectionRequestFromJSON( + json: any, +): PatchedGroupLDAPSourceConnectionRequest { + return PatchedGroupLDAPSourceConnectionRequestFromJSONTyped(json, false); +} + +export function PatchedGroupLDAPSourceConnectionRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedGroupLDAPSourceConnectionRequest { + if (json == null) { + return json; + } + return { + group: json["group"] == null ? undefined : json["group"], + source: json["source"] == null ? undefined : json["source"], + identifier: json["identifier"] == null ? undefined : json["identifier"], + }; +} + +export function PatchedGroupLDAPSourceConnectionRequestToJSON( + json: any, +): PatchedGroupLDAPSourceConnectionRequest { + return PatchedGroupLDAPSourceConnectionRequestToJSONTyped(json, false); +} + +export function PatchedGroupLDAPSourceConnectionRequestToJSONTyped( + value?: PatchedGroupLDAPSourceConnectionRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + group: value["group"], + source: value["source"], + identifier: value["identifier"], + }; +} diff --git a/packages/client-ts/src/models/PatchedGroupOAuthSourceConnectionRequest.ts b/packages/client-ts/src/models/PatchedGroupOAuthSourceConnectionRequest.ts new file mode 100644 index 0000000000..ad5a85f009 --- /dev/null +++ b/packages/client-ts/src/models/PatchedGroupOAuthSourceConnectionRequest.ts @@ -0,0 +1,89 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Group Source Connection + * @export + * @interface PatchedGroupOAuthSourceConnectionRequest + */ +export interface PatchedGroupOAuthSourceConnectionRequest { + /** + * + * @type {string} + * @memberof PatchedGroupOAuthSourceConnectionRequest + */ + group?: string; + /** + * + * @type {string} + * @memberof PatchedGroupOAuthSourceConnectionRequest + */ + source?: string; + /** + * + * @type {string} + * @memberof PatchedGroupOAuthSourceConnectionRequest + */ + identifier?: string; +} + +/** + * Check if a given object implements the PatchedGroupOAuthSourceConnectionRequest interface. + */ +export function instanceOfPatchedGroupOAuthSourceConnectionRequest( + value: object, +): value is PatchedGroupOAuthSourceConnectionRequest { + return true; +} + +export function PatchedGroupOAuthSourceConnectionRequestFromJSON( + json: any, +): PatchedGroupOAuthSourceConnectionRequest { + return PatchedGroupOAuthSourceConnectionRequestFromJSONTyped(json, false); +} + +export function PatchedGroupOAuthSourceConnectionRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedGroupOAuthSourceConnectionRequest { + if (json == null) { + return json; + } + return { + group: json["group"] == null ? undefined : json["group"], + source: json["source"] == null ? undefined : json["source"], + identifier: json["identifier"] == null ? undefined : json["identifier"], + }; +} + +export function PatchedGroupOAuthSourceConnectionRequestToJSON( + json: any, +): PatchedGroupOAuthSourceConnectionRequest { + return PatchedGroupOAuthSourceConnectionRequestToJSONTyped(json, false); +} + +export function PatchedGroupOAuthSourceConnectionRequestToJSONTyped( + value?: PatchedGroupOAuthSourceConnectionRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + group: value["group"], + source: value["source"], + identifier: value["identifier"], + }; +} diff --git a/packages/client-ts/src/models/PatchedGroupPlexSourceConnectionRequest.ts b/packages/client-ts/src/models/PatchedGroupPlexSourceConnectionRequest.ts new file mode 100644 index 0000000000..cee02ab145 --- /dev/null +++ b/packages/client-ts/src/models/PatchedGroupPlexSourceConnectionRequest.ts @@ -0,0 +1,89 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Group Source Connection + * @export + * @interface PatchedGroupPlexSourceConnectionRequest + */ +export interface PatchedGroupPlexSourceConnectionRequest { + /** + * + * @type {string} + * @memberof PatchedGroupPlexSourceConnectionRequest + */ + group?: string; + /** + * + * @type {string} + * @memberof PatchedGroupPlexSourceConnectionRequest + */ + source?: string; + /** + * + * @type {string} + * @memberof PatchedGroupPlexSourceConnectionRequest + */ + identifier?: string; +} + +/** + * Check if a given object implements the PatchedGroupPlexSourceConnectionRequest interface. + */ +export function instanceOfPatchedGroupPlexSourceConnectionRequest( + value: object, +): value is PatchedGroupPlexSourceConnectionRequest { + return true; +} + +export function PatchedGroupPlexSourceConnectionRequestFromJSON( + json: any, +): PatchedGroupPlexSourceConnectionRequest { + return PatchedGroupPlexSourceConnectionRequestFromJSONTyped(json, false); +} + +export function PatchedGroupPlexSourceConnectionRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedGroupPlexSourceConnectionRequest { + if (json == null) { + return json; + } + return { + group: json["group"] == null ? undefined : json["group"], + source: json["source"] == null ? undefined : json["source"], + identifier: json["identifier"] == null ? undefined : json["identifier"], + }; +} + +export function PatchedGroupPlexSourceConnectionRequestToJSON( + json: any, +): PatchedGroupPlexSourceConnectionRequest { + return PatchedGroupPlexSourceConnectionRequestToJSONTyped(json, false); +} + +export function PatchedGroupPlexSourceConnectionRequestToJSONTyped( + value?: PatchedGroupPlexSourceConnectionRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + group: value["group"], + source: value["source"], + identifier: value["identifier"], + }; +} diff --git a/packages/client-ts/src/models/PatchedGroupRequest.ts b/packages/client-ts/src/models/PatchedGroupRequest.ts new file mode 100644 index 0000000000..a9a5223fac --- /dev/null +++ b/packages/client-ts/src/models/PatchedGroupRequest.ts @@ -0,0 +1,107 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Group Serializer + * @export + * @interface PatchedGroupRequest + */ +export interface PatchedGroupRequest { + /** + * + * @type {string} + * @memberof PatchedGroupRequest + */ + name?: string; + /** + * Users added to this group will be superusers. + * @type {boolean} + * @memberof PatchedGroupRequest + */ + isSuperuser?: boolean; + /** + * + * @type {Array} + * @memberof PatchedGroupRequest + */ + parents?: Array; + /** + * + * @type {Array} + * @memberof PatchedGroupRequest + */ + users?: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PatchedGroupRequest + */ + attributes?: { [key: string]: any }; + /** + * + * @type {Array} + * @memberof PatchedGroupRequest + */ + roles?: Array; +} + +/** + * Check if a given object implements the PatchedGroupRequest interface. + */ +export function instanceOfPatchedGroupRequest(value: object): value is PatchedGroupRequest { + return true; +} + +export function PatchedGroupRequestFromJSON(json: any): PatchedGroupRequest { + return PatchedGroupRequestFromJSONTyped(json, false); +} + +export function PatchedGroupRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedGroupRequest { + if (json == null) { + return json; + } + return { + name: json["name"] == null ? undefined : json["name"], + isSuperuser: json["is_superuser"] == null ? undefined : json["is_superuser"], + parents: json["parents"] == null ? undefined : json["parents"], + users: json["users"] == null ? undefined : json["users"], + attributes: json["attributes"] == null ? undefined : json["attributes"], + roles: json["roles"] == null ? undefined : json["roles"], + }; +} + +export function PatchedGroupRequestToJSON(json: any): PatchedGroupRequest { + return PatchedGroupRequestToJSONTyped(json, false); +} + +export function PatchedGroupRequestToJSONTyped( + value?: PatchedGroupRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + is_superuser: value["isSuperuser"], + parents: value["parents"], + users: value["users"], + attributes: value["attributes"], + roles: value["roles"], + }; +} diff --git a/packages/client-ts/src/models/PatchedGroupSAMLSourceConnectionRequest.ts b/packages/client-ts/src/models/PatchedGroupSAMLSourceConnectionRequest.ts new file mode 100644 index 0000000000..efef55bbb9 --- /dev/null +++ b/packages/client-ts/src/models/PatchedGroupSAMLSourceConnectionRequest.ts @@ -0,0 +1,89 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Group Source Connection + * @export + * @interface PatchedGroupSAMLSourceConnectionRequest + */ +export interface PatchedGroupSAMLSourceConnectionRequest { + /** + * + * @type {string} + * @memberof PatchedGroupSAMLSourceConnectionRequest + */ + group?: string; + /** + * + * @type {string} + * @memberof PatchedGroupSAMLSourceConnectionRequest + */ + source?: string; + /** + * + * @type {string} + * @memberof PatchedGroupSAMLSourceConnectionRequest + */ + identifier?: string; +} + +/** + * Check if a given object implements the PatchedGroupSAMLSourceConnectionRequest interface. + */ +export function instanceOfPatchedGroupSAMLSourceConnectionRequest( + value: object, +): value is PatchedGroupSAMLSourceConnectionRequest { + return true; +} + +export function PatchedGroupSAMLSourceConnectionRequestFromJSON( + json: any, +): PatchedGroupSAMLSourceConnectionRequest { + return PatchedGroupSAMLSourceConnectionRequestFromJSONTyped(json, false); +} + +export function PatchedGroupSAMLSourceConnectionRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedGroupSAMLSourceConnectionRequest { + if (json == null) { + return json; + } + return { + group: json["group"] == null ? undefined : json["group"], + source: json["source"] == null ? undefined : json["source"], + identifier: json["identifier"] == null ? undefined : json["identifier"], + }; +} + +export function PatchedGroupSAMLSourceConnectionRequestToJSON( + json: any, +): PatchedGroupSAMLSourceConnectionRequest { + return PatchedGroupSAMLSourceConnectionRequestToJSONTyped(json, false); +} + +export function PatchedGroupSAMLSourceConnectionRequestToJSONTyped( + value?: PatchedGroupSAMLSourceConnectionRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + group: value["group"], + source: value["source"], + identifier: value["identifier"], + }; +} diff --git a/packages/client-ts/src/models/PatchedGroupSourceConnectionRequest.ts b/packages/client-ts/src/models/PatchedGroupSourceConnectionRequest.ts new file mode 100644 index 0000000000..847d64f44a --- /dev/null +++ b/packages/client-ts/src/models/PatchedGroupSourceConnectionRequest.ts @@ -0,0 +1,89 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Group Source Connection + * @export + * @interface PatchedGroupSourceConnectionRequest + */ +export interface PatchedGroupSourceConnectionRequest { + /** + * + * @type {string} + * @memberof PatchedGroupSourceConnectionRequest + */ + group?: string; + /** + * + * @type {string} + * @memberof PatchedGroupSourceConnectionRequest + */ + source?: string; + /** + * + * @type {string} + * @memberof PatchedGroupSourceConnectionRequest + */ + identifier?: string; +} + +/** + * Check if a given object implements the PatchedGroupSourceConnectionRequest interface. + */ +export function instanceOfPatchedGroupSourceConnectionRequest( + value: object, +): value is PatchedGroupSourceConnectionRequest { + return true; +} + +export function PatchedGroupSourceConnectionRequestFromJSON( + json: any, +): PatchedGroupSourceConnectionRequest { + return PatchedGroupSourceConnectionRequestFromJSONTyped(json, false); +} + +export function PatchedGroupSourceConnectionRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedGroupSourceConnectionRequest { + if (json == null) { + return json; + } + return { + group: json["group"] == null ? undefined : json["group"], + source: json["source"] == null ? undefined : json["source"], + identifier: json["identifier"] == null ? undefined : json["identifier"], + }; +} + +export function PatchedGroupSourceConnectionRequestToJSON( + json: any, +): PatchedGroupSourceConnectionRequest { + return PatchedGroupSourceConnectionRequestToJSONTyped(json, false); +} + +export function PatchedGroupSourceConnectionRequestToJSONTyped( + value?: PatchedGroupSourceConnectionRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + group: value["group"], + source: value["source"], + identifier: value["identifier"], + }; +} diff --git a/packages/client-ts/src/models/PatchedGroupTelegramSourceConnectionRequest.ts b/packages/client-ts/src/models/PatchedGroupTelegramSourceConnectionRequest.ts new file mode 100644 index 0000000000..4209668627 --- /dev/null +++ b/packages/client-ts/src/models/PatchedGroupTelegramSourceConnectionRequest.ts @@ -0,0 +1,89 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Group Source Connection + * @export + * @interface PatchedGroupTelegramSourceConnectionRequest + */ +export interface PatchedGroupTelegramSourceConnectionRequest { + /** + * + * @type {string} + * @memberof PatchedGroupTelegramSourceConnectionRequest + */ + group?: string; + /** + * + * @type {string} + * @memberof PatchedGroupTelegramSourceConnectionRequest + */ + source?: string; + /** + * + * @type {string} + * @memberof PatchedGroupTelegramSourceConnectionRequest + */ + identifier?: string; +} + +/** + * Check if a given object implements the PatchedGroupTelegramSourceConnectionRequest interface. + */ +export function instanceOfPatchedGroupTelegramSourceConnectionRequest( + value: object, +): value is PatchedGroupTelegramSourceConnectionRequest { + return true; +} + +export function PatchedGroupTelegramSourceConnectionRequestFromJSON( + json: any, +): PatchedGroupTelegramSourceConnectionRequest { + return PatchedGroupTelegramSourceConnectionRequestFromJSONTyped(json, false); +} + +export function PatchedGroupTelegramSourceConnectionRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedGroupTelegramSourceConnectionRequest { + if (json == null) { + return json; + } + return { + group: json["group"] == null ? undefined : json["group"], + source: json["source"] == null ? undefined : json["source"], + identifier: json["identifier"] == null ? undefined : json["identifier"], + }; +} + +export function PatchedGroupTelegramSourceConnectionRequestToJSON( + json: any, +): PatchedGroupTelegramSourceConnectionRequest { + return PatchedGroupTelegramSourceConnectionRequestToJSONTyped(json, false); +} + +export function PatchedGroupTelegramSourceConnectionRequestToJSONTyped( + value?: PatchedGroupTelegramSourceConnectionRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + group: value["group"], + source: value["source"], + identifier: value["identifier"], + }; +} diff --git a/packages/client-ts/src/models/PatchedIdentificationStageRequest.ts b/packages/client-ts/src/models/PatchedIdentificationStageRequest.ts new file mode 100644 index 0000000000..1d2a29956c --- /dev/null +++ b/packages/client-ts/src/models/PatchedIdentificationStageRequest.ts @@ -0,0 +1,192 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { UserFieldsEnum } from "./UserFieldsEnum"; +import { UserFieldsEnumFromJSON, UserFieldsEnumToJSON } from "./UserFieldsEnum"; + +/** + * IdentificationStage Serializer + * @export + * @interface PatchedIdentificationStageRequest + */ +export interface PatchedIdentificationStageRequest { + /** + * + * @type {string} + * @memberof PatchedIdentificationStageRequest + */ + name?: string; + /** + * Fields of the user object to match against. (Hold shift to select multiple options) + * @type {Array} + * @memberof PatchedIdentificationStageRequest + */ + userFields?: Array; + /** + * When set, shows a password field, instead of showing the password field as separate step. + * @type {string} + * @memberof PatchedIdentificationStageRequest + */ + passwordStage?: string | null; + /** + * When set, adds functionality exactly like a Captcha stage, but baked into the Identification stage. + * @type {string} + * @memberof PatchedIdentificationStageRequest + */ + captchaStage?: string | null; + /** + * When enabled, user fields are matched regardless of their casing. + * @type {boolean} + * @memberof PatchedIdentificationStageRequest + */ + caseInsensitiveMatching?: boolean; + /** + * When a valid username/email has been entered, and this option is enabled, the user's username and avatar will be shown. Otherwise, the text that the user entered will be shown + * @type {boolean} + * @memberof PatchedIdentificationStageRequest + */ + showMatchedUser?: boolean; + /** + * Optional enrollment flow, which is linked at the bottom of the page. + * @type {string} + * @memberof PatchedIdentificationStageRequest + */ + enrollmentFlow?: string | null; + /** + * Optional recovery flow, which is linked at the bottom of the page. + * @type {string} + * @memberof PatchedIdentificationStageRequest + */ + recoveryFlow?: string | null; + /** + * Optional passwordless flow, which is linked at the bottom of the page. + * @type {string} + * @memberof PatchedIdentificationStageRequest + */ + passwordlessFlow?: string | null; + /** + * Specify which sources should be shown. + * @type {Array} + * @memberof PatchedIdentificationStageRequest + */ + sources?: Array; + /** + * + * @type {boolean} + * @memberof PatchedIdentificationStageRequest + */ + showSourceLabels?: boolean; + /** + * When enabled, the stage will succeed and continue even when incorrect user info is entered. + * @type {boolean} + * @memberof PatchedIdentificationStageRequest + */ + pretendUserExists?: boolean; + /** + * Show the user the 'Remember me on this device' toggle, allowing repeat users to skip straight to entering their password. + * @type {boolean} + * @memberof PatchedIdentificationStageRequest + */ + enableRememberMe?: boolean; + /** + * When set, and conditional WebAuthn is available, allow the user to use their passkey as a first factor. + * @type {string} + * @memberof PatchedIdentificationStageRequest + */ + webauthnStage?: string | null; +} + +/** + * Check if a given object implements the PatchedIdentificationStageRequest interface. + */ +export function instanceOfPatchedIdentificationStageRequest( + value: object, +): value is PatchedIdentificationStageRequest { + return true; +} + +export function PatchedIdentificationStageRequestFromJSON( + json: any, +): PatchedIdentificationStageRequest { + return PatchedIdentificationStageRequestFromJSONTyped(json, false); +} + +export function PatchedIdentificationStageRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedIdentificationStageRequest { + if (json == null) { + return json; + } + return { + name: json["name"] == null ? undefined : json["name"], + userFields: + json["user_fields"] == null + ? undefined + : (json["user_fields"] as Array).map(UserFieldsEnumFromJSON), + passwordStage: json["password_stage"] == null ? undefined : json["password_stage"], + captchaStage: json["captcha_stage"] == null ? undefined : json["captcha_stage"], + caseInsensitiveMatching: + json["case_insensitive_matching"] == null + ? undefined + : json["case_insensitive_matching"], + showMatchedUser: json["show_matched_user"] == null ? undefined : json["show_matched_user"], + enrollmentFlow: json["enrollment_flow"] == null ? undefined : json["enrollment_flow"], + recoveryFlow: json["recovery_flow"] == null ? undefined : json["recovery_flow"], + passwordlessFlow: json["passwordless_flow"] == null ? undefined : json["passwordless_flow"], + sources: json["sources"] == null ? undefined : json["sources"], + showSourceLabels: + json["show_source_labels"] == null ? undefined : json["show_source_labels"], + pretendUserExists: + json["pretend_user_exists"] == null ? undefined : json["pretend_user_exists"], + enableRememberMe: + json["enable_remember_me"] == null ? undefined : json["enable_remember_me"], + webauthnStage: json["webauthn_stage"] == null ? undefined : json["webauthn_stage"], + }; +} + +export function PatchedIdentificationStageRequestToJSON( + json: any, +): PatchedIdentificationStageRequest { + return PatchedIdentificationStageRequestToJSONTyped(json, false); +} + +export function PatchedIdentificationStageRequestToJSONTyped( + value?: PatchedIdentificationStageRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + user_fields: + value["userFields"] == null + ? undefined + : (value["userFields"] as Array).map(UserFieldsEnumToJSON), + password_stage: value["passwordStage"], + captcha_stage: value["captchaStage"], + case_insensitive_matching: value["caseInsensitiveMatching"], + show_matched_user: value["showMatchedUser"], + enrollment_flow: value["enrollmentFlow"], + recovery_flow: value["recoveryFlow"], + passwordless_flow: value["passwordlessFlow"], + sources: value["sources"], + show_source_labels: value["showSourceLabels"], + pretend_user_exists: value["pretendUserExists"], + enable_remember_me: value["enableRememberMe"], + webauthn_stage: value["webauthnStage"], + }; +} diff --git a/packages/client-ts/src/models/PatchedInitialPermissionsRequest.ts b/packages/client-ts/src/models/PatchedInitialPermissionsRequest.ts new file mode 100644 index 0000000000..ed9ac8277b --- /dev/null +++ b/packages/client-ts/src/models/PatchedInitialPermissionsRequest.ts @@ -0,0 +1,89 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * InitialPermissions serializer + * @export + * @interface PatchedInitialPermissionsRequest + */ +export interface PatchedInitialPermissionsRequest { + /** + * + * @type {string} + * @memberof PatchedInitialPermissionsRequest + */ + name?: string; + /** + * + * @type {string} + * @memberof PatchedInitialPermissionsRequest + */ + role?: string; + /** + * + * @type {Array} + * @memberof PatchedInitialPermissionsRequest + */ + permissions?: Array; +} + +/** + * Check if a given object implements the PatchedInitialPermissionsRequest interface. + */ +export function instanceOfPatchedInitialPermissionsRequest( + value: object, +): value is PatchedInitialPermissionsRequest { + return true; +} + +export function PatchedInitialPermissionsRequestFromJSON( + json: any, +): PatchedInitialPermissionsRequest { + return PatchedInitialPermissionsRequestFromJSONTyped(json, false); +} + +export function PatchedInitialPermissionsRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedInitialPermissionsRequest { + if (json == null) { + return json; + } + return { + name: json["name"] == null ? undefined : json["name"], + role: json["role"] == null ? undefined : json["role"], + permissions: json["permissions"] == null ? undefined : json["permissions"], + }; +} + +export function PatchedInitialPermissionsRequestToJSON( + json: any, +): PatchedInitialPermissionsRequest { + return PatchedInitialPermissionsRequestToJSONTyped(json, false); +} + +export function PatchedInitialPermissionsRequestToJSONTyped( + value?: PatchedInitialPermissionsRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + role: value["role"], + permissions: value["permissions"], + }; +} diff --git a/packages/client-ts/src/models/PatchedInvitationRequest.ts b/packages/client-ts/src/models/PatchedInvitationRequest.ts new file mode 100644 index 0000000000..0eed6476d2 --- /dev/null +++ b/packages/client-ts/src/models/PatchedInvitationRequest.ts @@ -0,0 +1,101 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Invitation Serializer + * @export + * @interface PatchedInvitationRequest + */ +export interface PatchedInvitationRequest { + /** + * + * @type {string} + * @memberof PatchedInvitationRequest + */ + name?: string; + /** + * + * @type {Date} + * @memberof PatchedInvitationRequest + */ + expires?: Date | null; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PatchedInvitationRequest + */ + fixedData?: { [key: string]: any }; + /** + * When enabled, the invitation will be deleted after usage. + * @type {boolean} + * @memberof PatchedInvitationRequest + */ + singleUse?: boolean; + /** + * When set, only the configured flow can use this invitation. + * @type {string} + * @memberof PatchedInvitationRequest + */ + flow?: string | null; +} + +/** + * Check if a given object implements the PatchedInvitationRequest interface. + */ +export function instanceOfPatchedInvitationRequest( + value: object, +): value is PatchedInvitationRequest { + return true; +} + +export function PatchedInvitationRequestFromJSON(json: any): PatchedInvitationRequest { + return PatchedInvitationRequestFromJSONTyped(json, false); +} + +export function PatchedInvitationRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedInvitationRequest { + if (json == null) { + return json; + } + return { + name: json["name"] == null ? undefined : json["name"], + expires: json["expires"] == null ? undefined : new Date(json["expires"]), + fixedData: json["fixed_data"] == null ? undefined : json["fixed_data"], + singleUse: json["single_use"] == null ? undefined : json["single_use"], + flow: json["flow"] == null ? undefined : json["flow"], + }; +} + +export function PatchedInvitationRequestToJSON(json: any): PatchedInvitationRequest { + return PatchedInvitationRequestToJSONTyped(json, false); +} + +export function PatchedInvitationRequestToJSONTyped( + value?: PatchedInvitationRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + expires: value["expires"] == null ? value["expires"] : value["expires"].toISOString(), + fixed_data: value["fixedData"], + single_use: value["singleUse"], + flow: value["flow"], + }; +} diff --git a/packages/client-ts/src/models/PatchedInvitationStageRequest.ts b/packages/client-ts/src/models/PatchedInvitationStageRequest.ts new file mode 100644 index 0000000000..ab6a10f7d7 --- /dev/null +++ b/packages/client-ts/src/models/PatchedInvitationStageRequest.ts @@ -0,0 +1,80 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * InvitationStage Serializer + * @export + * @interface PatchedInvitationStageRequest + */ +export interface PatchedInvitationStageRequest { + /** + * + * @type {string} + * @memberof PatchedInvitationStageRequest + */ + name?: string; + /** + * If this flag is set, this Stage will jump to the next Stage when no Invitation is given. By default this Stage will cancel the Flow when no invitation is given. + * @type {boolean} + * @memberof PatchedInvitationStageRequest + */ + continueFlowWithoutInvitation?: boolean; +} + +/** + * Check if a given object implements the PatchedInvitationStageRequest interface. + */ +export function instanceOfPatchedInvitationStageRequest( + value: object, +): value is PatchedInvitationStageRequest { + return true; +} + +export function PatchedInvitationStageRequestFromJSON(json: any): PatchedInvitationStageRequest { + return PatchedInvitationStageRequestFromJSONTyped(json, false); +} + +export function PatchedInvitationStageRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedInvitationStageRequest { + if (json == null) { + return json; + } + return { + name: json["name"] == null ? undefined : json["name"], + continueFlowWithoutInvitation: + json["continue_flow_without_invitation"] == null + ? undefined + : json["continue_flow_without_invitation"], + }; +} + +export function PatchedInvitationStageRequestToJSON(json: any): PatchedInvitationStageRequest { + return PatchedInvitationStageRequestToJSONTyped(json, false); +} + +export function PatchedInvitationStageRequestToJSONTyped( + value?: PatchedInvitationStageRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + continue_flow_without_invitation: value["continueFlowWithoutInvitation"], + }; +} diff --git a/packages/client-ts/src/models/PatchedKerberosSourcePropertyMappingRequest.ts b/packages/client-ts/src/models/PatchedKerberosSourcePropertyMappingRequest.ts new file mode 100644 index 0000000000..d646066834 --- /dev/null +++ b/packages/client-ts/src/models/PatchedKerberosSourcePropertyMappingRequest.ts @@ -0,0 +1,89 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Kerberos PropertyMapping Serializer + * @export + * @interface PatchedKerberosSourcePropertyMappingRequest + */ +export interface PatchedKerberosSourcePropertyMappingRequest { + /** + * Objects that are managed by authentik. These objects are created and updated automatically. This flag only indicates that an object can be overwritten by migrations. You can still modify the objects via the API, but expect changes to be overwritten in a later update. + * @type {string} + * @memberof PatchedKerberosSourcePropertyMappingRequest + */ + managed?: string | null; + /** + * + * @type {string} + * @memberof PatchedKerberosSourcePropertyMappingRequest + */ + name?: string; + /** + * + * @type {string} + * @memberof PatchedKerberosSourcePropertyMappingRequest + */ + expression?: string; +} + +/** + * Check if a given object implements the PatchedKerberosSourcePropertyMappingRequest interface. + */ +export function instanceOfPatchedKerberosSourcePropertyMappingRequest( + value: object, +): value is PatchedKerberosSourcePropertyMappingRequest { + return true; +} + +export function PatchedKerberosSourcePropertyMappingRequestFromJSON( + json: any, +): PatchedKerberosSourcePropertyMappingRequest { + return PatchedKerberosSourcePropertyMappingRequestFromJSONTyped(json, false); +} + +export function PatchedKerberosSourcePropertyMappingRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedKerberosSourcePropertyMappingRequest { + if (json == null) { + return json; + } + return { + managed: json["managed"] == null ? undefined : json["managed"], + name: json["name"] == null ? undefined : json["name"], + expression: json["expression"] == null ? undefined : json["expression"], + }; +} + +export function PatchedKerberosSourcePropertyMappingRequestToJSON( + json: any, +): PatchedKerberosSourcePropertyMappingRequest { + return PatchedKerberosSourcePropertyMappingRequestToJSONTyped(json, false); +} + +export function PatchedKerberosSourcePropertyMappingRequestToJSONTyped( + value?: PatchedKerberosSourcePropertyMappingRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + managed: value["managed"], + name: value["name"], + expression: value["expression"], + }; +} diff --git a/packages/client-ts/src/models/PatchedKerberosSourceRequest.ts b/packages/client-ts/src/models/PatchedKerberosSourceRequest.ts new file mode 100644 index 0000000000..2c7818f8ea --- /dev/null +++ b/packages/client-ts/src/models/PatchedKerberosSourceRequest.ts @@ -0,0 +1,318 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { GroupMatchingModeEnum } from "./GroupMatchingModeEnum"; +import { + GroupMatchingModeEnumFromJSON, + GroupMatchingModeEnumToJSON, +} from "./GroupMatchingModeEnum"; +import type { KadminTypeEnum } from "./KadminTypeEnum"; +import { KadminTypeEnumFromJSON, KadminTypeEnumToJSON } from "./KadminTypeEnum"; +import type { PolicyEngineMode } from "./PolicyEngineMode"; +import { PolicyEngineModeFromJSON, PolicyEngineModeToJSON } from "./PolicyEngineMode"; +import type { SyncOutgoingTriggerModeEnum } from "./SyncOutgoingTriggerModeEnum"; +import { + SyncOutgoingTriggerModeEnumFromJSON, + SyncOutgoingTriggerModeEnumToJSON, +} from "./SyncOutgoingTriggerModeEnum"; +import type { UserMatchingModeEnum } from "./UserMatchingModeEnum"; +import { UserMatchingModeEnumFromJSON, UserMatchingModeEnumToJSON } from "./UserMatchingModeEnum"; + +/** + * Kerberos Source Serializer + * @export + * @interface PatchedKerberosSourceRequest + */ +export interface PatchedKerberosSourceRequest { + /** + * Source's display Name. + * @type {string} + * @memberof PatchedKerberosSourceRequest + */ + name?: string; + /** + * Internal source name, used in URLs. + * @type {string} + * @memberof PatchedKerberosSourceRequest + */ + slug?: string; + /** + * + * @type {boolean} + * @memberof PatchedKerberosSourceRequest + */ + enabled?: boolean; + /** + * When enabled, this source will be displayed as a prominent button on the login page, instead of a small icon. + * @type {boolean} + * @memberof PatchedKerberosSourceRequest + */ + promoted?: boolean; + /** + * Flow to use when authenticating existing users. + * @type {string} + * @memberof PatchedKerberosSourceRequest + */ + authenticationFlow?: string | null; + /** + * Flow to use when enrolling new users. + * @type {string} + * @memberof PatchedKerberosSourceRequest + */ + enrollmentFlow?: string | null; + /** + * + * @type {Array} + * @memberof PatchedKerberosSourceRequest + */ + userPropertyMappings?: Array; + /** + * + * @type {Array} + * @memberof PatchedKerberosSourceRequest + */ + groupPropertyMappings?: Array; + /** + * + * @type {PolicyEngineMode} + * @memberof PatchedKerberosSourceRequest + */ + policyEngineMode?: PolicyEngineMode; + /** + * How the source determines if an existing user should be authenticated or a new user enrolled. + * @type {UserMatchingModeEnum} + * @memberof PatchedKerberosSourceRequest + */ + userMatchingMode?: UserMatchingModeEnum; + /** + * + * @type {string} + * @memberof PatchedKerberosSourceRequest + */ + userPathTemplate?: string; + /** + * + * @type {string} + * @memberof PatchedKerberosSourceRequest + */ + icon?: string; + /** + * How the source determines if an existing group should be used or a new group created. + * @type {GroupMatchingModeEnum} + * @memberof PatchedKerberosSourceRequest + */ + groupMatchingMode?: GroupMatchingModeEnum; + /** + * Kerberos realm + * @type {string} + * @memberof PatchedKerberosSourceRequest + */ + realm?: string; + /** + * Custom krb5.conf to use. Uses the system one by default + * @type {string} + * @memberof PatchedKerberosSourceRequest + */ + krb5Conf?: string; + /** + * KAdmin server type + * @type {KadminTypeEnum} + * @memberof PatchedKerberosSourceRequest + */ + kadminType?: KadminTypeEnum; + /** + * Sync users from Kerberos into authentik + * @type {boolean} + * @memberof PatchedKerberosSourceRequest + */ + syncUsers?: boolean; + /** + * When a user changes their password, sync it back to Kerberos + * @type {boolean} + * @memberof PatchedKerberosSourceRequest + */ + syncUsersPassword?: boolean; + /** + * Principal to authenticate to kadmin for sync. + * @type {string} + * @memberof PatchedKerberosSourceRequest + */ + syncPrincipal?: string; + /** + * Password to authenticate to kadmin for sync + * @type {string} + * @memberof PatchedKerberosSourceRequest + */ + syncPassword?: string; + /** + * Keytab to authenticate to kadmin for sync. Must be base64-encoded or in the form TYPE:residual + * @type {string} + * @memberof PatchedKerberosSourceRequest + */ + syncKeytab?: string; + /** + * Credentials cache to authenticate to kadmin for sync. Must be in the form TYPE:residual + * @type {string} + * @memberof PatchedKerberosSourceRequest + */ + syncCcache?: string; + /** + * Force the use of a specific server name for SPNEGO. Must be in the form HTTP@hostname + * @type {string} + * @memberof PatchedKerberosSourceRequest + */ + spnegoServerName?: string; + /** + * SPNEGO keytab base64-encoded or path to keytab in the form FILE:path + * @type {string} + * @memberof PatchedKerberosSourceRequest + */ + spnegoKeytab?: string; + /** + * Credential cache to use for SPNEGO in form type:residual + * @type {string} + * @memberof PatchedKerberosSourceRequest + */ + spnegoCcache?: string; + /** + * If enabled, the authentik-stored password will be updated upon login with the Kerberos password backend + * @type {boolean} + * @memberof PatchedKerberosSourceRequest + */ + passwordLoginUpdateInternalPassword?: boolean; + /** + * When to trigger sync for outgoing providers + * @type {SyncOutgoingTriggerModeEnum} + * @memberof PatchedKerberosSourceRequest + */ + syncOutgoingTriggerMode?: SyncOutgoingTriggerModeEnum; +} + +/** + * Check if a given object implements the PatchedKerberosSourceRequest interface. + */ +export function instanceOfPatchedKerberosSourceRequest( + value: object, +): value is PatchedKerberosSourceRequest { + return true; +} + +export function PatchedKerberosSourceRequestFromJSON(json: any): PatchedKerberosSourceRequest { + return PatchedKerberosSourceRequestFromJSONTyped(json, false); +} + +export function PatchedKerberosSourceRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedKerberosSourceRequest { + if (json == null) { + return json; + } + return { + name: json["name"] == null ? undefined : json["name"], + slug: json["slug"] == null ? undefined : json["slug"], + enabled: json["enabled"] == null ? undefined : json["enabled"], + promoted: json["promoted"] == null ? undefined : json["promoted"], + authenticationFlow: + json["authentication_flow"] == null ? undefined : json["authentication_flow"], + enrollmentFlow: json["enrollment_flow"] == null ? undefined : json["enrollment_flow"], + userPropertyMappings: + json["user_property_mappings"] == null ? undefined : json["user_property_mappings"], + groupPropertyMappings: + json["group_property_mappings"] == null ? undefined : json["group_property_mappings"], + policyEngineMode: + json["policy_engine_mode"] == null + ? undefined + : PolicyEngineModeFromJSON(json["policy_engine_mode"]), + userMatchingMode: + json["user_matching_mode"] == null + ? undefined + : UserMatchingModeEnumFromJSON(json["user_matching_mode"]), + userPathTemplate: + json["user_path_template"] == null ? undefined : json["user_path_template"], + icon: json["icon"] == null ? undefined : json["icon"], + groupMatchingMode: + json["group_matching_mode"] == null + ? undefined + : GroupMatchingModeEnumFromJSON(json["group_matching_mode"]), + realm: json["realm"] == null ? undefined : json["realm"], + krb5Conf: json["krb5_conf"] == null ? undefined : json["krb5_conf"], + kadminType: + json["kadmin_type"] == null ? undefined : KadminTypeEnumFromJSON(json["kadmin_type"]), + syncUsers: json["sync_users"] == null ? undefined : json["sync_users"], + syncUsersPassword: + json["sync_users_password"] == null ? undefined : json["sync_users_password"], + syncPrincipal: json["sync_principal"] == null ? undefined : json["sync_principal"], + syncPassword: json["sync_password"] == null ? undefined : json["sync_password"], + syncKeytab: json["sync_keytab"] == null ? undefined : json["sync_keytab"], + syncCcache: json["sync_ccache"] == null ? undefined : json["sync_ccache"], + spnegoServerName: + json["spnego_server_name"] == null ? undefined : json["spnego_server_name"], + spnegoKeytab: json["spnego_keytab"] == null ? undefined : json["spnego_keytab"], + spnegoCcache: json["spnego_ccache"] == null ? undefined : json["spnego_ccache"], + passwordLoginUpdateInternalPassword: + json["password_login_update_internal_password"] == null + ? undefined + : json["password_login_update_internal_password"], + syncOutgoingTriggerMode: + json["sync_outgoing_trigger_mode"] == null + ? undefined + : SyncOutgoingTriggerModeEnumFromJSON(json["sync_outgoing_trigger_mode"]), + }; +} + +export function PatchedKerberosSourceRequestToJSON(json: any): PatchedKerberosSourceRequest { + return PatchedKerberosSourceRequestToJSONTyped(json, false); +} + +export function PatchedKerberosSourceRequestToJSONTyped( + value?: PatchedKerberosSourceRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + slug: value["slug"], + enabled: value["enabled"], + promoted: value["promoted"], + authentication_flow: value["authenticationFlow"], + enrollment_flow: value["enrollmentFlow"], + user_property_mappings: value["userPropertyMappings"], + group_property_mappings: value["groupPropertyMappings"], + policy_engine_mode: PolicyEngineModeToJSON(value["policyEngineMode"]), + user_matching_mode: UserMatchingModeEnumToJSON(value["userMatchingMode"]), + user_path_template: value["userPathTemplate"], + icon: value["icon"], + group_matching_mode: GroupMatchingModeEnumToJSON(value["groupMatchingMode"]), + realm: value["realm"], + krb5_conf: value["krb5Conf"], + kadmin_type: KadminTypeEnumToJSON(value["kadminType"]), + sync_users: value["syncUsers"], + sync_users_password: value["syncUsersPassword"], + sync_principal: value["syncPrincipal"], + sync_password: value["syncPassword"], + sync_keytab: value["syncKeytab"], + sync_ccache: value["syncCcache"], + spnego_server_name: value["spnegoServerName"], + spnego_keytab: value["spnegoKeytab"], + spnego_ccache: value["spnegoCcache"], + password_login_update_internal_password: value["passwordLoginUpdateInternalPassword"], + sync_outgoing_trigger_mode: SyncOutgoingTriggerModeEnumToJSON( + value["syncOutgoingTriggerMode"], + ), + }; +} diff --git a/packages/client-ts/src/models/PatchedKubernetesServiceConnectionRequest.ts b/packages/client-ts/src/models/PatchedKubernetesServiceConnectionRequest.ts new file mode 100644 index 0000000000..180fdebdf0 --- /dev/null +++ b/packages/client-ts/src/models/PatchedKubernetesServiceConnectionRequest.ts @@ -0,0 +1,97 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * KubernetesServiceConnection Serializer + * @export + * @interface PatchedKubernetesServiceConnectionRequest + */ +export interface PatchedKubernetesServiceConnectionRequest { + /** + * + * @type {string} + * @memberof PatchedKubernetesServiceConnectionRequest + */ + name?: string; + /** + * If enabled, use the local connection. Required Docker socket/Kubernetes Integration + * @type {boolean} + * @memberof PatchedKubernetesServiceConnectionRequest + */ + local?: boolean; + /** + * Paste your kubeconfig here. authentik will automatically use the currently selected context. + * @type {{ [key: string]: any; }} + * @memberof PatchedKubernetesServiceConnectionRequest + */ + kubeconfig?: { [key: string]: any }; + /** + * Verify SSL Certificates of the Kubernetes API endpoint + * @type {boolean} + * @memberof PatchedKubernetesServiceConnectionRequest + */ + verifySsl?: boolean; +} + +/** + * Check if a given object implements the PatchedKubernetesServiceConnectionRequest interface. + */ +export function instanceOfPatchedKubernetesServiceConnectionRequest( + value: object, +): value is PatchedKubernetesServiceConnectionRequest { + return true; +} + +export function PatchedKubernetesServiceConnectionRequestFromJSON( + json: any, +): PatchedKubernetesServiceConnectionRequest { + return PatchedKubernetesServiceConnectionRequestFromJSONTyped(json, false); +} + +export function PatchedKubernetesServiceConnectionRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedKubernetesServiceConnectionRequest { + if (json == null) { + return json; + } + return { + name: json["name"] == null ? undefined : json["name"], + local: json["local"] == null ? undefined : json["local"], + kubeconfig: json["kubeconfig"] == null ? undefined : json["kubeconfig"], + verifySsl: json["verify_ssl"] == null ? undefined : json["verify_ssl"], + }; +} + +export function PatchedKubernetesServiceConnectionRequestToJSON( + json: any, +): PatchedKubernetesServiceConnectionRequest { + return PatchedKubernetesServiceConnectionRequestToJSONTyped(json, false); +} + +export function PatchedKubernetesServiceConnectionRequestToJSONTyped( + value?: PatchedKubernetesServiceConnectionRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + local: value["local"], + kubeconfig: value["kubeconfig"], + verify_ssl: value["verifySsl"], + }; +} diff --git a/packages/client-ts/src/models/PatchedLDAPProviderRequest.ts b/packages/client-ts/src/models/PatchedLDAPProviderRequest.ts new file mode 100644 index 0000000000..f5aa276a93 --- /dev/null +++ b/packages/client-ts/src/models/PatchedLDAPProviderRequest.ts @@ -0,0 +1,174 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { LDAPAPIAccessMode } from "./LDAPAPIAccessMode"; +import { LDAPAPIAccessModeFromJSON, LDAPAPIAccessModeToJSON } from "./LDAPAPIAccessMode"; + +/** + * LDAPProvider Serializer + * @export + * @interface PatchedLDAPProviderRequest + */ +export interface PatchedLDAPProviderRequest { + /** + * + * @type {string} + * @memberof PatchedLDAPProviderRequest + */ + name?: string; + /** + * Flow used for authentication when the associated application is accessed by an un-authenticated user. + * @type {string} + * @memberof PatchedLDAPProviderRequest + */ + authenticationFlow?: string | null; + /** + * Flow used when authorizing this provider. + * @type {string} + * @memberof PatchedLDAPProviderRequest + */ + authorizationFlow?: string; + /** + * Flow used ending the session from a provider. + * @type {string} + * @memberof PatchedLDAPProviderRequest + */ + invalidationFlow?: string; + /** + * + * @type {Array} + * @memberof PatchedLDAPProviderRequest + */ + propertyMappings?: Array; + /** + * DN under which objects are accessible. + * @type {string} + * @memberof PatchedLDAPProviderRequest + */ + baseDn?: string; + /** + * + * @type {string} + * @memberof PatchedLDAPProviderRequest + */ + certificate?: string | null; + /** + * + * @type {string} + * @memberof PatchedLDAPProviderRequest + */ + tlsServerName?: string; + /** + * The start for uidNumbers, this number is added to the user.pk to make sure that the numbers aren't too low for POSIX users. Default is 2000 to ensure that we don't collide with local users uidNumber + * @type {number} + * @memberof PatchedLDAPProviderRequest + */ + uidStartNumber?: number; + /** + * The start for gidNumbers, this number is added to a number generated from the group.pk to make sure that the numbers aren't too low for POSIX groups. Default is 4000 to ensure that we don't collide with local groups or users primary groups gidNumber + * @type {number} + * @memberof PatchedLDAPProviderRequest + */ + gidStartNumber?: number; + /** + * + * @type {LDAPAPIAccessMode} + * @memberof PatchedLDAPProviderRequest + */ + searchMode?: LDAPAPIAccessMode; + /** + * + * @type {LDAPAPIAccessMode} + * @memberof PatchedLDAPProviderRequest + */ + bindMode?: LDAPAPIAccessMode; + /** + * When enabled, code-based multi-factor authentication can be used by appending a semicolon and the TOTP code to the password. This should only be enabled if all users that will bind to this provider have a TOTP device configured, as otherwise a password may incorrectly be rejected if it contains a semicolon. + * @type {boolean} + * @memberof PatchedLDAPProviderRequest + */ + mfaSupport?: boolean; +} + +/** + * Check if a given object implements the PatchedLDAPProviderRequest interface. + */ +export function instanceOfPatchedLDAPProviderRequest( + value: object, +): value is PatchedLDAPProviderRequest { + return true; +} + +export function PatchedLDAPProviderRequestFromJSON(json: any): PatchedLDAPProviderRequest { + return PatchedLDAPProviderRequestFromJSONTyped(json, false); +} + +export function PatchedLDAPProviderRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedLDAPProviderRequest { + if (json == null) { + return json; + } + return { + name: json["name"] == null ? undefined : json["name"], + authenticationFlow: + json["authentication_flow"] == null ? undefined : json["authentication_flow"], + authorizationFlow: + json["authorization_flow"] == null ? undefined : json["authorization_flow"], + invalidationFlow: json["invalidation_flow"] == null ? undefined : json["invalidation_flow"], + propertyMappings: json["property_mappings"] == null ? undefined : json["property_mappings"], + baseDn: json["base_dn"] == null ? undefined : json["base_dn"], + certificate: json["certificate"] == null ? undefined : json["certificate"], + tlsServerName: json["tls_server_name"] == null ? undefined : json["tls_server_name"], + uidStartNumber: json["uid_start_number"] == null ? undefined : json["uid_start_number"], + gidStartNumber: json["gid_start_number"] == null ? undefined : json["gid_start_number"], + searchMode: + json["search_mode"] == null + ? undefined + : LDAPAPIAccessModeFromJSON(json["search_mode"]), + bindMode: + json["bind_mode"] == null ? undefined : LDAPAPIAccessModeFromJSON(json["bind_mode"]), + mfaSupport: json["mfa_support"] == null ? undefined : json["mfa_support"], + }; +} + +export function PatchedLDAPProviderRequestToJSON(json: any): PatchedLDAPProviderRequest { + return PatchedLDAPProviderRequestToJSONTyped(json, false); +} + +export function PatchedLDAPProviderRequestToJSONTyped( + value?: PatchedLDAPProviderRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + authentication_flow: value["authenticationFlow"], + authorization_flow: value["authorizationFlow"], + invalidation_flow: value["invalidationFlow"], + property_mappings: value["propertyMappings"], + base_dn: value["baseDn"], + certificate: value["certificate"], + tls_server_name: value["tlsServerName"], + uid_start_number: value["uidStartNumber"], + gid_start_number: value["gidStartNumber"], + search_mode: LDAPAPIAccessModeToJSON(value["searchMode"]), + bind_mode: LDAPAPIAccessModeToJSON(value["bindMode"]), + mfa_support: value["mfaSupport"], + }; +} diff --git a/packages/client-ts/src/models/PatchedLDAPSourcePropertyMappingRequest.ts b/packages/client-ts/src/models/PatchedLDAPSourcePropertyMappingRequest.ts new file mode 100644 index 0000000000..c475ec736d --- /dev/null +++ b/packages/client-ts/src/models/PatchedLDAPSourcePropertyMappingRequest.ts @@ -0,0 +1,89 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * LDAP PropertyMapping Serializer + * @export + * @interface PatchedLDAPSourcePropertyMappingRequest + */ +export interface PatchedLDAPSourcePropertyMappingRequest { + /** + * Objects that are managed by authentik. These objects are created and updated automatically. This flag only indicates that an object can be overwritten by migrations. You can still modify the objects via the API, but expect changes to be overwritten in a later update. + * @type {string} + * @memberof PatchedLDAPSourcePropertyMappingRequest + */ + managed?: string | null; + /** + * + * @type {string} + * @memberof PatchedLDAPSourcePropertyMappingRequest + */ + name?: string; + /** + * + * @type {string} + * @memberof PatchedLDAPSourcePropertyMappingRequest + */ + expression?: string; +} + +/** + * Check if a given object implements the PatchedLDAPSourcePropertyMappingRequest interface. + */ +export function instanceOfPatchedLDAPSourcePropertyMappingRequest( + value: object, +): value is PatchedLDAPSourcePropertyMappingRequest { + return true; +} + +export function PatchedLDAPSourcePropertyMappingRequestFromJSON( + json: any, +): PatchedLDAPSourcePropertyMappingRequest { + return PatchedLDAPSourcePropertyMappingRequestFromJSONTyped(json, false); +} + +export function PatchedLDAPSourcePropertyMappingRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedLDAPSourcePropertyMappingRequest { + if (json == null) { + return json; + } + return { + managed: json["managed"] == null ? undefined : json["managed"], + name: json["name"] == null ? undefined : json["name"], + expression: json["expression"] == null ? undefined : json["expression"], + }; +} + +export function PatchedLDAPSourcePropertyMappingRequestToJSON( + json: any, +): PatchedLDAPSourcePropertyMappingRequest { + return PatchedLDAPSourcePropertyMappingRequestToJSONTyped(json, false); +} + +export function PatchedLDAPSourcePropertyMappingRequestToJSONTyped( + value?: PatchedLDAPSourcePropertyMappingRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + managed: value["managed"], + name: value["name"], + expression: value["expression"], + }; +} diff --git a/packages/client-ts/src/models/PatchedLDAPSourceRequest.ts b/packages/client-ts/src/models/PatchedLDAPSourceRequest.ts new file mode 100644 index 0000000000..31248d99b4 --- /dev/null +++ b/packages/client-ts/src/models/PatchedLDAPSourceRequest.ts @@ -0,0 +1,382 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { PolicyEngineMode } from "./PolicyEngineMode"; +import { PolicyEngineModeFromJSON, PolicyEngineModeToJSON } from "./PolicyEngineMode"; +import type { SyncOutgoingTriggerModeEnum } from "./SyncOutgoingTriggerModeEnum"; +import { + SyncOutgoingTriggerModeEnumFromJSON, + SyncOutgoingTriggerModeEnumToJSON, +} from "./SyncOutgoingTriggerModeEnum"; +import type { UserMatchingModeEnum } from "./UserMatchingModeEnum"; +import { UserMatchingModeEnumFromJSON, UserMatchingModeEnumToJSON } from "./UserMatchingModeEnum"; + +/** + * LDAP Source Serializer + * @export + * @interface PatchedLDAPSourceRequest + */ +export interface PatchedLDAPSourceRequest { + /** + * Source's display Name. + * @type {string} + * @memberof PatchedLDAPSourceRequest + */ + name?: string; + /** + * Internal source name, used in URLs. + * @type {string} + * @memberof PatchedLDAPSourceRequest + */ + slug?: string; + /** + * + * @type {boolean} + * @memberof PatchedLDAPSourceRequest + */ + enabled?: boolean; + /** + * When enabled, this source will be displayed as a prominent button on the login page, instead of a small icon. + * @type {boolean} + * @memberof PatchedLDAPSourceRequest + */ + promoted?: boolean; + /** + * Flow to use when authenticating existing users. + * @type {string} + * @memberof PatchedLDAPSourceRequest + */ + authenticationFlow?: string | null; + /** + * Flow to use when enrolling new users. + * @type {string} + * @memberof PatchedLDAPSourceRequest + */ + enrollmentFlow?: string | null; + /** + * + * @type {Array} + * @memberof PatchedLDAPSourceRequest + */ + userPropertyMappings?: Array; + /** + * + * @type {Array} + * @memberof PatchedLDAPSourceRequest + */ + groupPropertyMappings?: Array; + /** + * + * @type {PolicyEngineMode} + * @memberof PatchedLDAPSourceRequest + */ + policyEngineMode?: PolicyEngineMode; + /** + * How the source determines if an existing user should be authenticated or a new user enrolled. + * @type {UserMatchingModeEnum} + * @memberof PatchedLDAPSourceRequest + */ + userMatchingMode?: UserMatchingModeEnum; + /** + * + * @type {string} + * @memberof PatchedLDAPSourceRequest + */ + userPathTemplate?: string; + /** + * + * @type {string} + * @memberof PatchedLDAPSourceRequest + */ + icon?: string; + /** + * + * @type {string} + * @memberof PatchedLDAPSourceRequest + */ + serverUri?: string; + /** + * Optionally verify the LDAP Server's Certificate against the CA Chain in this keypair. + * @type {string} + * @memberof PatchedLDAPSourceRequest + */ + peerCertificate?: string | null; + /** + * Client certificate to authenticate against the LDAP Server's Certificate. + * @type {string} + * @memberof PatchedLDAPSourceRequest + */ + clientCertificate?: string | null; + /** + * + * @type {string} + * @memberof PatchedLDAPSourceRequest + */ + bindCn?: string; + /** + * + * @type {string} + * @memberof PatchedLDAPSourceRequest + */ + bindPassword?: string; + /** + * + * @type {boolean} + * @memberof PatchedLDAPSourceRequest + */ + startTls?: boolean; + /** + * + * @type {boolean} + * @memberof PatchedLDAPSourceRequest + */ + sni?: boolean; + /** + * + * @type {string} + * @memberof PatchedLDAPSourceRequest + */ + baseDn?: string; + /** + * Prepended to Base DN for User-queries. + * @type {string} + * @memberof PatchedLDAPSourceRequest + */ + additionalUserDn?: string; + /** + * Prepended to Base DN for Group-queries. + * @type {string} + * @memberof PatchedLDAPSourceRequest + */ + additionalGroupDn?: string; + /** + * Consider Objects matching this filter to be Users. + * @type {string} + * @memberof PatchedLDAPSourceRequest + */ + userObjectFilter?: string; + /** + * Consider Objects matching this filter to be Groups. + * @type {string} + * @memberof PatchedLDAPSourceRequest + */ + groupObjectFilter?: string; + /** + * Field which contains members of a group. + * @type {string} + * @memberof PatchedLDAPSourceRequest + */ + groupMembershipField?: string; + /** + * Attribute which matches the value of `group_membership_field`. + * @type {string} + * @memberof PatchedLDAPSourceRequest + */ + userMembershipAttribute?: string; + /** + * Field which contains a unique Identifier. + * @type {string} + * @memberof PatchedLDAPSourceRequest + */ + objectUniquenessField?: string; + /** + * Update internal authentik password when login succeeds with LDAP + * @type {boolean} + * @memberof PatchedLDAPSourceRequest + */ + passwordLoginUpdateInternalPassword?: boolean; + /** + * + * @type {boolean} + * @memberof PatchedLDAPSourceRequest + */ + syncUsers?: boolean; + /** + * When a user changes their password, sync it back to LDAP. This can only be enabled on a single LDAP source. + * @type {boolean} + * @memberof PatchedLDAPSourceRequest + */ + syncUsersPassword?: boolean; + /** + * + * @type {boolean} + * @memberof PatchedLDAPSourceRequest + */ + syncGroups?: boolean; + /** + * + * @type {string} + * @memberof PatchedLDAPSourceRequest + */ + syncParentGroup?: string | null; + /** + * Lookup group membership based on a user attribute instead of a group attribute. This allows nested group resolution on systems like FreeIPA and Active Directory + * @type {boolean} + * @memberof PatchedLDAPSourceRequest + */ + lookupGroupsFromUser?: boolean; + /** + * Delete authentik users and groups which were previously supplied by this source, but are now missing from it. + * @type {boolean} + * @memberof PatchedLDAPSourceRequest + */ + deleteNotFoundObjects?: boolean; + /** + * When to trigger sync for outgoing providers + * @type {SyncOutgoingTriggerModeEnum} + * @memberof PatchedLDAPSourceRequest + */ + syncOutgoingTriggerMode?: SyncOutgoingTriggerModeEnum; +} + +/** + * Check if a given object implements the PatchedLDAPSourceRequest interface. + */ +export function instanceOfPatchedLDAPSourceRequest( + value: object, +): value is PatchedLDAPSourceRequest { + return true; +} + +export function PatchedLDAPSourceRequestFromJSON(json: any): PatchedLDAPSourceRequest { + return PatchedLDAPSourceRequestFromJSONTyped(json, false); +} + +export function PatchedLDAPSourceRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedLDAPSourceRequest { + if (json == null) { + return json; + } + return { + name: json["name"] == null ? undefined : json["name"], + slug: json["slug"] == null ? undefined : json["slug"], + enabled: json["enabled"] == null ? undefined : json["enabled"], + promoted: json["promoted"] == null ? undefined : json["promoted"], + authenticationFlow: + json["authentication_flow"] == null ? undefined : json["authentication_flow"], + enrollmentFlow: json["enrollment_flow"] == null ? undefined : json["enrollment_flow"], + userPropertyMappings: + json["user_property_mappings"] == null ? undefined : json["user_property_mappings"], + groupPropertyMappings: + json["group_property_mappings"] == null ? undefined : json["group_property_mappings"], + policyEngineMode: + json["policy_engine_mode"] == null + ? undefined + : PolicyEngineModeFromJSON(json["policy_engine_mode"]), + userMatchingMode: + json["user_matching_mode"] == null + ? undefined + : UserMatchingModeEnumFromJSON(json["user_matching_mode"]), + userPathTemplate: + json["user_path_template"] == null ? undefined : json["user_path_template"], + icon: json["icon"] == null ? undefined : json["icon"], + serverUri: json["server_uri"] == null ? undefined : json["server_uri"], + peerCertificate: json["peer_certificate"] == null ? undefined : json["peer_certificate"], + clientCertificate: + json["client_certificate"] == null ? undefined : json["client_certificate"], + bindCn: json["bind_cn"] == null ? undefined : json["bind_cn"], + bindPassword: json["bind_password"] == null ? undefined : json["bind_password"], + startTls: json["start_tls"] == null ? undefined : json["start_tls"], + sni: json["sni"] == null ? undefined : json["sni"], + baseDn: json["base_dn"] == null ? undefined : json["base_dn"], + additionalUserDn: + json["additional_user_dn"] == null ? undefined : json["additional_user_dn"], + additionalGroupDn: + json["additional_group_dn"] == null ? undefined : json["additional_group_dn"], + userObjectFilter: + json["user_object_filter"] == null ? undefined : json["user_object_filter"], + groupObjectFilter: + json["group_object_filter"] == null ? undefined : json["group_object_filter"], + groupMembershipField: + json["group_membership_field"] == null ? undefined : json["group_membership_field"], + userMembershipAttribute: + json["user_membership_attribute"] == null + ? undefined + : json["user_membership_attribute"], + objectUniquenessField: + json["object_uniqueness_field"] == null ? undefined : json["object_uniqueness_field"], + passwordLoginUpdateInternalPassword: + json["password_login_update_internal_password"] == null + ? undefined + : json["password_login_update_internal_password"], + syncUsers: json["sync_users"] == null ? undefined : json["sync_users"], + syncUsersPassword: + json["sync_users_password"] == null ? undefined : json["sync_users_password"], + syncGroups: json["sync_groups"] == null ? undefined : json["sync_groups"], + syncParentGroup: json["sync_parent_group"] == null ? undefined : json["sync_parent_group"], + lookupGroupsFromUser: + json["lookup_groups_from_user"] == null ? undefined : json["lookup_groups_from_user"], + deleteNotFoundObjects: + json["delete_not_found_objects"] == null ? undefined : json["delete_not_found_objects"], + syncOutgoingTriggerMode: + json["sync_outgoing_trigger_mode"] == null + ? undefined + : SyncOutgoingTriggerModeEnumFromJSON(json["sync_outgoing_trigger_mode"]), + }; +} + +export function PatchedLDAPSourceRequestToJSON(json: any): PatchedLDAPSourceRequest { + return PatchedLDAPSourceRequestToJSONTyped(json, false); +} + +export function PatchedLDAPSourceRequestToJSONTyped( + value?: PatchedLDAPSourceRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + slug: value["slug"], + enabled: value["enabled"], + promoted: value["promoted"], + authentication_flow: value["authenticationFlow"], + enrollment_flow: value["enrollmentFlow"], + user_property_mappings: value["userPropertyMappings"], + group_property_mappings: value["groupPropertyMappings"], + policy_engine_mode: PolicyEngineModeToJSON(value["policyEngineMode"]), + user_matching_mode: UserMatchingModeEnumToJSON(value["userMatchingMode"]), + user_path_template: value["userPathTemplate"], + icon: value["icon"], + server_uri: value["serverUri"], + peer_certificate: value["peerCertificate"], + client_certificate: value["clientCertificate"], + bind_cn: value["bindCn"], + bind_password: value["bindPassword"], + start_tls: value["startTls"], + sni: value["sni"], + base_dn: value["baseDn"], + additional_user_dn: value["additionalUserDn"], + additional_group_dn: value["additionalGroupDn"], + user_object_filter: value["userObjectFilter"], + group_object_filter: value["groupObjectFilter"], + group_membership_field: value["groupMembershipField"], + user_membership_attribute: value["userMembershipAttribute"], + object_uniqueness_field: value["objectUniquenessField"], + password_login_update_internal_password: value["passwordLoginUpdateInternalPassword"], + sync_users: value["syncUsers"], + sync_users_password: value["syncUsersPassword"], + sync_groups: value["syncGroups"], + sync_parent_group: value["syncParentGroup"], + lookup_groups_from_user: value["lookupGroupsFromUser"], + delete_not_found_objects: value["deleteNotFoundObjects"], + sync_outgoing_trigger_mode: SyncOutgoingTriggerModeEnumToJSON( + value["syncOutgoingTriggerMode"], + ), + }; +} diff --git a/packages/client-ts/src/models/PatchedLicenseRequest.ts b/packages/client-ts/src/models/PatchedLicenseRequest.ts new file mode 100644 index 0000000000..b14c80247c --- /dev/null +++ b/packages/client-ts/src/models/PatchedLicenseRequest.ts @@ -0,0 +1,67 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * License Serializer + * @export + * @interface PatchedLicenseRequest + */ +export interface PatchedLicenseRequest { + /** + * + * @type {string} + * @memberof PatchedLicenseRequest + */ + key?: string; +} + +/** + * Check if a given object implements the PatchedLicenseRequest interface. + */ +export function instanceOfPatchedLicenseRequest(value: object): value is PatchedLicenseRequest { + return true; +} + +export function PatchedLicenseRequestFromJSON(json: any): PatchedLicenseRequest { + return PatchedLicenseRequestFromJSONTyped(json, false); +} + +export function PatchedLicenseRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedLicenseRequest { + if (json == null) { + return json; + } + return { + key: json["key"] == null ? undefined : json["key"], + }; +} + +export function PatchedLicenseRequestToJSON(json: any): PatchedLicenseRequest { + return PatchedLicenseRequestToJSONTyped(json, false); +} + +export function PatchedLicenseRequestToJSONTyped( + value?: PatchedLicenseRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + key: value["key"], + }; +} diff --git a/packages/client-ts/src/models/PatchedLifecycleRuleRequest.ts b/packages/client-ts/src/models/PatchedLifecycleRuleRequest.ts new file mode 100644 index 0000000000..67081207aa --- /dev/null +++ b/packages/client-ts/src/models/PatchedLifecycleRuleRequest.ts @@ -0,0 +1,152 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { ContentTypeEnum } from "./ContentTypeEnum"; +import { ContentTypeEnumFromJSON, ContentTypeEnumToJSON } from "./ContentTypeEnum"; + +/** + * Mixin to validate that a valid enterprise license + * exists before allowing to save the object + * @export + * @interface PatchedLifecycleRuleRequest + */ +export interface PatchedLifecycleRuleRequest { + /** + * + * @type {string} + * @memberof PatchedLifecycleRuleRequest + */ + name?: string; + /** + * + * @type {ContentTypeEnum} + * @memberof PatchedLifecycleRuleRequest + */ + contentType?: ContentTypeEnum; + /** + * + * @type {string} + * @memberof PatchedLifecycleRuleRequest + */ + objectId?: string | null; + /** + * + * @type {string} + * @memberof PatchedLifecycleRuleRequest + */ + interval?: string; + /** + * + * @type {string} + * @memberof PatchedLifecycleRuleRequest + */ + gracePeriod?: string; + /** + * + * @type {Array} + * @memberof PatchedLifecycleRuleRequest + */ + reviewerGroups?: Array; + /** + * + * @type {number} + * @memberof PatchedLifecycleRuleRequest + */ + minReviewers?: number; + /** + * + * @type {boolean} + * @memberof PatchedLifecycleRuleRequest + */ + minReviewersIsPerGroup?: boolean; + /** + * + * @type {Array} + * @memberof PatchedLifecycleRuleRequest + */ + reviewers?: Array; + /** + * Select which transports should be used to notify the reviewers. If none are selected, the notification will only be shown in the authentik UI. + * @type {Array} + * @memberof PatchedLifecycleRuleRequest + */ + notificationTransports?: Array; +} + +/** + * Check if a given object implements the PatchedLifecycleRuleRequest interface. + */ +export function instanceOfPatchedLifecycleRuleRequest( + value: object, +): value is PatchedLifecycleRuleRequest { + return true; +} + +export function PatchedLifecycleRuleRequestFromJSON(json: any): PatchedLifecycleRuleRequest { + return PatchedLifecycleRuleRequestFromJSONTyped(json, false); +} + +export function PatchedLifecycleRuleRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedLifecycleRuleRequest { + if (json == null) { + return json; + } + return { + name: json["name"] == null ? undefined : json["name"], + contentType: + json["content_type"] == null + ? undefined + : ContentTypeEnumFromJSON(json["content_type"]), + objectId: json["object_id"] == null ? undefined : json["object_id"], + interval: json["interval"] == null ? undefined : json["interval"], + gracePeriod: json["grace_period"] == null ? undefined : json["grace_period"], + reviewerGroups: json["reviewer_groups"] == null ? undefined : json["reviewer_groups"], + minReviewers: json["min_reviewers"] == null ? undefined : json["min_reviewers"], + minReviewersIsPerGroup: + json["min_reviewers_is_per_group"] == null + ? undefined + : json["min_reviewers_is_per_group"], + reviewers: json["reviewers"] == null ? undefined : json["reviewers"], + notificationTransports: + json["notification_transports"] == null ? undefined : json["notification_transports"], + }; +} + +export function PatchedLifecycleRuleRequestToJSON(json: any): PatchedLifecycleRuleRequest { + return PatchedLifecycleRuleRequestToJSONTyped(json, false); +} + +export function PatchedLifecycleRuleRequestToJSONTyped( + value?: PatchedLifecycleRuleRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + content_type: ContentTypeEnumToJSON(value["contentType"]), + object_id: value["objectId"], + interval: value["interval"], + grace_period: value["gracePeriod"], + reviewer_groups: value["reviewerGroups"], + min_reviewers: value["minReviewers"], + min_reviewers_is_per_group: value["minReviewersIsPerGroup"], + reviewers: value["reviewers"], + notification_transports: value["notificationTransports"], + }; +} diff --git a/packages/client-ts/src/models/PatchedMicrosoftEntraProviderMappingRequest.ts b/packages/client-ts/src/models/PatchedMicrosoftEntraProviderMappingRequest.ts new file mode 100644 index 0000000000..0876026429 --- /dev/null +++ b/packages/client-ts/src/models/PatchedMicrosoftEntraProviderMappingRequest.ts @@ -0,0 +1,89 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * MicrosoftEntraProviderMapping Serializer + * @export + * @interface PatchedMicrosoftEntraProviderMappingRequest + */ +export interface PatchedMicrosoftEntraProviderMappingRequest { + /** + * Objects that are managed by authentik. These objects are created and updated automatically. This flag only indicates that an object can be overwritten by migrations. You can still modify the objects via the API, but expect changes to be overwritten in a later update. + * @type {string} + * @memberof PatchedMicrosoftEntraProviderMappingRequest + */ + managed?: string | null; + /** + * + * @type {string} + * @memberof PatchedMicrosoftEntraProviderMappingRequest + */ + name?: string; + /** + * + * @type {string} + * @memberof PatchedMicrosoftEntraProviderMappingRequest + */ + expression?: string; +} + +/** + * Check if a given object implements the PatchedMicrosoftEntraProviderMappingRequest interface. + */ +export function instanceOfPatchedMicrosoftEntraProviderMappingRequest( + value: object, +): value is PatchedMicrosoftEntraProviderMappingRequest { + return true; +} + +export function PatchedMicrosoftEntraProviderMappingRequestFromJSON( + json: any, +): PatchedMicrosoftEntraProviderMappingRequest { + return PatchedMicrosoftEntraProviderMappingRequestFromJSONTyped(json, false); +} + +export function PatchedMicrosoftEntraProviderMappingRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedMicrosoftEntraProviderMappingRequest { + if (json == null) { + return json; + } + return { + managed: json["managed"] == null ? undefined : json["managed"], + name: json["name"] == null ? undefined : json["name"], + expression: json["expression"] == null ? undefined : json["expression"], + }; +} + +export function PatchedMicrosoftEntraProviderMappingRequestToJSON( + json: any, +): PatchedMicrosoftEntraProviderMappingRequest { + return PatchedMicrosoftEntraProviderMappingRequestToJSONTyped(json, false); +} + +export function PatchedMicrosoftEntraProviderMappingRequestToJSONTyped( + value?: PatchedMicrosoftEntraProviderMappingRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + managed: value["managed"], + name: value["name"], + expression: value["expression"], + }; +} diff --git a/packages/client-ts/src/models/PatchedMicrosoftEntraProviderRequest.ts b/packages/client-ts/src/models/PatchedMicrosoftEntraProviderRequest.ts new file mode 100644 index 0000000000..a624f098c8 --- /dev/null +++ b/packages/client-ts/src/models/PatchedMicrosoftEntraProviderRequest.ts @@ -0,0 +1,185 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { OutgoingSyncDeleteAction } from "./OutgoingSyncDeleteAction"; +import { + OutgoingSyncDeleteActionFromJSON, + OutgoingSyncDeleteActionToJSON, +} from "./OutgoingSyncDeleteAction"; + +/** + * MicrosoftEntraProvider Serializer + * @export + * @interface PatchedMicrosoftEntraProviderRequest + */ +export interface PatchedMicrosoftEntraProviderRequest { + /** + * + * @type {string} + * @memberof PatchedMicrosoftEntraProviderRequest + */ + name?: string; + /** + * + * @type {Array} + * @memberof PatchedMicrosoftEntraProviderRequest + */ + propertyMappings?: Array; + /** + * Property mappings used for group creation/updating. + * @type {Array} + * @memberof PatchedMicrosoftEntraProviderRequest + */ + propertyMappingsGroup?: Array; + /** + * + * @type {string} + * @memberof PatchedMicrosoftEntraProviderRequest + */ + clientId?: string; + /** + * + * @type {string} + * @memberof PatchedMicrosoftEntraProviderRequest + */ + clientSecret?: string; + /** + * + * @type {string} + * @memberof PatchedMicrosoftEntraProviderRequest + */ + tenantId?: string; + /** + * + * @type {boolean} + * @memberof PatchedMicrosoftEntraProviderRequest + */ + excludeUsersServiceAccount?: boolean; + /** + * + * @type {string} + * @memberof PatchedMicrosoftEntraProviderRequest + */ + filterGroup?: string | null; + /** + * + * @type {OutgoingSyncDeleteAction} + * @memberof PatchedMicrosoftEntraProviderRequest + */ + userDeleteAction?: OutgoingSyncDeleteAction; + /** + * + * @type {OutgoingSyncDeleteAction} + * @memberof PatchedMicrosoftEntraProviderRequest + */ + groupDeleteAction?: OutgoingSyncDeleteAction; + /** + * Controls the number of objects synced in a single task + * @type {number} + * @memberof PatchedMicrosoftEntraProviderRequest + */ + syncPageSize?: number; + /** + * Timeout for synchronization of a single page + * @type {string} + * @memberof PatchedMicrosoftEntraProviderRequest + */ + syncPageTimeout?: string; + /** + * When enabled, provider will not modify or create objects in the remote system. + * @type {boolean} + * @memberof PatchedMicrosoftEntraProviderRequest + */ + dryRun?: boolean; +} + +/** + * Check if a given object implements the PatchedMicrosoftEntraProviderRequest interface. + */ +export function instanceOfPatchedMicrosoftEntraProviderRequest( + value: object, +): value is PatchedMicrosoftEntraProviderRequest { + return true; +} + +export function PatchedMicrosoftEntraProviderRequestFromJSON( + json: any, +): PatchedMicrosoftEntraProviderRequest { + return PatchedMicrosoftEntraProviderRequestFromJSONTyped(json, false); +} + +export function PatchedMicrosoftEntraProviderRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedMicrosoftEntraProviderRequest { + if (json == null) { + return json; + } + return { + name: json["name"] == null ? undefined : json["name"], + propertyMappings: json["property_mappings"] == null ? undefined : json["property_mappings"], + propertyMappingsGroup: + json["property_mappings_group"] == null ? undefined : json["property_mappings_group"], + clientId: json["client_id"] == null ? undefined : json["client_id"], + clientSecret: json["client_secret"] == null ? undefined : json["client_secret"], + tenantId: json["tenant_id"] == null ? undefined : json["tenant_id"], + excludeUsersServiceAccount: + json["exclude_users_service_account"] == null + ? undefined + : json["exclude_users_service_account"], + filterGroup: json["filter_group"] == null ? undefined : json["filter_group"], + userDeleteAction: + json["user_delete_action"] == null + ? undefined + : OutgoingSyncDeleteActionFromJSON(json["user_delete_action"]), + groupDeleteAction: + json["group_delete_action"] == null + ? undefined + : OutgoingSyncDeleteActionFromJSON(json["group_delete_action"]), + syncPageSize: json["sync_page_size"] == null ? undefined : json["sync_page_size"], + syncPageTimeout: json["sync_page_timeout"] == null ? undefined : json["sync_page_timeout"], + dryRun: json["dry_run"] == null ? undefined : json["dry_run"], + }; +} + +export function PatchedMicrosoftEntraProviderRequestToJSON( + json: any, +): PatchedMicrosoftEntraProviderRequest { + return PatchedMicrosoftEntraProviderRequestToJSONTyped(json, false); +} + +export function PatchedMicrosoftEntraProviderRequestToJSONTyped( + value?: PatchedMicrosoftEntraProviderRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + property_mappings: value["propertyMappings"], + property_mappings_group: value["propertyMappingsGroup"], + client_id: value["clientId"], + client_secret: value["clientSecret"], + tenant_id: value["tenantId"], + exclude_users_service_account: value["excludeUsersServiceAccount"], + filter_group: value["filterGroup"], + user_delete_action: OutgoingSyncDeleteActionToJSON(value["userDeleteAction"]), + group_delete_action: OutgoingSyncDeleteActionToJSON(value["groupDeleteAction"]), + sync_page_size: value["syncPageSize"], + sync_page_timeout: value["syncPageTimeout"], + dry_run: value["dryRun"], + }; +} diff --git a/packages/client-ts/src/models/PatchedMutualTLSStageRequest.ts b/packages/client-ts/src/models/PatchedMutualTLSStageRequest.ts new file mode 100644 index 0000000000..2c4662a673 --- /dev/null +++ b/packages/client-ts/src/models/PatchedMutualTLSStageRequest.ts @@ -0,0 +1,115 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { CertAttributeEnum } from "./CertAttributeEnum"; +import { CertAttributeEnumFromJSON, CertAttributeEnumToJSON } from "./CertAttributeEnum"; +import type { StageModeEnum } from "./StageModeEnum"; +import { StageModeEnumFromJSON, StageModeEnumToJSON } from "./StageModeEnum"; +import type { UserAttributeEnum } from "./UserAttributeEnum"; +import { UserAttributeEnumFromJSON, UserAttributeEnumToJSON } from "./UserAttributeEnum"; + +/** + * MutualTLSStage Serializer + * @export + * @interface PatchedMutualTLSStageRequest + */ +export interface PatchedMutualTLSStageRequest { + /** + * + * @type {string} + * @memberof PatchedMutualTLSStageRequest + */ + name?: string; + /** + * + * @type {StageModeEnum} + * @memberof PatchedMutualTLSStageRequest + */ + mode?: StageModeEnum; + /** + * Configure certificate authorities to validate the certificate against. This option has a higher priority than the `client_certificate` option on `Brand`. + * @type {Array} + * @memberof PatchedMutualTLSStageRequest + */ + certificateAuthorities?: Array; + /** + * + * @type {CertAttributeEnum} + * @memberof PatchedMutualTLSStageRequest + */ + certAttribute?: CertAttributeEnum; + /** + * + * @type {UserAttributeEnum} + * @memberof PatchedMutualTLSStageRequest + */ + userAttribute?: UserAttributeEnum; +} + +/** + * Check if a given object implements the PatchedMutualTLSStageRequest interface. + */ +export function instanceOfPatchedMutualTLSStageRequest( + value: object, +): value is PatchedMutualTLSStageRequest { + return true; +} + +export function PatchedMutualTLSStageRequestFromJSON(json: any): PatchedMutualTLSStageRequest { + return PatchedMutualTLSStageRequestFromJSONTyped(json, false); +} + +export function PatchedMutualTLSStageRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedMutualTLSStageRequest { + if (json == null) { + return json; + } + return { + name: json["name"] == null ? undefined : json["name"], + mode: json["mode"] == null ? undefined : StageModeEnumFromJSON(json["mode"]), + certificateAuthorities: + json["certificate_authorities"] == null ? undefined : json["certificate_authorities"], + certAttribute: + json["cert_attribute"] == null + ? undefined + : CertAttributeEnumFromJSON(json["cert_attribute"]), + userAttribute: + json["user_attribute"] == null + ? undefined + : UserAttributeEnumFromJSON(json["user_attribute"]), + }; +} + +export function PatchedMutualTLSStageRequestToJSON(json: any): PatchedMutualTLSStageRequest { + return PatchedMutualTLSStageRequestToJSONTyped(json, false); +} + +export function PatchedMutualTLSStageRequestToJSONTyped( + value?: PatchedMutualTLSStageRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + mode: StageModeEnumToJSON(value["mode"]), + certificate_authorities: value["certificateAuthorities"], + cert_attribute: CertAttributeEnumToJSON(value["certAttribute"]), + user_attribute: UserAttributeEnumToJSON(value["userAttribute"]), + }; +} diff --git a/packages/client-ts/src/models/PatchedNotificationRequest.ts b/packages/client-ts/src/models/PatchedNotificationRequest.ts new file mode 100644 index 0000000000..acc59856df --- /dev/null +++ b/packages/client-ts/src/models/PatchedNotificationRequest.ts @@ -0,0 +1,96 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { EventRequest } from "./EventRequest"; +import { EventRequestFromJSON, EventRequestToJSON } from "./EventRequest"; + +/** + * Notification Serializer + * @export + * @interface PatchedNotificationRequest + */ +export interface PatchedNotificationRequest { + /** + * + * @type {string} + * @memberof PatchedNotificationRequest + */ + hyperlink?: string | null; + /** + * + * @type {string} + * @memberof PatchedNotificationRequest + */ + hyperlinkLabel?: string | null; + /** + * + * @type {EventRequest} + * @memberof PatchedNotificationRequest + */ + event?: EventRequest; + /** + * + * @type {boolean} + * @memberof PatchedNotificationRequest + */ + seen?: boolean; +} + +/** + * Check if a given object implements the PatchedNotificationRequest interface. + */ +export function instanceOfPatchedNotificationRequest( + value: object, +): value is PatchedNotificationRequest { + return true; +} + +export function PatchedNotificationRequestFromJSON(json: any): PatchedNotificationRequest { + return PatchedNotificationRequestFromJSONTyped(json, false); +} + +export function PatchedNotificationRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedNotificationRequest { + if (json == null) { + return json; + } + return { + hyperlink: json["hyperlink"] == null ? undefined : json["hyperlink"], + hyperlinkLabel: json["hyperlink_label"] == null ? undefined : json["hyperlink_label"], + event: json["event"] == null ? undefined : EventRequestFromJSON(json["event"]), + seen: json["seen"] == null ? undefined : json["seen"], + }; +} + +export function PatchedNotificationRequestToJSON(json: any): PatchedNotificationRequest { + return PatchedNotificationRequestToJSONTyped(json, false); +} + +export function PatchedNotificationRequestToJSONTyped( + value?: PatchedNotificationRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + hyperlink: value["hyperlink"], + hyperlink_label: value["hyperlinkLabel"], + event: EventRequestToJSON(value["event"]), + seen: value["seen"], + }; +} diff --git a/packages/client-ts/src/models/PatchedNotificationRuleRequest.ts b/packages/client-ts/src/models/PatchedNotificationRuleRequest.ts new file mode 100644 index 0000000000..b670068223 --- /dev/null +++ b/packages/client-ts/src/models/PatchedNotificationRuleRequest.ts @@ -0,0 +1,105 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { SeverityEnum } from "./SeverityEnum"; +import { SeverityEnumFromJSON, SeverityEnumToJSON } from "./SeverityEnum"; + +/** + * NotificationRule Serializer + * @export + * @interface PatchedNotificationRuleRequest + */ +export interface PatchedNotificationRuleRequest { + /** + * + * @type {string} + * @memberof PatchedNotificationRuleRequest + */ + name?: string; + /** + * Select which transports should be used to notify the user. If none are selected, the notification will only be shown in the authentik UI. + * @type {Array} + * @memberof PatchedNotificationRuleRequest + */ + transports?: Array; + /** + * Controls which severity level the created notifications will have. + * @type {SeverityEnum} + * @memberof PatchedNotificationRuleRequest + */ + severity?: SeverityEnum; + /** + * Define which group of users this notification should be sent and shown to. If left empty, Notification won't ben sent. + * @type {string} + * @memberof PatchedNotificationRuleRequest + */ + destinationGroup?: string | null; + /** + * When enabled, notification will be sent to user the user that triggered the event.When destination_group is configured, notification is sent to both. + * @type {boolean} + * @memberof PatchedNotificationRuleRequest + */ + destinationEventUser?: boolean; +} + +/** + * Check if a given object implements the PatchedNotificationRuleRequest interface. + */ +export function instanceOfPatchedNotificationRuleRequest( + value: object, +): value is PatchedNotificationRuleRequest { + return true; +} + +export function PatchedNotificationRuleRequestFromJSON(json: any): PatchedNotificationRuleRequest { + return PatchedNotificationRuleRequestFromJSONTyped(json, false); +} + +export function PatchedNotificationRuleRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedNotificationRuleRequest { + if (json == null) { + return json; + } + return { + name: json["name"] == null ? undefined : json["name"], + transports: json["transports"] == null ? undefined : json["transports"], + severity: json["severity"] == null ? undefined : SeverityEnumFromJSON(json["severity"]), + destinationGroup: json["destination_group"] == null ? undefined : json["destination_group"], + destinationEventUser: + json["destination_event_user"] == null ? undefined : json["destination_event_user"], + }; +} + +export function PatchedNotificationRuleRequestToJSON(json: any): PatchedNotificationRuleRequest { + return PatchedNotificationRuleRequestToJSONTyped(json, false); +} + +export function PatchedNotificationRuleRequestToJSONTyped( + value?: PatchedNotificationRuleRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + transports: value["transports"], + severity: SeverityEnumToJSON(value["severity"]), + destination_group: value["destinationGroup"], + destination_event_user: value["destinationEventUser"], + }; +} diff --git a/packages/client-ts/src/models/PatchedNotificationTransportRequest.ts b/packages/client-ts/src/models/PatchedNotificationTransportRequest.ts new file mode 100644 index 0000000000..3b351d4e77 --- /dev/null +++ b/packages/client-ts/src/models/PatchedNotificationTransportRequest.ts @@ -0,0 +1,143 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { TransportModeEnum } from "./TransportModeEnum"; +import { TransportModeEnumFromJSON, TransportModeEnumToJSON } from "./TransportModeEnum"; + +/** + * NotificationTransport Serializer + * @export + * @interface PatchedNotificationTransportRequest + */ +export interface PatchedNotificationTransportRequest { + /** + * + * @type {string} + * @memberof PatchedNotificationTransportRequest + */ + name?: string; + /** + * + * @type {TransportModeEnum} + * @memberof PatchedNotificationTransportRequest + */ + mode?: TransportModeEnum; + /** + * + * @type {string} + * @memberof PatchedNotificationTransportRequest + */ + webhookUrl?: string; + /** + * When set, the selected ceritifcate is used to validate the certificate of the webhook server. + * @type {string} + * @memberof PatchedNotificationTransportRequest + */ + webhookCa?: string | null; + /** + * Customize the body of the request. Mapping should return data that is JSON-serializable. + * @type {string} + * @memberof PatchedNotificationTransportRequest + */ + webhookMappingBody?: string | null; + /** + * Configure additional headers to be sent. Mapping should return a dictionary of key-value pairs + * @type {string} + * @memberof PatchedNotificationTransportRequest + */ + webhookMappingHeaders?: string | null; + /** + * + * @type {string} + * @memberof PatchedNotificationTransportRequest + */ + emailSubjectPrefix?: string; + /** + * + * @type {string} + * @memberof PatchedNotificationTransportRequest + */ + emailTemplate?: string; + /** + * Only send notification once, for example when sending a webhook into a chat channel. + * @type {boolean} + * @memberof PatchedNotificationTransportRequest + */ + sendOnce?: boolean; +} + +/** + * Check if a given object implements the PatchedNotificationTransportRequest interface. + */ +export function instanceOfPatchedNotificationTransportRequest( + value: object, +): value is PatchedNotificationTransportRequest { + return true; +} + +export function PatchedNotificationTransportRequestFromJSON( + json: any, +): PatchedNotificationTransportRequest { + return PatchedNotificationTransportRequestFromJSONTyped(json, false); +} + +export function PatchedNotificationTransportRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedNotificationTransportRequest { + if (json == null) { + return json; + } + return { + name: json["name"] == null ? undefined : json["name"], + mode: json["mode"] == null ? undefined : TransportModeEnumFromJSON(json["mode"]), + webhookUrl: json["webhook_url"] == null ? undefined : json["webhook_url"], + webhookCa: json["webhook_ca"] == null ? undefined : json["webhook_ca"], + webhookMappingBody: + json["webhook_mapping_body"] == null ? undefined : json["webhook_mapping_body"], + webhookMappingHeaders: + json["webhook_mapping_headers"] == null ? undefined : json["webhook_mapping_headers"], + emailSubjectPrefix: + json["email_subject_prefix"] == null ? undefined : json["email_subject_prefix"], + emailTemplate: json["email_template"] == null ? undefined : json["email_template"], + sendOnce: json["send_once"] == null ? undefined : json["send_once"], + }; +} + +export function PatchedNotificationTransportRequestToJSON( + json: any, +): PatchedNotificationTransportRequest { + return PatchedNotificationTransportRequestToJSONTyped(json, false); +} + +export function PatchedNotificationTransportRequestToJSONTyped( + value?: PatchedNotificationTransportRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + mode: TransportModeEnumToJSON(value["mode"]), + webhook_url: value["webhookUrl"], + webhook_ca: value["webhookCa"], + webhook_mapping_body: value["webhookMappingBody"], + webhook_mapping_headers: value["webhookMappingHeaders"], + email_subject_prefix: value["emailSubjectPrefix"], + email_template: value["emailTemplate"], + send_once: value["sendOnce"], + }; +} diff --git a/packages/client-ts/src/models/PatchedNotificationWebhookMappingRequest.ts b/packages/client-ts/src/models/PatchedNotificationWebhookMappingRequest.ts new file mode 100644 index 0000000000..6553acc02f --- /dev/null +++ b/packages/client-ts/src/models/PatchedNotificationWebhookMappingRequest.ts @@ -0,0 +1,81 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * NotificationWebhookMapping Serializer + * @export + * @interface PatchedNotificationWebhookMappingRequest + */ +export interface PatchedNotificationWebhookMappingRequest { + /** + * + * @type {string} + * @memberof PatchedNotificationWebhookMappingRequest + */ + name?: string; + /** + * + * @type {string} + * @memberof PatchedNotificationWebhookMappingRequest + */ + expression?: string; +} + +/** + * Check if a given object implements the PatchedNotificationWebhookMappingRequest interface. + */ +export function instanceOfPatchedNotificationWebhookMappingRequest( + value: object, +): value is PatchedNotificationWebhookMappingRequest { + return true; +} + +export function PatchedNotificationWebhookMappingRequestFromJSON( + json: any, +): PatchedNotificationWebhookMappingRequest { + return PatchedNotificationWebhookMappingRequestFromJSONTyped(json, false); +} + +export function PatchedNotificationWebhookMappingRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedNotificationWebhookMappingRequest { + if (json == null) { + return json; + } + return { + name: json["name"] == null ? undefined : json["name"], + expression: json["expression"] == null ? undefined : json["expression"], + }; +} + +export function PatchedNotificationWebhookMappingRequestToJSON( + json: any, +): PatchedNotificationWebhookMappingRequest { + return PatchedNotificationWebhookMappingRequestToJSONTyped(json, false); +} + +export function PatchedNotificationWebhookMappingRequestToJSONTyped( + value?: PatchedNotificationWebhookMappingRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + expression: value["expression"], + }; +} diff --git a/packages/client-ts/src/models/PatchedOAuth2ProviderRequest.ts b/packages/client-ts/src/models/PatchedOAuth2ProviderRequest.ts new file mode 100644 index 0000000000..38adc25f30 --- /dev/null +++ b/packages/client-ts/src/models/PatchedOAuth2ProviderRequest.ts @@ -0,0 +1,289 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { ClientTypeEnum } from "./ClientTypeEnum"; +import { ClientTypeEnumFromJSON, ClientTypeEnumToJSON } from "./ClientTypeEnum"; +import type { GrantTypesEnum } from "./GrantTypesEnum"; +import { GrantTypesEnumFromJSON, GrantTypesEnumToJSON } from "./GrantTypesEnum"; +import type { IssuerModeEnum } from "./IssuerModeEnum"; +import { IssuerModeEnumFromJSON, IssuerModeEnumToJSON } from "./IssuerModeEnum"; +import type { OAuth2ProviderLogoutMethodEnum } from "./OAuth2ProviderLogoutMethodEnum"; +import { + OAuth2ProviderLogoutMethodEnumFromJSON, + OAuth2ProviderLogoutMethodEnumToJSON, +} from "./OAuth2ProviderLogoutMethodEnum"; +import type { RedirectURIRequest } from "./RedirectURIRequest"; +import { RedirectURIRequestFromJSON, RedirectURIRequestToJSON } from "./RedirectURIRequest"; +import type { SubModeEnum } from "./SubModeEnum"; +import { SubModeEnumFromJSON, SubModeEnumToJSON } from "./SubModeEnum"; + +/** + * OAuth2Provider Serializer + * @export + * @interface PatchedOAuth2ProviderRequest + */ +export interface PatchedOAuth2ProviderRequest { + /** + * + * @type {string} + * @memberof PatchedOAuth2ProviderRequest + */ + name?: string; + /** + * Flow used for authentication when the associated application is accessed by an un-authenticated user. + * @type {string} + * @memberof PatchedOAuth2ProviderRequest + */ + authenticationFlow?: string | null; + /** + * Flow used when authorizing this provider. + * @type {string} + * @memberof PatchedOAuth2ProviderRequest + */ + authorizationFlow?: string; + /** + * Flow used ending the session from a provider. + * @type {string} + * @memberof PatchedOAuth2ProviderRequest + */ + invalidationFlow?: string; + /** + * + * @type {Array} + * @memberof PatchedOAuth2ProviderRequest + */ + propertyMappings?: Array; + /** + * Confidential clients are capable of maintaining the confidentiality of their credentials. Public clients are incapable + * @type {ClientTypeEnum} + * @memberof PatchedOAuth2ProviderRequest + */ + clientType?: ClientTypeEnum; + /** + * + * @type {Array} + * @memberof PatchedOAuth2ProviderRequest + */ + grantTypes?: Array; + /** + * + * @type {string} + * @memberof PatchedOAuth2ProviderRequest + */ + clientId?: string; + /** + * + * @type {string} + * @memberof PatchedOAuth2ProviderRequest + */ + clientSecret?: string; + /** + * Access codes not valid on or after current time + this value (Format: hours=1;minutes=2;seconds=3). + * @type {string} + * @memberof PatchedOAuth2ProviderRequest + */ + accessCodeValidity?: string; + /** + * Tokens not valid on or after current time + this value (Format: hours=1;minutes=2;seconds=3). + * @type {string} + * @memberof PatchedOAuth2ProviderRequest + */ + accessTokenValidity?: string; + /** + * Tokens not valid on or after current time + this value (Format: hours=1;minutes=2;seconds=3). + * @type {string} + * @memberof PatchedOAuth2ProviderRequest + */ + refreshTokenValidity?: string; + /** + * When refreshing a token, if the refresh token is valid for less than this duration, it will be renewed. When set to seconds=0, token will always be renewed. (Format: hours=1;minutes=2;seconds=3). + * @type {string} + * @memberof PatchedOAuth2ProviderRequest + */ + refreshTokenThreshold?: string; + /** + * Include User claims from scopes in the id_token, for applications that don't access the userinfo endpoint. + * @type {boolean} + * @memberof PatchedOAuth2ProviderRequest + */ + includeClaimsInIdToken?: boolean; + /** + * Key used to sign the tokens. + * @type {string} + * @memberof PatchedOAuth2ProviderRequest + */ + signingKey?: string | null; + /** + * Key used to encrypt the tokens. When set, tokens will be encrypted and returned as JWEs. + * @type {string} + * @memberof PatchedOAuth2ProviderRequest + */ + encryptionKey?: string | null; + /** + * + * @type {Array} + * @memberof PatchedOAuth2ProviderRequest + */ + redirectUris?: Array; + /** + * + * @type {string} + * @memberof PatchedOAuth2ProviderRequest + */ + logoutUri?: string; + /** + * Backchannel logs out with server to server calls. Frontchannel uses iframes in your browser + * @type {OAuth2ProviderLogoutMethodEnum} + * @memberof PatchedOAuth2ProviderRequest + */ + logoutMethod?: OAuth2ProviderLogoutMethodEnum; + /** + * Configure what data should be used as unique User Identifier. For most cases, the default should be fine. + * @type {SubModeEnum} + * @memberof PatchedOAuth2ProviderRequest + */ + subMode?: SubModeEnum; + /** + * Configure how the issuer field of the ID Token should be filled. + * @type {IssuerModeEnum} + * @memberof PatchedOAuth2ProviderRequest + */ + issuerMode?: IssuerModeEnum; + /** + * + * @type {Array} + * @memberof PatchedOAuth2ProviderRequest + */ + jwtFederationSources?: Array; + /** + * + * @type {Array} + * @memberof PatchedOAuth2ProviderRequest + */ + jwtFederationProviders?: Array; +} + +/** + * Check if a given object implements the PatchedOAuth2ProviderRequest interface. + */ +export function instanceOfPatchedOAuth2ProviderRequest( + value: object, +): value is PatchedOAuth2ProviderRequest { + return true; +} + +export function PatchedOAuth2ProviderRequestFromJSON(json: any): PatchedOAuth2ProviderRequest { + return PatchedOAuth2ProviderRequestFromJSONTyped(json, false); +} + +export function PatchedOAuth2ProviderRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedOAuth2ProviderRequest { + if (json == null) { + return json; + } + return { + name: json["name"] == null ? undefined : json["name"], + authenticationFlow: + json["authentication_flow"] == null ? undefined : json["authentication_flow"], + authorizationFlow: + json["authorization_flow"] == null ? undefined : json["authorization_flow"], + invalidationFlow: json["invalidation_flow"] == null ? undefined : json["invalidation_flow"], + propertyMappings: json["property_mappings"] == null ? undefined : json["property_mappings"], + clientType: + json["client_type"] == null ? undefined : ClientTypeEnumFromJSON(json["client_type"]), + grantTypes: + json["grant_types"] == null + ? undefined + : (json["grant_types"] as Array).map(GrantTypesEnumFromJSON), + clientId: json["client_id"] == null ? undefined : json["client_id"], + clientSecret: json["client_secret"] == null ? undefined : json["client_secret"], + accessCodeValidity: + json["access_code_validity"] == null ? undefined : json["access_code_validity"], + accessTokenValidity: + json["access_token_validity"] == null ? undefined : json["access_token_validity"], + refreshTokenValidity: + json["refresh_token_validity"] == null ? undefined : json["refresh_token_validity"], + refreshTokenThreshold: + json["refresh_token_threshold"] == null ? undefined : json["refresh_token_threshold"], + includeClaimsInIdToken: + json["include_claims_in_id_token"] == null + ? undefined + : json["include_claims_in_id_token"], + signingKey: json["signing_key"] == null ? undefined : json["signing_key"], + encryptionKey: json["encryption_key"] == null ? undefined : json["encryption_key"], + redirectUris: + json["redirect_uris"] == null + ? undefined + : (json["redirect_uris"] as Array).map(RedirectURIRequestFromJSON), + logoutUri: json["logout_uri"] == null ? undefined : json["logout_uri"], + logoutMethod: + json["logout_method"] == null + ? undefined + : OAuth2ProviderLogoutMethodEnumFromJSON(json["logout_method"]), + subMode: json["sub_mode"] == null ? undefined : SubModeEnumFromJSON(json["sub_mode"]), + issuerMode: + json["issuer_mode"] == null ? undefined : IssuerModeEnumFromJSON(json["issuer_mode"]), + jwtFederationSources: + json["jwt_federation_sources"] == null ? undefined : json["jwt_federation_sources"], + jwtFederationProviders: + json["jwt_federation_providers"] == null ? undefined : json["jwt_federation_providers"], + }; +} + +export function PatchedOAuth2ProviderRequestToJSON(json: any): PatchedOAuth2ProviderRequest { + return PatchedOAuth2ProviderRequestToJSONTyped(json, false); +} + +export function PatchedOAuth2ProviderRequestToJSONTyped( + value?: PatchedOAuth2ProviderRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + authentication_flow: value["authenticationFlow"], + authorization_flow: value["authorizationFlow"], + invalidation_flow: value["invalidationFlow"], + property_mappings: value["propertyMappings"], + client_type: ClientTypeEnumToJSON(value["clientType"]), + grant_types: + value["grantTypes"] == null + ? undefined + : (value["grantTypes"] as Array).map(GrantTypesEnumToJSON), + client_id: value["clientId"], + client_secret: value["clientSecret"], + access_code_validity: value["accessCodeValidity"], + access_token_validity: value["accessTokenValidity"], + refresh_token_validity: value["refreshTokenValidity"], + refresh_token_threshold: value["refreshTokenThreshold"], + include_claims_in_id_token: value["includeClaimsInIdToken"], + signing_key: value["signingKey"], + encryption_key: value["encryptionKey"], + redirect_uris: + value["redirectUris"] == null + ? undefined + : (value["redirectUris"] as Array).map(RedirectURIRequestToJSON), + logout_uri: value["logoutUri"], + logout_method: OAuth2ProviderLogoutMethodEnumToJSON(value["logoutMethod"]), + sub_mode: SubModeEnumToJSON(value["subMode"]), + issuer_mode: IssuerModeEnumToJSON(value["issuerMode"]), + jwt_federation_sources: value["jwtFederationSources"], + jwt_federation_providers: value["jwtFederationProviders"], + }; +} diff --git a/packages/client-ts/src/models/PatchedOAuthSourcePropertyMappingRequest.ts b/packages/client-ts/src/models/PatchedOAuthSourcePropertyMappingRequest.ts new file mode 100644 index 0000000000..326144c11a --- /dev/null +++ b/packages/client-ts/src/models/PatchedOAuthSourcePropertyMappingRequest.ts @@ -0,0 +1,89 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * OAuthSourcePropertyMapping Serializer + * @export + * @interface PatchedOAuthSourcePropertyMappingRequest + */ +export interface PatchedOAuthSourcePropertyMappingRequest { + /** + * Objects that are managed by authentik. These objects are created and updated automatically. This flag only indicates that an object can be overwritten by migrations. You can still modify the objects via the API, but expect changes to be overwritten in a later update. + * @type {string} + * @memberof PatchedOAuthSourcePropertyMappingRequest + */ + managed?: string | null; + /** + * + * @type {string} + * @memberof PatchedOAuthSourcePropertyMappingRequest + */ + name?: string; + /** + * + * @type {string} + * @memberof PatchedOAuthSourcePropertyMappingRequest + */ + expression?: string; +} + +/** + * Check if a given object implements the PatchedOAuthSourcePropertyMappingRequest interface. + */ +export function instanceOfPatchedOAuthSourcePropertyMappingRequest( + value: object, +): value is PatchedOAuthSourcePropertyMappingRequest { + return true; +} + +export function PatchedOAuthSourcePropertyMappingRequestFromJSON( + json: any, +): PatchedOAuthSourcePropertyMappingRequest { + return PatchedOAuthSourcePropertyMappingRequestFromJSONTyped(json, false); +} + +export function PatchedOAuthSourcePropertyMappingRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedOAuthSourcePropertyMappingRequest { + if (json == null) { + return json; + } + return { + managed: json["managed"] == null ? undefined : json["managed"], + name: json["name"] == null ? undefined : json["name"], + expression: json["expression"] == null ? undefined : json["expression"], + }; +} + +export function PatchedOAuthSourcePropertyMappingRequestToJSON( + json: any, +): PatchedOAuthSourcePropertyMappingRequest { + return PatchedOAuthSourcePropertyMappingRequestToJSONTyped(json, false); +} + +export function PatchedOAuthSourcePropertyMappingRequestToJSONTyped( + value?: PatchedOAuthSourcePropertyMappingRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + managed: value["managed"], + name: value["name"], + expression: value["expression"], + }; +} diff --git a/packages/client-ts/src/models/PatchedOAuthSourceRequest.ts b/packages/client-ts/src/models/PatchedOAuthSourceRequest.ts new file mode 100644 index 0000000000..dbb629772f --- /dev/null +++ b/packages/client-ts/src/models/PatchedOAuthSourceRequest.ts @@ -0,0 +1,310 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { AuthorizationCodeAuthMethodEnum } from "./AuthorizationCodeAuthMethodEnum"; +import { + AuthorizationCodeAuthMethodEnumFromJSON, + AuthorizationCodeAuthMethodEnumToJSON, +} from "./AuthorizationCodeAuthMethodEnum"; +import type { GroupMatchingModeEnum } from "./GroupMatchingModeEnum"; +import { + GroupMatchingModeEnumFromJSON, + GroupMatchingModeEnumToJSON, +} from "./GroupMatchingModeEnum"; +import type { PKCEMethodEnum } from "./PKCEMethodEnum"; +import { PKCEMethodEnumFromJSON, PKCEMethodEnumToJSON } from "./PKCEMethodEnum"; +import type { PolicyEngineMode } from "./PolicyEngineMode"; +import { PolicyEngineModeFromJSON, PolicyEngineModeToJSON } from "./PolicyEngineMode"; +import type { ProviderTypeEnum } from "./ProviderTypeEnum"; +import { ProviderTypeEnumFromJSON, ProviderTypeEnumToJSON } from "./ProviderTypeEnum"; +import type { UserMatchingModeEnum } from "./UserMatchingModeEnum"; +import { UserMatchingModeEnumFromJSON, UserMatchingModeEnumToJSON } from "./UserMatchingModeEnum"; + +/** + * OAuth Source Serializer + * @export + * @interface PatchedOAuthSourceRequest + */ +export interface PatchedOAuthSourceRequest { + /** + * Source's display Name. + * @type {string} + * @memberof PatchedOAuthSourceRequest + */ + name?: string; + /** + * Internal source name, used in URLs. + * @type {string} + * @memberof PatchedOAuthSourceRequest + */ + slug?: string; + /** + * + * @type {boolean} + * @memberof PatchedOAuthSourceRequest + */ + enabled?: boolean; + /** + * When enabled, this source will be displayed as a prominent button on the login page, instead of a small icon. + * @type {boolean} + * @memberof PatchedOAuthSourceRequest + */ + promoted?: boolean; + /** + * Flow to use when authenticating existing users. + * @type {string} + * @memberof PatchedOAuthSourceRequest + */ + authenticationFlow?: string | null; + /** + * Flow to use when enrolling new users. + * @type {string} + * @memberof PatchedOAuthSourceRequest + */ + enrollmentFlow?: string | null; + /** + * + * @type {Array} + * @memberof PatchedOAuthSourceRequest + */ + userPropertyMappings?: Array; + /** + * + * @type {Array} + * @memberof PatchedOAuthSourceRequest + */ + groupPropertyMappings?: Array; + /** + * + * @type {PolicyEngineMode} + * @memberof PatchedOAuthSourceRequest + */ + policyEngineMode?: PolicyEngineMode; + /** + * How the source determines if an existing user should be authenticated or a new user enrolled. + * @type {UserMatchingModeEnum} + * @memberof PatchedOAuthSourceRequest + */ + userMatchingMode?: UserMatchingModeEnum; + /** + * + * @type {string} + * @memberof PatchedOAuthSourceRequest + */ + userPathTemplate?: string; + /** + * + * @type {string} + * @memberof PatchedOAuthSourceRequest + */ + icon?: string; + /** + * How the source determines if an existing group should be used or a new group created. + * @type {GroupMatchingModeEnum} + * @memberof PatchedOAuthSourceRequest + */ + groupMatchingMode?: GroupMatchingModeEnum; + /** + * + * @type {ProviderTypeEnum} + * @memberof PatchedOAuthSourceRequest + */ + providerType?: ProviderTypeEnum; + /** + * URL used to request the initial token. This URL is only required for OAuth 1. + * @type {string} + * @memberof PatchedOAuthSourceRequest + */ + requestTokenUrl?: string | null; + /** + * URL the user is redirect to to conest the flow. + * @type {string} + * @memberof PatchedOAuthSourceRequest + */ + authorizationUrl?: string | null; + /** + * URL used by authentik to retrieve tokens. + * @type {string} + * @memberof PatchedOAuthSourceRequest + */ + accessTokenUrl?: string | null; + /** + * URL used by authentik to get user information. + * @type {string} + * @memberof PatchedOAuthSourceRequest + */ + profileUrl?: string | null; + /** + * + * @type {PKCEMethodEnum} + * @memberof PatchedOAuthSourceRequest + */ + pkce?: PKCEMethodEnum; + /** + * + * @type {string} + * @memberof PatchedOAuthSourceRequest + */ + consumerKey?: string; + /** + * + * @type {string} + * @memberof PatchedOAuthSourceRequest + */ + consumerSecret?: string; + /** + * + * @type {string} + * @memberof PatchedOAuthSourceRequest + */ + additionalScopes?: string; + /** + * + * @type {string} + * @memberof PatchedOAuthSourceRequest + */ + oidcWellKnownUrl?: string; + /** + * + * @type {string} + * @memberof PatchedOAuthSourceRequest + */ + oidcJwksUrl?: string; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PatchedOAuthSourceRequest + */ + oidcJwks?: { [key: string]: any }; + /** + * How to perform authentication during an authorization_code token request flow + * @type {AuthorizationCodeAuthMethodEnum} + * @memberof PatchedOAuthSourceRequest + */ + authorizationCodeAuthMethod?: AuthorizationCodeAuthMethodEnum; +} + +/** + * Check if a given object implements the PatchedOAuthSourceRequest interface. + */ +export function instanceOfPatchedOAuthSourceRequest( + value: object, +): value is PatchedOAuthSourceRequest { + return true; +} + +export function PatchedOAuthSourceRequestFromJSON(json: any): PatchedOAuthSourceRequest { + return PatchedOAuthSourceRequestFromJSONTyped(json, false); +} + +export function PatchedOAuthSourceRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedOAuthSourceRequest { + if (json == null) { + return json; + } + return { + name: json["name"] == null ? undefined : json["name"], + slug: json["slug"] == null ? undefined : json["slug"], + enabled: json["enabled"] == null ? undefined : json["enabled"], + promoted: json["promoted"] == null ? undefined : json["promoted"], + authenticationFlow: + json["authentication_flow"] == null ? undefined : json["authentication_flow"], + enrollmentFlow: json["enrollment_flow"] == null ? undefined : json["enrollment_flow"], + userPropertyMappings: + json["user_property_mappings"] == null ? undefined : json["user_property_mappings"], + groupPropertyMappings: + json["group_property_mappings"] == null ? undefined : json["group_property_mappings"], + policyEngineMode: + json["policy_engine_mode"] == null + ? undefined + : PolicyEngineModeFromJSON(json["policy_engine_mode"]), + userMatchingMode: + json["user_matching_mode"] == null + ? undefined + : UserMatchingModeEnumFromJSON(json["user_matching_mode"]), + userPathTemplate: + json["user_path_template"] == null ? undefined : json["user_path_template"], + icon: json["icon"] == null ? undefined : json["icon"], + groupMatchingMode: + json["group_matching_mode"] == null + ? undefined + : GroupMatchingModeEnumFromJSON(json["group_matching_mode"]), + providerType: + json["provider_type"] == null + ? undefined + : ProviderTypeEnumFromJSON(json["provider_type"]), + requestTokenUrl: json["request_token_url"] == null ? undefined : json["request_token_url"], + authorizationUrl: json["authorization_url"] == null ? undefined : json["authorization_url"], + accessTokenUrl: json["access_token_url"] == null ? undefined : json["access_token_url"], + profileUrl: json["profile_url"] == null ? undefined : json["profile_url"], + pkce: json["pkce"] == null ? undefined : PKCEMethodEnumFromJSON(json["pkce"]), + consumerKey: json["consumer_key"] == null ? undefined : json["consumer_key"], + consumerSecret: json["consumer_secret"] == null ? undefined : json["consumer_secret"], + additionalScopes: json["additional_scopes"] == null ? undefined : json["additional_scopes"], + oidcWellKnownUrl: + json["oidc_well_known_url"] == null ? undefined : json["oidc_well_known_url"], + oidcJwksUrl: json["oidc_jwks_url"] == null ? undefined : json["oidc_jwks_url"], + oidcJwks: json["oidc_jwks"] == null ? undefined : json["oidc_jwks"], + authorizationCodeAuthMethod: + json["authorization_code_auth_method"] == null + ? undefined + : AuthorizationCodeAuthMethodEnumFromJSON(json["authorization_code_auth_method"]), + }; +} + +export function PatchedOAuthSourceRequestToJSON(json: any): PatchedOAuthSourceRequest { + return PatchedOAuthSourceRequestToJSONTyped(json, false); +} + +export function PatchedOAuthSourceRequestToJSONTyped( + value?: PatchedOAuthSourceRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + slug: value["slug"], + enabled: value["enabled"], + promoted: value["promoted"], + authentication_flow: value["authenticationFlow"], + enrollment_flow: value["enrollmentFlow"], + user_property_mappings: value["userPropertyMappings"], + group_property_mappings: value["groupPropertyMappings"], + policy_engine_mode: PolicyEngineModeToJSON(value["policyEngineMode"]), + user_matching_mode: UserMatchingModeEnumToJSON(value["userMatchingMode"]), + user_path_template: value["userPathTemplate"], + icon: value["icon"], + group_matching_mode: GroupMatchingModeEnumToJSON(value["groupMatchingMode"]), + provider_type: ProviderTypeEnumToJSON(value["providerType"]), + request_token_url: value["requestTokenUrl"], + authorization_url: value["authorizationUrl"], + access_token_url: value["accessTokenUrl"], + profile_url: value["profileUrl"], + pkce: PKCEMethodEnumToJSON(value["pkce"]), + consumer_key: value["consumerKey"], + consumer_secret: value["consumerSecret"], + additional_scopes: value["additionalScopes"], + oidc_well_known_url: value["oidcWellKnownUrl"], + oidc_jwks_url: value["oidcJwksUrl"], + oidc_jwks: value["oidcJwks"], + authorization_code_auth_method: AuthorizationCodeAuthMethodEnumToJSON( + value["authorizationCodeAuthMethod"], + ), + }; +} diff --git a/packages/client-ts/src/models/PatchedOutpostRequest.ts b/packages/client-ts/src/models/PatchedOutpostRequest.ts new file mode 100644 index 0000000000..a9f5d7a8fd --- /dev/null +++ b/packages/client-ts/src/models/PatchedOutpostRequest.ts @@ -0,0 +1,111 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { OutpostTypeEnum } from "./OutpostTypeEnum"; +import { OutpostTypeEnumFromJSON, OutpostTypeEnumToJSON } from "./OutpostTypeEnum"; + +/** + * Outpost Serializer + * @export + * @interface PatchedOutpostRequest + */ +export interface PatchedOutpostRequest { + /** + * + * @type {string} + * @memberof PatchedOutpostRequest + */ + name?: string; + /** + * + * @type {OutpostTypeEnum} + * @memberof PatchedOutpostRequest + */ + type?: OutpostTypeEnum; + /** + * + * @type {Array} + * @memberof PatchedOutpostRequest + */ + providers?: Array; + /** + * Select Service-Connection authentik should use to manage this outpost. Leave empty if authentik should not handle the deployment. + * @type {string} + * @memberof PatchedOutpostRequest + */ + serviceConnection?: string | null; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PatchedOutpostRequest + */ + config?: { [key: string]: any }; + /** + * Objects that are managed by authentik. These objects are created and updated automatically. This flag only indicates that an object can be overwritten by migrations. You can still modify the objects via the API, but expect changes to be overwritten in a later update. + * @type {string} + * @memberof PatchedOutpostRequest + */ + managed?: string | null; +} + +/** + * Check if a given object implements the PatchedOutpostRequest interface. + */ +export function instanceOfPatchedOutpostRequest(value: object): value is PatchedOutpostRequest { + return true; +} + +export function PatchedOutpostRequestFromJSON(json: any): PatchedOutpostRequest { + return PatchedOutpostRequestFromJSONTyped(json, false); +} + +export function PatchedOutpostRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedOutpostRequest { + if (json == null) { + return json; + } + return { + name: json["name"] == null ? undefined : json["name"], + type: json["type"] == null ? undefined : OutpostTypeEnumFromJSON(json["type"]), + providers: json["providers"] == null ? undefined : json["providers"], + serviceConnection: + json["service_connection"] == null ? undefined : json["service_connection"], + config: json["config"] == null ? undefined : json["config"], + managed: json["managed"] == null ? undefined : json["managed"], + }; +} + +export function PatchedOutpostRequestToJSON(json: any): PatchedOutpostRequest { + return PatchedOutpostRequestToJSONTyped(json, false); +} + +export function PatchedOutpostRequestToJSONTyped( + value?: PatchedOutpostRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + type: OutpostTypeEnumToJSON(value["type"]), + providers: value["providers"], + service_connection: value["serviceConnection"], + config: value["config"], + managed: value["managed"], + }; +} diff --git a/packages/client-ts/src/models/PatchedPasswordExpiryPolicyRequest.ts b/packages/client-ts/src/models/PatchedPasswordExpiryPolicyRequest.ts new file mode 100644 index 0000000000..2453df4dfa --- /dev/null +++ b/packages/client-ts/src/models/PatchedPasswordExpiryPolicyRequest.ts @@ -0,0 +1,97 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Password Expiry Policy Serializer + * @export + * @interface PatchedPasswordExpiryPolicyRequest + */ +export interface PatchedPasswordExpiryPolicyRequest { + /** + * + * @type {string} + * @memberof PatchedPasswordExpiryPolicyRequest + */ + name?: string; + /** + * When this option is enabled, all executions of this policy will be logged. By default, only execution errors are logged. + * @type {boolean} + * @memberof PatchedPasswordExpiryPolicyRequest + */ + executionLogging?: boolean; + /** + * + * @type {number} + * @memberof PatchedPasswordExpiryPolicyRequest + */ + days?: number; + /** + * + * @type {boolean} + * @memberof PatchedPasswordExpiryPolicyRequest + */ + denyOnly?: boolean; +} + +/** + * Check if a given object implements the PatchedPasswordExpiryPolicyRequest interface. + */ +export function instanceOfPatchedPasswordExpiryPolicyRequest( + value: object, +): value is PatchedPasswordExpiryPolicyRequest { + return true; +} + +export function PatchedPasswordExpiryPolicyRequestFromJSON( + json: any, +): PatchedPasswordExpiryPolicyRequest { + return PatchedPasswordExpiryPolicyRequestFromJSONTyped(json, false); +} + +export function PatchedPasswordExpiryPolicyRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedPasswordExpiryPolicyRequest { + if (json == null) { + return json; + } + return { + name: json["name"] == null ? undefined : json["name"], + executionLogging: json["execution_logging"] == null ? undefined : json["execution_logging"], + days: json["days"] == null ? undefined : json["days"], + denyOnly: json["deny_only"] == null ? undefined : json["deny_only"], + }; +} + +export function PatchedPasswordExpiryPolicyRequestToJSON( + json: any, +): PatchedPasswordExpiryPolicyRequest { + return PatchedPasswordExpiryPolicyRequestToJSONTyped(json, false); +} + +export function PatchedPasswordExpiryPolicyRequestToJSONTyped( + value?: PatchedPasswordExpiryPolicyRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + execution_logging: value["executionLogging"], + days: value["days"], + deny_only: value["denyOnly"], + }; +} diff --git a/packages/client-ts/src/models/PatchedPasswordPolicyRequest.ts b/packages/client-ts/src/models/PatchedPasswordPolicyRequest.ts new file mode 100644 index 0000000000..41562252e8 --- /dev/null +++ b/packages/client-ts/src/models/PatchedPasswordPolicyRequest.ts @@ -0,0 +1,185 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Password Policy Serializer + * @export + * @interface PatchedPasswordPolicyRequest + */ +export interface PatchedPasswordPolicyRequest { + /** + * + * @type {string} + * @memberof PatchedPasswordPolicyRequest + */ + name?: string; + /** + * When this option is enabled, all executions of this policy will be logged. By default, only execution errors are logged. + * @type {boolean} + * @memberof PatchedPasswordPolicyRequest + */ + executionLogging?: boolean; + /** + * Field key to check, field keys defined in Prompt stages are available. + * @type {string} + * @memberof PatchedPasswordPolicyRequest + */ + passwordField?: string; + /** + * + * @type {number} + * @memberof PatchedPasswordPolicyRequest + */ + amountDigits?: number; + /** + * + * @type {number} + * @memberof PatchedPasswordPolicyRequest + */ + amountUppercase?: number; + /** + * + * @type {number} + * @memberof PatchedPasswordPolicyRequest + */ + amountLowercase?: number; + /** + * + * @type {number} + * @memberof PatchedPasswordPolicyRequest + */ + amountSymbols?: number; + /** + * + * @type {number} + * @memberof PatchedPasswordPolicyRequest + */ + lengthMin?: number; + /** + * + * @type {string} + * @memberof PatchedPasswordPolicyRequest + */ + symbolCharset?: string; + /** + * + * @type {string} + * @memberof PatchedPasswordPolicyRequest + */ + errorMessage?: string; + /** + * + * @type {boolean} + * @memberof PatchedPasswordPolicyRequest + */ + checkStaticRules?: boolean; + /** + * + * @type {boolean} + * @memberof PatchedPasswordPolicyRequest + */ + checkHaveIBeenPwned?: boolean; + /** + * + * @type {boolean} + * @memberof PatchedPasswordPolicyRequest + */ + checkZxcvbn?: boolean; + /** + * How many times the password hash is allowed to be on haveibeenpwned + * @type {number} + * @memberof PatchedPasswordPolicyRequest + */ + hibpAllowedCount?: number; + /** + * If the zxcvbn score is equal or less than this value, the policy will fail. + * @type {number} + * @memberof PatchedPasswordPolicyRequest + */ + zxcvbnScoreThreshold?: number; +} + +/** + * Check if a given object implements the PatchedPasswordPolicyRequest interface. + */ +export function instanceOfPatchedPasswordPolicyRequest( + value: object, +): value is PatchedPasswordPolicyRequest { + return true; +} + +export function PatchedPasswordPolicyRequestFromJSON(json: any): PatchedPasswordPolicyRequest { + return PatchedPasswordPolicyRequestFromJSONTyped(json, false); +} + +export function PatchedPasswordPolicyRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedPasswordPolicyRequest { + if (json == null) { + return json; + } + return { + name: json["name"] == null ? undefined : json["name"], + executionLogging: json["execution_logging"] == null ? undefined : json["execution_logging"], + passwordField: json["password_field"] == null ? undefined : json["password_field"], + amountDigits: json["amount_digits"] == null ? undefined : json["amount_digits"], + amountUppercase: json["amount_uppercase"] == null ? undefined : json["amount_uppercase"], + amountLowercase: json["amount_lowercase"] == null ? undefined : json["amount_lowercase"], + amountSymbols: json["amount_symbols"] == null ? undefined : json["amount_symbols"], + lengthMin: json["length_min"] == null ? undefined : json["length_min"], + symbolCharset: json["symbol_charset"] == null ? undefined : json["symbol_charset"], + errorMessage: json["error_message"] == null ? undefined : json["error_message"], + checkStaticRules: + json["check_static_rules"] == null ? undefined : json["check_static_rules"], + checkHaveIBeenPwned: + json["check_have_i_been_pwned"] == null ? undefined : json["check_have_i_been_pwned"], + checkZxcvbn: json["check_zxcvbn"] == null ? undefined : json["check_zxcvbn"], + hibpAllowedCount: + json["hibp_allowed_count"] == null ? undefined : json["hibp_allowed_count"], + zxcvbnScoreThreshold: + json["zxcvbn_score_threshold"] == null ? undefined : json["zxcvbn_score_threshold"], + }; +} + +export function PatchedPasswordPolicyRequestToJSON(json: any): PatchedPasswordPolicyRequest { + return PatchedPasswordPolicyRequestToJSONTyped(json, false); +} + +export function PatchedPasswordPolicyRequestToJSONTyped( + value?: PatchedPasswordPolicyRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + execution_logging: value["executionLogging"], + password_field: value["passwordField"], + amount_digits: value["amountDigits"], + amount_uppercase: value["amountUppercase"], + amount_lowercase: value["amountLowercase"], + amount_symbols: value["amountSymbols"], + length_min: value["lengthMin"], + symbol_charset: value["symbolCharset"], + error_message: value["errorMessage"], + check_static_rules: value["checkStaticRules"], + check_have_i_been_pwned: value["checkHaveIBeenPwned"], + check_zxcvbn: value["checkZxcvbn"], + hibp_allowed_count: value["hibpAllowedCount"], + zxcvbn_score_threshold: value["zxcvbnScoreThreshold"], + }; +} diff --git a/packages/client-ts/src/models/PatchedPasswordStageRequest.ts b/packages/client-ts/src/models/PatchedPasswordStageRequest.ts new file mode 100644 index 0000000000..48a9f4fd67 --- /dev/null +++ b/packages/client-ts/src/models/PatchedPasswordStageRequest.ts @@ -0,0 +1,114 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { BackendsEnum } from "./BackendsEnum"; +import { BackendsEnumFromJSON, BackendsEnumToJSON } from "./BackendsEnum"; + +/** + * PasswordStage Serializer + * @export + * @interface PatchedPasswordStageRequest + */ +export interface PatchedPasswordStageRequest { + /** + * + * @type {string} + * @memberof PatchedPasswordStageRequest + */ + name?: string; + /** + * Selection of backends to test the password against. + * @type {Array} + * @memberof PatchedPasswordStageRequest + */ + backends?: Array; + /** + * Flow used by an authenticated user to configure this Stage. If empty, user will not be able to configure this stage. + * @type {string} + * @memberof PatchedPasswordStageRequest + */ + configureFlow?: string | null; + /** + * How many attempts a user has before the flow is canceled. To lock the user out, use a reputation policy and a user_write stage. + * @type {number} + * @memberof PatchedPasswordStageRequest + */ + failedAttemptsBeforeCancel?: number; + /** + * When enabled, provides a 'show password' button with the password input field. + * @type {boolean} + * @memberof PatchedPasswordStageRequest + */ + allowShowPassword?: boolean; +} + +/** + * Check if a given object implements the PatchedPasswordStageRequest interface. + */ +export function instanceOfPatchedPasswordStageRequest( + value: object, +): value is PatchedPasswordStageRequest { + return true; +} + +export function PatchedPasswordStageRequestFromJSON(json: any): PatchedPasswordStageRequest { + return PatchedPasswordStageRequestFromJSONTyped(json, false); +} + +export function PatchedPasswordStageRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedPasswordStageRequest { + if (json == null) { + return json; + } + return { + name: json["name"] == null ? undefined : json["name"], + backends: + json["backends"] == null + ? undefined + : (json["backends"] as Array).map(BackendsEnumFromJSON), + configureFlow: json["configure_flow"] == null ? undefined : json["configure_flow"], + failedAttemptsBeforeCancel: + json["failed_attempts_before_cancel"] == null + ? undefined + : json["failed_attempts_before_cancel"], + allowShowPassword: + json["allow_show_password"] == null ? undefined : json["allow_show_password"], + }; +} + +export function PatchedPasswordStageRequestToJSON(json: any): PatchedPasswordStageRequest { + return PatchedPasswordStageRequestToJSONTyped(json, false); +} + +export function PatchedPasswordStageRequestToJSONTyped( + value?: PatchedPasswordStageRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + backends: + value["backends"] == null + ? undefined + : (value["backends"] as Array).map(BackendsEnumToJSON), + configure_flow: value["configureFlow"], + failed_attempts_before_cancel: value["failedAttemptsBeforeCancel"], + allow_show_password: value["allowShowPassword"], + }; +} diff --git a/packages/client-ts/src/models/PatchedPermissionAssignRequest.ts b/packages/client-ts/src/models/PatchedPermissionAssignRequest.ts new file mode 100644 index 0000000000..f8f543e39a --- /dev/null +++ b/packages/client-ts/src/models/PatchedPermissionAssignRequest.ts @@ -0,0 +1,88 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { ModelEnum } from "./ModelEnum"; +import { ModelEnumFromJSON, ModelEnumToJSON } from "./ModelEnum"; + +/** + * Request to assign a new permission + * @export + * @interface PatchedPermissionAssignRequest + */ +export interface PatchedPermissionAssignRequest { + /** + * + * @type {Array} + * @memberof PatchedPermissionAssignRequest + */ + permissions?: Array; + /** + * + * @type {ModelEnum} + * @memberof PatchedPermissionAssignRequest + */ + model?: ModelEnum; + /** + * + * @type {string} + * @memberof PatchedPermissionAssignRequest + */ + objectPk?: string; +} + +/** + * Check if a given object implements the PatchedPermissionAssignRequest interface. + */ +export function instanceOfPatchedPermissionAssignRequest( + value: object, +): value is PatchedPermissionAssignRequest { + return true; +} + +export function PatchedPermissionAssignRequestFromJSON(json: any): PatchedPermissionAssignRequest { + return PatchedPermissionAssignRequestFromJSONTyped(json, false); +} + +export function PatchedPermissionAssignRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedPermissionAssignRequest { + if (json == null) { + return json; + } + return { + permissions: json["permissions"] == null ? undefined : json["permissions"], + model: json["model"] == null ? undefined : ModelEnumFromJSON(json["model"]), + objectPk: json["object_pk"] == null ? undefined : json["object_pk"], + }; +} + +export function PatchedPermissionAssignRequestToJSON(json: any): PatchedPermissionAssignRequest { + return PatchedPermissionAssignRequestToJSONTyped(json, false); +} + +export function PatchedPermissionAssignRequestToJSONTyped( + value?: PatchedPermissionAssignRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + permissions: value["permissions"], + model: ModelEnumToJSON(value["model"]), + object_pk: value["objectPk"], + }; +} diff --git a/packages/client-ts/src/models/PatchedPlexSourcePropertyMappingRequest.ts b/packages/client-ts/src/models/PatchedPlexSourcePropertyMappingRequest.ts new file mode 100644 index 0000000000..fa0e10b9c2 --- /dev/null +++ b/packages/client-ts/src/models/PatchedPlexSourcePropertyMappingRequest.ts @@ -0,0 +1,89 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * PlexSourcePropertyMapping Serializer + * @export + * @interface PatchedPlexSourcePropertyMappingRequest + */ +export interface PatchedPlexSourcePropertyMappingRequest { + /** + * Objects that are managed by authentik. These objects are created and updated automatically. This flag only indicates that an object can be overwritten by migrations. You can still modify the objects via the API, but expect changes to be overwritten in a later update. + * @type {string} + * @memberof PatchedPlexSourcePropertyMappingRequest + */ + managed?: string | null; + /** + * + * @type {string} + * @memberof PatchedPlexSourcePropertyMappingRequest + */ + name?: string; + /** + * + * @type {string} + * @memberof PatchedPlexSourcePropertyMappingRequest + */ + expression?: string; +} + +/** + * Check if a given object implements the PatchedPlexSourcePropertyMappingRequest interface. + */ +export function instanceOfPatchedPlexSourcePropertyMappingRequest( + value: object, +): value is PatchedPlexSourcePropertyMappingRequest { + return true; +} + +export function PatchedPlexSourcePropertyMappingRequestFromJSON( + json: any, +): PatchedPlexSourcePropertyMappingRequest { + return PatchedPlexSourcePropertyMappingRequestFromJSONTyped(json, false); +} + +export function PatchedPlexSourcePropertyMappingRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedPlexSourcePropertyMappingRequest { + if (json == null) { + return json; + } + return { + managed: json["managed"] == null ? undefined : json["managed"], + name: json["name"] == null ? undefined : json["name"], + expression: json["expression"] == null ? undefined : json["expression"], + }; +} + +export function PatchedPlexSourcePropertyMappingRequestToJSON( + json: any, +): PatchedPlexSourcePropertyMappingRequest { + return PatchedPlexSourcePropertyMappingRequestToJSONTyped(json, false); +} + +export function PatchedPlexSourcePropertyMappingRequestToJSONTyped( + value?: PatchedPlexSourcePropertyMappingRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + managed: value["managed"], + name: value["name"], + expression: value["expression"], + }; +} diff --git a/packages/client-ts/src/models/PatchedPlexSourceRequest.ts b/packages/client-ts/src/models/PatchedPlexSourceRequest.ts new file mode 100644 index 0000000000..254bbd2fb4 --- /dev/null +++ b/packages/client-ts/src/models/PatchedPlexSourceRequest.ts @@ -0,0 +1,220 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { GroupMatchingModeEnum } from "./GroupMatchingModeEnum"; +import { + GroupMatchingModeEnumFromJSON, + GroupMatchingModeEnumToJSON, +} from "./GroupMatchingModeEnum"; +import type { PolicyEngineMode } from "./PolicyEngineMode"; +import { PolicyEngineModeFromJSON, PolicyEngineModeToJSON } from "./PolicyEngineMode"; +import type { UserMatchingModeEnum } from "./UserMatchingModeEnum"; +import { UserMatchingModeEnumFromJSON, UserMatchingModeEnumToJSON } from "./UserMatchingModeEnum"; + +/** + * Plex Source Serializer + * @export + * @interface PatchedPlexSourceRequest + */ +export interface PatchedPlexSourceRequest { + /** + * Source's display Name. + * @type {string} + * @memberof PatchedPlexSourceRequest + */ + name?: string; + /** + * Internal source name, used in URLs. + * @type {string} + * @memberof PatchedPlexSourceRequest + */ + slug?: string; + /** + * + * @type {boolean} + * @memberof PatchedPlexSourceRequest + */ + enabled?: boolean; + /** + * When enabled, this source will be displayed as a prominent button on the login page, instead of a small icon. + * @type {boolean} + * @memberof PatchedPlexSourceRequest + */ + promoted?: boolean; + /** + * Flow to use when authenticating existing users. + * @type {string} + * @memberof PatchedPlexSourceRequest + */ + authenticationFlow?: string | null; + /** + * Flow to use when enrolling new users. + * @type {string} + * @memberof PatchedPlexSourceRequest + */ + enrollmentFlow?: string | null; + /** + * + * @type {Array} + * @memberof PatchedPlexSourceRequest + */ + userPropertyMappings?: Array; + /** + * + * @type {Array} + * @memberof PatchedPlexSourceRequest + */ + groupPropertyMappings?: Array; + /** + * + * @type {PolicyEngineMode} + * @memberof PatchedPlexSourceRequest + */ + policyEngineMode?: PolicyEngineMode; + /** + * How the source determines if an existing user should be authenticated or a new user enrolled. + * @type {UserMatchingModeEnum} + * @memberof PatchedPlexSourceRequest + */ + userMatchingMode?: UserMatchingModeEnum; + /** + * + * @type {string} + * @memberof PatchedPlexSourceRequest + */ + userPathTemplate?: string; + /** + * + * @type {string} + * @memberof PatchedPlexSourceRequest + */ + icon?: string; + /** + * How the source determines if an existing group should be used or a new group created. + * @type {GroupMatchingModeEnum} + * @memberof PatchedPlexSourceRequest + */ + groupMatchingMode?: GroupMatchingModeEnum; + /** + * Client identifier used to talk to Plex. + * @type {string} + * @memberof PatchedPlexSourceRequest + */ + clientId?: string; + /** + * Which servers a user has to be a member of to be granted access. Empty list allows every server. + * @type {Array} + * @memberof PatchedPlexSourceRequest + */ + allowedServers?: Array; + /** + * Allow friends to authenticate, even if you don't share a server. + * @type {boolean} + * @memberof PatchedPlexSourceRequest + */ + allowFriends?: boolean; + /** + * Plex token used to check friends + * @type {string} + * @memberof PatchedPlexSourceRequest + */ + plexToken?: string; +} + +/** + * Check if a given object implements the PatchedPlexSourceRequest interface. + */ +export function instanceOfPatchedPlexSourceRequest( + value: object, +): value is PatchedPlexSourceRequest { + return true; +} + +export function PatchedPlexSourceRequestFromJSON(json: any): PatchedPlexSourceRequest { + return PatchedPlexSourceRequestFromJSONTyped(json, false); +} + +export function PatchedPlexSourceRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedPlexSourceRequest { + if (json == null) { + return json; + } + return { + name: json["name"] == null ? undefined : json["name"], + slug: json["slug"] == null ? undefined : json["slug"], + enabled: json["enabled"] == null ? undefined : json["enabled"], + promoted: json["promoted"] == null ? undefined : json["promoted"], + authenticationFlow: + json["authentication_flow"] == null ? undefined : json["authentication_flow"], + enrollmentFlow: json["enrollment_flow"] == null ? undefined : json["enrollment_flow"], + userPropertyMappings: + json["user_property_mappings"] == null ? undefined : json["user_property_mappings"], + groupPropertyMappings: + json["group_property_mappings"] == null ? undefined : json["group_property_mappings"], + policyEngineMode: + json["policy_engine_mode"] == null + ? undefined + : PolicyEngineModeFromJSON(json["policy_engine_mode"]), + userMatchingMode: + json["user_matching_mode"] == null + ? undefined + : UserMatchingModeEnumFromJSON(json["user_matching_mode"]), + userPathTemplate: + json["user_path_template"] == null ? undefined : json["user_path_template"], + icon: json["icon"] == null ? undefined : json["icon"], + groupMatchingMode: + json["group_matching_mode"] == null + ? undefined + : GroupMatchingModeEnumFromJSON(json["group_matching_mode"]), + clientId: json["client_id"] == null ? undefined : json["client_id"], + allowedServers: json["allowed_servers"] == null ? undefined : json["allowed_servers"], + allowFriends: json["allow_friends"] == null ? undefined : json["allow_friends"], + plexToken: json["plex_token"] == null ? undefined : json["plex_token"], + }; +} + +export function PatchedPlexSourceRequestToJSON(json: any): PatchedPlexSourceRequest { + return PatchedPlexSourceRequestToJSONTyped(json, false); +} + +export function PatchedPlexSourceRequestToJSONTyped( + value?: PatchedPlexSourceRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + slug: value["slug"], + enabled: value["enabled"], + promoted: value["promoted"], + authentication_flow: value["authenticationFlow"], + enrollment_flow: value["enrollmentFlow"], + user_property_mappings: value["userPropertyMappings"], + group_property_mappings: value["groupPropertyMappings"], + policy_engine_mode: PolicyEngineModeToJSON(value["policyEngineMode"]), + user_matching_mode: UserMatchingModeEnumToJSON(value["userMatchingMode"]), + user_path_template: value["userPathTemplate"], + icon: value["icon"], + group_matching_mode: GroupMatchingModeEnumToJSON(value["groupMatchingMode"]), + client_id: value["clientId"], + allowed_servers: value["allowedServers"], + allow_friends: value["allowFriends"], + plex_token: value["plexToken"], + }; +} diff --git a/packages/client-ts/src/models/PatchedPolicyBindingRequest.ts b/packages/client-ts/src/models/PatchedPolicyBindingRequest.ts new file mode 100644 index 0000000000..5322156ec8 --- /dev/null +++ b/packages/client-ts/src/models/PatchedPolicyBindingRequest.ts @@ -0,0 +1,133 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * PolicyBinding Serializer + * @export + * @interface PatchedPolicyBindingRequest + */ +export interface PatchedPolicyBindingRequest { + /** + * + * @type {string} + * @memberof PatchedPolicyBindingRequest + */ + policy?: string | null; + /** + * + * @type {string} + * @memberof PatchedPolicyBindingRequest + */ + group?: string | null; + /** + * + * @type {number} + * @memberof PatchedPolicyBindingRequest + */ + user?: number | null; + /** + * + * @type {string} + * @memberof PatchedPolicyBindingRequest + */ + target?: string; + /** + * Negates the outcome of the policy. Messages are unaffected. + * @type {boolean} + * @memberof PatchedPolicyBindingRequest + */ + negate?: boolean; + /** + * + * @type {boolean} + * @memberof PatchedPolicyBindingRequest + */ + enabled?: boolean; + /** + * + * @type {number} + * @memberof PatchedPolicyBindingRequest + */ + order?: number; + /** + * Timeout after which Policy execution is terminated. + * @type {number} + * @memberof PatchedPolicyBindingRequest + */ + timeout?: number; + /** + * Result if the Policy execution fails. + * @type {boolean} + * @memberof PatchedPolicyBindingRequest + */ + failureResult?: boolean; +} + +/** + * Check if a given object implements the PatchedPolicyBindingRequest interface. + */ +export function instanceOfPatchedPolicyBindingRequest( + value: object, +): value is PatchedPolicyBindingRequest { + return true; +} + +export function PatchedPolicyBindingRequestFromJSON(json: any): PatchedPolicyBindingRequest { + return PatchedPolicyBindingRequestFromJSONTyped(json, false); +} + +export function PatchedPolicyBindingRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedPolicyBindingRequest { + if (json == null) { + return json; + } + return { + policy: json["policy"] == null ? undefined : json["policy"], + group: json["group"] == null ? undefined : json["group"], + user: json["user"] == null ? undefined : json["user"], + target: json["target"] == null ? undefined : json["target"], + negate: json["negate"] == null ? undefined : json["negate"], + enabled: json["enabled"] == null ? undefined : json["enabled"], + order: json["order"] == null ? undefined : json["order"], + timeout: json["timeout"] == null ? undefined : json["timeout"], + failureResult: json["failure_result"] == null ? undefined : json["failure_result"], + }; +} + +export function PatchedPolicyBindingRequestToJSON(json: any): PatchedPolicyBindingRequest { + return PatchedPolicyBindingRequestToJSONTyped(json, false); +} + +export function PatchedPolicyBindingRequestToJSONTyped( + value?: PatchedPolicyBindingRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + policy: value["policy"], + group: value["group"], + user: value["user"], + target: value["target"], + negate: value["negate"], + enabled: value["enabled"], + order: value["order"], + timeout: value["timeout"], + failure_result: value["failureResult"], + }; +} diff --git a/packages/client-ts/src/models/PatchedPromptRequest.ts b/packages/client-ts/src/models/PatchedPromptRequest.ts new file mode 100644 index 0000000000..59b7d41fba --- /dev/null +++ b/packages/client-ts/src/models/PatchedPromptRequest.ts @@ -0,0 +1,152 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { PromptTypeEnum } from "./PromptTypeEnum"; +import { PromptTypeEnumFromJSON, PromptTypeEnumToJSON } from "./PromptTypeEnum"; + +/** + * Prompt Serializer + * @export + * @interface PatchedPromptRequest + */ +export interface PatchedPromptRequest { + /** + * + * @type {string} + * @memberof PatchedPromptRequest + */ + name?: string; + /** + * Name of the form field, also used to store the value + * @type {string} + * @memberof PatchedPromptRequest + */ + fieldKey?: string; + /** + * + * @type {string} + * @memberof PatchedPromptRequest + */ + label?: string; + /** + * + * @type {PromptTypeEnum} + * @memberof PatchedPromptRequest + */ + type?: PromptTypeEnum; + /** + * + * @type {boolean} + * @memberof PatchedPromptRequest + */ + required?: boolean; + /** + * Optionally provide a short hint that describes the expected input value. When creating a fixed choice field, enable interpreting as expression and return a list to return multiple choices. + * @type {string} + * @memberof PatchedPromptRequest + */ + placeholder?: string; + /** + * Optionally pre-fill the input with an initial value. When creating a fixed choice field, enable interpreting as expression and return a list to return multiple default choices. + * @type {string} + * @memberof PatchedPromptRequest + */ + initialValue?: string; + /** + * + * @type {number} + * @memberof PatchedPromptRequest + */ + order?: number; + /** + * + * @type {string} + * @memberof PatchedPromptRequest + */ + subText?: string; + /** + * + * @type {boolean} + * @memberof PatchedPromptRequest + */ + placeholderExpression?: boolean; + /** + * + * @type {boolean} + * @memberof PatchedPromptRequest + */ + initialValueExpression?: boolean; +} + +/** + * Check if a given object implements the PatchedPromptRequest interface. + */ +export function instanceOfPatchedPromptRequest(value: object): value is PatchedPromptRequest { + return true; +} + +export function PatchedPromptRequestFromJSON(json: any): PatchedPromptRequest { + return PatchedPromptRequestFromJSONTyped(json, false); +} + +export function PatchedPromptRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedPromptRequest { + if (json == null) { + return json; + } + return { + name: json["name"] == null ? undefined : json["name"], + fieldKey: json["field_key"] == null ? undefined : json["field_key"], + label: json["label"] == null ? undefined : json["label"], + type: json["type"] == null ? undefined : PromptTypeEnumFromJSON(json["type"]), + required: json["required"] == null ? undefined : json["required"], + placeholder: json["placeholder"] == null ? undefined : json["placeholder"], + initialValue: json["initial_value"] == null ? undefined : json["initial_value"], + order: json["order"] == null ? undefined : json["order"], + subText: json["sub_text"] == null ? undefined : json["sub_text"], + placeholderExpression: + json["placeholder_expression"] == null ? undefined : json["placeholder_expression"], + initialValueExpression: + json["initial_value_expression"] == null ? undefined : json["initial_value_expression"], + }; +} + +export function PatchedPromptRequestToJSON(json: any): PatchedPromptRequest { + return PatchedPromptRequestToJSONTyped(json, false); +} + +export function PatchedPromptRequestToJSONTyped( + value?: PatchedPromptRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + field_key: value["fieldKey"], + label: value["label"], + type: PromptTypeEnumToJSON(value["type"]), + required: value["required"], + placeholder: value["placeholder"], + initial_value: value["initialValue"], + order: value["order"], + sub_text: value["subText"], + placeholder_expression: value["placeholderExpression"], + initial_value_expression: value["initialValueExpression"], + }; +} diff --git a/packages/client-ts/src/models/PatchedPromptStageRequest.ts b/packages/client-ts/src/models/PatchedPromptStageRequest.ts new file mode 100644 index 0000000000..e33e13b5ed --- /dev/null +++ b/packages/client-ts/src/models/PatchedPromptStageRequest.ts @@ -0,0 +1,86 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * PromptStage Serializer + * @export + * @interface PatchedPromptStageRequest + */ +export interface PatchedPromptStageRequest { + /** + * + * @type {string} + * @memberof PatchedPromptStageRequest + */ + name?: string; + /** + * + * @type {Array} + * @memberof PatchedPromptStageRequest + */ + fields?: Array; + /** + * + * @type {Array} + * @memberof PatchedPromptStageRequest + */ + validationPolicies?: Array; +} + +/** + * Check if a given object implements the PatchedPromptStageRequest interface. + */ +export function instanceOfPatchedPromptStageRequest( + value: object, +): value is PatchedPromptStageRequest { + return true; +} + +export function PatchedPromptStageRequestFromJSON(json: any): PatchedPromptStageRequest { + return PatchedPromptStageRequestFromJSONTyped(json, false); +} + +export function PatchedPromptStageRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedPromptStageRequest { + if (json == null) { + return json; + } + return { + name: json["name"] == null ? undefined : json["name"], + fields: json["fields"] == null ? undefined : json["fields"], + validationPolicies: + json["validation_policies"] == null ? undefined : json["validation_policies"], + }; +} + +export function PatchedPromptStageRequestToJSON(json: any): PatchedPromptStageRequest { + return PatchedPromptStageRequestToJSONTyped(json, false); +} + +export function PatchedPromptStageRequestToJSONTyped( + value?: PatchedPromptStageRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + fields: value["fields"], + validation_policies: value["validationPolicies"], + }; +} diff --git a/packages/client-ts/src/models/PatchedProxyProviderRequest.ts b/packages/client-ts/src/models/PatchedProxyProviderRequest.ts new file mode 100644 index 0000000000..b98d6a54a5 --- /dev/null +++ b/packages/client-ts/src/models/PatchedProxyProviderRequest.ts @@ -0,0 +1,241 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { ProxyMode } from "./ProxyMode"; +import { ProxyModeFromJSON, ProxyModeToJSON } from "./ProxyMode"; + +/** + * ProxyProvider Serializer + * @export + * @interface PatchedProxyProviderRequest + */ +export interface PatchedProxyProviderRequest { + /** + * + * @type {string} + * @memberof PatchedProxyProviderRequest + */ + name?: string; + /** + * Flow used for authentication when the associated application is accessed by an un-authenticated user. + * @type {string} + * @memberof PatchedProxyProviderRequest + */ + authenticationFlow?: string | null; + /** + * Flow used when authorizing this provider. + * @type {string} + * @memberof PatchedProxyProviderRequest + */ + authorizationFlow?: string; + /** + * Flow used ending the session from a provider. + * @type {string} + * @memberof PatchedProxyProviderRequest + */ + invalidationFlow?: string; + /** + * + * @type {Array} + * @memberof PatchedProxyProviderRequest + */ + propertyMappings?: Array; + /** + * + * @type {string} + * @memberof PatchedProxyProviderRequest + */ + internalHost?: string; + /** + * + * @type {string} + * @memberof PatchedProxyProviderRequest + */ + externalHost?: string; + /** + * Validate SSL Certificates of upstream servers + * @type {boolean} + * @memberof PatchedProxyProviderRequest + */ + internalHostSslValidation?: boolean; + /** + * + * @type {string} + * @memberof PatchedProxyProviderRequest + */ + certificate?: string | null; + /** + * Regular expressions for which authentication is not required. Each new line is interpreted as a new Regular Expression. + * @type {string} + * @memberof PatchedProxyProviderRequest + */ + skipPathRegex?: string; + /** + * Set a custom HTTP-Basic Authentication header based on values from authentik. + * @type {boolean} + * @memberof PatchedProxyProviderRequest + */ + basicAuthEnabled?: boolean; + /** + * User/Group Attribute used for the password part of the HTTP-Basic Header. + * @type {string} + * @memberof PatchedProxyProviderRequest + */ + basicAuthPasswordAttribute?: string; + /** + * User/Group Attribute used for the user part of the HTTP-Basic Header. If not set, the user's Email address is used. + * @type {string} + * @memberof PatchedProxyProviderRequest + */ + basicAuthUserAttribute?: string; + /** + * Enable support for forwardAuth in traefik and nginx auth_request. Exclusive with internal_host. + * @type {ProxyMode} + * @memberof PatchedProxyProviderRequest + */ + mode?: ProxyMode; + /** + * When enabled, this provider will intercept the authorization header and authenticate requests based on its value. + * @type {boolean} + * @memberof PatchedProxyProviderRequest + */ + interceptHeaderAuth?: boolean; + /** + * + * @type {string} + * @memberof PatchedProxyProviderRequest + */ + cookieDomain?: string; + /** + * + * @type {Array} + * @memberof PatchedProxyProviderRequest + */ + jwtFederationSources?: Array; + /** + * + * @type {Array} + * @memberof PatchedProxyProviderRequest + */ + jwtFederationProviders?: Array; + /** + * Tokens not valid on or after current time + this value (Format: hours=1;minutes=2;seconds=3). + * @type {string} + * @memberof PatchedProxyProviderRequest + */ + accessTokenValidity?: string; + /** + * Tokens not valid on or after current time + this value (Format: hours=1;minutes=2;seconds=3). + * @type {string} + * @memberof PatchedProxyProviderRequest + */ + refreshTokenValidity?: string; +} + +/** + * Check if a given object implements the PatchedProxyProviderRequest interface. + */ +export function instanceOfPatchedProxyProviderRequest( + value: object, +): value is PatchedProxyProviderRequest { + return true; +} + +export function PatchedProxyProviderRequestFromJSON(json: any): PatchedProxyProviderRequest { + return PatchedProxyProviderRequestFromJSONTyped(json, false); +} + +export function PatchedProxyProviderRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedProxyProviderRequest { + if (json == null) { + return json; + } + return { + name: json["name"] == null ? undefined : json["name"], + authenticationFlow: + json["authentication_flow"] == null ? undefined : json["authentication_flow"], + authorizationFlow: + json["authorization_flow"] == null ? undefined : json["authorization_flow"], + invalidationFlow: json["invalidation_flow"] == null ? undefined : json["invalidation_flow"], + propertyMappings: json["property_mappings"] == null ? undefined : json["property_mappings"], + internalHost: json["internal_host"] == null ? undefined : json["internal_host"], + externalHost: json["external_host"] == null ? undefined : json["external_host"], + internalHostSslValidation: + json["internal_host_ssl_validation"] == null + ? undefined + : json["internal_host_ssl_validation"], + certificate: json["certificate"] == null ? undefined : json["certificate"], + skipPathRegex: json["skip_path_regex"] == null ? undefined : json["skip_path_regex"], + basicAuthEnabled: + json["basic_auth_enabled"] == null ? undefined : json["basic_auth_enabled"], + basicAuthPasswordAttribute: + json["basic_auth_password_attribute"] == null + ? undefined + : json["basic_auth_password_attribute"], + basicAuthUserAttribute: + json["basic_auth_user_attribute"] == null + ? undefined + : json["basic_auth_user_attribute"], + mode: json["mode"] == null ? undefined : ProxyModeFromJSON(json["mode"]), + interceptHeaderAuth: + json["intercept_header_auth"] == null ? undefined : json["intercept_header_auth"], + cookieDomain: json["cookie_domain"] == null ? undefined : json["cookie_domain"], + jwtFederationSources: + json["jwt_federation_sources"] == null ? undefined : json["jwt_federation_sources"], + jwtFederationProviders: + json["jwt_federation_providers"] == null ? undefined : json["jwt_federation_providers"], + accessTokenValidity: + json["access_token_validity"] == null ? undefined : json["access_token_validity"], + refreshTokenValidity: + json["refresh_token_validity"] == null ? undefined : json["refresh_token_validity"], + }; +} + +export function PatchedProxyProviderRequestToJSON(json: any): PatchedProxyProviderRequest { + return PatchedProxyProviderRequestToJSONTyped(json, false); +} + +export function PatchedProxyProviderRequestToJSONTyped( + value?: PatchedProxyProviderRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + authentication_flow: value["authenticationFlow"], + authorization_flow: value["authorizationFlow"], + invalidation_flow: value["invalidationFlow"], + property_mappings: value["propertyMappings"], + internal_host: value["internalHost"], + external_host: value["externalHost"], + internal_host_ssl_validation: value["internalHostSslValidation"], + certificate: value["certificate"], + skip_path_regex: value["skipPathRegex"], + basic_auth_enabled: value["basicAuthEnabled"], + basic_auth_password_attribute: value["basicAuthPasswordAttribute"], + basic_auth_user_attribute: value["basicAuthUserAttribute"], + mode: ProxyModeToJSON(value["mode"]), + intercept_header_auth: value["interceptHeaderAuth"], + cookie_domain: value["cookieDomain"], + jwt_federation_sources: value["jwtFederationSources"], + jwt_federation_providers: value["jwtFederationProviders"], + access_token_validity: value["accessTokenValidity"], + refresh_token_validity: value["refreshTokenValidity"], + }; +} diff --git a/packages/client-ts/src/models/PatchedRACPropertyMappingRequest.ts b/packages/client-ts/src/models/PatchedRACPropertyMappingRequest.ts new file mode 100644 index 0000000000..4274068fa5 --- /dev/null +++ b/packages/client-ts/src/models/PatchedRACPropertyMappingRequest.ts @@ -0,0 +1,97 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * RACPropertyMapping Serializer + * @export + * @interface PatchedRACPropertyMappingRequest + */ +export interface PatchedRACPropertyMappingRequest { + /** + * Objects that are managed by authentik. These objects are created and updated automatically. This flag only indicates that an object can be overwritten by migrations. You can still modify the objects via the API, but expect changes to be overwritten in a later update. + * @type {string} + * @memberof PatchedRACPropertyMappingRequest + */ + managed?: string | null; + /** + * + * @type {string} + * @memberof PatchedRACPropertyMappingRequest + */ + name?: string; + /** + * + * @type {string} + * @memberof PatchedRACPropertyMappingRequest + */ + expression?: string; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PatchedRACPropertyMappingRequest + */ + staticSettings?: { [key: string]: any }; +} + +/** + * Check if a given object implements the PatchedRACPropertyMappingRequest interface. + */ +export function instanceOfPatchedRACPropertyMappingRequest( + value: object, +): value is PatchedRACPropertyMappingRequest { + return true; +} + +export function PatchedRACPropertyMappingRequestFromJSON( + json: any, +): PatchedRACPropertyMappingRequest { + return PatchedRACPropertyMappingRequestFromJSONTyped(json, false); +} + +export function PatchedRACPropertyMappingRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedRACPropertyMappingRequest { + if (json == null) { + return json; + } + return { + managed: json["managed"] == null ? undefined : json["managed"], + name: json["name"] == null ? undefined : json["name"], + expression: json["expression"] == null ? undefined : json["expression"], + staticSettings: json["static_settings"] == null ? undefined : json["static_settings"], + }; +} + +export function PatchedRACPropertyMappingRequestToJSON( + json: any, +): PatchedRACPropertyMappingRequest { + return PatchedRACPropertyMappingRequestToJSONTyped(json, false); +} + +export function PatchedRACPropertyMappingRequestToJSONTyped( + value?: PatchedRACPropertyMappingRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + managed: value["managed"], + name: value["name"], + expression: value["expression"], + static_settings: value["staticSettings"], + }; +} diff --git a/packages/client-ts/src/models/PatchedRACProviderRequest.ts b/packages/client-ts/src/models/PatchedRACProviderRequest.ts new file mode 100644 index 0000000000..a17ec3c14e --- /dev/null +++ b/packages/client-ts/src/models/PatchedRACProviderRequest.ts @@ -0,0 +1,122 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * RACProvider Serializer + * @export + * @interface PatchedRACProviderRequest + */ +export interface PatchedRACProviderRequest { + /** + * + * @type {string} + * @memberof PatchedRACProviderRequest + */ + name?: string; + /** + * Flow used for authentication when the associated application is accessed by an un-authenticated user. + * @type {string} + * @memberof PatchedRACProviderRequest + */ + authenticationFlow?: string | null; + /** + * Flow used when authorizing this provider. + * @type {string} + * @memberof PatchedRACProviderRequest + */ + authorizationFlow?: string; + /** + * + * @type {Array} + * @memberof PatchedRACProviderRequest + */ + propertyMappings?: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PatchedRACProviderRequest + */ + settings?: { [key: string]: any }; + /** + * Determines how long a session lasts. Default of 0 means that the sessions lasts until the browser is closed. (Format: hours=-1;minutes=-2;seconds=-3) + * @type {string} + * @memberof PatchedRACProviderRequest + */ + connectionExpiry?: string; + /** + * When set to true, connection tokens will be deleted upon disconnect. + * @type {boolean} + * @memberof PatchedRACProviderRequest + */ + deleteTokenOnDisconnect?: boolean; +} + +/** + * Check if a given object implements the PatchedRACProviderRequest interface. + */ +export function instanceOfPatchedRACProviderRequest( + value: object, +): value is PatchedRACProviderRequest { + return true; +} + +export function PatchedRACProviderRequestFromJSON(json: any): PatchedRACProviderRequest { + return PatchedRACProviderRequestFromJSONTyped(json, false); +} + +export function PatchedRACProviderRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedRACProviderRequest { + if (json == null) { + return json; + } + return { + name: json["name"] == null ? undefined : json["name"], + authenticationFlow: + json["authentication_flow"] == null ? undefined : json["authentication_flow"], + authorizationFlow: + json["authorization_flow"] == null ? undefined : json["authorization_flow"], + propertyMappings: json["property_mappings"] == null ? undefined : json["property_mappings"], + settings: json["settings"] == null ? undefined : json["settings"], + connectionExpiry: json["connection_expiry"] == null ? undefined : json["connection_expiry"], + deleteTokenOnDisconnect: + json["delete_token_on_disconnect"] == null + ? undefined + : json["delete_token_on_disconnect"], + }; +} + +export function PatchedRACProviderRequestToJSON(json: any): PatchedRACProviderRequest { + return PatchedRACProviderRequestToJSONTyped(json, false); +} + +export function PatchedRACProviderRequestToJSONTyped( + value?: PatchedRACProviderRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + authentication_flow: value["authenticationFlow"], + authorization_flow: value["authorizationFlow"], + property_mappings: value["propertyMappings"], + settings: value["settings"], + connection_expiry: value["connectionExpiry"], + delete_token_on_disconnect: value["deleteTokenOnDisconnect"], + }; +} diff --git a/packages/client-ts/src/models/PatchedRadiusProviderPropertyMappingRequest.ts b/packages/client-ts/src/models/PatchedRadiusProviderPropertyMappingRequest.ts new file mode 100644 index 0000000000..feb4317203 --- /dev/null +++ b/packages/client-ts/src/models/PatchedRadiusProviderPropertyMappingRequest.ts @@ -0,0 +1,89 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * RadiusProviderPropertyMapping Serializer + * @export + * @interface PatchedRadiusProviderPropertyMappingRequest + */ +export interface PatchedRadiusProviderPropertyMappingRequest { + /** + * Objects that are managed by authentik. These objects are created and updated automatically. This flag only indicates that an object can be overwritten by migrations. You can still modify the objects via the API, but expect changes to be overwritten in a later update. + * @type {string} + * @memberof PatchedRadiusProviderPropertyMappingRequest + */ + managed?: string | null; + /** + * + * @type {string} + * @memberof PatchedRadiusProviderPropertyMappingRequest + */ + name?: string; + /** + * + * @type {string} + * @memberof PatchedRadiusProviderPropertyMappingRequest + */ + expression?: string; +} + +/** + * Check if a given object implements the PatchedRadiusProviderPropertyMappingRequest interface. + */ +export function instanceOfPatchedRadiusProviderPropertyMappingRequest( + value: object, +): value is PatchedRadiusProviderPropertyMappingRequest { + return true; +} + +export function PatchedRadiusProviderPropertyMappingRequestFromJSON( + json: any, +): PatchedRadiusProviderPropertyMappingRequest { + return PatchedRadiusProviderPropertyMappingRequestFromJSONTyped(json, false); +} + +export function PatchedRadiusProviderPropertyMappingRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedRadiusProviderPropertyMappingRequest { + if (json == null) { + return json; + } + return { + managed: json["managed"] == null ? undefined : json["managed"], + name: json["name"] == null ? undefined : json["name"], + expression: json["expression"] == null ? undefined : json["expression"], + }; +} + +export function PatchedRadiusProviderPropertyMappingRequestToJSON( + json: any, +): PatchedRadiusProviderPropertyMappingRequest { + return PatchedRadiusProviderPropertyMappingRequestToJSONTyped(json, false); +} + +export function PatchedRadiusProviderPropertyMappingRequestToJSONTyped( + value?: PatchedRadiusProviderPropertyMappingRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + managed: value["managed"], + name: value["name"], + expression: value["expression"], + }; +} diff --git a/packages/client-ts/src/models/PatchedRadiusProviderRequest.ts b/packages/client-ts/src/models/PatchedRadiusProviderRequest.ts new file mode 100644 index 0000000000..5da5f45bf9 --- /dev/null +++ b/packages/client-ts/src/models/PatchedRadiusProviderRequest.ts @@ -0,0 +1,135 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * RadiusProvider Serializer + * @export + * @interface PatchedRadiusProviderRequest + */ +export interface PatchedRadiusProviderRequest { + /** + * + * @type {string} + * @memberof PatchedRadiusProviderRequest + */ + name?: string; + /** + * Flow used for authentication when the associated application is accessed by an un-authenticated user. + * @type {string} + * @memberof PatchedRadiusProviderRequest + */ + authenticationFlow?: string | null; + /** + * Flow used when authorizing this provider. + * @type {string} + * @memberof PatchedRadiusProviderRequest + */ + authorizationFlow?: string; + /** + * Flow used ending the session from a provider. + * @type {string} + * @memberof PatchedRadiusProviderRequest + */ + invalidationFlow?: string; + /** + * + * @type {Array} + * @memberof PatchedRadiusProviderRequest + */ + propertyMappings?: Array; + /** + * List of CIDRs (comma-separated) that clients can connect from. A more specific CIDR will match before a looser one. Clients connecting from a non-specified CIDR will be dropped. + * @type {string} + * @memberof PatchedRadiusProviderRequest + */ + clientNetworks?: string; + /** + * Shared secret between clients and server to hash packets. + * @type {string} + * @memberof PatchedRadiusProviderRequest + */ + sharedSecret?: string; + /** + * When enabled, code-based multi-factor authentication can be used by appending a semicolon and the TOTP code to the password. This should only be enabled if all users that will bind to this provider have a TOTP device configured, as otherwise a password may incorrectly be rejected if it contains a semicolon. + * @type {boolean} + * @memberof PatchedRadiusProviderRequest + */ + mfaSupport?: boolean; + /** + * + * @type {string} + * @memberof PatchedRadiusProviderRequest + */ + certificate?: string | null; +} + +/** + * Check if a given object implements the PatchedRadiusProviderRequest interface. + */ +export function instanceOfPatchedRadiusProviderRequest( + value: object, +): value is PatchedRadiusProviderRequest { + return true; +} + +export function PatchedRadiusProviderRequestFromJSON(json: any): PatchedRadiusProviderRequest { + return PatchedRadiusProviderRequestFromJSONTyped(json, false); +} + +export function PatchedRadiusProviderRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedRadiusProviderRequest { + if (json == null) { + return json; + } + return { + name: json["name"] == null ? undefined : json["name"], + authenticationFlow: + json["authentication_flow"] == null ? undefined : json["authentication_flow"], + authorizationFlow: + json["authorization_flow"] == null ? undefined : json["authorization_flow"], + invalidationFlow: json["invalidation_flow"] == null ? undefined : json["invalidation_flow"], + propertyMappings: json["property_mappings"] == null ? undefined : json["property_mappings"], + clientNetworks: json["client_networks"] == null ? undefined : json["client_networks"], + sharedSecret: json["shared_secret"] == null ? undefined : json["shared_secret"], + mfaSupport: json["mfa_support"] == null ? undefined : json["mfa_support"], + certificate: json["certificate"] == null ? undefined : json["certificate"], + }; +} + +export function PatchedRadiusProviderRequestToJSON(json: any): PatchedRadiusProviderRequest { + return PatchedRadiusProviderRequestToJSONTyped(json, false); +} + +export function PatchedRadiusProviderRequestToJSONTyped( + value?: PatchedRadiusProviderRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + authentication_flow: value["authenticationFlow"], + authorization_flow: value["authorizationFlow"], + invalidation_flow: value["invalidationFlow"], + property_mappings: value["propertyMappings"], + client_networks: value["clientNetworks"], + shared_secret: value["sharedSecret"], + mfa_support: value["mfaSupport"], + certificate: value["certificate"], + }; +} diff --git a/packages/client-ts/src/models/PatchedRedirectStageRequest.ts b/packages/client-ts/src/models/PatchedRedirectStageRequest.ts new file mode 100644 index 0000000000..b1dc51d893 --- /dev/null +++ b/packages/client-ts/src/models/PatchedRedirectStageRequest.ts @@ -0,0 +1,107 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { RedirectStageModeEnum } from "./RedirectStageModeEnum"; +import { + RedirectStageModeEnumFromJSON, + RedirectStageModeEnumToJSON, +} from "./RedirectStageModeEnum"; + +/** + * RedirectStage Serializer + * @export + * @interface PatchedRedirectStageRequest + */ +export interface PatchedRedirectStageRequest { + /** + * + * @type {string} + * @memberof PatchedRedirectStageRequest + */ + name?: string; + /** + * + * @type {boolean} + * @memberof PatchedRedirectStageRequest + */ + keepContext?: boolean; + /** + * + * @type {RedirectStageModeEnum} + * @memberof PatchedRedirectStageRequest + */ + mode?: RedirectStageModeEnum; + /** + * + * @type {string} + * @memberof PatchedRedirectStageRequest + */ + targetStatic?: string; + /** + * + * @type {string} + * @memberof PatchedRedirectStageRequest + */ + targetFlow?: string | null; +} + +/** + * Check if a given object implements the PatchedRedirectStageRequest interface. + */ +export function instanceOfPatchedRedirectStageRequest( + value: object, +): value is PatchedRedirectStageRequest { + return true; +} + +export function PatchedRedirectStageRequestFromJSON(json: any): PatchedRedirectStageRequest { + return PatchedRedirectStageRequestFromJSONTyped(json, false); +} + +export function PatchedRedirectStageRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedRedirectStageRequest { + if (json == null) { + return json; + } + return { + name: json["name"] == null ? undefined : json["name"], + keepContext: json["keep_context"] == null ? undefined : json["keep_context"], + mode: json["mode"] == null ? undefined : RedirectStageModeEnumFromJSON(json["mode"]), + targetStatic: json["target_static"] == null ? undefined : json["target_static"], + targetFlow: json["target_flow"] == null ? undefined : json["target_flow"], + }; +} + +export function PatchedRedirectStageRequestToJSON(json: any): PatchedRedirectStageRequest { + return PatchedRedirectStageRequestToJSONTyped(json, false); +} + +export function PatchedRedirectStageRequestToJSONTyped( + value?: PatchedRedirectStageRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + keep_context: value["keepContext"], + mode: RedirectStageModeEnumToJSON(value["mode"]), + target_static: value["targetStatic"], + target_flow: value["targetFlow"], + }; +} diff --git a/packages/client-ts/src/models/PatchedReputationPolicyRequest.ts b/packages/client-ts/src/models/PatchedReputationPolicyRequest.ts new file mode 100644 index 0000000000..2067a99d99 --- /dev/null +++ b/packages/client-ts/src/models/PatchedReputationPolicyRequest.ts @@ -0,0 +1,101 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Reputation Policy Serializer + * @export + * @interface PatchedReputationPolicyRequest + */ +export interface PatchedReputationPolicyRequest { + /** + * + * @type {string} + * @memberof PatchedReputationPolicyRequest + */ + name?: string; + /** + * When this option is enabled, all executions of this policy will be logged. By default, only execution errors are logged. + * @type {boolean} + * @memberof PatchedReputationPolicyRequest + */ + executionLogging?: boolean; + /** + * + * @type {boolean} + * @memberof PatchedReputationPolicyRequest + */ + checkIp?: boolean; + /** + * + * @type {boolean} + * @memberof PatchedReputationPolicyRequest + */ + checkUsername?: boolean; + /** + * + * @type {number} + * @memberof PatchedReputationPolicyRequest + */ + threshold?: number; +} + +/** + * Check if a given object implements the PatchedReputationPolicyRequest interface. + */ +export function instanceOfPatchedReputationPolicyRequest( + value: object, +): value is PatchedReputationPolicyRequest { + return true; +} + +export function PatchedReputationPolicyRequestFromJSON(json: any): PatchedReputationPolicyRequest { + return PatchedReputationPolicyRequestFromJSONTyped(json, false); +} + +export function PatchedReputationPolicyRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedReputationPolicyRequest { + if (json == null) { + return json; + } + return { + name: json["name"] == null ? undefined : json["name"], + executionLogging: json["execution_logging"] == null ? undefined : json["execution_logging"], + checkIp: json["check_ip"] == null ? undefined : json["check_ip"], + checkUsername: json["check_username"] == null ? undefined : json["check_username"], + threshold: json["threshold"] == null ? undefined : json["threshold"], + }; +} + +export function PatchedReputationPolicyRequestToJSON(json: any): PatchedReputationPolicyRequest { + return PatchedReputationPolicyRequestToJSONTyped(json, false); +} + +export function PatchedReputationPolicyRequestToJSONTyped( + value?: PatchedReputationPolicyRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + execution_logging: value["executionLogging"], + check_ip: value["checkIp"], + check_username: value["checkUsername"], + threshold: value["threshold"], + }; +} diff --git a/packages/client-ts/src/models/PatchedRoleRequest.ts b/packages/client-ts/src/models/PatchedRoleRequest.ts new file mode 100644 index 0000000000..91c150d9a2 --- /dev/null +++ b/packages/client-ts/src/models/PatchedRoleRequest.ts @@ -0,0 +1,67 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Role serializer + * @export + * @interface PatchedRoleRequest + */ +export interface PatchedRoleRequest { + /** + * + * @type {string} + * @memberof PatchedRoleRequest + */ + name?: string; +} + +/** + * Check if a given object implements the PatchedRoleRequest interface. + */ +export function instanceOfPatchedRoleRequest(value: object): value is PatchedRoleRequest { + return true; +} + +export function PatchedRoleRequestFromJSON(json: any): PatchedRoleRequest { + return PatchedRoleRequestFromJSONTyped(json, false); +} + +export function PatchedRoleRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedRoleRequest { + if (json == null) { + return json; + } + return { + name: json["name"] == null ? undefined : json["name"], + }; +} + +export function PatchedRoleRequestToJSON(json: any): PatchedRoleRequest { + return PatchedRoleRequestToJSONTyped(json, false); +} + +export function PatchedRoleRequestToJSONTyped( + value?: PatchedRoleRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + }; +} diff --git a/packages/client-ts/src/models/PatchedSAMLPropertyMappingRequest.ts b/packages/client-ts/src/models/PatchedSAMLPropertyMappingRequest.ts new file mode 100644 index 0000000000..cc24a9d585 --- /dev/null +++ b/packages/client-ts/src/models/PatchedSAMLPropertyMappingRequest.ts @@ -0,0 +1,105 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * SAMLPropertyMapping Serializer + * @export + * @interface PatchedSAMLPropertyMappingRequest + */ +export interface PatchedSAMLPropertyMappingRequest { + /** + * Objects that are managed by authentik. These objects are created and updated automatically. This flag only indicates that an object can be overwritten by migrations. You can still modify the objects via the API, but expect changes to be overwritten in a later update. + * @type {string} + * @memberof PatchedSAMLPropertyMappingRequest + */ + managed?: string | null; + /** + * + * @type {string} + * @memberof PatchedSAMLPropertyMappingRequest + */ + name?: string; + /** + * + * @type {string} + * @memberof PatchedSAMLPropertyMappingRequest + */ + expression?: string; + /** + * + * @type {string} + * @memberof PatchedSAMLPropertyMappingRequest + */ + samlName?: string; + /** + * + * @type {string} + * @memberof PatchedSAMLPropertyMappingRequest + */ + friendlyName?: string | null; +} + +/** + * Check if a given object implements the PatchedSAMLPropertyMappingRequest interface. + */ +export function instanceOfPatchedSAMLPropertyMappingRequest( + value: object, +): value is PatchedSAMLPropertyMappingRequest { + return true; +} + +export function PatchedSAMLPropertyMappingRequestFromJSON( + json: any, +): PatchedSAMLPropertyMappingRequest { + return PatchedSAMLPropertyMappingRequestFromJSONTyped(json, false); +} + +export function PatchedSAMLPropertyMappingRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedSAMLPropertyMappingRequest { + if (json == null) { + return json; + } + return { + managed: json["managed"] == null ? undefined : json["managed"], + name: json["name"] == null ? undefined : json["name"], + expression: json["expression"] == null ? undefined : json["expression"], + samlName: json["saml_name"] == null ? undefined : json["saml_name"], + friendlyName: json["friendly_name"] == null ? undefined : json["friendly_name"], + }; +} + +export function PatchedSAMLPropertyMappingRequestToJSON( + json: any, +): PatchedSAMLPropertyMappingRequest { + return PatchedSAMLPropertyMappingRequestToJSONTyped(json, false); +} + +export function PatchedSAMLPropertyMappingRequestToJSONTyped( + value?: PatchedSAMLPropertyMappingRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + managed: value["managed"], + name: value["name"], + expression: value["expression"], + saml_name: value["samlName"], + friendly_name: value["friendlyName"], + }; +} diff --git a/packages/client-ts/src/models/PatchedSAMLProviderRequest.ts b/packages/client-ts/src/models/PatchedSAMLProviderRequest.ts new file mode 100644 index 0000000000..4fb7609349 --- /dev/null +++ b/packages/client-ts/src/models/PatchedSAMLProviderRequest.ts @@ -0,0 +1,330 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { DigestAlgorithmEnum } from "./DigestAlgorithmEnum"; +import { DigestAlgorithmEnumFromJSON, DigestAlgorithmEnumToJSON } from "./DigestAlgorithmEnum"; +import type { SAMLBindingsEnum } from "./SAMLBindingsEnum"; +import { SAMLBindingsEnumFromJSON, SAMLBindingsEnumToJSON } from "./SAMLBindingsEnum"; +import type { SAMLLogoutMethods } from "./SAMLLogoutMethods"; +import { SAMLLogoutMethodsFromJSON, SAMLLogoutMethodsToJSON } from "./SAMLLogoutMethods"; +import type { SAMLNameIDPolicyEnum } from "./SAMLNameIDPolicyEnum"; +import { SAMLNameIDPolicyEnumFromJSON, SAMLNameIDPolicyEnumToJSON } from "./SAMLNameIDPolicyEnum"; +import type { SignatureAlgorithmEnum } from "./SignatureAlgorithmEnum"; +import { + SignatureAlgorithmEnumFromJSON, + SignatureAlgorithmEnumToJSON, +} from "./SignatureAlgorithmEnum"; + +/** + * SAMLProvider Serializer + * @export + * @interface PatchedSAMLProviderRequest + */ +export interface PatchedSAMLProviderRequest { + /** + * + * @type {string} + * @memberof PatchedSAMLProviderRequest + */ + name?: string; + /** + * Flow used for authentication when the associated application is accessed by an un-authenticated user. + * @type {string} + * @memberof PatchedSAMLProviderRequest + */ + authenticationFlow?: string | null; + /** + * Flow used when authorizing this provider. + * @type {string} + * @memberof PatchedSAMLProviderRequest + */ + authorizationFlow?: string; + /** + * Flow used ending the session from a provider. + * @type {string} + * @memberof PatchedSAMLProviderRequest + */ + invalidationFlow?: string; + /** + * + * @type {Array} + * @memberof PatchedSAMLProviderRequest + */ + propertyMappings?: Array; + /** + * + * @type {string} + * @memberof PatchedSAMLProviderRequest + */ + acsUrl?: string; + /** + * Single Logout Service URL where the logout response should be sent. + * @type {string} + * @memberof PatchedSAMLProviderRequest + */ + slsUrl?: string; + /** + * Value of the audience restriction field of the assertion. When left empty, no audience restriction will be added. + * @type {string} + * @memberof PatchedSAMLProviderRequest + */ + audience?: string; + /** + * Also known as EntityID. Providing a value overrides the default issuer generated by authentik. + * @type {string} + * @memberof PatchedSAMLProviderRequest + */ + issuerOverride?: string; + /** + * Assertion valid not before current time + this value (Format: hours=-1;minutes=-2;seconds=-3). + * @type {string} + * @memberof PatchedSAMLProviderRequest + */ + assertionValidNotBefore?: string; + /** + * Assertion not valid on or after current time + this value (Format: hours=1;minutes=2;seconds=3). + * @type {string} + * @memberof PatchedSAMLProviderRequest + */ + assertionValidNotOnOrAfter?: string; + /** + * Session not valid on or after current time + this value (Format: hours=1;minutes=2;seconds=3). + * @type {string} + * @memberof PatchedSAMLProviderRequest + */ + sessionValidNotOnOrAfter?: string; + /** + * Configure how the NameID value will be created. When left empty, the NameIDPolicy of the incoming request will be considered + * @type {string} + * @memberof PatchedSAMLProviderRequest + */ + nameIdMapping?: string | null; + /** + * Configure how the AuthnContextClassRef value will be created. When left empty, the AuthnContextClassRef will be set based on which authentication methods the user used to authenticate. + * @type {string} + * @memberof PatchedSAMLProviderRequest + */ + authnContextClassRefMapping?: string | null; + /** + * + * @type {DigestAlgorithmEnum} + * @memberof PatchedSAMLProviderRequest + */ + digestAlgorithm?: DigestAlgorithmEnum; + /** + * + * @type {SignatureAlgorithmEnum} + * @memberof PatchedSAMLProviderRequest + */ + signatureAlgorithm?: SignatureAlgorithmEnum; + /** + * Keypair used to sign outgoing Responses going to the Service Provider. + * @type {string} + * @memberof PatchedSAMLProviderRequest + */ + signingKp?: string | null; + /** + * When selected, incoming assertion's Signatures will be validated against this certificate. To allow unsigned Requests, leave on default. + * @type {string} + * @memberof PatchedSAMLProviderRequest + */ + verificationKp?: string | null; + /** + * When selected, incoming assertions are encrypted by the IdP using the public key of the encryption keypair. The assertion is decrypted by the SP using the the private key. + * @type {string} + * @memberof PatchedSAMLProviderRequest + */ + encryptionKp?: string | null; + /** + * + * @type {boolean} + * @memberof PatchedSAMLProviderRequest + */ + signAssertion?: boolean; + /** + * + * @type {boolean} + * @memberof PatchedSAMLProviderRequest + */ + signResponse?: boolean; + /** + * + * @type {boolean} + * @memberof PatchedSAMLProviderRequest + */ + signLogoutRequest?: boolean; + /** + * + * @type {boolean} + * @memberof PatchedSAMLProviderRequest + */ + signLogoutResponse?: boolean; + /** + * This determines how authentik sends the response back to the Service Provider. + * @type {SAMLBindingsEnum} + * @memberof PatchedSAMLProviderRequest + */ + spBinding?: SAMLBindingsEnum; + /** + * This determines how authentik sends the logout response back to the Service Provider. + * @type {SAMLBindingsEnum} + * @memberof PatchedSAMLProviderRequest + */ + slsBinding?: SAMLBindingsEnum; + /** + * Method to use for logout. Front-channel iframe loads all logout URLs simultaneously in hidden iframes. Front-channel native uses your active browser tab to send post requests and redirect to providers. Back-channel sends logout requests directly from the server without user interaction (requires POST SLS binding). + * @type {SAMLLogoutMethods} + * @memberof PatchedSAMLProviderRequest + */ + logoutMethod?: SAMLLogoutMethods; + /** + * Default relay_state value for IDP-initiated logins + * @type {string} + * @memberof PatchedSAMLProviderRequest + */ + defaultRelayState?: string; + /** + * + * @type {SAMLNameIDPolicyEnum} + * @memberof PatchedSAMLProviderRequest + */ + defaultNameIdPolicy?: SAMLNameIDPolicyEnum; +} + +/** + * Check if a given object implements the PatchedSAMLProviderRequest interface. + */ +export function instanceOfPatchedSAMLProviderRequest( + value: object, +): value is PatchedSAMLProviderRequest { + return true; +} + +export function PatchedSAMLProviderRequestFromJSON(json: any): PatchedSAMLProviderRequest { + return PatchedSAMLProviderRequestFromJSONTyped(json, false); +} + +export function PatchedSAMLProviderRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedSAMLProviderRequest { + if (json == null) { + return json; + } + return { + name: json["name"] == null ? undefined : json["name"], + authenticationFlow: + json["authentication_flow"] == null ? undefined : json["authentication_flow"], + authorizationFlow: + json["authorization_flow"] == null ? undefined : json["authorization_flow"], + invalidationFlow: json["invalidation_flow"] == null ? undefined : json["invalidation_flow"], + propertyMappings: json["property_mappings"] == null ? undefined : json["property_mappings"], + acsUrl: json["acs_url"] == null ? undefined : json["acs_url"], + slsUrl: json["sls_url"] == null ? undefined : json["sls_url"], + audience: json["audience"] == null ? undefined : json["audience"], + issuerOverride: json["issuer_override"] == null ? undefined : json["issuer_override"], + assertionValidNotBefore: + json["assertion_valid_not_before"] == null + ? undefined + : json["assertion_valid_not_before"], + assertionValidNotOnOrAfter: + json["assertion_valid_not_on_or_after"] == null + ? undefined + : json["assertion_valid_not_on_or_after"], + sessionValidNotOnOrAfter: + json["session_valid_not_on_or_after"] == null + ? undefined + : json["session_valid_not_on_or_after"], + nameIdMapping: json["name_id_mapping"] == null ? undefined : json["name_id_mapping"], + authnContextClassRefMapping: + json["authn_context_class_ref_mapping"] == null + ? undefined + : json["authn_context_class_ref_mapping"], + digestAlgorithm: + json["digest_algorithm"] == null + ? undefined + : DigestAlgorithmEnumFromJSON(json["digest_algorithm"]), + signatureAlgorithm: + json["signature_algorithm"] == null + ? undefined + : SignatureAlgorithmEnumFromJSON(json["signature_algorithm"]), + signingKp: json["signing_kp"] == null ? undefined : json["signing_kp"], + verificationKp: json["verification_kp"] == null ? undefined : json["verification_kp"], + encryptionKp: json["encryption_kp"] == null ? undefined : json["encryption_kp"], + signAssertion: json["sign_assertion"] == null ? undefined : json["sign_assertion"], + signResponse: json["sign_response"] == null ? undefined : json["sign_response"], + signLogoutRequest: + json["sign_logout_request"] == null ? undefined : json["sign_logout_request"], + signLogoutResponse: + json["sign_logout_response"] == null ? undefined : json["sign_logout_response"], + spBinding: + json["sp_binding"] == null ? undefined : SAMLBindingsEnumFromJSON(json["sp_binding"]), + slsBinding: + json["sls_binding"] == null ? undefined : SAMLBindingsEnumFromJSON(json["sls_binding"]), + logoutMethod: + json["logout_method"] == null + ? undefined + : SAMLLogoutMethodsFromJSON(json["logout_method"]), + defaultRelayState: + json["default_relay_state"] == null ? undefined : json["default_relay_state"], + defaultNameIdPolicy: + json["default_name_id_policy"] == null + ? undefined + : SAMLNameIDPolicyEnumFromJSON(json["default_name_id_policy"]), + }; +} + +export function PatchedSAMLProviderRequestToJSON(json: any): PatchedSAMLProviderRequest { + return PatchedSAMLProviderRequestToJSONTyped(json, false); +} + +export function PatchedSAMLProviderRequestToJSONTyped( + value?: PatchedSAMLProviderRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + authentication_flow: value["authenticationFlow"], + authorization_flow: value["authorizationFlow"], + invalidation_flow: value["invalidationFlow"], + property_mappings: value["propertyMappings"], + acs_url: value["acsUrl"], + sls_url: value["slsUrl"], + audience: value["audience"], + issuer_override: value["issuerOverride"], + assertion_valid_not_before: value["assertionValidNotBefore"], + assertion_valid_not_on_or_after: value["assertionValidNotOnOrAfter"], + session_valid_not_on_or_after: value["sessionValidNotOnOrAfter"], + name_id_mapping: value["nameIdMapping"], + authn_context_class_ref_mapping: value["authnContextClassRefMapping"], + digest_algorithm: DigestAlgorithmEnumToJSON(value["digestAlgorithm"]), + signature_algorithm: SignatureAlgorithmEnumToJSON(value["signatureAlgorithm"]), + signing_kp: value["signingKp"], + verification_kp: value["verificationKp"], + encryption_kp: value["encryptionKp"], + sign_assertion: value["signAssertion"], + sign_response: value["signResponse"], + sign_logout_request: value["signLogoutRequest"], + sign_logout_response: value["signLogoutResponse"], + sp_binding: SAMLBindingsEnumToJSON(value["spBinding"]), + sls_binding: SAMLBindingsEnumToJSON(value["slsBinding"]), + logout_method: SAMLLogoutMethodsToJSON(value["logoutMethod"]), + default_relay_state: value["defaultRelayState"], + default_name_id_policy: SAMLNameIDPolicyEnumToJSON(value["defaultNameIdPolicy"]), + }; +} diff --git a/packages/client-ts/src/models/PatchedSAMLSourcePropertyMappingRequest.ts b/packages/client-ts/src/models/PatchedSAMLSourcePropertyMappingRequest.ts new file mode 100644 index 0000000000..85784e091b --- /dev/null +++ b/packages/client-ts/src/models/PatchedSAMLSourcePropertyMappingRequest.ts @@ -0,0 +1,89 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * SAMLSourcePropertyMapping Serializer + * @export + * @interface PatchedSAMLSourcePropertyMappingRequest + */ +export interface PatchedSAMLSourcePropertyMappingRequest { + /** + * Objects that are managed by authentik. These objects are created and updated automatically. This flag only indicates that an object can be overwritten by migrations. You can still modify the objects via the API, but expect changes to be overwritten in a later update. + * @type {string} + * @memberof PatchedSAMLSourcePropertyMappingRequest + */ + managed?: string | null; + /** + * + * @type {string} + * @memberof PatchedSAMLSourcePropertyMappingRequest + */ + name?: string; + /** + * + * @type {string} + * @memberof PatchedSAMLSourcePropertyMappingRequest + */ + expression?: string; +} + +/** + * Check if a given object implements the PatchedSAMLSourcePropertyMappingRequest interface. + */ +export function instanceOfPatchedSAMLSourcePropertyMappingRequest( + value: object, +): value is PatchedSAMLSourcePropertyMappingRequest { + return true; +} + +export function PatchedSAMLSourcePropertyMappingRequestFromJSON( + json: any, +): PatchedSAMLSourcePropertyMappingRequest { + return PatchedSAMLSourcePropertyMappingRequestFromJSONTyped(json, false); +} + +export function PatchedSAMLSourcePropertyMappingRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedSAMLSourcePropertyMappingRequest { + if (json == null) { + return json; + } + return { + managed: json["managed"] == null ? undefined : json["managed"], + name: json["name"] == null ? undefined : json["name"], + expression: json["expression"] == null ? undefined : json["expression"], + }; +} + +export function PatchedSAMLSourcePropertyMappingRequestToJSON( + json: any, +): PatchedSAMLSourcePropertyMappingRequest { + return PatchedSAMLSourcePropertyMappingRequestToJSONTyped(json, false); +} + +export function PatchedSAMLSourcePropertyMappingRequestToJSONTyped( + value?: PatchedSAMLSourcePropertyMappingRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + managed: value["managed"], + name: value["name"], + expression: value["expression"], + }; +} diff --git a/packages/client-ts/src/models/PatchedSAMLSourceRequest.ts b/packages/client-ts/src/models/PatchedSAMLSourceRequest.ts new file mode 100644 index 0000000000..e60420eb5b --- /dev/null +++ b/packages/client-ts/src/models/PatchedSAMLSourceRequest.ts @@ -0,0 +1,344 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { BindingTypeEnum } from "./BindingTypeEnum"; +import { BindingTypeEnumFromJSON, BindingTypeEnumToJSON } from "./BindingTypeEnum"; +import type { DigestAlgorithmEnum } from "./DigestAlgorithmEnum"; +import { DigestAlgorithmEnumFromJSON, DigestAlgorithmEnumToJSON } from "./DigestAlgorithmEnum"; +import type { GroupMatchingModeEnum } from "./GroupMatchingModeEnum"; +import { + GroupMatchingModeEnumFromJSON, + GroupMatchingModeEnumToJSON, +} from "./GroupMatchingModeEnum"; +import type { PolicyEngineMode } from "./PolicyEngineMode"; +import { PolicyEngineModeFromJSON, PolicyEngineModeToJSON } from "./PolicyEngineMode"; +import type { SAMLNameIDPolicyEnum } from "./SAMLNameIDPolicyEnum"; +import { SAMLNameIDPolicyEnumFromJSON, SAMLNameIDPolicyEnumToJSON } from "./SAMLNameIDPolicyEnum"; +import type { SignatureAlgorithmEnum } from "./SignatureAlgorithmEnum"; +import { + SignatureAlgorithmEnumFromJSON, + SignatureAlgorithmEnumToJSON, +} from "./SignatureAlgorithmEnum"; +import type { UserMatchingModeEnum } from "./UserMatchingModeEnum"; +import { UserMatchingModeEnumFromJSON, UserMatchingModeEnumToJSON } from "./UserMatchingModeEnum"; + +/** + * SAMLSource Serializer + * @export + * @interface PatchedSAMLSourceRequest + */ +export interface PatchedSAMLSourceRequest { + /** + * Source's display Name. + * @type {string} + * @memberof PatchedSAMLSourceRequest + */ + name?: string; + /** + * Internal source name, used in URLs. + * @type {string} + * @memberof PatchedSAMLSourceRequest + */ + slug?: string; + /** + * + * @type {boolean} + * @memberof PatchedSAMLSourceRequest + */ + enabled?: boolean; + /** + * When enabled, this source will be displayed as a prominent button on the login page, instead of a small icon. + * @type {boolean} + * @memberof PatchedSAMLSourceRequest + */ + promoted?: boolean; + /** + * Flow to use when authenticating existing users. + * @type {string} + * @memberof PatchedSAMLSourceRequest + */ + authenticationFlow?: string | null; + /** + * Flow to use when enrolling new users. + * @type {string} + * @memberof PatchedSAMLSourceRequest + */ + enrollmentFlow?: string | null; + /** + * + * @type {Array} + * @memberof PatchedSAMLSourceRequest + */ + userPropertyMappings?: Array; + /** + * + * @type {Array} + * @memberof PatchedSAMLSourceRequest + */ + groupPropertyMappings?: Array; + /** + * + * @type {PolicyEngineMode} + * @memberof PatchedSAMLSourceRequest + */ + policyEngineMode?: PolicyEngineMode; + /** + * How the source determines if an existing user should be authenticated or a new user enrolled. + * @type {UserMatchingModeEnum} + * @memberof PatchedSAMLSourceRequest + */ + userMatchingMode?: UserMatchingModeEnum; + /** + * + * @type {string} + * @memberof PatchedSAMLSourceRequest + */ + userPathTemplate?: string; + /** + * + * @type {string} + * @memberof PatchedSAMLSourceRequest + */ + icon?: string; + /** + * How the source determines if an existing group should be used or a new group created. + * @type {GroupMatchingModeEnum} + * @memberof PatchedSAMLSourceRequest + */ + groupMatchingMode?: GroupMatchingModeEnum; + /** + * Flow used before authentication. + * @type {string} + * @memberof PatchedSAMLSourceRequest + */ + preAuthenticationFlow?: string; + /** + * Also known as Entity ID. Defaults the Metadata URL. + * @type {string} + * @memberof PatchedSAMLSourceRequest + */ + issuer?: string; + /** + * URL that the initial Login request is sent to. + * @type {string} + * @memberof PatchedSAMLSourceRequest + */ + ssoUrl?: string; + /** + * Optional URL if your IDP supports Single-Logout. + * @type {string} + * @memberof PatchedSAMLSourceRequest + */ + sloUrl?: string | null; + /** + * Allows authentication flows initiated by the IdP. This can be a security risk, as no validation of the request ID is done. + * @type {boolean} + * @memberof PatchedSAMLSourceRequest + */ + allowIdpInitiated?: boolean; + /** + * When enabled, the IdP will re-authenticate the user even if a session exists. + * @type {boolean} + * @memberof PatchedSAMLSourceRequest + */ + forceAuthn?: boolean; + /** + * NameID Policy sent to the IdP. Can be unset, in which case no Policy is sent. + * @type {SAMLNameIDPolicyEnum} + * @memberof PatchedSAMLSourceRequest + */ + nameIdPolicy?: SAMLNameIDPolicyEnum; + /** + * + * @type {BindingTypeEnum} + * @memberof PatchedSAMLSourceRequest + */ + bindingType?: BindingTypeEnum; + /** + * When selected, incoming assertion's Signatures will be validated against this certificate. To allow unsigned Requests, leave on default. + * @type {string} + * @memberof PatchedSAMLSourceRequest + */ + verificationKp?: string | null; + /** + * Keypair used to sign outgoing Responses going to the Identity Provider. + * @type {string} + * @memberof PatchedSAMLSourceRequest + */ + signingKp?: string | null; + /** + * + * @type {DigestAlgorithmEnum} + * @memberof PatchedSAMLSourceRequest + */ + digestAlgorithm?: DigestAlgorithmEnum; + /** + * + * @type {SignatureAlgorithmEnum} + * @memberof PatchedSAMLSourceRequest + */ + signatureAlgorithm?: SignatureAlgorithmEnum; + /** + * Time offset when temporary users should be deleted. This only applies if your IDP uses the NameID Format 'transient', and the user doesn't log out manually. (Format: hours=1;minutes=2;seconds=3). + * @type {string} + * @memberof PatchedSAMLSourceRequest + */ + temporaryUserDeleteAfter?: string; + /** + * When selected, incoming assertions are encrypted by the IdP using the public key of the encryption keypair. The assertion is decrypted by the SP using the the private key. + * @type {string} + * @memberof PatchedSAMLSourceRequest + */ + encryptionKp?: string | null; + /** + * + * @type {boolean} + * @memberof PatchedSAMLSourceRequest + */ + signedAssertion?: boolean; + /** + * + * @type {boolean} + * @memberof PatchedSAMLSourceRequest + */ + signedResponse?: boolean; +} + +/** + * Check if a given object implements the PatchedSAMLSourceRequest interface. + */ +export function instanceOfPatchedSAMLSourceRequest( + value: object, +): value is PatchedSAMLSourceRequest { + return true; +} + +export function PatchedSAMLSourceRequestFromJSON(json: any): PatchedSAMLSourceRequest { + return PatchedSAMLSourceRequestFromJSONTyped(json, false); +} + +export function PatchedSAMLSourceRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedSAMLSourceRequest { + if (json == null) { + return json; + } + return { + name: json["name"] == null ? undefined : json["name"], + slug: json["slug"] == null ? undefined : json["slug"], + enabled: json["enabled"] == null ? undefined : json["enabled"], + promoted: json["promoted"] == null ? undefined : json["promoted"], + authenticationFlow: + json["authentication_flow"] == null ? undefined : json["authentication_flow"], + enrollmentFlow: json["enrollment_flow"] == null ? undefined : json["enrollment_flow"], + userPropertyMappings: + json["user_property_mappings"] == null ? undefined : json["user_property_mappings"], + groupPropertyMappings: + json["group_property_mappings"] == null ? undefined : json["group_property_mappings"], + policyEngineMode: + json["policy_engine_mode"] == null + ? undefined + : PolicyEngineModeFromJSON(json["policy_engine_mode"]), + userMatchingMode: + json["user_matching_mode"] == null + ? undefined + : UserMatchingModeEnumFromJSON(json["user_matching_mode"]), + userPathTemplate: + json["user_path_template"] == null ? undefined : json["user_path_template"], + icon: json["icon"] == null ? undefined : json["icon"], + groupMatchingMode: + json["group_matching_mode"] == null + ? undefined + : GroupMatchingModeEnumFromJSON(json["group_matching_mode"]), + preAuthenticationFlow: + json["pre_authentication_flow"] == null ? undefined : json["pre_authentication_flow"], + issuer: json["issuer"] == null ? undefined : json["issuer"], + ssoUrl: json["sso_url"] == null ? undefined : json["sso_url"], + sloUrl: json["slo_url"] == null ? undefined : json["slo_url"], + allowIdpInitiated: + json["allow_idp_initiated"] == null ? undefined : json["allow_idp_initiated"], + forceAuthn: json["force_authn"] == null ? undefined : json["force_authn"], + nameIdPolicy: + json["name_id_policy"] == null + ? undefined + : SAMLNameIDPolicyEnumFromJSON(json["name_id_policy"]), + bindingType: + json["binding_type"] == null + ? undefined + : BindingTypeEnumFromJSON(json["binding_type"]), + verificationKp: json["verification_kp"] == null ? undefined : json["verification_kp"], + signingKp: json["signing_kp"] == null ? undefined : json["signing_kp"], + digestAlgorithm: + json["digest_algorithm"] == null + ? undefined + : DigestAlgorithmEnumFromJSON(json["digest_algorithm"]), + signatureAlgorithm: + json["signature_algorithm"] == null + ? undefined + : SignatureAlgorithmEnumFromJSON(json["signature_algorithm"]), + temporaryUserDeleteAfter: + json["temporary_user_delete_after"] == null + ? undefined + : json["temporary_user_delete_after"], + encryptionKp: json["encryption_kp"] == null ? undefined : json["encryption_kp"], + signedAssertion: json["signed_assertion"] == null ? undefined : json["signed_assertion"], + signedResponse: json["signed_response"] == null ? undefined : json["signed_response"], + }; +} + +export function PatchedSAMLSourceRequestToJSON(json: any): PatchedSAMLSourceRequest { + return PatchedSAMLSourceRequestToJSONTyped(json, false); +} + +export function PatchedSAMLSourceRequestToJSONTyped( + value?: PatchedSAMLSourceRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + slug: value["slug"], + enabled: value["enabled"], + promoted: value["promoted"], + authentication_flow: value["authenticationFlow"], + enrollment_flow: value["enrollmentFlow"], + user_property_mappings: value["userPropertyMappings"], + group_property_mappings: value["groupPropertyMappings"], + policy_engine_mode: PolicyEngineModeToJSON(value["policyEngineMode"]), + user_matching_mode: UserMatchingModeEnumToJSON(value["userMatchingMode"]), + user_path_template: value["userPathTemplate"], + icon: value["icon"], + group_matching_mode: GroupMatchingModeEnumToJSON(value["groupMatchingMode"]), + pre_authentication_flow: value["preAuthenticationFlow"], + issuer: value["issuer"], + sso_url: value["ssoUrl"], + slo_url: value["sloUrl"], + allow_idp_initiated: value["allowIdpInitiated"], + force_authn: value["forceAuthn"], + name_id_policy: SAMLNameIDPolicyEnumToJSON(value["nameIdPolicy"]), + binding_type: BindingTypeEnumToJSON(value["bindingType"]), + verification_kp: value["verificationKp"], + signing_kp: value["signingKp"], + digest_algorithm: DigestAlgorithmEnumToJSON(value["digestAlgorithm"]), + signature_algorithm: SignatureAlgorithmEnumToJSON(value["signatureAlgorithm"]), + temporary_user_delete_after: value["temporaryUserDeleteAfter"], + encryption_kp: value["encryptionKp"], + signed_assertion: value["signedAssertion"], + signed_response: value["signedResponse"], + }; +} diff --git a/packages/client-ts/src/models/PatchedSCIMMappingRequest.ts b/packages/client-ts/src/models/PatchedSCIMMappingRequest.ts new file mode 100644 index 0000000000..a622a1560a --- /dev/null +++ b/packages/client-ts/src/models/PatchedSCIMMappingRequest.ts @@ -0,0 +1,85 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * SCIMMapping Serializer + * @export + * @interface PatchedSCIMMappingRequest + */ +export interface PatchedSCIMMappingRequest { + /** + * Objects that are managed by authentik. These objects are created and updated automatically. This flag only indicates that an object can be overwritten by migrations. You can still modify the objects via the API, but expect changes to be overwritten in a later update. + * @type {string} + * @memberof PatchedSCIMMappingRequest + */ + managed?: string | null; + /** + * + * @type {string} + * @memberof PatchedSCIMMappingRequest + */ + name?: string; + /** + * + * @type {string} + * @memberof PatchedSCIMMappingRequest + */ + expression?: string; +} + +/** + * Check if a given object implements the PatchedSCIMMappingRequest interface. + */ +export function instanceOfPatchedSCIMMappingRequest( + value: object, +): value is PatchedSCIMMappingRequest { + return true; +} + +export function PatchedSCIMMappingRequestFromJSON(json: any): PatchedSCIMMappingRequest { + return PatchedSCIMMappingRequestFromJSONTyped(json, false); +} + +export function PatchedSCIMMappingRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedSCIMMappingRequest { + if (json == null) { + return json; + } + return { + managed: json["managed"] == null ? undefined : json["managed"], + name: json["name"] == null ? undefined : json["name"], + expression: json["expression"] == null ? undefined : json["expression"], + }; +} + +export function PatchedSCIMMappingRequestToJSON(json: any): PatchedSCIMMappingRequest { + return PatchedSCIMMappingRequestToJSONTyped(json, false); +} + +export function PatchedSCIMMappingRequestToJSONTyped( + value?: PatchedSCIMMappingRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + managed: value["managed"], + name: value["name"], + expression: value["expression"], + }; +} diff --git a/packages/client-ts/src/models/PatchedSCIMProviderRequest.ts b/packages/client-ts/src/models/PatchedSCIMProviderRequest.ts new file mode 100644 index 0000000000..d57fc7ff56 --- /dev/null +++ b/packages/client-ts/src/models/PatchedSCIMProviderRequest.ts @@ -0,0 +1,214 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { CompatibilityModeEnum } from "./CompatibilityModeEnum"; +import { + CompatibilityModeEnumFromJSON, + CompatibilityModeEnumToJSON, +} from "./CompatibilityModeEnum"; +import type { SCIMAuthenticationModeEnum } from "./SCIMAuthenticationModeEnum"; +import { + SCIMAuthenticationModeEnumFromJSON, + SCIMAuthenticationModeEnumToJSON, +} from "./SCIMAuthenticationModeEnum"; + +/** + * SCIMProvider Serializer + * @export + * @interface PatchedSCIMProviderRequest + */ +export interface PatchedSCIMProviderRequest { + /** + * + * @type {string} + * @memberof PatchedSCIMProviderRequest + */ + name?: string; + /** + * + * @type {Array} + * @memberof PatchedSCIMProviderRequest + */ + propertyMappings?: Array; + /** + * Property mappings used for group creation/updating. + * @type {Array} + * @memberof PatchedSCIMProviderRequest + */ + propertyMappingsGroup?: Array; + /** + * Base URL to SCIM requests, usually ends in /v2 + * @type {string} + * @memberof PatchedSCIMProviderRequest + */ + url?: string; + /** + * + * @type {boolean} + * @memberof PatchedSCIMProviderRequest + */ + verifyCertificates?: boolean; + /** + * Authentication token + * @type {string} + * @memberof PatchedSCIMProviderRequest + */ + token?: string; + /** + * + * @type {SCIMAuthenticationModeEnum} + * @memberof PatchedSCIMProviderRequest + */ + authMode?: SCIMAuthenticationModeEnum; + /** + * OAuth Source used for authentication + * @type {string} + * @memberof PatchedSCIMProviderRequest + */ + authOauth?: string | null; + /** + * Additional OAuth parameters, such as grant_type + * @type {{ [key: string]: any; }} + * @memberof PatchedSCIMProviderRequest + */ + authOauthParams?: { [key: string]: any }; + /** + * Alter authentik behavior for vendor-specific SCIM implementations. + * @type {CompatibilityModeEnum} + * @memberof PatchedSCIMProviderRequest + */ + compatibilityMode?: CompatibilityModeEnum; + /** + * Cache duration for ServiceProviderConfig responses. Set minutes=0 to disable. + * @type {string} + * @memberof PatchedSCIMProviderRequest + */ + serviceProviderConfigCacheTimeout?: string; + /** + * + * @type {boolean} + * @memberof PatchedSCIMProviderRequest + */ + excludeUsersServiceAccount?: boolean; + /** + * Controls the number of objects synced in a single task + * @type {number} + * @memberof PatchedSCIMProviderRequest + */ + syncPageSize?: number; + /** + * Timeout for synchronization of a single page + * @type {string} + * @memberof PatchedSCIMProviderRequest + */ + syncPageTimeout?: string; + /** + * Group filters used to define sync-scope for groups. + * @type {Array} + * @memberof PatchedSCIMProviderRequest + */ + groupFilters?: Array; + /** + * When enabled, provider will not modify or create objects in the remote system. + * @type {boolean} + * @memberof PatchedSCIMProviderRequest + */ + dryRun?: boolean; +} + +/** + * Check if a given object implements the PatchedSCIMProviderRequest interface. + */ +export function instanceOfPatchedSCIMProviderRequest( + value: object, +): value is PatchedSCIMProviderRequest { + return true; +} + +export function PatchedSCIMProviderRequestFromJSON(json: any): PatchedSCIMProviderRequest { + return PatchedSCIMProviderRequestFromJSONTyped(json, false); +} + +export function PatchedSCIMProviderRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedSCIMProviderRequest { + if (json == null) { + return json; + } + return { + name: json["name"] == null ? undefined : json["name"], + propertyMappings: json["property_mappings"] == null ? undefined : json["property_mappings"], + propertyMappingsGroup: + json["property_mappings_group"] == null ? undefined : json["property_mappings_group"], + url: json["url"] == null ? undefined : json["url"], + verifyCertificates: + json["verify_certificates"] == null ? undefined : json["verify_certificates"], + token: json["token"] == null ? undefined : json["token"], + authMode: + json["auth_mode"] == null + ? undefined + : SCIMAuthenticationModeEnumFromJSON(json["auth_mode"]), + authOauth: json["auth_oauth"] == null ? undefined : json["auth_oauth"], + authOauthParams: json["auth_oauth_params"] == null ? undefined : json["auth_oauth_params"], + compatibilityMode: + json["compatibility_mode"] == null + ? undefined + : CompatibilityModeEnumFromJSON(json["compatibility_mode"]), + serviceProviderConfigCacheTimeout: + json["service_provider_config_cache_timeout"] == null + ? undefined + : json["service_provider_config_cache_timeout"], + excludeUsersServiceAccount: + json["exclude_users_service_account"] == null + ? undefined + : json["exclude_users_service_account"], + syncPageSize: json["sync_page_size"] == null ? undefined : json["sync_page_size"], + syncPageTimeout: json["sync_page_timeout"] == null ? undefined : json["sync_page_timeout"], + groupFilters: json["group_filters"] == null ? undefined : json["group_filters"], + dryRun: json["dry_run"] == null ? undefined : json["dry_run"], + }; +} + +export function PatchedSCIMProviderRequestToJSON(json: any): PatchedSCIMProviderRequest { + return PatchedSCIMProviderRequestToJSONTyped(json, false); +} + +export function PatchedSCIMProviderRequestToJSONTyped( + value?: PatchedSCIMProviderRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + property_mappings: value["propertyMappings"], + property_mappings_group: value["propertyMappingsGroup"], + url: value["url"], + verify_certificates: value["verifyCertificates"], + token: value["token"], + auth_mode: SCIMAuthenticationModeEnumToJSON(value["authMode"]), + auth_oauth: value["authOauth"], + auth_oauth_params: value["authOauthParams"], + compatibility_mode: CompatibilityModeEnumToJSON(value["compatibilityMode"]), + service_provider_config_cache_timeout: value["serviceProviderConfigCacheTimeout"], + exclude_users_service_account: value["excludeUsersServiceAccount"], + sync_page_size: value["syncPageSize"], + sync_page_timeout: value["syncPageTimeout"], + group_filters: value["groupFilters"], + dry_run: value["dryRun"], + }; +} diff --git a/packages/client-ts/src/models/PatchedSCIMSourceGroupRequest.ts b/packages/client-ts/src/models/PatchedSCIMSourceGroupRequest.ts new file mode 100644 index 0000000000..c38e481d1d --- /dev/null +++ b/packages/client-ts/src/models/PatchedSCIMSourceGroupRequest.ts @@ -0,0 +1,101 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * SCIMSourceGroup Serializer + * @export + * @interface PatchedSCIMSourceGroupRequest + */ +export interface PatchedSCIMSourceGroupRequest { + /** + * + * @type {string} + * @memberof PatchedSCIMSourceGroupRequest + */ + id?: string; + /** + * + * @type {string} + * @memberof PatchedSCIMSourceGroupRequest + */ + externalId?: string; + /** + * + * @type {string} + * @memberof PatchedSCIMSourceGroupRequest + */ + group?: string; + /** + * + * @type {string} + * @memberof PatchedSCIMSourceGroupRequest + */ + source?: string; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PatchedSCIMSourceGroupRequest + */ + attributes?: { [key: string]: any }; +} + +/** + * Check if a given object implements the PatchedSCIMSourceGroupRequest interface. + */ +export function instanceOfPatchedSCIMSourceGroupRequest( + value: object, +): value is PatchedSCIMSourceGroupRequest { + return true; +} + +export function PatchedSCIMSourceGroupRequestFromJSON(json: any): PatchedSCIMSourceGroupRequest { + return PatchedSCIMSourceGroupRequestFromJSONTyped(json, false); +} + +export function PatchedSCIMSourceGroupRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedSCIMSourceGroupRequest { + if (json == null) { + return json; + } + return { + id: json["id"] == null ? undefined : json["id"], + externalId: json["external_id"] == null ? undefined : json["external_id"], + group: json["group"] == null ? undefined : json["group"], + source: json["source"] == null ? undefined : json["source"], + attributes: json["attributes"] == null ? undefined : json["attributes"], + }; +} + +export function PatchedSCIMSourceGroupRequestToJSON(json: any): PatchedSCIMSourceGroupRequest { + return PatchedSCIMSourceGroupRequestToJSONTyped(json, false); +} + +export function PatchedSCIMSourceGroupRequestToJSONTyped( + value?: PatchedSCIMSourceGroupRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + id: value["id"], + external_id: value["externalId"], + group: value["group"], + source: value["source"], + attributes: value["attributes"], + }; +} diff --git a/packages/client-ts/src/models/PatchedSCIMSourcePropertyMappingRequest.ts b/packages/client-ts/src/models/PatchedSCIMSourcePropertyMappingRequest.ts new file mode 100644 index 0000000000..ef3401fc16 --- /dev/null +++ b/packages/client-ts/src/models/PatchedSCIMSourcePropertyMappingRequest.ts @@ -0,0 +1,89 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * SCIMSourcePropertyMapping Serializer + * @export + * @interface PatchedSCIMSourcePropertyMappingRequest + */ +export interface PatchedSCIMSourcePropertyMappingRequest { + /** + * Objects that are managed by authentik. These objects are created and updated automatically. This flag only indicates that an object can be overwritten by migrations. You can still modify the objects via the API, but expect changes to be overwritten in a later update. + * @type {string} + * @memberof PatchedSCIMSourcePropertyMappingRequest + */ + managed?: string | null; + /** + * + * @type {string} + * @memberof PatchedSCIMSourcePropertyMappingRequest + */ + name?: string; + /** + * + * @type {string} + * @memberof PatchedSCIMSourcePropertyMappingRequest + */ + expression?: string; +} + +/** + * Check if a given object implements the PatchedSCIMSourcePropertyMappingRequest interface. + */ +export function instanceOfPatchedSCIMSourcePropertyMappingRequest( + value: object, +): value is PatchedSCIMSourcePropertyMappingRequest { + return true; +} + +export function PatchedSCIMSourcePropertyMappingRequestFromJSON( + json: any, +): PatchedSCIMSourcePropertyMappingRequest { + return PatchedSCIMSourcePropertyMappingRequestFromJSONTyped(json, false); +} + +export function PatchedSCIMSourcePropertyMappingRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedSCIMSourcePropertyMappingRequest { + if (json == null) { + return json; + } + return { + managed: json["managed"] == null ? undefined : json["managed"], + name: json["name"] == null ? undefined : json["name"], + expression: json["expression"] == null ? undefined : json["expression"], + }; +} + +export function PatchedSCIMSourcePropertyMappingRequestToJSON( + json: any, +): PatchedSCIMSourcePropertyMappingRequest { + return PatchedSCIMSourcePropertyMappingRequestToJSONTyped(json, false); +} + +export function PatchedSCIMSourcePropertyMappingRequestToJSONTyped( + value?: PatchedSCIMSourcePropertyMappingRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + managed: value["managed"], + name: value["name"], + expression: value["expression"], + }; +} diff --git a/packages/client-ts/src/models/PatchedSCIMSourceRequest.ts b/packages/client-ts/src/models/PatchedSCIMSourceRequest.ts new file mode 100644 index 0000000000..a514d17913 --- /dev/null +++ b/packages/client-ts/src/models/PatchedSCIMSourceRequest.ts @@ -0,0 +1,112 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * SCIMSource Serializer + * @export + * @interface PatchedSCIMSourceRequest + */ +export interface PatchedSCIMSourceRequest { + /** + * Source's display Name. + * @type {string} + * @memberof PatchedSCIMSourceRequest + */ + name?: string; + /** + * Internal source name, used in URLs. + * @type {string} + * @memberof PatchedSCIMSourceRequest + */ + slug?: string; + /** + * + * @type {boolean} + * @memberof PatchedSCIMSourceRequest + */ + enabled?: boolean; + /** + * + * @type {Array} + * @memberof PatchedSCIMSourceRequest + */ + userPropertyMappings?: Array; + /** + * + * @type {Array} + * @memberof PatchedSCIMSourceRequest + */ + groupPropertyMappings?: Array; + /** + * + * @type {string} + * @memberof PatchedSCIMSourceRequest + */ + userPathTemplate?: string; +} + +/** + * Check if a given object implements the PatchedSCIMSourceRequest interface. + */ +export function instanceOfPatchedSCIMSourceRequest( + value: object, +): value is PatchedSCIMSourceRequest { + return true; +} + +export function PatchedSCIMSourceRequestFromJSON(json: any): PatchedSCIMSourceRequest { + return PatchedSCIMSourceRequestFromJSONTyped(json, false); +} + +export function PatchedSCIMSourceRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedSCIMSourceRequest { + if (json == null) { + return json; + } + return { + name: json["name"] == null ? undefined : json["name"], + slug: json["slug"] == null ? undefined : json["slug"], + enabled: json["enabled"] == null ? undefined : json["enabled"], + userPropertyMappings: + json["user_property_mappings"] == null ? undefined : json["user_property_mappings"], + groupPropertyMappings: + json["group_property_mappings"] == null ? undefined : json["group_property_mappings"], + userPathTemplate: + json["user_path_template"] == null ? undefined : json["user_path_template"], + }; +} + +export function PatchedSCIMSourceRequestToJSON(json: any): PatchedSCIMSourceRequest { + return PatchedSCIMSourceRequestToJSONTyped(json, false); +} + +export function PatchedSCIMSourceRequestToJSONTyped( + value?: PatchedSCIMSourceRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + slug: value["slug"], + enabled: value["enabled"], + user_property_mappings: value["userPropertyMappings"], + group_property_mappings: value["groupPropertyMappings"], + user_path_template: value["userPathTemplate"], + }; +} diff --git a/packages/client-ts/src/models/PatchedSCIMSourceUserRequest.ts b/packages/client-ts/src/models/PatchedSCIMSourceUserRequest.ts new file mode 100644 index 0000000000..db9081b264 --- /dev/null +++ b/packages/client-ts/src/models/PatchedSCIMSourceUserRequest.ts @@ -0,0 +1,101 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * SCIMSourceUser Serializer + * @export + * @interface PatchedSCIMSourceUserRequest + */ +export interface PatchedSCIMSourceUserRequest { + /** + * + * @type {string} + * @memberof PatchedSCIMSourceUserRequest + */ + id?: string; + /** + * + * @type {string} + * @memberof PatchedSCIMSourceUserRequest + */ + externalId?: string; + /** + * + * @type {number} + * @memberof PatchedSCIMSourceUserRequest + */ + user?: number; + /** + * + * @type {string} + * @memberof PatchedSCIMSourceUserRequest + */ + source?: string; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PatchedSCIMSourceUserRequest + */ + attributes?: { [key: string]: any }; +} + +/** + * Check if a given object implements the PatchedSCIMSourceUserRequest interface. + */ +export function instanceOfPatchedSCIMSourceUserRequest( + value: object, +): value is PatchedSCIMSourceUserRequest { + return true; +} + +export function PatchedSCIMSourceUserRequestFromJSON(json: any): PatchedSCIMSourceUserRequest { + return PatchedSCIMSourceUserRequestFromJSONTyped(json, false); +} + +export function PatchedSCIMSourceUserRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedSCIMSourceUserRequest { + if (json == null) { + return json; + } + return { + id: json["id"] == null ? undefined : json["id"], + externalId: json["external_id"] == null ? undefined : json["external_id"], + user: json["user"] == null ? undefined : json["user"], + source: json["source"] == null ? undefined : json["source"], + attributes: json["attributes"] == null ? undefined : json["attributes"], + }; +} + +export function PatchedSCIMSourceUserRequestToJSON(json: any): PatchedSCIMSourceUserRequest { + return PatchedSCIMSourceUserRequestToJSONTyped(json, false); +} + +export function PatchedSCIMSourceUserRequestToJSONTyped( + value?: PatchedSCIMSourceUserRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + id: value["id"], + external_id: value["externalId"], + user: value["user"], + source: value["source"], + attributes: value["attributes"], + }; +} diff --git a/packages/client-ts/src/models/PatchedSMSDeviceRequest.ts b/packages/client-ts/src/models/PatchedSMSDeviceRequest.ts new file mode 100644 index 0000000000..8967cbee44 --- /dev/null +++ b/packages/client-ts/src/models/PatchedSMSDeviceRequest.ts @@ -0,0 +1,67 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Serializer for sms authenticator devices + * @export + * @interface PatchedSMSDeviceRequest + */ +export interface PatchedSMSDeviceRequest { + /** + * The human-readable name of this device. + * @type {string} + * @memberof PatchedSMSDeviceRequest + */ + name?: string; +} + +/** + * Check if a given object implements the PatchedSMSDeviceRequest interface. + */ +export function instanceOfPatchedSMSDeviceRequest(value: object): value is PatchedSMSDeviceRequest { + return true; +} + +export function PatchedSMSDeviceRequestFromJSON(json: any): PatchedSMSDeviceRequest { + return PatchedSMSDeviceRequestFromJSONTyped(json, false); +} + +export function PatchedSMSDeviceRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedSMSDeviceRequest { + if (json == null) { + return json; + } + return { + name: json["name"] == null ? undefined : json["name"], + }; +} + +export function PatchedSMSDeviceRequestToJSON(json: any): PatchedSMSDeviceRequest { + return PatchedSMSDeviceRequestToJSONTyped(json, false); +} + +export function PatchedSMSDeviceRequestToJSONTyped( + value?: PatchedSMSDeviceRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + }; +} diff --git a/packages/client-ts/src/models/PatchedSSFProviderRequest.ts b/packages/client-ts/src/models/PatchedSSFProviderRequest.ts new file mode 100644 index 0000000000..6bf9157e38 --- /dev/null +++ b/packages/client-ts/src/models/PatchedSSFProviderRequest.ts @@ -0,0 +1,103 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * SSFProvider Serializer + * @export + * @interface PatchedSSFProviderRequest + */ +export interface PatchedSSFProviderRequest { + /** + * + * @type {string} + * @memberof PatchedSSFProviderRequest + */ + name?: string; + /** + * Key used to sign the SSF Events. + * @type {string} + * @memberof PatchedSSFProviderRequest + */ + signingKey?: string; + /** + * + * @type {Array} + * @memberof PatchedSSFProviderRequest + */ + oidcAuthProviders?: Array; + /** + * + * @type {string} + * @memberof PatchedSSFProviderRequest + */ + eventRetention?: string; + /** + * + * @type {boolean} + * @memberof PatchedSSFProviderRequest + */ + pushVerifyCertificates?: boolean; +} + +/** + * Check if a given object implements the PatchedSSFProviderRequest interface. + */ +export function instanceOfPatchedSSFProviderRequest( + value: object, +): value is PatchedSSFProviderRequest { + return true; +} + +export function PatchedSSFProviderRequestFromJSON(json: any): PatchedSSFProviderRequest { + return PatchedSSFProviderRequestFromJSONTyped(json, false); +} + +export function PatchedSSFProviderRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedSSFProviderRequest { + if (json == null) { + return json; + } + return { + name: json["name"] == null ? undefined : json["name"], + signingKey: json["signing_key"] == null ? undefined : json["signing_key"], + oidcAuthProviders: + json["oidc_auth_providers"] == null ? undefined : json["oidc_auth_providers"], + eventRetention: json["event_retention"] == null ? undefined : json["event_retention"], + pushVerifyCertificates: + json["push_verify_certificates"] == null ? undefined : json["push_verify_certificates"], + }; +} + +export function PatchedSSFProviderRequestToJSON(json: any): PatchedSSFProviderRequest { + return PatchedSSFProviderRequestToJSONTyped(json, false); +} + +export function PatchedSSFProviderRequestToJSONTyped( + value?: PatchedSSFProviderRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + signing_key: value["signingKey"], + oidc_auth_providers: value["oidcAuthProviders"], + event_retention: value["eventRetention"], + push_verify_certificates: value["pushVerifyCertificates"], + }; +} diff --git a/packages/client-ts/src/models/PatchedScheduleRequest.ts b/packages/client-ts/src/models/PatchedScheduleRequest.ts new file mode 100644 index 0000000000..8a55703faf --- /dev/null +++ b/packages/client-ts/src/models/PatchedScheduleRequest.ts @@ -0,0 +1,83 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + * @interface PatchedScheduleRequest + */ +export interface PatchedScheduleRequest { + /** + * + * @type {string} + * @memberof PatchedScheduleRequest + */ + relObjId?: string | null; + /** + * When to schedule tasks + * @type {string} + * @memberof PatchedScheduleRequest + */ + crontab?: string; + /** + * Pause this schedule + * @type {boolean} + * @memberof PatchedScheduleRequest + */ + paused?: boolean; +} + +/** + * Check if a given object implements the PatchedScheduleRequest interface. + */ +export function instanceOfPatchedScheduleRequest(value: object): value is PatchedScheduleRequest { + return true; +} + +export function PatchedScheduleRequestFromJSON(json: any): PatchedScheduleRequest { + return PatchedScheduleRequestFromJSONTyped(json, false); +} + +export function PatchedScheduleRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedScheduleRequest { + if (json == null) { + return json; + } + return { + relObjId: json["rel_obj_id"] == null ? undefined : json["rel_obj_id"], + crontab: json["crontab"] == null ? undefined : json["crontab"], + paused: json["paused"] == null ? undefined : json["paused"], + }; +} + +export function PatchedScheduleRequestToJSON(json: any): PatchedScheduleRequest { + return PatchedScheduleRequestToJSONTyped(json, false); +} + +export function PatchedScheduleRequestToJSONTyped( + value?: PatchedScheduleRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + rel_obj_id: value["relObjId"], + crontab: value["crontab"], + paused: value["paused"], + }; +} diff --git a/packages/client-ts/src/models/PatchedScopeMappingRequest.ts b/packages/client-ts/src/models/PatchedScopeMappingRequest.ts new file mode 100644 index 0000000000..d3014e30d3 --- /dev/null +++ b/packages/client-ts/src/models/PatchedScopeMappingRequest.ts @@ -0,0 +1,101 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * ScopeMapping Serializer + * @export + * @interface PatchedScopeMappingRequest + */ +export interface PatchedScopeMappingRequest { + /** + * Objects that are managed by authentik. These objects are created and updated automatically. This flag only indicates that an object can be overwritten by migrations. You can still modify the objects via the API, but expect changes to be overwritten in a later update. + * @type {string} + * @memberof PatchedScopeMappingRequest + */ + managed?: string | null; + /** + * + * @type {string} + * @memberof PatchedScopeMappingRequest + */ + name?: string; + /** + * + * @type {string} + * @memberof PatchedScopeMappingRequest + */ + expression?: string; + /** + * Scope name requested by the client + * @type {string} + * @memberof PatchedScopeMappingRequest + */ + scopeName?: string; + /** + * Description shown to the user when consenting. If left empty, the user won't be informed. + * @type {string} + * @memberof PatchedScopeMappingRequest + */ + description?: string; +} + +/** + * Check if a given object implements the PatchedScopeMappingRequest interface. + */ +export function instanceOfPatchedScopeMappingRequest( + value: object, +): value is PatchedScopeMappingRequest { + return true; +} + +export function PatchedScopeMappingRequestFromJSON(json: any): PatchedScopeMappingRequest { + return PatchedScopeMappingRequestFromJSONTyped(json, false); +} + +export function PatchedScopeMappingRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedScopeMappingRequest { + if (json == null) { + return json; + } + return { + managed: json["managed"] == null ? undefined : json["managed"], + name: json["name"] == null ? undefined : json["name"], + expression: json["expression"] == null ? undefined : json["expression"], + scopeName: json["scope_name"] == null ? undefined : json["scope_name"], + description: json["description"] == null ? undefined : json["description"], + }; +} + +export function PatchedScopeMappingRequestToJSON(json: any): PatchedScopeMappingRequest { + return PatchedScopeMappingRequestToJSONTyped(json, false); +} + +export function PatchedScopeMappingRequestToJSONTyped( + value?: PatchedScopeMappingRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + managed: value["managed"], + name: value["name"], + expression: value["expression"], + scope_name: value["scopeName"], + description: value["description"], + }; +} diff --git a/packages/client-ts/src/models/PatchedSettingsRequest.ts b/packages/client-ts/src/models/PatchedSettingsRequest.ts new file mode 100644 index 0000000000..5e60b5a2c2 --- /dev/null +++ b/packages/client-ts/src/models/PatchedSettingsRequest.ts @@ -0,0 +1,212 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { PatchedSettingsRequestFlags } from "./PatchedSettingsRequestFlags"; +import { + PatchedSettingsRequestFlagsFromJSON, + PatchedSettingsRequestFlagsToJSON, +} from "./PatchedSettingsRequestFlags"; + +/** + * Settings Serializer + * @export + * @interface PatchedSettingsRequest + */ +export interface PatchedSettingsRequest { + /** + * Configure how authentik should show avatars for users. + * @type {string} + * @memberof PatchedSettingsRequest + */ + avatars?: string; + /** + * Enable the ability for users to change their name. + * @type {boolean} + * @memberof PatchedSettingsRequest + */ + defaultUserChangeName?: boolean; + /** + * Enable the ability for users to change their email address. + * @type {boolean} + * @memberof PatchedSettingsRequest + */ + defaultUserChangeEmail?: boolean; + /** + * Enable the ability for users to change their username. + * @type {boolean} + * @memberof PatchedSettingsRequest + */ + defaultUserChangeUsername?: boolean; + /** + * Events will be deleted after this duration.(Format: weeks=3;days=2;hours=3,seconds=2). + * @type {string} + * @memberof PatchedSettingsRequest + */ + eventRetention?: string; + /** + * Reputation cannot decrease lower than this value. Zero or negative. + * @type {number} + * @memberof PatchedSettingsRequest + */ + reputationLowerLimit?: number; + /** + * Reputation cannot increase higher than this value. Zero or positive. + * @type {number} + * @memberof PatchedSettingsRequest + */ + reputationUpperLimit?: number; + /** + * + * @type {any} + * @memberof PatchedSettingsRequest + */ + footerLinks?: any | null; + /** + * When enabled, all the events caused by a user will be deleted upon the user's deletion. + * @type {boolean} + * @memberof PatchedSettingsRequest + */ + gdprCompliance?: boolean; + /** + * Globally enable/disable impersonation. + * @type {boolean} + * @memberof PatchedSettingsRequest + */ + impersonation?: boolean; + /** + * Require administrators to provide a reason for impersonating a user. + * @type {boolean} + * @memberof PatchedSettingsRequest + */ + impersonationRequireReason?: boolean; + /** + * Default token duration + * @type {string} + * @memberof PatchedSettingsRequest + */ + defaultTokenDuration?: string; + /** + * Default token length + * @type {number} + * @memberof PatchedSettingsRequest + */ + defaultTokenLength?: number; + /** + * Default page size for API responses, if no size was requested. + * @type {number} + * @memberof PatchedSettingsRequest + */ + paginationDefaultPageSize?: number; + /** + * Maximum page size + * @type {number} + * @memberof PatchedSettingsRequest + */ + paginationMaxPageSize?: number; + /** + * + * @type {PatchedSettingsRequestFlags} + * @memberof PatchedSettingsRequest + */ + flags?: PatchedSettingsRequestFlags; +} + +/** + * Check if a given object implements the PatchedSettingsRequest interface. + */ +export function instanceOfPatchedSettingsRequest(value: object): value is PatchedSettingsRequest { + return true; +} + +export function PatchedSettingsRequestFromJSON(json: any): PatchedSettingsRequest { + return PatchedSettingsRequestFromJSONTyped(json, false); +} + +export function PatchedSettingsRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedSettingsRequest { + if (json == null) { + return json; + } + return { + avatars: json["avatars"] == null ? undefined : json["avatars"], + defaultUserChangeName: + json["default_user_change_name"] == null ? undefined : json["default_user_change_name"], + defaultUserChangeEmail: + json["default_user_change_email"] == null + ? undefined + : json["default_user_change_email"], + defaultUserChangeUsername: + json["default_user_change_username"] == null + ? undefined + : json["default_user_change_username"], + eventRetention: json["event_retention"] == null ? undefined : json["event_retention"], + reputationLowerLimit: + json["reputation_lower_limit"] == null ? undefined : json["reputation_lower_limit"], + reputationUpperLimit: + json["reputation_upper_limit"] == null ? undefined : json["reputation_upper_limit"], + footerLinks: json["footer_links"] == null ? undefined : json["footer_links"], + gdprCompliance: json["gdpr_compliance"] == null ? undefined : json["gdpr_compliance"], + impersonation: json["impersonation"] == null ? undefined : json["impersonation"], + impersonationRequireReason: + json["impersonation_require_reason"] == null + ? undefined + : json["impersonation_require_reason"], + defaultTokenDuration: + json["default_token_duration"] == null ? undefined : json["default_token_duration"], + defaultTokenLength: + json["default_token_length"] == null ? undefined : json["default_token_length"], + paginationDefaultPageSize: + json["pagination_default_page_size"] == null + ? undefined + : json["pagination_default_page_size"], + paginationMaxPageSize: + json["pagination_max_page_size"] == null ? undefined : json["pagination_max_page_size"], + flags: + json["flags"] == null ? undefined : PatchedSettingsRequestFlagsFromJSON(json["flags"]), + }; +} + +export function PatchedSettingsRequestToJSON(json: any): PatchedSettingsRequest { + return PatchedSettingsRequestToJSONTyped(json, false); +} + +export function PatchedSettingsRequestToJSONTyped( + value?: PatchedSettingsRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + avatars: value["avatars"], + default_user_change_name: value["defaultUserChangeName"], + default_user_change_email: value["defaultUserChangeEmail"], + default_user_change_username: value["defaultUserChangeUsername"], + event_retention: value["eventRetention"], + reputation_lower_limit: value["reputationLowerLimit"], + reputation_upper_limit: value["reputationUpperLimit"], + footer_links: value["footerLinks"], + gdpr_compliance: value["gdprCompliance"], + impersonation: value["impersonation"], + impersonation_require_reason: value["impersonationRequireReason"], + default_token_duration: value["defaultTokenDuration"], + default_token_length: value["defaultTokenLength"], + pagination_default_page_size: value["paginationDefaultPageSize"], + pagination_max_page_size: value["paginationMaxPageSize"], + flags: PatchedSettingsRequestFlagsToJSON(value["flags"]), + }; +} diff --git a/packages/client-ts/src/models/PatchedSettingsRequestFlags.ts b/packages/client-ts/src/models/PatchedSettingsRequestFlags.ts new file mode 100644 index 0000000000..2e961203af --- /dev/null +++ b/packages/client-ts/src/models/PatchedSettingsRequestFlags.ts @@ -0,0 +1,104 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + * @interface PatchedSettingsRequestFlags + */ +export interface PatchedSettingsRequestFlags { + /** + * Configure if applications without any policy/group/user bindings should be accessible to any user. + * @type {boolean} + * @memberof PatchedSettingsRequestFlags + */ + coreDefaultAppAccess: boolean; + /** + * Include additional information in audit logs, may incur a performance penalty. + * @type {boolean} + * @memberof PatchedSettingsRequestFlags + */ + enterpriseAuditIncludeExpandedDiff: boolean; + /** + * Upon successful authentication, re-start authentication in other open tabs. + * @type {boolean} + * @memberof PatchedSettingsRequestFlags + */ + flowsContinuousLogin: boolean; + /** + * Refresh other tabs after successful authentication. + * @type {boolean} + * @memberof PatchedSettingsRequestFlags + * @deprecated + */ + flowsRefreshOthers: boolean; +} + +/** + * Check if a given object implements the PatchedSettingsRequestFlags interface. + */ +export function instanceOfPatchedSettingsRequestFlags( + value: object, +): value is PatchedSettingsRequestFlags { + if (!("coreDefaultAppAccess" in value) || value["coreDefaultAppAccess"] === undefined) + return false; + if ( + !("enterpriseAuditIncludeExpandedDiff" in value) || + value["enterpriseAuditIncludeExpandedDiff"] === undefined + ) + return false; + if (!("flowsContinuousLogin" in value) || value["flowsContinuousLogin"] === undefined) + return false; + if (!("flowsRefreshOthers" in value) || value["flowsRefreshOthers"] === undefined) return false; + return true; +} + +export function PatchedSettingsRequestFlagsFromJSON(json: any): PatchedSettingsRequestFlags { + return PatchedSettingsRequestFlagsFromJSONTyped(json, false); +} + +export function PatchedSettingsRequestFlagsFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedSettingsRequestFlags { + if (json == null) { + return json; + } + return { + coreDefaultAppAccess: json["core_default_app_access"], + enterpriseAuditIncludeExpandedDiff: json["enterprise_audit_include_expanded_diff"], + flowsContinuousLogin: json["flows_continuous_login"], + flowsRefreshOthers: json["flows_refresh_others"], + }; +} + +export function PatchedSettingsRequestFlagsToJSON(json: any): PatchedSettingsRequestFlags { + return PatchedSettingsRequestFlagsToJSONTyped(json, false); +} + +export function PatchedSettingsRequestFlagsToJSONTyped( + value?: PatchedSettingsRequestFlags | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + core_default_app_access: value["coreDefaultAppAccess"], + enterprise_audit_include_expanded_diff: value["enterpriseAuditIncludeExpandedDiff"], + flows_continuous_login: value["flowsContinuousLogin"], + flows_refresh_others: value["flowsRefreshOthers"], + }; +} diff --git a/packages/client-ts/src/models/PatchedSourceStageRequest.ts b/packages/client-ts/src/models/PatchedSourceStageRequest.ts new file mode 100644 index 0000000000..3ad041ba18 --- /dev/null +++ b/packages/client-ts/src/models/PatchedSourceStageRequest.ts @@ -0,0 +1,85 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * SourceStage Serializer + * @export + * @interface PatchedSourceStageRequest + */ +export interface PatchedSourceStageRequest { + /** + * + * @type {string} + * @memberof PatchedSourceStageRequest + */ + name?: string; + /** + * + * @type {string} + * @memberof PatchedSourceStageRequest + */ + source?: string; + /** + * Amount of time a user can take to return from the source to continue the flow (Format: hours=-1;minutes=-2;seconds=-3) + * @type {string} + * @memberof PatchedSourceStageRequest + */ + resumeTimeout?: string; +} + +/** + * Check if a given object implements the PatchedSourceStageRequest interface. + */ +export function instanceOfPatchedSourceStageRequest( + value: object, +): value is PatchedSourceStageRequest { + return true; +} + +export function PatchedSourceStageRequestFromJSON(json: any): PatchedSourceStageRequest { + return PatchedSourceStageRequestFromJSONTyped(json, false); +} + +export function PatchedSourceStageRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedSourceStageRequest { + if (json == null) { + return json; + } + return { + name: json["name"] == null ? undefined : json["name"], + source: json["source"] == null ? undefined : json["source"], + resumeTimeout: json["resume_timeout"] == null ? undefined : json["resume_timeout"], + }; +} + +export function PatchedSourceStageRequestToJSON(json: any): PatchedSourceStageRequest { + return PatchedSourceStageRequestToJSONTyped(json, false); +} + +export function PatchedSourceStageRequestToJSONTyped( + value?: PatchedSourceStageRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + source: value["source"], + resume_timeout: value["resumeTimeout"], + }; +} diff --git a/packages/client-ts/src/models/PatchedStaticDeviceRequest.ts b/packages/client-ts/src/models/PatchedStaticDeviceRequest.ts new file mode 100644 index 0000000000..03ce287cb7 --- /dev/null +++ b/packages/client-ts/src/models/PatchedStaticDeviceRequest.ts @@ -0,0 +1,69 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Serializer for static authenticator devices + * @export + * @interface PatchedStaticDeviceRequest + */ +export interface PatchedStaticDeviceRequest { + /** + * The human-readable name of this device. + * @type {string} + * @memberof PatchedStaticDeviceRequest + */ + name?: string; +} + +/** + * Check if a given object implements the PatchedStaticDeviceRequest interface. + */ +export function instanceOfPatchedStaticDeviceRequest( + value: object, +): value is PatchedStaticDeviceRequest { + return true; +} + +export function PatchedStaticDeviceRequestFromJSON(json: any): PatchedStaticDeviceRequest { + return PatchedStaticDeviceRequestFromJSONTyped(json, false); +} + +export function PatchedStaticDeviceRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedStaticDeviceRequest { + if (json == null) { + return json; + } + return { + name: json["name"] == null ? undefined : json["name"], + }; +} + +export function PatchedStaticDeviceRequestToJSON(json: any): PatchedStaticDeviceRequest { + return PatchedStaticDeviceRequestToJSONTyped(json, false); +} + +export function PatchedStaticDeviceRequestToJSONTyped( + value?: PatchedStaticDeviceRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + }; +} diff --git a/packages/client-ts/src/models/PatchedTOTPDeviceRequest.ts b/packages/client-ts/src/models/PatchedTOTPDeviceRequest.ts new file mode 100644 index 0000000000..1f785f6c08 --- /dev/null +++ b/packages/client-ts/src/models/PatchedTOTPDeviceRequest.ts @@ -0,0 +1,69 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Serializer for totp authenticator devices + * @export + * @interface PatchedTOTPDeviceRequest + */ +export interface PatchedTOTPDeviceRequest { + /** + * The human-readable name of this device. + * @type {string} + * @memberof PatchedTOTPDeviceRequest + */ + name?: string; +} + +/** + * Check if a given object implements the PatchedTOTPDeviceRequest interface. + */ +export function instanceOfPatchedTOTPDeviceRequest( + value: object, +): value is PatchedTOTPDeviceRequest { + return true; +} + +export function PatchedTOTPDeviceRequestFromJSON(json: any): PatchedTOTPDeviceRequest { + return PatchedTOTPDeviceRequestFromJSONTyped(json, false); +} + +export function PatchedTOTPDeviceRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedTOTPDeviceRequest { + if (json == null) { + return json; + } + return { + name: json["name"] == null ? undefined : json["name"], + }; +} + +export function PatchedTOTPDeviceRequestToJSON(json: any): PatchedTOTPDeviceRequest { + return PatchedTOTPDeviceRequestToJSONTyped(json, false); +} + +export function PatchedTOTPDeviceRequestToJSONTyped( + value?: PatchedTOTPDeviceRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + }; +} diff --git a/packages/client-ts/src/models/PatchedTelegramSourcePropertyMappingRequest.ts b/packages/client-ts/src/models/PatchedTelegramSourcePropertyMappingRequest.ts new file mode 100644 index 0000000000..5e3a306d9e --- /dev/null +++ b/packages/client-ts/src/models/PatchedTelegramSourcePropertyMappingRequest.ts @@ -0,0 +1,89 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * TelegramSourcePropertyMapping Serializer + * @export + * @interface PatchedTelegramSourcePropertyMappingRequest + */ +export interface PatchedTelegramSourcePropertyMappingRequest { + /** + * Objects that are managed by authentik. These objects are created and updated automatically. This flag only indicates that an object can be overwritten by migrations. You can still modify the objects via the API, but expect changes to be overwritten in a later update. + * @type {string} + * @memberof PatchedTelegramSourcePropertyMappingRequest + */ + managed?: string | null; + /** + * + * @type {string} + * @memberof PatchedTelegramSourcePropertyMappingRequest + */ + name?: string; + /** + * + * @type {string} + * @memberof PatchedTelegramSourcePropertyMappingRequest + */ + expression?: string; +} + +/** + * Check if a given object implements the PatchedTelegramSourcePropertyMappingRequest interface. + */ +export function instanceOfPatchedTelegramSourcePropertyMappingRequest( + value: object, +): value is PatchedTelegramSourcePropertyMappingRequest { + return true; +} + +export function PatchedTelegramSourcePropertyMappingRequestFromJSON( + json: any, +): PatchedTelegramSourcePropertyMappingRequest { + return PatchedTelegramSourcePropertyMappingRequestFromJSONTyped(json, false); +} + +export function PatchedTelegramSourcePropertyMappingRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedTelegramSourcePropertyMappingRequest { + if (json == null) { + return json; + } + return { + managed: json["managed"] == null ? undefined : json["managed"], + name: json["name"] == null ? undefined : json["name"], + expression: json["expression"] == null ? undefined : json["expression"], + }; +} + +export function PatchedTelegramSourcePropertyMappingRequestToJSON( + json: any, +): PatchedTelegramSourcePropertyMappingRequest { + return PatchedTelegramSourcePropertyMappingRequestToJSONTyped(json, false); +} + +export function PatchedTelegramSourcePropertyMappingRequestToJSONTyped( + value?: PatchedTelegramSourcePropertyMappingRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + managed: value["managed"], + name: value["name"], + expression: value["expression"], + }; +} diff --git a/packages/client-ts/src/models/PatchedTelegramSourceRequest.ts b/packages/client-ts/src/models/PatchedTelegramSourceRequest.ts new file mode 100644 index 0000000000..f375fe59af --- /dev/null +++ b/packages/client-ts/src/models/PatchedTelegramSourceRequest.ts @@ -0,0 +1,206 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { PolicyEngineMode } from "./PolicyEngineMode"; +import { PolicyEngineModeFromJSON, PolicyEngineModeToJSON } from "./PolicyEngineMode"; +import type { UserMatchingModeEnum } from "./UserMatchingModeEnum"; +import { UserMatchingModeEnumFromJSON, UserMatchingModeEnumToJSON } from "./UserMatchingModeEnum"; + +/** + * Source Serializer + * @export + * @interface PatchedTelegramSourceRequest + */ +export interface PatchedTelegramSourceRequest { + /** + * Source's display Name. + * @type {string} + * @memberof PatchedTelegramSourceRequest + */ + name?: string; + /** + * Internal source name, used in URLs. + * @type {string} + * @memberof PatchedTelegramSourceRequest + */ + slug?: string; + /** + * + * @type {boolean} + * @memberof PatchedTelegramSourceRequest + */ + enabled?: boolean; + /** + * When enabled, this source will be displayed as a prominent button on the login page, instead of a small icon. + * @type {boolean} + * @memberof PatchedTelegramSourceRequest + */ + promoted?: boolean; + /** + * Flow to use when authenticating existing users. + * @type {string} + * @memberof PatchedTelegramSourceRequest + */ + authenticationFlow?: string | null; + /** + * Flow to use when enrolling new users. + * @type {string} + * @memberof PatchedTelegramSourceRequest + */ + enrollmentFlow?: string | null; + /** + * + * @type {Array} + * @memberof PatchedTelegramSourceRequest + */ + userPropertyMappings?: Array; + /** + * + * @type {Array} + * @memberof PatchedTelegramSourceRequest + */ + groupPropertyMappings?: Array; + /** + * + * @type {PolicyEngineMode} + * @memberof PatchedTelegramSourceRequest + */ + policyEngineMode?: PolicyEngineMode; + /** + * How the source determines if an existing user should be authenticated or a new user enrolled. + * @type {UserMatchingModeEnum} + * @memberof PatchedTelegramSourceRequest + */ + userMatchingMode?: UserMatchingModeEnum; + /** + * + * @type {string} + * @memberof PatchedTelegramSourceRequest + */ + userPathTemplate?: string; + /** + * + * @type {string} + * @memberof PatchedTelegramSourceRequest + */ + icon?: string; + /** + * Telegram bot username + * @type {string} + * @memberof PatchedTelegramSourceRequest + */ + botUsername?: string; + /** + * Telegram bot token + * @type {string} + * @memberof PatchedTelegramSourceRequest + */ + botToken?: string; + /** + * Request access to send messages from your bot. + * @type {boolean} + * @memberof PatchedTelegramSourceRequest + */ + requestMessageAccess?: boolean; + /** + * Flow used before authentication. + * @type {string} + * @memberof PatchedTelegramSourceRequest + */ + preAuthenticationFlow?: string; +} + +/** + * Check if a given object implements the PatchedTelegramSourceRequest interface. + */ +export function instanceOfPatchedTelegramSourceRequest( + value: object, +): value is PatchedTelegramSourceRequest { + return true; +} + +export function PatchedTelegramSourceRequestFromJSON(json: any): PatchedTelegramSourceRequest { + return PatchedTelegramSourceRequestFromJSONTyped(json, false); +} + +export function PatchedTelegramSourceRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedTelegramSourceRequest { + if (json == null) { + return json; + } + return { + name: json["name"] == null ? undefined : json["name"], + slug: json["slug"] == null ? undefined : json["slug"], + enabled: json["enabled"] == null ? undefined : json["enabled"], + promoted: json["promoted"] == null ? undefined : json["promoted"], + authenticationFlow: + json["authentication_flow"] == null ? undefined : json["authentication_flow"], + enrollmentFlow: json["enrollment_flow"] == null ? undefined : json["enrollment_flow"], + userPropertyMappings: + json["user_property_mappings"] == null ? undefined : json["user_property_mappings"], + groupPropertyMappings: + json["group_property_mappings"] == null ? undefined : json["group_property_mappings"], + policyEngineMode: + json["policy_engine_mode"] == null + ? undefined + : PolicyEngineModeFromJSON(json["policy_engine_mode"]), + userMatchingMode: + json["user_matching_mode"] == null + ? undefined + : UserMatchingModeEnumFromJSON(json["user_matching_mode"]), + userPathTemplate: + json["user_path_template"] == null ? undefined : json["user_path_template"], + icon: json["icon"] == null ? undefined : json["icon"], + botUsername: json["bot_username"] == null ? undefined : json["bot_username"], + botToken: json["bot_token"] == null ? undefined : json["bot_token"], + requestMessageAccess: + json["request_message_access"] == null ? undefined : json["request_message_access"], + preAuthenticationFlow: + json["pre_authentication_flow"] == null ? undefined : json["pre_authentication_flow"], + }; +} + +export function PatchedTelegramSourceRequestToJSON(json: any): PatchedTelegramSourceRequest { + return PatchedTelegramSourceRequestToJSONTyped(json, false); +} + +export function PatchedTelegramSourceRequestToJSONTyped( + value?: PatchedTelegramSourceRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + slug: value["slug"], + enabled: value["enabled"], + promoted: value["promoted"], + authentication_flow: value["authenticationFlow"], + enrollment_flow: value["enrollmentFlow"], + user_property_mappings: value["userPropertyMappings"], + group_property_mappings: value["groupPropertyMappings"], + policy_engine_mode: PolicyEngineModeToJSON(value["policyEngineMode"]), + user_matching_mode: UserMatchingModeEnumToJSON(value["userMatchingMode"]), + user_path_template: value["userPathTemplate"], + icon: value["icon"], + bot_username: value["botUsername"], + bot_token: value["botToken"], + request_message_access: value["requestMessageAccess"], + pre_authentication_flow: value["preAuthenticationFlow"], + }; +} diff --git a/packages/client-ts/src/models/PatchedTenantRequest.ts b/packages/client-ts/src/models/PatchedTenantRequest.ts new file mode 100644 index 0000000000..a4f86001de --- /dev/null +++ b/packages/client-ts/src/models/PatchedTenantRequest.ts @@ -0,0 +1,83 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Tenant Serializer + * @export + * @interface PatchedTenantRequest + */ +export interface PatchedTenantRequest { + /** + * + * @type {string} + * @memberof PatchedTenantRequest + */ + schemaName?: string; + /** + * + * @type {string} + * @memberof PatchedTenantRequest + */ + name?: string; + /** + * + * @type {boolean} + * @memberof PatchedTenantRequest + */ + ready?: boolean; +} + +/** + * Check if a given object implements the PatchedTenantRequest interface. + */ +export function instanceOfPatchedTenantRequest(value: object): value is PatchedTenantRequest { + return true; +} + +export function PatchedTenantRequestFromJSON(json: any): PatchedTenantRequest { + return PatchedTenantRequestFromJSONTyped(json, false); +} + +export function PatchedTenantRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedTenantRequest { + if (json == null) { + return json; + } + return { + schemaName: json["schema_name"] == null ? undefined : json["schema_name"], + name: json["name"] == null ? undefined : json["name"], + ready: json["ready"] == null ? undefined : json["ready"], + }; +} + +export function PatchedTenantRequestToJSON(json: any): PatchedTenantRequest { + return PatchedTenantRequestToJSONTyped(json, false); +} + +export function PatchedTenantRequestToJSONTyped( + value?: PatchedTenantRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + schema_name: value["schemaName"], + name: value["name"], + ready: value["ready"], + }; +} diff --git a/packages/client-ts/src/models/PatchedTokenRequest.ts b/packages/client-ts/src/models/PatchedTokenRequest.ts new file mode 100644 index 0000000000..be29146ab6 --- /dev/null +++ b/packages/client-ts/src/models/PatchedTokenRequest.ts @@ -0,0 +1,118 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { IntentEnum } from "./IntentEnum"; +import { IntentEnumFromJSON, IntentEnumToJSON } from "./IntentEnum"; + +/** + * Token Serializer + * @export + * @interface PatchedTokenRequest + */ +export interface PatchedTokenRequest { + /** + * Objects that are managed by authentik. These objects are created and updated automatically. This flag only indicates that an object can be overwritten by migrations. You can still modify the objects via the API, but expect changes to be overwritten in a later update. + * @type {string} + * @memberof PatchedTokenRequest + */ + managed?: string | null; + /** + * + * @type {string} + * @memberof PatchedTokenRequest + */ + identifier?: string; + /** + * + * @type {IntentEnum} + * @memberof PatchedTokenRequest + */ + intent?: IntentEnum; + /** + * + * @type {number} + * @memberof PatchedTokenRequest + */ + user?: number; + /** + * + * @type {string} + * @memberof PatchedTokenRequest + */ + description?: string; + /** + * + * @type {Date} + * @memberof PatchedTokenRequest + */ + expires?: Date | null; + /** + * + * @type {boolean} + * @memberof PatchedTokenRequest + */ + expiring?: boolean; +} + +/** + * Check if a given object implements the PatchedTokenRequest interface. + */ +export function instanceOfPatchedTokenRequest(value: object): value is PatchedTokenRequest { + return true; +} + +export function PatchedTokenRequestFromJSON(json: any): PatchedTokenRequest { + return PatchedTokenRequestFromJSONTyped(json, false); +} + +export function PatchedTokenRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedTokenRequest { + if (json == null) { + return json; + } + return { + managed: json["managed"] == null ? undefined : json["managed"], + identifier: json["identifier"] == null ? undefined : json["identifier"], + intent: json["intent"] == null ? undefined : IntentEnumFromJSON(json["intent"]), + user: json["user"] == null ? undefined : json["user"], + description: json["description"] == null ? undefined : json["description"], + expires: json["expires"] == null ? undefined : new Date(json["expires"]), + expiring: json["expiring"] == null ? undefined : json["expiring"], + }; +} + +export function PatchedTokenRequestToJSON(json: any): PatchedTokenRequest { + return PatchedTokenRequestToJSONTyped(json, false); +} + +export function PatchedTokenRequestToJSONTyped( + value?: PatchedTokenRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + managed: value["managed"], + identifier: value["identifier"], + intent: IntentEnumToJSON(value["intent"]), + user: value["user"], + description: value["description"], + expires: value["expires"] == null ? value["expires"] : value["expires"].toISOString(), + expiring: value["expiring"], + }; +} diff --git a/packages/client-ts/src/models/PatchedUniquePasswordPolicyRequest.ts b/packages/client-ts/src/models/PatchedUniquePasswordPolicyRequest.ts new file mode 100644 index 0000000000..5fe863bb3c --- /dev/null +++ b/packages/client-ts/src/models/PatchedUniquePasswordPolicyRequest.ts @@ -0,0 +1,98 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Password Uniqueness Policy Serializer + * @export + * @interface PatchedUniquePasswordPolicyRequest + */ +export interface PatchedUniquePasswordPolicyRequest { + /** + * + * @type {string} + * @memberof PatchedUniquePasswordPolicyRequest + */ + name?: string; + /** + * When this option is enabled, all executions of this policy will be logged. By default, only execution errors are logged. + * @type {boolean} + * @memberof PatchedUniquePasswordPolicyRequest + */ + executionLogging?: boolean; + /** + * Field key to check, field keys defined in Prompt stages are available. + * @type {string} + * @memberof PatchedUniquePasswordPolicyRequest + */ + passwordField?: string; + /** + * Number of passwords to check against. + * @type {number} + * @memberof PatchedUniquePasswordPolicyRequest + */ + numHistoricalPasswords?: number; +} + +/** + * Check if a given object implements the PatchedUniquePasswordPolicyRequest interface. + */ +export function instanceOfPatchedUniquePasswordPolicyRequest( + value: object, +): value is PatchedUniquePasswordPolicyRequest { + return true; +} + +export function PatchedUniquePasswordPolicyRequestFromJSON( + json: any, +): PatchedUniquePasswordPolicyRequest { + return PatchedUniquePasswordPolicyRequestFromJSONTyped(json, false); +} + +export function PatchedUniquePasswordPolicyRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedUniquePasswordPolicyRequest { + if (json == null) { + return json; + } + return { + name: json["name"] == null ? undefined : json["name"], + executionLogging: json["execution_logging"] == null ? undefined : json["execution_logging"], + passwordField: json["password_field"] == null ? undefined : json["password_field"], + numHistoricalPasswords: + json["num_historical_passwords"] == null ? undefined : json["num_historical_passwords"], + }; +} + +export function PatchedUniquePasswordPolicyRequestToJSON( + json: any, +): PatchedUniquePasswordPolicyRequest { + return PatchedUniquePasswordPolicyRequestToJSONTyped(json, false); +} + +export function PatchedUniquePasswordPolicyRequestToJSONTyped( + value?: PatchedUniquePasswordPolicyRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + execution_logging: value["executionLogging"], + password_field: value["passwordField"], + num_historical_passwords: value["numHistoricalPasswords"], + }; +} diff --git a/packages/client-ts/src/models/PatchedUserDeleteStageRequest.ts b/packages/client-ts/src/models/PatchedUserDeleteStageRequest.ts new file mode 100644 index 0000000000..2c51300b90 --- /dev/null +++ b/packages/client-ts/src/models/PatchedUserDeleteStageRequest.ts @@ -0,0 +1,69 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * UserDeleteStage Serializer + * @export + * @interface PatchedUserDeleteStageRequest + */ +export interface PatchedUserDeleteStageRequest { + /** + * + * @type {string} + * @memberof PatchedUserDeleteStageRequest + */ + name?: string; +} + +/** + * Check if a given object implements the PatchedUserDeleteStageRequest interface. + */ +export function instanceOfPatchedUserDeleteStageRequest( + value: object, +): value is PatchedUserDeleteStageRequest { + return true; +} + +export function PatchedUserDeleteStageRequestFromJSON(json: any): PatchedUserDeleteStageRequest { + return PatchedUserDeleteStageRequestFromJSONTyped(json, false); +} + +export function PatchedUserDeleteStageRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedUserDeleteStageRequest { + if (json == null) { + return json; + } + return { + name: json["name"] == null ? undefined : json["name"], + }; +} + +export function PatchedUserDeleteStageRequestToJSON(json: any): PatchedUserDeleteStageRequest { + return PatchedUserDeleteStageRequestToJSONTyped(json, false); +} + +export function PatchedUserDeleteStageRequestToJSONTyped( + value?: PatchedUserDeleteStageRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + }; +} diff --git a/packages/client-ts/src/models/PatchedUserKerberosSourceConnectionRequest.ts b/packages/client-ts/src/models/PatchedUserKerberosSourceConnectionRequest.ts new file mode 100644 index 0000000000..cfda147dfd --- /dev/null +++ b/packages/client-ts/src/models/PatchedUserKerberosSourceConnectionRequest.ts @@ -0,0 +1,89 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * User source connection + * @export + * @interface PatchedUserKerberosSourceConnectionRequest + */ +export interface PatchedUserKerberosSourceConnectionRequest { + /** + * + * @type {number} + * @memberof PatchedUserKerberosSourceConnectionRequest + */ + user?: number; + /** + * + * @type {string} + * @memberof PatchedUserKerberosSourceConnectionRequest + */ + source?: string; + /** + * + * @type {string} + * @memberof PatchedUserKerberosSourceConnectionRequest + */ + identifier?: string; +} + +/** + * Check if a given object implements the PatchedUserKerberosSourceConnectionRequest interface. + */ +export function instanceOfPatchedUserKerberosSourceConnectionRequest( + value: object, +): value is PatchedUserKerberosSourceConnectionRequest { + return true; +} + +export function PatchedUserKerberosSourceConnectionRequestFromJSON( + json: any, +): PatchedUserKerberosSourceConnectionRequest { + return PatchedUserKerberosSourceConnectionRequestFromJSONTyped(json, false); +} + +export function PatchedUserKerberosSourceConnectionRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedUserKerberosSourceConnectionRequest { + if (json == null) { + return json; + } + return { + user: json["user"] == null ? undefined : json["user"], + source: json["source"] == null ? undefined : json["source"], + identifier: json["identifier"] == null ? undefined : json["identifier"], + }; +} + +export function PatchedUserKerberosSourceConnectionRequestToJSON( + json: any, +): PatchedUserKerberosSourceConnectionRequest { + return PatchedUserKerberosSourceConnectionRequestToJSONTyped(json, false); +} + +export function PatchedUserKerberosSourceConnectionRequestToJSONTyped( + value?: PatchedUserKerberosSourceConnectionRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + user: value["user"], + source: value["source"], + identifier: value["identifier"], + }; +} diff --git a/packages/client-ts/src/models/PatchedUserLDAPSourceConnectionRequest.ts b/packages/client-ts/src/models/PatchedUserLDAPSourceConnectionRequest.ts new file mode 100644 index 0000000000..0bd75f8288 --- /dev/null +++ b/packages/client-ts/src/models/PatchedUserLDAPSourceConnectionRequest.ts @@ -0,0 +1,89 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * User source connection + * @export + * @interface PatchedUserLDAPSourceConnectionRequest + */ +export interface PatchedUserLDAPSourceConnectionRequest { + /** + * + * @type {number} + * @memberof PatchedUserLDAPSourceConnectionRequest + */ + user?: number; + /** + * + * @type {string} + * @memberof PatchedUserLDAPSourceConnectionRequest + */ + source?: string; + /** + * + * @type {string} + * @memberof PatchedUserLDAPSourceConnectionRequest + */ + identifier?: string; +} + +/** + * Check if a given object implements the PatchedUserLDAPSourceConnectionRequest interface. + */ +export function instanceOfPatchedUserLDAPSourceConnectionRequest( + value: object, +): value is PatchedUserLDAPSourceConnectionRequest { + return true; +} + +export function PatchedUserLDAPSourceConnectionRequestFromJSON( + json: any, +): PatchedUserLDAPSourceConnectionRequest { + return PatchedUserLDAPSourceConnectionRequestFromJSONTyped(json, false); +} + +export function PatchedUserLDAPSourceConnectionRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedUserLDAPSourceConnectionRequest { + if (json == null) { + return json; + } + return { + user: json["user"] == null ? undefined : json["user"], + source: json["source"] == null ? undefined : json["source"], + identifier: json["identifier"] == null ? undefined : json["identifier"], + }; +} + +export function PatchedUserLDAPSourceConnectionRequestToJSON( + json: any, +): PatchedUserLDAPSourceConnectionRequest { + return PatchedUserLDAPSourceConnectionRequestToJSONTyped(json, false); +} + +export function PatchedUserLDAPSourceConnectionRequestToJSONTyped( + value?: PatchedUserLDAPSourceConnectionRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + user: value["user"], + source: value["source"], + identifier: value["identifier"], + }; +} diff --git a/packages/client-ts/src/models/PatchedUserLoginStageRequest.ts b/packages/client-ts/src/models/PatchedUserLoginStageRequest.ts new file mode 100644 index 0000000000..595babf5dc --- /dev/null +++ b/packages/client-ts/src/models/PatchedUserLoginStageRequest.ts @@ -0,0 +1,130 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { GeoipBindingEnum } from "./GeoipBindingEnum"; +import { GeoipBindingEnumFromJSON, GeoipBindingEnumToJSON } from "./GeoipBindingEnum"; +import type { NetworkBindingEnum } from "./NetworkBindingEnum"; +import { NetworkBindingEnumFromJSON, NetworkBindingEnumToJSON } from "./NetworkBindingEnum"; + +/** + * UserLoginStage Serializer + * @export + * @interface PatchedUserLoginStageRequest + */ +export interface PatchedUserLoginStageRequest { + /** + * + * @type {string} + * @memberof PatchedUserLoginStageRequest + */ + name?: string; + /** + * Determines how long a session lasts. Default of 0 means that the sessions lasts until the browser is closed. (Format: hours=-1;minutes=-2;seconds=-3) + * @type {string} + * @memberof PatchedUserLoginStageRequest + */ + sessionDuration?: string; + /** + * Terminate all other sessions of the user logging in. + * @type {boolean} + * @memberof PatchedUserLoginStageRequest + */ + terminateOtherSessions?: boolean; + /** + * Offset the session will be extended by when the user picks the remember me option. Default of 0 means that the remember me option will not be shown. (Format: hours=-1;minutes=-2;seconds=-3) + * @type {string} + * @memberof PatchedUserLoginStageRequest + */ + rememberMeOffset?: string; + /** + * Bind sessions created by this stage to the configured network + * @type {NetworkBindingEnum} + * @memberof PatchedUserLoginStageRequest + */ + networkBinding?: NetworkBindingEnum; + /** + * Bind sessions created by this stage to the configured GeoIP location + * @type {GeoipBindingEnum} + * @memberof PatchedUserLoginStageRequest + */ + geoipBinding?: GeoipBindingEnum; + /** + * When set to a non-zero value, authentik will save a cookie with a longer expiry,to remember the device the user is logging in from. (Format: hours=-1;minutes=-2;seconds=-3) + * @type {string} + * @memberof PatchedUserLoginStageRequest + */ + rememberDevice?: string; +} + +/** + * Check if a given object implements the PatchedUserLoginStageRequest interface. + */ +export function instanceOfPatchedUserLoginStageRequest( + value: object, +): value is PatchedUserLoginStageRequest { + return true; +} + +export function PatchedUserLoginStageRequestFromJSON(json: any): PatchedUserLoginStageRequest { + return PatchedUserLoginStageRequestFromJSONTyped(json, false); +} + +export function PatchedUserLoginStageRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedUserLoginStageRequest { + if (json == null) { + return json; + } + return { + name: json["name"] == null ? undefined : json["name"], + sessionDuration: json["session_duration"] == null ? undefined : json["session_duration"], + terminateOtherSessions: + json["terminate_other_sessions"] == null ? undefined : json["terminate_other_sessions"], + rememberMeOffset: + json["remember_me_offset"] == null ? undefined : json["remember_me_offset"], + networkBinding: + json["network_binding"] == null + ? undefined + : NetworkBindingEnumFromJSON(json["network_binding"]), + geoipBinding: + json["geoip_binding"] == null + ? undefined + : GeoipBindingEnumFromJSON(json["geoip_binding"]), + rememberDevice: json["remember_device"] == null ? undefined : json["remember_device"], + }; +} + +export function PatchedUserLoginStageRequestToJSON(json: any): PatchedUserLoginStageRequest { + return PatchedUserLoginStageRequestToJSONTyped(json, false); +} + +export function PatchedUserLoginStageRequestToJSONTyped( + value?: PatchedUserLoginStageRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + session_duration: value["sessionDuration"], + terminate_other_sessions: value["terminateOtherSessions"], + remember_me_offset: value["rememberMeOffset"], + network_binding: NetworkBindingEnumToJSON(value["networkBinding"]), + geoip_binding: GeoipBindingEnumToJSON(value["geoipBinding"]), + remember_device: value["rememberDevice"], + }; +} diff --git a/packages/client-ts/src/models/PatchedUserLogoutStageRequest.ts b/packages/client-ts/src/models/PatchedUserLogoutStageRequest.ts new file mode 100644 index 0000000000..558d6d2fe3 --- /dev/null +++ b/packages/client-ts/src/models/PatchedUserLogoutStageRequest.ts @@ -0,0 +1,69 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * UserLogoutStage Serializer + * @export + * @interface PatchedUserLogoutStageRequest + */ +export interface PatchedUserLogoutStageRequest { + /** + * + * @type {string} + * @memberof PatchedUserLogoutStageRequest + */ + name?: string; +} + +/** + * Check if a given object implements the PatchedUserLogoutStageRequest interface. + */ +export function instanceOfPatchedUserLogoutStageRequest( + value: object, +): value is PatchedUserLogoutStageRequest { + return true; +} + +export function PatchedUserLogoutStageRequestFromJSON(json: any): PatchedUserLogoutStageRequest { + return PatchedUserLogoutStageRequestFromJSONTyped(json, false); +} + +export function PatchedUserLogoutStageRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedUserLogoutStageRequest { + if (json == null) { + return json; + } + return { + name: json["name"] == null ? undefined : json["name"], + }; +} + +export function PatchedUserLogoutStageRequestToJSON(json: any): PatchedUserLogoutStageRequest { + return PatchedUserLogoutStageRequestToJSONTyped(json, false); +} + +export function PatchedUserLogoutStageRequestToJSONTyped( + value?: PatchedUserLogoutStageRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + }; +} diff --git a/packages/client-ts/src/models/PatchedUserOAuthSourceConnectionRequest.ts b/packages/client-ts/src/models/PatchedUserOAuthSourceConnectionRequest.ts new file mode 100644 index 0000000000..66fa769d08 --- /dev/null +++ b/packages/client-ts/src/models/PatchedUserOAuthSourceConnectionRequest.ts @@ -0,0 +1,105 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * User source connection + * @export + * @interface PatchedUserOAuthSourceConnectionRequest + */ +export interface PatchedUserOAuthSourceConnectionRequest { + /** + * + * @type {number} + * @memberof PatchedUserOAuthSourceConnectionRequest + */ + user?: number; + /** + * + * @type {string} + * @memberof PatchedUserOAuthSourceConnectionRequest + */ + source?: string; + /** + * + * @type {string} + * @memberof PatchedUserOAuthSourceConnectionRequest + */ + identifier?: string; + /** + * + * @type {string} + * @memberof PatchedUserOAuthSourceConnectionRequest + */ + accessToken?: string | null; + /** + * + * @type {Date} + * @memberof PatchedUserOAuthSourceConnectionRequest + */ + expires?: Date; +} + +/** + * Check if a given object implements the PatchedUserOAuthSourceConnectionRequest interface. + */ +export function instanceOfPatchedUserOAuthSourceConnectionRequest( + value: object, +): value is PatchedUserOAuthSourceConnectionRequest { + return true; +} + +export function PatchedUserOAuthSourceConnectionRequestFromJSON( + json: any, +): PatchedUserOAuthSourceConnectionRequest { + return PatchedUserOAuthSourceConnectionRequestFromJSONTyped(json, false); +} + +export function PatchedUserOAuthSourceConnectionRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedUserOAuthSourceConnectionRequest { + if (json == null) { + return json; + } + return { + user: json["user"] == null ? undefined : json["user"], + source: json["source"] == null ? undefined : json["source"], + identifier: json["identifier"] == null ? undefined : json["identifier"], + accessToken: json["access_token"] == null ? undefined : json["access_token"], + expires: json["expires"] == null ? undefined : new Date(json["expires"]), + }; +} + +export function PatchedUserOAuthSourceConnectionRequestToJSON( + json: any, +): PatchedUserOAuthSourceConnectionRequest { + return PatchedUserOAuthSourceConnectionRequestToJSONTyped(json, false); +} + +export function PatchedUserOAuthSourceConnectionRequestToJSONTyped( + value?: PatchedUserOAuthSourceConnectionRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + user: value["user"], + source: value["source"], + identifier: value["identifier"], + access_token: value["accessToken"], + expires: value["expires"] == null ? value["expires"] : value["expires"].toISOString(), + }; +} diff --git a/packages/client-ts/src/models/PatchedUserPlexSourceConnectionRequest.ts b/packages/client-ts/src/models/PatchedUserPlexSourceConnectionRequest.ts new file mode 100644 index 0000000000..825ef3bd0f --- /dev/null +++ b/packages/client-ts/src/models/PatchedUserPlexSourceConnectionRequest.ts @@ -0,0 +1,97 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * User source connection + * @export + * @interface PatchedUserPlexSourceConnectionRequest + */ +export interface PatchedUserPlexSourceConnectionRequest { + /** + * + * @type {number} + * @memberof PatchedUserPlexSourceConnectionRequest + */ + user?: number; + /** + * + * @type {string} + * @memberof PatchedUserPlexSourceConnectionRequest + */ + source?: string; + /** + * + * @type {string} + * @memberof PatchedUserPlexSourceConnectionRequest + */ + identifier?: string; + /** + * + * @type {string} + * @memberof PatchedUserPlexSourceConnectionRequest + */ + plexToken?: string; +} + +/** + * Check if a given object implements the PatchedUserPlexSourceConnectionRequest interface. + */ +export function instanceOfPatchedUserPlexSourceConnectionRequest( + value: object, +): value is PatchedUserPlexSourceConnectionRequest { + return true; +} + +export function PatchedUserPlexSourceConnectionRequestFromJSON( + json: any, +): PatchedUserPlexSourceConnectionRequest { + return PatchedUserPlexSourceConnectionRequestFromJSONTyped(json, false); +} + +export function PatchedUserPlexSourceConnectionRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedUserPlexSourceConnectionRequest { + if (json == null) { + return json; + } + return { + user: json["user"] == null ? undefined : json["user"], + source: json["source"] == null ? undefined : json["source"], + identifier: json["identifier"] == null ? undefined : json["identifier"], + plexToken: json["plex_token"] == null ? undefined : json["plex_token"], + }; +} + +export function PatchedUserPlexSourceConnectionRequestToJSON( + json: any, +): PatchedUserPlexSourceConnectionRequest { + return PatchedUserPlexSourceConnectionRequestToJSONTyped(json, false); +} + +export function PatchedUserPlexSourceConnectionRequestToJSONTyped( + value?: PatchedUserPlexSourceConnectionRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + user: value["user"], + source: value["source"], + identifier: value["identifier"], + plex_token: value["plexToken"], + }; +} diff --git a/packages/client-ts/src/models/PatchedUserRequest.ts b/packages/client-ts/src/models/PatchedUserRequest.ts new file mode 100644 index 0000000000..8dd593ada2 --- /dev/null +++ b/packages/client-ts/src/models/PatchedUserRequest.ts @@ -0,0 +1,143 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { UserTypeEnum } from "./UserTypeEnum"; +import { UserTypeEnumFromJSON, UserTypeEnumToJSON } from "./UserTypeEnum"; + +/** + * User Serializer + * @export + * @interface PatchedUserRequest + */ +export interface PatchedUserRequest { + /** + * + * @type {string} + * @memberof PatchedUserRequest + */ + username?: string; + /** + * User's display name. + * @type {string} + * @memberof PatchedUserRequest + */ + name?: string; + /** + * Designates whether this user should be treated as active. Unselect this instead of deleting accounts. + * @type {boolean} + * @memberof PatchedUserRequest + */ + isActive?: boolean; + /** + * + * @type {Date} + * @memberof PatchedUserRequest + */ + lastLogin?: Date | null; + /** + * + * @type {Array} + * @memberof PatchedUserRequest + */ + groups?: Array; + /** + * + * @type {Array} + * @memberof PatchedUserRequest + */ + roles?: Array; + /** + * + * @type {string} + * @memberof PatchedUserRequest + */ + email?: string; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PatchedUserRequest + */ + attributes?: { [key: string]: any }; + /** + * + * @type {string} + * @memberof PatchedUserRequest + */ + path?: string; + /** + * + * @type {UserTypeEnum} + * @memberof PatchedUserRequest + */ + type?: UserTypeEnum; +} + +/** + * Check if a given object implements the PatchedUserRequest interface. + */ +export function instanceOfPatchedUserRequest(value: object): value is PatchedUserRequest { + return true; +} + +export function PatchedUserRequestFromJSON(json: any): PatchedUserRequest { + return PatchedUserRequestFromJSONTyped(json, false); +} + +export function PatchedUserRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedUserRequest { + if (json == null) { + return json; + } + return { + username: json["username"] == null ? undefined : json["username"], + name: json["name"] == null ? undefined : json["name"], + isActive: json["is_active"] == null ? undefined : json["is_active"], + lastLogin: json["last_login"] == null ? undefined : new Date(json["last_login"]), + groups: json["groups"] == null ? undefined : json["groups"], + roles: json["roles"] == null ? undefined : json["roles"], + email: json["email"] == null ? undefined : json["email"], + attributes: json["attributes"] == null ? undefined : json["attributes"], + path: json["path"] == null ? undefined : json["path"], + type: json["type"] == null ? undefined : UserTypeEnumFromJSON(json["type"]), + }; +} + +export function PatchedUserRequestToJSON(json: any): PatchedUserRequest { + return PatchedUserRequestToJSONTyped(json, false); +} + +export function PatchedUserRequestToJSONTyped( + value?: PatchedUserRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + username: value["username"], + name: value["name"], + is_active: value["isActive"], + last_login: + value["lastLogin"] == null ? value["lastLogin"] : value["lastLogin"].toISOString(), + groups: value["groups"], + roles: value["roles"], + email: value["email"], + attributes: value["attributes"], + path: value["path"], + type: UserTypeEnumToJSON(value["type"]), + }; +} diff --git a/packages/client-ts/src/models/PatchedUserSAMLSourceConnectionRequest.ts b/packages/client-ts/src/models/PatchedUserSAMLSourceConnectionRequest.ts new file mode 100644 index 0000000000..850e1cff44 --- /dev/null +++ b/packages/client-ts/src/models/PatchedUserSAMLSourceConnectionRequest.ts @@ -0,0 +1,89 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * User source connection + * @export + * @interface PatchedUserSAMLSourceConnectionRequest + */ +export interface PatchedUserSAMLSourceConnectionRequest { + /** + * + * @type {number} + * @memberof PatchedUserSAMLSourceConnectionRequest + */ + user?: number; + /** + * + * @type {string} + * @memberof PatchedUserSAMLSourceConnectionRequest + */ + source?: string; + /** + * + * @type {string} + * @memberof PatchedUserSAMLSourceConnectionRequest + */ + identifier?: string; +} + +/** + * Check if a given object implements the PatchedUserSAMLSourceConnectionRequest interface. + */ +export function instanceOfPatchedUserSAMLSourceConnectionRequest( + value: object, +): value is PatchedUserSAMLSourceConnectionRequest { + return true; +} + +export function PatchedUserSAMLSourceConnectionRequestFromJSON( + json: any, +): PatchedUserSAMLSourceConnectionRequest { + return PatchedUserSAMLSourceConnectionRequestFromJSONTyped(json, false); +} + +export function PatchedUserSAMLSourceConnectionRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedUserSAMLSourceConnectionRequest { + if (json == null) { + return json; + } + return { + user: json["user"] == null ? undefined : json["user"], + source: json["source"] == null ? undefined : json["source"], + identifier: json["identifier"] == null ? undefined : json["identifier"], + }; +} + +export function PatchedUserSAMLSourceConnectionRequestToJSON( + json: any, +): PatchedUserSAMLSourceConnectionRequest { + return PatchedUserSAMLSourceConnectionRequestToJSONTyped(json, false); +} + +export function PatchedUserSAMLSourceConnectionRequestToJSONTyped( + value?: PatchedUserSAMLSourceConnectionRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + user: value["user"], + source: value["source"], + identifier: value["identifier"], + }; +} diff --git a/packages/client-ts/src/models/PatchedUserSourceConnectionRequest.ts b/packages/client-ts/src/models/PatchedUserSourceConnectionRequest.ts new file mode 100644 index 0000000000..14a29c64c3 --- /dev/null +++ b/packages/client-ts/src/models/PatchedUserSourceConnectionRequest.ts @@ -0,0 +1,89 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * User source connection + * @export + * @interface PatchedUserSourceConnectionRequest + */ +export interface PatchedUserSourceConnectionRequest { + /** + * + * @type {number} + * @memberof PatchedUserSourceConnectionRequest + */ + user?: number; + /** + * + * @type {string} + * @memberof PatchedUserSourceConnectionRequest + */ + source?: string; + /** + * + * @type {string} + * @memberof PatchedUserSourceConnectionRequest + */ + identifier?: string; +} + +/** + * Check if a given object implements the PatchedUserSourceConnectionRequest interface. + */ +export function instanceOfPatchedUserSourceConnectionRequest( + value: object, +): value is PatchedUserSourceConnectionRequest { + return true; +} + +export function PatchedUserSourceConnectionRequestFromJSON( + json: any, +): PatchedUserSourceConnectionRequest { + return PatchedUserSourceConnectionRequestFromJSONTyped(json, false); +} + +export function PatchedUserSourceConnectionRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedUserSourceConnectionRequest { + if (json == null) { + return json; + } + return { + user: json["user"] == null ? undefined : json["user"], + source: json["source"] == null ? undefined : json["source"], + identifier: json["identifier"] == null ? undefined : json["identifier"], + }; +} + +export function PatchedUserSourceConnectionRequestToJSON( + json: any, +): PatchedUserSourceConnectionRequest { + return PatchedUserSourceConnectionRequestToJSONTyped(json, false); +} + +export function PatchedUserSourceConnectionRequestToJSONTyped( + value?: PatchedUserSourceConnectionRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + user: value["user"], + source: value["source"], + identifier: value["identifier"], + }; +} diff --git a/packages/client-ts/src/models/PatchedUserTelegramSourceConnectionRequest.ts b/packages/client-ts/src/models/PatchedUserTelegramSourceConnectionRequest.ts new file mode 100644 index 0000000000..4887dcd16e --- /dev/null +++ b/packages/client-ts/src/models/PatchedUserTelegramSourceConnectionRequest.ts @@ -0,0 +1,89 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * User source connection + * @export + * @interface PatchedUserTelegramSourceConnectionRequest + */ +export interface PatchedUserTelegramSourceConnectionRequest { + /** + * + * @type {number} + * @memberof PatchedUserTelegramSourceConnectionRequest + */ + user?: number; + /** + * + * @type {string} + * @memberof PatchedUserTelegramSourceConnectionRequest + */ + source?: string; + /** + * + * @type {string} + * @memberof PatchedUserTelegramSourceConnectionRequest + */ + identifier?: string; +} + +/** + * Check if a given object implements the PatchedUserTelegramSourceConnectionRequest interface. + */ +export function instanceOfPatchedUserTelegramSourceConnectionRequest( + value: object, +): value is PatchedUserTelegramSourceConnectionRequest { + return true; +} + +export function PatchedUserTelegramSourceConnectionRequestFromJSON( + json: any, +): PatchedUserTelegramSourceConnectionRequest { + return PatchedUserTelegramSourceConnectionRequestFromJSONTyped(json, false); +} + +export function PatchedUserTelegramSourceConnectionRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedUserTelegramSourceConnectionRequest { + if (json == null) { + return json; + } + return { + user: json["user"] == null ? undefined : json["user"], + source: json["source"] == null ? undefined : json["source"], + identifier: json["identifier"] == null ? undefined : json["identifier"], + }; +} + +export function PatchedUserTelegramSourceConnectionRequestToJSON( + json: any, +): PatchedUserTelegramSourceConnectionRequest { + return PatchedUserTelegramSourceConnectionRequestToJSONTyped(json, false); +} + +export function PatchedUserTelegramSourceConnectionRequestToJSONTyped( + value?: PatchedUserTelegramSourceConnectionRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + user: value["user"], + source: value["source"], + identifier: value["identifier"], + }; +} diff --git a/packages/client-ts/src/models/PatchedUserWriteStageRequest.ts b/packages/client-ts/src/models/PatchedUserWriteStageRequest.ts new file mode 100644 index 0000000000..e8f15bc435 --- /dev/null +++ b/packages/client-ts/src/models/PatchedUserWriteStageRequest.ts @@ -0,0 +1,120 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { UserCreationModeEnum } from "./UserCreationModeEnum"; +import { UserCreationModeEnumFromJSON, UserCreationModeEnumToJSON } from "./UserCreationModeEnum"; +import type { UserTypeEnum } from "./UserTypeEnum"; +import { UserTypeEnumFromJSON, UserTypeEnumToJSON } from "./UserTypeEnum"; + +/** + * UserWriteStage Serializer + * @export + * @interface PatchedUserWriteStageRequest + */ +export interface PatchedUserWriteStageRequest { + /** + * + * @type {string} + * @memberof PatchedUserWriteStageRequest + */ + name?: string; + /** + * + * @type {UserCreationModeEnum} + * @memberof PatchedUserWriteStageRequest + */ + userCreationMode?: UserCreationModeEnum; + /** + * When set, newly created users are inactive and cannot login. + * @type {boolean} + * @memberof PatchedUserWriteStageRequest + */ + createUsersAsInactive?: boolean; + /** + * Optionally add newly created users to this group. + * @type {string} + * @memberof PatchedUserWriteStageRequest + */ + createUsersGroup?: string | null; + /** + * + * @type {UserTypeEnum} + * @memberof PatchedUserWriteStageRequest + */ + userType?: UserTypeEnum; + /** + * + * @type {string} + * @memberof PatchedUserWriteStageRequest + */ + userPathTemplate?: string; +} + +/** + * Check if a given object implements the PatchedUserWriteStageRequest interface. + */ +export function instanceOfPatchedUserWriteStageRequest( + value: object, +): value is PatchedUserWriteStageRequest { + return true; +} + +export function PatchedUserWriteStageRequestFromJSON(json: any): PatchedUserWriteStageRequest { + return PatchedUserWriteStageRequestFromJSONTyped(json, false); +} + +export function PatchedUserWriteStageRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedUserWriteStageRequest { + if (json == null) { + return json; + } + return { + name: json["name"] == null ? undefined : json["name"], + userCreationMode: + json["user_creation_mode"] == null + ? undefined + : UserCreationModeEnumFromJSON(json["user_creation_mode"]), + createUsersAsInactive: + json["create_users_as_inactive"] == null ? undefined : json["create_users_as_inactive"], + createUsersGroup: + json["create_users_group"] == null ? undefined : json["create_users_group"], + userType: json["user_type"] == null ? undefined : UserTypeEnumFromJSON(json["user_type"]), + userPathTemplate: + json["user_path_template"] == null ? undefined : json["user_path_template"], + }; +} + +export function PatchedUserWriteStageRequestToJSON(json: any): PatchedUserWriteStageRequest { + return PatchedUserWriteStageRequestToJSONTyped(json, false); +} + +export function PatchedUserWriteStageRequestToJSONTyped( + value?: PatchedUserWriteStageRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + user_creation_mode: UserCreationModeEnumToJSON(value["userCreationMode"]), + create_users_as_inactive: value["createUsersAsInactive"], + create_users_group: value["createUsersGroup"], + user_type: UserTypeEnumToJSON(value["userType"]), + user_path_template: value["userPathTemplate"], + }; +} diff --git a/packages/client-ts/src/models/PatchedWSFederationProviderRequest.ts b/packages/client-ts/src/models/PatchedWSFederationProviderRequest.ts new file mode 100644 index 0000000000..7fb94c7948 --- /dev/null +++ b/packages/client-ts/src/models/PatchedWSFederationProviderRequest.ts @@ -0,0 +1,251 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { DigestAlgorithmEnum } from "./DigestAlgorithmEnum"; +import { DigestAlgorithmEnumFromJSON, DigestAlgorithmEnumToJSON } from "./DigestAlgorithmEnum"; +import type { SAMLNameIDPolicyEnum } from "./SAMLNameIDPolicyEnum"; +import { SAMLNameIDPolicyEnumFromJSON, SAMLNameIDPolicyEnumToJSON } from "./SAMLNameIDPolicyEnum"; +import type { SignatureAlgorithmEnum } from "./SignatureAlgorithmEnum"; +import { + SignatureAlgorithmEnumFromJSON, + SignatureAlgorithmEnumToJSON, +} from "./SignatureAlgorithmEnum"; + +/** + * WSFederationProvider Serializer + * @export + * @interface PatchedWSFederationProviderRequest + */ +export interface PatchedWSFederationProviderRequest { + /** + * + * @type {string} + * @memberof PatchedWSFederationProviderRequest + */ + name?: string; + /** + * Flow used for authentication when the associated application is accessed by an un-authenticated user. + * @type {string} + * @memberof PatchedWSFederationProviderRequest + */ + authenticationFlow?: string | null; + /** + * Flow used when authorizing this provider. + * @type {string} + * @memberof PatchedWSFederationProviderRequest + */ + authorizationFlow?: string; + /** + * Flow used ending the session from a provider. + * @type {string} + * @memberof PatchedWSFederationProviderRequest + */ + invalidationFlow?: string; + /** + * + * @type {Array} + * @memberof PatchedWSFederationProviderRequest + */ + propertyMappings?: Array; + /** + * + * @type {string} + * @memberof PatchedWSFederationProviderRequest + */ + replyUrl?: string; + /** + * + * @type {string} + * @memberof PatchedWSFederationProviderRequest + */ + wtrealm?: string; + /** + * Assertion valid not before current time + this value (Format: hours=-1;minutes=-2;seconds=-3). + * @type {string} + * @memberof PatchedWSFederationProviderRequest + */ + assertionValidNotBefore?: string; + /** + * Assertion not valid on or after current time + this value (Format: hours=1;minutes=2;seconds=3). + * @type {string} + * @memberof PatchedWSFederationProviderRequest + */ + assertionValidNotOnOrAfter?: string; + /** + * Session not valid on or after current time + this value (Format: hours=1;minutes=2;seconds=3). + * @type {string} + * @memberof PatchedWSFederationProviderRequest + */ + sessionValidNotOnOrAfter?: string; + /** + * Configure how the NameID value will be created. When left empty, the NameIDPolicy of the incoming request will be considered + * @type {string} + * @memberof PatchedWSFederationProviderRequest + */ + nameIdMapping?: string | null; + /** + * Configure how the AuthnContextClassRef value will be created. When left empty, the AuthnContextClassRef will be set based on which authentication methods the user used to authenticate. + * @type {string} + * @memberof PatchedWSFederationProviderRequest + */ + authnContextClassRefMapping?: string | null; + /** + * + * @type {DigestAlgorithmEnum} + * @memberof PatchedWSFederationProviderRequest + */ + digestAlgorithm?: DigestAlgorithmEnum; + /** + * + * @type {SignatureAlgorithmEnum} + * @memberof PatchedWSFederationProviderRequest + */ + signatureAlgorithm?: SignatureAlgorithmEnum; + /** + * Keypair used to sign outgoing Responses going to the Service Provider. + * @type {string} + * @memberof PatchedWSFederationProviderRequest + */ + signingKp?: string | null; + /** + * When selected, incoming assertions are encrypted by the IdP using the public key of the encryption keypair. The assertion is decrypted by the SP using the the private key. + * @type {string} + * @memberof PatchedWSFederationProviderRequest + */ + encryptionKp?: string | null; + /** + * + * @type {boolean} + * @memberof PatchedWSFederationProviderRequest + */ + signAssertion?: boolean; + /** + * + * @type {boolean} + * @memberof PatchedWSFederationProviderRequest + */ + signLogoutRequest?: boolean; + /** + * + * @type {SAMLNameIDPolicyEnum} + * @memberof PatchedWSFederationProviderRequest + */ + defaultNameIdPolicy?: SAMLNameIDPolicyEnum; +} + +/** + * Check if a given object implements the PatchedWSFederationProviderRequest interface. + */ +export function instanceOfPatchedWSFederationProviderRequest( + value: object, +): value is PatchedWSFederationProviderRequest { + return true; +} + +export function PatchedWSFederationProviderRequestFromJSON( + json: any, +): PatchedWSFederationProviderRequest { + return PatchedWSFederationProviderRequestFromJSONTyped(json, false); +} + +export function PatchedWSFederationProviderRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedWSFederationProviderRequest { + if (json == null) { + return json; + } + return { + name: json["name"] == null ? undefined : json["name"], + authenticationFlow: + json["authentication_flow"] == null ? undefined : json["authentication_flow"], + authorizationFlow: + json["authorization_flow"] == null ? undefined : json["authorization_flow"], + invalidationFlow: json["invalidation_flow"] == null ? undefined : json["invalidation_flow"], + propertyMappings: json["property_mappings"] == null ? undefined : json["property_mappings"], + replyUrl: json["reply_url"] == null ? undefined : json["reply_url"], + wtrealm: json["wtrealm"] == null ? undefined : json["wtrealm"], + assertionValidNotBefore: + json["assertion_valid_not_before"] == null + ? undefined + : json["assertion_valid_not_before"], + assertionValidNotOnOrAfter: + json["assertion_valid_not_on_or_after"] == null + ? undefined + : json["assertion_valid_not_on_or_after"], + sessionValidNotOnOrAfter: + json["session_valid_not_on_or_after"] == null + ? undefined + : json["session_valid_not_on_or_after"], + nameIdMapping: json["name_id_mapping"] == null ? undefined : json["name_id_mapping"], + authnContextClassRefMapping: + json["authn_context_class_ref_mapping"] == null + ? undefined + : json["authn_context_class_ref_mapping"], + digestAlgorithm: + json["digest_algorithm"] == null + ? undefined + : DigestAlgorithmEnumFromJSON(json["digest_algorithm"]), + signatureAlgorithm: + json["signature_algorithm"] == null + ? undefined + : SignatureAlgorithmEnumFromJSON(json["signature_algorithm"]), + signingKp: json["signing_kp"] == null ? undefined : json["signing_kp"], + encryptionKp: json["encryption_kp"] == null ? undefined : json["encryption_kp"], + signAssertion: json["sign_assertion"] == null ? undefined : json["sign_assertion"], + signLogoutRequest: + json["sign_logout_request"] == null ? undefined : json["sign_logout_request"], + defaultNameIdPolicy: + json["default_name_id_policy"] == null + ? undefined + : SAMLNameIDPolicyEnumFromJSON(json["default_name_id_policy"]), + }; +} + +export function PatchedWSFederationProviderRequestToJSON( + json: any, +): PatchedWSFederationProviderRequest { + return PatchedWSFederationProviderRequestToJSONTyped(json, false); +} + +export function PatchedWSFederationProviderRequestToJSONTyped( + value?: PatchedWSFederationProviderRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + authentication_flow: value["authenticationFlow"], + authorization_flow: value["authorizationFlow"], + invalidation_flow: value["invalidationFlow"], + property_mappings: value["propertyMappings"], + reply_url: value["replyUrl"], + wtrealm: value["wtrealm"], + assertion_valid_not_before: value["assertionValidNotBefore"], + assertion_valid_not_on_or_after: value["assertionValidNotOnOrAfter"], + session_valid_not_on_or_after: value["sessionValidNotOnOrAfter"], + name_id_mapping: value["nameIdMapping"], + authn_context_class_ref_mapping: value["authnContextClassRefMapping"], + digest_algorithm: DigestAlgorithmEnumToJSON(value["digestAlgorithm"]), + signature_algorithm: SignatureAlgorithmEnumToJSON(value["signatureAlgorithm"]), + signing_kp: value["signingKp"], + encryption_kp: value["encryptionKp"], + sign_assertion: value["signAssertion"], + sign_logout_request: value["signLogoutRequest"], + default_name_id_policy: SAMLNameIDPolicyEnumToJSON(value["defaultNameIdPolicy"]), + }; +} diff --git a/packages/client-ts/src/models/PatchedWebAuthnDeviceRequest.ts b/packages/client-ts/src/models/PatchedWebAuthnDeviceRequest.ts new file mode 100644 index 0000000000..e7a183fc81 --- /dev/null +++ b/packages/client-ts/src/models/PatchedWebAuthnDeviceRequest.ts @@ -0,0 +1,69 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Serializer for WebAuthn authenticator devices + * @export + * @interface PatchedWebAuthnDeviceRequest + */ +export interface PatchedWebAuthnDeviceRequest { + /** + * + * @type {string} + * @memberof PatchedWebAuthnDeviceRequest + */ + name?: string; +} + +/** + * Check if a given object implements the PatchedWebAuthnDeviceRequest interface. + */ +export function instanceOfPatchedWebAuthnDeviceRequest( + value: object, +): value is PatchedWebAuthnDeviceRequest { + return true; +} + +export function PatchedWebAuthnDeviceRequestFromJSON(json: any): PatchedWebAuthnDeviceRequest { + return PatchedWebAuthnDeviceRequestFromJSONTyped(json, false); +} + +export function PatchedWebAuthnDeviceRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PatchedWebAuthnDeviceRequest { + if (json == null) { + return json; + } + return { + name: json["name"] == null ? undefined : json["name"], + }; +} + +export function PatchedWebAuthnDeviceRequestToJSON(json: any): PatchedWebAuthnDeviceRequest { + return PatchedWebAuthnDeviceRequestToJSONTyped(json, false); +} + +export function PatchedWebAuthnDeviceRequestToJSONTyped( + value?: PatchedWebAuthnDeviceRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + }; +} diff --git a/packages/client-ts/src/models/Permission.ts b/packages/client-ts/src/models/Permission.ts new file mode 100644 index 0000000000..4bbdac4b62 --- /dev/null +++ b/packages/client-ts/src/models/Permission.ts @@ -0,0 +1,117 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Global permission + * @export + * @interface Permission + */ +export interface Permission { + /** + * + * @type {number} + * @memberof Permission + */ + readonly id: number; + /** + * + * @type {string} + * @memberof Permission + */ + name: string; + /** + * + * @type {string} + * @memberof Permission + */ + codename: string; + /** + * + * @type {string} + * @memberof Permission + */ + readonly model: string; + /** + * + * @type {string} + * @memberof Permission + */ + readonly appLabel: string; + /** + * Human-readable app label + * @type {string} + * @memberof Permission + */ + readonly appLabelVerbose: string; + /** + * Human-readable model name + * @type {string} + * @memberof Permission + */ + readonly modelVerbose: string; +} + +/** + * Check if a given object implements the Permission interface. + */ +export function instanceOfPermission(value: object): value is Permission { + if (!("id" in value) || value["id"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("codename" in value) || value["codename"] === undefined) return false; + if (!("model" in value) || value["model"] === undefined) return false; + if (!("appLabel" in value) || value["appLabel"] === undefined) return false; + if (!("appLabelVerbose" in value) || value["appLabelVerbose"] === undefined) return false; + if (!("modelVerbose" in value) || value["modelVerbose"] === undefined) return false; + return true; +} + +export function PermissionFromJSON(json: any): Permission { + return PermissionFromJSONTyped(json, false); +} + +export function PermissionFromJSONTyped(json: any, ignoreDiscriminator: boolean): Permission { + if (json == null) { + return json; + } + return { + id: json["id"], + name: json["name"], + codename: json["codename"], + model: json["model"], + appLabel: json["app_label"], + appLabelVerbose: json["app_label_verbose"], + modelVerbose: json["model_verbose"], + }; +} + +export function PermissionToJSON(json: any): Permission { + return PermissionToJSONTyped(json, false); +} + +export function PermissionToJSONTyped( + value?: Omit< + Permission, + "id" | "model" | "app_label" | "app_label_verbose" | "model_verbose" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + codename: value["codename"], + }; +} diff --git a/packages/client-ts/src/models/PermissionAssignRequest.ts b/packages/client-ts/src/models/PermissionAssignRequest.ts new file mode 100644 index 0000000000..26eeb35abf --- /dev/null +++ b/packages/client-ts/src/models/PermissionAssignRequest.ts @@ -0,0 +1,87 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { ModelEnum } from "./ModelEnum"; +import { ModelEnumFromJSON, ModelEnumToJSON } from "./ModelEnum"; + +/** + * Request to assign a new permission + * @export + * @interface PermissionAssignRequest + */ +export interface PermissionAssignRequest { + /** + * + * @type {Array} + * @memberof PermissionAssignRequest + */ + permissions: Array; + /** + * + * @type {ModelEnum} + * @memberof PermissionAssignRequest + */ + model?: ModelEnum; + /** + * + * @type {string} + * @memberof PermissionAssignRequest + */ + objectPk?: string; +} + +/** + * Check if a given object implements the PermissionAssignRequest interface. + */ +export function instanceOfPermissionAssignRequest(value: object): value is PermissionAssignRequest { + if (!("permissions" in value) || value["permissions"] === undefined) return false; + return true; +} + +export function PermissionAssignRequestFromJSON(json: any): PermissionAssignRequest { + return PermissionAssignRequestFromJSONTyped(json, false); +} + +export function PermissionAssignRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PermissionAssignRequest { + if (json == null) { + return json; + } + return { + permissions: json["permissions"], + model: json["model"] == null ? undefined : ModelEnumFromJSON(json["model"]), + objectPk: json["object_pk"] == null ? undefined : json["object_pk"], + }; +} + +export function PermissionAssignRequestToJSON(json: any): PermissionAssignRequest { + return PermissionAssignRequestToJSONTyped(json, false); +} + +export function PermissionAssignRequestToJSONTyped( + value?: PermissionAssignRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + permissions: value["permissions"], + model: ModelEnumToJSON(value["model"]), + object_pk: value["objectPk"], + }; +} diff --git a/packages/client-ts/src/models/PermissionAssignResult.ts b/packages/client-ts/src/models/PermissionAssignResult.ts new file mode 100644 index 0000000000..6bf0546282 --- /dev/null +++ b/packages/client-ts/src/models/PermissionAssignResult.ts @@ -0,0 +1,68 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Result from assigning permissions to a user/role + * @export + * @interface PermissionAssignResult + */ +export interface PermissionAssignResult { + /** + * + * @type {string} + * @memberof PermissionAssignResult + */ + id: string; +} + +/** + * Check if a given object implements the PermissionAssignResult interface. + */ +export function instanceOfPermissionAssignResult(value: object): value is PermissionAssignResult { + if (!("id" in value) || value["id"] === undefined) return false; + return true; +} + +export function PermissionAssignResultFromJSON(json: any): PermissionAssignResult { + return PermissionAssignResultFromJSONTyped(json, false); +} + +export function PermissionAssignResultFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PermissionAssignResult { + if (json == null) { + return json; + } + return { + id: json["id"], + }; +} + +export function PermissionAssignResultToJSON(json: any): PermissionAssignResult { + return PermissionAssignResultToJSONTyped(json, false); +} + +export function PermissionAssignResultToJSONTyped( + value?: PermissionAssignResult | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + id: value["id"], + }; +} diff --git a/packages/client-ts/src/models/PlexAuthenticationChallenge.ts b/packages/client-ts/src/models/PlexAuthenticationChallenge.ts new file mode 100644 index 0000000000..832ccdcf3e --- /dev/null +++ b/packages/client-ts/src/models/PlexAuthenticationChallenge.ts @@ -0,0 +1,108 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { ContextualFlowInfo } from "./ContextualFlowInfo"; +import { ContextualFlowInfoFromJSON, ContextualFlowInfoToJSON } from "./ContextualFlowInfo"; +import type { ErrorDetail } from "./ErrorDetail"; + +/** + * Challenge shown to the user in identification stage + * @export + * @interface PlexAuthenticationChallenge + */ +export interface PlexAuthenticationChallenge { + /** + * + * @type {ContextualFlowInfo} + * @memberof PlexAuthenticationChallenge + */ + flowInfo?: ContextualFlowInfo; + /** + * + * @type {string} + * @memberof PlexAuthenticationChallenge + */ + component?: string; + /** + * + * @type {{ [key: string]: Array; }} + * @memberof PlexAuthenticationChallenge + */ + responseErrors?: { [key: string]: Array }; + /** + * + * @type {string} + * @memberof PlexAuthenticationChallenge + */ + clientId: string; + /** + * + * @type {string} + * @memberof PlexAuthenticationChallenge + */ + slug: string; +} + +/** + * Check if a given object implements the PlexAuthenticationChallenge interface. + */ +export function instanceOfPlexAuthenticationChallenge( + value: object, +): value is PlexAuthenticationChallenge { + if (!("clientId" in value) || value["clientId"] === undefined) return false; + if (!("slug" in value) || value["slug"] === undefined) return false; + return true; +} + +export function PlexAuthenticationChallengeFromJSON(json: any): PlexAuthenticationChallenge { + return PlexAuthenticationChallengeFromJSONTyped(json, false); +} + +export function PlexAuthenticationChallengeFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PlexAuthenticationChallenge { + if (json == null) { + return json; + } + return { + flowInfo: + json["flow_info"] == null ? undefined : ContextualFlowInfoFromJSON(json["flow_info"]), + component: json["component"] == null ? undefined : json["component"], + responseErrors: json["response_errors"] == null ? undefined : json["response_errors"], + clientId: json["client_id"], + slug: json["slug"], + }; +} + +export function PlexAuthenticationChallengeToJSON(json: any): PlexAuthenticationChallenge { + return PlexAuthenticationChallengeToJSONTyped(json, false); +} + +export function PlexAuthenticationChallengeToJSONTyped( + value?: PlexAuthenticationChallenge | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + flow_info: ContextualFlowInfoToJSON(value["flowInfo"]), + component: value["component"], + response_errors: value["responseErrors"], + client_id: value["clientId"], + slug: value["slug"], + }; +} diff --git a/packages/client-ts/src/models/PlexAuthenticationChallengeResponseRequest.ts b/packages/client-ts/src/models/PlexAuthenticationChallengeResponseRequest.ts new file mode 100644 index 0000000000..4d7e5ed908 --- /dev/null +++ b/packages/client-ts/src/models/PlexAuthenticationChallengeResponseRequest.ts @@ -0,0 +1,73 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Pseudo class for plex response + * @export + * @interface PlexAuthenticationChallengeResponseRequest + */ +export interface PlexAuthenticationChallengeResponseRequest { + /** + * + * @type {string} + * @memberof PlexAuthenticationChallengeResponseRequest + */ + component?: string; +} + +/** + * Check if a given object implements the PlexAuthenticationChallengeResponseRequest interface. + */ +export function instanceOfPlexAuthenticationChallengeResponseRequest( + value: object, +): value is PlexAuthenticationChallengeResponseRequest { + return true; +} + +export function PlexAuthenticationChallengeResponseRequestFromJSON( + json: any, +): PlexAuthenticationChallengeResponseRequest { + return PlexAuthenticationChallengeResponseRequestFromJSONTyped(json, false); +} + +export function PlexAuthenticationChallengeResponseRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PlexAuthenticationChallengeResponseRequest { + if (json == null) { + return json; + } + return { + component: json["component"] == null ? undefined : json["component"], + }; +} + +export function PlexAuthenticationChallengeResponseRequestToJSON( + json: any, +): PlexAuthenticationChallengeResponseRequest { + return PlexAuthenticationChallengeResponseRequestToJSONTyped(json, false); +} + +export function PlexAuthenticationChallengeResponseRequestToJSONTyped( + value?: PlexAuthenticationChallengeResponseRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + component: value["component"], + }; +} diff --git a/packages/client-ts/src/models/PlexSource.ts b/packages/client-ts/src/models/PlexSource.ts new file mode 100644 index 0000000000..1fde643f2c --- /dev/null +++ b/packages/client-ts/src/models/PlexSource.ts @@ -0,0 +1,294 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { GroupMatchingModeEnum } from "./GroupMatchingModeEnum"; +import { + GroupMatchingModeEnumFromJSON, + GroupMatchingModeEnumToJSON, +} from "./GroupMatchingModeEnum"; +import type { PolicyEngineMode } from "./PolicyEngineMode"; +import { PolicyEngineModeFromJSON, PolicyEngineModeToJSON } from "./PolicyEngineMode"; +import type { ThemedUrls } from "./ThemedUrls"; +import { ThemedUrlsFromJSON } from "./ThemedUrls"; +import type { UserMatchingModeEnum } from "./UserMatchingModeEnum"; +import { UserMatchingModeEnumFromJSON, UserMatchingModeEnumToJSON } from "./UserMatchingModeEnum"; + +/** + * Plex Source Serializer + * @export + * @interface PlexSource + */ +export interface PlexSource { + /** + * + * @type {string} + * @memberof PlexSource + */ + readonly pk: string; + /** + * Source's display Name. + * @type {string} + * @memberof PlexSource + */ + name: string; + /** + * Internal source name, used in URLs. + * @type {string} + * @memberof PlexSource + */ + slug: string; + /** + * + * @type {boolean} + * @memberof PlexSource + */ + enabled?: boolean; + /** + * When enabled, this source will be displayed as a prominent button on the login page, instead of a small icon. + * @type {boolean} + * @memberof PlexSource + */ + promoted?: boolean; + /** + * Flow to use when authenticating existing users. + * @type {string} + * @memberof PlexSource + */ + authenticationFlow?: string | null; + /** + * Flow to use when enrolling new users. + * @type {string} + * @memberof PlexSource + */ + enrollmentFlow?: string | null; + /** + * + * @type {Array} + * @memberof PlexSource + */ + userPropertyMappings?: Array; + /** + * + * @type {Array} + * @memberof PlexSource + */ + groupPropertyMappings?: Array; + /** + * Get object component so that we know how to edit the object + * @type {string} + * @memberof PlexSource + */ + readonly component: string; + /** + * Return object's verbose_name + * @type {string} + * @memberof PlexSource + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof PlexSource + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof PlexSource + */ + readonly metaModelName: string; + /** + * + * @type {PolicyEngineMode} + * @memberof PlexSource + */ + policyEngineMode?: PolicyEngineMode; + /** + * How the source determines if an existing user should be authenticated or a new user enrolled. + * @type {UserMatchingModeEnum} + * @memberof PlexSource + */ + userMatchingMode?: UserMatchingModeEnum; + /** + * Objects that are managed by authentik. These objects are created and updated automatically. This flag only indicates that an object can be overwritten by migrations. You can still modify the objects via the API, but expect changes to be overwritten in a later update. + * @type {string} + * @memberof PlexSource + */ + readonly managed: string | null; + /** + * + * @type {string} + * @memberof PlexSource + */ + userPathTemplate?: string; + /** + * + * @type {string} + * @memberof PlexSource + */ + icon?: string; + /** + * + * @type {string} + * @memberof PlexSource + */ + readonly iconUrl: string; + /** + * + * @type {ThemedUrls} + * @memberof PlexSource + */ + readonly iconThemedUrls: ThemedUrls | null; + /** + * How the source determines if an existing group should be used or a new group created. + * @type {GroupMatchingModeEnum} + * @memberof PlexSource + */ + groupMatchingMode?: GroupMatchingModeEnum; + /** + * Client identifier used to talk to Plex. + * @type {string} + * @memberof PlexSource + */ + clientId?: string; + /** + * Which servers a user has to be a member of to be granted access. Empty list allows every server. + * @type {Array} + * @memberof PlexSource + */ + allowedServers?: Array; + /** + * Allow friends to authenticate, even if you don't share a server. + * @type {boolean} + * @memberof PlexSource + */ + allowFriends?: boolean; + /** + * Plex token used to check friends + * @type {string} + * @memberof PlexSource + */ + plexToken: string; +} + +/** + * Check if a given object implements the PlexSource interface. + */ +export function instanceOfPlexSource(value: object): value is PlexSource { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("slug" in value) || value["slug"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + if (!("managed" in value) || value["managed"] === undefined) return false; + if (!("iconUrl" in value) || value["iconUrl"] === undefined) return false; + if (!("iconThemedUrls" in value) || value["iconThemedUrls"] === undefined) return false; + if (!("plexToken" in value) || value["plexToken"] === undefined) return false; + return true; +} + +export function PlexSourceFromJSON(json: any): PlexSource { + return PlexSourceFromJSONTyped(json, false); +} + +export function PlexSourceFromJSONTyped(json: any, ignoreDiscriminator: boolean): PlexSource { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + slug: json["slug"], + enabled: json["enabled"] == null ? undefined : json["enabled"], + promoted: json["promoted"] == null ? undefined : json["promoted"], + authenticationFlow: + json["authentication_flow"] == null ? undefined : json["authentication_flow"], + enrollmentFlow: json["enrollment_flow"] == null ? undefined : json["enrollment_flow"], + userPropertyMappings: + json["user_property_mappings"] == null ? undefined : json["user_property_mappings"], + groupPropertyMappings: + json["group_property_mappings"] == null ? undefined : json["group_property_mappings"], + component: json["component"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + policyEngineMode: + json["policy_engine_mode"] == null + ? undefined + : PolicyEngineModeFromJSON(json["policy_engine_mode"]), + userMatchingMode: + json["user_matching_mode"] == null + ? undefined + : UserMatchingModeEnumFromJSON(json["user_matching_mode"]), + managed: json["managed"], + userPathTemplate: + json["user_path_template"] == null ? undefined : json["user_path_template"], + icon: json["icon"] == null ? undefined : json["icon"], + iconUrl: json["icon_url"], + iconThemedUrls: ThemedUrlsFromJSON(json["icon_themed_urls"]), + groupMatchingMode: + json["group_matching_mode"] == null + ? undefined + : GroupMatchingModeEnumFromJSON(json["group_matching_mode"]), + clientId: json["client_id"] == null ? undefined : json["client_id"], + allowedServers: json["allowed_servers"] == null ? undefined : json["allowed_servers"], + allowFriends: json["allow_friends"] == null ? undefined : json["allow_friends"], + plexToken: json["plex_token"], + }; +} + +export function PlexSourceToJSON(json: any): PlexSource { + return PlexSourceToJSONTyped(json, false); +} + +export function PlexSourceToJSONTyped( + value?: Omit< + PlexSource, + | "pk" + | "component" + | "verbose_name" + | "verbose_name_plural" + | "meta_model_name" + | "managed" + | "icon_url" + | "icon_themed_urls" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + slug: value["slug"], + enabled: value["enabled"], + promoted: value["promoted"], + authentication_flow: value["authenticationFlow"], + enrollment_flow: value["enrollmentFlow"], + user_property_mappings: value["userPropertyMappings"], + group_property_mappings: value["groupPropertyMappings"], + policy_engine_mode: PolicyEngineModeToJSON(value["policyEngineMode"]), + user_matching_mode: UserMatchingModeEnumToJSON(value["userMatchingMode"]), + user_path_template: value["userPathTemplate"], + icon: value["icon"], + group_matching_mode: GroupMatchingModeEnumToJSON(value["groupMatchingMode"]), + client_id: value["clientId"], + allowed_servers: value["allowedServers"], + allow_friends: value["allowFriends"], + plex_token: value["plexToken"], + }; +} diff --git a/packages/client-ts/src/models/PlexSourcePropertyMapping.ts b/packages/client-ts/src/models/PlexSourcePropertyMapping.ts new file mode 100644 index 0000000000..4ea5b73aab --- /dev/null +++ b/packages/client-ts/src/models/PlexSourcePropertyMapping.ts @@ -0,0 +1,130 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * PlexSourcePropertyMapping Serializer + * @export + * @interface PlexSourcePropertyMapping + */ +export interface PlexSourcePropertyMapping { + /** + * + * @type {string} + * @memberof PlexSourcePropertyMapping + */ + readonly pk: string; + /** + * Objects that are managed by authentik. These objects are created and updated automatically. This flag only indicates that an object can be overwritten by migrations. You can still modify the objects via the API, but expect changes to be overwritten in a later update. + * @type {string} + * @memberof PlexSourcePropertyMapping + */ + managed?: string | null; + /** + * + * @type {string} + * @memberof PlexSourcePropertyMapping + */ + name: string; + /** + * + * @type {string} + * @memberof PlexSourcePropertyMapping + */ + expression: string; + /** + * Get object's component so that we know how to edit the object + * @type {string} + * @memberof PlexSourcePropertyMapping + */ + readonly component: string; + /** + * Return object's verbose_name + * @type {string} + * @memberof PlexSourcePropertyMapping + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof PlexSourcePropertyMapping + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof PlexSourcePropertyMapping + */ + readonly metaModelName: string; +} + +/** + * Check if a given object implements the PlexSourcePropertyMapping interface. + */ +export function instanceOfPlexSourcePropertyMapping( + value: object, +): value is PlexSourcePropertyMapping { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("expression" in value) || value["expression"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + return true; +} + +export function PlexSourcePropertyMappingFromJSON(json: any): PlexSourcePropertyMapping { + return PlexSourcePropertyMappingFromJSONTyped(json, false); +} + +export function PlexSourcePropertyMappingFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PlexSourcePropertyMapping { + if (json == null) { + return json; + } + return { + pk: json["pk"], + managed: json["managed"] == null ? undefined : json["managed"], + name: json["name"], + expression: json["expression"], + component: json["component"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + }; +} + +export function PlexSourcePropertyMappingToJSON(json: any): PlexSourcePropertyMapping { + return PlexSourcePropertyMappingToJSONTyped(json, false); +} + +export function PlexSourcePropertyMappingToJSONTyped( + value?: Omit< + PlexSourcePropertyMapping, + "pk" | "component" | "verbose_name" | "verbose_name_plural" | "meta_model_name" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + managed: value["managed"], + name: value["name"], + expression: value["expression"], + }; +} diff --git a/packages/client-ts/src/models/PlexSourcePropertyMappingRequest.ts b/packages/client-ts/src/models/PlexSourcePropertyMappingRequest.ts new file mode 100644 index 0000000000..b65829c8fb --- /dev/null +++ b/packages/client-ts/src/models/PlexSourcePropertyMappingRequest.ts @@ -0,0 +1,91 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * PlexSourcePropertyMapping Serializer + * @export + * @interface PlexSourcePropertyMappingRequest + */ +export interface PlexSourcePropertyMappingRequest { + /** + * Objects that are managed by authentik. These objects are created and updated automatically. This flag only indicates that an object can be overwritten by migrations. You can still modify the objects via the API, but expect changes to be overwritten in a later update. + * @type {string} + * @memberof PlexSourcePropertyMappingRequest + */ + managed?: string | null; + /** + * + * @type {string} + * @memberof PlexSourcePropertyMappingRequest + */ + name: string; + /** + * + * @type {string} + * @memberof PlexSourcePropertyMappingRequest + */ + expression: string; +} + +/** + * Check if a given object implements the PlexSourcePropertyMappingRequest interface. + */ +export function instanceOfPlexSourcePropertyMappingRequest( + value: object, +): value is PlexSourcePropertyMappingRequest { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("expression" in value) || value["expression"] === undefined) return false; + return true; +} + +export function PlexSourcePropertyMappingRequestFromJSON( + json: any, +): PlexSourcePropertyMappingRequest { + return PlexSourcePropertyMappingRequestFromJSONTyped(json, false); +} + +export function PlexSourcePropertyMappingRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PlexSourcePropertyMappingRequest { + if (json == null) { + return json; + } + return { + managed: json["managed"] == null ? undefined : json["managed"], + name: json["name"], + expression: json["expression"], + }; +} + +export function PlexSourcePropertyMappingRequestToJSON( + json: any, +): PlexSourcePropertyMappingRequest { + return PlexSourcePropertyMappingRequestToJSONTyped(json, false); +} + +export function PlexSourcePropertyMappingRequestToJSONTyped( + value?: PlexSourcePropertyMappingRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + managed: value["managed"], + name: value["name"], + expression: value["expression"], + }; +} diff --git a/packages/client-ts/src/models/PlexSourceRequest.ts b/packages/client-ts/src/models/PlexSourceRequest.ts new file mode 100644 index 0000000000..fd17e65497 --- /dev/null +++ b/packages/client-ts/src/models/PlexSourceRequest.ts @@ -0,0 +1,221 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { GroupMatchingModeEnum } from "./GroupMatchingModeEnum"; +import { + GroupMatchingModeEnumFromJSON, + GroupMatchingModeEnumToJSON, +} from "./GroupMatchingModeEnum"; +import type { PolicyEngineMode } from "./PolicyEngineMode"; +import { PolicyEngineModeFromJSON, PolicyEngineModeToJSON } from "./PolicyEngineMode"; +import type { UserMatchingModeEnum } from "./UserMatchingModeEnum"; +import { UserMatchingModeEnumFromJSON, UserMatchingModeEnumToJSON } from "./UserMatchingModeEnum"; + +/** + * Plex Source Serializer + * @export + * @interface PlexSourceRequest + */ +export interface PlexSourceRequest { + /** + * Source's display Name. + * @type {string} + * @memberof PlexSourceRequest + */ + name: string; + /** + * Internal source name, used in URLs. + * @type {string} + * @memberof PlexSourceRequest + */ + slug: string; + /** + * + * @type {boolean} + * @memberof PlexSourceRequest + */ + enabled?: boolean; + /** + * When enabled, this source will be displayed as a prominent button on the login page, instead of a small icon. + * @type {boolean} + * @memberof PlexSourceRequest + */ + promoted?: boolean; + /** + * Flow to use when authenticating existing users. + * @type {string} + * @memberof PlexSourceRequest + */ + authenticationFlow?: string | null; + /** + * Flow to use when enrolling new users. + * @type {string} + * @memberof PlexSourceRequest + */ + enrollmentFlow?: string | null; + /** + * + * @type {Array} + * @memberof PlexSourceRequest + */ + userPropertyMappings?: Array; + /** + * + * @type {Array} + * @memberof PlexSourceRequest + */ + groupPropertyMappings?: Array; + /** + * + * @type {PolicyEngineMode} + * @memberof PlexSourceRequest + */ + policyEngineMode?: PolicyEngineMode; + /** + * How the source determines if an existing user should be authenticated or a new user enrolled. + * @type {UserMatchingModeEnum} + * @memberof PlexSourceRequest + */ + userMatchingMode?: UserMatchingModeEnum; + /** + * + * @type {string} + * @memberof PlexSourceRequest + */ + userPathTemplate?: string; + /** + * + * @type {string} + * @memberof PlexSourceRequest + */ + icon?: string; + /** + * How the source determines if an existing group should be used or a new group created. + * @type {GroupMatchingModeEnum} + * @memberof PlexSourceRequest + */ + groupMatchingMode?: GroupMatchingModeEnum; + /** + * Client identifier used to talk to Plex. + * @type {string} + * @memberof PlexSourceRequest + */ + clientId?: string; + /** + * Which servers a user has to be a member of to be granted access. Empty list allows every server. + * @type {Array} + * @memberof PlexSourceRequest + */ + allowedServers?: Array; + /** + * Allow friends to authenticate, even if you don't share a server. + * @type {boolean} + * @memberof PlexSourceRequest + */ + allowFriends?: boolean; + /** + * Plex token used to check friends + * @type {string} + * @memberof PlexSourceRequest + */ + plexToken: string; +} + +/** + * Check if a given object implements the PlexSourceRequest interface. + */ +export function instanceOfPlexSourceRequest(value: object): value is PlexSourceRequest { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("slug" in value) || value["slug"] === undefined) return false; + if (!("plexToken" in value) || value["plexToken"] === undefined) return false; + return true; +} + +export function PlexSourceRequestFromJSON(json: any): PlexSourceRequest { + return PlexSourceRequestFromJSONTyped(json, false); +} + +export function PlexSourceRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PlexSourceRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + slug: json["slug"], + enabled: json["enabled"] == null ? undefined : json["enabled"], + promoted: json["promoted"] == null ? undefined : json["promoted"], + authenticationFlow: + json["authentication_flow"] == null ? undefined : json["authentication_flow"], + enrollmentFlow: json["enrollment_flow"] == null ? undefined : json["enrollment_flow"], + userPropertyMappings: + json["user_property_mappings"] == null ? undefined : json["user_property_mappings"], + groupPropertyMappings: + json["group_property_mappings"] == null ? undefined : json["group_property_mappings"], + policyEngineMode: + json["policy_engine_mode"] == null + ? undefined + : PolicyEngineModeFromJSON(json["policy_engine_mode"]), + userMatchingMode: + json["user_matching_mode"] == null + ? undefined + : UserMatchingModeEnumFromJSON(json["user_matching_mode"]), + userPathTemplate: + json["user_path_template"] == null ? undefined : json["user_path_template"], + icon: json["icon"] == null ? undefined : json["icon"], + groupMatchingMode: + json["group_matching_mode"] == null + ? undefined + : GroupMatchingModeEnumFromJSON(json["group_matching_mode"]), + clientId: json["client_id"] == null ? undefined : json["client_id"], + allowedServers: json["allowed_servers"] == null ? undefined : json["allowed_servers"], + allowFriends: json["allow_friends"] == null ? undefined : json["allow_friends"], + plexToken: json["plex_token"], + }; +} + +export function PlexSourceRequestToJSON(json: any): PlexSourceRequest { + return PlexSourceRequestToJSONTyped(json, false); +} + +export function PlexSourceRequestToJSONTyped( + value?: PlexSourceRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + slug: value["slug"], + enabled: value["enabled"], + promoted: value["promoted"], + authentication_flow: value["authenticationFlow"], + enrollment_flow: value["enrollmentFlow"], + user_property_mappings: value["userPropertyMappings"], + group_property_mappings: value["groupPropertyMappings"], + policy_engine_mode: PolicyEngineModeToJSON(value["policyEngineMode"]), + user_matching_mode: UserMatchingModeEnumToJSON(value["userMatchingMode"]), + user_path_template: value["userPathTemplate"], + icon: value["icon"], + group_matching_mode: GroupMatchingModeEnumToJSON(value["groupMatchingMode"]), + client_id: value["clientId"], + allowed_servers: value["allowedServers"], + allow_friends: value["allowFriends"], + plex_token: value["plexToken"], + }; +} diff --git a/packages/client-ts/src/models/PlexTokenRedeemRequest.ts b/packages/client-ts/src/models/PlexTokenRedeemRequest.ts new file mode 100644 index 0000000000..6871fd5551 --- /dev/null +++ b/packages/client-ts/src/models/PlexTokenRedeemRequest.ts @@ -0,0 +1,68 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Serializer to redeem a plex token + * @export + * @interface PlexTokenRedeemRequest + */ +export interface PlexTokenRedeemRequest { + /** + * + * @type {string} + * @memberof PlexTokenRedeemRequest + */ + plexToken: string; +} + +/** + * Check if a given object implements the PlexTokenRedeemRequest interface. + */ +export function instanceOfPlexTokenRedeemRequest(value: object): value is PlexTokenRedeemRequest { + if (!("plexToken" in value) || value["plexToken"] === undefined) return false; + return true; +} + +export function PlexTokenRedeemRequestFromJSON(json: any): PlexTokenRedeemRequest { + return PlexTokenRedeemRequestFromJSONTyped(json, false); +} + +export function PlexTokenRedeemRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PlexTokenRedeemRequest { + if (json == null) { + return json; + } + return { + plexToken: json["plex_token"], + }; +} + +export function PlexTokenRedeemRequestToJSON(json: any): PlexTokenRedeemRequest { + return PlexTokenRedeemRequestToJSONTyped(json, false); +} + +export function PlexTokenRedeemRequestToJSONTyped( + value?: PlexTokenRedeemRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + plex_token: value["plexToken"], + }; +} diff --git a/packages/client-ts/src/models/Policy.ts b/packages/client-ts/src/models/Policy.ts new file mode 100644 index 0000000000..a21121bc92 --- /dev/null +++ b/packages/client-ts/src/models/Policy.ts @@ -0,0 +1,124 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Policy Serializer + * @export + * @interface Policy + */ +export interface Policy { + /** + * + * @type {string} + * @memberof Policy + */ + readonly pk: string; + /** + * + * @type {string} + * @memberof Policy + */ + name: string; + /** + * When this option is enabled, all executions of this policy will be logged. By default, only execution errors are logged. + * @type {boolean} + * @memberof Policy + */ + executionLogging?: boolean; + /** + * Get object component so that we know how to edit the object + * @type {string} + * @memberof Policy + */ + readonly component: string; + /** + * Return object's verbose_name + * @type {string} + * @memberof Policy + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof Policy + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof Policy + */ + readonly metaModelName: string; + /** + * Return objects policy is bound to + * @type {number} + * @memberof Policy + */ + readonly boundTo: number; +} + +/** + * Check if a given object implements the Policy interface. + */ +export function instanceOfPolicy(value: object): value is Policy { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + if (!("boundTo" in value) || value["boundTo"] === undefined) return false; + return true; +} + +export function PolicyFromJSON(json: any): Policy { + return PolicyFromJSONTyped(json, false); +} + +export function PolicyFromJSONTyped(json: any, ignoreDiscriminator: boolean): Policy { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + executionLogging: json["execution_logging"] == null ? undefined : json["execution_logging"], + component: json["component"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + boundTo: json["bound_to"], + }; +} + +export function PolicyToJSON(json: any): Policy { + return PolicyToJSONTyped(json, false); +} + +export function PolicyToJSONTyped( + value?: Omit< + Policy, + "pk" | "component" | "verbose_name" | "verbose_name_plural" | "meta_model_name" | "bound_to" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + execution_logging: value["executionLogging"], + }; +} diff --git a/packages/client-ts/src/models/PolicyBinding.ts b/packages/client-ts/src/models/PolicyBinding.ts new file mode 100644 index 0000000000..6c677bc117 --- /dev/null +++ b/packages/client-ts/src/models/PolicyBinding.ts @@ -0,0 +1,169 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { PartialGroup } from "./PartialGroup"; +import { PartialGroupFromJSON } from "./PartialGroup"; +import type { PartialUser } from "./PartialUser"; +import { PartialUserFromJSON } from "./PartialUser"; +import type { Policy } from "./Policy"; +import { PolicyFromJSON } from "./Policy"; + +/** + * PolicyBinding Serializer + * @export + * @interface PolicyBinding + */ +export interface PolicyBinding { + /** + * + * @type {string} + * @memberof PolicyBinding + */ + readonly pk: string; + /** + * + * @type {string} + * @memberof PolicyBinding + */ + policy?: string | null; + /** + * + * @type {string} + * @memberof PolicyBinding + */ + group?: string | null; + /** + * + * @type {number} + * @memberof PolicyBinding + */ + user?: number | null; + /** + * + * @type {Policy} + * @memberof PolicyBinding + */ + readonly policyObj: Policy | null; + /** + * + * @type {PartialGroup} + * @memberof PolicyBinding + */ + readonly groupObj: PartialGroup | null; + /** + * + * @type {PartialUser} + * @memberof PolicyBinding + */ + readonly userObj: PartialUser | null; + /** + * + * @type {string} + * @memberof PolicyBinding + */ + target: string; + /** + * Negates the outcome of the policy. Messages are unaffected. + * @type {boolean} + * @memberof PolicyBinding + */ + negate?: boolean; + /** + * + * @type {boolean} + * @memberof PolicyBinding + */ + enabled?: boolean; + /** + * + * @type {number} + * @memberof PolicyBinding + */ + order: number; + /** + * Timeout after which Policy execution is terminated. + * @type {number} + * @memberof PolicyBinding + */ + timeout?: number; + /** + * Result if the Policy execution fails. + * @type {boolean} + * @memberof PolicyBinding + */ + failureResult?: boolean; +} + +/** + * Check if a given object implements the PolicyBinding interface. + */ +export function instanceOfPolicyBinding(value: object): value is PolicyBinding { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("policyObj" in value) || value["policyObj"] === undefined) return false; + if (!("groupObj" in value) || value["groupObj"] === undefined) return false; + if (!("userObj" in value) || value["userObj"] === undefined) return false; + if (!("target" in value) || value["target"] === undefined) return false; + if (!("order" in value) || value["order"] === undefined) return false; + return true; +} + +export function PolicyBindingFromJSON(json: any): PolicyBinding { + return PolicyBindingFromJSONTyped(json, false); +} + +export function PolicyBindingFromJSONTyped(json: any, ignoreDiscriminator: boolean): PolicyBinding { + if (json == null) { + return json; + } + return { + pk: json["pk"], + policy: json["policy"] == null ? undefined : json["policy"], + group: json["group"] == null ? undefined : json["group"], + user: json["user"] == null ? undefined : json["user"], + policyObj: PolicyFromJSON(json["policy_obj"]), + groupObj: PartialGroupFromJSON(json["group_obj"]), + userObj: PartialUserFromJSON(json["user_obj"]), + target: json["target"], + negate: json["negate"] == null ? undefined : json["negate"], + enabled: json["enabled"] == null ? undefined : json["enabled"], + order: json["order"], + timeout: json["timeout"] == null ? undefined : json["timeout"], + failureResult: json["failure_result"] == null ? undefined : json["failure_result"], + }; +} + +export function PolicyBindingToJSON(json: any): PolicyBinding { + return PolicyBindingToJSONTyped(json, false); +} + +export function PolicyBindingToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + policy: value["policy"], + group: value["group"], + user: value["user"], + target: value["target"], + negate: value["negate"], + enabled: value["enabled"], + order: value["order"], + timeout: value["timeout"], + failure_result: value["failureResult"], + }; +} diff --git a/packages/client-ts/src/models/PolicyBindingRequest.ts b/packages/client-ts/src/models/PolicyBindingRequest.ts new file mode 100644 index 0000000000..5fabbaa5eb --- /dev/null +++ b/packages/client-ts/src/models/PolicyBindingRequest.ts @@ -0,0 +1,133 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * PolicyBinding Serializer + * @export + * @interface PolicyBindingRequest + */ +export interface PolicyBindingRequest { + /** + * + * @type {string} + * @memberof PolicyBindingRequest + */ + policy?: string | null; + /** + * + * @type {string} + * @memberof PolicyBindingRequest + */ + group?: string | null; + /** + * + * @type {number} + * @memberof PolicyBindingRequest + */ + user?: number | null; + /** + * + * @type {string} + * @memberof PolicyBindingRequest + */ + target: string; + /** + * Negates the outcome of the policy. Messages are unaffected. + * @type {boolean} + * @memberof PolicyBindingRequest + */ + negate?: boolean; + /** + * + * @type {boolean} + * @memberof PolicyBindingRequest + */ + enabled?: boolean; + /** + * + * @type {number} + * @memberof PolicyBindingRequest + */ + order: number; + /** + * Timeout after which Policy execution is terminated. + * @type {number} + * @memberof PolicyBindingRequest + */ + timeout?: number; + /** + * Result if the Policy execution fails. + * @type {boolean} + * @memberof PolicyBindingRequest + */ + failureResult?: boolean; +} + +/** + * Check if a given object implements the PolicyBindingRequest interface. + */ +export function instanceOfPolicyBindingRequest(value: object): value is PolicyBindingRequest { + if (!("target" in value) || value["target"] === undefined) return false; + if (!("order" in value) || value["order"] === undefined) return false; + return true; +} + +export function PolicyBindingRequestFromJSON(json: any): PolicyBindingRequest { + return PolicyBindingRequestFromJSONTyped(json, false); +} + +export function PolicyBindingRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PolicyBindingRequest { + if (json == null) { + return json; + } + return { + policy: json["policy"] == null ? undefined : json["policy"], + group: json["group"] == null ? undefined : json["group"], + user: json["user"] == null ? undefined : json["user"], + target: json["target"], + negate: json["negate"] == null ? undefined : json["negate"], + enabled: json["enabled"] == null ? undefined : json["enabled"], + order: json["order"], + timeout: json["timeout"] == null ? undefined : json["timeout"], + failureResult: json["failure_result"] == null ? undefined : json["failure_result"], + }; +} + +export function PolicyBindingRequestToJSON(json: any): PolicyBindingRequest { + return PolicyBindingRequestToJSONTyped(json, false); +} + +export function PolicyBindingRequestToJSONTyped( + value?: PolicyBindingRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + policy: value["policy"], + group: value["group"], + user: value["user"], + target: value["target"], + negate: value["negate"], + enabled: value["enabled"], + order: value["order"], + timeout: value["timeout"], + failure_result: value["failureResult"], + }; +} diff --git a/packages/client-ts/src/models/PolicyEngineMode.ts b/packages/client-ts/src/models/PolicyEngineMode.ts new file mode 100644 index 0000000000..cc5816edc1 --- /dev/null +++ b/packages/client-ts/src/models/PolicyEngineMode.ts @@ -0,0 +1,57 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const PolicyEngineMode = { + All: "all", + Any: "any", + UnknownDefaultOpenApi: "11184809", +} as const; +export type PolicyEngineMode = (typeof PolicyEngineMode)[keyof typeof PolicyEngineMode]; + +export function instanceOfPolicyEngineMode(value: any): boolean { + for (const key in PolicyEngineMode) { + if (Object.prototype.hasOwnProperty.call(PolicyEngineMode, key)) { + if (PolicyEngineMode[key as keyof typeof PolicyEngineMode] === value) { + return true; + } + } + } + return false; +} + +export function PolicyEngineModeFromJSON(json: any): PolicyEngineMode { + return PolicyEngineModeFromJSONTyped(json, false); +} + +export function PolicyEngineModeFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PolicyEngineMode { + return json as PolicyEngineMode; +} + +export function PolicyEngineModeToJSON(value?: PolicyEngineMode | null): any { + return value as any; +} + +export function PolicyEngineModeToJSONTyped( + value: any, + ignoreDiscriminator: boolean, +): PolicyEngineMode { + return value as PolicyEngineMode; +} diff --git a/packages/client-ts/src/models/PolicyTestRequest.ts b/packages/client-ts/src/models/PolicyTestRequest.ts new file mode 100644 index 0000000000..b30c096d05 --- /dev/null +++ b/packages/client-ts/src/models/PolicyTestRequest.ts @@ -0,0 +1,76 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Test policy execution for a user with context + * @export + * @interface PolicyTestRequest + */ +export interface PolicyTestRequest { + /** + * + * @type {number} + * @memberof PolicyTestRequest + */ + user: number; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PolicyTestRequest + */ + context?: { [key: string]: any }; +} + +/** + * Check if a given object implements the PolicyTestRequest interface. + */ +export function instanceOfPolicyTestRequest(value: object): value is PolicyTestRequest { + if (!("user" in value) || value["user"] === undefined) return false; + return true; +} + +export function PolicyTestRequestFromJSON(json: any): PolicyTestRequest { + return PolicyTestRequestFromJSONTyped(json, false); +} + +export function PolicyTestRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PolicyTestRequest { + if (json == null) { + return json; + } + return { + user: json["user"], + context: json["context"] == null ? undefined : json["context"], + }; +} + +export function PolicyTestRequestToJSON(json: any): PolicyTestRequest { + return PolicyTestRequestToJSONTyped(json, false); +} + +export function PolicyTestRequestToJSONTyped( + value?: PolicyTestRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + user: value["user"], + context: value["context"], + }; +} diff --git a/packages/client-ts/src/models/PolicyTestResult.ts b/packages/client-ts/src/models/PolicyTestResult.ts new file mode 100644 index 0000000000..7c49098356 --- /dev/null +++ b/packages/client-ts/src/models/PolicyTestResult.ts @@ -0,0 +1,87 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { LogEvent } from "./LogEvent"; +import { LogEventFromJSON } from "./LogEvent"; + +/** + * result of a policy test + * @export + * @interface PolicyTestResult + */ +export interface PolicyTestResult { + /** + * + * @type {boolean} + * @memberof PolicyTestResult + */ + passing: boolean; + /** + * + * @type {Array} + * @memberof PolicyTestResult + */ + readonly messages: Array; + /** + * + * @type {Array} + * @memberof PolicyTestResult + */ + readonly logMessages: Array; +} + +/** + * Check if a given object implements the PolicyTestResult interface. + */ +export function instanceOfPolicyTestResult(value: object): value is PolicyTestResult { + if (!("passing" in value) || value["passing"] === undefined) return false; + if (!("messages" in value) || value["messages"] === undefined) return false; + if (!("logMessages" in value) || value["logMessages"] === undefined) return false; + return true; +} + +export function PolicyTestResultFromJSON(json: any): PolicyTestResult { + return PolicyTestResultFromJSONTyped(json, false); +} + +export function PolicyTestResultFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PolicyTestResult { + if (json == null) { + return json; + } + return { + passing: json["passing"], + messages: json["messages"], + logMessages: (json["log_messages"] as Array).map(LogEventFromJSON), + }; +} + +export function PolicyTestResultToJSON(json: any): PolicyTestResult { + return PolicyTestResultToJSONTyped(json, false); +} + +export function PolicyTestResultToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + passing: value["passing"], + }; +} diff --git a/packages/client-ts/src/models/Process.ts b/packages/client-ts/src/models/Process.ts new file mode 100644 index 0000000000..3fa5dd5a76 --- /dev/null +++ b/packages/client-ts/src/models/Process.ts @@ -0,0 +1,82 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + * @interface Process + */ +export interface Process { + /** + * + * @type {number} + * @memberof Process + */ + id: number; + /** + * + * @type {string} + * @memberof Process + */ + name: string; + /** + * + * @type {string} + * @memberof Process + */ + user?: string; +} + +/** + * Check if a given object implements the Process interface. + */ +export function instanceOfProcess(value: object): value is Process { + if (!("id" in value) || value["id"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + return true; +} + +export function ProcessFromJSON(json: any): Process { + return ProcessFromJSONTyped(json, false); +} + +export function ProcessFromJSONTyped(json: any, ignoreDiscriminator: boolean): Process { + if (json == null) { + return json; + } + return { + id: json["id"], + name: json["name"], + user: json["user"] == null ? undefined : json["user"], + }; +} + +export function ProcessToJSON(json: any): Process { + return ProcessToJSONTyped(json, false); +} + +export function ProcessToJSONTyped( + value?: Process | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + id: value["id"], + name: value["name"], + user: value["user"], + }; +} diff --git a/packages/client-ts/src/models/ProcessRequest.ts b/packages/client-ts/src/models/ProcessRequest.ts new file mode 100644 index 0000000000..56d90fd79c --- /dev/null +++ b/packages/client-ts/src/models/ProcessRequest.ts @@ -0,0 +1,85 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + * @interface ProcessRequest + */ +export interface ProcessRequest { + /** + * + * @type {number} + * @memberof ProcessRequest + */ + id: number; + /** + * + * @type {string} + * @memberof ProcessRequest + */ + name: string; + /** + * + * @type {string} + * @memberof ProcessRequest + */ + user?: string; +} + +/** + * Check if a given object implements the ProcessRequest interface. + */ +export function instanceOfProcessRequest(value: object): value is ProcessRequest { + if (!("id" in value) || value["id"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + return true; +} + +export function ProcessRequestFromJSON(json: any): ProcessRequest { + return ProcessRequestFromJSONTyped(json, false); +} + +export function ProcessRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): ProcessRequest { + if (json == null) { + return json; + } + return { + id: json["id"], + name: json["name"], + user: json["user"] == null ? undefined : json["user"], + }; +} + +export function ProcessRequestToJSON(json: any): ProcessRequest { + return ProcessRequestToJSONTyped(json, false); +} + +export function ProcessRequestToJSONTyped( + value?: ProcessRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + id: value["id"], + name: value["name"], + user: value["user"], + }; +} diff --git a/packages/client-ts/src/models/Prompt.ts b/packages/client-ts/src/models/Prompt.ts new file mode 100644 index 0000000000..430ce8b6c5 --- /dev/null +++ b/packages/client-ts/src/models/Prompt.ts @@ -0,0 +1,171 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { PromptStage } from "./PromptStage"; +import { PromptStageFromJSON } from "./PromptStage"; +import type { PromptTypeEnum } from "./PromptTypeEnum"; +import { PromptTypeEnumFromJSON, PromptTypeEnumToJSON } from "./PromptTypeEnum"; + +/** + * Prompt Serializer + * @export + * @interface Prompt + */ +export interface Prompt { + /** + * + * @type {string} + * @memberof Prompt + */ + readonly pk: string; + /** + * + * @type {string} + * @memberof Prompt + */ + name: string; + /** + * Name of the form field, also used to store the value + * @type {string} + * @memberof Prompt + */ + fieldKey: string; + /** + * + * @type {string} + * @memberof Prompt + */ + label: string; + /** + * + * @type {PromptTypeEnum} + * @memberof Prompt + */ + type: PromptTypeEnum; + /** + * + * @type {boolean} + * @memberof Prompt + */ + required?: boolean; + /** + * Optionally provide a short hint that describes the expected input value. When creating a fixed choice field, enable interpreting as expression and return a list to return multiple choices. + * @type {string} + * @memberof Prompt + */ + placeholder?: string; + /** + * Optionally pre-fill the input with an initial value. When creating a fixed choice field, enable interpreting as expression and return a list to return multiple default choices. + * @type {string} + * @memberof Prompt + */ + initialValue?: string; + /** + * + * @type {number} + * @memberof Prompt + */ + order?: number; + /** + * + * @type {Array} + * @memberof Prompt + */ + readonly promptStagesObj: Array; + /** + * + * @type {string} + * @memberof Prompt + */ + subText?: string; + /** + * + * @type {boolean} + * @memberof Prompt + */ + placeholderExpression?: boolean; + /** + * + * @type {boolean} + * @memberof Prompt + */ + initialValueExpression?: boolean; +} + +/** + * Check if a given object implements the Prompt interface. + */ +export function instanceOfPrompt(value: object): value is Prompt { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("fieldKey" in value) || value["fieldKey"] === undefined) return false; + if (!("label" in value) || value["label"] === undefined) return false; + if (!("type" in value) || value["type"] === undefined) return false; + if (!("promptStagesObj" in value) || value["promptStagesObj"] === undefined) return false; + return true; +} + +export function PromptFromJSON(json: any): Prompt { + return PromptFromJSONTyped(json, false); +} + +export function PromptFromJSONTyped(json: any, ignoreDiscriminator: boolean): Prompt { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + fieldKey: json["field_key"], + label: json["label"], + type: PromptTypeEnumFromJSON(json["type"]), + required: json["required"] == null ? undefined : json["required"], + placeholder: json["placeholder"] == null ? undefined : json["placeholder"], + initialValue: json["initial_value"] == null ? undefined : json["initial_value"], + order: json["order"] == null ? undefined : json["order"], + promptStagesObj: (json["prompt_stages_obj"] as Array).map(PromptStageFromJSON), + subText: json["sub_text"] == null ? undefined : json["sub_text"], + placeholderExpression: + json["placeholder_expression"] == null ? undefined : json["placeholder_expression"], + initialValueExpression: + json["initial_value_expression"] == null ? undefined : json["initial_value_expression"], + }; +} + +export function PromptToJSON(json: any): Prompt { + return PromptToJSONTyped(json, false); +} + +export function PromptToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + field_key: value["fieldKey"], + label: value["label"], + type: PromptTypeEnumToJSON(value["type"]), + required: value["required"], + placeholder: value["placeholder"], + initial_value: value["initialValue"], + order: value["order"], + sub_text: value["subText"], + placeholder_expression: value["placeholderExpression"], + initial_value_expression: value["initialValueExpression"], + }; +} diff --git a/packages/client-ts/src/models/PromptChallenge.ts b/packages/client-ts/src/models/PromptChallenge.ts new file mode 100644 index 0000000000..44d602e6df --- /dev/null +++ b/packages/client-ts/src/models/PromptChallenge.ts @@ -0,0 +1,99 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { ContextualFlowInfo } from "./ContextualFlowInfo"; +import { ContextualFlowInfoFromJSON, ContextualFlowInfoToJSON } from "./ContextualFlowInfo"; +import type { ErrorDetail } from "./ErrorDetail"; +import type { StagePrompt } from "./StagePrompt"; +import { StagePromptFromJSON, StagePromptToJSON } from "./StagePrompt"; + +/** + * Initial challenge being sent, define fields + * @export + * @interface PromptChallenge + */ +export interface PromptChallenge { + /** + * + * @type {ContextualFlowInfo} + * @memberof PromptChallenge + */ + flowInfo?: ContextualFlowInfo; + /** + * + * @type {string} + * @memberof PromptChallenge + */ + component?: string; + /** + * + * @type {{ [key: string]: Array; }} + * @memberof PromptChallenge + */ + responseErrors?: { [key: string]: Array }; + /** + * + * @type {Array} + * @memberof PromptChallenge + */ + fields: Array; +} + +/** + * Check if a given object implements the PromptChallenge interface. + */ +export function instanceOfPromptChallenge(value: object): value is PromptChallenge { + if (!("fields" in value) || value["fields"] === undefined) return false; + return true; +} + +export function PromptChallengeFromJSON(json: any): PromptChallenge { + return PromptChallengeFromJSONTyped(json, false); +} + +export function PromptChallengeFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PromptChallenge { + if (json == null) { + return json; + } + return { + flowInfo: + json["flow_info"] == null ? undefined : ContextualFlowInfoFromJSON(json["flow_info"]), + component: json["component"] == null ? undefined : json["component"], + responseErrors: json["response_errors"] == null ? undefined : json["response_errors"], + fields: (json["fields"] as Array).map(StagePromptFromJSON), + }; +} + +export function PromptChallengeToJSON(json: any): PromptChallenge { + return PromptChallengeToJSONTyped(json, false); +} + +export function PromptChallengeToJSONTyped( + value?: PromptChallenge | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + flow_info: ContextualFlowInfoToJSON(value["flowInfo"]), + component: value["component"], + response_errors: value["responseErrors"], + fields: (value["fields"] as Array).map(StagePromptToJSON), + }; +} diff --git a/packages/client-ts/src/models/PromptChallengeResponseRequest.ts b/packages/client-ts/src/models/PromptChallengeResponseRequest.ts new file mode 100644 index 0000000000..e7eaee593a --- /dev/null +++ b/packages/client-ts/src/models/PromptChallengeResponseRequest.ts @@ -0,0 +1,73 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Validate response, fields are dynamically created based + * on the stage + * @export + * @interface PromptChallengeResponseRequest + */ +export interface PromptChallengeResponseRequest { + [key: string]: any | any; + /** + * + * @type {string} + * @memberof PromptChallengeResponseRequest + */ + component?: string; +} + +/** + * Check if a given object implements the PromptChallengeResponseRequest interface. + */ +export function instanceOfPromptChallengeResponseRequest( + value: object, +): value is PromptChallengeResponseRequest { + return true; +} + +export function PromptChallengeResponseRequestFromJSON(json: any): PromptChallengeResponseRequest { + return PromptChallengeResponseRequestFromJSONTyped(json, false); +} + +export function PromptChallengeResponseRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PromptChallengeResponseRequest { + if (json == null) { + return json; + } + return { + ...json, + component: json["component"] == null ? undefined : json["component"], + }; +} + +export function PromptChallengeResponseRequestToJSON(json: any): PromptChallengeResponseRequest { + return PromptChallengeResponseRequestToJSONTyped(json, false); +} + +export function PromptChallengeResponseRequestToJSONTyped( + value?: PromptChallengeResponseRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + ...value, + component: value["component"], + }; +} diff --git a/packages/client-ts/src/models/PromptChoice.ts b/packages/client-ts/src/models/PromptChoice.ts new file mode 100644 index 0000000000..6513dec0e0 --- /dev/null +++ b/packages/client-ts/src/models/PromptChoice.ts @@ -0,0 +1,74 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Serializer for a single Choice field + * @export + * @interface PromptChoice + */ +export interface PromptChoice { + /** + * + * @type {string} + * @memberof PromptChoice + */ + value: string; + /** + * + * @type {string} + * @memberof PromptChoice + */ + label: string; +} + +/** + * Check if a given object implements the PromptChoice interface. + */ +export function instanceOfPromptChoice(value: object): value is PromptChoice { + if (!("value" in value) || value["value"] === undefined) return false; + if (!("label" in value) || value["label"] === undefined) return false; + return true; +} + +export function PromptChoiceFromJSON(json: any): PromptChoice { + return PromptChoiceFromJSONTyped(json, false); +} + +export function PromptChoiceFromJSONTyped(json: any, ignoreDiscriminator: boolean): PromptChoice { + if (json == null) { + return json; + } + return { + value: json["value"], + label: json["label"], + }; +} + +export function PromptChoiceToJSON(json: any): PromptChoice { + return PromptChoiceToJSONTyped(json, false); +} + +export function PromptChoiceToJSONTyped( + value?: PromptChoice | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + value: value["value"], + label: value["label"], + }; +} diff --git a/packages/client-ts/src/models/PromptRequest.ts b/packages/client-ts/src/models/PromptRequest.ts new file mode 100644 index 0000000000..a8a239f45e --- /dev/null +++ b/packages/client-ts/src/models/PromptRequest.ts @@ -0,0 +1,153 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { PromptTypeEnum } from "./PromptTypeEnum"; +import { PromptTypeEnumFromJSON, PromptTypeEnumToJSON } from "./PromptTypeEnum"; + +/** + * Prompt Serializer + * @export + * @interface PromptRequest + */ +export interface PromptRequest { + /** + * + * @type {string} + * @memberof PromptRequest + */ + name: string; + /** + * Name of the form field, also used to store the value + * @type {string} + * @memberof PromptRequest + */ + fieldKey: string; + /** + * + * @type {string} + * @memberof PromptRequest + */ + label: string; + /** + * + * @type {PromptTypeEnum} + * @memberof PromptRequest + */ + type: PromptTypeEnum; + /** + * + * @type {boolean} + * @memberof PromptRequest + */ + required?: boolean; + /** + * Optionally provide a short hint that describes the expected input value. When creating a fixed choice field, enable interpreting as expression and return a list to return multiple choices. + * @type {string} + * @memberof PromptRequest + */ + placeholder?: string; + /** + * Optionally pre-fill the input with an initial value. When creating a fixed choice field, enable interpreting as expression and return a list to return multiple default choices. + * @type {string} + * @memberof PromptRequest + */ + initialValue?: string; + /** + * + * @type {number} + * @memberof PromptRequest + */ + order?: number; + /** + * + * @type {string} + * @memberof PromptRequest + */ + subText?: string; + /** + * + * @type {boolean} + * @memberof PromptRequest + */ + placeholderExpression?: boolean; + /** + * + * @type {boolean} + * @memberof PromptRequest + */ + initialValueExpression?: boolean; +} + +/** + * Check if a given object implements the PromptRequest interface. + */ +export function instanceOfPromptRequest(value: object): value is PromptRequest { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("fieldKey" in value) || value["fieldKey"] === undefined) return false; + if (!("label" in value) || value["label"] === undefined) return false; + if (!("type" in value) || value["type"] === undefined) return false; + return true; +} + +export function PromptRequestFromJSON(json: any): PromptRequest { + return PromptRequestFromJSONTyped(json, false); +} + +export function PromptRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): PromptRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + fieldKey: json["field_key"], + label: json["label"], + type: PromptTypeEnumFromJSON(json["type"]), + required: json["required"] == null ? undefined : json["required"], + placeholder: json["placeholder"] == null ? undefined : json["placeholder"], + initialValue: json["initial_value"] == null ? undefined : json["initial_value"], + order: json["order"] == null ? undefined : json["order"], + subText: json["sub_text"] == null ? undefined : json["sub_text"], + placeholderExpression: + json["placeholder_expression"] == null ? undefined : json["placeholder_expression"], + initialValueExpression: + json["initial_value_expression"] == null ? undefined : json["initial_value_expression"], + }; +} + +export function PromptRequestToJSON(json: any): PromptRequest { + return PromptRequestToJSONTyped(json, false); +} + +export function PromptRequestToJSONTyped( + value?: PromptRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + field_key: value["fieldKey"], + label: value["label"], + type: PromptTypeEnumToJSON(value["type"]), + required: value["required"], + placeholder: value["placeholder"], + initial_value: value["initialValue"], + order: value["order"], + sub_text: value["subText"], + placeholder_expression: value["placeholderExpression"], + initial_value_expression: value["initialValueExpression"], + }; +} diff --git a/packages/client-ts/src/models/PromptStage.ts b/packages/client-ts/src/models/PromptStage.ts new file mode 100644 index 0000000000..36ea1bb68c --- /dev/null +++ b/packages/client-ts/src/models/PromptStage.ts @@ -0,0 +1,137 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { FlowSet } from "./FlowSet"; +import { FlowSetFromJSON } from "./FlowSet"; + +/** + * PromptStage Serializer + * @export + * @interface PromptStage + */ +export interface PromptStage { + /** + * + * @type {string} + * @memberof PromptStage + */ + readonly pk: string; + /** + * + * @type {string} + * @memberof PromptStage + */ + name: string; + /** + * Get object type so that we know how to edit the object + * @type {string} + * @memberof PromptStage + */ + readonly component: string; + /** + * Return object's verbose_name + * @type {string} + * @memberof PromptStage + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof PromptStage + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof PromptStage + */ + readonly metaModelName: string; + /** + * + * @type {Array} + * @memberof PromptStage + */ + readonly flowSet: Array; + /** + * + * @type {Array} + * @memberof PromptStage + */ + fields: Array; + /** + * + * @type {Array} + * @memberof PromptStage + */ + validationPolicies?: Array; +} + +/** + * Check if a given object implements the PromptStage interface. + */ +export function instanceOfPromptStage(value: object): value is PromptStage { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + if (!("flowSet" in value) || value["flowSet"] === undefined) return false; + if (!("fields" in value) || value["fields"] === undefined) return false; + return true; +} + +export function PromptStageFromJSON(json: any): PromptStage { + return PromptStageFromJSONTyped(json, false); +} + +export function PromptStageFromJSONTyped(json: any, ignoreDiscriminator: boolean): PromptStage { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + component: json["component"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + flowSet: (json["flow_set"] as Array).map(FlowSetFromJSON), + fields: json["fields"], + validationPolicies: + json["validation_policies"] == null ? undefined : json["validation_policies"], + }; +} + +export function PromptStageToJSON(json: any): PromptStage { + return PromptStageToJSONTyped(json, false); +} + +export function PromptStageToJSONTyped( + value?: Omit< + PromptStage, + "pk" | "component" | "verbose_name" | "verbose_name_plural" | "meta_model_name" | "flow_set" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + fields: value["fields"], + validation_policies: value["validationPolicies"], + }; +} diff --git a/packages/client-ts/src/models/PromptStageRequest.ts b/packages/client-ts/src/models/PromptStageRequest.ts new file mode 100644 index 0000000000..ed8903cbf4 --- /dev/null +++ b/packages/client-ts/src/models/PromptStageRequest.ts @@ -0,0 +1,86 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * PromptStage Serializer + * @export + * @interface PromptStageRequest + */ +export interface PromptStageRequest { + /** + * + * @type {string} + * @memberof PromptStageRequest + */ + name: string; + /** + * + * @type {Array} + * @memberof PromptStageRequest + */ + fields: Array; + /** + * + * @type {Array} + * @memberof PromptStageRequest + */ + validationPolicies?: Array; +} + +/** + * Check if a given object implements the PromptStageRequest interface. + */ +export function instanceOfPromptStageRequest(value: object): value is PromptStageRequest { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("fields" in value) || value["fields"] === undefined) return false; + return true; +} + +export function PromptStageRequestFromJSON(json: any): PromptStageRequest { + return PromptStageRequestFromJSONTyped(json, false); +} + +export function PromptStageRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PromptStageRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + fields: json["fields"], + validationPolicies: + json["validation_policies"] == null ? undefined : json["validation_policies"], + }; +} + +export function PromptStageRequestToJSON(json: any): PromptStageRequest { + return PromptStageRequestToJSONTyped(json, false); +} + +export function PromptStageRequestToJSONTyped( + value?: PromptStageRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + fields: value["fields"], + validation_policies: value["validationPolicies"], + }; +} diff --git a/packages/client-ts/src/models/PromptTypeEnum.ts b/packages/client-ts/src/models/PromptTypeEnum.ts new file mode 100644 index 0000000000..bc3783ebd2 --- /dev/null +++ b/packages/client-ts/src/models/PromptTypeEnum.ts @@ -0,0 +1,76 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const PromptTypeEnum = { + Text: "text", + TextArea: "text_area", + TextReadOnly: "text_read_only", + TextAreaReadOnly: "text_area_read_only", + Username: "username", + Email: "email", + Password: "password", + Number: "number", + Checkbox: "checkbox", + RadioButtonGroup: "radio-button-group", + Dropdown: "dropdown", + Date: "date", + DateTime: "date-time", + File: "file", + Separator: "separator", + Hidden: "hidden", + Static: "static", + AlertInfo: "alert_info", + AlertWarning: "alert_warning", + AlertDanger: "alert_danger", + AkLocale: "ak-locale", + UnknownDefaultOpenApi: "11184809", +} as const; +export type PromptTypeEnum = (typeof PromptTypeEnum)[keyof typeof PromptTypeEnum]; + +export function instanceOfPromptTypeEnum(value: any): boolean { + for (const key in PromptTypeEnum) { + if (Object.prototype.hasOwnProperty.call(PromptTypeEnum, key)) { + if (PromptTypeEnum[key as keyof typeof PromptTypeEnum] === value) { + return true; + } + } + } + return false; +} + +export function PromptTypeEnumFromJSON(json: any): PromptTypeEnum { + return PromptTypeEnumFromJSONTyped(json, false); +} + +export function PromptTypeEnumFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PromptTypeEnum { + return json as PromptTypeEnum; +} + +export function PromptTypeEnumToJSON(value?: PromptTypeEnum | null): any { + return value as any; +} + +export function PromptTypeEnumToJSONTyped( + value: any, + ignoreDiscriminator: boolean, +): PromptTypeEnum { + return value as PromptTypeEnum; +} diff --git a/packages/client-ts/src/models/PropertyMapping.ts b/packages/client-ts/src/models/PropertyMapping.ts new file mode 100644 index 0000000000..271a85cbba --- /dev/null +++ b/packages/client-ts/src/models/PropertyMapping.ts @@ -0,0 +1,128 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * PropertyMapping Serializer + * @export + * @interface PropertyMapping + */ +export interface PropertyMapping { + /** + * + * @type {string} + * @memberof PropertyMapping + */ + readonly pk: string; + /** + * Objects that are managed by authentik. These objects are created and updated automatically. This flag only indicates that an object can be overwritten by migrations. You can still modify the objects via the API, but expect changes to be overwritten in a later update. + * @type {string} + * @memberof PropertyMapping + */ + managed?: string | null; + /** + * + * @type {string} + * @memberof PropertyMapping + */ + name: string; + /** + * + * @type {string} + * @memberof PropertyMapping + */ + expression: string; + /** + * Get object's component so that we know how to edit the object + * @type {string} + * @memberof PropertyMapping + */ + readonly component: string; + /** + * Return object's verbose_name + * @type {string} + * @memberof PropertyMapping + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof PropertyMapping + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof PropertyMapping + */ + readonly metaModelName: string; +} + +/** + * Check if a given object implements the PropertyMapping interface. + */ +export function instanceOfPropertyMapping(value: object): value is PropertyMapping { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("expression" in value) || value["expression"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + return true; +} + +export function PropertyMappingFromJSON(json: any): PropertyMapping { + return PropertyMappingFromJSONTyped(json, false); +} + +export function PropertyMappingFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PropertyMapping { + if (json == null) { + return json; + } + return { + pk: json["pk"], + managed: json["managed"] == null ? undefined : json["managed"], + name: json["name"], + expression: json["expression"], + component: json["component"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + }; +} + +export function PropertyMappingToJSON(json: any): PropertyMapping { + return PropertyMappingToJSONTyped(json, false); +} + +export function PropertyMappingToJSONTyped( + value?: Omit< + PropertyMapping, + "pk" | "component" | "verbose_name" | "verbose_name_plural" | "meta_model_name" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + managed: value["managed"], + name: value["name"], + expression: value["expression"], + }; +} diff --git a/packages/client-ts/src/models/PropertyMappingPreview.ts b/packages/client-ts/src/models/PropertyMappingPreview.ts new file mode 100644 index 0000000000..1b458bb7e7 --- /dev/null +++ b/packages/client-ts/src/models/PropertyMappingPreview.ts @@ -0,0 +1,66 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Preview how the current user is mapped via the property mappings selected in a provider + * @export + * @interface PropertyMappingPreview + */ +export interface PropertyMappingPreview { + /** + * + * @type {{ [key: string]: any; }} + * @memberof PropertyMappingPreview + */ + readonly preview: { [key: string]: any }; +} + +/** + * Check if a given object implements the PropertyMappingPreview interface. + */ +export function instanceOfPropertyMappingPreview(value: object): value is PropertyMappingPreview { + if (!("preview" in value) || value["preview"] === undefined) return false; + return true; +} + +export function PropertyMappingPreviewFromJSON(json: any): PropertyMappingPreview { + return PropertyMappingPreviewFromJSONTyped(json, false); +} + +export function PropertyMappingPreviewFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PropertyMappingPreview { + if (json == null) { + return json; + } + return { + preview: json["preview"], + }; +} + +export function PropertyMappingPreviewToJSON(json: any): PropertyMappingPreview { + return PropertyMappingPreviewToJSONTyped(json, false); +} + +export function PropertyMappingPreviewToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return {}; +} diff --git a/packages/client-ts/src/models/PropertyMappingTestRequest.ts b/packages/client-ts/src/models/PropertyMappingTestRequest.ts new file mode 100644 index 0000000000..3d32c82d33 --- /dev/null +++ b/packages/client-ts/src/models/PropertyMappingTestRequest.ts @@ -0,0 +1,85 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Test property mapping execution for a user/group with context + * @export + * @interface PropertyMappingTestRequest + */ +export interface PropertyMappingTestRequest { + /** + * + * @type {number} + * @memberof PropertyMappingTestRequest + */ + user?: number | null; + /** + * + * @type {{ [key: string]: any; }} + * @memberof PropertyMappingTestRequest + */ + context?: { [key: string]: any }; + /** + * + * @type {string} + * @memberof PropertyMappingTestRequest + */ + group?: string | null; +} + +/** + * Check if a given object implements the PropertyMappingTestRequest interface. + */ +export function instanceOfPropertyMappingTestRequest( + value: object, +): value is PropertyMappingTestRequest { + return true; +} + +export function PropertyMappingTestRequestFromJSON(json: any): PropertyMappingTestRequest { + return PropertyMappingTestRequestFromJSONTyped(json, false); +} + +export function PropertyMappingTestRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PropertyMappingTestRequest { + if (json == null) { + return json; + } + return { + user: json["user"] == null ? undefined : json["user"], + context: json["context"] == null ? undefined : json["context"], + group: json["group"] == null ? undefined : json["group"], + }; +} + +export function PropertyMappingTestRequestToJSON(json: any): PropertyMappingTestRequest { + return PropertyMappingTestRequestToJSONTyped(json, false); +} + +export function PropertyMappingTestRequestToJSONTyped( + value?: PropertyMappingTestRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + user: value["user"], + context: value["context"], + group: value["group"], + }; +} diff --git a/packages/client-ts/src/models/PropertyMappingTestResult.ts b/packages/client-ts/src/models/PropertyMappingTestResult.ts new file mode 100644 index 0000000000..0e49653087 --- /dev/null +++ b/packages/client-ts/src/models/PropertyMappingTestResult.ts @@ -0,0 +1,76 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Result of a Property-mapping test + * @export + * @interface PropertyMappingTestResult + */ +export interface PropertyMappingTestResult { + /** + * + * @type {string} + * @memberof PropertyMappingTestResult + */ + readonly result: string; + /** + * + * @type {boolean} + * @memberof PropertyMappingTestResult + */ + readonly successful: boolean; +} + +/** + * Check if a given object implements the PropertyMappingTestResult interface. + */ +export function instanceOfPropertyMappingTestResult( + value: object, +): value is PropertyMappingTestResult { + if (!("result" in value) || value["result"] === undefined) return false; + if (!("successful" in value) || value["successful"] === undefined) return false; + return true; +} + +export function PropertyMappingTestResultFromJSON(json: any): PropertyMappingTestResult { + return PropertyMappingTestResultFromJSONTyped(json, false); +} + +export function PropertyMappingTestResultFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PropertyMappingTestResult { + if (json == null) { + return json; + } + return { + result: json["result"], + successful: json["successful"], + }; +} + +export function PropertyMappingTestResultToJSON(json: any): PropertyMappingTestResult { + return PropertyMappingTestResultToJSONTyped(json, false); +} + +export function PropertyMappingTestResultToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return {}; +} diff --git a/packages/client-ts/src/models/ProtocolEnum.ts b/packages/client-ts/src/models/ProtocolEnum.ts new file mode 100644 index 0000000000..93d27c6785 --- /dev/null +++ b/packages/client-ts/src/models/ProtocolEnum.ts @@ -0,0 +1,52 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const ProtocolEnum = { + Rdp: "rdp", + Vnc: "vnc", + Ssh: "ssh", + UnknownDefaultOpenApi: "11184809", +} as const; +export type ProtocolEnum = (typeof ProtocolEnum)[keyof typeof ProtocolEnum]; + +export function instanceOfProtocolEnum(value: any): boolean { + for (const key in ProtocolEnum) { + if (Object.prototype.hasOwnProperty.call(ProtocolEnum, key)) { + if (ProtocolEnum[key as keyof typeof ProtocolEnum] === value) { + return true; + } + } + } + return false; +} + +export function ProtocolEnumFromJSON(json: any): ProtocolEnum { + return ProtocolEnumFromJSONTyped(json, false); +} + +export function ProtocolEnumFromJSONTyped(json: any, ignoreDiscriminator: boolean): ProtocolEnum { + return json as ProtocolEnum; +} + +export function ProtocolEnumToJSON(value?: ProtocolEnum | null): any { + return value as any; +} + +export function ProtocolEnumToJSONTyped(value: any, ignoreDiscriminator: boolean): ProtocolEnum { + return value as ProtocolEnum; +} diff --git a/packages/client-ts/src/models/Provider.ts b/packages/client-ts/src/models/Provider.ts new file mode 100644 index 0000000000..0829180aa8 --- /dev/null +++ b/packages/client-ts/src/models/Provider.ts @@ -0,0 +1,193 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Provider Serializer + * @export + * @interface Provider + */ +export interface Provider { + /** + * + * @type {number} + * @memberof Provider + */ + readonly pk: number; + /** + * + * @type {string} + * @memberof Provider + */ + name: string; + /** + * Flow used for authentication when the associated application is accessed by an un-authenticated user. + * @type {string} + * @memberof Provider + */ + authenticationFlow?: string | null; + /** + * Flow used when authorizing this provider. + * @type {string} + * @memberof Provider + */ + authorizationFlow: string; + /** + * Flow used ending the session from a provider. + * @type {string} + * @memberof Provider + */ + invalidationFlow: string; + /** + * + * @type {Array} + * @memberof Provider + */ + propertyMappings?: Array; + /** + * Get object component so that we know how to edit the object + * @type {string} + * @memberof Provider + */ + readonly component: string; + /** + * Internal application name, used in URLs. + * @type {string} + * @memberof Provider + */ + readonly assignedApplicationSlug: string | null; + /** + * Application's display Name. + * @type {string} + * @memberof Provider + */ + readonly assignedApplicationName: string | null; + /** + * Internal application name, used in URLs. + * @type {string} + * @memberof Provider + */ + readonly assignedBackchannelApplicationSlug: string | null; + /** + * Application's display Name. + * @type {string} + * @memberof Provider + */ + readonly assignedBackchannelApplicationName: string | null; + /** + * Return object's verbose_name + * @type {string} + * @memberof Provider + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof Provider + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof Provider + */ + readonly metaModelName: string; +} + +/** + * Check if a given object implements the Provider interface. + */ +export function instanceOfProvider(value: object): value is Provider { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("authorizationFlow" in value) || value["authorizationFlow"] === undefined) return false; + if (!("invalidationFlow" in value) || value["invalidationFlow"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if (!("assignedApplicationSlug" in value) || value["assignedApplicationSlug"] === undefined) + return false; + if (!("assignedApplicationName" in value) || value["assignedApplicationName"] === undefined) + return false; + if ( + !("assignedBackchannelApplicationSlug" in value) || + value["assignedBackchannelApplicationSlug"] === undefined + ) + return false; + if ( + !("assignedBackchannelApplicationName" in value) || + value["assignedBackchannelApplicationName"] === undefined + ) + return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + return true; +} + +export function ProviderFromJSON(json: any): Provider { + return ProviderFromJSONTyped(json, false); +} + +export function ProviderFromJSONTyped(json: any, ignoreDiscriminator: boolean): Provider { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + authenticationFlow: + json["authentication_flow"] == null ? undefined : json["authentication_flow"], + authorizationFlow: json["authorization_flow"], + invalidationFlow: json["invalidation_flow"], + propertyMappings: json["property_mappings"] == null ? undefined : json["property_mappings"], + component: json["component"], + assignedApplicationSlug: json["assigned_application_slug"], + assignedApplicationName: json["assigned_application_name"], + assignedBackchannelApplicationSlug: json["assigned_backchannel_application_slug"], + assignedBackchannelApplicationName: json["assigned_backchannel_application_name"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + }; +} + +export function ProviderToJSON(json: any): Provider { + return ProviderToJSONTyped(json, false); +} + +export function ProviderToJSONTyped( + value?: Omit< + Provider, + | "pk" + | "component" + | "assigned_application_slug" + | "assigned_application_name" + | "assigned_backchannel_application_slug" + | "assigned_backchannel_application_name" + | "verbose_name" + | "verbose_name_plural" + | "meta_model_name" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + authentication_flow: value["authenticationFlow"], + authorization_flow: value["authorizationFlow"], + invalidation_flow: value["invalidationFlow"], + property_mappings: value["propertyMappings"], + }; +} diff --git a/packages/client-ts/src/models/ProviderEnum.ts b/packages/client-ts/src/models/ProviderEnum.ts new file mode 100644 index 0000000000..983dec7820 --- /dev/null +++ b/packages/client-ts/src/models/ProviderEnum.ts @@ -0,0 +1,51 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const ProviderEnum = { + Twilio: "twilio", + Generic: "generic", + UnknownDefaultOpenApi: "11184809", +} as const; +export type ProviderEnum = (typeof ProviderEnum)[keyof typeof ProviderEnum]; + +export function instanceOfProviderEnum(value: any): boolean { + for (const key in ProviderEnum) { + if (Object.prototype.hasOwnProperty.call(ProviderEnum, key)) { + if (ProviderEnum[key as keyof typeof ProviderEnum] === value) { + return true; + } + } + } + return false; +} + +export function ProviderEnumFromJSON(json: any): ProviderEnum { + return ProviderEnumFromJSONTyped(json, false); +} + +export function ProviderEnumFromJSONTyped(json: any, ignoreDiscriminator: boolean): ProviderEnum { + return json as ProviderEnum; +} + +export function ProviderEnumToJSON(value?: ProviderEnum | null): any { + return value as any; +} + +export function ProviderEnumToJSONTyped(value: any, ignoreDiscriminator: boolean): ProviderEnum { + return value as ProviderEnum; +} diff --git a/packages/client-ts/src/models/ProviderModelEnum.ts b/packages/client-ts/src/models/ProviderModelEnum.ts new file mode 100644 index 0000000000..08e87ee18a --- /dev/null +++ b/packages/client-ts/src/models/ProviderModelEnum.ts @@ -0,0 +1,69 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const ProviderModelEnum = { + AuthentikProvidersGoogleWorkspaceGoogleworkspaceprovider: + "authentik_providers_google_workspace.googleworkspaceprovider", + AuthentikProvidersLdapLdapprovider: "authentik_providers_ldap.ldapprovider", + AuthentikProvidersMicrosoftEntraMicrosoftentraprovider: + "authentik_providers_microsoft_entra.microsoftentraprovider", + AuthentikProvidersOauth2Oauth2provider: "authentik_providers_oauth2.oauth2provider", + AuthentikProvidersProxyProxyprovider: "authentik_providers_proxy.proxyprovider", + AuthentikProvidersRacRacprovider: "authentik_providers_rac.racprovider", + AuthentikProvidersRadiusRadiusprovider: "authentik_providers_radius.radiusprovider", + AuthentikProvidersSamlSamlprovider: "authentik_providers_saml.samlprovider", + AuthentikProvidersScimScimprovider: "authentik_providers_scim.scimprovider", + AuthentikProvidersSsfSsfprovider: "authentik_providers_ssf.ssfprovider", + AuthentikProvidersWsFederationWsfederationprovider: + "authentik_providers_ws_federation.wsfederationprovider", + UnknownDefaultOpenApi: "11184809", +} as const; +export type ProviderModelEnum = (typeof ProviderModelEnum)[keyof typeof ProviderModelEnum]; + +export function instanceOfProviderModelEnum(value: any): boolean { + for (const key in ProviderModelEnum) { + if (Object.prototype.hasOwnProperty.call(ProviderModelEnum, key)) { + if (ProviderModelEnum[key as keyof typeof ProviderModelEnum] === value) { + return true; + } + } + } + return false; +} + +export function ProviderModelEnumFromJSON(json: any): ProviderModelEnum { + return ProviderModelEnumFromJSONTyped(json, false); +} + +export function ProviderModelEnumFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): ProviderModelEnum { + return json as ProviderModelEnum; +} + +export function ProviderModelEnumToJSON(value?: ProviderModelEnum | null): any { + return value as any; +} + +export function ProviderModelEnumToJSONTyped( + value: any, + ignoreDiscriminator: boolean, +): ProviderModelEnum { + return value as ProviderModelEnum; +} diff --git a/packages/client-ts/src/models/ProviderTypeEnum.ts b/packages/client-ts/src/models/ProviderTypeEnum.ts new file mode 100644 index 0000000000..8332d3668c --- /dev/null +++ b/packages/client-ts/src/models/ProviderTypeEnum.ts @@ -0,0 +1,72 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const ProviderTypeEnum = { + Apple: "apple", + Openidconnect: "openidconnect", + Entraid: "entraid", + Azuread: "azuread", + Discord: "discord", + Facebook: "facebook", + Github: "github", + Gitlab: "gitlab", + Google: "google", + Mailcow: "mailcow", + Okta: "okta", + Patreon: "patreon", + Reddit: "reddit", + Slack: "slack", + Twitch: "twitch", + Twitter: "twitter", + Wechat: "wechat", + UnknownDefaultOpenApi: "11184809", +} as const; +export type ProviderTypeEnum = (typeof ProviderTypeEnum)[keyof typeof ProviderTypeEnum]; + +export function instanceOfProviderTypeEnum(value: any): boolean { + for (const key in ProviderTypeEnum) { + if (Object.prototype.hasOwnProperty.call(ProviderTypeEnum, key)) { + if (ProviderTypeEnum[key as keyof typeof ProviderTypeEnum] === value) { + return true; + } + } + } + return false; +} + +export function ProviderTypeEnumFromJSON(json: any): ProviderTypeEnum { + return ProviderTypeEnumFromJSONTyped(json, false); +} + +export function ProviderTypeEnumFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): ProviderTypeEnum { + return json as ProviderTypeEnum; +} + +export function ProviderTypeEnumToJSON(value?: ProviderTypeEnum | null): any { + return value as any; +} + +export function ProviderTypeEnumToJSONTyped( + value: any, + ignoreDiscriminator: boolean, +): ProviderTypeEnum { + return value as ProviderTypeEnum; +} diff --git a/packages/client-ts/src/models/ProxyMode.ts b/packages/client-ts/src/models/ProxyMode.ts new file mode 100644 index 0000000000..10249a8a9b --- /dev/null +++ b/packages/client-ts/src/models/ProxyMode.ts @@ -0,0 +1,52 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const ProxyMode = { + Proxy: "proxy", + ForwardSingle: "forward_single", + ForwardDomain: "forward_domain", + UnknownDefaultOpenApi: "11184809", +} as const; +export type ProxyMode = (typeof ProxyMode)[keyof typeof ProxyMode]; + +export function instanceOfProxyMode(value: any): boolean { + for (const key in ProxyMode) { + if (Object.prototype.hasOwnProperty.call(ProxyMode, key)) { + if (ProxyMode[key as keyof typeof ProxyMode] === value) { + return true; + } + } + } + return false; +} + +export function ProxyModeFromJSON(json: any): ProxyMode { + return ProxyModeFromJSONTyped(json, false); +} + +export function ProxyModeFromJSONTyped(json: any, ignoreDiscriminator: boolean): ProxyMode { + return json as ProxyMode; +} + +export function ProxyModeToJSON(value?: ProxyMode | null): any { + return value as any; +} + +export function ProxyModeToJSONTyped(value: any, ignoreDiscriminator: boolean): ProxyMode { + return value as ProxyMode; +} diff --git a/packages/client-ts/src/models/ProxyOutpostConfig.ts b/packages/client-ts/src/models/ProxyOutpostConfig.ts new file mode 100644 index 0000000000..0c7792c93e --- /dev/null +++ b/packages/client-ts/src/models/ProxyOutpostConfig.ts @@ -0,0 +1,257 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { OpenIDConnectConfiguration } from "./OpenIDConnectConfiguration"; +import { OpenIDConnectConfigurationFromJSON } from "./OpenIDConnectConfiguration"; +import type { ProxyMode } from "./ProxyMode"; +import { ProxyModeFromJSON, ProxyModeToJSON } from "./ProxyMode"; + +/** + * Proxy provider serializer for outposts + * @export + * @interface ProxyOutpostConfig + */ +export interface ProxyOutpostConfig { + /** + * + * @type {number} + * @memberof ProxyOutpostConfig + */ + readonly pk: number; + /** + * + * @type {string} + * @memberof ProxyOutpostConfig + */ + name: string; + /** + * + * @type {string} + * @memberof ProxyOutpostConfig + */ + internalHost?: string; + /** + * + * @type {string} + * @memberof ProxyOutpostConfig + */ + externalHost: string; + /** + * Validate SSL Certificates of upstream servers + * @type {boolean} + * @memberof ProxyOutpostConfig + */ + internalHostSslValidation?: boolean; + /** + * + * @type {string} + * @memberof ProxyOutpostConfig + */ + clientId?: string; + /** + * + * @type {string} + * @memberof ProxyOutpostConfig + */ + clientSecret?: string; + /** + * + * @type {OpenIDConnectConfiguration} + * @memberof ProxyOutpostConfig + */ + readonly oidcConfiguration: OpenIDConnectConfiguration; + /** + * + * @type {string} + * @memberof ProxyOutpostConfig + */ + cookieSecret?: string; + /** + * + * @type {string} + * @memberof ProxyOutpostConfig + */ + certificate?: string | null; + /** + * Regular expressions for which authentication is not required. Each new line is interpreted as a new Regular Expression. + * @type {string} + * @memberof ProxyOutpostConfig + */ + skipPathRegex?: string; + /** + * Set a custom HTTP-Basic Authentication header based on values from authentik. + * @type {boolean} + * @memberof ProxyOutpostConfig + */ + basicAuthEnabled?: boolean; + /** + * User/Group Attribute used for the password part of the HTTP-Basic Header. + * @type {string} + * @memberof ProxyOutpostConfig + */ + basicAuthPasswordAttribute?: string; + /** + * User/Group Attribute used for the user part of the HTTP-Basic Header. If not set, the user's Email address is used. + * @type {string} + * @memberof ProxyOutpostConfig + */ + basicAuthUserAttribute?: string; + /** + * Enable support for forwardAuth in traefik and nginx auth_request. Exclusive with internal_host. + * @type {ProxyMode} + * @memberof ProxyOutpostConfig + */ + mode?: ProxyMode; + /** + * + * @type {string} + * @memberof ProxyOutpostConfig + */ + cookieDomain?: string; + /** + * Get token validity as second count + * @type {number} + * @memberof ProxyOutpostConfig + */ + readonly accessTokenValidity: number | null; + /** + * When enabled, this provider will intercept the authorization header and authenticate requests based on its value. + * @type {boolean} + * @memberof ProxyOutpostConfig + */ + interceptHeaderAuth?: boolean; + /** + * Get all the scope names the outpost should request, + * including custom-defined ones + * @type {Array} + * @memberof ProxyOutpostConfig + */ + readonly scopesToRequest: Array; + /** + * Internal application name, used in URLs. + * @type {string} + * @memberof ProxyOutpostConfig + */ + readonly assignedApplicationSlug: string; + /** + * Application's display Name. + * @type {string} + * @memberof ProxyOutpostConfig + */ + readonly assignedApplicationName: string; +} + +/** + * Check if a given object implements the ProxyOutpostConfig interface. + */ +export function instanceOfProxyOutpostConfig(value: object): value is ProxyOutpostConfig { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("externalHost" in value) || value["externalHost"] === undefined) return false; + if (!("oidcConfiguration" in value) || value["oidcConfiguration"] === undefined) return false; + if (!("accessTokenValidity" in value) || value["accessTokenValidity"] === undefined) + return false; + if (!("scopesToRequest" in value) || value["scopesToRequest"] === undefined) return false; + if (!("assignedApplicationSlug" in value) || value["assignedApplicationSlug"] === undefined) + return false; + if (!("assignedApplicationName" in value) || value["assignedApplicationName"] === undefined) + return false; + return true; +} + +export function ProxyOutpostConfigFromJSON(json: any): ProxyOutpostConfig { + return ProxyOutpostConfigFromJSONTyped(json, false); +} + +export function ProxyOutpostConfigFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): ProxyOutpostConfig { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + internalHost: json["internal_host"] == null ? undefined : json["internal_host"], + externalHost: json["external_host"], + internalHostSslValidation: + json["internal_host_ssl_validation"] == null + ? undefined + : json["internal_host_ssl_validation"], + clientId: json["client_id"] == null ? undefined : json["client_id"], + clientSecret: json["client_secret"] == null ? undefined : json["client_secret"], + oidcConfiguration: OpenIDConnectConfigurationFromJSON(json["oidc_configuration"]), + cookieSecret: json["cookie_secret"] == null ? undefined : json["cookie_secret"], + certificate: json["certificate"] == null ? undefined : json["certificate"], + skipPathRegex: json["skip_path_regex"] == null ? undefined : json["skip_path_regex"], + basicAuthEnabled: + json["basic_auth_enabled"] == null ? undefined : json["basic_auth_enabled"], + basicAuthPasswordAttribute: + json["basic_auth_password_attribute"] == null + ? undefined + : json["basic_auth_password_attribute"], + basicAuthUserAttribute: + json["basic_auth_user_attribute"] == null + ? undefined + : json["basic_auth_user_attribute"], + mode: json["mode"] == null ? undefined : ProxyModeFromJSON(json["mode"]), + cookieDomain: json["cookie_domain"] == null ? undefined : json["cookie_domain"], + accessTokenValidity: json["access_token_validity"], + interceptHeaderAuth: + json["intercept_header_auth"] == null ? undefined : json["intercept_header_auth"], + scopesToRequest: json["scopes_to_request"], + assignedApplicationSlug: json["assigned_application_slug"], + assignedApplicationName: json["assigned_application_name"], + }; +} + +export function ProxyOutpostConfigToJSON(json: any): ProxyOutpostConfig { + return ProxyOutpostConfigToJSONTyped(json, false); +} + +export function ProxyOutpostConfigToJSONTyped( + value?: Omit< + ProxyOutpostConfig, + | "pk" + | "oidc_configuration" + | "access_token_validity" + | "scopes_to_request" + | "assigned_application_slug" + | "assigned_application_name" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + internal_host: value["internalHost"], + external_host: value["externalHost"], + internal_host_ssl_validation: value["internalHostSslValidation"], + client_id: value["clientId"], + client_secret: value["clientSecret"], + cookie_secret: value["cookieSecret"], + certificate: value["certificate"], + skip_path_regex: value["skipPathRegex"], + basic_auth_enabled: value["basicAuthEnabled"], + basic_auth_password_attribute: value["basicAuthPasswordAttribute"], + basic_auth_user_attribute: value["basicAuthUserAttribute"], + mode: ProxyModeToJSON(value["mode"]), + cookie_domain: value["cookieDomain"], + intercept_header_auth: value["interceptHeaderAuth"], + }; +} diff --git a/packages/client-ts/src/models/ProxyProvider.ts b/packages/client-ts/src/models/ProxyProvider.ts new file mode 100644 index 0000000000..47f12e7334 --- /dev/null +++ b/packages/client-ts/src/models/ProxyProvider.ts @@ -0,0 +1,361 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { ProxyMode } from "./ProxyMode"; +import { ProxyModeFromJSON, ProxyModeToJSON } from "./ProxyMode"; +import type { RedirectURI } from "./RedirectURI"; +import { RedirectURIFromJSON } from "./RedirectURI"; + +/** + * ProxyProvider Serializer + * @export + * @interface ProxyProvider + */ +export interface ProxyProvider { + /** + * + * @type {number} + * @memberof ProxyProvider + */ + readonly pk: number; + /** + * + * @type {string} + * @memberof ProxyProvider + */ + name: string; + /** + * Flow used for authentication when the associated application is accessed by an un-authenticated user. + * @type {string} + * @memberof ProxyProvider + */ + authenticationFlow?: string | null; + /** + * Flow used when authorizing this provider. + * @type {string} + * @memberof ProxyProvider + */ + authorizationFlow: string; + /** + * Flow used ending the session from a provider. + * @type {string} + * @memberof ProxyProvider + */ + invalidationFlow: string; + /** + * + * @type {Array} + * @memberof ProxyProvider + */ + propertyMappings?: Array; + /** + * Get object component so that we know how to edit the object + * @type {string} + * @memberof ProxyProvider + */ + readonly component: string; + /** + * Internal application name, used in URLs. + * @type {string} + * @memberof ProxyProvider + */ + readonly assignedApplicationSlug: string | null; + /** + * Application's display Name. + * @type {string} + * @memberof ProxyProvider + */ + readonly assignedApplicationName: string | null; + /** + * Internal application name, used in URLs. + * @type {string} + * @memberof ProxyProvider + */ + readonly assignedBackchannelApplicationSlug: string | null; + /** + * Application's display Name. + * @type {string} + * @memberof ProxyProvider + */ + readonly assignedBackchannelApplicationName: string | null; + /** + * Return object's verbose_name + * @type {string} + * @memberof ProxyProvider + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof ProxyProvider + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof ProxyProvider + */ + readonly metaModelName: string; + /** + * + * @type {string} + * @memberof ProxyProvider + */ + readonly clientId: string; + /** + * + * @type {string} + * @memberof ProxyProvider + */ + internalHost?: string; + /** + * + * @type {string} + * @memberof ProxyProvider + */ + externalHost: string; + /** + * Validate SSL Certificates of upstream servers + * @type {boolean} + * @memberof ProxyProvider + */ + internalHostSslValidation?: boolean; + /** + * + * @type {string} + * @memberof ProxyProvider + */ + certificate?: string | null; + /** + * Regular expressions for which authentication is not required. Each new line is interpreted as a new Regular Expression. + * @type {string} + * @memberof ProxyProvider + */ + skipPathRegex?: string; + /** + * Set a custom HTTP-Basic Authentication header based on values from authentik. + * @type {boolean} + * @memberof ProxyProvider + */ + basicAuthEnabled?: boolean; + /** + * User/Group Attribute used for the password part of the HTTP-Basic Header. + * @type {string} + * @memberof ProxyProvider + */ + basicAuthPasswordAttribute?: string; + /** + * User/Group Attribute used for the user part of the HTTP-Basic Header. If not set, the user's Email address is used. + * @type {string} + * @memberof ProxyProvider + */ + basicAuthUserAttribute?: string; + /** + * Enable support for forwardAuth in traefik and nginx auth_request. Exclusive with internal_host. + * @type {ProxyMode} + * @memberof ProxyProvider + */ + mode?: ProxyMode; + /** + * When enabled, this provider will intercept the authorization header and authenticate requests based on its value. + * @type {boolean} + * @memberof ProxyProvider + */ + interceptHeaderAuth?: boolean; + /** + * + * @type {Array} + * @memberof ProxyProvider + */ + readonly redirectUris: Array; + /** + * + * @type {string} + * @memberof ProxyProvider + */ + cookieDomain?: string; + /** + * + * @type {Array} + * @memberof ProxyProvider + */ + jwtFederationSources?: Array; + /** + * + * @type {Array} + * @memberof ProxyProvider + */ + jwtFederationProviders?: Array; + /** + * Tokens not valid on or after current time + this value (Format: hours=1;minutes=2;seconds=3). + * @type {string} + * @memberof ProxyProvider + */ + accessTokenValidity?: string; + /** + * Tokens not valid on or after current time + this value (Format: hours=1;minutes=2;seconds=3). + * @type {string} + * @memberof ProxyProvider + */ + refreshTokenValidity?: string; + /** + * + * @type {Array} + * @memberof ProxyProvider + */ + readonly outpostSet: Array; +} + +/** + * Check if a given object implements the ProxyProvider interface. + */ +export function instanceOfProxyProvider(value: object): value is ProxyProvider { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("authorizationFlow" in value) || value["authorizationFlow"] === undefined) return false; + if (!("invalidationFlow" in value) || value["invalidationFlow"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if (!("assignedApplicationSlug" in value) || value["assignedApplicationSlug"] === undefined) + return false; + if (!("assignedApplicationName" in value) || value["assignedApplicationName"] === undefined) + return false; + if ( + !("assignedBackchannelApplicationSlug" in value) || + value["assignedBackchannelApplicationSlug"] === undefined + ) + return false; + if ( + !("assignedBackchannelApplicationName" in value) || + value["assignedBackchannelApplicationName"] === undefined + ) + return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + if (!("clientId" in value) || value["clientId"] === undefined) return false; + if (!("externalHost" in value) || value["externalHost"] === undefined) return false; + if (!("redirectUris" in value) || value["redirectUris"] === undefined) return false; + if (!("outpostSet" in value) || value["outpostSet"] === undefined) return false; + return true; +} + +export function ProxyProviderFromJSON(json: any): ProxyProvider { + return ProxyProviderFromJSONTyped(json, false); +} + +export function ProxyProviderFromJSONTyped(json: any, ignoreDiscriminator: boolean): ProxyProvider { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + authenticationFlow: + json["authentication_flow"] == null ? undefined : json["authentication_flow"], + authorizationFlow: json["authorization_flow"], + invalidationFlow: json["invalidation_flow"], + propertyMappings: json["property_mappings"] == null ? undefined : json["property_mappings"], + component: json["component"], + assignedApplicationSlug: json["assigned_application_slug"], + assignedApplicationName: json["assigned_application_name"], + assignedBackchannelApplicationSlug: json["assigned_backchannel_application_slug"], + assignedBackchannelApplicationName: json["assigned_backchannel_application_name"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + clientId: json["client_id"], + internalHost: json["internal_host"] == null ? undefined : json["internal_host"], + externalHost: json["external_host"], + internalHostSslValidation: + json["internal_host_ssl_validation"] == null + ? undefined + : json["internal_host_ssl_validation"], + certificate: json["certificate"] == null ? undefined : json["certificate"], + skipPathRegex: json["skip_path_regex"] == null ? undefined : json["skip_path_regex"], + basicAuthEnabled: + json["basic_auth_enabled"] == null ? undefined : json["basic_auth_enabled"], + basicAuthPasswordAttribute: + json["basic_auth_password_attribute"] == null + ? undefined + : json["basic_auth_password_attribute"], + basicAuthUserAttribute: + json["basic_auth_user_attribute"] == null + ? undefined + : json["basic_auth_user_attribute"], + mode: json["mode"] == null ? undefined : ProxyModeFromJSON(json["mode"]), + interceptHeaderAuth: + json["intercept_header_auth"] == null ? undefined : json["intercept_header_auth"], + redirectUris: (json["redirect_uris"] as Array).map(RedirectURIFromJSON), + cookieDomain: json["cookie_domain"] == null ? undefined : json["cookie_domain"], + jwtFederationSources: + json["jwt_federation_sources"] == null ? undefined : json["jwt_federation_sources"], + jwtFederationProviders: + json["jwt_federation_providers"] == null ? undefined : json["jwt_federation_providers"], + accessTokenValidity: + json["access_token_validity"] == null ? undefined : json["access_token_validity"], + refreshTokenValidity: + json["refresh_token_validity"] == null ? undefined : json["refresh_token_validity"], + outpostSet: json["outpost_set"], + }; +} + +export function ProxyProviderToJSON(json: any): ProxyProvider { + return ProxyProviderToJSONTyped(json, false); +} + +export function ProxyProviderToJSONTyped( + value?: Omit< + ProxyProvider, + | "pk" + | "component" + | "assigned_application_slug" + | "assigned_application_name" + | "assigned_backchannel_application_slug" + | "assigned_backchannel_application_name" + | "verbose_name" + | "verbose_name_plural" + | "meta_model_name" + | "client_id" + | "redirect_uris" + | "outpost_set" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + authentication_flow: value["authenticationFlow"], + authorization_flow: value["authorizationFlow"], + invalidation_flow: value["invalidationFlow"], + property_mappings: value["propertyMappings"], + internal_host: value["internalHost"], + external_host: value["externalHost"], + internal_host_ssl_validation: value["internalHostSslValidation"], + certificate: value["certificate"], + skip_path_regex: value["skipPathRegex"], + basic_auth_enabled: value["basicAuthEnabled"], + basic_auth_password_attribute: value["basicAuthPasswordAttribute"], + basic_auth_user_attribute: value["basicAuthUserAttribute"], + mode: ProxyModeToJSON(value["mode"]), + intercept_header_auth: value["interceptHeaderAuth"], + cookie_domain: value["cookieDomain"], + jwt_federation_sources: value["jwtFederationSources"], + jwt_federation_providers: value["jwtFederationProviders"], + access_token_validity: value["accessTokenValidity"], + refresh_token_validity: value["refreshTokenValidity"], + }; +} diff --git a/packages/client-ts/src/models/ProxyProviderRequest.ts b/packages/client-ts/src/models/ProxyProviderRequest.ts new file mode 100644 index 0000000000..1118307983 --- /dev/null +++ b/packages/client-ts/src/models/ProxyProviderRequest.ts @@ -0,0 +1,242 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { ProxyMode } from "./ProxyMode"; +import { ProxyModeFromJSON, ProxyModeToJSON } from "./ProxyMode"; + +/** + * ProxyProvider Serializer + * @export + * @interface ProxyProviderRequest + */ +export interface ProxyProviderRequest { + /** + * + * @type {string} + * @memberof ProxyProviderRequest + */ + name: string; + /** + * Flow used for authentication when the associated application is accessed by an un-authenticated user. + * @type {string} + * @memberof ProxyProviderRequest + */ + authenticationFlow?: string | null; + /** + * Flow used when authorizing this provider. + * @type {string} + * @memberof ProxyProviderRequest + */ + authorizationFlow: string; + /** + * Flow used ending the session from a provider. + * @type {string} + * @memberof ProxyProviderRequest + */ + invalidationFlow: string; + /** + * + * @type {Array} + * @memberof ProxyProviderRequest + */ + propertyMappings?: Array; + /** + * + * @type {string} + * @memberof ProxyProviderRequest + */ + internalHost?: string; + /** + * + * @type {string} + * @memberof ProxyProviderRequest + */ + externalHost: string; + /** + * Validate SSL Certificates of upstream servers + * @type {boolean} + * @memberof ProxyProviderRequest + */ + internalHostSslValidation?: boolean; + /** + * + * @type {string} + * @memberof ProxyProviderRequest + */ + certificate?: string | null; + /** + * Regular expressions for which authentication is not required. Each new line is interpreted as a new Regular Expression. + * @type {string} + * @memberof ProxyProviderRequest + */ + skipPathRegex?: string; + /** + * Set a custom HTTP-Basic Authentication header based on values from authentik. + * @type {boolean} + * @memberof ProxyProviderRequest + */ + basicAuthEnabled?: boolean; + /** + * User/Group Attribute used for the password part of the HTTP-Basic Header. + * @type {string} + * @memberof ProxyProviderRequest + */ + basicAuthPasswordAttribute?: string; + /** + * User/Group Attribute used for the user part of the HTTP-Basic Header. If not set, the user's Email address is used. + * @type {string} + * @memberof ProxyProviderRequest + */ + basicAuthUserAttribute?: string; + /** + * Enable support for forwardAuth in traefik and nginx auth_request. Exclusive with internal_host. + * @type {ProxyMode} + * @memberof ProxyProviderRequest + */ + mode?: ProxyMode; + /** + * When enabled, this provider will intercept the authorization header and authenticate requests based on its value. + * @type {boolean} + * @memberof ProxyProviderRequest + */ + interceptHeaderAuth?: boolean; + /** + * + * @type {string} + * @memberof ProxyProviderRequest + */ + cookieDomain?: string; + /** + * + * @type {Array} + * @memberof ProxyProviderRequest + */ + jwtFederationSources?: Array; + /** + * + * @type {Array} + * @memberof ProxyProviderRequest + */ + jwtFederationProviders?: Array; + /** + * Tokens not valid on or after current time + this value (Format: hours=1;minutes=2;seconds=3). + * @type {string} + * @memberof ProxyProviderRequest + */ + accessTokenValidity?: string; + /** + * Tokens not valid on or after current time + this value (Format: hours=1;minutes=2;seconds=3). + * @type {string} + * @memberof ProxyProviderRequest + */ + refreshTokenValidity?: string; +} + +/** + * Check if a given object implements the ProxyProviderRequest interface. + */ +export function instanceOfProxyProviderRequest(value: object): value is ProxyProviderRequest { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("authorizationFlow" in value) || value["authorizationFlow"] === undefined) return false; + if (!("invalidationFlow" in value) || value["invalidationFlow"] === undefined) return false; + if (!("externalHost" in value) || value["externalHost"] === undefined) return false; + return true; +} + +export function ProxyProviderRequestFromJSON(json: any): ProxyProviderRequest { + return ProxyProviderRequestFromJSONTyped(json, false); +} + +export function ProxyProviderRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): ProxyProviderRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + authenticationFlow: + json["authentication_flow"] == null ? undefined : json["authentication_flow"], + authorizationFlow: json["authorization_flow"], + invalidationFlow: json["invalidation_flow"], + propertyMappings: json["property_mappings"] == null ? undefined : json["property_mappings"], + internalHost: json["internal_host"] == null ? undefined : json["internal_host"], + externalHost: json["external_host"], + internalHostSslValidation: + json["internal_host_ssl_validation"] == null + ? undefined + : json["internal_host_ssl_validation"], + certificate: json["certificate"] == null ? undefined : json["certificate"], + skipPathRegex: json["skip_path_regex"] == null ? undefined : json["skip_path_regex"], + basicAuthEnabled: + json["basic_auth_enabled"] == null ? undefined : json["basic_auth_enabled"], + basicAuthPasswordAttribute: + json["basic_auth_password_attribute"] == null + ? undefined + : json["basic_auth_password_attribute"], + basicAuthUserAttribute: + json["basic_auth_user_attribute"] == null + ? undefined + : json["basic_auth_user_attribute"], + mode: json["mode"] == null ? undefined : ProxyModeFromJSON(json["mode"]), + interceptHeaderAuth: + json["intercept_header_auth"] == null ? undefined : json["intercept_header_auth"], + cookieDomain: json["cookie_domain"] == null ? undefined : json["cookie_domain"], + jwtFederationSources: + json["jwt_federation_sources"] == null ? undefined : json["jwt_federation_sources"], + jwtFederationProviders: + json["jwt_federation_providers"] == null ? undefined : json["jwt_federation_providers"], + accessTokenValidity: + json["access_token_validity"] == null ? undefined : json["access_token_validity"], + refreshTokenValidity: + json["refresh_token_validity"] == null ? undefined : json["refresh_token_validity"], + }; +} + +export function ProxyProviderRequestToJSON(json: any): ProxyProviderRequest { + return ProxyProviderRequestToJSONTyped(json, false); +} + +export function ProxyProviderRequestToJSONTyped( + value?: ProxyProviderRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + authentication_flow: value["authenticationFlow"], + authorization_flow: value["authorizationFlow"], + invalidation_flow: value["invalidationFlow"], + property_mappings: value["propertyMappings"], + internal_host: value["internalHost"], + external_host: value["externalHost"], + internal_host_ssl_validation: value["internalHostSslValidation"], + certificate: value["certificate"], + skip_path_regex: value["skipPathRegex"], + basic_auth_enabled: value["basicAuthEnabled"], + basic_auth_password_attribute: value["basicAuthPasswordAttribute"], + basic_auth_user_attribute: value["basicAuthUserAttribute"], + mode: ProxyModeToJSON(value["mode"]), + intercept_header_auth: value["interceptHeaderAuth"], + cookie_domain: value["cookieDomain"], + jwt_federation_sources: value["jwtFederationSources"], + jwt_federation_providers: value["jwtFederationProviders"], + access_token_validity: value["accessTokenValidity"], + refresh_token_validity: value["refreshTokenValidity"], + }; +} diff --git a/packages/client-ts/src/models/RACPropertyMapping.ts b/packages/client-ts/src/models/RACPropertyMapping.ts new file mode 100644 index 0000000000..153d225e97 --- /dev/null +++ b/packages/client-ts/src/models/RACPropertyMapping.ts @@ -0,0 +1,136 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * RACPropertyMapping Serializer + * @export + * @interface RACPropertyMapping + */ +export interface RACPropertyMapping { + /** + * + * @type {string} + * @memberof RACPropertyMapping + */ + readonly pk: string; + /** + * Objects that are managed by authentik. These objects are created and updated automatically. This flag only indicates that an object can be overwritten by migrations. You can still modify the objects via the API, but expect changes to be overwritten in a later update. + * @type {string} + * @memberof RACPropertyMapping + */ + managed?: string | null; + /** + * + * @type {string} + * @memberof RACPropertyMapping + */ + name: string; + /** + * + * @type {string} + * @memberof RACPropertyMapping + */ + expression?: string; + /** + * Get object's component so that we know how to edit the object + * @type {string} + * @memberof RACPropertyMapping + */ + readonly component: string; + /** + * Return object's verbose_name + * @type {string} + * @memberof RACPropertyMapping + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof RACPropertyMapping + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof RACPropertyMapping + */ + readonly metaModelName: string; + /** + * + * @type {{ [key: string]: any; }} + * @memberof RACPropertyMapping + */ + staticSettings: { [key: string]: any }; +} + +/** + * Check if a given object implements the RACPropertyMapping interface. + */ +export function instanceOfRACPropertyMapping(value: object): value is RACPropertyMapping { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + if (!("staticSettings" in value) || value["staticSettings"] === undefined) return false; + return true; +} + +export function RACPropertyMappingFromJSON(json: any): RACPropertyMapping { + return RACPropertyMappingFromJSONTyped(json, false); +} + +export function RACPropertyMappingFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): RACPropertyMapping { + if (json == null) { + return json; + } + return { + pk: json["pk"], + managed: json["managed"] == null ? undefined : json["managed"], + name: json["name"], + expression: json["expression"] == null ? undefined : json["expression"], + component: json["component"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + staticSettings: json["static_settings"], + }; +} + +export function RACPropertyMappingToJSON(json: any): RACPropertyMapping { + return RACPropertyMappingToJSONTyped(json, false); +} + +export function RACPropertyMappingToJSONTyped( + value?: Omit< + RACPropertyMapping, + "pk" | "component" | "verbose_name" | "verbose_name_plural" | "meta_model_name" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + managed: value["managed"], + name: value["name"], + expression: value["expression"], + static_settings: value["staticSettings"], + }; +} diff --git a/packages/client-ts/src/models/RACPropertyMappingRequest.ts b/packages/client-ts/src/models/RACPropertyMappingRequest.ts new file mode 100644 index 0000000000..8f38ef5d88 --- /dev/null +++ b/packages/client-ts/src/models/RACPropertyMappingRequest.ts @@ -0,0 +1,95 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * RACPropertyMapping Serializer + * @export + * @interface RACPropertyMappingRequest + */ +export interface RACPropertyMappingRequest { + /** + * Objects that are managed by authentik. These objects are created and updated automatically. This flag only indicates that an object can be overwritten by migrations. You can still modify the objects via the API, but expect changes to be overwritten in a later update. + * @type {string} + * @memberof RACPropertyMappingRequest + */ + managed?: string | null; + /** + * + * @type {string} + * @memberof RACPropertyMappingRequest + */ + name: string; + /** + * + * @type {string} + * @memberof RACPropertyMappingRequest + */ + expression?: string; + /** + * + * @type {{ [key: string]: any; }} + * @memberof RACPropertyMappingRequest + */ + staticSettings: { [key: string]: any }; +} + +/** + * Check if a given object implements the RACPropertyMappingRequest interface. + */ +export function instanceOfRACPropertyMappingRequest( + value: object, +): value is RACPropertyMappingRequest { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("staticSettings" in value) || value["staticSettings"] === undefined) return false; + return true; +} + +export function RACPropertyMappingRequestFromJSON(json: any): RACPropertyMappingRequest { + return RACPropertyMappingRequestFromJSONTyped(json, false); +} + +export function RACPropertyMappingRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): RACPropertyMappingRequest { + if (json == null) { + return json; + } + return { + managed: json["managed"] == null ? undefined : json["managed"], + name: json["name"], + expression: json["expression"] == null ? undefined : json["expression"], + staticSettings: json["static_settings"], + }; +} + +export function RACPropertyMappingRequestToJSON(json: any): RACPropertyMappingRequest { + return RACPropertyMappingRequestToJSONTyped(json, false); +} + +export function RACPropertyMappingRequestToJSONTyped( + value?: RACPropertyMappingRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + managed: value["managed"], + name: value["name"], + expression: value["expression"], + static_settings: value["staticSettings"], + }; +} diff --git a/packages/client-ts/src/models/RACProvider.ts b/packages/client-ts/src/models/RACProvider.ts new file mode 100644 index 0000000000..a5efb210b2 --- /dev/null +++ b/packages/client-ts/src/models/RACProvider.ts @@ -0,0 +1,220 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * RACProvider Serializer + * @export + * @interface RACProvider + */ +export interface RACProvider { + /** + * + * @type {number} + * @memberof RACProvider + */ + readonly pk: number; + /** + * + * @type {string} + * @memberof RACProvider + */ + name: string; + /** + * Flow used for authentication when the associated application is accessed by an un-authenticated user. + * @type {string} + * @memberof RACProvider + */ + authenticationFlow?: string | null; + /** + * Flow used when authorizing this provider. + * @type {string} + * @memberof RACProvider + */ + authorizationFlow: string; + /** + * + * @type {Array} + * @memberof RACProvider + */ + propertyMappings?: Array; + /** + * Get object component so that we know how to edit the object + * @type {string} + * @memberof RACProvider + */ + readonly component: string; + /** + * Internal application name, used in URLs. + * @type {string} + * @memberof RACProvider + */ + readonly assignedApplicationSlug: string | null; + /** + * Application's display Name. + * @type {string} + * @memberof RACProvider + */ + readonly assignedApplicationName: string | null; + /** + * Internal application name, used in URLs. + * @type {string} + * @memberof RACProvider + */ + readonly assignedBackchannelApplicationSlug: string | null; + /** + * Application's display Name. + * @type {string} + * @memberof RACProvider + */ + readonly assignedBackchannelApplicationName: string | null; + /** + * Return object's verbose_name + * @type {string} + * @memberof RACProvider + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof RACProvider + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof RACProvider + */ + readonly metaModelName: string; + /** + * + * @type {{ [key: string]: any; }} + * @memberof RACProvider + */ + settings?: { [key: string]: any }; + /** + * + * @type {Array} + * @memberof RACProvider + */ + readonly outpostSet: Array; + /** + * Determines how long a session lasts. Default of 0 means that the sessions lasts until the browser is closed. (Format: hours=-1;minutes=-2;seconds=-3) + * @type {string} + * @memberof RACProvider + */ + connectionExpiry?: string; + /** + * When set to true, connection tokens will be deleted upon disconnect. + * @type {boolean} + * @memberof RACProvider + */ + deleteTokenOnDisconnect?: boolean; +} + +/** + * Check if a given object implements the RACProvider interface. + */ +export function instanceOfRACProvider(value: object): value is RACProvider { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("authorizationFlow" in value) || value["authorizationFlow"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if (!("assignedApplicationSlug" in value) || value["assignedApplicationSlug"] === undefined) + return false; + if (!("assignedApplicationName" in value) || value["assignedApplicationName"] === undefined) + return false; + if ( + !("assignedBackchannelApplicationSlug" in value) || + value["assignedBackchannelApplicationSlug"] === undefined + ) + return false; + if ( + !("assignedBackchannelApplicationName" in value) || + value["assignedBackchannelApplicationName"] === undefined + ) + return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + if (!("outpostSet" in value) || value["outpostSet"] === undefined) return false; + return true; +} + +export function RACProviderFromJSON(json: any): RACProvider { + return RACProviderFromJSONTyped(json, false); +} + +export function RACProviderFromJSONTyped(json: any, ignoreDiscriminator: boolean): RACProvider { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + authenticationFlow: + json["authentication_flow"] == null ? undefined : json["authentication_flow"], + authorizationFlow: json["authorization_flow"], + propertyMappings: json["property_mappings"] == null ? undefined : json["property_mappings"], + component: json["component"], + assignedApplicationSlug: json["assigned_application_slug"], + assignedApplicationName: json["assigned_application_name"], + assignedBackchannelApplicationSlug: json["assigned_backchannel_application_slug"], + assignedBackchannelApplicationName: json["assigned_backchannel_application_name"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + settings: json["settings"] == null ? undefined : json["settings"], + outpostSet: json["outpost_set"], + connectionExpiry: json["connection_expiry"] == null ? undefined : json["connection_expiry"], + deleteTokenOnDisconnect: + json["delete_token_on_disconnect"] == null + ? undefined + : json["delete_token_on_disconnect"], + }; +} + +export function RACProviderToJSON(json: any): RACProvider { + return RACProviderToJSONTyped(json, false); +} + +export function RACProviderToJSONTyped( + value?: Omit< + RACProvider, + | "pk" + | "component" + | "assigned_application_slug" + | "assigned_application_name" + | "assigned_backchannel_application_slug" + | "assigned_backchannel_application_name" + | "verbose_name" + | "verbose_name_plural" + | "meta_model_name" + | "outpost_set" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + authentication_flow: value["authenticationFlow"], + authorization_flow: value["authorizationFlow"], + property_mappings: value["propertyMappings"], + settings: value["settings"], + connection_expiry: value["connectionExpiry"], + delete_token_on_disconnect: value["deleteTokenOnDisconnect"], + }; +} diff --git a/packages/client-ts/src/models/RACProviderRequest.ts b/packages/client-ts/src/models/RACProviderRequest.ts new file mode 100644 index 0000000000..194ee5e841 --- /dev/null +++ b/packages/client-ts/src/models/RACProviderRequest.ts @@ -0,0 +1,121 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * RACProvider Serializer + * @export + * @interface RACProviderRequest + */ +export interface RACProviderRequest { + /** + * + * @type {string} + * @memberof RACProviderRequest + */ + name: string; + /** + * Flow used for authentication when the associated application is accessed by an un-authenticated user. + * @type {string} + * @memberof RACProviderRequest + */ + authenticationFlow?: string | null; + /** + * Flow used when authorizing this provider. + * @type {string} + * @memberof RACProviderRequest + */ + authorizationFlow: string; + /** + * + * @type {Array} + * @memberof RACProviderRequest + */ + propertyMappings?: Array; + /** + * + * @type {{ [key: string]: any; }} + * @memberof RACProviderRequest + */ + settings?: { [key: string]: any }; + /** + * Determines how long a session lasts. Default of 0 means that the sessions lasts until the browser is closed. (Format: hours=-1;minutes=-2;seconds=-3) + * @type {string} + * @memberof RACProviderRequest + */ + connectionExpiry?: string; + /** + * When set to true, connection tokens will be deleted upon disconnect. + * @type {boolean} + * @memberof RACProviderRequest + */ + deleteTokenOnDisconnect?: boolean; +} + +/** + * Check if a given object implements the RACProviderRequest interface. + */ +export function instanceOfRACProviderRequest(value: object): value is RACProviderRequest { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("authorizationFlow" in value) || value["authorizationFlow"] === undefined) return false; + return true; +} + +export function RACProviderRequestFromJSON(json: any): RACProviderRequest { + return RACProviderRequestFromJSONTyped(json, false); +} + +export function RACProviderRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): RACProviderRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + authenticationFlow: + json["authentication_flow"] == null ? undefined : json["authentication_flow"], + authorizationFlow: json["authorization_flow"], + propertyMappings: json["property_mappings"] == null ? undefined : json["property_mappings"], + settings: json["settings"] == null ? undefined : json["settings"], + connectionExpiry: json["connection_expiry"] == null ? undefined : json["connection_expiry"], + deleteTokenOnDisconnect: + json["delete_token_on_disconnect"] == null + ? undefined + : json["delete_token_on_disconnect"], + }; +} + +export function RACProviderRequestToJSON(json: any): RACProviderRequest { + return RACProviderRequestToJSONTyped(json, false); +} + +export function RACProviderRequestToJSONTyped( + value?: RACProviderRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + authentication_flow: value["authenticationFlow"], + authorization_flow: value["authorizationFlow"], + property_mappings: value["propertyMappings"], + settings: value["settings"], + connection_expiry: value["connectionExpiry"], + delete_token_on_disconnect: value["deleteTokenOnDisconnect"], + }; +} diff --git a/packages/client-ts/src/models/RadiusCheckAccess.ts b/packages/client-ts/src/models/RadiusCheckAccess.ts new file mode 100644 index 0000000000..5e7a5bb20c --- /dev/null +++ b/packages/client-ts/src/models/RadiusCheckAccess.ts @@ -0,0 +1,79 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { PolicyTestResult } from "./PolicyTestResult"; +import { PolicyTestResultFromJSON, PolicyTestResultToJSON } from "./PolicyTestResult"; + +/** + * Base serializer class which doesn't implement create/update methods + * @export + * @interface RadiusCheckAccess + */ +export interface RadiusCheckAccess { + /** + * + * @type {string} + * @memberof RadiusCheckAccess + */ + attributes?: string; + /** + * + * @type {PolicyTestResult} + * @memberof RadiusCheckAccess + */ + access: PolicyTestResult; +} + +/** + * Check if a given object implements the RadiusCheckAccess interface. + */ +export function instanceOfRadiusCheckAccess(value: object): value is RadiusCheckAccess { + if (!("access" in value) || value["access"] === undefined) return false; + return true; +} + +export function RadiusCheckAccessFromJSON(json: any): RadiusCheckAccess { + return RadiusCheckAccessFromJSONTyped(json, false); +} + +export function RadiusCheckAccessFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): RadiusCheckAccess { + if (json == null) { + return json; + } + return { + attributes: json["attributes"] == null ? undefined : json["attributes"], + access: PolicyTestResultFromJSON(json["access"]), + }; +} + +export function RadiusCheckAccessToJSON(json: any): RadiusCheckAccess { + return RadiusCheckAccessToJSONTyped(json, false); +} + +export function RadiusCheckAccessToJSONTyped( + value?: RadiusCheckAccess | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + attributes: value["attributes"], + access: PolicyTestResultToJSON(value["access"]), + }; +} diff --git a/packages/client-ts/src/models/RadiusOutpostConfig.ts b/packages/client-ts/src/models/RadiusOutpostConfig.ts new file mode 100644 index 0000000000..d4ca63b4f6 --- /dev/null +++ b/packages/client-ts/src/models/RadiusOutpostConfig.ts @@ -0,0 +1,126 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * RadiusProvider Serializer + * @export + * @interface RadiusOutpostConfig + */ +export interface RadiusOutpostConfig { + /** + * + * @type {number} + * @memberof RadiusOutpostConfig + */ + readonly pk: number; + /** + * + * @type {string} + * @memberof RadiusOutpostConfig + */ + name: string; + /** + * + * @type {string} + * @memberof RadiusOutpostConfig + */ + applicationSlug: string; + /** + * + * @type {string} + * @memberof RadiusOutpostConfig + */ + authFlowSlug: string; + /** + * List of CIDRs (comma-separated) that clients can connect from. A more specific CIDR will match before a looser one. Clients connecting from a non-specified CIDR will be dropped. + * @type {string} + * @memberof RadiusOutpostConfig + */ + clientNetworks?: string; + /** + * Shared secret between clients and server to hash packets. + * @type {string} + * @memberof RadiusOutpostConfig + */ + sharedSecret?: string; + /** + * When enabled, code-based multi-factor authentication can be used by appending a semicolon and the TOTP code to the password. This should only be enabled if all users that will bind to this provider have a TOTP device configured, as otherwise a password may incorrectly be rejected if it contains a semicolon. + * @type {boolean} + * @memberof RadiusOutpostConfig + */ + mfaSupport?: boolean; + /** + * + * @type {string} + * @memberof RadiusOutpostConfig + */ + certificate?: string | null; +} + +/** + * Check if a given object implements the RadiusOutpostConfig interface. + */ +export function instanceOfRadiusOutpostConfig(value: object): value is RadiusOutpostConfig { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("applicationSlug" in value) || value["applicationSlug"] === undefined) return false; + if (!("authFlowSlug" in value) || value["authFlowSlug"] === undefined) return false; + return true; +} + +export function RadiusOutpostConfigFromJSON(json: any): RadiusOutpostConfig { + return RadiusOutpostConfigFromJSONTyped(json, false); +} + +export function RadiusOutpostConfigFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): RadiusOutpostConfig { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + applicationSlug: json["application_slug"], + authFlowSlug: json["auth_flow_slug"], + clientNetworks: json["client_networks"] == null ? undefined : json["client_networks"], + sharedSecret: json["shared_secret"] == null ? undefined : json["shared_secret"], + mfaSupport: json["mfa_support"] == null ? undefined : json["mfa_support"], + certificate: json["certificate"] == null ? undefined : json["certificate"], + }; +} + +export function RadiusOutpostConfigToJSON(json: any): RadiusOutpostConfig { + return RadiusOutpostConfigToJSONTyped(json, false); +} + +export function RadiusOutpostConfigToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + application_slug: value["applicationSlug"], + auth_flow_slug: value["authFlowSlug"], + client_networks: value["clientNetworks"], + shared_secret: value["sharedSecret"], + mfa_support: value["mfaSupport"], + certificate: value["certificate"], + }; +} diff --git a/packages/client-ts/src/models/RadiusProvider.ts b/packages/client-ts/src/models/RadiusProvider.ts new file mode 100644 index 0000000000..caa023f998 --- /dev/null +++ b/packages/client-ts/src/models/RadiusProvider.ts @@ -0,0 +1,237 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * RadiusProvider Serializer + * @export + * @interface RadiusProvider + */ +export interface RadiusProvider { + /** + * + * @type {number} + * @memberof RadiusProvider + */ + readonly pk: number; + /** + * + * @type {string} + * @memberof RadiusProvider + */ + name: string; + /** + * Flow used for authentication when the associated application is accessed by an un-authenticated user. + * @type {string} + * @memberof RadiusProvider + */ + authenticationFlow?: string | null; + /** + * Flow used when authorizing this provider. + * @type {string} + * @memberof RadiusProvider + */ + authorizationFlow: string; + /** + * Flow used ending the session from a provider. + * @type {string} + * @memberof RadiusProvider + */ + invalidationFlow: string; + /** + * + * @type {Array} + * @memberof RadiusProvider + */ + propertyMappings?: Array; + /** + * Get object component so that we know how to edit the object + * @type {string} + * @memberof RadiusProvider + */ + readonly component: string; + /** + * Internal application name, used in URLs. + * @type {string} + * @memberof RadiusProvider + */ + readonly assignedApplicationSlug: string | null; + /** + * Application's display Name. + * @type {string} + * @memberof RadiusProvider + */ + readonly assignedApplicationName: string | null; + /** + * Internal application name, used in URLs. + * @type {string} + * @memberof RadiusProvider + */ + readonly assignedBackchannelApplicationSlug: string | null; + /** + * Application's display Name. + * @type {string} + * @memberof RadiusProvider + */ + readonly assignedBackchannelApplicationName: string | null; + /** + * Return object's verbose_name + * @type {string} + * @memberof RadiusProvider + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof RadiusProvider + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof RadiusProvider + */ + readonly metaModelName: string; + /** + * List of CIDRs (comma-separated) that clients can connect from. A more specific CIDR will match before a looser one. Clients connecting from a non-specified CIDR will be dropped. + * @type {string} + * @memberof RadiusProvider + */ + clientNetworks?: string; + /** + * Shared secret between clients and server to hash packets. + * @type {string} + * @memberof RadiusProvider + */ + sharedSecret?: string; + /** + * + * @type {Array} + * @memberof RadiusProvider + */ + readonly outpostSet: Array; + /** + * When enabled, code-based multi-factor authentication can be used by appending a semicolon and the TOTP code to the password. This should only be enabled if all users that will bind to this provider have a TOTP device configured, as otherwise a password may incorrectly be rejected if it contains a semicolon. + * @type {boolean} + * @memberof RadiusProvider + */ + mfaSupport?: boolean; + /** + * + * @type {string} + * @memberof RadiusProvider + */ + certificate?: string | null; +} + +/** + * Check if a given object implements the RadiusProvider interface. + */ +export function instanceOfRadiusProvider(value: object): value is RadiusProvider { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("authorizationFlow" in value) || value["authorizationFlow"] === undefined) return false; + if (!("invalidationFlow" in value) || value["invalidationFlow"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if (!("assignedApplicationSlug" in value) || value["assignedApplicationSlug"] === undefined) + return false; + if (!("assignedApplicationName" in value) || value["assignedApplicationName"] === undefined) + return false; + if ( + !("assignedBackchannelApplicationSlug" in value) || + value["assignedBackchannelApplicationSlug"] === undefined + ) + return false; + if ( + !("assignedBackchannelApplicationName" in value) || + value["assignedBackchannelApplicationName"] === undefined + ) + return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + if (!("outpostSet" in value) || value["outpostSet"] === undefined) return false; + return true; +} + +export function RadiusProviderFromJSON(json: any): RadiusProvider { + return RadiusProviderFromJSONTyped(json, false); +} + +export function RadiusProviderFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): RadiusProvider { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + authenticationFlow: + json["authentication_flow"] == null ? undefined : json["authentication_flow"], + authorizationFlow: json["authorization_flow"], + invalidationFlow: json["invalidation_flow"], + propertyMappings: json["property_mappings"] == null ? undefined : json["property_mappings"], + component: json["component"], + assignedApplicationSlug: json["assigned_application_slug"], + assignedApplicationName: json["assigned_application_name"], + assignedBackchannelApplicationSlug: json["assigned_backchannel_application_slug"], + assignedBackchannelApplicationName: json["assigned_backchannel_application_name"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + clientNetworks: json["client_networks"] == null ? undefined : json["client_networks"], + sharedSecret: json["shared_secret"] == null ? undefined : json["shared_secret"], + outpostSet: json["outpost_set"], + mfaSupport: json["mfa_support"] == null ? undefined : json["mfa_support"], + certificate: json["certificate"] == null ? undefined : json["certificate"], + }; +} + +export function RadiusProviderToJSON(json: any): RadiusProvider { + return RadiusProviderToJSONTyped(json, false); +} + +export function RadiusProviderToJSONTyped( + value?: Omit< + RadiusProvider, + | "pk" + | "component" + | "assigned_application_slug" + | "assigned_application_name" + | "assigned_backchannel_application_slug" + | "assigned_backchannel_application_name" + | "verbose_name" + | "verbose_name_plural" + | "meta_model_name" + | "outpost_set" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + authentication_flow: value["authenticationFlow"], + authorization_flow: value["authorizationFlow"], + invalidation_flow: value["invalidationFlow"], + property_mappings: value["propertyMappings"], + client_networks: value["clientNetworks"], + shared_secret: value["sharedSecret"], + mfa_support: value["mfaSupport"], + certificate: value["certificate"], + }; +} diff --git a/packages/client-ts/src/models/RadiusProviderPropertyMapping.ts b/packages/client-ts/src/models/RadiusProviderPropertyMapping.ts new file mode 100644 index 0000000000..d711730dbd --- /dev/null +++ b/packages/client-ts/src/models/RadiusProviderPropertyMapping.ts @@ -0,0 +1,130 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * RadiusProviderPropertyMapping Serializer + * @export + * @interface RadiusProviderPropertyMapping + */ +export interface RadiusProviderPropertyMapping { + /** + * + * @type {string} + * @memberof RadiusProviderPropertyMapping + */ + readonly pk: string; + /** + * Objects that are managed by authentik. These objects are created and updated automatically. This flag only indicates that an object can be overwritten by migrations. You can still modify the objects via the API, but expect changes to be overwritten in a later update. + * @type {string} + * @memberof RadiusProviderPropertyMapping + */ + managed?: string | null; + /** + * + * @type {string} + * @memberof RadiusProviderPropertyMapping + */ + name: string; + /** + * + * @type {string} + * @memberof RadiusProviderPropertyMapping + */ + expression: string; + /** + * Get object's component so that we know how to edit the object + * @type {string} + * @memberof RadiusProviderPropertyMapping + */ + readonly component: string; + /** + * Return object's verbose_name + * @type {string} + * @memberof RadiusProviderPropertyMapping + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof RadiusProviderPropertyMapping + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof RadiusProviderPropertyMapping + */ + readonly metaModelName: string; +} + +/** + * Check if a given object implements the RadiusProviderPropertyMapping interface. + */ +export function instanceOfRadiusProviderPropertyMapping( + value: object, +): value is RadiusProviderPropertyMapping { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("expression" in value) || value["expression"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + return true; +} + +export function RadiusProviderPropertyMappingFromJSON(json: any): RadiusProviderPropertyMapping { + return RadiusProviderPropertyMappingFromJSONTyped(json, false); +} + +export function RadiusProviderPropertyMappingFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): RadiusProviderPropertyMapping { + if (json == null) { + return json; + } + return { + pk: json["pk"], + managed: json["managed"] == null ? undefined : json["managed"], + name: json["name"], + expression: json["expression"], + component: json["component"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + }; +} + +export function RadiusProviderPropertyMappingToJSON(json: any): RadiusProviderPropertyMapping { + return RadiusProviderPropertyMappingToJSONTyped(json, false); +} + +export function RadiusProviderPropertyMappingToJSONTyped( + value?: Omit< + RadiusProviderPropertyMapping, + "pk" | "component" | "verbose_name" | "verbose_name_plural" | "meta_model_name" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + managed: value["managed"], + name: value["name"], + expression: value["expression"], + }; +} diff --git a/packages/client-ts/src/models/RadiusProviderPropertyMappingRequest.ts b/packages/client-ts/src/models/RadiusProviderPropertyMappingRequest.ts new file mode 100644 index 0000000000..75af9eb9ca --- /dev/null +++ b/packages/client-ts/src/models/RadiusProviderPropertyMappingRequest.ts @@ -0,0 +1,91 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * RadiusProviderPropertyMapping Serializer + * @export + * @interface RadiusProviderPropertyMappingRequest + */ +export interface RadiusProviderPropertyMappingRequest { + /** + * Objects that are managed by authentik. These objects are created and updated automatically. This flag only indicates that an object can be overwritten by migrations. You can still modify the objects via the API, but expect changes to be overwritten in a later update. + * @type {string} + * @memberof RadiusProviderPropertyMappingRequest + */ + managed?: string | null; + /** + * + * @type {string} + * @memberof RadiusProviderPropertyMappingRequest + */ + name: string; + /** + * + * @type {string} + * @memberof RadiusProviderPropertyMappingRequest + */ + expression: string; +} + +/** + * Check if a given object implements the RadiusProviderPropertyMappingRequest interface. + */ +export function instanceOfRadiusProviderPropertyMappingRequest( + value: object, +): value is RadiusProviderPropertyMappingRequest { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("expression" in value) || value["expression"] === undefined) return false; + return true; +} + +export function RadiusProviderPropertyMappingRequestFromJSON( + json: any, +): RadiusProviderPropertyMappingRequest { + return RadiusProviderPropertyMappingRequestFromJSONTyped(json, false); +} + +export function RadiusProviderPropertyMappingRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): RadiusProviderPropertyMappingRequest { + if (json == null) { + return json; + } + return { + managed: json["managed"] == null ? undefined : json["managed"], + name: json["name"], + expression: json["expression"], + }; +} + +export function RadiusProviderPropertyMappingRequestToJSON( + json: any, +): RadiusProviderPropertyMappingRequest { + return RadiusProviderPropertyMappingRequestToJSONTyped(json, false); +} + +export function RadiusProviderPropertyMappingRequestToJSONTyped( + value?: RadiusProviderPropertyMappingRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + managed: value["managed"], + name: value["name"], + expression: value["expression"], + }; +} diff --git a/packages/client-ts/src/models/RadiusProviderRequest.ts b/packages/client-ts/src/models/RadiusProviderRequest.ts new file mode 100644 index 0000000000..e290cfc31b --- /dev/null +++ b/packages/client-ts/src/models/RadiusProviderRequest.ts @@ -0,0 +1,135 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * RadiusProvider Serializer + * @export + * @interface RadiusProviderRequest + */ +export interface RadiusProviderRequest { + /** + * + * @type {string} + * @memberof RadiusProviderRequest + */ + name: string; + /** + * Flow used for authentication when the associated application is accessed by an un-authenticated user. + * @type {string} + * @memberof RadiusProviderRequest + */ + authenticationFlow?: string | null; + /** + * Flow used when authorizing this provider. + * @type {string} + * @memberof RadiusProviderRequest + */ + authorizationFlow: string; + /** + * Flow used ending the session from a provider. + * @type {string} + * @memberof RadiusProviderRequest + */ + invalidationFlow: string; + /** + * + * @type {Array} + * @memberof RadiusProviderRequest + */ + propertyMappings?: Array; + /** + * List of CIDRs (comma-separated) that clients can connect from. A more specific CIDR will match before a looser one. Clients connecting from a non-specified CIDR will be dropped. + * @type {string} + * @memberof RadiusProviderRequest + */ + clientNetworks?: string; + /** + * Shared secret between clients and server to hash packets. + * @type {string} + * @memberof RadiusProviderRequest + */ + sharedSecret?: string; + /** + * When enabled, code-based multi-factor authentication can be used by appending a semicolon and the TOTP code to the password. This should only be enabled if all users that will bind to this provider have a TOTP device configured, as otherwise a password may incorrectly be rejected if it contains a semicolon. + * @type {boolean} + * @memberof RadiusProviderRequest + */ + mfaSupport?: boolean; + /** + * + * @type {string} + * @memberof RadiusProviderRequest + */ + certificate?: string | null; +} + +/** + * Check if a given object implements the RadiusProviderRequest interface. + */ +export function instanceOfRadiusProviderRequest(value: object): value is RadiusProviderRequest { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("authorizationFlow" in value) || value["authorizationFlow"] === undefined) return false; + if (!("invalidationFlow" in value) || value["invalidationFlow"] === undefined) return false; + return true; +} + +export function RadiusProviderRequestFromJSON(json: any): RadiusProviderRequest { + return RadiusProviderRequestFromJSONTyped(json, false); +} + +export function RadiusProviderRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): RadiusProviderRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + authenticationFlow: + json["authentication_flow"] == null ? undefined : json["authentication_flow"], + authorizationFlow: json["authorization_flow"], + invalidationFlow: json["invalidation_flow"], + propertyMappings: json["property_mappings"] == null ? undefined : json["property_mappings"], + clientNetworks: json["client_networks"] == null ? undefined : json["client_networks"], + sharedSecret: json["shared_secret"] == null ? undefined : json["shared_secret"], + mfaSupport: json["mfa_support"] == null ? undefined : json["mfa_support"], + certificate: json["certificate"] == null ? undefined : json["certificate"], + }; +} + +export function RadiusProviderRequestToJSON(json: any): RadiusProviderRequest { + return RadiusProviderRequestToJSONTyped(json, false); +} + +export function RadiusProviderRequestToJSONTyped( + value?: RadiusProviderRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + authentication_flow: value["authenticationFlow"], + authorization_flow: value["authorizationFlow"], + invalidation_flow: value["invalidationFlow"], + property_mappings: value["propertyMappings"], + client_networks: value["clientNetworks"], + shared_secret: value["sharedSecret"], + mfa_support: value["mfaSupport"], + certificate: value["certificate"], + }; +} diff --git a/packages/client-ts/src/models/RedirectChallenge.ts b/packages/client-ts/src/models/RedirectChallenge.ts new file mode 100644 index 0000000000..caf8fab95f --- /dev/null +++ b/packages/client-ts/src/models/RedirectChallenge.ts @@ -0,0 +1,97 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { ContextualFlowInfo } from "./ContextualFlowInfo"; +import { ContextualFlowInfoFromJSON, ContextualFlowInfoToJSON } from "./ContextualFlowInfo"; +import type { ErrorDetail } from "./ErrorDetail"; + +/** + * Challenge type to redirect the client + * @export + * @interface RedirectChallenge + */ +export interface RedirectChallenge { + /** + * + * @type {ContextualFlowInfo} + * @memberof RedirectChallenge + */ + flowInfo?: ContextualFlowInfo; + /** + * + * @type {string} + * @memberof RedirectChallenge + */ + component?: string; + /** + * + * @type {{ [key: string]: Array; }} + * @memberof RedirectChallenge + */ + responseErrors?: { [key: string]: Array }; + /** + * + * @type {string} + * @memberof RedirectChallenge + */ + to: string; +} + +/** + * Check if a given object implements the RedirectChallenge interface. + */ +export function instanceOfRedirectChallenge(value: object): value is RedirectChallenge { + if (!("to" in value) || value["to"] === undefined) return false; + return true; +} + +export function RedirectChallengeFromJSON(json: any): RedirectChallenge { + return RedirectChallengeFromJSONTyped(json, false); +} + +export function RedirectChallengeFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): RedirectChallenge { + if (json == null) { + return json; + } + return { + flowInfo: + json["flow_info"] == null ? undefined : ContextualFlowInfoFromJSON(json["flow_info"]), + component: json["component"] == null ? undefined : json["component"], + responseErrors: json["response_errors"] == null ? undefined : json["response_errors"], + to: json["to"], + }; +} + +export function RedirectChallengeToJSON(json: any): RedirectChallenge { + return RedirectChallengeToJSONTyped(json, false); +} + +export function RedirectChallengeToJSONTyped( + value?: RedirectChallenge | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + flow_info: ContextualFlowInfoToJSON(value["flowInfo"]), + component: value["component"], + response_errors: value["responseErrors"], + to: value["to"], + }; +} diff --git a/packages/client-ts/src/models/RedirectChallengeResponseRequest.ts b/packages/client-ts/src/models/RedirectChallengeResponseRequest.ts new file mode 100644 index 0000000000..78ec2cefab --- /dev/null +++ b/packages/client-ts/src/models/RedirectChallengeResponseRequest.ts @@ -0,0 +1,82 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Redirect challenge response + * @export + * @interface RedirectChallengeResponseRequest + */ +export interface RedirectChallengeResponseRequest { + /** + * + * @type {string} + * @memberof RedirectChallengeResponseRequest + */ + component?: string; + /** + * + * @type {string} + * @memberof RedirectChallengeResponseRequest + */ + to: string; +} + +/** + * Check if a given object implements the RedirectChallengeResponseRequest interface. + */ +export function instanceOfRedirectChallengeResponseRequest( + value: object, +): value is RedirectChallengeResponseRequest { + if (!("to" in value) || value["to"] === undefined) return false; + return true; +} + +export function RedirectChallengeResponseRequestFromJSON( + json: any, +): RedirectChallengeResponseRequest { + return RedirectChallengeResponseRequestFromJSONTyped(json, false); +} + +export function RedirectChallengeResponseRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): RedirectChallengeResponseRequest { + if (json == null) { + return json; + } + return { + component: json["component"] == null ? undefined : json["component"], + to: json["to"], + }; +} + +export function RedirectChallengeResponseRequestToJSON( + json: any, +): RedirectChallengeResponseRequest { + return RedirectChallengeResponseRequestToJSONTyped(json, false); +} + +export function RedirectChallengeResponseRequestToJSONTyped( + value?: RedirectChallengeResponseRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + component: value["component"], + to: value["to"], + }; +} diff --git a/packages/client-ts/src/models/RedirectStage.ts b/packages/client-ts/src/models/RedirectStage.ts new file mode 100644 index 0000000000..9aa2f79f07 --- /dev/null +++ b/packages/client-ts/src/models/RedirectStage.ts @@ -0,0 +1,157 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { FlowSet } from "./FlowSet"; +import { FlowSetFromJSON } from "./FlowSet"; +import type { RedirectStageModeEnum } from "./RedirectStageModeEnum"; +import { + RedirectStageModeEnumFromJSON, + RedirectStageModeEnumToJSON, +} from "./RedirectStageModeEnum"; + +/** + * RedirectStage Serializer + * @export + * @interface RedirectStage + */ +export interface RedirectStage { + /** + * + * @type {string} + * @memberof RedirectStage + */ + readonly pk: string; + /** + * + * @type {string} + * @memberof RedirectStage + */ + name: string; + /** + * Get object type so that we know how to edit the object + * @type {string} + * @memberof RedirectStage + */ + readonly component: string; + /** + * Return object's verbose_name + * @type {string} + * @memberof RedirectStage + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof RedirectStage + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof RedirectStage + */ + readonly metaModelName: string; + /** + * + * @type {Array} + * @memberof RedirectStage + */ + readonly flowSet: Array; + /** + * + * @type {boolean} + * @memberof RedirectStage + */ + keepContext?: boolean; + /** + * + * @type {RedirectStageModeEnum} + * @memberof RedirectStage + */ + mode: RedirectStageModeEnum; + /** + * + * @type {string} + * @memberof RedirectStage + */ + targetStatic?: string; + /** + * + * @type {string} + * @memberof RedirectStage + */ + targetFlow?: string | null; +} + +/** + * Check if a given object implements the RedirectStage interface. + */ +export function instanceOfRedirectStage(value: object): value is RedirectStage { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + if (!("flowSet" in value) || value["flowSet"] === undefined) return false; + if (!("mode" in value) || value["mode"] === undefined) return false; + return true; +} + +export function RedirectStageFromJSON(json: any): RedirectStage { + return RedirectStageFromJSONTyped(json, false); +} + +export function RedirectStageFromJSONTyped(json: any, ignoreDiscriminator: boolean): RedirectStage { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + component: json["component"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + flowSet: (json["flow_set"] as Array).map(FlowSetFromJSON), + keepContext: json["keep_context"] == null ? undefined : json["keep_context"], + mode: RedirectStageModeEnumFromJSON(json["mode"]), + targetStatic: json["target_static"] == null ? undefined : json["target_static"], + targetFlow: json["target_flow"] == null ? undefined : json["target_flow"], + }; +} + +export function RedirectStageToJSON(json: any): RedirectStage { + return RedirectStageToJSONTyped(json, false); +} + +export function RedirectStageToJSONTyped( + value?: Omit< + RedirectStage, + "pk" | "component" | "verbose_name" | "verbose_name_plural" | "meta_model_name" | "flow_set" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + keep_context: value["keepContext"], + mode: RedirectStageModeEnumToJSON(value["mode"]), + target_static: value["targetStatic"], + target_flow: value["targetFlow"], + }; +} diff --git a/packages/client-ts/src/models/RedirectStageModeEnum.ts b/packages/client-ts/src/models/RedirectStageModeEnum.ts new file mode 100644 index 0000000000..65cce1d014 --- /dev/null +++ b/packages/client-ts/src/models/RedirectStageModeEnum.ts @@ -0,0 +1,58 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const RedirectStageModeEnum = { + Static: "static", + Flow: "flow", + UnknownDefaultOpenApi: "11184809", +} as const; +export type RedirectStageModeEnum = + (typeof RedirectStageModeEnum)[keyof typeof RedirectStageModeEnum]; + +export function instanceOfRedirectStageModeEnum(value: any): boolean { + for (const key in RedirectStageModeEnum) { + if (Object.prototype.hasOwnProperty.call(RedirectStageModeEnum, key)) { + if (RedirectStageModeEnum[key as keyof typeof RedirectStageModeEnum] === value) { + return true; + } + } + } + return false; +} + +export function RedirectStageModeEnumFromJSON(json: any): RedirectStageModeEnum { + return RedirectStageModeEnumFromJSONTyped(json, false); +} + +export function RedirectStageModeEnumFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): RedirectStageModeEnum { + return json as RedirectStageModeEnum; +} + +export function RedirectStageModeEnumToJSON(value?: RedirectStageModeEnum | null): any { + return value as any; +} + +export function RedirectStageModeEnumToJSONTyped( + value: any, + ignoreDiscriminator: boolean, +): RedirectStageModeEnum { + return value as RedirectStageModeEnum; +} diff --git a/packages/client-ts/src/models/RedirectStageRequest.ts b/packages/client-ts/src/models/RedirectStageRequest.ts new file mode 100644 index 0000000000..8e241f7623 --- /dev/null +++ b/packages/client-ts/src/models/RedirectStageRequest.ts @@ -0,0 +1,107 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { RedirectStageModeEnum } from "./RedirectStageModeEnum"; +import { + RedirectStageModeEnumFromJSON, + RedirectStageModeEnumToJSON, +} from "./RedirectStageModeEnum"; + +/** + * RedirectStage Serializer + * @export + * @interface RedirectStageRequest + */ +export interface RedirectStageRequest { + /** + * + * @type {string} + * @memberof RedirectStageRequest + */ + name: string; + /** + * + * @type {boolean} + * @memberof RedirectStageRequest + */ + keepContext?: boolean; + /** + * + * @type {RedirectStageModeEnum} + * @memberof RedirectStageRequest + */ + mode: RedirectStageModeEnum; + /** + * + * @type {string} + * @memberof RedirectStageRequest + */ + targetStatic?: string; + /** + * + * @type {string} + * @memberof RedirectStageRequest + */ + targetFlow?: string | null; +} + +/** + * Check if a given object implements the RedirectStageRequest interface. + */ +export function instanceOfRedirectStageRequest(value: object): value is RedirectStageRequest { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("mode" in value) || value["mode"] === undefined) return false; + return true; +} + +export function RedirectStageRequestFromJSON(json: any): RedirectStageRequest { + return RedirectStageRequestFromJSONTyped(json, false); +} + +export function RedirectStageRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): RedirectStageRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + keepContext: json["keep_context"] == null ? undefined : json["keep_context"], + mode: RedirectStageModeEnumFromJSON(json["mode"]), + targetStatic: json["target_static"] == null ? undefined : json["target_static"], + targetFlow: json["target_flow"] == null ? undefined : json["target_flow"], + }; +} + +export function RedirectStageRequestToJSON(json: any): RedirectStageRequest { + return RedirectStageRequestToJSONTyped(json, false); +} + +export function RedirectStageRequestToJSONTyped( + value?: RedirectStageRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + keep_context: value["keepContext"], + mode: RedirectStageModeEnumToJSON(value["mode"]), + target_static: value["targetStatic"], + target_flow: value["targetFlow"], + }; +} diff --git a/packages/client-ts/src/models/RedirectURI.ts b/packages/client-ts/src/models/RedirectURI.ts new file mode 100644 index 0000000000..cef8498880 --- /dev/null +++ b/packages/client-ts/src/models/RedirectURI.ts @@ -0,0 +1,90 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { MatchingModeEnum } from "./MatchingModeEnum"; +import { MatchingModeEnumFromJSON, MatchingModeEnumToJSON } from "./MatchingModeEnum"; +import type { RedirectURITypeEnum } from "./RedirectURITypeEnum"; +import { RedirectURITypeEnumFromJSON, RedirectURITypeEnumToJSON } from "./RedirectURITypeEnum"; + +/** + * A single allowed redirect URI entry + * @export + * @interface RedirectURI + */ +export interface RedirectURI { + /** + * + * @type {MatchingModeEnum} + * @memberof RedirectURI + */ + matchingMode: MatchingModeEnum; + /** + * + * @type {string} + * @memberof RedirectURI + */ + url: string; + /** + * + * @type {RedirectURITypeEnum} + * @memberof RedirectURI + */ + redirectUriType?: RedirectURITypeEnum; +} + +/** + * Check if a given object implements the RedirectURI interface. + */ +export function instanceOfRedirectURI(value: object): value is RedirectURI { + if (!("matchingMode" in value) || value["matchingMode"] === undefined) return false; + if (!("url" in value) || value["url"] === undefined) return false; + return true; +} + +export function RedirectURIFromJSON(json: any): RedirectURI { + return RedirectURIFromJSONTyped(json, false); +} + +export function RedirectURIFromJSONTyped(json: any, ignoreDiscriminator: boolean): RedirectURI { + if (json == null) { + return json; + } + return { + matchingMode: MatchingModeEnumFromJSON(json["matching_mode"]), + url: json["url"], + redirectUriType: + json["redirect_uri_type"] == null + ? undefined + : RedirectURITypeEnumFromJSON(json["redirect_uri_type"]), + }; +} + +export function RedirectURIToJSON(json: any): RedirectURI { + return RedirectURIToJSONTyped(json, false); +} + +export function RedirectURIToJSONTyped( + value?: RedirectURI | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + matching_mode: MatchingModeEnumToJSON(value["matchingMode"]), + url: value["url"], + redirect_uri_type: RedirectURITypeEnumToJSON(value["redirectUriType"]), + }; +} diff --git a/packages/client-ts/src/models/RedirectURIRequest.ts b/packages/client-ts/src/models/RedirectURIRequest.ts new file mode 100644 index 0000000000..15814a45ba --- /dev/null +++ b/packages/client-ts/src/models/RedirectURIRequest.ts @@ -0,0 +1,93 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { MatchingModeEnum } from "./MatchingModeEnum"; +import { MatchingModeEnumFromJSON, MatchingModeEnumToJSON } from "./MatchingModeEnum"; +import type { RedirectURITypeEnum } from "./RedirectURITypeEnum"; +import { RedirectURITypeEnumFromJSON, RedirectURITypeEnumToJSON } from "./RedirectURITypeEnum"; + +/** + * A single allowed redirect URI entry + * @export + * @interface RedirectURIRequest + */ +export interface RedirectURIRequest { + /** + * + * @type {MatchingModeEnum} + * @memberof RedirectURIRequest + */ + matchingMode: MatchingModeEnum; + /** + * + * @type {string} + * @memberof RedirectURIRequest + */ + url: string; + /** + * + * @type {RedirectURITypeEnum} + * @memberof RedirectURIRequest + */ + redirectUriType?: RedirectURITypeEnum; +} + +/** + * Check if a given object implements the RedirectURIRequest interface. + */ +export function instanceOfRedirectURIRequest(value: object): value is RedirectURIRequest { + if (!("matchingMode" in value) || value["matchingMode"] === undefined) return false; + if (!("url" in value) || value["url"] === undefined) return false; + return true; +} + +export function RedirectURIRequestFromJSON(json: any): RedirectURIRequest { + return RedirectURIRequestFromJSONTyped(json, false); +} + +export function RedirectURIRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): RedirectURIRequest { + if (json == null) { + return json; + } + return { + matchingMode: MatchingModeEnumFromJSON(json["matching_mode"]), + url: json["url"], + redirectUriType: + json["redirect_uri_type"] == null + ? undefined + : RedirectURITypeEnumFromJSON(json["redirect_uri_type"]), + }; +} + +export function RedirectURIRequestToJSON(json: any): RedirectURIRequest { + return RedirectURIRequestToJSONTyped(json, false); +} + +export function RedirectURIRequestToJSONTyped( + value?: RedirectURIRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + matching_mode: MatchingModeEnumToJSON(value["matchingMode"]), + url: value["url"], + redirect_uri_type: RedirectURITypeEnumToJSON(value["redirectUriType"]), + }; +} diff --git a/packages/client-ts/src/models/RedirectURITypeEnum.ts b/packages/client-ts/src/models/RedirectURITypeEnum.ts new file mode 100644 index 0000000000..7a1f385fb1 --- /dev/null +++ b/packages/client-ts/src/models/RedirectURITypeEnum.ts @@ -0,0 +1,57 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const RedirectURITypeEnum = { + Authorization: "authorization", + Logout: "logout", + UnknownDefaultOpenApi: "11184809", +} as const; +export type RedirectURITypeEnum = (typeof RedirectURITypeEnum)[keyof typeof RedirectURITypeEnum]; + +export function instanceOfRedirectURITypeEnum(value: any): boolean { + for (const key in RedirectURITypeEnum) { + if (Object.prototype.hasOwnProperty.call(RedirectURITypeEnum, key)) { + if (RedirectURITypeEnum[key as keyof typeof RedirectURITypeEnum] === value) { + return true; + } + } + } + return false; +} + +export function RedirectURITypeEnumFromJSON(json: any): RedirectURITypeEnum { + return RedirectURITypeEnumFromJSONTyped(json, false); +} + +export function RedirectURITypeEnumFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): RedirectURITypeEnum { + return json as RedirectURITypeEnum; +} + +export function RedirectURITypeEnumToJSON(value?: RedirectURITypeEnum | null): any { + return value as any; +} + +export function RedirectURITypeEnumToJSONTyped( + value: any, + ignoreDiscriminator: boolean, +): RedirectURITypeEnum { + return value as RedirectURITypeEnum; +} diff --git a/packages/client-ts/src/models/RelatedGroup.ts b/packages/client-ts/src/models/RelatedGroup.ts new file mode 100644 index 0000000000..d0e8f73dd4 --- /dev/null +++ b/packages/client-ts/src/models/RelatedGroup.ts @@ -0,0 +1,97 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Stripped down group serializer to show relevant children/parents for groups + * @export + * @interface RelatedGroup + */ +export interface RelatedGroup { + /** + * + * @type {string} + * @memberof RelatedGroup + */ + readonly pk: string; + /** + * + * @type {string} + * @memberof RelatedGroup + */ + name: string; + /** + * Users added to this group will be superusers. + * @type {boolean} + * @memberof RelatedGroup + */ + isSuperuser?: boolean; + /** + * + * @type {{ [key: string]: any; }} + * @memberof RelatedGroup + */ + attributes?: { [key: string]: any }; + /** + * + * @type {string} + * @memberof RelatedGroup + */ + readonly groupUuid: string; +} + +/** + * Check if a given object implements the RelatedGroup interface. + */ +export function instanceOfRelatedGroup(value: object): value is RelatedGroup { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("groupUuid" in value) || value["groupUuid"] === undefined) return false; + return true; +} + +export function RelatedGroupFromJSON(json: any): RelatedGroup { + return RelatedGroupFromJSONTyped(json, false); +} + +export function RelatedGroupFromJSONTyped(json: any, ignoreDiscriminator: boolean): RelatedGroup { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + isSuperuser: json["is_superuser"] == null ? undefined : json["is_superuser"], + attributes: json["attributes"] == null ? undefined : json["attributes"], + groupUuid: json["group_uuid"], + }; +} + +export function RelatedGroupToJSON(json: any): RelatedGroup { + return RelatedGroupToJSONTyped(json, false); +} + +export function RelatedGroupToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + is_superuser: value["isSuperuser"], + attributes: value["attributes"], + }; +} diff --git a/packages/client-ts/src/models/RelatedRule.ts b/packages/client-ts/src/models/RelatedRule.ts new file mode 100644 index 0000000000..25b26d257d --- /dev/null +++ b/packages/client-ts/src/models/RelatedRule.ts @@ -0,0 +1,103 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { ReviewerGroup } from "./ReviewerGroup"; +import { ReviewerGroupFromJSON } from "./ReviewerGroup"; +import type { ReviewerUser } from "./ReviewerUser"; +import { ReviewerUserFromJSON } from "./ReviewerUser"; + +/** + * Mixin to validate that a valid enterprise license + * exists before allowing to save the object + * @export + * @interface RelatedRule + */ +export interface RelatedRule { + /** + * + * @type {string} + * @memberof RelatedRule + */ + id?: string; + /** + * + * @type {string} + * @memberof RelatedRule + */ + name: string; + /** + * + * @type {Array} + * @memberof RelatedRule + */ + readonly reviewerGroups: Array; + /** + * + * @type {number} + * @memberof RelatedRule + */ + readonly minReviewers: number; + /** + * + * @type {Array} + * @memberof RelatedRule + */ + readonly reviewers: Array; +} + +/** + * Check if a given object implements the RelatedRule interface. + */ +export function instanceOfRelatedRule(value: object): value is RelatedRule { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("reviewerGroups" in value) || value["reviewerGroups"] === undefined) return false; + if (!("minReviewers" in value) || value["minReviewers"] === undefined) return false; + if (!("reviewers" in value) || value["reviewers"] === undefined) return false; + return true; +} + +export function RelatedRuleFromJSON(json: any): RelatedRule { + return RelatedRuleFromJSONTyped(json, false); +} + +export function RelatedRuleFromJSONTyped(json: any, ignoreDiscriminator: boolean): RelatedRule { + if (json == null) { + return json; + } + return { + id: json["id"] == null ? undefined : json["id"], + name: json["name"], + reviewerGroups: (json["reviewer_groups"] as Array).map(ReviewerGroupFromJSON), + minReviewers: json["min_reviewers"], + reviewers: (json["reviewers"] as Array).map(ReviewerUserFromJSON), + }; +} + +export function RelatedRuleToJSON(json: any): RelatedRule { + return RelatedRuleToJSONTyped(json, false); +} + +export function RelatedRuleToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + id: value["id"], + name: value["name"], + }; +} diff --git a/packages/client-ts/src/models/Reputation.ts b/packages/client-ts/src/models/Reputation.ts new file mode 100644 index 0000000000..a91211b7fe --- /dev/null +++ b/packages/client-ts/src/models/Reputation.ts @@ -0,0 +1,114 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Reputation Serializer + * @export + * @interface Reputation + */ +export interface Reputation { + /** + * + * @type {string} + * @memberof Reputation + */ + pk?: string; + /** + * + * @type {string} + * @memberof Reputation + */ + identifier: string; + /** + * + * @type {string} + * @memberof Reputation + */ + ip: string; + /** + * + * @type {{ [key: string]: any; }} + * @memberof Reputation + */ + ipGeoData?: { [key: string]: any }; + /** + * + * @type {{ [key: string]: any; }} + * @memberof Reputation + */ + ipAsnData?: { [key: string]: any }; + /** + * + * @type {number} + * @memberof Reputation + */ + score?: number; + /** + * + * @type {Date} + * @memberof Reputation + */ + readonly updated: Date; +} + +/** + * Check if a given object implements the Reputation interface. + */ +export function instanceOfReputation(value: object): value is Reputation { + if (!("identifier" in value) || value["identifier"] === undefined) return false; + if (!("ip" in value) || value["ip"] === undefined) return false; + if (!("updated" in value) || value["updated"] === undefined) return false; + return true; +} + +export function ReputationFromJSON(json: any): Reputation { + return ReputationFromJSONTyped(json, false); +} + +export function ReputationFromJSONTyped(json: any, ignoreDiscriminator: boolean): Reputation { + if (json == null) { + return json; + } + return { + pk: json["pk"] == null ? undefined : json["pk"], + identifier: json["identifier"], + ip: json["ip"], + ipGeoData: json["ip_geo_data"] == null ? undefined : json["ip_geo_data"], + ipAsnData: json["ip_asn_data"] == null ? undefined : json["ip_asn_data"], + score: json["score"] == null ? undefined : json["score"], + updated: new Date(json["updated"]), + }; +} + +export function ReputationToJSON(json: any): Reputation { + return ReputationToJSONTyped(json, false); +} + +export function ReputationToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pk: value["pk"], + identifier: value["identifier"], + ip: value["ip"], + ip_geo_data: value["ipGeoData"], + ip_asn_data: value["ipAsnData"], + score: value["score"], + }; +} diff --git a/packages/client-ts/src/models/ReputationPolicy.ts b/packages/client-ts/src/models/ReputationPolicy.ts new file mode 100644 index 0000000000..a1fac07fc7 --- /dev/null +++ b/packages/client-ts/src/models/ReputationPolicy.ts @@ -0,0 +1,151 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Reputation Policy Serializer + * @export + * @interface ReputationPolicy + */ +export interface ReputationPolicy { + /** + * + * @type {string} + * @memberof ReputationPolicy + */ + readonly pk: string; + /** + * + * @type {string} + * @memberof ReputationPolicy + */ + name: string; + /** + * When this option is enabled, all executions of this policy will be logged. By default, only execution errors are logged. + * @type {boolean} + * @memberof ReputationPolicy + */ + executionLogging?: boolean; + /** + * Get object component so that we know how to edit the object + * @type {string} + * @memberof ReputationPolicy + */ + readonly component: string; + /** + * Return object's verbose_name + * @type {string} + * @memberof ReputationPolicy + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof ReputationPolicy + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof ReputationPolicy + */ + readonly metaModelName: string; + /** + * Return objects policy is bound to + * @type {number} + * @memberof ReputationPolicy + */ + readonly boundTo: number; + /** + * + * @type {boolean} + * @memberof ReputationPolicy + */ + checkIp?: boolean; + /** + * + * @type {boolean} + * @memberof ReputationPolicy + */ + checkUsername?: boolean; + /** + * + * @type {number} + * @memberof ReputationPolicy + */ + threshold?: number; +} + +/** + * Check if a given object implements the ReputationPolicy interface. + */ +export function instanceOfReputationPolicy(value: object): value is ReputationPolicy { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + if (!("boundTo" in value) || value["boundTo"] === undefined) return false; + return true; +} + +export function ReputationPolicyFromJSON(json: any): ReputationPolicy { + return ReputationPolicyFromJSONTyped(json, false); +} + +export function ReputationPolicyFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): ReputationPolicy { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + executionLogging: json["execution_logging"] == null ? undefined : json["execution_logging"], + component: json["component"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + boundTo: json["bound_to"], + checkIp: json["check_ip"] == null ? undefined : json["check_ip"], + checkUsername: json["check_username"] == null ? undefined : json["check_username"], + threshold: json["threshold"] == null ? undefined : json["threshold"], + }; +} + +export function ReputationPolicyToJSON(json: any): ReputationPolicy { + return ReputationPolicyToJSONTyped(json, false); +} + +export function ReputationPolicyToJSONTyped( + value?: Omit< + ReputationPolicy, + "pk" | "component" | "verbose_name" | "verbose_name_plural" | "meta_model_name" | "bound_to" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + execution_logging: value["executionLogging"], + check_ip: value["checkIp"], + check_username: value["checkUsername"], + threshold: value["threshold"], + }; +} diff --git a/packages/client-ts/src/models/ReputationPolicyRequest.ts b/packages/client-ts/src/models/ReputationPolicyRequest.ts new file mode 100644 index 0000000000..a3fbae6c55 --- /dev/null +++ b/packages/client-ts/src/models/ReputationPolicyRequest.ts @@ -0,0 +1,100 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Reputation Policy Serializer + * @export + * @interface ReputationPolicyRequest + */ +export interface ReputationPolicyRequest { + /** + * + * @type {string} + * @memberof ReputationPolicyRequest + */ + name: string; + /** + * When this option is enabled, all executions of this policy will be logged. By default, only execution errors are logged. + * @type {boolean} + * @memberof ReputationPolicyRequest + */ + executionLogging?: boolean; + /** + * + * @type {boolean} + * @memberof ReputationPolicyRequest + */ + checkIp?: boolean; + /** + * + * @type {boolean} + * @memberof ReputationPolicyRequest + */ + checkUsername?: boolean; + /** + * + * @type {number} + * @memberof ReputationPolicyRequest + */ + threshold?: number; +} + +/** + * Check if a given object implements the ReputationPolicyRequest interface. + */ +export function instanceOfReputationPolicyRequest(value: object): value is ReputationPolicyRequest { + if (!("name" in value) || value["name"] === undefined) return false; + return true; +} + +export function ReputationPolicyRequestFromJSON(json: any): ReputationPolicyRequest { + return ReputationPolicyRequestFromJSONTyped(json, false); +} + +export function ReputationPolicyRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): ReputationPolicyRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + executionLogging: json["execution_logging"] == null ? undefined : json["execution_logging"], + checkIp: json["check_ip"] == null ? undefined : json["check_ip"], + checkUsername: json["check_username"] == null ? undefined : json["check_username"], + threshold: json["threshold"] == null ? undefined : json["threshold"], + }; +} + +export function ReputationPolicyRequestToJSON(json: any): ReputationPolicyRequest { + return ReputationPolicyRequestToJSONTyped(json, false); +} + +export function ReputationPolicyRequestToJSONTyped( + value?: ReputationPolicyRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + execution_logging: value["executionLogging"], + check_ip: value["checkIp"], + check_username: value["checkUsername"], + threshold: value["threshold"], + }; +} diff --git a/packages/client-ts/src/models/Review.ts b/packages/client-ts/src/models/Review.ts new file mode 100644 index 0000000000..fab239f96f --- /dev/null +++ b/packages/client-ts/src/models/Review.ts @@ -0,0 +1,101 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { ReviewerUser } from "./ReviewerUser"; +import { ReviewerUserFromJSON } from "./ReviewerUser"; + +/** + * Mixin to validate that a valid enterprise license + * exists before allowing to save the object + * @export + * @interface Review + */ +export interface Review { + /** + * + * @type {string} + * @memberof Review + */ + readonly id: string; + /** + * + * @type {string} + * @memberof Review + */ + iteration: string; + /** + * + * @type {ReviewerUser} + * @memberof Review + */ + readonly reviewer: ReviewerUser; + /** + * + * @type {Date} + * @memberof Review + */ + readonly timestamp: Date; + /** + * + * @type {string} + * @memberof Review + */ + note?: string | null; +} + +/** + * Check if a given object implements the Review interface. + */ +export function instanceOfReview(value: object): value is Review { + if (!("id" in value) || value["id"] === undefined) return false; + if (!("iteration" in value) || value["iteration"] === undefined) return false; + if (!("reviewer" in value) || value["reviewer"] === undefined) return false; + if (!("timestamp" in value) || value["timestamp"] === undefined) return false; + return true; +} + +export function ReviewFromJSON(json: any): Review { + return ReviewFromJSONTyped(json, false); +} + +export function ReviewFromJSONTyped(json: any, ignoreDiscriminator: boolean): Review { + if (json == null) { + return json; + } + return { + id: json["id"], + iteration: json["iteration"], + reviewer: ReviewerUserFromJSON(json["reviewer"]), + timestamp: new Date(json["timestamp"]), + note: json["note"] == null ? undefined : json["note"], + }; +} + +export function ReviewToJSON(json: any): Review { + return ReviewToJSONTyped(json, false); +} + +export function ReviewToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + iteration: value["iteration"], + note: value["note"], + }; +} diff --git a/packages/client-ts/src/models/ReviewRequest.ts b/packages/client-ts/src/models/ReviewRequest.ts new file mode 100644 index 0000000000..aca7085c36 --- /dev/null +++ b/packages/client-ts/src/models/ReviewRequest.ts @@ -0,0 +1,74 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Mixin to validate that a valid enterprise license + * exists before allowing to save the object + * @export + * @interface ReviewRequest + */ +export interface ReviewRequest { + /** + * + * @type {string} + * @memberof ReviewRequest + */ + iteration: string; + /** + * + * @type {string} + * @memberof ReviewRequest + */ + note?: string | null; +} + +/** + * Check if a given object implements the ReviewRequest interface. + */ +export function instanceOfReviewRequest(value: object): value is ReviewRequest { + if (!("iteration" in value) || value["iteration"] === undefined) return false; + return true; +} + +export function ReviewRequestFromJSON(json: any): ReviewRequest { + return ReviewRequestFromJSONTyped(json, false); +} + +export function ReviewRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): ReviewRequest { + if (json == null) { + return json; + } + return { + iteration: json["iteration"], + note: json["note"] == null ? undefined : json["note"], + }; +} + +export function ReviewRequestToJSON(json: any): ReviewRequest { + return ReviewRequestToJSONTyped(json, false); +} + +export function ReviewRequestToJSONTyped( + value?: ReviewRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + iteration: value["iteration"], + note: value["note"], + }; +} diff --git a/packages/client-ts/src/models/ReviewerGroup.ts b/packages/client-ts/src/models/ReviewerGroup.ts new file mode 100644 index 0000000000..2574fa62c1 --- /dev/null +++ b/packages/client-ts/src/models/ReviewerGroup.ts @@ -0,0 +1,73 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + * @interface ReviewerGroup + */ +export interface ReviewerGroup { + /** + * + * @type {string} + * @memberof ReviewerGroup + */ + readonly pk: string; + /** + * + * @type {string} + * @memberof ReviewerGroup + */ + name: string; +} + +/** + * Check if a given object implements the ReviewerGroup interface. + */ +export function instanceOfReviewerGroup(value: object): value is ReviewerGroup { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + return true; +} + +export function ReviewerGroupFromJSON(json: any): ReviewerGroup { + return ReviewerGroupFromJSONTyped(json, false); +} + +export function ReviewerGroupFromJSONTyped(json: any, ignoreDiscriminator: boolean): ReviewerGroup { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + }; +} + +export function ReviewerGroupToJSON(json: any): ReviewerGroup { + return ReviewerGroupToJSONTyped(json, false); +} + +export function ReviewerGroupToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + }; +} diff --git a/packages/client-ts/src/models/ReviewerUser.ts b/packages/client-ts/src/models/ReviewerUser.ts new file mode 100644 index 0000000000..c01eb4a109 --- /dev/null +++ b/packages/client-ts/src/models/ReviewerUser.ts @@ -0,0 +1,90 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + * @interface ReviewerUser + */ +export interface ReviewerUser { + /** + * + * @type {number} + * @memberof ReviewerUser + */ + readonly pk: number; + /** + * + * @type {string} + * @memberof ReviewerUser + */ + readonly uuid: string; + /** + * Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only. + * @type {string} + * @memberof ReviewerUser + */ + username: string; + /** + * User's display name. + * @type {string} + * @memberof ReviewerUser + */ + name: string; +} + +/** + * Check if a given object implements the ReviewerUser interface. + */ +export function instanceOfReviewerUser(value: object): value is ReviewerUser { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("uuid" in value) || value["uuid"] === undefined) return false; + if (!("username" in value) || value["username"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + return true; +} + +export function ReviewerUserFromJSON(json: any): ReviewerUser { + return ReviewerUserFromJSONTyped(json, false); +} + +export function ReviewerUserFromJSONTyped(json: any, ignoreDiscriminator: boolean): ReviewerUser { + if (json == null) { + return json; + } + return { + pk: json["pk"], + uuid: json["uuid"], + username: json["username"], + name: json["name"], + }; +} + +export function ReviewerUserToJSON(json: any): ReviewerUser { + return ReviewerUserToJSONTyped(json, false); +} + +export function ReviewerUserToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + username: value["username"], + name: value["name"], + }; +} diff --git a/packages/client-ts/src/models/Role.ts b/packages/client-ts/src/models/Role.ts new file mode 100644 index 0000000000..f0266b7dd9 --- /dev/null +++ b/packages/client-ts/src/models/Role.ts @@ -0,0 +1,73 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Role serializer + * @export + * @interface Role + */ +export interface Role { + /** + * + * @type {string} + * @memberof Role + */ + readonly pk: string; + /** + * + * @type {string} + * @memberof Role + */ + name: string; +} + +/** + * Check if a given object implements the Role interface. + */ +export function instanceOfRole(value: object): value is Role { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + return true; +} + +export function RoleFromJSON(json: any): Role { + return RoleFromJSONTyped(json, false); +} + +export function RoleFromJSONTyped(json: any, ignoreDiscriminator: boolean): Role { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + }; +} + +export function RoleToJSON(json: any): Role { + return RoleToJSONTyped(json, false); +} + +export function RoleToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + }; +} diff --git a/packages/client-ts/src/models/RoleAssignedObjectPermission.ts b/packages/client-ts/src/models/RoleAssignedObjectPermission.ts new file mode 100644 index 0000000000..61adc4857e --- /dev/null +++ b/packages/client-ts/src/models/RoleAssignedObjectPermission.ts @@ -0,0 +1,106 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { RoleModelPermission } from "./RoleModelPermission"; +import { RoleModelPermissionFromJSON, RoleModelPermissionToJSON } from "./RoleModelPermission"; +import type { RoleObjectPermission } from "./RoleObjectPermission"; +import { RoleObjectPermissionFromJSON, RoleObjectPermissionToJSON } from "./RoleObjectPermission"; + +/** + * Roles assigned object permission serializer + * @export + * @interface RoleAssignedObjectPermission + */ +export interface RoleAssignedObjectPermission { + /** + * + * @type {string} + * @memberof RoleAssignedObjectPermission + */ + readonly rolePk: string; + /** + * + * @type {string} + * @memberof RoleAssignedObjectPermission + */ + readonly name: string; + /** + * + * @type {Array} + * @memberof RoleAssignedObjectPermission + */ + objectPermissions: Array; + /** + * + * @type {Array} + * @memberof RoleAssignedObjectPermission + */ + modelPermissions: Array; +} + +/** + * Check if a given object implements the RoleAssignedObjectPermission interface. + */ +export function instanceOfRoleAssignedObjectPermission( + value: object, +): value is RoleAssignedObjectPermission { + if (!("rolePk" in value) || value["rolePk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("objectPermissions" in value) || value["objectPermissions"] === undefined) return false; + if (!("modelPermissions" in value) || value["modelPermissions"] === undefined) return false; + return true; +} + +export function RoleAssignedObjectPermissionFromJSON(json: any): RoleAssignedObjectPermission { + return RoleAssignedObjectPermissionFromJSONTyped(json, false); +} + +export function RoleAssignedObjectPermissionFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): RoleAssignedObjectPermission { + if (json == null) { + return json; + } + return { + rolePk: json["role_pk"], + name: json["name"], + objectPermissions: (json["object_permissions"] as Array).map( + RoleObjectPermissionFromJSON, + ), + modelPermissions: (json["model_permissions"] as Array).map( + RoleModelPermissionFromJSON, + ), + }; +} + +export function RoleAssignedObjectPermissionToJSON(json: any): RoleAssignedObjectPermission { + return RoleAssignedObjectPermissionToJSONTyped(json, false); +} + +export function RoleAssignedObjectPermissionToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + object_permissions: (value["objectPermissions"] as Array).map( + RoleObjectPermissionToJSON, + ), + model_permissions: (value["modelPermissions"] as Array).map(RoleModelPermissionToJSON), + }; +} diff --git a/packages/client-ts/src/models/RoleModelPermission.ts b/packages/client-ts/src/models/RoleModelPermission.ts new file mode 100644 index 0000000000..82cd66e973 --- /dev/null +++ b/packages/client-ts/src/models/RoleModelPermission.ts @@ -0,0 +1,98 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Role-bound object level permission + * @export + * @interface RoleModelPermission + */ +export interface RoleModelPermission { + /** + * + * @type {number} + * @memberof RoleModelPermission + */ + readonly id: number; + /** + * + * @type {string} + * @memberof RoleModelPermission + */ + readonly codename: string; + /** + * + * @type {string} + * @memberof RoleModelPermission + */ + readonly model: string; + /** + * + * @type {string} + * @memberof RoleModelPermission + */ + readonly appLabel: string; + /** + * + * @type {string} + * @memberof RoleModelPermission + */ + readonly name: string; +} + +/** + * Check if a given object implements the RoleModelPermission interface. + */ +export function instanceOfRoleModelPermission(value: object): value is RoleModelPermission { + if (!("id" in value) || value["id"] === undefined) return false; + if (!("codename" in value) || value["codename"] === undefined) return false; + if (!("model" in value) || value["model"] === undefined) return false; + if (!("appLabel" in value) || value["appLabel"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + return true; +} + +export function RoleModelPermissionFromJSON(json: any): RoleModelPermission { + return RoleModelPermissionFromJSONTyped(json, false); +} + +export function RoleModelPermissionFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): RoleModelPermission { + if (json == null) { + return json; + } + return { + id: json["id"], + codename: json["codename"], + model: json["model"], + appLabel: json["app_label"], + name: json["name"], + }; +} + +export function RoleModelPermissionToJSON(json: any): RoleModelPermission { + return RoleModelPermissionToJSONTyped(json, false); +} + +export function RoleModelPermissionToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return {}; +} diff --git a/packages/client-ts/src/models/RoleObjectPermission.ts b/packages/client-ts/src/models/RoleObjectPermission.ts new file mode 100644 index 0000000000..1b74d8493a --- /dev/null +++ b/packages/client-ts/src/models/RoleObjectPermission.ts @@ -0,0 +1,108 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Role-bound object level permission + * @export + * @interface RoleObjectPermission + */ +export interface RoleObjectPermission { + /** + * + * @type {number} + * @memberof RoleObjectPermission + */ + readonly id: number; + /** + * + * @type {string} + * @memberof RoleObjectPermission + */ + readonly codename: string; + /** + * + * @type {string} + * @memberof RoleObjectPermission + */ + readonly model: string; + /** + * + * @type {string} + * @memberof RoleObjectPermission + */ + readonly appLabel: string; + /** + * + * @type {string} + * @memberof RoleObjectPermission + */ + objectPk: string; + /** + * + * @type {string} + * @memberof RoleObjectPermission + */ + readonly name: string; +} + +/** + * Check if a given object implements the RoleObjectPermission interface. + */ +export function instanceOfRoleObjectPermission(value: object): value is RoleObjectPermission { + if (!("id" in value) || value["id"] === undefined) return false; + if (!("codename" in value) || value["codename"] === undefined) return false; + if (!("model" in value) || value["model"] === undefined) return false; + if (!("appLabel" in value) || value["appLabel"] === undefined) return false; + if (!("objectPk" in value) || value["objectPk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + return true; +} + +export function RoleObjectPermissionFromJSON(json: any): RoleObjectPermission { + return RoleObjectPermissionFromJSONTyped(json, false); +} + +export function RoleObjectPermissionFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): RoleObjectPermission { + if (json == null) { + return json; + } + return { + id: json["id"], + codename: json["codename"], + model: json["model"], + appLabel: json["app_label"], + objectPk: json["object_pk"], + name: json["name"], + }; +} + +export function RoleObjectPermissionToJSON(json: any): RoleObjectPermission { + return RoleObjectPermissionToJSONTyped(json, false); +} + +export function RoleObjectPermissionToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + object_pk: value["objectPk"], + }; +} diff --git a/packages/client-ts/src/models/RoleRequest.ts b/packages/client-ts/src/models/RoleRequest.ts new file mode 100644 index 0000000000..39d5241336 --- /dev/null +++ b/packages/client-ts/src/models/RoleRequest.ts @@ -0,0 +1,65 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Role serializer + * @export + * @interface RoleRequest + */ +export interface RoleRequest { + /** + * + * @type {string} + * @memberof RoleRequest + */ + name: string; +} + +/** + * Check if a given object implements the RoleRequest interface. + */ +export function instanceOfRoleRequest(value: object): value is RoleRequest { + if (!("name" in value) || value["name"] === undefined) return false; + return true; +} + +export function RoleRequestFromJSON(json: any): RoleRequest { + return RoleRequestFromJSONTyped(json, false); +} + +export function RoleRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): RoleRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + }; +} + +export function RoleRequestToJSON(json: any): RoleRequest { + return RoleRequestToJSONTyped(json, false); +} + +export function RoleRequestToJSONTyped( + value?: RoleRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + }; +} diff --git a/packages/client-ts/src/models/SAMLBindingsEnum.ts b/packages/client-ts/src/models/SAMLBindingsEnum.ts new file mode 100644 index 0000000000..79c31234bd --- /dev/null +++ b/packages/client-ts/src/models/SAMLBindingsEnum.ts @@ -0,0 +1,57 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const SAMLBindingsEnum = { + Redirect: "redirect", + Post: "post", + UnknownDefaultOpenApi: "11184809", +} as const; +export type SAMLBindingsEnum = (typeof SAMLBindingsEnum)[keyof typeof SAMLBindingsEnum]; + +export function instanceOfSAMLBindingsEnum(value: any): boolean { + for (const key in SAMLBindingsEnum) { + if (Object.prototype.hasOwnProperty.call(SAMLBindingsEnum, key)) { + if (SAMLBindingsEnum[key as keyof typeof SAMLBindingsEnum] === value) { + return true; + } + } + } + return false; +} + +export function SAMLBindingsEnumFromJSON(json: any): SAMLBindingsEnum { + return SAMLBindingsEnumFromJSONTyped(json, false); +} + +export function SAMLBindingsEnumFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): SAMLBindingsEnum { + return json as SAMLBindingsEnum; +} + +export function SAMLBindingsEnumToJSON(value?: SAMLBindingsEnum | null): any { + return value as any; +} + +export function SAMLBindingsEnumToJSONTyped( + value: any, + ignoreDiscriminator: boolean, +): SAMLBindingsEnum { + return value as SAMLBindingsEnum; +} diff --git a/packages/client-ts/src/models/SAMLLogoutMethods.ts b/packages/client-ts/src/models/SAMLLogoutMethods.ts new file mode 100644 index 0000000000..0ebea60f7e --- /dev/null +++ b/packages/client-ts/src/models/SAMLLogoutMethods.ts @@ -0,0 +1,58 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const SAMLLogoutMethods = { + FrontchannelIframe: "frontchannel_iframe", + FrontchannelNative: "frontchannel_native", + Backchannel: "backchannel", + UnknownDefaultOpenApi: "11184809", +} as const; +export type SAMLLogoutMethods = (typeof SAMLLogoutMethods)[keyof typeof SAMLLogoutMethods]; + +export function instanceOfSAMLLogoutMethods(value: any): boolean { + for (const key in SAMLLogoutMethods) { + if (Object.prototype.hasOwnProperty.call(SAMLLogoutMethods, key)) { + if (SAMLLogoutMethods[key as keyof typeof SAMLLogoutMethods] === value) { + return true; + } + } + } + return false; +} + +export function SAMLLogoutMethodsFromJSON(json: any): SAMLLogoutMethods { + return SAMLLogoutMethodsFromJSONTyped(json, false); +} + +export function SAMLLogoutMethodsFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): SAMLLogoutMethods { + return json as SAMLLogoutMethods; +} + +export function SAMLLogoutMethodsToJSON(value?: SAMLLogoutMethods | null): any { + return value as any; +} + +export function SAMLLogoutMethodsToJSONTyped( + value: any, + ignoreDiscriminator: boolean, +): SAMLLogoutMethods { + return value as SAMLLogoutMethods; +} diff --git a/packages/client-ts/src/models/SAMLMetadata.ts b/packages/client-ts/src/models/SAMLMetadata.ts new file mode 100644 index 0000000000..825ba0dd5b --- /dev/null +++ b/packages/client-ts/src/models/SAMLMetadata.ts @@ -0,0 +1,73 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * SAML Provider Metadata serializer + * @export + * @interface SAMLMetadata + */ +export interface SAMLMetadata { + /** + * + * @type {string} + * @memberof SAMLMetadata + */ + metadata: string; + /** + * + * @type {string} + * @memberof SAMLMetadata + */ + downloadUrl?: string | null; +} + +/** + * Check if a given object implements the SAMLMetadata interface. + */ +export function instanceOfSAMLMetadata(value: object): value is SAMLMetadata { + if (!("metadata" in value) || value["metadata"] === undefined) return false; + return true; +} + +export function SAMLMetadataFromJSON(json: any): SAMLMetadata { + return SAMLMetadataFromJSONTyped(json, false); +} + +export function SAMLMetadataFromJSONTyped(json: any, ignoreDiscriminator: boolean): SAMLMetadata { + if (json == null) { + return json; + } + return { + metadata: json["metadata"], + downloadUrl: json["download_url"] == null ? undefined : json["download_url"], + }; +} + +export function SAMLMetadataToJSON(json: any): SAMLMetadata { + return SAMLMetadataToJSONTyped(json, false); +} + +export function SAMLMetadataToJSONTyped( + value?: SAMLMetadata | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + metadata: value["metadata"], + download_url: value["downloadUrl"], + }; +} diff --git a/packages/client-ts/src/models/SAMLNameIDPolicyEnum.ts b/packages/client-ts/src/models/SAMLNameIDPolicyEnum.ts new file mode 100644 index 0000000000..39c2445f70 --- /dev/null +++ b/packages/client-ts/src/models/SAMLNameIDPolicyEnum.ts @@ -0,0 +1,67 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const SAMLNameIDPolicyEnum = { + UrnOasisNamesTcSaml11NameidFormatEmailAddress: + "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress", + UrnOasisNamesTcSaml20NameidFormatPersistent: + "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent", + UrnOasisNamesTcSaml11NameidFormatX509SubjectName: + "urn:oasis:names:tc:SAML:1.1:nameid-format:X509SubjectName", + UrnOasisNamesTcSaml20NameidFormatWindowsDomainQualifiedName: + "urn:oasis:names:tc:SAML:2.0:nameid-format:WindowsDomainQualifiedName", + UrnOasisNamesTcSaml20NameidFormatTransient: + "urn:oasis:names:tc:SAML:2.0:nameid-format:transient", + UrnOasisNamesTcSaml11NameidFormatUnspecified: + "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified", + UnknownDefaultOpenApi: "11184809", +} as const; +export type SAMLNameIDPolicyEnum = (typeof SAMLNameIDPolicyEnum)[keyof typeof SAMLNameIDPolicyEnum]; + +export function instanceOfSAMLNameIDPolicyEnum(value: any): boolean { + for (const key in SAMLNameIDPolicyEnum) { + if (Object.prototype.hasOwnProperty.call(SAMLNameIDPolicyEnum, key)) { + if (SAMLNameIDPolicyEnum[key as keyof typeof SAMLNameIDPolicyEnum] === value) { + return true; + } + } + } + return false; +} + +export function SAMLNameIDPolicyEnumFromJSON(json: any): SAMLNameIDPolicyEnum { + return SAMLNameIDPolicyEnumFromJSONTyped(json, false); +} + +export function SAMLNameIDPolicyEnumFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): SAMLNameIDPolicyEnum { + return json as SAMLNameIDPolicyEnum; +} + +export function SAMLNameIDPolicyEnumToJSON(value?: SAMLNameIDPolicyEnum | null): any { + return value as any; +} + +export function SAMLNameIDPolicyEnumToJSONTyped( + value: any, + ignoreDiscriminator: boolean, +): SAMLNameIDPolicyEnum { + return value as SAMLNameIDPolicyEnum; +} diff --git a/packages/client-ts/src/models/SAMLPropertyMapping.ts b/packages/client-ts/src/models/SAMLPropertyMapping.ts new file mode 100644 index 0000000000..15afee8805 --- /dev/null +++ b/packages/client-ts/src/models/SAMLPropertyMapping.ts @@ -0,0 +1,145 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * SAMLPropertyMapping Serializer + * @export + * @interface SAMLPropertyMapping + */ +export interface SAMLPropertyMapping { + /** + * + * @type {string} + * @memberof SAMLPropertyMapping + */ + readonly pk: string; + /** + * Objects that are managed by authentik. These objects are created and updated automatically. This flag only indicates that an object can be overwritten by migrations. You can still modify the objects via the API, but expect changes to be overwritten in a later update. + * @type {string} + * @memberof SAMLPropertyMapping + */ + managed?: string | null; + /** + * + * @type {string} + * @memberof SAMLPropertyMapping + */ + name: string; + /** + * + * @type {string} + * @memberof SAMLPropertyMapping + */ + expression: string; + /** + * Get object's component so that we know how to edit the object + * @type {string} + * @memberof SAMLPropertyMapping + */ + readonly component: string; + /** + * Return object's verbose_name + * @type {string} + * @memberof SAMLPropertyMapping + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof SAMLPropertyMapping + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof SAMLPropertyMapping + */ + readonly metaModelName: string; + /** + * + * @type {string} + * @memberof SAMLPropertyMapping + */ + samlName: string; + /** + * + * @type {string} + * @memberof SAMLPropertyMapping + */ + friendlyName?: string | null; +} + +/** + * Check if a given object implements the SAMLPropertyMapping interface. + */ +export function instanceOfSAMLPropertyMapping(value: object): value is SAMLPropertyMapping { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("expression" in value) || value["expression"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + if (!("samlName" in value) || value["samlName"] === undefined) return false; + return true; +} + +export function SAMLPropertyMappingFromJSON(json: any): SAMLPropertyMapping { + return SAMLPropertyMappingFromJSONTyped(json, false); +} + +export function SAMLPropertyMappingFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): SAMLPropertyMapping { + if (json == null) { + return json; + } + return { + pk: json["pk"], + managed: json["managed"] == null ? undefined : json["managed"], + name: json["name"], + expression: json["expression"], + component: json["component"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + samlName: json["saml_name"], + friendlyName: json["friendly_name"] == null ? undefined : json["friendly_name"], + }; +} + +export function SAMLPropertyMappingToJSON(json: any): SAMLPropertyMapping { + return SAMLPropertyMappingToJSONTyped(json, false); +} + +export function SAMLPropertyMappingToJSONTyped( + value?: Omit< + SAMLPropertyMapping, + "pk" | "component" | "verbose_name" | "verbose_name_plural" | "meta_model_name" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + managed: value["managed"], + name: value["name"], + expression: value["expression"], + saml_name: value["samlName"], + friendly_name: value["friendlyName"], + }; +} diff --git a/packages/client-ts/src/models/SAMLPropertyMappingRequest.ts b/packages/client-ts/src/models/SAMLPropertyMappingRequest.ts new file mode 100644 index 0000000000..7bf7db7bda --- /dev/null +++ b/packages/client-ts/src/models/SAMLPropertyMappingRequest.ts @@ -0,0 +1,104 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * SAMLPropertyMapping Serializer + * @export + * @interface SAMLPropertyMappingRequest + */ +export interface SAMLPropertyMappingRequest { + /** + * Objects that are managed by authentik. These objects are created and updated automatically. This flag only indicates that an object can be overwritten by migrations. You can still modify the objects via the API, but expect changes to be overwritten in a later update. + * @type {string} + * @memberof SAMLPropertyMappingRequest + */ + managed?: string | null; + /** + * + * @type {string} + * @memberof SAMLPropertyMappingRequest + */ + name: string; + /** + * + * @type {string} + * @memberof SAMLPropertyMappingRequest + */ + expression: string; + /** + * + * @type {string} + * @memberof SAMLPropertyMappingRequest + */ + samlName: string; + /** + * + * @type {string} + * @memberof SAMLPropertyMappingRequest + */ + friendlyName?: string | null; +} + +/** + * Check if a given object implements the SAMLPropertyMappingRequest interface. + */ +export function instanceOfSAMLPropertyMappingRequest( + value: object, +): value is SAMLPropertyMappingRequest { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("expression" in value) || value["expression"] === undefined) return false; + if (!("samlName" in value) || value["samlName"] === undefined) return false; + return true; +} + +export function SAMLPropertyMappingRequestFromJSON(json: any): SAMLPropertyMappingRequest { + return SAMLPropertyMappingRequestFromJSONTyped(json, false); +} + +export function SAMLPropertyMappingRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): SAMLPropertyMappingRequest { + if (json == null) { + return json; + } + return { + managed: json["managed"] == null ? undefined : json["managed"], + name: json["name"], + expression: json["expression"], + samlName: json["saml_name"], + friendlyName: json["friendly_name"] == null ? undefined : json["friendly_name"], + }; +} + +export function SAMLPropertyMappingRequestToJSON(json: any): SAMLPropertyMappingRequest { + return SAMLPropertyMappingRequestToJSONTyped(json, false); +} + +export function SAMLPropertyMappingRequestToJSONTyped( + value?: SAMLPropertyMappingRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + managed: value["managed"], + name: value["name"], + expression: value["expression"], + saml_name: value["samlName"], + friendly_name: value["friendlyName"], + }; +} diff --git a/packages/client-ts/src/models/SAMLProvider.ts b/packages/client-ts/src/models/SAMLProvider.ts new file mode 100644 index 0000000000..763e9b741f --- /dev/null +++ b/packages/client-ts/src/models/SAMLProvider.ts @@ -0,0 +1,503 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { DigestAlgorithmEnum } from "./DigestAlgorithmEnum"; +import { DigestAlgorithmEnumFromJSON, DigestAlgorithmEnumToJSON } from "./DigestAlgorithmEnum"; +import type { SAMLBindingsEnum } from "./SAMLBindingsEnum"; +import { SAMLBindingsEnumFromJSON, SAMLBindingsEnumToJSON } from "./SAMLBindingsEnum"; +import type { SAMLLogoutMethods } from "./SAMLLogoutMethods"; +import { SAMLLogoutMethodsFromJSON, SAMLLogoutMethodsToJSON } from "./SAMLLogoutMethods"; +import type { SAMLNameIDPolicyEnum } from "./SAMLNameIDPolicyEnum"; +import { SAMLNameIDPolicyEnumFromJSON, SAMLNameIDPolicyEnumToJSON } from "./SAMLNameIDPolicyEnum"; +import type { SignatureAlgorithmEnum } from "./SignatureAlgorithmEnum"; +import { + SignatureAlgorithmEnumFromJSON, + SignatureAlgorithmEnumToJSON, +} from "./SignatureAlgorithmEnum"; + +/** + * SAMLProvider Serializer + * @export + * @interface SAMLProvider + */ +export interface SAMLProvider { + /** + * + * @type {number} + * @memberof SAMLProvider + */ + readonly pk: number; + /** + * + * @type {string} + * @memberof SAMLProvider + */ + name: string; + /** + * Flow used for authentication when the associated application is accessed by an un-authenticated user. + * @type {string} + * @memberof SAMLProvider + */ + authenticationFlow?: string | null; + /** + * Flow used when authorizing this provider. + * @type {string} + * @memberof SAMLProvider + */ + authorizationFlow: string; + /** + * Flow used ending the session from a provider. + * @type {string} + * @memberof SAMLProvider + */ + invalidationFlow: string; + /** + * + * @type {Array} + * @memberof SAMLProvider + */ + propertyMappings?: Array; + /** + * Get object component so that we know how to edit the object + * @type {string} + * @memberof SAMLProvider + */ + readonly component: string; + /** + * Internal application name, used in URLs. + * @type {string} + * @memberof SAMLProvider + */ + readonly assignedApplicationSlug: string | null; + /** + * Application's display Name. + * @type {string} + * @memberof SAMLProvider + */ + readonly assignedApplicationName: string | null; + /** + * Internal application name, used in URLs. + * @type {string} + * @memberof SAMLProvider + */ + readonly assignedBackchannelApplicationSlug: string | null; + /** + * Application's display Name. + * @type {string} + * @memberof SAMLProvider + */ + readonly assignedBackchannelApplicationName: string | null; + /** + * Return object's verbose_name + * @type {string} + * @memberof SAMLProvider + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof SAMLProvider + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof SAMLProvider + */ + readonly metaModelName: string; + /** + * + * @type {string} + * @memberof SAMLProvider + */ + acsUrl: string; + /** + * Single Logout Service URL where the logout response should be sent. + * @type {string} + * @memberof SAMLProvider + */ + slsUrl?: string; + /** + * Value of the audience restriction field of the assertion. When left empty, no audience restriction will be added. + * @type {string} + * @memberof SAMLProvider + */ + audience?: string; + /** + * Also known as EntityID. Providing a value overrides the default issuer generated by authentik. + * @type {string} + * @memberof SAMLProvider + */ + issuerOverride?: string; + /** + * Assertion valid not before current time + this value (Format: hours=-1;minutes=-2;seconds=-3). + * @type {string} + * @memberof SAMLProvider + */ + assertionValidNotBefore?: string; + /** + * Assertion not valid on or after current time + this value (Format: hours=1;minutes=2;seconds=3). + * @type {string} + * @memberof SAMLProvider + */ + assertionValidNotOnOrAfter?: string; + /** + * Session not valid on or after current time + this value (Format: hours=1;minutes=2;seconds=3). + * @type {string} + * @memberof SAMLProvider + */ + sessionValidNotOnOrAfter?: string; + /** + * Configure how the NameID value will be created. When left empty, the NameIDPolicy of the incoming request will be considered + * @type {string} + * @memberof SAMLProvider + */ + nameIdMapping?: string | null; + /** + * Configure how the AuthnContextClassRef value will be created. When left empty, the AuthnContextClassRef will be set based on which authentication methods the user used to authenticate. + * @type {string} + * @memberof SAMLProvider + */ + authnContextClassRefMapping?: string | null; + /** + * + * @type {DigestAlgorithmEnum} + * @memberof SAMLProvider + */ + digestAlgorithm?: DigestAlgorithmEnum; + /** + * + * @type {SignatureAlgorithmEnum} + * @memberof SAMLProvider + */ + signatureAlgorithm?: SignatureAlgorithmEnum; + /** + * Keypair used to sign outgoing Responses going to the Service Provider. + * @type {string} + * @memberof SAMLProvider + */ + signingKp?: string | null; + /** + * When selected, incoming assertion's Signatures will be validated against this certificate. To allow unsigned Requests, leave on default. + * @type {string} + * @memberof SAMLProvider + */ + verificationKp?: string | null; + /** + * When selected, incoming assertions are encrypted by the IdP using the public key of the encryption keypair. The assertion is decrypted by the SP using the the private key. + * @type {string} + * @memberof SAMLProvider + */ + encryptionKp?: string | null; + /** + * + * @type {boolean} + * @memberof SAMLProvider + */ + signAssertion?: boolean; + /** + * + * @type {boolean} + * @memberof SAMLProvider + */ + signResponse?: boolean; + /** + * + * @type {boolean} + * @memberof SAMLProvider + */ + signLogoutRequest?: boolean; + /** + * + * @type {boolean} + * @memberof SAMLProvider + */ + signLogoutResponse?: boolean; + /** + * This determines how authentik sends the response back to the Service Provider. + * @type {SAMLBindingsEnum} + * @memberof SAMLProvider + */ + spBinding?: SAMLBindingsEnum; + /** + * This determines how authentik sends the logout response back to the Service Provider. + * @type {SAMLBindingsEnum} + * @memberof SAMLProvider + */ + slsBinding?: SAMLBindingsEnum; + /** + * Method to use for logout. Front-channel iframe loads all logout URLs simultaneously in hidden iframes. Front-channel native uses your active browser tab to send post requests and redirect to providers. Back-channel sends logout requests directly from the server without user interaction (requires POST SLS binding). + * @type {SAMLLogoutMethods} + * @memberof SAMLProvider + */ + logoutMethod?: SAMLLogoutMethods; + /** + * Default relay_state value for IDP-initiated logins + * @type {string} + * @memberof SAMLProvider + */ + defaultRelayState?: string; + /** + * + * @type {SAMLNameIDPolicyEnum} + * @memberof SAMLProvider + */ + defaultNameIdPolicy?: SAMLNameIDPolicyEnum; + /** + * Get metadata download URL + * @type {string} + * @memberof SAMLProvider + */ + readonly urlDownloadMetadata: string; + /** + * Get Issuer/EntityID URL + * @type {string} + * @memberof SAMLProvider + */ + readonly urlIssuer: string; + /** + * Get unified SAML endpoint URL (handles SSO and SLO) + * @type {string} + * @memberof SAMLProvider + */ + readonly urlUnified: string; + /** + * Get IdP-initiated SAML URL + * @type {string} + * @memberof SAMLProvider + */ + readonly urlUnifiedInit: string; + /** + * Get SSO Post URL + * @type {string} + * @memberof SAMLProvider + */ + readonly urlSsoPost: string; + /** + * Get SSO Redirect URL + * @type {string} + * @memberof SAMLProvider + */ + readonly urlSsoRedirect: string; + /** + * Get SSO IDP-Initiated URL + * @type {string} + * @memberof SAMLProvider + */ + readonly urlSsoInit: string; + /** + * Get SLO POST URL + * @type {string} + * @memberof SAMLProvider + */ + readonly urlSloPost: string; + /** + * Get SLO redirect URL + * @type {string} + * @memberof SAMLProvider + */ + readonly urlSloRedirect: string; +} + +/** + * Check if a given object implements the SAMLProvider interface. + */ +export function instanceOfSAMLProvider(value: object): value is SAMLProvider { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("authorizationFlow" in value) || value["authorizationFlow"] === undefined) return false; + if (!("invalidationFlow" in value) || value["invalidationFlow"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if (!("assignedApplicationSlug" in value) || value["assignedApplicationSlug"] === undefined) + return false; + if (!("assignedApplicationName" in value) || value["assignedApplicationName"] === undefined) + return false; + if ( + !("assignedBackchannelApplicationSlug" in value) || + value["assignedBackchannelApplicationSlug"] === undefined + ) + return false; + if ( + !("assignedBackchannelApplicationName" in value) || + value["assignedBackchannelApplicationName"] === undefined + ) + return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + if (!("acsUrl" in value) || value["acsUrl"] === undefined) return false; + if (!("urlDownloadMetadata" in value) || value["urlDownloadMetadata"] === undefined) + return false; + if (!("urlIssuer" in value) || value["urlIssuer"] === undefined) return false; + if (!("urlUnified" in value) || value["urlUnified"] === undefined) return false; + if (!("urlUnifiedInit" in value) || value["urlUnifiedInit"] === undefined) return false; + if (!("urlSsoPost" in value) || value["urlSsoPost"] === undefined) return false; + if (!("urlSsoRedirect" in value) || value["urlSsoRedirect"] === undefined) return false; + if (!("urlSsoInit" in value) || value["urlSsoInit"] === undefined) return false; + if (!("urlSloPost" in value) || value["urlSloPost"] === undefined) return false; + if (!("urlSloRedirect" in value) || value["urlSloRedirect"] === undefined) return false; + return true; +} + +export function SAMLProviderFromJSON(json: any): SAMLProvider { + return SAMLProviderFromJSONTyped(json, false); +} + +export function SAMLProviderFromJSONTyped(json: any, ignoreDiscriminator: boolean): SAMLProvider { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + authenticationFlow: + json["authentication_flow"] == null ? undefined : json["authentication_flow"], + authorizationFlow: json["authorization_flow"], + invalidationFlow: json["invalidation_flow"], + propertyMappings: json["property_mappings"] == null ? undefined : json["property_mappings"], + component: json["component"], + assignedApplicationSlug: json["assigned_application_slug"], + assignedApplicationName: json["assigned_application_name"], + assignedBackchannelApplicationSlug: json["assigned_backchannel_application_slug"], + assignedBackchannelApplicationName: json["assigned_backchannel_application_name"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + acsUrl: json["acs_url"], + slsUrl: json["sls_url"] == null ? undefined : json["sls_url"], + audience: json["audience"] == null ? undefined : json["audience"], + issuerOverride: json["issuer_override"] == null ? undefined : json["issuer_override"], + assertionValidNotBefore: + json["assertion_valid_not_before"] == null + ? undefined + : json["assertion_valid_not_before"], + assertionValidNotOnOrAfter: + json["assertion_valid_not_on_or_after"] == null + ? undefined + : json["assertion_valid_not_on_or_after"], + sessionValidNotOnOrAfter: + json["session_valid_not_on_or_after"] == null + ? undefined + : json["session_valid_not_on_or_after"], + nameIdMapping: json["name_id_mapping"] == null ? undefined : json["name_id_mapping"], + authnContextClassRefMapping: + json["authn_context_class_ref_mapping"] == null + ? undefined + : json["authn_context_class_ref_mapping"], + digestAlgorithm: + json["digest_algorithm"] == null + ? undefined + : DigestAlgorithmEnumFromJSON(json["digest_algorithm"]), + signatureAlgorithm: + json["signature_algorithm"] == null + ? undefined + : SignatureAlgorithmEnumFromJSON(json["signature_algorithm"]), + signingKp: json["signing_kp"] == null ? undefined : json["signing_kp"], + verificationKp: json["verification_kp"] == null ? undefined : json["verification_kp"], + encryptionKp: json["encryption_kp"] == null ? undefined : json["encryption_kp"], + signAssertion: json["sign_assertion"] == null ? undefined : json["sign_assertion"], + signResponse: json["sign_response"] == null ? undefined : json["sign_response"], + signLogoutRequest: + json["sign_logout_request"] == null ? undefined : json["sign_logout_request"], + signLogoutResponse: + json["sign_logout_response"] == null ? undefined : json["sign_logout_response"], + spBinding: + json["sp_binding"] == null ? undefined : SAMLBindingsEnumFromJSON(json["sp_binding"]), + slsBinding: + json["sls_binding"] == null ? undefined : SAMLBindingsEnumFromJSON(json["sls_binding"]), + logoutMethod: + json["logout_method"] == null + ? undefined + : SAMLLogoutMethodsFromJSON(json["logout_method"]), + defaultRelayState: + json["default_relay_state"] == null ? undefined : json["default_relay_state"], + defaultNameIdPolicy: + json["default_name_id_policy"] == null + ? undefined + : SAMLNameIDPolicyEnumFromJSON(json["default_name_id_policy"]), + urlDownloadMetadata: json["url_download_metadata"], + urlIssuer: json["url_issuer"], + urlUnified: json["url_unified"], + urlUnifiedInit: json["url_unified_init"], + urlSsoPost: json["url_sso_post"], + urlSsoRedirect: json["url_sso_redirect"], + urlSsoInit: json["url_sso_init"], + urlSloPost: json["url_slo_post"], + urlSloRedirect: json["url_slo_redirect"], + }; +} + +export function SAMLProviderToJSON(json: any): SAMLProvider { + return SAMLProviderToJSONTyped(json, false); +} + +export function SAMLProviderToJSONTyped( + value?: Omit< + SAMLProvider, + | "pk" + | "component" + | "assigned_application_slug" + | "assigned_application_name" + | "assigned_backchannel_application_slug" + | "assigned_backchannel_application_name" + | "verbose_name" + | "verbose_name_plural" + | "meta_model_name" + | "url_download_metadata" + | "url_issuer" + | "url_unified" + | "url_unified_init" + | "url_sso_post" + | "url_sso_redirect" + | "url_sso_init" + | "url_slo_post" + | "url_slo_redirect" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + authentication_flow: value["authenticationFlow"], + authorization_flow: value["authorizationFlow"], + invalidation_flow: value["invalidationFlow"], + property_mappings: value["propertyMappings"], + acs_url: value["acsUrl"], + sls_url: value["slsUrl"], + audience: value["audience"], + issuer_override: value["issuerOverride"], + assertion_valid_not_before: value["assertionValidNotBefore"], + assertion_valid_not_on_or_after: value["assertionValidNotOnOrAfter"], + session_valid_not_on_or_after: value["sessionValidNotOnOrAfter"], + name_id_mapping: value["nameIdMapping"], + authn_context_class_ref_mapping: value["authnContextClassRefMapping"], + digest_algorithm: DigestAlgorithmEnumToJSON(value["digestAlgorithm"]), + signature_algorithm: SignatureAlgorithmEnumToJSON(value["signatureAlgorithm"]), + signing_kp: value["signingKp"], + verification_kp: value["verificationKp"], + encryption_kp: value["encryptionKp"], + sign_assertion: value["signAssertion"], + sign_response: value["signResponse"], + sign_logout_request: value["signLogoutRequest"], + sign_logout_response: value["signLogoutResponse"], + sp_binding: SAMLBindingsEnumToJSON(value["spBinding"]), + sls_binding: SAMLBindingsEnumToJSON(value["slsBinding"]), + logout_method: SAMLLogoutMethodsToJSON(value["logoutMethod"]), + default_relay_state: value["defaultRelayState"], + default_name_id_policy: SAMLNameIDPolicyEnumToJSON(value["defaultNameIdPolicy"]), + }; +} diff --git a/packages/client-ts/src/models/SAMLProviderRequest.ts b/packages/client-ts/src/models/SAMLProviderRequest.ts new file mode 100644 index 0000000000..5a2ef21caa --- /dev/null +++ b/packages/client-ts/src/models/SAMLProviderRequest.ts @@ -0,0 +1,331 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { DigestAlgorithmEnum } from "./DigestAlgorithmEnum"; +import { DigestAlgorithmEnumFromJSON, DigestAlgorithmEnumToJSON } from "./DigestAlgorithmEnum"; +import type { SAMLBindingsEnum } from "./SAMLBindingsEnum"; +import { SAMLBindingsEnumFromJSON, SAMLBindingsEnumToJSON } from "./SAMLBindingsEnum"; +import type { SAMLLogoutMethods } from "./SAMLLogoutMethods"; +import { SAMLLogoutMethodsFromJSON, SAMLLogoutMethodsToJSON } from "./SAMLLogoutMethods"; +import type { SAMLNameIDPolicyEnum } from "./SAMLNameIDPolicyEnum"; +import { SAMLNameIDPolicyEnumFromJSON, SAMLNameIDPolicyEnumToJSON } from "./SAMLNameIDPolicyEnum"; +import type { SignatureAlgorithmEnum } from "./SignatureAlgorithmEnum"; +import { + SignatureAlgorithmEnumFromJSON, + SignatureAlgorithmEnumToJSON, +} from "./SignatureAlgorithmEnum"; + +/** + * SAMLProvider Serializer + * @export + * @interface SAMLProviderRequest + */ +export interface SAMLProviderRequest { + /** + * + * @type {string} + * @memberof SAMLProviderRequest + */ + name: string; + /** + * Flow used for authentication when the associated application is accessed by an un-authenticated user. + * @type {string} + * @memberof SAMLProviderRequest + */ + authenticationFlow?: string | null; + /** + * Flow used when authorizing this provider. + * @type {string} + * @memberof SAMLProviderRequest + */ + authorizationFlow: string; + /** + * Flow used ending the session from a provider. + * @type {string} + * @memberof SAMLProviderRequest + */ + invalidationFlow: string; + /** + * + * @type {Array} + * @memberof SAMLProviderRequest + */ + propertyMappings?: Array; + /** + * + * @type {string} + * @memberof SAMLProviderRequest + */ + acsUrl: string; + /** + * Single Logout Service URL where the logout response should be sent. + * @type {string} + * @memberof SAMLProviderRequest + */ + slsUrl?: string; + /** + * Value of the audience restriction field of the assertion. When left empty, no audience restriction will be added. + * @type {string} + * @memberof SAMLProviderRequest + */ + audience?: string; + /** + * Also known as EntityID. Providing a value overrides the default issuer generated by authentik. + * @type {string} + * @memberof SAMLProviderRequest + */ + issuerOverride?: string; + /** + * Assertion valid not before current time + this value (Format: hours=-1;minutes=-2;seconds=-3). + * @type {string} + * @memberof SAMLProviderRequest + */ + assertionValidNotBefore?: string; + /** + * Assertion not valid on or after current time + this value (Format: hours=1;minutes=2;seconds=3). + * @type {string} + * @memberof SAMLProviderRequest + */ + assertionValidNotOnOrAfter?: string; + /** + * Session not valid on or after current time + this value (Format: hours=1;minutes=2;seconds=3). + * @type {string} + * @memberof SAMLProviderRequest + */ + sessionValidNotOnOrAfter?: string; + /** + * Configure how the NameID value will be created. When left empty, the NameIDPolicy of the incoming request will be considered + * @type {string} + * @memberof SAMLProviderRequest + */ + nameIdMapping?: string | null; + /** + * Configure how the AuthnContextClassRef value will be created. When left empty, the AuthnContextClassRef will be set based on which authentication methods the user used to authenticate. + * @type {string} + * @memberof SAMLProviderRequest + */ + authnContextClassRefMapping?: string | null; + /** + * + * @type {DigestAlgorithmEnum} + * @memberof SAMLProviderRequest + */ + digestAlgorithm?: DigestAlgorithmEnum; + /** + * + * @type {SignatureAlgorithmEnum} + * @memberof SAMLProviderRequest + */ + signatureAlgorithm?: SignatureAlgorithmEnum; + /** + * Keypair used to sign outgoing Responses going to the Service Provider. + * @type {string} + * @memberof SAMLProviderRequest + */ + signingKp?: string | null; + /** + * When selected, incoming assertion's Signatures will be validated against this certificate. To allow unsigned Requests, leave on default. + * @type {string} + * @memberof SAMLProviderRequest + */ + verificationKp?: string | null; + /** + * When selected, incoming assertions are encrypted by the IdP using the public key of the encryption keypair. The assertion is decrypted by the SP using the the private key. + * @type {string} + * @memberof SAMLProviderRequest + */ + encryptionKp?: string | null; + /** + * + * @type {boolean} + * @memberof SAMLProviderRequest + */ + signAssertion?: boolean; + /** + * + * @type {boolean} + * @memberof SAMLProviderRequest + */ + signResponse?: boolean; + /** + * + * @type {boolean} + * @memberof SAMLProviderRequest + */ + signLogoutRequest?: boolean; + /** + * + * @type {boolean} + * @memberof SAMLProviderRequest + */ + signLogoutResponse?: boolean; + /** + * This determines how authentik sends the response back to the Service Provider. + * @type {SAMLBindingsEnum} + * @memberof SAMLProviderRequest + */ + spBinding?: SAMLBindingsEnum; + /** + * This determines how authentik sends the logout response back to the Service Provider. + * @type {SAMLBindingsEnum} + * @memberof SAMLProviderRequest + */ + slsBinding?: SAMLBindingsEnum; + /** + * Method to use for logout. Front-channel iframe loads all logout URLs simultaneously in hidden iframes. Front-channel native uses your active browser tab to send post requests and redirect to providers. Back-channel sends logout requests directly from the server without user interaction (requires POST SLS binding). + * @type {SAMLLogoutMethods} + * @memberof SAMLProviderRequest + */ + logoutMethod?: SAMLLogoutMethods; + /** + * Default relay_state value for IDP-initiated logins + * @type {string} + * @memberof SAMLProviderRequest + */ + defaultRelayState?: string; + /** + * + * @type {SAMLNameIDPolicyEnum} + * @memberof SAMLProviderRequest + */ + defaultNameIdPolicy?: SAMLNameIDPolicyEnum; +} + +/** + * Check if a given object implements the SAMLProviderRequest interface. + */ +export function instanceOfSAMLProviderRequest(value: object): value is SAMLProviderRequest { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("authorizationFlow" in value) || value["authorizationFlow"] === undefined) return false; + if (!("invalidationFlow" in value) || value["invalidationFlow"] === undefined) return false; + if (!("acsUrl" in value) || value["acsUrl"] === undefined) return false; + return true; +} + +export function SAMLProviderRequestFromJSON(json: any): SAMLProviderRequest { + return SAMLProviderRequestFromJSONTyped(json, false); +} + +export function SAMLProviderRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): SAMLProviderRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + authenticationFlow: + json["authentication_flow"] == null ? undefined : json["authentication_flow"], + authorizationFlow: json["authorization_flow"], + invalidationFlow: json["invalidation_flow"], + propertyMappings: json["property_mappings"] == null ? undefined : json["property_mappings"], + acsUrl: json["acs_url"], + slsUrl: json["sls_url"] == null ? undefined : json["sls_url"], + audience: json["audience"] == null ? undefined : json["audience"], + issuerOverride: json["issuer_override"] == null ? undefined : json["issuer_override"], + assertionValidNotBefore: + json["assertion_valid_not_before"] == null + ? undefined + : json["assertion_valid_not_before"], + assertionValidNotOnOrAfter: + json["assertion_valid_not_on_or_after"] == null + ? undefined + : json["assertion_valid_not_on_or_after"], + sessionValidNotOnOrAfter: + json["session_valid_not_on_or_after"] == null + ? undefined + : json["session_valid_not_on_or_after"], + nameIdMapping: json["name_id_mapping"] == null ? undefined : json["name_id_mapping"], + authnContextClassRefMapping: + json["authn_context_class_ref_mapping"] == null + ? undefined + : json["authn_context_class_ref_mapping"], + digestAlgorithm: + json["digest_algorithm"] == null + ? undefined + : DigestAlgorithmEnumFromJSON(json["digest_algorithm"]), + signatureAlgorithm: + json["signature_algorithm"] == null + ? undefined + : SignatureAlgorithmEnumFromJSON(json["signature_algorithm"]), + signingKp: json["signing_kp"] == null ? undefined : json["signing_kp"], + verificationKp: json["verification_kp"] == null ? undefined : json["verification_kp"], + encryptionKp: json["encryption_kp"] == null ? undefined : json["encryption_kp"], + signAssertion: json["sign_assertion"] == null ? undefined : json["sign_assertion"], + signResponse: json["sign_response"] == null ? undefined : json["sign_response"], + signLogoutRequest: + json["sign_logout_request"] == null ? undefined : json["sign_logout_request"], + signLogoutResponse: + json["sign_logout_response"] == null ? undefined : json["sign_logout_response"], + spBinding: + json["sp_binding"] == null ? undefined : SAMLBindingsEnumFromJSON(json["sp_binding"]), + slsBinding: + json["sls_binding"] == null ? undefined : SAMLBindingsEnumFromJSON(json["sls_binding"]), + logoutMethod: + json["logout_method"] == null + ? undefined + : SAMLLogoutMethodsFromJSON(json["logout_method"]), + defaultRelayState: + json["default_relay_state"] == null ? undefined : json["default_relay_state"], + defaultNameIdPolicy: + json["default_name_id_policy"] == null + ? undefined + : SAMLNameIDPolicyEnumFromJSON(json["default_name_id_policy"]), + }; +} + +export function SAMLProviderRequestToJSON(json: any): SAMLProviderRequest { + return SAMLProviderRequestToJSONTyped(json, false); +} + +export function SAMLProviderRequestToJSONTyped( + value?: SAMLProviderRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + authentication_flow: value["authenticationFlow"], + authorization_flow: value["authorizationFlow"], + invalidation_flow: value["invalidationFlow"], + property_mappings: value["propertyMappings"], + acs_url: value["acsUrl"], + sls_url: value["slsUrl"], + audience: value["audience"], + issuer_override: value["issuerOverride"], + assertion_valid_not_before: value["assertionValidNotBefore"], + assertion_valid_not_on_or_after: value["assertionValidNotOnOrAfter"], + session_valid_not_on_or_after: value["sessionValidNotOnOrAfter"], + name_id_mapping: value["nameIdMapping"], + authn_context_class_ref_mapping: value["authnContextClassRefMapping"], + digest_algorithm: DigestAlgorithmEnumToJSON(value["digestAlgorithm"]), + signature_algorithm: SignatureAlgorithmEnumToJSON(value["signatureAlgorithm"]), + signing_kp: value["signingKp"], + verification_kp: value["verificationKp"], + encryption_kp: value["encryptionKp"], + sign_assertion: value["signAssertion"], + sign_response: value["signResponse"], + sign_logout_request: value["signLogoutRequest"], + sign_logout_response: value["signLogoutResponse"], + sp_binding: SAMLBindingsEnumToJSON(value["spBinding"]), + sls_binding: SAMLBindingsEnumToJSON(value["slsBinding"]), + logout_method: SAMLLogoutMethodsToJSON(value["logoutMethod"]), + default_relay_state: value["defaultRelayState"], + default_name_id_policy: SAMLNameIDPolicyEnumToJSON(value["defaultNameIdPolicy"]), + }; +} diff --git a/packages/client-ts/src/models/SAMLSource.ts b/packages/client-ts/src/models/SAMLSource.ts new file mode 100644 index 0000000000..99cbab1491 --- /dev/null +++ b/packages/client-ts/src/models/SAMLSource.ts @@ -0,0 +1,419 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { BindingTypeEnum } from "./BindingTypeEnum"; +import { BindingTypeEnumFromJSON, BindingTypeEnumToJSON } from "./BindingTypeEnum"; +import type { DigestAlgorithmEnum } from "./DigestAlgorithmEnum"; +import { DigestAlgorithmEnumFromJSON, DigestAlgorithmEnumToJSON } from "./DigestAlgorithmEnum"; +import type { GroupMatchingModeEnum } from "./GroupMatchingModeEnum"; +import { + GroupMatchingModeEnumFromJSON, + GroupMatchingModeEnumToJSON, +} from "./GroupMatchingModeEnum"; +import type { PolicyEngineMode } from "./PolicyEngineMode"; +import { PolicyEngineModeFromJSON, PolicyEngineModeToJSON } from "./PolicyEngineMode"; +import type { SAMLNameIDPolicyEnum } from "./SAMLNameIDPolicyEnum"; +import { SAMLNameIDPolicyEnumFromJSON, SAMLNameIDPolicyEnumToJSON } from "./SAMLNameIDPolicyEnum"; +import type { SignatureAlgorithmEnum } from "./SignatureAlgorithmEnum"; +import { + SignatureAlgorithmEnumFromJSON, + SignatureAlgorithmEnumToJSON, +} from "./SignatureAlgorithmEnum"; +import type { ThemedUrls } from "./ThemedUrls"; +import { ThemedUrlsFromJSON } from "./ThemedUrls"; +import type { UserMatchingModeEnum } from "./UserMatchingModeEnum"; +import { UserMatchingModeEnumFromJSON, UserMatchingModeEnumToJSON } from "./UserMatchingModeEnum"; + +/** + * SAMLSource Serializer + * @export + * @interface SAMLSource + */ +export interface SAMLSource { + /** + * + * @type {string} + * @memberof SAMLSource + */ + readonly pk: string; + /** + * Source's display Name. + * @type {string} + * @memberof SAMLSource + */ + name: string; + /** + * Internal source name, used in URLs. + * @type {string} + * @memberof SAMLSource + */ + slug: string; + /** + * + * @type {boolean} + * @memberof SAMLSource + */ + enabled?: boolean; + /** + * When enabled, this source will be displayed as a prominent button on the login page, instead of a small icon. + * @type {boolean} + * @memberof SAMLSource + */ + promoted?: boolean; + /** + * Flow to use when authenticating existing users. + * @type {string} + * @memberof SAMLSource + */ + authenticationFlow?: string | null; + /** + * Flow to use when enrolling new users. + * @type {string} + * @memberof SAMLSource + */ + enrollmentFlow?: string | null; + /** + * + * @type {Array} + * @memberof SAMLSource + */ + userPropertyMappings?: Array; + /** + * + * @type {Array} + * @memberof SAMLSource + */ + groupPropertyMappings?: Array; + /** + * Get object component so that we know how to edit the object + * @type {string} + * @memberof SAMLSource + */ + readonly component: string; + /** + * Return object's verbose_name + * @type {string} + * @memberof SAMLSource + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof SAMLSource + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof SAMLSource + */ + readonly metaModelName: string; + /** + * + * @type {PolicyEngineMode} + * @memberof SAMLSource + */ + policyEngineMode?: PolicyEngineMode; + /** + * How the source determines if an existing user should be authenticated or a new user enrolled. + * @type {UserMatchingModeEnum} + * @memberof SAMLSource + */ + userMatchingMode?: UserMatchingModeEnum; + /** + * Objects that are managed by authentik. These objects are created and updated automatically. This flag only indicates that an object can be overwritten by migrations. You can still modify the objects via the API, but expect changes to be overwritten in a later update. + * @type {string} + * @memberof SAMLSource + */ + readonly managed: string | null; + /** + * + * @type {string} + * @memberof SAMLSource + */ + userPathTemplate?: string; + /** + * + * @type {string} + * @memberof SAMLSource + */ + icon?: string; + /** + * + * @type {string} + * @memberof SAMLSource + */ + readonly iconUrl: string; + /** + * + * @type {ThemedUrls} + * @memberof SAMLSource + */ + readonly iconThemedUrls: ThemedUrls | null; + /** + * How the source determines if an existing group should be used or a new group created. + * @type {GroupMatchingModeEnum} + * @memberof SAMLSource + */ + groupMatchingMode?: GroupMatchingModeEnum; + /** + * Flow used before authentication. + * @type {string} + * @memberof SAMLSource + */ + preAuthenticationFlow: string; + /** + * Also known as Entity ID. Defaults the Metadata URL. + * @type {string} + * @memberof SAMLSource + */ + issuer?: string; + /** + * URL that the initial Login request is sent to. + * @type {string} + * @memberof SAMLSource + */ + ssoUrl: string; + /** + * Optional URL if your IDP supports Single-Logout. + * @type {string} + * @memberof SAMLSource + */ + sloUrl?: string | null; + /** + * Allows authentication flows initiated by the IdP. This can be a security risk, as no validation of the request ID is done. + * @type {boolean} + * @memberof SAMLSource + */ + allowIdpInitiated?: boolean; + /** + * When enabled, the IdP will re-authenticate the user even if a session exists. + * @type {boolean} + * @memberof SAMLSource + */ + forceAuthn?: boolean; + /** + * NameID Policy sent to the IdP. Can be unset, in which case no Policy is sent. + * @type {SAMLNameIDPolicyEnum} + * @memberof SAMLSource + */ + nameIdPolicy?: SAMLNameIDPolicyEnum; + /** + * + * @type {BindingTypeEnum} + * @memberof SAMLSource + */ + bindingType?: BindingTypeEnum; + /** + * When selected, incoming assertion's Signatures will be validated against this certificate. To allow unsigned Requests, leave on default. + * @type {string} + * @memberof SAMLSource + */ + verificationKp?: string | null; + /** + * Keypair used to sign outgoing Responses going to the Identity Provider. + * @type {string} + * @memberof SAMLSource + */ + signingKp?: string | null; + /** + * + * @type {DigestAlgorithmEnum} + * @memberof SAMLSource + */ + digestAlgorithm?: DigestAlgorithmEnum; + /** + * + * @type {SignatureAlgorithmEnum} + * @memberof SAMLSource + */ + signatureAlgorithm?: SignatureAlgorithmEnum; + /** + * Time offset when temporary users should be deleted. This only applies if your IDP uses the NameID Format 'transient', and the user doesn't log out manually. (Format: hours=1;minutes=2;seconds=3). + * @type {string} + * @memberof SAMLSource + */ + temporaryUserDeleteAfter?: string; + /** + * When selected, incoming assertions are encrypted by the IdP using the public key of the encryption keypair. The assertion is decrypted by the SP using the the private key. + * @type {string} + * @memberof SAMLSource + */ + encryptionKp?: string | null; + /** + * + * @type {boolean} + * @memberof SAMLSource + */ + signedAssertion?: boolean; + /** + * + * @type {boolean} + * @memberof SAMLSource + */ + signedResponse?: boolean; +} + +/** + * Check if a given object implements the SAMLSource interface. + */ +export function instanceOfSAMLSource(value: object): value is SAMLSource { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("slug" in value) || value["slug"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + if (!("managed" in value) || value["managed"] === undefined) return false; + if (!("iconUrl" in value) || value["iconUrl"] === undefined) return false; + if (!("iconThemedUrls" in value) || value["iconThemedUrls"] === undefined) return false; + if (!("preAuthenticationFlow" in value) || value["preAuthenticationFlow"] === undefined) + return false; + if (!("ssoUrl" in value) || value["ssoUrl"] === undefined) return false; + return true; +} + +export function SAMLSourceFromJSON(json: any): SAMLSource { + return SAMLSourceFromJSONTyped(json, false); +} + +export function SAMLSourceFromJSONTyped(json: any, ignoreDiscriminator: boolean): SAMLSource { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + slug: json["slug"], + enabled: json["enabled"] == null ? undefined : json["enabled"], + promoted: json["promoted"] == null ? undefined : json["promoted"], + authenticationFlow: + json["authentication_flow"] == null ? undefined : json["authentication_flow"], + enrollmentFlow: json["enrollment_flow"] == null ? undefined : json["enrollment_flow"], + userPropertyMappings: + json["user_property_mappings"] == null ? undefined : json["user_property_mappings"], + groupPropertyMappings: + json["group_property_mappings"] == null ? undefined : json["group_property_mappings"], + component: json["component"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + policyEngineMode: + json["policy_engine_mode"] == null + ? undefined + : PolicyEngineModeFromJSON(json["policy_engine_mode"]), + userMatchingMode: + json["user_matching_mode"] == null + ? undefined + : UserMatchingModeEnumFromJSON(json["user_matching_mode"]), + managed: json["managed"], + userPathTemplate: + json["user_path_template"] == null ? undefined : json["user_path_template"], + icon: json["icon"] == null ? undefined : json["icon"], + iconUrl: json["icon_url"], + iconThemedUrls: ThemedUrlsFromJSON(json["icon_themed_urls"]), + groupMatchingMode: + json["group_matching_mode"] == null + ? undefined + : GroupMatchingModeEnumFromJSON(json["group_matching_mode"]), + preAuthenticationFlow: json["pre_authentication_flow"], + issuer: json["issuer"] == null ? undefined : json["issuer"], + ssoUrl: json["sso_url"], + sloUrl: json["slo_url"] == null ? undefined : json["slo_url"], + allowIdpInitiated: + json["allow_idp_initiated"] == null ? undefined : json["allow_idp_initiated"], + forceAuthn: json["force_authn"] == null ? undefined : json["force_authn"], + nameIdPolicy: + json["name_id_policy"] == null + ? undefined + : SAMLNameIDPolicyEnumFromJSON(json["name_id_policy"]), + bindingType: + json["binding_type"] == null + ? undefined + : BindingTypeEnumFromJSON(json["binding_type"]), + verificationKp: json["verification_kp"] == null ? undefined : json["verification_kp"], + signingKp: json["signing_kp"] == null ? undefined : json["signing_kp"], + digestAlgorithm: + json["digest_algorithm"] == null + ? undefined + : DigestAlgorithmEnumFromJSON(json["digest_algorithm"]), + signatureAlgorithm: + json["signature_algorithm"] == null + ? undefined + : SignatureAlgorithmEnumFromJSON(json["signature_algorithm"]), + temporaryUserDeleteAfter: + json["temporary_user_delete_after"] == null + ? undefined + : json["temporary_user_delete_after"], + encryptionKp: json["encryption_kp"] == null ? undefined : json["encryption_kp"], + signedAssertion: json["signed_assertion"] == null ? undefined : json["signed_assertion"], + signedResponse: json["signed_response"] == null ? undefined : json["signed_response"], + }; +} + +export function SAMLSourceToJSON(json: any): SAMLSource { + return SAMLSourceToJSONTyped(json, false); +} + +export function SAMLSourceToJSONTyped( + value?: Omit< + SAMLSource, + | "pk" + | "component" + | "verbose_name" + | "verbose_name_plural" + | "meta_model_name" + | "managed" + | "icon_url" + | "icon_themed_urls" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + slug: value["slug"], + enabled: value["enabled"], + promoted: value["promoted"], + authentication_flow: value["authenticationFlow"], + enrollment_flow: value["enrollmentFlow"], + user_property_mappings: value["userPropertyMappings"], + group_property_mappings: value["groupPropertyMappings"], + policy_engine_mode: PolicyEngineModeToJSON(value["policyEngineMode"]), + user_matching_mode: UserMatchingModeEnumToJSON(value["userMatchingMode"]), + user_path_template: value["userPathTemplate"], + icon: value["icon"], + group_matching_mode: GroupMatchingModeEnumToJSON(value["groupMatchingMode"]), + pre_authentication_flow: value["preAuthenticationFlow"], + issuer: value["issuer"], + sso_url: value["ssoUrl"], + slo_url: value["sloUrl"], + allow_idp_initiated: value["allowIdpInitiated"], + force_authn: value["forceAuthn"], + name_id_policy: SAMLNameIDPolicyEnumToJSON(value["nameIdPolicy"]), + binding_type: BindingTypeEnumToJSON(value["bindingType"]), + verification_kp: value["verificationKp"], + signing_kp: value["signingKp"], + digest_algorithm: DigestAlgorithmEnumToJSON(value["digestAlgorithm"]), + signature_algorithm: SignatureAlgorithmEnumToJSON(value["signatureAlgorithm"]), + temporary_user_delete_after: value["temporaryUserDeleteAfter"], + encryption_kp: value["encryptionKp"], + signed_assertion: value["signedAssertion"], + signed_response: value["signedResponse"], + }; +} diff --git a/packages/client-ts/src/models/SAMLSourcePropertyMapping.ts b/packages/client-ts/src/models/SAMLSourcePropertyMapping.ts new file mode 100644 index 0000000000..f9bbb74cdc --- /dev/null +++ b/packages/client-ts/src/models/SAMLSourcePropertyMapping.ts @@ -0,0 +1,130 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * SAMLSourcePropertyMapping Serializer + * @export + * @interface SAMLSourcePropertyMapping + */ +export interface SAMLSourcePropertyMapping { + /** + * + * @type {string} + * @memberof SAMLSourcePropertyMapping + */ + readonly pk: string; + /** + * Objects that are managed by authentik. These objects are created and updated automatically. This flag only indicates that an object can be overwritten by migrations. You can still modify the objects via the API, but expect changes to be overwritten in a later update. + * @type {string} + * @memberof SAMLSourcePropertyMapping + */ + managed?: string | null; + /** + * + * @type {string} + * @memberof SAMLSourcePropertyMapping + */ + name: string; + /** + * + * @type {string} + * @memberof SAMLSourcePropertyMapping + */ + expression: string; + /** + * Get object's component so that we know how to edit the object + * @type {string} + * @memberof SAMLSourcePropertyMapping + */ + readonly component: string; + /** + * Return object's verbose_name + * @type {string} + * @memberof SAMLSourcePropertyMapping + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof SAMLSourcePropertyMapping + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof SAMLSourcePropertyMapping + */ + readonly metaModelName: string; +} + +/** + * Check if a given object implements the SAMLSourcePropertyMapping interface. + */ +export function instanceOfSAMLSourcePropertyMapping( + value: object, +): value is SAMLSourcePropertyMapping { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("expression" in value) || value["expression"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + return true; +} + +export function SAMLSourcePropertyMappingFromJSON(json: any): SAMLSourcePropertyMapping { + return SAMLSourcePropertyMappingFromJSONTyped(json, false); +} + +export function SAMLSourcePropertyMappingFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): SAMLSourcePropertyMapping { + if (json == null) { + return json; + } + return { + pk: json["pk"], + managed: json["managed"] == null ? undefined : json["managed"], + name: json["name"], + expression: json["expression"], + component: json["component"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + }; +} + +export function SAMLSourcePropertyMappingToJSON(json: any): SAMLSourcePropertyMapping { + return SAMLSourcePropertyMappingToJSONTyped(json, false); +} + +export function SAMLSourcePropertyMappingToJSONTyped( + value?: Omit< + SAMLSourcePropertyMapping, + "pk" | "component" | "verbose_name" | "verbose_name_plural" | "meta_model_name" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + managed: value["managed"], + name: value["name"], + expression: value["expression"], + }; +} diff --git a/packages/client-ts/src/models/SAMLSourcePropertyMappingRequest.ts b/packages/client-ts/src/models/SAMLSourcePropertyMappingRequest.ts new file mode 100644 index 0000000000..c96954eb05 --- /dev/null +++ b/packages/client-ts/src/models/SAMLSourcePropertyMappingRequest.ts @@ -0,0 +1,91 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * SAMLSourcePropertyMapping Serializer + * @export + * @interface SAMLSourcePropertyMappingRequest + */ +export interface SAMLSourcePropertyMappingRequest { + /** + * Objects that are managed by authentik. These objects are created and updated automatically. This flag only indicates that an object can be overwritten by migrations. You can still modify the objects via the API, but expect changes to be overwritten in a later update. + * @type {string} + * @memberof SAMLSourcePropertyMappingRequest + */ + managed?: string | null; + /** + * + * @type {string} + * @memberof SAMLSourcePropertyMappingRequest + */ + name: string; + /** + * + * @type {string} + * @memberof SAMLSourcePropertyMappingRequest + */ + expression: string; +} + +/** + * Check if a given object implements the SAMLSourcePropertyMappingRequest interface. + */ +export function instanceOfSAMLSourcePropertyMappingRequest( + value: object, +): value is SAMLSourcePropertyMappingRequest { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("expression" in value) || value["expression"] === undefined) return false; + return true; +} + +export function SAMLSourcePropertyMappingRequestFromJSON( + json: any, +): SAMLSourcePropertyMappingRequest { + return SAMLSourcePropertyMappingRequestFromJSONTyped(json, false); +} + +export function SAMLSourcePropertyMappingRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): SAMLSourcePropertyMappingRequest { + if (json == null) { + return json; + } + return { + managed: json["managed"] == null ? undefined : json["managed"], + name: json["name"], + expression: json["expression"], + }; +} + +export function SAMLSourcePropertyMappingRequestToJSON( + json: any, +): SAMLSourcePropertyMappingRequest { + return SAMLSourcePropertyMappingRequestToJSONTyped(json, false); +} + +export function SAMLSourcePropertyMappingRequestToJSONTyped( + value?: SAMLSourcePropertyMappingRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + managed: value["managed"], + name: value["name"], + expression: value["expression"], + }; +} diff --git a/packages/client-ts/src/models/SAMLSourceRequest.ts b/packages/client-ts/src/models/SAMLSourceRequest.ts new file mode 100644 index 0000000000..9f2b024f5d --- /dev/null +++ b/packages/client-ts/src/models/SAMLSourceRequest.ts @@ -0,0 +1,346 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { BindingTypeEnum } from "./BindingTypeEnum"; +import { BindingTypeEnumFromJSON, BindingTypeEnumToJSON } from "./BindingTypeEnum"; +import type { DigestAlgorithmEnum } from "./DigestAlgorithmEnum"; +import { DigestAlgorithmEnumFromJSON, DigestAlgorithmEnumToJSON } from "./DigestAlgorithmEnum"; +import type { GroupMatchingModeEnum } from "./GroupMatchingModeEnum"; +import { + GroupMatchingModeEnumFromJSON, + GroupMatchingModeEnumToJSON, +} from "./GroupMatchingModeEnum"; +import type { PolicyEngineMode } from "./PolicyEngineMode"; +import { PolicyEngineModeFromJSON, PolicyEngineModeToJSON } from "./PolicyEngineMode"; +import type { SAMLNameIDPolicyEnum } from "./SAMLNameIDPolicyEnum"; +import { SAMLNameIDPolicyEnumFromJSON, SAMLNameIDPolicyEnumToJSON } from "./SAMLNameIDPolicyEnum"; +import type { SignatureAlgorithmEnum } from "./SignatureAlgorithmEnum"; +import { + SignatureAlgorithmEnumFromJSON, + SignatureAlgorithmEnumToJSON, +} from "./SignatureAlgorithmEnum"; +import type { UserMatchingModeEnum } from "./UserMatchingModeEnum"; +import { UserMatchingModeEnumFromJSON, UserMatchingModeEnumToJSON } from "./UserMatchingModeEnum"; + +/** + * SAMLSource Serializer + * @export + * @interface SAMLSourceRequest + */ +export interface SAMLSourceRequest { + /** + * Source's display Name. + * @type {string} + * @memberof SAMLSourceRequest + */ + name: string; + /** + * Internal source name, used in URLs. + * @type {string} + * @memberof SAMLSourceRequest + */ + slug: string; + /** + * + * @type {boolean} + * @memberof SAMLSourceRequest + */ + enabled?: boolean; + /** + * When enabled, this source will be displayed as a prominent button on the login page, instead of a small icon. + * @type {boolean} + * @memberof SAMLSourceRequest + */ + promoted?: boolean; + /** + * Flow to use when authenticating existing users. + * @type {string} + * @memberof SAMLSourceRequest + */ + authenticationFlow?: string | null; + /** + * Flow to use when enrolling new users. + * @type {string} + * @memberof SAMLSourceRequest + */ + enrollmentFlow?: string | null; + /** + * + * @type {Array} + * @memberof SAMLSourceRequest + */ + userPropertyMappings?: Array; + /** + * + * @type {Array} + * @memberof SAMLSourceRequest + */ + groupPropertyMappings?: Array; + /** + * + * @type {PolicyEngineMode} + * @memberof SAMLSourceRequest + */ + policyEngineMode?: PolicyEngineMode; + /** + * How the source determines if an existing user should be authenticated or a new user enrolled. + * @type {UserMatchingModeEnum} + * @memberof SAMLSourceRequest + */ + userMatchingMode?: UserMatchingModeEnum; + /** + * + * @type {string} + * @memberof SAMLSourceRequest + */ + userPathTemplate?: string; + /** + * + * @type {string} + * @memberof SAMLSourceRequest + */ + icon?: string; + /** + * How the source determines if an existing group should be used or a new group created. + * @type {GroupMatchingModeEnum} + * @memberof SAMLSourceRequest + */ + groupMatchingMode?: GroupMatchingModeEnum; + /** + * Flow used before authentication. + * @type {string} + * @memberof SAMLSourceRequest + */ + preAuthenticationFlow: string; + /** + * Also known as Entity ID. Defaults the Metadata URL. + * @type {string} + * @memberof SAMLSourceRequest + */ + issuer?: string; + /** + * URL that the initial Login request is sent to. + * @type {string} + * @memberof SAMLSourceRequest + */ + ssoUrl: string; + /** + * Optional URL if your IDP supports Single-Logout. + * @type {string} + * @memberof SAMLSourceRequest + */ + sloUrl?: string | null; + /** + * Allows authentication flows initiated by the IdP. This can be a security risk, as no validation of the request ID is done. + * @type {boolean} + * @memberof SAMLSourceRequest + */ + allowIdpInitiated?: boolean; + /** + * When enabled, the IdP will re-authenticate the user even if a session exists. + * @type {boolean} + * @memberof SAMLSourceRequest + */ + forceAuthn?: boolean; + /** + * NameID Policy sent to the IdP. Can be unset, in which case no Policy is sent. + * @type {SAMLNameIDPolicyEnum} + * @memberof SAMLSourceRequest + */ + nameIdPolicy?: SAMLNameIDPolicyEnum; + /** + * + * @type {BindingTypeEnum} + * @memberof SAMLSourceRequest + */ + bindingType?: BindingTypeEnum; + /** + * When selected, incoming assertion's Signatures will be validated against this certificate. To allow unsigned Requests, leave on default. + * @type {string} + * @memberof SAMLSourceRequest + */ + verificationKp?: string | null; + /** + * Keypair used to sign outgoing Responses going to the Identity Provider. + * @type {string} + * @memberof SAMLSourceRequest + */ + signingKp?: string | null; + /** + * + * @type {DigestAlgorithmEnum} + * @memberof SAMLSourceRequest + */ + digestAlgorithm?: DigestAlgorithmEnum; + /** + * + * @type {SignatureAlgorithmEnum} + * @memberof SAMLSourceRequest + */ + signatureAlgorithm?: SignatureAlgorithmEnum; + /** + * Time offset when temporary users should be deleted. This only applies if your IDP uses the NameID Format 'transient', and the user doesn't log out manually. (Format: hours=1;minutes=2;seconds=3). + * @type {string} + * @memberof SAMLSourceRequest + */ + temporaryUserDeleteAfter?: string; + /** + * When selected, incoming assertions are encrypted by the IdP using the public key of the encryption keypair. The assertion is decrypted by the SP using the the private key. + * @type {string} + * @memberof SAMLSourceRequest + */ + encryptionKp?: string | null; + /** + * + * @type {boolean} + * @memberof SAMLSourceRequest + */ + signedAssertion?: boolean; + /** + * + * @type {boolean} + * @memberof SAMLSourceRequest + */ + signedResponse?: boolean; +} + +/** + * Check if a given object implements the SAMLSourceRequest interface. + */ +export function instanceOfSAMLSourceRequest(value: object): value is SAMLSourceRequest { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("slug" in value) || value["slug"] === undefined) return false; + if (!("preAuthenticationFlow" in value) || value["preAuthenticationFlow"] === undefined) + return false; + if (!("ssoUrl" in value) || value["ssoUrl"] === undefined) return false; + return true; +} + +export function SAMLSourceRequestFromJSON(json: any): SAMLSourceRequest { + return SAMLSourceRequestFromJSONTyped(json, false); +} + +export function SAMLSourceRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): SAMLSourceRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + slug: json["slug"], + enabled: json["enabled"] == null ? undefined : json["enabled"], + promoted: json["promoted"] == null ? undefined : json["promoted"], + authenticationFlow: + json["authentication_flow"] == null ? undefined : json["authentication_flow"], + enrollmentFlow: json["enrollment_flow"] == null ? undefined : json["enrollment_flow"], + userPropertyMappings: + json["user_property_mappings"] == null ? undefined : json["user_property_mappings"], + groupPropertyMappings: + json["group_property_mappings"] == null ? undefined : json["group_property_mappings"], + policyEngineMode: + json["policy_engine_mode"] == null + ? undefined + : PolicyEngineModeFromJSON(json["policy_engine_mode"]), + userMatchingMode: + json["user_matching_mode"] == null + ? undefined + : UserMatchingModeEnumFromJSON(json["user_matching_mode"]), + userPathTemplate: + json["user_path_template"] == null ? undefined : json["user_path_template"], + icon: json["icon"] == null ? undefined : json["icon"], + groupMatchingMode: + json["group_matching_mode"] == null + ? undefined + : GroupMatchingModeEnumFromJSON(json["group_matching_mode"]), + preAuthenticationFlow: json["pre_authentication_flow"], + issuer: json["issuer"] == null ? undefined : json["issuer"], + ssoUrl: json["sso_url"], + sloUrl: json["slo_url"] == null ? undefined : json["slo_url"], + allowIdpInitiated: + json["allow_idp_initiated"] == null ? undefined : json["allow_idp_initiated"], + forceAuthn: json["force_authn"] == null ? undefined : json["force_authn"], + nameIdPolicy: + json["name_id_policy"] == null + ? undefined + : SAMLNameIDPolicyEnumFromJSON(json["name_id_policy"]), + bindingType: + json["binding_type"] == null + ? undefined + : BindingTypeEnumFromJSON(json["binding_type"]), + verificationKp: json["verification_kp"] == null ? undefined : json["verification_kp"], + signingKp: json["signing_kp"] == null ? undefined : json["signing_kp"], + digestAlgorithm: + json["digest_algorithm"] == null + ? undefined + : DigestAlgorithmEnumFromJSON(json["digest_algorithm"]), + signatureAlgorithm: + json["signature_algorithm"] == null + ? undefined + : SignatureAlgorithmEnumFromJSON(json["signature_algorithm"]), + temporaryUserDeleteAfter: + json["temporary_user_delete_after"] == null + ? undefined + : json["temporary_user_delete_after"], + encryptionKp: json["encryption_kp"] == null ? undefined : json["encryption_kp"], + signedAssertion: json["signed_assertion"] == null ? undefined : json["signed_assertion"], + signedResponse: json["signed_response"] == null ? undefined : json["signed_response"], + }; +} + +export function SAMLSourceRequestToJSON(json: any): SAMLSourceRequest { + return SAMLSourceRequestToJSONTyped(json, false); +} + +export function SAMLSourceRequestToJSONTyped( + value?: SAMLSourceRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + slug: value["slug"], + enabled: value["enabled"], + promoted: value["promoted"], + authentication_flow: value["authenticationFlow"], + enrollment_flow: value["enrollmentFlow"], + user_property_mappings: value["userPropertyMappings"], + group_property_mappings: value["groupPropertyMappings"], + policy_engine_mode: PolicyEngineModeToJSON(value["policyEngineMode"]), + user_matching_mode: UserMatchingModeEnumToJSON(value["userMatchingMode"]), + user_path_template: value["userPathTemplate"], + icon: value["icon"], + group_matching_mode: GroupMatchingModeEnumToJSON(value["groupMatchingMode"]), + pre_authentication_flow: value["preAuthenticationFlow"], + issuer: value["issuer"], + sso_url: value["ssoUrl"], + slo_url: value["sloUrl"], + allow_idp_initiated: value["allowIdpInitiated"], + force_authn: value["forceAuthn"], + name_id_policy: SAMLNameIDPolicyEnumToJSON(value["nameIdPolicy"]), + binding_type: BindingTypeEnumToJSON(value["bindingType"]), + verification_kp: value["verificationKp"], + signing_kp: value["signingKp"], + digest_algorithm: DigestAlgorithmEnumToJSON(value["digestAlgorithm"]), + signature_algorithm: SignatureAlgorithmEnumToJSON(value["signatureAlgorithm"]), + temporary_user_delete_after: value["temporaryUserDeleteAfter"], + encryption_kp: value["encryptionKp"], + signed_assertion: value["signedAssertion"], + signed_response: value["signedResponse"], + }; +} diff --git a/packages/client-ts/src/models/SCIMAuthenticationModeEnum.ts b/packages/client-ts/src/models/SCIMAuthenticationModeEnum.ts new file mode 100644 index 0000000000..a6601b9440 --- /dev/null +++ b/packages/client-ts/src/models/SCIMAuthenticationModeEnum.ts @@ -0,0 +1,61 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const SCIMAuthenticationModeEnum = { + Token: "token", + Oauth: "oauth", + OauthInteractive: "oauth_interactive", + UnknownDefaultOpenApi: "11184809", +} as const; +export type SCIMAuthenticationModeEnum = + (typeof SCIMAuthenticationModeEnum)[keyof typeof SCIMAuthenticationModeEnum]; + +export function instanceOfSCIMAuthenticationModeEnum(value: any): boolean { + for (const key in SCIMAuthenticationModeEnum) { + if (Object.prototype.hasOwnProperty.call(SCIMAuthenticationModeEnum, key)) { + if ( + SCIMAuthenticationModeEnum[key as keyof typeof SCIMAuthenticationModeEnum] === value + ) { + return true; + } + } + } + return false; +} + +export function SCIMAuthenticationModeEnumFromJSON(json: any): SCIMAuthenticationModeEnum { + return SCIMAuthenticationModeEnumFromJSONTyped(json, false); +} + +export function SCIMAuthenticationModeEnumFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): SCIMAuthenticationModeEnum { + return json as SCIMAuthenticationModeEnum; +} + +export function SCIMAuthenticationModeEnumToJSON(value?: SCIMAuthenticationModeEnum | null): any { + return value as any; +} + +export function SCIMAuthenticationModeEnumToJSONTyped( + value: any, + ignoreDiscriminator: boolean, +): SCIMAuthenticationModeEnum { + return value as SCIMAuthenticationModeEnum; +} diff --git a/packages/client-ts/src/models/SCIMMapping.ts b/packages/client-ts/src/models/SCIMMapping.ts new file mode 100644 index 0000000000..b9417ddcc9 --- /dev/null +++ b/packages/client-ts/src/models/SCIMMapping.ts @@ -0,0 +1,125 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * SCIMMapping Serializer + * @export + * @interface SCIMMapping + */ +export interface SCIMMapping { + /** + * + * @type {string} + * @memberof SCIMMapping + */ + readonly pk: string; + /** + * Objects that are managed by authentik. These objects are created and updated automatically. This flag only indicates that an object can be overwritten by migrations. You can still modify the objects via the API, but expect changes to be overwritten in a later update. + * @type {string} + * @memberof SCIMMapping + */ + managed?: string | null; + /** + * + * @type {string} + * @memberof SCIMMapping + */ + name: string; + /** + * + * @type {string} + * @memberof SCIMMapping + */ + expression: string; + /** + * Get object's component so that we know how to edit the object + * @type {string} + * @memberof SCIMMapping + */ + readonly component: string; + /** + * Return object's verbose_name + * @type {string} + * @memberof SCIMMapping + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof SCIMMapping + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof SCIMMapping + */ + readonly metaModelName: string; +} + +/** + * Check if a given object implements the SCIMMapping interface. + */ +export function instanceOfSCIMMapping(value: object): value is SCIMMapping { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("expression" in value) || value["expression"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + return true; +} + +export function SCIMMappingFromJSON(json: any): SCIMMapping { + return SCIMMappingFromJSONTyped(json, false); +} + +export function SCIMMappingFromJSONTyped(json: any, ignoreDiscriminator: boolean): SCIMMapping { + if (json == null) { + return json; + } + return { + pk: json["pk"], + managed: json["managed"] == null ? undefined : json["managed"], + name: json["name"], + expression: json["expression"], + component: json["component"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + }; +} + +export function SCIMMappingToJSON(json: any): SCIMMapping { + return SCIMMappingToJSONTyped(json, false); +} + +export function SCIMMappingToJSONTyped( + value?: Omit< + SCIMMapping, + "pk" | "component" | "verbose_name" | "verbose_name_plural" | "meta_model_name" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + managed: value["managed"], + name: value["name"], + expression: value["expression"], + }; +} diff --git a/packages/client-ts/src/models/SCIMMappingRequest.ts b/packages/client-ts/src/models/SCIMMappingRequest.ts new file mode 100644 index 0000000000..0cd0506420 --- /dev/null +++ b/packages/client-ts/src/models/SCIMMappingRequest.ts @@ -0,0 +1,85 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * SCIMMapping Serializer + * @export + * @interface SCIMMappingRequest + */ +export interface SCIMMappingRequest { + /** + * Objects that are managed by authentik. These objects are created and updated automatically. This flag only indicates that an object can be overwritten by migrations. You can still modify the objects via the API, but expect changes to be overwritten in a later update. + * @type {string} + * @memberof SCIMMappingRequest + */ + managed?: string | null; + /** + * + * @type {string} + * @memberof SCIMMappingRequest + */ + name: string; + /** + * + * @type {string} + * @memberof SCIMMappingRequest + */ + expression: string; +} + +/** + * Check if a given object implements the SCIMMappingRequest interface. + */ +export function instanceOfSCIMMappingRequest(value: object): value is SCIMMappingRequest { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("expression" in value) || value["expression"] === undefined) return false; + return true; +} + +export function SCIMMappingRequestFromJSON(json: any): SCIMMappingRequest { + return SCIMMappingRequestFromJSONTyped(json, false); +} + +export function SCIMMappingRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): SCIMMappingRequest { + if (json == null) { + return json; + } + return { + managed: json["managed"] == null ? undefined : json["managed"], + name: json["name"], + expression: json["expression"], + }; +} + +export function SCIMMappingRequestToJSON(json: any): SCIMMappingRequest { + return SCIMMappingRequestToJSONTyped(json, false); +} + +export function SCIMMappingRequestToJSONTyped( + value?: SCIMMappingRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + managed: value["managed"], + name: value["name"], + expression: value["expression"], + }; +} diff --git a/packages/client-ts/src/models/SCIMProvider.ts b/packages/client-ts/src/models/SCIMProvider.ts new file mode 100644 index 0000000000..0400a81ffe --- /dev/null +++ b/packages/client-ts/src/models/SCIMProvider.ts @@ -0,0 +1,329 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { CompatibilityModeEnum } from "./CompatibilityModeEnum"; +import { + CompatibilityModeEnumFromJSON, + CompatibilityModeEnumToJSON, +} from "./CompatibilityModeEnum"; +import type { SCIMAuthenticationModeEnum } from "./SCIMAuthenticationModeEnum"; +import { + SCIMAuthenticationModeEnumFromJSON, + SCIMAuthenticationModeEnumToJSON, +} from "./SCIMAuthenticationModeEnum"; + +/** + * SCIMProvider Serializer + * @export + * @interface SCIMProvider + */ +export interface SCIMProvider { + /** + * + * @type {number} + * @memberof SCIMProvider + */ + readonly pk: number; + /** + * + * @type {string} + * @memberof SCIMProvider + */ + name: string; + /** + * + * @type {Array} + * @memberof SCIMProvider + */ + propertyMappings?: Array; + /** + * Property mappings used for group creation/updating. + * @type {Array} + * @memberof SCIMProvider + */ + propertyMappingsGroup?: Array; + /** + * Get object component so that we know how to edit the object + * @type {string} + * @memberof SCIMProvider + */ + readonly component: string; + /** + * Internal application name, used in URLs. + * @type {string} + * @memberof SCIMProvider + */ + readonly assignedBackchannelApplicationSlug: string | null; + /** + * Application's display Name. + * @type {string} + * @memberof SCIMProvider + */ + readonly assignedBackchannelApplicationName: string | null; + /** + * Return object's verbose_name + * @type {string} + * @memberof SCIMProvider + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof SCIMProvider + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof SCIMProvider + */ + readonly metaModelName: string; + /** + * Base URL to SCIM requests, usually ends in /v2 + * @type {string} + * @memberof SCIMProvider + */ + url: string; + /** + * + * @type {boolean} + * @memberof SCIMProvider + */ + verifyCertificates?: boolean; + /** + * Authentication token + * @type {string} + * @memberof SCIMProvider + */ + token?: string; + /** + * + * @type {SCIMAuthenticationModeEnum} + * @memberof SCIMProvider + */ + authMode?: SCIMAuthenticationModeEnum; + /** + * OAuth Source used for authentication + * @type {string} + * @memberof SCIMProvider + */ + authOauth?: string | null; + /** + * Additional OAuth parameters, such as grant_type + * @type {{ [key: string]: any; }} + * @memberof SCIMProvider + */ + authOauthParams?: { [key: string]: any }; + /** + * + * @type {Date} + * @memberof SCIMProvider + */ + readonly authOauthTokenLastUpdated: Date | null; + /** + * + * @type {Date} + * @memberof SCIMProvider + */ + readonly authOauthTokenExpires: Date | null; + /** + * + * @type {string} + * @memberof SCIMProvider + */ + readonly authOauthUrlCallback: string | null; + /** + * + * @type {string} + * @memberof SCIMProvider + */ + readonly authOauthUrlStart: string | null; + /** + * Alter authentik behavior for vendor-specific SCIM implementations. + * @type {CompatibilityModeEnum} + * @memberof SCIMProvider + */ + compatibilityMode?: CompatibilityModeEnum; + /** + * Cache duration for ServiceProviderConfig responses. Set minutes=0 to disable. + * @type {string} + * @memberof SCIMProvider + */ + serviceProviderConfigCacheTimeout?: string; + /** + * + * @type {boolean} + * @memberof SCIMProvider + */ + excludeUsersServiceAccount?: boolean; + /** + * Controls the number of objects synced in a single task + * @type {number} + * @memberof SCIMProvider + */ + syncPageSize?: number; + /** + * Timeout for synchronization of a single page + * @type {string} + * @memberof SCIMProvider + */ + syncPageTimeout?: string; + /** + * Group filters used to define sync-scope for groups. + * @type {Array} + * @memberof SCIMProvider + */ + groupFilters?: Array; + /** + * When enabled, provider will not modify or create objects in the remote system. + * @type {boolean} + * @memberof SCIMProvider + */ + dryRun?: boolean; +} + +/** + * Check if a given object implements the SCIMProvider interface. + */ +export function instanceOfSCIMProvider(value: object): value is SCIMProvider { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if ( + !("assignedBackchannelApplicationSlug" in value) || + value["assignedBackchannelApplicationSlug"] === undefined + ) + return false; + if ( + !("assignedBackchannelApplicationName" in value) || + value["assignedBackchannelApplicationName"] === undefined + ) + return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + if (!("url" in value) || value["url"] === undefined) return false; + if (!("authOauthTokenLastUpdated" in value) || value["authOauthTokenLastUpdated"] === undefined) + return false; + if (!("authOauthTokenExpires" in value) || value["authOauthTokenExpires"] === undefined) + return false; + if (!("authOauthUrlCallback" in value) || value["authOauthUrlCallback"] === undefined) + return false; + if (!("authOauthUrlStart" in value) || value["authOauthUrlStart"] === undefined) return false; + return true; +} + +export function SCIMProviderFromJSON(json: any): SCIMProvider { + return SCIMProviderFromJSONTyped(json, false); +} + +export function SCIMProviderFromJSONTyped(json: any, ignoreDiscriminator: boolean): SCIMProvider { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + propertyMappings: json["property_mappings"] == null ? undefined : json["property_mappings"], + propertyMappingsGroup: + json["property_mappings_group"] == null ? undefined : json["property_mappings_group"], + component: json["component"], + assignedBackchannelApplicationSlug: json["assigned_backchannel_application_slug"], + assignedBackchannelApplicationName: json["assigned_backchannel_application_name"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + url: json["url"], + verifyCertificates: + json["verify_certificates"] == null ? undefined : json["verify_certificates"], + token: json["token"] == null ? undefined : json["token"], + authMode: + json["auth_mode"] == null + ? undefined + : SCIMAuthenticationModeEnumFromJSON(json["auth_mode"]), + authOauth: json["auth_oauth"] == null ? undefined : json["auth_oauth"], + authOauthParams: json["auth_oauth_params"] == null ? undefined : json["auth_oauth_params"], + authOauthTokenLastUpdated: + json["auth_oauth_token_last_updated"] == null + ? null + : new Date(json["auth_oauth_token_last_updated"]), + authOauthTokenExpires: + json["auth_oauth_token_expires"] == null + ? null + : new Date(json["auth_oauth_token_expires"]), + authOauthUrlCallback: json["auth_oauth_url_callback"], + authOauthUrlStart: json["auth_oauth_url_start"], + compatibilityMode: + json["compatibility_mode"] == null + ? undefined + : CompatibilityModeEnumFromJSON(json["compatibility_mode"]), + serviceProviderConfigCacheTimeout: + json["service_provider_config_cache_timeout"] == null + ? undefined + : json["service_provider_config_cache_timeout"], + excludeUsersServiceAccount: + json["exclude_users_service_account"] == null + ? undefined + : json["exclude_users_service_account"], + syncPageSize: json["sync_page_size"] == null ? undefined : json["sync_page_size"], + syncPageTimeout: json["sync_page_timeout"] == null ? undefined : json["sync_page_timeout"], + groupFilters: json["group_filters"] == null ? undefined : json["group_filters"], + dryRun: json["dry_run"] == null ? undefined : json["dry_run"], + }; +} + +export function SCIMProviderToJSON(json: any): SCIMProvider { + return SCIMProviderToJSONTyped(json, false); +} + +export function SCIMProviderToJSONTyped( + value?: Omit< + SCIMProvider, + | "pk" + | "component" + | "assigned_backchannel_application_slug" + | "assigned_backchannel_application_name" + | "verbose_name" + | "verbose_name_plural" + | "meta_model_name" + | "auth_oauth_token_last_updated" + | "auth_oauth_token_expires" + | "auth_oauth_url_callback" + | "auth_oauth_url_start" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + property_mappings: value["propertyMappings"], + property_mappings_group: value["propertyMappingsGroup"], + url: value["url"], + verify_certificates: value["verifyCertificates"], + token: value["token"], + auth_mode: SCIMAuthenticationModeEnumToJSON(value["authMode"]), + auth_oauth: value["authOauth"], + auth_oauth_params: value["authOauthParams"], + compatibility_mode: CompatibilityModeEnumToJSON(value["compatibilityMode"]), + service_provider_config_cache_timeout: value["serviceProviderConfigCacheTimeout"], + exclude_users_service_account: value["excludeUsersServiceAccount"], + sync_page_size: value["syncPageSize"], + sync_page_timeout: value["syncPageTimeout"], + group_filters: value["groupFilters"], + dry_run: value["dryRun"], + }; +} diff --git a/packages/client-ts/src/models/SCIMProviderGroup.ts b/packages/client-ts/src/models/SCIMProviderGroup.ts new file mode 100644 index 0000000000..6986c6d9b0 --- /dev/null +++ b/packages/client-ts/src/models/SCIMProviderGroup.ts @@ -0,0 +1,113 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { PartialGroup } from "./PartialGroup"; +import { PartialGroupFromJSON } from "./PartialGroup"; + +/** + * SCIMProviderGroup Serializer + * @export + * @interface SCIMProviderGroup + */ +export interface SCIMProviderGroup { + /** + * + * @type {string} + * @memberof SCIMProviderGroup + */ + readonly id: string; + /** + * + * @type {string} + * @memberof SCIMProviderGroup + */ + scimId: string; + /** + * + * @type {string} + * @memberof SCIMProviderGroup + */ + group: string; + /** + * + * @type {PartialGroup} + * @memberof SCIMProviderGroup + */ + readonly groupObj: PartialGroup; + /** + * + * @type {number} + * @memberof SCIMProviderGroup + */ + provider: number; + /** + * + * @type {{ [key: string]: any; }} + * @memberof SCIMProviderGroup + */ + readonly attributes: { [key: string]: any }; +} + +/** + * Check if a given object implements the SCIMProviderGroup interface. + */ +export function instanceOfSCIMProviderGroup(value: object): value is SCIMProviderGroup { + if (!("id" in value) || value["id"] === undefined) return false; + if (!("scimId" in value) || value["scimId"] === undefined) return false; + if (!("group" in value) || value["group"] === undefined) return false; + if (!("groupObj" in value) || value["groupObj"] === undefined) return false; + if (!("provider" in value) || value["provider"] === undefined) return false; + if (!("attributes" in value) || value["attributes"] === undefined) return false; + return true; +} + +export function SCIMProviderGroupFromJSON(json: any): SCIMProviderGroup { + return SCIMProviderGroupFromJSONTyped(json, false); +} + +export function SCIMProviderGroupFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): SCIMProviderGroup { + if (json == null) { + return json; + } + return { + id: json["id"], + scimId: json["scim_id"], + group: json["group"], + groupObj: PartialGroupFromJSON(json["group_obj"]), + provider: json["provider"], + attributes: json["attributes"], + }; +} + +export function SCIMProviderGroupToJSON(json: any): SCIMProviderGroup { + return SCIMProviderGroupToJSONTyped(json, false); +} + +export function SCIMProviderGroupToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + scim_id: value["scimId"], + group: value["group"], + provider: value["provider"], + }; +} diff --git a/packages/client-ts/src/models/SCIMProviderGroupRequest.ts b/packages/client-ts/src/models/SCIMProviderGroupRequest.ts new file mode 100644 index 0000000000..7d7d57dd2b --- /dev/null +++ b/packages/client-ts/src/models/SCIMProviderGroupRequest.ts @@ -0,0 +1,88 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * SCIMProviderGroup Serializer + * @export + * @interface SCIMProviderGroupRequest + */ +export interface SCIMProviderGroupRequest { + /** + * + * @type {string} + * @memberof SCIMProviderGroupRequest + */ + scimId: string; + /** + * + * @type {string} + * @memberof SCIMProviderGroupRequest + */ + group: string; + /** + * + * @type {number} + * @memberof SCIMProviderGroupRequest + */ + provider: number; +} + +/** + * Check if a given object implements the SCIMProviderGroupRequest interface. + */ +export function instanceOfSCIMProviderGroupRequest( + value: object, +): value is SCIMProviderGroupRequest { + if (!("scimId" in value) || value["scimId"] === undefined) return false; + if (!("group" in value) || value["group"] === undefined) return false; + if (!("provider" in value) || value["provider"] === undefined) return false; + return true; +} + +export function SCIMProviderGroupRequestFromJSON(json: any): SCIMProviderGroupRequest { + return SCIMProviderGroupRequestFromJSONTyped(json, false); +} + +export function SCIMProviderGroupRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): SCIMProviderGroupRequest { + if (json == null) { + return json; + } + return { + scimId: json["scim_id"], + group: json["group"], + provider: json["provider"], + }; +} + +export function SCIMProviderGroupRequestToJSON(json: any): SCIMProviderGroupRequest { + return SCIMProviderGroupRequestToJSONTyped(json, false); +} + +export function SCIMProviderGroupRequestToJSONTyped( + value?: SCIMProviderGroupRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + scim_id: value["scimId"], + group: value["group"], + provider: value["provider"], + }; +} diff --git a/packages/client-ts/src/models/SCIMProviderRequest.ts b/packages/client-ts/src/models/SCIMProviderRequest.ts new file mode 100644 index 0000000000..c36aa7eb9d --- /dev/null +++ b/packages/client-ts/src/models/SCIMProviderRequest.ts @@ -0,0 +1,214 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { CompatibilityModeEnum } from "./CompatibilityModeEnum"; +import { + CompatibilityModeEnumFromJSON, + CompatibilityModeEnumToJSON, +} from "./CompatibilityModeEnum"; +import type { SCIMAuthenticationModeEnum } from "./SCIMAuthenticationModeEnum"; +import { + SCIMAuthenticationModeEnumFromJSON, + SCIMAuthenticationModeEnumToJSON, +} from "./SCIMAuthenticationModeEnum"; + +/** + * SCIMProvider Serializer + * @export + * @interface SCIMProviderRequest + */ +export interface SCIMProviderRequest { + /** + * + * @type {string} + * @memberof SCIMProviderRequest + */ + name: string; + /** + * + * @type {Array} + * @memberof SCIMProviderRequest + */ + propertyMappings?: Array; + /** + * Property mappings used for group creation/updating. + * @type {Array} + * @memberof SCIMProviderRequest + */ + propertyMappingsGroup?: Array; + /** + * Base URL to SCIM requests, usually ends in /v2 + * @type {string} + * @memberof SCIMProviderRequest + */ + url: string; + /** + * + * @type {boolean} + * @memberof SCIMProviderRequest + */ + verifyCertificates?: boolean; + /** + * Authentication token + * @type {string} + * @memberof SCIMProviderRequest + */ + token?: string; + /** + * + * @type {SCIMAuthenticationModeEnum} + * @memberof SCIMProviderRequest + */ + authMode?: SCIMAuthenticationModeEnum; + /** + * OAuth Source used for authentication + * @type {string} + * @memberof SCIMProviderRequest + */ + authOauth?: string | null; + /** + * Additional OAuth parameters, such as grant_type + * @type {{ [key: string]: any; }} + * @memberof SCIMProviderRequest + */ + authOauthParams?: { [key: string]: any }; + /** + * Alter authentik behavior for vendor-specific SCIM implementations. + * @type {CompatibilityModeEnum} + * @memberof SCIMProviderRequest + */ + compatibilityMode?: CompatibilityModeEnum; + /** + * Cache duration for ServiceProviderConfig responses. Set minutes=0 to disable. + * @type {string} + * @memberof SCIMProviderRequest + */ + serviceProviderConfigCacheTimeout?: string; + /** + * + * @type {boolean} + * @memberof SCIMProviderRequest + */ + excludeUsersServiceAccount?: boolean; + /** + * Controls the number of objects synced in a single task + * @type {number} + * @memberof SCIMProviderRequest + */ + syncPageSize?: number; + /** + * Timeout for synchronization of a single page + * @type {string} + * @memberof SCIMProviderRequest + */ + syncPageTimeout?: string; + /** + * Group filters used to define sync-scope for groups. + * @type {Array} + * @memberof SCIMProviderRequest + */ + groupFilters?: Array; + /** + * When enabled, provider will not modify or create objects in the remote system. + * @type {boolean} + * @memberof SCIMProviderRequest + */ + dryRun?: boolean; +} + +/** + * Check if a given object implements the SCIMProviderRequest interface. + */ +export function instanceOfSCIMProviderRequest(value: object): value is SCIMProviderRequest { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("url" in value) || value["url"] === undefined) return false; + return true; +} + +export function SCIMProviderRequestFromJSON(json: any): SCIMProviderRequest { + return SCIMProviderRequestFromJSONTyped(json, false); +} + +export function SCIMProviderRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): SCIMProviderRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + propertyMappings: json["property_mappings"] == null ? undefined : json["property_mappings"], + propertyMappingsGroup: + json["property_mappings_group"] == null ? undefined : json["property_mappings_group"], + url: json["url"], + verifyCertificates: + json["verify_certificates"] == null ? undefined : json["verify_certificates"], + token: json["token"] == null ? undefined : json["token"], + authMode: + json["auth_mode"] == null + ? undefined + : SCIMAuthenticationModeEnumFromJSON(json["auth_mode"]), + authOauth: json["auth_oauth"] == null ? undefined : json["auth_oauth"], + authOauthParams: json["auth_oauth_params"] == null ? undefined : json["auth_oauth_params"], + compatibilityMode: + json["compatibility_mode"] == null + ? undefined + : CompatibilityModeEnumFromJSON(json["compatibility_mode"]), + serviceProviderConfigCacheTimeout: + json["service_provider_config_cache_timeout"] == null + ? undefined + : json["service_provider_config_cache_timeout"], + excludeUsersServiceAccount: + json["exclude_users_service_account"] == null + ? undefined + : json["exclude_users_service_account"], + syncPageSize: json["sync_page_size"] == null ? undefined : json["sync_page_size"], + syncPageTimeout: json["sync_page_timeout"] == null ? undefined : json["sync_page_timeout"], + groupFilters: json["group_filters"] == null ? undefined : json["group_filters"], + dryRun: json["dry_run"] == null ? undefined : json["dry_run"], + }; +} + +export function SCIMProviderRequestToJSON(json: any): SCIMProviderRequest { + return SCIMProviderRequestToJSONTyped(json, false); +} + +export function SCIMProviderRequestToJSONTyped( + value?: SCIMProviderRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + property_mappings: value["propertyMappings"], + property_mappings_group: value["propertyMappingsGroup"], + url: value["url"], + verify_certificates: value["verifyCertificates"], + token: value["token"], + auth_mode: SCIMAuthenticationModeEnumToJSON(value["authMode"]), + auth_oauth: value["authOauth"], + auth_oauth_params: value["authOauthParams"], + compatibility_mode: CompatibilityModeEnumToJSON(value["compatibilityMode"]), + service_provider_config_cache_timeout: value["serviceProviderConfigCacheTimeout"], + exclude_users_service_account: value["excludeUsersServiceAccount"], + sync_page_size: value["syncPageSize"], + sync_page_timeout: value["syncPageTimeout"], + group_filters: value["groupFilters"], + dry_run: value["dryRun"], + }; +} diff --git a/packages/client-ts/src/models/SCIMProviderUser.ts b/packages/client-ts/src/models/SCIMProviderUser.ts new file mode 100644 index 0000000000..25f30c4145 --- /dev/null +++ b/packages/client-ts/src/models/SCIMProviderUser.ts @@ -0,0 +1,113 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { PartialUser } from "./PartialUser"; +import { PartialUserFromJSON } from "./PartialUser"; + +/** + * SCIMProviderUser Serializer + * @export + * @interface SCIMProviderUser + */ +export interface SCIMProviderUser { + /** + * + * @type {string} + * @memberof SCIMProviderUser + */ + readonly id: string; + /** + * + * @type {string} + * @memberof SCIMProviderUser + */ + scimId: string; + /** + * + * @type {number} + * @memberof SCIMProviderUser + */ + user: number; + /** + * + * @type {PartialUser} + * @memberof SCIMProviderUser + */ + readonly userObj: PartialUser; + /** + * + * @type {number} + * @memberof SCIMProviderUser + */ + provider: number; + /** + * + * @type {{ [key: string]: any; }} + * @memberof SCIMProviderUser + */ + readonly attributes: { [key: string]: any }; +} + +/** + * Check if a given object implements the SCIMProviderUser interface. + */ +export function instanceOfSCIMProviderUser(value: object): value is SCIMProviderUser { + if (!("id" in value) || value["id"] === undefined) return false; + if (!("scimId" in value) || value["scimId"] === undefined) return false; + if (!("user" in value) || value["user"] === undefined) return false; + if (!("userObj" in value) || value["userObj"] === undefined) return false; + if (!("provider" in value) || value["provider"] === undefined) return false; + if (!("attributes" in value) || value["attributes"] === undefined) return false; + return true; +} + +export function SCIMProviderUserFromJSON(json: any): SCIMProviderUser { + return SCIMProviderUserFromJSONTyped(json, false); +} + +export function SCIMProviderUserFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): SCIMProviderUser { + if (json == null) { + return json; + } + return { + id: json["id"], + scimId: json["scim_id"], + user: json["user"], + userObj: PartialUserFromJSON(json["user_obj"]), + provider: json["provider"], + attributes: json["attributes"], + }; +} + +export function SCIMProviderUserToJSON(json: any): SCIMProviderUser { + return SCIMProviderUserToJSONTyped(json, false); +} + +export function SCIMProviderUserToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + scim_id: value["scimId"], + user: value["user"], + provider: value["provider"], + }; +} diff --git a/packages/client-ts/src/models/SCIMProviderUserRequest.ts b/packages/client-ts/src/models/SCIMProviderUserRequest.ts new file mode 100644 index 0000000000..1fc1b36036 --- /dev/null +++ b/packages/client-ts/src/models/SCIMProviderUserRequest.ts @@ -0,0 +1,86 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * SCIMProviderUser Serializer + * @export + * @interface SCIMProviderUserRequest + */ +export interface SCIMProviderUserRequest { + /** + * + * @type {string} + * @memberof SCIMProviderUserRequest + */ + scimId: string; + /** + * + * @type {number} + * @memberof SCIMProviderUserRequest + */ + user: number; + /** + * + * @type {number} + * @memberof SCIMProviderUserRequest + */ + provider: number; +} + +/** + * Check if a given object implements the SCIMProviderUserRequest interface. + */ +export function instanceOfSCIMProviderUserRequest(value: object): value is SCIMProviderUserRequest { + if (!("scimId" in value) || value["scimId"] === undefined) return false; + if (!("user" in value) || value["user"] === undefined) return false; + if (!("provider" in value) || value["provider"] === undefined) return false; + return true; +} + +export function SCIMProviderUserRequestFromJSON(json: any): SCIMProviderUserRequest { + return SCIMProviderUserRequestFromJSONTyped(json, false); +} + +export function SCIMProviderUserRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): SCIMProviderUserRequest { + if (json == null) { + return json; + } + return { + scimId: json["scim_id"], + user: json["user"], + provider: json["provider"], + }; +} + +export function SCIMProviderUserRequestToJSON(json: any): SCIMProviderUserRequest { + return SCIMProviderUserRequestToJSONTyped(json, false); +} + +export function SCIMProviderUserRequestToJSONTyped( + value?: SCIMProviderUserRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + scim_id: value["scimId"], + user: value["user"], + provider: value["provider"], + }; +} diff --git a/packages/client-ts/src/models/SCIMSource.ts b/packages/client-ts/src/models/SCIMSource.ts new file mode 100644 index 0000000000..610559dcfe --- /dev/null +++ b/packages/client-ts/src/models/SCIMSource.ts @@ -0,0 +1,186 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Token } from "./Token"; +import { TokenFromJSON } from "./Token"; + +/** + * SCIMSource Serializer + * @export + * @interface SCIMSource + */ +export interface SCIMSource { + /** + * + * @type {string} + * @memberof SCIMSource + */ + readonly pk: string; + /** + * Source's display Name. + * @type {string} + * @memberof SCIMSource + */ + name: string; + /** + * Internal source name, used in URLs. + * @type {string} + * @memberof SCIMSource + */ + slug: string; + /** + * + * @type {boolean} + * @memberof SCIMSource + */ + enabled?: boolean; + /** + * + * @type {Array} + * @memberof SCIMSource + */ + userPropertyMappings?: Array; + /** + * + * @type {Array} + * @memberof SCIMSource + */ + groupPropertyMappings?: Array; + /** + * Get object component so that we know how to edit the object + * @type {string} + * @memberof SCIMSource + */ + readonly component: string; + /** + * Return object's verbose_name + * @type {string} + * @memberof SCIMSource + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof SCIMSource + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof SCIMSource + */ + readonly metaModelName: string; + /** + * Objects that are managed by authentik. These objects are created and updated automatically. This flag only indicates that an object can be overwritten by migrations. You can still modify the objects via the API, but expect changes to be overwritten in a later update. + * @type {string} + * @memberof SCIMSource + */ + readonly managed: string | null; + /** + * + * @type {string} + * @memberof SCIMSource + */ + userPathTemplate?: string; + /** + * Get Root URL + * @type {string} + * @memberof SCIMSource + */ + readonly rootUrl: string; + /** + * + * @type {Token} + * @memberof SCIMSource + */ + readonly tokenObj: Token; +} + +/** + * Check if a given object implements the SCIMSource interface. + */ +export function instanceOfSCIMSource(value: object): value is SCIMSource { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("slug" in value) || value["slug"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + if (!("managed" in value) || value["managed"] === undefined) return false; + if (!("rootUrl" in value) || value["rootUrl"] === undefined) return false; + if (!("tokenObj" in value) || value["tokenObj"] === undefined) return false; + return true; +} + +export function SCIMSourceFromJSON(json: any): SCIMSource { + return SCIMSourceFromJSONTyped(json, false); +} + +export function SCIMSourceFromJSONTyped(json: any, ignoreDiscriminator: boolean): SCIMSource { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + slug: json["slug"], + enabled: json["enabled"] == null ? undefined : json["enabled"], + userPropertyMappings: + json["user_property_mappings"] == null ? undefined : json["user_property_mappings"], + groupPropertyMappings: + json["group_property_mappings"] == null ? undefined : json["group_property_mappings"], + component: json["component"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + managed: json["managed"], + userPathTemplate: + json["user_path_template"] == null ? undefined : json["user_path_template"], + rootUrl: json["root_url"], + tokenObj: TokenFromJSON(json["token_obj"]), + }; +} + +export function SCIMSourceToJSON(json: any): SCIMSource { + return SCIMSourceToJSONTyped(json, false); +} + +export function SCIMSourceToJSONTyped( + value?: Omit< + SCIMSource, + | "pk" + | "component" + | "verbose_name" + | "verbose_name_plural" + | "meta_model_name" + | "managed" + | "root_url" + | "token_obj" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + slug: value["slug"], + enabled: value["enabled"], + user_property_mappings: value["userPropertyMappings"], + group_property_mappings: value["groupPropertyMappings"], + user_path_template: value["userPathTemplate"], + }; +} diff --git a/packages/client-ts/src/models/SCIMSourceGroup.ts b/packages/client-ts/src/models/SCIMSourceGroup.ts new file mode 100644 index 0000000000..bb812146ff --- /dev/null +++ b/packages/client-ts/src/models/SCIMSourceGroup.ts @@ -0,0 +1,113 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { PartialGroup } from "./PartialGroup"; +import { PartialGroupFromJSON } from "./PartialGroup"; + +/** + * SCIMSourceGroup Serializer + * @export + * @interface SCIMSourceGroup + */ +export interface SCIMSourceGroup { + /** + * + * @type {string} + * @memberof SCIMSourceGroup + */ + id?: string; + /** + * + * @type {string} + * @memberof SCIMSourceGroup + */ + externalId: string; + /** + * + * @type {string} + * @memberof SCIMSourceGroup + */ + group: string; + /** + * + * @type {PartialGroup} + * @memberof SCIMSourceGroup + */ + readonly groupObj: PartialGroup; + /** + * + * @type {string} + * @memberof SCIMSourceGroup + */ + source: string; + /** + * + * @type {{ [key: string]: any; }} + * @memberof SCIMSourceGroup + */ + attributes?: { [key: string]: any }; +} + +/** + * Check if a given object implements the SCIMSourceGroup interface. + */ +export function instanceOfSCIMSourceGroup(value: object): value is SCIMSourceGroup { + if (!("externalId" in value) || value["externalId"] === undefined) return false; + if (!("group" in value) || value["group"] === undefined) return false; + if (!("groupObj" in value) || value["groupObj"] === undefined) return false; + if (!("source" in value) || value["source"] === undefined) return false; + return true; +} + +export function SCIMSourceGroupFromJSON(json: any): SCIMSourceGroup { + return SCIMSourceGroupFromJSONTyped(json, false); +} + +export function SCIMSourceGroupFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): SCIMSourceGroup { + if (json == null) { + return json; + } + return { + id: json["id"] == null ? undefined : json["id"], + externalId: json["external_id"], + group: json["group"], + groupObj: PartialGroupFromJSON(json["group_obj"]), + source: json["source"], + attributes: json["attributes"] == null ? undefined : json["attributes"], + }; +} + +export function SCIMSourceGroupToJSON(json: any): SCIMSourceGroup { + return SCIMSourceGroupToJSONTyped(json, false); +} + +export function SCIMSourceGroupToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + id: value["id"], + external_id: value["externalId"], + group: value["group"], + source: value["source"], + attributes: value["attributes"], + }; +} diff --git a/packages/client-ts/src/models/SCIMSourceGroupRequest.ts b/packages/client-ts/src/models/SCIMSourceGroupRequest.ts new file mode 100644 index 0000000000..7e8d2425c4 --- /dev/null +++ b/packages/client-ts/src/models/SCIMSourceGroupRequest.ts @@ -0,0 +1,102 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * SCIMSourceGroup Serializer + * @export + * @interface SCIMSourceGroupRequest + */ +export interface SCIMSourceGroupRequest { + /** + * + * @type {string} + * @memberof SCIMSourceGroupRequest + */ + id?: string; + /** + * + * @type {string} + * @memberof SCIMSourceGroupRequest + */ + externalId: string; + /** + * + * @type {string} + * @memberof SCIMSourceGroupRequest + */ + group: string; + /** + * + * @type {string} + * @memberof SCIMSourceGroupRequest + */ + source: string; + /** + * + * @type {{ [key: string]: any; }} + * @memberof SCIMSourceGroupRequest + */ + attributes?: { [key: string]: any }; +} + +/** + * Check if a given object implements the SCIMSourceGroupRequest interface. + */ +export function instanceOfSCIMSourceGroupRequest(value: object): value is SCIMSourceGroupRequest { + if (!("externalId" in value) || value["externalId"] === undefined) return false; + if (!("group" in value) || value["group"] === undefined) return false; + if (!("source" in value) || value["source"] === undefined) return false; + return true; +} + +export function SCIMSourceGroupRequestFromJSON(json: any): SCIMSourceGroupRequest { + return SCIMSourceGroupRequestFromJSONTyped(json, false); +} + +export function SCIMSourceGroupRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): SCIMSourceGroupRequest { + if (json == null) { + return json; + } + return { + id: json["id"] == null ? undefined : json["id"], + externalId: json["external_id"], + group: json["group"], + source: json["source"], + attributes: json["attributes"] == null ? undefined : json["attributes"], + }; +} + +export function SCIMSourceGroupRequestToJSON(json: any): SCIMSourceGroupRequest { + return SCIMSourceGroupRequestToJSONTyped(json, false); +} + +export function SCIMSourceGroupRequestToJSONTyped( + value?: SCIMSourceGroupRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + id: value["id"], + external_id: value["externalId"], + group: value["group"], + source: value["source"], + attributes: value["attributes"], + }; +} diff --git a/packages/client-ts/src/models/SCIMSourcePropertyMapping.ts b/packages/client-ts/src/models/SCIMSourcePropertyMapping.ts new file mode 100644 index 0000000000..87ee1d7955 --- /dev/null +++ b/packages/client-ts/src/models/SCIMSourcePropertyMapping.ts @@ -0,0 +1,130 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * SCIMSourcePropertyMapping Serializer + * @export + * @interface SCIMSourcePropertyMapping + */ +export interface SCIMSourcePropertyMapping { + /** + * + * @type {string} + * @memberof SCIMSourcePropertyMapping + */ + readonly pk: string; + /** + * Objects that are managed by authentik. These objects are created and updated automatically. This flag only indicates that an object can be overwritten by migrations. You can still modify the objects via the API, but expect changes to be overwritten in a later update. + * @type {string} + * @memberof SCIMSourcePropertyMapping + */ + managed?: string | null; + /** + * + * @type {string} + * @memberof SCIMSourcePropertyMapping + */ + name: string; + /** + * + * @type {string} + * @memberof SCIMSourcePropertyMapping + */ + expression: string; + /** + * Get object's component so that we know how to edit the object + * @type {string} + * @memberof SCIMSourcePropertyMapping + */ + readonly component: string; + /** + * Return object's verbose_name + * @type {string} + * @memberof SCIMSourcePropertyMapping + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof SCIMSourcePropertyMapping + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof SCIMSourcePropertyMapping + */ + readonly metaModelName: string; +} + +/** + * Check if a given object implements the SCIMSourcePropertyMapping interface. + */ +export function instanceOfSCIMSourcePropertyMapping( + value: object, +): value is SCIMSourcePropertyMapping { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("expression" in value) || value["expression"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + return true; +} + +export function SCIMSourcePropertyMappingFromJSON(json: any): SCIMSourcePropertyMapping { + return SCIMSourcePropertyMappingFromJSONTyped(json, false); +} + +export function SCIMSourcePropertyMappingFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): SCIMSourcePropertyMapping { + if (json == null) { + return json; + } + return { + pk: json["pk"], + managed: json["managed"] == null ? undefined : json["managed"], + name: json["name"], + expression: json["expression"], + component: json["component"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + }; +} + +export function SCIMSourcePropertyMappingToJSON(json: any): SCIMSourcePropertyMapping { + return SCIMSourcePropertyMappingToJSONTyped(json, false); +} + +export function SCIMSourcePropertyMappingToJSONTyped( + value?: Omit< + SCIMSourcePropertyMapping, + "pk" | "component" | "verbose_name" | "verbose_name_plural" | "meta_model_name" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + managed: value["managed"], + name: value["name"], + expression: value["expression"], + }; +} diff --git a/packages/client-ts/src/models/SCIMSourcePropertyMappingRequest.ts b/packages/client-ts/src/models/SCIMSourcePropertyMappingRequest.ts new file mode 100644 index 0000000000..1c904b2220 --- /dev/null +++ b/packages/client-ts/src/models/SCIMSourcePropertyMappingRequest.ts @@ -0,0 +1,91 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * SCIMSourcePropertyMapping Serializer + * @export + * @interface SCIMSourcePropertyMappingRequest + */ +export interface SCIMSourcePropertyMappingRequest { + /** + * Objects that are managed by authentik. These objects are created and updated automatically. This flag only indicates that an object can be overwritten by migrations. You can still modify the objects via the API, but expect changes to be overwritten in a later update. + * @type {string} + * @memberof SCIMSourcePropertyMappingRequest + */ + managed?: string | null; + /** + * + * @type {string} + * @memberof SCIMSourcePropertyMappingRequest + */ + name: string; + /** + * + * @type {string} + * @memberof SCIMSourcePropertyMappingRequest + */ + expression: string; +} + +/** + * Check if a given object implements the SCIMSourcePropertyMappingRequest interface. + */ +export function instanceOfSCIMSourcePropertyMappingRequest( + value: object, +): value is SCIMSourcePropertyMappingRequest { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("expression" in value) || value["expression"] === undefined) return false; + return true; +} + +export function SCIMSourcePropertyMappingRequestFromJSON( + json: any, +): SCIMSourcePropertyMappingRequest { + return SCIMSourcePropertyMappingRequestFromJSONTyped(json, false); +} + +export function SCIMSourcePropertyMappingRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): SCIMSourcePropertyMappingRequest { + if (json == null) { + return json; + } + return { + managed: json["managed"] == null ? undefined : json["managed"], + name: json["name"], + expression: json["expression"], + }; +} + +export function SCIMSourcePropertyMappingRequestToJSON( + json: any, +): SCIMSourcePropertyMappingRequest { + return SCIMSourcePropertyMappingRequestToJSONTyped(json, false); +} + +export function SCIMSourcePropertyMappingRequestToJSONTyped( + value?: SCIMSourcePropertyMappingRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + managed: value["managed"], + name: value["name"], + expression: value["expression"], + }; +} diff --git a/packages/client-ts/src/models/SCIMSourceRequest.ts b/packages/client-ts/src/models/SCIMSourceRequest.ts new file mode 100644 index 0000000000..66e0aa7c8c --- /dev/null +++ b/packages/client-ts/src/models/SCIMSourceRequest.ts @@ -0,0 +1,112 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * SCIMSource Serializer + * @export + * @interface SCIMSourceRequest + */ +export interface SCIMSourceRequest { + /** + * Source's display Name. + * @type {string} + * @memberof SCIMSourceRequest + */ + name: string; + /** + * Internal source name, used in URLs. + * @type {string} + * @memberof SCIMSourceRequest + */ + slug: string; + /** + * + * @type {boolean} + * @memberof SCIMSourceRequest + */ + enabled?: boolean; + /** + * + * @type {Array} + * @memberof SCIMSourceRequest + */ + userPropertyMappings?: Array; + /** + * + * @type {Array} + * @memberof SCIMSourceRequest + */ + groupPropertyMappings?: Array; + /** + * + * @type {string} + * @memberof SCIMSourceRequest + */ + userPathTemplate?: string; +} + +/** + * Check if a given object implements the SCIMSourceRequest interface. + */ +export function instanceOfSCIMSourceRequest(value: object): value is SCIMSourceRequest { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("slug" in value) || value["slug"] === undefined) return false; + return true; +} + +export function SCIMSourceRequestFromJSON(json: any): SCIMSourceRequest { + return SCIMSourceRequestFromJSONTyped(json, false); +} + +export function SCIMSourceRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): SCIMSourceRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + slug: json["slug"], + enabled: json["enabled"] == null ? undefined : json["enabled"], + userPropertyMappings: + json["user_property_mappings"] == null ? undefined : json["user_property_mappings"], + groupPropertyMappings: + json["group_property_mappings"] == null ? undefined : json["group_property_mappings"], + userPathTemplate: + json["user_path_template"] == null ? undefined : json["user_path_template"], + }; +} + +export function SCIMSourceRequestToJSON(json: any): SCIMSourceRequest { + return SCIMSourceRequestToJSONTyped(json, false); +} + +export function SCIMSourceRequestToJSONTyped( + value?: SCIMSourceRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + slug: value["slug"], + enabled: value["enabled"], + user_property_mappings: value["userPropertyMappings"], + group_property_mappings: value["groupPropertyMappings"], + user_path_template: value["userPathTemplate"], + }; +} diff --git a/packages/client-ts/src/models/SCIMSourceUser.ts b/packages/client-ts/src/models/SCIMSourceUser.ts new file mode 100644 index 0000000000..bfb4622975 --- /dev/null +++ b/packages/client-ts/src/models/SCIMSourceUser.ts @@ -0,0 +1,113 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { PartialUser } from "./PartialUser"; +import { PartialUserFromJSON } from "./PartialUser"; + +/** + * SCIMSourceUser Serializer + * @export + * @interface SCIMSourceUser + */ +export interface SCIMSourceUser { + /** + * + * @type {string} + * @memberof SCIMSourceUser + */ + id?: string; + /** + * + * @type {string} + * @memberof SCIMSourceUser + */ + externalId: string; + /** + * + * @type {number} + * @memberof SCIMSourceUser + */ + user: number; + /** + * + * @type {PartialUser} + * @memberof SCIMSourceUser + */ + readonly userObj: PartialUser; + /** + * + * @type {string} + * @memberof SCIMSourceUser + */ + source: string; + /** + * + * @type {{ [key: string]: any; }} + * @memberof SCIMSourceUser + */ + attributes?: { [key: string]: any }; +} + +/** + * Check if a given object implements the SCIMSourceUser interface. + */ +export function instanceOfSCIMSourceUser(value: object): value is SCIMSourceUser { + if (!("externalId" in value) || value["externalId"] === undefined) return false; + if (!("user" in value) || value["user"] === undefined) return false; + if (!("userObj" in value) || value["userObj"] === undefined) return false; + if (!("source" in value) || value["source"] === undefined) return false; + return true; +} + +export function SCIMSourceUserFromJSON(json: any): SCIMSourceUser { + return SCIMSourceUserFromJSONTyped(json, false); +} + +export function SCIMSourceUserFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): SCIMSourceUser { + if (json == null) { + return json; + } + return { + id: json["id"] == null ? undefined : json["id"], + externalId: json["external_id"], + user: json["user"], + userObj: PartialUserFromJSON(json["user_obj"]), + source: json["source"], + attributes: json["attributes"] == null ? undefined : json["attributes"], + }; +} + +export function SCIMSourceUserToJSON(json: any): SCIMSourceUser { + return SCIMSourceUserToJSONTyped(json, false); +} + +export function SCIMSourceUserToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + id: value["id"], + external_id: value["externalId"], + user: value["user"], + source: value["source"], + attributes: value["attributes"], + }; +} diff --git a/packages/client-ts/src/models/SCIMSourceUserRequest.ts b/packages/client-ts/src/models/SCIMSourceUserRequest.ts new file mode 100644 index 0000000000..b075671b6b --- /dev/null +++ b/packages/client-ts/src/models/SCIMSourceUserRequest.ts @@ -0,0 +1,102 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * SCIMSourceUser Serializer + * @export + * @interface SCIMSourceUserRequest + */ +export interface SCIMSourceUserRequest { + /** + * + * @type {string} + * @memberof SCIMSourceUserRequest + */ + id?: string; + /** + * + * @type {string} + * @memberof SCIMSourceUserRequest + */ + externalId: string; + /** + * + * @type {number} + * @memberof SCIMSourceUserRequest + */ + user: number; + /** + * + * @type {string} + * @memberof SCIMSourceUserRequest + */ + source: string; + /** + * + * @type {{ [key: string]: any; }} + * @memberof SCIMSourceUserRequest + */ + attributes?: { [key: string]: any }; +} + +/** + * Check if a given object implements the SCIMSourceUserRequest interface. + */ +export function instanceOfSCIMSourceUserRequest(value: object): value is SCIMSourceUserRequest { + if (!("externalId" in value) || value["externalId"] === undefined) return false; + if (!("user" in value) || value["user"] === undefined) return false; + if (!("source" in value) || value["source"] === undefined) return false; + return true; +} + +export function SCIMSourceUserRequestFromJSON(json: any): SCIMSourceUserRequest { + return SCIMSourceUserRequestFromJSONTyped(json, false); +} + +export function SCIMSourceUserRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): SCIMSourceUserRequest { + if (json == null) { + return json; + } + return { + id: json["id"] == null ? undefined : json["id"], + externalId: json["external_id"], + user: json["user"], + source: json["source"], + attributes: json["attributes"] == null ? undefined : json["attributes"], + }; +} + +export function SCIMSourceUserRequestToJSON(json: any): SCIMSourceUserRequest { + return SCIMSourceUserRequestToJSONTyped(json, false); +} + +export function SCIMSourceUserRequestToJSONTyped( + value?: SCIMSourceUserRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + id: value["id"], + external_id: value["externalId"], + user: value["user"], + source: value["source"], + attributes: value["attributes"], + }; +} diff --git a/packages/client-ts/src/models/SMSDevice.ts b/packages/client-ts/src/models/SMSDevice.ts new file mode 100644 index 0000000000..7d879d00dd --- /dev/null +++ b/packages/client-ts/src/models/SMSDevice.ts @@ -0,0 +1,92 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { PartialUser } from "./PartialUser"; +import { PartialUserFromJSON } from "./PartialUser"; + +/** + * Serializer for sms authenticator devices + * @export + * @interface SMSDevice + */ +export interface SMSDevice { + /** + * The human-readable name of this device. + * @type {string} + * @memberof SMSDevice + */ + name: string; + /** + * + * @type {number} + * @memberof SMSDevice + */ + readonly pk: number; + /** + * + * @type {string} + * @memberof SMSDevice + */ + readonly phoneNumber: string; + /** + * + * @type {PartialUser} + * @memberof SMSDevice + */ + readonly user: PartialUser; +} + +/** + * Check if a given object implements the SMSDevice interface. + */ +export function instanceOfSMSDevice(value: object): value is SMSDevice { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("phoneNumber" in value) || value["phoneNumber"] === undefined) return false; + if (!("user" in value) || value["user"] === undefined) return false; + return true; +} + +export function SMSDeviceFromJSON(json: any): SMSDevice { + return SMSDeviceFromJSONTyped(json, false); +} + +export function SMSDeviceFromJSONTyped(json: any, ignoreDiscriminator: boolean): SMSDevice { + if (json == null) { + return json; + } + return { + name: json["name"], + pk: json["pk"], + phoneNumber: json["phone_number"], + user: PartialUserFromJSON(json["user"]), + }; +} + +export function SMSDeviceToJSON(json: any): SMSDevice { + return SMSDeviceToJSONTyped(json, false); +} + +export function SMSDeviceToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + }; +} diff --git a/packages/client-ts/src/models/SMSDeviceRequest.ts b/packages/client-ts/src/models/SMSDeviceRequest.ts new file mode 100644 index 0000000000..6e8e1d437e --- /dev/null +++ b/packages/client-ts/src/models/SMSDeviceRequest.ts @@ -0,0 +1,68 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Serializer for sms authenticator devices + * @export + * @interface SMSDeviceRequest + */ +export interface SMSDeviceRequest { + /** + * The human-readable name of this device. + * @type {string} + * @memberof SMSDeviceRequest + */ + name: string; +} + +/** + * Check if a given object implements the SMSDeviceRequest interface. + */ +export function instanceOfSMSDeviceRequest(value: object): value is SMSDeviceRequest { + if (!("name" in value) || value["name"] === undefined) return false; + return true; +} + +export function SMSDeviceRequestFromJSON(json: any): SMSDeviceRequest { + return SMSDeviceRequestFromJSONTyped(json, false); +} + +export function SMSDeviceRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): SMSDeviceRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + }; +} + +export function SMSDeviceRequestToJSON(json: any): SMSDeviceRequest { + return SMSDeviceRequestToJSONTyped(json, false); +} + +export function SMSDeviceRequestToJSONTyped( + value?: SMSDeviceRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + }; +} diff --git a/packages/client-ts/src/models/SSFProvider.ts b/packages/client-ts/src/models/SSFProvider.ts new file mode 100644 index 0000000000..a1a1632b94 --- /dev/null +++ b/packages/client-ts/src/models/SSFProvider.ts @@ -0,0 +1,180 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Provider } from "./Provider"; +import { ProviderFromJSON } from "./Provider"; +import type { Token } from "./Token"; +import { TokenFromJSON } from "./Token"; + +/** + * SSFProvider Serializer + * @export + * @interface SSFProvider + */ +export interface SSFProvider { + /** + * + * @type {number} + * @memberof SSFProvider + */ + readonly pk: number; + /** + * + * @type {string} + * @memberof SSFProvider + */ + name: string; + /** + * Get object component so that we know how to edit the object + * @type {string} + * @memberof SSFProvider + */ + readonly component: string; + /** + * Return object's verbose_name + * @type {string} + * @memberof SSFProvider + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof SSFProvider + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof SSFProvider + */ + readonly metaModelName: string; + /** + * Key used to sign the SSF Events. + * @type {string} + * @memberof SSFProvider + */ + signingKey: string; + /** + * + * @type {Token} + * @memberof SSFProvider + */ + readonly tokenObj: Token; + /** + * + * @type {Array} + * @memberof SSFProvider + */ + oidcAuthProviders?: Array; + /** + * + * @type {Array} + * @memberof SSFProvider + */ + readonly oidcAuthProvidersObj: Array; + /** + * + * @type {string} + * @memberof SSFProvider + */ + readonly ssfUrl: string | null; + /** + * + * @type {string} + * @memberof SSFProvider + */ + eventRetention?: string; + /** + * + * @type {boolean} + * @memberof SSFProvider + */ + pushVerifyCertificates?: boolean; +} + +/** + * Check if a given object implements the SSFProvider interface. + */ +export function instanceOfSSFProvider(value: object): value is SSFProvider { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + if (!("signingKey" in value) || value["signingKey"] === undefined) return false; + if (!("tokenObj" in value) || value["tokenObj"] === undefined) return false; + if (!("oidcAuthProvidersObj" in value) || value["oidcAuthProvidersObj"] === undefined) + return false; + if (!("ssfUrl" in value) || value["ssfUrl"] === undefined) return false; + return true; +} + +export function SSFProviderFromJSON(json: any): SSFProvider { + return SSFProviderFromJSONTyped(json, false); +} + +export function SSFProviderFromJSONTyped(json: any, ignoreDiscriminator: boolean): SSFProvider { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + component: json["component"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + signingKey: json["signing_key"], + tokenObj: TokenFromJSON(json["token_obj"]), + oidcAuthProviders: + json["oidc_auth_providers"] == null ? undefined : json["oidc_auth_providers"], + oidcAuthProvidersObj: (json["oidc_auth_providers_obj"] as Array).map(ProviderFromJSON), + ssfUrl: json["ssf_url"], + eventRetention: json["event_retention"] == null ? undefined : json["event_retention"], + pushVerifyCertificates: + json["push_verify_certificates"] == null ? undefined : json["push_verify_certificates"], + }; +} + +export function SSFProviderToJSON(json: any): SSFProvider { + return SSFProviderToJSONTyped(json, false); +} + +export function SSFProviderToJSONTyped( + value?: Omit< + SSFProvider, + | "pk" + | "component" + | "verbose_name" + | "verbose_name_plural" + | "meta_model_name" + | "token_obj" + | "oidc_auth_providers_obj" + | "ssf_url" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + signing_key: value["signingKey"], + oidc_auth_providers: value["oidcAuthProviders"], + event_retention: value["eventRetention"], + push_verify_certificates: value["pushVerifyCertificates"], + }; +} diff --git a/packages/client-ts/src/models/SSFProviderRequest.ts b/packages/client-ts/src/models/SSFProviderRequest.ts new file mode 100644 index 0000000000..0ba72f61a2 --- /dev/null +++ b/packages/client-ts/src/models/SSFProviderRequest.ts @@ -0,0 +1,103 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * SSFProvider Serializer + * @export + * @interface SSFProviderRequest + */ +export interface SSFProviderRequest { + /** + * + * @type {string} + * @memberof SSFProviderRequest + */ + name: string; + /** + * Key used to sign the SSF Events. + * @type {string} + * @memberof SSFProviderRequest + */ + signingKey: string; + /** + * + * @type {Array} + * @memberof SSFProviderRequest + */ + oidcAuthProviders?: Array; + /** + * + * @type {string} + * @memberof SSFProviderRequest + */ + eventRetention?: string; + /** + * + * @type {boolean} + * @memberof SSFProviderRequest + */ + pushVerifyCertificates?: boolean; +} + +/** + * Check if a given object implements the SSFProviderRequest interface. + */ +export function instanceOfSSFProviderRequest(value: object): value is SSFProviderRequest { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("signingKey" in value) || value["signingKey"] === undefined) return false; + return true; +} + +export function SSFProviderRequestFromJSON(json: any): SSFProviderRequest { + return SSFProviderRequestFromJSONTyped(json, false); +} + +export function SSFProviderRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): SSFProviderRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + signingKey: json["signing_key"], + oidcAuthProviders: + json["oidc_auth_providers"] == null ? undefined : json["oidc_auth_providers"], + eventRetention: json["event_retention"] == null ? undefined : json["event_retention"], + pushVerifyCertificates: + json["push_verify_certificates"] == null ? undefined : json["push_verify_certificates"], + }; +} + +export function SSFProviderRequestToJSON(json: any): SSFProviderRequest { + return SSFProviderRequestToJSONTyped(json, false); +} + +export function SSFProviderRequestToJSONTyped( + value?: SSFProviderRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + signing_key: value["signingKey"], + oidc_auth_providers: value["oidcAuthProviders"], + event_retention: value["eventRetention"], + push_verify_certificates: value["pushVerifyCertificates"], + }; +} diff --git a/packages/client-ts/src/models/SSFStream.ts b/packages/client-ts/src/models/SSFStream.ts new file mode 100644 index 0000000000..68dbc12cf4 --- /dev/null +++ b/packages/client-ts/src/models/SSFStream.ts @@ -0,0 +1,155 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { DeliveryMethodEnum } from "./DeliveryMethodEnum"; +import { DeliveryMethodEnumFromJSON, DeliveryMethodEnumToJSON } from "./DeliveryMethodEnum"; +import type { EventsRequestedEnum } from "./EventsRequestedEnum"; +import { EventsRequestedEnumFromJSON, EventsRequestedEnumToJSON } from "./EventsRequestedEnum"; +import type { SSFProvider } from "./SSFProvider"; +import { SSFProviderFromJSON } from "./SSFProvider"; +import type { SSFStreamStatusEnum } from "./SSFStreamStatusEnum"; +import { SSFStreamStatusEnumFromJSON, SSFStreamStatusEnumToJSON } from "./SSFStreamStatusEnum"; + +/** + * SSFStream Serializer + * @export + * @interface SSFStream + */ +export interface SSFStream { + /** + * + * @type {string} + * @memberof SSFStream + */ + readonly pk: string; + /** + * + * @type {SSFStreamStatusEnum} + * @memberof SSFStream + */ + status?: SSFStreamStatusEnum; + /** + * + * @type {number} + * @memberof SSFStream + */ + provider: number; + /** + * + * @type {SSFProvider} + * @memberof SSFStream + */ + readonly providerObj: SSFProvider; + /** + * + * @type {DeliveryMethodEnum} + * @memberof SSFStream + */ + deliveryMethod: DeliveryMethodEnum; + /** + * + * @type {string} + * @memberof SSFStream + */ + endpointUrl?: string | null; + /** + * + * @type {Array} + * @memberof SSFStream + */ + eventsRequested?: Array; + /** + * + * @type {string} + * @memberof SSFStream + */ + format: string; + /** + * + * @type {Array} + * @memberof SSFStream + */ + aud?: Array; + /** + * + * @type {string} + * @memberof SSFStream + */ + iss: string; +} + +/** + * Check if a given object implements the SSFStream interface. + */ +export function instanceOfSSFStream(value: object): value is SSFStream { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("provider" in value) || value["provider"] === undefined) return false; + if (!("providerObj" in value) || value["providerObj"] === undefined) return false; + if (!("deliveryMethod" in value) || value["deliveryMethod"] === undefined) return false; + if (!("format" in value) || value["format"] === undefined) return false; + if (!("iss" in value) || value["iss"] === undefined) return false; + return true; +} + +export function SSFStreamFromJSON(json: any): SSFStream { + return SSFStreamFromJSONTyped(json, false); +} + +export function SSFStreamFromJSONTyped(json: any, ignoreDiscriminator: boolean): SSFStream { + if (json == null) { + return json; + } + return { + pk: json["pk"], + status: json["status"] == null ? undefined : SSFStreamStatusEnumFromJSON(json["status"]), + provider: json["provider"], + providerObj: SSFProviderFromJSON(json["provider_obj"]), + deliveryMethod: DeliveryMethodEnumFromJSON(json["delivery_method"]), + endpointUrl: json["endpoint_url"] == null ? undefined : json["endpoint_url"], + eventsRequested: + json["events_requested"] == null + ? undefined + : (json["events_requested"] as Array).map(EventsRequestedEnumFromJSON), + format: json["format"], + aud: json["aud"] == null ? undefined : json["aud"], + iss: json["iss"], + }; +} + +export function SSFStreamToJSON(json: any): SSFStream { + return SSFStreamToJSONTyped(json, false); +} + +export function SSFStreamToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + status: SSFStreamStatusEnumToJSON(value["status"]), + provider: value["provider"], + delivery_method: DeliveryMethodEnumToJSON(value["deliveryMethod"]), + endpoint_url: value["endpointUrl"], + events_requested: + value["eventsRequested"] == null + ? undefined + : (value["eventsRequested"] as Array).map(EventsRequestedEnumToJSON), + format: value["format"], + aud: value["aud"], + iss: value["iss"], + }; +} diff --git a/packages/client-ts/src/models/SSFStreamStatusEnum.ts b/packages/client-ts/src/models/SSFStreamStatusEnum.ts new file mode 100644 index 0000000000..2a9d004ddd --- /dev/null +++ b/packages/client-ts/src/models/SSFStreamStatusEnum.ts @@ -0,0 +1,59 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const SSFStreamStatusEnum = { + Enabled: "enabled", + Paused: "paused", + Disabled: "disabled", + DisabledDeleted: "disabled_deleted", + UnknownDefaultOpenApi: "11184809", +} as const; +export type SSFStreamStatusEnum = (typeof SSFStreamStatusEnum)[keyof typeof SSFStreamStatusEnum]; + +export function instanceOfSSFStreamStatusEnum(value: any): boolean { + for (const key in SSFStreamStatusEnum) { + if (Object.prototype.hasOwnProperty.call(SSFStreamStatusEnum, key)) { + if (SSFStreamStatusEnum[key as keyof typeof SSFStreamStatusEnum] === value) { + return true; + } + } + } + return false; +} + +export function SSFStreamStatusEnumFromJSON(json: any): SSFStreamStatusEnum { + return SSFStreamStatusEnumFromJSONTyped(json, false); +} + +export function SSFStreamStatusEnumFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): SSFStreamStatusEnum { + return json as SSFStreamStatusEnum; +} + +export function SSFStreamStatusEnumToJSON(value?: SSFStreamStatusEnum | null): any { + return value as any; +} + +export function SSFStreamStatusEnumToJSONTyped( + value: any, + ignoreDiscriminator: boolean, +): SSFStreamStatusEnum { + return value as SSFStreamStatusEnum; +} diff --git a/packages/client-ts/src/models/Schedule.ts b/packages/client-ts/src/models/Schedule.ts new file mode 100644 index 0000000000..a109555434 --- /dev/null +++ b/packages/client-ts/src/models/Schedule.ts @@ -0,0 +1,167 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { LastTaskStatusEnum } from "./LastTaskStatusEnum"; +import { LastTaskStatusEnumFromJSON } from "./LastTaskStatusEnum"; + +/** + * + * @export + * @interface Schedule + */ +export interface Schedule { + /** + * + * @type {string} + * @memberof Schedule + */ + readonly id: string; + /** + * Unique schedule identifier + * @type {string} + * @memberof Schedule + */ + readonly identifier: string | null; + /** + * + * @type {string} + * @memberof Schedule + */ + readonly uid: string; + /** + * Dramatiq actor to call + * @type {string} + * @memberof Schedule + */ + readonly actorName: string; + /** + * + * @type {string} + * @memberof Schedule + */ + readonly relObjAppLabel: string; + /** + * + * @type {string} + * @memberof Schedule + */ + readonly relObjModel: string; + /** + * + * @type {string} + * @memberof Schedule + */ + relObjId?: string | null; + /** + * When to schedule tasks + * @type {string} + * @memberof Schedule + */ + crontab: string; + /** + * Pause this schedule + * @type {boolean} + * @memberof Schedule + */ + paused?: boolean; + /** + * + * @type {Date} + * @memberof Schedule + */ + readonly nextRun: Date; + /** + * + * @type {string} + * @memberof Schedule + */ + readonly description: string | null; + /** + * + * @type {LastTaskStatusEnum} + * @memberof Schedule + */ + readonly lastTaskStatus: LastTaskStatusEnum | null; +} + +/** + * Check if a given object implements the Schedule interface. + */ +export function instanceOfSchedule(value: object): value is Schedule { + if (!("id" in value) || value["id"] === undefined) return false; + if (!("identifier" in value) || value["identifier"] === undefined) return false; + if (!("uid" in value) || value["uid"] === undefined) return false; + if (!("actorName" in value) || value["actorName"] === undefined) return false; + if (!("relObjAppLabel" in value) || value["relObjAppLabel"] === undefined) return false; + if (!("relObjModel" in value) || value["relObjModel"] === undefined) return false; + if (!("crontab" in value) || value["crontab"] === undefined) return false; + if (!("nextRun" in value) || value["nextRun"] === undefined) return false; + if (!("description" in value) || value["description"] === undefined) return false; + if (!("lastTaskStatus" in value) || value["lastTaskStatus"] === undefined) return false; + return true; +} + +export function ScheduleFromJSON(json: any): Schedule { + return ScheduleFromJSONTyped(json, false); +} + +export function ScheduleFromJSONTyped(json: any, ignoreDiscriminator: boolean): Schedule { + if (json == null) { + return json; + } + return { + id: json["id"], + identifier: json["identifier"], + uid: json["uid"], + actorName: json["actor_name"], + relObjAppLabel: json["rel_obj_app_label"], + relObjModel: json["rel_obj_model"], + relObjId: json["rel_obj_id"] == null ? undefined : json["rel_obj_id"], + crontab: json["crontab"], + paused: json["paused"] == null ? undefined : json["paused"], + nextRun: new Date(json["next_run"]), + description: json["description"], + lastTaskStatus: LastTaskStatusEnumFromJSON(json["last_task_status"]), + }; +} + +export function ScheduleToJSON(json: any): Schedule { + return ScheduleToJSONTyped(json, false); +} + +export function ScheduleToJSONTyped( + value?: Omit< + Schedule, + | "id" + | "identifier" + | "uid" + | "actor_name" + | "rel_obj_app_label" + | "rel_obj_model" + | "next_run" + | "description" + | "last_task_status" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + rel_obj_id: value["relObjId"], + crontab: value["crontab"], + paused: value["paused"], + }; +} diff --git a/packages/client-ts/src/models/ScheduleRequest.ts b/packages/client-ts/src/models/ScheduleRequest.ts new file mode 100644 index 0000000000..33c71d4949 --- /dev/null +++ b/packages/client-ts/src/models/ScheduleRequest.ts @@ -0,0 +1,84 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + * @interface ScheduleRequest + */ +export interface ScheduleRequest { + /** + * + * @type {string} + * @memberof ScheduleRequest + */ + relObjId?: string | null; + /** + * When to schedule tasks + * @type {string} + * @memberof ScheduleRequest + */ + crontab: string; + /** + * Pause this schedule + * @type {boolean} + * @memberof ScheduleRequest + */ + paused?: boolean; +} + +/** + * Check if a given object implements the ScheduleRequest interface. + */ +export function instanceOfScheduleRequest(value: object): value is ScheduleRequest { + if (!("crontab" in value) || value["crontab"] === undefined) return false; + return true; +} + +export function ScheduleRequestFromJSON(json: any): ScheduleRequest { + return ScheduleRequestFromJSONTyped(json, false); +} + +export function ScheduleRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): ScheduleRequest { + if (json == null) { + return json; + } + return { + relObjId: json["rel_obj_id"] == null ? undefined : json["rel_obj_id"], + crontab: json["crontab"], + paused: json["paused"] == null ? undefined : json["paused"], + }; +} + +export function ScheduleRequestToJSON(json: any): ScheduleRequest { + return ScheduleRequestToJSONTyped(json, false); +} + +export function ScheduleRequestToJSONTyped( + value?: ScheduleRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + rel_obj_id: value["relObjId"], + crontab: value["crontab"], + paused: value["paused"], + }; +} diff --git a/packages/client-ts/src/models/ScopeMapping.ts b/packages/client-ts/src/models/ScopeMapping.ts new file mode 100644 index 0000000000..1c7e09cd50 --- /dev/null +++ b/packages/client-ts/src/models/ScopeMapping.ts @@ -0,0 +1,142 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * ScopeMapping Serializer + * @export + * @interface ScopeMapping + */ +export interface ScopeMapping { + /** + * + * @type {string} + * @memberof ScopeMapping + */ + readonly pk: string; + /** + * Objects that are managed by authentik. These objects are created and updated automatically. This flag only indicates that an object can be overwritten by migrations. You can still modify the objects via the API, but expect changes to be overwritten in a later update. + * @type {string} + * @memberof ScopeMapping + */ + managed?: string | null; + /** + * + * @type {string} + * @memberof ScopeMapping + */ + name: string; + /** + * + * @type {string} + * @memberof ScopeMapping + */ + expression: string; + /** + * Get object's component so that we know how to edit the object + * @type {string} + * @memberof ScopeMapping + */ + readonly component: string; + /** + * Return object's verbose_name + * @type {string} + * @memberof ScopeMapping + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof ScopeMapping + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof ScopeMapping + */ + readonly metaModelName: string; + /** + * Scope name requested by the client + * @type {string} + * @memberof ScopeMapping + */ + scopeName: string; + /** + * Description shown to the user when consenting. If left empty, the user won't be informed. + * @type {string} + * @memberof ScopeMapping + */ + description?: string; +} + +/** + * Check if a given object implements the ScopeMapping interface. + */ +export function instanceOfScopeMapping(value: object): value is ScopeMapping { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("expression" in value) || value["expression"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + if (!("scopeName" in value) || value["scopeName"] === undefined) return false; + return true; +} + +export function ScopeMappingFromJSON(json: any): ScopeMapping { + return ScopeMappingFromJSONTyped(json, false); +} + +export function ScopeMappingFromJSONTyped(json: any, ignoreDiscriminator: boolean): ScopeMapping { + if (json == null) { + return json; + } + return { + pk: json["pk"], + managed: json["managed"] == null ? undefined : json["managed"], + name: json["name"], + expression: json["expression"], + component: json["component"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + scopeName: json["scope_name"], + description: json["description"] == null ? undefined : json["description"], + }; +} + +export function ScopeMappingToJSON(json: any): ScopeMapping { + return ScopeMappingToJSONTyped(json, false); +} + +export function ScopeMappingToJSONTyped( + value?: Omit< + ScopeMapping, + "pk" | "component" | "verbose_name" | "verbose_name_plural" | "meta_model_name" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + managed: value["managed"], + name: value["name"], + expression: value["expression"], + scope_name: value["scopeName"], + description: value["description"], + }; +} diff --git a/packages/client-ts/src/models/ScopeMappingRequest.ts b/packages/client-ts/src/models/ScopeMappingRequest.ts new file mode 100644 index 0000000000..46d0a37345 --- /dev/null +++ b/packages/client-ts/src/models/ScopeMappingRequest.ts @@ -0,0 +1,102 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * ScopeMapping Serializer + * @export + * @interface ScopeMappingRequest + */ +export interface ScopeMappingRequest { + /** + * Objects that are managed by authentik. These objects are created and updated automatically. This flag only indicates that an object can be overwritten by migrations. You can still modify the objects via the API, but expect changes to be overwritten in a later update. + * @type {string} + * @memberof ScopeMappingRequest + */ + managed?: string | null; + /** + * + * @type {string} + * @memberof ScopeMappingRequest + */ + name: string; + /** + * + * @type {string} + * @memberof ScopeMappingRequest + */ + expression: string; + /** + * Scope name requested by the client + * @type {string} + * @memberof ScopeMappingRequest + */ + scopeName: string; + /** + * Description shown to the user when consenting. If left empty, the user won't be informed. + * @type {string} + * @memberof ScopeMappingRequest + */ + description?: string; +} + +/** + * Check if a given object implements the ScopeMappingRequest interface. + */ +export function instanceOfScopeMappingRequest(value: object): value is ScopeMappingRequest { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("expression" in value) || value["expression"] === undefined) return false; + if (!("scopeName" in value) || value["scopeName"] === undefined) return false; + return true; +} + +export function ScopeMappingRequestFromJSON(json: any): ScopeMappingRequest { + return ScopeMappingRequestFromJSONTyped(json, false); +} + +export function ScopeMappingRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): ScopeMappingRequest { + if (json == null) { + return json; + } + return { + managed: json["managed"] == null ? undefined : json["managed"], + name: json["name"], + expression: json["expression"], + scopeName: json["scope_name"], + description: json["description"] == null ? undefined : json["description"], + }; +} + +export function ScopeMappingRequestToJSON(json: any): ScopeMappingRequest { + return ScopeMappingRequestToJSONTyped(json, false); +} + +export function ScopeMappingRequestToJSONTyped( + value?: ScopeMappingRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + managed: value["managed"], + name: value["name"], + expression: value["expression"], + scope_name: value["scopeName"], + description: value["description"], + }; +} diff --git a/packages/client-ts/src/models/SelectableStage.ts b/packages/client-ts/src/models/SelectableStage.ts new file mode 100644 index 0000000000..3a1630301d --- /dev/null +++ b/packages/client-ts/src/models/SelectableStage.ts @@ -0,0 +1,95 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Serializer for stages which can be selected by users + * @export + * @interface SelectableStage + */ +export interface SelectableStage { + /** + * + * @type {string} + * @memberof SelectableStage + */ + pk: string; + /** + * + * @type {string} + * @memberof SelectableStage + */ + name: string; + /** + * + * @type {string} + * @memberof SelectableStage + */ + verboseName: string; + /** + * + * @type {string} + * @memberof SelectableStage + */ + metaModelName: string; +} + +/** + * Check if a given object implements the SelectableStage interface. + */ +export function instanceOfSelectableStage(value: object): value is SelectableStage { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + return true; +} + +export function SelectableStageFromJSON(json: any): SelectableStage { + return SelectableStageFromJSONTyped(json, false); +} + +export function SelectableStageFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): SelectableStage { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + verboseName: json["verbose_name"], + metaModelName: json["meta_model_name"], + }; +} + +export function SelectableStageToJSON(json: any): SelectableStage { + return SelectableStageToJSONTyped(json, false); +} + +export function SelectableStageToJSONTyped( + value?: SelectableStage | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pk: value["pk"], + name: value["name"], + verbose_name: value["verboseName"], + meta_model_name: value["metaModelName"], + }; +} diff --git a/packages/client-ts/src/models/ServiceConnection.ts b/packages/client-ts/src/models/ServiceConnection.ts new file mode 100644 index 0000000000..5b0805bc2a --- /dev/null +++ b/packages/client-ts/src/models/ServiceConnection.ts @@ -0,0 +1,119 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * ServiceConnection Serializer + * @export + * @interface ServiceConnection + */ +export interface ServiceConnection { + /** + * + * @type {string} + * @memberof ServiceConnection + */ + readonly pk: string; + /** + * + * @type {string} + * @memberof ServiceConnection + */ + name: string; + /** + * If enabled, use the local connection. Required Docker socket/Kubernetes Integration + * @type {boolean} + * @memberof ServiceConnection + */ + local?: boolean; + /** + * Return component used to edit this object + * @type {string} + * @memberof ServiceConnection + */ + readonly component: string; + /** + * Return object's verbose_name + * @type {string} + * @memberof ServiceConnection + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof ServiceConnection + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof ServiceConnection + */ + readonly metaModelName: string; +} + +/** + * Check if a given object implements the ServiceConnection interface. + */ +export function instanceOfServiceConnection(value: object): value is ServiceConnection { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + return true; +} + +export function ServiceConnectionFromJSON(json: any): ServiceConnection { + return ServiceConnectionFromJSONTyped(json, false); +} + +export function ServiceConnectionFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): ServiceConnection { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + local: json["local"] == null ? undefined : json["local"], + component: json["component"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + }; +} + +export function ServiceConnectionToJSON(json: any): ServiceConnection { + return ServiceConnectionToJSONTyped(json, false); +} + +export function ServiceConnectionToJSONTyped( + value?: Omit< + ServiceConnection, + "pk" | "component" | "verbose_name" | "verbose_name_plural" | "meta_model_name" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + local: value["local"], + }; +} diff --git a/packages/client-ts/src/models/ServiceConnectionState.ts b/packages/client-ts/src/models/ServiceConnectionState.ts new file mode 100644 index 0000000000..518510d1fc --- /dev/null +++ b/packages/client-ts/src/models/ServiceConnectionState.ts @@ -0,0 +1,74 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Serializer for Service connection state + * @export + * @interface ServiceConnectionState + */ +export interface ServiceConnectionState { + /** + * + * @type {boolean} + * @memberof ServiceConnectionState + */ + readonly healthy: boolean; + /** + * + * @type {string} + * @memberof ServiceConnectionState + */ + readonly version: string; +} + +/** + * Check if a given object implements the ServiceConnectionState interface. + */ +export function instanceOfServiceConnectionState(value: object): value is ServiceConnectionState { + if (!("healthy" in value) || value["healthy"] === undefined) return false; + if (!("version" in value) || value["version"] === undefined) return false; + return true; +} + +export function ServiceConnectionStateFromJSON(json: any): ServiceConnectionState { + return ServiceConnectionStateFromJSONTyped(json, false); +} + +export function ServiceConnectionStateFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): ServiceConnectionState { + if (json == null) { + return json; + } + return { + healthy: json["healthy"], + version: json["version"], + }; +} + +export function ServiceConnectionStateToJSON(json: any): ServiceConnectionState { + return ServiceConnectionStateToJSONTyped(json, false); +} + +export function ServiceConnectionStateToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return {}; +} diff --git a/packages/client-ts/src/models/SessionEndChallenge.ts b/packages/client-ts/src/models/SessionEndChallenge.ts new file mode 100644 index 0000000000..ad7c9595e7 --- /dev/null +++ b/packages/client-ts/src/models/SessionEndChallenge.ts @@ -0,0 +1,141 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { ContextualFlowInfo } from "./ContextualFlowInfo"; +import { ContextualFlowInfoFromJSON, ContextualFlowInfoToJSON } from "./ContextualFlowInfo"; +import type { ErrorDetail } from "./ErrorDetail"; + +/** + * Challenge for ending a session + * @export + * @interface SessionEndChallenge + */ +export interface SessionEndChallenge { + /** + * + * @type {ContextualFlowInfo} + * @memberof SessionEndChallenge + */ + flowInfo?: ContextualFlowInfo; + /** + * + * @type {string} + * @memberof SessionEndChallenge + */ + component?: string; + /** + * + * @type {{ [key: string]: Array; }} + * @memberof SessionEndChallenge + */ + responseErrors?: { [key: string]: Array }; + /** + * + * @type {string} + * @memberof SessionEndChallenge + */ + pendingUser: string; + /** + * + * @type {string} + * @memberof SessionEndChallenge + */ + pendingUserAvatar: string; + /** + * + * @type {string} + * @memberof SessionEndChallenge + */ + applicationName?: string; + /** + * + * @type {string} + * @memberof SessionEndChallenge + */ + applicationLaunchUrl?: string; + /** + * + * @type {string} + * @memberof SessionEndChallenge + */ + invalidationFlowUrl?: string; + /** + * + * @type {string} + * @memberof SessionEndChallenge + */ + brandName: string; +} + +/** + * Check if a given object implements the SessionEndChallenge interface. + */ +export function instanceOfSessionEndChallenge(value: object): value is SessionEndChallenge { + if (!("pendingUser" in value) || value["pendingUser"] === undefined) return false; + if (!("pendingUserAvatar" in value) || value["pendingUserAvatar"] === undefined) return false; + if (!("brandName" in value) || value["brandName"] === undefined) return false; + return true; +} + +export function SessionEndChallengeFromJSON(json: any): SessionEndChallenge { + return SessionEndChallengeFromJSONTyped(json, false); +} + +export function SessionEndChallengeFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): SessionEndChallenge { + if (json == null) { + return json; + } + return { + flowInfo: + json["flow_info"] == null ? undefined : ContextualFlowInfoFromJSON(json["flow_info"]), + component: json["component"] == null ? undefined : json["component"], + responseErrors: json["response_errors"] == null ? undefined : json["response_errors"], + pendingUser: json["pending_user"], + pendingUserAvatar: json["pending_user_avatar"], + applicationName: json["application_name"] == null ? undefined : json["application_name"], + applicationLaunchUrl: + json["application_launch_url"] == null ? undefined : json["application_launch_url"], + invalidationFlowUrl: + json["invalidation_flow_url"] == null ? undefined : json["invalidation_flow_url"], + brandName: json["brand_name"], + }; +} + +export function SessionEndChallengeToJSON(json: any): SessionEndChallenge { + return SessionEndChallengeToJSONTyped(json, false); +} + +export function SessionEndChallengeToJSONTyped( + value?: SessionEndChallenge | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + flow_info: ContextualFlowInfoToJSON(value["flowInfo"]), + component: value["component"], + response_errors: value["responseErrors"], + pending_user: value["pendingUser"], + pending_user_avatar: value["pendingUserAvatar"], + application_name: value["applicationName"], + application_launch_url: value["applicationLaunchUrl"], + invalidation_flow_url: value["invalidationFlowUrl"], + brand_name: value["brandName"], + }; +} diff --git a/packages/client-ts/src/models/SessionUser.ts b/packages/client-ts/src/models/SessionUser.ts new file mode 100644 index 0000000000..4f1093dbde --- /dev/null +++ b/packages/client-ts/src/models/SessionUser.ts @@ -0,0 +1,77 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { UserSelf } from "./UserSelf"; +import { UserSelfFromJSON, UserSelfToJSON } from "./UserSelf"; + +/** + * Response for the /user/me endpoint, returns the currently active user (as `user` property) + * and, if this user is being impersonated, the original user in the `original` property. + * @export + * @interface SessionUser + */ +export interface SessionUser { + /** + * + * @type {UserSelf} + * @memberof SessionUser + */ + user: UserSelf; + /** + * + * @type {UserSelf} + * @memberof SessionUser + */ + original?: UserSelf; +} + +/** + * Check if a given object implements the SessionUser interface. + */ +export function instanceOfSessionUser(value: object): value is SessionUser { + if (!("user" in value) || value["user"] === undefined) return false; + return true; +} + +export function SessionUserFromJSON(json: any): SessionUser { + return SessionUserFromJSONTyped(json, false); +} + +export function SessionUserFromJSONTyped(json: any, ignoreDiscriminator: boolean): SessionUser { + if (json == null) { + return json; + } + return { + user: UserSelfFromJSON(json["user"]), + original: json["original"] == null ? undefined : UserSelfFromJSON(json["original"]), + }; +} + +export function SessionUserToJSON(json: any): SessionUser { + return SessionUserToJSONTyped(json, false); +} + +export function SessionUserToJSONTyped( + value?: SessionUser | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + user: UserSelfToJSON(value["user"]), + original: UserSelfToJSON(value["original"]), + }; +} diff --git a/packages/client-ts/src/models/Settings.ts b/packages/client-ts/src/models/Settings.ts new file mode 100644 index 0000000000..d0c37419e0 --- /dev/null +++ b/packages/client-ts/src/models/Settings.ts @@ -0,0 +1,209 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { PatchedSettingsRequestFlags } from "./PatchedSettingsRequestFlags"; +import { + PatchedSettingsRequestFlagsFromJSON, + PatchedSettingsRequestFlagsToJSON, +} from "./PatchedSettingsRequestFlags"; + +/** + * Settings Serializer + * @export + * @interface Settings + */ +export interface Settings { + /** + * Configure how authentik should show avatars for users. + * @type {string} + * @memberof Settings + */ + avatars?: string; + /** + * Enable the ability for users to change their name. + * @type {boolean} + * @memberof Settings + */ + defaultUserChangeName?: boolean; + /** + * Enable the ability for users to change their email address. + * @type {boolean} + * @memberof Settings + */ + defaultUserChangeEmail?: boolean; + /** + * Enable the ability for users to change their username. + * @type {boolean} + * @memberof Settings + */ + defaultUserChangeUsername?: boolean; + /** + * Events will be deleted after this duration.(Format: weeks=3;days=2;hours=3,seconds=2). + * @type {string} + * @memberof Settings + */ + eventRetention?: string; + /** + * Reputation cannot decrease lower than this value. Zero or negative. + * @type {number} + * @memberof Settings + */ + reputationLowerLimit?: number; + /** + * Reputation cannot increase higher than this value. Zero or positive. + * @type {number} + * @memberof Settings + */ + reputationUpperLimit?: number; + /** + * + * @type {any} + * @memberof Settings + */ + footerLinks?: any | null; + /** + * When enabled, all the events caused by a user will be deleted upon the user's deletion. + * @type {boolean} + * @memberof Settings + */ + gdprCompliance?: boolean; + /** + * Globally enable/disable impersonation. + * @type {boolean} + * @memberof Settings + */ + impersonation?: boolean; + /** + * Require administrators to provide a reason for impersonating a user. + * @type {boolean} + * @memberof Settings + */ + impersonationRequireReason?: boolean; + /** + * Default token duration + * @type {string} + * @memberof Settings + */ + defaultTokenDuration?: string; + /** + * Default token length + * @type {number} + * @memberof Settings + */ + defaultTokenLength?: number; + /** + * Default page size for API responses, if no size was requested. + * @type {number} + * @memberof Settings + */ + paginationDefaultPageSize?: number; + /** + * Maximum page size + * @type {number} + * @memberof Settings + */ + paginationMaxPageSize?: number; + /** + * + * @type {PatchedSettingsRequestFlags} + * @memberof Settings + */ + flags: PatchedSettingsRequestFlags; +} + +/** + * Check if a given object implements the Settings interface. + */ +export function instanceOfSettings(value: object): value is Settings { + if (!("flags" in value) || value["flags"] === undefined) return false; + return true; +} + +export function SettingsFromJSON(json: any): Settings { + return SettingsFromJSONTyped(json, false); +} + +export function SettingsFromJSONTyped(json: any, ignoreDiscriminator: boolean): Settings { + if (json == null) { + return json; + } + return { + avatars: json["avatars"] == null ? undefined : json["avatars"], + defaultUserChangeName: + json["default_user_change_name"] == null ? undefined : json["default_user_change_name"], + defaultUserChangeEmail: + json["default_user_change_email"] == null + ? undefined + : json["default_user_change_email"], + defaultUserChangeUsername: + json["default_user_change_username"] == null + ? undefined + : json["default_user_change_username"], + eventRetention: json["event_retention"] == null ? undefined : json["event_retention"], + reputationLowerLimit: + json["reputation_lower_limit"] == null ? undefined : json["reputation_lower_limit"], + reputationUpperLimit: + json["reputation_upper_limit"] == null ? undefined : json["reputation_upper_limit"], + footerLinks: json["footer_links"] == null ? undefined : json["footer_links"], + gdprCompliance: json["gdpr_compliance"] == null ? undefined : json["gdpr_compliance"], + impersonation: json["impersonation"] == null ? undefined : json["impersonation"], + impersonationRequireReason: + json["impersonation_require_reason"] == null + ? undefined + : json["impersonation_require_reason"], + defaultTokenDuration: + json["default_token_duration"] == null ? undefined : json["default_token_duration"], + defaultTokenLength: + json["default_token_length"] == null ? undefined : json["default_token_length"], + paginationDefaultPageSize: + json["pagination_default_page_size"] == null + ? undefined + : json["pagination_default_page_size"], + paginationMaxPageSize: + json["pagination_max_page_size"] == null ? undefined : json["pagination_max_page_size"], + flags: PatchedSettingsRequestFlagsFromJSON(json["flags"]), + }; +} + +export function SettingsToJSON(json: any): Settings { + return SettingsToJSONTyped(json, false); +} + +export function SettingsToJSONTyped( + value?: Settings | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + avatars: value["avatars"], + default_user_change_name: value["defaultUserChangeName"], + default_user_change_email: value["defaultUserChangeEmail"], + default_user_change_username: value["defaultUserChangeUsername"], + event_retention: value["eventRetention"], + reputation_lower_limit: value["reputationLowerLimit"], + reputation_upper_limit: value["reputationUpperLimit"], + footer_links: value["footerLinks"], + gdpr_compliance: value["gdprCompliance"], + impersonation: value["impersonation"], + impersonation_require_reason: value["impersonationRequireReason"], + default_token_duration: value["defaultTokenDuration"], + default_token_length: value["defaultTokenLength"], + pagination_default_page_size: value["paginationDefaultPageSize"], + pagination_max_page_size: value["paginationMaxPageSize"], + flags: PatchedSettingsRequestFlagsToJSON(value["flags"]), + }; +} diff --git a/packages/client-ts/src/models/SettingsRequest.ts b/packages/client-ts/src/models/SettingsRequest.ts new file mode 100644 index 0000000000..9f4bae360a --- /dev/null +++ b/packages/client-ts/src/models/SettingsRequest.ts @@ -0,0 +1,212 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { PatchedSettingsRequestFlags } from "./PatchedSettingsRequestFlags"; +import { + PatchedSettingsRequestFlagsFromJSON, + PatchedSettingsRequestFlagsToJSON, +} from "./PatchedSettingsRequestFlags"; + +/** + * Settings Serializer + * @export + * @interface SettingsRequest + */ +export interface SettingsRequest { + /** + * Configure how authentik should show avatars for users. + * @type {string} + * @memberof SettingsRequest + */ + avatars?: string; + /** + * Enable the ability for users to change their name. + * @type {boolean} + * @memberof SettingsRequest + */ + defaultUserChangeName?: boolean; + /** + * Enable the ability for users to change their email address. + * @type {boolean} + * @memberof SettingsRequest + */ + defaultUserChangeEmail?: boolean; + /** + * Enable the ability for users to change their username. + * @type {boolean} + * @memberof SettingsRequest + */ + defaultUserChangeUsername?: boolean; + /** + * Events will be deleted after this duration.(Format: weeks=3;days=2;hours=3,seconds=2). + * @type {string} + * @memberof SettingsRequest + */ + eventRetention?: string; + /** + * Reputation cannot decrease lower than this value. Zero or negative. + * @type {number} + * @memberof SettingsRequest + */ + reputationLowerLimit?: number; + /** + * Reputation cannot increase higher than this value. Zero or positive. + * @type {number} + * @memberof SettingsRequest + */ + reputationUpperLimit?: number; + /** + * + * @type {any} + * @memberof SettingsRequest + */ + footerLinks?: any | null; + /** + * When enabled, all the events caused by a user will be deleted upon the user's deletion. + * @type {boolean} + * @memberof SettingsRequest + */ + gdprCompliance?: boolean; + /** + * Globally enable/disable impersonation. + * @type {boolean} + * @memberof SettingsRequest + */ + impersonation?: boolean; + /** + * Require administrators to provide a reason for impersonating a user. + * @type {boolean} + * @memberof SettingsRequest + */ + impersonationRequireReason?: boolean; + /** + * Default token duration + * @type {string} + * @memberof SettingsRequest + */ + defaultTokenDuration?: string; + /** + * Default token length + * @type {number} + * @memberof SettingsRequest + */ + defaultTokenLength?: number; + /** + * Default page size for API responses, if no size was requested. + * @type {number} + * @memberof SettingsRequest + */ + paginationDefaultPageSize?: number; + /** + * Maximum page size + * @type {number} + * @memberof SettingsRequest + */ + paginationMaxPageSize?: number; + /** + * + * @type {PatchedSettingsRequestFlags} + * @memberof SettingsRequest + */ + flags: PatchedSettingsRequestFlags; +} + +/** + * Check if a given object implements the SettingsRequest interface. + */ +export function instanceOfSettingsRequest(value: object): value is SettingsRequest { + if (!("flags" in value) || value["flags"] === undefined) return false; + return true; +} + +export function SettingsRequestFromJSON(json: any): SettingsRequest { + return SettingsRequestFromJSONTyped(json, false); +} + +export function SettingsRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): SettingsRequest { + if (json == null) { + return json; + } + return { + avatars: json["avatars"] == null ? undefined : json["avatars"], + defaultUserChangeName: + json["default_user_change_name"] == null ? undefined : json["default_user_change_name"], + defaultUserChangeEmail: + json["default_user_change_email"] == null + ? undefined + : json["default_user_change_email"], + defaultUserChangeUsername: + json["default_user_change_username"] == null + ? undefined + : json["default_user_change_username"], + eventRetention: json["event_retention"] == null ? undefined : json["event_retention"], + reputationLowerLimit: + json["reputation_lower_limit"] == null ? undefined : json["reputation_lower_limit"], + reputationUpperLimit: + json["reputation_upper_limit"] == null ? undefined : json["reputation_upper_limit"], + footerLinks: json["footer_links"] == null ? undefined : json["footer_links"], + gdprCompliance: json["gdpr_compliance"] == null ? undefined : json["gdpr_compliance"], + impersonation: json["impersonation"] == null ? undefined : json["impersonation"], + impersonationRequireReason: + json["impersonation_require_reason"] == null + ? undefined + : json["impersonation_require_reason"], + defaultTokenDuration: + json["default_token_duration"] == null ? undefined : json["default_token_duration"], + defaultTokenLength: + json["default_token_length"] == null ? undefined : json["default_token_length"], + paginationDefaultPageSize: + json["pagination_default_page_size"] == null + ? undefined + : json["pagination_default_page_size"], + paginationMaxPageSize: + json["pagination_max_page_size"] == null ? undefined : json["pagination_max_page_size"], + flags: PatchedSettingsRequestFlagsFromJSON(json["flags"]), + }; +} + +export function SettingsRequestToJSON(json: any): SettingsRequest { + return SettingsRequestToJSONTyped(json, false); +} + +export function SettingsRequestToJSONTyped( + value?: SettingsRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + avatars: value["avatars"], + default_user_change_name: value["defaultUserChangeName"], + default_user_change_email: value["defaultUserChangeEmail"], + default_user_change_username: value["defaultUserChangeUsername"], + event_retention: value["eventRetention"], + reputation_lower_limit: value["reputationLowerLimit"], + reputation_upper_limit: value["reputationUpperLimit"], + footer_links: value["footerLinks"], + gdpr_compliance: value["gdprCompliance"], + impersonation: value["impersonation"], + impersonation_require_reason: value["impersonationRequireReason"], + default_token_duration: value["defaultTokenDuration"], + default_token_length: value["defaultTokenLength"], + pagination_default_page_size: value["paginationDefaultPageSize"], + pagination_max_page_size: value["paginationMaxPageSize"], + flags: PatchedSettingsRequestFlagsToJSON(value["flags"]), + }; +} diff --git a/packages/client-ts/src/models/SeverityEnum.ts b/packages/client-ts/src/models/SeverityEnum.ts new file mode 100644 index 0000000000..093db1c9df --- /dev/null +++ b/packages/client-ts/src/models/SeverityEnum.ts @@ -0,0 +1,52 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const SeverityEnum = { + Notice: "notice", + Warning: "warning", + Alert: "alert", + UnknownDefaultOpenApi: "11184809", +} as const; +export type SeverityEnum = (typeof SeverityEnum)[keyof typeof SeverityEnum]; + +export function instanceOfSeverityEnum(value: any): boolean { + for (const key in SeverityEnum) { + if (Object.prototype.hasOwnProperty.call(SeverityEnum, key)) { + if (SeverityEnum[key as keyof typeof SeverityEnum] === value) { + return true; + } + } + } + return false; +} + +export function SeverityEnumFromJSON(json: any): SeverityEnum { + return SeverityEnumFromJSONTyped(json, false); +} + +export function SeverityEnumFromJSONTyped(json: any, ignoreDiscriminator: boolean): SeverityEnum { + return json as SeverityEnum; +} + +export function SeverityEnumToJSON(value?: SeverityEnum | null): any { + return value as any; +} + +export function SeverityEnumToJSONTyped(value: any, ignoreDiscriminator: boolean): SeverityEnum { + return value as SeverityEnum; +} diff --git a/packages/client-ts/src/models/ShellChallenge.ts b/packages/client-ts/src/models/ShellChallenge.ts new file mode 100644 index 0000000000..ee7d4610e8 --- /dev/null +++ b/packages/client-ts/src/models/ShellChallenge.ts @@ -0,0 +1,97 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { ContextualFlowInfo } from "./ContextualFlowInfo"; +import { ContextualFlowInfoFromJSON, ContextualFlowInfoToJSON } from "./ContextualFlowInfo"; +import type { ErrorDetail } from "./ErrorDetail"; + +/** + * challenge type to render HTML as-is + * @export + * @interface ShellChallenge + */ +export interface ShellChallenge { + /** + * + * @type {ContextualFlowInfo} + * @memberof ShellChallenge + */ + flowInfo?: ContextualFlowInfo; + /** + * + * @type {string} + * @memberof ShellChallenge + */ + component?: string; + /** + * + * @type {{ [key: string]: Array; }} + * @memberof ShellChallenge + */ + responseErrors?: { [key: string]: Array }; + /** + * + * @type {string} + * @memberof ShellChallenge + */ + body: string; +} + +/** + * Check if a given object implements the ShellChallenge interface. + */ +export function instanceOfShellChallenge(value: object): value is ShellChallenge { + if (!("body" in value) || value["body"] === undefined) return false; + return true; +} + +export function ShellChallengeFromJSON(json: any): ShellChallenge { + return ShellChallengeFromJSONTyped(json, false); +} + +export function ShellChallengeFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): ShellChallenge { + if (json == null) { + return json; + } + return { + flowInfo: + json["flow_info"] == null ? undefined : ContextualFlowInfoFromJSON(json["flow_info"]), + component: json["component"] == null ? undefined : json["component"], + responseErrors: json["response_errors"] == null ? undefined : json["response_errors"], + body: json["body"], + }; +} + +export function ShellChallengeToJSON(json: any): ShellChallenge { + return ShellChallengeToJSONTyped(json, false); +} + +export function ShellChallengeToJSONTyped( + value?: ShellChallenge | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + flow_info: ContextualFlowInfoToJSON(value["flowInfo"]), + component: value["component"], + response_errors: value["responseErrors"], + body: value["body"], + }; +} diff --git a/packages/client-ts/src/models/SignatureAlgorithmEnum.ts b/packages/client-ts/src/models/SignatureAlgorithmEnum.ts new file mode 100644 index 0000000000..efb85b37c0 --- /dev/null +++ b/packages/client-ts/src/models/SignatureAlgorithmEnum.ts @@ -0,0 +1,65 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const SignatureAlgorithmEnum = { + HttpWwwW3Org200009XmldsigrsaSha1: "http://www.w3.org/2000/09/xmldsig#rsa-sha1", + HttpWwwW3Org200104XmldsigMorersaSha256: "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256", + HttpWwwW3Org200104XmldsigMorersaSha384: "http://www.w3.org/2001/04/xmldsig-more#rsa-sha384", + HttpWwwW3Org200104XmldsigMorersaSha512: "http://www.w3.org/2001/04/xmldsig-more#rsa-sha512", + HttpWwwW3Org200104XmldsigMoreecdsaSha1: "http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha1", + HttpWwwW3Org200104XmldsigMoreecdsaSha256: "http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha256", + HttpWwwW3Org200104XmldsigMoreecdsaSha384: "http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha384", + HttpWwwW3Org200104XmldsigMoreecdsaSha512: "http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha512", + HttpWwwW3Org200009XmldsigdsaSha1: "http://www.w3.org/2000/09/xmldsig#dsa-sha1", + UnknownDefaultOpenApi: "11184809", +} as const; +export type SignatureAlgorithmEnum = + (typeof SignatureAlgorithmEnum)[keyof typeof SignatureAlgorithmEnum]; + +export function instanceOfSignatureAlgorithmEnum(value: any): boolean { + for (const key in SignatureAlgorithmEnum) { + if (Object.prototype.hasOwnProperty.call(SignatureAlgorithmEnum, key)) { + if (SignatureAlgorithmEnum[key as keyof typeof SignatureAlgorithmEnum] === value) { + return true; + } + } + } + return false; +} + +export function SignatureAlgorithmEnumFromJSON(json: any): SignatureAlgorithmEnum { + return SignatureAlgorithmEnumFromJSONTyped(json, false); +} + +export function SignatureAlgorithmEnumFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): SignatureAlgorithmEnum { + return json as SignatureAlgorithmEnum; +} + +export function SignatureAlgorithmEnumToJSON(value?: SignatureAlgorithmEnum | null): any { + return value as any; +} + +export function SignatureAlgorithmEnumToJSONTyped( + value: any, + ignoreDiscriminator: boolean, +): SignatureAlgorithmEnum { + return value as SignatureAlgorithmEnum; +} diff --git a/packages/client-ts/src/models/Software.ts b/packages/client-ts/src/models/Software.ts new file mode 100644 index 0000000000..f14c25fd48 --- /dev/null +++ b/packages/client-ts/src/models/Software.ts @@ -0,0 +1,90 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + * @interface Software + */ +export interface Software { + /** + * + * @type {string} + * @memberof Software + */ + name: string; + /** + * + * @type {string} + * @memberof Software + */ + version?: string; + /** + * + * @type {string} + * @memberof Software + */ + source: string; + /** + * + * @type {string} + * @memberof Software + */ + path?: string; +} + +/** + * Check if a given object implements the Software interface. + */ +export function instanceOfSoftware(value: object): value is Software { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("source" in value) || value["source"] === undefined) return false; + return true; +} + +export function SoftwareFromJSON(json: any): Software { + return SoftwareFromJSONTyped(json, false); +} + +export function SoftwareFromJSONTyped(json: any, ignoreDiscriminator: boolean): Software { + if (json == null) { + return json; + } + return { + name: json["name"], + version: json["version"] == null ? undefined : json["version"], + source: json["source"], + path: json["path"] == null ? undefined : json["path"], + }; +} + +export function SoftwareToJSON(json: any): Software { + return SoftwareToJSONTyped(json, false); +} + +export function SoftwareToJSONTyped( + value?: Software | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + version: value["version"], + source: value["source"], + path: value["path"], + }; +} diff --git a/packages/client-ts/src/models/SoftwareRequest.ts b/packages/client-ts/src/models/SoftwareRequest.ts new file mode 100644 index 0000000000..95cf9865c8 --- /dev/null +++ b/packages/client-ts/src/models/SoftwareRequest.ts @@ -0,0 +1,93 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + * @interface SoftwareRequest + */ +export interface SoftwareRequest { + /** + * + * @type {string} + * @memberof SoftwareRequest + */ + name: string; + /** + * + * @type {string} + * @memberof SoftwareRequest + */ + version?: string; + /** + * + * @type {string} + * @memberof SoftwareRequest + */ + source: string; + /** + * + * @type {string} + * @memberof SoftwareRequest + */ + path?: string; +} + +/** + * Check if a given object implements the SoftwareRequest interface. + */ +export function instanceOfSoftwareRequest(value: object): value is SoftwareRequest { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("source" in value) || value["source"] === undefined) return false; + return true; +} + +export function SoftwareRequestFromJSON(json: any): SoftwareRequest { + return SoftwareRequestFromJSONTyped(json, false); +} + +export function SoftwareRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): SoftwareRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + version: json["version"] == null ? undefined : json["version"], + source: json["source"], + path: json["path"] == null ? undefined : json["path"], + }; +} + +export function SoftwareRequestToJSON(json: any): SoftwareRequest { + return SoftwareRequestToJSONTyped(json, false); +} + +export function SoftwareRequestToJSONTyped( + value?: SoftwareRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + version: value["version"], + source: value["source"], + path: value["path"], + }; +} diff --git a/packages/client-ts/src/models/Source.ts b/packages/client-ts/src/models/Source.ts new file mode 100644 index 0000000000..ca8b400285 --- /dev/null +++ b/packages/client-ts/src/models/Source.ts @@ -0,0 +1,245 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { PolicyEngineMode } from "./PolicyEngineMode"; +import { PolicyEngineModeFromJSON, PolicyEngineModeToJSON } from "./PolicyEngineMode"; +import type { ThemedUrls } from "./ThemedUrls"; +import { ThemedUrlsFromJSON } from "./ThemedUrls"; +import type { UserMatchingModeEnum } from "./UserMatchingModeEnum"; +import { UserMatchingModeEnumFromJSON, UserMatchingModeEnumToJSON } from "./UserMatchingModeEnum"; + +/** + * Source Serializer + * @export + * @interface Source + */ +export interface Source { + /** + * + * @type {string} + * @memberof Source + */ + readonly pk: string; + /** + * Source's display Name. + * @type {string} + * @memberof Source + */ + name: string; + /** + * Internal source name, used in URLs. + * @type {string} + * @memberof Source + */ + slug: string; + /** + * + * @type {boolean} + * @memberof Source + */ + enabled?: boolean; + /** + * When enabled, this source will be displayed as a prominent button on the login page, instead of a small icon. + * @type {boolean} + * @memberof Source + */ + promoted?: boolean; + /** + * Flow to use when authenticating existing users. + * @type {string} + * @memberof Source + */ + authenticationFlow?: string | null; + /** + * Flow to use when enrolling new users. + * @type {string} + * @memberof Source + */ + enrollmentFlow?: string | null; + /** + * + * @type {Array} + * @memberof Source + */ + userPropertyMappings?: Array; + /** + * + * @type {Array} + * @memberof Source + */ + groupPropertyMappings?: Array; + /** + * Get object component so that we know how to edit the object + * @type {string} + * @memberof Source + */ + readonly component: string; + /** + * Return object's verbose_name + * @type {string} + * @memberof Source + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof Source + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof Source + */ + readonly metaModelName: string; + /** + * + * @type {PolicyEngineMode} + * @memberof Source + */ + policyEngineMode?: PolicyEngineMode; + /** + * How the source determines if an existing user should be authenticated or a new user enrolled. + * @type {UserMatchingModeEnum} + * @memberof Source + */ + userMatchingMode?: UserMatchingModeEnum; + /** + * Objects that are managed by authentik. These objects are created and updated automatically. This flag only indicates that an object can be overwritten by migrations. You can still modify the objects via the API, but expect changes to be overwritten in a later update. + * @type {string} + * @memberof Source + */ + readonly managed: string | null; + /** + * + * @type {string} + * @memberof Source + */ + userPathTemplate?: string; + /** + * + * @type {string} + * @memberof Source + */ + icon?: string; + /** + * Get the URL to the source icon + * @type {string} + * @memberof Source + */ + readonly iconUrl: string | null; + /** + * + * @type {ThemedUrls} + * @memberof Source + */ + readonly iconThemedUrls: ThemedUrls | null; +} + +/** + * Check if a given object implements the Source interface. + */ +export function instanceOfSource(value: object): value is Source { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("slug" in value) || value["slug"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + if (!("managed" in value) || value["managed"] === undefined) return false; + if (!("iconUrl" in value) || value["iconUrl"] === undefined) return false; + if (!("iconThemedUrls" in value) || value["iconThemedUrls"] === undefined) return false; + return true; +} + +export function SourceFromJSON(json: any): Source { + return SourceFromJSONTyped(json, false); +} + +export function SourceFromJSONTyped(json: any, ignoreDiscriminator: boolean): Source { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + slug: json["slug"], + enabled: json["enabled"] == null ? undefined : json["enabled"], + promoted: json["promoted"] == null ? undefined : json["promoted"], + authenticationFlow: + json["authentication_flow"] == null ? undefined : json["authentication_flow"], + enrollmentFlow: json["enrollment_flow"] == null ? undefined : json["enrollment_flow"], + userPropertyMappings: + json["user_property_mappings"] == null ? undefined : json["user_property_mappings"], + groupPropertyMappings: + json["group_property_mappings"] == null ? undefined : json["group_property_mappings"], + component: json["component"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + policyEngineMode: + json["policy_engine_mode"] == null + ? undefined + : PolicyEngineModeFromJSON(json["policy_engine_mode"]), + userMatchingMode: + json["user_matching_mode"] == null + ? undefined + : UserMatchingModeEnumFromJSON(json["user_matching_mode"]), + managed: json["managed"], + userPathTemplate: + json["user_path_template"] == null ? undefined : json["user_path_template"], + icon: json["icon"] == null ? undefined : json["icon"], + iconUrl: json["icon_url"], + iconThemedUrls: ThemedUrlsFromJSON(json["icon_themed_urls"]), + }; +} + +export function SourceToJSON(json: any): Source { + return SourceToJSONTyped(json, false); +} + +export function SourceToJSONTyped( + value?: Omit< + Source, + | "pk" + | "component" + | "verbose_name" + | "verbose_name_plural" + | "meta_model_name" + | "managed" + | "icon_url" + | "icon_themed_urls" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + slug: value["slug"], + enabled: value["enabled"], + promoted: value["promoted"], + authentication_flow: value["authenticationFlow"], + enrollment_flow: value["enrollmentFlow"], + user_property_mappings: value["userPropertyMappings"], + group_property_mappings: value["groupPropertyMappings"], + policy_engine_mode: PolicyEngineModeToJSON(value["policyEngineMode"]), + user_matching_mode: UserMatchingModeEnumToJSON(value["userMatchingMode"]), + user_path_template: value["userPathTemplate"], + icon: value["icon"], + }; +} diff --git a/packages/client-ts/src/models/SourceStage.ts b/packages/client-ts/src/models/SourceStage.ts new file mode 100644 index 0000000000..a4e1430a38 --- /dev/null +++ b/packages/client-ts/src/models/SourceStage.ts @@ -0,0 +1,136 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { FlowSet } from "./FlowSet"; +import { FlowSetFromJSON } from "./FlowSet"; + +/** + * SourceStage Serializer + * @export + * @interface SourceStage + */ +export interface SourceStage { + /** + * + * @type {string} + * @memberof SourceStage + */ + readonly pk: string; + /** + * + * @type {string} + * @memberof SourceStage + */ + name: string; + /** + * Get object type so that we know how to edit the object + * @type {string} + * @memberof SourceStage + */ + readonly component: string; + /** + * Return object's verbose_name + * @type {string} + * @memberof SourceStage + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof SourceStage + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof SourceStage + */ + readonly metaModelName: string; + /** + * + * @type {Array} + * @memberof SourceStage + */ + readonly flowSet: Array; + /** + * + * @type {string} + * @memberof SourceStage + */ + source: string; + /** + * Amount of time a user can take to return from the source to continue the flow (Format: hours=-1;minutes=-2;seconds=-3) + * @type {string} + * @memberof SourceStage + */ + resumeTimeout?: string; +} + +/** + * Check if a given object implements the SourceStage interface. + */ +export function instanceOfSourceStage(value: object): value is SourceStage { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + if (!("flowSet" in value) || value["flowSet"] === undefined) return false; + if (!("source" in value) || value["source"] === undefined) return false; + return true; +} + +export function SourceStageFromJSON(json: any): SourceStage { + return SourceStageFromJSONTyped(json, false); +} + +export function SourceStageFromJSONTyped(json: any, ignoreDiscriminator: boolean): SourceStage { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + component: json["component"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + flowSet: (json["flow_set"] as Array).map(FlowSetFromJSON), + source: json["source"], + resumeTimeout: json["resume_timeout"] == null ? undefined : json["resume_timeout"], + }; +} + +export function SourceStageToJSON(json: any): SourceStage { + return SourceStageToJSONTyped(json, false); +} + +export function SourceStageToJSONTyped( + value?: Omit< + SourceStage, + "pk" | "component" | "verbose_name" | "verbose_name_plural" | "meta_model_name" | "flow_set" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + source: value["source"], + resume_timeout: value["resumeTimeout"], + }; +} diff --git a/packages/client-ts/src/models/SourceStageRequest.ts b/packages/client-ts/src/models/SourceStageRequest.ts new file mode 100644 index 0000000000..20f21a730c --- /dev/null +++ b/packages/client-ts/src/models/SourceStageRequest.ts @@ -0,0 +1,85 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * SourceStage Serializer + * @export + * @interface SourceStageRequest + */ +export interface SourceStageRequest { + /** + * + * @type {string} + * @memberof SourceStageRequest + */ + name: string; + /** + * + * @type {string} + * @memberof SourceStageRequest + */ + source: string; + /** + * Amount of time a user can take to return from the source to continue the flow (Format: hours=-1;minutes=-2;seconds=-3) + * @type {string} + * @memberof SourceStageRequest + */ + resumeTimeout?: string; +} + +/** + * Check if a given object implements the SourceStageRequest interface. + */ +export function instanceOfSourceStageRequest(value: object): value is SourceStageRequest { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("source" in value) || value["source"] === undefined) return false; + return true; +} + +export function SourceStageRequestFromJSON(json: any): SourceStageRequest { + return SourceStageRequestFromJSONTyped(json, false); +} + +export function SourceStageRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): SourceStageRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + source: json["source"], + resumeTimeout: json["resume_timeout"] == null ? undefined : json["resume_timeout"], + }; +} + +export function SourceStageRequestToJSON(json: any): SourceStageRequest { + return SourceStageRequestToJSONTyped(json, false); +} + +export function SourceStageRequestToJSONTyped( + value?: SourceStageRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + source: value["source"], + resume_timeout: value["resumeTimeout"], + }; +} diff --git a/packages/client-ts/src/models/SourceType.ts b/packages/client-ts/src/models/SourceType.ts new file mode 100644 index 0000000000..f484cede73 --- /dev/null +++ b/packages/client-ts/src/models/SourceType.ts @@ -0,0 +1,139 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Serializer for SourceType + * @export + * @interface SourceType + */ +export interface SourceType { + /** + * + * @type {string} + * @memberof SourceType + */ + name: string; + /** + * + * @type {string} + * @memberof SourceType + */ + verboseName: string; + /** + * + * @type {boolean} + * @memberof SourceType + */ + urlsCustomizable: boolean; + /** + * + * @type {string} + * @memberof SourceType + */ + readonly requestTokenUrl: string | null; + /** + * + * @type {string} + * @memberof SourceType + */ + readonly authorizationUrl: string | null; + /** + * + * @type {string} + * @memberof SourceType + */ + readonly accessTokenUrl: string | null; + /** + * + * @type {string} + * @memberof SourceType + */ + readonly profileUrl: string | null; + /** + * + * @type {string} + * @memberof SourceType + */ + readonly oidcWellKnownUrl: string | null; + /** + * + * @type {string} + * @memberof SourceType + */ + readonly oidcJwksUrl: string | null; +} + +/** + * Check if a given object implements the SourceType interface. + */ +export function instanceOfSourceType(value: object): value is SourceType { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("urlsCustomizable" in value) || value["urlsCustomizable"] === undefined) return false; + if (!("requestTokenUrl" in value) || value["requestTokenUrl"] === undefined) return false; + if (!("authorizationUrl" in value) || value["authorizationUrl"] === undefined) return false; + if (!("accessTokenUrl" in value) || value["accessTokenUrl"] === undefined) return false; + if (!("profileUrl" in value) || value["profileUrl"] === undefined) return false; + if (!("oidcWellKnownUrl" in value) || value["oidcWellKnownUrl"] === undefined) return false; + if (!("oidcJwksUrl" in value) || value["oidcJwksUrl"] === undefined) return false; + return true; +} + +export function SourceTypeFromJSON(json: any): SourceType { + return SourceTypeFromJSONTyped(json, false); +} + +export function SourceTypeFromJSONTyped(json: any, ignoreDiscriminator: boolean): SourceType { + if (json == null) { + return json; + } + return { + name: json["name"], + verboseName: json["verbose_name"], + urlsCustomizable: json["urls_customizable"], + requestTokenUrl: json["request_token_url"], + authorizationUrl: json["authorization_url"], + accessTokenUrl: json["access_token_url"], + profileUrl: json["profile_url"], + oidcWellKnownUrl: json["oidc_well_known_url"], + oidcJwksUrl: json["oidc_jwks_url"], + }; +} + +export function SourceTypeToJSON(json: any): SourceType { + return SourceTypeToJSONTyped(json, false); +} + +export function SourceTypeToJSONTyped( + value?: Omit< + SourceType, + | "request_token_url" + | "authorization_url" + | "access_token_url" + | "profile_url" + | "oidc_well_known_url" + | "oidc_jwks_url" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + verbose_name: value["verboseName"], + urls_customizable: value["urlsCustomizable"], + }; +} diff --git a/packages/client-ts/src/models/Stage.ts b/packages/client-ts/src/models/Stage.ts new file mode 100644 index 0000000000..49ddada17a --- /dev/null +++ b/packages/client-ts/src/models/Stage.ts @@ -0,0 +1,119 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { FlowSet } from "./FlowSet"; +import { FlowSetFromJSON } from "./FlowSet"; + +/** + * Stage Serializer + * @export + * @interface Stage + */ +export interface Stage { + /** + * + * @type {string} + * @memberof Stage + */ + readonly pk: string; + /** + * + * @type {string} + * @memberof Stage + */ + name: string; + /** + * Get object type so that we know how to edit the object + * @type {string} + * @memberof Stage + */ + readonly component: string; + /** + * Return object's verbose_name + * @type {string} + * @memberof Stage + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof Stage + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof Stage + */ + readonly metaModelName: string; + /** + * + * @type {Array} + * @memberof Stage + */ + readonly flowSet: Array; +} + +/** + * Check if a given object implements the Stage interface. + */ +export function instanceOfStage(value: object): value is Stage { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + if (!("flowSet" in value) || value["flowSet"] === undefined) return false; + return true; +} + +export function StageFromJSON(json: any): Stage { + return StageFromJSONTyped(json, false); +} + +export function StageFromJSONTyped(json: any, ignoreDiscriminator: boolean): Stage { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + component: json["component"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + flowSet: (json["flow_set"] as Array).map(FlowSetFromJSON), + }; +} + +export function StageToJSON(json: any): Stage { + return StageToJSONTyped(json, false); +} + +export function StageToJSONTyped( + value?: Omit< + Stage, + "pk" | "component" | "verbose_name" | "verbose_name_plural" | "meta_model_name" | "flow_set" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + }; +} diff --git a/packages/client-ts/src/models/StageModeEnum.ts b/packages/client-ts/src/models/StageModeEnum.ts new file mode 100644 index 0000000000..8b32d6ea3b --- /dev/null +++ b/packages/client-ts/src/models/StageModeEnum.ts @@ -0,0 +1,51 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const StageModeEnum = { + Optional: "optional", + Required: "required", + UnknownDefaultOpenApi: "11184809", +} as const; +export type StageModeEnum = (typeof StageModeEnum)[keyof typeof StageModeEnum]; + +export function instanceOfStageModeEnum(value: any): boolean { + for (const key in StageModeEnum) { + if (Object.prototype.hasOwnProperty.call(StageModeEnum, key)) { + if (StageModeEnum[key as keyof typeof StageModeEnum] === value) { + return true; + } + } + } + return false; +} + +export function StageModeEnumFromJSON(json: any): StageModeEnum { + return StageModeEnumFromJSONTyped(json, false); +} + +export function StageModeEnumFromJSONTyped(json: any, ignoreDiscriminator: boolean): StageModeEnum { + return json as StageModeEnum; +} + +export function StageModeEnumToJSON(value?: StageModeEnum | null): any { + return value as any; +} + +export function StageModeEnumToJSONTyped(value: any, ignoreDiscriminator: boolean): StageModeEnum { + return value as StageModeEnum; +} diff --git a/packages/client-ts/src/models/StagePrompt.ts b/packages/client-ts/src/models/StagePrompt.ts new file mode 100644 index 0000000000..7b21a4c929 --- /dev/null +++ b/packages/client-ts/src/models/StagePrompt.ts @@ -0,0 +1,148 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { PromptChoice } from "./PromptChoice"; +import { PromptChoiceFromJSON, PromptChoiceToJSON } from "./PromptChoice"; +import type { PromptTypeEnum } from "./PromptTypeEnum"; +import { PromptTypeEnumFromJSON, PromptTypeEnumToJSON } from "./PromptTypeEnum"; + +/** + * Serializer for a single Prompt field + * @export + * @interface StagePrompt + */ +export interface StagePrompt { + /** + * + * @type {string} + * @memberof StagePrompt + */ + fieldKey: string; + /** + * + * @type {string} + * @memberof StagePrompt + */ + label: string; + /** + * + * @type {PromptTypeEnum} + * @memberof StagePrompt + */ + type: PromptTypeEnum; + /** + * + * @type {boolean} + * @memberof StagePrompt + */ + required: boolean; + /** + * + * @type {string} + * @memberof StagePrompt + */ + placeholder: string; + /** + * + * @type {string} + * @memberof StagePrompt + */ + initialValue: string; + /** + * + * @type {number} + * @memberof StagePrompt + */ + order: number; + /** + * + * @type {string} + * @memberof StagePrompt + */ + subText: string; + /** + * + * @type {Array} + * @memberof StagePrompt + */ + choices: Array | null; +} + +/** + * Check if a given object implements the StagePrompt interface. + */ +export function instanceOfStagePrompt(value: object): value is StagePrompt { + if (!("fieldKey" in value) || value["fieldKey"] === undefined) return false; + if (!("label" in value) || value["label"] === undefined) return false; + if (!("type" in value) || value["type"] === undefined) return false; + if (!("required" in value) || value["required"] === undefined) return false; + if (!("placeholder" in value) || value["placeholder"] === undefined) return false; + if (!("initialValue" in value) || value["initialValue"] === undefined) return false; + if (!("order" in value) || value["order"] === undefined) return false; + if (!("subText" in value) || value["subText"] === undefined) return false; + if (!("choices" in value) || value["choices"] === undefined) return false; + return true; +} + +export function StagePromptFromJSON(json: any): StagePrompt { + return StagePromptFromJSONTyped(json, false); +} + +export function StagePromptFromJSONTyped(json: any, ignoreDiscriminator: boolean): StagePrompt { + if (json == null) { + return json; + } + return { + fieldKey: json["field_key"], + label: json["label"], + type: PromptTypeEnumFromJSON(json["type"]), + required: json["required"], + placeholder: json["placeholder"], + initialValue: json["initial_value"], + order: json["order"], + subText: json["sub_text"], + choices: + json["choices"] == null + ? null + : (json["choices"] as Array).map(PromptChoiceFromJSON), + }; +} + +export function StagePromptToJSON(json: any): StagePrompt { + return StagePromptToJSONTyped(json, false); +} + +export function StagePromptToJSONTyped( + value?: StagePrompt | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + field_key: value["fieldKey"], + label: value["label"], + type: PromptTypeEnumToJSON(value["type"]), + required: value["required"], + placeholder: value["placeholder"], + initial_value: value["initialValue"], + order: value["order"], + sub_text: value["subText"], + choices: + value["choices"] == null + ? null + : (value["choices"] as Array).map(PromptChoiceToJSON), + }; +} diff --git a/packages/client-ts/src/models/StaticDevice.ts b/packages/client-ts/src/models/StaticDevice.ts new file mode 100644 index 0000000000..61b32b29e0 --- /dev/null +++ b/packages/client-ts/src/models/StaticDevice.ts @@ -0,0 +1,94 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { PartialUser } from "./PartialUser"; +import { PartialUserFromJSON } from "./PartialUser"; +import type { StaticDeviceToken } from "./StaticDeviceToken"; +import { StaticDeviceTokenFromJSON } from "./StaticDeviceToken"; + +/** + * Serializer for static authenticator devices + * @export + * @interface StaticDevice + */ +export interface StaticDevice { + /** + * The human-readable name of this device. + * @type {string} + * @memberof StaticDevice + */ + name: string; + /** + * + * @type {Array} + * @memberof StaticDevice + */ + readonly tokenSet: Array; + /** + * + * @type {number} + * @memberof StaticDevice + */ + readonly pk: number; + /** + * + * @type {PartialUser} + * @memberof StaticDevice + */ + readonly user: PartialUser; +} + +/** + * Check if a given object implements the StaticDevice interface. + */ +export function instanceOfStaticDevice(value: object): value is StaticDevice { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("tokenSet" in value) || value["tokenSet"] === undefined) return false; + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("user" in value) || value["user"] === undefined) return false; + return true; +} + +export function StaticDeviceFromJSON(json: any): StaticDevice { + return StaticDeviceFromJSONTyped(json, false); +} + +export function StaticDeviceFromJSONTyped(json: any, ignoreDiscriminator: boolean): StaticDevice { + if (json == null) { + return json; + } + return { + name: json["name"], + tokenSet: (json["token_set"] as Array).map(StaticDeviceTokenFromJSON), + pk: json["pk"], + user: PartialUserFromJSON(json["user"]), + }; +} + +export function StaticDeviceToJSON(json: any): StaticDevice { + return StaticDeviceToJSONTyped(json, false); +} + +export function StaticDeviceToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + }; +} diff --git a/packages/client-ts/src/models/StaticDeviceRequest.ts b/packages/client-ts/src/models/StaticDeviceRequest.ts new file mode 100644 index 0000000000..625a929c01 --- /dev/null +++ b/packages/client-ts/src/models/StaticDeviceRequest.ts @@ -0,0 +1,68 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Serializer for static authenticator devices + * @export + * @interface StaticDeviceRequest + */ +export interface StaticDeviceRequest { + /** + * The human-readable name of this device. + * @type {string} + * @memberof StaticDeviceRequest + */ + name: string; +} + +/** + * Check if a given object implements the StaticDeviceRequest interface. + */ +export function instanceOfStaticDeviceRequest(value: object): value is StaticDeviceRequest { + if (!("name" in value) || value["name"] === undefined) return false; + return true; +} + +export function StaticDeviceRequestFromJSON(json: any): StaticDeviceRequest { + return StaticDeviceRequestFromJSONTyped(json, false); +} + +export function StaticDeviceRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): StaticDeviceRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + }; +} + +export function StaticDeviceRequestToJSON(json: any): StaticDeviceRequest { + return StaticDeviceRequestToJSONTyped(json, false); +} + +export function StaticDeviceRequestToJSONTyped( + value?: StaticDeviceRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + }; +} diff --git a/packages/client-ts/src/models/StaticDeviceToken.ts b/packages/client-ts/src/models/StaticDeviceToken.ts new file mode 100644 index 0000000000..585278c3d4 --- /dev/null +++ b/packages/client-ts/src/models/StaticDeviceToken.ts @@ -0,0 +1,68 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Serializer for static device's tokens + * @export + * @interface StaticDeviceToken + */ +export interface StaticDeviceToken { + /** + * + * @type {string} + * @memberof StaticDeviceToken + */ + token: string; +} + +/** + * Check if a given object implements the StaticDeviceToken interface. + */ +export function instanceOfStaticDeviceToken(value: object): value is StaticDeviceToken { + if (!("token" in value) || value["token"] === undefined) return false; + return true; +} + +export function StaticDeviceTokenFromJSON(json: any): StaticDeviceToken { + return StaticDeviceTokenFromJSONTyped(json, false); +} + +export function StaticDeviceTokenFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): StaticDeviceToken { + if (json == null) { + return json; + } + return { + token: json["token"], + }; +} + +export function StaticDeviceTokenToJSON(json: any): StaticDeviceToken { + return StaticDeviceTokenToJSONTyped(json, false); +} + +export function StaticDeviceTokenToJSONTyped( + value?: StaticDeviceToken | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + token: value["token"], + }; +} diff --git a/packages/client-ts/src/models/SubModeEnum.ts b/packages/client-ts/src/models/SubModeEnum.ts new file mode 100644 index 0000000000..eba17234a5 --- /dev/null +++ b/packages/client-ts/src/models/SubModeEnum.ts @@ -0,0 +1,55 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const SubModeEnum = { + HashedUserId: "hashed_user_id", + UserId: "user_id", + UserUuid: "user_uuid", + UserUsername: "user_username", + UserEmail: "user_email", + UserUpn: "user_upn", + UnknownDefaultOpenApi: "11184809", +} as const; +export type SubModeEnum = (typeof SubModeEnum)[keyof typeof SubModeEnum]; + +export function instanceOfSubModeEnum(value: any): boolean { + for (const key in SubModeEnum) { + if (Object.prototype.hasOwnProperty.call(SubModeEnum, key)) { + if (SubModeEnum[key as keyof typeof SubModeEnum] === value) { + return true; + } + } + } + return false; +} + +export function SubModeEnumFromJSON(json: any): SubModeEnum { + return SubModeEnumFromJSONTyped(json, false); +} + +export function SubModeEnumFromJSONTyped(json: any, ignoreDiscriminator: boolean): SubModeEnum { + return json as SubModeEnum; +} + +export function SubModeEnumToJSON(value?: SubModeEnum | null): any { + return value as any; +} + +export function SubModeEnumToJSONTyped(value: any, ignoreDiscriminator: boolean): SubModeEnum { + return value as SubModeEnum; +} diff --git a/packages/client-ts/src/models/SyncObjectModelEnum.ts b/packages/client-ts/src/models/SyncObjectModelEnum.ts new file mode 100644 index 0000000000..6294af67b0 --- /dev/null +++ b/packages/client-ts/src/models/SyncObjectModelEnum.ts @@ -0,0 +1,57 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const SyncObjectModelEnum = { + AuthentikCoreModelsUser: "authentik.core.models.User", + AuthentikCoreModelsGroup: "authentik.core.models.Group", + UnknownDefaultOpenApi: "11184809", +} as const; +export type SyncObjectModelEnum = (typeof SyncObjectModelEnum)[keyof typeof SyncObjectModelEnum]; + +export function instanceOfSyncObjectModelEnum(value: any): boolean { + for (const key in SyncObjectModelEnum) { + if (Object.prototype.hasOwnProperty.call(SyncObjectModelEnum, key)) { + if (SyncObjectModelEnum[key as keyof typeof SyncObjectModelEnum] === value) { + return true; + } + } + } + return false; +} + +export function SyncObjectModelEnumFromJSON(json: any): SyncObjectModelEnum { + return SyncObjectModelEnumFromJSONTyped(json, false); +} + +export function SyncObjectModelEnumFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): SyncObjectModelEnum { + return json as SyncObjectModelEnum; +} + +export function SyncObjectModelEnumToJSON(value?: SyncObjectModelEnum | null): any { + return value as any; +} + +export function SyncObjectModelEnumToJSONTyped( + value: any, + ignoreDiscriminator: boolean, +): SyncObjectModelEnum { + return value as SyncObjectModelEnum; +} diff --git a/packages/client-ts/src/models/SyncObjectRequest.ts b/packages/client-ts/src/models/SyncObjectRequest.ts new file mode 100644 index 0000000000..daba0e720d --- /dev/null +++ b/packages/client-ts/src/models/SyncObjectRequest.ts @@ -0,0 +1,88 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { SyncObjectModelEnum } from "./SyncObjectModelEnum"; +import { SyncObjectModelEnumFromJSON, SyncObjectModelEnumToJSON } from "./SyncObjectModelEnum"; + +/** + * Sync object serializer + * @export + * @interface SyncObjectRequest + */ +export interface SyncObjectRequest { + /** + * + * @type {SyncObjectModelEnum} + * @memberof SyncObjectRequest + */ + syncObjectModel: SyncObjectModelEnum; + /** + * + * @type {string} + * @memberof SyncObjectRequest + */ + syncObjectId: string; + /** + * + * @type {boolean} + * @memberof SyncObjectRequest + */ + overrideDryRun?: boolean; +} + +/** + * Check if a given object implements the SyncObjectRequest interface. + */ +export function instanceOfSyncObjectRequest(value: object): value is SyncObjectRequest { + if (!("syncObjectModel" in value) || value["syncObjectModel"] === undefined) return false; + if (!("syncObjectId" in value) || value["syncObjectId"] === undefined) return false; + return true; +} + +export function SyncObjectRequestFromJSON(json: any): SyncObjectRequest { + return SyncObjectRequestFromJSONTyped(json, false); +} + +export function SyncObjectRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): SyncObjectRequest { + if (json == null) { + return json; + } + return { + syncObjectModel: SyncObjectModelEnumFromJSON(json["sync_object_model"]), + syncObjectId: json["sync_object_id"], + overrideDryRun: json["override_dry_run"] == null ? undefined : json["override_dry_run"], + }; +} + +export function SyncObjectRequestToJSON(json: any): SyncObjectRequest { + return SyncObjectRequestToJSONTyped(json, false); +} + +export function SyncObjectRequestToJSONTyped( + value?: SyncObjectRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + sync_object_model: SyncObjectModelEnumToJSON(value["syncObjectModel"]), + sync_object_id: value["syncObjectId"], + override_dry_run: value["overrideDryRun"], + }; +} diff --git a/packages/client-ts/src/models/SyncObjectResult.ts b/packages/client-ts/src/models/SyncObjectResult.ts new file mode 100644 index 0000000000..625d744cd2 --- /dev/null +++ b/packages/client-ts/src/models/SyncObjectResult.ts @@ -0,0 +1,69 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { LogEvent } from "./LogEvent"; +import { LogEventFromJSON } from "./LogEvent"; + +/** + * Result of a single object sync + * @export + * @interface SyncObjectResult + */ +export interface SyncObjectResult { + /** + * + * @type {Array} + * @memberof SyncObjectResult + */ + readonly messages: Array; +} + +/** + * Check if a given object implements the SyncObjectResult interface. + */ +export function instanceOfSyncObjectResult(value: object): value is SyncObjectResult { + if (!("messages" in value) || value["messages"] === undefined) return false; + return true; +} + +export function SyncObjectResultFromJSON(json: any): SyncObjectResult { + return SyncObjectResultFromJSONTyped(json, false); +} + +export function SyncObjectResultFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): SyncObjectResult { + if (json == null) { + return json; + } + return { + messages: (json["messages"] as Array).map(LogEventFromJSON), + }; +} + +export function SyncObjectResultToJSON(json: any): SyncObjectResult { + return SyncObjectResultToJSONTyped(json, false); +} + +export function SyncObjectResultToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return {}; +} diff --git a/packages/client-ts/src/models/SyncOutgoingTriggerModeEnum.ts b/packages/client-ts/src/models/SyncOutgoingTriggerModeEnum.ts new file mode 100644 index 0000000000..58c7239b09 --- /dev/null +++ b/packages/client-ts/src/models/SyncOutgoingTriggerModeEnum.ts @@ -0,0 +1,62 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const SyncOutgoingTriggerModeEnum = { + None: "none", + Immediate: "immediate", + DeferredEnd: "deferred_end", + UnknownDefaultOpenApi: "11184809", +} as const; +export type SyncOutgoingTriggerModeEnum = + (typeof SyncOutgoingTriggerModeEnum)[keyof typeof SyncOutgoingTriggerModeEnum]; + +export function instanceOfSyncOutgoingTriggerModeEnum(value: any): boolean { + for (const key in SyncOutgoingTriggerModeEnum) { + if (Object.prototype.hasOwnProperty.call(SyncOutgoingTriggerModeEnum, key)) { + if ( + SyncOutgoingTriggerModeEnum[key as keyof typeof SyncOutgoingTriggerModeEnum] === + value + ) { + return true; + } + } + } + return false; +} + +export function SyncOutgoingTriggerModeEnumFromJSON(json: any): SyncOutgoingTriggerModeEnum { + return SyncOutgoingTriggerModeEnumFromJSONTyped(json, false); +} + +export function SyncOutgoingTriggerModeEnumFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): SyncOutgoingTriggerModeEnum { + return json as SyncOutgoingTriggerModeEnum; +} + +export function SyncOutgoingTriggerModeEnumToJSON(value?: SyncOutgoingTriggerModeEnum | null): any { + return value as any; +} + +export function SyncOutgoingTriggerModeEnumToJSONTyped( + value: any, + ignoreDiscriminator: boolean, +): SyncOutgoingTriggerModeEnum { + return value as SyncOutgoingTriggerModeEnum; +} diff --git a/packages/client-ts/src/models/SyncStatus.ts b/packages/client-ts/src/models/SyncStatus.ts new file mode 100644 index 0000000000..07ad8a1e39 --- /dev/null +++ b/packages/client-ts/src/models/SyncStatus.ts @@ -0,0 +1,96 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { TaskAggregatedStatusEnum } from "./TaskAggregatedStatusEnum"; +import { + TaskAggregatedStatusEnumFromJSON, + TaskAggregatedStatusEnumToJSON, +} from "./TaskAggregatedStatusEnum"; + +/** + * Provider/source sync status + * @export + * @interface SyncStatus + */ +export interface SyncStatus { + /** + * + * @type {boolean} + * @memberof SyncStatus + */ + isRunning: boolean; + /** + * + * @type {Date} + * @memberof SyncStatus + */ + lastSuccessfulSync?: Date; + /** + * + * @type {TaskAggregatedStatusEnum} + * @memberof SyncStatus + */ + lastSyncStatus?: TaskAggregatedStatusEnum; +} + +/** + * Check if a given object implements the SyncStatus interface. + */ +export function instanceOfSyncStatus(value: object): value is SyncStatus { + if (!("isRunning" in value) || value["isRunning"] === undefined) return false; + return true; +} + +export function SyncStatusFromJSON(json: any): SyncStatus { + return SyncStatusFromJSONTyped(json, false); +} + +export function SyncStatusFromJSONTyped(json: any, ignoreDiscriminator: boolean): SyncStatus { + if (json == null) { + return json; + } + return { + isRunning: json["is_running"], + lastSuccessfulSync: + json["last_successful_sync"] == null + ? undefined + : new Date(json["last_successful_sync"]), + lastSyncStatus: + json["last_sync_status"] == null + ? undefined + : TaskAggregatedStatusEnumFromJSON(json["last_sync_status"]), + }; +} + +export function SyncStatusToJSON(json: any): SyncStatus { + return SyncStatusToJSONTyped(json, false); +} + +export function SyncStatusToJSONTyped( + value?: SyncStatus | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + is_running: value["isRunning"], + last_successful_sync: + value["lastSuccessfulSync"] == null + ? value["lastSuccessfulSync"] + : value["lastSuccessfulSync"].toISOString(), + last_sync_status: TaskAggregatedStatusEnumToJSON(value["lastSyncStatus"]), + }; +} diff --git a/packages/client-ts/src/models/SystemInfo.ts b/packages/client-ts/src/models/SystemInfo.ts new file mode 100644 index 0000000000..db773a0b6f --- /dev/null +++ b/packages/client-ts/src/models/SystemInfo.ts @@ -0,0 +1,135 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { SystemInfoRuntime } from "./SystemInfoRuntime"; +import { SystemInfoRuntimeFromJSON, SystemInfoRuntimeToJSON } from "./SystemInfoRuntime"; + +/** + * Get system information. + * @export + * @interface SystemInfo + */ +export interface SystemInfo { + /** + * Get HTTP Request headers + * @type {{ [key: string]: string; }} + * @memberof SystemInfo + */ + readonly httpHeaders: { [key: string]: string }; + /** + * Get HTTP host + * @type {string} + * @memberof SystemInfo + */ + readonly httpHost: string; + /** + * Get HTTP Secure flag + * @type {boolean} + * @memberof SystemInfo + */ + readonly httpIsSecure: boolean; + /** + * + * @type {SystemInfoRuntime} + * @memberof SystemInfo + */ + runtime: SystemInfoRuntime; + /** + * Currently active brand + * @type {string} + * @memberof SystemInfo + */ + readonly brand: string; + /** + * Current server time + * @type {Date} + * @memberof SystemInfo + */ + readonly serverTime: Date; + /** + * Whether the embedded outpost is disabled + * @type {boolean} + * @memberof SystemInfo + */ + readonly embeddedOutpostDisabled: boolean; + /** + * Get the FQDN configured on the embedded outpost + * @type {string} + * @memberof SystemInfo + */ + readonly embeddedOutpostHost: string; +} + +/** + * Check if a given object implements the SystemInfo interface. + */ +export function instanceOfSystemInfo(value: object): value is SystemInfo { + if (!("httpHeaders" in value) || value["httpHeaders"] === undefined) return false; + if (!("httpHost" in value) || value["httpHost"] === undefined) return false; + if (!("httpIsSecure" in value) || value["httpIsSecure"] === undefined) return false; + if (!("runtime" in value) || value["runtime"] === undefined) return false; + if (!("brand" in value) || value["brand"] === undefined) return false; + if (!("serverTime" in value) || value["serverTime"] === undefined) return false; + if (!("embeddedOutpostDisabled" in value) || value["embeddedOutpostDisabled"] === undefined) + return false; + if (!("embeddedOutpostHost" in value) || value["embeddedOutpostHost"] === undefined) + return false; + return true; +} + +export function SystemInfoFromJSON(json: any): SystemInfo { + return SystemInfoFromJSONTyped(json, false); +} + +export function SystemInfoFromJSONTyped(json: any, ignoreDiscriminator: boolean): SystemInfo { + if (json == null) { + return json; + } + return { + httpHeaders: json["http_headers"], + httpHost: json["http_host"], + httpIsSecure: json["http_is_secure"], + runtime: SystemInfoRuntimeFromJSON(json["runtime"]), + brand: json["brand"], + serverTime: new Date(json["server_time"]), + embeddedOutpostDisabled: json["embedded_outpost_disabled"], + embeddedOutpostHost: json["embedded_outpost_host"], + }; +} + +export function SystemInfoToJSON(json: any): SystemInfo { + return SystemInfoToJSONTyped(json, false); +} + +export function SystemInfoToJSONTyped( + value?: Omit< + SystemInfo, + | "http_headers" + | "http_host" + | "http_is_secure" + | "brand" + | "server_time" + | "embedded_outpost_disabled" + | "embedded_outpost_host" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + runtime: SystemInfoRuntimeToJSON(value["runtime"]), + }; +} diff --git a/packages/client-ts/src/models/SystemInfoRuntime.ts b/packages/client-ts/src/models/SystemInfoRuntime.ts new file mode 100644 index 0000000000..2effcc021e --- /dev/null +++ b/packages/client-ts/src/models/SystemInfoRuntime.ts @@ -0,0 +1,131 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Get versions + * @export + * @interface SystemInfoRuntime + */ +export interface SystemInfoRuntime { + /** + * + * @type {string} + * @memberof SystemInfoRuntime + */ + pythonVersion: string; + /** + * + * @type {string} + * @memberof SystemInfoRuntime + */ + environment: string; + /** + * + * @type {string} + * @memberof SystemInfoRuntime + */ + architecture: string; + /** + * + * @type {string} + * @memberof SystemInfoRuntime + */ + platform: string; + /** + * + * @type {string} + * @memberof SystemInfoRuntime + */ + uname: string; + /** + * + * @type {string} + * @memberof SystemInfoRuntime + */ + opensslVersion: string; + /** + * + * @type {boolean} + * @memberof SystemInfoRuntime + */ + opensslFipsEnabled: boolean | null; + /** + * + * @type {string} + * @memberof SystemInfoRuntime + */ + authentikVersion: string; +} + +/** + * Check if a given object implements the SystemInfoRuntime interface. + */ +export function instanceOfSystemInfoRuntime(value: object): value is SystemInfoRuntime { + if (!("pythonVersion" in value) || value["pythonVersion"] === undefined) return false; + if (!("environment" in value) || value["environment"] === undefined) return false; + if (!("architecture" in value) || value["architecture"] === undefined) return false; + if (!("platform" in value) || value["platform"] === undefined) return false; + if (!("uname" in value) || value["uname"] === undefined) return false; + if (!("opensslVersion" in value) || value["opensslVersion"] === undefined) return false; + if (!("opensslFipsEnabled" in value) || value["opensslFipsEnabled"] === undefined) return false; + if (!("authentikVersion" in value) || value["authentikVersion"] === undefined) return false; + return true; +} + +export function SystemInfoRuntimeFromJSON(json: any): SystemInfoRuntime { + return SystemInfoRuntimeFromJSONTyped(json, false); +} + +export function SystemInfoRuntimeFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): SystemInfoRuntime { + if (json == null) { + return json; + } + return { + pythonVersion: json["python_version"], + environment: json["environment"], + architecture: json["architecture"], + platform: json["platform"], + uname: json["uname"], + opensslVersion: json["openssl_version"], + opensslFipsEnabled: json["openssl_fips_enabled"], + authentikVersion: json["authentik_version"], + }; +} + +export function SystemInfoRuntimeToJSON(json: any): SystemInfoRuntime { + return SystemInfoRuntimeToJSONTyped(json, false); +} + +export function SystemInfoRuntimeToJSONTyped( + value?: SystemInfoRuntime | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + python_version: value["pythonVersion"], + environment: value["environment"], + architecture: value["architecture"], + platform: value["platform"], + uname: value["uname"], + openssl_version: value["opensslVersion"], + openssl_fips_enabled: value["opensslFipsEnabled"], + authentik_version: value["authentikVersion"], + }; +} diff --git a/packages/client-ts/src/models/TOTPDevice.ts b/packages/client-ts/src/models/TOTPDevice.ts new file mode 100644 index 0000000000..8becdf8f96 --- /dev/null +++ b/packages/client-ts/src/models/TOTPDevice.ts @@ -0,0 +1,84 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { PartialUser } from "./PartialUser"; +import { PartialUserFromJSON } from "./PartialUser"; + +/** + * Serializer for totp authenticator devices + * @export + * @interface TOTPDevice + */ +export interface TOTPDevice { + /** + * The human-readable name of this device. + * @type {string} + * @memberof TOTPDevice + */ + name: string; + /** + * + * @type {number} + * @memberof TOTPDevice + */ + readonly pk: number; + /** + * + * @type {PartialUser} + * @memberof TOTPDevice + */ + readonly user: PartialUser; +} + +/** + * Check if a given object implements the TOTPDevice interface. + */ +export function instanceOfTOTPDevice(value: object): value is TOTPDevice { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("user" in value) || value["user"] === undefined) return false; + return true; +} + +export function TOTPDeviceFromJSON(json: any): TOTPDevice { + return TOTPDeviceFromJSONTyped(json, false); +} + +export function TOTPDeviceFromJSONTyped(json: any, ignoreDiscriminator: boolean): TOTPDevice { + if (json == null) { + return json; + } + return { + name: json["name"], + pk: json["pk"], + user: PartialUserFromJSON(json["user"]), + }; +} + +export function TOTPDeviceToJSON(json: any): TOTPDevice { + return TOTPDeviceToJSONTyped(json, false); +} + +export function TOTPDeviceToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + }; +} diff --git a/packages/client-ts/src/models/TOTPDeviceRequest.ts b/packages/client-ts/src/models/TOTPDeviceRequest.ts new file mode 100644 index 0000000000..907b84d678 --- /dev/null +++ b/packages/client-ts/src/models/TOTPDeviceRequest.ts @@ -0,0 +1,68 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Serializer for totp authenticator devices + * @export + * @interface TOTPDeviceRequest + */ +export interface TOTPDeviceRequest { + /** + * The human-readable name of this device. + * @type {string} + * @memberof TOTPDeviceRequest + */ + name: string; +} + +/** + * Check if a given object implements the TOTPDeviceRequest interface. + */ +export function instanceOfTOTPDeviceRequest(value: object): value is TOTPDeviceRequest { + if (!("name" in value) || value["name"] === undefined) return false; + return true; +} + +export function TOTPDeviceRequestFromJSON(json: any): TOTPDeviceRequest { + return TOTPDeviceRequestFromJSONTyped(json, false); +} + +export function TOTPDeviceRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): TOTPDeviceRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + }; +} + +export function TOTPDeviceRequestToJSON(json: any): TOTPDeviceRequest { + return TOTPDeviceRequestToJSONTyped(json, false); +} + +export function TOTPDeviceRequestToJSONTyped( + value?: TOTPDeviceRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + }; +} diff --git a/packages/client-ts/src/models/Task.ts b/packages/client-ts/src/models/Task.ts new file mode 100644 index 0000000000..a557a288fd --- /dev/null +++ b/packages/client-ts/src/models/Task.ts @@ -0,0 +1,191 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { LogEvent } from "./LogEvent"; +import { LogEventFromJSON } from "./LogEvent"; +import type { TaskAggregatedStatusEnum } from "./TaskAggregatedStatusEnum"; +import { + TaskAggregatedStatusEnumFromJSON, + TaskAggregatedStatusEnumToJSON, +} from "./TaskAggregatedStatusEnum"; +import type { TaskStatusEnum } from "./TaskStatusEnum"; +import { TaskStatusEnumFromJSON, TaskStatusEnumToJSON } from "./TaskStatusEnum"; + +/** + * + * @export + * @interface Task + */ +export interface Task { + /** + * + * @type {string} + * @memberof Task + */ + messageId?: string; + /** + * Queue name + * @type {string} + * @memberof Task + */ + queueName?: string; + /** + * Dramatiq actor name + * @type {string} + * @memberof Task + */ + actorName: string; + /** + * Task status + * @type {TaskStatusEnum} + * @memberof Task + */ + state?: TaskStatusEnum; + /** + * Task last modified time + * @type {Date} + * @memberof Task + */ + mtime?: Date; + /** + * Number of retries + * @type {number} + * @memberof Task + */ + retries?: number; + /** + * Planned execution time + * @type {Date} + * @memberof Task + */ + eta?: Date | null; + /** + * + * @type {string} + * @memberof Task + */ + readonly relObjAppLabel: string; + /** + * + * @type {string} + * @memberof Task + */ + readonly relObjModel: string; + /** + * + * @type {string} + * @memberof Task + */ + relObjId?: string | null; + /** + * + * @type {string} + * @memberof Task + */ + readonly uid: string; + /** + * + * @type {Array} + * @memberof Task + */ + readonly logs: Array; + /** + * + * @type {Array} + * @memberof Task + */ + readonly previousLogs: Array; + /** + * + * @type {TaskAggregatedStatusEnum} + * @memberof Task + */ + aggregatedStatus: TaskAggregatedStatusEnum; + /** + * + * @type {string} + * @memberof Task + */ + readonly description: string | null; +} + +/** + * Check if a given object implements the Task interface. + */ +export function instanceOfTask(value: object): value is Task { + if (!("actorName" in value) || value["actorName"] === undefined) return false; + if (!("relObjAppLabel" in value) || value["relObjAppLabel"] === undefined) return false; + if (!("relObjModel" in value) || value["relObjModel"] === undefined) return false; + if (!("uid" in value) || value["uid"] === undefined) return false; + if (!("logs" in value) || value["logs"] === undefined) return false; + if (!("previousLogs" in value) || value["previousLogs"] === undefined) return false; + if (!("aggregatedStatus" in value) || value["aggregatedStatus"] === undefined) return false; + if (!("description" in value) || value["description"] === undefined) return false; + return true; +} + +export function TaskFromJSON(json: any): Task { + return TaskFromJSONTyped(json, false); +} + +export function TaskFromJSONTyped(json: any, ignoreDiscriminator: boolean): Task { + if (json == null) { + return json; + } + return { + messageId: json["message_id"] == null ? undefined : json["message_id"], + queueName: json["queue_name"] == null ? undefined : json["queue_name"], + actorName: json["actor_name"], + state: json["state"] == null ? undefined : TaskStatusEnumFromJSON(json["state"]), + mtime: json["mtime"] == null ? undefined : new Date(json["mtime"]), + retries: json["retries"] == null ? undefined : json["retries"], + eta: json["eta"] == null ? undefined : new Date(json["eta"]), + relObjAppLabel: json["rel_obj_app_label"], + relObjModel: json["rel_obj_model"], + relObjId: json["rel_obj_id"] == null ? undefined : json["rel_obj_id"], + uid: json["uid"], + logs: (json["logs"] as Array).map(LogEventFromJSON), + previousLogs: (json["previous_logs"] as Array).map(LogEventFromJSON), + aggregatedStatus: TaskAggregatedStatusEnumFromJSON(json["aggregated_status"]), + description: json["description"], + }; +} + +export function TaskToJSON(json: any): Task { + return TaskToJSONTyped(json, false); +} + +export function TaskToJSONTyped( + value?: Omit< + Task, + "rel_obj_app_label" | "rel_obj_model" | "uid" | "logs" | "previous_logs" | "description" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + message_id: value["messageId"], + queue_name: value["queueName"], + actor_name: value["actorName"], + state: TaskStatusEnumToJSON(value["state"]), + mtime: value["mtime"] == null ? value["mtime"] : value["mtime"].toISOString(), + retries: value["retries"], + eta: value["eta"] == null ? value["eta"] : value["eta"].toISOString(), + rel_obj_id: value["relObjId"], + aggregated_status: TaskAggregatedStatusEnumToJSON(value["aggregatedStatus"]), + }; +} diff --git a/packages/client-ts/src/models/TaskAggregatedStatusEnum.ts b/packages/client-ts/src/models/TaskAggregatedStatusEnum.ts new file mode 100644 index 0000000000..8105d8e162 --- /dev/null +++ b/packages/client-ts/src/models/TaskAggregatedStatusEnum.ts @@ -0,0 +1,66 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const TaskAggregatedStatusEnum = { + Queued: "queued", + Consumed: "consumed", + Preprocess: "preprocess", + Running: "running", + Postprocess: "postprocess", + Rejected: "rejected", + Done: "done", + Info: "info", + Warning: "warning", + Error: "error", + UnknownDefaultOpenApi: "11184809", +} as const; +export type TaskAggregatedStatusEnum = + (typeof TaskAggregatedStatusEnum)[keyof typeof TaskAggregatedStatusEnum]; + +export function instanceOfTaskAggregatedStatusEnum(value: any): boolean { + for (const key in TaskAggregatedStatusEnum) { + if (Object.prototype.hasOwnProperty.call(TaskAggregatedStatusEnum, key)) { + if (TaskAggregatedStatusEnum[key as keyof typeof TaskAggregatedStatusEnum] === value) { + return true; + } + } + } + return false; +} + +export function TaskAggregatedStatusEnumFromJSON(json: any): TaskAggregatedStatusEnum { + return TaskAggregatedStatusEnumFromJSONTyped(json, false); +} + +export function TaskAggregatedStatusEnumFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): TaskAggregatedStatusEnum { + return json as TaskAggregatedStatusEnum; +} + +export function TaskAggregatedStatusEnumToJSON(value?: TaskAggregatedStatusEnum | null): any { + return value as any; +} + +export function TaskAggregatedStatusEnumToJSONTyped( + value: any, + ignoreDiscriminator: boolean, +): TaskAggregatedStatusEnum { + return value as TaskAggregatedStatusEnum; +} diff --git a/packages/client-ts/src/models/TaskStatusEnum.ts b/packages/client-ts/src/models/TaskStatusEnum.ts new file mode 100644 index 0000000000..cf0b8cc403 --- /dev/null +++ b/packages/client-ts/src/models/TaskStatusEnum.ts @@ -0,0 +1,62 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const TaskStatusEnum = { + Queued: "queued", + Consumed: "consumed", + Preprocess: "preprocess", + Running: "running", + Postprocess: "postprocess", + Rejected: "rejected", + Done: "done", + UnknownDefaultOpenApi: "11184809", +} as const; +export type TaskStatusEnum = (typeof TaskStatusEnum)[keyof typeof TaskStatusEnum]; + +export function instanceOfTaskStatusEnum(value: any): boolean { + for (const key in TaskStatusEnum) { + if (Object.prototype.hasOwnProperty.call(TaskStatusEnum, key)) { + if (TaskStatusEnum[key as keyof typeof TaskStatusEnum] === value) { + return true; + } + } + } + return false; +} + +export function TaskStatusEnumFromJSON(json: any): TaskStatusEnum { + return TaskStatusEnumFromJSONTyped(json, false); +} + +export function TaskStatusEnumFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): TaskStatusEnum { + return json as TaskStatusEnum; +} + +export function TaskStatusEnumToJSON(value?: TaskStatusEnum | null): any { + return value as any; +} + +export function TaskStatusEnumToJSONTyped( + value: any, + ignoreDiscriminator: boolean, +): TaskStatusEnum { + return value as TaskStatusEnum; +} diff --git a/packages/client-ts/src/models/TelegramAuthRequest.ts b/packages/client-ts/src/models/TelegramAuthRequest.ts new file mode 100644 index 0000000000..91949170d4 --- /dev/null +++ b/packages/client-ts/src/models/TelegramAuthRequest.ts @@ -0,0 +1,118 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + * @interface TelegramAuthRequest + */ +export interface TelegramAuthRequest { + /** + * + * @type {number} + * @memberof TelegramAuthRequest + */ + id: number; + /** + * + * @type {string} + * @memberof TelegramAuthRequest + */ + firstName?: string; + /** + * + * @type {string} + * @memberof TelegramAuthRequest + */ + lastName?: string; + /** + * + * @type {string} + * @memberof TelegramAuthRequest + */ + username?: string; + /** + * + * @type {string} + * @memberof TelegramAuthRequest + */ + photoUrl?: string; + /** + * + * @type {number} + * @memberof TelegramAuthRequest + */ + authDate: number; + /** + * + * @type {string} + * @memberof TelegramAuthRequest + */ + hash: string; +} + +/** + * Check if a given object implements the TelegramAuthRequest interface. + */ +export function instanceOfTelegramAuthRequest(value: object): value is TelegramAuthRequest { + if (!("id" in value) || value["id"] === undefined) return false; + if (!("authDate" in value) || value["authDate"] === undefined) return false; + if (!("hash" in value) || value["hash"] === undefined) return false; + return true; +} + +export function TelegramAuthRequestFromJSON(json: any): TelegramAuthRequest { + return TelegramAuthRequestFromJSONTyped(json, false); +} + +export function TelegramAuthRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): TelegramAuthRequest { + if (json == null) { + return json; + } + return { + id: json["id"], + firstName: json["first_name"] == null ? undefined : json["first_name"], + lastName: json["last_name"] == null ? undefined : json["last_name"], + username: json["username"] == null ? undefined : json["username"], + photoUrl: json["photo_url"] == null ? undefined : json["photo_url"], + authDate: json["auth_date"], + hash: json["hash"], + }; +} + +export function TelegramAuthRequestToJSON(json: any): TelegramAuthRequest { + return TelegramAuthRequestToJSONTyped(json, false); +} + +export function TelegramAuthRequestToJSONTyped( + value?: TelegramAuthRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + id: value["id"], + first_name: value["firstName"], + last_name: value["lastName"], + username: value["username"], + photo_url: value["photoUrl"], + auth_date: value["authDate"], + hash: value["hash"], + }; +} diff --git a/packages/client-ts/src/models/TelegramChallengeResponseRequest.ts b/packages/client-ts/src/models/TelegramChallengeResponseRequest.ts new file mode 100644 index 0000000000..f3a9ba0150 --- /dev/null +++ b/packages/client-ts/src/models/TelegramChallengeResponseRequest.ts @@ -0,0 +1,132 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Base class for all challenge responses + * @export + * @interface TelegramChallengeResponseRequest + */ +export interface TelegramChallengeResponseRequest { + /** + * + * @type {number} + * @memberof TelegramChallengeResponseRequest + */ + id: number; + /** + * + * @type {string} + * @memberof TelegramChallengeResponseRequest + */ + firstName?: string; + /** + * + * @type {string} + * @memberof TelegramChallengeResponseRequest + */ + lastName?: string; + /** + * + * @type {string} + * @memberof TelegramChallengeResponseRequest + */ + username?: string; + /** + * + * @type {string} + * @memberof TelegramChallengeResponseRequest + */ + photoUrl?: string; + /** + * + * @type {number} + * @memberof TelegramChallengeResponseRequest + */ + authDate: number; + /** + * + * @type {string} + * @memberof TelegramChallengeResponseRequest + */ + hash: string; + /** + * + * @type {string} + * @memberof TelegramChallengeResponseRequest + */ + component?: string; +} + +/** + * Check if a given object implements the TelegramChallengeResponseRequest interface. + */ +export function instanceOfTelegramChallengeResponseRequest( + value: object, +): value is TelegramChallengeResponseRequest { + if (!("id" in value) || value["id"] === undefined) return false; + if (!("authDate" in value) || value["authDate"] === undefined) return false; + if (!("hash" in value) || value["hash"] === undefined) return false; + return true; +} + +export function TelegramChallengeResponseRequestFromJSON( + json: any, +): TelegramChallengeResponseRequest { + return TelegramChallengeResponseRequestFromJSONTyped(json, false); +} + +export function TelegramChallengeResponseRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): TelegramChallengeResponseRequest { + if (json == null) { + return json; + } + return { + id: json["id"], + firstName: json["first_name"] == null ? undefined : json["first_name"], + lastName: json["last_name"] == null ? undefined : json["last_name"], + username: json["username"] == null ? undefined : json["username"], + photoUrl: json["photo_url"] == null ? undefined : json["photo_url"], + authDate: json["auth_date"], + hash: json["hash"], + component: json["component"] == null ? undefined : json["component"], + }; +} + +export function TelegramChallengeResponseRequestToJSON( + json: any, +): TelegramChallengeResponseRequest { + return TelegramChallengeResponseRequestToJSONTyped(json, false); +} + +export function TelegramChallengeResponseRequestToJSONTyped( + value?: TelegramChallengeResponseRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + id: value["id"], + first_name: value["firstName"], + last_name: value["lastName"], + username: value["username"], + photo_url: value["photoUrl"], + auth_date: value["authDate"], + hash: value["hash"], + component: value["component"], + }; +} diff --git a/packages/client-ts/src/models/TelegramLoginChallenge.ts b/packages/client-ts/src/models/TelegramLoginChallenge.ts new file mode 100644 index 0000000000..bb39e9c2fd --- /dev/null +++ b/packages/client-ts/src/models/TelegramLoginChallenge.ts @@ -0,0 +1,107 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { ContextualFlowInfo } from "./ContextualFlowInfo"; +import { ContextualFlowInfoFromJSON, ContextualFlowInfoToJSON } from "./ContextualFlowInfo"; +import type { ErrorDetail } from "./ErrorDetail"; + +/** + * Base login challenge for Identification stage + * @export + * @interface TelegramLoginChallenge + */ +export interface TelegramLoginChallenge { + /** + * + * @type {ContextualFlowInfo} + * @memberof TelegramLoginChallenge + */ + flowInfo?: ContextualFlowInfo; + /** + * + * @type {string} + * @memberof TelegramLoginChallenge + */ + component?: string; + /** + * + * @type {{ [key: string]: Array; }} + * @memberof TelegramLoginChallenge + */ + responseErrors?: { [key: string]: Array }; + /** + * Telegram bot username + * @type {string} + * @memberof TelegramLoginChallenge + */ + botUsername: string; + /** + * + * @type {boolean} + * @memberof TelegramLoginChallenge + */ + requestMessageAccess: boolean; +} + +/** + * Check if a given object implements the TelegramLoginChallenge interface. + */ +export function instanceOfTelegramLoginChallenge(value: object): value is TelegramLoginChallenge { + if (!("botUsername" in value) || value["botUsername"] === undefined) return false; + if (!("requestMessageAccess" in value) || value["requestMessageAccess"] === undefined) + return false; + return true; +} + +export function TelegramLoginChallengeFromJSON(json: any): TelegramLoginChallenge { + return TelegramLoginChallengeFromJSONTyped(json, false); +} + +export function TelegramLoginChallengeFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): TelegramLoginChallenge { + if (json == null) { + return json; + } + return { + flowInfo: + json["flow_info"] == null ? undefined : ContextualFlowInfoFromJSON(json["flow_info"]), + component: json["component"] == null ? undefined : json["component"], + responseErrors: json["response_errors"] == null ? undefined : json["response_errors"], + botUsername: json["bot_username"], + requestMessageAccess: json["request_message_access"], + }; +} + +export function TelegramLoginChallengeToJSON(json: any): TelegramLoginChallenge { + return TelegramLoginChallengeToJSONTyped(json, false); +} + +export function TelegramLoginChallengeToJSONTyped( + value?: TelegramLoginChallenge | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + flow_info: ContextualFlowInfoToJSON(value["flowInfo"]), + component: value["component"], + response_errors: value["responseErrors"], + bot_username: value["botUsername"], + request_message_access: value["requestMessageAccess"], + }; +} diff --git a/packages/client-ts/src/models/TelegramSource.ts b/packages/client-ts/src/models/TelegramSource.ts new file mode 100644 index 0000000000..119fcc5446 --- /dev/null +++ b/packages/client-ts/src/models/TelegramSource.ts @@ -0,0 +1,276 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { PolicyEngineMode } from "./PolicyEngineMode"; +import { PolicyEngineModeFromJSON, PolicyEngineModeToJSON } from "./PolicyEngineMode"; +import type { ThemedUrls } from "./ThemedUrls"; +import { ThemedUrlsFromJSON } from "./ThemedUrls"; +import type { UserMatchingModeEnum } from "./UserMatchingModeEnum"; +import { UserMatchingModeEnumFromJSON, UserMatchingModeEnumToJSON } from "./UserMatchingModeEnum"; + +/** + * Source Serializer + * @export + * @interface TelegramSource + */ +export interface TelegramSource { + /** + * + * @type {string} + * @memberof TelegramSource + */ + readonly pk: string; + /** + * Source's display Name. + * @type {string} + * @memberof TelegramSource + */ + name: string; + /** + * Internal source name, used in URLs. + * @type {string} + * @memberof TelegramSource + */ + slug: string; + /** + * + * @type {boolean} + * @memberof TelegramSource + */ + enabled?: boolean; + /** + * When enabled, this source will be displayed as a prominent button on the login page, instead of a small icon. + * @type {boolean} + * @memberof TelegramSource + */ + promoted?: boolean; + /** + * Flow to use when authenticating existing users. + * @type {string} + * @memberof TelegramSource + */ + authenticationFlow?: string | null; + /** + * Flow to use when enrolling new users. + * @type {string} + * @memberof TelegramSource + */ + enrollmentFlow?: string | null; + /** + * + * @type {Array} + * @memberof TelegramSource + */ + userPropertyMappings?: Array; + /** + * + * @type {Array} + * @memberof TelegramSource + */ + groupPropertyMappings?: Array; + /** + * Get object component so that we know how to edit the object + * @type {string} + * @memberof TelegramSource + */ + readonly component: string; + /** + * Return object's verbose_name + * @type {string} + * @memberof TelegramSource + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof TelegramSource + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof TelegramSource + */ + readonly metaModelName: string; + /** + * + * @type {PolicyEngineMode} + * @memberof TelegramSource + */ + policyEngineMode?: PolicyEngineMode; + /** + * How the source determines if an existing user should be authenticated or a new user enrolled. + * @type {UserMatchingModeEnum} + * @memberof TelegramSource + */ + userMatchingMode?: UserMatchingModeEnum; + /** + * Objects that are managed by authentik. These objects are created and updated automatically. This flag only indicates that an object can be overwritten by migrations. You can still modify the objects via the API, but expect changes to be overwritten in a later update. + * @type {string} + * @memberof TelegramSource + */ + readonly managed: string | null; + /** + * + * @type {string} + * @memberof TelegramSource + */ + userPathTemplate?: string; + /** + * + * @type {string} + * @memberof TelegramSource + */ + icon?: string; + /** + * + * @type {string} + * @memberof TelegramSource + */ + readonly iconUrl: string | null; + /** + * + * @type {ThemedUrls} + * @memberof TelegramSource + */ + readonly iconThemedUrls: ThemedUrls | null; + /** + * Telegram bot username + * @type {string} + * @memberof TelegramSource + */ + botUsername: string; + /** + * Request access to send messages from your bot. + * @type {boolean} + * @memberof TelegramSource + */ + requestMessageAccess?: boolean; + /** + * Flow used before authentication. + * @type {string} + * @memberof TelegramSource + */ + preAuthenticationFlow: string; +} + +/** + * Check if a given object implements the TelegramSource interface. + */ +export function instanceOfTelegramSource(value: object): value is TelegramSource { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("slug" in value) || value["slug"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + if (!("managed" in value) || value["managed"] === undefined) return false; + if (!("iconUrl" in value) || value["iconUrl"] === undefined) return false; + if (!("iconThemedUrls" in value) || value["iconThemedUrls"] === undefined) return false; + if (!("botUsername" in value) || value["botUsername"] === undefined) return false; + if (!("preAuthenticationFlow" in value) || value["preAuthenticationFlow"] === undefined) + return false; + return true; +} + +export function TelegramSourceFromJSON(json: any): TelegramSource { + return TelegramSourceFromJSONTyped(json, false); +} + +export function TelegramSourceFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): TelegramSource { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + slug: json["slug"], + enabled: json["enabled"] == null ? undefined : json["enabled"], + promoted: json["promoted"] == null ? undefined : json["promoted"], + authenticationFlow: + json["authentication_flow"] == null ? undefined : json["authentication_flow"], + enrollmentFlow: json["enrollment_flow"] == null ? undefined : json["enrollment_flow"], + userPropertyMappings: + json["user_property_mappings"] == null ? undefined : json["user_property_mappings"], + groupPropertyMappings: + json["group_property_mappings"] == null ? undefined : json["group_property_mappings"], + component: json["component"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + policyEngineMode: + json["policy_engine_mode"] == null + ? undefined + : PolicyEngineModeFromJSON(json["policy_engine_mode"]), + userMatchingMode: + json["user_matching_mode"] == null + ? undefined + : UserMatchingModeEnumFromJSON(json["user_matching_mode"]), + managed: json["managed"], + userPathTemplate: + json["user_path_template"] == null ? undefined : json["user_path_template"], + icon: json["icon"] == null ? undefined : json["icon"], + iconUrl: json["icon_url"], + iconThemedUrls: ThemedUrlsFromJSON(json["icon_themed_urls"]), + botUsername: json["bot_username"], + requestMessageAccess: + json["request_message_access"] == null ? undefined : json["request_message_access"], + preAuthenticationFlow: json["pre_authentication_flow"], + }; +} + +export function TelegramSourceToJSON(json: any): TelegramSource { + return TelegramSourceToJSONTyped(json, false); +} + +export function TelegramSourceToJSONTyped( + value?: Omit< + TelegramSource, + | "pk" + | "component" + | "verbose_name" + | "verbose_name_plural" + | "meta_model_name" + | "managed" + | "icon_url" + | "icon_themed_urls" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + slug: value["slug"], + enabled: value["enabled"], + promoted: value["promoted"], + authentication_flow: value["authenticationFlow"], + enrollment_flow: value["enrollmentFlow"], + user_property_mappings: value["userPropertyMappings"], + group_property_mappings: value["groupPropertyMappings"], + policy_engine_mode: PolicyEngineModeToJSON(value["policyEngineMode"]), + user_matching_mode: UserMatchingModeEnumToJSON(value["userMatchingMode"]), + user_path_template: value["userPathTemplate"], + icon: value["icon"], + bot_username: value["botUsername"], + request_message_access: value["requestMessageAccess"], + pre_authentication_flow: value["preAuthenticationFlow"], + }; +} diff --git a/packages/client-ts/src/models/TelegramSourcePropertyMapping.ts b/packages/client-ts/src/models/TelegramSourcePropertyMapping.ts new file mode 100644 index 0000000000..40c8312e82 --- /dev/null +++ b/packages/client-ts/src/models/TelegramSourcePropertyMapping.ts @@ -0,0 +1,130 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * TelegramSourcePropertyMapping Serializer + * @export + * @interface TelegramSourcePropertyMapping + */ +export interface TelegramSourcePropertyMapping { + /** + * + * @type {string} + * @memberof TelegramSourcePropertyMapping + */ + readonly pk: string; + /** + * Objects that are managed by authentik. These objects are created and updated automatically. This flag only indicates that an object can be overwritten by migrations. You can still modify the objects via the API, but expect changes to be overwritten in a later update. + * @type {string} + * @memberof TelegramSourcePropertyMapping + */ + managed?: string | null; + /** + * + * @type {string} + * @memberof TelegramSourcePropertyMapping + */ + name: string; + /** + * + * @type {string} + * @memberof TelegramSourcePropertyMapping + */ + expression: string; + /** + * Get object's component so that we know how to edit the object + * @type {string} + * @memberof TelegramSourcePropertyMapping + */ + readonly component: string; + /** + * Return object's verbose_name + * @type {string} + * @memberof TelegramSourcePropertyMapping + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof TelegramSourcePropertyMapping + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof TelegramSourcePropertyMapping + */ + readonly metaModelName: string; +} + +/** + * Check if a given object implements the TelegramSourcePropertyMapping interface. + */ +export function instanceOfTelegramSourcePropertyMapping( + value: object, +): value is TelegramSourcePropertyMapping { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("expression" in value) || value["expression"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + return true; +} + +export function TelegramSourcePropertyMappingFromJSON(json: any): TelegramSourcePropertyMapping { + return TelegramSourcePropertyMappingFromJSONTyped(json, false); +} + +export function TelegramSourcePropertyMappingFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): TelegramSourcePropertyMapping { + if (json == null) { + return json; + } + return { + pk: json["pk"], + managed: json["managed"] == null ? undefined : json["managed"], + name: json["name"], + expression: json["expression"], + component: json["component"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + }; +} + +export function TelegramSourcePropertyMappingToJSON(json: any): TelegramSourcePropertyMapping { + return TelegramSourcePropertyMappingToJSONTyped(json, false); +} + +export function TelegramSourcePropertyMappingToJSONTyped( + value?: Omit< + TelegramSourcePropertyMapping, + "pk" | "component" | "verbose_name" | "verbose_name_plural" | "meta_model_name" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + managed: value["managed"], + name: value["name"], + expression: value["expression"], + }; +} diff --git a/packages/client-ts/src/models/TelegramSourcePropertyMappingRequest.ts b/packages/client-ts/src/models/TelegramSourcePropertyMappingRequest.ts new file mode 100644 index 0000000000..94f5163177 --- /dev/null +++ b/packages/client-ts/src/models/TelegramSourcePropertyMappingRequest.ts @@ -0,0 +1,91 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * TelegramSourcePropertyMapping Serializer + * @export + * @interface TelegramSourcePropertyMappingRequest + */ +export interface TelegramSourcePropertyMappingRequest { + /** + * Objects that are managed by authentik. These objects are created and updated automatically. This flag only indicates that an object can be overwritten by migrations. You can still modify the objects via the API, but expect changes to be overwritten in a later update. + * @type {string} + * @memberof TelegramSourcePropertyMappingRequest + */ + managed?: string | null; + /** + * + * @type {string} + * @memberof TelegramSourcePropertyMappingRequest + */ + name: string; + /** + * + * @type {string} + * @memberof TelegramSourcePropertyMappingRequest + */ + expression: string; +} + +/** + * Check if a given object implements the TelegramSourcePropertyMappingRequest interface. + */ +export function instanceOfTelegramSourcePropertyMappingRequest( + value: object, +): value is TelegramSourcePropertyMappingRequest { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("expression" in value) || value["expression"] === undefined) return false; + return true; +} + +export function TelegramSourcePropertyMappingRequestFromJSON( + json: any, +): TelegramSourcePropertyMappingRequest { + return TelegramSourcePropertyMappingRequestFromJSONTyped(json, false); +} + +export function TelegramSourcePropertyMappingRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): TelegramSourcePropertyMappingRequest { + if (json == null) { + return json; + } + return { + managed: json["managed"] == null ? undefined : json["managed"], + name: json["name"], + expression: json["expression"], + }; +} + +export function TelegramSourcePropertyMappingRequestToJSON( + json: any, +): TelegramSourcePropertyMappingRequest { + return TelegramSourcePropertyMappingRequestToJSONTyped(json, false); +} + +export function TelegramSourcePropertyMappingRequestToJSONTyped( + value?: TelegramSourcePropertyMappingRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + managed: value["managed"], + name: value["name"], + expression: value["expression"], + }; +} diff --git a/packages/client-ts/src/models/TelegramSourceRequest.ts b/packages/client-ts/src/models/TelegramSourceRequest.ts new file mode 100644 index 0000000000..5006591025 --- /dev/null +++ b/packages/client-ts/src/models/TelegramSourceRequest.ts @@ -0,0 +1,209 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { PolicyEngineMode } from "./PolicyEngineMode"; +import { PolicyEngineModeFromJSON, PolicyEngineModeToJSON } from "./PolicyEngineMode"; +import type { UserMatchingModeEnum } from "./UserMatchingModeEnum"; +import { UserMatchingModeEnumFromJSON, UserMatchingModeEnumToJSON } from "./UserMatchingModeEnum"; + +/** + * Source Serializer + * @export + * @interface TelegramSourceRequest + */ +export interface TelegramSourceRequest { + /** + * Source's display Name. + * @type {string} + * @memberof TelegramSourceRequest + */ + name: string; + /** + * Internal source name, used in URLs. + * @type {string} + * @memberof TelegramSourceRequest + */ + slug: string; + /** + * + * @type {boolean} + * @memberof TelegramSourceRequest + */ + enabled?: boolean; + /** + * When enabled, this source will be displayed as a prominent button on the login page, instead of a small icon. + * @type {boolean} + * @memberof TelegramSourceRequest + */ + promoted?: boolean; + /** + * Flow to use when authenticating existing users. + * @type {string} + * @memberof TelegramSourceRequest + */ + authenticationFlow?: string | null; + /** + * Flow to use when enrolling new users. + * @type {string} + * @memberof TelegramSourceRequest + */ + enrollmentFlow?: string | null; + /** + * + * @type {Array} + * @memberof TelegramSourceRequest + */ + userPropertyMappings?: Array; + /** + * + * @type {Array} + * @memberof TelegramSourceRequest + */ + groupPropertyMappings?: Array; + /** + * + * @type {PolicyEngineMode} + * @memberof TelegramSourceRequest + */ + policyEngineMode?: PolicyEngineMode; + /** + * How the source determines if an existing user should be authenticated or a new user enrolled. + * @type {UserMatchingModeEnum} + * @memberof TelegramSourceRequest + */ + userMatchingMode?: UserMatchingModeEnum; + /** + * + * @type {string} + * @memberof TelegramSourceRequest + */ + userPathTemplate?: string; + /** + * + * @type {string} + * @memberof TelegramSourceRequest + */ + icon?: string; + /** + * Telegram bot username + * @type {string} + * @memberof TelegramSourceRequest + */ + botUsername: string; + /** + * Telegram bot token + * @type {string} + * @memberof TelegramSourceRequest + */ + botToken: string; + /** + * Request access to send messages from your bot. + * @type {boolean} + * @memberof TelegramSourceRequest + */ + requestMessageAccess?: boolean; + /** + * Flow used before authentication. + * @type {string} + * @memberof TelegramSourceRequest + */ + preAuthenticationFlow: string; +} + +/** + * Check if a given object implements the TelegramSourceRequest interface. + */ +export function instanceOfTelegramSourceRequest(value: object): value is TelegramSourceRequest { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("slug" in value) || value["slug"] === undefined) return false; + if (!("botUsername" in value) || value["botUsername"] === undefined) return false; + if (!("botToken" in value) || value["botToken"] === undefined) return false; + if (!("preAuthenticationFlow" in value) || value["preAuthenticationFlow"] === undefined) + return false; + return true; +} + +export function TelegramSourceRequestFromJSON(json: any): TelegramSourceRequest { + return TelegramSourceRequestFromJSONTyped(json, false); +} + +export function TelegramSourceRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): TelegramSourceRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + slug: json["slug"], + enabled: json["enabled"] == null ? undefined : json["enabled"], + promoted: json["promoted"] == null ? undefined : json["promoted"], + authenticationFlow: + json["authentication_flow"] == null ? undefined : json["authentication_flow"], + enrollmentFlow: json["enrollment_flow"] == null ? undefined : json["enrollment_flow"], + userPropertyMappings: + json["user_property_mappings"] == null ? undefined : json["user_property_mappings"], + groupPropertyMappings: + json["group_property_mappings"] == null ? undefined : json["group_property_mappings"], + policyEngineMode: + json["policy_engine_mode"] == null + ? undefined + : PolicyEngineModeFromJSON(json["policy_engine_mode"]), + userMatchingMode: + json["user_matching_mode"] == null + ? undefined + : UserMatchingModeEnumFromJSON(json["user_matching_mode"]), + userPathTemplate: + json["user_path_template"] == null ? undefined : json["user_path_template"], + icon: json["icon"] == null ? undefined : json["icon"], + botUsername: json["bot_username"], + botToken: json["bot_token"], + requestMessageAccess: + json["request_message_access"] == null ? undefined : json["request_message_access"], + preAuthenticationFlow: json["pre_authentication_flow"], + }; +} + +export function TelegramSourceRequestToJSON(json: any): TelegramSourceRequest { + return TelegramSourceRequestToJSONTyped(json, false); +} + +export function TelegramSourceRequestToJSONTyped( + value?: TelegramSourceRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + slug: value["slug"], + enabled: value["enabled"], + promoted: value["promoted"], + authentication_flow: value["authenticationFlow"], + enrollment_flow: value["enrollmentFlow"], + user_property_mappings: value["userPropertyMappings"], + group_property_mappings: value["groupPropertyMappings"], + policy_engine_mode: PolicyEngineModeToJSON(value["policyEngineMode"]), + user_matching_mode: UserMatchingModeEnumToJSON(value["userMatchingMode"]), + user_path_template: value["userPathTemplate"], + icon: value["icon"], + bot_username: value["botUsername"], + bot_token: value["botToken"], + request_message_access: value["requestMessageAccess"], + pre_authentication_flow: value["preAuthenticationFlow"], + }; +} diff --git a/packages/client-ts/src/models/Tenant.ts b/packages/client-ts/src/models/Tenant.ts new file mode 100644 index 0000000000..050d7ac6af --- /dev/null +++ b/packages/client-ts/src/models/Tenant.ts @@ -0,0 +1,90 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Tenant Serializer + * @export + * @interface Tenant + */ +export interface Tenant { + /** + * + * @type {string} + * @memberof Tenant + */ + readonly tenantUuid: string; + /** + * + * @type {string} + * @memberof Tenant + */ + schemaName: string; + /** + * + * @type {string} + * @memberof Tenant + */ + name: string; + /** + * + * @type {boolean} + * @memberof Tenant + */ + ready?: boolean; +} + +/** + * Check if a given object implements the Tenant interface. + */ +export function instanceOfTenant(value: object): value is Tenant { + if (!("tenantUuid" in value) || value["tenantUuid"] === undefined) return false; + if (!("schemaName" in value) || value["schemaName"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + return true; +} + +export function TenantFromJSON(json: any): Tenant { + return TenantFromJSONTyped(json, false); +} + +export function TenantFromJSONTyped(json: any, ignoreDiscriminator: boolean): Tenant { + if (json == null) { + return json; + } + return { + tenantUuid: json["tenant_uuid"], + schemaName: json["schema_name"], + name: json["name"], + ready: json["ready"] == null ? undefined : json["ready"], + }; +} + +export function TenantToJSON(json: any): Tenant { + return TenantToJSONTyped(json, false); +} + +export function TenantToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + schema_name: value["schemaName"], + name: value["name"], + ready: value["ready"], + }; +} diff --git a/packages/client-ts/src/models/TenantAdminGroupRequestRequest.ts b/packages/client-ts/src/models/TenantAdminGroupRequestRequest.ts new file mode 100644 index 0000000000..f4da5dc356 --- /dev/null +++ b/packages/client-ts/src/models/TenantAdminGroupRequestRequest.ts @@ -0,0 +1,70 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Tenant admin group creation request serializer + * @export + * @interface TenantAdminGroupRequestRequest + */ +export interface TenantAdminGroupRequestRequest { + /** + * + * @type {string} + * @memberof TenantAdminGroupRequestRequest + */ + user: string; +} + +/** + * Check if a given object implements the TenantAdminGroupRequestRequest interface. + */ +export function instanceOfTenantAdminGroupRequestRequest( + value: object, +): value is TenantAdminGroupRequestRequest { + if (!("user" in value) || value["user"] === undefined) return false; + return true; +} + +export function TenantAdminGroupRequestRequestFromJSON(json: any): TenantAdminGroupRequestRequest { + return TenantAdminGroupRequestRequestFromJSONTyped(json, false); +} + +export function TenantAdminGroupRequestRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): TenantAdminGroupRequestRequest { + if (json == null) { + return json; + } + return { + user: json["user"], + }; +} + +export function TenantAdminGroupRequestRequestToJSON(json: any): TenantAdminGroupRequestRequest { + return TenantAdminGroupRequestRequestToJSONTyped(json, false); +} + +export function TenantAdminGroupRequestRequestToJSONTyped( + value?: TenantAdminGroupRequestRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + user: value["user"], + }; +} diff --git a/packages/client-ts/src/models/TenantRecoveryKeyRequestRequest.ts b/packages/client-ts/src/models/TenantRecoveryKeyRequestRequest.ts new file mode 100644 index 0000000000..eb96a7c3c5 --- /dev/null +++ b/packages/client-ts/src/models/TenantRecoveryKeyRequestRequest.ts @@ -0,0 +1,81 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Tenant recovery key creation request serializer + * @export + * @interface TenantRecoveryKeyRequestRequest + */ +export interface TenantRecoveryKeyRequestRequest { + /** + * + * @type {string} + * @memberof TenantRecoveryKeyRequestRequest + */ + user: string; + /** + * + * @type {number} + * @memberof TenantRecoveryKeyRequestRequest + */ + durationDays: number; +} + +/** + * Check if a given object implements the TenantRecoveryKeyRequestRequest interface. + */ +export function instanceOfTenantRecoveryKeyRequestRequest( + value: object, +): value is TenantRecoveryKeyRequestRequest { + if (!("user" in value) || value["user"] === undefined) return false; + if (!("durationDays" in value) || value["durationDays"] === undefined) return false; + return true; +} + +export function TenantRecoveryKeyRequestRequestFromJSON( + json: any, +): TenantRecoveryKeyRequestRequest { + return TenantRecoveryKeyRequestRequestFromJSONTyped(json, false); +} + +export function TenantRecoveryKeyRequestRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): TenantRecoveryKeyRequestRequest { + if (json == null) { + return json; + } + return { + user: json["user"], + durationDays: json["duration_days"], + }; +} + +export function TenantRecoveryKeyRequestRequestToJSON(json: any): TenantRecoveryKeyRequestRequest { + return TenantRecoveryKeyRequestRequestToJSONTyped(json, false); +} + +export function TenantRecoveryKeyRequestRequestToJSONTyped( + value?: TenantRecoveryKeyRequestRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + user: value["user"], + duration_days: value["durationDays"], + }; +} diff --git a/packages/client-ts/src/models/TenantRecoveryKeyResponse.ts b/packages/client-ts/src/models/TenantRecoveryKeyResponse.ts new file mode 100644 index 0000000000..74d1c4accb --- /dev/null +++ b/packages/client-ts/src/models/TenantRecoveryKeyResponse.ts @@ -0,0 +1,79 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Tenant recovery key creation response serializer + * @export + * @interface TenantRecoveryKeyResponse + */ +export interface TenantRecoveryKeyResponse { + /** + * + * @type {Date} + * @memberof TenantRecoveryKeyResponse + */ + expiry: Date; + /** + * + * @type {string} + * @memberof TenantRecoveryKeyResponse + */ + url: string; +} + +/** + * Check if a given object implements the TenantRecoveryKeyResponse interface. + */ +export function instanceOfTenantRecoveryKeyResponse( + value: object, +): value is TenantRecoveryKeyResponse { + if (!("expiry" in value) || value["expiry"] === undefined) return false; + if (!("url" in value) || value["url"] === undefined) return false; + return true; +} + +export function TenantRecoveryKeyResponseFromJSON(json: any): TenantRecoveryKeyResponse { + return TenantRecoveryKeyResponseFromJSONTyped(json, false); +} + +export function TenantRecoveryKeyResponseFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): TenantRecoveryKeyResponse { + if (json == null) { + return json; + } + return { + expiry: new Date(json["expiry"]), + url: json["url"], + }; +} + +export function TenantRecoveryKeyResponseToJSON(json: any): TenantRecoveryKeyResponse { + return TenantRecoveryKeyResponseToJSONTyped(json, false); +} + +export function TenantRecoveryKeyResponseToJSONTyped( + value?: TenantRecoveryKeyResponse | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + expiry: value["expiry"].toISOString(), + url: value["url"], + }; +} diff --git a/packages/client-ts/src/models/TenantRequest.ts b/packages/client-ts/src/models/TenantRequest.ts new file mode 100644 index 0000000000..b98c8829cb --- /dev/null +++ b/packages/client-ts/src/models/TenantRequest.ts @@ -0,0 +1,82 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Tenant Serializer + * @export + * @interface TenantRequest + */ +export interface TenantRequest { + /** + * + * @type {string} + * @memberof TenantRequest + */ + schemaName: string; + /** + * + * @type {string} + * @memberof TenantRequest + */ + name: string; + /** + * + * @type {boolean} + * @memberof TenantRequest + */ + ready?: boolean; +} + +/** + * Check if a given object implements the TenantRequest interface. + */ +export function instanceOfTenantRequest(value: object): value is TenantRequest { + if (!("schemaName" in value) || value["schemaName"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + return true; +} + +export function TenantRequestFromJSON(json: any): TenantRequest { + return TenantRequestFromJSONTyped(json, false); +} + +export function TenantRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): TenantRequest { + if (json == null) { + return json; + } + return { + schemaName: json["schema_name"], + name: json["name"], + ready: json["ready"] == null ? undefined : json["ready"], + }; +} + +export function TenantRequestToJSON(json: any): TenantRequest { + return TenantRequestToJSONTyped(json, false); +} + +export function TenantRequestToJSONTyped( + value?: TenantRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + schema_name: value["schemaName"], + name: value["name"], + ready: value["ready"], + }; +} diff --git a/packages/client-ts/src/models/ThemedUrls.ts b/packages/client-ts/src/models/ThemedUrls.ts new file mode 100644 index 0000000000..b7c94c5994 --- /dev/null +++ b/packages/client-ts/src/models/ThemedUrls.ts @@ -0,0 +1,72 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Themed URLs - maps theme names to URLs for light and dark themes + * @export + * @interface ThemedUrls + */ +export interface ThemedUrls { + /** + * + * @type {string} + * @memberof ThemedUrls + */ + light?: string | null; + /** + * + * @type {string} + * @memberof ThemedUrls + */ + dark?: string | null; +} + +/** + * Check if a given object implements the ThemedUrls interface. + */ +export function instanceOfThemedUrls(value: object): value is ThemedUrls { + return true; +} + +export function ThemedUrlsFromJSON(json: any): ThemedUrls { + return ThemedUrlsFromJSONTyped(json, false); +} + +export function ThemedUrlsFromJSONTyped(json: any, ignoreDiscriminator: boolean): ThemedUrls { + if (json == null) { + return json; + } + return { + light: json["light"] == null ? undefined : json["light"], + dark: json["dark"] == null ? undefined : json["dark"], + }; +} + +export function ThemedUrlsToJSON(json: any): ThemedUrls { + return ThemedUrlsToJSONTyped(json, false); +} + +export function ThemedUrlsToJSONTyped( + value?: ThemedUrls | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + light: value["light"], + dark: value["dark"], + }; +} diff --git a/packages/client-ts/src/models/Token.ts b/packages/client-ts/src/models/Token.ts new file mode 100644 index 0000000000..724572f36e --- /dev/null +++ b/packages/client-ts/src/models/Token.ts @@ -0,0 +1,134 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { IntentEnum } from "./IntentEnum"; +import { IntentEnumFromJSON, IntentEnumToJSON } from "./IntentEnum"; +import type { User } from "./User"; +import { UserFromJSON } from "./User"; + +/** + * Token Serializer + * @export + * @interface Token + */ +export interface Token { + /** + * + * @type {string} + * @memberof Token + */ + readonly pk: string; + /** + * Objects that are managed by authentik. These objects are created and updated automatically. This flag only indicates that an object can be overwritten by migrations. You can still modify the objects via the API, but expect changes to be overwritten in a later update. + * @type {string} + * @memberof Token + */ + managed?: string | null; + /** + * + * @type {string} + * @memberof Token + */ + identifier: string; + /** + * + * @type {IntentEnum} + * @memberof Token + */ + intent?: IntentEnum; + /** + * + * @type {number} + * @memberof Token + */ + user?: number; + /** + * + * @type {User} + * @memberof Token + */ + readonly userObj: User; + /** + * + * @type {string} + * @memberof Token + */ + description?: string; + /** + * + * @type {Date} + * @memberof Token + */ + expires?: Date | null; + /** + * + * @type {boolean} + * @memberof Token + */ + expiring?: boolean; +} + +/** + * Check if a given object implements the Token interface. + */ +export function instanceOfToken(value: object): value is Token { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("identifier" in value) || value["identifier"] === undefined) return false; + if (!("userObj" in value) || value["userObj"] === undefined) return false; + return true; +} + +export function TokenFromJSON(json: any): Token { + return TokenFromJSONTyped(json, false); +} + +export function TokenFromJSONTyped(json: any, ignoreDiscriminator: boolean): Token { + if (json == null) { + return json; + } + return { + pk: json["pk"], + managed: json["managed"] == null ? undefined : json["managed"], + identifier: json["identifier"], + intent: json["intent"] == null ? undefined : IntentEnumFromJSON(json["intent"]), + user: json["user"] == null ? undefined : json["user"], + userObj: UserFromJSON(json["user_obj"]), + description: json["description"] == null ? undefined : json["description"], + expires: json["expires"] == null ? undefined : new Date(json["expires"]), + expiring: json["expiring"] == null ? undefined : json["expiring"], + }; +} + +export function TokenToJSON(json: any): Token { + return TokenToJSONTyped(json, false); +} + +export function TokenToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + managed: value["managed"], + identifier: value["identifier"], + intent: IntentEnumToJSON(value["intent"]), + user: value["user"], + description: value["description"], + expires: value["expires"] == null ? value["expires"] : value["expires"].toISOString(), + expiring: value["expiring"], + }; +} diff --git a/packages/client-ts/src/models/TokenModel.ts b/packages/client-ts/src/models/TokenModel.ts new file mode 100644 index 0000000000..dd73134a2c --- /dev/null +++ b/packages/client-ts/src/models/TokenModel.ts @@ -0,0 +1,128 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Provider } from "./Provider"; +import { ProviderFromJSON, ProviderToJSON } from "./Provider"; +import type { User } from "./User"; +import { UserFromJSON, UserToJSON } from "./User"; + +/** + * Serializer for BaseGrantModel and RefreshToken + * @export + * @interface TokenModel + */ +export interface TokenModel { + /** + * + * @type {number} + * @memberof TokenModel + */ + readonly pk: number; + /** + * + * @type {Provider} + * @memberof TokenModel + */ + provider: Provider; + /** + * + * @type {User} + * @memberof TokenModel + */ + user: User; + /** + * Check if token is expired yet. + * @type {boolean} + * @memberof TokenModel + */ + readonly isExpired: boolean; + /** + * + * @type {Date} + * @memberof TokenModel + */ + expires?: Date | null; + /** + * + * @type {Array} + * @memberof TokenModel + */ + scope: Array; + /** + * Get the token's id_token as JSON String + * @type {string} + * @memberof TokenModel + */ + readonly idToken: string; + /** + * + * @type {boolean} + * @memberof TokenModel + */ + revoked?: boolean; +} + +/** + * Check if a given object implements the TokenModel interface. + */ +export function instanceOfTokenModel(value: object): value is TokenModel { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("provider" in value) || value["provider"] === undefined) return false; + if (!("user" in value) || value["user"] === undefined) return false; + if (!("isExpired" in value) || value["isExpired"] === undefined) return false; + if (!("scope" in value) || value["scope"] === undefined) return false; + if (!("idToken" in value) || value["idToken"] === undefined) return false; + return true; +} + +export function TokenModelFromJSON(json: any): TokenModel { + return TokenModelFromJSONTyped(json, false); +} + +export function TokenModelFromJSONTyped(json: any, ignoreDiscriminator: boolean): TokenModel { + if (json == null) { + return json; + } + return { + pk: json["pk"], + provider: ProviderFromJSON(json["provider"]), + user: UserFromJSON(json["user"]), + isExpired: json["is_expired"], + expires: json["expires"] == null ? undefined : new Date(json["expires"]), + scope: json["scope"], + idToken: json["id_token"], + revoked: json["revoked"] == null ? undefined : json["revoked"], + }; +} + +export function TokenModelToJSON(json: any): TokenModel { + return TokenModelToJSONTyped(json, false); +} + +export function TokenModelToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + provider: ProviderToJSON(value["provider"]), + user: UserToJSON(value["user"]), + expires: value["expires"] == null ? value["expires"] : value["expires"].toISOString(), + scope: value["scope"], + revoked: value["revoked"], + }; +} diff --git a/packages/client-ts/src/models/TokenRequest.ts b/packages/client-ts/src/models/TokenRequest.ts new file mode 100644 index 0000000000..770762b201 --- /dev/null +++ b/packages/client-ts/src/models/TokenRequest.ts @@ -0,0 +1,116 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { IntentEnum } from "./IntentEnum"; +import { IntentEnumFromJSON, IntentEnumToJSON } from "./IntentEnum"; + +/** + * Token Serializer + * @export + * @interface TokenRequest + */ +export interface TokenRequest { + /** + * Objects that are managed by authentik. These objects are created and updated automatically. This flag only indicates that an object can be overwritten by migrations. You can still modify the objects via the API, but expect changes to be overwritten in a later update. + * @type {string} + * @memberof TokenRequest + */ + managed?: string | null; + /** + * + * @type {string} + * @memberof TokenRequest + */ + identifier: string; + /** + * + * @type {IntentEnum} + * @memberof TokenRequest + */ + intent?: IntentEnum; + /** + * + * @type {number} + * @memberof TokenRequest + */ + user?: number; + /** + * + * @type {string} + * @memberof TokenRequest + */ + description?: string; + /** + * + * @type {Date} + * @memberof TokenRequest + */ + expires?: Date | null; + /** + * + * @type {boolean} + * @memberof TokenRequest + */ + expiring?: boolean; +} + +/** + * Check if a given object implements the TokenRequest interface. + */ +export function instanceOfTokenRequest(value: object): value is TokenRequest { + if (!("identifier" in value) || value["identifier"] === undefined) return false; + return true; +} + +export function TokenRequestFromJSON(json: any): TokenRequest { + return TokenRequestFromJSONTyped(json, false); +} + +export function TokenRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): TokenRequest { + if (json == null) { + return json; + } + return { + managed: json["managed"] == null ? undefined : json["managed"], + identifier: json["identifier"], + intent: json["intent"] == null ? undefined : IntentEnumFromJSON(json["intent"]), + user: json["user"] == null ? undefined : json["user"], + description: json["description"] == null ? undefined : json["description"], + expires: json["expires"] == null ? undefined : new Date(json["expires"]), + expiring: json["expiring"] == null ? undefined : json["expiring"], + }; +} + +export function TokenRequestToJSON(json: any): TokenRequest { + return TokenRequestToJSONTyped(json, false); +} + +export function TokenRequestToJSONTyped( + value?: TokenRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + managed: value["managed"], + identifier: value["identifier"], + intent: IntentEnumToJSON(value["intent"]), + user: value["user"], + description: value["description"], + expires: value["expires"] == null ? value["expires"] : value["expires"].toISOString(), + expiring: value["expiring"], + }; +} diff --git a/packages/client-ts/src/models/TokenSetKeyRequest.ts b/packages/client-ts/src/models/TokenSetKeyRequest.ts new file mode 100644 index 0000000000..4101452df5 --- /dev/null +++ b/packages/client-ts/src/models/TokenSetKeyRequest.ts @@ -0,0 +1,68 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Set token's key + * @export + * @interface TokenSetKeyRequest + */ +export interface TokenSetKeyRequest { + /** + * + * @type {string} + * @memberof TokenSetKeyRequest + */ + key: string; +} + +/** + * Check if a given object implements the TokenSetKeyRequest interface. + */ +export function instanceOfTokenSetKeyRequest(value: object): value is TokenSetKeyRequest { + if (!("key" in value) || value["key"] === undefined) return false; + return true; +} + +export function TokenSetKeyRequestFromJSON(json: any): TokenSetKeyRequest { + return TokenSetKeyRequestFromJSONTyped(json, false); +} + +export function TokenSetKeyRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): TokenSetKeyRequest { + if (json == null) { + return json; + } + return { + key: json["key"], + }; +} + +export function TokenSetKeyRequestToJSON(json: any): TokenSetKeyRequest { + return TokenSetKeyRequestToJSONTyped(json, false); +} + +export function TokenSetKeyRequestToJSONTyped( + value?: TokenSetKeyRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + key: value["key"], + }; +} diff --git a/packages/client-ts/src/models/TokenView.ts b/packages/client-ts/src/models/TokenView.ts new file mode 100644 index 0000000000..3b612ea262 --- /dev/null +++ b/packages/client-ts/src/models/TokenView.ts @@ -0,0 +1,63 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Show token's current key + * @export + * @interface TokenView + */ +export interface TokenView { + /** + * + * @type {string} + * @memberof TokenView + */ + readonly key: string; +} + +/** + * Check if a given object implements the TokenView interface. + */ +export function instanceOfTokenView(value: object): value is TokenView { + if (!("key" in value) || value["key"] === undefined) return false; + return true; +} + +export function TokenViewFromJSON(json: any): TokenView { + return TokenViewFromJSONTyped(json, false); +} + +export function TokenViewFromJSONTyped(json: any, ignoreDiscriminator: boolean): TokenView { + if (json == null) { + return json; + } + return { + key: json["key"], + }; +} + +export function TokenViewToJSON(json: any): TokenView { + return TokenViewToJSONTyped(json, false); +} + +export function TokenViewToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return {}; +} diff --git a/packages/client-ts/src/models/TransactionApplicationRequest.ts b/packages/client-ts/src/models/TransactionApplicationRequest.ts new file mode 100644 index 0000000000..d6ad5177cc --- /dev/null +++ b/packages/client-ts/src/models/TransactionApplicationRequest.ts @@ -0,0 +1,118 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { ApplicationRequest } from "./ApplicationRequest"; +import { ApplicationRequestFromJSON, ApplicationRequestToJSON } from "./ApplicationRequest"; +import type { ModelRequest } from "./ModelRequest"; +import { ModelRequestFromJSON, ModelRequestToJSON } from "./ModelRequest"; +import type { ProviderModelEnum } from "./ProviderModelEnum"; +import { ProviderModelEnumFromJSON, ProviderModelEnumToJSON } from "./ProviderModelEnum"; +import type { TransactionPolicyBindingRequest } from "./TransactionPolicyBindingRequest"; +import { + TransactionPolicyBindingRequestFromJSON, + TransactionPolicyBindingRequestToJSON, +} from "./TransactionPolicyBindingRequest"; + +/** + * Serializer for creating a provider and an application in one transaction + * @export + * @interface TransactionApplicationRequest + */ +export interface TransactionApplicationRequest { + /** + * + * @type {ApplicationRequest} + * @memberof TransactionApplicationRequest + */ + app: ApplicationRequest; + /** + * + * @type {ProviderModelEnum} + * @memberof TransactionApplicationRequest + */ + providerModel: ProviderModelEnum; + /** + * + * @type {ModelRequest} + * @memberof TransactionApplicationRequest + */ + provider: ModelRequest; + /** + * + * @type {Array} + * @memberof TransactionApplicationRequest + */ + policyBindings?: Array; +} + +/** + * Check if a given object implements the TransactionApplicationRequest interface. + */ +export function instanceOfTransactionApplicationRequest( + value: object, +): value is TransactionApplicationRequest { + if (!("app" in value) || value["app"] === undefined) return false; + if (!("providerModel" in value) || value["providerModel"] === undefined) return false; + if (!("provider" in value) || value["provider"] === undefined) return false; + return true; +} + +export function TransactionApplicationRequestFromJSON(json: any): TransactionApplicationRequest { + return TransactionApplicationRequestFromJSONTyped(json, false); +} + +export function TransactionApplicationRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): TransactionApplicationRequest { + if (json == null) { + return json; + } + return { + app: ApplicationRequestFromJSON(json["app"]), + providerModel: ProviderModelEnumFromJSON(json["provider_model"]), + provider: ModelRequestFromJSON(json["provider"]), + policyBindings: + json["policy_bindings"] == null + ? undefined + : (json["policy_bindings"] as Array).map( + TransactionPolicyBindingRequestFromJSON, + ), + }; +} + +export function TransactionApplicationRequestToJSON(json: any): TransactionApplicationRequest { + return TransactionApplicationRequestToJSONTyped(json, false); +} + +export function TransactionApplicationRequestToJSONTyped( + value?: TransactionApplicationRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + app: ApplicationRequestToJSON(value["app"]), + provider_model: ProviderModelEnumToJSON(value["providerModel"]), + provider: ModelRequestToJSON(value["provider"]), + policy_bindings: + value["policyBindings"] == null + ? undefined + : (value["policyBindings"] as Array).map( + TransactionPolicyBindingRequestToJSON, + ), + }; +} diff --git a/packages/client-ts/src/models/TransactionApplicationResponse.ts b/packages/client-ts/src/models/TransactionApplicationResponse.ts new file mode 100644 index 0000000000..9c1a00c055 --- /dev/null +++ b/packages/client-ts/src/models/TransactionApplicationResponse.ts @@ -0,0 +1,79 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Transactional creation response + * @export + * @interface TransactionApplicationResponse + */ +export interface TransactionApplicationResponse { + /** + * + * @type {boolean} + * @memberof TransactionApplicationResponse + */ + applied: boolean; + /** + * + * @type {Array} + * @memberof TransactionApplicationResponse + */ + logs: Array; +} + +/** + * Check if a given object implements the TransactionApplicationResponse interface. + */ +export function instanceOfTransactionApplicationResponse( + value: object, +): value is TransactionApplicationResponse { + if (!("applied" in value) || value["applied"] === undefined) return false; + if (!("logs" in value) || value["logs"] === undefined) return false; + return true; +} + +export function TransactionApplicationResponseFromJSON(json: any): TransactionApplicationResponse { + return TransactionApplicationResponseFromJSONTyped(json, false); +} + +export function TransactionApplicationResponseFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): TransactionApplicationResponse { + if (json == null) { + return json; + } + return { + applied: json["applied"], + logs: json["logs"], + }; +} + +export function TransactionApplicationResponseToJSON(json: any): TransactionApplicationResponse { + return TransactionApplicationResponseToJSONTyped(json, false); +} + +export function TransactionApplicationResponseToJSONTyped( + value?: TransactionApplicationResponse | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + applied: value["applied"], + logs: value["logs"], + }; +} diff --git a/packages/client-ts/src/models/TransactionPolicyBindingRequest.ts b/packages/client-ts/src/models/TransactionPolicyBindingRequest.ts new file mode 100644 index 0000000000..ff997279c5 --- /dev/null +++ b/packages/client-ts/src/models/TransactionPolicyBindingRequest.ts @@ -0,0 +1,128 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * PolicyBindingSerializer which does not require target as target is set implicitly + * @export + * @interface TransactionPolicyBindingRequest + */ +export interface TransactionPolicyBindingRequest { + /** + * + * @type {string} + * @memberof TransactionPolicyBindingRequest + */ + policy?: string | null; + /** + * + * @type {string} + * @memberof TransactionPolicyBindingRequest + */ + group?: string | null; + /** + * + * @type {number} + * @memberof TransactionPolicyBindingRequest + */ + user?: number | null; + /** + * Negates the outcome of the policy. Messages are unaffected. + * @type {boolean} + * @memberof TransactionPolicyBindingRequest + */ + negate?: boolean; + /** + * + * @type {boolean} + * @memberof TransactionPolicyBindingRequest + */ + enabled?: boolean; + /** + * + * @type {number} + * @memberof TransactionPolicyBindingRequest + */ + order: number; + /** + * Timeout after which Policy execution is terminated. + * @type {number} + * @memberof TransactionPolicyBindingRequest + */ + timeout?: number; + /** + * Result if the Policy execution fails. + * @type {boolean} + * @memberof TransactionPolicyBindingRequest + */ + failureResult?: boolean; +} + +/** + * Check if a given object implements the TransactionPolicyBindingRequest interface. + */ +export function instanceOfTransactionPolicyBindingRequest( + value: object, +): value is TransactionPolicyBindingRequest { + if (!("order" in value) || value["order"] === undefined) return false; + return true; +} + +export function TransactionPolicyBindingRequestFromJSON( + json: any, +): TransactionPolicyBindingRequest { + return TransactionPolicyBindingRequestFromJSONTyped(json, false); +} + +export function TransactionPolicyBindingRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): TransactionPolicyBindingRequest { + if (json == null) { + return json; + } + return { + policy: json["policy"] == null ? undefined : json["policy"], + group: json["group"] == null ? undefined : json["group"], + user: json["user"] == null ? undefined : json["user"], + negate: json["negate"] == null ? undefined : json["negate"], + enabled: json["enabled"] == null ? undefined : json["enabled"], + order: json["order"], + timeout: json["timeout"] == null ? undefined : json["timeout"], + failureResult: json["failure_result"] == null ? undefined : json["failure_result"], + }; +} + +export function TransactionPolicyBindingRequestToJSON(json: any): TransactionPolicyBindingRequest { + return TransactionPolicyBindingRequestToJSONTyped(json, false); +} + +export function TransactionPolicyBindingRequestToJSONTyped( + value?: TransactionPolicyBindingRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + policy: value["policy"], + group: value["group"], + user: value["user"], + negate: value["negate"], + enabled: value["enabled"], + order: value["order"], + timeout: value["timeout"], + failure_result: value["failureResult"], + }; +} diff --git a/packages/client-ts/src/models/TransportModeEnum.ts b/packages/client-ts/src/models/TransportModeEnum.ts new file mode 100644 index 0000000000..eaa7c3b542 --- /dev/null +++ b/packages/client-ts/src/models/TransportModeEnum.ts @@ -0,0 +1,59 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const TransportModeEnum = { + Local: "local", + Webhook: "webhook", + WebhookSlack: "webhook_slack", + Email: "email", + UnknownDefaultOpenApi: "11184809", +} as const; +export type TransportModeEnum = (typeof TransportModeEnum)[keyof typeof TransportModeEnum]; + +export function instanceOfTransportModeEnum(value: any): boolean { + for (const key in TransportModeEnum) { + if (Object.prototype.hasOwnProperty.call(TransportModeEnum, key)) { + if (TransportModeEnum[key as keyof typeof TransportModeEnum] === value) { + return true; + } + } + } + return false; +} + +export function TransportModeEnumFromJSON(json: any): TransportModeEnum { + return TransportModeEnumFromJSONTyped(json, false); +} + +export function TransportModeEnumFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): TransportModeEnum { + return json as TransportModeEnum; +} + +export function TransportModeEnumToJSON(value?: TransportModeEnum | null): any { + return value as any; +} + +export function TransportModeEnumToJSONTyped( + value: any, + ignoreDiscriminator: boolean, +): TransportModeEnum { + return value as TransportModeEnum; +} diff --git a/packages/client-ts/src/models/TypeCreate.ts b/packages/client-ts/src/models/TypeCreate.ts new file mode 100644 index 0000000000..eaed992ce9 --- /dev/null +++ b/packages/client-ts/src/models/TypeCreate.ts @@ -0,0 +1,117 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Types of an object that can be created + * @export + * @interface TypeCreate + */ +export interface TypeCreate { + /** + * + * @type {string} + * @memberof TypeCreate + */ + name: string; + /** + * + * @type {string} + * @memberof TypeCreate + */ + description: string; + /** + * + * @type {string} + * @memberof TypeCreate + */ + component: string; + /** + * + * @type {string} + * @memberof TypeCreate + */ + modelName: string; + /** + * + * @type {string} + * @memberof TypeCreate + */ + iconUrl?: string; + /** + * + * @type {boolean} + * @memberof TypeCreate + */ + requiresEnterprise?: boolean; + /** + * + * @type {boolean} + * @memberof TypeCreate + */ + deprecated?: boolean; +} + +/** + * Check if a given object implements the TypeCreate interface. + */ +export function instanceOfTypeCreate(value: object): value is TypeCreate { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("description" in value) || value["description"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if (!("modelName" in value) || value["modelName"] === undefined) return false; + return true; +} + +export function TypeCreateFromJSON(json: any): TypeCreate { + return TypeCreateFromJSONTyped(json, false); +} + +export function TypeCreateFromJSONTyped(json: any, ignoreDiscriminator: boolean): TypeCreate { + if (json == null) { + return json; + } + return { + name: json["name"], + description: json["description"], + component: json["component"], + modelName: json["model_name"], + iconUrl: json["icon_url"] == null ? undefined : json["icon_url"], + requiresEnterprise: + json["requires_enterprise"] == null ? undefined : json["requires_enterprise"], + deprecated: json["deprecated"] == null ? undefined : json["deprecated"], + }; +} + +export function TypeCreateToJSON(json: any): TypeCreate { + return TypeCreateToJSONTyped(json, false); +} + +export function TypeCreateToJSONTyped( + value?: TypeCreate | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + description: value["description"], + component: value["component"], + model_name: value["modelName"], + icon_url: value["iconUrl"], + requires_enterprise: value["requiresEnterprise"], + deprecated: value["deprecated"], + }; +} diff --git a/packages/client-ts/src/models/UiThemeEnum.ts b/packages/client-ts/src/models/UiThemeEnum.ts new file mode 100644 index 0000000000..0bca8a119b --- /dev/null +++ b/packages/client-ts/src/models/UiThemeEnum.ts @@ -0,0 +1,52 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const UiThemeEnum = { + Automatic: "automatic", + Light: "light", + Dark: "dark", + UnknownDefaultOpenApi: "11184809", +} as const; +export type UiThemeEnum = (typeof UiThemeEnum)[keyof typeof UiThemeEnum]; + +export function instanceOfUiThemeEnum(value: any): boolean { + for (const key in UiThemeEnum) { + if (Object.prototype.hasOwnProperty.call(UiThemeEnum, key)) { + if (UiThemeEnum[key as keyof typeof UiThemeEnum] === value) { + return true; + } + } + } + return false; +} + +export function UiThemeEnumFromJSON(json: any): UiThemeEnum { + return UiThemeEnumFromJSONTyped(json, false); +} + +export function UiThemeEnumFromJSONTyped(json: any, ignoreDiscriminator: boolean): UiThemeEnum { + return json as UiThemeEnum; +} + +export function UiThemeEnumToJSON(value?: UiThemeEnum | null): any { + return value as any; +} + +export function UiThemeEnumToJSONTyped(value: any, ignoreDiscriminator: boolean): UiThemeEnum { + return value as UiThemeEnum; +} diff --git a/packages/client-ts/src/models/UniquePasswordPolicy.ts b/packages/client-ts/src/models/UniquePasswordPolicy.ts new file mode 100644 index 0000000000..b8ed2e7fd3 --- /dev/null +++ b/packages/client-ts/src/models/UniquePasswordPolicy.ts @@ -0,0 +1,144 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Password Uniqueness Policy Serializer + * @export + * @interface UniquePasswordPolicy + */ +export interface UniquePasswordPolicy { + /** + * + * @type {string} + * @memberof UniquePasswordPolicy + */ + readonly pk: string; + /** + * + * @type {string} + * @memberof UniquePasswordPolicy + */ + name: string; + /** + * When this option is enabled, all executions of this policy will be logged. By default, only execution errors are logged. + * @type {boolean} + * @memberof UniquePasswordPolicy + */ + executionLogging?: boolean; + /** + * Get object component so that we know how to edit the object + * @type {string} + * @memberof UniquePasswordPolicy + */ + readonly component: string; + /** + * Return object's verbose_name + * @type {string} + * @memberof UniquePasswordPolicy + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof UniquePasswordPolicy + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof UniquePasswordPolicy + */ + readonly metaModelName: string; + /** + * Return objects policy is bound to + * @type {number} + * @memberof UniquePasswordPolicy + */ + readonly boundTo: number; + /** + * Field key to check, field keys defined in Prompt stages are available. + * @type {string} + * @memberof UniquePasswordPolicy + */ + passwordField?: string; + /** + * Number of passwords to check against. + * @type {number} + * @memberof UniquePasswordPolicy + */ + numHistoricalPasswords?: number; +} + +/** + * Check if a given object implements the UniquePasswordPolicy interface. + */ +export function instanceOfUniquePasswordPolicy(value: object): value is UniquePasswordPolicy { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + if (!("boundTo" in value) || value["boundTo"] === undefined) return false; + return true; +} + +export function UniquePasswordPolicyFromJSON(json: any): UniquePasswordPolicy { + return UniquePasswordPolicyFromJSONTyped(json, false); +} + +export function UniquePasswordPolicyFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): UniquePasswordPolicy { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + executionLogging: json["execution_logging"] == null ? undefined : json["execution_logging"], + component: json["component"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + boundTo: json["bound_to"], + passwordField: json["password_field"] == null ? undefined : json["password_field"], + numHistoricalPasswords: + json["num_historical_passwords"] == null ? undefined : json["num_historical_passwords"], + }; +} + +export function UniquePasswordPolicyToJSON(json: any): UniquePasswordPolicy { + return UniquePasswordPolicyToJSONTyped(json, false); +} + +export function UniquePasswordPolicyToJSONTyped( + value?: Omit< + UniquePasswordPolicy, + "pk" | "component" | "verbose_name" | "verbose_name_plural" | "meta_model_name" | "bound_to" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + execution_logging: value["executionLogging"], + password_field: value["passwordField"], + num_historical_passwords: value["numHistoricalPasswords"], + }; +} diff --git a/packages/client-ts/src/models/UniquePasswordPolicyRequest.ts b/packages/client-ts/src/models/UniquePasswordPolicyRequest.ts new file mode 100644 index 0000000000..573f086eb5 --- /dev/null +++ b/packages/client-ts/src/models/UniquePasswordPolicyRequest.ts @@ -0,0 +1,95 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Password Uniqueness Policy Serializer + * @export + * @interface UniquePasswordPolicyRequest + */ +export interface UniquePasswordPolicyRequest { + /** + * + * @type {string} + * @memberof UniquePasswordPolicyRequest + */ + name: string; + /** + * When this option is enabled, all executions of this policy will be logged. By default, only execution errors are logged. + * @type {boolean} + * @memberof UniquePasswordPolicyRequest + */ + executionLogging?: boolean; + /** + * Field key to check, field keys defined in Prompt stages are available. + * @type {string} + * @memberof UniquePasswordPolicyRequest + */ + passwordField?: string; + /** + * Number of passwords to check against. + * @type {number} + * @memberof UniquePasswordPolicyRequest + */ + numHistoricalPasswords?: number; +} + +/** + * Check if a given object implements the UniquePasswordPolicyRequest interface. + */ +export function instanceOfUniquePasswordPolicyRequest( + value: object, +): value is UniquePasswordPolicyRequest { + if (!("name" in value) || value["name"] === undefined) return false; + return true; +} + +export function UniquePasswordPolicyRequestFromJSON(json: any): UniquePasswordPolicyRequest { + return UniquePasswordPolicyRequestFromJSONTyped(json, false); +} + +export function UniquePasswordPolicyRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): UniquePasswordPolicyRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + executionLogging: json["execution_logging"] == null ? undefined : json["execution_logging"], + passwordField: json["password_field"] == null ? undefined : json["password_field"], + numHistoricalPasswords: + json["num_historical_passwords"] == null ? undefined : json["num_historical_passwords"], + }; +} + +export function UniquePasswordPolicyRequestToJSON(json: any): UniquePasswordPolicyRequest { + return UniquePasswordPolicyRequestToJSONTyped(json, false); +} + +export function UniquePasswordPolicyRequestToJSONTyped( + value?: UniquePasswordPolicyRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + execution_logging: value["executionLogging"], + password_field: value["passwordField"], + num_historical_passwords: value["numHistoricalPasswords"], + }; +} diff --git a/packages/client-ts/src/models/UsageEnum.ts b/packages/client-ts/src/models/UsageEnum.ts new file mode 100644 index 0000000000..62d65e06fd --- /dev/null +++ b/packages/client-ts/src/models/UsageEnum.ts @@ -0,0 +1,50 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const UsageEnum = { + Media: "media", + UnknownDefaultOpenApi: "11184809", +} as const; +export type UsageEnum = (typeof UsageEnum)[keyof typeof UsageEnum]; + +export function instanceOfUsageEnum(value: any): boolean { + for (const key in UsageEnum) { + if (Object.prototype.hasOwnProperty.call(UsageEnum, key)) { + if (UsageEnum[key as keyof typeof UsageEnum] === value) { + return true; + } + } + } + return false; +} + +export function UsageEnumFromJSON(json: any): UsageEnum { + return UsageEnumFromJSONTyped(json, false); +} + +export function UsageEnumFromJSONTyped(json: any, ignoreDiscriminator: boolean): UsageEnum { + return json as UsageEnum; +} + +export function UsageEnumToJSON(value?: UsageEnum | null): any { + return value as any; +} + +export function UsageEnumToJSONTyped(value: any, ignoreDiscriminator: boolean): UsageEnum { + return value as UsageEnum; +} diff --git a/packages/client-ts/src/models/UsedBy.ts b/packages/client-ts/src/models/UsedBy.ts new file mode 100644 index 0000000000..d8a2a43855 --- /dev/null +++ b/packages/client-ts/src/models/UsedBy.ts @@ -0,0 +1,104 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { UsedByActionEnum } from "./UsedByActionEnum"; +import { UsedByActionEnumFromJSON, UsedByActionEnumToJSON } from "./UsedByActionEnum"; + +/** + * A list of all objects referencing the queried object + * @export + * @interface UsedBy + */ +export interface UsedBy { + /** + * + * @type {string} + * @memberof UsedBy + */ + app: string; + /** + * + * @type {string} + * @memberof UsedBy + */ + modelName: string; + /** + * + * @type {string} + * @memberof UsedBy + */ + pk: string; + /** + * + * @type {string} + * @memberof UsedBy + */ + name: string; + /** + * + * @type {UsedByActionEnum} + * @memberof UsedBy + */ + action: UsedByActionEnum; +} + +/** + * Check if a given object implements the UsedBy interface. + */ +export function instanceOfUsedBy(value: object): value is UsedBy { + if (!("app" in value) || value["app"] === undefined) return false; + if (!("modelName" in value) || value["modelName"] === undefined) return false; + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("action" in value) || value["action"] === undefined) return false; + return true; +} + +export function UsedByFromJSON(json: any): UsedBy { + return UsedByFromJSONTyped(json, false); +} + +export function UsedByFromJSONTyped(json: any, ignoreDiscriminator: boolean): UsedBy { + if (json == null) { + return json; + } + return { + app: json["app"], + modelName: json["model_name"], + pk: json["pk"], + name: json["name"], + action: UsedByActionEnumFromJSON(json["action"]), + }; +} + +export function UsedByToJSON(json: any): UsedBy { + return UsedByToJSONTyped(json, false); +} + +export function UsedByToJSONTyped( + value?: UsedBy | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + app: value["app"], + model_name: value["modelName"], + pk: value["pk"], + name: value["name"], + action: UsedByActionEnumToJSON(value["action"]), + }; +} diff --git a/packages/client-ts/src/models/UsedByActionEnum.ts b/packages/client-ts/src/models/UsedByActionEnum.ts new file mode 100644 index 0000000000..ae5ec6be3d --- /dev/null +++ b/packages/client-ts/src/models/UsedByActionEnum.ts @@ -0,0 +1,60 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const UsedByActionEnum = { + Cascade: "cascade", + CascadeMany: "cascade_many", + SetNull: "set_null", + SetDefault: "set_default", + LeftDangling: "left_dangling", + UnknownDefaultOpenApi: "11184809", +} as const; +export type UsedByActionEnum = (typeof UsedByActionEnum)[keyof typeof UsedByActionEnum]; + +export function instanceOfUsedByActionEnum(value: any): boolean { + for (const key in UsedByActionEnum) { + if (Object.prototype.hasOwnProperty.call(UsedByActionEnum, key)) { + if (UsedByActionEnum[key as keyof typeof UsedByActionEnum] === value) { + return true; + } + } + } + return false; +} + +export function UsedByActionEnumFromJSON(json: any): UsedByActionEnum { + return UsedByActionEnumFromJSONTyped(json, false); +} + +export function UsedByActionEnumFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): UsedByActionEnum { + return json as UsedByActionEnum; +} + +export function UsedByActionEnumToJSON(value?: UsedByActionEnum | null): any { + return value as any; +} + +export function UsedByActionEnumToJSONTyped( + value: any, + ignoreDiscriminator: boolean, +): UsedByActionEnum { + return value as UsedByActionEnum; +} diff --git a/packages/client-ts/src/models/User.ts b/packages/client-ts/src/models/User.ts new file mode 100644 index 0000000000..e5e41531fa --- /dev/null +++ b/packages/client-ts/src/models/User.ts @@ -0,0 +1,242 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { PartialGroup } from "./PartialGroup"; +import { PartialGroupFromJSON } from "./PartialGroup"; +import type { Role } from "./Role"; +import { RoleFromJSON } from "./Role"; +import type { UserTypeEnum } from "./UserTypeEnum"; +import { UserTypeEnumFromJSON, UserTypeEnumToJSON } from "./UserTypeEnum"; + +/** + * User Serializer + * @export + * @interface User + */ +export interface User { + /** + * + * @type {number} + * @memberof User + */ + readonly pk: number; + /** + * + * @type {string} + * @memberof User + */ + username: string; + /** + * User's display name. + * @type {string} + * @memberof User + */ + name: string; + /** + * Designates whether this user should be treated as active. Unselect this instead of deleting accounts. + * @type {boolean} + * @memberof User + */ + isActive?: boolean; + /** + * + * @type {Date} + * @memberof User + */ + lastLogin?: Date | null; + /** + * + * @type {Date} + * @memberof User + */ + readonly dateJoined: Date; + /** + * + * @type {boolean} + * @memberof User + */ + readonly isSuperuser: boolean; + /** + * + * @type {Array} + * @memberof User + */ + groups?: Array; + /** + * + * @type {Array} + * @memberof User + */ + readonly groupsObj: Array | null; + /** + * + * @type {Array} + * @memberof User + */ + roles?: Array; + /** + * + * @type {Array} + * @memberof User + */ + readonly rolesObj: Array | null; + /** + * + * @type {string} + * @memberof User + */ + email?: string; + /** + * User's avatar, either a http/https URL or a data URI + * @type {string} + * @memberof User + */ + readonly avatar: string; + /** + * + * @type {{ [key: string]: any; }} + * @memberof User + */ + attributes?: { [key: string]: any }; + /** + * + * @type {string} + * @memberof User + */ + readonly uid: string; + /** + * + * @type {string} + * @memberof User + */ + path?: string; + /** + * + * @type {UserTypeEnum} + * @memberof User + */ + type?: UserTypeEnum; + /** + * + * @type {string} + * @memberof User + */ + readonly uuid: string; + /** + * + * @type {Date} + * @memberof User + */ + readonly passwordChangeDate: Date; + /** + * + * @type {Date} + * @memberof User + */ + readonly lastUpdated: Date; +} + +/** + * Check if a given object implements the User interface. + */ +export function instanceOfUser(value: object): value is User { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("username" in value) || value["username"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("dateJoined" in value) || value["dateJoined"] === undefined) return false; + if (!("isSuperuser" in value) || value["isSuperuser"] === undefined) return false; + if (!("groupsObj" in value) || value["groupsObj"] === undefined) return false; + if (!("rolesObj" in value) || value["rolesObj"] === undefined) return false; + if (!("avatar" in value) || value["avatar"] === undefined) return false; + if (!("uid" in value) || value["uid"] === undefined) return false; + if (!("uuid" in value) || value["uuid"] === undefined) return false; + if (!("passwordChangeDate" in value) || value["passwordChangeDate"] === undefined) return false; + if (!("lastUpdated" in value) || value["lastUpdated"] === undefined) return false; + return true; +} + +export function UserFromJSON(json: any): User { + return UserFromJSONTyped(json, false); +} + +export function UserFromJSONTyped(json: any, ignoreDiscriminator: boolean): User { + if (json == null) { + return json; + } + return { + pk: json["pk"], + username: json["username"], + name: json["name"], + isActive: json["is_active"] == null ? undefined : json["is_active"], + lastLogin: json["last_login"] == null ? undefined : new Date(json["last_login"]), + dateJoined: new Date(json["date_joined"]), + isSuperuser: json["is_superuser"], + groups: json["groups"] == null ? undefined : json["groups"], + groupsObj: + json["groups_obj"] == null + ? null + : (json["groups_obj"] as Array).map(PartialGroupFromJSON), + roles: json["roles"] == null ? undefined : json["roles"], + rolesObj: + json["roles_obj"] == null ? null : (json["roles_obj"] as Array).map(RoleFromJSON), + email: json["email"] == null ? undefined : json["email"], + avatar: json["avatar"], + attributes: json["attributes"] == null ? undefined : json["attributes"], + uid: json["uid"], + path: json["path"] == null ? undefined : json["path"], + type: json["type"] == null ? undefined : UserTypeEnumFromJSON(json["type"]), + uuid: json["uuid"], + passwordChangeDate: new Date(json["password_change_date"]), + lastUpdated: new Date(json["last_updated"]), + }; +} + +export function UserToJSON(json: any): User { + return UserToJSONTyped(json, false); +} + +export function UserToJSONTyped( + value?: Omit< + User, + | "pk" + | "date_joined" + | "is_superuser" + | "groups_obj" + | "roles_obj" + | "avatar" + | "uid" + | "uuid" + | "password_change_date" + | "last_updated" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + username: value["username"], + name: value["name"], + is_active: value["isActive"], + last_login: + value["lastLogin"] == null ? value["lastLogin"] : value["lastLogin"].toISOString(), + groups: value["groups"], + roles: value["roles"], + email: value["email"], + attributes: value["attributes"], + path: value["path"], + type: UserTypeEnumToJSON(value["type"]), + }; +} diff --git a/packages/client-ts/src/models/UserAccountLockdownRequest.ts b/packages/client-ts/src/models/UserAccountLockdownRequest.ts new file mode 100644 index 0000000000..829fd6995c --- /dev/null +++ b/packages/client-ts/src/models/UserAccountLockdownRequest.ts @@ -0,0 +1,69 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Choose the target account before starting the lockdown flow. + * @export + * @interface UserAccountLockdownRequest + */ +export interface UserAccountLockdownRequest { + /** + * User to lock. If omitted, locks the current user (self-service). + * @type {number} + * @memberof UserAccountLockdownRequest + */ + user?: number | null; +} + +/** + * Check if a given object implements the UserAccountLockdownRequest interface. + */ +export function instanceOfUserAccountLockdownRequest( + value: object, +): value is UserAccountLockdownRequest { + return true; +} + +export function UserAccountLockdownRequestFromJSON(json: any): UserAccountLockdownRequest { + return UserAccountLockdownRequestFromJSONTyped(json, false); +} + +export function UserAccountLockdownRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): UserAccountLockdownRequest { + if (json == null) { + return json; + } + return { + user: json["user"] == null ? undefined : json["user"], + }; +} + +export function UserAccountLockdownRequestToJSON(json: any): UserAccountLockdownRequest { + return UserAccountLockdownRequestToJSONTyped(json, false); +} + +export function UserAccountLockdownRequestToJSONTyped( + value?: UserAccountLockdownRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + user: value["user"], + }; +} diff --git a/packages/client-ts/src/models/UserAccountRequest.ts b/packages/client-ts/src/models/UserAccountRequest.ts new file mode 100644 index 0000000000..c9a19e0425 --- /dev/null +++ b/packages/client-ts/src/models/UserAccountRequest.ts @@ -0,0 +1,68 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Account adding/removing operations + * @export + * @interface UserAccountRequest + */ +export interface UserAccountRequest { + /** + * + * @type {number} + * @memberof UserAccountRequest + */ + pk: number; +} + +/** + * Check if a given object implements the UserAccountRequest interface. + */ +export function instanceOfUserAccountRequest(value: object): value is UserAccountRequest { + if (!("pk" in value) || value["pk"] === undefined) return false; + return true; +} + +export function UserAccountRequestFromJSON(json: any): UserAccountRequest { + return UserAccountRequestFromJSONTyped(json, false); +} + +export function UserAccountRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): UserAccountRequest { + if (json == null) { + return json; + } + return { + pk: json["pk"], + }; +} + +export function UserAccountRequestToJSON(json: any): UserAccountRequest { + return UserAccountRequestToJSONTyped(json, false); +} + +export function UserAccountRequestToJSONTyped( + value?: UserAccountRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pk: value["pk"], + }; +} diff --git a/packages/client-ts/src/models/UserAccountSerializerForRoleRequest.ts b/packages/client-ts/src/models/UserAccountSerializerForRoleRequest.ts new file mode 100644 index 0000000000..735569cd29 --- /dev/null +++ b/packages/client-ts/src/models/UserAccountSerializerForRoleRequest.ts @@ -0,0 +1,74 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Account adding/removing operations + * @export + * @interface UserAccountSerializerForRoleRequest + */ +export interface UserAccountSerializerForRoleRequest { + /** + * + * @type {number} + * @memberof UserAccountSerializerForRoleRequest + */ + pk: number; +} + +/** + * Check if a given object implements the UserAccountSerializerForRoleRequest interface. + */ +export function instanceOfUserAccountSerializerForRoleRequest( + value: object, +): value is UserAccountSerializerForRoleRequest { + if (!("pk" in value) || value["pk"] === undefined) return false; + return true; +} + +export function UserAccountSerializerForRoleRequestFromJSON( + json: any, +): UserAccountSerializerForRoleRequest { + return UserAccountSerializerForRoleRequestFromJSONTyped(json, false); +} + +export function UserAccountSerializerForRoleRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): UserAccountSerializerForRoleRequest { + if (json == null) { + return json; + } + return { + pk: json["pk"], + }; +} + +export function UserAccountSerializerForRoleRequestToJSON( + json: any, +): UserAccountSerializerForRoleRequest { + return UserAccountSerializerForRoleRequestToJSONTyped(json, false); +} + +export function UserAccountSerializerForRoleRequestToJSONTyped( + value?: UserAccountSerializerForRoleRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + pk: value["pk"], + }; +} diff --git a/packages/client-ts/src/models/UserAttributeEnum.ts b/packages/client-ts/src/models/UserAttributeEnum.ts new file mode 100644 index 0000000000..b61ced35e7 --- /dev/null +++ b/packages/client-ts/src/models/UserAttributeEnum.ts @@ -0,0 +1,57 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const UserAttributeEnum = { + Username: "username", + Email: "email", + UnknownDefaultOpenApi: "11184809", +} as const; +export type UserAttributeEnum = (typeof UserAttributeEnum)[keyof typeof UserAttributeEnum]; + +export function instanceOfUserAttributeEnum(value: any): boolean { + for (const key in UserAttributeEnum) { + if (Object.prototype.hasOwnProperty.call(UserAttributeEnum, key)) { + if (UserAttributeEnum[key as keyof typeof UserAttributeEnum] === value) { + return true; + } + } + } + return false; +} + +export function UserAttributeEnumFromJSON(json: any): UserAttributeEnum { + return UserAttributeEnumFromJSONTyped(json, false); +} + +export function UserAttributeEnumFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): UserAttributeEnum { + return json as UserAttributeEnum; +} + +export function UserAttributeEnumToJSON(value?: UserAttributeEnum | null): any { + return value as any; +} + +export function UserAttributeEnumToJSONTyped( + value: any, + ignoreDiscriminator: boolean, +): UserAttributeEnum { + return value as UserAttributeEnum; +} diff --git a/packages/client-ts/src/models/UserConsent.ts b/packages/client-ts/src/models/UserConsent.ts new file mode 100644 index 0000000000..b776c96ab8 --- /dev/null +++ b/packages/client-ts/src/models/UserConsent.ts @@ -0,0 +1,111 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Application } from "./Application"; +import { ApplicationFromJSON, ApplicationToJSON } from "./Application"; +import type { User } from "./User"; +import { UserFromJSON, UserToJSON } from "./User"; + +/** + * UserConsent Serializer + * @export + * @interface UserConsent + */ +export interface UserConsent { + /** + * + * @type {number} + * @memberof UserConsent + */ + readonly pk: number; + /** + * + * @type {Date} + * @memberof UserConsent + */ + expires?: Date | null; + /** + * + * @type {boolean} + * @memberof UserConsent + */ + expiring?: boolean; + /** + * + * @type {User} + * @memberof UserConsent + */ + user: User; + /** + * + * @type {Application} + * @memberof UserConsent + */ + application: Application; + /** + * + * @type {string} + * @memberof UserConsent + */ + permissions?: string; +} + +/** + * Check if a given object implements the UserConsent interface. + */ +export function instanceOfUserConsent(value: object): value is UserConsent { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("user" in value) || value["user"] === undefined) return false; + if (!("application" in value) || value["application"] === undefined) return false; + return true; +} + +export function UserConsentFromJSON(json: any): UserConsent { + return UserConsentFromJSONTyped(json, false); +} + +export function UserConsentFromJSONTyped(json: any, ignoreDiscriminator: boolean): UserConsent { + if (json == null) { + return json; + } + return { + pk: json["pk"], + expires: json["expires"] == null ? undefined : new Date(json["expires"]), + expiring: json["expiring"] == null ? undefined : json["expiring"], + user: UserFromJSON(json["user"]), + application: ApplicationFromJSON(json["application"]), + permissions: json["permissions"] == null ? undefined : json["permissions"], + }; +} + +export function UserConsentToJSON(json: any): UserConsent { + return UserConsentToJSONTyped(json, false); +} + +export function UserConsentToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + expires: value["expires"] == null ? value["expires"] : value["expires"].toISOString(), + expiring: value["expiring"], + user: UserToJSON(value["user"]), + application: ApplicationToJSON(value["application"]), + permissions: value["permissions"], + }; +} diff --git a/packages/client-ts/src/models/UserCreationModeEnum.ts b/packages/client-ts/src/models/UserCreationModeEnum.ts new file mode 100644 index 0000000000..0579fd30e8 --- /dev/null +++ b/packages/client-ts/src/models/UserCreationModeEnum.ts @@ -0,0 +1,58 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const UserCreationModeEnum = { + NeverCreate: "never_create", + CreateWhenRequired: "create_when_required", + AlwaysCreate: "always_create", + UnknownDefaultOpenApi: "11184809", +} as const; +export type UserCreationModeEnum = (typeof UserCreationModeEnum)[keyof typeof UserCreationModeEnum]; + +export function instanceOfUserCreationModeEnum(value: any): boolean { + for (const key in UserCreationModeEnum) { + if (Object.prototype.hasOwnProperty.call(UserCreationModeEnum, key)) { + if (UserCreationModeEnum[key as keyof typeof UserCreationModeEnum] === value) { + return true; + } + } + } + return false; +} + +export function UserCreationModeEnumFromJSON(json: any): UserCreationModeEnum { + return UserCreationModeEnumFromJSONTyped(json, false); +} + +export function UserCreationModeEnumFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): UserCreationModeEnum { + return json as UserCreationModeEnum; +} + +export function UserCreationModeEnumToJSON(value?: UserCreationModeEnum | null): any { + return value as any; +} + +export function UserCreationModeEnumToJSONTyped( + value: any, + ignoreDiscriminator: boolean, +): UserCreationModeEnum { + return value as UserCreationModeEnum; +} diff --git a/packages/client-ts/src/models/UserDeleteStage.ts b/packages/client-ts/src/models/UserDeleteStage.ts new file mode 100644 index 0000000000..ea55900c48 --- /dev/null +++ b/packages/client-ts/src/models/UserDeleteStage.ts @@ -0,0 +1,122 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { FlowSet } from "./FlowSet"; +import { FlowSetFromJSON } from "./FlowSet"; + +/** + * UserDeleteStage Serializer + * @export + * @interface UserDeleteStage + */ +export interface UserDeleteStage { + /** + * + * @type {string} + * @memberof UserDeleteStage + */ + readonly pk: string; + /** + * + * @type {string} + * @memberof UserDeleteStage + */ + name: string; + /** + * Get object type so that we know how to edit the object + * @type {string} + * @memberof UserDeleteStage + */ + readonly component: string; + /** + * Return object's verbose_name + * @type {string} + * @memberof UserDeleteStage + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof UserDeleteStage + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof UserDeleteStage + */ + readonly metaModelName: string; + /** + * + * @type {Array} + * @memberof UserDeleteStage + */ + readonly flowSet: Array; +} + +/** + * Check if a given object implements the UserDeleteStage interface. + */ +export function instanceOfUserDeleteStage(value: object): value is UserDeleteStage { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + if (!("flowSet" in value) || value["flowSet"] === undefined) return false; + return true; +} + +export function UserDeleteStageFromJSON(json: any): UserDeleteStage { + return UserDeleteStageFromJSONTyped(json, false); +} + +export function UserDeleteStageFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): UserDeleteStage { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + component: json["component"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + flowSet: (json["flow_set"] as Array).map(FlowSetFromJSON), + }; +} + +export function UserDeleteStageToJSON(json: any): UserDeleteStage { + return UserDeleteStageToJSONTyped(json, false); +} + +export function UserDeleteStageToJSONTyped( + value?: Omit< + UserDeleteStage, + "pk" | "component" | "verbose_name" | "verbose_name_plural" | "meta_model_name" | "flow_set" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + }; +} diff --git a/packages/client-ts/src/models/UserDeleteStageRequest.ts b/packages/client-ts/src/models/UserDeleteStageRequest.ts new file mode 100644 index 0000000000..36eb90b956 --- /dev/null +++ b/packages/client-ts/src/models/UserDeleteStageRequest.ts @@ -0,0 +1,68 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * UserDeleteStage Serializer + * @export + * @interface UserDeleteStageRequest + */ +export interface UserDeleteStageRequest { + /** + * + * @type {string} + * @memberof UserDeleteStageRequest + */ + name: string; +} + +/** + * Check if a given object implements the UserDeleteStageRequest interface. + */ +export function instanceOfUserDeleteStageRequest(value: object): value is UserDeleteStageRequest { + if (!("name" in value) || value["name"] === undefined) return false; + return true; +} + +export function UserDeleteStageRequestFromJSON(json: any): UserDeleteStageRequest { + return UserDeleteStageRequestFromJSONTyped(json, false); +} + +export function UserDeleteStageRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): UserDeleteStageRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + }; +} + +export function UserDeleteStageRequestToJSON(json: any): UserDeleteStageRequest { + return UserDeleteStageRequestToJSONTyped(json, false); +} + +export function UserDeleteStageRequestToJSONTyped( + value?: UserDeleteStageRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + }; +} diff --git a/packages/client-ts/src/models/UserFieldsEnum.ts b/packages/client-ts/src/models/UserFieldsEnum.ts new file mode 100644 index 0000000000..b098ab3f7d --- /dev/null +++ b/packages/client-ts/src/models/UserFieldsEnum.ts @@ -0,0 +1,58 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const UserFieldsEnum = { + Email: "email", + Username: "username", + Upn: "upn", + UnknownDefaultOpenApi: "11184809", +} as const; +export type UserFieldsEnum = (typeof UserFieldsEnum)[keyof typeof UserFieldsEnum]; + +export function instanceOfUserFieldsEnum(value: any): boolean { + for (const key in UserFieldsEnum) { + if (Object.prototype.hasOwnProperty.call(UserFieldsEnum, key)) { + if (UserFieldsEnum[key as keyof typeof UserFieldsEnum] === value) { + return true; + } + } + } + return false; +} + +export function UserFieldsEnumFromJSON(json: any): UserFieldsEnum { + return UserFieldsEnumFromJSONTyped(json, false); +} + +export function UserFieldsEnumFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): UserFieldsEnum { + return json as UserFieldsEnum; +} + +export function UserFieldsEnumToJSON(value?: UserFieldsEnum | null): any { + return value as any; +} + +export function UserFieldsEnumToJSONTyped( + value: any, + ignoreDiscriminator: boolean, +): UserFieldsEnum { + return value as UserFieldsEnum; +} diff --git a/packages/client-ts/src/models/UserKerberosSourceConnection.ts b/packages/client-ts/src/models/UserKerberosSourceConnection.ts new file mode 100644 index 0000000000..dd9103f2cc --- /dev/null +++ b/packages/client-ts/src/models/UserKerberosSourceConnection.ts @@ -0,0 +1,126 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Source } from "./Source"; +import { SourceFromJSON } from "./Source"; + +/** + * User source connection + * @export + * @interface UserKerberosSourceConnection + */ +export interface UserKerberosSourceConnection { + /** + * + * @type {number} + * @memberof UserKerberosSourceConnection + */ + readonly pk: number; + /** + * + * @type {number} + * @memberof UserKerberosSourceConnection + */ + user: number; + /** + * + * @type {string} + * @memberof UserKerberosSourceConnection + */ + source: string; + /** + * + * @type {Source} + * @memberof UserKerberosSourceConnection + */ + readonly sourceObj: Source; + /** + * + * @type {string} + * @memberof UserKerberosSourceConnection + */ + identifier: string; + /** + * + * @type {Date} + * @memberof UserKerberosSourceConnection + */ + readonly created: Date; + /** + * + * @type {Date} + * @memberof UserKerberosSourceConnection + */ + readonly lastUpdated: Date; +} + +/** + * Check if a given object implements the UserKerberosSourceConnection interface. + */ +export function instanceOfUserKerberosSourceConnection( + value: object, +): value is UserKerberosSourceConnection { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("user" in value) || value["user"] === undefined) return false; + if (!("source" in value) || value["source"] === undefined) return false; + if (!("sourceObj" in value) || value["sourceObj"] === undefined) return false; + if (!("identifier" in value) || value["identifier"] === undefined) return false; + if (!("created" in value) || value["created"] === undefined) return false; + if (!("lastUpdated" in value) || value["lastUpdated"] === undefined) return false; + return true; +} + +export function UserKerberosSourceConnectionFromJSON(json: any): UserKerberosSourceConnection { + return UserKerberosSourceConnectionFromJSONTyped(json, false); +} + +export function UserKerberosSourceConnectionFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): UserKerberosSourceConnection { + if (json == null) { + return json; + } + return { + pk: json["pk"], + user: json["user"], + source: json["source"], + sourceObj: SourceFromJSON(json["source_obj"]), + identifier: json["identifier"], + created: new Date(json["created"]), + lastUpdated: new Date(json["last_updated"]), + }; +} + +export function UserKerberosSourceConnectionToJSON(json: any): UserKerberosSourceConnection { + return UserKerberosSourceConnectionToJSONTyped(json, false); +} + +export function UserKerberosSourceConnectionToJSONTyped( + value?: Omit< + UserKerberosSourceConnection, + "pk" | "source_obj" | "created" | "last_updated" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + user: value["user"], + source: value["source"], + identifier: value["identifier"], + }; +} diff --git a/packages/client-ts/src/models/UserKerberosSourceConnectionRequest.ts b/packages/client-ts/src/models/UserKerberosSourceConnectionRequest.ts new file mode 100644 index 0000000000..206c23cc7d --- /dev/null +++ b/packages/client-ts/src/models/UserKerberosSourceConnectionRequest.ts @@ -0,0 +1,92 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * User source connection + * @export + * @interface UserKerberosSourceConnectionRequest + */ +export interface UserKerberosSourceConnectionRequest { + /** + * + * @type {number} + * @memberof UserKerberosSourceConnectionRequest + */ + user: number; + /** + * + * @type {string} + * @memberof UserKerberosSourceConnectionRequest + */ + source: string; + /** + * + * @type {string} + * @memberof UserKerberosSourceConnectionRequest + */ + identifier: string; +} + +/** + * Check if a given object implements the UserKerberosSourceConnectionRequest interface. + */ +export function instanceOfUserKerberosSourceConnectionRequest( + value: object, +): value is UserKerberosSourceConnectionRequest { + if (!("user" in value) || value["user"] === undefined) return false; + if (!("source" in value) || value["source"] === undefined) return false; + if (!("identifier" in value) || value["identifier"] === undefined) return false; + return true; +} + +export function UserKerberosSourceConnectionRequestFromJSON( + json: any, +): UserKerberosSourceConnectionRequest { + return UserKerberosSourceConnectionRequestFromJSONTyped(json, false); +} + +export function UserKerberosSourceConnectionRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): UserKerberosSourceConnectionRequest { + if (json == null) { + return json; + } + return { + user: json["user"], + source: json["source"], + identifier: json["identifier"], + }; +} + +export function UserKerberosSourceConnectionRequestToJSON( + json: any, +): UserKerberosSourceConnectionRequest { + return UserKerberosSourceConnectionRequestToJSONTyped(json, false); +} + +export function UserKerberosSourceConnectionRequestToJSONTyped( + value?: UserKerberosSourceConnectionRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + user: value["user"], + source: value["source"], + identifier: value["identifier"], + }; +} diff --git a/packages/client-ts/src/models/UserLDAPSourceConnection.ts b/packages/client-ts/src/models/UserLDAPSourceConnection.ts new file mode 100644 index 0000000000..b9f1e07769 --- /dev/null +++ b/packages/client-ts/src/models/UserLDAPSourceConnection.ts @@ -0,0 +1,136 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { PartialUser } from "./PartialUser"; +import { PartialUserFromJSON } from "./PartialUser"; +import type { Source } from "./Source"; +import { SourceFromJSON } from "./Source"; + +/** + * User source connection + * @export + * @interface UserLDAPSourceConnection + */ +export interface UserLDAPSourceConnection { + /** + * + * @type {number} + * @memberof UserLDAPSourceConnection + */ + readonly pk: number; + /** + * + * @type {number} + * @memberof UserLDAPSourceConnection + */ + user: number; + /** + * + * @type {string} + * @memberof UserLDAPSourceConnection + */ + source: string; + /** + * + * @type {Source} + * @memberof UserLDAPSourceConnection + */ + readonly sourceObj: Source; + /** + * + * @type {string} + * @memberof UserLDAPSourceConnection + */ + identifier: string; + /** + * + * @type {Date} + * @memberof UserLDAPSourceConnection + */ + readonly created: Date; + /** + * + * @type {Date} + * @memberof UserLDAPSourceConnection + */ + readonly lastUpdated: Date; + /** + * + * @type {PartialUser} + * @memberof UserLDAPSourceConnection + */ + readonly userObj: PartialUser; +} + +/** + * Check if a given object implements the UserLDAPSourceConnection interface. + */ +export function instanceOfUserLDAPSourceConnection( + value: object, +): value is UserLDAPSourceConnection { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("user" in value) || value["user"] === undefined) return false; + if (!("source" in value) || value["source"] === undefined) return false; + if (!("sourceObj" in value) || value["sourceObj"] === undefined) return false; + if (!("identifier" in value) || value["identifier"] === undefined) return false; + if (!("created" in value) || value["created"] === undefined) return false; + if (!("lastUpdated" in value) || value["lastUpdated"] === undefined) return false; + if (!("userObj" in value) || value["userObj"] === undefined) return false; + return true; +} + +export function UserLDAPSourceConnectionFromJSON(json: any): UserLDAPSourceConnection { + return UserLDAPSourceConnectionFromJSONTyped(json, false); +} + +export function UserLDAPSourceConnectionFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): UserLDAPSourceConnection { + if (json == null) { + return json; + } + return { + pk: json["pk"], + user: json["user"], + source: json["source"], + sourceObj: SourceFromJSON(json["source_obj"]), + identifier: json["identifier"], + created: new Date(json["created"]), + lastUpdated: new Date(json["last_updated"]), + userObj: PartialUserFromJSON(json["user_obj"]), + }; +} + +export function UserLDAPSourceConnectionToJSON(json: any): UserLDAPSourceConnection { + return UserLDAPSourceConnectionToJSONTyped(json, false); +} + +export function UserLDAPSourceConnectionToJSONTyped( + value?: Omit< + UserLDAPSourceConnection, + "pk" | "source_obj" | "created" | "last_updated" | "user_obj" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + user: value["user"], + source: value["source"], + identifier: value["identifier"], + }; +} diff --git a/packages/client-ts/src/models/UserLDAPSourceConnectionRequest.ts b/packages/client-ts/src/models/UserLDAPSourceConnectionRequest.ts new file mode 100644 index 0000000000..0250f302b6 --- /dev/null +++ b/packages/client-ts/src/models/UserLDAPSourceConnectionRequest.ts @@ -0,0 +1,90 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * User source connection + * @export + * @interface UserLDAPSourceConnectionRequest + */ +export interface UserLDAPSourceConnectionRequest { + /** + * + * @type {number} + * @memberof UserLDAPSourceConnectionRequest + */ + user: number; + /** + * + * @type {string} + * @memberof UserLDAPSourceConnectionRequest + */ + source: string; + /** + * + * @type {string} + * @memberof UserLDAPSourceConnectionRequest + */ + identifier: string; +} + +/** + * Check if a given object implements the UserLDAPSourceConnectionRequest interface. + */ +export function instanceOfUserLDAPSourceConnectionRequest( + value: object, +): value is UserLDAPSourceConnectionRequest { + if (!("user" in value) || value["user"] === undefined) return false; + if (!("source" in value) || value["source"] === undefined) return false; + if (!("identifier" in value) || value["identifier"] === undefined) return false; + return true; +} + +export function UserLDAPSourceConnectionRequestFromJSON( + json: any, +): UserLDAPSourceConnectionRequest { + return UserLDAPSourceConnectionRequestFromJSONTyped(json, false); +} + +export function UserLDAPSourceConnectionRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): UserLDAPSourceConnectionRequest { + if (json == null) { + return json; + } + return { + user: json["user"], + source: json["source"], + identifier: json["identifier"], + }; +} + +export function UserLDAPSourceConnectionRequestToJSON(json: any): UserLDAPSourceConnectionRequest { + return UserLDAPSourceConnectionRequestToJSONTyped(json, false); +} + +export function UserLDAPSourceConnectionRequestToJSONTyped( + value?: UserLDAPSourceConnectionRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + user: value["user"], + source: value["source"], + identifier: value["identifier"], + }; +} diff --git a/packages/client-ts/src/models/UserLoginChallenge.ts b/packages/client-ts/src/models/UserLoginChallenge.ts new file mode 100644 index 0000000000..1ee901b4b8 --- /dev/null +++ b/packages/client-ts/src/models/UserLoginChallenge.ts @@ -0,0 +1,106 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { ContextualFlowInfo } from "./ContextualFlowInfo"; +import { ContextualFlowInfoFromJSON, ContextualFlowInfoToJSON } from "./ContextualFlowInfo"; +import type { ErrorDetail } from "./ErrorDetail"; + +/** + * Empty challenge + * @export + * @interface UserLoginChallenge + */ +export interface UserLoginChallenge { + /** + * + * @type {ContextualFlowInfo} + * @memberof UserLoginChallenge + */ + flowInfo?: ContextualFlowInfo; + /** + * + * @type {string} + * @memberof UserLoginChallenge + */ + component?: string; + /** + * + * @type {{ [key: string]: Array; }} + * @memberof UserLoginChallenge + */ + responseErrors?: { [key: string]: Array }; + /** + * + * @type {string} + * @memberof UserLoginChallenge + */ + pendingUser: string; + /** + * + * @type {string} + * @memberof UserLoginChallenge + */ + pendingUserAvatar: string; +} + +/** + * Check if a given object implements the UserLoginChallenge interface. + */ +export function instanceOfUserLoginChallenge(value: object): value is UserLoginChallenge { + if (!("pendingUser" in value) || value["pendingUser"] === undefined) return false; + if (!("pendingUserAvatar" in value) || value["pendingUserAvatar"] === undefined) return false; + return true; +} + +export function UserLoginChallengeFromJSON(json: any): UserLoginChallenge { + return UserLoginChallengeFromJSONTyped(json, false); +} + +export function UserLoginChallengeFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): UserLoginChallenge { + if (json == null) { + return json; + } + return { + flowInfo: + json["flow_info"] == null ? undefined : ContextualFlowInfoFromJSON(json["flow_info"]), + component: json["component"] == null ? undefined : json["component"], + responseErrors: json["response_errors"] == null ? undefined : json["response_errors"], + pendingUser: json["pending_user"], + pendingUserAvatar: json["pending_user_avatar"], + }; +} + +export function UserLoginChallengeToJSON(json: any): UserLoginChallenge { + return UserLoginChallengeToJSONTyped(json, false); +} + +export function UserLoginChallengeToJSONTyped( + value?: UserLoginChallenge | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + flow_info: ContextualFlowInfoToJSON(value["flowInfo"]), + component: value["component"], + response_errors: value["responseErrors"], + pending_user: value["pendingUser"], + pending_user_avatar: value["pendingUserAvatar"], + }; +} diff --git a/packages/client-ts/src/models/UserLoginChallengeResponseRequest.ts b/packages/client-ts/src/models/UserLoginChallengeResponseRequest.ts new file mode 100644 index 0000000000..9c847d18d1 --- /dev/null +++ b/packages/client-ts/src/models/UserLoginChallengeResponseRequest.ts @@ -0,0 +1,82 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * User login challenge + * @export + * @interface UserLoginChallengeResponseRequest + */ +export interface UserLoginChallengeResponseRequest { + /** + * + * @type {string} + * @memberof UserLoginChallengeResponseRequest + */ + component?: string; + /** + * + * @type {boolean} + * @memberof UserLoginChallengeResponseRequest + */ + rememberMe: boolean; +} + +/** + * Check if a given object implements the UserLoginChallengeResponseRequest interface. + */ +export function instanceOfUserLoginChallengeResponseRequest( + value: object, +): value is UserLoginChallengeResponseRequest { + if (!("rememberMe" in value) || value["rememberMe"] === undefined) return false; + return true; +} + +export function UserLoginChallengeResponseRequestFromJSON( + json: any, +): UserLoginChallengeResponseRequest { + return UserLoginChallengeResponseRequestFromJSONTyped(json, false); +} + +export function UserLoginChallengeResponseRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): UserLoginChallengeResponseRequest { + if (json == null) { + return json; + } + return { + component: json["component"] == null ? undefined : json["component"], + rememberMe: json["remember_me"], + }; +} + +export function UserLoginChallengeResponseRequestToJSON( + json: any, +): UserLoginChallengeResponseRequest { + return UserLoginChallengeResponseRequestToJSONTyped(json, false); +} + +export function UserLoginChallengeResponseRequestToJSONTyped( + value?: UserLoginChallengeResponseRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + component: value["component"], + remember_me: value["rememberMe"], + }; +} diff --git a/packages/client-ts/src/models/UserLoginStage.ts b/packages/client-ts/src/models/UserLoginStage.ts new file mode 100644 index 0000000000..36d877488d --- /dev/null +++ b/packages/client-ts/src/models/UserLoginStage.ts @@ -0,0 +1,182 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { FlowSet } from "./FlowSet"; +import { FlowSetFromJSON } from "./FlowSet"; +import type { GeoipBindingEnum } from "./GeoipBindingEnum"; +import { GeoipBindingEnumFromJSON, GeoipBindingEnumToJSON } from "./GeoipBindingEnum"; +import type { NetworkBindingEnum } from "./NetworkBindingEnum"; +import { NetworkBindingEnumFromJSON, NetworkBindingEnumToJSON } from "./NetworkBindingEnum"; + +/** + * UserLoginStage Serializer + * @export + * @interface UserLoginStage + */ +export interface UserLoginStage { + /** + * + * @type {string} + * @memberof UserLoginStage + */ + readonly pk: string; + /** + * + * @type {string} + * @memberof UserLoginStage + */ + name: string; + /** + * Get object type so that we know how to edit the object + * @type {string} + * @memberof UserLoginStage + */ + readonly component: string; + /** + * Return object's verbose_name + * @type {string} + * @memberof UserLoginStage + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof UserLoginStage + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof UserLoginStage + */ + readonly metaModelName: string; + /** + * + * @type {Array} + * @memberof UserLoginStage + */ + readonly flowSet: Array; + /** + * Determines how long a session lasts. Default of 0 means that the sessions lasts until the browser is closed. (Format: hours=-1;minutes=-2;seconds=-3) + * @type {string} + * @memberof UserLoginStage + */ + sessionDuration?: string; + /** + * Terminate all other sessions of the user logging in. + * @type {boolean} + * @memberof UserLoginStage + */ + terminateOtherSessions?: boolean; + /** + * Offset the session will be extended by when the user picks the remember me option. Default of 0 means that the remember me option will not be shown. (Format: hours=-1;minutes=-2;seconds=-3) + * @type {string} + * @memberof UserLoginStage + */ + rememberMeOffset?: string; + /** + * Bind sessions created by this stage to the configured network + * @type {NetworkBindingEnum} + * @memberof UserLoginStage + */ + networkBinding?: NetworkBindingEnum; + /** + * Bind sessions created by this stage to the configured GeoIP location + * @type {GeoipBindingEnum} + * @memberof UserLoginStage + */ + geoipBinding?: GeoipBindingEnum; + /** + * When set to a non-zero value, authentik will save a cookie with a longer expiry,to remember the device the user is logging in from. (Format: hours=-1;minutes=-2;seconds=-3) + * @type {string} + * @memberof UserLoginStage + */ + rememberDevice?: string; +} + +/** + * Check if a given object implements the UserLoginStage interface. + */ +export function instanceOfUserLoginStage(value: object): value is UserLoginStage { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + if (!("flowSet" in value) || value["flowSet"] === undefined) return false; + return true; +} + +export function UserLoginStageFromJSON(json: any): UserLoginStage { + return UserLoginStageFromJSONTyped(json, false); +} + +export function UserLoginStageFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): UserLoginStage { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + component: json["component"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + flowSet: (json["flow_set"] as Array).map(FlowSetFromJSON), + sessionDuration: json["session_duration"] == null ? undefined : json["session_duration"], + terminateOtherSessions: + json["terminate_other_sessions"] == null ? undefined : json["terminate_other_sessions"], + rememberMeOffset: + json["remember_me_offset"] == null ? undefined : json["remember_me_offset"], + networkBinding: + json["network_binding"] == null + ? undefined + : NetworkBindingEnumFromJSON(json["network_binding"]), + geoipBinding: + json["geoip_binding"] == null + ? undefined + : GeoipBindingEnumFromJSON(json["geoip_binding"]), + rememberDevice: json["remember_device"] == null ? undefined : json["remember_device"], + }; +} + +export function UserLoginStageToJSON(json: any): UserLoginStage { + return UserLoginStageToJSONTyped(json, false); +} + +export function UserLoginStageToJSONTyped( + value?: Omit< + UserLoginStage, + "pk" | "component" | "verbose_name" | "verbose_name_plural" | "meta_model_name" | "flow_set" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + session_duration: value["sessionDuration"], + terminate_other_sessions: value["terminateOtherSessions"], + remember_me_offset: value["rememberMeOffset"], + network_binding: NetworkBindingEnumToJSON(value["networkBinding"]), + geoip_binding: GeoipBindingEnumToJSON(value["geoipBinding"]), + remember_device: value["rememberDevice"], + }; +} diff --git a/packages/client-ts/src/models/UserLoginStageRequest.ts b/packages/client-ts/src/models/UserLoginStageRequest.ts new file mode 100644 index 0000000000..af14a606f9 --- /dev/null +++ b/packages/client-ts/src/models/UserLoginStageRequest.ts @@ -0,0 +1,129 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { GeoipBindingEnum } from "./GeoipBindingEnum"; +import { GeoipBindingEnumFromJSON, GeoipBindingEnumToJSON } from "./GeoipBindingEnum"; +import type { NetworkBindingEnum } from "./NetworkBindingEnum"; +import { NetworkBindingEnumFromJSON, NetworkBindingEnumToJSON } from "./NetworkBindingEnum"; + +/** + * UserLoginStage Serializer + * @export + * @interface UserLoginStageRequest + */ +export interface UserLoginStageRequest { + /** + * + * @type {string} + * @memberof UserLoginStageRequest + */ + name: string; + /** + * Determines how long a session lasts. Default of 0 means that the sessions lasts until the browser is closed. (Format: hours=-1;minutes=-2;seconds=-3) + * @type {string} + * @memberof UserLoginStageRequest + */ + sessionDuration?: string; + /** + * Terminate all other sessions of the user logging in. + * @type {boolean} + * @memberof UserLoginStageRequest + */ + terminateOtherSessions?: boolean; + /** + * Offset the session will be extended by when the user picks the remember me option. Default of 0 means that the remember me option will not be shown. (Format: hours=-1;minutes=-2;seconds=-3) + * @type {string} + * @memberof UserLoginStageRequest + */ + rememberMeOffset?: string; + /** + * Bind sessions created by this stage to the configured network + * @type {NetworkBindingEnum} + * @memberof UserLoginStageRequest + */ + networkBinding?: NetworkBindingEnum; + /** + * Bind sessions created by this stage to the configured GeoIP location + * @type {GeoipBindingEnum} + * @memberof UserLoginStageRequest + */ + geoipBinding?: GeoipBindingEnum; + /** + * When set to a non-zero value, authentik will save a cookie with a longer expiry,to remember the device the user is logging in from. (Format: hours=-1;minutes=-2;seconds=-3) + * @type {string} + * @memberof UserLoginStageRequest + */ + rememberDevice?: string; +} + +/** + * Check if a given object implements the UserLoginStageRequest interface. + */ +export function instanceOfUserLoginStageRequest(value: object): value is UserLoginStageRequest { + if (!("name" in value) || value["name"] === undefined) return false; + return true; +} + +export function UserLoginStageRequestFromJSON(json: any): UserLoginStageRequest { + return UserLoginStageRequestFromJSONTyped(json, false); +} + +export function UserLoginStageRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): UserLoginStageRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + sessionDuration: json["session_duration"] == null ? undefined : json["session_duration"], + terminateOtherSessions: + json["terminate_other_sessions"] == null ? undefined : json["terminate_other_sessions"], + rememberMeOffset: + json["remember_me_offset"] == null ? undefined : json["remember_me_offset"], + networkBinding: + json["network_binding"] == null + ? undefined + : NetworkBindingEnumFromJSON(json["network_binding"]), + geoipBinding: + json["geoip_binding"] == null + ? undefined + : GeoipBindingEnumFromJSON(json["geoip_binding"]), + rememberDevice: json["remember_device"] == null ? undefined : json["remember_device"], + }; +} + +export function UserLoginStageRequestToJSON(json: any): UserLoginStageRequest { + return UserLoginStageRequestToJSONTyped(json, false); +} + +export function UserLoginStageRequestToJSONTyped( + value?: UserLoginStageRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + session_duration: value["sessionDuration"], + terminate_other_sessions: value["terminateOtherSessions"], + remember_me_offset: value["rememberMeOffset"], + network_binding: NetworkBindingEnumToJSON(value["networkBinding"]), + geoip_binding: GeoipBindingEnumToJSON(value["geoipBinding"]), + remember_device: value["rememberDevice"], + }; +} diff --git a/packages/client-ts/src/models/UserLogoutStage.ts b/packages/client-ts/src/models/UserLogoutStage.ts new file mode 100644 index 0000000000..695769c87c --- /dev/null +++ b/packages/client-ts/src/models/UserLogoutStage.ts @@ -0,0 +1,122 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { FlowSet } from "./FlowSet"; +import { FlowSetFromJSON } from "./FlowSet"; + +/** + * UserLogoutStage Serializer + * @export + * @interface UserLogoutStage + */ +export interface UserLogoutStage { + /** + * + * @type {string} + * @memberof UserLogoutStage + */ + readonly pk: string; + /** + * + * @type {string} + * @memberof UserLogoutStage + */ + name: string; + /** + * Get object type so that we know how to edit the object + * @type {string} + * @memberof UserLogoutStage + */ + readonly component: string; + /** + * Return object's verbose_name + * @type {string} + * @memberof UserLogoutStage + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof UserLogoutStage + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof UserLogoutStage + */ + readonly metaModelName: string; + /** + * + * @type {Array} + * @memberof UserLogoutStage + */ + readonly flowSet: Array; +} + +/** + * Check if a given object implements the UserLogoutStage interface. + */ +export function instanceOfUserLogoutStage(value: object): value is UserLogoutStage { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + if (!("flowSet" in value) || value["flowSet"] === undefined) return false; + return true; +} + +export function UserLogoutStageFromJSON(json: any): UserLogoutStage { + return UserLogoutStageFromJSONTyped(json, false); +} + +export function UserLogoutStageFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): UserLogoutStage { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + component: json["component"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + flowSet: (json["flow_set"] as Array).map(FlowSetFromJSON), + }; +} + +export function UserLogoutStageToJSON(json: any): UserLogoutStage { + return UserLogoutStageToJSONTyped(json, false); +} + +export function UserLogoutStageToJSONTyped( + value?: Omit< + UserLogoutStage, + "pk" | "component" | "verbose_name" | "verbose_name_plural" | "meta_model_name" | "flow_set" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + }; +} diff --git a/packages/client-ts/src/models/UserLogoutStageRequest.ts b/packages/client-ts/src/models/UserLogoutStageRequest.ts new file mode 100644 index 0000000000..9c9dd6fdf0 --- /dev/null +++ b/packages/client-ts/src/models/UserLogoutStageRequest.ts @@ -0,0 +1,68 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * UserLogoutStage Serializer + * @export + * @interface UserLogoutStageRequest + */ +export interface UserLogoutStageRequest { + /** + * + * @type {string} + * @memberof UserLogoutStageRequest + */ + name: string; +} + +/** + * Check if a given object implements the UserLogoutStageRequest interface. + */ +export function instanceOfUserLogoutStageRequest(value: object): value is UserLogoutStageRequest { + if (!("name" in value) || value["name"] === undefined) return false; + return true; +} + +export function UserLogoutStageRequestFromJSON(json: any): UserLogoutStageRequest { + return UserLogoutStageRequestFromJSONTyped(json, false); +} + +export function UserLogoutStageRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): UserLogoutStageRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + }; +} + +export function UserLogoutStageRequestToJSON(json: any): UserLogoutStageRequest { + return UserLogoutStageRequestToJSONTyped(json, false); +} + +export function UserLogoutStageRequestToJSONTyped( + value?: UserLogoutStageRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + }; +} diff --git a/packages/client-ts/src/models/UserMatchingModeEnum.ts b/packages/client-ts/src/models/UserMatchingModeEnum.ts new file mode 100644 index 0000000000..d337917d52 --- /dev/null +++ b/packages/client-ts/src/models/UserMatchingModeEnum.ts @@ -0,0 +1,60 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const UserMatchingModeEnum = { + Identifier: "identifier", + EmailLink: "email_link", + EmailDeny: "email_deny", + UsernameLink: "username_link", + UsernameDeny: "username_deny", + UnknownDefaultOpenApi: "11184809", +} as const; +export type UserMatchingModeEnum = (typeof UserMatchingModeEnum)[keyof typeof UserMatchingModeEnum]; + +export function instanceOfUserMatchingModeEnum(value: any): boolean { + for (const key in UserMatchingModeEnum) { + if (Object.prototype.hasOwnProperty.call(UserMatchingModeEnum, key)) { + if (UserMatchingModeEnum[key as keyof typeof UserMatchingModeEnum] === value) { + return true; + } + } + } + return false; +} + +export function UserMatchingModeEnumFromJSON(json: any): UserMatchingModeEnum { + return UserMatchingModeEnumFromJSONTyped(json, false); +} + +export function UserMatchingModeEnumFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): UserMatchingModeEnum { + return json as UserMatchingModeEnum; +} + +export function UserMatchingModeEnumToJSON(value?: UserMatchingModeEnum | null): any { + return value as any; +} + +export function UserMatchingModeEnumToJSONTyped( + value: any, + ignoreDiscriminator: boolean, +): UserMatchingModeEnum { + return value as UserMatchingModeEnum; +} diff --git a/packages/client-ts/src/models/UserOAuthSourceConnection.ts b/packages/client-ts/src/models/UserOAuthSourceConnection.ts new file mode 100644 index 0000000000..b6bf64c953 --- /dev/null +++ b/packages/client-ts/src/models/UserOAuthSourceConnection.ts @@ -0,0 +1,134 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Source } from "./Source"; +import { SourceFromJSON } from "./Source"; + +/** + * User source connection + * @export + * @interface UserOAuthSourceConnection + */ +export interface UserOAuthSourceConnection { + /** + * + * @type {number} + * @memberof UserOAuthSourceConnection + */ + readonly pk: number; + /** + * + * @type {number} + * @memberof UserOAuthSourceConnection + */ + user: number; + /** + * + * @type {string} + * @memberof UserOAuthSourceConnection + */ + source: string; + /** + * + * @type {Source} + * @memberof UserOAuthSourceConnection + */ + readonly sourceObj: Source; + /** + * + * @type {string} + * @memberof UserOAuthSourceConnection + */ + identifier: string; + /** + * + * @type {Date} + * @memberof UserOAuthSourceConnection + */ + readonly created: Date; + /** + * + * @type {Date} + * @memberof UserOAuthSourceConnection + */ + readonly lastUpdated: Date; + /** + * + * @type {Date} + * @memberof UserOAuthSourceConnection + */ + expires?: Date; +} + +/** + * Check if a given object implements the UserOAuthSourceConnection interface. + */ +export function instanceOfUserOAuthSourceConnection( + value: object, +): value is UserOAuthSourceConnection { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("user" in value) || value["user"] === undefined) return false; + if (!("source" in value) || value["source"] === undefined) return false; + if (!("sourceObj" in value) || value["sourceObj"] === undefined) return false; + if (!("identifier" in value) || value["identifier"] === undefined) return false; + if (!("created" in value) || value["created"] === undefined) return false; + if (!("lastUpdated" in value) || value["lastUpdated"] === undefined) return false; + return true; +} + +export function UserOAuthSourceConnectionFromJSON(json: any): UserOAuthSourceConnection { + return UserOAuthSourceConnectionFromJSONTyped(json, false); +} + +export function UserOAuthSourceConnectionFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): UserOAuthSourceConnection { + if (json == null) { + return json; + } + return { + pk: json["pk"], + user: json["user"], + source: json["source"], + sourceObj: SourceFromJSON(json["source_obj"]), + identifier: json["identifier"], + created: new Date(json["created"]), + lastUpdated: new Date(json["last_updated"]), + expires: json["expires"] == null ? undefined : new Date(json["expires"]), + }; +} + +export function UserOAuthSourceConnectionToJSON(json: any): UserOAuthSourceConnection { + return UserOAuthSourceConnectionToJSONTyped(json, false); +} + +export function UserOAuthSourceConnectionToJSONTyped( + value?: Omit< + UserOAuthSourceConnection, + "pk" | "source_obj" | "created" | "last_updated" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + user: value["user"], + source: value["source"], + identifier: value["identifier"], + expires: value["expires"] == null ? value["expires"] : value["expires"].toISOString(), + }; +} diff --git a/packages/client-ts/src/models/UserOAuthSourceConnectionRequest.ts b/packages/client-ts/src/models/UserOAuthSourceConnectionRequest.ts new file mode 100644 index 0000000000..76d4353964 --- /dev/null +++ b/packages/client-ts/src/models/UserOAuthSourceConnectionRequest.ts @@ -0,0 +1,108 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * User source connection + * @export + * @interface UserOAuthSourceConnectionRequest + */ +export interface UserOAuthSourceConnectionRequest { + /** + * + * @type {number} + * @memberof UserOAuthSourceConnectionRequest + */ + user: number; + /** + * + * @type {string} + * @memberof UserOAuthSourceConnectionRequest + */ + source: string; + /** + * + * @type {string} + * @memberof UserOAuthSourceConnectionRequest + */ + identifier: string; + /** + * + * @type {string} + * @memberof UserOAuthSourceConnectionRequest + */ + accessToken?: string | null; + /** + * + * @type {Date} + * @memberof UserOAuthSourceConnectionRequest + */ + expires?: Date; +} + +/** + * Check if a given object implements the UserOAuthSourceConnectionRequest interface. + */ +export function instanceOfUserOAuthSourceConnectionRequest( + value: object, +): value is UserOAuthSourceConnectionRequest { + if (!("user" in value) || value["user"] === undefined) return false; + if (!("source" in value) || value["source"] === undefined) return false; + if (!("identifier" in value) || value["identifier"] === undefined) return false; + return true; +} + +export function UserOAuthSourceConnectionRequestFromJSON( + json: any, +): UserOAuthSourceConnectionRequest { + return UserOAuthSourceConnectionRequestFromJSONTyped(json, false); +} + +export function UserOAuthSourceConnectionRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): UserOAuthSourceConnectionRequest { + if (json == null) { + return json; + } + return { + user: json["user"], + source: json["source"], + identifier: json["identifier"], + accessToken: json["access_token"] == null ? undefined : json["access_token"], + expires: json["expires"] == null ? undefined : new Date(json["expires"]), + }; +} + +export function UserOAuthSourceConnectionRequestToJSON( + json: any, +): UserOAuthSourceConnectionRequest { + return UserOAuthSourceConnectionRequestToJSONTyped(json, false); +} + +export function UserOAuthSourceConnectionRequestToJSONTyped( + value?: UserOAuthSourceConnectionRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + user: value["user"], + source: value["source"], + identifier: value["identifier"], + access_token: value["accessToken"], + expires: value["expires"] == null ? value["expires"] : value["expires"].toISOString(), + }; +} diff --git a/packages/client-ts/src/models/UserPasswordHashSetRequest.ts b/packages/client-ts/src/models/UserPasswordHashSetRequest.ts new file mode 100644 index 0000000000..39929e57be --- /dev/null +++ b/packages/client-ts/src/models/UserPasswordHashSetRequest.ts @@ -0,0 +1,70 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Payload to set a users' password hash directly + * @export + * @interface UserPasswordHashSetRequest + */ +export interface UserPasswordHashSetRequest { + /** + * + * @type {string} + * @memberof UserPasswordHashSetRequest + */ + password: string; +} + +/** + * Check if a given object implements the UserPasswordHashSetRequest interface. + */ +export function instanceOfUserPasswordHashSetRequest( + value: object, +): value is UserPasswordHashSetRequest { + if (!("password" in value) || value["password"] === undefined) return false; + return true; +} + +export function UserPasswordHashSetRequestFromJSON(json: any): UserPasswordHashSetRequest { + return UserPasswordHashSetRequestFromJSONTyped(json, false); +} + +export function UserPasswordHashSetRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): UserPasswordHashSetRequest { + if (json == null) { + return json; + } + return { + password: json["password"], + }; +} + +export function UserPasswordHashSetRequestToJSON(json: any): UserPasswordHashSetRequest { + return UserPasswordHashSetRequestToJSONTyped(json, false); +} + +export function UserPasswordHashSetRequestToJSONTyped( + value?: UserPasswordHashSetRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + password: value["password"], + }; +} diff --git a/packages/client-ts/src/models/UserPasswordSetRequest.ts b/packages/client-ts/src/models/UserPasswordSetRequest.ts new file mode 100644 index 0000000000..bc9761f000 --- /dev/null +++ b/packages/client-ts/src/models/UserPasswordSetRequest.ts @@ -0,0 +1,68 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Payload to set a users' password directly + * @export + * @interface UserPasswordSetRequest + */ +export interface UserPasswordSetRequest { + /** + * + * @type {string} + * @memberof UserPasswordSetRequest + */ + password: string; +} + +/** + * Check if a given object implements the UserPasswordSetRequest interface. + */ +export function instanceOfUserPasswordSetRequest(value: object): value is UserPasswordSetRequest { + if (!("password" in value) || value["password"] === undefined) return false; + return true; +} + +export function UserPasswordSetRequestFromJSON(json: any): UserPasswordSetRequest { + return UserPasswordSetRequestFromJSONTyped(json, false); +} + +export function UserPasswordSetRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): UserPasswordSetRequest { + if (json == null) { + return json; + } + return { + password: json["password"], + }; +} + +export function UserPasswordSetRequestToJSON(json: any): UserPasswordSetRequest { + return UserPasswordSetRequestToJSONTyped(json, false); +} + +export function UserPasswordSetRequestToJSONTyped( + value?: UserPasswordSetRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + password: value["password"], + }; +} diff --git a/packages/client-ts/src/models/UserPath.ts b/packages/client-ts/src/models/UserPath.ts new file mode 100644 index 0000000000..0796d9001e --- /dev/null +++ b/packages/client-ts/src/models/UserPath.ts @@ -0,0 +1,63 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + * @interface UserPath + */ +export interface UserPath { + /** + * + * @type {Array} + * @memberof UserPath + */ + readonly paths: Array; +} + +/** + * Check if a given object implements the UserPath interface. + */ +export function instanceOfUserPath(value: object): value is UserPath { + if (!("paths" in value) || value["paths"] === undefined) return false; + return true; +} + +export function UserPathFromJSON(json: any): UserPath { + return UserPathFromJSONTyped(json, false); +} + +export function UserPathFromJSONTyped(json: any, ignoreDiscriminator: boolean): UserPath { + if (json == null) { + return json; + } + return { + paths: json["paths"], + }; +} + +export function UserPathToJSON(json: any): UserPath { + return UserPathToJSONTyped(json, false); +} + +export function UserPathToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return {}; +} diff --git a/packages/client-ts/src/models/UserPlexSourceConnection.ts b/packages/client-ts/src/models/UserPlexSourceConnection.ts new file mode 100644 index 0000000000..f442cde7ba --- /dev/null +++ b/packages/client-ts/src/models/UserPlexSourceConnection.ts @@ -0,0 +1,123 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Source } from "./Source"; +import { SourceFromJSON } from "./Source"; + +/** + * User source connection + * @export + * @interface UserPlexSourceConnection + */ +export interface UserPlexSourceConnection { + /** + * + * @type {number} + * @memberof UserPlexSourceConnection + */ + readonly pk: number; + /** + * + * @type {number} + * @memberof UserPlexSourceConnection + */ + user: number; + /** + * + * @type {string} + * @memberof UserPlexSourceConnection + */ + source: string; + /** + * + * @type {Source} + * @memberof UserPlexSourceConnection + */ + readonly sourceObj: Source; + /** + * + * @type {string} + * @memberof UserPlexSourceConnection + */ + identifier: string; + /** + * + * @type {Date} + * @memberof UserPlexSourceConnection + */ + readonly created: Date; + /** + * + * @type {Date} + * @memberof UserPlexSourceConnection + */ + readonly lastUpdated: Date; +} + +/** + * Check if a given object implements the UserPlexSourceConnection interface. + */ +export function instanceOfUserPlexSourceConnection( + value: object, +): value is UserPlexSourceConnection { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("user" in value) || value["user"] === undefined) return false; + if (!("source" in value) || value["source"] === undefined) return false; + if (!("sourceObj" in value) || value["sourceObj"] === undefined) return false; + if (!("identifier" in value) || value["identifier"] === undefined) return false; + if (!("created" in value) || value["created"] === undefined) return false; + if (!("lastUpdated" in value) || value["lastUpdated"] === undefined) return false; + return true; +} + +export function UserPlexSourceConnectionFromJSON(json: any): UserPlexSourceConnection { + return UserPlexSourceConnectionFromJSONTyped(json, false); +} + +export function UserPlexSourceConnectionFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): UserPlexSourceConnection { + if (json == null) { + return json; + } + return { + pk: json["pk"], + user: json["user"], + source: json["source"], + sourceObj: SourceFromJSON(json["source_obj"]), + identifier: json["identifier"], + created: new Date(json["created"]), + lastUpdated: new Date(json["last_updated"]), + }; +} + +export function UserPlexSourceConnectionToJSON(json: any): UserPlexSourceConnection { + return UserPlexSourceConnectionToJSONTyped(json, false); +} + +export function UserPlexSourceConnectionToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + user: value["user"], + source: value["source"], + identifier: value["identifier"], + }; +} diff --git a/packages/client-ts/src/models/UserPlexSourceConnectionRequest.ts b/packages/client-ts/src/models/UserPlexSourceConnectionRequest.ts new file mode 100644 index 0000000000..effcb1f6c6 --- /dev/null +++ b/packages/client-ts/src/models/UserPlexSourceConnectionRequest.ts @@ -0,0 +1,99 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * User source connection + * @export + * @interface UserPlexSourceConnectionRequest + */ +export interface UserPlexSourceConnectionRequest { + /** + * + * @type {number} + * @memberof UserPlexSourceConnectionRequest + */ + user: number; + /** + * + * @type {string} + * @memberof UserPlexSourceConnectionRequest + */ + source: string; + /** + * + * @type {string} + * @memberof UserPlexSourceConnectionRequest + */ + identifier: string; + /** + * + * @type {string} + * @memberof UserPlexSourceConnectionRequest + */ + plexToken: string; +} + +/** + * Check if a given object implements the UserPlexSourceConnectionRequest interface. + */ +export function instanceOfUserPlexSourceConnectionRequest( + value: object, +): value is UserPlexSourceConnectionRequest { + if (!("user" in value) || value["user"] === undefined) return false; + if (!("source" in value) || value["source"] === undefined) return false; + if (!("identifier" in value) || value["identifier"] === undefined) return false; + if (!("plexToken" in value) || value["plexToken"] === undefined) return false; + return true; +} + +export function UserPlexSourceConnectionRequestFromJSON( + json: any, +): UserPlexSourceConnectionRequest { + return UserPlexSourceConnectionRequestFromJSONTyped(json, false); +} + +export function UserPlexSourceConnectionRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): UserPlexSourceConnectionRequest { + if (json == null) { + return json; + } + return { + user: json["user"], + source: json["source"], + identifier: json["identifier"], + plexToken: json["plex_token"], + }; +} + +export function UserPlexSourceConnectionRequestToJSON(json: any): UserPlexSourceConnectionRequest { + return UserPlexSourceConnectionRequestToJSONTyped(json, false); +} + +export function UserPlexSourceConnectionRequestToJSONTyped( + value?: UserPlexSourceConnectionRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + user: value["user"], + source: value["source"], + identifier: value["identifier"], + plex_token: value["plexToken"], + }; +} diff --git a/packages/client-ts/src/models/UserRecoveryEmailRequest.ts b/packages/client-ts/src/models/UserRecoveryEmailRequest.ts new file mode 100644 index 0000000000..7ad914025e --- /dev/null +++ b/packages/client-ts/src/models/UserRecoveryEmailRequest.ts @@ -0,0 +1,78 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Payload to create and email a recovery link + * @export + * @interface UserRecoveryEmailRequest + */ +export interface UserRecoveryEmailRequest { + /** + * + * @type {string} + * @memberof UserRecoveryEmailRequest + */ + tokenDuration?: string; + /** + * + * @type {string} + * @memberof UserRecoveryEmailRequest + */ + emailStage: string; +} + +/** + * Check if a given object implements the UserRecoveryEmailRequest interface. + */ +export function instanceOfUserRecoveryEmailRequest( + value: object, +): value is UserRecoveryEmailRequest { + if (!("emailStage" in value) || value["emailStage"] === undefined) return false; + return true; +} + +export function UserRecoveryEmailRequestFromJSON(json: any): UserRecoveryEmailRequest { + return UserRecoveryEmailRequestFromJSONTyped(json, false); +} + +export function UserRecoveryEmailRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): UserRecoveryEmailRequest { + if (json == null) { + return json; + } + return { + tokenDuration: json["token_duration"] == null ? undefined : json["token_duration"], + emailStage: json["email_stage"], + }; +} + +export function UserRecoveryEmailRequestToJSON(json: any): UserRecoveryEmailRequest { + return UserRecoveryEmailRequestToJSONTyped(json, false); +} + +export function UserRecoveryEmailRequestToJSONTyped( + value?: UserRecoveryEmailRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + token_duration: value["tokenDuration"], + email_stage: value["emailStage"], + }; +} diff --git a/packages/client-ts/src/models/UserRecoveryLinkRequest.ts b/packages/client-ts/src/models/UserRecoveryLinkRequest.ts new file mode 100644 index 0000000000..79d146baf4 --- /dev/null +++ b/packages/client-ts/src/models/UserRecoveryLinkRequest.ts @@ -0,0 +1,67 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Payload to create a recovery link + * @export + * @interface UserRecoveryLinkRequest + */ +export interface UserRecoveryLinkRequest { + /** + * + * @type {string} + * @memberof UserRecoveryLinkRequest + */ + tokenDuration?: string; +} + +/** + * Check if a given object implements the UserRecoveryLinkRequest interface. + */ +export function instanceOfUserRecoveryLinkRequest(value: object): value is UserRecoveryLinkRequest { + return true; +} + +export function UserRecoveryLinkRequestFromJSON(json: any): UserRecoveryLinkRequest { + return UserRecoveryLinkRequestFromJSONTyped(json, false); +} + +export function UserRecoveryLinkRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): UserRecoveryLinkRequest { + if (json == null) { + return json; + } + return { + tokenDuration: json["token_duration"] == null ? undefined : json["token_duration"], + }; +} + +export function UserRecoveryLinkRequestToJSON(json: any): UserRecoveryLinkRequest { + return UserRecoveryLinkRequestToJSONTyped(json, false); +} + +export function UserRecoveryLinkRequestToJSONTyped( + value?: UserRecoveryLinkRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + token_duration: value["tokenDuration"], + }; +} diff --git a/packages/client-ts/src/models/UserRequest.ts b/packages/client-ts/src/models/UserRequest.ts new file mode 100644 index 0000000000..dccfa30b4c --- /dev/null +++ b/packages/client-ts/src/models/UserRequest.ts @@ -0,0 +1,142 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { UserTypeEnum } from "./UserTypeEnum"; +import { UserTypeEnumFromJSON, UserTypeEnumToJSON } from "./UserTypeEnum"; + +/** + * User Serializer + * @export + * @interface UserRequest + */ +export interface UserRequest { + /** + * + * @type {string} + * @memberof UserRequest + */ + username: string; + /** + * User's display name. + * @type {string} + * @memberof UserRequest + */ + name: string; + /** + * Designates whether this user should be treated as active. Unselect this instead of deleting accounts. + * @type {boolean} + * @memberof UserRequest + */ + isActive?: boolean; + /** + * + * @type {Date} + * @memberof UserRequest + */ + lastLogin?: Date | null; + /** + * + * @type {Array} + * @memberof UserRequest + */ + groups?: Array; + /** + * + * @type {Array} + * @memberof UserRequest + */ + roles?: Array; + /** + * + * @type {string} + * @memberof UserRequest + */ + email?: string; + /** + * + * @type {{ [key: string]: any; }} + * @memberof UserRequest + */ + attributes?: { [key: string]: any }; + /** + * + * @type {string} + * @memberof UserRequest + */ + path?: string; + /** + * + * @type {UserTypeEnum} + * @memberof UserRequest + */ + type?: UserTypeEnum; +} + +/** + * Check if a given object implements the UserRequest interface. + */ +export function instanceOfUserRequest(value: object): value is UserRequest { + if (!("username" in value) || value["username"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + return true; +} + +export function UserRequestFromJSON(json: any): UserRequest { + return UserRequestFromJSONTyped(json, false); +} + +export function UserRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): UserRequest { + if (json == null) { + return json; + } + return { + username: json["username"], + name: json["name"], + isActive: json["is_active"] == null ? undefined : json["is_active"], + lastLogin: json["last_login"] == null ? undefined : new Date(json["last_login"]), + groups: json["groups"] == null ? undefined : json["groups"], + roles: json["roles"] == null ? undefined : json["roles"], + email: json["email"] == null ? undefined : json["email"], + attributes: json["attributes"] == null ? undefined : json["attributes"], + path: json["path"] == null ? undefined : json["path"], + type: json["type"] == null ? undefined : UserTypeEnumFromJSON(json["type"]), + }; +} + +export function UserRequestToJSON(json: any): UserRequest { + return UserRequestToJSONTyped(json, false); +} + +export function UserRequestToJSONTyped( + value?: UserRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + username: value["username"], + name: value["name"], + is_active: value["isActive"], + last_login: + value["lastLogin"] == null ? value["lastLogin"] : value["lastLogin"].toISOString(), + groups: value["groups"], + roles: value["roles"], + email: value["email"], + attributes: value["attributes"], + path: value["path"], + type: UserTypeEnumToJSON(value["type"]), + }; +} diff --git a/packages/client-ts/src/models/UserSAMLSourceConnection.ts b/packages/client-ts/src/models/UserSAMLSourceConnection.ts new file mode 100644 index 0000000000..d175056d09 --- /dev/null +++ b/packages/client-ts/src/models/UserSAMLSourceConnection.ts @@ -0,0 +1,123 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Source } from "./Source"; +import { SourceFromJSON } from "./Source"; + +/** + * User source connection + * @export + * @interface UserSAMLSourceConnection + */ +export interface UserSAMLSourceConnection { + /** + * + * @type {number} + * @memberof UserSAMLSourceConnection + */ + readonly pk: number; + /** + * + * @type {number} + * @memberof UserSAMLSourceConnection + */ + user: number; + /** + * + * @type {string} + * @memberof UserSAMLSourceConnection + */ + source: string; + /** + * + * @type {Source} + * @memberof UserSAMLSourceConnection + */ + readonly sourceObj: Source; + /** + * + * @type {string} + * @memberof UserSAMLSourceConnection + */ + identifier: string; + /** + * + * @type {Date} + * @memberof UserSAMLSourceConnection + */ + readonly created: Date; + /** + * + * @type {Date} + * @memberof UserSAMLSourceConnection + */ + readonly lastUpdated: Date; +} + +/** + * Check if a given object implements the UserSAMLSourceConnection interface. + */ +export function instanceOfUserSAMLSourceConnection( + value: object, +): value is UserSAMLSourceConnection { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("user" in value) || value["user"] === undefined) return false; + if (!("source" in value) || value["source"] === undefined) return false; + if (!("sourceObj" in value) || value["sourceObj"] === undefined) return false; + if (!("identifier" in value) || value["identifier"] === undefined) return false; + if (!("created" in value) || value["created"] === undefined) return false; + if (!("lastUpdated" in value) || value["lastUpdated"] === undefined) return false; + return true; +} + +export function UserSAMLSourceConnectionFromJSON(json: any): UserSAMLSourceConnection { + return UserSAMLSourceConnectionFromJSONTyped(json, false); +} + +export function UserSAMLSourceConnectionFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): UserSAMLSourceConnection { + if (json == null) { + return json; + } + return { + pk: json["pk"], + user: json["user"], + source: json["source"], + sourceObj: SourceFromJSON(json["source_obj"]), + identifier: json["identifier"], + created: new Date(json["created"]), + lastUpdated: new Date(json["last_updated"]), + }; +} + +export function UserSAMLSourceConnectionToJSON(json: any): UserSAMLSourceConnection { + return UserSAMLSourceConnectionToJSONTyped(json, false); +} + +export function UserSAMLSourceConnectionToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + user: value["user"], + source: value["source"], + identifier: value["identifier"], + }; +} diff --git a/packages/client-ts/src/models/UserSAMLSourceConnectionRequest.ts b/packages/client-ts/src/models/UserSAMLSourceConnectionRequest.ts new file mode 100644 index 0000000000..3365b561b6 --- /dev/null +++ b/packages/client-ts/src/models/UserSAMLSourceConnectionRequest.ts @@ -0,0 +1,90 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * User source connection + * @export + * @interface UserSAMLSourceConnectionRequest + */ +export interface UserSAMLSourceConnectionRequest { + /** + * + * @type {number} + * @memberof UserSAMLSourceConnectionRequest + */ + user: number; + /** + * + * @type {string} + * @memberof UserSAMLSourceConnectionRequest + */ + source: string; + /** + * + * @type {string} + * @memberof UserSAMLSourceConnectionRequest + */ + identifier: string; +} + +/** + * Check if a given object implements the UserSAMLSourceConnectionRequest interface. + */ +export function instanceOfUserSAMLSourceConnectionRequest( + value: object, +): value is UserSAMLSourceConnectionRequest { + if (!("user" in value) || value["user"] === undefined) return false; + if (!("source" in value) || value["source"] === undefined) return false; + if (!("identifier" in value) || value["identifier"] === undefined) return false; + return true; +} + +export function UserSAMLSourceConnectionRequestFromJSON( + json: any, +): UserSAMLSourceConnectionRequest { + return UserSAMLSourceConnectionRequestFromJSONTyped(json, false); +} + +export function UserSAMLSourceConnectionRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): UserSAMLSourceConnectionRequest { + if (json == null) { + return json; + } + return { + user: json["user"], + source: json["source"], + identifier: json["identifier"], + }; +} + +export function UserSAMLSourceConnectionRequestToJSON(json: any): UserSAMLSourceConnectionRequest { + return UserSAMLSourceConnectionRequestToJSONTyped(json, false); +} + +export function UserSAMLSourceConnectionRequestToJSONTyped( + value?: UserSAMLSourceConnectionRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + user: value["user"], + source: value["source"], + identifier: value["identifier"], + }; +} diff --git a/packages/client-ts/src/models/UserSelf.ts b/packages/client-ts/src/models/UserSelf.ts new file mode 100644 index 0000000000..6ca93be09c --- /dev/null +++ b/packages/client-ts/src/models/UserSelf.ts @@ -0,0 +1,180 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { UserSelfGroups } from "./UserSelfGroups"; +import { UserSelfGroupsFromJSON } from "./UserSelfGroups"; +import type { UserSelfRoles } from "./UserSelfRoles"; +import { UserSelfRolesFromJSON } from "./UserSelfRoles"; +import type { UserTypeEnum } from "./UserTypeEnum"; +import { UserTypeEnumFromJSON, UserTypeEnumToJSON } from "./UserTypeEnum"; + +/** + * User Serializer for information a user can retrieve about themselves + * @export + * @interface UserSelf + */ +export interface UserSelf { + /** + * + * @type {number} + * @memberof UserSelf + */ + readonly pk: number; + /** + * Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only. + * @type {string} + * @memberof UserSelf + */ + username: string; + /** + * User's display name. + * @type {string} + * @memberof UserSelf + */ + name: string; + /** + * Designates whether this user should be treated as active. Unselect this instead of deleting accounts. + * @type {boolean} + * @memberof UserSelf + */ + readonly isActive: boolean; + /** + * + * @type {boolean} + * @memberof UserSelf + */ + readonly isSuperuser: boolean; + /** + * + * @type {Array} + * @memberof UserSelf + */ + readonly groups: Array; + /** + * + * @type {Array} + * @memberof UserSelf + */ + readonly roles: Array; + /** + * + * @type {string} + * @memberof UserSelf + */ + email?: string; + /** + * User's avatar, either a http/https URL or a data URI + * @type {string} + * @memberof UserSelf + */ + readonly avatar: string; + /** + * + * @type {string} + * @memberof UserSelf + */ + readonly uid: string; + /** + * Get user settings with brand and group settings applied + * @type {{ [key: string]: any; }} + * @memberof UserSelf + */ + readonly settings: { [key: string]: any }; + /** + * + * @type {UserTypeEnum} + * @memberof UserSelf + */ + type?: UserTypeEnum; + /** + * Get all system permissions assigned to the user + * @type {Array} + * @memberof UserSelf + */ + readonly systemPermissions: Array; +} + +/** + * Check if a given object implements the UserSelf interface. + */ +export function instanceOfUserSelf(value: object): value is UserSelf { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("username" in value) || value["username"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("isActive" in value) || value["isActive"] === undefined) return false; + if (!("isSuperuser" in value) || value["isSuperuser"] === undefined) return false; + if (!("groups" in value) || value["groups"] === undefined) return false; + if (!("roles" in value) || value["roles"] === undefined) return false; + if (!("avatar" in value) || value["avatar"] === undefined) return false; + if (!("uid" in value) || value["uid"] === undefined) return false; + if (!("settings" in value) || value["settings"] === undefined) return false; + if (!("systemPermissions" in value) || value["systemPermissions"] === undefined) return false; + return true; +} + +export function UserSelfFromJSON(json: any): UserSelf { + return UserSelfFromJSONTyped(json, false); +} + +export function UserSelfFromJSONTyped(json: any, ignoreDiscriminator: boolean): UserSelf { + if (json == null) { + return json; + } + return { + pk: json["pk"], + username: json["username"], + name: json["name"], + isActive: json["is_active"], + isSuperuser: json["is_superuser"], + groups: (json["groups"] as Array).map(UserSelfGroupsFromJSON), + roles: (json["roles"] as Array).map(UserSelfRolesFromJSON), + email: json["email"] == null ? undefined : json["email"], + avatar: json["avatar"], + uid: json["uid"], + settings: json["settings"], + type: json["type"] == null ? undefined : UserTypeEnumFromJSON(json["type"]), + systemPermissions: json["system_permissions"], + }; +} + +export function UserSelfToJSON(json: any): UserSelf { + return UserSelfToJSONTyped(json, false); +} + +export function UserSelfToJSONTyped( + value?: Omit< + UserSelf, + | "pk" + | "is_active" + | "is_superuser" + | "groups" + | "roles" + | "avatar" + | "uid" + | "settings" + | "system_permissions" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + username: value["username"], + name: value["name"], + email: value["email"], + type: UserTypeEnumToJSON(value["type"]), + }; +} diff --git a/packages/client-ts/src/models/UserSelfGroups.ts b/packages/client-ts/src/models/UserSelfGroups.ts new file mode 100644 index 0000000000..aea9caf9e3 --- /dev/null +++ b/packages/client-ts/src/models/UserSelfGroups.ts @@ -0,0 +1,74 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + * @interface UserSelfGroups + */ +export interface UserSelfGroups { + /** + * + * @type {string} + * @memberof UserSelfGroups + */ + readonly name: string; + /** + * + * @type {string} + * @memberof UserSelfGroups + */ + readonly pk: string; +} + +/** + * Check if a given object implements the UserSelfGroups interface. + */ +export function instanceOfUserSelfGroups(value: object): value is UserSelfGroups { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("pk" in value) || value["pk"] === undefined) return false; + return true; +} + +export function UserSelfGroupsFromJSON(json: any): UserSelfGroups { + return UserSelfGroupsFromJSONTyped(json, false); +} + +export function UserSelfGroupsFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): UserSelfGroups { + if (json == null) { + return json; + } + return { + name: json["name"], + pk: json["pk"], + }; +} + +export function UserSelfGroupsToJSON(json: any): UserSelfGroups { + return UserSelfGroupsToJSONTyped(json, false); +} + +export function UserSelfGroupsToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return {}; +} diff --git a/packages/client-ts/src/models/UserSelfRoles.ts b/packages/client-ts/src/models/UserSelfRoles.ts new file mode 100644 index 0000000000..f7684db68c --- /dev/null +++ b/packages/client-ts/src/models/UserSelfRoles.ts @@ -0,0 +1,71 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + * @interface UserSelfRoles + */ +export interface UserSelfRoles { + /** + * + * @type {string} + * @memberof UserSelfRoles + */ + readonly name: string; + /** + * + * @type {string} + * @memberof UserSelfRoles + */ + readonly pk: string; +} + +/** + * Check if a given object implements the UserSelfRoles interface. + */ +export function instanceOfUserSelfRoles(value: object): value is UserSelfRoles { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("pk" in value) || value["pk"] === undefined) return false; + return true; +} + +export function UserSelfRolesFromJSON(json: any): UserSelfRoles { + return UserSelfRolesFromJSONTyped(json, false); +} + +export function UserSelfRolesFromJSONTyped(json: any, ignoreDiscriminator: boolean): UserSelfRoles { + if (json == null) { + return json; + } + return { + name: json["name"], + pk: json["pk"], + }; +} + +export function UserSelfRolesToJSON(json: any): UserSelfRoles { + return UserSelfRolesToJSONTyped(json, false); +} + +export function UserSelfRolesToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return {}; +} diff --git a/packages/client-ts/src/models/UserServiceAccountRequest.ts b/packages/client-ts/src/models/UserServiceAccountRequest.ts new file mode 100644 index 0000000000..94a185927e --- /dev/null +++ b/packages/client-ts/src/models/UserServiceAccountRequest.ts @@ -0,0 +1,94 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Payload to create a service account + * @export + * @interface UserServiceAccountRequest + */ +export interface UserServiceAccountRequest { + /** + * + * @type {string} + * @memberof UserServiceAccountRequest + */ + name: string; + /** + * + * @type {boolean} + * @memberof UserServiceAccountRequest + */ + createGroup?: boolean; + /** + * + * @type {boolean} + * @memberof UserServiceAccountRequest + */ + expiring?: boolean; + /** + * If not provided, valid for 360 days + * @type {Date} + * @memberof UserServiceAccountRequest + */ + expires?: Date; +} + +/** + * Check if a given object implements the UserServiceAccountRequest interface. + */ +export function instanceOfUserServiceAccountRequest( + value: object, +): value is UserServiceAccountRequest { + if (!("name" in value) || value["name"] === undefined) return false; + return true; +} + +export function UserServiceAccountRequestFromJSON(json: any): UserServiceAccountRequest { + return UserServiceAccountRequestFromJSONTyped(json, false); +} + +export function UserServiceAccountRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): UserServiceAccountRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + createGroup: json["create_group"] == null ? undefined : json["create_group"], + expiring: json["expiring"] == null ? undefined : json["expiring"], + expires: json["expires"] == null ? undefined : new Date(json["expires"]), + }; +} + +export function UserServiceAccountRequestToJSON(json: any): UserServiceAccountRequest { + return UserServiceAccountRequestToJSONTyped(json, false); +} + +export function UserServiceAccountRequestToJSONTyped( + value?: UserServiceAccountRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + create_group: value["createGroup"], + expiring: value["expiring"], + expires: value["expires"] == null ? value["expires"] : value["expires"].toISOString(), + }; +} diff --git a/packages/client-ts/src/models/UserServiceAccountResponse.ts b/packages/client-ts/src/models/UserServiceAccountResponse.ts new file mode 100644 index 0000000000..a9772f3fec --- /dev/null +++ b/packages/client-ts/src/models/UserServiceAccountResponse.ts @@ -0,0 +1,105 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + * @interface UserServiceAccountResponse + */ +export interface UserServiceAccountResponse { + /** + * + * @type {string} + * @memberof UserServiceAccountResponse + */ + username: string; + /** + * + * @type {string} + * @memberof UserServiceAccountResponse + */ + token: string; + /** + * + * @type {string} + * @memberof UserServiceAccountResponse + */ + userUid: string; + /** + * + * @type {number} + * @memberof UserServiceAccountResponse + */ + userPk: number; + /** + * + * @type {string} + * @memberof UserServiceAccountResponse + */ + groupPk?: string; +} + +/** + * Check if a given object implements the UserServiceAccountResponse interface. + */ +export function instanceOfUserServiceAccountResponse( + value: object, +): value is UserServiceAccountResponse { + if (!("username" in value) || value["username"] === undefined) return false; + if (!("token" in value) || value["token"] === undefined) return false; + if (!("userUid" in value) || value["userUid"] === undefined) return false; + if (!("userPk" in value) || value["userPk"] === undefined) return false; + return true; +} + +export function UserServiceAccountResponseFromJSON(json: any): UserServiceAccountResponse { + return UserServiceAccountResponseFromJSONTyped(json, false); +} + +export function UserServiceAccountResponseFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): UserServiceAccountResponse { + if (json == null) { + return json; + } + return { + username: json["username"], + token: json["token"], + userUid: json["user_uid"], + userPk: json["user_pk"], + groupPk: json["group_pk"] == null ? undefined : json["group_pk"], + }; +} + +export function UserServiceAccountResponseToJSON(json: any): UserServiceAccountResponse { + return UserServiceAccountResponseToJSONTyped(json, false); +} + +export function UserServiceAccountResponseToJSONTyped( + value?: UserServiceAccountResponse | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + username: value["username"], + token: value["token"], + user_uid: value["userUid"], + user_pk: value["userPk"], + group_pk: value["groupPk"], + }; +} diff --git a/packages/client-ts/src/models/UserSetting.ts b/packages/client-ts/src/models/UserSetting.ts new file mode 100644 index 0000000000..a916091cda --- /dev/null +++ b/packages/client-ts/src/models/UserSetting.ts @@ -0,0 +1,99 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Serializer for User settings for stages and sources + * @export + * @interface UserSetting + */ +export interface UserSetting { + /** + * + * @type {string} + * @memberof UserSetting + */ + objectUid: string; + /** + * + * @type {string} + * @memberof UserSetting + */ + component: string; + /** + * + * @type {string} + * @memberof UserSetting + */ + title: string; + /** + * + * @type {string} + * @memberof UserSetting + */ + configureUrl?: string; + /** + * + * @type {string} + * @memberof UserSetting + */ + iconUrl?: string; +} + +/** + * Check if a given object implements the UserSetting interface. + */ +export function instanceOfUserSetting(value: object): value is UserSetting { + if (!("objectUid" in value) || value["objectUid"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if (!("title" in value) || value["title"] === undefined) return false; + return true; +} + +export function UserSettingFromJSON(json: any): UserSetting { + return UserSettingFromJSONTyped(json, false); +} + +export function UserSettingFromJSONTyped(json: any, ignoreDiscriminator: boolean): UserSetting { + if (json == null) { + return json; + } + return { + objectUid: json["object_uid"], + component: json["component"], + title: json["title"], + configureUrl: json["configure_url"] == null ? undefined : json["configure_url"], + iconUrl: json["icon_url"] == null ? undefined : json["icon_url"], + }; +} + +export function UserSettingToJSON(json: any): UserSetting { + return UserSettingToJSONTyped(json, false); +} + +export function UserSettingToJSONTyped( + value?: UserSetting | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + object_uid: value["objectUid"], + component: value["component"], + title: value["title"], + configure_url: value["configureUrl"], + icon_url: value["iconUrl"], + }; +} diff --git a/packages/client-ts/src/models/UserSourceConnection.ts b/packages/client-ts/src/models/UserSourceConnection.ts new file mode 100644 index 0000000000..ba85d6c13d --- /dev/null +++ b/packages/client-ts/src/models/UserSourceConnection.ts @@ -0,0 +1,121 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Source } from "./Source"; +import { SourceFromJSON } from "./Source"; + +/** + * User source connection + * @export + * @interface UserSourceConnection + */ +export interface UserSourceConnection { + /** + * + * @type {number} + * @memberof UserSourceConnection + */ + readonly pk: number; + /** + * + * @type {number} + * @memberof UserSourceConnection + */ + user: number; + /** + * + * @type {string} + * @memberof UserSourceConnection + */ + source: string; + /** + * + * @type {Source} + * @memberof UserSourceConnection + */ + readonly sourceObj: Source; + /** + * + * @type {string} + * @memberof UserSourceConnection + */ + identifier: string; + /** + * + * @type {Date} + * @memberof UserSourceConnection + */ + readonly created: Date; + /** + * + * @type {Date} + * @memberof UserSourceConnection + */ + readonly lastUpdated: Date; +} + +/** + * Check if a given object implements the UserSourceConnection interface. + */ +export function instanceOfUserSourceConnection(value: object): value is UserSourceConnection { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("user" in value) || value["user"] === undefined) return false; + if (!("source" in value) || value["source"] === undefined) return false; + if (!("sourceObj" in value) || value["sourceObj"] === undefined) return false; + if (!("identifier" in value) || value["identifier"] === undefined) return false; + if (!("created" in value) || value["created"] === undefined) return false; + if (!("lastUpdated" in value) || value["lastUpdated"] === undefined) return false; + return true; +} + +export function UserSourceConnectionFromJSON(json: any): UserSourceConnection { + return UserSourceConnectionFromJSONTyped(json, false); +} + +export function UserSourceConnectionFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): UserSourceConnection { + if (json == null) { + return json; + } + return { + pk: json["pk"], + user: json["user"], + source: json["source"], + sourceObj: SourceFromJSON(json["source_obj"]), + identifier: json["identifier"], + created: new Date(json["created"]), + lastUpdated: new Date(json["last_updated"]), + }; +} + +export function UserSourceConnectionToJSON(json: any): UserSourceConnection { + return UserSourceConnectionToJSONTyped(json, false); +} + +export function UserSourceConnectionToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + user: value["user"], + source: value["source"], + identifier: value["identifier"], + }; +} diff --git a/packages/client-ts/src/models/UserSourceConnectionRequest.ts b/packages/client-ts/src/models/UserSourceConnectionRequest.ts new file mode 100644 index 0000000000..7b8d668f8b --- /dev/null +++ b/packages/client-ts/src/models/UserSourceConnectionRequest.ts @@ -0,0 +1,88 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * User source connection + * @export + * @interface UserSourceConnectionRequest + */ +export interface UserSourceConnectionRequest { + /** + * + * @type {number} + * @memberof UserSourceConnectionRequest + */ + user: number; + /** + * + * @type {string} + * @memberof UserSourceConnectionRequest + */ + source: string; + /** + * + * @type {string} + * @memberof UserSourceConnectionRequest + */ + identifier: string; +} + +/** + * Check if a given object implements the UserSourceConnectionRequest interface. + */ +export function instanceOfUserSourceConnectionRequest( + value: object, +): value is UserSourceConnectionRequest { + if (!("user" in value) || value["user"] === undefined) return false; + if (!("source" in value) || value["source"] === undefined) return false; + if (!("identifier" in value) || value["identifier"] === undefined) return false; + return true; +} + +export function UserSourceConnectionRequestFromJSON(json: any): UserSourceConnectionRequest { + return UserSourceConnectionRequestFromJSONTyped(json, false); +} + +export function UserSourceConnectionRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): UserSourceConnectionRequest { + if (json == null) { + return json; + } + return { + user: json["user"], + source: json["source"], + identifier: json["identifier"], + }; +} + +export function UserSourceConnectionRequestToJSON(json: any): UserSourceConnectionRequest { + return UserSourceConnectionRequestToJSONTyped(json, false); +} + +export function UserSourceConnectionRequestToJSONTyped( + value?: UserSourceConnectionRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + user: value["user"], + source: value["source"], + identifier: value["identifier"], + }; +} diff --git a/packages/client-ts/src/models/UserTelegramSourceConnection.ts b/packages/client-ts/src/models/UserTelegramSourceConnection.ts new file mode 100644 index 0000000000..c0d46520e2 --- /dev/null +++ b/packages/client-ts/src/models/UserTelegramSourceConnection.ts @@ -0,0 +1,126 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { Source } from "./Source"; +import { SourceFromJSON } from "./Source"; + +/** + * User source connection + * @export + * @interface UserTelegramSourceConnection + */ +export interface UserTelegramSourceConnection { + /** + * + * @type {number} + * @memberof UserTelegramSourceConnection + */ + readonly pk: number; + /** + * + * @type {number} + * @memberof UserTelegramSourceConnection + */ + user: number; + /** + * + * @type {string} + * @memberof UserTelegramSourceConnection + */ + source: string; + /** + * + * @type {Source} + * @memberof UserTelegramSourceConnection + */ + readonly sourceObj: Source; + /** + * + * @type {string} + * @memberof UserTelegramSourceConnection + */ + identifier: string; + /** + * + * @type {Date} + * @memberof UserTelegramSourceConnection + */ + readonly created: Date; + /** + * + * @type {Date} + * @memberof UserTelegramSourceConnection + */ + readonly lastUpdated: Date; +} + +/** + * Check if a given object implements the UserTelegramSourceConnection interface. + */ +export function instanceOfUserTelegramSourceConnection( + value: object, +): value is UserTelegramSourceConnection { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("user" in value) || value["user"] === undefined) return false; + if (!("source" in value) || value["source"] === undefined) return false; + if (!("sourceObj" in value) || value["sourceObj"] === undefined) return false; + if (!("identifier" in value) || value["identifier"] === undefined) return false; + if (!("created" in value) || value["created"] === undefined) return false; + if (!("lastUpdated" in value) || value["lastUpdated"] === undefined) return false; + return true; +} + +export function UserTelegramSourceConnectionFromJSON(json: any): UserTelegramSourceConnection { + return UserTelegramSourceConnectionFromJSONTyped(json, false); +} + +export function UserTelegramSourceConnectionFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): UserTelegramSourceConnection { + if (json == null) { + return json; + } + return { + pk: json["pk"], + user: json["user"], + source: json["source"], + sourceObj: SourceFromJSON(json["source_obj"]), + identifier: json["identifier"], + created: new Date(json["created"]), + lastUpdated: new Date(json["last_updated"]), + }; +} + +export function UserTelegramSourceConnectionToJSON(json: any): UserTelegramSourceConnection { + return UserTelegramSourceConnectionToJSONTyped(json, false); +} + +export function UserTelegramSourceConnectionToJSONTyped( + value?: Omit< + UserTelegramSourceConnection, + "pk" | "source_obj" | "created" | "last_updated" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + user: value["user"], + source: value["source"], + identifier: value["identifier"], + }; +} diff --git a/packages/client-ts/src/models/UserTelegramSourceConnectionRequest.ts b/packages/client-ts/src/models/UserTelegramSourceConnectionRequest.ts new file mode 100644 index 0000000000..a70f19194a --- /dev/null +++ b/packages/client-ts/src/models/UserTelegramSourceConnectionRequest.ts @@ -0,0 +1,92 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * User source connection + * @export + * @interface UserTelegramSourceConnectionRequest + */ +export interface UserTelegramSourceConnectionRequest { + /** + * + * @type {number} + * @memberof UserTelegramSourceConnectionRequest + */ + user: number; + /** + * + * @type {string} + * @memberof UserTelegramSourceConnectionRequest + */ + source: string; + /** + * + * @type {string} + * @memberof UserTelegramSourceConnectionRequest + */ + identifier: string; +} + +/** + * Check if a given object implements the UserTelegramSourceConnectionRequest interface. + */ +export function instanceOfUserTelegramSourceConnectionRequest( + value: object, +): value is UserTelegramSourceConnectionRequest { + if (!("user" in value) || value["user"] === undefined) return false; + if (!("source" in value) || value["source"] === undefined) return false; + if (!("identifier" in value) || value["identifier"] === undefined) return false; + return true; +} + +export function UserTelegramSourceConnectionRequestFromJSON( + json: any, +): UserTelegramSourceConnectionRequest { + return UserTelegramSourceConnectionRequestFromJSONTyped(json, false); +} + +export function UserTelegramSourceConnectionRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): UserTelegramSourceConnectionRequest { + if (json == null) { + return json; + } + return { + user: json["user"], + source: json["source"], + identifier: json["identifier"], + }; +} + +export function UserTelegramSourceConnectionRequestToJSON( + json: any, +): UserTelegramSourceConnectionRequest { + return UserTelegramSourceConnectionRequestToJSONTyped(json, false); +} + +export function UserTelegramSourceConnectionRequestToJSONTyped( + value?: UserTelegramSourceConnectionRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + user: value["user"], + source: value["source"], + identifier: value["identifier"], + }; +} diff --git a/packages/client-ts/src/models/UserTypeEnum.ts b/packages/client-ts/src/models/UserTypeEnum.ts new file mode 100644 index 0000000000..629043523b --- /dev/null +++ b/packages/client-ts/src/models/UserTypeEnum.ts @@ -0,0 +1,53 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const UserTypeEnum = { + Internal: "internal", + External: "external", + ServiceAccount: "service_account", + InternalServiceAccount: "internal_service_account", + UnknownDefaultOpenApi: "11184809", +} as const; +export type UserTypeEnum = (typeof UserTypeEnum)[keyof typeof UserTypeEnum]; + +export function instanceOfUserTypeEnum(value: any): boolean { + for (const key in UserTypeEnum) { + if (Object.prototype.hasOwnProperty.call(UserTypeEnum, key)) { + if (UserTypeEnum[key as keyof typeof UserTypeEnum] === value) { + return true; + } + } + } + return false; +} + +export function UserTypeEnumFromJSON(json: any): UserTypeEnum { + return UserTypeEnumFromJSONTyped(json, false); +} + +export function UserTypeEnumFromJSONTyped(json: any, ignoreDiscriminator: boolean): UserTypeEnum { + return json as UserTypeEnum; +} + +export function UserTypeEnumToJSON(value?: UserTypeEnum | null): any { + return value as any; +} + +export function UserTypeEnumToJSONTyped(value: any, ignoreDiscriminator: boolean): UserTypeEnum { + return value as UserTypeEnum; +} diff --git a/packages/client-ts/src/models/UserVerificationEnum.ts b/packages/client-ts/src/models/UserVerificationEnum.ts new file mode 100644 index 0000000000..8bc7e76e1f --- /dev/null +++ b/packages/client-ts/src/models/UserVerificationEnum.ts @@ -0,0 +1,58 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const UserVerificationEnum = { + Required: "required", + Preferred: "preferred", + Discouraged: "discouraged", + UnknownDefaultOpenApi: "11184809", +} as const; +export type UserVerificationEnum = (typeof UserVerificationEnum)[keyof typeof UserVerificationEnum]; + +export function instanceOfUserVerificationEnum(value: any): boolean { + for (const key in UserVerificationEnum) { + if (Object.prototype.hasOwnProperty.call(UserVerificationEnum, key)) { + if (UserVerificationEnum[key as keyof typeof UserVerificationEnum] === value) { + return true; + } + } + } + return false; +} + +export function UserVerificationEnumFromJSON(json: any): UserVerificationEnum { + return UserVerificationEnumFromJSONTyped(json, false); +} + +export function UserVerificationEnumFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): UserVerificationEnum { + return json as UserVerificationEnum; +} + +export function UserVerificationEnumToJSON(value?: UserVerificationEnum | null): any { + return value as any; +} + +export function UserVerificationEnumToJSONTyped( + value: any, + ignoreDiscriminator: boolean, +): UserVerificationEnum { + return value as UserVerificationEnum; +} diff --git a/packages/client-ts/src/models/UserWriteStage.ts b/packages/client-ts/src/models/UserWriteStage.ts new file mode 100644 index 0000000000..48c33576c5 --- /dev/null +++ b/packages/client-ts/src/models/UserWriteStage.ts @@ -0,0 +1,172 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { FlowSet } from "./FlowSet"; +import { FlowSetFromJSON } from "./FlowSet"; +import type { UserCreationModeEnum } from "./UserCreationModeEnum"; +import { UserCreationModeEnumFromJSON, UserCreationModeEnumToJSON } from "./UserCreationModeEnum"; +import type { UserTypeEnum } from "./UserTypeEnum"; +import { UserTypeEnumFromJSON, UserTypeEnumToJSON } from "./UserTypeEnum"; + +/** + * UserWriteStage Serializer + * @export + * @interface UserWriteStage + */ +export interface UserWriteStage { + /** + * + * @type {string} + * @memberof UserWriteStage + */ + readonly pk: string; + /** + * + * @type {string} + * @memberof UserWriteStage + */ + name: string; + /** + * Get object type so that we know how to edit the object + * @type {string} + * @memberof UserWriteStage + */ + readonly component: string; + /** + * Return object's verbose_name + * @type {string} + * @memberof UserWriteStage + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof UserWriteStage + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof UserWriteStage + */ + readonly metaModelName: string; + /** + * + * @type {Array} + * @memberof UserWriteStage + */ + readonly flowSet: Array; + /** + * + * @type {UserCreationModeEnum} + * @memberof UserWriteStage + */ + userCreationMode?: UserCreationModeEnum; + /** + * When set, newly created users are inactive and cannot login. + * @type {boolean} + * @memberof UserWriteStage + */ + createUsersAsInactive?: boolean; + /** + * Optionally add newly created users to this group. + * @type {string} + * @memberof UserWriteStage + */ + createUsersGroup?: string | null; + /** + * + * @type {UserTypeEnum} + * @memberof UserWriteStage + */ + userType?: UserTypeEnum; + /** + * + * @type {string} + * @memberof UserWriteStage + */ + userPathTemplate?: string; +} + +/** + * Check if a given object implements the UserWriteStage interface. + */ +export function instanceOfUserWriteStage(value: object): value is UserWriteStage { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + if (!("flowSet" in value) || value["flowSet"] === undefined) return false; + return true; +} + +export function UserWriteStageFromJSON(json: any): UserWriteStage { + return UserWriteStageFromJSONTyped(json, false); +} + +export function UserWriteStageFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): UserWriteStage { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + component: json["component"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + flowSet: (json["flow_set"] as Array).map(FlowSetFromJSON), + userCreationMode: + json["user_creation_mode"] == null + ? undefined + : UserCreationModeEnumFromJSON(json["user_creation_mode"]), + createUsersAsInactive: + json["create_users_as_inactive"] == null ? undefined : json["create_users_as_inactive"], + createUsersGroup: + json["create_users_group"] == null ? undefined : json["create_users_group"], + userType: json["user_type"] == null ? undefined : UserTypeEnumFromJSON(json["user_type"]), + userPathTemplate: + json["user_path_template"] == null ? undefined : json["user_path_template"], + }; +} + +export function UserWriteStageToJSON(json: any): UserWriteStage { + return UserWriteStageToJSONTyped(json, false); +} + +export function UserWriteStageToJSONTyped( + value?: Omit< + UserWriteStage, + "pk" | "component" | "verbose_name" | "verbose_name_plural" | "meta_model_name" | "flow_set" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + user_creation_mode: UserCreationModeEnumToJSON(value["userCreationMode"]), + create_users_as_inactive: value["createUsersAsInactive"], + create_users_group: value["createUsersGroup"], + user_type: UserTypeEnumToJSON(value["userType"]), + user_path_template: value["userPathTemplate"], + }; +} diff --git a/packages/client-ts/src/models/UserWriteStageRequest.ts b/packages/client-ts/src/models/UserWriteStageRequest.ts new file mode 100644 index 0000000000..0e2f1b538d --- /dev/null +++ b/packages/client-ts/src/models/UserWriteStageRequest.ts @@ -0,0 +1,119 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { UserCreationModeEnum } from "./UserCreationModeEnum"; +import { UserCreationModeEnumFromJSON, UserCreationModeEnumToJSON } from "./UserCreationModeEnum"; +import type { UserTypeEnum } from "./UserTypeEnum"; +import { UserTypeEnumFromJSON, UserTypeEnumToJSON } from "./UserTypeEnum"; + +/** + * UserWriteStage Serializer + * @export + * @interface UserWriteStageRequest + */ +export interface UserWriteStageRequest { + /** + * + * @type {string} + * @memberof UserWriteStageRequest + */ + name: string; + /** + * + * @type {UserCreationModeEnum} + * @memberof UserWriteStageRequest + */ + userCreationMode?: UserCreationModeEnum; + /** + * When set, newly created users are inactive and cannot login. + * @type {boolean} + * @memberof UserWriteStageRequest + */ + createUsersAsInactive?: boolean; + /** + * Optionally add newly created users to this group. + * @type {string} + * @memberof UserWriteStageRequest + */ + createUsersGroup?: string | null; + /** + * + * @type {UserTypeEnum} + * @memberof UserWriteStageRequest + */ + userType?: UserTypeEnum; + /** + * + * @type {string} + * @memberof UserWriteStageRequest + */ + userPathTemplate?: string; +} + +/** + * Check if a given object implements the UserWriteStageRequest interface. + */ +export function instanceOfUserWriteStageRequest(value: object): value is UserWriteStageRequest { + if (!("name" in value) || value["name"] === undefined) return false; + return true; +} + +export function UserWriteStageRequestFromJSON(json: any): UserWriteStageRequest { + return UserWriteStageRequestFromJSONTyped(json, false); +} + +export function UserWriteStageRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): UserWriteStageRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + userCreationMode: + json["user_creation_mode"] == null + ? undefined + : UserCreationModeEnumFromJSON(json["user_creation_mode"]), + createUsersAsInactive: + json["create_users_as_inactive"] == null ? undefined : json["create_users_as_inactive"], + createUsersGroup: + json["create_users_group"] == null ? undefined : json["create_users_group"], + userType: json["user_type"] == null ? undefined : UserTypeEnumFromJSON(json["user_type"]), + userPathTemplate: + json["user_path_template"] == null ? undefined : json["user_path_template"], + }; +} + +export function UserWriteStageRequestToJSON(json: any): UserWriteStageRequest { + return UserWriteStageRequestToJSONTyped(json, false); +} + +export function UserWriteStageRequestToJSONTyped( + value?: UserWriteStageRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + user_creation_mode: UserCreationModeEnumToJSON(value["userCreationMode"]), + create_users_as_inactive: value["createUsersAsInactive"], + create_users_group: value["createUsersGroup"], + user_type: UserTypeEnumToJSON(value["userType"]), + user_path_template: value["userPathTemplate"], + }; +} diff --git a/packages/client-ts/src/models/ValidationError.ts b/packages/client-ts/src/models/ValidationError.ts new file mode 100644 index 0000000000..5a91208a63 --- /dev/null +++ b/packages/client-ts/src/models/ValidationError.ts @@ -0,0 +1,78 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Validation Error + * @export + * @interface ValidationError + */ +export interface ValidationError { + [key: string]: any | any; + /** + * + * @type {Array} + * @memberof ValidationError + */ + nonFieldErrors?: Array; + /** + * + * @type {string} + * @memberof ValidationError + */ + code?: string; +} + +/** + * Check if a given object implements the ValidationError interface. + */ +export function instanceOfValidationError(value: object): value is ValidationError { + return true; +} + +export function ValidationErrorFromJSON(json: any): ValidationError { + return ValidationErrorFromJSONTyped(json, false); +} + +export function ValidationErrorFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): ValidationError { + if (json == null) { + return json; + } + return { + ...json, + nonFieldErrors: json["non_field_errors"] == null ? undefined : json["non_field_errors"], + code: json["code"] == null ? undefined : json["code"], + }; +} + +export function ValidationErrorToJSON(json: any): ValidationError { + return ValidationErrorToJSONTyped(json, false); +} + +export function ValidationErrorToJSONTyped( + value?: ValidationError | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + ...value, + non_field_errors: value["nonFieldErrors"], + code: value["code"], + }; +} diff --git a/packages/client-ts/src/models/VendorEnum.ts b/packages/client-ts/src/models/VendorEnum.ts new file mode 100644 index 0000000000..09a6b61ea2 --- /dev/null +++ b/packages/client-ts/src/models/VendorEnum.ts @@ -0,0 +1,53 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const VendorEnum = { + GoauthentikIoMerged: "goauthentik.io/@merged", + GoauthentikIoPlatform: "goauthentik.io/platform", + FleetdmCom: "fleetdm.com", + ChromeGoogleCom: "chrome.google.com", + UnknownDefaultOpenApi: "11184809", +} as const; +export type VendorEnum = (typeof VendorEnum)[keyof typeof VendorEnum]; + +export function instanceOfVendorEnum(value: any): boolean { + for (const key in VendorEnum) { + if (Object.prototype.hasOwnProperty.call(VendorEnum, key)) { + if (VendorEnum[key as keyof typeof VendorEnum] === value) { + return true; + } + } + } + return false; +} + +export function VendorEnumFromJSON(json: any): VendorEnum { + return VendorEnumFromJSONTyped(json, false); +} + +export function VendorEnumFromJSONTyped(json: any, ignoreDiscriminator: boolean): VendorEnum { + return json as VendorEnum; +} + +export function VendorEnumToJSON(value?: VendorEnum | null): any { + return value as any; +} + +export function VendorEnumToJSONTyped(value: any, ignoreDiscriminator: boolean): VendorEnum { + return value as VendorEnum; +} diff --git a/packages/client-ts/src/models/Version.ts b/packages/client-ts/src/models/Version.ts new file mode 100644 index 0000000000..013817ec26 --- /dev/null +++ b/packages/client-ts/src/models/Version.ts @@ -0,0 +1,111 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Get running and latest version. + * @export + * @interface Version + */ +export interface Version { + /** + * Get current version + * @type {string} + * @memberof Version + */ + readonly versionCurrent: string; + /** + * Get latest version from cache + * @type {string} + * @memberof Version + */ + readonly versionLatest: string; + /** + * Check if latest version is valid + * @type {boolean} + * @memberof Version + */ + readonly versionLatestValid: boolean; + /** + * Get build hash, if version is not latest or released + * @type {string} + * @memberof Version + */ + readonly buildHash: string; + /** + * Check if we're running the latest version + * @type {boolean} + * @memberof Version + */ + readonly outdated: boolean; + /** + * Check if any outpost is outdated/has a version mismatch + * @type {boolean} + * @memberof Version + */ + readonly outpostOutdated: boolean; +} + +/** + * Check if a given object implements the Version interface. + */ +export function instanceOfVersion(value: object): value is Version { + if (!("versionCurrent" in value) || value["versionCurrent"] === undefined) return false; + if (!("versionLatest" in value) || value["versionLatest"] === undefined) return false; + if (!("versionLatestValid" in value) || value["versionLatestValid"] === undefined) return false; + if (!("buildHash" in value) || value["buildHash"] === undefined) return false; + if (!("outdated" in value) || value["outdated"] === undefined) return false; + if (!("outpostOutdated" in value) || value["outpostOutdated"] === undefined) return false; + return true; +} + +export function VersionFromJSON(json: any): Version { + return VersionFromJSONTyped(json, false); +} + +export function VersionFromJSONTyped(json: any, ignoreDiscriminator: boolean): Version { + if (json == null) { + return json; + } + return { + versionCurrent: json["version_current"], + versionLatest: json["version_latest"], + versionLatestValid: json["version_latest_valid"], + buildHash: json["build_hash"], + outdated: json["outdated"], + outpostOutdated: json["outpost_outdated"], + }; +} + +export function VersionToJSON(json: any): Version { + return VersionToJSONTyped(json, false); +} + +export function VersionToJSONTyped( + value?: Omit< + Version, + | "version_current" + | "version_latest" + | "version_latest_valid" + | "build_hash" + | "outdated" + | "outpost_outdated" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return {}; +} diff --git a/packages/client-ts/src/models/VersionHistory.ts b/packages/client-ts/src/models/VersionHistory.ts new file mode 100644 index 0000000000..51f61f8ac9 --- /dev/null +++ b/packages/client-ts/src/models/VersionHistory.ts @@ -0,0 +1,94 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * VersionHistory Serializer + * @export + * @interface VersionHistory + */ +export interface VersionHistory { + /** + * + * @type {number} + * @memberof VersionHistory + */ + readonly id: number; + /** + * + * @type {Date} + * @memberof VersionHistory + */ + timestamp: Date; + /** + * + * @type {string} + * @memberof VersionHistory + */ + version: string; + /** + * + * @type {string} + * @memberof VersionHistory + */ + build: string; +} + +/** + * Check if a given object implements the VersionHistory interface. + */ +export function instanceOfVersionHistory(value: object): value is VersionHistory { + if (!("id" in value) || value["id"] === undefined) return false; + if (!("timestamp" in value) || value["timestamp"] === undefined) return false; + if (!("version" in value) || value["version"] === undefined) return false; + if (!("build" in value) || value["build"] === undefined) return false; + return true; +} + +export function VersionHistoryFromJSON(json: any): VersionHistory { + return VersionHistoryFromJSONTyped(json, false); +} + +export function VersionHistoryFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): VersionHistory { + if (json == null) { + return json; + } + return { + id: json["id"], + timestamp: new Date(json["timestamp"]), + version: json["version"], + build: json["build"], + }; +} + +export function VersionHistoryToJSON(json: any): VersionHistory { + return VersionHistoryToJSONTyped(json, false); +} + +export function VersionHistoryToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + timestamp: value["timestamp"].toISOString(), + version: value["version"], + build: value["build"], + }; +} diff --git a/packages/client-ts/src/models/WSFederationProvider.ts b/packages/client-ts/src/models/WSFederationProvider.ts new file mode 100644 index 0000000000..e440678906 --- /dev/null +++ b/packages/client-ts/src/models/WSFederationProvider.ts @@ -0,0 +1,361 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { DigestAlgorithmEnum } from "./DigestAlgorithmEnum"; +import { DigestAlgorithmEnumFromJSON, DigestAlgorithmEnumToJSON } from "./DigestAlgorithmEnum"; +import type { SAMLNameIDPolicyEnum } from "./SAMLNameIDPolicyEnum"; +import { SAMLNameIDPolicyEnumFromJSON, SAMLNameIDPolicyEnumToJSON } from "./SAMLNameIDPolicyEnum"; +import type { SignatureAlgorithmEnum } from "./SignatureAlgorithmEnum"; +import { + SignatureAlgorithmEnumFromJSON, + SignatureAlgorithmEnumToJSON, +} from "./SignatureAlgorithmEnum"; + +/** + * WSFederationProvider Serializer + * @export + * @interface WSFederationProvider + */ +export interface WSFederationProvider { + /** + * + * @type {number} + * @memberof WSFederationProvider + */ + readonly pk: number; + /** + * + * @type {string} + * @memberof WSFederationProvider + */ + name: string; + /** + * Flow used for authentication when the associated application is accessed by an un-authenticated user. + * @type {string} + * @memberof WSFederationProvider + */ + authenticationFlow?: string | null; + /** + * Flow used when authorizing this provider. + * @type {string} + * @memberof WSFederationProvider + */ + authorizationFlow: string; + /** + * Flow used ending the session from a provider. + * @type {string} + * @memberof WSFederationProvider + */ + invalidationFlow: string; + /** + * + * @type {Array} + * @memberof WSFederationProvider + */ + propertyMappings?: Array; + /** + * Get object component so that we know how to edit the object + * @type {string} + * @memberof WSFederationProvider + */ + readonly component: string; + /** + * Internal application name, used in URLs. + * @type {string} + * @memberof WSFederationProvider + */ + readonly assignedApplicationSlug: string | null; + /** + * Application's display Name. + * @type {string} + * @memberof WSFederationProvider + */ + readonly assignedApplicationName: string | null; + /** + * Internal application name, used in URLs. + * @type {string} + * @memberof WSFederationProvider + */ + readonly assignedBackchannelApplicationSlug: string | null; + /** + * Application's display Name. + * @type {string} + * @memberof WSFederationProvider + */ + readonly assignedBackchannelApplicationName: string | null; + /** + * Return object's verbose_name + * @type {string} + * @memberof WSFederationProvider + */ + readonly verboseName: string; + /** + * Return object's plural verbose_name + * @type {string} + * @memberof WSFederationProvider + */ + readonly verboseNamePlural: string; + /** + * Return internal model name + * @type {string} + * @memberof WSFederationProvider + */ + readonly metaModelName: string; + /** + * + * @type {string} + * @memberof WSFederationProvider + */ + replyUrl: string; + /** + * + * @type {string} + * @memberof WSFederationProvider + */ + wtrealm: string; + /** + * Assertion valid not before current time + this value (Format: hours=-1;minutes=-2;seconds=-3). + * @type {string} + * @memberof WSFederationProvider + */ + assertionValidNotBefore?: string; + /** + * Assertion not valid on or after current time + this value (Format: hours=1;minutes=2;seconds=3). + * @type {string} + * @memberof WSFederationProvider + */ + assertionValidNotOnOrAfter?: string; + /** + * Session not valid on or after current time + this value (Format: hours=1;minutes=2;seconds=3). + * @type {string} + * @memberof WSFederationProvider + */ + sessionValidNotOnOrAfter?: string; + /** + * Configure how the NameID value will be created. When left empty, the NameIDPolicy of the incoming request will be considered + * @type {string} + * @memberof WSFederationProvider + */ + nameIdMapping?: string | null; + /** + * Configure how the AuthnContextClassRef value will be created. When left empty, the AuthnContextClassRef will be set based on which authentication methods the user used to authenticate. + * @type {string} + * @memberof WSFederationProvider + */ + authnContextClassRefMapping?: string | null; + /** + * + * @type {DigestAlgorithmEnum} + * @memberof WSFederationProvider + */ + digestAlgorithm?: DigestAlgorithmEnum; + /** + * + * @type {SignatureAlgorithmEnum} + * @memberof WSFederationProvider + */ + signatureAlgorithm?: SignatureAlgorithmEnum; + /** + * Keypair used to sign outgoing Responses going to the Service Provider. + * @type {string} + * @memberof WSFederationProvider + */ + signingKp?: string | null; + /** + * When selected, incoming assertions are encrypted by the IdP using the public key of the encryption keypair. The assertion is decrypted by the SP using the the private key. + * @type {string} + * @memberof WSFederationProvider + */ + encryptionKp?: string | null; + /** + * + * @type {boolean} + * @memberof WSFederationProvider + */ + signAssertion?: boolean; + /** + * + * @type {boolean} + * @memberof WSFederationProvider + */ + signLogoutRequest?: boolean; + /** + * + * @type {SAMLNameIDPolicyEnum} + * @memberof WSFederationProvider + */ + defaultNameIdPolicy?: SAMLNameIDPolicyEnum; + /** + * Get metadata download URL + * @type {string} + * @memberof WSFederationProvider + */ + readonly urlDownloadMetadata: string; + /** + * Get WS-Fed url + * @type {string} + * @memberof WSFederationProvider + */ + readonly urlWsfed: string; +} + +/** + * Check if a given object implements the WSFederationProvider interface. + */ +export function instanceOfWSFederationProvider(value: object): value is WSFederationProvider { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("authorizationFlow" in value) || value["authorizationFlow"] === undefined) return false; + if (!("invalidationFlow" in value) || value["invalidationFlow"] === undefined) return false; + if (!("component" in value) || value["component"] === undefined) return false; + if (!("assignedApplicationSlug" in value) || value["assignedApplicationSlug"] === undefined) + return false; + if (!("assignedApplicationName" in value) || value["assignedApplicationName"] === undefined) + return false; + if ( + !("assignedBackchannelApplicationSlug" in value) || + value["assignedBackchannelApplicationSlug"] === undefined + ) + return false; + if ( + !("assignedBackchannelApplicationName" in value) || + value["assignedBackchannelApplicationName"] === undefined + ) + return false; + if (!("verboseName" in value) || value["verboseName"] === undefined) return false; + if (!("verboseNamePlural" in value) || value["verboseNamePlural"] === undefined) return false; + if (!("metaModelName" in value) || value["metaModelName"] === undefined) return false; + if (!("replyUrl" in value) || value["replyUrl"] === undefined) return false; + if (!("wtrealm" in value) || value["wtrealm"] === undefined) return false; + if (!("urlDownloadMetadata" in value) || value["urlDownloadMetadata"] === undefined) + return false; + if (!("urlWsfed" in value) || value["urlWsfed"] === undefined) return false; + return true; +} + +export function WSFederationProviderFromJSON(json: any): WSFederationProvider { + return WSFederationProviderFromJSONTyped(json, false); +} + +export function WSFederationProviderFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): WSFederationProvider { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + authenticationFlow: + json["authentication_flow"] == null ? undefined : json["authentication_flow"], + authorizationFlow: json["authorization_flow"], + invalidationFlow: json["invalidation_flow"], + propertyMappings: json["property_mappings"] == null ? undefined : json["property_mappings"], + component: json["component"], + assignedApplicationSlug: json["assigned_application_slug"], + assignedApplicationName: json["assigned_application_name"], + assignedBackchannelApplicationSlug: json["assigned_backchannel_application_slug"], + assignedBackchannelApplicationName: json["assigned_backchannel_application_name"], + verboseName: json["verbose_name"], + verboseNamePlural: json["verbose_name_plural"], + metaModelName: json["meta_model_name"], + replyUrl: json["reply_url"], + wtrealm: json["wtrealm"], + assertionValidNotBefore: + json["assertion_valid_not_before"] == null + ? undefined + : json["assertion_valid_not_before"], + assertionValidNotOnOrAfter: + json["assertion_valid_not_on_or_after"] == null + ? undefined + : json["assertion_valid_not_on_or_after"], + sessionValidNotOnOrAfter: + json["session_valid_not_on_or_after"] == null + ? undefined + : json["session_valid_not_on_or_after"], + nameIdMapping: json["name_id_mapping"] == null ? undefined : json["name_id_mapping"], + authnContextClassRefMapping: + json["authn_context_class_ref_mapping"] == null + ? undefined + : json["authn_context_class_ref_mapping"], + digestAlgorithm: + json["digest_algorithm"] == null + ? undefined + : DigestAlgorithmEnumFromJSON(json["digest_algorithm"]), + signatureAlgorithm: + json["signature_algorithm"] == null + ? undefined + : SignatureAlgorithmEnumFromJSON(json["signature_algorithm"]), + signingKp: json["signing_kp"] == null ? undefined : json["signing_kp"], + encryptionKp: json["encryption_kp"] == null ? undefined : json["encryption_kp"], + signAssertion: json["sign_assertion"] == null ? undefined : json["sign_assertion"], + signLogoutRequest: + json["sign_logout_request"] == null ? undefined : json["sign_logout_request"], + defaultNameIdPolicy: + json["default_name_id_policy"] == null + ? undefined + : SAMLNameIDPolicyEnumFromJSON(json["default_name_id_policy"]), + urlDownloadMetadata: json["url_download_metadata"], + urlWsfed: json["url_wsfed"], + }; +} + +export function WSFederationProviderToJSON(json: any): WSFederationProvider { + return WSFederationProviderToJSONTyped(json, false); +} + +export function WSFederationProviderToJSONTyped( + value?: Omit< + WSFederationProvider, + | "pk" + | "component" + | "assigned_application_slug" + | "assigned_application_name" + | "assigned_backchannel_application_slug" + | "assigned_backchannel_application_name" + | "verbose_name" + | "verbose_name_plural" + | "meta_model_name" + | "url_download_metadata" + | "url_wsfed" + > | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + authentication_flow: value["authenticationFlow"], + authorization_flow: value["authorizationFlow"], + invalidation_flow: value["invalidationFlow"], + property_mappings: value["propertyMappings"], + reply_url: value["replyUrl"], + wtrealm: value["wtrealm"], + assertion_valid_not_before: value["assertionValidNotBefore"], + assertion_valid_not_on_or_after: value["assertionValidNotOnOrAfter"], + session_valid_not_on_or_after: value["sessionValidNotOnOrAfter"], + name_id_mapping: value["nameIdMapping"], + authn_context_class_ref_mapping: value["authnContextClassRefMapping"], + digest_algorithm: DigestAlgorithmEnumToJSON(value["digestAlgorithm"]), + signature_algorithm: SignatureAlgorithmEnumToJSON(value["signatureAlgorithm"]), + signing_kp: value["signingKp"], + encryption_kp: value["encryptionKp"], + sign_assertion: value["signAssertion"], + sign_logout_request: value["signLogoutRequest"], + default_name_id_policy: SAMLNameIDPolicyEnumToJSON(value["defaultNameIdPolicy"]), + }; +} diff --git a/packages/client-ts/src/models/WSFederationProviderRequest.ts b/packages/client-ts/src/models/WSFederationProviderRequest.ts new file mode 100644 index 0000000000..49b263bf24 --- /dev/null +++ b/packages/client-ts/src/models/WSFederationProviderRequest.ts @@ -0,0 +1,251 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { DigestAlgorithmEnum } from "./DigestAlgorithmEnum"; +import { DigestAlgorithmEnumFromJSON, DigestAlgorithmEnumToJSON } from "./DigestAlgorithmEnum"; +import type { SAMLNameIDPolicyEnum } from "./SAMLNameIDPolicyEnum"; +import { SAMLNameIDPolicyEnumFromJSON, SAMLNameIDPolicyEnumToJSON } from "./SAMLNameIDPolicyEnum"; +import type { SignatureAlgorithmEnum } from "./SignatureAlgorithmEnum"; +import { + SignatureAlgorithmEnumFromJSON, + SignatureAlgorithmEnumToJSON, +} from "./SignatureAlgorithmEnum"; + +/** + * WSFederationProvider Serializer + * @export + * @interface WSFederationProviderRequest + */ +export interface WSFederationProviderRequest { + /** + * + * @type {string} + * @memberof WSFederationProviderRequest + */ + name: string; + /** + * Flow used for authentication when the associated application is accessed by an un-authenticated user. + * @type {string} + * @memberof WSFederationProviderRequest + */ + authenticationFlow?: string | null; + /** + * Flow used when authorizing this provider. + * @type {string} + * @memberof WSFederationProviderRequest + */ + authorizationFlow: string; + /** + * Flow used ending the session from a provider. + * @type {string} + * @memberof WSFederationProviderRequest + */ + invalidationFlow: string; + /** + * + * @type {Array} + * @memberof WSFederationProviderRequest + */ + propertyMappings?: Array; + /** + * + * @type {string} + * @memberof WSFederationProviderRequest + */ + replyUrl: string; + /** + * + * @type {string} + * @memberof WSFederationProviderRequest + */ + wtrealm: string; + /** + * Assertion valid not before current time + this value (Format: hours=-1;minutes=-2;seconds=-3). + * @type {string} + * @memberof WSFederationProviderRequest + */ + assertionValidNotBefore?: string; + /** + * Assertion not valid on or after current time + this value (Format: hours=1;minutes=2;seconds=3). + * @type {string} + * @memberof WSFederationProviderRequest + */ + assertionValidNotOnOrAfter?: string; + /** + * Session not valid on or after current time + this value (Format: hours=1;minutes=2;seconds=3). + * @type {string} + * @memberof WSFederationProviderRequest + */ + sessionValidNotOnOrAfter?: string; + /** + * Configure how the NameID value will be created. When left empty, the NameIDPolicy of the incoming request will be considered + * @type {string} + * @memberof WSFederationProviderRequest + */ + nameIdMapping?: string | null; + /** + * Configure how the AuthnContextClassRef value will be created. When left empty, the AuthnContextClassRef will be set based on which authentication methods the user used to authenticate. + * @type {string} + * @memberof WSFederationProviderRequest + */ + authnContextClassRefMapping?: string | null; + /** + * + * @type {DigestAlgorithmEnum} + * @memberof WSFederationProviderRequest + */ + digestAlgorithm?: DigestAlgorithmEnum; + /** + * + * @type {SignatureAlgorithmEnum} + * @memberof WSFederationProviderRequest + */ + signatureAlgorithm?: SignatureAlgorithmEnum; + /** + * Keypair used to sign outgoing Responses going to the Service Provider. + * @type {string} + * @memberof WSFederationProviderRequest + */ + signingKp?: string | null; + /** + * When selected, incoming assertions are encrypted by the IdP using the public key of the encryption keypair. The assertion is decrypted by the SP using the the private key. + * @type {string} + * @memberof WSFederationProviderRequest + */ + encryptionKp?: string | null; + /** + * + * @type {boolean} + * @memberof WSFederationProviderRequest + */ + signAssertion?: boolean; + /** + * + * @type {boolean} + * @memberof WSFederationProviderRequest + */ + signLogoutRequest?: boolean; + /** + * + * @type {SAMLNameIDPolicyEnum} + * @memberof WSFederationProviderRequest + */ + defaultNameIdPolicy?: SAMLNameIDPolicyEnum; +} + +/** + * Check if a given object implements the WSFederationProviderRequest interface. + */ +export function instanceOfWSFederationProviderRequest( + value: object, +): value is WSFederationProviderRequest { + if (!("name" in value) || value["name"] === undefined) return false; + if (!("authorizationFlow" in value) || value["authorizationFlow"] === undefined) return false; + if (!("invalidationFlow" in value) || value["invalidationFlow"] === undefined) return false; + if (!("replyUrl" in value) || value["replyUrl"] === undefined) return false; + if (!("wtrealm" in value) || value["wtrealm"] === undefined) return false; + return true; +} + +export function WSFederationProviderRequestFromJSON(json: any): WSFederationProviderRequest { + return WSFederationProviderRequestFromJSONTyped(json, false); +} + +export function WSFederationProviderRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): WSFederationProviderRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + authenticationFlow: + json["authentication_flow"] == null ? undefined : json["authentication_flow"], + authorizationFlow: json["authorization_flow"], + invalidationFlow: json["invalidation_flow"], + propertyMappings: json["property_mappings"] == null ? undefined : json["property_mappings"], + replyUrl: json["reply_url"], + wtrealm: json["wtrealm"], + assertionValidNotBefore: + json["assertion_valid_not_before"] == null + ? undefined + : json["assertion_valid_not_before"], + assertionValidNotOnOrAfter: + json["assertion_valid_not_on_or_after"] == null + ? undefined + : json["assertion_valid_not_on_or_after"], + sessionValidNotOnOrAfter: + json["session_valid_not_on_or_after"] == null + ? undefined + : json["session_valid_not_on_or_after"], + nameIdMapping: json["name_id_mapping"] == null ? undefined : json["name_id_mapping"], + authnContextClassRefMapping: + json["authn_context_class_ref_mapping"] == null + ? undefined + : json["authn_context_class_ref_mapping"], + digestAlgorithm: + json["digest_algorithm"] == null + ? undefined + : DigestAlgorithmEnumFromJSON(json["digest_algorithm"]), + signatureAlgorithm: + json["signature_algorithm"] == null + ? undefined + : SignatureAlgorithmEnumFromJSON(json["signature_algorithm"]), + signingKp: json["signing_kp"] == null ? undefined : json["signing_kp"], + encryptionKp: json["encryption_kp"] == null ? undefined : json["encryption_kp"], + signAssertion: json["sign_assertion"] == null ? undefined : json["sign_assertion"], + signLogoutRequest: + json["sign_logout_request"] == null ? undefined : json["sign_logout_request"], + defaultNameIdPolicy: + json["default_name_id_policy"] == null + ? undefined + : SAMLNameIDPolicyEnumFromJSON(json["default_name_id_policy"]), + }; +} + +export function WSFederationProviderRequestToJSON(json: any): WSFederationProviderRequest { + return WSFederationProviderRequestToJSONTyped(json, false); +} + +export function WSFederationProviderRequestToJSONTyped( + value?: WSFederationProviderRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + authentication_flow: value["authenticationFlow"], + authorization_flow: value["authorizationFlow"], + invalidation_flow: value["invalidationFlow"], + property_mappings: value["propertyMappings"], + reply_url: value["replyUrl"], + wtrealm: value["wtrealm"], + assertion_valid_not_before: value["assertionValidNotBefore"], + assertion_valid_not_on_or_after: value["assertionValidNotOnOrAfter"], + session_valid_not_on_or_after: value["sessionValidNotOnOrAfter"], + name_id_mapping: value["nameIdMapping"], + authn_context_class_ref_mapping: value["authnContextClassRefMapping"], + digest_algorithm: DigestAlgorithmEnumToJSON(value["digestAlgorithm"]), + signature_algorithm: SignatureAlgorithmEnumToJSON(value["signatureAlgorithm"]), + signing_kp: value["signingKp"], + encryption_kp: value["encryptionKp"], + sign_assertion: value["signAssertion"], + sign_logout_request: value["signLogoutRequest"], + default_name_id_policy: SAMLNameIDPolicyEnumToJSON(value["defaultNameIdPolicy"]), + }; +} diff --git a/packages/client-ts/src/models/WebAuthnDevice.ts b/packages/client-ts/src/models/WebAuthnDevice.ts new file mode 100644 index 0000000000..b14596f392 --- /dev/null +++ b/packages/client-ts/src/models/WebAuthnDevice.ts @@ -0,0 +1,113 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { PartialUser } from "./PartialUser"; +import { PartialUserFromJSON } from "./PartialUser"; +import type { WebAuthnDeviceType } from "./WebAuthnDeviceType"; +import { WebAuthnDeviceTypeFromJSON } from "./WebAuthnDeviceType"; + +/** + * Serializer for WebAuthn authenticator devices + * @export + * @interface WebAuthnDevice + */ +export interface WebAuthnDevice { + /** + * + * @type {number} + * @memberof WebAuthnDevice + */ + readonly pk: number; + /** + * + * @type {string} + * @memberof WebAuthnDevice + */ + name: string; + /** + * + * @type {Date} + * @memberof WebAuthnDevice + */ + readonly createdOn: Date; + /** + * + * @type {WebAuthnDeviceType} + * @memberof WebAuthnDevice + */ + readonly deviceType: WebAuthnDeviceType | null; + /** + * + * @type {string} + * @memberof WebAuthnDevice + */ + readonly aaguid: string; + /** + * + * @type {PartialUser} + * @memberof WebAuthnDevice + */ + readonly user: PartialUser; +} + +/** + * Check if a given object implements the WebAuthnDevice interface. + */ +export function instanceOfWebAuthnDevice(value: object): value is WebAuthnDevice { + if (!("pk" in value) || value["pk"] === undefined) return false; + if (!("name" in value) || value["name"] === undefined) return false; + if (!("createdOn" in value) || value["createdOn"] === undefined) return false; + if (!("deviceType" in value) || value["deviceType"] === undefined) return false; + if (!("aaguid" in value) || value["aaguid"] === undefined) return false; + if (!("user" in value) || value["user"] === undefined) return false; + return true; +} + +export function WebAuthnDeviceFromJSON(json: any): WebAuthnDevice { + return WebAuthnDeviceFromJSONTyped(json, false); +} + +export function WebAuthnDeviceFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): WebAuthnDevice { + if (json == null) { + return json; + } + return { + pk: json["pk"], + name: json["name"], + createdOn: new Date(json["created_on"]), + deviceType: WebAuthnDeviceTypeFromJSON(json["device_type"]), + aaguid: json["aaguid"], + user: PartialUserFromJSON(json["user"]), + }; +} + +export function WebAuthnDeviceToJSON(json: any): WebAuthnDevice { + return WebAuthnDeviceToJSONTyped(json, false); +} + +export function WebAuthnDeviceToJSONTyped( + value?: Omit | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + }; +} diff --git a/packages/client-ts/src/models/WebAuthnDeviceRequest.ts b/packages/client-ts/src/models/WebAuthnDeviceRequest.ts new file mode 100644 index 0000000000..6f3fbba985 --- /dev/null +++ b/packages/client-ts/src/models/WebAuthnDeviceRequest.ts @@ -0,0 +1,68 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * Serializer for WebAuthn authenticator devices + * @export + * @interface WebAuthnDeviceRequest + */ +export interface WebAuthnDeviceRequest { + /** + * + * @type {string} + * @memberof WebAuthnDeviceRequest + */ + name: string; +} + +/** + * Check if a given object implements the WebAuthnDeviceRequest interface. + */ +export function instanceOfWebAuthnDeviceRequest(value: object): value is WebAuthnDeviceRequest { + if (!("name" in value) || value["name"] === undefined) return false; + return true; +} + +export function WebAuthnDeviceRequestFromJSON(json: any): WebAuthnDeviceRequest { + return WebAuthnDeviceRequestFromJSONTyped(json, false); +} + +export function WebAuthnDeviceRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): WebAuthnDeviceRequest { + if (json == null) { + return json; + } + return { + name: json["name"], + }; +} + +export function WebAuthnDeviceRequestToJSON(json: any): WebAuthnDeviceRequest { + return WebAuthnDeviceRequestToJSONTyped(json, false); +} + +export function WebAuthnDeviceRequestToJSONTyped( + value?: WebAuthnDeviceRequest | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + name: value["name"], + }; +} diff --git a/packages/client-ts/src/models/WebAuthnDeviceType.ts b/packages/client-ts/src/models/WebAuthnDeviceType.ts new file mode 100644 index 0000000000..08085f8872 --- /dev/null +++ b/packages/client-ts/src/models/WebAuthnDeviceType.ts @@ -0,0 +1,77 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * WebAuthnDeviceType Serializer + * @export + * @interface WebAuthnDeviceType + */ +export interface WebAuthnDeviceType { + /** + * + * @type {string} + * @memberof WebAuthnDeviceType + */ + aaguid: string; + /** + * + * @type {string} + * @memberof WebAuthnDeviceType + */ + description: string; +} + +/** + * Check if a given object implements the WebAuthnDeviceType interface. + */ +export function instanceOfWebAuthnDeviceType(value: object): value is WebAuthnDeviceType { + if (!("aaguid" in value) || value["aaguid"] === undefined) return false; + if (!("description" in value) || value["description"] === undefined) return false; + return true; +} + +export function WebAuthnDeviceTypeFromJSON(json: any): WebAuthnDeviceType { + return WebAuthnDeviceTypeFromJSONTyped(json, false); +} + +export function WebAuthnDeviceTypeFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): WebAuthnDeviceType { + if (json == null) { + return json; + } + return { + aaguid: json["aaguid"], + description: json["description"], + }; +} + +export function WebAuthnDeviceTypeToJSON(json: any): WebAuthnDeviceType { + return WebAuthnDeviceTypeToJSONTyped(json, false); +} + +export function WebAuthnDeviceTypeToJSONTyped( + value?: WebAuthnDeviceType | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + aaguid: value["aaguid"], + description: value["description"], + }; +} diff --git a/packages/client-ts/src/models/WebAuthnHintEnum.ts b/packages/client-ts/src/models/WebAuthnHintEnum.ts new file mode 100644 index 0000000000..c2e65616bb --- /dev/null +++ b/packages/client-ts/src/models/WebAuthnHintEnum.ts @@ -0,0 +1,58 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + */ +export const WebAuthnHintEnum = { + SecurityKey: "security-key", + ClientDevice: "client-device", + Hybrid: "hybrid", + UnknownDefaultOpenApi: "11184809", +} as const; +export type WebAuthnHintEnum = (typeof WebAuthnHintEnum)[keyof typeof WebAuthnHintEnum]; + +export function instanceOfWebAuthnHintEnum(value: any): boolean { + for (const key in WebAuthnHintEnum) { + if (Object.prototype.hasOwnProperty.call(WebAuthnHintEnum, key)) { + if (WebAuthnHintEnum[key as keyof typeof WebAuthnHintEnum] === value) { + return true; + } + } + } + return false; +} + +export function WebAuthnHintEnumFromJSON(json: any): WebAuthnHintEnum { + return WebAuthnHintEnumFromJSONTyped(json, false); +} + +export function WebAuthnHintEnumFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): WebAuthnHintEnum { + return json as WebAuthnHintEnum; +} + +export function WebAuthnHintEnumToJSON(value?: WebAuthnHintEnum | null): any { + return value as any; +} + +export function WebAuthnHintEnumToJSONTyped( + value: any, + ignoreDiscriminator: boolean, +): WebAuthnHintEnum { + return value as WebAuthnHintEnum; +} diff --git a/packages/client-ts/src/models/Worker.ts b/packages/client-ts/src/models/Worker.ts new file mode 100644 index 0000000000..7331f75b7a --- /dev/null +++ b/packages/client-ts/src/models/Worker.ts @@ -0,0 +1,83 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * + * @export + * @interface Worker + */ +export interface Worker { + /** + * + * @type {string} + * @memberof Worker + */ + workerId: string; + /** + * + * @type {string} + * @memberof Worker + */ + version: string; + /** + * + * @type {boolean} + * @memberof Worker + */ + versionMatching: boolean; +} + +/** + * Check if a given object implements the Worker interface. + */ +export function instanceOfWorker(value: object): value is Worker { + if (!("workerId" in value) || value["workerId"] === undefined) return false; + if (!("version" in value) || value["version"] === undefined) return false; + if (!("versionMatching" in value) || value["versionMatching"] === undefined) return false; + return true; +} + +export function WorkerFromJSON(json: any): Worker { + return WorkerFromJSONTyped(json, false); +} + +export function WorkerFromJSONTyped(json: any, ignoreDiscriminator: boolean): Worker { + if (json == null) { + return json; + } + return { + workerId: json["worker_id"], + version: json["version"], + versionMatching: json["version_matching"], + }; +} + +export function WorkerToJSON(json: any): Worker { + return WorkerToJSONTyped(json, false); +} + +export function WorkerToJSONTyped( + value?: Worker | null, + ignoreDiscriminator: boolean = false, +): any { + if (value == null) { + return value; + } + + return { + worker_id: value["workerId"], + version: value["version"], + version_matching: value["versionMatching"], + }; +} diff --git a/packages/client-ts/src/models/index.ts b/packages/client-ts/src/models/index.ts new file mode 100644 index 0000000000..da4090a4cf --- /dev/null +++ b/packages/client-ts/src/models/index.ts @@ -0,0 +1,885 @@ +/* tslint:disable */ +/* eslint-disable */ +export * from "./AccessDeniedChallenge"; +export * from "./AccountLockdownStage"; +export * from "./AccountLockdownStageRequest"; +export * from "./AgentAuthenticationResponse"; +export * from "./AgentConfig"; +export * from "./AgentConnector"; +export * from "./AgentConnectorRequest"; +export * from "./AgentPSSODeviceRegistrationRequest"; +export * from "./AgentPSSODeviceRegistrationResponse"; +export * from "./AgentPSSOUserRegistrationRequest"; +export * from "./AgentTokenResponse"; +export * from "./AlgEnum"; +export * from "./App"; +export * from "./AppEnum"; +export * from "./AppleChallengeResponseRequest"; +export * from "./AppleIndependentSecureEnclave"; +export * from "./AppleIndependentSecureEnclaveRequest"; +export * from "./AppleLoginChallenge"; +export * from "./Application"; +export * from "./ApplicationEntitlement"; +export * from "./ApplicationEntitlementRequest"; +export * from "./ApplicationRequest"; +export * from "./AuthTypeEnum"; +export * from "./AuthenticatedSession"; +export * from "./AuthenticatedSessionAsn"; +export * from "./AuthenticatedSessionGeoIp"; +export * from "./AuthenticatedSessionUserAgent"; +export * from "./AuthenticatedSessionUserAgentDevice"; +export * from "./AuthenticatedSessionUserAgentOs"; +export * from "./AuthenticatedSessionUserAgentUserAgent"; +export * from "./AuthenticationEnum"; +export * from "./AuthenticatorAttachmentEnum"; +export * from "./AuthenticatorDuoChallenge"; +export * from "./AuthenticatorDuoChallengeResponseRequest"; +export * from "./AuthenticatorDuoStage"; +export * from "./AuthenticatorDuoStageDeviceImportResponse"; +export * from "./AuthenticatorDuoStageManualDeviceImportRequest"; +export * from "./AuthenticatorDuoStageRequest"; +export * from "./AuthenticatorEmailChallenge"; +export * from "./AuthenticatorEmailChallengeResponseRequest"; +export * from "./AuthenticatorEmailStage"; +export * from "./AuthenticatorEmailStageRequest"; +export * from "./AuthenticatorEndpointGDTCStage"; +export * from "./AuthenticatorEndpointGDTCStageRequest"; +export * from "./AuthenticatorSMSChallenge"; +export * from "./AuthenticatorSMSChallengeResponseRequest"; +export * from "./AuthenticatorSMSStage"; +export * from "./AuthenticatorSMSStageRequest"; +export * from "./AuthenticatorStaticChallenge"; +export * from "./AuthenticatorStaticChallengeResponseRequest"; +export * from "./AuthenticatorStaticStage"; +export * from "./AuthenticatorStaticStageRequest"; +export * from "./AuthenticatorTOTPChallenge"; +export * from "./AuthenticatorTOTPChallengeResponseRequest"; +export * from "./AuthenticatorTOTPStage"; +export * from "./AuthenticatorTOTPStageRequest"; +export * from "./AuthenticatorValidateStage"; +export * from "./AuthenticatorValidateStageRequest"; +export * from "./AuthenticatorValidationChallenge"; +export * from "./AuthenticatorValidationChallengeResponseRequest"; +export * from "./AuthenticatorWebAuthnChallenge"; +export * from "./AuthenticatorWebAuthnChallengeResponseRequest"; +export * from "./AuthenticatorWebAuthnStage"; +export * from "./AuthenticatorWebAuthnStageRequest"; +export * from "./AuthorizationCodeAuthMethodEnum"; +export * from "./AutoSubmitChallengeResponseRequest"; +export * from "./AutosubmitChallenge"; +export * from "./BackendsEnum"; +export * from "./BindingTypeEnum"; +export * from "./BlueprintFile"; +export * from "./BlueprintImportResult"; +export * from "./BlueprintInstance"; +export * from "./BlueprintInstanceRequest"; +export * from "./BlueprintInstanceStatusEnum"; +export * from "./Brand"; +export * from "./BrandRequest"; +export * from "./BulkDeleteSessionResponse"; +export * from "./Cache"; +export * from "./CapabilitiesEnum"; +export * from "./CaptchaChallenge"; +export * from "./CaptchaChallengeResponseRequest"; +export * from "./CaptchaStage"; +export * from "./CaptchaStageRequest"; +export * from "./CertAttributeEnum"; +export * from "./CertificateData"; +export * from "./CertificateGenerationRequest"; +export * from "./CertificateKeyPair"; +export * from "./CertificateKeyPairKeyTypeEnum"; +export * from "./CertificateKeyPairRequest"; +export * from "./ChallengeTypes"; +export * from "./ClientTypeEnum"; +export * from "./CompatibilityModeEnum"; +export * from "./Config"; +export * from "./ConnectionToken"; +export * from "./ConnectionTokenRequest"; +export * from "./Connector"; +export * from "./ConsentChallenge"; +export * from "./ConsentChallengeResponseRequest"; +export * from "./ConsentModeEnum"; +export * from "./ConsentPermission"; +export * from "./ConsentStage"; +export * from "./ConsentStageRequest"; +export * from "./ContentType"; +export * from "./ContentTypeEnum"; +export * from "./ContextualFlowInfo"; +export * from "./ContextualFlowInfoLayoutEnum"; +export * from "./CountryCodeEnum"; +export * from "./CurrentBrand"; +export * from "./CurrentBrandFlags"; +export * from "./DataExport"; +export * from "./DeliveryMethodEnum"; +export * from "./DeniedActionEnum"; +export * from "./DenyStage"; +export * from "./DenyStageRequest"; +export * from "./DetailedCountry"; +export * from "./Device"; +export * from "./DeviceAccessGroup"; +export * from "./DeviceAccessGroupRequest"; +export * from "./DeviceChallenge"; +export * from "./DeviceChallengeRequest"; +export * from "./DeviceClassesEnum"; +export * from "./DeviceConnection"; +export * from "./DeviceFactSnapshot"; +export * from "./DeviceFacts"; +export * from "./DeviceFactsOSFamily"; +export * from "./DeviceFactsRequest"; +export * from "./DeviceGroup"; +export * from "./DeviceGroupRequest"; +export * from "./DeviceSummary"; +export * from "./DeviceUser"; +export * from "./DeviceUserBinding"; +export * from "./DeviceUserBindingRequest"; +export * from "./DeviceUserRequest"; +export * from "./DigestAlgorithmEnum"; +export * from "./DigitsEnum"; +export * from "./Disk"; +export * from "./DiskRequest"; +export * from "./DockerServiceConnection"; +export * from "./DockerServiceConnectionRequest"; +export * from "./Domain"; +export * from "./DomainRequest"; +export * from "./DummyChallenge"; +export * from "./DummyChallengeResponseRequest"; +export * from "./DummyPolicy"; +export * from "./DummyPolicyRequest"; +export * from "./DummyStage"; +export * from "./DummyStageRequest"; +export * from "./DuoDevice"; +export * from "./DuoDeviceEnrollmentStatus"; +export * from "./DuoDeviceRequest"; +export * from "./DuoResponseEnum"; +export * from "./EmailChallenge"; +export * from "./EmailChallengeResponseRequest"; +export * from "./EmailDevice"; +export * from "./EmailDeviceRequest"; +export * from "./EmailStage"; +export * from "./EmailStageRequest"; +export * from "./Endpoint"; +export * from "./EndpointAgentChallenge"; +export * from "./EndpointAgentChallengeResponseRequest"; +export * from "./EndpointAuthModeEnum"; +export * from "./EndpointDevice"; +export * from "./EndpointDeviceDetails"; +export * from "./EndpointDeviceRequest"; +export * from "./EndpointRequest"; +export * from "./EndpointStage"; +export * from "./EndpointStageRequest"; +export * from "./EnrollRequest"; +export * from "./EnrollmentToken"; +export * from "./EnrollmentTokenRequest"; +export * from "./ErrorDetail"; +export * from "./ErrorReportingConfig"; +export * from "./Event"; +export * from "./EventActions"; +export * from "./EventMatcherPolicy"; +export * from "./EventMatcherPolicyRequest"; +export * from "./EventRequest"; +export * from "./EventStats"; +export * from "./EventTopPerUser"; +export * from "./EventVolume"; +export * from "./EventsRequestedEnum"; +export * from "./ExpiringBaseGrantModel"; +export * from "./ExpressionPolicy"; +export * from "./ExpressionPolicyRequest"; +export * from "./ExtraRoleObjectPermission"; +export * from "./FileList"; +export * from "./FleetConnector"; +export * from "./FleetConnectorRequest"; +export * from "./Flow"; +export * from "./FlowChallengeResponseRequest"; +export * from "./FlowDesignationEnum"; +export * from "./FlowDiagram"; +export * from "./FlowErrorChallenge"; +export * from "./FlowInspection"; +export * from "./FlowInspectorPlan"; +export * from "./FlowLayoutEnum"; +export * from "./FlowRequest"; +export * from "./FlowSet"; +export * from "./FlowStageBinding"; +export * from "./FlowStageBindingRequest"; +export * from "./FooterLink"; +export * from "./ForceBindingEnum"; +export * from "./FormatEnum"; +export * from "./FrameChallenge"; +export * from "./FrameChallengeResponseRequest"; +export * from "./GenericError"; +export * from "./GeoIPPolicy"; +export * from "./GeoIPPolicyCountriesObjInner"; +export * from "./GeoIPPolicyRequest"; +export * from "./GeoipBindingEnum"; +export * from "./GlobalTaskStatus"; +export * from "./GoogleChromeConnector"; +export * from "./GoogleChromeConnectorRequest"; +export * from "./GoogleEndpointDevice"; +export * from "./GoogleEndpointDeviceRequest"; +export * from "./GoogleWorkspaceProvider"; +export * from "./GoogleWorkspaceProviderGroup"; +export * from "./GoogleWorkspaceProviderGroupRequest"; +export * from "./GoogleWorkspaceProviderMapping"; +export * from "./GoogleWorkspaceProviderMappingRequest"; +export * from "./GoogleWorkspaceProviderRequest"; +export * from "./GoogleWorkspaceProviderUser"; +export * from "./GoogleWorkspaceProviderUserRequest"; +export * from "./GrantTypesEnum"; +export * from "./Group"; +export * from "./GroupKerberosSourceConnection"; +export * from "./GroupKerberosSourceConnectionRequest"; +export * from "./GroupLDAPSourceConnection"; +export * from "./GroupLDAPSourceConnectionRequest"; +export * from "./GroupMatchingModeEnum"; +export * from "./GroupOAuthSourceConnection"; +export * from "./GroupOAuthSourceConnectionRequest"; +export * from "./GroupPlexSourceConnection"; +export * from "./GroupPlexSourceConnectionRequest"; +export * from "./GroupRequest"; +export * from "./GroupSAMLSourceConnection"; +export * from "./GroupSAMLSourceConnectionRequest"; +export * from "./GroupSourceConnection"; +export * from "./GroupSourceConnectionRequest"; +export * from "./GroupTelegramSourceConnection"; +export * from "./GroupTelegramSourceConnectionRequest"; +export * from "./Hardware"; +export * from "./HardwareRequest"; +export * from "./IdentificationChallenge"; +export * from "./IdentificationChallengeResponseRequest"; +export * from "./IdentificationStage"; +export * from "./IdentificationStageRequest"; +export * from "./IframeLogoutChallenge"; +export * from "./IframeLogoutChallengeResponseRequest"; +export * from "./ImpersonationRequest"; +export * from "./InitialPermissions"; +export * from "./InitialPermissionsRequest"; +export * from "./InstallID"; +export * from "./IntentEnum"; +export * from "./InvalidResponseActionEnum"; +export * from "./Invitation"; +export * from "./InvitationRequest"; +export * from "./InvitationSendEmailRequest"; +export * from "./InvitationStage"; +export * from "./InvitationStageRequest"; +export * from "./IssuerModeEnum"; +export * from "./KadminTypeEnum"; +export * from "./KerberosSource"; +export * from "./KerberosSourcePropertyMapping"; +export * from "./KerberosSourcePropertyMappingRequest"; +export * from "./KerberosSourceRequest"; +export * from "./KeyTypeEnum"; +export * from "./KubernetesServiceConnection"; +export * from "./KubernetesServiceConnectionRequest"; +export * from "./LDAPAPIAccessMode"; +export * from "./LDAPCheckAccess"; +export * from "./LDAPDebug"; +export * from "./LDAPOutpostConfig"; +export * from "./LDAPProvider"; +export * from "./LDAPProviderRequest"; +export * from "./LDAPSource"; +export * from "./LDAPSourcePropertyMapping"; +export * from "./LDAPSourcePropertyMappingRequest"; +export * from "./LDAPSourceRequest"; +export * from "./LangEnum"; +export * from "./LastTaskStatusEnum"; +export * from "./License"; +export * from "./LicenseFlagsEnum"; +export * from "./LicenseForecast"; +export * from "./LicenseRequest"; +export * from "./LicenseStatusEnum"; +export * from "./LicenseSummary"; +export * from "./LicenseSummaryStatusEnum"; +export * from "./LifecycleIteration"; +export * from "./LifecycleIterationRequest"; +export * from "./LifecycleIterationStateEnum"; +export * from "./LifecycleRule"; +export * from "./LifecycleRuleRequest"; +export * from "./Link"; +export * from "./LogEvent"; +export * from "./LogLevelEnum"; +export * from "./LoginChallengeTypes"; +export * from "./LoginSource"; +export * from "./LogoutURL"; +export * from "./MDMConfigRequest"; +export * from "./MDMConfigResponse"; +export * from "./MatchingModeEnum"; +export * from "./Metadata"; +export * from "./MicrosoftEntraProvider"; +export * from "./MicrosoftEntraProviderGroup"; +export * from "./MicrosoftEntraProviderGroupRequest"; +export * from "./MicrosoftEntraProviderMapping"; +export * from "./MicrosoftEntraProviderMappingRequest"; +export * from "./MicrosoftEntraProviderRequest"; +export * from "./MicrosoftEntraProviderUser"; +export * from "./MicrosoftEntraProviderUserRequest"; +export * from "./ModelEnum"; +export * from "./ModelRequest"; +export * from "./MutualTLSStage"; +export * from "./MutualTLSStageRequest"; +export * from "./NativeLogoutChallenge"; +export * from "./NativeLogoutChallengeResponseRequest"; +export * from "./Network"; +export * from "./NetworkBindingEnum"; +export * from "./NetworkInterface"; +export * from "./NetworkInterfaceRequest"; +export * from "./NetworkRequest"; +export * from "./NotConfiguredActionEnum"; +export * from "./Notification"; +export * from "./NotificationRequest"; +export * from "./NotificationRule"; +export * from "./NotificationRuleRequest"; +export * from "./NotificationTransport"; +export * from "./NotificationTransportRequest"; +export * from "./NotificationTransportTest"; +export * from "./NotificationWebhookMapping"; +export * from "./NotificationWebhookMappingRequest"; +export * from "./OAuth2Provider"; +export * from "./OAuth2ProviderLogoutMethodEnum"; +export * from "./OAuth2ProviderRequest"; +export * from "./OAuth2ProviderSetupURLs"; +export * from "./OAuthDeviceCodeChallenge"; +export * from "./OAuthDeviceCodeChallengeResponseRequest"; +export * from "./OAuthDeviceCodeFinishChallenge"; +export * from "./OAuthDeviceCodeFinishChallengeResponseRequest"; +export * from "./OAuthSource"; +export * from "./OAuthSourcePropertyMapping"; +export * from "./OAuthSourcePropertyMappingRequest"; +export * from "./OAuthSourceRequest"; +export * from "./OpenIDConnectConfiguration"; +export * from "./OperatingSystem"; +export * from "./OperatingSystemRequest"; +export * from "./OutgoingSyncDeleteAction"; +export * from "./Outpost"; +export * from "./OutpostDefaultConfig"; +export * from "./OutpostHealth"; +export * from "./OutpostRequest"; +export * from "./OutpostTypeEnum"; +export * from "./PKCEMethodEnum"; +export * from "./PaginatedAccountLockdownStageList"; +export * from "./PaginatedAgentConnectorList"; +export * from "./PaginatedAppleIndependentSecureEnclaveList"; +export * from "./PaginatedApplicationEntitlementList"; +export * from "./PaginatedApplicationList"; +export * from "./PaginatedAuthenticatedSessionList"; +export * from "./PaginatedAuthenticatorDuoStageList"; +export * from "./PaginatedAuthenticatorEmailStageList"; +export * from "./PaginatedAuthenticatorEndpointGDTCStageList"; +export * from "./PaginatedAuthenticatorSMSStageList"; +export * from "./PaginatedAuthenticatorStaticStageList"; +export * from "./PaginatedAuthenticatorTOTPStageList"; +export * from "./PaginatedAuthenticatorValidateStageList"; +export * from "./PaginatedAuthenticatorWebAuthnStageList"; +export * from "./PaginatedBlueprintInstanceList"; +export * from "./PaginatedBrandList"; +export * from "./PaginatedCaptchaStageList"; +export * from "./PaginatedCertificateKeyPairList"; +export * from "./PaginatedConnectionTokenList"; +export * from "./PaginatedConnectorList"; +export * from "./PaginatedConsentStageList"; +export * from "./PaginatedDataExportList"; +export * from "./PaginatedDenyStageList"; +export * from "./PaginatedDeviceAccessGroupList"; +export * from "./PaginatedDeviceUserBindingList"; +export * from "./PaginatedDockerServiceConnectionList"; +export * from "./PaginatedDomainList"; +export * from "./PaginatedDummyPolicyList"; +export * from "./PaginatedDummyStageList"; +export * from "./PaginatedDuoDeviceList"; +export * from "./PaginatedEmailDeviceList"; +export * from "./PaginatedEmailStageList"; +export * from "./PaginatedEndpointDeviceList"; +export * from "./PaginatedEndpointList"; +export * from "./PaginatedEndpointStageList"; +export * from "./PaginatedEnrollmentTokenList"; +export * from "./PaginatedEventList"; +export * from "./PaginatedEventMatcherPolicyList"; +export * from "./PaginatedExpiringBaseGrantModelList"; +export * from "./PaginatedExpressionPolicyList"; +export * from "./PaginatedExtraRoleObjectPermissionList"; +export * from "./PaginatedFleetConnectorList"; +export * from "./PaginatedFlowList"; +export * from "./PaginatedFlowStageBindingList"; +export * from "./PaginatedGeoIPPolicyList"; +export * from "./PaginatedGoogleChromeConnectorList"; +export * from "./PaginatedGoogleEndpointDeviceList"; +export * from "./PaginatedGoogleWorkspaceProviderGroupList"; +export * from "./PaginatedGoogleWorkspaceProviderList"; +export * from "./PaginatedGoogleWorkspaceProviderMappingList"; +export * from "./PaginatedGoogleWorkspaceProviderUserList"; +export * from "./PaginatedGroupKerberosSourceConnectionList"; +export * from "./PaginatedGroupLDAPSourceConnectionList"; +export * from "./PaginatedGroupList"; +export * from "./PaginatedGroupOAuthSourceConnectionList"; +export * from "./PaginatedGroupPlexSourceConnectionList"; +export * from "./PaginatedGroupSAMLSourceConnectionList"; +export * from "./PaginatedGroupSourceConnectionList"; +export * from "./PaginatedGroupTelegramSourceConnectionList"; +export * from "./PaginatedIdentificationStageList"; +export * from "./PaginatedInitialPermissionsList"; +export * from "./PaginatedInvitationList"; +export * from "./PaginatedInvitationStageList"; +export * from "./PaginatedKerberosSourceList"; +export * from "./PaginatedKerberosSourcePropertyMappingList"; +export * from "./PaginatedKubernetesServiceConnectionList"; +export * from "./PaginatedLDAPOutpostConfigList"; +export * from "./PaginatedLDAPProviderList"; +export * from "./PaginatedLDAPSourceList"; +export * from "./PaginatedLDAPSourcePropertyMappingList"; +export * from "./PaginatedLicenseList"; +export * from "./PaginatedLifecycleIterationList"; +export * from "./PaginatedLifecycleRuleList"; +export * from "./PaginatedMicrosoftEntraProviderGroupList"; +export * from "./PaginatedMicrosoftEntraProviderList"; +export * from "./PaginatedMicrosoftEntraProviderMappingList"; +export * from "./PaginatedMicrosoftEntraProviderUserList"; +export * from "./PaginatedMutualTLSStageList"; +export * from "./PaginatedNotificationList"; +export * from "./PaginatedNotificationRuleList"; +export * from "./PaginatedNotificationTransportList"; +export * from "./PaginatedNotificationWebhookMappingList"; +export * from "./PaginatedOAuth2ProviderList"; +export * from "./PaginatedOAuthSourceList"; +export * from "./PaginatedOAuthSourcePropertyMappingList"; +export * from "./PaginatedOutpostList"; +export * from "./PaginatedPasswordExpiryPolicyList"; +export * from "./PaginatedPasswordPolicyList"; +export * from "./PaginatedPasswordStageList"; +export * from "./PaginatedPermissionList"; +export * from "./PaginatedPlexSourceList"; +export * from "./PaginatedPlexSourcePropertyMappingList"; +export * from "./PaginatedPolicyBindingList"; +export * from "./PaginatedPolicyList"; +export * from "./PaginatedPromptList"; +export * from "./PaginatedPromptStageList"; +export * from "./PaginatedPropertyMappingList"; +export * from "./PaginatedProviderList"; +export * from "./PaginatedProxyOutpostConfigList"; +export * from "./PaginatedProxyProviderList"; +export * from "./PaginatedRACPropertyMappingList"; +export * from "./PaginatedRACProviderList"; +export * from "./PaginatedRadiusOutpostConfigList"; +export * from "./PaginatedRadiusProviderList"; +export * from "./PaginatedRadiusProviderPropertyMappingList"; +export * from "./PaginatedRedirectStageList"; +export * from "./PaginatedReputationList"; +export * from "./PaginatedReputationPolicyList"; +export * from "./PaginatedRoleAssignedObjectPermissionList"; +export * from "./PaginatedRoleList"; +export * from "./PaginatedSAMLPropertyMappingList"; +export * from "./PaginatedSAMLProviderList"; +export * from "./PaginatedSAMLSourceList"; +export * from "./PaginatedSAMLSourcePropertyMappingList"; +export * from "./PaginatedSCIMMappingList"; +export * from "./PaginatedSCIMProviderGroupList"; +export * from "./PaginatedSCIMProviderList"; +export * from "./PaginatedSCIMProviderUserList"; +export * from "./PaginatedSCIMSourceGroupList"; +export * from "./PaginatedSCIMSourceList"; +export * from "./PaginatedSCIMSourcePropertyMappingList"; +export * from "./PaginatedSCIMSourceUserList"; +export * from "./PaginatedSMSDeviceList"; +export * from "./PaginatedSSFProviderList"; +export * from "./PaginatedSSFStreamList"; +export * from "./PaginatedScheduleList"; +export * from "./PaginatedScopeMappingList"; +export * from "./PaginatedServiceConnectionList"; +export * from "./PaginatedSourceList"; +export * from "./PaginatedSourceStageList"; +export * from "./PaginatedStageList"; +export * from "./PaginatedStaticDeviceList"; +export * from "./PaginatedTOTPDeviceList"; +export * from "./PaginatedTaskList"; +export * from "./PaginatedTelegramSourceList"; +export * from "./PaginatedTelegramSourcePropertyMappingList"; +export * from "./PaginatedTenantList"; +export * from "./PaginatedTokenList"; +export * from "./PaginatedTokenModelList"; +export * from "./PaginatedUniquePasswordPolicyList"; +export * from "./PaginatedUserConsentList"; +export * from "./PaginatedUserDeleteStageList"; +export * from "./PaginatedUserKerberosSourceConnectionList"; +export * from "./PaginatedUserLDAPSourceConnectionList"; +export * from "./PaginatedUserList"; +export * from "./PaginatedUserLoginStageList"; +export * from "./PaginatedUserLogoutStageList"; +export * from "./PaginatedUserOAuthSourceConnectionList"; +export * from "./PaginatedUserPlexSourceConnectionList"; +export * from "./PaginatedUserSAMLSourceConnectionList"; +export * from "./PaginatedUserSourceConnectionList"; +export * from "./PaginatedUserTelegramSourceConnectionList"; +export * from "./PaginatedUserWriteStageList"; +export * from "./PaginatedWSFederationProviderList"; +export * from "./PaginatedWebAuthnDeviceList"; +export * from "./PaginatedWebAuthnDeviceTypeList"; +export * from "./Pagination"; +export * from "./PartialGroup"; +export * from "./PartialUser"; +export * from "./PasswordChallenge"; +export * from "./PasswordChallengeResponseRequest"; +export * from "./PasswordExpiryPolicy"; +export * from "./PasswordExpiryPolicyRequest"; +export * from "./PasswordPolicy"; +export * from "./PasswordPolicyRequest"; +export * from "./PasswordStage"; +export * from "./PasswordStageRequest"; +export * from "./PatchedAccountLockdownStageRequest"; +export * from "./PatchedAgentConnectorRequest"; +export * from "./PatchedAppleIndependentSecureEnclaveRequest"; +export * from "./PatchedApplicationEntitlementRequest"; +export * from "./PatchedApplicationRequest"; +export * from "./PatchedAuthenticatorDuoStageRequest"; +export * from "./PatchedAuthenticatorEmailStageRequest"; +export * from "./PatchedAuthenticatorEndpointGDTCStageRequest"; +export * from "./PatchedAuthenticatorSMSStageRequest"; +export * from "./PatchedAuthenticatorStaticStageRequest"; +export * from "./PatchedAuthenticatorTOTPStageRequest"; +export * from "./PatchedAuthenticatorValidateStageRequest"; +export * from "./PatchedAuthenticatorWebAuthnStageRequest"; +export * from "./PatchedBlueprintInstanceRequest"; +export * from "./PatchedBrandRequest"; +export * from "./PatchedCaptchaStageRequest"; +export * from "./PatchedCertificateKeyPairRequest"; +export * from "./PatchedConnectionTokenRequest"; +export * from "./PatchedConsentStageRequest"; +export * from "./PatchedDenyStageRequest"; +export * from "./PatchedDeviceAccessGroupRequest"; +export * from "./PatchedDeviceUserBindingRequest"; +export * from "./PatchedDockerServiceConnectionRequest"; +export * from "./PatchedDomainRequest"; +export * from "./PatchedDummyPolicyRequest"; +export * from "./PatchedDummyStageRequest"; +export * from "./PatchedDuoDeviceRequest"; +export * from "./PatchedEmailDeviceRequest"; +export * from "./PatchedEmailStageRequest"; +export * from "./PatchedEndpointDeviceRequest"; +export * from "./PatchedEndpointRequest"; +export * from "./PatchedEndpointStageRequest"; +export * from "./PatchedEnrollmentTokenRequest"; +export * from "./PatchedEventMatcherPolicyRequest"; +export * from "./PatchedEventRequest"; +export * from "./PatchedExpressionPolicyRequest"; +export * from "./PatchedFleetConnectorRequest"; +export * from "./PatchedFlowRequest"; +export * from "./PatchedFlowStageBindingRequest"; +export * from "./PatchedGeoIPPolicyRequest"; +export * from "./PatchedGoogleChromeConnectorRequest"; +export * from "./PatchedGoogleEndpointDeviceRequest"; +export * from "./PatchedGoogleWorkspaceProviderMappingRequest"; +export * from "./PatchedGoogleWorkspaceProviderRequest"; +export * from "./PatchedGroupKerberosSourceConnectionRequest"; +export * from "./PatchedGroupLDAPSourceConnectionRequest"; +export * from "./PatchedGroupOAuthSourceConnectionRequest"; +export * from "./PatchedGroupPlexSourceConnectionRequest"; +export * from "./PatchedGroupRequest"; +export * from "./PatchedGroupSAMLSourceConnectionRequest"; +export * from "./PatchedGroupSourceConnectionRequest"; +export * from "./PatchedGroupTelegramSourceConnectionRequest"; +export * from "./PatchedIdentificationStageRequest"; +export * from "./PatchedInitialPermissionsRequest"; +export * from "./PatchedInvitationRequest"; +export * from "./PatchedInvitationStageRequest"; +export * from "./PatchedKerberosSourcePropertyMappingRequest"; +export * from "./PatchedKerberosSourceRequest"; +export * from "./PatchedKubernetesServiceConnectionRequest"; +export * from "./PatchedLDAPProviderRequest"; +export * from "./PatchedLDAPSourcePropertyMappingRequest"; +export * from "./PatchedLDAPSourceRequest"; +export * from "./PatchedLicenseRequest"; +export * from "./PatchedLifecycleRuleRequest"; +export * from "./PatchedMicrosoftEntraProviderMappingRequest"; +export * from "./PatchedMicrosoftEntraProviderRequest"; +export * from "./PatchedMutualTLSStageRequest"; +export * from "./PatchedNotificationRequest"; +export * from "./PatchedNotificationRuleRequest"; +export * from "./PatchedNotificationTransportRequest"; +export * from "./PatchedNotificationWebhookMappingRequest"; +export * from "./PatchedOAuth2ProviderRequest"; +export * from "./PatchedOAuthSourcePropertyMappingRequest"; +export * from "./PatchedOAuthSourceRequest"; +export * from "./PatchedOutpostRequest"; +export * from "./PatchedPasswordExpiryPolicyRequest"; +export * from "./PatchedPasswordPolicyRequest"; +export * from "./PatchedPasswordStageRequest"; +export * from "./PatchedPermissionAssignRequest"; +export * from "./PatchedPlexSourcePropertyMappingRequest"; +export * from "./PatchedPlexSourceRequest"; +export * from "./PatchedPolicyBindingRequest"; +export * from "./PatchedPromptRequest"; +export * from "./PatchedPromptStageRequest"; +export * from "./PatchedProxyProviderRequest"; +export * from "./PatchedRACPropertyMappingRequest"; +export * from "./PatchedRACProviderRequest"; +export * from "./PatchedRadiusProviderPropertyMappingRequest"; +export * from "./PatchedRadiusProviderRequest"; +export * from "./PatchedRedirectStageRequest"; +export * from "./PatchedReputationPolicyRequest"; +export * from "./PatchedRoleRequest"; +export * from "./PatchedSAMLPropertyMappingRequest"; +export * from "./PatchedSAMLProviderRequest"; +export * from "./PatchedSAMLSourcePropertyMappingRequest"; +export * from "./PatchedSAMLSourceRequest"; +export * from "./PatchedSCIMMappingRequest"; +export * from "./PatchedSCIMProviderRequest"; +export * from "./PatchedSCIMSourceGroupRequest"; +export * from "./PatchedSCIMSourcePropertyMappingRequest"; +export * from "./PatchedSCIMSourceRequest"; +export * from "./PatchedSCIMSourceUserRequest"; +export * from "./PatchedSMSDeviceRequest"; +export * from "./PatchedSSFProviderRequest"; +export * from "./PatchedScheduleRequest"; +export * from "./PatchedScopeMappingRequest"; +export * from "./PatchedSettingsRequest"; +export * from "./PatchedSettingsRequestFlags"; +export * from "./PatchedSourceStageRequest"; +export * from "./PatchedStaticDeviceRequest"; +export * from "./PatchedTOTPDeviceRequest"; +export * from "./PatchedTelegramSourcePropertyMappingRequest"; +export * from "./PatchedTelegramSourceRequest"; +export * from "./PatchedTenantRequest"; +export * from "./PatchedTokenRequest"; +export * from "./PatchedUniquePasswordPolicyRequest"; +export * from "./PatchedUserDeleteStageRequest"; +export * from "./PatchedUserKerberosSourceConnectionRequest"; +export * from "./PatchedUserLDAPSourceConnectionRequest"; +export * from "./PatchedUserLoginStageRequest"; +export * from "./PatchedUserLogoutStageRequest"; +export * from "./PatchedUserOAuthSourceConnectionRequest"; +export * from "./PatchedUserPlexSourceConnectionRequest"; +export * from "./PatchedUserRequest"; +export * from "./PatchedUserSAMLSourceConnectionRequest"; +export * from "./PatchedUserSourceConnectionRequest"; +export * from "./PatchedUserTelegramSourceConnectionRequest"; +export * from "./PatchedUserWriteStageRequest"; +export * from "./PatchedWSFederationProviderRequest"; +export * from "./PatchedWebAuthnDeviceRequest"; +export * from "./Permission"; +export * from "./PermissionAssignRequest"; +export * from "./PermissionAssignResult"; +export * from "./PlexAuthenticationChallenge"; +export * from "./PlexAuthenticationChallengeResponseRequest"; +export * from "./PlexSource"; +export * from "./PlexSourcePropertyMapping"; +export * from "./PlexSourcePropertyMappingRequest"; +export * from "./PlexSourceRequest"; +export * from "./PlexTokenRedeemRequest"; +export * from "./Policy"; +export * from "./PolicyBinding"; +export * from "./PolicyBindingRequest"; +export * from "./PolicyEngineMode"; +export * from "./PolicyTestRequest"; +export * from "./PolicyTestResult"; +export * from "./Process"; +export * from "./ProcessRequest"; +export * from "./Prompt"; +export * from "./PromptChallenge"; +export * from "./PromptChallengeResponseRequest"; +export * from "./PromptChoice"; +export * from "./PromptRequest"; +export * from "./PromptStage"; +export * from "./PromptStageRequest"; +export * from "./PromptTypeEnum"; +export * from "./PropertyMapping"; +export * from "./PropertyMappingPreview"; +export * from "./PropertyMappingTestRequest"; +export * from "./PropertyMappingTestResult"; +export * from "./ProtocolEnum"; +export * from "./Provider"; +export * from "./ProviderEnum"; +export * from "./ProviderModelEnum"; +export * from "./ProviderTypeEnum"; +export * from "./ProxyMode"; +export * from "./ProxyOutpostConfig"; +export * from "./ProxyProvider"; +export * from "./ProxyProviderRequest"; +export * from "./RACPropertyMapping"; +export * from "./RACPropertyMappingRequest"; +export * from "./RACProvider"; +export * from "./RACProviderRequest"; +export * from "./RadiusCheckAccess"; +export * from "./RadiusOutpostConfig"; +export * from "./RadiusProvider"; +export * from "./RadiusProviderPropertyMapping"; +export * from "./RadiusProviderPropertyMappingRequest"; +export * from "./RadiusProviderRequest"; +export * from "./RedirectChallenge"; +export * from "./RedirectChallengeResponseRequest"; +export * from "./RedirectStage"; +export * from "./RedirectStageModeEnum"; +export * from "./RedirectStageRequest"; +export * from "./RedirectURI"; +export * from "./RedirectURIRequest"; +export * from "./RedirectURITypeEnum"; +export * from "./RelatedGroup"; +export * from "./RelatedRule"; +export * from "./Reputation"; +export * from "./ReputationPolicy"; +export * from "./ReputationPolicyRequest"; +export * from "./Review"; +export * from "./ReviewRequest"; +export * from "./ReviewerGroup"; +export * from "./ReviewerUser"; +export * from "./Role"; +export * from "./RoleAssignedObjectPermission"; +export * from "./RoleModelPermission"; +export * from "./RoleObjectPermission"; +export * from "./RoleRequest"; +export * from "./SAMLBindingsEnum"; +export * from "./SAMLLogoutMethods"; +export * from "./SAMLMetadata"; +export * from "./SAMLNameIDPolicyEnum"; +export * from "./SAMLPropertyMapping"; +export * from "./SAMLPropertyMappingRequest"; +export * from "./SAMLProvider"; +export * from "./SAMLProviderRequest"; +export * from "./SAMLSource"; +export * from "./SAMLSourcePropertyMapping"; +export * from "./SAMLSourcePropertyMappingRequest"; +export * from "./SAMLSourceRequest"; +export * from "./SCIMAuthenticationModeEnum"; +export * from "./SCIMMapping"; +export * from "./SCIMMappingRequest"; +export * from "./SCIMProvider"; +export * from "./SCIMProviderGroup"; +export * from "./SCIMProviderGroupRequest"; +export * from "./SCIMProviderRequest"; +export * from "./SCIMProviderUser"; +export * from "./SCIMProviderUserRequest"; +export * from "./SCIMSource"; +export * from "./SCIMSourceGroup"; +export * from "./SCIMSourceGroupRequest"; +export * from "./SCIMSourcePropertyMapping"; +export * from "./SCIMSourcePropertyMappingRequest"; +export * from "./SCIMSourceRequest"; +export * from "./SCIMSourceUser"; +export * from "./SCIMSourceUserRequest"; +export * from "./SMSDevice"; +export * from "./SMSDeviceRequest"; +export * from "./SSFProvider"; +export * from "./SSFProviderRequest"; +export * from "./SSFStream"; +export * from "./SSFStreamStatusEnum"; +export * from "./Schedule"; +export * from "./ScheduleRequest"; +export * from "./ScopeMapping"; +export * from "./ScopeMappingRequest"; +export * from "./SelectableStage"; +export * from "./ServiceConnection"; +export * from "./ServiceConnectionState"; +export * from "./SessionEndChallenge"; +export * from "./SessionUser"; +export * from "./Settings"; +export * from "./SettingsRequest"; +export * from "./SeverityEnum"; +export * from "./ShellChallenge"; +export * from "./SignatureAlgorithmEnum"; +export * from "./Software"; +export * from "./SoftwareRequest"; +export * from "./Source"; +export * from "./SourceStage"; +export * from "./SourceStageRequest"; +export * from "./SourceType"; +export * from "./Stage"; +export * from "./StageModeEnum"; +export * from "./StagePrompt"; +export * from "./StaticDevice"; +export * from "./StaticDeviceRequest"; +export * from "./StaticDeviceToken"; +export * from "./SubModeEnum"; +export * from "./SyncObjectModelEnum"; +export * from "./SyncObjectRequest"; +export * from "./SyncObjectResult"; +export * from "./SyncOutgoingTriggerModeEnum"; +export * from "./SyncStatus"; +export * from "./SystemInfo"; +export * from "./SystemInfoRuntime"; +export * from "./TOTPDevice"; +export * from "./TOTPDeviceRequest"; +export * from "./Task"; +export * from "./TaskAggregatedStatusEnum"; +export * from "./TaskStatusEnum"; +export * from "./TelegramAuthRequest"; +export * from "./TelegramChallengeResponseRequest"; +export * from "./TelegramLoginChallenge"; +export * from "./TelegramSource"; +export * from "./TelegramSourcePropertyMapping"; +export * from "./TelegramSourcePropertyMappingRequest"; +export * from "./TelegramSourceRequest"; +export * from "./Tenant"; +export * from "./TenantAdminGroupRequestRequest"; +export * from "./TenantRecoveryKeyRequestRequest"; +export * from "./TenantRecoveryKeyResponse"; +export * from "./TenantRequest"; +export * from "./ThemedUrls"; +export * from "./Token"; +export * from "./TokenModel"; +export * from "./TokenRequest"; +export * from "./TokenSetKeyRequest"; +export * from "./TokenView"; +export * from "./TransactionApplicationRequest"; +export * from "./TransactionApplicationResponse"; +export * from "./TransactionPolicyBindingRequest"; +export * from "./TransportModeEnum"; +export * from "./TypeCreate"; +export * from "./UiThemeEnum"; +export * from "./UniquePasswordPolicy"; +export * from "./UniquePasswordPolicyRequest"; +export * from "./UsageEnum"; +export * from "./UsedBy"; +export * from "./UsedByActionEnum"; +export * from "./User"; +export * from "./UserAccountLockdownRequest"; +export * from "./UserAccountRequest"; +export * from "./UserAccountSerializerForRoleRequest"; +export * from "./UserAttributeEnum"; +export * from "./UserConsent"; +export * from "./UserCreationModeEnum"; +export * from "./UserDeleteStage"; +export * from "./UserDeleteStageRequest"; +export * from "./UserFieldsEnum"; +export * from "./UserKerberosSourceConnection"; +export * from "./UserKerberosSourceConnectionRequest"; +export * from "./UserLDAPSourceConnection"; +export * from "./UserLDAPSourceConnectionRequest"; +export * from "./UserLoginChallenge"; +export * from "./UserLoginChallengeResponseRequest"; +export * from "./UserLoginStage"; +export * from "./UserLoginStageRequest"; +export * from "./UserLogoutStage"; +export * from "./UserLogoutStageRequest"; +export * from "./UserMatchingModeEnum"; +export * from "./UserOAuthSourceConnection"; +export * from "./UserOAuthSourceConnectionRequest"; +export * from "./UserPasswordHashSetRequest"; +export * from "./UserPasswordSetRequest"; +export * from "./UserPath"; +export * from "./UserPlexSourceConnection"; +export * from "./UserPlexSourceConnectionRequest"; +export * from "./UserRecoveryEmailRequest"; +export * from "./UserRecoveryLinkRequest"; +export * from "./UserRequest"; +export * from "./UserSAMLSourceConnection"; +export * from "./UserSAMLSourceConnectionRequest"; +export * from "./UserSelf"; +export * from "./UserSelfGroups"; +export * from "./UserSelfRoles"; +export * from "./UserServiceAccountRequest"; +export * from "./UserServiceAccountResponse"; +export * from "./UserSetting"; +export * from "./UserSourceConnection"; +export * from "./UserSourceConnectionRequest"; +export * from "./UserTelegramSourceConnection"; +export * from "./UserTelegramSourceConnectionRequest"; +export * from "./UserTypeEnum"; +export * from "./UserVerificationEnum"; +export * from "./UserWriteStage"; +export * from "./UserWriteStageRequest"; +export * from "./ValidationError"; +export * from "./VendorEnum"; +export * from "./Version"; +export * from "./VersionHistory"; +export * from "./WSFederationProvider"; +export * from "./WSFederationProviderRequest"; +export * from "./WebAuthnDevice"; +export * from "./WebAuthnDeviceRequest"; +export * from "./WebAuthnDeviceType"; +export * from "./WebAuthnHintEnum"; +export * from "./Worker"; diff --git a/packages/client-ts/src/runtime.ts b/packages/client-ts/src/runtime.ts new file mode 100644 index 0000000000..3d93396a91 --- /dev/null +++ b/packages/client-ts/src/runtime.ts @@ -0,0 +1,515 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * authentik + * Making authentication simple. + * + * The version of the OpenAPI document: 2026.8.0-rc1 + * Contact: hello@goauthentik.io + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +export const BASE_PATH = "/api/v3".replace(/\/+$/, ""); + +export interface ConfigurationParameters { + basePath?: string; // override base path + fetchApi?: FetchAPI; // override for fetch implementation + middleware?: Middleware[]; // middleware to apply before/after fetch requests + queryParamsStringify?: (params: HTTPQuery) => string; // stringify function for query strings + username?: string; // parameter for basic security + password?: string; // parameter for basic security + apiKey?: string | Promise | ((name: string) => string | Promise); // parameter for apiKey security + accessToken?: + | string + | Promise + | ((name?: string, scopes?: string[]) => string | Promise); // parameter for oauth2 security + headers?: HTTPHeaders; //header params we want to use on every request + credentials?: RequestCredentials; //value for the credentials param we want to use on each request +} + +export class Configuration { + constructor(private configuration: ConfigurationParameters = {}) {} + + set config(configuration: Configuration) { + this.configuration = configuration; + } + + get basePath(): string { + return this.configuration.basePath != null ? this.configuration.basePath : BASE_PATH; + } + + get fetchApi(): FetchAPI | undefined { + return this.configuration.fetchApi; + } + + get middleware(): Middleware[] { + return this.configuration.middleware || []; + } + + get queryParamsStringify(): (params: HTTPQuery) => string { + return this.configuration.queryParamsStringify || querystring; + } + + get username(): string | undefined { + return this.configuration.username; + } + + get password(): string | undefined { + return this.configuration.password; + } + + get apiKey(): ((name: string) => string | Promise) | undefined { + const apiKey = this.configuration.apiKey; + if (apiKey) { + return typeof apiKey === "function" ? apiKey : () => apiKey; + } + return undefined; + } + + get accessToken(): + | ((name?: string, scopes?: string[]) => string | Promise) + | undefined { + const accessToken = this.configuration.accessToken; + if (accessToken) { + return typeof accessToken === "function" ? accessToken : async () => accessToken; + } + return undefined; + } + + get headers(): HTTPHeaders | undefined { + return this.configuration.headers; + } + + get credentials(): RequestCredentials | undefined { + return this.configuration.credentials; + } +} + +export const DefaultConfig = new Configuration(); + +/** + * This is the base class for all generated API classes. + */ +export class BaseAPI { + private static readonly jsonRegex = new RegExp( + "^(:?application\/json|[^;/ \t]+\/[^;/ \t]+[+]json)[ \t]*(:?;.*)?$", + "i", + ); + private middleware: Middleware[]; + + constructor(protected configuration = DefaultConfig) { + this.middleware = configuration.middleware; + } + + withMiddleware(this: T, ...middlewares: Middleware[]) { + const next = this.clone(); + next.middleware = next.middleware.concat(...middlewares); + return next; + } + + withPreMiddleware(this: T, ...preMiddlewares: Array) { + const middlewares = preMiddlewares.map((pre) => ({ pre })); + return this.withMiddleware(...middlewares); + } + + withPostMiddleware(this: T, ...postMiddlewares: Array) { + const middlewares = postMiddlewares.map((post) => ({ post })); + return this.withMiddleware(...middlewares); + } + + /** + * Check if the given MIME is a JSON MIME. + * JSON MIME examples: + * application/json + * application/json; charset=UTF8 + * APPLICATION/JSON + * application/vnd.company+json + * @param mime - MIME (Multipurpose Internet Mail Extensions) + * @return True if the given MIME is JSON, false otherwise. + */ + protected isJsonMime(mime: string | null | undefined): boolean { + if (!mime) { + return false; + } + return BaseAPI.jsonRegex.test(mime); + } + + protected async request( + context: RequestOpts, + initOverrides?: RequestInit | InitOverrideFunction, + ): Promise { + const { url, init } = await this.createFetchParams(context, initOverrides); + const response = await this.fetchApi(url, init); + if (response && response.status >= 200 && response.status < 300) { + return response; + } + throw new ResponseError(response, "Response returned an error code"); + } + + private async createFetchParams( + context: RequestOpts, + initOverrides?: RequestInit | InitOverrideFunction, + ) { + let url = this.configuration.basePath + context.path; + if (context.query !== undefined && Object.keys(context.query).length !== 0) { + // only add the querystring to the URL if there are query parameters. + // this is done to avoid urls ending with a "?" character which buggy webservers + // do not handle correctly sometimes. + url += "?" + this.configuration.queryParamsStringify(context.query); + } + + const headers = Object.assign({}, this.configuration.headers, context.headers); + Object.keys(headers).forEach((key) => + headers[key] === undefined ? delete headers[key] : {}, + ); + + const initOverrideFn = + typeof initOverrides === "function" ? initOverrides : async () => initOverrides; + + const initParams = { + method: context.method, + headers, + body: context.body, + credentials: this.configuration.credentials, + }; + + const overriddenInit: RequestInit = { + ...initParams, + ...(await initOverrideFn({ + init: initParams, + context, + })), + }; + + let body: any; + if ( + isFormData(overriddenInit.body) || + overriddenInit.body instanceof URLSearchParams || + isBlob(overriddenInit.body) + ) { + body = overriddenInit.body; + } else if (this.isJsonMime(headers["Content-Type"])) { + body = JSON.stringify(overriddenInit.body); + } else { + body = overriddenInit.body; + } + + const init: RequestInit = { + ...overriddenInit, + body, + }; + + return { url, init }; + } + + private fetchApi = async (url: string, init: RequestInit) => { + let fetchParams = { url, init }; + for (const middleware of this.middleware) { + if (middleware.pre) { + fetchParams = + (await middleware.pre({ + fetch: this.fetchApi, + ...fetchParams, + })) || fetchParams; + } + } + let response: Response | undefined = undefined; + try { + response = await (this.configuration.fetchApi || fetch)( + fetchParams.url, + fetchParams.init, + ); + } catch (e) { + for (const middleware of this.middleware) { + if (middleware.onError) { + response = + (await middleware.onError({ + fetch: this.fetchApi, + url: fetchParams.url, + init: fetchParams.init, + error: e, + response: response ? response.clone() : undefined, + })) || response; + } + } + if (response === undefined) { + if (e instanceof Error) { + throw new FetchError( + e, + "The request failed and the interceptors did not return an alternative response", + ); + } else { + throw e; + } + } + } + for (const middleware of this.middleware) { + if (middleware.post) { + response = + (await middleware.post({ + fetch: this.fetchApi, + url: fetchParams.url, + init: fetchParams.init, + response: response.clone(), + })) || response; + } + } + return response; + }; + + /** + * Create a shallow clone of `this` by constructing a new instance + * and then shallow cloning data members. + */ + private clone(this: T): T { + const constructor = this.constructor as any; + const next = new constructor(this.configuration); + next.middleware = this.middleware.slice(); + return next; + } +} + +function isBlob(value: any): value is Blob { + return typeof Blob !== "undefined" && value instanceof Blob; +} + +function isFormData(value: any): value is FormData { + return typeof FormData !== "undefined" && value instanceof FormData; +} + +export class ResponseError extends Error { + override name: "ResponseError" = "ResponseError"; + constructor( + public response: Response, + msg?: string, + ) { + super(msg); + + // restore prototype chain + const actualProto = new.target.prototype; + if (Object.setPrototypeOf) { + Object.setPrototypeOf(this, actualProto); + } + } +} + +export class FetchError extends Error { + override name: "FetchError" = "FetchError"; + constructor( + public cause: Error, + msg?: string, + ) { + super(msg); + + // restore prototype chain + const actualProto = new.target.prototype; + if (Object.setPrototypeOf) { + Object.setPrototypeOf(this, actualProto); + } + } +} + +export class RequiredError extends Error { + override name: "RequiredError" = "RequiredError"; + constructor( + public field: string, + msg?: string, + ) { + super(msg); + + // restore prototype chain + const actualProto = new.target.prototype; + if (Object.setPrototypeOf) { + Object.setPrototypeOf(this, actualProto); + } + } +} + +export const COLLECTION_FORMATS = { + csv: ",", + ssv: " ", + tsv: "\t", + pipes: "|", +}; + +export type FetchAPI = WindowOrWorkerGlobalScope["fetch"]; + +export type Json = any; +export type HTTPMethod = "GET" | "POST" | "PUT" | "PATCH" | "DELETE" | "OPTIONS" | "HEAD"; +export type HTTPHeaders = { [key: string]: string }; +export type HTTPQuery = { + [key: string]: + | string + | number + | null + | boolean + | Array + | Set + | HTTPQuery; +}; +export type HTTPBody = Json | FormData | URLSearchParams; +export type HTTPRequestInit = { + headers?: HTTPHeaders; + method: HTTPMethod; + credentials?: RequestCredentials; + body?: HTTPBody; +}; +export type ModelPropertyNaming = "camelCase" | "snake_case" | "PascalCase" | "original"; + +export type InitOverrideFunction = (requestContext: { + init: HTTPRequestInit; + context: RequestOpts; +}) => Promise; + +export interface FetchParams { + url: string; + init: RequestInit; +} + +export interface RequestOpts { + path: string; + method: HTTPMethod; + headers: HTTPHeaders; + query?: HTTPQuery; + body?: HTTPBody; +} + +export function querystring(params: HTTPQuery, prefix: string = ""): string { + return Object.keys(params) + .map((key) => querystringSingleKey(key, params[key], prefix)) + .filter((part) => part.length > 0) + .join("&"); +} + +function querystringSingleKey( + key: string, + value: + | string + | number + | null + | undefined + | boolean + | Array + | Set + | HTTPQuery, + keyPrefix: string = "", +): string { + const fullKey = keyPrefix + (keyPrefix.length ? `[${key}]` : key); + if (value instanceof Array) { + const multiValue = value + .map((singleValue) => encodeURIComponent(String(singleValue))) + .join(`&${encodeURIComponent(fullKey)}=`); + return `${encodeURIComponent(fullKey)}=${multiValue}`; + } + if (value instanceof Set) { + const valueAsArray = Array.from(value); + return querystringSingleKey(key, valueAsArray, keyPrefix); + } + if (value instanceof Date) { + return `${encodeURIComponent(fullKey)}=${encodeURIComponent(value.toISOString())}`; + } + if (value instanceof Object) { + return querystring(value as HTTPQuery, fullKey); + } + return `${encodeURIComponent(fullKey)}=${encodeURIComponent(String(value))}`; +} + +export function exists(json: any, key: string) { + const value = json[key]; + return value !== null && value !== undefined; +} + +export function mapValues(data: any, fn: (item: any) => any) { + const result: { [key: string]: any } = {}; + for (const key of Object.keys(data)) { + result[key] = fn(data[key]); + } + return result; +} + +export function canConsumeForm(consumes: Consume[]): boolean { + for (const consume of consumes) { + if ("multipart/form-data" === consume.contentType) { + return true; + } + } + return false; +} + +export interface Consume { + contentType: string; +} + +export interface RequestContext { + fetch: FetchAPI; + url: string; + init: RequestInit; +} + +export interface ResponseContext { + fetch: FetchAPI; + url: string; + init: RequestInit; + response: Response; +} + +export interface ErrorContext { + fetch: FetchAPI; + url: string; + init: RequestInit; + error: unknown; + response?: Response; +} + +export interface Middleware { + pre?(context: RequestContext): Promise; + post?(context: ResponseContext): Promise; + onError?(context: ErrorContext): Promise; +} + +export interface ApiResponse { + raw: Response; + value(): Promise; +} + +export interface ResponseTransformer { + (json: any): T; +} + +export class JSONApiResponse { + constructor( + public raw: Response, + private transformer: ResponseTransformer = (jsonValue: any) => jsonValue, + ) {} + + async value(): Promise { + return this.transformer(await this.raw.json()); + } +} + +export class VoidApiResponse { + constructor(public raw: Response) {} + + async value(): Promise { + return undefined; + } +} + +export class BlobApiResponse { + constructor(public raw: Response) {} + + async value(): Promise { + return await this.raw.blob(); + } +} + +export class TextApiResponse { + constructor(public raw: Response) {} + + async value(): Promise { + return await this.raw.text(); + } +} diff --git a/scripts/api/ts-templates/tsconfig.esm.mustache b/packages/client-ts/templates/tsconfig.esm.mustache similarity index 100% rename from scripts/api/ts-templates/tsconfig.esm.mustache rename to packages/client-ts/templates/tsconfig.esm.mustache diff --git a/scripts/api/ts-templates/tsconfig.mustache b/packages/client-ts/templates/tsconfig.mustache similarity index 88% rename from scripts/api/ts-templates/tsconfig.mustache rename to packages/client-ts/templates/tsconfig.mustache index 1226648c81..3da6b4340f 100644 --- a/scripts/api/ts-templates/tsconfig.mustache +++ b/packages/client-ts/templates/tsconfig.mustache @@ -1,10 +1,7 @@ { "$schema": "https://json.schemastore.org/tsconfig", "compilerOptions": { - "composite": true, "isolatedModules": true, - "incremental": true, - "baseUrl": ".", "rootDir": "src", "strict": true, "newLine": "lf", diff --git a/packages/client-ts/tsconfig.esm.json b/packages/client-ts/tsconfig.esm.json new file mode 100644 index 0000000000..eda76839da --- /dev/null +++ b/packages/client-ts/tsconfig.esm.json @@ -0,0 +1,7 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "dist/esm" + } +} diff --git a/packages/client-ts/tsconfig.json b/packages/client-ts/tsconfig.json new file mode 100644 index 0000000000..e2b7fa0d4f --- /dev/null +++ b/packages/client-ts/tsconfig.json @@ -0,0 +1,20 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "compilerOptions": { + "isolatedModules": true, + "rootDir": "src", + "strict": true, + "newLine": "lf", + "target": "ESNext", + "module": "NodeNext", + "moduleResolution": "NodeNext", + "outDir": "dist", + "skipDefaultLibCheck": true, + "skipLibCheck": true, + "sourceMap": true, + "declaration": true, + "declarationMap": true, + "lib": ["DOM", "DOM.Iterable", "ESNext"] + }, + "exclude": ["node_modules", "./out/**/*", "./dist/**/*"] +} diff --git a/packages/django-dramatiq-postgres/django_dramatiq_postgres/apps.py b/packages/django-dramatiq-postgres/django_dramatiq_postgres/apps.py index 24a9ddffd0..bfb6c05a7a 100644 --- a/packages/django-dramatiq-postgres/django_dramatiq_postgres/apps.py +++ b/packages/django-dramatiq-postgres/django_dramatiq_postgres/apps.py @@ -32,16 +32,17 @@ class DjangoDramatiqPostgres(AppConfig): middleware=[], ) - for middleware_class, middleware_kwargs in Conf().middlewares: - middleware: dramatiq.middleware.middleware.Middleware = import_string(middleware_class)( - **middleware_kwargs, - ) - if isinstance(middleware, Results): - middleware.backend = import_string(Conf().result_backend)( + for middleware_class_path, middleware_kwargs in Conf().middlewares: + middleware_class = import_string(middleware_class_path) + if issubclass(middleware_class, Results): + middleware_kwargs["backend"] = import_string(Conf().result_backend)( *Conf().result_backend_args, **Conf().result_backend_kwargs, ) - broker.add_middleware(middleware) # type: ignore[no-untyped-call] + middleware: dramatiq.middleware.middleware.Middleware = middleware_class( + **middleware_kwargs, + ) + broker.add_middleware(middleware) dramatiq.set_broker(broker) diff --git a/packages/django-dramatiq-postgres/django_dramatiq_postgres/broker.py b/packages/django-dramatiq-postgres/django_dramatiq_postgres/broker.py index 459a266a27..f617064601 100644 --- a/packages/django-dramatiq-postgres/django_dramatiq_postgres/broker.py +++ b/packages/django-dramatiq-postgres/django_dramatiq_postgres/broker.py @@ -23,11 +23,9 @@ from django.utils.functional import cached_property from django.utils.module_loading import import_string from dramatiq.broker import Broker, Consumer, MessageProxy from dramatiq.common import compute_backoff, current_millis, dq_name, q_name, xq_name -from dramatiq.errors import ConnectionError, QueueJoinTimeout +from dramatiq.errors import BrokerConnectionError, DecodeError, QueueJoinTimeout from dramatiq.message import Message -from dramatiq.middleware import ( - Middleware, -) +from dramatiq.middleware import Middleware from pglock.core import _cast_lock_id from psycopg import sql from psycopg.errors import AdminShutdown @@ -46,7 +44,6 @@ DATABASE_ERRORS = ( AdminShutdown, InterfaceError, DatabaseError, - ConnectionError, OperationalError, ) @@ -55,20 +52,24 @@ def channel_name(queue_name: str, identifier: ChannelIdentifier) -> str: return f"{CHANNEL_PREFIX}.{queue_name}.{identifier.value}" -def raise_connection_error(func: Callable[P, R]) -> Callable[P, R]: # noqa: UP047 +def raise_broker_connection_error(func: Callable[P, R]) -> Callable[P, R]: # noqa: UP047 @functools.wraps(func) def wrapper(*args: P.args, **kwargs: P.kwargs) -> R: try: return func(*args, **kwargs) except DATABASE_ERRORS as exc: logger.warning("Database error encountered", exc=exc) - raise ConnectionError(str(exc)) from exc # type: ignore[no-untyped-call] + try: + connections.close_all() + except DATABASE_ERRORS: + pass + raise BrokerConnectionError(str(exc)) from exc # type: ignore[no-untyped-call] return wrapper class PostgresBroker(Broker): - queues: set[str] # type: ignore[assignment] + queues: set[str] def __init__( self, @@ -77,7 +78,7 @@ class PostgresBroker(Broker): db_alias: str = DEFAULT_DB_ALIAS, **kwargs: Any, ) -> None: - super().__init__(*args, middleware=[], **kwargs) # type: ignore[no-untyped-call,misc] + super().__init__(*args, middleware=[], **kwargs) # type: ignore[misc] self.logger = get_logger(__name__, type(self)) self.queues = set() @@ -118,10 +119,10 @@ class PostgresBroker(Broker): def declare_queue(self, queue_name: str) -> None: if queue_name not in self.queues: - self.emit_before("declare_queue", queue_name) # type: ignore[no-untyped-call] + self.emit_before("declare_queue", queue_name) self.queues.add(queue_name) # Nothing more to do, all queues are in the same table - self.emit_after("declare_queue", queue_name) # type: ignore[no-untyped-call] + self.emit_after("declare_queue", queue_name) def model_defaults(self, message: Message[Any]) -> dict[str, Any]: eta = None @@ -137,7 +138,7 @@ class PostgresBroker(Broker): } @tenacity.retry( - retry=tenacity.retry_if_exception_type(ConnectionError), + retry=tenacity.retry_if_exception_type(BrokerConnectionError), reraise=True, wait=tenacity.wait_random_exponential(multiplier=1, max=5), stop=tenacity.stop_after_attempt(3), @@ -145,11 +146,11 @@ class PostgresBroker(Broker): cast(logging.Logger, logger), logging.INFO, exc_info=True ), ) - @raise_connection_error + @raise_broker_connection_error def enqueue(self, message: Message[Any], *, delay: int | None = None) -> Message[Any]: - queue_name = q_name(message.queue_name) # type: ignore[no-untyped-call] + queue_name = q_name(message.queue_name) if delay: - message_eta = current_millis() + delay # type: ignore[no-untyped-call] + message_eta = current_millis() + delay message.options["eta"] = message_eta self.declare_queue(queue_name) @@ -159,7 +160,7 @@ class PostgresBroker(Broker): message.options["model_defaults"] = self.model_defaults(message) message.options["model_create_defaults"] = {} - self.emit_before("enqueue", message, delay) # type: ignore[no-untyped-call] + self.emit_before("enqueue", message, delay) with transaction.atomic(using=self.db_alias): query = { @@ -181,7 +182,7 @@ class PostgresBroker(Broker): message.options["task"] = task message.options["task_created"] = created - self.emit_after("enqueue", message, delay) # type: ignore[no-untyped-call] + self.emit_after("enqueue", message, delay) return message def get_declared_queues(self) -> set[str]: @@ -189,7 +190,7 @@ class PostgresBroker(Broker): def flush(self, queue_name: str) -> None: self.query_set.filter( - queue_name__in=(queue_name, dq_name(queue_name), xq_name(queue_name)) # type: ignore[no-untyped-call] + queue_name__in=(queue_name, dq_name(queue_name), xq_name(queue_name)) ).delete() def flush_all(self) -> None: @@ -366,12 +367,23 @@ class _PostgresConsumer(Consumer): ) if task is None: return None - message = Message.decode(cast(bytes, task.message)) + try: + message = Message.decode(cast(bytes, task.message)) + except DecodeError: + self.logger.error( + "Failed to decode task, rejecting", queue=self.queue_name, message_id=message_id + ) + self.query_set.filter(message_id=message_id, queue_name=self.queue_name).update( + state=TaskState.REJECTED, + mtime=timezone.now(), + eta=None, + ) + return None message.options["task"] = task self.in_processing.add(str(message_id)) return message - @raise_connection_error + @raise_broker_connection_error def __next__(self) -> MessageProxy | None: # This method is called every second @@ -391,7 +403,7 @@ class _PostgresConsumer(Consumer): if processing >= self.prefetch: # If we have too many messages already processing, wait and don't consume a message # straight away, other workers will be faster. - self.misses, backoff_ms = compute_backoff(self.misses, max_backoff=1000) # type: ignore[no-untyped-call] + self.misses, backoff_ms = compute_backoff(self.misses, max_backoff=1000) self.logger.debug( "Too many messages in processing, Sleeping", processing=processing, @@ -416,7 +428,7 @@ class _PostgresConsumer(Consumer): break message = self._consume_one(str(message_id)) if message is not None: - return MessageProxy(message) # type: ignore[no-untyped-call] + return MessageProxy(message) else: self.logger.debug("Message already consumed. Skipping.", message_id=message_id) continue @@ -440,7 +452,7 @@ class _PostgresConsumer(Consumer): self.to_unlock.add(str(message_id)) return False - def _post_process_message(self, message: Message[Any], state: TaskState) -> None: + def _post_process_message(self, message: MessageProxy, state: TaskState) -> None: self.logger.debug("Post-processing message", message=message.message_id, state=state) try: self.in_processing.remove(str(message.message_id)) @@ -462,16 +474,16 @@ class _PostgresConsumer(Consumer): ) message.options["task"] = task - @raise_connection_error - def ack(self, message: Message[Any]) -> None: + @raise_broker_connection_error + def ack(self, message: MessageProxy) -> None: self._post_process_message(message, TaskState.DONE) - @raise_connection_error - def nack(self, message: Message[Any]) -> None: + @raise_broker_connection_error + def nack(self, message: MessageProxy) -> None: self._post_process_message(message, TaskState.REJECTED) - @raise_connection_error - def requeue(self, messages: Iterable[Message[Any]]) -> None: + @raise_broker_connection_error + def requeue(self, messages: Iterable[MessageProxy]) -> None: self.query_set.filter( message_id__in=[message.message_id for message in messages], ).update( @@ -510,7 +522,7 @@ class _PostgresConsumer(Consumer): self.logger.info("Purged messages in all queues", count=count) self.task_purge_last_run = timezone.now() - @raise_connection_error + @raise_broker_connection_error def close(self) -> None: try: self._purge_locks() diff --git a/packages/django-dramatiq-postgres/django_dramatiq_postgres/forks.py b/packages/django-dramatiq-postgres/django_dramatiq_postgres/forks.py index b2195c104c..9bdc167da4 100644 --- a/packages/django-dramatiq-postgres/django_dramatiq_postgres/forks.py +++ b/packages/django-dramatiq-postgres/django_dramatiq_postgres/forks.py @@ -5,7 +5,7 @@ from signal import pause from django_dramatiq_postgres.conf import Conf -def worker_metrics() -> None: +def worker_metrics() -> int: import_module(Conf().autodiscovery["setup_module"]) from django_dramatiq_postgres.middleware import MetricsMiddleware @@ -15,3 +15,4 @@ def worker_metrics() -> None: int(os.getenv("dramatiq_prom_port", "9191")), ) pause() + return 0 diff --git a/packages/django-dramatiq-postgres/django_dramatiq_postgres/management/commands/worker.py b/packages/django-dramatiq-postgres/django_dramatiq_postgres/management/commands/worker.py deleted file mode 100644 index 3fcfafebc0..0000000000 --- a/packages/django-dramatiq-postgres/django_dramatiq_postgres/management/commands/worker.py +++ /dev/null @@ -1,102 +0,0 @@ -import platform -import sys -from argparse import Namespace -from multiprocessing import set_start_method -from typing import Any - -from django.apps.registry import apps -from django.core.management.base import BaseCommand, CommandParser -from django.db import connections -from django.utils.module_loading import import_string, module_has_submodule -from dramatiq.cli import main - -from django_dramatiq_postgres.conf import Conf - - -class Command(BaseCommand): - """Run worker""" - - def add_arguments(self, parser: CommandParser) -> None: - parser.add_argument( - "--pid-file", - action="store", - default=None, - dest="pid_file", - help="PID file", - ) - parser.add_argument( - "--watch", - action="store_true", - default=False, - dest="watch", - help="Watch for file changes", - ) - - def handle( - self, - pid_file: str, - watch: bool, - verbosity: int, - **options: Any, - ) -> None: - worker = Conf().worker - setup, modules = self._discover_tasks_modules() - args = Namespace( - broker=setup, - modules=modules, - path=["."], - queues=None, - log_file=None, - skip_logging=True, - use_spawn=False, - forks=[], - worker_shutdown_timeout=600000, - watch=None, - watch_use_polling=False, - include_patterns=["**.py"], - exclude_patterns=None, - verbose=0, - ) - if watch: - args.watch = worker["watch_folder"] - if worker["watch_use_polling"]: - args.watch_use_polling = True - - if processes := worker["processes"]: - args.processes = processes - if threads := worker["threads"]: - args.threads = threads - - if pid_file is not None: - args.pid_file = pid_file - - args.verbose = verbosity - 1 - # > On macOS [...] the fork start method should be considered unsafe - # https://docs.python.org/3/library/multiprocessing.html#contexts-and-start-methods - if not platform.system() == "Darwin": - set_start_method("fork") - connections.close_all() - sys.exit(main(args)) # type: ignore[no-untyped-call] - - def _discover_tasks_modules(self) -> tuple[str, list[str]]: - # Does not support a tasks directory - autodiscovery = Conf().autodiscovery - modules = [] - - if autodiscovery["enabled"]: - for app in apps.get_app_configs(): - if autodiscovery["apps_prefix"] and not app.name.startswith( - autodiscovery["apps_prefix"] - ): - continue - if module_has_submodule(app.module, autodiscovery["actors_module_name"]): - modules.append(f"{app.name}.{autodiscovery['actors_module_name']}") - else: - modules_callback = autodiscovery["modules_callback"] - callback = ( - modules_callback - if not isinstance(modules_callback, str) - else import_string(modules_callback) - ) - modules.extend(callback()) - return autodiscovery["setup_module"], modules diff --git a/packages/django-dramatiq-postgres/django_dramatiq_postgres/middleware.py b/packages/django-dramatiq-postgres/django_dramatiq_postgres/middleware.py index 9a63a32a15..372d65957a 100644 --- a/packages/django-dramatiq-postgres/django_dramatiq_postgres/middleware.py +++ b/packages/django-dramatiq-postgres/django_dramatiq_postgres/middleware.py @@ -10,7 +10,7 @@ from typing import TYPE_CHECKING, Any, cast from django.db import DatabaseError, close_old_connections, connections from dramatiq.actor import Actor -from dramatiq.broker import Broker +from dramatiq.broker import Broker, MessageProxy from dramatiq.common import current_millis from dramatiq.message import Message from dramatiq.middleware.middleware import Middleware @@ -27,7 +27,7 @@ class HTTPServerThread(Thread): """Base class for a thread which runs an HTTP Server. Mainly used for typing the `server` instance variable.""" - server: HTTPServer | None + server: HTTPServer | None = None class HTTPServer(BaseHTTPServer): @@ -79,7 +79,7 @@ class DbConnectionMiddleware(Middleware): class TaskStateBeforeMiddleware(Middleware): - def before_process_message(self, broker: PostgresBroker, message: Message[Any]) -> None: + def before_process_message(self, broker: PostgresBroker, message: Message[Any]) -> None: # type: ignore[override] broker.query_set.filter( message_id=message.message_id, queue_name=message.queue_name, @@ -90,7 +90,7 @@ class TaskStateBeforeMiddleware(Middleware): class TaskStateAfterMiddleware(Middleware): - def before_process_message(self, broker: PostgresBroker, message: Message[Any]) -> None: + def before_process_message(self, broker: PostgresBroker, message: MessageProxy) -> None: # type: ignore[override] broker.query_set.filter( message_id=message.message_id, queue_name=message.queue_name, @@ -99,7 +99,7 @@ class TaskStateAfterMiddleware(Middleware): state=TaskState.RUNNING, ) - def after_skip_message(self, broker: PostgresBroker, message: Message[Any]) -> None: + def after_skip_message(self, broker: PostgresBroker, message: MessageProxy) -> None: # type: ignore[override] broker.query_set.filter( message_id=message.message_id, queue_name=message.queue_name, @@ -110,11 +110,11 @@ class TaskStateAfterMiddleware(Middleware): def after_process_message( self, - broker: PostgresBroker, - message: Message[Any], + broker: PostgresBroker, # type: ignore[override] + message: MessageProxy, *, result: Any | None = None, - exception: Exception | None = None, + exception: BaseException | None = None, ) -> None: self.after_skip_message(broker, message) @@ -147,7 +147,7 @@ class CurrentTask(Middleware): raise CurrentTaskNotFound() return task[-1] - def before_process_message(self, broker: Broker, message: Message[Any]) -> None: + def before_process_message(self, broker: Broker, message: MessageProxy) -> None: tasks = self._TASKS.get() if tasks is None: tasks = [] @@ -157,10 +157,10 @@ class CurrentTask(Middleware): def after_process_message( self, broker: Broker, - message: Message[Any], + message: MessageProxy, *, result: Any | None = None, - exception: Exception | None = None, + exception: BaseException | None = None, ) -> None: tasks: list[TaskBase] | None = self._TASKS.get() if tasks is None or len(tasks) == 0: @@ -194,7 +194,7 @@ class CurrentTask(Middleware): pass self._TASKS.set(tasks[:-1]) - def after_skip_message(self, broker: Broker, message: Message[Any]) -> None: + def after_skip_message(self, broker: Broker, message: MessageProxy) -> None: self.after_process_message(broker, message) @@ -236,7 +236,7 @@ class MetricsMiddleware(Middleware): self.message_start_times: dict[str, int] = {} @property - def forks(self) -> list[Callable[[], None]]: + def forks(self) -> list[Callable[[], int]]: from django_dramatiq_postgres.forks import worker_metrics return [worker_metrics] @@ -310,41 +310,41 @@ class MetricsMiddleware(Middleware): # TODO: worker_id multiprocess.mark_process_dead(os.getpid()) # type: ignore[no-untyped-call] - def _make_labels(self, message: Message[Any]) -> list[str]: + def _make_labels(self, message: MessageProxy | Message[Any]) -> list[str]: return [message.queue_name, message.actor_name] - def after_nack(self, broker: Broker, message: Message[Any]) -> None: + def after_nack(self, broker: Broker, message: MessageProxy) -> None: self.total_rejected_messages.labels(*self._make_labels(message)).inc() def after_enqueue(self, broker: Broker, message: Message[Any], delay: int) -> None: if "retries" in message.options: self.total_retried_messages.labels(*self._make_labels(message)).inc() - def before_delay_message(self, broker: Broker, message: Message[Any]) -> None: + def before_delay_message(self, broker: Broker, message: MessageProxy) -> None: self.delayed_messages.add(message.message_id) self.in_progress_delayed_messages.labels(*self._make_labels(message)).inc() - def before_process_message(self, broker: Broker, message: Message[Any]) -> None: + def before_process_message(self, broker: Broker, message: MessageProxy) -> None: labels = self._make_labels(message) if message.message_id in self.delayed_messages: self.delayed_messages.remove(message.message_id) self.in_progress_delayed_messages.labels(*labels).dec() self.in_progress_messages.labels(*labels).inc() - self.message_start_times[message.message_id] = current_millis() # type: ignore[no-untyped-call] + self.message_start_times[message.message_id] = current_millis() def after_process_message( self, broker: Broker, - message: Message[Any], + message: MessageProxy, *, result: Any | None = None, - exception: Exception | None = None, + exception: BaseException | None = None, ) -> None: labels = self._make_labels(message) - message_start_time = self.message_start_times.pop(message.message_id, current_millis()) # type: ignore[no-untyped-call] - message_duration = current_millis() - message_start_time # type: ignore[no-untyped-call] + message_start_time = self.message_start_times.pop(message.message_id, current_millis()) + message_duration = current_millis() - message_start_time self.messages_durations.labels(*labels).observe(message_duration) self.in_progress_messages.labels(*labels).dec() diff --git a/packages/django-dramatiq-postgres/django_dramatiq_postgres/models.py b/packages/django-dramatiq-postgres/django_dramatiq_postgres/models.py index f21e7b6161..df8301219c 100644 --- a/packages/django-dramatiq-postgres/django_dramatiq_postgres/models.py +++ b/packages/django-dramatiq-postgres/django_dramatiq_postgres/models.py @@ -63,6 +63,7 @@ class TaskBase(models.Model): indexes = ( models.Index(fields=("queue_name",)), models.Index(fields=("queue_name", "state")), + models.Index(fields=("queue_name", "state", "eta")), models.Index(fields=("message_id", "queue_name", "state", "eta")), models.Index(fields=("message_id", "state", "eta")), models.Index(fields=("message_id", "queue_name", "state")), @@ -158,7 +159,7 @@ class ScheduleBase(models.Model): def send(self, broker: Broker | None = None) -> Message[Any]: broker = broker or get_broker() - actor: Actor[Any, Any] = broker.get_actor(self.actor_name) # type: ignore[no-untyped-call] + actor: Actor[Any, Any] = broker.get_actor(self.actor_name) return actor.send_with_options( args=pickle.loads(self.args), # nosec kwargs=pickle.loads(self.kwargs), # nosec diff --git a/packages/django-dramatiq-postgres/pyproject.toml b/packages/django-dramatiq-postgres/pyproject.toml index 96c4376a47..de34d9891b 100644 --- a/packages/django-dramatiq-postgres/pyproject.toml +++ b/packages/django-dramatiq-postgres/pyproject.toml @@ -36,7 +36,7 @@ dependencies = [ "django >=4.2,<6.0", "django-pglock >=1.7,<2", "django-pgtrigger >=4,<5", - "dramatiq[watch] >=1.17,<1.18", + "dramatiq >=2,<3", "tenacity >=9,<10", "structlog >=25,<26", ] diff --git a/packages/django-postgres-cache/django_postgres_cache/backend.py b/packages/django-postgres-cache/django_postgres_cache/backend.py index 98c864e788..c74c3076a4 100644 --- a/packages/django-postgres-cache/django_postgres_cache/backend.py +++ b/packages/django-postgres-cache/django_postgres_cache/backend.py @@ -1,100 +1,46 @@ import base64 import pickle # nosec +from collections.abc import Iterable from datetime import UTC, datetime from typing import Any from django.conf import settings -from django.core.cache.backends.base import DEFAULT_TIMEOUT -from django.core.cache.backends.db import DatabaseCache as BaseDatabaseCache +from django.core.cache.backends.base import DEFAULT_TIMEOUT, BaseCache, get_key_func from django.db import DatabaseError -from django.db.utils import ProgrammingError -from django.utils.module_loading import import_string from django.utils.timezone import now from psqlextra.types import ConflictAction from django_postgres_cache.models import CacheEntry -class DatabaseCache(BaseDatabaseCache): - def __init__(self, table: str, params: dict[str, Any]) -> None: - super().__init__(table, params) - self.reverse_key_func = import_string(params["REVERSE_KEY_FUNCTION"]) - self._table = CacheEntry._meta.db_table - self.cache_model_class = CacheEntry +class DatabaseCache(BaseCache): + pickle_protocol = pickle.HIGHEST_PROTOCOL - def _cull(self, *args: Any, **kwargs: Any) -> None: - """Stubbed out cull method as we cull in a background task""" - pass + def __init__(self, location: Any, params: dict[str, Any]) -> None: + super().__init__(params) + self.reverse_key_func = get_key_func(params["REVERSE_KEY_FUNCTION"]) - def get(self, key: str, default: Any | None = None, version: int | None = None) -> Any: - try: - return super().get(key, default=default, version=version) - except ProgrammingError: - return default + def _make_value(self, value: Any) -> str: + pickled = pickle.dumps(value, self.pickle_protocol) + # The DB column is expecting a string, so make sure the value is a + # string, not bytes. Refs #19274. + b64encoded = base64.b64encode(pickled).decode("latin1") - def keys(self, keys_pattern: str, version: int | None = None) -> list[str]: - try: - return self._keys(keys_pattern, version=version) - except ProgrammingError: - return [] + return b64encoded - def _keys(self, keys_pattern: str, version: int | None = None) -> list[str]: - keys_pattern = self.make_key(keys_pattern.replace("*", ".*"), version=version) + def _unmake_value(self, encoded_value: str) -> Any: + return pickle.loads(base64.b64decode(encoded_value.encode())) # nosec - return [ - self.reverse_key_func(key) - for key in CacheEntry.objects.filter(cache_key__regex=keys_pattern).values_list( - "cache_key", flat=True - ) - ] - - def ttl(self, key: str, version: int | None = None) -> int | None: - """Get TTL left for a given key and version""" - key = self.make_and_validate_key(key, version=version) - entry = CacheEntry.objects.filter(cache_key=key).first() - if not entry: - return None - return int((entry.expires - now()).total_seconds()) - - def _base_set_expiry(self, timeout: float | None) -> datetime: + def _make_expiry(self, timeout: float | None) -> datetime: timeout = self.get_backend_timeout(timeout) if timeout is None: exp = datetime.max else: tz = UTC if settings.USE_TZ else None exp = datetime.fromtimestamp(timeout, tz=tz) - exp.replace(microsecond=0) + exp = exp.replace(microsecond=0) return exp - def _base_set_data( - self, - key: Any, - value: Any, - timeout: float | None, - version: int | None = None, - ) -> tuple[str, str, datetime]: - key = self.make_and_validate_key(key, version=version) - pickled = pickle.dumps(value, self.pickle_protocol) - # The DB column is expecting a string, so make sure the value is a - # string, not bytes. Refs #19274. - b64encoded = base64.b64encode(pickled).decode("latin1") - - return (key, b64encoded, self._base_set_expiry(timeout)) - - def touch( - self, - key: Any, - timeout: float | None = DEFAULT_TIMEOUT, - version: int | None = None, - ) -> bool: - key = self.make_and_validate_key(key, version=version) - expiry = self._base_set_expiry(timeout) - try: - count = CacheEntry.objects.filter(cache_key=key).update(expires=expiry) - return bool(count != 0) - except DatabaseError: - return False - def add( self, key: Any, @@ -102,24 +48,28 @@ class DatabaseCache(BaseDatabaseCache): timeout: float | None = DEFAULT_TIMEOUT, version: int | None = None, ) -> bool: - key, value, expiry = self._base_set_data(key, value, timeout, version) + key = self.make_and_validate_key(key, version=version) + value = self._make_value(value) + expiry = self._make_expiry(timeout) + # No need for a transaction here, since old values get deleted + CacheEntry.objects.filter(cache_key=key, expires__lte=now()).delete() try: - CacheEntry.objects.on_conflict( - ["cache_key"], - ConflictAction.UPDATE, - update_values=dict( - expires=expiry, - ), - ).insert( - cache_key=key, - value=value, - expires=expiry, - ) - # We don't know if the row already existed, we just return True for success + CacheEntry.objects.create(cache_key=key, value=value, expires=expiry) return True except DatabaseError: + # Any error, including integrity error and we didn't insert the row return False + def get(self, key: Any, default: Any | None = None, version: int | None = None) -> Any: + key = self.make_and_validate_key(key, version=version) + try: + entry = CacheEntry.objects.filter(cache_key=key, expires__gte=now()).first() + except DatabaseError: + entry = None + if entry is None: + return default + return self._unmake_value(entry.value) + def set( self, key: Any, @@ -127,7 +77,9 @@ class DatabaseCache(BaseDatabaseCache): timeout: float | None = DEFAULT_TIMEOUT, version: int | None = None, ) -> None: - key, value, expiry = self._base_set_data(key, value, timeout, version) + key = self.make_and_validate_key(key, version=version) + value = self._make_value(value) + expiry = self._make_expiry(timeout) CacheEntry.objects.on_conflict( ["cache_key"], ConflictAction.UPDATE, @@ -137,5 +89,100 @@ class DatabaseCache(BaseDatabaseCache): expires=expiry, ) + def touch( + self, + key: Any, + timeout: float | None = DEFAULT_TIMEOUT, + version: int | None = None, + ) -> bool: + key = self.make_and_validate_key(key, version=version) + expiry = self._make_expiry(timeout) + return bool(CacheEntry.objects.filter(cache_key=key).update(expires=expiry)) + + def delete(self, key: Any, version: int | None = None) -> bool: + key = self.make_and_validate_key(key, version=version) + count, _ = CacheEntry.objects.filter(cache_key=key).delete() + return bool(count) + + def get_many(self, keys: Iterable[Any], version: int | None = None) -> dict[Any, Any]: + key_map = {self.make_and_validate_key(key, version=version): key for key in keys} + entries = CacheEntry.objects.filter(cache_key__in=key_map.keys(), expires__gte=now()) + result = {} + for entry in entries: + result[key_map[entry.cache_key]] = self._unmake_value(entry.value) + return result + + def get_or_set( + self, + key: Any, + default: Any | None, + timeout: float | None = DEFAULT_TIMEOUT, + version: int | None = None, + ) -> Any | None: + key = self.make_and_validate_key(key, version=version) + if callable(default): + default = default() + default = self._make_value(default) + expiry = self._make_expiry(timeout) + entry = CacheEntry.objects.on_conflict( + ["cache_key"], + ConflictAction.NOTHING, + ).insert_and_get( + cache_key=key, + value=default, + expires=expiry, + ) + # If the row already existed, nothing is returned + if entry is None: + entry = CacheEntry.objects.filter(cache_key=key).first() + # Sanity check, should not happen + if entry is None: + return None + return self._unmake_value(entry.value) + + def has_key(self, key: Any, version: int | None = None) -> bool: + key = self.make_and_validate_key(key, version=version) + return bool(CacheEntry.objects.filter(cache_key=key, expires__gte=now()).exists()) + + def set_many( + self, + data: dict[Any, Any], + timeout: float | None = DEFAULT_TIMEOUT, + version: int | None = None, + ) -> list[Any]: + expiry = self._make_expiry(timeout) + CacheEntry.objects.on_conflict( + ["cache_key"], + ConflictAction.UPDATE, + ).bulk_insert( + [ + dict( + cache_key=self.make_and_validate_key(key, version=version), + value=self._make_value(value), + expires=expiry, + ) + for key, value in data.items() + ] + ) + return [] + + def delete_many(self, keys: Iterable[Any], version: int | None = None) -> None: + CacheEntry.objects.filter( + cache_key__in=[self.make_and_validate_key(key, version=version) for key in keys] + ).delete() + def clear(self) -> None: CacheEntry.objects.truncate() + + def keys(self, keys_pattern: str, version: int | None = None) -> list[str]: + keys_pattern = self.make_key(keys_pattern.replace("*", ".*"), version=version) + + return [ + self.reverse_key_func(key) + for key in CacheEntry.objects.filter( + cache_key__regex=keys_pattern, + ).values_list( + "cache_key", + flat=True, + ) + ] diff --git a/packages/docusaurus-config/lib/common.js b/packages/docusaurus-config/lib/common.js index cdded8d1f6..01d506216b 100644 --- a/packages/docusaurus-config/lib/common.js +++ b/packages/docusaurus-config/lib/common.js @@ -56,7 +56,7 @@ export function createDefaultDocusaurusConfig() { removeLegacyPostBuildHeadAttribute: true, useCssCascadeLayers: false, }, - experimental_faster: { + faster: { swcJsLoader: true, rspackBundler: true, lightningCssMinimizer: production, diff --git a/packages/docusaurus-config/package-lock.json b/packages/docusaurus-config/package-lock.json index 07d5339768..52eb6a2b9f 100644 --- a/packages/docusaurus-config/package-lock.json +++ b/packages/docusaurus-config/package-lock.json @@ -1,51 +1,49 @@ { "name": "@goauthentik/docusaurus-config", - "version": "2.5.1", + "version": "3.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@goauthentik/docusaurus-config", - "version": "2.5.1", + "version": "3.0.0", "license": "MIT", "dependencies": { "deepmerge-ts": "^7.1.5", "prism-react-renderer": "^2.4.1" }, "devDependencies": { - "@docusaurus/theme-common": "3.9.2", - "@docusaurus/theme-search-algolia": "^3.9.2", - "@docusaurus/types": "^3.9.2", + "@docusaurus/theme-common": "^3.10.0", + "@docusaurus/theme-search-algolia": "^3.10.0", + "@docusaurus/types": "^3.10.0", "@eslint/js": "^9.39.3", "@goauthentik/eslint-config": "../eslint-config", "@goauthentik/prettier-config": "../prettier-config", "@goauthentik/tsconfig": "../tsconfig", - "@types/node": "^25.3.0", + "@types/node": "^25.7.0", "@types/react": "^19.2.14", "@types/react-dom": "^19.2.3", - "@typescript-eslint/eslint-plugin": "^8.56.1", - "@typescript-eslint/parser": "^8.56.1", "eslint": "^9.39.3", "pino": "^10.3.1", - "prettier": "^3.8.1", - "prettier-plugin-packagejson": "^3.0.0", - "typescript": "^5.9.3", - "typescript-eslint": "^8.56.1" + "prettier": "^3.8.3", + "prettier-plugin-packagejson": "^3.0.2", + "typescript": "^6.0.3", + "typescript-eslint": "^8.59.3" }, "engines": { "node": ">=24", - "npm": ">=11.10.1" + "npm": ">=11.14.1" }, "optionalDependencies": { - "react": ">=18", - "react-dom": ">=18" + "react": ">=19", + "react-dom": ">=19" }, "peerDependencies": { - "@docusaurus/theme-common": "^3.9.2", - "@docusaurus/theme-search-algolia": "^3.9.2", - "@docusaurus/types": "^3.9.2", - "react": ">=18", - "react-dom": ">=18" + "@docusaurus/theme-common": "^3.10.1", + "@docusaurus/theme-search-algolia": "^3.10.1", + "@docusaurus/types": "^3.10.1", + "react": ">=19", + "react-dom": ">=19" }, "peerDependenciesMeta": { "@docusaurus/theme-search-algolia": { @@ -61,34 +59,34 @@ }, "../eslint-config": { "name": "@goauthentik/eslint-config", - "version": "1.3.0", + "version": "2.0.0", "dev": true, "license": "MIT", "dependencies": { "eslint": "^9.39.3", "eslint-plugin-import": "^2.32.0", - "eslint-plugin-lit": "^2.2.1", + "eslint-plugin-lit": "^2.3.1", "eslint-plugin-react": "^7.37.5", - "eslint-plugin-react-hooks": "^7.0.1", + "eslint-plugin-react-hooks": "^7.1.1", "eslint-plugin-wc": "^3.1.0" }, "devDependencies": { "@goauthentik/prettier-config": "../prettier-config", "@goauthentik/tsconfig": "../tsconfig", "@types/eslint": "^9.6.1", - "@types/node": "^25.3.0", - "typescript": "^5.9.3", - "typescript-eslint": "^8.56.1" + "@types/node": "^25.7.0", + "typescript": "^6.0.3", + "typescript-eslint": "^8.59.3" }, "engines": { "node": ">=24", - "npm": ">=11.10.1" + "npm": ">=11.14.1" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0", - "typescript": "^5.9.3", - "typescript-eslint": "^8.56.1" + "typescript": "^6.0.3 || ^7.0.0", + "typescript-eslint": "^8.59.3" }, "peerDependenciesMeta": { "react": { @@ -101,7 +99,7 @@ }, "../prettier-config": { "name": "@goauthentik/prettier-config", - "version": "3.4.3", + "version": "4.0.0", "dev": true, "license": "MIT", "dependencies": { @@ -111,78 +109,76 @@ "@eslint/js": "^9.39.3", "@goauthentik/eslint-config": "../eslint-config", "@goauthentik/tsconfig": "../tsconfig", - "@types/node": "^25.0.0", - "@typescript-eslint/eslint-plugin": "^8.49.0", - "@typescript-eslint/parser": "^8.49.0", + "@types/node": "^25.7.0", "eslint": "^9.39.3", - "prettier": "^3.8.1", - "prettier-plugin-packagejson": "^3.0.0", - "typescript": "^5.9.3", - "typescript-eslint": "^8.56.1" + "prettier": "^3.8.3", + "prettier-plugin-packagejson": "^3.0.2", + "typescript": "^6.0.3", + "typescript-eslint": "^8.59.3" }, "engines": { "node": ">=24", - "npm": ">=11.10.1" + "npm": ">=11.14.1" }, "peerDependencies": { - "prettier": "^3.8.1", - "prettier-plugin-packagejson": "^3.0.0" + "prettier": "^3.8.3", + "prettier-plugin-packagejson": "^3.0.2" } }, "../tsconfig": { "name": "@goauthentik/tsconfig", - "version": "1.0.7", + "version": "2.0.0", "dev": true, "license": "MIT", "engines": { "node": ">=24", - "npm": ">=11.10.1" + "npm": ">=11.14.1" } }, "node_modules/@algolia/abtesting": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/@algolia/abtesting/-/abtesting-1.15.1.tgz", - "integrity": "sha512-2yuIC48rUuHGhU1U5qJ9kJHaxYpJ0jpDHJVI5ekOxSMYXlH4+HP+pA31G820lsAznfmu2nzDV7n5RO44zIY1zw==", + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/@algolia/abtesting/-/abtesting-1.18.1.tgz", + "integrity": "sha512-aehCadlWOGvrT91KUIZpC0MbB8KBW9yUuvTJFd2xesR7le/IsT4nJUnjCCZ4ZqZCeTcPHPV5mo//fZ5oxcSVYw==", "dev": true, "license": "MIT", "dependencies": { - "@algolia/client-common": "5.49.1", - "@algolia/requester-browser-xhr": "5.49.1", - "@algolia/requester-fetch": "5.49.1", - "@algolia/requester-node-http": "5.49.1" + "@algolia/client-common": "5.52.1", + "@algolia/requester-browser-xhr": "5.52.1", + "@algolia/requester-fetch": "5.52.1", + "@algolia/requester-node-http": "5.52.1" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/autocomplete-core": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.19.2.tgz", - "integrity": "sha512-mKv7RyuAzXvwmq+0XRK8HqZXt9iZ5Kkm2huLjgn5JoCPtDy+oh9yxUMfDDaVCw0oyzZ1isdJBc7l9nuCyyR7Nw==", + "version": "1.19.8", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.19.8.tgz", + "integrity": "sha512-3YEorYg44niXcm7gkft3nXYItHd44e8tmh4D33CTszPgP0QWkaLEaFywiNyJBo7UL/mqObA/G9RYuU7R8tN1IA==", "dev": true, "license": "MIT", "dependencies": { - "@algolia/autocomplete-plugin-algolia-insights": "1.19.2", - "@algolia/autocomplete-shared": "1.19.2" + "@algolia/autocomplete-plugin-algolia-insights": "1.19.8", + "@algolia/autocomplete-shared": "1.19.8" } }, "node_modules/@algolia/autocomplete-plugin-algolia-insights": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.19.2.tgz", - "integrity": "sha512-TjxbcC/r4vwmnZaPwrHtkXNeqvlpdyR+oR9Wi2XyfORkiGkLTVhX2j+O9SaCCINbKoDfc+c2PB8NjfOnz7+oKg==", + "version": "1.19.8", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.19.8.tgz", + "integrity": "sha512-ZvJWO8ZZJDpc1LNM2TTBdmQsZBLMR4rU5iNR2OYvEeFBiaf/0ESnRSSLQbryarJY4SVxtoz6A2ZtDMNM+iQEAA==", "dev": true, "license": "MIT", "dependencies": { - "@algolia/autocomplete-shared": "1.19.2" + "@algolia/autocomplete-shared": "1.19.8" }, "peerDependencies": { "search-insights": ">= 1 < 3" } }, "node_modules/@algolia/autocomplete-shared": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.19.2.tgz", - "integrity": "sha512-jEazxZTVD2nLrC+wYlVHQgpBoBB5KPStrJxLzsIFl6Kqd1AlG9sIAGl39V5tECLpIQzB3Qa2T6ZPJ1ChkwMK/w==", + "version": "1.19.8", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.19.8.tgz", + "integrity": "sha512-h5hf2t8ejF6vlOgvLaZzQbWs5SyH2z4PAWygNAvvD/2RI29hdQ54ldUGwqVuj9Srs+n8XUKTPUqb7fvhBhQrnQ==", "dev": true, "license": "MIT", "peerDependencies": { @@ -191,41 +187,41 @@ } }, "node_modules/@algolia/client-abtesting": { - "version": "5.49.1", - "resolved": "https://registry.npmjs.org/@algolia/client-abtesting/-/client-abtesting-5.49.1.tgz", - "integrity": "sha512-h6M7HzPin+45/l09q0r2dYmocSSt2MMGOOk5c4O5K/bBBlEwf1BKfN6z+iX4b8WXcQQhf7rgQwC52kBZJt/ZZw==", + "version": "5.52.1", + "resolved": "https://registry.npmjs.org/@algolia/client-abtesting/-/client-abtesting-5.52.1.tgz", + "integrity": "sha512-HmXOGBOAOJPounpBzBpuY0zDYeiCpxgHnQmuA7JO6ScukcBdGp3/XM9zJk5pJx/xNGD68mbPGXWpDxGtl6BwDQ==", "dev": true, "license": "MIT", "dependencies": { - "@algolia/client-common": "5.49.1", - "@algolia/requester-browser-xhr": "5.49.1", - "@algolia/requester-fetch": "5.49.1", - "@algolia/requester-node-http": "5.49.1" + "@algolia/client-common": "5.52.1", + "@algolia/requester-browser-xhr": "5.52.1", + "@algolia/requester-fetch": "5.52.1", + "@algolia/requester-node-http": "5.52.1" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-analytics": { - "version": "5.49.1", - "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-5.49.1.tgz", - "integrity": "sha512-048T9/Z8OeLmTk8h76QUqaNFp7Rq2VgS2Zm6Y2tNMYGQ1uNuzePY/udB5l5krlXll7ZGflyCjFvRiOtlPZpE9g==", + "version": "5.52.1", + "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-5.52.1.tgz", + "integrity": "sha512-5oo4+I8iixie9vXhCyNFCzeIr8pqA3FQ//VsLHTDvZAV4ttYOPGvYHGQq5NSalrLx5Jc3dRro/5uDOlnUMcBJg==", "dev": true, "license": "MIT", "dependencies": { - "@algolia/client-common": "5.49.1", - "@algolia/requester-browser-xhr": "5.49.1", - "@algolia/requester-fetch": "5.49.1", - "@algolia/requester-node-http": "5.49.1" + "@algolia/client-common": "5.52.1", + "@algolia/requester-browser-xhr": "5.52.1", + "@algolia/requester-fetch": "5.52.1", + "@algolia/requester-node-http": "5.52.1" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-common": { - "version": "5.49.1", - "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.49.1.tgz", - "integrity": "sha512-vp5/a9ikqvf3mn9QvHN8PRekn8hW34aV9eX+O0J5mKPZXeA6Pd5OQEh2ZWf7gJY6yyfTlLp5LMFzQUAU+Fpqpg==", + "version": "5.52.1", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.52.1.tgz", + "integrity": "sha512-qCDoZfx5MpX7XQzvQ3bC4tSEMkQWQMaF/ABtLuoze03Y/flR563CCSws02qIJ23oX7lxl92LsilZjINVyTdtLw==", "dev": true, "license": "MIT", "engines": { @@ -233,64 +229,64 @@ } }, "node_modules/@algolia/client-insights": { - "version": "5.49.1", - "resolved": "https://registry.npmjs.org/@algolia/client-insights/-/client-insights-5.49.1.tgz", - "integrity": "sha512-B6N7PgkvYrul3bntTz/l6uXnhQ2bvP+M7NqTcayh681tSqPaA5cJCUBp/vrP7vpPRpej4Eeyx2qz5p0tE/2N2g==", + "version": "5.52.1", + "resolved": "https://registry.npmjs.org/@algolia/client-insights/-/client-insights-5.52.1.tgz", + "integrity": "sha512-hnGs0/lsFJ2PWDxNBz7pxreXo/Xz7gxYRcfePBUjsH26ad0kU/sgnVZd9LwWBpsQv65z2jlb5dkyaB9WE9M9FQ==", "dev": true, "license": "MIT", "dependencies": { - "@algolia/client-common": "5.49.1", - "@algolia/requester-browser-xhr": "5.49.1", - "@algolia/requester-fetch": "5.49.1", - "@algolia/requester-node-http": "5.49.1" + "@algolia/client-common": "5.52.1", + "@algolia/requester-browser-xhr": "5.52.1", + "@algolia/requester-fetch": "5.52.1", + "@algolia/requester-node-http": "5.52.1" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-personalization": { - "version": "5.49.1", - "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-5.49.1.tgz", - "integrity": "sha512-v+4DN+lkYfBd01Hbnb9ZrCHe7l+mvihyx218INRX/kaCXROIWUDIT1cs3urQxfE7kXBFnLsqYeOflQALv/gA5w==", + "version": "5.52.1", + "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-5.52.1.tgz", + "integrity": "sha512-2VxxNc/uBysyKvGeBdSM5n9eIDKH8kWD7wd9/yqbJAiVwU4Yv6tU1LSJusHKrXV/aCu1KW7t9Gug9QyeEmtn/Q==", "dev": true, "license": "MIT", "dependencies": { - "@algolia/client-common": "5.49.1", - "@algolia/requester-browser-xhr": "5.49.1", - "@algolia/requester-fetch": "5.49.1", - "@algolia/requester-node-http": "5.49.1" + "@algolia/client-common": "5.52.1", + "@algolia/requester-browser-xhr": "5.52.1", + "@algolia/requester-fetch": "5.52.1", + "@algolia/requester-node-http": "5.52.1" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-query-suggestions": { - "version": "5.49.1", - "resolved": "https://registry.npmjs.org/@algolia/client-query-suggestions/-/client-query-suggestions-5.49.1.tgz", - "integrity": "sha512-Un11cab6ZCv0W+Jiak8UktGIqoa4+gSNgEZNfG8m8eTsXGqwIEr370H3Rqwj87zeNSlFpH2BslMXJ/cLNS1qtg==", + "version": "5.52.1", + "resolved": "https://registry.npmjs.org/@algolia/client-query-suggestions/-/client-query-suggestions-5.52.1.tgz", + "integrity": "sha512-O6mPtsw3xEfNOe6gWFpYLeAZAIljNa4Hgna3bq15PwyN7nbjTY0wXJFRbzs/0YVf75Br+SbOQUmjKxXYjDiSiQ==", "dev": true, "license": "MIT", "dependencies": { - "@algolia/client-common": "5.49.1", - "@algolia/requester-browser-xhr": "5.49.1", - "@algolia/requester-fetch": "5.49.1", - "@algolia/requester-node-http": "5.49.1" + "@algolia/client-common": "5.52.1", + "@algolia/requester-browser-xhr": "5.52.1", + "@algolia/requester-fetch": "5.52.1", + "@algolia/requester-node-http": "5.52.1" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-search": { - "version": "5.49.1", - "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.49.1.tgz", - "integrity": "sha512-Nt9hri7nbOo0RipAsGjIssHkpLMHHN/P7QqENywAq5TLsoYDzUyJGny8FEiD/9KJUxtGH8blGpMedilI6kK3rA==", + "version": "5.52.1", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.52.1.tgz", + "integrity": "sha512-gA8oJOV1LnQQkDf91iebNnFInHuW0gRPEgLSOQ7EfipCEjYTHm5swm1DlH9H5RaRw4RrHuzHBegnlzc0MAstcg==", "dev": true, "license": "MIT", "dependencies": { - "@algolia/client-common": "5.49.1", - "@algolia/requester-browser-xhr": "5.49.1", - "@algolia/requester-fetch": "5.49.1", - "@algolia/requester-node-http": "5.49.1" + "@algolia/client-common": "5.52.1", + "@algolia/requester-browser-xhr": "5.52.1", + "@algolia/requester-fetch": "5.52.1", + "@algolia/requester-node-http": "5.52.1" }, "engines": { "node": ">= 14.0.0" @@ -304,87 +300,87 @@ "license": "MIT" }, "node_modules/@algolia/ingestion": { - "version": "1.49.1", - "resolved": "https://registry.npmjs.org/@algolia/ingestion/-/ingestion-1.49.1.tgz", - "integrity": "sha512-b5hUXwDqje0Y4CpU6VL481DXgPgxpTD5sYMnfQTHKgUispGnaCLCm2/T9WbJo1YNUbX3iHtYDArp804eD6CmRQ==", + "version": "1.52.1", + "resolved": "https://registry.npmjs.org/@algolia/ingestion/-/ingestion-1.52.1.tgz", + "integrity": "sha512-U9zZfc5xIu9wRxZkt+HceJUAD4VKHKbAyLSloJdEyMRmphXeibfrY9cxqIXBcmPeZzGhn3Imb35Dq8l19PkJhw==", "dev": true, "license": "MIT", "dependencies": { - "@algolia/client-common": "5.49.1", - "@algolia/requester-browser-xhr": "5.49.1", - "@algolia/requester-fetch": "5.49.1", - "@algolia/requester-node-http": "5.49.1" + "@algolia/client-common": "5.52.1", + "@algolia/requester-browser-xhr": "5.52.1", + "@algolia/requester-fetch": "5.52.1", + "@algolia/requester-node-http": "5.52.1" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/monitoring": { - "version": "1.49.1", - "resolved": "https://registry.npmjs.org/@algolia/monitoring/-/monitoring-1.49.1.tgz", - "integrity": "sha512-bvrXwZ0WsL3rN6Q4m4QqxsXFCo6WAew7sAdrpMQMK4Efn4/W920r9ptOuckejOSSvyLr9pAWgC5rsHhR2FYuYw==", + "version": "1.52.1", + "resolved": "https://registry.npmjs.org/@algolia/monitoring/-/monitoring-1.52.1.tgz", + "integrity": "sha512-a3SGNceHmkQfq77iG8Ka+w1pvwfZa/0lzEIgse30fL0kD+yKnd/dg0dQvSfFPAEt2f21DMcGkDSSeJlO3KdQjQ==", "dev": true, "license": "MIT", "dependencies": { - "@algolia/client-common": "5.49.1", - "@algolia/requester-browser-xhr": "5.49.1", - "@algolia/requester-fetch": "5.49.1", - "@algolia/requester-node-http": "5.49.1" + "@algolia/client-common": "5.52.1", + "@algolia/requester-browser-xhr": "5.52.1", + "@algolia/requester-fetch": "5.52.1", + "@algolia/requester-node-http": "5.52.1" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/recommend": { - "version": "5.49.1", - "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-5.49.1.tgz", - "integrity": "sha512-h2yz3AGeGkQwNgbLmoe3bxYs8fac4An1CprKTypYyTU/k3Q+9FbIvJ8aS1DoBKaTjSRZVoyQS7SZQio6GaHbZw==", + "version": "5.52.1", + "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-5.52.1.tgz", + "integrity": "sha512-z98QEguCFDpxb4S/PyrUK1igqF8tPsdbqOUUO6ON91vJ58w+Gwa6ncrI0oNXSFcrkxA5EqPKPQ2A1PBCn08TYQ==", "dev": true, "license": "MIT", "dependencies": { - "@algolia/client-common": "5.49.1", - "@algolia/requester-browser-xhr": "5.49.1", - "@algolia/requester-fetch": "5.49.1", - "@algolia/requester-node-http": "5.49.1" + "@algolia/client-common": "5.52.1", + "@algolia/requester-browser-xhr": "5.52.1", + "@algolia/requester-fetch": "5.52.1", + "@algolia/requester-node-http": "5.52.1" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/requester-browser-xhr": { - "version": "5.49.1", - "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.49.1.tgz", - "integrity": "sha512-2UPyRuUR/qpqSqH8mxFV5uBZWEpxhGPHLlx9Xf6OVxr79XO2ctzZQAhsmTZ6X22x+N8MBWpB9UEky7YU2HGFgA==", + "version": "5.52.1", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.52.1.tgz", + "integrity": "sha512-CI7+/0I11QeZM59Uc8whd2or0kqzFVjpaPn9Qpwll/krHcBAxk24WkAQ6WX+IwDVMfpont4YGbKwAmCre3vE8Q==", "dev": true, "license": "MIT", "dependencies": { - "@algolia/client-common": "5.49.1" + "@algolia/client-common": "5.52.1" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/requester-fetch": { - "version": "5.49.1", - "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.49.1.tgz", - "integrity": "sha512-N+xlE4lN+wpuT+4vhNEwPVlrfN+DWAZmSX9SYhbz986Oq8AMsqdntOqUyiOXVxYsQtfLwmiej24vbvJGYv1Qtw==", + "version": "5.52.1", + "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.52.1.tgz", + "integrity": "sha512-S6bDuw9byfOvm3T71cgdoZgrgnZq6hpdMLkx52Louh57nUAmvGQESz2aojOynQHjbTiV55smvAFbgn0qT4tJrg==", "dev": true, "license": "MIT", "dependencies": { - "@algolia/client-common": "5.49.1" + "@algolia/client-common": "5.52.1" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/requester-node-http": { - "version": "5.49.1", - "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.49.1.tgz", - "integrity": "sha512-zA5bkUOB5PPtTr182DJmajCiizHp0rCJQ0Chf96zNFvkdESKYlDeYA3tQ7r2oyHbu/8DiohAQ5PZ85edctzbXA==", + "version": "5.52.1", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.52.1.tgz", + "integrity": "sha512-tqZXM+54rWo4mk5jL5Z/flE11nPmNEdXwFBM5py9DkOmbjeCNemfVd45FyM97XdzfZ0dl9uOJC6PYn1FpkeyQg==", "dev": true, "license": "MIT", "dependencies": { - "@algolia/client-common": "5.49.1" + "@algolia/client-common": "5.52.1" }, "engines": { "node": ">= 14.0.0" @@ -406,9 +402,9 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz", - "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==", + "version": "7.29.3", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.3.tgz", + "integrity": "sha512-LIVqM46zQWZhj17qA8wb4nW/ixr2y1Nw+r1etiAWgRM6U1IqP+LNhL1yg440jYZR72jCWcWbLWzIosH+uP1fqg==", "dev": true, "license": "MIT", "engines": { @@ -514,9 +510,9 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.6.tgz", - "integrity": "sha512-dTOdvsjnG3xNT9Y0AUg1wAl38y+4Rl4sf9caSQZOXdNqVn+H+HbbJ4IyyHaIqNR6SW9oJpA/RuRjsjCw2IdIow==", + "version": "7.29.3", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.29.3.tgz", + "integrity": "sha512-RpLYy2sb51oNLjuu1iD3bwBqCBWUzjO0ocp+iaCP/lJtb2CPLcnC2Fftw+4sAzaMELGeWTgExSKADbdo0GFVzA==", "dev": true, "license": "MIT", "dependencies": { @@ -525,7 +521,7 @@ "@babel/helper-optimise-call-expression": "^7.27.1", "@babel/helper-replace-supers": "^7.28.6", "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", - "@babel/traverse": "^7.28.6", + "@babel/traverse": "^7.29.0", "semver": "^6.3.1" }, "engines": { @@ -574,9 +570,9 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.6.6", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.6.tgz", - "integrity": "sha512-mOAsxeeKkUKayvZR3HeTYD/fICpCPLJrU5ZjelT/PA6WHtNDBOE436YiaEUvHN454bRM3CebhDsIpieCc4texA==", + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.8.tgz", + "integrity": "sha512-47UwBLPpQi1NoWzLuHNjRoHlYXMwIJoBf7MFou6viC/sIHWYygpvr0B6IAyh5sBdA2nr2LPIRww8lfaUVQINBA==", "dev": true, "license": "MIT", "dependencies": { @@ -765,23 +761,23 @@ } }, "node_modules/@babel/helpers": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.6.tgz", - "integrity": "sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==", + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.2.tgz", + "integrity": "sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==", "dev": true, "license": "MIT", "dependencies": { "@babel/template": "^7.28.6", - "@babel/types": "^7.28.6" + "@babel/types": "^7.29.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.0.tgz", - "integrity": "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==", + "version": "7.29.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.3.tgz", + "integrity": "sha512-b3ctpQwp+PROvU/cttc4OYl4MzfJUWy6FZg+PMXfzmt/+39iHVF0sDfqay8TQM3JA2EUOyKcFZt75jWriQijsA==", "dev": true, "license": "MIT", "dependencies": { @@ -843,6 +839,23 @@ "@babel/core": "^7.0.0" } }, + "node_modules/@babel/plugin-bugfix-safari-rest-destructuring-rhs-array": { + "version": "7.29.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-rest-destructuring-rhs-array/-/plugin-bugfix-safari-rest-destructuring-rhs-array-7.29.3.tgz", + "integrity": "sha512-SRS46DFR4HqzUzCVgi90/xMoL+zeBDBvWdKYXSEzh79kXswNFEglUpMKxR04//dPqwYXWUBJ3mpUd933ru9Kmg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz", @@ -1407,9 +1420,9 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.0.tgz", - "integrity": "sha512-PrujnVFbOdUpw4UHiVwKvKRLMMic8+eC0CuNlxjsyZUiBjhFdPsewdXCkveh2KqBA9/waD0W1b4hXSOBQJezpQ==", + "version": "7.29.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.4.tgz", + "integrity": "sha512-N7QmZ0xRZfjHOfZeQLJjwgX2zS9pdGHSVl/cjSGlo4dXMqvurfxXDMKY4RqEKzPozV78VMcd0lxyG13mlbKc4w==", "dev": true, "license": "MIT", "dependencies": { @@ -1962,19 +1975,20 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.29.0.tgz", - "integrity": "sha512-fNEdfc0yi16lt6IZo2Qxk3knHVdfMYX33czNb4v8yWhemoBhibCpQK/uYHtSKIiO+p/zd3+8fYVXhQdOVV608w==", + "version": "7.29.5", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.29.5.tgz", + "integrity": "sha512-/69t2aEzGKHD76DyLbHysF/QH2LJOB8iFnYO37unDTKBTubzcMRv0f3H5EiN1Q6ajOd/eB7dAInF0qdFVS06kA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.29.0", + "@babel/compat-data": "^7.29.3", "@babel/helper-compilation-targets": "^7.28.6", "@babel/helper-plugin-utils": "^7.28.6", "@babel/helper-validator-option": "^7.27.1", "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.28.5", "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.27.1", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.27.1", + "@babel/plugin-bugfix-safari-rest-destructuring-rhs-array": "^7.29.3", "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.27.1", "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.28.6", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", @@ -2006,7 +2020,7 @@ "@babel/plugin-transform-member-expression-literals": "^7.27.1", "@babel/plugin-transform-modules-amd": "^7.27.1", "@babel/plugin-transform-modules-commonjs": "^7.28.6", - "@babel/plugin-transform-modules-systemjs": "^7.29.0", + "@babel/plugin-transform-modules-systemjs": "^7.29.4", "@babel/plugin-transform-modules-umd": "^7.27.1", "@babel/plugin-transform-named-capturing-groups-regex": "^7.29.0", "@babel/plugin-transform-new-target": "^7.27.1", @@ -2047,13 +2061,13 @@ } }, "node_modules/@babel/preset-env/node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.14.0.tgz", - "integrity": "sha512-AvDcMxJ34W4Wgy4KBIIePQTAOP1Ie2WFwkQp3dB7FQ/f0lI5+nM96zUnYEOE1P9sEg0es5VCP0HxiWu5fUHZAQ==", + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.14.2.tgz", + "integrity": "sha512-coWpDLJ410R781Npmn/SIBZEsAetR4xVi0SxLMXPaMO4lSf1MwnkGYMtkFxew0Dn8B3/CpbpYxN0JCgg8mn67g==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.6", + "@babel/helper-define-polyfill-provider": "^0.6.8", "core-js-compat": "^3.48.0" }, "peerDependencies": { @@ -2127,28 +2141,15 @@ } }, "node_modules/@babel/runtime": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.6.tgz", - "integrity": "sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==", + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.2.tgz", + "integrity": "sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==", "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/runtime-corejs3": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.29.0.tgz", - "integrity": "sha512-TgUkdp71C9pIbBcHudc+gXZnihEDOjUAmXO1VO4HHGES7QLZcShR0stfKIxLSNIYx2fqhmJChOjm/wkF8wv4gA==", - "dev": true, - "license": "MIT", - "dependencies": { - "core-js-pure": "^3.48.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/template": { "version": "7.28.6", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", @@ -3588,9 +3589,9 @@ } }, "node_modules/@docsearch/core": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@docsearch/core/-/core-4.6.0.tgz", - "integrity": "sha512-IqG3oSd529jVRQ4dWZQKwZwQLVd//bWJTz2HiL0LkiHrI4U/vLrBasKB7lwQB/69nBAcCgs3TmudxTZSLH/ZQg==", + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/@docsearch/core/-/core-4.6.3.tgz", + "integrity": "sha512-rUOujwIpxJRgD7+kicVsI3D5sqBvdiRTquzWBpTEXZs8ZXfGbfzpus5HqumaNYTppN2HvH8E2yNuRwYdHJeOlA==", "dev": true, "license": "MIT", "peerDependencies": { @@ -3611,22 +3612,22 @@ } }, "node_modules/@docsearch/css": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-4.6.0.tgz", - "integrity": "sha512-YlcAimkXclvqta47g47efzCM5CFxDwv2ClkDfEs/fC/Ak0OxPH2b3czwa4o8O1TRBf+ujFF2RiUwszz2fPVNJQ==", + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-4.6.3.tgz", + "integrity": "sha512-nlOwcXcsNAptQl4vlL4MA78qNJKO0Qlds5GuBjCoePgkebTXLSf8Qt1oyZ3YBshYupKXG9VRGEsk1zr23d+bzQ==", "dev": true, "license": "MIT" }, "node_modules/@docsearch/react": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-4.6.0.tgz", - "integrity": "sha512-j8H5B4ArGxBPBWvw3X0J0Rm/Pjv2JDa2rV5OE0DLTp5oiBCptIJ/YlNOhZxuzbO2nwge+o3Z52nJRi3hryK9cA==", + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-4.6.3.tgz", + "integrity": "sha512-Bg2wdDsoQVlNCcEKuEJAU04tvHCqgx8rIu+uIoM4pRtcx3TBKJuXutJik3LTA8LRc9YEyHkrYUrmcC0D7BYf+g==", "dev": true, "license": "MIT", "dependencies": { "@algolia/autocomplete-core": "1.19.2", - "@docsearch/core": "4.6.0", - "@docsearch/css": "4.6.0" + "@docsearch/core": "4.6.3", + "@docsearch/css": "4.6.3" }, "peerDependencies": { "@types/react": ">= 16.8.0 < 20.0.0", @@ -3649,10 +3650,45 @@ } } }, + "node_modules/@docsearch/react/node_modules/@algolia/autocomplete-core": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.19.2.tgz", + "integrity": "sha512-mKv7RyuAzXvwmq+0XRK8HqZXt9iZ5Kkm2huLjgn5JoCPtDy+oh9yxUMfDDaVCw0oyzZ1isdJBc7l9nuCyyR7Nw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/autocomplete-plugin-algolia-insights": "1.19.2", + "@algolia/autocomplete-shared": "1.19.2" + } + }, + "node_modules/@docsearch/react/node_modules/@algolia/autocomplete-plugin-algolia-insights": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.19.2.tgz", + "integrity": "sha512-TjxbcC/r4vwmnZaPwrHtkXNeqvlpdyR+oR9Wi2XyfORkiGkLTVhX2j+O9SaCCINbKoDfc+c2PB8NjfOnz7+oKg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/autocomplete-shared": "1.19.2" + }, + "peerDependencies": { + "search-insights": ">= 1 < 3" + } + }, + "node_modules/@docsearch/react/node_modules/@algolia/autocomplete-shared": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.19.2.tgz", + "integrity": "sha512-jEazxZTVD2nLrC+wYlVHQgpBoBB5KPStrJxLzsIFl6Kqd1AlG9sIAGl39V5tECLpIQzB3Qa2T6ZPJ1ChkwMK/w==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@algolia/client-search": ">= 4.9.1 < 6", + "algoliasearch": ">= 4.9.1 < 6" + } + }, "node_modules/@docusaurus/babel": { - "version": "3.9.2", - "resolved": "https://registry.npmjs.org/@docusaurus/babel/-/babel-3.9.2.tgz", - "integrity": "sha512-GEANdi/SgER+L7Japs25YiGil/AUDnFFHaCGPBbundxoWtCkA2lmy7/tFmgED4y1htAy6Oi4wkJEQdGssnw9MA==", + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@docusaurus/babel/-/babel-3.10.1.tgz", + "integrity": "sha512-DZzFO1K3v/GoEt1fx1DiYHF4en+PuhtQf1AkQJa5zu3CoeKSpr5cpQRUlz3jr0m44wyzmSXu9bVpfir+N4+8bg==", "dev": true, "license": "MIT", "dependencies": { @@ -3664,10 +3700,9 @@ "@babel/preset-react": "^7.25.9", "@babel/preset-typescript": "^7.25.9", "@babel/runtime": "^7.25.9", - "@babel/runtime-corejs3": "^7.25.9", "@babel/traverse": "^7.25.9", - "@docusaurus/logger": "3.9.2", - "@docusaurus/utils": "3.9.2", + "@docusaurus/logger": "3.10.1", + "@docusaurus/utils": "3.10.1", "babel-plugin-dynamic-import-node": "^2.3.3", "fs-extra": "^11.1.1", "tslib": "^2.6.0" @@ -3677,18 +3712,18 @@ } }, "node_modules/@docusaurus/bundler": { - "version": "3.9.2", - "resolved": "https://registry.npmjs.org/@docusaurus/bundler/-/bundler-3.9.2.tgz", - "integrity": "sha512-ZOVi6GYgTcsZcUzjblpzk3wH1Fya2VNpd5jtHoCCFcJlMQ1EYXZetfAnRHLcyiFeBABaI1ltTYbOBtH/gahGVA==", + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@docusaurus/bundler/-/bundler-3.10.1.tgz", + "integrity": "sha512-HIqQPvbqnnQRe4NsBd1774KRarjXqS6wHsWELtyuSs1gCfvixJO2jUGH/OEBtr1Gvzpw+ze5CjGMvSJ8UE1KUw==", "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.25.9", - "@docusaurus/babel": "3.9.2", - "@docusaurus/cssnano-preset": "3.9.2", - "@docusaurus/logger": "3.9.2", - "@docusaurus/types": "3.9.2", - "@docusaurus/utils": "3.9.2", + "@docusaurus/babel": "3.10.1", + "@docusaurus/cssnano-preset": "3.10.1", + "@docusaurus/logger": "3.10.1", + "@docusaurus/types": "3.10.1", + "@docusaurus/utils": "3.10.1", "babel-loader": "^9.2.1", "clean-css": "^5.3.3", "copy-webpack-plugin": "^11.0.0", @@ -3706,7 +3741,7 @@ "tslib": "^2.6.0", "url-loader": "^4.1.1", "webpack": "^5.95.0", - "webpackbar": "^6.0.1" + "webpackbar": "^7.0.0" }, "engines": { "node": ">=20.0" @@ -3721,19 +3756,19 @@ } }, "node_modules/@docusaurus/core": { - "version": "3.9.2", - "resolved": "https://registry.npmjs.org/@docusaurus/core/-/core-3.9.2.tgz", - "integrity": "sha512-HbjwKeC+pHUFBfLMNzuSjqFE/58+rLVKmOU3lxQrpsxLBOGosYco/Q0GduBb0/jEMRiyEqjNT/01rRdOMWq5pw==", + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@docusaurus/core/-/core-3.10.1.tgz", + "integrity": "sha512-3pf2fXXw0eVk8WnC3T4LIigRDupcpvngpKo9Vy7mYyBhuddc0klDUuZAIfzMoK6z05pdlk6EFC/vBSX43+1O5w==", "dev": true, "license": "MIT", "dependencies": { - "@docusaurus/babel": "3.9.2", - "@docusaurus/bundler": "3.9.2", - "@docusaurus/logger": "3.9.2", - "@docusaurus/mdx-loader": "3.9.2", - "@docusaurus/utils": "3.9.2", - "@docusaurus/utils-common": "3.9.2", - "@docusaurus/utils-validation": "3.9.2", + "@docusaurus/babel": "3.10.1", + "@docusaurus/bundler": "3.10.1", + "@docusaurus/logger": "3.10.1", + "@docusaurus/mdx-loader": "3.10.1", + "@docusaurus/utils": "3.10.1", + "@docusaurus/utils-common": "3.10.1", + "@docusaurus/utils-validation": "3.10.1", "boxen": "^6.2.1", "chalk": "^4.1.2", "chokidar": "^3.5.3", @@ -3745,7 +3780,7 @@ "escape-html": "^1.0.3", "eta": "^2.2.0", "eval": "^0.1.8", - "execa": "5.1.1", + "execa": "^5.1.1", "fs-extra": "^11.1.1", "html-tags": "^3.3.1", "html-webpack-plugin": "^5.6.0", @@ -3756,12 +3791,12 @@ "prompts": "^2.4.2", "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0", "react-loadable": "npm:@docusaurus/react-loadable@6.0.0", - "react-loadable-ssr-addon-v5-slorber": "^1.0.1", + "react-loadable-ssr-addon-v5-slorber": "^1.0.3", "react-router": "^5.3.4", "react-router-config": "^5.1.1", "react-router-dom": "^5.3.4", "semver": "^7.5.4", - "serve-handler": "^6.1.6", + "serve-handler": "^6.1.7", "tinypool": "^1.0.2", "tslib": "^2.6.0", "update-notifier": "^6.0.2", @@ -3777,15 +3812,21 @@ "node": ">=20.0" }, "peerDependencies": { + "@docusaurus/faster": "*", "@mdx-js/react": "^3.0.0", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@docusaurus/faster": { + "optional": true + } } }, "node_modules/@docusaurus/cssnano-preset": { - "version": "3.9.2", - "resolved": "https://registry.npmjs.org/@docusaurus/cssnano-preset/-/cssnano-preset-3.9.2.tgz", - "integrity": "sha512-8gBKup94aGttRduABsj7bpPFTX7kbwu+xh3K9NMCF5K4bWBqTFYW+REKHF6iBVDHRJ4grZdIPbvkiHd/XNKRMQ==", + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@docusaurus/cssnano-preset/-/cssnano-preset-3.10.1.tgz", + "integrity": "sha512-eNfHGcTKCSq6xmcavAkX3RRclHaE2xRCMParlDXLdXVP01/a2e/jKXMj/0ULnLFQSNwwuI62L0Ge8J+nZsR7UQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3799,9 +3840,9 @@ } }, "node_modules/@docusaurus/logger": { - "version": "3.9.2", - "resolved": "https://registry.npmjs.org/@docusaurus/logger/-/logger-3.9.2.tgz", - "integrity": "sha512-/SVCc57ByARzGSU60c50rMyQlBuMIJCjcsJlkphxY6B0GV4UH3tcA1994N8fFfbJ9kX3jIBe/xg3XP5qBtGDbA==", + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@docusaurus/logger/-/logger-3.10.1.tgz", + "integrity": "sha512-oPjNFnfJsRCkePVjkGrxWGq4MvJKRQT0r9jOP0eRBTZ7Wr9FAbzdP/Gjs0I2Ss6YRkPoEgygKG112OkE6skvJw==", "dev": true, "license": "MIT", "dependencies": { @@ -3813,15 +3854,15 @@ } }, "node_modules/@docusaurus/mdx-loader": { - "version": "3.9.2", - "resolved": "https://registry.npmjs.org/@docusaurus/mdx-loader/-/mdx-loader-3.9.2.tgz", - "integrity": "sha512-wiYoGwF9gdd6rev62xDU8AAM8JuLI/hlwOtCzMmYcspEkzecKrP8J8X+KpYnTlACBUUtXNJpSoCwFWJhLRevzQ==", + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@docusaurus/mdx-loader/-/mdx-loader-3.10.1.tgz", + "integrity": "sha512-GRmeb/wQ+iXRrFwcHBfgQhrJxGElgCsoTWZYDhccjsZVne1p8MK/EpQVIloXttz76TCe78kKD5AEG9n1xc1oxQ==", "dev": true, "license": "MIT", "dependencies": { - "@docusaurus/logger": "3.9.2", - "@docusaurus/utils": "3.9.2", - "@docusaurus/utils-validation": "3.9.2", + "@docusaurus/logger": "3.10.1", + "@docusaurus/utils": "3.10.1", + "@docusaurus/utils-validation": "3.10.1", "@mdx-js/mdx": "^3.0.0", "@slorber/remark-comment": "^1.0.0", "escape-html": "^1.0.3", @@ -3853,13 +3894,13 @@ } }, "node_modules/@docusaurus/module-type-aliases": { - "version": "3.9.2", - "resolved": "https://registry.npmjs.org/@docusaurus/module-type-aliases/-/module-type-aliases-3.9.2.tgz", - "integrity": "sha512-8qVe2QA9hVLzvnxP46ysuofJUIc/yYQ82tvA/rBTrnpXtCjNSFLxEZfd5U8cYZuJIVlkPxamsIgwd5tGZXfvew==", + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@docusaurus/module-type-aliases/-/module-type-aliases-3.10.1.tgz", + "integrity": "sha512-YoOZKUdGlp8xSYhuAkGdSo5Ydkbq4V4eK3sD8v0a2hloxCWdQbNBhkc+Ko9QyjpESc0BYcIGM5iHVAy5hdFV6w==", "dev": true, "license": "MIT", "dependencies": { - "@docusaurus/types": "3.9.2", + "@docusaurus/types": "3.10.1", "@types/history": "^4.7.11", "@types/react": "*", "@types/react-router-config": "*", @@ -3873,21 +3914,21 @@ } }, "node_modules/@docusaurus/plugin-content-docs": { - "version": "3.9.2", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.9.2.tgz", - "integrity": "sha512-C5wZsGuKTY8jEYsqdxhhFOe1ZDjH0uIYJ9T/jebHwkyxqnr4wW0jTkB72OMqNjsoQRcb0JN3PcSeTwFlVgzCZg==", + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.10.1.tgz", + "integrity": "sha512-2jRVrtzjf8LClGTHQlwlwuD3wQXRx3WEoF7XUarJ8Ou+0onV+SLtejsyfY9JLpfUh9hPhXM4pbBGkyAY4Bi3HQ==", "dev": true, "license": "MIT", "dependencies": { - "@docusaurus/core": "3.9.2", - "@docusaurus/logger": "3.9.2", - "@docusaurus/mdx-loader": "3.9.2", - "@docusaurus/module-type-aliases": "3.9.2", - "@docusaurus/theme-common": "3.9.2", - "@docusaurus/types": "3.9.2", - "@docusaurus/utils": "3.9.2", - "@docusaurus/utils-common": "3.9.2", - "@docusaurus/utils-validation": "3.9.2", + "@docusaurus/core": "3.10.1", + "@docusaurus/logger": "3.10.1", + "@docusaurus/mdx-loader": "3.10.1", + "@docusaurus/module-type-aliases": "3.10.1", + "@docusaurus/theme-common": "3.10.1", + "@docusaurus/types": "3.10.1", + "@docusaurus/utils": "3.10.1", + "@docusaurus/utils-common": "3.10.1", + "@docusaurus/utils-validation": "3.10.1", "@types/react-router-config": "^5.0.7", "combine-promises": "^1.1.0", "fs-extra": "^11.1.1", @@ -3907,16 +3948,16 @@ } }, "node_modules/@docusaurus/theme-common": { - "version": "3.9.2", - "resolved": "https://registry.npmjs.org/@docusaurus/theme-common/-/theme-common-3.9.2.tgz", - "integrity": "sha512-6c4DAbR6n6nPbnZhY2V3tzpnKnGL+6aOsLvFL26VRqhlczli9eWG0VDUNoCQEPnGwDMhPS42UhSAnz5pThm5Ag==", + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-common/-/theme-common-3.10.1.tgz", + "integrity": "sha512-0YtmIeoNo1fIw65LO8+/1dPgmDV86UmhMkow37gzjytuiCSQm9xob6PJy0L4kuQEMTLfUOGvkXvZr7GPrHquMA==", "dev": true, "license": "MIT", "dependencies": { - "@docusaurus/mdx-loader": "3.9.2", - "@docusaurus/module-type-aliases": "3.9.2", - "@docusaurus/utils": "3.9.2", - "@docusaurus/utils-common": "3.9.2", + "@docusaurus/mdx-loader": "3.10.1", + "@docusaurus/module-type-aliases": "3.10.1", + "@docusaurus/utils": "3.10.1", + "@docusaurus/utils-common": "3.10.1", "@types/history": "^4.7.11", "@types/react": "*", "@types/react-router-config": "*", @@ -3936,20 +3977,21 @@ } }, "node_modules/@docusaurus/theme-search-algolia": { - "version": "3.9.2", - "resolved": "https://registry.npmjs.org/@docusaurus/theme-search-algolia/-/theme-search-algolia-3.9.2.tgz", - "integrity": "sha512-GBDSFNwjnh5/LdkxCKQHkgO2pIMX1447BxYUBG2wBiajS21uj64a+gH/qlbQjDLxmGrbrllBrtJkUHxIsiwRnw==", + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-search-algolia/-/theme-search-algolia-3.10.1.tgz", + "integrity": "sha512-OTaARARVZj2GvkJQjB+1jOIxntRaXea+G+fMsNqrZBAU1O1vJKDW22R7kECOHW27oJCLFN9HKaZeRrfAUyviug==", "dev": true, "license": "MIT", "dependencies": { - "@docsearch/react": "^3.9.0 || ^4.1.0", - "@docusaurus/core": "3.9.2", - "@docusaurus/logger": "3.9.2", - "@docusaurus/plugin-content-docs": "3.9.2", - "@docusaurus/theme-common": "3.9.2", - "@docusaurus/theme-translations": "3.9.2", - "@docusaurus/utils": "3.9.2", - "@docusaurus/utils-validation": "3.9.2", + "@algolia/autocomplete-core": "^1.19.2", + "@docsearch/react": "^3.9.0 || ^4.3.2", + "@docusaurus/core": "3.10.1", + "@docusaurus/logger": "3.10.1", + "@docusaurus/plugin-content-docs": "3.10.1", + "@docusaurus/theme-common": "3.10.1", + "@docusaurus/theme-translations": "3.10.1", + "@docusaurus/utils": "3.10.1", + "@docusaurus/utils-validation": "3.10.1", "algoliasearch": "^5.37.0", "algoliasearch-helper": "^3.26.0", "clsx": "^2.0.0", @@ -3968,9 +4010,9 @@ } }, "node_modules/@docusaurus/theme-translations": { - "version": "3.9.2", - "resolved": "https://registry.npmjs.org/@docusaurus/theme-translations/-/theme-translations-3.9.2.tgz", - "integrity": "sha512-vIryvpP18ON9T9rjgMRFLr2xJVDpw1rtagEGf8Ccce4CkTrvM/fRB8N2nyWYOW5u3DdjkwKw5fBa+3tbn9P4PA==", + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-translations/-/theme-translations-3.10.1.tgz", + "integrity": "sha512-cLMyaKivjBVWKMJuWqyFVVgtqe8DPJNPkog0bn8W1MDVAKcPdxRFycBfC1We1RaNp7Rdk513bmtW78RR6OBxBw==", "dev": true, "license": "MIT", "dependencies": { @@ -3982,9 +4024,9 @@ } }, "node_modules/@docusaurus/types": { - "version": "3.9.2", - "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.9.2.tgz", - "integrity": "sha512-Ux1JUNswg+EfUEmajJjyhIohKceitY/yzjRUpu04WXgvVz+fbhVC0p+R0JhvEu4ytw8zIAys2hrdpQPBHRIa8Q==", + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.10.1.tgz", + "integrity": "sha512-XYMK8k1szDCFMw2V+Xyen0g7Kee1sP3dtFnl7vkGkZOkeAJ/oPDQPL8iz4HBKOo/cwU8QeV6onVjMqtP+tFzsw==", "dev": true, "license": "MIT", "dependencies": { @@ -4020,17 +4062,17 @@ } }, "node_modules/@docusaurus/utils": { - "version": "3.9.2", - "resolved": "https://registry.npmjs.org/@docusaurus/utils/-/utils-3.9.2.tgz", - "integrity": "sha512-lBSBiRruFurFKXr5Hbsl2thmGweAPmddhF3jb99U4EMDA5L+e5Y1rAkOS07Nvrup7HUMBDrCV45meaxZnt28nQ==", + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@docusaurus/utils/-/utils-3.10.1.tgz", + "integrity": "sha512-3ojeJry9xBYdJO6qoyyzqeJFSJBVx2mXhyDzSdjwL2+URFQMf+h25gG38iswGImicK0ELjTd1EL2xzk8hf3QPw==", "dev": true, "license": "MIT", "dependencies": { - "@docusaurus/logger": "3.9.2", - "@docusaurus/types": "3.9.2", - "@docusaurus/utils-common": "3.9.2", + "@docusaurus/logger": "3.10.1", + "@docusaurus/types": "3.10.1", + "@docusaurus/utils-common": "3.10.1", "escape-string-regexp": "^4.0.0", - "execa": "5.1.1", + "execa": "^5.1.1", "file-loader": "^6.2.0", "fs-extra": "^11.1.1", "github-slugger": "^1.5.0", @@ -4053,13 +4095,13 @@ } }, "node_modules/@docusaurus/utils-common": { - "version": "3.9.2", - "resolved": "https://registry.npmjs.org/@docusaurus/utils-common/-/utils-common-3.9.2.tgz", - "integrity": "sha512-I53UC1QctruA6SWLvbjbhCpAw7+X7PePoe5pYcwTOEXD/PxeP8LnECAhTHHwWCblyUX5bMi4QLRkxvyZ+IT8Aw==", + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@docusaurus/utils-common/-/utils-common-3.10.1.tgz", + "integrity": "sha512-5mFSgEADtnFxFH7RLw02QA5MpU5JVUCj0MPeIvi/aF4Fi45tQRIuTwXoXDqJ+1VfQJuYJGz3SI63wmGz4HvXzA==", "dev": true, "license": "MIT", "dependencies": { - "@docusaurus/types": "3.9.2", + "@docusaurus/types": "3.10.1", "tslib": "^2.6.0" }, "engines": { @@ -4067,15 +4109,15 @@ } }, "node_modules/@docusaurus/utils-validation": { - "version": "3.9.2", - "resolved": "https://registry.npmjs.org/@docusaurus/utils-validation/-/utils-validation-3.9.2.tgz", - "integrity": "sha512-l7yk3X5VnNmATbwijJkexdhulNsQaNDwoagiwujXoxFbWLcxHQqNQ+c/IAlzrfMMOfa/8xSBZ7KEKDesE/2J7A==", + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@docusaurus/utils-validation/-/utils-validation-3.10.1.tgz", + "integrity": "sha512-cRv1X69jwaWv47waglllgZVWzeBFLhl53XT/XED/83BerVBTC5FTP8WTcVl8Z6sZOegDSwitu/wpCSPCDOT6lg==", "dev": true, "license": "MIT", "dependencies": { - "@docusaurus/logger": "3.9.2", - "@docusaurus/utils": "3.9.2", - "@docusaurus/utils-common": "3.9.2", + "@docusaurus/logger": "3.10.1", + "@docusaurus/utils": "3.10.1", + "@docusaurus/utils-common": "3.10.1", "fs-extra": "^11.2.0", "joi": "^17.9.2", "js-yaml": "^4.1.0", @@ -4105,6 +4147,19 @@ "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/@eslint-community/regexpp": { "version": "4.12.2", "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", @@ -4116,51 +4171,20 @@ } }, "node_modules/@eslint/config-array": { - "version": "0.21.1", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.1.tgz", - "integrity": "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==", + "version": "0.21.2", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.2.tgz", + "integrity": "sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw==", "dev": true, "license": "Apache-2.0", "dependencies": { "@eslint/object-schema": "^2.1.7", "debug": "^4.3.1", - "minimatch": "^3.1.2" + "minimatch": "^3.1.5" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@eslint/config-array/node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@eslint/config-array/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/@eslint/config-array/node_modules/minimatch": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.4.tgz", - "integrity": "sha512-twmL+S8+7yIsE9wsqgzU3E8/LumN3M3QELrBZ20OdmQ9jB2JvW5oZtBEmft84k/Gs5CG9mqtWc6Y9vW+JEzGxw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/@eslint/config-helpers": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz", @@ -4188,9 +4212,9 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.4.tgz", - "integrity": "sha512-4h4MVF8pmBsncB60r0wSJiIeUKTSD4m7FmTFThG8RHlsg9ajqckLm9OraguFGZE4vVdpiI1Q4+hFnisopmG6gQ==", + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.5.tgz", + "integrity": "sha512-4IlJx0X0qftVsN5E+/vGujTRIFtwuLbNsVUe7TO6zYPDR1O6nFwvwhIKEKSrl6dZchmYBITazxKoUYOjdtjlRg==", "dev": true, "license": "MIT", "dependencies": { @@ -4201,7 +4225,7 @@ "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.1", - "minimatch": "^3.1.3", + "minimatch": "^3.1.5", "strip-json-comments": "^3.1.1" }, "engines": { @@ -4211,51 +4235,10 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/@eslint/eslintrc/node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/@eslint/eslintrc/node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/@eslint/eslintrc/node_modules/minimatch": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.4.tgz", - "integrity": "sha512-twmL+S8+7yIsE9wsqgzU3E8/LumN3M3QELrBZ20OdmQ9jB2JvW5oZtBEmft84k/Gs5CG9mqtWc6Y9vW+JEzGxw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/@eslint/js": { - "version": "9.39.3", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.3.tgz", - "integrity": "sha512-1B1VkCq6FuUNlQvlBYb+1jDu/gV297TIs/OeiaSR9l1H27SVW55ONE1e1Vp16NqP683+xEGzxYtv4XCiDPaQiw==", + "version": "9.39.4", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.4.tgz", + "integrity": "sha512-nE7DEIchvtiFTwBw4Lfbu59PG+kCofhjsKaCWzxTpt4lfRjRMqG6uMBzKXuEcyXhOHoUp9riAm7/aWYGhXZ9cw==", "dev": true, "license": "MIT", "engines": { @@ -4319,29 +4302,43 @@ } }, "node_modules/@humanfs/core": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", - "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.2.tgz", + "integrity": "sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==", "dev": true, "license": "Apache-2.0", + "dependencies": { + "@humanfs/types": "^0.15.0" + }, "engines": { "node": ">=18.18.0" } }, "node_modules/@humanfs/node": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", - "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", + "version": "0.16.8", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.8.tgz", + "integrity": "sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@humanfs/core": "^0.19.1", + "@humanfs/core": "^0.19.2", + "@humanfs/types": "^0.15.0", "@humanwhocodes/retry": "^0.4.0" }, "engines": { "node": ">=18.18.0" } }, + "node_modules/@humanfs/types": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/@humanfs/types/-/types-0.15.0.tgz", + "integrity": "sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", @@ -4514,14 +4511,14 @@ } }, "node_modules/@jsonjoy.com/fs-core": { - "version": "4.56.10", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-core/-/fs-core-4.56.10.tgz", - "integrity": "sha512-PyAEA/3cnHhsGcdY+AmIU+ZPqTuZkDhCXQ2wkXypdLitSpd6d5Ivxhnq4wa2ETRWFVJGabYynBWxIijOswSmOw==", + "version": "4.57.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-core/-/fs-core-4.57.2.tgz", + "integrity": "sha512-SVjwklkpIV5wrynpYtuYnfYH1QF4/nDuLBX7VXdb+3miglcAgBVZb/5y0cOsehRV/9Vb+3UqhkMq3/NR3ztdkQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@jsonjoy.com/fs-node-builtins": "4.56.10", - "@jsonjoy.com/fs-node-utils": "4.56.10", + "@jsonjoy.com/fs-node-builtins": "4.57.2", + "@jsonjoy.com/fs-node-utils": "4.57.2", "thingies": "^2.5.0" }, "engines": { @@ -4536,15 +4533,15 @@ } }, "node_modules/@jsonjoy.com/fs-fsa": { - "version": "4.56.10", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-fsa/-/fs-fsa-4.56.10.tgz", - "integrity": "sha512-/FVK63ysNzTPOnCCcPoPHt77TOmachdMS422txM4KhxddLdbW1fIbFMYH0AM0ow/YchCyS5gqEjKLNyv71j/5Q==", + "version": "4.57.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-fsa/-/fs-fsa-4.57.2.tgz", + "integrity": "sha512-fhO8+iR2I+OCw668ISDJdn1aArc9zx033sWejIyzQ8RBeXa9bDSaUeA3ix0poYOfrj1KdOzytmYNv2/uLDfV6g==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@jsonjoy.com/fs-core": "4.56.10", - "@jsonjoy.com/fs-node-builtins": "4.56.10", - "@jsonjoy.com/fs-node-utils": "4.56.10", + "@jsonjoy.com/fs-core": "4.57.2", + "@jsonjoy.com/fs-node-builtins": "4.57.2", + "@jsonjoy.com/fs-node-utils": "4.57.2", "thingies": "^2.5.0" }, "engines": { @@ -4559,17 +4556,17 @@ } }, "node_modules/@jsonjoy.com/fs-node": { - "version": "4.56.10", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node/-/fs-node-4.56.10.tgz", - "integrity": "sha512-7R4Gv3tkUdW3dXfXiOkqxkElxKNVdd8BDOWC0/dbERd0pXpPY+s2s1Mino+aTvkGrFPiY+mmVxA7zhskm4Ue4Q==", + "version": "4.57.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node/-/fs-node-4.57.2.tgz", + "integrity": "sha512-nX2AdL6cOFwLdju9G4/nbRnYevmCJbh7N7hvR3gGm97Cs60uEjyd0rpR+YBS7cTg175zzl22pGKXR5USaQMvKg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@jsonjoy.com/fs-core": "4.56.10", - "@jsonjoy.com/fs-node-builtins": "4.56.10", - "@jsonjoy.com/fs-node-utils": "4.56.10", - "@jsonjoy.com/fs-print": "4.56.10", - "@jsonjoy.com/fs-snapshot": "4.56.10", + "@jsonjoy.com/fs-core": "4.57.2", + "@jsonjoy.com/fs-node-builtins": "4.57.2", + "@jsonjoy.com/fs-node-utils": "4.57.2", + "@jsonjoy.com/fs-print": "4.57.2", + "@jsonjoy.com/fs-snapshot": "4.57.2", "glob-to-regex.js": "^1.0.0", "thingies": "^2.5.0" }, @@ -4585,9 +4582,9 @@ } }, "node_modules/@jsonjoy.com/fs-node-builtins": { - "version": "4.56.10", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-builtins/-/fs-node-builtins-4.56.10.tgz", - "integrity": "sha512-uUnKz8R0YJyKq5jXpZtkGV9U0pJDt8hmYcLRrPjROheIfjMXsz82kXMgAA/qNg0wrZ1Kv+hrg7azqEZx6XZCVw==", + "version": "4.57.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-builtins/-/fs-node-builtins-4.57.2.tgz", + "integrity": "sha512-xhiegylRmhw43Ki2HO1ZBL7DQ5ja/qpRsL29VtQ2xuUHiuDGbgf2uD4p9Qd8hJI5P6RCtGYD50IXHXVq/Ocjcg==", "dev": true, "license": "Apache-2.0", "engines": { @@ -4602,15 +4599,15 @@ } }, "node_modules/@jsonjoy.com/fs-node-to-fsa": { - "version": "4.56.10", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-to-fsa/-/fs-node-to-fsa-4.56.10.tgz", - "integrity": "sha512-oH+O6Y4lhn9NyG6aEoFwIBNKZeYy66toP5LJcDOMBgL99BKQMUf/zWJspdRhMdn/3hbzQsZ8EHHsuekbFLGUWw==", + "version": "4.57.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-to-fsa/-/fs-node-to-fsa-4.57.2.tgz", + "integrity": "sha512-18LmWTSONhoAPW+IWRuf8w/+zRolPFGPeGwMxlAhhfY11EKzX+5XHDBPAw67dBF5dxDErHJbl40U+3IXSDRXSQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@jsonjoy.com/fs-fsa": "4.56.10", - "@jsonjoy.com/fs-node-builtins": "4.56.10", - "@jsonjoy.com/fs-node-utils": "4.56.10" + "@jsonjoy.com/fs-fsa": "4.57.2", + "@jsonjoy.com/fs-node-builtins": "4.57.2", + "@jsonjoy.com/fs-node-utils": "4.57.2" }, "engines": { "node": ">=10.0" @@ -4624,13 +4621,13 @@ } }, "node_modules/@jsonjoy.com/fs-node-utils": { - "version": "4.56.10", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-utils/-/fs-node-utils-4.56.10.tgz", - "integrity": "sha512-8EuPBgVI2aDPwFdaNQeNpHsyqPi3rr+85tMNG/lHvQLiVjzoZsvxA//Xd8aB567LUhy4QS03ptT+unkD/DIsNg==", + "version": "4.57.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-utils/-/fs-node-utils-4.57.2.tgz", + "integrity": "sha512-rsPSJgekz43IlNbLyAM/Ab+ouYLWGp5DDBfYBNNEqDaSpsbXfthBn29Q4muFA9L0F+Z3mKo+CWlgSCXrf+mOyQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@jsonjoy.com/fs-node-builtins": "4.56.10" + "@jsonjoy.com/fs-node-builtins": "4.57.2" }, "engines": { "node": ">=10.0" @@ -4644,13 +4641,13 @@ } }, "node_modules/@jsonjoy.com/fs-print": { - "version": "4.56.10", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-print/-/fs-print-4.56.10.tgz", - "integrity": "sha512-JW4fp5mAYepzFsSGrQ48ep8FXxpg4niFWHdF78wDrFGof7F3tKDJln72QFDEn/27M1yHd4v7sKHHVPh78aWcEw==", + "version": "4.57.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-print/-/fs-print-4.57.2.tgz", + "integrity": "sha512-wK9NSow48i4DbDl9F1CQE5TqnyZOJ04elU3WFG5aJ76p+YxO/ulyBBQvKsessPxdo381Bc2pcEoyPujMOhcRqQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@jsonjoy.com/fs-node-utils": "4.56.10", + "@jsonjoy.com/fs-node-utils": "4.57.2", "tree-dump": "^1.1.0" }, "engines": { @@ -4665,14 +4662,14 @@ } }, "node_modules/@jsonjoy.com/fs-snapshot": { - "version": "4.56.10", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-snapshot/-/fs-snapshot-4.56.10.tgz", - "integrity": "sha512-DkR6l5fj7+qj0+fVKm/OOXMGfDFCGXLfyHkORH3DF8hxkpDgIHbhf/DwncBMs2igu/ST7OEkexn1gIqoU6Y+9g==", + "version": "4.57.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-snapshot/-/fs-snapshot-4.57.2.tgz", + "integrity": "sha512-GdduDZuoP5V/QCgJkx9+BZ6SC0EZ/smXAdTS7PfMqgMTGXLlt/bH/FqMYaqB9JmLf05sJPtO0XRbAwwkEEPbVw==", "dev": true, "license": "Apache-2.0", "dependencies": { "@jsonjoy.com/buffers": "^17.65.0", - "@jsonjoy.com/fs-node-utils": "4.56.10", + "@jsonjoy.com/fs-node-utils": "4.57.2", "@jsonjoy.com/json-pack": "^17.65.0", "@jsonjoy.com/util": "^17.65.0" }, @@ -5008,141 +5005,151 @@ } }, "node_modules/@peculiar/asn1-cms": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/@peculiar/asn1-cms/-/asn1-cms-2.6.1.tgz", - "integrity": "sha512-vdG4fBF6Lkirkcl53q6eOdn3XYKt+kJTG59edgRZORlg/3atWWEReRCx5rYE1ZzTTX6vLK5zDMjHh7vbrcXGtw==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-cms/-/asn1-cms-2.7.0.tgz", + "integrity": "sha512-hew63shtzzvBcSHbhm+cyAmKe6AIfinT9hzEqSPjDC6opTTMKmTkQ0gHuN2KsWlvqiKw1S/fS94fhag/FJkioQ==", "dev": true, "license": "MIT", "dependencies": { - "@peculiar/asn1-schema": "^2.6.0", - "@peculiar/asn1-x509": "^2.6.1", - "@peculiar/asn1-x509-attr": "^2.6.1", + "@peculiar/asn1-schema": "^2.7.0", + "@peculiar/asn1-x509": "^2.7.0", + "@peculiar/asn1-x509-attr": "^2.7.0", "asn1js": "^3.0.6", "tslib": "^2.8.1" } }, "node_modules/@peculiar/asn1-csr": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/@peculiar/asn1-csr/-/asn1-csr-2.6.1.tgz", - "integrity": "sha512-WRWnKfIocHyzFYQTka8O/tXCiBquAPSrRjXbOkHbO4qdmS6loffCEGs+rby6WxxGdJCuunnhS2duHURhjyio6w==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-csr/-/asn1-csr-2.7.0.tgz", + "integrity": "sha512-VVsAyGqErT9D1SY4aEqozThXMVI+ssVRiv2DDeYuvpBKLIgZ3hYs3Ay3u/VSoKq6ESFi9cf6rf3IOOzfwh7oMA==", "dev": true, "license": "MIT", "dependencies": { - "@peculiar/asn1-schema": "^2.6.0", - "@peculiar/asn1-x509": "^2.6.1", + "@peculiar/asn1-schema": "^2.7.0", + "@peculiar/asn1-x509": "^2.7.0", "asn1js": "^3.0.6", "tslib": "^2.8.1" } }, "node_modules/@peculiar/asn1-ecc": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/@peculiar/asn1-ecc/-/asn1-ecc-2.6.1.tgz", - "integrity": "sha512-+Vqw8WFxrtDIN5ehUdvlN2m73exS2JVG0UAyfVB31gIfor3zWEAQPD+K9ydCxaj3MLen9k0JhKpu9LqviuCE1g==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-ecc/-/asn1-ecc-2.7.0.tgz", + "integrity": "sha512-n7KEs/Q/wrB415cxy4fHOBhegp4NdJ15fkJPwcB/3/8iNBQC2L/N7SChJPKDJPZGYH0jD4Tg4/0vnHmwghnbKw==", "dev": true, "license": "MIT", "dependencies": { - "@peculiar/asn1-schema": "^2.6.0", - "@peculiar/asn1-x509": "^2.6.1", + "@peculiar/asn1-schema": "^2.7.0", + "@peculiar/asn1-x509": "^2.7.0", "asn1js": "^3.0.6", "tslib": "^2.8.1" } }, "node_modules/@peculiar/asn1-pfx": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/@peculiar/asn1-pfx/-/asn1-pfx-2.6.1.tgz", - "integrity": "sha512-nB5jVQy3MAAWvq0KY0R2JUZG8bO/bTLpnwyOzXyEh/e54ynGTatAR+csOnXkkVD9AFZ2uL8Z7EV918+qB1qDvw==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-pfx/-/asn1-pfx-2.7.0.tgz", + "integrity": "sha512-V/nrlQVmhg7lYAsM7E13UDL5erAwFv6kCIVFqNaMIHSVi7dngcT839JkRTkQBqznMG98l2XjxYk74ZztAohZzA==", "dev": true, "license": "MIT", "dependencies": { - "@peculiar/asn1-cms": "^2.6.1", - "@peculiar/asn1-pkcs8": "^2.6.1", - "@peculiar/asn1-rsa": "^2.6.1", - "@peculiar/asn1-schema": "^2.6.0", + "@peculiar/asn1-cms": "^2.7.0", + "@peculiar/asn1-pkcs8": "^2.7.0", + "@peculiar/asn1-rsa": "^2.7.0", + "@peculiar/asn1-schema": "^2.7.0", "asn1js": "^3.0.6", "tslib": "^2.8.1" } }, "node_modules/@peculiar/asn1-pkcs8": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/@peculiar/asn1-pkcs8/-/asn1-pkcs8-2.6.1.tgz", - "integrity": "sha512-JB5iQ9Izn5yGMw3ZG4Nw3Xn/hb/G38GYF3lf7WmJb8JZUydhVGEjK/ZlFSWhnlB7K/4oqEs8HnfFIKklhR58Tw==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-pkcs8/-/asn1-pkcs8-2.7.0.tgz", + "integrity": "sha512-9GTl1nE8Mx1kTZ+7QyYatDyKsm34QcWRBFkY1iPvWC3X4Dona5s/tlLiQsx5WzVdZqiMBZNYT0buyw4/vbhnjw==", "dev": true, "license": "MIT", "dependencies": { - "@peculiar/asn1-schema": "^2.6.0", - "@peculiar/asn1-x509": "^2.6.1", + "@peculiar/asn1-schema": "^2.7.0", + "@peculiar/asn1-x509": "^2.7.0", "asn1js": "^3.0.6", "tslib": "^2.8.1" } }, "node_modules/@peculiar/asn1-pkcs9": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/@peculiar/asn1-pkcs9/-/asn1-pkcs9-2.6.1.tgz", - "integrity": "sha512-5EV8nZoMSxeWmcxWmmcolg22ojZRgJg+Y9MX2fnE2bGRo5KQLqV5IL9kdSQDZxlHz95tHvIq9F//bvL1OeNILw==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-pkcs9/-/asn1-pkcs9-2.7.0.tgz", + "integrity": "sha512-Bh7m+OuIaSEllPQcSd9OSp93F4ROWH7sbITWV8MI+8dwsjE5111/87VxiWVvYFKyww3vp39geLv9ENqhwWHcew==", "dev": true, "license": "MIT", "dependencies": { - "@peculiar/asn1-cms": "^2.6.1", - "@peculiar/asn1-pfx": "^2.6.1", - "@peculiar/asn1-pkcs8": "^2.6.1", - "@peculiar/asn1-schema": "^2.6.0", - "@peculiar/asn1-x509": "^2.6.1", - "@peculiar/asn1-x509-attr": "^2.6.1", + "@peculiar/asn1-cms": "^2.7.0", + "@peculiar/asn1-pfx": "^2.7.0", + "@peculiar/asn1-pkcs8": "^2.7.0", + "@peculiar/asn1-schema": "^2.7.0", + "@peculiar/asn1-x509": "^2.7.0", + "@peculiar/asn1-x509-attr": "^2.7.0", "asn1js": "^3.0.6", "tslib": "^2.8.1" } }, "node_modules/@peculiar/asn1-rsa": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/@peculiar/asn1-rsa/-/asn1-rsa-2.6.1.tgz", - "integrity": "sha512-1nVMEh46SElUt5CB3RUTV4EG/z7iYc7EoaDY5ECwganibQPkZ/Y2eMsTKB/LeyrUJ+W/tKoD9WUqIy8vB+CEdA==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-rsa/-/asn1-rsa-2.7.0.tgz", + "integrity": "sha512-/qvENQrXyTZURjMqSeofHul0JJt2sNSzSwk36pl2olkHbaioMQgrASDZAlHXl0xUlnVbHj0uGgOrBMTb5x2aJQ==", "dev": true, "license": "MIT", "dependencies": { - "@peculiar/asn1-schema": "^2.6.0", - "@peculiar/asn1-x509": "^2.6.1", + "@peculiar/asn1-schema": "^2.7.0", + "@peculiar/asn1-x509": "^2.7.0", "asn1js": "^3.0.6", "tslib": "^2.8.1" } }, "node_modules/@peculiar/asn1-schema": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.6.0.tgz", - "integrity": "sha512-xNLYLBFTBKkCzEZIw842BxytQQATQv+lDTCEMZ8C196iJcJJMBUZxrhSTxLaohMyKK8QlzRNTRkUmanucnDSqg==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.7.0.tgz", + "integrity": "sha512-W8ZfWzLmQnrcky+eh3tni4IozMdqBDiHWU0N+vve/UGjMaUs8c0L7A2oEdkBXS8rTpWDpK/aoI3DG/L/hxmxPg==", "dev": true, "license": "MIT", "dependencies": { + "@peculiar/utils": "^2.0.2", "asn1js": "^3.0.6", - "pvtsutils": "^1.3.6", "tslib": "^2.8.1" } }, "node_modules/@peculiar/asn1-x509": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/@peculiar/asn1-x509/-/asn1-x509-2.6.1.tgz", - "integrity": "sha512-O9jT5F1A2+t3r7C4VT7LYGXqkGLK7Kj1xFpz7U0isPrubwU5PbDoyYtx6MiGst29yq7pXN5vZbQFKRCP+lLZlA==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-x509/-/asn1-x509-2.7.0.tgz", + "integrity": "sha512-mUn9RRrkGDnG4ALfunDmzyRW5dg+sWCj/pfnCCqEHYbkGxEpvUt6iVJv8Yw1cyp6SWZ26ZE5oSmI5SqEaen15g==", "dev": true, "license": "MIT", "dependencies": { - "@peculiar/asn1-schema": "^2.6.0", + "@peculiar/asn1-schema": "^2.7.0", + "@peculiar/utils": "^2.0.2", "asn1js": "^3.0.6", - "pvtsutils": "^1.3.6", "tslib": "^2.8.1" } }, "node_modules/@peculiar/asn1-x509-attr": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/@peculiar/asn1-x509-attr/-/asn1-x509-attr-2.6.1.tgz", - "integrity": "sha512-tlW6cxoHwgcQghnJwv3YS+9OO1737zgPogZ+CgWRUK4roEwIPzRH4JEiG770xe5HX2ATfCpmX60gurfWIF9dcQ==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-x509-attr/-/asn1-x509-attr-2.7.0.tgz", + "integrity": "sha512-NS8e7SOgXipkzUPLF/sce7ukpMpWjhxYsH0n6Y+bHYo4TTxOb95Zv7hqwSuL212mj5YxovjdOKQOgH1As3E94w==", "dev": true, "license": "MIT", "dependencies": { - "@peculiar/asn1-schema": "^2.6.0", - "@peculiar/asn1-x509": "^2.6.1", + "@peculiar/asn1-schema": "^2.7.0", + "@peculiar/asn1-x509": "^2.7.0", "asn1js": "^3.0.6", "tslib": "^2.8.1" } }, + "node_modules/@peculiar/utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@peculiar/utils/-/utils-2.0.3.tgz", + "integrity": "sha512-+oL3HPFRIZ1St2K50lWCXiioIgSoxzz7R1J3uF6neO2yl1sgmpgY6XXJH4BdpoDkMWznQTeYF6oWNDZLCdQ4eQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.8.1" + } + }, "node_modules/@peculiar/x509": { "version": "1.14.3", "resolved": "https://registry.npmjs.org/@peculiar/x509/-/x509-1.14.3.tgz", @@ -5294,16 +5301,6 @@ "node": ">=14.16" } }, - "node_modules/@trysound/sax": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", - "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10.13.0" - } - }, "node_modules/@types/body-parser": { "version": "1.19.6", "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz", @@ -5347,9 +5344,9 @@ } }, "node_modules/@types/debug": { - "version": "4.1.12", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", - "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "version": "4.1.13", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.13.tgz", + "integrity": "sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw==", "dev": true, "license": "MIT", "dependencies": { @@ -5379,9 +5376,9 @@ } }, "node_modules/@types/estree": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", - "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", + "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==", "dev": true, "license": "MIT" }, @@ -5535,13 +5532,13 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.3.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.0.tgz", - "integrity": "sha512-4K3bqJpXpqfg2XKGK9bpDTc6xO/xoUP/RBWS7AtRMug6zZFaRekiLzjVtAoZMquxoAbzBvy5nxQ7veS5eYzf8A==", + "version": "25.7.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.7.0.tgz", + "integrity": "sha512-z+pdZyxE+RTQE9AcboAZCb4otwcrvgHD+GlBpPgn0emDVt0ohrTMhAwlr2Wd9nZ+nihhYFxO2pThz3C5qSu2Eg==", "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~7.18.0" + "undici-types": "~7.21.0" } }, "node_modules/@types/prismjs": { @@ -5551,9 +5548,9 @@ "license": "MIT" }, "node_modules/@types/qs": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.14.0.tgz", - "integrity": "sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==", + "version": "6.15.1", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.15.1.tgz", + "integrity": "sha512-GZHUBZR9hckSUhrxmp1nG6NwdpM9fCunJwyThLW1X3AyHgd9IlHb6VANpQQqDr2o/qQp6McZ3y/IA2rVzKzSbw==", "dev": true, "license": "MIT" }, @@ -5714,20 +5711,20 @@ "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.56.1.tgz", - "integrity": "sha512-Jz9ZztpB37dNC+HU2HI28Bs9QXpzCz+y/twHOwhyrIRdbuVDxSytJNDl6z/aAKlaRIwC7y8wJdkBv7FxYGgi0A==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.59.3.tgz", + "integrity": "sha512-PwFvSKsXGShKGW6n5bZOhGHEcCZXM8HofLK9fNsEwZXzFRjoY+XT1Vsf1zgyXdwTr0ZYz1/2tkZ0DBTT9jZjhw==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.12.2", - "@typescript-eslint/scope-manager": "8.56.1", - "@typescript-eslint/type-utils": "8.56.1", - "@typescript-eslint/utils": "8.56.1", - "@typescript-eslint/visitor-keys": "8.56.1", + "@typescript-eslint/scope-manager": "8.59.3", + "@typescript-eslint/type-utils": "8.59.3", + "@typescript-eslint/utils": "8.59.3", + "@typescript-eslint/visitor-keys": "8.59.3", "ignore": "^7.0.5", "natural-compare": "^1.4.0", - "ts-api-utils": "^2.4.0" + "ts-api-utils": "^2.5.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -5737,22 +5734,32 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^8.56.1", + "@typescript-eslint/parser": "^8.59.3", "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" } }, "node_modules/@typescript-eslint/parser": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.56.1.tgz", - "integrity": "sha512-klQbnPAAiGYFyI02+znpBRLyjL4/BrBd0nyWkdC0s/6xFLkXYQ8OoRrSkqacS1ddVxf/LDyODIKbQ5TgKAf/Fg==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.59.3.tgz", + "integrity": "sha512-HPwA+hVkfcriajbNvTmZv4VRauibay+cWArYUYq7u7W7PmGShMxbPxLvrwDme55a6d5alG3nrYfhyJ/G28XlLg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.56.1", - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/typescript-estree": "8.56.1", - "@typescript-eslint/visitor-keys": "8.56.1", + "@typescript-eslint/scope-manager": "8.59.3", + "@typescript-eslint/types": "8.59.3", + "@typescript-eslint/typescript-estree": "8.59.3", + "@typescript-eslint/visitor-keys": "8.59.3", "debug": "^4.4.3" }, "engines": { @@ -5764,18 +5771,18 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/project-service": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.56.1.tgz", - "integrity": "sha512-TAdqQTzHNNvlVFfR+hu2PDJrURiwKsUvxFn1M0h95BB8ah5jejas08jUWG4dBA68jDMI988IvtfdAI53JzEHOQ==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.59.3.tgz", + "integrity": "sha512-ECiUWa/KYRGDFUqTNehaRgzDshnJfkTABJxVemHk4ko22gcr0ukloKjWvyQ64g8YCV/UI47kN1dbmjf/GaQYng==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.56.1", - "@typescript-eslint/types": "^8.56.1", + "@typescript-eslint/tsconfig-utils": "^8.59.3", + "@typescript-eslint/types": "^8.59.3", "debug": "^4.4.3" }, "engines": { @@ -5786,18 +5793,18 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.56.1.tgz", - "integrity": "sha512-YAi4VDKcIZp0O4tz/haYKhmIDZFEUPOreKbfdAN3SzUDMcPhJ8QI99xQXqX+HoUVq8cs85eRKnD+rne2UAnj2w==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.59.3.tgz", + "integrity": "sha512-t2LvZnoEfzKtnPjgeEu41xw5gxq9mQVfYy4OoZ4Vlt0sk3JwxmhCca/AR7DwOiHrjWgjAj6as4AhRLKSDfvZIA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/visitor-keys": "8.56.1" + "@typescript-eslint/types": "8.59.3", + "@typescript-eslint/visitor-keys": "8.59.3" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -5808,9 +5815,9 @@ } }, "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.56.1.tgz", - "integrity": "sha512-qOtCYzKEeyr3aR9f28mPJqBty7+DBqsdd63eO0yyDwc6vgThj2UjWfJIcsFeSucYydqcuudMOprZ+x1SpF3ZuQ==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.59.3.tgz", + "integrity": "sha512-PcIJHjmaREXLgIAIzLnSY9VucEzz8FKXsRgFa1DmdGCK/5tJpW03TKJF01Q6VZd1lLdz2sIKPWaDUZN9dp//dw==", "dev": true, "license": "MIT", "engines": { @@ -5821,21 +5828,21 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.56.1.tgz", - "integrity": "sha512-yB/7dxi7MgTtGhZdaHCemf7PuwrHMenHjmzgUW1aJpO+bBU43OycnM3Wn+DdvDO/8zzA9HlhaJ0AUGuvri4oGg==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.59.3.tgz", + "integrity": "sha512-g71d8QD8UaiHGvrJwyIS1hCX5r63w6Jll+4VEYhEAHXTDIqX1JgxhTAbEHtKntL9kuc4jRo7/GWw5xfCepSccQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/typescript-estree": "8.56.1", - "@typescript-eslint/utils": "8.56.1", + "@typescript-eslint/types": "8.59.3", + "@typescript-eslint/typescript-estree": "8.59.3", + "@typescript-eslint/utils": "8.59.3", "debug": "^4.4.3", - "ts-api-utils": "^2.4.0" + "ts-api-utils": "^2.5.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -5846,13 +5853,13 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/types": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.56.1.tgz", - "integrity": "sha512-dbMkdIUkIkchgGDIv7KLUpa0Mda4IYjo4IAMJUZ+3xNoUXxMsk9YtKpTHSChRS85o+H9ftm51gsK1dZReY9CVw==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.59.3.tgz", + "integrity": "sha512-ePFoH0g4ludssdRFqqDxQePCxU4WQyRa9+XVwjm7yLn0FKhMeoetC+qBEEI1Eyb1pGSDveTIT09Bvw2WhlGayg==", "dev": true, "license": "MIT", "engines": { @@ -5864,21 +5871,21 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.56.1.tgz", - "integrity": "sha512-qzUL1qgalIvKWAf9C1HpvBjif+Vm6rcT5wZd4VoMb9+Km3iS3Cv9DY6dMRMDtPnwRAFyAi7YXJpTIEXLvdfPxg==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.59.3.tgz", + "integrity": "sha512-CbRjVRAf7Lr9Kr8RopKcbY45p2VfmmHrm0ygOCYFi7oU8q19m0Fs/6iHS7kNOmwpp+ob07ZVcAqlxUod9lYdmg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.56.1", - "@typescript-eslint/tsconfig-utils": "8.56.1", - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/visitor-keys": "8.56.1", + "@typescript-eslint/project-service": "8.59.3", + "@typescript-eslint/tsconfig-utils": "8.59.3", + "@typescript-eslint/types": "8.59.3", + "@typescript-eslint/visitor-keys": "8.59.3", "debug": "^4.4.3", "minimatch": "^10.2.2", "semver": "^7.7.3", "tinyglobby": "^0.2.15", - "ts-api-utils": "^2.4.0" + "ts-api-utils": "^2.5.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -5888,20 +5895,59 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.6.tgz", + "integrity": "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", + "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.5" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/@typescript-eslint/utils": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.56.1.tgz", - "integrity": "sha512-HPAVNIME3tABJ61siYlHzSWCGtOoeP2RTIaHXFMPqjrQKCGB9OgUVdiNgH7TJS2JNIQ5qQ4RsAUDuGaGme/KOA==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.59.3.tgz", + "integrity": "sha512-JAvT14goBzRzzzZyqq3P9BLArIxTtQURUtFgQ/V7FO+eU+Gg6ES+5ymOPP1wRxXcxAYeivCk4uS3jCKWI1K8Zg==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.9.1", - "@typescript-eslint/scope-manager": "8.56.1", - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/typescript-estree": "8.56.1" + "@typescript-eslint/scope-manager": "8.59.3", + "@typescript-eslint/types": "8.59.3", + "@typescript-eslint/typescript-estree": "8.59.3" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -5912,17 +5958,17 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.56.1.tgz", - "integrity": "sha512-KiROIzYdEV85YygXw6BI/Dx4fnBlFQu6Mq4QE4MOH9fFnhohw6wX/OAvDY2/C+ut0I3RSPKenvZJIVYqJNkhEw==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.59.3.tgz", + "integrity": "sha512-f1UQF7ggd42YiwI5wGrRaPsa+P0CINBlrkLPmGfpq/u/I/oVtecoEIfFR9ag/oa1sLOsRNZ6xehf6qMZhQGBDg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.56.1", + "@typescript-eslint/types": "8.59.3", "eslint-visitor-keys": "^5.0.0" }, "engines": { @@ -5947,9 +5993,9 @@ } }, "node_modules/@ungap/structured-clone": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", - "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.1.tgz", + "integrity": "sha512-mUFwbeTqrVgDQxFveS+df2yfap6iuP20NAKAsBt5jDEoOTDew+zwLAOilHCeQJOVSvmgCX4ogqIrA0mnyr08yQ==", "dev": true, "license": "ISC" }, @@ -6249,9 +6295,9 @@ } }, "node_modules/ajv": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", - "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz", + "integrity": "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==", "dev": true, "license": "MIT", "dependencies": { @@ -6284,9 +6330,9 @@ } }, "node_modules/ajv-formats/node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz", + "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==", "dev": true, "license": "MIT", "dependencies": { @@ -6318,35 +6364,35 @@ } }, "node_modules/algoliasearch": { - "version": "5.49.1", - "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.49.1.tgz", - "integrity": "sha512-X3Pp2aRQhg4xUC6PQtkubn5NpRKuUPQ9FPDQlx36SmpFwwH2N0/tw4c+NXV3nw3PsgeUs+BuWGP0gjz3TvENLQ==", + "version": "5.52.1", + "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.52.1.tgz", + "integrity": "sha512-fHA8+kXTbjagw3jkLiaS7KKrH8qe2DyOsiUhGlN4cdT77PEsfqXZl7ewDk1hsg+pJnPlnE50XtLxjR91iJOpmg==", "dev": true, "license": "MIT", "dependencies": { - "@algolia/abtesting": "1.15.1", - "@algolia/client-abtesting": "5.49.1", - "@algolia/client-analytics": "5.49.1", - "@algolia/client-common": "5.49.1", - "@algolia/client-insights": "5.49.1", - "@algolia/client-personalization": "5.49.1", - "@algolia/client-query-suggestions": "5.49.1", - "@algolia/client-search": "5.49.1", - "@algolia/ingestion": "1.49.1", - "@algolia/monitoring": "1.49.1", - "@algolia/recommend": "5.49.1", - "@algolia/requester-browser-xhr": "5.49.1", - "@algolia/requester-fetch": "5.49.1", - "@algolia/requester-node-http": "5.49.1" + "@algolia/abtesting": "1.18.1", + "@algolia/client-abtesting": "5.52.1", + "@algolia/client-analytics": "5.52.1", + "@algolia/client-common": "5.52.1", + "@algolia/client-insights": "5.52.1", + "@algolia/client-personalization": "5.52.1", + "@algolia/client-query-suggestions": "5.52.1", + "@algolia/client-search": "5.52.1", + "@algolia/ingestion": "1.52.1", + "@algolia/monitoring": "1.52.1", + "@algolia/recommend": "5.52.1", + "@algolia/requester-browser-xhr": "5.52.1", + "@algolia/requester-fetch": "5.52.1", + "@algolia/requester-node-http": "5.52.1" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/algoliasearch-helper": { - "version": "3.27.1", - "resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.27.1.tgz", - "integrity": "sha512-XXGr02Cz285vLbqM6vPfb39xqV1ptpFr1xn9mqaW+nUvYTvFTdKgYTC/Cg1VzgRTQqNkq9+LlUVv8cfCeOoKig==", + "version": "3.29.1", + "resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.29.1.tgz", + "integrity": "sha512-6ck2YFudF2Pje7szQoPBiRFTGfd+1I+0I/WfLPGn0bj1kvrFoOQmNyedNiDxTk3/r4IfSLDYk+RA4G7u8H6+yA==", "dev": true, "license": "MIT", "dependencies": { @@ -6388,35 +6434,6 @@ "node": ">=8" } }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-escapes/node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/ansi-html-community": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", @@ -6456,6 +6473,16 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/ansis": { + "version": "3.17.0", + "resolved": "https://registry.npmjs.org/ansis/-/ansis-3.17.0.tgz", + "integrity": "sha512-0qWUglt9JEqLFr3w1I1pbrChn1grhaiAR2ocX1PP/flRmxgtwTzPFFFnfIlD6aMOLQZgSuCRlidD70lvx8yhzg==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + } + }, "node_modules/anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", @@ -6495,14 +6522,14 @@ } }, "node_modules/asn1js": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-3.0.7.tgz", - "integrity": "sha512-uLvq6KJu04qoQM6gvBfKFjlh6Gl0vOKQuR5cJMDHQkmwfMOQeN3F3SHCv9SNYSL+CRoHvOGFfllDlVz03GQjvQ==", + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-3.0.10.tgz", + "integrity": "sha512-S2s3aOytiKdFRdulw2qPE51MzjzVOisppcVv7jVFR+Kw0kxwvFrDcYA0h7Ndqbmj0HkMIXYWaoj7fli8kgx1eg==", "dev": true, "license": "BSD-3-Clause", "dependencies": { "pvtsutils": "^1.3.6", - "pvutils": "^1.1.3", + "pvutils": "^1.1.5", "tslib": "^2.8.1" }, "engines": { @@ -6530,9 +6557,9 @@ } }, "node_modules/autoprefixer": { - "version": "10.4.24", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.24.tgz", - "integrity": "sha512-uHZg7N9ULTVbutaIsDRoUkoS8/h3bdsmVJYZ5l3wv8Cp/6UIIoRDm90hZ+BwxUj/hGBEzLxdHNSKuFpn8WOyZw==", + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.5.0.tgz", + "integrity": "sha512-FMhOoZV4+qR6aTUALKX2rEqGG+oyATvwBt9IIzVR5rMa2HRWPkxf+P+PAJLD1I/H5/II+HuZcBJYEFBpq39ong==", "dev": true, "funding": [ { @@ -6550,8 +6577,8 @@ ], "license": "MIT", "dependencies": { - "browserslist": "^4.28.1", - "caniuse-lite": "^1.0.30001766", + "browserslist": "^4.28.2", + "caniuse-lite": "^1.0.30001787", "fraction.js": "^5.3.4", "picocolors": "^1.1.1", "postcss-value-parser": "^4.2.0" @@ -6595,14 +6622,14 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.15", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.15.tgz", - "integrity": "sha512-hR3GwrRwHUfYwGfrisXPIDP3JcYfBrW7wKE7+Au6wDYl7fm/ka1NEII6kORzxNU556JjfidZeBsO10kYvtV1aw==", + "version": "0.4.17", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.17.tgz", + "integrity": "sha512-aTyf30K/rqAsNwN76zYrdtx8obu0E4KoUME29B1xj+B3WxgvWkp943vYQ+z8Mv3lw9xHXMHpvSPOBxzAkIa94w==", "dev": true, "license": "MIT", "dependencies": { "@babel/compat-data": "^7.28.6", - "@babel/helper-define-polyfill-provider": "^0.6.6", + "@babel/helper-define-polyfill-provider": "^0.6.8", "semver": "^6.3.1" }, "peerDependencies": { @@ -6634,13 +6661,13 @@ } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.6.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.6.tgz", - "integrity": "sha512-hYm+XLYRMvupxiQzrvXUj7YyvFFVfv5gI0R71AJzudg1g2AI2vyCPPIFEBjk162/wFzti3inBHo7isWFuEVS/A==", + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.8.tgz", + "integrity": "sha512-M762rNHfSF1EV3SLtnCJXFoQbbIIz0OyRwnCmV0KPC7qosSfCO0QLTSuJX3ayAebubhE6oYBAYPrBA5ljowaZg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.6" + "@babel/helper-define-polyfill-provider": "^0.6.8" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" @@ -6658,19 +6685,16 @@ } }, "node_modules/balanced-match": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true, - "license": "MIT", - "engines": { - "node": "18 || 20 || >=22" - } + "license": "MIT" }, "node_modules/baseline-browser-mapping": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.0.tgz", - "integrity": "sha512-lIyg0szRfYbiy67j9KN8IyeD7q7hcmqnJ1ddWmNt19ItGpNN64mnllmxUNFIOdOm6by97jlL6wfpTTJrmnjWAA==", + "version": "2.10.29", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.29.tgz", + "integrity": "sha512-Asa2krT+XTPZINCS+2QcyS8WTkObE77RwkydwF7h6DmnKqbvlalz93m/dnphUyCa6SWSP51VgtEUf2FN+gelFQ==", "dev": true, "license": "Apache-2.0", "bin": { @@ -6711,9 +6735,9 @@ } }, "node_modules/body-parser": { - "version": "1.20.4", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz", - "integrity": "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==", + "version": "1.20.5", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.5.tgz", + "integrity": "sha512-3grm+/2tUOvu2cjJkvsIxrv/wVpfXQW4PsQHYm7yk4vfpu7Ekl6nEsYBoJUL6qDwZUx8wUhQ8tR2qz+ad9c9OA==", "dev": true, "license": "MIT", "dependencies": { @@ -6725,7 +6749,7 @@ "http-errors": "~2.0.1", "iconv-lite": "~0.4.24", "on-finished": "~2.4.1", - "qs": "~6.14.0", + "qs": "~6.15.1", "raw-body": "~2.5.3", "type-is": "~1.6.18", "unpipe": "~1.0.0" @@ -6804,16 +6828,14 @@ } }, "node_modules/brace-expansion": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.3.tgz", - "integrity": "sha512-fy6KJm2RawA5RcHkLa1z/ScpBeA762UF9KmZQxwIbDtRJrgLzM10depAiEQ+CXYcoiqW1/m96OAAoke2nE9EeA==", + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz", + "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==", "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^4.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, "node_modules/braces": { @@ -6830,9 +6852,9 @@ } }, "node_modules/browserslist": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", - "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", + "version": "4.28.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz", + "integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==", "dev": true, "funding": [ { @@ -6850,11 +6872,11 @@ ], "license": "MIT", "dependencies": { - "baseline-browser-mapping": "^2.9.0", - "caniuse-lite": "^1.0.30001759", - "electron-to-chromium": "^1.5.263", - "node-releases": "^2.0.27", - "update-browserslist-db": "^1.2.0" + "baseline-browser-mapping": "^2.10.12", + "caniuse-lite": "^1.0.30001782", + "electron-to-chromium": "^1.5.328", + "node-releases": "^2.0.36", + "update-browserslist-db": "^1.2.3" }, "bin": { "browserslist": "cli.js" @@ -6936,15 +6958,15 @@ } }, "node_modules/call-bind": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", - "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.9.tgz", + "integrity": "sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ==", "dev": true, "license": "MIT", "dependencies": { - "call-bind-apply-helpers": "^1.0.0", - "es-define-property": "^1.0.0", - "get-intrinsic": "^1.2.4", + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "get-intrinsic": "^1.3.0", "set-function-length": "^1.2.2" }, "engines": { @@ -7033,9 +7055,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001774", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001774.tgz", - "integrity": "sha512-DDdwPGz99nmIEv216hKSgLD+D4ikHQHjBC/seF98N9CPqRX4M5mSxT9eTV6oyisnJcuzxtZy4n17yKKQYmYQOA==", + "version": "1.0.30001792", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001792.tgz", + "integrity": "sha512-hVLMUZFgR4JJ6ACt1uEESvQN1/dBVqPAKY0hgrV70eN3391K6juAfTjKZLKvOMsx8PxA7gsY1/tLMMTcfFLLpw==", "dev": true, "funding": [ { @@ -7613,16 +7635,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/copy-webpack-plugin/node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, "node_modules/copy-webpack-plugin/node_modules/slash": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", @@ -7637,9 +7649,9 @@ } }, "node_modules/core-js": { - "version": "3.48.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.48.0.tgz", - "integrity": "sha512-zpEHTy1fjTMZCKLHUZoVeylt9XrzaIN2rbPXEt0k+q7JE5CkCZdo6bNq55bn24a69CH7ErAVLKijxJja4fw+UQ==", + "version": "3.49.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.49.0.tgz", + "integrity": "sha512-es1U2+YTtzpwkxVLwAFdSpaIMyQaq0PBgm3YD1W3Qpsn1NAmO3KSgZfu+oGSWVu6NvLHoHCV/aYcsE5wiB7ALg==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -7649,9 +7661,9 @@ } }, "node_modules/core-js-compat": { - "version": "3.48.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.48.0.tgz", - "integrity": "sha512-OM4cAF3D6VtH/WkLtWvyNC56EZVXsZdU3iqaMG2B4WvYrlqU831pc4UtG5yp0sE9z8Y02wVN7PjW5Zf9Gt0f1Q==", + "version": "3.49.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.49.0.tgz", + "integrity": "sha512-VQXt1jr9cBz03b331DFDCCP90b3fanciLkgiOoy8SBHy06gNf+vQ1A3WFLqG7I8TipYIKeYK9wxd0tUrvHcOZA==", "dev": true, "license": "MIT", "dependencies": { @@ -7662,18 +7674,6 @@ "url": "https://opencollective.com/core-js" } }, - "node_modules/core-js-pure": { - "version": "3.48.0", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.48.0.tgz", - "integrity": "sha512-1slJgk89tWC51HQ1AEqG+s2VuwpTRr8ocu4n20QUcH1v9lAN0RXen0Q0AABa/DK1I7RrNWLucplOHMx8hfTGTw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, "node_modules/core-util-is": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", @@ -7793,9 +7793,9 @@ } }, "node_modules/css-declaration-sorter": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.3.1.tgz", - "integrity": "sha512-gz6x+KkgNCjxq3Var03pRYLhyNfwhkKF1g/yoLgDNtFvVu0/fOLV9C8fFEZRjACp/XQLumjAYo7JVjzH3wLbxA==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.4.0.tgz", + "integrity": "sha512-LTuzjPoyA2vMGKKcaOqKSp7Ub2eGrNfKiZH4LpezxpNrsICGCSFvsQOI29psISxNZtaXibkC2CXzrQ5enMeGGw==", "dev": true, "license": "ISC", "engines": { @@ -8019,9 +8019,9 @@ } }, "node_modules/cssdb": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-8.8.0.tgz", - "integrity": "sha512-QbLeyz2Bgso1iRlh7IpWk6OKa3lLNGXsujVjDMPl9rOZpxKeiG69icLpbLCFxeURwmcdIfZqQyhlooKJYM4f8Q==", + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-8.9.0.tgz", + "integrity": "sha512-J8jOU/hLjaXcO1LldOLraJSQpfLXRKof0I7mtbRyOy2AAXgqst0x9rlgi2qXeD6d0ou3ZLqcPAMqYVbpCbrxEw==", "dev": true, "funding": [ { @@ -8647,9 +8647,9 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.302", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.302.tgz", - "integrity": "sha512-sM6HAN2LyK82IyPBpznDRqlTQAtuSaO+ShzFiWTvoMJLHyZ+Y39r8VMfHzwbU8MVBzQ4Wdn85+wlZl2TLGIlwg==", + "version": "1.5.354", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.354.tgz", + "integrity": "sha512-JaBHwWcfIdmSAfWM5l3uwjGd431j8YEMikZ+K/2nXVuBqJKyZ0f+2h4n4JY5AyNiZmnY9qQr2RU3v9DxDmHMNg==", "dev": true, "license": "ISC" }, @@ -8699,14 +8699,14 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.19.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.19.0.tgz", - "integrity": "sha512-phv3E1Xl4tQOShqSte26C7Fl84EwUdZsyOuSSk9qtAGyyQs2s3jJzComh+Abf4g187lUUAvH+H26omrqia2aGg==", + "version": "5.21.3", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.21.3.tgz", + "integrity": "sha512-QyL119InA+XXEkNLNTPCXPugSvOfhwv0JOlGNzvxs0hZaiHLNvXSpudUWsOlsXGWJh8G6ckCScEkVHfX3kw/2Q==", "dev": true, "license": "MIT", "dependencies": { "graceful-fs": "^4.2.4", - "tapable": "^2.3.0" + "tapable": "^2.3.3" }, "engines": { "node": ">=10.13.0" @@ -8756,9 +8756,9 @@ } }, "node_modules/es-module-lexer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.0.0.tgz", - "integrity": "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.1.0.tgz", + "integrity": "sha512-n27zTYMjYu1aj4MjCWzSP7G9r75utsaoc8m61weK+W8JMBGGQybd43GstCXZ3WNmSFtGT9wi59qQTW6mhTR5LQ==", "dev": true, "license": "MIT" }, @@ -8853,25 +8853,25 @@ } }, "node_modules/eslint": { - "version": "9.39.3", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.3.tgz", - "integrity": "sha512-VmQ+sifHUbI/IcSopBCF/HO3YiHQx/AVd3UVyYL6weuwW+HvON9VYn5l6Zl1WZzPWXPNZrSQpxwkkZ/VuvJZzg==", + "version": "9.39.4", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.4.tgz", + "integrity": "sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.21.1", + "@eslint/config-array": "^0.21.2", "@eslint/config-helpers": "^0.4.2", "@eslint/core": "^0.17.0", - "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.39.3", + "@eslint/eslintrc": "^3.3.5", + "@eslint/js": "9.39.4", "@eslint/plugin-kit": "^0.4.1", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", - "ajv": "^6.12.4", + "ajv": "^6.14.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.6", "debug": "^4.3.2", @@ -8890,7 +8890,7 @@ "is-glob": "^4.0.0", "json-stable-stringify-without-jsonify": "^1.0.1", "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", + "minimatch": "^3.1.5", "natural-compare": "^1.4.0", "optionator": "^0.9.3" }, @@ -8930,37 +8930,6 @@ } }, "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/eslint/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/eslint/node_modules/eslint-visitor-keys": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", @@ -8986,29 +8955,6 @@ "node": ">=10.13.0" } }, - "node_modules/eslint/node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/eslint/node_modules/minimatch": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.4.tgz", - "integrity": "sha512-twmL+S8+7yIsE9wsqgzU3E8/LumN3M3QELrBZ20OdmQ9jB2JvW5oZtBEmft84k/Gs5CG9mqtWc6Y9vW+JEzGxw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/espree": { "version": "10.4.0", "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", @@ -9027,19 +8973,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, "node_modules/esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", @@ -9289,15 +9222,15 @@ } }, "node_modules/express": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.22.1.tgz", - "integrity": "sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==", + "version": "4.22.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.22.2.tgz", + "integrity": "sha512-IuL+Elrou2ZvCFHs18/CIzy2Nzvo25nZ1/D2eIZlz7c+QUayAcYoiM2BthCjs+EBHVpjYjcuLDAiCWgeIX3X1Q==", "dev": true, "license": "MIT", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "~1.20.3", + "body-parser": "~1.20.5", "content-disposition": "~0.5.4", "content-type": "~1.0.4", "cookie": "~0.7.1", @@ -9316,7 +9249,7 @@ "parseurl": "~1.3.3", "path-to-regexp": "~0.1.12", "proxy-addr": "~2.0.7", - "qs": "~6.14.0", + "qs": "~6.15.1", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", "send": "~0.19.0", @@ -9366,9 +9299,9 @@ "license": "MIT" }, "node_modules/express/node_modules/path-to-regexp": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", - "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.13.tgz", + "integrity": "sha512-A/AGNMFN3c8bOlvV9RreMdrv7jsmF9XIfDeCd87+I8RNg6s78BhJxMu69NEMHBSJFxKidViTEdruRwEk/WIKqA==", "dev": true, "license": "MIT" }, @@ -9441,9 +9374,9 @@ "license": "MIT" }, "node_modules/fast-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", - "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.2.tgz", + "integrity": "sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ==", "dev": true, "funding": [ { @@ -9494,32 +9427,6 @@ "node": ">=0.8.0" } }, - "node_modules/figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dev": true, - "license": "MIT", - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/figures/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/file-entry-cache": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", @@ -9681,16 +9588,16 @@ } }, "node_modules/flatted": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", - "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz", + "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==", "dev": true, "license": "ISC" }, "node_modules/follow-redirects": { - "version": "1.15.11", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", - "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz", + "integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==", "dev": true, "funding": [ { @@ -9762,9 +9669,9 @@ } }, "node_modules/fs-extra": { - "version": "11.3.3", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.3.tgz", - "integrity": "sha512-VWSRii4t0AFm6ixFFmLLx1t7wS1gh+ckoa84aOeapGum0h+EZd1EhEumSB+ZdDLnEPuucsVB9oB7cxJHap6Afg==", + "version": "11.3.5", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.5.tgz", + "integrity": "sha512-eKpRKAovdpZtR1WopLHxlBWvAgPny3c4gX1G5Jhwmmw4XJj0ifSD5qB5TOo8hmA0wlRKDAOAhEE1yVPgs6Fgcg==", "dev": true, "license": "MIT", "dependencies": { @@ -9974,16 +9881,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/globby/node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, "node_modules/gopd": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", @@ -10156,9 +10053,9 @@ } }, "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.3.tgz", + "integrity": "sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==", "dev": true, "license": "MIT", "dependencies": { @@ -10490,9 +10387,9 @@ } }, "node_modules/html-webpack-plugin": { - "version": "5.6.6", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.6.tgz", - "integrity": "sha512-bLjW01UTrvoWTJQL5LsMRo1SypHW80FTm12OJRSnr3v6YHNhfe+1r0MYUZJMACxnCHURVnBWRwAsWs2yPU9Ezw==", + "version": "5.6.7", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.7.tgz", + "integrity": "sha512-md+vXtdCAe60s1k6AU3dUyMJnDxUyQAwfwPKoLisvgUF1IXjtlLsk2se54+qfL9Mdm26bbwvjJybpNx48NKRLw==", "dev": true, "license": "MIT", "dependencies": { @@ -10740,9 +10637,9 @@ } }, "node_modules/ignore": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", - "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, "license": "MIT", "engines": { @@ -10844,9 +10741,9 @@ } }, "node_modules/ipaddr.js": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.3.0.tgz", - "integrity": "sha512-Zv/pA+ciVFbCSBBjGfaKUya/CcGmUHzTydLMaTwrUUEM2DIEO3iZvueGxmacvmN50fGpGVKeTXpb2LcYQxeVdg==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.4.0.tgz", + "integrity": "sha512-9VGk3HGanVE6JoZXHiCpnGy5X0jYDnN4EA4lntFPj+1vIWlFhIylq2CrrCOJH9EAhc5CYhq18F2Av2tgoAPsYQ==", "dev": true, "license": "MIT", "engines": { @@ -10913,13 +10810,13 @@ } }, "node_modules/is-core-module": { - "version": "2.16.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", - "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "version": "2.16.2", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.2.tgz", + "integrity": "sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==", "dev": true, "license": "MIT", "dependencies": { - "hasown": "^2.0.2" + "hasown": "^2.0.3" }, "engines": { "node": ">= 0.4" @@ -11062,9 +10959,9 @@ } }, "node_modules/is-network-error": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.3.0.tgz", - "integrity": "sha512-6oIwpsgRfnDiyEDLMay/GqCl3HoAtH5+RUKW29gYkL0QA+ipzpDLA16yQs7/RHCSu+BwgbJaOUqa4A99qNVQVw==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.3.2.tgz", + "integrity": "sha512-PhBY86zaxNZUuWP6h13Vu5oFe0XY6/UlKzQnYFELzGVHygP3MxmvTfYSG7GN3aIab/iWudSMgjSnG9Dq+nHrgA==", "dev": true, "license": "MIT", "engines": { @@ -11369,9 +11266,9 @@ } }, "node_modules/jsonfile": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", - "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.1.tgz", + "integrity": "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==", "dev": true, "license": "MIT", "dependencies": { @@ -11428,9 +11325,9 @@ } }, "node_modules/launch-editor": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.13.0.tgz", - "integrity": "sha512-u+9asUHMJ99lA15VRMXw5XKfySFR9dGXwgsgS14YTbUq3GITP58mIM32At90P5fZ+MUId5Yw+IwI/yKub7jnCQ==", + "version": "2.13.2", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.13.2.tgz", + "integrity": "sha512-4VVDnbOpLXy/s8rdRCSXb+zfMeFR0WlJWpET1iA9CQdlZDfwyLjUuGQzXU4VeOoey6AicSAluWan7Etga6Kcmg==", "dev": true, "license": "MIT", "dependencies": { @@ -11483,9 +11380,9 @@ "license": "MIT" }, "node_modules/loader-runner": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.1.tgz", - "integrity": "sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.2.tgz", + "integrity": "sha512-DFEqQ3ihfS9blba08cLfYf1NRAIEm+dDjic073DRDc3/JspI/8wYmtDsHwd3+4hwvdxSK7PGaElfTmm0awWJ4w==", "dev": true, "license": "MIT", "engines": { @@ -11528,9 +11425,9 @@ } }, "node_modules/lodash": { - "version": "4.17.23", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz", - "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", + "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", "dev": true, "license": "MIT" }, @@ -12096,20 +11993,20 @@ } }, "node_modules/memfs": { - "version": "4.56.10", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.56.10.tgz", - "integrity": "sha512-eLvzyrwqLHnLYalJP7YZ3wBe79MXktMdfQbvMrVD80K+NhrIukCVBvgP30zTJYEEDh9hZ/ep9z0KOdD7FSHo7w==", + "version": "4.57.2", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.57.2.tgz", + "integrity": "sha512-2nWzSsJzrukurSDna4Z0WywuScK4Id3tSKejgu74u8KCdW4uNrseKRSIDg75C6Yw5ZRqBe0F0EtMNlTbUq8bAQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@jsonjoy.com/fs-core": "4.56.10", - "@jsonjoy.com/fs-fsa": "4.56.10", - "@jsonjoy.com/fs-node": "4.56.10", - "@jsonjoy.com/fs-node-builtins": "4.56.10", - "@jsonjoy.com/fs-node-to-fsa": "4.56.10", - "@jsonjoy.com/fs-node-utils": "4.56.10", - "@jsonjoy.com/fs-print": "4.56.10", - "@jsonjoy.com/fs-snapshot": "4.56.10", + "@jsonjoy.com/fs-core": "4.57.2", + "@jsonjoy.com/fs-fsa": "4.57.2", + "@jsonjoy.com/fs-node": "4.57.2", + "@jsonjoy.com/fs-node-builtins": "4.57.2", + "@jsonjoy.com/fs-node-to-fsa": "4.57.2", + "@jsonjoy.com/fs-node-utils": "4.57.2", + "@jsonjoy.com/fs-print": "4.57.2", + "@jsonjoy.com/fs-snapshot": "4.57.2", "@jsonjoy.com/json-pack": "^1.11.0", "@jsonjoy.com/util": "^1.9.0", "glob-to-regex.js": "^1.0.1", @@ -14114,9 +14011,9 @@ } }, "node_modules/mini-css-extract-plugin": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.10.0.tgz", - "integrity": "sha512-540P2c5dYnJlyJxTaSloliZexv8rji6rY8FhQN+WF/82iHQfA23j/xtJx97L+mXOML27EqksSek/g4eK7jaL3g==", + "version": "2.10.2", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.10.2.tgz", + "integrity": "sha512-AOSS0IdEB95ayVkxn5oGzNQwqAi2J0Jb/kKm43t7H73s8+f5873g0yuj0PNvK4dO75mu5DHg4nlgp4k6Kga8eg==", "dev": true, "license": "MIT", "dependencies": { @@ -14142,19 +14039,16 @@ "license": "ISC" }, "node_modules/minimatch": { - "version": "10.2.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.3.tgz", - "integrity": "sha512-Rwi3pnapEqirPSbWbrZaa6N3nmqq4Xer/2XooiOKyV3q12ML06f7MOuc5DVH8ONZIFhwIYQ3yzPH4nt7iWHaTg==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, - "license": "BlueOak-1.0.0", + "license": "ISC", "dependencies": { - "brace-expansion": "^5.0.2" + "brace-expansion": "^1.1.7" }, "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": "*" } }, "node_modules/minimist": { @@ -14199,9 +14093,9 @@ } }, "node_modules/nanoid": { - "version": "3.3.11", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", - "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "version": "3.3.12", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.12.tgz", + "integrity": "sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==", "dev": true, "funding": [ { @@ -14269,9 +14163,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.27", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", - "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", + "version": "2.0.44", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.44.tgz", + "integrity": "sha512-5WUyunoPMsvvEhS8AxHtRzP+oA8UCkJ7YRxatWKjngndhDGLiqEVAQKWjFAiAiuL8zMRGzGSJxFnLetoa43qGQ==", "dev": true, "license": "MIT" }, @@ -14841,9 +14735,9 @@ "license": "ISC" }, "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", "dev": true, "license": "MIT", "engines": { @@ -14998,9 +14892,9 @@ } }, "node_modules/pkijs": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/pkijs/-/pkijs-3.3.3.tgz", - "integrity": "sha512-+KD8hJtqQMYoTuL1bbGOqxb4z+nZkTAwVdNtWwe8Tc2xNbEmdJYIYoc6Qt0uF55e6YW6KuTHw1DjQ18gMhzepw==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/pkijs/-/pkijs-3.4.0.tgz", + "integrity": "sha512-emEcLuomt2j03vxD54giVB4SxTjnsqkU692xZOZXHDVoYyypEm+b3jpiTcc+Cf+myooc+/Ly0z01jqeNHVgJGw==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -15016,9 +14910,9 @@ } }, "node_modules/postcss": { - "version": "8.5.6", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", - "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "version": "8.5.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.14.tgz", + "integrity": "sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg==", "dev": true, "funding": [ { @@ -16567,9 +16461,9 @@ } }, "node_modules/prettier": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.1.tgz", - "integrity": "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==", + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.3.tgz", + "integrity": "sha512-7igPTM53cGHMW8xWuVTydi2KO233VFiTNyF5hLJqpilHfmn8C8gPf+PS7dUT64YcXFbiMGZxS9pCSxL/Dxm/Jw==", "dev": true, "license": "MIT", "bin": { @@ -16583,13 +16477,13 @@ } }, "node_modules/prettier-plugin-packagejson": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/prettier-plugin-packagejson/-/prettier-plugin-packagejson-3.0.0.tgz", - "integrity": "sha512-z8/QmPSqx/ANvvQMWJSkSq1+ihBXeuwDEYdjX3ZjRJ5Ty1k7vGbFQfhzk2eDe0rwS/TNyRjWK/qnjJEStAOtDw==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/prettier-plugin-packagejson/-/prettier-plugin-packagejson-3.0.2.tgz", + "integrity": "sha512-kmoj3hEynXwoHDo8ZhmWAIjRBoQWCDUVackiWfSDWdgD0rS3LGB61T9zoVbume/cotYdCoadUh4sqViAmXvpBQ==", "dev": true, "license": "MIT", "dependencies": { - "sort-package-json": "3.6.0" + "sort-package-json": "^3.6.0" }, "peerDependencies": { "prettier": "^3" @@ -16773,9 +16667,9 @@ } }, "node_modules/qs": { - "version": "6.14.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.2.tgz", - "integrity": "sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==", + "version": "6.15.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.1.tgz", + "integrity": "sha512-6YHEFRL9mfgcAvql/XhwTvf5jKcOiiupt2FiJxHkiX1z4j7WL8J/jRHYLluORvc1XxB5rV20KoeK00gVJamspg==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -16909,25 +16803,25 @@ } }, "node_modules/react": { - "version": "19.2.4", - "resolved": "https://registry.npmjs.org/react/-/react-19.2.4.tgz", - "integrity": "sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==", + "version": "19.2.6", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.6.tgz", + "integrity": "sha512-sfWGGfavi0xr8Pg0sVsyHMAOziVYKgPLNrS7ig+ivMNb3wbCBw3KxtflsGBAwD3gYQlE/AEZsTLgToRrSCjb0Q==", "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/react-dom": { - "version": "19.2.4", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.4.tgz", - "integrity": "sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ==", + "version": "19.2.6", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.6.tgz", + "integrity": "sha512-0prMI+hvBbPjsWnxDLxlCGyM8PN6UuWjEUCYmZhO67xIV9Xasa/r/vDnq+Xyq4Lo27g8QSbO5YzARu0D1Sps3g==", "devOptional": true, "license": "MIT", "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { - "react": "^19.2.4" + "react": "^19.2.6" } }, "node_modules/react-fast-compare": { @@ -16978,9 +16872,9 @@ } }, "node_modules/react-loadable-ssr-addon-v5-slorber": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/react-loadable-ssr-addon-v5-slorber/-/react-loadable-ssr-addon-v5-slorber-1.0.1.tgz", - "integrity": "sha512-lq3Lyw1lGku8zUEJPDxsNm1AfYHBrO9Y1+olAYwpUJ2IGFBskM0DMKok97A6LWUpHm+o7IvQBOWu9MLenp9Z+A==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/react-loadable-ssr-addon-v5-slorber/-/react-loadable-ssr-addon-v5-slorber-1.0.3.tgz", + "integrity": "sha512-GXfh9VLwB5ERaCsU6RULh7tkemeX15aNh6wuMEBtfdyMa7fFG8TXrhXlx1SoEK2Ty/l6XIkzzYIQmyaWW3JgdQ==", "dev": true, "license": "MIT", "dependencies": { @@ -17239,9 +17133,9 @@ "license": "MIT" }, "node_modules/regjsparser": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.0.tgz", - "integrity": "sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==", + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.1.tgz", + "integrity": "sha512-dLsljMd9sqwRkby8zhO1gSg3PnJIBFid8f4CQj/sXx+7cKx+E7u0PKhZ+U4wmhx7EfmtvnA318oVaIkAB1lRJw==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -17443,16 +17337,6 @@ "strip-ansi": "^6.0.1" } }, - "node_modules/repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10" - } - }, "node_modules/require-from-string": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", @@ -17480,12 +17364,13 @@ "license": "MIT" }, "node_modules/resolve": { - "version": "1.22.11", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", - "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", + "version": "1.22.12", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.12.tgz", + "integrity": "sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==", "dev": true, "license": "MIT", "dependencies": { + "es-errors": "^1.3.0", "is-core-module": "^2.16.1", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" @@ -17636,6 +17521,16 @@ "dev": true, "license": "MIT" }, + "node_modules/sax": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.6.0.tgz", + "integrity": "sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=11.0.0" + } + }, "node_modules/scheduler": { "version": "0.27.0", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", @@ -17671,9 +17566,9 @@ } }, "node_modules/schema-utils/node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz", + "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==", "dev": true, "license": "MIT", "dependencies": { @@ -17751,9 +17646,9 @@ } }, "node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.0.tgz", + "integrity": "sha512-AcM7dV/5ul4EekoQ29Agm5vri8JNqRyj39o0qpX6vDF2GZrtutZl5RwgD1XnZjiTAfncsJhMI48QQH3sN87YNA==", "dev": true, "license": "ISC", "bin": { @@ -17842,52 +17737,21 @@ } }, "node_modules/serve-handler": { - "version": "6.1.6", - "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.6.tgz", - "integrity": "sha512-x5RL9Y2p5+Sh3D38Fh9i/iQ5ZK+e4xuXRd/pGbM4D13tgo/MGwbttUk8emytcr1YYzBYs+apnUngBDFYfpjPuQ==", + "version": "6.1.7", + "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.7.tgz", + "integrity": "sha512-CinAq1xWb0vR3twAv9evEU8cNWkXCb9kd5ePAHUKJBkOsUpR1wt/CvGdeca7vqumL1U5cSaeVQ6zZMxiJ3yWsg==", "dev": true, "license": "MIT", "dependencies": { "bytes": "3.0.0", "content-disposition": "0.5.2", "mime-types": "2.1.18", - "minimatch": "3.1.2", + "minimatch": "3.1.5", "path-is-inside": "1.0.2", "path-to-regexp": "3.3.0", "range-parser": "1.2.0" } }, - "node_modules/serve-handler/node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/serve-handler/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/serve-handler/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/serve-handler/node_modules/path-to-regexp": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.3.0.tgz", @@ -18113,14 +17977,14 @@ } }, "node_modules/side-channel-list": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", - "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz", + "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==", "dev": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0", - "object-inspect": "^1.13.3" + "object-inspect": "^1.13.4" }, "engines": { "node": ">= 0.4" @@ -18260,9 +18124,9 @@ "license": "MIT" }, "node_modules/sort-package-json": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/sort-package-json/-/sort-package-json-3.6.0.tgz", - "integrity": "sha512-fyJsPLhWvY7u2KsKPZn1PixbXp+1m7V8NWqU8CvgFRbMEX41Ffw1kD8n0CfJiGoaSfoAvbrqRRl/DcHO8omQOQ==", + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/sort-package-json/-/sort-package-json-3.6.1.tgz", + "integrity": "sha512-Chgejw1+10p2D0U2tB7au1lHtz6TkFnxmvZktyBCRyV0GgmF6nl1IxXxAsPtJVsUyg/fo+BfCMAVVFUVRkAHrQ==", "dev": true, "license": "MIT", "dependencies": { @@ -18441,13 +18305,13 @@ } }, "node_modules/string-width/node_modules/strip-ansi": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", - "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", "dev": true, "license": "MIT", "dependencies": { - "ansi-regex": "^6.0.1" + "ansi-regex": "^6.2.2" }, "engines": { "node": ">=12" @@ -18596,19 +18460,19 @@ } }, "node_modules/svgo": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.3.2.tgz", - "integrity": "sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.3.3.tgz", + "integrity": "sha512-+wn7I4p7YgJhHs38k2TNjy1vCfPIfLIJWR5MnCStsN8WuuTcBnRKcMHQLMM2ijxGZmDoZwNv8ipl5aTTen62ng==", "dev": true, "license": "MIT", "dependencies": { - "@trysound/sax": "0.2.0", "commander": "^7.2.0", "css-select": "^5.1.0", "css-tree": "^2.3.1", "css-what": "^6.1.0", "csso": "^5.0.5", - "picocolors": "^1.0.0" + "picocolors": "^1.0.0", + "sax": "^1.5.0" }, "bin": { "svgo": "bin/svgo" @@ -18695,9 +18559,9 @@ } }, "node_modules/tapable": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz", - "integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.3.tgz", + "integrity": "sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==", "dev": true, "license": "MIT", "engines": { @@ -18709,9 +18573,9 @@ } }, "node_modules/terser": { - "version": "5.46.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.46.0.tgz", - "integrity": "sha512-jTwoImyr/QbOWFFso3YoU3ik0jBBDJ6JTOQiy/J2YxVJdZCc+5u7skhNwiOR3FQIygFqVUPHl7qbbxtjW2K3Qg==", + "version": "5.47.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.47.1.tgz", + "integrity": "sha512-tPbLXTI6ohPASb/1YViL428oEHu6/qv1OxqYnfaonVCFHqx4+wCd95pHrQWsL5X4pl90CTyW9piSAsS2L0VoMw==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -18728,16 +18592,15 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.16", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.16.tgz", - "integrity": "sha512-h9oBFCWrq78NyWWVcSwZarJkZ01c2AyGrzs1crmHZO3QUg9D61Wu4NPjBy69n7JqylFF5y+CsUZYmYEIZ3mR+Q==", + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.6.0.tgz", + "integrity": "sha512-Eum+5ajkaOhf5KbM26osvv21kLD7BaGqQ1UA4Ami4arYwylmGUQTgHFpHDdmJod1q4QXa66p0to/FBKID+J1vA==", "dev": true, "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "^0.3.25", "jest-worker": "^27.4.5", "schema-utils": "^4.3.0", - "serialize-javascript": "^6.0.2", "terser": "^5.31.1" }, "engines": { @@ -18751,12 +18614,39 @@ "webpack": "^5.1.0" }, "peerDependenciesMeta": { + "@minify-html/node": { + "optional": true + }, "@swc/core": { "optional": true }, + "@swc/css": { + "optional": true + }, + "@swc/html": { + "optional": true + }, + "clean-css": { + "optional": true + }, + "cssnano": { + "optional": true + }, + "csso": { + "optional": true + }, "esbuild": { "optional": true }, + "html-minifier-terser": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "postcss": { + "optional": true + }, "uglify-js": { "optional": true } @@ -18801,9 +18691,9 @@ "license": "MIT" }, "node_modules/thingies": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/thingies/-/thingies-2.5.0.tgz", - "integrity": "sha512-s+2Bwztg6PhWUD7XMfeYm5qliDdSiZm7M7n8KjTkIsm3l/2lgVRc2/Gx/v+ZX8lT4FMA+i8aQvhcWylldc+ZNw==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/thingies/-/thingies-2.6.0.tgz", + "integrity": "sha512-rMHRjmlFLM1R96UYPvpmnc3LYtdFrT33JIB7L9hetGue1qAPfn1N2LJeEjxUSidu1Iku+haLZXDuEXUHNGO/lg==", "dev": true, "license": "MIT", "engines": { @@ -18818,18 +18708,25 @@ } }, "node_modules/thread-stream": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-4.0.0.tgz", - "integrity": "sha512-4iMVL6HAINXWf1ZKZjIPcz5wYaOdPhtO8ATvZ+Xqp3BTdaqtAwQkNmKORqcIo5YkQqGXq5cwfswDwMqqQNrpJA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-4.1.0.tgz", + "integrity": "sha512-Bw6h2iBDt16v6iHLChBIoVYU8CBo9GPsW8TG7h1hRVhqKhIkH6N8qkxNSmiOZTKsCLPbtWG4ViWLkU6KeKXpig==", "dev": true, "license": "MIT", "dependencies": { - "real-require": "^0.2.0" + "real-require": "^1.0.0" }, "engines": { "node": ">=20" } }, + "node_modules/thread-stream/node_modules/real-require": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/real-require/-/real-require-1.0.0.tgz", + "integrity": "sha512-P4nbQYQfePJxRSmY+v/KINxVucm4NF3p3s7pJveMTtom52FR4YGltUQLB8idDXwDDWW+eYrWDFbuzUnjoWHF7g==", + "dev": true, + "license": "MIT" + }, "node_modules/thunky": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", @@ -18852,14 +18749,14 @@ "license": "MIT" }, "node_modules/tinyglobby": { - "version": "0.2.15", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", - "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "version": "0.2.16", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.16.tgz", + "integrity": "sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==", "dev": true, "license": "MIT", "dependencies": { "fdir": "^6.5.0", - "picomatch": "^4.0.3" + "picomatch": "^4.0.4" }, "engines": { "node": ">=12.0.0" @@ -18887,9 +18784,9 @@ } }, "node_modules/tinyglobby/node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "dev": true, "license": "MIT", "engines": { @@ -18982,9 +18879,9 @@ } }, "node_modules/ts-api-utils": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.4.0.tgz", - "integrity": "sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.5.0.tgz", + "integrity": "sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==", "dev": true, "license": "MIT", "engines": { @@ -19095,9 +18992,9 @@ } }, "node_modules/typescript": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", - "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz", + "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", "dev": true, "license": "Apache-2.0", "bin": { @@ -19109,16 +19006,16 @@ } }, "node_modules/typescript-eslint": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.56.1.tgz", - "integrity": "sha512-U4lM6pjmBX7J5wk4szltF7I1cGBHXZopnAXCMXb3+fZ3B/0Z3hq3wS/CCUB2NZBNAExK92mCU2tEohWuwVMsDQ==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.59.3.tgz", + "integrity": "sha512-KgusgyDgG4LI8Ih/sWaCtZ06tckLAS5CvT5A4D1Q7bYVoAAyzwiZvE4BmwDHkhRVkvhRBepKeASoFzQetha7Fg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.56.1", - "@typescript-eslint/parser": "8.56.1", - "@typescript-eslint/typescript-estree": "8.56.1", - "@typescript-eslint/utils": "8.56.1" + "@typescript-eslint/eslint-plugin": "8.59.3", + "@typescript-eslint/parser": "8.59.3", + "@typescript-eslint/typescript-estree": "8.59.3", + "@typescript-eslint/utils": "8.59.3" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -19129,13 +19026,13 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/undici-types": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", - "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.21.0.tgz", + "integrity": "sha512-w9IMgQrz4O0YN1LtB7K5P63vhlIOvC7opSmouCJ+ZywlPAlO9gIkJ+otk6LvGpAs2wg4econaCz3TvQ9xPoyuQ==", "dev": true, "license": "MIT" }, @@ -19563,6 +19460,7 @@ "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "deprecated": "uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028).", "dev": true, "license": "MIT", "bin": { @@ -19667,9 +19565,9 @@ } }, "node_modules/webpack": { - "version": "5.105.2", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.105.2.tgz", - "integrity": "sha512-dRXm0a2qcHPUBEzVk8uph0xWSjV/xZxenQQbLwnwP7caQCYpqG1qddwlyEkIDkYn0K8tvmcrZ+bOrzoQ3HxCDw==", + "version": "5.106.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.106.2.tgz", + "integrity": "sha512-wGN3qcrBQIFmQ/c0AiOAQBvrZ5lmY8vbbMv4Mxfgzqd/B6+9pXtLo73WuS1dSGXM5QYY3hZnIbvx+K1xxe6FyA==", "dev": true, "license": "MIT", "dependencies": { @@ -19679,25 +19577,24 @@ "@webassemblyjs/ast": "^1.14.1", "@webassemblyjs/wasm-edit": "^1.14.1", "@webassemblyjs/wasm-parser": "^1.14.1", - "acorn": "^8.15.0", + "acorn": "^8.16.0", "acorn-import-phases": "^1.0.3", "browserslist": "^4.28.1", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.19.0", + "enhanced-resolve": "^5.20.0", "es-module-lexer": "^2.0.0", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.2.11", - "json-parse-even-better-errors": "^2.3.1", "loader-runner": "^4.3.1", - "mime-types": "^2.1.27", + "mime-db": "^1.54.0", "neo-async": "^2.6.2", "schema-utils": "^4.3.3", "tapable": "^2.3.0", - "terser-webpack-plugin": "^5.3.16", + "terser-webpack-plugin": "^5.3.17", "watchpack": "^2.5.1", - "webpack-sources": "^3.3.3" + "webpack-sources": "^3.3.4" }, "bin": { "webpack": "bin/webpack.js" @@ -19820,9 +19717,9 @@ } }, "node_modules/webpack-dev-server": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.2.3.tgz", - "integrity": "sha512-9Gyu2F7+bg4Vv+pjbovuYDhHX+mqdqITykfzdM9UyKqKHlsE5aAjRhR+oOEfXW5vBeu8tarzlJFIZva4ZjAdrQ==", + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.2.4.tgz", + "integrity": "sha512-GqDPGZN9bRqKBTkp4aWkobDDHMsrXKoGSdOH56smIri8qR0JG8gfL8/v/f/OZR3/OKXjG8uwJbFVhKm/FNU/UA==", "dev": true, "license": "MIT", "dependencies": { @@ -19910,9 +19807,9 @@ } }, "node_modules/webpack-dev-server/node_modules/ws": { - "version": "8.19.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.19.0.tgz", - "integrity": "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==", + "version": "8.20.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.20.1.tgz", + "integrity": "sha512-It4dO0K5v//JtTXuPkfEOaI3uUN87iYPnqo/ZzqCoG3g8uhA66QUMs/SrM0YK7/NAu+r4LMh/9dq2A7k+rHs+w==", "dev": true, "license": "MIT", "engines": { @@ -19947,9 +19844,9 @@ } }, "node_modules/webpack-sources": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.4.tgz", - "integrity": "sha512-7tP1PdV4vF+lYPnkMR0jMY5/la2ub5Fc/8VQrrU+lXkiM6C4TjVfGw7iKfyhnTQOsD+6Q/iKw0eFciziRgD58Q==", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.4.1.tgz", + "integrity": "sha512-eACpxRN02yaawnt+uUNIF7Qje6A9zArxBbcAJjK1PK3S9Ycg5jIuJ8pW4q8EMnwNZCEGltcjkRx1QzOxOkKD8A==", "dev": true, "license": "MIT", "engines": { @@ -19981,103 +19878,41 @@ } }, "node_modules/webpack/node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", "dev": true, "license": "MIT", "engines": { "node": ">= 0.6" } }, - "node_modules/webpack/node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/webpackbar": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/webpackbar/-/webpackbar-6.0.1.tgz", - "integrity": "sha512-TnErZpmuKdwWBdMoexjio3KKX6ZtoKHRVvLIU0A47R0VVBDtx3ZyOJDktgYixhoJokZTYTt1Z37OkO9pnGJa9Q==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webpackbar/-/webpackbar-7.0.0.tgz", + "integrity": "sha512-aS9soqSO2iCHgqHoCrj4LbfGQUboDCYJPSFOAchEK+9psIjNrfSWW4Y0YEz67MKURNvMmfo0ycOg9d/+OOf9/Q==", "dev": true, "license": "MIT", "dependencies": { - "ansi-escapes": "^4.3.2", - "chalk": "^4.1.2", + "ansis": "^3.2.0", "consola": "^3.2.3", - "figures": "^3.2.0", - "markdown-table": "^2.0.0", "pretty-time": "^1.1.0", - "std-env": "^3.7.0", - "wrap-ansi": "^7.0.0" + "std-env": "^3.7.0" }, "engines": { "node": ">=14.21.3" }, "peerDependencies": { + "@rspack/core": "*", "webpack": "3 || 4 || 5" - } - }, - "node_modules/webpackbar/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/webpackbar/node_modules/markdown-table": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-2.0.0.tgz", - "integrity": "sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A==", - "dev": true, - "license": "MIT", - "dependencies": { - "repeat-string": "^1.0.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/webpackbar/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/webpackbar/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } } }, "node_modules/websocket-driver": { @@ -20199,13 +20034,13 @@ } }, "node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", - "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", "dev": true, "license": "MIT", "dependencies": { - "ansi-regex": "^6.0.1" + "ansi-regex": "^6.2.2" }, "engines": { "node": ">=12" diff --git a/packages/docusaurus-config/package.json b/packages/docusaurus-config/package.json index d2e52a3874..f2f85866cd 100644 --- a/packages/docusaurus-config/package.json +++ b/packages/docusaurus-config/package.json @@ -1,6 +1,6 @@ { "name": "@goauthentik/docusaurus-config", - "version": "2.5.1", + "version": "3.0.0", "description": "authentik's Docusaurus config", "license": "MIT", "repository": { @@ -30,35 +30,33 @@ "prism-react-renderer": "^2.4.1" }, "devDependencies": { - "@docusaurus/theme-common": "3.9.2", - "@docusaurus/theme-search-algolia": "^3.9.2", - "@docusaurus/types": "^3.9.2", + "@docusaurus/theme-common": "^3.10.0", + "@docusaurus/theme-search-algolia": "^3.10.0", + "@docusaurus/types": "^3.10.0", "@eslint/js": "^9.39.3", "@goauthentik/eslint-config": "../eslint-config", "@goauthentik/prettier-config": "../prettier-config", "@goauthentik/tsconfig": "../tsconfig", - "@types/node": "^25.3.0", + "@types/node": "^25.7.0", "@types/react": "^19.2.14", "@types/react-dom": "^19.2.3", - "@typescript-eslint/eslint-plugin": "^8.56.1", - "@typescript-eslint/parser": "^8.56.1", "eslint": "^9.39.3", "pino": "^10.3.1", - "prettier": "^3.8.1", - "prettier-plugin-packagejson": "^3.0.0", - "typescript": "^5.9.3", - "typescript-eslint": "^8.56.1" + "prettier": "^3.8.3", + "prettier-plugin-packagejson": "^3.0.2", + "typescript": "^6.0.3", + "typescript-eslint": "^8.59.3" }, "peerDependencies": { - "@docusaurus/theme-common": "^3.9.2", - "@docusaurus/theme-search-algolia": "^3.9.2", - "@docusaurus/types": "^3.9.2", - "react": ">=18", - "react-dom": ">=18" + "@docusaurus/theme-common": "^3.10.1", + "@docusaurus/theme-search-algolia": "^3.10.1", + "@docusaurus/types": "^3.10.1", + "react": ">=19", + "react-dom": ">=19" }, "optionalDependencies": { - "react": ">=18", - "react-dom": ">=18" + "react": ">=19", + "react-dom": ">=19" }, "files": [ "./index.js", @@ -68,7 +66,7 @@ ], "engines": { "node": ">=24", - "npm": ">=11.10.1" + "npm": ">=11.14.1" }, "devEngines": { "runtime": { @@ -78,11 +76,22 @@ }, "packageManager": { "name": "npm", - "version": ">=11.10.1", + "version": ">=11.14.1", "onFail": "warn" } }, "prettier": "@goauthentik/prettier-config", + "overrides": { + "@typescript-eslint/eslint-plugin": { + "typescript": "$typescript" + }, + "@typescript-eslint/parser": { + "typescript": "$typescript" + }, + "typescript-eslint": { + "typescript": "$typescript" + } + }, "peerDependenciesMeta": { "@docusaurus/theme-search-algolia": { "optional": true diff --git a/packages/docusaurus-config/tsconfig.json b/packages/docusaurus-config/tsconfig.json index d0a26a13bc..af0ccaac72 100644 --- a/packages/docusaurus-config/tsconfig.json +++ b/packages/docusaurus-config/tsconfig.json @@ -1,7 +1,6 @@ { "extends": "@goauthentik/tsconfig", "compilerOptions": { - "baseUrl": ".", "checkJs": true, "emitDeclarationOnly": true } diff --git a/packages/esbuild-plugin-live-reload/.github/README.md b/packages/esbuild-plugin-live-reload/.github/README.md index e85d7b1440..3ff9e64014 100644 --- a/packages/esbuild-plugin-live-reload/.github/README.md +++ b/packages/esbuild-plugin-live-reload/.github/README.md @@ -43,7 +43,7 @@ Add the following import near the beginning of your application's entry point. ```js if (process.env.NODE_ENV === "development") { - await import("@goauthentik/esbuild-plugin-live-reload/client"); + await import("@goauthentik/esbuild-plugin-live-reload"); } ``` diff --git a/packages/esbuild-plugin-live-reload/client/ESBuildObserver.js b/packages/esbuild-plugin-live-reload/client/ESBuildObserver.js deleted file mode 100644 index 84cd9fe34f..0000000000 --- a/packages/esbuild-plugin-live-reload/client/ESBuildObserver.js +++ /dev/null @@ -1,231 +0,0 @@ -/** - * @file Client-side observer for ESBuild events. - * - * @import { Logger } from "@goauthentik/esbuild-plugin-live-reload/shared"; - * @import { Message as ESBuildMessage } from "esbuild"; - */ - -/// - -import { createLogger } from "@goauthentik/esbuild-plugin-live-reload/shared"; - -if (typeof EventSource === "undefined") { - throw new TypeError("Environment doesn't appear to have an EventSource constructor"); -} - -/** - * @template {unknown} [Data=unknown] - * @typedef {(event: MessageEvent) => void} BuildEventListener - */ - -/** - * A client-side watcher for ESBuild. - * - * Note that this should be conditionally imported in your code, so that - * ESBuild may tree-shake it out of production builds. - * - * ```ts - * if (process.env.NODE_ENV === "development") { - * await import("@goauthentik/esbuild-plugin-live-reload/client") - * .catch(() => console.warn("Failed to import watcher")) - * } - * ``` - * - * @implements {Disposable} - * @category Plugin - * runtime browser - */ -export class ESBuildObserver extends EventSource { - /** - * @type {Logger} - */ - #logger; - - /** - * Whether the watcher has a recent connection to the server. - */ - alive = true; - - /** - * The number of errors that have occurred since the watcher started. - */ - errorCount = 0; - - /** - * Whether a reload has been requested while offline. - */ - deferredReload = false; - - /** - * The last time a message was received from the server. - */ - lastUpdatedAt = Date.now(); - - /** - * Whether the browser considers itself online. - */ - online = true; - - /** - * The ID of the animation frame for the reload. - */ - #reloadFrameID = -1; - - /** - * The interval for the keep-alive check. - * @type {ReturnType | undefined} - */ - #keepAliveInterval; - - #trackActivity = () => { - this.lastUpdatedAt = Date.now(); - this.alive = true; - }; - - /** - * @type {BuildEventListener} - */ - #startListener = () => { - this.#trackActivity(); - this.#logger.info("⏰ Build started..."); - }; - - #internalErrorListener = () => { - this.errorCount += 1; - - if (this.errorCount > 100) { - clearTimeout(this.#keepAliveInterval); - - this.close(); - this.#logger.info("⛔️ Closing connection"); - } - }; - - /** - * @type {BuildEventListener} - */ - #errorListener = (event) => { - this.#trackActivity(); - - this.#logger.warn("⛔️⛔️⛔️ Build error..."); - - /** - * @type {ESBuildMessage[]} - */ - const esbuildErrorMessages = JSON.parse(event.data); - - for (const error of esbuildErrorMessages) { - this.#logger.warn(error.text); - - if (error.location) { - this.#logger.debug( - `file://${error.location.file}:${error.location.line}:${error.location.column}`, - ); - this.#logger.debug(error.location.lineText); - } - } - }; - - /** - * @type {BuildEventListener} - */ - #endListener = () => { - cancelAnimationFrame(this.#reloadFrameID); - - this.#trackActivity(); - - if (!this.online) { - this.#logger.info("🚫 Build finished while offline."); - this.deferredReload = true; - - return; - } - - this.#logger.info("🛎️ Build completed! Reloading..."); - - // We use an animation frame to keep the reload from happening before the - // event loop has a chance to process the message. - this.#reloadFrameID = requestAnimationFrame(() => { - window.location.reload(); - }); - }; - - /** - * @type {BuildEventListener} - */ - #keepAliveListener = () => { - this.#trackActivity(); - this.#logger.info("🏓 Keep-alive"); - }; - - /** - * Initialize the ESBuild observer. - * This should be called once in your application. - * - * @param {string | URL} [url] - * @returns {ESBuildObserver} - */ - static initialize = (url) => { - const esbuildObserver = new ESBuildObserver(url); - - return esbuildObserver; - }; - - /** - * - * @param {string | URL} [url] - * @param {Logger} [logger] - */ - constructor(url, logger = createLogger()) { - if (!url) { - throw new TypeError("ESBuildObserver: Cannot construct without a URL"); - } - - super(url); - - this.#logger = logger; - - this.addEventListener("esbuild:start", this.#startListener); - this.addEventListener("esbuild:end", this.#endListener); - this.addEventListener("esbuild:error", this.#errorListener); - this.addEventListener("esbuild:keep-alive", this.#keepAliveListener); - - this.addEventListener("error", this.#internalErrorListener); - - window.addEventListener("offline", () => { - this.online = false; - }); - - window.addEventListener("online", () => { - this.online = true; - - if (!this.deferredReload) return; - - this.#logger.info("🛎️ Reloading after offline build..."); - this.deferredReload = false; - - window.location.reload(); - }); - - this.#logger.info("🛎️ Listening for build changes..."); - - this.#keepAliveInterval = setInterval(() => { - const now = Date.now(); - - if (now - this.lastUpdatedAt < 10_000) return; - - this.alive = false; - this.#logger.info("👋 Waiting for build to start..."); - }, 15_000); - } - - [Symbol.dispose]() { - return this.close(); - } - - dispose() { - return this[Symbol.dispose](); - } -} - -export default ESBuildObserver; diff --git a/packages/esbuild-plugin-live-reload/client/index.js b/packages/esbuild-plugin-live-reload/client/index.js index 642c0f274e..4013bb267d 100644 --- a/packages/esbuild-plugin-live-reload/client/index.js +++ b/packages/esbuild-plugin-live-reload/client/index.js @@ -1,13 +1,242 @@ /** - * @file Entry point for the ESBuild client-side observer. + * @file Client-side observer for ESBuild events. + * + * @import { BaseLogger } from "@goauthentik/logger-js"; + * @import { Message as ESBuildMessage } from "esbuild"; */ + /// -import { ESBuildObserver } from "./ESBuildObserver.js"; -if (import.meta.env?.ESBUILD_WATCHER_URL) { - const buildObserver = new ESBuildObserver(import.meta.env.ESBUILD_WATCHER_URL); +import { createLogger } from "@goauthentik/esbuild-plugin-live-reload/shared"; - window.addEventListener("beforeunload", () => { - buildObserver.dispose(); - }); +if (typeof EventSource === "undefined") { + throw new TypeError("Environment doesn't appear to have an EventSource constructor"); } + +/** + * @template {unknown} [Data=unknown] + * @typedef {(event: MessageEvent) => void} BuildEventListener + */ + +/** + * A symbol used to dispose of resources. + * + * @type {typeof Symbol.dispose} + */ +const disposeSymbol = Symbol.dispose || Symbol.for("dispose"); + +/** + * A client-side watcher for ESBuild. + * + * Note that this should be conditionally imported in your code, so that + * ESBuild may tree-shake it out of production builds. + * + * ```ts + * if (process.env.NODE_ENV === "development") { + * await import("@goauthentik/esbuild-plugin-live-reload") + * .catch(() => console.warn("Failed to import watcher")) + * } + * ``` + * + * @implements {Disposable} + * @category Plugin + * @runtime browser + */ +export class ESBuildObserver extends EventSource { + /** + * @type {BaseLogger} + * @protected + */ + logger; + + /** + * Whether the watcher has a recent connection to the server. + */ + alive = true; + + /** + * The number of errors that have occurred since the watcher started. + */ + errorCount = 0; + + /** + * Whether a reload has been requested while offline. + */ + deferredReload = false; + + /** + * The last time a message was received from the server. + */ + lastUpdatedAt = Date.now(); + + /** + * Whether the browser considers itself online. + */ + online = true; + + /** + * The ID of the animation frame for the reload. + */ + #reloadFrameID = -1; + + /** + * The interval for the keep-alive check. + * @type {ReturnType | undefined} + */ + #keepAliveInterval; + + #trackActivity = () => { + this.lastUpdatedAt = Date.now(); + this.alive = true; + }; + + /** + * @type {BuildEventListener} + */ + #startListener = () => { + this.#trackActivity(); + this.logger.info("⏰ Build started..."); + }; + + #internalErrorListener = () => { + this.errorCount += 1; + + if (this.errorCount > 100) { + clearTimeout(this.#keepAliveInterval); + + this.close(); + this.logger.info("⛔️ Closing connection"); + } + }; + + /** + * @type {BuildEventListener} + */ + #errorListener = (event) => { + this.#trackActivity(); + + this.logger.warn("⛔️⛔️⛔️ Build error..."); + + /** + * @type {ESBuildMessage[]} + */ + const esbuildErrorMessages = JSON.parse(event.data); + + for (const error of esbuildErrorMessages) { + this.logger.warn(error.text); + + if (error.location) { + this.logger.debug( + `file://${error.location.file}:${error.location.line}:${error.location.column}`, + ); + this.logger.debug(error.location.lineText); + } + } + }; + + /** + * @type {BuildEventListener} + */ + #endListener = () => { + cancelAnimationFrame(this.#reloadFrameID); + + this.#trackActivity(); + + if (!this.online) { + this.logger.info("🚫 Build finished while offline."); + this.deferredReload = true; + + return; + } + + this.logger.info("🛎️ Build completed! Reloading..."); + + // We use an animation frame to keep the reload from happening before the + // event loop has a chance to process the message. + this.#reloadFrameID = requestAnimationFrame(() => { + location.reload(); + }); + }; + + /** + * @type {BuildEventListener} + */ + #keepAliveListener = () => { + this.#trackActivity(); + this.logger.info("🏓 Keep-alive"); + }; + + /** + * Initialize the ESBuild observer. This should only be called once. + * + * @param {string | URL} [url] + * @param {BaseLogger} [logger] + * @returns {ESBuildObserver} + */ + static initialize = (url, logger) => { + const esbuildObserver = new ESBuildObserver(url, logger); + + return esbuildObserver; + }; + + /** + * + * @param {string | URL} [url] + * @param {BaseLogger} [logger] + */ + constructor(url, logger = createLogger()) { + if (!url) { + throw new TypeError("ESBuildObserver: Cannot construct without a URL"); + } + + super(url); + + this.logger = logger; + + this.addEventListener("esbuild:start", this.#startListener); + this.addEventListener("esbuild:end", this.#endListener); + this.addEventListener("esbuild:error", this.#errorListener); + this.addEventListener("esbuild:keep-alive", this.#keepAliveListener); + + this.addEventListener("error", this.#internalErrorListener); + + addEventListener("offline", () => { + this.online = false; + }); + + addEventListener("online", () => { + this.online = true; + + if (!this.deferredReload) return; + + this.logger.info("🛎️ Reloading after offline build..."); + this.deferredReload = false; + + location.reload(); + }); + + this.logger.debug("🛎️ Listening for build changes..."); + + this.#keepAliveInterval = setInterval(() => { + const now = Date.now(); + + if (now - this.lastUpdatedAt < 10_000) return; + + this.alive = false; + }, 15_000); + + addEventListener("beforeunload", this.dispose); + } + + [disposeSymbol]() { + clearTimeout(this.#keepAliveInterval); + + return this.close(); + } + + dispose = () => { + return this[disposeSymbol](); + }; +} + +export default ESBuildObserver; diff --git a/packages/esbuild-plugin-live-reload/index.js b/packages/esbuild-plugin-live-reload/index.js index c7b185bcbb..05e73ef00d 100644 --- a/packages/esbuild-plugin-live-reload/index.js +++ b/packages/esbuild-plugin-live-reload/index.js @@ -1,6 +1,11 @@ /** - * @remarks Live reload plugin for ESBuild. + * @file Entry point for the ESBuild client-side observer. */ -export * from "./client/index.js"; -export * from "./plugin/index.js"; +/// + +import { ESBuildObserver } from "./client/index.js"; + +if (import.meta.env?.ESBUILD_WATCHER_URL) { + ESBuildObserver.initialize(import.meta.env.ESBUILD_WATCHER_URL); +} diff --git a/packages/esbuild-plugin-live-reload/package-lock.json b/packages/esbuild-plugin-live-reload/package-lock.json index 10016ab965..2d63edf98d 100644 --- a/packages/esbuild-plugin-live-reload/package-lock.json +++ b/packages/esbuild-plugin-live-reload/package-lock.json @@ -1,12 +1,12 @@ { "name": "@goauthentik/esbuild-plugin-live-reload", - "version": "1.6.1", + "version": "2.0.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@goauthentik/esbuild-plugin-live-reload", - "version": "1.6.1", + "version": "2.0.1", "license": "MIT", "dependencies": { "find-free-ports": "^3.1.1" @@ -14,32 +14,37 @@ "devDependencies": { "@eslint/js": "^9.39.3", "@goauthentik/eslint-config": "../eslint-config", + "@goauthentik/logger-js": "../logger-js", "@goauthentik/prettier-config": "../prettier-config", "@goauthentik/tsconfig": "../tsconfig", - "@types/node": "^25.3.0", - "@typescript-eslint/eslint-plugin": "^8.56.1", - "@typescript-eslint/parser": "^8.56.1", - "esbuild": "^0.27.3", + "@types/node": "^25.7.0", + "esbuild": "^0.27.4", "eslint": "^9.39.3", "pino": "^10.3.1", - "prettier": "^3.8.1", - "prettier-plugin-packagejson": "^3.0.0", - "typedoc": "^0.28.15", - "typedoc-plugin-markdown": "^4.9.0", - "typescript": "^5.9.3", - "typescript-eslint": "^8.56.1" + "prettier": "^3.8.3", + "prettier-plugin-packagejson": "^3.0.2", + "typedoc": "^0.28.18", + "typedoc-plugin-markdown": "^4.11.0", + "typescript": "^6.0.3", + "typescript-eslint": "^8.59.3" }, "engines": { "node": ">=24", - "npm": ">=11.10.1" + "npm": ">=11.14.1" }, "peerDependencies": { - "esbuild": "^0.27.3" + "@goauthentik/logger-js": "^1.0.1", + "esbuild": "^0.27.4" + }, + "peerDependenciesMeta": { + "@goauthentik/logger-js": { + "optional": true + } } }, "../eslint-config": { "name": "@goauthentik/eslint-config", - "version": "1.3.0", + "version": "2.0.0", "dev": true, "license": "MIT", "dependencies": { @@ -47,26 +52,26 @@ "eslint-plugin-import": "^2.32.0", "eslint-plugin-lit": "^2.2.1", "eslint-plugin-react": "^7.37.5", - "eslint-plugin-react-hooks": "^7.0.1", + "eslint-plugin-react-hooks": "^7.1.1", "eslint-plugin-wc": "^3.1.0" }, "devDependencies": { "@goauthentik/prettier-config": "../prettier-config", "@goauthentik/tsconfig": "../tsconfig", "@types/eslint": "^9.6.1", - "@types/node": "^25.3.0", - "typescript": "^5.9.3", - "typescript-eslint": "^8.56.1" + "@types/node": "^25.7.0", + "typescript": "^6.0.3", + "typescript-eslint": "^8.59.3" }, "engines": { "node": ">=24", - "npm": ">=11.10.1" + "npm": ">=11.14.1" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0", - "typescript": "^5.9.3", - "typescript-eslint": "^8.56.1" + "typescript": "^6.0.3 || ^7.0.0", + "typescript-eslint": "^8.59.3" }, "peerDependenciesMeta": { "react": { @@ -77,9 +82,44 @@ } } }, + "../logger-js": { + "name": "@goauthentik/logger-js", + "version": "2.0.0", + "dev": true, + "license": "MIT", + "devDependencies": { + "@eslint/js": "^9.39.3", + "@goauthentik/prettier-config": "../prettier-config", + "@goauthentik/tsconfig": "../tsconfig", + "@types/node": "^25.7.0", + "eslint": "^9.39.3", + "pino": "^10.3.1", + "pino-pretty": "^13.1.2", + "prettier": "^3.8.3", + "prettier-plugin-packagejson": "^3.0.2", + "typescript": "^6.0.3", + "typescript-eslint": "^8.59.3" + }, + "engines": { + "node": ">=24", + "npm": ">=11.14.1" + }, + "peerDependencies": { + "pino": "^10.3.1", + "pino-pretty": "^13.1.2" + }, + "peerDependenciesMeta": { + "pino": { + "optional": true + }, + "pino-pretty": { + "optional": true + } + } + }, "../prettier-config": { "name": "@goauthentik/prettier-config", - "version": "3.4.3", + "version": "4.0.0", "dev": true, "license": "MIT", "dependencies": { @@ -89,38 +129,36 @@ "@eslint/js": "^9.39.3", "@goauthentik/eslint-config": "../eslint-config", "@goauthentik/tsconfig": "../tsconfig", - "@types/node": "^25.0.0", - "@typescript-eslint/eslint-plugin": "^8.49.0", - "@typescript-eslint/parser": "^8.49.0", + "@types/node": "^25.7.0", "eslint": "^9.39.3", - "prettier": "^3.8.1", - "prettier-plugin-packagejson": "^3.0.0", - "typescript": "^5.9.3", - "typescript-eslint": "^8.56.1" + "prettier": "^3.8.3", + "prettier-plugin-packagejson": "^3.0.2", + "typescript": "^6.0.3", + "typescript-eslint": "^8.59.3" }, "engines": { "node": ">=24", - "npm": ">=11.10.1" + "npm": ">=11.14.1" }, "peerDependencies": { - "prettier": "^3.8.1", - "prettier-plugin-packagejson": "^3.0.0" + "prettier": "^3.8.3", + "prettier-plugin-packagejson": "^3.0.2" } }, "../tsconfig": { "name": "@goauthentik/tsconfig", - "version": "1.0.7", + "version": "1.0.9", "dev": true, "license": "MIT", "engines": { "node": ">=24", - "npm": ">=11.10.1" + "npm": ">=11.14.1" } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.3.tgz", - "integrity": "sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.4.tgz", + "integrity": "sha512-cQPwL2mp2nSmHHJlCyoXgHGhbEPMrEEU5xhkcy3Hs/O7nGZqEpZ2sUtLaL9MORLtDfRvVl2/3PAuEkYZH0Ty8Q==", "cpu": [ "ppc64" ], @@ -135,9 +173,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.3.tgz", - "integrity": "sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.4.tgz", + "integrity": "sha512-X9bUgvxiC8CHAGKYufLIHGXPJWnr0OCdR0anD2e21vdvgCI8lIfqFbnoeOz7lBjdrAGUhqLZLcQo6MLhTO2DKQ==", "cpu": [ "arm" ], @@ -152,9 +190,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.3.tgz", - "integrity": "sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.4.tgz", + "integrity": "sha512-gdLscB7v75wRfu7QSm/zg6Rx29VLdy9eTr2t44sfTW7CxwAtQghZ4ZnqHk3/ogz7xao0QAgrkradbBzcqFPasw==", "cpu": [ "arm64" ], @@ -169,9 +207,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.3.tgz", - "integrity": "sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.4.tgz", + "integrity": "sha512-PzPFnBNVF292sfpfhiyiXCGSn9HZg5BcAz+ivBuSsl6Rk4ga1oEXAamhOXRFyMcjwr2DVtm40G65N3GLeH1Lvw==", "cpu": [ "x64" ], @@ -186,9 +224,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.3.tgz", - "integrity": "sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.4.tgz", + "integrity": "sha512-b7xaGIwdJlht8ZFCvMkpDN6uiSmnxxK56N2GDTMYPr2/gzvfdQN8rTfBsvVKmIVY/X7EM+/hJKEIbbHs9oA4tQ==", "cpu": [ "arm64" ], @@ -203,9 +241,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.3.tgz", - "integrity": "sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.4.tgz", + "integrity": "sha512-sR+OiKLwd15nmCdqpXMnuJ9W2kpy0KigzqScqHI3Hqwr7IXxBp3Yva+yJwoqh7rE8V77tdoheRYataNKL4QrPw==", "cpu": [ "x64" ], @@ -220,9 +258,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.3.tgz", - "integrity": "sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.4.tgz", + "integrity": "sha512-jnfpKe+p79tCnm4GVav68A7tUFeKQwQyLgESwEAUzyxk/TJr4QdGog9sqWNcUbr/bZt/O/HXouspuQDd9JxFSw==", "cpu": [ "arm64" ], @@ -237,9 +275,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.3.tgz", - "integrity": "sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.4.tgz", + "integrity": "sha512-2kb4ceA/CpfUrIcTUl1wrP/9ad9Atrp5J94Lq69w7UwOMolPIGrfLSvAKJp0RTvkPPyn6CIWrNy13kyLikZRZQ==", "cpu": [ "x64" ], @@ -254,9 +292,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.3.tgz", - "integrity": "sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.4.tgz", + "integrity": "sha512-aBYgcIxX/wd5n2ys0yESGeYMGF+pv6g0DhZr3G1ZG4jMfruU9Tl1i2Z+Wnj9/KjGz1lTLCcorqE2viePZqj4Eg==", "cpu": [ "arm" ], @@ -271,9 +309,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.3.tgz", - "integrity": "sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.4.tgz", + "integrity": "sha512-7nQOttdzVGth1iz57kxg9uCz57dxQLHWxopL6mYuYthohPKEK0vU0C3O21CcBK6KDlkYVcnDXY099HcCDXd9dA==", "cpu": [ "arm64" ], @@ -288,9 +326,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.3.tgz", - "integrity": "sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.4.tgz", + "integrity": "sha512-oPtixtAIzgvzYcKBQM/qZ3R+9TEUd1aNJQu0HhGyqtx6oS7qTpvjheIWBbes4+qu1bNlo2V4cbkISr8q6gRBFA==", "cpu": [ "ia32" ], @@ -305,9 +343,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.3.tgz", - "integrity": "sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.4.tgz", + "integrity": "sha512-8mL/vh8qeCoRcFH2nM8wm5uJP+ZcVYGGayMavi8GmRJjuI3g1v6Z7Ni0JJKAJW+m0EtUuARb6Lmp4hMjzCBWzA==", "cpu": [ "loong64" ], @@ -322,9 +360,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.3.tgz", - "integrity": "sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.4.tgz", + "integrity": "sha512-1RdrWFFiiLIW7LQq9Q2NES+HiD4NyT8Itj9AUeCl0IVCA459WnPhREKgwrpaIfTOe+/2rdntisegiPWn/r/aAw==", "cpu": [ "mips64el" ], @@ -339,9 +377,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.3.tgz", - "integrity": "sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.4.tgz", + "integrity": "sha512-tLCwNG47l3sd9lpfyx9LAGEGItCUeRCWeAx6x2Jmbav65nAwoPXfewtAdtbtit/pJFLUWOhpv0FpS6GQAmPrHA==", "cpu": [ "ppc64" ], @@ -356,9 +394,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.3.tgz", - "integrity": "sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.4.tgz", + "integrity": "sha512-BnASypppbUWyqjd1KIpU4AUBiIhVr6YlHx/cnPgqEkNoVOhHg+YiSVxM1RLfiy4t9cAulbRGTNCKOcqHrEQLIw==", "cpu": [ "riscv64" ], @@ -373,9 +411,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.3.tgz", - "integrity": "sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.4.tgz", + "integrity": "sha512-+eUqgb/Z7vxVLezG8bVB9SfBie89gMueS+I0xYh2tJdw3vqA/0ImZJ2ROeWwVJN59ihBeZ7Tu92dF/5dy5FttA==", "cpu": [ "s390x" ], @@ -390,9 +428,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.3.tgz", - "integrity": "sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.4.tgz", + "integrity": "sha512-S5qOXrKV8BQEzJPVxAwnryi2+Iq5pB40gTEIT69BQONqR7JH1EPIcQ/Uiv9mCnn05jff9umq/5nqzxlqTOg9NA==", "cpu": [ "x64" ], @@ -407,9 +445,9 @@ } }, "node_modules/@esbuild/netbsd-arm64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.3.tgz", - "integrity": "sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.4.tgz", + "integrity": "sha512-xHT8X4sb0GS8qTqiwzHqpY00C95DPAq7nAwX35Ie/s+LO9830hrMd3oX0ZMKLvy7vsonee73x0lmcdOVXFzd6Q==", "cpu": [ "arm64" ], @@ -424,9 +462,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.3.tgz", - "integrity": "sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.4.tgz", + "integrity": "sha512-RugOvOdXfdyi5Tyv40kgQnI0byv66BFgAqjdgtAKqHoZTbTF2QqfQrFwa7cHEORJf6X2ht+l9ABLMP0dnKYsgg==", "cpu": [ "x64" ], @@ -441,9 +479,9 @@ } }, "node_modules/@esbuild/openbsd-arm64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.3.tgz", - "integrity": "sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.4.tgz", + "integrity": "sha512-2MyL3IAaTX+1/qP0O1SwskwcwCoOI4kV2IBX1xYnDDqthmq5ArrW94qSIKCAuRraMgPOmG0RDTA74mzYNQA9ow==", "cpu": [ "arm64" ], @@ -458,9 +496,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.3.tgz", - "integrity": "sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.4.tgz", + "integrity": "sha512-u8fg/jQ5aQDfsnIV6+KwLOf1CmJnfu1ShpwqdwC0uA7ZPwFws55Ngc12vBdeUdnuWoQYx/SOQLGDcdlfXhYmXQ==", "cpu": [ "x64" ], @@ -475,9 +513,9 @@ } }, "node_modules/@esbuild/openharmony-arm64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.3.tgz", - "integrity": "sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.4.tgz", + "integrity": "sha512-JkTZrl6VbyO8lDQO3yv26nNr2RM2yZzNrNHEsj9bm6dOwwu9OYN28CjzZkH57bh4w0I2F7IodpQvUAEd1mbWXg==", "cpu": [ "arm64" ], @@ -492,9 +530,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.3.tgz", - "integrity": "sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.4.tgz", + "integrity": "sha512-/gOzgaewZJfeJTlsWhvUEmUG4tWEY2Spp5M20INYRg2ZKl9QPO3QEEgPeRtLjEWSW8FilRNacPOg8R1uaYkA6g==", "cpu": [ "x64" ], @@ -509,9 +547,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.3.tgz", - "integrity": "sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.4.tgz", + "integrity": "sha512-Z9SExBg2y32smoDQdf1HRwHRt6vAHLXcxD2uGgO/v2jK7Y718Ix4ndsbNMU/+1Qiem9OiOdaqitioZwxivhXYg==", "cpu": [ "arm64" ], @@ -526,9 +564,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.3.tgz", - "integrity": "sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.4.tgz", + "integrity": "sha512-DAyGLS0Jz5G5iixEbMHi5KdiApqHBWMGzTtMiJ72ZOLhbu/bzxgAe8Ue8CTS3n3HbIUHQz/L51yMdGMeoxXNJw==", "cpu": [ "ia32" ], @@ -543,9 +581,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.3.tgz", - "integrity": "sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.4.tgz", + "integrity": "sha512-+knoa0BDoeXgkNvvV1vvbZX4+hizelrkwmGJBdT17t8FNPwG2lKemmuMZlmaNQ3ws3DKKCxpb4zRZEIp3UxFCg==", "cpu": [ "x64" ], @@ -578,6 +616,19 @@ "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/@eslint-community/regexpp": { "version": "4.12.2", "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", @@ -589,51 +640,20 @@ } }, "node_modules/@eslint/config-array": { - "version": "0.21.1", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.1.tgz", - "integrity": "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==", + "version": "0.21.2", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.2.tgz", + "integrity": "sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw==", "dev": true, "license": "Apache-2.0", "dependencies": { "@eslint/object-schema": "^2.1.7", "debug": "^4.3.1", - "minimatch": "^3.1.2" + "minimatch": "^3.1.5" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@eslint/config-array/node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@eslint/config-array/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/@eslint/config-array/node_modules/minimatch": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.4.tgz", - "integrity": "sha512-twmL+S8+7yIsE9wsqgzU3E8/LumN3M3QELrBZ20OdmQ9jB2JvW5oZtBEmft84k/Gs5CG9mqtWc6Y9vW+JEzGxw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/@eslint/config-helpers": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz", @@ -661,9 +681,9 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.4.tgz", - "integrity": "sha512-4h4MVF8pmBsncB60r0wSJiIeUKTSD4m7FmTFThG8RHlsg9ajqckLm9OraguFGZE4vVdpiI1Q4+hFnisopmG6gQ==", + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.5.tgz", + "integrity": "sha512-4IlJx0X0qftVsN5E+/vGujTRIFtwuLbNsVUe7TO6zYPDR1O6nFwvwhIKEKSrl6dZchmYBITazxKoUYOjdtjlRg==", "dev": true, "license": "MIT", "dependencies": { @@ -674,7 +694,7 @@ "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.1", - "minimatch": "^3.1.3", + "minimatch": "^3.1.5", "strip-json-comments": "^3.1.1" }, "engines": { @@ -684,51 +704,10 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/@eslint/eslintrc/node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/@eslint/eslintrc/node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/@eslint/eslintrc/node_modules/minimatch": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.4.tgz", - "integrity": "sha512-twmL+S8+7yIsE9wsqgzU3E8/LumN3M3QELrBZ20OdmQ9jB2JvW5oZtBEmft84k/Gs5CG9mqtWc6Y9vW+JEzGxw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/@eslint/js": { - "version": "9.39.3", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.3.tgz", - "integrity": "sha512-1B1VkCq6FuUNlQvlBYb+1jDu/gV297TIs/OeiaSR9l1H27SVW55ONE1e1Vp16NqP683+xEGzxYtv4XCiDPaQiw==", + "version": "9.39.4", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.4.tgz", + "integrity": "sha512-nE7DEIchvtiFTwBw4Lfbu59PG+kCofhjsKaCWzxTpt4lfRjRMqG6uMBzKXuEcyXhOHoUp9riAm7/aWYGhXZ9cw==", "dev": true, "license": "MIT", "engines": { @@ -763,16 +742,16 @@ } }, "node_modules/@gerrit0/mini-shiki": { - "version": "3.22.0", - "resolved": "https://registry.npmjs.org/@gerrit0/mini-shiki/-/mini-shiki-3.22.0.tgz", - "integrity": "sha512-jMpciqEVUBKE1QwU64S4saNMzpsSza6diNCk4MWAeCxO2+LFi2FIFmL2S0VDLzEJCxuvCbU783xi8Hp/gkM5CQ==", + "version": "3.23.0", + "resolved": "https://registry.npmjs.org/@gerrit0/mini-shiki/-/mini-shiki-3.23.0.tgz", + "integrity": "sha512-bEMORlG0cqdjVyCEuU0cDQbORWX+kYCeo0kV1lbxF5bt4r7SID2l9bqsxJEM0zndaxpOUT7riCyIVEuqq/Ynxg==", "dev": true, "license": "MIT", "dependencies": { - "@shikijs/engine-oniguruma": "^3.22.0", - "@shikijs/langs": "^3.22.0", - "@shikijs/themes": "^3.22.0", - "@shikijs/types": "^3.22.0", + "@shikijs/engine-oniguruma": "^3.23.0", + "@shikijs/langs": "^3.23.0", + "@shikijs/themes": "^3.23.0", + "@shikijs/types": "^3.23.0", "@shikijs/vscode-textmate": "^10.0.2" } }, @@ -780,6 +759,10 @@ "resolved": "../eslint-config", "link": true }, + "node_modules/@goauthentik/logger-js": { + "resolved": "../logger-js", + "link": true + }, "node_modules/@goauthentik/prettier-config": { "resolved": "../prettier-config", "link": true @@ -848,40 +831,40 @@ "license": "MIT" }, "node_modules/@shikijs/engine-oniguruma": { - "version": "3.22.0", - "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-3.22.0.tgz", - "integrity": "sha512-DyXsOG0vGtNtl7ygvabHd7Mt5EY8gCNqR9Y7Lpbbd/PbJvgWrqaKzH1JW6H6qFkuUa8aCxoiYVv8/YfFljiQxA==", + "version": "3.23.0", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-3.23.0.tgz", + "integrity": "sha512-1nWINwKXxKKLqPibT5f4pAFLej9oZzQTsby8942OTlsJzOBZ0MWKiwzMsd+jhzu8YPCHAswGnnN1YtQfirL35g==", "dev": true, "license": "MIT", "dependencies": { - "@shikijs/types": "3.22.0", + "@shikijs/types": "3.23.0", "@shikijs/vscode-textmate": "^10.0.2" } }, "node_modules/@shikijs/langs": { - "version": "3.22.0", - "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-3.22.0.tgz", - "integrity": "sha512-x/42TfhWmp6H00T6uwVrdTJGKgNdFbrEdhaDwSR5fd5zhQ1Q46bHq9EO61SCEWJR0HY7z2HNDMaBZp8JRmKiIA==", + "version": "3.23.0", + "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-3.23.0.tgz", + "integrity": "sha512-2Ep4W3Re5aB1/62RSYQInK9mM3HsLeB91cHqznAJMuylqjzNVAVCMnNWRHFtcNHXsoNRayP9z1qj4Sq3nMqYXg==", "dev": true, "license": "MIT", "dependencies": { - "@shikijs/types": "3.22.0" + "@shikijs/types": "3.23.0" } }, "node_modules/@shikijs/themes": { - "version": "3.22.0", - "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-3.22.0.tgz", - "integrity": "sha512-o+tlOKqsr6FE4+mYJG08tfCFDS+3CG20HbldXeVoyP+cYSUxDhrFf3GPjE60U55iOkkjbpY2uC3It/eeja35/g==", + "version": "3.23.0", + "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-3.23.0.tgz", + "integrity": "sha512-5qySYa1ZgAT18HR/ypENL9cUSGOeI2x+4IvYJu4JgVJdizn6kG4ia5Q1jDEOi7gTbN4RbuYtmHh0W3eccOrjMA==", "dev": true, "license": "MIT", "dependencies": { - "@shikijs/types": "3.22.0" + "@shikijs/types": "3.23.0" } }, "node_modules/@shikijs/types": { - "version": "3.22.0", - "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-3.22.0.tgz", - "integrity": "sha512-491iAekgKDBFE67z70Ok5a8KBMsQ2IJwOWw3us/7ffQkIBCyOQfm/aNwVMBUriP02QshIfgHCBSIYAl3u2eWjg==", + "version": "3.23.0", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-3.23.0.tgz", + "integrity": "sha512-3JZ5HXOZfYjsYSk0yPwBrkupyYSLpAE26Qc0HLghhZNGTZg/SKxXIIgoxOpmmeQP0RRSDJTk1/vPfw9tbw+jSQ==", "dev": true, "license": "MIT", "dependencies": { @@ -921,13 +904,13 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.3.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.0.tgz", - "integrity": "sha512-4K3bqJpXpqfg2XKGK9bpDTc6xO/xoUP/RBWS7AtRMug6zZFaRekiLzjVtAoZMquxoAbzBvy5nxQ7veS5eYzf8A==", + "version": "25.7.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.7.0.tgz", + "integrity": "sha512-z+pdZyxE+RTQE9AcboAZCb4otwcrvgHD+GlBpPgn0emDVt0ohrTMhAwlr2Wd9nZ+nihhYFxO2pThz3C5qSu2Eg==", "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~7.18.0" + "undici-types": "~7.21.0" } }, "node_modules/@types/unist": { @@ -938,20 +921,20 @@ "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.56.1.tgz", - "integrity": "sha512-Jz9ZztpB37dNC+HU2HI28Bs9QXpzCz+y/twHOwhyrIRdbuVDxSytJNDl6z/aAKlaRIwC7y8wJdkBv7FxYGgi0A==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.59.3.tgz", + "integrity": "sha512-PwFvSKsXGShKGW6n5bZOhGHEcCZXM8HofLK9fNsEwZXzFRjoY+XT1Vsf1zgyXdwTr0ZYz1/2tkZ0DBTT9jZjhw==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.12.2", - "@typescript-eslint/scope-manager": "8.56.1", - "@typescript-eslint/type-utils": "8.56.1", - "@typescript-eslint/utils": "8.56.1", - "@typescript-eslint/visitor-keys": "8.56.1", + "@typescript-eslint/scope-manager": "8.59.3", + "@typescript-eslint/type-utils": "8.59.3", + "@typescript-eslint/utils": "8.59.3", + "@typescript-eslint/visitor-keys": "8.59.3", "ignore": "^7.0.5", "natural-compare": "^1.4.0", - "ts-api-utils": "^2.4.0" + "ts-api-utils": "^2.5.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -961,22 +944,32 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^8.56.1", + "@typescript-eslint/parser": "^8.59.3", "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" } }, "node_modules/@typescript-eslint/parser": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.56.1.tgz", - "integrity": "sha512-klQbnPAAiGYFyI02+znpBRLyjL4/BrBd0nyWkdC0s/6xFLkXYQ8OoRrSkqacS1ddVxf/LDyODIKbQ5TgKAf/Fg==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.59.3.tgz", + "integrity": "sha512-HPwA+hVkfcriajbNvTmZv4VRauibay+cWArYUYq7u7W7PmGShMxbPxLvrwDme55a6d5alG3nrYfhyJ/G28XlLg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.56.1", - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/typescript-estree": "8.56.1", - "@typescript-eslint/visitor-keys": "8.56.1", + "@typescript-eslint/scope-manager": "8.59.3", + "@typescript-eslint/types": "8.59.3", + "@typescript-eslint/typescript-estree": "8.59.3", + "@typescript-eslint/visitor-keys": "8.59.3", "debug": "^4.4.3" }, "engines": { @@ -988,18 +981,18 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/project-service": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.56.1.tgz", - "integrity": "sha512-TAdqQTzHNNvlVFfR+hu2PDJrURiwKsUvxFn1M0h95BB8ah5jejas08jUWG4dBA68jDMI988IvtfdAI53JzEHOQ==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.59.3.tgz", + "integrity": "sha512-ECiUWa/KYRGDFUqTNehaRgzDshnJfkTABJxVemHk4ko22gcr0ukloKjWvyQ64g8YCV/UI47kN1dbmjf/GaQYng==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.56.1", - "@typescript-eslint/types": "^8.56.1", + "@typescript-eslint/tsconfig-utils": "^8.59.3", + "@typescript-eslint/types": "^8.59.3", "debug": "^4.4.3" }, "engines": { @@ -1010,18 +1003,18 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.56.1.tgz", - "integrity": "sha512-YAi4VDKcIZp0O4tz/haYKhmIDZFEUPOreKbfdAN3SzUDMcPhJ8QI99xQXqX+HoUVq8cs85eRKnD+rne2UAnj2w==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.59.3.tgz", + "integrity": "sha512-t2LvZnoEfzKtnPjgeEu41xw5gxq9mQVfYy4OoZ4Vlt0sk3JwxmhCca/AR7DwOiHrjWgjAj6as4AhRLKSDfvZIA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/visitor-keys": "8.56.1" + "@typescript-eslint/types": "8.59.3", + "@typescript-eslint/visitor-keys": "8.59.3" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -1032,9 +1025,9 @@ } }, "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.56.1.tgz", - "integrity": "sha512-qOtCYzKEeyr3aR9f28mPJqBty7+DBqsdd63eO0yyDwc6vgThj2UjWfJIcsFeSucYydqcuudMOprZ+x1SpF3ZuQ==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.59.3.tgz", + "integrity": "sha512-PcIJHjmaREXLgIAIzLnSY9VucEzz8FKXsRgFa1DmdGCK/5tJpW03TKJF01Q6VZd1lLdz2sIKPWaDUZN9dp//dw==", "dev": true, "license": "MIT", "engines": { @@ -1045,21 +1038,21 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.56.1.tgz", - "integrity": "sha512-yB/7dxi7MgTtGhZdaHCemf7PuwrHMenHjmzgUW1aJpO+bBU43OycnM3Wn+DdvDO/8zzA9HlhaJ0AUGuvri4oGg==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.59.3.tgz", + "integrity": "sha512-g71d8QD8UaiHGvrJwyIS1hCX5r63w6Jll+4VEYhEAHXTDIqX1JgxhTAbEHtKntL9kuc4jRo7/GWw5xfCepSccQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/typescript-estree": "8.56.1", - "@typescript-eslint/utils": "8.56.1", + "@typescript-eslint/types": "8.59.3", + "@typescript-eslint/typescript-estree": "8.59.3", + "@typescript-eslint/utils": "8.59.3", "debug": "^4.4.3", - "ts-api-utils": "^2.4.0" + "ts-api-utils": "^2.5.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -1070,13 +1063,13 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/types": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.56.1.tgz", - "integrity": "sha512-dbMkdIUkIkchgGDIv7KLUpa0Mda4IYjo4IAMJUZ+3xNoUXxMsk9YtKpTHSChRS85o+H9ftm51gsK1dZReY9CVw==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.59.3.tgz", + "integrity": "sha512-ePFoH0g4ludssdRFqqDxQePCxU4WQyRa9+XVwjm7yLn0FKhMeoetC+qBEEI1Eyb1pGSDveTIT09Bvw2WhlGayg==", "dev": true, "license": "MIT", "engines": { @@ -1088,21 +1081,21 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.56.1.tgz", - "integrity": "sha512-qzUL1qgalIvKWAf9C1HpvBjif+Vm6rcT5wZd4VoMb9+Km3iS3Cv9DY6dMRMDtPnwRAFyAi7YXJpTIEXLvdfPxg==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.59.3.tgz", + "integrity": "sha512-CbRjVRAf7Lr9Kr8RopKcbY45p2VfmmHrm0ygOCYFi7oU8q19m0Fs/6iHS7kNOmwpp+ob07ZVcAqlxUod9lYdmg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.56.1", - "@typescript-eslint/tsconfig-utils": "8.56.1", - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/visitor-keys": "8.56.1", + "@typescript-eslint/project-service": "8.59.3", + "@typescript-eslint/tsconfig-utils": "8.59.3", + "@typescript-eslint/types": "8.59.3", + "@typescript-eslint/visitor-keys": "8.59.3", "debug": "^4.4.3", "minimatch": "^10.2.2", "semver": "^7.7.3", "tinyglobby": "^0.2.15", - "ts-api-utils": "^2.4.0" + "ts-api-utils": "^2.5.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -1112,20 +1105,59 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.6.tgz", + "integrity": "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", + "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.5" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/@typescript-eslint/utils": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.56.1.tgz", - "integrity": "sha512-HPAVNIME3tABJ61siYlHzSWCGtOoeP2RTIaHXFMPqjrQKCGB9OgUVdiNgH7TJS2JNIQ5qQ4RsAUDuGaGme/KOA==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.59.3.tgz", + "integrity": "sha512-JAvT14goBzRzzzZyqq3P9BLArIxTtQURUtFgQ/V7FO+eU+Gg6ES+5ymOPP1wRxXcxAYeivCk4uS3jCKWI1K8Zg==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.9.1", - "@typescript-eslint/scope-manager": "8.56.1", - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/typescript-estree": "8.56.1" + "@typescript-eslint/scope-manager": "8.59.3", + "@typescript-eslint/types": "8.59.3", + "@typescript-eslint/typescript-estree": "8.59.3" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -1136,17 +1168,17 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.56.1.tgz", - "integrity": "sha512-KiROIzYdEV85YygXw6BI/Dx4fnBlFQu6Mq4QE4MOH9fFnhohw6wX/OAvDY2/C+ut0I3RSPKenvZJIVYqJNkhEw==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.59.3.tgz", + "integrity": "sha512-f1UQF7ggd42YiwI5wGrRaPsa+P0CINBlrkLPmGfpq/u/I/oVtecoEIfFR9ag/oa1sLOsRNZ6xehf6qMZhQGBDg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.56.1", + "@typescript-eslint/types": "8.59.3", "eslint-visitor-keys": "^5.0.0" }, "engines": { @@ -1244,26 +1276,21 @@ } }, "node_modules/balanced-match": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true, - "license": "MIT", - "engines": { - "node": "18 || 20 || >=22" - } + "license": "MIT" }, "node_modules/brace-expansion": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.3.tgz", - "integrity": "sha512-fy6KJm2RawA5RcHkLa1z/ScpBeA762UF9KmZQxwIbDtRJrgLzM10depAiEQ+CXYcoiqW1/m96OAAoke2nE9EeA==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^4.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, "node_modules/callsites": { @@ -1400,9 +1427,9 @@ } }, "node_modules/esbuild": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.3.tgz", - "integrity": "sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.4.tgz", + "integrity": "sha512-Rq4vbHnYkK5fws5NF7MYTU68FPRE1ajX7heQ/8QXXWqNgqqJ/GkmmyxIzUnf2Sr/bakf8l54716CcMGHYhMrrQ==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -1413,32 +1440,32 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.27.3", - "@esbuild/android-arm": "0.27.3", - "@esbuild/android-arm64": "0.27.3", - "@esbuild/android-x64": "0.27.3", - "@esbuild/darwin-arm64": "0.27.3", - "@esbuild/darwin-x64": "0.27.3", - "@esbuild/freebsd-arm64": "0.27.3", - "@esbuild/freebsd-x64": "0.27.3", - "@esbuild/linux-arm": "0.27.3", - "@esbuild/linux-arm64": "0.27.3", - "@esbuild/linux-ia32": "0.27.3", - "@esbuild/linux-loong64": "0.27.3", - "@esbuild/linux-mips64el": "0.27.3", - "@esbuild/linux-ppc64": "0.27.3", - "@esbuild/linux-riscv64": "0.27.3", - "@esbuild/linux-s390x": "0.27.3", - "@esbuild/linux-x64": "0.27.3", - "@esbuild/netbsd-arm64": "0.27.3", - "@esbuild/netbsd-x64": "0.27.3", - "@esbuild/openbsd-arm64": "0.27.3", - "@esbuild/openbsd-x64": "0.27.3", - "@esbuild/openharmony-arm64": "0.27.3", - "@esbuild/sunos-x64": "0.27.3", - "@esbuild/win32-arm64": "0.27.3", - "@esbuild/win32-ia32": "0.27.3", - "@esbuild/win32-x64": "0.27.3" + "@esbuild/aix-ppc64": "0.27.4", + "@esbuild/android-arm": "0.27.4", + "@esbuild/android-arm64": "0.27.4", + "@esbuild/android-x64": "0.27.4", + "@esbuild/darwin-arm64": "0.27.4", + "@esbuild/darwin-x64": "0.27.4", + "@esbuild/freebsd-arm64": "0.27.4", + "@esbuild/freebsd-x64": "0.27.4", + "@esbuild/linux-arm": "0.27.4", + "@esbuild/linux-arm64": "0.27.4", + "@esbuild/linux-ia32": "0.27.4", + "@esbuild/linux-loong64": "0.27.4", + "@esbuild/linux-mips64el": "0.27.4", + "@esbuild/linux-ppc64": "0.27.4", + "@esbuild/linux-riscv64": "0.27.4", + "@esbuild/linux-s390x": "0.27.4", + "@esbuild/linux-x64": "0.27.4", + "@esbuild/netbsd-arm64": "0.27.4", + "@esbuild/netbsd-x64": "0.27.4", + "@esbuild/openbsd-arm64": "0.27.4", + "@esbuild/openbsd-x64": "0.27.4", + "@esbuild/openharmony-arm64": "0.27.4", + "@esbuild/sunos-x64": "0.27.4", + "@esbuild/win32-arm64": "0.27.4", + "@esbuild/win32-ia32": "0.27.4", + "@esbuild/win32-x64": "0.27.4" } }, "node_modules/escape-string-regexp": { @@ -1455,25 +1482,25 @@ } }, "node_modules/eslint": { - "version": "9.39.3", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.3.tgz", - "integrity": "sha512-VmQ+sifHUbI/IcSopBCF/HO3YiHQx/AVd3UVyYL6weuwW+HvON9VYn5l6Zl1WZzPWXPNZrSQpxwkkZ/VuvJZzg==", + "version": "9.39.4", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.4.tgz", + "integrity": "sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.21.1", + "@eslint/config-array": "^0.21.2", "@eslint/config-helpers": "^0.4.2", "@eslint/core": "^0.17.0", - "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.39.3", + "@eslint/eslintrc": "^3.3.5", + "@eslint/js": "9.39.4", "@eslint/plugin-kit": "^0.4.1", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", - "ajv": "^6.12.4", + "ajv": "^6.14.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.6", "debug": "^4.3.2", @@ -1492,7 +1519,7 @@ "is-glob": "^4.0.0", "json-stable-stringify-without-jsonify": "^1.0.1", "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", + "minimatch": "^3.1.5", "natural-compare": "^1.4.0", "optionator": "^0.9.3" }, @@ -1532,37 +1559,6 @@ } }, "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/eslint/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/eslint/node_modules/eslint-visitor-keys": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", @@ -1575,29 +1571,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/eslint/node_modules/minimatch": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.4.tgz", - "integrity": "sha512-twmL+S8+7yIsE9wsqgzU3E8/LumN3M3QELrBZ20OdmQ9jB2JvW5oZtBEmft84k/Gs5CG9mqtWc6Y9vW+JEzGxw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/espree": { "version": "10.4.0", "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", @@ -1616,19 +1589,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, "node_modules/esquery": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", @@ -1765,9 +1725,9 @@ } }, "node_modules/flatted": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", - "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz", + "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==", "dev": true, "license": "ISC" }, @@ -1818,9 +1778,9 @@ } }, "node_modules/ignore": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", - "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, "license": "MIT", "engines": { @@ -2021,19 +1981,16 @@ "license": "MIT" }, "node_modules/minimatch": { - "version": "10.2.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.3.tgz", - "integrity": "sha512-Rwi3pnapEqirPSbWbrZaa6N3nmqq4Xer/2XooiOKyV3q12ML06f7MOuc5DVH8ONZIFhwIYQ3yzPH4nt7iWHaTg==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, - "license": "BlueOak-1.0.0", + "license": "ISC", "dependencies": { - "brace-expansion": "^5.0.2" + "brace-expansion": "^1.1.7" }, "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": "*" } }, "node_modules/ms": { @@ -2144,9 +2101,9 @@ } }, "node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "dev": true, "license": "MIT", "engines": { @@ -2207,9 +2164,9 @@ } }, "node_modules/prettier": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.1.tgz", - "integrity": "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==", + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.3.tgz", + "integrity": "sha512-7igPTM53cGHMW8xWuVTydi2KO233VFiTNyF5hLJqpilHfmn8C8gPf+PS7dUT64YcXFbiMGZxS9pCSxL/Dxm/Jw==", "dev": true, "license": "MIT", "bin": { @@ -2223,13 +2180,13 @@ } }, "node_modules/prettier-plugin-packagejson": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/prettier-plugin-packagejson/-/prettier-plugin-packagejson-3.0.0.tgz", - "integrity": "sha512-z8/QmPSqx/ANvvQMWJSkSq1+ihBXeuwDEYdjX3ZjRJ5Ty1k7vGbFQfhzk2eDe0rwS/TNyRjWK/qnjJEStAOtDw==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/prettier-plugin-packagejson/-/prettier-plugin-packagejson-3.0.2.tgz", + "integrity": "sha512-kmoj3hEynXwoHDo8ZhmWAIjRBoQWCDUVackiWfSDWdgD0rS3LGB61T9zoVbume/cotYdCoadUh4sqViAmXvpBQ==", "dev": true, "license": "MIT", "dependencies": { - "sort-package-json": "3.6.0" + "sort-package-json": "^3.6.0" }, "peerDependencies": { "prettier": "^3" @@ -2368,9 +2325,9 @@ "license": "MIT" }, "node_modules/sort-package-json": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/sort-package-json/-/sort-package-json-3.6.0.tgz", - "integrity": "sha512-fyJsPLhWvY7u2KsKPZn1PixbXp+1m7V8NWqU8CvgFRbMEX41Ffw1kD8n0CfJiGoaSfoAvbrqRRl/DcHO8omQOQ==", + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/sort-package-json/-/sort-package-json-3.6.1.tgz", + "integrity": "sha512-Chgejw1+10p2D0U2tB7au1lHtz6TkFnxmvZktyBCRyV0GgmF6nl1IxXxAsPtJVsUyg/fo+BfCMAVVFUVRkAHrQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2456,9 +2413,9 @@ } }, "node_modules/ts-api-utils": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.4.0.tgz", - "integrity": "sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.5.0.tgz", + "integrity": "sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==", "dev": true, "license": "MIT", "engines": { @@ -2482,17 +2439,17 @@ } }, "node_modules/typedoc": { - "version": "0.28.17", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.28.17.tgz", - "integrity": "sha512-ZkJ2G7mZrbxrKxinTQMjFqsCoYY6a5Luwv2GKbTnBCEgV2ihYm5CflA9JnJAwH0pZWavqfYxmDkFHPt4yx2oDQ==", + "version": "0.28.18", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.28.18.tgz", + "integrity": "sha512-NTWTUOFRQ9+SGKKTuWKUioUkjxNwtS3JDRPVKZAXGHZy2wCA8bdv2iJiyeePn0xkmK+TCCqZFT0X7+2+FLjngA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@gerrit0/mini-shiki": "^3.17.0", + "@gerrit0/mini-shiki": "^3.23.0", "lunr": "^2.3.9", - "markdown-it": "^14.1.0", - "minimatch": "^9.0.5", - "yaml": "^2.8.1" + "markdown-it": "^14.1.1", + "minimatch": "^10.2.4", + "yaml": "^2.8.2" }, "bin": { "typedoc": "bin/typedoc" @@ -2502,13 +2459,13 @@ "pnpm": ">= 10" }, "peerDependencies": { - "typescript": "5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x || 5.7.x || 5.8.x || 5.9.x" + "typescript": "5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x || 5.7.x || 5.8.x || 5.9.x || 6.0.x" } }, "node_modules/typedoc-plugin-markdown": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/typedoc-plugin-markdown/-/typedoc-plugin-markdown-4.10.0.tgz", - "integrity": "sha512-psrg8Rtnv4HPWCsoxId+MzEN8TVK5jeKCnTbnGAbTBqcDapR9hM41bJT/9eAyKn9C2MDG9Qjh3MkltAYuLDoXg==", + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/typedoc-plugin-markdown/-/typedoc-plugin-markdown-4.11.0.tgz", + "integrity": "sha512-2iunh2ALyfyh204OF7h2u0kuQ84xB3jFZtFyUr01nThJkLvR8oGGSSDlyt2gyO4kXhvUxDcVbO0y43+qX+wFbw==", "dev": true, "license": "MIT", "engines": { @@ -2518,26 +2475,49 @@ "typedoc": "0.28.x" } }, - "node_modules/typedoc/node_modules/minimatch": { - "version": "9.0.7", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.7.tgz", - "integrity": "sha512-MOwgjc8tfrpn5QQEvjijjmDVtMw2oL88ugTevzxQnzRLm6l3fVEF2gzU0kYeYYKD8C66+IdGX6peJ4MyUlUnPg==", + "node_modules/typedoc/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", "dev": true, - "license": "ISC", + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/typedoc/node_modules/brace-expansion": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", + "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/typedoc/node_modules/minimatch": { + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", + "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", + "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { "brace-expansion": "^5.0.2" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/typescript": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", - "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz", + "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", "dev": true, "license": "Apache-2.0", "bin": { @@ -2549,16 +2529,16 @@ } }, "node_modules/typescript-eslint": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.56.1.tgz", - "integrity": "sha512-U4lM6pjmBX7J5wk4szltF7I1cGBHXZopnAXCMXb3+fZ3B/0Z3hq3wS/CCUB2NZBNAExK92mCU2tEohWuwVMsDQ==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.59.3.tgz", + "integrity": "sha512-KgusgyDgG4LI8Ih/sWaCtZ06tckLAS5CvT5A4D1Q7bYVoAAyzwiZvE4BmwDHkhRVkvhRBepKeASoFzQetha7Fg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.56.1", - "@typescript-eslint/parser": "8.56.1", - "@typescript-eslint/typescript-estree": "8.56.1", - "@typescript-eslint/utils": "8.56.1" + "@typescript-eslint/eslint-plugin": "8.59.3", + "@typescript-eslint/parser": "8.59.3", + "@typescript-eslint/typescript-estree": "8.59.3", + "@typescript-eslint/utils": "8.59.3" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -2569,7 +2549,7 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/uc.micro": { @@ -2580,9 +2560,9 @@ "license": "MIT" }, "node_modules/undici-types": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", - "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.21.0.tgz", + "integrity": "sha512-w9IMgQrz4O0YN1LtB7K5P63vhlIOvC7opSmouCJ+ZywlPAlO9gIkJ+otk6LvGpAs2wg4econaCz3TvQ9xPoyuQ==", "dev": true, "license": "MIT" }, @@ -2623,9 +2603,9 @@ } }, "node_modules/yaml": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.2.tgz", - "integrity": "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==", + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.3.tgz", + "integrity": "sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==", "dev": true, "license": "ISC", "bin": { diff --git a/packages/esbuild-plugin-live-reload/package.json b/packages/esbuild-plugin-live-reload/package.json index eecc0dae85..ae892ea7dd 100644 --- a/packages/esbuild-plugin-live-reload/package.json +++ b/packages/esbuild-plugin-live-reload/package.json @@ -1,6 +1,6 @@ { "name": "@goauthentik/esbuild-plugin-live-reload", - "version": "1.6.1", + "version": "2.0.1", "description": "ESBuild + browser refresh. Build completes, page reloads.", "license": "MIT", "repository": { @@ -34,6 +34,7 @@ "types": "./out/client/index.d.ts", "import": "./client/index.js" }, + "./client/types": "./client/types.d.ts", "./plugin": { "types": "./out/plugin/index.d.ts", "import": "./plugin/index.js" @@ -45,23 +46,23 @@ "devDependencies": { "@eslint/js": "^9.39.3", "@goauthentik/eslint-config": "../eslint-config", + "@goauthentik/logger-js": "../logger-js", "@goauthentik/prettier-config": "../prettier-config", "@goauthentik/tsconfig": "../tsconfig", - "@types/node": "^25.3.0", - "@typescript-eslint/eslint-plugin": "^8.56.1", - "@typescript-eslint/parser": "^8.56.1", - "esbuild": "^0.27.3", + "@types/node": "^25.7.0", + "esbuild": "^0.27.4", "eslint": "^9.39.3", "pino": "^10.3.1", - "prettier": "^3.8.1", - "prettier-plugin-packagejson": "^3.0.0", - "typedoc": "^0.28.15", - "typedoc-plugin-markdown": "^4.9.0", - "typescript": "^5.9.3", - "typescript-eslint": "^8.56.1" + "prettier": "^3.8.3", + "prettier-plugin-packagejson": "^3.0.2", + "typedoc": "^0.28.18", + "typedoc-plugin-markdown": "^4.11.0", + "typescript": "^6.0.3", + "typescript-eslint": "^8.59.3" }, "peerDependencies": { - "esbuild": "^0.27.3" + "@goauthentik/logger-js": "^1.0.1", + "esbuild": "^0.27.4" }, "files": [ "./index.js", @@ -72,7 +73,7 @@ ], "engines": { "node": ">=24", - "npm": ">=11.10.1" + "npm": ">=11.14.1" }, "devEngines": { "runtime": { @@ -82,7 +83,7 @@ }, "packageManager": { "name": "npm", - "version": ">=11.10.1", + "version": ">=11.14.1", "onFail": "warn" } }, @@ -95,6 +96,25 @@ "reload", "authentik" ], + "overrides": { + "@typescript-eslint/eslint-plugin": { + "typescript": "$typescript" + }, + "@typescript-eslint/parser": { + "typescript": "$typescript" + }, + "format-imports": { + "eslint": "$eslint" + }, + "typescript-eslint": { + "typescript": "$typescript" + } + }, + "peerDependenciesMeta": { + "@goauthentik/logger-js": { + "optional": true + } + }, "publishConfig": { "access": "public" } diff --git a/packages/esbuild-plugin-live-reload/plugin/index.js b/packages/esbuild-plugin-live-reload/plugin/index.js index 7b822d9e90..979e2c5563 100644 --- a/packages/esbuild-plugin-live-reload/plugin/index.js +++ b/packages/esbuild-plugin-live-reload/plugin/index.js @@ -4,13 +4,13 @@ * @import { ListenOptions } from "node:net"; * @import { Server as HTTPServer } from "node:http"; * @import { Server as HTTPSServer } from "node:https"; - * @import { Logger } from "@goauthentik/esbuild-plugin-live-reload/shared"; + * @import { Logger } from "@goauthentik/logger-js"; */ import * as http from "node:http"; import { resolve as resolvePath } from "node:path"; -import { createLogger } from "@goauthentik/esbuild-plugin-live-reload/shared"; +import { createLogger } from "@goauthentik/logger-js"; import { findFreePorts } from "find-free-ports"; diff --git a/packages/esbuild-plugin-live-reload/shared/index.js b/packages/esbuild-plugin-live-reload/shared/index.js index 07e304e878..f8c2a13f6e 100644 --- a/packages/esbuild-plugin-live-reload/shared/index.js +++ b/packages/esbuild-plugin-live-reload/shared/index.js @@ -1,18 +1,14 @@ /** * @file Shared utilities for the live reload plugin. * - * @import { BaseLogger } from "pino"; - */ - -/** - * @typedef {Pick} Logger + * @import { BaseLogger } from "@goauthentik/logger-js"; */ /** * Creates a logger with the given prefix. * * @param {string} [prefix] - * @returns {Logger} + * @returns {BaseLogger} */ export function createLogger(prefix = "[Build Observer]") { return { @@ -20,5 +16,6 @@ export function createLogger(prefix = "[Build Observer]") { warn: console.warn.bind(console, prefix), error: console.error.bind(console, prefix), debug: console.debug.bind(console, prefix), + trace: console.trace.bind(console, prefix), }; } diff --git a/packages/esbuild-plugin-live-reload/tsconfig.json b/packages/esbuild-plugin-live-reload/tsconfig.json index e3f6b7dfe7..4885d72f14 100644 --- a/packages/esbuild-plugin-live-reload/tsconfig.json +++ b/packages/esbuild-plugin-live-reload/tsconfig.json @@ -3,7 +3,6 @@ "compilerOptions": { "lib": ["ESNext", "DOM", "DOM.Iterable"], "resolveJsonModule": true, - "baseUrl": ".", "checkJs": true, "emitDeclarationOnly": true }, diff --git a/packages/eslint-config/index.js b/packages/eslint-config/index.js index cdbe830be9..9e4ed71603 100644 --- a/packages/eslint-config/index.js +++ b/packages/eslint-config/index.js @@ -41,7 +41,7 @@ export const DefaultIgnorePatterns = [ "**/storybook-static", "**/locale-codes.ts", "**/src/locales", - "**/gen-ts-api", + "packages/client-ts", ]; /** diff --git a/packages/eslint-config/package-lock.json b/packages/eslint-config/package-lock.json index 3ebd8732d4..9c8ca80c3b 100644 --- a/packages/eslint-config/package-lock.json +++ b/packages/eslint-config/package-lock.json @@ -1,38 +1,38 @@ { "name": "@goauthentik/eslint-config", - "version": "1.3.0", + "version": "2.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@goauthentik/eslint-config", - "version": "1.3.0", + "version": "2.0.0", "license": "MIT", "dependencies": { "eslint": "^9.39.3", "eslint-plugin-import": "^2.32.0", - "eslint-plugin-lit": "^2.2.1", + "eslint-plugin-lit": "^2.3.1", "eslint-plugin-react": "^7.37.5", - "eslint-plugin-react-hooks": "^7.0.1", + "eslint-plugin-react-hooks": "^7.1.1", "eslint-plugin-wc": "^3.1.0" }, "devDependencies": { "@goauthentik/prettier-config": "../prettier-config", "@goauthentik/tsconfig": "../tsconfig", "@types/eslint": "^9.6.1", - "@types/node": "^25.3.0", - "typescript": "^5.9.3", - "typescript-eslint": "^8.56.1" + "@types/node": "^25.7.0", + "typescript": "^6.0.3", + "typescript-eslint": "^8.59.3" }, "engines": { "node": ">=24", - "npm": ">=11.10.1" + "npm": ">=11.14.1" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0", - "typescript": "^5.9.3", - "typescript-eslint": "^8.56.1" + "typescript": "^6.0.3 || ^7.0.0", + "typescript-eslint": "^8.59.3" }, "peerDependenciesMeta": { "react": { @@ -45,7 +45,7 @@ }, "../prettier-config": { "name": "@goauthentik/prettier-config", - "version": "3.4.3", + "version": "4.0.0", "dev": true, "license": "MIT", "dependencies": { @@ -55,32 +55,30 @@ "@eslint/js": "^9.39.3", "@goauthentik/eslint-config": "../eslint-config", "@goauthentik/tsconfig": "../tsconfig", - "@types/node": "^25.0.0", - "@typescript-eslint/eslint-plugin": "^8.49.0", - "@typescript-eslint/parser": "^8.49.0", + "@types/node": "^25.7.0", "eslint": "^9.39.3", - "prettier": "^3.8.1", - "prettier-plugin-packagejson": "^3.0.0", - "typescript": "^5.9.3", - "typescript-eslint": "^8.56.1" + "prettier": "^3.8.3", + "prettier-plugin-packagejson": "^3.0.2", + "typescript": "^6.0.3", + "typescript-eslint": "^8.59.3" }, "engines": { "node": ">=24", - "npm": ">=11.10.1" + "npm": ">=11.14.1" }, "peerDependencies": { - "prettier": "^3.8.1", - "prettier-plugin-packagejson": "^3.0.0" + "prettier": "^3.8.3", + "prettier-plugin-packagejson": "^3.0.2" } }, "../tsconfig": { "name": "@goauthentik/tsconfig", - "version": "1.0.7", + "version": "2.0.0", "dev": true, "license": "MIT", "engines": { "node": ">=24", - "npm": ">=11.10.1" + "npm": ">=11.14.1" } }, "node_modules/@babel/code-frame": { @@ -235,22 +233,22 @@ } }, "node_modules/@babel/helpers": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.6.tgz", - "integrity": "sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==", + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.2.tgz", + "integrity": "sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==", "license": "MIT", "dependencies": { "@babel/template": "^7.28.6", - "@babel/types": "^7.28.6" + "@babel/types": "^7.29.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.0.tgz", - "integrity": "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==", + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.2.tgz", + "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==", "license": "MIT", "dependencies": { "@babel/types": "^7.29.0" @@ -347,14 +345,14 @@ } }, "node_modules/@eslint/config-array": { - "version": "0.21.1", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.1.tgz", - "integrity": "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==", + "version": "0.21.2", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.2.tgz", + "integrity": "sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw==", "license": "Apache-2.0", "dependencies": { "@eslint/object-schema": "^2.1.7", "debug": "^4.3.1", - "minimatch": "^3.1.2" + "minimatch": "^3.1.5" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -385,9 +383,9 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.4.tgz", - "integrity": "sha512-4h4MVF8pmBsncB60r0wSJiIeUKTSD4m7FmTFThG8RHlsg9ajqckLm9OraguFGZE4vVdpiI1Q4+hFnisopmG6gQ==", + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.5.tgz", + "integrity": "sha512-4IlJx0X0qftVsN5E+/vGujTRIFtwuLbNsVUe7TO6zYPDR1O6nFwvwhIKEKSrl6dZchmYBITazxKoUYOjdtjlRg==", "license": "MIT", "dependencies": { "ajv": "^6.14.0", @@ -397,7 +395,7 @@ "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.1", - "minimatch": "^3.1.3", + "minimatch": "^3.1.5", "strip-json-comments": "^3.1.1" }, "engines": { @@ -408,9 +406,9 @@ } }, "node_modules/@eslint/js": { - "version": "9.39.3", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.3.tgz", - "integrity": "sha512-1B1VkCq6FuUNlQvlBYb+1jDu/gV297TIs/OeiaSR9l1H27SVW55ONE1e1Vp16NqP683+xEGzxYtv4XCiDPaQiw==", + "version": "9.39.4", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.4.tgz", + "integrity": "sha512-nE7DEIchvtiFTwBw4Lfbu59PG+kCofhjsKaCWzxTpt4lfRjRMqG6uMBzKXuEcyXhOHoUp9riAm7/aWYGhXZ9cw==", "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -578,30 +576,30 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.3.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.0.tgz", - "integrity": "sha512-4K3bqJpXpqfg2XKGK9bpDTc6xO/xoUP/RBWS7AtRMug6zZFaRekiLzjVtAoZMquxoAbzBvy5nxQ7veS5eYzf8A==", + "version": "25.7.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.7.0.tgz", + "integrity": "sha512-z+pdZyxE+RTQE9AcboAZCb4otwcrvgHD+GlBpPgn0emDVt0ohrTMhAwlr2Wd9nZ+nihhYFxO2pThz3C5qSu2Eg==", "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~7.18.0" + "undici-types": "~7.21.0" } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.56.1.tgz", - "integrity": "sha512-Jz9ZztpB37dNC+HU2HI28Bs9QXpzCz+y/twHOwhyrIRdbuVDxSytJNDl6z/aAKlaRIwC7y8wJdkBv7FxYGgi0A==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.59.3.tgz", + "integrity": "sha512-PwFvSKsXGShKGW6n5bZOhGHEcCZXM8HofLK9fNsEwZXzFRjoY+XT1Vsf1zgyXdwTr0ZYz1/2tkZ0DBTT9jZjhw==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.12.2", - "@typescript-eslint/scope-manager": "8.56.1", - "@typescript-eslint/type-utils": "8.56.1", - "@typescript-eslint/utils": "8.56.1", - "@typescript-eslint/visitor-keys": "8.56.1", + "@typescript-eslint/scope-manager": "8.59.3", + "@typescript-eslint/type-utils": "8.59.3", + "@typescript-eslint/utils": "8.59.3", + "@typescript-eslint/visitor-keys": "8.59.3", "ignore": "^7.0.5", "natural-compare": "^1.4.0", - "ts-api-utils": "^2.4.0" + "ts-api-utils": "^2.5.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -611,9 +609,9 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^8.56.1", + "@typescript-eslint/parser": "^8.59.3", "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { @@ -627,16 +625,16 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.56.1.tgz", - "integrity": "sha512-klQbnPAAiGYFyI02+znpBRLyjL4/BrBd0nyWkdC0s/6xFLkXYQ8OoRrSkqacS1ddVxf/LDyODIKbQ5TgKAf/Fg==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.59.3.tgz", + "integrity": "sha512-HPwA+hVkfcriajbNvTmZv4VRauibay+cWArYUYq7u7W7PmGShMxbPxLvrwDme55a6d5alG3nrYfhyJ/G28XlLg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.56.1", - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/typescript-estree": "8.56.1", - "@typescript-eslint/visitor-keys": "8.56.1", + "@typescript-eslint/scope-manager": "8.59.3", + "@typescript-eslint/types": "8.59.3", + "@typescript-eslint/typescript-estree": "8.59.3", + "@typescript-eslint/visitor-keys": "8.59.3", "debug": "^4.4.3" }, "engines": { @@ -648,18 +646,18 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/project-service": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.56.1.tgz", - "integrity": "sha512-TAdqQTzHNNvlVFfR+hu2PDJrURiwKsUvxFn1M0h95BB8ah5jejas08jUWG4dBA68jDMI988IvtfdAI53JzEHOQ==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.59.3.tgz", + "integrity": "sha512-ECiUWa/KYRGDFUqTNehaRgzDshnJfkTABJxVemHk4ko22gcr0ukloKjWvyQ64g8YCV/UI47kN1dbmjf/GaQYng==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.56.1", - "@typescript-eslint/types": "^8.56.1", + "@typescript-eslint/tsconfig-utils": "^8.59.3", + "@typescript-eslint/types": "^8.59.3", "debug": "^4.4.3" }, "engines": { @@ -670,18 +668,18 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.56.1.tgz", - "integrity": "sha512-YAi4VDKcIZp0O4tz/haYKhmIDZFEUPOreKbfdAN3SzUDMcPhJ8QI99xQXqX+HoUVq8cs85eRKnD+rne2UAnj2w==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.59.3.tgz", + "integrity": "sha512-t2LvZnoEfzKtnPjgeEu41xw5gxq9mQVfYy4OoZ4Vlt0sk3JwxmhCca/AR7DwOiHrjWgjAj6as4AhRLKSDfvZIA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/visitor-keys": "8.56.1" + "@typescript-eslint/types": "8.59.3", + "@typescript-eslint/visitor-keys": "8.59.3" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -692,9 +690,9 @@ } }, "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.56.1.tgz", - "integrity": "sha512-qOtCYzKEeyr3aR9f28mPJqBty7+DBqsdd63eO0yyDwc6vgThj2UjWfJIcsFeSucYydqcuudMOprZ+x1SpF3ZuQ==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.59.3.tgz", + "integrity": "sha512-PcIJHjmaREXLgIAIzLnSY9VucEzz8FKXsRgFa1DmdGCK/5tJpW03TKJF01Q6VZd1lLdz2sIKPWaDUZN9dp//dw==", "dev": true, "license": "MIT", "engines": { @@ -705,21 +703,21 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.56.1.tgz", - "integrity": "sha512-yB/7dxi7MgTtGhZdaHCemf7PuwrHMenHjmzgUW1aJpO+bBU43OycnM3Wn+DdvDO/8zzA9HlhaJ0AUGuvri4oGg==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.59.3.tgz", + "integrity": "sha512-g71d8QD8UaiHGvrJwyIS1hCX5r63w6Jll+4VEYhEAHXTDIqX1JgxhTAbEHtKntL9kuc4jRo7/GWw5xfCepSccQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/typescript-estree": "8.56.1", - "@typescript-eslint/utils": "8.56.1", + "@typescript-eslint/types": "8.59.3", + "@typescript-eslint/typescript-estree": "8.59.3", + "@typescript-eslint/utils": "8.59.3", "debug": "^4.4.3", - "ts-api-utils": "^2.4.0" + "ts-api-utils": "^2.5.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -730,13 +728,13 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/types": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.56.1.tgz", - "integrity": "sha512-dbMkdIUkIkchgGDIv7KLUpa0Mda4IYjo4IAMJUZ+3xNoUXxMsk9YtKpTHSChRS85o+H9ftm51gsK1dZReY9CVw==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.59.3.tgz", + "integrity": "sha512-ePFoH0g4ludssdRFqqDxQePCxU4WQyRa9+XVwjm7yLn0FKhMeoetC+qBEEI1Eyb1pGSDveTIT09Bvw2WhlGayg==", "dev": true, "license": "MIT", "engines": { @@ -748,21 +746,21 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.56.1.tgz", - "integrity": "sha512-qzUL1qgalIvKWAf9C1HpvBjif+Vm6rcT5wZd4VoMb9+Km3iS3Cv9DY6dMRMDtPnwRAFyAi7YXJpTIEXLvdfPxg==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.59.3.tgz", + "integrity": "sha512-CbRjVRAf7Lr9Kr8RopKcbY45p2VfmmHrm0ygOCYFi7oU8q19m0Fs/6iHS7kNOmwpp+ob07ZVcAqlxUod9lYdmg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.56.1", - "@typescript-eslint/tsconfig-utils": "8.56.1", - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/visitor-keys": "8.56.1", + "@typescript-eslint/project-service": "8.59.3", + "@typescript-eslint/tsconfig-utils": "8.59.3", + "@typescript-eslint/types": "8.59.3", + "@typescript-eslint/visitor-keys": "8.59.3", "debug": "^4.4.3", "minimatch": "^10.2.2", "semver": "^7.7.3", "tinyglobby": "^0.2.15", - "ts-api-utils": "^2.4.0" + "ts-api-utils": "^2.5.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -772,7 +770,7 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/balanced-match": { @@ -786,9 +784,9 @@ } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.3.tgz", - "integrity": "sha512-fy6KJm2RawA5RcHkLa1z/ScpBeA762UF9KmZQxwIbDtRJrgLzM10depAiEQ+CXYcoiqW1/m96OAAoke2nE9EeA==", + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.6.tgz", + "integrity": "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==", "dev": true, "license": "MIT", "dependencies": { @@ -799,13 +797,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.2.tgz", - "integrity": "sha512-+G4CpNBxa5MprY+04MbgOw1v7So6n5JY166pFi9KfYwT78fxScCeSNQSNzp6dpPSW2rONOps6Ocam1wFhCgoVw==", + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", + "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { - "brace-expansion": "^5.0.2" + "brace-expansion": "^5.0.5" }, "engines": { "node": "18 || 20 || >=22" @@ -815,9 +813,9 @@ } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.0.tgz", + "integrity": "sha512-AcM7dV/5ul4EekoQ29Agm5vri8JNqRyj39o0qpX6vDF2GZrtutZl5RwgD1XnZjiTAfncsJhMI48QQH3sN87YNA==", "dev": true, "license": "ISC", "bin": { @@ -828,16 +826,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.56.1.tgz", - "integrity": "sha512-HPAVNIME3tABJ61siYlHzSWCGtOoeP2RTIaHXFMPqjrQKCGB9OgUVdiNgH7TJS2JNIQ5qQ4RsAUDuGaGme/KOA==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.59.3.tgz", + "integrity": "sha512-JAvT14goBzRzzzZyqq3P9BLArIxTtQURUtFgQ/V7FO+eU+Gg6ES+5ymOPP1wRxXcxAYeivCk4uS3jCKWI1K8Zg==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.9.1", - "@typescript-eslint/scope-manager": "8.56.1", - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/typescript-estree": "8.56.1" + "@typescript-eslint/scope-manager": "8.59.3", + "@typescript-eslint/types": "8.59.3", + "@typescript-eslint/typescript-estree": "8.59.3" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -848,17 +846,17 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.56.1.tgz", - "integrity": "sha512-KiROIzYdEV85YygXw6BI/Dx4fnBlFQu6Mq4QE4MOH9fFnhohw6wX/OAvDY2/C+ut0I3RSPKenvZJIVYqJNkhEw==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.59.3.tgz", + "integrity": "sha512-f1UQF7ggd42YiwI5wGrRaPsa+P0CINBlrkLPmGfpq/u/I/oVtecoEIfFR9ag/oa1sLOsRNZ6xehf6qMZhQGBDg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.56.1", + "@typescript-eslint/types": "8.59.3", "eslint-visitor-keys": "^5.0.0" }, "engines": { @@ -1123,9 +1121,9 @@ "license": "MIT" }, "node_modules/baseline-browser-mapping": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.0.tgz", - "integrity": "sha512-lIyg0szRfYbiy67j9KN8IyeD7q7hcmqnJ1ddWmNt19ItGpNN64mnllmxUNFIOdOm6by97jlL6wfpTTJrmnjWAA==", + "version": "2.10.10", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.10.tgz", + "integrity": "sha512-sUoJ3IMxx4AyRqO4MLeHlnGDkyXRoUG0/AI9fjK+vS72ekpV0yWVY7O0BVjmBcRtkNcsAO2QDZ4tdKKGoI6YaQ==", "license": "Apache-2.0", "bin": { "baseline-browser-mapping": "dist/cli.cjs" @@ -1234,9 +1232,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001774", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001774.tgz", - "integrity": "sha512-DDdwPGz99nmIEv216hKSgLD+D4ikHQHjBC/seF98N9CPqRX4M5mSxT9eTV6oyisnJcuzxtZy4n17yKKQYmYQOA==", + "version": "1.0.30001781", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001781.tgz", + "integrity": "sha512-RdwNCyMsNBftLjW6w01z8bKEvT6e/5tpPVEgtn22TiLGlstHOVecsX2KHFkD5e/vRnIE4EGzpuIODb3mtswtkw==", "funding": [ { "type": "opencollective", @@ -1433,6 +1431,37 @@ "node": ">=0.10.0" } }, + "node_modules/domelementtype": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-3.0.0.tgz", + "integrity": "sha512-umCQid3jKbDmVjx8jGaW7uUykm4DEUeyV21hPxNMo2nV955DhUThwqyOIDtreepP31hl84X7G5U9ZfsWvIB3Pg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause", + "engines": { + "node": ">=20.19.0" + } + }, + "node_modules/domhandler": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-6.0.1.tgz", + "integrity": "sha512-gYzvtM72ZtxQO0T048kd6HWSbbGCNOUwcnfQ01cqIJ4X2IYKFFHZ5mKvrQETcFXxsRObZulDaKmy//R7TPtsBg==", + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^3.0.0" + }, + "engines": { + "node": ">=20.19.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, "node_modules/dunder-proto": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", @@ -1448,11 +1477,23 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.302", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.302.tgz", - "integrity": "sha512-sM6HAN2LyK82IyPBpznDRqlTQAtuSaO+ShzFiWTvoMJLHyZ+Y39r8VMfHzwbU8MVBzQ4Wdn85+wlZl2TLGIlwg==", + "version": "1.5.325", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.325.tgz", + "integrity": "sha512-PwfIw7WQSt3xX7yOf5OE/unLzsK9CaN2f/FvV3WjPR1Knoc1T9vePRVV4W1EM301JzzysK51K7FNKcusCr0zYA==", "license": "ISC" }, + "node_modules/entities": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-8.0.0.tgz", + "integrity": "sha512-zwfzJecQ/Uej6tusMqwAqU/6KL2XaB2VZ2Jg54Je6ahNBGNH6Ek6g3jjNCF0fG9EWQKGZNddNjU5F1ZQn/sBnA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=20.19.0" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/es-abstract": { "version": "1.24.1", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.1.tgz", @@ -1540,9 +1581,9 @@ } }, "node_modules/es-iterator-helpers": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.2.tgz", - "integrity": "sha512-BrUQ0cPTB/IwXj23HtwHjS9n7O4h9FX94b4xc5zlTHxeLgTAdzYUDyy6KdExAl9lbN5rtfe44xpjpmj9grxs5w==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.3.1.tgz", + "integrity": "sha512-zWwRvqWiuBPr0muUG/78cW3aHROFCNIQ3zpmYDpwdbnt2m+xlNyRWpHBpa2lJjSBit7BQ+RXA1iwbSmu5yJ/EQ==", "license": "MIT", "dependencies": { "call-bind": "^1.0.8", @@ -1560,6 +1601,7 @@ "has-symbols": "^1.1.0", "internal-slot": "^1.1.0", "iterator.prototype": "^1.1.5", + "math-intrinsics": "^1.1.0", "safe-array-concat": "^1.1.3" }, "engines": { @@ -1644,24 +1686,24 @@ } }, "node_modules/eslint": { - "version": "9.39.3", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.3.tgz", - "integrity": "sha512-VmQ+sifHUbI/IcSopBCF/HO3YiHQx/AVd3UVyYL6weuwW+HvON9VYn5l6Zl1WZzPWXPNZrSQpxwkkZ/VuvJZzg==", + "version": "9.39.4", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.4.tgz", + "integrity": "sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ==", "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.21.1", + "@eslint/config-array": "^0.21.2", "@eslint/config-helpers": "^0.4.2", "@eslint/core": "^0.17.0", - "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.39.3", + "@eslint/eslintrc": "^3.3.5", + "@eslint/js": "9.39.4", "@eslint/plugin-kit": "^0.4.1", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", - "ajv": "^6.12.4", + "ajv": "^6.14.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.6", "debug": "^4.3.2", @@ -1680,7 +1722,7 @@ "is-glob": "^4.0.0", "json-stable-stringify-without-jsonify": "^1.0.1", "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", + "minimatch": "^3.1.5", "natural-compare": "^1.4.0", "optionator": "^0.9.3" }, @@ -1791,13 +1833,13 @@ } }, "node_modules/eslint-plugin-lit": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-lit/-/eslint-plugin-lit-2.2.1.tgz", - "integrity": "sha512-mnqqwpWF4PBF/YjlGt9mbHwrWCGMtaqdpnqISv3nGcTl8iStaAt9UGieMY3i8vwKfSSWtkEfBZUcRKFGys6yiw==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-lit/-/eslint-plugin-lit-2.3.1.tgz", + "integrity": "sha512-wAqDOOWQzUoY5uK124ZR+h7Snx0+KdZd3Knv6133gRHEcu03jbqnouK4GBwVl6PkGOkNy40zSchOp9VbBh4yHg==", "license": "MIT", "dependencies": { - "parse5": "^6.0.1", - "parse5-htmlparser2-tree-adapter": "^6.0.1" + "parse5": "^8.0.1", + "parse5-htmlparser2-tree-adapter": "^8.0.1" }, "engines": { "node": ">= 18" @@ -1839,9 +1881,9 @@ } }, "node_modules/eslint-plugin-react-hooks": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-7.0.1.tgz", - "integrity": "sha512-O0d0m04evaNzEPoSW+59Mezf8Qt0InfgGIBJnpC0h3NH/WjUAR7BIKUfysC6todmtiZ/A0oUVS8Gce0WhBrHsA==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-7.1.1.tgz", + "integrity": "sha512-f2I7Gw6JbvCexzIInuSbZpfdQ44D7iqdWX01FKLvrPgqxoE7oMj8clOfto8U6vYiz4yd5oKu39rRSVOe1zRu0g==", "license": "MIT", "dependencies": { "@babel/core": "^7.24.4", @@ -1854,7 +1896,7 @@ "node": ">=18" }, "peerDependencies": { - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 || ^10.0.0" } }, "node_modules/eslint-plugin-react/node_modules/resolve": { @@ -2058,9 +2100,9 @@ } }, "node_modules/flatted": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", - "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz", + "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==", "license": "ISC" }, "node_modules/for-each": { @@ -2947,9 +2989,9 @@ } }, "node_modules/minimatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.3.tgz", - "integrity": "sha512-M2GCs7Vk83NxkUyQV1bkABc4yxgz9kILhHImZiBPAZ9ybuvCb0/H7lEl5XvIg3g+9d4eNotkZA5IWwYl0tibaA==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" @@ -2998,9 +3040,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.27", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", - "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", + "version": "2.0.36", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.36.tgz", + "integrity": "sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA==", "license": "MIT" }, "node_modules/object-assign": { @@ -3195,18 +3237,28 @@ } }, "node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "license": "MIT" - }, - "node_modules/parse5-htmlparser2-tree-adapter": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", - "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-8.0.1.tgz", + "integrity": "sha512-z1e/HMG90obSGeidlli3hj7cbocou0/wa5HacvI3ASx34PecNjNQeaHNo5WIZpWofN9kgkqV1q5YvXe3F0FoPw==", "license": "MIT", "dependencies": { - "parse5": "^6.0.1" + "entities": "^8.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-8.0.1.tgz", + "integrity": "sha512-aqkH+xQxX+QGZtP5GIMmqqp16Y0v9muEf2VVeypv35kFsD5bqP1UeBanSshdfjMY+RTh2vN4mmK6nEOVRMEvHg==", + "license": "MIT", + "dependencies": { + "domhandler": "^6.0.1", + "parse5": "^8.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" } }, "node_modules/path-exists": { @@ -3240,9 +3292,9 @@ "license": "ISC" }, "node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "dev": true, "license": "MIT", "engines": { @@ -3719,14 +3771,14 @@ } }, "node_modules/tinyglobby": { - "version": "0.2.15", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", - "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "version": "0.2.16", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.16.tgz", + "integrity": "sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==", "dev": true, "license": "MIT", "dependencies": { "fdir": "^6.5.0", - "picomatch": "^4.0.3" + "picomatch": "^4.0.4" }, "engines": { "node": ">=12.0.0" @@ -3736,9 +3788,9 @@ } }, "node_modules/ts-api-utils": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.4.0.tgz", - "integrity": "sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.5.0.tgz", + "integrity": "sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==", "dev": true, "license": "MIT", "engines": { @@ -3859,9 +3911,9 @@ } }, "node_modules/typescript": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", - "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz", + "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", "dev": true, "license": "Apache-2.0", "bin": { @@ -3873,16 +3925,16 @@ } }, "node_modules/typescript-eslint": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.56.1.tgz", - "integrity": "sha512-U4lM6pjmBX7J5wk4szltF7I1cGBHXZopnAXCMXb3+fZ3B/0Z3hq3wS/CCUB2NZBNAExK92mCU2tEohWuwVMsDQ==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.59.3.tgz", + "integrity": "sha512-KgusgyDgG4LI8Ih/sWaCtZ06tckLAS5CvT5A4D1Q7bYVoAAyzwiZvE4BmwDHkhRVkvhRBepKeASoFzQetha7Fg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.56.1", - "@typescript-eslint/parser": "8.56.1", - "@typescript-eslint/typescript-estree": "8.56.1", - "@typescript-eslint/utils": "8.56.1" + "@typescript-eslint/eslint-plugin": "8.59.3", + "@typescript-eslint/parser": "8.59.3", + "@typescript-eslint/typescript-estree": "8.59.3", + "@typescript-eslint/utils": "8.59.3" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3893,7 +3945,7 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/unbox-primitive": { @@ -3915,9 +3967,9 @@ } }, "node_modules/undici-types": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", - "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.21.0.tgz", + "integrity": "sha512-w9IMgQrz4O0YN1LtB7K5P63vhlIOvC7opSmouCJ+ZywlPAlO9gIkJ+otk6LvGpAs2wg4econaCz3TvQ9xPoyuQ==", "dev": true, "license": "MIT" }, diff --git a/packages/eslint-config/package.json b/packages/eslint-config/package.json index 5f06a8c8fa..fa2a237366 100644 --- a/packages/eslint-config/package.json +++ b/packages/eslint-config/package.json @@ -1,6 +1,6 @@ { "name": "@goauthentik/eslint-config", - "version": "1.3.0", + "version": "2.0.0", "description": "authentik's ESLint config", "license": "MIT", "repository": { @@ -39,24 +39,24 @@ "dependencies": { "eslint": "^9.39.3", "eslint-plugin-import": "^2.32.0", - "eslint-plugin-lit": "^2.2.1", + "eslint-plugin-lit": "^2.3.1", "eslint-plugin-react": "^7.37.5", - "eslint-plugin-react-hooks": "^7.0.1", + "eslint-plugin-react-hooks": "^7.1.1", "eslint-plugin-wc": "^3.1.0" }, "devDependencies": { "@goauthentik/prettier-config": "../prettier-config", "@goauthentik/tsconfig": "../tsconfig", "@types/eslint": "^9.6.1", - "@types/node": "^25.3.0", - "typescript": "^5.9.3", - "typescript-eslint": "^8.56.1" + "@types/node": "^25.7.0", + "typescript": "^6.0.3", + "typescript-eslint": "^8.59.3" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0", - "typescript": "^5.9.3", - "typescript-eslint": "^8.56.1" + "typescript": "^6.0.3 || ^7.0.0", + "typescript-eslint": "^8.59.3" }, "files": [ "./index.js", @@ -65,7 +65,7 @@ ], "engines": { "node": ">=24", - "npm": ">=11.10.1" + "npm": ">=11.14.1" }, "devEngines": { "runtime": { @@ -75,11 +75,25 @@ }, "packageManager": { "name": "npm", - "version": ">=11.10.1", + "version": ">=11.14.1", "onFail": "warn" } }, "prettier": "@goauthentik/prettier-config", + "overrides": { + "@typescript-eslint/eslint-plugin": { + "typescript": "$typescript" + }, + "@typescript-eslint/parser": { + "typescript": "$typescript" + }, + "format-imports": { + "eslint": "$eslint" + }, + "typescript-eslint": { + "typescript": "$typescript" + } + }, "peerDependenciesMeta": { "react": { "optional": true diff --git a/packages/eslint-config/tsconfig.json b/packages/eslint-config/tsconfig.json index d0a26a13bc..af0ccaac72 100644 --- a/packages/eslint-config/tsconfig.json +++ b/packages/eslint-config/tsconfig.json @@ -1,7 +1,6 @@ { "extends": "@goauthentik/tsconfig", "compilerOptions": { - "baseUrl": ".", "checkJs": true, "emitDeclarationOnly": true } diff --git a/packages/logger-js/index.js b/packages/logger-js/index.js index e79f2b48be..7826b1e015 100644 --- a/packages/logger-js/index.js +++ b/packages/logger-js/index.js @@ -1 +1 @@ -export * from "./lib/browser.js"; +export * from "./lib/shared.js"; diff --git a/packages/logger-js/lib/browser.js b/packages/logger-js/lib/browser.js deleted file mode 100644 index 7ab899a479..0000000000 --- a/packages/logger-js/lib/browser.js +++ /dev/null @@ -1,122 +0,0 @@ -/** - * @file Console logger for browser environments. - * - * @remarks - * The repetition of log levels, typedefs, and method signatures is intentional - * to give IDEs and type checkers a mapping of log methods to the TypeScript - * provided JSDoc comments. - * - * Additionally, no wrapper functions are used to avoid the browser's console - * reported call site being the wrapper instead of the actual caller. - * - * @import { IConsoleLogger } from "./shared.js" - * @import { Logger } from "pino" - */ - -import { LogLevelLabel, LogLevels } from "./shared.js"; - -/* eslint-disable no-console */ - -//#region Constants - -/** - * Colors for log levels in the browser console. - * - * @remarks - * - * The colors are derived from Carbon Design System's palette to ensure - * sufficient contrast and accessibility across light and dark themes. - */ -const LogLevelColors = /** @type {const} */ ({ - info: `light-dark(#0043CE, #4589FF)`, - warn: `light-dark(#F1C21B, #F1C21B)`, - error: `light-dark(#DA1E28, #FA4D56)`, - debug: `light-dark(#8A3FFC, #A56EFF)`, - trace: `light-dark(#8A3FFC, #A56EFF)`, - fatal: `light-dark(#DA1E28, #FA4D56)`, -}); - -//#endregion - -//#region Functions - -/** - * Creates a logger with the given prefix. - * - * @param {string} [prefix] - * @param {...string} args - * @returns {Logger} - * - */ -export function createLogger(prefix, ...args) { - const msgPrefix = prefix ? `(${prefix}):` : ":"; - - /** - * @type {Partial} - */ - const logger = { - msgPrefix, - }; - - for (const level of LogLevels) { - const label = LogLevelLabel[level]; - const color = LogLevelColors[level]; - - // @ts-expect-error Alias the log method to the appropriate console method, - // defaulting to console.log if the level is not supported. - const method = level in console ? console[level] : console.log; - - logger[level] = method.bind( - console, - `%c${label}%c ${msgPrefix}%c`, - `font-weight: 700; color: ${color};`, - `font-weight: 600; color: CanvasText;`, - "", - ...args, - ); - } - - return /** @type {Logger} */ (logger); -} - -//#endregion - -//#region Console Logger - -/** - * A singleton logger instance for the browser. - * - * ```js - * import { ConsoleLogger } from "#logger/browser"; - * - * ConsoleLogger.info("Hello, world!"); - * ``` - * - * @implements {IConsoleLogger} - * @runtime browser - */ -// @ts-expect-error Logging properties are dynamically assigned. -export class ConsoleLogger { - /** @type {typeof console.info} */ - static info; - /** @type {typeof console.warn} */ - static warn; - /** @type {typeof console.error} */ - static error; - /** @type {typeof console.debug} */ - static debug; - /** @type {typeof console.trace} */ - static trace; - - /** - * Creates a logger with the given prefix. - * @param {string} logPrefix - */ - static prefix(logPrefix) { - return createLogger(logPrefix); - } -} - -Object.assign(ConsoleLogger, createLogger()); - -//#endregion diff --git a/packages/logger-js/lib/node.js b/packages/logger-js/lib/node.js index bb46d01681..c920b1f0ac 100644 --- a/packages/logger-js/lib/node.js +++ b/packages/logger-js/lib/node.js @@ -10,6 +10,8 @@ import { fixture, prefix } from "./shared.js"; +export * from "./shared.js"; + let warnedAboutPino = false; const { pino } = await import("pino").catch(() => { diff --git a/packages/logger-js/lib/shared.js b/packages/logger-js/lib/shared.js index 3c3ae97157..2129b2ac35 100644 --- a/packages/logger-js/lib/shared.js +++ b/packages/logger-js/lib/shared.js @@ -1,11 +1,42 @@ /** - * @file Lightweight logging when Pino is not available - * @import { ChildLoggerOptions, LoggerOptions, Logger, BaseLogger, LoggerExtras, LogFnFields, Level, LogFn } from "pino" - * @import { PrettyOptions } from "pino-pretty" + * @file Console logger for browser environments. + * + * @remarks + * The repetition of log levels, typedefs, and method signatures is intentional + * to give IDEs and type checkers a mapping of log methods to the TypeScript + * provided JSDoc comments. + * + * Additionally, no wrapper functions are used to avoid the browser's console + * reported call site being the wrapper instead of the actual caller. + * + * @import { + * ChildLoggerOptions, + * LoggerOptions, + * Logger as PinoLogger, + * BaseLogger as PinoBaseLogger, + * Level as PinoLevel, + * LogFn as PinoLogFn + * } from "pino" */ /* eslint-disable no-console */ +/** + * @typedef {PinoLogger} Logger + */ + +/** + * @typedef {PinoLevel} Level + */ + +/** + * @typedef {PinoLogFn} LogFn + */ + +/** + * @typedef {Pick>} BaseLogger + */ + //#region Constants /** @@ -26,14 +57,36 @@ export const LogLevelLabel = /** @type {const} */ ({ */ export const LogLevels = /** @type {Level[]} */ (Object.keys(LogLevelLabel)); +/** + * @callback LoggerFactory + * @param {string | null} [prefix] + * @param {...string[]} args + * @returns {Logger} + */ + +/** + * Colors for log levels in the browser console. + * + * @remarks + * + * The colors are derived from Carbon Design System's palette to ensure + * sufficient contrast and accessibility across light and dark themes. + */ +const LogLevelColors = /** @type {const} */ ({ + info: `light-dark(#0043CE, #4589FF)`, + warn: `light-dark(#F1C21B, #F1C21B)`, + error: `light-dark(#DA1E28, #FA4D56)`, + debug: `light-dark(#8A3FFC, #A56EFF)`, + trace: `light-dark(#8A3FFC, #A56EFF)`, + fatal: `light-dark(#DA1E28, #FA4D56)`, +}); + //#region Functions /** * Creates a logger with the given prefix. * - * @param {string | null} [prefix] - * @param {...string} args - * @returns {Logger} + * @type {LoggerFactory} */ function createConsoleLogger(prefix, ...args) { const msgPrefix = prefix ? `(${prefix}):` : ":"; @@ -57,6 +110,7 @@ function createConsoleLogger(prefix, ...args) { return /** @type {Logger} */ (logger); } + /** * @typedef {Logger} FixtureLogger */ @@ -144,3 +198,88 @@ export function pinoLight(options) { return logger; } + +//#endregion + +//#region Functions + +/** + * Creates a logger with the given prefix. + * + * @param {string} [prefix] + * @param {...string[]} args + * @returns {Logger} + * + */ +export function createLogger(prefix, ...args) { + const msgPrefix = prefix ? `(${prefix}):` : ":"; + + /** + * @type {Partial} + */ + const logger = { + msgPrefix, + }; + + for (const level of LogLevels) { + const label = LogLevelLabel[level]; + const color = LogLevelColors[level]; + + // @ts-expect-error Alias the log method to the appropriate console method, + // defaulting to console.log if the level is not supported. + const method = level in console ? console[level] : console.log; + + logger[level] = method.bind( + console, + `%c${label}%c ${msgPrefix}%c`, + `font-weight: 700; color: ${color};`, + `font-weight: 600; color: CanvasText;`, + "", + ...args, + ); + } + + return /** @type {Logger} */ (logger); +} + +//#endregion + +//#region Console Logger + +/** + * A singleton logger instance for the browser. + * + * ```js + * import { ConsoleLogger } from "#logger/browser"; + * + * ConsoleLogger.info("Hello, world!"); + * ``` + * + * @implements {IConsoleLogger} + * @runtime browser + */ +// @ts-expect-error Logging properties are dynamically assigned. +export class ConsoleLogger { + /** @type {typeof console.info} */ + static info; + /** @type {typeof console.warn} */ + static warn; + /** @type {typeof console.error} */ + static error; + /** @type {typeof console.debug} */ + static debug; + /** @type {typeof console.trace} */ + static trace; + + /** + * Creates a logger with the given prefix. + * @param {string} logPrefix + */ + static prefix(logPrefix) { + return createLogger(logPrefix); + } +} + +Object.assign(ConsoleLogger, createLogger()); + +//#endregion diff --git a/packages/logger-js/package-lock.json b/packages/logger-js/package-lock.json index 947ea7a0bb..9e3de6086a 100644 --- a/packages/logger-js/package-lock.json +++ b/packages/logger-js/package-lock.json @@ -1,31 +1,29 @@ { "name": "@goauthentik/logger-js", - "version": "1.0.1", + "version": "2.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@goauthentik/logger-js", - "version": "1.0.1", + "version": "2.0.0", "license": "MIT", "devDependencies": { "@eslint/js": "^9.39.3", "@goauthentik/prettier-config": "../prettier-config", "@goauthentik/tsconfig": "../tsconfig", - "@types/node": "^25.3.0", - "@typescript-eslint/eslint-plugin": "^8.56.1", - "@typescript-eslint/parser": "^8.56.1", + "@types/node": "^25.7.0", "eslint": "^9.39.3", "pino": "^10.3.1", "pino-pretty": "^13.1.2", - "prettier": "^3.8.1", - "prettier-plugin-packagejson": "^3.0.0", - "typescript": "^5.9.3", - "typescript-eslint": "^8.56.1" + "prettier": "^3.8.3", + "prettier-plugin-packagejson": "^3.0.2", + "typescript": "^6.0.3", + "typescript-eslint": "^8.59.3" }, "engines": { "node": ">=24", - "npm": ">=11.10.1" + "npm": ">=11.14.1" }, "peerDependencies": { "pino": "^10.3.1", @@ -42,7 +40,7 @@ }, "../prettier-config": { "name": "@goauthentik/prettier-config", - "version": "3.4.1", + "version": "4.0.0", "dev": true, "license": "MIT", "dependencies": { @@ -52,32 +50,30 @@ "@eslint/js": "^9.39.3", "@goauthentik/eslint-config": "../eslint-config", "@goauthentik/tsconfig": "../tsconfig", - "@types/node": "^25.0.0", - "@typescript-eslint/eslint-plugin": "^8.49.0", - "@typescript-eslint/parser": "^8.49.0", + "@types/node": "^25.7.0", "eslint": "^9.39.3", - "prettier": "^3.8.1", - "prettier-plugin-packagejson": "^3.0.0", - "typescript": "^5.9.3", - "typescript-eslint": "^8.56.1" + "prettier": "^3.8.3", + "prettier-plugin-packagejson": "^3.0.2", + "typescript": "^6.0.3", + "typescript-eslint": "^8.59.3" }, "engines": { "node": ">=24", - "npm": ">=11.10.1" + "npm": ">=11.14.1" }, "peerDependencies": { - "prettier": "^3.8.1", - "prettier-plugin-packagejson": "^3.0.0" + "prettier": "^3.8.3", + "prettier-plugin-packagejson": "^3.0.2" } }, "../tsconfig": { "name": "@goauthentik/tsconfig", - "version": "1.0.5", + "version": "2.0.0", "dev": true, "license": "MIT", "engines": { "node": ">=24", - "npm": ">=11.6.2" + "npm": ">=11.14.1" } }, "node_modules/@eslint-community/eslint-utils": { @@ -365,30 +361,30 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.3.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.0.tgz", - "integrity": "sha512-4K3bqJpXpqfg2XKGK9bpDTc6xO/xoUP/RBWS7AtRMug6zZFaRekiLzjVtAoZMquxoAbzBvy5nxQ7veS5eYzf8A==", + "version": "25.7.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.7.0.tgz", + "integrity": "sha512-z+pdZyxE+RTQE9AcboAZCb4otwcrvgHD+GlBpPgn0emDVt0ohrTMhAwlr2Wd9nZ+nihhYFxO2pThz3C5qSu2Eg==", "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~7.18.0" + "undici-types": "~7.21.0" } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.56.1.tgz", - "integrity": "sha512-Jz9ZztpB37dNC+HU2HI28Bs9QXpzCz+y/twHOwhyrIRdbuVDxSytJNDl6z/aAKlaRIwC7y8wJdkBv7FxYGgi0A==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.59.3.tgz", + "integrity": "sha512-PwFvSKsXGShKGW6n5bZOhGHEcCZXM8HofLK9fNsEwZXzFRjoY+XT1Vsf1zgyXdwTr0ZYz1/2tkZ0DBTT9jZjhw==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.12.2", - "@typescript-eslint/scope-manager": "8.56.1", - "@typescript-eslint/type-utils": "8.56.1", - "@typescript-eslint/utils": "8.56.1", - "@typescript-eslint/visitor-keys": "8.56.1", + "@typescript-eslint/scope-manager": "8.59.3", + "@typescript-eslint/type-utils": "8.59.3", + "@typescript-eslint/utils": "8.59.3", + "@typescript-eslint/visitor-keys": "8.59.3", "ignore": "^7.0.5", "natural-compare": "^1.4.0", - "ts-api-utils": "^2.4.0" + "ts-api-utils": "^2.5.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -398,22 +394,22 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^8.56.1", + "@typescript-eslint/parser": "^8.59.3", "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/parser": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.56.1.tgz", - "integrity": "sha512-klQbnPAAiGYFyI02+znpBRLyjL4/BrBd0nyWkdC0s/6xFLkXYQ8OoRrSkqacS1ddVxf/LDyODIKbQ5TgKAf/Fg==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.59.3.tgz", + "integrity": "sha512-HPwA+hVkfcriajbNvTmZv4VRauibay+cWArYUYq7u7W7PmGShMxbPxLvrwDme55a6d5alG3nrYfhyJ/G28XlLg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.56.1", - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/typescript-estree": "8.56.1", - "@typescript-eslint/visitor-keys": "8.56.1", + "@typescript-eslint/scope-manager": "8.59.3", + "@typescript-eslint/types": "8.59.3", + "@typescript-eslint/typescript-estree": "8.59.3", + "@typescript-eslint/visitor-keys": "8.59.3", "debug": "^4.4.3" }, "engines": { @@ -425,18 +421,18 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/project-service": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.56.1.tgz", - "integrity": "sha512-TAdqQTzHNNvlVFfR+hu2PDJrURiwKsUvxFn1M0h95BB8ah5jejas08jUWG4dBA68jDMI988IvtfdAI53JzEHOQ==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.59.3.tgz", + "integrity": "sha512-ECiUWa/KYRGDFUqTNehaRgzDshnJfkTABJxVemHk4ko22gcr0ukloKjWvyQ64g8YCV/UI47kN1dbmjf/GaQYng==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.56.1", - "@typescript-eslint/types": "^8.56.1", + "@typescript-eslint/tsconfig-utils": "^8.59.3", + "@typescript-eslint/types": "^8.59.3", "debug": "^4.4.3" }, "engines": { @@ -447,18 +443,18 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.56.1.tgz", - "integrity": "sha512-YAi4VDKcIZp0O4tz/haYKhmIDZFEUPOreKbfdAN3SzUDMcPhJ8QI99xQXqX+HoUVq8cs85eRKnD+rne2UAnj2w==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.59.3.tgz", + "integrity": "sha512-t2LvZnoEfzKtnPjgeEu41xw5gxq9mQVfYy4OoZ4Vlt0sk3JwxmhCca/AR7DwOiHrjWgjAj6as4AhRLKSDfvZIA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/visitor-keys": "8.56.1" + "@typescript-eslint/types": "8.59.3", + "@typescript-eslint/visitor-keys": "8.59.3" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -469,9 +465,9 @@ } }, "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.56.1.tgz", - "integrity": "sha512-qOtCYzKEeyr3aR9f28mPJqBty7+DBqsdd63eO0yyDwc6vgThj2UjWfJIcsFeSucYydqcuudMOprZ+x1SpF3ZuQ==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.59.3.tgz", + "integrity": "sha512-PcIJHjmaREXLgIAIzLnSY9VucEzz8FKXsRgFa1DmdGCK/5tJpW03TKJF01Q6VZd1lLdz2sIKPWaDUZN9dp//dw==", "dev": true, "license": "MIT", "engines": { @@ -482,21 +478,21 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.56.1.tgz", - "integrity": "sha512-yB/7dxi7MgTtGhZdaHCemf7PuwrHMenHjmzgUW1aJpO+bBU43OycnM3Wn+DdvDO/8zzA9HlhaJ0AUGuvri4oGg==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.59.3.tgz", + "integrity": "sha512-g71d8QD8UaiHGvrJwyIS1hCX5r63w6Jll+4VEYhEAHXTDIqX1JgxhTAbEHtKntL9kuc4jRo7/GWw5xfCepSccQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/typescript-estree": "8.56.1", - "@typescript-eslint/utils": "8.56.1", + "@typescript-eslint/types": "8.59.3", + "@typescript-eslint/typescript-estree": "8.59.3", + "@typescript-eslint/utils": "8.59.3", "debug": "^4.4.3", - "ts-api-utils": "^2.4.0" + "ts-api-utils": "^2.5.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -507,13 +503,13 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/types": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.56.1.tgz", - "integrity": "sha512-dbMkdIUkIkchgGDIv7KLUpa0Mda4IYjo4IAMJUZ+3xNoUXxMsk9YtKpTHSChRS85o+H9ftm51gsK1dZReY9CVw==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.59.3.tgz", + "integrity": "sha512-ePFoH0g4ludssdRFqqDxQePCxU4WQyRa9+XVwjm7yLn0FKhMeoetC+qBEEI1Eyb1pGSDveTIT09Bvw2WhlGayg==", "dev": true, "license": "MIT", "engines": { @@ -525,21 +521,21 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.56.1.tgz", - "integrity": "sha512-qzUL1qgalIvKWAf9C1HpvBjif+Vm6rcT5wZd4VoMb9+Km3iS3Cv9DY6dMRMDtPnwRAFyAi7YXJpTIEXLvdfPxg==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.59.3.tgz", + "integrity": "sha512-CbRjVRAf7Lr9Kr8RopKcbY45p2VfmmHrm0ygOCYFi7oU8q19m0Fs/6iHS7kNOmwpp+ob07ZVcAqlxUod9lYdmg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.56.1", - "@typescript-eslint/tsconfig-utils": "8.56.1", - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/visitor-keys": "8.56.1", + "@typescript-eslint/project-service": "8.59.3", + "@typescript-eslint/tsconfig-utils": "8.59.3", + "@typescript-eslint/types": "8.59.3", + "@typescript-eslint/visitor-keys": "8.59.3", "debug": "^4.4.3", "minimatch": "^10.2.2", "semver": "^7.7.3", "tinyglobby": "^0.2.15", - "ts-api-utils": "^2.4.0" + "ts-api-utils": "^2.5.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -549,20 +545,20 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/utils": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.56.1.tgz", - "integrity": "sha512-HPAVNIME3tABJ61siYlHzSWCGtOoeP2RTIaHXFMPqjrQKCGB9OgUVdiNgH7TJS2JNIQ5qQ4RsAUDuGaGme/KOA==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.59.3.tgz", + "integrity": "sha512-JAvT14goBzRzzzZyqq3P9BLArIxTtQURUtFgQ/V7FO+eU+Gg6ES+5ymOPP1wRxXcxAYeivCk4uS3jCKWI1K8Zg==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.9.1", - "@typescript-eslint/scope-manager": "8.56.1", - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/typescript-estree": "8.56.1" + "@typescript-eslint/scope-manager": "8.59.3", + "@typescript-eslint/types": "8.59.3", + "@typescript-eslint/typescript-estree": "8.59.3" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -573,17 +569,17 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.56.1.tgz", - "integrity": "sha512-KiROIzYdEV85YygXw6BI/Dx4fnBlFQu6Mq4QE4MOH9fFnhohw6wX/OAvDY2/C+ut0I3RSPKenvZJIVYqJNkhEw==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.59.3.tgz", + "integrity": "sha512-f1UQF7ggd42YiwI5wGrRaPsa+P0CINBlrkLPmGfpq/u/I/oVtecoEIfFR9ag/oa1sLOsRNZ6xehf6qMZhQGBDg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.56.1", + "@typescript-eslint/types": "8.59.3", "eslint-visitor-keys": "^5.0.0" }, "engines": { @@ -691,9 +687,9 @@ } }, "node_modules/brace-expansion": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.3.tgz", - "integrity": "sha512-fy6KJm2RawA5RcHkLa1z/ScpBeA762UF9KmZQxwIbDtRJrgLzM10depAiEQ+CXYcoiqW1/m96OAAoke2nE9EeA==", + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.6.tgz", + "integrity": "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==", "dev": true, "license": "MIT", "dependencies": { @@ -1413,13 +1409,13 @@ "license": "MIT" }, "node_modules/minimatch": { - "version": "10.2.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.3.tgz", - "integrity": "sha512-Rwi3pnapEqirPSbWbrZaa6N3nmqq4Xer/2XooiOKyV3q12ML06f7MOuc5DVH8ONZIFhwIYQ3yzPH4nt7iWHaTg==", + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", + "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { - "brace-expansion": "^5.0.2" + "brace-expansion": "^5.0.5" }, "engines": { "node": "18 || 20 || >=22" @@ -1657,9 +1653,9 @@ } }, "node_modules/prettier": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.1.tgz", - "integrity": "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==", + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.3.tgz", + "integrity": "sha512-7igPTM53cGHMW8xWuVTydi2KO233VFiTNyF5hLJqpilHfmn8C8gPf+PS7dUT64YcXFbiMGZxS9pCSxL/Dxm/Jw==", "dev": true, "license": "MIT", "bin": { @@ -1673,13 +1669,13 @@ } }, "node_modules/prettier-plugin-packagejson": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/prettier-plugin-packagejson/-/prettier-plugin-packagejson-3.0.0.tgz", - "integrity": "sha512-z8/QmPSqx/ANvvQMWJSkSq1+ihBXeuwDEYdjX3ZjRJ5Ty1k7vGbFQfhzk2eDe0rwS/TNyRjWK/qnjJEStAOtDw==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/prettier-plugin-packagejson/-/prettier-plugin-packagejson-3.0.2.tgz", + "integrity": "sha512-kmoj3hEynXwoHDo8ZhmWAIjRBoQWCDUVackiWfSDWdgD0rS3LGB61T9zoVbume/cotYdCoadUh4sqViAmXvpBQ==", "dev": true, "license": "MIT", "dependencies": { - "sort-package-json": "3.6.0" + "sort-package-json": "^3.6.0" }, "peerDependencies": { "prettier": "^3" @@ -1924,9 +1920,9 @@ } }, "node_modules/ts-api-utils": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.4.0.tgz", - "integrity": "sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.5.0.tgz", + "integrity": "sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==", "dev": true, "license": "MIT", "engines": { @@ -1950,9 +1946,9 @@ } }, "node_modules/typescript": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", - "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz", + "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", "dev": true, "license": "Apache-2.0", "bin": { @@ -1964,16 +1960,16 @@ } }, "node_modules/typescript-eslint": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.56.1.tgz", - "integrity": "sha512-U4lM6pjmBX7J5wk4szltF7I1cGBHXZopnAXCMXb3+fZ3B/0Z3hq3wS/CCUB2NZBNAExK92mCU2tEohWuwVMsDQ==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.59.3.tgz", + "integrity": "sha512-KgusgyDgG4LI8Ih/sWaCtZ06tckLAS5CvT5A4D1Q7bYVoAAyzwiZvE4BmwDHkhRVkvhRBepKeASoFzQetha7Fg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.56.1", - "@typescript-eslint/parser": "8.56.1", - "@typescript-eslint/typescript-estree": "8.56.1", - "@typescript-eslint/utils": "8.56.1" + "@typescript-eslint/eslint-plugin": "8.59.3", + "@typescript-eslint/parser": "8.59.3", + "@typescript-eslint/typescript-estree": "8.59.3", + "@typescript-eslint/utils": "8.59.3" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -1984,13 +1980,13 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/undici-types": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", - "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.21.0.tgz", + "integrity": "sha512-w9IMgQrz4O0YN1LtB7K5P63vhlIOvC7opSmouCJ+ZywlPAlO9gIkJ+otk6LvGpAs2wg4econaCz3TvQ9xPoyuQ==", "dev": true, "license": "MIT" }, diff --git a/packages/logger-js/package.json b/packages/logger-js/package.json index 55caf81cf1..c68ba6d2f2 100644 --- a/packages/logger-js/package.json +++ b/packages/logger-js/package.json @@ -1,6 +1,6 @@ { "name": "@goauthentik/logger-js", - "version": "1.0.1", + "version": "2.0.0", "description": "Pino-based logger for authentik", "license": "MIT", "repository": { @@ -13,7 +13,8 @@ "lint": "eslint --fix .", "lint-check": "eslint --max-warnings 0 .", "prettier": "prettier --write .", - "prettier-check": "prettier --check ." + "prettier-check": "prettier --check .", + "watch": "tsc -p . --watch" }, "type": "module", "types": "./out/index.d.ts", @@ -22,32 +23,22 @@ ".": { "types": "./out/index.d.ts", "node": "./lib/node.js", - "import": "./index.js", - "browser": "./lib/browser.js" - }, - "./browser": { - "types": "./out/lib/browser.d.ts", - "import": "./lib/browser.js" - }, - "./node": { - "types": "./out/lib/node.d.ts", - "import": "./lib/node.js" + "browser": "./index.js", + "import": "./index.js" } }, "devDependencies": { "@eslint/js": "^9.39.3", "@goauthentik/prettier-config": "../prettier-config", "@goauthentik/tsconfig": "../tsconfig", - "@types/node": "^25.3.0", - "@typescript-eslint/eslint-plugin": "^8.56.1", - "@typescript-eslint/parser": "^8.56.1", + "@types/node": "^25.7.0", "eslint": "^9.39.3", "pino": "^10.3.1", "pino-pretty": "^13.1.2", - "prettier": "^3.8.1", - "prettier-plugin-packagejson": "^3.0.0", - "typescript": "^5.9.3", - "typescript-eslint": "^8.56.1" + "prettier": "^3.8.3", + "prettier-plugin-packagejson": "^3.0.2", + "typescript": "^6.0.3", + "typescript-eslint": "^8.59.3" }, "peerDependencies": { "pino": "^10.3.1", @@ -60,7 +51,7 @@ ], "engines": { "node": ">=24", - "npm": ">=11.10.1" + "npm": ">=11.14.1" }, "devEngines": { "runtime": { @@ -70,14 +61,23 @@ }, "packageManager": { "name": "npm", - "version": ">=11.10.1", + "version": ">=11.14.1", "onFail": "ignore" } }, "prettier": "@goauthentik/prettier-config", "overrides": { + "@typescript-eslint/eslint-plugin": { + "typescript": "$typescript" + }, + "@typescript-eslint/parser": { + "typescript": "$typescript" + }, "format-imports": { "eslint": "$eslint" + }, + "typescript-eslint": { + "typescript": "$typescript" } }, "peerDependenciesMeta": { diff --git a/packages/logger-js/tsconfig.json b/packages/logger-js/tsconfig.json index 4d16a9602b..7244fcee0e 100644 --- a/packages/logger-js/tsconfig.json +++ b/packages/logger-js/tsconfig.json @@ -3,7 +3,6 @@ "compilerOptions": { "lib": ["ESNext"], "resolveJsonModule": true, - "baseUrl": ".", "checkJs": true, "emitDeclarationOnly": true }, diff --git a/packages/prettier-config/package-lock.json b/packages/prettier-config/package-lock.json index a8eab51796..240977f81b 100644 --- a/packages/prettier-config/package-lock.json +++ b/packages/prettier-config/package-lock.json @@ -1,12 +1,12 @@ { "name": "@goauthentik/prettier-config", - "version": "3.4.2", + "version": "4.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@goauthentik/prettier-config", - "version": "3.4.2", + "version": "4.0.0", "license": "MIT", "dependencies": { "format-imports": "^4.0.8" @@ -15,27 +15,25 @@ "@eslint/js": "^9.39.3", "@goauthentik/eslint-config": "../eslint-config", "@goauthentik/tsconfig": "../tsconfig", - "@types/node": "^25.0.0", - "@typescript-eslint/eslint-plugin": "^8.49.0", - "@typescript-eslint/parser": "^8.49.0", + "@types/node": "^25.7.0", "eslint": "^9.39.3", - "prettier": "^3.8.1", - "prettier-plugin-packagejson": "^3.0.0", - "typescript": "^5.9.3", - "typescript-eslint": "^8.56.1" + "prettier": "^3.8.3", + "prettier-plugin-packagejson": "^3.0.2", + "typescript": "^6.0.3", + "typescript-eslint": "^8.59.3" }, "engines": { "node": ">=24", - "npm": ">=11.10.1" + "npm": ">=11.14.1" }, "peerDependencies": { - "prettier": "^3.8.1", - "prettier-plugin-packagejson": "^3.0.0" + "prettier": "^3.8.3", + "prettier-plugin-packagejson": "^3.0.2" } }, "../eslint-config": { "name": "@goauthentik/eslint-config", - "version": "1.3.0", + "version": "2.0.0", "dev": true, "license": "MIT", "dependencies": { @@ -43,26 +41,26 @@ "eslint-plugin-import": "^2.32.0", "eslint-plugin-lit": "^2.2.1", "eslint-plugin-react": "^7.37.5", - "eslint-plugin-react-hooks": "^7.0.1", + "eslint-plugin-react-hooks": "^7.1.1", "eslint-plugin-wc": "^3.1.0" }, "devDependencies": { "@goauthentik/prettier-config": "../prettier-config", "@goauthentik/tsconfig": "../tsconfig", "@types/eslint": "^9.6.1", - "@types/node": "^25.3.0", - "typescript": "^5.9.3", - "typescript-eslint": "^8.56.1" + "@types/node": "^25.7.0", + "typescript": "^6.0.3", + "typescript-eslint": "^8.59.3" }, "engines": { "node": ">=24", - "npm": ">=11.10.1" + "npm": ">=11.14.1" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0", - "typescript": "^5.9.3", - "typescript-eslint": "^8.56.1" + "typescript": "^6.0.3 || ^7.0.0", + "typescript-eslint": "^8.59.3" }, "peerDependenciesMeta": { "react": { @@ -75,12 +73,12 @@ }, "../tsconfig": { "name": "@goauthentik/tsconfig", - "version": "1.0.7", + "version": "1.0.9", "dev": true, "license": "MIT", "engines": { "node": ">=24", - "npm": ">=11.10.1" + "npm": ">=11.14.1" } }, "node_modules/@babel/helper-string-parser": { @@ -102,9 +100,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.0.tgz", - "integrity": "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==", + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.2.tgz", + "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==", "license": "MIT", "dependencies": { "@babel/types": "^7.29.0" @@ -193,6 +191,18 @@ "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/@eslint-community/regexpp": { "version": "4.12.2", "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", @@ -203,47 +213,19 @@ } }, "node_modules/@eslint/config-array": { - "version": "0.21.1", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.1.tgz", - "integrity": "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==", + "version": "0.21.2", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.2.tgz", + "integrity": "sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw==", "license": "Apache-2.0", "dependencies": { "@eslint/object-schema": "^2.1.7", "debug": "^4.3.1", - "minimatch": "^3.1.2" + "minimatch": "^3.1.5" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@eslint/config-array/node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "license": "MIT" - }, - "node_modules/@eslint/config-array/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/@eslint/config-array/node_modules/minimatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.3.tgz", - "integrity": "sha512-M2GCs7Vk83NxkUyQV1bkABc4yxgz9kILhHImZiBPAZ9ybuvCb0/H7lEl5XvIg3g+9d4eNotkZA5IWwYl0tibaA==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/@eslint/config-helpers": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz", @@ -269,9 +251,9 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.4.tgz", - "integrity": "sha512-4h4MVF8pmBsncB60r0wSJiIeUKTSD4m7FmTFThG8RHlsg9ajqckLm9OraguFGZE4vVdpiI1Q4+hFnisopmG6gQ==", + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.5.tgz", + "integrity": "sha512-4IlJx0X0qftVsN5E+/vGujTRIFtwuLbNsVUe7TO6zYPDR1O6nFwvwhIKEKSrl6dZchmYBITazxKoUYOjdtjlRg==", "license": "MIT", "dependencies": { "ajv": "^6.14.0", @@ -281,7 +263,7 @@ "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.1", - "minimatch": "^3.1.3", + "minimatch": "^3.1.5", "strip-json-comments": "^3.1.1" }, "engines": { @@ -291,47 +273,10 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/@eslint/eslintrc/node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "license": "MIT" - }, - "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/@eslint/eslintrc/node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/@eslint/eslintrc/node_modules/minimatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.3.tgz", - "integrity": "sha512-M2GCs7Vk83NxkUyQV1bkABc4yxgz9kILhHImZiBPAZ9ybuvCb0/H7lEl5XvIg3g+9d4eNotkZA5IWwYl0tibaA==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/@eslint/js": { - "version": "9.39.3", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.3.tgz", - "integrity": "sha512-1B1VkCq6FuUNlQvlBYb+1jDu/gV297TIs/OeiaSR9l1H27SVW55ONE1e1Vp16NqP683+xEGzxYtv4XCiDPaQiw==", + "version": "9.39.4", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.4.tgz", + "integrity": "sha512-nE7DEIchvtiFTwBw4Lfbu59PG+kCofhjsKaCWzxTpt4lfRjRMqG6uMBzKXuEcyXhOHoUp9riAm7/aWYGhXZ9cw==", "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -437,30 +382,30 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.3.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.0.tgz", - "integrity": "sha512-4K3bqJpXpqfg2XKGK9bpDTc6xO/xoUP/RBWS7AtRMug6zZFaRekiLzjVtAoZMquxoAbzBvy5nxQ7veS5eYzf8A==", + "version": "25.7.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.7.0.tgz", + "integrity": "sha512-z+pdZyxE+RTQE9AcboAZCb4otwcrvgHD+GlBpPgn0emDVt0ohrTMhAwlr2Wd9nZ+nihhYFxO2pThz3C5qSu2Eg==", "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~7.18.0" + "undici-types": "~7.21.0" } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.56.1.tgz", - "integrity": "sha512-Jz9ZztpB37dNC+HU2HI28Bs9QXpzCz+y/twHOwhyrIRdbuVDxSytJNDl6z/aAKlaRIwC7y8wJdkBv7FxYGgi0A==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.59.3.tgz", + "integrity": "sha512-PwFvSKsXGShKGW6n5bZOhGHEcCZXM8HofLK9fNsEwZXzFRjoY+XT1Vsf1zgyXdwTr0ZYz1/2tkZ0DBTT9jZjhw==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.12.2", - "@typescript-eslint/scope-manager": "8.56.1", - "@typescript-eslint/type-utils": "8.56.1", - "@typescript-eslint/utils": "8.56.1", - "@typescript-eslint/visitor-keys": "8.56.1", + "@typescript-eslint/scope-manager": "8.59.3", + "@typescript-eslint/type-utils": "8.59.3", + "@typescript-eslint/utils": "8.59.3", + "@typescript-eslint/visitor-keys": "8.59.3", "ignore": "^7.0.5", "natural-compare": "^1.4.0", - "ts-api-utils": "^2.4.0" + "ts-api-utils": "^2.5.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -470,22 +415,32 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^8.56.1", + "@typescript-eslint/parser": "^8.59.3", "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" } }, "node_modules/@typescript-eslint/parser": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.56.1.tgz", - "integrity": "sha512-klQbnPAAiGYFyI02+znpBRLyjL4/BrBd0nyWkdC0s/6xFLkXYQ8OoRrSkqacS1ddVxf/LDyODIKbQ5TgKAf/Fg==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.59.3.tgz", + "integrity": "sha512-HPwA+hVkfcriajbNvTmZv4VRauibay+cWArYUYq7u7W7PmGShMxbPxLvrwDme55a6d5alG3nrYfhyJ/G28XlLg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.56.1", - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/typescript-estree": "8.56.1", - "@typescript-eslint/visitor-keys": "8.56.1", + "@typescript-eslint/scope-manager": "8.59.3", + "@typescript-eslint/types": "8.59.3", + "@typescript-eslint/typescript-estree": "8.59.3", + "@typescript-eslint/visitor-keys": "8.59.3", "debug": "^4.4.3" }, "engines": { @@ -497,18 +452,18 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/project-service": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.56.1.tgz", - "integrity": "sha512-TAdqQTzHNNvlVFfR+hu2PDJrURiwKsUvxFn1M0h95BB8ah5jejas08jUWG4dBA68jDMI988IvtfdAI53JzEHOQ==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.59.3.tgz", + "integrity": "sha512-ECiUWa/KYRGDFUqTNehaRgzDshnJfkTABJxVemHk4ko22gcr0ukloKjWvyQ64g8YCV/UI47kN1dbmjf/GaQYng==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.56.1", - "@typescript-eslint/types": "^8.56.1", + "@typescript-eslint/tsconfig-utils": "^8.59.3", + "@typescript-eslint/types": "^8.59.3", "debug": "^4.4.3" }, "engines": { @@ -519,18 +474,18 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.56.1.tgz", - "integrity": "sha512-YAi4VDKcIZp0O4tz/haYKhmIDZFEUPOreKbfdAN3SzUDMcPhJ8QI99xQXqX+HoUVq8cs85eRKnD+rne2UAnj2w==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.59.3.tgz", + "integrity": "sha512-t2LvZnoEfzKtnPjgeEu41xw5gxq9mQVfYy4OoZ4Vlt0sk3JwxmhCca/AR7DwOiHrjWgjAj6as4AhRLKSDfvZIA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/visitor-keys": "8.56.1" + "@typescript-eslint/types": "8.59.3", + "@typescript-eslint/visitor-keys": "8.59.3" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -541,9 +496,9 @@ } }, "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.56.1.tgz", - "integrity": "sha512-qOtCYzKEeyr3aR9f28mPJqBty7+DBqsdd63eO0yyDwc6vgThj2UjWfJIcsFeSucYydqcuudMOprZ+x1SpF3ZuQ==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.59.3.tgz", + "integrity": "sha512-PcIJHjmaREXLgIAIzLnSY9VucEzz8FKXsRgFa1DmdGCK/5tJpW03TKJF01Q6VZd1lLdz2sIKPWaDUZN9dp//dw==", "dev": true, "license": "MIT", "engines": { @@ -554,21 +509,21 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.56.1.tgz", - "integrity": "sha512-yB/7dxi7MgTtGhZdaHCemf7PuwrHMenHjmzgUW1aJpO+bBU43OycnM3Wn+DdvDO/8zzA9HlhaJ0AUGuvri4oGg==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.59.3.tgz", + "integrity": "sha512-g71d8QD8UaiHGvrJwyIS1hCX5r63w6Jll+4VEYhEAHXTDIqX1JgxhTAbEHtKntL9kuc4jRo7/GWw5xfCepSccQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/typescript-estree": "8.56.1", - "@typescript-eslint/utils": "8.56.1", + "@typescript-eslint/types": "8.59.3", + "@typescript-eslint/typescript-estree": "8.59.3", + "@typescript-eslint/utils": "8.59.3", "debug": "^4.4.3", - "ts-api-utils": "^2.4.0" + "ts-api-utils": "^2.5.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -579,13 +534,13 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/types": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.56.1.tgz", - "integrity": "sha512-dbMkdIUkIkchgGDIv7KLUpa0Mda4IYjo4IAMJUZ+3xNoUXxMsk9YtKpTHSChRS85o+H9ftm51gsK1dZReY9CVw==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.59.3.tgz", + "integrity": "sha512-ePFoH0g4ludssdRFqqDxQePCxU4WQyRa9+XVwjm7yLn0FKhMeoetC+qBEEI1Eyb1pGSDveTIT09Bvw2WhlGayg==", "dev": true, "license": "MIT", "engines": { @@ -597,21 +552,21 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.56.1.tgz", - "integrity": "sha512-qzUL1qgalIvKWAf9C1HpvBjif+Vm6rcT5wZd4VoMb9+Km3iS3Cv9DY6dMRMDtPnwRAFyAi7YXJpTIEXLvdfPxg==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.59.3.tgz", + "integrity": "sha512-CbRjVRAf7Lr9Kr8RopKcbY45p2VfmmHrm0ygOCYFi7oU8q19m0Fs/6iHS7kNOmwpp+ob07ZVcAqlxUod9lYdmg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.56.1", - "@typescript-eslint/tsconfig-utils": "8.56.1", - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/visitor-keys": "8.56.1", + "@typescript-eslint/project-service": "8.59.3", + "@typescript-eslint/tsconfig-utils": "8.59.3", + "@typescript-eslint/types": "8.59.3", + "@typescript-eslint/visitor-keys": "8.59.3", "debug": "^4.4.3", "minimatch": "^10.2.2", "semver": "^7.7.3", "tinyglobby": "^0.2.15", - "ts-api-utils": "^2.4.0" + "ts-api-utils": "^2.5.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -621,20 +576,59 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.6.tgz", + "integrity": "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", + "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.5" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/@typescript-eslint/utils": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.56.1.tgz", - "integrity": "sha512-HPAVNIME3tABJ61siYlHzSWCGtOoeP2RTIaHXFMPqjrQKCGB9OgUVdiNgH7TJS2JNIQ5qQ4RsAUDuGaGme/KOA==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.59.3.tgz", + "integrity": "sha512-JAvT14goBzRzzzZyqq3P9BLArIxTtQURUtFgQ/V7FO+eU+Gg6ES+5ymOPP1wRxXcxAYeivCk4uS3jCKWI1K8Zg==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.9.1", - "@typescript-eslint/scope-manager": "8.56.1", - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/typescript-estree": "8.56.1" + "@typescript-eslint/scope-manager": "8.59.3", + "@typescript-eslint/types": "8.59.3", + "@typescript-eslint/typescript-estree": "8.59.3" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -645,17 +639,17 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.56.1.tgz", - "integrity": "sha512-KiROIzYdEV85YygXw6BI/Dx4fnBlFQu6Mq4QE4MOH9fFnhohw6wX/OAvDY2/C+ut0I3RSPKenvZJIVYqJNkhEw==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.59.3.tgz", + "integrity": "sha512-f1UQF7ggd42YiwI5wGrRaPsa+P0CINBlrkLPmGfpq/u/I/oVtecoEIfFR9ag/oa1sLOsRNZ6xehf6qMZhQGBDg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.56.1", + "@typescript-eslint/types": "8.59.3", "eslint-visitor-keys": "^5.0.0" }, "engines": { @@ -807,24 +801,19 @@ "license": "Python-2.0" }, "node_modules/balanced-match": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", - "license": "MIT", - "engines": { - "node": "18 || 20 || >=22" - } + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" }, "node_modules/brace-expansion": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.3.tgz", - "integrity": "sha512-fy6KJm2RawA5RcHkLa1z/ScpBeA762UF9KmZQxwIbDtRJrgLzM10depAiEQ+CXYcoiqW1/m96OAAoke2nE9EeA==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "license": "MIT", "dependencies": { - "balanced-match": "^4.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, "node_modules/builtin-modules": { @@ -982,24 +971,24 @@ } }, "node_modules/eslint": { - "version": "9.39.3", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.3.tgz", - "integrity": "sha512-VmQ+sifHUbI/IcSopBCF/HO3YiHQx/AVd3UVyYL6weuwW+HvON9VYn5l6Zl1WZzPWXPNZrSQpxwkkZ/VuvJZzg==", + "version": "9.39.4", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.4.tgz", + "integrity": "sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ==", "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.21.1", + "@eslint/config-array": "^0.21.2", "@eslint/config-helpers": "^0.4.2", "@eslint/core": "^0.17.0", - "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.39.3", + "@eslint/eslintrc": "^3.3.5", + "@eslint/js": "9.39.4", "@eslint/plugin-kit": "^0.4.1", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", - "ajv": "^6.12.4", + "ajv": "^6.14.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.6", "debug": "^4.3.2", @@ -1018,7 +1007,7 @@ "is-glob": "^4.0.0", "json-stable-stringify-without-jsonify": "^1.0.1", "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", + "minimatch": "^3.1.5", "natural-compare": "^1.4.0", "optionator": "^0.9.3" }, @@ -1057,34 +1046,6 @@ } }, "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "license": "MIT" - }, - "node_modules/eslint/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/eslint/node_modules/eslint-visitor-keys": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", @@ -1096,27 +1057,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/eslint/node_modules/minimatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.3.tgz", - "integrity": "sha512-M2GCs7Vk83NxkUyQV1bkABc4yxgz9kILhHImZiBPAZ9ybuvCb0/H7lEl5XvIg3g+9d4eNotkZA5IWwYl0tibaA==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/espree": { "version": "10.4.0", "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", @@ -1134,18 +1074,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, "node_modules/esquery": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", @@ -1272,9 +1200,9 @@ } }, "node_modules/flatted": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", - "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz", + "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==", "license": "ISC" }, "node_modules/format-imports": { @@ -1312,10 +1240,59 @@ "node": ">=16" } }, + "node_modules/format-imports/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/format-imports/node_modules/brace-expansion": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", + "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/format-imports/node_modules/minimatch": { + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", + "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/format-imports/node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, "node_modules/fs-extra": { - "version": "11.3.3", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.3.tgz", - "integrity": "sha512-VWSRii4t0AFm6ixFFmLLx1t7wS1gh+ckoa84aOeapGum0h+EZd1EhEumSB+ZdDLnEPuucsVB9oB7cxJHap6Afg==", + "version": "11.3.4", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.4.tgz", + "integrity": "sha512-CTXd6rk/M3/ULNQj8FBqBWHYBVYybQ3VPBw0xGKFe3tuH7ytT6ACnvzpIQ3UZtB8yvUKC2cXn1a+x+5EVQLovA==", "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", @@ -1376,19 +1353,18 @@ } }, "node_modules/ignore": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", - "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", - "dev": true, + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "license": "MIT", "engines": { "node": ">= 4" } }, "node_modules/immutable": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.4.tgz", - "integrity": "sha512-p6u1bG3YSnINT5RQmx/yRZBpenIl30kVxkTLDyHLIMk0gict704Q9n+thfDI7lTRm9vXdDYutVzXhzcThxTnXA==", + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.5.tgz", + "integrity": "sha512-t7xcm2siw+hlUM68I+UEOK+z84RzmN59as9DZ7P1l0994DKUWV7UXBMQZVxaoMSRQ+PBZbHCOoBt7a2wxOMt+A==", "license": "MIT" }, "node_modules/import-fresh": { @@ -1582,18 +1558,15 @@ } }, "node_modules/minimatch": { - "version": "10.2.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.3.tgz", - "integrity": "sha512-Rwi3pnapEqirPSbWbrZaa6N3nmqq4Xer/2XooiOKyV3q12ML06f7MOuc5DVH8ONZIFhwIYQ3yzPH4nt7iWHaTg==", - "license": "BlueOak-1.0.0", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "license": "ISC", "dependencies": { - "brace-expansion": "^5.0.2" + "brace-expansion": "^1.1.7" }, "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": "*" } }, "node_modules/ms": { @@ -1722,9 +1695,9 @@ "license": "ISC" }, "node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "dev": true, "license": "MIT", "engines": { @@ -1735,9 +1708,9 @@ } }, "node_modules/postcss": { - "version": "8.5.6", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", - "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "version": "8.5.8", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.8.tgz", + "integrity": "sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==", "funding": [ { "type": "opencollective", @@ -1772,9 +1745,9 @@ } }, "node_modules/prettier": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.1.tgz", - "integrity": "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==", + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.3.tgz", + "integrity": "sha512-7igPTM53cGHMW8xWuVTydi2KO233VFiTNyF5hLJqpilHfmn8C8gPf+PS7dUT64YcXFbiMGZxS9pCSxL/Dxm/Jw==", "license": "MIT", "bin": { "prettier": "bin/prettier.cjs" @@ -1787,13 +1760,13 @@ } }, "node_modules/prettier-plugin-packagejson": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/prettier-plugin-packagejson/-/prettier-plugin-packagejson-3.0.0.tgz", - "integrity": "sha512-z8/QmPSqx/ANvvQMWJSkSq1+ihBXeuwDEYdjX3ZjRJ5Ty1k7vGbFQfhzk2eDe0rwS/TNyRjWK/qnjJEStAOtDw==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/prettier-plugin-packagejson/-/prettier-plugin-packagejson-3.0.2.tgz", + "integrity": "sha512-kmoj3hEynXwoHDo8ZhmWAIjRBoQWCDUVackiWfSDWdgD0rS3LGB61T9zoVbume/cotYdCoadUh4sqViAmXvpBQ==", "dev": true, "license": "MIT", "dependencies": { - "sort-package-json": "3.6.0" + "sort-package-json": "^3.6.0" }, "peerDependencies": { "prettier": "^3" @@ -1876,9 +1849,9 @@ "license": "MIT" }, "node_modules/sort-package-json": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/sort-package-json/-/sort-package-json-3.6.0.tgz", - "integrity": "sha512-fyJsPLhWvY7u2KsKPZn1PixbXp+1m7V8NWqU8CvgFRbMEX41Ffw1kD8n0CfJiGoaSfoAvbrqRRl/DcHO8omQOQ==", + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/sort-package-json/-/sort-package-json-3.6.1.tgz", + "integrity": "sha512-Chgejw1+10p2D0U2tB7au1lHtz6TkFnxmvZktyBCRyV0GgmF6nl1IxXxAsPtJVsUyg/fo+BfCMAVVFUVRkAHrQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2003,9 +1976,9 @@ } }, "node_modules/ts-api-utils": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.4.0.tgz", - "integrity": "sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.5.0.tgz", + "integrity": "sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==", "dev": true, "license": "MIT", "engines": { @@ -2028,9 +2001,10 @@ } }, "node_modules/typescript": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", - "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz", + "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", + "dev": true, "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", @@ -2041,16 +2015,16 @@ } }, "node_modules/typescript-eslint": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.56.1.tgz", - "integrity": "sha512-U4lM6pjmBX7J5wk4szltF7I1cGBHXZopnAXCMXb3+fZ3B/0Z3hq3wS/CCUB2NZBNAExK92mCU2tEohWuwVMsDQ==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.59.3.tgz", + "integrity": "sha512-KgusgyDgG4LI8Ih/sWaCtZ06tckLAS5CvT5A4D1Q7bYVoAAyzwiZvE4BmwDHkhRVkvhRBepKeASoFzQetha7Fg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.56.1", - "@typescript-eslint/parser": "8.56.1", - "@typescript-eslint/typescript-estree": "8.56.1", - "@typescript-eslint/utils": "8.56.1" + "@typescript-eslint/eslint-plugin": "8.59.3", + "@typescript-eslint/parser": "8.59.3", + "@typescript-eslint/typescript-estree": "8.59.3", + "@typescript-eslint/utils": "8.59.3" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -2061,13 +2035,13 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/undici-types": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", - "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.21.0.tgz", + "integrity": "sha512-w9IMgQrz4O0YN1LtB7K5P63vhlIOvC7opSmouCJ+ZywlPAlO9gIkJ+otk6LvGpAs2wg4econaCz3TvQ9xPoyuQ==", "dev": true, "license": "MIT" }, diff --git a/packages/prettier-config/package.json b/packages/prettier-config/package.json index 5af4faa5ec..a91d0aaba4 100644 --- a/packages/prettier-config/package.json +++ b/packages/prettier-config/package.json @@ -1,6 +1,6 @@ { "name": "@goauthentik/prettier-config", - "version": "3.4.3", + "version": "4.0.0", "description": "authentik's Prettier config", "license": "MIT", "repository": { @@ -39,18 +39,16 @@ "@eslint/js": "^9.39.3", "@goauthentik/eslint-config": "../eslint-config", "@goauthentik/tsconfig": "../tsconfig", - "@types/node": "^25.0.0", - "@typescript-eslint/eslint-plugin": "^8.49.0", - "@typescript-eslint/parser": "^8.49.0", + "@types/node": "^25.7.0", "eslint": "^9.39.3", - "prettier": "^3.8.1", - "prettier-plugin-packagejson": "^3.0.0", - "typescript": "^5.9.3", - "typescript-eslint": "^8.56.1" + "prettier": "^3.8.3", + "prettier-plugin-packagejson": "^3.0.2", + "typescript": "^6.0.3", + "typescript-eslint": "^8.59.3" }, "peerDependencies": { - "prettier": "^3.8.1", - "prettier-plugin-packagejson": "^3.0.0" + "prettier": "^3.8.3", + "prettier-plugin-packagejson": "^3.0.2" }, "files": [ "./index.js", @@ -59,7 +57,7 @@ ], "engines": { "node": ">=24", - "npm": ">=11.10.1" + "npm": ">=11.14.1" }, "devEngines": { "runtime": { @@ -69,14 +67,23 @@ }, "packageManager": { "name": "npm", - "version": ">=11.10.1", + "version": ">=11.14.1", "onFail": "warn" } }, "prettier": "./index.js", "overrides": { + "@typescript-eslint/eslint-plugin": { + "typescript": "$typescript" + }, + "@typescript-eslint/parser": { + "typescript": "$typescript" + }, "format-imports": { "eslint": "$eslint" + }, + "typescript-eslint": { + "typescript": "$typescript" } }, "publishConfig": { diff --git a/packages/prettier-config/tsconfig.json b/packages/prettier-config/tsconfig.json index d0a26a13bc..af0ccaac72 100644 --- a/packages/prettier-config/tsconfig.json +++ b/packages/prettier-config/tsconfig.json @@ -1,7 +1,6 @@ { "extends": "@goauthentik/tsconfig", "compilerOptions": { - "baseUrl": ".", "checkJs": true, "emitDeclarationOnly": true } diff --git a/packages/tsconfig/package-lock.json b/packages/tsconfig/package-lock.json index c8f5f53636..a886f117ef 100644 --- a/packages/tsconfig/package-lock.json +++ b/packages/tsconfig/package-lock.json @@ -1,16 +1,16 @@ { "name": "@goauthentik/tsconfig", - "version": "1.0.7", + "version": "2.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@goauthentik/tsconfig", - "version": "1.0.7", + "version": "2.0.0", "license": "MIT", "engines": { "node": ">=24", - "npm": ">=11.10.1" + "npm": ">=11.14.1" } } } diff --git a/packages/tsconfig/package.json b/packages/tsconfig/package.json index 4d956cc787..852ac11189 100644 --- a/packages/tsconfig/package.json +++ b/packages/tsconfig/package.json @@ -1,6 +1,6 @@ { "name": "@goauthentik/tsconfig", - "version": "1.0.7", + "version": "2.0.0", "description": "authentik's base TypeScript configuration.", "license": "MIT", "repository": { @@ -15,7 +15,7 @@ "type": "module", "engines": { "node": ">=24", - "npm": ">=11.10.1" + "npm": ">=11.14.1" }, "devEngines": { "runtime": { @@ -25,7 +25,7 @@ }, "packageManager": { "name": "npm", - "version": ">=11.10.1", + "version": ">=11.14.1", "onFail": "warn" } }, diff --git a/packages/tsconfig/tsconfig.json b/packages/tsconfig/tsconfig.json index 2f3f1e9584..73d6221fd9 100644 --- a/packages/tsconfig/tsconfig.json +++ b/packages/tsconfig/tsconfig.json @@ -2,15 +2,14 @@ "$schema": "https://json.schemastore.org/tsconfig", "compilerOptions": { "alwaysStrict": true, - "baseUrl": ".", "composite": true, "declaration": true, "declarationMap": true, - "esModuleInterop": false, "isolatedModules": true, "incremental": true, "jsx": "react-jsx", "lib": ["ESNext"], + "types": ["node"], "module": "NodeNext", "moduleResolution": "NodeNext", "newLine": "lf", diff --git a/pyproject.toml b/pyproject.toml index b52488f3fe..dc010cbba4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,15 +1,15 @@ [project] name = "authentik" -version = "2026.5.0-rc1" +version = "2026.8.0-rc1" description = "" authors = [{ name = "authentik Team", email = "hello@goauthentik.io" }] requires-python = "==3.14.*" dependencies = [ "ak-guardian==3.2.0", "argon2-cffi==25.1.0", - "cachetools==7.0.5", + "cachetools==7.1.1", "channels==4.3.2", - "cryptography==46.0.5", + "cryptography==48.0.0", "dacite==1.9.2", "deepmerge==2.0", "defusedxml==0.7.1", @@ -25,48 +25,48 @@ dependencies = [ "django-prometheus==2.4.1", "django-storages[s3]==1.14.6", "django-tenants==3.10.1", - "django==5.2.12", + "django==5.2.14", "djangoql==0.19.1", - "djangorestframework==3.17.0", + "djangorestframework==3.17.1", "docker==7.1.0", "drf-orjson-renderer==1.8.0", - "drf-spectacular==0.28.0", + "drf-spectacular==0.29.0", "dumb-init==1.2.5.post1", "duo-client==5.6.1", - "fido2==2.1.1", + "fido2==2.2.0", "geoip2==5.2.0", "geopy==2.4.1", - "google-api-python-client==2.193.0", + "google-api-python-client==2.195.0", "gssapi==1.11.1", - "gunicorn==25.1.0", + "gunicorn==25.3.0", "jsonpatch==1.33", - "jwcrypto==1.5.6", + "jwcrypto==1.5.7", "kubernetes==35.0.0", "ldap3==2.9.1", - "lxml==6.0.2", - "msgraph-sdk==1.55.0", + "lxml==6.1.0", + "msgraph-sdk==1.56.0", "opencontainers==0.0.15", - "packaging==26.0", - "paramiko==4.0.0", - "psycopg[c,pool]==3.3.3", + "packaging==26.2", + "paramiko==5.0.0", + "psycopg[c,pool]==3.3.4", "pydantic-scim==0.0.8", - "pydantic==2.12.5", + "pydantic==2.13.4", "pyjwt==2.11.0", "pyrad==2.5.4", - "python-kadmin-rs==0.7.0", + "python-kadmin-rs==0.7.2", "pyyaml==6.0.3", "requests-oauthlib==2.0.0", "scim2-filter-parser==0.7.0", - "sentry-sdk==2.55.0", + "sentry-sdk==2.59.0", "service-identity==24.2.0", "setproctitle==1.3.7", "structlog==25.5.0", "swagger-spec-validator==3.0.4", - "twilio==9.10.3", - "ua-parser==1.0.1", + "twilio==9.10.9", + "ua-parser==1.0.2", "unidecode==1.4.0", "urllib3<3", - "uvicorn[standard]==0.42.0", + "uvicorn[standard]==0.46.0", "watchdog==6.0.0", "webauthn==2.7.1", "wsproto==1.3.2", @@ -76,39 +76,39 @@ dependencies = [ [dependency-groups] dev = [ - "aws-cdk-lib==2.244.0", + "aws-cdk-lib==2.252.0", "bandit==1.9.4", "black==26.3.1", "bpython==0.26", "colorama==0.4.6", - "constructs==10.5.1", + "constructs==10.6.0", "coverage[toml]==7.13.5", "daphne==4.2.1", "debugpy==1.8.20", - "django-stubs[compatible-mypy]==5.2.9", - "djangorestframework-stubs[compatible-mypy]==3.16.8", + "django-stubs[compatible-mypy]==6.0.4", + "djangorestframework-stubs[compatible-mypy]==3.16.9", "drf-jsonschema-serializer==3.0.0", "freezegun==1.5.5", "importlib-metadata==8.7.1", "k5test==0.10.4", "lxml-stubs==0.5.1", - "mypy==1.19.1", + "mypy==1.20.2", "pdoc==16.0.0", "pytest-django==4.12.0", "pytest-flakefinder==1.1.0", "pytest-github-actions-annotate-failures==0.4.0", - "pytest-randomly==4.0.1", + "pytest-randomly==4.1.0", "pytest-timeout==2.4.0", - "pytest==9.0.2", + "pytest==9.0.3", "requests-mock==1.12.1", - "ruff==0.15.7", - "selenium==4.41.0", - "types-channels==4.3.0.20250822", - "types-docker==7.1.0.20260109", - "types-jwcrypto==1.5.0.20251102", - "types-ldap3==2.9.13.20260319", - "types-requests==2.32.4.20260107", - "types-zxcvbn==4.5.0.20250809", + "ruff==0.15.12", + "selenium==4.43.0", + "types-channels==4.3.0.20260421", + "types-docker==7.1.0.20260409", + "types-jwcrypto==1.5.7.20260409", + "types-ldap3==2.9.13.20260408", + "types-requests==2.33.0.20260503", + "types-zxcvbn==4.5.0.20260408", ] [tool.uv] @@ -181,7 +181,6 @@ max-returns = 10 [tool.mypy] plugins = ["mypy_django_plugin.main", "mypy_drf_plugin.main", "pydantic.mypy"] -exclude = ['^gen-py-api/'] [[tool.mypy.overrides]] module = ["django_tenants.*", "dramatiq.*", "pglock.*"] @@ -257,6 +256,7 @@ module = [ "authentik.tenants.*", "guardian.*", "lifecycle.*", + "tests.*", "tests.e2e.*", "tests.integration.*", "tests.openid_conformance.*", @@ -279,6 +279,9 @@ omit = [ "website/", "docs/", ] +concurrency = ["thread", "multiprocessing"] +parallel = true +sigterm = true [tool.coverage.report] sort = "Cover" diff --git a/rust-toolchain.toml b/rust-toolchain.toml index 7e00284a46..113908ff13 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,3 +1,3 @@ [toolchain] -channel = "1.94.0" +channel = "1.95.0" components = ["clippy", "rust-analyzer", "llvm-tools-preview"] diff --git a/schema.yml b/schema.yml index e65c32e42b..4e5708e79f 100644 --- a/schema.yml +++ b/schema.yml @@ -1,7 +1,7 @@ openapi: 3.0.3 info: title: authentik - version: 2026.5.0-rc1 + version: 2026.8.0-rc1 description: Making authentication simple. contact: email: hello@goauthentik.io @@ -44,9 +44,8 @@ paths: - in: query name: usage schema: - enum: - - media - type: string + allOf: + - $ref: '#/components/schemas/UsageEnum' default: media minLength: 1 tags: @@ -94,9 +93,8 @@ paths: - in: query name: usage schema: - enum: - - media - type: string + allOf: + - $ref: '#/components/schemas/UsageEnum' default: media minLength: 1 tags: @@ -3174,6 +3172,11 @@ paths: schema: type: string format: uuid + - in: query + name: flow_lockdown + schema: + type: string + format: uuid - in: query name: flow_recovery schema: @@ -3742,12 +3745,7 @@ paths: - in: query name: intent schema: - type: string - enum: - - api - - app_password - - recovery - - verification + $ref: '#/components/schemas/IntentEnum' - in: query name: managed schema: @@ -4254,12 +4252,7 @@ paths: schema: type: array items: - type: string - enum: - - external - - internal - - internal_service_account - - service_account + $ref: '#/components/schemas/UserTypeEnum' explode: true style: form - in: query @@ -4534,6 +4527,41 @@ paths: description: Bad request '403': $ref: '#/components/responses/GenericErrorResponse' + /core/users/{id}/set_password_hash/: + post: + operationId: core_users_set_password_hash_create + description: |- + Set a user's password from a pre-hashed Django password value. + + Submit the Django password hash in the shared ``password`` request field. + + This updates authentik's local password verifier only. It does not attempt + to propagate the password change to LDAP or Kerberos because no raw password + is available from the request payload. + parameters: + - in: path + name: id + schema: + type: integer + description: A unique integer value identifying this User. + required: true + tags: + - core + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UserPasswordHashSetRequest' + required: true + security: + - authentik: [] + responses: + '204': + description: Successfully changed password + '400': + description: Bad request + '403': + $ref: '#/components/responses/GenericErrorResponse' /core/users/{id}/used_by/: get: operationId: core_users_used_by_list @@ -4562,6 +4590,35 @@ paths: $ref: '#/components/responses/ValidationErrorResponse' '403': $ref: '#/components/responses/GenericErrorResponse' + /core/users/account_lockdown/: + post: + operationId: core_users_account_lockdown_create + description: Choose the target account, then return a flow link. + tags: + - core + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UserAccountLockdownRequest' + security: + - authentik: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/Link' + examples: + LockdownFlowURL: + value: + link: https://example.invalid/if/flow/default-account-lockdown/ + summary: Lockdown flow URL + description: '' + '400': + description: No lockdown flow configured or the flow is not applicable + '403': + description: Permission denied (when targeting another user) /core/users/export/: post: operationId: core_users_export_create @@ -4688,12 +4745,7 @@ paths: schema: type: array items: - type: string - enum: - - external - - internal - - internal_service_account - - service_account + $ref: '#/components/schemas/UserTypeEnum' explode: true style: form - in: query @@ -4815,15 +4867,9 @@ paths: schema: type: array items: - type: string - enum: - - dsa - - ec - - ed25519 - - ed448 - - rsa - description: Filter by key algorithm type (RSA, EC, DSA, etc). Can be specified - multiple times (e.g. '?key_type=rsa&key_type=ec') + $ref: '#/components/schemas/KeyTypeEnum' + description: Filter by key algorithm type (RSA, EC, DSA, etc). Can be specified + multiple times (e.g. '?key_type=rsa&key_type=ec') - in: query name: managed schema: @@ -5340,6 +5386,8 @@ paths: using this object tags: - endpoints + security: + - {} responses: '200': content: @@ -5384,6 +5432,8 @@ paths: using this object tags: - endpoints + security: + - {} responses: '200': content: @@ -5407,6 +5457,8 @@ paths: application/json: schema: $ref: '#/components/schemas/DeviceFactsRequest' + security: + - {} responses: '204': description: Successfully checked in @@ -5427,6 +5479,8 @@ paths: schema: $ref: '#/components/schemas/EnrollRequest' required: true + security: + - {} responses: '200': content: @@ -5672,6 +5726,209 @@ paths: $ref: '#/components/responses/ValidationErrorResponse' '403': $ref: '#/components/responses/GenericErrorResponse' + /endpoints/agents/psso/ise/: + get: + operationId: endpoints_agents_psso_ise_list + description: Mixin to add a used_by endpoint to return a list of all objects + using this object + parameters: + - in: query + name: apple_enclave_key_id + schema: + type: string + - $ref: '#/components/parameters/QueryPaginationOrdering' + - $ref: '#/components/parameters/QueryPaginationPage' + - $ref: '#/components/parameters/QueryPaginationPageSize' + - $ref: '#/components/parameters/QuerySearch' + - in: query + name: user + schema: + type: integer + tags: + - endpoints + security: + - authentik: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginatedAppleIndependentSecureEnclaveList' + description: '' + '400': + $ref: '#/components/responses/ValidationErrorResponse' + '403': + $ref: '#/components/responses/GenericErrorResponse' + post: + operationId: endpoints_agents_psso_ise_create + description: Mixin to add a used_by endpoint to return a list of all objects + using this object + tags: + - endpoints + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AppleIndependentSecureEnclaveRequest' + required: true + security: + - authentik: [] + responses: + '201': + content: + application/json: + schema: + $ref: '#/components/schemas/AppleIndependentSecureEnclave' + description: '' + '400': + $ref: '#/components/responses/ValidationErrorResponse' + '403': + $ref: '#/components/responses/GenericErrorResponse' + /endpoints/agents/psso/ise/{uuid}/: + get: + operationId: endpoints_agents_psso_ise_retrieve + description: Mixin to add a used_by endpoint to return a list of all objects + using this object + parameters: + - in: path + name: uuid + schema: + type: string + format: uuid + description: A UUID string identifying this Apple Independent Secure Enclave. + required: true + tags: + - endpoints + security: + - authentik: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/AppleIndependentSecureEnclave' + description: '' + '400': + $ref: '#/components/responses/ValidationErrorResponse' + '403': + $ref: '#/components/responses/GenericErrorResponse' + put: + operationId: endpoints_agents_psso_ise_update + description: Mixin to add a used_by endpoint to return a list of all objects + using this object + parameters: + - in: path + name: uuid + schema: + type: string + format: uuid + description: A UUID string identifying this Apple Independent Secure Enclave. + required: true + tags: + - endpoints + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AppleIndependentSecureEnclaveRequest' + required: true + security: + - authentik: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/AppleIndependentSecureEnclave' + description: '' + '400': + $ref: '#/components/responses/ValidationErrorResponse' + '403': + $ref: '#/components/responses/GenericErrorResponse' + patch: + operationId: endpoints_agents_psso_ise_partial_update + description: Mixin to add a used_by endpoint to return a list of all objects + using this object + parameters: + - in: path + name: uuid + schema: + type: string + format: uuid + description: A UUID string identifying this Apple Independent Secure Enclave. + required: true + tags: + - endpoints + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedAppleIndependentSecureEnclaveRequest' + security: + - authentik: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/AppleIndependentSecureEnclave' + description: '' + '400': + $ref: '#/components/responses/ValidationErrorResponse' + '403': + $ref: '#/components/responses/GenericErrorResponse' + delete: + operationId: endpoints_agents_psso_ise_destroy + description: Mixin to add a used_by endpoint to return a list of all objects + using this object + parameters: + - in: path + name: uuid + schema: + type: string + format: uuid + description: A UUID string identifying this Apple Independent Secure Enclave. + required: true + tags: + - endpoints + security: + - authentik: [] + responses: + '204': + description: No response body + '400': + $ref: '#/components/responses/ValidationErrorResponse' + '403': + $ref: '#/components/responses/GenericErrorResponse' + /endpoints/agents/psso/ise/{uuid}/used_by/: + get: + operationId: endpoints_agents_psso_ise_used_by_list + description: Get a list of all objects that use this object + parameters: + - in: path + name: uuid + schema: + type: string + format: uuid + description: A UUID string identifying this Apple Independent Secure Enclave. + required: true + tags: + - endpoints + security: + - authentik: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/UsedBy' + description: '' + '400': + $ref: '#/components/responses/ValidationErrorResponse' + '403': + $ref: '#/components/responses/GenericErrorResponse' /endpoints/agents/psso/register/device/: post: operationId: endpoints_agents_psso_register_device_create @@ -7100,41 +7357,7 @@ paths: schema: type: array items: - type: string - enum: - - authorize_application - - configuration_error - - configuration_warning - - custom_ - - email_sent - - export_ready - - flow_execution - - impersonation_ended - - impersonation_started - - invitation_used - - login - - login_failed - - logout - - model_created - - model_deleted - - model_updated - - password_set - - policy_exception - - policy_execution - - property_mapping_exception - - review_attested - - review_completed - - review_initiated - - review_overdue - - secret_rotate - - secret_view - - source_linked - - suspicious_request - - system_exception - - system_task_exception - - system_task_execution - - update_available - - user_write + $ref: '#/components/schemas/EventActions' explode: true style: form - in: query @@ -7151,6 +7374,11 @@ paths: schema: type: string description: Context Authorized application + - in: query + name: context_device + schema: + type: string + description: Context Device Primary Key - in: query name: context_model_app schema: @@ -7366,41 +7594,7 @@ paths: schema: type: array items: - type: string - enum: - - authorize_application - - configuration_error - - configuration_warning - - custom_ - - email_sent - - export_ready - - flow_execution - - impersonation_ended - - impersonation_started - - invitation_used - - login - - login_failed - - logout - - model_created - - model_deleted - - model_updated - - password_set - - policy_exception - - policy_execution - - property_mapping_exception - - review_attested - - review_completed - - review_initiated - - review_overdue - - secret_rotate - - secret_view - - source_linked - - suspicious_request - - system_exception - - system_task_exception - - system_task_execution - - update_available - - user_write + $ref: '#/components/schemas/EventActions' explode: true style: form - in: query @@ -7417,6 +7611,11 @@ paths: schema: type: string description: Context Authorized application + - in: query + name: context_device + schema: + type: string + description: Context Device Primary Key - in: query name: context_model_app schema: @@ -7454,6 +7653,88 @@ paths: $ref: '#/components/responses/ValidationErrorResponse' '403': $ref: '#/components/responses/GenericErrorResponse' + /events/events/stats/: + get: + operationId: events_events_stats_retrieve + description: Get event stats for specified filters and count steps + parameters: + - in: query + name: action + schema: + type: string + - in: query + name: actions + schema: + type: array + items: + $ref: '#/components/schemas/EventActions' + explode: true + style: form + - in: query + name: brand_name + schema: + type: string + description: Brand name + - in: query + name: client_ip + schema: + type: string + - in: query + name: context_authorized_app + schema: + type: string + description: Context Authorized application + - in: query + name: context_device + schema: + type: string + description: Context Device Primary Key + - in: query + name: context_model_app + schema: + type: string + description: Context Model App + - in: query + name: context_model_name + schema: + type: string + description: Context Model Name + - in: query + name: context_model_pk + schema: + type: string + description: Context Model Primary Key + - in: query + name: count_steps + schema: + type: array + items: + type: string + minLength: 1 + description: Timedelta, format of 'weeks=3;days=2;hours=3,seconds=2' + required: true + - $ref: '#/components/parameters/QueryPaginationOrdering' + - $ref: '#/components/parameters/QuerySearch' + - in: query + name: username + schema: + type: string + description: Username + tags: + - events + security: + - authentik: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EventStats' + description: '' + '400': + $ref: '#/components/responses/ValidationErrorResponse' + '403': + $ref: '#/components/responses/GenericErrorResponse' /events/events/top_per_user/: get: operationId: events_events_top_per_user_list @@ -7498,41 +7779,7 @@ paths: schema: type: array items: - type: string - enum: - - authorize_application - - configuration_error - - configuration_warning - - custom_ - - email_sent - - export_ready - - flow_execution - - impersonation_ended - - impersonation_started - - invitation_used - - login - - login_failed - - logout - - model_created - - model_deleted - - model_updated - - password_set - - policy_exception - - policy_execution - - property_mapping_exception - - review_attested - - review_completed - - review_initiated - - review_overdue - - secret_rotate - - secret_view - - source_linked - - suspicious_request - - system_exception - - system_task_exception - - system_task_execution - - update_available - - user_write + $ref: '#/components/schemas/EventActions' explode: true style: form - in: query @@ -7549,6 +7796,11 @@ paths: schema: type: string description: Context Authorized application + - in: query + name: context_device + schema: + type: string + description: Context Device Primary Key - in: query name: context_model_app schema: @@ -7567,7 +7819,7 @@ paths: - in: query name: history_days schema: - type: number + type: integer default: 7 - $ref: '#/components/parameters/QueryPaginationOrdering' - $ref: '#/components/parameters/QuerySearch' @@ -7623,11 +7875,7 @@ paths: - in: query name: severity schema: - type: string - enum: - - alert - - notice - - warning + $ref: '#/components/schemas/SeverityEnum' - in: query name: user schema: @@ -7819,13 +8067,10 @@ paths: - in: query name: severity schema: - type: string - enum: - - alert - - notice - - warning - description: |+ - Controls which severity level the created notifications will have. + allOf: + - $ref: '#/components/schemas/SeverityEnum' + description: |+ + Controls which severity level the created notifications will have. tags: - events @@ -8015,12 +8260,7 @@ paths: - in: query name: mode schema: - type: string - enum: - - email - - local - - webhook - - webhook_slack + $ref: '#/components/schemas/TransportModeEnum' - $ref: '#/components/parameters/QueryName' - $ref: '#/components/parameters/QueryPaginationOrdering' - $ref: '#/components/parameters/QueryPaginationPage' @@ -8262,13 +8502,10 @@ paths: - in: query name: invalid_response_action schema: - type: string - enum: - - restart - - restart_with_context - - retry - description: |+ - Configure how the flow executor should handle an invalid response to a challenge. RETRY returns the error message and a similar challenge to the executor. RESTART restarts the flow from the beginning, and RESTART_WITH_CONTEXT restarts the flow while keeping the current context. + allOf: + - $ref: '#/components/schemas/InvalidResponseActionEnum' + description: |+ + Configure how the flow executor should handle an invalid response to a challenge. RETRY returns the error message and a similar challenge to the executor. RESTART restarts the flow from the beginning, and RESTART_WITH_CONTEXT restarts the flow while keeping the current context. - in: query name: order @@ -8294,10 +8531,7 @@ paths: - in: query name: policy_engine_mode schema: - type: string - enum: - - all - - any + $ref: '#/components/schemas/PolicyEngineMode' - in: query name: re_evaluate_policies schema: @@ -8595,28 +8829,18 @@ paths: - in: query name: denied_action schema: - type: string - enum: - - continue - - message - - message_continue - description: |+ - Configure what should happen when a flow denies access to a user. + allOf: + - $ref: '#/components/schemas/DeniedActionEnum' + description: |+ + Configure what should happen when a flow denies access to a user. - in: query name: designation schema: - type: string - enum: - - authentication - - authorization - - enrollment - - invalidation - - recovery - - stage_configuration - - unenrollment - description: |+ - Decides what this Flow is used for. For example, the Authentication flow is redirect to when an un-authenticated user visits authentik. + allOf: + - $ref: '#/components/schemas/FlowDesignationEnum' + description: |+ + Decides what this Flow is used for. For example, the Authentication flow is redirect to when an un-authenticated user visits authentik. - in: query name: flow_uuid @@ -8921,34 +9145,6 @@ paths: $ref: '#/components/responses/ValidationErrorResponse' '403': $ref: '#/components/responses/GenericErrorResponse' - /flows/instances/import/: - post: - operationId: flows_instances_import_create - description: Import flow from .yaml file - tags: - - flows - requestBody: - content: - multipart/form-data: - schema: - $ref: '#/components/schemas/FlowUploadRequest' - security: - - authentik: [] - responses: - '204': - content: - application/json: - schema: - $ref: '#/components/schemas/FlowImportResult' - description: '' - '400': - content: - application/json: - schema: - $ref: '#/components/schemas/FlowImportResult' - description: '' - '403': - $ref: '#/components/responses/GenericErrorResponse' /lifecycle/iterations/: post: operationId: lifecycle_iterations_create @@ -8978,7 +9174,7 @@ paths: $ref: '#/components/responses/GenericErrorResponse' /lifecycle/iterations/latest/{content_type}/{object_id}/: get: - operationId: lifecycle_iterations_latest_retrieve + operationId: lifecycle_iterations_list_latest description: |- Mixin to validate that a valid enterprise license exists before allowing to save the object @@ -8995,6 +9191,12 @@ paths: type: string pattern: ^[^/]+$ required: true + - $ref: '#/components/parameters/QueryPaginationOrdering' + - $ref: '#/components/parameters/QuerySearch' + - in: query + name: user_is_reviewer + schema: + type: boolean tags: - lifecycle security: @@ -9004,7 +9206,9 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/LifecycleIteration' + type: array + items: + $ref: '#/components/schemas/LifecycleIteration' description: '' '400': $ref: '#/components/responses/ValidationErrorResponse' @@ -9467,6 +9671,31 @@ paths: $ref: '#/components/responses/ValidationErrorResponse' '403': $ref: '#/components/responses/GenericErrorResponse' + /managed/blueprints/import/: + post: + operationId: managed_blueprints_import_create + description: Import blueprint from .yaml file and apply it once, without creating + an instance + tags: + - managed + requestBody: + content: + multipart/form-data: + schema: + $ref: '#/components/schemas/BlueprintUploadRequest' + security: + - authentik: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/BlueprintImportResult' + description: '' + '400': + $ref: '#/components/responses/ValidationErrorResponse' + '403': + $ref: '#/components/responses/GenericErrorResponse' /oauth2/access_tokens/: get: operationId: oauth2_access_tokens_list @@ -11438,44 +11667,11 @@ paths: - in: query name: action schema: - type: string + allOf: + - $ref: '#/components/schemas/EventActions' nullable: true - enum: - - authorize_application - - configuration_error - - configuration_warning - - custom_ - - email_sent - - export_ready - - flow_execution - - impersonation_ended - - impersonation_started - - invitation_used - - login - - login_failed - - logout - - model_created - - model_deleted - - model_updated - - password_set - - policy_exception - - policy_execution - - property_mapping_exception - - review_attested - - review_completed - - review_initiated - - review_overdue - - secret_rotate - - secret_view - - source_linked - - suspicious_request - - system_exception - - system_task_exception - - system_task_execution - - update_available - - user_write - description: |+ - Match created events with this action type. When left empty, all action types will be matched. + description: |+ + Match created events with this action type. When left empty, all action types will be matched. - in: query name: app @@ -11512,6 +11708,10 @@ paths: schema: type: string format: uuid + - in: query + name: query + schema: + type: string - $ref: '#/components/parameters/QuerySearch' tags: - policies @@ -17809,12 +18009,10 @@ paths: - in: query name: client_type schema: - type: string - enum: - - confidential - - public - description: |+ - Confidential clients are capable of maintaining the confidentiality of their credentials. Public clients are incapable + allOf: + - $ref: '#/components/schemas/ClientTypeEnum' + description: |+ + Confidential clients are capable of maintaining the confidentiality of their credentials. Public clients are incapable - in: query name: include_claims_in_id_token @@ -17823,12 +18021,10 @@ paths: - in: query name: issuer_mode schema: - type: string - enum: - - global - - per_provider - description: |+ - Configure how the issuer field of the ID Token should be filled. + allOf: + - $ref: '#/components/schemas/IssuerModeEnum' + description: |+ + Configure how the issuer field of the ID Token should be filled. - $ref: '#/components/parameters/QueryName' - $ref: '#/components/parameters/QueryPaginationOrdering' @@ -17856,16 +18052,10 @@ paths: - in: query name: sub_mode schema: - type: string - enum: - - hashed_user_id - - user_email - - user_id - - user_upn - - user_username - - user_uuid - description: |+ - Configure what data should be used as unique User Identifier. For most cases, the default should be fine. + allOf: + - $ref: '#/components/schemas/SubModeEnum' + description: |+ + Configure what data should be used as unique User Identifier. For most cases, the default should be fine. tags: - providers @@ -18786,14 +18976,7 @@ paths: - in: query name: default_name_id_policy schema: - type: string - enum: - - urn:oasis:names:tc:SAML:1.1:nameid-format:X509SubjectName - - urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress - - urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified - - urn:oasis:names:tc:SAML:2.0:nameid-format:WindowsDomainQualifiedName - - urn:oasis:names:tc:SAML:2.0:nameid-format:persistent - - urn:oasis:names:tc:SAML:2.0:nameid-format:transient + $ref: '#/components/schemas/SAMLNameIDPolicyEnum' - in: query name: default_relay_state schema: @@ -18801,12 +18984,7 @@ paths: - in: query name: digest_algorithm schema: - type: string - enum: - - http://www.w3.org/2000/09/xmldsig#sha1 - - http://www.w3.org/2001/04/xmldsig-more#sha384 - - http://www.w3.org/2001/04/xmlenc#sha256 - - http://www.w3.org/2001/04/xmlenc#sha512 + $ref: '#/components/schemas/DigestAlgorithmEnum' - in: query name: encryption_kp schema: @@ -18822,19 +19000,16 @@ paths: schema: type: boolean - in: query - name: issuer + name: issuer_override schema: type: string - in: query name: logout_method schema: - type: string - enum: - - backchannel - - frontchannel_iframe - - frontchannel_native - description: |+ - Method to use for logout. Front-channel iframe loads all logout URLs simultaneously in hidden iframes. Front-channel native uses your active browser tab to send post requests and redirect to providers. Back-channel sends logout requests directly from the server without user interaction (requires POST SLS binding). + allOf: + - $ref: '#/components/schemas/SAMLLogoutMethods' + description: |+ + Method to use for logout. Front-channel iframe loads all logout URLs simultaneously in hidden iframes. Front-channel native uses your active browser tab to send post requests and redirect to providers. Back-channel sends logout requests directly from the server without user interaction (requires POST SLS binding). - $ref: '#/components/parameters/QueryName' - in: query @@ -18878,17 +19053,7 @@ paths: - in: query name: signature_algorithm schema: - type: string - enum: - - http://www.w3.org/2000/09/xmldsig#dsa-sha1 - - http://www.w3.org/2000/09/xmldsig#rsa-sha1 - - http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha1 - - http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha256 - - http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha384 - - http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha512 - - http://www.w3.org/2001/04/xmldsig-more#rsa-sha256 - - http://www.w3.org/2001/04/xmldsig-more#rsa-sha384 - - http://www.w3.org/2001/04/xmldsig-more#rsa-sha512 + $ref: '#/components/schemas/SignatureAlgorithmEnum' - in: query name: signing_kp schema: @@ -18897,12 +19062,10 @@ paths: - in: query name: sls_binding schema: - type: string - enum: - - post - - redirect - description: |+ - This determines how authentik sends the logout response back to the Service Provider. + allOf: + - $ref: '#/components/schemas/SAMLBindingsEnum' + description: |+ + This determines how authentik sends the logout response back to the Service Provider. - in: query name: sls_url @@ -18911,13 +19074,11 @@ paths: - in: query name: sp_binding schema: - type: string + allOf: + - $ref: '#/components/schemas/SAMLBindingsEnum' title: Service Provider Binding - enum: - - post - - redirect - description: |+ - This determines how authentik sends the response back to the Service Provider. + description: |+ + This determines how authentik sends the response back to the Service Provider. - in: query name: verification_kp @@ -19083,11 +19244,9 @@ paths: - in: query name: force_binding schema: - type: string - enum: - - urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST - - urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect - description: Optionally force the metadata to only include one binding. + allOf: + - $ref: '#/components/schemas/ForceBindingEnum' + description: Optionally force the metadata to only include one binding. - in: path name: id schema: @@ -19976,14 +20135,7 @@ paths: - in: query name: default_name_id_policy schema: - type: string - enum: - - urn:oasis:names:tc:SAML:1.1:nameid-format:X509SubjectName - - urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress - - urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified - - urn:oasis:names:tc:SAML:2.0:nameid-format:WindowsDomainQualifiedName - - urn:oasis:names:tc:SAML:2.0:nameid-format:persistent - - urn:oasis:names:tc:SAML:2.0:nameid-format:transient + $ref: '#/components/schemas/SAMLNameIDPolicyEnum' - in: query name: default_relay_state schema: @@ -19991,12 +20143,7 @@ paths: - in: query name: digest_algorithm schema: - type: string - enum: - - http://www.w3.org/2000/09/xmldsig#sha1 - - http://www.w3.org/2001/04/xmldsig-more#sha384 - - http://www.w3.org/2001/04/xmlenc#sha256 - - http://www.w3.org/2001/04/xmlenc#sha512 + $ref: '#/components/schemas/DigestAlgorithmEnum' - in: query name: encryption_kp schema: @@ -20012,19 +20159,16 @@ paths: schema: type: boolean - in: query - name: issuer + name: issuer_override schema: type: string - in: query name: logout_method schema: - type: string - enum: - - backchannel - - frontchannel_iframe - - frontchannel_native - description: |+ - Method to use for logout. Front-channel iframe loads all logout URLs simultaneously in hidden iframes. Front-channel native uses your active browser tab to send post requests and redirect to providers. Back-channel sends logout requests directly from the server without user interaction (requires POST SLS binding). + allOf: + - $ref: '#/components/schemas/SAMLLogoutMethods' + description: |+ + Method to use for logout. Front-channel iframe loads all logout URLs simultaneously in hidden iframes. Front-channel native uses your active browser tab to send post requests and redirect to providers. Back-channel sends logout requests directly from the server without user interaction (requires POST SLS binding). - $ref: '#/components/parameters/QueryName' - in: query @@ -20068,17 +20212,7 @@ paths: - in: query name: signature_algorithm schema: - type: string - enum: - - http://www.w3.org/2000/09/xmldsig#dsa-sha1 - - http://www.w3.org/2000/09/xmldsig#rsa-sha1 - - http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha1 - - http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha256 - - http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha384 - - http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha512 - - http://www.w3.org/2001/04/xmldsig-more#rsa-sha256 - - http://www.w3.org/2001/04/xmldsig-more#rsa-sha384 - - http://www.w3.org/2001/04/xmldsig-more#rsa-sha512 + $ref: '#/components/schemas/SignatureAlgorithmEnum' - in: query name: signing_kp schema: @@ -20087,12 +20221,10 @@ paths: - in: query name: sls_binding schema: - type: string - enum: - - post - - redirect - description: |+ - This determines how authentik sends the logout response back to the Service Provider. + allOf: + - $ref: '#/components/schemas/SAMLBindingsEnum' + description: |+ + This determines how authentik sends the logout response back to the Service Provider. - in: query name: sls_url @@ -20101,13 +20233,11 @@ paths: - in: query name: sp_binding schema: - type: string + allOf: + - $ref: '#/components/schemas/SAMLBindingsEnum' title: Service Provider Binding - enum: - - post - - redirect - description: |+ - This determines how authentik sends the response back to the Service Provider. + description: |+ + This determines how authentik sends the response back to the Service Provider. - in: query name: verification_kp @@ -20273,11 +20403,9 @@ paths: - in: query name: force_binding schema: - type: string - enum: - - urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST - - urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect - description: Optionally force the metadata to only include one binding. + allOf: + - $ref: '#/components/schemas/ForceBindingEnum' + description: Optionally force the metadata to only include one binding. - in: path name: id schema: @@ -20999,128 +21127,6 @@ paths: name: model schema: type: string - enum: - - authentik_blueprints.blueprintinstance - - authentik_brands.brand - - authentik_core.application - - authentik_core.applicationentitlement - - authentik_core.group - - authentik_core.token - - authentik_core.user - - authentik_crypto.certificatekeypair - - authentik_endpoints.deviceaccessgroup - - authentik_endpoints.deviceuserbinding - - authentik_endpoints.endpointstage - - authentik_endpoints_connectors_agent.agentconnector - - authentik_endpoints_connectors_agent.agentdeviceuserbinding - - authentik_endpoints_connectors_agent.enrollmenttoken - - authentik_endpoints_connectors_fleet.fleetconnector - - authentik_endpoints_connectors_google_chrome.googlechromeconnector - - authentik_enterprise.license - - authentik_events.event - - authentik_events.notification - - authentik_events.notificationrule - - authentik_events.notificationtransport - - authentik_events.notificationwebhookmapping - - authentik_flows.flow - - authentik_flows.flowstagebinding - - authentik_lifecycle.lifecycleiteration - - authentik_lifecycle.lifecyclerule - - authentik_lifecycle.review - - authentik_outposts.dockerserviceconnection - - authentik_outposts.kubernetesserviceconnection - - authentik_outposts.outpost - - authentik_policies.policybinding - - authentik_policies_dummy.dummypolicy - - authentik_policies_event_matcher.eventmatcherpolicy - - authentik_policies_expiry.passwordexpirypolicy - - authentik_policies_expression.expressionpolicy - - authentik_policies_geoip.geoippolicy - - authentik_policies_password.passwordpolicy - - authentik_policies_reputation.reputationpolicy - - authentik_policies_unique_password.uniquepasswordpolicy - - authentik_providers_google_workspace.googleworkspaceprovider - - authentik_providers_google_workspace.googleworkspaceprovidermapping - - authentik_providers_ldap.ldapprovider - - authentik_providers_microsoft_entra.microsoftentraprovider - - authentik_providers_microsoft_entra.microsoftentraprovidermapping - - authentik_providers_oauth2.oauth2provider - - authentik_providers_oauth2.scopemapping - - authentik_providers_proxy.proxyprovider - - authentik_providers_rac.endpoint - - authentik_providers_rac.racpropertymapping - - authentik_providers_rac.racprovider - - authentik_providers_radius.radiusprovider - - authentik_providers_radius.radiusproviderpropertymapping - - authentik_providers_saml.samlpropertymapping - - authentik_providers_saml.samlprovider - - authentik_providers_scim.scimmapping - - authentik_providers_scim.scimprovider - - authentik_providers_ssf.ssfprovider - - authentik_providers_ws_federation.wsfederationprovider - - authentik_rbac.initialpermissions - - authentik_rbac.role - - authentik_reports.dataexport - - authentik_sources_kerberos.groupkerberossourceconnection - - authentik_sources_kerberos.kerberossource - - authentik_sources_kerberos.kerberossourcepropertymapping - - authentik_sources_kerberos.userkerberossourceconnection - - authentik_sources_ldap.groupldapsourceconnection - - authentik_sources_ldap.ldapsource - - authentik_sources_ldap.ldapsourcepropertymapping - - authentik_sources_ldap.userldapsourceconnection - - authentik_sources_oauth.groupoauthsourceconnection - - authentik_sources_oauth.oauthsource - - authentik_sources_oauth.oauthsourcepropertymapping - - authentik_sources_oauth.useroauthsourceconnection - - authentik_sources_plex.groupplexsourceconnection - - authentik_sources_plex.plexsource - - authentik_sources_plex.plexsourcepropertymapping - - authentik_sources_plex.userplexsourceconnection - - authentik_sources_saml.groupsamlsourceconnection - - authentik_sources_saml.samlsource - - authentik_sources_saml.samlsourcepropertymapping - - authentik_sources_saml.usersamlsourceconnection - - authentik_sources_scim.scimsource - - authentik_sources_scim.scimsourcepropertymapping - - authentik_sources_telegram.grouptelegramsourceconnection - - authentik_sources_telegram.telegramsource - - authentik_sources_telegram.telegramsourcepropertymapping - - authentik_sources_telegram.usertelegramsourceconnection - - authentik_stages_authenticator_duo.authenticatorduostage - - authentik_stages_authenticator_duo.duodevice - - authentik_stages_authenticator_email.authenticatoremailstage - - authentik_stages_authenticator_email.emaildevice - - authentik_stages_authenticator_endpoint_gdtc.authenticatorendpointgdtcstage - - authentik_stages_authenticator_sms.authenticatorsmsstage - - authentik_stages_authenticator_sms.smsdevice - - authentik_stages_authenticator_static.authenticatorstaticstage - - authentik_stages_authenticator_static.staticdevice - - authentik_stages_authenticator_totp.authenticatortotpstage - - authentik_stages_authenticator_totp.totpdevice - - authentik_stages_authenticator_validate.authenticatorvalidatestage - - authentik_stages_authenticator_webauthn.authenticatorwebauthnstage - - authentik_stages_authenticator_webauthn.webauthndevice - - authentik_stages_captcha.captchastage - - authentik_stages_consent.consentstage - - authentik_stages_deny.denystage - - authentik_stages_dummy.dummystage - - authentik_stages_email.emailstage - - authentik_stages_identification.identificationstage - - authentik_stages_invitation.invitation - - authentik_stages_invitation.invitationstage - - authentik_stages_mtls.mutualtlsstage - - authentik_stages_password.passwordstage - - authentik_stages_prompt.prompt - - authentik_stages_prompt.promptstage - - authentik_stages_redirect.redirectstage - - authentik_stages_source.sourcestage - - authentik_stages_user_delete.userdeletestage - - authentik_stages_user_login.userloginstage - - authentik_stages_user_logout.userlogoutstage - - authentik_stages_user_write.userwritestage - - authentik_tasks_schedules.schedule - - authentik_tenants.domain required: true - in: query name: object_pk @@ -21621,114 +21627,11 @@ paths: - in: query name: format schema: - type: string - enum: - - json - - yaml + $ref: '#/components/schemas/FormatEnum' - in: query name: lang schema: - type: string - enum: - - af - - ar - - ar-dz - - ast - - az - - be - - bg - - bn - - br - - bs - - ca - - ckb - - cs - - cy - - da - - de - - dsb - - el - - en - - en-au - - en-gb - - eo - - es - - es-ar - - es-co - - es-mx - - es-ni - - es-ve - - et - - eu - - fa - - fi - - fr - - fy - - ga - - gd - - gl - - he - - hi - - hr - - hsb - - hu - - hy - - ia - - id - - ig - - io - - is - - it - - ja - - ka - - kab - - kk - - km - - kn - - ko - - ky - - lb - - lt - - lv - - mk - - ml - - mn - - mr - - ms - - my - - nb - - ne - - nl - - nn - - os - - pa - - pl - - pt - - pt-br - - ro - - ru - - sk - - sl - - sq - - sr - - sr-latn - - sv - - sw - - ta - - te - - tg - - th - - tk - - tr - - tt - - udm - - ug - - uk - - ur - - uz - - vi - - zh-hans - - zh-hant + $ref: '#/components/schemas/LangEnum' tags: - schema security: @@ -23262,12 +23165,10 @@ paths: - in: query name: kadmin_type schema: - type: string - enum: - - Heimdal - - MIT - description: |+ - KAdmin server type + allOf: + - $ref: '#/components/schemas/KadminTypeEnum' + description: |+ + KAdmin server type - $ref: '#/components/parameters/QueryName' - $ref: '#/components/parameters/QueryPaginationOrdering' @@ -23901,13 +23802,10 @@ paths: - in: query name: group_matching_mode schema: - type: string - enum: - - identifier - - name_deny - - name_link - description: |+ - How the source determines if an existing group should be used or a new group created. + allOf: + - $ref: '#/components/schemas/GroupMatchingModeEnum' + description: |+ + How the source determines if an existing group should be used or a new group created. - in: query name: has_jwks @@ -23926,10 +23824,7 @@ paths: - in: query name: policy_engine_mode schema: - type: string - enum: - - all - - any + $ref: '#/components/schemas/PolicyEngineMode' - in: query name: profile_url schema: @@ -23950,15 +23845,10 @@ paths: - in: query name: user_matching_mode schema: - type: string - enum: - - email_deny - - email_link - - identifier - - username_deny - - username_link - description: |+ - How the source determines if an existing user should be authenticated or a new user enrolled. + allOf: + - $ref: '#/components/schemas/UserMatchingModeEnum' + description: |+ + How the source determines if an existing user should be authenticated or a new user enrolled. tags: - sources @@ -24190,13 +24080,10 @@ paths: - in: query name: group_matching_mode schema: - type: string - enum: - - identifier - - name_deny - - name_link - description: |+ - How the source determines if an existing group should be used or a new group created. + allOf: + - $ref: '#/components/schemas/GroupMatchingModeEnum' + description: |+ + How the source determines if an existing group should be used or a new group created. - $ref: '#/components/parameters/QueryName' - $ref: '#/components/parameters/QueryPaginationOrdering' @@ -24210,10 +24097,7 @@ paths: - in: query name: policy_engine_mode schema: - type: string - enum: - - all - - any + $ref: '#/components/schemas/PolicyEngineMode' - $ref: '#/components/parameters/QuerySearch' - in: query name: slug @@ -24222,15 +24106,10 @@ paths: - in: query name: user_matching_mode schema: - type: string - enum: - - email_deny - - email_link - - identifier - - username_deny - - username_link - description: |+ - How the source determines if an existing user should be authenticated or a new user enrolled. + allOf: + - $ref: '#/components/schemas/UserMatchingModeEnum' + description: |+ + How the source determines if an existing user should be authenticated or a new user enrolled. tags: - sources @@ -24483,20 +24362,11 @@ paths: - in: query name: binding_type schema: - type: string - enum: - - POST - - POST_AUTO - - REDIRECT + $ref: '#/components/schemas/BindingTypeEnum' - in: query name: digest_algorithm schema: - type: string - enum: - - http://www.w3.org/2000/09/xmldsig#sha1 - - http://www.w3.org/2001/04/xmldsig-more#sha384 - - http://www.w3.org/2001/04/xmlenc#sha256 - - http://www.w3.org/2001/04/xmlenc#sha512 + $ref: '#/components/schemas/DigestAlgorithmEnum' - in: query name: enabled schema: @@ -24506,6 +24376,10 @@ paths: schema: type: string format: uuid + - in: query + name: force_authn + schema: + type: boolean - in: query name: issuer schema: @@ -24518,16 +24392,10 @@ paths: - in: query name: name_id_policy schema: - type: string - enum: - - urn:oasis:names:tc:SAML:1.1:nameid-format:X509SubjectName - - urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress - - urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified - - urn:oasis:names:tc:SAML:2.0:nameid-format:WindowsDomainQualifiedName - - urn:oasis:names:tc:SAML:2.0:nameid-format:persistent - - urn:oasis:names:tc:SAML:2.0:nameid-format:transient - description: |+ - NameID Policy sent to the IdP. Can be unset, in which case no Policy is sent. + allOf: + - $ref: '#/components/schemas/SAMLNameIDPolicyEnum' + description: |+ + NameID Policy sent to the IdP. Can be unset, in which case no Policy is sent. - $ref: '#/components/parameters/QueryPaginationOrdering' - $ref: '#/components/parameters/QueryPaginationPage' @@ -24540,10 +24408,7 @@ paths: - in: query name: policy_engine_mode schema: - type: string - enum: - - all - - any + $ref: '#/components/schemas/PolicyEngineMode' - in: query name: pre_authentication_flow schema: @@ -24553,17 +24418,7 @@ paths: - in: query name: signature_algorithm schema: - type: string - enum: - - http://www.w3.org/2000/09/xmldsig#dsa-sha1 - - http://www.w3.org/2000/09/xmldsig#rsa-sha1 - - http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha1 - - http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha256 - - http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha384 - - http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha512 - - http://www.w3.org/2001/04/xmldsig-more#rsa-sha256 - - http://www.w3.org/2001/04/xmldsig-more#rsa-sha384 - - http://www.w3.org/2001/04/xmldsig-more#rsa-sha512 + $ref: '#/components/schemas/SignatureAlgorithmEnum' - in: query name: signed_assertion schema: @@ -24596,15 +24451,10 @@ paths: - in: query name: user_matching_mode schema: - type: string - enum: - - email_deny - - email_link - - identifier - - username_deny - - username_link - description: |+ - How the source determines if an existing user should be authenticated or a new user enrolled. + allOf: + - $ref: '#/components/schemas/UserMatchingModeEnum' + description: |+ + How the source determines if an existing user should be authenticated or a new user enrolled. - in: query name: verification_kp @@ -25426,13 +25276,10 @@ paths: - in: query name: group_matching_mode schema: - type: string - enum: - - identifier - - name_deny - - name_link - description: |+ - How the source determines if an existing group should be used or a new group created. + allOf: + - $ref: '#/components/schemas/GroupMatchingModeEnum' + description: |+ + How the source determines if an existing group should be used or a new group created. - $ref: '#/components/parameters/QueryName' - $ref: '#/components/parameters/QueryPaginationOrdering' @@ -25446,10 +25293,7 @@ paths: - in: query name: policy_engine_mode schema: - type: string - enum: - - all - - any + $ref: '#/components/schemas/PolicyEngineMode' - in: query name: request_message_access schema: @@ -25462,15 +25306,10 @@ paths: - in: query name: user_matching_mode schema: - type: string - enum: - - email_deny - - email_link - - identifier - - username_deny - - username_link - description: |+ - How the source determines if an existing user should be authenticated or a new user enrolled. + allOf: + - $ref: '#/components/schemas/UserMatchingModeEnum' + description: |+ + How the source determines if an existing user should be authenticated or a new user enrolled. tags: - sources @@ -27023,10 +26862,7 @@ paths: - in: query name: delivery_method schema: - type: string - enum: - - https://schemas.openid.net/secevent/risc/delivery-method/poll - - https://schemas.openid.net/secevent/risc/delivery-method/push + $ref: '#/components/schemas/DeliveryMethodEnum' - in: query name: endpoint_url schema: @@ -27081,6 +26917,244 @@ paths: $ref: '#/components/responses/ValidationErrorResponse' '403': $ref: '#/components/responses/GenericErrorResponse' + delete: + operationId: ssf_streams_destroy + description: SSFStream Viewset + parameters: + - in: path + name: uuid + schema: + type: string + format: uuid + description: A UUID string identifying this SSF Stream. + required: true + tags: + - ssf + security: + - authentik: [] + responses: + '204': + description: No response body + '400': + $ref: '#/components/responses/ValidationErrorResponse' + '403': + $ref: '#/components/responses/GenericErrorResponse' + /stages/account_lockdown/: + get: + operationId: stages_account_lockdown_list + description: AccountLockdownStage Viewset + parameters: + - in: query + name: deactivate_user + schema: + type: boolean + - in: query + name: delete_sessions + schema: + type: boolean + - $ref: '#/components/parameters/QueryName' + - $ref: '#/components/parameters/QueryPaginationOrdering' + - $ref: '#/components/parameters/QueryPaginationPage' + - $ref: '#/components/parameters/QueryPaginationPageSize' + - in: query + name: revoke_tokens + schema: + type: boolean + - $ref: '#/components/parameters/QuerySearch' + - in: query + name: self_service_completion_flow + schema: + type: string + format: uuid + - in: query + name: set_unusable_password + schema: + type: boolean + - in: query + name: stage_uuid + schema: + type: string + format: uuid + tags: + - stages + security: + - authentik: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginatedAccountLockdownStageList' + description: '' + '400': + $ref: '#/components/responses/ValidationErrorResponse' + '403': + $ref: '#/components/responses/GenericErrorResponse' + post: + operationId: stages_account_lockdown_create + description: AccountLockdownStage Viewset + tags: + - stages + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AccountLockdownStageRequest' + required: true + security: + - authentik: [] + responses: + '201': + content: + application/json: + schema: + $ref: '#/components/schemas/AccountLockdownStage' + description: '' + '400': + $ref: '#/components/responses/ValidationErrorResponse' + '403': + $ref: '#/components/responses/GenericErrorResponse' + /stages/account_lockdown/{stage_uuid}/: + get: + operationId: stages_account_lockdown_retrieve + description: AccountLockdownStage Viewset + parameters: + - in: path + name: stage_uuid + schema: + type: string + format: uuid + description: A UUID string identifying this Account Lockdown Stage. + required: true + tags: + - stages + security: + - authentik: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/AccountLockdownStage' + description: '' + '400': + $ref: '#/components/responses/ValidationErrorResponse' + '403': + $ref: '#/components/responses/GenericErrorResponse' + put: + operationId: stages_account_lockdown_update + description: AccountLockdownStage Viewset + parameters: + - in: path + name: stage_uuid + schema: + type: string + format: uuid + description: A UUID string identifying this Account Lockdown Stage. + required: true + tags: + - stages + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AccountLockdownStageRequest' + required: true + security: + - authentik: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/AccountLockdownStage' + description: '' + '400': + $ref: '#/components/responses/ValidationErrorResponse' + '403': + $ref: '#/components/responses/GenericErrorResponse' + patch: + operationId: stages_account_lockdown_partial_update + description: AccountLockdownStage Viewset + parameters: + - in: path + name: stage_uuid + schema: + type: string + format: uuid + description: A UUID string identifying this Account Lockdown Stage. + required: true + tags: + - stages + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchedAccountLockdownStageRequest' + security: + - authentik: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/AccountLockdownStage' + description: '' + '400': + $ref: '#/components/responses/ValidationErrorResponse' + '403': + $ref: '#/components/responses/GenericErrorResponse' + delete: + operationId: stages_account_lockdown_destroy + description: AccountLockdownStage Viewset + parameters: + - in: path + name: stage_uuid + schema: + type: string + format: uuid + description: A UUID string identifying this Account Lockdown Stage. + required: true + tags: + - stages + security: + - authentik: [] + responses: + '204': + description: No response body + '400': + $ref: '#/components/responses/ValidationErrorResponse' + '403': + $ref: '#/components/responses/GenericErrorResponse' + /stages/account_lockdown/{stage_uuid}/used_by/: + get: + operationId: stages_account_lockdown_used_by_list + description: Get a list of all objects that use this object + parameters: + - in: path + name: stage_uuid + schema: + type: string + format: uuid + description: A UUID string identifying this Account Lockdown Stage. + required: true + tags: + - stages + security: + - authentik: [] + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/UsedBy' + description: '' + '400': + $ref: '#/components/responses/ValidationErrorResponse' + '403': + $ref: '#/components/responses/GenericErrorResponse' /stages/all/: get: operationId: stages_all_list @@ -27984,10 +28058,7 @@ paths: - in: query name: auth_type schema: - type: string - enum: - - basic - - bearer + $ref: '#/components/schemas/AuthTypeEnum' - in: query name: configure_flow schema: @@ -28013,10 +28084,7 @@ paths: - in: query name: provider schema: - type: string - enum: - - generic - - twilio + $ref: '#/components/schemas/ProviderEnum' - $ref: '#/components/parameters/QuerySearch' - in: query name: stage_uuid @@ -28432,10 +28500,7 @@ paths: - in: query name: digits schema: - type: string - enum: - - '6' - - '8' + $ref: '#/components/schemas/DigitsEnum' - in: query name: friendly_name schema: @@ -28648,11 +28713,7 @@ paths: - in: query name: not_configured_action schema: - type: string - enum: - - configure - - deny - - skip + $ref: '#/components/schemas/NotConfiguredActionEnum' - $ref: '#/components/parameters/QueryPaginationOrdering' - $ref: '#/components/parameters/QueryPaginationPage' - $ref: '#/components/parameters/QueryPaginationPageSize' @@ -28845,11 +28906,9 @@ paths: - in: query name: authenticator_attachment schema: - type: string + allOf: + - $ref: '#/components/schemas/AuthenticatorAttachmentEnum' nullable: true - enum: - - cross-platform - - platform - in: query name: configure_flow schema: @@ -28875,20 +28934,12 @@ paths: - in: query name: resident_key_requirement schema: - type: string - enum: - - discouraged - - preferred - - required + $ref: '#/components/schemas/UserVerificationEnum' - $ref: '#/components/parameters/QuerySearch' - in: query name: user_verification schema: - type: string - enum: - - discouraged - - preferred - - required + $ref: '#/components/schemas/UserVerificationEnum' tags: - stages security: @@ -29339,11 +29390,7 @@ paths: - in: query name: mode schema: - type: string - enum: - - always_require - - expiring - - permanent + $ref: '#/components/schemas/ConsentModeEnum' - $ref: '#/components/parameters/QueryName' - $ref: '#/components/parameters/QueryPaginationOrdering' - $ref: '#/components/parameters/QueryPaginationPage' @@ -31056,11 +31103,7 @@ paths: - in: query name: cert_attribute schema: - type: string - enum: - - common_name - - email - - subject + $ref: '#/components/schemas/CertAttributeEnum' - in: query name: certificate_authorities schema: @@ -31073,10 +31116,7 @@ paths: - in: query name: mode schema: - type: string - enum: - - optional - - required + $ref: '#/components/schemas/StageModeEnum' - $ref: '#/components/parameters/QueryName' - $ref: '#/components/parameters/QueryPaginationOrdering' - $ref: '#/components/parameters/QueryPaginationPage' @@ -31090,10 +31130,7 @@ paths: - in: query name: user_attribute schema: - type: string - enum: - - email - - username + $ref: '#/components/schemas/UserAttributeEnum' tags: - stages security: @@ -31502,26 +31539,7 @@ paths: - in: query name: type schema: - type: string - enum: - - ak-locale - - checkbox - - date - - date-time - - dropdown - - email - - file - - hidden - - number - - password - - radio-button-group - - separator - - static - - text - - text_area - - text_area_read_only - - text_read_only - - username + $ref: '#/components/schemas/PromptTypeEnum' tags: - stages security: @@ -32537,27 +32555,19 @@ paths: - in: query name: geoip_binding schema: - type: string - enum: - - bind_continent - - bind_continent_country - - bind_continent_country_city - - no_binding - description: |+ - Bind sessions created by this stage to the configured GeoIP location + allOf: + - $ref: '#/components/schemas/GeoipBindingEnum' + description: |+ + Bind sessions created by this stage to the configured GeoIP location - $ref: '#/components/parameters/QueryName' - in: query name: network_binding schema: - type: string - enum: - - bind_asn - - bind_asn_network - - bind_asn_network_ip - - no_binding - description: |+ - Bind sessions created by this stage to the configured network + allOf: + - $ref: '#/components/schemas/NetworkBindingEnum' + description: |+ + Bind sessions created by this stage to the configured network - $ref: '#/components/parameters/QueryPaginationOrdering' - $ref: '#/components/parameters/QueryPaginationPage' @@ -32986,11 +32996,7 @@ paths: - in: query name: user_creation_mode schema: - type: string - enum: - - always_create - - create_when_required - - never_create + $ref: '#/components/schemas/UserCreationModeEnum' - in: query name: user_path_template schema: @@ -32998,12 +33004,7 @@ paths: - in: query name: user_type schema: - type: string - enum: - - external - - internal - - internal_service_account - - service_account + $ref: '#/components/schemas/UserTypeEnum' tags: - stages security: @@ -33358,18 +33359,7 @@ paths: schema: type: array items: - type: string - enum: - - consumed - - done - - error - - info - - postprocess - - preprocess - - queued - - rejected - - running - - warning + $ref: '#/components/schemas/TaskAggregatedStatusEnum' explode: true style: form - $ref: '#/components/parameters/QueryPaginationOrdering' @@ -33399,17 +33389,10 @@ paths: - in: query name: state schema: - type: string - enum: - - consumed - - done - - postprocess - - preprocess - - queued - - rejected - - running - description: |+ - Task status + allOf: + - $ref: '#/components/schemas/TaskStatusEnum' + description: |+ + Task status tags: - tasks @@ -33940,6 +33923,93 @@ components: required: - pending_user - pending_user_avatar + AccountLockdownStage: + type: object + description: AccountLockdownStage Serializer + properties: + pk: + type: string + format: uuid + readOnly: true + title: Stage uuid + name: + type: string + component: + type: string + description: Get object type so that we know how to edit the object + readOnly: true + verbose_name: + type: string + description: Return object's verbose_name + readOnly: true + verbose_name_plural: + type: string + description: Return object's plural verbose_name + readOnly: true + meta_model_name: + type: string + description: Return internal model name + readOnly: true + flow_set: + type: array + items: + $ref: '#/components/schemas/FlowSet' + readOnly: true + deactivate_user: + type: boolean + description: Deactivate the user account (set is_active to False) + set_unusable_password: + type: boolean + description: Set an unusable password for the user + delete_sessions: + type: boolean + description: Delete all active sessions for the user + revoke_tokens: + type: boolean + description: Revoke all tokens for the user (API, app password, recovery, + verification, OAuth) + self_service_completion_flow: + type: string + format: uuid + nullable: true + description: Flow to redirect users to after self-service lockdown. This + flow should not require authentication since the user's session is deleted. + required: + - component + - flow_set + - meta_model_name + - name + - pk + - verbose_name + - verbose_name_plural + AccountLockdownStageRequest: + type: object + description: AccountLockdownStage Serializer + properties: + name: + type: string + minLength: 1 + deactivate_user: + type: boolean + description: Deactivate the user account (set is_active to False) + set_unusable_password: + type: boolean + description: Set an unusable password for the user + delete_sessions: + type: boolean + description: Delete all active sessions for the user + revoke_tokens: + type: boolean + description: Revoke all tokens for the user (API, app password, recovery, + verification, OAuth) + self_service_completion_flow: + type: string + format: uuid + nullable: true + description: Flow to redirect users to after self-service lockdown. This + flow should not require authentication since the user's session is deleted. + required: + - name AgentAuthenticationResponse: type: object description: Base serializer class which doesn't implement create/update methods @@ -34277,7 +34347,7 @@ components: - authentik.enterprise.providers.ssf - authentik.enterprise.providers.ws_federation - authentik.enterprise.reports - - authentik.enterprise.search + - authentik.enterprise.stages.account_lockdown - authentik.enterprise.stages.authenticator_endpoint_gdtc - authentik.enterprise.stages.mtls - authentik.enterprise.stages.source @@ -34290,6 +34360,49 @@ components: type: string minLength: 1 default: ak-source-oauth-apple + AppleIndependentSecureEnclave: + type: object + properties: + uuid: + type: string + format: uuid + user: + type: integer + description: The user that this device belongs to. + apple_secure_enclave_key: + type: string + apple_enclave_key_id: + type: string + device_type: + type: string + required: + - apple_enclave_key_id + - apple_secure_enclave_key + - device_type + - user + AppleIndependentSecureEnclaveRequest: + type: object + properties: + uuid: + type: string + format: uuid + user: + type: integer + description: The user that this device belongs to. + apple_secure_enclave_key: + type: string + minLength: 1 + apple_enclave_key_id: + type: string + minLength: 1 + device_type: + type: string + minLength: 1 + required: + - apple_enclave_key_id + - apple_secure_enclave_key + - device_type + - user AppleLoginChallenge: type: object description: Special challenge for apple-native authentication flow, which happens @@ -34342,6 +34455,7 @@ components: allOf: - $ref: '#/components/schemas/Provider' readOnly: true + nullable: true backchannel_providers: type: array items: @@ -34382,6 +34496,9 @@ components: $ref: '#/components/schemas/PolicyEngineMode' group: type: string + meta_hide: + type: boolean + description: Hide this application from the user's My applications page. required: - backchannel_providers_obj - launch_url @@ -34463,6 +34580,9 @@ components: $ref: '#/components/schemas/PolicyEngineMode' group: type: string + meta_hide: + type: boolean + description: Hide this application from the user's My applications page. required: - name - slug @@ -34492,10 +34612,12 @@ components: properties: brand: type: string + nullable: true family: type: string model: type: string + nullable: true required: - brand - family @@ -34508,12 +34630,16 @@ components: type: string major: type: string + nullable: true minor: type: string + nullable: true patch: type: string + nullable: true patch_minor: type: string + nullable: true required: - family - major @@ -34626,6 +34752,7 @@ components: - require_superuser - require_redirect - require_outpost + - require_token type: string AuthenticatorAttachmentEnum: enum: @@ -35490,6 +35617,18 @@ components: items: $ref: '#/components/schemas/WebAuthnDeviceType' readOnly: true + email_otp_throttling_factor: + type: number + format: double + sms_otp_throttling_factor: + type: number + format: double + totp_otp_throttling_factor: + type: number + format: double + static_otp_throttling_factor: + type: number + format: double required: - component - flow_set @@ -35539,6 +35678,18 @@ components: items: type: string format: uuid + email_otp_throttling_factor: + type: number + format: double + sms_otp_throttling_factor: + type: number + format: double + totp_otp_throttling_factor: + type: number + format: double + static_otp_throttling_factor: + type: number + format: double required: - name AuthenticatorValidationChallenge: @@ -35680,7 +35831,7 @@ components: - $ref: '#/components/schemas/AuthenticatorAttachmentEnum' nullable: true resident_key_requirement: - $ref: '#/components/schemas/ResidentKeyRequirementEnum' + $ref: '#/components/schemas/UserVerificationEnum' hints: type: array items: @@ -35695,6 +35846,9 @@ components: items: $ref: '#/components/schemas/WebAuthnDeviceType' readOnly: true + prevent_duplicate_devices: + type: boolean + description: When enabled, a given device can only be registered once. max_attempts: type: integer maximum: 2147483647 @@ -35730,7 +35884,7 @@ components: - $ref: '#/components/schemas/AuthenticatorAttachmentEnum' nullable: true resident_key_requirement: - $ref: '#/components/schemas/ResidentKeyRequirementEnum' + $ref: '#/components/schemas/UserVerificationEnum' hints: type: array items: @@ -35740,6 +35894,9 @@ components: items: type: string format: uuid + prevent_duplicate_devices: + type: boolean + description: When enabled, a given device can only be registered once. max_attempts: type: integer maximum: 2147483647 @@ -35820,6 +35977,21 @@ components: - last_m - meta - path + BlueprintImportResult: + type: object + description: Logs of an attempted blueprint import + properties: + logs: + type: array + items: + $ref: '#/components/schemas/LogEvent' + readOnly: true + success: + type: boolean + readOnly: true + required: + - logs + - success BlueprintInstance: type: object description: Info about a single blueprint instance file @@ -35896,6 +36068,18 @@ components: - orphaned - unknown type: string + BlueprintUploadRequest: + type: object + description: Serializer to upload file + properties: + file: + type: string + format: binary + path: + type: string + minLength: 1 + context: + type: string Brand: type: object description: Brand Serializer @@ -35944,6 +36128,10 @@ components: type: string format: uuid nullable: true + flow_lockdown: + type: string + format: uuid + nullable: true default_application: type: string format: uuid @@ -36016,6 +36204,10 @@ components: type: string format: uuid nullable: true + flow_lockdown: + type: string + format: uuid + nullable: true default_application: type: string format: uuid @@ -36281,7 +36473,7 @@ components: readOnly: true key_type: allOf: - - $ref: '#/components/schemas/KeyTypeEnum' + - $ref: '#/components/schemas/CertificateKeyPairKeyTypeEnum' readOnly: true nullable: true description: Key algorithm type detected from the certificate's public key @@ -36314,6 +36506,14 @@ components: - pk - private_key_available - private_key_download_url + CertificateKeyPairKeyTypeEnum: + enum: + - rsa + - ec + - dsa + - ed25519 + - ed448 + type: string CertificateKeyPairRequest: type: object description: CertificateKeyPair Serializer @@ -36410,6 +36610,8 @@ components: - aws - slack - sfdc + - webex + - vcenter type: string Config: type: object @@ -36562,6 +36764,12 @@ components: minLength: 1 required: - token + ConsentModeEnum: + enum: + - always_require + - permanent + - expiring + type: string ConsentPermission: type: object description: Permission used for consent @@ -36606,7 +36814,7 @@ components: $ref: '#/components/schemas/FlowSet' readOnly: true mode: - $ref: '#/components/schemas/ConsentStageModeEnum' + $ref: '#/components/schemas/ConsentModeEnum' consent_expire_in: type: string title: Consent expires in @@ -36619,12 +36827,6 @@ components: - pk - verbose_name - verbose_name_plural - ConsentStageModeEnum: - enum: - - always_require - - permanent - - expiring - type: string ConsentStageRequest: type: object description: ConsentStage Serializer @@ -36633,7 +36835,7 @@ components: type: string minLength: 1 mode: - $ref: '#/components/schemas/ConsentStageModeEnum' + $ref: '#/components/schemas/ConsentModeEnum' consent_expire_in: type: string minLength: 1 @@ -36994,19 +37196,32 @@ components: type: string flow_device_code: type: string + flow_lockdown: + type: string default_locale: type: string readOnly: true flags: type: object properties: + core_default_app_access: + type: boolean + description: Configure if applications without any policy/group/user + bindings should be accessible to any user. enterprise_audit_include_expanded_diff: type: boolean + description: Include additional information in audit logs, may incur + a performance penalty. flows_continuous_login: type: boolean + description: Upon successful authentication, re-start authentication + in other open tabs. flows_refresh_others: type: boolean + description: Refresh other tabs after successful authentication. + deprecated: true required: + - core_default_app_access - enterprise_audit_include_expanded_diff - flows_continuous_login - flows_refresh_others @@ -37066,6 +37281,8 @@ components: enum: - https://schemas.openid.net/secevent/risc/delivery-method/push - https://schemas.openid.net/secevent/risc/delivery-method/poll + - urn:ietf:rfc:8935 + - urn:ietf:rfc:8936 type: string DeniedActionEnum: enum: @@ -37492,14 +37709,17 @@ components: allOf: - $ref: '#/components/schemas/Policy' readOnly: true + nullable: true group_obj: allOf: - $ref: '#/components/schemas/PartialGroup' readOnly: true + nullable: true user_obj: allOf: - $ref: '#/components/schemas/PartialUser' readOnly: true + nullable: true target: type: string format: uuid @@ -38513,6 +38733,7 @@ components: allOf: - $ref: '#/components/schemas/DeviceAccessGroup' readOnly: true + nullable: true connector: type: string format: uuid @@ -38720,6 +38941,9 @@ components: description: Match events created by selected model. When left empty, all models are matched. When an app is selected, all the application's models are matched. + query: + type: string + nullable: true required: - bound_to - component @@ -38764,6 +38988,10 @@ components: description: Match events created by selected model. When left empty, all models are matched. When an app is selected, all the application's models are matched. + query: + type: string + nullable: true + minLength: 1 required: - name EventRequest: @@ -38794,6 +39022,19 @@ components: required: - action - app + EventStats: + type: object + description: Count of unique users in events and aggregated counts per specified + deltas + properties: + unique_users: + type: integer + count_step: + type: object + additionalProperties: {} + required: + - count_step + - unique_users EventTopPerUser: type: object description: Response object of Event's top_per_user @@ -38811,7 +39052,7 @@ components: - unique_users EventVolume: type: object - description: Count of events of action created on day + description: Count of events of action created on day for a single event action properties: action: $ref: '#/components/schemas/EventActions' @@ -38827,7 +39068,13 @@ components: EventsRequestedEnum: enum: - https://schemas.openid.net/secevent/caep/event-type/session-revoked + - https://schemas.openid.net/secevent/caep/event-type/token-claims-change - https://schemas.openid.net/secevent/caep/event-type/credential-change + - https://schemas.openid.net/secevent/caep/event-type/assurance-level-change + - https://schemas.openid.net/secevent/caep/event-type/device-compliance-change + - https://schemas.openid.net/secevent/caep/event-type/session-established + - https://schemas.openid.net/secevent/caep/event-type/session-presented + - https://schemas.openid.net/secevent/caep/event-type/risk-level-change - https://schemas.openid.net/secevent/ssf/event-type/verification type: string ExpiringBaseGrantModel: @@ -38839,7 +39086,7 @@ components: readOnly: true title: ID provider: - $ref: '#/components/schemas/OAuth2Provider' + $ref: '#/components/schemas/Provider' user: $ref: '#/components/schemas/User' is_expired: @@ -39278,21 +39525,6 @@ components: type: string required: - request_id - FlowImportResult: - type: object - description: Logs of an attempted flow import - properties: - logs: - type: array - items: - $ref: '#/components/schemas/LogEvent' - readOnly: true - success: - type: boolean - readOnly: true - required: - - logs - - success FlowInspection: type: object description: Serializer for inspect endpoint @@ -39530,16 +39762,6 @@ components: - order - stage - target - FlowUploadRequest: - type: object - description: Serializer to upload file - properties: - file: - type: string - format: binary - clear: - type: boolean - default: false FooterLink: type: object description: Links returned in Config API @@ -39554,6 +39776,16 @@ components: required: - href - name + ForceBindingEnum: + type: string + enum: + - urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST + - urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect + FormatEnum: + type: string + enum: + - json + - yaml FrameChallenge: type: object description: Challenge type to render a frame @@ -40185,6 +40417,16 @@ components: - google_id - provider - user + GrantTypesEnum: + enum: + - authorization_code + - implicit + - hybrid + - refresh_token + - client_credentials + - password + - urn:ietf:params:oauth:grant-type:device_code + type: string Group: type: object description: Group Serializer @@ -40345,9 +40587,14 @@ components: type: string format: date-time readOnly: true + group_obj: + allOf: + - $ref: '#/components/schemas/PartialGroup' + readOnly: true required: - created - group + - group_obj - identifier - last_updated - pk @@ -41561,13 +41808,13 @@ components: - realm - slug KeyTypeEnum: + type: string enum: - - rsa - - ec - dsa + - ec - ed25519 - ed448 - type: string + - rsa KubernetesServiceConnection: type: object description: KubernetesServiceConnection Serializer @@ -42317,6 +42564,108 @@ components: - name - server_uri - slug + LangEnum: + type: string + enum: + - af + - ar + - ar-dz + - ast + - az + - be + - bg + - bn + - br + - bs + - ca + - ckb + - cs + - cy + - da + - de + - dsb + - el + - en + - en-au + - en-gb + - eo + - es + - es-ar + - es-co + - es-mx + - es-ni + - es-ve + - et + - eu + - fa + - fi + - fr + - fy + - ga + - gd + - gl + - he + - hi + - hr + - hsb + - hu + - hy + - ia + - id + - ig + - io + - is + - it + - ja + - ka + - kab + - kk + - km + - kn + - ko + - ky + - lb + - lt + - lv + - mk + - ml + - mn + - mr + - ms + - my + - nb + - ne + - nl + - nn + - os + - pa + - pl + - pt + - pt-br + - ro + - ru + - sk + - sl + - sq + - sr + - sr-latn + - sv + - sw + - ta + - te + - tg + - th + - tk + - tr + - tt + - udm + - ug + - uk + - ur + - uz + - vi + - zh-hans + - zh-hant LastTaskStatusEnum: enum: - queued @@ -42476,35 +42825,24 @@ components: items: $ref: '#/components/schemas/Review' readOnly: true + rule: + allOf: + - $ref: '#/components/schemas/RelatedRule' + readOnly: true user_can_review: type: boolean readOnly: true - reviewer_groups: - type: array - items: - $ref: '#/components/schemas/ReviewerGroup' - readOnly: true - min_reviewers: - type: integer - readOnly: true - reviewers: - type: array - items: - $ref: '#/components/schemas/ReviewerUser' - readOnly: true required: - content_type - grace_period_end - id - - min_reviewers - next_review_date - object_admin_url - object_id - object_verbose - opened_on - - reviewer_groups - - reviewers - reviews + - rule - state - user_can_review LifecycleIterationRequest: @@ -43195,6 +43533,7 @@ components: - authentik_providers_ssf.ssfprovider - authentik_providers_ws_federation.wsfederationprovider - authentik_reports.dataexport + - authentik_stages_account_lockdown.accountlockdownstage - authentik_stages_authenticator_endpoint_gdtc.authenticatorendpointgdtcstage - authentik_stages_mtls.mutualtlsstage - authentik_stages_source.sourcestage @@ -43494,6 +43833,7 @@ components: allOf: - $ref: '#/components/schemas/Group' readOnly: true + nullable: true destination_event_user: type: boolean description: When enabled, notification will be sent to user the user that @@ -43548,7 +43888,7 @@ components: name: type: string mode: - $ref: '#/components/schemas/NotificationTransportModeEnum' + $ref: '#/components/schemas/TransportModeEnum' mode_verbose: type: string description: Return selected mode with a UI Label @@ -43586,13 +43926,6 @@ components: - mode_verbose - name - pk - NotificationTransportModeEnum: - enum: - - local - - webhook - - webhook_slack - - email - type: string NotificationTransportRequest: type: object description: NotificationTransport Serializer @@ -43601,7 +43934,7 @@ components: type: string minLength: 1 mode: - $ref: '#/components/schemas/NotificationTransportModeEnum' + $ref: '#/components/schemas/TransportModeEnum' webhook_url: type: string format: uri @@ -43744,6 +44077,10 @@ components: - $ref: '#/components/schemas/ClientTypeEnum' description: Confidential clients are capable of maintaining the confidentiality of their credentials. Public clients are incapable + grant_types: + type: array + items: + $ref: '#/components/schemas/GrantTypesEnum' client_id: type: string maxLength: 255 @@ -43865,6 +44202,10 @@ components: - $ref: '#/components/schemas/ClientTypeEnum' description: Confidential clients are capable of maintaining the confidentiality of their credentials. Public clients are incapable + grant_types: + type: array + items: + $ref: '#/components/schemas/GrantTypesEnum' client_id: type: string minLength: 1 @@ -44636,6 +44977,21 @@ components: - plain - S256 type: string + PaginatedAccountLockdownStageList: + type: object + properties: + pagination: + $ref: '#/components/schemas/Pagination' + results: + type: array + items: + $ref: '#/components/schemas/AccountLockdownStage' + autocomplete: + $ref: '#/components/schemas/Autocomplete' + required: + - autocomplete + - pagination + - results PaginatedAgentConnectorList: type: object properties: @@ -44648,9 +45004,24 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results + PaginatedAppleIndependentSecureEnclaveList: + type: object + properties: + pagination: + $ref: '#/components/schemas/Pagination' + results: + type: array + items: + $ref: '#/components/schemas/AppleIndependentSecureEnclave' + autocomplete: + $ref: '#/components/schemas/Autocomplete' + required: - autocomplete + - pagination + - results PaginatedApplicationEntitlementList: type: object properties: @@ -44663,9 +45034,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedApplicationList: type: object properties: @@ -44678,9 +45049,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedAuthenticatedSessionList: type: object properties: @@ -44693,9 +45064,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedAuthenticatorDuoStageList: type: object properties: @@ -44708,9 +45079,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedAuthenticatorEmailStageList: type: object properties: @@ -44723,9 +45094,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedAuthenticatorEndpointGDTCStageList: type: object properties: @@ -44738,9 +45109,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedAuthenticatorSMSStageList: type: object properties: @@ -44753,9 +45124,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedAuthenticatorStaticStageList: type: object properties: @@ -44768,9 +45139,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedAuthenticatorTOTPStageList: type: object properties: @@ -44783,9 +45154,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedAuthenticatorValidateStageList: type: object properties: @@ -44798,9 +45169,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedAuthenticatorWebAuthnStageList: type: object properties: @@ -44813,9 +45184,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedBlueprintInstanceList: type: object properties: @@ -44828,9 +45199,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedBrandList: type: object properties: @@ -44843,9 +45214,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedCaptchaStageList: type: object properties: @@ -44858,9 +45229,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedCertificateKeyPairList: type: object properties: @@ -44873,9 +45244,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedConnectionTokenList: type: object properties: @@ -44888,9 +45259,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedConnectorList: type: object properties: @@ -44903,9 +45274,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedConsentStageList: type: object properties: @@ -44918,9 +45289,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedDataExportList: type: object properties: @@ -44933,9 +45304,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedDenyStageList: type: object properties: @@ -44948,9 +45319,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedDeviceAccessGroupList: type: object properties: @@ -44963,9 +45334,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedDeviceUserBindingList: type: object properties: @@ -44978,9 +45349,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedDockerServiceConnectionList: type: object properties: @@ -44993,9 +45364,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedDomainList: type: object properties: @@ -45008,9 +45379,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedDummyPolicyList: type: object properties: @@ -45023,9 +45394,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedDummyStageList: type: object properties: @@ -45038,9 +45409,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedDuoDeviceList: type: object properties: @@ -45053,9 +45424,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedEmailDeviceList: type: object properties: @@ -45068,9 +45439,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedEmailStageList: type: object properties: @@ -45083,9 +45454,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedEndpointDeviceList: type: object properties: @@ -45098,9 +45469,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedEndpointList: type: object properties: @@ -45113,9 +45484,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedEndpointStageList: type: object properties: @@ -45128,9 +45499,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedEnrollmentTokenList: type: object properties: @@ -45143,9 +45514,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedEventList: type: object properties: @@ -45158,9 +45529,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedEventMatcherPolicyList: type: object properties: @@ -45173,9 +45544,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedExpiringBaseGrantModelList: type: object properties: @@ -45188,9 +45559,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedExpressionPolicyList: type: object properties: @@ -45203,9 +45574,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedExtraRoleObjectPermissionList: type: object properties: @@ -45215,7 +45586,10 @@ components: type: array items: $ref: '#/components/schemas/ExtraRoleObjectPermission' + autocomplete: + $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results PaginatedFleetConnectorList: @@ -45230,9 +45604,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedFlowList: type: object properties: @@ -45245,9 +45619,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedFlowStageBindingList: type: object properties: @@ -45260,9 +45634,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedGeoIPPolicyList: type: object properties: @@ -45275,9 +45649,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedGoogleChromeConnectorList: type: object properties: @@ -45290,9 +45664,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedGoogleEndpointDeviceList: type: object properties: @@ -45305,9 +45679,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedGoogleWorkspaceProviderGroupList: type: object properties: @@ -45320,9 +45694,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedGoogleWorkspaceProviderList: type: object properties: @@ -45335,9 +45709,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedGoogleWorkspaceProviderMappingList: type: object properties: @@ -45350,9 +45724,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedGoogleWorkspaceProviderUserList: type: object properties: @@ -45365,9 +45739,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedGroupKerberosSourceConnectionList: type: object properties: @@ -45380,9 +45754,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedGroupLDAPSourceConnectionList: type: object properties: @@ -45395,9 +45769,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedGroupList: type: object properties: @@ -45410,9 +45784,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedGroupOAuthSourceConnectionList: type: object properties: @@ -45425,9 +45799,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedGroupPlexSourceConnectionList: type: object properties: @@ -45440,9 +45814,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedGroupSAMLSourceConnectionList: type: object properties: @@ -45455,9 +45829,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedGroupSourceConnectionList: type: object properties: @@ -45470,9 +45844,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedGroupTelegramSourceConnectionList: type: object properties: @@ -45485,9 +45859,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedIdentificationStageList: type: object properties: @@ -45500,9 +45874,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedInitialPermissionsList: type: object properties: @@ -45515,9 +45889,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedInvitationList: type: object properties: @@ -45530,9 +45904,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedInvitationStageList: type: object properties: @@ -45545,9 +45919,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedKerberosSourceList: type: object properties: @@ -45560,9 +45934,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedKerberosSourcePropertyMappingList: type: object properties: @@ -45575,9 +45949,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedKubernetesServiceConnectionList: type: object properties: @@ -45590,9 +45964,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedLDAPOutpostConfigList: type: object properties: @@ -45605,9 +45979,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedLDAPProviderList: type: object properties: @@ -45620,9 +45994,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedLDAPSourceList: type: object properties: @@ -45635,9 +46009,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedLDAPSourcePropertyMappingList: type: object properties: @@ -45650,9 +46024,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedLicenseList: type: object properties: @@ -45665,9 +46039,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedLifecycleIterationList: type: object properties: @@ -45680,9 +46054,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedLifecycleRuleList: type: object properties: @@ -45695,9 +46069,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedMicrosoftEntraProviderGroupList: type: object properties: @@ -45710,9 +46084,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedMicrosoftEntraProviderList: type: object properties: @@ -45725,9 +46099,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedMicrosoftEntraProviderMappingList: type: object properties: @@ -45740,9 +46114,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedMicrosoftEntraProviderUserList: type: object properties: @@ -45755,9 +46129,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedMutualTLSStageList: type: object properties: @@ -45770,9 +46144,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedNotificationList: type: object properties: @@ -45785,9 +46159,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedNotificationRuleList: type: object properties: @@ -45800,9 +46174,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedNotificationTransportList: type: object properties: @@ -45815,9 +46189,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedNotificationWebhookMappingList: type: object properties: @@ -45830,9 +46204,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedOAuth2ProviderList: type: object properties: @@ -45845,9 +46219,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedOAuthSourceList: type: object properties: @@ -45860,9 +46234,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedOAuthSourcePropertyMappingList: type: object properties: @@ -45875,9 +46249,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedOutpostList: type: object properties: @@ -45890,9 +46264,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedPasswordExpiryPolicyList: type: object properties: @@ -45905,9 +46279,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedPasswordPolicyList: type: object properties: @@ -45920,9 +46294,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedPasswordStageList: type: object properties: @@ -45935,9 +46309,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedPermissionList: type: object properties: @@ -45950,9 +46324,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedPlexSourceList: type: object properties: @@ -45965,9 +46339,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedPlexSourcePropertyMappingList: type: object properties: @@ -45980,9 +46354,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedPolicyBindingList: type: object properties: @@ -45995,9 +46369,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedPolicyList: type: object properties: @@ -46010,9 +46384,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedPromptList: type: object properties: @@ -46025,9 +46399,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedPromptStageList: type: object properties: @@ -46040,9 +46414,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedPropertyMappingList: type: object properties: @@ -46055,9 +46429,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedProviderList: type: object properties: @@ -46070,9 +46444,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedProxyOutpostConfigList: type: object properties: @@ -46085,9 +46459,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedProxyProviderList: type: object properties: @@ -46100,9 +46474,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedRACPropertyMappingList: type: object properties: @@ -46115,9 +46489,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedRACProviderList: type: object properties: @@ -46130,9 +46504,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedRadiusOutpostConfigList: type: object properties: @@ -46145,9 +46519,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedRadiusProviderList: type: object properties: @@ -46160,9 +46534,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedRadiusProviderPropertyMappingList: type: object properties: @@ -46175,9 +46549,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedRedirectStageList: type: object properties: @@ -46190,9 +46564,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedReputationList: type: object properties: @@ -46205,9 +46579,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedReputationPolicyList: type: object properties: @@ -46220,9 +46594,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedRoleAssignedObjectPermissionList: type: object properties: @@ -46235,9 +46609,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedRoleList: type: object properties: @@ -46250,9 +46624,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedSAMLPropertyMappingList: type: object properties: @@ -46265,9 +46639,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedSAMLProviderList: type: object properties: @@ -46280,9 +46654,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedSAMLSourceList: type: object properties: @@ -46295,9 +46669,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedSAMLSourcePropertyMappingList: type: object properties: @@ -46310,9 +46684,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedSCIMMappingList: type: object properties: @@ -46325,9 +46699,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedSCIMProviderGroupList: type: object properties: @@ -46340,9 +46714,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedSCIMProviderList: type: object properties: @@ -46355,9 +46729,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedSCIMProviderUserList: type: object properties: @@ -46370,9 +46744,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedSCIMSourceGroupList: type: object properties: @@ -46385,9 +46759,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedSCIMSourceList: type: object properties: @@ -46400,9 +46774,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedSCIMSourcePropertyMappingList: type: object properties: @@ -46415,9 +46789,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedSCIMSourceUserList: type: object properties: @@ -46430,9 +46804,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedSMSDeviceList: type: object properties: @@ -46445,9 +46819,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedSSFProviderList: type: object properties: @@ -46460,9 +46834,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedSSFStreamList: type: object properties: @@ -46475,9 +46849,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedScheduleList: type: object properties: @@ -46490,9 +46864,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedScopeMappingList: type: object properties: @@ -46505,9 +46879,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedServiceConnectionList: type: object properties: @@ -46520,9 +46894,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedSourceList: type: object properties: @@ -46535,9 +46909,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedSourceStageList: type: object properties: @@ -46550,9 +46924,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedStageList: type: object properties: @@ -46565,9 +46939,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedStaticDeviceList: type: object properties: @@ -46580,9 +46954,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedTOTPDeviceList: type: object properties: @@ -46595,9 +46969,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedTaskList: type: object properties: @@ -46610,9 +46984,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedTelegramSourceList: type: object properties: @@ -46625,9 +46999,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedTelegramSourcePropertyMappingList: type: object properties: @@ -46640,9 +47014,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedTenantList: type: object properties: @@ -46655,9 +47029,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedTokenList: type: object properties: @@ -46670,9 +47044,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedTokenModelList: type: object properties: @@ -46685,9 +47059,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedUniquePasswordPolicyList: type: object properties: @@ -46700,9 +47074,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedUserConsentList: type: object properties: @@ -46715,9 +47089,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedUserDeleteStageList: type: object properties: @@ -46730,9 +47104,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedUserKerberosSourceConnectionList: type: object properties: @@ -46745,9 +47119,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedUserLDAPSourceConnectionList: type: object properties: @@ -46760,9 +47134,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedUserList: type: object properties: @@ -46775,9 +47149,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedUserLoginStageList: type: object properties: @@ -46790,9 +47164,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedUserLogoutStageList: type: object properties: @@ -46805,9 +47179,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedUserOAuthSourceConnectionList: type: object properties: @@ -46820,9 +47194,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedUserPlexSourceConnectionList: type: object properties: @@ -46835,9 +47209,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedUserSAMLSourceConnectionList: type: object properties: @@ -46850,9 +47224,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedUserSourceConnectionList: type: object properties: @@ -46865,9 +47239,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedUserTelegramSourceConnectionList: type: object properties: @@ -46880,9 +47254,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedUserWriteStageList: type: object properties: @@ -46895,9 +47269,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedWSFederationProviderList: type: object properties: @@ -46910,9 +47284,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedWebAuthnDeviceList: type: object properties: @@ -46925,9 +47299,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete PaginatedWebAuthnDeviceTypeList: type: object properties: @@ -46940,9 +47314,9 @@ components: autocomplete: $ref: '#/components/schemas/Autocomplete' required: + - autocomplete - pagination - results - - autocomplete Pagination: type: object properties: @@ -47386,6 +47760,32 @@ components: required: - backends - name + PatchedAccountLockdownStageRequest: + type: object + description: AccountLockdownStage Serializer + properties: + name: + type: string + minLength: 1 + deactivate_user: + type: boolean + description: Deactivate the user account (set is_active to False) + set_unusable_password: + type: boolean + description: Set an unusable password for the user + delete_sessions: + type: boolean + description: Delete all active sessions for the user + revoke_tokens: + type: boolean + description: Revoke all tokens for the user (API, app password, recovery, + verification, OAuth) + self_service_completion_flow: + type: string + format: uuid + nullable: true + description: Flow to redirect users to after self-service lockdown. This + flow should not require authentication since the user's session is deleted. PatchedAgentConnectorRequest: type: object properties: @@ -47433,6 +47833,24 @@ components: type: array items: type: integer + PatchedAppleIndependentSecureEnclaveRequest: + type: object + properties: + uuid: + type: string + format: uuid + user: + type: integer + description: The user that this device belongs to. + apple_secure_enclave_key: + type: string + minLength: 1 + apple_enclave_key_id: + type: string + minLength: 1 + device_type: + type: string + minLength: 1 PatchedApplicationEntitlementRequest: type: object description: ApplicationEntitlement Serializer @@ -47482,6 +47900,9 @@ components: $ref: '#/components/schemas/PolicyEngineMode' group: type: string + meta_hide: + type: boolean + description: Hide this application from the user's My applications page. PatchedAuthenticatorDuoStageRequest: type: object description: AuthenticatorDuoStage Serializer @@ -47703,6 +48124,18 @@ components: items: type: string format: uuid + email_otp_throttling_factor: + type: number + format: double + sms_otp_throttling_factor: + type: number + format: double + totp_otp_throttling_factor: + type: number + format: double + static_otp_throttling_factor: + type: number + format: double PatchedAuthenticatorWebAuthnStageRequest: type: object description: AuthenticatorWebAuthnStage Serializer @@ -47725,7 +48158,7 @@ components: - $ref: '#/components/schemas/AuthenticatorAttachmentEnum' nullable: true resident_key_requirement: - $ref: '#/components/schemas/ResidentKeyRequirementEnum' + $ref: '#/components/schemas/UserVerificationEnum' hints: type: array items: @@ -47735,6 +48168,9 @@ components: items: type: string format: uuid + prevent_duplicate_devices: + type: boolean + description: When enabled, a given device can only be registered once. max_attempts: type: integer maximum: 2147483647 @@ -47805,6 +48241,10 @@ components: type: string format: uuid nullable: true + flow_lockdown: + type: string + format: uuid + nullable: true default_application: type: string format: uuid @@ -47899,7 +48339,7 @@ components: type: string minLength: 1 mode: - $ref: '#/components/schemas/ConsentStageModeEnum' + $ref: '#/components/schemas/ConsentModeEnum' consent_expire_in: type: string minLength: 1 @@ -48228,6 +48668,10 @@ components: description: Match events created by selected model. When left empty, all models are matched. When an app is selected, all the application's models are matched. + query: + type: string + nullable: true + minLength: 1 PatchedEventRequest: type: object description: Event Serializer @@ -49317,7 +49761,7 @@ components: type: string minLength: 1 mode: - $ref: '#/components/schemas/NotificationTransportModeEnum' + $ref: '#/components/schemas/TransportModeEnum' webhook_url: type: string format: uri @@ -49389,6 +49833,10 @@ components: - $ref: '#/components/schemas/ClientTypeEnum' description: Confidential clients are capable of maintaining the confidentiality of their credentials. Public clients are incapable + grant_types: + type: array + items: + $ref: '#/components/schemas/GrantTypesEnum' client_id: type: string minLength: 1 @@ -50236,10 +50684,10 @@ components: type: string description: Value of the audience restriction field of the assertion. When left empty, no audience restriction will be added. - issuer: + issuer_override: type: string - minLength: 1 - description: Also known as EntityID + description: Also known as EntityID. Providing a value overrides the default + issuer generated by authentik. assertion_valid_not_before: type: string minLength: 1 @@ -50424,6 +50872,10 @@ components: type: boolean description: Allows authentication flows initiated by the IdP. This can be a security risk, as no validation of the request ID is done. + force_authn: + type: boolean + description: When enabled, the IdP will re-authenticate the user even if + a session exists. name_id_policy: allOf: - $ref: '#/components/schemas/SAMLNameIDPolicyEnum' @@ -50667,6 +51119,8 @@ components: event_retention: type: string minLength: 1 + push_verify_certificates: + type: boolean PatchedScheduleRequest: type: object properties: @@ -50774,13 +51228,24 @@ components: flags: type: object properties: + core_default_app_access: + type: boolean + description: Configure if applications without any policy/group/user + bindings should be accessible to any user. enterprise_audit_include_expanded_diff: type: boolean + description: Include additional information in audit logs, may incur + a performance penalty. flows_continuous_login: type: boolean + description: Upon successful authentication, re-start authentication + in other open tabs. flows_refresh_others: type: boolean + description: Refresh other tabs after successful authentication. + deprecated: true required: + - core_default_app_access - enterprise_audit_include_expanded_diff - flows_continuous_login - flows_refresh_others @@ -51701,14 +52166,17 @@ components: allOf: - $ref: '#/components/schemas/Policy' readOnly: true + nullable: true group_obj: allOf: - $ref: '#/components/schemas/PartialGroup' readOnly: true + nullable: true user_obj: allOf: - $ref: '#/components/schemas/PartialUser' readOnly: true + nullable: true target: type: string format: uuid @@ -52064,6 +52532,9 @@ components: - separator - hidden - static + - alert_info + - alert_warning + - alert_danger - ak-locale type: string PropertyMapping: @@ -53211,6 +53682,10 @@ components: $ref: '#/components/schemas/MatchingModeEnum' url: type: string + redirect_uri_type: + allOf: + - $ref: '#/components/schemas/RedirectURITypeEnum' + default: authorization required: - matching_mode - url @@ -53223,9 +53698,18 @@ components: url: type: string minLength: 1 + redirect_uri_type: + allOf: + - $ref: '#/components/schemas/RedirectURITypeEnum' + default: authorization required: - matching_mode - url + RedirectURITypeEnum: + enum: + - authorization + - logout + type: string RelatedGroup: type: object description: Stripped down group serializer to show relevant children/parents @@ -53252,6 +53736,35 @@ components: - group_uuid - name - pk + RelatedRule: + type: object + description: |- + Mixin to validate that a valid enterprise license + exists before allowing to save the object + properties: + id: + type: string + format: uuid + name: + type: string + reviewer_groups: + type: array + items: + $ref: '#/components/schemas/ReviewerGroup' + readOnly: true + min_reviewers: + type: integer + readOnly: true + reviewers: + type: array + items: + $ref: '#/components/schemas/ReviewerUser' + readOnly: true + required: + - min_reviewers + - name + - reviewer_groups + - reviewers Reputation: type: object description: Reputation Serializer @@ -53355,12 +53868,6 @@ components: minimum: -2147483648 required: - name - ResidentKeyRequirementEnum: - enum: - - discouraged - - preferred - - required - type: string Review: type: object description: |- @@ -53561,12 +54068,10 @@ components: properties: metadata: type: string - readOnly: true download_url: type: string - readOnly: true + nullable: true required: - - download_url - metadata SAMLNameIDPolicyEnum: enum: @@ -53734,9 +54239,10 @@ components: type: string description: Value of the audience restriction field of the assertion. When left empty, no audience restriction will be added. - issuer: + issuer_override: type: string - description: Also known as EntityID + description: Also known as EntityID. Providing a value overrides the default + issuer generated by authentik. assertion_valid_not_before: type: string description: 'Assertion valid not before current time + this value (Format: @@ -53826,6 +54332,18 @@ components: type: string description: Get metadata download URL readOnly: true + url_issuer: + type: string + description: Get Issuer/EntityID URL + readOnly: true + url_unified: + type: string + description: Get unified SAML endpoint URL (handles SSO and SLO) + readOnly: true + url_unified_init: + type: string + description: Get IdP-initiated SAML URL + readOnly: true url_sso_post: type: string description: Get SSO Post URL @@ -53859,11 +54377,14 @@ components: - name - pk - url_download_metadata + - url_issuer - url_slo_post - url_slo_redirect - url_sso_init - url_sso_post - url_sso_redirect + - url_unified + - url_unified_init - verbose_name - verbose_name_plural SAMLProviderImportRequest: @@ -53926,10 +54447,10 @@ components: type: string description: Value of the audience restriction field of the assertion. When left empty, no audience restriction will be added. - issuer: + issuer_override: type: string - minLength: 1 - description: Also known as EntityID + description: Also known as EntityID. Providing a value overrides the default + issuer generated by authentik. assertion_valid_not_before: type: string minLength: 1 @@ -54134,6 +54655,10 @@ components: type: boolean description: Allows authentication flows initiated by the IdP. This can be a security risk, as no validation of the request ID is done. + force_authn: + type: boolean + description: When enabled, the IdP will re-authenticate the user even if + a session exists. name_id_policy: allOf: - $ref: '#/components/schemas/SAMLNameIDPolicyEnum' @@ -54334,6 +54859,10 @@ components: type: boolean description: Allows authentication flows initiated by the IdP. This can be a security risk, as no validation of the request ID is done. + force_authn: + type: boolean + description: When enabled, the IdP will re-authenticate the user even if + a session exists. name_id_policy: allOf: - $ref: '#/components/schemas/SAMLNameIDPolicyEnum' @@ -54387,6 +54916,7 @@ components: enum: - token - oauth + - oauth_interactive type: string SCIMMapping: type: object @@ -54521,6 +55051,24 @@ components: type: object additionalProperties: {} description: Additional OAuth parameters, such as grant_type + auth_oauth_token_last_updated: + type: string + format: date-time + nullable: true + readOnly: true + auth_oauth_token_expires: + type: string + format: date-time + nullable: true + readOnly: true + auth_oauth_url_callback: + type: string + nullable: true + readOnly: true + auth_oauth_url_start: + type: string + nullable: true + readOnly: true compatibility_mode: allOf: - $ref: '#/components/schemas/CompatibilityModeEnum' @@ -54553,6 +55101,10 @@ components: required: - assigned_backchannel_application_name - assigned_backchannel_application_slug + - auth_oauth_token_expires + - auth_oauth_token_last_updated + - auth_oauth_url_callback + - auth_oauth_url_start - component - meta_model_name - name @@ -55063,16 +55615,24 @@ components: type: array items: type: integer + oidc_auth_providers_obj: + type: array + items: + $ref: '#/components/schemas/Provider' + readOnly: true ssf_url: type: string nullable: true readOnly: true event_retention: type: string + push_verify_certificates: + type: boolean required: - component - meta_model_name - name + - oidc_auth_providers_obj - pk - signing_key - ssf_url @@ -55097,6 +55657,8 @@ components: event_retention: type: string minLength: 1 + push_verify_certificates: + type: boolean required: - name - signing_key @@ -55109,6 +55671,8 @@ components: format: uuid readOnly: true title: Uuid + status: + $ref: '#/components/schemas/SSFStreamStatusEnum' provider: type: integer provider_obj: @@ -55139,6 +55703,13 @@ components: - pk - provider - provider_obj + SSFStreamStatusEnum: + enum: + - enabled + - paused + - disabled + - disabled_deleted + type: string Schedule: type: object properties: @@ -55473,13 +56044,24 @@ components: flags: type: object properties: + core_default_app_access: + type: boolean + description: Configure if applications without any policy/group/user + bindings should be accessible to any user. enterprise_audit_include_expanded_diff: type: boolean + description: Include additional information in audit logs, may incur + a performance penalty. flows_continuous_login: type: boolean + description: Upon successful authentication, re-start authentication + in other open tabs. flows_refresh_others: type: boolean + description: Refresh other tabs after successful authentication. + deprecated: true required: + - core_default_app_access - enterprise_audit_include_expanded_diff - flows_continuous_login - flows_refresh_others @@ -55551,13 +56133,24 @@ components: flags: type: object properties: + core_default_app_access: + type: boolean + description: Configure if applications without any policy/group/user + bindings should be accessible to any user. enterprise_audit_include_expanded_diff: type: boolean + description: Include additional information in audit logs, may incur + a performance penalty. flows_continuous_login: type: boolean + description: Upon successful authentication, re-start authentication + in other open tabs. flows_refresh_others: type: boolean + description: Refresh other tabs after successful authentication. + deprecated: true required: + - core_default_app_access - enterprise_audit_include_expanded_diff - flows_continuous_login - flows_refresh_others @@ -56145,7 +56738,7 @@ components: description: Dramatiq actor name state: allOf: - - $ref: '#/components/schemas/TaskStateEnum' + - $ref: '#/components/schemas/TaskStatusEnum' description: Task status mtime: type: string @@ -56213,7 +56806,7 @@ components: - warning - error type: string - TaskStateEnum: + TaskStatusEnum: enum: - queued - consumed @@ -56691,7 +57284,7 @@ components: readOnly: true title: ID provider: - $ref: '#/components/schemas/OAuth2Provider' + $ref: '#/components/schemas/Provider' user: $ref: '#/components/schemas/User' is_expired: @@ -56835,6 +57428,13 @@ components: description: Result if the Policy execution fails. required: - order + TransportModeEnum: + enum: + - local + - webhook + - webhook_slack + - email + type: string TypeCreate: type: object description: Types of an object that can be created @@ -56941,6 +57541,10 @@ components: description: Number of passwords to check against. required: - name + UsageEnum: + enum: + - media + type: string UsedBy: type: object description: A list of all objects referencing the queried object @@ -57065,6 +57669,14 @@ components: - uid - username - uuid + UserAccountLockdownRequest: + type: object + description: Choose the target account before starting the lockdown flow. + properties: + user: + type: integer + nullable: true + description: User to lock. If omitted, locks the current user (self-service). UserAccountRequest: type: object description: Account adding/removing operations @@ -57250,6 +57862,10 @@ components: type: string format: date-time readOnly: true + user_obj: + allOf: + - $ref: '#/components/schemas/PartialUser' + readOnly: true required: - created - identifier @@ -57258,6 +57874,7 @@ components: - source - source_obj - user + - user_obj UserLDAPSourceConnectionRequest: type: object description: User source connection @@ -57530,6 +58147,15 @@ components: - identifier - source - user + UserPasswordHashSetRequest: + type: object + description: Payload to set a users' password hash directly + properties: + password: + type: string + minLength: 1 + required: + - password UserPasswordSetRequest: type: object description: Payload to set a users' password directly diff --git a/scripts/api/compose.yml b/scripts/api/compose.yml deleted file mode 100644 index f277cb9b65..0000000000 --- a/scripts/api/compose.yml +++ /dev/null @@ -1,15 +0,0 @@ ---- -services: - diff: - image: docker.io/openapitools/openapi-diff:2.1.7 - restart: never - network_mode: none - volumes: - - ../../:/local - - gen: - image: docker.io/openapitools/openapi-generator-cli:v7.20.0 - restart: never - network_mode: none - volumes: - - ../../:/local diff --git a/scripts/api/ts-config.yaml b/scripts/api/ts-config.yaml deleted file mode 100644 index 547acb980e..0000000000 --- a/scripts/api/ts-config.yaml +++ /dev/null @@ -1,12 +0,0 @@ -templateDir: /local/scripts/api/ts-templates/ -additionalProperties: - typescriptThreePlus: true - supportsES6: true - npmName: "@goauthentik/api" - fileContentDataType: Blob - enumUnknownDefaultCase: true - useObjectParameters: true -files: - README.mustache: - templateType: SupportingFiles - destinationFilename: README.md diff --git a/scripts/api/ts-templates/README.mustache b/scripts/api/ts-templates/README.mustache deleted file mode 100644 index a82e58e36d..0000000000 --- a/scripts/api/ts-templates/README.mustache +++ /dev/null @@ -1,38 +0,0 @@ -## @goauthentik/api - -This package provides a generated API Client for [authentik](https://goauthentik.io?utm_source=npm-api-package). - -### Building - -See https://docs.goauthentik.io/docs/developer-docs/api/making-schema-changes#building-the-web-client - -### Consuming - -``` -npm install @goauthentik/api --save -``` - -Create a configuration: - -```typescript -import { Configuration } from "@goauthentik/api"; - -export const DEFAULT_CONFIG = new Configuration({ - // Configure where the API is located - // Can be a full host, ensure CORS is configured - basePath: "", - // Required for POST/PUT/DELETE requests - // getCookie function must return the cookie's contents - headers: { - "X-authentik-CSRF": getCookie("authentik_csrf"), - }, -}); -``` - -Then use the API: - -```typescript -import { CoreApi } from "@goauthentik/api"; - -const user = await new CoreApi(DEFAULT_CONFIG).coreUsersMeRetrieve(); -``` diff --git a/scripts/api_filter_schema.py b/scripts/api_filter_schema.py new file mode 100755 index 0000000000..07e7616d4f --- /dev/null +++ b/scripts/api_filter_schema.py @@ -0,0 +1,125 @@ +#!/usr/bin/env python3 + +import re +import sys +from copy import deepcopy +from pathlib import Path +from typing import Any + +from yaml import dump, safe_load + + +def collect_refs(obj: Any, refs: set[str]) -> None: + """Recursively collect all $ref strings from a schema object.""" + if isinstance(obj, dict): + if "$ref" in obj: + refs.add(obj["$ref"]) + for value in obj.values(): + collect_refs(value, refs) + elif isinstance(obj, list): + for item in obj: + collect_refs(item, refs) + + +def resolve_component_refs(schema: dict[str, Any], refs: set[str]) -> None: + """ + Expand refs by also collecting refs from the referenced components themselves, + handling transitive dependencies. + """ + components = schema.get("components", {}) + visited: set[str] = set() + + def expand(ref_set: set[str]) -> None: + new_refs = ref_set - visited + if not new_refs: + return + visited.update(new_refs) + next_refs: set[str] = set() + for ref in new_refs: + # Only handle local $refs like #/components/schemas/Foo + match = re.match(r"^#/components/(\w+)/(.+)$", ref) + if match: + section, name = match.group(1), match.group(2) + component = components.get(section, {}).get(name) + if component: + collect_refs(component, next_refs) + expand(next_refs) + + expand(refs) + refs.update(visited) + + +def filter_components(schema: dict[str, Any], refs: set[str]) -> dict[str, Any]: + """Return a filtered components dict containing only referenced entries.""" + components = schema.get("components", {}) + filtered = {} + + for section, entries in components.items(): + if section in ("securitySchemes",): + filtered[section] = entries + continue + if not isinstance(entries, dict): + continue + kept = {} + for name, definition in entries.items(): + ref_key = f"#/components/{section}/{name}" + if ref_key in refs: + kept[name] = definition + if kept: + filtered[section] = kept + + return filtered + + +def filter_schema(schema: dict[str, Any], operation_ids: set[str]) -> dict[str, Any]: + filtered_paths = {} + all_refs: set[str] = set() + + for path, path_item in schema.get("paths", {}).items(): + filtered_methods = {} + for method, operation in path_item.items(): + if not isinstance(operation, dict): + continue + if operation.get("operationId") in operation_ids: + filtered_methods[method] = operation + collect_refs(operation, all_refs) + + # Preserve path-level fields (parameters, servers, summary) if any + # operation in this path was kept + if filtered_methods: + path_level = { + k: v + for k, v in path_item.items() + if k not in ("get", "put", "post", "delete", "options", "head", "patch", "trace") + } + collect_refs(path_level, all_refs) + filtered_paths[path] = {**path_level, **filtered_methods} + + # Resolve transitive component references + resolve_component_refs(schema, all_refs) + + result = {key: schema[key] for key in ("openapi", "info", "servers") if key in schema} + result["paths"] = filtered_paths + + filtered_components = filter_components(schema, all_refs) + if filtered_components: + result["components"] = filtered_components + + return result + + +def main(input_path: str, output_path: str, ids_path: str) -> None: + schema = safe_load(Path(input_path).read_text()) + operation_ids = { + line.strip() for line in Path(ids_path).read_text().splitlines() if line.strip() + } + + filtered = filter_schema(deepcopy(schema), operation_ids) + Path(output_path).write_text(dump(filtered, allow_unicode=True, sort_keys=False)) + + +if __name__ == "__main__": + if len(sys.argv) != 4: # noqa: PLR2004 + print("Usage: python filter_openapi.py ") + sys.exit(1) + main(*sys.argv[1:]) diff --git a/scripts/compose.yml b/scripts/compose.yml index 225733510b..2d9090a6ec 100644 --- a/scripts/compose.yml +++ b/scripts/compose.yml @@ -30,6 +30,13 @@ services: ports: - 127.0.0.1:8969:8969 restart: always + diff: + image: docker.io/openapitools/openapi-diff:2.1.7 + entrypoint: "/bin/true" + restart: no + network_mode: none + volumes: + - ../:/local:ro volumes: db-data: diff --git a/scripts/generate_compose.py b/scripts/generate_compose.py index c29ca50f9d..134752c37e 100755 --- a/scripts/generate_compose.py +++ b/scripts/generate_compose.py @@ -1,12 +1,21 @@ #!/usr/bin/env python3 +from packaging.version import parse from yaml import safe_dump from authentik import authentik_version -authentik_image = ( - f"${{AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}}:${{AUTHENTIK_TAG:-{authentik_version()}}}" -) +version = authentik_version() +version_parsed = parse(version) +version_split = version_parsed.base_version.split(".") +# If this is an rc version for a patch release (i.e. 2026.2.2-rc1), then don't include that in the +# compose, and fallback to the previous released patch version +if version_parsed.is_prerelease and version_split[-1] != "0": + previous_patch = int(version_split[-1]) - 1 + version_split[-1] = str(previous_patch) + version = ".".join(version_split) + +authentik_image = f"${{AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}}:${{AUTHENTIK_TAG:-{version}}}" base = { "services": { diff --git a/scripts/generate_config.py b/scripts/generate_config.py index f2c8ee8059..48b480ec92 100755 --- a/scripts/generate_config.py +++ b/scripts/generate_config.py @@ -27,8 +27,8 @@ def generate_local_config() -> dict[str, Any]: "cert_discovery_dir": "./certs", "events": { "processors": { - "geoip": "tests/GeoLite2-City-Test.mmdb", - "asn": "tests/GeoLite2-ASN-Test.mmdb", + "geoip": "tests/geoip/GeoLite2-City-Test.mmdb", + "asn": "tests/geoip/GeoLite2-ASN-Test.mmdb", } }, "storage": { diff --git a/scripts/node/lint-lockfile.mjs b/scripts/node/lint-lockfile.mjs new file mode 100755 index 0000000000..1b48f86e12 --- /dev/null +++ b/scripts/node/lint-lockfile.mjs @@ -0,0 +1,278 @@ +#!/usr/bin/env node +/** + * @file Lints the package-lock.json file to ensure it is in sync with package.json. + * + * Usage: + * lint-lockfile [options] [directory] + * + * Options: + * --warn Report issues as warnings instead of failing. The lockfile is + * still regenerated on disk, but the process exits 0. + * + * Exit codes: + * 0 Lockfile is in sync (or --warn was passed) + * 1 Unexpected error + * 2 Lockfile drift detected + */ + +/// + +import * as assert from "node:assert/strict"; +import { findPackageJSON } from "node:module"; +import { dirname } from "node:path"; +import { isDeepStrictEqual, parseArgs } from "node:util"; + +import { ConsoleLogger } from "../../packages/logger-js/lib/node.js"; +import { parseCWD, reportAndExit } from "./utils/commands.mjs"; +import { corepack } from "./utils/corepack.mjs"; +import { gitStatus } from "./utils/git.mjs"; +import { findNPMPackage, loadJSON, npm, pluckDependencyFields } from "./utils/node.mjs"; + +//#region Constants + +const logger = ConsoleLogger.prefix("lint:lockfile"); + +const { values: options, positionals } = parseArgs({ + options: { + "warn": { + type: "boolean", + default: false, + description: "Report issues as warnings instead of failing", + }, + "skip-git": { + type: "boolean", + default: !!process.env.CI, + description: + "Skip checking for uncommitted changes (use with --warn to ignore drift without reporting)", + }, + }, + allowPositionals: true, +}); + +const cwd = parseCWD(positionals); + +const ignoredProperties = new Set([ + // --- + "peer", + "engines", + "optional", +]); + +//#region Utilities + +/** + * @param {Record} actual + * @param {Record} expected + * @param {string[]} [prefix] + * @returns {Set[]} + */ +function extractDiffedProperties(actual, expected, prefix = []) { + const a = actual ?? {}; + const b = expected ?? {}; + const keys = new Set([...Object.keys(a), ...Object.keys(b)]); + /** @type {Set[]} */ + const diffs = []; + + for (const key of keys) { + const path = [...prefix, key]; + const valA = a[key]; + const valB = b[key]; + + if ( + valA !== null && + valB !== null && + typeof valA === "object" && + typeof valB === "object" && + !Array.isArray(valA) && + !Array.isArray(valB) + ) { + // @ts-ignore + diffs.push(...extractDiffedProperties(valA, valB, path)); + } else if (!isDeepStrictEqual(valA, valB)) { + diffs.push(new Set(path)); + } + } + + return diffs; +} + +//#endregion + +/** + * Exit code when lockfile drift is detected (distinct from general errors) + */ +const EXIT_DRIFT = 2; + +/** + * @returns {Promise} The list of issues detected. + */ +async function run() { + /** @type {string[]} */ + const issues = []; + + /** + * Records an issue. In strict mode, throws immediately. + * In warn mode, collects the message for later reporting. + * + * @param {boolean} ok + * @param {string} message + */ + const check = (ok, message) => { + if (ok) return; + + if (options.warn) { + issues.push(message); + return; + } + + assert.fail(message); + }; + + /** + * Checks deep equality of two values. In strict mode, throws if they are not equal. + * In warn mode, records an issue instead. + * + * @param {unknown} actual + * @param {unknown} expected + * @param {string} message + */ + const checkDeep = (actual, expected, message) => { + if (options.warn) { + if (!isDeepStrictEqual(actual, expected)) { + issues.push(message); + } + + return; + } + + assert.deepStrictEqual(actual, expected, message); + }; + + logger.info(`Linting lockfile integrity in: ${cwd}`); + + // MARK: Locate files + + const resolvedPath = import.meta.resolve(cwd); + const packageJSONPath = findPackageJSON(resolvedPath); + + assert.ok( + packageJSONPath, + "Could not find package.json in the current directory or any parent directories", + ); + + const packageDir = dirname(packageJSONPath); + const { packageLockPath } = await findNPMPackage(packageDir); + const lockfileDir = dirname(packageLockPath); + const isWorkspace = lockfileDir !== packageDir; + + const corepackVersion = await corepack`--version`().catch(() => null); + const useCorepack = !!corepackVersion; + logger.info(`corepack: ${corepackVersion || "disabled"}`); + + const expected = { + lockfile: await loadJSON(packageLockPath), + package: await loadJSON(packageJSONPath).then(pluckDependencyFields), + }; + + logger.info(`package.json: ${packageJSONPath} (${expected.package.name})`); + logger.info(`package-lock.json: ${packageLockPath}${isWorkspace ? " (workspace root)" : ""}`); + + // MARK: Uncommitted changes + + if (options["skip-git"]) { + logger.warn("Skipping git status check"); + } else { + const packageStatus = await gitStatus(packageJSONPath); + const lockfileStatus = await gitStatus(packageLockPath); + + if (!packageStatus.available || !lockfileStatus.available) { + logger.warn("Git is not available; skipping uncommitted change detection."); + } else { + check(packageStatus.clean, `package.json has uncommitted changes: ${packageJSONPath}`); + + check( + lockfileStatus.clean, + `package-lock.json has uncommitted changes: ${packageLockPath}`, + ); + } + } + + // MARK: Regenerate + + const npmVersion = await npm`--version`({ useCorepack }); + + logger.info(`Detected npm version: ${npmVersion}`); + + await npm`install --package-lock-only`({ + cwd: lockfileDir, + useCorepack, + }); + + logger.info("npm install complete."); + + const actual = { + lockfile: await loadJSON(packageLockPath), + package: await loadJSON(packageJSONPath).then(pluckDependencyFields), + }; + + // MARK: Compare + + assert.deepStrictEqual( + actual.package, + expected.package, + `package.json was unexpectedly modified during lockfile check: ${packageJSONPath}`, + ); + + try { + checkDeep( + actual.lockfile, + expected.lockfile, + `package-lock.json is out of sync with package.json`, + ); + } catch (error) { + if (!(error instanceof assert.AssertionError)) { + throw error; + } + + // NPM versions <=11.10 has issues with deterministic lockfile generation, + // especially around optional peer dependencies. + const diffedProperties = extractDiffedProperties(actual.lockfile, expected.lockfile).filter( + (segments) => segments.isDisjointFrom(ignoredProperties), + ); + + if (diffedProperties.length) { + const formatted = diffedProperties + .map((segments) => Array.from(segments).join(".")) + .join("\n"); + + throw new Error(`Lockfile drift detected:\n${formatted}`, { cause: error }); + } + + logger.warn( + "Permissible dependency differences detected. Run `npm install` to update the lockfile.", + ); + } + + return issues; +} + +run() + .then((issues) => { + if (issues.length) { + logger.warn(`⚠️ ${issues.length} issue(s) detected:`); + + for (const issue of issues) { + logger.warn(` - ${issue}`); + } + + if (options.warn) { + logger.warn( + "The lockfile on disk has been regenerated. Review and commit the changes.", + ); + process.exit(EXIT_DRIFT); + } + } else { + logger.info("✅ Lockfile is in sync."); + } + }) + .catch((error) => reportAndExit(error, logger)); diff --git a/scripts/node/lint-runtime.mjs b/scripts/node/lint-runtime.mjs new file mode 100755 index 0000000000..718194dd04 --- /dev/null +++ b/scripts/node/lint-runtime.mjs @@ -0,0 +1,114 @@ +#!/usr/bin/env node +/** + * @file Lints the installed Node.js and npm versions against the requirements specified in package.json. + * + * Usage: + * lint-node [options] [directory] + * + * Exit codes: + * 0 Versions are in sync + * 1 Version mismatch detected + */ + +import * as assert from "node:assert/strict"; +import { parseArgs } from "node:util"; + +import { ConsoleLogger } from "../../packages/logger-js/lib/node.js"; +import { CommandError, parseCWD, reportAndExit } from "./utils/commands.mjs"; +import { corepack } from "./utils/corepack.mjs"; +import { resolveRepoRoot } from "./utils/git.mjs"; +import { compareVersions, findNPMPackage, loadJSON, node, npm, parseRange } from "./utils/node.mjs"; + +const logger = ConsoleLogger.prefix("lint-runtime"); + +/** + * @param {string} start + */ +async function readRequirements(start) { + const { packageJSONPath } = await findNPMPackage(start); + + logger.info(`Checking versions in ${packageJSONPath}`); + + const packageJSONData = await loadJSON(packageJSONPath); + + const nodeVersion = await node`--version`().then((output) => output.replace(/^v/, "")); + + const requiredNpmVersion = packageJSONData.engines?.npm; + const requiredNodeVersion = packageJSONData.engines?.node; + + return { nodeVersion, requiredNpmVersion, requiredNodeVersion }; +} + +async function main() { + const parsedArgs = parseArgs({ + allowPositionals: true, + }); + + const cwd = parseCWD(parsedArgs.positionals); + const repoRoot = await resolveRepoRoot(cwd).catch(() => null); + + logger.info(`cwd ${cwd}`); + logger.info(`repository ${repoRoot || "not found"}`); + + const corepackVersion = await corepack`--version`().catch(() => null); + const useCorepack = !!corepackVersion; + logger.info(`corepack ${corepackVersion || "disabled"}`); + + const npmVersion = await npm`--version`({ cwd, useCorepack }) + .then((version) => { + logger.info(`npm${corepackVersion ? " (via Corepack)" : ""} ${version}`); + + return version; + }) + .catch((error) => { + if (error instanceof CommandError && corepackVersion) { + logger.warn(`Failed to read npm version via Corepack ${error.message}`); + + logger.info(`Attempting to read npm version directly without Corepack...`); + // Corepack might be misconfigured or outdated. + // Attempting a second read without Corepack can help us distinguish + // between a general npm issue and a Corepack-specific one. + return npm`--version`({ cwd }).then((version) => { + logger.info(`npm (direct) ${version}`); + + return version; + }); + } + + throw error; + }); + + const { nodeVersion, requiredNpmVersion, requiredNodeVersion } = await readRequirements(cwd); + + logger.info(`node ${nodeVersion}`); + + if (requiredNpmVersion) { + logger.info(`package.json npm ${requiredNpmVersion}`); + + const { operator, version: required } = parseRange(requiredNpmVersion); + const result = compareVersions(npmVersion, required); + + assert.ok( + operator === ">=" ? result >= 0 : result === 0, + `npm version ${npmVersion} does not satisfy required version ${requiredNpmVersion}`, + ); + } + + if (requiredNodeVersion) { + logger.info(`package.json node ${requiredNodeVersion}`); + + const { operator, version: required } = parseRange(requiredNodeVersion); + const result = compareVersions(nodeVersion, required); + + assert.ok( + operator === ">=" ? result >= 0 : result === 0, + `Node.js version ${nodeVersion} does not satisfy required version ${requiredNodeVersion}`, + ); + } +} + +main() + .then(() => { + logger.info("✅ Node.js and npm versions are in sync."); + }) + .catch((error) => reportAndExit(error, logger)); diff --git a/scripts/node/setup-corepack.mjs b/scripts/node/setup-corepack.mjs new file mode 100755 index 0000000000..64da33852a --- /dev/null +++ b/scripts/node/setup-corepack.mjs @@ -0,0 +1,110 @@ +#!/usr/bin/env node + +/** + * @file Downloads the latest corepack tarball from the npm registry. + */ + +import * as fs from "node:fs/promises"; +import { parseArgs } from "node:util"; + +import { ConsoleLogger } from "../../packages/logger-js/lib/node.js"; +import { $, parseCWD, reportAndExit } from "./utils/commands.mjs"; +import { corepack, pullLatestCorepack, verifyPackageManagerIntegrity } from "./utils/corepack.mjs"; +import { resolveRepoRoot } from "./utils/git.mjs"; +import { findNPMPackage, loadJSON, npm } from "./utils/node.mjs"; + +/** + * @deprecated Remove after Corepack is merged into the monorepo and we can rely on the version specified in package.json. + */ +const FALLBACK_PACKAGE_MANAGER = + "npm@11.14.1+sha512.6a8a4d67478497a2dbc6815cad72e64c43f33413717e242756047d466241ab39bee61e691683a64658e94496ec5f1a1c05e4a5ec62dcc773280dfd949443a367"; +const logger = ConsoleLogger.prefix("setup-corepack"); + +async function main() { + const parsedArgs = parseArgs({ + options: { + force: { + type: "boolean", + default: false, + description: "Force re-download of corepack even if a version is already installed", + }, + }, + allowPositionals: true, + }); + + const cwdArg = parseCWD(parsedArgs.positionals); + + const repoRoot = await resolveRepoRoot(cwdArg).catch(() => null); + const cwd = repoRoot || cwdArg; + + const npmVersion = await npm`--version`({ cwd }); + + logger.info(`npm ${npmVersion}`); + + const corepackVersion = await corepack`--version`({ cwd }).catch(() => null); + + logger.info(`corepack ${corepackVersion || "not found"}`); + + if (corepackVersion && !parsedArgs.values.force) { + logger.info("Corepack is already installed, skipping download (use --force to override)"); + return; + } + + await pullLatestCorepack(cwd); + + await npm`install --force -g corepack@latest`({ cwd }); + logger.info("Corepack installed successfully"); + + const { packageJSONPath } = await findNPMPackage(cwd); + + logger.info(`Checking versions in ${packageJSONPath}`); + + const packageJSONData = await loadJSON(packageJSONPath); + + const packageManagerSpec = packageJSONData.packageManager || FALLBACK_PACKAGE_MANAGER; + const plusIndex = packageManagerSpec.indexOf("+"); + const packageManager = + plusIndex === -1 ? packageManagerSpec : packageManagerSpec.slice(0, plusIndex); + const checksum = plusIndex === -1 ? "" : packageManagerSpec.slice(plusIndex + 1); + + if (!checksum) { + throw new Error( + `Invalid packageManager field in package.json. Expected format "name@version+checksum". Got "${packageJSONData.packageManager}".`, + ); + } + + await verifyPackageManagerIntegrity(packageManager, checksum); + + await $`corepack install -g ${packageManager}`({ cwd }); + + logger.info(`Setting up Corepack to use ${packageManager}...`); + + const writablePackageJSON = await fs.access(packageJSONPath, fs.constants.W_OK).then( + () => true, + () => false, + ); + + /** + * @type {string} + */ + let subcommand; + + if (!writablePackageJSON) { + if (!packageJSONData.packageManager) { + throw new Error( + `package.json is not writable and does not specify a packageManager field. Was the package.json file mounted via Docker?`, + ); + } + + subcommand = "install -g"; + } else { + logger.info("package.json is writable"); + subcommand = "use"; + } + + await $`corepack ${subcommand} ${packageManager}`({ cwd }); + + logger.info("Corepack installed npm successfully"); +} + +main().catch((error) => reportAndExit(error, logger)); diff --git a/scripts/node/utils/commands.mjs b/scripts/node/utils/commands.mjs new file mode 100644 index 0000000000..709af7a07e --- /dev/null +++ b/scripts/node/utils/commands.mjs @@ -0,0 +1,123 @@ +/** + * Utility functions for running shell commands and handling their results. + * + * @import { ExecOptions } from "node:child_process" + * @import { IConsoleLogger } from "../../../packages/logger-js/lib/shared.js" + */ + +import { exec } from "node:child_process"; +import { resolve, sep } from "node:path"; +import { promisify } from "node:util"; + +import { ConsoleLogger } from "../../../packages/logger-js/lib/node.js"; + +const logger = ConsoleLogger.prefix("commands"); + +export class CommandError extends Error { + name = "CommandError"; + + /** + * @param {string} command + * @param {ErrorOptions & ExecOptions} options + */ + constructor(command, { cause, cwd, shell } = {}) { + const cwdInfo = cwd ? ` in directory ${cwd}` : ""; + const shellInfo = shell ? ` using shell ${shell}` : ""; + + super(`Command failed: ${command}${cwdInfo}${shellInfo}`, { cause }); + } +} + +/** + * @param {string[]} positionals + * @returns {string} The resolved current working directory for the script + */ +export function parseCWD(positionals) { + // `INIT_CWD` is present only if the script is run via npm. + const initCWD = process.env.INIT_CWD || process.cwd(); + + const cwd = (positionals.length ? resolve(initCWD, positionals[0]) : initCWD) + sep; + + return cwd; +} + +const execAsync = promisify(exec); + +/** + * A timeout value to prevent hanging indefinitely when running shell commands, + * such as if CI is experiencing issues with provisioning or network connectivity. + */ +const DEFAULT_TIMEOUT_MS = 5 * 60 * 1000; + +/** + * @param {Awaited>} result + */ +export const trimResult = (result) => String(result.stdout).trim(); + +/** + * @typedef {(strings: TemplateStringsArray, ...expressions: unknown[]) => + * (options?: ExecOptions) => Promise + * } CommandTag + */ + +function createTag(prefix = "") { + /** @type {CommandTag} */ + return (strings, ...expressions) => { + const command = (prefix ? prefix + " " : "") + String.raw(strings, ...expressions); + + logger.debug(command); + + return (options) => + execAsync(command, { timeout: DEFAULT_TIMEOUT_MS, ...options }) + .then(trimResult) + .catch((cause) => { + throw new CommandError(command, { ...options, cause }); + }); + }; +} + +/** + * A tagged template function for running shell commands. + * @type {CommandTag & { bind(prefix: string): CommandTag }} + */ +export const $ = createTag(); + +/** + * @param {string} prefix + * @returns {CommandTag} + */ +$.bind = (prefix) => createTag(prefix); + +/** + * Promisified version of {@linkcode exec} for easier async/await usage. + * + * @param {string} command The command to run, with space-separated arguments. + * @param {ExecOptions} [options] Optional execution options. + * @throws {CommandError} If the command fails to execute. + */ +export function $2(command, options) { + return execAsync(command, { timeout: DEFAULT_TIMEOUT_MS, ...options }) + .then(trimResult) + .catch((cause) => { + throw new CommandError(command, { ...options, cause }); + }); +} + +/** + * Logs the given error and its cause (if any) and exits the process with a failure code. + * @param {unknown} error + * @param {IConsoleLogger} logger + * @returns {never} + */ +export function reportAndExit(error, logger = ConsoleLogger) { + const message = error instanceof Error ? error.message : String(error); + const cause = error instanceof Error && error.cause instanceof Error ? error.cause : null; + + logger.error(`❌ ${message}`); + + if (cause) { + logger.error(`Caused by: ${cause.message}`); + } + + process.exit(1); +} diff --git a/scripts/node/utils/corepack.mjs b/scripts/node/utils/corepack.mjs new file mode 100644 index 0000000000..c3938727f0 --- /dev/null +++ b/scripts/node/utils/corepack.mjs @@ -0,0 +1,165 @@ +import * as crypto from "node:crypto"; +import * as fs from "node:fs/promises"; +import { join, relative } from "node:path"; + +import { ConsoleLogger } from "../../../packages/logger-js/lib/node.js"; +import { $ } from "./commands.mjs"; + +const REGISTRY_BASE_URL = "https://registry.npmjs.org"; +const REGISTRY_URL = `${REGISTRY_BASE_URL}/corepack`; +const OUTPUT_DIR = join(".corepack", "releases"); +const OUTPUT_FILENAME = "latest.tgz"; + +export const corepack = $.bind("corepack"); + +/** + * Reads the installed Corepack version. + * + * @param {string} [cwd] The directory to run the command in. + * @returns {Promise} The installed Corepack version + */ +export function readCorepackVersion(cwd = process.cwd()) { + return $`corepack --version`({ cwd }); +} + +const logger = ConsoleLogger.prefix("setup-corepack"); + +/** + * @param {string} baseDirectory + */ +export async function pullLatestCorepack(baseDirectory = process.cwd()) { + logger.info("Fetching corepack metadata from registry..."); + + const outputDir = join(baseDirectory, OUTPUT_DIR); + const outputPath = join(outputDir, OUTPUT_FILENAME); + + const res = await fetch(REGISTRY_URL, { signal: AbortSignal.timeout(1000 * 60) }); + + if (!res.ok) { + throw new Error(`Failed to fetch registry metadata: ${res.status} ${res.statusText}`); + } + + const metadata = await res.json(); + + const latestVersion = metadata["dist-tags"].latest; + const versionData = metadata.versions[latestVersion]; + const tarballUrl = versionData.dist.tarball; + const expectedIntegrity = versionData.dist.integrity; + + logger.info(`Latest corepack version: ${latestVersion}`); + logger.info(`Tarball URL: ${tarballUrl}`); + logger.info(`Expected integrity: ${expectedIntegrity}`); + + logger.info({ url: tarballUrl }, "Downloading tarball..."); + + const tarballRes = await fetch(tarballUrl, { + signal: AbortSignal.timeout(1000 * 60), + }); + + if (!tarballRes.ok) { + throw new Error( + `Failed to download tarball: ${tarballRes.status} ${tarballRes.statusText}`, + ); + } + + const tarballBuffer = Buffer.from(await tarballRes.arrayBuffer()); + + logger.info("Verifying integrity..."); + + const [algorithm, expectedHash] = expectedIntegrity.split("-"); + const actualHash = crypto.createHash(algorithm).update(tarballBuffer).digest("base64"); + + if (actualHash !== expectedHash) { + throw new Error( + `Integrity mismatch!\n Expected: ${expectedHash}\n Actual: ${actualHash}`, + ); + } + + logger.info("Integrity verified."); + + await fs.mkdir(outputDir, { recursive: true }); + await fs.writeFile(outputPath, tarballBuffer); + + logger.info(`Saved to ${relative(baseDirectory, outputPath)}`); + logger.info(`corepack@${latestVersion} (${expectedIntegrity})`); +} + +/** + * Downloads the tarball for a package manager spec from the npm registry and + * verifies it matches the expected Corepack-style checksum (`.`). + * + * Corepack's CLI does not enforce the `+integrity` suffix on the `packageManager` + * field when invoked via `corepack install -g`, so we verify the bytes ourselves + * before handing control back to Corepack. + * + * @param {string} packageManager E.g. `npm@11.14.1`. + * @param {string} expectedChecksum E.g. `sha512.6a8a4d67...`. + * @returns {Promise} + */ +export async function verifyPackageManagerIntegrity(packageManager, expectedChecksum) { + const atIndex = packageManager.lastIndexOf("@"); + + if (atIndex <= 0) { + throw new Error( + `Invalid packageManager spec "${packageManager}". Expected "name@version".`, + ); + } + + const name = packageManager.slice(0, atIndex); + const version = packageManager.slice(atIndex + 1); + + const separatorIndex = expectedChecksum.indexOf("."); + + if (separatorIndex <= 0) { + throw new Error( + `Invalid checksum format "${expectedChecksum}". Expected ".".`, + ); + } + + const algorithm = expectedChecksum.slice(0, separatorIndex); + const expectedHex = expectedChecksum.slice(separatorIndex + 1).toLowerCase(); + + logger.info(`Verifying ${name}@${version} against ${algorithm} checksum...`); + + const metadataUrl = `${REGISTRY_BASE_URL}/${encodeURIComponent(name)}/${encodeURIComponent(version)}`; + + const metadataRes = await fetch(metadataUrl, { + signal: AbortSignal.timeout(1000 * 60), + }); + + if (!metadataRes.ok) { + throw new Error( + `Failed to fetch registry metadata for ${name}@${version}: ${metadataRes.status} ${metadataRes.statusText}`, + ); + } + + const versionData = await metadataRes.json(); + const tarballUrl = versionData?.dist?.tarball; + + if (!tarballUrl) { + throw new Error(`Registry response missing dist.tarball for ${name}@${version}.`); + } + + logger.info({ url: tarballUrl }, "Downloading tarball..."); + + const tarballRes = await fetch(tarballUrl, { + signal: AbortSignal.timeout(1000 * 60), + }); + + if (!tarballRes.ok) { + throw new Error( + `Failed to download tarball: ${tarballRes.status} ${tarballRes.statusText}`, + ); + } + + const tarballBuffer = Buffer.from(await tarballRes.arrayBuffer()); + const actualHex = crypto.createHash(algorithm).update(tarballBuffer).digest("hex"); + + if (actualHex !== expectedHex) { + throw new Error( + `Integrity mismatch for ${name}@${version}!\n Expected: ${algorithm}.${expectedHex}\n Actual: ${algorithm}.${actualHex}`, + ); + } + + logger.info(`Integrity verified for ${name}@${version}.`); +} diff --git a/scripts/node/utils/git.mjs b/scripts/node/utils/git.mjs new file mode 100644 index 0000000000..689882ab6d --- /dev/null +++ b/scripts/node/utils/git.mjs @@ -0,0 +1,25 @@ +import { $ } from "./commands.mjs"; + +/** + * Checks whether the given file has uncommitted changes in git. + * + * @param {string} filePath + * @param {string} [cwd] + * @returns {Promise<{ clean: boolean, available: boolean }>} + */ +export async function gitStatus(filePath, cwd = process.cwd()) { + return $`git status --porcelain ${filePath}`({ cwd }) + .then((output) => ({ clean: !output, available: true })) + .catch(() => ({ clean: false, available: false })); +} + +/** + * Finds the root directory of the git repository containing the given directory. + * + * @param {string} cwd + * @returns {Promise} The path to the git repository root. + * @throws {Error} If the command fails (e.g., not a git repository). + */ +export function resolveRepoRoot(cwd = process.cwd()) { + return $`git rev-parse --show-toplevel`({ cwd }); +} diff --git a/scripts/node/utils/node.mjs b/scripts/node/utils/node.mjs new file mode 100644 index 0000000000..c75f2b571b --- /dev/null +++ b/scripts/node/utils/node.mjs @@ -0,0 +1,175 @@ +/** + * Utility functions for working with npm packages and versions. + * + * @import { ExecOptions } from "node:child_process" + */ + +import * as fs from "node:fs/promises"; +import { dirname, join } from "node:path"; + +import { $ } from "./commands.mjs"; + +/** + * Find the nearest directory containing both package.json and package-lock.json, + * starting from the given directory and walking upward. + * + * @param {string} start The directory to start searching from. + * @returns {Promise<{ packageJSONPath: string, packageLockPath: string }>} + * @throws {Error} If no co-located package.json and package-lock.json are found. + */ +export async function findNPMPackage(start) { + let currentDir = start; + + while (currentDir !== dirname(currentDir)) { + const packageJSONPath = join(currentDir, "package.json"); + const packageLockPath = join(currentDir, "package-lock.json"); + + try { + await Promise.all([fs.access(packageJSONPath), fs.access(packageLockPath)]); + return { + packageJSONPath, + packageLockPath, + }; + } catch { + // Continue searching up the directory tree + } + + currentDir = dirname(currentDir); + } + + throw new Error(`No co-located package.json and package-lock.json found above ${start}`); +} + +/** + * @typedef {object} PackageJSON + * @property {string} name + * @property {string} version + * @property {Record} [dependencies] + * @property {Record} [devDependencies] + * @property {Record} [peerDependencies] + * @property {Record} [optionalDependencies] + * @property {Record} [peerDependenciesMeta] + * @property {Record} [engines] + * @property {Record} [devEngines] + * @property {string} [packageManager] + */ + +/** + * @param {string} jsonPath + * @returns {Promise} + */ +export function loadJSON(jsonPath) { + return fs + .readFile(jsonPath, "utf-8") + .then(JSON.parse) + .catch((cause) => { + throw new Error(`Failed to load JSON file at ${jsonPath}`, { cause }); + }); +} + +const PackageJSONComparisionFields = /** @type {const} */ ([ + "name", + "dependencies", + "devDependencies", + "optionalDependencies", + "peerDependencies", + "peerDependenciesMeta", +]); + +/** + * @typedef {typeof PackageJSONComparisionFields[number]} PackageJSONComparisionField + */ + +/** + * Extracts only the dependency fields from a package.json object for comparison purposes. + * + * @param {PackageJSON} data + * @returns {Pick} + */ +export function pluckDependencyFields(data) { + /** + * @type {Record} + */ + const result = {}; + + for (const field of PackageJSONComparisionFields) { + if (data[field]) { + result[field] = data[field]; + } + } + + return /** @type {Pick} */ (result); +} + +//#region Versioning + +/** + * Compares two semantic version strings (e.g., "14.17.0"). + * + * @param {string} a The first version string. + * @param {string} b The second version string. + * @returns {number} + */ +export function compareVersions(a, b) { + const pa = a.split(".").map(Number); + const pb = b.split(".").map(Number); + for (let i = 0; i < 3; i++) { + if (pa[i] > pb[i]) return 1; + if (pa[i] < pb[i]) return -1; + } + return 0; +} + +/** + * Runs a Node.js command and returns its stdout output as a string. + * + * @param {TemplateStringsArray} strings + * @param {...unknown} expressions + * @returns {(options?: ExecOptions) => Promise} + */ +export const node = $.bind("node"); + +/** + * @typedef {object} NPMCommandOptions + * @property {boolean} [useCorepack] Whether to prefix the command with "corepack " to use Corepack's shims. + * @returns {Promise} + */ + +/** + * Runs an npm command and returns its stdout output as a string. + * + * @param {TemplateStringsArray} strings + * @param {...unknown} expressions + * @returns {(options?: ExecOptions & NPMCommandOptions) => Promise} + */ +export function npm(strings, ...expressions) { + const subcommand = String.raw(strings, ...expressions); + + return ({ useCorepack, ...options } = {}) => { + const command = [useCorepack ? "corepack" : "", "npm", subcommand] + .filter(Boolean) + .join(" "); + + return $`${command}`(options); + }; +} + +/** + * Parses a version range string, stripping any leading >= and normalizing to three parts. + * @param {string} range + * @returns {{ operator: ">=" | "=", version: string }} + */ +export function parseRange(range) { + const hasGte = range.startsWith(">="); + const raw = hasGte ? range.slice(2) : range; + const parts = raw.split(".").map(Number); + + while (parts.length < 3) parts.push(0); + + return { + operator: hasGte ? ">=" : "=", + version: parts.join("."), + }; +} + +//#endregion diff --git a/scripts/test_docker.sh b/scripts/test_docker.sh index 408de5b9ce..f8f96e372a 100755 --- a/scripts/test_docker.sh +++ b/scripts/test_docker.sh @@ -20,8 +20,6 @@ if [[ -v BUILD ]]; then # Ensure buildx is installed docker buildx install - make gen-client-ts - make gen-client-go touch lifecycle/container/.env docker build -t "${AUTHENTIK_IMAGE}:${AUTHENTIK_TAG}" -f lifecycle/container/Dockerfile . diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000000..956c97e96e --- /dev/null +++ b/src/main.rs @@ -0,0 +1,125 @@ +use std::sync::atomic::{AtomicUsize, Ordering}; + +#[cfg(feature = "core")] +use ak_common::db; +use ak_common::{Mode, Tasks, authentik_full_version, config, tls, tracing as ak_tracing}; +use argh::FromArgs; +use eyre::{Result, eyre}; +use tracing::{error, info, trace}; + +mod metrics; +#[cfg(feature = "core")] +mod server; +#[cfg(feature = "core")] +mod worker; + +#[derive(Debug, FromArgs, PartialEq)] +/// The authentication glue you need. +struct Cli { + #[argh(subcommand)] + command: Command, +} + +#[derive(Debug, FromArgs, PartialEq)] +#[argh(subcommand)] +enum Command { + #[cfg(feature = "core")] + AllInOne(AllInOne), + #[cfg(feature = "core")] + Server(server::Cli), + #[cfg(feature = "core")] + Worker(worker::Cli), +} + +#[derive(Debug, FromArgs, PartialEq)] +/// Run both the authentik server and worker. +#[argh(subcommand, name = "allinone")] +#[expect( + clippy::empty_structs_with_brackets, + reason = "argh doesn't support unit structs" +)] +pub(crate) struct AllInOne {} + +fn main() -> Result<()> { + let tracing_crude = ak_tracing::install_crude(); + info!(version = authentik_full_version(), "authentik is starting"); + + let cli: Cli = argh::from_env(); + + match &cli.command { + #[cfg(feature = "core")] + Command::AllInOne(_) => Mode::set(Mode::AllInOne)?, + #[cfg(feature = "core")] + Command::Server(_) => Mode::set(Mode::Server)?, + #[cfg(feature = "core")] + Command::Worker(_) => Mode::set(Mode::Worker)?, + } + + trace!("installing error formatting"); + color_eyre::install()?; + + #[cfg(feature = "core")] + if Mode::is_core() { + trace!("initializing Python"); + pyo3::Python::initialize(); + trace!("Python initialized"); + } + + config::init()?; + tls::init()?; + + let _sentry = ak_tracing::sentry::install()?; + ak_tracing::install()?; + drop(tracing_crude); + + tokio::runtime::Builder::new_multi_thread() + .thread_name_fn(|| { + static ATOMIC_ID: AtomicUsize = AtomicUsize::new(0); + let id = ATOMIC_ID.fetch_add(1, Ordering::SeqCst); + format!("tokio-{id}") + }) + .enable_all() + .build()? + .block_on(async { + let mut tasks = Tasks::new()?; + + config::start(&mut tasks)?; + + let metrics = metrics::start(&mut tasks)?; + + #[cfg(feature = "core")] + if Mode::get() == Mode::AllInOne || Mode::get() == Mode::Worker { + db::init(&mut tasks).await?; + } + + match cli.command { + #[cfg(feature = "core")] + Command::AllInOne(_) => { + server::start(server::Cli::default(), &mut tasks).await?; + let workers = worker::start(worker::Cli::default(), &mut tasks)?; + metrics.workers.store(Some(workers)); + } + #[cfg(feature = "core")] + Command::Server(args) => { + server::start(args, &mut tasks).await?; + } + #[cfg(feature = "core")] + Command::Worker(args) => { + let workers = worker::start(args, &mut tasks)?; + metrics.workers.store(Some(workers)); + } + } + + let errors = tasks.run().await; + + Mode::cleanup(); + + if errors.is_empty() { + info!("authentik exiting"); + Ok(()) + } else { + error!(err = ?errors, "authentik encountered errors"); + Err(eyre!("Errors encountered: {:?}", errors)) + } + }) +} diff --git a/src/metrics/handlers.rs b/src/metrics/handlers.rs new file mode 100644 index 0000000000..13865d1f50 --- /dev/null +++ b/src/metrics/handlers.rs @@ -0,0 +1,75 @@ +use std::sync::Arc; + +use ak_axum::error::Result; +use ak_common::mode::Mode; +use axum::{body::Body, extract::State, http::StatusCode, response::Response}; +use tokio::task::spawn_blocking; +use tracing::instrument; + +use super::Metrics; + +#[instrument(skip_all)] +pub(super) async fn metrics_handler(State(state): State>) -> Result { + let mut metrics = Vec::new(); + state.prometheus.render_to_write(&mut metrics)?; + + #[cfg(feature = "core")] + if Mode::is_core() { + if Mode::get() == Mode::Worker + && let Some(workers) = state.workers.load_full() + { + workers.notify_metrics().await?; + } + + metrics.extend(spawn_blocking(python::get_python_metrics).await??); + } + + Ok(Response::builder() + .status(StatusCode::OK) + .header("Content-Type", "text/plain; version=1.0.0; charset=utf-8") + .body(Body::from(metrics))?) +} + +#[cfg(feature = "core")] +mod python { + use eyre::{Report, Result}; + use pyo3::{ + IntoPyObjectExt as _, + ffi::c_str, + prelude::*, + types::{PyBytes, PyDict}, + }; + + pub(super) fn get_python_metrics() -> Result> { + let metrics = Python::attach(|py| { + let locals = PyDict::new(py); + Python::run( + py, + c_str!( + r#" +from prometheus_client import ( + CollectorRegistry, + generate_latest, + multiprocess, +) + +registry = CollectorRegistry() +multiprocess.MultiProcessCollector(registry) +output = generate_latest(registry) +"# + ), + None, + Some(&locals), + )?; + let metrics = locals + .get_item("output")? + .unwrap_or(PyBytes::new(py, &[]).into_bound_py_any(py)?) + .cast::() + .map_or_else(|_| PyBytes::new(py, &[]), |v| v.to_owned()) + .as_bytes() + .to_owned(); + Ok::<_, Report>(metrics) + })?; + Ok::<_, Report>(metrics) + } +} diff --git a/src/metrics/mod.rs b/src/metrics/mod.rs new file mode 100644 index 0000000000..8e1c4f7a98 --- /dev/null +++ b/src/metrics/mod.rs @@ -0,0 +1,97 @@ +use std::{env::temp_dir, os::unix, path::PathBuf, sync::Arc}; + +use ak_axum::{router::wrap_router, server}; +use ak_common::{ + Mode, + arbiter::{Arbiter, Tasks}, + config, +}; +use arc_swap::ArcSwapOption; +use axum::{Router, routing::any}; +use eyre::Result; +use metrics_exporter_prometheus::{PrometheusBuilder, PrometheusHandle}; +use tokio::{ + task::spawn_blocking, + time::{Duration, interval}, +}; +use tracing::info; + +#[cfg(feature = "core")] +use crate::worker::Workers; + +mod handlers; + +fn socket_path() -> PathBuf { + temp_dir().join("authentik-metrics.sock") +} + +pub(crate) struct Metrics { + prometheus: PrometheusHandle, + #[cfg(feature = "core")] + pub(crate) workers: ArcSwapOption, +} + +impl Metrics { + fn new() -> Result { + info!("installing Prometheus recorder"); + let prometheus = PrometheusBuilder::new() + .with_recommended_naming(true) + .install_recorder()?; + Ok(Self { + prometheus, + #[cfg(feature = "core")] + workers: ArcSwapOption::empty(), + }) + } +} + +async fn run_upkeep(arbiter: Arbiter, state: Arc) -> Result<()> { + info!("starting metrics upkeep runner"); + let mut upkeep_interval = interval(Duration::from_secs(5)); + loop { + tokio::select! { + _ = upkeep_interval.tick() => { + let state_clone = Arc::clone(&state); + spawn_blocking(move || state_clone.prometheus.run_upkeep()).await?; + }, + () = arbiter.shutdown() => return Ok(()) + } + } +} + +fn build_router(state: Arc) -> Router { + wrap_router( + Router::new() + .fallback(any(handlers::metrics_handler)) + .with_state(state), + true, + ) +} + +pub(crate) fn start(tasks: &mut Tasks) -> Result> { + let arbiter = tasks.arbiter(); + let metrics = Arc::new(Metrics::new()?); + let router = build_router(Arc::clone(&metrics)); + + tasks + .build_task() + .name(&format!("{}::run_upkeep", module_path!())) + .spawn(run_upkeep(arbiter, Arc::clone(&metrics)))?; + + // Only run HTTP server in worker mode, in server or allinone mode, they're handled by the + // server. + if Mode::get() == Mode::Worker { + for addr in config::get().listen.metrics.iter().copied() { + server::start_plain(tasks, "metrics", router.clone(), addr)?; + } + + server::start_unix( + tasks, + "metrics", + router, + unix::net::SocketAddr::from_pathname(socket_path())?, + )?; + } + + Ok(metrics) +} diff --git a/src/server/mod.rs b/src/server/mod.rs new file mode 100644 index 0000000000..6c5b4348a2 --- /dev/null +++ b/src/server/mod.rs @@ -0,0 +1,124 @@ +use std::{env::temp_dir, path::PathBuf, process::Stdio, sync::Arc}; + +use ak_common::{Arbiter, Tasks, config}; +use argh::FromArgs; +use eyre::{Result, eyre}; +use nix::{ + sys::signal::{Signal, kill}, + unistd::Pid, +}; +use tokio::{ + process::{Child, Command}, + sync::Mutex, + time::{Duration, sleep, timeout}, +}; +use tracing::{info, warn}; + +#[derive(Debug, Default, FromArgs, PartialEq, Eq)] +/// Run the authentik server. +#[argh(subcommand, name = "server")] +#[expect( + clippy::empty_structs_with_brackets, + reason = "argh doesn't support unit structs" +)] +pub(crate) struct Cli {} + +pub(crate) fn socket_path() -> PathBuf { + temp_dir().join("authentik.sock") +} + +pub(crate) struct Server { + server: Mutex, +} + +impl Server { + async fn new() -> Result { + info!("starting server"); + + let server = if config::get().debug && which::which("authentik-server").is_err() { + let build_status = Command::new("go") + .args(["build", "-o", "server", "./cmd/server"]) + .stdin(Stdio::null()) + .status() + .await?; + if !build_status.success() { + return Err(eyre!("golang server failed to compile")); + } + Command::new("./server") + .kill_on_drop(true) + .stdin(Stdio::null()) + .stdout(Stdio::inherit()) + .stderr(Stdio::inherit()) + .spawn()? + } else { + Command::new("authentik-server") + .kill_on_drop(true) + .stdin(Stdio::null()) + .stdout(Stdio::inherit()) + .stderr(Stdio::inherit()) + .spawn()? + }; + + Ok(Self { + server: Mutex::new(server), + }) + } + + async fn shutdown(&self) -> Result<()> { + info!("shutting down server"); + let mut server = self.server.lock().await; + if let Some(id) = server.id() { + kill(Pid::from_raw(id.cast_signed()), Signal::SIGINT)?; + } + timeout(Duration::from_secs(1), server.wait()).await??; + Ok(()) + } + + async fn is_alive(&self) -> bool { + let try_wait = self.server.lock().await.try_wait(); + match try_wait { + Ok(Some(code)) => { + warn!(?code, "server has exited"); + false + } + Ok(None) => true, + Err(err) => { + warn!( + ?err, + "failed to check the status of server process, ignoring" + ); + true + } + } + } +} + +async fn watch_server(arbiter: Arbiter, server: Arc) -> Result<()> { + info!("starting server watcher"); + loop { + tokio::select! { + () = sleep(Duration::from_secs(5)) => { + if !server.is_alive().await { + return Err(eyre!("server has exited unexpectedly")); + } + } + () = arbiter.shutdown() => { + server.shutdown().await?; + return Ok(()); + } + } + } +} + +pub(crate) async fn start(_cli: Cli, tasks: &mut Tasks) -> Result> { + let arbiter = tasks.arbiter(); + + let server = Arc::new(Server::new().await?); + + tasks + .build_task() + .name(&format!("{}::watch_server", module_path!())) + .spawn(watch_server(arbiter.clone(), Arc::clone(&server)))?; + + Ok(server) +} diff --git a/src/worker/healthcheck.rs b/src/worker/healthcheck.rs new file mode 100644 index 0000000000..d2573f915e --- /dev/null +++ b/src/worker/healthcheck.rs @@ -0,0 +1,45 @@ +use std::sync::Arc; + +use ak_axum::{error::Result, router::wrap_router}; +use ak_common::db; +use axum::{Router, extract::State, http::StatusCode, response::IntoResponse, routing::any}; +use tracing::instrument; + +use super::Workers; + +#[instrument(skip_all)] +async fn health_ready(State(workers): State>) -> Result { + if !workers.are_alive().await || sqlx::query("SELECT 1").execute(db::get()).await.is_err() { + Ok(StatusCode::SERVICE_UNAVAILABLE) + } else if workers.health_ready().await? { + Ok(StatusCode::OK) + } else { + Ok(StatusCode::SERVICE_UNAVAILABLE) + } +} + +#[instrument(skip_all)] +async fn health_live(State(workers): State>) -> Result { + if !workers.are_alive().await || sqlx::query("SELECT 1").execute(db::get()).await.is_err() { + Ok(StatusCode::SERVICE_UNAVAILABLE) + } else if workers.health_live().await? { + Ok(StatusCode::OK) + } else { + Ok(StatusCode::SERVICE_UNAVAILABLE) + } +} + +async fn fallback() -> impl IntoResponse { + StatusCode::OK +} + +pub(super) fn build_router(workers: Arc) -> Router { + wrap_router( + Router::new() + .route("/-/heath/ready/", any(health_ready)) + .route("/-/heath/live/", any(health_live)) + .fallback(fallback) + .with_state(workers), + true, + ) +} diff --git a/src/worker/mod.rs b/src/worker/mod.rs new file mode 100644 index 0000000000..94db0ea0ac --- /dev/null +++ b/src/worker/mod.rs @@ -0,0 +1,358 @@ +use std::{ + env::temp_dir, + os::unix, + path::PathBuf, + process::Stdio, + sync::{ + Arc, + atomic::{AtomicBool, Ordering}, + }, +}; + +use ak_common::{ + Event, + arbiter::{Arbiter, Tasks}, + config, + mode::Mode, +}; +use argh::FromArgs; +use axum::{ + body::Body, + http::{Request, header::HOST}, +}; +use eyre::{Result, eyre}; +use hyper_unix_socket::UnixSocketConnector; +use hyper_util::{client::legacy::Client, rt::TokioExecutor}; +use nix::{ + sys::signal::{Signal, kill}, + unistd::Pid, +}; +use tokio::{ + net::UnixStream, + process::{Child, Command}, + signal::unix::SignalKind, + sync::Mutex, + time::{Duration, interval}, +}; +use tracing::{info, instrument, trace, warn}; + +use crate::server::socket_path; + +mod healthcheck; +mod worker_status; + +#[derive(Debug, Default, FromArgs, PartialEq, Eq)] +/// Run the authentik worker. +#[argh(subcommand, name = "worker")] +#[expect( + clippy::empty_structs_with_brackets, + reason = "argh doesn't support unit structs" +)] +pub(crate) struct Cli {} + +const INITIAL_WORKER_ID: usize = 1000; +static INITIAL_WORKER_READY: AtomicBool = AtomicBool::new(false); + +pub(crate) struct Worker { + worker_id: usize, + worker: Child, + client: Client, Body>, + socket_path: PathBuf, +} + +impl Worker { + fn new(worker_id: usize, socket_path: PathBuf) -> Result { + info!(worker_id, "starting worker"); + + let mut cmd = Command::new("python"); + cmd.arg("-m"); + cmd.arg("lifecycle.worker_process"); + cmd.arg(worker_id.to_string()); + cmd.arg(&socket_path); + + let client = Client::builder(TokioExecutor::new()) + .pool_idle_timeout(Duration::from_mins(1)) + .set_host(false) + .build(UnixSocketConnector::new(socket_path.clone())); + + Ok(Self { + worker_id, + worker: cmd + .kill_on_drop(true) + .stdin(Stdio::null()) + .stdout(Stdio::inherit()) + .stderr(Stdio::inherit()) + .spawn()?, + client, + socket_path, + }) + } + + async fn shutdown(&mut self, signal: Signal) -> Result<()> { + trace!( + signal = signal.as_str(), + "sending shutdown signal to worker" + ); + if let Some(id) = self.worker.id() { + kill(Pid::from_raw(id.cast_signed()), signal)?; + } + self.worker.wait().await?; + Ok(()) + } + + async fn graceful_shutdown(&mut self) -> Result<()> { + info!("gracefully shutting down worker"); + self.shutdown(Signal::SIGTERM).await + } + + async fn fast_shutdown(&mut self) -> Result<()> { + info!("immediately shutting down worker"); + self.shutdown(Signal::SIGINT).await + } + + #[instrument(skip(self), fields(worker_id = self.worker_id))] + fn is_alive(&mut self) -> bool { + let try_wait = self.worker.try_wait(); + match try_wait { + Ok(Some(code)) => { + warn!(?code, "worker has exited"); + false + } + Ok(None) => true, + Err(err) => { + warn!( + ?err, + "failed to check the status of worker process, ignoring" + ); + true + } + } + } + + async fn is_socket_ready(&self) -> bool { + let result = UnixStream::connect(&self.socket_path).await; + trace!(?result, "checking if worker socket is ready"); + result.is_ok() + } + + #[instrument(skip(self), fields(worker_id = self.worker_id))] + async fn health_live(&self) -> Result { + trace!("sending health live request to worker"); + let req = Request::builder() + .method("GET") + .uri("http://localhost:8000/-/health/live/") + .header(HOST, "localhost") + .body(Body::from(""))?; + Ok(self + .client + .request(req) + .await + .inspect_err(|err| warn!(?err, "failed to send health live request to worker"))? + .status() + .is_success()) + } + + #[instrument(skip(self), fields(worker_id = self.worker_id))] + async fn health_ready(&self) -> Result { + trace!("sending health ready request to worker"); + let req = Request::builder() + .method("GET") + .uri("http://localhost:8000/-/health/ready/") + .header(HOST, "localhost") + .body(Body::from(""))?; + Ok(self + .client + .request(req) + .await + .inspect_err(|err| warn!(?err, "failed to send health ready request to worker"))? + .status() + .is_success()) + } + + #[instrument(skip(self), fields(worker_id = self.worker_id))] + async fn notify_metrics(&self) -> Result<()> { + trace!("sending metrics request to worker"); + let req = Request::builder() + .method("GET") + .uri("http://localhost:8000/-/metrics/") + .header(HOST, "localhost") + .body(Body::from(""))?; + self.client + .request(req) + .await + .inspect_err(|err| warn!(?err, "failed to send metrics request to worker"))?; + Ok(()) + } +} + +impl Drop for Worker { + fn drop(&mut self) { + if let Err(err) = std::fs::remove_file(&self.socket_path) { + trace!(?err, "failed to remove socket, ignoring"); + } + } +} + +pub(crate) struct Workers(Mutex>); + +impl Workers { + fn new() -> Result { + let mut workers = Vec::with_capacity(config::get().worker.processes.get()); + workers.push(Worker::new( + INITIAL_WORKER_ID, + temp_dir().join(format!("authentik-worker-{INITIAL_WORKER_ID}.sock")), + )?); + + Ok(Self(Mutex::new(workers))) + } + + async fn start_other_workers(&self) -> Result<()> { + let mut workers = self.0.lock().await; + while workers.len() != config::get().worker.processes.get() { + let worker_id = INITIAL_WORKER_ID + workers.len(); + workers.push(Worker::new( + worker_id, + temp_dir().join(format!("authentik-worker-{worker_id}.sock")), + )?); + } + Ok(()) + } + + async fn graceful_shutdown(&self) -> Result<()> { + let mut results = Vec::with_capacity(self.0.lock().await.capacity()); + for worker in self.0.lock().await.iter_mut() { + results.push(worker.graceful_shutdown().await); + } + + results.into_iter().find(Result::is_err).unwrap_or(Ok(())) + } + + async fn fast_shutdown(&self) -> Result<()> { + let mut results = Vec::with_capacity(self.0.lock().await.capacity()); + for worker in self.0.lock().await.iter_mut() { + results.push(worker.fast_shutdown().await); + } + + results.into_iter().find(Result::is_err).unwrap_or(Ok(())) + } + + #[instrument(skip_all)] + async fn are_alive(&self) -> bool { + for worker in self.0.lock().await.iter_mut() { + if !worker.is_alive() { + return false; + } + } + true + } + + async fn is_socket_ready(&self) -> bool { + if let Some(initial_worker) = self.0.lock().await.iter_mut().next() { + return initial_worker.is_socket_ready().await; + } + false + } + + #[instrument(skip_all)] + async fn health_live(&self) -> Result { + for worker in self.0.lock().await.iter() { + if !worker.health_live().await? { + return Ok(false); + } + } + Ok(true) + } + + #[instrument(skip_all)] + async fn health_ready(&self) -> Result { + for worker in self.0.lock().await.iter() { + if !worker.health_ready().await? { + return Ok(false); + } + } + Ok(true) + } + + #[instrument(skip_all)] + pub(crate) async fn notify_metrics(&self) -> Result<()> { + if let Some(worker) = self.0.lock().await.iter().next() { + worker.notify_metrics().await?; + } + Ok(()) + } +} + +async fn watch_workers(arbiter: Arbiter, workers: Arc) -> Result<()> { + info!("starting worker watcher"); + let mut events_rx = arbiter.events_subscribe(); + let mut check_interval = interval(Duration::from_secs(5)); + let mut start_interval = interval(Duration::from_secs(1)); + + loop { + tokio::select! { + Ok(Event::Signal(signal)) = events_rx.recv() => { + if signal == SignalKind::user_defined2() && !INITIAL_WORKER_READY.load(Ordering::Relaxed) { + info!("worker notified us ready, marked ready for operation"); + INITIAL_WORKER_READY.store(true, Ordering::Relaxed); + workers.start_other_workers().await?; + } + }, + _ = start_interval.tick(), if !INITIAL_WORKER_READY.load(Ordering::Relaxed) => { + // On some platforms the SIGUSR1 can be missed. + // Fall back to probing the worker unix socket and mark ready once it accepts connections. + if workers.is_socket_ready().await { + info!("worker socket is accepting connections, marked ready for operation"); + INITIAL_WORKER_READY.store(true, Ordering::Relaxed); + workers.start_other_workers().await?; + } + }, + _ = check_interval.tick() => { + if !workers.are_alive().await { + return Err(eyre!("one or more workers have exited unexpectedly")); + } + }, + () = arbiter.fast_shutdown() => { + workers.fast_shutdown().await?; + return Ok(()); + }, + () = arbiter.graceful_shutdown() => { + workers.graceful_shutdown().await?; + return Ok(()); + }, + } + } +} + +pub(crate) fn start(_cli: Cli, tasks: &mut Tasks) -> Result> { + let arbiter = tasks.arbiter(); + + let workers = Arc::new(Workers::new()?); + + tasks + .build_task() + .name(&format!("{}::watch_workers", module_path!())) + .spawn(watch_workers(arbiter.clone(), Arc::clone(&workers)))?; + + tasks + .build_task() + .name(&format!("{}::worker_status::run", module_path!())) + .spawn(worker_status::run(arbiter))?; + + // Only run HTTP server in worker mode, in allinone mode, they're handled by the server. + if Mode::get() == Mode::Worker { + let router = healthcheck::build_router(Arc::clone(&workers)); + + for addr in config::get().listen.http.iter().copied() { + ak_axum::server::start_plain(tasks, "worker", router.clone(), addr)?; + } + + ak_axum::server::start_unix( + tasks, + "worker", + router, + unix::net::SocketAddr::from_pathname(socket_path())?, + )?; + } + + Ok(workers) +} diff --git a/src/worker/worker_status.rs b/src/worker/worker_status.rs new file mode 100644 index 0000000000..a9e50df900 --- /dev/null +++ b/src/worker/worker_status.rs @@ -0,0 +1,48 @@ +use ak_common::{arbiter::Arbiter, authentik_full_version, db}; +use eyre::Result; +use nix::unistd::gethostname; +use tokio::time::{Duration, interval, sleep}; +use tracing::warn; +use uuid::Uuid; + +async fn keep(arbiter: Arbiter, id: Uuid, hostname: &str, version: &str) -> Result<()> { + let query = " + INSERT INTO authentik_tasks_workerstatus (id, hostname, version, last_seen) + VALUES ($1, $2, $3, NOW()) + ON CONFLICT (id) DO UPDATE SET last_seen = NOW() + "; + let mut keep_interval = interval(Duration::from_secs(30)); + loop { + tokio::select! { + _ = keep_interval.tick() => { + sqlx::query(query) + .bind(id) + .bind(hostname) + .bind(version) + .execute(db::get()) + .await?; + }, + () = arbiter.shutdown() => return Ok(()), + } + } +} + +pub(super) async fn run(arbiter: Arbiter) -> Result<()> { + let id = Uuid::new_v4(); + let raw_hostname = gethostname()?; + let hostname = raw_hostname.to_string_lossy(); + let version = authentik_full_version(); + + loop { + if let Err(err) = keep(arbiter.clone(), id, hostname.as_ref(), &version).await { + warn!(?err, "failed to update worker status in database"); + } + // `keep` returned. It's either an error in which case we wait 10s before + // retrying. + // Or we actually need to exit, which will happen here. + tokio::select! { + () = sleep(Duration::from_secs(10)) => {}, + () = arbiter.shutdown() => return Ok(()), + } + } +} diff --git a/tests/_process.py b/tests/_process.py new file mode 100644 index 0000000000..e00d0c9ffd --- /dev/null +++ b/tests/_process.py @@ -0,0 +1,46 @@ +"""authentik e2e testing utilities""" + +from datetime import timedelta +from time import mktime +from unittest.mock import MagicMock, patch + +from daphne.testing import DaphneProcess +from django import setup as django_setup +from django.conf import settings +from django.utils.timezone import now + +from authentik.lib.config import CONFIG +from authentik.lib.generators import generate_id + + +class TestDatabaseProcess(DaphneProcess): + """Channels does not correctly switch to the test database by default. + https://github.com/django/channels/issues/2048""" + + def run(self): + if not settings.configured: # Fix For raise AppRegistryNotReady("Apps aren't loaded yet.") + django_setup() # Ensure Django is fully set up before using settings + if not settings.DATABASES[list(settings.DATABASES.keys())[0]]["NAME"].startswith("test_"): + for _, db_settings in settings.DATABASES.items(): + db_settings["NAME"] = f"test_{db_settings['NAME']}" + settings.TEST = True + from authentik.enterprise.license import LicenseKey + from authentik.root.test_runner import patched__get_ct_cached + + with ( + patch( + "authentik.enterprise.license.LicenseKey.validate", + MagicMock( + return_value=LicenseKey( + aud="", + exp=int(mktime((now() + timedelta(days=3000)).timetuple())), + name=generate_id(), + internal_users=100, + external_users=100, + ) + ), + ), + CONFIG.patch("email.port", 1025), + patch("guardian.shortcuts._get_ct_cached", patched__get_ct_cached), + ): + return super().run() diff --git a/tests/decorators.py b/tests/decorators.py new file mode 100644 index 0000000000..aeb9d69478 --- /dev/null +++ b/tests/decorators.py @@ -0,0 +1,77 @@ +import socket +from collections.abc import Callable +from functools import lru_cache, wraps +from os import environ, getenv +from typing import Any + +from django.db import connection +from django.db.migrations.loader import MigrationLoader +from django.test.testcases import TransactionTestCase +from selenium.common.exceptions import ( + NoSuchElementException, + TimeoutException, + WebDriverException, +) +from structlog.stdlib import get_logger + +IS_CI = "CI" in environ +RETRIES = int(environ.get("RETRIES", "3")) if IS_CI else 1 +SHADOW_ROOT_RETRIES = 5 + +JSONType = dict[str, Any] | list[Any] | str | int | float | bool | None + + +def get_local_ip(override=True) -> str: + """Get the local machine's IP""" + if (local_ip := getenv("LOCAL_IP")) and override: + return local_ip + hostname = socket.gethostname() + try: + return socket.gethostbyname(hostname) + except socket.gaierror: + return "0.0.0.0" + + +@lru_cache +def get_loader(): + """Thin wrapper to lazily get a Migration Loader, only when it's needed + and only once""" + return MigrationLoader(connection) + + +def retry(max_retires=RETRIES, exceptions=None): + """Retry test multiple times. Default to catching Selenium Timeout Exception""" + + if not exceptions: + exceptions = [WebDriverException, TimeoutException, NoSuchElementException] + + logger = get_logger() + + def retry_actual(func: Callable): + """Retry test multiple times""" + count = 1 + + @wraps(func) + def wrapper(self: TransactionTestCase, *args, **kwargs): + """Run test again if we're below max_retries, including tearDown and + setUp. Otherwise raise the error""" + nonlocal count + try: + return func(self, *args, **kwargs) + + except tuple(exceptions) as exc: + count += 1 + if count > max_retires: + logger.debug("Exceeded retry count", exc=exc, test=self) + + raise exc + logger.debug("Retrying on error", exc=exc, test=self) + self.tearDown() + self._post_teardown() + self._pre_setup() + self.setUp() + return wrapper(self, *args, **kwargs) + + return wrapper + + return retry_actual diff --git a/tests/docker.py b/tests/docker.py index 8a5cdf6ce7..5621aa3186 100644 --- a/tests/docker.py +++ b/tests/docker.py @@ -1,6 +1,5 @@ """authentik e2e testing utilities""" -from os import environ from time import sleep from typing import Any from unittest.case import TestCase @@ -13,8 +12,6 @@ from docker.models.networks import Network from authentik.lib.generators import generate_id from authentik.root.test_runner import get_docker_tag -IS_CI = "CI" in environ - class DockerTestCase(TestCase): """Mixin for dealing with containers""" @@ -87,15 +84,13 @@ class DockerTestCase(TestCase): """Output the container logs to our STDOUT""" if not container: return - if IS_CI: - image = container.image - if image: - tags = image.tags[0] if len(image.tags) > 0 else str(image) - print(f"::group::Container logs - {tags}") + image = container.image + if image: + tags = image.tags[0] if len(image.tags) > 0 else str(image) + print(f"::group::Container logs - {tags}") for log in container.logs().decode().split("\n"): print(log) - if IS_CI: - print("::endgroup::") + print("::endgroup::") def tearDown(self) -> None: containers: list[Container] = self.docker_client.containers.list( diff --git a/tests/e2e/compose.yml b/tests/e2e/compose.yml index c4d0aa3983..321fe50869 100644 --- a/tests/e2e/compose.yml +++ b/tests/e2e/compose.yml @@ -8,8 +8,10 @@ services: - "host.docker.internal:host-gateway" labels: - io.goauthentik.tests=selenium + profiles: + - selenium mailpit: - image: docker.io/axllent/mailpit:v1.29.3 + image: docker.io/axllent/mailpit:v1.29.6 ports: - 1025:1025 - 8025:8025 diff --git a/tests/e2e/test_endpoints_flow.py b/tests/e2e/test_endpoints_flow.py index b20da75ec0..013ca5cffd 100644 --- a/tests/e2e/test_endpoints_flow.py +++ b/tests/e2e/test_endpoints_flow.py @@ -8,7 +8,8 @@ from authentik.endpoints.models import Device, EndpointStage, StageMode from authentik.events.models import Event, EventAction from authentik.flows.models import Flow, FlowStageBinding from authentik.lib.generators import generate_id -from tests.e2e.utils import SeleniumTestCase, retry +from tests.decorators import retry +from tests.selenium import SeleniumTestCase class TestEndpointsFlow(SeleniumTestCase): diff --git a/tests/e2e/test_flows_authenticators.py b/tests/e2e/test_flows_authenticators.py index ec0327bb7a..d28ccce9fd 100644 --- a/tests/e2e/test_flows_authenticators.py +++ b/tests/e2e/test_flows_authenticators.py @@ -18,7 +18,8 @@ from authentik.stages.authenticator_static.models import ( StaticToken, ) from authentik.stages.authenticator_totp.models import AuthenticatorTOTPStage, TOTPDevice -from tests.e2e.utils import SeleniumTestCase, retry +from tests.decorators import retry +from tests.selenium import SeleniumTestCase class TestFlowsAuthenticator(SeleniumTestCase): diff --git a/tests/e2e/test_flows_authenticators_webauthn.py b/tests/e2e/test_flows_authenticators_webauthn.py index be3789cb89..2d72d5f933 100644 --- a/tests/e2e/test_flows_authenticators_webauthn.py +++ b/tests/e2e/test_flows_authenticators_webauthn.py @@ -15,8 +15,9 @@ from authentik.stages.authenticator_webauthn.models import ( WebAuthnDevice, ) from authentik.stages.identification.models import IdentificationStage +from tests.decorators import retry from tests.e2e.test_flows_login_sfe import login_sfe -from tests.e2e.utils import SeleniumTestCase, retry +from tests.selenium import SeleniumTestCase class TestFlowsAuthenticatorWebAuthn(SeleniumTestCase): diff --git a/tests/e2e/test_flows_enroll.py b/tests/e2e/test_flows_enroll.py index 370e30d8b5..6a63179fb7 100644 --- a/tests/e2e/test_flows_enroll.py +++ b/tests/e2e/test_flows_enroll.py @@ -12,7 +12,8 @@ from authentik.flows.models import Flow from authentik.lib.config import CONFIG from authentik.lib.generators import generate_id from authentik.stages.identification.models import IdentificationStage -from tests.e2e.utils import SeleniumTestCase, retry +from tests.decorators import retry +from tests.selenium import SeleniumTestCase class TestFlowsEnroll(SeleniumTestCase): @@ -110,8 +111,12 @@ class TestFlowsEnroll(SeleniumTestCase): identification_stage = self.get_shadow_root("ak-stage-identification", flow_executor) wait = WebDriverWait(identification_stage, self.wait_timeout) - wait.until(ec.presence_of_element_located((By.CSS_SELECTOR, "a[ouiaId='enroll']"))) - identification_stage.find_element(By.CSS_SELECTOR, "a[ouiaId='enroll']").click() + wait.until( + ec.presence_of_element_located((By.CSS_SELECTOR, "a[data-ouia-component-id='enroll']")) + ) + identification_stage.find_element( + By.CSS_SELECTOR, "a[data-ouia-component-id='enroll']" + ).click() # First prompt stage flow_executor = self.get_shadow_root("ak-flow-executor") diff --git a/tests/e2e/test_flows_login.py b/tests/e2e/test_flows_login.py index e4cce5f856..3b0d56a4d7 100644 --- a/tests/e2e/test_flows_login.py +++ b/tests/e2e/test_flows_login.py @@ -2,7 +2,8 @@ from authentik.blueprints.tests import apply_blueprint from authentik.flows.models import Flow -from tests.e2e.utils import SeleniumTestCase, retry +from tests.decorators import retry +from tests.selenium import SeleniumTestCase class TestFlowsLogin(SeleniumTestCase): diff --git a/tests/e2e/test_flows_login_sfe.py b/tests/e2e/test_flows_login_sfe.py index c28f2e9953..01cd85649e 100644 --- a/tests/e2e/test_flows_login_sfe.py +++ b/tests/e2e/test_flows_login_sfe.py @@ -10,7 +10,8 @@ from authentik.blueprints.tests import apply_blueprint from authentik.core.models import User from authentik.flows.models import NotConfiguredAction from authentik.stages.authenticator_validate.models import AuthenticatorValidateStage, DeviceClasses -from tests.e2e.utils import SeleniumTestCase, retry +from tests.decorators import retry +from tests.selenium import SeleniumTestCase def login_sfe(driver: WebDriver, user: User): diff --git a/tests/e2e/test_flows_recovery.py b/tests/e2e/test_flows_recovery.py index 320eb55639..5f7cc43585 100644 --- a/tests/e2e/test_flows_recovery.py +++ b/tests/e2e/test_flows_recovery.py @@ -13,7 +13,8 @@ from authentik.flows.models import Flow from authentik.lib.config import CONFIG from authentik.lib.generators import generate_id from authentik.stages.identification.models import IdentificationStage -from tests.e2e.utils import SeleniumTestCase, retry +from tests.decorators import retry +from tests.selenium import SeleniumTestCase class TestFlowsRecovery(SeleniumTestCase): @@ -26,8 +27,14 @@ class TestFlowsRecovery(SeleniumTestCase): identification_stage = self.get_shadow_root("ak-stage-identification", flow_executor) wait = WebDriverWait(identification_stage, self.wait_timeout) - wait.until(ec.presence_of_element_located((By.CSS_SELECTOR, "a[ouiaId='recovery']"))) - identification_stage.find_element(By.CSS_SELECTOR, "a[ouiaId='recovery']").click() + wait.until( + ec.presence_of_element_located( + (By.CSS_SELECTOR, "a[data-ouia-component-id='recovery']") + ) + ) + identification_stage.find_element( + By.CSS_SELECTOR, "a[data-ouia-component-id='recovery']" + ).click() # First prompt stage flow_executor = self.get_shadow_root("ak-flow-executor") diff --git a/tests/e2e/test_flows_stage_setup.py b/tests/e2e/test_flows_stage_setup.py index a82b2b7a28..dcc7fca633 100644 --- a/tests/e2e/test_flows_stage_setup.py +++ b/tests/e2e/test_flows_stage_setup.py @@ -8,7 +8,8 @@ from authentik.core.models import User from authentik.flows.models import Flow, FlowDesignation from authentik.lib.generators import generate_key from authentik.stages.password.models import PasswordStage -from tests.e2e.utils import SeleniumTestCase, retry +from tests.decorators import retry +from tests.selenium import SeleniumTestCase class TestFlowsStageSetup(SeleniumTestCase): diff --git a/tests/e2e/test_provider_ldap.py b/tests/e2e/test_provider_ldap.py index 027e532cb7..ae0c2ac49f 100644 --- a/tests/e2e/test_provider_ldap.py +++ b/tests/e2e/test_provider_ldap.py @@ -1,12 +1,13 @@ """LDAP and Outpost e2e tests""" from dataclasses import asdict +from time import sleep from ldap3 import ALL, ALL_ATTRIBUTES, ALL_OPERATIONAL_ATTRIBUTES, SUBTREE, Connection, Server -from ldap3.core.exceptions import LDAPInvalidCredentialsResult +from ldap3.core.exceptions import LDAPInvalidCredentialsResult, LDAPSessionTerminatedByServerError from authentik.blueprints.tests import apply_blueprint, reconcile_app -from authentik.core.models import Application, User +from authentik.core.models import Application, AuthenticatedSession, User from authentik.core.tests.utils import create_test_user from authentik.events.models import Event, EventAction from authentik.flows.models import Flow @@ -14,12 +15,32 @@ from authentik.lib.generators import generate_id from authentik.outposts.apps import MANAGED_OUTPOST from authentik.outposts.models import Outpost, OutpostConfig, OutpostType from authentik.providers.ldap.models import APIAccessMode, LDAPProvider -from tests.e2e.utils import SeleniumTestCase, retry +from tests.decorators import retry +from tests.live import ChannelsE2ETestCase -class TestProviderLDAP(SeleniumTestCase): +def clean_response(response): + # Remove raw_attributes to make checking easier + for obj in response: + del obj["raw_attributes"] + del obj["raw_dn"] + obj["attributes"] = dict(obj["attributes"]) + obj["attributes"].pop("uid", None) + return response + + +class TestProviderLDAP(ChannelsE2ETestCase): """LDAP and Outpost e2e tests""" + def assert_list_dict_equal(self, expected: list[dict], actual: list[dict], match_key="dn"): + """Assert a list of dictionaries is identical, ignoring the ordering of items""" + self.assertEqual(len(expected), len(actual)) + for res_item in actual: + all_matching = [x for x in expected if x[match_key] == res_item[match_key]] + self.assertEqual(len(all_matching), 1) + matching = all_matching[0] + self.assertDictEqual(res_item, matching) + def start_ldap(self, outpost: Outpost): """Start ldap container based on outpost created""" self.run_container( @@ -209,12 +230,7 @@ class TestProviderLDAP(SeleniumTestCase): search_scope=SUBTREE, attributes=[ALL_ATTRIBUTES, ALL_OPERATIONAL_ATTRIBUTES], ) - response: list = _connection.response - # Remove raw_attributes to make checking easier - for obj in response: - del obj["raw_attributes"] - del obj["raw_dn"] - obj["attributes"] = dict(obj["attributes"]) + response = clean_response(_connection.response) o_user = outpost.user expected = [ { @@ -222,7 +238,6 @@ class TestProviderLDAP(SeleniumTestCase): "attributes": { "cn": o_user.username, "sAMAccountName": o_user.username, - "uid": o_user.uid, "name": o_user.name, "displayName": o_user.name, "sn": o_user.name, @@ -253,7 +268,6 @@ class TestProviderLDAP(SeleniumTestCase): "attributes": { "cn": embedded_account.username, "sAMAccountName": embedded_account.username, - "uid": embedded_account.uid, "name": embedded_account.name, "displayName": embedded_account.name, "sn": embedded_account.name, @@ -284,7 +298,6 @@ class TestProviderLDAP(SeleniumTestCase): "attributes": { "cn": self.user.username, "sAMAccountName": self.user.username, - "uid": self.user.uid, "name": self.user.name, "displayName": self.user.name, "sn": self.user.name, @@ -353,19 +366,13 @@ class TestProviderLDAP(SeleniumTestCase): search_scope=SUBTREE, attributes=[ALL_ATTRIBUTES, ALL_OPERATIONAL_ATTRIBUTES], ) - response: list = _connection.response - # Remove raw_attributes to make checking easier - for obj in response: - del obj["raw_attributes"] - del obj["raw_dn"] - obj["attributes"] = dict(obj["attributes"]) + response = clean_response(_connection.response) expected = [ { "dn": f"cn={user.username},ou=users,dc=ldap,dc=goauthentik,dc=io", "attributes": { "cn": user.username, "sAMAccountName": user.username, - "uid": user.uid, "name": user.name, "displayName": user.name, "sn": user.name, @@ -397,15 +404,6 @@ class TestProviderLDAP(SeleniumTestCase): ] self.assert_list_dict_equal(expected, response) - def assert_list_dict_equal(self, expected: list[dict], actual: list[dict], match_key="dn"): - """Assert a list of dictionaries is identical, ignoring the ordering of items""" - self.assertEqual(len(expected), len(actual)) - for res_item in actual: - all_matching = [x for x in expected if x[match_key] == res_item[match_key]] - self.assertEqual(len(all_matching), 1) - matching = all_matching[0] - self.assertDictEqual(res_item, matching) - @retry() @apply_blueprint( "default/flow-default-authentication-flow.yaml", @@ -469,11 +467,8 @@ class TestProviderLDAP(SeleniumTestCase): search_scope=SUBTREE, attributes=["cn"], ) - response: list = _connection.response - # Remove raw_attributes to make checking easier - for obj in response: - del obj["raw_attributes"] - del obj["raw_dn"] + response = clean_response(_connection.response) + o_user = outpost.user self.assert_list_dict_equal( [ @@ -501,3 +496,44 @@ class TestProviderLDAP(SeleniumTestCase): ], response, ) + + @retry() + @apply_blueprint( + "default/flow-default-authentication-flow.yaml", + "default/flow-default-invalidation-flow.yaml", + ) + @reconcile_app("authentik_tenants") + @reconcile_app("authentik_outposts") + def test_ldap_bind_logout_search(self): + """Test bind + session deletion -> failed search""" + self._prepare() + server = Server("ldap://localhost:3389", get_info=ALL) + _connection = Connection( + server, + raise_exceptions=True, + user=f"cn={self.user.username},ou=users,dc=ldap,dc=goauthentik,dc=io", + password=self.user.username, + ) + _connection.bind() + self.assertTrue( + Event.objects.filter( + action=EventAction.LOGIN, + user={ + "pk": self.user.pk, + "email": self.user.email, + "username": self.user.username, + }, + ) + ) + c, _ = AuthenticatedSession.objects.filter(user_id=self.user.pk).delete() + self.assertGreaterEqual(c, 1) + # Give the sign out signal time to propagate + sleep(3) + + with self.assertRaises(LDAPSessionTerminatedByServerError): + _connection.search( + "ou=Users,DC=ldaP,dc=goauthentik,dc=io", + "(objectClass=user)", + search_scope=SUBTREE, + attributes=[ALL_ATTRIBUTES, ALL_OPERATIONAL_ATTRIBUTES], + ) diff --git a/tests/e2e/test_provider_oauth2_github.py b/tests/e2e/test_provider_oauth2_github.py index 5d737f2b79..120dbabd90 100644 --- a/tests/e2e/test_provider_oauth2_github.py +++ b/tests/e2e/test_provider_oauth2_github.py @@ -13,12 +13,14 @@ from authentik.lib.generators import generate_id, generate_key from authentik.policies.expression.models import ExpressionPolicy from authentik.policies.models import PolicyBinding from authentik.providers.oauth2.models import ( - ClientTypes, + ClientType, + GrantType, OAuth2Provider, RedirectURI, RedirectURIMatchingMode, ) -from tests.e2e.utils import SeleniumTestCase, retry +from tests.decorators import retry +from tests.selenium import SeleniumTestCase class TestProviderOAuth2Github(SeleniumTestCase): @@ -77,11 +79,12 @@ class TestProviderOAuth2Github(SeleniumTestCase): name=generate_id(), client_id=self.client_id, client_secret=self.client_secret, - client_type=ClientTypes.CONFIDENTIAL, + client_type=ClientType.CONFIDENTIAL, redirect_uris=[ RedirectURI(RedirectURIMatchingMode.STRICT, "http://localhost:3000/login/github") ], authorization_flow=authorization_flow, + grant_types=[GrantType.AUTHORIZATION_CODE], ) Application.objects.create( name=generate_id(), @@ -134,11 +137,12 @@ class TestProviderOAuth2Github(SeleniumTestCase): name=generate_id(), client_id=self.client_id, client_secret=self.client_secret, - client_type=ClientTypes.CONFIDENTIAL, + client_type=ClientType.CONFIDENTIAL, redirect_uris=[ RedirectURI(RedirectURIMatchingMode.STRICT, "http://localhost:3000/login/github") ], authorization_flow=authorization_flow, + grant_types=[GrantType.AUTHORIZATION_CODE], ) app = Application.objects.create( name=generate_id(), @@ -207,11 +211,12 @@ class TestProviderOAuth2Github(SeleniumTestCase): name=generate_id(), client_id=self.client_id, client_secret=self.client_secret, - client_type=ClientTypes.CONFIDENTIAL, + client_type=ClientType.CONFIDENTIAL, redirect_uris=[ RedirectURI(RedirectURIMatchingMode.STRICT, "http://localhost:3000/login/github") ], authorization_flow=authorization_flow, + grant_types=[GrantType.AUTHORIZATION_CODE], ) app = Application.objects.create( name=generate_id(), diff --git a/tests/e2e/test_provider_oauth2_grafana.py b/tests/e2e/test_provider_oauth2_grafana.py index 63665a6734..3eb49e7533 100644 --- a/tests/e2e/test_provider_oauth2_grafana.py +++ b/tests/e2e/test_provider_oauth2_grafana.py @@ -20,13 +20,15 @@ from authentik.lib.generators import generate_id, generate_key from authentik.policies.expression.models import ExpressionPolicy from authentik.policies.models import PolicyBinding from authentik.providers.oauth2.models import ( - ClientTypes, + ClientType, + GrantType, OAuth2Provider, RedirectURI, RedirectURIMatchingMode, ScopeMapping, ) -from tests.e2e.utils import SeleniumTestCase, retry +from tests.decorators import retry +from tests.selenium import SeleniumTestCase class TestProviderOAuth2OAuth(SeleniumTestCase): @@ -84,12 +86,13 @@ class TestProviderOAuth2OAuth(SeleniumTestCase): ) provider = OAuth2Provider.objects.create( name=generate_id(), - client_type=ClientTypes.CONFIDENTIAL, + client_type=ClientType.CONFIDENTIAL, client_id=self.client_id, client_secret=self.client_secret, signing_key=create_test_cert(), redirect_uris=[RedirectURI(RedirectURIMatchingMode.STRICT, "http://localhost:3000/")], authorization_flow=authorization_flow, + grant_types=[GrantType.AUTHORIZATION_CODE], ) provider.property_mappings.set( ScopeMapping.objects.filter( @@ -133,7 +136,7 @@ class TestProviderOAuth2OAuth(SeleniumTestCase): ) provider = OAuth2Provider.objects.create( name=generate_id(), - client_type=ClientTypes.CONFIDENTIAL, + client_type=ClientType.CONFIDENTIAL, client_id=self.client_id, client_secret=self.client_secret, signing_key=create_test_cert(), @@ -143,6 +146,7 @@ class TestProviderOAuth2OAuth(SeleniumTestCase): ) ], authorization_flow=authorization_flow, + grant_types=[GrantType.AUTHORIZATION_CODE], ) provider.property_mappings.set( ScopeMapping.objects.filter( @@ -206,7 +210,7 @@ class TestProviderOAuth2OAuth(SeleniumTestCase): invalidation_flow = Flow.objects.get(slug="default-provider-invalidation-flow") provider = OAuth2Provider.objects.create( name=generate_id(), - client_type=ClientTypes.CONFIDENTIAL, + client_type=ClientType.CONFIDENTIAL, client_id=self.client_id, client_secret=self.client_secret, signing_key=create_test_cert(), @@ -217,6 +221,7 @@ class TestProviderOAuth2OAuth(SeleniumTestCase): ], authorization_flow=authorization_flow, invalidation_flow=invalidation_flow, + grant_types=[GrantType.AUTHORIZATION_CODE], ) provider.property_mappings.set( ScopeMapping.objects.filter( @@ -286,7 +291,7 @@ class TestProviderOAuth2OAuth(SeleniumTestCase): provider = OAuth2Provider.objects.create( name=generate_id(), authorization_flow=authorization_flow, - client_type=ClientTypes.CONFIDENTIAL, + client_type=ClientType.CONFIDENTIAL, client_id=self.client_id, client_secret=self.client_secret, signing_key=create_test_cert(), @@ -295,6 +300,7 @@ class TestProviderOAuth2OAuth(SeleniumTestCase): RedirectURIMatchingMode.STRICT, "http://localhost:3000/login/generic_oauth" ) ], + grant_types=[GrantType.AUTHORIZATION_CODE], ) provider.property_mappings.set( ScopeMapping.objects.filter( @@ -370,7 +376,7 @@ class TestProviderOAuth2OAuth(SeleniumTestCase): provider = OAuth2Provider.objects.create( name=generate_id(), authorization_flow=authorization_flow, - client_type=ClientTypes.CONFIDENTIAL, + client_type=ClientType.CONFIDENTIAL, client_id=self.client_id, client_secret=self.client_secret, signing_key=create_test_cert(), @@ -379,6 +385,7 @@ class TestProviderOAuth2OAuth(SeleniumTestCase): RedirectURIMatchingMode.STRICT, "http://localhost:3000/login/generic_oauth" ) ], + grant_types=[GrantType.AUTHORIZATION_CODE], ) provider.property_mappings.set( ScopeMapping.objects.filter( diff --git a/tests/e2e/test_provider_oidc.py b/tests/e2e/test_provider_oidc.py index dc54048da3..bea8d70850 100644 --- a/tests/e2e/test_provider_oidc.py +++ b/tests/e2e/test_provider_oidc.py @@ -20,13 +20,15 @@ from authentik.lib.generators import generate_id, generate_key from authentik.policies.expression.models import ExpressionPolicy from authentik.policies.models import PolicyBinding from authentik.providers.oauth2.models import ( - ClientTypes, + ClientType, + GrantType, OAuth2Provider, RedirectURI, RedirectURIMatchingMode, ScopeMapping, ) -from tests.e2e.utils import SeleniumTestCase, retry +from tests.decorators import retry +from tests.selenium import SeleniumTestCase class TestProviderOAuth2OIDC(SeleniumTestCase): @@ -69,12 +71,13 @@ class TestProviderOAuth2OIDC(SeleniumTestCase): ) provider = OAuth2Provider.objects.create( name=self.application_slug, - client_type=ClientTypes.CONFIDENTIAL, + client_type=ClientType.CONFIDENTIAL, client_id=self.client_id, client_secret=self.client_secret, signing_key=create_test_cert(), redirect_uris=[RedirectURI(RedirectURIMatchingMode.STRICT, "http://localhost:9009/")], authorization_flow=authorization_flow, + grant_types=[GrantType.AUTHORIZATION_CODE], ) provider.property_mappings.set( ScopeMapping.objects.filter( @@ -118,7 +121,7 @@ class TestProviderOAuth2OIDC(SeleniumTestCase): ) provider = OAuth2Provider.objects.create( name=self.application_slug, - client_type=ClientTypes.CONFIDENTIAL, + client_type=ClientType.CONFIDENTIAL, client_id=self.client_id, client_secret=self.client_secret, signing_key=create_test_cert(), @@ -126,6 +129,7 @@ class TestProviderOAuth2OIDC(SeleniumTestCase): RedirectURI(RedirectURIMatchingMode.STRICT, "http://localhost:9009/auth/callback") ], authorization_flow=authorization_flow, + grant_types=[GrantType.AUTHORIZATION_CODE, GrantType.REFRESH_TOKEN], ) provider.property_mappings.set( ScopeMapping.objects.filter( @@ -230,13 +234,14 @@ class TestProviderOAuth2OIDC(SeleniumTestCase): provider = OAuth2Provider.objects.create( name=self.application_slug, authorization_flow=authorization_flow, - client_type=ClientTypes.CONFIDENTIAL, + client_type=ClientType.CONFIDENTIAL, client_id=self.client_id, client_secret=self.client_secret, signing_key=create_test_cert(), redirect_uris=[ RedirectURI(RedirectURIMatchingMode.STRICT, "http://localhost:9009/auth/callback") ], + grant_types=[GrantType.AUTHORIZATION_CODE, GrantType.REFRESH_TOKEN], ) provider.property_mappings.set( ScopeMapping.objects.filter( @@ -334,13 +339,14 @@ class TestProviderOAuth2OIDC(SeleniumTestCase): provider = OAuth2Provider.objects.create( name=self.application_slug, authorization_flow=authorization_flow, - client_type=ClientTypes.CONFIDENTIAL, + client_type=ClientType.CONFIDENTIAL, client_id=self.client_id, client_secret=self.client_secret, signing_key=create_test_cert(), redirect_uris=[ RedirectURI(RedirectURIMatchingMode.STRICT, "http://localhost:9009/auth/callback") ], + grant_types=[GrantType.AUTHORIZATION_CODE], ) provider.property_mappings.set( ScopeMapping.objects.filter( diff --git a/tests/e2e/test_provider_oidc_implicit.py b/tests/e2e/test_provider_oidc_implicit.py index 7301868710..4632c26b22 100644 --- a/tests/e2e/test_provider_oidc_implicit.py +++ b/tests/e2e/test_provider_oidc_implicit.py @@ -20,13 +20,15 @@ from authentik.lib.generators import generate_id, generate_key from authentik.policies.expression.models import ExpressionPolicy from authentik.policies.models import PolicyBinding from authentik.providers.oauth2.models import ( - ClientTypes, + ClientType, + GrantType, OAuth2Provider, RedirectURI, RedirectURIMatchingMode, ScopeMapping, ) -from tests.e2e.utils import SeleniumTestCase, retry +from tests.decorators import retry +from tests.selenium import SeleniumTestCase class TestProviderOAuth2OIDCImplicit(SeleniumTestCase): @@ -70,12 +72,13 @@ class TestProviderOAuth2OIDCImplicit(SeleniumTestCase): ) provider = OAuth2Provider.objects.create( name=self.application_slug, - client_type=ClientTypes.CONFIDENTIAL, + client_type=ClientType.CONFIDENTIAL, client_id=self.client_id, client_secret=self.client_secret, signing_key=create_test_cert(), redirect_uris=[RedirectURI(RedirectURIMatchingMode.STRICT, "http://localhost:9009/")], authorization_flow=authorization_flow, + grant_types=[GrantType.IMPLICIT], ) provider.property_mappings.set( ScopeMapping.objects.filter( @@ -119,7 +122,7 @@ class TestProviderOAuth2OIDCImplicit(SeleniumTestCase): ) provider = OAuth2Provider.objects.create( name=self.application_slug, - client_type=ClientTypes.CONFIDENTIAL, + client_type=ClientType.CONFIDENTIAL, client_id=self.client_id, client_secret=self.client_secret, signing_key=create_test_cert(), @@ -127,6 +130,7 @@ class TestProviderOAuth2OIDCImplicit(SeleniumTestCase): RedirectURI(RedirectURIMatchingMode.STRICT, "http://localhost:9009/implicit/") ], authorization_flow=authorization_flow, + grant_types=[GrantType.IMPLICIT], ) provider.property_mappings.set( ScopeMapping.objects.filter( @@ -191,13 +195,14 @@ class TestProviderOAuth2OIDCImplicit(SeleniumTestCase): provider = OAuth2Provider.objects.create( name=self.application_slug, authorization_flow=authorization_flow, - client_type=ClientTypes.CONFIDENTIAL, + client_type=ClientType.CONFIDENTIAL, client_id=self.client_id, client_secret=self.client_secret, signing_key=create_test_cert(), redirect_uris=[ RedirectURI(RedirectURIMatchingMode.STRICT, "http://localhost:9009/implicit/") ], + grant_types=[GrantType.IMPLICIT], ) provider.property_mappings.set( ScopeMapping.objects.filter( @@ -281,13 +286,14 @@ class TestProviderOAuth2OIDCImplicit(SeleniumTestCase): provider = OAuth2Provider.objects.create( name=self.application_slug, authorization_flow=authorization_flow, - client_type=ClientTypes.CONFIDENTIAL, + client_type=ClientType.CONFIDENTIAL, client_id=self.client_id, client_secret=self.client_secret, signing_key=create_test_cert(), redirect_uris=[ RedirectURI(RedirectURIMatchingMode.STRICT, "http://localhost:9009/implicit/") ], + grant_types=[GrantType.IMPLICIT], ) provider.property_mappings.set( ScopeMapping.objects.filter( diff --git a/tests/e2e/test_provider_proxy.py b/tests/e2e/test_provider_proxy.py index 12b76ffb6d..ab1e697c7f 100644 --- a/tests/e2e/test_provider_proxy.py +++ b/tests/e2e/test_provider_proxy.py @@ -3,11 +3,8 @@ from base64 import b64encode from dataclasses import asdict from json import dumps -from sys import platform from time import sleep -from unittest.case import skip, skipUnless -from channels.testing import ChannelsLiveServerTestCase from jwt import decode from selenium.webdriver.common.by import By @@ -15,10 +12,11 @@ from authentik.blueprints.tests import apply_blueprint, reconcile_app from authentik.core.models import Application from authentik.flows.models import Flow from authentik.lib.generators import generate_id -from authentik.outposts.models import DockerServiceConnection, Outpost, OutpostConfig, OutpostType -from authentik.outposts.tasks import outpost_connection_discovery +from authentik.outposts.models import Outpost, OutpostConfig, OutpostType from authentik.providers.proxy.models import ProxyProvider -from tests.e2e.utils import SeleniumTestCase, retry +from tests.decorators import retry +from tests.live import ChannelsE2ETestCase +from tests.selenium import SeleniumTestCase class TestProviderProxy(SeleniumTestCase): @@ -215,10 +213,7 @@ class TestProviderProxy(SeleniumTestCase): ) -# TODO: Fix flaky test -@skip("Flaky test") -@skipUnless(platform.startswith("linux"), "requires local docker") -class TestProviderProxyConnect(ChannelsLiveServerTestCase): +class TestProviderProxyConnect(ChannelsE2ETestCase): """Test Proxy connectivity over websockets""" @retry(exceptions=[AssertionError]) @@ -232,7 +227,6 @@ class TestProviderProxyConnect(ChannelsLiveServerTestCase): @reconcile_app("authentik_crypto") def test_proxy_connectivity(self): """Test proxy connectivity over websocket""" - outpost_connection_discovery() proxy: ProxyProvider = ProxyProvider.objects.create( name=generate_id(), authorization_flow=Flow.objects.get( @@ -246,16 +240,25 @@ class TestProviderProxyConnect(ChannelsLiveServerTestCase): proxy.save() # we need to create an application to actually access the proxy Application.objects.create(name=generate_id(), slug=generate_id(), provider=proxy) - service_connection = DockerServiceConnection.objects.get(local=True) + outpost: Outpost = Outpost.objects.create( name=generate_id(), type=OutpostType.PROXY, - service_connection=service_connection, _config=asdict(OutpostConfig(authentik_host=self.live_server_url, log_level="debug")), ) outpost.providers.add(proxy) outpost.build_user_permissions(outpost.user) + self.run_container( + image=self.get_container_image("ghcr.io/goauthentik/dev-proxy"), + ports={ + "9000": "9000", + }, + environment={ + "AUTHENTIK_TOKEN": outpost.token.key, + }, + ) + # Wait until outpost healthcheck succeeds healthcheck_retries = 0 while healthcheck_retries < 50: # noqa: PLR2004 diff --git a/tests/e2e/test_provider_proxy_forward.py b/tests/e2e/test_provider_proxy_forward.py index 1d96496a0a..e9619ca22b 100644 --- a/tests/e2e/test_provider_proxy_forward.py +++ b/tests/e2e/test_provider_proxy_forward.py @@ -13,7 +13,8 @@ from authentik.flows.models import Flow from authentik.lib.generators import generate_id from authentik.outposts.models import Outpost, OutpostType from authentik.providers.proxy.models import ProxyMode, ProxyProvider -from tests.e2e.utils import SeleniumTestCase, retry +from tests.decorators import retry +from tests.selenium import SeleniumTestCase class TestProviderProxyForward(SeleniumTestCase): diff --git a/tests/e2e/test_provider_rac.py b/tests/e2e/test_provider_rac.py new file mode 100644 index 0000000000..753fac5ab1 --- /dev/null +++ b/tests/e2e/test_provider_rac.py @@ -0,0 +1,108 @@ +"""RAC e2e tests""" + +from time import sleep + +from selenium.webdriver.common.by import By +from selenium.webdriver.common.keys import Keys + +from authentik.blueprints.tests import apply_blueprint, reconcile_app +from authentik.core.models import Application +from authentik.flows.models import Flow +from authentik.lib.generators import generate_id +from authentik.outposts.models import Outpost, OutpostType +from authentik.providers.rac.models import Endpoint, Protocols, RACProvider +from tests.decorators import retry +from tests.selenium import ChannelsSeleniumTestCase + + +class TestProviderRAC(ChannelsSeleniumTestCase): + """RAC e2e tests""" + + def setUp(self): + super().setUp() + self.password = generate_id() + + def start_rac(self, outpost: Outpost): + """Start rac container based on outpost created""" + self.run_container( + image=self.get_container_image("ghcr.io/goauthentik/dev-rac"), + environment={ + "AUTHENTIK_TOKEN": outpost.token.key, + }, + ) + + @retry() + @apply_blueprint( + "default/flow-default-authentication-flow.yaml", + "default/flow-default-invalidation-flow.yaml", + ) + @apply_blueprint( + "default/flow-default-provider-authorization-implicit-consent.yaml", + "default/flow-default-provider-invalidation.yaml", + ) + @apply_blueprint( + "system/providers-rac.yaml", + ) + @reconcile_app("authentik_crypto") + def test_rac_ssh(self): + """Test SSH RAC""" + test_ssh = self.run_container( + image="lscr.io/linuxserver/openssh-server:latest", + ports={ + "2222": "2222", + }, + environment={ + "USER_NAME": "authentik", + "USER_PASSWORD": self.password, + "PASSWORD_ACCESS": "true", + "SUDO_ACCESS": "true", + }, + ) + + rac: RACProvider = RACProvider.objects.create( + name=generate_id(), + authorization_flow=Flow.objects.get( + slug="default-provider-authorization-implicit-consent" + ), + delete_token_on_disconnect=True, + ) + endpoint = Endpoint.objects.create( + name=generate_id(), + protocol=Protocols.SSH, + host=f"{self.host}:2222", + settings={ + "username": "authentik", + "password": self.password, + }, + provider=rac, + ) + app = Application.objects.create(name=generate_id(), slug=generate_id(), provider=rac) + outpost: Outpost = Outpost.objects.create( + name=generate_id(), + type=OutpostType.RAC, + ) + outpost.providers.add(rac) + outpost.build_user_permissions(outpost.user) + + self.start_rac(outpost) + + self.driver.get( + self.url("authentik_providers_rac:start", app=app.slug, endpoint=endpoint.pk) + ) + self.login() + sleep(1) + + iface = self.driver.find_element(By.CSS_SELECTOR, "ak-rac") + sleep(5) + state = self.driver.execute_script("return arguments[0].clientState", iface) + self.assertEqual(state, 3) + + uid = generate_id() + self.driver.find_element(By.CSS_SELECTOR, "body").send_keys( + f'echo "{uid}" > /tmp/test' + Keys.ENTER + ) + + sleep(2) + + _, output = test_ssh.exec_run("cat /tmp/test") + self.assertEqual(output, f"{uid}\n".encode()) diff --git a/tests/e2e/test_provider_radius.py b/tests/e2e/test_provider_radius.py index bcb2933636..310811416b 100644 --- a/tests/e2e/test_provider_radius.py +++ b/tests/e2e/test_provider_radius.py @@ -13,10 +13,11 @@ from authentik.flows.models import Flow from authentik.lib.generators import generate_id, generate_key from authentik.outposts.models import Outpost, OutpostConfig, OutpostType from authentik.providers.radius.models import RadiusProvider -from tests.e2e.utils import SeleniumTestCase, retry +from tests.decorators import retry +from tests.live import E2ETestCase -class TestProviderRadius(SeleniumTestCase): +class TestProviderRadius(E2ETestCase): """Radius Outpost e2e tests""" def setUp(self): @@ -72,6 +73,7 @@ class TestProviderRadius(SeleniumTestCase): code=AccessRequest, User_Name=self.user.username, NAS_Identifier="localhost" ) req["User-Password"] = req.PwCrypt(self.user.username) + req.add_message_authenticator() reply = srv.SendPacket(req) self.assertEqual(reply.code, AccessAccept) @@ -94,6 +96,7 @@ class TestProviderRadius(SeleniumTestCase): code=AccessRequest, User_Name=self.user.username, NAS_Identifier="localhost" ) req["User-Password"] = req.PwCrypt(self.user.username + "foo") + req.add_message_authenticator() reply = srv.SendPacket(req) self.assertEqual(reply.code, AccessReject) diff --git a/tests/e2e/test_provider_saml.py b/tests/e2e/test_provider_saml.py index 8cb2273570..f1ae945480 100644 --- a/tests/e2e/test_provider_saml.py +++ b/tests/e2e/test_provider_saml.py @@ -15,7 +15,8 @@ from authentik.lib.generators import generate_id from authentik.policies.expression.models import ExpressionPolicy from authentik.policies.models import PolicyBinding from authentik.providers.saml.models import SAMLBindings, SAMLPropertyMapping, SAMLProvider -from tests.e2e.utils import SeleniumTestCase, retry +from tests.decorators import retry +from tests.selenium import SeleniumTestCase class TestProviderSAML(SeleniumTestCase): @@ -38,7 +39,7 @@ class TestProviderSAML(SeleniumTestCase): "9009": "9009", }, environment={ - "SP_ENTITY_ID": provider.issuer, + "SP_ENTITY_ID": provider.issuer_override, "SP_SSO_BINDING": "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST", "SP_METADATA_URL": metadata_url, **kwargs, @@ -67,7 +68,7 @@ class TestProviderSAML(SeleniumTestCase): name=generate_id(), acs_url="http://localhost:9009/saml/acs", audience="authentik-e2e", - issuer="authentik-e2e", + issuer_override="authentik-e2e", sp_binding=SAMLBindings.POST, authorization_flow=authorization_flow, signing_kp=create_test_cert(), @@ -146,7 +147,7 @@ class TestProviderSAML(SeleniumTestCase): name=generate_id(), acs_url="http://localhost:9009/saml/acs", audience="authentik-e2e", - issuer="authentik-e2e", + issuer_override="authentik-e2e", sp_binding=SAMLBindings.POST, authorization_flow=authorization_flow, signing_kp=create_test_cert(), @@ -225,7 +226,7 @@ class TestProviderSAML(SeleniumTestCase): name=generate_id(), acs_url="http://localhost:9009/saml/acs", audience="authentik-e2e", - issuer="authentik-e2e", + issuer_override="authentik-e2e", sp_binding=SAMLBindings.POST, authorization_flow=authorization_flow, signing_kp=create_test_cert(), @@ -320,7 +321,7 @@ class TestProviderSAML(SeleniumTestCase): name=generate_id(), acs_url="http://localhost:9009/saml/acs", audience="authentik-e2e", - issuer="authentik-e2e", + issuer_override="authentik-e2e", sp_binding=SAMLBindings.POST, authorization_flow=authorization_flow, signing_kp=create_test_cert(), @@ -414,7 +415,7 @@ class TestProviderSAML(SeleniumTestCase): name=generate_id(), acs_url="http://localhost:9009/saml/acs", audience="authentik-e2e", - issuer="authentik-e2e", + issuer_override="authentik-e2e", sp_binding=SAMLBindings.POST, authorization_flow=authorization_flow, signing_kp=create_test_cert(), @@ -502,7 +503,7 @@ class TestProviderSAML(SeleniumTestCase): name=generate_id(), acs_url="http://localhost:9009/saml/acs", audience="authentik-e2e", - issuer="authentik-e2e", + issuer_override="authentik-e2e", sp_binding=SAMLBindings.POST, authorization_flow=authorization_flow, signing_kp=create_test_cert(), @@ -552,7 +553,7 @@ class TestProviderSAML(SeleniumTestCase): name=generate_id(), acs_url="http://localhost:9009/saml/acs", audience="authentik-e2e", - issuer="authentik-e2e", + issuer_override="authentik-e2e", sp_binding=SAMLBindings.POST, authorization_flow=authorization_flow, invalidation_flow=invalidation_flow, diff --git a/tests/e2e/test_provider_ws_fed.py b/tests/e2e/test_provider_ws_fed.py index 1b5f686b45..8acb309838 100644 --- a/tests/e2e/test_provider_ws_fed.py +++ b/tests/e2e/test_provider_ws_fed.py @@ -12,7 +12,8 @@ from authentik.enterprise.providers.ws_federation.models import WSFederationProv from authentik.flows.models import Flow from authentik.lib.generators import generate_id from authentik.providers.saml.models import SAMLPropertyMapping -from tests.e2e.utils import SeleniumTestCase, retry +from tests.decorators import retry +from tests.selenium import SeleniumTestCase class TestProviderWSFed(SeleniumTestCase): diff --git a/tests/e2e/test_source_ldap_samba.py b/tests/e2e/test_source_ldap_samba.py index a8b68886bc..e0faf45fde 100644 --- a/tests/e2e/test_source_ldap_samba.py +++ b/tests/e2e/test_source_ldap_samba.py @@ -12,10 +12,11 @@ from authentik.sources.ldap.sync.groups import GroupLDAPSynchronizer from authentik.sources.ldap.sync.membership import MembershipLDAPSynchronizer from authentik.sources.ldap.sync.users import UserLDAPSynchronizer from authentik.tasks.models import Task -from tests.e2e.utils import SeleniumTestCase, retry +from tests.decorators import retry +from tests.live import E2ETestCase -class TestSourceLDAPSamba(SeleniumTestCase): +class TestSourceLDAPSamba(E2ETestCase): """test LDAP Source""" def setUp(self): diff --git a/tests/e2e/test_source_oauth_oauth1.py b/tests/e2e/test_source_oauth_oauth1.py index 012c485f3b..b963d12d86 100644 --- a/tests/e2e/test_source_oauth_oauth1.py +++ b/tests/e2e/test_source_oauth_oauth1.py @@ -16,7 +16,8 @@ from authentik.sources.oauth.models import OAuthSource from authentik.sources.oauth.types.registry import SourceType, registry from authentik.sources.oauth.views.callback import OAuthCallback from authentik.stages.identification.models import IdentificationStage -from tests.e2e.utils import SeleniumTestCase, retry +from tests.decorators import retry +from tests.selenium import SeleniumTestCase class OAuth1Callback(OAuthCallback): diff --git a/tests/e2e/test_source_oauth_oauth2.py b/tests/e2e/test_source_oauth_oauth2.py index e1752c6f24..04d99aca28 100644 --- a/tests/e2e/test_source_oauth_oauth2.py +++ b/tests/e2e/test_source_oauth_oauth2.py @@ -4,6 +4,10 @@ from pathlib import Path from time import sleep from docker.types import Healthcheck +from selenium.common.exceptions import ( + NoSuchElementException, + TimeoutException, +) from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys from selenium.webdriver.support import expected_conditions as ec @@ -15,7 +19,8 @@ from authentik.flows.models import Flow from authentik.lib.generators import generate_id from authentik.sources.oauth.models import OAuthSource from authentik.stages.identification.models import IdentificationStage -from tests.e2e.utils import NoSuchElementException, SeleniumTestCase, TimeoutException, retry +from tests.decorators import retry +from tests.selenium import SeleniumTestCase MAX_REFRESH_RETRIES = 5 INTERFACE_TIMEOUT = 10 diff --git a/tests/e2e/test_source_saml.py b/tests/e2e/test_source_saml.py index 0294431c3d..6897e854b3 100644 --- a/tests/e2e/test_source_saml.py +++ b/tests/e2e/test_source_saml.py @@ -16,7 +16,8 @@ from authentik.flows.models import Flow from authentik.lib.generators import generate_id from authentik.sources.saml.models import SAMLBindingTypes, SAMLSource from authentik.stages.identification.models import IdentificationStage -from tests.e2e.utils import SeleniumTestCase, retry +from tests.decorators import retry +from tests.selenium import SeleniumTestCase IDP_CERT = """-----BEGIN CERTIFICATE----- MIIDXTCCAkWgAwIBAgIJALmVVuDWu4NYMA0GCSqGSIb3DQEBCwUAMEUxCzAJBgNV @@ -393,7 +394,6 @@ class TestSourceSAML(SeleniumTestCase): self.login_via_saml_source() - # sleep(999999) self.assert_user( User.objects.exclude(username="akadmin") .exclude(username__startswith="ak-outpost") diff --git a/tests/e2e/test_source_scim.py b/tests/e2e/test_source_scim.py index 368bd1811d..29a05f05eb 100644 --- a/tests/e2e/test_source_scim.py +++ b/tests/e2e/test_source_scim.py @@ -8,12 +8,13 @@ from docker.types import Healthcheck from authentik.lib.generators import generate_id from authentik.lib.utils.http import get_http_session from authentik.sources.scim.models import SCIMSource -from tests.e2e.utils import SeleniumTestCase, retry +from tests.decorators import retry +from tests.live import E2ETestCase TEST_POLL_MAX = 25 -class TestSourceSCIM(SeleniumTestCase): +class TestSourceSCIM(E2ETestCase): """test SCIM Source flow""" def setUp(self): diff --git a/tests/GeoLite2-ASN-Test.mmdb b/tests/geoip/GeoLite2-ASN-Test.mmdb similarity index 99% rename from tests/GeoLite2-ASN-Test.mmdb rename to tests/geoip/GeoLite2-ASN-Test.mmdb index 28441ad472..ae4cb25766 100644 Binary files a/tests/GeoLite2-ASN-Test.mmdb and b/tests/geoip/GeoLite2-ASN-Test.mmdb differ diff --git a/tests/GeoLite2-City-Test.mmdb b/tests/geoip/GeoLite2-City-Test.mmdb similarity index 99% rename from tests/GeoLite2-City-Test.mmdb rename to tests/geoip/GeoLite2-City-Test.mmdb index 3ba6db1752..4549847ab0 100644 Binary files a/tests/GeoLite2-City-Test.mmdb and b/tests/geoip/GeoLite2-City-Test.mmdb differ diff --git a/tests/integration/test_proxy_kubernetes.py b/tests/integration/test_proxy_kubernetes.py index da994bd228..4248d9254e 100644 --- a/tests/integration/test_proxy_kubernetes.py +++ b/tests/integration/test_proxy_kubernetes.py @@ -46,7 +46,7 @@ class TestProxyKubernetes(TestCase): self.controller = ProxyKubernetesController(outpost, service_connection) manifest = self.controller.get_static_deployment() - self.assertEqual(len(list(yaml.load_all(manifest, Loader=yaml.SafeLoader))), 4) + self.assertEqual(len(list(yaml.load_all(manifest, Loader=yaml.SafeLoader))), 5) @pytest.mark.timeout(120, func_only=True) def test_kubernetes_controller_ingress(self): diff --git a/tests/live.py b/tests/live.py new file mode 100644 index 0000000000..c3d8b57785 --- /dev/null +++ b/tests/live.py @@ -0,0 +1,140 @@ +from os import unlink, write +from sys import stderr +from tempfile import mkstemp +from urllib.parse import urlencode + +from channels.testing import ChannelsLiveServerTestCase +from django.apps import apps +from django.contrib.staticfiles.testing import StaticLiveServerTestCase +from django.urls import reverse +from docker.types import Healthcheck +from dramatiq import get_broker +from structlog.stdlib import get_logger +from yaml import safe_dump + +from authentik.core.apps import Setup +from authentik.core.models import User +from authentik.core.tests.utils import create_test_admin_user +from authentik.tasks.test import use_test_broker +from tests._process import TestDatabaseProcess +from tests.decorators import IS_CI, get_local_ip +from tests.docker import DockerTestCase + + +class E2ETestMixin(DockerTestCase): + host = get_local_ip() + user: User + serve_static = True + ProtocolServerProcess = TestDatabaseProcess + + def setUp(self): + if IS_CI: + print("::group::authentik Logs", file=stderr) + apps.get_app_config("authentik_tenants").ready() + self.wait_timeout = 60 + self.logger = get_logger() + self.user = create_test_admin_user() + Setup.set(True) + super().setUp() + + @classmethod + def _pre_setup(cls): + use_test_broker() + return super()._pre_setup() + + def _post_teardown(self): + broker = get_broker() + broker.flush_all() + broker.close() + return super()._post_teardown() + + def tearDown(self): + if IS_CI: + print("::endgroup::", file=stderr) + super().tearDown() + + def url(self, view: str, query: dict | None = None, **kwargs) -> str: + """reverse `view` with `**kwargs` into full URL using live_server_url""" + url = self.live_server_url + reverse(view, kwargs=kwargs) + if query: + return url + "?" + urlencode(query) + return url + + +class SSLLiveMixin(DockerTestCase): + """Mixin to provide an SSL-enabled webserver for integration/e2e tests that require it. + + Overrides `live_server_url` and as such other all usual helper functions will return an HTTPS + URL. Certificate is self-signed and random on each run.""" + + def setUp(self): + super().setUp() + self._setup_traefik() + + def tearDown(self): + super().tearDown() + unlink(self._traefik_config) + + @property + def live_server_url(self): + return f"https://{self.host}:{self._traefik_port}" + + def _setup_traefik(self): + config = { + "http": { + "routers": { + "authentik": { + "rule": "PathPrefix(`/`)", + "entryPoints": ["websecure"], + "service": "authentik", + "tls": {}, + } + }, + "services": { + "authentik": {"loadBalancer": {"servers": [{"url": super().live_server_url}]}} + }, + } + } + fd, self._traefik_config = mkstemp() + write(fd, safe_dump(config).encode()) + traefik = self.run_container( + image="docker.io/library/traefik:3.1", + command=[ + "--providers.file.filename=/etc/traefik/dynamic.yml", + "--providers.file.watch=true", + "--entrypoints.websecure.address=:9443", + "--log.level=DEBUG", + "--api=true", + "--api.dashboard=true", + "--api.insecure=true", + "--ping=true", + ], + healthcheck=Healthcheck( + test=["CMD", "traefik", "healthcheck", "--ping"], + interval=5 * 1_000 * 1_000_000, + start_period=1 * 1_000 * 1_000_000, + ), + ports={ + "9443": None, + }, + volumes={ + self._traefik_config: { + "bind": "/etc/traefik/dynamic.yml", + } + }, + ) + # { + # "8443/tcp": [ + # {"HostIp": "0.0.0.0", "HostPort": "8443"}, + # {"HostIp": "::", "HostPort": "8443"}, + # ], + # } + self._traefik_port = traefik.ports["9443/tcp"][0]["HostPort"] + + +class E2ETestCase(E2ETestMixin, StaticLiveServerTestCase): + """E2E Test case with django static live server""" + + +class ChannelsE2ETestCase(E2ETestMixin, ChannelsLiveServerTestCase): + """E2E Test case with channels live server (websocket + static)""" diff --git a/tests/openid_conformance/base.py b/tests/openid_conformance/base.py index f9f8aeb38a..d7746cef9a 100644 --- a/tests/openid_conformance/base.py +++ b/tests/openid_conformance/base.py @@ -1,17 +1,19 @@ from os import makedirs from pathlib import Path from time import sleep +from typing import Any from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as ec from authentik.blueprints.tests import apply_blueprint, reconcile_app from authentik.providers.oauth2.models import OAuth2Provider -from tests.e2e.utils import SeleniumTestCase +from tests.live import SSLLiveMixin from tests.openid_conformance.conformance import Conformance +from tests.selenium import SeleniumTestCase -class TestOpenIDConformance(SeleniumTestCase): +class TestOpenIDConformance(SSLLiveMixin, SeleniumTestCase): conformance: Conformance @@ -59,32 +61,28 @@ class TestOpenIDConformance(SeleniumTestCase): }, "consent": {}, } - self.test_variant = { - "server_metadata": "discovery", - "client_registration": "static_client", - } - def run_test(self, test_name: str, test_plan_config: dict): - # Create a Conformance instance... + def run_test( + self, test_name: str, test_plan_config: dict[str, Any], test_variant: dict[str, Any] + ): self.conformance = Conformance(f"https://{self.host}:8443/", None, verify_ssl=False) test_plan = self.conformance.create_test_plan( test_name, test_plan_config, - self.test_variant, + test_variant, ) plan_id = test_plan["id"] for test in test_plan["modules"]: - with self.subTest(test["testModule"], **test["variant"]): - # Fetch name and variant of the next test to run - module_name = test["testModule"] - variant = test["variant"] - module_instance = self.conformance.create_test_from_plan_with_variant( - plan_id, module_name, variant - ) - module_id = module_instance["id"] - self.run_single_test(module_id) - self.conformance.wait_for_state(module_id, ["FINISHED"], timeout=self.wait_timeout) + # Fetch name and variant of the next test to run + module_name = test["testModule"] + variant = test["variant"] + module_instance = self.conformance.create_test_from_plan_with_variant( + plan_id, module_name, variant + ) + module_id = module_instance["id"] + self.run_single_test(module_id) + self.conformance.wait_for_state(module_id, ["FINISHED"], timeout=self.wait_timeout) sleep(2) self.conformance.export_html(plan_id, Path(__file__).parent / "exports") diff --git a/tests/openid_conformance/compose.yml b/tests/openid_conformance/compose.yml index 31c8daf48f..aa27694e5a 100644 --- a/tests/openid_conformance/compose.yml +++ b/tests/openid_conformance/compose.yml @@ -1,15 +1,15 @@ services: mongodb: image: mongo:6.0.13 - httpd: - image: ghcr.io/beryju/oidc-conformance-suite-httpd:v5.1.32 + nginx: + image: ghcr.io/beryju/oidc-conformance-suite-nginx:v5.1.43 ports: - "8443:8443" - "8444:8444" depends_on: - server server: - image: ghcr.io/beryju/oidc-conformance-suite-server:v5.1.32 + image: ghcr.io/beryju/oidc-conformance-suite-server:v5.1.43 ports: - "9999:9999" extra_hosts: @@ -19,8 +19,8 @@ services: -Xdebug -Xrunjdwp:transport=dt_socket,address=*:9999,server=y,suspend=n -jar /server/fapi-test-suite.jar -Djdk.tls.maxHandshakeMessageSize=65536 - --fintechlabs.base_url=https://host.docker.internal:8443 - --fintechlabs.base_mtls_url=https://host.docker.internal:8444 + --fintechlabs.base_url=https://localhost:8443 + --fintechlabs.base_mtls_url=https://localhost:8444 --fintechlabs.devmode=true --fintechlabs.startredir=true links: diff --git a/tests/openid_conformance/test_basic.py b/tests/openid_conformance/test_basic.py deleted file mode 100644 index a84d7cf04e..0000000000 --- a/tests/openid_conformance/test_basic.py +++ /dev/null @@ -1,10 +0,0 @@ -from tests.e2e.utils import retry -from tests.openid_conformance.base import TestOpenIDConformance - - -class TestOpenIDConformanceBasic(TestOpenIDConformance): - - @retry() - def test_oidcc_basic_certification_test(self): - test_plan_name = "oidcc-basic-certification-test-plan" - self.run_test(test_plan_name, self.test_plan_config) diff --git a/tests/openid_conformance/test_implicit.py b/tests/openid_conformance/test_implicit.py deleted file mode 100644 index 1d2fcdf027..0000000000 --- a/tests/openid_conformance/test_implicit.py +++ /dev/null @@ -1,10 +0,0 @@ -from tests.e2e.utils import retry -from tests.openid_conformance.base import TestOpenIDConformance - - -class TestOpenIDConformanceImplicit(TestOpenIDConformance): - - @retry() - def test_oidcc_implicit_certification_test_plan(self): - test_plan_name = "oidcc-implicit-certification-test-plan" - self.run_test(test_plan_name, self.test_plan_config) diff --git a/tests/openid_conformance/test_oidc_backchannel.py b/tests/openid_conformance/test_oidc_backchannel.py new file mode 100644 index 0000000000..c60c5d67e2 --- /dev/null +++ b/tests/openid_conformance/test_oidc_backchannel.py @@ -0,0 +1,39 @@ +from unittest.mock import patch + +import urllib3 + +from authentik.flows.models import Flow +from authentik.lib.utils.http import get_http_session as real_get_http_session +from authentik.providers.oauth2.models import OAuth2LogoutMethod, OAuth2Provider +from tests.decorators import retry +from tests.openid_conformance.base import TestOpenIDConformance + + +def _insecure_http_session(): + session = real_get_http_session() + session.verify = False + return session + + +@patch("authentik.providers.oauth2.tasks.get_http_session", _insecure_http_session) +class TestOpenIDConformanceBackchannel(TestOpenIDConformance): + def setUp(self): + super().setUp() + OAuth2Provider.objects.filter(name__startswith="oidc-conformance-").update( + invalidation_flow=Flow.objects.get(slug="default-invalidation-flow"), + logout_method=OAuth2LogoutMethod.BACKCHANNEL, + logout_uri="https://localhost:8443/test/a/authentik/backchannel_logout", + ) + # We are unable to use https for this at the current time + urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) + + @retry() + def test_oidcc_backchannel_logout_certification_test_plan(self): + self.run_test( + "oidcc-backchannel-rp-initiated-logout-certification-test-plan", + self.test_plan_config, + { + "client_registration": "static_client", + "response_type": "code", + }, + ) diff --git a/tests/openid_conformance/test_oidc_basic.py b/tests/openid_conformance/test_oidc_basic.py new file mode 100644 index 0000000000..a99d01ed3c --- /dev/null +++ b/tests/openid_conformance/test_oidc_basic.py @@ -0,0 +1,16 @@ +from tests.decorators import retry +from tests.openid_conformance.base import TestOpenIDConformance + + +class TestOpenIDConformanceBasic(TestOpenIDConformance): + + @retry() + def test_oidcc_basic_certification_test(self): + self.run_test( + "oidcc-basic-certification-test-plan", + self.test_plan_config, + { + "server_metadata": "discovery", + "client_registration": "static_client", + }, + ) diff --git a/tests/openid_conformance/test_oidc_frontchannel.py b/tests/openid_conformance/test_oidc_frontchannel.py new file mode 100644 index 0000000000..4b82ffad3e --- /dev/null +++ b/tests/openid_conformance/test_oidc_frontchannel.py @@ -0,0 +1,26 @@ +from authentik.flows.models import Flow +from authentik.providers.oauth2.models import OAuth2LogoutMethod, OAuth2Provider +from tests.decorators import retry +from tests.openid_conformance.base import TestOpenIDConformance + + +class TestOpenIDConformanceFrontchannel(TestOpenIDConformance): + + def setUp(self): + super().setUp() + OAuth2Provider.objects.filter(name__startswith="oidc-conformance-").update( + invalidation_flow=Flow.objects.get(slug="default-invalidation-flow"), + logout_method=OAuth2LogoutMethod.FRONTCHANNEL, + logout_uri="https://localhost:8443/test/a/authentik/frontchannel_logout", + ) + + @retry() + def test_oidcc_frontchannel_logout_certification_test_plan(self): + self.run_test( + "oidcc-frontchannel-rp-initiated-logout-certification-test-plan", + self.test_plan_config, + { + "client_registration": "static_client", + "response_type": "code", + }, + ) diff --git a/tests/openid_conformance/test_oidc_implicit.py b/tests/openid_conformance/test_oidc_implicit.py new file mode 100644 index 0000000000..13484b662c --- /dev/null +++ b/tests/openid_conformance/test_oidc_implicit.py @@ -0,0 +1,16 @@ +from tests.decorators import retry +from tests.openid_conformance.base import TestOpenIDConformance + + +class TestOpenIDConformanceImplicit(TestOpenIDConformance): + + @retry() + def test_oidcc_implicit_certification_test_plan(self): + self.run_test( + "oidcc-implicit-certification-test-plan", + self.test_plan_config, + { + "server_metadata": "discovery", + "client_registration": "static_client", + }, + ) diff --git a/tests/openid_conformance/test_oidc_rp_initiated.py b/tests/openid_conformance/test_oidc_rp_initiated.py new file mode 100644 index 0000000000..7ffd8d48b9 --- /dev/null +++ b/tests/openid_conformance/test_oidc_rp_initiated.py @@ -0,0 +1,24 @@ +from authentik.flows.models import Flow +from authentik.providers.oauth2.models import OAuth2Provider +from tests.decorators import retry +from tests.openid_conformance.base import TestOpenIDConformance + + +class TestOpenIDConformanceRPInitiated(TestOpenIDConformance): + + def setUp(self): + super().setUp() + OAuth2Provider.objects.filter(name__startswith="oidc-conformance-").update( + invalidation_flow=Flow.objects.get(slug="default-invalidation-flow"), + ) + + @retry() + def test_oidcc_rp_initiated_certification_test_plan(self): + self.run_test( + "oidcc-rp-initiated-logout-certification-test-plan", + self.test_plan_config, + { + "client_registration": "static_client", + "response_type": "code", + }, + ) diff --git a/tests/openid_conformance/test_ssf_transmitter.py b/tests/openid_conformance/test_ssf_transmitter.py new file mode 100644 index 0000000000..6a8760ac86 --- /dev/null +++ b/tests/openid_conformance/test_ssf_transmitter.py @@ -0,0 +1,49 @@ +from authentik.core.models import Application +from authentik.crypto.models import CertificateKeyPair +from authentik.enterprise.providers.ssf.models import SSFProvider +from authentik.lib.generators import generate_id +from tests.decorators import retry +from tests.live import SSLLiveMixin +from tests.openid_conformance.base import TestOpenIDConformance + + +class TestOpenIDConformanceSSFTransmitter(TestOpenIDConformance, SSLLiveMixin): + + def setUp(self): + super().setUp() + self.provider = SSFProvider.objects.create( + name=generate_id(), + signing_key=CertificateKeyPair.objects.get(name="authentik Self-signed Certificate"), + backchannel_application=Application.objects.get(slug="oidc-conformance-1"), + push_verify_certificates=False, + ) + + @retry() + def test_openid_ssf_transmitter_test_plan(self): + iss = self.url( + "authentik_providers_ssf:configuration", + application_slug="oidc-conformance-1", + ) + self.run_test( + "openid-ssf-transmitter-test-plan", + { + "alias": "authentik", + "description": "authentik", + "ssf": { + "transmitter": { + "issuer": iss, + "configuration_metadata_endpoint": iss, + "access_token": self.provider.token.key, + } + }, + }, + test_variant={ + "client_auth_type": "client_secret_post", + "ssf_server_metadata": "static", + "server_metadata": "static", + "ssf_auth_mode": "static", + "ssf_delivery_mode": "push", + "ssf_profile": "caep_interop", + "client_registration": "static_client", + }, + ) diff --git a/tests/e2e/utils.py b/tests/selenium.py similarity index 79% rename from tests/e2e/utils.py rename to tests/selenium.py index 5159b4b02d..cd71fa3464 100644 --- a/tests/e2e/utils.py +++ b/tests/selenium.py @@ -1,25 +1,13 @@ """authentik e2e testing utilities""" -import socket -from collections.abc import Callable -from functools import cached_property, lru_cache, wraps +from functools import cached_property from json import JSONDecodeError, dumps, loads -from os import environ, getenv from pathlib import Path -from sys import stderr from tempfile import gettempdir from time import sleep -from typing import Any -from urllib.parse import urlencode -from django.apps import apps from django.contrib.staticfiles.testing import StaticLiveServerTestCase -from django.db import connection -from django.db.migrations.loader import MigrationLoader -from django.test.testcases import TransactionTestCase -from django.urls import reverse from docker.models.containers import Container -from dramatiq import get_broker from requests import RequestException from selenium import webdriver from selenium.common.exceptions import ( @@ -37,51 +25,24 @@ from selenium.webdriver.remote.webdriver import WebDriver from selenium.webdriver.remote.webelement import WebElement from selenium.webdriver.support import expected_conditions as ec from selenium.webdriver.support.wait import WebDriverWait -from structlog.stdlib import get_logger from authentik.core.api.users import UserSerializer from authentik.core.models import User -from authentik.core.tests.utils import create_test_admin_user from authentik.lib.utils.http import get_http_session -from authentik.tasks.test import use_test_broker -from tests.docker import DockerTestCase - -IS_CI = "CI" in environ -RETRIES = int(environ.get("RETRIES", "3")) if IS_CI else 1 -SHADOW_ROOT_RETRIES = 5 - -JSONType = dict[str, Any] | list[Any] | str | int | float | bool | None +from tests.decorators import IS_CI, RETRIES, SHADOW_ROOT_RETRIES, JSONType +from tests.live import ChannelsE2ETestCase, E2ETestMixin -def get_local_ip(override=True) -> str: - """Get the local machine's IP""" - if (local_ip := getenv("LOCAL_IP")) and override: - return local_ip - hostname = socket.gethostname() - try: - return socket.gethostbyname(hostname) - except socket.gaierror: - return "0.0.0.0" - - -class SeleniumTestCase(DockerTestCase, StaticLiveServerTestCase): +class SeleniumTestMixin(E2ETestMixin): """StaticLiveServerTestCase which automatically creates a Webdriver instance""" - host = get_local_ip() wait_timeout: int - user: User def setUp(self): - if IS_CI: - print("::group::authentik Logs", file=stderr) - apps.get_app_config("authentik_tenants").ready() - self.wait_timeout = 60 - self.logger = get_logger() + super().setUp() self.driver = self._get_driver() self.driver.implicitly_wait(30) self.wait = WebDriverWait(self.driver, self.wait_timeout) - self.user = create_test_admin_user() - super().setUp() def _get_driver(self) -> WebDriver: count = 0 @@ -135,20 +96,7 @@ class SeleniumTestCase(DockerTestCase, StaticLiveServerTestCase): def driver_container(self) -> Container: return self.docker_client.containers.list(filters={"label": "io.goauthentik.tests"})[0] - @classmethod - def _pre_setup(cls): - use_test_broker() - return super()._pre_setup() - - def _post_teardown(self): - broker = get_broker() - broker.flush_all() - broker.close() - return super()._post_teardown() - def tearDown(self): - if IS_CI: - print("::endgroup::", file=stderr) super().tearDown() if IS_CI: print("::group::Browser logs") @@ -181,13 +129,6 @@ class SeleniumTestCase(DockerTestCase, StaticLiveServerTestCase): f"HTML: {self.driver.page_source[:1000]}" ) from exc - def url(self, view: str, query: dict | None = None, **kwargs) -> str: - """reverse `view` with `**kwargs` into full URL using live_server_url""" - url = self.live_server_url + reverse(view, kwargs=kwargs) - if query: - return url + "?" + urlencode(query) - return url - def if_user_url(self, path: str | None = None) -> str: """same as self.url() but show URL in shell""" url = self.url("authentik_core:if-user") @@ -427,46 +368,9 @@ class SeleniumTestCase(DockerTestCase, StaticLiveServerTestCase): ) -@lru_cache -def get_loader(): - """Thin wrapper to lazily get a Migration Loader, only when it's needed - and only once""" - return MigrationLoader(connection) +class SeleniumTestCase(SeleniumTestMixin, StaticLiveServerTestCase): + """Selenium Test case with django static live server""" -def retry(max_retires=RETRIES, exceptions=None): - """Retry test multiple times. Default to catching Selenium Timeout Exception""" - - if not exceptions: - exceptions = [WebDriverException, TimeoutException, NoSuchElementException] - - logger = get_logger() - - def retry_actual(func: Callable): - """Retry test multiple times""" - count = 1 - - @wraps(func) - def wrapper(self: TransactionTestCase, *args, **kwargs): - """Run test again if we're below max_retries, including tearDown and - setUp. Otherwise raise the error""" - nonlocal count - try: - return func(self, *args, **kwargs) - - except tuple(exceptions) as exc: - count += 1 - if count > max_retires: - logger.debug("Exceeded retry count", exc=exc, test=self) - - raise exc - logger.debug("Retrying on error", exc=exc, test=self) - self.tearDown() - self._post_teardown() - self._pre_setup() - self.setUp() - return wrapper(self, *args, **kwargs) - - return wrapper - - return retry_actual +class ChannelsSeleniumTestCase(SeleniumTestMixin, ChannelsE2ETestCase): + """Selenium Test case with channels live server (websocket + static)""" diff --git a/tsconfig.json b/tsconfig.json index 3aa95fcf07..7e8419c429 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -2,7 +2,7 @@ { "extends": "@goauthentik/tsconfig", "compilerOptions": { - "baseUrl": "." + "ignoreDeprecations": "6.0" }, "watchOptions": { "excludeDirectories": [ diff --git a/uv.lock b/uv.lock index 47a5bdd910..cde9fc4348 100644 --- a/uv.lock +++ b/uv.lock @@ -22,7 +22,7 @@ wheels = [ [[package]] name = "aiohttp" -version = "3.13.3" +version = "3.13.5" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "aiohappyeyeballs" }, @@ -33,42 +33,42 @@ dependencies = [ { name = "propcache" }, { name = "yarl" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/50/42/32cf8e7704ceb4481406eb87161349abb46a57fee3f008ba9cb610968646/aiohttp-3.13.3.tar.gz", hash = "sha256:a949eee43d3782f2daae4f4a2819b2cb9b0c5d3b7f7a927067cc84dafdbb9f88", size = 7844556, upload-time = "2026-01-03T17:33:05.204Z" } +sdist = { url = "https://files.pythonhosted.org/packages/77/9a/152096d4808df8e4268befa55fba462f440f14beab85e8ad9bf990516918/aiohttp-3.13.5.tar.gz", hash = "sha256:9d98cc980ecc96be6eb4c1994ce35d28d8b1f5e5208a23b421187d1209dbb7d1", size = 7858271, upload-time = "2026-03-31T22:01:03.343Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/99/36/5b6514a9f5d66f4e2597e40dea2e3db271e023eb7a5d22defe96ba560996/aiohttp-3.13.3-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:ea37047c6b367fd4bd632bff8077449b8fa034b69e812a18e0132a00fae6e808", size = 737238, upload-time = "2026-01-03T17:31:17.909Z" }, - { url = "https://files.pythonhosted.org/packages/f7/49/459327f0d5bcd8c6c9ca69e60fdeebc3622861e696490d8674a6d0cb90a6/aiohttp-3.13.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:6fc0e2337d1a4c3e6acafda6a78a39d4c14caea625124817420abceed36e2415", size = 492292, upload-time = "2026-01-03T17:31:19.919Z" }, - { url = "https://files.pythonhosted.org/packages/e8/0b/b97660c5fd05d3495b4eb27f2d0ef18dc1dc4eff7511a9bf371397ff0264/aiohttp-3.13.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c685f2d80bb67ca8c3837823ad76196b3694b0159d232206d1e461d3d434666f", size = 493021, upload-time = "2026-01-03T17:31:21.636Z" }, - { url = "https://files.pythonhosted.org/packages/54/d4/438efabdf74e30aeceb890c3290bbaa449780583b1270b00661126b8aae4/aiohttp-3.13.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:48e377758516d262bde50c2584fc6c578af272559c409eecbdd2bae1601184d6", size = 1717263, upload-time = "2026-01-03T17:31:23.296Z" }, - { url = "https://files.pythonhosted.org/packages/71/f2/7bddc7fd612367d1459c5bcf598a9e8f7092d6580d98de0e057eb42697ad/aiohttp-3.13.3-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:34749271508078b261c4abb1767d42b8d0c0cc9449c73a4df494777dc55f0687", size = 1669107, upload-time = "2026-01-03T17:31:25.334Z" }, - { url = "https://files.pythonhosted.org/packages/00/5a/1aeaecca40e22560f97610a329e0e5efef5e0b5afdf9f857f0d93839ab2e/aiohttp-3.13.3-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:82611aeec80eb144416956ec85b6ca45a64d76429c1ed46ae1b5f86c6e0c9a26", size = 1760196, upload-time = "2026-01-03T17:31:27.394Z" }, - { url = "https://files.pythonhosted.org/packages/f8/f8/0ff6992bea7bd560fc510ea1c815f87eedd745fe035589c71ce05612a19a/aiohttp-3.13.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:2fff83cfc93f18f215896e3a190e8e5cb413ce01553901aca925176e7568963a", size = 1843591, upload-time = "2026-01-03T17:31:29.238Z" }, - { url = "https://files.pythonhosted.org/packages/e3/d1/e30e537a15f53485b61f5be525f2157da719819e8377298502aebac45536/aiohttp-3.13.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bbe7d4cecacb439e2e2a8a1a7b935c25b812af7a5fd26503a66dadf428e79ec1", size = 1720277, upload-time = "2026-01-03T17:31:31.053Z" }, - { url = "https://files.pythonhosted.org/packages/84/45/23f4c451d8192f553d38d838831ebbc156907ea6e05557f39563101b7717/aiohttp-3.13.3-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:b928f30fe49574253644b1ca44b1b8adbd903aa0da4b9054a6c20fc7f4092a25", size = 1548575, upload-time = "2026-01-03T17:31:32.87Z" }, - { url = "https://files.pythonhosted.org/packages/6a/ed/0a42b127a43712eda7807e7892c083eadfaf8429ca8fb619662a530a3aab/aiohttp-3.13.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7b5e8fe4de30df199155baaf64f2fcd604f4c678ed20910db8e2c66dc4b11603", size = 1679455, upload-time = "2026-01-03T17:31:34.76Z" }, - { url = "https://files.pythonhosted.org/packages/2e/b5/c05f0c2b4b4fe2c9d55e73b6d3ed4fd6c9dc2684b1d81cbdf77e7fad9adb/aiohttp-3.13.3-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:8542f41a62bcc58fc7f11cf7c90e0ec324ce44950003feb70640fc2a9092c32a", size = 1687417, upload-time = "2026-01-03T17:31:36.699Z" }, - { url = "https://files.pythonhosted.org/packages/c9/6b/915bc5dad66aef602b9e459b5a973529304d4e89ca86999d9d75d80cbd0b/aiohttp-3.13.3-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:5e1d8c8b8f1d91cd08d8f4a3c2b067bfca6ec043d3ff36de0f3a715feeedf926", size = 1729968, upload-time = "2026-01-03T17:31:38.622Z" }, - { url = "https://files.pythonhosted.org/packages/11/3b/e84581290a9520024a08640b63d07673057aec5ca548177a82026187ba73/aiohttp-3.13.3-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:90455115e5da1c3c51ab619ac57f877da8fd6d73c05aacd125c5ae9819582aba", size = 1545690, upload-time = "2026-01-03T17:31:40.57Z" }, - { url = "https://files.pythonhosted.org/packages/f5/04/0c3655a566c43fd647c81b895dfe361b9f9ad6d58c19309d45cff52d6c3b/aiohttp-3.13.3-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:042e9e0bcb5fba81886c8b4fbb9a09d6b8a00245fd8d88e4d989c1f96c74164c", size = 1746390, upload-time = "2026-01-03T17:31:42.857Z" }, - { url = "https://files.pythonhosted.org/packages/1f/53/71165b26978f719c3419381514c9690bd5980e764a09440a10bb816ea4ab/aiohttp-3.13.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:2eb752b102b12a76ca02dff751a801f028b4ffbbc478840b473597fc91a9ed43", size = 1702188, upload-time = "2026-01-03T17:31:44.984Z" }, - { url = "https://files.pythonhosted.org/packages/29/a7/cbe6c9e8e136314fa1980da388a59d2f35f35395948a08b6747baebb6aa6/aiohttp-3.13.3-cp314-cp314-win32.whl", hash = "sha256:b556c85915d8efaed322bf1bdae9486aa0f3f764195a0fb6ee962e5c71ef5ce1", size = 433126, upload-time = "2026-01-03T17:31:47.463Z" }, - { url = "https://files.pythonhosted.org/packages/de/56/982704adea7d3b16614fc5936014e9af85c0e34b58f9046655817f04306e/aiohttp-3.13.3-cp314-cp314-win_amd64.whl", hash = "sha256:9bf9f7a65e7aa20dd764151fb3d616c81088f91f8df39c3893a536e279b4b984", size = 459128, upload-time = "2026-01-03T17:31:49.2Z" }, - { url = "https://files.pythonhosted.org/packages/6c/2a/3c79b638a9c3d4658d345339d22070241ea341ed4e07b5ac60fb0f418003/aiohttp-3.13.3-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:05861afbbec40650d8a07ea324367cb93e9e8cc7762e04dd4405df99fa65159c", size = 769512, upload-time = "2026-01-03T17:31:51.134Z" }, - { url = "https://files.pythonhosted.org/packages/29/b9/3e5014d46c0ab0db8707e0ac2711ed28c4da0218c358a4e7c17bae0d8722/aiohttp-3.13.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:2fc82186fadc4a8316768d61f3722c230e2c1dcab4200d52d2ebdf2482e47592", size = 506444, upload-time = "2026-01-03T17:31:52.85Z" }, - { url = "https://files.pythonhosted.org/packages/90/03/c1d4ef9a054e151cd7839cdc497f2638f00b93cbe8043983986630d7a80c/aiohttp-3.13.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:0add0900ff220d1d5c5ebbf99ed88b0c1bbf87aa7e4262300ed1376a6b13414f", size = 510798, upload-time = "2026-01-03T17:31:54.91Z" }, - { url = "https://files.pythonhosted.org/packages/ea/76/8c1e5abbfe8e127c893fe7ead569148a4d5a799f7cf958d8c09f3eedf097/aiohttp-3.13.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:568f416a4072fbfae453dcf9a99194bbb8bdeab718e08ee13dfa2ba0e4bebf29", size = 1868835, upload-time = "2026-01-03T17:31:56.733Z" }, - { url = "https://files.pythonhosted.org/packages/8e/ac/984c5a6f74c363b01ff97adc96a3976d9c98940b8969a1881575b279ac5d/aiohttp-3.13.3-cp314-cp314t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:add1da70de90a2569c5e15249ff76a631ccacfe198375eead4aadf3b8dc849dc", size = 1720486, upload-time = "2026-01-03T17:31:58.65Z" }, - { url = "https://files.pythonhosted.org/packages/b2/9a/b7039c5f099c4eb632138728828b33428585031a1e658d693d41d07d89d1/aiohttp-3.13.3-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:10b47b7ba335d2e9b1239fa571131a87e2d8ec96b333e68b2a305e7a98b0bae2", size = 1847951, upload-time = "2026-01-03T17:32:00.989Z" }, - { url = "https://files.pythonhosted.org/packages/3c/02/3bec2b9a1ba3c19ff89a43a19324202b8eb187ca1e928d8bdac9bbdddebd/aiohttp-3.13.3-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:3dd4dce1c718e38081c8f35f323209d4c1df7d4db4bab1b5c88a6b4d12b74587", size = 1941001, upload-time = "2026-01-03T17:32:03.122Z" }, - { url = "https://files.pythonhosted.org/packages/37/df/d879401cedeef27ac4717f6426c8c36c3091c6e9f08a9178cc87549c537f/aiohttp-3.13.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:34bac00a67a812570d4a460447e1e9e06fae622946955f939051e7cc895cfab8", size = 1797246, upload-time = "2026-01-03T17:32:05.255Z" }, - { url = "https://files.pythonhosted.org/packages/8d/15/be122de1f67e6953add23335c8ece6d314ab67c8bebb3f181063010795a7/aiohttp-3.13.3-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:a19884d2ee70b06d9204b2727a7b9f983d0c684c650254679e716b0b77920632", size = 1627131, upload-time = "2026-01-03T17:32:07.607Z" }, - { url = "https://files.pythonhosted.org/packages/12/12/70eedcac9134cfa3219ab7af31ea56bc877395b1ac30d65b1bc4b27d0438/aiohttp-3.13.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:5f8ca7f2bb6ba8348a3614c7918cc4bb73268c5ac2a207576b7afea19d3d9f64", size = 1795196, upload-time = "2026-01-03T17:32:09.59Z" }, - { url = "https://files.pythonhosted.org/packages/32/11/b30e1b1cd1f3054af86ebe60df96989c6a414dd87e27ad16950eee420bea/aiohttp-3.13.3-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:b0d95340658b9d2f11d9697f59b3814a9d3bb4b7a7c20b131df4bcef464037c0", size = 1782841, upload-time = "2026-01-03T17:32:11.445Z" }, - { url = "https://files.pythonhosted.org/packages/88/0d/d98a9367b38912384a17e287850f5695c528cff0f14f791ce8ee2e4f7796/aiohttp-3.13.3-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:a1e53262fd202e4b40b70c3aff944a8155059beedc8a89bba9dc1f9ef06a1b56", size = 1795193, upload-time = "2026-01-03T17:32:13.705Z" }, - { url = "https://files.pythonhosted.org/packages/43/a5/a2dfd1f5ff5581632c7f6a30e1744deda03808974f94f6534241ef60c751/aiohttp-3.13.3-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:d60ac9663f44168038586cab2157e122e46bdef09e9368b37f2d82d354c23f72", size = 1621979, upload-time = "2026-01-03T17:32:15.965Z" }, - { url = "https://files.pythonhosted.org/packages/fa/f0/12973c382ae7c1cccbc4417e129c5bf54c374dfb85af70893646e1f0e749/aiohttp-3.13.3-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:90751b8eed69435bac9ff4e3d2f6b3af1f57e37ecb0fbeee59c0174c9e2d41df", size = 1822193, upload-time = "2026-01-03T17:32:18.219Z" }, - { url = "https://files.pythonhosted.org/packages/3c/5f/24155e30ba7f8c96918af1350eb0663e2430aad9e001c0489d89cd708ab1/aiohttp-3.13.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:fc353029f176fd2b3ec6cfc71be166aba1936fe5d73dd1992ce289ca6647a9aa", size = 1769801, upload-time = "2026-01-03T17:32:20.25Z" }, - { url = "https://files.pythonhosted.org/packages/eb/f8/7314031ff5c10e6ece114da79b338ec17eeff3a079e53151f7e9f43c4723/aiohttp-3.13.3-cp314-cp314t-win32.whl", hash = "sha256:2e41b18a58da1e474a057b3d35248d8320029f61d70a37629535b16a0c8f3767", size = 466523, upload-time = "2026-01-03T17:32:22.215Z" }, - { url = "https://files.pythonhosted.org/packages/b4/63/278a98c715ae467624eafe375542d8ba9b4383a016df8fdefe0ae28382a7/aiohttp-3.13.3-cp314-cp314t-win_amd64.whl", hash = "sha256:44531a36aa2264a1860089ffd4dce7baf875ee5a6079d5fb42e261c704ef7344", size = 499694, upload-time = "2026-01-03T17:32:24.546Z" }, + { url = "https://files.pythonhosted.org/packages/5d/ce/46572759afc859e867a5bc8ec3487315869013f59281ce61764f76d879de/aiohttp-3.13.5-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:eb4639f32fd4a9904ab8fb45bf3383ba71137f3d9d4ba25b3b3f3109977c5b8c", size = 745721, upload-time = "2026-03-31T21:58:50.229Z" }, + { url = "https://files.pythonhosted.org/packages/13/fe/8a2efd7626dbe6049b2ef8ace18ffda8a4dfcbe1bcff3ac30c0c7575c20b/aiohttp-3.13.5-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:7e5dc4311bd5ac493886c63cbf76ab579dbe4641268e7c74e48e774c74b6f2be", size = 497663, upload-time = "2026-03-31T21:58:52.232Z" }, + { url = "https://files.pythonhosted.org/packages/9b/91/cc8cc78a111826c54743d88651e1687008133c37e5ee615fee9b57990fac/aiohttp-3.13.5-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:756c3c304d394977519824449600adaf2be0ccee76d206ee339c5e76b70ded25", size = 499094, upload-time = "2026-03-31T21:58:54.566Z" }, + { url = "https://files.pythonhosted.org/packages/0a/33/a8362cb15cf16a3af7e86ed11962d5cd7d59b449202dc576cdc731310bde/aiohttp-3.13.5-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ecc26751323224cf8186efcf7fbcbc30f4e1d8c7970659daf25ad995e4032a56", size = 1726701, upload-time = "2026-03-31T21:58:56.864Z" }, + { url = "https://files.pythonhosted.org/packages/45/0c/c091ac5c3a17114bd76cbf85d674650969ddf93387876cf67f754204bd77/aiohttp-3.13.5-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:10a75acfcf794edf9d8db50e5a7ec5fc818b2a8d3f591ce93bc7b1210df016d2", size = 1683360, upload-time = "2026-03-31T21:58:59.072Z" }, + { url = "https://files.pythonhosted.org/packages/23/73/bcee1c2b79bc275e964d1446c55c54441a461938e70267c86afaae6fba27/aiohttp-3.13.5-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:0f7a18f258d124cd678c5fe072fe4432a4d5232b0657fca7c1847f599233c83a", size = 1773023, upload-time = "2026-03-31T21:59:01.776Z" }, + { url = "https://files.pythonhosted.org/packages/c7/ef/720e639df03004fee2d869f771799d8c23046dec47d5b81e396c7cda583a/aiohttp-3.13.5-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:df6104c009713d3a89621096f3e3e88cc323fd269dbd7c20afe18535094320be", size = 1853795, upload-time = "2026-03-31T21:59:04.568Z" }, + { url = "https://files.pythonhosted.org/packages/bd/c9/989f4034fb46841208de7aeeac2c6d8300745ab4f28c42f629ba77c2d916/aiohttp-3.13.5-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:241a94f7de7c0c3b616627aaad530fe2cb620084a8b144d3be7b6ecfe95bae3b", size = 1730405, upload-time = "2026-03-31T21:59:07.221Z" }, + { url = "https://files.pythonhosted.org/packages/ce/75/ee1fd286ca7dc599d824b5651dad7b3be7ff8d9a7e7b3fe9820d9180f7db/aiohttp-3.13.5-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:c974fb66180e58709b6fc402846f13791240d180b74de81d23913abe48e96d94", size = 1558082, upload-time = "2026-03-31T21:59:09.484Z" }, + { url = "https://files.pythonhosted.org/packages/c3/20/1e9e6650dfc436340116b7aa89ff8cb2bbdf0abc11dfaceaad8f74273a10/aiohttp-3.13.5-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:6e27ea05d184afac78aabbac667450c75e54e35f62238d44463131bd3f96753d", size = 1692346, upload-time = "2026-03-31T21:59:12.068Z" }, + { url = "https://files.pythonhosted.org/packages/d8/40/8ebc6658d48ea630ac7903912fe0dd4e262f0e16825aa4c833c56c9f1f56/aiohttp-3.13.5-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:a79a6d399cef33a11b6f004c67bb07741d91f2be01b8d712d52c75711b1e07c7", size = 1698891, upload-time = "2026-03-31T21:59:14.552Z" }, + { url = "https://files.pythonhosted.org/packages/d8/78/ea0ae5ec8ba7a5c10bdd6e318f1ba5e76fcde17db8275188772afc7917a4/aiohttp-3.13.5-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:c632ce9c0b534fbe25b52c974515ed674937c5b99f549a92127c85f771a78772", size = 1742113, upload-time = "2026-03-31T21:59:17.068Z" }, + { url = "https://files.pythonhosted.org/packages/8a/66/9d308ed71e3f2491be1acb8769d96c6f0c47d92099f3bc9119cada27b357/aiohttp-3.13.5-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:fceedde51fbd67ee2bcc8c0b33d0126cc8b51ef3bbde2f86662bd6d5a6f10ec5", size = 1553088, upload-time = "2026-03-31T21:59:19.541Z" }, + { url = "https://files.pythonhosted.org/packages/da/a6/6cc25ed8dfc6e00c90f5c6d126a98e2cf28957ad06fa1036bd34b6f24a2c/aiohttp-3.13.5-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:f92995dfec9420bb69ae629abf422e516923ba79ba4403bc750d94fb4a6c68c1", size = 1757976, upload-time = "2026-03-31T21:59:22.311Z" }, + { url = "https://files.pythonhosted.org/packages/c1/2b/cce5b0ffe0de99c83e5e36d8f828e4161e415660a9f3e58339d07cce3006/aiohttp-3.13.5-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:20ae0ff08b1f2c8788d6fb85afcb798654ae6ba0b747575f8562de738078457b", size = 1712444, upload-time = "2026-03-31T21:59:24.635Z" }, + { url = "https://files.pythonhosted.org/packages/6c/cf/9e1795b4160c58d29421eafd1a69c6ce351e2f7c8d3c6b7e4ca44aea1a5b/aiohttp-3.13.5-cp314-cp314-win32.whl", hash = "sha256:b20df693de16f42b2472a9c485e1c948ee55524786a0a34345511afdd22246f3", size = 438128, upload-time = "2026-03-31T21:59:27.291Z" }, + { url = "https://files.pythonhosted.org/packages/22/4d/eaedff67fc805aeba4ba746aec891b4b24cebb1a7d078084b6300f79d063/aiohttp-3.13.5-cp314-cp314-win_amd64.whl", hash = "sha256:f85c6f327bf0b8c29da7d93b1cabb6363fb5e4e160a32fa241ed2dce21b73162", size = 464029, upload-time = "2026-03-31T21:59:29.429Z" }, + { url = "https://files.pythonhosted.org/packages/79/11/c27d9332ee20d68dd164dc12a6ecdef2e2e35ecc97ed6cf0d2442844624b/aiohttp-3.13.5-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:1efb06900858bb618ff5cee184ae2de5828896c448403d51fb633f09e109be0a", size = 778758, upload-time = "2026-03-31T21:59:31.547Z" }, + { url = "https://files.pythonhosted.org/packages/04/fb/377aead2e0a3ba5f09b7624f702a964bdf4f08b5b6728a9799830c80041e/aiohttp-3.13.5-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:fee86b7c4bd29bdaf0d53d14739b08a106fdda809ca5fe032a15f52fae5fe254", size = 512883, upload-time = "2026-03-31T21:59:34.098Z" }, + { url = "https://files.pythonhosted.org/packages/bb/a6/aa109a33671f7a5d3bd78b46da9d852797c5e665bfda7d6b373f56bff2ec/aiohttp-3.13.5-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:20058e23909b9e65f9da62b396b77dfa95965cbe840f8def6e572538b1d32e36", size = 516668, upload-time = "2026-03-31T21:59:36.497Z" }, + { url = "https://files.pythonhosted.org/packages/79/b3/ca078f9f2fa9563c36fb8ef89053ea2bb146d6f792c5104574d49d8acb63/aiohttp-3.13.5-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8cf20a8d6868cb15a73cab329ffc07291ba8c22b1b88176026106ae39aa6df0f", size = 1883461, upload-time = "2026-03-31T21:59:38.723Z" }, + { url = "https://files.pythonhosted.org/packages/b7/e3/a7ad633ca1ca497b852233a3cce6906a56c3225fb6d9217b5e5e60b7419d/aiohttp-3.13.5-cp314-cp314t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:330f5da04c987f1d5bdb8ae189137c77139f36bd1cb23779ca1a354a4b027800", size = 1747661, upload-time = "2026-03-31T21:59:41.187Z" }, + { url = "https://files.pythonhosted.org/packages/33/b9/cd6fe579bed34a906d3d783fe60f2fa297ef55b27bb4538438ee49d4dc41/aiohttp-3.13.5-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:6f1cbf0c7926d315c3c26c2da41fd2b5d2fe01ac0e157b78caefc51a782196cf", size = 1863800, upload-time = "2026-03-31T21:59:43.84Z" }, + { url = "https://files.pythonhosted.org/packages/c0/3f/2c1e2f5144cefa889c8afd5cf431994c32f3b29da9961698ff4e3811b79a/aiohttp-3.13.5-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:53fc049ed6390d05423ba33103ded7281fe897cf97878f369a527070bd95795b", size = 1958382, upload-time = "2026-03-31T21:59:46.187Z" }, + { url = "https://files.pythonhosted.org/packages/66/1d/f31ec3f1013723b3babe3609e7f119c2c2fb6ef33da90061a705ef3e1bc8/aiohttp-3.13.5-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:898703aa2667e3c5ca4c54ca36cd73f58b7a38ef87a5606414799ebce4d3fd3a", size = 1803724, upload-time = "2026-03-31T21:59:48.656Z" }, + { url = "https://files.pythonhosted.org/packages/0e/b4/57712dfc6f1542f067daa81eb61da282fab3e6f1966fca25db06c4fc62d5/aiohttp-3.13.5-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:0494a01ca9584eea1e5fbd6d748e61ecff218c51b576ee1999c23db7066417d8", size = 1640027, upload-time = "2026-03-31T21:59:51.284Z" }, + { url = "https://files.pythonhosted.org/packages/25/3c/734c878fb43ec083d8e31bf029daae1beafeae582d1b35da234739e82ee7/aiohttp-3.13.5-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:6cf81fe010b8c17b09495cbd15c1d35afbc8fb405c0c9cf4738e5ae3af1d65be", size = 1806644, upload-time = "2026-03-31T21:59:53.753Z" }, + { url = "https://files.pythonhosted.org/packages/20/a5/f671e5cbec1c21d044ff3078223f949748f3a7f86b14e34a365d74a5d21f/aiohttp-3.13.5-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:c564dd5f09ddc9d8f2c2d0a301cd30a79a2cc1b46dd1a73bef8f0038863d016b", size = 1791630, upload-time = "2026-03-31T21:59:56.239Z" }, + { url = "https://files.pythonhosted.org/packages/0b/63/fb8d0ad63a0b8a99be97deac8c04dacf0785721c158bdf23d679a87aa99e/aiohttp-3.13.5-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:2994be9f6e51046c4f864598fd9abeb4fba6e88f0b2152422c9666dcd4aea9c6", size = 1809403, upload-time = "2026-03-31T21:59:59.103Z" }, + { url = "https://files.pythonhosted.org/packages/59/0c/bfed7f30662fcf12206481c2aac57dedee43fe1c49275e85b3a1e1742294/aiohttp-3.13.5-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:157826e2fa245d2ef46c83ea8a5faf77ca19355d278d425c29fda0beb3318037", size = 1634924, upload-time = "2026-03-31T22:00:02.116Z" }, + { url = "https://files.pythonhosted.org/packages/17/d6/fd518d668a09fd5a3319ae5e984d4d80b9a4b3df4e21c52f02251ef5a32e/aiohttp-3.13.5-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:a8aca50daa9493e9e13c0f566201a9006f080e7c50e5e90d0b06f53146a54500", size = 1836119, upload-time = "2026-03-31T22:00:04.756Z" }, + { url = "https://files.pythonhosted.org/packages/78/b7/15fb7a9d52e112a25b621c67b69c167805cb1f2ab8f1708a5c490d1b52fe/aiohttp-3.13.5-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:3b13560160d07e047a93f23aaa30718606493036253d5430887514715b67c9d9", size = 1772072, upload-time = "2026-03-31T22:00:07.494Z" }, + { url = "https://files.pythonhosted.org/packages/7e/df/57ba7f0c4a553fc2bd8b6321df236870ec6fd64a2a473a8a13d4f733214e/aiohttp-3.13.5-cp314-cp314t-win32.whl", hash = "sha256:9a0f4474b6ea6818b41f82172d799e4b3d29e22c2c520ce4357856fced9af2f8", size = 471819, upload-time = "2026-03-31T22:00:10.277Z" }, + { url = "https://files.pythonhosted.org/packages/62/29/2f8418269e46454a26171bfdd6a055d74febf32234e474930f2f60a17145/aiohttp-3.13.5-cp314-cp314t-win_amd64.whl", hash = "sha256:18a2f6c1182c51baa1d28d68fea51513cb2a76612f038853c0ad3c145423d3d9", size = 505441, upload-time = "2026-03-31T22:00:12.791Z" }, ] [[package]] @@ -130,14 +130,14 @@ wheels = [ [[package]] name = "anyio" -version = "4.12.1" +version = "4.13.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "idna" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/96/f0/5eb65b2bb0d09ac6776f2eb54adee6abe8228ea05b20a5ad0e4945de8aac/anyio-4.12.1.tar.gz", hash = "sha256:41cfcc3a4c85d3f05c932da7c26d0201ac36f72abd4435ba90d0464a3ffed703", size = 228685, upload-time = "2026-01-06T11:45:21.246Z" } +sdist = { url = "https://files.pythonhosted.org/packages/19/14/2c5dd9f512b66549ae92767a9c7b330ae88e1932ca57876909410251fe13/anyio-4.13.0.tar.gz", hash = "sha256:334b70e641fd2221c1505b3890c69882fe4a2df910cba14d97019b90b24439dc", size = 231622, upload-time = "2026-03-24T12:59:09.671Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/38/0e/27be9fdef66e72d64c0cdc3cc2823101b80585f8119b5c112c2e8f5f7dab/anyio-4.12.1-py3-none-any.whl", hash = "sha256:d405828884fc140aa80a3c667b8beed277f1dfedec42ba031bd6ac3db606ab6c", size = 113592, upload-time = "2026-01-06T11:45:19.497Z" }, + { url = "https://files.pythonhosted.org/packages/da/42/e921fccf5015463e32a3cf6ee7f980a6ed0f395ceeaa45060b61d86486c2/anyio-4.13.0-py3-none-any.whl", hash = "sha256:08b310f9e24a9594186fd75b4f73f4a4152069e3853f1ed8bfbf58369f4ad708", size = 114353, upload-time = "2026-03-24T12:59:08.246Z" }, ] [[package]] @@ -185,11 +185,11 @@ wheels = [ [[package]] name = "asgiref" -version = "3.11.0" +version = "3.11.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/76/b9/4db2509eabd14b4a8c71d1b24c8d5734c52b8560a7b1e1a8b56c8d25568b/asgiref-3.11.0.tar.gz", hash = "sha256:13acff32519542a1736223fb79a715acdebe24286d98e8b164a73085f40da2c4", size = 37969, upload-time = "2025-11-19T15:32:20.106Z" } +sdist = { url = "https://files.pythonhosted.org/packages/63/40/f03da1264ae8f7cfdbf9146542e5e7e8100a4c66ab48e791df9a03d3f6c0/asgiref-3.11.1.tar.gz", hash = "sha256:5f184dc43b7e763efe848065441eac62229c9f7b0475f41f80e207a114eda4ce", size = 38550, upload-time = "2026-02-03T13:30:14.33Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/91/be/317c2c55b8bbec407257d45f5c8d1b6867abc76d12043f2d3d58c538a4ea/asgiref-3.11.0-py3-none-any.whl", hash = "sha256:1db9021efadb0d9512ce8ffaf72fcef601c7b73a8807a1bb2ef143dc6b14846d", size = 24096, upload-time = "2025-11-19T15:32:19.004Z" }, + { url = "https://files.pythonhosted.org/packages/5c/0a/a72d10ed65068e115044937873362e6e32fab1b7dce0046aeb224682c989/asgiref-3.11.1-py3-none-any.whl", hash = "sha256:e8667a091e69529631969fd45dc268fa79b99c92c5fcdda727757e52146ec133", size = 24345, upload-time = "2026-02-03T13:30:13.039Z" }, ] [[package]] @@ -203,7 +203,7 @@ wheels = [ [[package]] name = "authentik" -version = "2026.5.0rc1" +version = "2026.8.0rc1" source = { editable = "." } dependencies = [ { name = "ak-guardian" }, @@ -316,13 +316,13 @@ dev = [ requires-dist = [ { name = "ak-guardian", editable = "packages/ak-guardian" }, { name = "argon2-cffi", specifier = "==25.1.0" }, - { name = "cachetools", specifier = "==7.0.5" }, + { name = "cachetools", specifier = "==7.1.1" }, { name = "channels", specifier = "==4.3.2" }, - { name = "cryptography", specifier = "==46.0.5" }, + { name = "cryptography", specifier = "==48.0.0" }, { name = "dacite", specifier = "==1.9.2" }, { name = "deepmerge", specifier = "==2.0" }, { name = "defusedxml", specifier = "==0.7.1" }, - { name = "django", specifier = "==5.2.12" }, + { name = "django", specifier = "==5.2.14" }, { name = "django-channels-postgres", editable = "packages/django-channels-postgres" }, { name = "django-countries", specifier = "==8.2.0" }, { name = "django-dramatiq-postgres", editable = "packages/django-dramatiq-postgres" }, @@ -336,46 +336,46 @@ requires-dist = [ { name = "django-storages", extras = ["s3"], specifier = "==1.14.6" }, { name = "django-tenants", specifier = "==3.10.1" }, { name = "djangoql", specifier = "==0.19.1" }, - { name = "djangorestframework", specifier = "==3.17.0" }, + { name = "djangorestframework", specifier = "==3.17.1" }, { name = "docker", specifier = "==7.1.0" }, { name = "drf-orjson-renderer", specifier = "==1.8.0" }, - { name = "drf-spectacular", specifier = "==0.28.0" }, + { name = "drf-spectacular", specifier = "==0.29.0" }, { name = "dumb-init", specifier = "==1.2.5.post1" }, { name = "duo-client", specifier = "==5.6.1" }, - { name = "fido2", specifier = "==2.1.1" }, + { name = "fido2", specifier = "==2.2.0" }, { name = "geoip2", specifier = "==5.2.0" }, { name = "geopy", specifier = "==2.4.1" }, - { name = "google-api-python-client", specifier = "==2.193.0" }, + { name = "google-api-python-client", specifier = "==2.195.0" }, { name = "gssapi", specifier = "==1.11.1" }, - { name = "gunicorn", specifier = "==25.1.0" }, + { name = "gunicorn", specifier = "==25.3.0" }, { name = "jsonpatch", specifier = "==1.33" }, - { name = "jwcrypto", specifier = "==1.5.6" }, + { name = "jwcrypto", specifier = "==1.5.7" }, { name = "kubernetes", specifier = "==35.0.0" }, { name = "ldap3", specifier = "==2.9.1" }, - { name = "lxml", specifier = "==6.0.2" }, - { name = "msgraph-sdk", specifier = "==1.55.0" }, + { name = "lxml", specifier = "==6.1.0" }, + { name = "msgraph-sdk", specifier = "==1.56.0" }, { name = "opencontainers", git = "https://github.com/vsoch/oci-python?rev=ceb4fcc090851717a3069d78e85ceb1e86c2740c" }, - { name = "packaging", specifier = "==26.0" }, - { name = "paramiko", specifier = "==4.0.0" }, - { name = "psycopg", extras = ["c", "pool"], specifier = "==3.3.3" }, - { name = "pydantic", specifier = "==2.12.5" }, + { name = "packaging", specifier = "==26.2" }, + { name = "paramiko", specifier = "==5.0.0" }, + { name = "psycopg", extras = ["c", "pool"], specifier = "==3.3.4" }, + { name = "pydantic", specifier = "==2.13.4" }, { name = "pydantic-scim", specifier = "==0.0.8" }, { name = "pyjwt", specifier = "==2.11.0" }, { name = "pyrad", specifier = "==2.5.4" }, - { name = "python-kadmin-rs", specifier = "==0.7.0" }, + { name = "python-kadmin-rs", specifier = "==0.7.2" }, { name = "pyyaml", specifier = "==6.0.3" }, { name = "requests-oauthlib", specifier = "==2.0.0" }, { name = "scim2-filter-parser", specifier = "==0.7.0" }, - { name = "sentry-sdk", specifier = "==2.55.0" }, + { name = "sentry-sdk", specifier = "==2.59.0" }, { name = "service-identity", specifier = "==24.2.0" }, { name = "setproctitle", specifier = "==1.3.7" }, { name = "structlog", specifier = "==25.5.0" }, { name = "swagger-spec-validator", specifier = "==3.0.4" }, - { name = "twilio", specifier = "==9.10.3" }, - { name = "ua-parser", specifier = "==1.0.1" }, + { name = "twilio", specifier = "==9.10.9" }, + { name = "ua-parser", specifier = "==1.0.2" }, { name = "unidecode", specifier = "==1.4.0" }, { name = "urllib3", specifier = "<3" }, - { name = "uvicorn", extras = ["standard"], specifier = "==0.42.0" }, + { name = "uvicorn", extras = ["standard"], specifier = "==0.46.0" }, { name = "watchdog", specifier = "==6.0.0" }, { name = "webauthn", specifier = "==2.7.1" }, { name = "wsproto", specifier = "==1.3.2" }, @@ -385,39 +385,39 @@ requires-dist = [ [package.metadata.requires-dev] dev = [ - { name = "aws-cdk-lib", specifier = "==2.244.0" }, + { name = "aws-cdk-lib", specifier = "==2.252.0" }, { name = "bandit", specifier = "==1.9.4" }, { name = "black", specifier = "==26.3.1" }, { name = "bpython", specifier = "==0.26" }, { name = "colorama", specifier = "==0.4.6" }, - { name = "constructs", specifier = "==10.5.1" }, + { name = "constructs", specifier = "==10.6.0" }, { name = "coverage", extras = ["toml"], specifier = "==7.13.5" }, { name = "daphne", specifier = "==4.2.1" }, { name = "debugpy", specifier = "==1.8.20" }, - { name = "django-stubs", extras = ["compatible-mypy"], specifier = "==5.2.9" }, - { name = "djangorestframework-stubs", extras = ["compatible-mypy"], specifier = "==3.16.8" }, + { name = "django-stubs", extras = ["compatible-mypy"], specifier = "==6.0.4" }, + { name = "djangorestframework-stubs", extras = ["compatible-mypy"], specifier = "==3.16.9" }, { name = "drf-jsonschema-serializer", specifier = "==3.0.0" }, { name = "freezegun", specifier = "==1.5.5" }, { name = "importlib-metadata", specifier = "==8.7.1" }, { name = "k5test", specifier = "==0.10.4" }, { name = "lxml-stubs", specifier = "==0.5.1" }, - { name = "mypy", specifier = "==1.19.1" }, + { name = "mypy", specifier = "==1.20.2" }, { name = "pdoc", specifier = "==16.0.0" }, - { name = "pytest", specifier = "==9.0.2" }, + { name = "pytest", specifier = "==9.0.3" }, { name = "pytest-django", specifier = "==4.12.0" }, { name = "pytest-flakefinder", specifier = "==1.1.0" }, { name = "pytest-github-actions-annotate-failures", specifier = "==0.4.0" }, - { name = "pytest-randomly", specifier = "==4.0.1" }, + { name = "pytest-randomly", specifier = "==4.1.0" }, { name = "pytest-timeout", specifier = "==2.4.0" }, { name = "requests-mock", specifier = "==1.12.1" }, - { name = "ruff", specifier = "==0.15.7" }, - { name = "selenium", specifier = "==4.41.0" }, - { name = "types-channels", specifier = "==4.3.0.20250822" }, - { name = "types-docker", specifier = "==7.1.0.20260109" }, - { name = "types-jwcrypto", specifier = "==1.5.0.20251102" }, - { name = "types-ldap3", specifier = "==2.9.13.20260319" }, - { name = "types-requests", specifier = "==2.32.4.20260107" }, - { name = "types-zxcvbn", specifier = "==4.5.0.20250809" }, + { name = "ruff", specifier = "==0.15.12" }, + { name = "selenium", specifier = "==4.43.0" }, + { name = "types-channels", specifier = "==4.3.0.20260421" }, + { name = "types-docker", specifier = "==7.1.0.20260409" }, + { name = "types-jwcrypto", specifier = "==1.5.7.20260409" }, + { name = "types-ldap3", specifier = "==2.9.13.20260408" }, + { name = "types-requests", specifier = "==2.33.0.20260503" }, + { name = "types-zxcvbn", specifier = "==4.5.0.20260408" }, ] [[package]] @@ -453,16 +453,16 @@ wheels = [ [[package]] name = "aws-cdk-asset-awscli-v1" -version = "2.2.263" +version = "2.2.273" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "jsii" }, { name = "publication" }, { name = "typeguard" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ad/03/1bf33967bf1e2a196907266152743ec2dff96b842176084646f910dae732/aws_cdk_asset_awscli_v1-2.2.263.tar.gz", hash = "sha256:657605260ace055fac4ae30a6fb84a80504a6e24ce0b1d278913d4db4bafa266", size = 20229495, upload-time = "2026-01-19T17:25:28.242Z" } +sdist = { url = "https://files.pythonhosted.org/packages/50/11/925a1ae8dd7c9fd7e775b405f357970bdf975f54550923c6c755ac24a00d/aws_cdk_asset_awscli_v1-2.2.273.tar.gz", hash = "sha256:6580dad3416e53712db434f81add6fb4a314e1a80f9c57cc42606df1f64c8e0f", size = 20370823, upload-time = "2026-03-30T16:58:42.105Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/29/af/02481a85fdd0b8a2a1fd9b84925591e1113a7a61b014dabe9d3f92dd6a67/aws_cdk_asset_awscli_v1-2.2.263-py3-none-any.whl", hash = "sha256:185150757d4216ea982d7b35596de5b3d767776be00cd78cacce02eaa08f8851", size = 20227990, upload-time = "2026-01-19T17:25:25.692Z" }, + { url = "https://files.pythonhosted.org/packages/3e/eb/817ecd9e0987465114d17808bb8d10907ef64c9ea6029addfab0ab9aa055/aws_cdk_asset_awscli_v1-2.2.273-py3-none-any.whl", hash = "sha256:1a0994afa7b48f63b580603be64c7a99d19ed6777bdf81d3c2435d8b43cf0d71", size = 20369281, upload-time = "2026-03-30T16:58:39.474Z" }, ] [[package]] @@ -481,21 +481,21 @@ wheels = [ [[package]] name = "aws-cdk-cloud-assembly-schema" -version = "52.2.0" +version = "53.20.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "jsii" }, { name = "publication" }, { name = "typeguard" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/81/b3/baf6ba1d34bc4fc8affb7849613978df80b6e97b5d48a885dbc84adf1a97/aws_cdk_cloud_assembly_schema-52.2.0.tar.gz", hash = "sha256:737309e2c7c7e4b46bd669cb9fe8799a36424c9a174523b54833cf1cd12b5e3f", size = 210466, upload-time = "2026-02-23T17:08:48.404Z" } +sdist = { url = "https://files.pythonhosted.org/packages/bf/8a/3b94fbba0d8ca4123eb015ea12a1c8fc5193a1eddcc4d69d31b9575546c8/aws_cdk_cloud_assembly_schema-53.20.0.tar.gz", hash = "sha256:c5d884f7211fd18cc0ce8c4349902ab6a6b3cd8f3c2259c56616a59218c221eb", size = 212292, upload-time = "2026-04-30T11:34:29.29Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/0e/b3/2305e64194634b3c1f0bff38462dd59e617dc1460ac8df1616a5b193d2fe/aws_cdk_cloud_assembly_schema-52.2.0-py3-none-any.whl", hash = "sha256:87b918589f7d627f45e330726f592ec0b39056e1403558f3a1ba8a2134dacd6f", size = 210184, upload-time = "2026-02-23T17:08:46.923Z" }, + { url = "https://files.pythonhosted.org/packages/b5/eb/7bf100ad3603d5fbbebb49b3d48add58abda59c3fa44a4a7eae40da5b8d0/aws_cdk_cloud_assembly_schema-53.20.0-py3-none-any.whl", hash = "sha256:b68ea0754ec830751d4a375ebe84d4c077dc488a2498c3607a2f998bc7e91d73", size = 212140, upload-time = "2026-04-30T11:34:27.044Z" }, ] [[package]] name = "aws-cdk-lib" -version = "2.244.0" +version = "2.252.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "aws-cdk-asset-awscli-v1" }, @@ -506,27 +506,27 @@ dependencies = [ { name = "publication" }, { name = "typeguard" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/59/26/e8cde3e0aa4d475612f3c6f5bb4c7f8680321b030b70b4b1e4d264743d24/aws_cdk_lib-2.244.0.tar.gz", hash = "sha256:c39ba2fe54b47fae301c0b4d291ab3f7ce8e2254bec8428723dfdee9bac9beac", size = 48398419, upload-time = "2026-03-19T17:22:35.933Z" } +sdist = { url = "https://files.pythonhosted.org/packages/0b/2e/468ed756570af782831bc0518b4f187773b036342ce1b6f3d4e13e6127d8/aws_cdk_lib-2.252.0.tar.gz", hash = "sha256:2498d771ab141599c48494bd2564ee9a4fbaade54befa9356811e9454616d0a0", size = 49479070, upload-time = "2026-04-30T12:31:54.452Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/1d/b9/ee73238ed52afdb110b30862b9730d227222a04f47b1f906d58b0b892909/aws_cdk_lib-2.244.0-py3-none-any.whl", hash = "sha256:81d28367acae7c998dbce619e266bc572e5ade69f13fcc5520d5dc4055ce65ac", size = 49049186, upload-time = "2026-03-19T17:21:52.963Z" }, + { url = "https://files.pythonhosted.org/packages/ae/94/32c21ad93dc21554286955fd5ebc68cb91149cc5f7f3154b07927c3fc693/aws_cdk_lib-2.252.0-py3-none-any.whl", hash = "sha256:c96d02582d344ee81ea2ef8a5e22b6e680789973804720ec9f0e95a050257db1", size = 50157828, upload-time = "2026-04-30T12:31:11.041Z" }, ] [[package]] name = "azure-core" -version = "1.38.0" +version = "1.39.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "requests" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/dc/1b/e503e08e755ea94e7d3419c9242315f888fc664211c90d032e40479022bf/azure_core-1.38.0.tar.gz", hash = "sha256:8194d2682245a3e4e3151a667c686464c3786fed7918b394d035bdcd61bb5993", size = 363033, upload-time = "2026-01-12T17:03:05.535Z" } +sdist = { url = "https://files.pythonhosted.org/packages/34/83/bbde3faa84ddcb8eb0eca4b3ffb3221252281db4ce351300fe248c5c70b1/azure_core-1.39.0.tar.gz", hash = "sha256:8a90a562998dd44ce84597590fff6249701b98c0e8797c95fcdd695b54c35d74", size = 367531, upload-time = "2026-03-19T01:31:29.461Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/fc/d8/b8fcba9464f02b121f39de2db2bf57f0b216fe11d014513d666e8634380d/azure_core-1.38.0-py3-none-any.whl", hash = "sha256:ab0c9b2cd71fecb1842d52c965c95285d3cfb38902f6766e4a471f1cd8905335", size = 217825, upload-time = "2026-01-12T17:03:07.291Z" }, + { url = "https://files.pythonhosted.org/packages/7e/d6/8ebcd05b01a580f086ac9a97fb9fac65c09a4b012161cc97c21a336e880b/azure_core-1.39.0-py3-none-any.whl", hash = "sha256:4ac7b70fab5438c3f68770649a78daf97833caa83827f91df9c14e0e0ea7d34f", size = 218318, upload-time = "2026-03-19T01:31:31.25Z" }, ] [[package]] name = "azure-identity" -version = "1.25.1" +version = "1.25.3" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "azure-core" }, @@ -535,9 +535,9 @@ dependencies = [ { name = "msal-extensions" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/06/8d/1a6c41c28a37eab26dc85ab6c86992c700cd3f4a597d9ed174b0e9c69489/azure_identity-1.25.1.tar.gz", hash = "sha256:87ca8328883de6036443e1c37b40e8dc8fb74898240f61071e09d2e369361456", size = 279826, upload-time = "2025-10-06T20:30:02.194Z" } +sdist = { url = "https://files.pythonhosted.org/packages/c5/0e/3a63efb48aa4a5ae2cfca61ee152fbcb668092134d3eb8bfda472dd5c617/azure_identity-1.25.3.tar.gz", hash = "sha256:ab23c0d63015f50b630ef6c6cf395e7262f439ce06e5d07a64e874c724f8d9e6", size = 286304, upload-time = "2026-03-13T01:12:20.892Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/83/7b/5652771e24fff12da9dde4c20ecf4682e606b104f26419d139758cc935a6/azure_identity-1.25.1-py3-none-any.whl", hash = "sha256:e9edd720af03dff020223cd269fa3a61e8f345ea75443858273bcb44844ab651", size = 191317, upload-time = "2025-10-06T20:30:04.251Z" }, + { url = "https://files.pythonhosted.org/packages/49/9a/417b3a533e01953a7c618884df2cb05a71e7b68bdbce4fbdb62349d2a2e8/azure_identity-1.25.3-py3-none-any.whl", hash = "sha256:f4d0b956a8146f30333e071374171f3cfa7bdb8073adb8c3814b65567aa7447c", size = 192138, upload-time = "2026-03-13T01:12:22.951Z" }, ] [[package]] @@ -630,43 +630,43 @@ wheels = [ [[package]] name = "blessed" -version = "1.25.0" +version = "1.38.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "jinxed", marker = "sys_platform == 'win32'" }, { name = "wcwidth" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/33/cd/eed8b82f1fabcb817d84b24d0780b86600b5c3df7ec4f890bcbb2371b0ad/blessed-1.25.0.tar.gz", hash = "sha256:606aebfea69f85915c7ca6a96eb028e0031d30feccc5688e13fd5cec8277b28d", size = 6746381, upload-time = "2025-11-18T18:43:52.71Z" } +sdist = { url = "https://files.pythonhosted.org/packages/9f/1f/f2535d0eb1fb8af7915f96b4d42810345c255bbbca39939a23e59c0695d8/blessed-1.38.0.tar.gz", hash = "sha256:89ce6ec6567f7aced0716b73577b7a1702eb23c667838bb46d7d9bd48c36d1b3", size = 14008103, upload-time = "2026-03-30T22:47:36.787Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/7c/2c/e9b6dd824fb6e76dbd39a308fc6f497320afd455373aac8518ca3eba7948/blessed-1.25.0-py3-none-any.whl", hash = "sha256:e52b9f778b9e10c30b3f17f6b5f5d2208d1e9b53b270f1d94fc61a243fc4708f", size = 95646, upload-time = "2025-11-18T18:43:50.924Z" }, + { url = "https://files.pythonhosted.org/packages/08/81/26113a258b8b4068a7ae528cb1c13f1af2acfa0702368312183013ddc4f4/blessed-1.38.0-py3-none-any.whl", hash = "sha256:905884ae650e41284fa4fd7d0c3eed5e5b4a42be8c2bfb24c90d79fbf26a1490", size = 121251, upload-time = "2026-03-30T22:47:34.138Z" }, ] [[package]] name = "boto3" -version = "1.42.26" +version = "1.42.97" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "botocore" }, { name = "jmespath" }, { name = "s3transfer" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/da/ad/06f48f2d0e9ec91d136602c7009f5f68c84be3655cc6e7e2b59aff82ead4/boto3-1.42.26.tar.gz", hash = "sha256:0fbcf1922e62d180f3644bc1139425821b38d93c1e6ec27409325d2ae86131aa", size = 112877, upload-time = "2026-01-12T20:36:39.6Z" } +sdist = { url = "https://files.pythonhosted.org/packages/55/7d/5c6fa0bb9fd5caf865b9356411793900304328bcd0bc1eda96a32a1368a6/boto3-1.42.97.tar.gz", hash = "sha256:2833dbeda3670ea610ad48dff7d27cdc829dbbfcdfbc6b750b673948e949b6f0", size = 113217, upload-time = "2026-04-27T20:39:17.646Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/fd/0c/094a63b0ab893995b1f2e7ddb5425e11f97403feb90cea0eb770c8905487/boto3-1.42.26-py3-none-any.whl", hash = "sha256:f116cfbe7408e0a9153da363f134d2f1b5008f17ee86af104f0ce59a62be1833", size = 140576, upload-time = "2026-01-12T20:36:38.244Z" }, + { url = "https://files.pythonhosted.org/packages/38/43/84c1888139aa1aaf1dc53f8f914e6ec629e5a571fbafdd42fb2d98ac361f/boto3-1.42.97-py3-none-any.whl", hash = "sha256:966e49f0510af9a64057a902b7df53d4348c447de0d3df4cc855dfd85e058fcd", size = 140556, upload-time = "2026-04-27T20:39:15.509Z" }, ] [[package]] name = "botocore" -version = "1.42.26" +version = "1.42.97" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "jmespath" }, { name = "python-dateutil" }, { name = "urllib3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/67/c9/6ce745d4233aeb3abdb18205739b394f7955087f7603cb324a797adbf8d2/botocore-1.42.26.tar.gz", hash = "sha256:1c8855e3e811f015d930ccfe8751d4be295aae0562133d14b6f0b247cd6fd8d3", size = 14882582, upload-time = "2026-01-12T20:36:29.382Z" } +sdist = { url = "https://files.pythonhosted.org/packages/c6/95/c37edb602948fad2253ffd1bb3dba5b938645bd1845ee4160350136a0f41/botocore-1.42.97.tar.gz", hash = "sha256:5c0bb00e32d16ff6d278cc8c9e10dc3672d9c1d569031635ac3c908a60de8310", size = 15269348, upload-time = "2026-04-27T20:39:05.625Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/61/43/5993eab2114c0de7bbc21985b745aafe3b912f98fc63726c2a54680bb69d/botocore-1.42.26-py3-none-any.whl", hash = "sha256:71171c2d09ac07739f4efce398b15a4a8bc8769c17fb3bc99625e43ed11ad8b7", size = 14554661, upload-time = "2026-01-12T20:36:26.891Z" }, + { url = "https://files.pythonhosted.org/packages/e3/d2/8e025ba1a4e257879af72d06913272311af79673d82fa2581a351b924317/botocore-1.42.97-py3-none-any.whl", hash = "sha256:77d2c8ce1bc592d3fbd7c01c35836f4a5b0cac2ca03ccdf6ffc60faa16b5fadc", size = 14950367, upload-time = "2026-04-27T20:39:01.261Z" }, ] [[package]] @@ -688,11 +688,11 @@ wheels = [ [[package]] name = "cachetools" -version = "7.0.5" +version = "7.1.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/af/dd/57fe3fdb6e65b25a5987fd2cdc7e22db0aef508b91634d2e57d22928d41b/cachetools-7.0.5.tar.gz", hash = "sha256:0cd042c24377200c1dcd225f8b7b12b0ca53cc2c961b43757e774ebe190fd990", size = 37367, upload-time = "2026-03-09T20:51:29.451Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ff/e2/85f227594656000ff4d8adadae91a21f536d4a84c6c716a86bd6685874be/cachetools-7.1.1.tar.gz", hash = "sha256:27bdf856d68fd3c71c26c01b5edc312124ed427524d1ddb31aa2b7746fe20d4b", size = 40202, upload-time = "2026-05-03T20:00:29.391Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/06/f3/39cf3367b8107baa44f861dc802cbf16263c945b62d8265d36034fc07bea/cachetools-7.0.5-py3-none-any.whl", hash = "sha256:46bc8ebefbe485407621d0a4264b23c080cedd913921bad7ac3ed2f26c183114", size = 13918, upload-time = "2026-03-09T20:51:27.33Z" }, + { url = "https://files.pythonhosted.org/packages/bf/0f/f897abe4ea0a8c408ae65c8c83bffab4936ad65d6032d4fb4cd35bbdc3ee/cachetools-7.1.1-py3-none-any.whl", hash = "sha256:0335cd7a0952d2b22327441fb0628139e234c565559eeb91a8a4ac7551c5353d", size = 16775, upload-time = "2026-05-03T20:00:27.857Z" }, ] [[package]] @@ -710,27 +710,27 @@ wheels = [ [[package]] name = "cbor2" -version = "5.8.0" +version = "5.9.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d9/8e/8b4fdde28e42ffcd741a37f4ffa9fb59cd4fe01625b544dfcfd9ccb54f01/cbor2-5.8.0.tar.gz", hash = "sha256:b19c35fcae9688ac01ef75bad5db27300c2537eb4ee00ed07e05d8456a0d4931", size = 107825, upload-time = "2025-12-30T18:44:22.455Z" } +sdist = { url = "https://files.pythonhosted.org/packages/bd/cb/09939728be094d155b5d4ac262e39877875f5f7e36eea66beb359f647bd0/cbor2-5.9.0.tar.gz", hash = "sha256:85c7a46279ac8f226e1059275221e6b3d0e370d2bb6bd0500f9780781615bcea", size = 111231, upload-time = "2026-03-22T15:56:50.638Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/4b/0c/0654233d7543ac8a50f4785f172430ddc97538ba418eb305d6e529d1a120/cbor2-5.8.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:ad72381477133046ce217617d839ea4e9454f8b77d9a6351b229e214102daeb7", size = 70710, upload-time = "2025-12-30T18:44:03.209Z" }, - { url = "https://files.pythonhosted.org/packages/84/62/4671d24e557d7f5a74a01b422c538925140c0495e57decde7e566f91d029/cbor2-5.8.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6da25190fad3434ce99876b11d4ca6b8828df6ca232cf7344cd14ae1166fb718", size = 285005, upload-time = "2025-12-30T18:44:05.109Z" }, - { url = "https://files.pythonhosted.org/packages/87/85/0c67d763a08e848c9a80d7e4723ba497cce676f41bc7ca1828ae90a0a872/cbor2-5.8.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c13919e3a24c5a6d286551fa288848a4cedc3e507c58a722ccd134e461217d99", size = 282435, upload-time = "2025-12-30T18:44:06.465Z" }, - { url = "https://files.pythonhosted.org/packages/b2/01/0650972b4dbfbebcfbe37cbba7fc3cd9019a8da6397ab3446e07175e342b/cbor2-5.8.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:f8c40d32e5972047a777f9bf730870828f3cf1c43b3eb96fd0429c57a1d3b9e6", size = 277493, upload-time = "2025-12-30T18:44:07.609Z" }, - { url = "https://files.pythonhosted.org/packages/b3/6c/7704a4f32adc7f10f3b41ec067f500a4458f7606397af5e4cf2d368fd288/cbor2-5.8.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:7627894bc0b3d5d0807f31e3107e11b996205470c4429dc2bb4ef8bfe7f64e1e", size = 276085, upload-time = "2025-12-30T18:44:09.021Z" }, - { url = "https://files.pythonhosted.org/packages/88/6d/e43452347630efe8133f5304127539100d937c138c0996d27ec63963ec2c/cbor2-5.8.0-cp314-cp314-win_amd64.whl", hash = "sha256:b51c5e59becae746ca4de2bbaa8a2f5c64a68fec05cea62941b1a84a8335f7d1", size = 71657, upload-time = "2025-12-30T18:44:10.162Z" }, - { url = "https://files.pythonhosted.org/packages/8b/66/9a780ef34ab10a0437666232e885378cdd5f60197b1b5e61a62499e5a10a/cbor2-5.8.0-cp314-cp314-win_arm64.whl", hash = "sha256:53b630f4db4b9f477ad84077283dd17ecf9894738aa17ef4938c369958e02a71", size = 67171, upload-time = "2025-12-30T18:44:11.619Z" }, - { url = "https://files.pythonhosted.org/packages/d6/4f/101071f880b4da05771128c0b89f41e334cff044dee05fb013c8f4be661c/cbor2-5.8.0-py3-none-any.whl", hash = "sha256:3727d80f539567b03a7aa11890e57798c67092c38df9e6c23abb059e0f65069c", size = 24374, upload-time = "2025-12-30T18:44:21.476Z" }, + { url = "https://files.pythonhosted.org/packages/08/7d/9ccc36d10ef96e6038e48046ebe1ce35a1e7814da0e1e204d09e6ef09b8d/cbor2-5.9.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:23606d31ba1368bd1b6602e3020ee88fe9523ca80e8630faf6b2fc904fd84560", size = 71500, upload-time = "2026-03-22T15:56:31.876Z" }, + { url = "https://files.pythonhosted.org/packages/70/e1/a6cca2cc72e13f00030c6a649f57ae703eb2c620806ab70c40db8eab33fa/cbor2-5.9.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0322296b9d52f55880e300ba8ba09ecf644303b99b51138bbb1c0fb644fa7c3e", size = 286953, upload-time = "2026-03-22T15:56:33.292Z" }, + { url = "https://files.pythonhosted.org/packages/08/3c/24cd5ef488a957d90e016f200a3aad820e4c2f85edd61c9fe4523007a1ee/cbor2-5.9.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:422817286c1d0ce947fb2f7eca9212b39bddd7231e8b452e2d2cc52f15332dba", size = 285454, upload-time = "2026-03-22T15:56:34.703Z" }, + { url = "https://files.pythonhosted.org/packages/a4/35/dca96818494c0ba47cdd73e8d809b27fa91f8fa0ce32a068a09237687454/cbor2-5.9.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:9a4907e0c3035bb8836116854ed8e56d8aef23909d601fa59706320897ec2551", size = 279441, upload-time = "2026-03-22T15:56:35.888Z" }, + { url = "https://files.pythonhosted.org/packages/a4/44/d3362378b16e53cf7e535a3f5aed8476e2109068154e24e31981ef5bde9e/cbor2-5.9.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:fb7afe77f8d269e42d7c4b515c6fd14f1ccc0625379fb6829b269f493d16eddd", size = 279673, upload-time = "2026-03-22T15:56:37.08Z" }, + { url = "https://files.pythonhosted.org/packages/43/d1/3533a697e5842fff7c2f64912eb251f8dcab3a8b5d88e228d6eebc3b5021/cbor2-5.9.0-cp314-cp314-win_amd64.whl", hash = "sha256:86baf870d4c0bfc6f79de3801f3860a84ab76d9c8b0abb7f081f2c14c38d79d3", size = 71940, upload-time = "2026-03-22T15:56:38.366Z" }, + { url = "https://files.pythonhosted.org/packages/ff/e2/c6ba75f3fb25dfa15ab6999cc8709c821987e9ed8e375d7f58539261bcb9/cbor2-5.9.0-cp314-cp314-win_arm64.whl", hash = "sha256:7221483fad0c63afa4244624d552abf89d7dfdbc5f5edfc56fc1ff2b4b818975", size = 67639, upload-time = "2026-03-22T15:56:39.39Z" }, + { url = "https://files.pythonhosted.org/packages/42/ff/b83492b096fbef26e9cb62c1a4bf2d3cef579ea7b33138c6c37c4ae66f67/cbor2-5.9.0-py3-none-any.whl", hash = "sha256:27695cbd70c90b8de5c4a284642c2836449b14e2c2e07e3ffe0744cb7669a01b", size = 24627, upload-time = "2026-03-22T15:56:48.847Z" }, ] [[package]] name = "certifi" -version = "2026.1.4" +version = "2026.4.22" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e0/2d/a891ca51311197f6ad14a7ef42e2399f36cf2f9bd44752b3dc4eab60fdc5/certifi-2026.1.4.tar.gz", hash = "sha256:ac726dd470482006e014ad384921ed6438c457018f4b3d204aea4281258b2120", size = 154268, upload-time = "2026-01-04T02:42:41.825Z" } +sdist = { url = "https://files.pythonhosted.org/packages/25/ee/6caf7a40c36a1220410afe15a1cc64993a1f864871f698c0f93acb72842a/certifi-2026.4.22.tar.gz", hash = "sha256:8d455352a37b71bf76a79caa83a3d6c25afee4a385d632127b6afb3963f1c580", size = 137077, upload-time = "2026-04-22T11:26:11.191Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e6/ad/3cc14f097111b4de0040c83a525973216457bbeeb63739ef1ed275c1c021/certifi-2026.1.4-py3-none-any.whl", hash = "sha256:9943707519e4add1115f44c2bc244f782c0249876bf51b6599fee1ffbedd685c", size = 152900, upload-time = "2026-01-04T02:42:40.15Z" }, + { url = "https://files.pythonhosted.org/packages/22/30/7cd8fdcdfbc5b869528b079bfb76dcdf6056b1a2097a662e5e8c04f42965/certifi-2026.4.22-py3-none-any.whl", hash = "sha256:3cb2210c8f88ba2318d29b0388d1023c8492ff72ecdde4ebdaddbb13a31b1c4a", size = 135707, upload-time = "2026-04-22T11:26:09.372Z" }, ] [[package]] @@ -781,39 +781,55 @@ wheels = [ [[package]] name = "charset-normalizer" -version = "3.4.4" +version = "3.4.7" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/13/69/33ddede1939fdd074bce5434295f38fae7136463422fe4fd3e0e89b98062/charset_normalizer-3.4.4.tar.gz", hash = "sha256:94537985111c35f28720e43603b8e7b43a6ecfb2ce1d3058bbe955b73404e21a", size = 129418, upload-time = "2025-10-14T04:42:32.879Z" } +sdist = { url = "https://files.pythonhosted.org/packages/e7/a1/67fe25fac3c7642725500a3f6cfe5821ad557c3abb11c9d20d12c7008d3e/charset_normalizer-3.4.7.tar.gz", hash = "sha256:ae89db9e5f98a11a4bf50407d4363e7b09b31e55bc117b4f7d80aab97ba009e5", size = 144271, upload-time = "2026-04-02T09:28:39.342Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/2a/35/7051599bd493e62411d6ede36fd5af83a38f37c4767b92884df7301db25d/charset_normalizer-3.4.4-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:da3326d9e65ef63a817ecbcc0df6e94463713b754fe293eaa03da99befb9a5bd", size = 207746, upload-time = "2025-10-14T04:41:33.773Z" }, - { url = "https://files.pythonhosted.org/packages/10/9a/97c8d48ef10d6cd4fcead2415523221624bf58bcf68a802721a6bc807c8f/charset_normalizer-3.4.4-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8af65f14dc14a79b924524b1e7fffe304517b2bff5a58bf64f30b98bbc5079eb", size = 147889, upload-time = "2025-10-14T04:41:34.897Z" }, - { url = "https://files.pythonhosted.org/packages/10/bf/979224a919a1b606c82bd2c5fa49b5c6d5727aa47b4312bb27b1734f53cd/charset_normalizer-3.4.4-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:74664978bb272435107de04e36db5a9735e78232b85b77d45cfb38f758efd33e", size = 143641, upload-time = "2025-10-14T04:41:36.116Z" }, - { url = "https://files.pythonhosted.org/packages/ba/33/0ad65587441fc730dc7bd90e9716b30b4702dc7b617e6ba4997dc8651495/charset_normalizer-3.4.4-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:752944c7ffbfdd10c074dc58ec2d5a8a4cd9493b314d367c14d24c17684ddd14", size = 160779, upload-time = "2025-10-14T04:41:37.229Z" }, - { url = "https://files.pythonhosted.org/packages/67/ed/331d6b249259ee71ddea93f6f2f0a56cfebd46938bde6fcc6f7b9a3d0e09/charset_normalizer-3.4.4-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d1f13550535ad8cff21b8d757a3257963e951d96e20ec82ab44bc64aeb62a191", size = 159035, upload-time = "2025-10-14T04:41:38.368Z" }, - { url = "https://files.pythonhosted.org/packages/67/ff/f6b948ca32e4f2a4576aa129d8bed61f2e0543bf9f5f2b7fc3758ed005c9/charset_normalizer-3.4.4-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ecaae4149d99b1c9e7b88bb03e3221956f68fd6d50be2ef061b2381b61d20838", size = 152542, upload-time = "2025-10-14T04:41:39.862Z" }, - { url = "https://files.pythonhosted.org/packages/16/85/276033dcbcc369eb176594de22728541a925b2632f9716428c851b149e83/charset_normalizer-3.4.4-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:cb6254dc36b47a990e59e1068afacdcd02958bdcce30bb50cc1700a8b9d624a6", size = 149524, upload-time = "2025-10-14T04:41:41.319Z" }, - { url = "https://files.pythonhosted.org/packages/9e/f2/6a2a1f722b6aba37050e626530a46a68f74e63683947a8acff92569f979a/charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:c8ae8a0f02f57a6e61203a31428fa1d677cbe50c93622b4149d5c0f319c1d19e", size = 150395, upload-time = "2025-10-14T04:41:42.539Z" }, - { url = "https://files.pythonhosted.org/packages/60/bb/2186cb2f2bbaea6338cad15ce23a67f9b0672929744381e28b0592676824/charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:47cc91b2f4dd2833fddaedd2893006b0106129d4b94fdb6af1f4ce5a9965577c", size = 143680, upload-time = "2025-10-14T04:41:43.661Z" }, - { url = "https://files.pythonhosted.org/packages/7d/a5/bf6f13b772fbb2a90360eb620d52ed8f796f3c5caee8398c3b2eb7b1c60d/charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:82004af6c302b5d3ab2cfc4cc5f29db16123b1a8417f2e25f9066f91d4411090", size = 162045, upload-time = "2025-10-14T04:41:44.821Z" }, - { url = "https://files.pythonhosted.org/packages/df/c5/d1be898bf0dc3ef9030c3825e5d3b83f2c528d207d246cbabe245966808d/charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:2b7d8f6c26245217bd2ad053761201e9f9680f8ce52f0fcd8d0755aeae5b2152", size = 149687, upload-time = "2025-10-14T04:41:46.442Z" }, - { url = "https://files.pythonhosted.org/packages/a5/42/90c1f7b9341eef50c8a1cb3f098ac43b0508413f33affd762855f67a410e/charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:799a7a5e4fb2d5898c60b640fd4981d6a25f1c11790935a44ce38c54e985f828", size = 160014, upload-time = "2025-10-14T04:41:47.631Z" }, - { url = "https://files.pythonhosted.org/packages/76/be/4d3ee471e8145d12795ab655ece37baed0929462a86e72372fd25859047c/charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:99ae2cffebb06e6c22bdc25801d7b30f503cc87dbd283479e7b606f70aff57ec", size = 154044, upload-time = "2025-10-14T04:41:48.81Z" }, - { url = "https://files.pythonhosted.org/packages/b0/6f/8f7af07237c34a1defe7defc565a9bc1807762f672c0fde711a4b22bf9c0/charset_normalizer-3.4.4-cp314-cp314-win32.whl", hash = "sha256:f9d332f8c2a2fcbffe1378594431458ddbef721c1769d78e2cbc06280d8155f9", size = 99940, upload-time = "2025-10-14T04:41:49.946Z" }, - { url = "https://files.pythonhosted.org/packages/4b/51/8ade005e5ca5b0d80fb4aff72a3775b325bdc3d27408c8113811a7cbe640/charset_normalizer-3.4.4-cp314-cp314-win_amd64.whl", hash = "sha256:8a6562c3700cce886c5be75ade4a5db4214fda19fede41d9792d100288d8f94c", size = 107104, upload-time = "2025-10-14T04:41:51.051Z" }, - { url = "https://files.pythonhosted.org/packages/da/5f/6b8f83a55bb8278772c5ae54a577f3099025f9ade59d0136ac24a0df4bde/charset_normalizer-3.4.4-cp314-cp314-win_arm64.whl", hash = "sha256:de00632ca48df9daf77a2c65a484531649261ec9f25489917f09e455cb09ddb2", size = 100743, upload-time = "2025-10-14T04:41:52.122Z" }, - { url = "https://files.pythonhosted.org/packages/0a/4c/925909008ed5a988ccbb72dcc897407e5d6d3bd72410d69e051fc0c14647/charset_normalizer-3.4.4-py3-none-any.whl", hash = "sha256:7a32c560861a02ff789ad905a2fe94e3f840803362c84fecf1851cb4cf3dc37f", size = 53402, upload-time = "2025-10-14T04:42:31.76Z" }, + { url = "https://files.pythonhosted.org/packages/97/c8/c67cb8c70e19ef1960b97b22ed2a1567711de46c4ddf19799923adc836c2/charset_normalizer-3.4.7-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:c36c333c39be2dbca264d7803333c896ab8fa7d4d6f0ab7edb7dfd7aea6e98c0", size = 309234, upload-time = "2026-04-02T09:27:07.194Z" }, + { url = "https://files.pythonhosted.org/packages/99/85/c091fdee33f20de70d6c8b522743b6f831a2f1cd3ff86de4c6a827c48a76/charset_normalizer-3.4.7-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1c2aed2e5e41f24ea8ef1590b8e848a79b56f3a5564a65ceec43c9d692dc7d8a", size = 208042, upload-time = "2026-04-02T09:27:08.749Z" }, + { url = "https://files.pythonhosted.org/packages/87/1c/ab2ce611b984d2fd5d86a5a8a19c1ae26acac6bad967da4967562c75114d/charset_normalizer-3.4.7-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:54523e136b8948060c0fa0bc7b1b50c32c186f2fceee897a495406bb6e311d2b", size = 228706, upload-time = "2026-04-02T09:27:09.951Z" }, + { url = "https://files.pythonhosted.org/packages/a8/29/2b1d2cb00bf085f59d29eb773ce58ec2d325430f8c216804a0a5cd83cbca/charset_normalizer-3.4.7-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:715479b9a2802ecac752a3b0efa2b0b60285cf962ee38414211abdfccc233b41", size = 224727, upload-time = "2026-04-02T09:27:11.175Z" }, + { url = "https://files.pythonhosted.org/packages/47/5c/032c2d5a07fe4d4855fea851209cca2b6f03ebeb6d4e3afdb3358386a684/charset_normalizer-3.4.7-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bd6c2a1c7573c64738d716488d2cdd3c00e340e4835707d8fdb8dc1a66ef164e", size = 215882, upload-time = "2026-04-02T09:27:12.446Z" }, + { url = "https://files.pythonhosted.org/packages/2c/c2/356065d5a8b78ed04499cae5f339f091946a6a74f91e03476c33f0ab7100/charset_normalizer-3.4.7-cp314-cp314-manylinux_2_31_armv7l.whl", hash = "sha256:c45e9440fb78f8ddabcf714b68f936737a121355bf59f3907f4e17721b9d1aae", size = 200860, upload-time = "2026-04-02T09:27:13.721Z" }, + { url = "https://files.pythonhosted.org/packages/0c/cd/a32a84217ced5039f53b29f460962abb2d4420def55afabe45b1c3c7483d/charset_normalizer-3.4.7-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:3534e7dcbdcf757da6b85a0bbf5b6868786d5982dd959b065e65481644817a18", size = 211564, upload-time = "2026-04-02T09:27:15.272Z" }, + { url = "https://files.pythonhosted.org/packages/44/86/58e6f13ce26cc3b8f4a36b94a0f22ae2f00a72534520f4ae6857c4b81f89/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:e8ac484bf18ce6975760921bb6148041faa8fef0547200386ea0b52b5d27bf7b", size = 211276, upload-time = "2026-04-02T09:27:16.834Z" }, + { url = "https://files.pythonhosted.org/packages/8f/fe/d17c32dc72e17e155e06883efa84514ca375f8a528ba2546bee73fc4df81/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:a5fe03b42827c13cdccd08e6c0247b6a6d4b5e3cdc53fd1749f5896adcdc2356", size = 201238, upload-time = "2026-04-02T09:27:18.229Z" }, + { url = "https://files.pythonhosted.org/packages/6a/29/f33daa50b06525a237451cdb6c69da366c381a3dadcd833fa5676bc468b3/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:2d6eb928e13016cea4f1f21d1e10c1cebd5a421bc57ddf5b1142ae3f86824fab", size = 230189, upload-time = "2026-04-02T09:27:19.445Z" }, + { url = "https://files.pythonhosted.org/packages/b6/6e/52c84015394a6a0bdcd435210a7e944c5f94ea1055f5cc5d56c5fe368e7b/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:e74327fb75de8986940def6e8dee4f127cc9752bee7355bb323cc5b2659b6d46", size = 211352, upload-time = "2026-04-02T09:27:20.79Z" }, + { url = "https://files.pythonhosted.org/packages/8c/d7/4353be581b373033fb9198bf1da3cf8f09c1082561e8e922aa7b39bf9fe8/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:d6038d37043bced98a66e68d3aa2b6a35505dc01328cd65217cefe82f25def44", size = 227024, upload-time = "2026-04-02T09:27:22.063Z" }, + { url = "https://files.pythonhosted.org/packages/30/45/99d18aa925bd1740098ccd3060e238e21115fffbfdcb8f3ece837d0ace6c/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:7579e913a5339fb8fa133f6bbcfd8e6749696206cf05acdbdca71a1b436d8e72", size = 217869, upload-time = "2026-04-02T09:27:23.486Z" }, + { url = "https://files.pythonhosted.org/packages/5c/05/5ee478aa53f4bb7996482153d4bfe1b89e0f087f0ab6b294fcf92d595873/charset_normalizer-3.4.7-cp314-cp314-win32.whl", hash = "sha256:5b77459df20e08151cd6f8b9ef8ef1f961ef73d85c21a555c7eed5b79410ec10", size = 148541, upload-time = "2026-04-02T09:27:25.146Z" }, + { url = "https://files.pythonhosted.org/packages/48/77/72dcb0921b2ce86420b2d79d454c7022bf5be40202a2a07906b9f2a35c97/charset_normalizer-3.4.7-cp314-cp314-win_amd64.whl", hash = "sha256:92a0a01ead5e668468e952e4238cccd7c537364eb7d851ab144ab6627dbbe12f", size = 159634, upload-time = "2026-04-02T09:27:26.642Z" }, + { url = "https://files.pythonhosted.org/packages/c6/a3/c2369911cd72f02386e4e340770f6e158c7980267da16af8f668217abaa0/charset_normalizer-3.4.7-cp314-cp314-win_arm64.whl", hash = "sha256:67f6279d125ca0046a7fd386d01b311c6363844deac3e5b069b514ba3e63c246", size = 148384, upload-time = "2026-04-02T09:27:28.271Z" }, + { url = "https://files.pythonhosted.org/packages/94/09/7e8a7f73d24dba1f0035fbbf014d2c36828fc1bf9c88f84093e57d315935/charset_normalizer-3.4.7-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:effc3f449787117233702311a1b7d8f59cba9ced946ba727bdc329ec69028e24", size = 330133, upload-time = "2026-04-02T09:27:29.474Z" }, + { url = "https://files.pythonhosted.org/packages/8d/da/96975ddb11f8e977f706f45cddd8540fd8242f71ecdb5d18a80723dcf62c/charset_normalizer-3.4.7-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:fbccdc05410c9ee21bbf16a35f4c1d16123dcdeb8a1d38f33654fa21d0234f79", size = 216257, upload-time = "2026-04-02T09:27:30.793Z" }, + { url = "https://files.pythonhosted.org/packages/e5/e8/1d63bf8ef2d388e95c64b2098f45f84758f6d102a087552da1485912637b/charset_normalizer-3.4.7-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:733784b6d6def852c814bce5f318d25da2ee65dd4839a0718641c696e09a2960", size = 234851, upload-time = "2026-04-02T09:27:32.44Z" }, + { url = "https://files.pythonhosted.org/packages/9b/40/e5ff04233e70da2681fa43969ad6f66ca5611d7e669be0246c4c7aaf6dc8/charset_normalizer-3.4.7-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a89c23ef8d2c6b27fd200a42aa4ac72786e7c60d40efdc76e6011260b6e949c4", size = 233393, upload-time = "2026-04-02T09:27:34.03Z" }, + { url = "https://files.pythonhosted.org/packages/be/c1/06c6c49d5a5450f76899992f1ee40b41d076aee9279b49cf9974d2f313d5/charset_normalizer-3.4.7-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6c114670c45346afedc0d947faf3c7f701051d2518b943679c8ff88befe14f8e", size = 223251, upload-time = "2026-04-02T09:27:35.369Z" }, + { url = "https://files.pythonhosted.org/packages/2b/9f/f2ff16fb050946169e3e1f82134d107e5d4ae72647ec8a1b1446c148480f/charset_normalizer-3.4.7-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:a180c5e59792af262bf263b21a3c49353f25945d8d9f70628e73de370d55e1e1", size = 206609, upload-time = "2026-04-02T09:27:36.661Z" }, + { url = "https://files.pythonhosted.org/packages/69/d5/a527c0cd8d64d2eab7459784fb4169a0ac76e5a6fc5237337982fd61347e/charset_normalizer-3.4.7-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:3c9a494bc5ec77d43cea229c4f6db1e4d8fe7e1bbffa8b6f0f0032430ff8ab44", size = 220014, upload-time = "2026-04-02T09:27:38.019Z" }, + { url = "https://files.pythonhosted.org/packages/7e/80/8a7b8104a3e203074dc9aa2c613d4b726c0e136bad1cc734594b02867972/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:8d828b6667a32a728a1ad1d93957cdf37489c57b97ae6c4de2860fa749b8fc1e", size = 218979, upload-time = "2026-04-02T09:27:39.37Z" }, + { url = "https://files.pythonhosted.org/packages/02/9a/b759b503d507f375b2b5c153e4d2ee0a75aa215b7f2489cf314f4541f2c0/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:cf1493cd8607bec4d8a7b9b004e699fcf8f9103a9284cc94962cb73d20f9d4a3", size = 209238, upload-time = "2026-04-02T09:27:40.722Z" }, + { url = "https://files.pythonhosted.org/packages/c2/4e/0f3f5d47b86bdb79256e7290b26ac847a2832d9a4033f7eb2cd4bcf4bb5b/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:0c96c3b819b5c3e9e165495db84d41914d6894d55181d2d108cc1a69bfc9cce0", size = 236110, upload-time = "2026-04-02T09:27:42.33Z" }, + { url = "https://files.pythonhosted.org/packages/96/23/bce28734eb3ed2c91dcf93abeb8a5cf393a7b2749725030bb630e554fdd8/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:752a45dc4a6934060b3b0dab47e04edc3326575f82be64bc4fc293914566503e", size = 219824, upload-time = "2026-04-02T09:27:43.924Z" }, + { url = "https://files.pythonhosted.org/packages/2c/6f/6e897c6984cc4d41af319b077f2f600fc8214eb2fe2d6bcb79141b882400/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:8778f0c7a52e56f75d12dae53ae320fae900a8b9b4164b981b9c5ce059cd1fcb", size = 233103, upload-time = "2026-04-02T09:27:45.348Z" }, + { url = "https://files.pythonhosted.org/packages/76/22/ef7bd0fe480a0ae9b656189ec00744b60933f68b4f42a7bb06589f6f576a/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:ce3412fbe1e31eb81ea42f4169ed94861c56e643189e1e75f0041f3fe7020abe", size = 225194, upload-time = "2026-04-02T09:27:46.706Z" }, + { url = "https://files.pythonhosted.org/packages/c5/a7/0e0ab3e0b5bc1219bd80a6a0d4d72ca74d9250cb2382b7c699c147e06017/charset_normalizer-3.4.7-cp314-cp314t-win32.whl", hash = "sha256:c03a41a8784091e67a39648f70c5f97b5b6a37f216896d44d2cdcb82615339a0", size = 159827, upload-time = "2026-04-02T09:27:48.053Z" }, + { url = "https://files.pythonhosted.org/packages/7a/1d/29d32e0fb40864b1f878c7f5a0b343ae676c6e2b271a2d55cc3a152391da/charset_normalizer-3.4.7-cp314-cp314t-win_amd64.whl", hash = "sha256:03853ed82eeebbce3c2abfdbc98c96dc205f32a79627688ac9a27370ea61a49c", size = 174168, upload-time = "2026-04-02T09:27:49.795Z" }, + { url = "https://files.pythonhosted.org/packages/de/32/d92444ad05c7a6e41fb2036749777c163baf7a0301a040cb672d6b2b1ae9/charset_normalizer-3.4.7-cp314-cp314t-win_arm64.whl", hash = "sha256:c35abb8bfff0185efac5878da64c45dafd2b37fb0383add1be155a763c1f083d", size = 153018, upload-time = "2026-04-02T09:27:51.116Z" }, + { url = "https://files.pythonhosted.org/packages/db/8f/61959034484a4a7c527811f4721e75d02d653a35afb0b6054474d8185d4c/charset_normalizer-3.4.7-py3-none-any.whl", hash = "sha256:3dce51d0f5e7951f8bb4900c257dad282f49190fdbebecd4ba99bcc41fef404d", size = 61958, upload-time = "2026-04-02T09:28:37.794Z" }, ] [[package]] name = "click" -version = "8.3.1" +version = "8.3.3" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/3d/fa/656b739db8587d7b5dfa22e22ed02566950fbfbcdc20311993483657a5c0/click-8.3.1.tar.gz", hash = "sha256:12ff4785d337a1bb490bb7e9c2b1ee5da3112e94a8622f26a6c77f5d2fc6842a", size = 295065, upload-time = "2025-11-15T20:45:42.706Z" } +sdist = { url = "https://files.pythonhosted.org/packages/bb/63/f9e1ea081ce35720d8b92acde70daaedace594dc93b693c869e0d5910718/click-8.3.3.tar.gz", hash = "sha256:398329ad4837b2ff7cbe1dd166a4c0f8900c3ca3a218de04466f38f6497f18a2", size = 328061, upload-time = "2026-04-22T15:11:27.506Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/98/78/01c019cdb5d6498122777c1a43056ebb3ebfeef2076d9d026bfe15583b2b/click-8.3.1-py3-none-any.whl", hash = "sha256:981153a64e25f12d547d3426c367a4857371575ee7ad18df2a6183ab0545b2a6", size = 108274, upload-time = "2025-11-15T20:45:41.139Z" }, + { url = "https://files.pythonhosted.org/packages/ae/44/c1221527f6a71a01ec6fbad7fa78f1d50dfa02217385cf0fa3eec7087d59/click-8.3.3-py3-none-any.whl", hash = "sha256:a2bf429bb3033c89fa4936ffb35d5cb471e3719e1f3c8a7c3fff0b8314305613", size = 110502, upload-time = "2026-04-22T15:11:25.044Z" }, ] [[package]] @@ -836,16 +852,16 @@ wheels = [ [[package]] name = "constructs" -version = "10.5.1" +version = "10.6.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "jsii" }, { name = "publication" }, { name = "typeguard" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/df/a7/1d87d7327aaa8662f7525b064b6c0524e4b3985092840e6a568f5eb4a7d6/constructs-10.5.1.tar.gz", hash = "sha256:c0e90bb2b9c2782f292017820b91714321cb78393c8965c9362b0b624bfaf23b", size = 68165, upload-time = "2026-02-19T09:56:32.925Z" } +sdist = { url = "https://files.pythonhosted.org/packages/91/13/f57364d14c818108a47e124d1a4cfbee7c9f69ab1263ab59a7087028be18/constructs-10.6.0.tar.gz", hash = "sha256:bc55d1d390142424861e5ff5c6b8c243c4bae18fe7302e0939c2003f329ba365", size = 68788, upload-time = "2026-03-23T09:00:54.242Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c3/20/dff420181946bcaba48dba3f0c11db202c8441eda927f281ad78912cf777/constructs-10.5.1-py3-none-any.whl", hash = "sha256:fc5c14f6b2770c8542a43e298aa29b63dee4b18701763e8c0fdce202624c3a7c", size = 66344, upload-time = "2026-02-19T09:56:31.311Z" }, + { url = "https://files.pythonhosted.org/packages/fc/38/6de46d122a2fcd275a5f1fa4ad1d8d2058afd6b72d8db5f0c125515cbb5c/constructs-10.6.0-py3-none-any.whl", hash = "sha256:ad4ffabdb53c17cde00fb94e441a1ba9fddac57c92ad49d263f8dbd416cec513", size = 66969, upload-time = "2026-03-23T09:00:53.041Z" }, ] [[package]] @@ -901,55 +917,55 @@ wheels = [ [[package]] name = "cryptography" -version = "46.0.5" +version = "48.0.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cffi", marker = "platform_python_implementation != 'PyPy'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/60/04/ee2a9e8542e4fa2773b81771ff8349ff19cdd56b7258a0cc442639052edb/cryptography-46.0.5.tar.gz", hash = "sha256:abace499247268e3757271b2f1e244b36b06f8515cf27c4d49468fc9eb16e93d", size = 750064, upload-time = "2026-02-10T19:18:38.255Z" } +sdist = { url = "https://files.pythonhosted.org/packages/9f/a9/db8f313fdcd85d767d4973515e1db101f9c71f95fced83233de224673757/cryptography-48.0.0.tar.gz", hash = "sha256:5c3932f4436d1cccb036cb0eaef46e6e2db91035166f1ad6505c3c9d5a635920", size = 832984, upload-time = "2026-05-04T22:59:38.133Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f7/81/b0bb27f2ba931a65409c6b8a8b358a7f03c0e46eceacddff55f7c84b1f3b/cryptography-46.0.5-cp311-abi3-macosx_10_9_universal2.whl", hash = "sha256:351695ada9ea9618b3500b490ad54c739860883df6c1f555e088eaf25b1bbaad", size = 7176289, upload-time = "2026-02-10T19:17:08.274Z" }, - { url = "https://files.pythonhosted.org/packages/ff/9e/6b4397a3e3d15123de3b1806ef342522393d50736c13b20ec4c9ea6693a6/cryptography-46.0.5-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:c18ff11e86df2e28854939acde2d003f7984f721eba450b56a200ad90eeb0e6b", size = 4275637, upload-time = "2026-02-10T19:17:10.53Z" }, - { url = "https://files.pythonhosted.org/packages/63/e7/471ab61099a3920b0c77852ea3f0ea611c9702f651600397ac567848b897/cryptography-46.0.5-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:4d7e3d356b8cd4ea5aff04f129d5f66ebdc7b6f8eae802b93739ed520c47c79b", size = 4424742, upload-time = "2026-02-10T19:17:12.388Z" }, - { url = "https://files.pythonhosted.org/packages/37/53/a18500f270342d66bf7e4d9f091114e31e5ee9e7375a5aba2e85a91e0044/cryptography-46.0.5-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:50bfb6925eff619c9c023b967d5b77a54e04256c4281b0e21336a130cd7fc263", size = 4277528, upload-time = "2026-02-10T19:17:13.853Z" }, - { url = "https://files.pythonhosted.org/packages/22/29/c2e812ebc38c57b40e7c583895e73c8c5adb4d1e4a0cc4c5a4fdab2b1acc/cryptography-46.0.5-cp311-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:803812e111e75d1aa73690d2facc295eaefd4439be1023fefc4995eaea2af90d", size = 4947993, upload-time = "2026-02-10T19:17:15.618Z" }, - { url = "https://files.pythonhosted.org/packages/6b/e7/237155ae19a9023de7e30ec64e5d99a9431a567407ac21170a046d22a5a3/cryptography-46.0.5-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:3ee190460e2fbe447175cda91b88b84ae8322a104fc27766ad09428754a618ed", size = 4456855, upload-time = "2026-02-10T19:17:17.221Z" }, - { url = "https://files.pythonhosted.org/packages/2d/87/fc628a7ad85b81206738abbd213b07702bcbdada1dd43f72236ef3cffbb5/cryptography-46.0.5-cp311-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:f145bba11b878005c496e93e257c1e88f154d278d2638e6450d17e0f31e558d2", size = 3984635, upload-time = "2026-02-10T19:17:18.792Z" }, - { url = "https://files.pythonhosted.org/packages/84/29/65b55622bde135aedf4565dc509d99b560ee4095e56989e815f8fd2aa910/cryptography-46.0.5-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:e9251e3be159d1020c4030bd2e5f84d6a43fe54b6c19c12f51cde9542a2817b2", size = 4277038, upload-time = "2026-02-10T19:17:20.256Z" }, - { url = "https://files.pythonhosted.org/packages/bc/36/45e76c68d7311432741faf1fbf7fac8a196a0a735ca21f504c75d37e2558/cryptography-46.0.5-cp311-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:47fb8a66058b80e509c47118ef8a75d14c455e81ac369050f20ba0d23e77fee0", size = 4912181, upload-time = "2026-02-10T19:17:21.825Z" }, - { url = "https://files.pythonhosted.org/packages/6d/1a/c1ba8fead184d6e3d5afcf03d569acac5ad063f3ac9fb7258af158f7e378/cryptography-46.0.5-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:4c3341037c136030cb46e4b1e17b7418ea4cbd9dd207e4a6f3b2b24e0d4ac731", size = 4456482, upload-time = "2026-02-10T19:17:25.133Z" }, - { url = "https://files.pythonhosted.org/packages/f9/e5/3fb22e37f66827ced3b902cf895e6a6bc1d095b5b26be26bd13c441fdf19/cryptography-46.0.5-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:890bcb4abd5a2d3f852196437129eb3667d62630333aacc13dfd470fad3aaa82", size = 4405497, upload-time = "2026-02-10T19:17:26.66Z" }, - { url = "https://files.pythonhosted.org/packages/1a/df/9d58bb32b1121a8a2f27383fabae4d63080c7ca60b9b5c88be742be04ee7/cryptography-46.0.5-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:80a8d7bfdf38f87ca30a5391c0c9ce4ed2926918e017c29ddf643d0ed2778ea1", size = 4667819, upload-time = "2026-02-10T19:17:28.569Z" }, - { url = "https://files.pythonhosted.org/packages/ea/ed/325d2a490c5e94038cdb0117da9397ece1f11201f425c4e9c57fe5b9f08b/cryptography-46.0.5-cp311-abi3-win32.whl", hash = "sha256:60ee7e19e95104d4c03871d7d7dfb3d22ef8a9b9c6778c94e1c8fcc8365afd48", size = 3028230, upload-time = "2026-02-10T19:17:30.518Z" }, - { url = "https://files.pythonhosted.org/packages/e9/5a/ac0f49e48063ab4255d9e3b79f5def51697fce1a95ea1370f03dc9db76f6/cryptography-46.0.5-cp311-abi3-win_amd64.whl", hash = "sha256:38946c54b16c885c72c4f59846be9743d699eee2b69b6988e0a00a01f46a61a4", size = 3480909, upload-time = "2026-02-10T19:17:32.083Z" }, - { url = "https://files.pythonhosted.org/packages/00/13/3d278bfa7a15a96b9dc22db5a12ad1e48a9eb3d40e1827ef66a5df75d0d0/cryptography-46.0.5-cp314-cp314t-macosx_10_9_universal2.whl", hash = "sha256:94a76daa32eb78d61339aff7952ea819b1734b46f73646a07decb40e5b3448e2", size = 7119287, upload-time = "2026-02-10T19:17:33.801Z" }, - { url = "https://files.pythonhosted.org/packages/67/c8/581a6702e14f0898a0848105cbefd20c058099e2c2d22ef4e476dfec75d7/cryptography-46.0.5-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:5be7bf2fb40769e05739dd0046e7b26f9d4670badc7b032d6ce4db64dddc0678", size = 4265728, upload-time = "2026-02-10T19:17:35.569Z" }, - { url = "https://files.pythonhosted.org/packages/dd/4a/ba1a65ce8fc65435e5a849558379896c957870dd64fecea97b1ad5f46a37/cryptography-46.0.5-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:fe346b143ff9685e40192a4960938545c699054ba11d4f9029f94751e3f71d87", size = 4408287, upload-time = "2026-02-10T19:17:36.938Z" }, - { url = "https://files.pythonhosted.org/packages/f8/67/8ffdbf7b65ed1ac224d1c2df3943553766914a8ca718747ee3871da6107e/cryptography-46.0.5-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:c69fd885df7d089548a42d5ec05be26050ebcd2283d89b3d30676eb32ff87dee", size = 4270291, upload-time = "2026-02-10T19:17:38.748Z" }, - { url = "https://files.pythonhosted.org/packages/f8/e5/f52377ee93bc2f2bba55a41a886fd208c15276ffbd2569f2ddc89d50e2c5/cryptography-46.0.5-cp314-cp314t-manylinux_2_28_ppc64le.whl", hash = "sha256:8293f3dea7fc929ef7240796ba231413afa7b68ce38fd21da2995549f5961981", size = 4927539, upload-time = "2026-02-10T19:17:40.241Z" }, - { url = "https://files.pythonhosted.org/packages/3b/02/cfe39181b02419bbbbcf3abdd16c1c5c8541f03ca8bda240debc467d5a12/cryptography-46.0.5-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:1abfdb89b41c3be0365328a410baa9df3ff8a9110fb75e7b52e66803ddabc9a9", size = 4442199, upload-time = "2026-02-10T19:17:41.789Z" }, - { url = "https://files.pythonhosted.org/packages/c0/96/2fcaeb4873e536cf71421a388a6c11b5bc846e986b2b069c79363dc1648e/cryptography-46.0.5-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:d66e421495fdb797610a08f43b05269e0a5ea7f5e652a89bfd5a7d3c1dee3648", size = 3960131, upload-time = "2026-02-10T19:17:43.379Z" }, - { url = "https://files.pythonhosted.org/packages/d8/d2/b27631f401ddd644e94c5cf33c9a4069f72011821cf3dc7309546b0642a0/cryptography-46.0.5-cp314-cp314t-manylinux_2_34_aarch64.whl", hash = "sha256:4e817a8920bfbcff8940ecfd60f23d01836408242b30f1a708d93198393a80b4", size = 4270072, upload-time = "2026-02-10T19:17:45.481Z" }, - { url = "https://files.pythonhosted.org/packages/f4/a7/60d32b0370dae0b4ebe55ffa10e8599a2a59935b5ece1b9f06edb73abdeb/cryptography-46.0.5-cp314-cp314t-manylinux_2_34_ppc64le.whl", hash = "sha256:68f68d13f2e1cb95163fa3b4db4bf9a159a418f5f6e7242564fc75fcae667fd0", size = 4892170, upload-time = "2026-02-10T19:17:46.997Z" }, - { url = "https://files.pythonhosted.org/packages/d2/b9/cf73ddf8ef1164330eb0b199a589103c363afa0cf794218c24d524a58eab/cryptography-46.0.5-cp314-cp314t-manylinux_2_34_x86_64.whl", hash = "sha256:a3d1fae9863299076f05cb8a778c467578262fae09f9dc0ee9b12eb4268ce663", size = 4441741, upload-time = "2026-02-10T19:17:48.661Z" }, - { url = "https://files.pythonhosted.org/packages/5f/eb/eee00b28c84c726fe8fa0158c65afe312d9c3b78d9d01daf700f1f6e37ff/cryptography-46.0.5-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:c4143987a42a2397f2fc3b4d7e3a7d313fbe684f67ff443999e803dd75a76826", size = 4396728, upload-time = "2026-02-10T19:17:50.058Z" }, - { url = "https://files.pythonhosted.org/packages/65/f4/6bc1a9ed5aef7145045114b75b77c2a8261b4d38717bd8dea111a63c3442/cryptography-46.0.5-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:7d731d4b107030987fd61a7f8ab512b25b53cef8f233a97379ede116f30eb67d", size = 4652001, upload-time = "2026-02-10T19:17:51.54Z" }, - { url = "https://files.pythonhosted.org/packages/86/ef/5d00ef966ddd71ac2e6951d278884a84a40ffbd88948ef0e294b214ae9e4/cryptography-46.0.5-cp314-cp314t-win32.whl", hash = "sha256:c3bcce8521d785d510b2aad26ae2c966092b7daa8f45dd8f44734a104dc0bc1a", size = 3003637, upload-time = "2026-02-10T19:17:52.997Z" }, - { url = "https://files.pythonhosted.org/packages/b7/57/f3f4160123da6d098db78350fdfd9705057aad21de7388eacb2401dceab9/cryptography-46.0.5-cp314-cp314t-win_amd64.whl", hash = "sha256:4d8ae8659ab18c65ced284993c2265910f6c9e650189d4e3f68445ef82a810e4", size = 3469487, upload-time = "2026-02-10T19:17:54.549Z" }, - { url = "https://files.pythonhosted.org/packages/e2/fa/a66aa722105ad6a458bebd64086ca2b72cdd361fed31763d20390f6f1389/cryptography-46.0.5-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:4108d4c09fbbf2789d0c926eb4152ae1760d5a2d97612b92d508d96c861e4d31", size = 7170514, upload-time = "2026-02-10T19:17:56.267Z" }, - { url = "https://files.pythonhosted.org/packages/0f/04/c85bdeab78c8bc77b701bf0d9bdcf514c044e18a46dcff330df5448631b0/cryptography-46.0.5-cp38-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7d1f30a86d2757199cb2d56e48cce14deddf1f9c95f1ef1b64ee91ea43fe2e18", size = 4275349, upload-time = "2026-02-10T19:17:58.419Z" }, - { url = "https://files.pythonhosted.org/packages/5c/32/9b87132a2f91ee7f5223b091dc963055503e9b442c98fc0b8a5ca765fab0/cryptography-46.0.5-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:039917b0dc418bb9f6edce8a906572d69e74bd330b0b3fea4f79dab7f8ddd235", size = 4420667, upload-time = "2026-02-10T19:18:00.619Z" }, - { url = "https://files.pythonhosted.org/packages/a1/a6/a7cb7010bec4b7c5692ca6f024150371b295ee1c108bdc1c400e4c44562b/cryptography-46.0.5-cp38-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:ba2a27ff02f48193fc4daeadf8ad2590516fa3d0adeeb34336b96f7fa64c1e3a", size = 4276980, upload-time = "2026-02-10T19:18:02.379Z" }, - { url = "https://files.pythonhosted.org/packages/8e/7c/c4f45e0eeff9b91e3f12dbd0e165fcf2a38847288fcfd889deea99fb7b6d/cryptography-46.0.5-cp38-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:61aa400dce22cb001a98014f647dc21cda08f7915ceb95df0c9eaf84b4b6af76", size = 4939143, upload-time = "2026-02-10T19:18:03.964Z" }, - { url = "https://files.pythonhosted.org/packages/37/19/e1b8f964a834eddb44fa1b9a9976f4e414cbb7aa62809b6760c8803d22d1/cryptography-46.0.5-cp38-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:3ce58ba46e1bc2aac4f7d9290223cead56743fa6ab94a5d53292ffaac6a91614", size = 4453674, upload-time = "2026-02-10T19:18:05.588Z" }, - { url = "https://files.pythonhosted.org/packages/db/ed/db15d3956f65264ca204625597c410d420e26530c4e2943e05a0d2f24d51/cryptography-46.0.5-cp38-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:420d0e909050490d04359e7fdb5ed7e667ca5c3c402b809ae2563d7e66a92229", size = 3978801, upload-time = "2026-02-10T19:18:07.167Z" }, - { url = "https://files.pythonhosted.org/packages/41/e2/df40a31d82df0a70a0daf69791f91dbb70e47644c58581d654879b382d11/cryptography-46.0.5-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:582f5fcd2afa31622f317f80426a027f30dc792e9c80ffee87b993200ea115f1", size = 4276755, upload-time = "2026-02-10T19:18:09.813Z" }, - { url = "https://files.pythonhosted.org/packages/33/45/726809d1176959f4a896b86907b98ff4391a8aa29c0aaaf9450a8a10630e/cryptography-46.0.5-cp38-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:bfd56bb4b37ed4f330b82402f6f435845a5f5648edf1ad497da51a8452d5d62d", size = 4901539, upload-time = "2026-02-10T19:18:11.263Z" }, - { url = "https://files.pythonhosted.org/packages/99/0f/a3076874e9c88ecb2ecc31382f6e7c21b428ede6f55aafa1aa272613e3cd/cryptography-46.0.5-cp38-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:a3d507bb6a513ca96ba84443226af944b0f7f47dcc9a399d110cd6146481d24c", size = 4452794, upload-time = "2026-02-10T19:18:12.914Z" }, - { url = "https://files.pythonhosted.org/packages/02/ef/ffeb542d3683d24194a38f66ca17c0a4b8bf10631feef44a7ef64e631b1a/cryptography-46.0.5-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:9f16fbdf4da055efb21c22d81b89f155f02ba420558db21288b3d0035bafd5f4", size = 4404160, upload-time = "2026-02-10T19:18:14.375Z" }, - { url = "https://files.pythonhosted.org/packages/96/93/682d2b43c1d5f1406ed048f377c0fc9fc8f7b0447a478d5c65ab3d3a66eb/cryptography-46.0.5-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:ced80795227d70549a411a4ab66e8ce307899fad2220ce5ab2f296e687eacde9", size = 4667123, upload-time = "2026-02-10T19:18:15.886Z" }, - { url = "https://files.pythonhosted.org/packages/45/2d/9c5f2926cb5300a8eefc3f4f0b3f3df39db7f7ce40c8365444c49363cbda/cryptography-46.0.5-cp38-abi3-win32.whl", hash = "sha256:02f547fce831f5096c9a567fd41bc12ca8f11df260959ecc7c3202555cc47a72", size = 3010220, upload-time = "2026-02-10T19:18:17.361Z" }, - { url = "https://files.pythonhosted.org/packages/48/ef/0c2f4a8e31018a986949d34a01115dd057bf536905dca38897bacd21fac3/cryptography-46.0.5-cp38-abi3-win_amd64.whl", hash = "sha256:556e106ee01aa13484ce9b0239bca667be5004efb0aabbed28d353df86445595", size = 3467050, upload-time = "2026-02-10T19:18:18.899Z" }, + { url = "https://files.pythonhosted.org/packages/df/3d/01f6dd9190170a5a241e0e98c2d04be3664a9e6f5b9b872cde63aff1c3dd/cryptography-48.0.0-cp311-abi3-macosx_10_9_universal2.whl", hash = "sha256:0c558d2cdffd8f4bbb30fc7134c74d2ca9a476f830bb053074498fbc86f41ed6", size = 8001587, upload-time = "2026-05-04T22:57:36.803Z" }, + { url = "https://files.pythonhosted.org/packages/b2/6e/e90527eef33f309beb811cf7c982c3aeffcce8e3edb178baa4ca3ae4a6fa/cryptography-48.0.0-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:f5333311663ea94f75dd408665686aaf426563556bb5283554a3539177e03b8c", size = 4690433, upload-time = "2026-05-04T22:57:40.373Z" }, + { url = "https://files.pythonhosted.org/packages/90/04/673510ed51ddff56575f306cf1617d80411ee76831ccd3097599140efdfe/cryptography-48.0.0-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7995ef305d7165c3f11ae07f2517e5a4f1d5c18da1376a0a9ed496336b69e5f3", size = 4710620, upload-time = "2026-05-04T22:57:42.935Z" }, + { url = "https://files.pythonhosted.org/packages/14/d5/e9c4ef932c8d800490c34d8bd589d64a31d5890e27ec9e9ad532be893294/cryptography-48.0.0-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:40ba1f85eaa6959837b1d51c9767e230e14612eea4ef110ee8854ada22da1bf5", size = 4696283, upload-time = "2026-05-04T22:57:45.294Z" }, + { url = "https://files.pythonhosted.org/packages/0c/29/174b9dfb60b12d59ecfc6cfa04bc88c21b42a54f01b8aae09bb6e51e4c7f/cryptography-48.0.0-cp311-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:369a6348999f94bbd53435c894377b20ab95f25a9065c283570e70150d8abc3c", size = 5296573, upload-time = "2026-05-04T22:57:47.933Z" }, + { url = "https://files.pythonhosted.org/packages/95/38/0d29a6fd7d0d1373f0c0c88a04ba20e359b257753ac497564cd660fc1d55/cryptography-48.0.0-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:a0e692c683f4df67815a2d258b324e66f4738bd7a96a218c826dce4f4bd05d8f", size = 4743677, upload-time = "2026-05-04T22:57:50.067Z" }, + { url = "https://files.pythonhosted.org/packages/30/be/eef653013d5c63b6a490529e0316f9ac14a37602965d4903efed1399f32b/cryptography-48.0.0-cp311-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:18349bbc56f4743c8b12dc32e2bccb2cf83ee8b69a3bba74ef8ae857e26b3d25", size = 4330808, upload-time = "2026-05-04T22:57:52.301Z" }, + { url = "https://files.pythonhosted.org/packages/84/9e/500463e87abb7a0a0f9f256ec21123ecde0a7b5541a15e840ea54551fd81/cryptography-48.0.0-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:7e8eac43dfca5c4cccc6dad9a80504436fca53bb9bc3100a2386d730fbe6b602", size = 4695941, upload-time = "2026-05-04T22:57:54.603Z" }, + { url = "https://files.pythonhosted.org/packages/e3/dc/7303087450c2ec9e7fbb750e17c2abfbc658f23cbd0e54009509b7cc4091/cryptography-48.0.0-cp311-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:9ccdac7d40688ecb5a3b4a604b8a88c8002e3442d6c60aead1db2a89a041560c", size = 5252579, upload-time = "2026-05-04T22:57:57.207Z" }, + { url = "https://files.pythonhosted.org/packages/d0/c0/7101d3b7215edcdc90c45da544961fd8ed2d6448f77577460fa75a8443f7/cryptography-48.0.0-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:bd72e68b06bb1e96913f97dd4901119bc17f39d4586a5adf2d3e47bc2b9d58b5", size = 4743326, upload-time = "2026-05-04T22:57:59.535Z" }, + { url = "https://files.pythonhosted.org/packages/ac/d8/5b833bad13016f562ab9d063d68199a4bd121d18458e439515601d3357ec/cryptography-48.0.0-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:59baa2cb386c4f0b9905bd6eb4c2a79a69a128408fd31d32ca4d7102d4156321", size = 4826672, upload-time = "2026-05-04T22:58:01.996Z" }, + { url = "https://files.pythonhosted.org/packages/98/e1/7074eb8bf3c135558c73fc2bcf0f5633f912e6fb87e868a55c454080ef09/cryptography-48.0.0-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:9249e3cd978541d665967ac2cb2787fd6a62bddf1e75b3e347a594d7dacf4f74", size = 4972574, upload-time = "2026-05-04T22:58:03.968Z" }, + { url = "https://files.pythonhosted.org/packages/04/70/e5a1b41d325f797f39427aa44ef8baf0be500065ab6d8e10369d850d4a4f/cryptography-48.0.0-cp311-abi3-win32.whl", hash = "sha256:9c459db21422be75e2809370b829a87eb37f74cd785fc4aa9ea1e5f43b47cda4", size = 3294868, upload-time = "2026-05-04T22:58:06.467Z" }, + { url = "https://files.pythonhosted.org/packages/f4/ac/8ac51b4a5fc5932eb7ee5c517ba7dc8cd834f0048962b6b352f00f41ebf9/cryptography-48.0.0-cp311-abi3-win_amd64.whl", hash = "sha256:5b012212e08b8dd5edc78ef54da83dd9892fd9105323b3993eff6bea65dc21d7", size = 3817107, upload-time = "2026-05-04T22:58:08.845Z" }, + { url = "https://files.pythonhosted.org/packages/6b/84/70e3feea9feea87fd7cbe77efb2712ae1e3e6edf10749dc6e95f4e60e455/cryptography-48.0.0-cp314-cp314t-macosx_10_9_universal2.whl", hash = "sha256:3cb07a3ed6431663cd321ea8a000a1314c74211f823e4177fefa2255e057d1ec", size = 7986556, upload-time = "2026-05-04T22:58:11.172Z" }, + { url = "https://files.pythonhosted.org/packages/89/6e/18e07a618bb5442ba10cf4df16e99c071365528aa570dfcb8c02e25a303b/cryptography-48.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8c7378637d7d88016fa6791c159f698b3d3eed28ebf844ac36b9dc04a14dae18", size = 4684776, upload-time = "2026-05-04T22:58:13.712Z" }, + { url = "https://files.pythonhosted.org/packages/be/6a/4ea3b4c6c6759794d5ee2103c304a5076dc4b19ae1f9fe47dba439e159e9/cryptography-48.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:cc90c0b39b2e3c65ef52c804b72e3c58f8a04ab2a1871272798e5f9572c17d20", size = 4698121, upload-time = "2026-05-04T22:58:16.448Z" }, + { url = "https://files.pythonhosted.org/packages/2f/59/6ff6ad6cae03bb887da2a5860b2c9805f8dac969ef01ce563336c49bd1d1/cryptography-48.0.0-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:76341972e1eff8b4bea859f09c0d3e64b96ce931b084f9b9b7db8ef364c30eff", size = 4690042, upload-time = "2026-05-04T22:58:18.544Z" }, + { url = "https://files.pythonhosted.org/packages/ca/b4/fc334ed8cfd705aca282fe4d8f5ae64a8e0f74932e9feecb344610cf6e4d/cryptography-48.0.0-cp314-cp314t-manylinux_2_28_ppc64le.whl", hash = "sha256:55b7718303bf06a5753dcdccf2f3945cf18ad7bffde41b61226e4db31ab89a9c", size = 5282526, upload-time = "2026-05-04T22:58:20.75Z" }, + { url = "https://files.pythonhosted.org/packages/11/08/9f8c5386cc4cd90d8255c7cdd0f5baf459a08502a09de30dc51f553d38dc/cryptography-48.0.0-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:a64697c641c7b1b2178e573cbc31c7c6684cd56883a478d75143dbb7118036db", size = 4733116, upload-time = "2026-05-04T22:58:23.627Z" }, + { url = "https://files.pythonhosted.org/packages/b8/77/99307d7574045699f8805aa500fa0fb83422d115b5400a064ddd306d7750/cryptography-48.0.0-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:561215ea3879cb1cbbf272867e2efda62476f240fb58c64de6b393ae19246741", size = 4316030, upload-time = "2026-05-04T22:58:25.581Z" }, + { url = "https://files.pythonhosted.org/packages/fd/36/a608b98337af3cb2aff4818e406649d30572b7031918b04c87d979495348/cryptography-48.0.0-cp314-cp314t-manylinux_2_34_aarch64.whl", hash = "sha256:ad64688338ed4bc1a6618076ba75fd7194a5f1797ac60b47afe926285adb3166", size = 4689640, upload-time = "2026-05-04T22:58:27.747Z" }, + { url = "https://files.pythonhosted.org/packages/dd/a6/825010a291b4438aecc1f568bc428189fc1175515223632477c07dc0a6df/cryptography-48.0.0-cp314-cp314t-manylinux_2_34_ppc64le.whl", hash = "sha256:906cbf0670286c6e0044156bc7d4af9cbb0ef6db9f73e52c3ec56ba6bdde5336", size = 5237657, upload-time = "2026-05-04T22:58:29.848Z" }, + { url = "https://files.pythonhosted.org/packages/b9/09/4e76a09b4caa29aad535ddc806f5d4c5d01885bd978bd984fbc6ca032cae/cryptography-48.0.0-cp314-cp314t-manylinux_2_34_x86_64.whl", hash = "sha256:ea8990436d914540a40ab24b6a77c0969695ed52f4a4874c5137ccf7045a7057", size = 4732362, upload-time = "2026-05-04T22:58:32.009Z" }, + { url = "https://files.pythonhosted.org/packages/18/78/444fa04a77d0cb95f417dda20d450e13c56ba8e5220fc892a1658f44f882/cryptography-48.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:c18684a7f0cc9a3cb60328f496b8e3372def7c5d2df39ac267878b05565aaaae", size = 4819580, upload-time = "2026-05-04T22:58:34.254Z" }, + { url = "https://files.pythonhosted.org/packages/38/85/ea67067c70a1fd4be2c63d35eeed82658023021affccc7b17705f8527dd2/cryptography-48.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:9be5aafa5736574f8f15f262adc81b2a9869e2cfe9014d52a44633905b40d52c", size = 4963283, upload-time = "2026-05-04T22:58:36.376Z" }, + { url = "https://files.pythonhosted.org/packages/75/54/cc6d0f3deac3e81c7f847e8a189a12b6cdd65059b43dad25d4316abd849a/cryptography-48.0.0-cp314-cp314t-win32.whl", hash = "sha256:c17dfe85494deaeddc5ce251aebd1d60bbe6afc8b62071bb0b469431a000124f", size = 3270954, upload-time = "2026-05-04T22:58:38.791Z" }, + { url = "https://files.pythonhosted.org/packages/49/67/cc947e288c0758a4e5473d1dcb743037ab7785541265a969240b8885441a/cryptography-48.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:27241b1dc9962e056062a8eef1991d02c3a24569c95975bd2322a8a52c6e5e12", size = 3797313, upload-time = "2026-05-04T22:58:40.746Z" }, + { url = "https://files.pythonhosted.org/packages/f2/63/61d4a4e1c6b6bab6ce1e213cd36a24c415d90e76d78c5eb8577c5541d2e8/cryptography-48.0.0-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:58d00498e8933e4a194f3076aee1b4a97dfec1a6da444535755822fe5d8b0b86", size = 7983482, upload-time = "2026-05-04T22:58:43.769Z" }, + { url = "https://files.pythonhosted.org/packages/d5/ac/f5b5995b87770c693e2596559ffafe195b4033a57f14a82268a2842953f3/cryptography-48.0.0-cp39-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:614d0949f4790582d2cc25553abd09dd723025f0c0e7c67376a1d77196743d6e", size = 4683266, upload-time = "2026-05-04T22:58:46.064Z" }, + { url = "https://files.pythonhosted.org/packages/ec/c6/8b14f67e18338fbc4adb76f66c001f5c3610b3e2d1837f268f47a347dbbb/cryptography-48.0.0-cp39-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7ce4bfae76319a532a2dc68f82cc32f5676ee792a983187dac07183690e5c66f", size = 4696228, upload-time = "2026-05-04T22:58:48.22Z" }, + { url = "https://files.pythonhosted.org/packages/ea/73/f808fbae9514bd91b47875b003f13e284c8c6bdfd904b7944e803937eec1/cryptography-48.0.0-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:2eb992bbd4661238c5a397594c83f5b4dc2bc5b848c365c8f991b6780efcc5c7", size = 4689097, upload-time = "2026-05-04T22:58:50.9Z" }, + { url = "https://files.pythonhosted.org/packages/93/01/d86632d7d28db8ae83221995752eeb6639ffb374c2d22955648cf8d52797/cryptography-48.0.0-cp39-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:22a5cb272895dce158b2cacdfdc3debd299019659f42947dbdac6f32d68fe832", size = 5283582, upload-time = "2026-05-04T22:58:53.017Z" }, + { url = "https://files.pythonhosted.org/packages/02/e1/50edc7a50334807cc4791fc4a0ce7468b4a1416d9138eab358bfc9a3d70b/cryptography-48.0.0-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:2b4d59804e8408e2fea7d1fbaf218e5ec984325221db76e6a241a9abd6cdd95c", size = 4730479, upload-time = "2026-05-04T22:58:55.611Z" }, + { url = "https://files.pythonhosted.org/packages/6f/af/99a582b1b1641ff5911ac559beb45097cf79efd4ead4657f578ef1af2d47/cryptography-48.0.0-cp39-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:984a20b0f62a26f48a3396c72e4bc34c66e356d356bf370053066b3b6d54634a", size = 4326481, upload-time = "2026-05-04T22:58:57.607Z" }, + { url = "https://files.pythonhosted.org/packages/90/ee/89aa26a06ef0a7d7611788ffd571a7c50e368cc6a4d5eef8b4884e866edb/cryptography-48.0.0-cp39-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:5a5ed8fde7a1d09376ca0b40e68cd59c69fe23b1f9768bd5824f54681626032a", size = 4688713, upload-time = "2026-05-04T22:59:00.077Z" }, + { url = "https://files.pythonhosted.org/packages/70/ba/bcb1b0bb7a33d4c7c0c4d4c7874b4a62ae4f56113a5f4baefa362dfb1f0f/cryptography-48.0.0-cp39-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:8cd666227ef7af430aa5914a9910e0ddd703e75f039cef0825cd0da71b6b711a", size = 5238165, upload-time = "2026-05-04T22:59:02.317Z" }, + { url = "https://files.pythonhosted.org/packages/c9/70/ca4003b1ce5ca3dc3186ada51908c8a9b9ff7d5cab83cc0d43ee14ec144f/cryptography-48.0.0-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:9071196d81abc88b3516ac8cdfad32e2b66dd4a5393a8e68a961e9161ddc6239", size = 4729947, upload-time = "2026-05-04T22:59:05.255Z" }, + { url = "https://files.pythonhosted.org/packages/44/a0/4ec7cf774207905aef1a8d11c3750d5a1db805eb380ee4e16df317870128/cryptography-48.0.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:1e2d54c8be6152856a36f0882ab231e70f8ec7f14e93cf87db8a2ed056bf160c", size = 4822059, upload-time = "2026-05-04T22:59:07.802Z" }, + { url = "https://files.pythonhosted.org/packages/1e/75/a2e55f99c16fcac7b5d6c1eb19ad8e00799854d6be5ca845f9259eae1681/cryptography-48.0.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a5da777e32ffed6f85a7b2b3f7c5cbc88c146bfcd0a1d7baf5fcc6c52ee35dd4", size = 4960575, upload-time = "2026-05-04T22:59:09.851Z" }, + { url = "https://files.pythonhosted.org/packages/b8/23/6e6f32143ab5d8b36ca848a502c4bcd477ae75b9e1677e3530d669062578/cryptography-48.0.0-cp39-abi3-win32.whl", hash = "sha256:77a2ccbbe917f6710e05ba9adaa25fb5075620bf3ea6fb751997875aff4ae4bd", size = 3279117, upload-time = "2026-05-04T22:59:12.019Z" }, + { url = "https://files.pythonhosted.org/packages/9d/9a/0fea98a70cf1749d41d738836f6349d97945f7c89433a259a6c2642eefeb/cryptography-48.0.0-cp39-abi3-win_amd64.whl", hash = "sha256:16cd65b9330583e4619939b3a3843eec1e6e789744bb01e7c7e2e62e33c239c8", size = 3792100, upload-time = "2026-05-04T22:59:14.884Z" }, ] [[package]] @@ -1059,16 +1075,16 @@ wheels = [ [[package]] name = "django" -version = "5.2.12" +version = "5.2.14" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "asgiref" }, { name = "sqlparse" }, { name = "tzdata", marker = "sys_platform == 'win32'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/bd/55/b9445fc0695b03746f355c05b2eecc54c34e05198c686f4fc4406b722b52/django-5.2.12.tar.gz", hash = "sha256:6b809af7165c73eff5ce1c87fdae75d4da6520d6667f86401ecf55b681eb1eeb", size = 10860574, upload-time = "2026-03-03T13:56:05.509Z" } +sdist = { url = "https://files.pythonhosted.org/packages/65/95/95f7faa0950867afaa0bef2460c6263afd6a2c78cc9434046ed28160b015/django-5.2.14.tar.gz", hash = "sha256:58a63ba841662e5c686b57ba1fec52ddd68c0b93bd96ac3029d55728f00bf8a2", size = 10895118, upload-time = "2026-05-05T13:57:31.104Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/4e/32/4b144e125678efccf5d5b61581de1c4088d6b0286e46096e3b8de0d556c8/django-5.2.12-py3-none-any.whl", hash = "sha256:4853482f395c3a151937f6991272540fcbf531464f254a347bf7c89f53c8cff7", size = 8310245, upload-time = "2026-03-03T13:56:01.174Z" }, + { url = "https://files.pythonhosted.org/packages/14/44/f172870cf87aa25afef48fb72adba89ee8b77fcab6f3b23d240b923f1528/django-5.2.14-py3-none-any.whl", hash = "sha256:6f712143bd3064310d1f50fac859c3e9a274bdcfc9595339853be7779297fc76", size = 8311320, upload-time = "2026-05-05T13:57:25.795Z" }, ] [[package]] @@ -1116,7 +1132,7 @@ dependencies = [ { name = "django" }, { name = "django-pglock" }, { name = "django-pgtrigger" }, - { name = "dramatiq", extra = ["watch"] }, + { name = "dramatiq" }, { name = "structlog" }, { name = "tenacity" }, ] @@ -1127,7 +1143,7 @@ requires-dist = [ { name = "django", specifier = ">=4.2,<6.0" }, { name = "django-pglock", specifier = ">=1.7,<2" }, { name = "django-pgtrigger", specifier = ">=4,<5" }, - { name = "dramatiq", extras = ["watch"], specifier = ">=1.17,<1.18" }, + { name = "dramatiq", specifier = ">=2,<3" }, { name = "structlog", specifier = ">=25,<26" }, { name = "tenacity", specifier = ">=9,<10" }, ] @@ -1253,7 +1269,7 @@ s3 = [ [[package]] name = "django-stubs" -version = "5.2.9" +version = "6.0.4" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "django" }, @@ -1261,9 +1277,9 @@ dependencies = [ { name = "types-pyyaml" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/9c/01/86c921e0e19c9fa7e705bf795998dbf55eb183e7be0342a3027dc1bcbc9f/django_stubs-5.2.9.tar.gz", hash = "sha256:c192257120b08785cfe6f2f1c91f1797aceae8e9daa689c336e52c91e8f6a493", size = 257970, upload-time = "2026-01-20T23:59:27.018Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f9/82/ccf2a2dc9cdb4bd9cbe91f11e887589bf2da7609506db00ccbc73bd8a6da/django_stubs-6.0.4.tar.gz", hash = "sha256:7aee77e8de9c14c0d9cf84988befe826d93cbc15a87e0ade2943f14d553451cf", size = 280019, upload-time = "2026-05-09T21:24:30.436Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/0d/05/4c9c419b7051eb4b350100b086be6df487f968ab672d3d370f8ccf7c3746/django_stubs-5.2.9-py3-none-any.whl", hash = "sha256:2317a7130afdaa76f6ff7f623650d7f3bf1b6c86a60f95840e14e6ec6de1a7cd", size = 508656, upload-time = "2026-01-20T23:59:25.12Z" }, + { url = "https://files.pythonhosted.org/packages/ba/e7/5128914ada94dd6277626ef5a4a5680a4def7d2f9366214d26c1cd86723b/django_stubs-6.0.4-py3-none-any.whl", hash = "sha256:e991c68f77239663577a5f4fc75e99c84f867f378cafc97cbf4acc5aff378279", size = 543791, upload-time = "2026-05-09T21:24:28.218Z" }, ] [package.optional-dependencies] @@ -1273,15 +1289,15 @@ compatible-mypy = [ [[package]] name = "django-stubs-ext" -version = "5.2.9" +version = "6.0.3" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "django" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/55/03/9c2be939490d2282328db4611bc5956899f5ff7eabc3e88bd4b964a87373/django_stubs_ext-5.2.9.tar.gz", hash = "sha256:6db4054d1580657b979b7d391474719f1a978773e66c7070a5e246cd445a25a9", size = 6497, upload-time = "2026-01-20T23:58:59.462Z" } +sdist = { url = "https://files.pythonhosted.org/packages/fb/e6/5dcdaa785ec3eed5fc196c7e68fb7ad9d9fe6d5acccea4690e65f2546417/django_stubs_ext-6.0.3.tar.gz", hash = "sha256:3307d42132bc295d5744de6276bc5fdf6896efc70f891e21c0ae8bdf529d2762", size = 6663, upload-time = "2026-04-18T15:10:53.667Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/9b/f7/0d5f7d7e76fe972d9f560f687fdc0cab4db9e1624fd90728ca29b4ed7a63/django_stubs_ext-5.2.9-py3-none-any.whl", hash = "sha256:230c51575551b0165be40177f0f6805f1e3ebf799b835c85f5d64c371ca6cf71", size = 9974, upload-time = "2026-01-20T23:58:58.438Z" }, + { url = "https://files.pythonhosted.org/packages/10/fa/0a3a05c29d6295dbd52fa3cb4047a95de11ba4f2696072d6f3f2c1e6f370/django_stubs_ext-6.0.3-py3-none-any.whl", hash = "sha256:9e4105955419ae310d7da9cfd808e039d4dae3092c628f021057bb4f2c237f8f", size = 10354, upload-time = "2026-04-18T15:10:52.395Z" }, ] [[package]] @@ -1310,28 +1326,28 @@ wheels = [ [[package]] name = "djangorestframework" -version = "3.17.0" +version = "3.17.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "django" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b1/46/615ad5425c7b941e6fd3f382d25b1aca680022200d8e5b87bfc665c4425d/djangorestframework-3.17.0.tar.gz", hash = "sha256:456fd992a33f9e64c9d0f47e85d9787db0efb44f894c1e513315b5e74765bd4c", size = 905671, upload-time = "2026-03-18T20:33:42.861Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ca/d7/c016e69fac19ff8afdc89db9d31d9ae43ae031e4d1993b20aca179b8301a/djangorestframework-3.17.1.tar.gz", hash = "sha256:a6def5f447fe78ff853bff1d47a3c59bf38f5434b031780b351b0c73a62db1a5", size = 905742, upload-time = "2026-03-24T16:58:33.705Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/5f/ee/01dfe0e712d37007a4417bf7ba518a9e6830d4de009ed4bfdfebd45b99cf/djangorestframework-3.17.0-py3-none-any.whl", hash = "sha256:d84fe85f30b7ac6e8c0076ce9ff635e4eaedca5912f8d7d2926ce448c08533ba", size = 898818, upload-time = "2026-03-18T20:33:41.335Z" }, + { url = "https://files.pythonhosted.org/packages/5a/e1/2c516bdc83652b1a60c6119366ac2c0607b479ed05cd6093f916ca8928f8/djangorestframework-3.17.1-py3-none-any.whl", hash = "sha256:c3c74dd3e83a5a3efc37b3c18d92bd6f86a6791c7b7d4dff62bb068500e76457", size = 898844, upload-time = "2026-03-24T16:58:31.845Z" }, ] [[package]] name = "djangorestframework-stubs" -version = "3.16.8" +version = "3.16.9" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "django-stubs" }, { name = "types-pyyaml" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/78/d5/87166a827833eb39703856ef957ca0fb4e9d15285331251186a2e738c20c/djangorestframework_stubs-3.16.8.tar.gz", hash = "sha256:f6d464b54fa2f929610e957446c04e6ac29558265418e0a2d9f653a4cdd410b5", size = 32312, upload-time = "2026-02-03T22:35:53.182Z" } +sdist = { url = "https://files.pythonhosted.org/packages/30/84/fa0e31f763ee35152a418c2a456efdd8047a9da0f5909110147b70382191/djangorestframework_stubs-3.16.9.tar.gz", hash = "sha256:b1abb97490c90c85eabcd09b8ecbadae1b9360f21ad3021abf830227c0129697", size = 32798, upload-time = "2026-03-31T22:40:23.626Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ea/e9/d9c363b08d07d975c21793fe821b2020dfd3627ac4ce19c5c12df94ce9d0/djangorestframework_stubs-3.16.8-py3-none-any.whl", hash = "sha256:c5bf61def0f330a071dd5f470f05710189d06c467b3f3e186b32c5a23d4952fb", size = 56517, upload-time = "2026-02-03T22:35:50.67Z" }, + { url = "https://files.pythonhosted.org/packages/5a/be/e53e3b89eaa30c21e036ae4d2ee88a92ef8cb43678400901748ddad870c5/djangorestframework_stubs-3.16.9-py3-none-any.whl", hash = "sha256:27b3e245d5f9c22ff6988d9e54388249f98f88608cc2b365b71e9f39dd096958", size = 57239, upload-time = "2026-03-31T22:40:22.314Z" }, ] [package.optional-dependencies] @@ -1365,20 +1381,11 @@ wheels = [ [[package]] name = "dramatiq" -version = "1.17.1" +version = "2.1.0" source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "prometheus-client" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/c6/7a/6792ddc64a77d22bfd97261b751a7a76cf2f9d62edc59aafb679ac48b77d/dramatiq-1.17.1.tar.gz", hash = "sha256:2675d2f57e0d82db3a7d2a60f1f9c536365349db78c7f8d80a63e4c54697647a", size = 99071, upload-time = "2024-10-26T05:09:28.283Z" } +sdist = { url = "https://files.pythonhosted.org/packages/22/69/02b54e3fc4fe75721b322bc578054b4f03cec258ba614fa98a1a5bbe1efe/dramatiq-2.1.0.tar.gz", hash = "sha256:cf81550729de6cf64234b05bd63970645654aaf38967faa7a2b6e401384bb090", size = 105444, upload-time = "2026-03-03T11:22:10.067Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ee/36/925c7afd5db4f1a3f00676b9c3c58f31ff7ae29a347282d86c8d429280a5/dramatiq-1.17.1-py3-none-any.whl", hash = "sha256:951cdc334478dff8e5150bb02a6f7a947d215ee24b5aedaf738eff20e17913df", size = 120382, upload-time = "2024-10-26T05:09:26.436Z" }, -] - -[package.optional-dependencies] -watch = [ - { name = "watchdog" }, - { name = "watchdog-gevent" }, + { url = "https://files.pythonhosted.org/packages/c2/91/422960c8c415fd31ca1519d71d6f7e4bcabb2cdcc5872f784467e9fe7237/dramatiq-2.1.0-py3-none-any.whl", hash = "sha256:3ef940c2815722d3679aed79ef96c805f02fd33d4361529b2de30f01511ca44d", size = 125543, upload-time = "2026-03-03T11:22:08.664Z" }, ] [[package]] @@ -1411,7 +1418,7 @@ wheels = [ [[package]] name = "drf-spectacular" -version = "0.28.0" +version = "0.29.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "django" }, @@ -1421,9 +1428,9 @@ dependencies = [ { name = "pyyaml" }, { name = "uritemplate" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/da/b9/741056455aed00fa51a1df41fad5ad27c8e0d433b6bf490d4e60e2808bc6/drf_spectacular-0.28.0.tar.gz", hash = "sha256:2c778a47a40ab2f5078a7c42e82baba07397bb35b074ae4680721b2805943061", size = 237849, upload-time = "2024-11-30T08:49:02.355Z" } +sdist = { url = "https://files.pythonhosted.org/packages/5e/0e/a4f50d83e76cbe797eda88fc0083c8ca970cfa362b5586359ef06ec6f70a/drf_spectacular-0.29.0.tar.gz", hash = "sha256:0a069339ea390ce7f14a75e8b5af4a0860a46e833fd4af027411a3e94fc1a0cc", size = 241722, upload-time = "2025-11-02T03:40:26.348Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/fb/66/c2929871393b1515c3767a670ff7d980a6882964a31a4ca2680b30d7212a/drf_spectacular-0.28.0-py3-none-any.whl", hash = "sha256:856e7edf1056e49a4245e87a61e8da4baff46c83dbc25be1da2df77f354c7cb4", size = 103928, upload-time = "2024-11-30T08:48:57.288Z" }, + { url = "https://files.pythonhosted.org/packages/32/d9/502c56fc3ca960075d00956283f1c44e8cafe433dada03f9ed2821f3073b/drf_spectacular-0.29.0-py3-none-any.whl", hash = "sha256:d1ee7c9535d89848affb4427347f7c4a22c5d22530b8842ef133d7b72e19b41a", size = 105433, upload-time = "2025-11-02T03:40:24.823Z" }, ] [[package]] @@ -1474,14 +1481,14 @@ wheels = [ [[package]] name = "fido2" -version = "2.1.1" +version = "2.2.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cryptography" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/e7/3c/c65377e48c144afca6b02c69f10c0fe936db556096a4e2c9798e2aa72db6/fido2-2.1.1.tar.gz", hash = "sha256:f1379f845870cc7fc64c7f07323c3ce41e8c96c37054e79e0acd5630b3fec5ac", size = 4455940, upload-time = "2026-01-19T11:08:34.683Z" } +sdist = { url = "https://files.pythonhosted.org/packages/09/34/4837e2f5640baf61d8abd6125ccb6cc60b4b2933088528356ad6e781496f/fido2-2.2.0.tar.gz", hash = "sha256:0d8122e690096ad82afde42ac9d6433a4eeffda64084f36341ea02546b181dd1", size = 294167, upload-time = "2026-04-15T06:42:50.264Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e2/ab/d0fa89cc4b982800dd88daa799612f11642bf9393851715d9eaeba3cfcac/fido2-2.1.1-py3-none-any.whl", hash = "sha256:f85c16c8084abf6530b6c6ec3a0cf8575943321842e06916686943a8b784182c", size = 226945, upload-time = "2026-01-19T11:08:29.675Z" }, + { url = "https://files.pythonhosted.org/packages/01/82/f3c5dd87b0977f5547cc132b7969e6f5075a8c2f5881cf4b6df6378505f9/fido2-2.2.0-py3-none-any.whl", hash = "sha256:3587ccf0af7b71b5dd73f17e1dbec9f0fd157292f9163f02e7778f46d0d25fe5", size = 234025, upload-time = "2026-04-15T06:42:51.813Z" }, ] [[package]] @@ -1572,31 +1579,9 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/e5/15/cf2a69ade4b194aa524ac75112d5caac37414b20a3a03e6865dfe0bd1539/geopy-2.4.1-py3-none-any.whl", hash = "sha256:ae8b4bc5c1131820f4d75fce9d4aaaca0c85189b3aa5d64c3dcaf5e3b7b882a7", size = 125437, upload-time = "2023-11-23T21:49:30.421Z" }, ] -[[package]] -name = "gevent" -version = "25.9.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "cffi", marker = "platform_python_implementation == 'CPython' and sys_platform == 'win32'" }, - { name = "greenlet", marker = "platform_python_implementation == 'CPython'" }, - { name = "zope-event" }, - { name = "zope-interface" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/9e/48/b3ef2673ffb940f980966694e40d6d32560f3ffa284ecaeb5ea3a90a6d3f/gevent-25.9.1.tar.gz", hash = "sha256:adf9cd552de44a4e6754c51ff2e78d9193b7fa6eab123db9578a210e657235dd", size = 5059025, upload-time = "2025-09-17T16:15:34.528Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/15/1a/948f8167b2cdce573cf01cec07afc64d0456dc134b07900b26ac7018b37e/gevent-25.9.1-cp314-cp314-macosx_11_0_universal2.whl", hash = "sha256:1a3fe4ea1c312dbf6b375b416925036fe79a40054e6bf6248ee46526ea628be1", size = 2982934, upload-time = "2025-09-17T14:54:11.302Z" }, - { url = "https://files.pythonhosted.org/packages/9b/ec/726b146d1d3aad82e03d2e1e1507048ab6072f906e83f97f40667866e582/gevent-25.9.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0adb937f13e5fb90cca2edf66d8d7e99d62a299687400ce2edee3f3504009356", size = 1813982, upload-time = "2025-09-17T15:41:28.506Z" }, - { url = "https://files.pythonhosted.org/packages/35/5d/5f83f17162301662bd1ce702f8a736a8a8cac7b7a35e1d8b9866938d1f9d/gevent-25.9.1-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:427f869a2050a4202d93cf7fd6ab5cffb06d3e9113c10c967b6e2a0d45237cb8", size = 1894902, upload-time = "2025-09-17T15:49:03.702Z" }, - { url = "https://files.pythonhosted.org/packages/83/cd/cf5e74e353f60dab357829069ffc300a7bb414c761f52cf8c0c6e9728b8d/gevent-25.9.1-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:c049880175e8c93124188f9d926af0a62826a3b81aa6d3074928345f8238279e", size = 1861792, upload-time = "2025-09-17T15:49:23.279Z" }, - { url = "https://files.pythonhosted.org/packages/dd/65/b9a4526d4a4edce26fe4b3b993914ec9dc64baabad625a3101e51adb17f3/gevent-25.9.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b5a67a0974ad9f24721034d1e008856111e0535f1541499f72a733a73d658d1c", size = 2113215, upload-time = "2025-09-17T15:15:16.34Z" }, - { url = "https://files.pythonhosted.org/packages/e5/be/7d35731dfaf8370795b606e515d964a0967e129db76ea7873f552045dd39/gevent-25.9.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:1d0f5d8d73f97e24ea8d24d8be0f51e0cf7c54b8021c1fddb580bf239474690f", size = 1833449, upload-time = "2025-09-17T15:52:43.75Z" }, - { url = "https://files.pythonhosted.org/packages/65/58/7bc52544ea5e63af88c4a26c90776feb42551b7555a1c89c20069c168a3f/gevent-25.9.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:ddd3ff26e5c4240d3fbf5516c2d9d5f2a998ef87cfb73e1429cfaeaaec860fa6", size = 2176034, upload-time = "2025-09-17T15:24:15.676Z" }, - { url = "https://files.pythonhosted.org/packages/c2/69/a7c4ba2ffbc7c7dbf6d8b4f5d0f0a421f7815d229f4909854266c445a3d4/gevent-25.9.1-cp314-cp314-win_amd64.whl", hash = "sha256:bb63c0d6cb9950cc94036a4995b9cc4667b8915366613449236970f4394f94d7", size = 1703019, upload-time = "2025-09-17T19:30:55.272Z" }, -] - [[package]] name = "google-api-core" -version = "2.29.0" +version = "2.30.3" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "google-auth" }, @@ -1605,14 +1590,14 @@ dependencies = [ { name = "protobuf" }, { name = "requests" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/0d/10/05572d33273292bac49c2d1785925f7bc3ff2fe50e3044cf1062c1dde32e/google_api_core-2.29.0.tar.gz", hash = "sha256:84181be0f8e6b04006df75ddfe728f24489f0af57c96a529ff7cf45bc28797f7", size = 177828, upload-time = "2026-01-08T22:21:39.269Z" } +sdist = { url = "https://files.pythonhosted.org/packages/16/ce/502a57fb0ec752026d24df1280b162294b22a0afb98a326084f9a979138b/google_api_core-2.30.3.tar.gz", hash = "sha256:e601a37f148585319b26db36e219df68c5d07b6382cff2d580e83404e44d641b", size = 177001, upload-time = "2026-04-10T00:41:28.035Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/77/b6/85c4d21067220b9a78cfb81f516f9725ea6befc1544ec9bd2c1acd97c324/google_api_core-2.29.0-py3-none-any.whl", hash = "sha256:d30bc60980daa36e314b5d5a3e5958b0200cb44ca8fa1be2b614e932b75a3ea9", size = 173906, upload-time = "2026-01-08T22:21:36.093Z" }, + { url = "https://files.pythonhosted.org/packages/03/15/e56f351cf6ef1cfea58e6ac226a7318ed1deb2218c4b3cc9bd9e4b786c5a/google_api_core-2.30.3-py3-none-any.whl", hash = "sha256:a85761ba72c444dad5d611c2220633480b2b6be2521eca69cca2dbb3ffd6bfe8", size = 173274, upload-time = "2026-04-09T22:57:16.198Z" }, ] [[package]] name = "google-api-python-client" -version = "2.193.0" +version = "2.195.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "google-api-core" }, @@ -1621,70 +1606,74 @@ dependencies = [ { name = "httplib2" }, { name = "uritemplate" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/90/f4/e14b6815d3b1885328dd209676a3a4c704882743ac94e18ef0093894f5c8/google_api_python_client-2.193.0.tar.gz", hash = "sha256:8f88d16e89d11341e0a8b199cafde0fb7e6b44260dffb88d451577cbd1bb5d33", size = 14281006, upload-time = "2026-03-17T18:25:29.415Z" } +sdist = { url = "https://files.pythonhosted.org/packages/69/07/08d759b9cb10f48af14b25262dd0d6685ca8cda6c1f9e8a8109f57457205/google_api_python_client-2.195.0.tar.gz", hash = "sha256:c72cf2661c3addf01c880ce60541e83e1df354644b874f7f9d8d5ed2070446ae", size = 14584819, upload-time = "2026-04-30T21:51:50.638Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f0/6d/fe75167797790a56d17799b75e1129bb93f7ff061efc7b36e9731bd4be2b/google_api_python_client-2.193.0-py3-none-any.whl", hash = "sha256:c42aa324b822109901cfecab5dc4fc3915d35a7b376835233c916c70610322db", size = 14856490, upload-time = "2026-03-17T18:25:26.608Z" }, + { url = "https://files.pythonhosted.org/packages/21/b9/2c71095e31fff57668fec7c07ac897df065f15521d070e63229e13689590/google_api_python_client-2.195.0-py3-none-any.whl", hash = "sha256:753e62057f23049a89534bea0162b60fe391b85fb86d80bcdf884d05ec91c5bf", size = 15162418, upload-time = "2026-04-30T21:51:47.444Z" }, ] [[package]] name = "google-auth" -version = "2.47.0" +version = "2.49.2" source = { registry = "https://pypi.org/simple" } dependencies = [ + { name = "cryptography" }, { name = "pyasn1-modules" }, - { name = "rsa" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/60/3c/ec64b9a275ca22fa1cd3b6e77fefcf837b0732c890aa32d2bd21313d9b33/google_auth-2.47.0.tar.gz", hash = "sha256:833229070a9dfee1a353ae9877dcd2dec069a8281a4e72e72f77d4a70ff945da", size = 323719, upload-time = "2026-01-06T21:55:31.045Z" } +sdist = { url = "https://files.pythonhosted.org/packages/c6/fc/e925290a1ad95c975c459e2df070fac2b90954e13a0370ac505dff78cb99/google_auth-2.49.2.tar.gz", hash = "sha256:c1ae38500e73065dcae57355adb6278cf8b5c8e391994ae9cbadbcb9631ab409", size = 333958, upload-time = "2026-04-10T00:41:21.888Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/db/18/79e9008530b79527e0d5f79e7eef08d3b179b7f851cfd3a2f27822fbdfa9/google_auth-2.47.0-py3-none-any.whl", hash = "sha256:c516d68336bfde7cf0da26aab674a36fedcf04b37ac4edd59c597178760c3498", size = 234867, upload-time = "2026-01-06T21:55:28.6Z" }, + { url = "https://files.pythonhosted.org/packages/73/76/d241a5c927433420507215df6cac1b1fa4ac0ba7a794df42a84326c68da8/google_auth-2.49.2-py3-none-any.whl", hash = "sha256:c2720924dfc82dedb962c9f52cabb2ab16714fd0a6a707e40561d217574ed6d5", size = 240638, upload-time = "2026-04-10T00:41:14.501Z" }, ] [[package]] name = "google-auth-httplib2" -version = "0.3.0" +version = "0.3.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "google-auth" }, { name = "httplib2" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/d5/ad/c1f2b1175096a8d04cf202ad5ea6065f108d26be6fc7215876bde4a7981d/google_auth_httplib2-0.3.0.tar.gz", hash = "sha256:177898a0175252480d5ed916aeea183c2df87c1f9c26705d74ae6b951c268b0b", size = 11134, upload-time = "2025-12-15T22:13:51.825Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ed/99/107612bef8d24b298bb5a7c8466f908ecda791d43f9466f5c3978f5b24c1/google_auth_httplib2-0.3.1.tar.gz", hash = "sha256:0af542e815784cb64159b4469aa5d71dd41069ba93effa006e1916b1dcd88e55", size = 11152, upload-time = "2026-03-30T22:50:26.766Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/99/d5/3c97526c8796d3caf5f4b3bed2b05e8a7102326f00a334e7a438237f3b22/google_auth_httplib2-0.3.0-py3-none-any.whl", hash = "sha256:426167e5df066e3f5a0fc7ea18768c08e7296046594ce4c8c409c2457dd1f776", size = 9529, upload-time = "2025-12-15T22:13:51.048Z" }, + { url = "https://files.pythonhosted.org/packages/97/e9/93afb14d23a949acaa3f4e7cc51a0024671174e116e35f42850764b99634/google_auth_httplib2-0.3.1-py3-none-any.whl", hash = "sha256:682356a90ef4ba3d06548c37e9112eea6fc00395a11b0303a644c1a86abc275c", size = 9534, upload-time = "2026-03-30T22:49:03.384Z" }, ] [[package]] name = "googleapis-common-protos" -version = "1.72.0" +version = "1.74.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "protobuf" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/e5/7b/adfd75544c415c487b33061fe7ae526165241c1ea133f9a9125a56b39fd8/googleapis_common_protos-1.72.0.tar.gz", hash = "sha256:e55a601c1b32b52d7a3e65f43563e2aa61bcd737998ee672ac9b951cd49319f5", size = 147433, upload-time = "2025-11-06T18:29:24.087Z" } +sdist = { url = "https://files.pythonhosted.org/packages/20/18/a746c8344152d368a5aac738d4c857012f2c5d1fd2eac7e17b647a7861bd/googleapis_common_protos-1.74.0.tar.gz", hash = "sha256:57971e4eeeba6aad1163c1f0fc88543f965bb49129b8bb55b2b7b26ecab084f1", size = 151254, upload-time = "2026-04-02T21:23:26.679Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c4/ab/09169d5a4612a5f92490806649ac8d41e3ec9129c636754575b3553f4ea4/googleapis_common_protos-1.72.0-py3-none-any.whl", hash = "sha256:4299c5a82d5ae1a9702ada957347726b167f9f8d1fc352477702a1e851ff4038", size = 297515, upload-time = "2025-11-06T18:29:13.14Z" }, + { url = "https://files.pythonhosted.org/packages/b6/b0/be5d3329badb9230b765de6eea66b73abd5944bdeb5afb3562ddcd80ae84/googleapis_common_protos-1.74.0-py3-none-any.whl", hash = "sha256:702216f78610bb510e3f12ac3cafd281b7ac45cc5d86e90ad87e4d301a3426b5", size = 300743, upload-time = "2026-04-02T21:22:49.108Z" }, ] [[package]] name = "greenlet" -version = "3.3.0" +version = "3.5.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/c7/e5/40dbda2736893e3e53d25838e0f19a2b417dfc122b9989c91918db30b5d3/greenlet-3.3.0.tar.gz", hash = "sha256:a82bb225a4e9e4d653dd2fb7b8b2d36e4fb25bc0165422a11e48b88e9e6f78fb", size = 190651, upload-time = "2025-12-04T14:49:44.05Z" } +sdist = { url = "https://files.pythonhosted.org/packages/3c/3f/dbf99fb14bfeb88c28f16729215478c0e265cacd6dc22270c8f31bb6892f/greenlet-3.5.0.tar.gz", hash = "sha256:d419647372241bc68e957bf38d5c1f98852155e4146bd1e4121adea81f4f01e4", size = 196995, upload-time = "2026-04-27T13:37:15.544Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d7/7c/f0a6d0ede2c7bf092d00bc83ad5bafb7e6ec9b4aab2fbdfa6f134dc73327/greenlet-3.3.0-cp314-cp314-macosx_11_0_universal2.whl", hash = "sha256:60c2ef0f578afb3c8d92ea07ad327f9a062547137afe91f38408f08aacab667f", size = 275671, upload-time = "2025-12-04T14:23:05.267Z" }, - { url = "https://files.pythonhosted.org/packages/44/06/dac639ae1a50f5969d82d2e3dd9767d30d6dbdbab0e1a54010c8fe90263c/greenlet-3.3.0-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0a5d554d0712ba1de0a6c94c640f7aeba3f85b3a6e1f2899c11c2c0428da9365", size = 646360, upload-time = "2025-12-04T14:50:10.026Z" }, - { url = "https://files.pythonhosted.org/packages/e0/94/0fb76fe6c5369fba9bf98529ada6f4c3a1adf19e406a47332245ef0eb357/greenlet-3.3.0-cp314-cp314-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:3a898b1e9c5f7307ebbde4102908e6cbfcb9ea16284a3abe15cab996bee8b9b3", size = 658160, upload-time = "2025-12-04T14:57:45.41Z" }, - { url = "https://files.pythonhosted.org/packages/93/79/d2c70cae6e823fac36c3bbc9077962105052b7ef81db2f01ec3b9bf17e2b/greenlet-3.3.0-cp314-cp314-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:dcd2bdbd444ff340e8d6bdf54d2f206ccddbb3ccfdcd3c25bf4afaa7b8f0cf45", size = 671388, upload-time = "2025-12-04T15:07:15.789Z" }, - { url = "https://files.pythonhosted.org/packages/b8/14/bab308fc2c1b5228c3224ec2bf928ce2e4d21d8046c161e44a2012b5203e/greenlet-3.3.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5773edda4dc00e173820722711d043799d3adb4f01731f40619e07ea2750b955", size = 660166, upload-time = "2025-12-04T14:26:05.099Z" }, - { url = "https://files.pythonhosted.org/packages/4b/d2/91465d39164eaa0085177f61983d80ffe746c5a1860f009811d498e7259c/greenlet-3.3.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:ac0549373982b36d5fd5d30beb8a7a33ee541ff98d2b502714a09f1169f31b55", size = 1615193, upload-time = "2025-12-04T15:04:27.041Z" }, - { url = "https://files.pythonhosted.org/packages/42/1b/83d110a37044b92423084d52d5d5a3b3a73cafb51b547e6d7366ff62eff1/greenlet-3.3.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d198d2d977460358c3b3a4dc844f875d1adb33817f0613f663a656f463764ccc", size = 1683653, upload-time = "2025-12-04T14:27:32.366Z" }, - { url = "https://files.pythonhosted.org/packages/7c/9a/9030e6f9aa8fd7808e9c31ba4c38f87c4f8ec324ee67431d181fe396d705/greenlet-3.3.0-cp314-cp314-win_amd64.whl", hash = "sha256:73f51dd0e0bdb596fb0417e475fa3c5e32d4c83638296e560086b8d7da7c4170", size = 305387, upload-time = "2025-12-04T14:26:51.063Z" }, - { url = "https://files.pythonhosted.org/packages/a0/66/bd6317bc5932accf351fc19f177ffba53712a202f9df10587da8df257c7e/greenlet-3.3.0-cp314-cp314t-macosx_11_0_universal2.whl", hash = "sha256:d6ed6f85fae6cdfdb9ce04c9bf7a08d666cfcfb914e7d006f44f840b46741931", size = 282638, upload-time = "2025-12-04T14:25:20.941Z" }, - { url = "https://files.pythonhosted.org/packages/30/cf/cc81cb030b40e738d6e69502ccbd0dd1bced0588e958f9e757945de24404/greenlet-3.3.0-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d9125050fcf24554e69c4cacb086b87b3b55dc395a8b3ebe6487b045b2614388", size = 651145, upload-time = "2025-12-04T14:50:11.039Z" }, - { url = "https://files.pythonhosted.org/packages/9c/ea/1020037b5ecfe95ca7df8d8549959baceb8186031da83d5ecceff8b08cd2/greenlet-3.3.0-cp314-cp314t-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:87e63ccfa13c0a0f6234ed0add552af24cc67dd886731f2261e46e241608bee3", size = 654236, upload-time = "2025-12-04T14:57:47.007Z" }, - { url = "https://files.pythonhosted.org/packages/69/cc/1e4bae2e45ca2fa55299f4e85854606a78ecc37fead20d69322f96000504/greenlet-3.3.0-cp314-cp314t-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:2662433acbca297c9153a4023fe2161c8dcfdcc91f10433171cf7e7d94ba2221", size = 662506, upload-time = "2025-12-04T15:07:16.906Z" }, - { url = "https://files.pythonhosted.org/packages/57/b9/f8025d71a6085c441a7eaff0fd928bbb275a6633773667023d19179fe815/greenlet-3.3.0-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3c6e9b9c1527a78520357de498b0e709fb9e2f49c3a513afd5a249007261911b", size = 653783, upload-time = "2025-12-04T14:26:06.225Z" }, - { url = "https://files.pythonhosted.org/packages/f6/c7/876a8c7a7485d5d6b5c6821201d542ef28be645aa024cfe1145b35c120c1/greenlet-3.3.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:286d093f95ec98fdd92fcb955003b8a3d054b4e2cab3e2707a5039e7b50520fd", size = 1614857, upload-time = "2025-12-04T15:04:28.484Z" }, - { url = "https://files.pythonhosted.org/packages/4f/dc/041be1dff9f23dac5f48a43323cd0789cb798342011c19a248d9c9335536/greenlet-3.3.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:6c10513330af5b8ae16f023e8ddbfb486ab355d04467c4679c5cfe4659975dd9", size = 1676034, upload-time = "2025-12-04T14:27:33.531Z" }, + { url = "https://files.pythonhosted.org/packages/94/5e/a70f31e3e8d961c4ce589c15b28e4225d63704e431a23932a3808cbcc867/greenlet-3.5.0-cp314-cp314-macosx_11_0_universal2.whl", hash = "sha256:f35807464c4c58c55f0d31dfa83c541a5615d825c2fe3d2b95360cf7c4e3c0a8", size = 285564, upload-time = "2026-04-27T12:23:08.555Z" }, + { url = "https://files.pythonhosted.org/packages/af/a6/046c0a28e21833e4086918218cfb3d8bed51c075a1b700f20b9d7861c0f4/greenlet-3.5.0-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:55fa7ea52771be44af0de27d8b80c02cd18c2c3cddde6c847ecebdf72418b6a1", size = 651166, upload-time = "2026-04-27T12:52:43.644Z" }, + { url = "https://files.pythonhosted.org/packages/47/f8/4af27f71c5ff32a7fbc516adb46370d9c4ae2bc7bd3dc7d066ac542b4b15/greenlet-3.5.0-cp314-cp314-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a97e4821aa710603f94de0da25f25096454d78ffdace5dc77f3a006bc01abba3", size = 663792, upload-time = "2026-04-27T12:59:44.93Z" }, + { url = "https://files.pythonhosted.org/packages/fb/89/2dadb89793c37ee8b4c237857188293e9060dc085f19845c292e00f8e091/greenlet-3.5.0-cp314-cp314-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:bf2d8a80bec89ab46221ae45c5373d5ba0bd36c19aa8508e85c6cd7e5106cd37", size = 668086, upload-time = "2026-04-27T13:02:42.314Z" }, + { url = "https://files.pythonhosted.org/packages/a3/59/1bd6d7428d6ed9106efbb8c52310c60fd04f6672490f452aeaa3829aa436/greenlet-3.5.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8f52a464e4ed91780bdfbbdd2b97197f3accaa629b98c200f4dffada759f3ae7", size = 660933, upload-time = "2026-04-27T12:25:33.276Z" }, + { url = "https://files.pythonhosted.org/packages/82/35/75722be7e26a2af4cbd2dc35b0ed382dacf9394b7e75551f76ed1abe87f2/greenlet-3.5.0-cp314-cp314-manylinux_2_39_riscv64.whl", hash = "sha256:1bae92a1dd94c5f9d9493c3a212dd874c202442047cf96446412c862feca83a2", size = 470799, upload-time = "2026-04-27T13:05:17.094Z" }, + { url = "https://files.pythonhosted.org/packages/83/e4/b903e5a5fae1e8a28cdd32a0cfbfd560b668c25b692f67768822ddc5f40f/greenlet-3.5.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:762612baf1161ccb8437c0161c668a688223cba28e1bf038f4eb47b13e39ccdf", size = 1618401, upload-time = "2026-04-27T12:53:31.062Z" }, + { url = "https://files.pythonhosted.org/packages/0e/e3/5ec408a329acb854fb607a122e1ee5fb3ff649f9a97952948a90803c0d8e/greenlet-3.5.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:57a43c6079a89713522bc4bcb9f75070ecf5d3dbad7792bfe42239362cbf2a16", size = 1682038, upload-time = "2026-04-27T12:25:31.838Z" }, + { url = "https://files.pythonhosted.org/packages/91/20/6b165108058767ee643c55c5c4904d591a830ee2b3c7dbd359828fbc829f/greenlet-3.5.0-cp314-cp314-win_amd64.whl", hash = "sha256:3bc59be3945ae9750b9e7d45067d01ae3fe90ea5f9ade99239dabdd6e28a5033", size = 239835, upload-time = "2026-04-27T12:24:54.136Z" }, + { url = "https://files.pythonhosted.org/packages/4e/62/1c498375cee177b55d980c1db319f26470e5309e54698c8f8fc06c0fd539/greenlet-3.5.0-cp314-cp314-win_arm64.whl", hash = "sha256:a96fcee45e03fe30a62669fd16ab5c9d3c172660d3085605cb1e2d1280d3c988", size = 236862, upload-time = "2026-04-27T12:23:24.957Z" }, + { url = "https://files.pythonhosted.org/packages/78/a8/4522939255bb5409af4e87132f915446bf3622c2c292d14d3c38d128ae82/greenlet-3.5.0-cp314-cp314t-macosx_11_0_universal2.whl", hash = "sha256:a10a732421ab4fec934783ce3e54763470d0181db6e3468f9103a275c3ed1853", size = 293614, upload-time = "2026-04-27T12:24:12.874Z" }, + { url = "https://files.pythonhosted.org/packages/15/5e/8744c52e2c027b5a8772a01561934c8835f869733e101f62075c60430340/greenlet-3.5.0-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7fc391b1566f2907d17aaebe78f8855dc45675159a775fcf9e61f8ee0078e87f", size = 650723, upload-time = "2026-04-27T12:52:45.412Z" }, + { url = "https://files.pythonhosted.org/packages/00/ef/7b4c39c03cf46ceca512c5d3f914afd85aa30b2cc9a93015b0dd73e4be6c/greenlet-3.5.0-cp314-cp314t-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:680bd0e7ad5e8daa8a4aa89f68fd6adc834b8a8036dc256533f7e08f4a4b01f7", size = 656529, upload-time = "2026-04-27T12:59:46.295Z" }, + { url = "https://files.pythonhosted.org/packages/5f/5c/0602239503b124b70e39355cbdb39361ecfe65b87a5f2f63752c32f5286f/greenlet-3.5.0-cp314-cp314t-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:1aa4ce8debcd4ea7fb2e150f3036588c41493d1d52c43538924ae1819003f4ce", size = 657015, upload-time = "2026-04-27T13:02:43.973Z" }, + { url = "https://files.pythonhosted.org/packages/0b/b5/c7768f352f5c010f92064d0063f987e7dc0cd290a6d92a34109015ce4aa1/greenlet-3.5.0-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ddb36c7d6c9c0a65f18c7258634e0c416c6ab59caac8c987b96f80c2ebda0112", size = 654364, upload-time = "2026-04-27T12:25:35.64Z" }, + { url = "https://files.pythonhosted.org/packages/38/51/8699f865f125dc952384cb432b0f7138aa4d8f2969a7d12d0df5b94d054d/greenlet-3.5.0-cp314-cp314t-manylinux_2_39_riscv64.whl", hash = "sha256:728a73687e39ae9ca34e4694cbf2f049d3fbc7174639468d0f67200a97d8f9e2", size = 488275, upload-time = "2026-04-27T13:05:18.28Z" }, + { url = "https://files.pythonhosted.org/packages/ef/d0/079ebe12e4b1fc758857ce5be1a5e73f06870f2101e52611d1e71925ce54/greenlet-3.5.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e5ddf316ced87539144621453c3aef229575825fe60c604e62bedc4003f372b2", size = 1614204, upload-time = "2026-04-27T12:53:32.618Z" }, + { url = "https://files.pythonhosted.org/packages/6d/89/6c2fb63df3596552d20e58fb4d96669243388cf680cff222758812c7bfaa/greenlet-3.5.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:4a448128607be0de65342dc9b31be7f948ef4cc0bc8832069350abefd310a8f2", size = 1675480, upload-time = "2026-04-27T12:25:34.168Z" }, + { url = "https://files.pythonhosted.org/packages/15/32/77ee8a6c1564fc345a491a4e85b3bf360e4cf26eac98c4532d2fdb96e01f/greenlet-3.5.0-cp314-cp314t-win_amd64.whl", hash = "sha256:d60097128cb0a1cab9ea541186ea13cd7b847b8449a7787c2e2350da0cb82d86", size = 245324, upload-time = "2026-04-27T12:24:40.295Z" }, ] [[package]] @@ -1708,14 +1697,14 @@ wheels = [ [[package]] name = "gunicorn" -version = "25.1.0" +version = "25.3.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "packaging" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/66/13/ef67f59f6a7896fdc2c1d62b5665c5219d6b0a9a1784938eb9a28e55e128/gunicorn-25.1.0.tar.gz", hash = "sha256:1426611d959fa77e7de89f8c0f32eed6aa03ee735f98c01efba3e281b1c47616", size = 594377, upload-time = "2026-02-13T11:09:58.989Z" } +sdist = { url = "https://files.pythonhosted.org/packages/c4/f4/e78fa054248fab913e2eab0332c6c2cb07421fca1ce56d8fe43b6aef57a4/gunicorn-25.3.0.tar.gz", hash = "sha256:f74e1b2f9f76f6cd1ca01198968bd2dd65830edc24b6e8e4d78de8320e2fe889", size = 634883, upload-time = "2026-03-27T00:00:26.092Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/da/73/4ad5b1f6a2e21cf1e85afdaad2b7b1a933985e2f5d679147a1953aaa192c/gunicorn-25.1.0-py3-none-any.whl", hash = "sha256:d0b1236ccf27f72cfe14bce7caadf467186f19e865094ca84221424e839b8b8b", size = 197067, upload-time = "2026-02-13T11:09:57.146Z" }, + { url = "https://files.pythonhosted.org/packages/43/c8/8aaf447698c4d59aa853fd318eed300b5c9e44459f242ab8ead6c9c09792/gunicorn-25.3.0-py3-none-any.whl", hash = "sha256:cacea387dab08cd6776501621c295a904fe8e3b7aae9a1a3cbb26f4e7ed54660", size = 208403, upload-time = "2026-03-27T00:00:27.386Z" }, ] [[package]] @@ -1764,14 +1753,14 @@ wheels = [ [[package]] name = "httplib2" -version = "0.31.1" +version = "0.31.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pyparsing" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/77/df/6eb1d485a513776bbdbb1c919b72e59b5acc51c5e7ef28ad1cd444e252a3/httplib2-0.31.1.tar.gz", hash = "sha256:21591655ac54953624c6ab8d587c71675e379e31e2cfe3147c83c11e9ef41f92", size = 250746, upload-time = "2026-01-13T12:14:14.365Z" } +sdist = { url = "https://files.pythonhosted.org/packages/c1/1f/e86365613582c027dda5ddb64e1010e57a3d53e99ab8a72093fa13d565ec/httplib2-0.31.2.tar.gz", hash = "sha256:385e0869d7397484f4eab426197a4c020b606edd43372492337c0b4010ae5d24", size = 250800, upload-time = "2026-01-23T11:04:44.165Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f0/d8/1b05076441c2f01e4b64f59e5255edc2f0384a711b6d618845c023dc269b/httplib2-0.31.1-py3-none-any.whl", hash = "sha256:d520d22fa7e50c746a7ed856bac298c4300105d01bc2d8c2580a9b57fb9ed617", size = 91101, upload-time = "2026-01-13T12:14:12.676Z" }, + { url = "https://files.pythonhosted.org/packages/2f/90/fd509079dfcab01102c0fdd87f3a9506894bc70afcf9e9785ef6b2b3aff6/httplib2-0.31.2-py3-none-any.whl", hash = "sha256:dbf0c2fa3862acf3c55c078ea9c0bc4481d7dc5117cae71be9514912cf9f8349", size = 91099, upload-time = "2026-01-23T11:04:42.78Z" }, ] [[package]] @@ -1832,11 +1821,11 @@ wheels = [ [[package]] name = "idna" -version = "3.11" +version = "3.13" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/6f/6d/0703ccc57f3a7233505399edb88de3cbd678da106337b9fcde432b65ed60/idna-3.11.tar.gz", hash = "sha256:795dafcc9c04ed0c1fb032c2aa73654d8e8c5023a7df64a53f39190ada629902", size = 194582, upload-time = "2025-10-12T14:55:20.501Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ce/cc/762dfb036166873f0059f3b7de4565e1b5bc3d6f28a414c13da27e442f99/idna-3.13.tar.gz", hash = "sha256:585ea8fe5d69b9181ec1afba340451fba6ba764af97026f92a91d4eef164a242", size = 194210, upload-time = "2026-04-22T16:42:42.314Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/0e/61/66938bbb5fc52dbdf84594873d5b51fb1f7c7794e9c0f5bd885f30bc507b/idna-3.11-py3-none-any.whl", hash = "sha256:771a87f49d9defaf64091e6e6fe9c18d4833f140bd19464795bc32d966ca37ea", size = 71008, upload-time = "2025-10-12T14:55:18.883Z" }, + { url = "https://files.pythonhosted.org/packages/5d/13/ad7d7ca3808a898b4612b6fe93cde56b53f3034dcde235acb1f0e1df24c6/idna-3.13-py3-none-any.whl", hash = "sha256:892ea0cde124a99ce773decba204c5552b69c3c67ffd5f232eb7696135bc8bb3", size = 68629, upload-time = "2026-04-22T16:42:40.909Z" }, ] [[package]] @@ -1853,11 +1842,11 @@ wheels = [ [[package]] name = "importlib-resources" -version = "6.5.2" +version = "7.1.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/cf/8c/f834fbf984f691b4f7ff60f50b514cc3de5cc08abfc3295564dd89c5e2e7/importlib_resources-6.5.2.tar.gz", hash = "sha256:185f87adef5bcc288449d98fb4fba07cea78bc036455dd44c5fc4a2fe78fed2c", size = 44693, upload-time = "2025-01-03T18:51:56.698Z" } +sdist = { url = "https://files.pythonhosted.org/packages/e4/06/b56dfa750b44e86157093bc8fca0ab81dccbf5260510de4eaf1cb69b5b99/importlib_resources-7.1.0.tar.gz", hash = "sha256:0722d4c6212489c530f2a145a34c0a7a3b4721bc96a15fada5930e2a0b760708", size = 44985, upload-time = "2026-04-12T16:36:09.232Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a4/ed/1f1afb2e9e7f38a545d628f864d562a5ae64fe6f7a10e28ffb9b185b4e89/importlib_resources-6.5.2-py3-none-any.whl", hash = "sha256:789cfdc3ed28c78b67a06acb8126751ced69a3d5f79c095a98298cd8a760ccec", size = 37461, upload-time = "2025-01-03T18:51:54.306Z" }, + { url = "https://files.pythonhosted.org/packages/8a/db/55a262f3606bebcae07cc14095338471ad7c0bbcaa37707e6f0ee49725b7/importlib_resources-7.1.0-py3-none-any.whl", hash = "sha256:1bd7b48b4088eddb2cd16382150bb515af0bd2c70128194392725f82ad2c96a1", size = 37232, upload-time = "2026-04-12T16:36:08.219Z" }, ] [[package]] @@ -1892,11 +1881,11 @@ wheels = [ [[package]] name = "invoke" -version = "2.2.1" +version = "3.0.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/de/bd/b461d3424a24c80490313fd77feeb666ca4f6a28c7e72713e3d9095719b4/invoke-2.2.1.tar.gz", hash = "sha256:515bf49b4a48932b79b024590348da22f39c4942dff991ad1fb8b8baea1be707", size = 304762, upload-time = "2025-10-11T00:36:35.172Z" } +sdist = { url = "https://files.pythonhosted.org/packages/33/f6/227c48c5fe47fa178ccf1fda8f047d16c97ba926567b661e9ce2045c600c/invoke-3.0.3.tar.gz", hash = "sha256:437b6a622223824380bfb4e64f612711a6b648c795f565efc8625af66fb57f0c", size = 343419, upload-time = "2026-04-07T15:17:48.307Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/32/4b/b99e37f88336009971405cbb7630610322ed6fbfa31e1d7ab3fbf3049a2d/invoke-2.2.1-py3-none-any.whl", hash = "sha256:2413bc441b376e5cd3f55bb5d364f973ad8bdd7bf87e53c79de3c11bf3feecc8", size = 160287, upload-time = "2025-10-11T00:36:33.703Z" }, + { url = "https://files.pythonhosted.org/packages/5a/de/bbc12563bbf979618d17625a4e753ff7a078523e28d870d3626daa97261a/invoke-3.0.3-py3-none-any.whl", hash = "sha256:f11327165e5cbb89b2ad1d88d3292b5113332c43b8553b494da435d6ec6f5053", size = 160958, upload-time = "2026-04-07T15:17:46.875Z" }, ] [[package]] @@ -1913,28 +1902,28 @@ wheels = [ [[package]] name = "jinxed" -version = "1.3.0" +version = "1.4.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "ansicon", marker = "sys_platform == 'win32'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/20/d0/59b2b80e7a52d255f9e0ad040d2e826342d05580c4b1d7d7747cfb8db731/jinxed-1.3.0.tar.gz", hash = "sha256:1593124b18a41b7a3da3b078471442e51dbad3d77b4d4f2b0c26ab6f7d660dbf", size = 80981, upload-time = "2024-07-31T22:39:18.854Z" } +sdist = { url = "https://files.pythonhosted.org/packages/3c/e9/96633f12b6829eb1e91e70e5846704c0b1293ec47bd65a7b681e19c8eeff/jinxed-1.4.0.tar.gz", hash = "sha256:8f7801a10799de39e509eb5abc6d131ee169c1ce4fd5d568aa85b5f56ed58068", size = 37169, upload-time = "2026-03-26T01:49:38.337Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/27/e3/0e0014d6ab159d48189e92044ace13b1e1fe9aa3024ba9f4e8cf172aa7c2/jinxed-1.3.0-py2.py3-none-any.whl", hash = "sha256:b993189f39dc2d7504d802152671535b06d380b26d78070559551cbf92df4fc5", size = 33085, upload-time = "2024-07-31T22:39:17.426Z" }, + { url = "https://files.pythonhosted.org/packages/71/b7/9ab2b79bcbcc53cf8772a19d26713dd9574d4d81ee4fea29678d8cadcec7/jinxed-1.4.0-py2.py3-none-any.whl", hash = "sha256:95876a8b270081b8e28a9bbcbabe4fa98327faa91102526f724ed1904f9a55ac", size = 34522, upload-time = "2026-03-26T01:49:36.762Z" }, ] [[package]] name = "jmespath" -version = "1.0.1" +version = "1.1.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/00/2a/e867e8531cf3e36b41201936b7fa7ba7b5702dbef42922193f05c8976cd6/jmespath-1.0.1.tar.gz", hash = "sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe", size = 25843, upload-time = "2022-06-17T18:00:12.224Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d3/59/322338183ecda247fb5d1763a6cbe46eff7222eaeebafd9fa65d4bf5cb11/jmespath-1.1.0.tar.gz", hash = "sha256:472c87d80f36026ae83c6ddd0f1d05d4e510134ed462851fd5f754c8c3cbb88d", size = 27377, upload-time = "2026-01-22T16:35:26.279Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/31/b4/b9b800c45527aadd64d5b442f9b932b00648617eb5d63d2c7a6587b7cafc/jmespath-1.0.1-py3-none-any.whl", hash = "sha256:02e2e4cc71b5bcab88332eebf907519190dd9e6e82107fa7f83b1003a6252980", size = 20256, upload-time = "2022-06-17T18:00:10.251Z" }, + { url = "https://files.pythonhosted.org/packages/14/2f/967ba146e6d58cf6a652da73885f52fc68001525b4197effc174321d70b4/jmespath-1.1.0-py3-none-any.whl", hash = "sha256:a5663118de4908c91729bea0acadca56526eb2698e83de10cd116ae0f4e97c64", size = 20419, upload-time = "2026-01-22T16:35:24.919Z" }, ] [[package]] name = "jsii" -version = "1.127.0" +version = "1.128.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "attrs" }, @@ -1945,9 +1934,9 @@ dependencies = [ { name = "typeguard" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/81/e8/a163295e70ecc652bfd7960c83f9a61ee4283f2ef73d6df23ac57b430f6c/jsii-1.127.0.tar.gz", hash = "sha256:631a13d73265eaa22c0c0804e77fe59c8fcc3af3a94de9923af65380b6ad267a", size = 461782, upload-time = "2026-02-25T16:54:04.368Z" } +sdist = { url = "https://files.pythonhosted.org/packages/10/21/e11ec4d974665d5d5d36e19a8546d9d58b1943794b214dd5eeea09d04aa7/jsii-1.128.0.tar.gz", hash = "sha256:05f21e1c16e899cd65db27e54c9379b561cf368c6d670b60ea012bffa801b6d7", size = 444659, upload-time = "2026-04-09T17:31:46.796Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b6/91/3b58a04d06cb6abbb3806ca5fcf4b8933a85e013d24d983d3535d9fb6566/jsii-1.127.0-py3-none-any.whl", hash = "sha256:92a11f39e461f5168e2467efd53351cc32b118314b95cc6323c2d044eb299eaf", size = 436980, upload-time = "2026-02-25T16:54:02.824Z" }, + { url = "https://files.pythonhosted.org/packages/19/17/963cc6f0cb8b143649c0371a4b293490811c2ff2d3707511202e192dd272/jsii-1.128.0-py3-none-any.whl", hash = "sha256:25912f66516c08c21dfcd350c9efd4c71548a98fd1af61ed08e73d99a73e0af0", size = 417867, upload-time = "2026-04-09T17:31:45.441Z" }, ] [[package]] @@ -1964,11 +1953,11 @@ wheels = [ [[package]] name = "jsonpointer" -version = "3.0.0" +version = "3.1.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/6a/0a/eebeb1fa92507ea94016a2a790b93c2ae41a7e18778f85471dc54475ed25/jsonpointer-3.0.0.tar.gz", hash = "sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef", size = 9114, upload-time = "2024-06-10T19:24:42.462Z" } +sdist = { url = "https://files.pythonhosted.org/packages/18/c7/af399a2e7a67fd18d63c40c5e62d3af4e67b836a2107468b6a5ea24c4304/jsonpointer-3.1.1.tar.gz", hash = "sha256:0b801c7db33a904024f6004d526dcc53bbb8a4a0f4e32bfd10beadf60adf1900", size = 9068, upload-time = "2026-03-23T22:32:32.458Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/71/92/5e77f98553e9e75130c78900d000368476aed74276eb8ae8796f65f00918/jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942", size = 7595, upload-time = "2024-06-10T19:24:40.698Z" }, + { url = "https://files.pythonhosted.org/packages/9e/6a/a83720e953b1682d2d109d3c2dbb0bc9bf28cc1cbc205be4ef4be5da709d/jsonpointer-3.1.1-py3-none-any.whl", hash = "sha256:8ff8b95779d071ba472cf5bc913028df06031797532f08a7d5b602d8b2a488ca", size = 7659, upload-time = "2026-03-23T22:32:31.568Z" }, ] [[package]] @@ -2000,15 +1989,15 @@ wheels = [ [[package]] name = "jwcrypto" -version = "1.5.6" +version = "1.5.7" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cryptography" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/e1/db/870e5d5fb311b0bcf049630b5ba3abca2d339fd5e13ba175b4c13b456d08/jwcrypto-1.5.6.tar.gz", hash = "sha256:771a87762a0c081ae6166958a954f80848820b2ab066937dc8b8379d65b1b039", size = 87168, upload-time = "2024-03-06T19:58:31.831Z" } +sdist = { url = "https://files.pythonhosted.org/packages/8c/90/f065668004d22715c1940d6e88e4c3afc8ee16d5664e4478d2c8fd23a250/jwcrypto-1.5.7.tar.gz", hash = "sha256:70204d7cca406eda8c82352e3c41ba2d946610dafd19e54403f0a1f4f18633c6", size = 89535, upload-time = "2026-04-07T00:35:36.116Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/cd/58/4a1880ea64032185e9ae9f63940c9327c6952d5584ea544a8f66972f2fda/jwcrypto-1.5.6-py3-none-any.whl", hash = "sha256:150d2b0ebbdb8f40b77f543fb44ffd2baeff48788be71f67f03566692fd55789", size = 92520, upload-time = "2024-03-06T19:58:29.765Z" }, + { url = "https://files.pythonhosted.org/packages/72/24/fb7da4d6613de7001feaf540d4b5969c6b5a1c42839043b0196cb13aa057/jwcrypto-1.5.7-py3-none-any.whl", hash = "sha256:729463fefe28b6de5cf1ebfda3e94f1a1b41d2799148ef98a01cb9678ebe2bb0", size = 94799, upload-time = "2026-04-07T00:35:35.085Z" }, ] [[package]] @@ -2054,76 +2043,80 @@ wheels = [ [[package]] name = "librt" -version = "0.7.8" +version = "0.9.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e7/24/5f3646ff414285e0f7708fa4e946b9bf538345a41d1c375c439467721a5e/librt-0.7.8.tar.gz", hash = "sha256:1a4ede613941d9c3470b0368be851df6bb78ab218635512d0370b27a277a0862", size = 148323, upload-time = "2026-01-14T12:56:16.876Z" } +sdist = { url = "https://files.pythonhosted.org/packages/eb/6b/3d5c13fb3e3c4f43206c8f9dfed13778c2ed4f000bacaa0b7ce3c402a265/librt-0.9.0.tar.gz", hash = "sha256:a0951822531e7aee6e0dfb556b30d5ee36bbe234faf60c20a16c01be3530869d", size = 184368, upload-time = "2026-04-09T16:06:26.173Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/1a/73/fa8814c6ce2d49c3827829cadaa1589b0bf4391660bd4510899393a23ebc/librt-0.7.8-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:be927c3c94c74b05128089a955fba86501c3b544d1d300282cc1b4bd370cb418", size = 57049, upload-time = "2026-01-14T12:55:35.056Z" }, - { url = "https://files.pythonhosted.org/packages/53/fe/f6c70956da23ea235fd2e3cc16f4f0b4ebdfd72252b02d1164dd58b4e6c3/librt-0.7.8-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:7b0803e9008c62a7ef79058233db7ff6f37a9933b8f2573c05b07ddafa226611", size = 58689, upload-time = "2026-01-14T12:55:36.078Z" }, - { url = "https://files.pythonhosted.org/packages/1f/4d/7a2481444ac5fba63050d9abe823e6bc16896f575bfc9c1e5068d516cdce/librt-0.7.8-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:79feb4d00b2a4e0e05c9c56df707934f41fcb5fe53fd9efb7549068d0495b758", size = 166808, upload-time = "2026-01-14T12:55:37.595Z" }, - { url = "https://files.pythonhosted.org/packages/ac/3c/10901d9e18639f8953f57c8986796cfbf4c1c514844a41c9197cf87cb707/librt-0.7.8-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b9122094e3f24aa759c38f46bd8863433820654927370250f460ae75488b66ea", size = 175614, upload-time = "2026-01-14T12:55:38.756Z" }, - { url = "https://files.pythonhosted.org/packages/db/01/5cbdde0951a5090a80e5ba44e6357d375048123c572a23eecfb9326993a7/librt-0.7.8-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7e03bea66af33c95ce3addf87a9bf1fcad8d33e757bc479957ddbc0e4f7207ac", size = 189955, upload-time = "2026-01-14T12:55:39.939Z" }, - { url = "https://files.pythonhosted.org/packages/6a/b4/e80528d2f4b7eaf1d437fcbd6fc6ba4cbeb3e2a0cb9ed5a79f47c7318706/librt-0.7.8-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:f1ade7f31675db00b514b98f9ab9a7698c7282dad4be7492589109471852d398", size = 189370, upload-time = "2026-01-14T12:55:41.057Z" }, - { url = "https://files.pythonhosted.org/packages/c1/ab/938368f8ce31a9787ecd4becb1e795954782e4312095daf8fd22420227c8/librt-0.7.8-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:a14229ac62adcf1b90a15992f1ab9c69ae8b99ffb23cb64a90878a6e8a2f5b81", size = 183224, upload-time = "2026-01-14T12:55:42.328Z" }, - { url = "https://files.pythonhosted.org/packages/3c/10/559c310e7a6e4014ac44867d359ef8238465fb499e7eb31b6bfe3e3f86f5/librt-0.7.8-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:5bcaaf624fd24e6a0cb14beac37677f90793a96864c67c064a91458611446e83", size = 203541, upload-time = "2026-01-14T12:55:43.501Z" }, - { url = "https://files.pythonhosted.org/packages/f8/db/a0db7acdb6290c215f343835c6efda5b491bb05c3ddc675af558f50fdba3/librt-0.7.8-cp314-cp314-win32.whl", hash = "sha256:7aa7d5457b6c542ecaed79cec4ad98534373c9757383973e638ccced0f11f46d", size = 40657, upload-time = "2026-01-14T12:55:44.668Z" }, - { url = "https://files.pythonhosted.org/packages/72/e0/4f9bdc2a98a798511e81edcd6b54fe82767a715e05d1921115ac70717f6f/librt-0.7.8-cp314-cp314-win_amd64.whl", hash = "sha256:3d1322800771bee4a91f3b4bd4e49abc7d35e65166821086e5afd1e6c0d9be44", size = 46835, upload-time = "2026-01-14T12:55:45.655Z" }, - { url = "https://files.pythonhosted.org/packages/f9/3d/59c6402e3dec2719655a41ad027a7371f8e2334aa794ed11533ad5f34969/librt-0.7.8-cp314-cp314-win_arm64.whl", hash = "sha256:5363427bc6a8c3b1719f8f3845ea53553d301382928a86e8fab7984426949bce", size = 39885, upload-time = "2026-01-14T12:55:47.138Z" }, - { url = "https://files.pythonhosted.org/packages/4e/9c/2481d80950b83085fb14ba3c595db56330d21bbc7d88a19f20165f3538db/librt-0.7.8-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:ca916919793a77e4a98d4a1701e345d337ce53be4a16620f063191f7322ac80f", size = 59161, upload-time = "2026-01-14T12:55:48.45Z" }, - { url = "https://files.pythonhosted.org/packages/96/79/108df2cfc4e672336765d54e3ff887294c1cc36ea4335c73588875775527/librt-0.7.8-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:54feb7b4f2f6706bb82325e836a01be805770443e2400f706e824e91f6441dde", size = 61008, upload-time = "2026-01-14T12:55:49.527Z" }, - { url = "https://files.pythonhosted.org/packages/46/f2/30179898f9994a5637459d6e169b6abdc982012c0a4b2d4c26f50c06f911/librt-0.7.8-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:39a4c76fee41007070f872b648cc2f711f9abf9a13d0c7162478043377b52c8e", size = 187199, upload-time = "2026-01-14T12:55:50.587Z" }, - { url = "https://files.pythonhosted.org/packages/b4/da/f7563db55cebdc884f518ba3791ad033becc25ff68eb70902b1747dc0d70/librt-0.7.8-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ac9c8a458245c7de80bc1b9765b177055efff5803f08e548dd4bb9ab9a8d789b", size = 198317, upload-time = "2026-01-14T12:55:51.991Z" }, - { url = "https://files.pythonhosted.org/packages/b3/6c/4289acf076ad371471fa86718c30ae353e690d3de6167f7db36f429272f1/librt-0.7.8-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:95b67aa7eff150f075fda09d11f6bfb26edffd300f6ab1666759547581e8f666", size = 210334, upload-time = "2026-01-14T12:55:53.682Z" }, - { url = "https://files.pythonhosted.org/packages/4a/7f/377521ac25b78ac0a5ff44127a0360ee6d5ddd3ce7327949876a30533daa/librt-0.7.8-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:535929b6eff670c593c34ff435d5440c3096f20fa72d63444608a5aef64dd581", size = 211031, upload-time = "2026-01-14T12:55:54.827Z" }, - { url = "https://files.pythonhosted.org/packages/c5/b1/e1e96c3e20b23d00cf90f4aad48f0deb4cdfec2f0ed8380d0d85acf98bbf/librt-0.7.8-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:63937bd0f4d1cb56653dc7ae900d6c52c41f0015e25aaf9902481ee79943b33a", size = 204581, upload-time = "2026-01-14T12:55:56.811Z" }, - { url = "https://files.pythonhosted.org/packages/43/71/0f5d010e92ed9747e14bef35e91b6580533510f1e36a8a09eb79ee70b2f0/librt-0.7.8-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:cf243da9e42d914036fd362ac3fa77d80a41cadcd11ad789b1b5eec4daaf67ca", size = 224731, upload-time = "2026-01-14T12:55:58.175Z" }, - { url = "https://files.pythonhosted.org/packages/22/f0/07fb6ab5c39a4ca9af3e37554f9d42f25c464829254d72e4ebbd81da351c/librt-0.7.8-cp314-cp314t-win32.whl", hash = "sha256:171ca3a0a06c643bd0a2f62a8944e1902c94aa8e5da4db1ea9a8daf872685365", size = 41173, upload-time = "2026-01-14T12:55:59.315Z" }, - { url = "https://files.pythonhosted.org/packages/24/d4/7e4be20993dc6a782639625bd2f97f3c66125c7aa80c82426956811cfccf/librt-0.7.8-cp314-cp314t-win_amd64.whl", hash = "sha256:445b7304145e24c60288a2f172b5ce2ca35c0f81605f5299f3fa567e189d2e32", size = 47668, upload-time = "2026-01-14T12:56:00.261Z" }, - { url = "https://files.pythonhosted.org/packages/fc/85/69f92b2a7b3c0f88ffe107c86b952b397004b5b8ea5a81da3d9c04c04422/librt-0.7.8-cp314-cp314t-win_arm64.whl", hash = "sha256:8766ece9de08527deabcd7cb1b4f1a967a385d26e33e536d6d8913db6ef74f06", size = 40550, upload-time = "2026-01-14T12:56:01.542Z" }, + { url = "https://files.pythonhosted.org/packages/cd/c1/184e539543f06ea2912f4b92a5ffaede4f9b392689e3f00acbf8134bee92/librt-0.9.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:3f05d145df35dca5056a8bc3838e940efebd893a54b3e19b2dda39ceaa299bcb", size = 67830, upload-time = "2026-04-09T16:05:34.517Z" }, + { url = "https://files.pythonhosted.org/packages/f3/ad/23399bdcb7afca819acacdef31b37ee59de261bd66b503a7995c03c4b0dc/librt-0.9.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:1c587494461ebd42229d0f1739f3aa34237dd9980623ecf1be8d3bcba79f4499", size = 70280, upload-time = "2026-04-09T16:05:35.649Z" }, + { url = "https://files.pythonhosted.org/packages/9f/0b/4542dc5a2b8772dbf92cafb9194701230157e73c14b017b6961a23598b03/librt-0.9.0-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:b0a2040f801406b93657a70b72fa12311063a319fee72ce98e1524da7200171f", size = 201925, upload-time = "2026-04-09T16:05:36.739Z" }, + { url = "https://files.pythonhosted.org/packages/31/d4/8ee7358b08fd0cfce051ef96695380f09b3c2c11b77c9bfbc367c921cce5/librt-0.9.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f38bc489037eca88d6ebefc9c4d41a4e07c8e8b4de5188a9e6d290273ad7ebb1", size = 212381, upload-time = "2026-04-09T16:05:38.043Z" }, + { url = "https://files.pythonhosted.org/packages/f2/94/a2025fe442abedf8b038038dab3dba942009ad42b38ea064a1a9e6094241/librt-0.9.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f3fd278f5e6bf7c75ccd6d12344eb686cc020712683363b66f46ac79d37c799f", size = 227065, upload-time = "2026-04-09T16:05:39.394Z" }, + { url = "https://files.pythonhosted.org/packages/7c/e9/b9fcf6afa909f957cfbbf918802f9dada1bd5d3c1da43d722fd6a310dc3f/librt-0.9.0-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:fcbdf2a9ca24e87bbebb47f1fe34e531ef06f104f98c9ccfc953a3f3344c567a", size = 221333, upload-time = "2026-04-09T16:05:40.999Z" }, + { url = "https://files.pythonhosted.org/packages/ac/7c/ba54cd6aa6a3c8cd12757a6870e0c79a64b1e6327f5248dcff98423f4d43/librt-0.9.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:e306d956cfa027fe041585f02a1602c32bfa6bb8ebea4899d373383295a6c62f", size = 229051, upload-time = "2026-04-09T16:05:42.605Z" }, + { url = "https://files.pythonhosted.org/packages/4b/4b/8cfdbad314c8677a0148bf0b70591d6d18587f9884d930276098a235461b/librt-0.9.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:465814ab157986acb9dfa5ccd7df944be5eefc0d08d31ec6e8d88bc71251d845", size = 222492, upload-time = "2026-04-09T16:05:43.842Z" }, + { url = "https://files.pythonhosted.org/packages/1f/d1/2eda69563a1a88706808decdce035e4b32755dbfbb0d05e1a65db9547ed1/librt-0.9.0-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:703f4ae36d6240bfe24f542bac784c7e4194ec49c3ba5a994d02891649e2d85b", size = 223849, upload-time = "2026-04-09T16:05:45.054Z" }, + { url = "https://files.pythonhosted.org/packages/04/44/b2ed37df6be5b3d42cfe36318e0598e80843d5c6308dd63d0bf4e0ce5028/librt-0.9.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:3be322a15ee5e70b93b7a59cfd074614f22cc8c9ff18bd27f474e79137ea8d3b", size = 245001, upload-time = "2026-04-09T16:05:46.34Z" }, + { url = "https://files.pythonhosted.org/packages/47/e7/617e412426df89169dd2a9ed0cc8752d5763336252c65dbf945199915119/librt-0.9.0-cp314-cp314-win32.whl", hash = "sha256:b8da9f8035bb417770b1e1610526d87ad4fc58a2804dc4d79c53f6d2cf5a6eb9", size = 51799, upload-time = "2026-04-09T16:05:47.738Z" }, + { url = "https://files.pythonhosted.org/packages/24/ed/c22ca4db0ca3cbc285e4d9206108746beda561a9792289c3c31281d7e9df/librt-0.9.0-cp314-cp314-win_amd64.whl", hash = "sha256:b8bd70d5d816566a580d193326912f4a76ec2d28a97dc4cd4cc831c0af8e330e", size = 59165, upload-time = "2026-04-09T16:05:49.198Z" }, + { url = "https://files.pythonhosted.org/packages/24/56/875398fafa4cbc8f15b89366fc3287304ddd3314d861f182a4b87595ace0/librt-0.9.0-cp314-cp314-win_arm64.whl", hash = "sha256:fc5758e2b7a56532dc33e3c544d78cbaa9ecf0a0f2a2da2df882c1d6b99a317f", size = 49292, upload-time = "2026-04-09T16:05:50.362Z" }, + { url = "https://files.pythonhosted.org/packages/4c/61/bc448ecbf9b2d69c5cff88fe41496b19ab2a1cbda0065e47d4d0d51c0867/librt-0.9.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:f24b90b0e0c8cc9491fb1693ae91fe17cb7963153a1946395acdbdd5818429a4", size = 70175, upload-time = "2026-04-09T16:05:51.564Z" }, + { url = "https://files.pythonhosted.org/packages/60/f2/c47bb71069a73e2f04e70acbd196c1e5cc411578ac99039a224b98920fd4/librt-0.9.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:3fe56e80badb66fdcde06bef81bbaa5bfcf6fbd7aefb86222d9e369c38c6b228", size = 72951, upload-time = "2026-04-09T16:05:52.699Z" }, + { url = "https://files.pythonhosted.org/packages/29/19/0549df59060631732df758e8886d92088da5fdbedb35b80e4643664e8412/librt-0.9.0-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:527b5b820b47a09e09829051452bb0d1dd2122261254e2a6f674d12f1d793d54", size = 225864, upload-time = "2026-04-09T16:05:53.895Z" }, + { url = "https://files.pythonhosted.org/packages/9d/f8/3b144396d302ac08e50f89e64452c38db84bc7b23f6c60479c5d3abd303c/librt-0.9.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7d429bdd4ac0ab17c8e4a8af0ed2a7440b16eba474909ab357131018fe8c7e71", size = 241155, upload-time = "2026-04-09T16:05:55.191Z" }, + { url = "https://files.pythonhosted.org/packages/7a/ce/ee67ec14581de4043e61d05786d2aed6c9b5338816b7859bcf07455c6a9f/librt-0.9.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7202bdcac47d3a708271c4304a474a8605a4a9a4a709e954bf2d3241140aa938", size = 252235, upload-time = "2026-04-09T16:05:56.549Z" }, + { url = "https://files.pythonhosted.org/packages/8a/fa/0ead15daa2b293a54101550b08d4bafe387b7d4a9fc6d2b985602bae69b6/librt-0.9.0-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:c0d620e74897f8c2613b3c4e2e9c1e422eb46d2ddd07df540784d44117836af3", size = 244963, upload-time = "2026-04-09T16:05:57.858Z" }, + { url = "https://files.pythonhosted.org/packages/29/68/9fbf9a9aa704ba87689e40017e720aced8d9a4d2b46b82451d8142f91ec9/librt-0.9.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:d69fc39e627908f4c03297d5a88d9284b73f4d90b424461e32e8c2485e21c283", size = 257364, upload-time = "2026-04-09T16:05:59.686Z" }, + { url = "https://files.pythonhosted.org/packages/1a/8d/9d60869f1b6716c762e45f66ed945b1e5dd649f7377684c3b176ae424648/librt-0.9.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:c2640e23d2b7c98796f123ffd95cf2022c7777aa8a4a3b98b36c570d37e85eee", size = 247661, upload-time = "2026-04-09T16:06:00.938Z" }, + { url = "https://files.pythonhosted.org/packages/70/ff/a5c365093962310bfdb4f6af256f191085078ffb529b3f0cbebb5b33ebe2/librt-0.9.0-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:451daa98463b7695b0a30aa56bf637831ea559e7b8101ac2ef6382e8eb15e29c", size = 248238, upload-time = "2026-04-09T16:06:02.537Z" }, + { url = "https://files.pythonhosted.org/packages/a0/3c/2d34365177f412c9e19c0a29f969d70f5343f27634b76b765a54d8b27705/librt-0.9.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:928bd06eca2c2bbf4349e5b817f837509b0604342e65a502de1d50a7570afd15", size = 269457, upload-time = "2026-04-09T16:06:03.833Z" }, + { url = "https://files.pythonhosted.org/packages/bc/cd/de45b239ea3bdf626f982a00c14bfcf2e12d261c510ba7db62c5969a27cd/librt-0.9.0-cp314-cp314t-win32.whl", hash = "sha256:a9c63e04d003bc0fb6a03b348018b9a3002f98268200e22cc80f146beac5dc40", size = 52453, upload-time = "2026-04-09T16:06:05.229Z" }, + { url = "https://files.pythonhosted.org/packages/7f/f9/bfb32ae428aa75c0c533915622176f0a17d6da7b72b5a3c6363685914f70/librt-0.9.0-cp314-cp314t-win_amd64.whl", hash = "sha256:f162af66a2ed3f7d1d161a82ca584efd15acd9c1cff190a373458c32f7d42118", size = 60044, upload-time = "2026-04-09T16:06:06.398Z" }, + { url = "https://files.pythonhosted.org/packages/aa/47/7d70414bcdbb3bc1f458a8d10558f00bbfdb24e5a11740fc8197e12c3255/librt-0.9.0-cp314-cp314t-win_arm64.whl", hash = "sha256:a4b25c6c25cac5d0d9d6d6da855195b254e0021e513e0249f0e3b444dc6e0e61", size = 50009, upload-time = "2026-04-09T16:06:07.995Z" }, ] [[package]] name = "lxml" -version = "6.0.2" +version = "6.1.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/aa/88/262177de60548e5a2bfc46ad28232c9e9cbde697bd94132aeb80364675cb/lxml-6.0.2.tar.gz", hash = "sha256:cd79f3367bd74b317dda655dc8fcfa304d9eb6e4fb06b7168c5cf27f96e0cd62", size = 4073426, upload-time = "2025-09-22T04:04:59.287Z" } +sdist = { url = "https://files.pythonhosted.org/packages/28/30/9abc9e34c657c33834eaf6cd02124c61bdf5944d802aa48e69be8da3585d/lxml-6.1.0.tar.gz", hash = "sha256:bfd57d8008c4965709a919c3e9a98f76c2c7cb319086b3d26858250620023b13", size = 4197006, upload-time = "2026-04-18T04:32:51.613Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/03/15/d4a377b385ab693ce97b472fe0c77c2b16ec79590e688b3ccc71fba19884/lxml-6.0.2-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:b0c732aa23de8f8aec23f4b580d1e52905ef468afb4abeafd3fec77042abb6fe", size = 8659801, upload-time = "2025-09-22T04:02:30.113Z" }, - { url = "https://files.pythonhosted.org/packages/c8/e8/c128e37589463668794d503afaeb003987373c5f94d667124ffd8078bbd9/lxml-6.0.2-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:4468e3b83e10e0317a89a33d28f7aeba1caa4d1a6fd457d115dd4ffe90c5931d", size = 4659403, upload-time = "2025-09-22T04:02:32.119Z" }, - { url = "https://files.pythonhosted.org/packages/00/ce/74903904339decdf7da7847bb5741fc98a5451b42fc419a86c0c13d26fe2/lxml-6.0.2-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:abd44571493973bad4598a3be7e1d807ed45aa2adaf7ab92ab7c62609569b17d", size = 4966974, upload-time = "2025-09-22T04:02:34.155Z" }, - { url = "https://files.pythonhosted.org/packages/1f/d3/131dec79ce61c5567fecf82515bd9bc36395df42501b50f7f7f3bd065df0/lxml-6.0.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:370cd78d5855cfbffd57c422851f7d3864e6ae72d0da615fca4dad8c45d375a5", size = 5102953, upload-time = "2025-09-22T04:02:36.054Z" }, - { url = "https://files.pythonhosted.org/packages/3a/ea/a43ba9bb750d4ffdd885f2cd333572f5bb900cd2408b67fdda07e85978a0/lxml-6.0.2-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:901e3b4219fa04ef766885fb40fa516a71662a4c61b80c94d25336b4934b71c0", size = 5055054, upload-time = "2025-09-22T04:02:38.154Z" }, - { url = "https://files.pythonhosted.org/packages/60/23/6885b451636ae286c34628f70a7ed1fcc759f8d9ad382d132e1c8d3d9bfd/lxml-6.0.2-cp314-cp314-manylinux_2_26_i686.manylinux_2_28_i686.whl", hash = "sha256:a4bf42d2e4cf52c28cc1812d62426b9503cdb0c87a6de81442626aa7d69707ba", size = 5352421, upload-time = "2025-09-22T04:02:40.413Z" }, - { url = "https://files.pythonhosted.org/packages/48/5b/fc2ddfc94ddbe3eebb8e9af6e3fd65e2feba4967f6a4e9683875c394c2d8/lxml-6.0.2-cp314-cp314-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:b2c7fdaa4d7c3d886a42534adec7cfac73860b89b4e5298752f60aa5984641a0", size = 5673684, upload-time = "2025-09-22T04:02:42.288Z" }, - { url = "https://files.pythonhosted.org/packages/29/9c/47293c58cc91769130fbf85531280e8cc7868f7fbb6d92f4670071b9cb3e/lxml-6.0.2-cp314-cp314-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:98a5e1660dc7de2200b00d53fa00bcd3c35a3608c305d45a7bbcaf29fa16e83d", size = 5252463, upload-time = "2025-09-22T04:02:44.165Z" }, - { url = "https://files.pythonhosted.org/packages/9b/da/ba6eceb830c762b48e711ded880d7e3e89fc6c7323e587c36540b6b23c6b/lxml-6.0.2-cp314-cp314-manylinux_2_31_armv7l.whl", hash = "sha256:dc051506c30b609238d79eda75ee9cab3e520570ec8219844a72a46020901e37", size = 4698437, upload-time = "2025-09-22T04:02:46.524Z" }, - { url = "https://files.pythonhosted.org/packages/a5/24/7be3f82cb7990b89118d944b619e53c656c97dc89c28cfb143fdb7cd6f4d/lxml-6.0.2-cp314-cp314-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:8799481bbdd212470d17513a54d568f44416db01250f49449647b5ab5b5dccb9", size = 5269890, upload-time = "2025-09-22T04:02:48.812Z" }, - { url = "https://files.pythonhosted.org/packages/1b/bd/dcfb9ea1e16c665efd7538fc5d5c34071276ce9220e234217682e7d2c4a5/lxml-6.0.2-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:9261bb77c2dab42f3ecd9103951aeca2c40277701eb7e912c545c1b16e0e4917", size = 5097185, upload-time = "2025-09-22T04:02:50.746Z" }, - { url = "https://files.pythonhosted.org/packages/21/04/a60b0ff9314736316f28316b694bccbbabe100f8483ad83852d77fc7468e/lxml-6.0.2-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:65ac4a01aba353cfa6d5725b95d7aed6356ddc0a3cd734de00124d285b04b64f", size = 4745895, upload-time = "2025-09-22T04:02:52.968Z" }, - { url = "https://files.pythonhosted.org/packages/d6/bd/7d54bd1846e5a310d9c715921c5faa71cf5c0853372adf78aee70c8d7aa2/lxml-6.0.2-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:b22a07cbb82fea98f8a2fd814f3d1811ff9ed76d0fc6abc84eb21527596e7cc8", size = 5695246, upload-time = "2025-09-22T04:02:54.798Z" }, - { url = "https://files.pythonhosted.org/packages/fd/32/5643d6ab947bc371da21323acb2a6e603cedbe71cb4c99c8254289ab6f4e/lxml-6.0.2-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:d759cdd7f3e055d6bc8d9bec3ad905227b2e4c785dc16c372eb5b5e83123f48a", size = 5260797, upload-time = "2025-09-22T04:02:57.058Z" }, - { url = "https://files.pythonhosted.org/packages/33/da/34c1ec4cff1eea7d0b4cd44af8411806ed943141804ac9c5d565302afb78/lxml-6.0.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:945da35a48d193d27c188037a05fec5492937f66fb1958c24fc761fb9d40d43c", size = 5277404, upload-time = "2025-09-22T04:02:58.966Z" }, - { url = "https://files.pythonhosted.org/packages/82/57/4eca3e31e54dc89e2c3507e1cd411074a17565fa5ffc437c4ae0a00d439e/lxml-6.0.2-cp314-cp314-win32.whl", hash = "sha256:be3aaa60da67e6153eb15715cc2e19091af5dc75faef8b8a585aea372507384b", size = 3670072, upload-time = "2025-09-22T04:03:38.05Z" }, - { url = "https://files.pythonhosted.org/packages/e3/e0/c96cf13eccd20c9421ba910304dae0f619724dcf1702864fd59dd386404d/lxml-6.0.2-cp314-cp314-win_amd64.whl", hash = "sha256:fa25afbadead523f7001caf0c2382afd272c315a033a7b06336da2637d92d6ed", size = 4080617, upload-time = "2025-09-22T04:03:39.835Z" }, - { url = "https://files.pythonhosted.org/packages/d5/5d/b3f03e22b3d38d6f188ef044900a9b29b2fe0aebb94625ce9fe244011d34/lxml-6.0.2-cp314-cp314-win_arm64.whl", hash = "sha256:063eccf89df5b24e361b123e257e437f9e9878f425ee9aae3144c77faf6da6d8", size = 3754930, upload-time = "2025-09-22T04:03:41.565Z" }, - { url = "https://files.pythonhosted.org/packages/5e/5c/42c2c4c03554580708fc738d13414801f340c04c3eff90d8d2d227145275/lxml-6.0.2-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:6162a86d86893d63084faaf4ff937b3daea233e3682fb4474db07395794fa80d", size = 8910380, upload-time = "2025-09-22T04:03:01.645Z" }, - { url = "https://files.pythonhosted.org/packages/bf/4f/12df843e3e10d18d468a7557058f8d3733e8b6e12401f30b1ef29360740f/lxml-6.0.2-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:414aaa94e974e23a3e92e7ca5b97d10c0cf37b6481f50911032c69eeb3991bba", size = 4775632, upload-time = "2025-09-22T04:03:03.814Z" }, - { url = "https://files.pythonhosted.org/packages/e4/0c/9dc31e6c2d0d418483cbcb469d1f5a582a1cd00a1f4081953d44051f3c50/lxml-6.0.2-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:48461bd21625458dd01e14e2c38dd0aea69addc3c4f960c30d9f59d7f93be601", size = 4975171, upload-time = "2025-09-22T04:03:05.651Z" }, - { url = "https://files.pythonhosted.org/packages/e7/2b/9b870c6ca24c841bdd887504808f0417aa9d8d564114689266f19ddf29c8/lxml-6.0.2-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:25fcc59afc57d527cfc78a58f40ab4c9b8fd096a9a3f964d2781ffb6eb33f4ed", size = 5110109, upload-time = "2025-09-22T04:03:07.452Z" }, - { url = "https://files.pythonhosted.org/packages/bf/0c/4f5f2a4dd319a178912751564471355d9019e220c20d7db3fb8307ed8582/lxml-6.0.2-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5179c60288204e6ddde3f774a93350177e08876eaf3ab78aa3a3649d43eb7d37", size = 5041061, upload-time = "2025-09-22T04:03:09.297Z" }, - { url = "https://files.pythonhosted.org/packages/12/64/554eed290365267671fe001a20d72d14f468ae4e6acef1e179b039436967/lxml-6.0.2-cp314-cp314t-manylinux_2_26_i686.manylinux_2_28_i686.whl", hash = "sha256:967aab75434de148ec80597b75062d8123cadf2943fb4281f385141e18b21338", size = 5306233, upload-time = "2025-09-22T04:03:11.651Z" }, - { url = "https://files.pythonhosted.org/packages/7a/31/1d748aa275e71802ad9722df32a7a35034246b42c0ecdd8235412c3396ef/lxml-6.0.2-cp314-cp314t-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:d100fcc8930d697c6561156c6810ab4a508fb264c8b6779e6e61e2ed5e7558f9", size = 5604739, upload-time = "2025-09-22T04:03:13.592Z" }, - { url = "https://files.pythonhosted.org/packages/8f/41/2c11916bcac09ed561adccacceaedd2bf0e0b25b297ea92aab99fd03d0fa/lxml-6.0.2-cp314-cp314t-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2ca59e7e13e5981175b8b3e4ab84d7da57993eeff53c07764dcebda0d0e64ecd", size = 5225119, upload-time = "2025-09-22T04:03:15.408Z" }, - { url = "https://files.pythonhosted.org/packages/99/05/4e5c2873d8f17aa018e6afde417c80cc5d0c33be4854cce3ef5670c49367/lxml-6.0.2-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:957448ac63a42e2e49531b9d6c0fa449a1970dbc32467aaad46f11545be9af1d", size = 4633665, upload-time = "2025-09-22T04:03:17.262Z" }, - { url = "https://files.pythonhosted.org/packages/0f/c9/dcc2da1bebd6275cdc723b515f93edf548b82f36a5458cca3578bc899332/lxml-6.0.2-cp314-cp314t-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:b7fc49c37f1786284b12af63152fe1d0990722497e2d5817acfe7a877522f9a9", size = 5234997, upload-time = "2025-09-22T04:03:19.14Z" }, - { url = "https://files.pythonhosted.org/packages/9c/e2/5172e4e7468afca64a37b81dba152fc5d90e30f9c83c7c3213d6a02a5ce4/lxml-6.0.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e19e0643cc936a22e837f79d01a550678da8377d7d801a14487c10c34ee49c7e", size = 5090957, upload-time = "2025-09-22T04:03:21.436Z" }, - { url = "https://files.pythonhosted.org/packages/a5/b3/15461fd3e5cd4ddcb7938b87fc20b14ab113b92312fc97afe65cd7c85de1/lxml-6.0.2-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:1db01e5cf14345628e0cbe71067204db658e2fb8e51e7f33631f5f4735fefd8d", size = 4764372, upload-time = "2025-09-22T04:03:23.27Z" }, - { url = "https://files.pythonhosted.org/packages/05/33/f310b987c8bf9e61c4dd8e8035c416bd3230098f5e3cfa69fc4232de7059/lxml-6.0.2-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:875c6b5ab39ad5291588aed6925fac99d0097af0dd62f33c7b43736043d4a2ec", size = 5634653, upload-time = "2025-09-22T04:03:25.767Z" }, - { url = "https://files.pythonhosted.org/packages/70/ff/51c80e75e0bc9382158133bdcf4e339b5886c6ee2418b5199b3f1a61ed6d/lxml-6.0.2-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:cdcbed9ad19da81c480dfd6dd161886db6096083c9938ead313d94b30aadf272", size = 5233795, upload-time = "2025-09-22T04:03:27.62Z" }, - { url = "https://files.pythonhosted.org/packages/56/4d/4856e897df0d588789dd844dbed9d91782c4ef0b327f96ce53c807e13128/lxml-6.0.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:80dadc234ebc532e09be1975ff538d154a7fa61ea5031c03d25178855544728f", size = 5257023, upload-time = "2025-09-22T04:03:30.056Z" }, - { url = "https://files.pythonhosted.org/packages/0f/85/86766dfebfa87bea0ab78e9ff7a4b4b45225df4b4d3b8cc3c03c5cd68464/lxml-6.0.2-cp314-cp314t-win32.whl", hash = "sha256:da08e7bb297b04e893d91087df19638dc7a6bb858a954b0cc2b9f5053c922312", size = 3911420, upload-time = "2025-09-22T04:03:32.198Z" }, - { url = "https://files.pythonhosted.org/packages/fe/1a/b248b355834c8e32614650b8008c69ffeb0ceb149c793961dd8c0b991bb3/lxml-6.0.2-cp314-cp314t-win_amd64.whl", hash = "sha256:252a22982dca42f6155125ac76d3432e548a7625d56f5a273ee78a5057216eca", size = 4406837, upload-time = "2025-09-22T04:03:34.027Z" }, - { url = "https://files.pythonhosted.org/packages/92/aa/df863bcc39c5e0946263454aba394de8a9084dbaff8ad143846b0d844739/lxml-6.0.2-cp314-cp314t-win_arm64.whl", hash = "sha256:bb4c1847b303835d89d785a18801a883436cdfd5dc3d62947f9c49e24f0f5a2c", size = 3822205, upload-time = "2025-09-22T04:03:36.249Z" }, + { url = "https://files.pythonhosted.org/packages/eb/45/cee4cf203ef0bab5c52afc118da61d6b460c928f2893d40023cfa27e0b80/lxml-6.1.0-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:ab863fd37458fed6456525f297d21239d987800c46e67da5ef04fc6b3dd93ac8", size = 8576713, upload-time = "2026-04-18T04:32:06.831Z" }, + { url = "https://files.pythonhosted.org/packages/8a/a7/eda05babeb7e046839204eaf254cd4d7c9130ce2bbf0d9e90ea41af5654d/lxml-6.1.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:6fd8b1df8254ff4fd93fd31da1fc15770bde23ac045be9bb1f87425702f61cc9", size = 4623874, upload-time = "2026-04-18T04:32:10.755Z" }, + { url = "https://files.pythonhosted.org/packages/e7/e9/db5846de9b436b91890a62f29d80cd849ea17948a49bf532d5278ee69a9e/lxml-6.1.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:47024feaae386a92a146af0d2aeed65229bf6fff738e6a11dda6b0015fb8fd03", size = 4949535, upload-time = "2026-04-18T04:34:06.657Z" }, + { url = "https://files.pythonhosted.org/packages/5a/ba/0d3593373dcae1d68f40dc3c41a5a92f2544e68115eb2f62319a4c2a6500/lxml-6.1.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3f00972f84450204cd5d93a5395965e348956aaceaadec693a22ec743f8ae3eb", size = 5086881, upload-time = "2026-04-18T04:34:09.556Z" }, + { url = "https://files.pythonhosted.org/packages/43/76/759a7484539ad1af0d125a9afe9c3fb5f82a8779fd1f5f56319d9e4ea2fd/lxml-6.1.0-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:97faa0860e13b05b15a51fb4986421ef7a30f0b3334061c416e0981e9450ca4c", size = 5031305, upload-time = "2026-04-18T04:34:12.336Z" }, + { url = "https://files.pythonhosted.org/packages/dc/b9/c1f0daf981a11e47636126901fd4ab82429e18c57aeb0fc3ad2940b42d8b/lxml-6.1.0-cp314-cp314-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:972a6451204798675407beaad97b868d0c733d9a74dafefc63120b81b8c2de28", size = 5647522, upload-time = "2026-04-18T04:34:14.89Z" }, + { url = "https://files.pythonhosted.org/packages/31/e6/1f533dcd205275363d9ba3511bcec52fa2df86abf8abe6a5f2c599f0dc31/lxml-6.1.0-cp314-cp314-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fe022f20bc4569ec66b63b3fb275a3d628d9d32da6326b2982584104db6d3086", size = 5239310, upload-time = "2026-04-18T04:34:17.652Z" }, + { url = "https://files.pythonhosted.org/packages/c3/8c/4175fb709c78a6e315ed814ed33be3defd8b8721067e70419a6cf6f971da/lxml-6.1.0-cp314-cp314-manylinux_2_28_i686.whl", hash = "sha256:75c4c7c619a744f972f4451bf5adf6d0fb00992a1ffc9fd78e13b0bc817cc99f", size = 5350799, upload-time = "2026-04-18T04:34:20.529Z" }, + { url = "https://files.pythonhosted.org/packages/fd/77/6ffdebc5994975f0dde4acb59761902bd9d9bb84422b9a0bd239a7da9ca8/lxml-6.1.0-cp314-cp314-manylinux_2_31_armv7l.whl", hash = "sha256:3648f20d25102a22b6061c688beb3a805099ea4beb0a01ce62975d926944d292", size = 4697693, upload-time = "2026-04-18T04:34:23.541Z" }, + { url = "https://files.pythonhosted.org/packages/f8/f1/565f36bd5c73294602d48e04d23f81ff4c8736be6ba5e1d1ec670ac9be80/lxml-6.1.0-cp314-cp314-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:77b9f99b17cbf14026d1e618035077060fc7195dd940d025149f3e2e830fbfcb", size = 5250708, upload-time = "2026-04-18T04:34:26.001Z" }, + { url = "https://files.pythonhosted.org/packages/5a/11/a68ab9dd18c5c499404deb4005f4bc4e0e88e5b72cd755ad96efec81d18d/lxml-6.1.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:32662519149fd7a9db354175aa5e417d83485a8039b8aaa62f873ceee7ea4cad", size = 5084737, upload-time = "2026-04-18T04:34:28.32Z" }, + { url = "https://files.pythonhosted.org/packages/ab/78/e8f41e2c74f4af564e6a0348aea69fb6daaefa64bc071ef469823d22cc18/lxml-6.1.0-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:73d658216fc173cf2c939e90e07b941c5e12736b0bf6a99e7af95459cfe8eabb", size = 4737817, upload-time = "2026-04-18T04:34:30.784Z" }, + { url = "https://files.pythonhosted.org/packages/06/2d/aa4e117aa2ce2f3b35d9ff246be74a2f8e853baba5d2a92c64744474603a/lxml-6.1.0-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:ac4db068889f8772a4a698c5980ec302771bb545e10c4b095d4c8be26749616f", size = 5670753, upload-time = "2026-04-18T04:34:33.675Z" }, + { url = "https://files.pythonhosted.org/packages/08/f5/dd745d50c0409031dbfcc4881740542a01e54d6f0110bd420fa7782110b8/lxml-6.1.0-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:45e9dfbd1b661eb64ba0d4dbe762bd210c42d86dd1e5bd2bdf89d634231beb43", size = 5238071, upload-time = "2026-04-18T04:34:36.12Z" }, + { url = "https://files.pythonhosted.org/packages/3e/74/ad424f36d0340a904665867dab310a3f1f4c96ff4039698de83b77f44c1f/lxml-6.1.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:89e8d73d09ac696a5ba42ec69787913d53284f12092f651506779314f10ba585", size = 5264319, upload-time = "2026-04-18T04:34:39.035Z" }, + { url = "https://files.pythonhosted.org/packages/53/36/a15d8b3514ec889bfd6aa3609107fcb6c9189f8dc347f1c0b81eded8d87c/lxml-6.1.0-cp314-cp314-win32.whl", hash = "sha256:ebe33f4ec1b2de38ceb225a1749a2965855bffeef435ba93cd2d5d540783bf2f", size = 3657139, upload-time = "2026-04-18T04:32:20.006Z" }, + { url = "https://files.pythonhosted.org/packages/1a/a4/263ebb0710851a3c6c937180a9a86df1206fdfe53cc43005aa2237fd7736/lxml-6.1.0-cp314-cp314-win_amd64.whl", hash = "sha256:398443df51c538bd578529aa7e5f7afc6c292644174b47961f3bf87fe5741120", size = 4064195, upload-time = "2026-04-18T04:32:23.876Z" }, + { url = "https://files.pythonhosted.org/packages/80/68/2000f29d323b6c286de077ad20b429fc52272e44eae6d295467043e56012/lxml-6.1.0-cp314-cp314-win_arm64.whl", hash = "sha256:8c8984e1d8c4b3949e419158fda14d921ff703a9ed8a47236c6eb7a2b6cb4946", size = 3741870, upload-time = "2026-04-18T04:32:27.922Z" }, + { url = "https://files.pythonhosted.org/packages/30/e9/21383c7c8d43799f0da90224c0d7c921870d476ec9b3e01e1b2c0b8237c5/lxml-6.1.0-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:1081dd10bc6fa437db2500e13993abf7cc30716d0a2f40e65abb935f02ec559c", size = 8827548, upload-time = "2026-04-18T04:32:15.094Z" }, + { url = "https://files.pythonhosted.org/packages/a5/01/c6bc11cd587030dd4f719f65c5657960649fe3e19196c844c75bf32cd0d6/lxml-6.1.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:dabecc48db5f42ba348d1f5d5afdc54c6c4cc758e676926c7cd327045749517d", size = 4735866, upload-time = "2026-04-18T04:32:18.924Z" }, + { url = "https://files.pythonhosted.org/packages/f3/01/757132fff5f4acf25463b5298f1a46099f3a94480b806547b29ce5e385de/lxml-6.1.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:e3dd5fe19c9e0ac818a9c7f132a5e43c1339ec1cbbfecb1a938bd3a47875b7c9", size = 4969476, upload-time = "2026-04-18T04:34:41.889Z" }, + { url = "https://files.pythonhosted.org/packages/fd/fb/1bc8b9d27ed64be7c8903db6c89e74dc8c2cd9ec630a7462e4654316dc5b/lxml-6.1.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:9e7b0a4ca6dcc007a4cef00a761bba2dea959de4bd2df98f926b33c92ca5dfb9", size = 5103719, upload-time = "2026-04-18T04:34:44.797Z" }, + { url = "https://files.pythonhosted.org/packages/d5/e7/5bf82fa28133536a54601aae633b14988e89ed61d4c1eb6b899b023233aa/lxml-6.1.0-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5d27bbe326c6b539c64b42638b18bc6003a8d88f76213a97ac9ed4f885efeab7", size = 5027890, upload-time = "2026-04-18T04:34:47.634Z" }, + { url = "https://files.pythonhosted.org/packages/2d/20/e048db5d4b4ea0366648aa595f26bb764b2670903fc585b87436d0a5032c/lxml-6.1.0-cp314-cp314t-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c4e425db0c5445ef0ad56b0eec54f89b88b2d884656e536a90b2f52aecb4ca86", size = 5596008, upload-time = "2026-04-18T04:34:51.503Z" }, + { url = "https://files.pythonhosted.org/packages/9a/c2/d10807bc8da4824b39e5bd01b5d05c077b6fd01bd91584167edf6b269d22/lxml-6.1.0-cp314-cp314t-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4b89b098105b8599dc57adac95d1813409ac476d3c948a498775d3d0c6124bfb", size = 5224451, upload-time = "2026-04-18T04:34:54.263Z" }, + { url = "https://files.pythonhosted.org/packages/3c/15/2ebea45bea427e7f0057e9ce7b2d62c5aba20c6b001cca89ed0aadb3ad41/lxml-6.1.0-cp314-cp314t-manylinux_2_28_i686.whl", hash = "sha256:c4a699432846df86cc3de502ee85f445ebad748a1c6021d445f3e514d2cd4b1c", size = 5312135, upload-time = "2026-04-18T04:34:56.818Z" }, + { url = "https://files.pythonhosted.org/packages/31/e2/87eeae151b0be2a308d49a7ec444ff3eb192b14251e62addb29d0bf3778f/lxml-6.1.0-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:30e7b2ed63b6c8e97cca8af048589a788ab5c9c905f36d9cf1c2bb549f450d2f", size = 4639126, upload-time = "2026-04-18T04:34:59.704Z" }, + { url = "https://files.pythonhosted.org/packages/a3/51/8a3f6a20902ad604dd746ec7b4000311b240d389dac5e9d95adefd349e0c/lxml-6.1.0-cp314-cp314t-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:022981127642fe19866d2907d76241bb07ed21749601f727d5d5dd1ce5d1b773", size = 5232579, upload-time = "2026-04-18T04:35:02.658Z" }, + { url = "https://files.pythonhosted.org/packages/6d/d2/650d619bdbe048d2c3f2c31edb00e35670a5e2d65b4fe3b61bce37b19121/lxml-6.1.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:23cad0cc86046d4222f7f418910e46b89971c5a45d3c8abfad0f64b7b05e4a9b", size = 5084206, upload-time = "2026-04-18T04:35:05.175Z" }, + { url = "https://files.pythonhosted.org/packages/dd/8a/672ca1a3cbeabd1f511ca275a916c0514b747f4b85bdaae103b8fa92f307/lxml-6.1.0-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:21c3302068f50d1e8728c67c87ba92aa87043abee517aa2576cca1855326b405", size = 4758906, upload-time = "2026-04-18T04:35:08.098Z" }, + { url = "https://files.pythonhosted.org/packages/be/f1/ef4b691da85c916cb2feb1eec7414f678162798ac85e042fa164419ac05c/lxml-6.1.0-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:be10838781cb3be19251e276910cd508fe127e27c3242e50521521a0f3781690", size = 5620553, upload-time = "2026-04-18T04:35:11.23Z" }, + { url = "https://files.pythonhosted.org/packages/59/17/94e81def74107809755ac2782fdad4404420f1c92ca83433d117a6d5acf0/lxml-6.1.0-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:2173a7bffe97667bbf0767f8a99e587740a8c56fdf3befac4b09cb29a80276fd", size = 5229458, upload-time = "2026-04-18T04:35:14.254Z" }, + { url = "https://files.pythonhosted.org/packages/21/55/c4be91b0f830a871fc1b0d730943d56013b683d4671d5198260e2eae722b/lxml-6.1.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:c6854e9cf99c84beb004eecd7d3a3868ef1109bf2b1df92d7bc11e96a36c2180", size = 5247861, upload-time = "2026-04-18T04:35:17.006Z" }, + { url = "https://files.pythonhosted.org/packages/c2/ca/77123e4d77df3cb1e968ade7b1f808f5d3a5c1c96b18a33895397de292c1/lxml-6.1.0-cp314-cp314t-win32.whl", hash = "sha256:00750d63ef0031a05331b9223463b1c7c02b9004cef2346a5b2877f0f9494dd2", size = 3897377, upload-time = "2026-04-18T04:32:07.656Z" }, + { url = "https://files.pythonhosted.org/packages/64/ce/3554833989d074267c063209bae8b09815e5656456a2d332b947806b05ff/lxml-6.1.0-cp314-cp314t-win_amd64.whl", hash = "sha256:80410c3a7e3c617af04de17caa9f9f20adaa817093293d69eae7d7d0522836f5", size = 4392701, upload-time = "2026-04-18T04:32:12.113Z" }, + { url = "https://files.pythonhosted.org/packages/2b/a0/9b916c68c0e57752c07f8f64b30138d9d4059dbeb27b90274dedbea128ff/lxml-6.1.0-cp314-cp314t-win_arm64.whl", hash = "sha256:26dd9f57ee3bd41e7d35b4c98a2ffd89ed11591649f421f0ec19f67d50ec67ac", size = 3817120, upload-time = "2026-04-18T04:32:15.803Z" }, ] [[package]] @@ -2149,11 +2142,11 @@ wheels = [ [[package]] name = "markdown2" -version = "2.5.4" +version = "2.5.5" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/42/f8/b2ae8bf5f28f9b510ae097415e6e4cb63226bb28d7ee01aec03a755ba03b/markdown2-2.5.4.tar.gz", hash = "sha256:a09873f0b3c23dbfae589b0080587df52ad75bb09a5fa6559147554736676889", size = 145652, upload-time = "2025-07-27T16:16:24.307Z" } +sdist = { url = "https://files.pythonhosted.org/packages/e4/ae/07d4a5fcaa5509221287d289323d75ac8eda5a5a4ac9de2accf7bbcc2b88/markdown2-2.5.5.tar.gz", hash = "sha256:001547e68f6e7fcf0f1cb83f7e82f48aa7d48b2c6a321f0cd20a853a8a2d1664", size = 157249, upload-time = "2026-03-02T20:46:53.411Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b8/06/2697b5043c3ecb720ce0d243fc7cf5024c0b5b1e450506e9b21939019963/markdown2-2.5.4-py3-none-any.whl", hash = "sha256:3c4b2934e677be7fec0e6f2de4410e116681f4ad50ec8e5ba7557be506d3f439", size = 49954, upload-time = "2025-07-27T16:16:23.026Z" }, + { url = "https://files.pythonhosted.org/packages/43/af/4b3891eb0a49d6cfd5cbf3e9bf514c943afc2b0f13e2c57cc57cd88ecc21/markdown2-2.5.5-py3-none-any.whl", hash = "sha256:be798587e09d1f52d2e4d96a649c4b82a778c75f9929aad52a2c95747fa26941", size = 56250, upload-time = "2026-03-02T20:46:52.032Z" }, ] [[package]] @@ -2188,34 +2181,34 @@ wheels = [ [[package]] name = "maxminddb" -version = "3.0.0" +version = "3.1.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b2/6e/6adbb0b2280a853e8b3344737fea5167e8a2a2ff67168555589b7278e2e8/maxminddb-3.0.0.tar.gz", hash = "sha256:9792b19625945dff146e2e3187f9e470b82330a912f7cea5581b8bd5af30da8b", size = 199784, upload-time = "2025-10-15T20:50:07.283Z" } +sdist = { url = "https://files.pythonhosted.org/packages/31/83/bcd7f2e7dfcf601258a4eab92155816218e8f8adf6608d5f7d39da7ba863/maxminddb-3.1.1.tar.gz", hash = "sha256:b19a938c481518f19a2c534ffdcb3bc59582f0fbbdcf9f81ac9adf912a0af686", size = 212410, upload-time = "2026-03-05T18:14:19.601Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/96/cb/eed553828b6bcd1bb8c3eb74818aee471c63aba6612128d73c20da122921/maxminddb-3.0.0-cp314-cp314-android_24_arm64_v8a.whl", hash = "sha256:1a89feae4b7296f24a76467788dad73578bbf51e4cf9672e61ef1be1320dd3d6", size = 37412, upload-time = "2025-10-15T20:49:21.649Z" }, - { url = "https://files.pythonhosted.org/packages/65/3b/0dba6d1d078e2a0523bc0a89c0060b1366a2f9ee8f72f47c33a107e56fab/maxminddb-3.0.0-cp314-cp314-android_24_x86_64.whl", hash = "sha256:e874238be93b6e6b3c6589795015edb9b935d2638806439ee65c66669e399b2d", size = 37876, upload-time = "2025-10-15T20:49:23.165Z" }, - { url = "https://files.pythonhosted.org/packages/a3/49/d4b0636aec3671c3aedf97013b24b6b310de62d6ab373b775a3a8dd594a9/maxminddb-3.0.0-cp314-cp314-ios_13_0_arm64_iphoneos.whl", hash = "sha256:a45fc20423952f84a73c008d40ea5b1d8c343a3c58d229a45d78a20093817a6f", size = 35334, upload-time = "2025-10-15T20:49:24.554Z" }, - { url = "https://files.pythonhosted.org/packages/37/d7/6ff7c7386365f639cff20fb1d0f4b6533b12706b4a0ae05cfdaf0b41f768/maxminddb-3.0.0-cp314-cp314-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:d3796460179976fea3f99855bd75811af74f5659699584d4b7e80a7c66b52893", size = 35887, upload-time = "2025-10-15T20:49:25.614Z" }, - { url = "https://files.pythonhosted.org/packages/bb/ee/e7d8942bbdf06a2082611d52e89ece4e6064195ddb18a7158b5f53e76bc7/maxminddb-3.0.0-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:7997f0b1ed0210b0790a1885e9bc38bed53fdcaaf37141cf8dd1a97894c8fa1b", size = 54335, upload-time = "2025-10-15T20:49:26.728Z" }, - { url = "https://files.pythonhosted.org/packages/77/e1/bd16679264463d2c340940b5b320cc97cd240a3a0b6c1811c88b82d292db/maxminddb-3.0.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:21f9d0c164f7c058f419cd9b1105f01606b2abf77b456e8d201700804667686f", size = 36528, upload-time = "2025-10-15T20:49:27.842Z" }, - { url = "https://files.pythonhosted.org/packages/6f/41/cf8a5ca1ede1fcd1b306d504a3949d52fd87124fcc2c2180afbcf714ff54/maxminddb-3.0.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:e7fe7a2a6b2275736fd090d98e081146a1b81abf475d6d2dfd1b106d3792b208", size = 36147, upload-time = "2025-10-15T20:49:28.935Z" }, - { url = "https://files.pythonhosted.org/packages/4a/e0/cd48d467c34ac108fcee9e444dd537e27f04a945d787acd5614f1127dbe5/maxminddb-3.0.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5aaa656d5cb2ea60f4e845669be6a759a25aa1f0cd67fbfef0e64759af28dbb7", size = 101010, upload-time = "2025-10-15T20:49:30.122Z" }, - { url = "https://files.pythonhosted.org/packages/4f/4b/323ec8abe811702bcea537a0aa5e83442f48f1974084bdb048b75424536c/maxminddb-3.0.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c6b86dedb1ae681376bcc31bec37d7d674c86ff05687738ab333f18988f17c3a", size = 99249, upload-time = "2025-10-15T20:49:31.332Z" }, - { url = "https://files.pythonhosted.org/packages/d7/1a/520fcb6ad4185857fbba74cb1ee42b580492049c3730ce0687ac54dbe731/maxminddb-3.0.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:fde874c2af4dd4488c423b4f4bc2ec9931e5e992f382feb43d07dc4e8dda5e24", size = 98418, upload-time = "2025-10-15T20:49:32.879Z" }, - { url = "https://files.pythonhosted.org/packages/af/20/8650798c8e0806a07e2534c562acf1e3d735ac7aaee0abab370f80c56977/maxminddb-3.0.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:397a90b6db4563abe6d5fb08e112afd4481b8354fa64d289625c2e941b787860", size = 97092, upload-time = "2025-10-15T20:49:34.529Z" }, - { url = "https://files.pythonhosted.org/packages/97/c8/0b89ba3651519c021cf2258a5d0c1af306245f2f5e3e05618f28200270d2/maxminddb-3.0.0-cp314-cp314-win32.whl", hash = "sha256:38ba5ce9efb19f1bf5915f9dca8495f5eb63677cf7760ba7038850d3dcde6572", size = 36144, upload-time = "2025-10-15T20:49:35.702Z" }, - { url = "https://files.pythonhosted.org/packages/9e/9f/06b232bb67f13580ae36aa15ddac85d4b38203363801cdd72d70aaba1b56/maxminddb-3.0.0-cp314-cp314-win_amd64.whl", hash = "sha256:9c8c62de3b10d1940abd0c18ed57879b6618e26b78a17ab4a576ac30f96a0e83", size = 38069, upload-time = "2025-10-15T20:49:37.141Z" }, - { url = "https://files.pythonhosted.org/packages/70/dd/a76d5b755bdbe24dd1e03f2ce1951d8d9e70fca80abc7498abbec4441f71/maxminddb-3.0.0-cp314-cp314-win_arm64.whl", hash = "sha256:f0bfd8326a012cb2c8a282531ce900e6535dfc3e50d99c04e64453f782201bd0", size = 34804, upload-time = "2025-10-15T20:49:38.44Z" }, - { url = "https://files.pythonhosted.org/packages/f3/02/512f13edf16e8bf3e01cff958d58bcf023c9ab3ba3d5cda92e011a57f34e/maxminddb-3.0.0-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:6a4330999ab1987f82d32ad969fddcace596dbf8a5c075104e88568f0c326f94", size = 58264, upload-time = "2025-10-15T20:49:39.891Z" }, - { url = "https://files.pythonhosted.org/packages/10/3a/0e8551e0a254489769ab5336bddf5898bead7f6dad17645f85473922a01d/maxminddb-3.0.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:7d22b9706c96872b5ee08a1085af9af986832e52c9cc399aa445f4d3d52f2475", size = 38622, upload-time = "2025-10-15T20:49:41.88Z" }, - { url = "https://files.pythonhosted.org/packages/46/85/1ee105d2870c62df68aa2c6c2b886910de8936d9a67d261e55b0dfc9be53/maxminddb-3.0.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:758f1b656c8bf7b5308d23bbcfe61918f1dd57394331e4300402fd2814e748f4", size = 38028, upload-time = "2025-10-15T20:49:43.326Z" }, - { url = "https://files.pythonhosted.org/packages/2c/5f/b01340be810e8a846db21e839a5d80305628765803fabb45aab31d4c96f6/maxminddb-3.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1efe051b84bd90c86571ae7e02479d09dcf6f84925702c2abe870f8cec4a443c", size = 117895, upload-time = "2025-10-15T20:49:45.209Z" }, - { url = "https://files.pythonhosted.org/packages/3e/34/06c029169335d3557904749f15e4a03361471869655693c8b83d4b64dd29/maxminddb-3.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3a87b1d0409aea9903a5f9f2700abb798c46a115941f28ac23b7905fc3ce3967", size = 114609, upload-time = "2025-10-15T20:49:46.59Z" }, - { url = "https://files.pythonhosted.org/packages/18/e1/3dc1c8742e552be3f074943a6fc2e27a6cdaef559613f03b5158833994a4/maxminddb-3.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:029fce189a447d0c0a5729685ae1af3793de364f7301391cde5604282901c52f", size = 113977, upload-time = "2025-10-15T20:49:47.817Z" }, - { url = "https://files.pythonhosted.org/packages/96/f3/566927372c444dc35f54d17a3a608939586c9b3e5ce9d1282a27ed0e1dde/maxminddb-3.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:0652a3858c6c6f70e94df1eb3e4755087b8278c4280c473fb533280ff2a4d281", size = 111818, upload-time = "2025-10-15T20:49:49.217Z" }, - { url = "https://files.pythonhosted.org/packages/c9/b6/6f97bbb6535cbf0e57cbfff3cde75d3b419d0e192b38d6f33050d6f97ec3/maxminddb-3.0.0-cp314-cp314t-win32.whl", hash = "sha256:b240375d51a91f98d050f3f4f1ed164c0c7e4fb7c55ef7767242ef3d56147853", size = 37395, upload-time = "2025-10-15T20:49:50.401Z" }, - { url = "https://files.pythonhosted.org/packages/96/41/5296294d494cfc111d000d2e85367a89abe5756f86d2669453c6e1a39334/maxminddb-3.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:b23e77eaa343dccdf85aad422ac16b65ed2181abdc7678945d07e89187a0b15b", size = 39553, upload-time = "2025-10-15T20:49:51.464Z" }, - { url = "https://files.pythonhosted.org/packages/8c/34/7910eff964987e82ffa78b94a59e943e52cd2e51f40a1ffede0e9e6ecf86/maxminddb-3.0.0-cp314-cp314t-win_arm64.whl", hash = "sha256:d2306c0a50eeafc882fcfce0c99b44400ae95b9283187902236248c2cf904d2a", size = 35418, upload-time = "2025-10-15T20:49:52.528Z" }, + { url = "https://files.pythonhosted.org/packages/23/f1/b5069070975602ad14e7898b883dda0b0785dab3c24f5750f5b7fa4e14c3/maxminddb-3.1.1-cp314-cp314-android_24_arm64_v8a.whl", hash = "sha256:b2f859ff9ab56b8ce1c2033fdd978273d432ef1b03fbba24dd28d284bc9e2b41", size = 37401, upload-time = "2026-03-05T18:13:39.624Z" }, + { url = "https://files.pythonhosted.org/packages/85/b3/1816167dbf9e1373f32548d26c45a74215750680e6a61943355e0d2d157a/maxminddb-3.1.1-cp314-cp314-android_24_x86_64.whl", hash = "sha256:40116947ad235692dff2f1590269a844d8623036caf99310a0ea6833b04673ca", size = 37923, upload-time = "2026-03-05T18:13:41.153Z" }, + { url = "https://files.pythonhosted.org/packages/b6/f0/6e3a1ea6586fa49f2c438dd48ef9f7e67352729583f9ac6552f0d7d110ad/maxminddb-3.1.1-cp314-cp314-ios_13_0_arm64_iphoneos.whl", hash = "sha256:b83155134842f6dcd06f9ba9b661028a2154debc41bfc6b8d665d67267891153", size = 35248, upload-time = "2026-03-05T18:13:42.122Z" }, + { url = "https://files.pythonhosted.org/packages/75/3c/bab279d11b8225e283175be8f6250366d362f131e282723946052c09cc2a/maxminddb-3.1.1-cp314-cp314-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:c2aa82dbb882714071403fe19b301a87a750eb8b58af60fd794afebe9447c0fb", size = 35798, upload-time = "2026-03-05T18:13:43.482Z" }, + { url = "https://files.pythonhosted.org/packages/ff/e2/95baf6f117f9bc35de7c83b061b3fd27a49d03e0cda6c4dc5432167ac06e/maxminddb-3.1.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:65cbeaf809aaeb464e6c89086c45e0e4b9f15b73a28825fea0c570cf6fae18b6", size = 54226, upload-time = "2026-03-05T18:13:44.757Z" }, + { url = "https://files.pythonhosted.org/packages/ca/c7/bdcf8ca67c7d93007a4ed512cec61a0e13b43cf9abbb9dfdacd458dff049/maxminddb-3.1.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:ebb79b06f94577c37206a2143e157f4f8e6baf4f4473734b16993e04e0b1fdd7", size = 36368, upload-time = "2026-03-05T18:13:45.778Z" }, + { url = "https://files.pythonhosted.org/packages/da/71/a6cba811aa0ce539dff57400435643b2c05e607563f412c9138f50f14d34/maxminddb-3.1.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:fac648527d83c4357f8f060f362a3c24f3aeb94bd458e2221522b7783dac5235", size = 36022, upload-time = "2026-03-05T18:13:47.02Z" }, + { url = "https://files.pythonhosted.org/packages/b2/72/c315b8e072663f77f928996fa6b8a084660d4130e00f092943fa9c892016/maxminddb-3.1.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d27c57d402cffae339e07224d04315ec1fd923a113dce5a9b2bf5894df8bdcfa", size = 103242, upload-time = "2026-03-05T18:13:48.021Z" }, + { url = "https://files.pythonhosted.org/packages/d3/13/7914f150c633e8acbbcde6e37b58a280f79888d5668ae5a50bd3846fde2b/maxminddb-3.1.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7bf4df891b71bb30ef0583effb0e694f610649ace69212def73dd20cc4ae8038", size = 101080, upload-time = "2026-03-05T18:13:49.127Z" }, + { url = "https://files.pythonhosted.org/packages/92/a5/d856e34333b80594443a82a384eb383a64c06dd7047a81efb42d129a6412/maxminddb-3.1.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:5fa302b97d205d32e950bb38907a253a76d8a0091f2db5921e6561dbfa8febd1", size = 100611, upload-time = "2026-03-05T18:13:50.667Z" }, + { url = "https://files.pythonhosted.org/packages/19/56/bdc5bb7cdac55895aa69b76c4daa39c72c0bb9840439f08ba21e5b9f24c8/maxminddb-3.1.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:3fa33c7e220106a3b9b24e5046c9573079730b62cad61b70897768f319d84323", size = 98959, upload-time = "2026-03-05T18:13:52.088Z" }, + { url = "https://files.pythonhosted.org/packages/26/ff/ef98fea99940ef8fc9e55607fcf1afbf37774a6e01815837f735427b29d7/maxminddb-3.1.1-cp314-cp314-win32.whl", hash = "sha256:16fa02b016f8d12e9d78a610a3abfe98510c7db2592cfebaaeb768067c10448f", size = 36291, upload-time = "2026-03-05T18:13:53.085Z" }, + { url = "https://files.pythonhosted.org/packages/36/f8/2866267b7728d6877930a22de42e771010f94e5832432a71c1bb0ce1c2e3/maxminddb-3.1.1-cp314-cp314-win_amd64.whl", hash = "sha256:0fa73771e95a1fc4a2c5f3530191473da9eb39ec8301999bd18d9ac6a9becb79", size = 38050, upload-time = "2026-03-05T18:13:54.072Z" }, + { url = "https://files.pythonhosted.org/packages/75/82/5b77a81e7ba8c8c83df1daa6cb701490589f5a17238a716d180a105ddf6d/maxminddb-3.1.1-cp314-cp314-win_arm64.whl", hash = "sha256:ad144247e94aca2e6f51408ce24ef9184f6bf440affce61090578382cdf69ffc", size = 34785, upload-time = "2026-03-05T18:13:56.232Z" }, + { url = "https://files.pythonhosted.org/packages/03/ef/72d6ef4f7acc428b8a8f3910f1acaacc33fcd55cd339029c33a234b6211f/maxminddb-3.1.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:5334cee936368d43f7d99028bb37c864e8862465c6eac838e145d995e30707ec", size = 58136, upload-time = "2026-03-05T18:13:57.19Z" }, + { url = "https://files.pythonhosted.org/packages/9d/a7/9f925bc30b77107b32cad2cab23aa5c459544079de62d6bcd3558dfe9a90/maxminddb-3.1.1-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:ff7d739fbefe2529b76dce0362a165795e369ca2d79e04882b42035ab2c16e44", size = 38443, upload-time = "2026-03-05T18:13:58.229Z" }, + { url = "https://files.pythonhosted.org/packages/86/8d/80c53840f598d77c01b94c718cc9b66658d677cf09b41f84d92aa04d0f81/maxminddb-3.1.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:e5d0709dae06d6f242acc1dd02495b6e1668ea898e22431865f8afc95aa4e7d0", size = 37937, upload-time = "2026-03-05T18:13:59.495Z" }, + { url = "https://files.pythonhosted.org/packages/4f/25/6a6f9aaf1af7c8ba83ab84792a7999a442b260bdadd84687800fde56fc4a/maxminddb-3.1.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e61dca3fd6709817762940f25fc86279957883a00c409612893a168974aba9f1", size = 120046, upload-time = "2026-03-05T18:14:00.48Z" }, + { url = "https://files.pythonhosted.org/packages/e9/30/789efe80b43611cafa21bc130ae21c1b09ce7582c52a71d0f393ec69e868/maxminddb-3.1.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bfb73a59ab7a3ccce1b00f048fdab982303253da26324943c831dd5d0f6db99b", size = 116454, upload-time = "2026-03-05T18:14:01.621Z" }, + { url = "https://files.pythonhosted.org/packages/81/e2/da72e8a106539b40777ea0c991a1f5b896fe1374fce5d6a0d16977d49a1a/maxminddb-3.1.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:f7e7a0accc4011fd0528c9755010c9d4be06ee116cc0c2aff0ce0f63f792cb41", size = 116395, upload-time = "2026-03-05T18:14:02.689Z" }, + { url = "https://files.pythonhosted.org/packages/d4/6d/e18a61f2c2ab08d92801525468be807c5e2f1fed5b817cd35d1c535669db/maxminddb-3.1.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:3f5032043db990f159b0e8e2747468f4665a3b5b345e343f620fe71c91fb2631", size = 113548, upload-time = "2026-03-05T18:14:03.767Z" }, + { url = "https://files.pythonhosted.org/packages/04/ba/015d8608e8ab108b6c5e8c252f51155385a70224f439e898ae01cd3aeb67/maxminddb-3.1.1-cp314-cp314t-win32.whl", hash = "sha256:962edb5f23f9e8dfbdfc775d9e452e4017adae2fb12d1b0a955dbddb7747e781", size = 37499, upload-time = "2026-03-05T18:14:04.823Z" }, + { url = "https://files.pythonhosted.org/packages/39/67/8da91c3a89530209057e27f314859e17f8d93244b73945d01036e89cf819/maxminddb-3.1.1-cp314-cp314t-win_amd64.whl", hash = "sha256:6879a4d822b894d1717aeef20b3558fdf1d1f6cf1ce25a7ad46d0a43ed745f63", size = 39557, upload-time = "2026-03-05T18:14:06.334Z" }, + { url = "https://files.pythonhosted.org/packages/f1/3e/36c6010a302f822d054fed7ed7009d39dd0ed662c17a01e36dce956787ca/maxminddb-3.1.1-cp314-cp314t-win_arm64.whl", hash = "sha256:9cc4eb1d2648c0188d7649babe8df1236d22972a753676db3b7487646a65b0c7", size = 35396, upload-time = "2026-03-05T18:14:07.281Z" }, ] [[package]] @@ -2229,21 +2222,21 @@ wheels = [ [[package]] name = "microsoft-kiota-abstractions" -version = "1.9.8" +version = "1.10.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "opentelemetry-api" }, { name = "opentelemetry-sdk" }, { name = "std-uritemplate" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/2b/22/a425ffdd1e637aeb921c06eb0fa03946cdd3830f1a151fe460a678a0eebc/microsoft_kiota_abstractions-1.9.8.tar.gz", hash = "sha256:920cbe280fb827e8839c6dbe3cd3233b1d7308d204847d82797717d1160356c6", size = 24465, upload-time = "2025-12-29T15:24:34.851Z" } +sdist = { url = "https://files.pythonhosted.org/packages/3f/28/d22b26bc7b6d6947250de92f87d536d7e271de638660c9571821efac3302/microsoft_kiota_abstractions-1.10.1.tar.gz", hash = "sha256:ff922f6ac7e4a538d253e5bacb18f5c8c837d0273fb436eec2f0500c70230d96", size = 24465, upload-time = "2026-04-08T16:16:53.598Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/3d/03/9a6678f2ab11d9feaa7739eab1e3cf4d38f9abc46a47f48f32083bf2f1c7/microsoft_kiota_abstractions-1.9.8-py3-none-any.whl", hash = "sha256:bb3243ce776dc0197cb006289a6f0b8a0db699b3885206adde7e6a76c17904a1", size = 44454, upload-time = "2025-12-29T15:24:33.625Z" }, + { url = "https://files.pythonhosted.org/packages/37/83/a099731bb11df9f3e2c39364a94579523aaa20c315a89ee69d8b7c851436/microsoft_kiota_abstractions-1.10.1-py3-none-any.whl", hash = "sha256:31d3f0581884eb221899f355834d86ceba6289b4b9df23e63d01f02aac6c4d0b", size = 44456, upload-time = "2026-04-08T16:16:54.646Z" }, ] [[package]] name = "microsoft-kiota-authentication-azure" -version = "1.9.8" +version = "1.10.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "aiohttp" }, @@ -2252,14 +2245,14 @@ dependencies = [ { name = "opentelemetry-api" }, { name = "opentelemetry-sdk" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/96/2a/f307a36c29043e9aaf3055f2b257de518904470da90a10b49bc415a562a3/microsoft_kiota_authentication_azure-1.9.8.tar.gz", hash = "sha256:8bc2b3819c650d10555b897c47d6f9ec231b1300fac0fb5756d7d3a612b9f1c9", size = 5000, upload-time = "2025-12-29T15:24:45.784Z" } +sdist = { url = "https://files.pythonhosted.org/packages/52/b6/8bccdf62dedae77ad2bc77f27292880420d5190cea163d77312ee8e69551/microsoft_kiota_authentication_azure-1.10.1.tar.gz", hash = "sha256:7de150868dab399b4ac36cb17a0ae726ff616079cee9b0a72e7d5e06f5c652e9", size = 4992, upload-time = "2026-04-08T16:17:05.891Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/3d/6f/62167e5f1a941f5fd12476da43f13a8aac16f634481e317bdba31381da84/microsoft_kiota_authentication_azure-1.9.8-py3-none-any.whl", hash = "sha256:953e184cdbfcc6d1c6da18477458856c7ff8a69087896cf638b72b34785b036d", size = 6953, upload-time = "2025-12-29T15:24:44.659Z" }, + { url = "https://files.pythonhosted.org/packages/80/99/325df634219d113d2418c76883f5cf9debf0ebb1ff04fb04438f7bc56284/microsoft_kiota_authentication_azure-1.10.1-py3-none-any.whl", hash = "sha256:0f82de6dbfc55d3b1df5c42d5c82631014f9db9c45ba0d0a2cdf13853f78649d", size = 6953, upload-time = "2026-04-08T16:17:06.548Z" }, ] [[package]] name = "microsoft-kiota-http" -version = "1.9.8" +version = "1.10.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "httpx", extra = ["http2"] }, @@ -2267,71 +2260,71 @@ dependencies = [ { name = "opentelemetry-api" }, { name = "opentelemetry-sdk" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ab/ba/f1569248e0f3d63eadcc7a9e9ec5252b4578a6602cc22d2fd79fa6041458/microsoft_kiota_http-1.9.8.tar.gz", hash = "sha256:01c4afe3ea61184b20053ad1d59d277e8c53fc1766d1b4d7b20a61d8c2883ce5", size = 21267, upload-time = "2025-12-29T15:24:55.083Z" } +sdist = { url = "https://files.pythonhosted.org/packages/33/2c/564a5cd50eb90f05bad0c970f832ad71d382bbe9003f0272c859492a01f7/microsoft_kiota_http-1.10.1.tar.gz", hash = "sha256:ee8eec8e35c467a22aedbe5f9b6699bc79411cc8f207705044e58ced22c588da", size = 21487, upload-time = "2026-04-08T16:17:15.585Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a3/b9/f42d80428d9486657b333be4206c793404fffbb452dfb6cb7c7659f6a9bf/microsoft_kiota_http-1.9.8-py3-none-any.whl", hash = "sha256:d632a8283bce707b0efa75517a0da92cdd0d81204246f06b164f4e72d99eb20a", size = 31626, upload-time = "2025-12-29T15:24:53.941Z" }, + { url = "https://files.pythonhosted.org/packages/11/ea/4ee59599c57561663d9f4d44e5de674f77ad1f7432242aba042768403c31/microsoft_kiota_http-1.10.1-py3-none-any.whl", hash = "sha256:77944e25594a65cced34702fa953bfd631eec1492ae4bef3d398eabc4ed8a6bc", size = 31951, upload-time = "2026-04-08T16:17:16.319Z" }, ] [[package]] name = "microsoft-kiota-serialization-form" -version = "1.9.8" +version = "1.10.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "microsoft-kiota-abstractions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/94/b9/e883e3a29ed65d3d041f115cd5a4e17265db3e56b2f52a7d2835439303d8/microsoft_kiota_serialization_form-1.9.8.tar.gz", hash = "sha256:1a8dcf9c69050415c17f213ee0748d617dc51f4d123848e30b0fda185525eefd", size = 9016, upload-time = "2025-12-29T15:25:03.817Z" } +sdist = { url = "https://files.pythonhosted.org/packages/b6/ea/b00db31cebc39c2588319decc4bbca947873861711ba5ce83b74f210b509/microsoft_kiota_serialization_form-1.10.1.tar.gz", hash = "sha256:0bf8415b22998cdf81bf062b92b24e550b0c7874b0d2b52264ec6eb6f7caf76b", size = 9248, upload-time = "2026-04-08T16:17:25.181Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/33/f8/7fc118a80d222dfb05530cfda94c0e776c1bfb9e6504a27e4ffb20fba425/microsoft_kiota_serialization_form-1.9.8-py3-none-any.whl", hash = "sha256:5ef2e8d9c13717e52addacb11a0967702918b6e94b082ac36b8fe6f883854972", size = 10718, upload-time = "2025-12-29T15:25:03.045Z" }, + { url = "https://files.pythonhosted.org/packages/1d/a4/67f7450b38837b361b43099457f85f60730adc729dd6cc21afe6e86ace95/microsoft_kiota_serialization_form-1.10.1-py3-none-any.whl", hash = "sha256:232c29eb43c4bf66773a80912fa3e1015d53a88ac6b10f48f18498f4626211bd", size = 10874, upload-time = "2026-04-08T16:17:25.835Z" }, ] [[package]] name = "microsoft-kiota-serialization-json" -version = "1.9.8" +version = "1.10.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "microsoft-kiota-abstractions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/28/8e/850d781707adaef0c8d800a1916dad3d44009f7fac30b4d12e26f01675a8/microsoft_kiota_serialization_json-1.9.8.tar.gz", hash = "sha256:bd0ef4cca8e0b29357f1ea9217fac7e37218323040c84b3464cbbba43a8e46a9", size = 9545, upload-time = "2025-12-29T15:25:15.178Z" } +sdist = { url = "https://files.pythonhosted.org/packages/7a/ea/36cee5e86b072911da8a4f8b178d101779507381ddb52b34f6e175e2686a/microsoft_kiota_serialization_json-1.10.1.tar.gz", hash = "sha256:71792246fd1f28f73ffb5d916a63763062f84055f197d282ed59c37181ba09c9", size = 9915, upload-time = "2026-04-08T16:17:34.568Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/99/f3/5805a337c2485e74598f96a102e116691b4844ccf5fe1f6ef3bf4fd06331/microsoft_kiota_serialization_json-1.9.8-py3-none-any.whl", hash = "sha256:9990c109950c58aee96d0a46f25560631ba4c51439448262a9ebc5f7e5b4aa4d", size = 11210, upload-time = "2025-12-29T15:25:13.865Z" }, + { url = "https://files.pythonhosted.org/packages/b7/c6/39c3c653dee9dc36b879f05a1ad270aa218fd7434ec866b3e0b8942f56e9/microsoft_kiota_serialization_json-1.10.1-py3-none-any.whl", hash = "sha256:42b56b49afb412e77dbcdd825660723f1a9355fb438f3e2dcb7a161670b17499", size = 11600, upload-time = "2026-04-08T16:17:35.274Z" }, ] [[package]] name = "microsoft-kiota-serialization-multipart" -version = "1.9.8" +version = "1.10.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "microsoft-kiota-abstractions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/c4/aa/266af2f7d281cabb5868eceb6706beb63242cf1729997d1a520bd0006cb8/microsoft_kiota_serialization_multipart-1.9.8.tar.gz", hash = "sha256:bd526e3a4ccd719b2be4d1392a5d8558ffc973561e372faba01933960cb3a04a", size = 5162, upload-time = "2025-12-29T15:25:36.046Z" } +sdist = { url = "https://files.pythonhosted.org/packages/0b/82/bb8d50224358e35970f6c038825e5888d9749ae07e630b34276064739580/microsoft_kiota_serialization_multipart-1.10.1.tar.gz", hash = "sha256:c6adcf3eebc822e340008baac39d4e6bec770b77ce5c77259ba5d23e744966bf", size = 5158, upload-time = "2026-04-08T16:18:02.448Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/fd/69/11760cc57a57b38a32844b23e63b69f5adf1fedb20b894f46eb4fd7016a8/microsoft_kiota_serialization_multipart-1.9.8-py3-none-any.whl", hash = "sha256:2d1402b578cece154150aed812237609fced571f78149ad08193b4f592928354", size = 6696, upload-time = "2025-12-29T15:25:35.021Z" }, + { url = "https://files.pythonhosted.org/packages/33/ce/afd8d4f81c08a159f093f1dbc42ffa3b0b484cafe6e303812bf90ece3b65/microsoft_kiota_serialization_multipart-1.10.1-py3-none-any.whl", hash = "sha256:81f49060a274026227ebf30c04aac0d7022d2ee18cee9fb2149ec308333bf903", size = 6699, upload-time = "2026-04-08T16:18:04.064Z" }, ] [[package]] name = "microsoft-kiota-serialization-text" -version = "1.9.8" +version = "1.10.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "microsoft-kiota-abstractions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/8b/cb/605ffd77f127246bc763c98c46e3639178f81a5f7d717834a24347bb0f37/microsoft_kiota_serialization_text-1.9.8.tar.gz", hash = "sha256:4e94c3b5a85cfc630249956f390ada2311708de43129f6d2c91bee38c2c6d5fd", size = 7324, upload-time = "2025-12-29T15:25:26.518Z" } +sdist = { url = "https://files.pythonhosted.org/packages/53/d0/a3f5087c9eab68c581e607287813498ca4c0f324c1ded31251aa9a2ed0df/microsoft_kiota_serialization_text-1.10.1.tar.gz", hash = "sha256:bb2502cf09b740345c4b221d1a38ffb14667a8dc8e572092de1b3ffd80f47732", size = 7316, upload-time = "2026-04-08T16:17:44.312Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/6f/e5/bd382327e7ddaaa091f1f323d760408213136f41940d074b2ffffd9a1127/microsoft_kiota_serialization_text-1.9.8-py3-none-any.whl", hash = "sha256:dd89ae49693623c0e1d8f07414aa7d71b34959a5253131b8b63d81920f08c6b1", size = 8883, upload-time = "2025-12-29T15:25:23.662Z" }, + { url = "https://files.pythonhosted.org/packages/9a/e9/330603879b363b2bb6ffed81e43ab9c619c6d39d67f285be0fc5b4e6913e/microsoft_kiota_serialization_text-1.10.1-py3-none-any.whl", hash = "sha256:43e3d4e8ae4866440c031ae5dbf6d63a00a38ec62a61ac7eafc047de31b20269", size = 8887, upload-time = "2026-04-08T16:17:44.947Z" }, ] [[package]] name = "msal" -version = "1.34.0" +version = "1.36.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cryptography" }, { name = "pyjwt", extra = ["crypto"] }, { name = "requests" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/cf/0e/c857c46d653e104019a84f22d4494f2119b4fe9f896c92b4b864b3b045cc/msal-1.34.0.tar.gz", hash = "sha256:76ba83b716ea5a6d75b0279c0ac353a0e05b820ca1f6682c0eb7f45190c43c2f", size = 153961, upload-time = "2025-09-22T23:05:48.989Z" } +sdist = { url = "https://files.pythonhosted.org/packages/de/cb/b02b0f748ac668922364ccb3c3bff5b71628a05f5adfec2ba2a5c3031483/msal-1.36.0.tar.gz", hash = "sha256:3f6a4af2b036b476a4215111c4297b4e6e236ed186cd804faefba23e4990978b", size = 174217, upload-time = "2026-04-09T10:20:33.525Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c2/dc/18d48843499e278538890dc709e9ee3dea8375f8be8e82682851df1b48b5/msal-1.34.0-py3-none-any.whl", hash = "sha256:f669b1644e4950115da7a176441b0e13ec2975c29528d8b9e81316023676d6e1", size = 116987, upload-time = "2025-09-22T23:05:47.294Z" }, + { url = "https://files.pythonhosted.org/packages/2a/d3/414d1f0a5f6f4fe5313c2b002c54e78a3332970feb3f5fed14237aa17064/msal-1.36.0-py3-none-any.whl", hash = "sha256:36ecac30e2ff4322d956029aabce3c82301c29f0acb1ad89b94edcabb0e58ec4", size = 121547, upload-time = "2026-04-09T10:20:32.336Z" }, ] [[package]] @@ -2389,7 +2382,7 @@ wheels = [ [[package]] name = "msgraph-sdk" -version = "1.55.0" +version = "1.56.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "azure-identity" }, @@ -2399,59 +2392,59 @@ dependencies = [ { name = "microsoft-kiota-serialization-text" }, { name = "msgraph-core" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/10/44/0b5a188addf6341b3da10dd207e444417de255f7c1651902ba72016a2843/msgraph_sdk-1.55.0.tar.gz", hash = "sha256:6df691a31954a050d26b8a678968017e157d940fb377f2a8a4e17a9741b98756", size = 6295669, upload-time = "2026-02-20T00:32:29.378Z" } +sdist = { url = "https://files.pythonhosted.org/packages/8e/cd/a8a472679c01a62757d405fb4975862b0fe3bf5becf3be52709d60cf87db/msgraph_sdk-1.56.0.tar.gz", hash = "sha256:5c3f8efd4d45672b36f04acc5faca19cedc554cfd9c95d925459e948cacef35b", size = 6443012, upload-time = "2026-04-17T18:22:31.549Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/fb/a8/de807e62f8ff93003b573aa243cdcee2da2c0618b42efbc9a8e61aa7300d/msgraph_sdk-1.55.0-py3-none-any.whl", hash = "sha256:c8e68ebc4b88af5111de312e7fa910a4e76ddf48a4534feadb1fb8a411c48cfc", size = 25758742, upload-time = "2026-02-20T00:30:40.039Z" }, + { url = "https://files.pythonhosted.org/packages/56/1d/24da99bec3e419ed4da4bfdc50c0cd2406061f478d6225fb9af780099002/msgraph_sdk-1.56.0-py3-none-any.whl", hash = "sha256:9afe06413aed910095dd95de7a5d2d1ea14d6734cc68b778acdb2d9930bdafdc", size = 26201107, upload-time = "2026-04-17T18:22:27.317Z" }, ] [[package]] name = "multidict" -version = "6.7.0" +version = "6.7.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/80/1e/5492c365f222f907de1039b91f922b93fa4f764c713ee858d235495d8f50/multidict-6.7.0.tar.gz", hash = "sha256:c6e99d9a65ca282e578dfea819cfa9c0a62b2499d8677392e09feaf305e9e6f5", size = 101834, upload-time = "2025-10-06T14:52:30.657Z" } +sdist = { url = "https://files.pythonhosted.org/packages/1a/c2/c2d94cbe6ac1753f3fc980da97b3d930efe1da3af3c9f5125354436c073d/multidict-6.7.1.tar.gz", hash = "sha256:ec6652a1bee61c53a3e5776b6049172c53b6aaba34f18c9ad04f82712bac623d", size = 102010, upload-time = "2026-01-26T02:46:45.979Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e2/b1/3da6934455dd4b261d4c72f897e3a5728eba81db59959f3a639245891baa/multidict-6.7.0-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:3bab1e4aff7adaa34410f93b1f8e57c4b36b9af0426a76003f441ee1d3c7e842", size = 75128, upload-time = "2025-10-06T14:50:51.92Z" }, - { url = "https://files.pythonhosted.org/packages/14/2c/f069cab5b51d175a1a2cb4ccdf7a2c2dabd58aa5bd933fa036a8d15e2404/multidict-6.7.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:b8512bac933afc3e45fb2b18da8e59b78d4f408399a960339598374d4ae3b56b", size = 44410, upload-time = "2025-10-06T14:50:53.275Z" }, - { url = "https://files.pythonhosted.org/packages/42/e2/64bb41266427af6642b6b128e8774ed84c11b80a90702c13ac0a86bb10cc/multidict-6.7.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:79dcf9e477bc65414ebfea98ffd013cb39552b5ecd62908752e0e413d6d06e38", size = 43205, upload-time = "2025-10-06T14:50:54.911Z" }, - { url = "https://files.pythonhosted.org/packages/02/68/6b086fef8a3f1a8541b9236c594f0c9245617c29841f2e0395d979485cde/multidict-6.7.0-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:31bae522710064b5cbeddaf2e9f32b1abab70ac6ac91d42572502299e9953128", size = 245084, upload-time = "2025-10-06T14:50:56.369Z" }, - { url = "https://files.pythonhosted.org/packages/15/ee/f524093232007cd7a75c1d132df70f235cfd590a7c9eaccd7ff422ef4ae8/multidict-6.7.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4a0df7ff02397bb63e2fd22af2c87dfa39e8c7f12947bc524dbdc528282c7e34", size = 252667, upload-time = "2025-10-06T14:50:57.991Z" }, - { url = "https://files.pythonhosted.org/packages/02/a5/eeb3f43ab45878f1895118c3ef157a480db58ede3f248e29b5354139c2c9/multidict-6.7.0-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:7a0222514e8e4c514660e182d5156a415c13ef0aabbd71682fc714e327b95e99", size = 233590, upload-time = "2025-10-06T14:50:59.589Z" }, - { url = "https://files.pythonhosted.org/packages/6a/1e/76d02f8270b97269d7e3dbd45644b1785bda457b474315f8cf999525a193/multidict-6.7.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2397ab4daaf2698eb51a76721e98db21ce4f52339e535725de03ea962b5a3202", size = 264112, upload-time = "2025-10-06T14:51:01.183Z" }, - { url = "https://files.pythonhosted.org/packages/76/0b/c28a70ecb58963847c2a8efe334904cd254812b10e535aefb3bcce513918/multidict-6.7.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:8891681594162635948a636c9fe0ff21746aeb3dd5463f6e25d9bea3a8a39ca1", size = 261194, upload-time = "2025-10-06T14:51:02.794Z" }, - { url = "https://files.pythonhosted.org/packages/b4/63/2ab26e4209773223159b83aa32721b4021ffb08102f8ac7d689c943fded1/multidict-6.7.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:18706cc31dbf402a7945916dd5cddf160251b6dab8a2c5f3d6d5a55949f676b3", size = 248510, upload-time = "2025-10-06T14:51:04.724Z" }, - { url = "https://files.pythonhosted.org/packages/93/cd/06c1fa8282af1d1c46fd55c10a7930af652afdce43999501d4d68664170c/multidict-6.7.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:f844a1bbf1d207dd311a56f383f7eda2d0e134921d45751842d8235e7778965d", size = 248395, upload-time = "2025-10-06T14:51:06.306Z" }, - { url = "https://files.pythonhosted.org/packages/99/ac/82cb419dd6b04ccf9e7e61befc00c77614fc8134362488b553402ecd55ce/multidict-6.7.0-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:d4393e3581e84e5645506923816b9cc81f5609a778c7e7534054091acc64d1c6", size = 239520, upload-time = "2025-10-06T14:51:08.091Z" }, - { url = "https://files.pythonhosted.org/packages/fa/f3/a0f9bf09493421bd8716a362e0cd1d244f5a6550f5beffdd6b47e885b331/multidict-6.7.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:fbd18dc82d7bf274b37aa48d664534330af744e03bccf696d6f4c6042e7d19e7", size = 245479, upload-time = "2025-10-06T14:51:10.365Z" }, - { url = "https://files.pythonhosted.org/packages/8d/01/476d38fc73a212843f43c852b0eee266b6971f0e28329c2184a8df90c376/multidict-6.7.0-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:b6234e14f9314731ec45c42fc4554b88133ad53a09092cc48a88e771c125dadb", size = 258903, upload-time = "2025-10-06T14:51:12.466Z" }, - { url = "https://files.pythonhosted.org/packages/49/6d/23faeb0868adba613b817d0e69c5f15531b24d462af8012c4f6de4fa8dc3/multidict-6.7.0-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:08d4379f9744d8f78d98c8673c06e202ffa88296f009c71bbafe8a6bf847d01f", size = 252333, upload-time = "2025-10-06T14:51:14.48Z" }, - { url = "https://files.pythonhosted.org/packages/1e/cc/48d02ac22b30fa247f7dad82866e4b1015431092f4ba6ebc7e77596e0b18/multidict-6.7.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:9fe04da3f79387f450fd0061d4dd2e45a72749d31bf634aecc9e27f24fdc4b3f", size = 243411, upload-time = "2025-10-06T14:51:16.072Z" }, - { url = "https://files.pythonhosted.org/packages/4a/03/29a8bf5a18abf1fe34535c88adbdfa88c9fb869b5a3b120692c64abe8284/multidict-6.7.0-cp314-cp314-win32.whl", hash = "sha256:fbafe31d191dfa7c4c51f7a6149c9fb7e914dcf9ffead27dcfd9f1ae382b3885", size = 40940, upload-time = "2025-10-06T14:51:17.544Z" }, - { url = "https://files.pythonhosted.org/packages/82/16/7ed27b680791b939de138f906d5cf2b4657b0d45ca6f5dd6236fdddafb1a/multidict-6.7.0-cp314-cp314-win_amd64.whl", hash = "sha256:2f67396ec0310764b9222a1728ced1ab638f61aadc6226f17a71dd9324f9a99c", size = 45087, upload-time = "2025-10-06T14:51:18.875Z" }, - { url = "https://files.pythonhosted.org/packages/cd/3c/e3e62eb35a1950292fe39315d3c89941e30a9d07d5d2df42965ab041da43/multidict-6.7.0-cp314-cp314-win_arm64.whl", hash = "sha256:ba672b26069957ee369cfa7fc180dde1fc6f176eaf1e6beaf61fbebbd3d9c000", size = 42368, upload-time = "2025-10-06T14:51:20.225Z" }, - { url = "https://files.pythonhosted.org/packages/8b/40/cd499bd0dbc5f1136726db3153042a735fffd0d77268e2ee20d5f33c010f/multidict-6.7.0-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:c1dcc7524066fa918c6a27d61444d4ee7900ec635779058571f70d042d86ed63", size = 82326, upload-time = "2025-10-06T14:51:21.588Z" }, - { url = "https://files.pythonhosted.org/packages/13/8a/18e031eca251c8df76daf0288e6790561806e439f5ce99a170b4af30676b/multidict-6.7.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:27e0b36c2d388dc7b6ced3406671b401e84ad7eb0656b8f3a2f46ed0ce483718", size = 48065, upload-time = "2025-10-06T14:51:22.93Z" }, - { url = "https://files.pythonhosted.org/packages/40/71/5e6701277470a87d234e433fb0a3a7deaf3bcd92566e421e7ae9776319de/multidict-6.7.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:2a7baa46a22e77f0988e3b23d4ede5513ebec1929e34ee9495be535662c0dfe2", size = 46475, upload-time = "2025-10-06T14:51:24.352Z" }, - { url = "https://files.pythonhosted.org/packages/fe/6a/bab00cbab6d9cfb57afe1663318f72ec28289ea03fd4e8236bb78429893a/multidict-6.7.0-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:7bf77f54997a9166a2f5675d1201520586439424c2511723a7312bdb4bcc034e", size = 239324, upload-time = "2025-10-06T14:51:25.822Z" }, - { url = "https://files.pythonhosted.org/packages/2a/5f/8de95f629fc22a7769ade8b41028e3e5a822c1f8904f618d175945a81ad3/multidict-6.7.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e011555abada53f1578d63389610ac8a5400fc70ce71156b0aa30d326f1a5064", size = 246877, upload-time = "2025-10-06T14:51:27.604Z" }, - { url = "https://files.pythonhosted.org/packages/23/b4/38881a960458f25b89e9f4a4fdcb02ac101cfa710190db6e5528841e67de/multidict-6.7.0-cp314-cp314t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:28b37063541b897fd6a318007373930a75ca6d6ac7c940dbe14731ffdd8d498e", size = 225824, upload-time = "2025-10-06T14:51:29.664Z" }, - { url = "https://files.pythonhosted.org/packages/1e/39/6566210c83f8a261575f18e7144736059f0c460b362e96e9cf797a24b8e7/multidict-6.7.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:05047ada7a2fde2631a0ed706f1fd68b169a681dfe5e4cf0f8e4cb6618bbc2cd", size = 253558, upload-time = "2025-10-06T14:51:31.684Z" }, - { url = "https://files.pythonhosted.org/packages/00/a3/67f18315100f64c269f46e6c0319fa87ba68f0f64f2b8e7fd7c72b913a0b/multidict-6.7.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:716133f7d1d946a4e1b91b1756b23c088881e70ff180c24e864c26192ad7534a", size = 252339, upload-time = "2025-10-06T14:51:33.699Z" }, - { url = "https://files.pythonhosted.org/packages/c8/2a/1cb77266afee2458d82f50da41beba02159b1d6b1f7973afc9a1cad1499b/multidict-6.7.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d1bed1b467ef657f2a0ae62844a607909ef1c6889562de5e1d505f74457d0b96", size = 244895, upload-time = "2025-10-06T14:51:36.189Z" }, - { url = "https://files.pythonhosted.org/packages/dd/72/09fa7dd487f119b2eb9524946ddd36e2067c08510576d43ff68469563b3b/multidict-6.7.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:ca43bdfa5d37bd6aee89d85e1d0831fb86e25541be7e9d376ead1b28974f8e5e", size = 241862, upload-time = "2025-10-06T14:51:41.291Z" }, - { url = "https://files.pythonhosted.org/packages/65/92/bc1f8bd0853d8669300f732c801974dfc3702c3eeadae2f60cef54dc69d7/multidict-6.7.0-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:44b546bd3eb645fd26fb949e43c02a25a2e632e2ca21a35e2e132c8105dc8599", size = 232376, upload-time = "2025-10-06T14:51:43.55Z" }, - { url = "https://files.pythonhosted.org/packages/09/86/ac39399e5cb9d0c2ac8ef6e10a768e4d3bc933ac808d49c41f9dc23337eb/multidict-6.7.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:a6ef16328011d3f468e7ebc326f24c1445f001ca1dec335b2f8e66bed3006394", size = 240272, upload-time = "2025-10-06T14:51:45.265Z" }, - { url = "https://files.pythonhosted.org/packages/3d/b6/fed5ac6b8563ec72df6cb1ea8dac6d17f0a4a1f65045f66b6d3bf1497c02/multidict-6.7.0-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:5aa873cbc8e593d361ae65c68f85faadd755c3295ea2c12040ee146802f23b38", size = 248774, upload-time = "2025-10-06T14:51:46.836Z" }, - { url = "https://files.pythonhosted.org/packages/6b/8d/b954d8c0dc132b68f760aefd45870978deec6818897389dace00fcde32ff/multidict-6.7.0-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:3d7b6ccce016e29df4b7ca819659f516f0bc7a4b3efa3bb2012ba06431b044f9", size = 242731, upload-time = "2025-10-06T14:51:48.541Z" }, - { url = "https://files.pythonhosted.org/packages/16/9d/a2dac7009125d3540c2f54e194829ea18ac53716c61b655d8ed300120b0f/multidict-6.7.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:171b73bd4ee683d307599b66793ac80981b06f069b62eea1c9e29c9241aa66b0", size = 240193, upload-time = "2025-10-06T14:51:50.355Z" }, - { url = "https://files.pythonhosted.org/packages/39/ca/c05f144128ea232ae2178b008d5011d4e2cea86e4ee8c85c2631b1b94802/multidict-6.7.0-cp314-cp314t-win32.whl", hash = "sha256:b2d7f80c4e1fd010b07cb26820aae86b7e73b681ee4889684fb8d2d4537aab13", size = 48023, upload-time = "2025-10-06T14:51:51.883Z" }, - { url = "https://files.pythonhosted.org/packages/ba/8f/0a60e501584145588be1af5cc829265701ba3c35a64aec8e07cbb71d39bb/multidict-6.7.0-cp314-cp314t-win_amd64.whl", hash = "sha256:09929cab6fcb68122776d575e03c6cc64ee0b8fca48d17e135474b042ce515cd", size = 53507, upload-time = "2025-10-06T14:51:53.672Z" }, - { url = "https://files.pythonhosted.org/packages/7f/ae/3148b988a9c6239903e786eac19c889fab607c31d6efa7fb2147e5680f23/multidict-6.7.0-cp314-cp314t-win_arm64.whl", hash = "sha256:cc41db090ed742f32bd2d2c721861725e6109681eddf835d0a82bd3a5c382827", size = 44804, upload-time = "2025-10-06T14:51:55.415Z" }, - { url = "https://files.pythonhosted.org/packages/b7/da/7d22601b625e241d4f23ef1ebff8acfc60da633c9e7e7922e24d10f592b3/multidict-6.7.0-py3-none-any.whl", hash = "sha256:394fc5c42a333c9ffc3e421a4c85e08580d990e08b99f6bf35b4132114c5dcb3", size = 12317, upload-time = "2025-10-06T14:52:29.272Z" }, + { url = "https://files.pythonhosted.org/packages/91/cc/db74228a8be41884a567e88a62fd589a913708fcf180d029898c17a9a371/multidict-6.7.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:8f333ec9c5eb1b7105e3b84b53141e66ca05a19a605368c55450b6ba208cb9ee", size = 75190, upload-time = "2026-01-26T02:45:10.651Z" }, + { url = "https://files.pythonhosted.org/packages/d5/22/492f2246bb5b534abd44804292e81eeaf835388901f0c574bac4eeec73c5/multidict-6.7.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:a407f13c188f804c759fc6a9f88286a565c242a76b27626594c133b82883b5c2", size = 44486, upload-time = "2026-01-26T02:45:11.938Z" }, + { url = "https://files.pythonhosted.org/packages/f1/4f/733c48f270565d78b4544f2baddc2fb2a245e5a8640254b12c36ac7ac68e/multidict-6.7.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:0e161ddf326db5577c3a4cc2d8648f81456e8a20d40415541587a71620d7a7d1", size = 43219, upload-time = "2026-01-26T02:45:14.346Z" }, + { url = "https://files.pythonhosted.org/packages/24/bb/2c0c2287963f4259c85e8bcbba9182ced8d7fca65c780c38e99e61629d11/multidict-6.7.1-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:1e3a8bb24342a8201d178c3b4984c26ba81a577c80d4d525727427460a50c22d", size = 245132, upload-time = "2026-01-26T02:45:15.712Z" }, + { url = "https://files.pythonhosted.org/packages/a7/f9/44d4b3064c65079d2467888794dea218d1601898ac50222ab8a9a8094460/multidict-6.7.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:97231140a50f5d447d3164f994b86a0bed7cd016e2682f8650d6a9158e14fd31", size = 252420, upload-time = "2026-01-26T02:45:17.293Z" }, + { url = "https://files.pythonhosted.org/packages/8b/13/78f7275e73fa17b24c9a51b0bd9d73ba64bb32d0ed51b02a746eb876abe7/multidict-6.7.1-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:6b10359683bd8806a200fd2909e7c8ca3a7b24ec1d8132e483d58e791d881048", size = 233510, upload-time = "2026-01-26T02:45:19.356Z" }, + { url = "https://files.pythonhosted.org/packages/4b/25/8167187f62ae3cbd52da7893f58cb036b47ea3fb67138787c76800158982/multidict-6.7.1-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:283ddac99f7ac25a4acadbf004cb5ae34480bbeb063520f70ce397b281859362", size = 264094, upload-time = "2026-01-26T02:45:20.834Z" }, + { url = "https://files.pythonhosted.org/packages/a1/e7/69a3a83b7b030cf283fb06ce074a05a02322359783424d7edf0f15fe5022/multidict-6.7.1-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:538cec1e18c067d0e6103aa9a74f9e832904c957adc260e61cd9d8cf0c3b3d37", size = 260786, upload-time = "2026-01-26T02:45:22.818Z" }, + { url = "https://files.pythonhosted.org/packages/fe/3b/8ec5074bcfc450fe84273713b4b0a0dd47c0249358f5d82eb8104ffe2520/multidict-6.7.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7eee46ccb30ff48a1e35bb818cc90846c6be2b68240e42a78599166722cea709", size = 248483, upload-time = "2026-01-26T02:45:24.368Z" }, + { url = "https://files.pythonhosted.org/packages/48/5a/d5a99e3acbca0e29c5d9cba8f92ceb15dce78bab963b308ae692981e3a5d/multidict-6.7.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:fa263a02f4f2dd2d11a7b1bb4362aa7cb1049f84a9235d31adf63f30143469a0", size = 248403, upload-time = "2026-01-26T02:45:25.982Z" }, + { url = "https://files.pythonhosted.org/packages/35/48/e58cd31f6c7d5102f2a4bf89f96b9cf7e00b6c6f3d04ecc44417c00a5a3c/multidict-6.7.1-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:2e1425e2f99ec5bd36c15a01b690a1a2456209c5deed58f95469ffb46039ccbb", size = 240315, upload-time = "2026-01-26T02:45:27.487Z" }, + { url = "https://files.pythonhosted.org/packages/94/33/1cd210229559cb90b6786c30676bb0c58249ff42f942765f88793b41fdce/multidict-6.7.1-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:497394b3239fc6f0e13a78a3e1b61296e72bf1c5f94b4c4eb80b265c37a131cd", size = 245528, upload-time = "2026-01-26T02:45:28.991Z" }, + { url = "https://files.pythonhosted.org/packages/64/f2/6e1107d226278c876c783056b7db43d800bb64c6131cec9c8dfb6903698e/multidict-6.7.1-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:233b398c29d3f1b9676b4b6f75c518a06fcb2ea0b925119fb2c1bc35c05e1601", size = 258784, upload-time = "2026-01-26T02:45:30.503Z" }, + { url = "https://files.pythonhosted.org/packages/4d/c1/11f664f14d525e4a1b5327a82d4de61a1db604ab34c6603bb3c2cc63ad34/multidict-6.7.1-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:93b1818e4a6e0930454f0f2af7dfce69307ca03cdcfb3739bf4d91241967b6c1", size = 251980, upload-time = "2026-01-26T02:45:32.603Z" }, + { url = "https://files.pythonhosted.org/packages/e1/9f/75a9ac888121d0c5bbd4ecf4eead45668b1766f6baabfb3b7f66a410e231/multidict-6.7.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:f33dc2a3abe9249ea5d8360f969ec7f4142e7ac45ee7014d8f8d5acddf178b7b", size = 243602, upload-time = "2026-01-26T02:45:34.043Z" }, + { url = "https://files.pythonhosted.org/packages/9a/e7/50bf7b004cc8525d80dbbbedfdc7aed3e4c323810890be4413e589074032/multidict-6.7.1-cp314-cp314-win32.whl", hash = "sha256:3ab8b9d8b75aef9df299595d5388b14530839f6422333357af1339443cff777d", size = 40930, upload-time = "2026-01-26T02:45:36.278Z" }, + { url = "https://files.pythonhosted.org/packages/e0/bf/52f25716bbe93745595800f36fb17b73711f14da59ed0bb2eba141bc9f0f/multidict-6.7.1-cp314-cp314-win_amd64.whl", hash = "sha256:5e01429a929600e7dab7b166062d9bb54a5eed752384c7384c968c2afab8f50f", size = 45074, upload-time = "2026-01-26T02:45:37.546Z" }, + { url = "https://files.pythonhosted.org/packages/97/ab/22803b03285fa3a525f48217963da3a65ae40f6a1b6f6cf2768879e208f9/multidict-6.7.1-cp314-cp314-win_arm64.whl", hash = "sha256:4885cb0e817aef5d00a2e8451d4665c1808378dc27c2705f1bf4ef8505c0d2e5", size = 42471, upload-time = "2026-01-26T02:45:38.889Z" }, + { url = "https://files.pythonhosted.org/packages/e0/6d/f9293baa6146ba9507e360ea0292b6422b016907c393e2f63fc40ab7b7b5/multidict-6.7.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:0458c978acd8e6ea53c81eefaddbbee9c6c5e591f41b3f5e8e194780fe026581", size = 82401, upload-time = "2026-01-26T02:45:40.254Z" }, + { url = "https://files.pythonhosted.org/packages/7a/68/53b5494738d83558d87c3c71a486504d8373421c3e0dbb6d0db48ad42ee0/multidict-6.7.1-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:c0abd12629b0af3cf590982c0b413b1e7395cd4ec026f30986818ab95bfaa94a", size = 48143, upload-time = "2026-01-26T02:45:41.635Z" }, + { url = "https://files.pythonhosted.org/packages/37/e8/5284c53310dcdc99ce5d66563f6e5773531a9b9fe9ec7a615e9bc306b05f/multidict-6.7.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:14525a5f61d7d0c94b368a42cff4c9a4e7ba2d52e2672a7b23d84dc86fb02b0c", size = 46507, upload-time = "2026-01-26T02:45:42.99Z" }, + { url = "https://files.pythonhosted.org/packages/e4/fc/6800d0e5b3875568b4083ecf5f310dcf91d86d52573160834fb4bfcf5e4f/multidict-6.7.1-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:17307b22c217b4cf05033dabefe68255a534d637c6c9b0cc8382718f87be4262", size = 239358, upload-time = "2026-01-26T02:45:44.376Z" }, + { url = "https://files.pythonhosted.org/packages/41/75/4ad0973179361cdf3a113905e6e088173198349131be2b390f9fa4da5fc6/multidict-6.7.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7a7e590ff876a3eaf1c02a4dfe0724b6e69a9e9de6d8f556816f29c496046e59", size = 246884, upload-time = "2026-01-26T02:45:47.167Z" }, + { url = "https://files.pythonhosted.org/packages/c3/9c/095bb28b5da139bd41fb9a5d5caff412584f377914bd8787c2aa98717130/multidict-6.7.1-cp314-cp314t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:5fa6a95dfee63893d80a34758cd0e0c118a30b8dcb46372bf75106c591b77889", size = 225878, upload-time = "2026-01-26T02:45:48.698Z" }, + { url = "https://files.pythonhosted.org/packages/07/d0/c0a72000243756e8f5a277b6b514fa005f2c73d481b7d9e47cd4568aa2e4/multidict-6.7.1-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a0543217a6a017692aa6ae5cc39adb75e587af0f3a82288b1492eb73dd6cc2a4", size = 253542, upload-time = "2026-01-26T02:45:50.164Z" }, + { url = "https://files.pythonhosted.org/packages/c0/6b/f69da15289e384ecf2a68837ec8b5ad8c33e973aa18b266f50fe55f24b8c/multidict-6.7.1-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:f99fe611c312b3c1c0ace793f92464d8cd263cc3b26b5721950d977b006b6c4d", size = 252403, upload-time = "2026-01-26T02:45:51.779Z" }, + { url = "https://files.pythonhosted.org/packages/a2/76/b9669547afa5a1a25cd93eaca91c0da1c095b06b6d2d8ec25b713588d3a1/multidict-6.7.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9004d8386d133b7e6135679424c91b0b854d2d164af6ea3f289f8f2761064609", size = 244889, upload-time = "2026-01-26T02:45:53.27Z" }, + { url = "https://files.pythonhosted.org/packages/7e/a9/a50d2669e506dad33cfc45b5d574a205587b7b8a5f426f2fbb2e90882588/multidict-6.7.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e628ef0e6859ffd8273c69412a2465c4be4a9517d07261b33334b5ec6f3c7489", size = 241982, upload-time = "2026-01-26T02:45:54.919Z" }, + { url = "https://files.pythonhosted.org/packages/c5/bb/1609558ad8b456b4827d3c5a5b775c93b87878fd3117ed3db3423dfbce1b/multidict-6.7.1-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:841189848ba629c3552035a6a7f5bf3b02eb304e9fea7492ca220a8eda6b0e5c", size = 232415, upload-time = "2026-01-26T02:45:56.981Z" }, + { url = "https://files.pythonhosted.org/packages/d8/59/6f61039d2aa9261871e03ab9dc058a550d240f25859b05b67fd70f80d4b3/multidict-6.7.1-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:ce1bbd7d780bb5a0da032e095c951f7014d6b0a205f8318308140f1a6aba159e", size = 240337, upload-time = "2026-01-26T02:45:58.698Z" }, + { url = "https://files.pythonhosted.org/packages/a1/29/fdc6a43c203890dc2ae9249971ecd0c41deaedfe00d25cb6564b2edd99eb/multidict-6.7.1-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:b26684587228afed0d50cf804cc71062cc9c1cdf55051c4c6345d372947b268c", size = 248788, upload-time = "2026-01-26T02:46:00.862Z" }, + { url = "https://files.pythonhosted.org/packages/a9/14/a153a06101323e4cf086ecee3faadba52ff71633d471f9685c42e3736163/multidict-6.7.1-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:9f9af11306994335398293f9958071019e3ab95e9a707dc1383a35613f6abcb9", size = 242842, upload-time = "2026-01-26T02:46:02.824Z" }, + { url = "https://files.pythonhosted.org/packages/41/5f/604ae839e64a4a6efc80db94465348d3b328ee955e37acb24badbcd24d83/multidict-6.7.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:b4938326284c4f1224178a560987b6cf8b4d38458b113d9b8c1db1a836e640a2", size = 240237, upload-time = "2026-01-26T02:46:05.898Z" }, + { url = "https://files.pythonhosted.org/packages/5f/60/c3a5187bf66f6fb546ff4ab8fb5a077cbdd832d7b1908d4365c7f74a1917/multidict-6.7.1-cp314-cp314t-win32.whl", hash = "sha256:98655c737850c064a65e006a3df7c997cd3b220be4ec8fe26215760b9697d4d7", size = 48008, upload-time = "2026-01-26T02:46:07.468Z" }, + { url = "https://files.pythonhosted.org/packages/0c/f7/addf1087b860ac60e6f382240f64fb99f8bfb532bb06f7c542b83c29ca61/multidict-6.7.1-cp314-cp314t-win_amd64.whl", hash = "sha256:497bde6223c212ba11d462853cfa4f0ae6ef97465033e7dc9940cdb3ab5b48e5", size = 53542, upload-time = "2026-01-26T02:46:08.809Z" }, + { url = "https://files.pythonhosted.org/packages/4c/81/4629d0aa32302ef7b2ec65c75a728cc5ff4fa410c50096174c1632e70b3e/multidict-6.7.1-cp314-cp314t-win_arm64.whl", hash = "sha256:2bbd113e0d4af5db41d5ebfe9ccaff89de2120578164f86a5d17d5a576d1e5b2", size = 44719, upload-time = "2026-01-26T02:46:11.146Z" }, + { url = "https://files.pythonhosted.org/packages/81/08/7036c080d7117f28a4af526d794aab6a84463126db031b007717c1a6676e/multidict-6.7.1-py3-none-any.whl", hash = "sha256:55d97cc6dae627efa6a6e548885712d4864b81110ac76fa4e534c03819fa4a56", size = 12319, upload-time = "2026-01-26T02:46:44.004Z" }, ] [[package]] name = "mypy" -version = "1.19.1" +version = "1.20.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "librt", marker = "platform_python_implementation != 'PyPy'" }, @@ -2459,15 +2452,23 @@ dependencies = [ { name = "pathspec" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f5/db/4efed9504bc01309ab9c2da7e352cc223569f05478012b5d9ece38fd44d2/mypy-1.19.1.tar.gz", hash = "sha256:19d88bb05303fe63f71dd2c6270daca27cb9401c4ca8255fe50d1d920e0eb9ba", size = 3582404, upload-time = "2025-12-15T05:03:48.42Z" } +sdist = { url = "https://files.pythonhosted.org/packages/04/af/e3d4b3e9ec91a0ff9aabfdb38692952acf49bbb899c2e4c29acb3a6da3ae/mypy-1.20.2.tar.gz", hash = "sha256:e8222c26daaafd9e8626dec58ae36029f82585890589576f769a650dd20fd665", size = 3817349, upload-time = "2026-04-21T17:12:28.473Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/de/eb/b83e75f4c820c4247a58580ef86fcd35165028f191e7e1ba57128c52782d/mypy-1.19.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:06e6170bd5836770e8104c8fdd58e5e725cfeb309f0a6c681a811f557e97eac1", size = 13199744, upload-time = "2025-12-15T05:03:30.823Z" }, - { url = "https://files.pythonhosted.org/packages/94/28/52785ab7bfa165f87fcbb61547a93f98bb20e7f82f90f165a1f69bce7b3d/mypy-1.19.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:804bd67b8054a85447c8954215a906d6eff9cabeabe493fb6334b24f4bfff718", size = 12215815, upload-time = "2025-12-15T05:02:42.323Z" }, - { url = "https://files.pythonhosted.org/packages/0a/c6/bdd60774a0dbfb05122e3e925f2e9e846c009e479dcec4821dad881f5b52/mypy-1.19.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:21761006a7f497cb0d4de3d8ef4ca70532256688b0523eee02baf9eec895e27b", size = 12740047, upload-time = "2025-12-15T05:03:33.168Z" }, - { url = "https://files.pythonhosted.org/packages/32/2a/66ba933fe6c76bd40d1fe916a83f04fed253152f451a877520b3c4a5e41e/mypy-1.19.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:28902ee51f12e0f19e1e16fbe2f8f06b6637f482c459dd393efddd0ec7f82045", size = 13601998, upload-time = "2025-12-15T05:03:13.056Z" }, - { url = "https://files.pythonhosted.org/packages/e3/da/5055c63e377c5c2418760411fd6a63ee2b96cf95397259038756c042574f/mypy-1.19.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:481daf36a4c443332e2ae9c137dfee878fcea781a2e3f895d54bd3002a900957", size = 13807476, upload-time = "2025-12-15T05:03:17.977Z" }, - { url = "https://files.pythonhosted.org/packages/cd/09/4ebd873390a063176f06b0dbf1f7783dd87bd120eae7727fa4ae4179b685/mypy-1.19.1-cp314-cp314-win_amd64.whl", hash = "sha256:8bb5c6f6d043655e055be9b542aa5f3bdd30e4f3589163e85f93f3640060509f", size = 10281872, upload-time = "2025-12-15T05:03:05.549Z" }, - { url = "https://files.pythonhosted.org/packages/8d/f4/4ce9a05ce5ded1de3ec1c1d96cf9f9504a04e54ce0ed55cfa38619a32b8d/mypy-1.19.1-py3-none-any.whl", hash = "sha256:f1235f5ea01b7db5468d53ece6aaddf1ad0b88d9e7462b86ef96fe04995d7247", size = 2471239, upload-time = "2025-12-15T05:03:07.248Z" }, + { url = "https://files.pythonhosted.org/packages/ae/d1/b4ec96b0ecc620a4443570c6e95c867903428cfcde4206518eafdd5880c3/mypy-1.20.2-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:419413398fe250aae057fd2fe50166b61077083c9b82754c341cf4fd73038f30", size = 14524561, upload-time = "2026-04-21T17:06:27.325Z" }, + { url = "https://files.pythonhosted.org/packages/3a/63/d2c2ff4fa66bc49477d32dfa26e8a167ba803ea6a69c5efb416036909d30/mypy-1.20.2-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:e73c07f23009962885c197ccb9b41356a30cc0e5a1d0c2ea8fd8fb1362d7f924", size = 13363883, upload-time = "2026-04-21T17:11:11.239Z" }, + { url = "https://files.pythonhosted.org/packages/2a/56/983916806bf4eddeaaa2c9230903c3669c6718552a921154e1c5182c701f/mypy-1.20.2-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0c64e5973df366b747646fc98da921f9d6eba9716d57d1db94a83c026a08e0fb", size = 13742945, upload-time = "2026-04-21T17:08:34.181Z" }, + { url = "https://files.pythonhosted.org/packages/19/65/0cd9285ab010ee8214c83d67c6b49417c40d86ce46f1aa109457b5a9b8d7/mypy-1.20.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5a65aa591af023864fd08a97da9974e919452cfe19cb146c8a5dc692626445dc", size = 14706163, upload-time = "2026-04-21T17:05:15.51Z" }, + { url = "https://files.pythonhosted.org/packages/94/97/48ff3b297cafcc94d185243a9190836fb1b01c1b0918fff64e941e973cc9/mypy-1.20.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:4fef51b01e638974a6e69885687e9bd40c8d1e09a6cd291cca0619625cf1f558", size = 14938677, upload-time = "2026-04-21T17:05:39.562Z" }, + { url = "https://files.pythonhosted.org/packages/fd/a1/1b4233d255bdd0b38a1f284feeb1c143ca508c19184964e22f8d837ec851/mypy-1.20.2-cp314-cp314-win_amd64.whl", hash = "sha256:913485a03f1bcf5d279409a9d2b9ed565c151f61c09f29991e5faa14033da4c8", size = 11089322, upload-time = "2026-04-21T17:06:44.29Z" }, + { url = "https://files.pythonhosted.org/packages/78/c2/ce7ee2ba36aeb954ba50f18fa25d9c1188578654b97d02a66a15b6f09531/mypy-1.20.2-cp314-cp314-win_arm64.whl", hash = "sha256:c3bae4f855d965b5453784300c12ffc63a548304ac7f99e55d4dc7c898673aa3", size = 10017775, upload-time = "2026-04-21T17:07:20.732Z" }, + { url = "https://files.pythonhosted.org/packages/4e/a1/9d93a7d0b5859af0ead82b4888b46df6c8797e1bc5e1e262a08518c6d48e/mypy-1.20.2-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:2de3dcea53babc1c3237a19002bc3d228ce1833278f093b8d619e06e7cc79609", size = 15549002, upload-time = "2026-04-21T17:08:23.107Z" }, + { url = "https://files.pythonhosted.org/packages/00/d2/09a6a10ee1bf0008f6c144d9676f2ca6a12512151b4e0ad0ff6c4fac5337/mypy-1.20.2-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:52b176444e2e5054dfcbcb8c75b0b719865c96247b37407184bbfca5c353f2c2", size = 14401942, upload-time = "2026-04-21T17:07:31.837Z" }, + { url = "https://files.pythonhosted.org/packages/57/da/9594b75c3c019e805250bed3583bdf4443ff9e6ef08f97e39ae308cb06f2/mypy-1.20.2-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:688c3312e5dadb573a2c69c82af3a298d43ecf9e6d264e0f95df960b5f6ac19c", size = 15041649, upload-time = "2026-04-21T17:09:34.653Z" }, + { url = "https://files.pythonhosted.org/packages/97/77/f75a65c278e6e8eba2071f7f5a90481891053ecc39878cc444634d892abe/mypy-1.20.2-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:29752dbbf8cc53f89f6ac096d363314333045c257c9c75cbd189ca2de0455744", size = 15864588, upload-time = "2026-04-21T17:11:44.936Z" }, + { url = "https://files.pythonhosted.org/packages/d7/46/1a4e1c66e96c1a3246ddf5403d122ac9b0a8d2b7e65730b9d6533ba7a6d3/mypy-1.20.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:803203d2b6ea644982c644895c2f78b28d0e208bba7b27d9b921e0ec5eb207c6", size = 16093956, upload-time = "2026-04-21T17:10:17.683Z" }, + { url = "https://files.pythonhosted.org/packages/5a/2c/78a8851264dec38cd736ca5b8bc9380674df0dd0be7792f538916157716c/mypy-1.20.2-cp314-cp314t-win_amd64.whl", hash = "sha256:9bcb8aa397ff0093c824182fd76a935a9ba7ad097fcbef80ae89bf6c1731d8ec", size = 12568661, upload-time = "2026-04-21T17:11:54.473Z" }, + { url = "https://files.pythonhosted.org/packages/83/01/cd7318aa03493322ce275a0e14f4f52b8896335e4e79d4fb8153a7ad2b77/mypy-1.20.2-cp314-cp314t-win_arm64.whl", hash = "sha256:e061b58443f1736f8a37c48978d7ab581636d6ab03e3d4f99e3fa90463bb9382", size = 10389240, upload-time = "2026-04-21T17:09:42.719Z" }, + { url = "https://files.pythonhosted.org/packages/28/9a/f23c163e25b11074188251b0b5a0342625fc1cdb6af604757174fa9acc9b/mypy-1.20.2-py3-none-any.whl", hash = "sha256:a94c5a76ab46c5e6257c7972b6c8cff0574201ca7dc05647e33e795d78680563", size = 2637314, upload-time = "2026-04-21T17:05:54.5Z" }, ] [[package]] @@ -2504,65 +2505,65 @@ source = { git = "https://github.com/vsoch/oci-python?rev=ceb4fcc090851717a3069d [[package]] name = "opentelemetry-api" -version = "1.39.1" +version = "1.41.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "importlib-metadata" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/97/b9/3161be15bb8e3ad01be8be5a968a9237c3027c5be504362ff800fca3e442/opentelemetry_api-1.39.1.tar.gz", hash = "sha256:fbde8c80e1b937a2c61f20347e91c0c18a1940cecf012d62e65a7caf08967c9c", size = 65767, upload-time = "2025-12-11T13:32:39.182Z" } +sdist = { url = "https://files.pythonhosted.org/packages/fa/fc/b7564cbef36601aef0d6c9bc01f7badb64be8e862c2e1c3c5c3b43b53e4f/opentelemetry_api-1.41.1.tar.gz", hash = "sha256:0ad1814d73b875f84494387dae86ce0b12c68556331ce6ce8fe789197c949621", size = 71416, upload-time = "2026-04-24T13:15:38.262Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/cf/df/d3f1ddf4bb4cb50ed9b1139cc7b1c54c34a1e7ce8fd1b9a37c0d1551a6bd/opentelemetry_api-1.39.1-py3-none-any.whl", hash = "sha256:2edd8463432a7f8443edce90972169b195e7d6a05500cd29e6d13898187c9950", size = 66356, upload-time = "2025-12-11T13:32:17.304Z" }, + { url = "https://files.pythonhosted.org/packages/29/59/3e7118ed140f76b0982ba4321bdaed1997a0473f9720de2d10788a577033/opentelemetry_api-1.41.1-py3-none-any.whl", hash = "sha256:a22df900e75c76dc08440710e51f52f1aa6b451b429298896023e60db5b3139f", size = 69007, upload-time = "2026-04-24T13:15:15.662Z" }, ] [[package]] name = "opentelemetry-sdk" -version = "1.39.1" +version = "1.41.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "opentelemetry-api" }, { name = "opentelemetry-semantic-conventions" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/eb/fb/c76080c9ba07e1e8235d24cdcc4d125ef7aa3edf23eb4e497c2e50889adc/opentelemetry_sdk-1.39.1.tar.gz", hash = "sha256:cf4d4563caf7bff906c9f7967e2be22d0d6b349b908be0d90fb21c8e9c995cc6", size = 171460, upload-time = "2025-12-11T13:32:49.369Z" } +sdist = { url = "https://files.pythonhosted.org/packages/58/d0/54ee30dab82fb0acda23d144502771ff76ef8728459c83c3e89ef9fb1825/opentelemetry_sdk-1.41.1.tar.gz", hash = "sha256:724b615e1215b5aeacda0abb8a6a8922c9a1853068948bd0bd225a56d0c792e6", size = 230180, upload-time = "2026-04-24T13:15:50.991Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/7c/98/e91cf858f203d86f4eccdf763dcf01cf03f1dae80c3750f7e635bfa206b6/opentelemetry_sdk-1.39.1-py3-none-any.whl", hash = "sha256:4d5482c478513ecb0a5d938dcc61394e647066e0cc2676bee9f3af3f3f45f01c", size = 132565, upload-time = "2025-12-11T13:32:35.069Z" }, + { url = "https://files.pythonhosted.org/packages/b4/e7/a1420b698aad018e1cf60fdbaaccbe49021fb415e2a0d81c242f4c518f54/opentelemetry_sdk-1.41.1-py3-none-any.whl", hash = "sha256:edee379c126c1bce952b0c812b48fe8ff35b30df0eecf17e98afa4d598b7d85d", size = 180213, upload-time = "2026-04-24T13:15:33.767Z" }, ] [[package]] name = "opentelemetry-semantic-conventions" -version = "0.60b1" +version = "0.62b1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "opentelemetry-api" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/91/df/553f93ed38bf22f4b999d9be9c185adb558982214f33eae539d3b5cd0858/opentelemetry_semantic_conventions-0.60b1.tar.gz", hash = "sha256:87c228b5a0669b748c76d76df6c364c369c28f1c465e50f661e39737e84bc953", size = 137935, upload-time = "2025-12-11T13:32:50.487Z" } +sdist = { url = "https://files.pythonhosted.org/packages/9e/de/911ac9e309052aca1b20b2d5549d3db45d1011e1a610e552c6ccdd1b64f8/opentelemetry_semantic_conventions-0.62b1.tar.gz", hash = "sha256:c5cc6e04a7f8c7cdd30be2ed81499fa4e75bfbd52c9cb70d40af1f9cd3619802", size = 145750, upload-time = "2026-04-24T13:15:52.236Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/7a/5e/5958555e09635d09b75de3c4f8b9cae7335ca545d77392ffe7331534c402/opentelemetry_semantic_conventions-0.60b1-py3-none-any.whl", hash = "sha256:9fa8c8b0c110da289809292b0591220d3a7b53c1526a23021e977d68597893fb", size = 219982, upload-time = "2025-12-11T13:32:36.955Z" }, + { url = "https://files.pythonhosted.org/packages/eb/a6/83dc2ab6fa397ee66fba04fe2e74bdf7be3b3870005359ceb7689103c058/opentelemetry_semantic_conventions-0.62b1-py3-none-any.whl", hash = "sha256:cf506938103d331fbb78eded0d9788095f7fd59016f2bda813c3324e5a74a93c", size = 231620, upload-time = "2026-04-24T13:15:35.454Z" }, ] [[package]] name = "orjson" -version = "3.11.6" +version = "3.11.8" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/70/a3/4e09c61a5f0c521cba0bb433639610ae037437669f1a4cbc93799e731d78/orjson-3.11.6.tar.gz", hash = "sha256:0a54c72259f35299fd033042367df781c2f66d10252955ca1efb7db309b954cb", size = 6175856, upload-time = "2026-01-29T15:13:07.942Z" } +sdist = { url = "https://files.pythonhosted.org/packages/9d/1b/2024d06792d0779f9dbc51531b61c24f76c75b9f4ce05e6f3377a1814cea/orjson-3.11.8.tar.gz", hash = "sha256:96163d9cdc5a202703e9ad1b9ae757d5f0ca62f4fa0cc93d1f27b0e180cc404e", size = 5603832, upload-time = "2026-03-31T16:16:27.878Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/31/9f/46ca908abaeeec7560638ff20276ab327b980d73b3cc2f5b205b4a1c60b3/orjson-3.11.6-cp314-cp314-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:6026db2692041d2a23fe2545606df591687787825ad5821971ef0974f2c47630", size = 249823, upload-time = "2026-01-29T15:12:43.332Z" }, - { url = "https://files.pythonhosted.org/packages/ff/78/ca478089818d18c9cd04f79c43f74ddd031b63c70fa2a946eb5e85414623/orjson-3.11.6-cp314-cp314-macosx_15_0_arm64.whl", hash = "sha256:132b0ab2e20c73afa85cf142e547511feb3d2f5b7943468984658f3952b467d4", size = 134328, upload-time = "2026-01-29T15:12:45.171Z" }, - { url = "https://files.pythonhosted.org/packages/39/5e/cbb9d830ed4e47f4375ad8eef8e4fff1bf1328437732c3809054fc4e80be/orjson-3.11.6-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b376fb05f20a96ec117d47987dd3b39265c635725bda40661b4c5b73b77b5fde", size = 137651, upload-time = "2026-01-29T15:12:46.602Z" }, - { url = "https://files.pythonhosted.org/packages/7c/3a/35df6558c5bc3a65ce0961aefee7f8364e59af78749fc796ea255bfa0cf5/orjson-3.11.6-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:954dae4e080574672a1dfcf2a840eddef0f27bd89b0e94903dd0824e9c1db060", size = 134596, upload-time = "2026-01-29T15:12:47.95Z" }, - { url = "https://files.pythonhosted.org/packages/cd/8e/3d32dd7b7f26a19cc4512d6ed0ae3429567c71feef720fe699ff43c5bc9e/orjson-3.11.6-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fe515bb89d59e1e4b48637a964f480b35c0a2676de24e65e55310f6016cca7ce", size = 140923, upload-time = "2026-01-29T15:12:49.333Z" }, - { url = "https://files.pythonhosted.org/packages/6c/9c/1efbf5c99b3304f25d6f0d493a8d1492ee98693637c10ce65d57be839d7b/orjson-3.11.6-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:380f9709c275917af28feb086813923251e11ee10687257cd7f1ea188bcd4485", size = 144068, upload-time = "2026-01-29T15:12:50.927Z" }, - { url = "https://files.pythonhosted.org/packages/82/83/0d19eeb5be797de217303bbb55dde58dba26f996ed905d301d98fd2d4637/orjson-3.11.6-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a8173e0d3f6081e7034c51cf984036d02f6bab2a2126de5a759d79f8e5a140e7", size = 142493, upload-time = "2026-01-29T15:12:52.432Z" }, - { url = "https://files.pythonhosted.org/packages/32/a7/573fec3df4dc8fc259b7770dc6c0656f91adce6e19330c78d23f87945d1e/orjson-3.11.6-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6dddf9ba706294906c56ef5150a958317b09aa3a8a48df1c52ccf22ec1907eac", size = 145616, upload-time = "2026-01-29T15:12:53.903Z" }, - { url = "https://files.pythonhosted.org/packages/c2/0e/23551b16f21690f7fd5122e3cf40fdca5d77052a434d0071990f97f5fe2f/orjson-3.11.6-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:cbae5c34588dc79938dffb0b6fbe8c531f4dc8a6ad7f39759a9eb5d2da405ef2", size = 146951, upload-time = "2026-01-29T15:12:55.698Z" }, - { url = "https://files.pythonhosted.org/packages/b8/63/5e6c8f39805c39123a18e412434ea364349ee0012548d08aa586e2bd6aa9/orjson-3.11.6-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:f75c318640acbddc419733b57f8a07515e587a939d8f54363654041fd1f4e465", size = 421024, upload-time = "2026-01-29T15:12:57.434Z" }, - { url = "https://files.pythonhosted.org/packages/1d/4d/724975cf0087f6550bd01fd62203418afc0ea33fd099aed318c5bcc52df8/orjson-3.11.6-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:e0ab8d13aa2a3e98b4a43487c9205b2c92c38c054b4237777484d503357c8437", size = 155774, upload-time = "2026-01-29T15:12:59.397Z" }, - { url = "https://files.pythonhosted.org/packages/a8/a3/f4c4e3f46b55db29e0a5f20493b924fc791092d9a03ff2068c9fe6c1002f/orjson-3.11.6-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:f884c7fb1020d44612bd7ac0db0babba0e2f78b68d9a650c7959bf99c783773f", size = 147393, upload-time = "2026-01-29T15:13:00.769Z" }, - { url = "https://files.pythonhosted.org/packages/ee/86/6f5529dd27230966171ee126cecb237ed08e9f05f6102bfaf63e5b32277d/orjson-3.11.6-cp314-cp314-win32.whl", hash = "sha256:8d1035d1b25732ec9f971e833a3e299d2b1a330236f75e6fd945ad982c76aaf3", size = 139760, upload-time = "2026-01-29T15:13:02.173Z" }, - { url = "https://files.pythonhosted.org/packages/d3/b5/91ae7037b2894a6b5002fb33f4fbccec98424a928469835c3837fbb22a9b/orjson-3.11.6-cp314-cp314-win_amd64.whl", hash = "sha256:931607a8865d21682bb72de54231655c86df1870502d2962dbfd12c82890d077", size = 136633, upload-time = "2026-01-29T15:13:04.267Z" }, - { url = "https://files.pythonhosted.org/packages/55/74/f473a3ec7a0a7ebc825ca8e3c86763f7d039f379860c81ba12dcdd456547/orjson-3.11.6-cp314-cp314-win_arm64.whl", hash = "sha256:fe71f6b283f4f1832204ab8235ce07adad145052614f77c876fcf0dac97bc06f", size = 135168, upload-time = "2026-01-29T15:13:05.932Z" }, + { url = "https://files.pythonhosted.org/packages/6d/35/b01910c3d6b85dc882442afe5060cbf719c7d1fc85749294beda23d17873/orjson-3.11.8-cp314-cp314-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:ec795530a73c269a55130498842aaa762e4a939f6ce481a7e986eeaa790e9da4", size = 229171, upload-time = "2026-03-31T16:16:00.651Z" }, + { url = "https://files.pythonhosted.org/packages/c2/56/c9ec97bd11240abef39b9e5d99a15462809c45f677420fd148a6c5e6295e/orjson-3.11.8-cp314-cp314-macosx_15_0_arm64.whl", hash = "sha256:c492a0e011c0f9066e9ceaa896fbc5b068c54d365fea5f3444b697ee01bc8625", size = 128746, upload-time = "2026-03-31T16:16:02.673Z" }, + { url = "https://files.pythonhosted.org/packages/3b/e4/66d4f30a90de45e2f0cbd9623588e8ae71eef7679dbe2ae954ed6d66a41f/orjson-3.11.8-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:883206d55b1bd5f5679ad5e6ddd3d1a5e3cac5190482927fdb8c78fb699193b5", size = 131867, upload-time = "2026-03-31T16:16:04.342Z" }, + { url = "https://files.pythonhosted.org/packages/19/30/2a645fc9286b928675e43fa2a3a16fb7b6764aa78cc719dc82141e00f30b/orjson-3.11.8-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5774c1fdcc98b2259800b683b19599c133baeb11d60033e2095fd9d4667b82db", size = 124664, upload-time = "2026-03-31T16:16:05.837Z" }, + { url = "https://files.pythonhosted.org/packages/db/44/77b9a86d84a28d52ba3316d77737f6514e17118119ade3f91b639e859029/orjson-3.11.8-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8ac7381c83dd3d4a6347e6635950aa448f54e7b8406a27c7ecb4a37e9f1ae08b", size = 129701, upload-time = "2026-03-31T16:16:07.407Z" }, + { url = "https://files.pythonhosted.org/packages/b3/ea/eff3d9bfe47e9bc6969c9181c58d9f71237f923f9c86a2d2f490cd898c82/orjson-3.11.8-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:14439063aebcb92401c11afc68ee4e407258d2752e62d748b6942dad20d2a70d", size = 141202, upload-time = "2026-03-31T16:16:09.48Z" }, + { url = "https://files.pythonhosted.org/packages/52/c8/90d4b4c60c84d62068d0cf9e4d8f0a4e05e76971d133ac0c60d818d4db20/orjson-3.11.8-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fa72e71977bff96567b0f500fc5bfd2fdf915f34052c782a4c6ebbdaa97aa858", size = 127194, upload-time = "2026-03-31T16:16:11.02Z" }, + { url = "https://files.pythonhosted.org/packages/8d/c7/ea9e08d1f0ba981adffb629811148b44774d935171e7b3d780ae43c4c254/orjson-3.11.8-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7679bc2f01bb0d219758f1a5f87bb7c8a81c0a186824a393b366876b4948e14f", size = 133639, upload-time = "2026-03-31T16:16:13.434Z" }, + { url = "https://files.pythonhosted.org/packages/6c/8c/ddbbfd6ba59453c8fc7fe1d0e5983895864e264c37481b2a791db635f046/orjson-3.11.8-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:14f7b8fcb35ef403b42fa5ecfa4ed032332a91f3dc7368fbce4184d59e1eae0d", size = 141914, upload-time = "2026-03-31T16:16:14.955Z" }, + { url = "https://files.pythonhosted.org/packages/4e/31/dbfbefec9df060d34ef4962cd0afcb6fa7a9ec65884cb78f04a7859526c3/orjson-3.11.8-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:c2bdf7b2facc80b5e34f48a2d557727d5c5c57a8a450de122ae81fa26a81c1bc", size = 423800, upload-time = "2026-03-31T16:16:16.594Z" }, + { url = "https://files.pythonhosted.org/packages/87/cf/f74e9ae9803d4ab46b163494adba636c6d7ea955af5cc23b8aaa94cfd528/orjson-3.11.8-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:ccd7ba1b0605813a0715171d39ec4c314cb97a9c85893c2c5c0c3a3729df38bf", size = 147837, upload-time = "2026-03-31T16:16:18.585Z" }, + { url = "https://files.pythonhosted.org/packages/64/e6/9214f017b5db85e84e68602792f742e5dc5249e963503d1b356bee611e01/orjson-3.11.8-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:cdbc8c9c02463fef4d3c53a9ba3336d05496ec8e1f1c53326a1e4acc11f5c600", size = 136441, upload-time = "2026-03-31T16:16:20.151Z" }, + { url = "https://files.pythonhosted.org/packages/24/dd/3590348818f58f837a75fb969b04cdf187ae197e14d60b5e5a794a38b79d/orjson-3.11.8-cp314-cp314-win32.whl", hash = "sha256:0b57f67710a8cd459e4e54eb96d5f77f3624eba0c661ba19a525807e42eccade", size = 131983, upload-time = "2026-03-31T16:16:21.823Z" }, + { url = "https://files.pythonhosted.org/packages/3f/0f/b6cb692116e05d058f31ceee819c70f097fa9167c82f67fabe7516289abc/orjson-3.11.8-cp314-cp314-win_amd64.whl", hash = "sha256:735e2262363dcbe05c35e3a8869898022af78f89dde9e256924dc02e99fe69ca", size = 127396, upload-time = "2026-03-31T16:16:23.685Z" }, + { url = "https://files.pythonhosted.org/packages/c0/d1/facb5b5051fabb0ef9d26c6544d87ef19a939a9a001198655d0d891062dd/orjson-3.11.8-cp314-cp314-win_arm64.whl", hash = "sha256:6ccdea2c213cf9f3d9490cbd5d427693c870753df41e6cb375bd79bcbafc8817", size = 127330, upload-time = "2026-03-31T16:16:25.496Z" }, ] [[package]] @@ -2579,16 +2580,16 @@ wheels = [ [[package]] name = "packaging" -version = "26.0" +version = "26.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/65/ee/299d360cdc32edc7d2cf530f3accf79c4fca01e96ffc950d8a52213bd8e4/packaging-26.0.tar.gz", hash = "sha256:00243ae351a257117b6a241061796684b084ed1c516a08c48a3f7e147a9d80b4", size = 143416, upload-time = "2026-01-21T20:50:39.064Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d7/f1/e7a6dd94a8d4a5626c03e4e99c87f241ba9e350cd9e6d75123f992427270/packaging-26.2.tar.gz", hash = "sha256:ff452ff5a3e828ce110190feff1178bb1f2ea2281fa2075aadb987c2fb221661", size = 228134, upload-time = "2026-04-24T20:15:23.917Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b7/b9/c538f279a4e237a006a2c98387d081e9eb060d203d8ed34467cc0f0b9b53/packaging-26.0-py3-none-any.whl", hash = "sha256:b36f1fef9334a5588b4166f8bcd26a14e521f2b55e6b9de3aaa80d3ff7a37529", size = 74366, upload-time = "2026-01-21T20:50:37.788Z" }, + { url = "https://files.pythonhosted.org/packages/df/b2/87e62e8c3e2f4b32e5fe99e0b86d576da1312593b39f47d8ceef365e95ed/packaging-26.2-py3-none-any.whl", hash = "sha256:5fc45236b9446107ff2415ce77c807cee2862cb6fac22b8a73826d0693b0980e", size = 100195, upload-time = "2026-04-24T20:15:22.081Z" }, ] [[package]] name = "paramiko" -version = "4.0.0" +version = "5.0.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "bcrypt" }, @@ -2596,18 +2597,18 @@ dependencies = [ { name = "invoke" }, { name = "pynacl" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/1f/e7/81fdcbc7f190cdb058cffc9431587eb289833bdd633e2002455ca9bb13d4/paramiko-4.0.0.tar.gz", hash = "sha256:6a25f07b380cc9c9a88d2b920ad37167ac4667f8d9886ccebd8f90f654b5d69f", size = 1630743, upload-time = "2025-08-04T01:02:03.711Z" } +sdist = { url = "https://files.pythonhosted.org/packages/62/93/dcc25d52f49022ae6175d15e6bd751f1acc99b98bc61fc55e5155a7be2e7/paramiko-5.0.0.tar.gz", hash = "sha256:36763b5b95c2a0dcfdf1abc48e48156ee425b21efe2f0e787c2dd5a95c0e5e79", size = 1548586, upload-time = "2026-05-09T18:28:52.256Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a9/90/a744336f5af32c433bd09af7854599682a383b37cfd78f7de263de6ad6cb/paramiko-4.0.0-py3-none-any.whl", hash = "sha256:0e20e00ac666503bf0b4eda3b6d833465a2b7aff2e2b3d79a8bba5ef144ee3b9", size = 223932, upload-time = "2025-08-04T01:02:02.029Z" }, + { url = "https://files.pythonhosted.org/packages/82/5b/eadf6d45de38d30ab603f49393b6cd2cbe7e233af8cf90197e32782b68a9/paramiko-5.0.0-py3-none-any.whl", hash = "sha256:b7044611c30140d9a75261653210e2002977b71a0497ff3ba0d98d7edbf62f7c", size = 208919, upload-time = "2026-05-09T18:28:50.295Z" }, ] [[package]] name = "pathspec" -version = "1.0.3" +version = "1.1.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/4c/b2/bb8e495d5262bfec41ab5cb18f522f1012933347fb5d9e62452d446baca2/pathspec-1.0.3.tar.gz", hash = "sha256:bac5cf97ae2c2876e2d25ebb15078eb04d76e4b98921ee31c6f85ade8b59444d", size = 130841, upload-time = "2026-01-09T15:46:46.009Z" } +sdist = { url = "https://files.pythonhosted.org/packages/5a/82/42f767fc1c1143d6fd36efb827202a2d997a375e160a71eb2888a925aac1/pathspec-1.1.1.tar.gz", hash = "sha256:17db5ecd524104a120e173814c90367a96a98d07c45b2e10c2f3919fff91bf5a", size = 135180, upload-time = "2026-04-27T01:46:08.907Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/32/2b/121e912bd60eebd623f873fd090de0e84f322972ab25a7f9044c056804ed/pathspec-1.0.3-py3-none-any.whl", hash = "sha256:e80767021c1cc524aa3fb14bedda9c34406591343cc42797b386ce7b9354fb6c", size = 55021, upload-time = "2026-01-09T15:46:44.652Z" }, + { url = "https://files.pythonhosted.org/packages/f1/d9/7fb5aa316bc299258e68c73ba3bddbc499654a07f151cba08f6153988714/pathspec-1.1.1-py3-none-any.whl", hash = "sha256:a00ce642f577bf7f473932318056212bc4f8bfdf53128c78bbd5af0b9b20b189", size = 57328, upload-time = "2026-04-27T01:46:07.06Z" }, ] [[package]] @@ -2627,11 +2628,11 @@ wheels = [ [[package]] name = "platformdirs" -version = "4.5.1" +version = "4.9.6" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/cf/86/0248f086a84f01b37aaec0fa567b397df1a119f73c16f6c7a9aac73ea309/platformdirs-4.5.1.tar.gz", hash = "sha256:61d5cdcc6065745cdd94f0f878977f8de9437be93de97c1c12f853c9c0cdcbda", size = 21715, upload-time = "2025-12-05T13:52:58.638Z" } +sdist = { url = "https://files.pythonhosted.org/packages/9f/4a/0883b8e3802965322523f0b200ecf33d31f10991d0401162f4b23c698b42/platformdirs-4.9.6.tar.gz", hash = "sha256:3bfa75b0ad0db84096ae777218481852c0ebc6c727b3168c1b9e0118e458cf0a", size = 29400, upload-time = "2026-04-09T00:04:10.812Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/cb/28/3bfe2fa5a7b9c46fe7e13c97bda14c895fb10fa2ebf1d0abb90e0cea7ee1/platformdirs-4.5.1-py3-none-any.whl", hash = "sha256:d03afa3963c806a9bed9d5125c8f4cb2fdaf74a55ab60e5d59b3fde758104d31", size = 18731, upload-time = "2025-12-05T13:52:56.823Z" }, + { url = "https://files.pythonhosted.org/packages/75/a6/a0a304dc33b49145b21f4808d763822111e67d1c3a32b524a1baf947b6e1/platformdirs-4.9.6-py3-none-any.whl", hash = "sha256:e61adb1d5e5cb3441b4b7710bea7e4c12250ca49439228cc1021c00dcfac0917", size = 21348, upload-time = "2026-04-09T00:04:09.463Z" }, ] [[package]] @@ -2654,11 +2655,11 @@ wheels = [ [[package]] name = "prometheus-client" -version = "0.24.0" +version = "0.25.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/07/8f/35d31c925f33a494b3f4f10ee25bf47757aff2d63424a06af13814293f13/prometheus_client-0.24.0.tar.gz", hash = "sha256:726b40c0d499f4904d4b5b7abe8d43e6aff090de0d468ae8f2226290b331c667", size = 85590, upload-time = "2026-01-12T20:12:48.963Z" } +sdist = { url = "https://files.pythonhosted.org/packages/1b/fb/d9aa83ffe43ce1f19e557c0971d04b90561b0cfd50762aafb01968285553/prometheus_client-0.25.0.tar.gz", hash = "sha256:5e373b75c31afb3c86f1a52fa1ad470c9aace18082d39ec0d2f918d11cc9ba28", size = 86035, upload-time = "2026-04-09T19:53:42.359Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/22/dd/50260b80759f90e3be66f094e0cd1fdef680b18d9f91edc9ae1b627624ba/prometheus_client-0.24.0-py3-none-any.whl", hash = "sha256:4ab6d4fb5a1b25ad74b58e6271857e356fff3399473e599d227ab5d0ce6637f0", size = 64062, upload-time = "2026-01-12T20:12:47.501Z" }, + { url = "https://files.pythonhosted.org/packages/8d/9b/d4b1e644385499c8346fa9b622a3f030dce14cd6ef8a1871c221a17a67e7/prometheus_client-0.25.0-py3-none-any.whl", hash = "sha256:d5aec89e349a6ec230805d0df882f3807f74fd6c1a2fa86864e3c2279059fed1", size = 64154, upload-time = "2026-04-09T19:53:41.324Z" }, ] [[package]] @@ -2702,41 +2703,41 @@ wheels = [ [[package]] name = "proto-plus" -version = "1.27.0" +version = "1.27.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "protobuf" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/01/89/9cbe2f4bba860e149108b683bc2efec21f14d5f7ed6e25562ad86acbc373/proto_plus-1.27.0.tar.gz", hash = "sha256:873af56dd0d7e91836aee871e5799e1c6f1bda86ac9a983e0bb9f0c266a568c4", size = 56158, upload-time = "2025-12-16T13:46:25.729Z" } +sdist = { url = "https://files.pythonhosted.org/packages/81/0d/94dfe80193e79d55258345901acd2917523d56e8381bc4dee7fd38e3868a/proto_plus-1.27.2.tar.gz", hash = "sha256:b2adde53adadf75737c44d3dcb0104fde65250dfc83ad59168b4aa3e574b6a24", size = 57204, upload-time = "2026-03-26T22:18:57.174Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/cd/24/3b7a0818484df9c28172857af32c2397b6d8fcd99d9468bd4684f98ebf0a/proto_plus-1.27.0-py3-none-any.whl", hash = "sha256:1baa7f81cf0f8acb8bc1f6d085008ba4171eaf669629d1b6d1673b21ed1c0a82", size = 50205, upload-time = "2025-12-16T13:46:24.76Z" }, + { url = "https://files.pythonhosted.org/packages/84/f3/1fba73eeffafc998a25d59703b63f8be4fe8a5cb12eaff7386a0ba0f7125/proto_plus-1.27.2-py3-none-any.whl", hash = "sha256:6432f75893d3b9e70b9c412f1d2f03f65b11fb164b793d14ae2ca01821d22718", size = 50450, upload-time = "2026-03-26T22:13:42.927Z" }, ] [[package]] name = "protobuf" -version = "6.33.5" +version = "6.33.6" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ba/25/7c72c307aafc96fa87062aa6291d9f7c94836e43214d43722e86037aac02/protobuf-6.33.5.tar.gz", hash = "sha256:6ddcac2a081f8b7b9642c09406bc6a4290128fce5f471cddd165960bb9119e5c", size = 444465, upload-time = "2026-01-29T21:51:33.494Z" } +sdist = { url = "https://files.pythonhosted.org/packages/66/70/e908e9c5e52ef7c3a6c7902c9dfbb34c7e29c25d2f81ade3856445fd5c94/protobuf-6.33.6.tar.gz", hash = "sha256:a6768d25248312c297558af96a9f9c929e8c4cee0659cb07e780731095f38135", size = 444531, upload-time = "2026-03-18T19:05:00.988Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b1/79/af92d0a8369732b027e6d6084251dd8e782c685c72da161bd4a2e00fbabb/protobuf-6.33.5-cp310-abi3-win32.whl", hash = "sha256:d71b040839446bac0f4d162e758bea99c8251161dae9d0983a3b88dee345153b", size = 425769, upload-time = "2026-01-29T21:51:21.751Z" }, - { url = "https://files.pythonhosted.org/packages/55/75/bb9bc917d10e9ee13dee8607eb9ab963b7cf8be607c46e7862c748aa2af7/protobuf-6.33.5-cp310-abi3-win_amd64.whl", hash = "sha256:3093804752167bcab3998bec9f1048baae6e29505adaf1afd14a37bddede533c", size = 437118, upload-time = "2026-01-29T21:51:24.022Z" }, - { url = "https://files.pythonhosted.org/packages/a2/6b/e48dfc1191bc5b52950246275bf4089773e91cb5ba3592621723cdddca62/protobuf-6.33.5-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:a5cb85982d95d906df1e2210e58f8e4f1e3cdc088e52c921a041f9c9a0386de5", size = 427766, upload-time = "2026-01-29T21:51:25.413Z" }, - { url = "https://files.pythonhosted.org/packages/4e/b1/c79468184310de09d75095ed1314b839eb2f72df71097db9d1404a1b2717/protobuf-6.33.5-cp39-abi3-manylinux2014_aarch64.whl", hash = "sha256:9b71e0281f36f179d00cbcb119cb19dec4d14a81393e5ea220f64b286173e190", size = 324638, upload-time = "2026-01-29T21:51:26.423Z" }, - { url = "https://files.pythonhosted.org/packages/c5/f5/65d838092fd01c44d16037953fd4c2cc851e783de9b8f02b27ec4ffd906f/protobuf-6.33.5-cp39-abi3-manylinux2014_s390x.whl", hash = "sha256:8afa18e1d6d20af15b417e728e9f60f3aa108ee76f23c3b2c07a2c3b546d3afd", size = 339411, upload-time = "2026-01-29T21:51:27.446Z" }, - { url = "https://files.pythonhosted.org/packages/9b/53/a9443aa3ca9ba8724fdfa02dd1887c1bcd8e89556b715cfbacca6b63dbec/protobuf-6.33.5-cp39-abi3-manylinux2014_x86_64.whl", hash = "sha256:cbf16ba3350fb7b889fca858fb215967792dc125b35c7976ca4818bee3521cf0", size = 323465, upload-time = "2026-01-29T21:51:28.925Z" }, - { url = "https://files.pythonhosted.org/packages/57/bf/2086963c69bdac3d7cff1cc7ff79b8ce5ea0bec6797a017e1be338a46248/protobuf-6.33.5-py3-none-any.whl", hash = "sha256:69915a973dd0f60f31a08b8318b73eab2bd6a392c79184b3612226b0a3f8ec02", size = 170687, upload-time = "2026-01-29T21:51:32.557Z" }, + { url = "https://files.pythonhosted.org/packages/fc/9f/2f509339e89cfa6f6a4c4ff50438db9ca488dec341f7e454adad60150b00/protobuf-6.33.6-cp310-abi3-win32.whl", hash = "sha256:7d29d9b65f8afef196f8334e80d6bc1d5d4adedb449971fefd3723824e6e77d3", size = 425739, upload-time = "2026-03-18T19:04:48.373Z" }, + { url = "https://files.pythonhosted.org/packages/76/5d/683efcd4798e0030c1bab27374fd13a89f7c2515fb1f3123efdfaa5eab57/protobuf-6.33.6-cp310-abi3-win_amd64.whl", hash = "sha256:0cd27b587afca21b7cfa59a74dcbd48a50f0a6400cfb59391340ad729d91d326", size = 437089, upload-time = "2026-03-18T19:04:50.381Z" }, + { url = "https://files.pythonhosted.org/packages/5c/01/a3c3ed5cd186f39e7880f8303cc51385a198a81469d53d0fdecf1f64d929/protobuf-6.33.6-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:9720e6961b251bde64edfdab7d500725a2af5280f3f4c87e57c0208376aa8c3a", size = 427737, upload-time = "2026-03-18T19:04:51.866Z" }, + { url = "https://files.pythonhosted.org/packages/ee/90/b3c01fdec7d2f627b3a6884243ba328c1217ed2d978def5c12dc50d328a3/protobuf-6.33.6-cp39-abi3-manylinux2014_aarch64.whl", hash = "sha256:e2afbae9b8e1825e3529f88d514754e094278bb95eadc0e199751cdd9a2e82a2", size = 324610, upload-time = "2026-03-18T19:04:53.096Z" }, + { url = "https://files.pythonhosted.org/packages/9b/ca/25afc144934014700c52e05103c2421997482d561f3101ff352e1292fb81/protobuf-6.33.6-cp39-abi3-manylinux2014_s390x.whl", hash = "sha256:c96c37eec15086b79762ed265d59ab204dabc53056e3443e702d2681f4b39ce3", size = 339381, upload-time = "2026-03-18T19:04:54.616Z" }, + { url = "https://files.pythonhosted.org/packages/16/92/d1e32e3e0d894fe00b15ce28ad4944ab692713f2e7f0a99787405e43533a/protobuf-6.33.6-cp39-abi3-manylinux2014_x86_64.whl", hash = "sha256:e9db7e292e0ab79dd108d7f1a94fe31601ce1ee3f7b79e0692043423020b0593", size = 323436, upload-time = "2026-03-18T19:04:55.768Z" }, + { url = "https://files.pythonhosted.org/packages/c4/72/02445137af02769918a93807b2b7890047c32bfb9f90371cbc12688819eb/protobuf-6.33.6-py3-none-any.whl", hash = "sha256:77179e006c476e69bf8e8ce866640091ec42e1beb80b213c3900006ecfba6901", size = 170656, upload-time = "2026-03-18T19:04:59.826Z" }, ] [[package]] name = "psycopg" -version = "3.3.3" +version = "3.3.4" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "tzdata", marker = "sys_platform == 'win32'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/d3/b6/379d0a960f8f435ec78720462fd94c4863e7a31237cf81bf76d0af5883bf/psycopg-3.3.3.tar.gz", hash = "sha256:5e9a47458b3c1583326513b2556a2a9473a1001a56c9efe9e587245b43148dd9", size = 165624, upload-time = "2026-02-18T16:52:16.546Z" } +sdist = { url = "https://files.pythonhosted.org/packages/db/2f/cb91e5502ec9de1de6f1b76cfbf69531932725361168bb06963620c77e2e/psycopg-3.3.4.tar.gz", hash = "sha256:e21207764952cff81b6b8bdacad9a3939f2793367fdac2987b3aac36a651b5bc", size = 165799, upload-time = "2026-05-01T23:31:55.179Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c8/5b/181e2e3becb7672b502f0ed7f16ed7352aca7c109cfb94cf3878a9186db9/psycopg-3.3.3-py3-none-any.whl", hash = "sha256:f96525a72bcfade6584ab17e89de415ff360748c766f0106959144dcbb38c698", size = 212768, upload-time = "2026-02-18T16:46:27.365Z" }, + { url = "https://files.pythonhosted.org/packages/5c/e0/7b3dee031daae7743609ce3c746565d4a3ed7c2c186479eb48e34e838c64/psycopg-3.3.4-py3-none-any.whl", hash = "sha256:b6bbc25ccf05c8fad3b061d9db2ef0909a555171b84b07f29458a447253d679a", size = 213001, upload-time = "2026-05-01T23:20:50.816Z" }, ] [package.optional-dependencies] @@ -2749,9 +2750,9 @@ pool = [ [[package]] name = "psycopg-c" -version = "3.3.3" +version = "3.3.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/cb/a0/8feb0ca8c7c20a8b9ac4d46b335ddd57e48e593b714262f006880f34fee5/psycopg_c-3.3.3.tar.gz", hash = "sha256:86ef6f4424348247828e83fb0882c9f8acb33e64d0a5ce66c1b4a5107ee73edd", size = 631965, upload-time = "2026-02-18T16:52:18.084Z" } +sdist = { url = "https://files.pythonhosted.org/packages/21/7c/c08364f2eab2913e4068b3b955d963e7a3491986a85429990969525def30/psycopg_c-3.3.4.tar.gz", hash = "sha256:ed8106128b2d04359c185fc9641b4409abfce4d0b6fb1d1ff6800646e27f1a22", size = 647111, upload-time = "2026-05-01T23:31:58.032Z" } [[package]] name = "psycopg-pool" @@ -2803,16 +2804,16 @@ wheels = [ [[package]] name = "pycparser" -version = "2.23" +version = "3.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/fe/cf/d2d3b9f5699fb1e4615c8e32ff220203e43b248e1dfcc6736ad9057731ca/pycparser-2.23.tar.gz", hash = "sha256:78816d4f24add8f10a06d6f05b4d424ad9e96cfebf68a4ddc99c65c0720d00c2", size = 173734, upload-time = "2025-09-09T13:23:47.91Z" } +sdist = { url = "https://files.pythonhosted.org/packages/1b/7d/92392ff7815c21062bea51aa7b87d45576f649f16458d78b7cf94b9ab2e6/pycparser-3.0.tar.gz", hash = "sha256:600f49d217304a5902ac3c37e1281c9fe94e4d0489de643a9504c5cdfdfc6b29", size = 103492, upload-time = "2026-01-21T14:26:51.89Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a0/e3/59cd50310fc9b59512193629e1984c1f95e5c8ae6e5d8c69532ccc65a7fe/pycparser-2.23-py3-none-any.whl", hash = "sha256:e5c6e8d3fbad53479cab09ac03729e0a9faf2bee3db8208a550daf5af81a5934", size = 118140, upload-time = "2025-09-09T13:23:46.651Z" }, + { url = "https://files.pythonhosted.org/packages/0c/c3/44f3fbbfa403ea2a7c779186dc20772604442dde72947e7d01069cbe98e3/pycparser-3.0-py3-none-any.whl", hash = "sha256:b727414169a36b7d524c1c3e31839a521725078d7b2ff038656844266160a992", size = 48172, upload-time = "2026-01-21T14:26:50.693Z" }, ] [[package]] name = "pydantic" -version = "2.12.5" +version = "2.13.4" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "annotated-types" }, @@ -2820,9 +2821,9 @@ dependencies = [ { name = "typing-extensions" }, { name = "typing-inspection" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/69/44/36f1a6e523abc58ae5f928898e4aca2e0ea509b5aa6f6f392a5d882be928/pydantic-2.12.5.tar.gz", hash = "sha256:4d351024c75c0f085a9febbb665ce8c0c6ec5d30e903bdb6394b7ede26aebb49", size = 821591, upload-time = "2025-11-26T15:11:46.471Z" } +sdist = { url = "https://files.pythonhosted.org/packages/18/a5/b60d21ac674192f8ab0ba4e9fd860690f9b4a6e51ca5df118733b487d8d6/pydantic-2.13.4.tar.gz", hash = "sha256:c40756b57adaa8b1efeeced5c196f3f3b7c435f90e84ea7f443901bec8099ef6", size = 844775, upload-time = "2026-05-06T13:43:05.343Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/5a/87/b70ad306ebb6f9b585f114d0ac2137d792b48be34d732d60e597c2f8465a/pydantic-2.12.5-py3-none-any.whl", hash = "sha256:e561593fccf61e8a20fc46dfc2dfe075b8be7d0188df33f221ad1f0139180f9d", size = 463580, upload-time = "2025-11-26T15:11:44.605Z" }, + { url = "https://files.pythonhosted.org/packages/fd/7b/122376b1fd3c62c1ed9dc80c931ace4844b3c55407b6fb2d199377c9736f/pydantic-2.13.4-py3-none-any.whl", hash = "sha256:45a282cde31d808236fd7ea9d919b128653c8b38b393d1c4ab335c62924d9aba", size = 472262, upload-time = "2026-05-06T13:43:02.641Z" }, ] [package.optional-dependencies] @@ -2832,41 +2833,43 @@ email = [ [[package]] name = "pydantic-core" -version = "2.41.5" +version = "2.46.4" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/71/70/23b021c950c2addd24ec408e9ab05d59b035b39d97cdc1130e1bce647bb6/pydantic_core-2.41.5.tar.gz", hash = "sha256:08daa51ea16ad373ffd5e7606252cc32f07bc72b28284b6bc9c6df804816476e", size = 460952, upload-time = "2025-11-04T13:43:49.098Z" } +sdist = { url = "https://files.pythonhosted.org/packages/9d/56/921726b776ace8d8f5db44c4ef961006580d91dc52b803c489fafd1aa249/pydantic_core-2.46.4.tar.gz", hash = "sha256:62f875393d7f270851f20523dd2e29f082bcc82292d66db2b64ea71f64b6e1c1", size = 471464, upload-time = "2026-05-06T13:37:06.98Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ea/28/46b7c5c9635ae96ea0fbb779e271a38129df2550f763937659ee6c5dbc65/pydantic_core-2.41.5-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:3f37a19d7ebcdd20b96485056ba9e8b304e27d9904d233d7b1015db320e51f0a", size = 2119622, upload-time = "2025-11-04T13:40:56.68Z" }, - { url = "https://files.pythonhosted.org/packages/74/1a/145646e5687e8d9a1e8d09acb278c8535ebe9e972e1f162ed338a622f193/pydantic_core-2.41.5-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:1d1d9764366c73f996edd17abb6d9d7649a7eb690006ab6adbda117717099b14", size = 1891725, upload-time = "2025-11-04T13:40:58.807Z" }, - { url = "https://files.pythonhosted.org/packages/23/04/e89c29e267b8060b40dca97bfc64a19b2a3cf99018167ea1677d96368273/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25e1c2af0fce638d5f1988b686f3b3ea8cd7de5f244ca147c777769e798a9cd1", size = 1915040, upload-time = "2025-11-04T13:41:00.853Z" }, - { url = "https://files.pythonhosted.org/packages/84/a3/15a82ac7bd97992a82257f777b3583d3e84bdb06ba6858f745daa2ec8a85/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:506d766a8727beef16b7adaeb8ee6217c64fc813646b424d0804d67c16eddb66", size = 2063691, upload-time = "2025-11-04T13:41:03.504Z" }, - { url = "https://files.pythonhosted.org/packages/74/9b/0046701313c6ef08c0c1cf0e028c67c770a4e1275ca73131563c5f2a310a/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4819fa52133c9aa3c387b3328f25c1facc356491e6135b459f1de698ff64d869", size = 2213897, upload-time = "2025-11-04T13:41:05.804Z" }, - { url = "https://files.pythonhosted.org/packages/8a/cd/6bac76ecd1b27e75a95ca3a9a559c643b3afcd2dd62086d4b7a32a18b169/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2b761d210c9ea91feda40d25b4efe82a1707da2ef62901466a42492c028553a2", size = 2333302, upload-time = "2025-11-04T13:41:07.809Z" }, - { url = "https://files.pythonhosted.org/packages/4c/d2/ef2074dc020dd6e109611a8be4449b98cd25e1b9b8a303c2f0fca2f2bcf7/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:22f0fb8c1c583a3b6f24df2470833b40207e907b90c928cc8d3594b76f874375", size = 2064877, upload-time = "2025-11-04T13:41:09.827Z" }, - { url = "https://files.pythonhosted.org/packages/18/66/e9db17a9a763d72f03de903883c057b2592c09509ccfe468187f2a2eef29/pydantic_core-2.41.5-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2782c870e99878c634505236d81e5443092fba820f0373997ff75f90f68cd553", size = 2180680, upload-time = "2025-11-04T13:41:12.379Z" }, - { url = "https://files.pythonhosted.org/packages/d3/9e/3ce66cebb929f3ced22be85d4c2399b8e85b622db77dad36b73c5387f8f8/pydantic_core-2.41.5-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:0177272f88ab8312479336e1d777f6b124537d47f2123f89cb37e0accea97f90", size = 2138960, upload-time = "2025-11-04T13:41:14.627Z" }, - { url = "https://files.pythonhosted.org/packages/a6/62/205a998f4327d2079326b01abee48e502ea739d174f0a89295c481a2272e/pydantic_core-2.41.5-cp314-cp314-musllinux_1_1_armv7l.whl", hash = "sha256:63510af5e38f8955b8ee5687740d6ebf7c2a0886d15a6d65c32814613681bc07", size = 2339102, upload-time = "2025-11-04T13:41:16.868Z" }, - { url = "https://files.pythonhosted.org/packages/3c/0d/f05e79471e889d74d3d88f5bd20d0ed189ad94c2423d81ff8d0000aab4ff/pydantic_core-2.41.5-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:e56ba91f47764cc14f1daacd723e3e82d1a89d783f0f5afe9c364b8bb491ccdb", size = 2326039, upload-time = "2025-11-04T13:41:18.934Z" }, - { url = "https://files.pythonhosted.org/packages/ec/e1/e08a6208bb100da7e0c4b288eed624a703f4d129bde2da475721a80cab32/pydantic_core-2.41.5-cp314-cp314-win32.whl", hash = "sha256:aec5cf2fd867b4ff45b9959f8b20ea3993fc93e63c7363fe6851424c8a7e7c23", size = 1995126, upload-time = "2025-11-04T13:41:21.418Z" }, - { url = "https://files.pythonhosted.org/packages/48/5d/56ba7b24e9557f99c9237e29f5c09913c81eeb2f3217e40e922353668092/pydantic_core-2.41.5-cp314-cp314-win_amd64.whl", hash = "sha256:8e7c86f27c585ef37c35e56a96363ab8de4e549a95512445b85c96d3e2f7c1bf", size = 2015489, upload-time = "2025-11-04T13:41:24.076Z" }, - { url = "https://files.pythonhosted.org/packages/4e/bb/f7a190991ec9e3e0ba22e4993d8755bbc4a32925c0b5b42775c03e8148f9/pydantic_core-2.41.5-cp314-cp314-win_arm64.whl", hash = "sha256:e672ba74fbc2dc8eea59fb6d4aed6845e6905fc2a8afe93175d94a83ba2a01a0", size = 1977288, upload-time = "2025-11-04T13:41:26.33Z" }, - { url = "https://files.pythonhosted.org/packages/92/ed/77542d0c51538e32e15afe7899d79efce4b81eee631d99850edc2f5e9349/pydantic_core-2.41.5-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:8566def80554c3faa0e65ac30ab0932b9e3a5cd7f8323764303d468e5c37595a", size = 2120255, upload-time = "2025-11-04T13:41:28.569Z" }, - { url = "https://files.pythonhosted.org/packages/bb/3d/6913dde84d5be21e284439676168b28d8bbba5600d838b9dca99de0fad71/pydantic_core-2.41.5-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:b80aa5095cd3109962a298ce14110ae16b8c1aece8b72f9dafe81cf597ad80b3", size = 1863760, upload-time = "2025-11-04T13:41:31.055Z" }, - { url = "https://files.pythonhosted.org/packages/5a/f0/e5e6b99d4191da102f2b0eb9687aaa7f5bea5d9964071a84effc3e40f997/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3006c3dd9ba34b0c094c544c6006cc79e87d8612999f1a5d43b769b89181f23c", size = 1878092, upload-time = "2025-11-04T13:41:33.21Z" }, - { url = "https://files.pythonhosted.org/packages/71/48/36fb760642d568925953bcc8116455513d6e34c4beaa37544118c36aba6d/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:72f6c8b11857a856bcfa48c86f5368439f74453563f951e473514579d44aa612", size = 2053385, upload-time = "2025-11-04T13:41:35.508Z" }, - { url = "https://files.pythonhosted.org/packages/20/25/92dc684dd8eb75a234bc1c764b4210cf2646479d54b47bf46061657292a8/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5cb1b2f9742240e4bb26b652a5aeb840aa4b417c7748b6f8387927bc6e45e40d", size = 2218832, upload-time = "2025-11-04T13:41:37.732Z" }, - { url = "https://files.pythonhosted.org/packages/e2/09/f53e0b05023d3e30357d82eb35835d0f6340ca344720a4599cd663dca599/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bd3d54f38609ff308209bd43acea66061494157703364ae40c951f83ba99a1a9", size = 2327585, upload-time = "2025-11-04T13:41:40Z" }, - { url = "https://files.pythonhosted.org/packages/aa/4e/2ae1aa85d6af35a39b236b1b1641de73f5a6ac4d5a7509f77b814885760c/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ff4321e56e879ee8d2a879501c8e469414d948f4aba74a2d4593184eb326660", size = 2041078, upload-time = "2025-11-04T13:41:42.323Z" }, - { url = "https://files.pythonhosted.org/packages/cd/13/2e215f17f0ef326fc72afe94776edb77525142c693767fc347ed6288728d/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d0d2568a8c11bf8225044aa94409e21da0cb09dcdafe9ecd10250b2baad531a9", size = 2173914, upload-time = "2025-11-04T13:41:45.221Z" }, - { url = "https://files.pythonhosted.org/packages/02/7a/f999a6dcbcd0e5660bc348a3991c8915ce6599f4f2c6ac22f01d7a10816c/pydantic_core-2.41.5-cp314-cp314t-musllinux_1_1_aarch64.whl", hash = "sha256:a39455728aabd58ceabb03c90e12f71fd30fa69615760a075b9fec596456ccc3", size = 2129560, upload-time = "2025-11-04T13:41:47.474Z" }, - { url = "https://files.pythonhosted.org/packages/3a/b1/6c990ac65e3b4c079a4fb9f5b05f5b013afa0f4ed6780a3dd236d2cbdc64/pydantic_core-2.41.5-cp314-cp314t-musllinux_1_1_armv7l.whl", hash = "sha256:239edca560d05757817c13dc17c50766136d21f7cd0fac50295499ae24f90fdf", size = 2329244, upload-time = "2025-11-04T13:41:49.992Z" }, - { url = "https://files.pythonhosted.org/packages/d9/02/3c562f3a51afd4d88fff8dffb1771b30cfdfd79befd9883ee094f5b6c0d8/pydantic_core-2.41.5-cp314-cp314t-musllinux_1_1_x86_64.whl", hash = "sha256:2a5e06546e19f24c6a96a129142a75cee553cc018ffee48a460059b1185f4470", size = 2331955, upload-time = "2025-11-04T13:41:54.079Z" }, - { url = "https://files.pythonhosted.org/packages/5c/96/5fb7d8c3c17bc8c62fdb031c47d77a1af698f1d7a406b0f79aaa1338f9ad/pydantic_core-2.41.5-cp314-cp314t-win32.whl", hash = "sha256:b4ececa40ac28afa90871c2cc2b9ffd2ff0bf749380fbdf57d165fd23da353aa", size = 1988906, upload-time = "2025-11-04T13:41:56.606Z" }, - { url = "https://files.pythonhosted.org/packages/22/ed/182129d83032702912c2e2d8bbe33c036f342cc735737064668585dac28f/pydantic_core-2.41.5-cp314-cp314t-win_amd64.whl", hash = "sha256:80aa89cad80b32a912a65332f64a4450ed00966111b6615ca6816153d3585a8c", size = 1981607, upload-time = "2025-11-04T13:41:58.889Z" }, - { url = "https://files.pythonhosted.org/packages/9f/ed/068e41660b832bb0b1aa5b58011dea2a3fe0ba7861ff38c4d4904c1c1a99/pydantic_core-2.41.5-cp314-cp314t-win_arm64.whl", hash = "sha256:35b44f37a3199f771c3eaa53051bc8a70cd7b54f333531c59e29fd4db5d15008", size = 1974769, upload-time = "2025-11-04T13:42:01.186Z" }, + { url = "https://files.pythonhosted.org/packages/8d/74/228a26ddad29c6672b805d9fd78e8d251cd04004fa7eed0e622096cd0250/pydantic_core-2.46.4-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:428e04521a40150c85216fc8b85e8d39fece235a9cf5e383761238c7fa9b96fb", size = 2102079, upload-time = "2026-05-06T13:38:41.019Z" }, + { url = "https://files.pythonhosted.org/packages/ad/1f/8970b150a4b4365623ae00fc88603491f763c627311ae8031e3111356d6e/pydantic_core-2.46.4-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:23ace664830ee0bfe014a0c7bc248b1f7f25ed7ad103852c317624a1083af462", size = 1952179, upload-time = "2026-05-06T13:36:59.812Z" }, + { url = "https://files.pythonhosted.org/packages/95/30/5211a831ae054928054b2f79731661087a2bc5c01e825c672b3a4a8f1b3e/pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce5c1d2a8b27468f433ca974829c44060b8097eedc39933e3c206a90ee49c4a9", size = 1978926, upload-time = "2026-05-06T13:37:39.933Z" }, + { url = "https://files.pythonhosted.org/packages/57/e9/689668733b1eb67adeef047db3c2e8788fcf65a7fd9c9e2b46b7744fe245/pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7283d57845ecf5a163403eb0702dfc220cc4fbdd18919cb5ccea4f95ee1cdab4", size = 2046785, upload-time = "2026-05-06T13:38:01.995Z" }, + { url = "https://files.pythonhosted.org/packages/60/d9/6715260422ff50a2109878fd24d948a6c3446bb2664f34ee78cd972b3acd/pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8daafc69c93ee8a0204506a3b6b30f586ef54028f52aeeeb5c4cfc5184fd5914", size = 2228733, upload-time = "2026-05-06T13:40:50.371Z" }, + { url = "https://files.pythonhosted.org/packages/18/ae/fdb2f64316afca925640f8e70bb1a564b0ec2721c1389e25b8eb4bf9a299/pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd2213145bcc2ba85884d0ac63d222fece9209678f77b9b4d76f054c561adb28", size = 2307534, upload-time = "2026-05-06T13:37:21.531Z" }, + { url = "https://files.pythonhosted.org/packages/89/1d/8eff589b45bb8190a9d12c49cfad0f176a5cbd1534908a6b5125e2886239/pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a5f930472650a82629163023e630d160863fce524c616f4e5186e5de9d9a49b", size = 2099732, upload-time = "2026-05-06T13:39:31.942Z" }, + { url = "https://files.pythonhosted.org/packages/06/d5/ee5a3366637fee41dee51a1fc91562dcf12ddbc68fda34e6b253da2324bb/pydantic_core-2.46.4-cp314-cp314-manylinux_2_31_riscv64.whl", hash = "sha256:c1b3f518abeca3aa13c712fd202306e145abf59a18b094a6bafb2d2bbf59192c", size = 2129627, upload-time = "2026-05-06T13:37:25.033Z" }, + { url = "https://files.pythonhosted.org/packages/94/33/2414be571d2c6a6c4d08be21f9292b6d3fdb08949a97b6dfe985017821db/pydantic_core-2.46.4-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1a7dd0b3ee80d90150e3495a3a13ac34dbcbfd4f012996a6a1d8900e91b5c0fb", size = 2179141, upload-time = "2026-05-06T13:37:14.046Z" }, + { url = "https://files.pythonhosted.org/packages/7b/79/7daa95be995be0eecc4cf75064cb33f9bbbfe3fe0158caf2f0d4a996a5c7/pydantic_core-2.46.4-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:3fb702cd90b0446a3a1c5e470bfa0dd23c0233b676a9099ddcc964fa6ca13898", size = 2184325, upload-time = "2026-05-06T13:36:53.615Z" }, + { url = "https://files.pythonhosted.org/packages/9f/cb/d0a382f5c0de8a222dc61c65348e0ce831b1f68e0a018450d31c2cace3a5/pydantic_core-2.46.4-cp314-cp314-musllinux_1_1_armv7l.whl", hash = "sha256:b8458003118a712e66286df6a707db01c52c0f52f7db8e4a38f0da1d3b94fc4e", size = 2323990, upload-time = "2026-05-06T13:40:29.971Z" }, + { url = "https://files.pythonhosted.org/packages/05/db/d9ba624cc4a5aced1598e88c04fdbd8310c8a69b9d38b9a3d39ce3a61ed7/pydantic_core-2.46.4-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:372429a130e469c9cd698925ce5fc50940b7a1336b0d82038e63d5bbc4edc519", size = 2369978, upload-time = "2026-05-06T13:37:23.027Z" }, + { url = "https://files.pythonhosted.org/packages/f2/20/d15df15ba918c423461905802bfd2981c3af0bfa0e40d05e13edbfa48bc3/pydantic_core-2.46.4-cp314-cp314-win32.whl", hash = "sha256:85bb3611ff1802f3ee7fdd7dbff26b56f343fb432d57a4728fdd49b6ef35e2f4", size = 1966354, upload-time = "2026-05-06T13:38:03.499Z" }, + { url = "https://files.pythonhosted.org/packages/fc/b6/6b8de4c0a7d7ab3004c439c80c5c1e0a3e8d78bbae19379b01960383d9e5/pydantic_core-2.46.4-cp314-cp314-win_amd64.whl", hash = "sha256:811ff8e9c313ab425368bcbb36e5c4ebd7108c2bbf4e4089cfbb0b01eff63fac", size = 2072238, upload-time = "2026-05-06T13:39:40.807Z" }, + { url = "https://files.pythonhosted.org/packages/32/36/51eb763beec1f4cf59b1db243a7dcc39cbb41230f050a09b9d69faaf0a48/pydantic_core-2.46.4-cp314-cp314-win_arm64.whl", hash = "sha256:bfec22eab3c8cc2ceec0248aec886624116dc079afa027ecc8ad4a7e62010f8a", size = 2018251, upload-time = "2026-05-06T13:37:26.72Z" }, + { url = "https://files.pythonhosted.org/packages/e8/91/855af51d625b23aa987116a19e231d2aaef9c4a415273ddc189b79a45fee/pydantic_core-2.46.4-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:af8244b2bef6aaad6d92cda81372de7f8c8d36c9f0c3ea36e827c60e7d9467a0", size = 2099593, upload-time = "2026-05-06T13:39:47.682Z" }, + { url = "https://files.pythonhosted.org/packages/fb/1b/8784a54c65edb5f49f0a14d6977cf1b209bba85a4c77445b255c2de58ab3/pydantic_core-2.46.4-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:5a4330cdbc57162e4b3aa303f588ba752257694c9c9be3e7ebb11b4aca659b5d", size = 1935226, upload-time = "2026-05-06T13:40:40.428Z" }, + { url = "https://files.pythonhosted.org/packages/e8/e7/1955d28d1afc56dd4b3ad7cc0cf39df1b9852964cf16e5d13912756d6d6b/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29c61fc04a3d840155ff08e475a04809278972fe6aef51e2720554e96367e34b", size = 1974605, upload-time = "2026-05-06T13:37:32.029Z" }, + { url = "https://files.pythonhosted.org/packages/93/e2/3fedbf0ba7a22850e6e9fd78117f1c0f10f950182344d8a6c535d468fdd8/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c50f2528cf200c5eed56faf3f4e22fcd5f38c157a8b78576e6ba3168ec35f000", size = 2030777, upload-time = "2026-05-06T13:38:55.239Z" }, + { url = "https://files.pythonhosted.org/packages/f8/61/46be275fcaaba0b4f5b9669dd852267ce1ff616592dccf7a7845588df091/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0cbe8b01f948de4286c74cdd6c667aceb38f5c1e26f0693b3983d9d74887c65e", size = 2236641, upload-time = "2026-05-06T13:37:08.096Z" }, + { url = "https://files.pythonhosted.org/packages/60/db/12e93e46a8bac9988be3c016860f83293daea8c716c029c9ace279036f2f/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:617d7e2ca7dcb8c5cf6bcb8c59b8832c94b36196bbf1cbd1bfb56ed341905edd", size = 2286404, upload-time = "2026-05-06T13:40:20.221Z" }, + { url = "https://files.pythonhosted.org/packages/e2/4a/4d8b19008f38d31c53b8219cfedc2e3d5de5fe99d90076b7e767de29274f/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7027560ee92211647d0d34e3f7cd6f50da56399d26a9c8ad0da286d3869a53f3", size = 2109219, upload-time = "2026-05-06T13:38:12.153Z" }, + { url = "https://files.pythonhosted.org/packages/88/70/3cbc40978fefb7bb09c6708d40d4ad1a5d70fd7213c3d17f971de868ec1f/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_31_riscv64.whl", hash = "sha256:f99626688942fb746e545232e7726926f3be91b5975f8b55327665fafda991c7", size = 2110594, upload-time = "2026-05-06T13:40:02.971Z" }, + { url = "https://files.pythonhosted.org/packages/9d/20/b8d36736216e29491125531685b2f9e61aa5b4b2599893f8268551da3338/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fc3e9034a63de20e15e8ade85358bc6efc614008cab72898b4b4952bea0509ff", size = 2159542, upload-time = "2026-05-06T13:39:27.506Z" }, + { url = "https://files.pythonhosted.org/packages/1d/a2/367df868eb584dacf6bf82a389272406d7178e301c4ac82545ab98bc2dd9/pydantic_core-2.46.4-cp314-cp314t-musllinux_1_1_aarch64.whl", hash = "sha256:97e7cf2be5c77b7d1a9713a05605d49460d02c6078d38d8bef3cbe323c548424", size = 2168146, upload-time = "2026-05-06T13:38:31.93Z" }, + { url = "https://files.pythonhosted.org/packages/c1/b8/4460f77f7e201893f649a29ab355dddd3beee8a97bcb1a320db414f9a06e/pydantic_core-2.46.4-cp314-cp314t-musllinux_1_1_armv7l.whl", hash = "sha256:3bf92c5d0e00fefaab325a4d27828fe6b6e2a21848686b5b60d2d9eeb09d76c6", size = 2306309, upload-time = "2026-05-06T13:37:44.717Z" }, + { url = "https://files.pythonhosted.org/packages/64/c4/be2639293acd87dc8ddbcec41a73cee9b2ebf996fe6d892a1a74e88ad3f7/pydantic_core-2.46.4-cp314-cp314t-musllinux_1_1_x86_64.whl", hash = "sha256:3ecbc122d18468d06ca279dc26a8c2e2d5acb10943bb35e36ae92096dc3b5565", size = 2369736, upload-time = "2026-05-06T13:37:05.645Z" }, + { url = "https://files.pythonhosted.org/packages/30/a6/9f9f380dbb301f67023bf8f707aaa75daadf84f7152d95c410fd7e81d994/pydantic_core-2.46.4-cp314-cp314t-win32.whl", hash = "sha256:e846ae7835bf0703ae43f534ab79a867146dadd59dc9ca5c8b53d5c8f7c9ef02", size = 1955575, upload-time = "2026-05-06T13:38:51.116Z" }, + { url = "https://files.pythonhosted.org/packages/40/1f/f1eb9eb350e795d1af8586289746f5c5677d16043040d63710e22abc43c9/pydantic_core-2.46.4-cp314-cp314t-win_amd64.whl", hash = "sha256:2108ba5c1c1eca18030634489dc544844144ee36357f2f9f780b93e7ddbb44b5", size = 2051624, upload-time = "2026-05-06T13:38:21.672Z" }, + { url = "https://files.pythonhosted.org/packages/f6/d2/42dd53d0a85c27606f316d3aa5d2869c4e8470a5ed6dec30e4a1abe19192/pydantic_core-2.46.4-cp314-cp314t-win_arm64.whl", hash = "sha256:4fcbe087dbc2068af7eda3aa87634eba216dbda64d1ae73c8684b621d33f6596", size = 2017325, upload-time = "2026-05-06T13:40:52.723Z" }, ] [[package]] @@ -2883,11 +2886,11 @@ wheels = [ [[package]] name = "pygments" -version = "2.19.2" +version = "2.20.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b0/77/a5b8c569bf593b0140bde72ea885a803b82086995367bf2037de0159d924/pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887", size = 4968631, upload-time = "2025-06-21T13:39:12.283Z" } +sdist = { url = "https://files.pythonhosted.org/packages/c3/b2/bc9c9196916376152d655522fdcebac55e66de6603a76a02bca1b6414f6c/pygments-2.20.0.tar.gz", hash = "sha256:6757cd03768053ff99f3039c1a36d6c0aa0b263438fcab17520b30a303a82b5f", size = 4955991, upload-time = "2026-03-29T13:29:33.898Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b", size = 1225217, upload-time = "2025-06-21T13:39:07.939Z" }, + { url = "https://files.pythonhosted.org/packages/f4/7e/a72dd26f3b0f4f2bf1dd8923c85f7ceb43172af56d63c7383eb62b332364/pygments-2.20.0-py3-none-any.whl", hash = "sha256:81a9e26dd42fd28a23a2d169d86d7ac03b46e2f8b59ed4698fb4785f946d0176", size = 1231151, upload-time = "2026-03-29T13:29:30.038Z" }, ] [[package]] @@ -2941,23 +2944,23 @@ wheels = [ [[package]] name = "pyopenssl" -version = "26.0.0" +version = "26.2.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cryptography" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/8e/11/a62e1d33b373da2b2c2cd9eb508147871c80f12b1cacde3c5d314922afdd/pyopenssl-26.0.0.tar.gz", hash = "sha256:f293934e52936f2e3413b89c6ce36df66a0b34ae1ea3a053b8c5020ff2f513fc", size = 185534, upload-time = "2026-03-15T14:28:26.353Z" } +sdist = { url = "https://files.pythonhosted.org/packages/1a/51/27a5ad5f939d08f690a326ef9582cda7140555180db71695f6fb747d6a36/pyopenssl-26.2.0.tar.gz", hash = "sha256:8c6fcecd1183a7fc897548dfe388b0cdb7f37e018200d8409cf33959dbe35387", size = 182195, upload-time = "2026-05-04T23:06:09.72Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/fb/7d/d4f7d908fa8415571771b30669251d57c3cf313b36a856e6d7548ae01619/pyopenssl-26.0.0-py3-none-any.whl", hash = "sha256:df94d28498848b98cc1c0ffb8ef1e71e40210d3b0a8064c9d29571ed2904bf81", size = 57969, upload-time = "2026-03-15T14:28:24.864Z" }, + { url = "https://files.pythonhosted.org/packages/73/b8/a0e2790ae249d6f38c9f66de7a211621a7ab2650217bcd04e1262f578a56/pyopenssl-26.2.0-py3-none-any.whl", hash = "sha256:4f9d971bc5298b8bc1fab282803da04bf000c755d4ad9d99b52de2569ca19a70", size = 55823, upload-time = "2026-05-04T23:06:08.395Z" }, ] [[package]] name = "pyparsing" -version = "3.3.1" +version = "3.3.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/33/c1/1d9de9aeaa1b89b0186e5fe23294ff6517fce1bc69149185577cd31016b2/pyparsing-3.3.1.tar.gz", hash = "sha256:47fad0f17ac1e2cad3de3b458570fbc9b03560aa029ed5e16ee5554da9a2251c", size = 1550512, upload-time = "2025-12-23T03:14:04.391Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f3/91/9c6ee907786a473bf81c5f53cf703ba0957b23ab84c264080fb5a450416f/pyparsing-3.3.2.tar.gz", hash = "sha256:c777f4d763f140633dcb6d8a3eda953bf7a214dc4eff598413c070bcdc117cbc", size = 6851574, upload-time = "2026-01-21T03:57:59.36Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/8b/40/2614036cdd416452f5bf98ec037f38a1afb17f327cb8e6b652d4729e0af8/pyparsing-3.3.1-py3-none-any.whl", hash = "sha256:023b5e7e5520ad96642e2c6db4cb683d3970bd640cdf7115049a6e9c3682df82", size = 121793, upload-time = "2025-12-23T03:14:02.103Z" }, + { url = "https://files.pythonhosted.org/packages/10/bd/c038d7cc38edc1aa5bf91ab8068b63d4308c66c4c8bb3cbba7dfbc049f9c/pyparsing-3.3.2-py3-none-any.whl", hash = "sha256:850ba148bd908d7e2411587e247a1e4f0327839c40e2e5e6d05a007ecc69911d", size = 122781, upload-time = "2026-01-21T03:57:55.912Z" }, ] [[package]] @@ -2983,7 +2986,7 @@ wheels = [ [[package]] name = "pytest" -version = "9.0.2" +version = "9.0.3" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, @@ -2992,9 +2995,9 @@ dependencies = [ { name = "pluggy" }, { name = "pygments" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/d1/db/7ef3487e0fb0049ddb5ce41d3a49c235bf9ad299b6a25d5780a89f19230f/pytest-9.0.2.tar.gz", hash = "sha256:75186651a92bd89611d1d9fc20f0b4345fd827c41ccd5c299a868a05d70edf11", size = 1568901, upload-time = "2025-12-06T21:30:51.014Z" } +sdist = { url = "https://files.pythonhosted.org/packages/7d/0d/549bd94f1a0a402dc8cf64563a117c0f3765662e2e668477624baeec44d5/pytest-9.0.3.tar.gz", hash = "sha256:b86ada508af81d19edeb213c681b1d48246c1a91d304c6c81a427674c17eb91c", size = 1572165, upload-time = "2026-04-07T17:16:18.027Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/3b/ab/b3226f0bd7cdcf710fbede2b3548584366da3b19b5021e74f5bde2a8fa3f/pytest-9.0.2-py3-none-any.whl", hash = "sha256:711ffd45bf766d5264d487b917733b453d917afd2b0ad65223959f59089f875b", size = 374801, upload-time = "2025-12-06T21:30:49.154Z" }, + { url = "https://files.pythonhosted.org/packages/d4/24/a372aaf5c9b7208e7112038812994107bc65a84cd00e0354a88c2c77a617/pytest-9.0.3-py3-none-any.whl", hash = "sha256:2c5efc453d45394fdd706ade797c0a81091eccd1d6e4bccfcd476e2b8e0ab5d9", size = 375249, upload-time = "2026-04-07T17:16:16.13Z" }, ] [[package]] @@ -3035,14 +3038,14 @@ wheels = [ [[package]] name = "pytest-randomly" -version = "4.0.1" +version = "4.1.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pytest" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/c4/1d/258a4bf1109258c00c35043f40433be5c16647387b6e7cd5582d638c116b/pytest_randomly-4.0.1.tar.gz", hash = "sha256:174e57bb12ac2c26f3578188490bd333f0e80620c3f47340158a86eca0593cd8", size = 14130, upload-time = "2025-09-12T15:23:00.085Z" } +sdist = { url = "https://files.pythonhosted.org/packages/27/b3/36192dacc0f470ac2cc516f73e01739c9a48a8224f76beada4f85e1c8a89/pytest_randomly-4.1.0.tar.gz", hash = "sha256:47f1d9746c3bc3efabd53ae1ebfb8bb385cf3d4df4b505b6d58d9c97a3dfe70f", size = 14302, upload-time = "2026-04-20T13:01:51.831Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/33/3e/a4a9227807b56869790aad3e24472a554b585974fe7e551ea350f50897ae/pytest_randomly-4.0.1-py3-none-any.whl", hash = "sha256:e0dfad2fd4f35e07beff1e47c17fbafcf98f9bf4531fd369d9260e2f858bfcb7", size = 8304, upload-time = "2025-09-12T15:22:58.946Z" }, + { url = "https://files.pythonhosted.org/packages/9a/db/2df9a1fca597a273f957a559c20c2d95d629928384507b2afa43ba6909d1/pytest_randomly-4.1.0-py3-none-any.whl", hash = "sha256:f55e89e53367b090c0c053697d7f9d77595543d0e0516c93978b50c0f6b252f9", size = 8353, upload-time = "2026-04-20T13:01:50.382Z" }, ] [[package]] @@ -3071,27 +3074,27 @@ wheels = [ [[package]] name = "python-dotenv" -version = "1.2.1" +version = "1.2.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f0/26/19cadc79a718c5edbec86fd4919a6b6d3f681039a2f6d66d14be94e75fb9/python_dotenv-1.2.1.tar.gz", hash = "sha256:42667e897e16ab0d66954af0e60a9caa94f0fd4ecf3aaf6d2d260eec1aa36ad6", size = 44221, upload-time = "2025-10-26T15:12:10.434Z" } +sdist = { url = "https://files.pythonhosted.org/packages/82/ed/0301aeeac3e5353ef3d94b6ec08bbcabd04a72018415dcb29e588514bba8/python_dotenv-1.2.2.tar.gz", hash = "sha256:2c371a91fbd7ba082c2c1dc1f8bf89ca22564a087c2c287cd9b662adde799cf3", size = 50135, upload-time = "2026-03-01T16:00:26.196Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/14/1b/a298b06749107c305e1fe0f814c6c74aea7b2f1e10989cb30f544a1b3253/python_dotenv-1.2.1-py3-none-any.whl", hash = "sha256:b81ee9561e9ca4004139c6cbba3a238c32b03e4894671e181b671e8cb8425d61", size = 21230, upload-time = "2025-10-26T15:12:09.109Z" }, + { url = "https://files.pythonhosted.org/packages/0b/d7/1959b9648791274998a9c3526f6d0ec8fd2233e4d4acce81bbae76b44b2a/python_dotenv-1.2.2-py3-none-any.whl", hash = "sha256:1d8214789a24de455a8b8bd8ae6fe3c6b69a5e3d64aa8a8e5d68e694bbcb285a", size = 22101, upload-time = "2026-03-01T16:00:25.09Z" }, ] [[package]] name = "python-kadmin-rs" -version = "0.7.0" +version = "0.7.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/c6/18/2773570703e5ab13fc0390797685cb6c09b8002d96438c57a8e887cc3234/python_kadmin_rs-0.7.0.tar.gz", hash = "sha256:e8a539fda1a1006fe5f0868c0e59a36b3b90d451da9c0c2bc3a9bfc7173efbdc", size = 112469, upload-time = "2026-01-15T17:49:10.467Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ab/96/f5ed764f06621d1c06b469ec2a24c2da64a0fdb9f13d1c7005c70fd7804d/python_kadmin_rs-0.7.2.tar.gz", hash = "sha256:1f57ab7b61540c420eb684154e56638d42e4bafe2ac66362c2d667cda7d0ce8c", size = 119177, upload-time = "2026-05-11T13:31:19.071Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/71/05/94e7575a69ea5d3fc23d4df4a8e4d5acb6f6d3633f23b0a8b6b6360da775/python_kadmin_rs-0.7.0-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:d1418825ba6c161d504b7905a99ef475d5ec1fdf15e6f5b72e4641f350fbc261", size = 510261, upload-time = "2026-01-15T17:48:52.002Z" }, - { url = "https://files.pythonhosted.org/packages/d7/16/58671c341caef38a492e327cf3e0b24aba2842419da15566f8e3d42c9382/python_kadmin_rs-0.7.0-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:b247bc5f5a075107088cdcec22c67125aa6706fdcd2e264a99a478f1bedecd7d", size = 527751, upload-time = "2026-01-15T17:48:53.504Z" }, - { url = "https://files.pythonhosted.org/packages/b3/d1/505e34ce204601aae0fcecaf56c66e808803426199948d3a26a6c16a9e5b/python_kadmin_rs-0.7.0-cp314-cp314-manylinux_2_28_aarch64.whl", hash = "sha256:8e6d8ea17a02bb0527219abadac08a63a47f97351f41c79fade77dd11a380795", size = 552634, upload-time = "2026-01-15T17:48:54.96Z" }, - { url = "https://files.pythonhosted.org/packages/0b/51/391a3d8ee99aeb2466efe499e52ef6a7479d7ac426635d92cd050a5fe3f9/python_kadmin_rs-0.7.0-cp314-cp314-manylinux_2_28_x86_64.whl", hash = "sha256:82107ee5ea3dc1a3b716323687febc64ed2fa462ebd986565fba7394add04792", size = 554659, upload-time = "2026-01-15T17:48:56.408Z" }, - { url = "https://files.pythonhosted.org/packages/c2/77/6a2fe8a9bef6e3d94f842492db7216c4d0a47c5a67a8a7265c126ed5be58/python_kadmin_rs-0.7.0-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:ed58ec35dd89a381408fa92f0404d6321f2e6687c58c974f820f113a7052f39f", size = 512638, upload-time = "2026-01-15T17:48:58.519Z" }, - { url = "https://files.pythonhosted.org/packages/ef/e4/ddd909d4b5ff00a3ed277699f3e2204785367a52088dcb41465b8e01f733/python_kadmin_rs-0.7.0-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:6a6b63680e10a450e553a84a15216f61af838d86d623caec1fb1c2977907d1ef", size = 530752, upload-time = "2026-01-15T17:49:00.108Z" }, - { url = "https://files.pythonhosted.org/packages/fd/b2/7d4ea81b768a4ea6be57d9bc70f1841828483a092598b60243a7ad8c798c/python_kadmin_rs-0.7.0-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:e48cdf80bdece9fdcc70d9ef9237821ae9366cf7944742cd412ac2ebd07a40cc", size = 553270, upload-time = "2026-01-15T17:49:01.682Z" }, - { url = "https://files.pythonhosted.org/packages/26/b7/87851916c895f31e67a9fe827dabfe3a2f09cf8ecf090cb4ac513f100157/python_kadmin_rs-0.7.0-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:e63aec5daa1a8469f5b617aa8a5b5a689e2b18241026c7e666ca0f8b5e8688c8", size = 556308, upload-time = "2026-01-15T17:49:03.199Z" }, + { url = "https://files.pythonhosted.org/packages/63/f2/e86b79e1cc8d43c8865f65b5b9c7b06fbfb56e56b812bd279c38faa100cd/python_kadmin_rs-0.7.2-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:2c77b425805669831e2c4eb316304b9f4690ac27a74cb34e2b92dc0979ab0d3c", size = 512988, upload-time = "2026-05-11T13:31:01.655Z" }, + { url = "https://files.pythonhosted.org/packages/17/d6/200dd8ca05bbdf48d77050a0a75c183fca740f2d33e59c8083832514d300/python_kadmin_rs-0.7.2-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:403c04a395f42d87cbfa46d60f9145841a8b5c6d8ac1f2dab0f457e3e3b7049c", size = 527527, upload-time = "2026-05-11T13:31:03.528Z" }, + { url = "https://files.pythonhosted.org/packages/54/03/e9ebb35c7c1441722ced8097c19c1737b1db28c18d9a0c219fe12fe94257/python_kadmin_rs-0.7.2-cp314-cp314-manylinux_2_28_aarch64.whl", hash = "sha256:5f1560747e1a936cc9509c87d45180e351096b3be47c8af81a6f3dd4516ca34b", size = 564813, upload-time = "2026-05-11T13:31:05.464Z" }, + { url = "https://files.pythonhosted.org/packages/f9/d8/c2706859bec76cc629d7665effd6fd540d31b10631d800796269806c86cc/python_kadmin_rs-0.7.2-cp314-cp314-manylinux_2_28_x86_64.whl", hash = "sha256:cb51f980597383c4f4adb308e3e4c0c796e5dba560f68b17e4b3cd269c043ae2", size = 562188, upload-time = "2026-05-11T13:31:06.875Z" }, + { url = "https://files.pythonhosted.org/packages/00/ad/808be9b2b5a52ff0244e323a4d2ec00b66c21c98e49088399a744da15085/python_kadmin_rs-0.7.2-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:08fea0f139d5cfdcda24446355578071b8ac02223bb9433077b895df6655cb9e", size = 511783, upload-time = "2026-05-11T13:31:08.291Z" }, + { url = "https://files.pythonhosted.org/packages/0c/9a/73ab8930b37eafa3a41341c245df6066d38a5b8076cae4f39d7f59eab7bb/python_kadmin_rs-0.7.2-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:ff124a363e6c8707d738191969e22c08d2cef73b3d6fc0ce86f1dcd81715e170", size = 526356, upload-time = "2026-05-11T13:31:10.137Z" }, + { url = "https://files.pythonhosted.org/packages/b8/26/acddc2766900537b94e923ecd12c9f4d5ee6a0f551ffe7998826055c8193/python_kadmin_rs-0.7.2-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:5124b7f27b67d034c6c13ebfbb65c036e197e30bc47c457853489e08d535cb3c", size = 561923, upload-time = "2026-05-11T13:31:11.843Z" }, + { url = "https://files.pythonhosted.org/packages/d8/4e/42b317789b5e204995431762b7dcede1544581ee5caacebac36d8991f478/python_kadmin_rs-0.7.2-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:0741de2fd55338b356a424899c2cc400314dd57ae2031ed879a2765edfc2f0a1", size = 562006, upload-time = "2026-05-11T13:31:13.206Z" }, ] [[package]] @@ -3173,7 +3176,7 @@ wheels = [ [[package]] name = "requests" -version = "2.32.5" +version = "2.33.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "certifi" }, @@ -3181,9 +3184,9 @@ dependencies = [ { name = "idna" }, { name = "urllib3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/c9/74/b3ff8e6c8446842c3f5c837e9c3dfcfe2018ea6ecef224c710c85ef728f4/requests-2.32.5.tar.gz", hash = "sha256:dbba0bac56e100853db0ea71b82b4dfd5fe2bf6d3754a8893c3af500cec7d7cf", size = 134517, upload-time = "2025-08-18T20:46:02.573Z" } +sdist = { url = "https://files.pythonhosted.org/packages/5f/a4/98b9c7c6428a668bf7e42ebb7c79d576a1c3c1e3ae2d47e674b468388871/requests-2.33.1.tar.gz", hash = "sha256:18817f8c57c6263968bc123d237e3b8b08ac046f5456bd1e307ee8f4250d3517", size = 134120, upload-time = "2026-03-30T16:09:15.531Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/1e/db/4254e3eabe8020b458f1a747140d32277ec7a271daf1d235b70dc0b4e6e3/requests-2.32.5-py3-none-any.whl", hash = "sha256:2462f94637a34fd532264295e186976db0f5d453d1cdd31473c85a6a161affb6", size = 64738, upload-time = "2025-08-18T20:46:00.542Z" }, + { url = "https://files.pythonhosted.org/packages/d7/8e/7540e8a2036f79a125c1d2ebadf69ed7901608859186c856fa0388ef4197/requests-2.33.1-py3-none-any.whl", hash = "sha256:4e6d1ef462f3626a1f0a0a9c42dd93c63bad33f9f1c1937509b8c5c8718ab56a", size = 64947, upload-time = "2026-03-30T16:09:13.83Z" }, ] [[package]] @@ -3213,15 +3216,15 @@ wheels = [ [[package]] name = "rich" -version = "14.2.0" +version = "15.0.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "markdown-it-py" }, { name = "pygments" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/fb/d2/8920e102050a0de7bfabeb4c4614a49248cf8d5d7a8d01885fbb24dc767a/rich-14.2.0.tar.gz", hash = "sha256:73ff50c7c0c1c77c8243079283f4edb376f0f6442433aecb8ce7e6d0b92d1fe4", size = 219990, upload-time = "2025-10-09T14:16:53.064Z" } +sdist = { url = "https://files.pythonhosted.org/packages/c0/8f/0722ca900cc807c13a6a0c696dacf35430f72e0ec571c4275d2371fca3e9/rich-15.0.0.tar.gz", hash = "sha256:edd07a4824c6b40189fb7ac9bc4c52536e9780fbbfbddf6f1e2502c31b068c36", size = 230680, upload-time = "2026-04-12T08:24:00.75Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/25/7a/b0178788f8dc6cafce37a212c99565fa1fe7872c70c6c9c1e1a372d9d88f/rich-14.2.0-py3-none-any.whl", hash = "sha256:76bc51fe2e57d2b1be1f96c524b890b816e334ab4c1e45888799bfaab0021edd", size = 243393, upload-time = "2025-10-09T14:16:51.245Z" }, + { url = "https://files.pythonhosted.org/packages/82/3b/64d4899d73f91ba49a8c18a8ff3f0ea8f1c1d75481760df8c68ef5235bf5/rich-15.0.0-py3-none-any.whl", hash = "sha256:33bd4ef74232fb73fe9279a257718407f169c09b78a87ad3d296f548e27de0bb", size = 310654, upload-time = "2026-04-12T08:24:02.83Z" }, ] [[package]] @@ -3261,53 +3264,41 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/d0/02/fa464cdfbe6b26e0600b62c528b72d8608f5cc49f96b8d6e38c95d60c676/rpds_py-0.30.0-cp314-cp314t-win_amd64.whl", hash = "sha256:27f4b0e92de5bfbc6f86e43959e6edd1425c33b5e69aab0984a72047f2bcf1e3", size = 226532, upload-time = "2025-11-30T20:24:14.634Z" }, ] -[[package]] -name = "rsa" -version = "4.9.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyasn1" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/da/8a/22b7beea3ee0d44b1916c0c1cb0ee3af23b700b6da9f04991899d0c555d4/rsa-4.9.1.tar.gz", hash = "sha256:e7bdbfdb5497da4c07dfd35530e1a902659db6ff241e39d9953cad06ebd0ae75", size = 29034, upload-time = "2025-04-16T09:51:18.218Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/64/8d/0133e4eb4beed9e425d9a98ed6e081a55d195481b7632472be1af08d2f6b/rsa-4.9.1-py3-none-any.whl", hash = "sha256:68635866661c6836b8d39430f97a996acbd61bfa49406748ea243539fe239762", size = 34696, upload-time = "2025-04-16T09:51:17.142Z" }, -] - [[package]] name = "ruff" -version = "0.15.7" +version = "0.15.12" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a1/22/9e4f66ee588588dc6c9af6a994e12d26e19efbe874d1a909d09a6dac7a59/ruff-0.15.7.tar.gz", hash = "sha256:04f1ae61fc20fe0b148617c324d9d009b5f63412c0b16474f3d5f1a1a665f7ac", size = 4601277, upload-time = "2026-03-19T16:26:22.605Z" } +sdist = { url = "https://files.pythonhosted.org/packages/99/43/3291f1cc9106f4c63bdce7a8d0df5047fe8422a75b091c16b5e9355e0b11/ruff-0.15.12.tar.gz", hash = "sha256:ecea26adb26b4232c0c2ca19ccbc0083a68344180bba2a600605538ce51a40a6", size = 4643852, upload-time = "2026-04-24T18:17:14.305Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/41/2f/0b08ced94412af091807b6119ca03755d651d3d93a242682bf020189db94/ruff-0.15.7-py3-none-linux_armv6l.whl", hash = "sha256:a81cc5b6910fb7dfc7c32d20652e50fa05963f6e13ead3c5915c41ac5d16668e", size = 10489037, upload-time = "2026-03-19T16:26:32.47Z" }, - { url = "https://files.pythonhosted.org/packages/91/4a/82e0fa632e5c8b1eba5ee86ecd929e8ff327bbdbfb3c6ac5d81631bef605/ruff-0.15.7-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:722d165bd52403f3bdabc0ce9e41fc47070ac56d7a91b4e0d097b516a53a3477", size = 10955433, upload-time = "2026-03-19T16:27:00.205Z" }, - { url = "https://files.pythonhosted.org/packages/ab/10/12586735d0ff42526ad78c049bf51d7428618c8b5c467e72508c694119df/ruff-0.15.7-py3-none-macosx_11_0_arm64.whl", hash = "sha256:7fbc2448094262552146cbe1b9643a92f66559d3761f1ad0656d4991491af49e", size = 10269302, upload-time = "2026-03-19T16:26:26.183Z" }, - { url = "https://files.pythonhosted.org/packages/eb/5d/32b5c44ccf149a26623671df49cbfbd0a0ae511ff3df9d9d2426966a8d57/ruff-0.15.7-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b39329b60eba44156d138275323cc726bbfbddcec3063da57caa8a8b1d50adf", size = 10607625, upload-time = "2026-03-19T16:27:03.263Z" }, - { url = "https://files.pythonhosted.org/packages/5d/f1/f0001cabe86173aaacb6eb9bb734aa0605f9a6aa6fa7d43cb49cbc4af9c9/ruff-0.15.7-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:87768c151808505f2bfc93ae44e5f9e7c8518943e5074f76ac21558ef5627c85", size = 10324743, upload-time = "2026-03-19T16:27:09.791Z" }, - { url = "https://files.pythonhosted.org/packages/7a/87/b8a8f3d56b8d848008559e7c9d8bf367934d5367f6d932ba779456e2f73b/ruff-0.15.7-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fb0511670002c6c529ec66c0e30641c976c8963de26a113f3a30456b702468b0", size = 11138536, upload-time = "2026-03-19T16:27:06.101Z" }, - { url = "https://files.pythonhosted.org/packages/e4/f2/4fd0d05aab0c5934b2e1464784f85ba2eab9d54bffc53fb5430d1ed8b829/ruff-0.15.7-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e0d19644f801849229db8345180a71bee5407b429dd217f853ec515e968a6912", size = 11994292, upload-time = "2026-03-19T16:26:48.718Z" }, - { url = "https://files.pythonhosted.org/packages/64/22/fc4483871e767e5e95d1622ad83dad5ebb830f762ed0420fde7dfa9d9b08/ruff-0.15.7-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4806d8e09ef5e84eb19ba833d0442f7e300b23fe3f0981cae159a248a10f0036", size = 11398981, upload-time = "2026-03-19T16:26:54.513Z" }, - { url = "https://files.pythonhosted.org/packages/b0/99/66f0343176d5eab02c3f7fcd2de7a8e0dd7a41f0d982bee56cd1c24db62b/ruff-0.15.7-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dce0896488562f09a27b9c91b1f58a097457143931f3c4d519690dea54e624c5", size = 11242422, upload-time = "2026-03-19T16:26:29.277Z" }, - { url = "https://files.pythonhosted.org/packages/5d/3a/a7060f145bfdcce4c987ea27788b30c60e2c81d6e9a65157ca8afe646328/ruff-0.15.7-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:1852ce241d2bc89e5dc823e03cff4ce73d816b5c6cdadd27dbfe7b03217d2a12", size = 11232158, upload-time = "2026-03-19T16:26:42.321Z" }, - { url = "https://files.pythonhosted.org/packages/a7/53/90fbb9e08b29c048c403558d3cdd0adf2668b02ce9d50602452e187cd4af/ruff-0.15.7-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:5f3e4b221fb4bd293f79912fc5e93a9063ebd6d0dcbd528f91b89172a9b8436c", size = 10577861, upload-time = "2026-03-19T16:26:57.459Z" }, - { url = "https://files.pythonhosted.org/packages/2f/aa/5f486226538fe4d0f0439e2da1716e1acf895e2a232b26f2459c55f8ddad/ruff-0.15.7-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:b15e48602c9c1d9bdc504b472e90b90c97dc7d46c7028011ae67f3861ceba7b4", size = 10327310, upload-time = "2026-03-19T16:26:35.909Z" }, - { url = "https://files.pythonhosted.org/packages/99/9e/271afdffb81fe7bfc8c43ba079e9d96238f674380099457a74ccb3863857/ruff-0.15.7-py3-none-musllinux_1_2_i686.whl", hash = "sha256:1b4705e0e85cedc74b0a23cf6a179dbb3df184cb227761979cc76c0440b5ab0d", size = 10840752, upload-time = "2026-03-19T16:26:45.723Z" }, - { url = "https://files.pythonhosted.org/packages/bf/29/a4ae78394f76c7759953c47884eb44de271b03a66634148d9f7d11e721bd/ruff-0.15.7-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:112c1fa316a558bb34319282c1200a8bf0495f1b735aeb78bfcb2991e6087580", size = 11336961, upload-time = "2026-03-19T16:26:39.076Z" }, - { url = "https://files.pythonhosted.org/packages/26/6b/8786ba5736562220d588a2f6653e6c17e90c59ced34a2d7b512ef8956103/ruff-0.15.7-py3-none-win32.whl", hash = "sha256:6d39e2d3505b082323352f733599f28169d12e891f7dd407f2d4f54b4c2886de", size = 10582538, upload-time = "2026-03-19T16:26:15.992Z" }, - { url = "https://files.pythonhosted.org/packages/2b/e9/346d4d3fffc6871125e877dae8d9a1966b254fbd92a50f8561078b88b099/ruff-0.15.7-py3-none-win_amd64.whl", hash = "sha256:4d53d712ddebcd7dace1bc395367aec12c057aacfe9adbb6d832302575f4d3a1", size = 11755839, upload-time = "2026-03-19T16:26:19.897Z" }, - { url = "https://files.pythonhosted.org/packages/8f/e8/726643a3ea68c727da31570bde48c7a10f1aa60eddd628d94078fec586ff/ruff-0.15.7-py3-none-win_arm64.whl", hash = "sha256:18e8d73f1c3fdf27931497972250340f92e8c861722161a9caeb89a58ead6ed2", size = 11023304, upload-time = "2026-03-19T16:26:51.669Z" }, + { url = "https://files.pythonhosted.org/packages/c3/6e/e78ffb61d4686f3d96ba3df2c801161843746dcbcbb17a1e927d4829312b/ruff-0.15.12-py3-none-linux_armv6l.whl", hash = "sha256:f86f176e188e94d6bdbc09f09bfd9dc729059ad93d0e7390b5a73efe19f8861c", size = 10640713, upload-time = "2026-04-24T18:17:22.841Z" }, + { url = "https://files.pythonhosted.org/packages/ae/08/a317bc231fb9e7b93e4ef3089501e51922ff88d6936ce5cf870c4fe55419/ruff-0.15.12-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:e3bcd123364c3770b8e1b7baaf343cc99a35f197c5c6e8af79015c666c423a6c", size = 11069267, upload-time = "2026-04-24T18:17:30.105Z" }, + { url = "https://files.pythonhosted.org/packages/aa/a4/f828e9718d3dce1f5f11c39c4f65afd32783c8b2aebb2e3d259e492c47bd/ruff-0.15.12-py3-none-macosx_11_0_arm64.whl", hash = "sha256:fe87510d000220aa1ed530d4448a7c696a0cae1213e5ec30e5874287b66557b5", size = 10397182, upload-time = "2026-04-24T18:17:07.177Z" }, + { url = "https://files.pythonhosted.org/packages/71/e0/3310fc6d1b5e1fdea22bf3b1b807c7e187b581021b0d7d4514cccdb5fb71/ruff-0.15.12-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:84a1630093121375a3e2a95b4a6dc7b59e2b4ee76216e32d81aae550a832d002", size = 10758012, upload-time = "2026-04-24T18:16:55.759Z" }, + { url = "https://files.pythonhosted.org/packages/11/c1/a606911aee04c324ddaa883ae418f3569792fd3c4a10c50e0dd0a2311e1e/ruff-0.15.12-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fb129f40f114f089ebe0ca56c0d251cf2061b17651d464bb6478dc01e69f11f5", size = 10447479, upload-time = "2026-04-24T18:16:51.677Z" }, + { url = "https://files.pythonhosted.org/packages/9d/68/4201e8444f0894f21ab4aeeaee68aa4f10b51613514a20d80bd628d57e88/ruff-0.15.12-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b0c862b172d695db7598426b8af465e7e9ac00a3ea2a3630ee67eb82e366aaa6", size = 11234040, upload-time = "2026-04-24T18:17:16.529Z" }, + { url = "https://files.pythonhosted.org/packages/34/ff/8a6d6cf4ccc23fd67060874e832c18919d1557a0611ebef03fdb01fff11e/ruff-0.15.12-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2849ea9f3484c3aca43a82f484210370319e7170df4dfe4843395ddf6c57bc33", size = 12087377, upload-time = "2026-04-24T18:17:04.944Z" }, + { url = "https://files.pythonhosted.org/packages/85/f6/c669cf73f5152f623d34e69866a46d5e6185816b19fcd5b6dd8a2d299922/ruff-0.15.12-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9e77c7e51c07fe396826d5969a5b846d9cd4c402535835fb6e21ce8b28fef847", size = 11367784, upload-time = "2026-04-24T18:17:25.409Z" }, + { url = "https://files.pythonhosted.org/packages/e8/39/c61d193b8a1daaa8977f7dea9e8d8ba866e02ea7b65d32f6861693aa4c12/ruff-0.15.12-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:83b2f4f2f3b1026b5fb449b467d9264bf22067b600f7b6f41fc5958909f449d0", size = 11344088, upload-time = "2026-04-24T18:17:12.258Z" }, + { url = "https://files.pythonhosted.org/packages/c2/8d/49afab3645e31e12c590acb6d3b5b69d7aab5b81926dbaf7461f9441f37a/ruff-0.15.12-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:9ba3b8f1afd7e2e43d8943e55f249e13f9682fde09711644a6e7290eb4f3e339", size = 11271770, upload-time = "2026-04-24T18:17:02.457Z" }, + { url = "https://files.pythonhosted.org/packages/46/06/33f41fe94403e2b755481cdfb9b7ef3e4e0ed031c4581124658d935d52b4/ruff-0.15.12-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:e852ba9fdc890655e1d78f2df1499efbe0e54126bd405362154a75e2bde159c5", size = 10719355, upload-time = "2026-04-24T18:17:27.648Z" }, + { url = "https://files.pythonhosted.org/packages/0d/59/18aa4e014debbf559670e4048e39260a85c7fcee84acfd761ac01e7b8d35/ruff-0.15.12-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:dd8aed930da53780d22fc70bdf84452c843cf64f8cb4eb38984319c24c5cd5fd", size = 10462758, upload-time = "2026-04-24T18:17:32.347Z" }, + { url = "https://files.pythonhosted.org/packages/25/e7/cc9f16fd0f3b5fddcbd7ec3d6ae30c8f3fde1047f32a4093a98d633c6570/ruff-0.15.12-py3-none-musllinux_1_2_i686.whl", hash = "sha256:01da3988d225628b709493d7dc67c3b9b12c0210016b08690ef9bd27970b262b", size = 10953498, upload-time = "2026-04-24T18:17:20.674Z" }, + { url = "https://files.pythonhosted.org/packages/72/7a/a9ba7f98c7a575978698f4230c5e8cc54bbc761af34f560818f933dafa0c/ruff-0.15.12-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:9cae0f92bd5700d1213188b31cd3bdd2b315361296d10b96b8e2337d3d11f53e", size = 11447765, upload-time = "2026-04-24T18:17:09.755Z" }, + { url = "https://files.pythonhosted.org/packages/ea/f9/0ae446942c846b8266059ad8a30702a35afae55f5cdc54c5adf8d7afdc27/ruff-0.15.12-py3-none-win32.whl", hash = "sha256:d0185894e038d7043ba8fd6aee7499ece6462dc0ea9f1e260c7451807c714c20", size = 10657277, upload-time = "2026-04-24T18:17:18.591Z" }, + { url = "https://files.pythonhosted.org/packages/33/f1/9614e03e1cdcbf9437570b5400ced8a720b5db22b28d8e0f1bda429f660d/ruff-0.15.12-py3-none-win_amd64.whl", hash = "sha256:c87a162d61ab3adca47c03f7f717c68672edec7d1b5499e652331780fe74950d", size = 11837758, upload-time = "2026-04-24T18:17:00.113Z" }, + { url = "https://files.pythonhosted.org/packages/c0/98/6beb4b351e472e5f4c4613f7c35a5290b8be2497e183825310c4c3a3984b/ruff-0.15.12-py3-none-win_arm64.whl", hash = "sha256:a538f7a82d061cee7be55542aca1d86d1393d55d81d4fcc314370f4340930d4f", size = 11120821, upload-time = "2026-04-24T18:16:57.979Z" }, ] [[package]] name = "s3transfer" -version = "0.16.0" +version = "0.16.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "botocore" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/05/04/74127fc843314818edfa81b5540e26dd537353b123a4edc563109d8f17dd/s3transfer-0.16.0.tar.gz", hash = "sha256:8e990f13268025792229cd52fa10cb7163744bf56e719e0b9cb925ab79abf920", size = 153827, upload-time = "2025-12-01T02:30:59.114Z" } +sdist = { url = "https://files.pythonhosted.org/packages/46/29/af14f4ef3c11a50435308660e2cc68761c9a7742475e0585cd4396b91777/s3transfer-0.16.1.tar.gz", hash = "sha256:8e424355754b9ccb32467bdc568edf55be82692ef2002d934b1311dbb3b9e524", size = 154801, upload-time = "2026-04-22T20:36:06.475Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/fc/51/727abb13f44c1fcf6d145979e1535a35794db0f6e450a0cb46aa24732fe2/s3transfer-0.16.0-py3-none-any.whl", hash = "sha256:18e25d66fed509e3868dc1572b3f427ff947dd2c56f844a5bf09481ad3f3b2fe", size = 86830, upload-time = "2025-12-01T02:30:57.729Z" }, + { url = "https://files.pythonhosted.org/packages/03/19/90d7d4ed51932c022d53f1d02d564b62d10e272692a1f9b76425c1ad2a02/s3transfer-0.16.1-py3-none-any.whl", hash = "sha256:61bcd00ccb83b21a0fe7e91a553fff9729d46c83b4e0106e7c314a733891f7c2", size = 86825, upload-time = "2026-04-22T20:36:04.992Z" }, ] [[package]] @@ -3324,7 +3315,7 @@ wheels = [ [[package]] name = "selenium" -version = "4.41.0" +version = "4.43.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "certifi" }, @@ -3334,22 +3325,22 @@ dependencies = [ { name = "urllib3", extra = ["socks"] }, { name = "websocket-client" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/04/7c/133d00d6d013a17d3f39199f27f1a780ec2e95d7b9aa997dc1b8ac2e62a7/selenium-4.41.0.tar.gz", hash = "sha256:003e971f805231ad63e671783a2b91a299355d10cefb9de964c36ff3819115aa", size = 937872, upload-time = "2026-02-20T03:42:06.216Z" } +sdist = { url = "https://files.pythonhosted.org/packages/09/6a/fe950b498a3c570ab538ad1c2b60f18863eecf077a865eea4459f3fa78a9/selenium-4.43.0.tar.gz", hash = "sha256:bada5c08a989f812728a4b5bea884d8e91894e939a441cc3a025201ce718581e", size = 967747, upload-time = "2026-04-10T06:47:03.149Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a8/d6/e4160989ef6b272779af6f3e5c43c3ba9be6687bdc21c68c3fb220e555b3/selenium-4.41.0-py3-none-any.whl", hash = "sha256:b8ccde8d2e7642221ca64af184a92c19eee6accf2e27f20f30472f5efae18eb1", size = 9532858, upload-time = "2026-02-20T03:42:03.218Z" }, + { url = "https://files.pythonhosted.org/packages/82/c7/0c55fbb0275fc368676ea50514ce7d7839d799a8b3ff8425f380186c7626/selenium-4.43.0-py3-none-any.whl", hash = "sha256:4f97639055dcfa9eadf8ccf549ba7b0e49c655d4e2bde19b9a44e916b754e769", size = 9573091, upload-time = "2026-04-10T06:47:01.134Z" }, ] [[package]] name = "sentry-sdk" -version = "2.55.0" +version = "2.59.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "certifi" }, { name = "urllib3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/e9/b8/285293dc60fc198fffc3fcdbc7c6d4e646e0f74e61461c355d40faa64ceb/sentry_sdk-2.55.0.tar.gz", hash = "sha256:3774c4d8820720ca4101548131b9c162f4c9426eb7f4d24aca453012a7470f69", size = 424505, upload-time = "2026-03-17T14:15:51.707Z" } +sdist = { url = "https://files.pythonhosted.org/packages/65/e0/9bf5e5fc7442b10880f3ec0eff0ef4208b84a099606f343ec4f5445227fb/sentry_sdk-2.59.0.tar.gz", hash = "sha256:cd265808ef8bf3f3edf69b527c0a0b2b6b1322762679e55b8987db2e9584aec1", size = 447331, upload-time = "2026-05-04T12:19:06.538Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/9a/66/20465097782d7e1e742d846407ea7262d338c6e876ddddad38ca8907b38f/sentry_sdk-2.55.0-py2.py3-none-any.whl", hash = "sha256:97026981cb15699394474a196b88503a393cbc58d182ece0d3abe12b9bd978d4", size = 449284, upload-time = "2026-03-17T14:15:49.604Z" }, + { url = "https://files.pythonhosted.org/packages/bf/00/b8cc413748fb6383d1582e7cda51314f99743351c462a92dc690d5b5853b/sentry_sdk-2.59.0-py2.py3-none-any.whl", hash = "sha256:abcf65ee9a9d9cdebf9ad369782408ecca9c1c792686ef06ba34f5ab233527fe", size = 468432, upload-time = "2026-05-04T12:19:04.741Z" }, ] [[package]] @@ -3397,11 +3388,11 @@ wheels = [ [[package]] name = "setuptools" -version = "80.9.0" +version = "82.0.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/18/5d/3bf57dcd21979b887f014ea83c24ae194cfcd12b9e0fda66b957c69d1fca/setuptools-80.9.0.tar.gz", hash = "sha256:f36b47402ecde768dbfafc46e8e4207b4360c654f1f3bb84475f0a28628fb19c", size = 1319958, upload-time = "2025-05-27T00:56:51.443Z" } +sdist = { url = "https://files.pythonhosted.org/packages/4f/db/cfac1baf10650ab4d1c111714410d2fbb77ac5a616db26775db562c8fab2/setuptools-82.0.1.tar.gz", hash = "sha256:7d872682c5d01cfde07da7bccc7b65469d3dca203318515ada1de5eda35efbf9", size = 1152316, upload-time = "2026-03-09T12:47:17.221Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a3/dc/17031897dae0efacfea57dfd3a82fdd2a2aeb58e0ff71b77b87e44edc772/setuptools-80.9.0-py3-none-any.whl", hash = "sha256:062d34222ad13e0cc312a4c02d73f059e86a4acbfbdea8f8f76b28c99f306922", size = 1201486, upload-time = "2025-05-27T00:56:49.664Z" }, + { url = "https://files.pythonhosted.org/packages/9d/76/f789f7a86709c6b087c5a2f52f911838cad707cc613162401badc665acfe/setuptools-82.0.1-py3-none-any.whl", hash = "sha256:a59e362652f08dcd477c78bb6e7bd9d80a7995bc73ce773050228a348ce2e5bb", size = 1006223, upload-time = "2026-03-09T12:47:15.026Z" }, ] [[package]] @@ -3460,11 +3451,11 @@ wheels = [ [[package]] name = "stevedore" -version = "5.6.0" +version = "5.7.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/96/5b/496f8abebd10c3301129abba7ddafd46c71d799a70c44ab080323987c4c9/stevedore-5.6.0.tar.gz", hash = "sha256:f22d15c6ead40c5bbfa9ca54aa7e7b4a07d59b36ae03ed12ced1a54cf0b51945", size = 516074, upload-time = "2025-11-20T10:06:07.264Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/6d/90764092216fa560f6587f83bb70113a8ba510ba436c6476a2b47359057c/stevedore-5.7.0.tar.gz", hash = "sha256:31dd6fe6b3cbe921e21dcefabc9a5f1cf848cf538a1f27543721b8ca09948aa3", size = 516200, upload-time = "2026-02-20T13:27:06.765Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f4/40/8561ce06dc46fd17242c7724ab25b257a2ac1b35f4ebf551b40ce6105cfa/stevedore-5.6.0-py3-none-any.whl", hash = "sha256:4a36dccefd7aeea0c70135526cecb7766c4c84c473b1af68db23d541b6dc1820", size = 54428, upload-time = "2025-11-20T10:06:05.946Z" }, + { url = "https://files.pythonhosted.org/packages/69/06/36d260a695f383345ab5bbc3fd447249594ae2fa8dfd19c533d5ae23f46b/stevedore-5.7.0-py3-none-any.whl", hash = "sha256:fd25efbb32f1abb4c9e502f385f0018632baac11f9ee5d1b70f88cc5e22ad4ed", size = 54483, upload-time = "2026-02-20T13:27:05.561Z" }, ] [[package]] @@ -3493,16 +3484,16 @@ wheels = [ [[package]] name = "tenacity" -version = "9.1.2" +version = "9.1.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0a/d4/2b0cd0fe285e14b36db076e78c93766ff1d529d70408bd1d2a5a84f1d929/tenacity-9.1.2.tar.gz", hash = "sha256:1169d376c297e7de388d18b4481760d478b0e99a777cad3a9c86e556f4b697cb", size = 48036, upload-time = "2025-04-02T08:25:09.966Z" } +sdist = { url = "https://files.pythonhosted.org/packages/47/c6/ee486fd809e357697ee8a44d3d69222b344920433d3b6666ccd9b374630c/tenacity-9.1.4.tar.gz", hash = "sha256:adb31d4c263f2bd041081ab33b498309a57c77f9acf2db65aadf0898179cf93a", size = 49413, upload-time = "2026-02-07T10:45:33.841Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e5/30/643397144bfbfec6f6ef821f36f33e57d35946c44a2352d3c9f0ae847619/tenacity-9.1.2-py3-none-any.whl", hash = "sha256:f77bf36710d8b73a50b2dd155c97b870017ad21afe6ab300326b0371b3b05138", size = 28248, upload-time = "2025-04-02T08:25:07.678Z" }, + { url = "https://files.pythonhosted.org/packages/d7/c1/eb8f9debc45d3b7918a32ab756658a0904732f75e555402972246b0b8e71/tenacity-9.1.4-py3-none-any.whl", hash = "sha256:6095a360c919085f28c6527de529e76a06ad89b23659fa881ae0649b867a9d55", size = 28926, upload-time = "2026-02-07T10:45:32.24Z" }, ] [[package]] name = "trio" -version = "0.32.0" +version = "0.33.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "attrs" }, @@ -3512,9 +3503,9 @@ dependencies = [ { name = "sniffio" }, { name = "sortedcontainers" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/d8/ce/0041ddd9160aac0031bcf5ab786c7640d795c797e67c438e15cfedf815c8/trio-0.32.0.tar.gz", hash = "sha256:150f29ec923bcd51231e1d4c71c7006e65247d68759dd1c19af4ea815a25806b", size = 605323, upload-time = "2025-10-31T07:18:17.466Z" } +sdist = { url = "https://files.pythonhosted.org/packages/52/b6/c744031c6f89b18b3f5f4f7338603ab381d740a7f45938c4607b2302481f/trio-0.33.0.tar.gz", hash = "sha256:a29b92b73f09d4b48ed249acd91073281a7f1063f09caba5dc70465b5c7aa970", size = 605109, upload-time = "2026-02-14T18:40:55.386Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/41/bf/945d527ff706233636c73880b22c7c953f3faeb9d6c7e2e85bfbfd0134a0/trio-0.32.0-py3-none-any.whl", hash = "sha256:4ab65984ef8370b79a76659ec87aa3a30c5c7c83ff250b4de88c29a8ab6123c5", size = 512030, upload-time = "2025-10-31T07:18:15.885Z" }, + { url = "https://files.pythonhosted.org/packages/1c/93/dab25dc87ac48da0fe0f6419e07d0bfd98799bed4e05e7b9e0f85a1a4b4b/trio-0.33.0-py3-none-any.whl", hash = "sha256:3bd5d87f781d9b0192d592aef28691f8951d6c2e41b7e1da4c25cde6c180ae9b", size = 510294, upload-time = "2026-02-14T18:40:53.313Z" }, ] [[package]] @@ -3533,7 +3524,7 @@ wheels = [ [[package]] name = "twilio" -version = "9.10.3" +version = "9.10.9" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "aiohttp" }, @@ -3541,9 +3532,9 @@ dependencies = [ { name = "pyjwt" }, { name = "requests" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/14/b3/471b479b855c0126bc5352da6335281441233364047bad030718547283bd/twilio-9.10.3.tar.gz", hash = "sha256:205df912bb56b4b905c89f1abf6684c6ebe0c2618dec6bfd49b247ba80f4f25d", size = 1619755, upload-time = "2026-03-10T08:53:56.086Z" } +sdist = { url = "https://files.pythonhosted.org/packages/30/af/275130be4783c6e2b2122d3b278b63da0007611d1dc073d6414adcc6be03/twilio-9.10.9.tar.gz", hash = "sha256:eb74fc026c85a89372836414f57e262119efaa160b9419cf4d05b59056b8e89d", size = 1762839, upload-time = "2026-05-07T17:34:38.162Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/79/31/22e1026670520ab66b746691cb491b9f4205c8603ee8b86795ff0c35e193/twilio-9.10.3-py2.py3-none-any.whl", hash = "sha256:b17a001dc0a57ef0c52d1e7ffa5e353f9b26e761fa151d11347aec530231345f", size = 2257700, upload-time = "2026-03-10T08:53:54.174Z" }, + { url = "https://files.pythonhosted.org/packages/ed/6b/df08b499d01ba6b9f7f42f9dd51b82aab1eb26c93602f3b89179a520494f/twilio-9.10.9-py2.py3-none-any.whl", hash = "sha256:1c50bfb394b5dbc044bacab24b2e3b550bee0c08da51c4a1fa4816293303e66c", size = 2452983, upload-time = "2026-05-07T17:34:36.459Z" }, ] [[package]] @@ -3591,104 +3582,104 @@ wheels = [ [[package]] name = "types-channels" -version = "4.3.0.20250822" +version = "4.3.0.20260421" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "asgiref" }, { name = "django-stubs" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/22/3d/e0a164b7eaab18ab2302b7a3d90843824b729d9fe1d7bdbb3769dfc9d77b/types_channels-4.3.0.20250822.tar.gz", hash = "sha256:29a4928fdaed6d444b93b69d44fcdb5a8fe32fa72d6a41016c5d39fa7bd7f474", size = 15357, upload-time = "2025-08-22T03:04:26.444Z" } +sdist = { url = "https://files.pythonhosted.org/packages/57/fd/60fdecc601e869c032bdaa23b0b327619d652a428cc2ccb6c9b88ef77ae4/types_channels-4.3.0.20260421.tar.gz", hash = "sha256:c6d6c4c4ee5f7f0364156722f2493f29ef1f1037baa434a506c4f611bc8da7db", size = 15453, upload-time = "2026-04-21T04:38:59.745Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/cb/52/4e3094e43d460feacb9051ec4c3498f8272f69d92b772647211478b25079/types_channels-4.3.0.20250822-py3-none-any.whl", hash = "sha256:d3fc0a1467c8cc901686826408c8a673822e07aa79cbe1a6d21946e7e55d9ddf", size = 21125, upload-time = "2025-08-22T03:04:25.539Z" }, + { url = "https://files.pythonhosted.org/packages/75/7f/3f531b97832903d6c7014b3e43a0b85ba4f142c5a91a3289ac29c084ff9f/types_channels-4.3.0.20260421-py3-none-any.whl", hash = "sha256:48e1bd82369378bad17a63d3bfc5df6f10c9d4083e612a7292fed5524324890f", size = 21130, upload-time = "2026-04-21T04:38:58.639Z" }, ] [[package]] name = "types-docker" -version = "7.1.0.20260109" +version = "7.1.0.20260409" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "types-paramiko" }, { name = "types-requests" }, { name = "urllib3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/54/08/ffef2a8e29e9e22c724f9c1b22563c0938c3ab3fa728ff5b966465e12b93/types_docker-7.1.0.20260109.tar.gz", hash = "sha256:b36ef355ec9ba8bf29bcc4e32cc61dd9138ce4d8352c599c8fbc65f1a3e87b57", size = 32551, upload-time = "2026-01-09T03:21:49.238Z" } +sdist = { url = "https://files.pythonhosted.org/packages/4f/86/5abab4ff44314668c8a863cb0e492e88c14124ce405ed9967bdffc26b7d7/types_docker-7.1.0.20260409.tar.gz", hash = "sha256:3dfed52b1534841a4d422d73f1909cbbc28425c02cfd9ec7948e7ea774d08991", size = 33709, upload-time = "2026-04-09T04:22:46.512Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/8f/0d/cdf37dcd0cd4c942a1634daf3ae3a99833791c7a316bff4d4ce04a30652e/types_docker-7.1.0.20260109-py3-none-any.whl", hash = "sha256:001a5a377d3fb287b7279cf4265b8ba3857e7d4203a16ab03e6e512f68f2f3d4", size = 47216, upload-time = "2026-01-09T03:21:48.059Z" }, + { url = "https://files.pythonhosted.org/packages/ba/97/cca7305de4d151452738a47d26fef88ce4acbd33ef36d0220e21b1cdf324/types_docker-7.1.0.20260409-py3-none-any.whl", hash = "sha256:83754caf2487e48ff18ff3b99bbd9e9c50565dce56374f61208388d6c95fbbeb", size = 48229, upload-time = "2026-04-09T04:22:45.189Z" }, ] [[package]] name = "types-jwcrypto" -version = "1.5.0.20251102" +version = "1.5.7.20260409" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cryptography" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/08/a7/103a4b02c6fb8718994252d5840b11d770f090d4100aa460194cc009bc62/types_jwcrypto-1.5.0.20251102.tar.gz", hash = "sha256:c3b93a85d130a1c16999d2a3c435e5bd6a9b394754239190c5fe49cedcc0a98f", size = 11637, upload-time = "2025-11-02T03:07:38.388Z" } +sdist = { url = "https://files.pythonhosted.org/packages/5c/33/82328a8987db9d9ff12a3b48561f876bc6a16258b6202fd7bd5f5ecd8f0f/types_jwcrypto-1.5.7.20260409.tar.gz", hash = "sha256:34084f740198c3b1abe8c63ff176e4b7b5c4274890a2a0c51fa181246520b108", size = 11982, upload-time = "2026-04-09T04:22:38.696Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/cf/15/e305c0ae6aaca68842c73fee5080eadd51a702a1562f05d9653d6e9b5a94/types_jwcrypto-1.5.0.20251102-py3-none-any.whl", hash = "sha256:506c93a09c6a988fc5a56bfe92f0cf80b31a0acee98bd6e807277bb0c6f8c1d0", size = 12978, upload-time = "2025-11-02T03:07:37.398Z" }, + { url = "https://files.pythonhosted.org/packages/e3/98/e2480bc7fd0ae7f1cb44284122c18bc1f941102f12c98fdaeaabf1303a7d/types_jwcrypto-1.5.7.20260409-py3-none-any.whl", hash = "sha256:69470644242aa6c66c9aa730ba1dd975dbb23acc56c46f259cf75fb52133651a", size = 13318, upload-time = "2026-04-09T04:22:37.956Z" }, ] [[package]] name = "types-ldap3" -version = "2.9.13.20260319" +version = "2.9.13.20260408" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "types-pyasn1" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/21/f0/f35940a44068e38bd38fea4399bab94c66f6303287fa63535958ac61d156/types_ldap3-2.9.13.20260319.tar.gz", hash = "sha256:21750db87cb0c91803fb7831be714ab6961a493206cf360640182e28bb84947b", size = 33728, upload-time = "2026-03-19T04:10:43.633Z" } +sdist = { url = "https://files.pythonhosted.org/packages/27/27/8fdbfc64af2c664b30066cb1f44a58d84999b9b45fe43d64b3a2988205a6/types_ldap3-2.9.13.20260408.tar.gz", hash = "sha256:7c64ff71ecc508f349fcd48d2006298eb3783236c7cb4c9bef1656f7b9f55814", size = 33844, upload-time = "2026-04-08T04:34:17.306Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/30/84/48caaf33e36daae8e11b03352ccceb81102a16650c2112cf7778da6ec804/types_ldap3-2.9.13.20260319-py3-none-any.whl", hash = "sha256:0bf76f060a8f84b2d305115e3d2e9db2b44005770ec9bd3a3f7995b8840c1566", size = 56760, upload-time = "2026-03-19T04:10:42.744Z" }, + { url = "https://files.pythonhosted.org/packages/63/0a/c5d5181786900a6dbcb86dd0ccdeab2ba62d75792caf9a340dfe30bdaadf/types_ldap3-2.9.13.20260408-py3-none-any.whl", hash = "sha256:5a9732300a6d2dcbb3a7733b91091f8c7169dc54e3ac95a09a8a0f7751b44d15", size = 56749, upload-time = "2026-04-08T04:34:16.352Z" }, ] [[package]] name = "types-paramiko" -version = "4.0.0.20250822" +version = "4.0.0.20260408" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cryptography" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b7/b8/c6ff3b10c2f7b9897650af746f0dc6c5cddf054db857bc79d621f53c7d22/types_paramiko-4.0.0.20250822.tar.gz", hash = "sha256:1b56b0cbd3eec3d2fd123c9eb2704e612b777e15a17705a804279ea6525e0c53", size = 28730, upload-time = "2025-08-22T03:03:43.262Z" } +sdist = { url = "https://files.pythonhosted.org/packages/aa/f5/2a556b03ba264508b6bc6a65131500265f210ff3ebf5d76dbe51b53c3979/types_paramiko-4.0.0.20260408.tar.gz", hash = "sha256:978191a2e11064fa4c7f9ada0fccf49159a17beb98b780310dd2c2d2b4106063", size = 29116, upload-time = "2026-04-08T04:35:04.631Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/79/a1/b3774ed924a66ee2c041224d89c36f0c21f4f6cf75036d6ee7698bf8a4b9/types_paramiko-4.0.0.20250822-py3-none-any.whl", hash = "sha256:55bdb14db75ca89039725ec64ae3fa26b8d57b6991cfb476212fa8f83a59753c", size = 38833, upload-time = "2025-08-22T03:03:42.072Z" }, + { url = "https://files.pythonhosted.org/packages/d9/e2/cf451598a6a8820139d021b2be08a836b9b905d744bcc73b72172e7e10b3/types_paramiko-4.0.0.20260408-py3-none-any.whl", hash = "sha256:350bf53edb4eb88181be68854d598e1cc3a8764fe905d49913025b86e831adbc", size = 38816, upload-time = "2026-04-08T04:35:03.503Z" }, ] [[package]] name = "types-pyasn1" -version = "0.6.0.20250914" +version = "0.6.0.20260408" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/69/92/bfe2385ee347c9d528adbd0fd8e5d7da6bcd18572cc42fd94e44c182dd69/types_pyasn1-0.6.0.20250914.tar.gz", hash = "sha256:236102553b76c938953037b7ae93d11d395d9413b7f2f8083d3b19d740f7eda6", size = 17109, upload-time = "2025-09-14T02:56:08.041Z" } +sdist = { url = "https://files.pythonhosted.org/packages/58/c0/02f897fc8543f64fa6b1ca6a30d388e37c4ec2f761f469a2d9a29b89cdef/types_pyasn1-0.6.0.20260408.tar.gz", hash = "sha256:32dc90927adbe504fd2eee83ae30cf5ef934e5db0d1d94886071fed47eb50c8c", size = 17312, upload-time = "2026-04-08T04:27:16.874Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/6c/9d/5eb611d0db5b980cbb7d3eaca5baf187d5346f6371fdb6c708847539cea6/types_pyasn1-0.6.0.20250914-py3-none-any.whl", hash = "sha256:68ffeef3c28e1ed120b8b81a242f238f137543e68d466d84a97edcf3e4203b5b", size = 24052, upload-time = "2025-09-14T02:56:07.247Z" }, + { url = "https://files.pythonhosted.org/packages/e1/a5/473e06d5aaec3730aab5a9d40c2044e673c927412c24bd7f3fa0df7e95d3/types_pyasn1-0.6.0.20260408-py3-none-any.whl", hash = "sha256:ee7fbd98bce61193c5d4f8f7812fa53cddc5b8cc5ceb9fcda6eea539947c6d6b", size = 24044, upload-time = "2026-04-08T04:27:16.002Z" }, ] [[package]] name = "types-pyyaml" -version = "6.0.12.20250915" +version = "6.0.12.20260408" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/7e/69/3c51b36d04da19b92f9e815be12753125bd8bc247ba0470a982e6979e71c/types_pyyaml-6.0.12.20250915.tar.gz", hash = "sha256:0f8b54a528c303f0e6f7165687dd33fafa81c807fcac23f632b63aa624ced1d3", size = 17522, upload-time = "2025-09-15T03:01:00.728Z" } +sdist = { url = "https://files.pythonhosted.org/packages/74/73/b759b1e413c31034cc01ecdfb96b38115d0ab4db55a752a3929f0cd449fd/types_pyyaml-6.0.12.20260408.tar.gz", hash = "sha256:92a73f2b8d7f39ef392a38131f76b970f8c66e4c42b3125ae872b7c93b556307", size = 17735, upload-time = "2026-04-08T04:30:50.974Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/bd/e0/1eed384f02555dde685fff1a1ac805c1c7dcb6dd019c916fe659b1c1f9ec/types_pyyaml-6.0.12.20250915-py3-none-any.whl", hash = "sha256:e7d4d9e064e89a3b3cae120b4990cd370874d2bf12fa5f46c97018dd5d3c9ab6", size = 20338, upload-time = "2025-09-15T03:00:59.218Z" }, + { url = "https://files.pythonhosted.org/packages/1c/f0/c391068b86abb708882c6d75a08cd7d25b2c7227dab527b3a3685a3c635b/types_pyyaml-6.0.12.20260408-py3-none-any.whl", hash = "sha256:fbc42037d12159d9c801ebfcc79ebd28335a7c13b08a4cfbc6916df78fee9384", size = 20339, upload-time = "2026-04-08T04:30:50.113Z" }, ] [[package]] name = "types-requests" -version = "2.32.4.20260107" +version = "2.33.0.20260503" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "urllib3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/0f/f3/a0663907082280664d745929205a89d41dffb29e89a50f753af7d57d0a96/types_requests-2.32.4.20260107.tar.gz", hash = "sha256:018a11ac158f801bfa84857ddec1650750e393df8a004a8a9ae2a9bec6fcb24f", size = 23165, upload-time = "2026-01-07T03:20:54.091Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a1/b8/57e94268c0d82ac3eaa2fc35aa8ca7bbc2542f726b67dcf90b0b00a3b14d/types_requests-2.33.0.20260503.tar.gz", hash = "sha256:9721b2d9dbee7131f2fb39f20f0ebb1999c18cef4b512c9a7932f3722de7c5f4", size = 23931, upload-time = "2026-05-03T05:20:08.882Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/1c/12/709ea261f2bf91ef0a26a9eed20f2623227a8ed85610c1e54c5805692ecb/types_requests-2.32.4.20260107-py3-none-any.whl", hash = "sha256:b703fe72f8ce5b31ef031264fe9395cac8f46a04661a79f7ed31a80fb308730d", size = 20676, upload-time = "2026-01-07T03:20:52.929Z" }, + { url = "https://files.pythonhosted.org/packages/c3/82/959113a6351f3ca046cd0a8cd2cee071d7ea47473560557a01eeae9a6fe2/types_requests-2.33.0.20260503-py3-none-any.whl", hash = "sha256:02aaa7e3577a13471715bb1bddb693cc985ea514f754b503bf033e6a09a3e528", size = 20736, upload-time = "2026-05-03T05:20:07.858Z" }, ] [[package]] name = "types-zxcvbn" -version = "4.5.0.20250809" +version = "4.5.0.20260408" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/6b/27/70ca6f3f295c48f87495e283061e60d53a814853bd213f24125cf4192cad/types_zxcvbn-4.5.0.20250809.tar.gz", hash = "sha256:da19c7c416ad26ecb934110260375e687f37f1ed897522214d97ca2e9ccb2de5", size = 9389, upload-time = "2025-08-09T03:15:01.058Z" } +sdist = { url = "https://files.pythonhosted.org/packages/17/31/12ead8825f64b9b4323ae5b25181be8885a2c40acf60f769b1327c835d46/types_zxcvbn-4.5.0.20260408.tar.gz", hash = "sha256:3d0a07df594bbc6b272dc3ac199bb1d82340f51ee187ca36aa5c101780763b53", size = 9444, upload-time = "2026-04-08T04:28:20.94Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/6b/e0/0af4e865c28da104fa6ec45a2a336521fe34cbe606ef2ab6984b14d96e2c/types_zxcvbn-4.5.0.20250809-py3-none-any.whl", hash = "sha256:2cd151a5b35a976ae22017b5caed8f99d5e1be455cf9f9497cd86419073bc9cb", size = 10821, upload-time = "2025-08-09T03:15:00.299Z" }, + { url = "https://files.pythonhosted.org/packages/c7/59/776d0db9b5fcd0db841727c16d4742ad6120da9ce93a09d030401432ebed/types_zxcvbn-4.5.0.20260408-py3-none-any.whl", hash = "sha256:5eff6991fa459590af1dd669b706d058ceeb599f175c5195864f81ada97d781a", size = 10839, upload-time = "2026-04-08T04:28:20.145Z" }, ] [[package]] @@ -3732,52 +3723,52 @@ wheels = [ [[package]] name = "ua-parser" -version = "1.0.1" +version = "1.0.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "ua-parser-builtins" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/70/0e/ed98be735bc89d5040e0c60f5620d0b8c04e9e7da99ed1459e8050e90a77/ua_parser-1.0.1.tar.gz", hash = "sha256:f9d92bf19d4329019cef91707aecc23c6d65143ad7e29a233f0580fb0d15547d", size = 728106, upload-time = "2025-02-01T14:13:32.508Z" } +sdist = { url = "https://files.pythonhosted.org/packages/90/98/5e4b52d772a048af122a6fc5ce365c311efb9f5e79c55fd4fdd7c9f59e83/ua_parser-1.0.2.tar.gz", hash = "sha256:bab404ad42fb37f943107da2f6003ffc79724d11cc95076a7a539513371779da", size = 33239, upload-time = "2026-04-05T20:14:28.229Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/94/37/be6dfbfa45719aa82c008fb4772cfe5c46db765a2ca4b6f524a1fdfee4d7/ua_parser-1.0.1-py3-none-any.whl", hash = "sha256:b059f2cb0935addea7e551251cbbf42e9a8872f86134163bc1a4f79e0945ffea", size = 31410, upload-time = "2025-02-01T14:13:28.458Z" }, + { url = "https://files.pythonhosted.org/packages/a9/7c/6367995ff57aaa2d9e1055adbaec2519cf5a979780a83a93fdf8c6ec37be/ua_parser-1.0.2-py3-none-any.whl", hash = "sha256:0f8e6d0484af2a9ff804bba5a4fe696e87c028eaba98ad9a7dfae873fef7788a", size = 31219, upload-time = "2026-04-05T20:14:26.913Z" }, ] [[package]] name = "ua-parser-builtins" -version = "202601" +version = "202603" source = { registry = "https://pypi.org/simple" } wheels = [ - { url = "https://files.pythonhosted.org/packages/fd/82/aab481e2fc6dee0a13ce35c750e97dbe3f270fb327089c99a8f5e6900e0c/ua_parser_builtins-202601-py3-none-any.whl", hash = "sha256:f5dc93b0f53724dcd5c3eb79edb0aea281cb304a2c02a9436cbeb8cfb8bc4ad1", size = 89228, upload-time = "2026-01-02T08:58:23.453Z" }, + { url = "https://files.pythonhosted.org/packages/3e/6f/73a4d37deefb159556d39d654b5bad67b6874d1ad0b20b96fb5a04de3949/ua_parser_builtins-202603-py3-none-any.whl", hash = "sha256:67478397a68fac1a98fd0a31c416ea7c65a719141fc151d0211316f2cd337cc9", size = 89573, upload-time = "2026-03-01T20:50:02.491Z" }, ] [[package]] name = "ujson" -version = "5.12.0" +version = "5.12.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/cb/3e/c35530c5ffc25b71c59ae0cd7b8f99df37313daa162ce1e2f7925f7c2877/ujson-5.12.0.tar.gz", hash = "sha256:14b2e1eb528d77bc0f4c5bd1a7ebc05e02b5b41beefb7e8567c9675b8b13bcf4", size = 7158451, upload-time = "2026-03-11T22:19:30.397Z" } +sdist = { url = "https://files.pythonhosted.org/packages/bc/78/937198ea8708182dd1edbf0237bf255a96feab3f511691ad08b84da98e5d/ujson-5.12.1.tar.gz", hash = "sha256:5b7e96406c301a1366534479a7352ec40ec68bb327c0c119091635acd5925e35", size = 7164538, upload-time = "2026-05-05T22:05:01.354Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/10/bd/9a8d693254bada62bfea75a507e014afcfdb6b9d047b6f8dd134bfefaf67/ujson-5.12.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:85833bca01aa5cae326ac759276dc175c5fa3f7b3733b7d543cf27f2df12d1ef", size = 56499, upload-time = "2026-03-11T22:18:45.431Z" }, - { url = "https://files.pythonhosted.org/packages/bd/2d/285a83df8176e18dcd675d1a4cff8f7620f003f30903ea43929406e98986/ujson-5.12.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:d22cad98c2a10bbf6aa083a8980db6ed90d4285a841c4de892890c2b28286ef9", size = 53998, upload-time = "2026-03-11T22:18:47.184Z" }, - { url = "https://files.pythonhosted.org/packages/bf/8b/e2f09e16dabfa91f6a84555df34a4329fa7621e92ed054d170b9054b9bb2/ujson-5.12.0-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:99cc80facad240b0c2fb5a633044420878aac87a8e7c348b9486450cba93f27c", size = 57783, upload-time = "2026-03-11T22:18:48.271Z" }, - { url = "https://files.pythonhosted.org/packages/68/fb/ba1d06f3658a0c36d0ab3869ec3914f202bad0a9bde92654e41516c7bb13/ujson-5.12.0-cp314-cp314-manylinux_2_24_i686.manylinux_2_28_i686.whl", hash = "sha256:d1831c07bd4dce53c4b666fa846c7eba4b7c414f2e641a4585b7f50b72f502dc", size = 60011, upload-time = "2026-03-11T22:18:49.284Z" }, - { url = "https://files.pythonhosted.org/packages/64/2b/3e322bf82d926d9857206cd5820438d78392d1f523dacecb8bd899952f73/ujson-5.12.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0e00cec383eab2406c9e006bd4edb55d284e94bb943fda558326048178d26961", size = 57465, upload-time = "2026-03-11T22:18:50.584Z" }, - { url = "https://files.pythonhosted.org/packages/e9/fd/af72d69603f9885e5136509a529a4f6d88bf652b457263ff96aefcd3ab7d/ujson-5.12.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:f19b3af31d02a2e79c5f9a6deaab0fb3c116456aeb9277d11720ad433de6dfc6", size = 1037275, upload-time = "2026-03-11T22:18:51.998Z" }, - { url = "https://files.pythonhosted.org/packages/9c/a7/a2411ec81aef7872578e56304c3e41b3a544a9809e95c8e1df46923fc40b/ujson-5.12.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:bacbd3c69862478cbe1c7ed4325caedec580d8acf31b8ee1b9a1e02a56295cad", size = 1196758, upload-time = "2026-03-11T22:18:53.548Z" }, - { url = "https://files.pythonhosted.org/packages/ed/85/aa18ae175dd03a118555aa14304d4f466f9db61b924c97c6f84388ecacb1/ujson-5.12.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:94c5f1621cbcab83c03be46441f090b68b9f307b6c7ec44d4e3f6d5997383df4", size = 1089760, upload-time = "2026-03-11T22:18:55.336Z" }, - { url = "https://files.pythonhosted.org/packages/d3/d4/4b40b67ac7e916ebffc3041ae2320c5c0b8a045300d4c542b6e50930cca5/ujson-5.12.0-cp314-cp314-win32.whl", hash = "sha256:e6369ac293d2cc40d52577e4fa3d75a70c1aae2d01fa3580a34a4e6eff9286b9", size = 41043, upload-time = "2026-03-11T22:18:56.505Z" }, - { url = "https://files.pythonhosted.org/packages/24/38/a1496d2a3428981f2b3a2ffbb4656c2b05be6cc406301d6b10a6445f6481/ujson-5.12.0-cp314-cp314-win_amd64.whl", hash = "sha256:31348a0ffbfc815ce78daac569d893349d85a0b57e1cd2cdbba50b7f333784da", size = 45303, upload-time = "2026-03-11T22:18:57.454Z" }, - { url = "https://files.pythonhosted.org/packages/85/d3/39dbd3159543d9c57ec3a82d36226152cf0d710784894ce5aa24b8220ac1/ujson-5.12.0-cp314-cp314-win_arm64.whl", hash = "sha256:6879aed770557f0961b252648d36f6fdaab41079d37a2296b5649fd1b35608e0", size = 39860, upload-time = "2026-03-11T22:18:58.578Z" }, - { url = "https://files.pythonhosted.org/packages/c3/71/9b4dacb177d3509077e50497222d39eec04c8b41edb1471efc764d645237/ujson-5.12.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:7ddb08b3c2f9213df1f2e3eb2fbea4963d80ec0f8de21f0b59898e34f3b3d96d", size = 56845, upload-time = "2026-03-11T22:18:59.629Z" }, - { url = "https://files.pythonhosted.org/packages/24/c2/8abffa3be1f3d605c4a62445fab232b3e7681512ce941c6b23014f404d36/ujson-5.12.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:0a3ae28f0b209be5af50b54ca3e2123a3de3a57d87b75f1e5aa3d7961e041983", size = 54463, upload-time = "2026-03-11T22:19:00.697Z" }, - { url = "https://files.pythonhosted.org/packages/db/2e/60114a35d1d6796eb428f7affcba00a921831ff604a37d9142c3d8bbe5c5/ujson-5.12.0-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d30ad4359413c8821cc7b3707f7ca38aa8bc852ba3b9c5a759ee2d7740157315", size = 58689, upload-time = "2026-03-11T22:19:01.739Z" }, - { url = "https://files.pythonhosted.org/packages/c8/ad/010925c2116c21ce119f9c2ff18d01f48a19ade3ff4c5795da03ce5829fc/ujson-5.12.0-cp314-cp314t-manylinux_2_24_i686.manylinux_2_28_i686.whl", hash = "sha256:02f93da7a4115e24f886b04fd56df1ee8741c2ce4ea491b7ab3152f744ad8f8e", size = 60618, upload-time = "2026-03-11T22:19:03.101Z" }, - { url = "https://files.pythonhosted.org/packages/9b/74/db7f638bf20282b1dccf454386cbd483faaaed3cdbb9cb27e06f74bb109e/ujson-5.12.0-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3ff4ede90ed771140caa7e1890de17431763a483c54b3c1f88bd30f0cc1affc0", size = 58151, upload-time = "2026-03-11T22:19:04.175Z" }, - { url = "https://files.pythonhosted.org/packages/9c/7e/3ebaecfa70a2e8ce623db8e21bd5cb05d42a5ef943bcbb3309d71b5de68d/ujson-5.12.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:a7bf9cc97f05048ac8f3e02cd58f0fe62b901453c24345bfde287f4305dcc31c", size = 1038117, upload-time = "2026-03-11T22:19:05.558Z" }, - { url = "https://files.pythonhosted.org/packages/2e/aa/e073eda7f0036c2973b28db7bb99faba17a932e7b52d801f9bb3e726271f/ujson-5.12.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:2324d9a0502317ffc35d38e153c1b2fa9610ae03775c9d0f8d0cca7b8572b04e", size = 1197434, upload-time = "2026-03-11T22:19:06.92Z" }, - { url = "https://files.pythonhosted.org/packages/1c/01/b9a13f058fdd50c746b192c4447ca8d6352e696dcda912ccee10f032ff85/ujson-5.12.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:50524f4f6a1c839714dbaff5386a1afb245d2d5ec8213a01fbc99cea7307811e", size = 1090401, upload-time = "2026-03-11T22:19:08.383Z" }, - { url = "https://files.pythonhosted.org/packages/c4/37/3d1b4e0076b6e43379600b5229a5993db8a759ff2e1830ea635d876f6644/ujson-5.12.0-cp314-cp314t-win32.whl", hash = "sha256:f7a0430d765f9bda043e6aefaba5944d5f21ec43ff4774417d7e296f61917382", size = 41880, upload-time = "2026-03-11T22:19:09.671Z" }, - { url = "https://files.pythonhosted.org/packages/b1/c5/3c2a262a138b9f0014fe1134a6b5fdc2c54245030affbaac2fcbc0632138/ujson-5.12.0-cp314-cp314t-win_amd64.whl", hash = "sha256:ccbfd94e59aad4a2566c71912b55f0547ac1680bfac25eb138e6703eb3dd434e", size = 46365, upload-time = "2026-03-11T22:19:10.662Z" }, - { url = "https://files.pythonhosted.org/packages/83/40/956dc20b7e00dc0ff3259871864f18dab211837fce3478778bedb3132ac1/ujson-5.12.0-cp314-cp314t-win_arm64.whl", hash = "sha256:42d875388fbd091c7ea01edfff260f839ba303038ffb23475ef392012e4d63dd", size = 40398, upload-time = "2026-03-11T22:19:11.666Z" }, + { url = "https://files.pythonhosted.org/packages/f8/ca/d88d86f90f8f237985f3e347b9a4f9fa24e8d30d19ec7d477ed18aa58393/ujson-5.12.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:6f19e9a407a24230df0cc1ec1c0f5999872ba526b14a780f80ad6479f5eed9bc", size = 58099, upload-time = "2026-05-05T22:04:06.688Z" }, + { url = "https://files.pythonhosted.org/packages/ae/2d/a0a88407cee3550f7ed1e49b41157ee2d410f51905ed51fb134844255280/ujson-5.12.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:8b657e870c77aaacdeea86cfad3e6d2ef9b52517e45988c9c367f7ee764fe4dd", size = 55631, upload-time = "2026-05-05T22:04:07.925Z" }, + { url = "https://files.pythonhosted.org/packages/a9/6d/12a3b8e72132db244ae048075e71a0079b3c5f61ff45b7ca81d5193ab3e7/ujson-5.12.1-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:984b5a99d1e0a037c2046c3c4b34cec832565d62d5017be0a035bf3cbfab72dc", size = 59469, upload-time = "2026-05-05T22:04:09.208Z" }, + { url = "https://files.pythonhosted.org/packages/a2/72/310f8c21737554f2d2b4f1883e1a71e8a6ab0d8f92f0feb8aaa85e0f4b66/ujson-5.12.1-cp314-cp314-manylinux_2_24_i686.manylinux_2_28_i686.whl", hash = "sha256:f48ef8a16f1d85bd7982beac7adfd3fb704058631db84c1c61c8a1b7072b1508", size = 61611, upload-time = "2026-05-05T22:04:10.836Z" }, + { url = "https://files.pythonhosted.org/packages/50/50/ab4b2f7bab6c7a67298c8f2aca80e2082eaf6f332cf2d099762647b5301e/ujson-5.12.1-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4f39ba3b65cc637b59731532f7e7c807786bff1d0332ab2d5b96a04d2584d78f", size = 59122, upload-time = "2026-05-05T22:04:12.137Z" }, + { url = "https://files.pythonhosted.org/packages/21/48/5d81cbe76fc2aa9e071aa489a3041cf0712f5e0663d60d501641f92b7bb4/ujson-5.12.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:07f307780f85b49cba93f291718421b6f5f3b627a323b431fad937a18f6587cb", size = 1038938, upload-time = "2026-05-05T22:04:13.548Z" }, + { url = "https://files.pythonhosted.org/packages/fb/a7/abe1acb0e5d8b8d724b35533a44c89684c88100a5fd9f2fee7f7155528d5/ujson-5.12.1-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:1c335caea51c31494e514b82d50763b9792d3960d2c7d9fdb6b6fb8ed50ebdd0", size = 1198416, upload-time = "2026-05-05T22:04:15.609Z" }, + { url = "https://files.pythonhosted.org/packages/ed/6e/087067d6ee22bd01bfba9fb1f32ce98c24ae2bcbab53bd2fbf8f7a80fe9e/ujson-5.12.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:19ea07e29a45d199f926aadf93a9974128438c01b83141fba32477c0ee604b33", size = 1091425, upload-time = "2026-05-05T22:04:17.909Z" }, + { url = "https://files.pythonhosted.org/packages/4e/d2/28938574b766980f873b68962abb4c68a944d939446768982934ad3bcd93/ujson-5.12.1-cp314-cp314-win32.whl", hash = "sha256:c8e626b6bc9bdd2e8f7393b7d99f3daa2ca4022e6203662e70de7bb3604b21b9", size = 42334, upload-time = "2026-05-05T22:04:19.85Z" }, + { url = "https://files.pythonhosted.org/packages/49/b0/0af30bf65d96b73c28054b344ebbe24bc96780ae8a7f2973f5dad979510a/ujson-5.12.1-cp314-cp314-win_amd64.whl", hash = "sha256:c6d3bdd020333688ee60559437021ed68a98a28fdd609b5af16de5dd58f90cba", size = 46586, upload-time = "2026-05-05T22:04:21.298Z" }, + { url = "https://files.pythonhosted.org/packages/4e/3b/0ee2555823724e60cc847c715c299f5792aa444bdde69c51d4aa42d885c2/ujson-5.12.1-cp314-cp314-win_arm64.whl", hash = "sha256:e3c9c894971f4ada3ded16a804ed4640e1f2b3e5239beaeec7c48296f39f4232", size = 41178, upload-time = "2026-05-05T22:04:22.597Z" }, + { url = "https://files.pythonhosted.org/packages/3f/3d/7547835cd0b7fa22eb1122702f81b2403c38a0027a2cc0d75acc449a4a66/ujson-5.12.1-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:49dd9c378e1c8e676785ff2b62cb490074229f15ab54abf45b623713cb2c36b5", size = 58565, upload-time = "2026-05-05T22:04:23.75Z" }, + { url = "https://files.pythonhosted.org/packages/ed/6a/1784e0b24aab50623eb47b2f7a8dc22c9d809d798854d2568a9cb7c3560f/ujson-5.12.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:6d8827904358d7da59ccf2e1fd8de59e78248036d17fecc0462e62c6721f1102", size = 56157, upload-time = "2026-05-05T22:04:25.028Z" }, + { url = "https://files.pythonhosted.org/packages/91/2d/2c1b24df24eee309047d81460c3a1acf0d047207327edc6f3cab8a614985/ujson-5.12.1-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:dc26caebea90425662ef0b979f945f6ac832651881107d6ec9a3c4d4a4ba929c", size = 60288, upload-time = "2026-05-05T22:04:26.273Z" }, + { url = "https://files.pythonhosted.org/packages/c5/14/c0c603e3dff2ef98f7deee2df7795e6055abbc5825c6ef530024b3b06a15/ujson-5.12.1-cp314-cp314t-manylinux_2_24_i686.manylinux_2_28_i686.whl", hash = "sha256:45022aae09ac3d45bda6fbfc631088d1aff9a0465542d40bd6d295ced378c430", size = 62302, upload-time = "2026-05-05T22:04:27.516Z" }, + { url = "https://files.pythonhosted.org/packages/5c/0d/889bbc044561d9adc9bf413620fbd9878f352c9fd36da829d319bca2f5ad/ujson-5.12.1-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b22aa0f644516d3d5b29464949e4b23fe784f84b4a1030ab9ac3cb42aaedabb1", size = 59784, upload-time = "2026-05-05T22:04:28.776Z" }, + { url = "https://files.pythonhosted.org/packages/18/35/3b1d8ff8cd6dc048f5c495af6ee6ded43055562610a7e9b78b438dc6421e/ujson-5.12.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:7dc5cf44ea42365cd1b66e6ed3fc6ca040c86587b024a6659b98e99d31cff2cd", size = 1039759, upload-time = "2026-05-05T22:04:30.291Z" }, + { url = "https://files.pythonhosted.org/packages/6a/d8/3c66cdf839420a6da2d6140a54a882c15efd135bcced103bd4473d577636/ujson-5.12.1-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:8df5d984ff4ac1ef292d70f30da03417038a7e1e0bc272d28ca9d34f02f41682", size = 1199121, upload-time = "2026-05-05T22:04:31.961Z" }, + { url = "https://files.pythonhosted.org/packages/54/51/c3d1b94a4ad27dc7532e9f7d00b869463157cede2295ba6d57566afeb8cd/ujson-5.12.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:485f0182a0c0b54c304061cdc826d8343ce595c4055f7a24e72772a8520e5f7b", size = 1092085, upload-time = "2026-05-05T22:04:33.697Z" }, + { url = "https://files.pythonhosted.org/packages/ae/52/4d4a6e78290a5eef3f576f6d281e6355535db903a08483fd1bb393bf8cb9/ujson-5.12.1-cp314-cp314t-win32.whl", hash = "sha256:4e12ca368b397aed7fa1eec534ea1ba8d94977b376f9df3e93ae1acfd004ec40", size = 43243, upload-time = "2026-05-05T22:04:35.486Z" }, + { url = "https://files.pythonhosted.org/packages/3d/c8/849366785de52b513e5fc89d7aea0b531e71bb5641407cbdfdf47a99ede8/ujson-5.12.1-cp314-cp314t-win_amd64.whl", hash = "sha256:cec6b9b539539affc1f01a795c99574592a635ce22331b64f2b42e0af570659e", size = 47662, upload-time = "2026-05-05T22:04:37.07Z" }, + { url = "https://files.pythonhosted.org/packages/8a/46/36a67f5a531a15308124786f3e2b7b96414b9d23dbcdc2a182dd3ffa2e1d/ujson-5.12.1-cp314-cp314t-win_arm64.whl", hash = "sha256:696224d4cfb8883fa5c0285dff31e5ce924704dd9ccd38e9ea8b5bf4a42b12fc", size = 41680, upload-time = "2026-05-05T22:04:39.083Z" }, ] [[package]] @@ -3800,11 +3791,11 @@ wheels = [ [[package]] name = "urllib3" -version = "2.6.3" +version = "2.7.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/c7/24/5f1b3bdffd70275f6661c76461e25f024d5a38a46f04aaca912426a2b1d3/urllib3-2.6.3.tar.gz", hash = "sha256:1b62b6884944a57dbe321509ab94fd4d3b307075e0c2eae991ac71ee15ad38ed", size = 435556, upload-time = "2026-01-07T16:24:43.925Z" } +sdist = { url = "https://files.pythonhosted.org/packages/53/0c/06f8b233b8fd13b9e5ee11424ef85419ba0d8ba0b3138bf360be2ff56953/urllib3-2.7.0.tar.gz", hash = "sha256:231e0ec3b63ceb14667c67be60f2f2c40a518cb38b03af60abc813da26505f4c", size = 433602, upload-time = "2026-05-07T16:13:18.596Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/39/08/aaaad47bc4e9dc8c725e68f9d04865dbcb2052843ff09c97b08904852d84/urllib3-2.6.3-py3-none-any.whl", hash = "sha256:bf272323e553dfb2e87d9bfd225ca7b0f467b919d7bbd355436d3fd37cb0acd4", size = 131584, upload-time = "2026-01-07T16:24:42.685Z" }, + { url = "https://files.pythonhosted.org/packages/7f/3e/5db95bcf282c52709639744ca2a8b149baccf648e39c8cc87553df9eae0c/urllib3-2.7.0-py3-none-any.whl", hash = "sha256:9fb4c81ebbb1ce9531cce37674bbc6f1360472bc18ca9a553ede278ef7276897", size = 131087, upload-time = "2026-05-07T16:13:17.151Z" }, ] [package.optional-dependencies] @@ -3814,15 +3805,15 @@ socks = [ [[package]] name = "uvicorn" -version = "0.42.0" +version = "0.46.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "click" }, { name = "h11" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/e3/ad/4a96c425be6fb67e0621e62d86c402b4a17ab2be7f7c055d9bd2f638b9e2/uvicorn-0.42.0.tar.gz", hash = "sha256:9b1f190ce15a2dd22e7758651d9b6d12df09a13d51ba5bf4fc33c383a48e1775", size = 85393, upload-time = "2026-03-16T06:19:50.077Z" } +sdist = { url = "https://files.pythonhosted.org/packages/1f/93/041fca8274050e40e6791f267d82e0e2e27dd165627bd640d3e0e378d877/uvicorn-0.46.0.tar.gz", hash = "sha256:fb9da0926999cc6cb22dc7cd71a94a632f078e6ae47ff683c5c420750fb7413d", size = 88758, upload-time = "2026-04-23T07:16:00.151Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/0a/89/f8827ccff89c1586027a105e5630ff6139a64da2515e24dafe860bd9ae4d/uvicorn-0.42.0-py3-none-any.whl", hash = "sha256:96c30f5c7abe6f74ae8900a70e92b85ad6613b745d4879eb9b16ccad15645359", size = 68830, upload-time = "2026-03-16T06:19:48.325Z" }, + { url = "https://files.pythonhosted.org/packages/31/a3/5b1562db76a5a488274b2332a97199b32d0442aca0ed193697fd47786316/uvicorn-0.46.0-py3-none-any.whl", hash = "sha256:bbebbcbed972d162afca128605223022bedd345b7bc7855ce66deb31487a9048", size = 70926, upload-time = "2026-04-23T07:15:58.355Z" }, ] [package.optional-dependencies] @@ -3874,19 +3865,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/33/e8/e40370e6d74ddba47f002a32919d91310d6074130fe4e17dabcafc15cbf1/watchdog-6.0.0-py3-none-win_ia64.whl", hash = "sha256:a1914259fa9e1454315171103c6a30961236f508b9b623eae470268bbcc6a22f", size = 79067, upload-time = "2024-11-01T14:07:11.845Z" }, ] -[[package]] -name = "watchdog-gevent" -version = "0.2.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "gevent" }, - { name = "watchdog" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/97/69/91cfca7c21c382e3a8aca4251dcd7d4315228d9346381feb2dde36d14061/watchdog_gevent-0.2.1.tar.gz", hash = "sha256:ae6b94d0f8c8ce1c5956cd865f612b61f456cf19801744bba25a349fe8e8c337", size = 4296, upload-time = "2024-10-19T05:29:12.987Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/00/a9/54b88e150b77791958957e2188312477d09fc84820fc03f8b3a7569d10b0/watchdog_gevent-0.2.1-py3-none-any.whl", hash = "sha256:e8114658104a018f626ee54052335407c1438369febc776c4b4c4308ed002350", size = 3462, upload-time = "2024-10-19T05:29:11.421Z" }, -] - [[package]] name = "watchfiles" version = "1.1.1" @@ -3923,11 +3901,11 @@ wheels = [ [[package]] name = "wcwidth" -version = "0.2.14" +version = "0.6.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/24/30/6b0809f4510673dc723187aeaf24c7f5459922d01e2f794277a3dfb90345/wcwidth-0.2.14.tar.gz", hash = "sha256:4d478375d31bc5395a3c55c40ccdf3354688364cd61c4f6adacaa9215d0b3605", size = 102293, upload-time = "2025-09-22T16:29:53.023Z" } +sdist = { url = "https://files.pythonhosted.org/packages/35/a2/8e3becb46433538a38726c948d3399905a4c7cabd0df578ede5dc51f0ec2/wcwidth-0.6.0.tar.gz", hash = "sha256:cdc4e4262d6ef9a1a57e018384cbeb1208d8abbc64176027e2c2455c81313159", size = 159684, upload-time = "2026-02-06T19:19:40.919Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/af/b5/123f13c975e9f27ab9c0770f514345bd406d0e8d3b7a0723af9d43f710af/wcwidth-0.2.14-py2.py3-none-any.whl", hash = "sha256:a7bb560c8aee30f9957e5f9895805edd20602f2d7f720186dfd906e82b4982e1", size = 37286, upload-time = "2025-09-22T16:29:51.641Z" }, + { url = "https://files.pythonhosted.org/packages/68/5a/199c59e0a824a3db2b89c5d2dade7ab5f9624dbf6448dc291b46d5ec94d3/wcwidth-0.6.0-py3-none-any.whl", hash = "sha256:1a3a1e510b553315f8e146c54764f4fb6264ffad731b3d78088cdb1478ffbdad", size = 94189, upload-time = "2026-02-06T19:19:39.646Z" }, ] [[package]] @@ -4015,80 +3993,76 @@ wheels = [ [[package]] name = "yarl" -version = "1.22.0" +version = "1.23.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "idna" }, { name = "multidict" }, { name = "propcache" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/57/63/0c6ebca57330cd313f6102b16dd57ffaf3ec4c83403dcb45dbd15c6f3ea1/yarl-1.22.0.tar.gz", hash = "sha256:bebf8557577d4401ba8bd9ff33906f1376c877aa78d1fe216ad01b4d6745af71", size = 187169, upload-time = "2025-10-06T14:12:55.963Z" } +sdist = { url = "https://files.pythonhosted.org/packages/23/6e/beb1beec874a72f23815c1434518bfc4ed2175065173fb138c3705f658d4/yarl-1.23.0.tar.gz", hash = "sha256:53b1ea6ca88ebd4420379c330aea57e258408dd0df9af0992e5de2078dc9f5d5", size = 194676, upload-time = "2026-03-01T22:07:53.373Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/46/b3/e20ef504049f1a1c54a814b4b9bed96d1ac0e0610c3b4da178f87209db05/yarl-1.22.0-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:34b36c2c57124530884d89d50ed2c1478697ad7473efd59cfd479945c95650e4", size = 140520, upload-time = "2025-10-06T14:11:15.465Z" }, - { url = "https://files.pythonhosted.org/packages/e4/04/3532d990fdbab02e5ede063676b5c4260e7f3abea2151099c2aa745acc4c/yarl-1.22.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:0dd9a702591ca2e543631c2a017e4a547e38a5c0f29eece37d9097e04a7ac683", size = 93504, upload-time = "2025-10-06T14:11:17.106Z" }, - { url = "https://files.pythonhosted.org/packages/11/63/ff458113c5c2dac9a9719ac68ee7c947cb621432bcf28c9972b1c0e83938/yarl-1.22.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:594fcab1032e2d2cc3321bb2e51271e7cd2b516c7d9aee780ece81b07ff8244b", size = 94282, upload-time = "2025-10-06T14:11:19.064Z" }, - { url = "https://files.pythonhosted.org/packages/a7/bc/315a56aca762d44a6aaaf7ad253f04d996cb6b27bad34410f82d76ea8038/yarl-1.22.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f3d7a87a78d46a2e3d5b72587ac14b4c16952dd0887dbb051451eceac774411e", size = 372080, upload-time = "2025-10-06T14:11:20.996Z" }, - { url = "https://files.pythonhosted.org/packages/3f/3f/08e9b826ec2e099ea6e7c69a61272f4f6da62cb5b1b63590bb80ca2e4a40/yarl-1.22.0-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:852863707010316c973162e703bddabec35e8757e67fcb8ad58829de1ebc8590", size = 338696, upload-time = "2025-10-06T14:11:22.847Z" }, - { url = "https://files.pythonhosted.org/packages/e3/9f/90360108e3b32bd76789088e99538febfea24a102380ae73827f62073543/yarl-1.22.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:131a085a53bfe839a477c0845acf21efc77457ba2bcf5899618136d64f3303a2", size = 387121, upload-time = "2025-10-06T14:11:24.889Z" }, - { url = "https://files.pythonhosted.org/packages/98/92/ab8d4657bd5b46a38094cfaea498f18bb70ce6b63508fd7e909bd1f93066/yarl-1.22.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:078a8aefd263f4d4f923a9677b942b445a2be970ca24548a8102689a3a8ab8da", size = 394080, upload-time = "2025-10-06T14:11:27.307Z" }, - { url = "https://files.pythonhosted.org/packages/f5/e7/d8c5a7752fef68205296201f8ec2bf718f5c805a7a7e9880576c67600658/yarl-1.22.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bca03b91c323036913993ff5c738d0842fc9c60c4648e5c8d98331526df89784", size = 372661, upload-time = "2025-10-06T14:11:29.387Z" }, - { url = "https://files.pythonhosted.org/packages/b6/2e/f4d26183c8db0bb82d491b072f3127fb8c381a6206a3a56332714b79b751/yarl-1.22.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:68986a61557d37bb90d3051a45b91fa3d5c516d177dfc6dd6f2f436a07ff2b6b", size = 364645, upload-time = "2025-10-06T14:11:31.423Z" }, - { url = "https://files.pythonhosted.org/packages/80/7c/428e5812e6b87cd00ee8e898328a62c95825bf37c7fa87f0b6bb2ad31304/yarl-1.22.0-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:4792b262d585ff0dff6bcb787f8492e40698443ec982a3568c2096433660c694", size = 355361, upload-time = "2025-10-06T14:11:33.055Z" }, - { url = "https://files.pythonhosted.org/packages/ec/2a/249405fd26776f8b13c067378ef4d7dd49c9098d1b6457cdd152a99e96a9/yarl-1.22.0-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:ebd4549b108d732dba1d4ace67614b9545b21ece30937a63a65dd34efa19732d", size = 381451, upload-time = "2025-10-06T14:11:35.136Z" }, - { url = "https://files.pythonhosted.org/packages/67/a8/fb6b1adbe98cf1e2dd9fad71003d3a63a1bc22459c6e15f5714eb9323b93/yarl-1.22.0-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:f87ac53513d22240c7d59203f25cc3beac1e574c6cd681bbfd321987b69f95fd", size = 383814, upload-time = "2025-10-06T14:11:37.094Z" }, - { url = "https://files.pythonhosted.org/packages/d9/f9/3aa2c0e480fb73e872ae2814c43bc1e734740bb0d54e8cb2a95925f98131/yarl-1.22.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:22b029f2881599e2f1b06f8f1db2ee63bd309e2293ba2d566e008ba12778b8da", size = 370799, upload-time = "2025-10-06T14:11:38.83Z" }, - { url = "https://files.pythonhosted.org/packages/50/3c/af9dba3b8b5eeb302f36f16f92791f3ea62e3f47763406abf6d5a4a3333b/yarl-1.22.0-cp314-cp314-win32.whl", hash = "sha256:6a635ea45ba4ea8238463b4f7d0e721bad669f80878b7bfd1f89266e2ae63da2", size = 82990, upload-time = "2025-10-06T14:11:40.624Z" }, - { url = "https://files.pythonhosted.org/packages/ac/30/ac3a0c5bdc1d6efd1b41fa24d4897a4329b3b1e98de9449679dd327af4f0/yarl-1.22.0-cp314-cp314-win_amd64.whl", hash = "sha256:0d6e6885777af0f110b0e5d7e5dda8b704efed3894da26220b7f3d887b839a79", size = 88292, upload-time = "2025-10-06T14:11:42.578Z" }, - { url = "https://files.pythonhosted.org/packages/df/0a/227ab4ff5b998a1b7410abc7b46c9b7a26b0ca9e86c34ba4b8d8bc7c63d5/yarl-1.22.0-cp314-cp314-win_arm64.whl", hash = "sha256:8218f4e98d3c10d683584cb40f0424f4b9fd6e95610232dd75e13743b070ee33", size = 82888, upload-time = "2025-10-06T14:11:44.863Z" }, - { url = "https://files.pythonhosted.org/packages/06/5e/a15eb13db90abd87dfbefb9760c0f3f257ac42a5cac7e75dbc23bed97a9f/yarl-1.22.0-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:45c2842ff0e0d1b35a6bf1cd6c690939dacb617a70827f715232b2e0494d55d1", size = 146223, upload-time = "2025-10-06T14:11:46.796Z" }, - { url = "https://files.pythonhosted.org/packages/18/82/9665c61910d4d84f41a5bf6837597c89e665fa88aa4941080704645932a9/yarl-1.22.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:d947071e6ebcf2e2bee8fce76e10faca8f7a14808ca36a910263acaacef08eca", size = 95981, upload-time = "2025-10-06T14:11:48.845Z" }, - { url = "https://files.pythonhosted.org/packages/5d/9a/2f65743589809af4d0a6d3aa749343c4b5f4c380cc24a8e94a3c6625a808/yarl-1.22.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:334b8721303e61b00019474cc103bdac3d7b1f65e91f0bfedeec2d56dfe74b53", size = 97303, upload-time = "2025-10-06T14:11:50.897Z" }, - { url = "https://files.pythonhosted.org/packages/b0/ab/5b13d3e157505c43c3b43b5a776cbf7b24a02bc4cccc40314771197e3508/yarl-1.22.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1e7ce67c34138a058fd092f67d07a72b8e31ff0c9236e751957465a24b28910c", size = 361820, upload-time = "2025-10-06T14:11:52.549Z" }, - { url = "https://files.pythonhosted.org/packages/fb/76/242a5ef4677615cf95330cfc1b4610e78184400699bdda0acb897ef5e49a/yarl-1.22.0-cp314-cp314t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:d77e1b2c6d04711478cb1c4ab90db07f1609ccf06a287d5607fcd90dc9863acf", size = 323203, upload-time = "2025-10-06T14:11:54.225Z" }, - { url = "https://files.pythonhosted.org/packages/8c/96/475509110d3f0153b43d06164cf4195c64d16999e0c7e2d8a099adcd6907/yarl-1.22.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c4647674b6150d2cae088fc07de2738a84b8bcedebef29802cf0b0a82ab6face", size = 363173, upload-time = "2025-10-06T14:11:56.069Z" }, - { url = "https://files.pythonhosted.org/packages/c9/66/59db471aecfbd559a1fd48aedd954435558cd98c7d0da8b03cc6c140a32c/yarl-1.22.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:efb07073be061c8f79d03d04139a80ba33cbd390ca8f0297aae9cce6411e4c6b", size = 373562, upload-time = "2025-10-06T14:11:58.783Z" }, - { url = "https://files.pythonhosted.org/packages/03/1f/c5d94abc91557384719da10ff166b916107c1b45e4d0423a88457071dd88/yarl-1.22.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e51ac5435758ba97ad69617e13233da53908beccc6cfcd6c34bbed8dcbede486", size = 339828, upload-time = "2025-10-06T14:12:00.686Z" }, - { url = "https://files.pythonhosted.org/packages/5f/97/aa6a143d3afba17b6465733681c70cf175af89f76ec8d9286e08437a7454/yarl-1.22.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:33e32a0dd0c8205efa8e83d04fc9f19313772b78522d1bdc7d9aed706bfd6138", size = 347551, upload-time = "2025-10-06T14:12:02.628Z" }, - { url = "https://files.pythonhosted.org/packages/43/3c/45a2b6d80195959239a7b2a8810506d4eea5487dce61c2a3393e7fc3c52e/yarl-1.22.0-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:bf4a21e58b9cde0e401e683ebd00f6ed30a06d14e93f7c8fd059f8b6e8f87b6a", size = 334512, upload-time = "2025-10-06T14:12:04.871Z" }, - { url = "https://files.pythonhosted.org/packages/86/a0/c2ab48d74599c7c84cb104ebd799c5813de252bea0f360ffc29d270c2caa/yarl-1.22.0-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:e4b582bab49ac33c8deb97e058cd67c2c50dac0dd134874106d9c774fd272529", size = 352400, upload-time = "2025-10-06T14:12:06.624Z" }, - { url = "https://files.pythonhosted.org/packages/32/75/f8919b2eafc929567d3d8411f72bdb1a2109c01caaab4ebfa5f8ffadc15b/yarl-1.22.0-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:0b5bcc1a9c4839e7e30b7b30dd47fe5e7e44fb7054ec29b5bb8d526aa1041093", size = 357140, upload-time = "2025-10-06T14:12:08.362Z" }, - { url = "https://files.pythonhosted.org/packages/cf/72/6a85bba382f22cf78add705d8c3731748397d986e197e53ecc7835e76de7/yarl-1.22.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:c0232bce2170103ec23c454e54a57008a9a72b5d1c3105dc2496750da8cfa47c", size = 341473, upload-time = "2025-10-06T14:12:10.994Z" }, - { url = "https://files.pythonhosted.org/packages/35/18/55e6011f7c044dc80b98893060773cefcfdbf60dfefb8cb2f58b9bacbd83/yarl-1.22.0-cp314-cp314t-win32.whl", hash = "sha256:8009b3173bcd637be650922ac455946197d858b3630b6d8787aa9e5c4564533e", size = 89056, upload-time = "2025-10-06T14:12:13.317Z" }, - { url = "https://files.pythonhosted.org/packages/f9/86/0f0dccb6e59a9e7f122c5afd43568b1d31b8ab7dda5f1b01fb5c7025c9a9/yarl-1.22.0-cp314-cp314t-win_amd64.whl", hash = "sha256:9fb17ea16e972c63d25d4a97f016d235c78dd2344820eb35bc034bc32012ee27", size = 96292, upload-time = "2025-10-06T14:12:15.398Z" }, - { url = "https://files.pythonhosted.org/packages/48/b7/503c98092fb3b344a179579f55814b613c1fbb1c23b3ec14a7b008a66a6e/yarl-1.22.0-cp314-cp314t-win_arm64.whl", hash = "sha256:9f6d73c1436b934e3f01df1e1b21ff765cd1d28c77dfb9ace207f746d4610ee1", size = 85171, upload-time = "2025-10-06T14:12:16.935Z" }, - { url = "https://files.pythonhosted.org/packages/73/ae/b48f95715333080afb75a4504487cbe142cae1268afc482d06692d605ae6/yarl-1.22.0-py3-none-any.whl", hash = "sha256:1380560bdba02b6b6c90de54133c81c9f2a453dee9912fe58c1dcced1edb7cff", size = 46814, upload-time = "2025-10-06T14:12:53.872Z" }, + { url = "https://files.pythonhosted.org/packages/90/98/b85a038d65d1b92c3903ab89444f48d3cee490a883477b716d7a24b1a78c/yarl-1.23.0-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:21d1b7305a71a15b4794b5ff22e8eef96ff4a6d7f9657155e5aa419444b28912", size = 124455, upload-time = "2026-03-01T22:06:43.615Z" }, + { url = "https://files.pythonhosted.org/packages/39/54/bc2b45559f86543d163b6e294417a107bb87557609007c007ad889afec18/yarl-1.23.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:85610b4f27f69984932a7abbe52703688de3724d9f72bceb1cca667deff27474", size = 86752, upload-time = "2026-03-01T22:06:45.425Z" }, + { url = "https://files.pythonhosted.org/packages/24/f9/e8242b68362bffe6fb536c8db5076861466fc780f0f1b479fc4ffbebb128/yarl-1.23.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:23f371bd662cf44a7630d4d113101eafc0cfa7518a2760d20760b26021454719", size = 86291, upload-time = "2026-03-01T22:06:46.974Z" }, + { url = "https://files.pythonhosted.org/packages/ea/d8/d1cb2378c81dd729e98c716582b1ccb08357e8488e4c24714658cc6630e8/yarl-1.23.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c4a80f77dc1acaaa61f0934176fccca7096d9b1ff08c8ba9cddf5ae034a24319", size = 99026, upload-time = "2026-03-01T22:06:48.459Z" }, + { url = "https://files.pythonhosted.org/packages/0a/ff/7196790538f31debe3341283b5b0707e7feb947620fc5e8236ef28d44f72/yarl-1.23.0-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:bd654fad46d8d9e823afbb4f87c79160b5a374ed1ff5bde24e542e6ba8f41434", size = 92355, upload-time = "2026-03-01T22:06:50.306Z" }, + { url = "https://files.pythonhosted.org/packages/c1/56/25d58c3eddde825890a5fe6aa1866228377354a3c39262235234ab5f616b/yarl-1.23.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:682bae25f0a0dd23a056739f23a134db9f52a63e2afd6bfb37ddc76292bbd723", size = 106417, upload-time = "2026-03-01T22:06:52.1Z" }, + { url = "https://files.pythonhosted.org/packages/51/8a/882c0e7bc8277eb895b31bce0138f51a1ba551fc2e1ec6753ffc1e7c1377/yarl-1.23.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a82836cab5f197a0514235aaf7ffccdc886ccdaa2324bc0aafdd4ae898103039", size = 106422, upload-time = "2026-03-01T22:06:54.424Z" }, + { url = "https://files.pythonhosted.org/packages/42/2b/fef67d616931055bf3d6764885990a3ac647d68734a2d6a9e1d13de437a2/yarl-1.23.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1c57676bdedc94cd3bc37724cf6f8cd2779f02f6aba48de45feca073e714fe52", size = 101915, upload-time = "2026-03-01T22:06:55.895Z" }, + { url = "https://files.pythonhosted.org/packages/18/6a/530e16aebce27c5937920f3431c628a29a4b6b430fab3fd1c117b26ff3f6/yarl-1.23.0-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:c7f8dc16c498ff06497c015642333219871effba93e4a2e8604a06264aca5c5c", size = 100690, upload-time = "2026-03-01T22:06:58.21Z" }, + { url = "https://files.pythonhosted.org/packages/88/08/93749219179a45e27b036e03260fda05190b911de8e18225c294ac95bbc9/yarl-1.23.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:5ee586fb17ff8f90c91cf73c6108a434b02d69925f44f5f8e0d7f2f260607eae", size = 98750, upload-time = "2026-03-01T22:06:59.794Z" }, + { url = "https://files.pythonhosted.org/packages/d9/cf/ea424a004969f5d81a362110a6ac1496d79efdc6d50c2c4b2e3ea0fc2519/yarl-1.23.0-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:17235362f580149742739cc3828b80e24029d08cbb9c4bda0242c7b5bc610a8e", size = 94685, upload-time = "2026-03-01T22:07:01.375Z" }, + { url = "https://files.pythonhosted.org/packages/e2/b7/14341481fe568e2b0408bcf1484c652accafe06a0ade9387b5d3fd9df446/yarl-1.23.0-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:0793e2bd0cf14234983bbb371591e6bea9e876ddf6896cdcc93450996b0b5c85", size = 106009, upload-time = "2026-03-01T22:07:03.151Z" }, + { url = "https://files.pythonhosted.org/packages/0a/e6/5c744a9b54f4e8007ad35bce96fbc9218338e84812d36f3390cea616881a/yarl-1.23.0-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:3650dc2480f94f7116c364096bc84b1d602f44224ef7d5c7208425915c0475dd", size = 100033, upload-time = "2026-03-01T22:07:04.701Z" }, + { url = "https://files.pythonhosted.org/packages/0c/23/e3bfc188d0b400f025bc49d99793d02c9abe15752138dcc27e4eaf0c4a9e/yarl-1.23.0-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:f40e782d49630ad384db66d4d8b73ff4f1b8955dc12e26b09a3e3af064b3b9d6", size = 106483, upload-time = "2026-03-01T22:07:06.231Z" }, + { url = "https://files.pythonhosted.org/packages/72/42/f0505f949a90b3f8b7a363d6cbdf398f6e6c58946d85c6d3a3bc70595b26/yarl-1.23.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:94f8575fbdf81749008d980c17796097e645574a3b8c28ee313931068dad14fe", size = 102175, upload-time = "2026-03-01T22:07:08.4Z" }, + { url = "https://files.pythonhosted.org/packages/aa/65/b39290f1d892a9dd671d1c722014ca062a9c35d60885d57e5375db0404b5/yarl-1.23.0-cp314-cp314-win32.whl", hash = "sha256:c8aa34a5c864db1087d911a0b902d60d203ea3607d91f615acd3f3108ac32169", size = 83871, upload-time = "2026-03-01T22:07:09.968Z" }, + { url = "https://files.pythonhosted.org/packages/a9/5b/9b92f54c784c26e2a422e55a8d2607ab15b7ea3349e28359282f84f01d43/yarl-1.23.0-cp314-cp314-win_amd64.whl", hash = "sha256:63e92247f383c85ab00dd0091e8c3fa331a96e865459f5ee80353c70a4a42d70", size = 89093, upload-time = "2026-03-01T22:07:11.501Z" }, + { url = "https://files.pythonhosted.org/packages/e0/7d/8a84dc9381fd4412d5e7ff04926f9865f6372b4c2fd91e10092e65d29eb8/yarl-1.23.0-cp314-cp314-win_arm64.whl", hash = "sha256:70efd20be968c76ece7baa8dafe04c5be06abc57f754d6f36f3741f7aa7a208e", size = 83384, upload-time = "2026-03-01T22:07:13.069Z" }, + { url = "https://files.pythonhosted.org/packages/dd/8d/d2fad34b1c08aa161b74394183daa7d800141aaaee207317e82c790b418d/yarl-1.23.0-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:9a18d6f9359e45722c064c97464ec883eb0e0366d33eda61cb19a244bf222679", size = 131019, upload-time = "2026-03-01T22:07:14.903Z" }, + { url = "https://files.pythonhosted.org/packages/19/ff/33009a39d3ccf4b94d7d7880dfe17fb5816c5a4fe0096d9b56abceea9ac7/yarl-1.23.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:2803ed8b21ca47a43da80a6fd1ed3019d30061f7061daa35ac54f63933409412", size = 89894, upload-time = "2026-03-01T22:07:17.372Z" }, + { url = "https://files.pythonhosted.org/packages/0c/f1/dab7ac5e7306fb79c0190766a3c00b4cb8d09a1f390ded68c85a5934faf5/yarl-1.23.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:394906945aa8b19fc14a61cf69743a868bb8c465efe85eee687109cc540b98f4", size = 89979, upload-time = "2026-03-01T22:07:19.361Z" }, + { url = "https://files.pythonhosted.org/packages/aa/b1/08e95f3caee1fad6e65017b9f26c1d79877b502622d60e517de01e72f95d/yarl-1.23.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:71d006bee8397a4a89f469b8deb22469fe7508132d3c17fa6ed871e79832691c", size = 95943, upload-time = "2026-03-01T22:07:21.266Z" }, + { url = "https://files.pythonhosted.org/packages/c0/cc/6409f9018864a6aa186c61175b977131f373f1988e198e031236916e87e4/yarl-1.23.0-cp314-cp314t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:62694e275c93d54f7ccedcfef57d42761b2aad5234b6be1f3e3026cae4001cd4", size = 88786, upload-time = "2026-03-01T22:07:23.129Z" }, + { url = "https://files.pythonhosted.org/packages/76/40/cc22d1d7714b717fde2006fad2ced5efe5580606cb059ae42117542122f3/yarl-1.23.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a31de1613658308efdb21ada98cbc86a97c181aa050ba22a808120bb5be3ab94", size = 101307, upload-time = "2026-03-01T22:07:24.689Z" }, + { url = "https://files.pythonhosted.org/packages/8f/0d/476c38e85ddb4c6ec6b20b815bdd779aa386a013f3d8b85516feee55c8dc/yarl-1.23.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:fb1e8b8d66c278b21d13b0a7ca22c41dd757a7c209c6b12c313e445c31dd3b28", size = 100904, upload-time = "2026-03-01T22:07:26.287Z" }, + { url = "https://files.pythonhosted.org/packages/72/32/0abe4a76d59adf2081dcb0397168553ece4616ada1c54d1c49d8936c74f8/yarl-1.23.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:50f9d8d531dfb767c565f348f33dd5139a6c43f5cbdf3f67da40d54241df93f6", size = 97728, upload-time = "2026-03-01T22:07:27.906Z" }, + { url = "https://files.pythonhosted.org/packages/b7/35/7b30f4810fba112f60f5a43237545867504e15b1c7647a785fbaf588fac2/yarl-1.23.0-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:575aa4405a656e61a540f4a80eaa5260f2a38fff7bfdc4b5f611840d76e9e277", size = 95964, upload-time = "2026-03-01T22:07:30.198Z" }, + { url = "https://files.pythonhosted.org/packages/2d/86/ed7a73ab85ef00e8bb70b0cb5421d8a2a625b81a333941a469a6f4022828/yarl-1.23.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:041b1a4cefacf65840b4e295c6985f334ba83c30607441ae3cf206a0eed1a2e4", size = 95882, upload-time = "2026-03-01T22:07:32.132Z" }, + { url = "https://files.pythonhosted.org/packages/19/90/d56967f61a29d8498efb7afb651e0b2b422a1e9b47b0ab5f4e40a19b699b/yarl-1.23.0-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:d38c1e8231722c4ce40d7593f28d92b5fc72f3e9774fe73d7e800ec32299f63a", size = 90797, upload-time = "2026-03-01T22:07:34.404Z" }, + { url = "https://files.pythonhosted.org/packages/72/00/8b8f76909259f56647adb1011d7ed8b321bcf97e464515c65016a47ecdf0/yarl-1.23.0-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:d53834e23c015ee83a99377db6e5e37d8484f333edb03bd15b4bc312cc7254fb", size = 101023, upload-time = "2026-03-01T22:07:35.953Z" }, + { url = "https://files.pythonhosted.org/packages/ac/e2/cab11b126fb7d440281b7df8e9ddbe4851e70a4dde47a202b6642586b8d9/yarl-1.23.0-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:2e27c8841126e017dd2a054a95771569e6070b9ee1b133366d8b31beb5018a41", size = 96227, upload-time = "2026-03-01T22:07:37.594Z" }, + { url = "https://files.pythonhosted.org/packages/c2/9b/2c893e16bfc50e6b2edf76c1a9eb6cb0c744346197e74c65e99ad8d634d0/yarl-1.23.0-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:76855800ac56f878847a09ce6dba727c93ca2d89c9e9d63002d26b916810b0a2", size = 100302, upload-time = "2026-03-01T22:07:39.334Z" }, + { url = "https://files.pythonhosted.org/packages/28/ec/5498c4e3a6d5f1003beb23405671c2eb9cdbf3067d1c80f15eeafe301010/yarl-1.23.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:e09fd068c2e169a7070d83d3bde728a4d48de0549f975290be3c108c02e499b4", size = 98202, upload-time = "2026-03-01T22:07:41.717Z" }, + { url = "https://files.pythonhosted.org/packages/fe/c3/cd737e2d45e70717907f83e146f6949f20cc23cd4bf7b2688727763aa458/yarl-1.23.0-cp314-cp314t-win32.whl", hash = "sha256:73309162a6a571d4cbd3b6a1dcc703c7311843ae0d1578df6f09be4e98df38d4", size = 90558, upload-time = "2026-03-01T22:07:43.433Z" }, + { url = "https://files.pythonhosted.org/packages/e1/19/3774d162f6732d1cfb0b47b4140a942a35ca82bb19b6db1f80e9e7bdc8f8/yarl-1.23.0-cp314-cp314t-win_amd64.whl", hash = "sha256:4503053d296bc6e4cbd1fad61cf3b6e33b939886c4f249ba7c78b602214fabe2", size = 97610, upload-time = "2026-03-01T22:07:45.773Z" }, + { url = "https://files.pythonhosted.org/packages/51/47/3fa2286c3cb162c71cdb34c4224d5745a1ceceb391b2bd9b19b668a8d724/yarl-1.23.0-cp314-cp314t-win_arm64.whl", hash = "sha256:44bb7bef4ea409384e3f8bc36c063d77ea1b8d4a5b2706956c0d6695f07dcc25", size = 86041, upload-time = "2026-03-01T22:07:49.026Z" }, + { url = "https://files.pythonhosted.org/packages/69/68/c8739671f5699c7dc470580a4f821ef37c32c4cb0b047ce223a7f115757f/yarl-1.23.0-py3-none-any.whl", hash = "sha256:a2df6afe50dea8ae15fa34c9f824a3ee958d785fd5d089063d960bae1daa0a3f", size = 48288, upload-time = "2026-03-01T22:07:51.388Z" }, ] [[package]] name = "zipp" -version = "3.23.0" +version = "3.23.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e3/02/0f2892c661036d50ede074e376733dca2ae7c6eb617489437771209d4180/zipp-3.23.0.tar.gz", hash = "sha256:a07157588a12518c9d4034df3fbbee09c814741a33ff63c05fa29d26a2404166", size = 25547, upload-time = "2025-06-08T17:06:39.4Z" } +sdist = { url = "https://files.pythonhosted.org/packages/30/21/093488dfc7cc8964ded15ab726fad40f25fd3d788fd741cc1c5a17d78ee8/zipp-3.23.1.tar.gz", hash = "sha256:32120e378d32cd9714ad503c1d024619063ec28aad2248dc6672ad13edfa5110", size = 25965, upload-time = "2026-04-13T23:21:46.6Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/2e/54/647ade08bf0db230bfea292f893923872fd20be6ac6f53b2b936ba839d75/zipp-3.23.0-py3-none-any.whl", hash = "sha256:071652d6115ed432f5ce1d34c336c0adfd6a884660d1e9712a256d3d3bd4b14e", size = 10276, upload-time = "2025-06-08T17:06:38.034Z" }, -] - -[[package]] -name = "zope-event" -version = "6.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/46/33/d3eeac228fc14de76615612ee208be2d8a5b5b0fada36bf9b62d6b40600c/zope_event-6.1.tar.gz", hash = "sha256:6052a3e0cb8565d3d4ef1a3a7809336ac519bc4fe38398cb8d466db09adef4f0", size = 18739, upload-time = "2025-11-07T08:05:49.934Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c2/b0/956902e5e1302f8c5d124e219c6bf214e2649f92ad5fce85b05c039a04c9/zope_event-6.1-py3-none-any.whl", hash = "sha256:0ca78b6391b694272b23ec1335c0294cc471065ed10f7f606858fc54566c25a0", size = 6414, upload-time = "2025-11-07T08:05:48.874Z" }, + { url = "https://files.pythonhosted.org/packages/08/8a/0861bec20485572fbddf3dfba2910e38fe249796cb73ecdeb74e07eeb8d3/zipp-3.23.1-py3-none-any.whl", hash = "sha256:0b3596c50a5c700c9cb40ba8d86d9f2cc4807e9bedb06bcdf7fac85633e444dc", size = 10378, upload-time = "2026-04-13T23:21:45.386Z" }, ] [[package]] name = "zope-interface" -version = "8.2" +version = "8.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/86/a4/77daa5ba398996d16bb43fc721599d27d03eae68fe3c799de1963c72e228/zope_interface-8.2.tar.gz", hash = "sha256:afb20c371a601d261b4f6edb53c3c418c249db1a9717b0baafc9a9bb39ba1224", size = 254019, upload-time = "2026-01-09T07:51:07.253Z" } +sdist = { url = "https://files.pythonhosted.org/packages/9f/65/34a6e6e4dfa260c4c55ee02bb2fc53625e126ff0181485286cf0c9d453d6/zope_interface-8.4.tar.gz", hash = "sha256:9dbee7925a23aa6349738892c911019d4095a96cff487b743482073ecbc174a8", size = 257736, upload-time = "2026-04-25T07:22:10.439Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/1a/da/3c89de3917751446728b8898b4d53318bc2f8f6bf8196e150a063c59905e/zope_interface-8.2-cp314-cp314-macosx_10_9_x86_64.whl", hash = "sha256:46c7e4e8cbc698398a67e56ca985d19cb92365b4aafbeb6a712e8c101090f4cb", size = 209223, upload-time = "2026-01-09T08:05:36.449Z" }, - { url = "https://files.pythonhosted.org/packages/00/7f/62d00ec53f0a6e5df0c984781e6f3999ed265129c4c3413df8128d1e0207/zope_interface-8.2-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:a87fc7517f825a97ff4a4ca4c8a950593c59e0f8e7bfe1b6f898a38d5ba9f9cf", size = 209366, upload-time = "2026-01-09T08:05:38.197Z" }, - { url = "https://files.pythonhosted.org/packages/ef/a2/f241986315174be8e00aabecfc2153cf8029c1327cab8ed53a9d979d7e08/zope_interface-8.2-cp314-cp314-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:ccf52f7d44d669203c2096c1a0c2c15d52e36b2e7a9413df50f48392c7d4d080", size = 261037, upload-time = "2026-01-09T08:05:39.568Z" }, - { url = "https://files.pythonhosted.org/packages/02/cc/b321c51d6936ede296a1b8860cf173bee2928357fe1fff7f97234899173f/zope_interface-8.2-cp314-cp314-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:aae807efc7bd26302eb2fea05cd6de7d59269ed6ae23a6de1ee47add6de99b8c", size = 264219, upload-time = "2026-01-09T08:05:41.624Z" }, - { url = "https://files.pythonhosted.org/packages/ab/fb/5f5e7b40a2f4efd873fe173624795ca47eaa22e29051270c981361b45209/zope_interface-8.2-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:05a0e42d6d830f547e114de2e7cd15750dc6c0c78f8138e6c5035e51ddfff37c", size = 264390, upload-time = "2026-01-09T08:05:42.936Z" }, - { url = "https://files.pythonhosted.org/packages/f9/82/3f2bc594370bc3abd58e5f9085d263bf682a222f059ed46275cde0570810/zope_interface-8.2-cp314-cp314-win_amd64.whl", hash = "sha256:561ce42390bee90bae51cf1c012902a8033b2aaefbd0deed81e877562a116d48", size = 212585, upload-time = "2026-01-09T08:05:44.419Z" }, + { url = "https://files.pythonhosted.org/packages/f6/d5/ca60c8b404b303d9490e1417430a5198a77557dbeb17c1cb31616e432318/zope_interface-8.4-cp314-cp314-macosx_10_9_x86_64.whl", hash = "sha256:7cbb887fdbfaacb4c362dbb487033551646e28013ad5ffe72e96eb260003a1a1", size = 212012, upload-time = "2026-04-25T07:28:36.88Z" }, + { url = "https://files.pythonhosted.org/packages/83/64/6bb9f54250c817e24b39e986f173b6cd21ff658bec6c6cc0baad05d761e4/zope_interface-8.4-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:a5638c6be715116d3453e6d099c299c6844d54810de7445ce116424e905ede06", size = 212071, upload-time = "2026-04-25T07:28:38.742Z" }, + { url = "https://files.pythonhosted.org/packages/c6/cf/42851262e102723058019dc7d0b48210b85a935f79ae32ce60ddccc2e8fb/zope_interface-8.4-cp314-cp314-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:b8147b40bfcd53803870a9519e0879ff066aeecc2fcff8295663c1b17fc38dc2", size = 266075, upload-time = "2026-04-25T07:28:41.084Z" }, + { url = "https://files.pythonhosted.org/packages/d2/a7/e48c79b836f6f0a2c219288e2ec343517f90e95c93de5435a8a23918bf20/zope_interface-8.4-cp314-cp314-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:049ba3c7b38cc400ae08e011617635706e0f442e1d075db1b015246fcbf6091e", size = 269127, upload-time = "2026-04-25T07:28:42.868Z" }, + { url = "https://files.pythonhosted.org/packages/6a/40/0e26f24d3a2f34f0de2cfeaab6458a865284d9d1fa317ab78913aa1f7322/zope_interface-8.4-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:9c4ac009c2c8e43283842f80387c4d4b41bcbc293391c3b9ab71532ae1ccc301", size = 269446, upload-time = "2026-04-25T07:28:44.97Z" }, + { url = "https://files.pythonhosted.org/packages/91/d5/20310601450367fc35fa28b0544c98d0347b8cc25eaf106a2c4cc36841e1/zope_interface-8.4-cp314-cp314-win_amd64.whl", hash = "sha256:4713bf651ec36e7eea49d2ace4f0e89bec2b33a339674874b1121f2537edc62a", size = 215199, upload-time = "2026-04-25T07:28:47.146Z" }, + { url = "https://files.pythonhosted.org/packages/5b/00/0d22ce75126e31f81baa5889e2a40aad37c8e34d1220cf8b18d744f2b5d9/zope_interface-8.4-cp314-cp314-win_arm64.whl", hash = "sha256:d934497c4b72d5f528d2b5ebe9b8b5a7004b5877948ebd4ea00c2432fb27178f", size = 213178, upload-time = "2026-04-25T07:28:48.868Z" }, ] [[package]] diff --git a/web/README.md b/web/README.md index 974401184e..dd8322cd83 100644 --- a/web/README.md +++ b/web/README.md @@ -3,6 +3,27 @@ This is the default UI for the authentik server. The documentation is going to be a little sparse for awhile, but at least let's get started. +# Setup + +Install dependencies from the repo root with `make node-install` (or `make install` for the full +Python + web + docs bootstrap). This wraps `npm ci` and explicitly rebuilds the small set of +packages whose install scripts are required for the toolchain to function — currently `esbuild`, +`chromedriver`, `tree-sitter`, and `tree-sitter-json`. + +The repo-root `.npmrc` sets `ignore-scripts=true` to neutralize the dominant npm supply-chain +attack vector. As a side effect, running `npm ci` directly in this directory will install +dependencies but skip those rebuilds, leaving `esbuild` and `chromedriver` in a non-functional +state. If you bypass `make`, run the rebuild step yourself: + +```bash +npm rebuild --ignore-scripts=false --foreground-scripts \ + esbuild chromedriver tree-sitter tree-sitter-json +``` + +New dependencies that ship install scripts must be audited and added to `TRUSTED_INSTALL_SCRIPTS` +in the repo-root `Makefile`. Each entry is arbitrary code that runs at install time, so the list +is intentionally small. + # The Theory of the authentik UI In Peter Naur's 1985 essay [Programming as Theory diff --git a/web/e2e/fixtures/FormFixture.ts b/web/e2e/fixtures/FormFixture.ts index 950150ea71..983f966527 100644 --- a/web/e2e/fixtures/FormFixture.ts +++ b/web/e2e/fixtures/FormFixture.ts @@ -27,6 +27,7 @@ export class FormFixture extends PageFixture { .filter({ hasNot: context.getByRole("presentation"), }) + .and(context.locator(":not(button)")) .or( context.getByRole("textbox", { name: fieldName, @@ -76,6 +77,8 @@ export class FormFixture extends PageFixture { /** * Search for a row containing the given text. + * + * @returns A locator for the row entry matching the query. */ public search = async ( query: string, @@ -191,17 +194,17 @@ export class FormFixture extends PageFixture { // Find the search select input control and activate it. await control.click(); + if (typeof pattern === "string") { + this.fill(control, pattern, parent); + } + const button = this.page // --- .locator(`div[data-managed-for*="${fieldName}"] button`, { hasText: pattern, }); - if (!button) { - throw new Error( - `Unable to find an ak-search-select entry matching ${fieldLabel}:${pattern.toString()}`, - ); - } + await expect(button, `Search select entry (${pattern}) should be visible`).toBeVisible(); await button.click(); await this.page.keyboard.press("Tab"); diff --git a/web/e2e/fixtures/NavigatorFixture.ts b/web/e2e/fixtures/NavigatorFixture.ts index 53d55cd850..645cd71f04 100644 --- a/web/e2e/fixtures/NavigatorFixture.ts +++ b/web/e2e/fixtures/NavigatorFixture.ts @@ -31,12 +31,15 @@ export class NavigatorFixture extends PageFixture { * * @param to The pathname or URL to wait for. */ - public waitForPathname = async (to: string | URL): Promise => { + public waitForPathname = async ( + to: string | URL, + options?: Parameters[1], + ): Promise => { const expectedPathname = typeof to === "string" ? to : to.pathname; this.logger.info(`Waiting for URL to change to ${expectedPathname}`); - await this.page.waitForURL(`**${expectedPathname}**`); + await this.page.waitForURL(`**${expectedPathname}**`, options); this.logger.info(`URL changed to ${this.page.url()}`); }; diff --git a/web/e2e/fixtures/PointerFixture.ts b/web/e2e/fixtures/PointerFixture.ts index d37d1d2e59..18fc117dfa 100644 --- a/web/e2e/fixtures/PointerFixture.ts +++ b/web/e2e/fixtures/PointerFixture.ts @@ -26,7 +26,9 @@ export class PointerFixture extends PageFixture { context: LocatorContext = this.page, ): Promise => { if (typeof optionsOrRole === "string") { - return context.getByRole(optionsOrRole, { name }).first().click(); + const target = context.getByRole(optionsOrRole, { name }).first(); + + return target.click(); } const options = { diff --git a/web/e2e/fixtures/SessionFixture.ts b/web/e2e/fixtures/SessionFixture.ts index afdb8ed376..472a939501 100644 --- a/web/e2e/fixtures/SessionFixture.ts +++ b/web/e2e/fixtures/SessionFixture.ts @@ -1,6 +1,8 @@ import { NavigatorFixture } from "#e2e/fixtures/NavigatorFixture"; import { PageFixture, PageFixtureInit } from "#e2e/fixtures/PageFixture"; +import { expect, Page } from "@playwright/test"; + export const GOOD_USERNAME = "test-admin@goauthentik.io"; export const GOOD_PASSWORD = "test-runner"; @@ -11,6 +13,8 @@ export interface LoginInit { username?: string; password?: string; to?: URL | string; + rememberMe?: boolean; + page?: Page; } export interface SessionFixtureInit extends PageFixtureInit { @@ -36,6 +40,10 @@ export class SessionFixture extends PageFixture { public $passwordStage = this.page.locator("ak-stage-password"); public $passwordField = this.page.getByLabel("Password"); + public $rememberMeCheckbox = this.page.getByRole("checkbox", { + name: "Remember me on this device", + }); + /** * The button to submit the the login flow, * typically redirecting to the authenticated interface. @@ -66,19 +74,45 @@ export class SessionFixture extends PageFixture { /** * Log into the application. */ - public async login({ - username = GOOD_USERNAME, - password = GOOD_PASSWORD, - to = SessionFixture.pathname, - }: LoginInit = {}) { + public async login( + { + username = GOOD_USERNAME, + password = GOOD_PASSWORD, + to = SessionFixture.pathname, + rememberMe, + }: LoginInit = {}, + page = this.page, + ): Promise { this.logger.info("Logging in..."); - const initialURL = new URL(this.page.url()); + const initialURL = new URL(page.url()); if (initialURL.pathname === SessionFixture.pathname) { this.logger.info("Skipping navigation because we're already in a authentication flow"); } else { - await this.page.goto(to.toString()); + await page.goto(to.toString()); + } + + if (typeof rememberMe === "boolean") { + const rememberMeCheckboxVisible = await this.$rememberMeCheckbox.isVisible(); + + if (rememberMeCheckboxVisible) { + if (rememberMe) { + await this.$rememberMeCheckbox.check(); + + await expect( + this.$rememberMeCheckbox, + "Remember me checkbox is checked", + ).toBeChecked(); + } else { + await this.$rememberMeCheckbox.uncheck(); + + await expect( + this.$rememberMeCheckbox, + "Remember me checkbox is unchecked", + ).not.toBeChecked(); + } + } } await this.$usernameField.fill(username); @@ -102,7 +136,7 @@ export class SessionFixture extends PageFixture { //#region Navigation - public async toLoginPage() { - await this.page.goto(SessionFixture.pathname); + public async toLoginPage(page: Page = this.page) { + await page.goto(SessionFixture.pathname); } } diff --git a/web/fonts/RedHat/RedHatDisplayVF-Italic.woff2 b/web/fonts/RedHat/RedHatDisplayVF-Italic.woff2 new file mode 100644 index 0000000000..75ff721c3b Binary files /dev/null and b/web/fonts/RedHat/RedHatDisplayVF-Italic.woff2 differ diff --git a/web/fonts/RedHat/RedHatDisplayVF-ItalicModified.woff2 b/web/fonts/RedHat/RedHatDisplayVF-ItalicModified.woff2 deleted file mode 100644 index e1573606be..0000000000 Binary files a/web/fonts/RedHat/RedHatDisplayVF-ItalicModified.woff2 and /dev/null differ diff --git a/web/fonts/RedHat/RedHatDisplayVF.woff2 b/web/fonts/RedHat/RedHatDisplayVF.woff2 new file mode 100644 index 0000000000..47f7b0fc36 Binary files /dev/null and b/web/fonts/RedHat/RedHatDisplayVF.woff2 differ diff --git a/web/fonts/RedHat/RedHatDisplayVFModified.woff2 b/web/fonts/RedHat/RedHatDisplayVFModified.woff2 deleted file mode 100644 index 4064d34018..0000000000 Binary files a/web/fonts/RedHat/RedHatDisplayVFModified.woff2 and /dev/null differ diff --git a/web/fonts/RedHat/RedHatTextVF-Italic.woff2 b/web/fonts/RedHat/RedHatTextVF-Italic.woff2 new file mode 100644 index 0000000000..2f31a6dd7a Binary files /dev/null and b/web/fonts/RedHat/RedHatTextVF-Italic.woff2 differ diff --git a/web/fonts/RedHat/RedHatTextVF-ItalicModified.woff2 b/web/fonts/RedHat/RedHatTextVF-ItalicModified.woff2 deleted file mode 100644 index 7123e91618..0000000000 Binary files a/web/fonts/RedHat/RedHatTextVF-ItalicModified.woff2 and /dev/null differ diff --git a/web/fonts/RedHat/RedHatTextVF.woff2 b/web/fonts/RedHat/RedHatTextVF.woff2 new file mode 100644 index 0000000000..3a18a5b700 Binary files /dev/null and b/web/fonts/RedHat/RedHatTextVF.woff2 differ diff --git a/web/fonts/RedHat/RedHatTextVFModified.woff2 b/web/fonts/RedHat/RedHatTextVFModified.woff2 deleted file mode 100644 index 8018d069b4..0000000000 Binary files a/web/fonts/RedHat/RedHatTextVFModified.woff2 and /dev/null differ diff --git a/web/fonts/RedHat/faces.css b/web/fonts/RedHat/faces.css index e48033a988..f60fe6f4f4 100644 --- a/web/fonts/RedHat/faces.css +++ b/web/fonts/RedHat/faces.css @@ -1,6 +1,6 @@ @font-face { font-family: "RedHatDisplay"; - src: url("./RedHatDisplayVFModified.woff2") format("woff2-variations"); + src: url("./RedHatDisplayVF.woff2") format("woff2-variations"); font-weight: 300 900; font-style: normal; font-display: fallback; @@ -8,7 +8,7 @@ @font-face { font-family: "RedHatDisplay"; - src: url("./RedHatDisplayVF-ItalicModified.woff2") format("woff2-variations"); + src: url("./RedHatDisplayVF-Italic.woff2") format("woff2-variations"); font-weight: 300 900; font-style: italic; font-display: fallback; @@ -16,7 +16,7 @@ @font-face { font-family: "RedHatText"; - src: url("./RedHatTextVFModified.woff2") format("woff2-variations"); + src: url("./RedHatTextVF.woff2") format("woff2-variations"); font-weight: 400 500; font-style: normal; font-display: fallback; @@ -24,7 +24,7 @@ @font-face { font-family: "RedHatText"; - src: url("./RedHatTextVF-ItalicModified.woff2") format("woff2-variations"); + src: url("./RedHatTextVF-Italic.woff2") format("woff2-variations"); font-weight: 400 500; font-style: italic; font-display: fallback; diff --git a/web/icons/brand.png b/web/icons/brand.png index 0a29cc9700..e323066d6c 100644 Binary files a/web/icons/brand.png and b/web/icons/brand.png differ diff --git a/web/icons/brand.svg b/web/icons/brand.svg index 18f6bd0ffc..9492751bfb 100644 --- a/web/icons/brand.svg +++ b/web/icons/brand.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/web/icons/icon.png b/web/icons/icon.png index 1c8f15af94..8165cae90b 100644 Binary files a/web/icons/icon.png and b/web/icons/icon.png differ diff --git a/web/icons/icon.svg b/web/icons/icon.svg index 0bb8a8bde2..00b685c98b 100644 --- a/web/icons/icon.svg +++ b/web/icons/icon.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/web/icons/icon_christmas.png b/web/icons/icon_christmas.png deleted file mode 100644 index 8c80ebb608..0000000000 Binary files a/web/icons/icon_christmas.png and /dev/null differ diff --git a/web/icons/icon_discord.png b/web/icons/icon_discord.png deleted file mode 100644 index ddfbef1291..0000000000 Binary files a/web/icons/icon_discord.png and /dev/null differ diff --git a/web/icons/icon_left_brand.png b/web/icons/icon_left_brand.png index 8f1e0e190f..b9bd833a32 100644 Binary files a/web/icons/icon_left_brand.png and b/web/icons/icon_left_brand.png differ diff --git a/web/icons/icon_left_brand.svg b/web/icons/icon_left_brand.svg index ef81a6e45b..189501f137 100644 --- a/web/icons/icon_left_brand.svg +++ b/web/icons/icon_left_brand.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/web/icons/icon_pride_lgbt.png b/web/icons/icon_pride_lgbt.png index 1d88e71261..256316c4ee 100644 Binary files a/web/icons/icon_pride_lgbt.png and b/web/icons/icon_pride_lgbt.png differ diff --git a/web/icons/icon_pride_trans.png b/web/icons/icon_pride_trans.png index ee6b8d92a8..4e03817345 100644 Binary files a/web/icons/icon_pride_trans.png and b/web/icons/icon_pride_trans.png differ diff --git a/web/icons/icon_top_brand.png b/web/icons/icon_top_brand.png index cba104b616..3e55ae3399 100644 Binary files a/web/icons/icon_top_brand.png and b/web/icons/icon_top_brand.png differ diff --git a/web/icons/icon_top_brand.svg b/web/icons/icon_top_brand.svg index c839ddab9b..4376998381 100644 --- a/web/icons/icon_top_brand.svg +++ b/web/icons/icon_top_brand.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/web/logger/browser.js b/web/logger/browser.js index bc1da186a3..e11fbe8059 100644 --- a/web/logger/browser.js +++ b/web/logger/browser.js @@ -63,7 +63,7 @@ const LogLevelColors = /** @type {const} */ ({ * Creates a logger with the given prefix. * * @param {string} [prefix] - * @param {...string} args + * @param {...string[]} args * @returns {Logger} * */ diff --git a/web/package-lock.json b/web/package-lock.json index 84aedad94f..6a9fb1f8f2 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -1,12 +1,12 @@ { "name": "@goauthentik/web", - "version": "2026.5.0-rc1", + "version": "2026.8.0-rc1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@goauthentik/web", - "version": "2026.5.0-rc1", + "version": "2026.8.0-rc1", "license": "MIT", "workspaces": [ "./packages/*" @@ -21,14 +21,14 @@ "@codemirror/theme-one-dark": "^6.1.3", "@eslint/js": "^9.39.3", "@floating-ui/dom": "^1.7.6", - "@formatjs/intl-listformat": "^8.3.1", + "@formatjs/intl-listformat": "^8.3.5", "@fortawesome/fontawesome-free": "^7.2.0", - "@goauthentik/api": "^2026.2.0-rc1-1770744803", + "@goauthentik/api": "0.0.0", "@goauthentik/core": "^1.0.0", - "@goauthentik/esbuild-plugin-live-reload": "^1.6.1", + "@goauthentik/esbuild-plugin-live-reload": "^2.0.1", "@goauthentik/eslint-config": "^1.3.0", - "@goauthentik/prettier-config": "^3.4.3", - "@goauthentik/tsconfig": "^1.0.7", + "@goauthentik/prettier-config": "^3.5.0", + "@goauthentik/tsconfig": "^1.0.9", "@hcaptcha/types": "^1.1.0", "@lit/context": "^1.1.6", "@lit/localize": "^0.12.2", @@ -40,24 +40,26 @@ "@open-wc/lit-helpers": "^0.7.0", "@openlayers-elements/core": "^0.4.0", "@openlayers-elements/maps": "^0.4.0", - "@patternfly/elements": "^4.3.1", + "@patternfly/elements": "^4.4.0", "@patternfly/patternfly": "^4.224.2", - "@playwright/test": "^1.58.2", - "@sentry/browser": "^10.45.0", - "@storybook/addon-docs": "^10.3.0", - "@storybook/addon-links": "^10.3.0", - "@storybook/web-components": "^10.3.0", - "@storybook/web-components-vite": "^10.3.0", + "@playwright/test": "^1.59.1", + "@sentry/browser": "^10.51.0", + "@storybook/addon-docs": "^10.3.6", + "@storybook/addon-links": "^10.3.6", + "@storybook/web-components": "^10.3.6", + "@storybook/web-components-vite": "^10.3.6", "@types/codemirror": "^5.60.17", "@types/grecaptcha": "^3.0.9", "@types/guacamole-common-js": "^1.5.5", - "@types/node": "^25.5.0", + "@types/node": "^25.7.0", "@types/react": "^19.2.14", "@types/react-dom": "^19.2.3", - "@typescript-eslint/eslint-plugin": "^8.56.1", - "@typescript-eslint/parser": "^8.56.1", - "@vitest/browser": "^4.1.0", - "@vitest/browser-playwright": "^4.0.15", + "@typescript-eslint/eslint-plugin": "^8.57.2", + "@typescript-eslint/parser": "^8.57.2", + "@typescript-eslint/utils": "^8.57.2", + "@typescript/native-preview": "^7.0.0-dev.20260421.2", + "@vitest/browser": "^4.1.6", + "@vitest/browser-playwright": "^4.1.6", "@webcomponents/webcomponentsjs": "^2.8.0", "base64-js": "^1.5.1", "change-case": "^5.4.4", @@ -65,37 +67,37 @@ "chartjs-adapter-date-fns": "^3.0.0", "codemirror": "^6.0.2", "core-js": "^3.49.0", - "country-flag-icons": "^1.6.15", + "country-flag-icons": "^1.6.17", "date-fns": "^4.1.0", "deepmerge-ts": "^7.1.5", - "dompurify": "^3.3.3", - "esbuild": "^0.27.4", + "dompurify": "^3.4.2", + "esbuild": "^0.28.0", "eslint": "^9.39.3", - "eslint-plugin-lit": "^2.2.1", + "eslint-plugin-lit": "^2.3.1", "eslint-plugin-wc": "^3.1.0", - "fuse.js": "^7.1.0", - "globals": "^17.4.0", + "fuse.js": "^7.3.0", + "globals": "^17.6.0", "guacamole-common-js": "^1.5.0", "hastscript": "^9.0.1", - "knip": "^5.88.0", + "knip": "^6.11.0", "lex": "^2025.11.0", "lit": "^3.3.2", "lit-analyzer": "^2.0.3", "lit-element": "^4.2.2", "lit-html": "^3.3.2", "md-front-matter": "^1.0.4", - "mermaid": "^11.13.0", + "mermaid": "^11.15.0", "node-domexception": "^2025.11.0", "npm-run-all": "^4.1.5", "pino": "^10.3.1", "pino-pretty": "^13.1.2", - "playwright": "^1.58.2", - "prettier": "^3.8.1", + "playwright": "^1.60.0", + "prettier": "^3.8.3", "prettier-plugin-packagejson": "^3.0.2", "pseudolocale": "^2.2.0", "rapidoc": "^9.3.8", - "react": "^19.2.4", - "react-dom": "^19.2.4", + "react": "^19.2.6", + "react-dom": "^19.2.6", "rehype-highlight": "^7.0.2", "rehype-mermaid": "^3.0.0", "rehype-parse": "^9.0.1", @@ -106,31 +108,60 @@ "remark-mdx-frontmatter": "^5.2.0", "storybook": "^10.2.1", "style-mod": "^4.1.3", + "stylelint": "^17.11.0", "trusted-types": "^2.0.0", "ts-pattern": "^5.9.0", "turnstile-types": "^1.2.3", - "type-fest": "^5.4.4", - "typescript": "^5.9.3", - "typescript-eslint": "^8.56.1", + "type-fest": "^5.6.0", + "typescript": "^6.0.3", + "typescript-eslint": "^8.59.3", "unist-util-visit": "^5.1.0", - "vite": "^7.3.1", - "vitest": "^4.0.15", + "vite": "^8.0.12", + "vitest": "^4.1.6", "webcomponent-qr-code": "^1.3.0", "wireit": "^0.14.12", - "yaml": "^2.8.2" + "yaml": "^2.8.4" }, "engines": { "node": ">=24", - "npm": ">=11.6.2" + "npm": ">=11.14.1" }, "optionalDependencies": { - "@esbuild/darwin-arm64": "^0.27.3", - "@esbuild/linux-arm64": "^0.27.3", - "@esbuild/linux-x64": "^0.27.3", + "@esbuild/darwin-arm64": "^0.28.0", + "@esbuild/linux-arm64": "^0.28.0", + "@esbuild/linux-x64": "^0.28.0", + "@goauthentik/prettier-config-dev": "../packages/prettier-config", "@rollup/rollup-darwin-arm64": "^4.57.1", "@rollup/rollup-linux-arm64-gnu": "^4.57.1", - "@rollup/rollup-linux-x64-gnu": "^4.57.1", - "chromedriver": "^146.0.4" + "@rollup/rollup-linux-x64-gnu": "^4.57.1" + } + }, + "../packages/prettier-config": { + "name": "@goauthentik/prettier-config", + "version": "4.0.0", + "license": "MIT", + "optional": true, + "dependencies": { + "format-imports": "^4.0.8" + }, + "devDependencies": { + "@eslint/js": "^9.39.3", + "@goauthentik/eslint-config": "../eslint-config", + "@goauthentik/tsconfig": "../tsconfig", + "@types/node": "^25.7.0", + "eslint": "^9.39.3", + "prettier": "^3.8.3", + "prettier-plugin-packagejson": "^3.0.2", + "typescript": "^6.0.3", + "typescript-eslint": "^8.59.3" + }, + "engines": { + "node": ">=24", + "npm": ">=11.14.1" + }, + "peerDependencies": { + "prettier": "^3.8.3", + "prettier-plugin-packagejson": "^3.0.2" } }, "node_modules/@adobe/css-tools": { @@ -214,15 +245,6 @@ "url": "https://opencollective.com/babel" } }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/@babel/generator": { "version": "7.29.1", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", @@ -255,15 +277,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/@babel/helper-globals": { "version": "7.28.0", "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", @@ -331,22 +344,22 @@ } }, "node_modules/@babel/helpers": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.6.tgz", - "integrity": "sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==", + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.2.tgz", + "integrity": "sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==", "license": "MIT", "dependencies": { "@babel/template": "^7.28.6", - "@babel/types": "^7.28.6" + "@babel/types": "^7.29.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.0.tgz", - "integrity": "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==", + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.2.tgz", + "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==", "license": "MIT", "dependencies": { "@babel/types": "^7.29.0" @@ -359,18 +372,18 @@ } }, "node_modules/@babel/runtime": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.6.tgz", - "integrity": "sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==", + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.2.tgz", + "integrity": "sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==", "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/runtime-corejs3": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.29.0.tgz", - "integrity": "sha512-TgUkdp71C9pIbBcHudc+gXZnihEDOjUAmXO1VO4HHGES7QLZcShR0stfKIxLSNIYx2fqhmJChOjm/wkF8wv4gA==", + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.29.2.tgz", + "integrity": "sha512-Lc94FOD5+0aXhdb0Tdg3RUtqT6yWbI/BbFWvlaSJ3gAb9Ks+99nHRDKADVqC37er4eCB0fHyWT+y+K3QOvJKbw==", "license": "MIT", "dependencies": { "core-js-pure": "^3.48.0" @@ -431,9 +444,9 @@ "license": "MIT" }, "node_modules/@borewit/text-codec": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@borewit/text-codec/-/text-codec-0.2.1.tgz", - "integrity": "sha512-k7vvKPbf7J2fZ5klGRD9AeKfUvojuZIQ3BT5u7Jfv+puwXkUBUT5PVyMDfJZpy30CBDXGMgw7fguK/lpOMBvgw==", + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@borewit/text-codec/-/text-codec-0.2.2.tgz", + "integrity": "sha512-DDaRehssg1aNrH4+2hnj1B7vnUGEjU6OIlyRdkMd0aUdIUvKXrJfXsy8LVtXAy7DRvYVluWbMspsRhz2lcW0mQ==", "license": "MIT", "funding": { "type": "github", @@ -446,32 +459,61 @@ "integrity": "sha512-jigsZK+sMF/cuiB7sERuo9V7N9jx+dhmHHnQyDSVdpZwVutaBu7WvNYqMDLSgFgfB30n452TP3vjDAvFC973mA==", "license": "MIT" }, - "node_modules/@chevrotain/cst-dts-gen": { - "version": "11.1.2", - "resolved": "https://registry.npmjs.org/@chevrotain/cst-dts-gen/-/cst-dts-gen-11.1.2.tgz", - "integrity": "sha512-XTsjvDVB5nDZBQB8o0o/0ozNelQtn2KrUVteIHSlPd2VAV2utEb6JzyCJaJ8tGxACR4RiBNWy5uYUHX2eji88Q==", - "license": "Apache-2.0", + "node_modules/@cacheable/memory": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@cacheable/memory/-/memory-2.0.8.tgz", + "integrity": "sha512-FvEb29x5wVwu/Kf93IWwsOOEuhHh6dYCJF3vcKLzXc0KXIW181AOzv6ceT4ZpBHDvAfG60eqb+ekmrnLHIy+jw==", + "license": "MIT", "dependencies": { - "@chevrotain/gast": "11.1.2", - "@chevrotain/types": "11.1.2", - "lodash-es": "4.17.23" + "@cacheable/utils": "^2.4.0", + "@keyv/bigmap": "^1.3.1", + "hookified": "^1.15.1", + "keyv": "^5.6.0" } }, - "node_modules/@chevrotain/gast": { - "version": "11.1.2", - "resolved": "https://registry.npmjs.org/@chevrotain/gast/-/gast-11.1.2.tgz", - "integrity": "sha512-Z9zfXR5jNZb1Hlsd/p+4XWeUFugrHirq36bKzPWDSIacV+GPSVXdk+ahVWZTwjhNwofAWg/sZg58fyucKSQx5g==", - "license": "Apache-2.0", + "node_modules/@cacheable/memory/node_modules/@keyv/bigmap": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@keyv/bigmap/-/bigmap-1.3.1.tgz", + "integrity": "sha512-WbzE9sdmQtKy8vrNPa9BRnwZh5UF4s1KTmSK0KUVLo3eff5BlQNNWDnFOouNpKfPKDnms9xynJjsMYjMaT/aFQ==", + "license": "MIT", "dependencies": { - "@chevrotain/types": "11.1.2", - "lodash-es": "4.17.23" + "hashery": "^1.4.0", + "hookified": "^1.15.0" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "keyv": "^5.6.0" } }, - "node_modules/@chevrotain/regexp-to-ast": { - "version": "11.1.2", - "resolved": "https://registry.npmjs.org/@chevrotain/regexp-to-ast/-/regexp-to-ast-11.1.2.tgz", - "integrity": "sha512-nMU3Uj8naWer7xpZTYJdxbAs6RIv/dxYzkYU8GSwgUtcAAlzjcPfX1w+RKRcYG8POlzMeayOQ/znfwxEGo5ulw==", - "license": "Apache-2.0" + "node_modules/@cacheable/memory/node_modules/keyv": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.6.0.tgz", + "integrity": "sha512-CYDD3SOtsHtyXeEORYRx2qBtpDJFjRTGXUtmNEMGyzYOKj1TE3tycdlho7kA1Ufx9OYWZzg52QFBGALTirzDSw==", + "license": "MIT", + "dependencies": { + "@keyv/serialize": "^1.1.1" + } + }, + "node_modules/@cacheable/utils": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@cacheable/utils/-/utils-2.4.1.tgz", + "integrity": "sha512-eiFgzCbIneyMlLOmNG4g9xzF7Hv3Mga4LjxjcSC/ues6VYq2+gUbQI8JqNuw/ZM8tJIeIaBGpswAsqV2V7ApgA==", + "license": "MIT", + "dependencies": { + "hashery": "^1.5.1", + "keyv": "^5.6.0" + } + }, + "node_modules/@cacheable/utils/node_modules/keyv": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.6.0.tgz", + "integrity": "sha512-CYDD3SOtsHtyXeEORYRx2qBtpDJFjRTGXUtmNEMGyzYOKj1TE3tycdlho7kA1Ufx9OYWZzg52QFBGALTirzDSw==", + "license": "MIT", + "dependencies": { + "@keyv/serialize": "^1.1.1" + } }, "node_modules/@chevrotain/types": { "version": "11.1.2", @@ -479,16 +521,10 @@ "integrity": "sha512-U+HFai5+zmJCkK86QsaJtoITlboZHBqrVketcO2ROv865xfCMSFpELQoz1GkX5GzME8pTa+3kbKrZHQtI0gdbw==", "license": "Apache-2.0" }, - "node_modules/@chevrotain/utils": { - "version": "11.1.2", - "resolved": "https://registry.npmjs.org/@chevrotain/utils/-/utils-11.1.2.tgz", - "integrity": "sha512-4mudFAQ6H+MqBTfqLmU7G1ZwRzCLfJEooL/fsF6rCX5eePMbGhoy5n4g+G4vlh2muDcsCTJtL+uKbOzWxs5LHA==", - "license": "Apache-2.0" - }, "node_modules/@codemirror/autocomplete": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/@codemirror/autocomplete/-/autocomplete-6.20.0.tgz", - "integrity": "sha512-bOwvTOIJcG5FVo5gUUupiwYh8MioPLQ4UcqbcRf7UQ98X90tCa9E1kZ3Z7tqwpZxYyOvh1YTYbmZE9RTfTp5hg==", + "version": "6.20.1", + "resolved": "https://registry.npmjs.org/@codemirror/autocomplete/-/autocomplete-6.20.1.tgz", + "integrity": "sha512-1cvg3Vz1dSSToCNlJfRA2WSI4ht3K+WplO0UMOgmUYPivCyy2oueZY6Lx7M9wThm7SDUBViRmuT+OG/i8+ON9A==", "license": "MIT", "dependencies": { "@codemirror/language": "^6.0.0", @@ -498,13 +534,13 @@ } }, "node_modules/@codemirror/commands": { - "version": "6.10.2", - "resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-6.10.2.tgz", - "integrity": "sha512-vvX1fsih9HledO1c9zdotZYUZnE4xV0m6i3m25s5DIfXofuprk6cRcLUZvSk3CASUbwjQX21tOGbkY2BH8TpnQ==", + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-6.10.3.tgz", + "integrity": "sha512-JFRiqhKu+bvSkDLI+rUhJwSxQxYb759W5GBezE8Uc8mHLqC9aV/9aTC7yJSqCtB3F00pylrLCwnyS91Ap5ej4Q==", "license": "MIT", "dependencies": { "@codemirror/language": "^6.0.0", - "@codemirror/state": "^6.4.0", + "@codemirror/state": "^6.6.0", "@codemirror/view": "^6.27.0", "@lezer/common": "^1.1.0" } @@ -582,9 +618,9 @@ } }, "node_modules/@codemirror/language": { - "version": "6.12.1", - "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.12.1.tgz", - "integrity": "sha512-Fa6xkSiuGKc8XC8Cn96T+TQHYj4ZZ7RdFmXA3i9xe/3hLHfwPZdM+dqfX0Cp0zQklBKhVD8Yzc8LS45rkqcwpQ==", + "version": "6.12.3", + "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.12.3.tgz", + "integrity": "sha512-QwCZW6Tt1siP37Jet9Tb02Zs81TQt6qQrZR2H+eGMcFsL1zMrk2/b9CLC7/9ieP1fjIUMgviLWMmgiHoJrj+ZA==", "license": "MIT", "dependencies": { "@codemirror/state": "^6.0.0", @@ -605,9 +641,9 @@ } }, "node_modules/@codemirror/lint": { - "version": "6.9.4", - "resolved": "https://registry.npmjs.org/@codemirror/lint/-/lint-6.9.4.tgz", - "integrity": "sha512-ABc9vJ8DEmvOWuH26P3i8FpMWPQkduD9Rvba5iwb6O3hxASgclm3T3krGo8NASXkHCidz6b++LWlzWIUfEPSWw==", + "version": "6.9.5", + "resolved": "https://registry.npmjs.org/@codemirror/lint/-/lint-6.9.5.tgz", + "integrity": "sha512-GElsbU9G7QT9xXhpUg1zWGmftA/7jamh+7+ydKRuT0ORpWS3wOSP0yT1FOlIZa7mIJjpVPipErsyvVqB9cfTFA==", "license": "MIT", "dependencies": { "@codemirror/state": "^6.0.0", @@ -627,9 +663,9 @@ } }, "node_modules/@codemirror/state": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.5.4.tgz", - "integrity": "sha512-8y7xqG/hpB53l25CIoit9/ngxdfoG+fx+V3SHBrinnhOtLvKHRyAJJuHzkWrR4YXXLX8eXBsejgAAxHUOdW1yw==", + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.6.0.tgz", + "integrity": "sha512-4nbvra5R5EtiCzr9BTHiTLc+MLXK2QGiAVYMyi8PkQd3SR+6ixar/Q/01Fa21TBIDOZXgeWV4WppsQolSreAPQ==", "license": "MIT", "dependencies": { "@marijn/find-cluster-break": "^1.0.0" @@ -648,17 +684,172 @@ } }, "node_modules/@codemirror/view": { - "version": "6.39.15", - "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.39.15.tgz", - "integrity": "sha512-aCWjgweIIXLBHh7bY6cACvXuyrZ0xGafjQ2VInjp4RM4gMfscK5uESiNdrH0pE+e1lZr2B4ONGsjchl2KsKZzg==", + "version": "6.40.0", + "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.40.0.tgz", + "integrity": "sha512-WA0zdU7xfF10+5I3HhUUq3kqOx3KjqmtQ9lqZjfK7jtYk4G72YW9rezcSywpaUMCWOMlq+6E0pO1IWg1TNIhtg==", "license": "MIT", "dependencies": { - "@codemirror/state": "^6.5.0", + "@codemirror/state": "^6.6.0", "crelt": "^1.0.6", "style-mod": "^4.1.0", "w3c-keyname": "^2.2.4" } }, + "node_modules/@csstools/css-calc": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-3.2.0.tgz", + "integrity": "sha512-bR9e6o2BDB12jzN/gIbjHa5wLJ4UjD1CB9pM7ehlc0ddk6EBz+yYS1EV2MF55/HUxrHcB/hehAyt5vhsA3hx7w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=20.19.0" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^4.0.0", + "@csstools/css-tokenizer": "^4.0.0" + } + }, + "node_modules/@csstools/css-parser-algorithms": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-4.0.0.tgz", + "integrity": "sha512-+B87qS7fIG3L5h3qwJ/IFbjoVoOe/bpOdh9hAjXbvx0o8ImEmUsGXN0inFOnk2ChCFgqkkGFQ+TpM5rbhkKe4w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=20.19.0" + }, + "peerDependencies": { + "@csstools/css-tokenizer": "^4.0.0" + } + }, + "node_modules/@csstools/css-syntax-patches-for-csstree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@csstools/css-syntax-patches-for-csstree/-/css-syntax-patches-for-csstree-1.1.3.tgz", + "integrity": "sha512-SH60bMfrRCJF3morcdk57WklujF4Jr/EsQUzqkarfHXEFcAR1gg7fS/chAE922Sehgzc1/+Tz5H3Ypa1HiEKrg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "peerDependencies": { + "css-tree": "^3.2.1" + }, + "peerDependenciesMeta": { + "css-tree": { + "optional": true + } + } + }, + "node_modules/@csstools/css-tokenizer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-4.0.0.tgz", + "integrity": "sha512-QxULHAm7cNu72w97JUNCBFODFaXpbDg+dP8b/oWFAZ2MTRppA3U00Y2L1HqaS4J6yBqxwa/Y3nMBaxVKbB/NsA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=20.19.0" + } + }, + "node_modules/@csstools/media-query-list-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-5.0.0.tgz", + "integrity": "sha512-T9lXmZOfnam3eMERPsszjY5NK0jX8RmThmmm99FZ8b7z8yMaFZWKwLWGZuTwdO3ddRY5fy13GmmEYZXB4I98Eg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=20.19.0" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^4.0.0", + "@csstools/css-tokenizer": "^4.0.0" + } + }, + "node_modules/@csstools/selector-resolve-nested": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-resolve-nested/-/selector-resolve-nested-4.0.0.tgz", + "integrity": "sha512-9vAPxmp+Dx3wQBIUwc1v7Mdisw1kbbaGqXUM8QLTgWg7SoPGYtXBsMXvsFs/0Bn5yoFhcktzxNZGNaUt0VjgjA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=20.19.0" + }, + "peerDependencies": { + "postcss-selector-parser": "^7.1.1" + } + }, + "node_modules/@csstools/selector-specificity": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-6.0.0.tgz", + "integrity": "sha512-4sSgl78OtOXEX/2d++8A83zHNTgwCJMaR24FvsYL7Uf/VS8HZk9PTwR51elTbGqMuwH3szLvvOXEaVnqn0Z3zA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=20.19.0" + }, + "peerDependencies": { + "postcss-selector-parser": "^7.1.1" + } + }, "node_modules/@dozerg/condition": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/@dozerg/condition/-/condition-1.0.11.tgz", @@ -706,20 +897,20 @@ } }, "node_modules/@emnapi/core": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.8.1.tgz", - "integrity": "sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.10.0.tgz", + "integrity": "sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==", "license": "MIT", "optional": true, "dependencies": { - "@emnapi/wasi-threads": "1.1.0", + "@emnapi/wasi-threads": "1.2.1", "tslib": "^2.4.0" } }, "node_modules/@emnapi/runtime": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.8.1.tgz", - "integrity": "sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.10.0.tgz", + "integrity": "sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==", "license": "MIT", "optional": true, "dependencies": { @@ -727,9 +918,9 @@ } }, "node_modules/@emnapi/wasi-threads": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz", - "integrity": "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz", + "integrity": "sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==", "license": "MIT", "optional": true, "dependencies": { @@ -737,9 +928,9 @@ } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.4.tgz", - "integrity": "sha512-cQPwL2mp2nSmHHJlCyoXgHGhbEPMrEEU5xhkcy3Hs/O7nGZqEpZ2sUtLaL9MORLtDfRvVl2/3PAuEkYZH0Ty8Q==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.0.tgz", + "integrity": "sha512-lhRUCeuOyJQURhTxl4WkpFTjIsbDayJHih5kZC1giwE+MhIzAb7mEsQMqMf18rHLsrb5qI1tafG20mLxEWcWlA==", "cpu": [ "ppc64" ], @@ -753,9 +944,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.4.tgz", - "integrity": "sha512-X9bUgvxiC8CHAGKYufLIHGXPJWnr0OCdR0anD2e21vdvgCI8lIfqFbnoeOz7lBjdrAGUhqLZLcQo6MLhTO2DKQ==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.0.tgz", + "integrity": "sha512-wqh0ByljabXLKHeWXYLqoJ5jKC4XBaw6Hk08OfMrCRd2nP2ZQ5eleDZC41XHyCNgktBGYMbqnrJKq/K/lzPMSQ==", "cpu": [ "arm" ], @@ -769,9 +960,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.4.tgz", - "integrity": "sha512-gdLscB7v75wRfu7QSm/zg6Rx29VLdy9eTr2t44sfTW7CxwAtQghZ4ZnqHk3/ogz7xao0QAgrkradbBzcqFPasw==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.0.tgz", + "integrity": "sha512-+WzIXQOSaGs33tLEgYPYe/yQHf0WTU0X42Jca3y8NWMbUVhp7rUnw+vAsRC/QiDrdD31IszMrZy+qwPOPjd+rw==", "cpu": [ "arm64" ], @@ -785,9 +976,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.4.tgz", - "integrity": "sha512-PzPFnBNVF292sfpfhiyiXCGSn9HZg5BcAz+ivBuSsl6Rk4ga1oEXAamhOXRFyMcjwr2DVtm40G65N3GLeH1Lvw==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.0.tgz", + "integrity": "sha512-+VJggoaKhk2VNNqVL7f6S189UzShHC/mR9EE8rDdSkdpN0KflSwWY/gWjDrNxxisg8Fp1ZCD9jLMo4m0OUfeUA==", "cpu": [ "x64" ], @@ -801,9 +992,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.4.tgz", - "integrity": "sha512-b7xaGIwdJlht8ZFCvMkpDN6uiSmnxxK56N2GDTMYPr2/gzvfdQN8rTfBsvVKmIVY/X7EM+/hJKEIbbHs9oA4tQ==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.0.tgz", + "integrity": "sha512-0T+A9WZm+bZ84nZBtk1ckYsOvyA3x7e2Acj1KdVfV4/2tdG4fzUp91YHx+GArWLtwqp77pBXVCPn2We7Letr0Q==", "cpu": [ "arm64" ], @@ -817,9 +1008,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.4.tgz", - "integrity": "sha512-sR+OiKLwd15nmCdqpXMnuJ9W2kpy0KigzqScqHI3Hqwr7IXxBp3Yva+yJwoqh7rE8V77tdoheRYataNKL4QrPw==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.0.tgz", + "integrity": "sha512-fyzLm/DLDl/84OCfp2f/XQ4flmORsjU7VKt8HLjvIXChJoFFOIL6pLJPH4Yhd1n1gGFF9mPwtlN5Wf82DZs+LQ==", "cpu": [ "x64" ], @@ -833,9 +1024,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.4.tgz", - "integrity": "sha512-jnfpKe+p79tCnm4GVav68A7tUFeKQwQyLgESwEAUzyxk/TJr4QdGog9sqWNcUbr/bZt/O/HXouspuQDd9JxFSw==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.0.tgz", + "integrity": "sha512-l9GeW5UZBT9k9brBYI+0WDffcRxgHQD8ShN2Ur4xWq/NFzUKm3k5lsH4PdaRgb2w7mI9u61nr2gI2mLI27Nh3Q==", "cpu": [ "arm64" ], @@ -849,9 +1040,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.4.tgz", - "integrity": "sha512-2kb4ceA/CpfUrIcTUl1wrP/9ad9Atrp5J94Lq69w7UwOMolPIGrfLSvAKJp0RTvkPPyn6CIWrNy13kyLikZRZQ==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.0.tgz", + "integrity": "sha512-BXoQai/A0wPO6Es3yFJ7APCiKGc1tdAEOgeTNy3SsB491S3aHn4S4r3e976eUnPdU+NbdtmBuLncYir2tMU9Nw==", "cpu": [ "x64" ], @@ -865,9 +1056,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.4.tgz", - "integrity": "sha512-aBYgcIxX/wd5n2ys0yESGeYMGF+pv6g0DhZr3G1ZG4jMfruU9Tl1i2Z+Wnj9/KjGz1lTLCcorqE2viePZqj4Eg==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.0.tgz", + "integrity": "sha512-CjaaREJagqJp7iTaNQjjidaNbCKYcd4IDkzbwwxtSvjI7NZm79qiHc8HqciMddQ6CKvJT6aBd8lO9kN/ZudLlw==", "cpu": [ "arm" ], @@ -881,9 +1072,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.4.tgz", - "integrity": "sha512-7nQOttdzVGth1iz57kxg9uCz57dxQLHWxopL6mYuYthohPKEK0vU0C3O21CcBK6KDlkYVcnDXY099HcCDXd9dA==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.0.tgz", + "integrity": "sha512-RVyzfb3FWsGA55n6WY0MEIEPURL1FcbhFE6BffZEMEekfCzCIMtB5yyDcFnVbTnwk+CLAgTujmV/Lgvih56W+A==", "cpu": [ "arm64" ], @@ -897,9 +1088,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.4.tgz", - "integrity": "sha512-oPtixtAIzgvzYcKBQM/qZ3R+9TEUd1aNJQu0HhGyqtx6oS7qTpvjheIWBbes4+qu1bNlo2V4cbkISr8q6gRBFA==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.0.tgz", + "integrity": "sha512-KBnSTt1kxl9x70q+ydterVdl+Cn0H18ngRMRCEQfrbqdUuntQQ0LoMZv47uB97NljZFzY6HcfqEZ2SAyIUTQBQ==", "cpu": [ "ia32" ], @@ -913,9 +1104,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.4.tgz", - "integrity": "sha512-8mL/vh8qeCoRcFH2nM8wm5uJP+ZcVYGGayMavi8GmRJjuI3g1v6Z7Ni0JJKAJW+m0EtUuARb6Lmp4hMjzCBWzA==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.0.tgz", + "integrity": "sha512-zpSlUce1mnxzgBADvxKXX5sl8aYQHo2ezvMNI8I0lbblJtp8V4odlm3Yzlj7gPyt3T8ReksE6bK+pT3WD+aJRg==", "cpu": [ "loong64" ], @@ -929,9 +1120,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.4.tgz", - "integrity": "sha512-1RdrWFFiiLIW7LQq9Q2NES+HiD4NyT8Itj9AUeCl0IVCA459WnPhREKgwrpaIfTOe+/2rdntisegiPWn/r/aAw==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.0.tgz", + "integrity": "sha512-2jIfP6mmjkdmeTlsX/9vmdmhBmKADrWqN7zcdtHIeNSCH1SqIoNI63cYsjQR8J+wGa4Y5izRcSHSm8K3QWmk3w==", "cpu": [ "mips64el" ], @@ -945,9 +1136,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.4.tgz", - "integrity": "sha512-tLCwNG47l3sd9lpfyx9LAGEGItCUeRCWeAx6x2Jmbav65nAwoPXfewtAdtbtit/pJFLUWOhpv0FpS6GQAmPrHA==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.0.tgz", + "integrity": "sha512-bc0FE9wWeC0WBm49IQMPSPILRocGTQt3j5KPCA8os6VprfuJ7KD+5PzESSrJ6GmPIPJK965ZJHTUlSA6GNYEhg==", "cpu": [ "ppc64" ], @@ -961,9 +1152,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.4.tgz", - "integrity": "sha512-BnASypppbUWyqjd1KIpU4AUBiIhVr6YlHx/cnPgqEkNoVOhHg+YiSVxM1RLfiy4t9cAulbRGTNCKOcqHrEQLIw==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.0.tgz", + "integrity": "sha512-SQPZOwoTTT/HXFXQJG/vBX8sOFagGqvZyXcgLA3NhIqcBv1BJU1d46c0rGcrij2B56Z2rNiSLaZOYW5cUk7yLQ==", "cpu": [ "riscv64" ], @@ -977,9 +1168,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.4.tgz", - "integrity": "sha512-+eUqgb/Z7vxVLezG8bVB9SfBie89gMueS+I0xYh2tJdw3vqA/0ImZJ2ROeWwVJN59ihBeZ7Tu92dF/5dy5FttA==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.0.tgz", + "integrity": "sha512-SCfR0HN8CEEjnYnySJTd2cw0k9OHB/YFzt5zgJEwa+wL/T/raGWYMBqwDNAC6dqFKmJYZoQBRfHjgwLHGSrn3Q==", "cpu": [ "s390x" ], @@ -993,9 +1184,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.4.tgz", - "integrity": "sha512-S5qOXrKV8BQEzJPVxAwnryi2+Iq5pB40gTEIT69BQONqR7JH1EPIcQ/Uiv9mCnn05jff9umq/5nqzxlqTOg9NA==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.0.tgz", + "integrity": "sha512-us0dSb9iFxIi8srnpl931Nvs65it/Jd2a2K3qs7fz2WfGPHqzfzZTfec7oxZJRNPXPnNYZtanmRc4AL/JwVzHQ==", "cpu": [ "x64" ], @@ -1009,9 +1200,9 @@ } }, "node_modules/@esbuild/netbsd-arm64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.4.tgz", - "integrity": "sha512-xHT8X4sb0GS8qTqiwzHqpY00C95DPAq7nAwX35Ie/s+LO9830hrMd3oX0ZMKLvy7vsonee73x0lmcdOVXFzd6Q==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.0.tgz", + "integrity": "sha512-CR/RYotgtCKwtftMwJlUU7xCVNg3lMYZ0RzTmAHSfLCXw3NtZtNpswLEj/Kkf6kEL3Gw+BpOekRX0BYCtklhUw==", "cpu": [ "arm64" ], @@ -1025,9 +1216,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.4.tgz", - "integrity": "sha512-RugOvOdXfdyi5Tyv40kgQnI0byv66BFgAqjdgtAKqHoZTbTF2QqfQrFwa7cHEORJf6X2ht+l9ABLMP0dnKYsgg==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.0.tgz", + "integrity": "sha512-nU1yhmYutL+fQ71Kxnhg8uEOdC0pwEW9entHykTgEbna2pw2dkbFSMeqjjyHZoCmt8SBkOSvV+yNmm94aUrrqw==", "cpu": [ "x64" ], @@ -1041,9 +1232,9 @@ } }, "node_modules/@esbuild/openbsd-arm64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.4.tgz", - "integrity": "sha512-2MyL3IAaTX+1/qP0O1SwskwcwCoOI4kV2IBX1xYnDDqthmq5ArrW94qSIKCAuRraMgPOmG0RDTA74mzYNQA9ow==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.0.tgz", + "integrity": "sha512-cXb5vApOsRsxsEl4mcZ1XY3D4DzcoMxR/nnc4IyqYs0rTI8ZKmW6kyyg+11Z8yvgMfAEldKzP7AdP64HnSC/6g==", "cpu": [ "arm64" ], @@ -1057,9 +1248,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.4.tgz", - "integrity": "sha512-u8fg/jQ5aQDfsnIV6+KwLOf1CmJnfu1ShpwqdwC0uA7ZPwFws55Ngc12vBdeUdnuWoQYx/SOQLGDcdlfXhYmXQ==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.0.tgz", + "integrity": "sha512-8wZM2qqtv9UP3mzy7HiGYNH/zjTA355mpeuA+859TyR+e+Tc08IHYpLJuMsfpDJwoLo1ikIJI8jC3GFjnRClzA==", "cpu": [ "x64" ], @@ -1073,9 +1264,9 @@ } }, "node_modules/@esbuild/openharmony-arm64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.4.tgz", - "integrity": "sha512-JkTZrl6VbyO8lDQO3yv26nNr2RM2yZzNrNHEsj9bm6dOwwu9OYN28CjzZkH57bh4w0I2F7IodpQvUAEd1mbWXg==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.0.tgz", + "integrity": "sha512-FLGfyizszcef5C3YtoyQDACyg95+dndv79i2EekILBofh5wpCa1KuBqOWKrEHZg3zrL3t5ouE5jgr94vA+Wb2w==", "cpu": [ "arm64" ], @@ -1089,9 +1280,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.4.tgz", - "integrity": "sha512-/gOzgaewZJfeJTlsWhvUEmUG4tWEY2Spp5M20INYRg2ZKl9QPO3QEEgPeRtLjEWSW8FilRNacPOg8R1uaYkA6g==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.0.tgz", + "integrity": "sha512-1ZgjUoEdHZZl/YlV76TSCz9Hqj9h9YmMGAgAPYd+q4SicWNX3G5GCyx9uhQWSLcbvPW8Ni7lj4gDa1T40akdlw==", "cpu": [ "x64" ], @@ -1105,9 +1296,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.4.tgz", - "integrity": "sha512-Z9SExBg2y32smoDQdf1HRwHRt6vAHLXcxD2uGgO/v2jK7Y718Ix4ndsbNMU/+1Qiem9OiOdaqitioZwxivhXYg==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.0.tgz", + "integrity": "sha512-Q9StnDmQ/enxnpxCCLSg0oo4+34B9TdXpuyPeTedN/6+iXBJ4J+zwfQI28u/Jl40nOYAxGoNi7mFP40RUtkmUA==", "cpu": [ "arm64" ], @@ -1121,9 +1312,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.4.tgz", - "integrity": "sha512-DAyGLS0Jz5G5iixEbMHi5KdiApqHBWMGzTtMiJ72ZOLhbu/bzxgAe8Ue8CTS3n3HbIUHQz/L51yMdGMeoxXNJw==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.0.tgz", + "integrity": "sha512-zF3ag/gfiCe6U2iczcRzSYJKH1DCI+ByzSENHlM2FcDbEeo5Zd2C86Aq0tKUYAJJ1obRP84ymxIAksZUcdztHA==", "cpu": [ "ia32" ], @@ -1137,9 +1328,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.4.tgz", - "integrity": "sha512-+knoa0BDoeXgkNvvV1vvbZX4+hizelrkwmGJBdT17t8FNPwG2lKemmuMZlmaNQ3ws3DKKCxpb4zRZEIp3UxFCg==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.0.tgz", + "integrity": "sha512-pEl1bO9mfAmIC+tW5btTmrKaujg3zGtUmWNdCw/xs70FBjwAL3o9OEKNHvNmnyylD6ubxUERiEhdsL0xBQ9efw==", "cpu": [ "x64" ], @@ -1170,6 +1361,18 @@ "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/@eslint-community/regexpp": { "version": "4.12.2", "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", @@ -1180,47 +1383,19 @@ } }, "node_modules/@eslint/config-array": { - "version": "0.21.1", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.1.tgz", - "integrity": "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==", + "version": "0.21.2", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.2.tgz", + "integrity": "sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw==", "license": "Apache-2.0", "dependencies": { "@eslint/object-schema": "^2.1.7", "debug": "^4.3.1", - "minimatch": "^3.1.2" + "minimatch": "^3.1.5" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@eslint/config-array/node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "license": "MIT" - }, - "node_modules/@eslint/config-array/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/@eslint/config-array/node_modules/minimatch": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.4.tgz", - "integrity": "sha512-twmL+S8+7yIsE9wsqgzU3E8/LumN3M3QELrBZ20OdmQ9jB2JvW5oZtBEmft84k/Gs5CG9mqtWc6Y9vW+JEzGxw==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/@eslint/config-helpers": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz", @@ -1246,9 +1421,9 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.4.tgz", - "integrity": "sha512-4h4MVF8pmBsncB60r0wSJiIeUKTSD4m7FmTFThG8RHlsg9ajqckLm9OraguFGZE4vVdpiI1Q4+hFnisopmG6gQ==", + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.5.tgz", + "integrity": "sha512-4IlJx0X0qftVsN5E+/vGujTRIFtwuLbNsVUe7TO6zYPDR1O6nFwvwhIKEKSrl6dZchmYBITazxKoUYOjdtjlRg==", "license": "MIT", "dependencies": { "ajv": "^6.14.0", @@ -1258,7 +1433,7 @@ "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.1", - "minimatch": "^3.1.3", + "minimatch": "^3.1.5", "strip-json-comments": "^3.1.1" }, "engines": { @@ -1268,22 +1443,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/@eslint/eslintrc/node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "license": "MIT" - }, - "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, "node_modules/@eslint/eslintrc/node_modules/globals": { "version": "14.0.0", "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", @@ -1296,31 +1455,10 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@eslint/eslintrc/node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/@eslint/eslintrc/node_modules/minimatch": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.4.tgz", - "integrity": "sha512-twmL+S8+7yIsE9wsqgzU3E8/LumN3M3QELrBZ20OdmQ9jB2JvW5oZtBEmft84k/Gs5CG9mqtWc6Y9vW+JEzGxw==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/@eslint/js": { - "version": "9.39.3", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.3.tgz", - "integrity": "sha512-1B1VkCq6FuUNlQvlBYb+1jDu/gV297TIs/OeiaSR9l1H27SVW55ONE1e1Vp16NqP683+xEGzxYtv4XCiDPaQiw==", + "version": "9.39.4", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.4.tgz", + "integrity": "sha512-nE7DEIchvtiFTwBw4Lfbu59PG+kCofhjsKaCWzxTpt4lfRjRMqG6uMBzKXuEcyXhOHoUp9riAm7/aWYGhXZ9cw==", "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -1376,46 +1514,28 @@ "integrity": "sha512-RiB/yIh78pcIxl6lLMG0CgBXAZ2Y0eVHqMPYugu+9U0AeT6YBeiJpf7lbdJNIugFP5SIjwNRgo4DhR1Qxi26Gg==", "license": "MIT" }, - "node_modules/@formatjs/bigdecimal": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@formatjs/bigdecimal/-/bigdecimal-0.2.0.tgz", - "integrity": "sha512-GeaxHZbUoYvHL9tC5eltHLs+1zU70aPw0s7LwqgktIzF5oMhNY4o4deEtusJMsq7WFJF3Ye2zQEzdG8beVk73w==", - "license": "MIT" - }, - "node_modules/@formatjs/ecma402-abstract": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-3.2.0.tgz", - "integrity": "sha512-dHnqHgBo6GXYGRsepaE1wmsC2etaivOWd5VaJstZd+HI2zR3DCUjbDVZRtoPGkkXZmyHvBwrdEUuqfvzhF/DtQ==", - "license": "MIT", - "dependencies": { - "@formatjs/bigdecimal": "0.2.0", - "@formatjs/fast-memoize": "3.1.1", - "@formatjs/intl-localematcher": "0.8.2" - } - }, "node_modules/@formatjs/fast-memoize": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-3.1.1.tgz", - "integrity": "sha512-CbNbf+tlJn1baRnPkNePnBqTLxGliG6DDgNa/UtV66abwIjwsliPMOt0172tzxABYzSuxZBZfcp//qI8AvBWPg==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-3.1.4.tgz", + "integrity": "sha512-Lbke1aOrsygKKR09Ux0NrZgbTqpDmiwXOgzyDOJ8Owr1zd5qOKTauf62hH+Seeku3ju77rHWH9I5SfX2CN0vuA==", "license": "MIT" }, "node_modules/@formatjs/intl-listformat": { - "version": "8.3.1", - "resolved": "https://registry.npmjs.org/@formatjs/intl-listformat/-/intl-listformat-8.3.1.tgz", - "integrity": "sha512-82pPPyPOzkFMBbUmuseMwckFtpT+meZSxZSaxyD/3wRo5DZEq08hBUe1uhzNmukI8hwJFH5mIMBwSIAuse0RDQ==", + "version": "8.3.5", + "resolved": "https://registry.npmjs.org/@formatjs/intl-listformat/-/intl-listformat-8.3.5.tgz", + "integrity": "sha512-ibv9RLqPNlazmT2tXeA3WbZarc083JxY6OKaE6UYiJYrDTmDNR68CvHjpbqExEEWxH22u6tlxZl91ehWKXMbaQ==", "license": "MIT", "dependencies": { - "@formatjs/ecma402-abstract": "3.2.0", - "@formatjs/intl-localematcher": "0.8.2" + "@formatjs/intl-localematcher": "0.8.6" } }, "node_modules/@formatjs/intl-localematcher": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.8.2.tgz", - "integrity": "sha512-q05KMYGJLyqFNFtIb8NhWLF5X3aK/k0wYt7dnRFuy6aLQL+vUwQ1cg5cO4qawEiINybeCPXAWlprY2mSBjSXAQ==", + "version": "0.8.6", + "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.8.6.tgz", + "integrity": "sha512-AZRgUxj0q93lyF7Z5lFS85bLINXuBLX4R3tCKicO6fSWo6cvh9GQfoR3B1WlsqQwefZ1QORTivhInx7gM6HUzQ==", "license": "MIT", "dependencies": { - "@formatjs/fast-memoize": "3.1.1" + "@formatjs/fast-memoize": "3.1.4" } }, "node_modules/@fortawesome/fontawesome-free": { @@ -1428,18 +1548,17 @@ } }, "node_modules/@goauthentik/api": { - "version": "2026.2.0-rc4-1771862880", - "resolved": "https://registry.npmjs.org/@goauthentik/api/-/api-2026.2.0-rc4-1771862880.tgz", - "integrity": "sha512-w2wxgePjhT8rJ9MIJlSlyfasnvsNxBAElwAPnY1cerPnXEgapcccbG5/Nf3fVukpowA9m0jJRFMp5U2rOporIQ==" + "resolved": "packages/client-ts", + "link": true }, "node_modules/@goauthentik/core": { "resolved": "packages/core", "link": true }, "node_modules/@goauthentik/esbuild-plugin-live-reload": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@goauthentik/esbuild-plugin-live-reload/-/esbuild-plugin-live-reload-1.6.1.tgz", - "integrity": "sha512-JTml8rIVMEkepbQFLlvEvb0ms+C0OlOJLLiIvAYkPrXQZ88xa9rKlj9pQj+Y8cf0QRARNZ0YEBTxjtoxZ7lLqQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@goauthentik/esbuild-plugin-live-reload/-/esbuild-plugin-live-reload-2.0.1.tgz", + "integrity": "sha512-CLEZPZCXb1kU9m+/tMKThPC+nf9MRvlJ0LwwF8Rn+CWLX+DBkfTkIZnN0Lk1XX/oIfzzAitZXJxdEUs1hHv+AQ==", "license": "MIT", "dependencies": { "find-free-ports": "^3.1.1" @@ -1449,7 +1568,13 @@ "npm": ">=11.10.1" }, "peerDependencies": { - "esbuild": "^0.27.3" + "@goauthentik/logger-js": "^1.0.1", + "esbuild": "^0.27.4" + }, + "peerDependenciesMeta": { + "@goauthentik/logger-js": { + "optional": true + } } }, "node_modules/@goauthentik/eslint-config": { @@ -1485,9 +1610,9 @@ } }, "node_modules/@goauthentik/prettier-config": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/@goauthentik/prettier-config/-/prettier-config-3.4.3.tgz", - "integrity": "sha512-yDfEZQy+vpP6lDKsA84rs4ye+M19TXNvTBZiTEbTj1xANnMjZoV92UtCnTUkW8DywuPkKQNmKZIEjhc7jExnTw==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/@goauthentik/prettier-config/-/prettier-config-3.5.0.tgz", + "integrity": "sha512-4GZ7FuZ7/B0gfDwr/wLuqnLG8BKhPOtchm/I3i2fISkXjrD85koHL757OlP8fvFIf7x6qo4RnrC8jbUHD3Mekg==", "license": "MIT", "dependencies": { "format-imports": "^4.0.8" @@ -1498,13 +1623,17 @@ }, "peerDependencies": { "prettier": "^3.8.1", - "prettier-plugin-packagejson": "^3.0.0" + "prettier-plugin-packagejson": "^3.0.2" } }, + "node_modules/@goauthentik/prettier-config-dev": { + "resolved": "../packages/prettier-config", + "link": true + }, "node_modules/@goauthentik/tsconfig": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@goauthentik/tsconfig/-/tsconfig-1.0.7.tgz", - "integrity": "sha512-ftuK337VmEqC0/HvpzYsZm/IK9wUFx0uM1oQ9YAzBJ0nYKZ213RcJA9Q1bZfNf3B/jSMOxSSqF+rE2YdQdMV3Q==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@goauthentik/tsconfig/-/tsconfig-1.0.9.tgz", + "integrity": "sha512-NxEtY6A4c/3hUCLt2YuZ1lsnTPnAvWcDXRgEQ2kotsysG6aL2PIJQZAUr4EK65aADzQenQIeLvkjN/xMQ4Dz8Q==", "license": "MIT", "engines": { "node": ">=24", @@ -1631,6 +1760,12 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/@keyv/serialize": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@keyv/serialize/-/serialize-1.1.1.tgz", + "integrity": "sha512-dXn3FZhPv0US+7dtJsIi2R+c7qWYiReoEh5zUntWCf4oSpMNib8FDhSoed6m3QyZdx5hK7iLFkYk3rNxwt8vTA==", + "license": "MIT" + }, "node_modules/@kurkle/color": { "version": "0.3.4", "resolved": "https://registry.npmjs.org/@kurkle/color/-/color-0.3.4.tgz", @@ -1644,9 +1779,9 @@ "license": "MIT" }, "node_modules/@lezer/css": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@lezer/css/-/css-1.3.1.tgz", - "integrity": "sha512-PYAKeUVBo3HFThruRyp/iK91SwiZJnzXh8QzkQlwijB5y+N5iB28+iLk78o2zmKqqV0uolNhCwFqB8LA7b0Svg==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@lezer/css/-/css-1.3.3.tgz", + "integrity": "sha512-RzBo8r+/6QJeow7aPHIpGVIH59xTcJXp399820gZoMo9noQDRVpJLheIBUicYwKcsbOYoBRoLZlf2720dG/4Tg==", "license": "MIT", "dependencies": { "@lezer/common": "^1.2.0", @@ -1762,6 +1897,19 @@ "lit-localize": "bin/lit-localize.js" } }, + "node_modules/@lit/localize-tools/node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, "node_modules/@lit/reactive-element": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-2.1.2.tgz", @@ -1883,12 +2031,12 @@ } }, "node_modules/@mermaid-js/parser": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@mermaid-js/parser/-/parser-1.0.1.tgz", - "integrity": "sha512-opmV19kN1JsK0T6HhhokHpcVkqKpF+x2pPDKKM2ThHtZAB5F4PROopk0amuVYK5qMrIA4erzpNm8gmPNJgMDxQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@mermaid-js/parser/-/parser-1.1.1.tgz", + "integrity": "sha512-VuHdsYMK1bT6X2JbcAaWAhugTRvRBRyuZgd+c22swUeI9g/ntaxF7CY7dYarhZovofCbUNO0G7JesfmNtjYOCw==", "license": "MIT", "dependencies": { - "langium": "^4.0.0" + "@chevrotain/types": "~11.1.1" } }, "node_modules/@mrmarble/djangoql-completion": { @@ -2207,19 +2355,21 @@ } }, "node_modules/@napi-rs/wasm-runtime": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.1.tgz", - "integrity": "sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.4.tgz", + "integrity": "sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==", "license": "MIT", "optional": true, "dependencies": { - "@emnapi/core": "^1.7.1", - "@emnapi/runtime": "^1.7.1", "@tybys/wasm-util": "^0.10.1" }, "funding": { "type": "github", "url": "https://github.com/sponsors/Brooooooklyn" + }, + "peerDependencies": { + "@emnapi/core": "^1.7.1", + "@emnapi/runtime": "^1.7.1" } }, "node_modules/@nodelib/fs.scandir": { @@ -2287,6 +2437,337 @@ "ol": "^7.5.0" } }, + "node_modules/@oxc-parser/binding-android-arm-eabi": { + "version": "0.128.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-android-arm-eabi/-/binding-android-arm-eabi-0.128.0.tgz", + "integrity": "sha512-aca6ZvzmCBUGOANQRiRQRZuRKYI3ENhcit6GisnknOOmcezfQc7xJ4dxlPU7MV7mOvrC7RNR1u3LAD7xyaiCxA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-android-arm64": { + "version": "0.128.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-android-arm64/-/binding-android-arm64-0.128.0.tgz", + "integrity": "sha512-BbeDmuohoJ7Rz/it5wnkj69i/OsCPS3Z51nLEzwO/Y6YshtC4JU+15oNwhY8v4LRKRYclRc7ggOikwrsJ/eOEQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-darwin-arm64": { + "version": "0.128.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-darwin-arm64/-/binding-darwin-arm64-0.128.0.tgz", + "integrity": "sha512-tRUHPt80417QmvNpoSslJT1VY8NUbWdrWR+L14Zn+RbOTcaqB8E6PYE/ZGN8jjWBzqporiA/H4MfO50ew/NCNA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-darwin-x64": { + "version": "0.128.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-darwin-x64/-/binding-darwin-x64-0.128.0.tgz", + "integrity": "sha512-rWI2Hb1Nt3U/vKsjyNvZzDC8i/l144U20DKjhzaTmwIhIiSRGeroPWWiImwypmKLqrw8GuIixbWJkpGWLbkzrQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-freebsd-x64": { + "version": "0.128.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-freebsd-x64/-/binding-freebsd-x64-0.128.0.tgz", + "integrity": "sha512-hhpdVMaNCLgQxjgNPeeFzSeJMmZPc5lKfv0NGSI3egZq9EdnEGqeC8JsYsQjK7PoQgbvZ17xlj0SO5ziH5Obkg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-linux-arm-gnueabihf": { + "version": "0.128.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-0.128.0.tgz", + "integrity": "sha512-093zNw0zZ/e/obML+rhlSdmnzR0mVZluPcAkxunEc5E3F0yBVsFn24Y1ILfsEte11Ud041qn/gp2OJ1jxNqUng==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-linux-arm-musleabihf": { + "version": "0.128.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-0.128.0.tgz", + "integrity": "sha512-fq7DmKmfC+dvD97IXrgbph6Jzwe0EDu+PYMofmzZ6fv5X1k9vtaqLpDGMuICO9MmUnyKAQmVl+wIv2RNy4Dz8g==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-linux-arm64-gnu": { + "version": "0.128.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-0.128.0.tgz", + "integrity": "sha512-Xvm48jJah8TlIrURIjNOP/gNiGe6aKvCB+r06VliflFo8Kq7VOLE8PxtgShJzZIqubrgdMdYfvuPPozn7F6MbQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-linux-arm64-musl": { + "version": "0.128.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-arm64-musl/-/binding-linux-arm64-musl-0.128.0.tgz", + "integrity": "sha512-M7iwBGmYJTx+pKOYFjI0buop4gJvlmcVzFGaXPt21DKpQkbQZG1f63Yg7LloIYT/t9yLxCw0Lhfx/RFlAlMSjA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-linux-ppc64-gnu": { + "version": "0.128.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-0.128.0.tgz", + "integrity": "sha512-21LGNIZb1Pcfk5/EGsqabrxv4yqQOWis1407JJrClS7XpFCrbvr74YAB1V+m54cYbwvO6UWwQqS4WecxiyfCRg==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-linux-riscv64-gnu": { + "version": "0.128.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-0.128.0.tgz", + "integrity": "sha512-gyHjOTFpg9bTTYjxPmQirvufb89+VdZwVfcMtAUyPr6F5H8ZswvCQshK4qOW+Q+2Xyb33hduRgY/eFHJQjU/vQ==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-linux-riscv64-musl": { + "version": "0.128.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-0.128.0.tgz", + "integrity": "sha512-X6Q2oKUrP5GyDd2xniuEBLk6aFQCZ97W2+aVXGgJXdjx5t4/oFuA9ri0wLOUrBIX+qdSuK581snMBio4z910eA==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-linux-s390x-gnu": { + "version": "0.128.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-0.128.0.tgz", + "integrity": "sha512-BdzTmqxfxoYkpgokoLaSnOX6T+R3/goL42klre2tnG+kHbG2TXS0VN+P5BPofH1axdKOHy5ei4ENZrjmCOt2lA==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-linux-x64-gnu": { + "version": "0.128.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-x64-gnu/-/binding-linux-x64-gnu-0.128.0.tgz", + "integrity": "sha512-OO1nW2Q7sSYYvJZpDHdvyFSdRaVcQqRijZSSmWVMqFxPYy8cEF45zJ9fcdIYuzIT3jYq6YRhEFm/VMWNWhE22Q==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-linux-x64-musl": { + "version": "0.128.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-x64-musl/-/binding-linux-x64-musl-0.128.0.tgz", + "integrity": "sha512-4NehAe404MRdoZVS9DW8C5XbJwbXIc/KfVlYdpi5vE4081zc9Y0YzKVqyOYj/Puye7/Do+ohaONBFWlEHYl9hw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-openharmony-arm64": { + "version": "0.128.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-openharmony-arm64/-/binding-openharmony-arm64-0.128.0.tgz", + "integrity": "sha512-kVbqgW9xLL8bh8oc7aYOJilRKXE5G33+tE0jan+duo/9OriaFRpijcCwT2waWs2oqYROYq0GlE7/p3ywoshVeg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-wasm32-wasi": { + "version": "0.128.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-wasm32-wasi/-/binding-wasm32-wasi-0.128.0.tgz", + "integrity": "sha512-L38ojghJYHmgiz6fJd7jwLB/ESDBpB02NdFxh+smqVM6P2anCEvHn0jhaSrt5eVNR1Ak8+moOeftUlofeyvniA==", + "cpu": [ + "wasm32" + ], + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "1.10.0", + "@emnapi/runtime": "1.10.0", + "@napi-rs/wasm-runtime": "^1.1.4" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-win32-arm64-msvc": { + "version": "0.128.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-0.128.0.tgz", + "integrity": "sha512-xgvO35GyHBtjlQ5AEpaYr7Rll1rvY7zqIhT6ty8E3ezBW2J1SFLjIDEvI/tcgDg6oaseDAqVcM+jU1HuCekgZw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-win32-ia32-msvc": { + "version": "0.128.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-0.128.0.tgz", + "integrity": "sha512-OY+3eM2SN72prHKRB22mPz8o5A/7dJ+f5DFLBVvggyZhEaNDAH9IB+ElMjmOkOIwf5MDCUAowCK7pAncNxzpBA==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-win32-x64-msvc": { + "version": "0.128.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-win32-x64-msvc/-/binding-win32-x64-msvc-0.128.0.tgz", + "integrity": "sha512-NE9ny+cPUCCObXa0IKLfj0tCdPd7pe/dz9ZpkxpUOymB3miNeMPybdlYYTBSGJUalMWeBM85/4JcCErCNTqOXw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-project/types": { + "version": "0.128.0", + "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.128.0.tgz", + "integrity": "sha512-huv1Y/LzBJkBVHt3OlC7u0zHBW9qXf1FdD7sGmc1rXc2P1mTwHssYv7jyGx5KAACSCH+9B3Bhn6Z9luHRvf7pQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/Boshen" + } + }, "node_modules/@oxc-resolver/binding-android-arm-eabi": { "version": "11.19.1", "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-android-arm-eabi/-/binding-android-arm-eabi-11.19.1.tgz", @@ -2560,14 +3041,14 @@ } }, "node_modules/@patternfly/elements": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@patternfly/elements/-/elements-4.3.1.tgz", - "integrity": "sha512-MRVwxcam+ACyy+0Xy5igPr+LcSVRbX422NGPE4I7WRuwAEhRBA3BayyLi8mNVKXpLLZbk8EtJ17kM30PcMziMw==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@patternfly/elements/-/elements-4.4.0.tgz", + "integrity": "sha512-ShLDYMYEWdhmYDd1XUVj41IfwEmWEXXvHEscVTuga1M9KWMXRJQgf+9jio/2Od5dNh4PAshyH0f19fHFU9EAsA==", "license": "MIT", "dependencies": { "@lit/context": "^1.1.6", "@patternfly/icons": "^1.0.3", - "@patternfly/pfe-core": "^5.0.6", + "@patternfly/pfe-core": "^5.0.8", "lit": "^3.3.2", "tslib": "^2.8.1" } @@ -2585,9 +3066,9 @@ "license": "MIT" }, "node_modules/@patternfly/pfe-core": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/@patternfly/pfe-core/-/pfe-core-5.0.6.tgz", - "integrity": "sha512-95j0BDltTTVQzOSIqpiZXQYzm1kuwqpHeB/7/QOjmZP3wtvYcaccnE/2dldKF68rn0Rwgk9xbgz7MR8/CnKFgQ==", + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/@patternfly/pfe-core/-/pfe-core-5.0.8.tgz", + "integrity": "sha512-gH+gC8+lwLQ5OxcQsmJOSHNHqQgoa+VboM4LlI63N+jnDPmB7E9EZ7VzJc8C4qTPbCIfQp+o1ObjmKyNw/b9TA==", "license": "MIT", "dependencies": { "@lit/context": "^1.1.6", @@ -2607,12 +3088,12 @@ "license": "MIT" }, "node_modules/@playwright/test": { - "version": "1.58.2", - "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.58.2.tgz", - "integrity": "sha512-akea+6bHYBBfA9uQqSYmlJXn61cTa+jbO87xVLCWbTqbWadRVmhxlXATaOjOgcBaWU4ePo0wB41KMFv3o35IXA==", + "version": "1.59.1", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.59.1.tgz", + "integrity": "sha512-PG6q63nQg5c9rIi4/Z5lR5IVF7yU5MqmKaPOe0HSc0O2cX1fPi96sUQu5j7eo4gKCkB2AnNGoWt7y4/Xx3Kcqg==", "license": "Apache-2.0", "dependencies": { - "playwright": "1.58.2" + "playwright": "1.59.1" }, "bin": { "playwright": "cli.js" @@ -2621,12 +3102,290 @@ "node": ">=18" } }, + "node_modules/@playwright/test/node_modules/playwright": { + "version": "1.59.1", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.59.1.tgz", + "integrity": "sha512-C8oWjPR3F81yljW9o5OxcWzfh6avkVwDD2VYdwIGqTkl+OGFISgypqzfu7dOe4QNLL2aqcWBmI3PMtLIK233lw==", + "license": "Apache-2.0", + "dependencies": { + "playwright-core": "1.59.1" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "fsevents": "2.3.2" + } + }, + "node_modules/@playwright/test/node_modules/playwright-core": { + "version": "1.59.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.59.1.tgz", + "integrity": "sha512-HBV/RJg81z5BiiZ9yPzIiClYV/QMsDCKUyogwH9p3MCP6IYjUFu/MActgYAvK0oWyV9NlwM3GLBjADyWgydVyg==", + "license": "Apache-2.0", + "bin": { + "playwright-core": "cli.js" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/@polka/url": { "version": "1.0.0-next.29", "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.29.tgz", "integrity": "sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==", "license": "MIT" }, + "node_modules/@rolldown/binding-android-arm64": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.0.tgz", + "integrity": "sha512-TWMZnRLMe63C2Lhyicviu7ZHaU4kxa6PS3rofvc9GmcvptzNN11BcfQ4Sl7MwTOsisQoa2keB/EBdNCAnUo8vA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-darwin-arm64": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.0.tgz", + "integrity": "sha512-6XcD+8k0gPVItNagEw78/qqcBDwKcwDYS8V2hRmVsfUSIrd8cWe/CBvRDI5toqFyPfj+FJr6t8U6Xj2P2prEew==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-darwin-x64": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.0.tgz", + "integrity": "sha512-iN/tWVXRQDWvmZlKdceP1Dwug9GDpEymhb9p4xnEe6zvCg5lFmzVljl+1qR1NVx3yfGpr2Na+CuLmv5IU8uzfQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-freebsd-x64": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.0.tgz", + "integrity": "sha512-jjQMDvvwSOuhOwMszD/klSOjyWMM3zI64hWTj9KT5x4MxRbZAf+7vLQ6qouRhtsLVFHr3f0ILaJAfgENPiQdAQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm-gnueabihf": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.0.tgz", + "integrity": "sha512-d//Dtg2x6/m3mbV64yUGNnDGNZaDGRpDLLNGerHQUVObuNaIQaaDp25yUiqGXtHEXX+NP2d0wAlmKgpYgIAJ2A==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm64-gnu": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.0.tgz", + "integrity": "sha512-n7Ofp0mx+aB2cC+Sdy5YtMnXtY9lchnHbY+3Yt0uq9JsWQExf4f5Whu0tK0R8Jdc9S6RchTHjIFY7uc92puOVQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm64-musl": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.0.tgz", + "integrity": "sha512-EIVjy2cgd7uuMMo94FVkBp7F6DhcZAUwNURkSG3RwUmvAXR6s0ISxM81U+IydcZByPG0pZIHsf1b6kTxoFDgJA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-ppc64-gnu": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.0.0.tgz", + "integrity": "sha512-JEwwOPcwTLAcpDQlqSmjEmfs63xJnSiUNIGvLcDLUHCWK4XowpS/7c7tUsUH6uT/ct6bMUTdXKfI8967FYj6mg==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-s390x-gnu": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.0.0.tgz", + "integrity": "sha512-0wjCFhLrihtAubnT9iA0N++0pSV0z5Hg7tNGdNJ4RFaINceHadoF+kiFGyY1qSSNVIAZtLotG8Ju1bgDPkjnFA==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-x64-gnu": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.0.tgz", + "integrity": "sha512-Dfn7iak9BcMMePxcoJfpSbWqnEyrp/dRF63/8qW/eHBdOZov6x5aShLLEYGYdIeSJ6vMLK/XCVB+lGIxm41bQA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-x64-musl": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.0.tgz", + "integrity": "sha512-5/utzzDmD/pD/bmuaUcbTf/sZYy0aztwIVlfpoW1fTjCZ0BaPOMVWGZL1zvgxyi7ZIVYWlxKONHmSbHuiOh8Jw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-openharmony-arm64": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.0.tgz", + "integrity": "sha512-ouJs8VcUomfLfpbUECqFMRqdV4x6aeAK3MA4m6vTrJJjKyWTV5KnxZx7Jd9G+GlDaQQxubcba00x16OyJ1meig==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-wasm32-wasi": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.0.tgz", + "integrity": "sha512-E+oHKGiDA+lsKMmFtffDDw91EryDT7uJocrIuCHqhm6bCTM6xFK+3gaCkYOHfPwQr0cCNarSM2xaELoQDz9jJg==", + "cpu": [ + "wasm32" + ], + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "1.10.0", + "@emnapi/runtime": "1.10.0", + "@napi-rs/wasm-runtime": "^1.1.4" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-win32-arm64-msvc": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.0.tgz", + "integrity": "sha512-yYK02n8Rngo+gbm1y6G0+7jk1sJ/2Wt7K0me0Y7k/ErBpyf+LJ2gFpqWVTcRV1rUepBlQRmpgWkTQCiiwrK0Ow==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-win32-x64-msvc": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.0.tgz", + "integrity": "sha512-14bpChMahXRRXiTwahSl+zzHPW6qQTXtkMuJBFlbo+pqSAews2d4BdCSHfrJ/MBsCZtpmTafsY+1QhBzitcmdg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0.tgz", + "integrity": "sha512-aKs/3GSWyV0mrhNmt/96/Z3yczC3yvrzYATCiCXQebBsGyYzjNdUphRVLeJQ67ySKVXRfMxt2lm12pmXvbPFQQ==", + "license": "MIT" + }, "node_modules/@rollup/plugin-commonjs": { "version": "29.0.2", "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-29.0.2.tgz", @@ -2734,9 +3493,9 @@ "license": "MIT" }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.59.0.tgz", - "integrity": "sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.60.0.tgz", + "integrity": "sha512-WOhNW9K8bR3kf4zLxbfg6Pxu2ybOUbB2AjMDHSQx86LIF4rH4Ft7vmMwNt0loO0eonglSNy4cpD3MKXXKQu0/A==", "cpu": [ "arm" ], @@ -2747,9 +3506,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.59.0.tgz", - "integrity": "sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.60.0.tgz", + "integrity": "sha512-u6JHLll5QKRvjciE78bQXDmqRqNs5M/3GVqZeMwvmjaNODJih/WIrJlFVEihvV0MiYFmd+ZyPr9wxOVbPAG2Iw==", "cpu": [ "arm64" ], @@ -2760,9 +3519,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.59.0.tgz", - "integrity": "sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.60.0.tgz", + "integrity": "sha512-qEF7CsKKzSRc20Ciu2Zw1wRrBz4g56F7r/vRwY430UPp/nt1x21Q/fpJ9N5l47WWvJlkNCPJz3QRVw008fi7yA==", "cpu": [ "arm64" ], @@ -2773,9 +3532,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.59.0.tgz", - "integrity": "sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.60.0.tgz", + "integrity": "sha512-WADYozJ4QCnXCH4wPB+3FuGmDPoFseVCUrANmA5LWwGmC6FL14BWC7pcq+FstOZv3baGX65tZ378uT6WG8ynTw==", "cpu": [ "x64" ], @@ -2786,9 +3545,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.59.0.tgz", - "integrity": "sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.60.0.tgz", + "integrity": "sha512-6b8wGHJlDrGeSE3aH5mGNHBjA0TTkxdoNHik5EkvPHCt351XnigA4pS7Wsj/Eo9Y8RBU6f35cjN9SYmCFBtzxw==", "cpu": [ "arm64" ], @@ -2799,9 +3558,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.59.0.tgz", - "integrity": "sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.60.0.tgz", + "integrity": "sha512-h25Ga0t4jaylMB8M/JKAyrvvfxGRjnPQIR8lnCayyzEjEOx2EJIlIiMbhpWxDRKGKF8jbNH01NnN663dH638mA==", "cpu": [ "x64" ], @@ -2812,9 +3571,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.59.0.tgz", - "integrity": "sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.60.0.tgz", + "integrity": "sha512-RzeBwv0B3qtVBWtcuABtSuCzToo2IEAIQrcyB/b2zMvBWVbjo8bZDjACUpnaafaxhTw2W+imQbP2BD1usasK4g==", "cpu": [ "arm" ], @@ -2825,9 +3584,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.59.0.tgz", - "integrity": "sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.60.0.tgz", + "integrity": "sha512-Sf7zusNI2CIU1HLzuu9Tc5YGAHEZs5Lu7N1ssJG4Tkw6e0MEsN7NdjUDDfGNHy2IU+ENyWT+L2obgWiguWibWQ==", "cpu": [ "arm" ], @@ -2838,9 +3597,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.59.0.tgz", - "integrity": "sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.60.0.tgz", + "integrity": "sha512-DX2x7CMcrJzsE91q7/O02IJQ5/aLkVtYFryqCjduJhUfGKG6yJV8hxaw8pZa93lLEpPTP/ohdN4wFz7yp/ry9A==", "cpu": [ "arm64" ], @@ -2851,9 +3610,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.59.0.tgz", - "integrity": "sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.60.0.tgz", + "integrity": "sha512-09EL+yFVbJZlhcQfShpswwRZ0Rg+z/CsSELFCnPt3iK+iqwGsI4zht3secj5vLEs957QvFFXnzAT0FFPIxSrkQ==", "cpu": [ "arm64" ], @@ -2864,9 +3623,9 @@ ] }, "node_modules/@rollup/rollup-linux-loong64-gnu": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.59.0.tgz", - "integrity": "sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.60.0.tgz", + "integrity": "sha512-i9IcCMPr3EXm8EQg5jnja0Zyc1iFxJjZWlb4wr7U2Wx/GrddOuEafxRdMPRYVaXjgbhvqalp6np07hN1w9kAKw==", "cpu": [ "loong64" ], @@ -2877,9 +3636,9 @@ ] }, "node_modules/@rollup/rollup-linux-loong64-musl": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.59.0.tgz", - "integrity": "sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.60.0.tgz", + "integrity": "sha512-DGzdJK9kyJ+B78MCkWeGnpXJ91tK/iKA6HwHxF4TAlPIY7GXEvMe8hBFRgdrR9Ly4qebR/7gfUs9y2IoaVEyog==", "cpu": [ "loong64" ], @@ -2890,9 +3649,9 @@ ] }, "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.59.0.tgz", - "integrity": "sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.60.0.tgz", + "integrity": "sha512-RwpnLsqC8qbS8z1H1AxBA1H6qknR4YpPR9w2XX0vo2Sz10miu57PkNcnHVaZkbqyw/kUWfKMI73jhmfi9BRMUQ==", "cpu": [ "ppc64" ], @@ -2903,9 +3662,9 @@ ] }, "node_modules/@rollup/rollup-linux-ppc64-musl": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.59.0.tgz", - "integrity": "sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.60.0.tgz", + "integrity": "sha512-Z8pPf54Ly3aqtdWC3G4rFigZgNvd+qJlOE52fmko3KST9SoGfAdSRCwyoyG05q1HrrAblLbk1/PSIV+80/pxLg==", "cpu": [ "ppc64" ], @@ -2916,9 +3675,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.59.0.tgz", - "integrity": "sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.60.0.tgz", + "integrity": "sha512-3a3qQustp3COCGvnP4SvrMHnPQ9d1vzCakQVRTliaz8cIp/wULGjiGpbcqrkv0WrHTEp8bQD/B3HBjzujVWLOA==", "cpu": [ "riscv64" ], @@ -2929,9 +3688,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.59.0.tgz", - "integrity": "sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.60.0.tgz", + "integrity": "sha512-pjZDsVH/1VsghMJ2/kAaxt6dL0psT6ZexQVrijczOf+PeP2BUqTHYejk3l6TlPRydggINOeNRhvpLa0AYpCWSQ==", "cpu": [ "riscv64" ], @@ -2942,9 +3701,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.59.0.tgz", - "integrity": "sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.60.0.tgz", + "integrity": "sha512-3ObQs0BhvPgiUVZrN7gqCSvmFuMWvWvsjG5ayJ3Lraqv+2KhOsp+pUbigqbeWqueGIsnn+09HBw27rJ+gYK4VQ==", "cpu": [ "s390x" ], @@ -2955,9 +3714,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.59.0.tgz", - "integrity": "sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.60.0.tgz", + "integrity": "sha512-EtylprDtQPdS5rXvAayrNDYoJhIz1/vzN2fEubo3yLE7tfAw+948dO0g4M0vkTVFhKojnF+n6C8bDNe+gDRdTg==", "cpu": [ "x64" ], @@ -2968,9 +3727,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.59.0.tgz", - "integrity": "sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.60.0.tgz", + "integrity": "sha512-k09oiRCi/bHU9UVFqD17r3eJR9bn03TyKraCrlz5ULFJGdJGi7VOmm9jl44vOJvRJ6P7WuBi/s2A97LxxHGIdw==", "cpu": [ "x64" ], @@ -2981,9 +3740,9 @@ ] }, "node_modules/@rollup/rollup-openbsd-x64": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.59.0.tgz", - "integrity": "sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.60.0.tgz", + "integrity": "sha512-1o/0/pIhozoSaDJoDcec+IVLbnRtQmHwPV730+AOD29lHEEo4F5BEUB24H0OBdhbBBDwIOSuf7vgg0Ywxdfiiw==", "cpu": [ "x64" ], @@ -2994,9 +3753,9 @@ ] }, "node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.59.0.tgz", - "integrity": "sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.60.0.tgz", + "integrity": "sha512-pESDkos/PDzYwtyzB5p/UoNU/8fJo68vcXM9ZW2V0kjYayj1KaaUfi1NmTUTUpMn4UhU4gTuK8gIaFO4UGuMbA==", "cpu": [ "arm64" ], @@ -3007,9 +3766,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.59.0.tgz", - "integrity": "sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.60.0.tgz", + "integrity": "sha512-hj1wFStD7B1YBeYmvY+lWXZ7ey73YGPcViMShYikqKT1GtstIKQAtfUI6yrzPjAy/O7pO0VLXGmUVWXQMaYgTQ==", "cpu": [ "arm64" ], @@ -3020,9 +3779,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.59.0.tgz", - "integrity": "sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.60.0.tgz", + "integrity": "sha512-SyaIPFoxmUPlNDq5EHkTbiKzmSEmq/gOYFI/3HHJ8iS/v1mbugVa7dXUzcJGQfoytp9DJFLhHH4U3/eTy2Bq4w==", "cpu": [ "ia32" ], @@ -3033,9 +3792,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-gnu": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.59.0.tgz", - "integrity": "sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.60.0.tgz", + "integrity": "sha512-RdcryEfzZr+lAr5kRm2ucN9aVlCCa2QNq4hXelZxb8GG0NJSazq44Z3PCCc8wISRuCVnGs0lQJVX5Vp6fKA+IA==", "cpu": [ "x64" ], @@ -3046,9 +3805,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.59.0.tgz", - "integrity": "sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.60.0.tgz", + "integrity": "sha512-PrsWNQ8BuE00O3Xsx3ALh2Df8fAj9+cvvX9AIA6o4KpATR98c9mud4XtDWVvsEuyia5U4tVSTKygawyJkjm60w==", "cpu": [ "x64" ], @@ -3071,88 +3830,94 @@ "hasInstallScript": true, "license": "Apache-2.0" }, + "node_modules/@sec-ant/readable-stream": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz", + "integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==", + "license": "MIT" + }, "node_modules/@sentry-internal/browser-utils": { - "version": "10.45.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/browser-utils/-/browser-utils-10.45.0.tgz", - "integrity": "sha512-ZPZpeIarXKScvquGx2AfNKcYiVNDA4wegMmjyGVsTA2JPmP0TrJoO3UybJS6KGDeee8V3I3EfD/ruauMm7jOFQ==", + "version": "10.51.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/browser-utils/-/browser-utils-10.51.0.tgz", + "integrity": "sha512-lNKBS4P7RUvf1niojXQWe9bU3gnBUCbST4Dj0pSiyat1N96cXVyHkeE+uGxowD0RrVWhs+kGHiVX3FcmRWF6sA==", "license": "MIT", "dependencies": { - "@sentry/core": "10.45.0" + "@sentry/core": "10.51.0" }, "engines": { "node": ">=18" } }, "node_modules/@sentry-internal/feedback": { - "version": "10.45.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-10.45.0.tgz", - "integrity": "sha512-vCSurazFVq7RUeYiM5X326jA5gOVrWYD6lYX2fbjBOMcyCEhDnveNxMT62zKkZDyNT/jyD194nz/cjntBUkyWA==", + "version": "10.51.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-10.51.0.tgz", + "integrity": "sha512-bCM95bcpphx28e6aU0bwRLxOgwosYsdNzezM1sM0pVOkb0TB3hDFRamramVDK+/Hp1o8qmRxS4c5w/A7YBZGkA==", "license": "MIT", "dependencies": { - "@sentry/core": "10.45.0" + "@sentry/core": "10.51.0" }, "engines": { "node": ">=18" } }, "node_modules/@sentry-internal/replay": { - "version": "10.45.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/replay/-/replay-10.45.0.tgz", - "integrity": "sha512-vjosRoGA1bzhVAEO1oce+CsRdd70quzBeo7WvYqpcUnoLe/Rv8qpOMqWX3j26z7XfFHMExWQNQeLxmtYOArvlw==", + "version": "10.51.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/replay/-/replay-10.51.0.tgz", + "integrity": "sha512-jCpI5HXSwK6ZT2HX70+mDRciAocHzSiDk4DTgvzV69Wvd+Ei5WLgE+d39eaEPsm8lUC0Ydntb5sJIB6uG9D4bw==", "license": "MIT", "dependencies": { - "@sentry-internal/browser-utils": "10.45.0", - "@sentry/core": "10.45.0" + "@sentry-internal/browser-utils": "10.51.0", + "@sentry/core": "10.51.0" }, "engines": { "node": ">=18" } }, "node_modules/@sentry-internal/replay-canvas": { - "version": "10.45.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-10.45.0.tgz", - "integrity": "sha512-nvq/AocdZTuD7y0KSiWi3gVaY0s5HOFy86mC/v1kDZmT/jsBAzN5LDkk/f1FvsWma1peqQmpUqxvhC+YIW294Q==", + "version": "10.51.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-10.51.0.tgz", + "integrity": "sha512-8PW1Pp+Yl3lPwYqhBCr5SgkuhDanu9ZLzUqD2bPKL/ElqbM2eDVIWxq4z4ZzePrmZa6IcCjTv6sVQJ7Z4dLyLA==", "license": "MIT", "dependencies": { - "@sentry-internal/replay": "10.45.0", - "@sentry/core": "10.45.0" + "@sentry-internal/replay": "10.51.0", + "@sentry/core": "10.51.0" }, "engines": { "node": ">=18" } }, "node_modules/@sentry/browser": { - "version": "10.45.0", - "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-10.45.0.tgz", - "integrity": "sha512-e/a8UMiQhqqv706McSIcG6XK+AoQf9INthi2pD+giZfNRTzXTdqHzUT5OIO5hg8Am6eF63nDJc+vrYNPhzs51Q==", + "version": "10.51.0", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-10.51.0.tgz", + "integrity": "sha512-Zdc0sKfenxUtW/OGhtJ7xHFN44bXR7YqxJ1zBDzlZfW0nTbeTTUZBq9z5NUw6qdS0Vs/i3V4qzAKTbRKWfqSEA==", "license": "MIT", "dependencies": { - "@sentry-internal/browser-utils": "10.45.0", - "@sentry-internal/feedback": "10.45.0", - "@sentry-internal/replay": "10.45.0", - "@sentry-internal/replay-canvas": "10.45.0", - "@sentry/core": "10.45.0" + "@sentry-internal/browser-utils": "10.51.0", + "@sentry-internal/feedback": "10.51.0", + "@sentry-internal/replay": "10.51.0", + "@sentry-internal/replay-canvas": "10.51.0", + "@sentry/core": "10.51.0" }, "engines": { "node": ">=18" } }, "node_modules/@sentry/core": { - "version": "10.45.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-10.45.0.tgz", - "integrity": "sha512-s69UXxvefeQxuZ5nY7/THtTrIEvJxNVCp3ns4kwoCw1qMpgpvn/296WCKVmM7MiwnaAdzEKnAvLAwaxZc2nM7Q==", + "version": "10.51.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-10.51.0.tgz", + "integrity": "sha512-Y45V/YXvVLEXmOdkbD1oG1gkRWFi9guCEGg3PlIlIpRjAbZUrvLGgjRJIc1E7XpSzmOnWbs5BbUxMv4PDaPj2w==", "license": "MIT", "engines": { "node": ">=18" } }, "node_modules/@sindresorhus/is": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.6.0.tgz", - "integrity": "sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-7.2.0.tgz", + "integrity": "sha512-P1Cz1dWaFfR4IR+U13mqqiGsLFf1KbayybWwdd2vfctdV6hDpUkgCY0nKOLLTMSoRd/jJNjtbqzf13K8DCCXQw==", "license": "MIT", "engines": { - "node": ">=14.16" + "node": ">=18" }, "funding": { "url": "https://github.com/sindresorhus/is?sponsor=1" @@ -3177,15 +3942,15 @@ "license": "MIT" }, "node_modules/@storybook/addon-docs": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-10.3.0.tgz", - "integrity": "sha512-g9bc4YDiy4g/peLsUDmVcy2q/QXI3eHCQtHrVp2sHWef2SYjwUJ2+TOtJHScO8LuKhGnU3h2UeE59tPWTF2quw==", + "version": "10.3.6", + "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-10.3.6.tgz", + "integrity": "sha512-TvIdADVPtauxW0LzXIpIv7X6GxwetorhyNh+6+7MHC27XSBCWVxxRUwL63YeLlHTuXsIk0quG3b1xgwVRzWOJA==", "license": "MIT", "dependencies": { "@mdx-js/react": "^3.0.0", - "@storybook/csf-plugin": "10.3.0", + "@storybook/csf-plugin": "10.3.6", "@storybook/icons": "^2.0.1", - "@storybook/react-dom-shim": "10.3.0", + "@storybook/react-dom-shim": "10.3.6", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "ts-dedent": "^2.0.0" @@ -3195,13 +3960,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^10.3.0" + "storybook": "^10.3.6" } }, "node_modules/@storybook/addon-links": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-10.3.0.tgz", - "integrity": "sha512-F0/UPO3HysoJoAFrBSqWkRP3lK2owHSAgQNEFB9mNihsAQbHHg9xer22VROL012saprs98+V/hNUZs4zPy9zlg==", + "version": "10.3.6", + "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-10.3.6.tgz", + "integrity": "sha512-tv9Xd68qRGBAvEubaxNo3FuFq4GwuMiBriD+gLGuFK0+/u3cnkuA264aoR1v6YCH3sT3er3+MBimuyKM3jLDxg==", "license": "MIT", "dependencies": { "@storybook/global": "^5.0.0" @@ -3212,7 +3977,7 @@ }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", - "storybook": "^10.3.0" + "storybook": "^10.3.6" }, "peerDependenciesMeta": { "react": { @@ -3221,12 +3986,12 @@ } }, "node_modules/@storybook/builder-vite": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/@storybook/builder-vite/-/builder-vite-10.3.0.tgz", - "integrity": "sha512-T7LfZPE31j94Jkk66bnsxMibBnbLYmebLIDgPSYzeN3ZkjPfoFhhi2+8Zxneth5cQCGRkCAhRTV0tYmFp1+H6g==", + "version": "10.3.6", + "resolved": "https://registry.npmjs.org/@storybook/builder-vite/-/builder-vite-10.3.6.tgz", + "integrity": "sha512-gpvR/sE4BcrFtmQZ+Ker7zD23oQzoVeqD9nF6cK6yzY+Q0svJXyX2EPmFG4y+EwygD5/vNzDpP84gGMut8VRwg==", "license": "MIT", "dependencies": { - "@storybook/csf-plugin": "10.3.0", + "@storybook/csf-plugin": "10.3.6", "ts-dedent": "^2.0.0" }, "funding": { @@ -3234,14 +3999,14 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^10.3.0", + "storybook": "^10.3.6", "vite": "^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0" } }, "node_modules/@storybook/csf-plugin": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-10.3.0.tgz", - "integrity": "sha512-zlBnNpv0wtmICdQPDoY91HNzn6BNqnS2hur580J+qJtcP+5ZOYU7+gNyU+vfAnQuLEWbPz34rx8b1cTzXZQCDg==", + "version": "10.3.6", + "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-10.3.6.tgz", + "integrity": "sha512-9kBf7VRdRqTSIYo+rPtVn5yjYYyK8kP2QhEYx3oiXvfwy4RexmbJnhk/tXa/lNiTqukA1TqaWQ2+5MqF4fu6YQ==", "license": "MIT", "dependencies": { "unplugin": "^2.3.5" @@ -3253,7 +4018,7 @@ "peerDependencies": { "esbuild": "*", "rollup": "*", - "storybook": "^10.3.0", + "storybook": "^10.3.6", "vite": "*", "webpack": "*" }, @@ -3289,9 +4054,9 @@ } }, "node_modules/@storybook/react-dom-shim": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-10.3.0.tgz", - "integrity": "sha512-dmAnIjkMmUYZCdg3FUL83Lavybin3bYKRNRXFZq1okCH8SINa2J+zKEzJhPlqixAKkbd7x1PFDgXnxxM/Nisig==", + "version": "10.3.6", + "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-10.3.6.tgz", + "integrity": "sha512-/Tu1gPu+Fw+zOnAGmxRmOD30FX3a04LxcTAKflEtdpmtIMVR5bA3qpjy+f5YhoyDCecbXyKmL1OeIU2FIIZHqQ==", "license": "MIT", "funding": { "type": "opencollective", @@ -3300,13 +4065,13 @@ "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", - "storybook": "^10.3.0" + "storybook": "^10.3.6" } }, "node_modules/@storybook/web-components": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/@storybook/web-components/-/web-components-10.3.0.tgz", - "integrity": "sha512-tCmMxnBiA1ifkYi1S/f82hPTj1WmpsCcBLZYz7UMvHs7pyCM/2vttvPYz+xVLVp0aJisYE4FjjBmDvJmikmi6g==", + "version": "10.3.6", + "resolved": "https://registry.npmjs.org/@storybook/web-components/-/web-components-10.3.6.tgz", + "integrity": "sha512-femDZGYBGQDckL7F6ZCl2S+dNNBjvd9lp6rQrwBdbNprjctLd6d3EB4HyNM502QxtdEo7laq8y1goDu8KwIV3A==", "license": "MIT", "dependencies": { "@storybook/global": "^5.0.0", @@ -3319,34 +4084,34 @@ }, "peerDependencies": { "lit": "^2.0.0 || ^3.0.0", - "storybook": "^10.3.0" + "storybook": "^10.3.6" } }, "node_modules/@storybook/web-components-vite": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/@storybook/web-components-vite/-/web-components-vite-10.3.0.tgz", - "integrity": "sha512-5rgGHcLztrGyJwg2HGMcAsfDaBka5OBxY/hiTHvqKpAMD7CfE9vkroleT357lko48hNHPZU8kNMnGYcu3YIYWg==", + "version": "10.3.6", + "resolved": "https://registry.npmjs.org/@storybook/web-components-vite/-/web-components-vite-10.3.6.tgz", + "integrity": "sha512-VeDEAJuOOQV6VAqEF0pilXucS6kp+1ILJVkI+ets6Ku2D+RKeu167YrQAzh1NwzRTv0e5H0anDDNke+sWvg2dg==", "license": "MIT", "dependencies": { - "@storybook/builder-vite": "10.3.0", - "@storybook/web-components": "10.3.0" + "@storybook/builder-vite": "10.3.6", + "@storybook/web-components": "10.3.6" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^10.3.0" + "storybook": "^10.3.6" } }, "node_modules/@swagger-api/apidom-ast": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ast/-/apidom-ast-1.5.1.tgz", - "integrity": "sha512-BtaUaWXE0zzosuy6d1UFZp8wQZlqXapolTNF5f/3kzzZPLdDDWZeFyvvGww3Jt0Bwcw5rzavqD/lrTZp3j2qTQ==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ast/-/apidom-ast-1.8.0.tgz", + "integrity": "sha512-cpYLFeXusH9kN1ekaTbb9rG8HYFYtqZeiAAB4WaA1YmMkzf5bHSKqsrMFVKwupwdKTxxkmmlsLqGjy1HOIxFlQ==", "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.26.10", - "@swagger-api/apidom-error": "^1.5.1", + "@swagger-api/apidom-error": "^1.8.0", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0", @@ -3354,14 +4119,14 @@ } }, "node_modules/@swagger-api/apidom-core": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-core/-/apidom-core-1.5.1.tgz", - "integrity": "sha512-vjP+HhbIN2D+Z8qsq57Ab2z0CpxCTD177Zd8mbUEKpOFYtc9qoizv6bAXTmhZGfVLxBsw+iGzFVH/z6DvuD3ag==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-core/-/apidom-core-1.8.0.tgz", + "integrity": "sha512-iJavkTVvf5iRMYG0W5XPM33A6BypWvEVrnXfl0hiUL7AEV1ZcDLjyxvmS4CqYdaB4oiSVpClMlJZZqUI1yt0rg==", "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.26.10", - "@swagger-api/apidom-ast": "^1.5.1", - "@swagger-api/apidom-error": "^1.5.1", + "@swagger-api/apidom-ast": "^1.8.0", + "@swagger-api/apidom-error": "^1.8.0", "@types/ramda": "~0.30.0", "minim": "~0.23.8", "ramda": "~0.30.0", @@ -3371,37 +4136,37 @@ } }, "node_modules/@swagger-api/apidom-error": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-error/-/apidom-error-1.5.1.tgz", - "integrity": "sha512-R0BSvVgKVNNxnC8S4uJVf4JwWCFNI1ktpLbML6UbzXBPquHfM0gjv+WQgKApMAYw809rtaVIF9ADoUtL/c6+uQ==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-error/-/apidom-error-1.8.0.tgz", + "integrity": "sha512-Bbqr15CpSbexdQYr4Z7sI6UGQw650nDrynQkGXu7NEWO/kGM43RexvkrIGHfOLlf4gA71qRO630KYe+/+b62/Q==", "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.20.7" } }, "node_modules/@swagger-api/apidom-json-pointer": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-json-pointer/-/apidom-json-pointer-1.5.1.tgz", - "integrity": "sha512-EFJzHgHbs5AIPSRowuc02WjbQY5bbFvijQuFIkHSKCsPOQ8VX+h8xOe3dxRjgnCAJ33nk+VOYiaZTy48BK2bfw==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-json-pointer/-/apidom-json-pointer-1.8.0.tgz", + "integrity": "sha512-r00Tl0MDdiKowH6xSzVAdwGnNIQ7uFPfxFJHcDnA/lZ8S1mUTHToaoq3ZiEtErdkM4Qvb6r2kUo7gjuX4cyZvA==", "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.26.10", - "@swagger-api/apidom-core": "^1.5.1", - "@swagger-api/apidom-error": "^1.5.1", + "@swagger-api/apidom-core": "^1.8.0", + "@swagger-api/apidom-error": "^1.8.0", "@swaggerexpert/json-pointer": "^2.10.1" } }, "node_modules/@swagger-api/apidom-ns-api-design-systems": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-api-design-systems/-/apidom-ns-api-design-systems-1.5.1.tgz", - "integrity": "sha512-YQJdNb6TJQ8lNa1o8ThfT0P7DY/cGhnI4Se8YiGIsdTPSBOiPtTY72+lfsM1O+3bOeAy7n/MvWRXrJuiKGf7Pg==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-api-design-systems/-/apidom-ns-api-design-systems-1.8.0.tgz", + "integrity": "sha512-3jFySxvBDnsPg7B4hPGqWmlRm2o6mOViyKWKXT2cHixjPP7ZxvCaj8bdSQhmOaZrdgMM+9JUXpY8yZz6UdNrig==", "license": "Apache-2.0", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.26.10", - "@swagger-api/apidom-core": "^1.5.1", - "@swagger-api/apidom-error": "^1.5.1", - "@swagger-api/apidom-ns-openapi-3-1": "^1.5.1", + "@swagger-api/apidom-core": "^1.8.0", + "@swagger-api/apidom-error": "^1.8.0", + "@swagger-api/apidom-ns-openapi-3-1": "^1.8.0", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0", @@ -3409,15 +4174,15 @@ } }, "node_modules/@swagger-api/apidom-ns-arazzo-1": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-arazzo-1/-/apidom-ns-arazzo-1-1.5.1.tgz", - "integrity": "sha512-hC/AD9TG3DMex+UAlYmg3fKcbmgrLGyZ3Fm2KqJfaC3CkiYE6SdVtfCBK9mPOcArPVa2RfzSgU4aRYzClDmvNQ==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-arazzo-1/-/apidom-ns-arazzo-1-1.8.0.tgz", + "integrity": "sha512-CQ2+FbsZgcBcEY9PSfqvG1vRDSUjj+wfILGbhd9/EitF6E1hdur+ahUNPObW8qBHN/nOvo+cRtoGMTP1ZB8i3Q==", "license": "Apache-2.0", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.26.10", - "@swagger-api/apidom-core": "^1.5.1", - "@swagger-api/apidom-ns-json-schema-2020-12": "^1.5.1", + "@swagger-api/apidom-core": "^1.8.0", + "@swagger-api/apidom-ns-json-schema-2020-12": "^1.8.0", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0", @@ -3425,15 +4190,15 @@ } }, "node_modules/@swagger-api/apidom-ns-asyncapi-2": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-asyncapi-2/-/apidom-ns-asyncapi-2-1.5.1.tgz", - "integrity": "sha512-9k97IdvSde7OaGwE8opX9psjmhsRYkuKm5eCmM3n6WOZkwdJFD73bCtYVqCuDCVRzJwT9xMras4fVG5Zn1Vhcw==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-asyncapi-2/-/apidom-ns-asyncapi-2-1.8.0.tgz", + "integrity": "sha512-COFbS2FoUOIUEz7+Sq9NHwsidBPZ0aqQu3/TXID2O+kx4MfZmnGrpuJliwYeB73gkI4o2JhT28fB1Jb+pmul7Q==", "license": "Apache-2.0", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.26.10", - "@swagger-api/apidom-core": "^1.5.1", - "@swagger-api/apidom-ns-json-schema-draft-7": "^1.5.1", + "@swagger-api/apidom-core": "^1.8.0", + "@swagger-api/apidom-ns-json-schema-draft-7": "^1.8.0", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0", @@ -3441,15 +4206,15 @@ } }, "node_modules/@swagger-api/apidom-ns-asyncapi-3": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-asyncapi-3/-/apidom-ns-asyncapi-3-1.5.1.tgz", - "integrity": "sha512-EQGnSP93yB8ZDhaESqtavnynySH/hjkdkb4tInRoKYN3j3WU+in6Bvxwq2qCkyH9ACaSbW2HFlT2qIRBcLW+oA==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-asyncapi-3/-/apidom-ns-asyncapi-3-1.8.0.tgz", + "integrity": "sha512-kC6mxmh+x+qpyZvxAA2C0BURUtnCVpNRvcjrnzMEShA4mderW+e6uD6rtmr3DxbBt+BGIQE9eXtCOW1q+aPOUQ==", "license": "Apache-2.0", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.26.10", - "@swagger-api/apidom-core": "^1.5.1", - "@swagger-api/apidom-ns-asyncapi-2": "^1.5.1", + "@swagger-api/apidom-core": "^1.8.0", + "@swagger-api/apidom-ns-asyncapi-2": "^1.8.0", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0", @@ -3457,15 +4222,15 @@ } }, "node_modules/@swagger-api/apidom-ns-json-schema-2019-09": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-json-schema-2019-09/-/apidom-ns-json-schema-2019-09-1.5.1.tgz", - "integrity": "sha512-peszjtx5OPUYsvl/t4XTRVt0vY0WfR7jBpcmq3/ioqAaddhfbnb4i3PPWWhAIzzeKAiFHc/m4E5HCMMdDF2wDA==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-json-schema-2019-09/-/apidom-ns-json-schema-2019-09-1.8.0.tgz", + "integrity": "sha512-ipyiN63PpMccMpC6K95yl0MZOjFGMlCGtphKE9j1W2Hj8Poxirdlo8NpYOioqC2uJlEwb+fm0Ue2ysFdFkG0Ng==", "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.26.10", - "@swagger-api/apidom-core": "^1.5.1", - "@swagger-api/apidom-error": "^1.5.1", - "@swagger-api/apidom-ns-json-schema-draft-7": "^1.5.1", + "@swagger-api/apidom-core": "^1.8.0", + "@swagger-api/apidom-error": "^1.8.0", + "@swagger-api/apidom-ns-json-schema-draft-7": "^1.8.0", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0", @@ -3473,15 +4238,15 @@ } }, "node_modules/@swagger-api/apidom-ns-json-schema-2020-12": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-json-schema-2020-12/-/apidom-ns-json-schema-2020-12-1.5.1.tgz", - "integrity": "sha512-4L6X5SxkXCD4W7O0KI8e3kc0Q8TkVg0kPSNOWYosGAHOk9g5KyMIbACDjZhJ2q+uPlyLFCLAPY93aOVaVZ+nsA==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-json-schema-2020-12/-/apidom-ns-json-schema-2020-12-1.8.0.tgz", + "integrity": "sha512-v1RdzxUcGv6RtXYLKd5qh8asPWzSrbDkEwHgV0JitzwQd8sd0Vu3ey8JaIuG3ZTsndS7qHOQG9Xdu+rqtjEXxQ==", "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.26.10", - "@swagger-api/apidom-core": "^1.5.1", - "@swagger-api/apidom-error": "^1.5.1", - "@swagger-api/apidom-ns-json-schema-2019-09": "^1.5.1", + "@swagger-api/apidom-core": "^1.8.0", + "@swagger-api/apidom-error": "^1.8.0", + "@swagger-api/apidom-ns-json-schema-2019-09": "^1.8.0", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0", @@ -3489,14 +4254,14 @@ } }, "node_modules/@swagger-api/apidom-ns-json-schema-draft-4": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-json-schema-draft-4/-/apidom-ns-json-schema-draft-4-1.5.1.tgz", - "integrity": "sha512-vdc+vVLwf4JwDeK4mPfZqyVHG5gJc766GkqH522VRTh1XWJPlW674lIJuhqo5HLzXLm4zV4alI/QJMR3fRWFIQ==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-json-schema-draft-4/-/apidom-ns-json-schema-draft-4-1.8.0.tgz", + "integrity": "sha512-UOvfkK2Dl158IZ2wCYcE1z2YcPZDPKMe6U0OdwBoftM8sWd19GU6a6jyUw2AKSofCdmPWEIRvZNYHvDcue1cbA==", "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.26.10", - "@swagger-api/apidom-ast": "^1.5.1", - "@swagger-api/apidom-core": "^1.5.1", + "@swagger-api/apidom-ast": "^1.8.0", + "@swagger-api/apidom-core": "^1.8.0", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0", @@ -3504,15 +4269,15 @@ } }, "node_modules/@swagger-api/apidom-ns-json-schema-draft-6": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-json-schema-draft-6/-/apidom-ns-json-schema-draft-6-1.5.1.tgz", - "integrity": "sha512-sNRDQybpzl16HwktI0by0nWj85Rpmx/K1Qc6e4uQRmpPeozJTi8hAdyxw9ays1WJI+Bao9YEz+xJNAqNIE5xlg==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-json-schema-draft-6/-/apidom-ns-json-schema-draft-6-1.8.0.tgz", + "integrity": "sha512-RlO/P8VpQ55hhrP4MMf9wyiBWBbrEnEhN1MtTIyF/P04+WxRBPCOVmAFiCJ9DAI6ppJIU+PBn/5wF7mpUCmA6Q==", "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.26.10", - "@swagger-api/apidom-core": "^1.5.1", - "@swagger-api/apidom-error": "^1.5.1", - "@swagger-api/apidom-ns-json-schema-draft-4": "^1.5.1", + "@swagger-api/apidom-core": "^1.8.0", + "@swagger-api/apidom-error": "^1.8.0", + "@swagger-api/apidom-ns-json-schema-draft-4": "^1.8.0", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0", @@ -3520,15 +4285,15 @@ } }, "node_modules/@swagger-api/apidom-ns-json-schema-draft-7": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-json-schema-draft-7/-/apidom-ns-json-schema-draft-7-1.5.1.tgz", - "integrity": "sha512-hdgYjOzZCN866F/BP5tuReZmVTZF2NTNykOwILhR/uoDR2YvgvwvHbnifsywLhreZOkhf3HIbfvCkQnIopkluw==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-json-schema-draft-7/-/apidom-ns-json-schema-draft-7-1.8.0.tgz", + "integrity": "sha512-RDY2TxaJ/wCUBDq9ZqLM8E9Ub4kSyJ5USqjp5HsgRkYOkXKZzXKnEDwtTz2ZO4s+9ocjQMMEtWNvpCHYTR/JFA==", "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.26.10", - "@swagger-api/apidom-core": "^1.5.1", - "@swagger-api/apidom-error": "^1.5.1", - "@swagger-api/apidom-ns-json-schema-draft-6": "^1.5.1", + "@swagger-api/apidom-core": "^1.8.0", + "@swagger-api/apidom-error": "^1.8.0", + "@swagger-api/apidom-ns-json-schema-draft-6": "^1.8.0", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0", @@ -3536,16 +4301,16 @@ } }, "node_modules/@swagger-api/apidom-ns-openapi-2": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-openapi-2/-/apidom-ns-openapi-2-1.5.1.tgz", - "integrity": "sha512-KnFYGqvlHBeczLs5P1R1dCfDGW3O7LaLu/AmFLRvt0ya8AXwkF4gd5gHsXKn0lXBeAc3kEwHAValtg6WNR8keQ==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-openapi-2/-/apidom-ns-openapi-2-1.8.0.tgz", + "integrity": "sha512-9GZDWZc28RcpuinZjSnK7L6TVKtBYKb3n0SGqITKfNp2CRKcEwIeyenQjiES4/lwcT3VYIROByG89+6KHX6p2w==", "license": "Apache-2.0", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.26.10", - "@swagger-api/apidom-core": "^1.5.1", - "@swagger-api/apidom-error": "^1.5.1", - "@swagger-api/apidom-ns-json-schema-draft-4": "^1.5.1", + "@swagger-api/apidom-core": "^1.8.0", + "@swagger-api/apidom-error": "^1.8.0", + "@swagger-api/apidom-ns-json-schema-draft-4": "^1.8.0", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0", @@ -3553,15 +4318,15 @@ } }, "node_modules/@swagger-api/apidom-ns-openapi-3-0": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-openapi-3-0/-/apidom-ns-openapi-3-0-1.5.1.tgz", - "integrity": "sha512-n3KaIh7dVkINDC7g8osBpxvYCZnsDHHg8rOvOYy1kKlZHi7xd3Ui83rDnKCsOsdsKlFdIdd6isBcBEBQazgwPA==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-openapi-3-0/-/apidom-ns-openapi-3-0-1.8.0.tgz", + "integrity": "sha512-c1OcjKo/WDd13b08WW1ENm2tArYJunO2SsRnqhg//Z6UOJl+5q4ykIWi96zx/yxh6+kPFVCylU5Mxl+eNW35ng==", "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.26.10", - "@swagger-api/apidom-core": "^1.5.1", - "@swagger-api/apidom-error": "^1.5.1", - "@swagger-api/apidom-ns-json-schema-draft-4": "^1.5.1", + "@swagger-api/apidom-core": "^1.8.0", + "@swagger-api/apidom-error": "^1.8.0", + "@swagger-api/apidom-ns-json-schema-draft-4": "^1.8.0", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0", @@ -3569,17 +4334,36 @@ } }, "node_modules/@swagger-api/apidom-ns-openapi-3-1": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-openapi-3-1/-/apidom-ns-openapi-3-1-1.5.1.tgz", - "integrity": "sha512-rJPZH969I67snT6ux3Dve5QXaHCfm/phv20kAojR50fW5FPbR+nn4a9FIi59F3OrD69zQascKUrJb24ieFVHIw==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-openapi-3-1/-/apidom-ns-openapi-3-1-1.8.0.tgz", + "integrity": "sha512-l19IeQG8I2i3510jNd7OO99f1hqV6zlVkHNKgLSsjufMjIP30p8iJ1tz6QPoVxC5S8ZRCijEUCo0rsyVpITV0g==", "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.26.10", - "@swagger-api/apidom-ast": "^1.5.1", - "@swagger-api/apidom-core": "^1.5.1", - "@swagger-api/apidom-json-pointer": "^1.5.1", - "@swagger-api/apidom-ns-json-schema-2020-12": "^1.5.1", - "@swagger-api/apidom-ns-openapi-3-0": "^1.5.1", + "@swagger-api/apidom-ast": "^1.8.0", + "@swagger-api/apidom-core": "^1.8.0", + "@swagger-api/apidom-json-pointer": "^1.8.0", + "@swagger-api/apidom-ns-json-schema-2020-12": "^1.8.0", + "@swagger-api/apidom-ns-openapi-3-0": "^1.8.0", + "@types/ramda": "~0.30.0", + "ramda": "~0.30.0", + "ramda-adjunct": "^5.0.0", + "ts-mixer": "^6.0.3" + } + }, + "node_modules/@swagger-api/apidom-ns-openapi-3-2": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-openapi-3-2/-/apidom-ns-openapi-3-2-1.8.0.tgz", + "integrity": "sha512-RJqLKqXV1x9N358PXzD5tIS3fhGVP1axIZBXFfV3pI/1QFprUq0qjxU0yyW26BRsP81ZXHY/41WIwBPmeDLJXA==", + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime-corejs3": "^7.26.10", + "@swagger-api/apidom-ast": "^1.8.0", + "@swagger-api/apidom-core": "^1.8.0", + "@swagger-api/apidom-json-pointer": "^1.8.0", + "@swagger-api/apidom-ns-json-schema-2020-12": "^1.8.0", + "@swagger-api/apidom-ns-openapi-3-0": "^1.8.0", + "@swagger-api/apidom-ns-openapi-3-1": "^1.8.0", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0", @@ -3587,144 +4371,144 @@ } }, "node_modules/@swagger-api/apidom-parser-adapter-api-design-systems-json": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-api-design-systems-json/-/apidom-parser-adapter-api-design-systems-json-1.5.1.tgz", - "integrity": "sha512-XomzUhgy+w1toxJMjN1mXKITl88QPiug4e9eyNWSEQkoCD1ko0MEVZYA6/6mjwlTW2DQ4qg+XF+TFmOPlkQWeA==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-api-design-systems-json/-/apidom-parser-adapter-api-design-systems-json-1.8.0.tgz", + "integrity": "sha512-gFvwDoMOLHsWGCQk+zuA9bBR76jNhNaUlhElnvAARllYosmwuYNh0AnLfXCs2+r8j6Oy0WxZs/cIsRmspiDtTQ==", "license": "Apache-2.0", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.26.10", - "@swagger-api/apidom-core": "^1.5.1", - "@swagger-api/apidom-ns-api-design-systems": "^1.5.1", - "@swagger-api/apidom-parser-adapter-json": "^1.5.1", + "@swagger-api/apidom-core": "^1.8.0", + "@swagger-api/apidom-ns-api-design-systems": "^1.8.0", + "@swagger-api/apidom-parser-adapter-json": "^1.8.0", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-api-design-systems-yaml": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-api-design-systems-yaml/-/apidom-parser-adapter-api-design-systems-yaml-1.5.1.tgz", - "integrity": "sha512-pfa+iQwMLhDcE4CYi4pUHraAOUUo2DNeRRWZGhregWZoZPo5gVZ8w9NwSowLE19zf922A9RfzBkouI969j27QQ==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-api-design-systems-yaml/-/apidom-parser-adapter-api-design-systems-yaml-1.8.0.tgz", + "integrity": "sha512-DgeQibnf0j9A22XsaMDl+JNrrP3TJYODh4+YNkKPds6m7rBYv89wloC7cNs2fFZphY87sfhF3B2Bckp3CeR7IQ==", "license": "Apache-2.0", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.26.10", - "@swagger-api/apidom-core": "^1.5.1", - "@swagger-api/apidom-ns-api-design-systems": "^1.5.1", - "@swagger-api/apidom-parser-adapter-yaml-1-2": "^1.5.1", + "@swagger-api/apidom-core": "^1.8.0", + "@swagger-api/apidom-ns-api-design-systems": "^1.8.0", + "@swagger-api/apidom-parser-adapter-yaml-1-2": "^1.8.0", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-arazzo-json-1": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-arazzo-json-1/-/apidom-parser-adapter-arazzo-json-1-1.5.1.tgz", - "integrity": "sha512-pJrlCospvJDvh8mqLjyb0ILRPuD3rYaZlTRs340W2ADgn6m+ClrDBQwXCod5QrKmcjYqAhtLZXwnwSuZStaj+Q==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-arazzo-json-1/-/apidom-parser-adapter-arazzo-json-1-1.8.0.tgz", + "integrity": "sha512-a10UIWrV3GTOqugX83qvWZR/UjwQJffrVQ6OdD27GkhwXk0+58As551Hu5NW1W/BIgHHKlhsAmgndgE/jlz4Jg==", "license": "Apache-2.0", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.26.10", - "@swagger-api/apidom-core": "^1.5.1", - "@swagger-api/apidom-ns-arazzo-1": "^1.5.1", - "@swagger-api/apidom-parser-adapter-json": "^1.5.1", + "@swagger-api/apidom-core": "^1.8.0", + "@swagger-api/apidom-ns-arazzo-1": "^1.8.0", + "@swagger-api/apidom-parser-adapter-json": "^1.8.0", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-arazzo-yaml-1": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-arazzo-yaml-1/-/apidom-parser-adapter-arazzo-yaml-1-1.5.1.tgz", - "integrity": "sha512-Q/EZ9BGnBlj4TiEQ+Q4k/pdgZ/Le+/ppZSfcc22umnKujDNyBLGB5L0sSfTOEjANRYNo+UtPYnkctwTkJu3/ZQ==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-arazzo-yaml-1/-/apidom-parser-adapter-arazzo-yaml-1-1.8.0.tgz", + "integrity": "sha512-eK7XRuGMxQKI3R13IWki1IRzoJ6kYTkOrg9bRGaw2JmsgHHFeXVBbYTABRDsYRLe0kG7LU4Kk8OaKSqmq/IuZw==", "license": "Apache-2.0", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.26.10", - "@swagger-api/apidom-core": "^1.5.1", - "@swagger-api/apidom-ns-arazzo-1": "^1.5.1", - "@swagger-api/apidom-parser-adapter-yaml-1-2": "^1.5.1", + "@swagger-api/apidom-core": "^1.8.0", + "@swagger-api/apidom-ns-arazzo-1": "^1.8.0", + "@swagger-api/apidom-parser-adapter-yaml-1-2": "^1.8.0", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-asyncapi-json-2": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-asyncapi-json-2/-/apidom-parser-adapter-asyncapi-json-2-1.5.1.tgz", - "integrity": "sha512-GRM5iCz9eRMiTSV4iAlpuWM6q3SBndSmEMhgjDuclWiC3HF78CCNuT9KwYNFMAx1bEe5Fr8c8Gs8KNckdeCU4g==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-asyncapi-json-2/-/apidom-parser-adapter-asyncapi-json-2-1.8.0.tgz", + "integrity": "sha512-YqcrODYnlsPBghJL6hlCMVhqdjHhCresL6SpO55eoYvFJGABtl+wgYjVN5Ddug9PAw/25c9vLpth4sYb0m9+oQ==", "license": "Apache-2.0", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.26.10", - "@swagger-api/apidom-core": "^1.5.1", - "@swagger-api/apidom-ns-asyncapi-2": "^1.5.1", - "@swagger-api/apidom-parser-adapter-json": "^1.5.1", + "@swagger-api/apidom-core": "^1.8.0", + "@swagger-api/apidom-ns-asyncapi-2": "^1.8.0", + "@swagger-api/apidom-parser-adapter-json": "^1.8.0", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-asyncapi-json-3": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-asyncapi-json-3/-/apidom-parser-adapter-asyncapi-json-3-1.5.1.tgz", - "integrity": "sha512-TCMm7Ce9PwzTQw2SnRYR0smCnrE6bmGbVsjqVz4d+tQy8h6ZNkfjAqOtBasKr/KpEywpLCRgWC2YRNAHGKLndw==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-asyncapi-json-3/-/apidom-parser-adapter-asyncapi-json-3-1.8.0.tgz", + "integrity": "sha512-3oKgsXR/UmFwSXDsmM6eNObLy93VJZethhzp3bCC/Br83w8V/tkBNIXcWZs0xx2crqYDnROr20jy4Qtq6SqoCw==", "license": "Apache-2.0", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.26.10", - "@swagger-api/apidom-core": "^1.5.1", - "@swagger-api/apidom-ns-asyncapi-3": "^1.5.1", - "@swagger-api/apidom-parser-adapter-json": "^1.5.1", + "@swagger-api/apidom-core": "^1.8.0", + "@swagger-api/apidom-ns-asyncapi-3": "^1.8.0", + "@swagger-api/apidom-parser-adapter-json": "^1.8.0", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-asyncapi-yaml-2": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-asyncapi-yaml-2/-/apidom-parser-adapter-asyncapi-yaml-2-1.5.1.tgz", - "integrity": "sha512-sZQ/7kOs7+apKq22uyhF3jmhPTzt7y8Xy8cGPIp1b0PnQhbm7rT1/rrOl9qh9MqCdUip2Dx0Y+WTyyET0faZ4g==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-asyncapi-yaml-2/-/apidom-parser-adapter-asyncapi-yaml-2-1.8.0.tgz", + "integrity": "sha512-HvK2+6dlD2Q7SMHbgsFXGpDL5uiCxu4N8oOXVuy1OeapoQRxzB0LZae/rKrXj/YDITc1xQ9cbQyTsEM+Hfa2bA==", "license": "Apache-2.0", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.26.10", - "@swagger-api/apidom-core": "^1.5.1", - "@swagger-api/apidom-ns-asyncapi-2": "^1.5.1", - "@swagger-api/apidom-parser-adapter-yaml-1-2": "^1.5.1", + "@swagger-api/apidom-core": "^1.8.0", + "@swagger-api/apidom-ns-asyncapi-2": "^1.8.0", + "@swagger-api/apidom-parser-adapter-yaml-1-2": "^1.8.0", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-asyncapi-yaml-3": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-asyncapi-yaml-3/-/apidom-parser-adapter-asyncapi-yaml-3-1.5.1.tgz", - "integrity": "sha512-bYoyX/qP9SmGF6DKohPO1Fguz8/8uHF8ieSo04jrQblHbEeDVcTBG6oTFVNcpG2ZxnqaoNF2/KY4/fUSKMH/4g==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-asyncapi-yaml-3/-/apidom-parser-adapter-asyncapi-yaml-3-1.8.0.tgz", + "integrity": "sha512-ekIRVp20kntmCabQKmsEoXp6LVAqCf1MJRU94tx+n9NfAL68OVYF/47qxP5IXRyPSapa18oAAUDm09qfAg/8Uw==", "license": "Apache-2.0", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.26.10", - "@swagger-api/apidom-core": "^1.5.1", - "@swagger-api/apidom-ns-asyncapi-3": "^1.5.1", - "@swagger-api/apidom-parser-adapter-yaml-1-2": "^1.5.1", + "@swagger-api/apidom-core": "^1.8.0", + "@swagger-api/apidom-ns-asyncapi-3": "^1.8.0", + "@swagger-api/apidom-parser-adapter-yaml-1-2": "^1.8.0", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-json": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-json/-/apidom-parser-adapter-json-1.5.1.tgz", - "integrity": "sha512-zYXchiHC5wsvCImr4lgrhwuLWDH3EDz4L4KJbp8ltO1Y+3PRwPYNruKVppHdIC6d+eTBy4e110a4629rl6LQTg==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-json/-/apidom-parser-adapter-json-1.8.0.tgz", + "integrity": "sha512-hlbtGgsnLumr5LHTxuJrc6d2uDGtbhEikVQGF7UHL2rMMmPBGCIASC1HbdmkFohXFf5I80s7TuMEnelvvGwxIQ==", "license": "Apache-2.0", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.26.10", - "@swagger-api/apidom-ast": "^1.5.1", - "@swagger-api/apidom-core": "^1.5.1", - "@swagger-api/apidom-error": "^1.5.1", + "@swagger-api/apidom-ast": "^1.8.0", + "@swagger-api/apidom-core": "^1.8.0", + "@swagger-api/apidom-error": "^1.8.0", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0", @@ -3734,112 +4518,144 @@ } }, "node_modules/@swagger-api/apidom-parser-adapter-openapi-json-2": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-json-2/-/apidom-parser-adapter-openapi-json-2-1.5.1.tgz", - "integrity": "sha512-05SXfF5ate18FKlPBg4YEfyS6Sr4lmu+gppxMQ202x172ejBQjAU37iZeSKfKw1egXngAmm6OZqWGKn36WD/fw==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-json-2/-/apidom-parser-adapter-openapi-json-2-1.8.0.tgz", + "integrity": "sha512-MnuhZKGzQC/MnLADuLyWZnpAcc5Vw9UoUctEkVovADSMfuHKDHg3sCNc2cB1cOB+BjWrWU4L/Vys8TUfS4866g==", "license": "Apache-2.0", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.26.10", - "@swagger-api/apidom-core": "^1.5.1", - "@swagger-api/apidom-ns-openapi-2": "^1.5.1", - "@swagger-api/apidom-parser-adapter-json": "^1.5.1", + "@swagger-api/apidom-core": "^1.8.0", + "@swagger-api/apidom-ns-openapi-2": "^1.8.0", + "@swagger-api/apidom-parser-adapter-json": "^1.8.0", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-openapi-json-3-0": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-json-3-0/-/apidom-parser-adapter-openapi-json-3-0-1.5.1.tgz", - "integrity": "sha512-AG68rFxilJwQuwgYUlbSX89j96CzFwm7MLsMbd1Pe2k8bsZJF41bxYEWLck08hQ0v8HikZ7igJLGvkwm9Fk6EQ==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-json-3-0/-/apidom-parser-adapter-openapi-json-3-0-1.8.0.tgz", + "integrity": "sha512-mjhDbnW2MkgZ5C2iJgMPZvvOL3MLYkwwwwjGekiCo0IjcWMBUdJ6ArOS3zOjQ5NMbKu1XbYmt4/D53fFLIFcwA==", "license": "Apache-2.0", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.26.10", - "@swagger-api/apidom-core": "^1.5.1", - "@swagger-api/apidom-ns-openapi-3-0": "^1.5.1", - "@swagger-api/apidom-parser-adapter-json": "^1.5.1", + "@swagger-api/apidom-core": "^1.8.0", + "@swagger-api/apidom-ns-openapi-3-0": "^1.8.0", + "@swagger-api/apidom-parser-adapter-json": "^1.8.0", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-openapi-json-3-1": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-json-3-1/-/apidom-parser-adapter-openapi-json-3-1-1.5.1.tgz", - "integrity": "sha512-UYuaUegcqsR8DbqUS9gJnzdV/g7P61HfgjO620soSHwvDRlHCdgxd71dnaBZWT22+as8vuZABAzjQuKrtiej2g==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-json-3-1/-/apidom-parser-adapter-openapi-json-3-1-1.8.0.tgz", + "integrity": "sha512-nA9AQuGsd1YqZ9QG8CRW0f4YHU9ryY+uU8nevprSiRuAi1FQJPrS30eUgnEs7x1Em7QKU43QmSZmWYpyJCdQZA==", "license": "Apache-2.0", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.26.10", - "@swagger-api/apidom-core": "^1.5.1", - "@swagger-api/apidom-ns-openapi-3-1": "^1.5.1", - "@swagger-api/apidom-parser-adapter-json": "^1.5.1", + "@swagger-api/apidom-core": "^1.8.0", + "@swagger-api/apidom-ns-openapi-3-1": "^1.8.0", + "@swagger-api/apidom-parser-adapter-json": "^1.8.0", + "@types/ramda": "~0.30.0", + "ramda": "~0.30.0", + "ramda-adjunct": "^5.0.0" + } + }, + "node_modules/@swagger-api/apidom-parser-adapter-openapi-json-3-2": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-json-3-2/-/apidom-parser-adapter-openapi-json-3-2-1.8.0.tgz", + "integrity": "sha512-FC/Ktls4mNKY2MtHNmpPHXk5c6sD21dcaHmGGQH+wdovBlei3/xCiWOjYeT+Pr6A1mvMIG5cRhBjra3l5Jdhgw==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@babel/runtime-corejs3": "^7.26.10", + "@swagger-api/apidom-core": "^1.8.0", + "@swagger-api/apidom-ns-openapi-3-2": "^1.8.0", + "@swagger-api/apidom-parser-adapter-json": "^1.8.0", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-openapi-yaml-2": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-yaml-2/-/apidom-parser-adapter-openapi-yaml-2-1.5.1.tgz", - "integrity": "sha512-d64JVYhBa5O6Kz2H/Wr1gLf5la0T1gZ22XIf2ABPTHga8fKQjEFDhFifxVS65NX9cOglcXQo9sRvD4AZkRMEkQ==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-yaml-2/-/apidom-parser-adapter-openapi-yaml-2-1.8.0.tgz", + "integrity": "sha512-GAc2Ckr5FXvNm8Deh/NnUdQzcqhns/hxysYI9tikhxc14y1rytzmX81ATpVnKouHkZqXXNgDYhoFVG5+QFJYdg==", "license": "Apache-2.0", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.26.10", - "@swagger-api/apidom-core": "^1.5.1", - "@swagger-api/apidom-ns-openapi-2": "^1.5.1", - "@swagger-api/apidom-parser-adapter-yaml-1-2": "^1.5.1", + "@swagger-api/apidom-core": "^1.8.0", + "@swagger-api/apidom-ns-openapi-2": "^1.8.0", + "@swagger-api/apidom-parser-adapter-yaml-1-2": "^1.8.0", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-openapi-yaml-3-0": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-yaml-3-0/-/apidom-parser-adapter-openapi-yaml-3-0-1.5.1.tgz", - "integrity": "sha512-MgyCo6rz+jH1cR5CpKleT1HOXOLoK2LuP7CrEGsuRNCA4nR6w/H4T75XYxUCWO/9T3870vkxDM8hp8IRW5xtQg==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-yaml-3-0/-/apidom-parser-adapter-openapi-yaml-3-0-1.8.0.tgz", + "integrity": "sha512-f9AFCXgdqA1xbUrTCcQ0NqarQqBhpw79M5rmhu5R51pHtaVx9N+FxlHMqGYsdL9/Opq3eKtsd0in0JBC77qZEQ==", "license": "Apache-2.0", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.26.10", - "@swagger-api/apidom-core": "^1.5.1", - "@swagger-api/apidom-ns-openapi-3-0": "^1.5.1", - "@swagger-api/apidom-parser-adapter-yaml-1-2": "^1.5.1", + "@swagger-api/apidom-core": "^1.8.0", + "@swagger-api/apidom-ns-openapi-3-0": "^1.8.0", + "@swagger-api/apidom-parser-adapter-yaml-1-2": "^1.8.0", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-openapi-yaml-3-1": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-yaml-3-1/-/apidom-parser-adapter-openapi-yaml-3-1-1.5.1.tgz", - "integrity": "sha512-9ED9pmYqCfKqfeeDtGrXU7+gISjt6bh93XO5qCexwfHCbzrTdjiMcWMTCnaRjXvgv819LAKUDIDnnn88EGpUNg==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-yaml-3-1/-/apidom-parser-adapter-openapi-yaml-3-1-1.8.0.tgz", + "integrity": "sha512-zmWJAspilTYZm6ZtpQJ65U1S+d+wOk6Wwi3TJkRmNDIygmY3jrBEpS65Lrc6D/Mk1bwsKyZN095cXAxCPajt8g==", "license": "Apache-2.0", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.26.10", - "@swagger-api/apidom-core": "^1.5.1", - "@swagger-api/apidom-ns-openapi-3-1": "^1.5.1", - "@swagger-api/apidom-parser-adapter-yaml-1-2": "^1.5.1", + "@swagger-api/apidom-core": "^1.8.0", + "@swagger-api/apidom-ns-openapi-3-1": "^1.8.0", + "@swagger-api/apidom-parser-adapter-yaml-1-2": "^1.8.0", + "@types/ramda": "~0.30.0", + "ramda": "~0.30.0", + "ramda-adjunct": "^5.0.0" + } + }, + "node_modules/@swagger-api/apidom-parser-adapter-openapi-yaml-3-2": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-yaml-3-2/-/apidom-parser-adapter-openapi-yaml-3-2-1.8.0.tgz", + "integrity": "sha512-V6Q48ihqpX/IJ98MF9DUpwhGUzN+ZKLQEQm8M7He51geAsKillxDSHOFltdH38BCGW+CpbkEWnWRmzgV4ehjIA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@babel/runtime-corejs3": "^7.26.10", + "@swagger-api/apidom-core": "^1.8.0", + "@swagger-api/apidom-ns-openapi-3-2": "^1.8.0", + "@swagger-api/apidom-parser-adapter-yaml-1-2": "^1.8.0", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", "ramda-adjunct": "^5.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-yaml-1-2": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-yaml-1-2/-/apidom-parser-adapter-yaml-1-2-1.5.1.tgz", - "integrity": "sha512-jMZUwbS7P2n/3BG+w0Mg+G2m6tY1zuDCACTpVh3UjIMl15k+6VIyB49kKIs1q9BZRX8rbnJmmzpYcjhjDOgaqA==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-yaml-1-2/-/apidom-parser-adapter-yaml-1-2-1.8.0.tgz", + "integrity": "sha512-uUhXEXwK4G3cVO52cTzoJG6Sbke8pgEFXHK+LMIXTZ0zb3gVfGD4N9bDyGB8Uibr41fK3DjUycIx5x9ZsR8l+Q==", "license": "Apache-2.0", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.26.10", - "@swagger-api/apidom-ast": "^1.5.1", - "@swagger-api/apidom-core": "^1.5.1", - "@swagger-api/apidom-error": "^1.5.1", + "@swagger-api/apidom-ast": "^1.8.0", + "@swagger-api/apidom-core": "^1.8.0", + "@swagger-api/apidom-error": "^1.8.0", "@tree-sitter-grammars/tree-sitter-yaml": "=0.7.1", "@types/ramda": "~0.30.0", "ramda": "~0.30.0", @@ -3881,14 +4697,14 @@ } }, "node_modules/@swagger-api/apidom-reference": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-reference/-/apidom-reference-1.5.1.tgz", - "integrity": "sha512-KppyiuQ8EY1vnhb2RsCty60DKYP1jszmxNKHAAGaMgKOmTcoGCvPNDl0Fn6IPlEfXsy3yqYn1CsEePC3BcGtHg==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-reference/-/apidom-reference-1.8.0.tgz", + "integrity": "sha512-TnNqXiWMXgzS3uDm8KYdgJ+O+w2TAcGrQpmdQot2XlDw5pxxzmH22A0xgdmvv/XYB9BBMBPzmxaI/MPiF9i8kg==", "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.26.10", - "@swagger-api/apidom-core": "^1.5.1", - "@swagger-api/apidom-error": "^1.5.1", + "@swagger-api/apidom-core": "^1.8.0", + "@swagger-api/apidom-error": "^1.8.0", "@types/ramda": "~0.30.0", "axios": "^1.12.2", "minimatch": "^10.2.1", @@ -3896,28 +4712,67 @@ "ramda-adjunct": "^5.0.0" }, "optionalDependencies": { - "@swagger-api/apidom-json-pointer": "^1.5.1", - "@swagger-api/apidom-ns-arazzo-1": "^1.5.1", - "@swagger-api/apidom-ns-asyncapi-2": "^1.5.1", - "@swagger-api/apidom-ns-openapi-2": "^1.5.1", - "@swagger-api/apidom-ns-openapi-3-0": "^1.5.1", - "@swagger-api/apidom-ns-openapi-3-1": "^1.5.1", - "@swagger-api/apidom-parser-adapter-api-design-systems-json": "^1.5.1", - "@swagger-api/apidom-parser-adapter-api-design-systems-yaml": "^1.5.1", - "@swagger-api/apidom-parser-adapter-arazzo-json-1": "^1.5.1", - "@swagger-api/apidom-parser-adapter-arazzo-yaml-1": "^1.5.1", - "@swagger-api/apidom-parser-adapter-asyncapi-json-2": "^1.5.1", - "@swagger-api/apidom-parser-adapter-asyncapi-json-3": "^1.5.1", - "@swagger-api/apidom-parser-adapter-asyncapi-yaml-2": "^1.5.1", - "@swagger-api/apidom-parser-adapter-asyncapi-yaml-3": "^1.5.1", - "@swagger-api/apidom-parser-adapter-json": "^1.5.1", - "@swagger-api/apidom-parser-adapter-openapi-json-2": "^1.5.1", - "@swagger-api/apidom-parser-adapter-openapi-json-3-0": "^1.5.1", - "@swagger-api/apidom-parser-adapter-openapi-json-3-1": "^1.5.1", - "@swagger-api/apidom-parser-adapter-openapi-yaml-2": "^1.5.1", - "@swagger-api/apidom-parser-adapter-openapi-yaml-3-0": "^1.5.1", - "@swagger-api/apidom-parser-adapter-openapi-yaml-3-1": "^1.5.1", - "@swagger-api/apidom-parser-adapter-yaml-1-2": "^1.5.1" + "@swagger-api/apidom-json-pointer": "^1.8.0", + "@swagger-api/apidom-ns-arazzo-1": "^1.8.0", + "@swagger-api/apidom-ns-asyncapi-2": "^1.8.0", + "@swagger-api/apidom-ns-openapi-2": "^1.8.0", + "@swagger-api/apidom-ns-openapi-3-0": "^1.8.0", + "@swagger-api/apidom-ns-openapi-3-1": "^1.8.0", + "@swagger-api/apidom-ns-openapi-3-2": "^1.8.0", + "@swagger-api/apidom-parser-adapter-api-design-systems-json": "^1.8.0", + "@swagger-api/apidom-parser-adapter-api-design-systems-yaml": "^1.8.0", + "@swagger-api/apidom-parser-adapter-arazzo-json-1": "^1.8.0", + "@swagger-api/apidom-parser-adapter-arazzo-yaml-1": "^1.8.0", + "@swagger-api/apidom-parser-adapter-asyncapi-json-2": "^1.8.0", + "@swagger-api/apidom-parser-adapter-asyncapi-json-3": "^1.8.0", + "@swagger-api/apidom-parser-adapter-asyncapi-yaml-2": "^1.8.0", + "@swagger-api/apidom-parser-adapter-asyncapi-yaml-3": "^1.8.0", + "@swagger-api/apidom-parser-adapter-json": "^1.8.0", + "@swagger-api/apidom-parser-adapter-openapi-json-2": "^1.8.0", + "@swagger-api/apidom-parser-adapter-openapi-json-3-0": "^1.8.0", + "@swagger-api/apidom-parser-adapter-openapi-json-3-1": "^1.8.0", + "@swagger-api/apidom-parser-adapter-openapi-json-3-2": "^1.8.0", + "@swagger-api/apidom-parser-adapter-openapi-yaml-2": "^1.8.0", + "@swagger-api/apidom-parser-adapter-openapi-yaml-3-0": "^1.8.0", + "@swagger-api/apidom-parser-adapter-openapi-yaml-3-1": "^1.8.0", + "@swagger-api/apidom-parser-adapter-openapi-yaml-3-2": "^1.8.0", + "@swagger-api/apidom-parser-adapter-yaml-1-2": "^1.8.0" + } + }, + "node_modules/@swagger-api/apidom-reference/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@swagger-api/apidom-reference/node_modules/brace-expansion": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", + "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@swagger-api/apidom-reference/node_modules/minimatch": { + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", + "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/@swaggerexpert/cookie": { @@ -3945,14 +4800,14 @@ } }, "node_modules/@swc/core": { - "version": "1.15.18", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.15.18.tgz", - "integrity": "sha512-z87aF9GphWp//fnkRsqvtY+inMVPgYW3zSlXH1kJFvRT5H/wiAn+G32qW5l3oEk63KSF1x3Ov0BfHCObAmT8RA==", + "version": "1.15.33", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.15.33.tgz", + "integrity": "sha512-jOlwnFV2xhuuZeAUILGFULeR6vDPfijEJ57evfocwznQldLU3w2cZ9bSDryY9ip+AsM3r1NJKzf47V2NXebkeQ==", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { "@swc/counter": "^0.1.3", - "@swc/types": "^0.1.25" + "@swc/types": "^0.1.26" }, "engines": { "node": ">=10" @@ -3962,16 +4817,18 @@ "url": "https://opencollective.com/swc" }, "optionalDependencies": { - "@swc/core-darwin-arm64": "1.15.18", - "@swc/core-darwin-x64": "1.15.18", - "@swc/core-linux-arm-gnueabihf": "1.15.18", - "@swc/core-linux-arm64-gnu": "1.15.18", - "@swc/core-linux-arm64-musl": "1.15.18", - "@swc/core-linux-x64-gnu": "1.15.18", - "@swc/core-linux-x64-musl": "1.15.18", - "@swc/core-win32-arm64-msvc": "1.15.18", - "@swc/core-win32-ia32-msvc": "1.15.18", - "@swc/core-win32-x64-msvc": "1.15.18" + "@swc/core-darwin-arm64": "1.15.33", + "@swc/core-darwin-x64": "1.15.33", + "@swc/core-linux-arm-gnueabihf": "1.15.33", + "@swc/core-linux-arm64-gnu": "1.15.33", + "@swc/core-linux-arm64-musl": "1.15.33", + "@swc/core-linux-ppc64-gnu": "1.15.33", + "@swc/core-linux-s390x-gnu": "1.15.33", + "@swc/core-linux-x64-gnu": "1.15.33", + "@swc/core-linux-x64-musl": "1.15.33", + "@swc/core-win32-arm64-msvc": "1.15.33", + "@swc/core-win32-ia32-msvc": "1.15.33", + "@swc/core-win32-x64-msvc": "1.15.33" }, "peerDependencies": { "@swc/helpers": ">=0.5.17" @@ -3983,9 +4840,9 @@ } }, "node_modules/@swc/core-darwin-arm64": { - "version": "1.15.18", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.15.18.tgz", - "integrity": "sha512-+mIv7uBuSaywN3C9LNuWaX1jJJ3SKfiJuE6Lr3bd+/1Iv8oMU7oLBjYMluX1UrEPzwN2qCdY6Io0yVicABoCwQ==", + "version": "1.15.33", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.15.33.tgz", + "integrity": "sha512-N+L0uXhuO7FIfzqwgxmzv0zIpV0qEp8wPX3QQs2p4atjMoywup2JTeDlXPw+z9pWJGCae3JjM+tZ6myclI+2gA==", "cpu": [ "arm64" ], @@ -3999,9 +4856,9 @@ } }, "node_modules/@swc/core-darwin-x64": { - "version": "1.15.18", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.15.18.tgz", - "integrity": "sha512-wZle0eaQhnzxWX5V/2kEOI6Z9vl/lTFEC6V4EWcn+5pDjhemCpQv9e/TDJ0GIoiClX8EDWRvuZwh+Z3dhL1NAg==", + "version": "1.15.33", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.15.33.tgz", + "integrity": "sha512-/Il4QHSOhV4FekbsDtkrNmKbsX26oSysvgrRswa/RYOHXAkwXDbB4jaeKq6PsJLSPkzJ2KzQ061gtBnk0vNHfA==", "cpu": [ "x64" ], @@ -4015,9 +4872,9 @@ } }, "node_modules/@swc/core-linux-arm-gnueabihf": { - "version": "1.15.18", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.15.18.tgz", - "integrity": "sha512-ao61HGXVqrJFHAcPtF4/DegmwEkVCo4HApnotLU8ognfmU8x589z7+tcf3hU+qBiU1WOXV5fQX6W9Nzs6hjxDw==", + "version": "1.15.33", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.15.33.tgz", + "integrity": "sha512-C64hBnBxq4viOPQ8hlx+2lJ23bzZBGnjw7ryALmS+0Q3zHmwO8lw1/DArLENw4Q18/0w5wdEO1k3m1wWNtKGqQ==", "cpu": [ "arm" ], @@ -4031,9 +4888,9 @@ } }, "node_modules/@swc/core-linux-arm64-gnu": { - "version": "1.15.18", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.15.18.tgz", - "integrity": "sha512-3xnctOBLIq3kj8PxOCgPrGjBLP/kNOddr6f5gukYt/1IZxsITQaU9TDyjeX6jG+FiCIHjCuWuffsyQDL5Ew1bg==", + "version": "1.15.33", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.15.33.tgz", + "integrity": "sha512-TRJfnJbX3jqpxRDRoieMzRiCBS5jOmXNb3iQXmcgjFEHKLnAgK1RZRU8Cq1MsPqO4jAJp/ld1G4O3fXuxv85uw==", "cpu": [ "arm64" ], @@ -4047,9 +4904,9 @@ } }, "node_modules/@swc/core-linux-arm64-musl": { - "version": "1.15.18", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.15.18.tgz", - "integrity": "sha512-0a+Lix+FSSHBSBOA0XznCcHo5/1nA6oLLjcnocvzXeqtdjnPb+SvchItHI+lfeiuj1sClYPDvPMLSLyXFaiIKw==", + "version": "1.15.33", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.15.33.tgz", + "integrity": "sha512-il7tYM+CpUNzieQbwAjFT1P8zqAhmGWNAGhQZBnxurXZ0aNn+5nqYFTEUKNZl7QibtT0uQXzTZrNGHCIj6Y1Og==", "cpu": [ "arm64" ], @@ -4062,10 +4919,42 @@ "node": ">=10" } }, + "node_modules/@swc/core-linux-ppc64-gnu": { + "version": "1.15.33", + "resolved": "https://registry.npmjs.org/@swc/core-linux-ppc64-gnu/-/core-linux-ppc64-gnu-1.15.33.tgz", + "integrity": "sha512-ZtNBwN0Z7CFj9Il0FcPaKdjgP7URyKu/3RfH46vq+0paOBqLj4NYldD6Qo//Duif/7IOtAraUfDOmp0PLAufog==", + "cpu": [ + "ppc64" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-s390x-gnu": { + "version": "1.15.33", + "resolved": "https://registry.npmjs.org/@swc/core-linux-s390x-gnu/-/core-linux-s390x-gnu-1.15.33.tgz", + "integrity": "sha512-De1IyajoOmhOYYjw/lx66bKlyDpHZTueqwpDrWgf5O7T6d1ODeJJO9/OqMBmrBQc5C+dNnlmIufHsp4QVCWufA==", + "cpu": [ + "s390x" + ], + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, "node_modules/@swc/core-linux-x64-gnu": { - "version": "1.15.18", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.15.18.tgz", - "integrity": "sha512-wG9J8vReUlpaHz4KOD/5UE1AUgirimU4UFT9oZmupUDEofxJKYb1mTA/DrMj0s78bkBiNI+7Fo2EgPuvOJfuAA==", + "version": "1.15.33", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.15.33.tgz", + "integrity": "sha512-mGTH0YxmUN+x6vRN/I6NOk5X0ogNktkwPnJ94IMvR7QjhRDwL0O8RXEDhyUM0YtwWrryBOqaJQBX4zruxEPRGw==", "cpu": [ "x64" ], @@ -4079,9 +4968,9 @@ } }, "node_modules/@swc/core-linux-x64-musl": { - "version": "1.15.18", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.15.18.tgz", - "integrity": "sha512-4nwbVvCphKzicwNWRmvD5iBaZj8JYsRGa4xOxJmOyHlMDpsvvJ2OR2cODlvWyGFH6BYL1MfIAK3qph3hp0Az6g==", + "version": "1.15.33", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.15.33.tgz", + "integrity": "sha512-hj628ZkSEJf6zMf5VMbYrG2O6QqyTIp2qwY6VlCjvIa9lAEZ5c2lfPblCLVGYubTeLJDxadLB/CxqQYOQABeEQ==", "cpu": [ "x64" ], @@ -4095,9 +4984,9 @@ } }, "node_modules/@swc/core-win32-arm64-msvc": { - "version": "1.15.18", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.15.18.tgz", - "integrity": "sha512-zk0RYO+LjiBCat2RTMHzAWaMky0cra9loH4oRrLKLLNuL+jarxKLFDA8xTZWEkCPLjUTwlRN7d28eDLLMgtUcQ==", + "version": "1.15.33", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.15.33.tgz", + "integrity": "sha512-GV2oohtN2/5+KSccl86VULu3aT+LrISC8uzgSq0FRnikpD+Zwc+sBlXmoKQ+Db6jI57ITUOIB8jRkdGMABC29g==", "cpu": [ "arm64" ], @@ -4111,9 +5000,9 @@ } }, "node_modules/@swc/core-win32-ia32-msvc": { - "version": "1.15.18", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.15.18.tgz", - "integrity": "sha512-yVuTrZ0RccD5+PEkpcLOBAuPbYBXS6rslENvIXfvJGXSdX5QGi1ehC4BjAMl5FkKLiam4kJECUI0l7Hq7T1vwg==", + "version": "1.15.33", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.15.33.tgz", + "integrity": "sha512-gtyvzSNR8DHKfFEA2uqb8Ld1myqi6uEg2jyeUq3ikn5ytYs7H8RpZYC8mdy4NXr8hfcdJfCLXPlYaqqfBXpoEQ==", "cpu": [ "ia32" ], @@ -4127,9 +5016,9 @@ } }, "node_modules/@swc/core-win32-x64-msvc": { - "version": "1.15.18", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.15.18.tgz", - "integrity": "sha512-7NRmE4hmUQNCbYU3Hn9Tz57mK9Qq4c97ZS+YlamlK6qG9Fb5g/BB3gPDe0iLlJkns/sYv2VWSkm8c3NmbEGjbg==", + "version": "1.15.33", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.15.33.tgz", + "integrity": "sha512-d6fRqQSkJI+kmMEBWaDQ7TMl8+YjLYbwRUPZQ9DY0ORBJeTzOrG0twvfvlZ2xgw6jA0ScQKgfBm4vHLSLl5Hqg==", "cpu": [ "x64" ], @@ -4149,33 +5038,14 @@ "license": "Apache-2.0" }, "node_modules/@swc/types": { - "version": "0.1.25", - "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.25.tgz", - "integrity": "sha512-iAoY/qRhNH8a/hBvm3zKj9qQ4oc2+3w1unPJa2XvTK3XjeLXtzcCingVPw/9e5mn1+0yPqxcBGp9Jf0pkfMb1g==", + "version": "0.1.26", + "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.26.tgz", + "integrity": "sha512-lyMwd7WGgG79RS7EERZV3T8wMdmPq3xwyg+1nmAM64kIhx5yl+juO2PYIHb7vTiPgPCj8LYjsNV2T5wiQHUEaw==", "license": "Apache-2.0", "dependencies": { "@swc/counter": "^0.1.3" } }, - "node_modules/@szmarczak/http-timer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", - "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", - "license": "MIT", - "dependencies": { - "defer-to-connect": "^2.0.1" - }, - "engines": { - "node": ">=14.16" - } - }, - "node_modules/@testim/chrome-version": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@testim/chrome-version/-/chrome-version-1.1.4.tgz", - "integrity": "sha512-kIhULpw9TrGYnHp/8VfdcneIcxKnLixmADtukQRtJUmsVlMg0niMkwV0xZmi8hqa57xqilIHjWFA0GKvEjVU5g==", - "license": "MIT", - "optional": true - }, "node_modules/@testing-library/dom": { "version": "10.4.1", "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.1.tgz", @@ -4235,14 +5105,13 @@ } }, "node_modules/@tokenizer/inflate": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/@tokenizer/inflate/-/inflate-0.2.7.tgz", - "integrity": "sha512-MADQgmZT1eKjp06jpI2yozxaU9uVs4GzzgSL+uEq7bVcJ9V1ZXQkeGNql1fsSI0gMy1vhvNTNbUqrx+pZfJVmg==", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@tokenizer/inflate/-/inflate-0.4.1.tgz", + "integrity": "sha512-2mAv+8pkG6GIZiF1kNg1jAjh27IDxEPKwdGul3snfztFerfPGI1LjDezZp3i7BElXompqEtPmoPx6c2wgtWsOA==", "license": "MIT", "dependencies": { - "debug": "^4.4.0", - "fflate": "^0.8.2", - "token-types": "^6.0.0" + "debug": "^4.4.3", + "token-types": "^6.1.1" }, "engines": { "node": ">=18" @@ -4258,13 +5127,6 @@ "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==", "license": "MIT" }, - "node_modules/@tootallnate/quickjs-emscripten": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", - "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==", - "license": "MIT", - "optional": true - }, "node_modules/@tybys/wasm-util": { "version": "0.10.1", "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", @@ -4555,9 +5417,9 @@ } }, "node_modules/@types/debug": { - "version": "4.1.12", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", - "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "version": "4.1.13", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.13.tgz", + "integrity": "sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw==", "license": "MIT", "dependencies": { "@types/ms": "*" @@ -4651,12 +5513,12 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.5.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.5.0.tgz", - "integrity": "sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw==", + "version": "25.7.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.7.0.tgz", + "integrity": "sha512-z+pdZyxE+RTQE9AcboAZCb4otwcrvgHD+GlBpPgn0emDVt0ohrTMhAwlr2Wd9nZ+nihhYFxO2pThz3C5qSu2Eg==", "license": "MIT", "dependencies": { - "undici-types": "~7.18.0" + "undici-types": "~7.21.0" } }, "node_modules/@types/ramda": { @@ -4719,30 +5581,20 @@ "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", "license": "MIT" }, - "node_modules/@types/yauzl": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", - "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", - "license": "MIT", - "optional": true, - "dependencies": { - "@types/node": "*" - } - }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.56.1.tgz", - "integrity": "sha512-Jz9ZztpB37dNC+HU2HI28Bs9QXpzCz+y/twHOwhyrIRdbuVDxSytJNDl6z/aAKlaRIwC7y8wJdkBv7FxYGgi0A==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.59.3.tgz", + "integrity": "sha512-PwFvSKsXGShKGW6n5bZOhGHEcCZXM8HofLK9fNsEwZXzFRjoY+XT1Vsf1zgyXdwTr0ZYz1/2tkZ0DBTT9jZjhw==", "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.12.2", - "@typescript-eslint/scope-manager": "8.56.1", - "@typescript-eslint/type-utils": "8.56.1", - "@typescript-eslint/utils": "8.56.1", - "@typescript-eslint/visitor-keys": "8.56.1", + "@typescript-eslint/scope-manager": "8.59.3", + "@typescript-eslint/type-utils": "8.59.3", + "@typescript-eslint/utils": "8.59.3", + "@typescript-eslint/visitor-keys": "8.59.3", "ignore": "^7.0.5", "natural-compare": "^1.4.0", - "ts-api-utils": "^2.4.0" + "ts-api-utils": "^2.5.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4752,21 +5604,30 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^8.56.1", + "@typescript-eslint/parser": "^8.59.3", "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "license": "MIT", + "engines": { + "node": ">= 4" } }, "node_modules/@typescript-eslint/parser": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.56.1.tgz", - "integrity": "sha512-klQbnPAAiGYFyI02+znpBRLyjL4/BrBd0nyWkdC0s/6xFLkXYQ8OoRrSkqacS1ddVxf/LDyODIKbQ5TgKAf/Fg==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.59.3.tgz", + "integrity": "sha512-HPwA+hVkfcriajbNvTmZv4VRauibay+cWArYUYq7u7W7PmGShMxbPxLvrwDme55a6d5alG3nrYfhyJ/G28XlLg==", "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.56.1", - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/typescript-estree": "8.56.1", - "@typescript-eslint/visitor-keys": "8.56.1", + "@typescript-eslint/scope-manager": "8.59.3", + "@typescript-eslint/types": "8.59.3", + "@typescript-eslint/typescript-estree": "8.59.3", + "@typescript-eslint/visitor-keys": "8.59.3", "debug": "^4.4.3" }, "engines": { @@ -4778,17 +5639,17 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/project-service": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.56.1.tgz", - "integrity": "sha512-TAdqQTzHNNvlVFfR+hu2PDJrURiwKsUvxFn1M0h95BB8ah5jejas08jUWG4dBA68jDMI988IvtfdAI53JzEHOQ==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.59.3.tgz", + "integrity": "sha512-ECiUWa/KYRGDFUqTNehaRgzDshnJfkTABJxVemHk4ko22gcr0ukloKjWvyQ64g8YCV/UI47kN1dbmjf/GaQYng==", "license": "MIT", "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.56.1", - "@typescript-eslint/types": "^8.56.1", + "@typescript-eslint/tsconfig-utils": "^8.59.3", + "@typescript-eslint/types": "^8.59.3", "debug": "^4.4.3" }, "engines": { @@ -4799,17 +5660,17 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.56.1.tgz", - "integrity": "sha512-YAi4VDKcIZp0O4tz/haYKhmIDZFEUPOreKbfdAN3SzUDMcPhJ8QI99xQXqX+HoUVq8cs85eRKnD+rne2UAnj2w==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.59.3.tgz", + "integrity": "sha512-t2LvZnoEfzKtnPjgeEu41xw5gxq9mQVfYy4OoZ4Vlt0sk3JwxmhCca/AR7DwOiHrjWgjAj6as4AhRLKSDfvZIA==", "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/visitor-keys": "8.56.1" + "@typescript-eslint/types": "8.59.3", + "@typescript-eslint/visitor-keys": "8.59.3" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4820,9 +5681,9 @@ } }, "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.56.1.tgz", - "integrity": "sha512-qOtCYzKEeyr3aR9f28mPJqBty7+DBqsdd63eO0yyDwc6vgThj2UjWfJIcsFeSucYydqcuudMOprZ+x1SpF3ZuQ==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.59.3.tgz", + "integrity": "sha512-PcIJHjmaREXLgIAIzLnSY9VucEzz8FKXsRgFa1DmdGCK/5tJpW03TKJF01Q6VZd1lLdz2sIKPWaDUZN9dp//dw==", "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4832,20 +5693,20 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.56.1.tgz", - "integrity": "sha512-yB/7dxi7MgTtGhZdaHCemf7PuwrHMenHjmzgUW1aJpO+bBU43OycnM3Wn+DdvDO/8zzA9HlhaJ0AUGuvri4oGg==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.59.3.tgz", + "integrity": "sha512-g71d8QD8UaiHGvrJwyIS1hCX5r63w6Jll+4VEYhEAHXTDIqX1JgxhTAbEHtKntL9kuc4jRo7/GWw5xfCepSccQ==", "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/typescript-estree": "8.56.1", - "@typescript-eslint/utils": "8.56.1", + "@typescript-eslint/types": "8.59.3", + "@typescript-eslint/typescript-estree": "8.59.3", + "@typescript-eslint/utils": "8.59.3", "debug": "^4.4.3", - "ts-api-utils": "^2.4.0" + "ts-api-utils": "^2.5.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4856,13 +5717,13 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/types": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.56.1.tgz", - "integrity": "sha512-dbMkdIUkIkchgGDIv7KLUpa0Mda4IYjo4IAMJUZ+3xNoUXxMsk9YtKpTHSChRS85o+H9ftm51gsK1dZReY9CVw==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.59.3.tgz", + "integrity": "sha512-ePFoH0g4ludssdRFqqDxQePCxU4WQyRa9+XVwjm7yLn0FKhMeoetC+qBEEI1Eyb1pGSDveTIT09Bvw2WhlGayg==", "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4873,20 +5734,20 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.56.1.tgz", - "integrity": "sha512-qzUL1qgalIvKWAf9C1HpvBjif+Vm6rcT5wZd4VoMb9+Km3iS3Cv9DY6dMRMDtPnwRAFyAi7YXJpTIEXLvdfPxg==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.59.3.tgz", + "integrity": "sha512-CbRjVRAf7Lr9Kr8RopKcbY45p2VfmmHrm0ygOCYFi7oU8q19m0Fs/6iHS7kNOmwpp+ob07ZVcAqlxUod9lYdmg==", "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.56.1", - "@typescript-eslint/tsconfig-utils": "8.56.1", - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/visitor-keys": "8.56.1", + "@typescript-eslint/project-service": "8.59.3", + "@typescript-eslint/tsconfig-utils": "8.59.3", + "@typescript-eslint/types": "8.59.3", + "@typescript-eslint/visitor-keys": "8.59.3", "debug": "^4.4.3", "minimatch": "^10.2.2", "semver": "^7.7.3", "tinyglobby": "^0.2.15", - "ts-api-utils": "^2.4.0" + "ts-api-utils": "^2.5.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4896,19 +5757,67 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.6.tgz", + "integrity": "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==", + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", + "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.5" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.0.tgz", + "integrity": "sha512-AcM7dV/5ul4EekoQ29Agm5vri8JNqRyj39o0qpX6vDF2GZrtutZl5RwgD1XnZjiTAfncsJhMI48QQH3sN87YNA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, "node_modules/@typescript-eslint/utils": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.56.1.tgz", - "integrity": "sha512-HPAVNIME3tABJ61siYlHzSWCGtOoeP2RTIaHXFMPqjrQKCGB9OgUVdiNgH7TJS2JNIQ5qQ4RsAUDuGaGme/KOA==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.59.3.tgz", + "integrity": "sha512-JAvT14goBzRzzzZyqq3P9BLArIxTtQURUtFgQ/V7FO+eU+Gg6ES+5ymOPP1wRxXcxAYeivCk4uS3jCKWI1K8Zg==", "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.9.1", - "@typescript-eslint/scope-manager": "8.56.1", - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/typescript-estree": "8.56.1" + "@typescript-eslint/scope-manager": "8.59.3", + "@typescript-eslint/types": "8.59.3", + "@typescript-eslint/typescript-estree": "8.59.3" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4919,16 +5828,16 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.56.1.tgz", - "integrity": "sha512-KiROIzYdEV85YygXw6BI/Dx4fnBlFQu6Mq4QE4MOH9fFnhohw6wX/OAvDY2/C+ut0I3RSPKenvZJIVYqJNkhEw==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.59.3.tgz", + "integrity": "sha512-f1UQF7ggd42YiwI5wGrRaPsa+P0CINBlrkLPmGfpq/u/I/oVtecoEIfFR9ag/oa1sLOsRNZ6xehf6qMZhQGBDg==", "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.56.1", + "@typescript-eslint/types": "8.59.3", "eslint-visitor-keys": "^5.0.0" }, "engines": { @@ -4951,6 +5860,115 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/@typescript/native-preview": { + "version": "7.0.0-dev.20260421.2", + "resolved": "https://registry.npmjs.org/@typescript/native-preview/-/native-preview-7.0.0-dev.20260421.2.tgz", + "integrity": "sha512-CmajHI25HpVWE9R1XFoxr+cphJPxoYD3eFioQtAvXYkMFKnLdICMS9pXre9Pybizb75ejRxjKD5/CVG055rEIg==", + "license": "Apache-2.0", + "bin": { + "tsgo": "bin/tsgo.js" + }, + "optionalDependencies": { + "@typescript/native-preview-darwin-arm64": "7.0.0-dev.20260421.2", + "@typescript/native-preview-darwin-x64": "7.0.0-dev.20260421.2", + "@typescript/native-preview-linux-arm": "7.0.0-dev.20260421.2", + "@typescript/native-preview-linux-arm64": "7.0.0-dev.20260421.2", + "@typescript/native-preview-linux-x64": "7.0.0-dev.20260421.2", + "@typescript/native-preview-win32-arm64": "7.0.0-dev.20260421.2", + "@typescript/native-preview-win32-x64": "7.0.0-dev.20260421.2" + } + }, + "node_modules/@typescript/native-preview-darwin-arm64": { + "version": "7.0.0-dev.20260421.2", + "resolved": "https://registry.npmjs.org/@typescript/native-preview-darwin-arm64/-/native-preview-darwin-arm64-7.0.0-dev.20260421.2.tgz", + "integrity": "sha512-fHv1r3ZmVo6zxuAIFmuX3w9QxbcauoG0SsWhmDwm6VmRubLlOJIcmTtlmV3JAb9oOnq8LuzZljzT7Q39fSMQDw==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@typescript/native-preview-darwin-x64": { + "version": "7.0.0-dev.20260421.2", + "resolved": "https://registry.npmjs.org/@typescript/native-preview-darwin-x64/-/native-preview-darwin-x64-7.0.0-dev.20260421.2.tgz", + "integrity": "sha512-KWTR6xbW9t+JS7D5DQIzo75pqVXVWUxF9PMv/+S6xsnOjCVd6g0ixHcFpFMJMKSUQpGPr8Z5f7b8ks6LHW01jg==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@typescript/native-preview-linux-arm": { + "version": "7.0.0-dev.20260421.2", + "resolved": "https://registry.npmjs.org/@typescript/native-preview-linux-arm/-/native-preview-linux-arm-7.0.0-dev.20260421.2.tgz", + "integrity": "sha512-BWLQO3nemLDSV5PoE5GPHe1dU9Dth77Kv8/cle9Ujcp4LhPo0KincdPqFH/qKeU/xvW25mgFueflZ1nc4rKuww==", + "cpu": [ + "arm" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@typescript/native-preview-linux-arm64": { + "version": "7.0.0-dev.20260421.2", + "resolved": "https://registry.npmjs.org/@typescript/native-preview-linux-arm64/-/native-preview-linux-arm64-7.0.0-dev.20260421.2.tgz", + "integrity": "sha512-VLMEuml3BhUb+jaL0TXQ4xvVODxJF+RhkI+tBWvlynsJI4khTXEiwWh+wPOJrsfBRYFRMXEu28Odl/HXkYze8w==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@typescript/native-preview-linux-x64": { + "version": "7.0.0-dev.20260421.2", + "resolved": "https://registry.npmjs.org/@typescript/native-preview-linux-x64/-/native-preview-linux-x64-7.0.0-dev.20260421.2.tgz", + "integrity": "sha512-qUrJWTB5/wv4wnRG0TRXElAxc2kykNiRNyEIEqBbLmzDlrcvAW7RRy8MXoY1ZyTiKGMu14itZ3x9oW6+blFpRw==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@typescript/native-preview-win32-arm64": { + "version": "7.0.0-dev.20260421.2", + "resolved": "https://registry.npmjs.org/@typescript/native-preview-win32-arm64/-/native-preview-win32-arm64-7.0.0-dev.20260421.2.tgz", + "integrity": "sha512-Rc6NsWlZmCs5YUKVzKgwoBOoRUGsPzct4BDMRX0csD1devLBBc4AbUXWKsJRbpwIAnqMO1ld4sNHEb+wXgfNHQ==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@typescript/native-preview-win32-x64": { + "version": "7.0.0-dev.20260421.2", + "resolved": "https://registry.npmjs.org/@typescript/native-preview-win32-x64/-/native-preview-win32-x64-7.0.0-dev.20260421.2.tgz", + "integrity": "sha512-GQv1+dya1t6EqF2Cpsb+xoozovdX10JUSf6Kl/8xNkTapzmlHd+uMr+8ku3jIASTxoRGn0Mklgjj3MDKrOTuLg==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "win32" + ] + }, "node_modules/@ungap/structured-clone": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", @@ -4968,43 +5986,43 @@ } }, "node_modules/@vitest/browser": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@vitest/browser/-/browser-4.1.0.tgz", - "integrity": "sha512-tG/iOrgbiHQks0ew7CdelUyNEHkv8NLrt+CqdTivIuoSnXvO7scWMn4Kqo78/UGY1NJ6Hv+vp8BvRnED/bjFdQ==", + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@vitest/browser/-/browser-4.1.6.tgz", + "integrity": "sha512-ynsspTubXGSpa58JFJ24xIQt4z4A25epSbugEyaTmmrV1//Wec9EgE/LtoaC6yxUrXi5P7erGHRrkdZIHaVQuA==", "license": "MIT", "dependencies": { "@blazediff/core": "1.9.1", - "@vitest/mocker": "4.1.0", - "@vitest/utils": "4.1.0", + "@vitest/mocker": "4.1.6", + "@vitest/utils": "4.1.6", "magic-string": "^0.30.21", "pngjs": "^7.0.0", "sirv": "^3.0.2", - "tinyrainbow": "^3.0.3", + "tinyrainbow": "^3.1.0", "ws": "^8.19.0" }, "funding": { "url": "https://opencollective.com/vitest" }, "peerDependencies": { - "vitest": "4.1.0" + "vitest": "4.1.6" } }, "node_modules/@vitest/browser-playwright": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@vitest/browser-playwright/-/browser-playwright-4.1.0.tgz", - "integrity": "sha512-2RU7pZELY9/aVMLmABNy1HeZ4FX23FXGY1jRuHLHgWa2zaAE49aNW2GLzebW+BmbTZIKKyFF1QXvk7DEWViUCQ==", + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@vitest/browser-playwright/-/browser-playwright-4.1.6.tgz", + "integrity": "sha512-4csoeyl/qwHyxU2zNL0++WaoDr8YJDXOQPwWPNJoTZ+QzcdO3INYKgF5Zfz730Io7zbkuv914aZmfQ+QE+1Hvw==", "license": "MIT", "dependencies": { - "@vitest/browser": "4.1.0", - "@vitest/mocker": "4.1.0", - "tinyrainbow": "^3.0.3" + "@vitest/browser": "4.1.6", + "@vitest/mocker": "4.1.6", + "tinyrainbow": "^3.1.0" }, "funding": { "url": "https://opencollective.com/vitest" }, "peerDependencies": { "playwright": "*", - "vitest": "4.1.0" + "vitest": "4.1.6" }, "peerDependenciesMeta": { "playwright": { @@ -5076,12 +6094,12 @@ } }, "node_modules/@vitest/mocker": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.1.0.tgz", - "integrity": "sha512-evxREh+Hork43+Y4IOhTo+h5lGmVRyjqI739Rz4RlUPqwrkFFDF6EMvOOYjTx4E8Tl6gyCLRL8Mu7Ry12a13Tw==", + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.1.6.tgz", + "integrity": "sha512-MCFc63czMjEInOlcY2cpQCvCN+KgbAn+60xu9cMgP4sKaLC5JNAKw7JH8QdAnoAC88hW1IiSNZ+GgVXlN1UcMQ==", "license": "MIT", "dependencies": { - "@vitest/spy": "4.1.0", + "@vitest/spy": "4.1.6", "estree-walker": "^3.0.3", "magic-string": "^0.30.21" }, @@ -5090,7 +6108,7 @@ }, "peerDependencies": { "msw": "^2.4.9", - "vite": "^6.0.0 || ^7.0.0 || ^8.0.0-0" + "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "peerDependenciesMeta": { "msw": { @@ -5102,24 +6120,24 @@ } }, "node_modules/@vitest/pretty-format": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.0.tgz", - "integrity": "sha512-3RZLZlh88Ib0J7NQTRATfc/3ZPOnSUn2uDBUoGNn5T36+bALixmzphN26OUD3LRXWkJu4H0s5vvUeqBiw+kS0A==", + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.6.tgz", + "integrity": "sha512-h5SxD/IzNhZYnrSZRsUZQIC+vD0GY8cUvq0iwsmkFKixRCKLLWqCXa/FIQ4S1R+sI+PGoojkHsdNrbZiM9Qpgw==", "license": "MIT", "dependencies": { - "tinyrainbow": "^3.0.3" + "tinyrainbow": "^3.1.0" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/runner": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.1.0.tgz", - "integrity": "sha512-Duvx2OzQ7d6OjchL+trw+aSrb9idh7pnNfxrklo14p3zmNL4qPCDeIJAK+eBKYjkIwG96Bc6vYuxhqDXQOWpoQ==", + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.1.6.tgz", + "integrity": "sha512-nOPCmn2+yD0ZNmKdsXGv/UxMMWbMuKeD6GyYncNwdkYDxpQvrPSKYj2rWuDjC2Y4b6w6hjip5dBKFzEUuZe3vA==", "license": "MIT", "dependencies": { - "@vitest/utils": "4.1.0", + "@vitest/utils": "4.1.6", "pathe": "^2.0.3" }, "funding": { @@ -5127,13 +6145,13 @@ } }, "node_modules/@vitest/snapshot": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.1.0.tgz", - "integrity": "sha512-0Vy9euT1kgsnj1CHttwi9i9o+4rRLEaPRSOJ5gyv579GJkNpgJK+B4HSv/rAWixx2wdAFci1X4CEPjiu2bXIMg==", + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.1.6.tgz", + "integrity": "sha512-YhsdE6xAVfTDmzjxL2ZDUvjj+ZsgyOKe+TdQzqkD72wIOmHka8NuGQ6NpTNZv9D2Z63fbwWKJPeVpEw4EQgYxw==", "license": "MIT", "dependencies": { - "@vitest/pretty-format": "4.1.0", - "@vitest/utils": "4.1.0", + "@vitest/pretty-format": "4.1.6", + "@vitest/utils": "4.1.6", "magic-string": "^0.30.21", "pathe": "^2.0.3" }, @@ -5142,23 +6160,23 @@ } }, "node_modules/@vitest/spy": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.1.0.tgz", - "integrity": "sha512-pz77k+PgNpyMDv2FV6qmk5ZVau6c3R8HC8v342T2xlFxQKTrSeYw9waIJG8KgV9fFwAtTu4ceRzMivPTH6wSxw==", + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.1.6.tgz", + "integrity": "sha512-JFKxMx6udhwKh/Ldo270e17QX710vgunMkuPAvXjHSvC6oqLWAHhVhjg/I71q0u0CBSErIODV1Kjv0FQNSWjdg==", "license": "MIT", "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/utils": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.1.0.tgz", - "integrity": "sha512-XfPXT6a8TZY3dcGY8EdwsBulFCIw+BeeX0RZn2x/BtiY/75YGh8FeWGG8QISN/WhaqSrE2OrlDgtF8q5uhOTmw==", + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.1.6.tgz", + "integrity": "sha512-FxIY+U81R3LGKCxaHHFRQ5+g6/iRgGLmeHWdp2Amj4ljQRrEIWHmZyDfDYBRZlpyqA7qKxtS9DD1dhk8RnRIVQ==", "license": "MIT", "dependencies": { - "@vitest/pretty-format": "4.1.0", + "@vitest/pretty-format": "4.1.6", "convert-source-map": "^2.0.0", - "tinyrainbow": "^3.0.3" + "tinyrainbow": "^3.1.0" }, "funding": { "url": "https://opencollective.com/vitest" @@ -5257,143 +6275,168 @@ "integrity": "sha512-u2G8ZQ9IhMWTMXaWqZycnK4UthG1fA238CD+DP4Dm4WJi5hdUKKLg0RMRaRpDPNMdkTwIDkp7WtD0Rd9BH9fLw==", "license": "MIT" }, + "node_modules/@webcomponents/template": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@webcomponents/template/-/template-1.5.1.tgz", + "integrity": "sha512-3e8bx+bgRhyuRwFrDGu7CalILomo11ixuMzVGvpXSxL8lX+ijCIG6J3kS4O/7nElVuKE7vkuXB1xD+RICDNCCg==", + "license": "BSD-3-Clause" + }, "node_modules/@webcomponents/webcomponentsjs": { "version": "2.8.0", "resolved": "https://registry.npmjs.org/@webcomponents/webcomponentsjs/-/webcomponentsjs-2.8.0.tgz", "integrity": "sha512-loGD63sacRzOzSJgQnB9ZAhaQGkN7wl2Zuw7tsphI5Isa0irijrRo6EnJii/GgjGefIFO8AIO7UivzRhFaEk9w==", "license": "BSD-3-Clause" }, + "node_modules/@webcontainer/env": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@webcontainer/env/-/env-1.1.1.tgz", + "integrity": "sha512-6aN99yL695Hi9SuIk1oC88l9o0gmxL1nGWWQ/kNy81HigJ0FoaoTXpytCj6ItzgyCEwA9kF1wixsTuv5cjsgng==", + "license": "MIT" + }, "node_modules/@xhmikosr/archive-type": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@xhmikosr/archive-type/-/archive-type-7.1.0.tgz", - "integrity": "sha512-xZEpnGplg1sNPyEgFh0zbHxqlw5dtYg6viplmWSxUj12+QjU9SKu3U/2G73a15pEjLaOqTefNSZ1fOPUOT4Xgg==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@xhmikosr/archive-type/-/archive-type-8.0.1.tgz", + "integrity": "sha512-toXuiWChyfOpEiCPsIw6HGHaNji5LVkvB6EREL548vGWr+hGaehwxG4LzN20vm9aGFXwnA/Jty8yW2/SmV+1zQ==", "license": "MIT", "dependencies": { - "file-type": "^20.5.0" + "file-type": "^21.3.0" }, "engines": { - "node": ">=18" + "node": ">=20" } }, "node_modules/@xhmikosr/bin-check": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@xhmikosr/bin-check/-/bin-check-7.1.0.tgz", - "integrity": "sha512-y1O95J4mnl+6MpVmKfMYXec17hMEwE/yeCglFNdx+QvLLtP0yN4rSYcbkXnth+lElBuKKek2NbvOfOGPpUXCvw==", + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/@xhmikosr/bin-check/-/bin-check-8.2.1.tgz", + "integrity": "sha512-DNruLq+kalxcE7JeDxtqrN9kyWjLW8VqsQPLRTwD1t9ck/1rF4qBL0mX5Fe2/xLOMjo5wPb67BNX2kSAhzfLjA==", "license": "MIT", "dependencies": { - "execa": "^5.1.1", - "isexe": "^2.0.0" + "execa": "^9.6.1", + "isexe": "^4.0.0" }, "engines": { - "node": ">=18" + "node": ">=20" + } + }, + "node_modules/@xhmikosr/bin-check/node_modules/isexe": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-4.0.0.tgz", + "integrity": "sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=20" } }, "node_modules/@xhmikosr/bin-wrapper": { - "version": "13.2.0", - "resolved": "https://registry.npmjs.org/@xhmikosr/bin-wrapper/-/bin-wrapper-13.2.0.tgz", - "integrity": "sha512-t9U9X0sDPRGDk5TGx4dv5xiOvniVJpXnfTuynVKwHgtib95NYEw4MkZdJqhoSiz820D9m0o6PCqOPMXz0N9fIw==", + "version": "14.2.2", + "resolved": "https://registry.npmjs.org/@xhmikosr/bin-wrapper/-/bin-wrapper-14.2.2.tgz", + "integrity": "sha512-4me/0Tw0ORrrRLliLc1w6K0unrnclVaFAp69z8fNu1rcYtD/pKtI1lZWvZ8htiRQtqhoqxBiQ2qfkZBN8q2KAw==", "license": "MIT", "dependencies": { - "@xhmikosr/bin-check": "^7.1.0", - "@xhmikosr/downloader": "^15.2.0", - "@xhmikosr/os-filter-obj": "^3.0.0", - "bin-version-check": "^5.1.0" + "@xhmikosr/bin-check": "^8.2.1", + "@xhmikosr/downloader": "^16.1.1", + "@xhmikosr/os-filter-obj": "^4.0.0", + "binary-version-check": "^6.1.0" }, "engines": { - "node": ">=18" + "node": ">=20" } }, "node_modules/@xhmikosr/decompress": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/@xhmikosr/decompress/-/decompress-10.2.0.tgz", - "integrity": "sha512-MmDBvu0+GmADyQWHolcZuIWffgfnuTo4xpr2I/Qw5Ox0gt+e1Be7oYqJM4te5ylL6mzlcoicnHVDvP27zft8tg==", + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/@xhmikosr/decompress/-/decompress-11.1.1.tgz", + "integrity": "sha512-KdjwFbTzcpGaTIPncNaPLOHocBSF1hHo4s7gr+ZzzoB2bzVzFumzawqKTij0Vpw0idM4C2FZFPktIfyznkeJTQ==", "license": "MIT", "dependencies": { - "@xhmikosr/decompress-tar": "^8.1.0", - "@xhmikosr/decompress-tarbz2": "^8.1.0", - "@xhmikosr/decompress-targz": "^8.1.0", - "@xhmikosr/decompress-unzip": "^7.1.0", + "@xhmikosr/decompress-tar": "^9.0.1", + "@xhmikosr/decompress-tarbz2": "^9.0.1", + "@xhmikosr/decompress-targz": "^9.0.1", + "@xhmikosr/decompress-unzip": "^8.1.0", "graceful-fs": "^4.2.11", "strip-dirs": "^3.0.0" }, "engines": { - "node": ">=18" + "node": ">=20" } }, "node_modules/@xhmikosr/decompress-tar": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@xhmikosr/decompress-tar/-/decompress-tar-8.1.0.tgz", - "integrity": "sha512-m0q8x6lwxenh1CrsTby0Jrjq4vzW/QU1OLhTHMQLEdHpmjR1lgahGz++seZI0bXF3XcZw3U3xHfqZSz+JPP2Gg==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/@xhmikosr/decompress-tar/-/decompress-tar-9.0.1.tgz", + "integrity": "sha512-4AkVR1SoqTxYY22IRRYKDeLirPIDGqMqYsqgjKYuwhgRcBb+yDP4t5Xph33UCzL/nahK/aADmlMEjTNstbX7kw==", "license": "MIT", "dependencies": { - "file-type": "^20.5.0", - "is-stream": "^2.0.1", - "tar-stream": "^3.1.7" + "file-type": "^21.3.0", + "is-stream": "^4.0.1", + "tar-stream": "3.1.7" }, "engines": { - "node": ">=18" + "node": ">=20" } }, "node_modules/@xhmikosr/decompress-tarbz2": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@xhmikosr/decompress-tarbz2/-/decompress-tarbz2-8.1.0.tgz", - "integrity": "sha512-aCLfr3A/FWZnOu5eqnJfme1Z1aumai/WRw55pCvBP+hCGnTFrcpsuiaVN5zmWTR53a8umxncY2JuYsD42QQEbw==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/@xhmikosr/decompress-tarbz2/-/decompress-tarbz2-9.0.1.tgz", + "integrity": "sha512-aFONnsbqEOuXudvK7V7wB8dcEAKR389oUYQfZhrQZA8OtogJpDjrUAvEH3Qlc9yFqTU6r5/svTEcRwtXhoIJbQ==", "license": "MIT", "dependencies": { - "@xhmikosr/decompress-tar": "^8.0.1", - "file-type": "^20.5.0", - "is-stream": "^2.0.1", + "@xhmikosr/decompress-tar": "^9.0.0", + "file-type": "^21.3.0", + "is-stream": "^4.0.1", "seek-bzip": "^2.0.0", "unbzip2-stream": "^1.4.3" }, "engines": { - "node": ">=18" + "node": ">=20" } }, "node_modules/@xhmikosr/decompress-targz": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@xhmikosr/decompress-targz/-/decompress-targz-8.1.0.tgz", - "integrity": "sha512-fhClQ2wTmzxzdz2OhSQNo9ExefrAagw93qaG1YggoIz/QpI7atSRa7eOHv4JZkpHWs91XNn8Hry3CwUlBQhfPA==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/@xhmikosr/decompress-targz/-/decompress-targz-9.0.1.tgz", + "integrity": "sha512-1JXu2b6yrpm5EuBoOzMU57B4qrHXJKWQQ7LlMynNEiz85mEjDciO3ayf//GXaTLLCEKiHjWlU3q3THjgf7uODA==", "license": "MIT", "dependencies": { - "@xhmikosr/decompress-tar": "^8.0.1", - "file-type": "^20.5.0", - "is-stream": "^2.0.1" + "@xhmikosr/decompress-tar": "^9.0.0", + "file-type": "^21.3.0", + "is-stream": "^4.0.1" }, "engines": { - "node": ">=18" + "node": ">=20" } }, "node_modules/@xhmikosr/decompress-unzip": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@xhmikosr/decompress-unzip/-/decompress-unzip-7.1.0.tgz", - "integrity": "sha512-oqTYAcObqTlg8owulxFTqiaJkfv2SHsxxxz9Wg4krJAHVzGWlZsU8tAB30R6ow+aHrfv4Kub6WQ8u04NWVPUpA==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@xhmikosr/decompress-unzip/-/decompress-unzip-8.1.0.tgz", + "integrity": "sha512-hVcpEZIS8avXU1ioR0Pb2LcBYHfah1lzzTQPDItkBi3W+kSE/DxSeEgOoHJB8rn+Izm0ArWZxxlpsvEK4ySjaw==", "license": "MIT", "dependencies": { - "file-type": "^20.5.0", - "get-stream": "^6.0.1", - "yauzl": "^3.1.2" + "file-type": "^21.3.0", + "get-stream": "^9.0.1", + "yauzl": "^3.2.0" }, "engines": { - "node": ">=18" + "node": ">=20" } }, "node_modules/@xhmikosr/decompress-unzip/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", + "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", "license": "MIT", + "dependencies": { + "@sec-ant/readable-stream": "^0.4.1", + "is-stream": "^4.0.1" + }, "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/@xhmikosr/decompress-unzip/node_modules/yauzl": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-3.2.0.tgz", - "integrity": "sha512-Ow9nuGZE+qp1u4JIPvg+uCiUr7xGQWdff7JQSk5VGYTAZMDe2q8lxJ10ygv10qmSj031Ty/6FNJpLO4o1Sgc+w==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-3.3.0.tgz", + "integrity": "sha512-PtGEvEP30p7sbIBJKUBjUnqgTVOyMURc4dLo9iNyAJnNIEz9pm88cCXF21w94Kg3k6RXkeZh5DHOGS0qEONvNQ==", "license": "MIT", "dependencies": { "buffer-crc32": "~0.2.3", @@ -5404,53 +6447,57 @@ } }, "node_modules/@xhmikosr/downloader": { - "version": "15.2.0", - "resolved": "https://registry.npmjs.org/@xhmikosr/downloader/-/downloader-15.2.0.tgz", - "integrity": "sha512-lAqbig3uRGTt0sHNIM4vUG9HoM+mRl8K28WuYxyXLCUT6pyzl4Y4i0LZ3jMEsCYZ6zjPZbO9XkG91OSTd4si7g==", + "version": "16.1.1", + "resolved": "https://registry.npmjs.org/@xhmikosr/downloader/-/downloader-16.1.1.tgz", + "integrity": "sha512-1B2ZqYDpIHn9bjah48rEo33GbmoV8hufXap/3KHStgIM9R9/QDm1pajqDwEgqDORMl2eZ7Dpbz71Xi854y3m3Q==", "license": "MIT", "dependencies": { - "@xhmikosr/archive-type": "^7.1.0", - "@xhmikosr/decompress": "^10.2.0", - "content-disposition": "^0.5.4", + "@xhmikosr/archive-type": "^8.0.1", + "@xhmikosr/decompress": "^11.1.1", + "content-disposition": "^1.0.1", "defaults": "^2.0.2", "ext-name": "^5.0.0", - "file-type": "^20.5.0", - "filenamify": "^6.0.0", - "get-stream": "^6.0.1", - "got": "^13.0.0" + "file-type": "^21.3.0", + "filenamify": "^7.0.1", + "get-stream": "^9.0.1", + "got": "^14.6.6" }, "engines": { - "node": ">=18" + "node": ">=20" } }, "node_modules/@xhmikosr/downloader/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", + "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", "license": "MIT", + "dependencies": { + "@sec-ant/readable-stream": "^0.4.1", + "is-stream": "^4.0.1" + }, "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/@xhmikosr/os-filter-obj": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@xhmikosr/os-filter-obj/-/os-filter-obj-3.0.0.tgz", - "integrity": "sha512-siPY6BD5dQ2SZPl3I0OZBHL27ZqZvLEosObsZRQ1NUB8qcxegwt0T9eKtV96JMFQpIz1elhkzqOg4c/Ri6Dp9A==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@xhmikosr/os-filter-obj/-/os-filter-obj-4.0.0.tgz", + "integrity": "sha512-CBJYipR5lrtQQZl9ylarWyh1qhcs/tMy9ydSHte/Hefn3ev8NMvS3ss+eqiXEoBr2wBVgKj2qjcViXO9P/8K4A==", "license": "MIT", "dependencies": { "arch": "^3.0.0" }, "engines": { - "node": "^14.14.0 || >=16.0.0" + "node": ">=20" } }, "node_modules/@xmldom/xmldom": { - "version": "0.8.11", - "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.11.tgz", - "integrity": "sha512-cQzWCtO6C8TQiYl1ruKNn2U6Ao4o4WBBcbL61yJl84x+j5sOWWFU9X7DpND8XZG3daDppSsigMdfAIl2upQBRw==", + "version": "0.8.13", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.13.tgz", + "integrity": "sha512-KRYzxepc14G/CEpEGc3Yn+JKaAeT63smlDr+vjB8jRfgTBBI9wRj/nkQEO+ucV8p8I9bfKLWp37uHgFrbntPvw==", "license": "MIT", "engines": { "node": ">=10.0.0" @@ -5477,16 +6524,6 @@ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/agent-base": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", - "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", - "license": "MIT", - "optional": true, - "engines": { - "node": ">= 14" - } - }, "node_modules/ajv": { "version": "6.14.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", @@ -5541,9 +6578,9 @@ } }, "node_modules/anymatch/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", "license": "MIT", "engines": { "node": ">=8.6" @@ -5754,17 +6791,13 @@ "node": ">=12" } }, - "node_modules/ast-types": { - "version": "0.13.4", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", - "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.0.1" - }, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/astring": { @@ -5816,22 +6849,16 @@ } }, "node_modules/axios": { - "version": "1.13.5", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.5.tgz", - "integrity": "sha512-cz4ur7Vb0xS4/KUN0tPWe44eqxrIu31me+fbang3ijiNscE129POzipJJA6zniq2C/Z6sJCjMimjS8Lc/GAs8Q==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.16.0.tgz", + "integrity": "sha512-6hp5CwvTPlN2A31g5dxnwAX0orzM7pmCRDLnZSX772mv8WDqICwFjowHuPs04Mc8deIld1+ejhtaMn5vp6b+1w==", "license": "MIT", "dependencies": { - "follow-redirects": "^1.15.11", + "follow-redirects": "^1.16.0", "form-data": "^4.0.5", - "proxy-from-env": "^1.1.0" + "proxy-from-env": "^2.1.0" } }, - "node_modules/axios/node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "license": "MIT" - }, "node_modules/b4a": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.8.0.tgz", @@ -5857,13 +6884,10 @@ } }, "node_modules/balanced-match": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", - "license": "MIT", - "engines": { - "node": "18 || 20 || >=22" - } + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" }, "node_modules/bare-events": { "version": "2.8.2", @@ -5909,9 +6933,9 @@ "license": "MIT" }, "node_modules/baseline-browser-mapping": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.0.tgz", - "integrity": "sha512-lIyg0szRfYbiy67j9KN8IyeD7q7hcmqnJ1ddWmNt19ItGpNN64mnllmxUNFIOdOm6by97jlL6wfpTTJrmnjWAA==", + "version": "2.10.10", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.10.tgz", + "integrity": "sha512-sUoJ3IMxx4AyRqO4MLeHlnGDkyXRoUG0/AI9fjK+vS72ekpV0yWVY7O0BVjmBcRtkNcsAO2QDZ4tdKKGoI6YaQ==", "license": "Apache-2.0", "bin": { "baseline-browser-mapping": "dist/cli.cjs" @@ -5920,49 +6944,6 @@ "node": ">=6.0.0" } }, - "node_modules/basic-ftp": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.2.0.tgz", - "integrity": "sha512-VoMINM2rqJwJgfdHq6RiUudKt2BV+FY5ZFezP/ypmwayk68+NzzAQy4XXLlqsGD4MCzq3DrmNFD/uUmBJuGoXw==", - "license": "MIT", - "optional": true, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/bin-version": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/bin-version/-/bin-version-6.0.0.tgz", - "integrity": "sha512-nk5wEsP4RiKjG+vF+uG8lFsEn4d7Y6FVDamzzftSunXOoOcOOkzcWdKVlGgFFwlUQCj63SgnUkLLGF8v7lufhw==", - "license": "MIT", - "dependencies": { - "execa": "^5.0.0", - "find-versions": "^5.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/bin-version-check": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/bin-version-check/-/bin-version-check-5.1.0.tgz", - "integrity": "sha512-bYsvMqJ8yNGILLz1KP9zKLzQ6YpljV3ln1gqhuLkUtyfGi3qXKGuK2p+U4NAvjVFzDFiBBtOpCOSFNuYYEGZ5g==", - "license": "MIT", - "dependencies": { - "bin-version": "^6.0.0", - "semver": "^7.5.3", - "semver-truncate": "^3.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/binary-extensions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", @@ -5975,16 +6956,166 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/brace-expansion": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.3.tgz", - "integrity": "sha512-fy6KJm2RawA5RcHkLa1z/ScpBeA762UF9KmZQxwIbDtRJrgLzM10depAiEQ+CXYcoiqW1/m96OAAoke2nE9EeA==", + "node_modules/binary-version": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/binary-version/-/binary-version-7.1.0.tgz", + "integrity": "sha512-Iy//vPc3ANPNlIWd242Npqc8MK0a/i4kVcHDlDA6HNMv5zMxz4ulIFhOSYJVKw/8AbHdHy0CnGYEt1QqSXxPsw==", "license": "MIT", "dependencies": { - "balanced-match": "^4.0.2" + "execa": "^8.0.1", + "find-versions": "^6.0.0" }, "engines": { - "node": "18 || 20 || >=22" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/binary-version-check": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/binary-version-check/-/binary-version-check-6.1.0.tgz", + "integrity": "sha512-REKdLKmuViV2WrtWXvNSiPX04KbIjfUV3Cy8batUeOg+FtmowavzJorfFhWq95cVJzINnL/44ixP26TrdJZACA==", + "license": "MIT", + "dependencies": { + "binary-version": "^7.1.0", + "semver": "^7.6.0", + "semver-truncate": "^3.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/binary-version-check/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/binary-version/node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/binary-version/node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/binary-version/node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=16.17.0" + } + }, + "node_modules/binary-version/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/binary-version/node_modules/npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "license": "MIT", + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/binary-version/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/binary-version/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/binary-version/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz", + "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, "node_modules/braces": { @@ -6098,6 +7229,31 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/byte-counter": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/byte-counter/-/byte-counter-0.1.0.tgz", + "integrity": "sha512-jheRLVMeUKrDBjVw2O5+k4EvR4t9wtxHL+bo/LxfkxsVeuGMy3a5SEGgXdAFA4FSzTrU8rQXQIrsZ3oBq5a0pQ==", + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cacheable": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/cacheable/-/cacheable-2.3.5.tgz", + "integrity": "sha512-EQfaKe09tl615iNvq/TBRWTFf1AKJNXYQSsMx0Z3EI0nA+pVsVPS8wJhnRlkbdacKPh1d0qVIhwTc2zsQNFEEg==", + "license": "MIT", + "dependencies": { + "@cacheable/memory": "^2.0.8", + "@cacheable/utils": "^2.4.1", + "hookified": "^1.15.0", + "keyv": "^5.6.0", + "qified": "^0.10.1" + } + }, "node_modules/cacheable-lookup": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz", @@ -6108,35 +7264,57 @@ } }, "node_modules/cacheable-request": { - "version": "10.2.14", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.14.tgz", - "integrity": "sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==", + "version": "13.0.18", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-13.0.18.tgz", + "integrity": "sha512-rFWadDRKJs3s2eYdXlGggnBZKG7MTblkFBB0YllFds+UYnfogDp2wcR6JN97FhRkHTvq59n2vhNoHNZn29dh/Q==", "license": "MIT", "dependencies": { - "@types/http-cache-semantics": "^4.0.2", - "get-stream": "^6.0.1", - "http-cache-semantics": "^4.1.1", - "keyv": "^4.5.3", + "@types/http-cache-semantics": "^4.0.4", + "get-stream": "^9.0.1", + "http-cache-semantics": "^4.2.0", + "keyv": "^5.5.5", "mimic-response": "^4.0.0", - "normalize-url": "^8.0.0", - "responselike": "^3.0.0" + "normalize-url": "^8.1.1", + "responselike": "^4.0.2" }, "engines": { - "node": ">=14.16" + "node": ">=18" } }, "node_modules/cacheable-request/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", + "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", "license": "MIT", + "dependencies": { + "@sec-ant/readable-stream": "^0.4.1", + "is-stream": "^4.0.1" + }, "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/cacheable-request/node_modules/keyv": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.6.0.tgz", + "integrity": "sha512-CYDD3SOtsHtyXeEORYRx2qBtpDJFjRTGXUtmNEMGyzYOKj1TE3tycdlho7kA1Ufx9OYWZzg52QFBGALTirzDSw==", + "license": "MIT", + "dependencies": { + "@keyv/serialize": "^1.1.1" + } + }, + "node_modules/cacheable/node_modules/keyv": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.6.0.tgz", + "integrity": "sha512-CYDD3SOtsHtyXeEORYRx2qBtpDJFjRTGXUtmNEMGyzYOKj1TE3tycdlho7kA1Ufx9OYWZzg52QFBGALTirzDSw==", + "license": "MIT", + "dependencies": { + "@keyv/serialize": "^1.1.1" + } + }, "node_modules/call-bind": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", @@ -6194,9 +7372,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001774", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001774.tgz", - "integrity": "sha512-DDdwPGz99nmIEv216hKSgLD+D4ikHQHjBC/seF98N9CPqRX4M5mSxT9eTV6oyisnJcuzxtZy4n17yKKQYmYQOA==", + "version": "1.0.30001781", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001781.tgz", + "integrity": "sha512-RdwNCyMsNBftLjW6w01z8bKEvT6e/5tpPVEgtn22TiLGlstHOVecsX2KHFkD5e/vRnIE4EGzpuIODb3mtswtkw==", "funding": [ { "type": "opencollective", @@ -6332,32 +7510,6 @@ "node": ">= 16" } }, - "node_modules/chevrotain": { - "version": "11.1.2", - "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-11.1.2.tgz", - "integrity": "sha512-opLQzEVriiH1uUQ4Kctsd49bRoFDXGGSC4GUqj7pGyxM3RehRhvTlZJc1FL/Flew2p5uwxa1tUDWKzI4wNM8pg==", - "license": "Apache-2.0", - "dependencies": { - "@chevrotain/cst-dts-gen": "11.1.2", - "@chevrotain/gast": "11.1.2", - "@chevrotain/regexp-to-ast": "11.1.2", - "@chevrotain/types": "11.1.2", - "@chevrotain/utils": "11.1.2", - "lodash-es": "4.17.23" - } - }, - "node_modules/chevrotain-allstar": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/chevrotain-allstar/-/chevrotain-allstar-0.3.1.tgz", - "integrity": "sha512-b7g+y9A0v4mxCW1qUhf3BSVPg+/NvGErk/dOkrDaHA0nQIQGAtrOjlX//9OQtRlSCy+x9rfB5N8yC71lH1nvMw==", - "license": "MIT", - "dependencies": { - "lodash-es": "^4.17.21" - }, - "peerDependencies": { - "chevrotain": "^11.0.0" - } - }, "node_modules/chokidar": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", @@ -6394,29 +7546,6 @@ "node": ">= 6" } }, - "node_modules/chromedriver": { - "version": "146.0.4", - "resolved": "https://registry.npmjs.org/chromedriver/-/chromedriver-146.0.4.tgz", - "integrity": "sha512-/yNqo99Xm0qgAjSh7DYy2KX6pfgyGnIM/k+2jUSc0T6CUCP5k26DWrAYU7Sy0t/dKCntMl45FDWfqP+yRWaCZQ==", - "hasInstallScript": true, - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@testim/chrome-version": "^1.1.4", - "axios": "^1.13.5", - "compare-versions": "^6.1.0", - "extract-zip": "^2.0.1", - "proxy-agent": "^6.5.0", - "proxy-from-env": "^2.0.0", - "tcp-port-used": "^1.0.2" - }, - "bin": { - "chromedriver": "bin/chromedriver" - }, - "engines": { - "node": ">=20" - } - }, "node_modules/cliui": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", @@ -6483,6 +7612,12 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "license": "MIT" }, + "node_modules/colord": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", + "license": "MIT" + }, "node_modules/colorette": { "version": "2.0.20", "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", @@ -6526,13 +7661,6 @@ "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", "license": "MIT" }, - "node_modules/compare-versions": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-6.1.1.tgz", - "integrity": "sha512-4hm4VPpIecmlg59CHXnRDnqGplJFrbLG4aFEl5vl6cK1u76ws3LLvX7ikFnTDl5vo39sjWD6AaDPYodJp/NNHg==", - "license": "MIT", - "optional": true - }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -6546,15 +7674,28 @@ "license": "MIT" }, "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.1.tgz", + "integrity": "sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q==", "license": "MIT", - "dependencies": { - "safe-buffer": "5.2.1" - }, "engines": { - "node": ">= 0.6" + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/convert-hrtime": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/convert-hrtime/-/convert-hrtime-5.0.0.tgz", + "integrity": "sha512-lOETlkIeYSJWcbbcvjRKGxVMXJR+8+OQb/mTPbA4ObPMytYIsUbuOE0Jzy60hjARYszq1id0j8KgVhC+WGZVTg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/convert-source-map": { @@ -6575,9 +7716,9 @@ } }, "node_modules/core-js-pure": { - "version": "3.48.0", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.48.0.tgz", - "integrity": "sha512-1slJgk89tWC51HQ1AEqG+s2VuwpTRr8ocu4n20QUcH1v9lAN0RXen0Q0AABa/DK1I7RrNWLucplOHMx8hfTGTw==", + "version": "3.49.0", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.49.0.tgz", + "integrity": "sha512-XM4RFka59xATyJv/cS3O3Kml72hQXUeGRuuTmMYFxwzc9/7C8OYTaIR/Ji+Yt8DXzsFLNhat15cE/JP15HrCgw==", "hasInstallScript": true, "license": "MIT", "funding": { @@ -6594,10 +7735,54 @@ "layout-base": "^1.0.0" } }, + "node_modules/cosmiconfig": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.1.tgz", + "integrity": "sha512-hr4ihw+DBqcvrsEDioRO31Z17x71pUYoNe/4h6Z0wB72p7MU7/9gH8Q3s12NFhHPfYBBOV3qyfUxmr/Yn3shnQ==", + "license": "MIT", + "dependencies": { + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/cosmiconfig/node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/country-flag-icons": { - "version": "1.6.15", - "resolved": "https://registry.npmjs.org/country-flag-icons/-/country-flag-icons-1.6.15.tgz", - "integrity": "sha512-92HoA8l6DluEidku8tKBftjuFRj4Rv3zDW1lXxCuNnqAxhUSkvso9gM/Afj4F5BnK+wneHIe3ydI+s+4NA29/Q==", + "version": "1.6.17", + "resolved": "https://registry.npmjs.org/country-flag-icons/-/country-flag-icons-1.6.17.tgz", + "integrity": "sha512-Nmik0289ZVZSI3c7mJR/amg6DyY7Z59b0sTFSKayeX72mHfPzCPJygwJs2pYgQULzuAyWeCUgwAJ+Dq8OR+JFw==", "license": "MIT" }, "node_modules/crelt": { @@ -6620,6 +7805,28 @@ "node": ">= 8" } }, + "node_modules/css-functions-list": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.3.3.tgz", + "integrity": "sha512-8HFEBPKhOpJPEPu70wJJetjKta86Gw9+CCyCnB3sui2qQfOvRyqBy4IKLKKAwdMpWb2lHXWk9Wb4Z6AmaUT1Pg==", + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/css-tree": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.2.1.tgz", + "integrity": "sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==", + "license": "MIT", + "dependencies": { + "mdn-data": "2.27.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, "node_modules/css.escape": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", @@ -6632,6 +7839,18 @@ "integrity": "sha512-umPSgYwZkdFoUrH5hIq5kf0wPSXiro51nPw0j2K/c83KflkPSTBGMz6NJvMB+07VlL0y7VPo6QJcDjcgKTTm3w==", "license": "MIT" }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/csstype": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", @@ -7137,16 +8356,6 @@ "lodash-es": "^4.17.21" } }, - "node_modules/data-uri-to-buffer": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz", - "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==", - "license": "MIT", - "optional": true, - "engines": { - "node": ">= 14" - } - }, "node_modules/data-view-buffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", @@ -7227,9 +8436,9 @@ } }, "node_modules/dayjs": { - "version": "1.11.19", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.19.tgz", - "integrity": "sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==", + "version": "1.11.20", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.20.tgz", + "integrity": "sha512-YbwwqR/uYpeoP4pu043q+LTDLFBLApUP6VxRihdfNTqu4ubqMlGDLd6ErXhEgsyvY0K6nCs7nggYumAN+9uEuQ==", "license": "MIT" }, "node_modules/debug": { @@ -7263,27 +8472,15 @@ } }, "node_modules/decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-10.0.0.tgz", + "integrity": "sha512-oj7KWToJuuxlPr7VV0vabvxEIiqNMo+q0NueIiL3XhtwC6FVOX7Hr1c0C4eD0bmf7Zr+S/dSf2xvkH3Ad6sU3Q==", "license": "MIT", "dependencies": { - "mimic-response": "^3.1.0" + "mimic-response": "^4.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/decompress-response/node_modules/mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "license": "MIT", - "engines": { - "node": ">=10" + "node": ">=20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -7362,15 +8559,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/defer-to-connect": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", - "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", - "license": "MIT", - "engines": { - "node": ">=10" - } - }, "node_modules/define-data-property": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", @@ -7417,25 +8605,10 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/degenerator": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz", - "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==", - "license": "MIT", - "optional": true, - "dependencies": { - "ast-types": "^0.13.4", - "escodegen": "^2.1.0", - "esprima": "^4.0.1" - }, - "engines": { - "node": ">= 14" - } - }, "node_modules/delaunator": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz", - "integrity": "sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.1.0.tgz", + "integrity": "sha512-AGrQ4QSgssa1NGmWmLPqN5NY2KajF5MqxetNEO+o0n3ZwZZeTmt7bBnvzHWrmkZFxGgr4HdyFgelzgi06otLuQ==", "license": "ISC", "dependencies": { "robust-predicates": "^3.0.2" @@ -7471,6 +8644,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, "node_modules/detect-newline": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-4.0.1.tgz", @@ -7529,10 +8711,41 @@ "license": "MIT", "peer": true }, + "node_modules/domelementtype": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-3.0.0.tgz", + "integrity": "sha512-umCQid3jKbDmVjx8jGaW7uUykm4DEUeyV21hPxNMo2nV955DhUThwqyOIDtreepP31hl84X7G5U9ZfsWvIB3Pg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause", + "engines": { + "node": ">=20.19.0" + } + }, + "node_modules/domhandler": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-6.0.1.tgz", + "integrity": "sha512-gYzvtM72ZtxQO0T048kd6HWSbbGCNOUwcnfQ01cqIJ4X2IYKFFHZ5mKvrQETcFXxsRObZulDaKmy//R7TPtsBg==", + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^3.0.0" + }, + "engines": { + "node": ">=20.19.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, "node_modules/dompurify": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.3.3.tgz", - "integrity": "sha512-Oj6pzI2+RqBfFG+qOaOLbFXLQ90ARpcGG6UePL82bJLtdsa6CYJD7nmiU8MW9nQNOtCHV3lZ/Bzq1X0QYbBZCA==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.4.2.tgz", + "integrity": "sha512-lHeS9SA/IKeIFFyYciHBr2n0v1VMPlSj843HdLOwjb2OxNwdq9Xykxqhk+FE42MzAdHvInbAolSE4mhahPpjXA==", "license": "(MPL-2.0 OR Apache-2.0)", "optionalDependencies": { "@types/trusted-types": "^2.0.7" @@ -7568,9 +8781,9 @@ "license": "ISC" }, "node_modules/electron-to-chromium": { - "version": "1.5.302", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.302.tgz", - "integrity": "sha512-sM6HAN2LyK82IyPBpznDRqlTQAtuSaO+ShzFiWTvoMJLHyZ+Y39r8VMfHzwbU8MVBzQ4Wdn85+wlZl2TLGIlwg==", + "version": "1.5.325", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.325.tgz", + "integrity": "sha512-PwfIw7WQSt3xX7yOf5OE/unLzsK9CaN2f/FvV3WjPR1Knoc1T9vePRVV4W1EM301JzzysK51K7FNKcusCr0zYA==", "license": "ISC" }, "node_modules/emoji-regex": { @@ -7600,6 +8813,15 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/error-ex": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", @@ -7696,9 +8918,9 @@ } }, "node_modules/es-iterator-helpers": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.2.tgz", - "integrity": "sha512-BrUQ0cPTB/IwXj23HtwHjS9n7O4h9FX94b4xc5zlTHxeLgTAdzYUDyy6KdExAl9lbN5rtfe44xpjpmj9grxs5w==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.3.1.tgz", + "integrity": "sha512-zWwRvqWiuBPr0muUG/78cW3aHROFCNIQ3zpmYDpwdbnt2m+xlNyRWpHBpa2lJjSBit7BQ+RXA1iwbSmu5yJ/EQ==", "license": "MIT", "dependencies": { "call-bind": "^1.0.8", @@ -7716,6 +8938,7 @@ "has-symbols": "^1.1.0", "internal-slot": "^1.1.0", "iterator.prototype": "^1.1.5", + "math-intrinsics": "^1.1.0", "safe-array-concat": "^1.1.3" }, "engines": { @@ -7723,9 +8946,9 @@ } }, "node_modules/es-module-lexer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.0.0.tgz", - "integrity": "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.1.0.tgz", + "integrity": "sha512-n27zTYMjYu1aj4MjCWzSP7G9r75utsaoc8m61weK+W8JMBGGQybd43GstCXZ3WNmSFtGT9wi59qQTW6mhTR5LQ==", "license": "MIT" }, "node_modules/es-object-atoms": { @@ -7784,6 +9007,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/es-toolkit": { + "version": "1.46.1", + "resolved": "https://registry.npmjs.org/es-toolkit/-/es-toolkit-1.46.1.tgz", + "integrity": "sha512-5eNtXOs3tbfxXOj04tjjseeWkRWaoCjdEI+96DgwzZoe6c9juL49pXlzAFTI72aWC9Y8p7168g6XIKjh7k6pyQ==", + "license": "MIT", + "workspaces": [ + "docs", + "benchmarks" + ] + }, "node_modules/esast-util-from-estree": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/esast-util-from-estree/-/esast-util-from-estree-2.0.0.tgz", @@ -7817,9 +9050,9 @@ } }, "node_modules/esbuild": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.4.tgz", - "integrity": "sha512-Rq4vbHnYkK5fws5NF7MYTU68FPRE1ajX7heQ/8QXXWqNgqqJ/GkmmyxIzUnf2Sr/bakf8l54716CcMGHYhMrrQ==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.28.0.tgz", + "integrity": "sha512-sNR9MHpXSUV/XB4zmsFKN+QgVG82Cc7+/aaxJ8Adi8hyOac+EXptIp45QBPaVyX3N70664wRbTcLTOemCAnyqw==", "hasInstallScript": true, "license": "MIT", "bin": { @@ -7829,32 +9062,32 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.27.4", - "@esbuild/android-arm": "0.27.4", - "@esbuild/android-arm64": "0.27.4", - "@esbuild/android-x64": "0.27.4", - "@esbuild/darwin-arm64": "0.27.4", - "@esbuild/darwin-x64": "0.27.4", - "@esbuild/freebsd-arm64": "0.27.4", - "@esbuild/freebsd-x64": "0.27.4", - "@esbuild/linux-arm": "0.27.4", - "@esbuild/linux-arm64": "0.27.4", - "@esbuild/linux-ia32": "0.27.4", - "@esbuild/linux-loong64": "0.27.4", - "@esbuild/linux-mips64el": "0.27.4", - "@esbuild/linux-ppc64": "0.27.4", - "@esbuild/linux-riscv64": "0.27.4", - "@esbuild/linux-s390x": "0.27.4", - "@esbuild/linux-x64": "0.27.4", - "@esbuild/netbsd-arm64": "0.27.4", - "@esbuild/netbsd-x64": "0.27.4", - "@esbuild/openbsd-arm64": "0.27.4", - "@esbuild/openbsd-x64": "0.27.4", - "@esbuild/openharmony-arm64": "0.27.4", - "@esbuild/sunos-x64": "0.27.4", - "@esbuild/win32-arm64": "0.27.4", - "@esbuild/win32-ia32": "0.27.4", - "@esbuild/win32-x64": "0.27.4" + "@esbuild/aix-ppc64": "0.28.0", + "@esbuild/android-arm": "0.28.0", + "@esbuild/android-arm64": "0.28.0", + "@esbuild/android-x64": "0.28.0", + "@esbuild/darwin-arm64": "0.28.0", + "@esbuild/darwin-x64": "0.28.0", + "@esbuild/freebsd-arm64": "0.28.0", + "@esbuild/freebsd-x64": "0.28.0", + "@esbuild/linux-arm": "0.28.0", + "@esbuild/linux-arm64": "0.28.0", + "@esbuild/linux-ia32": "0.28.0", + "@esbuild/linux-loong64": "0.28.0", + "@esbuild/linux-mips64el": "0.28.0", + "@esbuild/linux-ppc64": "0.28.0", + "@esbuild/linux-riscv64": "0.28.0", + "@esbuild/linux-s390x": "0.28.0", + "@esbuild/linux-x64": "0.28.0", + "@esbuild/netbsd-arm64": "0.28.0", + "@esbuild/netbsd-x64": "0.28.0", + "@esbuild/openbsd-arm64": "0.28.0", + "@esbuild/openbsd-x64": "0.28.0", + "@esbuild/openharmony-arm64": "0.28.0", + "@esbuild/sunos-x64": "0.28.0", + "@esbuild/win32-arm64": "0.28.0", + "@esbuild/win32-ia32": "0.28.0", + "@esbuild/win32-x64": "0.28.0" } }, "node_modules/escalade": { @@ -7878,57 +9111,25 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/escodegen": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", - "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", - "license": "BSD-2-Clause", - "optional": true, - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=6.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, - "node_modules/escodegen/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "license": "BSD-3-Clause", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/eslint": { - "version": "9.39.3", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.3.tgz", - "integrity": "sha512-VmQ+sifHUbI/IcSopBCF/HO3YiHQx/AVd3UVyYL6weuwW+HvON9VYn5l6Zl1WZzPWXPNZrSQpxwkkZ/VuvJZzg==", + "version": "9.39.4", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.4.tgz", + "integrity": "sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ==", "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.21.1", + "@eslint/config-array": "^0.21.2", "@eslint/config-helpers": "^0.4.2", "@eslint/core": "^0.17.0", - "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.39.3", + "@eslint/eslintrc": "^3.3.5", + "@eslint/js": "9.39.4", "@eslint/plugin-kit": "^0.4.1", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", - "ajv": "^6.12.4", + "ajv": "^6.14.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.6", "debug": "^4.3.2", @@ -7947,7 +9148,7 @@ "is-glob": "^4.0.0", "json-stable-stringify-without-jsonify": "^1.0.1", "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", + "minimatch": "^3.1.5", "natural-compare": "^1.4.0", "optionator": "^0.9.3" }, @@ -8048,22 +9249,6 @@ "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" } }, - "node_modules/eslint-plugin-import/node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "license": "MIT" - }, - "node_modules/eslint-plugin-import/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, "node_modules/eslint-plugin-import/node_modules/debug": { "version": "3.2.7", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", @@ -8073,35 +9258,14 @@ "ms": "^2.1.1" } }, - "node_modules/eslint-plugin-import/node_modules/minimatch": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.4.tgz", - "integrity": "sha512-twmL+S8+7yIsE9wsqgzU3E8/LumN3M3QELrBZ20OdmQ9jB2JvW5oZtBEmft84k/Gs5CG9mqtWc6Y9vW+JEzGxw==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/eslint-plugin-import/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/eslint-plugin-lit": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-lit/-/eslint-plugin-lit-2.2.1.tgz", - "integrity": "sha512-mnqqwpWF4PBF/YjlGt9mbHwrWCGMtaqdpnqISv3nGcTl8iStaAt9UGieMY3i8vwKfSSWtkEfBZUcRKFGys6yiw==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-lit/-/eslint-plugin-lit-2.3.1.tgz", + "integrity": "sha512-wAqDOOWQzUoY5uK124ZR+h7Snx0+KdZd3Knv6133gRHEcu03jbqnouK4GBwVl6PkGOkNy40zSchOp9VbBh4yHg==", "license": "MIT", "dependencies": { - "parse5": "^6.0.1", - "parse5-htmlparser2-tree-adapter": "^6.0.1" + "parse5": "^8.0.1", + "parse5-htmlparser2-tree-adapter": "^8.0.1" }, "engines": { "node": ">= 18" @@ -8110,11 +9274,29 @@ "eslint": ">= 8" } }, + "node_modules/eslint-plugin-lit/node_modules/entities": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-8.0.0.tgz", + "integrity": "sha512-zwfzJecQ/Uej6tusMqwAqU/6KL2XaB2VZ2Jg54Je6ahNBGNH6Ek6g3jjNCF0fG9EWQKGZNddNjU5F1ZQn/sBnA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=20.19.0" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/eslint-plugin-lit/node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "license": "MIT" + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-8.0.1.tgz", + "integrity": "sha512-z1e/HMG90obSGeidlli3hj7cbocou0/wa5HacvI3ASx34PecNjNQeaHNo5WIZpWofN9kgkqV1q5YvXe3F0FoPw==", + "license": "MIT", + "dependencies": { + "entities": "^8.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } }, "node_modules/eslint-plugin-react": { "version": "7.37.5", @@ -8167,34 +9349,6 @@ "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" } }, - "node_modules/eslint-plugin-react/node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "license": "MIT" - }, - "node_modules/eslint-plugin-react/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/eslint-plugin-react/node_modules/minimatch": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.4.tgz", - "integrity": "sha512-twmL+S8+7yIsE9wsqgzU3E8/LumN3M3QELrBZ20OdmQ9jB2JvW5oZtBEmft84k/Gs5CG9mqtWc6Y9vW+JEzGxw==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/eslint-plugin-react/node_modules/resolve": { "version": "2.0.0-next.6", "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.6.tgz", @@ -8218,15 +9372,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-plugin-react/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/eslint-plugin-wc": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/eslint-plugin-wc/-/eslint-plugin-wc-3.1.0.tgz", @@ -8257,34 +9402,6 @@ } }, "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "license": "MIT" - }, - "node_modules/eslint/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/eslint/node_modules/eslint-visitor-keys": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", @@ -8296,27 +9413,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/eslint/node_modules/minimatch": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.4.tgz", - "integrity": "sha512-twmL+S8+7yIsE9wsqgzU3E8/LumN3M3QELrBZ20OdmQ9jB2JvW5oZtBEmft84k/Gs5CG9mqtWc6Y9vW+JEzGxw==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/espree": { "version": "10.4.0", "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", @@ -8334,18 +9430,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, "node_modules/esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", @@ -8514,40 +9598,59 @@ } }, "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-9.6.1.tgz", + "integrity": "sha512-9Be3ZoN4LmYR90tUoVu2te2BsbzHfhJyfEiAVfz7N5/zv+jduIfLrV2xdQXOHbaD6KgpGdO9PRPM1Y4Q9QkPkA==", "license": "MIT", "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" + "@sindresorhus/merge-streams": "^4.0.0", + "cross-spawn": "^7.0.6", + "figures": "^6.1.0", + "get-stream": "^9.0.0", + "human-signals": "^8.0.1", + "is-plain-obj": "^4.1.0", + "is-stream": "^4.0.1", + "npm-run-path": "^6.0.0", + "pretty-ms": "^9.2.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^4.0.0", + "yoctocolors": "^2.1.1" }, "engines": { - "node": ">=10" + "node": "^18.19.0 || >=20.5.0" }, "funding": { "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, "node_modules/execa/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", + "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", "license": "MIT", + "dependencies": { + "@sec-ant/readable-stream": "^0.4.1", + "is-stream": "^4.0.1" + }, "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/execa/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/expect-type": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.3.0.tgz", @@ -8588,27 +9691,6 @@ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", "license": "MIT" }, - "node_modules/extract-zip": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", - "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", - "license": "BSD-2-Clause", - "optional": true, - "dependencies": { - "debug": "^4.1.1", - "get-stream": "^5.1.0", - "yauzl": "^2.10.0" - }, - "bin": { - "extract-zip": "cli.js" - }, - "engines": { - "node": ">= 10.17.0" - }, - "optionalDependencies": { - "@types/yauzl": "^2.9.1" - } - }, "node_modules/fast-copy": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/fast-copy/-/fast-copy-4.0.2.tgz", @@ -8679,6 +9761,31 @@ "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", "license": "MIT" }, + "node_modules/fast-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.2.tgz", + "integrity": "sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/fastest-levenshtein": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "license": "MIT", + "engines": { + "node": ">= 4.9.1" + } + }, "node_modules/fastq": { "version": "1.20.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", @@ -8710,16 +9817,6 @@ "walk-up-path": "^4.0.0" } }, - "node_modules/fd-slicer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", - "license": "MIT", - "optional": true, - "dependencies": { - "pend": "~1.2.0" - } - }, "node_modules/fdir": { "version": "6.5.0", "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", @@ -8737,11 +9834,20 @@ } } }, - "node_modules/fflate": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz", - "integrity": "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==", - "license": "MIT" + "node_modules/figures": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz", + "integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==", + "license": "MIT", + "dependencies": { + "is-unicode-supported": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/file-entry-cache": { "version": "8.0.0", @@ -8756,45 +9862,45 @@ } }, "node_modules/file-type": { - "version": "20.5.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-20.5.0.tgz", - "integrity": "sha512-BfHZtG/l9iMm4Ecianu7P8HRD2tBHLtjXinm4X62XBOYzi7CYA7jyqfJzOvXHqzVrVPYqBo2/GvbARMaaJkKVg==", + "version": "21.3.4", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-21.3.4.tgz", + "integrity": "sha512-Ievi/yy8DS3ygGvT47PjSfdFoX+2isQueoYP1cntFW1JLYAuS4GD7NUPGg4zv2iZfV52uDyk5w5Z0TdpRS6Q1g==", "license": "MIT", "dependencies": { - "@tokenizer/inflate": "^0.2.6", - "strtok3": "^10.2.0", - "token-types": "^6.0.0", + "@tokenizer/inflate": "^0.4.1", + "strtok3": "^10.3.4", + "token-types": "^6.1.1", "uint8array-extras": "^1.4.0" }, "engines": { - "node": ">=18" + "node": ">=20" }, "funding": { "url": "https://github.com/sindresorhus/file-type?sponsor=1" } }, "node_modules/filename-reserved-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-3.0.0.tgz", - "integrity": "sha512-hn4cQfU6GOT/7cFHXBqeBg2TbrMBgdD0kcjLhvSQYYwm3s4B6cjvBfb7nBALJLAXqmU5xajSa7X2NnUud/VCdw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-4.0.0.tgz", + "integrity": "sha512-9ZT504KxEQDamsOogZImAWGEN24R1uFAxU3ZS4AZqn2ooidmN68Olh7n4/RcA4lLatZztjA0ZSuxeLHVoCc8JA==", "license": "MIT", "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/filenamify": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-6.0.0.tgz", - "integrity": "sha512-vqIlNogKeyD3yzrm0yhRMQg8hOVwYcYRfjEoODd49iCprMn4HL85gK3HcykQE53EPIpX3HcAbGA5ELQv216dAQ==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-7.0.1.tgz", + "integrity": "sha512-9b4rfnaX2MkJCgp27wypV6DAMvj4WMOSgJ+TdcpJIO84Dql+Cv6iJjdG4XDTLubOWkfNiBv3joO59sau/TXw+Q==", "license": "MIT", "dependencies": { - "filename-reserved-regex": "^3.0.0" + "filename-reserved-regex": "^4.0.0" }, "engines": { - "node": ">=16" + "node": ">=20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -8835,15 +9941,16 @@ } }, "node_modules/find-versions": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-5.1.0.tgz", - "integrity": "sha512-+iwzCJ7C5v5KgcBuueqVoNiHVoQpwiUK5XFLjf0affFTep+Wcw93tPvmb8tqujDNmzhBDPddnWV/qgWSXgq+Hg==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-6.0.0.tgz", + "integrity": "sha512-2kCCtc+JvcZ86IGAz3Z2Y0A1baIz9fL31pH/0S1IqZr9Iwnjq8izfPtrCyQKO6TLMPELLsQMre7VDqeIKCsHkA==", "license": "MIT", "dependencies": { - "semver-regex": "^4.0.5" + "semver-regex": "^4.0.5", + "super-regex": "^1.0.0" }, "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -8869,9 +9976,9 @@ "license": "ISC" }, "node_modules/follow-redirects": { - "version": "1.15.11", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", - "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz", + "integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==", "funding": [ { "type": "individual", @@ -8920,12 +10027,12 @@ } }, "node_modules/form-data-encoder": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz", - "integrity": "sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-4.1.0.tgz", + "integrity": "sha512-G6NsmEW15s0Uw9XnCg+33H3ViYRyiM0hMrMhhqQOR8NFc5GhYrI+6I3u7OTw7b91J2g8rtvMBZJDbcGb2YUniw==", "license": "MIT", "engines": { - "node": ">= 14.17" + "node": ">= 18" } }, "node_modules/format": { @@ -8971,10 +10078,31 @@ "node": ">=16" } }, + "node_modules/format-imports/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/format-imports/node_modules/brace-expansion": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", + "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, "node_modules/format-imports/node_modules/fs-extra": { - "version": "11.3.3", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.3.tgz", - "integrity": "sha512-VWSRii4t0AFm6ixFFmLLx1t7wS1gh+ckoa84aOeapGum0h+EZd1EhEumSB+ZdDLnEPuucsVB9oB7cxJHap6Afg==", + "version": "11.3.4", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.4.tgz", + "integrity": "sha512-CTXd6rk/M3/ULNQj8FBqBWHYBVYybQ3VPBw0xGKFe3tuH7ytT6ACnvzpIQ3UZtB8yvUKC2cXn1a+x+5EVQLovA==", "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", @@ -8985,6 +10113,34 @@ "node": ">=14.14" } }, + "node_modules/format-imports/node_modules/minimatch": { + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", + "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/format-imports/node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, "node_modules/formatly": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/formatly/-/formatly-0.3.0.tgz", @@ -9041,6 +10197,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/function-timeout": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/function-timeout/-/function-timeout-1.0.2.tgz", + "integrity": "sha512-939eZS4gJ3htTHAldmyyuzlrD58P03fHG49v2JfFXbV6OhvZKRC9j2yAtdHw/zrp2zXHuv05zMIy40F0ge7spA==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/function.prototype.name": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", @@ -9071,12 +10239,16 @@ } }, "node_modules/fuse.js": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/fuse.js/-/fuse.js-7.1.0.tgz", - "integrity": "sha512-trLf4SzuuUxfusZADLINj+dE8clK1frKdmqiJNb1Es75fmI5oY6X2mxLVUciLLjxqw/xr72Dhy+lER6dGd02FQ==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/fuse.js/-/fuse.js-7.3.0.tgz", + "integrity": "sha512-plz8RVjfcDedTGfVngWH1jmJvBvAwi1v2jecfDerbEnMcmOYUEEwKFTHbNoCiYyzaK2Ws8lABkTCcRSqCY1q4w==", "license": "Apache-2.0", "engines": { "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/krisk" } }, "node_modules/generator-function": { @@ -9125,6 +10297,18 @@ "node": "6.* || 8.* || >= 10.*" } }, + "node_modules/get-east-asian-width": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.6.0.tgz", + "integrity": "sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/get-intrinsic": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", @@ -9162,22 +10346,6 @@ "node": ">= 0.4" } }, - "node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "license": "MIT", - "optional": true, - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/get-symbol-description": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", @@ -9195,19 +10363,16 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/get-uri": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.5.tgz", - "integrity": "sha512-b1O07XYq8eRuVzBNgJLstU6FYc1tS6wnMtF1I1D9lE8LxZSOGZ7LhxN54yPP6mGw5f2CkXY2BQUL9Fx41qvcIg==", + "node_modules/get-tsconfig": { + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.14.0.tgz", + "integrity": "sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==", "license": "MIT", - "optional": true, "dependencies": { - "basic-ftp": "^5.0.2", - "data-uri-to-buffer": "^6.0.2", - "debug": "^4.3.4" + "resolve-pkg-maps": "^1.0.0" }, - "engines": { - "node": ">= 14" + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" } }, "node_modules/git-hooks-list": { @@ -9231,10 +10396,48 @@ "node": ">=10.13.0" } }, + "node_modules/global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "license": "MIT", + "dependencies": { + "global-prefix": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "license": "MIT", + "dependencies": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/global-prefix/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, "node_modules/globals": { - "version": "17.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-17.4.0.tgz", - "integrity": "sha512-hjrNztw/VajQwOLsMNT1cbJiH2muO3OROCHnbehc8eY5JyD2gqz4AcMHPqgaOR59DjgUjYAYLeH699g/eWi2jw==", + "version": "17.6.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-17.6.0.tgz", + "integrity": "sha512-sepffkT8stwnIYbsMBpoCHJuJM5l98FUF2AnE07hfvE0m/qp3R586hw4jF4uadbhvg1ooIdzuu7CsfD2jzCaNA==", "license": "MIT", "engines": { "node": ">=18" @@ -9260,9 +10463,9 @@ } }, "node_modules/globby": { - "version": "16.1.1", - "resolved": "https://registry.npmjs.org/globby/-/globby-16.1.1.tgz", - "integrity": "sha512-dW7vl+yiAJSp6aCekaVnVJxurRv7DCOLyXqEG3RYMYUg7AuJ2jCqPkZTA8ooqC2vtnkaMcV5WfFBMuEnTu1OQg==", + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-16.2.0.tgz", + "integrity": "sha512-QrJia2qDf5BB/V6HYlDTs0I0lBahyjLzpGQg3KT7FnCdTonAyPy2RtY802m2k4ALx6Dp752f82WsOczEVr3l6Q==", "license": "MIT", "dependencies": { "@sindresorhus/merge-streams": "^4.0.0", @@ -9279,6 +10482,21 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/globby/node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/globjoin": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz", + "integrity": "sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==", + "license": "MIT" + }, "node_modules/gopd": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", @@ -9292,37 +10510,47 @@ } }, "node_modules/got": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/got/-/got-13.0.0.tgz", - "integrity": "sha512-XfBk1CxOOScDcMr9O1yKkNaQyy865NbYs+F7dr4H0LZMVgCj2Le59k6PqbNHoL5ToeaEQUYh6c6yMfVcc6SJxA==", + "version": "14.6.6", + "resolved": "https://registry.npmjs.org/got/-/got-14.6.6.tgz", + "integrity": "sha512-QLV1qeYSo5l13mQzWgP/y0LbMr5Plr5fJilgAIwgnwseproEbtNym8xpLsDzeZ6MWXgNE6kdWGBjdh3zT/Qerg==", "license": "MIT", "dependencies": { - "@sindresorhus/is": "^5.2.0", - "@szmarczak/http-timer": "^5.0.1", + "@sindresorhus/is": "^7.0.1", + "byte-counter": "^0.1.0", "cacheable-lookup": "^7.0.0", - "cacheable-request": "^10.2.8", - "decompress-response": "^6.0.0", - "form-data-encoder": "^2.1.2", - "get-stream": "^6.0.1", - "http2-wrapper": "^2.1.10", + "cacheable-request": "^13.0.12", + "decompress-response": "^10.0.0", + "form-data-encoder": "^4.0.2", + "http2-wrapper": "^2.2.1", + "keyv": "^5.5.3", "lowercase-keys": "^3.0.0", - "p-cancelable": "^3.0.0", - "responselike": "^3.0.0" + "p-cancelable": "^4.0.1", + "responselike": "^4.0.2", + "type-fest": "^4.26.1" }, "engines": { - "node": ">=16" + "node": ">=20" }, "funding": { "url": "https://github.com/sindresorhus/got?sponsor=1" } }, - "node_modules/got/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "node_modules/got/node_modules/keyv": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.6.0.tgz", + "integrity": "sha512-CYDD3SOtsHtyXeEORYRx2qBtpDJFjRTGXUtmNEMGyzYOKj1TE3tycdlho7kA1Ufx9OYWZzg52QFBGALTirzDSw==", "license": "MIT", + "dependencies": { + "@keyv/serialize": "^1.1.1" + } + }, + "node_modules/got/node_modules/type-fest": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", + "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", + "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">=10" + "node": ">=16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -9421,6 +10649,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/hashery": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/hashery/-/hashery-1.5.1.tgz", + "integrity": "sha512-iZyKG96/JwPz1N55vj2Ie2vXbhu440zfUfJvSwEqEbeLluk7NnapfGqa7LH0mOsnDxTF85Mx8/dyR6HfqcbmbQ==", + "license": "MIT", + "dependencies": { + "hookified": "^1.15.0" + }, + "engines": { + "node": ">=20" + } + }, "node_modules/hasown": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", @@ -9682,12 +10922,30 @@ "node": ">=12.0.0" } }, + "node_modules/hookified": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/hookified/-/hookified-1.15.1.tgz", + "integrity": "sha512-MvG/clsADq1GPM2KGo2nyfaWVyn9naPiXrqIe4jYjXNZQt238kWyOGrsyc/DmRAQ+Re6yeo6yX/yoNCG5KAEVg==", + "license": "MIT" + }, "node_modules/hosted-git-info": { "version": "2.8.9", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "license": "ISC" }, + "node_modules/html-tags": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-5.1.0.tgz", + "integrity": "sha512-n6l5uca7/y5joxZ3LUePhzmBFUJ+U2YWzhMa8XUTecSeSlQiZdF5XAd/Q3/WUl0VsXgUwWi8I7CNIwdI5WN1SQ==", + "license": "MIT", + "engines": { + "node": ">=20.10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/html-void-elements": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", @@ -9704,20 +10962,6 @@ "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==", "license": "BSD-2-Clause" }, - "node_modules/http-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", - "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", - "license": "MIT", - "optional": true, - "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, "node_modules/http2-wrapper": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.1.tgz", @@ -9743,27 +10987,13 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/https-proxy-agent": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", - "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", - "license": "MIT", - "optional": true, - "dependencies": { - "agent-base": "^7.1.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" - } - }, "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.1.tgz", + "integrity": "sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==", "license": "Apache-2.0", "engines": { - "node": ">=10.17.0" + "node": ">=18.18.0" } }, "node_modules/iconv-lite": { @@ -9799,9 +11029,9 @@ "license": "BSD-3-Clause" }, "node_modules/ignore": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", - "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "license": "MIT", "engines": { "node": ">= 4" @@ -9829,6 +11059,16 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/import-meta-resolve": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.2.0.tgz", + "integrity": "sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", @@ -9847,6 +11087,12 @@ "node": ">=8" } }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "license": "ISC" + }, "node_modules/inline-style-parser": { "version": "0.2.7", "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.7.tgz", @@ -9885,26 +11131,6 @@ "node": ">=12" } }, - "node_modules/ip-address": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz", - "integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==", - "license": "MIT", - "optional": true, - "engines": { - "node": ">= 12" - } - }, - "node_modules/ip-regex": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.3.0.tgz", - "integrity": "sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==", - "license": "MIT", - "optional": true, - "engines": { - "node": ">=8" - } - }, "node_modules/is-alphabetical": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", @@ -10285,6 +11511,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-potential-custom-element-name": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", @@ -10346,12 +11581,12 @@ } }, "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", + "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", "license": "MIT", "engines": { - "node": ">=8" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -10405,12 +11640,17 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-url": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", - "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==", + "node_modules/is-unicode-supported": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", + "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", "license": "MIT", - "optional": true + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/is-valid-element-name": { "version": "1.0.0", @@ -10479,21 +11719,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is2": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/is2/-/is2-2.0.9.tgz", - "integrity": "sha512-rZkHeBn9Zzq52sd9IUIV3a5mfwBY+o2HePMh0wkGBM4z4qjvy2GwVxQ6nNXSfw6MmVP6gf1QIlWjiOavhM3x5g==", - "license": "MIT", - "optional": true, - "dependencies": { - "deep-is": "^0.1.3", - "ip-regex": "^4.1.0", - "is-url": "^1.2.4" - }, - "engines": { - "node": ">=v0.10.0" - } - }, "node_modules/isarray": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", @@ -10595,6 +11820,12 @@ "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", "license": "MIT" }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "license": "MIT" + }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -10668,9 +11899,9 @@ } }, "node_modules/katex": { - "version": "0.16.33", - "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.33.tgz", - "integrity": "sha512-q3N5u+1sY9Bu7T4nlXoiRBXWfwSefNGoKeOwekV+gw0cAXQlz2Ww6BLcmBxVDeXBMUDQv6fK5bcNaJLxob3ZQA==", + "version": "0.16.42", + "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.42.tgz", + "integrity": "sha512-sZ4jqyEXfHTLEFK+qsFYToa3UZ0rtFcPGwKpyiRYh2NJn8obPWOQ+/u7ux0F6CAU/y78+Mksh1YkxTPXTh47TQ==", "funding": [ "https://opencollective.com/katex", "https://github.com/sponsors/katex" @@ -10716,9 +11947,9 @@ } }, "node_modules/knip": { - "version": "5.88.0", - "resolved": "https://registry.npmjs.org/knip/-/knip-5.88.0.tgz", - "integrity": "sha512-FZjQYLYwUbVrtC3C1cKyEMMqR4K2ZlkQLZszJgF5cfDo4GUSBZAdAV0P3eyzZrkssRoghLJQA9HTQUW7G+Tc8Q==", + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/knip/-/knip-6.11.0.tgz", + "integrity": "sha512-84PTlN8Q5smLpTbzs8smTVh8PMbTDXtw0tFksXq/m6auGFC/KSzJykKFmnYh3As38kiWDkoDBvdTTyKk5M1TAQ==", "funding": [ { "type": "github", @@ -10731,17 +11962,18 @@ ], "license": "ISC", "dependencies": { - "@nodelib/fs.walk": "^1.2.3", - "fast-glob": "^3.3.3", + "fdir": "^6.5.0", "formatly": "^0.3.0", + "get-tsconfig": "4.14.0", "jiti": "^2.6.0", "minimist": "^1.2.8", + "oxc-parser": "^0.128.0", "oxc-resolver": "^11.19.1", - "picocolors": "^1.1.1", - "picomatch": "^4.0.1", - "smol-toml": "^1.5.2", + "picomatch": "^4.0.4", + "smol-toml": "^1.6.1", "strip-json-comments": "5.0.3", - "unbash": "^2.2.0", + "tinyglobby": "^0.2.16", + "unbash": "^3.0.0", "yaml": "^2.8.2", "zod": "^4.1.11" }, @@ -10750,11 +11982,7 @@ "knip-bun": "bin/knip-bun.js" }, "engines": { - "node": ">=18.18.0" - }, - "peerDependencies": { - "@types/node": ">=18", - "typescript": ">=5.0.4 <7" + "node": "^20.19.0 || >=22.12.0" } }, "node_modules/knip/node_modules/strip-json-comments": { @@ -10769,21 +11997,20 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/langium": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/langium/-/langium-4.2.1.tgz", - "integrity": "sha512-zu9QWmjpzJcomzdJQAHgDVhLGq5bLosVak1KVa40NzQHXfqr4eAHupvnPOVXEoLkg6Ocefvf/93d//SB7du4YQ==", + "node_modules/knip/node_modules/tinyglobby": { + "version": "0.2.16", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.16.tgz", + "integrity": "sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==", "license": "MIT", "dependencies": { - "chevrotain": "~11.1.1", - "chevrotain-allstar": "~0.3.1", - "vscode-languageserver": "~9.0.1", - "vscode-languageserver-textdocument": "~1.0.11", - "vscode-uri": "~3.1.0" + "fdir": "^6.5.0", + "picomatch": "^4.0.4" }, "engines": { - "node": ">=20.10.0", - "npm": ">=10.2.3" + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" } }, "node_modules/layout-base": { @@ -10824,6 +12051,261 @@ "resolved": "packages/lex", "link": true }, + "node_modules/lightningcss": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz", + "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==", + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-android-arm64": "1.32.0", + "lightningcss-darwin-arm64": "1.32.0", + "lightningcss-darwin-x64": "1.32.0", + "lightningcss-freebsd-x64": "1.32.0", + "lightningcss-linux-arm-gnueabihf": "1.32.0", + "lightningcss-linux-arm64-gnu": "1.32.0", + "lightningcss-linux-arm64-musl": "1.32.0", + "lightningcss-linux-x64-gnu": "1.32.0", + "lightningcss-linux-x64-musl": "1.32.0", + "lightningcss-win32-arm64-msvc": "1.32.0", + "lightningcss-win32-x64-msvc": "1.32.0" + } + }, + "node_modules/lightningcss-android-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz", + "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz", + "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz", + "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz", + "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz", + "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==", + "cpu": [ + "arm" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz", + "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz", + "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz", + "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz", + "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz", + "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz", + "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "license": "MIT" + }, "node_modules/lit": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/lit/-/lit-3.3.2.tgz", @@ -10983,15 +12465,15 @@ } }, "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", + "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", "license": "MIT" }, "node_modules/lodash-es": { - "version": "4.17.23", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.23.tgz", - "integrity": "sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.18.1.tgz", + "integrity": "sha512-J8xewKD/Gk22OZbhpOVSwcs60zhd95ESDwezOFuA3/099925PdHJ7OFHNTGtajL3AlZkykD32HykiMo+BIBI8A==", "license": "MIT" }, "node_modules/lodash.deburr": { @@ -11006,6 +12488,12 @@ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "license": "MIT" }, + "node_modules/lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", + "license": "MIT" + }, "node_modules/log4js": { "version": "6.9.1", "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.9.1.tgz", @@ -11105,6 +12593,35 @@ "@jridgewell/sourcemap-codec": "^1.5.5" } }, + "node_modules/make-asynchronous": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/make-asynchronous/-/make-asynchronous-1.1.0.tgz", + "integrity": "sha512-ayF7iT+44LXdxJLTrTd3TLQpFDDvPCBxXxbv+pMUSuHA5Q8zyAfwkRP6aHHwNVFBUFWtxAHqwNJxF8vMZLAbVg==", + "license": "MIT", + "dependencies": { + "p-event": "^6.0.0", + "type-fest": "^4.6.0", + "web-worker": "^1.5.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-asynchronous/node_modules/type-fest": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", + "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/mapbox-to-css-font": { "version": "2.4.5", "resolved": "https://registry.npmjs.org/mapbox-to-css-font/-/mapbox-to-css-font-2.4.5.tgz", @@ -11154,6 +12671,16 @@ "node": ">= 0.4" } }, + "node_modules/mathml-tag-names": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-4.0.0.tgz", + "integrity": "sha512-aa6AU2Pcx0VP/XWnh8IGL0SYSgQHDT6Ucror2j2mXeFAlN3ahaNs8EZtG1YiticMkSLj3Gt6VPFfZogt7G5iFQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/md-front-matter": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/md-front-matter/-/md-front-matter-1.0.4.tgz", @@ -11513,6 +13040,12 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/mdn-data": { + "version": "2.27.1", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.27.1.tgz", + "integrity": "sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==", + "license": "CC0-1.0" + }, "node_modules/memorystream": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", @@ -11521,6 +13054,18 @@ "node": ">= 0.10.0" } }, + "node_modules/meow": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-14.1.0.tgz", + "integrity": "sha512-EDYo6VlmtnumlcBCbh1gLJ//9jvM/ndXHfVXIFrZVr6fGcwTUyCTFNTLCKuY3ffbK8L/+3Mzqnd58RojiZqHVw==", + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", @@ -11537,14 +13082,14 @@ } }, "node_modules/mermaid": { - "version": "11.13.0", - "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-11.13.0.tgz", - "integrity": "sha512-fEnci+Immw6lKMFI8sqzjlATTyjLkRa6axrEgLV2yHTfv8r+h1wjFbV6xeRtd4rUV1cS4EpR9rwp3Rci7TRWDw==", + "version": "11.15.0", + "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-11.15.0.tgz", + "integrity": "sha512-pTMbcf3rWdtLiYGpmoTjHEpeY8seiy6sR+9nD7LOs8KfUbHE4lOUAprTRqRAcWSQ6MQpdX+YEsxShtGsINtPtw==", "license": "MIT", "dependencies": { "@braintree/sanitize-url": "^7.1.1", "@iconify/utils": "^3.0.2", - "@mermaid-js/parser": "^1.0.1", + "@mermaid-js/parser": "^1.1.1", "@types/d3": "^7.4.3", "@upsetjs/venn.js": "^2.0.0", "cytoscape": "^3.33.1", @@ -11555,14 +13100,14 @@ "dagre-d3-es": "7.0.14", "dayjs": "^1.11.19", "dompurify": "^3.3.1", + "es-toolkit": "^1.45.1", "katex": "^0.16.25", "khroma": "^2.1.0", - "lodash-es": "^4.17.23", "marked": "^16.3.0", "roughjs": "^4.6.6", "stylis": "^4.3.6", "ts-dedent": "^2.2.0", - "uuid": "^11.1.0" + "uuid": "^11.1.0 || ^12 || ^13 || ^14.0.0" } }, "node_modules/mermaid-isomorphic": { @@ -12362,9 +13907,9 @@ } }, "node_modules/micromatch/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", "license": "MIT", "engines": { "node": ">=8.6" @@ -12395,12 +13940,15 @@ } }, "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", "license": "MIT", "engines": { - "node": ">=6" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/mimic-response": { @@ -12446,18 +13994,15 @@ } }, "node_modules/minimatch": { - "version": "10.2.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.3.tgz", - "integrity": "sha512-Rwi3pnapEqirPSbWbrZaa6N3nmqq4Xer/2XooiOKyV3q12ML06f7MOuc5DVH8ONZIFhwIYQ3yzPH4nt7iWHaTg==", - "license": "BlueOak-1.0.0", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "license": "ISC", "dependencies": { - "brace-expansion": "^5.0.2" + "brace-expansion": "^1.1.7" }, "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": "*" } }, "node_modules/minimist": { @@ -12470,15 +14015,15 @@ } }, "node_modules/mlly": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.8.0.tgz", - "integrity": "sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==", + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.8.2.tgz", + "integrity": "sha512-d+ObxMQFmbt10sretNDytwt85VrbkhhUA/JBGm1MPaWJ65Cl4wOgLaB1NYvJSZ0Ef03MMEU/0xpPMXUIQ29UfA==", "license": "MIT", "dependencies": { - "acorn": "^8.15.0", + "acorn": "^8.16.0", "pathe": "^2.0.3", "pkg-types": "^1.3.1", - "ufo": "^1.6.1" + "ufo": "^1.6.3" } }, "node_modules/mrmime": { @@ -12529,16 +14074,6 @@ "node": ">= 10" } }, - "node_modules/netmask": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", - "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", - "license": "MIT", - "optional": true, - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", @@ -12552,9 +14087,9 @@ "license": "MIT" }, "node_modules/node-addon-api": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-8.5.0.tgz", - "integrity": "sha512-/bRZty2mXUIFY/xU5HLvveNHlswNJej+RnxBjOMkidWfwZzgTbPG1E3K5TOxRLOR+5hX7bSofy8yf1hZevMS8A==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-8.6.0.tgz", + "integrity": "sha512-gBVjCaqDlRUk0EwoPNKzIr9KkS9041G/q31IBShPs1Xz6UTA+EXdZADbzqAJQrpDRq71CIMnOP5VMut3SL0z5Q==", "license": "MIT", "optional": true, "engines": { @@ -12595,15 +14130,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/node-exports-info/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/node-fetch-commonjs": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/node-fetch-commonjs/-/node-fetch-commonjs-3.3.2.tgz", @@ -12634,9 +14160,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.27", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", - "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", + "version": "2.0.36", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.36.tgz", + "integrity": "sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA==", "license": "MIT" }, "node_modules/normalize-package-data": { @@ -12718,22 +14244,6 @@ "node": ">=4" } }, - "node_modules/npm-run-all/node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "license": "MIT" - }, - "node_modules/npm-run-all/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, "node_modules/npm-run-all/node_modules/chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -12797,18 +14307,6 @@ "node": ">=4" } }, - "node_modules/npm-run-all/node_modules/minimatch": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.4.tgz", - "integrity": "sha512-twmL+S8+7yIsE9wsqgzU3E8/LumN3M3QELrBZ20OdmQ9jB2JvW5oZtBEmft84k/Gs5CG9mqtWc6Y9vW+JEzGxw==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/npm-run-all/node_modules/path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", @@ -12873,15 +14371,43 @@ } }, "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz", + "integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==", "license": "MIT", "dependencies": { - "path-key": "^3.0.0" + "path-key": "^4.0.0", + "unicorn-magic": "^0.3.0" }, "engines": { - "node": ">=8" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path/node_modules/unicorn-magic": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", + "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/object-assign": { @@ -13056,15 +14582,15 @@ } }, "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", "license": "MIT", "dependencies": { - "mimic-fn": "^2.1.0" + "mimic-fn": "^4.0.0" }, "engines": { - "node": ">=6" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -13146,6 +14672,43 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/oxc-parser": { + "version": "0.128.0", + "resolved": "https://registry.npmjs.org/oxc-parser/-/oxc-parser-0.128.0.tgz", + "integrity": "sha512-XkOw3eiIxAgQ19WRew/Bq9wc5Ga/guaWIzDBzq80z1PyuDNGvWBpPby9k6YGwV8A8uMw+Nlq3xqlzuDYmUFYUw==", + "license": "MIT", + "dependencies": { + "@oxc-project/types": "^0.128.0" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/sponsors/Boshen" + }, + "optionalDependencies": { + "@oxc-parser/binding-android-arm-eabi": "0.128.0", + "@oxc-parser/binding-android-arm64": "0.128.0", + "@oxc-parser/binding-darwin-arm64": "0.128.0", + "@oxc-parser/binding-darwin-x64": "0.128.0", + "@oxc-parser/binding-freebsd-x64": "0.128.0", + "@oxc-parser/binding-linux-arm-gnueabihf": "0.128.0", + "@oxc-parser/binding-linux-arm-musleabihf": "0.128.0", + "@oxc-parser/binding-linux-arm64-gnu": "0.128.0", + "@oxc-parser/binding-linux-arm64-musl": "0.128.0", + "@oxc-parser/binding-linux-ppc64-gnu": "0.128.0", + "@oxc-parser/binding-linux-riscv64-gnu": "0.128.0", + "@oxc-parser/binding-linux-riscv64-musl": "0.128.0", + "@oxc-parser/binding-linux-s390x-gnu": "0.128.0", + "@oxc-parser/binding-linux-x64-gnu": "0.128.0", + "@oxc-parser/binding-linux-x64-musl": "0.128.0", + "@oxc-parser/binding-openharmony-arm64": "0.128.0", + "@oxc-parser/binding-wasm32-wasi": "0.128.0", + "@oxc-parser/binding-win32-arm64-msvc": "0.128.0", + "@oxc-parser/binding-win32-ia32-msvc": "0.128.0", + "@oxc-parser/binding-win32-x64-msvc": "0.128.0" + } + }, "node_modules/oxc-resolver": { "version": "11.19.1", "resolved": "https://registry.npmjs.org/oxc-resolver/-/oxc-resolver-11.19.1.tgz", @@ -13178,12 +14741,27 @@ } }, "node_modules/p-cancelable": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", - "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-4.0.1.tgz", + "integrity": "sha512-wBowNApzd45EIKdO1LaU+LrMBwAcjfPaYtVzV3lmfM3gf8Z4CHZsiIqlM8TZZ8okYvh5A1cP6gTfCRQtwUpaUg==", "license": "MIT", "engines": { - "node": ">=12.20" + "node": ">=14.16" + } + }, + "node_modules/p-event": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/p-event/-/p-event-6.0.1.tgz", + "integrity": "sha512-Q6Bekk5wpzW5qIyUP4gdMEujObYstZl6DMMOSenwBvV0BlE5LkDwkjs5yHbZmdCEq2o4RJx4tE1vwxFVf2FG1w==", + "license": "MIT", + "dependencies": { + "p-timeout": "^6.1.2" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-limit": { @@ -13216,38 +14794,16 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/pac-proxy-agent": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.2.0.tgz", - "integrity": "sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA==", + "node_modules/p-timeout": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-6.1.4.tgz", + "integrity": "sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg==", "license": "MIT", - "optional": true, - "dependencies": { - "@tootallnate/quickjs-emscripten": "^0.23.0", - "agent-base": "^7.1.2", - "debug": "^4.3.4", - "get-uri": "^6.0.1", - "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.6", - "pac-resolver": "^7.0.1", - "socks-proxy-agent": "^8.0.5" - }, "engines": { - "node": ">= 14" - } - }, - "node_modules/pac-resolver": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz", - "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==", - "license": "MIT", - "optional": true, - "dependencies": { - "degenerator": "^5.0.0", - "netmask": "^2.0.2" + "node": ">=14.16" }, - "engines": { - "node": ">= 14" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/package-manager-detector": { @@ -13318,6 +14874,18 @@ "node": ">=4" } }, + "node_modules/parse-ms": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-4.0.0.tgz", + "integrity": "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/parse5": { "version": "7.3.0", "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", @@ -13331,19 +14899,41 @@ } }, "node_modules/parse5-htmlparser2-tree-adapter": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", - "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-8.0.1.tgz", + "integrity": "sha512-aqkH+xQxX+QGZtP5GIMmqqp16Y0v9muEf2VVeypv35kFsD5bqP1UeBanSshdfjMY+RTh2vN4mmK6nEOVRMEvHg==", "license": "MIT", "dependencies": { - "parse5": "^6.0.1" + "domhandler": "^6.0.1", + "parse5": "^8.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter/node_modules/entities": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-8.0.0.tgz", + "integrity": "sha512-zwfzJecQ/Uej6tusMqwAqU/6KL2XaB2VZ2Jg54Je6ahNBGNH6Ek6g3jjNCF0fG9EWQKGZNddNjU5F1ZQn/sBnA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=20.19.0" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" } }, "node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "license": "MIT" + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-8.0.1.tgz", + "integrity": "sha512-z1e/HMG90obSGeidlli3hj7cbocou0/wa5HacvI3ASx34PecNjNQeaHNo5WIZpWofN9kgkqV1q5YvXe3F0FoPw==", + "license": "MIT", + "dependencies": { + "entities": "^8.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } }, "node_modules/path-data-parser": { "version": "0.1.0", @@ -13428,9 +15018,9 @@ "license": "ISC" }, "node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "license": "MIT", "engines": { "node": ">=12" @@ -13554,12 +15144,12 @@ } }, "node_modules/playwright": { - "version": "1.58.2", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.58.2.tgz", - "integrity": "sha512-vA30H8Nvkq/cPBnNw4Q8TWz1EJyqgpuinBcHET0YVJVFldr8JDNiU9LaWAE1KqSkRYazuaBhTpB5ZzShOezQ6A==", + "version": "1.60.0", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.60.0.tgz", + "integrity": "sha512-hheHdokM8cdqCb0lcE3s+zT4t4W+vvjpGxsZlDnikarzx8tSzMebh3UiFtgqwFwnTnjYQcsyMF8ei2mCO/tpeA==", "license": "Apache-2.0", "dependencies": { - "playwright-core": "1.58.2" + "playwright-core": "1.60.0" }, "bin": { "playwright": "cli.js" @@ -13572,9 +15162,9 @@ } }, "node_modules/playwright-core": { - "version": "1.58.2", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.58.2.tgz", - "integrity": "sha512-yZkEtftgwS8CsfYo7nm0KE8jsvm6i/PTgVtB8DL726wNf6H2IMsDuxCpJj59KDaxCtSnrWan2AeDqM7JBaultg==", + "version": "1.60.0", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.60.0.tgz", + "integrity": "sha512-9bW6zvX/m0lEbgTKJ6YppOKx8H3VOPBMOCFh2irXFOT4BbHgrx5hPjwJYLT40Lu+4qtD36qKc/Hn56StUW57IA==", "license": "Apache-2.0", "bin": { "playwright-core": "cli.js" @@ -13618,9 +15208,9 @@ } }, "node_modules/postcss": { - "version": "8.5.6", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", - "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "version": "8.5.10", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.10.tgz", + "integrity": "sha512-pMMHxBOZKFU6HgAZ4eyGnwXF/EvPGGqUr0MnZ5+99485wwW41kW91A4LOGxSHhgugZmSChL5AlElNdwlNgcnLQ==", "funding": [ { "type": "opencollective", @@ -13645,6 +15235,51 @@ "node": "^10 || ^12 || >=14" } }, + "node_modules/postcss-safe-parser": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-7.0.1.tgz", + "integrity": "sha512-0AioNCJZ2DPYz5ABT6bddIqlhgwhpHZ/l65YAYo0BCIn0xiDpsnTHz0gnoTGk0OXZW0JRs+cDwL8u/teRdz+8A==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss-safe-parser" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "engines": { + "node": ">=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "license": "MIT" + }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -13655,9 +15290,9 @@ } }, "node_modules/prettier": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.1.tgz", - "integrity": "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==", + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.3.tgz", + "integrity": "sha512-7igPTM53cGHMW8xWuVTydi2KO233VFiTNyF5hLJqpilHfmn8C8gPf+PS7dUT64YcXFbiMGZxS9pCSxL/Dxm/Jw==", "license": "MIT", "bin": { "prettier": "bin/prettier.cjs" @@ -13721,6 +15356,21 @@ "license": "MIT", "peer": true }, + "node_modules/pretty-ms": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.3.0.tgz", + "integrity": "sha512-gjVS5hOP+M3wMm5nmNOucbIrqudzs9v/57bWRHQWLYklXqoXKrVfYW2W9+glfGsqtPgpiz5WwyEEB+ksXIx3gQ==", + "license": "MIT", + "dependencies": { + "parse-ms": "^4.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/prismjs": { "version": "1.30.0", "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.30.0.tgz", @@ -13779,54 +15429,19 @@ } }, "node_modules/protocol-buffers-schema": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/protocol-buffers-schema/-/protocol-buffers-schema-3.6.0.tgz", - "integrity": "sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw==", + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/protocol-buffers-schema/-/protocol-buffers-schema-3.6.1.tgz", + "integrity": "sha512-VG2K63Igkiv9p76tk1lilczEK1cT+kCjKtkdhw1dQZV3k3IXJbd3o6Ho8b9zJZaHSnT2hKe4I+ObmX9w6m5SmQ==", "license": "MIT" }, - "node_modules/proxy-agent": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.5.0.tgz", - "integrity": "sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A==", - "license": "MIT", - "optional": true, - "dependencies": { - "agent-base": "^7.1.2", - "debug": "^4.3.4", - "http-proxy-agent": "^7.0.1", - "https-proxy-agent": "^7.0.6", - "lru-cache": "^7.14.1", - "pac-proxy-agent": "^7.1.0", - "proxy-from-env": "^1.1.0", - "socks-proxy-agent": "^8.0.5" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/proxy-agent/node_modules/lru-cache": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "license": "ISC", - "optional": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/proxy-agent/node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "license": "MIT", - "optional": true - }, "node_modules/proxy-from-env": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-2.0.0.tgz", - "integrity": "sha512-h2lD3OfRraP3R51rNFKIE8nX+qoLr1mE74X91YhVxtDbt+OD6ntoNZv56+JgI4RCdtwQ5eexsOk1KdOQDfvPCQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-2.1.0.tgz", + "integrity": "sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==", "license": "MIT", - "optional": true + "engines": { + "node": ">=10" + } }, "node_modules/pseudolocale": { "version": "2.2.0", @@ -13853,9 +15468,9 @@ } }, "node_modules/pump": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz", - "integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.4.tgz", + "integrity": "sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==", "license": "MIT", "dependencies": { "end-of-stream": "^1.1.0", @@ -13871,6 +15486,24 @@ "node": ">=6" } }, + "node_modules/qified": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/qified/-/qified-0.10.1.tgz", + "integrity": "sha512-+Owyggi9IxT1ePKGafcI87ubSmxol6smwJ+RAHDQlx9+9cPwFWDiKFFCPuWhr9ignlGpZ9vDQLw67N4dcTVFEA==", + "license": "MIT", + "dependencies": { + "hookified": "^2.1.1" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/qified/node_modules/hookified": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/hookified/-/hookified-2.2.0.tgz", + "integrity": "sha512-p/LgFzRN5FeoD3DLS6bkUapeye6E4SI6yJs6KetENd18S+FBthqYq2amJUWpt5z0EQwwHemidjY5OqJGEKm5uA==", + "license": "MIT" + }, "node_modules/qrjs": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/qrjs/-/qrjs-0.2.0.tgz", @@ -14001,24 +15634,24 @@ } }, "node_modules/react": { - "version": "19.2.4", - "resolved": "https://registry.npmjs.org/react/-/react-19.2.4.tgz", - "integrity": "sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==", + "version": "19.2.6", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.6.tgz", + "integrity": "sha512-sfWGGfavi0xr8Pg0sVsyHMAOziVYKgPLNrS7ig+ivMNb3wbCBw3KxtflsGBAwD3gYQlE/AEZsTLgToRrSCjb0Q==", "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/react-dom": { - "version": "19.2.4", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.4.tgz", - "integrity": "sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ==", + "version": "19.2.6", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.6.tgz", + "integrity": "sha512-0prMI+hvBbPjsWnxDLxlCGyM8PN6UuWjEUCYmZhO67xIV9Xasa/r/vDnq+Xyq4Lo27g8QSbO5YzARu0D1Sps3g==", "license": "MIT", "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { - "react": "^19.2.4" + "react": "^19.2.6" } }, "node_modules/react-is": { @@ -14054,9 +15687,9 @@ } }, "node_modules/readdirp/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", "license": "MIT", "engines": { "node": ">=8.6" @@ -14470,6 +16103,15 @@ "node": ">=0.10.0" } }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/resolve": { "version": "1.22.11", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", @@ -14505,6 +16147,15 @@ "node": ">=4" } }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "license": "MIT", + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, "node_modules/resolve-protobuf-schema": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/resolve-protobuf-schema/-/resolve-protobuf-schema-2.1.0.tgz", @@ -14515,15 +16166,15 @@ } }, "node_modules/responselike": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz", - "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-4.0.2.tgz", + "integrity": "sha512-cGk8IbWEAnaCpdAt1BHzJ3Ahz5ewDJa0KseTsE3qIRMJ3C698W8psM7byCeWVpd/Ha7FUYzuRVzXoKoM6nRUbA==", "license": "MIT", "dependencies": { "lowercase-keys": "^3.0.0" }, "engines": { - "node": ">=14.16" + "node": ">=20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -14564,15 +16215,57 @@ "license": "MIT" }, "node_modules/robust-predicates": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", - "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.3.tgz", + "integrity": "sha512-NS3levdsRIUOmiJ8FZWCP7LG3QpJyrs/TE0Zpf1yvZu8cAJJ6QMW92H1c7kWpdIHo8RvmLxN/o2JXTKHp74lUA==", "license": "Unlicense" }, + "node_modules/rolldown": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.0.0.tgz", + "integrity": "sha512-yD986aXDESFGS95spT1LAv0jssywP4npMEjmMHyN2/5+eE8qQJUype2AaKkRiLgBgyD0LFlubwAht7VmY8rGoA==", + "license": "MIT", + "dependencies": { + "@oxc-project/types": "=0.129.0", + "@rolldown/pluginutils": "1.0.0" + }, + "bin": { + "rolldown": "bin/cli.mjs" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "optionalDependencies": { + "@rolldown/binding-android-arm64": "1.0.0", + "@rolldown/binding-darwin-arm64": "1.0.0", + "@rolldown/binding-darwin-x64": "1.0.0", + "@rolldown/binding-freebsd-x64": "1.0.0", + "@rolldown/binding-linux-arm-gnueabihf": "1.0.0", + "@rolldown/binding-linux-arm64-gnu": "1.0.0", + "@rolldown/binding-linux-arm64-musl": "1.0.0", + "@rolldown/binding-linux-ppc64-gnu": "1.0.0", + "@rolldown/binding-linux-s390x-gnu": "1.0.0", + "@rolldown/binding-linux-x64-gnu": "1.0.0", + "@rolldown/binding-linux-x64-musl": "1.0.0", + "@rolldown/binding-openharmony-arm64": "1.0.0", + "@rolldown/binding-wasm32-wasi": "1.0.0", + "@rolldown/binding-win32-arm64-msvc": "1.0.0", + "@rolldown/binding-win32-x64-msvc": "1.0.0" + } + }, + "node_modules/rolldown/node_modules/@oxc-project/types": { + "version": "0.129.0", + "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.129.0.tgz", + "integrity": "sha512-3oz8m3FGdr2nDXVqmFUw7jolKliC4MoyXYIG2c7gpjBnzUWQpUGIYcXYKxTdTi+N2jusvt610ckTMkxdwHkYEg==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/Boshen" + } + }, "node_modules/rollup": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.59.0.tgz", - "integrity": "sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==", + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.60.0.tgz", + "integrity": "sha512-yqjxruMGBQJ2gG4HtjZtAfXArHomazDHoFwFFmZZl0r7Pdo7qCIXKqKHZc8yeoMgzJJ+pO6pEEHa+V7uzWlrAQ==", "license": "MIT", "dependencies": { "@types/estree": "1.0.8" @@ -14585,31 +16278,31 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.59.0", - "@rollup/rollup-android-arm64": "4.59.0", - "@rollup/rollup-darwin-arm64": "4.59.0", - "@rollup/rollup-darwin-x64": "4.59.0", - "@rollup/rollup-freebsd-arm64": "4.59.0", - "@rollup/rollup-freebsd-x64": "4.59.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.59.0", - "@rollup/rollup-linux-arm-musleabihf": "4.59.0", - "@rollup/rollup-linux-arm64-gnu": "4.59.0", - "@rollup/rollup-linux-arm64-musl": "4.59.0", - "@rollup/rollup-linux-loong64-gnu": "4.59.0", - "@rollup/rollup-linux-loong64-musl": "4.59.0", - "@rollup/rollup-linux-ppc64-gnu": "4.59.0", - "@rollup/rollup-linux-ppc64-musl": "4.59.0", - "@rollup/rollup-linux-riscv64-gnu": "4.59.0", - "@rollup/rollup-linux-riscv64-musl": "4.59.0", - "@rollup/rollup-linux-s390x-gnu": "4.59.0", - "@rollup/rollup-linux-x64-gnu": "4.59.0", - "@rollup/rollup-linux-x64-musl": "4.59.0", - "@rollup/rollup-openbsd-x64": "4.59.0", - "@rollup/rollup-openharmony-arm64": "4.59.0", - "@rollup/rollup-win32-arm64-msvc": "4.59.0", - "@rollup/rollup-win32-ia32-msvc": "4.59.0", - "@rollup/rollup-win32-x64-gnu": "4.59.0", - "@rollup/rollup-win32-x64-msvc": "4.59.0", + "@rollup/rollup-android-arm-eabi": "4.60.0", + "@rollup/rollup-android-arm64": "4.60.0", + "@rollup/rollup-darwin-arm64": "4.60.0", + "@rollup/rollup-darwin-x64": "4.60.0", + "@rollup/rollup-freebsd-arm64": "4.60.0", + "@rollup/rollup-freebsd-x64": "4.60.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.60.0", + "@rollup/rollup-linux-arm-musleabihf": "4.60.0", + "@rollup/rollup-linux-arm64-gnu": "4.60.0", + "@rollup/rollup-linux-arm64-musl": "4.60.0", + "@rollup/rollup-linux-loong64-gnu": "4.60.0", + "@rollup/rollup-linux-loong64-musl": "4.60.0", + "@rollup/rollup-linux-ppc64-gnu": "4.60.0", + "@rollup/rollup-linux-ppc64-musl": "4.60.0", + "@rollup/rollup-linux-riscv64-gnu": "4.60.0", + "@rollup/rollup-linux-riscv64-musl": "4.60.0", + "@rollup/rollup-linux-s390x-gnu": "4.60.0", + "@rollup/rollup-linux-x64-gnu": "4.60.0", + "@rollup/rollup-linux-x64-musl": "4.60.0", + "@rollup/rollup-openbsd-x64": "4.60.0", + "@rollup/rollup-openharmony-arm64": "4.60.0", + "@rollup/rollup-win32-arm64-msvc": "4.60.0", + "@rollup/rollup-win32-ia32-msvc": "4.60.0", + "@rollup/rollup-win32-x64-gnu": "4.60.0", + "@rollup/rollup-win32-x64-msvc": "4.60.0", "fsevents": "~2.3.2" } }, @@ -14685,26 +16378,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, "node_modules/safe-push-apply": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", @@ -14804,15 +16477,12 @@ "license": "MIT" }, "node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "license": "ISC", "bin": { "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" } }, "node_modules/semver-regex": { @@ -14842,6 +16512,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/semver-truncate/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/set-function-length": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", @@ -15041,15 +16723,21 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/smart-buffer": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", - "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "license": "MIT", - "optional": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, "engines": { - "node": ">= 6.0.0", - "npm": ">= 3.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, "node_modules/smob": { @@ -15062,9 +16750,9 @@ } }, "node_modules/smol-toml": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.6.0.tgz", - "integrity": "sha512-4zemZi0HvTnYwLfrpk/CF9LOd9Lt87kAt50GnqhMpyF9U3poDAP2+iukq2bZsO/ufegbYehBkqINbsWxj4l4cw==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.6.1.tgz", + "integrity": "sha512-dWUG8F5sIIARXih1DTaQAX4SsiTXhInKf1buxdY9DIg4ZYPZK5nGM1VRIYmEbDbsHt7USo99xSLFu5Q1IqTmsg==", "license": "BSD-3-Clause", "engines": { "node": ">= 18" @@ -15073,36 +16761,6 @@ "url": "https://github.com/sponsors/cyyynthia" } }, - "node_modules/socks": { - "version": "2.8.7", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.7.tgz", - "integrity": "sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==", - "license": "MIT", - "optional": true, - "dependencies": { - "ip-address": "^10.0.1", - "smart-buffer": "^4.2.0" - }, - "engines": { - "node": ">= 10.0.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/socks-proxy-agent": { - "version": "8.0.5", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz", - "integrity": "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==", - "license": "MIT", - "optional": true, - "dependencies": { - "agent-base": "^7.1.2", - "debug": "^4.3.4", - "socks": "^2.8.3" - }, - "engines": { - "node": ">= 14" - } - }, "node_modules/sonic-boom": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-4.2.1.tgz", @@ -15180,9 +16838,9 @@ "license": "MIT" }, "node_modules/sort-package-json": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/sort-package-json/-/sort-package-json-3.6.0.tgz", - "integrity": "sha512-fyJsPLhWvY7u2KsKPZn1PixbXp+1m7V8NWqU8CvgFRbMEX41Ffw1kD8n0CfJiGoaSfoAvbrqRRl/DcHO8omQOQ==", + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/sort-package-json/-/sort-package-json-3.6.1.tgz", + "integrity": "sha512-Chgejw1+10p2D0U2tB7au1lHtz6TkFnxmvZktyBCRyV0GgmF6nl1IxXxAsPtJVsUyg/fo+BfCMAVVFUVRkAHrQ==", "license": "MIT", "dependencies": { "detect-indent": "^7.0.2", @@ -15200,6 +16858,18 @@ "node": ">=20" } }, + "node_modules/sort-package-json/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/source-map": { "version": "0.7.6", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", @@ -15295,9 +16965,9 @@ "license": "MIT" }, "node_modules/std-env": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-4.0.0.tgz", - "integrity": "sha512-zUMPtQ/HBY3/50VbpkupYHbRroTRZJPRLvreamgErJVys0ceuzMkD44J/QjqhHjOzK42GQ3QZIeFG1OYfOtKqQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-4.1.0.tgz", + "integrity": "sha512-Rq7ybcX2RuC55r9oaPVEW7/xu3tj8u4GeBYHBWCychFtzMIr86A7e3PPEBPT37sHStKX3+TiX/Fr/ACmJLVlLQ==", "license": "MIT" }, "node_modules/stop-iteration-iterator": { @@ -15314,9 +16984,9 @@ } }, "node_modules/storybook": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/storybook/-/storybook-10.3.0.tgz", - "integrity": "sha512-OpLdng98l7cACuqBoQwewx21Vhgl9XPssgLdXQudW0+N5QPjinWXZpZCquZpXpNCyw5s5BFAcv+jKB3Qkf9jeA==", + "version": "10.3.6", + "resolved": "https://registry.npmjs.org/storybook/-/storybook-10.3.6.tgz", + "integrity": "sha512-vbSz7g/1rGMC1uAULqMZjALkIuLu2QABqfhRYhyr/11kzyesi+vAmwyJLukZP1FfecxGOgMwOh6GS0YsGpHAvQ==", "license": "MIT", "dependencies": { "@storybook/global": "^5.0.0", @@ -15325,6 +16995,7 @@ "@testing-library/user-event": "^14.6.1", "@vitest/expect": "3.2.4", "@vitest/spy": "3.2.4", + "@webcontainer/env": "^1.1.1", "esbuild": "^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0 || ^0.25.0 || ^0.26.0 || ^0.27.0", "open": "^10.2.0", "recast": "^0.23.5", @@ -15340,14 +17011,434 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "prettier": "^2 || ^3" + "prettier": "^2 || ^3", + "vite-plus": "^0.1.15" }, "peerDependenciesMeta": { "prettier": { "optional": true + }, + "vite-plus": { + "optional": true } } }, + "node_modules/storybook/node_modules/@esbuild/aix-ppc64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.7.tgz", + "integrity": "sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/storybook/node_modules/@esbuild/android-arm": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.7.tgz", + "integrity": "sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/storybook/node_modules/@esbuild/android-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.7.tgz", + "integrity": "sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/storybook/node_modules/@esbuild/android-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.7.tgz", + "integrity": "sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/storybook/node_modules/@esbuild/darwin-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.7.tgz", + "integrity": "sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/storybook/node_modules/@esbuild/darwin-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.7.tgz", + "integrity": "sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/storybook/node_modules/@esbuild/freebsd-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.7.tgz", + "integrity": "sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/storybook/node_modules/@esbuild/freebsd-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.7.tgz", + "integrity": "sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/storybook/node_modules/@esbuild/linux-arm": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.7.tgz", + "integrity": "sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/storybook/node_modules/@esbuild/linux-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.7.tgz", + "integrity": "sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/storybook/node_modules/@esbuild/linux-ia32": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.7.tgz", + "integrity": "sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/storybook/node_modules/@esbuild/linux-loong64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.7.tgz", + "integrity": "sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/storybook/node_modules/@esbuild/linux-mips64el": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.7.tgz", + "integrity": "sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==", + "cpu": [ + "mips64el" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/storybook/node_modules/@esbuild/linux-ppc64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.7.tgz", + "integrity": "sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/storybook/node_modules/@esbuild/linux-riscv64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.7.tgz", + "integrity": "sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/storybook/node_modules/@esbuild/linux-s390x": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.7.tgz", + "integrity": "sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/storybook/node_modules/@esbuild/linux-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.7.tgz", + "integrity": "sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/storybook/node_modules/@esbuild/netbsd-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.7.tgz", + "integrity": "sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/storybook/node_modules/@esbuild/netbsd-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.7.tgz", + "integrity": "sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/storybook/node_modules/@esbuild/openbsd-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.7.tgz", + "integrity": "sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/storybook/node_modules/@esbuild/openbsd-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.7.tgz", + "integrity": "sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/storybook/node_modules/@esbuild/openharmony-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.7.tgz", + "integrity": "sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/storybook/node_modules/@esbuild/sunos-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.7.tgz", + "integrity": "sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/storybook/node_modules/@esbuild/win32-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.7.tgz", + "integrity": "sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/storybook/node_modules/@esbuild/win32-ia32": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.7.tgz", + "integrity": "sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/storybook/node_modules/@esbuild/win32-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.7.tgz", + "integrity": "sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, "node_modules/storybook/node_modules/@vitest/spy": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.2.4.tgz", @@ -15360,6 +17451,59 @@ "url": "https://opencollective.com/vitest" } }, + "node_modules/storybook/node_modules/esbuild": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.7.tgz", + "integrity": "sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.27.7", + "@esbuild/android-arm": "0.27.7", + "@esbuild/android-arm64": "0.27.7", + "@esbuild/android-x64": "0.27.7", + "@esbuild/darwin-arm64": "0.27.7", + "@esbuild/darwin-x64": "0.27.7", + "@esbuild/freebsd-arm64": "0.27.7", + "@esbuild/freebsd-x64": "0.27.7", + "@esbuild/linux-arm": "0.27.7", + "@esbuild/linux-arm64": "0.27.7", + "@esbuild/linux-ia32": "0.27.7", + "@esbuild/linux-loong64": "0.27.7", + "@esbuild/linux-mips64el": "0.27.7", + "@esbuild/linux-ppc64": "0.27.7", + "@esbuild/linux-riscv64": "0.27.7", + "@esbuild/linux-s390x": "0.27.7", + "@esbuild/linux-x64": "0.27.7", + "@esbuild/netbsd-arm64": "0.27.7", + "@esbuild/netbsd-x64": "0.27.7", + "@esbuild/openbsd-arm64": "0.27.7", + "@esbuild/openbsd-x64": "0.27.7", + "@esbuild/openharmony-arm64": "0.27.7", + "@esbuild/sunos-x64": "0.27.7", + "@esbuild/win32-arm64": "0.27.7", + "@esbuild/win32-ia32": "0.27.7", + "@esbuild/win32-x64": "0.27.7" + } + }, + "node_modules/storybook/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/streamroller": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.5.tgz", @@ -15407,9 +17551,9 @@ } }, "node_modules/streamx": { - "version": "2.23.0", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.23.0.tgz", - "integrity": "sha512-kn+e44esVfn2Fa/O0CPFcex27fjIL6MkVae0Mm6q+E6f0hWv578YCERbv+4m02cjxvDsPKLnmxral/rR6lBMAg==", + "version": "2.25.0", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.25.0.tgz", + "integrity": "sha512-0nQuG6jf1w+wddNEEXCF4nTg3LtufWINB5eFEN+5TNZW7KWJp6x87+JFL43vaAUPyCfH1wID+mNVyW6OHtFamg==", "license": "MIT", "dependencies": { "events-universal": "^1.0.0", @@ -15597,12 +17741,15 @@ } }, "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz", + "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==", "license": "MIT", "engines": { - "node": ">=6" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/strip-indent": { @@ -15630,9 +17777,9 @@ } }, "node_modules/strtok3": { - "version": "10.3.4", - "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-10.3.4.tgz", - "integrity": "sha512-KIy5nylvC5le1OdaaoCJ07L+8iQzJHGH6pWDuzS+d07Cu7n1MZ2x26P8ZKIWfbK02+XIL8Mp4RkWeqdUCrDMfg==", + "version": "10.3.5", + "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-10.3.5.tgz", + "integrity": "sha512-ki4hZQfh5rX0QDLLkOCj+h+CVNkqmp/CMf8v8kZpkNVK6jGQooMytqzLZYUVYIZcFZ6yDB70EfD8POcFXiF5oA==", "license": "MIT", "dependencies": { "@tokenizer/token": "^0.3.0" @@ -15669,12 +17816,189 @@ "inline-style-parser": "0.2.7" } }, + "node_modules/stylelint": { + "version": "17.11.0", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-17.11.0.tgz", + "integrity": "sha512-/3czzmbF9XdGWvReDF3Ex4R23Ajolo7j8RB2bFNEqk6Ht356nlpVV+G5bG2Qt8AW1ofJzXztBRDnAtd7cgowWA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/stylelint" + }, + { + "type": "github", + "url": "https://github.com/sponsors/stylelint" + } + ], + "license": "MIT", + "dependencies": { + "@csstools/css-calc": "^3.2.0", + "@csstools/css-parser-algorithms": "^4.0.0", + "@csstools/css-syntax-patches-for-csstree": "^1.1.3", + "@csstools/css-tokenizer": "^4.0.0", + "@csstools/media-query-list-parser": "^5.0.0", + "@csstools/selector-resolve-nested": "^4.0.0", + "@csstools/selector-specificity": "^6.0.0", + "colord": "^2.9.3", + "cosmiconfig": "^9.0.1", + "css-functions-list": "^3.3.3", + "css-tree": "^3.2.1", + "debug": "^4.4.3", + "fast-glob": "^3.3.3", + "fastest-levenshtein": "^1.0.16", + "file-entry-cache": "^11.1.2", + "global-modules": "^2.0.0", + "globby": "^16.2.0", + "globjoin": "^0.1.4", + "html-tags": "^5.1.0", + "ignore": "^7.0.5", + "import-meta-resolve": "^4.2.0", + "is-plain-object": "^5.0.0", + "mathml-tag-names": "^4.0.0", + "meow": "^14.1.0", + "micromatch": "^4.0.8", + "normalize-path": "^3.0.0", + "picocolors": "^1.1.1", + "postcss": "^8.5.13", + "postcss-safe-parser": "^7.0.1", + "postcss-selector-parser": "^7.1.1", + "postcss-value-parser": "^4.2.0", + "string-width": "^8.2.1", + "supports-hyperlinks": "^4.4.0", + "svg-tags": "^1.0.0", + "table": "^6.9.0", + "write-file-atomic": "^7.0.1" + }, + "bin": { + "stylelint": "bin/stylelint.mjs" + }, + "engines": { + "node": ">=20.19.0" + } + }, + "node_modules/stylelint/node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/stylelint/node_modules/file-entry-cache": { + "version": "11.1.3", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-11.1.3.tgz", + "integrity": "sha512-oMbq0PD6VIiIwMF6LIa7MEwd/l9huKwmqRKXqmrkqIZv8CvRbfowL+L0ryAl8h//HfAS0zS+4SbYoRyAoA6BJA==", + "license": "MIT", + "dependencies": { + "flat-cache": "^6.1.22" + } + }, + "node_modules/stylelint/node_modules/flat-cache": { + "version": "6.1.22", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-6.1.22.tgz", + "integrity": "sha512-N2dnzVJIphnNsjHcrxGW7DePckJ6haPrSFqpsBUhHYgwtKGVq4JrBGielEGD2fCVnsGm1zlBVZ8wGhkyuetgug==", + "license": "MIT", + "dependencies": { + "cacheable": "^2.3.4", + "flatted": "^3.4.2", + "hookified": "^1.15.0" + } + }, + "node_modules/stylelint/node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/stylelint/node_modules/postcss": { + "version": "8.5.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.14.tgz", + "integrity": "sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/stylelint/node_modules/string-width": { + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.2.1.tgz", + "integrity": "sha512-IIaP0g3iy9Cyy18w3M9YcaDudujEAVHKt3a3QJg1+sr/oX96TbaGUubG0hJyCjCBThFH+tFpcIyoUHUn1ogaLA==", + "license": "MIT", + "dependencies": { + "get-east-asian-width": "^1.5.0", + "strip-ansi": "^7.1.2" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stylelint/node_modules/strip-ansi": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.2.2" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, "node_modules/stylis": { "version": "4.3.6", "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.6.tgz", "integrity": "sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==", "license": "MIT" }, + "node_modules/super-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/super-regex/-/super-regex-1.1.0.tgz", + "integrity": "sha512-WHkws2ZflZe41zj6AolvvmaTrWds/VuyeYr9iPVv/oQeaIoVxMKaushfFWpOGDT+GuBrM/sVqF8KUCYQlSSTdQ==", + "license": "MIT", + "dependencies": { + "function-timeout": "^1.0.1", + "make-asynchronous": "^1.0.1", + "time-span": "^5.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -15687,6 +18011,46 @@ "node": ">=8" } }, + "node_modules/supports-hyperlinks": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-4.4.0.tgz", + "integrity": "sha512-UKbpT93hN5Nr9go5UY7bopIB9YQlMz9nm/ct4IXt/irb5YRkn9WaqrOBJGZ5Pwvsd5FQzSVeYlGdXoCAPQZrPg==", + "license": "MIT", + "dependencies": { + "has-flag": "^5.0.1", + "supports-color": "^10.2.2" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/chalk/supports-hyperlinks?sponsor=1" + } + }, + "node_modules/supports-hyperlinks/node_modules/has-flag": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-5.0.1.tgz", + "integrity": "sha512-CsNUt5x9LUdx6hnk/E2SZLsDyvfqANZSUq4+D3D8RzDJ2M+HDTIkF60ibS1vHaK55vzgiZw1bEPFG9yH7l33wA==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-hyperlinks/node_modules/supports-color": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-10.2.2.tgz", + "integrity": "sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", @@ -15699,19 +18063,25 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/svg-tags": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", + "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==" + }, "node_modules/swagger-client": { - "version": "3.36.2", - "resolved": "https://registry.npmjs.org/swagger-client/-/swagger-client-3.36.2.tgz", - "integrity": "sha512-M+m0TpZTWtVMvd0Qiq5W2ABLmY6w8PnnqnMIKgT/nYS/w6hZ4s1sBCCS/w4SOjmAyy0QT/kl3tNh2jPWIkaI3A==", + "version": "3.37.1", + "resolved": "https://registry.npmjs.org/swagger-client/-/swagger-client-3.37.1.tgz", + "integrity": "sha512-WCRU7wfyqTyB0vOpVK1vHFm4aCqnmqcXycDcWVmHa784Nd4cABaQeSITtjWMOnjJoIkTqG8TLArYn4SAv+wj2w==", "license": "Apache-2.0", "dependencies": { "@babel/runtime-corejs3": "^7.22.15", "@scarf/scarf": "=1.4.0", - "@swagger-api/apidom-core": "^1.5.1", - "@swagger-api/apidom-error": "^1.5.1", - "@swagger-api/apidom-json-pointer": "^1.5.1", - "@swagger-api/apidom-ns-openapi-3-1": "^1.5.1", - "@swagger-api/apidom-reference": "^1.5.1", + "@swagger-api/apidom-core": "^1.7.0", + "@swagger-api/apidom-error": "^1.7.0", + "@swagger-api/apidom-json-pointer": "^1.7.0", + "@swagger-api/apidom-ns-openapi-3-1": "^1.7.0", + "@swagger-api/apidom-ns-openapi-3-2": "^1.7.0", + "@swagger-api/apidom-reference": "^1.7.0", "@swaggerexpert/cookie": "^2.0.2", "deepmerge": "~4.3.0", "fast-json-patch": "^3.0.0-1", @@ -15725,6 +18095,44 @@ "ramda-adjunct": "^5.1.0" } }, + "node_modules/table": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/table/-/table-6.9.0.tgz", + "integrity": "sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==", + "license": "BSD-3-Clause", + "dependencies": { + "ajv": "^8.0.1", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/table/node_modules/ajv": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz", + "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/table/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" + }, "node_modules/tagged-tag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/tagged-tag/-/tagged-tag-1.0.0.tgz", @@ -15748,42 +18156,6 @@ "streamx": "^2.15.0" } }, - "node_modules/tcp-port-used": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/tcp-port-used/-/tcp-port-used-1.0.2.tgz", - "integrity": "sha512-l7ar8lLUD3XS1V2lfoJlCBaeoaWo/2xfYt81hM7VlvR4RrMVFqfmzfhLVk40hAb368uitje5gPtBRL1m/DGvLA==", - "license": "MIT", - "optional": true, - "dependencies": { - "debug": "4.3.1", - "is2": "^2.0.6" - } - }, - "node_modules/tcp-port-used/node_modules/debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "license": "MIT", - "optional": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/tcp-port-used/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "license": "MIT", - "optional": true - }, "node_modules/text-decoder": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.7.tgz", @@ -15811,6 +18183,21 @@ "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", "license": "MIT" }, + "node_modules/time-span": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/time-span/-/time-span-5.1.0.tgz", + "integrity": "sha512-75voc/9G4rDIJleOo4jPvN4/YC4GRZrY8yy1uU4lwrB3XEQbWve8zXoO5No4eFrGcTAMYyoY67p8jRQdtA1HbA==", + "license": "MIT", + "dependencies": { + "convert-hrtime": "^5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/tiny-invariant": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", @@ -15824,9 +18211,9 @@ "license": "MIT" }, "node_modules/tinyexec": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.2.tgz", - "integrity": "sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.4.tgz", + "integrity": "sha512-u9r3uZC0bdpGOXtlxUIdwf9pkmvhqJdrVCH9fapQtgy/OeTTMZ1nqH7agtvEfmGui6e1XxjcdrlxvxJvc3sMqw==", "license": "MIT", "engines": { "node": ">=18" @@ -15849,9 +18236,9 @@ } }, "node_modules/tinyrainbow": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-3.0.3.tgz", - "integrity": "sha512-PSkbLUoxOFRzJYjjxHJt9xro7D+iilgMX/C9lawzVuYiIdcihh9DXmVibBe8lmcFrRi/VzlPjBxbN7rH24q8/Q==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-3.1.0.tgz", + "integrity": "sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==", "license": "MIT", "engines": { "node": ">=14.0.0" @@ -15979,9 +18366,9 @@ "license": "W3C-20150513" }, "node_modules/ts-api-utils": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.4.0.tgz", - "integrity": "sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.5.0.tgz", + "integrity": "sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==", "license": "MIT", "engines": { "node": ">=18.12" @@ -16072,9 +18459,9 @@ } }, "node_modules/type-fest": { - "version": "5.4.4", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-5.4.4.tgz", - "integrity": "sha512-JnTrzGu+zPV3aXIUhnyWJj4z/wigMsdYajGLIYakqyOW1nPllzXEJee0QQbHj+CTIQtXGlAjuK0UY+2xTyjVAw==", + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-5.6.0.tgz", + "integrity": "sha512-8ZiHFm91orbSAe2PSAiSVBVko18pbhbiB3U9GglSzF/zCGkR+rxpHx6sEMCUm4kxY4LjDIUGgCfUMtwfZfjfUA==", "license": "(MIT OR CC0-1.0)", "dependencies": { "tagged-tag": "^1.0.0" @@ -16170,9 +18557,9 @@ } }, "node_modules/typescript": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", - "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz", + "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", @@ -16183,15 +18570,15 @@ } }, "node_modules/typescript-eslint": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.56.1.tgz", - "integrity": "sha512-U4lM6pjmBX7J5wk4szltF7I1cGBHXZopnAXCMXb3+fZ3B/0Z3hq3wS/CCUB2NZBNAExK92mCU2tEohWuwVMsDQ==", + "version": "8.59.3", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.59.3.tgz", + "integrity": "sha512-KgusgyDgG4LI8Ih/sWaCtZ06tckLAS5CvT5A4D1Q7bYVoAAyzwiZvE4BmwDHkhRVkvhRBepKeASoFzQetha7Fg==", "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.56.1", - "@typescript-eslint/parser": "8.56.1", - "@typescript-eslint/typescript-estree": "8.56.1", - "@typescript-eslint/utils": "8.56.1" + "@typescript-eslint/eslint-plugin": "8.59.3", + "@typescript-eslint/parser": "8.59.3", + "@typescript-eslint/typescript-estree": "8.59.3", + "@typescript-eslint/utils": "8.59.3" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -16202,7 +18589,7 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/ufo": { @@ -16224,9 +18611,9 @@ } }, "node_modules/unbash": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/unbash/-/unbash-2.2.0.tgz", - "integrity": "sha512-X2wH19RAPZE3+ldGicOkoj/SIA83OIxcJ6Cuaw23hf8Xc6fQpvZXY0SftE2JgS0QhYLUG4uwodSI3R53keyh7w==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unbash/-/unbash-3.0.0.tgz", + "integrity": "sha512-FeFPZ/WFT0mbRCuydiZzpPFlrYN8ZUpphQKoq4EeElVIYjYyGzPMxQR/simUwCOJIyVhpFk4RbtyO7RuMpMnHA==", "license": "ISC", "engines": { "node": ">=14" @@ -16285,9 +18672,9 @@ } }, "node_modules/undici-types": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", - "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.21.0.tgz", + "integrity": "sha512-w9IMgQrz4O0YN1LtB7K5P63vhlIOvC7opSmouCJ+ZywlPAlO9gIkJ+otk6LvGpAs2wg4econaCz3TvQ9xPoyuQ==", "license": "MIT" }, "node_modules/unicorn-magic": { @@ -16526,6 +18913,12 @@ "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, "node_modules/utility-types": { "version": "3.11.0", "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.11.0.tgz", @@ -16536,16 +18929,16 @@ } }, "node_modules/uuid": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz", - "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-14.0.0.tgz", + "integrity": "sha512-Qo+uWgilfSmAhXCMav1uYFynlQO7fMFiMVZsQqZRMIXp0O7rR7qjkj+cPvBHLgBqi960QCoo/PH2/6ZtVqKvrg==", "funding": [ "https://github.com/sponsors/broofa", "https://github.com/sponsors/ctavan" ], "license": "MIT", "bin": { - "uuid": "dist/esm/bin/uuid" + "uuid": "dist-node/bin/uuid" } }, "node_modules/validate-npm-package-license": { @@ -16610,17 +19003,16 @@ } }, "node_modules/vite": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.1.tgz", - "integrity": "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==", + "version": "8.0.12", + "resolved": "https://registry.npmjs.org/vite/-/vite-8.0.12.tgz", + "integrity": "sha512-w2dDofOWv2QB09ZITZBsvKTVAlYvPR4IAmrY/v0ir9KvLs0xybR7i48wxhM1/oyBWO34wPns+bPGw5ZrZqDpZg==", "license": "MIT", "dependencies": { - "esbuild": "^0.27.0", - "fdir": "^6.5.0", - "picomatch": "^4.0.3", - "postcss": "^8.5.6", - "rollup": "^4.43.0", - "tinyglobby": "^0.2.15" + "lightningcss": "^1.32.0", + "picomatch": "^4.0.4", + "postcss": "^8.5.14", + "rolldown": "1.0.0", + "tinyglobby": "^0.2.16" }, "bin": { "vite": "bin/vite.js" @@ -16636,9 +19028,10 @@ }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", + "@vitejs/devtools": "^0.1.18", + "esbuild": "^0.27.0 || ^0.28.0", "jiti": ">=1.21.0", "less": "^4.0.0", - "lightningcss": "^1.21.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", @@ -16651,15 +19044,18 @@ "@types/node": { "optional": true }, + "@vitejs/devtools": { + "optional": true + }, + "esbuild": { + "optional": true + }, "jiti": { "optional": true }, "less": { "optional": true }, - "lightningcss": { - "optional": true - }, "sass": { "optional": true }, @@ -16697,19 +19093,63 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/vitest": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.1.0.tgz", - "integrity": "sha512-YbDrMF9jM2Lqc++2530UourxZHmkKLxrs4+mYhEwqWS97WJ7wOYEkcr+QfRgJ3PW9wz3odRijLZjHEaRLTNbqw==", + "node_modules/vite/node_modules/postcss": { + "version": "8.5.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.14.tgz", + "integrity": "sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "license": "MIT", "dependencies": { - "@vitest/expect": "4.1.0", - "@vitest/mocker": "4.1.0", - "@vitest/pretty-format": "4.1.0", - "@vitest/runner": "4.1.0", - "@vitest/snapshot": "4.1.0", - "@vitest/spy": "4.1.0", - "@vitest/utils": "4.1.0", + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/vite/node_modules/tinyglobby": { + "version": "0.2.16", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.16.tgz", + "integrity": "sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==", + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/vitest": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.1.6.tgz", + "integrity": "sha512-6lvjbS3p9b4CrdCmguzbh2/4uoXhGE2q71R4OX5sqF9R1bo9Xd6fGrMAfvp5wnCzlBnFVdCOp6onuTQVbo8iUQ==", + "license": "MIT", + "dependencies": { + "@vitest/expect": "4.1.6", + "@vitest/mocker": "4.1.6", + "@vitest/pretty-format": "4.1.6", + "@vitest/runner": "4.1.6", + "@vitest/snapshot": "4.1.6", + "@vitest/spy": "4.1.6", + "@vitest/utils": "4.1.6", "es-module-lexer": "^2.0.0", "expect-type": "^1.3.0", "magic-string": "^0.30.21", @@ -16720,8 +19160,8 @@ "tinybench": "^2.9.0", "tinyexec": "^1.0.2", "tinyglobby": "^0.2.15", - "tinyrainbow": "^3.0.3", - "vite": "^6.0.0 || ^7.0.0 || ^8.0.0-0", + "tinyrainbow": "^3.1.0", + "vite": "^6.0.0 || ^7.0.0 || ^8.0.0", "why-is-node-running": "^2.3.0" }, "bin": { @@ -16737,13 +19177,15 @@ "@edge-runtime/vm": "*", "@opentelemetry/api": "^1.9.0", "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", - "@vitest/browser-playwright": "4.1.0", - "@vitest/browser-preview": "4.1.0", - "@vitest/browser-webdriverio": "4.1.0", - "@vitest/ui": "4.1.0", + "@vitest/browser-playwright": "4.1.6", + "@vitest/browser-preview": "4.1.6", + "@vitest/browser-webdriverio": "4.1.6", + "@vitest/coverage-istanbul": "4.1.6", + "@vitest/coverage-v8": "4.1.6", + "@vitest/ui": "4.1.6", "happy-dom": "*", "jsdom": "*", - "vite": "^6.0.0 || ^7.0.0 || ^8.0.0-0" + "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "peerDependenciesMeta": { "@edge-runtime/vm": { @@ -16764,6 +19206,12 @@ "@vitest/browser-webdriverio": { "optional": true }, + "@vitest/coverage-istanbul": { + "optional": true + }, + "@vitest/coverage-v8": { + "optional": true + }, "@vitest/ui": { "optional": true }, @@ -16779,17 +19227,17 @@ } }, "node_modules/vitest/node_modules/@vitest/expect": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.1.0.tgz", - "integrity": "sha512-EIxG7k4wlWweuCLG9Y5InKFwpMEOyrMb6ZJ1ihYu02LVj/bzUwn2VMU+13PinsjRW75XnITeFrQBMH5+dLvCDA==", + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.1.6.tgz", + "integrity": "sha512-7EHDquPthALSV0jhhjgEW8FXaviMx7rSqu8W6oqCoAuOhKov814P99QDV1pxMA3QPv21YudvJngIhjrNI4opLg==", "license": "MIT", "dependencies": { "@standard-schema/spec": "^1.1.0", "@types/chai": "^5.2.2", - "@vitest/spy": "4.1.0", - "@vitest/utils": "4.1.0", + "@vitest/spy": "4.1.6", + "@vitest/utils": "4.1.6", "chai": "^6.2.2", - "tinyrainbow": "^3.0.3" + "tinyrainbow": "^3.1.0" }, "funding": { "url": "https://opencollective.com/vitest" @@ -16840,43 +19288,6 @@ "integrity": "sha512-8TEXQxlldWAuIODdukIb+TR5s+9Ds40eSJrw+1iDDA9IFORPjMELarNQE3myz5XIkWWpdprmJjm1/SxMlWOC8A==", "license": "MIT" }, - "node_modules/vscode-jsonrpc": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz", - "integrity": "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==", - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/vscode-languageserver": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-9.0.1.tgz", - "integrity": "sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==", - "license": "MIT", - "dependencies": { - "vscode-languageserver-protocol": "3.17.5" - }, - "bin": { - "installServerIntoExtension": "bin/installServerIntoExtension" - } - }, - "node_modules/vscode-languageserver-protocol": { - "version": "3.17.5", - "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz", - "integrity": "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==", - "license": "MIT", - "dependencies": { - "vscode-jsonrpc": "8.2.0", - "vscode-languageserver-types": "3.17.5" - } - }, - "node_modules/vscode-languageserver-protocol/node_modules/vscode-languageserver-types": { - "version": "3.17.5", - "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz", - "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==", - "license": "MIT" - }, "node_modules/vscode-languageserver-textdocument": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.12.tgz", @@ -16895,12 +19306,6 @@ "integrity": "sha512-7bOHxPsfyuCqmP+hZXscLhiHwe7CSuFE4hyhbs22xPIhQ4jv99FcR4eBzfYYVLP356HNFpdvz63FFb/xw6T4Iw==", "license": "MIT" }, - "node_modules/vscode-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.1.0.tgz", - "integrity": "sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==", - "license": "MIT" - }, "node_modules/w3c-keyname": { "version": "2.2.8", "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.8.tgz", @@ -17140,27 +19545,6 @@ "node": ">=18.0.0" } }, - "node_modules/wireit/node_modules/balanced-match": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-3.0.1.tgz", - "integrity": "sha512-vjtV3hiLqYDNRoiAv0zC4QaGAMPomEoq83PRmYIofPswwZurCeWR5LByXm7SyoL0Zh5+2z0+HC7jG8gSZJUh0w==", - "license": "MIT", - "engines": { - "node": ">= 16" - } - }, - "node_modules/wireit/node_modules/brace-expansion": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-4.0.1.tgz", - "integrity": "sha512-YClrbvTCXGe70pU2JiEiPLYXO9gQkyxYeKpJIQHVS/gOs6EWMQP2RYBwjFLNT322Ji8TOC3IMPfsYCedNpzKfA==", - "license": "MIT", - "dependencies": { - "balanced-match": "^3.0.0" - }, - "engines": { - "node": ">= 18" - } - }, "node_modules/word-wrap": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", @@ -17193,10 +19577,34 @@ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "license": "ISC" }, + "node_modules/write-file-atomic": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-7.0.1.tgz", + "integrity": "sha512-OTIk8iR8/aCRWBqvxrzxR0hgxWpnYBblY1S5hDWBQfk/VFmJwzmJgQFN3WsoUKHISv2eAwe+PpbUzyL1CKTLXg==", + "license": "ISC", + "dependencies": { + "signal-exit": "^4.0.1" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/write-file-atomic/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/ws": { - "version": "8.19.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.19.0.tgz", - "integrity": "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==", + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.20.0.tgz", + "integrity": "sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA==", "license": "MIT", "engines": { "node": ">=10.0.0" @@ -17260,9 +19668,9 @@ "license": "ISC" }, "node_modules/yaml": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.2.tgz", - "integrity": "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==", + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.4.tgz", + "integrity": "sha512-ml/JPOj9fOQK8RNnWojA67GbZ0ApXAUlN2UQclwv2eVgTgn7O9gg9o7paZWKMp4g0H3nTLtS9LVzhkpOFIKzog==", "license": "ISC", "bin": { "yaml": "bin.mjs" @@ -17301,17 +19709,6 @@ "node": ">=12" } }, - "node_modules/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", - "license": "MIT", - "optional": true, - "dependencies": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" - } - }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", @@ -17324,6 +19721,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/yoctocolors": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.2.tgz", + "integrity": "sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/zod": { "version": "4.3.6", "resolved": "https://registry.npmjs.org/zod/-/zod-4.3.6.tgz", @@ -17361,20 +19770,55 @@ "url": "https://github.com/sponsors/wooorm" } }, + "packages/client-ts": { + "name": "@goauthentik/api", + "version": "0.0.0", + "devDependencies": { + "@goauthentik/prettier-config": "^3.5.0", + "prettier": "^3.8.1", + "typescript": "^4.0 || ^5.0" + } + }, + "packages/client-ts/node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, "packages/core": { "name": "@goauthentik/core", "version": "1.0.0", "license": "MIT", "dependencies": { - "@goauthentik/tsconfig": "^1.0.7", - "@types/node": "^25.5.0", + "@goauthentik/tsconfig": "^1.0.9", + "@types/node": "^25.7.0", "@types/semver": "^7.7.1", "semver": "^7.7.4", - "typescript": "^5.9.3" + "typescript": "^6.0.3" }, "engines": { "node": ">=24", - "npm": ">=11.6.2" + "npm": ">=11.14.1" + } + }, + "packages/core/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, "packages/formdata-polyfill": { @@ -17394,18 +19838,20 @@ "version": "0.0.0", "license": "MIT", "dependencies": { - "@goauthentik/api": "^2026.2.0-rc1-1770333267", + "@goauthentik/api": "0.0.0", "@goauthentik/core": "^1.0.0", "@rollup/plugin-commonjs": "^29.0.2", "@rollup/plugin-node-resolve": "^16.0.3", "@rollup/plugin-swc": "^0.4.0", - "@swc/cli": "^0.8.0", - "@swc/core": "^1.15.18", + "@swc/cli": "^0.8.1", + "@swc/core": "^1.15.33", + "@webcomponents/template": "^1.5.1", "base64-js": "^1.5.1", "core-js": "^3.49.0", "formdata-polyfill": "^2025.11.0", - "globby": "16.1.1", + "globby": "16.2.0", "jquery": "^3.7.1", + "lit-html": "^1.4.1", "rollup": "^4.57.1", "weakmap-polyfill": "^2.0.4" }, @@ -17423,13 +19869,13 @@ } }, "packages/sfe/node_modules/@swc/cli": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@swc/cli/-/cli-0.8.0.tgz", - "integrity": "sha512-vzUkYzlqLe9dC+B0ZIH62CzfSZOCTjIsmquYyyyi45JCm1xmRfLDKeEeMrEPPyTWnEEN84e4iVd49Tgqa+2GaA==", + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@swc/cli/-/cli-0.8.1.tgz", + "integrity": "sha512-L+ACCGHCiS0VqHVep/INLVnvRvJ2XooQFLZq4L8snhxw1jsqz+XRcY313UsyPVturPPE1shW3jic7rt3qEQTSQ==", "license": "MIT", "dependencies": { "@swc/counter": "^0.1.3", - "@xhmikosr/bin-wrapper": "^13.0.5", + "@xhmikosr/bin-wrapper": "^14.0.0", "commander": "^8.3.0", "minimatch": "^9.0.3", "piscina": "^4.3.1", @@ -17456,6 +19902,15 @@ } } }, + "packages/sfe/node_modules/brace-expansion": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.0.tgz", + "integrity": "sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, "packages/sfe/node_modules/commander": { "version": "8.3.0", "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", @@ -17465,13 +19920,19 @@ "node": ">= 12" } }, + "packages/sfe/node_modules/lit-html": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-1.4.1.tgz", + "integrity": "sha512-B9btcSgPYb1q4oSOb/PrOT6Z/H+r6xuNzfH4lFli/AWhYwdtrgQkQWBbIc6mdnf6E2IL3gDXdkkqNktpU0OZQA==", + "license": "BSD-3-Clause" + }, "packages/sfe/node_modules/minimatch": { - "version": "9.0.7", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.7.tgz", - "integrity": "sha512-MOwgjc8tfrpn5QQEvjijjmDVtMw2oL88ugTevzxQnzRLm6l3fVEF2gzU0kYeYYKD8C66+IdGX6peJ4MyUlUnPg==", + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", "license": "ISC", "dependencies": { - "brace-expansion": "^5.0.2" + "brace-expansion": "^2.0.2" }, "engines": { "node": ">=16 || 14 >=14.17" @@ -17480,6 +19941,18 @@ "url": "https://github.com/sponsors/isaacs" } }, + "packages/sfe/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "packages/sfe/node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", diff --git a/web/package.json b/web/package.json index d6b8f0437a..2357a69599 100644 --- a/web/package.json +++ b/web/package.json @@ -1,6 +1,6 @@ { "name": "@goauthentik/web", - "version": "2026.5.0-rc1", + "version": "2026.8.0-rc1", "license": "MIT", "private": true, "scripts": { @@ -13,7 +13,6 @@ "format": "wireit", "lint": "eslint --fix .", "lint:imports": "knip --config scripts/knip.config.ts", - "lint:lockfile": "wireit", "lint:types": "wireit", "lint-check": "eslint --max-warnings 0 .", "lit-analyse": "wireit", @@ -57,6 +56,7 @@ "#styles/*.css": "./src/styles/*.css", "#styles/*": "./src/styles/*.js", "#common/*": "./src/common/*.js", + "#elements/dialogs": "./src/elements/dialogs/index.js", "#elements/*.css": "./src/elements/*.css", "#elements/*": "./src/elements/*.js", "#components/*.css": "./src/components/*.css", @@ -96,14 +96,14 @@ "@codemirror/theme-one-dark": "^6.1.3", "@eslint/js": "^9.39.3", "@floating-ui/dom": "^1.7.6", - "@formatjs/intl-listformat": "^8.3.1", + "@formatjs/intl-listformat": "^8.3.5", "@fortawesome/fontawesome-free": "^7.2.0", - "@goauthentik/api": "^2026.2.0-rc1-1770744803", + "@goauthentik/api": "0.0.0", "@goauthentik/core": "^1.0.0", - "@goauthentik/esbuild-plugin-live-reload": "^1.6.1", + "@goauthentik/esbuild-plugin-live-reload": "^2.0.1", "@goauthentik/eslint-config": "^1.3.0", - "@goauthentik/prettier-config": "^3.4.3", - "@goauthentik/tsconfig": "^1.0.7", + "@goauthentik/prettier-config": "^3.5.0", + "@goauthentik/tsconfig": "^1.0.9", "@hcaptcha/types": "^1.1.0", "@lit/context": "^1.1.6", "@lit/localize": "^0.12.2", @@ -115,24 +115,26 @@ "@open-wc/lit-helpers": "^0.7.0", "@openlayers-elements/core": "^0.4.0", "@openlayers-elements/maps": "^0.4.0", - "@patternfly/elements": "^4.3.1", + "@patternfly/elements": "^4.4.0", "@patternfly/patternfly": "^4.224.2", - "@playwright/test": "^1.58.2", - "@sentry/browser": "^10.45.0", - "@storybook/addon-docs": "^10.3.0", - "@storybook/addon-links": "^10.3.0", - "@storybook/web-components": "^10.3.0", - "@storybook/web-components-vite": "^10.3.0", + "@playwright/test": "^1.59.1", + "@sentry/browser": "^10.51.0", + "@storybook/addon-docs": "^10.3.6", + "@storybook/addon-links": "^10.3.6", + "@storybook/web-components": "^10.3.6", + "@storybook/web-components-vite": "^10.3.6", "@types/codemirror": "^5.60.17", "@types/grecaptcha": "^3.0.9", "@types/guacamole-common-js": "^1.5.5", - "@types/node": "^25.5.0", + "@types/node": "^25.7.0", "@types/react": "^19.2.14", "@types/react-dom": "^19.2.3", - "@typescript-eslint/eslint-plugin": "^8.56.1", - "@typescript-eslint/parser": "^8.56.1", - "@vitest/browser": "^4.1.0", - "@vitest/browser-playwright": "^4.0.15", + "@typescript-eslint/eslint-plugin": "^8.57.2", + "@typescript-eslint/parser": "^8.57.2", + "@typescript-eslint/utils": "^8.57.2", + "@typescript/native-preview": "^7.0.0-dev.20260421.2", + "@vitest/browser": "^4.1.6", + "@vitest/browser-playwright": "^4.1.6", "@webcomponents/webcomponentsjs": "^2.8.0", "base64-js": "^1.5.1", "change-case": "^5.4.4", @@ -140,37 +142,37 @@ "chartjs-adapter-date-fns": "^3.0.0", "codemirror": "^6.0.2", "core-js": "^3.49.0", - "country-flag-icons": "^1.6.15", + "country-flag-icons": "^1.6.17", "date-fns": "^4.1.0", "deepmerge-ts": "^7.1.5", - "dompurify": "^3.3.3", - "esbuild": "^0.27.4", + "dompurify": "^3.4.2", + "esbuild": "^0.28.0", "eslint": "^9.39.3", - "eslint-plugin-lit": "^2.2.1", + "eslint-plugin-lit": "^2.3.1", "eslint-plugin-wc": "^3.1.0", - "fuse.js": "^7.1.0", - "globals": "^17.4.0", + "fuse.js": "^7.3.0", + "globals": "^17.6.0", "guacamole-common-js": "^1.5.0", "hastscript": "^9.0.1", - "knip": "^5.88.0", + "knip": "^6.11.0", "lex": "^2025.11.0", "lit": "^3.3.2", "lit-analyzer": "^2.0.3", "lit-element": "^4.2.2", "lit-html": "^3.3.2", "md-front-matter": "^1.0.4", - "mermaid": "^11.13.0", + "mermaid": "^11.15.0", "node-domexception": "^2025.11.0", "npm-run-all": "^4.1.5", "pino": "^10.3.1", "pino-pretty": "^13.1.2", - "playwright": "^1.58.2", - "prettier": "^3.8.1", + "playwright": "^1.60.0", + "prettier": "^3.8.3", "prettier-plugin-packagejson": "^3.0.2", "pseudolocale": "^2.2.0", "rapidoc": "^9.3.8", - "react": "^19.2.4", - "react-dom": "^19.2.4", + "react": "^19.2.6", + "react-dom": "^19.2.6", "rehype-highlight": "^7.0.2", "rehype-mermaid": "^3.0.0", "rehype-parse": "^9.0.1", @@ -181,27 +183,28 @@ "remark-mdx-frontmatter": "^5.2.0", "storybook": "^10.2.1", "style-mod": "^4.1.3", + "stylelint": "^17.11.0", "trusted-types": "^2.0.0", "ts-pattern": "^5.9.0", "turnstile-types": "^1.2.3", - "type-fest": "^5.4.4", - "typescript": "^5.9.3", - "typescript-eslint": "^8.56.1", + "type-fest": "^5.6.0", + "typescript": "^6.0.3", + "typescript-eslint": "^8.59.3", "unist-util-visit": "^5.1.0", - "vite": "^7.3.1", - "vitest": "^4.0.15", + "vite": "^8.0.12", + "vitest": "^4.1.6", "webcomponent-qr-code": "^1.3.0", "wireit": "^0.14.12", - "yaml": "^2.8.2" + "yaml": "^2.8.4" }, "optionalDependencies": { - "@esbuild/darwin-arm64": "^0.27.3", - "@esbuild/linux-arm64": "^0.27.3", - "@esbuild/linux-x64": "^0.27.3", + "@esbuild/darwin-arm64": "^0.28.0", + "@esbuild/linux-arm64": "^0.28.0", + "@esbuild/linux-x64": "^0.28.0", + "@goauthentik/prettier-config-dev": "../packages/prettier-config", "@rollup/rollup-darwin-arm64": "^4.57.1", "@rollup/rollup-linux-arm64-gnu": "^4.57.1", - "@rollup/rollup-linux-x64-gnu": "^4.57.1", - "chromedriver": "^146.0.4" + "@rollup/rollup-linux-x64-gnu": "^4.57.1" }, "workspaces": [ "./packages/*" @@ -246,7 +249,7 @@ } }, "build-proxy": { - "command": "node scripts/build-web.mjs --proxy", + "command": "node scripts/build-web.mjs --styles-only", "dependencies": [ "build-locales" ] @@ -258,19 +261,11 @@ "command": "lit-analyzer src" }, "lint:types": { - "command": "tsc -p .", - "env": { - "NODE_OPTIONS": "--max_old_space_size=8192" - }, + "command": "tsgo -p .", "dependencies": [ "build-locales" ] }, - "lint:lockfile": { - "__comment": "The lockfile-lint package does not have an option to ensure resolved hashes are set everywhere", - "shell": true, - "command": "sh ./scripts/lint-lockfile.sh package-lock.json" - }, "lit-analyse": { "command": "lit-analyzer src" }, @@ -279,8 +274,7 @@ "dependencies": [ "lint", "lint:types", - "lint:components", - "lint:lockfile" + "lint:components" ] }, "storybook:build": { @@ -290,10 +284,7 @@ } }, "tsc": { - "command": "tsc -p .", - "env": { - "NODE_OPTIONS": "--max_old_space_size=8192" - }, + "command": "tsgo -p .", "dependencies": [ "build-locales" ] @@ -301,7 +292,7 @@ }, "engines": { "node": ">=24", - "npm": ">=11.6.2" + "npm": ">=11.14.1" }, "devEngines": { "runtime": { @@ -311,21 +302,40 @@ }, "packageManager": { "name": "npm", - "version": "11.10.1", + "version": ">=11.14.1", "onFail": "warn" } }, - "prettier": "@goauthentik/prettier-config", + "packageManager": "npm@11.14.1+sha512.6a8a4d67478497a2dbc6815cad72e64c43f33413717e242756047d466241ab39bee61e691683a64658e94496ec5f1a1c05e4a5ec62dcc773280dfd949443a367", + "prettier": "./prettier.config.mjs", "overrides": { "@goauthentik/esbuild-plugin-live-reload": { - "esbuild": "$esbuild" + "esbuild": "$esbuild", + "typescript": "$typescript" + }, + "@goauthentik/eslint-config": { + "typescript": "$typescript" }, "@goauthentik/prettier-config": { "prettier": "$prettier", - "prettier-plugin-packagejson": "$prettier-plugin-packagejson" + "prettier-plugin-packagejson": "$prettier-plugin-packagejson", + "typescript": "$typescript" }, "@mrmarble/djangoql-completion": { - "lex": "$lex" + "lex": "$lex", + "lodash": "^4.18.1" + }, + "@typescript-eslint/eslint-plugin": { + "typescript": "$typescript" + }, + "@typescript-eslint/parser": { + "typescript": "$typescript" + }, + "@typescript-eslint/typescript-estree": { + "typescript": "$typescript" + }, + "@typescript-eslint/utils": { + "typescript": "$typescript" }, "format-imports": { "eslint": "$eslint" @@ -335,6 +345,13 @@ }, "rapidoc": { "@apitools/openapi-parser": "0.0.37" + }, + "tree-sitter": false, + "typescript-eslint": { + "typescript": "$typescript" + }, + "wireit": { + "brace-expansion": "^1.1.14" } } } diff --git a/web/packages/client-ts b/web/packages/client-ts new file mode 120000 index 0000000000..2a947d2b6b --- /dev/null +++ b/web/packages/client-ts @@ -0,0 +1 @@ +../../packages/client-ts \ No newline at end of file diff --git a/web/packages/core/environment/node.js b/web/packages/core/environment/node.js index 033374a103..3732a9e7b5 100644 --- a/web/packages/core/environment/node.js +++ b/web/packages/core/environment/node.js @@ -44,8 +44,10 @@ export const NodeEnvironment = process.env.NODE_ENV || "development"; * @category Environment * @runtime node * - * @template {Record} EnvRecord - * @template {string} [Prefix='import.meta.env.'] + * @typeParam {string} [Prefix='import.meta.env.'] + * + * @typedef {Record} EnvRecord + * @typedef {string} Prefix * * @param {EnvRecord} input * @param {Prefix} [prefix='import.meta.env.'] diff --git a/web/packages/core/package.json b/web/packages/core/package.json index 289f6ca754..df396010c1 100644 --- a/web/packages/core/package.json +++ b/web/packages/core/package.json @@ -44,14 +44,14 @@ } }, "dependencies": { - "@goauthentik/tsconfig": "^1.0.7", - "@types/node": "^25.5.0", + "@goauthentik/tsconfig": "^1.0.9", + "@types/node": "^25.7.0", "@types/semver": "^7.7.1", "semver": "^7.7.4", - "typescript": "^5.9.3" + "typescript": "^6.0.3" }, "engines": { "node": ">=24", - "npm": ">=11.6.2" + "npm": ">=11.14.1" } } diff --git a/web/packages/core/tsconfig.json b/web/packages/core/tsconfig.json index f5338b1c66..545506fe90 100644 --- a/web/packages/core/tsconfig.json +++ b/web/packages/core/tsconfig.json @@ -3,7 +3,6 @@ "compilerOptions": { "lib": ["DOM", "DOM.Iterable", "ESNext"], "resolveJsonModule": true, - "baseUrl": ".", "checkJs": true, "allowJs": true, "emitDeclarationOnly": true diff --git a/web/packages/lex/index.js b/web/packages/lex/index.js index 72be63f0ba..6a92a377c0 100644 --- a/web/packages/lex/index.js +++ b/web/packages/lex/index.js @@ -7,152 +7,186 @@ */ /** - * @typedef {(this: Lexer, chr: string) => any} DefunctFunction + * A token produced by a {@link LexerAction}. The lexer is agnostic to the + * concrete token shape; consumers pick whatever representation suits them. + * + * @typedef {unknown} Token */ /** - * @typedef {(this: Lexer, ...args: RegExpExecArray) => string | string[] | undefined} RuleAction + * A rule action. Invoked with the regex match (full match followed by capture + * groups) bound to the owning {@link Lexer} so it can read or set `state`, + * `index`, and `reject`. + * + * Return values: + * - `null` (or `undefined` from an implicit return) — discard the match and continue scanning. + * - a single token — yield it from {@link Lexer.lex}. + * - an array of tokens — yield the first; queue the rest for subsequent calls. + * + * @callback LexerAction + * @this {Lexer} + * @param {...string[]} match + * @returns {Token | Token[] | null | void} */ /** - * @typedef {Object} Rule - * @property {RegExp} pattern - * @property {boolean} global - * @property {RuleAction} action - * @property {number[]} start + * @typedef {object} LexerRule + * @property {RegExp} pattern Sticky-compiled pattern used to probe the input. + * @property {boolean} global Whether the user-supplied pattern was global. + * @property {LexerAction} action + * @property {number[]} start States in which the rule is active. `[0]` is the default state; an empty array means "any state". */ /** - * @typedef {Object} Match + * @typedef {object} LexerMatch * @property {RegExpExecArray} result - * @property {RuleAction} action + * @property {LexerAction} action * @property {number} length + * @property {boolean} global Whether the producing rule was declared with the `g` flag. */ +/** + * Handler invoked when no rule matches at the current position. + * + * @callback DefunctHandler + * @this {Lexer} + * @param {string} chr The unexpected character. + * @returns {Token | Token[] | null | void} + */ + +/** + * @type {DefunctHandler} + */ +function defaultDefunct(chr) { + throw new Error(`Unexpected character at index ${this.index - 1}: ${chr}`); +} + /** * Lexer class for tokenizing input strings. */ export class Lexer { /** - * @type {string[]} - */ - tokens = []; - /** - * @type {Rule[]} - */ - rules = []; - /** - * @type {number} - */ - remove = 0; - /** + * Current lexer state. Rules whose `start` array contains this value (or + * is empty) are eligible to match. Odd-numbered states are also matched + * by rules declared with `start: [0]`, mirroring flex's inclusive states. + * * @type {number} */ state = 0; - /** - * @type {number} - */ + + /** @type {number} */ index = 0; - /** - * @type {string} - */ + + /** @type {string} */ input = ""; /** - * @param {DefunctFunction} [defunct] + * When set to `true` from inside an action, the current match is rolled + * back and the next-best match is tried instead. + * + * @type {boolean} + */ + reject = false; + + /** @type {LexerRule[]} */ + #rules = []; + + /** @type {Token[]} */ + #tokens = []; + + /** @type {number} */ + #remove = 0; + + /** @type {DefunctHandler} */ + #defunct; + + /** + * @param {DefunctHandler} [defunct] Optional handler for unexpected characters. */ constructor(defunct) { - defunct ||= function (chr) { - throw new Error("Unexpected character at index " + (this.index - 1) + ": " + chr); - }; - - this.defunct = defunct; + this.#defunct = typeof defunct === "function" ? defunct : defaultDefunct; } /** - * Add a lexing rule. + * Register a tokenization rule. * * @param {RegExp} pattern - * @param {RuleAction} action - * @param {number[]} [start] - * @returns {Lexer} + * @param {LexerAction} action + * @param {number[]} [start] States in which the rule is active. Defaults to `[0]`. + * @returns {this} */ - addRule = (pattern, action, start) => { + addRule(pattern, action, start) { const global = pattern.global; if (!global || !pattern.sticky) { let flags = "gy"; - if (pattern.multiline) flags += "m"; if (pattern.ignoreCase) flags += "i"; if (pattern.unicode) flags += "u"; pattern = new RegExp(pattern.source, flags); } - if (!Array.isArray(start)) start = [0]; - - this.rules.push({ - pattern: pattern, - global: global, - action: action, - start: start, + this.#rules.push({ + pattern, + global, + action, + start: Array.isArray(start) ? start : [0], }); return this; - }; + } /** - * Set the input string for lexing. + * Reset the lexer and load a new input string. * * @param {string} input - * @returns {Lexer} + * @returns {this} */ - setInput = (input) => { - this.remove = 0; + setInput(input) { + this.#remove = 0; this.state = 0; this.index = 0; - this.tokens.length = 0; + this.#tokens.length = 0; this.input = input; return this; - }; + } /** - * Lex the next token from the input. + * Produce the next token from the input, or `null` once exhausted. * - * @returns {string | string[] | undefined} + * @returns {Token | null} */ - lex = () => { - if (this.tokens.length) return this.tokens.shift(); + lex() { + if (this.#tokens.length) return /** @type {Token} */ (this.#tokens.shift()); this.reject = true; while (this.index <= this.input.length) { - const matches = this.scan().splice(this.remove); + const matches = this.#scan().splice(this.#remove); const index = this.index; while (matches.length) { - if (!this.reject) { - break; - } - const match = matches.shift(); + if (!this.reject) break; - if (!match) break; - - const result = match.result; - const length = match.length; + const match = /** @type {LexerMatch} */ (matches.shift()); + const { result, length } = match; this.index += length; this.reject = false; - this.remove++; + this.#remove++; - let token = match.action.apply(this, result); + let token = match.action.apply( + this, + /** @type {string[]} */ (/** @type {unknown} */ (result)), + ); if (this.reject) { this.index = result.index; - } else if (Array.isArray(token)) { - this.tokens = token.slice(1); - token = token[0]; - } else { - if (length) this.remove = 0; + } else if (token !== null && token !== undefined) { + if (Array.isArray(token)) { + this.#tokens = token.slice(1); + token = token[0]; + } + if (length) this.#remove = 0; return token; } } @@ -161,79 +195,82 @@ export class Lexer { if (index < input.length) { if (this.reject) { - this.remove = 0; - const token = this.defunct(input.charAt(this.index++)); - if (typeof token !== "undefined") { + this.#remove = 0; + const token = this.#defunct(input.charAt(this.index++)); + if (token !== null && token !== undefined) { if (Array.isArray(token)) { - this.tokens = token.slice(1); + this.#tokens = token.slice(1); return token[0]; } - return token; } } else { - if (this.index !== index) this.remove = 0; + if (this.index !== index) this.#remove = 0; this.reject = true; } - } else if (matches.length) this.reject = true; - else break; + } else if (matches.length) { + this.reject = true; + } else { + break; + } } - }; + + return null; + } /** - * Scan the input for matches. + * Probe every state-eligible rule at the current position, returning the + * matches sorted by length (longest first), with global rules pinned + * after non-global ones to preserve flex's "longest non-global wins" + * tie-breaking. * - * @returns {Match[]} + * @returns {LexerMatch[]} */ - scan = () => { - /** - * @type {Match[]} - */ + #scan() { + /** @type {LexerMatch[]} */ const matches = []; - let index = 0; const state = this.state; const lastIndex = this.index; const input = this.input; - for (let i = 0, length = this.rules.length; i < length; i++) { - const rule = this.rules[i]; + for (const rule of this.#rules) { const start = rule.start; const states = start.length; + const eligible = + !states || start.indexOf(state) >= 0 || (state % 2 && states === 1 && !start[0]); - if (!states || start.indexOf(state) >= 0 || (state % 2 && states === 1 && !start[0])) { - const pattern = rule.pattern; - pattern.lastIndex = lastIndex; - const result = pattern.exec(input); + if (!eligible) continue; - if (!result || result.index !== lastIndex) { - continue; - } + const pattern = rule.pattern; + pattern.lastIndex = lastIndex; + const result = pattern.exec(input); - let j = matches.push({ - result: result, - action: rule.action, - length: result[0].length, - }); + if (!result || result.index !== lastIndex) continue; - if (rule.global) { - index = j; - } + let j = matches.push({ + result, + action: rule.action, + length: result[0].length, + global: rule.global, + }); - while (--j > index) { - const k = j - 1; + while (--j > 0) { + const k = j - 1; + const cur = matches[j]; + const prev = matches[k]; + const longer = cur.length > prev.length; + const tieFavorsCur = cur.length === prev.length && prev.global && !cur.global; - if (matches[j].length > matches[k].length) { - const temple = matches[j]; - matches[j] = matches[k]; - matches[k] = temple; - } - } + if (!longer && !tieFavorsCur) break; + + matches[j] = prev; + matches[k] = cur; } } return matches; - }; + } } export default Lexer; diff --git a/web/packages/sfe/package.json b/web/packages/sfe/package.json index 5be1647168..81a2e8f7c3 100644 --- a/web/packages/sfe/package.json +++ b/web/packages/sfe/package.json @@ -14,18 +14,20 @@ "./package.json": "./package.json" }, "dependencies": { - "@goauthentik/api": "^2026.2.0-rc1-1770333267", + "@goauthentik/api": "0.0.0", "@goauthentik/core": "^1.0.0", "@rollup/plugin-commonjs": "^29.0.2", "@rollup/plugin-node-resolve": "^16.0.3", "@rollup/plugin-swc": "^0.4.0", - "@swc/cli": "^0.8.0", - "@swc/core": "^1.15.18", + "@swc/cli": "^0.8.1", + "@swc/core": "^1.15.33", + "@webcomponents/template": "^1.5.1", "base64-js": "^1.5.1", "core-js": "^3.49.0", "formdata-polyfill": "^2025.11.0", - "globby": "16.1.1", + "globby": "16.2.0", "jquery": "^3.7.1", + "lit-html": "^1.4.1", "rollup": "^4.57.1", "weakmap-polyfill": "^2.0.4" }, diff --git a/web/packages/sfe/src/index.ts b/web/packages/sfe/src/index.ts index 42bc5fe7e4..b556baa2cf 100644 --- a/web/packages/sfe/src/index.ts +++ b/web/packages/sfe/src/index.ts @@ -1,6 +1,7 @@ import "formdata-polyfill"; import "weakmap-polyfill"; import "core-js/actual/object/assign"; +import "@webcomponents/template"; import { type AccessDeniedChallenge, @@ -19,6 +20,8 @@ import { import { fromByteArray } from "base64-js"; import $ from "jquery"; +import { html, nothing, render, TemplateResult } from "lit-html"; + /* eslint-disable @typescript-eslint/no-use-before-define */ interface GlobalAuthentik { @@ -53,11 +56,7 @@ class SimpleFlowExecutor { } loading() { - this.container.innerHTML = `
-
- Loading... -
-
`; + new LoadingStage(this, {}).render(); } start() { @@ -137,7 +136,7 @@ export interface FlowInfoChallenge { }; } -class Stage { +abstract class Stage { constructor( public executor: SimpleFlowExecutor, public challenge: T, @@ -150,32 +149,32 @@ class Stage { return this.challenge.responseErrors[fieldName] || []; } - renderInputError(fieldName: string) { - return `${this.error(fieldName) - .map((error) => { - return `
- ${error.string} -
`; - }) - .join("")}`; + renderInputError(fieldName: string): TemplateResult { + return html`${this.error(fieldName).map((error) => { + return html`
${error.string}
`; + })}`; } - renderNonFieldErrors() { - return `${this.error("non_field_errors") - .map((error) => { - return ``; - }) - .join("")}`; + renderNonFieldErrors(): TemplateResult { + return html`${this.error("non_field_errors").map((error) => { + return html``; + })}`; } - html(html: string) { - this.executor.container.innerHTML = html; + html(html: TemplateResult) { + render(html, this.executor.container); } + abstract render(): void; +} + +class LoadingStage extends Stage { render() { - throw new Error("Abstract method"); + return html`
+
+ Loading... +
+
`; } } @@ -183,61 +182,87 @@ const IS_INVALID = "is-invalid"; class IdentificationStage extends Stage { render() { - this.html(` -
- + this.html( + html` { + ev.preventDefault(); + const data = new FormData(ev.target as HTMLFormElement); + this.executor.submit(data); + }} + > +

${this.challenge?.flowInfo?.title}

- ${ - this.challenge.applicationPre - ? `

- Log in to continue to ${this.challenge.applicationPre}. -

` - : "" - } + ${this.challenge.applicationPre + ? html`

Log in to continue to ${this.challenge.applicationPre}.

` + : nothing}
- +
- ${ - this.challenge.passwordFields - ? `
- 0 ? IS_INVALID : ""}" name="password" placeholder="Password"> - ${this.renderInputError("password")} -
` - : "" - } + ${this.challenge.passwordFields + ? html`
+ 0 + ? IS_INVALID + : ""}" + name="password" + placeholder="Password" + /> + ${this.renderInputError("password")} +
` + : nothing} ${this.renderNonFieldErrors()} - -
`); + + `, + ); $("#ident-form input[name=uid_field]").trigger("focus"); - $("#ident-form").on("submit", (ev) => { - ev.preventDefault(); - const data = new FormData(ev.target as HTMLFormElement); - this.executor.submit(data); - }); } } class PasswordStage extends Stage { render() { - this.html(` -
- + this.html( + html` { + ev.preventDefault(); + const data = new FormData(ev.target as HTMLFormElement); + this.executor.submit(data); + }} + > +

${this.challenge?.flowInfo?.title}

- +
- 0 ? IS_INVALID : ""}" name="password" placeholder="Password"> + 0 ? IS_INVALID : ""}" + name="password" + placeholder="Password" + /> ${this.renderInputError("password")}
-
`); + `, + ); $("#password-form input").trigger("focus"); - $("#password-form").on("submit", (ev) => { - ev.preventDefault(); - const data = new FormData(ev.target as HTMLFormElement); - this.executor.submit(data); - }); } } @@ -249,23 +274,20 @@ class RedirectStage extends Stage { class AutosubmitStage extends Stage { render() { - this.html(` -
- + this.html( + html` +

${this.challenge?.flowInfo?.title}

${Object.entries(this.challenge.attrs).map(([key, value]) => { - return ``; + return html``; })}
Loading...
-
`); + `, + ); $("#autosubmit-form").submit(); } } @@ -394,73 +416,79 @@ class AuthenticatorValidateStage extends Stage ? undefined : challenge, ); - this.html(`
- + this.html( + html` +

${this.challenge?.flowInfo?.title}

- ${ - challenges.length > 0 - ? "

Select an authentication method.

" - : `

No compatible authentication method available

` - } - ${challenges - .map((challenge) => { - let label = undefined; - switch (challenge.deviceClass) { - case "static": - label = "Recovery keys"; - break; - case "totp": - label = "Traditional authenticator"; - break; - case "webauthn": - label = "Security key"; - break; - } - if (!label) { - return ""; - } - return `
- -
`; - }) - .join("")} -
`); - this.challenge.deviceChallenges.forEach((challenge) => { - $(`#picker-form button#${challenge.deviceClass}-${challenge.deviceUid}`).on( - "click", - () => { - this.deviceChallenge = challenge; - this.render(); - }, - ); - }); + ${challenges.length > 0 + ? html`

Select an authentication method.

` + : html`

No compatible authentication method available

`} + ${challenges.map((challenge) => { + let label = undefined; + switch (challenge.deviceClass) { + case "static": + label = "Recovery keys"; + break; + case "totp": + label = "Traditional authenticator"; + break; + case "webauthn": + label = "Security key"; + break; + } + if (!label) { + return ""; + } + return html`
+ +
`; + })} + `, + ); } renderCodeInput() { - this.html(` -
- + this.html( + html` { + ev.preventDefault(); + const data = new FormData(ev.target as HTMLFormElement); + this.executor.submit(data); + }} + > +

${this.challenge?.flowInfo?.title}

- 0 ? IS_INVALID : ""}" name="code" placeholder="Please enter your code" autocomplete="one-time-code"> + 0 ? IS_INVALID : ""}" + name="code" + placeholder="Please enter your code" + autocomplete="one-time-code" + /> ${this.renderInputError("code")}
-
`); + `, + ); $("#totp-form input").trigger("focus"); - $("#totp-form").on("submit", (ev) => { - ev.preventDefault(); - const data = new FormData(ev.target as HTMLFormElement); - this.executor.submit(data); - }); } renderWebauthn() { - this.html(` + this.html(html`
- +

${this.challenge?.flowInfo?.title}

@@ -468,7 +496,7 @@ class AuthenticatorValidateStage extends Stage
- `); + `); navigator.credentials .get({ publicKey: this.transformCredentialRequestOptions( @@ -504,13 +532,13 @@ class AuthenticatorValidateStage extends Stage class AccessDeniedStage extends Stage { render() { - this.html(`
- + this.html( + html` +

${this.challenge?.flowInfo?.title}

-

- ${this.challenge.errorMessage ?? "Access denied."} -

-
`); +

${this.challenge.errorMessage ?? "Access denied."}

+ `, + ); } } diff --git a/web/packages/sfe/tsconfig.json b/web/packages/sfe/tsconfig.json index 5cbc3fabac..91a75c3eef 100644 --- a/web/packages/sfe/tsconfig.json +++ b/web/packages/sfe/tsconfig.json @@ -4,10 +4,8 @@ "moduleResolution": "bundler", "module": "preserve", "noEmit": true, - "baseUrl": ".", "outDir": "out", "types": [], - "esModuleInterop": true, "lib": ["DOM", "ES2015", "ES2017"] } } diff --git a/web/paths/node.js b/web/paths/node.js index 0f43c069b8..143c8cdb0b 100644 --- a/web/paths/node.js +++ b/web/paths/node.js @@ -31,7 +31,7 @@ export const PackageRoot = /** @type {WebPackageIdentifier} */ (resolve(relative * * @runtime node */ -export const DistDirectory = /** @type {`${WebPackageIdentifier}/${DistDirectoryName}`} */ ( +export const DistDirectory = /** @type {`${WebPackageIdentifier}/${typeof DistDirectoryName}`} */ ( resolve(PackageRoot, DistDirectoryName) ); @@ -55,7 +55,7 @@ export const DistDirectory = /** @type {`${WebPackageIdentifier}/${DistDirectory */ export const EntryPoint = /** @type {const} */ ({ Admin: { - in: resolve(PackageRoot, "src", "admin", "AdminInterface", "index.entrypoint.ts"), + in: resolve(PackageRoot, "src", "admin", "index.entrypoint.ts"), out: resolve(DistDirectory, "admin", "AdminInterface"), }, User: { @@ -90,7 +90,7 @@ export const EntryPoint = /** @type {const} */ ({ in: resolve(PackageRoot, "src", "styles", "authentik", "static.global.css"), out: resolve(DistDirectory, "styles", "static"), }, - FlowsStyles: { + FlowStyles: { in: resolve(PackageRoot, "src", "styles", "authentik", "flows.global.css"), out: resolve(DistDirectory, "styles", "flow"), }, diff --git a/web/playwright.config.js b/web/playwright.config.js index c14f4029ff..863b1e6eaa 100644 --- a/web/playwright.config.js +++ b/web/playwright.config.js @@ -36,6 +36,7 @@ export default defineConfig({ testIdAttribute: "data-test-id", baseURL, trace: "on-first-retry", + colorScheme: "dark", launchOptions: { logger: { isEnabled() { diff --git a/web/prettier.config.mjs b/web/prettier.config.mjs new file mode 100644 index 0000000000..cc043614bb --- /dev/null +++ b/web/prettier.config.mjs @@ -0,0 +1,15 @@ +/** + * @file Prettier config resolver. + * + * This file attempts to import the monorepo's local Prettier config package, + * falling back to the published version if the local one cannot be found. + */ + +const config = await import("@goauthentik/prettier-config-dev") + .catch(() => { + console.debug("Fallback to published @goauthentik/prettier-config"); + return import("@goauthentik/prettier-config"); + }) + .then((module) => module.default); + +export default config; diff --git a/web/scripts/build-web.mjs b/web/scripts/build-web.mjs index 4d673bab4e..b43e4b40ba 100644 --- a/web/scripts/build-web.mjs +++ b/web/scripts/build-web.mjs @@ -10,7 +10,7 @@ import * as path from "node:path"; /** * @file ESBuild script for building the authentik web UI. * - * @import { BuildOptions } from "esbuild"; + * @import { BuildOptions, Plugin } from "esbuild"; */ import { mdxPlugin } from "#bundler/mdx-plugin/node"; import { styleLoaderPlugin } from "#bundler/style-loader-plugin/node"; @@ -22,7 +22,6 @@ import { NodeEnvironment } from "@goauthentik/core/environment/node"; import { MonoRepoRoot } from "@goauthentik/core/paths/node"; import { BuildIdentifier } from "@goauthentik/core/version/node"; -import { deepmerge } from "deepmerge-ts"; import esbuild from "esbuild"; /// @@ -52,8 +51,59 @@ const assets = [ [path.resolve(PackageRoot, "icons"), "./assets/icons"], ]; +const entryPointNames = Object.keys(EntryPoint); +const entryPoints = Object.values(EntryPoint); +const entryPointsDescription = entryPointNames.join("\n\t"); + /** - * @type {Readonly} + * @type {Plugin[]} + */ +const BASE_ESBUILD_PLUGINS = [ + { + name: "copy", + setup(build) { + build.onEnd(async () => { + /** + * @type {import('esbuild').PartialMessage[]} + */ + const errors = []; + + /** + * @param {SourceDestinationPair} pair + */ + const copy = ([from, to]) => { + const resolvedDestination = path.resolve(DistDirectory, to); + + logger.debug(`📋 Copying assets from ${from} to ${to}`); + + return fs + .cp(from, resolvedDestination, { + recursive: true, + }) + .catch((error) => { + errors.push({ + text: `Failed to copy assets from ${from} to ${to}: ${error}`, + location: { + file: from, + }, + }); + }); + }; + + await Promise.all(assets.map(copy)); + + return { errors }; + }); + }, + }, + + mdxPlugin({ + root: MonoRepoRoot, + }), +]; + +/** + * @type {BuildOptions} */ const BASE_ESBUILD_OPTIONS = { entryNames: `[dir]/[name]-${BuildIdentifier}`, @@ -84,60 +134,28 @@ const BASE_ESBUILD_OPTIONS = { * @see https://nodejs.org/api/packages.html#packages_conditional_exports */ conditions: NodeEnvironment === "production" ? ["production"] : ["development", "production"], - plugins: [ - { - name: "copy", - setup(build) { - build.onEnd(async () => { - /** - * @type {import('esbuild').PartialMessage[]} - */ - const errors = []; - - /** - * @param {SourceDestinationPair} pair - */ - const copy = ([from, to]) => { - const resolvedDestination = path.resolve(DistDirectory, to); - - logger.debug(`📋 Copying assets from ${from} to ${to}`); - - return fs - .cp(from, resolvedDestination, { recursive: true }) - .catch((error) => { - errors.push({ - text: `Failed to copy assets from ${from} to ${to}: ${error}`, - location: { - file: from, - }, - }); - }); - }; - - await Promise.all(assets.map(copy)); - - return { errors }; - }); - }, - }, - - mdxPlugin({ - root: MonoRepoRoot, - }), - ], + plugins: BASE_ESBUILD_PLUGINS, define: bundleDefinitions, format: "esm", - logOverride: { - /** - * HACK: Silences issue originating in ESBuild. - * - * @see {@link https://github.com/evanw/esbuild/blob/b914dd30294346aa15fcc04278f4b4b51b8b43b5/internal/logger/msg_ids.go#L211 ESBuild source} - * @expires 2025-08-11 - */ - "invalid-source-url": "silent", - }, }; +/** + * Creates an ESBuild options, extending the base options with the given overrides. + * + * @param {BuildOptions["entryPoints"]} entryPoints + * @param {Plugin[]} plugIns + * @returns {BuildOptions} + */ +export function createESBuildOptions(entryPoints, plugIns = []) { + const plugins = [...BASE_ESBUILD_PLUGINS, ...plugIns]; + + return { + ...BASE_ESBUILD_OPTIONS, + entryPoints, + plugins, + }; +} + async function cleanDistDirectory() { logger.info(`♻️ Cleaning previous builds...`); @@ -153,29 +171,12 @@ async function cleanDistDirectory() { logger.info(`♻️ Done!`); } -/** - * Creates an ESBuild options, extending the base options with the given overrides. - * - * @param {BuildOptions} overrides - * @returns {BuildOptions} - */ -export function createESBuildOptions(overrides) { - /** - * @type {BuildOptions} - */ - const mergedOptions = deepmerge(BASE_ESBUILD_OPTIONS, overrides); - - return mergedOptions; -} - function doHelp() { logger.info(`Build the authentik UI options: -w, --watch: Build all interfaces - -p, --proxy: Build only the polyfills and the loading application - -h, --help: This help message -`); + -s, --styles-only: Build the static CSS`); process.exit(0); } @@ -185,23 +186,23 @@ function doHelp() { * @returns {Promise<() => Promise>} dispose */ async function doWatch() { - logger.info(`🤖 Watching entry points:\n\t${Object.keys(EntryPoint).join("\n\t")}`); - - const entryPoints = Object.values(EntryPoint); + logger.info(`🤖 Watching entry points:\n\t${entryPointsDescription}`); const developmentPlugins = await import("@goauthentik/esbuild-plugin-live-reload/plugin") .then(({ liveReloadPlugin }) => [ liveReloadPlugin({ relativeRoot: PackageRoot, - logger: logger.child({ name: "Live Reload" }), + logger: logger.child({ + name: "Live Reload", + }), }), ]) .catch(() => []); - const buildOptions = createESBuildOptions({ - entryPoints, - plugins: [...developmentPlugins, styleLoaderPlugin({ logger, watch: true })], - }); + const buildOptions = createESBuildOptions(entryPoints, [ + ...developmentPlugins, + styleLoaderPlugin({ logger, watch: true }), + ]); const buildContext = await esbuild.context(buildOptions); @@ -228,14 +229,9 @@ async function doWatch() { } async function doBuild() { - logger.info(`🤖 Building entry points:\n\t${Object.keys(EntryPoint).join("\n\t")}`); + logger.info(`🤖 Building entry points:\n\t${entryPointsDescription}`); - const entryPoints = Object.values(EntryPoint); - - const buildOptions = createESBuildOptions({ - entryPoints, - plugins: [styleLoaderPlugin({ logger })], - }); + const buildOptions = createESBuildOptions(entryPoints, [styleLoaderPlugin({ logger })]); await esbuild.build(buildOptions); @@ -246,13 +242,9 @@ async function doProxy() { const entryPoints = [ EntryPoint.InterfaceStyles, EntryPoint.StaticStyles, - EntryPoint.FlowsStyles, + EntryPoint.FlowStyles, ]; - - const buildOptions = createESBuildOptions({ - entryPoints, - plugins: [styleLoaderPlugin({ logger })], - }); + const buildOptions = createESBuildOptions(entryPoints, [styleLoaderPlugin({ logger })]); await esbuild.build(buildOptions); logger.info("Proxy build complete"); @@ -269,8 +261,8 @@ async function delegateCommand() { case "--watch": return doWatch(); // There's no watch-for-proxy, sorry. - case "-p": - case "--proxy": + case "-s": + case "--styles-only": return doProxy(); default: return doBuild(); diff --git a/web/scripts/knip.config.ts b/web/scripts/knip.config.ts index 4235c29595..564148d642 100644 --- a/web/scripts/knip.config.ts +++ b/web/scripts/knip.config.ts @@ -2,14 +2,16 @@ import { type KnipConfig } from "knip"; const config: KnipConfig = { entry: [ - "./src/admin/AdminInterface/AdminInterface.ts", - "./src/user/UserInterface.ts", - "./src/flow/FlowInterface.ts", - "./src/standalone/api-browser/index.ts", - "./src/rac/index.ts", - "./src/standalone/loading/index.ts", - "./src/polyfill/poly.ts", + "./src/admin/index.entrypoint.ts", + "./src/user/index.entrypoint.ts", + "./src/flow/index.entrypoint.ts", + "./src/standalone/api-browser/index.entrypoint.ts", + "./src/rac/index.entrypoint.ts", + "./src/standalone/loading/index.entrypoint.ts", + "./src/polyfill/index.entrypoint.ts", ], + ignore: ["packages/client-ts/**", "out/**/*"], + project: ["src/**/*.ts", "src/**/*.js", "./scripts/*.mjs", ".storybook/*.ts"], // "ignore": ["src/**/*.test.ts", "src/**/*.stories.ts"], // Prevent Knip from complaining about web components, which export their classes but also diff --git a/web/scripts/lint-lockfile.sh b/web/scripts/lint-lockfile.sh deleted file mode 100755 index a845cf41ba..0000000000 --- a/web/scripts/lint-lockfile.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/env bash - -if ! command -v jq >/dev/null 2>&1 ; then - echo "This check requires the jq program be installed." - echo "To install jq, visit" - echo " https://jqlang.github.io/jq/" - exit 1 -fi - -CMD=$(jq -r '.packages | to_entries[] | select((.key | contains("node_modules")) and (.value | has("resolved") | not)) | .key' < "$1") - -if [ -n "$CMD" ]; then - echo "ERROR package-lock.json entries missing 'resolved' field:" - echo "" - # Shellcheck erroneously believes that shell string substitution can be used here, but that - # feature lacks a "start of line" discriminator. - # shellcheck disable=SC2001 - echo "$CMD" | sed 's/^/ /g' - echo "" - exit 1 -fi diff --git a/web/src/admin/AdminInterface/AboutModal.ts b/web/src/admin/AdminInterface/AboutModal.ts deleted file mode 100644 index 3693c90c99..0000000000 --- a/web/src/admin/AdminInterface/AboutModal.ts +++ /dev/null @@ -1,143 +0,0 @@ -import "#elements/EmptyState"; - -import { DEFAULT_CONFIG } from "#common/api/config"; -import { globalAK } from "#common/global"; - -import { ModalButton } from "#elements/buttons/ModalButton"; -import { WithBrandConfig } from "#elements/mixins/branding"; -import { WithLicenseSummary } from "#elements/mixins/license"; -import { ThemedImage } from "#elements/utils/images"; - -import { AdminApi, CapabilitiesEnum, LicenseSummaryStatusEnum } from "@goauthentik/api"; - -import { msg } from "@lit/localize"; -import { css, html, TemplateResult } from "lit"; -import { customElement } from "lit/decorators.js"; -import { createRef, ref } from "lit/directives/ref.js"; -import { until } from "lit/directives/until.js"; - -import PFAbout from "@patternfly/patternfly/components/AboutModalBox/about-modal-box.css"; - -@customElement("ak-about-modal") -export class AboutModal extends WithLicenseSummary(WithBrandConfig(ModalButton)) { - static styles = [ - ...ModalButton.styles, - PFAbout, - css` - .pf-c-about-modal-box { - --pf-c-about-modal-box--BackgroundColor: var(--pf-global--palette--black-900); - } - - .pf-c-about-modal-box__hero { - background-image: url("/static/dist/assets/images/flow_background.jpg"); - } - .pf-c-about-modal-box__brand { - --pf-c-about-modal-box__brand-image--Height: 6.25rem; - } - .pf-c-about-modal-box__brand i { - font-size: var(--pf-c-about-modal-box__brand-image--Height); - } - `, - ]; - - async getAboutEntries(): Promise<[string, string | TemplateResult][]> { - const status = await new AdminApi(DEFAULT_CONFIG).adminSystemRetrieve(); - const version = await new AdminApi(DEFAULT_CONFIG).adminVersionRetrieve(); - let build: string | TemplateResult = msg("Release"); - if (globalAK().config.capabilities.includes(CapabilitiesEnum.CanDebug)) { - build = msg("Development"); - } else if (version.buildHash !== "") { - build = html`
${version.buildHash}`; - } - return [ - [msg("Version"), version.versionCurrent], - [msg("UI Version"), import.meta.env.AK_VERSION], - [msg("Build"), build], - [msg("Python version"), status.runtime.pythonVersion], - [msg("Platform"), status.runtime.platform], - [msg("Kernel"), status.runtime.uname], - [ - msg("OpenSSL"), - `${status.runtime.opensslVersion} ${status.runtime.opensslFipsEnabled ? "FIPS" : ""}`, - ], - ]; - } - - #contentRef = createRef(); - - #backdropListener = (event: PointerEvent) => { - // We only want to close the modal when the backdrop is clicked, not when it's children are clicked. - - if (this.#contentRef.value?.contains(event.target as Node)) { - return; - } - this.close(); - }; - - protected override renderModal() { - let product = this.brandingTitle; - - if (this.licenseSummary?.status !== LicenseSummaryStatusEnum.Unlicensed) { - product += ` ${msg("Enterprise")}`; - } - return html`
-
- -
-
`; - } -} - -declare global { - interface HTMLElementTagNameMap { - "ak-about-modal": AboutModal; - } -} diff --git a/web/src/admin/AdminInterface/index.entrypoint.ts b/web/src/admin/AdminInterface/index.entrypoint.ts deleted file mode 100644 index 651aedc7f3..0000000000 --- a/web/src/admin/AdminInterface/index.entrypoint.ts +++ /dev/null @@ -1,226 +0,0 @@ -import "#admin/AdminInterface/AboutModal"; -import "#elements/banner/EnterpriseStatusBanner"; -import "#elements/banner/VersionBanner"; -import "#elements/messages/MessageContainer"; -import "#elements/router/RouterOutlet"; -import "#elements/sidebar/Sidebar"; -import "#elements/sidebar/SidebarItem"; - -import { - createAdminSidebarEnterpriseEntries, - createAdminSidebarEntries, - renderSidebarItems, -} from "./AdminSidebar.js"; - -import { isAPIResultReady } from "#common/api/responses"; -import { configureSentry } from "#common/sentry/index"; -import { isGuest } from "#common/users"; -import { WebsocketClient } from "#common/ws/WebSocketClient"; - -import { AuthenticatedInterface } from "#elements/AuthenticatedInterface"; -import { listen } from "#elements/decorators/listen"; -import { WithCapabilitiesConfig } from "#elements/mixins/capabilities"; -import { WithNotifications } from "#elements/mixins/notifications"; -import { canAccessAdmin, WithSession } from "#elements/mixins/session"; -import { AKDrawerChangeEvent } from "#elements/notifications/events"; -import { - DrawerState, - persistDrawerParams, - readDrawerParams, - renderNotificationDrawerPanel, -} from "#elements/notifications/utils"; - -import type { AboutModal } from "#admin/AdminInterface/AboutModal"; -import Styles from "#admin/AdminInterface/index.entrypoint.css"; -import { ROUTES } from "#admin/Routes"; - -import { CapabilitiesEnum } from "@goauthentik/api"; - -import { msg } from "@lit/localize"; -import { CSSResult, html, nothing, PropertyValues, TemplateResult } from "lit"; -import { customElement, eventOptions, property, query, state } from "lit/decorators.js"; -import { classMap } from "lit/directives/class-map.js"; - -import PFButton from "@patternfly/patternfly/components/Button/button.css"; -import PFDrawer from "@patternfly/patternfly/components/Drawer/drawer.css"; -import PFNav from "@patternfly/patternfly/components/Nav/nav.css"; -import PFPage from "@patternfly/patternfly/components/Page/page.css"; - -if (process.env.NODE_ENV === "development") { - await import("@goauthentik/esbuild-plugin-live-reload/client"); -} - -@customElement("ak-interface-admin") -export class AdminInterface extends WithCapabilitiesConfig( - WithNotifications(WithSession(AuthenticatedInterface)), -) { - //#region Styles - - public static readonly styles: CSSResult[] = [PFPage, PFButton, PFDrawer, PFNav, Styles]; - - //#endregion - - //#region Properties - - @query("ak-about-modal") - public aboutModal?: AboutModal; - - @property({ type: Boolean, reflect: true, attribute: "sidebar" }) - public sidebarOpen = false; - - //#endregion - - //#region Public Methods - - public toggleSidebar = () => { - this.sidebarOpen = !this.sidebarOpen; - }; - - //#endregion - - //#region Lifecycle - - #sidebarMatcher: MediaQueryList; - #sidebarMediaQueryListener = (event: MediaQueryListEvent) => { - this.sidebarOpen = event.matches; - }; - - @eventOptions({ passive: true }) - protected routeChangeListener() { - this.sidebarOpen = this.#sidebarMatcher.matches; - } - - @state() - protected drawer: DrawerState = readDrawerParams(); - - @listen(AKDrawerChangeEvent) - protected drawerListener = (event: AKDrawerChangeEvent) => { - this.drawer = event.drawer; - persistDrawerParams(event.drawer); - }; - - constructor() { - configureSentry(); - - super(); - - WebsocketClient.connect(); - - this.#sidebarMatcher = window.matchMedia("(width >= 1200px)"); - this.sidebarOpen = this.#sidebarMatcher.matches; - } - - public connectedCallback() { - super.connectedCallback(); - - this.#sidebarMatcher.addEventListener("change", this.#sidebarMediaQueryListener, { - passive: true, - }); - } - - public disconnectedCallback(): void { - super.disconnectedCallback(); - - this.#sidebarMatcher.removeEventListener("change", this.#sidebarMediaQueryListener); - - WebsocketClient.close(); - } - - public override updated(changedProperties: PropertyValues): void { - super.updated(changedProperties); - - if (changedProperties.has("session") && isAPIResultReady(this.session)) { - if (!isGuest(this.session.user) && !canAccessAdmin(this.session.user)) { - window.location.assign("/if/user/"); - } - } - } - - //#endregion - - //#region Rendering - - protected override render(): TemplateResult { - if (!isAPIResultReady(this.session) || !canAccessAdmin(this.session.user)) { - return html``; - } - - const sidebarClasses = { - "pf-c-page__sidebar": true, - "pf-m-expanded": this.sidebarOpen, - "pf-m-collapsed": !this.sidebarOpen, - }; - - const openDrawerCount = (this.drawer.notifications ? 1 : 0) + (this.drawer.api ? 1 : 0); - const drawerClasses = { - "pf-m-expanded": openDrawerCount !== 0, - "pf-m-collapsed": openDrawerCount === 0, - }; - - return html`
- - - - - - - - ${renderSidebarItems(createAdminSidebarEntries())} - ${this.can(CapabilitiesEnum.IsEnterprise) - ? renderSidebarItems(createAdminSidebarEnterpriseEntries()) - : nothing} - - -
-
-
-
-
- - -
-
- ${renderNotificationDrawerPanel(this.drawer)} - -
-
- -
-
-
`; - } - - //#endregion -} - -declare global { - interface HTMLElementTagNameMap { - "ak-interface-admin": AdminInterface; - } -} diff --git a/web/src/admin/Routes.ts b/web/src/admin/Routes.ts index fd4bf49e17..1c32fb8243 100644 --- a/web/src/admin/Routes.ts +++ b/web/src/admin/Routes.ts @@ -1,7 +1,5 @@ import "#admin/admin-overview/AdminOverviewPage"; -import { globalAK } from "#common/global"; - import { ID_REGEX, Route, SLUG_REGEX, UUID_REGEX } from "#elements/router/Route"; import { html } from "lit"; @@ -106,15 +104,15 @@ export const ROUTES: Route[] = [ return html``; }), new Route(new RegExp("^/identity/roles$"), async () => { - await import("#admin/roles/RoleListPage"); + await import("#admin/roles/ak-role-list"); return html``; }), new Route(new RegExp("^/identity/initial-permissions$"), async () => { - await import("#admin/rbac/InitialPermissionsListPage"); + await import("#admin/rbac/ak-initial-permissions-list"); return html``; }), new Route(new RegExp(`^/identity/roles/(?${UUID_REGEX})$`), async (args) => { - await import("#admin/roles/RoleViewPage"); + await import("#admin/roles/ak-role-view"); return html``; }), new Route(new RegExp("^/flow/stages/invitations$"), async () => { @@ -169,6 +167,10 @@ export const ROUTES: Route[] = [ await import("#admin/outposts/OutpostListPage"); return html``; }), + new Route(new RegExp(`^/outpost/outposts/(?${UUID_REGEX})$$`), async (args) => { + await import("#admin/outposts/OutpostViewPage"); + return html``; + }), new Route(new RegExp("^/outpost/integrations$"), async () => { await import("#admin/outposts/ServiceConnectionListPage"); return html``; @@ -190,7 +192,7 @@ export const ROUTES: Route[] = [ return html``; }), new Route(new RegExp("^/debug$"), async () => { - await import("#admin/DebugPage"); + await import("#admin/ak-admin-debug-page"); return html``; }), new Route(new RegExp("^/enterprise/licenses$"), async () => { @@ -198,14 +200,3 @@ export const ROUTES: Route[] = [ return html``; }), ]; - -/** - * Application route helpers. - * - * @TODO: This API isn't quite right yet. Revisit after the hash router is replaced. - */ -export const ApplicationRoute = { - EditURL(slug: string, base = globalAK().api.base) { - return `${base}if/admin/#/core/applications/${slug}`; - }, -} as const; diff --git a/web/src/admin/admin-overview/AdminOverviewPage.ts b/web/src/admin/admin-overview/AdminOverviewPage.ts index ed640f0f8a..6b6ddf09c0 100644 --- a/web/src/admin/admin-overview/AdminOverviewPage.ts +++ b/web/src/admin/admin-overview/AdminOverviewPage.ts @@ -103,7 +103,7 @@ export class AdminOverviewPage extends AdminOverviewBase { ${this.renderCards()}
- +

diff --git a/web/src/admin/admin-overview/SystemTasksPage.ts b/web/src/admin/admin-overview/SystemTasksPage.ts index ef3b6ceb1a..82242eccd2 100644 --- a/web/src/admin/admin-overview/SystemTasksPage.ts +++ b/web/src/admin/admin-overview/SystemTasksPage.ts @@ -4,6 +4,7 @@ import "#elements/buttons/SpinnerButton/index"; import "#elements/events/LogViewer"; import "#elements/tasks/ScheduleList"; import "#elements/tasks/TaskList"; +import "#admin/rbac/ObjectPermissionModal"; import "@patternfly/elements/pf-tooltip/pf-tooltip.js"; import { AKElement } from "#elements/Base"; diff --git a/web/src/admin/admin-overview/cards/RecentEventsCard.ts b/web/src/admin/admin-overview/cards/RecentEventsCard.ts index 79bd1569f2..5d47b492bf 100644 --- a/web/src/admin/admin-overview/cards/RecentEventsCard.ts +++ b/web/src/admin/admin-overview/cards/RecentEventsCard.ts @@ -5,17 +5,10 @@ import "#elements/buttons/Dropdown"; import "#elements/buttons/ModalButton"; import "#elements/buttons/SpinnerButton/index"; -import { DEFAULT_CONFIG } from "#common/api/config"; -import { EventWithContext } from "#common/events"; -import { actionToLabel } from "#common/labels"; - -import { PaginatedResponse, Table, TableColumn } from "#elements/table/Table"; -import { SlottedTemplateResult } from "#elements/types"; - import Styles from "#admin/admin-overview/cards/RecentEventsCard.css"; -import { EventGeo, renderEventUser } from "#admin/events/utils"; +import { SimpleEventTable } from "#admin/events/SimpleEventTable"; -import { Event, EventsApi } from "@goauthentik/api"; +import { EventsEventsListRequest } from "@goauthentik/api"; import { msg } from "@lit/localize"; import { CSSResult, html, TemplateResult } from "lit"; @@ -24,22 +17,20 @@ import { customElement, property } from "lit/decorators.js"; import PFCard from "@patternfly/patternfly/components/Card/card.css"; @customElement("ak-recent-events") -export class RecentEventsCard extends Table { +export class RecentEventsCard extends SimpleEventTable { public override role = "region"; public override ariaLabel = msg("Recent events"); public override label = msg("Events"); + public override expandable = false; + // Rough approximate based on admin overview card height + public override pageSize = 6; + @property() order = "-created"; - @property({ type: Number }) - pageSize = 10; - - async apiEndpoint(): Promise> { - return new EventsApi(DEFAULT_CONFIG).eventsEventsList({ - ...(await this.defaultEndpointConfig()), - pageSize: this.pageSize, - }); + async apiParameters(): Promise> { + return {}; } static styles: CSSResult[] = [ @@ -49,47 +40,12 @@ export class RecentEventsCard extends Table { Styles, ]; - protected override rowLabel(item: Event): string { - return actionToLabel(item.action); - } - - protected columns: TableColumn[] = [ - [msg("Action"), "action"], - [msg("User"), "user"], - [msg("Creation Date"), "created"], - [msg("Client IP"), "client_ip"], - ]; - renderToolbar(): TemplateResult { return html`

${msg("Recent events")}

`; } - - row(item: EventWithContext): SlottedTemplateResult[] { - return [ - html` - ${item.app}`, - renderEventUser(item), - html``, - html`
${item.clientIp || msg("-")}
- ${EventGeo(item)}`, - ]; - } - - renderEmpty(inner?: SlottedTemplateResult): TemplateResult { - if (this.error) { - return super.renderEmpty(inner); - } - - return super.renderEmpty( - html`${msg("No Events found.")} -
${msg("No matching events could be found.")}
-
`, - ); - } } declare global { diff --git a/web/src/admin/admin-settings/AdminSettingsFooterLinks.ts b/web/src/admin/admin-settings/AdminSettingsFooterLinks.ts index 0f036c32ab..bd0f96f67c 100644 --- a/web/src/admin/admin-settings/AdminSettingsFooterLinks.ts +++ b/web/src/admin/admin-settings/AdminSettingsFooterLinks.ts @@ -1,4 +1,4 @@ -import { AkControlElement } from "#elements/AkControlElement"; +import { AKControlElement } from "#elements/ControlElement"; import { type Spread } from "#elements/types"; import { ifPresent } from "#elements/utils/attributes"; @@ -22,7 +22,7 @@ const hasLegalScheme = (url: string) => LEGAL_SCHEMES.some((scheme) => url.substr(0, scheme.length).toLowerCase() === scheme); @customElement("ak-admin-settings-footer-link") -export class FooterLinkInput extends AkControlElement { +export class FooterLinkInput extends AKControlElement { static styles = [ PFInputGroup, PFFormControl, @@ -43,14 +43,17 @@ export class FooterLinkInput extends AkControlElement { @queryAll(".ak-form-control") controls?: HTMLInputElement[]; - json() { + @property({ type: String }) + public name: string | null = null; + + toJSON(): FooterLink { return Object.fromEntries( Array.from(this.controls ?? []).map((control) => [control.name, control.value]), ) as unknown as FooterLink; } - get isValid() { - const href = this.json()?.href ?? ""; + get valid() { + const href = this.toJSON()?.href ?? ""; return hasLegalScheme(href) && URL.canParse(href); } diff --git a/web/src/admin/admin-settings/AdminSettingsForm.ts b/web/src/admin/admin-settings/AdminSettingsForm.ts index 84440fa5b6..44d6b01fca 100644 --- a/web/src/admin/admin-settings/AdminSettingsForm.ts +++ b/web/src/admin/admin-settings/AdminSettingsForm.ts @@ -8,17 +8,19 @@ import "#elements/forms/Radio"; import "#elements/forms/SearchSelect/index"; import "#elements/utils/TimeDeltaHelp"; import "./AdminSettingsFooterLinks.js"; +import "#elements/Alert"; import { akFooterLinkInput, IFooterLinkInput } from "./AdminSettingsFooterLinks.js"; import { DEFAULT_CONFIG } from "#common/api/config"; import { Form } from "#elements/forms/Form"; +import { SlottedTemplateResult } from "#elements/types"; import { AdminApi, FooterLink, Settings, SettingsRequest } from "@goauthentik/api"; import { msg } from "@lit/localize"; -import { css, CSSResult, html, TemplateResult } from "lit"; +import { css, CSSResult, html } from "lit"; import { customElement, property } from "lit/decorators.js"; import { ifDefined } from "lit/directives/if-defined.js"; @@ -56,7 +58,20 @@ export class AdminSettingsForm extends Form { return result; } - protected override renderForm(): TemplateResult { + public override submitLabel = msg("Save changes"); + + public override renderHeader() { + return html`
+

${msg("Edit Settings")}

+
${this.renderSubmitButton()}
+
`; + } + + public override renderActions(): SlottedTemplateResult { + return null; + } + + protected override renderForm(): SlottedTemplateResult { const { settings } = this; return html` @@ -273,6 +288,18 @@ export class AdminSettingsForm extends Form { help=${msg( "When enabled, other flow tabs in a session will refresh upon a successful authentication.", )} + .bighelp=${html` + ${msg("This flag is deprecated.")} + `} + > + + { name="flags.flowsContinuousLogin" ?checked=${settings?.flags.flowsContinuousLogin ?? false} label=${msg("Continuous Login")} + help=${msg( + "Upon successful authentication, re-start authentication in other open tabs.", + )} >
diff --git a/web/src/admin/admin-settings/AdminSettingsPage.ts b/web/src/admin/admin-settings/AdminSettingsPage.ts index 556fdb9c22..bfc90f452c 100644 --- a/web/src/admin/admin-settings/AdminSettingsPage.ts +++ b/web/src/admin/admin-settings/AdminSettingsPage.ts @@ -1,5 +1,5 @@ import "#admin/admin-settings/AdminSettingsForm"; -import "#components/events/ObjectChangelog"; +import "#admin/events/ObjectChangelog"; import "#elements/CodeMirror"; import "#elements/EmptyState"; import "#elements/Tabs"; @@ -66,19 +66,18 @@ export class AdminSettingsPage extends AKElement { if (!this.settings) return nothing; return html` -
+
-
+ `; } diff --git a/web/src/admin/admin-settings/stories/AdminSettingsFooterLinks.stories.ts b/web/src/admin/admin-settings/stories/AdminSettingsFooterLinks.stories.ts index c604110fac..5776c1454d 100644 --- a/web/src/admin/admin-settings/stories/AdminSettingsFooterLinks.stories.ts +++ b/web/src/admin/admin-settings/stories/AdminSettingsFooterLinks.stories.ts @@ -34,7 +34,7 @@ const metadata: Meta = { return; } const target = event.target as FooterLinkInput; - messages!.innerText = `${JSON.stringify(target.json(), null, 2)}\n\nValid: ${target.isValid ? "Yes" : "No"}`; + messages!.innerText = `${JSON.stringify(target.toJSON(), null, 2)}\n\nValid: ${target.valid ? "Yes" : "No"}`; }); }, 250); diff --git a/web/src/elements/stories/ak-array-input.stories.ts b/web/src/admin/admin-settings/stories/ak-array-input.stories.ts similarity index 95% rename from web/src/elements/stories/ak-array-input.stories.ts rename to web/src/admin/admin-settings/stories/ak-array-input.stories.ts index f5f030c81f..da9c995d8b 100644 --- a/web/src/elements/stories/ak-array-input.stories.ts +++ b/web/src/admin/admin-settings/stories/ak-array-input.stories.ts @@ -1,8 +1,8 @@ import "#admin/admin-settings/AdminSettingsFooterLinks"; import "#elements/messages/MessageContainer"; -import "../ak-array-input.js"; +import "#elements/ak-array-input"; -import { IArrayInput } from "../ak-array-input.js"; +import { IArrayInput } from "#elements/ak-array-input"; import { FooterLinkInput } from "#admin/admin-settings/AdminSettingsFooterLinks"; @@ -40,7 +40,7 @@ const metadata: Meta> = { return; } const target = event.target as FooterLinkInput; - messages!.innerText = `${JSON.stringify(target.json(), null, 2)}\n\nValid: ${target.isValid ? "Yes" : "No"}`; + messages!.innerText = `${JSON.stringify(target.toJSON(), null, 2)}\n\nValid: ${target.valid ? "Yes" : "No"}`; }); }, 250); diff --git a/web/src/admin/ak-about-modal.ts b/web/src/admin/ak-about-modal.ts new file mode 100644 index 0000000000..be67d50450 --- /dev/null +++ b/web/src/admin/ak-about-modal.ts @@ -0,0 +1,245 @@ +import "#elements/ak-progress-bar"; + +import { DEFAULT_CONFIG } from "#common/api/config"; +import { globalAK } from "#common/global"; + +import { asInvoker } from "#elements/dialogs"; +import { AKModal } from "#elements/dialogs/ak-modal"; +import { WithBrandConfig } from "#elements/mixins/branding"; +import { WithLicenseSummary } from "#elements/mixins/license"; +import { SlottedTemplateResult } from "#elements/types"; +import { DefaultFlowBackground, ThemedImage } from "#elements/utils/images"; + +import { + AdminApi, + CapabilitiesEnum, + LicenseSummaryStatusEnum, + SystemInfo, + Version, +} from "@goauthentik/api"; + +import { msg } from "@lit/localize"; +import { css, html } from "lit"; +import { ref } from "lit-html/directives/ref.js"; +import { styleMap } from "lit-html/directives/style-map.js"; +import { until } from "lit-html/directives/until.js"; +import { customElement, state } from "lit/decorators.js"; + +import PFAbout from "@patternfly/patternfly/components/AboutModalBox/about-modal-box.css"; + +type AboutEntry = [label: string, content?: SlottedTemplateResult]; + +function renderEntry([label, content = null]: AboutEntry): SlottedTemplateResult { + return html`
${label}
+
${content === null ? msg("Loading...") : content}
`; +} + +@customElement("ak-about-modal") +export class AboutModal extends WithLicenseSummary(WithBrandConfig(AKModal)) { + public override formatARIALabel = () => msg("About authentik"); + + public static hostStyles = [ + ...AKModal.hostStyles, + css` + .ak-c-dialog:has(ak-about-modal) { + --ak-c-dialog--BackgroundColor: var(--pf-global--palette--black-900); + --ak-c-dialog--BorderColor: var(--pf-global--palette--black-600); + } + `, + ]; + + public static styles = [ + ...AKModal.styles, + PFAbout, + css` + .pf-c-about-modal-box { + --pf-c-about-modal-box--BackgroundColor: var(--ak-c-dialog--BackgroundColor); + width: unset; + height: 100%; + max-height: unset; + max-width: unset; + z-index: unset; + position: unset; + box-shadow: unset; + } + + [part="brand"] { + position: relative; + } + + [part="loading-bar"] { + position: absolute; + z-index: 1; + inset-block-start: 0; + inset-inline: 0; + } + `, + ]; + + public static ariaLabel = msg("About authentik"); + + public static open = asInvoker(AboutModal); + + #api = new AdminApi(DEFAULT_CONFIG); + + protected canDebug = globalAK().config.capabilities.includes(CapabilitiesEnum.CanDebug); + + @state() + protected version: Version | null = null; + + @state() + protected systemInfo: SystemInfo | null = null; + + @state() + protected refreshPromise: Promise<[Version, SystemInfo]> | null = null; + + public refresh = (): void => { + const versionPromise = this.#api.adminVersionRetrieve(); + const systemInfoPromise = this.#api.adminSystemRetrieve(); + + this.refreshPromise = Promise.all([versionPromise, systemInfoPromise]).then((result) => { + this.version = result[0]; + this.systemInfo = result[1]; + + return result; + }); + }; + + public connectedCallback(): void { + super.connectedCallback(); + this.refresh(); + } + + protected renderVersionInfo = () => { + const { version } = this; + + let build: SlottedTemplateResult = null; + + if (this.canDebug) { + build = msg("Development"); + } else if (version?.buildHash) { + build = html`${version.buildHash}`; + } else if (version) { + build = msg("Release"); + } + + const entries: AboutEntry[] = [ + [msg("Server Version"), version?.versionCurrent], + [msg("Build"), build], + ]; + + return entries.map(renderEntry); + }; + + protected renderSystemInfo = () => { + const { runtime } = this.systemInfo || {}; + + const sslLabel = runtime + ? `${runtime.opensslVersion} ${runtime.opensslFipsEnabled ? "FIPS" : ""}` + : null; + + const entries: AboutEntry[] = [ + [msg("Python version"), runtime?.pythonVersion], + [msg("Platform"), runtime?.platform], + [msg("OpenSSL"), sslLabel], + [ + msg("Kernel"), + runtime?.uname ?? html`
${msg("Loading...")}
`, + ], + ]; + + return entries.map(renderEntry); + }; + + //#region Renderers + + protected override renderCloseButton() { + return null; + } + + protected renderLoadingBar(): SlottedTemplateResult { + return until( + this.refreshPromise?.then(() => null), + html``, + ); + } + + protected override render() { + let product = this.brandingTitle; + + if (this.licenseSummary?.status !== LicenseSummaryStatusEnum.Unlicensed) { + product += ` ${msg("Enterprise")}`; + } + + return html`
+
+ +
+
+ ${this.renderLoadingBar()} + ${ThemedImage({ + src: this.brandingFavicon, + alt: msg("authentik Logo"), + className: "pf-c-about-modal-box__brand-image", + theme: this.activeTheme, + themedUrls: this.brandingFaviconThemedUrls, + })} +
+
+

${product}

+
+
+
+
+
+
+
${msg("UI Version")}
+
${import.meta.env.AK_VERSION}
+ ${until( + this.refreshPromise?.then(this.renderVersionInfo), + this.renderVersionInfo(), + )} + ${until( + this.refreshPromise?.then(this.renderSystemInfo), + this.renderSystemInfo(), + )} +
+
+
+

+
+
`; + } + + //#endregion +} + +declare global { + interface HTMLElementTagNameMap { + "ak-about-modal": AboutModal; + } +} diff --git a/web/src/admin/DebugPage.ts b/web/src/admin/ak-admin-debug-page.ts similarity index 100% rename from web/src/admin/DebugPage.ts rename to web/src/admin/ak-admin-debug-page.ts diff --git a/web/src/admin/AdminInterface/index.entrypoint.css b/web/src/admin/ak-interface-admin.css similarity index 88% rename from web/src/admin/AdminInterface/index.entrypoint.css rename to web/src/admin/ak-interface-admin.css index d5fb6420c2..783e80255b 100644 --- a/web/src/admin/AdminInterface/index.entrypoint.css +++ b/web/src/admin/ak-interface-admin.css @@ -34,3 +34,9 @@ ak-sidebar-item:active ak-sidebar-item::part(list-item) { .pf-c-drawer__panel { background-color: transparent !important; } + +.command-palette-trigger { + cursor: pointer; + + padding-inline-end: var(--pf-global--spacer--sm); +} diff --git a/web/src/admin/ak-interface-admin.ts b/web/src/admin/ak-interface-admin.ts new file mode 100644 index 0000000000..e185684b49 --- /dev/null +++ b/web/src/admin/ak-interface-admin.ts @@ -0,0 +1,365 @@ +import "#elements/banner/EnterpriseStatusBanner"; +import "#elements/banner/VersionBanner"; +import "#elements/sidebar/Sidebar"; +import "#elements/sidebar/SidebarItem"; +import "#elements/router/RouterOutlet"; +import "#elements/commands/ak-command-palette"; +import "#elements/commands/ak-command-palette-user-modal"; + +import { + createAdminSidebarEnterpriseEntries, + createAdminSidebarEntries, + renderSidebarItems, + SidebarEntry, +} from "./navigation/sidebar.js"; + +import { isAPIResultReady } from "#common/api/responses"; +import { configureSentry } from "#common/sentry/index"; +import { isGuest } from "#common/users"; +import { WebsocketClient } from "#common/ws/WebSocketClient"; + +import { AuthenticatedInterface } from "#elements/AuthenticatedInterface"; +import { + CommandPrefix, + PaletteCommandDefinitionInit, + PaletteCommandNamespace, +} from "#elements/commands/shared"; +import { listen } from "#elements/decorators/listen"; +import { renderDialog } from "#elements/dialogs"; +import { WithCapabilitiesConfig } from "#elements/mixins/capabilities"; +import { WithNotifications } from "#elements/mixins/notifications"; +import { canAccessAdmin, WithSession } from "#elements/mixins/session"; +import { AKDrawerChangeEvent } from "#elements/notifications/events"; +import { + DrawerState, + persistDrawerParams, + readDrawerParams, + renderNotificationDrawerPanel, +} from "#elements/notifications/utils"; +import { navigate } from "#elements/router/RouterOutlet"; +import { SlottedTemplateResult } from "#elements/types"; + +import Styles from "#admin/ak-interface-admin.css"; +import { ROUTES } from "#admin/Routes"; + +import { CapabilitiesEnum } from "@goauthentik/api"; + +import { LOCALE_STATUS_EVENT, LocaleStatusEventDetail, msg } from "@lit/localize"; +import { CSSResult, html, nothing, PropertyValues, TemplateResult } from "lit"; +import { customElement, eventOptions, property, state } from "lit/decorators.js"; +import { classMap } from "lit/directives/class-map.js"; +import { guard } from "lit/directives/guard.js"; + +import PFBanner from "@patternfly/patternfly/components/Banner/banner.css"; +import PFButton from "@patternfly/patternfly/components/Button/button.css"; +import PFDrawer from "@patternfly/patternfly/components/Drawer/drawer.css"; +import PFNav from "@patternfly/patternfly/components/Nav/nav.css"; +import PFPage from "@patternfly/patternfly/components/Page/page.css"; + +@customElement("ak-interface-admin") +export class AdminInterface extends WithCapabilitiesConfig( + WithNotifications(WithSession(AuthenticatedInterface)), +) { + //#region Styles + + public static readonly styles: CSSResult[] = [ + PFPage, + PFButton, + PFDrawer, + PFNav, + PFBanner, + Styles, + ]; + + //#endregion + + //#region Public Properties + + @property({ type: Boolean, reflect: true, attribute: "sidebar" }) + public sidebarOpen = false; + + @property({ type: Array }) + public entries: readonly SidebarEntry[] = createAdminSidebarEntries(); + + //#endregion + + //#region Public Methods + + public toggleSidebar = () => { + this.sidebarOpen = !this.sidebarOpen; + }; + + public synchronizeSidebarEntries = () => { + this.logger.debug("Synchronizing sidebar entries with current locale"); + this.entries = createAdminSidebarEntries(); + }; + + //#endregion + + //#region Event Listeners + + #sidebarMatcher: MediaQueryList; + #sidebarMediaQueryListener = (event: MediaQueryListEvent) => { + this.sidebarOpen = event.matches; + }; + + @eventOptions({ passive: true }) + protected routeChangeListener() { + this.sidebarOpen = this.#sidebarMatcher.matches; + } + + @state() + protected drawer: DrawerState = readDrawerParams(); + + @listen(AKDrawerChangeEvent, { target: window }) + protected drawerListener = (event: AKDrawerChangeEvent) => { + this.drawer = event.drawer; + persistDrawerParams(event.drawer); + }; + + @listen(LOCALE_STATUS_EVENT, { target: window }) + localeStatusListener = (event: CustomEvent) => { + if (event.detail.status === "ready") { + this.synchronizeSidebarEntries(); + } + }; + + //#endregion + + //#region Lifecycle + + constructor() { + configureSentry(); + + super(); + + WebsocketClient.connect(); + + this.#sidebarMatcher = window.matchMedia("(width > 1210px)"); + this.sidebarOpen = this.#sidebarMatcher.matches; + } + + #refreshCommandsFrameID = -1; + + #refreshCommands = () => { + const commands: PaletteCommandDefinitionInit[] = [ + { + label: msg("Create a new application..."), + action: () => navigate("/core/applications", { createWizard: true }), + group: msg("Applications"), + }, + { + namespace: PaletteCommandNamespace.Navigation, + label: msg("Check the logs"), + action: () => navigate("/events/log"), + group: msg("Events"), + }, + { + namespace: PaletteCommandNamespace.Navigation, + label: msg("Manage users"), + action: () => navigate("/identity/users"), + group: msg("Users"), + }, + ...this.entries.flatMap(([, label, , children]) => [ + ...(children ?? []).map( + ([path, childLabel]): PaletteCommandDefinitionInit => ({ + namespace: PaletteCommandNamespace.Navigation, + label: childLabel, + group: label, + action: () => { + navigate(path!); + }, + }), + ), + ]), + { + namespace: PaletteCommandNamespace.Search, + label: msg("Username or email address..."), + prefix: CommandPrefix.SearchFor(), + group: msg("Users"), + keywords: [msg("search"), msg("find")], + action: async (data, event) => { + event?.stopPropagation(); + + const userPalette = this.ownerDocument.createElement( + "ak-command-palette-user-modal", + ); + + renderDialog(userPalette, { + parentElement: this, + }); + + userPalette.show(); + }, + }, + ]; + + this.commandPalette.modal.setCommands( + commands.map((command) => ({ namespace: PaletteCommandNamespace.Action, ...command })), + ); + }; + + public connectedCallback() { + super.connectedCallback(); + + this.#sidebarMatcher.addEventListener("change", this.#sidebarMediaQueryListener, { + passive: true, + }); + } + + public disconnectedCallback(): void { + super.disconnectedCallback(); + + cancelAnimationFrame(this.#refreshCommandsFrameID); + + this.#sidebarMatcher.removeEventListener("change", this.#sidebarMediaQueryListener); + + WebsocketClient.close(); + } + + public firstUpdated(changedProperties: PropertyValues): void { + super.firstUpdated(changedProperties); + + this.#refreshCommandsFrameID = requestAnimationFrame(this.#refreshCommands); + } + + public override updated(changedProperties: PropertyValues): void { + super.updated(changedProperties); + + if (changedProperties.has("session") && isAPIResultReady(this.session)) { + if (!isGuest(this.session.user) && !canAccessAdmin(this.session.user)) { + window.location.assign("/if/user/"); + } + } + } + + //#endregion + + //#region Rendering + + protected override render(): TemplateResult { + if (!isAPIResultReady(this.session) || !canAccessAdmin(this.session.user)) { + return html``; + } + + const sidebarClasses = { + "pf-c-page__sidebar": true, + "pf-m-expanded": this.sidebarOpen, + "pf-m-collapsed": !this.sidebarOpen, + }; + + const openDrawerCount = (this.drawer.notifications ? 1 : 0) + (this.drawer.api ? 1 : 0); + const drawerClasses = { + "pf-m-expanded": openDrawerCount !== 0, + "pf-m-collapsed": openDrawerCount === 0, + }; + + return html`
+ + + + ${this.renderCommandPaletteButton()} + + + + + ${renderSidebarItems(this.entries)} + ${this.can(CapabilitiesEnum.IsEnterprise) + ? renderSidebarItems(createAdminSidebarEnterpriseEntries()) + : nothing} + + +
+
+
+
+
+ + +
+
+ ${renderNotificationDrawerPanel(this.drawer)} +
+
+ +
+
+
+ ${this.commandPalette}`; + } + + protected renderCommandPaletteButton(): SlottedTemplateResult { + return guard([this.commandPalette.showListener], () => { + const macOS = navigator.platform.toUpperCase().indexOf("MAC") >= 0; + + const primaryModifierKey = macOS ? "⌘" : "Ctrl"; + + return html``; + }); + } + + //#endregion +} + +declare global { + interface HTMLElementTagNameMap { + "ak-interface-admin": AdminInterface; + } +} diff --git a/web/src/admin/applications/ApplicationCheckAccessForm.ts b/web/src/admin/applications/ApplicationCheckAccessForm.ts index d9fb817fc5..df7c4a5aa5 100644 --- a/web/src/admin/applications/ApplicationCheckAccessForm.ts +++ b/web/src/admin/applications/ApplicationCheckAccessForm.ts @@ -4,8 +4,12 @@ import "#elements/forms/HorizontalFormElement"; import "#elements/forms/SearchSelect/index"; import { DEFAULT_CONFIG } from "#common/api/config"; +import { PFSize } from "#common/enums"; +import { APIMessage, MessageLevel } from "#common/messages"; import { Form } from "#elements/forms/Form"; +import { SlottedTemplateResult } from "#elements/types"; +import { ifPresent } from "#elements/utils/attributes"; import { Application, @@ -16,13 +20,24 @@ import { } from "@goauthentik/api"; import { msg } from "@lit/localize"; -import { CSSResult, html, nothing, TemplateResult } from "lit"; +import { CSSResult, html } from "lit"; import { customElement, property } from "lit/decorators.js"; import PFDescriptionList from "@patternfly/patternfly/components/DescriptionList/description-list.css"; @customElement("ak-application-check-access-form") export class ApplicationCheckAccessForm extends Form<{ forUser: number }> { + public static override verboseName = msg("Access"); + public static override submitVerb = msg("Check"); + public static override createLabel = msg("Check"); + public static override submittingVerb = msg("Checking"); + + static styles: CSSResult[] = [...super.styles, PFDescriptionList]; + + #api = new CoreApi(DEFAULT_CONFIG); + + public override size = PFSize.XLarge; + @property({ attribute: false }) public application!: Application; @@ -30,19 +45,27 @@ export class ApplicationCheckAccessForm extends Form<{ forUser: number }> { public result: PolicyTestResult | null = null; @property({ attribute: false }) - public request?: number; + public request: number | null = null; - getSuccessMessage(): string { - return msg("Successfully sent test-request."); + public override formatAPISuccessMessage(): APIMessage { + return { + level: MessageLevel.success, + message: msg("Successfully sent test-request."), + }; } - async send(data: { forUser: number }): Promise { + protected override send(data: { forUser: number }): Promise { this.request = data.forUser; - const result = await new CoreApi(DEFAULT_CONFIG).coreApplicationsCheckAccessRetrieve({ - slug: this.application?.slug, - forUser: data.forUser, - }); - return (this.result = result); + + return this.#api + .coreApplicationsCheckAccessRetrieve({ + slug: this.application?.slug, + forUser: data.forUser, + }) + .then((result) => { + this.result = result; + return result; + }); } public override reset(): void { @@ -50,15 +73,14 @@ export class ApplicationCheckAccessForm extends Form<{ forUser: number }> { this.result = null; } - static styles: CSSResult[] = [...super.styles, PFDescriptionList]; + protected renderResult(): SlottedTemplateResult { + const { passing, messages = [], logMessages = [] } = this.result || {}; - renderResult(): TemplateResult { - return html` - + return html`
- +
@@ -67,60 +89,56 @@ export class ApplicationCheckAccessForm extends Form<{ forUser: number }> {
    - ${(this.result?.messages || []).length > 0 - ? this.result?.messages?.map((m) => { - return html`
  • - ${m} -
  • `; - }) - : html`
  • - - -
  • `} + ${messages.map((m) => { + return html`
  • + ${m} +
  • `; + })}
-
-
-
- -
-
-
-
- `; + +
`; } - protected override renderForm(): TemplateResult { + protected override renderForm(): SlottedTemplateResult { return html` => { const args: CoreUsersListRequest = { ordering: "username", }; - if (query !== undefined) { + + if (query) { args.search = query; } - const users = await new CoreApi(DEFAULT_CONFIG).coreUsersList(args); + + const users = await this.#api.coreUsersList(args); + return users.results; }} .renderElement=${(user: User): string => { return user.username; }} - .renderDescription=${(user: User): TemplateResult => { + .renderDescription=${(user: User): SlottedTemplateResult => { return html`${user.name}`; }} .value=${(user: User | undefined): number | undefined => { return user?.pk; }} .selected=${(user: User): boolean => { - return user.pk.toString() === this.request?.toString(); + return ( + typeof this.request === "number" && + user.pk.toString() === this.request.toString() + ); }} > - ${this.result ? this.renderResult() : nothing}`; + ${this.renderResult()}`; } } diff --git a/web/src/admin/applications/ApplicationEvents.ts b/web/src/admin/applications/ApplicationEvents.ts new file mode 100644 index 0000000000..a6880a93eb --- /dev/null +++ b/web/src/admin/applications/ApplicationEvents.ts @@ -0,0 +1,25 @@ +import "#components/ak-event-info"; + +import { SimpleEventTable } from "#admin/events/SimpleEventTable"; + +import { EventsEventsListRequest } from "@goauthentik/api"; + +import { customElement, property } from "lit/decorators.js"; + +@customElement("ak-events-application") +export class ApplicationEvents extends SimpleEventTable { + @property({ attribute: "application-id" }) + applicationId!: string; + + async apiParameters(): Promise> { + return { + contextAuthorizedApp: this.applicationId.replaceAll("-", ""), + }; + } +} + +declare global { + interface HTMLElementTagNameMap { + "ak-events-application": ApplicationEvents; + } +} diff --git a/web/src/admin/applications/ApplicationForm.ts b/web/src/admin/applications/ApplicationForm.ts index e03470670f..fbb70574de 100644 --- a/web/src/admin/applications/ApplicationForm.ts +++ b/web/src/admin/applications/ApplicationForm.ts @@ -1,4 +1,4 @@ -import "#admin/applications/ProviderSelectModal"; +import "@patternfly/elements/pf-tooltip/pf-tooltip.js"; import "#components/ak-file-search-input"; import "#components/ak-radio-input"; import "#components/ak-slug-input"; @@ -11,9 +11,9 @@ import "#elements/forms/HorizontalFormElement"; import "#elements/forms/ModalForm"; import "#elements/forms/Radio"; import "#elements/forms/SearchSelect/ak-search-select"; -import "@patternfly/elements/pf-tooltip/pf-tooltip.js"; -import "./components/ak-backchannel-input.js"; -import "./components/ak-provider-search-input.js"; +import "#admin/applications/ak-provider-table"; +import "#admin/applications/components/ak-backchannel-input"; +import "#admin/applications/components/ak-provider-search-input"; import { DEFAULT_CONFIG } from "#common/api/config"; @@ -24,10 +24,10 @@ import { ifPresent } from "#elements/utils/attributes"; import { policyEngineModes } from "#admin/policies/PolicyEngineModes"; -import { AdminFileListUsageEnum, Application, CoreApi, Provider } from "@goauthentik/api"; +import { Application, CoreApi, Provider, UsageEnum } from "@goauthentik/api"; import { msg } from "@lit/localize"; -import { html, nothing, TemplateResult } from "lit"; +import { html, TemplateResult } from "lit"; import { customElement, property, state } from "lit/decorators.js"; import { ifDefined } from "lit/directives/if-defined.js"; @@ -40,6 +40,9 @@ import { ifDefined } from "lit/directives/if-defined.js"; export class ApplicationForm extends WithCapabilitiesConfig(ModelForm) { #api = new CoreApi(DEFAULT_CONFIG); + public static override verboseName = msg("Application"); + public static override verboseNamePlural = msg("Applications"); + protected override async loadInstance(pk: string): Promise { const app = await this.#api.coreApplicationsRetrieve({ slug: pk, @@ -51,7 +54,7 @@ export class ApplicationForm extends WithCapabilitiesConfig(ModelForm${alertMsg}`} + ${this.instance || this.provider + ? null + : html`${alertMsg}`} + + `; } + + //#endregion } declare global { diff --git a/web/src/admin/applications/ApplicationListPage.css b/web/src/admin/applications/ApplicationListPage.css new file mode 100644 index 0000000000..a78a7def9f --- /dev/null +++ b/web/src/admin/applications/ApplicationListPage.css @@ -0,0 +1,10 @@ +tr td:first-child { + width: auto; + min-width: 0px; + text-align: center; + vertical-align: middle; +} + +.pf-c-sidebar.pf-m-gutter > .pf-c-sidebar__main > * + * { + margin-left: calc(var(--pf-c-sidebar__main--child--MarginLeft) / 2); +} diff --git a/web/src/admin/applications/ApplicationListPage.ts b/web/src/admin/applications/ApplicationListPage.ts index 5933ba19de..f888e8351c 100644 --- a/web/src/admin/applications/ApplicationListPage.ts +++ b/web/src/admin/applications/ApplicationListPage.ts @@ -1,15 +1,16 @@ +import "@patternfly/elements/pf-tooltip/pf-tooltip.js"; import "#elements/forms/ConfirmationForm"; -import "#admin/applications/ApplicationForm"; import "#elements/AppIcon"; import "#elements/ak-mdx/ak-mdx"; import "#elements/buttons/SpinnerButton/ak-spinner-button"; import "#elements/forms/DeleteBulkForm"; import "#elements/forms/ModalForm"; -import "@patternfly/elements/pf-tooltip/pf-tooltip.js"; -import "./ApplicationWizardHint.js"; +import "#elements/dialogs/ak-modal"; +import "#admin/applications/ApplicationForm"; import { DEFAULT_CONFIG } from "#common/api/config"; +import { IconEditButton } from "#elements/dialogs"; import { WithBrandConfig } from "#elements/mixins/branding"; import { getURLParam } from "#elements/router/RouteMatch"; import { PaginatedResponse, TableColumn } from "#elements/table/Table"; @@ -17,36 +18,36 @@ import { TablePage } from "#elements/table/TablePage"; import { SlottedTemplateResult } from "#elements/types"; import { ifPresent } from "#elements/utils/attributes"; +import { ApplicationForm } from "#admin/applications/ApplicationForm"; +import Styles from "#admin/applications/ApplicationListPage.css"; +import { AKApplicationWizard } from "#admin/applications/wizard/ak-application-wizard"; + import { Application, CoreApi, PoliciesApi } from "@goauthentik/api"; import MDApplication from "~docs/add-secure-apps/applications/index.md"; import { msg, str } from "@lit/localize"; -import { css, CSSResult, html, nothing, TemplateResult } from "lit"; +import { css, CSSResult, html, nothing, PropertyValues, TemplateResult } from "lit"; import { customElement, property } from "lit/decorators.js"; import PFCard from "@patternfly/patternfly/components/Card/card.css"; -export const applicationListStyle = css` - /* Fix alignment issues with images in tables */ - .pf-c-table tbody > tr > * { - vertical-align: middle; - } - tr td:first-child { - width: auto; - min-width: 0px; - text-align: center; - vertical-align: middle; - } - .pf-c-sidebar.pf-m-gutter > .pf-c-sidebar__main > * + * { - margin-left: calc(var(--pf-c-sidebar__main--child--MarginLeft) / 2); - } -`; +export const applicationListStyle = css``; @customElement("ak-application-list") export class ApplicationListPage extends WithBrandConfig(TablePage) { + public static styles: CSSResult[] = [ + // --- + ...TablePage.styles, + PFCard, + Styles, + ]; + protected override searchEnabled = true; public pageTitle = msg("Applications"); + public searchLabel = msg("Applications search"); + public searchPlaceholder = msg("Search for application by name, group or provider..."); + public get pageDescription() { return msg( str`External applications that use ${this.brandingTitle} as an identity provider via protocols like OAuth2 and SAML. All applications are shown here, even ones you cannot access.`, @@ -54,11 +55,11 @@ export class ApplicationListPage extends WithBrandConfig(TablePage) } public pageIcon = "pf-icon pf-icon-applications"; - checkbox = true; - clearOnRefresh = true; + public override checkbox = true; + public override clearOnRefresh = true; @property() - order = "name"; + public order = "name"; async apiEndpoint(): Promise> { return new CoreApi(DEFAULT_CONFIG).coreApplicationsList({ @@ -67,7 +68,15 @@ export class ApplicationListPage extends WithBrandConfig(TablePage) }); } - static styles: CSSResult[] = [...TablePage.styles, PFCard, applicationListStyle]; + public override firstUpdated(changed: PropertyValues): void { + super.firstUpdated(changed); + + if (getURLParam("createWizard", false)) { + AKApplicationWizard.showModal(); + } else if (getURLParam("createForm", false)) { + ApplicationForm.showModal(); + } + } protected columns: TableColumn[] = [ ["", undefined, msg("Application Icon")], @@ -91,7 +100,7 @@ export class ApplicationListPage extends WithBrandConfig(TablePage) `; } - renderToolbarSelected(): TemplateResult { + protected override renderToolbarSelected(): TemplateResult { const disabled = this.selectedElements.length < 1; return html`) `; } - row(item: Application): SlottedTemplateResult[] { + protected row(item: Application): SlottedTemplateResult[] { return [ html`) ` : html`-`, html`${item.providerObj?.verboseName || msg("-")}`, - html`
- - ${msg("Update")} - ${msg("Update Application")} - - - - + html`
+ ${IconEditButton(ApplicationForm, item.slug)} ${item.launchUrl ? html`) ]; } - renderObjectCreate(): TemplateResult { - return html` + protected override renderObjectCreate(): TemplateResult { + return html` +
- - - ${msg("Create")} - ${msg("Create Application")} - - - `; + + +
+ + +
`; } - renderToolbar(): TemplateResult { - return html` ${super.renderToolbar()} + protected override renderToolbar(): TemplateResult { + return html`${super.renderToolbar()} { return new PoliciesApi(DEFAULT_CONFIG).policiesAllCacheClearCreate(); }} diff --git a/web/src/admin/applications/ApplicationViewPage.ts b/web/src/admin/applications/ApplicationViewPage.ts index d9d77a6a9b..3920ba5290 100644 --- a/web/src/admin/applications/ApplicationViewPage.ts +++ b/web/src/admin/applications/ApplicationViewPage.ts @@ -3,32 +3,41 @@ import "#admin/applications/ApplicationCheckAccessForm"; import "#admin/applications/ApplicationForm"; import "#admin/applications/entitlements/ApplicationEntitlementPage"; import "#admin/policies/BoundPoliciesList"; -import "#admin/rbac/ObjectPermissionsPage"; +import "#admin/rbac/ak-rbac-object-permission-page"; import "#admin/lifecycle/ObjectLifecyclePage"; -import "#components/events/ObjectChangelog"; +import "#admin/events/ObjectChangelog"; import "#elements/AppIcon"; import "#elements/EmptyState"; import "#elements/Tabs"; import "#elements/buttons/SpinnerButton/ak-spinner-button"; +import "#admin/applications/ApplicationEvents"; import { DEFAULT_CONFIG } from "#common/api/config"; import { APIError, parseAPIResponseError, pluckErrorDetail } from "#common/errors/network"; import { AKElement } from "#elements/Base"; +import { modalInvoker } from "#elements/dialogs"; import { WithLicenseSummary } from "#elements/mixins/license"; import { setPageDetails } from "#components/ak-page-navbar"; +import renderDescriptionList from "#components/DescriptionList"; + +import { ApplicationCheckAccessForm } from "#admin/applications/ApplicationCheckAccessForm"; +import { ApplicationForm } from "#admin/applications/ApplicationForm"; import { Application, ContentTypeEnum, CoreApi, + EventActions, + EventsApi, + EventStats, + ModelEnum, OutpostsApi, - RbacPermissionsAssignedByRolesListModelEnum, } from "@goauthentik/api"; import { msg, str } from "@lit/localize"; -import { CSSResult, html, nothing, PropertyValues, TemplateResult } from "lit"; +import { css, CSSResult, html, nothing, PropertyValues, TemplateResult } from "lit"; import { customElement, property, state } from "lit/decorators.js"; import PFBanner from "@patternfly/patternfly/components/Banner/banner.css"; @@ -53,6 +62,11 @@ export class ApplicationViewPage extends WithLicenseSummary(AKElement) { PFGrid, PFFlex, PFCard, + css` + .big-number { + font-size: 250%; + } + `, ]; //#region Properties @@ -66,6 +80,9 @@ export class ApplicationViewPage extends WithLicenseSummary(AKElement) { @state() protected application?: Application; + @state() + protected stats?: EventStats; + @state() protected error?: APIError; @@ -97,12 +114,21 @@ export class ApplicationViewPage extends WithLicenseSummary(AKElement) { if ( app.providerObj && [ - RbacPermissionsAssignedByRolesListModelEnum.AuthentikProvidersProxyProxyprovider.toString(), - RbacPermissionsAssignedByRolesListModelEnum.AuthentikProvidersLdapLdapprovider.toString(), + ModelEnum.AuthentikProvidersProxyProxyprovider.toString(), + ModelEnum.AuthentikProvidersLdapLdapprovider.toString(), ].includes(app.providerObj.metaModelName) ) { this.fetchIsMissingOutpost([app.provider || 0]); } + return new EventsApi(DEFAULT_CONFIG) + .eventsEventsStatsRetrieve({ + action: EventActions.AuthorizeApplication, + contextAuthorizedApp: app.pk.replaceAll("-", ""), + countSteps: ["hours=24", "days=7", "days=30"], + }) + .then((stats) => { + this.stats = stats; + }); }) .catch(async (error) => { this.error = await parseAPIResponseError(error); @@ -117,6 +143,133 @@ export class ApplicationViewPage extends WithLicenseSummary(AKElement) { //#region Render + renderTabOverview() { + if (!this.application) { + return nothing; + } + return html`
+
+
${msg("Related")}
+
+ ${renderDescriptionList([ + [ + msg("Provider"), + this.application.providerObj + ? html` + ${this.application.providerObj?.name} + (${this.application.providerObj?.verboseName}) + ` + : html`-`, + ], + [ + msg("Backchannel Providers"), + (this.application.backchannelProvidersObj || []).length > 0 + ? html`` + : html`-`, + ], + [ + msg("Policy engine mode"), + html`${this.application.policyEngineMode?.toUpperCase()}`, + ], + [ + msg("Related actions"), + html` + + ${this.application.launchUrl + ? html` + ${msg("Launch")} + ` + : null}`, + ], + ])} +
+
+
+
${msg("Statistics")}
+
+ ${renderDescriptionList([ + [ + msg("Users"), + html`

+ ${this.stats ? this.stats?.uniqueUsers : "-"} +

`, + ], + [ + msg("Authorizations (24 hours)"), + html`

+ ${this.stats ? this.stats?.countStep.hours24 : "-"} +

`, + ], + [ + msg("Authorizations (7 days)"), + html`

+ ${this.stats ? this.stats?.countStep.days7 : "-"} +

`, + ], + [ + msg("Authorizations (1 month)"), + html`

+ ${this.stats ? this.stats?.countStep.days30 : "-"} +

`, + ], + ])} +
+
+
+
+ ${msg("Logins over the last week (per 8 hours)")} +
+
+ ${this.application && + html` + `} +
+
+
+
${msg("Events")}
+ + +
+
`; + } + render(): TemplateResult { if (this.error) { return html` -
-
-
${msg("Related")}
-
-
- ${this.application.providerObj - ? html`` - : nothing} - ${(this.application.backchannelProvidersObj || []).length > 0 - ? html`
-
- ${msg("Backchannel Providers")} -
-
-
- -
-
-
` - : nothing} -
-
- ${msg("Policy engine mode")} -
-
-
- ${this.application.policyEngineMode?.toUpperCase()} -
-
-
-
-
- ${msg("Edit")} -
-
-
- - ${msg("Update")} - - ${msg("Update Application")} - - - - - -
-
-
-
-
- ${msg("Check access")} -
-
-
- - ${msg("Check")} - - ${msg("Check Application access")} - - - - - -
-
-
- ${this.application.launchUrl - ? html`
-
- ${msg("Launch")} -
-
- -
-
` - : nothing} -
-
-
-
-
- ${msg("Logins over the last week (per 8 hours)")} -
-
- ${this.application && - html` - `} -
-
-
-
${msg("Changelog")}
-
- - -
-
-
+ ${this.renderTabOverview()}
-
-
-
- -
-
- ${msg("Application entitlements are in preview.", { - id: "application.entitlements.preview.info", - })} -
- -
-
@@ -402,19 +355,33 @@ export class ApplicationViewPage extends WithLicenseSummary(AKElement) {
- +
+ + +
+
+ ${this.hasEnterpriseLicense ? html`
`; } - renderEmpty(): TemplateResult { + protected override renderEmpty(): SlottedTemplateResult { return super.renderEmpty( html`${msg("No app entitlements created.")} diff --git a/web/src/admin/applications/wizard/ApplicationWizardFormStepStyles.styles.ts b/web/src/admin/applications/wizard/ApplicationWizardFormStepStyles.styles.ts index cde08743c1..96c80162cd 100644 --- a/web/src/admin/applications/wizard/ApplicationWizardFormStepStyles.styles.ts +++ b/web/src/admin/applications/wizard/ApplicationWizardFormStepStyles.styles.ts @@ -10,7 +10,7 @@ import PFRadio from "@patternfly/patternfly/components/Radio/radio.css"; import PFSwitch from "@patternfly/patternfly/components/Switch/switch.css"; import PFWizard from "@patternfly/patternfly/components/Wizard/wizard.css"; -export const styles = [ +export const ApplicationWizardStyles = [ PFCard, PFButton, PFForm, diff --git a/web/src/admin/applications/wizard/ApplicationWizardStep.ts b/web/src/admin/applications/wizard/ApplicationWizardStep.ts index ce9bf4b0c6..5c16a37efa 100644 --- a/web/src/admin/applications/wizard/ApplicationWizardStep.ts +++ b/web/src/admin/applications/wizard/ApplicationWizardStep.ts @@ -1,11 +1,5 @@ -import { - ApplicationTransactionValidationError, - type ApplicationWizardState, - type ApplicationWizardStateUpdate, -} from "./types.js"; - -import { serializeForm } from "#elements/forms/Form"; import { reportValidityDeep } from "#elements/forms/FormGroup"; +import { serializeForm } from "#elements/forms/serialization"; import { NavigationEventInit, @@ -14,23 +8,38 @@ import { } from "#components/ak-wizard/events"; import { WizardStep } from "#components/ak-wizard/WizardStep"; -import { styles } from "#admin/applications/wizard/ApplicationWizardFormStepStyles.styles"; +import { ApplicationWizardStyles } from "#admin/applications/wizard/ApplicationWizardFormStepStyles.styles"; +import { + type ApplicationWizardContext, + type ApplicationWizardContextUpdate, +} from "#admin/applications/wizard/steps/providers/shared"; -import { ApplicationRequest, ValidationError } from "@goauthentik/api"; +import { ApplicationRequest } from "@goauthentik/api"; import { msg } from "@lit/localize"; import { property } from "lit/decorators.js"; -export class ApplicationWizardStep> extends WizardStep { - static styles = [...WizardStep.styles, ...styles]; +export interface ApplicationDispatchInit { + update?: ApplicationWizardContextUpdate | null; + destination?: string | null; + details?: NavigationEventInit | null; +} + +/** + * Base class for application wizard steps. Provides common functionality such as form handling and wizard state management. + * + * @prop wizard - The current state of the application wizard, shared across all steps. + */ +export abstract class ApplicationWizardStep> extends WizardStep { + static styles = [...WizardStep.styles, ...ApplicationWizardStyles]; @property({ type: Object, attribute: false }) - wizard!: ApplicationWizardState; + public wizard!: ApplicationWizardContext; - // As recommended in [WizardStep](../../../components/ak-wizard/WizardStep.ts), we override - // these fields and provide them to all the child classes. - protected wizardTitle = msg("New application"); - protected wizardDescription = msg("Create a new application and configure a provider for it."); + protected override wizardTitle = msg("New application"); + protected override wizardDescription = msg( + "Create a new application and configure a provider for it.", + ); public canCancel = true; // This should be overridden in the children for more precise targeting. @@ -73,40 +82,17 @@ export class ApplicationWizardStep> extends Wiza ]); } - protected removeErrors( - keyToDelete: keyof ApplicationTransactionValidationError, - ): ValidationError | undefined { - if (!this.wizard.errors) { - return undefined; - } - const empty = {}; - const errors = Object.entries(this.wizard.errors).reduce( - (acc, [key, value]) => - key === keyToDelete || - value === undefined || - (Array.isArray(this.wizard?.errors?.[key]) && this.wizard.errors[key].length === 0) - ? acc - : { ...acc, [key]: value }, - empty, - ); - return errors; - } - // This pattern became visible during development, and the order is important: wizard updating // and validation must complete before navigation is attempted. - public handleUpdate( - update?: ApplicationWizardStateUpdate, - destination?: string, - enable?: NavigationEventInit, - ) { + public dispatchEvents({ update, destination, details }: ApplicationDispatchInit): void { // Inform ApplicationWizard of content state if (update) { this.dispatchEvent(new WizardUpdateEvent(update)); } // Inform WizardStepManager of steps state - if (destination || enable) { - this.dispatchEvent(new WizardNavigationEvent(destination, enable)); + if (destination || details) { + this.dispatchEvent(new WizardNavigationEvent(details, destination)); } } } diff --git a/web/src/admin/applications/wizard/ak-application-wizard-main.ts b/web/src/admin/applications/wizard/ak-application-wizard-main.ts deleted file mode 100644 index 16389b7d6f..0000000000 --- a/web/src/admin/applications/wizard/ak-application-wizard-main.ts +++ /dev/null @@ -1,130 +0,0 @@ -import "#components/ak-wizard/ak-wizard-steps"; -import "./steps/ak-application-wizard-application-step.js"; -import "./steps/ak-application-wizard-bindings-step.js"; -import "./steps/ak-application-wizard-edit-binding-step.js"; -import "./steps/ak-application-wizard-provider-choice-step.js"; -import "./steps/ak-application-wizard-provider-step.js"; -import "./steps/ak-application-wizard-submit-step.js"; - -import { applicationWizardProvidersContext } from "./ContextIdentity.js"; -import { type ApplicationWizardState, type ApplicationWizardStateUpdate } from "./types.js"; - -import { DEFAULT_CONFIG } from "#common/api/config"; -import { assertEveryPresent } from "#common/utils"; - -import { AKElement } from "#elements/Base"; - -import { WizardUpdateEvent } from "#components/ak-wizard/events"; - -import type { TypeCreate } from "@goauthentik/api"; -import { ProviderModelEnum, ProvidersApi, ProxyMode } from "@goauthentik/api"; - -import { ContextProvider } from "@lit/context"; -import { html } from "lit"; -import { customElement, state } from "lit/decorators.js"; - -const freshWizardState = (): ApplicationWizardState => ({ - providerModel: "", - currentBinding: -1, - app: {}, - provider: {}, - proxyMode: ProxyMode.Proxy, - bindings: [], - errors: {}, -}); - -type ExtractProviderName = T extends `${string}.${infer Name}` ? Name : never; - -type ProviderModelNameEnum = ExtractProviderName | "samlproviderimportmodel"; - -export const providerTypePriority: ProviderModelNameEnum[] = [ - "oauth2provider", - "samlprovider", - "samlproviderimportmodel", - "racprovider", - "proxyprovider", - "radiusprovider", - "ldapprovider", - "scimprovider", -]; - -@customElement("ak-application-wizard-main") -export class AkApplicationWizardMain extends AKElement { - @state() - wizard: ApplicationWizardState = freshWizardState(); - - wizardProviderProvider = new ContextProvider(this, { - context: applicationWizardProvidersContext, - initialValue: [], - }); - - constructor() { - super(); - this.addEventListener(WizardUpdateEvent.eventName, this.handleUpdate); - } - - connectedCallback() { - super.connectedCallback(); - new ProvidersApi(DEFAULT_CONFIG).providersAllTypesList().then((providerTypes) => { - const providerNameToProviderMap = new Map( - providerTypes.map((providerType) => [providerType.modelName, providerType]), - ); - const providersInOrder = providerTypePriority.map((name) => - providerNameToProviderMap.get(name), - ); - assertEveryPresent( - providersInOrder, - "Provider priority list includes name for which no provider model was returned.", - ); - this.wizardProviderProvider.setValue(providersInOrder); - }); - } - - // This is the actual top of the Wizard; so this is where we accept the update information and - // incorporate it into the wizard. - handleUpdate(ev: WizardUpdateEvent) { - ev.stopPropagation(); - const update = ev.content; - if (update !== undefined) { - this.wizard = { - ...this.wizard, - ...update, - }; - } - } - - render() { - return html` - - - - - - - `; - } -} - -declare global { - interface HTMLElementTagNameMap { - "ak-application-wizard-main": AkApplicationWizardMain; - } -} diff --git a/web/src/admin/applications/wizard/ak-application-wizard.ts b/web/src/admin/applications/wizard/ak-application-wizard.ts index 7bf4e90523..5701d34630 100644 --- a/web/src/admin/applications/wizard/ak-application-wizard.ts +++ b/web/src/admin/applications/wizard/ak-application-wizard.ts @@ -1,33 +1,147 @@ -import "./ak-application-wizard-main.js"; +import "#components/ak-wizard/ak-wizard-steps"; +import "#admin/applications/wizard/steps/ak-application-wizard-application-step"; +import "#admin/applications/wizard/steps/ak-application-wizard-bindings-step"; +import "#admin/applications/wizard/steps/ak-application-wizard-edit-binding-step"; +import "#admin/applications/wizard/steps/ak-application-wizard-provider-choice-step"; +import "#admin/applications/wizard/steps/ak-application-wizard-provider-step"; +import "#admin/applications/wizard/steps/ak-application-wizard-submit-step"; -import { ModalButton } from "#elements/buttons/ModalButton"; -import { bound } from "#elements/decorators/bound"; +import { DEFAULT_CONFIG } from "#common/api/config"; +import { assertEveryPresent } from "#common/utils"; -import { WizardCloseEvent } from "#components/ak-wizard/events"; +import { listen } from "#elements/decorators/listen"; +import { CreateWizard } from "#elements/wizard/CreateWizard"; +import { WizardUpdateEvent } from "#components/ak-wizard/events"; + +import { applicationWizardProvidersContext } from "#admin/applications/wizard/ContextIdentity"; +import { + type ApplicationWizardContext, + type ApplicationWizardContextUpdate, +} from "#admin/applications/wizard/steps/providers/shared"; + +import type { TypeCreate } from "@goauthentik/api"; +import { ProviderModelEnum, ProvidersApi, ProxyMode } from "@goauthentik/api"; + +import { ContextProvider } from "@lit/context"; +import { msg } from "@lit/localize"; import { html } from "lit"; -import { customElement } from "lit/decorators.js"; +import { customElement, state } from "lit/decorators.js"; + +const createWizardContextValue = (): ApplicationWizardContext => ({ + providerModel: "", + currentBinding: -1, + app: {}, + provider: {}, + proxyMode: ProxyMode.Proxy, + bindings: [], + errors: {}, +}); + +type ExtractProviderName = T extends `${string}.${infer Name}` ? Name : never; + +type ProviderModelNameEnum = ExtractProviderName | "samlproviderimportmodel"; + +export const providerTypePriority: ProviderModelNameEnum[] = [ + "oauth2provider", + "samlprovider", + "samlproviderimportmodel", + "racprovider", + "proxyprovider", + "radiusprovider", + "ldapprovider", + "scimprovider", + "wsfederationprovider", +]; @customElement("ak-application-wizard") -export class AkApplicationWizard extends ModalButton { - constructor() { - super(); - this.addEventListener(WizardCloseEvent.eventName, this.onCloseEvent); +export class AKApplicationWizard extends CreateWizard { + #api = new ProvidersApi(DEFAULT_CONFIG); + + public static override verboseName = msg("Application"); + public static override verboseNamePlural = msg("Applications"); + + protected createRenderRoot(): HTMLElement | DocumentFragment { + return this; } - @bound - onCloseEvent(ev: WizardCloseEvent) { + @state() + protected context: ApplicationWizardContext = createWizardContextValue(); + + protected wizardProviderProvider = new ContextProvider(this, { + context: applicationWizardProvidersContext, + initialValue: [], + }); + + public override refresh = (): Promise => { + return this.#api.providersAllTypesList().then((providerTypes) => { + const providerNameToProviderMap = new Map( + providerTypes.map((providerType) => [providerType.modelName, providerType]), + ); + + const providersInOrder = providerTypePriority.map((name) => + providerNameToProviderMap.get(name), + ); + + assertEveryPresent( + providersInOrder, + "Provider priority list includes name for which no provider model was returned.", + ); + + this.wizardProviderProvider.setValue(providersInOrder); + }); + }; + + // This is the actual top of the Wizard; so this is where we accept the update information and + // incorporate it into the wizard. + /** + * Handles updates to the wizard context, which are emitted by the individual steps when their data changes. + */ + @listen(WizardUpdateEvent) + handleUpdate(ev: WizardUpdateEvent) { ev.stopPropagation(); - this.open = false; + const update = ev.content; + + if (update) { + this.context = { + ...this.context, + ...update, + }; + } } - renderModalInner() { - return html` `; + protected override render() { + return html` + + + + + + + `; } } declare global { interface HTMLElementTagNameMap { - "ak-application-wizard": AkApplicationWizard; + "ak-application-wizard": AKApplicationWizard; } } diff --git a/web/src/admin/applications/wizard/ak-wizard-title.ts b/web/src/admin/applications/wizard/ak-wizard-title.ts deleted file mode 100644 index 1a358bc183..0000000000 --- a/web/src/admin/applications/wizard/ak-wizard-title.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { AKElement } from "#elements/Base"; - -import { css, html } from "lit"; -import { customElement } from "lit/decorators.js"; - -import PFContent from "@patternfly/patternfly/components/Content/content.css"; -import PFTitle from "@patternfly/patternfly/components/Title/title.css"; - -@customElement("ak-wizard-title") -export class AkWizardTitle extends AKElement { - static styles = [ - PFContent, - PFTitle, - css` - .ak-bottom-spacing { - padding-bottom: var(--pf-global--spacer--lg); - } - `, - ]; - - render() { - return html`
-

-
`; - } -} - -export default AkWizardTitle; - -declare global { - interface HTMLElementTagNameMap { - "ak-wizard-title": AkWizardTitle; - } -} diff --git a/web/src/admin/applications/wizard/steps/SubmitStepOverviewRenderers.ts b/web/src/admin/applications/wizard/steps/SubmitStepOverviewRenderers.ts index 0680c6426c..c6dc820cf1 100644 --- a/web/src/admin/applications/wizard/steps/SubmitStepOverviewRenderers.ts +++ b/web/src/admin/applications/wizard/steps/SubmitStepOverviewRenderers.ts @@ -1,9 +1,11 @@ import "#components/ak-status-label"; -import { OneOfProvider } from "../types.js"; +import { SlottedTemplateResult } from "#elements/types"; import { type DescriptionPair, renderDescriptionList } from "#components/DescriptionList"; +import { OneOfProvider } from "#admin/applications/wizard/steps/providers/shared"; + import { ClientTypeEnum, LDAPProvider, @@ -16,8 +18,10 @@ import { RACProvider, RadiusProvider, RedirectURI, + RedirectURITypeEnum, SAMLProvider, SCIMProvider, + WSFederationProvider, } from "@goauthentik/api"; import { match } from "ts-pattern"; @@ -30,39 +34,38 @@ const renderSummary = (type: string, name: string, fields: DescriptionPair[]) => threecolumn: true, }); -function renderSAMLOverview(rawProvider: OneOfProvider) { - const provider = rawProvider as SAMLProvider; +export type ProviderOverview = ( + provider: T, +) => SlottedTemplateResult; +const renderSAMLOverview: ProviderOverview = (provider) => { return renderSummary("SAML", provider.name, [ [msg("ACS URL"), provider.acsUrl], [msg("Audience"), provider.audience || "-"], - [msg("Issuer"), provider.issuer], + [msg("Issuer"), provider.urlIssuer], ]); -} - -function renderSAMLImportOverview(rawProvider: OneOfProvider) { - const provider = rawProvider as ProvidersSamlImportMetadataCreateRequest; +}; +const renderSAMLImportOverview: ProviderOverview = ( + provider, +) => { return renderSummary("SAML", provider.name, [ - [msg("Authorization flow"), provider.authorizationFlow ?? "-"], - [msg("Invalidation flow"), provider.invalidationFlow ?? "-"], + [msg("Authorization Flow"), provider.authorizationFlow ?? "-"], + [msg("Invalidation Flow"), provider.invalidationFlow ?? "-"], ]); -} +}; -function renderSCIMOverview(rawProvider: OneOfProvider) { - const provider = rawProvider as SCIMProvider; +const renderSCIMOverview: ProviderOverview = (provider) => { return renderSummary("SCIM", provider.name, [[msg("URL"), provider.url]]); -} +}; -function renderRadiusOverview(rawProvider: OneOfProvider) { - const provider = rawProvider as RadiusProvider; +const renderRadiusOverview: ProviderOverview = (provider) => { return renderSummary("Radius", provider.name, [ [msg("Client Networks"), provider.clientNetworks], ]); -} +}; -function renderRACOverview(rawProvider: OneOfProvider) { - const provider = rawProvider as RACProvider; +const renderRACOverview: ProviderOverview = (provider) => { return renderSummary("RAC", provider.name, [ [msg("Connection expiry"), provider.connectionExpiry ?? "-"], [ @@ -72,7 +75,7 @@ function renderRACOverview(rawProvider: OneOfProvider) { : msg("None"), ], ]); -} +}; function formatRedirectUris(uris: RedirectURI[] = []) { return uris.length > 0 @@ -83,83 +86,94 @@ function formatRedirectUris(uris: RedirectURI[] = []) { ${uri.url} (${uri.matchingMode === MatchingModeEnum.Strict ? msg("strict") - : msg("regexp")}) + : msg("regexp")}, + ${uri.redirectUriType === RedirectURITypeEnum.Logout + ? msg("post logout") + : msg("authorization")}) `, )} ` : "-"; } -const proxyModeToLabel = new Map([ - [ProxyMode.Proxy, msg("Proxy")], - [ProxyMode.ForwardSingle, msg("Forward auth (single application)")], - [ProxyMode.ForwardDomain, msg("Forward auth (domain-level)")], - [ProxyMode.UnknownDefaultOpenApi, msg("Unknown proxy mode")], -]); +const proxyModeToLabel = { + [ProxyMode.Proxy]: () => msg("Proxy"), + [ProxyMode.ForwardSingle]: () => msg("Forward auth (single application)"), + [ProxyMode.ForwardDomain]: () => msg("Forward auth (domain-level)"), + [ProxyMode.UnknownDefaultOpenApi]: () => msg("Unknown proxy mode"), +} as const satisfies Record string>; + +const renderProxyOverview: ProviderOverview = (provider) => { + const proxyHostMappings: DescriptionPair[] = match( + provider.mode, + ) + .with(ProxyMode.Proxy, () => { + return [ + [msg("Internal Host"), provider.internalHost], + [msg("External Host"), provider.externalHost], + ]; + }) + .with(ProxyMode.ForwardSingle, () => { + return [[msg("External Host"), provider.externalHost]]; + }) + .with(ProxyMode.ForwardDomain, () => { + return [ + [msg("Authentication URL"), provider.externalHost], + [msg("Cookie domain"), provider.cookieDomain], + ]; + }) + .otherwise(() => { + throw new Error( + `Unrecognized proxy mode: ${provider.mode?.toString() ?? "-- undefined __"}`, + ); + }); + + const label = proxyModeToLabel[provider.mode ?? ProxyMode.Proxy]; -function renderProxyOverview(rawProvider: OneOfProvider) { - const provider = rawProvider as ProxyProvider; return renderSummary("Proxy", provider.name, [ - [msg("Mode"), proxyModeToLabel.get(provider.mode ?? ProxyMode.Proxy)], - ...match(provider.mode) - .with( - ProxyMode.Proxy, - () => - [ - [msg("Internal Host"), provider.internalHost], - [msg("External Host"), provider.externalHost], - ] as DescriptionPair[], - ) - .with( - ProxyMode.ForwardSingle, - () => [[msg("External Host"), provider.externalHost]] as DescriptionPair[], - ) - .with( - ProxyMode.ForwardDomain, - () => - [ - [msg("Authentication URL"), provider.externalHost], - [msg("Cookie domain"), provider.cookieDomain], - ] as DescriptionPair[], - ) - .otherwise(() => { - throw new Error( - `Unrecognized proxy mode: ${provider.mode?.toString() ?? "-- undefined __"}`, - ); - }), + [msg("Mode"), label()], + ...proxyHostMappings, [ msg("Basic-Auth"), - html` `, ], ]); -} +}; -const clientTypeToLabel = new Map([ - [ClientTypeEnum.Confidential, msg("Confidential")], - [ClientTypeEnum.Public, msg("Public")], - [ClientTypeEnum.UnknownDefaultOpenApi, msg("Unknown type")], -]); +const clientTypeToLabel = { + [ClientTypeEnum.Confidential]: () => msg("Confidential"), + [ClientTypeEnum.Public]: () => msg("Public"), + [ClientTypeEnum.UnknownDefaultOpenApi]: () => msg("Unknown type"), +} as const satisfies Record string>; + +const renderOAuth2Overview: ProviderOverview = (provider) => { + const label = provider.clientType ? clientTypeToLabel[provider.clientType]() : ""; -function renderOAuth2Overview(rawProvider: OneOfProvider) { - const provider = rawProvider as OAuth2Provider; return renderSummary("OAuth2", provider.name, [ - [msg("Client type"), provider.clientType ? clientTypeToLabel.get(provider.clientType) : ""], + [msg("Client Type"), label], [msg("Client ID"), provider.clientId], [msg("Redirect URIs"), formatRedirectUris(provider.redirectUris)], ]); -} +}; -function renderLDAPOverview(rawProvider: OneOfProvider) { - const provider = rawProvider as LDAPProvider; +const renderLDAPOverview: ProviderOverview = (provider) => { return renderSummary("Proxy", provider.name, [[msg("Base DN"), provider.baseDn]]); +}; + +function renderWSFedOverview(rawProvider: OneOfProvider) { + const provider = rawProvider as WSFederationProvider; + return renderSummary("WS-Federation", provider.name, [ + [msg("Reply URL"), provider.replyUrl], + [msg("Realm"), provider.wtrealm || "-"], + ]); } const providerName = (p: ProviderModelEnum): string => p.toString().split(".")[1]; -export const providerRenderers = new Map([ +export const providerRenderers = new Map>([ [providerName(ProviderModelEnum.AuthentikProvidersSamlSamlprovider), renderSAMLOverview], ["samlproviderimportmodel", renderSAMLImportOverview], [providerName(ProviderModelEnum.AuthentikProvidersScimScimprovider), renderSCIMOverview], @@ -168,4 +182,8 @@ export const providerRenderers = new Map([ [providerName(ProviderModelEnum.AuthentikProvidersProxyProxyprovider), renderProxyOverview], [providerName(ProviderModelEnum.AuthentikProvidersOauth2Oauth2provider), renderOAuth2Overview], [providerName(ProviderModelEnum.AuthentikProvidersLdapLdapprovider), renderLDAPOverview], -]); + [ + providerName(ProviderModelEnum.AuthentikProvidersWsFederationWsfederationprovider), + renderWSFedOverview, + ], +] satisfies [string, ProviderOverview][] as [string, ProviderOverview][]); diff --git a/web/src/admin/applications/wizard/steps/ak-application-wizard-application-step.ts b/web/src/admin/applications/wizard/steps/ak-application-wizard-application-step.ts index b16ae97a8e..8506dbf402 100644 --- a/web/src/admin/applications/wizard/steps/ak-application-wizard-application-step.ts +++ b/web/src/admin/applications/wizard/steps/ak-application-wizard-application-step.ts @@ -1,4 +1,3 @@ -import "#admin/applications/wizard/ak-wizard-title"; import "#components/ak-file-search-input"; import "#components/ak-radio-input"; import "#components/ak-slug-input"; @@ -8,16 +7,20 @@ import "#components/ak-textarea-input"; import "#elements/forms/FormGroup"; import "#elements/forms/HorizontalFormElement"; -import { ApplicationWizardStateUpdate, ValidationRecord } from "../types.js"; +import { omitKeys, trimMany } from "#common/objects"; import { isSlug } from "#elements/router/utils"; -import { type NavigableButton, type WizardButton } from "#components/ak-wizard/types"; +import { type NavigableButton, type WizardButton } from "#components/ak-wizard/shared"; import { ApplicationWizardStep } from "#admin/applications/wizard/ApplicationWizardStep"; +import { + ApplicationWizardContextUpdate, + WizardValidationRecord, +} from "#admin/applications/wizard/steps/providers/shared"; import { policyEngineModes } from "#admin/policies/PolicyEngineModes"; -import { AdminFileListUsageEnum, type ApplicationRequest } from "@goauthentik/api"; +import { type ApplicationRequest, UsageEnum } from "@goauthentik/api"; import { snakeCase } from "change-case"; @@ -26,18 +29,14 @@ import { html } from "lit"; import { customElement, state } from "lit/decorators.js"; import { ifDefined } from "lit/directives/if-defined.js"; -function trimMany(target: T, keys: K[]): Pick { - const output = {} as Record; - - for (const key of keys) { - const value = target[key]; - - output[key] = typeof value === "string" ? value.trim() : value; - } - - return output as Pick; -} - +/** + * The first step of the application wizard, responsible for collecting + * basic application information such as name, slug, group, and UI settings. + * + * This step performs validation on the form inputs and updates the wizard state accordingly when the "Next" button is clicked. + * + * @prop wizard - The current state of the application wizard, shared across all steps. + */ @customElement("ak-application-wizard-application-step") export class ApplicationWizardApplicationStep extends ApplicationWizardStep { label = msg("Application"); @@ -61,14 +60,16 @@ export class ApplicationWizardApplicationStep extends ApplicationWizardStep { : (this.wizard.errors?.app?.[name] ?? this.wizard.errors?.app?.[snakeCase(name)] ?? []); } - get buttons(): WizardButton[] { - return [{ kind: "next", destination: "provider-choice" }, { kind: "cancel" }]; - } + protected buttons: WizardButton[] = [ + // --- + { kind: "cancel" }, + { kind: "next", destination: "provider-choice" }, + ]; get valid() { this.errors = new Map(); - const values = trimMany(this.formValues, ["metaLaunchUrl", "name", "slug"]); + const values = trimMany(this.formValues, "metaLaunchUrl", "name", "slug"); if (!values.name) { this.errors.set("name", msg("An application name is required")); @@ -85,13 +86,13 @@ export class ApplicationWizardApplicationStep extends ApplicationWizardStep { return this.errors.size === 0; } - override handleButton(button: NavigableButton) { + public override handleButton(button: NavigableButton) { if (button.kind !== "next") { return super.handleButton(button); } if (!this.valid) { - this.handleEnabling({ + this.dispatchNavigationEvent({ disabled: ["provider-choice", "provider", "bindings", "submit"], }); @@ -100,24 +101,26 @@ export class ApplicationWizardApplicationStep extends ApplicationWizardStep { const app = { ...this.formValues }; - const payload: ApplicationWizardStateUpdate = { + const update: ApplicationWizardContextUpdate = { app, - errors: this.removeErrors("app"), + errors: omitKeys(this.wizard.errors, "app"), }; if (!this.wizard.provider?.name?.trim() && app.name) { - payload.provider = { + update.provider = { name: `Provider for ${app.name}`, }; } - this.handleUpdate(payload, button.destination, { - enable: "provider-choice", + return this.dispatchEvents({ + update, + destination: button.destination, + details: { enable: "provider-choice" }, }); } - renderForm(app: Partial, errors: ValidationRecord) { - return html` ${msg("Configure the Application")} + protected renderForm(app: Partial, errors: WizardValidationRecord = {}) { + return html`

${msg("Configure the Application")}

+ + @@ -214,10 +231,7 @@ export class ApplicationWizardApplicationStep extends ApplicationWizardStep { if (!(this.wizard.app && this.wizard.errors)) { throw new Error("Application Step received uninitialized wizard context."); } - return this.renderForm( - this.wizard.app as ApplicationRequest, - this.wizard.errors?.app ?? {}, - ); + return this.renderForm(this.wizard.app, this.wizard.errors?.app); } } diff --git a/web/src/admin/applications/wizard/steps/ak-application-wizard-bindings-step.ts b/web/src/admin/applications/wizard/steps/ak-application-wizard-bindings-step.ts index 9afa985ac4..88608dd78c 100644 --- a/web/src/admin/applications/wizard/steps/ak-application-wizard-bindings-step.ts +++ b/web/src/admin/applications/wizard/steps/ak-application-wizard-bindings-step.ts @@ -1,5 +1,4 @@ import "#elements/EmptyState"; -import "#admin/applications/wizard/ak-wizard-title"; import "#components/ak-radio-input"; import "#components/ak-slug-input"; import "#components/ak-status-label"; @@ -8,15 +7,14 @@ import "#components/ak-text-input"; import "#elements/ak-table/ak-select-table"; import "#elements/forms/FormGroup"; import "#elements/forms/HorizontalFormElement"; -import "./bindings/ak-application-wizard-bindings-toolbar.js"; - -import { makeEditButton } from "./bindings/ak-application-wizard-bindings-edit-button.js"; +import "#admin/applications/wizard/steps/bindings/ak-application-wizard-bindings-toolbar"; import { SelectTable } from "#elements/ak-table/ak-select-table"; -import { type WizardButton } from "#components/ak-wizard/types"; +import { type WizardButton } from "#components/ak-wizard/shared"; import { ApplicationWizardStep } from "#admin/applications/wizard/ApplicationWizardStep"; +import { makeEditButton } from "#admin/applications/wizard/steps/bindings/ak-application-wizard-bindings-edit-button"; import { match, P } from "ts-pattern"; @@ -34,17 +32,18 @@ const COLUMNS = [ [msg("Actions"), null, msg("Row Actions")], ]; +/** + * @prop wizard - The current state of the application wizard, shared across all steps. + */ @customElement("ak-application-wizard-bindings-step") export class ApplicationWizardBindingsStep extends ApplicationWizardStep { label = msg("Configure Bindings"); - get buttons(): WizardButton[] { - return [ - { kind: "next", destination: "submit" }, - { kind: "back", destination: "provider" }, - { kind: "cancel" }, - ]; - } + protected buttons: WizardButton[] = [ + { kind: "cancel" }, + { kind: "back", destination: "provider" }, + { kind: "next", destination: "submit" }, + ]; @query("ak-select-table") selectTable!: SelectTable; @@ -62,6 +61,7 @@ export class ApplicationWizardBindingsStep extends ApplicationWizardStep { get bindingsAsColumns() { return this.wizard.bindings.map((binding, index) => { const { order, enabled, timeout } = binding; + const isSet = P.union(P.string.minLength(1), P.number); const policy = match(binding) .with({ policy: isSet }, (v) => msg(str`Policy ${v.policyObj?.name}`)) @@ -87,26 +87,32 @@ export class ApplicationWizardBindingsStep extends ApplicationWizardStep { // TODO Fix those dispatches so that we handle them here, in this component, and *choose* how to // forward them. onBindingEvent(binding?: number) { - this.handleUpdate({ currentBinding: binding ?? -1 }, "edit-binding", { - enable: "edit-binding", + this.dispatchEvents({ + update: { currentBinding: binding ?? -1 }, + destination: "edit-binding", + details: { enable: "edit-binding" }, }); } - onDeleteBindings() { + protected onDeleteBindings() { const toDelete = this.selectTable - .json() + .toJSON() .map((i) => (typeof i === "string" ? parseInt(i, 10) : i)); const bindings = this.wizard.bindings.filter((binding, index) => !toDelete.includes(index)); - this.handleUpdate({ bindings }, "bindings"); + + return this.dispatchEvents({ + update: { bindings }, + destination: "bindings", + }); } - renderEmptyCollection() { - return html`${msg("Configure Policy/User/Group Bindings")} -
+ protected renderEmptyCollection() { + return html`

+ ${msg("Configure Policy/User/Group Bindings")} +

+

${msg("These policies control which users can access this application.")} -

+
this.onBindingEvent()} @@ -118,27 +124,30 @@ export class ApplicationWizardBindingsStep extends ApplicationWizardStep { order="order" .columns=${COLUMNS} .content=${[]} - > - ${msg("No bound policies.")} -
${msg("No policies are currently bound to this object.")}
-
- -
-
+ > + ${msg("No bound policies.")} +
+ ${msg("No policies are currently bound to this object.")} +
+
+ +
+
+
`; } - renderCollection() { - return html` ${msg("Configure Policy Bindings")} -
+ protected renderCollection() { + return html`

${msg("Configure Policy Bindings")}

+

${msg("These policies control which users can access this application.")} -

+ this.onBindingEvent()} @clickDelete=${() => this.onDeleteBindings()} @@ -153,7 +162,7 @@ export class ApplicationWizardBindingsStep extends ApplicationWizardStep { >`; } - renderMain() { + protected renderMain() { if ((this.wizard.bindings ?? []).length === 0) { return this.renderEmptyCollection(); } diff --git a/web/src/admin/applications/wizard/steps/ak-application-wizard-edit-binding-step.ts b/web/src/admin/applications/wizard/steps/ak-application-wizard-edit-binding-step.ts index 502dd47bd2..5008013bac 100644 --- a/web/src/admin/applications/wizard/steps/ak-application-wizard-edit-binding-step.ts +++ b/web/src/admin/applications/wizard/steps/ak-application-wizard-edit-binding-step.ts @@ -1,5 +1,4 @@ import "#components/ak-number-input"; -import "#admin/applications/wizard/ak-wizard-title"; import "#components/ak-radio-input"; import "#components/ak-switch-input"; import "#components/ak-text-input"; @@ -10,30 +9,32 @@ import "#elements/forms/SearchSelect/ak-search-select-ez"; import "#elements/forms/SearchSelect/index"; import { DEFAULT_CONFIG } from "#common/api/config"; -import { groupBy } from "#common/utils"; - -import { ISearchSelectConfig } from "#elements/forms/SearchSelect/ak-search-select-ez"; -import { type SearchSelectBase } from "#elements/forms/SearchSelect/SearchSelect"; - -import { type NavigableButton, type WizardButton } from "#components/ak-wizard/types"; - -import { ApplicationWizardStep } from "#admin/applications/wizard/ApplicationWizardStep"; import { createPassFailOptions, PolicyBindingCheckTarget, PolicyObjectKeys, -} from "#admin/policies/utils"; +} from "#common/policies/utils"; +import { groupBy } from "#common/utils"; + +import { ISearchSelectConfig } from "#elements/forms/SearchSelect/ak-search-select-ez"; +import { type SearchSelectBase } from "#elements/forms/SearchSelect/SearchSelect"; +import { withQuery } from "#elements/forms/SearchSelect/utils"; + +import { type NavigableButton, type WizardButton } from "#components/ak-wizard/shared"; + +import { ApplicationWizardStep } from "#admin/applications/wizard/ApplicationWizardStep"; import { CoreApi, Group, PoliciesApi, Policy, PolicyBinding, User } from "@goauthentik/api"; -import { msg } from "@lit/localize"; +import { msg, str } from "@lit/localize"; import { html, nothing } from "lit"; import { customElement, query, state } from "lit/decorators.js"; -const withQuery = (search: string | undefined, args: T) => (search ? { ...args, search } : args); - +/** + * @prop wizard - The current state of the application wizard, shared across all steps. + */ @customElement("ak-application-wizard-edit-binding-step") -export class ApplicationWizardEditBindingStep extends ApplicationWizardStep { +export class ApplicationWizardEditBindingStep extends ApplicationWizardStep { label = msg("Edit Binding"); hide = true; @@ -48,19 +49,17 @@ export class ApplicationWizardEditBindingStep extends ApplicationWizardStep { @state() policyGroupUser: PolicyBindingCheckTarget = PolicyBindingCheckTarget.Policy; - instanceId = -1; + protected instanceId = -1; - instance?: PolicyBinding; + protected instance: PolicyBinding | null = null; - get buttons(): WizardButton[] { - return [ - { kind: "next", label: msg("Save Binding"), destination: "bindings" }, - { kind: "back", destination: "bindings" }, - { kind: "cancel" }, - ]; - } + protected buttons: WizardButton[] = [ + { kind: "cancel" }, + { kind: "back", destination: "bindings" }, + { kind: "next", label: msg("Save Binding"), destination: "bindings" }, + ]; - override handleButton(button: NavigableButton) { + public override handleButton(button: NavigableButton) { if (button.kind === "next") { if (!this.form?.checkValidity()) { return; @@ -69,7 +68,7 @@ export class ApplicationWizardEditBindingStep extends ApplicationWizardStep { const policyObject = this.searchSelect.selectedObject; const policyKey = PolicyObjectKeys[this.policyGroupUser]; const newBinding: PolicyBinding = { - ...(this.formValues as unknown as PolicyBinding), + ...this.formValues, [policyKey]: policyObject, }; @@ -82,12 +81,14 @@ export class ApplicationWizardEditBindingStep extends ApplicationWizardStep { } this.instanceId = -1; - this.handleUpdate({ bindings }, "bindings"); - return; + return this.dispatchEvents({ + update: { bindings }, + destination: "bindings", + }); } - super.handleButton(button); + return super.handleButton(button); } // The search select configurations for the three different types of fetches that we care about, @@ -151,7 +152,7 @@ export class ApplicationWizardEditBindingStep extends ApplicationWizardStep { } } - renderSearch(title: string, policyKind: PolicyBindingCheckTarget) { + protected renderSearch(title: string, policyKind: PolicyBindingCheckTarget) { if (policyKind !== this.policyGroupUser) { return nothing; } @@ -161,12 +162,15 @@ export class ApplicationWizardEditBindingStep extends ApplicationWizardStep { .config=${this.searchSelectConfigs(policyKind)} class="policy-search-select" blankable + placeholder=${msg(str`Select a ${title}...`)} > `; } - renderForm(instance?: PolicyBinding) { - return html`${msg("Create a Policy/User/Group Binding")} + protected renderForm(instance?: PolicyBinding | null) { + return html`

+ ${msg("Create a Policy/User/Group Binding")} +

@@ -197,7 +201,7 @@ export class ApplicationWizardEditBindingStep extends ApplicationWizardStep { `; } - renderMain() { + protected renderMain() { if (!(this.wizard.bindings && this.wizard.errors)) { throw new Error("Application Step received uninitialized wizard context."); } + const currentBinding = this.wizard.currentBinding ?? -1; + if (this.instanceId !== currentBinding) { this.instanceId = currentBinding; - this.instance = - this.instanceId === -1 ? undefined : this.wizard.bindings[this.instanceId]; + this.instance = this.instanceId === -1 ? null : this.wizard.bindings[this.instanceId]; } + return this.renderForm(this.instance); } } diff --git a/web/src/admin/applications/wizard/steps/ak-application-wizard-provider-choice-step.ts b/web/src/admin/applications/wizard/steps/ak-application-wizard-provider-choice-step.ts index 06c15761b3..5e80a25623 100644 --- a/web/src/admin/applications/wizard/steps/ak-application-wizard-provider-choice-step.ts +++ b/web/src/admin/applications/wizard/steps/ak-application-wizard-provider-choice-step.ts @@ -1,4 +1,3 @@ -import "#admin/applications/wizard/ak-wizard-title"; import "#elements/EmptyState"; import "#elements/forms/FormGroup"; import "#elements/forms/HorizontalFormElement"; @@ -6,11 +5,11 @@ import "#elements/wizard/TypeCreateWizardPage"; import { applicationWizardProvidersContext } from "../ContextIdentity.js"; -import { bound } from "#elements/decorators/bound"; import { WithLicenseSummary } from "#elements/mixins/license"; +import { SlottedTemplateResult } from "#elements/types"; import { TypeCreateWizardPageLayouts } from "#elements/wizard/TypeCreateWizardPage"; -import type { NavigableButton, WizardButton } from "#components/ak-wizard/types"; +import type { NavigableButton, WizardButton } from "#components/ak-wizard/shared"; import { ApplicationWizardStep } from "#admin/applications/wizard/ApplicationWizardStep"; @@ -19,72 +18,81 @@ import type { TypeCreate } from "@goauthentik/api"; import { consume } from "@lit/context"; import { msg } from "@lit/localize"; import { html } from "lit"; +import { guard } from "lit-html/directives/guard.js"; import { customElement, state } from "lit/decorators.js"; +/** + * + * @prop wizard - The current state of the application wizard, shared across all steps. + */ @customElement("ak-application-wizard-provider-choice-step") export class ApplicationWizardProviderChoiceStep extends WithLicenseSummary(ApplicationWizardStep) { label = msg("Choose a Provider"); @state() - failureMessage = ""; + protected failureMessage = ""; @consume({ context: applicationWizardProvidersContext, subscribe: true }) public providerModelsList!: TypeCreate[]; - get buttons(): WizardButton[] { - return [ - { kind: "next", destination: "provider" }, - { kind: "back", destination: "application" }, - { kind: "cancel" }, - ]; - } + protected buttons: WizardButton[] = [ + { kind: "cancel" }, + { kind: "back", destination: "application" }, + { kind: "next", destination: "provider" }, + ]; - override handleButton(button: NavigableButton) { + public override handleButton(button: NavigableButton) { this.failureMessage = ""; + if (button.kind === "next") { if (!this.wizard.providerModel) { this.failureMessage = msg("Please choose a provider type before proceeding."); - this.handleEnabling({ disabled: ["provider", "bindings", "submit"] }); + this.dispatchNavigationEvent({ disabled: ["provider", "bindings", "submit"] }); + return; } - this.handleUpdate(undefined, button.destination, { enable: "provider" }); - return; + + return this.dispatchEvents({ + destination: button.destination, + details: { enable: "provider" }, + }); } - super.handleButton(button); + + return super.handleButton(button); } - @bound - onSelect(ev: CustomEvent) { - ev.stopPropagation(); - const detail: TypeCreate = ev.detail; - this.handleUpdate({ providerModel: detail.modelName }); - } + protected typeSelectListener = (event: CustomEvent) => { + return this.dispatchEvents({ + update: { + ...this.wizard, + providerModel: event.detail.modelName, + }, + details: { enable: "provider" }, + }); + }; - renderMain() { - const selectedTypes = this.providerModelsList.filter( - (t) => t.modelName === this.wizard.providerModel, - ); + protected renderMain(): SlottedTemplateResult { + const { providerModelsList } = this; - return this.providerModelsList.length > 0 - ? html` ${msg("Choose a Provider Type")} -
- 0 ? selectedTypes[0] : undefined} - @select=${(ev: CustomEvent) => { - this.handleUpdate( - { - ...this.wizard, - providerModel: ev.detail.modelName, - }, - undefined, - { enable: "provider" }, - ); - }} - > -
` - : html``; + return guard([providerModelsList], () => { + if (!providerModelsList.length) { + return html``; + } + + const selectedTypes = providerModelsList.filter( + (t) => t.modelName === this.wizard.providerModel, + ); + + return html`

${msg("Choose a Provider Type")}

+
+ 0 ? selectedTypes[0] : null} + @ak-type-create-select=${this.typeSelectListener} + > +
`; + }); } } diff --git a/web/src/admin/applications/wizard/steps/ak-application-wizard-provider-step.ts b/web/src/admin/applications/wizard/steps/ak-application-wizard-provider-step.ts index dc84178fdb..1522dc0b3d 100644 --- a/web/src/admin/applications/wizard/steps/ak-application-wizard-provider-step.ts +++ b/web/src/admin/applications/wizard/steps/ak-application-wizard-provider-step.ts @@ -1,38 +1,48 @@ -import "./providers/ak-application-wizard-provider-for-ldap.js"; -import "./providers/ak-application-wizard-provider-for-oauth.js"; -import "./providers/ak-application-wizard-provider-for-proxy.js"; -import "./providers/ak-application-wizard-provider-for-rac.js"; -import "./providers/ak-application-wizard-provider-for-radius.js"; -import "./providers/ak-application-wizard-provider-for-saml.js"; -import "./providers/ak-application-wizard-provider-for-saml-metadata.js"; -import "./providers/ak-application-wizard-provider-for-scim.js"; +import "#admin/applications/wizard/steps/providers/ak-application-wizard-provider-for-ldap"; +import "#admin/applications/wizard/steps/providers/ak-application-wizard-provider-for-oauth"; +import "#admin/applications/wizard/steps/providers/ak-application-wizard-provider-for-proxy"; +import "#admin/applications/wizard/steps/providers/ak-application-wizard-provider-for-rac"; +import "#admin/applications/wizard/steps/providers/ak-application-wizard-provider-for-radius"; +import "#admin/applications/wizard/steps/providers/ak-application-wizard-provider-for-saml"; +import "#admin/applications/wizard/steps/providers/ak-application-wizard-provider-for-saml-metadata"; +import "#admin/applications/wizard/steps/providers/ak-application-wizard-provider-for-scim"; +import "#admin/applications/wizard/steps/providers/ak-application-wizard-provider-for-wsfed"; -import { ApplicationWizardStep } from "../ApplicationWizardStep.js"; -import { OneOfProvider } from "../types.js"; -import { ApplicationWizardProviderForm } from "./providers/ApplicationWizardProviderForm.js"; +import { omitKeys } from "#common/objects"; -import { type NavigableButton, type WizardButton } from "#components/ak-wizard/types"; +import { StrictUnsafe } from "#elements/utils/unsafe"; + +import { type NavigableButton, type WizardButton } from "#components/ak-wizard/shared"; + +import { ApplicationWizardStep } from "#admin/applications/wizard/ApplicationWizardStep"; +import { ApplicationWizardProviderForm } from "#admin/applications/wizard/steps/providers/ApplicationWizardProviderForm"; +import { OneOfProvider } from "#admin/applications/wizard/steps/providers/shared"; import { msg } from "@lit/localize"; import { nothing, PropertyValues } from "lit"; import { customElement, query, state } from "lit/decorators.js"; -import { html, unsafeStatic } from "lit/static-html.js"; -const providerToTag = new Map([ - ["ldapprovider", "ak-application-wizard-provider-for-ldap"], - ["oauth2provider", "ak-application-wizard-provider-for-oauth"], - ["proxyprovider", "ak-application-wizard-provider-for-proxy"], - ["racprovider", "ak-application-wizard-provider-for-rac"], - ["radiusprovider", "ak-application-wizard-provider-for-radius"], - ["samlprovider", "ak-application-wizard-provider-for-saml"], - ["samlproviderimportmodel", "ak-application-wizard-provider-for-saml-metadata"], - ["scimprovider", "ak-application-wizard-provider-for-scim"], -]); +const providerToTag = { + ldapprovider: "ak-application-wizard-provider-for-ldap", + oauth2provider: "ak-application-wizard-provider-for-oauth", + proxyprovider: "ak-application-wizard-provider-for-proxy", + racprovider: "ak-application-wizard-provider-for-rac", + radiusprovider: "ak-application-wizard-provider-for-radius", + samlprovider: "ak-application-wizard-provider-for-saml", + samlproviderimportmodel: "ak-application-wizard-provider-for-saml-metadata", + scimprovider: "ak-application-wizard-provider-for-scim", + wsfederationprovider: "ak-application-wizard-provider-for-wsfed", +} as const satisfies Record; +type ProviderModel = keyof typeof providerToTag; + +/** + * @prop wizard - The current state of the application wizard, shared across all steps. + */ @customElement("ak-application-wizard-provider-step") export class ApplicationWizardProviderStep extends ApplicationWizardStep { @state() - label = msg("Configure Provider"); + public override label = msg("Configure Provider"); @query("#providerform") protected element!: ApplicationWizardProviderForm; @@ -62,36 +72,38 @@ export class ApplicationWizardProviderStep extends ApplicationWizardStep { return this.element.formValues; } - override handleButton(button: NavigableButton) { + public override handleButton(button: NavigableButton) { if (button.kind === "next") { if (!this.valid) { - this.handleEnabling({ + this.dispatchNavigationEvent({ disabled: ["bindings", "submit"], }); return; } + const payload = { provider: { ...this.formValues, mode: this.wizard.proxyMode, }, - errors: this.removeErrors("provider"), + errors: omitKeys(this.wizard.errors, "provider"), }; - this.handleUpdate(payload, button.destination, { - enable: ["bindings", "submit"], + + return this.dispatchEvents({ + update: payload, + destination: button.destination, + details: { enable: ["bindings", "submit"] }, }); - return; } - super.handleButton(button); + + return super.handleButton(button); } - get buttons(): WizardButton[] { - return [ - { kind: "next", destination: "bindings" }, - { kind: "back", destination: "provider-choice" }, - { kind: "cancel" }, - ]; - } + protected buttons: WizardButton[] = [ + { kind: "cancel" }, + { kind: "back", destination: "provider-choice" }, + { kind: "next", destination: "bindings" }, + ]; renderMain() { if (!this.wizard.providerModel) { @@ -101,19 +113,21 @@ export class ApplicationWizardProviderStep extends ApplicationWizardStep { // This is, I'm afraid, some rather esoteric bit of Lit-ing, and it makes ESLint // sad. It does allow us to get away with specifying very little about the // provider here. - const tag = providerToTag.get(this.wizard.providerModel); - return tag - ? // eslint-disable-next-line lit/binding-positions,lit/no-invalid-html - html`<${unsafeStatic(tag)} - id="providerform" - .wizard=${this.wizard} - .errors=${this.wizard.errors?.provider ?? {}} + const tag = providerToTag[this.wizard.providerModel as ProviderModel]; - >` - : nothing; + if (!tag) { + this.logger.warn( + `No provider form found for provider model ${this.wizard.providerModel}`, + ); + + return nothing; + } + + return StrictUnsafe>(tag, { + wizard: this.wizard, + id: "providerform", + errors: this.wizard.errors?.provider ?? {}, + }); } updated(changed: PropertyValues) { diff --git a/web/src/admin/applications/wizard/steps/ak-application-wizard-submit-step.ts b/web/src/admin/applications/wizard/steps/ak-application-wizard-submit-step.ts index b7548db7f8..2bacaa752f 100644 --- a/web/src/admin/applications/wizard/steps/ak-application-wizard-submit-step.ts +++ b/web/src/admin/applications/wizard/steps/ak-application-wizard-submit-step.ts @@ -1,18 +1,20 @@ -import "#admin/applications/wizard/ak-wizard-title"; - -import { ApplicationWizardStep } from "../ApplicationWizardStep.js"; -import { isApplicationTransactionValidationError, OneOfProvider } from "../types.js"; -import { providerRenderers } from "./SubmitStepOverviewRenderers.js"; - import { DEFAULT_CONFIG } from "#common/api/config"; import { EVENT_REFRESH } from "#common/constants"; import { parseAPIResponseError } from "#common/errors/network"; import { showAPIErrorMessage } from "#elements/messages/MessageContainer"; +import { SlottedTemplateResult } from "#elements/types"; import { CustomEmitterElement } from "#elements/utils/eventEmitter"; import { WizardNavigationEvent } from "#components/ak-wizard/events"; -import { type WizardButton } from "#components/ak-wizard/types"; +import { type WizardButton } from "#components/ak-wizard/shared"; + +import { ApplicationWizardStep } from "#admin/applications/wizard/ApplicationWizardStep"; +import { + isApplicationTransactionValidationError, + OneOfProvider, +} from "#admin/applications/wizard/steps/providers/shared"; +import { providerRenderers } from "#admin/applications/wizard/steps/SubmitStepOverviewRenderers"; import { type ApplicationRequest, @@ -26,7 +28,6 @@ import { type ProvidersSamlImportMetadataCreateRequest, ProxyMode, type ProxyProviderRequest, - type SAMLProvider, type TransactionApplicationRequest, type TransactionApplicationResponse, type TransactionPolicyBindingRequest, @@ -35,11 +36,10 @@ import { import { match, P } from "ts-pattern"; import { msg } from "@lit/localize"; -import { css, html, nothing, TemplateResult } from "lit"; +import { css, html, nothing } from "lit"; import { customElement, state } from "lit/decorators.js"; import { classMap } from "lit/directives/class-map.js"; -// import { map } from "lit/directives/map.js"; import PFDescriptionList from "@patternfly/patternfly/components/DescriptionList/description-list.css"; import PFEmptyState from "@patternfly/patternfly/components/EmptyState/empty-state.css"; import PFProgressStepper from "@patternfly/patternfly/components/ProgressStepper/progress-stepper.css"; @@ -51,19 +51,22 @@ type SubmitStates = (typeof _submitStates)[number]; type StrictProviderModelEnum = Exclude; -const providerMap: Map = Object.values(ProviderModelEnum) - .filter((value) => /^authentik_providers_/.test(value) && /provider$/.test(value)) - .reduce((acc: Map, value) => { - acc.set(value.split(".")[1], value); +const providerMap: Map = Object.values(ProviderModelEnum) + .filter((value): value is StrictProviderModelEnum => { + return /^authentik_providers_/.test(value) && /provider$/.test(value); + }) + .reduce((acc: Map, value) => { + const key = value.split(".")[1]; + acc.set(key, value); + return acc; }, new Map()); type NonEmptyArray = [T, ...T[]]; -type MaybeTemplateResult = TemplateResult | typeof nothing; - -// eslint-disable-next-line @typescript-eslint/no-explicit-any -const isNotEmpty = (arr: any): arr is NonEmptyArray => Array.isArray(arr) && arr.length > 0; +function isNotEmpty(arr: T[] | undefined): arr is NonEmptyArray { + return Array.isArray(arr) && arr.length > 0; +} const cleanApplication = (app: Partial): ApplicationRequest => ({ name: "", @@ -99,10 +102,10 @@ export class ApplicationWizardSubmitStep extends CustomEmitterElement(Applicatio `, ]; - label = msg("Review and Submit Application"); + public override label = msg("Review and Submit Application"); @state() - state: SubmitStates = "reviewing"; + protected state: SubmitStates = "reviewing"; async sendSAMLMetadataImport() { const providerData = this.wizard.provider as ProvidersSamlImportMetadataCreateRequest; @@ -112,12 +115,12 @@ export class ApplicationWizardSubmitStep extends CustomEmitterElement(Applicatio try { // Step 1: Import SAML metadata to create the provider - const createdProvider = (await providersApi.providersSamlImportMetadataCreate({ + const createdProvider = await providersApi.providersSamlImportMetadataCreate({ file: providerData.file, name: providerData.name, authorizationFlow: providerData.authorizationFlow || "", invalidationFlow: providerData.invalidationFlow || "", - })) as unknown as SAMLProvider; + }); // Step 2: Create the application linked to the provider const appData = cleanApplication(this.wizard.app); @@ -149,7 +152,7 @@ export class ApplicationWizardSubmitStep extends CustomEmitterElement(Applicatio return; } - this.handleUpdate({ errors: parsedError }); + this.dispatchEvents({ update: { errors: parsedError } }); this.state = "reviewing"; } } @@ -158,12 +161,12 @@ export class ApplicationWizardSubmitStep extends CustomEmitterElement(Applicatio const app = this.wizard.app; const provider = this.wizard.provider as ModelRequest; - if (app === undefined) { - throw new Error("Reached the submit state with the app undefined"); + if (!app) { + throw new Error("Reached the submit state without the application initialized"); } - if (provider === undefined) { - throw new Error("Reached the submit state with the provider undefined"); + if (!provider) { + throw new Error("Reached the submit state without the provider initialized"); } this.state = "running"; @@ -176,14 +179,21 @@ export class ApplicationWizardSubmitStep extends CustomEmitterElement(Applicatio // Stringly-based API. Not the best, but it works. Just be aware that it is // stringly-based. - const providerModel = providerMap.get(this.wizard.providerModel) as StrictProviderModelEnum; + const providerModel = providerMap.get(this.wizard.providerModel); + + if (!providerModel) { + throw new TypeError("Unrecognized provider model: " + this.wizard.providerModel); + } + provider.providerModel = providerModel; // Special case for the Proxy provider. if (this.wizard.providerModel === "proxyprovider") { - (provider as ProxyProviderRequest).mode = this.wizard.proxyMode; - if ((provider as ProxyProviderRequest).mode !== ProxyMode.ForwardDomain) { - (provider as ProxyProviderRequest).cookieDomain = ""; + const proxyProviderRequest = provider as ProxyProviderRequest; + proxyProviderRequest.mode = this.wizard.proxyMode; + + if (proxyProviderRequest.mode !== ProxyMode.ForwardDomain) { + proxyProviderRequest.cookieDomain = ""; } } @@ -231,12 +241,12 @@ export class ApplicationWizardSubmitStep extends CustomEmitterElement(Applicatio } } - this.handleUpdate({ errors: parsedError }); + this.dispatchEvents({ update: { errors: parsedError } }); this.state = "reviewing"; }); } - override handleButton(button: WizardButton) { + public override handleButton(button: WizardButton) { match([button.kind, this.state]) .with([P.union("back", "cancel"), P._], () => { super.handleButton(button); @@ -257,19 +267,22 @@ export class ApplicationWizardSubmitStep extends CustomEmitterElement(Applicatio }); } - get buttons(): WizardButton[] { - const forReview: WizardButton[] = [ - { kind: "next", label: msg("Submit"), destination: "here" }, - { kind: "back", destination: "bindings" }, - { kind: "cancel" }, - ]; - - const forSubmit: WizardButton[] = [{ kind: "close" }]; - + protected get buttons(): WizardButton[] { return match(this.state) - .with("submitted", () => forSubmit) + .with("submitted", () => { + return [ + { kind: "close" }, + { kind: "finish", destination: "close" }, + ] satisfies WizardButton[]; + }) + .with("reviewing", () => { + return [ + { kind: "cancel" }, + { kind: "back", destination: "bindings" }, + { kind: "next", label: msg("Create Application"), destination: "here" }, + ] satisfies WizardButton[]; + }) .with("running", () => []) - .with("reviewing", () => forReview) .exhaustive(); } @@ -277,7 +290,7 @@ export class ApplicationWizardSubmitStep extends CustomEmitterElement(Applicatio state: string, label: string, icons: string[], - extraInfo: MaybeTemplateResult = nothing, + extraInfo: SlottedTemplateResult = nothing, ) { const icon = classMap(icons.reduce((acc, icon) => ({ ...acc, [icon]: true }), {})); @@ -365,36 +378,53 @@ export class ApplicationWizardSubmitStep extends CustomEmitterElement(Applicatio const metaLaunchUrl = app.metaLaunchUrl?.trim(); - return html` -
- ${msg("Review the Application and Provider")} -

${msg("Application")}

-
-
-
${msg("Name")}
-
${app.name}
-
-
-
${msg("Group")}
-
${app.group || msg("-")}
-
-
-
${msg("Policy engine mode")}
-
- ${app.policyEngineMode?.toUpperCase()} -
-
- ${metaLaunchUrl - ? html`
-
${msg("Launch URL")}
-
${metaLaunchUrl}
-
` - : nothing} -
- ${renderer - ? html`

${msg("Provider")}

- ${renderer(provider)}` - : nothing} + return html`

+ ${msg("Review the Application and Provider")} +

+
+ ${msg("Application Details")} +
+
+
${msg("Application Name")}
+
${app.name}
+
+
+
${msg("Group")}
+
+ ${app.group || msg("-")} +
+
+
+
+ ${msg("Policy engine mode")} +
+
+ ${app.policyEngineMode?.toUpperCase()} +
+
+ ${ + metaLaunchUrl + ? html`
+
+ ${msg("Launch URL")} +
+
+ ${metaLaunchUrl} +
+
` + : nothing + } +
+
+ + ${ + renderer + ? html`
+ ${msg("Provider Details")} + ${renderer(provider)} +
` + : null + }
`; } diff --git a/web/src/admin/applications/wizard/steps/bindings/ak-application-wizard-bindings-toolbar.ts b/web/src/admin/applications/wizard/steps/bindings/ak-application-wizard-bindings-toolbar.ts index 47a078ae84..ea87a9c17d 100644 --- a/web/src/admin/applications/wizard/steps/bindings/ak-application-wizard-bindings-toolbar.ts +++ b/web/src/admin/applications/wizard/steps/bindings/ak-application-wizard-bindings-toolbar.ts @@ -17,7 +17,7 @@ export class ApplicationWizardBindingsToolbar extends AKElement { static styles = [PFButton, PFToolbar]; @property({ type: Boolean, attribute: "can-delete", reflect: true }) - canDelete = false; + public canDelete = false; notify(eventName: string) { this.dispatchEvent(new Event(eventName, { bubbles: true, composed: true })); diff --git a/web/src/admin/applications/wizard/steps/providers/ApplicationWizardProviderForm.ts b/web/src/admin/applications/wizard/steps/providers/ApplicationWizardProviderForm.ts index eb154bad1a..ab215652c8 100644 --- a/web/src/admin/applications/wizard/steps/providers/ApplicationWizardProviderForm.ts +++ b/web/src/admin/applications/wizard/steps/providers/ApplicationWizardProviderForm.ts @@ -5,27 +5,35 @@ import "#components/ak-text-input"; import "#elements/forms/FormGroup"; import "#elements/forms/HorizontalFormElement"; -import { styles as ApplicationWizardStyles } from "../../ApplicationWizardFormStepStyles.styles.js"; -import { type ApplicationWizardState, type OneOfProvider } from "../../types.js"; - import { AKElement } from "#elements/Base"; -import { serializeForm } from "#elements/forms/Form"; +import { serializeForm } from "#elements/forms/serialization"; + +import { ApplicationWizardStyles } from "#admin/applications/wizard/ApplicationWizardFormStepStyles.styles"; +import { + ApplicationTransactionValidationError, + type ApplicationWizardContext, + ApplicationWizardStateError, + type OneOfProvider, +} from "#admin/applications/wizard/steps/providers/shared"; import { snakeCase } from "change-case"; import { CSSResult } from "lit"; import { property, query } from "lit/decorators.js"; -export abstract class ApplicationWizardProviderForm extends AKElement { +export abstract class ApplicationWizardProviderForm< + P extends OneOfProvider, + E extends ApplicationWizardStateError = ApplicationTransactionValidationError, +> extends AKElement { static styles: CSSResult[] = [...ApplicationWizardStyles]; - label = ""; + public abstract label: string; @property({ type: Object, attribute: false }) - wizard!: ApplicationWizardState; + public wizard!: ApplicationWizardContext; @property({ type: Object, attribute: false }) - errors: Record = {}; + public errors: E = {} as E; @query("form#providerform") public form!: HTMLFormElement | null; @@ -42,23 +50,20 @@ export abstract class ApplicationWizardProviderForm ext } get valid() { - this.errors = {}; + this.errors = {} as E; return !!this.form?.checkValidity(); } - errorMessages(name: string) { - return name in this.errors - ? [this.errors[name]] - : (this.wizard.errors?.provider?.[name] ?? - this.wizard.errors?.provider?.[snakeCase(name)] ?? - []); - } + errorMessages>(name: T): Array { + if (name in this.errors) { + return [this.errors[name]]; + } - isValid(name: keyof T) { - return !( - (this.wizard.errors?.provider?.[name as string] ?? []).length > 0 || - this.errors?.[name] !== undefined + return ( + this.wizard.errors?.provider?.[name] ?? + this.wizard.errors?.provider?.[snakeCase(name) as keyof E] ?? + [] ); } } diff --git a/web/src/admin/applications/wizard/steps/providers/ak-application-wizard-provider-for-ldap.ts b/web/src/admin/applications/wizard/steps/providers/ak-application-wizard-provider-for-ldap.ts index bbca20e1e7..f8217371bc 100644 --- a/web/src/admin/applications/wizard/steps/providers/ak-application-wizard-provider-for-ldap.ts +++ b/web/src/admin/applications/wizard/steps/providers/ak-application-wizard-provider-for-ldap.ts @@ -1,10 +1,10 @@ -import "#admin/applications/wizard/ak-wizard-title"; - -import { ApplicationWizardProviderForm } from "./ApplicationWizardProviderForm.js"; - import { WithBrandConfig } from "#elements/mixins/branding"; -import { ValidationRecord } from "#admin/applications/wizard/types"; +import { ApplicationWizardProviderForm } from "#admin/applications/wizard/steps/providers/ApplicationWizardProviderForm"; +import { + ApplicationTransactionValidationError, + WizardValidationRecord, +} from "#admin/applications/wizard/steps/providers/shared"; import { renderForm } from "#admin/providers/ldap/LDAPProviderFormForm"; import type { LDAPProvider } from "@goauthentik/api"; @@ -15,27 +15,22 @@ import { customElement } from "lit/decorators.js"; @customElement("ak-application-wizard-provider-for-ldap") export class ApplicationWizardLdapProviderForm extends WithBrandConfig( - ApplicationWizardProviderForm, + ApplicationWizardProviderForm, ) { label = msg("Configure LDAP Provider"); - renderForm(provider: LDAPProvider, errors: ValidationRecord) { - return html` - ${this.label} + renderForm(provider: LDAPProvider, errors: WizardValidationRecord) { + return html`

${this.label}

${renderForm({ provider, errors, brand: this.brand })} -
- `; + `; } render() { if (!(this.wizard.provider && this.wizard.errors)) { throw new Error("LDAP Provider Step received uninitialized wizard context."); } - return this.renderForm( - this.wizard.provider as LDAPProvider, - this.wizard.errors.provider ?? {}, - ); + return this.renderForm(this.wizard.provider, this.wizard.errors.provider ?? {}); } } diff --git a/web/src/admin/applications/wizard/steps/providers/ak-application-wizard-provider-for-oauth.ts b/web/src/admin/applications/wizard/steps/providers/ak-application-wizard-provider-for-oauth.ts index 58914d4fee..d4a11985c2 100644 --- a/web/src/admin/applications/wizard/steps/providers/ak-application-wizard-provider-for-oauth.ts +++ b/web/src/admin/applications/wizard/steps/providers/ak-application-wizard-provider-for-oauth.ts @@ -1,25 +1,17 @@ -import "#admin/applications/wizard/ak-wizard-title"; - -import { ApplicationTransactionValidationError } from "../../types.js"; -import { ApplicationWizardProviderForm } from "./ApplicationWizardProviderForm.js"; - import { DEFAULT_CONFIG } from "#common/api/config"; +import { ApplicationWizardProviderForm } from "#admin/applications/wizard/steps/providers/ApplicationWizardProviderForm"; +import { ApplicationTransactionValidationError } from "#admin/applications/wizard/steps/providers/shared"; import { renderForm } from "#admin/providers/oauth2/OAuth2ProviderFormForm"; -import { - type OAuth2Provider, - OAuth2ProviderRequest, - type PaginatedOAuthSourceList, - SourcesApi, -} from "@goauthentik/api"; +import { type OAuth2Provider, type PaginatedOAuthSourceList, SourcesApi } from "@goauthentik/api"; import { msg } from "@lit/localize"; import { html } from "lit"; import { customElement, state } from "lit/decorators.js"; @customElement("ak-application-wizard-provider-for-oauth") -export class ApplicationWizardOauth2ProviderForm extends ApplicationWizardProviderForm { +export class ApplicationWizardOauth2ProviderForm extends ApplicationWizardProviderForm { label = msg("Configure OAuth2 Provider"); @state() @@ -50,7 +42,7 @@ export class ApplicationWizardOauth2ProviderForm extends ApplicationWizardProvid const showLogoutMethodCallback = (show: boolean) => { this.showLogoutMethod = show; }; - return html` ${this.label} + return html`

${this.label}

${renderForm({ provider, @@ -67,7 +59,7 @@ export class ApplicationWizardOauth2ProviderForm extends ApplicationWizardProvid if (!(this.wizard.provider && this.wizard.errors)) { throw new Error("Oauth2 Provider Step received uninitialized wizard context."); } - return this.renderForm(this.wizard.provider as OAuth2Provider, this.wizard.errors); + return this.renderForm(this.wizard.provider, this.wizard.errors); } } diff --git a/web/src/admin/applications/wizard/steps/providers/ak-application-wizard-provider-for-proxy.ts b/web/src/admin/applications/wizard/steps/providers/ak-application-wizard-provider-for-proxy.ts index 625dede6d6..570455cd2b 100644 --- a/web/src/admin/applications/wizard/steps/providers/ak-application-wizard-provider-for-proxy.ts +++ b/web/src/admin/applications/wizard/steps/providers/ak-application-wizard-provider-for-proxy.ts @@ -1,10 +1,7 @@ -import "#admin/applications/wizard/ak-wizard-title"; - -import { ApplicationWizardProviderForm } from "./ApplicationWizardProviderForm.js"; - import { WizardUpdateEvent } from "#components/ak-wizard/events"; -import { ValidationRecord } from "#admin/applications/wizard/types"; +import { ApplicationWizardProviderForm } from "#admin/applications/wizard/steps/providers/ApplicationWizardProviderForm"; +import { WizardValidationRecord } from "#admin/applications/wizard/steps/providers/shared"; import { ProxyModeValue, renderForm, @@ -25,7 +22,7 @@ export class ApplicationWizardProxyProviderForm extends ApplicationWizardProvide @state() showHttpBasic = true; - renderForm(provider: ProxyProvider, errors: ValidationRecord) { + protected renderForm(provider: ProxyProvider, errors: WizardValidationRecord = {}) { const onSetMode: SetMode = (ev: CustomEvent) => { this.dispatchEvent( new WizardUpdateEvent({ ...this.wizard, proxyMode: ev.detail.value }), @@ -40,7 +37,7 @@ export class ApplicationWizardProxyProviderForm extends ApplicationWizardProvide this.showHttpBasic = el.checked; }; - return html` ${this.label} + return html`

${this.label}

${renderForm({ provider, @@ -59,10 +56,7 @@ export class ApplicationWizardProxyProviderForm extends ApplicationWizardProvide if (!(this.wizard.provider && this.wizard.errors)) { throw new Error("Proxy Provider Step received uninitialized wizard context."); } - return this.renderForm( - this.wizard.provider as ProxyProvider, - this.wizard.errors?.provider ?? {}, - ); + return this.renderForm(this.wizard.provider, this.wizard.errors?.provider); } } diff --git a/web/src/admin/applications/wizard/steps/providers/ak-application-wizard-provider-for-rac.ts b/web/src/admin/applications/wizard/steps/providers/ak-application-wizard-provider-for-rac.ts index 46a149e5c7..9f64f2d73e 100644 --- a/web/src/admin/applications/wizard/steps/providers/ak-application-wizard-provider-for-rac.ts +++ b/web/src/admin/applications/wizard/steps/providers/ak-application-wizard-provider-for-rac.ts @@ -1,18 +1,16 @@ -import "#admin/applications/wizard/ak-wizard-title"; import "#admin/common/ak-crypto-certificate-search"; import "#admin/common/ak-flow-search/ak-flow-search"; import "#components/ak-text-input"; import "#elements/CodeMirror"; import "#elements/ak-dual-select/ak-dual-select-dynamic-selected-provider"; -import { ApplicationWizardProviderForm } from "./ApplicationWizardProviderForm.js"; - +import { ApplicationWizardProviderForm } from "#admin/applications/wizard/steps/providers/ApplicationWizardProviderForm"; import { propertyMappingsProvider, propertyMappingsSelector, } from "#admin/providers/rac/RACProviderFormHelpers"; -import { FlowsInstancesListDesignationEnum, type RACProvider } from "@goauthentik/api"; +import { FlowDesignationEnum, type RACProvider } from "@goauthentik/api"; import { msg } from "@lit/localize"; import { html } from "lit"; @@ -24,8 +22,7 @@ export class ApplicationWizardRACProviderForm extends ApplicationWizardProviderF label = msg("Configure Remote Access Provider"); renderForm(provider: RACProvider) { - return html` - ${this.label} + return html`

${this.label}

@@ -76,15 +73,14 @@ export class ApplicationWizardRACProviderForm extends ApplicationWizardProviderF
- - `; + `; } render() { if (!(this.wizard.provider && this.wizard.errors)) { throw new Error("RAC Provider Step received uninitialized wizard context."); } - return this.renderForm(this.wizard.provider as RACProvider); + return this.renderForm(this.wizard.provider); } } diff --git a/web/src/admin/applications/wizard/steps/providers/ak-application-wizard-provider-for-radius.ts b/web/src/admin/applications/wizard/steps/providers/ak-application-wizard-provider-for-radius.ts index f6f0164b70..c2341019a1 100644 --- a/web/src/admin/applications/wizard/steps/providers/ak-application-wizard-provider-for-radius.ts +++ b/web/src/admin/applications/wizard/steps/providers/ak-application-wizard-provider-for-radius.ts @@ -1,10 +1,7 @@ -import "#admin/applications/wizard/ak-wizard-title"; - -import { ApplicationWizardProviderForm } from "./ApplicationWizardProviderForm.js"; - import { WithBrandConfig } from "#elements/mixins/branding"; -import { ValidationRecord } from "#admin/applications/wizard/types"; +import { ApplicationWizardProviderForm } from "#admin/applications/wizard/steps/providers/ApplicationWizardProviderForm"; +import { WizardValidationRecord } from "#admin/applications/wizard/steps/providers/shared"; import { renderForm } from "#admin/providers/radius/RadiusProviderFormForm"; import { RadiusProvider } from "@goauthentik/api"; @@ -19,8 +16,8 @@ export class ApplicationWizardRadiusProviderForm extends WithBrandConfig( ) { label = msg("Configure Radius Provider"); - renderForm(provider: RadiusProvider, errors: ValidationRecord) { - return html` ${this.label} + renderForm(provider: RadiusProvider, errors: WizardValidationRecord = {}) { + return html`

${this.label}

${renderForm({ provider, errors, brand: this.brand })}
`; @@ -30,10 +27,7 @@ export class ApplicationWizardRadiusProviderForm extends WithBrandConfig( if (!(this.wizard.provider && this.wizard.errors)) { throw new Error("RAC Provider Step received uninitialized wizard context."); } - return this.renderForm( - this.wizard.provider as RadiusProvider, - this.wizard.errors?.provider ?? {}, - ); + return this.renderForm(this.wizard.provider, this.wizard.errors?.provider); } } diff --git a/web/src/admin/applications/wizard/steps/providers/ak-application-wizard-provider-for-saml-metadata.ts b/web/src/admin/applications/wizard/steps/providers/ak-application-wizard-provider-for-saml-metadata.ts index db031b5503..ed14d0db6b 100644 --- a/web/src/admin/applications/wizard/steps/providers/ak-application-wizard-provider-for-saml-metadata.ts +++ b/web/src/admin/applications/wizard/steps/providers/ak-application-wizard-provider-for-saml-metadata.ts @@ -1,9 +1,6 @@ -import "#admin/applications/wizard/ak-wizard-title"; - -import { ApplicationWizardProviderForm } from "./ApplicationWizardProviderForm.js"; - import { createFileMap } from "#elements/utils/inputs"; +import { ApplicationWizardProviderForm } from "#admin/applications/wizard/steps/providers/ApplicationWizardProviderForm"; import { renderForm } from "#admin/providers/saml/SAMLProviderImportFormForm"; import type { ProvidersSamlImportMetadataCreateRequest } from "@goauthentik/api"; @@ -31,12 +28,10 @@ export class ApplicationWizardProviderSamlMetadataForm extends ApplicationWizard } renderForm() { - return html` - ${this.label} + return html`

${this.label}

${renderForm(this.wizard.provider)} -
- `; + `; } render() { diff --git a/web/src/admin/applications/wizard/steps/providers/ak-application-wizard-provider-for-saml.ts b/web/src/admin/applications/wizard/steps/providers/ak-application-wizard-provider-for-saml.ts index 474f4348af..f8192b29a6 100644 --- a/web/src/admin/applications/wizard/steps/providers/ak-application-wizard-provider-for-saml.ts +++ b/web/src/admin/applications/wizard/steps/providers/ak-application-wizard-provider-for-saml.ts @@ -1,8 +1,6 @@ -import "#admin/applications/wizard/ak-wizard-title"; import "#elements/forms/FormGroup"; -import { ApplicationWizardProviderForm } from "./ApplicationWizardProviderForm.js"; - +import { ApplicationWizardProviderForm } from "#admin/applications/wizard/steps/providers/ApplicationWizardProviderForm"; import { type AkCryptoCertificateSearch } from "#admin/common/ak-crypto-certificate-search"; import { renderForm } from "#admin/providers/saml/SAMLProviderFormForm"; @@ -81,10 +79,10 @@ export class ApplicationWizardProviderSamlForm extends ApplicationWizardProvider this.logoutMethod = target.value; }; - return html` ${this.label} + return html`

${this.label}

${renderForm({ - provider: this.wizard.provider as SAMLProvider, + provider: this.wizard.provider, errors: this.wizard.errors?.provider, setHasSigningKp, hasSigningKp: this.hasSigningKp, diff --git a/web/src/admin/applications/wizard/steps/providers/ak-application-wizard-provider-for-scim.ts b/web/src/admin/applications/wizard/steps/providers/ak-application-wizard-provider-for-scim.ts index 04e99d49b8..d89a2adb18 100644 --- a/web/src/admin/applications/wizard/steps/providers/ak-application-wizard-provider-for-scim.ts +++ b/web/src/admin/applications/wizard/steps/providers/ak-application-wizard-provider-for-scim.ts @@ -1,8 +1,6 @@ -import "#admin/applications/wizard/ak-wizard-title"; import "#elements/forms/FormGroup"; -import { ApplicationWizardProviderForm } from "./ApplicationWizardProviderForm.js"; - +import { ApplicationWizardProviderForm } from "#admin/applications/wizard/steps/providers/ApplicationWizardProviderForm"; import { renderForm } from "#admin/providers/scim/SCIMProviderFormForm"; import { PaginatedSCIMMappingList, type SCIMProvider } from "@goauthentik/api"; @@ -19,11 +17,11 @@ export class ApplicationWizardSCIMProvider extends ApplicationWizardProviderForm propertyMappings?: PaginatedSCIMMappingList; render() { - return html`${this.label} + return html`

${this.label}

${renderForm({ update: this.requestUpdate.bind(this), - provider: this.wizard.provider as SCIMProvider, + provider: this.wizard.provider, errors: this.wizard.errors.provider, })}
`; diff --git a/web/src/admin/applications/wizard/steps/providers/ak-application-wizard-provider-for-wsfed.ts b/web/src/admin/applications/wizard/steps/providers/ak-application-wizard-provider-for-wsfed.ts new file mode 100644 index 0000000000..029567de2d --- /dev/null +++ b/web/src/admin/applications/wizard/steps/providers/ak-application-wizard-provider-for-wsfed.ts @@ -0,0 +1,56 @@ +import "#elements/forms/FormGroup"; + +import { ApplicationWizardProviderForm } from "./ApplicationWizardProviderForm.js"; + +import { type AkCryptoCertificateSearch } from "#admin/common/ak-crypto-certificate-search"; +import { renderForm } from "#admin/providers/wsfed/WSFederationProviderFormForm"; + +import { KeyTypeEnum, type WSFederationProvider } from "@goauthentik/api"; + +import { msg } from "@lit/localize"; +import { customElement, state } from "@lit/reactive-element/decorators.js"; +import { html } from "lit"; + +@customElement("ak-application-wizard-provider-for-wsfed") +export class ApplicationWizardProviderWSFedForm extends ApplicationWizardProviderForm { + label = msg("Configure WS-Federation Provider"); + + @state() + protected hasSigningKp = false; + + @state() + protected signingKeyType: KeyTypeEnum | null = null; + + renderForm() { + const setHasSigningKp = (ev: InputEvent) => { + const target = ev.target as AkCryptoCertificateSearch; + if (!target) return; + this.hasSigningKp = !!target.selectedKeypair; + this.signingKeyType = target.selectedKeypair?.keyType ?? KeyTypeEnum.Rsa; + }; + + return html`

${this.label}

+
+ ${renderForm({ + provider: this.wizard.provider as WSFederationProvider, + errors: this.wizard.errors?.provider, + setHasSigningKp, + hasSigningKp: this.hasSigningKp, + signingKeyType: this.signingKeyType, + })} +
`; + } + + render() { + if (!(this.wizard.provider && this.wizard.errors)) { + throw new Error("WS-Federation Provider Step received uninitialized wizard context."); + } + return this.renderForm(); + } +} + +declare global { + interface HTMLElementTagNameMap { + "ak-application-wizard-provider-for-wsfed": ApplicationWizardProviderWSFedForm; + } +} diff --git a/web/src/admin/applications/wizard/types.ts b/web/src/admin/applications/wizard/steps/providers/shared.ts similarity index 63% rename from web/src/admin/applications/wizard/types.ts rename to web/src/admin/applications/wizard/steps/providers/shared.ts index 5e20ffe612..1ccd5f274f 100644 --- a/web/src/admin/applications/wizard/types.ts +++ b/web/src/admin/applications/wizard/steps/providers/shared.ts @@ -11,29 +11,38 @@ import { type SAMLProviderRequest, type SCIMProviderRequest, type ValidationError, + type WSFederationProviderRequest, } from "@goauthentik/api"; -export type OneOfProvider = - | Partial - | Partial - | Partial - | Partial - | Partial - | Partial - | Partial - | Partial; +export type OneOfProvider = Partial< + | SCIMProviderRequest + | SAMLProviderRequest + | ProvidersSamlImportMetadataCreateRequest + | RACProviderRequest + | RadiusProviderRequest + | ProxyProviderRequest + | OAuth2ProviderRequest + | LDAPProviderRequest + | WSFederationProviderRequest +>; -export type ValidationRecord = { [key: string]: string[] }; +export type WizardValidationRecord = { + [key in K]: string[] | undefined; +}; /** * An error that occurs during the creation or modification of an application. * * @todo (Elf) Extend this type to include all possible errors that can occur during the creation or modification of an application. */ -export interface ApplicationTransactionValidationError extends ValidationError { - app?: ValidationRecord; - provider?: ValidationRecord; - bindings?: ValidationRecord; +export interface ApplicationTransactionValidationError extends Pick< + ValidationError, + "code" | "nonFieldErrors" +> { + app?: WizardValidationRecord; + name?: WizardValidationRecord; + provider?: WizardValidationRecord; + bindings?: WizardValidationRecord; detail?: unknown; } @@ -50,23 +59,28 @@ export function isApplicationTransactionValidationError( return false; } +export type ApplicationWizardStateError = ValidationError | ApplicationTransactionValidationError; + // We use the PolicyBinding instead of the PolicyBindingRequest here, because that gives us a slot // in which to preserve the retrieved policy, group, or user object from the SearchSelect used to // find it, which in turn allows us to create a user-friendly display of bindings on the "List of // configured bindings" page in the wizard. The PolicyBinding is converted into a // PolicyBindingRequest during the submission phase. -export interface ApplicationWizardState { +export interface ApplicationWizardContext< + P extends OneOfProvider = OneOfProvider, + E = ApplicationTransactionValidationError, +> { app: Partial; providerModel: string; - provider: OneOfProvider; + provider: P; proxyMode: ProxyMode; bindings: PolicyBinding[]; currentBinding: number; - errors: ValidationError | ApplicationTransactionValidationError; + errors: E; } -export interface ApplicationWizardStateUpdate { +export interface ApplicationWizardContextUpdate { app?: Partial; providerModel?: string; provider?: OneOfProvider; diff --git a/web/src/admin/blueprints/BlueprintForm.ts b/web/src/admin/blueprints/BlueprintForm.ts index 0d411a03a7..99c3e2a53c 100644 --- a/web/src/admin/blueprints/BlueprintForm.ts +++ b/web/src/admin/blueprints/BlueprintForm.ts @@ -22,7 +22,8 @@ import { ifDefined } from "lit/directives/if-defined.js"; import PFContent from "@patternfly/patternfly/components/Content/content.css"; -enum BlueprintSource { +export enum BlueprintSource { + Upload = "upload", File = "file", OCI = "oci", Internal = "internal", @@ -30,6 +31,9 @@ enum BlueprintSource { @customElement("ak-blueprint-form") export class BlueprintForm extends ModelForm { + public static override verboseName = msg("Blueprint"); + public static override verboseNamePlural = msg("Blueprints"); + @state() protected source: BlueprintSource = BlueprintSource.File; @@ -134,7 +138,7 @@ export class BlueprintForm extends ModelForm { ` : nothing} ${this.source === BlueprintSource.OCI - ? html` { + static styles: CSSResult[] = [...super.styles, PFDescriptionList, PFBanner]; + + public static override verboseName = msg("Flow Blueprint"); + public static override verboseNamePlural = msg("Flow Blueprints"); + public static override createLabel = msg("Import"); + public static override submitVerb = msg("Import"); + public static override submittingVerb = msg("Importing"); + + public override size = PFSize.Medium; + + @state() + protected result: BlueprintImportResult | null = null; + + @state() + protected source: BlueprintSource = BlueprintSource.Upload; + + public override reset(): void { + super.reset(); + + this.source = BlueprintSource.Upload; + this.result = null; + this.nonFieldErrors = null; + } + + getSuccessMessage(): string { + return msg("Successfully imported blueprint."); + } + + async send(data: ManagedBlueprintsImportCreateRequest): Promise { + if (this.source === BlueprintSource.Upload) { + const file = this.files().get("blueprint"); + if (!file) { + throw new PreventFormSubmit("No form data"); + } + data.file = file; + } + const result = await new ManagedApi(DEFAULT_CONFIG).managedBlueprintsImportCreate(data); + if (!result.success) { + this.result = result; + throw new PreventFormSubmit("Failed to import blueprint"); + } + return result; + } + + renderResult(): TemplateResult { + return html` + +
+
+ + + +
+
+
+ + + + `; + } + + protected override renderForm(): TemplateResult { + return html` ) => { + this.reset(); + this.source = ev.detail.value; + }} + > + + + + ${this.source === BlueprintSource.Upload + ? html` + ${this.findSlotted("banner-warning") + ? html`
+ +
` + : null} + + ${AKLabel( + { + slot: "label", + className: "pf-c-form__group-label", + htmlFor: "blueprint", + }, + msg("Blueprint"), + )} + + + +
+

+ ${msg( + ".yaml files, which can be found in the Example Flows documentation", + )} +

+ ${this.findSlotted("read-more-link") + ? html`

+ ${msg("Read more about")}  + +

` + : null} +
+
+ ` + : null} + ${this.source === BlueprintSource.File + ? html` + => { + const items = await new ManagedApi( + DEFAULT_CONFIG, + ).managedBlueprintsAvailableList(); + return items.filter((item) => + query ? item.path.includes(query) : true, + ); + }} + .renderElement=${(item: BlueprintFile): string => { + const name = item.path; + if (item.meta && item.meta.name) { + return `${name} (${item.meta.name})`; + } + return name; + }} + .value=${(item: BlueprintFile | null) => { + return item?.path; + }} + blankable + > + + ` + : nothing} + ${this.result ? this.renderResult() : nothing}`; + } +} + +declare global { + interface HTMLElementTagNameMap { + "ak-blueprint-import-form": BlueprintImportForm; + } +} diff --git a/web/src/admin/blueprints/BlueprintListPage.ts b/web/src/admin/blueprints/BlueprintListPage.ts index a47318baee..fc3d54d680 100644 --- a/web/src/admin/blueprints/BlueprintListPage.ts +++ b/web/src/admin/blueprints/BlueprintListPage.ts @@ -1,6 +1,7 @@ import "#admin/blueprints/BlueprintForm"; import "#admin/rbac/ObjectPermissionModal"; import "#components/ak-status-label"; +import "#admin/blueprints/BlueprintImportForm"; import "#elements/buttons/ActionButton/index"; import "#elements/buttons/SpinnerButton/index"; import "#elements/forms/DeleteBulkForm"; @@ -11,22 +12,27 @@ import "#elements/ak-mdx/ak-mdx"; import { DEFAULT_CONFIG } from "#common/api/config"; import { EVENT_REFRESH } from "#common/constants"; +import { docLink } from "#common/global"; +import { IconEditButton, modalInvoker, ModalInvokerButton } from "#elements/dialogs"; +import { IconPermissionButton } from "#elements/dialogs/components/IconPermissionButton"; import { PaginatedResponse, TableColumn, Timestamp } from "#elements/table/Table"; import { TablePage } from "#elements/table/TablePage"; import { SlottedTemplateResult } from "#elements/types"; +import { BlueprintForm } from "#admin/blueprints/BlueprintForm"; + import { BlueprintInstance, BlueprintInstanceStatusEnum, ManagedApi, ModelEnum, - RbacPermissionsAssignedByRolesListModelEnum, } from "@goauthentik/api"; import { msg, str } from "@lit/localize"; -import { CSSResult, html, nothing, TemplateResult } from "lit"; -import { customElement, property } from "lit/decorators.js"; +import { CSSResult, html, nothing } from "lit"; +import { guard } from "lit-html/directives/guard.js"; +import { customElement } from "lit/decorators.js"; import PFDescriptionList from "@patternfly/patternfly/components/DescriptionList/description-list.css"; @@ -57,27 +63,28 @@ export function formatBlueprintDescription(item: BlueprintInstance): string | nu @customElement("ak-blueprint-list") export class BlueprintListPage extends TablePage { + static styles: CSSResult[] = [...super.styles, PFDescriptionList]; + protected override searchEnabled = true; + public pageTitle = msg("Blueprints"); public pageDescription = msg("Automate and template configuration within authentik."); public pageIcon = "pf-icon pf-icon-blueprint"; - expandable = true; - checkbox = true; - clearOnRefresh = true; + public override expandable = true; + public override checkbox = true; + public override clearOnRefresh = true; + public override searchPlaceholder = msg("Search for a blueprint by name or path..."); - @property() - order = "name"; + public override order = "name"; - static styles: CSSResult[] = [...super.styles, PFDescriptionList]; - - async apiEndpoint(): Promise> { + protected override async apiEndpoint(): Promise> { return new ManagedApi(DEFAULT_CONFIG).managedBlueprintsList( await this.defaultEndpointConfig(), ); } - protected columns: TableColumn[] = [ + protected override columns: TableColumn[] = [ [msg("Name"), "name"], [msg("Status"), "status"], [msg("Last applied"), "last_applied"], @@ -85,7 +92,7 @@ export class BlueprintListPage extends TablePage { [msg("Actions"), null, msg("Row Actions")], ]; - renderToolbarSelected(): TemplateResult { + protected override renderToolbarSelected(): SlottedTemplateResult { const disabled = this.selectedElements.length < 1; return html` { `; } - renderExpanded(item: BlueprintInstance): TemplateResult { + protected override renderExpanded(item: BlueprintInstance): SlottedTemplateResult { const [appLabel, modelName] = ModelEnum.AuthentikBlueprintsBlueprintinstance.split("."); return html`
@@ -143,7 +150,7 @@ export class BlueprintListPage extends TablePage {
`; } - row(item: BlueprintInstance): SlottedTemplateResult[] { + protected override row(item: BlueprintInstance): SlottedTemplateResult[] { const description = formatBlueprintDescription(item); return [ @@ -151,30 +158,16 @@ export class BlueprintListPage extends TablePage { ${description ? html`` : nothing}`, - html`${BlueprintStatus(item)}`, + BlueprintStatus(item), Timestamp(item.lastApplied), html``, - html`
- - ${msg("Update")} - ${msg("Update Blueprint")} - - - - - + html`
+ ${IconEditButton(BlueprintForm, item.pk, item.name)} + ${IconPermissionButton(item.name, { + model: ModelEnum.AuthentikBlueprintsBlueprintinstance, + objectPk: item.pk, + })} + { ]; } - renderObjectCreate(): TemplateResult { - return html` - - ${msg("Create")} - ${msg("Create Blueprint Instance")} - - - - `; + protected override renderObjectCreate(): SlottedTemplateResult { + return guard([], () => { + return [ + ModalInvokerButton(BlueprintForm), + html``, + ]; + }); } } diff --git a/web/src/admin/brands/BrandForm.ts b/web/src/admin/brands/BrandForm.ts index 0fb2134681..272b899314 100644 --- a/web/src/admin/brands/BrandForm.ts +++ b/web/src/admin/brands/BrandForm.ts @@ -1,6 +1,7 @@ import "#admin/common/ak-crypto-certificate-search"; import "#admin/common/ak-flow-search/ak-flow-search"; import "#elements/CodeMirror"; +import "#elements/Alert"; import "#elements/ak-dual-select/ak-dual-select-dynamic-selected-provider"; import "#elements/ak-dual-select/ak-dual-select-provider"; import "#elements/forms/FormGroup"; @@ -14,55 +15,106 @@ import { DEFAULT_CONFIG } from "#common/api/config"; import { DefaultBrand } from "#common/ui/config"; import { ModelForm } from "#elements/forms/ModelForm"; +import { DefaultFlowBackground } from "#elements/utils/images"; import { AKLabel } from "#components/ak-label"; import { certificateProvider, certificateSelector } from "#admin/brands/Certificates"; import { - AdminFileListUsageEnum, Application, + AuthenticationEnum, Brand, CoreApi, CoreApplicationsListRequest, - FlowsInstancesListDesignationEnum, + Flow, + FlowDesignationEnum, + FlowsApi, + UsageEnum, } from "@goauthentik/api"; import YAML from "yaml"; import { msg } from "@lit/localize"; import { html, TemplateResult } from "lit"; -import { customElement } from "lit/decorators.js"; +import { customElement, state } from "lit/decorators.js"; @customElement("ak-brand-form") export class BrandForm extends ModelForm { - loadInstance(pk: string): Promise { - return new CoreApi(DEFAULT_CONFIG).coreBrandsRetrieve({ - brandUuid: pk, + public static override verboseName = msg("Brand"); + public static override verboseNamePlural = msg("Brands"); + + #coreAPI = new CoreApi(DEFAULT_CONFIG); + #flowsAPI = new FlowsApi(DEFAULT_CONFIG); + + @state() + protected lockdownFlowAuthentication: AuthenticationEnum | null = null; + + async loadInstance(pk: string): Promise { + return this.#coreAPI.coreBrandsRetrieve({ brandUuid: pk }).then(async (brand) => { + if (!brand.flowLockdown) { + this.lockdownFlowAuthentication = null; + + return brand; + } + + return this.#flowsAPI + .flowsInstancesList({ flowUuid: brand.flowLockdown }) + .then((flows) => { + this.lockdownFlowAuthentication = flows.results[0]?.authentication ?? null; + + return brand; + }); }); } - getSuccessMessage(): string { + protected lockdownFlowInputListener = (event: Event): void => { + const target = event.currentTarget as HTMLElement & { + selectedFlow?: Flow | null; + }; + this.lockdownFlowAuthentication = target.selectedFlow?.authentication ?? null; + }; + + protected get lockdownWarningVisible(): boolean { + return !!( + this.lockdownFlowAuthentication && + this.lockdownFlowAuthentication !== AuthenticationEnum.RequireAuthenticated + ); + } + + public override getSuccessMessage(): string { return this.instance ? msg("Successfully updated brand.") : msg("Successfully created brand."); } - async send(data: Brand): Promise { + protected override async send(data: Brand): Promise { data.attributes ??= {}; + if (this.instance?.brandUuid) { - return new CoreApi(DEFAULT_CONFIG).coreBrandsPartialUpdate({ + return this.#coreAPI.coreBrandsPartialUpdate({ brandUuid: this.instance.brandUuid, patchedBrandRequest: data, }); } - return new CoreApi(DEFAULT_CONFIG).coreBrandsCreate({ + + return this.#coreAPI.coreBrandsCreate({ brandRequest: data, }); } protected override renderForm(): TemplateResult { - return html` { help=${msg( "Matching is done based on domain suffix, so if you enter domain.tld, foo.domain.tld will still match.", )} + ?autofocus=${!this.instance} > { required name="brandingTitle" placeholder="authentik" - value="${this.instance?.brandingTitle ?? DefaultBrand.brandingTitle}" + value=${brandingTitle} label=${msg("Title")} autocomplete="off" spellcheck="false" @@ -99,8 +152,8 @@ export class BrandForm extends ModelForm { required name="brandingLogo" label=${msg("Logo")} - value="${this.instance?.brandingLogo ?? DefaultBrand.brandingLogo}" - .usage=${AdminFileListUsageEnum.Media} + value=${brandingLogo} + .usage=${UsageEnum.Media} help=${msg("Logo shown in sidebar/header and flow executor.")} > @@ -108,8 +161,8 @@ export class BrandForm extends ModelForm { required name="brandingFavicon" label=${msg("Favicon")} - value="${this.instance?.brandingFavicon ?? DefaultBrand.brandingFavicon}" - .usage=${AdminFileListUsageEnum.Media} + value=${brandingFavicon} + .usage=${UsageEnum.Media} help=${msg("Icon shown in the browser tab.")} > @@ -117,9 +170,8 @@ export class BrandForm extends ModelForm { required name="brandingDefaultFlowBackground" label=${msg("Default flow background")} - value="${this.instance?.brandingDefaultFlowBackground ?? - "/static/dist/assets/images/flow_background.jpg"}" - .usage=${AdminFileListUsageEnum.Media} + value=${defaultFlowBackground} + .usage=${UsageEnum.Media} help=${msg( "Default background used during flow execution. Can be overridden per flow.", )} @@ -138,8 +190,7 @@ export class BrandForm extends ModelForm {

@@ -192,12 +243,12 @@ export class BrandForm extends ModelForm {

@@ -207,12 +258,12 @@ export class BrandForm extends ModelForm {

@@ -225,7 +276,7 @@ export class BrandForm extends ModelForm { @@ -235,7 +286,7 @@ export class BrandForm extends ModelForm { >

@@ -250,7 +301,7 @@ export class BrandForm extends ModelForm { >

@@ -263,7 +314,7 @@ export class BrandForm extends ModelForm { >

@@ -272,6 +323,29 @@ export class BrandForm extends ModelForm { )}

+ + +

+ ${msg( + "Flow used when a user triggers account lockdown (e.g. in case of compromise). Should contain an Account Lockdown stage.", + )} +

+ ${this.lockdownWarningVisible + ? html` + ${msg( + "Account lockdown flows should require authentication so they can only be started from a signed-in session.", + )} + ` + : null} +
diff --git a/web/src/admin/brands/BrandListPage.ts b/web/src/admin/brands/BrandListPage.ts index 4352ce0f2f..75b6cb7b03 100644 --- a/web/src/admin/brands/BrandListPage.ts +++ b/web/src/admin/brands/BrandListPage.ts @@ -8,14 +8,17 @@ import "@patternfly/elements/pf-tooltip/pf-tooltip.js"; import { DEFAULT_CONFIG } from "#common/api/config"; +import { IconEditButton, ModalInvokerButton } from "#elements/dialogs"; import { PaginatedResponse, TableColumn } from "#elements/table/Table"; import { TablePage } from "#elements/table/TablePage"; import { SlottedTemplateResult } from "#elements/types"; -import { Brand, CoreApi, RbacPermissionsAssignedByRolesListModelEnum } from "@goauthentik/api"; +import { BrandForm } from "#admin/brands/BrandForm"; + +import { Brand, CoreApi, ModelEnum } from "@goauthentik/api"; import { msg } from "@lit/localize"; -import { html, TemplateResult } from "lit"; +import { html } from "lit"; import { customElement, property } from "lit/decorators.js"; @customElement("ak-brand-list") @@ -47,8 +50,9 @@ export class BrandListPage extends TablePage { [msg("Actions"), null, msg("Row Actions")], ]; - renderToolbarSelected(): TemplateResult { + protected override renderToolbarSelected(): SlottedTemplateResult { const disabled = this.selectedElements.length < 1; + return html` { `; } - row(item: Brand): SlottedTemplateResult[] { + protected override row(item: Brand): SlottedTemplateResult[] { return [ - html`${item.domain}`, - html`${item.brandingTitle}`, - html``, - html`
- - ${msg("Update")} - ${msg("Update Brand")} - - - + item.domain, + item.brandingTitle || msg("-"), + html``, + html`
+ ${IconEditButton(BrandForm, item.brandUuid, item.brandingTitle)} @@ -98,15 +93,8 @@ export class BrandListPage extends TablePage { ]; } - renderObjectCreate(): TemplateResult { - return html` - - ${msg("Create Brand")} - ${msg("New Brand")} - - - - `; + protected override renderObjectCreate(): SlottedTemplateResult { + return ModalInvokerButton(BrandForm); } } diff --git a/web/src/admin/common/ak-flow-search/FlowSearch.ts b/web/src/admin/common/ak-flow-search/FlowSearch.ts index 568106c3be..ac99a30f0e 100644 --- a/web/src/admin/common/ak-flow-search/FlowSearch.ts +++ b/web/src/admin/common/ak-flow-search/FlowSearch.ts @@ -11,7 +11,7 @@ import { AKFormErrors, ErrorProp } from "#components/ak-field-errors"; import { RenderFlowOption } from "#admin/flows/utils"; import type { Flow, FlowsInstancesListRequest } from "@goauthentik/api"; -import { FlowsApi, FlowsInstancesListDesignationEnum } from "@goauthentik/api"; +import { FlowDesignationEnum, FlowsApi } from "@goauthentik/api"; import { msg } from "@lit/localize"; import { html } from "lit"; @@ -46,7 +46,7 @@ export abstract class FlowSearch extends CustomListenerElement(A * @attr */ @property({ type: String }) - public flowType?: FlowsInstancesListDesignationEnum; + public flowType?: FlowDesignationEnum; /** * The id of the current flow, if any. For stages where the flow is already defined. diff --git a/web/src/admin/common/ak-flow-search/ak-flow-search.stories.ts b/web/src/admin/common/ak-flow-search/ak-flow-search.stories.ts index d70d1618de..d4342b4945 100644 --- a/web/src/admin/common/ak-flow-search/ak-flow-search.stories.ts +++ b/web/src/admin/common/ak-flow-search/ak-flow-search.stories.ts @@ -3,7 +3,7 @@ import "#elements/forms/HorizontalFormElement"; import { AkFlowSearch } from "#admin/common/ak-flow-search/ak-flow-search"; -import { Flow, FlowsInstancesListDesignationEnum } from "@goauthentik/api"; +import { Flow, FlowDesignationEnum } from "@goauthentik/api"; import { Meta } from "@storybook/web-components"; @@ -116,7 +116,7 @@ export const Default = () => name="authorizationFlow" > `, @@ -130,7 +130,7 @@ export const WithInitialValue = () => name="authorizationFlow" > { +export class CryptoCertificateGenerateForm extends Form { + public static override verboseName = msg("Certificate-Key Pair"); + public static override verboseNamePlural = msg("Certificate-Key Pairs"); + public static override createLabel = msg("Generate"); + public static override submitVerb = msg("Generate"); + getSuccessMessage(): string { return msg("Successfully generated certificate-key pair."); } @@ -29,22 +36,31 @@ export class CertificateKeyPairForm extends Form { } protected override renderForm(): TemplateResult { - return html` - - - - -

- ${msg("Optional, comma-separated SubjectAlt Names.")} -

-
- - - + placeholder=${msg("Type a name for this certificate...")} + autofocus + autocomplete="off" + spellcheck="false" + > + + + + { declare global { interface HTMLElementTagNameMap { - "ak-crypto-certificate-generate-form": CertificateKeyPairForm; + "ak-crypto-certificate-generate-form": CryptoCertificateGenerateForm; } } diff --git a/web/src/admin/crypto/CertificateKeyPairForm.ts b/web/src/admin/crypto/CertificateKeyPairForm.ts index e9d56b6b37..5a19e1431c 100644 --- a/web/src/admin/crypto/CertificateKeyPairForm.ts +++ b/web/src/admin/crypto/CertificateKeyPairForm.ts @@ -1,4 +1,5 @@ import "#components/ak-secret-textarea-input"; +import "#components/ak-text-input"; import "#elements/CodeMirror"; import "#elements/forms/HorizontalFormElement"; @@ -14,7 +15,13 @@ import { customElement } from "lit/decorators.js"; import { ifDefined } from "lit/directives/if-defined.js"; @customElement("ak-crypto-certificate-form") -export class CertificateKeyPairForm extends ModelForm { +export class CryptoCertificateForm extends ModelForm { + public static override verboseName = msg("Certificate-Key Pair"); + public static override verboseNamePlural = msg("Certificate-Key Pairs"); + public static override createLabel = msg("Import Existing"); + public static override submitVerb = msg("Import"); + public static override submittingVerb = msg("Importing"); + loadInstance(pk: string): Promise { return new CryptoApi(DEFAULT_CONFIG).cryptoCertificatekeypairsRetrieve({ kpUuid: pk, @@ -40,14 +47,16 @@ export class CertificateKeyPairForm extends ModelForm - - + return html` { - expandable = true; - checkbox = true; - clearOnRefresh = true; + static styles: CSSResult[] = [...super.styles, PFDescriptionList]; + + public override expandable = true; + public override checkbox = true; + public override clearOnRefresh = true; + public override searchPlaceholder = msg("Search for a certificate or key name..."); protected override searchEnabled = true; + public pageTitle = msg("Certificate-Key Pairs"); public pageDescription = msg( "Import certificates of external providers or create certificates to sign requests with.", ); public pageIcon = "pf-icon pf-icon-key"; - @property() - order = "name"; - - static styles: CSSResult[] = [...super.styles, PFDescriptionList]; + public override order = "name"; async apiEndpoint(): Promise> { return new CryptoApi(DEFAULT_CONFIG).cryptoCertificatekeypairsList({ @@ -57,7 +58,7 @@ export class CertificateKeyPairListPage extends TablePage { [msg("Actions"), null, msg("Row Actions")], ]; - renderToolbarSelected(): TemplateResult { + protected override renderToolbarSelected(): SlottedTemplateResult { const disabled = this.selectedElements.length < 1; const count = this.selectedElements.length; return html` { `; } - row(item: CertificateKeyPair): SlottedTemplateResult[] { + protected override row(item: CertificateKeyPair): SlottedTemplateResult[] { let managedSubText = msg("Managed by authentik"); if (item.managed && item.managed.startsWith("goauthentik.io/crypto/discovered")) { managedSubText = msg("Managed by authentik (Discovered)"); @@ -115,7 +116,7 @@ export class CertificateKeyPairListPage extends TablePage { html` ${item.certExpiry?.toLocaleString()} `, html`
- ${msg("Update")} + ${msg("Save Changes")} ${msg("Update Certificate-Key Pair")} @@ -126,7 +127,7 @@ export class CertificateKeyPairListPage extends TablePage { @@ -134,7 +135,7 @@ export class CertificateKeyPairListPage extends TablePage { ]; } - renderExpanded(item: CertificateKeyPair): TemplateResult { + protected override renderExpanded(item: CertificateKeyPair): SlottedTemplateResult { return html`
@@ -192,24 +193,13 @@ export class CertificateKeyPairListPage extends TablePage {
`; } - renderObjectCreate(): TemplateResult { - return html` - - ${msg("Import")} - ${msg("Import Existing Certificate-Key Pair")} - - - - - ${msg("Generate")} - ${msg("Generate New Certificate-Key Pair")} - - - - - `; + protected override renderObjectCreate(): SlottedTemplateResult { + return [ + ModalInvokerButton(CryptoCertificateForm), + ModalInvokerButton(CryptoCertificateGenerateForm, null, { + kind: "secondary", + }), + ]; } } diff --git a/web/src/admin/endpoints/DeviceAccessGroupForm.ts b/web/src/admin/endpoints/DeviceAccessGroupForm.ts index d2994b7a8b..1870f98868 100644 --- a/web/src/admin/endpoints/DeviceAccessGroupForm.ts +++ b/web/src/admin/endpoints/DeviceAccessGroupForm.ts @@ -2,6 +2,7 @@ import "#components/ak-text-input"; import "#elements/forms/HorizontalFormElement"; import { DEFAULT_CONFIG } from "#common/api/config"; +import { PFSize } from "#common/enums"; import { ModelForm } from "#elements/forms/ModelForm"; import { WithBrandConfig } from "#elements/mixins/branding"; @@ -20,35 +21,42 @@ import { ifDefined } from "lit/directives/if-defined.js"; */ @customElement("ak-endpoints-device-access-groups-form") export class DeviceAccessGroupForm extends WithBrandConfig(ModelForm) { - loadInstance(pk: string): Promise { + public static override verboseName = msg("Device Access Group"); + public static override verboseNamePlural = msg("Device Access Groups"); + + public override size = PFSize.Small; + + protected override loadInstance(pk: string): Promise { return new EndpointsApi(DEFAULT_CONFIG).endpointsDeviceAccessGroupsRetrieve({ pbmUuid: pk, }); } - getSuccessMessage(): string { + public override getSuccessMessage(): string { return this.instance ? msg("Successfully updated group.") : msg("Successfully created group."); } - async send(data: DeviceAccessGroup): Promise { + protected override async send(data: DeviceAccessGroup): Promise { if (this.instance) { return new EndpointsApi(DEFAULT_CONFIG).endpointsDeviceAccessGroupsPartialUpdate({ pbmUuid: this.instance.pbmUuid, patchedDeviceAccessGroupRequest: data, }); } + return new EndpointsApi(DEFAULT_CONFIG).endpointsDeviceAccessGroupsCreate({ deviceAccessGroupRequest: data as unknown as DeviceAccessGroupRequest, }); } - renderForm() { + protected override renderForm() { return html``; diff --git a/web/src/admin/endpoints/DeviceAccessGroupsListPage.ts b/web/src/admin/endpoints/DeviceAccessGroupsListPage.ts index ee264b60fc..f3e92aa06a 100644 --- a/web/src/admin/endpoints/DeviceAccessGroupsListPage.ts +++ b/web/src/admin/endpoints/DeviceAccessGroupsListPage.ts @@ -6,10 +6,13 @@ import "@patternfly/elements/pf-tooltip/pf-tooltip.js"; import { DEFAULT_CONFIG } from "#common/api/config"; +import { IconEditButton, ModalInvokerButton } from "#elements/dialogs"; import { PaginatedResponse, TableColumn } from "#elements/table/Table"; import { TablePage } from "#elements/table/TablePage"; import { SlottedTemplateResult } from "#elements/types"; +import { DeviceAccessGroupForm } from "#admin/endpoints/DeviceAccessGroupForm"; + import { DeviceAccessGroup, EndpointsApi } from "@goauthentik/api"; import { msg } from "@lit/localize"; @@ -18,59 +21,44 @@ import { customElement } from "lit/decorators.js"; @customElement("ak-endpoints-device-access-groups-list") export class DeviceAccessGroupsListPage extends TablePage { - public pageIcon = "pf-icon pf-icon-server-group "; - public pageTitle = msg("Device access groups"); - public pageDescription = msg("Create groups of devices to manage access."); - protected searchEnabled: boolean = true; protected columns: TableColumn[] = [ [msg("Name"), "name"], [msg("Actions"), null, msg("Row Actions")], ]; - checkbox = true; - expandable = true; + public override pageIcon = "pf-icon pf-icon-server-group "; + public override pageTitle = msg("Device access groups"); + public override pageDescription = msg("Create groups of devices to manage access."); + public override searchPlaceholder = msg("Search device groups by name..."); - async apiEndpoint(): Promise> { + public override checkbox = true; + public override expandable = true; + + protected override async apiEndpoint(): Promise> { return new EndpointsApi(DEFAULT_CONFIG).endpointsDeviceAccessGroupsList( await this.defaultEndpointConfig(), ); } - row(item: DeviceAccessGroup): SlottedTemplateResult[] { + protected override row(item: DeviceAccessGroup): SlottedTemplateResult[] { return [ - html`${item.name}`, - html`
- - ${msg("Update")} - ${msg("Update Group")} - - - - + // --- + item.name, + html`
+ ${IconEditButton(DeviceAccessGroupForm, item.pbmUuid)}
`, ]; } - renderExpanded(item: DeviceAccessGroup) { + protected override renderExpanded(item: DeviceAccessGroup) { return html`
`; } - renderObjectCreate() { - return html` - ${msg("Create")} - ${msg("Create Device Group")} - - - `; + protected override renderObjectCreate(): SlottedTemplateResult { + return ModalInvokerButton(DeviceAccessGroupForm); } renderToolbarSelected() { diff --git a/web/src/admin/endpoints/ak-endpoints-device-group-search.ts b/web/src/admin/endpoints/ak-endpoints-device-group-search.ts index faf16a6b20..aa07fcf69e 100644 --- a/web/src/admin/endpoints/ak-endpoints-device-group-search.ts +++ b/web/src/admin/endpoints/ak-endpoints-device-group-search.ts @@ -10,6 +10,7 @@ import { EndpointsDeviceAccessGroupsListRequest, } from "@goauthentik/api"; +import { msg } from "@lit/localize"; import { html } from "lit"; import { customElement, property, query } from "lit/decorators.js"; @@ -85,6 +86,7 @@ export class EndpointsDeviceAccessGroupSearch extends CustomListenerElement(AKEl render() { return html` => { + return this.#api.endpointsConnectorsTypesList(requestInit); + }; - firstUpdated(): void { - new EndpointsApi(DEFAULT_CONFIG).endpointsConnectorsTypesList().then((types) => { - this.connectorTypes = types; - }); - } - - render(): TemplateResult { - return html` - - ) => { - if (!this.wizard) return; - const idx = this.wizard.steps.indexOf("initial") + 1; - // Exclude all current steps starting with type-, - // this happens when the user selects a type and then goes back - this.wizard.steps = this.wizard.steps.filter( - (step) => !step.startsWith("type-"), - ); - this.wizard.steps.splice( - idx, - 0, - `type-${ev.detail.component}-${ev.detail.modelName}`, - ); - this.wizard.isValid = true; - }} - > -
-

- ${msg( - "Connectors are required to create devices. Depending on connector type, agents either directly talk to them or they talk to and external API to create devices.", - )} -

-
-
- ${this.connectorTypes.map((type) => { - return html` - - ${StrictUnsafe(type.component)} - - `; - })} - -
- `; + protected override renderInitialPageContent(): SlottedTemplateResult { + return msg( + "Connectors are required to create devices. Depending on connector type, agents either directly talk to them or they talk to and external API to create devices.", + ); } } declare global { interface HTMLElementTagNameMap { - "ak-endpoint-connector-wizard": EndpointConnectorWizard; + "ak-endpoint-connector-wizard": AKEndpointConnectorWizard; } } diff --git a/web/src/admin/endpoints/connectors/ConnectorsListPage.ts b/web/src/admin/endpoints/connectors/ConnectorsListPage.ts index 93a3b67fce..1ab16fe315 100644 --- a/web/src/admin/endpoints/connectors/ConnectorsListPage.ts +++ b/web/src/admin/endpoints/connectors/ConnectorsListPage.ts @@ -7,70 +7,58 @@ import "#elements/forms/ModalForm"; import { DEFAULT_CONFIG } from "#common/api/config"; -import { CustomFormElementTagName } from "#elements/forms/unsafe"; +import { IconEditButtonByTagName, ModalInvokerButton } from "#elements/dialogs"; import { PaginatedResponse, TableColumn } from "#elements/table/Table"; import { TablePage } from "#elements/table/TablePage"; import { SlottedTemplateResult } from "#elements/types"; -import { StrictUnsafe } from "#elements/utils/unsafe"; + +import { AKEndpointConnectorWizard } from "#admin/endpoints/connectors/ConnectorWizard"; import { Connector, EndpointsApi } from "@goauthentik/api"; -import { msg, str } from "@lit/localize"; +import { msg } from "@lit/localize"; import { html } from "lit"; import { customElement } from "lit/decorators.js"; @customElement("ak-endpoints-connectors-list") export class ConnectorsListPage extends TablePage { - public pageIcon = "pf-icon pf-icon-data-source"; - public pageTitle = msg("Connectors"); - public pageDescription = msg( + public override searchPlaceholder = msg("Search connectors by name or type..."); + public override pageIcon = "pf-icon pf-icon-data-source"; + public override pageTitle = msg("Connectors"); + public override pageDescription = msg( "Configure how devices connect with authentik and ingest external device data.", ); - protected searchEnabled: boolean = true; - protected columns: TableColumn[] = [ + protected override searchEnabled: boolean = true; + protected override columns: TableColumn[] = [ [msg("Name"), "name"], [msg("Type")], [msg("Actions"), null, msg("Row Actions")], ]; - checkbox = true; + public override checkbox = true; - async apiEndpoint(): Promise> { + protected override async apiEndpoint(): Promise> { return new EndpointsApi(DEFAULT_CONFIG).endpointsConnectorsList( await this.defaultEndpointConfig(), ); } - row(item: Connector): SlottedTemplateResult[] { + protected override row(item: Connector): SlottedTemplateResult[] { return [ html`${item.name}`, - html`${item.verboseName}`, - html`
- - ${StrictUnsafe(item.component, { - slot: "form", - instancePk: item.connectorUuid, - actionLabel: msg("Update"), - headline: msg(str`Update ${item.verboseName}`, { - id: "form.headline.update", - }), - })} - - + item.verboseName, + html`
+ ${IconEditButtonByTagName(item.component, item.connectorUuid, item.verboseName)}
`, ]; } - renderObjectCreate() { - return html` `; + protected override renderObjectCreate(): SlottedTemplateResult { + return ModalInvokerButton(AKEndpointConnectorWizard); } - renderToolbarSelected() { + protected override renderToolbarSelected(): SlottedTemplateResult { const disabled = this.selectedElements.length < 1; return html`

@@ -120,7 +120,7 @@ export class AgentConnectorForm extends WithBrandConfig(ModelForm

-
- - -
+ +
`; diff --git a/web/src/admin/endpoints/connectors/agent/ConfigModal.ts b/web/src/admin/endpoints/connectors/agent/ConfigModal.ts index a25d63d86e..7b5d474789 100644 --- a/web/src/admin/endpoints/connectors/agent/ConfigModal.ts +++ b/web/src/admin/endpoints/connectors/agent/ConfigModal.ts @@ -86,11 +86,16 @@ export class ConfigModal extends ModalButton { >
-
- - ${msg("Download")} - -   +
`; + + ${msg("Download")} + + `; } } diff --git a/web/src/admin/endpoints/connectors/agent/EnrollmentTokenForm.ts b/web/src/admin/endpoints/connectors/agent/EnrollmentTokenForm.ts index fa718ff1be..78dd70805c 100644 --- a/web/src/admin/endpoints/connectors/agent/EnrollmentTokenForm.ts +++ b/web/src/admin/endpoints/connectors/agent/EnrollmentTokenForm.ts @@ -29,13 +29,18 @@ const EXPIRATION_DURATION = 30 * 60 * 1000; // 30 minutes */ @customElement("ak-endpoints-agent-enrollment-token-form") export class EnrollmentTokenForm extends WithBrandConfig(ModelForm) { + #api = new EndpointsApi(DEFAULT_CONFIG); + + public static override verboseName = msg("Enrollment Token"); + public static override verboseNamePlural = msg("Enrollment Tokens"); + protected expirationMinimumDate = new Date(); @state() protected expiresAt: Date | null = new Date(Date.now() + EXPIRATION_DURATION); @property({ type: String, attribute: "connector-id" }) - public connectorID?: string; + public connectorID: string | null = null; public override reset(): void { super.reset(); @@ -57,25 +62,25 @@ export class EnrollmentTokenForm extends WithBrandConfig(ModelForm { + protected override async send(data: EnrollmentToken): Promise { if (!this.instance) { data.connector = this.connectorID || ""; } else { data.connector = this.instance.connector; } if (this.instance) { - return new EndpointsApi(DEFAULT_CONFIG).endpointsAgentsEnrollmentTokensPartialUpdate({ + return this.#api.endpointsAgentsEnrollmentTokensPartialUpdate({ tokenUuid: this.instance.tokenUuid, patchedEnrollmentTokenRequest: data, }); } - return new EndpointsApi(DEFAULT_CONFIG).endpointsAgentsEnrollmentTokensCreate({ + return this.#api.endpointsAgentsEnrollmentTokensCreate({ enrollmentTokenRequest: data as unknown as EnrollmentTokenRequest, }); } @@ -102,7 +107,7 @@ export class EnrollmentTokenForm extends WithBrandConfig(ModelForm - `; + `; } //#endregion diff --git a/web/src/admin/endpoints/connectors/agent/EnrollmentTokenListPage.ts b/web/src/admin/endpoints/connectors/agent/EnrollmentTokenListPage.ts index c28c40d5c8..17d75c75ff 100644 --- a/web/src/admin/endpoints/connectors/agent/EnrollmentTokenListPage.ts +++ b/web/src/admin/endpoints/connectors/agent/EnrollmentTokenListPage.ts @@ -1,6 +1,5 @@ import "#admin/rbac/ObjectPermissionModal"; import "#admin/endpoints/connectors/agent/EnrollmentTokenForm"; -import "#admin/endpoints/connectors/agent/ak-enrollment-token-copy-button"; import "#elements/buttons/SpinnerButton/index"; import "#elements/forms/DeleteBulkForm"; import "#elements/forms/ModalForm"; @@ -9,15 +8,15 @@ import "#components/ak-status-label"; import { DEFAULT_CONFIG } from "#common/api/config"; +import { IconEnrollmentTokenCopyButton } from "#elements/buttons/IconEnrollmentTokenCopyButton"; +import { IconEditButton, ModalInvokerButton } from "#elements/dialogs"; +import { IconPermissionButton } from "#elements/dialogs/components/IconPermissionButton"; import { PaginatedResponse, Table, TableColumn, Timestamp } from "#elements/table/Table"; import { SlottedTemplateResult } from "#elements/types"; -import { - AgentConnector, - EndpointsApi, - EnrollmentToken, - RbacPermissionsAssignedByRolesListModelEnum, -} from "@goauthentik/api"; +import { EnrollmentTokenForm } from "#admin/endpoints/connectors/agent/EnrollmentTokenForm"; + +import { AgentConnector, EndpointsApi, EnrollmentToken, ModelEnum } from "@goauthentik/api"; import { msg } from "@lit/localize"; import { html, TemplateResult } from "lit"; @@ -25,19 +24,23 @@ import { customElement, property } from "lit/decorators.js"; @customElement("ak-endpoints-agent-enrollment-token-list") export class EnrollmentTokenListPage extends Table { - checkbox = true; - clearOnRefresh = true; + #api = new EndpointsApi(DEFAULT_CONFIG); protected override searchEnabled = true; + protected emptyStateMessage = msg("No enrollment tokens found for this connector."); - @property() - order = "name"; + public override checkbox = true; + public override clearOnRefresh = true; + + public override searchPlaceholder = msg("Search for an enrollment token..."); + + public override order = "name"; @property({ attribute: false }) - connector?: AgentConnector; + public connector: AgentConnector | null = null; - async apiEndpoint(): Promise> { - return new EndpointsApi(DEFAULT_CONFIG).endpointsAgentsEnrollmentTokensList({ + protected override async apiEndpoint(): Promise> { + return this.#api.endpointsAgentsEnrollmentTokensList({ ...(await this.defaultEndpointConfig()), connector: this.connector?.connectorUuid, }); @@ -51,8 +54,9 @@ export class EnrollmentTokenListPage extends Table { [msg("Actions"), null, msg("Row Actions")], ]; - renderToolbarSelected(): TemplateResult { + protected override renderToolbarSelected(): TemplateResult { const disabled = this.selectedElements.length < 1; + return html` { ]; }} .usedBy=${(item: EnrollmentToken) => { - return new EndpointsApi(DEFAULT_CONFIG).endpointsAgentsEnrollmentTokensUsedByList({ + return this.#api.endpointsAgentsEnrollmentTokensUsedByList({ tokenUuid: item.tokenUuid, }); }} .delete=${(item: EnrollmentToken) => { - return new EndpointsApi(DEFAULT_CONFIG).endpointsAgentsEnrollmentTokensDestroy({ + return this.#api.endpointsAgentsEnrollmentTokensDestroy({ tokenUuid: item.tokenUuid, }); }} @@ -79,54 +83,27 @@ export class EnrollmentTokenListPage extends Table { `; } - row(item: EnrollmentToken): SlottedTemplateResult[] { + protected override row(item: EnrollmentToken): SlottedTemplateResult[] { return [ - html`${item.name}`, - html`${item.deviceGroupObj?.name || "-"}`, + item.name, + item.deviceGroupObj?.name || msg("-"), html``, Timestamp(item.expires && item.expiring ? item.expires : null), - html`
- - ${msg("Update")} - ${msg("Update Enrollment Token")} - - - - - - - - - - - + html`
+ ${IconEditButton(EnrollmentTokenForm, item.tokenUuid, item.name)} + ${IconPermissionButton(item.name, { + model: ModelEnum.AuthentikEndpointsConnectorsAgentEnrollmenttoken, + objectPk: item.tokenUuid, + })} + ${IconEnrollmentTokenCopyButton(item.tokenUuid)}
`, ]; } - renderObjectCreate(): TemplateResult { - return html` - - ${msg("Create")} - ${msg("Create Enrollment Token")} - - - - - `; + protected override renderObjectCreate(): SlottedTemplateResult { + return ModalInvokerButton(EnrollmentTokenForm, { + connectorID: this.connector?.connectorUuid, + }); } } diff --git a/web/src/admin/endpoints/connectors/agent/ak-enrollment-token-copy-button.ts b/web/src/admin/endpoints/connectors/agent/ak-enrollment-token-copy-button.ts deleted file mode 100644 index 0ef9bb8514..0000000000 --- a/web/src/admin/endpoints/connectors/agent/ak-enrollment-token-copy-button.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { DEFAULT_CONFIG } from "#common/api/config"; -import { writeToClipboard } from "#common/clipboard"; - -import TokenCopyButton from "#elements/buttons/TokenCopyButton/ak-token-copy-button"; - -import { EndpointsApi } from "@goauthentik/api"; - -import { msg } from "@lit/localize"; -import { customElement } from "lit/decorators.js"; - -@customElement("ak-enrollment-token-copy-button") -export class EnrollmentTokenCopyButton extends TokenCopyButton { - public override entityLabel = msg("Enrollment Token"); - - public override callAction(): Promise { - if (!this.identifier) { - throw new TypeError("No `identifier` set for `EnrollmentTokenCopyButton`"); - } - - // Safari permission hack. - const text = new ClipboardItem({ - "text/plain": new EndpointsApi(DEFAULT_CONFIG) - .endpointsAgentsEnrollmentTokensViewKeyRetrieve({ - tokenUuid: this.identifier, - }) - .then((tokenView) => new Blob([tokenView.key], { type: "text/plain" })), - }); - - return writeToClipboard(text, this.entityLabel).then(() => null); - } -} - -declare global { - interface HTMLElementTagNameMap { - "ak-enrollment-token-copy-button": EnrollmentTokenCopyButton; - } -} diff --git a/web/src/admin/endpoints/connectors/fleet/FleetConnectorForm.ts b/web/src/admin/endpoints/connectors/fleet/FleetConnectorForm.ts index 804688f980..79ec4fa375 100644 --- a/web/src/admin/endpoints/connectors/fleet/FleetConnectorForm.ts +++ b/web/src/admin/endpoints/connectors/fleet/FleetConnectorForm.ts @@ -42,7 +42,8 @@ export class FleetConnectorForm extends ModelForm { renderForm() { return html` { { diff --git a/web/src/admin/endpoints/connectors/fleet/FleetConnectorViewPage.ts b/web/src/admin/endpoints/connectors/fleet/FleetConnectorViewPage.ts index f19c0b5a30..c0cb062ac2 100644 --- a/web/src/admin/endpoints/connectors/fleet/FleetConnectorViewPage.ts +++ b/web/src/admin/endpoints/connectors/fleet/FleetConnectorViewPage.ts @@ -1,6 +1,7 @@ import "#elements/Tabs"; -import "#components/events/ObjectChangelog"; -import "#admin/rbac/ObjectPermissionsPage"; +import "#admin/events/ObjectChangelog"; +import "#admin/rbac/ak-rbac-object-permission-page"; +import "#admin/rbac/ObjectPermissionModal"; import "#elements/tasks/ScheduleList"; import "#elements/tasks/TaskList"; @@ -11,12 +12,7 @@ import { AKElement } from "#elements/Base"; import { setPageDetails } from "#components/ak-page-navbar"; -import { - EndpointsApi, - FleetConnector, - ModelEnum, - RbacPermissionsAssignedByRolesListModelEnum, -} from "@goauthentik/api"; +import { EndpointsApi, FleetConnector, ModelEnum } from "@goauthentik/api"; import { msg } from "@lit/localize"; import { CSSResult, html, nothing, PropertyValues } from "lit"; @@ -79,13 +75,11 @@ export class FleetConnectorViewPage extends AKElement {
${msg("Schedules")}
-
- -
+
@@ -93,13 +87,11 @@ export class FleetConnectorViewPage extends AKElement {
${msg("Tasks")}
-
- -
+
`; @@ -128,13 +120,11 @@ export class FleetConnectorViewPage extends AKElement { class="pf-c-page__main-section pf-m-no-padding-mobile" >
-
- - -
+ +
`; diff --git a/web/src/admin/endpoints/connectors/gdtc/GoogleChromeConnectorForm.ts b/web/src/admin/endpoints/connectors/gdtc/GoogleChromeConnectorForm.ts index ea2108669c..6e83d3786c 100644 --- a/web/src/admin/endpoints/connectors/gdtc/GoogleChromeConnectorForm.ts +++ b/web/src/admin/endpoints/connectors/gdtc/GoogleChromeConnectorForm.ts @@ -43,7 +43,8 @@ export class GoogleChromeConnectorForm extends ModelForm -
-
-
-
${msg("Schedules")}
-
-
- -
-
-
-
-
-
-
${msg("Tasks")}
-
-
- -
-
-
-
`; - } - render() { if (!this.connector) { return nothing; @@ -116,25 +74,14 @@ export class GoogleChromeConnectorViewPage extends AKElement { slot="page-overview" id="page-overview" aria-label="${msg("Overview")}" - > - ${this.renderTabOverview()} -
-
-
- - -
+ +
`; diff --git a/web/src/admin/endpoints/devices/BoundDeviceUsersList.ts b/web/src/admin/endpoints/devices/BoundDeviceUsersList.ts index c0d007c53c..b757f1f440 100644 --- a/web/src/admin/endpoints/devices/BoundDeviceUsersList.ts +++ b/web/src/admin/endpoints/devices/BoundDeviceUsersList.ts @@ -1,4 +1,4 @@ -import "#admin/groups/GroupForm"; +import "#admin/groups/ak-group-form"; import "#admin/rbac/ObjectPermissionModal"; import "#admin/users/UserForm"; import "#components/ak-status-label"; @@ -6,12 +6,12 @@ import "#elements/forms/ModalForm"; import "#admin/endpoints/devices/DeviceUserBindingForm"; import { DEFAULT_CONFIG } from "#common/api/config"; +import { PolicyBindingCheckTarget, PolicyBindingCheckTargetToLabel } from "#common/policies/utils"; import { PaginatedResponse, TableColumn } from "#elements/table/Table"; import { SlottedTemplateResult } from "#elements/types"; import { BoundPoliciesList } from "#admin/policies/BoundPoliciesList"; -import { PolicyBindingCheckTarget, PolicyBindingCheckTargetToLabel } from "#admin/policies/utils"; import { DeviceUserBinding, EndpointsApi } from "@goauthentik/api"; diff --git a/web/src/admin/endpoints/devices/DeviceAddHowTo.ts b/web/src/admin/endpoints/devices/DeviceAddHowTo.ts index 5537facebd..e9c26f9aa2 100644 --- a/web/src/admin/endpoints/devices/DeviceAddHowTo.ts +++ b/web/src/admin/endpoints/devices/DeviceAddHowTo.ts @@ -65,7 +65,8 @@ export class DeviceAddHowTo extends ModalButton { })} `}
-
+
`; + `; } } diff --git a/web/src/admin/endpoints/devices/DeviceEvents.ts b/web/src/admin/endpoints/devices/DeviceEvents.ts new file mode 100644 index 0000000000..634c451fc0 --- /dev/null +++ b/web/src/admin/endpoints/devices/DeviceEvents.ts @@ -0,0 +1,25 @@ +import "#components/ak-event-info"; + +import { SimpleEventTable } from "#admin/events/SimpleEventTable"; + +import { EventsEventsListRequest } from "@goauthentik/api"; + +import { customElement, property } from "lit/decorators.js"; + +@customElement("ak-events-device") +export class DeviceEvents extends SimpleEventTable { + @property({ attribute: "device-id" }) + deviceId!: string; + + async apiParameters(): Promise> { + return { + contextDevice: this.deviceId.replaceAll("-", ""), + }; + } +} + +declare global { + interface HTMLElementTagNameMap { + "ak-events-device": DeviceEvents; + } +} diff --git a/web/src/admin/endpoints/devices/DeviceForm.ts b/web/src/admin/endpoints/devices/DeviceForm.ts index 0b34fea8d1..67b56ba4cc 100644 --- a/web/src/admin/endpoints/devices/DeviceForm.ts +++ b/web/src/admin/endpoints/devices/DeviceForm.ts @@ -20,6 +20,8 @@ import { ifDefined } from "lit/directives/if-defined.js"; @customElement("ak-endpoints-device-form") export class EndpointDeviceForm extends ModelForm { + public static override verboseName = msg("Device"); + public static override verboseNamePlural = msg("Devices"); loadInstance(pk: string): Promise { return new EndpointsApi(DEFAULT_CONFIG).endpointsDevicesRetrieve({ deviceUuid: pk, diff --git a/web/src/admin/endpoints/devices/DeviceListPage.ts b/web/src/admin/endpoints/devices/DeviceListPage.ts index f7becaf59f..2f13cb2bca 100644 --- a/web/src/admin/endpoints/devices/DeviceListPage.ts +++ b/web/src/admin/endpoints/devices/DeviceListPage.ts @@ -1,15 +1,16 @@ import "#elements/cards/AggregateCard"; import "#elements/forms/DeleteBulkForm"; -import "#admin/endpoints/devices/DeviceForm"; import "#admin/endpoints/devices/DeviceAddHowTo"; -import "#elements/forms/ModalForm"; import { DEFAULT_CONFIG } from "#common/api/config"; +import { modalInvoker } from "#elements/dialogs"; import { PaginatedResponse, TableColumn, Timestamp } from "#elements/table/Table"; import { TablePage } from "#elements/table/TablePage"; import { SlottedTemplateResult } from "#elements/types"; +import { EndpointDeviceForm } from "#admin/endpoints/devices/DeviceForm"; + import { DeviceSummary, EndpointDevice, EndpointsApi } from "@goauthentik/api"; import { msg } from "@lit/localize"; @@ -21,13 +22,7 @@ import PFGrid from "@patternfly/patternfly/layouts/Grid/grid.css"; @customElement("ak-endpoints-device-list") export class DeviceListPage extends TablePage { - public pageTitle = msg("Devices"); - public pageDescription = ""; - public pageIcon = "fa fa-laptop"; - - checkbox = true; - - static styles: CSSResult[] = [ + public static styles: CSSResult[] = [ ...super.styles, PFGrid, PFBanner, @@ -37,6 +32,13 @@ export class DeviceListPage extends TablePage { } `, ]; + public override pageTitle = msg("Devices"); + public override pageDescription = ""; + public override pageIcon = "fa fa-laptop"; + + public override checkbox = true; + + public override searchPlaceholder = msg("Search devices by name, OS, or group..."); protected searchEnabled: boolean = true; protected columns: TableColumn[] = [ @@ -59,7 +61,7 @@ export class DeviceListPage extends TablePage { ); } - protected renderEmpty(inner?: TemplateResult): TemplateResult { + protected renderEmpty(inner?: TemplateResult): SlottedTemplateResult { return super.renderEmpty(html` ${inner ? inner @@ -131,17 +133,14 @@ export class DeviceListPage extends TablePage { html`${item.facts.data.os?.name} ${item.facts.data.os?.version}`, html`${item.accessGroupObj?.name || "-"}`, item.facts.created ? Timestamp(item.facts.created) : html`-`, - html` - ${msg("Update")} - ${msg("Update Device")} - - - - `, + html``, ]; } diff --git a/web/src/admin/endpoints/devices/DeviceUserBindingForm.ts b/web/src/admin/endpoints/devices/DeviceUserBindingForm.ts index eda0ae9aa5..413a928802 100644 --- a/web/src/admin/endpoints/devices/DeviceUserBindingForm.ts +++ b/web/src/admin/endpoints/devices/DeviceUserBindingForm.ts @@ -1,9 +1,9 @@ import "#components/ak-switch-input"; import { DEFAULT_CONFIG } from "#common/api/config"; +import { PolicyBindingCheckTarget } from "#common/policies/utils"; import { PolicyBindingForm } from "#admin/policies/PolicyBindingForm"; -import { PolicyBindingCheckTarget } from "#admin/policies/utils"; import { DeviceUserBinding, EndpointsApi, PolicyBinding } from "@goauthentik/api"; diff --git a/web/src/admin/endpoints/devices/DeviceViewPage.ts b/web/src/admin/endpoints/devices/DeviceViewPage.ts index 697e7bb9f6..dc29ed4e62 100644 --- a/web/src/admin/endpoints/devices/DeviceViewPage.ts +++ b/web/src/admin/endpoints/devices/DeviceViewPage.ts @@ -5,20 +5,21 @@ import "#admin/endpoints/devices/facts/DeviceProcessTable"; import "#admin/endpoints/devices/facts/DeviceUserTable"; import "#admin/endpoints/devices/facts/DeviceSoftwareTable"; import "#admin/endpoints/devices/facts/DeviceGroupTable"; -import "#admin/endpoints/devices/DeviceForm"; -import "#elements/forms/ModalForm"; +import "#admin/endpoints/devices/DeviceEvents"; import "#elements/Tabs"; import { DEFAULT_CONFIG } from "#common/api/config"; import { APIError, parseAPIResponseError } from "#common/errors/network"; import { AKElement } from "#elements/Base"; +import { modalInvoker } from "#elements/dialogs"; import { Timestamp } from "#elements/table/shared"; import { setPageDetails } from "#components/ak-page-navbar"; import renderDescriptionList, { DescriptionPair } from "#components/DescriptionList"; -import { getSize, osFamilyToLabel } from "#admin/endpoints/devices/utils"; +import { EndpointDeviceForm } from "#admin/endpoints/devices/DeviceForm"; +import { getSize, osFamilyToLabel, trySortNumerical } from "#admin/endpoints/devices/utils"; import { DeviceConnection, Disk, EndpointDeviceDetails, EndpointsApi } from "@goauthentik/api"; @@ -31,6 +32,7 @@ import PFCard from "@patternfly/patternfly/components/Card/card.css"; import PFDescriptionList from "@patternfly/patternfly/components/DescriptionList/description-list.css"; import PFPage from "@patternfly/patternfly/components/Page/page.css"; import PFGrid from "@patternfly/patternfly/layouts/Grid/grid.css"; +import PFStack from "@patternfly/patternfly/layouts/Stack/stack.css"; @customElement("ak-endpoints-device-view") export class DeviceViewPage extends AKElement { @@ -43,7 +45,7 @@ export class DeviceViewPage extends AKElement { @state() protected error?: APIError; - static styles: CSSResult[] = [PFCard, PFPage, PFGrid, PFButton, PFDescriptionList]; + static styles: CSSResult[] = [PFCard, PFPage, PFGrid, PFStack, PFButton, PFDescriptionList]; protected fetchDevice(id: string) { new EndpointsApi(DEFAULT_CONFIG) @@ -74,100 +76,93 @@ export class DeviceViewPage extends AKElement { osFamilyToLabel(this.device.facts.data.os.family), this.device.facts.data.os?.version, ].join(" ") - : undefined, + : "-", icon: "fa fa-laptop", }); } - renderOverview() { - if (!this.device) { - return nothing; - } + renderDetails() { const _rootDisk = - this.device.facts.data.disks?.filter( + this.device?.facts.data.disks?.filter( (d) => d.mountpoint === "/" || d.mountpoint === "C:", ) || []; let rootDisk: Disk | undefined = undefined; if (_rootDisk?.length > 0) { rootDisk = _rootDisk[0]; } - return html`
-
+ return html`
+
${msg("Device details")}
${renderDescriptionList( [ - [msg("Name"), this.device.name], - [msg("Hostname"), this.device.facts.data.network?.hostname ?? "-"], - [msg("Serial number"), this.device.facts.data.hardware?.serial ?? "-"], + [msg("Name"), this.device?.name], + [msg("Hostname"), this.device?.facts.data.network?.hostname ?? "-"], + [msg("Serial number"), this.device?.facts.data.hardware?.serial ?? "-"], [ msg("Operating system"), - this.device.facts.data.os + this.device?.facts.data.os ? [ - this.device.facts.data.os?.name || - osFamilyToLabel(this.device.facts.data.os.family), - this.device.facts.data.os?.version, + this.device?.facts.data.os?.name || + osFamilyToLabel(this.device?.facts.data.os.family), + this.device?.facts.data.os?.version, ].join(" ") : "-", ], [ msg("Firewall enabled"), html``, ], - [msg("Device access group"), this.device.accessGroupObj?.name ?? "-"], - [ - msg("Actions"), - html` - ${msg("Update")} - ${msg("Update Device")} - - - - `, - ], - ], - { horizontal: true }, - )} -
-
-
-
${msg("Hardware")}
-
- ${renderDescriptionList( - [ - [ - msg("Manufacturer"), - this.device.facts.data.hardware?.manufacturer ?? "-", - ], - [msg("Model"), this.device.facts.data.hardware?.model ?? "-"], - [ - msg("CPU"), - this.device.facts.data.hardware?.cpuCount && - this.device.facts.data.hardware?.cpuName - ? msg( - str`${this.device.facts.data.hardware?.cpuCount} x ${this.device.facts.data.hardware?.cpuName}`, - ) - : "-", - ], - [ - msg("Memory"), - this.device.facts.data.hardware?.memoryBytes - ? getSize(this.device.facts.data.hardware?.memoryBytes) - : "-", - ], [ msg("Disk encryption"), html``, ], + [msg("Device access group"), this.device?.accessGroupObj?.name ?? "-"], + [ + msg("Actions"), + html``, + ], + ], + { horizontal: true }, + )} +
+
+
+
${msg("Hardware")}
+
+ ${renderDescriptionList( + [ + [ + msg("Manufacturer"), + this.device?.facts.data.hardware?.manufacturer ?? "-", + ], + [msg("Model"), this.device?.facts.data.hardware?.model ?? "-"], + [ + msg("CPU"), + this.device?.facts.data.hardware?.cpuCount && + this.device?.facts.data.hardware?.cpuName + ? msg( + str`${this.device?.facts.data.hardware?.cpuCount} x ${this.device?.facts.data.hardware?.cpuName}`, + ) + : "-", + ], + [ + msg("Memory"), + this.device?.facts.data.hardware?.memoryBytes + ? getSize(this.device?.facts.data.hardware?.memoryBytes) + : "-", + ], [ msg("Primary disk size"), rootDisk?.capacityTotalBytes @@ -192,11 +187,11 @@ export class DeviceViewPage extends AKElement { )}
-
+
${msg("Connections")}
${renderDescriptionList( - this.device.connectionsObj.map((conn) => { + this.device?.connectionsObj.map((conn) => { return [ html`${conn.connectorObj.name}`, html`
@@ -215,20 +210,6 @@ export class DeviceViewPage extends AKElement { )}
-
-
${msg("Users / Groups")}
-
- -
-
-
- -
`; } @@ -246,7 +227,7 @@ export class DeviceViewPage extends AKElement { return nothing; } return html``; } @@ -255,7 +236,7 @@ export class DeviceViewPage extends AKElement { return nothing; } return html``; } @@ -264,7 +245,7 @@ export class DeviceViewPage extends AKElement { return nothing; } return html``; } @@ -273,7 +254,9 @@ export class DeviceViewPage extends AKElement { return nothing; } return html` + a.name.localeCompare(b.name), + )} >`; } @@ -288,7 +271,27 @@ export class DeviceViewPage extends AKElement { aria-label="${msg("Overview")}" class="pf-c-page__main-section" > - ${this.renderOverview()} +
+
${this.renderDetails()}
+
+
+
${msg("Events")}
+ +
+
+
${msg("Users / Groups")}
+ +
+
+ +
+
+
{ - @property({ attribute: false }) - device?: EndpointDeviceDetails; - - protected async apiEndpoint(): Promise> { - const items = (this.device?.facts.data.groups || []).sort(trySortNumerical); - return { - pagination: { - count: items.length, - current: 1, - totalPages: 1, - startIndex: 1, - endIndex: items.length, - next: 0, - previous: 0, - }, - results: items, - }; - } +export class DeviceGroupTable extends StaticTable { protected columns: TableColumn[] = [[msg("ID")], [msg("Name")]]; protected row(item: DeviceGroup): SlottedTemplateResult[] { return [html`${item.id}`, html`${item.name ?? "-"}`]; diff --git a/web/src/admin/endpoints/devices/facts/DeviceProcessTable.ts b/web/src/admin/endpoints/devices/facts/DeviceProcessTable.ts index 87d1588387..3edb24b395 100644 --- a/web/src/admin/endpoints/devices/facts/DeviceProcessTable.ts +++ b/web/src/admin/endpoints/devices/facts/DeviceProcessTable.ts @@ -1,34 +1,15 @@ -import { PaginatedResponse, Table, TableColumn } from "#elements/table/Table"; +import { StaticTable } from "#elements/table/StaticTable"; +import { TableColumn } from "#elements/table/Table"; import { SlottedTemplateResult } from "#elements/types"; -import { trySortNumerical } from "#admin/endpoints/devices/utils"; - -import { EndpointDeviceDetails, Process } from "@goauthentik/api"; +import { Process } from "@goauthentik/api"; import { msg } from "@lit/localize"; import { html } from "lit"; -import { customElement, property } from "lit/decorators.js"; +import { customElement } from "lit/decorators.js"; @customElement("ak-endpoints-device-process-table") -export class DeviceProcessTable extends Table { - @property({ attribute: false }) - device?: EndpointDeviceDetails; - - protected async apiEndpoint(): Promise> { - const items = (this.device?.facts.data.processes || []).sort(trySortNumerical); - return { - pagination: { - count: items.length, - current: 1, - totalPages: 1, - startIndex: 1, - endIndex: items.length, - next: 0, - previous: 0, - }, - results: items, - }; - } +export class DeviceProcessTable extends StaticTable { protected columns: TableColumn[] = [[msg("ID")], [msg("Name")], [msg("User")]]; protected row(item: Process): SlottedTemplateResult[] { return [html`${item.id}`, html`${item.name}`, html`${item.user ?? "-"}`]; diff --git a/web/src/admin/endpoints/devices/facts/DeviceSoftwareTable.ts b/web/src/admin/endpoints/devices/facts/DeviceSoftwareTable.ts index b799c91125..112a8aef2c 100644 --- a/web/src/admin/endpoints/devices/facts/DeviceSoftwareTable.ts +++ b/web/src/admin/endpoints/devices/facts/DeviceSoftwareTable.ts @@ -1,37 +1,17 @@ import { groupBy, GroupResult } from "#common/utils"; -import { PaginatedResponse, Table, TableColumn } from "#elements/table/Table"; +import { StaticTable } from "#elements/table/StaticTable"; +import { TableColumn } from "#elements/table/Table"; import { SlottedTemplateResult } from "#elements/types"; -import { EndpointDeviceDetails, Software } from "@goauthentik/api"; +import { Software } from "@goauthentik/api"; import { msg } from "@lit/localize"; import { html } from "lit"; -import { customElement, property } from "lit/decorators.js"; +import { customElement } from "lit/decorators.js"; @customElement("ak-endpoints-device-software-table") -export class DeviceSoftwareTable extends Table { - @property({ attribute: false }) - device?: EndpointDeviceDetails; - - protected async apiEndpoint(): Promise> { - const items = (this.device?.facts.data.software || []).sort((a, b) => - a.name.localeCompare(b.name), - ); - return { - pagination: { - count: items.length, - current: 1, - totalPages: 1, - startIndex: 1, - endIndex: items.length, - next: 0, - previous: 0, - }, - results: items, - }; - } - +export class DeviceSoftwareTable extends StaticTable { protected groupBy(items: Software[]): GroupResult[] { return groupBy(items, (item) => item.source); } diff --git a/web/src/admin/endpoints/devices/facts/DeviceUserTable.ts b/web/src/admin/endpoints/devices/facts/DeviceUserTable.ts index 80e1d2b96c..2abd3ad906 100644 --- a/web/src/admin/endpoints/devices/facts/DeviceUserTable.ts +++ b/web/src/admin/endpoints/devices/facts/DeviceUserTable.ts @@ -1,34 +1,15 @@ -import { PaginatedResponse, Table, TableColumn } from "#elements/table/Table"; +import { StaticTable } from "#elements/table/StaticTable"; +import { TableColumn } from "#elements/table/Table"; import { SlottedTemplateResult } from "#elements/types"; -import { trySortNumerical } from "#admin/endpoints/devices/utils"; - -import { DeviceUser, EndpointDeviceDetails } from "@goauthentik/api"; +import { DeviceUser } from "@goauthentik/api"; import { msg } from "@lit/localize"; import { html } from "lit"; -import { customElement, property } from "lit/decorators.js"; +import { customElement } from "lit/decorators.js"; @customElement("ak-endpoints-device-users-table") -export class DeviceUserTable extends Table { - @property({ attribute: false }) - device?: EndpointDeviceDetails; - - protected async apiEndpoint(): Promise> { - const items = (this.device?.facts.data.users || []).sort(trySortNumerical); - return { - pagination: { - count: items.length, - current: 1, - totalPages: 1, - startIndex: 1, - endIndex: items.length, - next: 0, - previous: 0, - }, - results: items, - }; - } +export class DeviceUserTable extends StaticTable { protected columns: TableColumn[] = [ [msg("ID")], [msg("Username")], diff --git a/web/src/admin/enterprise/EnterpriseLicenseForm.ts b/web/src/admin/enterprise/EnterpriseLicenseForm.ts index 48cc6b2b60..d07eeeeb8c 100644 --- a/web/src/admin/enterprise/EnterpriseLicenseForm.ts +++ b/web/src/admin/enterprise/EnterpriseLicenseForm.ts @@ -1,4 +1,5 @@ import "#components/ak-secret-textarea-input"; +import "#components/ak-text-input"; import "#elements/CodeMirror"; import "#elements/forms/HorizontalFormElement"; @@ -6,16 +7,24 @@ import { DEFAULT_CONFIG } from "#common/api/config"; import { EVENT_REFRESH_ENTERPRISE } from "#common/constants"; import { ModelForm } from "#elements/forms/ModelForm"; +import { SlottedTemplateResult } from "#elements/types"; import { ifPresent } from "#elements/utils/attributes"; import { EnterpriseApi, License } from "@goauthentik/api"; import { msg } from "@lit/localize"; -import { html, TemplateResult } from "lit"; +import { html } from "lit"; import { customElement, state } from "lit/decorators.js"; @customElement("ak-enterprise-license-form") export class EnterpriseLicenseForm extends ModelForm { + public static override verboseName = msg("Enterprise License"); + public static override verboseNamePlural = msg("Enterprise Licenses"); + public static override createLabel = msg("Install"); + public static override submitVerb = msg("Install"); + + #api = new EnterpriseApi(DEFAULT_CONFIG); + @state() protected installID: string | null = null; @@ -26,7 +35,7 @@ export class EnterpriseLicenseForm extends ModelForm { } loadInstance(pk: string): Promise { - return new EnterpriseApi(DEFAULT_CONFIG).enterpriseLicenseRetrieve({ + return this.#api.enterpriseLicenseRetrieve({ licenseUuid: pk, }); } @@ -38,19 +47,17 @@ export class EnterpriseLicenseForm extends ModelForm { } async load(): Promise { - this.installID = ( - await new EnterpriseApi(DEFAULT_CONFIG).enterpriseLicenseInstallIdRetrieve() - ).installId; + this.installID = (await this.#api.enterpriseLicenseInstallIdRetrieve()).installId; } async send(data: License): Promise { return ( this.instance - ? new EnterpriseApi(DEFAULT_CONFIG).enterpriseLicensePartialUpdate({ + ? this.#api.enterpriseLicensePartialUpdate({ licenseUuid: this.instance.licenseUuid || "", patchedLicenseRequest: data, }) - : new EnterpriseApi(DEFAULT_CONFIG).enterpriseLicenseCreate({ + : this.#api.enterpriseLicenseCreate({ licenseRequest: data, }) ).then((data) => { @@ -59,19 +66,21 @@ export class EnterpriseLicenseForm extends ModelForm { }); } - protected override renderForm(): TemplateResult { - return html` - - + protected override renderForm(): SlottedTemplateResult { + return html` + { - checkbox = true; - clearOnRefresh = true; - - protected override searchEnabled = true; - public pageTitle = msg("Licenses"); - public pageDescription = msg("Manage enterprise licenses"); - public pageIcon = "pf-icon pf-icon-key"; - - @property() - order = "name"; - - @state() - forecast?: LicenseForecast; - - @state() - summary?: LicenseSummary; - - @state() - installID?: string; - - static styles: CSSResult[] = [ + public static styles: CSSResult[] = [ ...super.styles, PFGrid, PFBanner, @@ -74,6 +57,25 @@ export class EnterpriseLicenseListPage extends TablePage { `, ]; + public override checkbox = true; + public override clearOnRefresh = true; + + protected override searchEnabled = true; + public override pageTitle = msg("Licenses"); + public override pageDescription = msg("Manage enterprise licenses"); + public override pageIcon = "pf-icon pf-icon-key"; + public override searchPlaceholder = msg("Search for a license by name..."); + public override order = "name"; + + @state() + protected forecast?: LicenseForecast; + + @state() + protected summary?: LicenseSummary; + + @state() + protected installID?: string; + async apiEndpoint(): Promise> { this.forecast = await new EnterpriseApi(DEFAULT_CONFIG).enterpriseLicenseForecastRetrieve(); this.summary = await new EnterpriseApi(DEFAULT_CONFIG).enterpriseLicenseSummaryRetrieve({ @@ -96,7 +98,7 @@ export class EnterpriseLicenseListPage extends TablePage { // TODO: Make this more generic, maybe automatically get the plural name // of the object to use in the renderEmpty - renderEmpty(inner?: TemplateResult): TemplateResult { + protected override renderEmpty(inner?: SlottedTemplateResult): SlottedTemplateResult { return super.renderEmpty(html` ${inner ? inner @@ -110,7 +112,7 @@ export class EnterpriseLicenseListPage extends TablePage { `); } - renderToolbarSelected(): TemplateResult { + protected override renderToolbarSelected(): SlottedTemplateResult { const disabled = this.selectedElements.length < 1; return html` { `; } - renderSectionBefore(): TemplateResult { + protected override renderSectionBefore(): SlottedTemplateResult { const { externalUsers = 0, internalUsers = 0, @@ -219,20 +221,11 @@ export class EnterpriseLicenseListPage extends TablePage { html`
${msg(str`Internal: ${item.internalUsers}`)}
${msg(str`External: ${item.externalUsers}`)}
`, html` ${item.expiry?.toLocaleString()} `, - html`
- - ${msg("Update")} - ${msg("Update License")} - - - - + html`
+ ${IconEditButton(EnterpriseLicenseForm, item.licenseUuid, item.name)} + @@ -240,7 +233,7 @@ export class EnterpriseLicenseListPage extends TablePage { ]; } - renderGetLicenseCard() { + protected renderGetLicenseCard() { const renderSpinner = () => html`
@@ -277,15 +270,8 @@ export class EnterpriseLicenseListPage extends TablePage {
`; } - renderObjectCreate(): TemplateResult { - return html` - - ${msg("Install")} - ${msg("Install License")} - - - - `; + protected override renderObjectCreate(): SlottedTemplateResult { + return ModalInvokerButton(EnterpriseLicenseForm); } } diff --git a/web/src/admin/events/DataExportListPage.ts b/web/src/admin/events/DataExportListPage.ts index ffae823f07..e4ab7f69cc 100644 --- a/web/src/admin/events/DataExportListPage.ts +++ b/web/src/admin/events/DataExportListPage.ts @@ -120,7 +120,7 @@ export class DataExportListPage extends TablePage { `; } - protected renderEmpty(_inner?: TemplateResult): TemplateResult { + protected renderEmpty(_inner?: TemplateResult): SlottedTemplateResult { return super.renderEmpty( html` { ]; } - renderExpanded(item: Event): TemplateResult { + renderExpanded(item: Event): SlottedTemplateResult { return html``; } - renderEmpty(): TemplateResult { + renderEmpty(): SlottedTemplateResult { return super.renderEmpty( html`${msg("No Events found.")} diff --git a/web/src/admin/events/RuleForm.ts b/web/src/admin/events/RuleForm.ts index 36f0f8a6f6..dc40ab69a8 100644 --- a/web/src/admin/events/RuleForm.ts +++ b/web/src/admin/events/RuleForm.ts @@ -1,4 +1,5 @@ import "#components/ak-switch-input"; +import "#components/ak-text-input"; import "#elements/ak-dual-select/ak-dual-select-dynamic-selected-provider"; import "#elements/forms/HorizontalFormElement"; import "#elements/forms/Radio"; @@ -29,6 +30,9 @@ import { ifDefined } from "lit/directives/if-defined.js"; @customElement("ak-event-rule-form") export class RuleForm extends ModelForm { + public static verboseName = msg("Notification Rule"); + public static verboseNamePlural = msg("Notification Rules"); + eventTransports?: PaginatedNotificationTransportList; loadInstance(pk: string): Promise { @@ -62,23 +66,24 @@ export class RuleForm extends ModelForm { } protected override renderForm(): TemplateResult { - return html` - - + return html` => { const args: CoreGroupsListRequest = { ordering: "name", includeUsers: false, }; - if (query !== undefined) { + if (typeof query !== "undefined") { args.search = query; } @@ -99,7 +104,7 @@ export class RuleForm extends ModelForm {

${msg( - "If no group is selected and 'Send notification to event user' is disabled the rule is disabled. ", + "If no group is selected and 'Send notification to event user' is disabled, the rule is disabled.", )}

@@ -108,7 +113,7 @@ export class RuleForm extends ModelForm { label=${msg("Send notification to event user")} ?checked=${this.instance?.destinationEventUser ?? false} help=${msg( - "When enabled, notification will be sent to the user that triggered the event in addition to any users in the group above. The event user will always be the first user, to send a notification only to the event user enabled 'Send once' in the notification transport. If no group is selected and 'Send notification to event user' is disabled the rule is disabled. ", + "When enabled, notification will be sent to the user that triggered the event in addition to any users in the group above. The event user will always be the first user, to send a notification only to the event user enabled 'Send once' in the notification transport.", )} > diff --git a/web/src/admin/events/RuleListPage.ts b/web/src/admin/events/RuleListPage.ts index efee4b211e..27e4fd4069 100644 --- a/web/src/admin/events/RuleListPage.ts +++ b/web/src/admin/events/RuleListPage.ts @@ -11,16 +11,14 @@ import "@patternfly/elements/pf-tooltip/pf-tooltip.js"; import { DEFAULT_CONFIG } from "#common/api/config"; import { severityToLabel } from "#common/labels"; +import { IconEditButton, ModalInvokerButton } from "#elements/dialogs"; import { PaginatedResponse, TableColumn } from "#elements/table/Table"; import { TablePage } from "#elements/table/TablePage"; import { SlottedTemplateResult } from "#elements/types"; -import { - EventsApi, - ModelEnum, - NotificationRule, - RbacPermissionsAssignedByRolesListModelEnum, -} from "@goauthentik/api"; +import { RuleForm } from "#admin/events/RuleForm"; + +import { EventsApi, ModelEnum, NotificationRule } from "@goauthentik/api"; import { msg } from "@lit/localize"; import { html, TemplateResult } from "lit"; @@ -28,9 +26,12 @@ import { customElement, property } from "lit/decorators.js"; @customElement("ak-event-rule-list") export class RuleListPage extends TablePage { - expandable = true; - checkbox = true; - clearOnRefresh = true; + public override expandable = true; + public override checkbox = true; + public override clearOnRefresh = true; + public override searchPlaceholder = msg( + "Search for a notification rule by name, severity or group...", + ); protected override searchEnabled = true; public pageTitle = msg("Notification Rules"); @@ -40,9 +41,9 @@ export class RuleListPage extends TablePage { public pageIcon = "pf-icon pf-icon-attention-bell"; @property() - order = "name"; + public order = "name"; - async apiEndpoint(): Promise> { + protected override async apiEndpoint(): Promise> { return new EventsApi(DEFAULT_CONFIG).eventsRulesList(await this.defaultEndpointConfig()); } @@ -54,7 +55,7 @@ export class RuleListPage extends TablePage { [msg("Actions"), null, msg("Row Actions")], ]; - renderToolbarSelected(): TemplateResult { + protected override renderToolbarSelected(): TemplateResult { const disabled = this.selectedElements.length < 1; return html` { `; } - row(item: NotificationRule): SlottedTemplateResult[] { + protected override row(item: NotificationRule): SlottedTemplateResult[] { const enabled = !!item.destinationGroupObj || item.destinationEventUser; return [ - html``, + html``, html`${item.name}`, html`${severityToLabel(item.severity)}`, html`${item.destinationGroupObj @@ -87,20 +88,11 @@ export class RuleListPage extends TablePage { >${item.destinationGroupObj.name}` : msg("-")}`, - html`
- - ${msg("Update")} - ${msg("Update Notification Rule")} - - - + html`
+ ${IconEditButton(RuleForm, item.pk, item.name)} @@ -108,19 +100,13 @@ export class RuleListPage extends TablePage { ]; } - renderObjectCreate(): TemplateResult { - return html` - - ${msg("Create")} - ${msg("Create Notification Rule")} - - - - `; + protected override renderObjectCreate(): SlottedTemplateResult { + return ModalInvokerButton(RuleForm); } - renderExpanded(item: NotificationRule): TemplateResult { + protected override renderExpanded(item: NotificationRule): TemplateResult { const [appLabel, modelName] = ModelEnum.AuthentikEventsNotificationrule.split("."); + return html`

${msg( `These bindings control upon which events this rule triggers. diff --git a/web/src/components/events/UserEvents.ts b/web/src/admin/events/SimpleEventTable.ts similarity index 52% rename from web/src/components/events/UserEvents.ts rename to web/src/admin/events/SimpleEventTable.ts index 549fc2b003..30448a32fe 100644 --- a/web/src/components/events/UserEvents.ts +++ b/web/src/admin/events/SimpleEventTable.ts @@ -1,38 +1,35 @@ import "#components/ak-event-info"; -import "#elements/Tabs"; -import "#elements/buttons/Dropdown"; -import "#elements/buttons/ModalButton"; -import "#elements/buttons/SpinnerButton/index"; import { DEFAULT_CONFIG } from "#common/api/config"; import { EventWithContext } from "#common/events"; import { actionToLabel } from "#common/labels"; -import { PaginatedResponse, Table, TableColumn, Timestamp } from "#elements/table/Table"; +import { PaginatedResponse, RowType, Table, TableColumn, Timestamp } from "#elements/table/Table"; import { SlottedTemplateResult } from "#elements/types"; -import { renderEventUser } from "#admin/events/utils"; +import { EventGeo, renderEventUser } from "#admin/events/utils"; -import { Event, EventsApi } from "@goauthentik/api"; +import { Event, EventsApi, EventsEventsListRequest } from "@goauthentik/api"; import { msg } from "@lit/localize"; -import { html, TemplateResult } from "lit"; -import { customElement, property } from "lit/decorators.js"; +import { html } from "lit-html"; +import { property } from "lit/decorators.js"; -@customElement("ak-events-user") -export class UserEvents extends Table { - expandable = true; +export abstract class SimpleEventTable extends Table { + abstract apiParameters(): Promise>; + + pageSize = 10; @property() order = "-created"; - @property() - targetUser!: string; + expandable = true; async apiEndpoint(): Promise> { return new EventsApi(DEFAULT_CONFIG).eventsEventsList({ ...(await this.defaultEndpointConfig()), - username: this.targetUser, + pageSize: this.pageSize, + ...(await this.apiParameters()), }); } @@ -47,20 +44,25 @@ export class UserEvents extends Table { [msg("Client IP"), "client_ip"], ]; - row(item: EventWithContext): SlottedTemplateResult[] { + row(item: EventWithContext): RowType[] { return [ - html`${actionToLabel(item.action)}`, + html`

+ ${item.app}`, renderEventUser(item), - Timestamp(item.created), - html`${item.clientIp || msg("-")}`, + [Timestamp(item.created), { style: "white-space: nowrap;" }], + [ + html`
${item.clientIp || msg("-")}
+ ${EventGeo(item)}`, + { style: "white-space: nowrap;" }, + ], ]; } - renderExpanded(item: Event): TemplateResult { + protected override renderExpanded(item: Event): SlottedTemplateResult { return html``; } - renderEmpty(): TemplateResult { + protected override renderEmpty(): SlottedTemplateResult { return super.renderEmpty( html`${msg("No Events found.")} @@ -69,9 +71,3 @@ export class UserEvents extends Table { ); } } - -declare global { - interface HTMLElementTagNameMap { - "ak-events-user": UserEvents; - } -} diff --git a/web/src/admin/events/TransportForm.ts b/web/src/admin/events/TransportForm.ts index 9c65933203..8656dddfaa 100644 --- a/web/src/admin/events/TransportForm.ts +++ b/web/src/admin/events/TransportForm.ts @@ -1,5 +1,6 @@ import "#components/ak-hidden-text-input"; import "#components/ak-switch-input"; +import "#components/ak-text-input"; import "#elements/forms/HorizontalFormElement"; import "#elements/forms/Radio"; import "#elements/forms/SearchSelect/index"; @@ -12,11 +13,11 @@ import { ModelForm } from "#elements/forms/ModelForm"; import { EventsApi, NotificationTransport, - NotificationTransportModeEnum, NotificationWebhookMapping, PropertymappingsApi, PropertymappingsNotificationListRequest, StagesApi, + TransportModeEnum, TypeCreate, } from "@goauthentik/api"; @@ -27,6 +28,9 @@ import { ifDefined } from "lit/directives/if-defined.js"; @customElement("ak-event-transport-form") export class TransportForm extends ModelForm { + public static override verboseName = msg("Notification Transport"); + public static override verboseNamePlural = msg("Notification Transports"); + loadInstance(pk: string): Promise { return new EventsApi(DEFAULT_CONFIG) .eventsTransportsRetrieve({ @@ -73,14 +77,14 @@ export class TransportForm extends ModelForm { this.showEmail = false; switch (mode) { - case NotificationTransportModeEnum.Webhook: - case NotificationTransportModeEnum.WebhookSlack: + case TransportModeEnum.Webhook: + case TransportModeEnum.WebhookSlack: this.showWebhook = true; break; - case NotificationTransportModeEnum.Email: + case TransportModeEnum.Email: this.showEmail = true; break; - case NotificationTransportModeEnum.Local: + case TransportModeEnum.Local: default: // Both flags remain false break; @@ -88,15 +92,16 @@ export class TransportForm extends ModelForm { } protected override renderForm(): TemplateResult { - return html` - - - + return html` { ) => { + @change=${(ev: CustomEvent<{ value: TransportModeEnum }>) => { this.onModeChange(ev.detail.value); }} .options=${[ { label: msg("Local (notifications will be created within authentik)"), - value: NotificationTransportModeEnum.Local, + value: TransportModeEnum.Local, default: true, }, { label: msg("Email"), - value: NotificationTransportModeEnum.Email, + value: TransportModeEnum.Email, }, { label: msg("Webhook (generic)"), - value: NotificationTransportModeEnum.Webhook, + value: TransportModeEnum.Webhook, }, { label: msg("Webhook (Slack/Discord)"), - value: NotificationTransportModeEnum.WebhookSlack, + value: TransportModeEnum.WebhookSlack, }, ]} .value=${this.instance?.mode} @@ -248,8 +253,7 @@ export class TransportForm extends ModelForm { `; })} - - `; + `; } } diff --git a/web/src/admin/events/TransportListPage.ts b/web/src/admin/events/TransportListPage.ts index 8abeb939e3..8cd1ad7bf8 100644 --- a/web/src/admin/events/TransportListPage.ts +++ b/web/src/admin/events/TransportListPage.ts @@ -9,20 +9,18 @@ import "@patternfly/elements/pf-tooltip/pf-tooltip.js"; import { DEFAULT_CONFIG } from "#common/api/config"; +import { IconEditButton, ModalInvokerButton } from "#elements/dialogs"; import { PaginatedResponse, TableColumn } from "#elements/table/Table"; import { TablePage } from "#elements/table/TablePage"; import { SlottedTemplateResult } from "#elements/types"; -import { - EventsApi, - ModelEnum, - NotificationTransport, - RbacPermissionsAssignedByRolesListModelEnum, -} from "@goauthentik/api"; +import { TransportForm } from "#admin/events/TransportForm"; + +import { EventsApi, ModelEnum, NotificationTransport } from "@goauthentik/api"; import { msg } from "@lit/localize"; -import { html, TemplateResult } from "lit"; -import { customElement, property } from "lit/decorators.js"; +import { html } from "lit"; +import { customElement } from "lit/decorators.js"; @customElement("ak-event-transport-list") export class TransportListPage extends TablePage { @@ -33,26 +31,28 @@ export class TransportListPage extends TablePage { ); public pageIcon = "pf-icon pf-icon-export"; - checkbox = true; - clearOnRefresh = true; - expandable = true; + public override checkbox = true; + public override clearOnRefresh = true; + public override expandable = true; + public override searchPlaceholder = msg( + "Search for a notification transport by name or mode...", + ); - @property() - order = "name"; + public override order = "name"; - async apiEndpoint(): Promise> { + protected override async apiEndpoint(): Promise> { return new EventsApi(DEFAULT_CONFIG).eventsTransportsList( await this.defaultEndpointConfig(), ); } - protected columns: TableColumn[] = [ + protected override columns: TableColumn[] = [ [msg("Name"), "name"], [msg("Mode"), "mode"], [msg("Actions"), null, msg("Row Actions")], ]; - renderToolbarSelected(): TemplateResult { + protected override renderToolbarSelected(): SlottedTemplateResult { const disabled = this.selectedElements.length < 1; return html` { `; } - row(item: NotificationTransport): SlottedTemplateResult[] { + protected override row(item: NotificationTransport): SlottedTemplateResult[] { return [ - html`${item.name}`, - html`${item.modeVerbose}`, - html`
- - ${msg("Update")} - ${msg("Update Notification Transport")} - - - - + item.name, + item.modeVerbose, + html`
+ ${IconEditButton(TransportForm, item.pk, item.name)} @@ -112,7 +102,7 @@ export class TransportListPage extends TablePage { ]; } - renderExpanded(item: NotificationTransport): TemplateResult { + protected override renderExpanded(item: NotificationTransport): SlottedTemplateResult { const [appLabel, modelName] = ModelEnum.AuthentikEventsNotificationtransport.split("."); return html`
@@ -132,15 +122,8 @@ export class TransportListPage extends TablePage {
`; } - renderObjectCreate(): TemplateResult { - return html` - - ${msg("Create")} - ${msg("Create Notification Transport")} - - - - `; + protected override renderObjectCreate(): SlottedTemplateResult { + return ModalInvokerButton(TransportForm); } } diff --git a/web/src/admin/events/UserEvents.ts b/web/src/admin/events/UserEvents.ts new file mode 100644 index 0000000000..c444d181ff --- /dev/null +++ b/web/src/admin/events/UserEvents.ts @@ -0,0 +1,25 @@ +import "#components/ak-event-info"; + +import { SimpleEventTable } from "#admin/events/SimpleEventTable"; + +import { EventsEventsListRequest } from "@goauthentik/api"; + +import { customElement, property } from "lit/decorators.js"; + +@customElement("ak-events-user") +export class UserEvents extends SimpleEventTable { + @property() + targetUser!: string; + + async apiParameters(): Promise> { + return { + username: this.targetUser, + }; + } +} + +declare global { + interface HTMLElementTagNameMap { + "ak-events-user": UserEvents; + } +} diff --git a/web/src/admin/events/utils.ts b/web/src/admin/events/utils.ts index 8e741f4b1c..e6f0ecc195 100644 --- a/web/src/admin/events/utils.ts +++ b/web/src/admin/events/utils.ts @@ -7,6 +7,9 @@ import { msg, str } from "@lit/localize"; import { html, nothing, TemplateResult } from "lit"; export function formatUUID(hex: string): string { + if (typeof hex !== "string") { + return String(hex ?? ""); + } if (hex.length < 32) { return hex; } diff --git a/web/src/admin/files/FileListPage.ts b/web/src/admin/files/FileListPage.ts index 8416deab89..35ff0762cb 100644 --- a/web/src/admin/files/FileListPage.ts +++ b/web/src/admin/files/FileListPage.ts @@ -6,6 +6,7 @@ import "@patternfly/elements/pf-tooltip/pf-tooltip.js"; import "#elements/EmptyState"; import { DEFAULT_CONFIG } from "#common/api/config"; +import { createPaginatedResponse } from "#common/api/responses"; import { docLink } from "#common/global"; import { WithCapabilitiesConfig } from "#elements/mixins/capabilities"; @@ -13,7 +14,7 @@ import { PaginatedResponse, TableColumn } from "#elements/table/Table"; import { TablePage } from "#elements/table/TablePage"; import { SlottedTemplateResult } from "#elements/types"; -import { AdminApi, AdminFileListUsageEnum, CapabilitiesEnum } from "@goauthentik/api"; +import { AdminApi, CapabilitiesEnum, UsageEnum } from "@goauthentik/api"; import { msg } from "@lit/localize"; import { html, nothing, TemplateResult } from "lit"; @@ -36,6 +37,7 @@ export class FileListPage extends WithCapabilitiesConfig(TablePage) { public override pageTitle = msg("Files"); public override pageDescription = msg("Manage uploaded files."); public override pageIcon = "pf-icon pf-icon-folder-open"; + public override searchPlaceholder = msg("Search for a file by name..."); @property({ type: String, useDefault: true }) public order: FileListOrderKey = "name"; @@ -44,24 +46,13 @@ export class FileListPage extends WithCapabilitiesConfig(TablePage) { const api = new AdminApi(DEFAULT_CONFIG); // Cast necessary: API returns File objects but we only use name, url, and mimeType properties const items = (await api.adminFileList({ - usage: AdminFileListUsageEnum.Media, + usage: UsageEnum.Media, manageableOnly: true, ...(this.search ? { search: this.search } : {}), })) as unknown as FileItem[]; // Wrap array response in paginated response structure - return { - pagination: { - next: 0, - previous: 0, - count: items.length, - current: 1, - totalPages: 1, - startIndex: 1, - endIndex: items.length, - }, - results: items, - }; + return createPaginatedResponse(items); } protected columns: TableColumn[] = [ @@ -93,7 +84,7 @@ export class FileListPage extends WithCapabilitiesConfig(TablePage) { .delete=${(item: FileItem) => { return new AdminApi(DEFAULT_CONFIG).adminFileDestroy({ name: item.name, - usage: AdminFileListUsageEnum.Media, + usage: UsageEnum.Media, }); }} > diff --git a/web/src/admin/files/FileUploadForm.ts b/web/src/admin/files/FileUploadForm.ts index 76a43c98a7..29760a0259 100644 --- a/web/src/admin/files/FileUploadForm.ts +++ b/web/src/admin/files/FileUploadForm.ts @@ -8,7 +8,7 @@ import { Form } from "#elements/forms/Form"; import { PreventFormSubmit } from "#elements/forms/helpers"; import { showMessage } from "#elements/messages/MessageContainer"; -import { AdminApi, AdminFileListUsageEnum } from "@goauthentik/api"; +import { AdminApi, UsageEnum } from "@goauthentik/api"; import { msg } from "@lit/localize"; import { html } from "lit"; @@ -48,7 +48,7 @@ function getFileExtension(fileName: string): string { @customElement("ak-file-upload-form") export class FileUploadForm extends Form> { @property({ type: String, useDefault: true }) - public usage: AdminFileListUsageEnum = AdminFileListUsageEnum.Media; + public usage: UsageEnum = UsageEnum.Media; @state() protected selectedFile: File | null = null; diff --git a/web/src/admin/flows/BoundStagesList.ts b/web/src/admin/flows/BoundStagesList.ts index 8eced25541..b709787357 100644 --- a/web/src/admin/flows/BoundStagesList.ts +++ b/web/src/admin/flows/BoundStagesList.ts @@ -1,42 +1,43 @@ import "#admin/flows/StageBindingForm"; import "#admin/policies/BoundPoliciesList"; import "#admin/rbac/ObjectPermissionModal"; -import "#admin/stages/StageWizard"; import "#elements/Tabs"; import "#elements/forms/DeleteBulkForm"; import "#elements/forms/ModalForm"; import { DEFAULT_CONFIG } from "#common/api/config"; +import { modalInvoker } from "#elements/dialogs"; +import { IconPermissionButton } from "#elements/dialogs/components/IconPermissionButton"; import { CustomFormElementTagName } from "#elements/forms/unsafe"; import { PaginatedResponse, Table, TableColumn } from "#elements/table/Table"; import { SlottedTemplateResult } from "#elements/types"; import { StrictUnsafe } from "#elements/utils/unsafe"; -import { - FlowsApi, - FlowStageBinding, - RbacPermissionsAssignedByRolesListModelEnum, -} from "@goauthentik/api"; +import { StageBindingForm } from "#admin/flows/StageBindingForm"; +import { AKStageWizard } from "#admin/stages/ak-stage-wizard"; -import { msg, str } from "@lit/localize"; -import { html, TemplateResult } from "lit"; +import { FlowsApi, FlowStageBinding, ModelEnum } from "@goauthentik/api"; + +import { msg } from "@lit/localize"; +import { html } from "lit"; import { customElement, property } from "lit/decorators.js"; -import { ifDefined } from "lit/directives/if-defined.js"; @customElement("ak-bound-stages-list") export class BoundStagesList extends Table { - expandable = true; - checkbox = true; - clearOnRefresh = true; + protected flowsAPI = new FlowsApi(DEFAULT_CONFIG); - order = "order"; + public override expandable = true; + public override checkbox = true; + public override clearOnRefresh = true; - @property() - target?: string; + public override order = "order"; - async apiEndpoint(): Promise> { - return new FlowsApi(DEFAULT_CONFIG).flowsBindingsList({ + @property({ type: String, useDefault: true }) + public target: string | null = null; + + protected override async apiEndpoint(): Promise> { + return this.flowsAPI.flowsBindingsList({ ...(await this.defaultEndpointConfig()), target: this.target || "", }); @@ -53,7 +54,7 @@ export class BoundStagesList extends Table { [msg("Actions"), null, msg("Row Actions")], ]; - renderToolbarSelected(): TemplateResult { + renderToolbarSelected(): SlottedTemplateResult { const disabled = this.selectedElements.length < 1; return html` { ]; }} .usedBy=${(item: FlowStageBinding) => { - return new FlowsApi(DEFAULT_CONFIG).flowsBindingsUsedByList({ + return this.flowsAPI.flowsBindingsUsedByList({ fsbUuid: item.pk, }); }} .delete=${(item: FlowStageBinding) => { - return new FlowsApi(DEFAULT_CONFIG).flowsBindingsDestroy({ + return this.flowsAPI.flowsBindingsDestroy({ fsbUuid: item.pk, }); }} @@ -81,95 +82,78 @@ export class BoundStagesList extends Table { `; } - row(item: FlowStageBinding): SlottedTemplateResult[] { + protected override row(item: FlowStageBinding): SlottedTemplateResult[] { return [ html`
${item.order}
`, - html`${item.stageObj?.name}`, - html`${item.stageObj?.verboseName}`, - html` - ${StrictUnsafe(item.stageObj?.component, { - slot: "form", - instancePk: item.stageObj?.pk, - actionLabel: msg("Update"), - headline: msg(str`Update ${item.stageObj?.verboseName}`, { - id: "form.headline.update", + item.stageObj?.name, + item.stageObj?.verboseName, + html`
+ - - - ${msg("Update")} - ${msg("Update Stage binding")} - - - - - - `, + ${msg("Edit Stage")} + + + + ${IconPermissionButton(item.stageObj?.name || "", { + model: ModelEnum.AuthentikFlowsFlowstagebinding, + objectPk: item.pk, + })} +
`, ]; } - renderExpanded(item: FlowStageBinding): TemplateResult { + protected renderActions(): SlottedTemplateResult { + return html``; + } + + protected override renderExpanded(item: FlowStageBinding): SlottedTemplateResult { return html`
-

${msg("These bindings control if this stage will be applied to the flow.")}

+ ${msg( + "These bindings control if this stage will be applied to the flow.", + )}
`; } - renderEmpty(): TemplateResult { + protected override renderEmpty(): SlottedTemplateResult { return super.renderEmpty( html` ${msg("No Stages bound")}
${msg("No stages are currently bound to this flow.")}
-
- - - ${msg("Create")} - ${msg("Create Stage binding")} - - - - -
+
${this.renderActions()}
`, ); } - renderToolbar(): TemplateResult { - return html` - - - ${msg("Create")} - ${msg("Create Stage binding")} - - - - - ${super.renderToolbar()} - `; + protected override renderToolbar(): SlottedTemplateResult { + return [this.renderActions(), super.renderToolbar()]; } } diff --git a/web/src/admin/flows/FlowForm.ts b/web/src/admin/flows/FlowForm.ts index dd4091c740..77881cdcca 100644 --- a/web/src/admin/flows/FlowForm.ts +++ b/web/src/admin/flows/FlowForm.ts @@ -1,5 +1,6 @@ import "#components/ak-file-search-input"; import "#components/ak-slug-input"; +import "#components/ak-text-input"; import "#components/ak-switch-input"; import "#elements/forms/FormGroup"; import "#elements/forms/HorizontalFormElement"; @@ -10,18 +11,20 @@ import { DEFAULT_CONFIG } from "#common/api/config"; import { ModelForm } from "#elements/forms/ModelForm"; import { WithCapabilitiesConfig } from "#elements/mixins/capabilities"; +import { AKLabel } from "#components/ak-label"; + import { DesignationToLabel, LayoutToLabel } from "#admin/flows/utils"; import { policyEngineModes } from "#admin/policies/PolicyEngineModes"; import { - AdminFileListUsageEnum, + AuthenticationEnum, DeniedActionEnum, Flow, FlowDesignationEnum, FlowLayoutEnum, FlowsApi, + UsageEnum, } from "@goauthentik/api"; -import { AuthenticationEnum } from "@goauthentik/api/dist/models/AuthenticationEnum.js"; import { msg } from "@lit/localize"; import { html, TemplateResult } from "lit"; @@ -35,62 +38,80 @@ import { ifDefined } from "lit/directives/if-defined.js"; */ @customElement("ak-flow-form") export class FlowForm extends WithCapabilitiesConfig(ModelForm) { - async loadInstance(pk: string): Promise { - return new FlowsApi(DEFAULT_CONFIG).flowsInstancesRetrieve({ + public static override verboseName = msg("Flow"); + public static override verboseNamePlural = msg("Flows"); + + #api = new FlowsApi(DEFAULT_CONFIG); + + protected override async loadInstance(pk: string): Promise { + return this.#api.flowsInstancesRetrieve({ slug: pk, }); } - getSuccessMessage(): string { + public override getSuccessMessage(): string { return this.instance ? msg("Successfully updated flow.") : msg("Successfully created flow."); } - async send(data: Flow): Promise { + protected override async send(data: Flow): Promise { if (this.instance) { - return new FlowsApi(DEFAULT_CONFIG).flowsInstancesUpdate({ + return this.#api.flowsInstancesUpdate({ slug: this.instance.slug, flowRequest: data, }); } - return new FlowsApi(DEFAULT_CONFIG).flowsInstancesCreate({ + + return this.#api.flowsInstancesCreate({ flowRequest: data, }); } protected override renderForm(): TemplateResult { - return html` - - - - -

${msg("Shown as the Title in Flow pages.")}

-
+ return html` + - - + - - +

${msg("Required authentication level for this flow.")} @@ -261,8 +297,17 @@ export class FlowForm extends WithCapabilitiesConfig(ModelForm) {

- -
@@ -271,9 +214,7 @@ export class FlowViewPage extends AKElement { class="pf-c-page__main-section pf-m-no-padding-mobile" >
-
- -
+
${msg("These bindings control which users can access this flow.")}
-
- - -
+ +
diff --git a/web/src/admin/flows/StageBindingForm.ts b/web/src/admin/flows/StageBindingForm.ts index 6ae49db9ea..cbe25a7f73 100644 --- a/web/src/admin/flows/StageBindingForm.ts +++ b/web/src/admin/flows/StageBindingForm.ts @@ -14,8 +14,8 @@ import { SlottedTemplateResult } from "#elements/types"; import { policyEngineModes } from "#admin/policies/PolicyEngineModes"; import { + FlowDesignationEnum, FlowsApi, - FlowsInstancesListDesignationEnum, FlowStageBinding, InvalidResponseActionEnum, Stage, @@ -24,7 +24,7 @@ import { } from "@goauthentik/api"; import { msg } from "@lit/localize"; -import { html, nothing, TemplateResult } from "lit"; +import { html, nothing } from "lit"; import { customElement, property, state } from "lit/decorators.js"; function createInvalidResponseOptions(): RadioOption[] { @@ -52,6 +52,9 @@ function createInvalidResponseOptions(): RadioOption[ @customElement("ak-stage-binding-form") export class StageBindingForm extends ModelForm { + public static override verboseName = msg("Stage Binding"); + public static override verboseNamePlural = msg("Stage Bindings"); + async load() { this.defaultOrder = await this.getOrder(); } @@ -117,17 +120,18 @@ export class StageBindingForm extends ModelForm { } return html` `; } - protected override renderForm(): TemplateResult { - return html` ${this.renderTarget()} + protected override renderForm(): SlottedTemplateResult { + return html`${this.renderTarget()} => { const args: StagesAllListRequest = { ordering: "name", diff --git a/web/src/admin/groups/GroupListPage.ts b/web/src/admin/groups/GroupListPage.ts index ff6f4fd1f2..3baee8ec8c 100644 --- a/web/src/admin/groups/GroupListPage.ts +++ b/web/src/admin/groups/GroupListPage.ts @@ -1,4 +1,4 @@ -import "#admin/groups/GroupForm"; +import "#admin/groups/ak-group-form"; import "#components/ak-status-label"; import "#elements/buttons/SpinnerButton/index"; import "#elements/forms/DeleteBulkForm"; @@ -7,10 +7,13 @@ import "@patternfly/elements/pf-tooltip/pf-tooltip.js"; import { DEFAULT_CONFIG } from "#common/api/config"; +import { IconEditButton, ModalInvokerButton } from "#elements/dialogs"; import { PaginatedResponse, TableColumn } from "#elements/table/Table"; import { TablePage } from "#elements/table/TablePage"; import { SlottedTemplateResult } from "#elements/types"; +import { GroupForm } from "#admin/groups/ak-group-form"; + import { CoreApi, Group } from "@goauthentik/api"; import { msg, str } from "@lit/localize"; @@ -19,9 +22,11 @@ import { customElement, property } from "lit/decorators.js"; @customElement("ak-group-list") export class GroupListPage extends TablePage { - checkbox = true; - clearOnRefresh = true; protected override searchEnabled = true; + + public override checkbox = true; + public override clearOnRefresh = true; + public searchPlaceholder = msg("Search for a group by name…"); public searchLabel = msg("Group Search"); public pageTitle = msg("Groups"); @@ -32,9 +37,9 @@ export class GroupListPage extends TablePage { public supportsQL = true; @property() - order = "name"; + public order = "name"; - async apiEndpoint(): Promise> { + protected async apiEndpoint(): Promise> { return new CoreApi(DEFAULT_CONFIG).coreGroupsList({ ...(await this.defaultEndpointConfig()), includeUsers: false, @@ -48,7 +53,7 @@ export class GroupListPage extends TablePage { [msg("Actions"), null, msg("Row Actions")], ]; - renderToolbarSelected(): TemplateResult { + protected renderToolbarSelected(): TemplateResult { const disabled = this.selectedElements.length < 1; return html` { `; } - row(item: Group): SlottedTemplateResult[] { + protected row(item: Group): SlottedTemplateResult[] { return [ html` { >`, html`${Array.from(item.users || []).length}`, html``, - html`
- - ${msg("Update")} - ${msg("Update Group")} - - - + html`
+ ${IconEditButton(GroupForm, item.pk, item.name)}
`, ]; } - renderObjectCreate(): TemplateResult { - return html` - - ${msg("Create Group")} - ${msg("New Group")} - - - - `; + protected renderObjectCreate(): SlottedTemplateResult { + return ModalInvokerButton(GroupForm); } } diff --git a/web/src/admin/groups/GroupViewPage.ts b/web/src/admin/groups/GroupViewPage.ts index 3bfa30b401..94e26d1550 100644 --- a/web/src/admin/groups/GroupViewPage.ts +++ b/web/src/admin/groups/GroupViewPage.ts @@ -1,33 +1,30 @@ -import "#admin/groups/GroupForm"; import "#admin/groups/RelatedUserList"; -import "#admin/rbac/ObjectPermissionsPage"; -import "#admin/roles/RelatedRoleList"; +import "#admin/rbac/ak-rbac-object-permission-page"; +import "#admin/roles/ak-related-role-table"; import "#components/ak-object-attributes-card"; import "#admin/lifecycle/ObjectLifecyclePage"; import "#components/ak-status-label"; -import "#components/events/ObjectChangelog"; +import "#admin/events/ObjectChangelog"; import "#elements/CodeMirror"; import "#elements/Tabs"; import "#elements/buttons/ActionButton/index"; import "#elements/buttons/SpinnerButton/index"; -import "#elements/forms/ModalForm"; import "#elements/ak-mdx/ak-mdx"; import { DEFAULT_CONFIG } from "#common/api/config"; import { EVENT_REFRESH } from "#common/constants"; import { AKElement } from "#elements/Base"; +import { modalInvoker } from "#elements/dialogs"; import { WithLicenseSummary } from "#elements/mixins/license"; import { SlottedTemplateResult } from "#elements/types"; import { setPageDetails } from "#components/ak-page-navbar"; +import renderDescriptionList from "#components/DescriptionList"; -import { - ContentTypeEnum, - CoreApi, - Group, - RbacPermissionsAssignedByRolesListModelEnum, -} from "@goauthentik/api"; +import { GroupForm } from "#admin/groups/ak-group-form"; + +import { ContentTypeEnum, CoreApi, Group, ModelEnum } from "@goauthentik/api"; import { msg, str } from "@lit/localize"; import { CSSResult, html, nothing, PropertyValues, TemplateResult } from "lit"; @@ -101,94 +98,69 @@ export class GroupViewPage extends WithLicenseSummary(AKElement) { >
${msg("Group Info")}
-
${msg("Changelog")}
-
- - -
+ +
-
- - -
+
${this.hasEnterpriseLicense ? html`
-
- -
+
-
- - -
+
diff --git a/web/src/admin/groups/RelatedGroupList.ts b/web/src/admin/groups/RelatedGroupList.ts index b0dd16b161..f773d78ded 100644 --- a/web/src/admin/groups/RelatedGroupList.ts +++ b/web/src/admin/groups/RelatedGroupList.ts @@ -1,18 +1,19 @@ -import "#admin/groups/GroupForm"; -import "#admin/users/GroupSelectModal"; +import "#admin/users/ak-user-group-table"; import "#components/ak-status-label"; import "#elements/buttons/SpinnerButton/index"; import "#elements/forms/DeleteBulkForm"; import "#elements/forms/HorizontalFormElement"; -import "#elements/forms/ModalForm"; import "@patternfly/elements/pf-tooltip/pf-tooltip.js"; import { DEFAULT_CONFIG } from "#common/api/config"; -import { Form } from "#elements/forms/Form"; +import { modalInvoker, renderModal } from "#elements/dialogs"; +import { AKFormSubmitEvent, Form } from "#elements/forms/Form"; import { PaginatedResponse, Table, TableColumn } from "#elements/table/Table"; import { SlottedTemplateResult } from "#elements/types"; +import { GroupForm } from "#admin/groups/ak-group-form"; + import { CoreApi, Group, User } from "@goauthentik/api"; import { msg, str } from "@lit/localize"; @@ -22,17 +23,21 @@ import { ifDefined } from "lit/directives/if-defined.js"; @customElement("ak-group-related-add") export class RelatedGroupAdd extends Form<{ groups: string[] }> { + public static override verboseName = msg("Group"); + public static override submitVerb = msg("Add"); + public static override createLabel = msg("Add"); + @property({ attribute: false }) - user?: User; + public user?: User; @state() - groupsToAdd: Group[] = []; + public groupsToAdd: Group[] = []; - getSuccessMessage(): string { + public override getSuccessMessage(): string { return msg("Successfully added user to group(s)."); } - async send(data: { groups: string[] }): Promise { + protected async send(data: { groups: string[] }): Promise { await Promise.all( data.groups.map((group) => { return new CoreApi(DEFAULT_CONFIG).coreGroupsAddUserCreate({ @@ -43,27 +48,40 @@ export class RelatedGroupAdd extends Form<{ groups: string[] }> { }); }), ); + return data; } + protected openUserGroupSelectModal = () => { + return renderModal(html` + ) => { + this.groupsToAdd = event.target.toJSON(); + }} + > + + `); + }; + protected override renderForm(): TemplateResult { return html`
- { - this.groupsToAdd = items; - this.requestUpdate(); - return Promise.resolve(); - }} + - + + + +
- + ${this.groupsToAdd.map((group) => { return html` { const disabled = this.selectedElements.length < 1; return html` { return [ html`${item.name}`, html``, - html` - ${msg("Update")} - ${msg("Update Group")} - - - `, + html``, ]; } renderToolbar(): TemplateResult { return html` ${this.targetUser - ? html` - ${msg("Add")} - ${msg("Add Group")} - - - - ` + ? html`` : nothing} - - ${msg("Create")} - ${msg("Create Group")} - - - + ${super.renderToolbar()} `; } diff --git a/web/src/admin/groups/RelatedUserList.ts b/web/src/admin/groups/RelatedUserList.ts index a76146b605..9a71ce90cc 100644 --- a/web/src/admin/groups/RelatedUserList.ts +++ b/web/src/admin/groups/RelatedUserList.ts @@ -1,4 +1,4 @@ -import "#admin/groups/MemberSelectModal"; +import "#admin/groups/ak-group-member-table"; import "#admin/users/ServiceAccountForm"; import "#admin/users/UserActiveForm"; import "#admin/users/UserForm"; @@ -14,21 +14,32 @@ import "#elements/forms/ModalForm"; import "@patternfly/elements/pf-tooltip/pf-tooltip.js"; import { DEFAULT_CONFIG } from "#common/api/config"; -import { PFSize } from "#common/enums"; +import { formatDisambiguatedUserDisplayName } from "#common/users"; -import { Form } from "#elements/forms/Form"; +import { IconEditButton, renderModal } from "#elements/dialogs"; +import { AKFormSubmitEvent, Form } from "#elements/forms/Form"; import { WithBrandConfig } from "#elements/mixins/branding"; -import { CapabilitiesEnum, WithCapabilitiesConfig } from "#elements/mixins/capabilities"; +import { WithCapabilitiesConfig } from "#elements/mixins/capabilities"; import { getURLParam, updateURLParams } from "#elements/router/RouteMatch"; import { PaginatedResponse, Table, TableColumn, Timestamp } from "#elements/table/Table"; import { SlottedTemplateResult } from "#elements/types"; -import { UserOption } from "#elements/user/utils"; import { AKLabel } from "#components/ak-label"; -import { renderRecoveryButtons } from "#admin/users/UserListPage"; +import { RecoveryButtons } from "#admin/users/recovery"; +import { ToggleUserActivationButton } from "#admin/users/UserActiveForm"; +import { UserForm } from "#admin/users/UserForm"; +import { UserImpersonateForm } from "#admin/users/UserImpersonateForm"; -import { CoreApi, CoreUsersListTypeEnum, Group, RbacApi, Role, User } from "@goauthentik/api"; +import { + CapabilitiesEnum, + CoreApi, + Group, + RbacApi, + Role, + User, + UserTypeEnum, +} from "@goauthentik/api"; import { msg, str } from "@lit/localize"; import { CSSResult, html, nothing, TemplateResult } from "lit"; @@ -36,11 +47,13 @@ import { customElement, property, state } from "lit/decorators.js"; import { ifDefined } from "lit/directives/if-defined.js"; import PFAlert from "@patternfly/patternfly/components/Alert/alert.css"; -import PFBanner from "@patternfly/patternfly/components/Banner/banner.css"; import PFDescriptionList from "@patternfly/patternfly/components/DescriptionList/description-list.css"; -@customElement("ak-user-related-add") -export class RelatedUserAdd extends Form<{ users: number[] }> { +@customElement("ak-add-related-user-form") +export class AddRelatedUserForm extends Form<{ users: number[] }> { + public override headline = msg("Assign Additional Users"); + public override submitLabel = msg("Assign"); + @property({ attribute: false }) public targetGroup: Group | null = null; @@ -50,7 +63,7 @@ export class RelatedUserAdd extends Form<{ users: number[] }> { @state() usersToAdd: User[] = []; - getSuccessMessage(): string { + public override getSuccessMessage(): string { return msg("Successfully added user(s)."); } @@ -79,12 +92,31 @@ export class RelatedUserAdd extends Form<{ users: number[] }> { return data; } + protected openUserSelectionModal = (event?: Event) => { + if (event?.defaultPrevented) { + return; + } + + return renderModal(html` + ) => { + this.usersToAdd = event.target.toJSON(); + }} + > + + `); + }; + + //#region Rendering + protected override renderForm(): TemplateResult { // TODO: The `form-control-sibling` container is a workaround to get the // table to allow the table to appear as an inline-block element next to the input group. // This should be fixed by moving the `@container` query off `:host`. - return html` + return html` ${AKLabel( { slot: "label", @@ -95,30 +127,24 @@ export class RelatedUserAdd extends Form<{ users: number[] }> { )}
- { - this.usersToAdd = items; - this.requestUpdate(); - return Promise.resolve(); - }} + - + + + +
- - ${this.usersToAdd.map((user) => { + ${this.usersToAdd.map((user) => { return html` { this.requestUpdate(); }} > - ${UserOption(user)} + ${formatDisambiguatedUserDisplayName(user)} `; - })} - + })}
`; @@ -140,37 +166,44 @@ export class RelatedUserAdd extends Form<{ users: number[] }> { @customElement("ak-user-related-list") export class RelatedUserList extends WithBrandConfig(WithCapabilitiesConfig(Table)) { + public static styles: CSSResult[] = [...Table.styles, PFDescriptionList, PFAlert]; + public override searchPlaceholder = msg("Search for users by username or display name..."); public override searchLabel = msg("User Search"); public override label = msg("Users"); - expandable = true; - checkbox = true; - clearOnRefresh = true; + public override expandable = true; + public override checkbox = true; + public override clearOnRefresh = true; protected override searchEnabled = true; @property({ attribute: false }) - targetGroup?: Group; + public targetGroup: Group | null = null; @property({ attribute: false }) - targetRole?: Role; + public targetRole: Role | null = null; - @property() - order = "last_login"; + public override order = "last_login"; @property({ type: Boolean }) - hideServiceAccounts = getURLParam("hideServiceAccounts", true); + public hideServiceAccounts = getURLParam("hideServiceAccounts", true); - static styles: CSSResult[] = [...Table.styles, PFDescriptionList, PFAlert, PFBanner]; + protected canImpersonate = false; - async apiEndpoint(): Promise> { + public override connectedCallback(): void { + super.connectedCallback(); + + this.canImpersonate = this.can(CapabilitiesEnum.CanImpersonate); + } + + protected async apiEndpoint(): Promise> { const users = await new CoreApi(DEFAULT_CONFIG).coreUsersList({ ...(await this.defaultEndpointConfig()), ...(this.targetGroup && { groupsByPk: [this.targetGroup.pk] }), ...(this.targetRole && { rolesByPk: [this.targetRole.pk] }), type: this.hideServiceAccounts - ? [CoreUsersListTypeEnum.External, CoreUsersListTypeEnum.Internal] + ? [UserTypeEnum.External, UserTypeEnum.Internal] : undefined, includeGroups: false, includeRoles: false, @@ -190,12 +223,13 @@ export class RelatedUserList extends WithBrandConfig(WithCapabilitiesConfig(Tabl [msg("Actions"), null, msg("Row Actions")], ]; - renderToolbarSelected(): TemplateResult { + protected override renderToolbarSelected(): TemplateResult { const disabled = this.selectedElements.length < 1; const targetLabel = this.targetGroup?.name || this.targetRole?.name; + return html``; } - row(item: User): SlottedTemplateResult[] { - const canImpersonate = - this.can(CapabilitiesEnum.CanImpersonate) && item.pk !== this.currentUser?.pk; + protected override row(item: User): SlottedTemplateResult[] { + const showImpersonate = this.canImpersonate && item.pk !== this.currentUser?.pk; + return [ html`
${item.username}
@@ -244,42 +278,26 @@ export class RelatedUserList extends WithBrandConfig(WithCapabilitiesConfig(Tabl html``, Timestamp(item.lastLogin), - html`
- - ${msg("Update")} - ${msg("Update User")} - - - - ${canImpersonate - ? html` - - ${msg("Impersonate")} - ${msg("Impersonate")} ${item.username} - - - - ` - : nothing} + html`
+ ${IconEditButton(UserForm, item.pk)} + ${showImpersonate + ? html`` + : null}
`, ]; } - renderExpanded(item: User): TemplateResult { + protected override renderExpanded(item: User): TemplateResult { return html`
@@ -300,22 +318,7 @@ export class RelatedUserList extends WithBrandConfig(WithCapabilitiesConfig(Tabl
- { - return new CoreApi(DEFAULT_CONFIG).coreUsersPartialUpdate({ - id: item.pk || 0, - patchedUserRequest: { - isActive: !item.isActive, - }, - }); - }} - > - - + ${ToggleUserActivationButton(item)}
@@ -325,7 +328,7 @@ export class RelatedUserList extends WithBrandConfig(WithCapabilitiesConfig(Tabl
- ${renderRecoveryButtons({ + ${RecoveryButtons({ user: item, brandHasRecoveryFlow: Boolean(this.brand.flowRecovery), })} @@ -335,39 +338,94 @@ export class RelatedUserList extends WithBrandConfig(WithCapabilitiesConfig(Tabl
`; } - renderToolbar(): TemplateResult { + protected openAddUserToTargetGroupModal = () => { + const banner = this.targetGroup?.isSuperuser + ? html`
+ ${msg( + "Warning: This group is configured with superuser access. Added users will have superuser access.", + )} +
` + : nothing; + + return renderModal( + html`${banner} + `, + ); + }; + + protected openAddUserToTargetRoleModal = () => { + return renderModal( + html` + `, + ); + }; + + protected openNewUserToTargetGroupModal = () => { + const banner = this.targetGroup + ? html`
+ ${msg(str`This user will be added to the group "${this.targetGroup.name}".`)} +
` + : nothing; + + return renderModal( + html`${banner}`, + ); + }; + + protected openNewUserToTargetRoleModal = () => { + const banner = this.targetRole + ? html`
+ ${msg(str`This user will be added to the role "${this.targetRole.name}".`)} +
` + : nothing; + + return renderModal( + html`${banner}`, + ); + }; + + protected openNewServiceUserToTargetGroupModal = () => { + const banner = this.targetGroup + ? html`
+ ${msg(str`This user will be added to the group "${this.targetGroup.name}".`)} +
` + : nothing; + + return renderModal( + html`${banner}`, + { + closedBy: "none", + }, + ); + }; + + protected override renderToolbar(): TemplateResult { return html` ${this.targetGroup - ? html` - ${msg("Assign")} - ${msg("Assign Additional Users")} - ${this.targetGroup.isSuperuser - ? html` -
- ${msg( - "Warning: This group is configured with superuser access. Added users will have superuser access.", - )} -
- ` - : nothing} - - - -
` - : nothing} + ? html`` + : null} ${this.targetRole - ? html` - ${msg("Assign")} - ${msg("Assign Additional Users")} - - - - ` - : nothing} + ? html`` + : null} +
+ ${this.targetGroup + ? html`
  • + +
  • ` + : null} + ${this.targetRole + ? html`
  • + +
  • ` + : null} +
  • - - ${msg("Create User")} - ${msg("New User")} - ${this.targetGroup - ? html` -
    - ${msg( - str`This user will be added to the group "${this.targetGroup.name}".`, - )} -
    - - - ` - : nothing} - ${this.targetRole - ? html` -
    - ${msg( - str`This user will be added to the role "${this.targetRole.name}".`, - )} -
    - - - ` - : nothing} -
    - ${msg("New user...")} - - -
  • -
  • - - ${msg("Create Service Account")} - ${msg("New Service Account")} - ${this.targetGroup - ? html` -
    - ${msg( - str`This user will be added to the group "${this.targetGroup.name}".`, - )} -
    - - ` - : nothing} - ${this.targetRole - ? html` -
    - ${msg( - str`This user will be added to the role "${this.targetRole.name}".`, - )} -
    - - ` - : nothing} - - ${msg("New service account...")} - -
    + ${msg("New Service Account...")} +
  • @@ -462,7 +486,7 @@ export class RelatedUserList extends WithBrandConfig(WithCapabilitiesConfig(Tabl `; } - renderToolbarAfter(): TemplateResult { + protected override renderToolbarAfter(): TemplateResult { return html`
    @@ -497,6 +521,6 @@ export class RelatedUserList extends WithBrandConfig(WithCapabilitiesConfig(Tabl declare global { interface HTMLElementTagNameMap { "ak-user-related-list": RelatedUserList; - "ak-user-related-add": RelatedUserAdd; + "ak-add-related-user-form": AddRelatedUserForm; } } diff --git a/web/src/admin/groups/GroupForm.ts b/web/src/admin/groups/ak-group-form.ts similarity index 97% rename from web/src/admin/groups/GroupForm.ts rename to web/src/admin/groups/ak-group-form.ts index 17d73f40e0..dc2dda4798 100644 --- a/web/src/admin/groups/GroupForm.ts +++ b/web/src/admin/groups/ak-group-form.ts @@ -1,4 +1,4 @@ -import "#admin/groups/MemberSelectModal"; +import "#admin/groups/ak-group-member-table"; import "#elements/CodeMirror"; import "#elements/ak-dual-select/ak-dual-select-provider"; import "#elements/chips/Chip"; @@ -43,6 +43,9 @@ export class GroupForm extends ModelForm { `, ]; + public static verboseName = msg("Group"); + public static verboseNamePlural = msg("Groups"); + #fetchGroups = (page: number, search?: string): Promise => { return new CoreApi(DEFAULT_CONFIG) .coreGroupsList({ diff --git a/web/src/admin/groups/MemberSelectModal.ts b/web/src/admin/groups/ak-group-member-table.ts similarity index 67% rename from web/src/admin/groups/MemberSelectModal.ts rename to web/src/admin/groups/ak-group-member-table.ts index d3928f5434..c665f18949 100644 --- a/web/src/admin/groups/MemberSelectModal.ts +++ b/web/src/admin/groups/ak-group-member-table.ts @@ -3,8 +3,7 @@ import "#elements/buttons/SpinnerButton/index"; import { DEFAULT_CONFIG } from "#common/api/config"; -import { PaginatedResponse, TableColumn, Timestamp } from "#elements/table/Table"; -import { TableModal } from "#elements/table/TableModal"; +import { PaginatedResponse, Table, TableColumn, Timestamp } from "#elements/table/Table"; import { SlottedTemplateResult } from "#elements/types"; import { CoreApi, CoreUsersListRequest, User } from "@goauthentik/api"; @@ -12,19 +11,16 @@ import { CoreApi, CoreUsersListRequest, User } from "@goauthentik/api"; import { match } from "ts-pattern"; import { msg } from "@lit/localize"; -import { css, html, TemplateResult } from "lit"; -import { customElement, property } from "lit/decorators.js"; +import { css, html } from "lit"; +import { customElement } from "lit/decorators.js"; // Leaving room in the future for a multi-state control if someone somehow needs to filter inactive // users as well. type UserListFilter = "active" | "all"; type UserListRequestFilter = Partial>; -@customElement("ak-group-member-select-table") -export class MemberSelectTable extends TableModal { - public override searchPlaceholder = msg("Search for users by username or display name..."); - public override searchLabel = msg("Search Users"); - public override label = msg("Select Users"); +@customElement("ak-group-member-table") +export class GroupMemberSelectTable extends Table { static styles = [ ...super.styles, css` @@ -37,16 +33,17 @@ export class MemberSelectTable extends TableModal { } `, ]; - public supportsQL = true; - checkbox = true; - checkboxChip = true; + public override searchPlaceholder = msg("Search for users by username or display name..."); + public override searchLabel = msg("Search Users"); + public override label = msg("Select Users"); + public override supportsQL = true; + + public override checkbox = true; + public override checkboxChip = true; protected override searchEnabled = true; - @property() - confirm!: (selectedItems: User[]) => Promise; - userListFilter: UserListFilter = "active"; order = "username"; @@ -115,41 +112,13 @@ export class MemberSelectTable extends TableModal { ]; } - renderSelectedChip(item: User): TemplateResult { - return html`${item.username}`; - } - - renderModalInner(): TemplateResult { - return html`
    -
    -

    ${msg("Select users")}

    -
    -
    -
    ${this.renderTable()}
    - `; + renderSelectedChip(item: User): SlottedTemplateResult { + return item.username; } } declare global { interface HTMLElementTagNameMap { - "ak-group-member-select-table": MemberSelectTable; + "ak-group-member-table": GroupMemberSelectTable; } } diff --git a/web/src/admin/index.entrypoint.ts b/web/src/admin/index.entrypoint.ts new file mode 100644 index 0000000000..f670e46b84 --- /dev/null +++ b/web/src/admin/index.entrypoint.ts @@ -0,0 +1,6 @@ +import "#elements/messages/MessageContainer"; +import "#admin/ak-interface-admin"; + +if (process.env.NODE_ENV === "development") { + await import("@goauthentik/esbuild-plugin-live-reload"); +} diff --git a/web/src/admin/lifecycle/LifecycleRuleForm.ts b/web/src/admin/lifecycle/LifecycleRuleForm.ts index 388a71c480..ef97f191d7 100644 --- a/web/src/admin/lifecycle/LifecycleRuleForm.ts +++ b/web/src/admin/lifecycle/LifecycleRuleForm.ts @@ -83,7 +83,10 @@ function formatContentTypePlaceholder(contentType: ContentTypeEnum): string { } @customElement("ak-lifecycle-rule-form") -export class LifecycleRuleForm extends ModelForm { +export class LifecycleRuleForm extends ModelForm { + public static override verboseName = msg("Lifecycle Rule"); + public static override verboseNamePlural = msg("Lifecycle Rules"); + #targetSelectRef = createRef>(); #reviewerGroupsSelectRef = createRef>(); #reviewerUsersSelectRef = createRef>(); @@ -146,8 +149,8 @@ export class LifecycleRuleForm extends ModelForm { }); } - protected override serialize(): LifecycleRule | null { - const result = super.serialize(); + public override toJSON(): LifecycleRule | null { + const result = super.toJSON(); if (!result) { return null; @@ -231,7 +234,7 @@ export class LifecycleRuleForm extends ModelForm { ${this.renderReviewerGroupsSelection()} { each of the selected groups. When disabled, the value is a total diff --git a/web/src/admin/lifecycle/LifecycleRuleListPage.ts b/web/src/admin/lifecycle/LifecycleRuleListPage.ts index fa721ce920..5ea99420f0 100644 --- a/web/src/admin/lifecycle/LifecycleRuleListPage.ts +++ b/web/src/admin/lifecycle/LifecycleRuleListPage.ts @@ -11,30 +11,27 @@ import "@patternfly/elements/pf-tooltip/pf-tooltip.js"; import { DEFAULT_CONFIG } from "#common/api/config"; +import { IconEditButton, ModalInvokerButton } from "#elements/dialogs"; import { PaginatedResponse, TableColumn } from "#elements/table/Table"; import { TablePage } from "#elements/table/TablePage"; import { SlottedTemplateResult } from "#elements/types"; -import { - LifecycleApi, - LifecycleRule, - ModelEnum, - RbacPermissionsAssignedByRolesListModelEnum, -} from "@goauthentik/api"; +import { LifecycleRuleForm } from "#admin/lifecycle/LifecycleRuleForm"; + +import { LifecycleApi, LifecycleRule, ModelEnum } from "@goauthentik/api"; import { msg } from "@lit/localize"; -import { html, TemplateResult } from "lit"; +import { html } from "lit"; import { customElement } from "lit/decorators.js"; @customElement("ak-lifecycle-rule-list") export class LifecycleRuleListPage extends TablePage { - public override expandable = true; public override checkbox = true; public override clearOnRefresh = true; - - public pageTitle = msg("Object Lifecycle Rules"); - public pageDescription = msg("Schedule periodic reviews for objects in authentik."); - public pageIcon = "pf-icon pf-icon-history"; + public override searchPlaceholder = msg("Search for a lifecycle rule by name or target..."); + public override pageTitle = msg("Object Lifecycle Rules"); + public override pageDescription = msg("Schedule periodic reviews for objects in authentik."); + public override pageIcon = "pf-icon pf-icon-history"; public override order = "name"; @@ -46,11 +43,11 @@ export class LifecycleRuleListPage extends TablePage { ); } - protected renderSectionBefore(): TemplateResult { + protected override renderSectionBefore(): SlottedTemplateResult { return html``; } - protected columns: TableColumn[] = [ + protected override columns: TableColumn[] = [ [msg("Name"), "name"], [msg("Target"), "content_type__model"], [msg("Interval"), "interval"], @@ -58,7 +55,7 @@ export class LifecycleRuleListPage extends TablePage { [msg("Actions"), null, msg("Row Actions")], ]; - renderToolbarSelected(): TemplateResult { + protected override renderToolbarSelected(): SlottedTemplateResult { const disabled = this.selectedElements.length < 1; return html` { `; } - row(item: LifecycleRule): SlottedTemplateResult[] { + protected override row(item: LifecycleRule): SlottedTemplateResult[] { return [ - html`${item.name}`, - html`${item.targetVerbose}`, - html`${item.interval}`, - html`${item.gracePeriod}`, - html`
    - - ${msg("Update")} - ${msg("Update Lifecycle Rule")} - - - + item.name, + item.targetVerbose, + item.interval || msg("-"), + item.gracePeriod || msg("-"), + html`
    + ${IconEditButton(LifecycleRuleForm, item.id, item.name)} @@ -109,35 +94,8 @@ export class LifecycleRuleListPage extends TablePage { ]; } - renderExpanded(item: LifecycleRule): TemplateResult { - const [appLabel, modelName] = ModelEnum.AuthentikLifecycleLifecyclerule.split("."); - return html`
    -
    -
    - ${msg("Tasks")} -
    -
    -
    - -
    -
    -
    -
    `; - } - - renderObjectCreate(): TemplateResult { - return html` - - ${msg("Create")} - ${msg("Create Object Lifecycle Rule")} - - - - `; + protected override renderObjectCreate(): SlottedTemplateResult { + return ModalInvokerButton(LifecycleRuleForm); } } diff --git a/web/src/admin/lifecycle/ObjectLifecyclePage.ts b/web/src/admin/lifecycle/ObjectLifecyclePage.ts index fd9ea0427b..0faa010a19 100644 --- a/web/src/admin/lifecycle/ObjectLifecyclePage.ts +++ b/web/src/admin/lifecycle/ObjectLifecyclePage.ts @@ -1,49 +1,39 @@ import "#admin/lifecycle/LifecyclePreviewBanner"; -import "#components/ak-textarea-input"; -import "#elements/forms/ModalForm"; -import "#elements/timestamp/ak-timestamp"; -import "#admin/lifecycle/ObjectReviewForm"; +import "#admin/lifecycle/ObjectReviewIteration"; import { DEFAULT_CONFIG } from "#common/api/config"; -import { createPaginatedResponse } from "#common/api/responses"; +import { EVENT_REFRESH } from "#common/constants"; import { isResponseErrorLike } from "#common/errors/network"; -import { PaginatedResponse, Table, TableColumn, Timestamp } from "#elements/table/Table"; +import { AKElement } from "#elements/Base"; +import { WithLicenseSummary } from "#elements/mixins/license"; +import { WithSession } from "#elements/mixins/session"; +import Styles from "#elements/table/Table.css"; import { SlottedTemplateResult } from "#elements/types"; import { ifPreviousValue } from "#elements/utils/properties"; -import { LifecycleIterationStatus } from "#admin/lifecycle/utils"; +import { ContentTypeEnum, LifecycleApi, LifecycleIteration } from "@goauthentik/api"; -import { - ContentTypeEnum, - LifecycleApi, - LifecycleIteration, - LifecycleIterationStateEnum, - Review, -} from "@goauthentik/api"; - -import { match, P } from "ts-pattern"; - -import { msg, str } from "@lit/localize"; -import { html, nothing, PropertyValues, TemplateResult } from "lit"; +import { msg } from "@lit/localize"; +import { html } from "lit"; import { customElement, property, state } from "lit/decorators.js"; import PFBanner from "@patternfly/patternfly/components/Banner/banner.css"; -import PFCard from "@patternfly/patternfly/components/Card/card.css"; -import PFDescriptionList from "@patternfly/patternfly/components/DescriptionList/description-list.css"; -import PFFlex from "@patternfly/patternfly/layouts/Flex/flex.css"; +import PFPage from "@patternfly/patternfly/components/Page/page.css"; +import PFTitle from "@patternfly/patternfly/components/Title/title.css"; import PFGrid from "@patternfly/patternfly/layouts/Grid/grid.css"; +import PFSpacing from "@patternfly/patternfly/utilities/Spacing/spacing.css"; @customElement("ak-object-lifecycle-page") -export class ObjectLifecyclePage extends Table { +export class ObjectLifecyclePage extends WithLicenseSummary(WithSession(AKElement)) { static styles = [ // --- - ...super.styles, + PFTitle, PFGrid, PFBanner, - PFCard, - PFFlex, - PFDescriptionList, + Styles, + PFSpacing, + PFPage, ]; //#region Public Properties @@ -54,245 +44,67 @@ export class ObjectLifecyclePage extends Table { @property({ attribute: "object-pk", hasChanged: ifPreviousValue, useDefault: true }) public objectPk: string | number | null = null; - public override paginated = false; - //#endregion //#region Protected Properties - protected override emptyStateMessage = msg("No reviews yet."); - - protected columns: TableColumn[] = [ - [msg("Reviewed on"), "timestamp"], - [msg("Reviewer"), "reviewer"], - [msg("Note"), "note"], - ]; - //#region Lifecycle @state() - protected iteration: LifecycleIteration | null = null; + protected iterations: LifecycleIteration[] | null = null; - protected apiEndpoint(): Promise> { + #refreshListener = () => { + return this.fetch(); + }; + + public override connectedCallback(): void { + super.connectedCallback(); + this.addEventListener(EVENT_REFRESH, this.#refreshListener); + } + + public async fetch(): Promise { if (!this.model || !this.objectPk) { - return Promise.resolve(createPaginatedResponse()); + return Promise.resolve(); } - return new LifecycleApi(DEFAULT_CONFIG) - .lifecycleIterationsLatestRetrieve({ + .lifecycleIterationsListLatest({ contentType: this.model, objectId: String(this.objectPk), }) - .then((iteration) => { - this.iteration = iteration; - - return createPaginatedResponse(iteration.reviews); + .then((iterations) => { + this.iterations = iterations; }) .catch(async (error: unknown) => { if (isResponseErrorLike(error) && error.response.status === 404) { - this.iteration = null; - - return createPaginatedResponse(); + this.iterations = null; } - throw error; }); } - protected updated(changedProperties: PropertyValues): void { - super.updated(changedProperties); - - if (changedProperties.has("model") || changedProperties.has("objectPk")) { - this.fetch(); - } - } - //#endregion //#region Rendering - //#region Summary Card - - protected renderReviewers(): SlottedTemplateResult { - if (!this.iteration) { - return html`${msg("No review iteration found for this object.")}`; - } - - const { reviewers, reviewerGroups, minReviewers } = this.iteration; - - const result: TemplateResult[] = []; - - if (reviewers.length) { - result.push(html`
    ${reviewers.map((u) => u.name).join(", ")}
    `); - } - - const groupList = reviewerGroups.map((g) => g.name).join(", "); - - const label = - minReviewers === 1 - ? reviewerGroups.length === 1 - ? msg(str`At least ${minReviewers} user from this group: ${groupList}.`) - : msg(str`At least ${minReviewers} user from these groups: ${groupList}.`) - : reviewerGroups.length === 1 - ? msg(str`At least ${minReviewers} users from this group: ${groupList}.`) - : msg(str`At least ${minReviewers} users from these groups: ${groupList}.`); - - result.push(html`
    ${label}
    `); - - return result; - } - - protected renderOpenedOn(): SlottedTemplateResult { - return html`
    -
    - ${msg("Review opened on")} -
    -
    -
    - -
    -
    -
    `; - } - - protected renderGracePeriodTill(): SlottedTemplateResult { - return html`
    -
    - ${msg("Grace period till")} -
    -
    -
    - -
    -
    -
    `; - } - - protected renderNextReviewDate(): SlottedTemplateResult { - return html`
    -
    - ${msg("Next review date")} -
    -
    -
    - -
    -
    -
    `; - } - - protected renderReviewDates() { - return match(this.iteration?.state) - .with(P.nullish, LifecycleIterationStateEnum.UnknownDefaultOpenApi, () => nothing) - .with( - LifecycleIterationStateEnum.Pending, - () => html`${this.renderOpenedOn()}${this.renderGracePeriodTill()}`, - ) - .with(LifecycleIterationStateEnum.Reviewed, () => this.renderNextReviewDate()) - .with(LifecycleIterationStateEnum.Overdue, () => this.renderOpenedOn()) - .with(LifecycleIterationStateEnum.Canceled, () => this.renderOpenedOn()) - .exhaustive(); - } - - protected renderReviewSummary() { - return html`
    -
    ${msg("Latest review for this object")}
    -
    -
    -
    -
    - ${msg("Review state")} -
    -
    -
    - ${LifecycleIterationStatus({ - status: this.iteration?.state, - })} -
    -
    -
    - -
    -
    - ${msg("Required reviewers")} -
    -
    -
    ${this.renderReviewers()}
    -
    -
    - ${this.renderReviewDates()} -
    -
    -
    `; - } - - //#endregion - - //#region Table - - protected row(item: Review): SlottedTemplateResult[] { - return [ - Timestamp(item.timestamp), - html`${item.reviewer.name}`, - html`${item.note}`, - ]; - } - - protected override renderEmpty(): TemplateResult { - return super.renderEmpty( - html`${this.emptyStateMessage}`, - ); - } - - protected renderObjectCreate(): SlottedTemplateResult { - if (!this.iteration?.userCanReview) { - return nothing; - } - - return html` - ${msg("Confirm Review")} - ${msg("Confirm this object has been reviewed")} - - - - `; - } - protected override render(): SlottedTemplateResult { - return html`
    -
    - -
    - ${this.renderReviewSummary()} -
    -
    ${msg("Reviews")}
    -
    - ${super.render()} -
    -
    -
    -
    `; + return html` + +
    +

    + ${this.iterations?.length + ? msg("The following reviews apply to this object:") + : msg("This object has no reviews yet.")} +

    + ${this.iterations?.map( + (i) => + html`

    ${i.rule.name}

    + `, + )} +
    + `; } //#endregion diff --git a/web/src/admin/lifecycle/ObjectReviewForm.ts b/web/src/admin/lifecycle/ObjectReviewForm.ts index 7f71fee4ad..6f135224f4 100644 --- a/web/src/admin/lifecycle/ObjectReviewForm.ts +++ b/web/src/admin/lifecycle/ObjectReviewForm.ts @@ -12,7 +12,12 @@ import { html, TemplateResult } from "lit"; import { customElement, property } from "lit/decorators.js"; @customElement("ak-object-review-form") -export class ObjectReviewForm extends ModelForm { +export class ObjectReviewForm extends ModelForm { + public static override verboseName = msg("Review"); + public static override verboseNamePlural = msg("Reviews"); + public static override submitVerb = msg("Confirm"); + public static override createLabel = msg("Confirm"); + @property({ attribute: false }) public iteration: LifecycleIteration | null = null; @@ -26,8 +31,8 @@ export class ObjectReviewForm extends ModelForm { }); } - protected override serialize(): Review | null { - const review = super.serialize(); + public override toJSON(): Review | null { + const review = super.toJSON(); if (!review || !this.iteration) return null; diff --git a/web/src/admin/lifecycle/ObjectReviewIteration.ts b/web/src/admin/lifecycle/ObjectReviewIteration.ts new file mode 100644 index 0000000000..e1316c5a00 --- /dev/null +++ b/web/src/admin/lifecycle/ObjectReviewIteration.ts @@ -0,0 +1,281 @@ +import "#admin/lifecycle/LifecyclePreviewBanner"; +import "#components/ak-textarea-input"; +import "#elements/forms/ModalForm"; +import "#elements/timestamp/ak-timestamp"; +import "#admin/lifecycle/ObjectReviewForm"; + +import { createPaginatedResponse } from "#common/api/responses"; +import { EVENT_REFRESH } from "#common/constants"; + +import { ModalInvokerButton } from "#elements/dialogs"; +import { PaginatedResponse, Table, TableColumn, Timestamp } from "#elements/table/Table"; +import { SlottedTemplateResult } from "#elements/types"; + +import { ObjectReviewForm } from "#admin/lifecycle/ObjectReviewForm"; +import { LifecycleIterationStatus } from "#admin/lifecycle/utils"; + +import { LifecycleIteration, LifecycleIterationStateEnum, Review } from "@goauthentik/api"; + +import { match, P } from "ts-pattern"; + +import { msg, str } from "@lit/localize"; +import { html, nothing, PropertyValues, TemplateResult } from "lit"; +import { customElement, property } from "lit/decorators.js"; + +import PFBanner from "@patternfly/patternfly/components/Banner/banner.css"; +import PFCard from "@patternfly/patternfly/components/Card/card.css"; +import PFDescriptionList from "@patternfly/patternfly/components/DescriptionList/description-list.css"; +import PFFlex from "@patternfly/patternfly/layouts/Flex/flex.css"; +import PFGrid from "@patternfly/patternfly/layouts/Grid/grid.css"; + +@customElement("ak-object-review-iteration") +export class ObjectReviewIteration extends Table { + static styles = [ + // --- + ...super.styles, + PFGrid, + PFBanner, + PFCard, + PFFlex, + PFDescriptionList, + ]; + + //#region Public Properties + + @property({ attribute: false }) + public iteration: LifecycleIteration | null = null; + + public override paginated = false; + + //#endregion + + //#region Protected Properties + + protected override emptyStateMessage = msg("No reviews yet."); + + protected columns: TableColumn[] = [ + [msg("Reviewed on"), "timestamp"], + [msg("Reviewer"), "reviewer"], + [msg("Note"), "note"], + ]; + + //#region Lifecycle + + protected updated(changedProperties: PropertyValues): void { + super.updated(changedProperties); + + if (changedProperties.has("iteration")) { + this.fetch(); + } + } + + protected apiEndpoint(): Promise> { + if (!this.iteration) { + return Promise.resolve(createPaginatedResponse()); + } + + return Promise.resolve(createPaginatedResponse(this.iteration.reviews)); + } + + #triggerRefresh = () => { + this.dispatchEvent( + new CustomEvent(EVENT_REFRESH, { + bubbles: true, + composed: true, + }), + ); + }; + + //#endregion + + //#region Rendering + + //#region Summary Card + + protected renderReviewers(): SlottedTemplateResult { + if (!this.iteration) { + return html`${msg("No review iteration found for this object.")}`; + } + + const { reviewers, reviewerGroups, minReviewers } = this.iteration.rule; + + const result: TemplateResult[] = []; + + if (reviewers.length) { + result.push(html`
    ${reviewers.map((u) => u.name).join(", ")}
    `); + } + + const groupList = reviewerGroups.map((g) => g.name).join(", "); + + const label = + minReviewers === 1 + ? reviewerGroups.length === 1 + ? msg(str`At least ${minReviewers} user from this group: ${groupList}.`) + : msg(str`At least ${minReviewers} user from these groups: ${groupList}.`) + : reviewerGroups.length === 1 + ? msg(str`At least ${minReviewers} users from this group: ${groupList}.`) + : msg(str`At least ${minReviewers} users from these groups: ${groupList}.`); + + result.push(html`
    ${label}
    `); + + return result; + } + + protected renderOpenedOn(): SlottedTemplateResult { + return html`
    +
    + ${msg("Review opened on")} +
    +
    +
    + +
    +
    +
    `; + } + + protected renderGracePeriodTill(): SlottedTemplateResult { + return html`
    +
    + ${msg("Grace period till")} +
    +
    +
    + +
    +
    +
    `; + } + + protected renderNextReviewDate(): SlottedTemplateResult { + return html`
    +
    + ${msg("Next review date")} +
    +
    +
    + +
    +
    +
    `; + } + + protected renderReviewDates() { + return match(this.iteration?.state) + .with(P.nullish, LifecycleIterationStateEnum.UnknownDefaultOpenApi, () => nothing) + .with( + LifecycleIterationStateEnum.Pending, + () => html`${this.renderOpenedOn()}${this.renderGracePeriodTill()}`, + ) + .with(LifecycleIterationStateEnum.Reviewed, () => this.renderNextReviewDate()) + .with(LifecycleIterationStateEnum.Overdue, () => this.renderOpenedOn()) + .with(LifecycleIterationStateEnum.Canceled, () => this.renderOpenedOn()) + .exhaustive(); + } + + protected renderReviewSummary() { + return html`
    +
    ${msg("Latest review for this object")}
    +
    +
    +
    +
    + ${msg("Review state")} +
    +
    +
    + ${LifecycleIterationStatus({ + status: this.iteration?.state, + })} +
    +
    +
    + +
    +
    + ${msg("Required reviewers")} +
    +
    +
    ${this.renderReviewers()}
    +
    +
    + ${this.renderReviewDates()} +
    +
    +
    `; + } + + //#endregion + + //#region Table + + protected renderToolbar(): SlottedTemplateResult { + return html`${this.renderObjectCreate()} + + ${msg("Refresh")} + `; + } + + protected row(item: Review): SlottedTemplateResult[] { + return [ + Timestamp(item.timestamp), + html`${item.reviewer.name}`, + html`${item.note}`, + ]; + } + + protected override renderEmpty(): SlottedTemplateResult { + return super.renderEmpty( + html` ${this.emptyStateMessage}`, + ); + } + + protected renderObjectCreate(): SlottedTemplateResult { + if (!this.iteration?.userCanReview) { + return null; + } + + return ModalInvokerButton(ObjectReviewForm, { + iteration: this.iteration, + }); + } + + protected override render(): SlottedTemplateResult { + return html`
    + ${this.renderReviewSummary()} +
    +
    ${msg("Reviews")}
    +
    ${super.render()}
    +
    +
    `; + } + + //#endregion + + //#endregion +} + +declare global { + interface HTMLElementTagNameMap { + "ak-object-review-iteration": ObjectReviewIteration; + } +} diff --git a/web/src/admin/lifecycle/ReviewListPage.ts b/web/src/admin/lifecycle/ReviewListPage.ts index 6c1cc2e715..2666dcb577 100644 --- a/web/src/admin/lifecycle/ReviewListPage.ts +++ b/web/src/admin/lifecycle/ReviewListPage.ts @@ -70,6 +70,7 @@ export class ReviewListPage extends TablePage { protected columns: TableColumn[] = [ [msg("State"), "state"], [msg("Object"), "content_type__model"], + [msg("Rule"), "rule__name"], [msg("Opened"), "opened_on"], [msg("Grace period ends")], ]; @@ -78,6 +79,7 @@ export class ReviewListPage extends TablePage { return [ LifecycleIterationStatus({ status: item.state }), html`${item.objectVerbose}`, + html`${item.rule.name}`, html``, html``, ]; diff --git a/web/src/admin/AdminInterface/AdminSidebar.ts b/web/src/admin/navigation/sidebar.ts similarity index 97% rename from web/src/admin/AdminInterface/AdminSidebar.ts rename to web/src/admin/navigation/sidebar.ts index 15f5d73138..715a937df3 100644 --- a/web/src/admin/AdminInterface/AdminSidebar.ts +++ b/web/src/admin/navigation/sidebar.ts @@ -62,7 +62,7 @@ export const createAdminSidebarEntries = (): readonly SidebarEntry[] => [ [null, msg("Applications"), null, [ ["/core/applications", msg("Applications"), [`^/core/applications/(?${SLUG_REGEX})$`]], ["/core/providers", msg("Providers"), [`^/core/providers/(?${ID_REGEX})$`]], - ["/outpost/outposts", msg("Outposts")]] + ["/outpost/outposts", msg("Outposts"), [`^/outpost/outposts/(?${UUID_REGEX})$`]],] ], [null, msg("Endpoint Devices"), null, [ ["/endpoints/devices", msg("Devices"), [`^/endpoints/devices/(?${UUID_REGEX})$`]], diff --git a/web/src/admin/outposts/OutpostDeploymentModal.ts b/web/src/admin/outposts/OutpostDeploymentModal.ts deleted file mode 100644 index f091e7577a..0000000000 --- a/web/src/admin/outposts/OutpostDeploymentModal.ts +++ /dev/null @@ -1,109 +0,0 @@ -import "#elements/buttons/TokenCopyButton/index"; - -import { docLink } from "#common/global"; - -import { ModalButton } from "#elements/buttons/ModalButton"; - -import { Outpost, OutpostTypeEnum } from "@goauthentik/api"; - -import { msg } from "@lit/localize"; -import { html, nothing, TemplateResult } from "lit"; -import { customElement, property } from "lit/decorators.js"; -import { ifDefined } from "lit/directives/if-defined.js"; - -@customElement("ak-outpost-deployment-modal") -export class OutpostDeploymentModal extends ModalButton { - @property({ attribute: false }) - outpost?: Outpost; - - renderModalInner(): TemplateResult { - return html`
    -

    ${msg("Outpost Deployment Info")}

    -
    -
    -

    - ${msg("View deployment documentation")} -

    -
    -
    - - -
    -
    - -
    - - ${msg("Click to copy token")} - -
    -
    -

    - ${msg( - "If your authentik Instance is using a self-signed certificate, set this value.", - )} -

    -
    - - -
    - ${this.outpost?.type === OutpostTypeEnum.Proxy - ? html` -

    - ${msg( - "If your authentik_host setting does not match the URL you want to login with, add this setting.", - )} -

    -
    - - -
    - ` - : nothing} -
    -
    -
    - -
    `; - } -} - -declare global { - interface HTMLElementTagNameMap { - "ak-outpost-deployment-modal": OutpostDeploymentModal; - } -} diff --git a/web/src/admin/outposts/OutpostForm.ts b/web/src/admin/outposts/OutpostForm.ts index 93eeb670e9..1b29ed9376 100644 --- a/web/src/admin/outposts/OutpostForm.ts +++ b/web/src/admin/outposts/OutpostForm.ts @@ -95,16 +95,19 @@ function providerProvider(type: OutpostTypeEnum): DataProvider { @customElement("ak-outpost-form") export class OutpostForm extends ModelForm { - @property() - type: OutpostTypeEnum = OutpostTypeEnum.Proxy; + public static verboseName = msg("Outpost"); + public static verboseNamePlural = msg("Outposts"); + + @property({ type: String }) + public type: OutpostTypeEnum = OutpostTypeEnum.Proxy; @property({ type: Boolean }) - embedded = false; + public embedded = false; @state() - providers: DataProvider = providerProvider(this.type); + protected providers: DataProvider = providerProvider(this.type); - defaultConfig?: OutpostDefaultConfig; + protected defaultConfig?: OutpostDefaultConfig; public override reset(): void { super.reset(); diff --git a/web/src/admin/outposts/OutpostHealth.ts b/web/src/admin/outposts/OutpostHealth.ts deleted file mode 100644 index 5bbc64dcab..0000000000 --- a/web/src/admin/outposts/OutpostHealth.ts +++ /dev/null @@ -1,92 +0,0 @@ -import "#elements/Spinner"; - -import { formatElapsedTime } from "#common/temporal"; - -import { AKElement } from "#elements/Base"; -import { PFColor } from "#elements/Label"; - -import { OutpostHealth } from "@goauthentik/api"; - -import { msg, str } from "@lit/localize"; -import { css, CSSResult, html, TemplateResult } from "lit"; -import { customElement, property } from "lit/decorators.js"; - -import PFDescriptionList from "@patternfly/patternfly/components/DescriptionList/description-list.css"; - -@customElement("ak-outpost-health") -export class OutpostHealthElement extends AKElement { - @property({ attribute: false }) - outpostHealth?: OutpostHealth; - - static styles: CSSResult[] = [ - PFDescriptionList, - css` - li { - margin: 5px 0; - } - `, - ]; - - render(): TemplateResult { - if (!this.outpostHealth) { - return html``; - } - let versionString = this.outpostHealth.version; - if (this.outpostHealth.buildHash) { - versionString = msg( - str`${versionString} (build ${this.outpostHealth.buildHash.substring(0, 8)})`, - ); - } - if (this.outpostHealth.fipsEnabled) { - versionString = msg(str`${versionString} (FIPS)`); - } - return html`
    -
    -
    - ${msg("Last seen")} -
    -
    -
    - - ${msg( - str`${formatElapsedTime(this.outpostHealth.lastSeen)} (${this.outpostHealth.lastSeen?.toLocaleTimeString()})`, - )} - -
    -
    -
    -
    -
    - ${msg("Version")} -
    -
    -
    - ${this.outpostHealth.versionOutdated - ? html`${msg( - str`${this.outpostHealth.version}, should be ${this.outpostHealth.versionShould}`, - )} - ` - : html`${versionString} - `} -
    -
    -
    -
    -
    - ${msg("Hostname")} -
    -
    -
    ${this.outpostHealth.hostname}
    -
    -
    -
    `; - } -} - -declare global { - interface HTMLElementTagNameMap { - "ak-outpost-health": OutpostHealthElement; - } -} diff --git a/web/src/admin/outposts/OutpostHealthList.ts b/web/src/admin/outposts/OutpostHealthList.ts new file mode 100644 index 0000000000..cc5e6abbd7 --- /dev/null +++ b/web/src/admin/outposts/OutpostHealthList.ts @@ -0,0 +1,47 @@ +import { formatElapsedTime } from "#common/temporal"; + +import { PFColor } from "#elements/Label"; +import { StaticTable } from "#elements/table/StaticTable"; +import { TableColumn } from "#elements/table/Table"; +import { SlottedTemplateResult } from "#elements/types"; + +import { OutpostHealth } from "@goauthentik/api"; + +import { msg, str } from "@lit/localize"; +import { html } from "lit"; +import { customElement } from "lit/decorators.js"; + +@customElement("ak-outpost-health-list") +export class OutpostHealthList extends StaticTable { + protected emptyStateMessage: string = msg("No instances running."); + protected columns: TableColumn[] = [[msg("Hostname")], [msg("Version")], [msg("Last seen")]]; + + protected row(item: OutpostHealth): SlottedTemplateResult[] { + let versionString = item.version; + if (item.buildHash) { + versionString = msg(str`${versionString} (build ${item.buildHash.substring(0, 8)})`); + } + if (item.fipsEnabled) { + versionString = msg(str`${versionString} (FIPS)`); + } + return [ + html`${item.hostname}`, + html`${item.versionOutdated + ? html`${msg(str`${item.version}, should be ${item.versionShould}`)} + ` + : html`${versionString} `}`, + html` + ${msg( + str`${formatElapsedTime(item.lastSeen)} (${item.lastSeen?.toLocaleTimeString()})`, + )} + `, + ]; + } +} + +declare global { + interface HTMLElementTagNameMap { + "ak-outpost-health-list": OutpostHealthList; + } +} diff --git a/web/src/admin/outposts/OutpostListPage.ts b/web/src/admin/outposts/OutpostListPage.ts index 7dbc938af9..39d4961949 100644 --- a/web/src/admin/outposts/OutpostListPage.ts +++ b/web/src/admin/outposts/OutpostListPage.ts @@ -1,68 +1,43 @@ -import "#admin/outposts/OutpostDeploymentModal"; import "#admin/outposts/OutpostForm"; -import "#admin/outposts/OutpostHealth"; import "#admin/outposts/OutpostHealthSimple"; -import "#admin/rbac/ObjectPermissionModal"; import "#elements/buttons/SpinnerButton/index"; import "#elements/forms/DeleteBulkForm"; import "#elements/forms/ModalForm"; -import "#elements/tasks/ScheduleList"; -import "#elements/tasks/TaskList"; import "@patternfly/elements/pf-tooltip/pf-tooltip.js"; import { DEFAULT_CONFIG } from "#common/api/config"; -import { PFSize } from "#common/enums"; +import { IconEditButton } from "#elements/dialogs"; import { PFColor } from "#elements/Label"; import { PaginatedResponse, TableColumn } from "#elements/table/Table"; import { TablePage } from "#elements/table/TablePage"; import { SlottedTemplateResult } from "#elements/types"; -import { - ModelEnum, - Outpost, - OutpostHealth, - OutpostsApi, - OutpostTypeEnum, - RbacPermissionsAssignedByRolesListModelEnum, -} from "@goauthentik/api"; +import { OutpostForm } from "#admin/outposts/OutpostForm"; +import { embeddedOutpostManaged, outpostTypeToLabel } from "#admin/outposts/utils"; + +import { Outpost, OutpostHealth, OutpostsApi } from "@goauthentik/api"; import { msg, str } from "@lit/localize"; -import { CSSResult, html, nothing, TemplateResult } from "lit"; +import { html, TemplateResult } from "lit"; import { customElement, property, state } from "lit/decorators.js"; import { ifDefined } from "lit/directives/if-defined.js"; -import PFDescriptionList from "@patternfly/patternfly/components/DescriptionList/description-list.css"; - -export function TypeToLabel(type?: OutpostTypeEnum): string { - if (!type) return ""; - switch (type) { - case OutpostTypeEnum.Proxy: - return msg("Proxy"); - case OutpostTypeEnum.Ldap: - return msg("LDAP"); - case OutpostTypeEnum.Radius: - return msg("Radius"); - case OutpostTypeEnum.Rac: - return msg("RAC"); - case OutpostTypeEnum.UnknownDefaultOpenApi: - return msg("Unknown type"); - } -} - @customElement("ak-outpost-list") export class OutpostListPage extends TablePage { - expandable = true; + protected override searchEnabled = true; - public pageTitle = msg("Outposts"); - public pageDescription = msg( + public override searchPlaceholder = msg( + "Search outposts by name, type or assigned integration...", + ); + public override pageTitle = msg("Outposts"); + public override pageDescription = msg( "Outposts are deployments of authentik components to support different environments and protocols, like reverse proxies.", ); - public pageIcon = "pf-icon pf-icon-zone"; - protected override searchEnabled = true; + public override pageIcon = "pf-icon pf-icon-zone"; - async apiEndpoint(): Promise> { + protected async apiEndpoint(): Promise> { const outposts = await new OutpostsApi(DEFAULT_CONFIG).outpostsInstancesList( await this.defaultEndpointConfig(), ); @@ -81,7 +56,7 @@ export class OutpostListPage extends TablePage { } @state() - health: { [key: string]: OutpostHealth[] } = {}; + protected health: Record = {}; protected columns: TableColumn[] = [ [msg("Name"), "name"], @@ -92,18 +67,30 @@ export class OutpostListPage extends TablePage { [msg("Actions"), null, msg("Row Actions")], ]; - static styles: CSSResult[] = [...super.styles, PFDescriptionList]; + public override checkbox = true; + public override clearOnRefresh = true; - checkbox = true; - clearOnRefresh = true; + @property({ type: String }) + public order = "name"; - @property() - order = "name"; + protected renderItemProviders(item: Outpost) { + if (item.providers.length < 1) { + return html`-`; + } + return html`
      + ${item.providersObj?.map((p) => { + return html`
    • + ${p.name} +
    • `; + })} +
    `; + } - row(item: Outpost): SlottedTemplateResult[] { + protected row(item: Outpost): SlottedTemplateResult[] { return [ - html`
    ${item.name}
    - ${item.config.authentik_host === "" + html`
    ${item.name}
    + ${(item.config.authentik_host ?? "") === "" ? html` ${msg( "Warning: authentik Domain is not configured, authentication will not work.", @@ -111,105 +98,25 @@ export class OutpostListPage extends TablePage { ` : html` ${msg(str`Logging in via ${item.config.authentik_host}.`)} - `}`, - html`${TypeToLabel(item.type)}`, - html`
    `, + `}`, + html`${outpostTypeToLabel(item.type)}`, + this.renderItemProviders(item), html`${item.serviceConnectionObj?.name || msg("No integration active")}`, html``, - html`
    - - ${msg("Update")} - ${msg("Update Outpost")} - - - - - - - ${item.managed !== "goauthentik.io/outposts/embedded" - ? html` - - ` - : nothing} + html`
    + ${IconEditButton(OutpostForm, item.pk, item.name, { + embedded: item.managed === embeddedOutpostManaged, + })}
    `, ]; } - renderExpanded(item: Outpost): TemplateResult { - const [appLabel, modelName] = ModelEnum.AuthentikOutpostsOutpost.split("."); - return html`

    - ${msg( - "Detailed health (one instance per column, data is cached so may be out of date)", - )} -

    -
    - ${this.health[item.pk].map((h) => { - return html`
    -
    -
    - -
    -
    -
    `; - })} -
    -
    -
    -
    - ${msg("Schedules")} -
    -
    -
    - -
    -
    -
    -
    -
    -
    -
    - ${msg("Tasks")} -
    -
    -
    - -
    -
    -
    -
    `; - } - - renderToolbarSelected(): TemplateResult { + protected override renderToolbarSelected(): TemplateResult { const disabled = this.selectedElements.length < 1; + return html` { `; } - renderObjectCreate(): TemplateResult { - return html` - - ${msg("Create")} - ${msg("Create Outpost")} - - - - `; + protected override renderObjectCreate(): TemplateResult { + return html``; } } diff --git a/web/src/admin/outposts/OutpostProviderList.ts b/web/src/admin/outposts/OutpostProviderList.ts new file mode 100644 index 0000000000..583be38b43 --- /dev/null +++ b/web/src/admin/outposts/OutpostProviderList.ts @@ -0,0 +1,43 @@ +import "#elements/forms/DeleteBulkForm"; +import "#elements/forms/ModalForm"; +import "#elements/sync/SyncObjectForm"; +import "#admin/common/ak-flow-search/ak-flow-search-no-default"; + +import { StaticTable } from "#elements/table/StaticTable"; +import { TableColumn } from "#elements/table/Table"; +import { SlottedTemplateResult } from "#elements/types"; + +import { Provider } from "@goauthentik/api"; + +import { msg } from "@lit/localize"; +import { html, nothing } from "lit"; +import { customElement } from "lit/decorators.js"; + +@customElement("ak-outposts-provider-list") +export class OutpostsProviderList extends StaticTable { + protected emptyStateMessage: string = msg("No providers configured."); + protected columns: TableColumn[] = [ + // --- + [msg("Name")], + [msg("Application")], + ]; + + row(item: Provider): SlottedTemplateResult[] { + return [ + html` +
    ${item.name}
    +
    `, + item.assignedApplicationName + ? html` +
    ${item.assignedApplicationName}
    +
    ` + : nothing, + ]; + } +} + +declare global { + interface HTMLElementTagNameMap { + "ak-outposts-provider-list": OutpostsProviderList; + } +} diff --git a/web/src/admin/outposts/OutpostViewPage.ts b/web/src/admin/outposts/OutpostViewPage.ts new file mode 100644 index 0000000000..5007b369af --- /dev/null +++ b/web/src/admin/outposts/OutpostViewPage.ts @@ -0,0 +1,376 @@ +import "#elements/Tabs"; +import "#admin/events/ObjectChangelog"; +import "#admin/rbac/ak-rbac-object-permission-page"; +import "#elements/tasks/ScheduleList"; +import "#elements/tasks/TaskList"; +import "#admin/outposts/OutpostForm"; +import "#admin/outposts/OutpostHealthList"; +import "#admin/outposts/OutpostProviderList"; +import "#elements/buttons/TokenCopyButton/ak-token-copy-button"; + +import { DEFAULT_CONFIG } from "#common/api/config"; +import { docLink } from "#common/global"; + +import { AKElement } from "#elements/Base"; +import { IconTokenCopyButton } from "#elements/buttons/IconTokenCopyButton"; +import { SlottedTemplateResult } from "#elements/types"; + +import { setPageDetails } from "#components/ak-page-navbar"; +import renderDescriptionList from "#components/DescriptionList"; + +import { OutpostForm } from "#admin/outposts/OutpostForm"; +import { embeddedOutpostManaged, outpostTypeToLabel } from "#admin/outposts/utils"; + +import { ModelEnum, Outpost, OutpostHealth, OutpostsApi, OutpostTypeEnum } from "@goauthentik/api"; + +import { msg, str } from "@lit/localize"; +import { CSSResult, PropertyValues } from "lit"; +import { html } from "lit-html"; +import { guard } from "lit-html/directives/guard.js"; +import { customElement, property } from "lit/decorators.js"; + +import PFBanner from "@patternfly/patternfly/components/Banner/banner.css"; +import PFButton from "@patternfly/patternfly/components/Button/button.css"; +import PFCard from "@patternfly/patternfly/components/Card/card.css"; +import PFDescriptionList from "@patternfly/patternfly/components/DescriptionList/description-list.css"; +import PFForm from "@patternfly/patternfly/components/Form/form.css"; +import PFFormControl from "@patternfly/patternfly/components/FormControl/form-control.css"; +import PFPage from "@patternfly/patternfly/components/Page/page.css"; +import PFProgress from "@patternfly/patternfly/components/Progress/progress.css"; +import PFGrid from "@patternfly/patternfly/layouts/Grid/grid.css"; + +@customElement("ak-outpost-view") +export class OutpostViewPage extends AKElement { + public static styles: CSSResult[] = [ + PFGrid, + PFForm, + PFFormControl, + PFPage, + PFBanner, + PFCard, + PFDescriptionList, + PFButton, + PFProgress, + ]; + + #api = new OutpostsApi(DEFAULT_CONFIG); + + @property({ type: String, attribute: "outpost-id" }) + set outpostID(id: string) { + this.#api.outpostsInstancesRetrieve({ uuid: id }).then((outpost) => { + this.outpost = outpost; + + return this.#api + .outpostsInstancesHealthList({ + uuid: outpost.pk, + }) + .then((health) => { + this.health = health; + }); + }); + } + + @property({ attribute: false }) + public outpost: Outpost | null = null; + + @property({ attribute: false }) + public health: OutpostHealth[] = []; + + protected openEditModal() { + if (!this.outpost) return; + + const form = new OutpostForm(); + + form.instancePk = this.outpost.pk; + form.embedded = this.outpost.managed === embeddedOutpostManaged; + + return form.showModal(); + } + + protected override updated(changed: PropertyValues) { + super.updated(changed); + + if (changed.has("outpost") && this.outpost) { + setPageDetails({ + icon: "pf-icon pf-icon-zone", + header: this.outpost?.name, + description: outpostTypeToLabel(this.outpost?.type), + }); + } + } + + protected renderHealthSummary(): SlottedTemplateResult { + return guard([this.health], () => { + const totalCount = this.health.length; + + if (!totalCount) { + return msg("-"); + } + + let healthyCount = 0; + let unhealthyCount = 0; + + for (const h of this.health) { + if (h.versionOutdated) { + unhealthyCount++; + } else { + healthyCount++; + } + } + + const healthyPct = (100 / totalCount) * healthyCount; + const unhealthyPct = (100 / totalCount) * unhealthyCount; + + return html`
    +
    + ${msg(str`${healthyCount}/${totalCount} instances are healthy.`)} +
    +
    + ${healthyPct + ? html` +
    + ${healthyPct}% +
    + ` + : null} + ${unhealthyPct + ? html`
    + ${unhealthyPct}% +
    ` + : null} +
    +
    `; + }); + } + + protected renderTabOverview(): SlottedTemplateResult { + return html` + ${(this.outpost?.config.authentik_host ?? "") === "" + ? html`
    + ${msg( + "Warning: authentik Domain is not configured, authentication will not work.", + )} +
    ` + : null} +
    +
    +
    ${msg("Outpost Info")}
    +
    + ${renderDescriptionList([ + [msg("Name"), this.outpost?.name], + [msg("Type"), outpostTypeToLabel(this.outpost?.type)], + [ + msg("Integration"), + this.outpost?.serviceConnectionObj?.name || + msg("No integration active"), + ], + [msg("Health"), this.renderHealthSummary()], + [ + msg("Related actions"), + html``, + ], + ])} +
    +
    +
    +
    ${msg("Configured providers")}
    + +
    +
    +
    + ${msg("Detailed health (data is cached so may be out of date)")} +
    + +
    + ${this.renderOutpostDeploymentInfo()} +
    + `; + } + + protected renderOutpostDeploymentInfo(): SlottedTemplateResult { + if (this.outpost?.managed === embeddedOutpostManaged) { + return null; + } + + return html`
    +
    ${msg("Outpost Deployment Info")}
    +
    +

    + ${msg("View deployment documentation")} +

    +
    +
    + + +
    +
    + +
    ${IconTokenCopyButton(this.outpost?.tokenIdentifier)}
    +
    +

    + ${msg( + "If your authentik Instance is using a self-signed certificate, set this value.", + )} +

    +
    + + +
    + ${this.outpost?.type === OutpostTypeEnum.Proxy + ? html` +

    + ${msg( + "If your authentik_host setting does not match the URL you want to login with, add this setting.", + )} +

    +
    + + +
    + ` + : null} +
    +
    +
    `; + } + + protected renderTabTasks(): SlottedTemplateResult { + const [appLabel, modelName] = ModelEnum.AuthentikOutpostsOutpost.split("."); + + return html`
    +
    +
    +
    +
    ${msg("Schedules")}
    +
    + +
    +
    +
    +
    +
    +
    ${msg("Tasks")}
    +
    + +
    +
    +
    `; + } + + render() { + if (!this.outpost) { + return null; + } + + return html`
    + +
    + ${this.renderTabOverview()} +
    +
    + ${this.renderTabTasks()} +
    +
    +
    + + +
    +
    + +
    +
    `; + } +} +declare global { + interface HTMLElementTagNameMap { + "ak-outpost-view": OutpostViewPage; + } +} diff --git a/web/src/admin/outposts/ServiceConnectionListPage.ts b/web/src/admin/outposts/ServiceConnectionListPage.ts index b8bd987315..aab3647c32 100644 --- a/web/src/admin/outposts/ServiceConnectionListPage.ts +++ b/web/src/admin/outposts/ServiceConnectionListPage.ts @@ -1,7 +1,6 @@ -import "#admin/outposts/OutpostHealth"; import "#admin/outposts/ServiceConnectionDockerForm"; import "#admin/outposts/ServiceConnectionKubernetesForm"; -import "#admin/outposts/ServiceConnectionWizard"; +import "#admin/outposts/ak-service-connection-wizard"; import "#admin/rbac/ObjectPermissionModal"; import "#components/ak-status-label"; import "#elements/buttons/SpinnerButton/index"; @@ -13,16 +12,23 @@ import "@patternfly/elements/pf-tooltip/pf-tooltip.js"; import { DEFAULT_CONFIG } from "#common/api/config"; -import { CustomFormElementTagName } from "#elements/forms/unsafe"; +import { IconEditButtonByTagName } from "#elements/dialogs"; +import { IconPermissionButton } from "#elements/dialogs/components/IconPermissionButton"; import { PFColor } from "#elements/Label"; import { PaginatedResponse, TableColumn } from "#elements/table/Table"; import { TablePage } from "#elements/table/TablePage"; import { SlottedTemplateResult } from "#elements/types"; -import { StrictUnsafe } from "#elements/utils/unsafe"; -import { OutpostsApi, ServiceConnection, ServiceConnectionState } from "@goauthentik/api"; +import { AKServiceConnectionWizard } from "#admin/outposts/ak-service-connection-wizard"; -import { msg, str } from "@lit/localize"; +import { + ModelEnum, + OutpostsApi, + ServiceConnection, + ServiceConnectionState, +} from "@goauthentik/api"; + +import { msg } from "@lit/localize"; import { html, TemplateResult } from "lit"; import { customElement, property, state } from "lit/decorators.js"; import { ifDefined } from "lit/directives/if-defined.js"; @@ -37,9 +43,12 @@ export class OutpostServiceConnectionListPage extends TablePage> { const connections = await new OutpostsApi(DEFAULT_CONFIG).outpostsServiceConnectionsAllList( @@ -76,31 +85,19 @@ export class OutpostServiceConnectionListPage extends TablePage`, html`${itemState?.healthy ? html`${ifDefined(itemState.version)}` : html`${msg("Unhealthy")}`}`, - html` - - ${StrictUnsafe(item.component, { - slot: "form", - instancePk: item.pk, - actionLabel: msg("Update"), - headline: msg(str`Update ${item.verboseName}`, { - id: "form.headline.update", - }), - })} - - - - - `, + html`
    + ${IconEditButtonByTagName(item.component, item.pk, item.verboseName)} + ${IconPermissionButton(item.name, { + model: item.metaModelName as ModelEnum, + objectPk: item.pk, + })} +
    `, ]; } @@ -162,8 +159,15 @@ export class OutpostServiceConnectionListPage extends TablePage`; } - renderObjectCreate(): TemplateResult { - return html` `; + protected override renderObjectCreate(): SlottedTemplateResult { + return html``; } } diff --git a/web/src/admin/outposts/ServiceConnectionWizard.ts b/web/src/admin/outposts/ServiceConnectionWizard.ts deleted file mode 100644 index aaa643b886..0000000000 --- a/web/src/admin/outposts/ServiceConnectionWizard.ts +++ /dev/null @@ -1,81 +0,0 @@ -import "#admin/outposts/ServiceConnectionDockerForm"; -import "#admin/outposts/ServiceConnectionKubernetesForm"; -import "#elements/wizard/FormWizardPage"; -import "#elements/wizard/TypeCreateWizardPage"; -import "#elements/wizard/Wizard"; - -import { DEFAULT_CONFIG } from "#common/api/config"; - -import { AKElement } from "#elements/Base"; -import { StrictUnsafe } from "#elements/utils/unsafe"; -import type { Wizard } from "#elements/wizard/Wizard"; - -import { OutpostsApi, TypeCreate } from "@goauthentik/api"; - -import { msg, str } from "@lit/localize"; -import { customElement } from "@lit/reactive-element/decorators/custom-element.js"; -import { CSSResult, html, TemplateResult } from "lit"; -import { property, query } from "lit/decorators.js"; - -import PFButton from "@patternfly/patternfly/components/Button/button.css"; - -@customElement("ak-service-connection-wizard") -export class ServiceConnectionWizard extends AKElement { - static styles: CSSResult[] = [PFButton]; - - @property() - createText = msg("Create"); - - @property({ attribute: false }) - connectionTypes: TypeCreate[] = []; - - @query("ak-wizard") - wizard?: Wizard; - - firstUpdated(): void { - new OutpostsApi(DEFAULT_CONFIG).outpostsServiceConnectionsAllTypesList().then((types) => { - this.connectionTypes = types; - }); - } - - render(): TemplateResult { - return html` - - ) => { - if (!this.wizard) return; - this.wizard.steps = [ - "initial", - `type-${ev.detail.component}-${ev.detail.modelName}`, - ]; - this.wizard.isValid = true; - }} - > - - ${this.connectionTypes.map((type) => { - return html` - - ${StrictUnsafe(type.component)} - - `; - })} - - - `; - } -} - -declare global { - interface HTMLElementTagNameMap { - "ak-service-connection-wizard": ServiceConnectionWizard; - } -} diff --git a/web/src/admin/outposts/ak-service-connection-wizard.ts b/web/src/admin/outposts/ak-service-connection-wizard.ts new file mode 100644 index 0000000000..c955f33a06 --- /dev/null +++ b/web/src/admin/outposts/ak-service-connection-wizard.ts @@ -0,0 +1,32 @@ +import "#admin/outposts/ServiceConnectionDockerForm"; +import "#admin/outposts/ServiceConnectionKubernetesForm"; +import "#elements/wizard/FormWizardPage"; +import "#elements/wizard/TypeCreateWizardPage"; +import "#elements/wizard/Wizard"; + +import { DEFAULT_CONFIG } from "#common/api/config"; + +import { CreateWizard } from "#elements/wizard/CreateWizard"; + +import { OutpostsApi, TypeCreate } from "@goauthentik/api"; + +import { msg } from "@lit/localize/init/install"; +import { customElement } from "@lit/reactive-element/decorators/custom-element.js"; + +@customElement("ak-service-connection-wizard") +export class AKServiceConnectionWizard extends CreateWizard { + public static override verboseName = msg("Outpost Integration"); + public static override verboseNamePlural = msg("Outpost Integrations"); + + #api = new OutpostsApi(DEFAULT_CONFIG); + + protected apiEndpoint = (): Promise => { + return this.#api.outpostsServiceConnectionsAllTypesList(); + }; +} + +declare global { + interface HTMLElementTagNameMap { + "ak-service-connection-wizard": AKServiceConnectionWizard; + } +} diff --git a/web/src/admin/outposts/utils.ts b/web/src/admin/outposts/utils.ts new file mode 100644 index 0000000000..3bc746538a --- /dev/null +++ b/web/src/admin/outposts/utils.ts @@ -0,0 +1,21 @@ +import { OutpostTypeEnum } from "@goauthentik/api"; + +import { msg } from "@lit/localize"; + +export const embeddedOutpostManaged = "goauthentik.io/outposts/embedded"; + +export function outpostTypeToLabel(type?: OutpostTypeEnum): string { + if (!type) return ""; + switch (type) { + case OutpostTypeEnum.Proxy: + return msg("Proxy"); + case OutpostTypeEnum.Ldap: + return msg("LDAP"); + case OutpostTypeEnum.Radius: + return msg("Radius"); + case OutpostTypeEnum.Rac: + return msg("RAC"); + case OutpostTypeEnum.UnknownDefaultOpenApi: + return msg("Unknown type"); + } +} diff --git a/web/src/admin/policies/BasePolicyForm.ts b/web/src/admin/policies/BasePolicyForm.ts index bd7a2a0948..42ee0aea0a 100644 --- a/web/src/admin/policies/BasePolicyForm.ts +++ b/web/src/admin/policies/BasePolicyForm.ts @@ -3,6 +3,9 @@ import { ModelForm } from "#elements/forms/ModelForm"; import { msg } from "@lit/localize"; export abstract class BasePolicyForm extends ModelForm { + public static override verboseName = msg("Policy"); + public static override verboseNamePlural = msg("Policies"); + getSuccessMessage(): string { return this.instance ? msg("Successfully updated policy.") diff --git a/web/src/admin/policies/BoundPoliciesList.ts b/web/src/admin/policies/BoundPoliciesList.ts index 6dbd800fd4..9c3f1d7a26 100644 --- a/web/src/admin/policies/BoundPoliciesList.ts +++ b/web/src/admin/policies/BoundPoliciesList.ts @@ -1,6 +1,6 @@ -import "#admin/groups/GroupForm"; +import "#admin/groups/ak-group-form"; import "#admin/policies/PolicyBindingForm"; -import "#admin/policies/PolicyWizard"; +import "#admin/policies/ak-policy-wizard"; import "#admin/rbac/ObjectPermissionModal"; import "#admin/users/UserForm"; import "#components/ak-status-label"; @@ -9,64 +9,66 @@ import "#elements/forms/DeleteBulkForm"; import "#elements/forms/ModalForm"; import { DEFAULT_CONFIG } from "#common/api/config"; -import { PFSize } from "#common/enums"; +import { PolicyBindingCheckTarget, PolicyBindingCheckTargetToLabel } from "#common/policies/utils"; -import { CustomFormElementTagName } from "#elements/forms/unsafe"; +import { asInstanceInvokerByTagName, modalInvoker } from "#elements/dialogs"; +import { IconPermissionButton } from "#elements/dialogs/components/IconPermissionButton"; import { PaginatedResponse, Table, TableColumn } from "#elements/table/Table"; import { SlottedTemplateResult } from "#elements/types"; import { StrictUnsafe } from "#elements/utils/unsafe"; +import { GroupForm } from "#admin/groups/ak-group-form"; +import { PolicyWizard } from "#admin/policies/ak-policy-wizard"; import { PolicyBindingForm, PolicyBindingNotice } from "#admin/policies/PolicyBindingForm"; import { policyEngineModes } from "#admin/policies/PolicyEngineModes"; -import { PolicyBindingCheckTarget, PolicyBindingCheckTargetToLabel } from "#admin/policies/utils"; +import { UserForm } from "#admin/users/UserForm"; -import { - PoliciesApi, - PolicyBinding, - RbacPermissionsAssignedByRolesListModelEnum, -} from "@goauthentik/api"; +import { ModelEnum, PoliciesApi, PolicyBinding } from "@goauthentik/api"; import { msg, str } from "@lit/localize"; -import { CSSResult, html, nothing, TemplateResult } from "lit"; +import { css, CSSResult, html, nothing } from "lit"; import { customElement, property } from "lit/decorators.js"; -import { ifDefined } from "lit/directives/if-defined.js"; - -import PFSpacing from "@patternfly/patternfly/utilities/Spacing/spacing.css"; @customElement("ak-bound-policies-list") export class BoundPoliciesList extends Table { - @property() - target?: string; + public static styles: CSSResult[] = [ + ...super.styles, + css` + /* Align policy engine description to left padding of the card title */ + .policy-desc { + padding-left: var(--pf-global--spacer--lg); + } + `, + ]; - @property() - policyEngineMode: string = ""; + @property({ type: String }) + public target: string | null = null; + + @property({ type: String }) + public policyEngineMode: string = ""; @property({ type: Array }) - allowedTypes: PolicyBindingCheckTarget[] = [ + public allowedTypes: PolicyBindingCheckTarget[] = [ PolicyBindingCheckTarget.Policy, PolicyBindingCheckTarget.Group, PolicyBindingCheckTarget.User, ]; @property({ type: Array }) - typeNotices: PolicyBindingNotice[] = []; + public typeNotices: PolicyBindingNotice[] = []; - checkbox = true; - clearOnRefresh = true; + public override checkbox = true; + public override clearOnRefresh = true; - order = "order"; + public override order = "order"; protected bindingEditForm = "ak-policy-binding-form"; - static get styles(): CSSResult[] { - return super.styles.concat(PFSpacing); - } - get allowedTypesLabel(): string { return this.allowedTypes.map((ct) => PolicyBindingCheckTargetToLabel(ct)).join(" / "); } - async apiEndpoint(): Promise> { + protected override async apiEndpoint(): Promise> { return new PoliciesApi(DEFAULT_CONFIG).policiesBindingsList({ ...(await this.defaultEndpointConfig()), target: this.target || "", @@ -77,7 +79,7 @@ export class BoundPoliciesList extends return item.order?.toString() ?? null; } - protected columns: TableColumn[] = [ + protected override columns: TableColumn[] = [ [msg("Order"), "order"], [this.allowedTypesLabel], [msg("Enabled"), "enabled"], @@ -85,7 +87,7 @@ export class BoundPoliciesList extends [msg("Actions"), null, msg("Row Actions")], ]; - getPolicyUserGroupRowLabel(item: PolicyBinding): string { + protected getPolicyUserGroupRowLabel(item: PolicyBinding): string { if (item.policy) { return msg(str`Policy ${item.policyObj?.name}`); } else if (item.group) { @@ -96,7 +98,7 @@ export class BoundPoliciesList extends return msg("-"); } - getPolicyUserGroupRow(item: PolicyBinding): TemplateResult { + protected getPolicyUserGroupRow(item: PolicyBinding): SlottedTemplateResult { const label = this.getPolicyUserGroupRowLabel(item); if (item.user) { return html` ${label} `; @@ -107,161 +109,145 @@ export class BoundPoliciesList extends return html`${label}`; } - getObjectEditButton(item: PolicyBinding): SlottedTemplateResult { - if (item.policy) { - return html` - ${StrictUnsafe(item.policyObj?.component, { - slot: "form", - instancePk: item.policyObj?.pk, - actionLabel: msg("Update"), - headline: msg(str`Update ${item.policyObj?.name}`, { - id: "form.headline.update", - }), - })} - - - `; - } else if (item.group) { - return html` - ${msg("Update")} - ${msg("Update Group")} - - - `; - } else if (item.user) { - return html` - ${msg("Update")} - ${msg("Update User")} - - - `; + protected getObjectEditButton(item: PolicyBinding): SlottedTemplateResult { + if (item.policyObj) { + return html``; } - return nothing; + + if (item.groupObj) { + return html``; + } + + if (item.userObj) { + return html``; + } + + return null; } - renderToolbarSelected(): TemplateResult { + protected override renderToolbarSelected(): SlottedTemplateResult { const disabled = this.selectedElements.length < 1; - return html` { - return [ - { key: msg("Order"), value: item.order.toString() }, - { - key: this.allowedTypesLabel, - value: this.getPolicyUserGroupRowLabel(item), - }, - ]; - }} - .usedBy=${(item: PolicyBinding) => { - return new PoliciesApi(DEFAULT_CONFIG).policiesBindingsUsedByList({ - policyBindingUuid: item.pk, - }); - }} - .delete=${(item: PolicyBinding) => { - return new PoliciesApi(DEFAULT_CONFIG).policiesBindingsDestroy({ - policyBindingUuid: item.pk, - }); - }} - > - - `; + return html` + ${msg("Refresh")} { + return [ + { key: msg("Order"), value: item.order.toString() }, + { + key: this.allowedTypesLabel, + value: this.getPolicyUserGroupRowLabel(item), + }, + ]; + }} + .usedBy=${(item: PolicyBinding) => { + return new PoliciesApi(DEFAULT_CONFIG).policiesBindingsUsedByList({ + policyBindingUuid: item.pk, + }); + }} + .delete=${(item: PolicyBinding) => { + return new PoliciesApi(DEFAULT_CONFIG).policiesBindingsDestroy({ + policyBindingUuid: item.pk, + }); + }} + > + + `; } - row(item: PolicyBinding): SlottedTemplateResult[] { + protected renderNewPolicyButton(): SlottedTemplateResult { + if (!this.allowedTypes.includes(PolicyBindingCheckTarget.Policy)) { + return html``; + } + return html``; + } + + protected override row(item: PolicyBinding): SlottedTemplateResult[] { return [ html`
    ${item.order}
    `, html`${this.getPolicyUserGroupRow(item)}`, html``, html`${item.timeout}`, - html` ${this.getObjectEditButton(item)} - - ${msg("Update")} - ${msg("Update Binding")} - ${StrictUnsafe(this.bindingEditForm, { - slot: "form", - instancePk: item.pk, - allowedTypes: this.allowedTypes, - typeNotices: this.typeNotices, - targetPk: this.target || "", - - actionLabel: msg("Update"), - headline: msg("Update Binding"), + html`
    + ${this.getObjectEditButton(item)} + - - - `, + ${msg("Edit Binding")} + + ${IconPermissionButton(this.getPolicyUserGroupRowLabel(item), { + model: ModelEnum.AuthentikPoliciesPolicybinding, + objectPk: item.pk, + })} +
    `, ]; } - renderEmpty(): TemplateResult { + protected override renderEmpty(): SlottedTemplateResult { return super.renderEmpty( html`${msg("No Policies bound.")}
    ${msg("No policies are currently bound to this object.")}
    -
    +
    ${msg("Policy actions")} - - - ${StrictUnsafe(this.bindingEditForm, { - slot: "form", - allowedTypes: this.allowedTypes, - typeNotices: this.typeNotices, - targetPk: this.target || "", - - actionLabel: msg("Create"), - headline: msg("Create Binding"), - })} - - -
    + ${this.renderNewPolicyButton()} +
    `, ); } - renderToolbar(): TemplateResult { - return html`${this.allowedTypes.includes(PolicyBindingCheckTarget.Policy) - ? html`` - : nothing} - - ${StrictUnsafe(this.bindingEditForm, { - slot: "form", - allowedTypes: this.allowedTypes, - typeNotices: this.typeNotices, - targetPk: this.target || "", - - actionLabel: msg("Create"), - headline: msg("Create Binding"), - })} - - - `; + renderToolbar(): SlottedTemplateResult { + return this.renderNewPolicyButton(); } renderPolicyEngineMode() { @@ -271,10 +257,15 @@ export class BoundPoliciesList extends if (policyEngineMode === undefined) { return nothing; } - return html`

    - ${msg(str`The currently selected policy engine mode is ${policyEngineMode.label}:`)} - ${policyEngineMode.description} -

    `; + return html`${this.findSlotted("description") + ? html`

    + +

    ` + : nothing} +

    + ${msg(str`The currently selected policy engine mode is ${policyEngineMode.label}:`)} + ${policyEngineMode.description} +

    `; } renderToolbarContainer(): SlottedTemplateResult { diff --git a/web/src/admin/policies/PolicyBindingForm.ts b/web/src/admin/policies/PolicyBindingForm.ts index e51849d7cc..941ae7d101 100644 --- a/web/src/admin/policies/PolicyBindingForm.ts +++ b/web/src/admin/policies/PolicyBindingForm.ts @@ -5,15 +5,14 @@ import "#elements/forms/Radio"; import "#elements/forms/SearchSelect/index"; import { DEFAULT_CONFIG } from "#common/api/config"; -import { groupBy } from "#common/utils"; - -import { ModelForm } from "#elements/forms/ModelForm"; - import { createPassFailOptions, PolicyBindingCheckTarget, PolicyBindingCheckTargetToLabel, -} from "#admin/policies/utils"; +} from "#common/policies/utils"; +import { groupBy } from "#common/utils"; + +import { ModelForm } from "#elements/forms/ModelForm"; import { CoreApi, @@ -40,7 +39,9 @@ export class PolicyBindingForm extends T, string > { - static styles: CSSResult[] = [...super.styles, PFContent]; + public static styles: CSSResult[] = [...super.styles, PFContent]; + public static verboseName = msg("Policy Binding"); + public static verboseNamePlural = msg("Policy Bindings"); async loadInstance(pk: string): Promise { const binding = await new PoliciesApi(DEFAULT_CONFIG).policiesBindingsRetrieve({ @@ -62,7 +63,7 @@ export class PolicyBindingForm extends public targetPk = ""; @state() - protected policyGroupUser: PolicyBindingCheckTarget = PolicyBindingCheckTarget.Policy; + public policyGroupUser: PolicyBindingCheckTarget = PolicyBindingCheckTarget.Policy; @property({ type: Array }) public allowedTypes: PolicyBindingCheckTarget[] = [ @@ -160,107 +161,109 @@ export class PolicyBindingForm extends `; } + protected renderTarget() { + return html` + { + return groupBy(items, (policy) => policy.verboseNamePlural); + }} + .fetchObjects=${async (query?: string): Promise => { + const args: PoliciesAllListRequest = { + ordering: "name", + }; + if (query !== undefined) { + args.search = query; + } + const policies = await new PoliciesApi(DEFAULT_CONFIG).policiesAllList( + args, + ); + return policies.results; + }} + .renderElement=${(policy: Policy) => policy.name} + .value=${(policy: Policy | null) => policy?.pk} + .selected=${(policy: Policy) => policy.pk === this.instance?.policy} + blankable + > + + ${this.typeNotices + .filter(({ type }) => type === PolicyBindingCheckTarget.Policy) + .map((msg) => { + return html`

    ${msg.notice}

    `; + })} +
    + + => { + const args: CoreGroupsListRequest = { + ordering: "name", + includeUsers: false, + }; + if (query !== undefined) { + args.search = query; + } + const groups = await new CoreApi(DEFAULT_CONFIG).coreGroupsList(args); + return groups.results; + }} + .renderElement=${(group: Group): string => { + return group.name; + }} + .value=${(group: Group | null) => String(group?.pk ?? "")} + .selected=${(group: Group) => group.pk === this.instance?.group} + blankable + > + + ${this.typeNotices + .filter(({ type }) => type === PolicyBindingCheckTarget.Group) + .map((msg) => { + return html`

    ${msg.notice}

    `; + })} +
    + + => { + const args: CoreUsersListRequest = { + ordering: "username", + }; + if (query !== undefined) { + args.search = query; + } + const users = await new CoreApi(DEFAULT_CONFIG).coreUsersList(args); + return users.results; + }} + .renderElement=${(user: User) => user.username} + .renderDescription=${(user: User) => html`${user.name}`} + .value=${(user: User | null) => user?.pk} + .selected=${(user: User) => user.pk === this.instance?.user} + blankable + > + + ${this.typeNotices + .filter(({ type }) => type === PolicyBindingCheckTarget.User) + .map((msg) => { + return html`

    ${msg.notice}

    `; + })} +
    `; + } + protected override renderForm(): TemplateResult { - return html`
    -
    ${this.renderModeSelector()}
    - -
    + return html`${this.allowedTypes.length > 1 + ? html`
    +
    ${this.renderModeSelector()}
    + +
    ` + : this.renderTarget()} extends @@ -290,7 +293,11 @@ export class PolicyBindingForm extends required /> - +

    diff --git a/web/src/admin/policies/PolicyListPage.ts b/web/src/admin/policies/PolicyListPage.ts index cff6165635..76b5348657 100644 --- a/web/src/admin/policies/PolicyListPage.ts +++ b/web/src/admin/policies/PolicyListPage.ts @@ -1,5 +1,5 @@ import "#admin/policies/PolicyTestForm"; -import "#admin/policies/PolicyWizard"; +import "#admin/policies/ak-policy-wizard"; import "#admin/policies/dummy/DummyPolicyForm"; import "#admin/policies/event_matcher/EventMatcherPolicyForm"; import "#admin/policies/expiry/ExpiryPolicyForm"; @@ -15,33 +15,37 @@ import "@patternfly/elements/pf-tooltip/pf-tooltip.js"; import { DEFAULT_CONFIG } from "#common/api/config"; -import { CustomFormElementTagName } from "#elements/forms/unsafe"; +import { IconEditButtonByTagName, modalInvoker } from "#elements/dialogs"; +import { IconPermissionButton } from "#elements/dialogs/components/IconPermissionButton"; import { PFColor } from "#elements/Label"; import { PaginatedResponse, TableColumn } from "#elements/table/Table"; import { TablePage } from "#elements/table/TablePage"; import { SlottedTemplateResult } from "#elements/types"; -import { StrictUnsafe } from "#elements/utils/unsafe"; -import { PoliciesApi, Policy } from "@goauthentik/api"; +import { PolicyWizard } from "#admin/policies/ak-policy-wizard"; +import { PolicyTestForm } from "#admin/policies/PolicyTestForm"; + +import { ModelEnum, PoliciesApi, Policy } from "@goauthentik/api"; import { msg, str } from "@lit/localize"; -import { html, TemplateResult } from "lit"; -import { customElement, property } from "lit/decorators.js"; +import { html } from "lit"; +import { customElement } from "lit/decorators.js"; @customElement("ak-policy-list") export class PolicyListPage extends TablePage { protected override searchEnabled = true; - public pageTitle = msg("Policies"); - public pageDescription = msg( + + public override pageTitle = msg("Policies"); + public override pageDescription = msg( "Allow users to use Applications based on properties, enforce Password Criteria and selectively apply Stages.", ); - public pageIcon = "pf-icon pf-icon-infrastructure"; + public override pageIcon = "pf-icon pf-icon-infrastructure"; - checkbox = true; - clearOnRefresh = true; + public override searchPlaceholder = msg("Search for a policy by name or type..."); - @property() - order = "name"; + public override checkbox = true; + public override clearOnRefresh = true; + public override order = "name"; async apiEndpoint(): Promise> { return new PoliciesApi(DEFAULT_CONFIG).policiesAllList(await this.defaultEndpointConfig()); @@ -54,7 +58,7 @@ export class PolicyListPage extends TablePage { [msg("Actions")], ]; - row(item: Policy): SlottedTemplateResult[] { + protected override row(item: Policy): SlottedTemplateResult[] { return [ html`

    ${item.name}
    ${(item.boundTo || 0) > 0 @@ -65,38 +69,32 @@ export class PolicyListPage extends TablePage { ${msg("Warning: Policy is not assigned.")} `}`, html`${item.verboseName}`, - html` - ${StrictUnsafe(item.component, { - slot: "form", - instancePk: item.pk, - actionLabel: msg("Update"), - headline: msg(str`Update ${item.verboseName}`, { - id: "form.headline.update", - }), - })} - - + html`
    + ${IconEditButtonByTagName(item.component, item.pk)} + ${IconPermissionButton(item.name, { + model: item.metaModelName as ModelEnum, + objectPk: item.pk, + })} - - - - ${msg("Test")} - ${msg("Test Policy")} - - - `, + +
    `, ]; } - renderToolbarSelected(): TemplateResult { + protected override renderToolbarSelected(): SlottedTemplateResult { const disabled = this.selectedElements.length < 1; return html` { `; } - renderObjectCreate(): TemplateResult { - return html` `; + protected override renderObjectCreate(): SlottedTemplateResult { + return html` + + `; } - renderToolbar(): TemplateResult { - return html` ${super.renderToolbar()} + protected override renderToolbar(): SlottedTemplateResult { + return html`${super.renderToolbar()} { return new PoliciesApi(DEFAULT_CONFIG).policiesAllCacheClearCreate(); }} diff --git a/web/src/admin/policies/PolicyTestForm.ts b/web/src/admin/policies/PolicyTestForm.ts index 067f845c87..33f985051c 100644 --- a/web/src/admin/policies/PolicyTestForm.ts +++ b/web/src/admin/policies/PolicyTestForm.ts @@ -5,8 +5,12 @@ import "#elements/forms/HorizontalFormElement"; import "#elements/forms/SearchSelect/index"; import { DEFAULT_CONFIG } from "#common/api/config"; +import { PFSize } from "#common/enums"; import { Form } from "#elements/forms/Form"; +import { SlottedTemplateResult } from "#elements/types"; + +import { AKLabel } from "#components/ak-label"; import { CoreApi, @@ -21,40 +25,20 @@ import { import YAML from "yaml"; import { msg } from "@lit/localize"; -import { css, CSSResult, html, nothing, TemplateResult } from "lit"; +import { css, CSSResult, html, TemplateResult } from "lit"; import { customElement, property, state } from "lit/decorators.js"; import PFDescriptionList from "@patternfly/patternfly/components/DescriptionList/description-list.css"; @customElement("ak-policy-test-form") export class PolicyTestForm extends Form { - @property({ attribute: false }) - public policy?: Policy; + public static verboseName = msg("Policy"); + public static verboseNamePlural = msg("Policies"); + public static createLabel = msg("Test"); - @state() - protected result: PolicyTestResult | null = null; + public override cancelable = true; - @property({ attribute: false }) - public request?: PolicyTestRequest; - - public override reset(): void { - super.reset(); - - this.result = null; - } - - getSuccessMessage(): string { - return msg("Successfully sent test-request."); - } - - async send(data: PolicyTestRequest): Promise { - this.request = data; - const result = await new PoliciesApi(DEFAULT_CONFIG).policiesAllTestCreate({ - policyUuid: this.policy?.pk || "", - policyTestRequest: data, - }); - return (this.result = result); - } + public override size = PFSize.XLarge; static styles: CSSResult[] = [ ...super.styles, @@ -66,9 +50,52 @@ export class PolicyTestForm extends Form { `, ]; - renderResult(): TemplateResult { - return html` - + #api = new PoliciesApi(DEFAULT_CONFIG); + + protected override formatSubmitLabel(submitLabel?: string | null): string { + return submitLabel || msg("Run Test"); + } + + @property({ attribute: false }) + public policy: Policy | null = null; + + @state() + protected result: PolicyTestResult | null = null; + + @property({ attribute: false }) + public request: PolicyTestRequest | null = null; + + public get verboseName(): string | null { + return this.policy?.verboseName || null; + } + + public get verboseNamePlural(): string | null { + return this.policy?.verboseNamePlural || null; + } + + public override reset(): void { + super.reset(); + + this.result = null; + } + + public override getSuccessMessage(): string { + return msg("Successfully sent test-request."); + } + + protected override async send(data: PolicyTestRequest): Promise { + this.request = data; + + this.result = await this.#api.policiesAllTestCreate({ + policyUuid: this.policy?.pk || "", + policyTestRequest: data, + }); + + return this.result; + } + + protected renderResult(): SlottedTemplateResult { + return html`
    @@ -96,20 +123,14 @@ export class PolicyTestForm extends Form { -
    -
    -
    - -
    -
    -
    -
    - `; + + `; } - protected override renderForm(): TemplateResult { + protected override renderForm(): SlottedTemplateResult { return html` => { const args: CoreUsersListRequest = { ordering: "username", @@ -135,14 +156,28 @@ export class PolicyTestForm extends Form { > - - + + + ${AKLabel( + { + slot: "label", + className: "pf-c-form__group-label", + htmlFor: "context", + }, + msg("Context"), + )} +

    ${msg("Set custom attributes using YAML or JSON.")}

    - ${this.result ? this.renderResult() : nothing}`; + + ${this.result ? this.renderResult() : null}`; } } diff --git a/web/src/admin/policies/PolicyWizard.ts b/web/src/admin/policies/PolicyWizard.ts deleted file mode 100644 index bd8d35813c..0000000000 --- a/web/src/admin/policies/PolicyWizard.ts +++ /dev/null @@ -1,126 +0,0 @@ -import "#admin/policies/dummy/DummyPolicyForm"; -import "#admin/policies/event_matcher/EventMatcherPolicyForm"; -import "#admin/policies/expiry/ExpiryPolicyForm"; -import "#admin/policies/expression/ExpressionPolicyForm"; -import "#admin/policies/geoip/GeoIPPolicyForm"; -import "#admin/policies/password/PasswordPolicyForm"; -import "#admin/policies/reputation/ReputationPolicyForm"; -import "#admin/policies/unique_password/UniquePasswordPolicyForm"; -import "#elements/wizard/FormWizardPage"; -import "#elements/wizard/TypeCreateWizardPage"; -import "#elements/wizard/Wizard"; - -import { DEFAULT_CONFIG } from "#common/api/config"; - -import { AKElement } from "#elements/Base"; -import { StrictUnsafe } from "#elements/utils/unsafe"; -import { FormWizardPage } from "#elements/wizard/FormWizardPage"; -import type { Wizard } from "#elements/wizard/Wizard"; - -import { PolicyBindingForm } from "#admin/policies/PolicyBindingForm"; - -import { PoliciesApi, Policy, PolicyBinding, TypeCreate } from "@goauthentik/api"; - -import { msg, str } from "@lit/localize"; -import { customElement } from "@lit/reactive-element/decorators/custom-element.js"; -import { CSSResult, html, nothing, TemplateResult } from "lit"; -import { property, query } from "lit/decorators.js"; - -import PFButton from "@patternfly/patternfly/components/Button/button.css"; - -@customElement("ak-policy-wizard") -export class PolicyWizard extends AKElement { - static styles: CSSResult[] = [PFButton]; - - @property() - createText = msg("Create"); - - @property({ type: Boolean }) - showBindingPage = false; - - @property() - bindingTarget?: string; - - @property({ attribute: false }) - policyTypes: TypeCreate[] = []; - - @query("ak-wizard") - wizard?: Wizard; - - firstUpdated(): void { - new PoliciesApi(DEFAULT_CONFIG).policiesAllTypesList().then((types) => { - this.policyTypes = types; - }); - } - - selectListener = ({ detail }: CustomEvent) => { - if (!this.wizard) return; - - const { component, modelName } = detail; - const idx = this.wizard.steps.indexOf("initial") + 1; - - // Exclude all current steps starting with type-, - // this happens when the user selects a type and then goes back - this.wizard.steps = this.wizard.steps.filter((step) => !step.startsWith("type-")); - - this.wizard.steps.splice(idx, 0, `type-${component}-${modelName}`); - - this.wizard.isValid = true; - }; - - render(): TemplateResult { - return html` - - - - - ${this.policyTypes.map((type) => { - return html` - - ${StrictUnsafe(type.component)} - - `; - })} - ${this.showBindingPage - ? html` { - const createSlot = context.host.steps[1]; - const bindingForm = - context.querySelector( - "ak-policy-binding-form", - ); - if (!bindingForm) return; - bindingForm.instance = { - policy: (context.host.state[createSlot] as Policy).pk, - } as PolicyBinding; - }} - > - - ` - : nothing} - - - `; - } -} - -declare global { - interface HTMLElementTagNameMap { - "ak-policy-wizard": PolicyWizard; - } -} diff --git a/web/src/admin/policies/ak-policy-wizard.ts b/web/src/admin/policies/ak-policy-wizard.ts new file mode 100644 index 0000000000..a0aad51bd3 --- /dev/null +++ b/web/src/admin/policies/ak-policy-wizard.ts @@ -0,0 +1,159 @@ +import "#admin/policies/dummy/DummyPolicyForm"; +import "#admin/policies/event_matcher/EventMatcherPolicyForm"; +import "#admin/policies/expiry/ExpiryPolicyForm"; +import "#admin/policies/expression/ExpressionPolicyForm"; +import "#admin/policies/geoip/GeoIPPolicyForm"; +import "#admin/policies/password/PasswordPolicyForm"; +import "#admin/policies/reputation/ReputationPolicyForm"; +import "#admin/policies/unique_password/UniquePasswordPolicyForm"; +import "#elements/wizard/FormWizardPage"; +import "#elements/wizard/TypeCreateWizardPage"; +import "#elements/wizard/Wizard"; +import "#elements/forms/FormGroup"; +import "#admin/policies/PolicyBindingForm"; + +import { DEFAULT_CONFIG } from "#common/api/config"; +import { PolicyBindingCheckTarget } from "#common/policies/utils"; + +import { RadioChangeEventDetail, RadioOption } from "#elements/forms/Radio"; +import { SlottedTemplateResult } from "#elements/types"; +import { CreateWizard } from "#elements/wizard/CreateWizard"; +import { FormWizardPage } from "#elements/wizard/FormWizardPage"; +import { TypeCreateWizardPageLayouts } from "#elements/wizard/TypeCreateWizardPage"; + +import { + PoliciesApi, + Policy, + PolicyBinding, + PolicyBindingRequest, + TypeCreate, +} from "@goauthentik/api"; + +import { msg } from "@lit/localize"; +import { customElement } from "@lit/reactive-element/decorators/custom-element.js"; +import { html, PropertyValues } from "lit"; +import { property } from "lit/decorators.js"; + +const initialStep = "initial"; + +@customElement("ak-policy-wizard") +export class PolicyWizard extends CreateWizard { + protected policiesAPI = new PoliciesApi(DEFAULT_CONFIG); + + @property({ type: Boolean }) + public showBindingPage = false; + + @property() + public bindingTarget: string | null = null; + + public override groupLabel = msg("Choose Policy Type"); + public override groupDescription = msg("Select the type of policy you want to create."); + + public override initialSteps = this.showBindingPage + ? ["initial", "create-binding"] + : ["initial"]; + + public static override verboseName = msg("Policy"); + public static override verboseNamePlural = msg("Policies"); + + public override layout = TypeCreateWizardPageLayouts.list; + + protected override apiEndpoint = async (requestInit?: RequestInit): Promise => { + return this.policiesAPI.policiesAllTypesList(requestInit); + }; + + protected override updated(changedProperties: PropertyValues): void { + super.updated(changedProperties); + + if (changedProperties.has("showBindingPage")) { + this.initialSteps = this.showBindingPage ? ["initial", "create-binding"] : ["initial"]; + } + } + + protected createBindingActivate = async ( + page: FormWizardPage<{ "initial": PolicyBindingCheckTarget; "create-binding": Policy }>, + ) => { + const createSlot = page.host.steps[1] as "create-binding"; + const bindingForm = page.querySelector("ak-policy-binding-form"); + + if (!bindingForm) return; + + if (page.host.state[createSlot]) { + bindingForm.allowedTypes = [PolicyBindingCheckTarget.Policy]; + bindingForm.policyGroupUser = PolicyBindingCheckTarget.Policy; + + const policyBindingRequest: Partial = { + policy: (page.host.state[createSlot] as Policy).pk, + }; + + bindingForm.instance = policyBindingRequest as unknown as PolicyBinding; + } + if (page.host.state[initialStep]) { + bindingForm.allowedTypes = [page.host.state[initialStep]]; + bindingForm.policyGroupUser = page.host.state[initialStep]; + } + }; + + protected override renderCreateBefore(): SlottedTemplateResult { + if (!this.showBindingPage) { + return null; + } + + return html` + []} + @change=${(ev: CustomEvent>) => { + if (!this.wizard) { + return; + } + + this.wizard.state[initialStep] = ev.detail.value; + this.wizard.navigateNext(); + }} + > + + `; + } + + protected renderForms(): SlottedTemplateResult { + const bindingPage = this.showBindingPage + ? html` + ` + : null; + + return [super.renderForms(), bindingPage]; + } +} + +declare global { + interface HTMLElementTagNameMap { + "ak-policy-wizard": PolicyWizard; + } +} diff --git a/web/src/admin/policies/dummy/DummyPolicyForm.ts b/web/src/admin/policies/dummy/DummyPolicyForm.ts index 2895c776a1..45ef1ea85d 100644 --- a/web/src/admin/policies/dummy/DummyPolicyForm.ts +++ b/web/src/admin/policies/dummy/DummyPolicyForm.ts @@ -1,3 +1,4 @@ +import "#components/ak-text-input"; import "#components/ak-switch-input"; import "#elements/forms/FormGroup"; import "#elements/forms/HorizontalFormElement"; @@ -34,19 +35,21 @@ export class DummyPolicyForm extends BasePolicyForm { } protected override renderForm(): TemplateResult { - return html` + return html` ${msg( "A policy used for testing. Always returns the same result as specified below after waiting a random duration.", )} - - - + + { - loadInstance(pk: string): Promise { + override loadInstance(pk: string): Promise { return new PoliciesApi(DEFAULT_CONFIG).policiesEventMatcherRetrieve({ policyUuid: pk, }); } async send(data: EventMatcherPolicy): Promise { + if (data.query?.toString() === "") data.query = null; if (data.action?.toString() === "") data.action = null; if (data.clientIp?.toString() === "") data.clientIp = null; if (data.app?.toString() === "") data.app = null; @@ -70,6 +72,25 @@ export class EventMatcherPolicyForm extends BasePolicyForm {
    + + +

    + ${msg("Event query using the AKQL syntax.")} + + ${msg("See documentation for examples.")} + +

    +
    => { diff --git a/web/src/admin/policies/reputation/ReputationListPage.ts b/web/src/admin/policies/reputation/ReputationListPage.ts index f93fb139e2..046c353dea 100644 --- a/web/src/admin/policies/reputation/ReputationListPage.ts +++ b/web/src/admin/policies/reputation/ReputationListPage.ts @@ -10,34 +10,29 @@ import { PaginatedResponse, TableColumn, Timestamp } from "#elements/table/Table import { TablePage } from "#elements/table/TablePage"; import { SlottedTemplateResult } from "#elements/types"; -import { - PoliciesApi, - RbacPermissionsAssignedByRolesListModelEnum, - Reputation, -} from "@goauthentik/api"; +import { ModelEnum, PoliciesApi, Reputation } from "@goauthentik/api"; import getUnicodeFlagIcon from "country-flag-icons/unicode"; import { msg } from "@lit/localize"; -import { html, nothing, TemplateResult } from "lit"; -import { customElement, property } from "lit/decorators.js"; +import { html, nothing } from "lit"; +import { customElement } from "lit/decorators.js"; @customElement("ak-policy-reputation-list") export class ReputationListPage extends TablePage { protected override searchEnabled = true; - public pageTitle = msg("Reputation scores"); - public pageDescription = msg( + + public override pageTitle = msg("Reputation scores"); + public override pageDescription = msg( "Reputation for IP and user identifiers. Scores are decreased for each failed login and increased for each successful login.", ); - public pageIcon = "fa fa-ban"; + public override pageIcon = "fa fa-ban"; + public override order = "identifier"; + public override checkbox = true; + public override clearOnRefresh = true; + public override searchPlaceholder = msg("Search for a reputation by identifier or IP..."); - @property() - order = "identifier"; - - checkbox = true; - clearOnRefresh = true; - - async apiEndpoint(): Promise> { + protected override async apiEndpoint(): Promise> { return new PoliciesApi(DEFAULT_CONFIG).policiesReputationScoresList({ ...(await this.defaultEndpointConfig()), }); @@ -55,7 +50,7 @@ export class ReputationListPage extends TablePage { [msg("Actions"), null, msg("Row Actions")], ]; - renderToolbarSelected(): TemplateResult { + protected override renderToolbarSelected(): SlottedTemplateResult { const disabled = this.selectedElements.length < 1; return html` { `; } - row(item: Reputation): SlottedTemplateResult[] { + protected override row(item: Reputation): SlottedTemplateResult[] { return [ - html`${item.identifier}`, + item.identifier, html`${item.ipGeoData?.country ? html` ${getUnicodeFlagIcon(item.ipGeoData.country)} ` : nothing} @@ -88,7 +83,7 @@ export class ReputationListPage extends TablePage { Timestamp(item.updated), html` diff --git a/web/src/admin/property-mappings/BasePropertyMappingForm.ts b/web/src/admin/property-mappings/BasePropertyMappingForm.ts index 06acd1dc99..ec091036c0 100644 --- a/web/src/admin/property-mappings/BasePropertyMappingForm.ts +++ b/web/src/admin/property-mappings/BasePropertyMappingForm.ts @@ -1,4 +1,5 @@ import "#elements/CodeMirror/ak-codemirror"; +import "#components/ak-text-input"; import { docLink } from "#common/global"; @@ -20,6 +21,9 @@ export abstract class BasePropertyMappingForm extends > { protected docLink: string | URL = "/add-secure-apps/providers/property-mappings/expression"; + public static override verboseName = msg("Property Mapping"); + public static override verboseNamePlural = msg("Property Mappings"); + getSuccessMessage(): string { return this.instance ? msg("Successfully updated mapping.") @@ -31,14 +35,15 @@ export abstract class BasePropertyMappingForm extends } protected override renderForm(): TemplateResult { - return html` - - + return html` + ${this.renderExtraFields()} diff --git a/web/src/admin/property-mappings/PropertyMappingListPage.ts b/web/src/admin/property-mappings/PropertyMappingListPage.ts index c89fd9ed99..a00cd3391d 100644 --- a/web/src/admin/property-mappings/PropertyMappingListPage.ts +++ b/web/src/admin/property-mappings/PropertyMappingListPage.ts @@ -14,7 +14,7 @@ import "#admin/property-mappings/PropertyMappingSourceSAMLForm"; import "#admin/property-mappings/PropertyMappingSourceSCIMForm"; import "#admin/property-mappings/PropertyMappingSourceTelegramForm"; import "#admin/property-mappings/PropertyMappingTestForm"; -import "#admin/property-mappings/PropertyMappingWizard"; +import "#admin/property-mappings/ak-property-mapping-wizard"; import "#admin/rbac/ObjectPermissionModal"; import "#elements/forms/DeleteBulkForm"; import "#elements/forms/ModalForm"; @@ -22,49 +22,54 @@ import "@patternfly/elements/pf-tooltip/pf-tooltip.js"; import { DEFAULT_CONFIG } from "#common/api/config"; -import { CustomFormElementTagName } from "#elements/forms/unsafe"; +import { IconEditButtonByTagName, modalInvoker } from "#elements/dialogs"; +import { IconPermissionButton } from "#elements/dialogs/components/IconPermissionButton"; import { getURLParam, updateURLParams } from "#elements/router/RouteMatch"; import { PaginatedResponse, TableColumn } from "#elements/table/Table"; import { TablePage } from "#elements/table/TablePage"; import { SlottedTemplateResult } from "#elements/types"; -import { StrictUnsafe } from "#elements/utils/unsafe"; -import { PropertyMapping, PropertymappingsApi } from "@goauthentik/api"; +import { AKPropertyMappingWizard } from "#admin/property-mappings/ak-property-mapping-wizard"; +import { PropertyMappingTestForm } from "#admin/property-mappings/PropertyMappingTestForm"; -import { msg, str } from "@lit/localize"; -import { html, TemplateResult } from "lit"; -import { customElement, property, state } from "lit/decorators.js"; +import { ModelEnum, PropertyMapping, PropertymappingsApi } from "@goauthentik/api"; + +import { msg } from "@lit/localize"; +import { html } from "lit"; +import { customElement, state } from "lit/decorators.js"; @customElement("ak-property-mapping-list") export class PropertyMappingListPage extends TablePage { protected override searchEnabled = true; - public pageTitle = msg("Property Mappings"); - public pageDescription = msg("Control how authentik exposes and interprets information."); - public pageIcon = "pf-icon pf-icon-blueprint"; + public override pageTitle = msg("Property Mappings"); + public override pageDescription = msg( + "Control how authentik exposes and interprets information.", + ); + public override pageIcon = "pf-icon pf-icon-blueprint"; + public override searchPlaceholder = msg("Search for a property mapping by name or type..."); - checkbox = true; - clearOnRefresh = true; + public override checkbox = true; + public override clearOnRefresh = true; - @property() - order = "name"; + public override order = "name"; @state() - hideManaged = getURLParam("hideManaged", true); + protected hideManaged = getURLParam("hideManaged", true); - async apiEndpoint(): Promise> { + protected override async apiEndpoint(): Promise> { return new PropertymappingsApi(DEFAULT_CONFIG).propertymappingsAllList({ ...(await this.defaultEndpointConfig()), managedIsnull: this.hideManaged ? true : undefined, }); } - protected columns: TableColumn[] = [ + protected override columns: TableColumn[] = [ [msg("Name"), "name"], [msg("Type"), "type"], [msg("Actions"), null, msg("Row Actions")], ]; - renderToolbarSelected(): TemplateResult { + protected override renderToolbarSelected(): SlottedTemplateResult { const disabled = this.selectedElements.length < 1; return html` { `; } - row(item: PropertyMapping): SlottedTemplateResult[] { + protected override row(item: PropertyMapping): SlottedTemplateResult[] { return [ html`${item.name}`, html`${item.verboseName}`, - html` - ${StrictUnsafe(item.component, { - slot: "form", - instancePk: item.pk, - actionLabel: msg("Update"), - headline: msg(str`Update ${item.verboseName}`, { - id: "form.headline.update", - }), - })} - - - - - - ${msg("Test")} - ${msg("Test Property Mapping")} - - - - `, + html`
    + ${IconEditButtonByTagName(item.component, item.pk)} + ${IconPermissionButton(item.name, { + model: item.metaModelName as ModelEnum, + objectPk: item.pk, + })} + + +
    `, ]; } - renderObjectCreate(): TemplateResult { - return html` `; + protected override renderObjectCreate(): SlottedTemplateResult { + return html``; } - renderToolbarAfter(): TemplateResult { + protected override renderToolbarAfter(): SlottedTemplateResult { return html`
    diff --git a/web/src/admin/property-mappings/PropertyMappingTestForm.ts b/web/src/admin/property-mappings/PropertyMappingTestForm.ts index 2a5fd2f616..442e50f9eb 100644 --- a/web/src/admin/property-mappings/PropertyMappingTestForm.ts +++ b/web/src/admin/property-mappings/PropertyMappingTestForm.ts @@ -3,64 +3,103 @@ import "#elements/forms/HorizontalFormElement"; import "#elements/forms/SearchSelect/index"; import { DEFAULT_CONFIG } from "#common/api/config"; +import { PFSize } from "#common/enums"; import { Form } from "#elements/forms/Form"; +import { SlottedTemplateResult } from "#elements/types"; + +import { AKLabel } from "#components/ak-label"; import { CoreApi, CoreGroupsListRequest, CoreUsersListRequest, Group, + ModelEnum, PropertyMapping, PropertymappingsApi, PropertyMappingTestRequest, PropertyMappingTestResult, - RbacPermissionsAssignedByRolesListModelEnum, User, } from "@goauthentik/api"; import YAML from "yaml"; import { msg } from "@lit/localize"; -import { html, nothing, TemplateResult } from "lit"; +import { html } from "lit"; import { customElement, property } from "lit/decorators.js"; import { ifDefined } from "lit/directives/if-defined.js"; @customElement("ak-property-mapping-test-form") -export class PolicyTestForm extends Form { - @property({ attribute: false }) - mapping?: PropertyMapping; +export class PropertyMappingTestForm extends Form { + public static verboseName = msg("Property Mapping"); + public static verboseNamePlural = msg("Property Mappings"); + public static createLabel = msg("Test"); + + public override cancelable = true; + public override size = PFSize.XLarge; + + #api = new PropertymappingsApi(DEFAULT_CONFIG); + + protected override formatSubmitLabel(submitLabel?: string | null): string { + return submitLabel || msg("Run Test"); + } @property({ attribute: false }) - result?: PropertyMappingTestResult; + public mapping: PropertyMapping | null = null; @property({ attribute: false }) - request?: PropertyMappingTestRequest; + public result: PropertyMappingTestResult | null = null; - getSuccessMessage(): string { + @property({ attribute: false }) + public request: PropertyMappingTestRequest | null = null; + + public override getSuccessMessage(): string { return msg("Successfully sent test-request."); } - async send(data: PropertyMappingTestRequest): Promise { + protected override async send( + data: PropertyMappingTestRequest, + ): Promise { this.request = data; - const result = await new PropertymappingsApi(DEFAULT_CONFIG).propertymappingsAllTestCreate({ + + this.result = await this.#api.propertymappingsAllTestCreate({ pmUuid: this.mapping?.pk || "", propertyMappingTestRequest: data, formatResult: true, }); - return (this.result = result); + + return this.result; } - renderResult(): TemplateResult { - return html` + public get verboseName(): string | null { + return this.mapping?.verboseName || null; + } + + public get verboseNamePlural(): string | null { + return this.mapping?.verboseNamePlural || null; + } + + protected renderResult(): SlottedTemplateResult { + return html` ${this.result?.successful - ? html` - ` - : html`
    + ? html`${AKLabel( + { + slot: "label", + className: "pf-c-form__group-label", + htmlFor: "result", + }, + msg("Result"), + )} + + + ` + : html`
    ${this.result?.result}
    @@ -70,15 +109,26 @@ export class PolicyTestForm extends Form { `; } - renderExampleButtons() { - return this.mapping?.metaModelName === - RbacPermissionsAssignedByRolesListModelEnum.AuthentikSourcesLdapLdapsourcepropertymapping - ? html`

    ${msg("Example context data")}

    - ${this.renderExampleLDAP()}` - : nothing; + protected renderExampleButtons(): SlottedTemplateResult { + if ( + this.mapping?.metaModelName !== ModelEnum.AuthentikSourcesLdapLdapsourcepropertymapping + ) { + return null; + } + + return html`
    + ${AKLabel( + { + slot: "label", + className: "pf-c-form__group-label", + }, + msg("Example Context Data"), + )} +

    ${this.renderExampleLDAP()}

    +
    `; } - renderExampleLDAP(): TemplateResult { + protected renderExampleLDAP(): SlottedTemplateResult { return html` - - `; - } -} - -declare global { - interface HTMLElementTagNameMap { - "ak-property-mapping-wizard": PropertyMappingWizard; - } -} diff --git a/web/src/admin/property-mappings/ak-property-mapping-wizard.ts b/web/src/admin/property-mappings/ak-property-mapping-wizard.ts new file mode 100644 index 0000000000..6158d22ff6 --- /dev/null +++ b/web/src/admin/property-mappings/ak-property-mapping-wizard.ts @@ -0,0 +1,46 @@ +import "#admin/property-mappings/PropertyMappingNotification"; +import "#admin/property-mappings/PropertyMappingProviderGoogleWorkspaceForm"; +import "#admin/property-mappings/PropertyMappingProviderMicrosoftEntraForm"; +import "#admin/property-mappings/PropertyMappingProviderRACForm"; +import "#admin/property-mappings/PropertyMappingProviderRadiusForm"; +import "#admin/property-mappings/PropertyMappingProviderSAMLForm"; +import "#admin/property-mappings/PropertyMappingProviderSCIMForm"; +import "#admin/property-mappings/PropertyMappingProviderScopeForm"; +import "#admin/property-mappings/PropertyMappingSourceKerberosForm"; +import "#admin/property-mappings/PropertyMappingSourceLDAPForm"; +import "#admin/property-mappings/PropertyMappingSourceOAuthForm"; +import "#admin/property-mappings/PropertyMappingSourcePlexForm"; +import "#admin/property-mappings/PropertyMappingSourceSAMLForm"; +import "#admin/property-mappings/PropertyMappingSourceSCIMForm"; +import "#admin/property-mappings/PropertyMappingSourceTelegramForm"; +import "#admin/property-mappings/PropertyMappingTestForm"; +import "#elements/wizard/FormWizardPage"; +import "#elements/wizard/TypeCreateWizardPage"; +import "#elements/wizard/Wizard"; + +import { DEFAULT_CONFIG } from "#common/api/config"; + +import { CreateWizard } from "#elements/wizard/CreateWizard"; + +import { PropertymappingsApi, TypeCreate } from "@goauthentik/api"; + +import { msg } from "@lit/localize/init/install"; +import { customElement } from "@lit/reactive-element/decorators/custom-element.js"; + +@customElement("ak-property-mapping-wizard") +export class AKPropertyMappingWizard extends CreateWizard { + #api = new PropertymappingsApi(DEFAULT_CONFIG); + + protected override apiEndpoint(requestInit?: RequestInit): Promise { + return this.#api.propertymappingsAllTypesList(requestInit); + } + + public static override verboseName = msg("Property Mapping"); + public static override verboseNamePlural = msg("Property Mappings"); +} + +declare global { + interface HTMLElementTagNameMap { + "ak-property-mapping-wizard": AKPropertyMappingWizard; + } +} diff --git a/web/src/admin/providers/BaseProviderForm.ts b/web/src/admin/providers/BaseProviderForm.ts index 8e73347752..ef73be230d 100644 --- a/web/src/admin/providers/BaseProviderForm.ts +++ b/web/src/admin/providers/BaseProviderForm.ts @@ -11,6 +11,9 @@ import { msg } from "@lit/localize"; * @prop {number} instancePk - The primary key of the instance to load. */ export abstract class BaseProviderForm extends ModelForm { + public static override verboseName = msg("Provider"); + public static override verboseNamePlural = msg("Providers"); + public override getSuccessMessage(): string { return this.instance ? msg("Successfully updated provider.") diff --git a/web/src/admin/providers/ProviderListPage.ts b/web/src/admin/providers/ProviderListPage.ts index d361444b1e..7f1ae00ff2 100644 --- a/web/src/admin/providers/ProviderListPage.ts +++ b/web/src/admin/providers/ProviderListPage.ts @@ -1,5 +1,4 @@ -import "#admin/applications/ApplicationWizardHint"; -import "#admin/providers/ProviderWizard"; +import "#admin/providers/ak-provider-wizard"; import "#admin/providers/google_workspace/GoogleWorkspaceProviderForm"; import "#admin/providers/ldap/LDAPProviderForm"; import "#admin/providers/microsoft_entra/MicrosoftEntraProviderForm"; @@ -13,20 +12,20 @@ import "#admin/providers/ssf/SSFProviderFormPage"; import "#admin/providers/wsfed/WSFederationProviderForm"; import "#elements/buttons/SpinnerButton/index"; import "#elements/forms/DeleteBulkForm"; -import "#elements/forms/ModalForm"; import "@patternfly/elements/pf-tooltip/pf-tooltip.js"; import { DEFAULT_CONFIG } from "#common/api/config"; -import { CustomFormElementTagName } from "#elements/forms/unsafe"; +import { IconEditButtonByTagName } from "#elements/dialogs"; import { PaginatedResponse, TableColumn } from "#elements/table/Table"; import { TablePage } from "#elements/table/TablePage"; import { SlottedTemplateResult } from "#elements/types"; -import { StrictUnsafe } from "#elements/utils/unsafe"; + +import { AKProviderWizard } from "#admin/providers/ak-provider-wizard"; import { Provider, ProvidersApi } from "@goauthentik/api"; -import { msg, str } from "@lit/localize"; +import { msg } from "@lit/localize"; import { html, TemplateResult } from "lit"; import { customElement, property } from "lit/decorators.js"; @@ -49,7 +48,7 @@ export class ProviderListPage extends TablePage { public order = "name"; public searchLabel = msg("Provider Search"); - public searchPlaceholder = msg("Search for providers…"); + public searchPlaceholder = msg("Search for provider by name, type or assigned application..."); override async apiEndpoint(): Promise> { return new ProvidersApi(DEFAULT_CONFIG).providersAllList( @@ -112,33 +111,24 @@ export class ProviderListPage extends TablePage { return [ html`${item.name}`, this.#rowApp(item), - html`${item.verboseName}`, - html`
    - - ${StrictUnsafe(item.component, { - slot: "form", - instancePk: item.pk, - actionLabel: msg("Update"), - headline: msg(str`Update ${item.verboseName}`, { - id: "form.headline.update", - }), - })} - - + item.verboseName, + html`
    + ${IconEditButtonByTagName(item.component, item.pk)}
    `, ]; } - override renderObjectCreate(): TemplateResult { - return html` `; + protected override renderObjectCreate(): SlottedTemplateResult { + return html` + + `; } } diff --git a/web/src/admin/providers/ProviderWizard.ts b/web/src/admin/providers/ProviderWizard.ts deleted file mode 100644 index c486589618..0000000000 --- a/web/src/admin/providers/ProviderWizard.ts +++ /dev/null @@ -1,98 +0,0 @@ -import "#admin/common/ak-license-notice"; -import "#admin/providers/ldap/LDAPProviderForm"; -import "#admin/providers/oauth2/OAuth2ProviderForm"; -import "#admin/providers/proxy/ProxyProviderForm"; -import "#admin/providers/saml/SAMLProviderForm"; -import "#admin/providers/saml/SAMLProviderImportForm"; -import "#elements/wizard/FormWizardPage"; -import "#elements/wizard/TypeCreateWizardPage"; -import "#elements/wizard/Wizard"; - -import { DEFAULT_CONFIG } from "#common/api/config"; - -import { AKElement } from "#elements/Base"; -import { StrictUnsafe } from "#elements/utils/unsafe"; -import { TypeCreateWizardPageLayouts } from "#elements/wizard/TypeCreateWizardPage"; -import type { Wizard } from "#elements/wizard/Wizard"; - -import { ProvidersApi, TypeCreate } from "@goauthentik/api"; - -import { msg, str } from "@lit/localize"; -import { customElement } from "@lit/reactive-element/decorators/custom-element.js"; -import { CSSResult, html, TemplateResult } from "lit"; -import { property, query } from "lit/decorators.js"; - -import PFButton from "@patternfly/patternfly/components/Button/button.css"; - -@customElement("ak-provider-wizard") -export class ProviderWizard extends AKElement { - static styles: CSSResult[] = [PFButton]; - - @property() - createText = msg("Create"); - - @property({ attribute: false }) - providerTypes: TypeCreate[] = []; - - @property({ attribute: false }) - public finalHandler?: () => Promise; - - @query("ak-wizard") - wizard?: Wizard; - - connectedCallback() { - super.connectedCallback(); - new ProvidersApi(DEFAULT_CONFIG).providersAllTypesList().then((providerTypes) => { - this.providerTypes = providerTypes; - }); - } - - render(): TemplateResult { - return html` - - ) => { - if (!this.wizard) return; - this.wizard.steps = ["initial", `type-${ev.detail.component}`]; - this.wizard.isValid = true; - }} - > - - ${this.providerTypes.map((type) => { - return html` - - ${StrictUnsafe(type.component)} - - `; - })} - - - `; - } -} - -declare global { - interface HTMLElementTagNameMap { - "ak-provider-wizard": ProviderWizard; - } -} diff --git a/web/src/admin/providers/RelatedApplicationButton.ts b/web/src/admin/providers/RelatedApplicationButton.ts index fb31ee19ca..f8bcad9e7d 100644 --- a/web/src/admin/providers/RelatedApplicationButton.ts +++ b/web/src/admin/providers/RelatedApplicationButton.ts @@ -3,11 +3,14 @@ import "#elements/Spinner"; import "#elements/forms/ModalForm"; import { AKElement } from "#elements/Base"; +import { ModalInvokerButton } from "#elements/dialogs"; +import { SlottedTemplateResult } from "#elements/types"; + +import { ApplicationForm } from "#admin/applications/ApplicationForm"; import { Provider } from "@goauthentik/api"; -import { msg } from "@lit/localize"; -import { CSSResult, html, TemplateResult } from "lit"; +import { CSSResult, html } from "lit"; import { customElement, property } from "lit/decorators.js"; import PFButton from "@patternfly/patternfly/components/Button/button.css"; @@ -17,12 +20,12 @@ export class RelatedApplicationButton extends AKElement { static styles: CSSResult[] = [PFButton]; @property({ attribute: false }) - provider?: Provider; + public provider?: Provider | null = null; - @property() - mode: "primary" | "backchannel" = "primary"; + @property({ type: String }) + public mode: "primary" | "backchannel" = "primary"; - render(): TemplateResult { + protected override render(): SlottedTemplateResult { if (this.mode === "primary" && this.provider?.assignedApplicationSlug) { return html` ${this.provider.assignedApplicationName} @@ -35,12 +38,10 @@ export class RelatedApplicationButton extends AKElement { ${this.provider.assignedBackchannelApplicationName} `; } - return html` - ${msg("Create")} - ${msg("Create Application")} - - - `; + + return ModalInvokerButton(ApplicationForm, { + provider: this.provider?.pk, + }); } } diff --git a/web/src/admin/providers/ak-provider-wizard.ts b/web/src/admin/providers/ak-provider-wizard.ts new file mode 100644 index 0000000000..50389821a0 --- /dev/null +++ b/web/src/admin/providers/ak-provider-wizard.ts @@ -0,0 +1,39 @@ +import "#elements/LicenseNotice"; +import "#admin/providers/ldap/LDAPProviderForm"; +import "#admin/providers/oauth2/OAuth2ProviderForm"; +import "#admin/providers/proxy/ProxyProviderForm"; +import "#admin/providers/saml/SAMLProviderForm"; +import "#admin/providers/saml/SAMLProviderImportForm"; +import "#elements/wizard/FormWizardPage"; +import "#elements/wizard/TypeCreateWizardPage"; +import "#elements/wizard/Wizard"; + +import { DEFAULT_CONFIG } from "#common/api/config"; + +import { CreateWizard } from "#elements/wizard/CreateWizard"; +import { TypeCreateWizardPageLayouts } from "#elements/wizard/TypeCreateWizardPage"; + +import { ProvidersApi, TypeCreate } from "@goauthentik/api"; + +import { msg } from "@lit/localize"; +import { customElement } from "@lit/reactive-element/decorators/custom-element.js"; + +@customElement("ak-provider-wizard") +export class AKProviderWizard extends CreateWizard { + #api = new ProvidersApi(DEFAULT_CONFIG); + + public static override verboseName = msg("Provider"); + public static override verboseNamePlural = msg("Providers"); + + public override layout = TypeCreateWizardPageLayouts.grid; + + protected apiEndpoint = async (requestInit?: RequestInit): Promise => { + return this.#api.providersAllTypesList(requestInit); + }; +} + +declare global { + interface HTMLElementTagNameMap { + "ak-provider-wizard": AKProviderWizard; + } +} diff --git a/web/src/admin/providers/google_workspace/GoogleWorkspaceProviderGroupList.ts b/web/src/admin/providers/google_workspace/GoogleWorkspaceProviderGroupList.ts index 5767916ec7..ca8b02f876 100644 --- a/web/src/admin/providers/google_workspace/GoogleWorkspaceProviderGroupList.ts +++ b/web/src/admin/providers/google_workspace/GoogleWorkspaceProviderGroupList.ts @@ -31,7 +31,7 @@ export class GoogleWorkspaceProviderGroupList extends Table + return html` ${msg("Sync")} ${msg("Sync Group")} + return html` ${msg("Sync")} ${msg("Sync User")}
    -
    - - -
    + +
    @@ -205,7 +198,7 @@ export class GoogleWorkspaceProviderViewPage extends AKElement {
    -
    - -
    +
    @@ -250,13 +241,11 @@ export class GoogleWorkspaceProviderViewPage extends AKElement {
    ${msg("Tasks")}
    -
    - -
    +
    `; diff --git a/web/src/admin/providers/ldap/LDAPProviderFormForm.ts b/web/src/admin/providers/ldap/LDAPProviderFormForm.ts index 676df15ab7..237967811f 100644 --- a/web/src/admin/providers/ldap/LDAPProviderFormForm.ts +++ b/web/src/admin/providers/ldap/LDAPProviderFormForm.ts @@ -26,12 +26,7 @@ import { import { ifPresent } from "#elements/utils/attributes"; -import { - CurrentBrand, - FlowsInstancesListDesignationEnum, - LDAPProvider, - ValidationError, -} from "@goauthentik/api"; +import { CurrentBrand, FlowDesignationEnum, LDAPProvider, ValidationError } from "@goauthentik/api"; import { msg } from "@lit/localize"; import { html } from "lit"; @@ -44,12 +39,14 @@ import { ifDefined } from "lit/directives/if-defined.js"; // Authentication flows, but we're storing them in the Authorization field of the target Provider. export interface LDAPProviderFormProps { - provider?: Partial; + provider?: Partial | null; errors?: ValidationError; brand?: CurrentBrand; } -export function renderForm({ provider = {}, errors = {}, brand }: LDAPProviderFormProps) { +export function renderForm({ provider, errors = {}, brand }: LDAPProviderFormProps) { + provider ||= {}; + return html`
    -
    - - -
    + +
    @@ -181,7 +174,7 @@ export class LDAPProviderViewPage extends WithSession(AKElement) {
    @@ -205,7 +198,7 @@ export class MicrosoftEntraProviderViewPage extends AKElement {
    -
    - -
    +
    @@ -251,13 +242,11 @@ export class MicrosoftEntraProviderViewPage extends AKElement {
    ${msg("Tasks")}
    -
    - -
    +
    `; diff --git a/web/src/admin/providers/oauth2/OAuth2ProviderFormForm.ts b/web/src/admin/providers/oauth2/OAuth2ProviderFormForm.ts index 599cd31ce7..eade8f2c53 100644 --- a/web/src/admin/providers/oauth2/OAuth2ProviderFormForm.ts +++ b/web/src/admin/providers/oauth2/OAuth2ProviderFormForm.ts @@ -14,6 +14,7 @@ import "#elements/forms/Radio"; import "#elements/forms/SearchSelect/index"; import "#elements/utils/TimeDeltaHelp"; import "#admin/providers/oauth2/OAuth2ProviderRedirectURI"; +import "#elements/ak-checkbox-group/ak-checkbox-group"; import { propertyMappingsProvider, propertyMappingsSelector } from "./OAuth2ProviderFormHelpers.js"; import { oauth2ProvidersProvider, oauth2ProvidersSelector } from "./OAuth2ProvidersProvider.js"; @@ -28,12 +29,14 @@ import { AKLabel } from "#components/ak-label"; import { ClientTypeEnum, - FlowsInstancesListDesignationEnum, + FlowDesignationEnum, + GrantTypesEnum, IssuerModeEnum, MatchingModeEnum, OAuth2Provider, OAuth2ProviderLogoutMethodEnum, RedirectURI, + RedirectURITypeEnum, SubModeEnum, ValidationError, } from "@goauthentik/api"; @@ -120,22 +123,43 @@ export const issuerModeOptions: RadioOption[] = [ const redirectUriHelpMessages: string[] = [ msg( - "Valid redirect URIs after a successful authorization flow. Also specify any origins here for Implicit flows.", + "Valid redirect URIs after a successful authorization or invalidation flow. Also specify any origins here for Implicit flows. Use the type dropdown to designate URIs for authorization or post-logout redirection.", ), msg( - "If no explicit redirect URIs are specified, the first successfully used redirect URI will be saved.", + "If no explicit authorization redirect URIs are specified, the first successfully used authorization redirect URI will be saved.", ), msg( 'To allow any redirect URI, set the mode to Regex and the value to ".*". Be aware of the possible security implications this can have.', ), ]; +const grantTypes = [ + [GrantTypesEnum.AuthorizationCode, msg("Authorization Code")], + [GrantTypesEnum.Implicit, msg("Implicit")], + [GrantTypesEnum.Hybrid, msg("Hybrid")], + [GrantTypesEnum.RefreshToken, msg("Refresh token")], + [GrantTypesEnum.ClientCredentials, msg("Client credentials")], + [GrantTypesEnum.Password, msg("Password")], + [GrantTypesEnum.UrnIetfParamsOauthGrantTypeDeviceCode, msg("Device-code")], +]; + +const defaultGrantTypes = [ + // TODO: Clean up defaults after 2026 + GrantTypesEnum.AuthorizationCode, + GrantTypesEnum.Implicit, + GrantTypesEnum.Hybrid, + GrantTypesEnum.RefreshToken, + GrantTypesEnum.ClientCredentials, + GrantTypesEnum.Password, + GrantTypesEnum.UrnIetfParamsOauthGrantTypeDeviceCode, +]; + type ShowClientSecret = (show: boolean) => void; type ShowLogoutMethod = (show: boolean) => void; export interface OAuth2ProviderFormProps { - provider?: Partial; - errors?: ValidationError; + provider?: Partial | null; + errors?: ValidationError | null; showClientSecret?: boolean; showClientSecretCallback?: ShowClientSecret; showLogoutMethod: boolean; @@ -143,13 +167,15 @@ export interface OAuth2ProviderFormProps { } export function renderForm({ - provider = {}, - errors = {}, + provider, + errors, showClientSecret = false, showClientSecretCallback = (_show) => undefined, showLogoutMethod = false, showLogoutMethodCallback = (_show) => undefined, }: OAuth2ProviderFormProps) { + provider ||= {}; + errors ||= {}; return html` ) => { @@ -215,13 +241,37 @@ export function renderForm({ ?hidden=${!showClientSecret} > + + grantType[0]) + .filter( + (type) => + (provider?.grantTypes || defaultGrantTypes).filter( + (isField) => { + return type === isField; + }, + ).length > 0, + )} + > +

    + ${msg("Grant types this provider may use.")} +

    +
    ({ matchingMode: MatchingModeEnum.Strict, url: "" })} + .newItem=${() => ({ + matchingMode: MatchingModeEnum.Strict, + url: "", + redirectUriType: RedirectURITypeEnum.Authorization, + })} .row=${(redirectURI: RedirectURI, idx: number) => { return html`

    @@ -299,14 +349,14 @@ export function renderForm({

    { +export class OAuth2ProviderRedirectURI extends AKControlElement { static styles = [ PFInputGroup, PFFormControl, @@ -37,6 +37,7 @@ export class OAuth2ProviderRedirectURI extends AkControlElement { public redirectURI: RedirectURI = { matchingMode: MatchingModeEnum.Strict, url: "", + redirectUriType: RedirectURITypeEnum.Authorization, }; @property({ type: String, useDefault: true }) @@ -48,13 +49,13 @@ export class OAuth2ProviderRedirectURI extends AkControlElement { @queryAll(".ak-form-control") controls?: HTMLInputElement[]; - json() { + toJSON(): RedirectURI { return Object.fromEntries( Array.from(this.controls ?? []).map((control) => [control.name, control.value]), ) as unknown as RedirectURI; } - get isValid() { + get valid() { return true; } @@ -82,6 +83,25 @@ export class OAuth2ProviderRedirectURI extends AkControlElement { ${msg("Regex")} +
    -
    - - -
    + +
    @@ -186,11 +197,8 @@ export class OAuth2ProviderViewPage extends AKElement { } renderTabOverview(): SlottedTemplateResult { - if (!this.provider) { - return nothing; - } const [appLabel, modelName] = ModelEnum.AuthentikProvidersOauth2Oauth2provider.split("."); - return html` ${this.provider?.assignedApplicationName + return html`${this.provider?.assignedApplicationName ? nothing : html`
    ${msg("Warning: Provider is not used by an Application.")} @@ -199,116 +207,49 @@ export class OAuth2ProviderViewPage extends AKElement {
    +
    ${msg("Info")}
    -
    -
    -
    - ${msg("Name")} -
    -
    -
    - ${this.provider.name} -
    -
    -
    -
    -
    - ${msg("Assigned to application")} -
    -
    -
    - - -
    -
    -
    -
    -
    - ${msg("Client type")} -
    -
    -
    - ${TypeToLabel(this.provider.clientType)} -
    -
    -
    -
    -
    - ${msg("Client ID")} -
    -
    -
    - ${this.provider.clientId} -
    -
    -
    -
    -
    - ${msg("Redirect URIs")} -
    -
    -
    -
      - ${this.provider.redirectUris.map((ru) => { - return html`
    • - ${ru.matchingMode}: ${ru.url} -
    • `; - })} -
    -
    -
    -
    -
    -
    - ${msg("Logout URI")} -
    -
    -
    - ${this.provider.logoutUri} -
    -
    -
    - ${msg("Logout Method")} -
    -
    -
    - ${this.provider.logoutMethod === - OAuth2ProviderLogoutMethodEnum.Backchannel - ? msg("Back-channel") - : this.provider.logoutMethod === - OAuth2ProviderLogoutMethodEnum.Frontchannel - ? msg("Front-channel") - : msg("")} -
    -
    -
    -
    -
    -
    @@ -348,7 +289,11 @@ export class OAuth2ProviderViewPage extends AKElement { value="${this.providerUrls?.issuer || msg("-")}" />
    -
    + +
    +
    +
    +
    diff --git a/web/src/admin/providers/proxy/ProxyProviderFormForm.ts b/web/src/admin/providers/proxy/ProxyProviderFormForm.ts index da43a21f49..49e5ab5f71 100644 --- a/web/src/admin/providers/proxy/ProxyProviderFormForm.ts +++ b/web/src/admin/providers/proxy/ProxyProviderFormForm.ts @@ -21,12 +21,7 @@ import { oauth2SourcesSelector, } from "#admin/providers/oauth2/OAuth2Sources"; -import { - FlowsInstancesListDesignationEnum, - ProxyMode, - ProxyProvider, - ValidationError, -} from "@goauthentik/api"; +import { FlowDesignationEnum, ProxyMode, ProxyProvider, ValidationError } from "@goauthentik/api"; import { match } from "ts-pattern"; @@ -225,12 +220,12 @@ export function renderForm({ provider = {}, errors = {}, args }: ProxyProviderFo > @@ -339,7 +334,7 @@ ${provider.skipPathRegex}

    @@ -374,12 +369,12 @@ ${provider.skipPathRegex}

    -
    - - -
    + +
    @@ -380,7 +372,7 @@ export class ProxyProviderViewPage extends AKElement {
    - - `; + `; } } diff --git a/web/src/admin/providers/rac/EndpointList.ts b/web/src/admin/providers/rac/EndpointList.ts index ee10fad8d8..00bc14a456 100644 --- a/web/src/admin/providers/rac/EndpointList.ts +++ b/web/src/admin/providers/rac/EndpointList.ts @@ -8,39 +8,38 @@ import "@patternfly/elements/pf-tooltip/pf-tooltip.js"; import { DEFAULT_CONFIG } from "#common/api/config"; +import { IconEditButton, ModalInvokerButton } from "#elements/dialogs"; import { PaginatedResponse, Table, TableColumn } from "#elements/table/Table"; import { SlottedTemplateResult } from "#elements/types"; -import { - Endpoint, - RacApi, - RACProvider, - RbacPermissionsAssignedByRolesListModelEnum, -} from "@goauthentik/api"; +import { EndpointForm } from "#admin/providers/rac/EndpointForm"; + +import { Endpoint, ModelEnum, RacApi, RACProvider } from "@goauthentik/api"; import { msg } from "@lit/localize"; -import { CSSResult, html, TemplateResult } from "lit"; +import { CSSResult, html } from "lit"; import { customElement, property } from "lit/decorators.js"; import PFDescriptionList from "@patternfly/patternfly/components/DescriptionList/description-list.css"; @customElement("ak-rac-endpoint-list") export class EndpointListPage extends Table { - expandable = true; - checkbox = true; - clearOnRefresh = true; + public static styles: CSSResult[] = [...super.styles, PFDescriptionList]; protected override searchEnabled = true; + protected override emptyStateMessage = msg("Create an endpoint to get started."); - @property() - order = "name"; + public override expandable = true; + public override checkbox = true; + public override clearOnRefresh = true; + + public override searchPlaceholder = msg("Search for an endpoint by name or host..."); + public override order = "name"; @property({ attribute: false }) - provider?: RACProvider; + public provider: RACProvider | null = null; - static styles: CSSResult[] = [...super.styles, PFDescriptionList]; - - async apiEndpoint(): Promise> { + protected override async apiEndpoint(): Promise> { return new RacApi(DEFAULT_CONFIG).racEndpointsList({ ...(await this.defaultEndpointConfig()), provider: this.provider?.pk, @@ -48,13 +47,13 @@ export class EndpointListPage extends Table { }); } - protected columns: TableColumn[] = [ + protected override columns: TableColumn[] = [ [msg("Name"), "name"], [msg("Host"), "host"], [msg("Actions"), null, msg("Row Actions")], ]; - renderToolbarSelected(): TemplateResult { + protected override renderToolbarSelected(): SlottedTemplateResult { const disabled = this.selectedElements.length < 1; return html` { `; } - row(item: Endpoint): SlottedTemplateResult[] { + protected override row(item: Endpoint): SlottedTemplateResult[] { return [ - html`${item.name}`, - html`${item.host}`, - html`
    - - ${msg("Update")} - ${msg("Update Endpoint")} - - - - + item.name, + item.host, + html`
    + ${IconEditButton(EndpointForm, item.pk)} + @@ -107,7 +97,7 @@ export class EndpointListPage extends Table { ]; } - renderExpanded(item: Endpoint): TemplateResult { + protected override renderExpanded(item: Endpoint): SlottedTemplateResult { return html`

    ${msg( @@ -118,16 +108,10 @@ export class EndpointListPage extends Table {

    `; } - renderObjectCreate(): TemplateResult { - return html` - - ${msg("Create")} - ${msg("Create Endpoint")} - - - - - `; + protected override renderObjectCreate(): SlottedTemplateResult { + return ModalInvokerButton(EndpointForm, { + providerID: this.provider?.pk, + }); } } diff --git a/web/src/admin/providers/rac/RACProviderForm.ts b/web/src/admin/providers/rac/RACProviderForm.ts index 073975eff1..d1e5593122 100644 --- a/web/src/admin/providers/rac/RACProviderForm.ts +++ b/web/src/admin/providers/rac/RACProviderForm.ts @@ -16,7 +16,7 @@ import { DEFAULT_CONFIG } from "#common/api/config"; import { ModelForm } from "#elements/forms/ModelForm"; -import { FlowsInstancesListDesignationEnum, ProvidersApi, RACProvider } from "@goauthentik/api"; +import { FlowDesignationEnum, ProvidersApi, RACProvider } from "@goauthentik/api"; import YAML from "yaml"; @@ -67,11 +67,11 @@ export class RACProviderFormPage extends ModelForm { diff --git a/web/src/admin/providers/rac/RACProviderViewPage.ts b/web/src/admin/providers/rac/RACProviderViewPage.ts index fdf5a40175..0106c026dd 100644 --- a/web/src/admin/providers/rac/RACProviderViewPage.ts +++ b/web/src/admin/providers/rac/RACProviderViewPage.ts @@ -3,9 +3,9 @@ import "#admin/providers/rac/ConnectionTokenList"; import "#admin/providers/rac/EndpointForm"; import "#admin/providers/rac/EndpointList"; import "#admin/providers/rac/RACProviderForm"; -import "#admin/rbac/ObjectPermissionsPage"; +import "#admin/rbac/ak-rbac-object-permission-page"; import "#components/ak-status-label"; -import "#components/events/ObjectChangelog"; +import "#admin/events/ObjectChangelog"; import "#elements/CodeMirror"; import "#elements/Tabs"; import "#elements/buttons/ModalButton"; @@ -17,14 +17,10 @@ import { EVENT_REFRESH } from "#common/constants"; import { AKElement } from "#elements/Base"; import { SlottedTemplateResult } from "#elements/types"; -import { - ProvidersApi, - RACProvider, - RbacPermissionsAssignedByRolesListModelEnum, -} from "@goauthentik/api"; +import { ModelEnum, ProvidersApi, RACProvider } from "@goauthentik/api"; import { msg } from "@lit/localize"; -import { CSSResult, html, nothing, PropertyValues } from "lit"; +import { CSSResult, html, PropertyValues } from "lit"; import { customElement, property, state } from "lit/decorators.js"; import PFBanner from "@patternfly/patternfly/components/Banner/banner.css"; @@ -40,12 +36,6 @@ import PFGrid from "@patternfly/patternfly/layouts/Grid/grid.css"; @customElement("ak-provider-rac-view") export class RACProviderViewPage extends AKElement { - @property({ type: Number }) - providerID?: number; - - @state() - provider?: RACProvider; - static styles: CSSResult[] = [ PFButton, PFPage, @@ -59,6 +49,12 @@ export class RACProviderViewPage extends AKElement { PFBanner, ]; + @property({ type: Number }) + public providerID?: number; + + @state() + protected provider?: RACProvider; + constructor() { super(); this.addEventListener(EVENT_REFRESH, () => { @@ -67,22 +63,23 @@ export class RACProviderViewPage extends AKElement { }); } - fetchProvider(id: number) { - new ProvidersApi(DEFAULT_CONFIG) + protected fetchProvider(id: number) { + return new ProvidersApi(DEFAULT_CONFIG) .providersRacRetrieve({ id }) .then((prov) => (this.provider = prov)); } - willUpdate(changedProperties: PropertyValues) { + protected override willUpdate(changedProperties: PropertyValues) { if (changedProperties.has("providerID") && this.providerID) { this.fetchProvider(this.providerID); } } - render(): SlottedTemplateResult { + protected override render(): SlottedTemplateResult { if (!this.provider) { - return nothing; + return null; } + return html`
    -
    - -
    +
    -
    - - -
    + +
    `; } - renderTabOverview(): SlottedTemplateResult { + protected renderTabOverview(): SlottedTemplateResult { if (!this.provider) { - return nothing; + return null; } return html`${this.provider?.assignedApplicationName - ? nothing + ? null : html`
    ${msg("Warning: Provider is not used by an Application.")}
    `} @@ -155,7 +147,7 @@ export class RACProviderViewPage extends AKElement { ? html`
    ${msg("Warning: Provider is not used by any Outpost.")}
    ` - : nothing} + : null}
    @@ -188,7 +180,7 @@ export class RACProviderViewPage extends AKElement {
    ${msg("Endpoints")}
    -
    - -
    +
    `; } diff --git a/web/src/admin/providers/radius/RadiusProviderFormForm.ts b/web/src/admin/providers/radius/RadiusProviderFormForm.ts index cb6cfb1291..cd59e22c21 100644 --- a/web/src/admin/providers/radius/RadiusProviderFormForm.ts +++ b/web/src/admin/providers/radius/RadiusProviderFormForm.ts @@ -8,7 +8,7 @@ import "#components/ak-text-input"; import "#elements/forms/FormGroup"; import "#elements/forms/HorizontalFormElement"; import "#elements/forms/SearchSelect/index"; -import "#admin/common/ak-license-notice"; +import "#elements/LicenseNotice"; import { propertyMappingsProvider, propertyMappingsSelector } from "./RadiusProviderFormHelpers.js"; @@ -18,7 +18,7 @@ import { ifPresent } from "#elements/utils/attributes"; import { CurrentBrand, - FlowsInstancesListDesignationEnum, + FlowDesignationEnum, RadiusProvider, ValidationError, } from "@goauthentik/api"; @@ -36,9 +36,9 @@ const clientNetworksHelp = msg( ); export interface RADIUSProviderFormProps { - provider?: Partial; - errors?: ValidationError; - brand?: CurrentBrand; + provider?: Partial | null; + errors?: ValidationError | null; + brand?: CurrentBrand | null; } // All Provider objects have an Authorization flow, but not all providers have an Authentication @@ -48,7 +48,10 @@ export interface RADIUSProviderFormProps { // weird-- we're looking up Authentication flows, but we're storing them in the Authorization // field of the target Provider. -export function renderForm({ provider = {}, errors = {}, brand }: RADIUSProviderFormProps) { +export function renderForm({ provider, errors, brand }: RADIUSProviderFormProps) { + provider ||= {}; + errors ||= {}; + return html`
    diff --git a/web/src/admin/providers/saml/SAMLProviderFormForm.ts b/web/src/admin/providers/saml/SAMLProviderFormForm.ts index 16c6e2ded9..e084a2fd9c 100644 --- a/web/src/admin/providers/saml/SAMLProviderFormForm.ts +++ b/web/src/admin/providers/saml/SAMLProviderFormForm.ts @@ -13,6 +13,7 @@ import "#elements/utils/TimeDeltaHelp"; import { propertyMappingsProvider, propertyMappingsSelector } from "./SAMLProviderFormHelpers.js"; import { availableHashes, + DEFAULT_HASH_ALGORITHM, digestAlgorithmOptions, retrieveSignatureAlgorithm, SAMLSupportedKeyTypes, @@ -23,7 +24,7 @@ import { DEFAULT_CONFIG } from "#common/api/config"; import { RadioOption } from "#elements/forms/Radio"; import { - FlowsInstancesListDesignationEnum, + FlowDesignationEnum, KeyTypeEnum, PropertymappingsApi, PropertymappingsProviderSamlListRequest, @@ -128,8 +129,8 @@ function renderHasSlsUrl( `; } export interface SAMLProviderFormProps { - provider?: Partial; - errors?: ValidationError; + provider?: Partial | null; + errors?: ValidationError | null; setHasSigningKp: (ev: InputEvent) => void; hasSigningKp: boolean; signingKeyType: KeyTypeEnum | null; @@ -142,8 +143,8 @@ export interface SAMLProviderFormProps { } export function renderForm({ - provider = {}, - errors = {}, + provider, + errors, setHasSigningKp, hasSigningKp, signingKeyType, @@ -154,6 +155,9 @@ export function renderForm({ logoutMethod, setLogoutMethod, }: SAMLProviderFormProps) { + provider ||= {}; + errors ||= {}; + // Get available hash algorithms for the selected key type const keyType = signingKeyType ?? KeyTypeEnum.Rsa; @@ -166,11 +170,11 @@ export function renderForm({ > -

    @@ -252,12 +247,12 @@ export function renderForm({

    + ${hash} diff --git a/web/src/admin/providers/saml/SAMLProviderImportFormForm.ts b/web/src/admin/providers/saml/SAMLProviderImportFormForm.ts index bca3c7a82c..b92d2c60d2 100644 --- a/web/src/admin/providers/saml/SAMLProviderImportFormForm.ts +++ b/web/src/admin/providers/saml/SAMLProviderImportFormForm.ts @@ -3,7 +3,7 @@ import "#components/ak-text-input"; import "#elements/forms/HorizontalFormElement"; import { - FlowsInstancesListDesignationEnum, + FlowDesignationEnum, type ProvidersSamlImportMetadataCreateRequest, } from "@goauthentik/api"; @@ -14,18 +14,20 @@ export function renderForm(provider: Partial

    @@ -34,12 +36,12 @@ export function renderForm(provider: Partial

    diff --git a/web/src/admin/providers/saml/SAMLProviderOptions.ts b/web/src/admin/providers/saml/SAMLProviderOptions.ts index d5f4614697..afc3766a57 100644 --- a/web/src/admin/providers/saml/SAMLProviderOptions.ts +++ b/web/src/admin/providers/saml/SAMLProviderOptions.ts @@ -43,6 +43,8 @@ export const signatureAlgorithmOptions = toOptions([ export type HashAlgorithm = "SHA1" | "SHA256" | "SHA384" | "SHA512"; +export const DEFAULT_HASH_ALGORITHM: HashAlgorithm = "SHA256"; + export const availableHashes: HashAlgorithm[] = ["SHA1", "SHA256", "SHA384", "SHA512"]; export const SignatureFamilyByHashAlgorithm: Partial< diff --git a/web/src/admin/providers/saml/SAMLProviderViewPage.ts b/web/src/admin/providers/saml/SAMLProviderViewPage.ts index 43f5a88e78..70b6fff119 100644 --- a/web/src/admin/providers/saml/SAMLProviderViewPage.ts +++ b/web/src/admin/providers/saml/SAMLProviderViewPage.ts @@ -1,7 +1,7 @@ import "#admin/providers/RelatedApplicationButton"; import "#admin/providers/saml/SAMLProviderForm"; -import "#admin/rbac/ObjectPermissionsPage"; -import "#components/events/ObjectChangelog"; +import "#admin/rbac/ak-rbac-object-permission-page"; +import "#admin/events/ObjectChangelog"; import "#elements/CodeMirror"; import "#elements/EmptyState"; import "#elements/Tabs"; @@ -24,8 +24,8 @@ import { CoreApi, CoreUsersListRequest, CryptoApi, + ModelEnum, ProvidersApi, - RbacPermissionsAssignedByRolesListModelEnum, SAMLMetadata, SAMLProvider, User, @@ -259,23 +259,20 @@ export class SAMLProviderViewPage extends AKElement { class="pf-c-page__main-section pf-m-no-padding-mobile" >

    -
    - - -
    + +
    @@ -353,7 +350,7 @@ export class SAMLProviderViewPage extends AKElement {
    - ${this.provider.issuer} + ${this.provider.issuerOverride}
    @@ -361,7 +358,7 @@ export class SAMLProviderViewPage extends AKElement {
    -
    -
    - - +

    + ${msg( + "SAML provider endpoint. Use this URL for SP configuration.", + )} +

    -
    - - -
    -
    - -
    diff --git a/web/src/admin/providers/scim/SCIMProviderForm.ts b/web/src/admin/providers/scim/SCIMProviderForm.ts index d408eefc91..f82d28a998 100644 --- a/web/src/admin/providers/scim/SCIMProviderForm.ts +++ b/web/src/admin/providers/scim/SCIMProviderForm.ts @@ -28,7 +28,7 @@ export class SCIMProviderFormPage extends BaseProviderForm { }); } - get defaultInstance() { + public override createDefaultInstance(): SCIMProvider { return { authMode: SCIMAuthenticationModeEnum.Token, } as SCIMProvider; diff --git a/web/src/admin/providers/scim/SCIMProviderFormForm.ts b/web/src/admin/providers/scim/SCIMProviderFormForm.ts index 8341606721..f857b5df0f 100644 --- a/web/src/admin/providers/scim/SCIMProviderFormForm.ts +++ b/web/src/admin/providers/scim/SCIMProviderFormForm.ts @@ -7,7 +7,7 @@ import "#elements/forms/HorizontalFormElement"; import "#elements/forms/Radio"; import "#elements/forms/SearchSelect/index"; import "#elements/CodeMirror"; -import "#admin/common/ak-license-notice"; +import "#elements/LicenseNotice"; import "#components/ak-number-input"; import "#elements/utils/TimeDeltaHelp"; import "#components/ak-text-input"; @@ -93,17 +93,21 @@ export function renderAuth(provider?: Partial, errors: ValidationE case SCIMAuthenticationModeEnum.Token: return renderAuthToken(provider, errors); case SCIMAuthenticationModeEnum.Oauth: + case SCIMAuthenticationModeEnum.OauthInteractive: return renderAuthOAuth(provider, errors); } } export interface SCIMProviderFormProps { update: () => void; - provider?: Partial; - errors?: ValidationError; + provider?: Partial | null; + errors?: ValidationError | null; } -export function renderForm({ provider = {}, errors = {}, update }: SCIMProviderFormProps) { +export function renderForm({ provider, errors, update }: SCIMProviderFormProps) { + provider ||= {}; + errors ||= {}; + return html` `, }, + { + label: msg("OAuth (Interactive)"), + value: SCIMAuthenticationModeEnum.OauthInteractive, + description: html`${msg( + "Authenticate SCIM requests using OAuth, interactively authorized.", + )} `, + }, ]} >
    @@ -198,6 +208,18 @@ export function renderForm({ provider = {}, errors = {}, update }: SCIMProviderF value: CompatibilityModeEnum.Sfdc, description: html`${msg("Altered behavior for usage with Salesforce.")}`, }, + { + label: msg("Webex"), + value: CompatibilityModeEnum.Webex, + description: html`${msg("Altered behavior for usage with Cisco Webex.")}`, + }, + { + label: msg("vCenter"), + value: CompatibilityModeEnum.Vcenter, + description: html`${msg( + "Altered behavior for usage with VMware vCenter.", + )}`, + }, ]} help=${msg( "Alter authentik's behavior for vendor-specific SCIM implementations.", diff --git a/web/src/admin/providers/scim/SCIMProviderGroupList.ts b/web/src/admin/providers/scim/SCIMProviderGroupList.ts index 5629a7b053..6eda4408ae 100644 --- a/web/src/admin/providers/scim/SCIMProviderGroupList.ts +++ b/web/src/admin/providers/scim/SCIMProviderGroupList.ts @@ -1,6 +1,7 @@ import "#elements/forms/DeleteBulkForm"; import "#elements/forms/ModalForm"; import "#elements/sync/SyncObjectForm"; +import "#admin/common/ak-flow-search/ak-flow-search-no-default"; import { DEFAULT_CONFIG } from "#common/api/config"; @@ -30,7 +31,7 @@ export class SCIMProviderGroupList extends Table { clearOnRefresh = true; renderToolbar(): TemplateResult { - return html` + return html` ${msg("Sync")} ${msg("Sync Group")} { clearOnRefresh = true; renderToolbar(): TemplateResult { - return html` + return html` ${msg("Sync")} ${msg("Sync User")} { } protected override rowLabel(item: SCIMProviderUser): string { - return item.userObj.name || item.userObj.username; + return formatUserDisplayName(item.userObj); } protected columns: TableColumn[] = [ diff --git a/web/src/admin/providers/scim/SCIMProviderViewPage.ts b/web/src/admin/providers/scim/SCIMProviderViewPage.ts index 06fbef9b10..c54bfa36f5 100644 --- a/web/src/admin/providers/scim/SCIMProviderViewPage.ts +++ b/web/src/admin/providers/scim/SCIMProviderViewPage.ts @@ -2,9 +2,10 @@ import "#admin/providers/RelatedApplicationButton"; import "#admin/providers/scim/SCIMProviderForm"; import "#admin/providers/scim/SCIMProviderGroupList"; import "#admin/providers/scim/SCIMProviderUserList"; -import "#admin/rbac/ObjectPermissionsPage"; +import "#admin/rbac/ak-rbac-object-permission-page"; +import "#admin/rbac/ObjectPermissionModal"; import "#components/ak-status-label"; -import "#components/events/ObjectChangelog"; +import "#admin/events/ObjectChangelog"; import "#elements/Tabs"; import "#elements/ak-mdx/index"; import "#elements/buttons/ActionButton/index"; @@ -12,6 +13,7 @@ import "#elements/buttons/ModalButton"; import "#elements/sync/SyncStatusCard"; import "#elements/tasks/ScheduleList"; import "#elements/tasks/TaskList"; +import "#elements/timestamp/ak-timestamp"; import { DEFAULT_CONFIG } from "#common/api/config"; import { EVENT_REFRESH } from "#common/constants"; @@ -19,10 +21,12 @@ import { EVENT_REFRESH } from "#common/constants"; import { AKElement } from "#elements/Base"; import { SlottedTemplateResult } from "#elements/types"; +import renderDescriptionList from "#components/DescriptionList"; + import { ModelEnum, ProvidersApi, - RbacPermissionsAssignedByRolesListModelEnum, + SCIMAuthenticationModeEnum, SCIMProvider, } from "@goauthentik/api"; @@ -110,13 +114,11 @@ export class SCIMProviderViewPage extends AKElement { class="pf-c-page__main-section pf-m-no-padding-mobile" >
    -
    - - -
    + +
    `; } + renderSyncStatusExtra() { + if ( + this.provider?.authMode !== SCIMAuthenticationModeEnum.Oauth && + this.provider?.authMode !== SCIMAuthenticationModeEnum.OauthInteractive + ) + return nothing; + return html` +
    +
    + ${msg("OAuth Token last updated")} +
    +
    +
    + +
    +
    +
    +
    +
    + ${msg("OAuth Token expires")} +
    +
    +
    + +
    +
    +
    + `; + } + renderTabOverview(): SlottedTemplateResult { if (!this.provider) { return nothing; @@ -175,91 +212,94 @@ export class SCIMProviderViewPage extends AKElement { : nothing}
    +
    ${msg("Info")}
    -
    -
    -
    - ${msg("Name")} -
    -
    -
    - ${this.provider.name} -
    -
    -
    -
    -
    - ${msg("Assigned to application")}`, + ], + [ + msg("Dry-run"), + html``, + ], + [msg("URL"), this.provider.url], + [ + msg("Service Provider Config cache timeout"), + this.provider.serviceProviderConfigCacheTimeout, + ], + [ + msg("Related actions"), + html` + ${msg("Save Changes")} + ${msg("Update SCIM Provider")} + -
    -
    -
    - -
    -
    -
    -
    -
    - ${msg("Dry-run")} +
    -
    -
    - -
    -
    -
    -
    -
    - ${msg("URL")} -
    -
    -
    - ${this.provider.url} -
    -
    -
    -
    -
    - - ${msg("Service Provider Config cache timeout")} - -
    -
    -
    - ${this.provider.serviceProviderConfigCacheTimeout} -
    -
    -
    -
    -
    -
    -
    +
    + ${this.provider.authMode === SCIMAuthenticationModeEnum.OauthInteractive + ? html` +
    +
    + ${renderDescriptionList( + [ + [ + msg("OAuth Status"), + html` + ${msg("(Re-)authenticate")}`, + ], + [ + msg("OAuth Callback URL"), + html``, + ], + ], + { horizontal: true }, + )} +
    +
    + ` + : nothing} { return new ProvidersApi(DEFAULT_CONFIG).providersScimSyncStatusRetrieve( @@ -268,20 +308,20 @@ export class SCIMProviderViewPage extends AKElement { }, ); }} - > + > + ${this.renderSyncStatusExtra()} +
    ${msg("Schedules")}
    -
    - -
    +
    @@ -289,13 +329,11 @@ export class SCIMProviderViewPage extends AKElement {
    ${msg("Tasks")}
    -
    - -
    +
    { >

    ${msg("Key used to sign the events.")}

    + + {
    -
    - - -
    + +
    @@ -126,72 +120,69 @@ export class SSFProviderViewPage extends AKElement { return nothing; } const [appLabel, modelName] = ModelEnum.AuthentikProvidersSsfSsfprovider.split("."); - return html`
    - ${msg("SSF Provider is in preview.")} - ${msg("Send us feedback!")} -
    -
    -
    -
    -
    -
    -
    - ${msg("Name")} -
    -
    -
    - ${this.provider.name} -
    -
    -
    -
    -
    - ${msg("URL")} -
    -
    -
    - -
    -
    -
    -
    -
    - + `, + ], + ])}
    -
    -
    ${msg("Streams")}
    - - -
    -
    -
    ${msg("Tasks")}
    - -
    -
    `; +
    +
    +
    ${msg("Streams")}
    + + +
    +
    +
    ${msg("Tasks")}
    + +
    +
    `; } } diff --git a/web/src/admin/providers/ssf/StreamTable.ts b/web/src/admin/providers/ssf/StreamTable.ts index cb888515dd..183530c448 100644 --- a/web/src/admin/providers/ssf/StreamTable.ts +++ b/web/src/admin/providers/ssf/StreamTable.ts @@ -8,17 +8,24 @@ import { DEFAULT_CONFIG } from "#common/api/config"; import { PaginatedResponse, Table, TableColumn } from "#elements/table/Table"; import { SlottedTemplateResult } from "#elements/types"; +import renderDescriptionList from "#components/DescriptionList"; + +import { SSFDeliveryMethodToLabel } from "#admin/providers/ssf/utils"; + import { SsfApi, SSFStream } from "@goauthentik/api"; import { msg } from "@lit/localize"; -import { html } from "lit"; +import { CSSResult, html, TemplateResult } from "lit"; import { customElement, property } from "lit/decorators.js"; +import PFDescriptionList from "@patternfly/patternfly/components/DescriptionList/description-list.css"; + @customElement("ak-provider-ssf-stream-list") export class SSFProviderStreamList extends Table { protected override searchEnabled = true; - checkbox = true; - clearOnRefresh = true; + public checkbox: boolean = true; + public clearOnRefresh: boolean = true; + public expandable: boolean = true; @property({ type: Number }) providerId?: number; @@ -26,13 +33,43 @@ export class SSFProviderStreamList extends Table { @property() order = "name"; + static styles: CSSResult[] = [...super.styles, PFDescriptionList]; + async apiEndpoint(): Promise> { return new SsfApi(DEFAULT_CONFIG).ssfStreamsList({ provider: this.providerId, ...(await this.defaultEndpointConfig()), + pageSize: 10, }); } + protected override renderToolbarSelected(): TemplateResult { + const disabled = this.selectedElements.length < 1; + return html` { + return new SsfApi(DEFAULT_CONFIG).ssfStreamsDestroy({ + uuid: item.pk, + }); + }} + .metadata=${(item: SSFStream) => { + return [ + { key: msg("Audience"), value: item.aud }, + { + key: msg("Delivery method"), + value: SSFDeliveryMethodToLabel(item.deliveryMethod), + }, + { key: msg("Endpoint"), value: item.endpointUrl ?? "-" }, + ]; + }} + > + + `; + } + protected override rowLabel(item: SSFStream): string | null { return item.aud?.join(", ") ?? null; } @@ -40,10 +77,18 @@ export class SSFProviderStreamList extends Table { protected columns: TableColumn[] = [ // --- [msg("Audience"), "aud"], + [msg("Delivery Method"), "delivery_method"], ]; + protected renderExpanded(item: SSFStream): SlottedTemplateResult { + return html`${renderDescriptionList([ + [msg("Delivery method"), html`${SSFDeliveryMethodToLabel(item.deliveryMethod)}`], + [msg("Endpoint"), html`${item.endpointUrl ?? "-"}`], + ])}`; + } + row(item: SSFStream): SlottedTemplateResult[] { - return [html`${item.aud}`]; + return [html`${item.aud}`, html`${SSFDeliveryMethodToLabel(item.deliveryMethod)}`]; } } diff --git a/web/src/admin/providers/ssf/utils.ts b/web/src/admin/providers/ssf/utils.ts new file mode 100644 index 0000000000..b47eab0854 --- /dev/null +++ b/web/src/admin/providers/ssf/utils.ts @@ -0,0 +1,16 @@ +import { DeliveryMethodEnum } from "@goauthentik/api"; + +import { msg } from "@lit/localize"; + +export function SSFDeliveryMethodToLabel(method?: DeliveryMethodEnum): string { + if (!method) return ""; + switch (method) { + case DeliveryMethodEnum.HttpsSchemasOpenidNetSeceventRiscDeliveryMethodPoll: + case DeliveryMethodEnum.UrnIetfRfc8936: + return msg("Pull"); + case DeliveryMethodEnum.HttpsSchemasOpenidNetSeceventRiscDeliveryMethodPush: + case DeliveryMethodEnum.UrnIetfRfc8935: + return msg("Push"); + } + return ""; +} diff --git a/web/src/admin/providers/wsfed/WSFederationProviderForm.ts b/web/src/admin/providers/wsfed/WSFederationProviderForm.ts index 9d3d0c05b9..9f76cb3086 100644 --- a/web/src/admin/providers/wsfed/WSFederationProviderForm.ts +++ b/web/src/admin/providers/wsfed/WSFederationProviderForm.ts @@ -1,56 +1,25 @@ -import "#admin/common/ak-crypto-certificate-search"; -import "#components/ak-text-input"; -import "#elements/ak-dual-select/ak-dual-select-dynamic-selected-provider"; -import "#elements/ak-dual-select/ak-dual-select-provider"; import "#elements/forms/FormGroup"; -import "#elements/forms/HorizontalFormElement"; -import "#elements/forms/SearchSelect/index"; -import "#elements/utils/TimeDeltaHelp"; -import "#components/ak-radio-input"; -import "#components/ak-switch-input"; -import "#admin/common/ak-flow-search/ak-flow-search"; -import "#elements/forms/Radio"; + +import { renderForm } from "./WSFederationProviderFormForm.js"; import { DEFAULT_CONFIG } from "#common/api/config"; import AkCryptoCertificateSearch from "#admin/common/ak-crypto-certificate-search"; import { BaseProviderForm } from "#admin/providers/BaseProviderForm"; -import { - propertyMappingsProvider, - propertyMappingsSelector, -} from "#admin/providers/saml/SAMLProviderFormHelpers"; -import { - digestAlgorithmOptions, - signatureAlgorithmOptions, -} from "#admin/providers/saml/SAMLProviderOptions"; -import { - FlowsInstancesListDesignationEnum, - PropertymappingsApi, - PropertymappingsProviderSamlListRequest, - ProvidersApi, - SAMLNameIDPolicyEnum, - SAMLPropertyMapping, - WSFederationProvider, -} from "@goauthentik/api"; +import { KeyTypeEnum, ProvidersApi, WSFederationProvider } from "@goauthentik/api"; -import { msg } from "@lit/localize"; -import { html, nothing, TemplateResult } from "lit"; +import { html, TemplateResult } from "lit"; import { customElement, state } from "lit/decorators.js"; -import { ifDefined } from "lit/directives/if-defined.js"; - -/** - * Form page for SSF Authentication Method - * - * @element ak-provider-ssf-form - * - */ @customElement("ak-provider-wsfed-form") export class WSFederationProviderForm extends BaseProviderForm { @state() protected hasSigningKp = false; + @state() + protected signingKeyType: KeyTypeEnum | null = null; + async loadInstance(pk: number): Promise { const provider = await new ProvidersApi(DEFAULT_CONFIG).providersWsfedRetrieve({ id: pk, @@ -72,304 +41,19 @@ export class WSFederationProviderForm extends BaseProviderForm { + const target = ev.target as AkCryptoCertificateSearch; + if (!target) return; + this.hasSigningKp = !!target.selectedKeypair; + this.signingKeyType = target.selectedKeypair?.keyType ?? KeyTypeEnum.Rsa; + }; - return html` - - -

    - ${msg("Flow used when authorizing this this.instance?.")} -

    -
    - -
    - - -
    -
    - - -
    - - -

    - ${msg( - "Flow used when a user access this provider and is not authenticated.", - )} -

    -
    - - -

    - ${msg("Flow used when logging out of this this.instance?.")} -

    -
    -
    -
    - - -
    - - { - const target = ev.target as AkCryptoCertificateSearch; - if (!target) return; - this.hasSigningKp = !!target.selectedKeypair; - }} - singleton - > -

    - ${msg( - "Certificate used to sign outgoing Responses going to the Service this.instance?.", - )} -

    -
    - ${this.hasSigningKp - ? html` - - - ` - : nothing} - - - -

    - ${msg( - "When selected, assertions will be encrypted using this keypair.", - )} -

    -
    - - - - - => { - const args: PropertymappingsProviderSamlListRequest = { - ordering: "saml_name", - }; - if (query !== undefined) { - args.search = query; - } - const items = await new PropertymappingsApi( - DEFAULT_CONFIG, - ).propertymappingsProviderSamlList(args); - return items.results; - }} - .renderElement=${(item: SAMLPropertyMapping): string => { - return item.name; - }} - .value=${( - item: SAMLPropertyMapping | undefined, - ): string | undefined => { - return item?.pk; - }} - .selected=${(item: SAMLPropertyMapping): boolean => { - return this.instance?.nameIdMapping === item.pk; - }} - blankable - > - -

    - ${msg( - "Configure how the NameID value will be created. When left empty, the NameIDPolicy of the incoming request will be respected.", - )} -

    -
    - - => { - const args: PropertymappingsProviderSamlListRequest = { - ordering: "saml_name", - }; - if (query !== undefined) { - args.search = query; - } - const items = await new PropertymappingsApi( - DEFAULT_CONFIG, - ).propertymappingsProviderSamlList(args); - return items.results; - }} - .renderElement=${(item: SAMLPropertyMapping): string => { - return item.name; - }} - .value=${( - item: SAMLPropertyMapping | undefined, - ): string | undefined => { - return item?.pk; - }} - .selected=${(item: SAMLPropertyMapping): boolean => { - return this.instance?.authnContextClassRefMapping === item.pk; - }} - blankable - > - -

    - ${msg( - "Configure how the AuthnContextClassRef value will be created. When left empty, the AuthnContextClassRef will be set based on which authentication methods the user used to authenticate.", - )} -

    -
    - - - - -

    - ${msg( - "Configure the default NameID Policy used by IDP-initiated logins and when an incoming assertion doesn't specify a NameID Policy (also applies when using a custom NameID Mapping).", - )} -

    -
    - - - - - - -
    -
    `; + return html`${renderForm({ + provider: this.instance ?? {}, + setHasSigningKp, + hasSigningKp: this.hasSigningKp, + signingKeyType: this.signingKeyType, + })}`; } } diff --git a/web/src/admin/providers/wsfed/WSFederationProviderFormForm.ts b/web/src/admin/providers/wsfed/WSFederationProviderFormForm.ts new file mode 100644 index 0000000000..20d6e9c41c --- /dev/null +++ b/web/src/admin/providers/wsfed/WSFederationProviderFormForm.ts @@ -0,0 +1,342 @@ +import "#components/ak-text-input"; +import "#components/ak-radio-input"; +import "#components/ak-switch-input"; +import "#admin/common/ak-crypto-certificate-search"; +import "#admin/common/ak-flow-search/ak-flow-search"; +import "#elements/ak-dual-select/ak-dual-select-dynamic-selected-provider"; +import "#elements/forms/FormGroup"; +import "#elements/forms/HorizontalFormElement"; +import "#elements/forms/Radio"; +import "#elements/forms/SearchSelect/ak-search-select-ez"; +import "#elements/forms/SearchSelect/index"; + +import { DEFAULT_CONFIG } from "#common/api/config"; + +import { withQuery } from "#elements/forms/SearchSelect/utils"; + +import { + propertyMappingsProvider, + propertyMappingsSelector, +} from "#admin/providers/saml/SAMLProviderFormHelpers"; +import { + availableHashes, + DEFAULT_HASH_ALGORITHM, + digestAlgorithmOptions, + retrieveSignatureAlgorithm, + SAMLSupportedKeyTypes, +} from "#admin/providers/saml/SAMLProviderOptions"; + +import { + FlowDesignationEnum, + KeyTypeEnum, + PropertymappingsApi, + SAMLNameIDPolicyEnum, + SAMLPropertyMapping, + ValidationError, + WSFederationProvider, +} from "@goauthentik/api"; + +import { msg } from "@lit/localize"; +import { html, nothing } from "lit"; +import { ifDefined } from "lit/directives/if-defined.js"; + +const samlNameIDPolicyAndLabel = [ + [SAMLNameIDPolicyEnum.UrnOasisNamesTcSaml20NameidFormatPersistent, msg("Persistent")], + [SAMLNameIDPolicyEnum.UrnOasisNamesTcSaml11NameidFormatEmailAddress, msg("Email address")], + [ + SAMLNameIDPolicyEnum.UrnOasisNamesTcSaml20NameidFormatWindowsDomainQualifiedName, + msg("Windows"), + ], + [SAMLNameIDPolicyEnum.UrnOasisNamesTcSaml11NameidFormatX509SubjectName, msg("X509 Subject")], + [SAMLNameIDPolicyEnum.UrnOasisNamesTcSaml20NameidFormatTransient, msg("Transient")], +]; + +export interface WSFederationProviderFormProps { + provider?: Partial; + errors?: ValidationError; + setHasSigningKp: (ev: InputEvent) => void; + hasSigningKp: boolean; + signingKeyType: KeyTypeEnum | null; +} + +export function renderForm({ + provider = {}, + errors = {}, + setHasSigningKp, + hasSigningKp, + signingKeyType, +}: WSFederationProviderFormProps) { + const keyType = signingKeyType ?? KeyTypeEnum.Rsa; + const samlPropertyMappingSearch = async (query?: string) => + ( + await new PropertymappingsApi(DEFAULT_CONFIG).propertymappingsProviderSamlList( + withQuery(query, { ordering: "saml_name" }), + ) + ).results; + + const nameIdMappingConfig = { + fetchObjects: samlPropertyMappingSearch, + renderElement: (item: SAMLPropertyMapping) => item.name, + value: (item: SAMLPropertyMapping | undefined) => item?.pk, + selected: (item: SAMLPropertyMapping) => provider.nameIdMapping === item.pk, + }; + + const authnContextClassRefMappingConfig = { + fetchObjects: samlPropertyMappingSearch, + renderElement: (item: SAMLPropertyMapping) => item.name, + value: (item: SAMLPropertyMapping | undefined) => item?.pk, + selected: (item: SAMLPropertyMapping) => provider.authnContextClassRefMapping === item.pk, + }; + + return html` + + +

    + ${msg("Flow used when authorizing this provider.")} +

    +
    + + +
    + + +
    +
    + + +
    + + +

    + ${msg( + "Flow used when a user access this provider and is not authenticated.", + )} +

    +
    + + +

    + ${msg("Flow used when logging out of this provider.")} +

    +
    +
    +
    + + +
    + + +

    + ${msg( + "Certificate used to sign outgoing Responses going to the Service Provider.", + )} +

    +
    + ${hasSigningKp + ? html` + + + ` + : nothing} + + + +

    + ${msg("When selected, assertions will be encrypted using this keypair.")} +

    +
    + + + + + +

    + ${msg( + "Configure how the NameID value will be created. When left empty, the NameIDPolicy of the incoming request will be respected.", + )} +

    +
    + + +

    + ${msg( + "Configure how the AuthnContextClassRef value will be created. When left empty, the AuthnContextClassRef will be set based on which authentication methods the user used to authenticate.", + )} +

    +
    + + + + +

    + ${msg( + "Configure the default NameID Policy used by IDP-initiated logins and when an incoming assertion doesn't specify a NameID Policy (also applies when using a custom NameID Mapping).", + )} +

    +
    + + + + + + + + +
    +
    `; +} diff --git a/web/src/admin/providers/wsfed/WSFederationProviderViewPage.ts b/web/src/admin/providers/wsfed/WSFederationProviderViewPage.ts index df07c25078..6118b7c101 100644 --- a/web/src/admin/providers/wsfed/WSFederationProviderViewPage.ts +++ b/web/src/admin/providers/wsfed/WSFederationProviderViewPage.ts @@ -1,7 +1,7 @@ import "#admin/providers/RelatedApplicationButton"; import "#admin/providers/wsfed/WSFederationProviderForm"; -import "#admin/rbac/ObjectPermissionsPage"; -import "#components/events/ObjectChangelog"; +import "#admin/rbac/ak-rbac-object-permission-page"; +import "#admin/events/ObjectChangelog"; import "#elements/CodeMirror"; import "#elements/EmptyState"; import "#elements/Tabs"; @@ -26,8 +26,8 @@ import { CoreApi, CoreUsersListRequest, CryptoApi, + ModelEnum, ProvidersApi, - RbacPermissionsAssignedByRolesListModelEnum, SAMLMetadata, User, WSFederationProvider, @@ -240,23 +240,20 @@ export class WSFederationProviderViewPage extends AKElement { class="pf-c-page__main-section pf-m-no-padding-mobile" >
    -
    - - -
    + +
    @@ -293,7 +290,7 @@ export class WSFederationProviderViewPage extends AKElement {
    -
    - - -
    + +
    { + public override checkbox = true; + public override checkboxChip = true; + + protected override searchEnabled = true; + + public override order = "content_type__app_label,content_type__model"; + + protected override async apiEndpoint(): Promise> { + return new RbacApi(DEFAULT_CONFIG).rbacPermissionsList(await this.defaultEndpointConfig()); + } + + protected override groupBy(items: Permission[]): [string, Permission[]][] { + return groupBy(items, (perm) => { + return perm.appLabelVerbose; + }); + } + + protected override columns: TableColumn[] = [ + [msg("Name"), "codename"], + [msg("Model"), ""], + ]; + + protected override row(item: Permission): SlottedTemplateResult[] { + return [html`
    ${item.name}
    `, html`${item.modelVerbose}`]; + } + + protected override renderSelectedChip(item: Permission): SlottedTemplateResult { + return item.name; + } +} + +declare global { + interface HTMLElementTagNameMap { + "ak-rbac-permission-table": RBACPermissionTable; + } +} diff --git a/web/src/admin/rbac/RoleObjectPermissionForm.ts b/web/src/admin/rbac/ak-rbac-role-object-permission-form.ts similarity index 87% rename from web/src/admin/rbac/RoleObjectPermissionForm.ts rename to web/src/admin/rbac/ak-rbac-role-object-permission-form.ts index 7127312214..25aa3c02b7 100644 --- a/web/src/admin/rbac/RoleObjectPermissionForm.ts +++ b/web/src/admin/rbac/ak-rbac-role-object-permission-form.ts @@ -18,7 +18,7 @@ import { } from "@goauthentik/api"; import { msg } from "@lit/localize"; -import { html, nothing } from "lit"; +import { html } from "lit"; import { customElement, property, state } from "lit/decorators.js"; interface RoleAssignData { @@ -30,11 +30,19 @@ interface RoleAssignData { @customElement("ak-rbac-role-object-permission-form") export class RoleObjectPermissionForm extends ModelForm { - @property() - public model?: ModelEnum; + public static override verboseName = msg("Role Object Permission"); + public static override verboseNamePlural = msg("Role Object Permissions"); + public static override createLabel = msg("Assign"); + public static override submitVerb = msg("Assign"); - @property() - public objectPk?: string; + @property({ type: String }) + public model: ModelEnum | null = null; + + @property({ + attribute: "object-pk", + useDefault: true, + }) + public objectPk: string | null = null; @state() protected modelPermissions: PaginatedPermissionList | null = null; @@ -64,6 +72,7 @@ export class RoleObjectPermissionForm extends ModelForm send(data: RoleAssignData): Promise { const [app, _model] = this.model?.split(".") || ""; + return new RbacApi(DEFAULT_CONFIG).rbacPermissionsAssignedByRolesAssign({ uuid: data.role, permissionAssignRequest: { @@ -71,15 +80,16 @@ export class RoleObjectPermissionForm extends ModelForm .filter((key) => data.permissions[key]) .map((permission) => `${app}.${permission}`), model: this.model!, - objectPk: this.objectPk, + objectPk: this.objectPk ?? undefined, }, }); } renderForm(): SlottedTemplateResult { if (!this.modelPermissions) { - return nothing; + return null; } + return html`${msg( "Choose the object permissions that you want the selected role to have on this object. These object permissions are in addition to any global permissions already within the role.", @@ -88,6 +98,7 @@ export class RoleObjectPermissionForm extends ModelForm
    => { const args: RbacRolesListRequest = { ordering: "name", diff --git a/web/src/admin/rbac/RoleObjectPermissionTable.ts b/web/src/admin/rbac/ak-rbac-role-object-permission-table.ts similarity index 73% rename from web/src/admin/rbac/RoleObjectPermissionTable.ts rename to web/src/admin/rbac/ak-rbac-role-object-permission-table.ts index 198b06fee0..a9d5744917 100644 --- a/web/src/admin/rbac/RoleObjectPermissionTable.ts +++ b/web/src/admin/rbac/ak-rbac-role-object-permission-table.ts @@ -1,60 +1,50 @@ -import "#admin/rbac/RoleObjectPermissionForm"; +import "#admin/rbac/ak-rbac-role-object-permission-form"; import "#elements/forms/DeleteBulkForm"; import "#elements/forms/ModalForm"; import "@patternfly/elements/pf-tooltip/pf-tooltip.js"; import { DEFAULT_CONFIG } from "#common/api/config"; +import { createPaginatedResponse } from "#common/api/responses"; +import { ModalInvokerButton } from "#elements/dialogs"; import { PaginatedResponse, Table, TableColumn } from "#elements/table/Table"; import { SlottedTemplateResult } from "#elements/types"; -import { ifPresent } from "#elements/utils/attributes"; -import type { Pagination } from "@goauthentik/api"; +import { RoleObjectPermissionForm } from "#admin/rbac/ak-rbac-role-object-permission-form"; + import { + ModelEnum, PaginatedPermissionList, RbacApi, - RbacPermissionsAssignedByRolesListModelEnum, RoleAssignedObjectPermission, } from "@goauthentik/api"; import { msg } from "@lit/localize"; -import { html, TemplateResult } from "lit"; +import { html } from "lit"; import { customElement, property, state } from "lit/decorators.js"; -const FALLBACK_PAGINATED_RESPONSE: { pagination: Pagination; results: [] } = { - pagination: { - next: 0, - previous: 0, - count: 0, - current: 1, - totalPages: 1, - startIndex: 0, - endIndex: 0, - }, - results: [], -}; - @customElement("ak-rbac-role-object-permission-table") export class RoleAssignedObjectPermissionTable extends Table { @property({ type: String }) - public model: RbacPermissionsAssignedByRolesListModelEnum | null = null; + public model: ModelEnum | null = null; - // TODO: Use attribute casing. - // @property({ attribute: "object-pk" }) - @property() - public objectPk?: string | number; + // TODO: Switch this to attribute-casing when we all the RBAC components are settled. + @property({ type: String, attribute: "objectPk" }) + public objectPk: string | null = null; @state() - modelPermissions?: PaginatedPermissionList; + protected modelPermissions?: PaginatedPermissionList; - checkbox = true; - clearOnRefresh = true; + public override checkbox = true; + public override clearOnRefresh = true; protected override searchEnabled = true; - async apiEndpoint(): Promise> { + protected override async apiEndpoint(): Promise< + PaginatedResponse + > { if (!this.objectPk || !this.model) { - return FALLBACK_PAGINATED_RESPONSE; + return createPaginatedResponse([]); } const perms = await new RbacApi(DEFAULT_CONFIG).rbacPermissionsAssignedByRolesList({ ...(await this.defaultEndpointConfig()), @@ -86,23 +76,14 @@ export class RoleAssignedObjectPermissionTable extends Table - ${msg("Assign")} - ${msg("Assign object permissions to role")} - - - - `; + protected override renderObjectCreate(): SlottedTemplateResult { + return ModalInvokerButton(RoleObjectPermissionForm, { + model: this.model, + objectPk: this.objectPk, + }); } - renderToolbarSelected(): TemplateResult { + protected override renderToolbarSelected(): SlottedTemplateResult { const disabled = this.selectedElements.length < 1; return html``; } - row(item: RoleAssignedObjectPermission): SlottedTemplateResult[] { + protected override row(item: RoleAssignedObjectPermission): SlottedTemplateResult[] { const baseRow = [html` ${item.name}`]; this.modelPermissions?.results.forEach((perm) => { const assignedToModel = item.modelPermissions.some( diff --git a/web/src/admin/reports/ExportButton.ts b/web/src/admin/reports/ExportButton.ts index 1e48118142..ef0648c430 100644 --- a/web/src/admin/reports/ExportButton.ts +++ b/web/src/admin/reports/ExportButton.ts @@ -110,7 +110,7 @@ export class ExportButton extends WithCapabilitiesConfig( this.params = params; }); }} - action=${msg("Start export")} + action=${msg("Start Export")} actionLevel="pf-m-primary" ?non-submittable=${!this.can(CapabilitiesEnum.CanSaveReports)} > diff --git a/web/src/admin/roles/RelatedRoleList.ts b/web/src/admin/roles/ak-related-role-table.ts similarity index 68% rename from web/src/admin/roles/RelatedRoleList.ts rename to web/src/admin/roles/ak-related-role-table.ts index 9d241ee0a9..b0b630f00f 100644 --- a/web/src/admin/roles/RelatedRoleList.ts +++ b/web/src/admin/roles/ak-related-role-table.ts @@ -1,5 +1,5 @@ -import "#admin/roles/RoleForm"; -import "#admin/users/RoleSelectModal"; +import "#admin/roles/ak-role-form"; +import "#admin/users/ak-user-role-table"; import "#components/ak-status-label"; import "#elements/buttons/SpinnerButton/index"; import "#elements/forms/DeleteBulkForm"; @@ -9,19 +9,27 @@ import "@patternfly/elements/pf-tooltip/pf-tooltip.js"; import { DEFAULT_CONFIG } from "#common/api/config"; -import { Form } from "#elements/forms/Form"; +import { renderModal } from "#elements/dialogs"; +import { AKFormSubmitEvent, Form } from "#elements/forms/Form"; import { PaginatedResponse, Table, TableColumn } from "#elements/table/Table"; import { SlottedTemplateResult } from "#elements/types"; import { ifPresent } from "#elements/utils/attributes"; +import { RoleForm } from "#admin/roles/ak-role-form"; + import { Group, RbacApi, Role, User } from "@goauthentik/api"; import { msg, str } from "@lit/localize"; import { html, nothing, PropertyValues, TemplateResult } from "lit"; import { customElement, property, state } from "lit/decorators.js"; -@customElement("ak-role-related-add") -export class RelatedRoleAdd extends Form<{ roles: string[] }> { +//#region Related Role Form + +@customElement("ak-add-related-role-form") +export class AddRelatedRoleForm extends Form<{ roles: string[] }> { + public static override verboseName = msg("Role"); + public static override verboseNamePlural = msg("Roles"); + #api = new RbacApi(DEFAULT_CONFIG); @property({ attribute: false }) @@ -49,23 +57,36 @@ export class RelatedRoleAdd extends Form<{ roles: string[] }> { return data; } + protected openRolesSelectionModal = () => { + return renderModal(html` + ) => { + this.rolesToAdd = event.target.toJSON(); + }} + > + + `); + }; + protected override renderForm(): TemplateResult { return html`
    - { - this.rolesToAdd = items; - return Promise.resolve(); - }} + - + + + +
    - + ${this.rolesToAdd.map((role) => { return html` { } } -@customElement("ak-role-related-list") -export class RelatedRoleList extends Table { +//#endregion + +//#region Related Role List + +@customElement("ak-related-role-table") +export class RelatedRoleTable extends Table { #api = new RbacApi(DEFAULT_CONFIG); checkbox = true; @@ -143,6 +168,14 @@ export class RelatedRoleList extends Table { ]; } + protected openAddExistingRoleModal = () => { + if (!this.targetUser) return; + + return renderModal( + html``, + ); + }; + renderToolbarSelected(): SlottedTemplateResult { // Don't render Remove button in showInherited mode (view-only) if (this.showInherited) { @@ -151,7 +184,7 @@ export class RelatedRoleList extends Table { const disabled = !this.selectedElements.length; return html` { return false; } - row(item: Role): SlottedTemplateResult[] { + protected row(item: Role): SlottedTemplateResult[] { const inherited = this.showInherited && this.isInherited(item); const inheritedTooltip = this.targetGroup ? msg("Inherited from parent group") @@ -212,52 +245,51 @@ export class RelatedRoleList extends Table { return [ nameCell, - html` - ${msg("Update")} - ${msg("Update Role")} - - - `, + html``, ]; } - renderToolbar(): TemplateResult { + renderToolbar(): SlottedTemplateResult { // Hide add buttons in showInherited mode (view-only) if (this.showInherited || this.targetGroup) { - return html`${super.renderToolbar()}`; + return super.renderToolbar(); } - return html` - ${this.targetUser - ? html` - ${msg("Add")} - ${msg("Add Role")} - - - - ` - : nothing} - - ${msg("Create")} - ${msg("Create Role")} - - - - ${super.renderToolbar()} - `; + + return [ + this.targetUser + ? html`` + : nothing, + html` `, + super.renderToolbar(), + ]; } } +//#endregion + declare global { interface HTMLElementTagNameMap { - "ak-role-related-list": RelatedRoleList; - "ak-role-related-add": RelatedRoleAdd; + "ak-related-role-table": RelatedRoleTable; + "ak-add-related-role-form": AddRelatedRoleForm; } } diff --git a/web/src/admin/roles/RoleAssignedGlobalPermissionsTable.ts b/web/src/admin/roles/ak-role-assigned-global-permissions-table.ts similarity index 75% rename from web/src/admin/roles/RoleAssignedGlobalPermissionsTable.ts rename to web/src/admin/roles/ak-role-assigned-global-permissions-table.ts index ac137946b5..821c9f5dbb 100644 --- a/web/src/admin/roles/RoleAssignedGlobalPermissionsTable.ts +++ b/web/src/admin/roles/ak-role-assigned-global-permissions-table.ts @@ -1,5 +1,5 @@ import "#elements/forms/DeleteBulkForm"; -import "#admin/roles/RolePermissionForm"; +import "#admin/roles/ak-role-permission-form"; import "#elements/forms/ModalForm"; import { DEFAULT_CONFIG } from "#common/api/config"; @@ -7,52 +7,52 @@ import { groupBy } from "#common/utils"; import { PaginatedResponse, Table, TableColumn } from "#elements/table/Table"; import { SlottedTemplateResult } from "#elements/types"; +import { ifPresent } from "#elements/utils/attributes"; import { Permission, RbacApi } from "@goauthentik/api"; import { msg } from "@lit/localize"; -import { html, TemplateResult } from "lit"; +import { html } from "lit"; import { customElement, property } from "lit/decorators.js"; -import { ifDefined } from "lit/directives/if-defined.js"; @customElement("ak-role-assigned-global-permissions-table") export class RoleAssignedGlobalPermissionsTable extends Table { - @property() - roleUuid?: string; + @property({ type: String, attribute: "role-uuid" }) + public roleUuid: string | null = null; protected override searchEnabled = true; - checkbox = true; - clearOnRefresh = true; + public override checkbox = true; + public override clearOnRefresh = true; - order = "content_type__app_label,content_type__model"; + public override order = "content_type__app_label,content_type__model"; - async apiEndpoint(): Promise> { + protected override async apiEndpoint(): Promise> { return new RbacApi(DEFAULT_CONFIG).rbacPermissionsList({ ...(await this.defaultEndpointConfig()), - role: this.roleUuid, + role: this.roleUuid ?? undefined, }); } - groupBy(items: Permission[]): [string, Permission[]][] { + protected override groupBy(items: Permission[]): [string, Permission[]][] { return groupBy(items, (obj) => { return obj.appLabelVerbose; }); } - protected columns: TableColumn[] = [ + protected override columns: TableColumn[] = [ // --- [msg("Model"), "model"], [msg("Permission"), ""], ["", null, msg("Assigned to role")], ]; - renderObjectCreate(): TemplateResult { + protected renderObjectCreate(): SlottedTemplateResult { return html` ${msg("Assign")} ${msg("Assign permission to role")} - + - -
    `, + html`
    ${IconEditButton(RoleForm, item.pk)}
    `, ]; } - renderObjectCreate(): TemplateResult { - return html` - - ${msg("Create")} - ${msg("Create Role")} - - - - `; + protected override renderObjectCreate(): SlottedTemplateResult { + return ModalInvokerButton(RoleForm); } renderToolbarAfter(): TemplateResult { diff --git a/web/src/admin/roles/RolePermissionForm.ts b/web/src/admin/roles/ak-role-permission-form.ts similarity index 62% rename from web/src/admin/roles/RolePermissionForm.ts rename to web/src/admin/roles/ak-role-permission-form.ts index 4b288ebfc2..5b73bce445 100644 --- a/web/src/admin/roles/RolePermissionForm.ts +++ b/web/src/admin/roles/ak-role-permission-form.ts @@ -1,4 +1,4 @@ -import "#admin/rbac/PermissionSelectModal"; +import "#admin/rbac/ak-rbac-permission-table"; import "#components/ak-toggle-group"; import "#elements/chips/Chip"; import "#elements/chips/ChipGroup"; @@ -8,6 +8,8 @@ import "#elements/forms/SearchSelect/index"; import { DEFAULT_CONFIG } from "#common/api/config"; +import { renderModal } from "#elements/dialogs"; +import { AKFormSubmitEvent } from "#elements/forms/Form"; import { ModelForm } from "#elements/forms/ModelForm"; import { Permission, RbacApi } from "@goauthentik/api"; @@ -25,8 +27,8 @@ export class RolePermissionForm extends ModelForm @state() protected permissionsToAdd: Permission[] = []; - @property({ type: String }) - public roleUuid: string | null = null; + @property({ type: String, attribute: "role-uuid" }) + public roleUUID: string | null = null; public override reset(): void { super.reset(); @@ -34,20 +36,20 @@ export class RolePermissionForm extends ModelForm this.permissionsToAdd = []; } - loadInstance(): Promise { + protected override loadInstance(): Promise { throw new Error("Method not implemented."); } - getSuccessMessage(): string { + public override getSuccessMessage(): string { return msg("Successfully assigned permission."); } - async send(data: RolePermissionAssign) { - if (!this.roleUuid) { + protected override async send(data: RolePermissionAssign) { + if (!this.roleUUID) { return; } await new RbacApi(DEFAULT_CONFIG).rbacPermissionsAssignedByRolesAssign({ - uuid: this.roleUuid, + uuid: this.roleUUID, permissionAssignRequest: { permissions: data.permissions, }, @@ -55,25 +57,38 @@ export class RolePermissionForm extends ModelForm this.permissionsToAdd = []; } + protected openSelectPermissionsModal = () => { + return renderModal( + html`) => { + this.permissionsToAdd = event.target.toJSON(); + }} + > + `, + ); + }; + protected override renderForm(): TemplateResult { return html`
    - { - this.permissionsToAdd = items; - this.requestUpdate(); - return Promise.resolve(); - }} + - + + + + +
    - + ${this.permissionsToAdd.map((permission) => { return html` - - ${msg("Update")} - ${msg("Update Role")} - - - -
    `; - } - render() { if (!this.targetRole) { return nothing; @@ -113,7 +98,17 @@ export class RoleViewPage extends WithLicenseSummary(AKElement) {
    ${renderDescriptionList([ [msg("Name"), this.targetRole.name], - [msg("Edit"), this.renderUpdateControl(this.targetRole)], + [ + msg("Related actions"), + html``, + ], ])}
    @@ -121,14 +116,11 @@ export class RoleViewPage extends WithLicenseSummary(AKElement) { class="pf-c-card pf-l-grid__item pf-m-12-col pf-m-9-col-on-xl pf-m-9-col-on-2xl" >
    ${msg("Changelog")}
    -
    - - -
    + +
    @@ -141,25 +133,21 @@ export class RoleViewPage extends WithLicenseSummary(AKElement) { class="pf-c-page__main-section pf-m-no-padding-mobile" >
    -
    - - -
    + +
    ${this.hasEnterpriseLicense ? html` extends ModelForm { +export abstract class BaseSourceForm extends ModelForm { + public static override verboseName = msg("Source"); + public static override verboseNamePlural = msg("Sources"); getSuccessMessage(): string { return this.instance ? msg("Successfully updated source.") diff --git a/web/src/admin/sources/SourceListPage.ts b/web/src/admin/sources/SourceListPage.ts index 7a60b63223..e60d2deb79 100644 --- a/web/src/admin/sources/SourceListPage.ts +++ b/web/src/admin/sources/SourceListPage.ts @@ -1,4 +1,4 @@ -import "#admin/sources/SourceWizard"; +import "#admin/sources/ak-source-wizard"; import "#admin/sources/kerberos/KerberosSourceForm"; import "#admin/sources/ldap/LDAPSourceForm"; import "#admin/sources/oauth/OAuthSourceForm"; @@ -10,35 +10,36 @@ import "@patternfly/elements/pf-tooltip/pf-tooltip.js"; import { DEFAULT_CONFIG } from "#common/api/config"; -import { CustomFormElementTagName } from "#elements/forms/unsafe"; +import { IconEditButtonByTagName, ModalInvokerButton } from "#elements/dialogs"; import { PFColor } from "#elements/Label"; import { PaginatedResponse, TableColumn } from "#elements/table/Table"; import { TablePage } from "#elements/table/TablePage"; import { SlottedTemplateResult } from "#elements/types"; -import { StrictUnsafe } from "#elements/utils/unsafe"; + +import { AKSourceWizard } from "#admin/sources/ak-source-wizard"; import { Source, SourcesApi } from "@goauthentik/api"; -import { msg, str } from "@lit/localize"; -import { html, nothing, TemplateResult } from "lit"; -import { customElement, property } from "lit/decorators.js"; +import { msg } from "@lit/localize"; +import { html, nothing } from "lit"; +import { customElement } from "lit/decorators.js"; @customElement("ak-source-list") export class SourceListPage extends TablePage { - public pageTitle = msg("Federation and Social login"); - public pageDescription = msg( + public override pageTitle = msg("Federation and Social login"); + public override pageDescription = msg( "Sources of identities, which can either be synced into authentik's database, or can be used by users to authenticate and enroll themselves.", ); - public pageIcon = "pf-icon pf-icon-middleware"; + public override pageIcon = "pf-icon pf-icon-middleware"; protected override searchEnabled = true; - checkbox = true; - clearOnRefresh = true; + public override searchPlaceholder = msg("Search for a source..."); + public override checkbox = true; + public override clearOnRefresh = true; - @property() - order = "name"; + public override order = "name"; - async apiEndpoint(): Promise> { + protected override async apiEndpoint(): Promise> { return new SourcesApi(DEFAULT_CONFIG).sourcesAllList(await this.defaultEndpointConfig()); } @@ -49,7 +50,7 @@ export class SourceListPage extends TablePage { ["", null, msg("Row Actions")], ]; - renderToolbarSelected(): TemplateResult { + protected override renderToolbarSelected(): SlottedTemplateResult { const disabled = this.selectedElements.length < 1 || this.selectedElements.some((item) => item.component === ""); @@ -74,7 +75,7 @@ export class SourceListPage extends TablePage { `; } - row(item: Source): SlottedTemplateResult[] { + protected override row(item: Source): SlottedTemplateResult[] { if (!item.component) { return this.rowInbuilt(item); } @@ -88,27 +89,14 @@ export class SourceListPage extends TablePage { ${msg("Disabled")}`} `, - html`${item.verboseName}`, - html` - ${StrictUnsafe(item.component, { - slot: "form", - instancePk: item.slug, - actionLabel: msg("Update"), - headline: msg(str`Update ${item.verboseName}`, { - id: "form.headline.update", - }), - })} - ${msg("Update")} - - `, + item.verboseName, + html`
    + ${IconEditButtonByTagName(item.component, item.slug, item.verboseName)} +
    `, ]; } - rowInbuilt(item: Source): SlottedTemplateResult[] { + protected rowInbuilt(item: Source): SlottedTemplateResult[] { return [ html`
    ${item.name}
    @@ -119,8 +107,8 @@ export class SourceListPage extends TablePage { ]; } - renderObjectCreate(): TemplateResult { - return html` `; + protected override renderObjectCreate(): SlottedTemplateResult { + return ModalInvokerButton(AKSourceWizard); } } diff --git a/web/src/admin/sources/SourceWizard.ts b/web/src/admin/sources/SourceWizard.ts deleted file mode 100644 index 1d4311ba30..0000000000 --- a/web/src/admin/sources/SourceWizard.ts +++ /dev/null @@ -1,87 +0,0 @@ -import "#admin/sources/kerberos/KerberosSourceForm"; -import "#admin/sources/ldap/LDAPSourceForm"; -import "#admin/sources/oauth/OAuthSourceForm"; -import "#admin/sources/plex/PlexSourceForm"; -import "#admin/sources/saml/SAMLSourceForm"; -import "#admin/sources/scim/SCIMSourceForm"; -import "#admin/sources/telegram/TelegramSourceForm"; -import "#elements/wizard/FormWizardPage"; -import "#elements/wizard/Wizard"; - -import { DEFAULT_CONFIG } from "#common/api/config"; - -import { AKElement } from "#elements/Base"; -import { CustomFormElementTagName } from "#elements/forms/unsafe"; -import { StrictUnsafe } from "#elements/utils/unsafe"; -import { TypeCreateWizardPageLayouts } from "#elements/wizard/TypeCreateWizardPage"; -import type { Wizard } from "#elements/wizard/Wizard"; - -import { SourcesApi, TypeCreate } from "@goauthentik/api"; - -import { msg, str } from "@lit/localize"; -import { customElement } from "@lit/reactive-element/decorators/custom-element.js"; -import { CSSResult, html, TemplateResult } from "lit"; -import { property, query } from "lit/decorators.js"; - -import PFButton from "@patternfly/patternfly/components/Button/button.css"; - -@customElement("ak-source-wizard") -export class SourceWizard extends AKElement { - static styles: CSSResult[] = [PFButton]; - - @property({ attribute: false }) - sourceTypes: TypeCreate[] = []; - - @query("ak-wizard") - wizard?: Wizard; - - firstUpdated(): void { - new SourcesApi(DEFAULT_CONFIG).sourcesAllTypesList().then((types) => { - this.sourceTypes = types; - }); - } - - render(): TemplateResult { - return html` - - ) => { - if (!this.wizard) return; - this.wizard.steps = [ - "initial", - `type-${ev.detail.component}-${ev.detail.modelName}`, - ]; - this.wizard.isValid = true; - }} - > - - ${this.sourceTypes.map((type) => { - const { modelName } = type; - const props = modelName.includes("oauthsource") ? { modelName } : {}; - return html` - - ${StrictUnsafe(type.component, props)} - - `; - })} - - - `; - } -} - -declare global { - interface HTMLElementTagNameMap { - "ak-source-wizard": SourceWizard; - } -} diff --git a/web/src/admin/sources/ak-source-wizard.ts b/web/src/admin/sources/ak-source-wizard.ts new file mode 100644 index 0000000000..9147cf79e4 --- /dev/null +++ b/web/src/admin/sources/ak-source-wizard.ts @@ -0,0 +1,50 @@ +import "#admin/sources/kerberos/KerberosSourceForm"; +import "#admin/sources/ldap/LDAPSourceForm"; +import "#admin/sources/oauth/OAuthSourceForm"; +import "#admin/sources/plex/PlexSourceForm"; +import "#admin/sources/saml/SAMLSourceForm"; +import "#admin/sources/scim/SCIMSourceForm"; +import "#admin/sources/telegram/TelegramSourceForm"; +import "#elements/wizard/FormWizardPage"; +import "#elements/wizard/Wizard"; + +import { DEFAULT_CONFIG } from "#common/api/config"; + +import { LitPropertyRecord } from "#elements/types"; +import { CreateWizard } from "#elements/wizard/CreateWizard"; +import { TypeCreateWizardPageLayouts } from "#elements/wizard/TypeCreateWizardPage"; + +import { BaseSourceForm } from "#admin/sources/BaseSourceForm"; + +import { SourcesApi, TypeCreate } from "@goauthentik/api"; + +import { msg } from "@lit/localize"; +import { customElement } from "@lit/reactive-element/decorators/custom-element.js"; + +@customElement("ak-source-wizard") +export class AKSourceWizard extends CreateWizard { + #api = new SourcesApi(DEFAULT_CONFIG); + + public static override verboseName = msg("Source"); + public static override verboseNamePlural = msg("Sources"); + + public override layout = TypeCreateWizardPageLayouts.grid; + + protected apiEndpoint = async (requestInit?: RequestInit): Promise => { + return this.#api.sourcesAllTypesList(requestInit); + }; + + protected override assembleFormProps( + type: TypeCreate, + ): LitPropertyRecord { + const props = type.modelName.includes("oauthsource") ? { modelName: type.modelName } : {}; + + return props; + } +} + +declare global { + interface HTMLElementTagNameMap { + "ak-source-wizard": AKSourceWizard; + } +} diff --git a/web/src/admin/sources/kerberos/KerberosSourceForm.ts b/web/src/admin/sources/kerberos/KerberosSourceForm.ts index fa07f52b44..3aaef2eda5 100644 --- a/web/src/admin/sources/kerberos/KerberosSourceForm.ts +++ b/web/src/admin/sources/kerberos/KerberosSourceForm.ts @@ -2,10 +2,10 @@ import "#admin/common/ak-flow-search/ak-source-flow-search"; import "#components/ak-secret-text-input"; import "#components/ak-secret-textarea-input"; import "#components/ak-slug-input"; +import "#components/ak-text-input"; import "#components/ak-radio-input"; import "#components/ak-file-search-input"; import "#components/ak-switch-input"; -import "#components/ak-text-input"; import "#components/ak-textarea-input"; import "#elements/ak-dual-select/ak-dual-select-dynamic-selected-provider"; import "#elements/forms/FormGroup"; @@ -23,14 +23,14 @@ import { BaseSourceForm } from "#admin/sources/BaseSourceForm"; import { GroupMatchingModeToLabel, UserMatchingModeToLabel } from "#admin/sources/oauth/utils"; import { - AdminFileListUsageEnum, - FlowsInstancesListDesignationEnum, + FlowDesignationEnum, GroupMatchingModeEnum, KadminTypeEnum, KerberosSource, KerberosSourceRequest, SourcesApi, SyncOutgoingTriggerModeEnum, + UsageEnum, UserMatchingModeEnum, } from "@goauthentik/api"; @@ -86,14 +86,16 @@ export class KerberosSourceForm extends BaseSourceForm { } protected override renderForm(): TemplateResult { - return html` {
    { name="enrollmentFlow" > { name="icon" label=${msg("Icon")} .value=${this.instance?.icon} - .usage=${AdminFileListUsageEnum.Media} + .usage=${UsageEnum.Media} blankable help=${iconHelperText} > diff --git a/web/src/admin/sources/kerberos/KerberosSourceViewPage.ts b/web/src/admin/sources/kerberos/KerberosSourceViewPage.ts index 32a8a33f2b..5ea685f1fc 100644 --- a/web/src/admin/sources/kerberos/KerberosSourceViewPage.ts +++ b/web/src/admin/sources/kerberos/KerberosSourceViewPage.ts @@ -1,8 +1,8 @@ import "#elements/tasks/ScheduleList"; -import "#admin/rbac/ObjectPermissionsPage"; +import "#admin/rbac/ak-rbac-object-permission-page"; import "#admin/sources/kerberos/KerberosSourceConnectivity"; import "#admin/sources/kerberos/KerberosSourceForm"; -import "#components/events/ObjectChangelog"; +import "#admin/events/ObjectChangelog"; import "#elements/CodeMirror"; import "#elements/Tabs"; import "#elements/ak-mdx/index"; @@ -17,12 +17,7 @@ import { EVENT_REFRESH } from "#common/constants"; import { AKElement } from "#elements/Base"; import { SlottedTemplateResult } from "#elements/types"; -import { - KerberosSource, - ModelEnum, - RbacPermissionsAssignedByRolesListModelEnum, - SourcesApi, -} from "@goauthentik/api"; +import { KerberosSource, ModelEnum, SourcesApi } from "@goauthentik/api"; import MDSourceKerberosBrowser from "~docs/users-sources/sources/protocols/kerberos/browser.md"; @@ -129,7 +124,7 @@ export class KerberosSourceViewPage extends AKElement {
    -
    - -
    +
    @@ -194,25 +187,21 @@ export class KerberosSourceViewPage extends AKElement { >
    -
    - - -
    + +
    diff --git a/web/src/admin/sources/ldap/LDAPSourceConnectivity.ts b/web/src/admin/sources/ldap/LDAPSourceConnectivity.ts index ed5f80c99b..16f894a37d 100644 --- a/web/src/admin/sources/ldap/LDAPSourceConnectivity.ts +++ b/web/src/admin/sources/ldap/LDAPSourceConnectivity.ts @@ -4,7 +4,7 @@ import { AKElement } from "#elements/Base"; import { SlottedTemplateResult } from "#elements/types"; import { msg } from "@lit/localize"; -import { CSSResult, html, nothing } from "lit"; +import { CSSResult, html } from "lit"; import { customElement, property } from "lit/decorators.js"; import PFList from "@patternfly/patternfly/components/List/list.css"; @@ -12,17 +12,17 @@ import PFList from "@patternfly/patternfly/components/List/list.css"; @customElement("ak-source-ldap-connectivity") export class LDAPSourceConnectivity extends AKElement { @property() - connectivity?: { + connectivity: { [key: string]: { [key: string]: string; }; - }; + } | null = null; static styles: CSSResult[] = [PFList]; render(): SlottedTemplateResult { if (!this.connectivity) { - return nothing; + return html`${msg("No connectivity status available.")}`; } return html`
      ${Object.keys(this.connectivity).map((serverKey) => { diff --git a/web/src/admin/sources/ldap/LDAPSourceForm.ts b/web/src/admin/sources/ldap/LDAPSourceForm.ts index bd17bc4e30..c4cd9166fe 100644 --- a/web/src/admin/sources/ldap/LDAPSourceForm.ts +++ b/web/src/admin/sources/ldap/LDAPSourceForm.ts @@ -174,7 +174,7 @@ export class LDAPSourceForm extends BaseSourceForm { >

      ${msg( - "When connecting to an LDAP Server with TLS, certificates are not checked by default. Specify a keypair to validate the remote certificate.", + "Leave empty to skip certificate validation, or select a certificate/keypair containing the LDAP server CA chain to validate the remote certificate.", )}

      diff --git a/web/src/admin/sources/ldap/LDAPSourceGroupForm.ts b/web/src/admin/sources/ldap/LDAPSourceGroupForm.ts new file mode 100644 index 0000000000..fe54a0072c --- /dev/null +++ b/web/src/admin/sources/ldap/LDAPSourceGroupForm.ts @@ -0,0 +1,85 @@ +import "#elements/forms/HorizontalFormElement"; +import "#elements/forms/SearchSelect/index"; +import "#components/ak-text-input"; + +import { DEFAULT_CONFIG } from "#common/api/config"; + +import { ModelForm } from "#elements/forms/ModelForm"; + +import { + CoreApi, + CoreGroupsListRequest, + Group, + GroupLDAPSourceConnection, + LDAPSource, + SourcesApi, +} from "@goauthentik/api"; + +import { msg, str } from "@lit/localize"; +import { html } from "lit"; +import { ifDefined } from "lit-html/directives/if-defined.js"; +import { customElement, property } from "lit/decorators.js"; + +@customElement("ak-source-ldap-group-form") +export class LDAPSourceGroupForm extends ModelForm { + @property({ attribute: false }) + source?: LDAPSource; + + public override getSuccessMessage(): string { + return msg("Successfully connected user."); + } + + protected async loadInstance(pk: number): Promise { + return new SourcesApi(DEFAULT_CONFIG).sourcesGroupConnectionsLdapRetrieve({ + id: pk, + }); + } + + async send(data: GroupLDAPSourceConnection) { + data.source = this.source?.pk || ""; + return new SourcesApi(DEFAULT_CONFIG).sourcesGroupConnectionsLdapCreate({ + groupLDAPSourceConnectionRequest: data, + }); + } + + renderForm() { + return html` + => { + const args: CoreGroupsListRequest = { + ordering: "name", + }; + if (query !== undefined) { + args.search = query; + } + const groups = await new CoreApi(DEFAULT_CONFIG).coreGroupsList(args); + return groups.results; + }} + .renderElement=${(group: Group): string => { + return group.name; + }} + .value=${(group: Group | undefined): string | undefined => { + return group?.pk; + }} + > + + + + `; + } +} + +declare global { + interface HTMLElementTagNameMap { + "ak-source-ldap-group-form": LDAPSourceGroupForm; + } +} diff --git a/web/src/admin/sources/ldap/LDAPSourceGroupList.ts b/web/src/admin/sources/ldap/LDAPSourceGroupList.ts new file mode 100644 index 0000000000..ca2eb304b2 --- /dev/null +++ b/web/src/admin/sources/ldap/LDAPSourceGroupList.ts @@ -0,0 +1,87 @@ +import "#elements/forms/DeleteBulkForm"; +import "#elements/forms/ModalForm"; +import "#admin/sources/ldap/LDAPSourceGroupForm"; + +import { DEFAULT_CONFIG } from "#common/api/config"; + +import { PaginatedResponse, Table, TableColumn } from "#elements/table/Table"; +import { SlottedTemplateResult } from "#elements/types"; + +import { GroupLDAPSourceConnection, LDAPSource, SourcesApi } from "@goauthentik/api"; + +import { msg, str } from "@lit/localize"; +import { html, TemplateResult } from "lit"; +import { customElement, property } from "lit/decorators.js"; + +@customElement("ak-source-ldap-groups-list") +export class LDAPSourceGroupList extends Table { + @property({ attribute: false }) + source?: LDAPSource; + + protected override searchEnabled = true; + + checkbox = true; + clearOnRefresh = true; + + renderToolbarSelected(): TemplateResult { + const disabled = this.selectedElements.length < 1; + return html` { + return new SourcesApi(DEFAULT_CONFIG).sourcesGroupConnectionsLdapDestroy({ + id: item.pk, + }); + }} + > + + `; + } + + renderToolbar(): TemplateResult { + return html` + ${msg("Connect")} + ${msg("Connect Group")} + + + + + ${super.renderToolbar()}`; + } + + async apiEndpoint(): Promise> { + return new SourcesApi(DEFAULT_CONFIG).sourcesGroupConnectionsLdapList({ + ...(await this.defaultEndpointConfig()), + sourceSlug: this.source?.slug, + }); + } + + protected override rowLabel(item: GroupLDAPSourceConnection): string { + return item.groupObj.name; + } + + get columns(): TableColumn[] { + return [ + // --- + [msg("Name")], + [msg(str`Object Identifier (${this.source?.objectUniquenessField})`)], + ]; + } + + row(item: GroupLDAPSourceConnection): SlottedTemplateResult[] { + return [ + html` +
      ${item.groupObj.name}
      +
      `, + html`${item.identifier}`, + ]; + } +} + +declare global { + interface HTMLElementTagNameMap { + "ak-source-ldap-groups-list": LDAPSourceGroupList; + } +} diff --git a/web/src/admin/sources/ldap/LDAPSourceUserForm.ts b/web/src/admin/sources/ldap/LDAPSourceUserForm.ts new file mode 100644 index 0000000000..4c767bd7a8 --- /dev/null +++ b/web/src/admin/sources/ldap/LDAPSourceUserForm.ts @@ -0,0 +1,88 @@ +import "#elements/forms/HorizontalFormElement"; +import "#elements/forms/SearchSelect/index"; +import "#components/ak-text-input"; + +import { DEFAULT_CONFIG } from "#common/api/config"; + +import { ModelForm } from "#elements/forms/ModelForm"; + +import { + CoreApi, + CoreUsersListRequest, + LDAPSource, + SourcesApi, + User, + UserLDAPSourceConnection, +} from "@goauthentik/api"; + +import { msg, str } from "@lit/localize"; +import { html, TemplateResult } from "lit"; +import { ifDefined } from "lit-html/directives/if-defined.js"; +import { customElement, property } from "lit/decorators.js"; + +@customElement("ak-source-ldap-user-form") +export class LDAPSourceUserForm extends ModelForm { + @property({ attribute: false }) + source?: LDAPSource; + + public override getSuccessMessage(): string { + return msg("Successfully connected user."); + } + + protected async loadInstance(pk: number): Promise { + return new SourcesApi(DEFAULT_CONFIG).sourcesUserConnectionsLdapRetrieve({ + id: pk, + }); + } + + async send(data: UserLDAPSourceConnection) { + data.source = this.source?.pk || ""; + return new SourcesApi(DEFAULT_CONFIG).sourcesUserConnectionsLdapCreate({ + userLDAPSourceConnectionRequest: data, + }); + } + + renderForm() { + return html` + => { + const args: CoreUsersListRequest = { + ordering: "username", + }; + if (query !== undefined) { + args.search = query; + } + const users = await new CoreApi(DEFAULT_CONFIG).coreUsersList(args); + return users.results; + }} + .renderElement=${(user: User): string => { + return user.username; + }} + .renderDescription=${(user: User): TemplateResult => { + return html`${user.name}`; + }} + .value=${(user: User | undefined): number | undefined => { + return user?.pk; + }} + > + + + + `; + } +} + +declare global { + interface HTMLElementTagNameMap { + "ak-source-ldap-user-form": LDAPSourceUserForm; + } +} diff --git a/web/src/admin/sources/ldap/LDAPSourceUserList.ts b/web/src/admin/sources/ldap/LDAPSourceUserList.ts new file mode 100644 index 0000000000..d8eba9e046 --- /dev/null +++ b/web/src/admin/sources/ldap/LDAPSourceUserList.ts @@ -0,0 +1,94 @@ +import "#elements/forms/DeleteBulkForm"; +import "#elements/forms/ModalForm"; +import "#admin/sources/ldap/LDAPSourceUserForm"; + +import { DEFAULT_CONFIG } from "#common/api/config"; + +import { PaginatedResponse, Table, TableColumn } from "#elements/table/Table"; +import { SlottedTemplateResult } from "#elements/types"; + +import { LDAPSource, SourcesApi, UserLDAPSourceConnection } from "@goauthentik/api"; + +import { msg, str } from "@lit/localize"; +import { html, TemplateResult } from "lit"; +import { customElement, property } from "lit/decorators.js"; + +@customElement("ak-source-ldap-users-list") +export class LDAPSourceUserList extends Table { + @property({ attribute: false }) + source?: LDAPSource; + + protected override searchEnabled = true; + + checkbox = true; + clearOnRefresh = true; + + renderToolbarSelected(): TemplateResult { + const disabled = this.selectedElements.length < 1; + return html` { + return new SourcesApi(DEFAULT_CONFIG).sourcesUserConnectionsLdapDestroy({ + id: item.pk, + }); + }} + .metadata=${(item: UserLDAPSourceConnection) => { + return [ + { key: msg("User"), value: item.userObj.username }, + { key: msg("ID"), value: item.identifier }, + ]; + }} + > + + `; + } + + renderToolbar(): TemplateResult { + return html` + ${msg("Connect")} + ${msg("Connect User")} + + + + + ${super.renderToolbar()}`; + } + + async apiEndpoint(): Promise> { + return new SourcesApi(DEFAULT_CONFIG).sourcesUserConnectionsLdapList({ + ...(await this.defaultEndpointConfig()), + sourceSlug: this.source?.slug, + }); + } + + protected override rowLabel(item: UserLDAPSourceConnection): string { + return item.userObj.name; + } + + get columns(): TableColumn[] { + return [ + // --- + [msg("Name")], + [msg(str`Object Identifier (${this.source?.objectUniquenessField})`)], + ]; + } + + row(item: UserLDAPSourceConnection): SlottedTemplateResult[] { + return [ + html` +
      ${item.userObj.username}
      + ${item.userObj.name} +
      `, + html`${item.identifier}`, + ]; + } +} + +declare global { + interface HTMLElementTagNameMap { + "ak-source-ldap-users-list": LDAPSourceUserList; + } +} diff --git a/web/src/admin/sources/ldap/LDAPSourceViewPage.ts b/web/src/admin/sources/ldap/LDAPSourceViewPage.ts index 7415edac0f..c10a3eebf7 100644 --- a/web/src/admin/sources/ldap/LDAPSourceViewPage.ts +++ b/web/src/admin/sources/ldap/LDAPSourceViewPage.ts @@ -1,12 +1,12 @@ -import "#admin/rbac/ObjectPermissionsPage"; +import "#admin/rbac/ak-rbac-object-permission-page"; import "#admin/sources/ldap/LDAPSourceConnectivity"; -import "#admin/sources/ldap/LDAPSourceForm"; -import "#components/events/ObjectChangelog"; +import "#admin/sources/ldap/LDAPSourceUserList"; +import "#admin/sources/ldap/LDAPSourceGroupList"; +import "#admin/events/ObjectChangelog"; import "#elements/CodeMirror"; import "#elements/Tabs"; import "#elements/buttons/ActionButton/index"; import "#elements/buttons/SpinnerButton/index"; -import "#elements/forms/ModalForm"; import "#elements/sync/SyncStatusCard"; import "#elements/tasks/ScheduleList"; @@ -14,14 +14,14 @@ import { DEFAULT_CONFIG } from "#common/api/config"; import { EVENT_REFRESH } from "#common/constants"; import { AKElement } from "#elements/Base"; +import { modalInvoker } from "#elements/dialogs"; import { SlottedTemplateResult } from "#elements/types"; -import { - LDAPSource, - ModelEnum, - RbacPermissionsAssignedByRolesListModelEnum, - SourcesApi, -} from "@goauthentik/api"; +import renderDescriptionList from "#components/DescriptionList"; + +import { LDAPSourceForm } from "#admin/sources/ldap/LDAPSourceForm"; + +import { LDAPSource, ModelEnum, SourcesApi } from "@goauthentik/api"; import { msg } from "@lit/localize"; import { CSSResult, html, nothing } from "lit"; @@ -49,7 +49,7 @@ export class LDAPSourceViewPage extends AKElement { } @property({ attribute: false }) - source!: LDAPSource; + source?: LDAPSource; static styles: CSSResult[] = [ PFPage, @@ -88,72 +88,46 @@ export class LDAPSourceViewPage extends AKElement {
      +
      ${msg("Info")}
      -
      -
      -
      - ${msg("Name")}`, + ], + [ + msg("Related actions"), + html`
      -
      -
      - ${this.source.name} -
      -
      -
      -
      -
      - ${msg("Server URI")} -
      -
      -
      - ${this.source.serverUri} -
      -
      -
      -
      -
      - ${msg("Base DN")} -
      -
      -
      -
        -
      • ${this.source.baseDn}
      • -
      -
      -
      -
      -
      -
      -
      -
      +
      { + if (!this.source) return Promise.reject(); return new SourcesApi( DEFAULT_CONFIG, ).sourcesLdapSyncStatusRetrieve({ - slug: this.source?.slug, + slug: this.source.slug, }); }} > @@ -164,7 +138,7 @@ export class LDAPSourceViewPage extends AKElement {
      @@ -172,16 +146,42 @@ export class LDAPSourceViewPage extends AKElement {

      ${msg("Schedules")}

      -
      - -
      +
    +
    +
    + +
    +
    +
    +
    + +
    +
    -
    - - -
    + +
    `; diff --git a/web/src/admin/sources/oauth/OAuthSourceForm.ts b/web/src/admin/sources/oauth/OAuthSourceForm.ts index c943a00d0b..0702e2dfab 100644 --- a/web/src/admin/sources/oauth/OAuthSourceForm.ts +++ b/web/src/admin/sources/oauth/OAuthSourceForm.ts @@ -3,6 +3,7 @@ import "#components/ak-file-search-input"; import "#components/ak-radio-input"; import "#components/ak-secret-textarea-input"; import "#components/ak-slug-input"; +import "#components/ak-text-input"; import "#components/ak-switch-input"; import "#elements/CodeMirror"; import "#elements/ak-dual-select/ak-dual-select-dynamic-selected-provider"; @@ -24,9 +25,8 @@ import { BaseSourceForm } from "#admin/sources/BaseSourceForm"; import { GroupMatchingModeToLabel, UserMatchingModeToLabel } from "#admin/sources/oauth/utils"; import { - AdminFileListUsageEnum, AuthorizationCodeAuthMethodEnum, - FlowsInstancesListDesignationEnum, + FlowDesignationEnum, GroupMatchingModeEnum, OAuthSource, OAuthSourceRequest, @@ -34,6 +34,7 @@ import { ProviderTypeEnum, SourcesApi, SourceType, + UsageEnum, UserMatchingModeEnum, } from "@goauthentik/api"; @@ -270,16 +271,16 @@ export class OAuthSourceForm extends BaseSourceForm { } protected override renderForm(): TemplateResult { - return html` - - + return html` { name="icon" label=${msg("Icon")} .value=${this.instance?.icon} - .usage=${AdminFileListUsageEnum.Media} + .usage=${UsageEnum.Media} blankable help=${iconHelperText} > @@ -470,11 +471,11 @@ export class OAuthSourceForm extends BaseSourceForm {
    { name="enrollmentFlow" >
    -
    +
    ${msg("Details")}
    -
    -
    -
    - ${msg("Name")} -
    -
    -
    - ${this.source.name} -
    -
    -
    -
    -
    - ${msg("Provider Type")} -
    -
    -
    - ${ProviderToLabel(this.source.providerType)} -
    -
    -
    -
    -
    - ${msg("Callback URL")} -
    -
    - ${this.source.callbackUrl} -
    -
    -
    -
    - ${msg("Access Key")} -
    -
    -
    - ${this.source.consumerKey} -
    -
    -
    -
    -
    - ${msg("Authorization URL")} -
    -
    -
    - ${this.source.type?.authorizationUrl || - this.source.authorizationUrl} -
    -
    -
    -
    -
    - ${msg("Token URL")} -
    -
    -
    - ${this.source.type?.accessTokenUrl || - this.source.accessTokenUrl} -
    -
    -
    -
    -
    -
    -
    +
    ${msg("Diagram")}
    -
    - - -
    + +
    @@ -260,25 +194,22 @@ export class OAuthSourceViewPage extends AKElement { You can only use policies here as access is checked before the user is authenticated.`, )}
    -
    - - -
    + +
    diff --git a/web/src/admin/sources/plex/PlexSourceForm.ts b/web/src/admin/sources/plex/PlexSourceForm.ts index 5a876404d5..25bce462c0 100644 --- a/web/src/admin/sources/plex/PlexSourceForm.ts +++ b/web/src/admin/sources/plex/PlexSourceForm.ts @@ -2,6 +2,7 @@ import "#elements/forms/Radio"; import "#admin/common/ak-flow-search/ak-source-flow-search"; import "#components/ak-file-search-input"; import "#components/ak-slug-input"; +import "#components/ak-text-input"; import "#components/ak-switch-input"; import "#elements/ak-dual-select/ak-dual-select-dynamic-selected-provider"; import "#elements/ak-dual-select/ak-dual-select-provider"; @@ -21,11 +22,11 @@ import { BaseSourceForm } from "#admin/sources/BaseSourceForm"; import { GroupMatchingModeToLabel, UserMatchingModeToLabel } from "#admin/sources/oauth/utils"; import { - AdminFileListUsageEnum, - FlowsInstancesListDesignationEnum, + FlowDesignationEnum, GroupMatchingModeEnum, PlexSource, SourcesApi, + UsageEnum, UserMatchingModeEnum, } from "@goauthentik/api"; @@ -51,7 +52,7 @@ export class PlexSourceForm extends BaseSourceForm { @property({ attribute: false }) plexResources?: PlexResource[]; - get defaultInstance(): PlexSource | undefined { + public override createDefaultInstance(): PlexSource { return { clientId: randomString(40, ascii_letters + digits), } as PlexSource; @@ -142,23 +143,21 @@ export class PlexSourceForm extends BaseSourceForm { } protected override renderForm(): TemplateResult { - return html` - - - + return html` - { name="icon" label=${msg("Icon")} .value=${this.instance?.icon} - .usage=${AdminFileListUsageEnum.Media} + .usage=${UsageEnum.Media} blankable help=${iconHelperText} > @@ -276,11 +275,11 @@ export class PlexSourceForm extends BaseSourceForm {
    { name="enrollmentFlow" > @@ -144,25 +136,22 @@ export class PlexSourceViewPage extends AKElement { You can only use policies here as access is checked before the user is authenticated.`, )}
    -
    - - -
    + +
    diff --git a/web/src/admin/sources/saml/SAMLSourceForm.ts b/web/src/admin/sources/saml/SAMLSourceForm.ts index 5fb4ea450c..4a3fd7f9bb 100644 --- a/web/src/admin/sources/saml/SAMLSourceForm.ts +++ b/web/src/admin/sources/saml/SAMLSourceForm.ts @@ -2,6 +2,7 @@ import "#admin/common/ak-crypto-certificate-search"; import "#admin/common/ak-flow-search/ak-source-flow-search"; import "#components/ak-file-search-input"; import "#components/ak-slug-input"; +import "#components/ak-text-input"; import "#components/ak-switch-input"; import "#elements/ak-dual-select/ak-dual-select-dynamic-selected-provider"; import "#elements/forms/FormGroup"; @@ -20,15 +21,15 @@ import { BaseSourceForm } from "#admin/sources/BaseSourceForm"; import { GroupMatchingModeToLabel, UserMatchingModeToLabel } from "#admin/sources/oauth/utils"; import { - AdminFileListUsageEnum, BindingTypeEnum, DigestAlgorithmEnum, - FlowsInstancesListDesignationEnum, + FlowDesignationEnum, GroupMatchingModeEnum, SAMLNameIDPolicyEnum, SAMLSource, SignatureAlgorithmEnum, SourcesApi, + UsageEnum, UserMatchingModeEnum, } from "@goauthentik/api"; @@ -93,23 +94,21 @@ export class SAMLSourceForm extends BaseSourceForm { } protected override renderForm(): TemplateResult { - return html` - - - + return html` - { name="icon" label=${msg("Icon")} .value=${this.instance?.icon} - .usage=${AdminFileListUsageEnum.Media} + .usage=${UsageEnum.Media} blankable help=${iconHelperText} > @@ -303,6 +302,14 @@ export class SAMLSourceForm extends BaseSourceForm { "Allows authentication flows initiated by the IdP. This can be a security risk, as no validation of the request ID is done.", )} > + { name="preAuthenticationFlow" > {

    { name="enrollmentFlow" > @@ -199,7 +190,7 @@ export class SAMLSourceViewPage extends AKElement { ${msg("Download")} @@ -223,25 +214,22 @@ export class SAMLSourceViewPage extends AKElement { You can only use policies here as access is checked before the user is authenticated.`, )}
    -
    - - -
    + +
    diff --git a/web/src/admin/sources/scim/SCIMSourceForm.ts b/web/src/admin/sources/scim/SCIMSourceForm.ts index ce50b791c3..67de2b0b2a 100644 --- a/web/src/admin/sources/scim/SCIMSourceForm.ts +++ b/web/src/admin/sources/scim/SCIMSourceForm.ts @@ -1,4 +1,6 @@ import "#components/ak-slug-input"; +import "#components/ak-text-input"; +import "#components/ak-switch-input"; import "#elements/ak-dual-select/ak-dual-select-dynamic-selected-provider"; import "#elements/forms/FormGroup"; import "#elements/forms/HorizontalFormElement"; @@ -42,34 +44,27 @@ export class SCIMSourceForm extends BaseSourceForm { } protected override renderForm(): TemplateResult { - return html` - - - - + return html` + - -
    - - -
    -
    {

    ${placeholderHelperText}

    -
    - `; + `; } } diff --git a/web/src/admin/sources/scim/SCIMSourceUsers.ts b/web/src/admin/sources/scim/SCIMSourceUsers.ts index 43d2c92664..249690a9ac 100644 --- a/web/src/admin/sources/scim/SCIMSourceUsers.ts +++ b/web/src/admin/sources/scim/SCIMSourceUsers.ts @@ -1,4 +1,5 @@ import { DEFAULT_CONFIG } from "#common/api/config"; +import { formatUserDisplayName } from "#common/users"; import { PaginatedResponse, Table, TableColumn } from "#elements/table/Table"; import { SlottedTemplateResult } from "#elements/types"; @@ -25,7 +26,7 @@ export class SCIMSourceUserList extends Table { } protected override rowLabel(item: SCIMSourceUser): string { - return item.userObj.name || item.userObj.username; + return formatUserDisplayName(item.userObj); } protected columns: TableColumn[] = [ diff --git a/web/src/admin/sources/scim/SCIMSourceViewPage.ts b/web/src/admin/sources/scim/SCIMSourceViewPage.ts index d2614c8661..76cf54fe11 100644 --- a/web/src/admin/sources/scim/SCIMSourceViewPage.ts +++ b/web/src/admin/sources/scim/SCIMSourceViewPage.ts @@ -1,8 +1,8 @@ -import "#admin/rbac/ObjectPermissionsPage"; +import "#admin/rbac/ak-rbac-object-permission-page"; import "#admin/sources/scim/SCIMSourceForm"; import "#admin/sources/scim/SCIMSourceGroups"; import "#admin/sources/scim/SCIMSourceUsers"; -import "#components/events/ObjectChangelog"; +import "#admin/events/ObjectChangelog"; import "#elements/Tabs"; import "#elements/buttons/ActionButton/index"; import "#elements/buttons/SpinnerButton/index"; @@ -15,11 +15,7 @@ import { EVENT_REFRESH } from "#common/constants"; import { AKElement } from "#elements/Base"; import { SlottedTemplateResult } from "#elements/types"; -import { - RbacPermissionsAssignedByRolesListModelEnum, - SCIMSource, - SourcesApi, -} from "@goauthentik/api"; +import { ModelEnum, SCIMSource, SourcesApi } from "@goauthentik/api"; import { msg } from "@lit/localize"; import { CSSResult, html, nothing } from "lit"; @@ -116,7 +112,7 @@ export class SCIMSourceViewPage extends AKElement { @@ -177,14 +173,11 @@ export class SCIMSourceViewPage extends AKElement { >
    -
    - - -
    + +
    @@ -217,13 +210,12 @@ export class SCIMSourceViewPage extends AKElement { diff --git a/web/src/admin/sources/telegram/TelegramSourceForm.ts b/web/src/admin/sources/telegram/TelegramSourceForm.ts index d5d8e532a3..e012a5460a 100644 --- a/web/src/admin/sources/telegram/TelegramSourceForm.ts +++ b/web/src/admin/sources/telegram/TelegramSourceForm.ts @@ -1,5 +1,6 @@ import "#admin/common/ak-flow-search/ak-source-flow-search"; import "#components/ak-slug-input"; +import "#components/ak-text-input"; import "#components/ak-secret-text-input"; import "#elements/forms/Radio"; import "#elements/ak-dual-select/ak-dual-select-dynamic-selected-provider"; @@ -14,7 +15,7 @@ import { BaseSourceForm } from "#admin/sources/BaseSourceForm"; import { UserMatchingModeToLabel } from "#admin/sources/oauth/utils"; import { - FlowsInstancesListDesignationEnum, + FlowDesignationEnum, SourcesApi, TelegramSource, TelegramSourceRequest, @@ -51,24 +52,21 @@ export class TelegramSourceForm extends BaseSourceForm { } protected override renderForm(): TemplateResult { - return html` - - - - + return html` - { label=${msg("Bot token")} name="botToken" input-hint="code" - ?required=${this.instance === undefined} - ?revealed=${this.instance === undefined} + ?required=${!this.instance} + ?revealed=${!this.instance} > { name="preAuthenticationFlow" > {

    { name="enrollmentFlow" > { - - `; + `; } } diff --git a/web/src/admin/sources/telegram/TelegramSourceViewPage.ts b/web/src/admin/sources/telegram/TelegramSourceViewPage.ts index 3ccdcfe48f..20a75f51e7 100644 --- a/web/src/admin/sources/telegram/TelegramSourceViewPage.ts +++ b/web/src/admin/sources/telegram/TelegramSourceViewPage.ts @@ -1,6 +1,6 @@ import "#elements/Tabs"; -import "#admin/rbac/ObjectPermissionsPage"; -import "#components/events/ObjectChangelog"; +import "#admin/rbac/ak-rbac-object-permission-page"; +import "#admin/events/ObjectChangelog"; import "#elements/forms/ModalForm"; import "#admin/policies/BoundPoliciesList"; import "#admin/sources/telegram/TelegramSourceForm"; @@ -8,14 +8,9 @@ import "#admin/sources/telegram/TelegramSourceForm"; import { DEFAULT_CONFIG } from "#common/api/config"; import { AKElement } from "#elements/Base"; +import { sourceBindingTypeNotices } from "#elements/sources/utils"; -import { sourceBindingTypeNotices } from "#admin/sources/utils"; - -import { - RbacPermissionsAssignedByRolesListModelEnum, - SourcesApi, - TelegramSource, -} from "@goauthentik/api"; +import { ModelEnum, SourcesApi, TelegramSource } from "@goauthentik/api"; import { msg } from "@lit/localize"; import { CSSResult, html, TemplateResult } from "lit"; @@ -96,8 +91,8 @@ export class TelegramSourceViewPage extends AKElement { -
    - - -
    + + `; diff --git a/web/src/admin/stages/BaseStageForm.ts b/web/src/admin/stages/BaseStageForm.ts index 8d4ed091d3..4018fe4316 100644 --- a/web/src/admin/stages/BaseStageForm.ts +++ b/web/src/admin/stages/BaseStageForm.ts @@ -1,9 +1,14 @@ import { ModelForm } from "#elements/forms/ModelForm"; +import type { Stage } from "@goauthentik/api"; + import { msg } from "@lit/localize"; -export abstract class BaseStageForm extends ModelForm { - getSuccessMessage(): string { +export abstract class BaseStageForm extends ModelForm { + public static override verboseName = msg("Stage"); + public static override verboseNamePlural = msg("Stages"); + + public override getSuccessMessage(): string { return this.instance ? msg("Successfully updated stage.") : msg("Successfully created stage."); diff --git a/web/src/admin/stages/StageListPage.ts b/web/src/admin/stages/StageListPage.ts index 1f2b11883d..386151d1a8 100644 --- a/web/src/admin/stages/StageListPage.ts +++ b/web/src/admin/stages/StageListPage.ts @@ -6,45 +6,47 @@ import "@patternfly/elements/pf-tooltip/pf-tooltip.js"; import { DEFAULT_CONFIG } from "#common/api/config"; -import { CustomFormElementTagName } from "#elements/forms/unsafe"; +import { IconEditButtonByTagName, modalInvoker, ModalInvokerButton } from "#elements/dialogs"; +import { IconPermissionButton } from "#elements/dialogs/components/IconPermissionButton"; import { PaginatedResponse, TableColumn } from "#elements/table/Table"; import { TablePage } from "#elements/table/TablePage"; import { SlottedTemplateResult } from "#elements/types"; -import { StrictUnsafe } from "#elements/utils/unsafe"; -import { Stage, StagesApi } from "@goauthentik/api"; +import { AKStageWizard } from "#admin/stages/ak-stage-wizard"; +import { DuoDeviceImportForm } from "#admin/stages/authenticator_duo/DuoDeviceImportForm"; -import { msg, str } from "@lit/localize"; -import { html, nothing, TemplateResult } from "lit"; -import { customElement, property } from "lit/decorators.js"; +import { ModelEnum, Stage, StagesApi } from "@goauthentik/api"; + +import { msg } from "@lit/localize"; +import { html } from "lit"; +import { customElement } from "lit/decorators.js"; @customElement("ak-stage-list") export class StageListPage extends TablePage { - public pageTitle = msg("Stages"); - public pageDescription = msg( + public override pageTitle = msg("Stages"); + public override pageDescription = msg( "Stages are single steps of a Flow that a user is guided through. A stage can only be executed from within a flow.", ); - public pageIcon = "pf-icon pf-icon-plugged"; + public override pageIcon = "pf-icon pf-icon-plugged"; protected override searchEnabled = true; - checkbox = true; - clearOnRefresh = true; + public override checkbox = true; + public override clearOnRefresh = true; + public override order = "name"; + public override searchPlaceholder = msg("Search for a stage name, type, or flow..."); - @property() - order = "name"; - - async apiEndpoint(): Promise> { + protected override async apiEndpoint(): Promise> { return new StagesApi(DEFAULT_CONFIG).stagesAllList(await this.defaultEndpointConfig()); } - protected columns: TableColumn[] = [ + protected override columns: TableColumn[] = [ // --- [msg("Name"), "name"], [msg("Flows")], [msg("Actions"), null, msg("Row Actions")], ]; - renderToolbarSelected(): TemplateResult { + protected override renderToolbarSelected(): SlottedTemplateResult { const disabled = this.selectedElements.length < 1; return html` { `; } - renderStageActions(stage: Stage) { - return stage.component === "ak-stage-authenticator-duo-form" - ? html` - ${msg("Import")} - ${msg("Import Duo device")} - - - - ` - : nothing; + protected renderStageActions(stage: Stage): SlottedTemplateResult { + if (stage.component !== "ak-stage-authenticator-duo-form") { + return null; + } + + return html``; } - row(item: Stage): SlottedTemplateResult[] { + protected override row(item: Stage): SlottedTemplateResult[] { return [ html`
    ${item.name}
    ${item.verboseName}`, @@ -98,31 +96,19 @@ export class StageListPage extends TablePage { `; })} `, - html`
    - - ${StrictUnsafe(item.component, { - slot: "form", - instancePk: item.pk, - actionLabel: msg("Update"), - headline: msg(str`Update ${item.verboseName}`, { - id: "form.headline.update", - }), - })} - - - - + html`
    + ${IconEditButtonByTagName(item.component, item.pk)} + ${IconPermissionButton(item.name, { + model: item.metaModelName as ModelEnum, + objectPk: item.pk, + })} ${this.renderStageActions(item)}
    `, ]; } - renderObjectCreate(): TemplateResult { - return html` `; + protected override renderObjectCreate(): SlottedTemplateResult { + return ModalInvokerButton(AKStageWizard); } } diff --git a/web/src/admin/stages/StageWizard.ts b/web/src/admin/stages/StageWizard.ts deleted file mode 100644 index 13de703c9e..0000000000 --- a/web/src/admin/stages/StageWizard.ts +++ /dev/null @@ -1,116 +0,0 @@ -import "#admin/stages/register"; -import "#admin/common/ak-license-notice"; -import "#elements/wizard/FormWizardPage"; -import "#elements/wizard/TypeCreateWizardPage"; -import "#elements/wizard/Wizard"; - -import { DEFAULT_CONFIG } from "#common/api/config"; - -import { AKElement } from "#elements/Base"; -import { StrictUnsafe } from "#elements/utils/unsafe"; -import { FormWizardPage } from "#elements/wizard/FormWizardPage"; -import { Wizard } from "#elements/wizard/Wizard"; - -import { StageBindingForm } from "#admin/flows/StageBindingForm"; - -import { FlowStageBinding, Stage, StagesApi, TypeCreate } from "@goauthentik/api"; - -import { msg, str } from "@lit/localize"; -import { customElement } from "@lit/reactive-element/decorators/custom-element.js"; -import { CSSResult, html, nothing, TemplateResult } from "lit"; -import { property, query } from "lit/decorators.js"; - -import PFButton from "@patternfly/patternfly/components/Button/button.css"; - -@customElement("ak-stage-wizard") -export class StageWizard extends AKElement { - static styles: CSSResult[] = [PFButton]; - - @property() - createText = msg("Create"); - - @property({ type: Boolean }) - showBindingPage = false; - - @property() - bindingTarget?: string; - - @property({ attribute: false }) - stageTypes: TypeCreate[] = []; - - @query("ak-wizard") - wizard?: Wizard; - - firstUpdated(): void { - new StagesApi(DEFAULT_CONFIG).stagesAllTypesList().then((types) => { - this.stageTypes = types; - }); - } - - render(): TemplateResult { - return html` - - ) => { - if (!this.wizard) return; - const idx = this.wizard.steps.indexOf("initial") + 1; - // Exclude all current steps starting with type-, - // this happens when the user selects a type and then goes back - this.wizard.steps = this.wizard.steps.filter( - (step) => !step.startsWith("type-"), - ); - this.wizard.steps.splice( - idx, - 0, - `type-${ev.detail.component}-${ev.detail.modelName}`, - ); - this.wizard.isValid = true; - }} - > - - ${this.stageTypes.map((type) => { - return html` - - ${StrictUnsafe(type.component)} - - `; - })} - ${this.showBindingPage - ? html` { - const createSlot = context.host.steps[1]; - const bindingForm = - context.querySelector("ak-stage-binding-form"); - if (!bindingForm) return; - bindingForm.instance = { - stage: (context.host.state[createSlot] as Stage).pk, - } as FlowStageBinding; - }} - > - - ` - : nothing} - - - `; - } -} - -declare global { - interface HTMLElementTagNameMap { - "ak-stage-wizard": StageWizard; - } -} diff --git a/web/src/admin/stages/account_lockdown/AccountLockdownStageForm.ts b/web/src/admin/stages/account_lockdown/AccountLockdownStageForm.ts new file mode 100644 index 0000000000..39cf18f2b7 --- /dev/null +++ b/web/src/admin/stages/account_lockdown/AccountLockdownStageForm.ts @@ -0,0 +1,119 @@ +import "#elements/forms/HorizontalFormElement"; +import "#admin/common/ak-flow-search/ak-flow-search"; +import "#components/ak-switch-input"; +import "#components/ak-text-input"; + +import { DEFAULT_CONFIG } from "#common/api/config"; + +import { SlottedTemplateResult } from "#elements/types"; +import { ifPresent } from "#elements/utils/attributes"; + +import { BaseStageForm } from "#admin/stages/BaseStageForm"; + +import { AccountLockdownStage, StagesApi } from "@goauthentik/api"; + +import { msg } from "@lit/localize"; +import { html } from "lit"; +import { customElement } from "lit/decorators.js"; + +@customElement("ak-stage-account-lockdown-form") +export class AccountLockdownStageForm extends BaseStageForm { + #api = new StagesApi(DEFAULT_CONFIG); + + protected override loadInstance(pk: string): Promise { + return this.#api.stagesAccountLockdownRetrieve({ stageUuid: pk }); + } + + protected override async send(data: AccountLockdownStage): Promise { + if (this.instance) { + return this.#api.stagesAccountLockdownUpdate({ + stageUuid: this.instance.pk || "", + accountLockdownStageRequest: data, + }); + } + + return this.#api.stagesAccountLockdownCreate({ + accountLockdownStageRequest: data, + }); + } + + protected override renderForm(): SlottedTemplateResult { + return html` + ${msg( + "This stage executes account lockdown actions on a target user. Configure which actions to perform when this stage runs.", + )} + + + +
    + + + + + + + + +
    +
    + +
    + + +

    + ${msg( + "Flow to redirect users to after self-service lockdown. This flow must not require authentication since the user's session is deleted.", + )} +

    +
    +
    +
    `; + } +} + +declare global { + interface HTMLElementTagNameMap { + "ak-stage-account-lockdown-form": AccountLockdownStageForm; + } +} diff --git a/web/src/admin/stages/ak-stage-wizard.ts b/web/src/admin/stages/ak-stage-wizard.ts new file mode 100644 index 0000000000..21e31367ab --- /dev/null +++ b/web/src/admin/stages/ak-stage-wizard.ts @@ -0,0 +1,123 @@ +import "#admin/stages/register"; +import "#elements/LicenseNotice"; +import "#elements/wizard/FormWizardPage"; +import "#elements/wizard/TypeCreateWizardPage"; +import "#elements/wizard/Wizard"; +import "#elements/forms/FormGroup"; +import "#admin/flows/StageBindingForm"; + +import { DEFAULT_CONFIG } from "#common/api/config"; + +import { RadioOption } from "#elements/forms/Radio"; +import { SlottedTemplateResult } from "#elements/types"; +import { CreateWizard } from "#elements/wizard/CreateWizard"; +import { FormWizardPage } from "#elements/wizard/FormWizardPage"; +import { TypeCreateWizardPageLayouts } from "#elements/wizard/TypeCreateWizardPage"; + +import { FlowStageBinding, Stage, StagesApi, TypeCreate } from "@goauthentik/api"; + +import { msg } from "@lit/localize"; +import { customElement } from "@lit/reactive-element/decorators/custom-element.js"; +import { html, PropertyValues } from "lit"; +import { property } from "lit/decorators.js"; + +@customElement("ak-stage-wizard") +export class AKStageWizard extends CreateWizard { + #api = new StagesApi(DEFAULT_CONFIG); + + @property({ type: Boolean }) + public showBindingPage = false; + + @property({ type: String, useDefault: true }) + public bindingTarget: string | null = null; + + public override initialSteps = this.showBindingPage + ? ["initial", "create-binding"] + : ["initial"]; + + public static override verboseName = msg("Stage"); + public static override verboseNamePlural = msg("Stages"); + + public override layout = TypeCreateWizardPageLayouts.list; + + public override groupLabel = msg("Bind New Stage"); + public override groupDescription = msg("Select the type of stage you want to create."); + + protected apiEndpoint = async (requestInit?: RequestInit): Promise => { + return this.#api.stagesAllTypesList(requestInit); + }; + + protected override updated(changedProperties: PropertyValues): void { + super.updated(changedProperties); + + if (changedProperties.has("showBindingPage")) { + this.initialSteps = this.showBindingPage ? ["initial", "create-binding"] : ["initial"]; + } + } + + protected createBindingActivate = async ( + context: FormWizardPage<{ "create-binding": Stage }>, + ) => { + const createSlot = context.host.steps[1] as "create-binding"; + const bindingForm = context.querySelector("ak-stage-binding-form"); + + if (!bindingForm) return; + + if (context.host.state[createSlot]) { + bindingForm.instance = { + stage: (context.host.state[createSlot] as Stage).pk, + } as FlowStageBinding; + } + }; + + protected override renderCreateBefore(): SlottedTemplateResult { + if (!this.showBindingPage) { + return null; + } + + return html` + []} + @change=${() => { + if (!this.wizard) { + return; + } + + this.wizard.navigateNext(); + }} + > + + `; + } + + protected renderForms(): SlottedTemplateResult { + const bindingPage = this.showBindingPage + ? html` + + ` + : null; + + return [super.renderForms(), bindingPage]; + } +} + +declare global { + interface HTMLElementTagNameMap { + "ak-stage-wizard": AKStageWizard; + } +} diff --git a/web/src/admin/stages/authenticator_duo/AuthenticatorDuoStageForm.ts b/web/src/admin/stages/authenticator_duo/AuthenticatorDuoStageForm.ts index 76f8a9c7f3..d451920046 100644 --- a/web/src/admin/stages/authenticator_duo/AuthenticatorDuoStageForm.ts +++ b/web/src/admin/stages/authenticator_duo/AuthenticatorDuoStageForm.ts @@ -12,8 +12,8 @@ import { AuthenticatorDuoStage, AuthenticatorDuoStageRequest, Flow, + FlowDesignationEnum, FlowsApi, - FlowsInstancesListDesignationEnum, FlowsInstancesListRequest, StagesApi, } from "@goauthentik/api"; @@ -142,8 +142,7 @@ export class AuthenticatorDuoStageForm extends BaseStageForm => { const args: FlowsInstancesListRequest = { ordering: "slug", - designation: - FlowsInstancesListDesignationEnum.StageConfiguration, + designation: FlowDesignationEnum.StageConfiguration, }; if (query !== undefined) { args.search = query; diff --git a/web/src/admin/stages/authenticator_duo/DuoDeviceImportForm.ts b/web/src/admin/stages/authenticator_duo/DuoDeviceImportForm.ts index 049a1bc47d..d30210b382 100644 --- a/web/src/admin/stages/authenticator_duo/DuoDeviceImportForm.ts +++ b/web/src/admin/stages/authenticator_duo/DuoDeviceImportForm.ts @@ -2,6 +2,7 @@ import "#elements/Divider"; import "#elements/buttons/ActionButton/index"; import "#elements/forms/HorizontalFormElement"; import "#elements/forms/SearchSelect/index"; +import "#components/ak-text-input"; import { DEFAULT_CONFIG } from "#common/api/config"; import { MessageLevel } from "#common/messages"; @@ -9,6 +10,7 @@ import { MessageLevel } from "#common/messages"; import { ModalForm } from "#elements/forms/ModalForm"; import { ModelForm } from "#elements/forms/ModelForm"; import { showMessage } from "#elements/messages/MessageContainer"; +import { SlottedTemplateResult } from "#elements/types"; import { AuthenticatorDuoStage, @@ -25,6 +27,14 @@ import { customElement } from "lit/decorators.js"; @customElement("ak-stage-authenticator-duo-device-import-form") export class DuoDeviceImportForm extends ModelForm { + public static override verboseName = msg("Duo Device"); + public static override verboseNamePlural = msg("Duo Devices"); + public static override createLabel = msg("Import"); + public static override submitVerb = msg("Import"); + public static override modifierLabel = msg("Import"); + public static override saveLabel = msg("Import"); + public static override submittingVerb = msg("Importing"); + loadInstance(pk: string): Promise { return new StagesApi(DEFAULT_CONFIG).stagesAuthenticatorDuoRetrieve({ stageUuid: pk, @@ -43,16 +53,17 @@ export class DuoDeviceImportForm extends ModelForm => { const args: CoreUsersListRequest = { ordering: "username", @@ -79,17 +90,20 @@ export class DuoDeviceImportForm extends ModelForm - - -

    - ${msg("The user ID in Duo, can be found in the URL after clicking on a user.")} -

    -
    `; + + `; } - renderFormAutomatic(): TemplateResult { - return html` - + renderFormAutomatic(): SlottedTemplateResult { + return html` { @@ -111,8 +125,7 @@ export class DuoDeviceImportForm extends ModelForm ${msg("Or manually import")} -
    - `; +
    `; } } diff --git a/web/src/admin/stages/authenticator_email/AuthenticatorEmailStageForm.ts b/web/src/admin/stages/authenticator_email/AuthenticatorEmailStageForm.ts index e261010428..60129da6d3 100644 --- a/web/src/admin/stages/authenticator_email/AuthenticatorEmailStageForm.ts +++ b/web/src/admin/stages/authenticator_email/AuthenticatorEmailStageForm.ts @@ -15,8 +15,8 @@ import { BaseStageForm } from "#admin/stages/BaseStageForm"; import { AuthenticatorEmailStage, Flow, + FlowDesignationEnum, FlowsApi, - FlowsInstancesListDesignationEnum, FlowsInstancesListRequest, StagesApi, TypeCreate, @@ -210,8 +210,7 @@ export class AuthenticatorEmailStageForm extends BaseStageForm => { const args: FlowsInstancesListRequest = { ordering: "slug", - designation: - FlowsInstancesListDesignationEnum.StageConfiguration, + designation: FlowDesignationEnum.StageConfiguration, }; if (query !== undefined) { args.search = query; diff --git a/web/src/admin/stages/authenticator_sms/AuthenticatorSMSStageForm.ts b/web/src/admin/stages/authenticator_sms/AuthenticatorSMSStageForm.ts index 57b2d1c7b0..368651b801 100644 --- a/web/src/admin/stages/authenticator_sms/AuthenticatorSMSStageForm.ts +++ b/web/src/admin/stages/authenticator_sms/AuthenticatorSMSStageForm.ts @@ -13,8 +13,8 @@ import { AuthenticatorSMSStage, AuthTypeEnum, Flow, + FlowDesignationEnum, FlowsApi, - FlowsInstancesListDesignationEnum, FlowsInstancesListRequest, NotificationWebhookMapping, PropertymappingsApi, @@ -285,8 +285,7 @@ export class AuthenticatorSMSStageForm extends BaseStageForm => { const args: FlowsInstancesListRequest = { ordering: "slug", - designation: - FlowsInstancesListDesignationEnum.StageConfiguration, + designation: FlowDesignationEnum.StageConfiguration, }; if (query !== undefined) { args.search = query; diff --git a/web/src/admin/stages/authenticator_static/AuthenticatorStaticStageForm.ts b/web/src/admin/stages/authenticator_static/AuthenticatorStaticStageForm.ts index c3be444390..8030b5a2db 100644 --- a/web/src/admin/stages/authenticator_static/AuthenticatorStaticStageForm.ts +++ b/web/src/admin/stages/authenticator_static/AuthenticatorStaticStageForm.ts @@ -9,8 +9,8 @@ import { BaseStageForm } from "#admin/stages/BaseStageForm"; import { AuthenticatorStaticStage, Flow, + FlowDesignationEnum, FlowsApi, - FlowsInstancesListDesignationEnum, FlowsInstancesListRequest, StagesApi, } from "@goauthentik/api"; @@ -115,8 +115,7 @@ export class AuthenticatorStaticStageForm extends BaseStageForm => { const args: FlowsInstancesListRequest = { ordering: "slug", - designation: - FlowsInstancesListDesignationEnum.StageConfiguration, + designation: FlowDesignationEnum.StageConfiguration, }; if (query !== undefined) { args.search = query; diff --git a/web/src/admin/stages/authenticator_totp/AuthenticatorTOTPStageForm.ts b/web/src/admin/stages/authenticator_totp/AuthenticatorTOTPStageForm.ts index 101effd2df..ca44cb4ecc 100644 --- a/web/src/admin/stages/authenticator_totp/AuthenticatorTOTPStageForm.ts +++ b/web/src/admin/stages/authenticator_totp/AuthenticatorTOTPStageForm.ts @@ -11,8 +11,8 @@ import { AuthenticatorTOTPStage, DigitsEnum, Flow, + FlowDesignationEnum, FlowsApi, - FlowsInstancesListDesignationEnum, FlowsInstancesListRequest, StagesApi, } from "@goauthentik/api"; @@ -99,8 +99,7 @@ export class AuthenticatorTOTPStageForm extends BaseStageForm => { const args: FlowsInstancesListRequest = { ordering: "slug", - designation: - FlowsInstancesListDesignationEnum.StageConfiguration, + designation: FlowDesignationEnum.StageConfiguration, }; if (query !== undefined) { args.search = query; diff --git a/web/src/admin/stages/authenticator_validate/AuthenticatorValidateStageForm.ts b/web/src/admin/stages/authenticator_validate/AuthenticatorValidateStageForm.ts index 1525929b49..058fd76d74 100644 --- a/web/src/admin/stages/authenticator_validate/AuthenticatorValidateStageForm.ts +++ b/web/src/admin/stages/authenticator_validate/AuthenticatorValidateStageForm.ts @@ -6,6 +6,7 @@ import "#elements/forms/FormGroup"; import "#elements/forms/HorizontalFormElement"; import "#elements/forms/Radio"; import "#elements/utils/TimeDeltaHelp"; +import "#components/ak-text-input"; import { authenticatorWebauthnDeviceTypesListProvider, @@ -17,6 +18,8 @@ import { DEFAULT_CONFIG } from "#common/api/config"; import { DataProvision, DualSelectPair } from "#elements/ak-dual-select/types"; +import { AKLabel } from "#components/ak-label"; + import { deviceTypeRestrictionPair } from "#admin/stages/authenticator_webauthn/utils"; import { BaseStageForm } from "#admin/stages/BaseStageForm"; @@ -102,21 +105,31 @@ export class AuthenticatorValidateStageForm extends BaseStageForm - - - + +
    - + + ${AKLabel( + { + slot: "label", + className: "pf-c-form__group-label", + htmlFor: "deviceClasses", + required: true, + }, + msg("Device Classes"), + )} + +

    + ${msg("Device classes which can be used to authenticate.")} +

    -

    - ${msg("Device classes which can be used to authenticate.")} -

    + + + + + + + + + + + + + + + +
    +

    + ${msg( + "Controls the authenticatorAttachment parameter sent to the browser during WebAuthn registration. If Hints are configured and this is left as 'No preference', a value is inferred from the selected hints for backward compatibility with older browsers.", + )} +

    + => { const args: FlowsInstancesListRequest = { ordering: "slug", - designation: - FlowsInstancesListDesignationEnum.StageConfiguration, + designation: FlowDesignationEnum.StageConfiguration, }; if (query !== undefined) { args.search = query; diff --git a/web/src/admin/stages/consent/ConsentStageForm.ts b/web/src/admin/stages/consent/ConsentStageForm.ts index 79da8c5844..2cf1d45ab1 100644 --- a/web/src/admin/stages/consent/ConsentStageForm.ts +++ b/web/src/admin/stages/consent/ConsentStageForm.ts @@ -6,7 +6,7 @@ import { DEFAULT_CONFIG } from "#common/api/config"; import { BaseStageForm } from "#admin/stages/BaseStageForm"; -import { ConsentStage, ConsentStageModeEnum, StagesApi } from "@goauthentik/api"; +import { ConsentModeEnum, ConsentStage, StagesApi } from "@goauthentik/api"; import { msg } from "@lit/localize"; import { html, TemplateResult } from "lit"; @@ -21,7 +21,7 @@ export class ConsentStageForm extends BaseStageForm { stageUuid: pk, }) .then((stage) => { - this.showExpiresIn = stage.mode === ConsentStageModeEnum.Expiring; + this.showExpiresIn = stage.mode === ConsentModeEnum.Expiring; return stage; }); } @@ -62,10 +62,7 @@ export class ConsentStageForm extends BaseStageForm { class="pf-c-form-control" @change=${(ev: Event) => { const target = ev.target as HTMLSelectElement; - if ( - target.selectedOptions[0].value === - ConsentStageModeEnum.Expiring - ) { + if (target.selectedOptions[0].value === ConsentModeEnum.Expiring) { this.showExpiresIn = true; } else { this.showExpiresIn = false; @@ -73,21 +70,20 @@ export class ConsentStageForm extends BaseStageForm { }} > diff --git a/web/src/admin/stages/identification/IdentificationStageForm.ts b/web/src/admin/stages/identification/IdentificationStageForm.ts index be9ebbd770..a1024c8030 100644 --- a/web/src/admin/stages/identification/IdentificationStageForm.ts +++ b/web/src/admin/stages/identification/IdentificationStageForm.ts @@ -11,10 +11,12 @@ import { sourcesProvider, sourcesSelector } from "./IdentificationStageFormHelpe import { DEFAULT_CONFIG } from "#common/api/config"; import { groupBy } from "#common/utils"; +import { AKLabel } from "#components/ak-label"; + import { BaseStageForm } from "#admin/stages/BaseStageForm"; import { - FlowsInstancesListDesignationEnum, + FlowDesignationEnum, IdentificationStage, Stage, StagesApi, @@ -87,7 +89,22 @@ export class IdentificationStageForm extends BaseStageForm
    - + + ${AKLabel( + { + slot: "label", + className: "pf-c-form__group-label", + htmlFor: "userFields", + }, + msg("User Fields"), + )} + +

    + ${msg( + "Fields a user can identify themselves with. If no fields are selected, the user will only be able to use sources.", + )} +

    + .map(({ name }) => name) .filter((name) => this.isUserFieldSelected(name))} > -

    - ${msg( - "Fields a user can identify themselves with. If no fields are selected, the user will only be able to use sources.", - )} -

    name="passwordlessFlow" >

    @@ -275,7 +287,7 @@ export class IdentificationStageForm extends BaseStageForm name="enrollmentFlow" > @@ -287,7 +299,7 @@ export class IdentificationStageForm extends BaseStageForm

    diff --git a/web/src/admin/stages/invitation/InvitationForm.ts b/web/src/admin/stages/invitation/InvitationForm.ts index d11f6bf81f..394a12bde4 100644 --- a/web/src/admin/stages/invitation/InvitationForm.ts +++ b/web/src/admin/stages/invitation/InvitationForm.ts @@ -1,5 +1,6 @@ import "#admin/common/ak-flow-search/ak-flow-search"; import "#components/ak-switch-input"; +import "#components/ak-slug-input"; import "#elements/CodeMirror"; import "#elements/forms/HorizontalFormElement"; import "#elements/forms/SearchSelect/index"; @@ -9,7 +10,7 @@ import { dateTimeLocal } from "#common/temporal"; import { ModelForm } from "#elements/forms/ModelForm"; -import { FlowsInstancesListDesignationEnum, Invitation, StagesApi } from "@goauthentik/api"; +import { FlowDesignationEnum, Invitation, StagesApi } from "@goauthentik/api"; import YAML from "yaml"; @@ -19,6 +20,9 @@ import { customElement } from "lit/decorators.js"; @customElement("ak-invitation-form") export class InvitationForm extends ModelForm { + public static override verboseName = msg("Invitation"); + public static override verboseNamePlural = msg("Invitations"); + loadInstance(pk: string): Promise { return new StagesApi(DEFAULT_CONFIG).stagesInvitationInvitationsRetrieve({ inviteUuid: pk, @@ -44,28 +48,15 @@ export class InvitationForm extends ModelForm { } protected override renderForm(): TemplateResult { - const checkSlug = (ev: InputEvent) => { - if (ev && ev.target && ev.target instanceof HTMLInputElement) { - ev.target.value = (ev.target.value ?? "").replace(/[^a-z0-9-]/g, ""); - } - }; - - return html` - checkSlug(ev)} - data-ak-slug="true" - /> -

    - ${msg( - "The name of an invitation must be a slug: only lower case letters, numbers, and the hyphen are permitted here.", - )} -

    -
    + return html` {

    diff --git a/web/src/admin/stages/invitation/InvitationListLink.ts b/web/src/admin/stages/invitation/InvitationListLink.ts index 80b5b18c3b..48de202694 100644 --- a/web/src/admin/stages/invitation/InvitationListLink.ts +++ b/web/src/admin/stages/invitation/InvitationListLink.ts @@ -10,7 +10,7 @@ import { AKElement } from "#elements/Base"; import { Invitation, StagesApi } from "@goauthentik/api"; import { msg } from "@lit/localize"; -import { CSSResult, html, nothing, TemplateResult } from "lit"; +import { css, CSSResult, html, nothing, TemplateResult } from "lit"; import { customElement, property } from "lit/decorators.js"; import { until } from "lit/directives/until.js"; @@ -27,7 +27,30 @@ export class InvitationListLink extends AKElement { @property() selectedFlow?: string; - static styles: CSSResult[] = [PFForm, PFFormControl, PFDescriptionList, PFButton]; + /** + * When true, the "Send via Email" button dispatches the + * `ak-invitation-send-email-inline` event instead of opening the nested + * email modal. Used by the invitation wizard's success step so the email + * form can be rendered as its own wizard step. + */ + @property({ type: Boolean, attribute: "inline-send-email" }) + inlineSendEmail = false; + + static styles: CSSResult[] = [ + PFForm, + PFFormControl, + PFDescriptionList, + PFButton, + css` + :host { + display: block; + width: 100%; + } + input.pf-c-form-control { + width: 100%; + } + `, + ]; renderLink(): string { if (this.invitation?.flowObj) { @@ -103,6 +126,7 @@ export class InvitationListLink extends AKElement { class="pf-c-form-control" readonly type="text" + style="width: 100%;" value=${this.renderLink()} />

    @@ -122,18 +146,32 @@ export class InvitationListLink extends AKElement { > ${msg("Copy Link")} - - ${msg("Send")} - ${msg("Send Invitation via Email")} - - - - + ${this.inlineSendEmail + ? html`` + : html` + ${msg("Send")} + ${msg("Send Invitation via Email")} + + + + `}
    diff --git a/web/src/admin/stages/invitation/InvitationListPage.ts b/web/src/admin/stages/invitation/InvitationListPage.ts index a962fd2f81..d60288b2b3 100644 --- a/web/src/admin/stages/invitation/InvitationListPage.ts +++ b/web/src/admin/stages/invitation/InvitationListPage.ts @@ -1,6 +1,8 @@ import "#admin/rbac/ObjectPermissionModal"; import "#admin/stages/invitation/InvitationForm"; import "#admin/stages/invitation/InvitationListLink"; +import "#admin/stages/invitation/wizard/InvitationWizard"; +import "#elements/buttons/Dropdown"; import "#elements/buttons/ModalButton"; import "#elements/buttons/SpinnerButton/ak-spinner-button"; import "#elements/forms/DeleteBulkForm"; @@ -9,6 +11,7 @@ import "@patternfly/elements/pf-tooltip/pf-tooltip.js"; import { DEFAULT_CONFIG } from "#common/api/config"; +import { IconEditButton, modalInvoker } from "#elements/dialogs"; import { PFColor } from "#elements/Label"; import { PaginatedResponse, TableColumn } from "#elements/table/Table"; import { TablePage } from "#elements/table/TablePage"; @@ -16,45 +19,43 @@ import { SlottedTemplateResult } from "#elements/types"; import { setPageDetails } from "#components/ak-page-navbar"; -import { - FlowDesignationEnum, - Invitation, - RbacPermissionsAssignedByRolesListModelEnum, - StagesApi, -} from "@goauthentik/api"; +import { InvitationForm } from "#admin/stages/invitation/InvitationForm"; +import { InvitationWizard } from "#admin/stages/invitation/wizard/InvitationWizard"; + +import { FlowDesignationEnum, Invitation, ModelEnum, StagesApi } from "@goauthentik/api"; import { msg } from "@lit/localize"; -import { CSSResult, html, HTMLTemplateResult, nothing, PropertyValues, TemplateResult } from "lit"; -import { customElement, property, state } from "lit/decorators.js"; +import { CSSResult, html, PropertyValues, TemplateResult } from "lit"; +import { customElement, state } from "lit/decorators.js"; import PFBanner from "@patternfly/patternfly/components/Banner/banner.css"; @customElement("ak-stage-invitation-list") export class InvitationListPage extends TablePage { - expandable = true; + public static styles: CSSResult[] = [...super.styles, PFBanner]; protected override searchEnabled = true; - public pageTitle = msg("Invitations"); - public pageDescription = msg( + + public override pageTitle = msg("Invitations"); + public override pageDescription = msg( "Create Invitation Links to enroll Users, and optionally force specific attributes of their account.", ); - public pageIcon = "pf-icon pf-icon-migration"; + public override pageIcon = "pf-icon pf-icon-migration"; - static styles: CSSResult[] = [...super.styles, PFBanner]; + public override checkbox = true; + public override clearOnRefresh = true; + public override expandable = true; + public override searchPlaceholder = msg("Search for an invitation by name..."); - checkbox = true; - clearOnRefresh = true; - - @property() - order = "expires"; + public override order = "expires"; @state() - invitationStageExists = false; + protected invitationStageExists = false; @state() - multipleEnrollmentFlows = false; + protected multipleEnrollmentFlows = false; - async apiEndpoint(): Promise> { + protected override async apiEndpoint(): Promise> { try { // Check if any invitation stages exist const stages = await new StagesApi(DEFAULT_CONFIG).stagesInvitationStagesList({ @@ -78,14 +79,14 @@ export class InvitationListPage extends TablePage { }); } - protected columns: TableColumn[] = [ + protected override columns: TableColumn[] = [ [msg("Name"), "name"], [msg("Created by"), "created_by"], [msg("Expiry")], [msg("Actions"), null, msg("Row Actions")], ]; - renderToolbarSelected(): TemplateResult { + protected override renderToolbarSelected(): SlottedTemplateResult { const disabled = this.selectedElements.length < 1; return html` { `; } - row(item: Invitation): SlottedTemplateResult[] { + protected override row(item: Invitation): SlottedTemplateResult[] { return [ html`
    ${item.name}
    ${!item.flowObj && this.multipleEnrollmentFlows @@ -118,50 +119,94 @@ export class InvitationListPage extends TablePage { )} ` - : nothing}`, + : null}`, html` ${item.createdBy.name}`, - html`${item.expires?.toLocaleString() || msg("-")}`, - html` - ${msg("Update")} - ${msg("Update Invitation")} - - - + item.expires?.toLocaleString() || msg("-"), + html`${IconEditButton(InvitationForm, item.pk)} + `, ]; } - renderExpanded(item: Invitation): TemplateResult { + protected override renderExpanded(item: Invitation): SlottedTemplateResult { return html``; } - renderObjectCreate(): TemplateResult { - return html` - - ${msg("Create")} - ${msg("Create Invitation")} - - - - `; + protected override renderObjectCreate(): SlottedTemplateResult { + return html`${this.renderNewInvitationDropdown()}`; } - render(): HTMLTemplateResult { + protected renderNewInvitationDropdown(): TemplateResult { + return html` +
    + + +
    + +
    `; + } + + protected override render(): SlottedTemplateResult { return html`${this.invitationStageExists - ? nothing + ? null : html`
    ${msg( @@ -174,8 +219,9 @@ export class InvitationListPage extends TablePage { `; } - updated(changed: PropertyValues) { + public override updated(changed: PropertyValues) { super.updated(changed); + setPageDetails({ icon: this.pageIcon, header: this.pageTitle, diff --git a/web/src/admin/stages/invitation/wizard/InvitationWizard.ts b/web/src/admin/stages/invitation/wizard/InvitationWizard.ts new file mode 100644 index 0000000000..1757921ad8 --- /dev/null +++ b/web/src/admin/stages/invitation/wizard/InvitationWizard.ts @@ -0,0 +1,62 @@ +import "#admin/stages/invitation/wizard/InvitationWizardDetailsStep"; +import "#admin/stages/invitation/wizard/InvitationWizardEmailStep"; +import "#admin/stages/invitation/wizard/InvitationWizardFlowStep"; +import "#admin/stages/invitation/wizard/InvitationWizardSuccessStep"; +import "#elements/wizard/Wizard"; + +import { AKElement } from "#elements/Base"; +import { TransclusionChildElement, TransclusionChildSymbol } from "#elements/dialogs"; +import { SlottedTemplateResult } from "#elements/types"; + +import { msg } from "@lit/localize"; +import { customElement } from "@lit/reactive-element/decorators/custom-element.js"; +import { property } from "@lit/reactive-element/decorators/property.js"; +import { html } from "lit"; + +export type InvitationWizardFlowMode = "existing" | "create"; + +@customElement("ak-invitation-wizard") +export class InvitationWizard extends AKElement implements TransclusionChildElement { + public static verboseName = msg("Invitation"); + + public [TransclusionChildSymbol] = true; + + @property({ type: String }) + public mode: InvitationWizardFlowMode = "existing"; + + protected override createRenderRoot(): HTMLElement | DocumentFragment { + return this; + } + + protected override render(): SlottedTemplateResult { + return html` + + + + + `; + } +} + +declare global { + interface HTMLElementTagNameMap { + "ak-invitation-wizard": InvitationWizard; + } +} diff --git a/web/src/admin/stages/invitation/wizard/InvitationWizardDetailsStep.ts b/web/src/admin/stages/invitation/wizard/InvitationWizardDetailsStep.ts new file mode 100644 index 0000000000..8ff43cdf4a --- /dev/null +++ b/web/src/admin/stages/invitation/wizard/InvitationWizardDetailsStep.ts @@ -0,0 +1,261 @@ +import "#components/ak-switch-input"; +import "#elements/CodeMirror"; +import "#elements/forms/HorizontalFormElement"; + +import type { InvitationWizardState } from "./types"; + +import { DEFAULT_CONFIG } from "#common/api/config"; +import { + parseAPIResponseError, + pluckErrorDetail, + pluckFallbackFieldErrors, +} from "#common/errors/network"; +import { MessageLevel } from "#common/messages"; +import { dateTimeLocal } from "#common/temporal"; + +import { showMessage } from "#elements/messages/MessageContainer"; +import { WizardPage } from "#elements/wizard/WizardPage"; + +import { FlowsApi, ManagedApi, StagesApi } from "@goauthentik/api"; + +import YAML from "yaml"; + +import { msg, str } from "@lit/localize"; +import { CSSResult, html, TemplateResult } from "lit"; +import { customElement, state } from "lit/decorators.js"; + +import PFForm from "@patternfly/patternfly/components/Form/form.css"; +import PFFormControl from "@patternfly/patternfly/components/FormControl/form-control.css"; +import PFBase from "@patternfly/patternfly/patternfly-base.css"; + +const MINIMAL_BLUEPRINT_PATH = "example/flows-invitation-enrollment-minimal.yaml"; + +@customElement("ak-invitation-wizard-details-step") +export class InvitationWizardDetailsStep extends WizardPage { + static styles: CSSResult[] = [PFBase, PFForm, PFFormControl]; + + @state() + invitationName = ""; + + @state() + invitationExpires: string = dateTimeLocal(new Date(Date.now() + 48 * 60 * 60 * 1000)); + + @state() + fixedDataRaw = "{}"; + + @state() + singleUse = true; + + activeCallback = async (): Promise => { + this.host.valid = this.invitationName.length > 0; + }; + + async #fail(step: string, err: unknown): Promise { + const parsed = await parseAPIResponseError(err); + const fieldErrors = pluckFallbackFieldErrors(parsed); + const detail = fieldErrors.length > 0 ? fieldErrors.join(" ") : pluckErrorDetail(parsed); + showMessage({ + level: MessageLevel.error, + message: msg(str`${step} failed`), + description: detail, + }); + this.logger.error("Invitation wizard step failed", { step, error: err }); + return false; + } + + validate(): void { + let validYaml = true; + try { + YAML.parse(this.fixedDataRaw); + } catch { + validYaml = false; + } + this.host.valid = + this.invitationName.length > 0 && this.invitationExpires.length > 0 && validYaml; + } + + nextCallback = async (): Promise => { + if (!this.invitationName) return false; + + let fixedData: Record = {}; + try { + fixedData = YAML.parse(this.fixedDataRaw) || {}; + } catch { + return false; + } + + const wizardState = this.host.state as unknown as InvitationWizardState; + + if (wizardState.createdInvitationPk) { + return true; + } + + wizardState.invitationName = this.invitationName; + wizardState.invitationExpires = this.invitationExpires; + wizardState.invitationFixedData = fixedData; + wizardState.invitationSingleUse = this.singleUse; + + if (wizardState.needsFlow) { + try { + const result = await new ManagedApi(DEFAULT_CONFIG).managedBlueprintsImportCreate({ + path: MINIMAL_BLUEPRINT_PATH, + context: JSON.stringify({ + flow_name: wizardState.newFlowName, + flow_slug: wizardState.newFlowSlug, + stage_name: wizardState.newStageName, + continue_flow_without_invitation: wizardState.continueFlowWithoutInvitation, + user_type: wizardState.newUserType, + }), + }); + if (!result.success) { + const logs = (result.logs || []) + .map((l) => l.event) + .filter((m) => !!m) + .join("\n"); + return this.#fail( + msg("Importing enrollment flow blueprint"), + new Error(logs || msg("Blueprint validation failed")), + ); + } + + const slugToLookup = wizardState.newFlowSlug!; + const flows = await new FlowsApi(DEFAULT_CONFIG).flowsInstancesList({ + slug: slugToLookup, + }); + const createdFlow = flows.results[0]; + if (!createdFlow) { + return this.#fail( + msg("Importing enrollment flow blueprint"), + new Error( + msg(str`Flow with slug "${slugToLookup}" not found after import`), + ), + ); + } + wizardState.createdFlowPk = createdFlow.pk; + wizardState.createdFlowSlug = createdFlow.slug; + wizardState.needsFlow = false; + wizardState.needsStage = false; + wizardState.needsBinding = false; + } catch (err) { + return this.#fail(msg("Importing enrollment flow blueprint"), err); + } + } + + try { + const flowPk = wizardState.createdFlowPk || wizardState.selectedFlowPk || undefined; + const invitation = await new StagesApi( + DEFAULT_CONFIG, + ).stagesInvitationInvitationsCreate({ + invitationRequest: { + name: wizardState.invitationName!, + expires: wizardState.invitationExpires + ? new Date(wizardState.invitationExpires) + : undefined, + fixedData: wizardState.invitationFixedData, + singleUse: wizardState.invitationSingleUse, + flow: flowPk || null, + }, + }); + wizardState.createdInvitationPk = invitation.pk; + wizardState.createdInvitation = invitation; + } catch (err) { + return this.#fail(msg("Creating invitation"), err); + } + + return true; + }; + + override reset(): void { + this.invitationName = ""; + this.invitationExpires = dateTimeLocal(new Date(Date.now() + 48 * 60 * 60 * 1000)); + this.fixedDataRaw = "{}"; + this.singleUse = true; + } + + render(): TemplateResult { + const wizardState = this.host.state as unknown as InvitationWizardState; + const flowDisplay = + wizardState.flowMode === "existing" + ? wizardState.selectedFlowSlug + : wizardState.newFlowSlug; + + return html`
    + + { + const target = ev.target as HTMLInputElement; + this.invitationName = target.value.replace(/[^a-z0-9-]/g, ""); + target.value = this.invitationName; + this.validate(); + }} + /> +

    + ${msg( + "The name of an invitation must be a slug: only lower case letters, numbers, and the hyphen are permitted here.", + )} +

    +
    + + { + this.invitationExpires = (ev.target as HTMLInputElement).value; + this.validate(); + }} + /> + + + +

    + ${msg( + "The flow selected in the previous step. The invitation will be bound to this flow.", + )} +

    +
    + + { + this.fixedDataRaw = ev.detail.value; + this.validate(); + }} + > + +

    + ${msg( + "Optional data which is loaded into the flow's 'prompt_data' context variable. YAML or JSON.", + )} +

    +
    + { + this.singleUse = (ev.target as HTMLInputElement).checked; + }} + help=${msg("When enabled, the invitation will be deleted after usage.")} + > +
    `; + } +} + +declare global { + interface HTMLElementTagNameMap { + "ak-invitation-wizard-details-step": InvitationWizardDetailsStep; + } +} diff --git a/web/src/admin/stages/invitation/wizard/InvitationWizardEmailStep.ts b/web/src/admin/stages/invitation/wizard/InvitationWizardEmailStep.ts new file mode 100644 index 0000000000..c73c164c63 --- /dev/null +++ b/web/src/admin/stages/invitation/wizard/InvitationWizardEmailStep.ts @@ -0,0 +1,217 @@ +import "#components/ak-textarea-input"; +import "#elements/forms/HorizontalFormElement"; + +import type { InvitationWizardState } from "./types"; + +import { DEFAULT_CONFIG } from "#common/api/config"; +import { + parseAPIResponseError, + pluckErrorDetail, + pluckFallbackFieldErrors, +} from "#common/errors/network"; +import { AKRefreshEvent } from "#common/events"; +import { MessageLevel } from "#common/messages"; + +import { showMessage } from "#elements/messages/MessageContainer"; +import { SlottedTemplateResult } from "#elements/types"; +import { WizardPage } from "#elements/wizard/WizardPage"; + +import { StagesApi, TypeCreate } from "@goauthentik/api"; + +import { msg, str } from "@lit/localize"; +import { CSSResult, html, TemplateResult } from "lit"; +import { customElement, state } from "lit/decorators.js"; + +import PFForm from "@patternfly/patternfly/components/Form/form.css"; +import PFFormControl from "@patternfly/patternfly/components/FormControl/form-control.css"; +import PFBase from "@patternfly/patternfly/patternfly-base.css"; + +@customElement("ak-invitation-wizard-email-step") +export class InvitationWizardEmailStep extends WizardPage { + static styles: CSSResult[] = [PFBase, PFForm, PFFormControl]; + + @state() + toAddresses = ""; + + @state() + ccAddresses = ""; + + @state() + bccAddresses = ""; + + @state() + template = "email/invitation.html"; + + @state() + availableTemplates: TypeCreate[] = []; + + override formatNextLabel(): SlottedTemplateResult { + return html`${msg("Send")} + + + `; + } + + activeCallback = async (): Promise => { + this.host.valid = this.toAddresses.trim().length > 0; + try { + this.availableTemplates = await new StagesApi( + DEFAULT_CONFIG, + ).stagesEmailTemplatesList(); + } catch { + this.availableTemplates = []; + } + }; + + parseEmailAddresses(raw: string): string[] { + return raw + .split(/[\n,;]/) + .map((value) => value.trim()) + .filter((value) => value.length > 0); + } + + validate(): void { + this.host.valid = this.parseEmailAddresses(this.toAddresses).length > 0; + } + + nextCallback = async (): Promise => { + const wizardState = this.host.state as unknown as InvitationWizardState; + const invitationPk = wizardState.createdInvitationPk; + if (!invitationPk) { + showMessage({ + level: MessageLevel.error, + message: msg("No invitation available to send"), + }); + return false; + } + + const to = this.parseEmailAddresses(this.toAddresses); + if (to.length === 0) { + showMessage({ + level: MessageLevel.error, + message: msg("Please enter at least one email address"), + }); + return false; + } + const cc = this.parseEmailAddresses(this.ccAddresses); + const bcc = this.parseEmailAddresses(this.bccAddresses); + + try { + await new StagesApi(DEFAULT_CONFIG).stagesInvitationInvitationsSendEmailCreate({ + inviteUuid: invitationPk, + invitationSendEmailRequest: { + emailAddresses: to, + ccAddresses: cc.length > 0 ? cc : undefined, + bccAddresses: bcc.length > 0 ? bcc : undefined, + template: this.template, + }, + }); + } catch (err) { + const parsed = await parseAPIResponseError(err); + const fieldErrors = pluckFallbackFieldErrors(parsed); + const detail = + fieldErrors.length > 0 ? fieldErrors.join(" ") : pluckErrorDetail(parsed); + showMessage({ + level: MessageLevel.error, + message: msg("Failed to queue invitation emails"), + description: detail, + }); + return false; + } + + showMessage({ + level: MessageLevel.success, + message: msg( + str`Invitation emails queued for sending to ${to.length} recipient(s). Check the System Tasks for more information.`, + ), + }); + this.dispatchEvent(new AKRefreshEvent()); + return true; + }; + + override reset(): void { + this.toAddresses = ""; + this.ccAddresses = ""; + this.bccAddresses = ""; + this.template = "email/invitation.html"; + } + + render(): TemplateResult { + return html`
    + + +

    + ${msg( + "One email address per line, or comma/semicolon separated. Each recipient will receive a separate email with an invitation link.", + )} +

    +
    + + +

    + ${msg( + "A comma-separated list of addresses to receive copies of the invitation. Recipients will receive the full list of other addresses in this list.", + )} +

    +
    + + +

    + ${msg( + "A comma-separated list of addresses to receive copies of the invitation. Recipients will not receive the addresses of other recipients.", + )} +

    +
    + + +

    + ${msg("Select the email template to use for sending invitations.")} +

    +
    +
    `; + } +} + +declare global { + interface HTMLElementTagNameMap { + "ak-invitation-wizard-email-step": InvitationWizardEmailStep; + } +} diff --git a/web/src/admin/stages/invitation/wizard/InvitationWizardFlowStep.ts b/web/src/admin/stages/invitation/wizard/InvitationWizardFlowStep.ts new file mode 100644 index 0000000000..05900faee6 --- /dev/null +++ b/web/src/admin/stages/invitation/wizard/InvitationWizardFlowStep.ts @@ -0,0 +1,347 @@ +import "#components/ak-radio-input"; +import "#components/ak-switch-input"; +import "#elements/forms/HorizontalFormElement"; +import "#elements/forms/SearchSelect/index"; + +import type { InvitationWizardState } from "./types"; + +import { DEFAULT_CONFIG } from "#common/api/config"; + +import { WizardPage } from "#elements/wizard/WizardPage"; + +import { + FlowDesignationEnum, + type FlowSet, + type InvitationStage, + StagesApi, +} from "@goauthentik/api"; + +import { msg } from "@lit/localize"; +import { CSSResult, html, TemplateResult } from "lit"; +import { customElement, property, state } from "lit/decorators.js"; + +import PFAlert from "@patternfly/patternfly/components/Alert/alert.css"; +import PFButton from "@patternfly/patternfly/components/Button/button.css"; +import PFForm from "@patternfly/patternfly/components/Form/form.css"; +import PFFormControl from "@patternfly/patternfly/components/FormControl/form-control.css"; +import PFBase from "@patternfly/patternfly/patternfly-base.css"; + +interface EnrollmentFlow { + slug: string; + pk: string; + name: string; +} + +@customElement("ak-invitation-wizard-flow-step") +export class InvitationWizardFlowStep extends WizardPage { + static styles: CSSResult[] = [PFBase, PFForm, PFFormControl, PFButton, PFAlert]; + + @property({ type: String }) + public mode: "existing" | "create" = "existing"; + + @state() + enrollmentFlows: EnrollmentFlow[] = []; + + @state() + loading = true; + + @state() + selectedFlowSlug?: string; + + @state() + selectedFlowPk?: string; + + @state() + newFlowName = "Enrollment with invitation"; + + @state() + newFlowSlug = "enrollment-with-invitation"; + + @state() + newStageName = "invitation-stage"; + + @state() + newUserType: "external" | "internal" = "external"; + + @state() + continueFlowWithoutInvitation = true; + + activeCallback = async (): Promise => { + this.host.valid = false; + + if (this.mode === "create") { + this.loading = false; + this.validate(); + return; + } + + this.loading = true; + + try { + const stages = await new StagesApi(DEFAULT_CONFIG).stagesInvitationStagesList({ + noFlows: false, + }); + + const flowMap = new Map(); + + stages.results.forEach((stage: InvitationStage) => { + (stage.flowSet || []) + .filter((flow: FlowSet) => flow.designation === FlowDesignationEnum.Enrollment) + .forEach((flow: FlowSet) => { + if (!flowMap.has(flow.slug)) { + flowMap.set(flow.slug, { + slug: flow.slug, + pk: flow.pk, + name: flow.name, + }); + } + }); + }); + + this.enrollmentFlows = Array.from(flowMap.values()); + + if (this.enrollmentFlows.length > 0) { + this.selectedFlowSlug = this.enrollmentFlows[0].slug; + this.selectedFlowPk = this.enrollmentFlows[0].pk; + this.host.valid = true; + } + } catch { + this.enrollmentFlows = []; + } + + this.loading = false; + + // If there's exactly one eligible flow, skip this step so the user goes + // straight to the invitation details. Drop ourselves from the step list + // so the back button from the next step doesn't bounce back here. + if (this.mode === "existing" && this.enrollmentFlows.length === 1) { + const currentSlot = this.slot; + const advanced = await this.host.navigateNext(); + if (advanced) { + this.host.steps = this.host.steps.filter((s) => s !== currentSlot); + } + } + }; + + validate(): void { + if (this.mode === "existing") { + this.host.valid = !!this.selectedFlowSlug; + } else { + this.host.valid = + this.newFlowName.length > 0 && + this.newFlowSlug.length > 0 && + this.newStageName.length > 0; + } + } + + nextCallback = async (): Promise => { + const state = this.host.state as unknown as InvitationWizardState; + + state.flowMode = this.mode; + + if (this.mode === "existing") { + if (!this.selectedFlowSlug) return false; + state.selectedFlowSlug = this.selectedFlowSlug; + state.selectedFlowPk = this.selectedFlowPk; + state.needsFlow = false; + state.needsStage = false; + state.needsBinding = false; + } else { + if (!this.newFlowName || !this.newFlowSlug || !this.newStageName) return false; + state.newFlowName = this.newFlowName; + state.newFlowSlug = this.newFlowSlug; + state.newStageName = this.newStageName; + state.newUserType = this.newUserType; + state.continueFlowWithoutInvitation = this.continueFlowWithoutInvitation; + state.needsFlow = true; + state.needsStage = true; + state.needsBinding = true; + } + + return true; + }; + + override reset(): void { + this.enrollmentFlows = []; + this.loading = true; + this.selectedFlowSlug = undefined; + this.selectedFlowPk = undefined; + this.newFlowName = "Enrollment with invitation"; + this.newFlowSlug = "enrollment-with-invitation"; + this.newStageName = "invitation-stage"; + this.newUserType = "external"; + this.continueFlowWithoutInvitation = true; + } + + slugify(value: string): string { + return value + .toLowerCase() + .replace(/[^a-z0-9]+/g, "-") + .replace(/^-|-$/g, ""); + } + + renderExistingFlowSelector(): TemplateResult { + if (this.enrollmentFlows.length === 0) { + return html` +
    +
    + +
    +

    + ${msg("No enrollment flows with invitation stages found")} +

    +
    +

    + ${msg( + "You can create a new enrollment flow and invitation stage right here, or cancel and bind an invitation stage to an existing flow manually.", + )} +

    + +
    +
    + `; + } + + return html` + + => { + if (!query) return this.enrollmentFlows; + const needle = query.toLowerCase(); + return this.enrollmentFlows.filter( + (flow) => + flow.name.toLowerCase().includes(needle) || + flow.slug.toLowerCase().includes(needle), + ); + }} + .renderElement=${(flow: EnrollmentFlow): string => flow.name} + .renderDescription=${(flow: EnrollmentFlow): TemplateResult => + html`${flow.slug}`} + .value=${(flow: EnrollmentFlow | undefined): string | undefined => flow?.pk} + .selected=${(flow: EnrollmentFlow): boolean => flow.pk === this.selectedFlowPk} + @ak-change=${(ev: CustomEvent<{ value: EnrollmentFlow | null }>) => { + const flow = ev.detail.value; + this.selectedFlowSlug = flow?.slug; + this.selectedFlowPk = flow?.pk; + this.validate(); + }} + style="display: block; width: 100%;" + > +

    + ${msg( + "Only enrollment flows that have an invitation stage bound to them are listed here.", + )} +

    +
    + `; + } + + renderCreateForm(): TemplateResult { + return html` + + { + const target = ev.target as HTMLInputElement; + this.newFlowName = target.value; + this.newFlowSlug = this.slugify(target.value); + this.validate(); + }} + /> +

    ${msg("Name for the new enrollment flow.")}

    +
    + + { + const target = ev.target as HTMLInputElement; + this.newFlowSlug = target.value.replace(/[^a-z0-9-]/g, ""); + this.validate(); + }} + /> +

    ${msg("Visible in the URL.")}

    +
    + + { + this.newStageName = (ev.target as HTMLInputElement).value; + this.validate(); + }} + /> +

    ${msg("Name for the new invitation stage.")}

    +
    + ) => { + this.newUserType = ev.detail.value; + }} + > + { + this.continueFlowWithoutInvitation = (ev.target as HTMLInputElement).checked; + }} + help=${msg( + "If enabled, the stage will jump to the next stage when no invitation is given. If disabled, the flow will be cancelled without a valid invitation.", + )} + > + `; + } + + render(): TemplateResult { + if (this.loading) { + return html`
    +

    ${msg("Loading...")}

    +
    `; + } + + return html`
    + ${this.mode === "existing" + ? this.renderExistingFlowSelector() + : this.renderCreateForm()} +
    `; + } +} + +declare global { + interface HTMLElementTagNameMap { + "ak-invitation-wizard-flow-step": InvitationWizardFlowStep; + } +} diff --git a/web/src/admin/stages/invitation/wizard/InvitationWizardSuccessStep.ts b/web/src/admin/stages/invitation/wizard/InvitationWizardSuccessStep.ts new file mode 100644 index 0000000000..16bb2af37e --- /dev/null +++ b/web/src/admin/stages/invitation/wizard/InvitationWizardSuccessStep.ts @@ -0,0 +1,102 @@ +import "#admin/stages/invitation/InvitationListLink"; + +import type { InvitationWizardState } from "./types"; + +import { AKRefreshEvent } from "#common/events"; +import { MessageLevel } from "#common/messages"; + +import { showMessage } from "#elements/messages/MessageContainer"; +import { WizardPage } from "#elements/wizard/WizardPage"; + +import { Invitation } from "@goauthentik/api"; + +import { msg } from "@lit/localize"; +import { css, CSSResult, html, TemplateResult } from "lit"; +import { customElement, state } from "lit/decorators.js"; + +import PFAlert from "@patternfly/patternfly/components/Alert/alert.css"; +import PFForm from "@patternfly/patternfly/components/Form/form.css"; +import PFBase from "@patternfly/patternfly/patternfly-base.css"; + +@customElement("ak-invitation-wizard-success-step") +export class InvitationWizardSuccessStep extends WizardPage { + static styles: CSSResult[] = [ + PFBase, + PFForm, + PFAlert, + css` + :host { + display: block; + width: 100%; + } + ak-stage-invitation-list-link { + display: block; + width: 100%; + } + `, + ]; + + @state() + invitation?: Invitation; + + #notified = false; + + activeCallback = async (): Promise => { + const wizardState = this.host.state as unknown as InvitationWizardState; + this.invitation = wizardState.createdInvitation; + this.host.valid = true; + + if (this.invitation && !this.#notified) { + showMessage({ + level: MessageLevel.success, + message: msg("Successfully created invitation."), + }); + this.#notified = true; + } + }; + + nextCallback = async (): Promise => { + this.dispatchEvent(new AKRefreshEvent()); + return true; + }; + + override reset(): void { + this.invitation = undefined; + this.#notified = false; + } + + render(): TemplateResult { + const invitation = this.invitation; + + if (!invitation) { + return html`
    +
    + +
    +

    ${msg("No invitation was created.")}

    +
    `; + } + + return html` + + `; + } + + onSendViaEmail = async (): Promise => { + const steps = this.host.steps; + if (!steps.includes("email-step")) { + this.host.steps = [...steps, "email-step"]; + } + await this.host.navigateNext(); + }; +} + +declare global { + interface HTMLElementTagNameMap { + "ak-invitation-wizard-success-step": InvitationWizardSuccessStep; + } +} diff --git a/web/src/admin/stages/invitation/wizard/types.ts b/web/src/admin/stages/invitation/wizard/types.ts new file mode 100644 index 0000000000..cc82305341 --- /dev/null +++ b/web/src/admin/stages/invitation/wizard/types.ts @@ -0,0 +1,31 @@ +import type { Invitation } from "@goauthentik/api"; + +export interface InvitationWizardState { + // Step 1: Flow selection + flowMode: "existing" | "create"; + selectedFlowSlug?: string; + selectedFlowPk?: string; + newFlowName?: string; + newFlowSlug?: string; + newStageName?: string; + newUserType?: "external" | "internal"; + continueFlowWithoutInvitation: boolean; + + // Flags for which API calls to make + needsFlow: boolean; + needsStage: boolean; + needsBinding: boolean; + + // Step 2: Invitation details + invitationName?: string; + invitationExpires?: string; + invitationFixedData?: Record; + invitationSingleUse: boolean; + + // Results from API calls + createdStagePk?: string; + createdFlowPk?: string; + createdFlowSlug?: string; + createdInvitationPk?: string; + createdInvitation?: Invitation; +} diff --git a/web/src/admin/stages/password/PasswordStageForm.ts b/web/src/admin/stages/password/PasswordStageForm.ts index 03ebe27ba5..ebcd455c2b 100644 --- a/web/src/admin/stages/password/PasswordStageForm.ts +++ b/web/src/admin/stages/password/PasswordStageForm.ts @@ -6,14 +6,16 @@ import "#elements/forms/SearchSelect/index"; import { DEFAULT_CONFIG } from "#common/api/config"; +import { AKLabel } from "#components/ak-label"; + import { RenderFlowOption } from "#admin/flows/utils"; import { BaseStageForm } from "#admin/stages/BaseStageForm"; import { BackendsEnum, Flow, + FlowDesignationEnum, FlowsApi, - FlowsInstancesListDesignationEnum, FlowsInstancesListRequest, PasswordStage, StagesApi, @@ -87,7 +89,20 @@ export class PasswordStageForm extends BaseStageForm {
    - + + ${AKLabel( + { + slot: "label", + className: "pf-c-form__group-label", + htmlFor: "backends", + required: true, + }, + msg("Backends"), + )} +

    + ${msg("Selection of backends to test the password against.")} +

    + { .map(({ name }) => name) .filter((name) => this.isBackendSelected(name))} > -

    - ${msg("Selection of backends to test the password against.")} -

    { .fetchObjects=${async (query?: string): Promise => { const args: FlowsInstancesListRequest = { ordering: "slug", - designation: - FlowsInstancesListDesignationEnum.StageConfiguration, + designation: FlowDesignationEnum.StageConfiguration, }; if (query !== undefined) { args.search = query; diff --git a/web/src/admin/stages/prompt/PromptForm.ts b/web/src/admin/stages/prompt/PromptForm.ts index 43e2da0cd1..a0b53d8474 100644 --- a/web/src/admin/stages/prompt/PromptForm.ts +++ b/web/src/admin/stages/prompt/PromptForm.ts @@ -39,6 +39,9 @@ class PreviewStageHost implements StageHost { @customElement("ak-prompt-form") export class PromptForm extends ModelForm { + public static override verboseName = msg("Prompt"); + public static override verboseNamePlural = msg("Prompts"); + @state() protected preview: PromptChallenge | null = null; @@ -77,7 +80,7 @@ export class PromptForm extends ModelForm { } async refreshPreview(prompt?: Prompt): Promise { - const promptRequest = prompt || this.serialize(); + const promptRequest = prompt || this.toJSON(); if (!promptRequest) { return; @@ -145,6 +148,9 @@ export class PromptForm extends ModelForm { [PromptTypeEnum.Separator, msg("Separator: Static Separator Line")], [PromptTypeEnum.Hidden, msg("Hidden: Hidden field, can be used to insert data into form.")], [PromptTypeEnum.Static, msg("Static: Static value, displayed as-is.")], + [PromptTypeEnum.AlertInfo, msg("Alert (Info): Static alert box with info styling")], + [PromptTypeEnum.AlertWarning, msg("Alert (Warning): Static alert box with warning styling")], + [PromptTypeEnum.AlertDanger, msg("Alert (Danger): Static alert box with danger styling")], [PromptTypeEnum.AkLocale, msg("authentik: Locale: Displays a list of locales authentik supports.")], ]; const currentType = this.instance?.type; diff --git a/web/src/admin/stages/prompt/PromptListPage.ts b/web/src/admin/stages/prompt/PromptListPage.ts index d94519eb0e..4d09ac85cf 100644 --- a/web/src/admin/stages/prompt/PromptListPage.ts +++ b/web/src/admin/stages/prompt/PromptListPage.ts @@ -9,30 +9,35 @@ import "@patternfly/elements/pf-tooltip/pf-tooltip.js"; import { DEFAULT_CONFIG } from "#common/api/config"; import { PFSize } from "#common/enums"; +import { IconEditButton, ModalInvokerButton } from "#elements/dialogs"; +import { IconPermissionButton } from "#elements/dialogs/components/IconPermissionButton"; import { PaginatedResponse, TableColumn } from "#elements/table/Table"; import { TablePage } from "#elements/table/TablePage"; import { SlottedTemplateResult } from "#elements/types"; -import { Prompt, RbacPermissionsAssignedByRolesListModelEnum, StagesApi } from "@goauthentik/api"; +import { PromptForm } from "#admin/stages/prompt/PromptForm"; + +import { ModelEnum, Prompt, StagesApi } from "@goauthentik/api"; import { msg } from "@lit/localize"; -import { html, TemplateResult } from "lit"; -import { customElement, property } from "lit/decorators.js"; +import { html } from "lit"; +import { customElement } from "lit/decorators.js"; @customElement("ak-stage-prompt-list") export class PromptListPage extends TablePage { protected override searchEnabled = true; - public pageTitle = msg("Prompts"); - public pageDescription = msg("Single Prompts that can be used for Prompt Stages."); - public pageIcon = "pf-icon pf-icon-plugged"; + public override searchPlaceholder = msg("Search for a prompt by name, field or type..."); - checkbox = true; - clearOnRefresh = true; + public override pageTitle = msg("Prompts"); + public override pageDescription = msg("Single Prompts that can be used for Prompt Stages."); + public override pageIcon = "pf-icon pf-icon-plugged"; - @property() - order = "name"; + public override checkbox = true; + public override clearOnRefresh = true; - async apiEndpoint(): Promise> { + public override order = "name"; + + protected override async apiEndpoint(): Promise> { return new StagesApi(DEFAULT_CONFIG).stagesPromptPromptsList( await this.defaultEndpointConfig(), ); @@ -47,7 +52,7 @@ export class PromptListPage extends TablePage { [msg("Actions"), null, msg("Row Actions")], ]; - renderToolbarSelected(): TemplateResult { + protected renderToolbarSelected(): SlottedTemplateResult { const disabled = this.selectedElements.length < 1; return html` { `; } - row(item: Prompt): SlottedTemplateResult[] { + protected override row(item: Prompt): SlottedTemplateResult[] { return [ - html`${item.name}`, + item.name, html`${item.fieldKey}`, - html`${item.type}`, - html`${item.order}`, + item.type, + item.order || msg("-"), html`${item.promptStagesObj.map((stage) => { return html`
  • ${stage.name}
  • `; })}`, - html` - ${msg("Update")} - ${msg("Update Prompt")} - - - - - `, + html`
    + ${IconEditButton(PromptForm, item.pk, item.name, { + size: PFSize.XLarge, + })} + ${IconPermissionButton(item.name, { + model: ModelEnum.AuthentikStagesPromptPrompt, + objectPk: item.pk, + })} +
    `, ]; } - renderObjectCreate(): TemplateResult { - return html` - - ${msg("Create")} - ${msg("Create Prompt")} - - - - `; + protected override renderObjectCreate(): SlottedTemplateResult { + return ModalInvokerButton(PromptForm, null, null, { + size: PFSize.XLarge, + }); } } diff --git a/web/src/admin/stages/redirect/RedirectStageForm.ts b/web/src/admin/stages/redirect/RedirectStageForm.ts index abfe609312..ecfdcb3a75 100644 --- a/web/src/admin/stages/redirect/RedirectStageForm.ts +++ b/web/src/admin/stages/redirect/RedirectStageForm.ts @@ -50,7 +50,9 @@ export class RedirectStageForm extends BaseStageForm { protected override renderForm(): TemplateResult { return html` - ${msg("Redirect the user to another flow, potentially with all gathered context")} + ${msg( + "Redirect the user to a static URL or another flow, optionally with all gathered context.", + )} { } protected override renderForm(): TemplateResult { - return html` + return html`
    ${msg( `Write any data from the flow's context's 'prompt_data' to the currently pending user. If no user is pending, a new user is created, and data is written to them.`, )} - - - - - +
    + + +
    + ${AKLabel( + { + slot: "label", + className: "pf-c-form__group-label", + htmlFor: "userCreationMode", + }, + msg("User creation mode"), + )} + { ?checked=${this.instance?.createUsersAsInactive ?? true} help=${msg("Mark newly created users as inactive.")} > - - - -

    - ${msg("User type used for newly created users.")} -

    -
    + []} + .value=${this.instance?.userType} + > + { + public static override verboseName = msg("Token"); + public static override verboseNamePlural = msg("Tokens"); + protected expirationMinimumDate = new Date(); @state() @@ -100,6 +103,7 @@ export class TokenForm extends ModelForm { => { const args: CoreUsersListRequest = { ordering: "username", diff --git a/web/src/admin/tokens/TokenListPage.ts b/web/src/admin/tokens/TokenListPage.ts index 47cbbceab7..fa3ce6424a 100644 --- a/web/src/admin/tokens/TokenListPage.ts +++ b/web/src/admin/tokens/TokenListPage.ts @@ -10,41 +10,40 @@ import "@patternfly/elements/pf-tooltip/pf-tooltip.js"; import { DEFAULT_CONFIG } from "#common/api/config"; import { intentToLabel } from "#common/labels"; +import { IconTokenCopyButton } from "#elements/buttons/IconTokenCopyButton"; +import { IconEditButton, ModalInvokerButton } from "#elements/dialogs"; +import { IconPermissionButton } from "#elements/dialogs/components/IconPermissionButton"; import { PaginatedResponse, TableColumn, Timestamp } from "#elements/table/Table"; import { TablePage } from "#elements/table/TablePage"; import { SlottedTemplateResult } from "#elements/types"; -import { - CoreApi, - IntentEnum, - RbacPermissionsAssignedByRolesListModelEnum, - Token, -} from "@goauthentik/api"; +import { TokenForm } from "#admin/tokens/TokenForm"; + +import { CoreApi, IntentEnum, ModelEnum, Token } from "@goauthentik/api"; import { msg } from "@lit/localize"; -import { html, nothing, TemplateResult } from "lit"; -import { customElement, property } from "lit/decorators.js"; +import { html, nothing } from "lit"; +import { customElement } from "lit/decorators.js"; @customElement("ak-token-list") export class TokenListPage extends TablePage { protected override searchEnabled = true; - public pageTitle = msg("Tokens"); - public pageDescription = msg( + public override pageTitle = msg("Tokens"); + public override pageDescription = msg( "Tokens are used throughout authentik for Email validation stages, Recovery keys and API access.", ); - public pageIcon = "pf-icon pf-icon-security"; + public override pageIcon = "pf-icon pf-icon-security"; + public override searchPlaceholder = msg("Search for a token identifier, user, or intent..."); protected override rowLabel(item: Token): string | null { return item.identifier; } - checkbox = true; - clearOnRefresh = true; + public override checkbox = true; + public override clearOnRefresh = true; + public override order = "expires"; - @property() - order = "expires"; - - async apiEndpoint(): Promise> { + protected override async apiEndpoint(): Promise> { return new CoreApi(DEFAULT_CONFIG).coreTokensList(await this.defaultEndpointConfig()); } @@ -57,7 +56,7 @@ export class TokenListPage extends TablePage { [msg("Actions"), null, msg("Row Actions")], ]; - renderToolbarSelected(): TemplateResult { + protected override renderToolbarSelected(): SlottedTemplateResult { const disabled = this.selectedElements.length < 1; return html` { `; } - renderObjectCreate(): TemplateResult { - return html` - - ${msg("Create")} - ${msg("New Token")} - - - - `; + protected override renderObjectCreate(): SlottedTemplateResult { + return ModalInvokerButton(TokenForm); } - row(item: Token): SlottedTemplateResult[] { + protected override row(item: Token): SlottedTemplateResult[] { return [ html`
    ${item.identifier}
    ${item.managed @@ -103,19 +95,10 @@ export class TokenListPage extends TablePage { html``, Timestamp(item.expires && item.expiring ? item.expires : null), html`${intentToLabel(item.intent ?? IntentEnum.Api)}`, - html` + html`
    ${!item.managed - ? html` - ${msg("Update")} - ${msg("Update Token")} - - - ` - : html` `} - - - - - - - - `, + ${IconPermissionButton(item.identifier, { + model: ModelEnum.AuthentikCoreToken, + objectPk: item.pk, + })} + ${IconTokenCopyButton(item.identifier)} +
    `, ]; } } diff --git a/web/src/admin/users/GroupSelectModal.ts b/web/src/admin/users/GroupSelectModal.ts deleted file mode 100644 index 9ede11aa10..0000000000 --- a/web/src/admin/users/GroupSelectModal.ts +++ /dev/null @@ -1,104 +0,0 @@ -import "#components/ak-status-label"; -import "#elements/buttons/SpinnerButton/index"; - -import { DEFAULT_CONFIG } from "#common/api/config"; - -import { PaginatedResponse, TableColumn } from "#elements/table/Table"; -import { TableModal } from "#elements/table/TableModal"; -import { SlottedTemplateResult } from "#elements/types"; - -import { CoreApi, Group } from "@goauthentik/api"; - -import { msg } from "@lit/localize"; -import { CSSResult, html, nothing, TemplateResult } from "lit"; -import { customElement, property } from "lit/decorators.js"; - -import PFBanner from "@patternfly/patternfly/components/Banner/banner.css"; - -@customElement("ak-user-group-select-table") -export class GroupSelectModal extends TableModal { - checkbox = true; - checkboxChip = true; - - protected override searchEnabled = true; - public supportsQL = true; - - @property() - confirm!: (selectedItems: Group[]) => Promise; - - order = "name"; - - static styles: CSSResult[] = [...super.styles, PFBanner]; - - async apiEndpoint(): Promise> { - return new CoreApi(DEFAULT_CONFIG).coreGroupsList({ - ...(await this.defaultEndpointConfig()), - includeUsers: false, - }); - } - - protected columns: TableColumn[] = [ - [msg("Name"), "username"], - [msg("Superuser"), "is_superuser"], - [msg("Members"), ""], - ]; - - row(item: Group): SlottedTemplateResult[] { - return [ - html`
    -
    ${item.name}
    -
    `, - html` `, - html`${(item.users || []).length}`, - ]; - } - - renderSelectedChip(item: Group): TemplateResult { - return html`${item.name}`; - } - - renderModalInner(): SlottedTemplateResult { - const willSuperuser = this.selectedElements.filter((g) => g.isSuperuser).length > 0; - return html`
    -
    -

    ${msg("Select groups to add user to")}

    -
    -
    - ${willSuperuser - ? html` -
    - ${msg( - "Warning: Adding the user to the selected group(s) will give them superuser permissions.", - )} -
    - ` - : nothing} -
    ${this.renderTable()}
    -
    - { - return this.confirm(this.selectedElements).then(() => { - this.open = false; - }); - }} - class="pf-m-primary" - > - ${msg("Add")}   - { - this.open = false; - }} - class="pf-m-secondary" - > - ${msg("Cancel")} - -
    `; - } -} - -declare global { - interface HTMLElementTagNameMap { - "ak-user-group-select-table": GroupSelectModal; - } -} diff --git a/web/src/admin/users/RoleSelectModal.ts b/web/src/admin/users/RoleSelectModal.ts deleted file mode 100644 index 354c2964ad..0000000000 --- a/web/src/admin/users/RoleSelectModal.ts +++ /dev/null @@ -1,88 +0,0 @@ -import "#components/ak-status-label"; -import "#elements/buttons/SpinnerButton/index"; - -import { DEFAULT_CONFIG } from "#common/api/config"; - -import { PaginatedResponse, TableColumn } from "#elements/table/Table"; -import { TableModal } from "#elements/table/TableModal"; -import { SlottedTemplateResult } from "#elements/types"; - -import { RbacApi, Role } from "@goauthentik/api"; - -import { msg } from "@lit/localize"; -import { CSSResult, html, TemplateResult } from "lit"; -import { customElement, property } from "lit/decorators.js"; - -import PFBanner from "@patternfly/patternfly/components/Banner/banner.css"; - -@customElement("ak-user-role-select-table") -export class RoleSelectModal extends TableModal { - static styles: CSSResult[] = [...super.styles, PFBanner]; - - checkbox = true; - checkboxChip = true; - - protected override searchEnabled = true; - public supportsQL = true; - - @property({ attribute: false }) - public confirm: ((selectedItems: Role[]) => Promise) | null = null; - - order = "name"; - - async apiEndpoint(): Promise> { - return new RbacApi(DEFAULT_CONFIG).rbacRolesList({ - ...(await this.defaultEndpointConfig()), - }); - } - - protected columns: TableColumn[] = [[msg("Name"), "name"]]; - - row(item: Role): SlottedTemplateResult[] { - return [html`
    ${item.name}
    `]; - } - - renderSelectedChip(item: Role): TemplateResult { - return html`${item.name}`; - } - - renderModalInner(): SlottedTemplateResult { - return html`
    -
    -

    - ${msg("Select roles to attach to the user")} -

    -
    -
    -
    ${this.renderTable()}
    -
    - { - if (!this.confirm) { - return; - } - return this.confirm(this.selectedElements).then(() => { - this.open = false; - }); - }} - class="pf-m-primary" - > - ${msg("Add")}   - { - this.open = false; - }} - class="pf-m-secondary" - > - ${msg("Cancel")} - -
    `; - } -} - -declare global { - interface HTMLElementTagNameMap { - "ak-user-role-select-table": RoleSelectModal; - } -} diff --git a/web/src/admin/users/ServiceAccountForm.ts b/web/src/admin/users/ServiceAccountForm.ts index cfba6f3468..8e04fa902a 100644 --- a/web/src/admin/users/ServiceAccountForm.ts +++ b/web/src/admin/users/ServiceAccountForm.ts @@ -9,6 +9,7 @@ import { dateTimeLocal } from "#common/temporal"; import { Form } from "#elements/forms/Form"; import { ModalForm } from "#elements/forms/ModalForm"; +import { SlottedTemplateResult } from "#elements/types"; import { AKLabel } from "#components/ak-label"; @@ -30,6 +31,10 @@ const EXPIRATION_DURATION = 1000 * 60 ** 2 * 24 * 360; // 360 days @customElement("ak-user-service-account-form") export class ServiceAccountForm extends Form { + public static override verboseName = msg("Service Account"); + public static override verboseNamePlural = msg("Service Accounts"); + public override cancelButtonLabel = msg("Close"); + @state() protected expiresAt: Date | null = new Date(Date.now() + EXPIRATION_DURATION); @@ -58,7 +63,9 @@ export class ServiceAccountForm extends Form { userServiceAccountRequest: data, }); this.result = result; - (this.parentElement as ModalForm).showSubmitButton = false; + if (this.parentElement instanceof ModalForm) { + this.parentElement.showSubmitButton = false; + } if (this.targetGroup) { await new CoreApi(DEFAULT_CONFIG).coreGroupsAddUserCreate({ groupUuid: this.targetGroup.pk, @@ -83,7 +90,9 @@ export class ServiceAccountForm extends Form { this.result = null; this.expiresAt = new Date(Date.now() + EXPIRATION_DURATION); - (this.parentElement as ModalForm).showSubmitButton = true; + if (this.parentElement instanceof ModalForm) { + this.parentElement.showSubmitButton = true; + } } //#region Event Listeners @@ -104,7 +113,7 @@ export class ServiceAccountForm extends Form { return html` {
    `; } - renderResponseForm(): TemplateResult { + protected renderResponseForm(): SlottedTemplateResult { return html`

    ${msg( "Use the username and password below to authenticate. The password can be retrieved later on the Tokens page.", @@ -182,7 +191,7 @@ export class ServiceAccountForm extends Form { `; } - renderFormWrapper(): TemplateResult { + protected override renderFormWrapper(): SlottedTemplateResult { if (this.result) { return this.renderResponseForm(); } diff --git a/web/src/admin/users/UserActiveForm.ts b/web/src/admin/users/UserActiveForm.ts index e06278e0db..18b7ada37d 100644 --- a/web/src/admin/users/UserActiveForm.ts +++ b/web/src/admin/users/UserActiveForm.ts @@ -1,74 +1,108 @@ import "#elements/buttons/SpinnerButton/index"; +import "#elements/forms/FormGroup"; -import { parseAPIResponseError, pluckErrorDetail } from "#common/errors/network"; -import { MessageLevel } from "#common/messages"; +import { DEFAULT_CONFIG } from "#common/api/config"; +import { formatDisambiguatedUserDisplayName } from "#common/users"; -import { showMessage } from "#elements/messages/MessageContainer"; -import { UserDeleteForm } from "#elements/user/utils"; +import { modalInvoker } from "#elements/dialogs"; +import { DestructiveModelForm } from "#elements/forms/DestructiveModelForm"; +import { WithLocale } from "#elements/mixins/locale"; +import { SlottedTemplateResult } from "#elements/types"; -import { msg, str } from "@lit/localize"; -import { html, TemplateResult } from "lit"; +import { CoreApi, UsedBy, User } from "@goauthentik/api"; + +import { str } from "@lit/localize"; +import { msg } from "@lit/localize/init/install"; +import { html } from "lit-html"; import { customElement } from "lit/decorators.js"; -@customElement("ak-user-active-form") -export class UserActiveForm extends UserDeleteForm { - onSuccess(): void { - showMessage({ - message: msg( - str`Successfully updated ${this.objectLabel} ${this.getObjectDisplayName()}`, - ), - level: MessageLevel.success, +/** + * A form for activating/deactivating a user. + */ +@customElement("ak-user-activation-toggle-form") +export class UserActivationToggleForm extends WithLocale(DestructiveModelForm) { + public static override verboseName = msg("User"); + public static override verboseNamePlural = msg("Users"); + + protected coreAPI = new CoreApi(DEFAULT_CONFIG); + + protected override send(): Promise { + if (!this.instance) { + return Promise.reject(new Error("No user instance provided")); + } + const nextActiveState = !this.instance.isActive; + + return this.coreAPI.coreUsersPartialUpdate({ + id: this.instance.pk, + patchedUserRequest: { + isActive: nextActiveState, + }, }); } - onError(error: unknown): Promise { - return parseAPIResponseError(error).then((parsedError) => { - showMessage({ - message: msg( - str`Failed to update ${this.objectLabel}: ${pluckErrorDetail(parsedError)}`, - ), - level: MessageLevel.error, - }); - }); + public override formatSubmitLabel(): string { + return super.formatSubmitLabel( + this.instance?.isActive ? msg("Deactivate") : msg("Activate"), + ); } - override renderModalInner(): TemplateResult { - const objName = this.getFormattedObjectName(); - return html`

    -
    -

    ${msg(str`Update ${this.objectLabel}`)}

    -
    -
    -
    -
    -

    - ${msg(str`Are you sure you want to update ${this.objectLabel}${objName}?`)} -

    -
    -
    -
    - { - return this.confirm(); - }} - class="pf-m-warning" - > - ${msg("Update")}   - { - this.open = false; - }} - class="pf-m-secondary" - > - ${msg("Cancel")} - -
    `; + public override formatSubmittingLabel(): string { + return super.formatSubmittingLabel( + this.instance?.isActive ? msg("Deactivating...") : msg("Activating..."), + ); } + + protected override formatDisplayName(): string { + if (!this.instance) { + return msg("Unknown user"); + } + + return formatDisambiguatedUserDisplayName(this.instance, this.activeLanguageTag); + } + + protected override formatHeadline(): string { + return this.instance?.isActive + ? msg(str`Review ${this.verboseName} Deactivation`, { + id: "form.headline.deactivation", + }) + : msg(str`Review ${this.verboseName} Activation`, { id: "form.headline.activation" }); + } + + public override usedBy = (): Promise => { + if (!this.instance) { + return Promise.resolve([]); + } + + return this.coreAPI.coreUsersUsedByList({ id: this.instance.pk }); + }; } declare global { interface HTMLElementTagNameMap { - "ak-user-active-form": UserActiveForm; + "ak-user-activation-toggle-form": UserActivationToggleForm; } } + +export interface ToggleUserActivationButtonProps { + className?: string; +} + +export function ToggleUserActivationButton( + user: User, + { className = "" }: ToggleUserActivationButtonProps = {}, +): SlottedTemplateResult { + const label = user.isActive ? msg("Deactivate") : msg("Activate"); + const tooltip = user.isActive + ? msg("Lock the user out of this system") + : msg("Allow the user to log in and use this system"); + + return html``; +} diff --git a/web/src/admin/users/UserApplicationTable.ts b/web/src/admin/users/UserApplicationTable.ts index e51c0ee9c0..2ee499f0ab 100644 --- a/web/src/admin/users/UserApplicationTable.ts +++ b/web/src/admin/users/UserApplicationTable.ts @@ -54,7 +54,7 @@ export class UserApplicationTable extends Table { html`${item.providerObj?.verboseName || msg("-")}`, html`
    - ${msg("Update")} + ${msg("Save Changes")} ${msg("Update Application")} diff --git a/web/src/admin/users/UserBulkRevokeSessionsForm.ts b/web/src/admin/users/UserBulkRevokeSessionsForm.ts index b2cfbe4332..611a81b3e6 100644 --- a/web/src/admin/users/UserBulkRevokeSessionsForm.ts +++ b/web/src/admin/users/UserBulkRevokeSessionsForm.ts @@ -1,29 +1,26 @@ import "#elements/buttons/SpinnerButton/index"; import { DEFAULT_CONFIG } from "#common/api/config"; +import { createPaginatedResponse } from "#common/api/responses"; import { EVENT_REFRESH } from "#common/constants"; import { MessageLevel } from "#common/messages"; import { ModalButton } from "#elements/buttons/ModalButton"; import { showMessage } from "#elements/messages/MessageContainer"; -import { PaginatedResponse, Table, TableColumn } from "#elements/table/Table"; +import { StaticTable } from "#elements/table/StaticTable"; +import { PaginatedResponse, TableColumn } from "#elements/table/Table"; import { SlottedTemplateResult } from "#elements/types"; import { CoreApi, User } from "@goauthentik/api"; import { msg, str } from "@lit/localize"; -import { html, nothing, TemplateResult } from "lit"; +import { html, TemplateResult } from "lit"; import { customElement, property, state } from "lit/decorators.js"; type UserMetadata = { key: string; value: string }[]; @customElement("ak-user-bulk-revoke-sessions-table") -export class UserBulkRevokeSessionsTable extends Table { - paginated = false; - - @property({ attribute: false }) - objects: User[] = []; - +export class UserBulkRevokeSessionsTable extends StaticTable { @property({ attribute: false }) metadata!: (item: User) => UserMetadata; @@ -32,7 +29,7 @@ export class UserBulkRevokeSessionsTable extends Table { async apiEndpoint(): Promise> { // Fetch session counts for each user - for (const user of this.objects) { + for (const user of this.items ?? []) { try { const sessions = await new CoreApi(DEFAULT_CONFIG).coreAuthenticatedSessionsList({ userUsername: user.username, @@ -44,18 +41,7 @@ export class UserBulkRevokeSessionsTable extends Table { } this.requestUpdate(); - return Promise.resolve({ - pagination: { - count: this.objects.length, - current: 1, - totalPages: 1, - startIndex: 1, - endIndex: this.objects.length, - next: 0, - previous: 0, - }, - results: this.objects, - }); + return createPaginatedResponse(this.items); } protected override rowLabel(item: User): string | null { @@ -76,10 +62,6 @@ export class UserBulkRevokeSessionsTable extends Table { : html``}`, ]; } - - renderToolbarContainer(): SlottedTemplateResult { - return nothing; - } } @customElement("ak-user-bulk-revoke-sessions") @@ -167,7 +149,7 @@ export class UserBulkRevokeSessionsForm extends ModalButton {
    { return [ { key: msg("Username"), value: item.username }, @@ -177,24 +159,23 @@ export class UserBulkRevokeSessionsForm extends ModalButton { >
    -
    +
    `; + `; } } diff --git a/web/src/admin/users/UserDevicesTable.ts b/web/src/admin/users/UserDevicesTable.ts index 6678736ac3..3c576e554d 100644 --- a/web/src/admin/users/UserDevicesTable.ts +++ b/web/src/admin/users/UserDevicesTable.ts @@ -1,6 +1,7 @@ import "#elements/forms/DeleteBulkForm"; import { DEFAULT_CONFIG } from "#common/api/config"; +import { createPaginatedResponse } from "#common/api/responses"; import { deviceTypeName } from "#common/labels"; import { SentryIgnoredError } from "#common/sentry/index"; @@ -27,18 +28,7 @@ export class UserDeviceTable extends Table { user: this.userId, }) .then((res) => { - return { - pagination: { - count: res.length, - current: 1, - totalPages: 1, - startIndex: 1, - endIndex: res.length, - next: 0, - previous: 0, - }, - results: res, - }; + return createPaginatedResponse(res); }); } diff --git a/web/src/admin/users/UserForm.ts b/web/src/admin/users/UserForm.ts index c02f24ac5c..5b696c9dfa 100644 --- a/web/src/admin/users/UserForm.ts +++ b/web/src/admin/users/UserForm.ts @@ -1,4 +1,4 @@ -import "#admin/users/GroupSelectModal"; +import "#admin/users/ak-user-group-table"; import "#elements/CodeMirror"; import "#elements/forms/HorizontalFormElement"; import "#elements/forms/Radio"; @@ -10,13 +10,15 @@ import { DEFAULT_CONFIG } from "#common/api/config"; import { ModelForm } from "#elements/forms/ModelForm"; import { RadioOption } from "#elements/forms/Radio"; +import { SlottedTemplateResult } from "#elements/types"; import { CoreApi, Group, RbacApi, Role, User, UserTypeEnum } from "@goauthentik/api"; +import { match } from "ts-pattern"; import YAML from "yaml"; import { msg, str } from "@lit/localize"; -import { css, CSSResult, html, TemplateResult } from "lit"; +import { css, CSSResult, html } from "lit"; import { customElement, property } from "lit/decorators.js"; import { ifDefined } from "lit/directives/if-defined.js"; @@ -44,14 +46,23 @@ const UserTypeOptions: readonly RadioOption[] = [ ]; @customElement("ak-user-form") export class UserForm extends ModelForm { + #coreAPI = new CoreApi(DEFAULT_CONFIG); + #rbacAPI = new RbacApi(DEFAULT_CONFIG); + + public static override verboseName = msg("User"); + public static override verboseNamePlural = msg("Users"); + @property({ attribute: false }) public targetGroup: Group | null = null; @property({ attribute: false }) public targetRole: Role | null = null; - @property() - defaultPath: string = "users"; + @property({ type: String, attribute: "default-path" }) + public defaultPath: string = "users"; + + @property({ attribute: false }) + public userType: UserTypeEnum | null = null; static get defaultUserAttributes(): { [key: string]: unknown } { return {}; @@ -69,12 +80,37 @@ export class UserForm extends ModelForm { `, ]; - loadInstance(pk: number): Promise { - return new CoreApi(DEFAULT_CONFIG).coreUsersRetrieve({ + protected override loadInstance(pk: number): Promise { + return this.#coreAPI.coreUsersRetrieve({ id: pk, }); } + protected override assignInstance(instance: User): void { + super.assignInstance(instance); + + const { verboseName, verboseNamePlural } = match(instance.type) + .with(UserTypeEnum.Internal, () => ({ + verboseName: msg("Internal User"), + verboseNamePlural: msg("Internal Users"), + })) + .with(UserTypeEnum.External, () => ({ + verboseName: msg("External User"), + verboseNamePlural: msg("External Users"), + })) + .with(UserTypeEnum.ServiceAccount, () => ({ + verboseName: msg("Service Account"), + verboseNamePlural: msg("Service Accounts"), + })) + .otherwise(() => ({ + verboseName: msg("User"), + verboseNamePlural: msg("Users"), + })); + + this.verboseName = verboseName; + this.verboseNamePlural = verboseNamePlural; + } + getSuccessMessage(): string { if (this.instance) { return msg("User updated."); @@ -85,6 +121,7 @@ export class UserForm extends ModelForm { if (this.targetRole) { return msg(str`User created and added to role ${this.targetRole.name}`); } + return msg("User created."); } @@ -92,43 +129,58 @@ export class UserForm extends ModelForm { if (data.attributes === null) { data.attributes = UserForm.defaultUserAttributes; } + + if (this.userType) { + data.type = this.userType; + } + let user; + if (this.instance?.pk) { - user = await new CoreApi(DEFAULT_CONFIG).coreUsersPartialUpdate({ + user = await this.#coreAPI.coreUsersPartialUpdate({ id: this.instance.pk, patchedUserRequest: data, }); } else { data.groups = []; data.roles = []; - user = await new CoreApi(DEFAULT_CONFIG).coreUsersCreate({ + + user = await this.#coreAPI.coreUsersCreate({ userRequest: data, }); } + if (this.targetGroup) { - await new CoreApi(DEFAULT_CONFIG).coreGroupsAddUserCreate({ + await this.#coreAPI.coreGroupsAddUserCreate({ groupUuid: this.targetGroup.pk, userAccountRequest: { pk: user.pk, }, }); } + if (this.targetRole) { - await new RbacApi(DEFAULT_CONFIG).rbacRolesAddUserCreate({ + await this.#rbacAPI.rbacRolesAddUserCreate({ uuid: this.targetRole.pk, userAccountSerializerForRoleRequest: { pk: user.pk, }, }); } + return user; } - protected override renderForm(): TemplateResult { - return html` { help=${msg("The user's display name.")} > - []} - > - + ${this.userType + ? null + : html`[]} + >`} { + public static asInstanceInvoker = asInstanceInvoker; + public override submitLabel = msg("Impersonate"); + public override headline = msg("Impersonate User"); + @property({ type: Number }) public instancePk?: number; @state() - private requireReason = false; + protected requireReason = false; - #onOpen = async () => { + protected refreshReasonRequirement = async () => { try { const settings = await new AdminApi(DEFAULT_CONFIG).adminSettingsRetrieve(); this.requireReason = settings.impersonationRequireReason ?? false; @@ -30,19 +35,9 @@ export class UserImpersonateForm extends Form { } }; - constructor() { - super(); - this.#onOpen = this.#onOpen.bind(this); - } - - connectedCallback(): void { + public override connectedCallback(): void { super.connectedCallback(); - this.addEventListener("ak-modal-show", this.#onOpen); - } - - public disconnectedCallback(): void { - super.disconnectedCallback(); - this.removeEventListener("ak-modal-show", this.#onOpen); + this.refreshReasonRequirement(); } protected override formatAPISuccessMessage(): APIMessage | null { diff --git a/web/src/admin/users/UserListPage.ts b/web/src/admin/users/UserListPage.ts index 9518cabd18..b426d08107 100644 --- a/web/src/admin/users/UserListPage.ts +++ b/web/src/admin/users/UserListPage.ts @@ -1,6 +1,6 @@ import "#admin/reports/ExportButton"; -import "#admin/users/ServiceAccountForm"; import "#admin/users/UserActiveForm"; +import "#admin/users/ak-user-wizard"; import "#admin/users/UserBulkRevokeSessionsForm"; import "#admin/users/UserForm"; import "#admin/users/UserImpersonateForm"; @@ -15,80 +15,38 @@ import "#elements/forms/ModalForm"; import "@patternfly/elements/pf-tooltip/pf-tooltip.js"; import { DEFAULT_CONFIG } from "#common/api/config"; -import { PFSize } from "#common/enums"; import { userTypeToLabel } from "#common/labels"; import { DefaultUIConfig } from "#common/ui/config"; +import { formatUserDisplayName } from "#common/users"; +import { IconEditButton, modalInvoker } from "#elements/dialogs"; import { WithBrandConfig } from "#elements/mixins/branding"; import { CapabilitiesEnum, WithCapabilitiesConfig } from "#elements/mixins/capabilities"; +import { WithLicenseSummary } from "#elements/mixins/license"; import { WithSession } from "#elements/mixins/session"; import { getURLParam, updateURLParams } from "#elements/router/RouteMatch"; import { PaginatedResponse, TableColumn, Timestamp } from "#elements/table/Table"; import { TablePage } from "#elements/table/TablePage"; import { SlottedTemplateResult } from "#elements/types"; +import { AKUserWizard } from "#admin/users/ak-user-wizard"; +import { RecoveryButtons } from "#admin/users/recovery"; +import { ToggleUserActivationButton } from "#admin/users/UserActiveForm"; +import { UserForm } from "#admin/users/UserForm"; +import { UserImpersonateForm } from "#admin/users/UserImpersonateForm"; + import { CoreApi, CoreUsersExportCreateRequest, User, UserPath } from "@goauthentik/api"; import { msg, str } from "@lit/localize"; import { css, CSSResult, html, nothing, TemplateResult } from "lit"; +import { guard } from "lit-html/directives/guard.js"; import { customElement, property, state } from "lit/decorators.js"; -import { ifDefined } from "lit/directives/if-defined.js"; import PFAlert from "@patternfly/patternfly/components/Alert/alert.css"; +import PFAvatar from "@patternfly/patternfly/components/Avatar/avatar.css"; import PFCard from "@patternfly/patternfly/components/Card/card.css"; import PFDescriptionList from "@patternfly/patternfly/components/DescriptionList/description-list.css"; -export const renderRecoveryButtons = ({ - user, - brandHasRecoveryFlow, -}: { - user: User; - brandHasRecoveryFlow: boolean; -}) => - html` - ${msg("Update password")} - - ${msg(str`Update ${user.name || user.username}'s password`)} - - - - - ${brandHasRecoveryFlow - ? html` - - ${msg("Create link")} - ${msg("Create recovery link")} - - - - - ${user.email - ? html` - ${msg("Send link")} - ${msg("Send recovery link to user")} - - - - ` - : html`

    - ${msg("To email a recovery link, set an email address for this user.")} -

    `} - ` - : html`

    - ${msg("To create a recovery link, set a recovery flow for the current brand.")} -

    `}`; - const recoveryButtonStyles = css` #recovery-request-buttons { display: flex; @@ -96,20 +54,38 @@ const recoveryButtonStyles = css` flex-wrap: wrap; gap: 0.375rem; } - #recovery-request-buttons > *, - #update-password-request .pf-c-button { - margin: 0; - } `; @customElement("ak-user-list") -export class UserListPage extends WithBrandConfig( - WithCapabilitiesConfig(WithSession(TablePage)), +export class UserListPage extends WithLicenseSummary( + WithBrandConfig(WithCapabilitiesConfig(WithSession(TablePage))), ) { - expandable = true; - checkbox = true; - clearOnRefresh = true; - supportsQL = true; + static styles: CSSResult[] = [ + ...TablePage.styles, + PFDescriptionList, + PFCard, + PFAlert, + PFAvatar, + recoveryButtonStyles, + css` + .pf-c-avatar { + max-height: var(--pf-c-avatar--Height); + max-width: var(--pf-c-avatar--Width); + vertical-align: middle; + } + .pf-c-card.tree .pf-c-card__body { + padding-left: 0; + padding-right: 0; + } + `, + ]; + + #api = new CoreApi(DEFAULT_CONFIG); + + public override expandable = true; + public override checkbox = true; + public override clearOnRefresh = true; + public override supportsQL = true; protected override searchEnabled = true; public override searchPlaceholder = msg("Search by username, email, etc..."); @@ -119,45 +95,50 @@ export class UserListPage extends WithBrandConfig( public pageDescription = ""; public pageIcon = "pf-icon pf-icon-user"; - @property() - order = "last_login"; + @property({ type: String }) + public order = "-last_login"; - @property() - activePath; + @property({ type: String }) + public activePath: string; @state() - hideDeactivated = getURLParam("hideDeactivated", false); + protected hideDeactivated = getURLParam("hideDeactivated", false); @state() - userPaths?: UserPath; - - static styles: CSSResult[] = [ - ...TablePage.styles, - PFDescriptionList, - PFCard, - PFAlert, - recoveryButtonStyles, - ]; + protected userPaths: UserPath | null = null; constructor() { super(); + const defaultPath = DefaultUIConfig.defaults.userPath; + this.activePath = getURLParam("path", defaultPath); + if (this.uiConfig.defaults.userPath !== defaultPath) { this.activePath = this.uiConfig.defaults.userPath; } } + protected canImpersonate = false; + + public override connectedCallback(): void { + super.connectedCallback(); + + this.canImpersonate = this.can(CapabilitiesEnum.CanImpersonate); + } + async apiEndpoint(): Promise> { - const users = await new CoreApi(DEFAULT_CONFIG).coreUsersList({ + const users = await this.#api.coreUsersList({ ...(await this.defaultEndpointConfig()), pathStartswith: this.activePath, isActive: this.hideDeactivated ? true : undefined, includeGroups: false, }); - this.userPaths = await new CoreApi(DEFAULT_CONFIG).coreUsersPathsRetrieve({ + + this.userPaths = await this.#api.coreUsersPathsRetrieve({ search: this.search, }); + return users; } @@ -170,6 +151,7 @@ export class UserListPage extends WithBrandConfig( } protected columns: TableColumn[] = [ + ["", null, msg("Avatar")], [msg("Name"), "username"], [msg("Active"), "is_active"], [msg("Last login"), "last_login"], @@ -177,7 +159,7 @@ export class UserListPage extends WithBrandConfig( [msg("Actions"), null, msg("Row Actions")], ]; - renderToolbarSelected(): TemplateResult { + protected override renderToolbarSelected(): TemplateResult { const disabled = this.selectedElements.length < 1; const { currentUser, originalUser } = this; @@ -200,12 +182,12 @@ export class UserListPage extends WithBrandConfig( ]; }} .usedBy=${(item: User) => { - return new CoreApi(DEFAULT_CONFIG).coreUsersUsedByList({ + return this.#api.coreUsersUsedByList({ id: item.pk, }); }} .delete=${(item: User) => { - return new CoreApi(DEFAULT_CONFIG).coreUsersDestroy({ + return this.#api.coreUsersDestroy({ id: item.pk, }); }} @@ -218,7 +200,7 @@ export class UserListPage extends WithBrandConfig(

    ${msg( - str`Warning: You're about to delete the user you're logged in as (${shouldShowWarning.username}). Proceed at your own risk.`, + str`Warning: You are about to delete user ${shouldShowWarning.username}, but you are currently logged in as this user. Proceed at your own risk.`, )}

    @@ -230,7 +212,7 @@ export class UserListPage extends WithBrandConfig( `; } - renderToolbarAfter(): TemplateResult { + protected override renderToolbarAfter(): TemplateResult { return html`
    @@ -267,51 +249,47 @@ export class UserListPage extends WithBrandConfig(
    `; } - row(item: User): SlottedTemplateResult[] { + protected row(item: User) { const { currentUser } = this; - const impersonationVisible = - this.can(CapabilitiesEnum.CanImpersonate) && currentUser && item.pk !== currentUser.pk; + const showImpersonation = this.canImpersonate && currentUser && item.pk !== currentUser.pk; + + const displayName = formatUserDisplayName(item); return [ - html` -
    ${item.username}
    - ${item.name ? item.name : html`<${msg("No name set")}>`} + html`${msg(str`Avatar`, + html`
    +
    ${item.username}
    + ${displayName ? item.name : html`<${msg("No name set")}>`}
    `, html``, Timestamp(item.lastLogin), html`${userTypeToLabel(item.type)}`, - html`
    - - ${msg("Update")} - ${msg("Update User")} - - - - ${impersonationVisible - ? html` - - ${msg("Impersonate")} - ${msg("Impersonate")} ${item.username} - - - - ` - : nothing} + html`
    + ${IconEditButton(UserForm, item.pk, displayName)} + ${showImpersonation + ? html`` + : null}
    `, ]; } @@ -337,22 +315,7 @@ export class UserListPage extends WithBrandConfig(
    - { - return new CoreApi(DEFAULT_CONFIG).coreUsersPartialUpdate({ - id: item.pk, - patchedUserRequest: { - isActive: !item.isActive, - }, - }); - }} - > - - + ${ToggleUserActivationButton(item)}
    @@ -362,7 +325,7 @@ export class UserListPage extends WithBrandConfig(
    - ${renderRecoveryButtons({ + ${RecoveryButtons({ user: item, brandHasRecoveryFlow: Boolean(this.brand.flowRecovery), })} @@ -372,40 +335,44 @@ export class UserListPage extends WithBrandConfig( `; } - renderObjectCreate(): TemplateResult { - return html` - - ${msg("Create User")} - ${msg("New User")} - - - - - ${msg("Create Service Account")} - ${msg("New Service Account")} - - - - { - return new CoreApi(DEFAULT_CONFIG).coreUsersExportCreate(params); - }} - .exportParams=${async () => { - return { - ...(await this.defaultEndpointConfig()), - pathStartswith: this.activePath, - isActive: this.hideDeactivated ? true : undefined, - }; - }} - > - `; + protected buildExportParams = async () => { + return { + ...(await this.defaultEndpointConfig()), + pathStartswith: this.activePath, + isActive: this.hideDeactivated ? true : undefined, + }; + }; + + protected createExport = (params: CoreUsersExportCreateRequest) => { + return this.#api.coreUsersExportCreate(params); + }; + + protected renderObjectCreate(): SlottedTemplateResult { + const { activePath } = this; + + return guard([activePath], () => { + return [ + html` `, + html` `, + ]; + }); } protected renderSidebarBefore(): TemplateResult { return html`
    `; } } diff --git a/web/src/components/ak-page-navbar.css b/web/src/components/ak-page-navbar.css index 8d90e69ba0..1f92925c44 100644 --- a/web/src/components/ak-page-navbar.css +++ b/web/src/components/ak-page-navbar.css @@ -48,7 +48,7 @@ width: 100%; } - @media (width < 1200px) { + @media (width <= 1210px) { column-gap: calc(var(--pf-global--spacer--md) / 2); } } @@ -67,9 +67,6 @@ padding-block: var(--pf-global--spacer--sm); } - &.block-sibling { - } - @media (width >= 425px) { &.block-sibling { align-self: end; @@ -80,7 +77,7 @@ .accent-icon { height: 1.2em; - width: 1em; + width: 1.2em; @media (width <= 768px) { display: none; @@ -120,7 +117,7 @@ @media (width >= 769px) { align-content: center; padding-block: var(--pf-global--spacer--md); - padding-inline-end: var(--pf-global--spacer--xl); + padding-inline-end: var(--pf-global--spacer--lg); } } } @@ -140,7 +137,7 @@ display: none; } - @media (width < 1200px) { + @media (width <= 1210px) { display: none; } } @@ -167,7 +164,7 @@ grid-area: toggle; } -@media (width >= 1200px) { +@media (width > 1210px) { slot[name="toggle"] { display: none; } diff --git a/web/src/components/ak-page-navbar.ts b/web/src/components/ak-page-navbar.ts index ea99024c23..32d665e2f3 100644 --- a/web/src/components/ak-page-navbar.ts +++ b/web/src/components/ak-page-navbar.ts @@ -7,20 +7,19 @@ import { AKElement } from "#elements/Base"; import { WithBrandConfig } from "#elements/mixins/branding"; import { WithSession } from "#elements/mixins/session"; import { isAdminRoute } from "#elements/router/utils"; +import { SlottedTemplateResult } from "#elements/types"; import { ThemedImage } from "#elements/utils/images"; import Styles from "#components/ak-page-navbar.css"; import { msg } from "@lit/localize"; import { CSSResult, html, nothing, TemplateResult } from "lit"; -import { customElement, state } from "lit/decorators.js"; +import { customElement, property } from "lit/decorators.js"; import { guard } from "lit/directives/guard.js"; -import PFAvatar from "@patternfly/patternfly/components/Avatar/avatar.css"; import PFButton from "@patternfly/patternfly/components/Button/button.css"; import PFContent from "@patternfly/patternfly/components/Content/content.css"; import PFDrawer from "@patternfly/patternfly/components/Drawer/drawer.css"; -import PFDropdown from "@patternfly/patternfly/components/Dropdown/dropdown.css"; import PFNotificationBadge from "@patternfly/patternfly/components/NotificationBadge/notification-badge.css"; import PFPage from "@patternfly/patternfly/components/Page/page.css"; @@ -40,7 +39,7 @@ export function setPageDetails(header: PageHeaderInit) { export interface PageHeaderInit { header?: string | null; - description?: string | null; + description?: SlottedTemplateResult; icon?: string | null; iconImage?: boolean; } @@ -68,8 +67,6 @@ export class AKPageNavbar PFDrawer, PFNotificationBadge, PFContent, - PFAvatar, - PFDropdown, Styles, ]; @@ -77,20 +74,20 @@ export class AKPageNavbar //#region Properties - @state() - icon?: string | null = null; + @property({ attribute: false }) + public icon?: string | null = null; - @state() - iconImage = false; + @property({ attribute: false }) + public iconImage = false; - @state() - header?: string | null = null; + @property({ attribute: false }) + public header?: string | null = null; - @state() - description?: string | null = null; + @property({ attribute: false }) + public description?: SlottedTemplateResult = null; - @state() - hasIcon = true; + @property({ attribute: false }) + public hasIcon = true; //#endregion @@ -221,6 +218,7 @@ export class AKPageNavbar > ${msg("User interface")} +
    diff --git a/web/src/components/ak-radio-input.ts b/web/src/components/ak-radio-input.ts index 0186c4a719..4adf736e87 100644 --- a/web/src/components/ak-radio-input.ts +++ b/web/src/components/ak-radio-input.ts @@ -5,11 +5,13 @@ import { HorizontalLightComponent } from "./HorizontalLightComponent.js"; import { RadioChangeEventDetail, RadioOption } from "#elements/forms/Radio"; import { SlottedTemplateResult } from "#elements/types"; +import type { Jsonifiable } from "type-fest"; + import { html, nothing } from "lit"; import { customElement, property } from "lit/decorators.js"; @customElement("ak-radio-input") -export class AkRadioInput extends HorizontalLightComponent { +export class AkRadioInput extends HorizontalLightComponent { public override role = "radiogroup"; @property({ type: Object }) @@ -28,21 +30,27 @@ export class AkRadioInput extends HorizontalLightComponent { return nothing; } - renderControl() { + protected override renderControl(): SlottedTemplateResult { const helpText = this.help?.trim(); - return html` + ${helpText} +

    ` + : null} - ${helpText ? html`

    ${helpText}

    ` : nothing}`; + aria-describedby=${this.help ? this.helpID : nothing} + part="radio" + > +
    `; } } declare global { interface HTMLElementTagNameMap { - "ak-radio-input": AkRadioInput; + "ak-radio-input": AkRadioInput; } } diff --git a/web/src/components/ak-search-ql/index.ts b/web/src/components/ak-search-ql/index.ts index 64c9a610e6..98b9e56caf 100644 --- a/web/src/components/ak-search-ql/index.ts +++ b/web/src/components/ak-search-ql/index.ts @@ -1,11 +1,12 @@ import "#elements/buttons/Dropdown"; +import { torusIndex } from "#common/collections"; import { StripHTMLTrustPolicy } from "#common/purify"; -import { rootInterface } from "#common/theme"; import { FormAssociated, FormAssociatedElement } from "#elements/forms/form-associated-element"; import { PaginatedResponse } from "#elements/table/Table"; import { ifPresent } from "#elements/utils/attributes"; +import { resolveInterface } from "#elements/utils/render-roots"; import Styles from "#components/ak-search-ql/styles.css"; @@ -14,7 +15,6 @@ import DjangoQL, { Introspections } from "@mrmarble/djangoql-completion"; import { msg } from "@lit/localize"; import { CSSResult, html, LitElement, nothing, PropertyValues, TemplateResult } from "lit"; import { customElement, property } from "lit/decorators.js"; -import { ifDefined } from "lit/directives/if-defined.js"; import { createRef, ref, Ref } from "lit/directives/ref.js"; import PFFormControl from "@patternfly/patternfly/components/FormControl/form-control.css"; @@ -33,20 +33,6 @@ export class QL extends DjangoQL { } } -/** - * Given an array or length, return logical index of the element at the given delta. - * This is effectively a modulo loop, allowing for positive and negative deltas. - */ -function torusIndex(lengthLike: number | ArrayLike, delta: number): number { - const length = typeof lengthLike === "number" ? lengthLike : lengthLike.length; - - if (delta < 0) { - return (length + delta) % length; - } - - return ((delta % length) + length) % length; -} - @customElement("ak-search-ql") export class QLSearch extends FormAssociatedElement implements FormAssociated { static shadowRootOptions = { ...LitElement.shadowRootOptions, delegatesFocus: true }; @@ -127,9 +113,14 @@ export class QLSearch extends FormAssociatedElement implements FormAssoc #ctx: OffscreenCanvasRenderingContext2D | null = null; #letterWidth = -1; #scrollContainer: HTMLElement | null = null; + #autocompleteCache: Introspections | null = null; public set apiResponse(value: PaginatedResponse | undefined) { - if (!value?.autocomplete || !this.#ql) { + if (!value?.autocomplete) { + return; + } + if (!this.#ql) { + this.#autocompleteCache = value.autocomplete as unknown as Introspections; return; } @@ -143,8 +134,7 @@ export class QLSearch extends FormAssociatedElement implements FormAssoc public override connectedCallback() { super.connectedCallback(); - this.#scrollContainer = - rootInterface().renderRoot.querySelector("#main-content"); + this.#scrollContainer = resolveInterface().renderRoot.querySelector("#main-content"); this.#scrollContainer?.addEventListener("scroll", this.#updateDropdownPosition, { passive: true, @@ -191,13 +181,16 @@ export class QLSearch extends FormAssociatedElement implements FormAssoc this.#ql = new QL({ completionEnabled: true, - introspections: { + introspections: this.#autocompleteCache || { current_model: "", models: {}, }, selector: textarea, autoResize: false, }); + if (this.#autocompleteCache) { + this.#autocompleteCache = null; + } const canvas = new OffscreenCanvas(300, 150); this.#ctx = canvas.getContext("2d"); @@ -492,9 +485,8 @@ export class QLSearch extends FormAssociatedElement implements FormAssoc @focus=${this.#focusListener} @blur=${this.#blurListener} @keydown=${this.#keydownListener} - > -${ifDefined(this.#value)} + .value=${this.#value} + >
    ${this.renderMenu()} diff --git a/web/src/components/ak-slug-input.ts b/web/src/components/ak-slug-input.ts index e26b01b8dd..6024be1c21 100644 --- a/web/src/components/ak-slug-input.ts +++ b/web/src/components/ak-slug-input.ts @@ -1,9 +1,11 @@ import { HorizontalLightComponent } from "./HorizontalLightComponent.js"; import { bound } from "#elements/decorators/bound"; +import { ifPresent } from "#elements/utils/attributes"; import { kebabCase } from "change-case"; +import { msg } from "@lit/localize"; import { html } from "lit"; import { customElement, property, query } from "lit/decorators.js"; import { ifDefined } from "lit/directives/if-defined.js"; @@ -50,6 +52,9 @@ export class AkSlugInput extends HorizontalLightComponent { @query("input") private input!: HTMLInputElement; + @property({ type: String }) + public placeholder: string | null = msg("e.g. my-slug"); + #origin?: HTMLInputElement | null; #touched: boolean = false; @@ -128,9 +133,12 @@ export class AkSlugInput extends HorizontalLightComponent { id=${ifDefined(this.fieldID)} @input=${(ev: Event) => this.handleTouch(ev)} type="text" + spellcheck="false" + autocomplete="off" value=${ifDefined(this.value)} - class="pf-c-form-control" + class="pf-c-form-control pf-m-monospace" ?required=${this.required} + placeholder=${ifPresent(this.placeholder)} />`; } diff --git a/web/src/components/ak-status-label.ts b/web/src/components/ak-status-label.ts index a6ec3c142c..75006db700 100644 --- a/web/src/components/ak-status-label.ts +++ b/web/src/components/ak-status-label.ts @@ -1,9 +1,12 @@ import { AKElement } from "#elements/Base"; +import { SlottedTemplateResult } from "#elements/types"; import Styles from "#components/ak-status-label.css"; import { P4Disposition } from "#styles/patternfly/constants"; +import { match, P } from "ts-pattern"; + import { msg } from "@lit/localize"; import { html } from "lit"; import { customElement, property } from "lit/decorators.js"; @@ -42,31 +45,36 @@ const statusToDetails = new Map([ export class AkStatusLabel extends AKElement { static styles = [PFLabel, Styles]; - @property({ type: Boolean }) - good = false; + @property({ type: Boolean, reflect: true }) + public good: boolean = false; @property({ type: String, attribute: "good-label" }) - goodLabel = msg("Yes"); + public goodLabel = msg("Yes"); @property({ type: String, attribute: "bad-label" }) - badLabel = msg("No"); + public badLabel = msg("No"); + + @property({ type: String, attribute: "neutral-label" }) + public neutralLabel = msg("-"); @property({ type: Boolean }) - compact = false; + public compact = false; @property({ type: String }) - type: P4Disposition = P4Disposition.Error; + public type: P4Disposition = P4Disposition.Error; - render() { + protected override render(): SlottedTemplateResult { const details = statusToDetails.get(this.type); if (!details) { throw new TypeError(`Bad status type [${this.type}] passed to ak-status-label`); } - const [label, color, icon] = this.good - ? [this.goodLabel, "pf-m-green", "fa-check"] - : [this.badLabel, ...details]; + const [label, color, icon] = match(this.good) + .with(P.nullish, () => [this.neutralLabel, "pf-m-gray", "fa-question"] as const) + .with(true, () => [this.goodLabel, "pf-m-green", "fa-check"] as const) + .with(false, () => [this.badLabel, ...details] as const) + .exhaustive(); const classes = { "pf-c-label": true, diff --git a/web/src/components/ak-switch-input.ts b/web/src/components/ak-switch-input.ts index 388ff52b0e..cd39146089 100644 --- a/web/src/components/ak-switch-input.ts +++ b/web/src/components/ak-switch-input.ts @@ -60,18 +60,14 @@ export class AkSwitchInput extends AKElement { } render() { - const doCheck = this.checked ? this.checked : undefined; - - return html` -
    - + return html`